From c3731591aff0e65aeb375a2b0f756bb87a03ccd8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 10:51:39 +0200 Subject: [PATCH 0001/2595] Initial commit --- .gitattributes | 2 + .gitignore | 214 ++ LICENSE | 674 ++++++ README.md | 32 + cfg/coco.data | 6 + cfg/yolov3.cfg | 788 +++++++ data/coco.names | 80 + data/coco_training_loss.png | Bin 0 -> 361701 bytes data/get_coco_dataset.sh | 40 + data/zidane_result.jpg | Bin 0 -> 159669 bytes detect.py | 151 ++ models.py | 336 +++ requirements.txt | 8 + results.txt | 3928 +++++++++++++++++++++++++++++++++++ test.py | 130 ++ train.py | 192 ++ utils/datasets.py | 284 +++ utils/gcp.sh | 12 + utils/parse_config.py | 36 + utils/utils.py | 372 ++++ 20 files changed, 7285 insertions(+) create mode 100644 .gitattributes create mode 100755 .gitignore create mode 100644 LICENSE create mode 100755 README.md create mode 100644 cfg/coco.data create mode 100755 cfg/yolov3.cfg create mode 100755 data/coco.names create mode 100644 data/coco_training_loss.png create mode 100755 data/get_coco_dataset.sh create mode 100644 data/zidane_result.jpg create mode 100755 detect.py create mode 100755 models.py create mode 100755 requirements.txt create mode 100644 results.txt create mode 100644 test.py create mode 100644 train.py create mode 100755 utils/datasets.py create mode 100644 utils/gcp.sh create mode 100644 utils/parse_config.py create mode 100755 utils/utils.py diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..dfe07704 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/.gitignore b/.gitignore new file mode 100755 index 00000000..774b1577 --- /dev/null +++ b/.gitignore @@ -0,0 +1,214 @@ +# Repo-specific GitIgnore ---------------------------------------------------------------------------------------------- +*.jpg +*.png +*.bmp +*.tif +*.heic +*.JPG +*.PNG +*.TIF +*.HEIC +*.weights +*.pt +*.tif.txt +!zidane_result.jpg +!coco_training_loss.png +!images/* + +checkpoints +temp-plot.html + +# MATLAB GitIgnore ----------------------------------------------------------------------------------------------------- +*.m~ +*.mat +!targets*.mat + +# GitHub Python GitIgnore ---------------------------------------------------------------------------------------------- +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# dotenv +.env + +# virtualenv +.venv +venv/ +ENV/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ + + +# https://github.com/github/gitignore/blob/master/Global/macOS.gitignore ----------------------------------------------- + +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon +Icon? + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + + +# https://github.com/github/gitignore/blob/master/Global/JetBrains.gitignore +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff: +.idea/* +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/dictionaries +.html # Bokeh Plots +.pg # TensorFlow Frozen Graphs +.avi # videos + +# Sensitive or high-churn files: +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml + +# Gradle: +.idea/**/gradle.xml +.idea/**/libraries + +# CMake +cmake-build-debug/ +cmake-build-release/ + +# Mongo Explorer plugin: +.idea/**/mongoSettings.xml + +## File-based project format: +*.iws + +## Plugin-specific files: + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..9e419e04 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ +GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100755 index 00000000..0c0f689f --- /dev/null +++ b/README.md @@ -0,0 +1,32 @@ + + +# Introduction + +This directory contains software developed by Ultralytics LLC. For more information on Ultralytics projects please visit: +http://www.ultralytics.com   + +# Description + +The https://github.com/ultralytics/yolov3 repo contains code to train YOLOv3 on the COCO dataset: https://cocodataset.org/#home. Credit to P.J. Reddie for YOLO (https://pjreddie.com/darknet/yolo/) and to Erik Lindernoren for the pytorch implementation this repo is based on (https://github.com/eriklindernoren/PyTorch-YOLOv3). + +# Requirements + +Python 3.6 or later with the following `pip3 install -U -r requirements.txt` packages: + +- `numpy` +- `torch` +- `opencv-python` + +# Running + +Run `train.py` to begin training. Each epoch trains on 120,000 images from the train and validate sets, and validates on 5000 images in the validation set. An Nvidia GTX 1080 Ti will run about 16 epochs per day. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here. +![Alt](https://github.com/ultralytics/yolov3/blob/master/data/xview_training_loss.png "training loss") + +Checkpoints will be saved in `/checkpoints` directory. Run `detect.py` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder, shown here. +![Alt](https://github.com/ultralytics/yolov3/blob/master/data/zidane_result.jpg "example") + +Run `test.py` to test the latest checkpoint on the 5000 validation images. Joseph Redmon's official YOLOv3 weights produce a mAP of .581 using this method, compared to .579 in his paper. + +# Contact + +For questions or comments please contact Glenn Jocher at glenn.jocher@ultralytics.com or visit us at http://www.ultralytics.com/contact \ No newline at end of file diff --git a/cfg/coco.data b/cfg/coco.data new file mode 100644 index 00000000..785b5e25 --- /dev/null +++ b/cfg/coco.data @@ -0,0 +1,6 @@ +classes=80 +train=/Users/glennjocher/Downloads/DATA/coco/trainvalno5k.txt +valid=/Users/glennjocher/Downloads/DATA/coco/5k.txt +names=data/coco.names +backup=backup/ +eval=coco diff --git a/cfg/yolov3.cfg b/cfg/yolov3.cfg new file mode 100755 index 00000000..946e0154 --- /dev/null +++ b/cfg/yolov3.cfg @@ -0,0 +1,788 @@ +[net] +# Testing +#batch=1 +#subdivisions=1 +# Training +batch=16 +subdivisions=1 +width=416 +height=416 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +###################### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 6,7,8 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 61 + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 3,4,5 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 36 + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 0,1,2 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 diff --git a/data/coco.names b/data/coco.names new file mode 100755 index 00000000..ca76c80b --- /dev/null +++ b/data/coco.names @@ -0,0 +1,80 @@ +person +bicycle +car +motorbike +aeroplane +bus +train +truck +boat +traffic light +fire hydrant +stop sign +parking meter +bench +bird +cat +dog +horse +sheep +cow +elephant +bear +zebra +giraffe +backpack +umbrella +handbag +tie +suitcase +frisbee +skis +snowboard +sports ball +kite +baseball bat +baseball glove +skateboard +surfboard +tennis racket +bottle +wine glass +cup +fork +knife +spoon +bowl +banana +apple +sandwich +orange +broccoli +carrot +hot dog +pizza +donut +cake +chair +sofa +pottedplant +bed +diningtable +toilet +tvmonitor +laptop +mouse +remote +keyboard +cell phone +microwave +oven +toaster +sink +refrigerator +book +clock +vase +scissors +teddy bear +hair drier +toothbrush diff --git a/data/coco_training_loss.png b/data/coco_training_loss.png new file mode 100644 index 0000000000000000000000000000000000000000..35597edbd46cd664d3da9751308212e5e154db3d GIT binary patch literal 361701 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 z
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

At2B+J-~ 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

Cg@>PIllck{eeDl>IL<$B`C8|xc>A4i^ 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 NiOD~LKhS&m{{XR)+ZX@< literal 0 HcmV?d00001 diff --git a/data/get_coco_dataset.sh b/data/get_coco_dataset.sh new file mode 100755 index 00000000..8a892633 --- /dev/null +++ b/data/get_coco_dataset.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +# CREDIT: https://github.com/pjreddie/darknet/tree/master/scripts/get_coco_dataset.sh + +# Clone COCO API +git clone https://github.com/pdollar/coco +cd coco + +mkdir images +cd images + +# Download Images +wget -c https://pjreddie.com/media/files/train2014.zip +wget -c https://pjreddie.com/media/files/val2014.zip + +# Unzip +unzip -q train2014.zip +unzip -q val2014.zip + +cd .. + +# Download COCO Metadata +wget -c https://pjreddie.com/media/files/instances_train-val2014.zip +wget -c https://pjreddie.com/media/files/coco/5k.part +wget -c https://pjreddie.com/media/files/coco/trainvalno5k.part +wget -c https://pjreddie.com/media/files/coco/labels.tgz +tar xzf labels.tgz +unzip -q instances_train-val2014.zip + +# Set Up Image Lists +#paste <(awk "{print \"$PWD\"}" <5k.part) 5k.part | tr -d '\t' > 5k.txt +#paste <(awk "{print \"$PWD\"}" trainvalno5k.txt + +sudo shutdown + +# get xview training data +# wget -O train_images.tgz 'https://d307kc0mrhucc3.cloudfront.net/train_images.tgz?Expires=1530124049&Signature=JrQoxipmsETvb7eQHCfDFUO-QEHJGAayUv0i-ParmS-1hn7hl9D~bzGuHWG82imEbZSLUARTtm0wOJ7EmYMGmG5PtLKz9H5qi6DjoSUuFc13NQ-~6yUhE~NfPaTnehUdUMCa3On2wl1h1ZtRG~0Jq1P-AJbpe~oQxbyBrs1KccaMa7FK4F4oMM6sMnNgoXx8-3O77kYw~uOpTMFmTaQdHln6EztW0Lx17i57kK3ogbSUpXgaUTqjHCRA1dWIl7PY1ngQnLslkLhZqmKcaL-BvWf0ZGjHxCDQBpnUjIlvMu5NasegkwD9Jjc0ClgTxsttSkmbapVqaVC8peR0pO619Q__&Key-Pair-Id=APKAIKGDJB5C3XUL2DXQ' +# tar -xvzf train_images.tgz +# sudo rm -rf train_images/._* +# lastly convert each .tif to a .bmp for faster loading in cv2 diff --git a/data/zidane_result.jpg b/data/zidane_result.jpg new file mode 100644 index 0000000000000000000000000000000000000000..966bd350961772ae2279e540499f6ce2b7a9e88b GIT binary patch literal 159669 zcmeFZbyQnh*Z;fg-r`o=J$Q=-FCMH=G{HRy(&9;wB1IA?S|m_MN}yiaCQzq>)XphT zta5q^MQf+F@7(9S&-4E781K0Ej&Xng{hnm-$zrqiT6?d(*8I*j*9z$G=oG@|WbbH? ztXhR24)8|MX=KhWEhZ8{TwM`$1VJ_;>sCo1>mUVL5T{i;|DE<+rHibFV_V?If0f?f zX(32Q7RDfJ;SS$%CC1kuyc-EE??+eFVuR#(SF-w4tO zvW~Up-=$q+t^Id;xMdZx1}h0g5u|1HziL_YXUm#@rB~}?)%{PU{!hoy>CFPsDJfJF z9FCl<9TH9njnEFGB;e9Qs5o719UNkYPosu}#YLpZhDJoikj>>6uJYt%W5UhleGOf8 zT&Xq@(J>AgNfBNdZr))Tabd>c@^}kbvow>m1ZqM=N{DP)LOeOyB+Xp@@4`(WjUC3x z%l@4uCC*%apR2p94J9c;)==9(TSp$wP704S@wB!7uXEuybNTUU~ z*Vxz?r=y3{)6;?+TFL3;l#nznaRlvRH{Bp_Kh8=JHVU-}&|MOblzumhCGB_!z;JhK|2PEwu?*W{nzn#?G){d@gF^?8O z@RF>+AyjHSR(Wz5ImvU6 zwd_7Wf7uOF;7w!xHM~N?lBrhi?k-sRU!Pd|zh9r9|C9HL7FO2VKbOx~ZH_d5c5bwF zW<$WU|IYV6rZ$Fy9|?bX4L_M-)T9(}ze$i*NKK()>3m2FS?O8pLAnk>Qe48KL&6bc zKbBuJB!rrdAP4v$y&dv^zyD7jNbCM9{a@un7DUbpt}jB?Hzqs+T;h02lB`#BNKyo+WI?ugOlD#k!9jB#wN&t>vqJd}&E{v*b=NQ{@qG2Uy(TIYof z#`o>m%nn6YJ=*~-fFOJZd{nskez|C%t!@Z(py!rQ*LH?GAJCErPi8wm*$?h|K06Qi zwDdf%uK~{9*3+Q_Jkgs8Jau0g$Q{MfOS7|Z)Y*?2<9G=iH~KIJ zXKhE(&GEPiI2F-FHhf1Ao!in;K#I< zrB*6HInQ!1TWqIwPQ9w!r2Q5Vm5nYJFsg6`jT1u^f>V2 ziUi~|Ls8M~1h~(w>)hc?1o6ld+6r{lXaKIoYeV;M^9TdtL*eg)2g#6^K*%Q|h}&>g zE70>e(DnKGIAF-FZ9w5C)4+|dp&eX(KUHHnQB;aZyn`UZg(R>fVA)=5SO%U^{sg3& zc>@&)Gz1~t326ZaC(9uSaW)@nCni=wX~7>)Kzt#1{{BVRYM`jmQT7Q0(cjzx za>xLC-w;3PsIUI86v*JjD3{b@_Hfxr%@GKwSuO&PV|I$+_*jp%Cpvjjq(HrW$puRFONZxo=Yvi1NWUBL6Gj1TV!D8vk$@dK<%ePK%KYn9QrT*#Rq4-MN!A&L+24>kMb~-Xl*-Of*`wlM&QmBZ68B_ zLXamja%X{8Y^Q)l!6raLia&5$(QgRy_*SD2Fo^@t<*|4_^!brfPhd2SG`)#}BcflR zjHk*d>MlJc2;=AF6tse4{?v0A|4!3wU~#f${={l|&0ZS<%rJ#^c8=|PsjYX)>`}~p=jPQXa zXe&qNG6AeZ;R=)}^X}6ItgcTdanNHwWqCl!pIqXMfkHVjMm|2RfoJ%!yd9e2qa{}W zL00C5A-z)ZN*Q!3?_(Am=R?t;_gGXfa2>{di5NY;VzhsNQTHT9Od%xUnxTEIF-FW| zq^V=9+Kut_cZ}C&Fb@BHeC8XL{uGZ9MYrc6_MidR;dv`80d#F?k2`e9L7UUJJ21!j%>x) zmWlE5Jl|HnE%$o)wD>e%X!6DL#l1hrFUZf2q5>otxHrK-nP&b-K@XW0nPEX28MgM6 zpoUDn#V)~3GG(sk1SVwCgRBI)WQg%k1hQnTvO)wLW#mfU35d(AYKZ2am7Zyz=D#6* zr`MOiO`3aO4)|=ejQ_rj#M~AEf0=J6D%^pCks?}xOA&Y}@(5QYTPxCuE5=QV&~a(_ zFcEtkk+52170xoaL-+ztg6tz4rahniLwLJ3x2#U6SG%l9T_{RBptD;@Ok3j`PH;?H z_`y%X%i3z=(SldC(?3iL>EfzURJnMH;&(Tp8Ka8)j^bTO?&i!7+ki=xsNx?L3_m&{kVN+Lw_Cxfd+ zo1MueTh(03xvad-JQo1q{Bnz#}((@#FJiqiM;!nb|bRuz> z#FCaJHY6faw}`1GyOv&uvgFVHP>w=B?$vf+Vw~mzVv=5e>(cLK& zT)*;YCy5k-qN=YcH^3TqP`pH5DaTN^O7i3=)JpZsa(k$$<_>a#R4=y~+2>Rh5+Zwu zvO;|-yNhx$CrRcRCAs1c88SuvsIl}<^4QsU=>l@`jf2us=8s zsc|ZdKkZEV6&QWSba&AfO*8s;$vlNR#ye#Ng=EH{Nr8ebqtjJbVJjmy_^JE@hC5YC zKAjbMs_6=?Brh#lG?Z%T%SvA_!>l&Gl^pww`vUWMO zC~B~q*@GZPZ<(%Q&U$#}dr7L=YSyd*Q7OGb#fYusS+T*1t|Y^n4BDVL$?7JLE7r2o z7&eLyEaQqGg*oQOqZSH<%+qI=6l9scH?!q?nOaYk<)fMIZw%$}%!MyP@_CgyC~6|W z29L+=4BJs`cDEmUR5D3tZOdKxaFwuDx~{DXzBOdeI+bm$X8ug&C#`%5+m$O@#%RmR zjx8-Liqf~1pw?EUx)!0c4NCg#J2#^gU$7gWS}K;Zd2bRG16m@!L@1s-dKpD6S94mx z<`;16#Ir39a_&o(8lm0CahlB#;o zdZvKNWcQsGwhFVG(ep+{r`zzxN9D)eo1d;yF6vf)}o4$i`db(x(?J8sHyc;5Bht(VUKYQ&}r}hs!%JzYg0(EwFFC`>EQ7zT-F4RWJ3WJc(6J?JIjdu4>z_`T0*(+RY>sb&(yq0G`=_ zp>T19|94?oAZ2ad)qw;yph{x3iziV1QKHwIhDfZYiTu9@O$I5A<8k~`j zC2|@`BUhVBG;kwXoC5Xnk=^}T>gmIyk8{*;sjnT`|5-)d>`5JpdWKAawe&tU zd3&dnNBoqwl!7y7YE<^5)z9f?O26swUa4xSYJGpT%fU+P@hf5CkQRGpF6EV0&^V7ab^0{ryUyaUsa&!zGs+<1*~1H z+}XTu^Ww5pwdc8|!?N{`KbNzV_L=TpxvcRBSNk#2G7Fdd(a!%Y&hev6A`U0MvV3q# z`_)QceXjQDmBP+s?dTN;?ptlem9@j)wVo{Z&fL**Tv>4h@!-2m`;T(flfIP zWx(RB@dpK!{p_iVqDt%SaNrld*DVE)DpxlFMZG6=olrEvL01k%^R#s4QM9&0rxQgx z_UMG8DAz$p6jbbY+$|J+#g8L{imlb|!BkAD7r6ylpkgypX5iyH zNG`!MtB|}3KJQb>!w8ZfCJAblMUo^TNJ*EZJAyQlAv5K zo=bvFne~){aRS$Vo-Y*qYJx8> zGhXU9zSKigQp0?4M?9tO^M$nClDfsW@5(Nz$9zEptEGPMrM^g#_TuBb{~}|>?*VNC zFVJCB2IX&)`Sq{2_B$+P!H3b+8)M*UjPdI*W=3H=^a$e-LyT=LSP55l$O_5|+yzX+C}fG-kKSJ{Mjm!DD|#s}z3DRc3D_zTJ>@q67yl?(B%!P?3pc&mgK zWdpo!wzBdn{La!#N(1;+jc!Wi7Oy(qDtTDkxXMscwz&QvR!P$0kFfZ)t`5YsJ>YUvWA-EFki5WR@sG#?R7DAzR0h&$=| zn)bn8m~I+hgNN868pnf=c8zK{2PbnIG*$;k4IWp25nMlMp*}^_Tzsxk9RhP?otu>V zuwMHIB}C+%0h6*-`La$KrB{bv$C=V&xk*Qv((Epc`${=T(!ljoqN#c~2E~q{huck& zVrgo>BQLc`X;+YW-Rrdt$R)gYT5rkO!<)4(lFvJ!%TV~g6z6L z4-h?Oe2~6Q<%Xd!y%+aHe>?rN1zYbueTLw!$EDvTKGG|qpQftoInwhORK2xyKh|;G z^K|u=d%8iiPu(wdSJAkAf9Ra0b&aU#&}n~6|DlsfuUcX1D&`D% zE>FEM+G1BSJ!{@zd3wf~FlL!IgA2cF={K`I&Dv6J`rV=T_?78vO&js&r%Su;;A5wK z`YiC0(~=`}i}O=;GXx9vw8Y2l7GGb%EGaNzaU5bCNuXj)q|`-wt(?HT#X+4#AGf8$ zhM!ypmg~$OS^vJ0;-qhVVa1;`YF)ZwvOml^ctyDAp0)b&Y{LPorR8g9+N{nk7x8kf zqLu~Wl*`GR0dw_( z_9sx(_Jkeu$iNgkxU!@e+ZhxsxNXZp(IYt911Q@0m+dYT<$2kBLeY_ZHfKP^ByB=b z^kchqKBi)tORFlt!Wh9!>5$eKsF=A{G{nXTnkz6rU#(dLF{DgQZMfSf8gC%7vQq=1 zaoIr{FdHsy(eMWqd!qp{n+|OaRRrm!Y2Xm#zNSVnf{f;A41kKQX#PF((>lfnb79RO z{!4tXG>QBdWoVjV{5{%rnlbz*%>UF(;IDM`(TwNM2prLj;wQ#?Ku(*?K}}D7)e=Wd zd;aZ5c$&t1pWF2{wfUy6oYXYq8y!g0Oyqn2Vp4O8UwoFNEy{l$TBuz%9O7}4vXugB zweHE*%erC2Nny0uh0!$`V_-kVcyX<}vUQo6T6bg*ANoVLZ~9ysE1&# zci-p~0dM)yh)u90v=~(rEQ70z3J4YnmyMDMrdhv?{0WAo!A9l;&4wW(34%-q!SEA- zuXoJw4MFz)b;Iw3$T4#xf;%#IXIF*?_)WWR65m2hX$`SZMA3MKXsOg@!X>UZ@G)^B z%2+L%>?TUOx0=Wk#fWT^^+bO1u<;w>CYqu#H~42+g>hx@eA5o&kl?Y-BgUG+cdqFe zZw-F>P~2F6C^Oz@>_dDoFK?0@atB3C%_tCiGP_1e6InE$rD!PM#jhp5HsqOKrl?wz z%v&jP9v0^L6fshyc_?KYrPthq{EMz>zJ>gu{H)n?^6$-i%o@qOGjGg-$S1Csn(33f zAJNUU$>_v-vna}yg+lYxM3`6N#pw{Gu)IxA5ItqBLYGo`WJ9M7?%Hg*On0%CwtPXi z_VBR0N;f23wXCKqQ|&Ed=z{b&mb+*_m=*Y6v{&pscpmLGXEi>Pc9MGo??gK@cpGm{ z`!(r>C(~~(KDJEG6^8hjD-*QRPLvrT=3&of3aVarP%H1-ZDxC&8Ep05<_&Yd`+&_I zW(0|8)57$khS(%C%^9XPmP`efxXn7|diGz|x60peURcx0`*~Na9m{VIJ+(Gs3Qxsb zlbF*>f7@q05}S8+VQ*Dya{1YO(RiPu9GhtM&3=G=j!?R0WglQD+bgpDSyp!M*`_Vtb{%ZdZjxPC^HN{5oksJ*aHE|t+icp}Zdc3Z zh;h@rvMiNUYhb!CS4N<;&0QF!l9(z}shS=hD(==zPFsQ=dU#o%7p1nS@); z+`e_RHs?~_J0{V2FYgX}#aV*a(oJ@H#@pZb)TxdaG2-Zy%4?q4=5(kpXocbIcB3Ek z<;)Nl^rdQuB2nNUHYBGp7Z@;j-^_L2x}p8nWggsN52sgd^~0z9H@T$^SH`_{^B7Lc zc6C!6_Aifdogd!KCb*s(7U0hoJhBH@UUArD%23syO zB?cCE{p7=)GQ{5|8JayIW0UIUdxG*OhpiWV&8OO(3OqEXgM0=(HcdOkl)2ALYiCxu zUzp}EQ+LmwT4+vjcbyvG6u9r0V)s!915-&OMudpTpVKXbh^dm5HH6t2nEiyjTm*X` zb`?~tA);z=k5+C}>%y{yN7&xQDx1t8>7{6=7;l?ps+WV;@#UCEju&IuJw4aUcUixL zU-;fMP_fay2B2aJ-gBU0j^3*=6*E&^4PKx56hsw|o7cijX4YH}Y;>?0JT1#` zvpoAJz@Fn8Iv_7G&}QLCTJsG$TmkA0`P1(y3-*hagv}Ce{e@K)@sg zLB@hjmJwv`hFL5&7c=AVa}dN-Qg9o8iK&UeoXiJPD}iy`T2p(0n-=>__Xr$!y>DtO zzzA|OH5KrUA2QVz(8}^Ml@?fA^4N4M|5$^o$zS{z+Hab?x*HtS-GZJFN^*1WhiRVrV|g* z)-^i0f>iShIu&w1%+Kjm=s04;3uAPX!5HL>F}@UI<|xJz9gIi*KGHT1Y33Dw^I@G6 z12Ps;Ix{Z{Ezar&yhknV^&nbox!ZC#JOL3)5h1eW8p|~bUie@5U%I&%|9QJT!#;y1 zF(z!lm}QNz5RqRDEr)#lk%)+eo@7Hb`MQHb`? z3BL>bTVElZQLM9mL#WW-X#JkRw8CK|+`$-p6k|d=#;k`JOIKlRu))~Q1hTHYwOLCz zJJ4X`;=cLCC!2Bi%dIj);776r}hlk2^l3h#9_g+DD$Vb#T%ofALgzk|Td1bvp@? zKT~p@R*^r_3LWRjOJzNdPsnqPpB*of-*kF9){tLb?RP9Ee}8b$@d71i?3I%eRpWz| zb9GW2jJZ5Ic(Bf0^deD?OB)@pGVa<+`?^cc?Evk%-GFO9?Ty!J*KXQONR4X)ZGw8h zHHY>)y~H()He7zo)rxkvS=@Ce?dq9amql9FwVy5%w1J0rT)xn?Udp@rGuF>1yIskJ zTHMw#hroaIV`hl?xaTl&s`os)%BOd`diIw$?$PnkEMNBW^$;ze3l(wyRsK3r(tWCY zl;Poiy?lsy%DuY0pDpYjQ{LTG?Y_I5%~f=lEWhyRtGgysbi&I$kNJ6_-eagT1uXw_ zHpEN39N84HCGTpsg4*%D^UaTq!+njK4?57jJJ=h%0=#|MTSBG1P1#6dp!d$^kBok= zPt9*wmR=8*-$2jDu?_Q2pqNc9_N18F{yPdO@ z#qgQ#`r2aQ)7>@Qy~Zb_>mF~=$Fpl_=#Gy&M{!EShsF81y>{TFNM_L@5YOy=KE{$d>Bdo8+g{NFuzfr zW{Zzs8&9Cy(JzVnsn68Uj=M7K?6;d|GIhx>p>M;|n18|zm=gs5IdmJ=Zi|M}C5l3Y zhqN^o!v+RN&AcM$gZVCNL#_>}d*g$=hkhq+4l*7ZpiqLuhAz>s2QCdAWBv%dGgQ)o z3#=KUcKZhg4|(=w2TBgf4i^Qk8}gp|8K^$Iby+ZI(_>Gt<-biy!u*9k`FN*nl*nX} z=Go}6Ndt4I*!GE+uDHnalLg+FLt>^pgSANtQ`Ce-((0*T+6ChHlq1uNcy>yM{hXLL zCDd(4be;UvcZ?`7`DFNG@TJLwslS5nO|4%>h&eMmP&7tnaTN6B_Tu54_3<%_PFi_n z^M%hAUR3#oW;bg5rbUOnfssW^qQMejl1q8<8$y3AQM1EBe_skHPYvx_vStT_(wCIF zB|}}8*7e;869ekk9!E5ob_LUF2B)nW5LB;mDz${Eh-K7|8Xr>FqXWi4CVXjWv z?W_SR_P`1HJ>ASH0zt~_oFD?(^oJuT#~E$MN(8x<;+TgZ4+R|0BgnXq6DZn;9_L?} ziaFmG=!P#5hzb=8XgDPZNz3kWA`5NAk)7fN|Fjr#iWI!*=He76SQGTr$yG2sf#hT& zsFOA8q#*FUG|_3Zz@3Ig$3=m|9dVAo3xxH~IKC3Fxqrq+OI(1SM@|D>+jlrW)wREp~mAK{Q08OZQQDMcDwsE8(ru}HtrA) zc2{&)6i#>F?!H}d&>c23>3b1=5q?>vV*KYFJdAxN{LQQnSh`diV?!Xu_7m7ySH8L{ zxGM~>-E-V?UcB}&@-Uj!^%C_G1wTulBnNSrc;c*xgJ(UlUuo9!Cb8MzqUSiV%z6={ zhZ;uWZO@m)GIArv>;{ab=P@=+VeF9boFFoLNnWdn7YDw11(9S%wY&vLv$NrQ7s56| zOg)3T5mpm^Qf`ZG*c(kLSN^5e3)#hmQwk-~CLVR?3~x4qtm}>+FOdU(!5^`ijzFeE2@6cZgoumrjpYS@7FQ z*WP8}*G~Ipx9Go)HtwzM_l-6gYVP-mHc7qU_klJ=r~197O_lrm{Z5-~it-zvO>|cH zU8cRf`o!-heeHv2|JC&UV~72#8G&<`108b*!6t8H&cK&zJ~L~@f&%U_y;Oe-Y+-KO z9TpT_KD5Uzctbga@PazZFNEz2Vway!yc5JMKgY-p$}aC=#z3Ak%^5+2^0qVWK?dc= zudM{>mEV0>92CmjHQpKYmZkWCOU$W+Xibnk`w95`{_H}rPegCFl^TcS-~8Elf5_fu zjzdkTPIHQ{S;(&D&TzgEmFBi2R)|3Ji5x%Dw`MkLFKM#5o}EhSYi4y_BsDh|akr5w zn~y&_O*+rs@$zS0HRnt&bVOV{OF_}_T3#<${s|scVttelPgTPtI-L8vX>80nZjsYM>;l)q zZzZ~%+Z+BkYJ~eN=||LM?!#Qss0MC-MPO70_k0UCYA^R>w^5Wjw~EJ&+Qw}jN{kZW zE=?9kMe_z0L!yu00NWYO83OMjcEeDC#GyFPA-u-Nc<$i5nLimf*yyr@QaR`vU>$#L za5Ta_Zo`mVQd8{wkVwwA*x{i~6{)dj2EVs%iY**`-`x=#IQUziU##L_&(N<}nZd;= zu~_2J*~PKA#1XK`36fJVUdVZqqdOHSyCt<4EZ^Aq!~yHb)T8UyPSEhY^k z-jVT>=M!I%l_pQ;RFgMM9;xt4cs*I%s+w?Z@<0!gP%#43t*a%6jA z-(q{>=0xh^3C41w$6`$dU!wM6eyc{}hDB!2tj zVLv~LR;){b@zz?Bau-F%qiJ78Um7w7^i<`*ytHm*7#22`xvALdq64}Th{*qpxr?0AaygZWkSpq~$d zbSe6Q1-YKG?*oE7684iqke7abml0&XJKzGQV*Vcl|3nZ!JrQMrKEJ2J*0M={gTm^# zUccMIoA3sHmxU(XZup%P>I(MrV+y4vEcxvhGRrRT^A$wPg#C;J`x~45gaq?DrT2Xl zbh>(E-%mlA2T^`bg4@QP`27%+`rsP4S+E&J12W}7b^U%SSO^mQ3=~G?zWX^U+|}9R zM^LzqSN8K&;J7*X1uHZLRrrM~9E@M_i&BWmiu8+Aa4MPh3sq2S2=xn4Sl9l>&r^Q7 zH_neLKYZWDZ%}@6^r}BoL2Ax2uw4OKEYMlk47@%$-3LM&{iF4i<>&l$^lWuCFygOa zbUTVM=mN(0*Fc*rWq*A=d`Y^$q28_|WB$AJG};~fjrF9j@ccvcR0hiY2lRYj{0ykl zyEU5;bkSf9SeQV|yRfH*W%*O+ao`#&MTNft&RF5~0s=a%EG>^=B=}+scEFfG#F$lz zvE)9+20@JN;c%AK6>h+9R-^$+pq15`7q^1=tZimhhz2&J-~six)4`5ex#tKs1$}VO zQ`#ET>0YSc5!B#*$Z7e{42;xw80nQ5%VRJ$kuY|WBSq*MS1Te-=spitMK;hMjv-M&jNaK#F(G++ zC>lA-{DB}*`OK?gQPEqNIjVm~*D-B((_*BU+xH~L94ddkcOiyb{y2Pl%=PleNhTN> z=VPvxKVe43TrPjoY#np1{K*;fm^0%m&8{$zjip6VAR~@8`5Bx63~)b&w;7}acxSi`YQ`$09+B600GikRcU+K^vc_~w6(%al8D`j%6t9ACZi3@?JXbThZamTVcCSD&X$t<4~&ezI3FuCopL1y6O znxhe!<`Z9gE@Vnh%=SxXe4cnYT%XZ7Q91c8V|LPX(JJ%HvPx81@y~{Yb^HV$S?G`rR5ec5QF*irWW`U%yRS>>fymiFMP>Yqpx51a5$0neqrY5 zIPJm0v$G`Hsf9cJUun4u7e|_DJ`2aD-Lrq2|Gv1Nc4F}&istOZR4f-pj^ysVMo=;O z!L6WTEd>yxabH&?1S&RJTnckG$AW_>n)WJB3q|wY^5FR4Pq|-E^w_!F-%#{ielE<# zZieJS&LaP569XZ6OJHkX7o=`v0u?_1mO~+GZ18OTXY+OO!&lj zBFF+Kt_)MLSP@~+y69lhDM81WeIk2h!(-e;%yHu}mLfaxsWF}_Ir@{_2(P)nF`m%G;g+e!*?4yH(=$*sShC*i7_C}iuZF;C0T`o93UK`^r_-UR$ z?xYYEYGKNQ4#%ul3>Ul}EvRHI-x}?ygy@`$_ElWQS4IaaPPko;CMn(yULPH*cq$HN1;j564_$jw!C58;)PAIF6!m zHoD-C#r)8#6Y`Id(U(z(kM7ow(7hSmqaR_Z9eq|m-0es71^tlVRnb@U0~6GvdHP;i z-A7E*cw;v zp>K`H=-z~p=!ubRhB4a_Xi%DfvEeAj_E&K%55rzu+;xwA14Hrp9v4QpB#3*)%sNxD zy&X`Le1&ufd`o{)p$LtZrPb#!&O{gLjdECZGvc*W*fHC_s#!t(-LIwAQR_xK z6AvWrpS_ZNGx;X0JmVP<=}ih|Y!iK&lurLcRUxT{-oL9P=`8)Iy>HSzdbu|z=^?!& z^cKcMd5rX%7|W|LHWgs(WF-yKORsX0KGH8f*qI#6&=?a=G0YL2TXi5Y4@PQA1WOXE zqp_aq$hJ=pHhYp=bZTAj1Eq^dS#{?$JnGXbE)gQ{%d5zC?4nn^&$j8Jx6rdqyBHkHZ2hhru2QyD*Re;g z*##W_@fDgz_u3B$j5TLr4@s6E4^~C8MR~0fTe1gv;TmqV8lJ3a5j})E?kvVo;5PcJ zFowAi(T{U{xn`;AIqSI|`F)HZT=&CU7>iu@)*8kPm(cCSc+7R>837{(y>ixa@4TGJ zVevZVjq{9dsG=ynWC)_xjIg0I5|udyLuAc0xl%)_X4JfGgOe_}yibGm0de^c2mNF5 z2lED1(s=n72K^46%Re>fTeU8~c5v^}`uu}~o;{>|>Y!VnYd&GnY{)r3ez0ibUjEA= zpZRYEE+Y_y%M+f0nMMBU$)%lA`R^ysYF<6KG#O(~EL=4y?dn#ved1~0rQ$6U<#Csa z=O;WfNJVuMtp%+`eiNswMvLqwjvp&1(wShN4J#6zsPB&~{5erMTv&L0!h7;i5#Qvh zh1z24X_)I2Zde2>UbJShdMB%R&7!wf@ge!eEf#?#?hDu5XrqqKy(;5hQAq@;A_Bzm%4JY7hbq{YNb|3lL($?O zRtk#N)Utw6^h6uW7Ddm$VL|KPvSw`p6}!xQ11e_Cgmud0m*ssZ3;NiaEy1wsFa-Xc z$844b?Csu}1^T5OoXLefiWQllQ|>ky;1`mPWq>83-pPR34&zcf#28tObnqBjRMH^o z%{iCmh9EqxG?)nw&ZT)E$fR{Tl(X2H$-q=B-AZH`#!Hp>MZtS%^P;}8qG{8jmbl@x zAyFB8b=oD7&xD|~BO&f5{ZsMo*dJ*x6u*3k&CFJUZ#iT*=;c5yEBe_&XHvf#=qSvkdK+}=#ifQBv{-hg z#u(HSqEo2`%;3n>RD-;PvQ)Z3a@I&{fdQ#hJ+;KZsi88p+(4&eZEA&qaBoiPO#{CB zUTJm)`lGkfZ4D~t@R>`7@Z>YatvX@sudy}}c23u}KB0Im?V$B9{jfA&8&Rt|jP7C> zgWqCIn8BF!17oR1+CCeRhS;pS@n`^PaK;^BGjntWm{GvKMYPm?p4yGm2(=ksd=IyG5E6Y07dTp~`ug zV|kW3hiLX*%WMnryziK$ z5^`lUK3g_4ceb2gjUO>~?#O0Qi>{hxU!!*4zeF=ilpeiJS55pjdq3w)iZw(#q8L#y z0$drcqOTZ63?o$=h73by*Hy+=##Z|p#wx}t@1OKv^j~4Z7!xBg{_`%si+who!`OM5 zfiRG(PZ(+pwFf4QCPvekc1}S~!JI(er##q)mAi*!10F1qB_&47O=13}CYF1M`E>WK z+*anH6c*p5i+k@A1cn3cKw-Xq8r-eFB!xp7$4m6hGwM zkl;Jy#w*qEJ@k@CFg;R2;R!hFmHgno@OLcDei6y&GgsBvw#{g6HE7Zy0GuQKr+BDcILFQ^-zn)|JUS zntc^TlX>PbmBdMN*TBPu6JG-ds*s6Gaf4NtCg>Si)h-j>MKe_oCQ@pQtNJFAk7rk% zn@Bo~Rvn*6?C+_nnxGCJsv=F8O}bazo_N0?StB;}8AU567vW|Ow=LG}EU8Lg^wT<2 z9kM8FL8|dxc<6Sp)@>m#SfS2r!92mIUTpqXmQMX|^8<(a>!udg*5=e*UD$YnSJ$zy z?!0GR-NNddqILQ6zaFoyOPK#Qy{!(JPg&@$-?*p-JLO@_AV{4gsF+3_M6$G#kE{k2 zt8IWiOoU&J>L^Nl(FA)MD0`ZLG=H`%tcb}sT}RP+|0YWmJr&jjv$Kn`O`v_Zw>7Oo z(WkPF??A;o8o?GXH#R&)VGXUwc)J3K zQg%rZreZ}@G0?h#p`9m$EQ*+7jxvQsIb!;_!$t98Lio}m577^Vv?3kR>qP&eO`-)9 zox+!*4z%xuoucc?uN0<Xp`q<+{keisTQh4tjP8{MW42~Q$AWQN6S7gklyzIR`$M3;a%In(bS?>wy$QNmyFm)LoMGtj=(qn zws@`7z7PblCHx!F171&j}l+q8*;EJ+d*9Hen<`!Z+xSw#yJv3$XP)Tr@ z+3eAB?Fa(&eQzrCzS7^Rv!WrT@zlRmYD$sBjYe}N#}Y;D+Dl>+6}-NdL?kMPN@1i{ zW28G_EZ4x;q=vE6q9iI&`D#Q-ZKCV_u~Lb|-qD#d*`&j>6U?!c=O|i!pV0zq!g-83 z(XZv!j0y+|AdEx17Rzok3hc+r>KXZay~++T4u&OTOuUGZVS|ym24mAZjGcd!l`smf z{w%x1;5-N}*Uyn1b7talH_Rzj4CPZ$l$Fd%h7lIP3J^QQvSrz->9Mp}TD#|2Vk|L- zjVyTkv@=mA8a~hb#r&1L4r5Lj#(&<;x3SMNoh*cfTy& zB?n_}C&mgXjO?40H`&Eq<(0SChpwkpzF~77o;d8*A~Wt$rPaze_q?X?SOa`-HMCn7 zL8|Jy*NZn)J>e#;DbA;66!Z)oXKa9z0jC!@Y6%9>$}x7`r>_aoiic zpn7ZWi$RC_a-Px4<|B4}A|Ea`THeS7%c?&t3jgWh#L#Pr<|86QXEnu+R1Kw>RWyhU znY#ou)DEo;IM&ENI2@bbm^pYNoxc&{hlRe4GlTT%FpS4ojjsmjJzp{Ql{bzK?jJI1 z5*qBA2x;mbDw*HSP8fLz`|@^7LBy-^$duqt;U}7X*)goFBW%JpSkW*yG*D z$LGhUHyqELk656cII;*czGEaz#g4<8m!!gRSmDx+KXC+9tm0$_sMz;YfuLf~PMd;? z*|u%RRIKe0jAVs&GKw~Iw!v)c^vkvm6uqR{2J2$Cd)vxE#WLHnLB&GbVnM~CPt#HG zlWVE`60l!he-(Jk4Gj2y1pW;W`_r^+*a<48cVq-qEaXT!sF>mr5m2$_dWaS>rs|Dg zjD4)*fr?GnIe?0tsRhmIBh|Jd$go>2>|mU_TL)^mY|#K?9%^ZkfX|w(Qtd(=bw=Wv z(wsVFaWR}?9iP~DynpRSvFC)u+F`MFVsh;%u@p*pZJL-d-M-dV^b1p>cB^Q2^JLA4 zXmnRiO^xVIu5C??$oQa9%@2`t6IW}$i*znpHEb3It*%{C-Ve2;sAdZ-R6DDoiqSP8 zs_DA=HG!%TmV0aVs=5%mYn)ZJh#EC`)s5tfH99IUY0fp$Drd^x)@)KqZ_2G+RIxlG zRsEaF`fFFJzbe0cc(f){`N>Q9+A8I*^Cym6RDqaM9mN22zgEDICG1)K!>CsAkLqo^ z()2G>lXnSO6;>zhTJMgpPBr>O#8+n;O_AfPX-0RmFIDFlwU>zi4>jgjGmIiTe!_99 ztMuv%M!FBYYg~*R$8Of98Z~{`edPEq(8_vI>qV&Ljm>@Ghc)kQ)0GNq*4s%K?5|F< zV_1(>=h>xth*THZB@wSym)pgWo2skrLbKbd8|{2cpH?5Ub8Hl@Znrb;h^jtkr_wu6 zy<&&EpIcLD7diS{?QOfabGk>C_C!D}?>wc!Q~Ja6gosbwb}wON^IE)DuAyhm39sii zztzya<~-M9BxPWv7+|DHVJuU^*k}Ws?MSN0^LpQVwua}u;l5*SfOo)XM%|&kYi2nO zr+tRuJ0CM4@NJGGLLrkPf7FMD%BvuCJ)sds_&Vv(7TZ5-pN95%sbLI>!ASXqkv4#_ ztQX_|#o1kkMfJoF!(Rmh3&Eg81?f;gkXAuDlm-bUB$RHXQ%V}7yStkOmae56mRy=$ zKuThtIlupN-Oron#eLsL{ajqQ?3_8w%y(waoY{m9$b59nxNb{5$)7vA=$@EA$$C=L z`LV6~_qS>jy1!9_x_{jg+!u@gZmCG}Gj7q+mcBbq$?^{mSL}pko!E_756e*{lUPg3 zDcwLwi+xD9ILO}?kcr7L;^j?d5W%XkQKVHgOWa}{LjjcNlm#E^t z0$P|Y_gzxr1b_EqhL8jrkE?H(;@ds$iZjGJd5|iX#;bZz>n%W95ktC%LxxB|CecC` zQpKxzJZoT$_w$hG{grUbqk85?B8g}Gwm|ZlH)vs!Mnb_z9Nd3OCyh3#}-3O^q~3T+Clq-F|H3X$6D z6#NwYZ$-(tWSq?;q~|GQ*jLE^`BT)E0!x84=A=ANdESRi2~7!|wMunKb=lrdKTki$ z;nFlpG{7z%h9!JtscF_F6in@D9>pho+i4-iV^TlTl8dXs7&Jku1m;BvP$@)_M1Bc5nXa==1BfR+$ z`IC%BIEL9OV;7F#@6LP%|08XgsR%dIh|BbZOBrir=EK?T`!n0%Pkl}^JK)rjw;HrnaU`PT~C;H<(yP8clfXz&JkcD4|5mgQ-7C^AnV zEqfJdFJqg-i~R7pJtqK3YEqapG;rYfK9^u%(k~>JdH@-f3Yp#sS;hd_T$4*W(1Fy? zRYcyKch5aS4)4n3cMo5~;d0+EfHpWcV}XH!IPV7Pgk>Pl4%I5?mbZ=amvznmiu$B^ zoIir1{Bfgze}2cQxgc`B+n=LgV7@HoTfyXfai$eyc?o3ebI8HQg8KOYlv1G}ihXyo zsB`f-cm|6f+YMHimttcnJPTQ{hOB;tHCR@m??o~gjNG51MNFx-V6ipE&eXp69P`#$ zqr?{TAmE^6Y^q2Jf6GC=)fp-u0#WQ;1&C{|YL(zM!L*fN z*cM+@31%hou2c?yD7ISJg~N65RD%BfXk%p!h+<}yMIeg3s~Eckch9o29~^@#wtxLQ zc=V?L2S(;hi+NyOk)TYTCs-%fk_Y-yI@P%#PFZN?nt~|SmIKZ#^eiV3>_c-a z=Mgx|qihhRnme-1KoslG1~qW;b51mfVvG53D2inbQD(znnKIOfN5t8S;$rMdGTyVGCv*DY&kL&bLVU-GAcLwtTocPkgr(hVQ#?TH@34Hwllw=O>#z(1{4|z6U=wuMSIptEyD10OS zZaAa(4bR8OjFLArI!PI&Z|<0lWR&q>UFkAPc!q+5G75Q$5@8uRJbnc(8R~Ten$NpJ6ifFp9ECMBq*NDtdN{gZfnfS^N z6w)BS{DU-4$-Jga?CO|#L-~HNUFL1&I|(6~_mywtH)fJ3!|EHIJ%N*hmgPFkckD51!dWp zR@wFa+0#~iy{~i3tY6PC<;L0&Y!en#+X;cXf5ii|WBE=V@}w{F&OJ;R>hc^seBT)5 zo_VB+JLE=s)T=zmRrl!ESISlP7_f4Jbl-*yiH1xvhAjM?tLlMl(9iYrIP9&?Blgst z3D0Nudbh1o#N-2NaG^%%E@)xSL;sQ%7Nm!sGTIb~hQWB{^Vh;|NciQ)gxyz_$kz-b zHOSAG3Zt;@fb_ft85#>OeEv~b(d?bVtKm`GImM$#uA_GDfXIX5d4X=|DDbR5l}Nkl~g8kOuRaRcV7XyZSYL!(a}! zs%OCn2CKfg@Rs6UwZsAm%S3euYF#j>dKOhB8&Si6^3fuyu|}!>V5q40C%!VwVgKU+A97NULpPxcG)JCH0b}{u#i)uJrts54swXPk-##6Y~ zF=NeHed~T>`Gw5uPO$iLsrCAper@Uce#{@!fQDBXBWKHoK#Xu8VZ#XKX{>3(Ip%(L zRKq2PurePK@egv?0dkR|p=P%hJBG!|=l3!+#_OAx5l_$^sDTnz(c$5+TvB;>Loi>2 zQ7o*c7euk`n$IALQC6>k{mkgAL3C@mS1kl~1!JrB22pGfO#QrqY8c;$>B(1C#q(&dMK5hVny|noN>9?v;{EH0Iou9E_)~m`YN{?%z2TXN(a^ zIu+B58buE($`~md;T6LSnEsl|uM7+GZ>y3SVVJhMSBxNvRh4r8fWa!Y-{3vMRtWGa zycjE|;|t=#RNUdUd4ILyHm}~tv5H%~aymN|H+f&1zpTLLC3XE>j(c+)d{KV-W+>6A z9Q!7x09U^F=4XR%1?e08zONOHZ>(nrtM0vl?+VuD^3HsflzUrp{SxzeYpL;HcJge6a==R}|{E={i7KEJ3>chWz~vGEp0{z^o!qzqLN70hD4Y#Y9t&4h1syb{Q%_!GgwOQR}sh6=Q#^LHZJwicE zVf28L3f4w@Y%;9ZoOqJH$*cM5DJDKpz2Iq~;!+*x`CEUm+Ql=%Y9G==5i(>CGN}%- zFunSxXLv(eb%AG9?{_$UkOn6uZDq3ew*899` zcf%ECx$AF6aBa6WUPeXYaE-bt|3C{vm~ufT)XWGb0$V*UG6a<2-=@avE%VUWdQ_3u*2nkefHQs4A*)K8}-&9*emr@8Mu zhbL#C!M;HoC2e5kS5-+JSyhvFNioxYlWa*kKS$HUl0Q=2jSD3q>dTE~CBKaRG=`P< z*j+YymU#O-g^c(BnOXo@BGTwl;su8_CX^)fA2-2D{>^DOZI+Jj1h$x0yaG?e#x%!( zeza$^CpmYsS+f~)e6wn^s=$?I;bviJcr#-&qsDpj&)M6VQFF6!6AMiK(DXWX3zoby7+TYi#)&8bMP(8 zn^yn9rvm-0;YgfJS!+CUUh_d~CbH%G-PU4cj$>JCEi&d8Q7ar763x}xjQpJ;1zDB= z+48it5gCYVZ#_bG%?}__2VHmF+9QWUz$%7_1!ownt!&{l#htd11zwh=w&Mk2!T9zk zsCC)wb}_J z8cmbCx-j9+f!+8R^FY>aZj54VSho^JG`p!=4I@%H2-)@+aySTbk+J*9E)J8@qlE=) zM|-%TDAwZ+qS%cd5V_ctdg(zFbMEy8QEa7m14Oa*J}D5zc>8ie6jSO4y{llFemM}u zO8b9-D0ZVi6|^8MkR6(kqs@@Z@{s#i`cA;+5xDkFGBC#KGQ3XwLU&pvDRfV*Av zp*@}8DP{4V5b!LSZI3iqjlIeK?ePSSUQw*H{2?+O&f+Si|fJ0oo_v`UXQI+G|PC|Ek@DAHIuIy)!=h3&+W4Yaq2oj=ZRE0VZDH;agsB;pom&6oW9;WmO@@`pkZf>ToG zs}h1oQr_Ynf?ra=O&cLBN%uP*@m}(7A_gHUu~(>q_#iRd(A~N&5zvc9BuSLbasQjLUu-#eZD*e|sN0kol8AQ0M-G`Reebs#>0R)liq^<^n zM0Lnw8$qSo<<^9tRc-p+fM8KAOPoeX8L@Uh!`s_$x@n9+6zit80zIWJ z8S9rMhn>HygBc<^s;#kal*Ll zPAxAn36+jEFAvpc9V%W$1|c19DZ-G&_aGbpb$W)U^})MtMckbI*3BNVvc1wL8qI^l^(m+N zfm*+n`iJauuUBdglWXt&)LOpWo`lq1DYhQ=)Oqzc-NUI^!^Q5fRGb}uw|g4Cw+3W* z24pHDWbrIyQ)#zs>P)|BcSoAwEVgGjopk42e^I6x4%eSq$_t*q(J1938|=Sd%Fj&E z*HFsOZ`Nm6Dk%N9?{TTH#=G8uQW4{uz0su-_O8A5r7}LHy>_KC5krt^uOLg>AmOgP zpGsKQFmj{=36NeXuL2rCGcmeca zhr<_~C~ghMfKApmhZ7dw3Kk5fEl|tChjURlE!p7`)Z!1T;TlxO&v(Nus8au~;cis= zAEM!YR8rOp$O=iw)-1>&*5OuE1gd{TY~cxpesq0t5=4VuEFA1UjK-!?*p6Mrda(MA zJ;Qz$avT%Ea>`YY8Dej1e;*6Lte94e6=GVPv&Q-{>49=%8#lFaySD78WxyVAt)R(>vg< zu;jEanD0hUgS)EbpQkdxuFr*2>|p=qg$Xc%Thg6WhITcc1$W&*UarzCz+hvk^!FbJ zO{P#=Q^-s?P?j@qO?{)t4TSE z(A1{MI}|ddhZAiS*IP*^9LV9rOk+jlEDMR_2jn#SeAA=kpbs;_!TKAdGQ*C0Ts)e? zagXkNLW-5~CC!8oE6H1x33e9TN7o5TmZdLA6ZkA}i<k(N`e9OaXKtLrf;AkAhOIVvPg?mj*$EPXZf&8V={T5>6{t5{%E zP%67=WRy?JbHHYJNOEvCcT_@3U}t@jPdWjIoBW~-=8q@DRJKS$$3;}z87RiM)UtU7 zNBPw4#4saH8YIdoBMs^^dU+$Q>O)qFBVFnp9zr8X_1aL?k#Y6hOcB>hGW&LX0}G}tAE(WP3&oGgH(?7_dqIV21z8?3BqrJ49VjUzpcD6A7e1| z6we&}W^_ZvWaOWbg8tO#6(c!o&QW|LX^;8Qn?~ZH&7*gX-X-^pJ}}}hIv6E4;%MR; zeP+ba|7&>B&}t@jRNjbs+kKMQ1P_Os%CO;p!6rLx3P?334sEFz*(M&@M)8u5^V{8) z_&(-lXRRtedTG~a&^@|r*KhL>(lZt^Oan4S9I{vuvdICmzhtD;j%=oOjKFST+iEh! z0j%trHu6da^(D`1k92VI$Xl4PdGe)q1aJR@nfIC`?>OA&wHo_4kB{}YuCa5UP+Jm6 zFDuA!BFK~_$l?jerZvccd!viqQ?t*;X?^mytEK||P&nMo+X&FBoX&_)BjcLB9TC8! zFr^pK!sjtrAMsD>_9S)WOLfYL#7G^({t4+wH@jC8!jazIKOn@E!e`sVsaP zZti87C}>-T%080cp0zB~WVV{UUS`6-I1^LmAe}qIQs$?Do$f7*F&>?EDa&;DHZ5CL z;#)Z_R#p~?f=qu8Svm#T90!SXnu;o;o@<^CEZf@Yo8ztocX{T;Tl&HCJ$NmBD3t3`L-bXK$V$*%BxO&f^&D61g}u>M+NNRYf4MK#31;yAxG^g@t+zIupM zmT}&D=(c9&ywVWtd;L7q;IWhQ{LR7rUx#yl2eC1nb9;l>Oex6naLCrXkb@<21%t&X z)_Judh25qF%@JN4ZlP$Q2&^nfSV*8CSnyx)XTdC3FIWpUEqq@1EIYLzx*)1$zQDG? z_9K3QVu9kP)xw>HI{{Y~@D}j?d_v(+xGYo1ieHeeGmt}{AyK#mw*@zh#M1L6aK)A? zuwd2RQZ+V{!fL4w8_4Rn)QB||@>puY%E}>@+Oe$K&PzSmd#1fhgP48i)};x|bfEbX z3ey!kzqE>J%z3o5hN-Wjg=|xW9BzPIlvqMy(lE0tH?Uhc+^QrL#a6$7D7L=}A{5*E zRWJ)6th-tUqS(kPxFe=hwYmqQ7%LjA0CANG>WPf46 zOry>b28?nokr*(h@{-s^f>lQ@yFb8PD3@I@+Nx660rM=KS9ZXfkcqHu&|g`{TjvK+ zOkkTCiej4|=*htMc9`TyEVlZePf+ylh&*|~%(=r#g%iBkxlgq!kKEp(0?+(!H&Z29 z32cW_nR-3lR-@vHSl%Y5yvXq18l!|)l5Pc2y0nLFy`_9PcDjkBSVqgE>&UVD9-9aX zaGf@dUV@Ru1_{S5N!Z%rYf6R>oB!Cay?nm8!}j;>-_2RJxleyKyVzQEX*Y}6lB|+8 z!`bY-?rvJJNk&+1O0zvm@7;XHI#)rpalo3|X0U-^{W6-d5yDEfGPCNukcO4BqJDclmG3*SCaPMb_3=gh~|c*Jp)d^#s?4gxsv3t+xy5 zc#*AF2?<0{u4f88NT**96I?6jS^p_mg^*m=6Z9C-To)IVS~goT;oroBuloudgH%=| zF(8#vX*E*(^(dJnhKV&3*_}7TXeIfl60g?`WapK?uIbAn^=*I+*8OXGvRPirYr3*Q z;pb~#WX;p+)-+}1%KX<Njv0@F3`NW_4lEZ1G0Be7`Y7i1sl#UdUf&G3MJIUc3LD5Qp1-Xa~yR7Mnd4*{#h_ z_GwIv8($qb_zc!<9pF+|*U}x|sxz!zcT6+fL-#p$+Sx+-Jcf)oflR-J?sx1c6GkH) z+gn1>!;YJg)?6ohB;PGstmGuXQBThEle`O=Su?{Y)K zFG#9%J=$+qeS7Wb*IT2`wfJ9__Nr@9zifPlAR~W6rn^Iy#X+_VLk>NIT<~0p^-bBH zT_^tqX03Nfqri;*wpmmq8GNff>X?~f>vr^8{+La<=m2TmjfChSjj|2=nES>l>#;Gy z4sX|;V`O}@A*1*pGj2kb<3YAkLk_7xE~KuuL^vP=?ks_mf6 zcg!hUyO|aOtXndfsWOC{C7DB?Z8zyMFHP(=YO`n^={G#Gc>SU`+_HG1&LA^VAj|C` zTWukSLLe7f*N8K0cliSgpDN%om0JT9 zGn(vMDiz1yMK|{=iJY!)7FE*z^4?6UWQ-ny%#?sEKY?r=h8*gLTv%QYD)-;n+Y+q= zC3$xOQ3!Tfa7R>;ckePF;4B_H2t<$IyB&4JnCz$RJ;b6WYC8n6^W*w9AL5_W)YfU+ zb^mW$6K!{6YPQDP?q=d3E4&~P+>pbBkc-zg*;;dU^|!;@Kq?r!VbB}L@D9&YT-`k# zo?+SEEg7B^tlQNc9+yS!J{lg;a^LA49{y3Y<3Bv|Gk!;Dcr1W>hkbbRPvj2W@KjbC zWF-kCA_a0-0dkRU>tv{RcWLKxBo2qek}j@+RQ4C=D0ng5i$kn}n7G9@AqI@mVx^o8 zhI=tb`#$FSV!Wx^?(|}qv&3%YqJIE(H+IoGR%17C(JMP-H(=4LvK+GQF63|&voIG1Iv^_jyNI> zNr09PZa_)@5g=9kW3bQiT7fLEsL>v1H4p`4LxG&WT*rd5eVL5Iof@%%v&Z4yxkIUl z1d)NffB41>dKls|0;1qMmf|2UBHGZ31`%;1aJC{Wj*P(D{)b@CLUbJX{`_xFTV5cK)M?-11o5RJ2y1RCEZ*dB7eUFId3WU!?_5U?&U%*(YE}H#N;=@OAR{*T8Tmkgl$0Kp4F!yINFg5TNFeVP<+A=UN9OzO9Y1UH&)SO-bN^a2t zInV5mD1Lx*1y8^EK&iMelGg(}STaGauoO%J&#F?&g3+y8jTSgJ_cx|OKv!pDpi`h1 z&^~SpXp;wK;oU9jCCDl0mCPHU zRD>{}CLb00H$thzgFYj0hyt8R0xc^jT?y_&YQTB9X0TF{Pdf(~Y{m@ichLlH27%I^ zxEU`638j*_QF{v64a#id#?(8=4FbrMm1BoLKcQ6e2B1{(Z&FwR-?4&PobMq7-Z>v3 z4@zUfHJzKl_h#T73hZ3kfPaF@fr;@Rka?gq79`eoLw3J{oCJ9(NL&Xst|0M*=;TW_ zIAd_f63pd*JBs%y@_<~d;C;h@kvrf`LuEjzg)1B&7fxLlvYp_-UI8D(2++jTcbIka{Pl1&3@xa$Qp!{^p znNtG|TvdQSgTYnp_Kyd@$L@eUkoWF@T5!JI0bSsHx&tO$A<^xSM=$<)wlhGfOo09v zP>rGosKfRcXecZOG?xeM)r5mi4bamZyz@k`t0OQb*Z`QC@Bo;Z7YtcT2H80WIo=Ps zih?}6cUC`&52dpDUrAo|q!Wb6&NR9|2nFfHrW|+#J-SRZ~}Y$Y4Y0 zI|+n9%RJDwtXkE8wsh61Qv-4w)WTJ(l}*Tlm5X~zy-+F#pmzb3qnHN1XJZC(39AF? zj1CcUmN=Xxx5OwpMCjr z&kjoEf8qd$Vj#aDiv4#Lg+ZMHEnGFEP7!@<9fJcm~QoXv0AX{qK6zfYJq` zm>}e+CFIgDV{2#c;OOM#?c?kB%ReAIA~GsE=1*)~T6#uiR(4KqURilXWmR=e zZCxv(t-YhOtGj1-WOQtNVsdJFacOyF6}`5;vAMT@@b~cO_~i5-l&>o=y#L7-@c%bo zL?B;R@$vESZ$SCFa@8KnI1&D}XRodkzx#CKtL1~|93D3xz7I<+Z6ToHRKPycwHmth zn3ikt#U7Nk|8n-fmod-(tDOC>jQxN4nt_SHuKsu6UA>BT4G$0R+VyMTxPJ3Gblkjk z^S|TP|9jl|@3;pYg#YWnfj0p;#ly$PzXATVZtMV z3ByiqF;i{hU?|4VfhH2N@pcz;hv}x-)XYwtx`goqC}{nF=NMlcLDAPuJ=)L;fVd{~UH` zZZt``A*Bw3Kj=@b+9LN<*&R*vQBTh4cP~xQnT!X?66tsYO&wwTUIBlS*@WR}mG;#H zw=G(?!;tgWF%}twFKNUM|M}`*5|kfJ7KpeY;TQkPwipv{?_T0yy`lt-ZjKrR$4@lQ zdS0#wn2fO~sAY!2<5eH7ot%c8VLnAuo8(KcO41|$;a~+tQopycdB~(x-6w>xIGCW2 z{H{uSb=Ry#7!Fpdew)^y0e-}6Hqpm$`aw*Xd-JqFoyd=a$JAGsn!BxV%hg^?y&(~G zJg3(Y&fPWSHgz^uNSp|_KF7hVn%Id4dX!{urrX8ZxpZwxe&cM7r~W4NZ}e-&6Zu%- zsk~!4aS_t#OP$%`#6$_}q+M>;{th>=AJoKi#qU37%3(ewuSHa$YpQ=(pvw zOTvblLPMc)=2=EA*Uz+JJE&?WrQ9~;k-bi>A`X_`(csp&KlUM{SLlm8r(3tC`TX&~ zt-+O83i+du!#o<6xG;eYS(sn^xlWeJ*Fr9Xp4Tcv*`pI9TIn|2#r4gGOzF zDMgz&`5iSKUMy%OZ;$cXMjp6|>4ewt+7`14ozZtIXO7_&40Y|4$sfVjq8{IsYg$v` zFRgbd=9yqyuF=K8+Aj~KZSy3lcTpCo1G72JsJ=2e#kD2z)2$?Vy|O5g_)*GhQ^MyJ zMRK3@C{F)OMy(U8`7a;5n07mI>ZvKSxtPSkj+m3fXr`1;xeV!u1)R^)HGbrho$bKU zh1sPC!j8ugCw3#moaL{&n`)R8_yp@-J{cFOQ=KanI#ZtE3dN7ObaIAsjOBY+U!Lve z6ecup&?Y;pdIhHQHt)8MR}8>qB6d5rOKVRrrFL2AW#Nd+gNf*A`RZex7A+Q4M9%>p z4wiq~1e$~5zE^*@T`CEF`dJ*qX-uQI-o%3S|c77mo=Y8gOFlWp~6*NokEcg;^!d@BJ0h#Zb=`XCQ{*b%rX{ zdR%memyDo*%YUc+d3oHe6~yW87+WvcFi&`mLR8e_GX< zvXUSoiowBt6)FwVPO<%+k3GxP&NWC8uYJ&S3U8={llZ3DzN*{P`LJD=Om!Gi<=}R7 zC#btp*w0kS?VdAopTn(OM}*yX`IV#Zi|NFp(ds8;1oeHh!BsVzBV5@*tFxzBF4q=O z$N7>rC(9S}pk#e(%-RyEwz0SmD(hUq_+V8wM))G&RO2tNE9ZL2*tVnIlq7l4C-KH&1ae&&&@8 zL;@fQ)$`X*`VniV$2b^Cw*oCunq?*UvQmq(?a?!2^e-L8%R@ut%j919I2pHFDj8Es zy2^S*cFPq1%*^ZS>edmdEeh4_H6Lpt`pjo7m9*vO9UcCS9yoh_k!+o3%bTh`eSNKQ#(8B)N&bZ!Tgua&AsVP;#En%h z3Z~$O?0B-5WjNSJN5Ea_# zD2;<%aYH-P+=wslL3GN;>Qi(ax^*;dn@_=;vqN_7iW0tK(K$CsHJ{3EmQjk|5no*w z=(5DY(!Lj3j;pU7yR``3JV{1uIZE$>w;|>x6OunQJhvsPp-)^k9B(>|Inq0Ed8RP& z&wXZuxK;QlSVg$(7%`BAgDKEY^!wppK_i;h(ZT_sKoFi2!aIgdDq(H53CXXOJ zK}c`ZRW8-X5!i`|BqmtvfD3&`cp-k8q>Y(5QGYWoI^;`$vwzmU4$`&e!z)ID&1IUi z)L(D*D3DW%i|AxW%O4ZR#k3q;KelLJNGiOed5Jf`!EvSiCzxcu@;;JTIVjSwDj6%U zO0sla-7j69NL^OUzH%G~V@@V7+aDNkq=Q=Rpm+?Y06Lew(tiTW@1Bsmh;6BiE}J^|~f@tj;m z1uJt<);m*|#1wz!lRtczv2td6hD1`t?=*{U{Trw1|2x#|`f*0^uIr3E_$`&3sB?5@ z8>8;Cp~q7dWNRNcU%hVeR>hX`kjZl5(Y`&nZn~J84#L_E*vo3$oOXNNRW<)FOw9}V z%#N@q1AafUL)eOHZQxQ6-E}61s23zzsFi_&iGcMl&+~NkUOfI=RtN7+PUKNltS~Jp za^YaUxAZfaCAX7i9Bv{&22P+3`?zuO%>3a=XFE^Rlajg*4$9MW8BCok^V(d>voGJ0 z(Z6~6ggN;HbcOI+u)>~PIww*UAw(v8=zv?h(Y#;8KZJ%-=J-cNq|8$AKHb5iwdwt3 zfkj;CesZqg8EGuG);aX#!lKlpco|;UXXV;g?z*zcTKq;BZ@ibWc=W;L#+mr}6KrRz z=pZ$sn#cO?$65amz3I!{`$s!d|F8Ritv+{|1k*}3FRt{To zZYO2sHTa!af9@c(_N-#5Ilx1j>&o4AiaIQex9dF4Pw=RA^RbC85YoVu32EE@OT7DwLwNUCRW-YV z8WY!1?)~O$lG@tTHtq+%7DrTsy^waMbb0o0p+NQf?Ex*JLnomS(_hho$=eg`S?V|T z8q zjx_xzDTLFySlVO&KhjZZY`+^`@@sDDN~EG4KU40RC_UZ?8iw!56i^HIF~_t@xs z=j4JNuk8DqtpXwYUulb9j~AS`UCd*S^C#HP5kx^a7?mSB_ja^tBTb=hE_KRRW11G* zEwcA;&;erKrnz*Yzc|E!6(CyUUrsM8JKPNE&-X9B`zpv=PpdH(65<9=F7%gsz+mE> zKfHKq;5VFZTz+?_NNoO6FrV=(Yan0_>Bx>H%>Hrm0{rq#DvBVvr zy;H^2g4fBtPL55#Mco)@oRgU<9Tbg@jF72TMr~d_32tSorgAlwtMyEd$xb$gxG;!m@?%g>^E<~kpm`Io^z^`f4&^ZomC z)T8f%4;sHE<@Uhd;AOcB?y;`zP9kAc$VKp>!Qc<#>mVQdW;0DqmC8cw)W6WR5okxf ztHCGcj3n8pESXkrqt0U?rxY`qd*PrpRaYOd7l_k7t$u_^2IqVB+I&X9V_xZwb43yP zfH{YmPQaEaZ3i-`iJwCK$sC^`(Zr;Hq0=tZ^I+5n>!?t zUvaRS87A)%$B@zy9IU+1`KuM?vK(WU`9vF2{+u&Yl#X#*SK4?j>y#Vxzh3KZau;nU zKd+8Ga1Pe0u;`>~UZ26i9LsI3N%qC{1#*T0111Q`tdr>IOVQK88DE_{FV^-{Szr9_ zw4a~ZY8;K`k>@l=U7o2>R+UN!$<}YpWjN3FiF`G!Kla0n4sL9fN8(@}tlv!|o@gVF ztCf>qbad;f957A1c}JPqM*kxl47}WjObPBD|MAAbI`cE4Z|-~Tx@{j)Wk&1lI!C1? zGtQA7#IWf9mi0o5hu66X=_Q6-{A;fE7E4l@FWw)Eic`{$_-S|%UG%FrS2=ffBhDcV z^^^V5LoViH&8ZmX&?W!TZu*TmA@llA@fl8kA4UjSKag6V{XD3;Vt0CJGI(a+Q%b|E z%Gkt+R&wm7EewEFB0Smx|wNk#lWaU>XiH>SWBz zgk#(;j+@dDM}7gb8%y{1E-*1C-|3dxhu)l0@9q@;fDaxqHGz%=mJqI4coa?&oV+C* ze7P$6JGtj7b~av2{nUrWa&1i!Znr4W7&Q7 zA3GQl{t{ZmUt-RRDhD-a!#|*frd^8uoSqe))ouLke<^{3&7S5jy*d$cD{;xXO{zcB zOrwIT|B;MJ`!39%`z>Y{-g~@Ns>RuDo(u+c-!Ws81p~Y4aL03LZT*)zM*q5&+!9tz zx%}}O{A($8$1jS)^{Hug&XN(I$5lAq=LspCRXZ1I{Z9N!8qbioMV@{3=+J@Xxp-hu z-#tUQL0V_YQisb!TW$?L`e&{dD66_HQ{D$ALZE|orSRJD6RuMVG!AChH0~qh*Q{IW zyvF)Cgf`S=fXHd*biVrOP?J$r`x9iNmMFR1y<2N1mQ{5UT!piD>Lx00&SJCG%Y$V( zUc#+^nqE@Ze(XHPkH>O8D{AE~!rc zFm8G=qglA>ZBcaW?`Rq@wiD+Y{dlg9|Apgat{&yfriJcOSChRpkv~Tzf0`7#*%wjl zp<&-@woaUD)zS)`WDiT_!-%wm=ZYRER)z5(`O93|&MKG2Q+r&r?ili}sYaI;6s{J@ z*lOu9xCMx#>MCssykB&Hj*_iP?RY}<09o=yPX|{e-*tX{a&+6%zQy?DLpZm19A)g`S6QFWtN`o@ugcW)%}L}2fZ`T-Kr|>Hg6sa{BF_{ zR~qK@j$zem=#1JS`Zn37b8Oaq(X;;J>1h;g0mIW!%L6bn8Q!R;N}$^TqcII-qM@5Q zin`1Xp7NeD>kfBF%n>_2f=}gRjosK$+T3El#>O>_hf+>QijR#)jvHGkR)oebqM9CQ zI7IpV2wl32}8Y_Lp0$%CZ(RBANHq z+TWRKv$>g?se1b#yXc1Fqo-aZF=&{Kq(0&)r9oB~{@?C3(!WAci_?`^Y4c3=CBD2u z(-Yxhr9r1j#-TZQP1|Q^crqvBVo9iSrk`Tu8ZBl8xhga5Aam#Ob2ViJ#aynL`H3l~ zzkI^f=P&mN5jfZbc0cye*}yWPUM{^rA6nS^mC)u;GAFOW(04+6na>Z?8)m&8ha%;1|6GpN$g~b^1>5gns0bP1D#;oB2fVhCh*EQ^1DvcuVJbxq@|# zzGMC88-fG^S1DANsoO5_n*YreCjV-99#=Q}mYgE@>Z7Nx=15tB-f7?CJQo>NRpR&o zCr~9)DOU+pLDx%d{+rq5%fVhMdK3l}YYe<9lTtO-(ow2DP3AsVI(e3LVvWdMM&WHH zPuJnMiGS*pJ&`Ba~N=>$-xS5Z!97oI#5XMMduew>pe_etDDU!&0q{| zQU65{T+24&E9`Ckx#`tOeBnv*BI_v@?nx~-XeJpT9c4?Dcl~rqH{|<$xpx-aw%q~& zA#MMH`-`^=(>|C8RMs1%hO*=5MEyD5Ri&Ryy7A-50~WQosC4WG__E3eIHs34s-*qkvZP}3Tr0S zBqm+3OqekEiS=6`^eu8*e6q(AfYwrZna_?<=B{^lyh5hP+jYm;=R8ge^Ej#6xs~KN>?@7X*DOQ9dyb`=Th0;bZUpe!Q*%H{m16>KuxJ%8P<6|Gc zS$!6HCG=GNYEpjCUJ&t1`FmHZu2wRt~>Y)_97MW z$fuL`Vk)8i^KblWiArK`dl{edh8Bq}r7+OLuU87#F5Km5aU*KDUD#r8X}>sApQGzb z5v%dlMA=I$%=b&H&^y>l(MW>l;~MyM*@$Z3(zV9bF7r}ZL-H9)s$^#BSMLTm2(Fb5 z5`_(psWvZ`=%}?z`J8GjGe|$N zb+*T16fUO+aE=IaxXo^^o z#{-J;aMI`-tGri!`eJ6CANYP2_DEuHoEZ8Y#xct!)ttB>QuV$e$P-~sdg`$z$mGDb ziDsYr+2%uQFvBtwM0vkx$oJDa>8q|?0;J;Sq2@1{8l?JNh%J7IMk$|Vj03rEFf7jaKSPfD{HUWkZT+#|$y)L-})v~XdmDc^D3 z{v>|s{bv^TOguPjfv_1SeCxEK{bSn~#${uLkIn;pj?Bp<37xkCdyLT!bMma#EKLNJ ziyVt?6h5zxdft;loN=G@D!~l_&zm%pSfi}_KPM2gpl6PELb&JF4kvOJam@Z6e06$i z^170zU~0y_>qqpdG&ClO>BCL8Ch+cR9GmO#$$%+9v8J?(@HczEiwIo=aIp3E;uzaT z)buf;CQkn1=EOXDGHx=c`mRDn(M;5(im(FG(zeu*?q1b%IR!J53ny1!$)|dy+pl!K zpA*ID+;qOX7ZYT93*mrP_Wi)5E@SBv6fyB^HZi-F_MYR(o{g;8nrw_(K+od#7t=CL z7PdheiDtPBkLD6KpE~&QVhv$2Fy9np91AE0d-C1GKjGXVY7UDrmhy3|8w@vu9ZU_ISM>LKt+4~~nI_~}`KB3D zt;5=y5>JD9@967QE7#XyMH3z4!>Jr)c5^y7_D`84LcD=!h`oL-K2^T z@2UNxiSU{WaiX2e+XzhUx_mr@i=l`SH;kGJu6m%P6yqW<8jyK zLVoX5E|Q&bXPX4j!oKtpJd2t2VRGCV$)=LuF8oRtoOP1lX>Ytb4L*}aV#l2@l3db4 z?&Woo1dmh8?T<&OEtda>qic_5`v3pB>aIwV%PJy-+$FXyp9ryv%w2`#GIGDoR!Yh> z3b`)1-*cHeE0^42xy&%OT;|T$u+1)h@9*zF$8mP-eO|BU^KpAV-wo_0Kao=*A9o*}>u=v-VexNqER76me8^g? z!&(TTxB1I%oo;-FHIEHEa>{$w52a1xQJl&6dMEUvV}P|Uc{$8PTu&T zHPmSPiPj)m3?_O*@6`7mXBHBw+PHG?g+qhwXeOPOL|XdvQP^p`HFJEPZQ(b8fY67U z^uT>me+=BZhT(yY2GvwT;4}AzACRfiqZ)ppw#6u4Dy(F&Li_~!RWM4c-}Xw3qTgvk?GI4O}0x4dn4~Gj1hte^BBg+ipooLePQ* zUigC%2T;Or-qm~^st`KQ}Gm!w0+U9k!bXXX*iSd!%x;$0e@)@$B zvngfm%f!{Tcdvr+;vXtAiPC`DpHrWunvROAnh}NW@YbjB>ao&IQjjL-EK6bO)tA09 z^MPhxEJSGy-D&%|tA+CyLQPxC!_W_~)@XZt2S#sBu#VI7&29z|7RN*!J1Q*uA~Y`> zRR3XVp&B0d9Zb(aOv*AepLEnD0Fys}&kw-RPg%=Pp;4OyOtq{y5rX7 z$2O#+@E;WllkH~LHFrC+IAXC$m+`Q;w2=mjX_fg7xs~dX^O`gP?LE-SHOMr>?BvkiBY_%^qJ! z^^SW3?(st%8-tj8^B2XO%084iqw3LGj1o!w&RTrrGa9zfZofpy{QWHFrweKWF&Fhd zHK5Raz^P$xivwg%HbqJ&Oun7v`PD z=jN)2GiF=&$Ykq$^Rtt%EdM%)mhXOC}xDO{&- zfpxf}eAuXVVGhb(Zz=+*fFsSa$9mqyJIXRvMrxY&UAK#_RLJ`4p^N?pC$=&+U_X}5 z9bxNcR#I854h{AN)h|Tk#>f9#P67Fb00q>)NY% zZpU8Sv3H{9{88TOo`c6@_W1rO+h(pOOGl&F5LLkMwqFW#OuE0L0C=ai{i8{ht&X$; zF2kTo;AK!IDLhj&1SLp-1b@3%3DhC-1I)Tsh<=X`mPy?lmH3@bzj3^aMC469vk~}q zCoebn{9vMb`xBjc#M3fG_ueuD6G9pu{DRtsn~{e@;ZZs zU&U9z&9>yu|@hxN;5E!3i zalEeGUTN;M!)y>xn{o`L1wBaEkjA*X_E*JRWL^60k`vAwnz>L#>Ns2Fnp5K_f7!`B zzP~Gl!%E-Zy0^Rv1;!t?*UlY1?*dqd?^}+w^+QJ2i4<-xEllL$SRYM^&OnhXjE1-G zGoz8*?ct-_Y9*6g0d9QuxmHQO~}U(!8T68+|4RvjIZrTttxBf#uf zadk{XF0m@GiEdEEY@d0+QzPVV3VhJ8Orzks&pj-ay)D+stgzi)i zdDQ&3L5+v6a&Dh&EQ~XhjsF907Pt=nxAvA1spn%TO;|vF(<*?-;HLY1bTXh~i1;Qp zhdZ(JD&xZ9lO(sGB72*~Os=PeP{hhJ1>-Zu!b+}Qewkd@9P%yaF*pAr^X-eqD`k|d z*zXbV`+(rAKZzFc?=r=di$r|eW;VIX@odw^RJ8|FAi}G3Jm<8P7}iZ+&gvqM5$KTsHoXw+-(W>WuQU8 z$q^#q3TvUz!FA02*ZZAY>maJTB8R@X6v#?qnD_jo{eqaKDPsG(GSFqOo@qbMKcxM) zqXyfCo(~ZUUR8b0es7 zkMAtjO$_wGq9}W8*+K^#EqVw((|BjdEYpwQ`3zEib) zJV~7qpl9-|VOdO5)2Q}FTry+a(_8uI4_f;*u}LM79~^JHcXVYsvA;ZBQulKpe^qSrx?;Y{AHv`?Zk^{ zYu51Z6no`OgAZQKw`Xh=;xTqVg3tb3tSoX!Fh7&@Fz2;lcTdk8VQP@0x50S3TA4pq z8<{;JZIRp~STgyCzmH;bOT-C)d(B`+M*WHzv&!LQkVAW8#7^C-(bLmrtBoFa7R+4O z#0RnS&(L0=%Um}Vj{N4Qhh-l>+kZsrr^X+jQM=%lB`Y{#x^y+SV!ko!=0D{q^qFfM zWtVBPV9;TD=Y{`NzWUs+m~486w~AD6*ij?Z zWrBXiSVJ34auY=1AF>U9O_XHmBqZ27qc#<07F$Cr_?F1yqiK%SzX_@u#Cs=Dy0Hp4 zny1{j&|H}WWF|6xy9~s>+hMQw7xpLt)Cb6fN-{C%hA*)OU&zX)_DQCoGI zqjoLSc5C4iEK6*;s3IDW54)FF7j`jFY^CvmpdfR6>cn2kL=99{z`|?RhXY19`(&wmiV`Ij?;#szd z<5rUwy=GZ?i7jI7Ixg**MkEsH_xM^&8K!Mg9Ry(?#ZtgW&>9rp>h^M@C}(f(1+4*z;bD!-qy%JJX#aW zGppkmXMD6-r8vmlqG4DgJpj{G=khW6_74#~g@KYb<_BP_#I_|^sKSoOHm%sEgMaPu zy%X8-@bE;NYA*pQxh8~dpVfMZo1SDUGyD^>ErjAh9M0uR1@>@2liA;*xfNJjuSf;d zUt1m>fV+=Xuv=;+Tm-Hf{S#EJ{?%1x*ihmq9t7G2m-KD0ckDbqx(r_rS$N_NWUy9d zj6Zy5%^u|W{~=vdp*>uM?)3Y0yH0u4_WwTx z&97&(Ri!OvR@E*nvR6LRf!6WVtul(;r+?3w~X00u1d12^os5{UPdd}|g zo#UKlKGJ%l%(?sT<>+{6cH*)^dgw=`?@3QB6hSztB7RrfqC++k`sO@$*MuCt+p-CN z6JlUX3+=vjJC2_YByiEifawTVQlO}1V1<)HPS6UrGF-!doB@amYDS-eOQcb&VU%(zl%>grts1PmSh<3}LW0>?VB-i@ zWYUDIiNGXyrCv6aRGux5y9Da5hQD-r`K$W5KGKW2$9KrAzA-33f0c}y%MFwbnD5$z zTX)qrBtB|OTO6S+vD>r<`(?|Ba#!B^DlSU9< z?*0SU?f0H7J$8pDib^rmAb(vzP9=Jg&6VaB#2ERmCg{?CE)^67rY)?K9G0>|uHJYWUXR@^J@mR_I|&Q^$J$DjBL@Yb?+>F*Tj z$tg&9b1~D>WHH2?(29FlJ)&EUW3%0ht45H6wUf<0u&>r8u`Cvuy<`V}d(D*|uT(D; zkstc1V_Q#kblIfMZZ(=+4QLw3T19j)i^Wp-Fx*kbuAhSw6>6&J(y?d2zV@BRtPdHH zrt@3PBVGF0jZyCQpb!P@B&&GNgcf|?EtCB9#%D%!ZEN4j1HBbym8KSP2VKF-C=9Q> zAw6}@4@Jc{HGN;Aw5}yuDD(?9BFI-l&o)*6*@-a|(LEOa68zt13fN&XuVK8>6lY}F z;iJ@#UPBG*YT$pZGtBxk{7J2e4+q;vy zF^bSvBky%{92v-HYZWI+v@F97Q+0lZji%$)^*q`o``KW>3c)8ALr-OkUw7uz5&PYU zU4q~?bR&<3S61$mJI`8qd}XDD!69qBD0cIHK&lEBmvP{_08sLIqk=)a00vRRQ%-C6 zsvSM2&mvM`CTA19xC?STyqs@_%C*MR#c&uGW55C%CAg5N01W)6p%$F3iKHWOvtBzZ zmtpY=01M3!Q9;X22yV|FOH?Mav8z{n>uv;CLEdBRw5W-YR@4ML=|RC)3q3L$yt`9~ zlAD`(>Knh0ls#IcR}PAFOj}$qL{78O0hOLtXpG-z+AxnxzzP>lj}#0%F5K*xsxaW|@$a-Y#kzT@6vs`iusnj_aUj#)?Vx$5TJk4f^-^!U%S`cMnj-Ai;V0VsZw+tM=(G<^=Y zsR*kK*CQFN^Jt^1*MCR#^m0Z#?+qY>&SWM?v9aw|A{JNs>D(#uRCyH;CbMAKFiSLN z)Q|PhJyFeHF6bMalu47+ze$W|9`d~q`~ARt@H0r09e3zgoze}^r>v@@^hbY+uf1YDwncR?o zPl@+D(|53a_G-Cy$jt!wIPm<`Z`Rz6v{zVs`CwCC5*QlgQ{^=6@d5fWWcN^@Cavh& zb+A_|3d>syet~|4v?GTyOG+^#Qo+XMRP;KbL6eG|~ z-dw0GMj~2CA}E^&mj#UjZo7DxD<8@#;PU6E%(eDZBl9tXoM5r zLYZ#)M&SFT-XyX6f}SBeQ+M?t;n}J7|1FOfzR%x=-8jM;UYKInvTK+Q^DIaUx7SA* z6!u7dtS5_DTLv^ z=R6qy(Mq%Vqwm-mPnfA&o0 zo0Jl`%CC28j2uXgqElSatiBpnp6FQ`jf)->QS6F4YByj@i@!$U<>H)oXeJ-)rAo zO;y#jVYXUx^@W>2Ip+C3bp%y7G6;CqOn~QmB3HWDqva_NgQkFUHdKGJH3LcII-ja8 z%I-IP6YZ~#Lb>30ollLX^MG%)xtvVt0o|lq28t*%G%X%mkFDmI;;*@<9$w%hiHuiE624|#^IAPzE<1o=eA#dzlZ}L8EzS1$%EIF3pWN!z7qfo7QVC8PV!HhD zWkx;@@2Q<8x=wNY-EVEouE3U_!FjdNrdF&e5I=u=`XwVE1UtqXS1sYOAyT@{YtYX; zE1+k#6w01M1n6KdEuyNitG}jC${Q;}9}W_2>R)~WVsJ&0VqV=Je^v}Pos=@z;H5~! zrggcvxPN|4d~`B6{*8KBsBxv;x#RbSJQR_zE2;BoP^ud07!YyCk1(-DpRKE+NH%ow zM<>_Lo{n@mKt1^fk5~h#Y=(9vAq<(=Z-&z=M96X7-LkeXul0(q?;p|xTeYPSse))m z1VC8h!@*LcH9ek)J07LqMy^;n-3vy{OxI-;LAuBb<%D1MhX&Q-&x*mpDrQJ-(ks!-0%kt@5rN)@G^y*#*R(8T=y%wIyivebu4g?K>O6vc@X3Pz8 zhPsZSo?TWQ2WCbR)-FeBJM=oVR6>HVvRw6Y#xEYIs@f{=z1^ePqyXY%4@S^y=QFCi zh{yG%n|NBon5Xvm+S20ULGATrX=J;wI|lb?w}a-1piSpfzZlrqm0=(jezQaJ#E|cd zSZG7(^kbajXpZMFm)i709wh+rX^#AdZGDX-`@U zl+t~rLti)EJGR7~>g!r@NWx;g+HdwBel~M7S0}Fw-}lwoY<|@QP3BR;+-DR)(<$%# zzt-5<@4lqYvC8awhhWu5IbupO9$K7znxPgo*i$v=(@RqAV5tVUfoVe|*sYe~pvH}- zj{0O}eAba0d6iajVDrV*2QPsJ0W{#GQIo0{SbeZGva`1FRJ>BlbgYr_VuJm{d`)-} zD8HACNB3#bPE?&TxUJ~o=W zzkVg>ylBEMcX=s~nm)=nrO9&YbIJ3mEBZ9e+bAbIM6q7XQVFu5;-QuP2)fDn35#sQ>QGm~_Xo@z9i6n8{HFe*!PAwB^Z$a?f<*fiY z;QoDiCgZ+^o9+`}zBp>B#J>|z7`(z**RJ@}2dO7(q5f42LnBSl<4Bk+WK#)m2-z8$ z!OG4mzG9+wSweKMCh!CRB`6jox0DE`&OlXL1fV{TAQUtkLaw+nypX7uc(Ht-ZG~cW zx)^mFf!RH}8nxS3SniT|9j7cHR!8#qMB83|jXSYIcwBiraI4sCo=> zhf~B@K?CL2E1}gbTl0HdybKq8o70RgtDlOJ3^O&A7EF>mTEk4~1b;$R#eJ0Op zagVRvicsgE*}EW<&d&&~&K0Xxvb(Vx)IgUS``6#n_DmA1dOkZ;xnDqNs z+82B4nHHGeZB%im9}|_l7y)!Ot(UnyM{R1o=^)I8>PQA^y}X`PBG7sOtprX59FXv9r++(WE!=$wrfy zTLB0F`+_4W-Q3wxZgroObi#Ljpma8;m9r%~XzUfC-0(A34I%iM#=igJ`6=+o`SO77 zdG#bPYPP%0wt9 zSf5545pG{+GMN+VKJ;x%+XZY^7PV~GGw%uD9nhmNb^&`^M;&RF>s3vGCKvWehk-3Q z*c~h-FLcYzN7C6S`9@FK|BMd+m3HEV#iTmIAdN`{zO?W0$tFn$$5D-tV_TVb2MYgC zy7%}V?eQVZ9{u_xRL8~_9I7O;xB6}GBR9$~;H|YHf`9h<(f2#sINOC27NVd4S_FJ; zG4ytN`ZB)K<@p%|(ArTc++LRWJ$JOjTeOP3f?1O&T^GxCg$Yi2Jn-a_`{@>Q7PX7< zG*!qZCrJqh3H(EpY<}{{-vH|?d?^98&O!gimz+>li_PfdQg>a<*63=|vjyB8H_k(S zvlC@U*k#uG#|#wRBDAvsLw3gj*(m046-jkr+qmn&_e%l3b13|!>xT0Px1Y*LYZBJ- z?e$N&fkJpk_9AdxD%Og|O7uJx;Kh?M8u^dg6Bye{9l(p%=5QVQv22WY_NCI>1M1wl z2b}a`(Q=gE2ej086j}JiOb-J&`;MoJKlrxBIRP?7+kurBrO4qRp*~{htC!f_v&<57 zmVp=<#K3#CU^+d}8?GmBjA^LDYj zxS4$G)Z-8Ul)M>!+18?lR8|>gd?=*p8H#j|iPf`O*PN|y^!5OBmi)wN@}meOaK1vR zboc9>bAw`s?&LF;7;ck>=ZWV!f$~$FA#y(<`zmo6H}M~ok{4{=537G!b0i(ng7sY} zI^8YAaHWBE++~cZ2|2(%2Y(-_1yoQ0Fb8eQpAc0Dx6vAiLWlC$OrE$UD8a$*;lrL) zC6}hefT(<@-4zTKeFjknYPU2GS+;!+*R2x7hQ`m75DfPBDSaEU&4O6#Fhp|*y5>LMMyM|c6|0V@2oZmII0Z5n$ z``_@w`PNy;26hAEhj6);$+)g;g-?yg(P3H3J(qJ_7I-^=`}*DO#3Kh_X4SiFQs0a! z>@aOnF1PGuWRT%@l&+pGOz;mTm9;*_ReKcC;k<+8dwk|7EtejK!u!@Et3);4`Z67D zRwet@J^AG-Q3TK+EGn*#*5EFU0VC?;9E~+Co})3n4v-^X)WaWxR0T3q=6Ksd!chG; zbB`xjUeyXMq+(1>Ikxix!P(#CeCiIM25iGL8zTFT+doff4LhVQ?(vB`*8AkcrO$KY zv|#@qJA*w6U9yu!j*)#(MTwG}%t<7Uk$n06@lUG?&)_>!z3I6c*1ri0G_r5nGJFW~ zk9cX^%3gONAmZ#>9{V#ltqHFCNrFkPriSg-e_D0O3_z_W$$pMBJVWr>#Ju$KCGq6m zfh94j;`{t^f$J#=(zH|$Ac3bh->K1R_vdFQ{QJjO;| z7#Tx{IPbQoww6eHV<9rTvtHys3zRa2=znvfU_hC}^y3Eh_&(1SKY>ujak|P05&kke zhbtE#YQ>1{meAAYJXxUO{u3UsFHL1Bv>u^ks_9roX(cB;@^m844||TmS%7g~1^%n$ za?_04h;@23wz5{?af@FpD*x&aDTqEv1KzW0D*V$|-57kvf> zGY`|y!C11lt%mm*)BdCjh=uV9GrJ%W!|<8oK|H)qdQW2m``YyaMuBf~0(QKMNf@x# zWDXauG-4Ja5W-=F%o12afQ`l{8?hr~vGm?Ufks(XYO{X{IQuKy{4(j29s`KmGnr3P z4_tSsoZw~$9Ev+YL;WQ4m}SAO>IJ{_E}t*^|z}|QoMtI3sOq`+8~rt;0~m4Q#cB<q-Z^yUeBP!=)QfaqgL(Lm;j*>Xg|sC`{vKbx9AT)= zAAKdI@xyMNaw?U7b`<@M8O~_4*cG=f8;w4z`G@fsj`?hn6gV)@QdTxqtB>ufi?{wg z3bP`VPdDQ=<~H@euhdfV{Gv$eyd!1V?5Ly-tr)PJJ5P4hlQQg-D5|9NBGLGxu%N58 z!4ier@xP2m(S}2;uKRTGx#b&5mp|@!rnngaLWIXkPqMs$7v3X`JB>QwX6!4*H10Tk z%dTN~HtT#IJ(maCX!32+Htgsuj=y-t4fs1YbVW(_S zCzZ<`9P_j6ZYVwwh}r>*kNPd<4v*yhj#a%T2%3hnJc@X~DdnE+9h-|5CGee=O6(Mo zBPS8!+4OIv;n~Z}c7N6yp`WR+xS;r3X+zhtEpws&0GYT!epaR+Sn}=9t3P+i|57^P z2RiQiO<6Cs60|4x3zHd0XAjr_2ot%=_&#N6znrG=y#+tir=2Y8fmUAdt>#+6vF)U0 z>U92R4Z??a03VAah^9W72fOtJz8Te(I3oH-@gA<{+w|T6)HSV`jy<}wN8)=KBW}` zLkR4zpaNylNh}`Y(yGP?8SU>q;j^8wnP6w$nDwCJJs4l%I;a`8+aIT_gn`ddZ4&*? zL1W3_0r#!h={_%R^1Nr42_DM(ufC#hF`qULw&v8tZ#VpYvjGaS=jFpBqan6x}t6gm9 zTUqN_D%K!v(&g+?=$r7zJndySL>6bI1nh_6qv4pY!#%R;eI;qxYLIj`j`Y02DRW@? zNoY)>my#)RsnpdI3D{=5DZ4M-E5lqn=c&vVUz42G>*qU#WaeG%d{@kMxAyq5j+;u0 ztUa2>E;J5*akJfxFU#2*;k-`e12vhtMW$3U9M>&6emKYDo~STt5hYDb_s$}<-Q@S@ z+Al{7&@|kM-U2;oMIgo|gH9XGIJnIUfC(Fp?c}_Vmuq-|_U(f}7#AArRW;9+TTk-n zf1p^KfT1oC045}(J8OT$Y&UEK$BKw%3TlowPmD$PlM>g*ZRgCMqWt&xwvH_-k{0HG zW*XRIpQP1|@W1>0-TeeKO_auRK|80yOaIP;>$;DEQ!*gve$5;6z$!(rL*YyC8t$F&}-nMMLBey$iITy^yP z9OPyR;5lFgWm5qA;pb@U^Y8Pi+h?RZfYWQhI)DQJvR1(Xo6g zY2{A1?uD;4PbU@=P2^eki__8Tcy_Fq?4Qg4tqlZzaW~-O>-4knDS_;y3Yl0*TxNh8 zr^!A0@%8uDH{7RAX%nvmLub4a8*bDX@YI2PsKR0>SA=V=)q`c@d&n=W<98EG#Qcd-;*vjzSGUZ+h$b&NcF-R$YZ(>+Fib)*?PePm}is@Du`2E z)&SMl2;S0-H>-&{NY_I7a(Cw?&|baKm4F^m`yB(-pOWW(Pcj1=Nh$Y26p?;! zsTnO|0YvRwROVl)+mh4=#Cz6(9Y&TFF|luKH6#nrI*~3XHoJLGC!td>N-BJuyfVRD zZ{x5AFwb?KnT$Ar`nmFE$Z4R$w?+u0aquIsO~V5J?PLdhfJ)`=(m(hgXR0?nD=}bHnH3g2-#)aiofW!)^5z@xo{^QKDV2=)Gi>Ev4I|YL& zVM-SgXh|n!P<^Vcmg}=^RS{AU_RuS2F)c9gbcW z{G@nWPySVHLHWtM6uOoOZRNs(`Dq34yaBPXK43HlksG;_80`KYf%RHU4-<;YzHKy%~>&s)dL zEPG91Q|+#BXx$_i;Nri5>8fwOLbNv^t?L!8%s;%Ij?9VnP{@Ytrp7&SkSrB!bPq)eTSKpMcbk!P z1Ynm2tAV2qs}FX)7aeawZa)Gf$z~$WVx)jkLLYg^od+cDuBA5Q^b}v+r`NNdxX+aG z_kxb&^C%GSrsbgZI~TfUqs9F3wOD}-02->NTq=Lpov5Sxu_1-}BxyNY7{zRi8okfZ zHir*h8XEmOiHe}3r7pfU*&@qJ`vv_|uLPXvdm=FossEad*l|qqFP4+9B z*IjO7_}-)^{erBw1SNMf(%%A81S|B`6Db@S&Nz$zy#r0!zKVM)gm->+Mu7Da(?*v5 zWHc7QTMNgaF?z>@yQL={kJl_=g?eo2>Bav@S&&X1GWoUdLZArUHqDhR}SK-^4CRmt7e^ty%$yFyk*&DNdbf zNi)-xA35c@Hajs0*nO?;86Mq1WlbN!4p_@7Rw{6ez3ubV+SC=tCudQ6eD+Nzbwr&$ zupB}f>~!RGhfv`y$Bm4zVUi7C|DuDDiJ zIa$#X?lI0la*=O%-8`{jPmLQ&UO8iTTr{L?)8se)F!rv@|0^8dk zVq<;}SEOJ6J(W-}#YwKlfX=ypwl+SLpXEVmAtnwXD%-huC>7GzQZnMN;2vu?J>(dF zecC0{V7ID>SAGugVV8q-Z{#gmloc+U$t7F3O8aQLf(B8IEhT9Weg1OVRPQry&XlJs zCZqjJmrpj7r;Cl(!fAx{4s=)vozPkBRwPUqOTH=R3G1B_M`^Qo>>lne*NWNlZ-?gT zzxHC@#$6k@aOc+YU(mHJ6Ht*T1}c)d@((K#q_S;t=jb2T3;Ep2iVZ?!RP;O6^Dv}C zgOO{*D4UI+1 ztH-uBT}52cr8Uz?)xB#CsjXpD<=w75zVf6+(zy-4=jMjaq@4A2heS-eD@*dd*gg}* zZQU1;_Y;^AlFhmwApRGE1rQ(+m__nL`Bu0+qIhNdB zO?NJImS+a?f1v=%oVPnJ>BVT|;NzcWK7ruQ4eBr4iI+Rxm<;(`_|p=`xz_iC>Sa2; zBz3mx+}gtW+PGEL5rD!P89MEoRGz~1)z*1XU4XX&6S|M?)9$%hQu{^xTluRek4*A+ zbmY{V&c?4F78q?t{l=bB^uI$Gjd>`~?cJ>s5Fqv+A%()!%3nSosWgpIs4W+?O#z3* z>BJhcZ!RO?XapC#NaIV zWEtYF*R?aL*7}asppe$i4dLw;YWTk+@4iHPRD%9#>mCa_Vl`pVH~%HrDS-)LKXWy6 zO|}SBMTE}>yh&)?WubV*9F~*Gw=PBqYJ-WfFH?Y5Lx1(IL5=^|yudr;vY}GtkYoVrQsBKYI*HM za2-&t*EyJ7;nZEPYL`H_&0u4CEw07-47M9U4zu|FUyy!=ZsSxe07s+~R*IvpI~Qd+ zFi4g8F<2mf_M+6tnMFq8cC?1-6Xp!XSxIBJ`=Ow(0$;ys+(CU(_pzETkt)gtuF|+LVd41(t%~IqCHnuw!_-1SGs_;<^f>q`3L5H|sZK z!YEs@G`ffCaKpl7$M0q8^P`6e(Ag62kEh6rP27o;!zwKV(E{Ox1?$-b9g3;+2JSQu zqNp`mR+{BhM1l11D832Xk`7DO*C*pYJsEQOHBXedk`V{R*_j7geYDqW5@O?Q5rPKS zvONDNv$y}+*l{W@z{}s2A_FZlM!MZEk-xq0>5(&MGD1h^K>W>i=ZT7)ae7%$o`!=R;so>24DKU% z->_%%4RNJp&2w)!<9E)ve0(J$`kViTwuHWKXJ~64`zn*yWvUercrK7}b>DRZDJd1b zfa>BRDSYkRsmWs;DYn4}`3BP%W#O=t%y}{od*^o zEFW3D7bZH58V~K_T^!CCsmLN53BK+TZol!RXzrXjzw2*p*?`+84h5grUAWn4(k>wR zqDiW!ubvvUS(S9{+S!ai+Y+cv4dOIX+`Ut6q0QDG?Ea67v~Ga^lW;qFHs$pxG8HH4Q;qz z_Pl1~vXH3tD~l^q@}QT})dvO-$gQ_E7S6M_ihEvsx)b*O;O&h(!_MPB&sij=N96HH7KeN@*eue9&# zRFE_x_prF&4bin`6*d_0-{yO{#NY!?AwtL#KtYn#JnO!(uJ9L$9>_7Qvpc_lF>+7hf4*Ox2>b z-yXdpZuE$S`gH;&;w|ZL<%F%d4b0lJ8Brst*KsQ57U8Ka<@qd7T+HlX>%3h?(mJ`&bugZ@FW6F_kxk zDt*q*NdjYF(*NeM8orqHaNoG?tyG+#<3`QmK&-Qp-!>+hE6_Y6sosD6?5pkT+an{x zO@>y)%1u9XbzO(%AtbqA-yWYGQ1WLr>HxKO95O?V@_#a{&R^Y}`Ri$dq1@ANudU)g zN7!a~N}tld-yi1DEbvt*tC>Iqoy>nbjryr)Fe8aRa^ZJ=zqsd|po(1h^?l+IHxRx} z85vJcohbQ8zxL!s@rcnGQxoEM-Hhm1dPcjDGW^Na+cyjgOL7}S&|lMl<%IN|&x57d z8c+B&nF&?Wy`HptlIen)FJ$XQC6i`N*t(oM7ZZZ>*Fk=)YM^O;QrPyLj_h)f?3xYJ z5jgFZ=rFddb@bq-N!@c+S&h!8oEJksUtd3RUN1I4Ql06NV}~5n33#2{>9^(r=M27Y zOU$0Qo#CXQ>Z8W_Z~s2NP+{#zk*J&tEI-~*^kd_4+}){)PVLD6N$rgCycWv2+~nBR zEr^<~3i~i`5UfyXXJ&-?VRPe&^$nT&m;XiGdTOqFE9qj4<`FRF&5XnN%~}386*HL4 zYXQlswQCW%pGx0&XU0{Y^~`~&NJ;6rZ>!B>e?!hKA+;Me>LRv9hOhZ0#i?FwOZik7 zApPdk+3R-SX2V0amf`*%k!qX+qe{(2-xn-4Hk1ELy#;fL(CtKAkYiclRG>n{9y@3B7g#I&uT_Z?&`->+Qq|oyoCodb^&kLmO zAh1-z|MB$QVNGq#*I2P*L!{;^C@M`sij+h}sv;^XCypa(vCl-~r>fBD%H@l_N zb&w5k2fHP$PfD*e?qrQLOL8Ymh=%bn<#R#2OLL~2D$%_}`PvSl*n*!)4Z`DlToL`m z+r8yr0{oS2G48bhsMU$cAT5=Hge&1U z+v3t?LJ!|ylwDE<@I-Cp{JQb{&3ssA<(B}Vmw6CC0m9k~C^Z#|N|d_*AStkl$umsY z#1P887;Zq)uu5fj5D%7W>Vg?f_{6dU5lzA73Q_XyhSjQ-e;9OTjZG$(C{pgRf5ug! zhD$t`o77AvMtf8cIdr#FKIVsK90n4HaH>QR+ut50K4AJ&R_UEWug_SeiqBvJg-!MWTe@fvm>#WPPmvRpv2;+CQY z-h6F<86^s8xgCvP{$1p*R^q%6QS=2zy$WSQLIb4Rq=UCMQZ76pgd&4rZB5Hjc8ryP z>!?&2{DE8Jg$C^1(kn&iKEA5)r0EO$=4?D!k`%-84I!KhgExUc7z$jEhT z@5OL7Q@udJ&9MsU@kjGJQV;;zcvVqDyYPoEis#%~TN!;T+{!d8~jhEYiugMwbsW{}Ij2L@a( z+cSL41qyV1sd3~Lvr?<9jIa6&*oF8Bg-p^PzL*lx`)~EL62&gRULO$PH+tJs2W9W5)+r4@j$*1@uYAKSeS8Q{rwk^=r_nNg zU=#rDh|>j^vCJb-^tlnTpYrd|$&Ym$&W$?NS*rO<^EQM*=Gp|yXMc9?dR*(UrJ9yO zWYkv%1!2qmiIHi@`K$oB2e)uIoP>LvhP!?rbEI0%yvb6$C2QfwQGC*;=Gyc9=}!(u z{)Me+J?%!J1?S+rmPy|x%Lh(RmHc>X<#XCX%%ThTbIA0N3?`Y*2l-Q zVyVAFUl;~vpY0@saa#?M@o~j>2Fp8KHT#FzO*V@U7A;#}kFHtPZF0Yd=ly6br^2{)hK6l%D&ww!vJP1W zo=>i#L`n7|j2v@aN~mK)=fzOFUzoC*!+n$^;gfnLb5|2%Up>oRvz`J&4?19Vw~9t% z4B%>}Snb3+}T zI6RvJ_G2D8B(7Ez zOGxbI5CXBGlXHsL)yq zOjnd9?l1LnyFEx6v~bwC`0rrJygSk=ZZR~x>m)Oq4qaH|v=&6c)=)uJ#?yu8^;_XA z7u&3btcLFt4oZ4`x~3xsy}(+|CeJm`?_rU-1@K!C_Z(|gAJ1g6*$Oe)uPtYLO6N1+RaQ~%}H(M|3 z&ITbdlE{8mL1k-l^bBYUeE#rj2aViy%vpAnDG zgBnjlAk5Y~)WOs*R<5e%C#=Vt#eUK%Uic@yQ2grmLSOTEu$tuV0}SJ#X*Gn_I?<}H zGRNRaZ}IBjjO*Hw((9(*e(rg{s>Z)7Ygid;hXl!<=snPa+o4~Ra7Xol0m(apS(Ww!;~|NBS6h)pi$CqJmKS1H6vcOUP4^ zYnTwb%ELt`H19WEAKPb&PX6bGMPk-oZ$60FGWoRTjUt3j%(UkIlR_%)pC%Mlbra;T z>n+H7H(i;LdRG^`>$jYC6QP{coD$iTCI8OmgoWv?OvR<%-C{fMKeExg{*C_|-y|Qu z&LOhE8;j`R@P}g*%I~y4d`bwFkcj5i6UGOox-O1ith*?ud;t-{j9RBR+3xJ)D1US< zE{2cZJ|We4y4s?@P&5AK3k&aHsVr{+$s8tmM%=g&wog;$^Y0+VQE{`=$L6%>em;&q zYWU*F!%~?HiDxfDu!78HD(w6AL}DIOXo{CECZduYZjgg!yefY_=h<=L+PPGGkaQLs z9Sb{#P?!33ulXo;I4?D|SI6%wEhKs`tovzes>Izo1;sh!6eF^i=)L{AY2OD*u_z8GV2# zfx3((5B4?JwyvJZ9zp1z!Z`P>j<~_gb$6Sbl{wv>qCtcBJzg7W4}1o7r9npcTX>i1 zn5p@Tt06vaZn^3@UWa_Ix>jFjujlRg@Gc0sa#a1$L(DP!wejGHY2C~j<3oD0R=*Ec z^+?}Ok%a|YUlhB1&ZqAA&ofbiOWTp4MD64i^HkwPaP1?18#}?{Q;JK(uRC{K5Vk(@ z9B=;Z`!_zbfr9%jCfHYv<`p$8thA@2Cr_7|)_-NAR898$xr^86($bFS97)A7=4o*Z zG|aIkK;h(1Te`8=_?SUO#p{WC(M_e@(>Wi#>hJ3B&Jd<>9u+Z7w%|Pqnpz4&C7w4e zQ=fFt>LxH0Ph=?VVK;u1Dmijx4kCoV%tTqNuVNcfk*5fb>vNxfb+<)GCl4DvZ+l!L znwsHdPZUeeorXk72ojhA*}+F99$A@{r{4Kuf9ASbpcFoEa_!r9X|3!0%EfnjV_i+} z6;gCl6cm>gBtKR8M82}@dF8MmqFK+tUB&inYEXu?tp}73qu_mBYYw%q!*r5fmh>W) zM*Zl=_XdeEG@s&i2Txt73>yu;r+2{UpNG5O7My;zLt1TDyn*s6xtxTqS6XK@i6m!F z8%VttjnO`S^5#t7B=d~#4XyYqM5zF*z<}qO`u>uVC&Z+y@om+7-c1P^$9H^R#I)d5 zh2OlogFAf0tzBMkAtYH|Q1Q+=sQ-LM2{tfkds9C<+*X)eXhI!is(#1I_iQdY-Yzyf4B9BIuMGX>liYO;)?DG!PwF08 z1W?X!oU7lrDLeka_t?2&;xDCGolB`t_hv|?Md|aeSC`Tro1g2)0F9`Dm|P zNZ{Odh&8M$3%?y9%pb4UxljD{HMNB(sz4NUH*r0gY}ixL2#MPH&+c1hQ|I{?LOc(w zCaBNdxVD?G5S<+P9Tk(N_o`x5?>kie)fz`5f9K`BfA}u6(W);&Jz^F0Z6C%yGmr|c zL0ove+#z6AVOe<4#yx#4EW}3ayiHW{sn2H><6J#dvJ$+kpsjJi^6f@?&1uT9yD3>) z6Uvvozg0YQknp}ifg_pdrc=p(_$r)UZPXmxYXh}t6L@*}vhTmKLBq^otOCk!iSbFm+ROvkmtqr0ilO=V^#@vxs6UkX<>6S-520abF+aa zc`rLkE9vMW-TN-pIh6BrJ=jzxn{D94JHb9ZpxNr7E{h^B7B&|TQBzpUt6ov?y?RZ? zN41ON9=lA-I9Aa*B|HN)s#YglXDBnLR|l&qaHd}HV*9o72C=`&BxE}-rv}Js zSth?XtA!~oDjvDizCIivB3NK)@TgFWH?t7t%uv@OL@#+rw#$aF+(t=TK{C(MXjpD7 zYHOq)J!x`E)6@(w!{@{~*8x@M1BwoU$J)8+zAIxkRd~#g-nE>W*4;k^Ns)te;B zJ(?M1m{T5TtRxDvla}|d$2=Y1#(fYBeD;{gBi`hk*vx9g&(3ieb8M58rqE`V)ZW;+mlp=i9DSGr^&?A^;INA zzswdghAV7Ya-qYF&N)qr(o_Zd7LW){iLkhJydIG^{=|?9aHKW!o-)LKx&S9K1QMh& z+{)AW0-L&V(=XHc1fT+txmC5W!TL(wo_wYfG3AZ5MpwWajxcRD|0Ko_O{qLZ{0ELF zuV2~@KsgN!h$vwXsd|-B!EiL!tK6(lH!1@-h*81}K%=UDF$-nG`Z>byr~;A6L+I~7 zI*`6uphxE}o&@Bf^p4`XpalN5IuyfgguI2?y#{*rpj$OS6{yk&x(AFo_jc4BXs)^p zqs&>WVdWmwVJ5p^(`VKxa`;lFQkR^3Svp_?!)hxBEXdrX1cuimQRZ@y@r!23RF<38QvOVUDy92onIJ$Di zVn;#bt)WpB6>?Uk`4qAj)#;_iCRA&pW(`w#g0W2(cmt4&L{1n6Ec6Ph(njJmaD?fV z!DLA_v15{u-W(`wN~FHwH*KDlTVkZhYV- z>pvl{zn?387T(;q$X@yidwLGeO7%sCH=&rDz8%qJ_$1igu&edjKeHRaew?rmIb%E# zy)64VS?tdTH`VtY7L7s`TDK~uq( z^yXC~g$L&eaL^j@%Rvy;@!{w}gYjqzRzGrbEI~%b?X`~Qzre^xU1^*P`-Y7y3bywd z|KSrW0;5_o>T&>Q)(dj9Iz-L~5}^)x(}mNnnnbn!05nbk+iMVz-Poy^|FV_rf#Fu{ zOO;qq>*sV_p!aEeVF^O6@BZ}x$WVqSM-$baVJ_eD!(pk@Xh zpkBFMop&7YHlXaKq_FENkqX-#DOyY6{A(u>##7E-AZlxavmh$2htCG+HlgG~#<%s~ zFu7dh^RV^%UOULe9z;|*z(0SFEUclNEId_KN%dbb{s(O_tW&jTnpmzAs0b~`>Ad}b zxNgq7tw4kRgTHbd0QSDB_Z?Kl+2-RURM|?9jx{se#r8w_-?L9qSV=fk7e#%vI|F2V zZ$WjZlF~aPmV2{1Z?fAEf5AI@RPYbqyABTe#mJ%fOI^jaLX8jwNHZLutc?(D67P5) zKvv+~+8pEIy}N;ZBsm4$b4Rg}p)zrbF9Dj!R01H`I)3>C6Gnqt^nPSr0eoedfvXo7 zuryP;co-75(jZ>_gPBMx2lq@#a_c1j(3lztH#7LxsSU2r#Af~BYvP>NYr+e|>BpE# zuX<%?n&1j;wo!T6t4m*gk|)SET9_Ym71k)1HR%_(Zi%7DPitko_**^idL7(3+%hJ> zJy0{(lB)5CFNF}HVL$D4NPz`>Y=oo784KJhkHHSu!hVx;((RM=?5+zZPL*A7X7%!p(VlLlbAf_zcjQ|LInEPhMP`m(Kx2or4EElQqr=dx#Ol zi!m#PEy_nLevR>iG7t~mF;KXmup=1vaQ!CBT!H&FI`>{@XPJE1YZf61d5T4hOn93?W{==0R(lBaTk)hvB>%t~;e1O)ItpW;D4X@D94i$U1AOdAY_8C~oA=PvBhE*4-BMud1kaLfK2L5!#bqf_JqzV}GK*JM@m6lm>5Tj5kfy~P zA^f0RZe@B?Y?RNL77Jvm94>TX~>q z;U|rXKkvOllD(qJQkq^Sh`YUpE4ql6b4OOL8b<{wUAw%7tdod@gtXx>1LR-4QMX8HgsId?g~OU!uEWPKsNM1Ibu?AR+F zgN(IXN4Ja{>rj=mQv9)U@7ZT}S8d!XQ8nZyJM})Ygq@m|zU~gHj+M(rm0V2PK_bq0 z8ln|>eJc{(t!*o4z08-Dgr%Wok@2F<;gIs!<p-t8s!`sSgDlBH0x`Yc!-nl_HpXdB9QzHRKFVwcKL0kQ0sHs zYcU%^zqzQn>F5yN5gBkn{^66f#9vsSP5yxXjww1thVX3vsiU07+9(~nAp50_ij!GZQ$)HFfnP+^Wo=6Bgh4bhP|7_1GT!lp9)do4o z+>?XK03EU^g74Jjx6m5YoTm zXZq?@G)f9s^Nhzyq(B$J$3<=T&48YNSCch!d}Bjw{Vn%4a@ryv=(8Ru8tN&hIJEv*qV_jqv6^Lx_k6*AOGX@E_w;G5; zHSyacAp*xR^0i@B8BWUcf%JH+&0+kfy*t6+VCq`Yh-Q0#K&{pRjSs`HH|RA=;XF@m zv;(#+?p^9Cto{1iU;f!2J{MM4pvSmPzs*{3U!>m`m!`~ZQ-ja2@75qX=q4+meqvT1 zdW1j9f~9kpE_HuD9H?MpEfqsU(k)JO2tDc>o4}+$;eX@xe}NFO)OvFx z+|IAT9=6tNCGLk^lR)~!QNGH$$k~mJX0wup$8NA&hA?0%^HoK4l_t;|u}u0G@!8Hi zRru7ex16>3+AuY!-Vii2@1#@*Ezfw0Y;!KN@a1?p6wVeLkeoY1iPEmct@9hcn{#*?F5p^gGq*{OE?PTVnLKza&OXVW#`9%5?&_2k))sqC0|FS} z^Pf_p=J*~SS>=%yc}WU?_ypnCIS2zOn-gA#_H+y6Z5Oa=7mTGDC>7$2Q6+6mSvS+Y zETzI=WUD6#c4ZyF;ktP3$V`iiT0x8Xg#xjhCo8c5qhmo3*AxsVv{nOkiuvJ^(4fM> zZP6$JUYBin!qgvdyPIyLsvu4@L%Gc3rqX#`p%9b5E9tGlXA#^xdj(M))m-p|9=+#rNu`?3fB1CxS)}Zt8#&hg zRnODepRdAt>rW9aXgr=OsK5WV)UBYM|3UV_Zyx_)H&dww{x;s(F*sz^5XL+J?up^P zJ3U)6$QLAv1E##>%3?28T=K@jKYahNowqJNZMw)24`))W_uz2{s~V*{c7PngtIR&KFTCR4C^5cY)|ah&(QThk z&&@CSvjg~Fm%AE(LRCtD@Al^}FF=d)Iwbk4|K)KP1+ZJAdY66>SpN7~-`d%#o@c+3 z_H^?n^L^i(uD5Se?;8J_tS>+J#$!CLvzikZy0-7rbcuCR#8!H#|5X>?iRP@gGRGd9o`HO06&~(A4>I)9Ry; z34&~#RR=$+iA-D=uYrwX&kP(l5T4!7Sk&9|+St$y9Dr}fg&!#52e5~+HrmswP49!8 z>un0oV*fb^vgtySvLDrI`aLMYNQM{e*l0)xF|e{qo=|de(oj+p`N!zc%>L!)wsVJ| zfTR1rQ_RY;d2MC#*EANNFbPyO8p6H+UA#i(n8J-?P$yDTykaV~F;?J;W7g8PqIH&B z!{AdBsIf(xzVA~MjvDvp)OHr6`0uHrZ6l_=n)%%^rWOkDX+J->gRF&p!V-?FxXd%(PAsB@=n-a{Sck250@wc#wRYL!_ zq=m!j5b&a3{w{i>l8TBRzWeN6 zl#pQ?)W1Kte=dvE?qkyEdSA_kymBtM?8m*Z|2CQ7JR2FNZ-|Y_c6M-Z2UP zYf=Ne=5M1+5Mg{XXPtf*jA{1Cmn)q3l)NM_g(NUHuVc@%l9k*taq;?4?S~ z9SzPnnbLpovxk2NZf&{uwax1kPVIlIrG-fBL3My?;-m~Gni`zgyc?tRsNtU~s1@iY z;e-}7V}rBh6t=o%P~}@uFlIrW*JFF~SxEurk?o?bcY5qjESV>=VgG&#wb1+5_7P>V zLLAm#+lq%D3;tIxvC#IT3~he;E{eL8&m~N6>_b&4WF(K{R*!FNum{{$ns6zq#Pazs zX{4t-L^E&Ig`4ym(_b89Huiu}DMXd|+bb_da=zCYx zyXG~(W`p9ZsSCnox_ZiBFD{JTjahu~m&(}*_cGo@q1Xe-r2T}BI6>8c2j8Y7@a_LS zO2O>VMGxJ-|CIdd1qm*>{LKwlVuIbi1v1*10bQ>*wz9T+>ky*6zk(dog)iy}9RZxB z?6wPRP+lLWqxOVdT@MC`fV@5U1T;fKB#wmj{@t*RT;{9kkMvB>KYS7xXYd_Ie*$aC zIH!0vgcdb4cV@$wn<3E?Z`PjxnCD~IaNzkrd|L>58qMz+0Wbw>3&@;`33MwOLd4_%$U(;b<9L72SM!Pv5Od$ zY5GiXDEa7IBlLv994E6d+QJ&fVZ;A!lkj@UK^~$NoP(9u8}hM)EzC*RM}PRRz<)94 z9>I>{|G97+a?ljB28350y&x{IdGNu4gL3H_=DV_QTABQ}&OFr`_9Bu~^LMvK z6Q^NK=a#3D#!!Mg1~|PO$T8j-NX>Md5djF_@#Mcgecp4@u|Vb72^x}OeSb4l46~E{ z_wsf4d&&Ma1-)BPsbG#m$8@nijBTC>d``tQGiK)3P-3$PnzyG57zYWXTq+*EX<;#Y zD{}QZ(-(ocMisXWF9R%O#uoN@eYDSub2y0fc`;#5@~sAF8YSjG zZ}dYQMgrgG``Y|@RmJ~&4m6S4+%;a3;B~IDag>mi?W^)bS2Q+$Vq##vY8zj7e$H+2 zJIp)EVqp`jOP!WYlikSBFJ$YJXC7jeGwp&}aHJhGY-VcYX7TBj+_;Cj=_AHl zZcqz*=QO$4MLKtc{d4j%m~j4I^s{Jq&CCi=&vruo3lX9QG01fqbJ_eNP+!}p|h2RLFgN#?@zG59zW{lF`C3}mrSi;-sE zvhmEI7n|)iqb(TVZ1}Lg@w*P=%Kx7HSyu;PFYYdodhCGD-Up6jPUf3Q z&^yv$+9>xUAO}Q2dU3LaJO1x&AvYFza-`W?0tI7V*Y1=U(@U0(sq*iz2IYajcXn>(ZLy?-wS541*qa9H4vC3RccOpc>BeWlk)72nq3OtZsh z9_=Hjdg~7l(+rLoRnmpK4+^Y!h`91%IA|yN_OD`$tz-Y4kVMcVJQ^>{%%=+6T7R0E z^GN%#d{vv&sdnter{B(Bzx)v8PlXqUUtNbcaut41M@wQpHwKr^&EMA7=ETs&RwFmHV&6!StLx`_;ocZ(yfJT^;LS`o$5<=aQsTjQpCvW`0*KEtj{VS+v`dVcSxypS8f z9uM8U{XFBO{muUc!gC65P)G1*%{$Xawj?jGDaorMi7;9VFH*PGb8=EajI+yR~NamPKJY>zQ(w`cB0-@tX$B<1qO zPhL^O?p#MVhKVcOjrkd6>(5HVH#6M?KPQCc+I~aif7S>rT=SaZ9iWv~T1yCK)CQ#H@mraV50eyp4>sYcpn%BbI7(`;Mck|;`%Q~NJ)Lc^F^RPE{3 zX92ezs8wmab3O8p?i63$Id73NAocjJR^g`Kx9snDjo##iJH5ri;agi(w_t0NhX!#! zAg|3u)Nci3LQme(`JIkauAL{G5C3O;3CwapPaApiZb%YQ zL0{36H)Ql6JnfRs!aXQT3wn9+ua3k=Zc=GbZ6s)lKZn%rSpQ$b8{ZxR1w1`4L_>jgLEOre z4>s!L&E-!U3$IKFDt3GO`k1T9(IeyY=3=~nUYn7#iYvgv@P%2mrPYB>38tVY#B%mg zplGf#_QM$axpj z%-g*CPx@K=+mCT%UVmx1Ht4ud>YZzwj0IIoxA*$HYg^b}$ZG%rzShmyf#aQ1Z-G(j z(wKL7qYSTxDqk52EK=KR1>@h~lj{aS6Mbw`gz9=4QKX*+7Bs^_5uHkW!%|udHfBie?C64Mx(awO9Kw$w+g=IQ%6}OP%ciz7j9xJR= zR$NjvBPxpYJw$V$n?0tBNo$%!&D>eeCd8#g4&N1epi~lOrd+ScSGPUDe4LmnF!sq0 zpXYeVrepXx3U`0?P+QAZ@yVBvj9uo(g;fB6*=Ai{5Kwfsw2PZ;glWFLnoH#f9v0~s z>!-705Ryqy`$6p+KLmi@ng%nc1DzrmpU~8zmaRkPC@<8B zgcal>VYaByH0J3yCLKCs?)BNSO)?~`9tR+{3?Pqnb+zaguFs(wfougeFBvbk+K0j? zz5C*sTTX1U>R7Q_@70#?bnv}aJ3XYti_NDPqoMHib0T6In&#O!yAaQ80HuD8u_A?A zA5-*T@c@gnC{7X}doRmx^90!egsx?F^Yqtdg)K{T8}AO)FW7go5cL|KsI_Yb;n{j? zsP36nM(hkP#Jn4dN{)0gW)%L$#J9RSXUxEyS23(P__Z$B&p>HnT|kJ~MG&miqDUrm zuOmVn`)U+szQt&_Pu_>$g!%##Si6)Fp`JbPi2|niff}aSEuOU!KBr9js^Nfw#nZ59C{$~NlPhGtd0AJkGr!TXZg;65DeNIoI1Gei(U)w0`>eBt|qku zeNFkF46U2RlB#zh?o$C4&;d4~#(K|Y&LanD2{;h{`SN{UIvGuC<8}F{CwGPrmQPR+ zNdpFcS%@iDr*}(7qeg{US=C`3cJnYsVPEA*m@_gxhYpLbPXFmg+uaOGa%bpju_CE0 z%7jjrtw~9rs*1HUL&P+qzCAf^DQWa$>!yRtqa5V8ThZ4?2d7{`)(v0jAS)B>A1aDH zfr5;cxF$khWI^&t7T>!~=1LayUSH!+Kj)i#pG5_xh$JC%Tg$}2b@r?w_;i%SfJmr# zN#-G|%dj|=)spDJeTi$3EW?Ersar!d4Sfe=h72IKos}n!vrx(*@2n$#^*#?*vwvhV zx5&uX{4gtU#wHqI!*?T(ydtAgIf7Ra2K2lhmSZ3!dzB6uB_Ukrv{> zNm8zVgqbydhs&;FA#lh=+oS_eyFS2%r~MK5P7Y!HfcB^6v(KmioNAjL=Pr{&8>uavsphxg1g%zS=O=5Gz8`0Wm+@15J(AhFhI7Ynb~Z)uO3|Q0>7J$(_>&a5#XBy%H(8A&Dt|8ni5<0;%*Y z7$@-StrI8-@`QOSGC&%KXCc*aPl^x|8}xZtC4KDb)eI%!o+;-z=(mgI3OUYZ`Z-@48H z*S`+Qkl?TTkc4dEfAO2nTX~UhYKS`a+pci3E_>!;ai_GvJxyQ46jYZ|)ezZ4K8*01 z5|VDp5-0R#!)qCVz2A2s9UN%Q-UoMk5~@dGDKtbLGN{Oy2FaQF(wm`hI6gpbmZv@u zVO;$d5j8J8Ubr>l?t>EtNSoo3KUZVNxmzW!o5nZQB(tje91iOFTNQYCO0teWH;5EyC)$z7U7AljAx2)}8NlMB73UEPQeW%S z;+|i=3teDW);N^v{@mMNP_;#EA=eo*L@JBU(2v2;^DNi?n(n+K+C{yIT@vtiv@{#$ z+o1k^?+}NODA?|7My{tH04)3o?5&<&GCQW~v+Y)%H4r^soVikG_-qfEJ=LNFM2Ji) zg7=qJDFV=YBDfUMr9K|a%H4&@Hdk=P$WUx}@ChuD2~ubqy3-u=_~6`6NeJck#(Dia z-+{Usk?`6e8@Qa;Fp62ffk^oJSxyWtKuiAqRFYJnd`ihA!l2NLB8kFx*QP z8NARu!->1PxvXB~D{KSxN+3|%X~kjfaYK#{t$+d+ct3Y&yWOJiRo%Obrzt>e#r$I6 zv+$Kq?_sT03?c0Whz~4czDP8~fL#ol>qyu`*8=GKHm`}MBfEIbruU#OJ~WZhnq&Tu zx}t*#b6y7_isla=Z$VYXV}2XErxR0$NH(8`rwGfLzNgCdL|Li!^IYzWx`r$EJCqpE zzn58oDKyX`yX33!(~|b@x#M$n#lGqY+Uj+g+_LmecDfdee7aaWj*w>?9;Y+`-t|ZGU@G>M8L1X{z4BQ{Lxmt)Vp-qM!9bE*652v zJNL6-hV;^t6lW!ad4U5NJsZV@SXg=eqdbnL%|4s4M_Rlw!2ROIxi_b>= zy#D0+#3t=@q@0P?p~HKGM1HYv)5f#(R3j$`OjgJWsdH;%mGssoV?Jhbt8PvGbBTSq zHa$PbSV>z?Uwv*ADPjlxb-$(*!Nmy6uknM_z7CBfAqoib>p9BMpuo_fX!`FIal&DYvYG)_l#DTt+;ZS z%#@jQtGZO(M3I)D0Nz}vXXXXZ?h6kKRVn)P#R~2*Fsr84;%ObZE@-Tz&S0=2Q#tmi z$HX7Lam#g4F0y4(w399~0BGA-0T;Xq)v+0X7+$A{Iz7GDo+jVDHi4)p{-;27En6zT z-MRou-E4ifb4+n$ybzXA_X%hl_FN7&*IVE0P6;pftWMKmnc`P{)?HzTHk@0k({dZe zGs}^`^>$XvkmGq0RK3_w>gL-jsh%CPQBXY;>o@QeV_)(uub?HzmR~|DVv}2!pT0Vo zTxC{ntB%Wvn3IUCMA%XNCbhcI(Ip7vdhfc0wHIAMwjc2>HsHqa@n?m>2 zU&frz_c;Fk(AX96IK=7{CVr52`AQ{eZ2>)(s>(ubx+EwyG0v9aL+hGIq@5SKu3m`DMp%o;OG|;sO&eV*aa*gX=na9^YYl{Mm!0ymJzh-1Cb)xtMXl@K zMR+G^%l_#0i5?1guW*!H4Pg|9AGBF!gV6E$LzS%-l~yiopkcTB>bwUJ(f~KTByW{) z7m)`Gc(N0bKQF&9Qu*93PX|I#c|i`ryKXGJS)qZPXZvS$pZIi}Y3q95D@lVpG`D2| zjfKt(1o;waN1@ACr%t^VSe-2;=(9V#hORr%v{dVQ%3!DYKA{AzS z>x??_xUKLLuE}s(uR6PMs_5+Kt@=1!KER{=_5iQn@4s%GeB#3hL3!$@?>uvJ9=#AQ z5gjt`K&VF_BUG|^#40>#UEQ6VjJ2n5Qwq^tYamJ2{Wisea{}=d>o46gNH0gwv<#+$-%ru4H9oH!>$n~$y#C6I*Md6oGh1lwv?Zm=aGxVBi z(hC4tJ*uko*yvqk6Vj@R{q>M|U(9xt6o0uoM2~_RZx!Zz?Q=LyG7ol@pS&!g@g&zcr9-~a5aeZ zOb;9~7Hx)KQ|I3hleCYkeQhkeTLxWM>BfIQ@(F&^1@IRuZTh!LTjC^IxC`T>)-Sgb zKri|6@}v{$Mbq-hx(Wc%QSUr>jTOl@E&T#H?-VNl6#T3k?LKp7zMy7uMUZIuiVDWz zQN15=i#D$_*n;O!6CzV*KlsN%4VNmY3nfbPeij2y{apjJcF~mI|di$9d4|^EX-;R%lh2VOzGftIs7i_m>w5-Jgf+}+6&nlaE-Ci zKWHFDK4-GN*~#A`a$2q?KHF6_6r&tmf^cm(kcFl>buS2_rl15Se3od*xG;VI06u@Y2CGMU}0JJAWOQ8 zTZR6eJW7LqplaFKC~>N-hj!m5;-eQl&5t0%pGqQY};W*9bjGuk9ej-5o6+NSuNBrK~yGF3>zVNUFY_uTf?>-V!%^Jb&-5evM|0Zqvv#Z!!tIE5X9pC^g`-Rywn}7osU14|+l#MF-+N`QkCF9+^s;BMaa`RE zcn2>h9?WVGJy)1F#^Nn7me2M`88b!9wLL$?@OE(k-N&ySuOTEEM85-Idu1<1h*3Ju zon6ccupJrLDnPatrw89zNmt1R*@9Vo+SAOJFx4?N)Rg7os>iX1ZIvb+1>4AU^n?a0 z0XD&ME2zZjLhZnyMyTu77lcRzrhy{-Yeb{$Faf%>C?{JbG*pM-j#RohTffbxrIB$J z@EgAaJ06dB-!4K6>hn9ocs(el9$5KaMdri8=3-o_gyuh zThb`e-xksB#$cL}Oam81drBsQwPv2#PhIHLwWX!?Y{n z=u+kIk-68~R~~kN;*Htct*7Gs+vY1mjRLRmB24>_=Tkpj$A=Z9$Gj_$%KWxVR?kyS zyf7L=5ikBY|MUa1H}cXLOA_F#l9R?qLM(|*E}~85-+i_`R;r>f55irbd0xHvPevNr z>s484cb_}%O>sK?quEX5N5t=wd@}u&2AXwF&}XFQ%M)kIUYi*>n%WPMB2xQjQOD*T zeX`D54~TbVfBEQXCH>h*kDGt`@&0dEWe?Zmhw!0O_}{Ch=Lg1av&#w!2Mny^wPGiMuNiz?<#v|yS##;rm;b-1C-}!Rc!l%n$`_yXn%(MT;(Uk`>{r~^I9iQ%e zBwb>KQiPPF!uF{|2t~{_tK8>uU$gh8ix3MT#46;roQttl?sG*9!*YxqGuyDuj(+dY z?@#{P_I|&fujljecsw7ET)mZ=U#w%`YAh_^y!G_VRAz$plzD)Yy2FJj;IoF3;GfNQ zUk2_FT9N;FmF=i`_;>I~ds*+V$l<4u@stZs*;~mErCz+qz8S_D`YSwb)4xo~CDto% zcuqOO?dHDf9cO70UiXOOQnF{Scr6Ahcd6q6A@eF1_P5cM1kF>JKU=`{-%~G}T!Vn$ zvYYzs@C`dqtn}hR8j^p{#$?E5E_%1rrfesK+Y0oktSK=zT>@OD-6u4ft)E77DYT-nr~2Qy$zB3fH`&nZ46xYobIXVuKY!jeb`Vuu2KLR2eg zm_uW$E;}vV2SVJA& z)`nb2*@p$4r9q`;qs0Npm7HD0IZ&f=sp=j%5@iwv>O~v-4j#d-1e`0bKZkQ5nyx-Y5vlLpbC5Hf)ve?{Ce*c?&`9%#D# zHH3e8XGrOmfVij5t=__-6zR0NO0u)s#@R$yIpNyxp%njp$z&M#JxJ?lV0(*1CbDUi zkBzm*d8U|%tVQ2D)Alf6;gUZ4%$1LAjv2ec#|4QEy6B$9g3p4j%W9yE$Wg5IkGL|~ zfSc>BdtwS;m9nK|p~J6%GGN1Z(!gj17Pio>vA8NF+r|ZFEM8gV-;bBAd+*L=UYy~@ z*GX`v-FwcZ^==feWc9r05*RM#XM%+&`=}2Z1m<%Qd_4!?)0i!Lr z-0L@s__+?k)f-0k-B+2Q56N$4z)Vuw{ZTP1hegdD8-Mk;l86rW0~YSlysiGDF0N5| zedq5kMj^UFOxYY@Z(X!!3qBrta@C`7-{xtW(UFZ#JlbOpW@wZzFz znK(-t3E(Zs9@PtuO0$5}x=0NGQ@VWf=nDE#kYRAR{c$G1{%As49SKYUh`_6}Cq$@_ zldqBnlimjtgW=bNIzCYaxZQQz7-_y9l#3Tu@VWG!aF8;eK{yGaza#T`iD&3Jd^?iW z#l(;4)6pWsvsSnaIQ;v%#TEDJRpG^yy?D0fB>rex>qb1F^C^pDJk}D%q#zUur|(s- zzD&JY<>n=^6|S##yd){Ld1`|lMHYrDVvBN?+MX4RdD3h@=IZv(%+OzIC%#cQo$fx$ zy%f-8wV{+u))n2T5SL24m1s4*c$ddBD0xb0+0M{cz)p(G?$D_HV=WyNk?pdLrGJ|r z8mcd|oZls5*>Ri5-m&N~wx%u~Ti=U&o@X$q?UWev7o#9HbVB(S9c>F7SiGu{CQQ6C z#E|IW;R7Pu#8{wC3#|7m@WNw*SmKcqhIIgj2P2_h3`PjAU-X8 znbwG`4=+{U-#e?tIgoxd;dPBe$hx{&pAXne*O7mnV>E^zFKd++w( z+mjyf$7;TrF+J1QA1zkndTvDZFA(PGi#5I?(w-;o2mrtapK~HELraD3(x$>bYr|ZpIvUEmpnz7Xg+^l z@<1}tvI6ODnjQryDe#p2PdK!Bz}B?=iOF*p^q?2P?Hz$d;!OzazJEo*=-b5f>{9R5 zfV;TdvX6Cjkx#%zoXUcKzka5Yz)7Dbq=ogpEn@qZ1$qBI;#v$!ed?y_C+W?IGG01d zxc&)*DAmw8L#jV5uTbYO?71VGHm^NX^!y~MGj-}3H&N-ZIEKJ?42+jZ!>r3RyQ+)-T-)-mvGL`F z!BxCI@%zNn0<(&$dO{B}>(Mwc%XEwNHu)>w#9>U~RPM`u=sd5CK&a6|tC6bQ+x=F)B6+R28JqSWb^G*@T+klA z!;&8*CHyTaAF5rD7S)I#Q8mlU|M(pWP@7mM?>~jqI^1y902Y*abff}VaPJAs%0oRi z!Cvr0lP??Y=o#l0K3USVXMA8yZ;Y(by%q!cCrLLlVTb}jA2?3`X8q+YcMgcEg|~2& z#O;zL(1!b~Z-L32AfOz=x>ylF^OEbHA<{qK+QVL<}Cd zVSGg>WbaA;toC*ZYZb2YXUnb+03}pJ-W-Cqu0g9Qe+D=fWwQd;a$rKB`t;zk#0e!J z#7y8$!%5A_Djc4OgC|C^V3NwAQ*I_qV+&zoBkL^Z_aLX%|PfWN{ zZxR_bpxOc&)k#d6Jhy*%REDK4Bg0wPLh zBChn3N6M^(c#bC?Gep?GUE!Fj8MtINcgvs5?Px|LgClNj(^=;+qc6ll_A2}Is#AW z@O}hzjMm~=FoBaW68lcEES;$=HOWE^uwk- zT`#~VYS!%I_7V)JU4QDR@O)30$xYNFVVJ(_{Djl@{ySMvWJ7&JnR~EsM7N6`ig5TO z2IwUq8d5y6ba)M-)>CmRd=5g!@|NNynj30%V}3Xdt4YI1nK+tZ)NXsGYfkUI{z)}| z4J}pwaT<*19GZ_^kFG-Kq~1D4=_B0~lIi6>P{f|lEBy&STAv%Vi|E274t zZBwKhRU}rIqp$CA@VU@+o;CmYhMqT!JkWCTzfF^{hG?3V;e~hxStvU(aYOlOj}c^Z zM=;M$avO^yIw<`_-RN9@W6;5cgo6=ol~VRkB~emusFjOR7>AC&Ch_L9W-V(Co5u5Y zd44RrTi)tY_GHd}Fa`{yPoQYpJJ1JLKNW{rYZ`9XQaW$HaTPYXDE6wsknL zsSBKbz+BIe4Hu7DI>B>7;4@oi@J8fm{($j;oJoVMUS04TxIDrfU$EEZBy|IfZ1s@C zKCj-T@caZzPmulLH-Gzm-JXY{@Z1Dp;?04_m$|2JQrG}n*6x4GDL~+0g^z;~dtCD^ zkyn9$McWkqyvn?)N8=e#L{Y@Ow`_c}V2lq`!=kl+UKEDI10P5)6G0+bHu`l=N{4kp zVq(BO5pIIU`N{5-{^VdH?1B4F8!LGBNtSG^Pjc{VJ+@Aimdcn+2Lz|oq#uN1+I<)c z1VO+flLhqzqXf-NhCt0@1ICbcTBs0x<5|bGJ#8f9%N$LG_<~J`TPv` z%;$%tart{#nopE5=w4~*aJc)gy}Qa4q3S>LO_g(N4iZE)u~yR{`e?>s^WWV4Sn$a7 zv(lo}Q_TJWsKRf$rwvImTjtzN3)la%WltsS`OdA)m9QhfB|fyCv&JY^Ao7?G{qKWA zZVISQxLDWfYeQb* z$F*Oo8yHhgWZd8|?Ic$t_(Jz^w*1j^(YraVn^37^loz7`vX~_B?V`&L-k5=Zj{h)G z(=FkmnMhglnY$F2!P#`NSuUs>^;%LoHMR{iKdvY?#t)7h?;|Yjpe3~z?A*&-69eLEA!AbW5o@aW3 z(T2{+FzLl_O+L}Ro7d1D6`H;DCRC=s@51D14dTC$74S{%1ua)2V>mFDJk$dc3EaCfvps#Yq+J{zN@kBN3ujSy9X7^Ca73x7VL&+yH?udB1hV zF~qIazym7_qxqbicFF(Puoj%`INz#mIPc~J$?=?$|M!VDmA!#7>+Zo{cY+zl6S`NX z$+sn%d?zb@{FHXxkdoGfH`y@vJ2Fp3Oy?Q;a!ucVuK%2|_f1pDeL&R~mFe1sG-p1r z)=Td2H*hU(@N5XsBntaV7(<07u@ic^l7}&Kg#@U_7p&v{!^`^2^7X`R8I2CgS$eCf za6Q9Hc&`xTr{E#0^Sl6qTEXJ8VaTOr0oC94*!cWwD}#)odI^`6Juz6Jo`?!>0ruF{ zwd26OV_iQmhOR>Gs8Z54rT`Y_9{!-PH}Xwpca%!pU@rljiayh$L!)F%58X=(K-Z1^ z*`mj$LZ%|z&f;__d?|`cqW52rkCeRT&zB)8E(QH%b{U$UgOpG>NK88@9T+^=#d$2G?&Ikd61C5JFq8re8W+^( zrR$Yr_?3>k+{7ai)rr`c#1?p(qpVcnhmZ`awNeo!dqZ=VS7!Fx5@ju2-4&3%bUE^4 zMW?K|f_WFTtK1{JVU%ggkNM@j?l6tKs5OhGe_Q+Xx}m%v&@~X#ec}}~R{RR8y$Me^Bh4qYsLhs_lMR{iM-LWD zHXE5rKV>EfeO}+{{>rby?w?UHk=gZUi&o+EXkj%U858V#M)1JI9YI#dnDNOSGR{6y zesV8_D|FA&AV>?H2vR4ow{4KjFv_ABBUzB6XgB`MQngl7Mt3 zq!@Znj|uZ`m~_Hm{Ofv_R9DBJdwVk+^?H+Zv|K^h09fwwDsh&V29 z78%~wFal0zQ2|-g5eCq0K4Z2mtr&Lyj=+ts4P^&uNyJh)C=vBf2@xB&q5QSD6``1w zKtr@T^u}*`EaW&;+IbYQ;Bu}e+B}QuXH7T-9OnU#T`ux<-ub4shyL(BJ;;2K@(d_M zC;d`~|MH(J0EMDQywh0z-n;O1n1krE;=FZ+d6~YwXT%Jx(fp-oeRjHJ0K=sAZgy+m zqh3l#7eazQHZ!j4^zF1xknBX1+Vb7-aWG#NmL$uDe5(kaS|jWZESap{WvxlV9(pSF zEHc|1>-ef5y;`4jzVR?_pZ;KXxBL&kKU?m{bc?R>Gkx+D`Csug+F4HO`iyu093WLW zXKzMhFsNtjszZmMklJYYa?W%#Q>iWSe}aK)yc?k4Q23x|@^JN~Kt;tBcL@_?gxI)Tp3Pp&Kj?rSZ`lBe( z6uG^*=;Cx&2fC;i-ia~+-Ncek+HoCBs zZ+T8BLdiuBkcsJ@L4M1#pk^qdSRlz)sUx+oUDQ~uxeDyRZ#s3))Sl@d4^D+2F>hug zZpOvs?XP+!Q2SB7)=8Va$#Gg?qNXc*Bf?imo5QsO(pf1ZOo7CQYu=FN`YzTs=slTO z-5_#Y} z78yoWXlu9oITNa;JVL2qQRNsa1c69xP~+DmS+A=`NN)qB3V6{PWS(7It-FD(`ZFkS zWfF6EZ}o&a@Avn$e`ScpodsyO$ zaOla#gWzqo*-?4Se}ews?Yj(r`zs=?q!%$TU^r*EKI-)KB&c)x=q-{(S`OxS`&s2# zkr8dp@i*dx>DZJs$@RUy5!<1jY=0rmr#5kGfFNvmx}5m=rg-8`gV6{B#_k>`ubyb5 zzh)PZ^+bE#uU1m{mgp;W7$j598K5)D^s3?}l}Z(kq(Kc=zyH}%oP?JoJ5ppJ8$SO@ zAy+Sj+AM;u4d8V5Q9|W&(3)vaB{^8pW8`0r=BIdlF?8YmO4n8VFpmTSQ%m(Xu4pkE zNuJMu*}LZR0$j?fmFR_+2&4nIb*BmAz%#gHS6D$@<_yNB)+#=}lL`VYl^uQ@$R+of zv2@D7RGiHz0zurR5e9VAxv4%I}&>E_IwnjVD*<++wO28y1k6&6Hu zqKBL8QunhzM8?;!e%5dN058qJGVkrzAsW{ylD44!$_&GV%g9Fs{=0;@AghgY2Zzte z!Xm*2RmQKPEL#3|3U~@SO2@`Jle*!`WqAb`jNO~dYnHLH_4TU9V9nL|7B>tcvAXtT zJ?F=j$}64gGjVETU%BAQU>(BnHLUT!y)3!tAfc`rxIfkz`qOdjV@L8udU%CdO7HK~ zub#(pR?deOq4q>#=b*tH(U4&sE+d{C2V%l?Q*{SbDIBKNRHZ|A`=^f&oAXVNypfqN z*Cz(nMtTtuYIPZ!>4+nqbi`16=)Pp^v717o#Idix12{FG8Kz~7n6X+?pXZ42oV(9((9OjVfgAVAf@J-^gOe$RP3D!ARo4OMTrKe8wesvodbSqjYjRmoZ zUDmfFflK&F+P(5q#zw;ac#*#EyC+}#tbSR|(3}TdByojDLaFJJ8$W^VV%w<17)uvsBe}m#t3}z8JTZz+<`{T zzkO$JtL?j0^$by3!c(=lxYzKArOHz`Bh%!A#XYLPJorCsh8Yg zPpx11bpG%XxktcL6jRF)mQ+T91(?uwaHVp@hG8(T^zJh?zv=u_pE9tS=BtuvZsC!q z#%08d({WjQ{U&LWsDT0hy4?leoYCuF?ar^Aa>^Mu+-5dBAD?O@kxF-LUTWEF<<)4u z&5`x};-?; zlkz=utdo<$YV}Q(G=eaHzLIM4NoZb2S|!Rl)MGRK(z|=)YY(;rm6;&@!1Dq%%l58@ml=4)gnuN)-QAN z0p|y9pONaG$UGxpN@)Qx@FDa32Xvb%$7*s!WcCcJ*CQZ@ix)@gwK_*pua<>FxMFX| z`B>J+@91m0%!S7kj{S>BcF_yj9&_C;>4Ozk3u;yo1#v%~;PX3|vVyVt3~RPs$@izX ze5$AOcOay@2y*GLX0kBd&We5zglP^}ytkw!l$aS|yYGN#9-P0}*QCF51&k+(vv4Kw zyy)8L?>)g4J4o~_n6qaecl~c?(a6 z?cRyj7$qQHJX|?IM3eA`MD*nl*cCt4)tF$f4q)^27#MkS>~S=x?6% zbwiXQ8cK{*J#XHamv;^&MYDo>%mcFeBQ@{v^1*(>z$`)kaXvCdQ~r zFRq0Pmo6Rw&oB|W$v~)v=@#C2KMNW80!F!R2!{eglpyIsvX$5aAl}sEhZl`EF*5W;5cHz#`@!w2A^N1rCgVgvD-GV|+{e zvjsh5oRw~-2Q_P6?dW4X169q2!QsdEWssM^L{JA{%0Z?tc~?C|{8z(X@*b4FuAcU2HU5{sI@x_hlmYMBKQ!8uMB~lf9>X z-?osyUFTD#C9n-8d@l5KMBYs6@$|Me??yPi0UTg&nyJ6l0YTf&sPHc@46aTp>OQ@b zJU1QjmN~&wqriNn4lbg?ec$oJ7}ovN`OogC6uQKL`dG;~%H#dvA`g~(;Lg4V#|Gf2 z&scr)HcBy3xkLg+?4A_kK1b@DW)}9|S!KoR=;9ckJx4`41Bi$`&bI}Wxc&V zf6aGvt#JfH=al)-B>!3C<;U?$tEa z_1ZGJG@>*49Wg+{i0Fu2kE{847fshV=Y$es1#pL%qji6_99YD83{Cq+#~EdXYtl`D zp{CH)^=hBjK4ueALtdV1RrX%i73^1Ze#BQ{ClFDW>;1vmRC5fZ%t^kMgRRE)Sg^c* z<&_~#hAO7hD{?>8wHIDCJP>i`+5F0(%8*y=$Urcx+-4U?L9!Yk->_YPi@2b(Zz2sJsQqLQ@?4B?m-=U5wO1BL(TqUz(0be72HltCmXG^ z7myuo)Yol#(XSUw79%a|egQQ&Y<8=Yy)wxS^Kb?1dN5?0T8fPKCMi?6V4G76Tc+a9 z*%Vh8Qtm#GJ<@08+M|s>&~rNR%S=$Czl$1&>?p=HUHipKJYLqb&D1^IfO_|K4>3GP z*dpu}zic9#Uv@mbw>j#QpuQqfDruz_+$vXZdUSE69+gGjFcU1_gdaJ3Q)K++O@oe_ z7rO2j0t!1YYCgT+QuBJFfG;&x`7x3(A%Wnz8}2=rPek`L zz!F)uN4du@IPF^{U$pD1BZ-vugN_Ft|3GbNL=f=%F?z@tc24!r7ENB>Tf|G%pHLTm zZ!AQ{34cXbD-T#IPhTO7c?!W~NYEC0Wh=jWMDtov+n|JKji^U-ZMx_1`ZAZuzp%iDcu;=j$h*Q^gaX z@mWpgfB)I?Jb(5;Qn(vT2P^Wmyowd-f<^{LEiaKmLoil6k?MGGAIP19M)qm9T9SU# zSuu+nk!#H55o{EwK@{0$h8CWDT~<6V&K4`yz${F#Rs|Bai?SeJKr&09S&phM%gO%P z(%_P)UTRFEp2drYOCLEh)m1>DW%r!+>A~`$V|wUPT#Lwd)M4z*$V3=1W}?T|Po0YD z;R5?Z?dm0P`rQUusN>U%Z6w@t@thuPRlHeq`kh4iUdhAP{sOGrCAX}GQ}#aw|HJIl8<4!=j!)ERQf646M>rta%#|Y5M((pR-Aaos!vSM_&k^ND^M>A(~4NS z1GqaxVY`XJMP(wc;T_=)0uL?`lvnz8WB>f*N6AoDKnw=c=oMyMGS3qZwR;bmlJ#kx z$ZXP{Yzk z3zxEfDo;`vW&UaNR@wP9-JoJiPq`B86;Z8t{tdm&a`60ie;(|YY?v1znF!L$r-lo( z+T@D*OXlD^Oyf=sIE>zGxDh}Xv&c?MNtMdN91Hi6%ORYvj?HsMN+TzRu4e_Srk(hK z#)3wp%ptkLB!;*2D0!6TxI==F>Hhb#rJXsGE-ce-aKYLFwNw1D;E6 zZ=l8m*W$i0$O}Ah!v)?NvkLr@-I!-aYNj7~ZhCpU3)rdb;lIe+`DQ|G?z6t+rnUsg z5>U2W7sx|!bN0yx<91+xsfrw@NQ_N&X`70IZOCzS;4;`BUdC6wri`vuxi9(JZ$w)A zSN6BJq|?9I8NLL!h=zgv;a5Y>Se9^1T%5`}V@{ukXl04BW!wUAhDP-%CX`-)jHq_l z88TIxGh%WaHYouch4lHK#bGh_z4jO@RULtHg>Qu0Bu)j=^ijRMT1%i8um5Mu4qsZw z@%1qdRk^4)O50o7sY5~hZ#B^11a*#<=>$L3w;>nhM-rc4yA*y;(Pnp6?_!Ag@T2|x zQsZgj(%%)oAYWx3HVE%oW$p)Ik_m)=qlkW${V`7G4u8nb6$O_wp zLsk<-;G>SJ*tMY=Vl_o`e5-L-(aXjEMG`0mhi<69%#jWg)AMQzBffz%?PBS(viWWn zLw#G~@1U`_4yadXumxebKkdDtyjM~MW9CrbTOCc2IXkZ7;WB~(R}~F!6ueZqH+{Mm z+Y>1*i7E-g1@~Ct_&@9#qZ9QexZo^G@`XCZfc;JgXHYowey+dNMD2WFm#`WfhJ-`c zD%}40cgH9~`;~k=?}@3T53ZIZoFI>ltA(u_blom;J;472Ductumdf9AP6@(Rbkcke zrR+@6{f}AvK7x84A%U&bxmss6A4ZMQ9;EfsPKRbJeKrcO1e%>IN=-j4qxDwn!VUu` zxw@g1CYJ^Zw;9X1EgWZ!BKD_evKv<<$Mb!q-pbAhC&H-kk8R3+M5!KL7}fo<*E!K& zg@sLziaK@ClB)?vK|(B zK8JS}4sgYr8~c6kdR8yqs!}Uet%0XR)ZEMRr@8uZB^+kCxYUJvHC-ds04!TSYZEV< zkG4tDVBNIr&oMz9?a?>+rkIVP((H`<gG! zO-I7<^IGA8fqLy2j2`_2SmPxdV+@ORVvCTqju%;oWG(K0PCe&}4Y~j-CLWj7);+lCJ!B8L;Jc216iMV91jKlgl;5#Z}MXdgT59wMZN zHD$jE-;gS9nY(B*HasSNZ4QLK>3 zf!FdqTWcs+Y2^%g$&wLS5uQywkH55b8>%6D+LhHYlpREfSDXU9xkIBfzxjv#c9uD3 zY^OFr(imh=bq*!SYr*>^nwR)xBN&B`_$hJt)n2CGfLYnAafooGuH~V#j}l&Xmt|Vf z8O$s3dkyv8mxX)SX;^N;)cjB7df!+jIr!{IaBNZJX2GMZQx6{DvF^07Qd3`X;qI47 z$>rpbnK4pnrFx$i#@%Y)hXU4nL5dK;zitSbmc=Eir@V`6mA=}zYwE8EIJ^Y~QvtOKIOqDz*YPOn3YT-7*i~BGU$}xmWP&Md#`|6x^ z{K}8?62-2rL`?|+wK{ySlB4$qGe1!jH=g4mo>rL@_*6GaHMqQV4bJnbfn>AJS$%ez zt&Fow+7RSm9+EW}YL^KM!D9Q)F2Q-g@Wq2v=hov=v2FtM()OpGlgJtTovPJYFPsW8 z7vs1PqAo8nqH&6Pc)rbXCPubaIX$SRp`~jWg`lqJxXnO6%lpC)iTqm3tPyBO<^Y1@{Sm z?b$zDjB56(QzqQ)1VdO{Obcb&NPv?`If1AgL6KR z)cT)QV&OTCA)>?227RPD#$)jc_1MSm!uB#0)S18|#ep zlym2oW%oA-nrW>q% z=XJva(ZPZV*AN*N)d`eSFX5!nwncnmOO2dU#l?^}e~<3SUxXdcy!%gqSH#n6RJ2OP z1RvEJMsY7*;56B^_tdK8JyTc%BVl7skcGCJ4Q$vK=ss~7MsDHHmg7xI0ad;!MQJgI z0JQmWR%qI9U#^V9s$IqV$sRBEApwrzj?eA5{~=Rb$|d#+KFDJyO+!9;1AM?m3Db;u z(=CG1%#^E@^T-@wUDT*&+zNCJ{}!6K6bvol>rCG|A22Ngr5c-wPp+bp4*J^2mUp`# z5_-Vvgse~6C%RJ0c1|JXN7Se2tL!0T$i@-~U&dm!yrwUpqIP*~Kz^OWFMTz~lOlha zUb-AqL-&IXs%NRB1*{7Q@GO3Hhw-XHT+DP?)^?mbJUv`@&6_+@iL)gB4Bc<1Z+?px zE0L|hk5PWrjEi=qwME@92S2z}9|{OO%Hj4UH+yNdT7U`v{U(Ao z0R?0DXL`Pz>&6^ZWvY%Ph%nyJ9s2BuGg$|dk(h=IJ`)${khS{a9*Qv(RIrM zDO?>N`wcmDt2qaQp^yngY*vXMttwNTz4}`x2<}126b=pBFX^8aNWfO4MZCG(KIAnQ*xm=<%b-*et0lcAr8l)~ieb_3YMD;D6 z=66duIH_u*Y$iLi<^TOWZbvi&HQzy(v==<5I$A^83KI+%cXc0e{Md+7?cp5*sXPjT z(g1|Ev$Dy?uN$y~Gcu~{GaB@8$qomv@ETMUzGPArsLIW$A3g*hxP*!!h6DQ}gR|Z* zG&+-scj!>qXk}M`Ob@bI!i;pmmVUOtg8QIEg!AzNpVEt6HT>*M*sFrNs%D+Ji3*em zqPl`=zBl{xF7l!LXl2xrwXxf1EuKQ0s|;e@iv7T4jEDBqqhrFdHHas^hUGFP%wX=3&M1864-n1P_erMxX9qqr)K98>0gkVLtckeM z@Caypn^lMXGsM@ovKs%m+5rI>H7mU+QF@lYml+iFDy^+ZRi~eHmGq&%wc@J3{oCdF zZSF3&%V8fWU^{9KZlTi@O`2D%I;OZcsn>wavVPgnr)qQY8OGVgm274ty)04vAx$G} z5(L1g<9sE~tqJJ4x=;xGJ72N8m0sVR3Y$F7kpBCmhdNJacL&vx~aQ%{*s`E(WGBQN%=bHAEltC=aWFC*qX={>Mex)|bvEk?HwgWA9%V&YDU9W}dGTm-2VJOL8l@KqV zOqvX)GusfPlgWa4xY7+yB-rPbo_q0(dv&8i`&Pd|1xS%NV*g!ueB6Xlx~m0L0{E0K zr(Op(P^sk|ki3I%V0wb*Yc@%Za)*j-m3#oPVA0}t8@;<1@pMO|FGkTK+&{HRDQ z85DRE+>$6fMH*-elFLcO32|o!U;kpy#pa!84XC67p0vEz>`s%VKIC3l|{>A~> zcVXFRm-}4l2pSj*n2=CN13+hMxZcO{d@0c7)a$+E{AS- zg|#pDH9!${!wV~iZTlzscs0&#&!9mjT%fwb<^ebq*#0GS&kS@m3 z@$r(an4vtV_#@`D=D!%(h>O%)pPo#bCr;SdHD=Fr5^lu0?%S$8XYxR8)E;)9^2~KPzWrTn_9hXt1)+o0DT6c35{xLmi>Vld&ss3iRAhB{@-p1J$#q z0V9s_pVp))eS!Q%5vkF)MmQRJAPf!4l04uD4h1(^tDkzk1sIqZ|vpEzh#oj*~f5}uyB$SxV z_KjwtTe3G$FD3tLT(vAtU7#x2{HRPO=j=JRB zPC;?>>O7stYRV!n#OgYj@O} z^2>nJe=Pvr;j<8uWVtdOVw8cvEf4Fo=cpnyI-5YWH42FJ3)Ocsk@@;y=LFZoKRq|{ zT1QSWdH)IyiJ=TjPB&-he=ZMToibFg6;p)Mq;;&*&yzn>J6a`&>p4YZMu}IOUXs6Z zTp9Qm7%Bd=`f<0s`PT3K!#xc%H)9?v<9|r)Lf_?U%^2!x?p?ZC82?jQ&NV@NsQjhj z-c`(Fu8Z+;jo`X-EuX*;u>V~l@@t7md6Qj5O_8Mr3FtzA8Gfb;7tUgY@Fx-CI{RoiB0YN0P7wKw5 zfPDBA?1kT%z{5hlQ!jpZ-*_shz?in|L$j>1VWhf+2l;G`x$kAiu4^HVeWmz-C{R{o zLEJ5KOgceu9#;x-7zHs&GmyhRj^!m~P7Z#bvVb2vbn*~mtSBi|)bv0qU16O@ zoOKlV013z2#w)@B%-6eNr7HqywWMZ#ZrLRElst*TL>##{%4w=;SnIEwi8R1wWnTe^ zE)K;JAM}65u(*YhOkA?YB@#3J&z3mfpW$QaNef){*bcCn$<@vM`enRvNJ))HV3nIE zS@muL`-78|i9F&mxSNqQFjK!tAC>9tJBBi7=kzb;Uqz?;V|Y_{^!h(X?d#XGtpik6 zfE~e^c3r{8m)*JfR=K_dD@+$RAfv(1yk+Gj^{|QSY3=UYQ;t^#tQx-vzYlb}wntP7 zt&&^r&{4%Iqu@onrfOl;lCgT>){&ISvQ8rIj-(AxSb-jk_|Er4Hgv>=PQNmfTe*4u zO|q`!I%%3uTqPR~v(999-E6{g)r`lfGoi65$~Nk~JAI9XglPDJ=2vWDjqj%N@iTQ- z>)#iZ8iAyqm0;m6WcC7Hq5Rhz-}KVtP1j(L6}=cfHJVC@(A+pnHE{RKysCEJGmN?> zVZ^kpT7s}JZtO0J@R0D1z@EB;*_j}gTOBT(ihP$~c;;-yzQlCfo0iZg;3AuM=Jn94 zH5|wdab}arD#b_-bISC=-}MgMMgw4Lfbb2(jK|vbTY3V-tS6NhC(=nwOxmQwn9t$r zQ5T~$T5loZ#Mbhn;*;yL+*tf7V7l5o%flRUtE)-BO?KTWw?{npGF)MZla&W&9;q#8 zo>|+Me=+c_w_Rpqpj~|%(yfGByPt{Gn@phs&)hGI%mWsa(Uu@d8W;R^+nF9l1nD0xt zA+&!1pU^(3&Q{1(Qm@BX`Ve0IJz+h)0)GkKQ}^~dCI-YGe=$k`Fr;Mj43qA`63Rcz z75LueFkOD>y%5T{-^b0_=}gzFsC#9&F|Eg$z<-v)J3?;+e*rNPY5Bffeu7;R4Fqaf zcI(MST+Ix+E^7s}rhnedfzOYnhsnE2qnRR2k?kU9!+<+kj=pxhH8sGEtE<_E*mu0w z_Ye-Yf}2Ba_|ElM{cTD-DsUBK3fBj|PVY@3>mLG|ZTkIU_WPC>SV#zrFhN)i+}5>H z3BTEHjL*t!JLbQ9LuC?`-6*f$8XbnFgHC7pW5+m^^TiP)uJF11dhTb_@dN|Dl3H>UNH8r?^X(U_k_zSKfR#FodrLYng}m_JcAj=8Y}Wrx zRQ_@?Uu;?0Q|P)R)~<1zVSab_T`-xn$E^g!JK!1 zn;nPNb6Eaz0c*%w{b{^OfWagMh7)n`J*$`nB ztdW_*I=Ik!UI>bdV&GZ!K0Xgk(q_3(Bv;-=h;{*mujrrL$emRmfj`3nO(E=3BmnSz zmUZtwp|yp=M*HQ0@xq}a>DvP_zs23)9W#dees6VNGu&4dl?Hl_I*Z4xS*9m|^2)h& zgVq@yz@nZi?rNS?XUT`1!QOnJ|F(@Lh<1hXCW5l_Ma#i8J+cj9w9{O9YBV@1HRunu z7^GsDNzoA={rij$7`tU+oPGg4W;OeHN*@=$WO(Z}&?UovwwPsHF=!X)0b$J^%`LOO zKW6pvR;^sCdQb{e z5nP(TbQY+xLrwr`hT$7;YJ`5IBl3gHCNUbfiqG+1Gw_p9k?124=-_I-r1!uljX-QO zC4G>CKV~lfSc#UvpFET)I{g&}>s@WqeI)t%9)R_7PrbWIkUrB<466dsQ9C${jz@kT zP|D%ipqXMudEsC+ve&p{6(At(%W$9Xq_mED513r)Pz1^<){~6@bqQ}3pk5{U*GqWf zho-iLPprwrB?!+q*(z7zb)dqpp%`2C9U?PeJUqaYRv_7qvb~MO5pNGzhZG)J!Y3ouo}9*mn^OEgByDW@ge&iGLJB$=3)f(r>C2k~LRt zT)E01e!3N$%t_!9YwW+750xCRgQ<_I1J!)y(WkvyN_b&t*ZQ8KeO%G`+J-gxfevLS zkapuQDcn-dilSowkE831YBKA(`dY9fAR-{3fS|M}RcRSTx)7KAEHZp=9 z=d;E5xt5Wwg3;I;%H;H;BK0NY>e#SpC^y&M^;|>e=VyC*NwOx>u@*ZG%yP3%xF3Lo z0={oo$!A0KNuj{Bg63B`=A0y)M_RHrH`mcil-(xEb9Set7=$*l2uasF$&zTHpRhCM z_Gd_^BflC$Q;m6-mIwd~+X*#PDNuTplAF#)sX*$W*<`nq1)RHeRQ-Y(Xk32Al!a%^ zlupB(sT-7Sfp`o#%G5NMIJ+p8PGbeuXbruzM6;m9mmFPdSE@xZQKL;uU<`N%TE3|T zg`Gp31|ml4ENb>w&fzd-$n>ggRQY+{mhX^kdlSRy^@{_uFfs5)V1z#VM{&4-r`fcGwpq$s4$i)@D zgw{8~vraYi1KZA=VF|0Df}+@0asQ;Ne?yR$EI>asVct_Dx7+!x;%5JOBuNp`$0rbx z1rcf;lIm2q)IzkMzu@Q*nu5|4d>If$V}o7fI|t=^1Y8r;0+m`kW);=+hw(_MOgFVM z1C_#gu<&}rxf<6FmCRd;ZLz_(lOWtvt;(0VEUDt<@vA%1U&3`~7aCrEo7nZ{n3tJd zG~bXU97B?j{l>iXwLE=FtDDd`!^wx*p&-Xisit3qbO`SS-}NqF>U55I4`Pw0{`{<` zYRwU4ZlnO#ZJSJpOLmO0O-6K1a_(%fsr*47xx>;(8 z!;_AMrQl|(q{U~ozP~dT$=KjEFagio(0(T@TcoAojPl$5Vf(U~(9R@zwk8=xwlg^Q zbvR&cg&A*Iz+J*Lj4d^1zCGDC<`H_H>DjJtvFSP%HnX4%s*;X#&s+vvjGQ(BMf7>r zX*Ld5>kF^aZrxnd6MN3~@_+nKVdlYbn-k;XVZWNM6*2O5ypfQlWq_Qm(9}vZpm_np z@U8B$v^0~0sS`$$8{O^R9zON}=L!q}|5y4oI>v~x21^Au0`@C!Qs({P4__|X7;?v@ zB9O=2B~)EiCvUjhr5$_KM}50pNp&0k8645l4W-V`7+IV6+rt&a3p2xy zKjSS1&q06eS8qCn_IJn*EB-ZWqOzTXODhJ6+9PsB}@9II}uK*?{x3VBDEH7KFFa-A*54-G<*55(b_I5tx(BJ;HW5q&`Z4mzt|mDdQDrlSH?iog2Dr2AVZ3i;3xvfPnCeD3K!PwYACbjMNB4bvy)wR z`tv1HL7dafU@Zui%PJoy8uw-JFLra>|jwfbSJA0;1xR2jCI7%ck7BXb~x z4kncBIX1x8ys~(MLCVnz4RZij^d4uO3U(`e-?VuUP$-=z{zQH-dqH28W9_Pf-&Tfs z^iYwtjt6<=+?0G5Gx}$eJj))dL&d$5F;2JQg~Quio+o5}U04b>9g^%m1}qt-F4;Ht z0;QSYvlc);b6!E(gX$9GlNvx*v)A29z~Nl&bp^RQL7fTi%wA=i9f6K9T*%bT=j&~ZPAprfP zXCwNIkCdu&bIieBx$DJMrV2kBGZp=1)a9-I)jO^^r7vfLi-A7PFwk9BND0o^yj$$Y zT`sR4WBRO6giXr5zKOqUZEuM2bOTDchl=do`ZgPrI6+W~)|B#Mmdu-_eq@vU+^m(S zN^p-SrgofEFHcNnmKP-v8RAmmoKuaih6NN-?JBbWG&;MbL{8{_jXYU^2XA|L+~5aw zkPAeW%#3jEhA#}74a3Ip8P0O7F?KJvFX>q@h#g&4YOydDPAn_f{$ux6oqq!S28hiu zx2T@1oBWlcm55=WULxS!(qiShp}yJ7XEyZmsRhP%?-H76ytkEn%mrJG zpTkDIa8aSR7pZP#yem{hyIRpkb>vh4WX@jY-d{KyXI!0B5By!TSGzebA-w+O zXjhiMpVBwk&P?dnf9mPZJg3k7Z&Kd&(m3xR8cdyY=@M)4PpOvW!OHvjfjR_;`XJWZ zlYi9|2I%~StCaLX$aYN*G+gi~>cN;GAio0#`HIRk4RdKlRq8Sjym73Ih>eie9n@Pf zm(+DD=k_CH6JZhV0fYZsL>|FBt8?O>w8_`DBzuZxEs=aX)#HP4MuXbBoDMwZ+S{MZS5lctfcwDGRY93*nUqL!l*) z?ykxpB?9j@mgiNP(#Oxs5PH&&0p^u1O5t|iynooqVT|jXT+0cG}*f(Rphk?>NI) zA_E_y4S)X>ztW{5L;?`lHN=iDQuYHXQn7iI{GOZ^j0|hSyN|p%8LB@TEw`~b2ReTH2cJn0hI>O4R@wSX0PFeNG09CoLx|3flEun7-x2aqt_=8_|w*gxS00B z;V&gzk#PL9P32PD8YzG!hP#_5%Po9lQJ&K-%>@KGw94RcsO2VeZ2+!uu`+;&^8&Xs z>g^539Rb_G6@gB1$Z55U(X1uUkM-b$RhFjhS@i9r0j{`fw&OBseMpdwWaC!d9pqK< zC}5|IiukRo{i*3({hD)7LiK;9`Gc-LbF38ZFRoYk}GUK(ZyyIiq<`JAOS`S&QfPKLqC&P7p=HNg^)c6ep7oKu`27u%xUiz~! zZ&jV8j@V!RkpH+C&JV2oPOQhC`7RKVX6mW4EE2Yiy1T0EF|)C8l?7~Y6;r0ZMz}+e zJ3D#>58jcaL*ek7(8Q!%%EW(6@y9_VUNH*Xo0my7n$$@v%mmaoZqa}Z;A(j>2h|w= z{J+*Zt><7b<(kT=e}p|`_yeQ-w!Fuptn_~1MT6-U0K z%4hO+41$Y<(=EHwm<<6{6WjSIso*TYQM$yUws{f40=9Ghfll>G)mW7U)_Bi450C*7 zYCr`7gUsai?U`0~degLkl!Ra{C*%+Sm3iDp(H97BGxSj^0B0%;n$GX<<$VP=rq5wf zfekx4ns9cyX+;Et+(UNRleY02!qlf4(oX^D3>U|{QQ%&VZM?^&(6uOJRDJ3pT0sC{ z)~lG+x$BKMe)&1;Zv;vn$gN4R#IRc15;^`&-u3fpkye0SAz*V;JwbUk7J_3a7J`F% zoMNeZm34s}wtfgtp-D2geuL53E5gQ1Tq|t7r89(60O6fjL$ix<-L+I@^|N}DlcU{B zK|08O*#6c;`|q{PtYyzE^mqxKo1e>^T^bfxpF!^%rP8Lo(SnMah6D=Dw%< zgBN3Q>{7}7zknVA@0Lb&gEP%4;RJZzVmr^C4QMaWnSOU){*q=3*{MZT#UBD98SiTZ6|J1B4}u+Xio zvS+yE3G@@fD1wB^XiP*-icMV7UuGPv6rxEBiLrYg^6!-K*ifJ+6Kl#H*1-0#wj`mm z-E%ey+q-Ftrz4CwT2fsP;6g{?b7tWr_QdMW^(TOVtPkkc-#^r=^dPVX>Z6nhB%4$L zjwgVdo);>1Pp;asi!V&ery6A5DP48#Dc$m4god$J2+1Y{rCj|bQ@4AU-Upjr6*v8r zpLM*r*nDa0GcN2jFElQ2aVsaW_4{KN?3%^c9Yfa)ZbV+X2<oyuTzgX?p){f+L)#UY=Xq|G?{%%UD(?x*B=e<^3q;+Qxo{>BXW6DcyXThm0 zJ^V|<;xn>XAxcO2=l366T}|{I9FU<#Qd=)z-+b zz97*0>K}Z{m)LYFF@fWa7=6>^X=uc<%k*5uI}@%k(-A2aUX?SZ?wZeQcRWlLSNJb6 zcijrefzoEU@PM6oSn5R3mtC*z+YdkrwT8qC5w(^cc`GWejuW%}c5DDDbV3I<7DJk} zS3f_AzuJTev*T$+5ZgEBj%?6(5X4k9QaR*p-9w{W>A@}%*bu^}Vm!ddRj%YC-dNJv%)9y|~o&tt10 z(yPCAE7heFaBW~L%XgyOf_-N&^bco0n6VuKoy0m7pfthwiZ<njy-&ueeWmbzk%R^|YOt*o$*f}L-%0`H?BO(DP%lGqDKKb1 z`Y4dnX%USCO6cXH%&=-xHfnLM((PEd+}@vqGNBJ+@AcCs{ghg@+*NW;Y4#Veu&(h~ z5Plo|oEb@>|BO|j9IQhf1R9NKSz#rPK ziW@SY-KEj%GbB-Mq-|F}ep%-~+W@YA5tYjHN9aUWL>}1dn|xH2E@7ioVkxXxA6A+z zHwnR4hOivIj?bGbv*v`{nE9*yLzXQW=pZM zw?=i<%1jI68X8lNbJq}8)?;wp*a_>E#F-JPYmoDs{eRlvv}&df^~iii&H_AP<_cw8 z&Q*Ek6~YQMgvK%6_M<0;g_t4`s@4ySyBq-6@fuTf~Na zucma>CjgdGR&R3)@d~}CwFWL4|IY|=u!bVUC=z(*5au3Kzk_3+VcT0-1QUY6OFI_r zXVm+JpMCzt&Ym%D^2Zkpf4-qkjdNB_=ku=R@o^`n@cwnPA%CWk>F($U%*uHWW;j)* z6MNo}wzExgS{)INyy?Q@UBPYtuN%xf`+R>N>qR~jx^E{G(DT9!t!k-rv!VXT(^48x zqC)VudjnSyXf8RU=;e%h+Tc<+qx?yKMTI_z*oun%^vKRJr~Y@k)eXaw90T?qPK~7_ z6anOYSWjHu-r-H+Nf`gta99g4DM1J1su)FHULR`C6?I;rA!n-WS9KLl+j4Qc3R}z5 z(ttgN+73@Iz1Kq557jb*qJWy*@Ye-YiSdqavI}Ev8iUuL`}T+4;57KZT~2KS1C*F% z_N!|_ODR)d(O1Tcl2-}PW%N+v5uTwU2eJ!3M%h9BR6=%v1}~p04wTIdO4avir&lh3 zqCF5><1p2>aDS*7_*a7i5T!X?|syxyd@Cuj5eT06)cDbySj#!#_pX6_!1nW z_6yaLz!YJp)7{ETdSkTYBdU73wFfbSCc922=dn3LcmYn zz5LQ}yT3R&_$V7QJSa8XL)xdK z#M1kQ$hWrsW+u^)kK%!GYer;6%7{#Vz=Q@~(&Q64g15k^LjH8B>c!Pm5uf1tihnbX z7g37-dE7`_u7C*rsn0B9eN4Rw$#o`tsbjq5c1OFU7=PzrGJ5GMoblN6<5N!G1x)@u zv~lZ(RC<7$<5I~gI#}lTs?O(t`KjIE)XiSb2&@iOJJ}$WtS{vlk$UmY<7JmBVv{;- zi*F5g}$c|iTND}PS4rE{4 zJkhB)Fu`3WP}iMr<;nAoZ=oAsF3c&IRwjCvTAPWZa+@#a3v(pl2YuWCZeptye?qJP zkXbBK<`TIC8-XkDEPAvXMOdiiU>8sBd3?N4|@Hlt(58YCQH(haXP z`1=~bH5v6JHHleVoJ-S3P>xspo|8}soyjp%ZD7>G9?irK5p4+m4lJ2G%H+8$rZ zs;affr|)=yTX?#{!j#Fz{>NnoB{OCZQqR(&&D2n9uzYZhaZd*YsG5_E2F4@rsb?Qu zWS4V7-9}Y$Q42jrm6y;@cXb|Lhb-wEO+EPTd~I3R+=r+Q$UYSIKzy6$eGiCAXeP>%{Jy5I2W$mJJ(r6;cW4^PRyN`a|xWUwir zH`IIeAJn1=WuG$Tb1Y#ch&Vz<#;s$=SgQsv4H ztOeW33*N$3CCfC{bo3^HXMEo1Nkg>s1kLt5f9o41J~UyMxC)vU$84;OTY6T%*X5nn zHklG0b@*$2>(AuO29eeeXS2&KPs^Mqph%U06UFZ1g%1wI=YRCX!G+^Jog0qk6|e%Q zzBpUz0&*SvtXnDNo0`;{svymbrm&vkU+Jrp=Q+JVAz#D;^L?ZOjFSIh4}537v4{I; z5Y8FVdJ^8<0}#ovZ4gUEP+Zc&clDtE>G2J^#d!D&6%FRpBl_Jki{%E-81>^0*I;qc z$r}!V8kRn`$j&63&@-dk4`f_@x-Mf1t5)@$>VZxiV8G-Le(FOOoz^Sn6VF(mtuETk zi;k31Jv)ng>opAX-H{)NU0pZ+v@AK@r%%qs2R_7C=(#{*#^Q({Vf1W$mb#g>nr5#$@{PASXn&PxWcP?jbF zvo)GKEEr)K+`BUJEhZ~HXJsSb=a_9<4x1lgK>|iM;wC*7M;2wNI1{j%!rH9PjO0|XU`)1UAdH+Vx zWpNtYEkGu=VOIhk0kA1Mvz72^`=BoQ-``85 zR@~mJxC&pkYyYYYCkyza=a8Yeuo%F%a2#s>IaSsWPAZ44QRBIGZ%POC_*Jkqv~%wG zCcxOPN`W?{EjhmC>je zU8>272A;CBA^Vvltouf&tGt~MQ})}%OPhJDS#O>*DmS44FgpfyTr5>7^dzZL%}`n+ zago?8Y1w}c(_%LF(C6;OmrRpA{7iBJ_kJH-kRhqG0rzymDc zeXRqjvl3|VK&Pw5QyqzmwN=VXkU8WJtXU%hb)+OMq0pt#Ma{`kkt9*sM;n2GoK9Z$-(WdwwBSC`;W(?3#b`y{Xh2g3=8t zlfD+4@cQd^sd}tH_EO>d&S;yZO82h2dpQt+E;ap3v|%%BUyA1>pXuhi7$a@LZxxxg zhC!_w^Jvh>CEQVdJ|D5Ou{RUHA zmya{B$RH&TKvG-DovN)sle%3sL$k%$zc`Fm#brj{!LLji-*OwgJO(!fPnYEBZ`ioR ztVD(NBJ$D&HIllc&xrY(OV6)e5*7|N^?7JzD17LGmEoZayHB!Ya2JN^3Ld49-}_qp zl|9GXGj5B9ysECbSv+g-aTU8Kg}W8`uUu}GkFH|GdpJP_+t0y3R<48sQ;sGu?tKM~gs}m%}GB~DuJmH4-_WCDB;nm3p^LrfN zvTj#fsjq$O)FjU@Tk;vd{_5XD3F!4qXH2ry2s(sy+qv=DYp#SDP!I>8+kvGn2rxDC zeXD$E>zp@K(7Bm3joDd=7~+Aa(aD30ysBx2=+Vr{PyBe8&=yvFLfy2k?XUa&s{ZcM zO7Sh+8D@_glW*Z3Z8I$V+)K~7k@$oHWDi5?wOMf)$B;i*0X~akW|A?H4e^|qaQ~-$ znfkUceKIiM<*+8;&Tc)Mb?XXIhS^huBO@H``ikb&~IKWSW;J+Pv=1Z#l*l zWUWK%ceC=LITVwQD61AlDWtbjum zKV^`tp)rPQJMgyuS4wQF2vweVuvMkfN~r>_l9!6pl^z3nkf^@eMtd+@+0R0_`G=_f zLCogrb1R0E&IGbP8rFe(ryW;OqB}VkyAt~r0iv!oj*SXSv^)~2H~0L#e43@3>c zO83h&f{%{9m?!u5OAvSe&NNP z@3TLsoN^8l$nrq{CccooI>K?*M^$(SU&vVgc%I87K+<@}7>W!0=Pf7=odS5n02%i? zMleMNl0j-~*w>u$4?zK3%TwJg>5eNAY0O#oCuQe8iTUlkE^DeA*=Ove6&t{TE>Q$U zV}$1G1}}Yej(lN{e7q{gvK$n8Qm2B2F*29&Zi(#29J817CFF~cjw_}r>g7w?T9g9X z&yT>Su~wDjPeLFli&wtNDkoq0YJV$*RhKz2?rqCllzMV@WqW9Iy87*-pE2X`oKVxt zw`b+Z>0%g}hWqf`eKp{ca>FRN6zOuh-k}B{AdM){p6Pe;)3RqJA95tDPR9`EOQ+pD z2=9h4b0s-esw%4|0B-~}=#Ai3^EL+Xa*V45GmvIZ+ve$E`d#mbD{emndKp$Y)K-L^ z_p>8dq}3j>@A6de9F-B9INIvO9`q-6gOl27JAb8mS68%Yy+q2P6~`+FKD5(^2VvQi z(*Sv!{vUb!H`Cjq|4Je*8e!VMR=|634%X$KZ@1bGGBhq@H2ZOWyZP;*p zHX}K4W;r_#IIbrK)9U*{>6yG7b6!meM~$0{Azn6L`z)&5L-0h83)%@!lNZYgUc)n* zDP_J>rAGzSfP)h1OBy~Ap+B~e{2Gbb`|o)<35ccu+s-%1l!SKTsqGy5i7?kzaA-L6 zmz1dfb+?H32j&s64!9RkrXuJdB+!Y+>W^UbsQPGGe{1o_b2q8+Rm-XF^tyD3!MPd> z_TZeIEfTfmFjn+zx`_Om)x*=Xh4T2YiBu_^_0+>(fD(!k4?H5tYs1tDDI%PwYd?|D z!>jc;bduc^`+Q71k9!!^oRKshN^RZ5{2y z`<0pwnu?sdZ(|yz`S!XkKWE09FQPBZZOigG9Xwe*QC#<)2FjIMMQ3shi?Eqxx`vuE zi2hxTT}VfwRVeygg_d&Dj=oKHw+Q5u9GBoOXHs8Hbn9A(tHpgE+p7~-sk<|hp2^PP z0Y@%$?I8VQ0t2NS&A+|0V4>Ip=uNg;Pgc5e-w>@+9;M#(G~&1}>C~ z7_qsH=Dkn*g)Sau7NXXT`$q*}S9kz1aTH-i5u56E zVM+AmBQQT^z(T0R#TomRkM8Tx_bcdgc7q~?gBzx8yIxeaCGa`a=?Ih^Wgs;&%{#a^ zfXU-nT20XhL9h36-oXWj3_krQo0|n-Z5oFkwIH%{t-`ndVa>DHJA4k9N1ERTWu9!R z#@M?w_`#hxyGaJe`udN2d6i2XN{@^-i)X06tn&+tRjSQ6UBu6TtvYS!i*612BI<>( zB4Lrc#XbT+QHY3DHXyfx6@huEH#|@-t*n3=V3ddxn?zII6;|&bZzwMQlA2hk z7u3rg$+4~{^B_|0NCUFL75QfG_8$JMtbBA_>F!nGB#e+{f*5?7-WJ^N@LG03ZDap8 z!*o@9n=TRrSU4L~SpF#ae%Hw?Kd@$FakThCfiNG#v!l2Z2Xp$2nq1`nR`{*pht+?CJx*1~WhZ-Xy=ii8|C zd!wfUAt6O5Q+4L~J6ysbs>2Z~b_n|GebIA;FNwIffhR(IU)w31?YJzEykJJ3wTs!P z4FjZenq6o+%BOqEnjYP1S7p6!&j-4>(~F0Sx!D{qg=Ef+r5G#L)N#OvjI99(r!^~E z+fczIAjfw@^QdXT%bV>l4kR%vx6Tt=lEd(r4ST_x6l!FzlHffEauE%F@6IlREgDxY zhO?7|c)0sbN4jXqjleeH#5!<-a$T{ZJSmiaP#7aGn9O>KKt*LOG?b{RKq23%96_I)ip=k!+x0Y5`-cIC2BKTVzrEryi#*z0zmzQ^+n z5CJs4AKTOKdqNf};c`bk2^WpaYOWY@3ET2SR>QxCmbG^u%Vb<=vh-Y>YiBpiiUCY4 z_x)N`WkPRmju5*K^QT{^N2nQ@Sz(^=6i<7D1WfsNBZod4@hSN)>7d|4i5$CYt#^@O zK#xn*Kns62t#>EcwL~E5O>&r8Wjp@qpOzE#;>!y+N`wYtsz#v}T$DT;obI{N`#-J0 zmOdk%*k<^oRkCW6;A;}{-;p){VSN{QFZM)`iF-D&e`c@^2?&fci@_)b6aIs~t;cVJ zmQ&c>=)A<^!y9KLuPm>9kFXh-ZQCbRIg!n12hy+6HW5~{v1EqRca@3}J0OIfZl6{V zLlP2<*xApCV*}20q!rfIAjhCM@-be7i_Y?0*R%ek^xy+(o0UkP%Ja!K|8-f2))tAm zj>CG@f z8(9|yEsKCz(>0tgNm|UV{+&Dk9oCNN$sF(>0g55Ced-(R{Klg<&xp*+QR}!+(KOo?Vt5uKdUTG^EJOz<0@))FRfSr{wu<^%opH~Ayc*l zNX`o~ZAz~QcIW-|&Pr5EOF$n>{}OIL6pUIOj;C~-yg}&}Ge>K!Mg{e~&(ZhVE33^# z3mG&`Y+V$eKD7;Rfn@KRV7>Zl%-A8#sDj0tb4C7Zq=|;&lN`HOfx1}V0x-UOD$QgE z7XUCQieGRs@vG7t6lt<5$BjB)I;6THZS+w}`3`TNNU}TqhPG@f70@fSR^pK};9|ss zWpQ-Ma{Ey?bbDC11oo$Mu+MxAq9Fp1RV@o2GhuXycM^Xw4tF%^OoE`pmNu`DQjZn zN`nJST&2Is;{gL6PAy$=vX4R-Mc1X!Id`+76~NHs9+^U>e-##m-ppV$oY|7Vl5@BR z?NpHu0avH4<;^lqibn#9TzVDIzqx9AR!4`o)kB`Ku}-uu>g9&|Qr*NhA{mK;A<~C` zMW$@K={DC=&t+ZwhmqjFe?QVL3(G;xp^uG_-D}66jHhu8r+$r0ftU1RjmCJrM>K)0 z1Z63=nH)J*GBvxq18y_cYF=FUiL_4K!bVXg>>&hP7GrCscIx(ok!)T9CK~ugXR3!5-g9(-|CkzKhvDCb zBxs)ax%O8hTVjl##b{zD|6m~++`xn?zW}M6bBj@q0k?j4{VaADhfFNE^V0OYfH_4Y zNR;{h#LkMr^Bf^&YU|kDDRp1295BVwz~{!2HWylrqc1GD)1v^uQ%?1=EF7LIj%P#; zxO#P#>sGGzuOX44kvo%B?^-SZuleC)VRq?=ZXiyotNAb|oa}&tmB5$>5{#g;{4K|MlwZ_7~whX6w6b^LR-RXiZ~n(#mqB zV@BfbYxT&`XlBJuW^_x;3|mvrz?=y#MC8a#7TFR|^Z{V<{d;RISIVh@iG11+*1PJH ziY)o}&|^UIbuH2>p5q@FCjHVmUam21HH_GX2Y&4)p>2(ZX8FZr2pI66^G10`_;x?^ zRgFnnm_lrB4|2(@jaB5B88G1f0INywpKbVnIP0zW*VgK=PZ@ay%sBQObruoM&8%#X zLG+)JK@9D&PgD38p&e&~e#U6i9mlS=Ww~>w8xuV|KOip=+aQAkY|G*6R_V=oZ}h)V zKi&DK4*b6z-X&&SD}N=E+t5?|Ot4+JVW zN&VdD8CJSbPya?p8s;&2odTUy8+vJeu$KA;i>ei(8iEv#07MSfil6qM(^rl8f}g$6 z?dI(TYT2uLLf^Dy)4C=cN1_l!EymW1aX**i*S{3wS+W21-)8!(y$e#e`nM=2E6#%l zglR@Sy2{(dsYjyzjunh>e%O@Rt*_E5V0f)3X9Xz^ zbT|jv_*tS|%W}5ul-FJ0O0tjF_ zy$UBqVh-HPttbD=Y#Wp*Vs=nfHUS^%m#bUvfMGrj+NE7p;Pqu;`tNdmX{zuLCWO|+ za;^;GS_ED5`dWjt_Dq>AElk|MJa*yYynSJMDTv)!H9k9@(uVcPk^z$^ny~i)e#qbP z1KZbGv@G}ID2;=`z@@Sr9!C1ND7v1-eJ0cRIbnsTihfPJSi(Ekud2gTFICh6%LovQl$ zgQb4@l#I6Vxa29^;0J;`hwUrVL;uxm4o5l-FvCOTQxt&Au~&)zXp4BhTP=9}$K-aoM?IHqG* zFyhh}$MEO^ytu*F_uC=8gh|T5sqnvhKExRb9zVzkBBG$EZrA?+h-%Kg89i zSGN7FwLv3Nu;!-Cf05I47_ea~$h_l08QV{va;MDQI}H+a?y2gy^ivk;?PVVK02%dc z8YkB5-FG?hnQdXOiZALiQ=BIkR+Uq3`zH967$>U!v-)f%T}2t$N{mrlcc_qJ4>qv- zYuC`j#JAWRX+QN9FxVKJm+B4xYl3-B&~<$4Z*qn9RWFD3uV+`uWvALGd>$%+gRHEJTQ6cv-764amc@iu7@KRD{(s@G6yBk-QU~8 z{^C+=f4h&%K)u4DKn&9ik-L`6K!F%AkH}^1Pr#QNPSaw~YE5QuTIH^Ltc8aDENmOQ z(Uaqj_I|xXm+?dHmoB_aZlX`!kSus4V#zBkD9NwD7LfScFlV{h zZ6Tai13)I*lj@&Z&usy>x$G(Y*?hRdNW5KDuj+>faHK&c5y&I@_t3|G4;@UbCRRiS z%_C5nfN8tbtSSm^&kTS4JGxZYLzi?-1em=k-=l=buoRmWw9E*4X{JR= z{9;QTjxOzZq#ilVTX}GGH8$<_Kt-rhkJqmW|bUS6MH1M3Ir~)i%Qs$#dYBO)Z~=0{-hw z325nt=H!B}Nv)7`lXaham&n|M`OveHdZ<7o0UbG^zPz4OFSStR<9gFn>az&%u$yk7 zcREaX=W1WXSwf0>01?zH;iXrBy835gJG@!0dzu#pRSquf-Xu3LH`}Uv0eejw-A#=x z+Eii0*$-~gV@HZXp~ppmVHHt0j{8L-<0>sO52i8B)SOW_c3re(d3ETi?u;MMGg``k4=s~pGtlqkRN zbmPeL&zFJbQ*n65|Fvo+q%n36`0UT%n3ga1IK%zAR|`ej{}=(QysX-~x*UepU&xlG za4jyUd`m98m*f4PB=626(}df$@`Z3u(}W%zVATF3X6W&WPlaixSMsa4>6zi;zc#)< z=I`h3R`&igt&}5-0@4;Vo($9bQaHHqaL&0FZPe!{SIM8x#7Wclk+pUb(k56W&;g3{ zJ5g4Rfk6|uEdAz%uPizp*|-;Hn$`a0^@vHhvD_%Y{qQFIoM?#QrWLwPzpv=39#Q8B z+M!*{jOMC!pev;{NQ3HW2Y+EXPB;s1-=K@4&Z|`Hww;E0*X$4$&OAA0$nAy4CXWaOx-1a>Rm z--p5#vW~bIZ7Q__oXz(wj0u^h7ato2(ig*PV{)u>ud*xfilt7Ix6D@S(ZOqc1jSUx zQ(yMVr_{_9;-yL}mUb*M5}!^6eDuTjRJ#A#kr4?f$})_!nETTRWN}=Q>dN!I_g^xl zp08xxC|KH-t~i#^EZsHvc7=W(v6rUb-u+vA29w@BtQPFAac}iz@+wrv{)p13ZH)?{ z%|~G+wN?oLWza+4-rsQHE1zGc?-h6|Pv#ivd{);Za)FZR}MFcHXkq>xKd+CN(vVwJmn_kc*03!}FW zrC|gr5jFHFVl@I9V~U5bFaQRIrtX7Y&!$`vW1+kPy7U9 z%6(1JGvCmB2WC4wj6A$9sWq~kV>!MXy|5o1!nZy8nfUCFC@kPakHMGl4JS!y0J6ki zOIdqsG%i}~KU_Zv1+bAdmOR1}LReDIrE2U5b%-VI=lw{}7LOFY1hOsw4Zh0DT9a<2 z*<}L>7myy5OsV*{~-Gp$3ja zJZ|9`a_=wkzEttk%*yhFsR5$Ij+w9UXhnc3t%2g3B>z3MMlHa*_W!7;1TjjvzZNn@ zrZPD#uz1RVq&W2pyoGkdAUVUqs8m#kG6ml16$LhhlJf1JL{pH-4(yC-)}Y zZ}MUmV6Hl3D;xE|7CCRL}GsvB)A2kS=fsJchU7t!t5lrSLx~Zb0y{qVBaw+eKpc$&Wi~WIlKvygIFWPan(wrF@6~tOH_pmF zS(H0lTf({{^UvCsVAz*DVahBs!K!}j>us&Gi9P@9X)FaA^Q~~ePVax(g2S%P+Ypn^3yA?bRX$n zEQ~AHzQ9u(QNc7W=9$zb1j9%)f`A@92N?JvvnNS7dR(p)0o6 z-{`lFr+|m23S-VH+$^L>U4uzD3+P9UX%o*`EEC%4{;X6SjCXn+Je_xRtU^eD&l|AV zz+sqUXMWBsioC$OXJ{}Qe!yo0I}EX?cCg@HNW)n6C1>+SU@O9%@o`Wt_CItPniJ)c z4N5g8BwP&NVO;|f5sZ4DT8fAFI*M5~ePt$fg<71p#*FV=Uhu>;ntvLA?G4rY_dVF+ zoY~v3(Q|(?G$`ymr1XlLO>}-L3&8EN-1sG>))+GLn14mIjEg^H5#QV_Y=G|==x?@r zhFUonHig=x`qB9Z0i?QnYBzo=1QA0fRX#r$FezV!6L3GrExo4aWd_wge7{FK+=Cwm zTfu~4XBtMGn8ucM{=I8Hr`X7?FG2iUu;?tycxU!=rkC02TIs9G&-H((T*E zy<1jhre$TORIbWZ=ExD;Wol|>PTZ8{#F3gC;VyHp)YP10{=X( zx|e>&C5RIR7;T&9LEGHTs|E zwy@>cg@cm5Ap?(E4p;;g>7zJ>#h-b#zGJg>hshIYKgyAxgLob#6p z05VSvvrw~?7z*z$U$mNRSE%swc;r}Yqo~as{QFy^yO=0+2eTBgPiI(D4FPkPkmP82 zce(+Q5AE6NX?o&hQCA&lk{@Zuzy#kt?7t+*W@H=ag`1u916#kFklB+;*>HE;MGK90 zmInHj3&>CZswj=cZg1XrM*{~;($g9nZwc6{eg;t6LW6RJ1Hn_gA&w$#4)T1*LZBsx zo3snbR^YVt-$bzxdl{^H)+N8ksEhywsM73ew<3tYFnOk9Ju$TrD&o212U!4TjiflN z`2qewGNuW9oPp*DfR6L%cghEStNqB#TAKKu_B3YzY7xCfdt(GT`-j+&kzq9IA-nhy zHLr*%#hpa(u|KoasTNCK|G>rcn=~&J=-bBNoM}`|p}A%)o&IA4oqwz+%;<#tHR9sV z|C(uFE<~GLcY;V4?_(Yg;ZC#6>m}tGItB46&TobuM{YYSO)aCUC~cNW$YJ>L=skFN z4_l)`!nZU4TpmaYB^>ut-5%8$!28$t+sRfacb;lSnqe?m`*2z^rWaKhHhwXM2RJsR zNx*&Vv>7$njT3dA)+$q1@k~< z@t11~Q_gao5kbuke1BsoAalys`}EZ3cP6)^$Qj%crb{;ikBad50*-k33HqE)#LHv@ z{a?hYpFAlN3BBW^hP2}~0Uyy`xA9kd#EdO#)RX*lT3_1+>qGjl<|Y_v9QWMm=(vn= z8p?NKcx%jffVH}h4hz#@8a*7XxzApi%9FR*oj`L`0F0-Ohu~7~f!@=7Rg7Hy4QCgL zIqkm}zUr`^>^2z%w7i6@t{IA?n~|nnIj3Rkui{e@_u_X@6?P^eW$yll+MGQ{ed@_! z;Y)A;mF!19_XXLkVR|F+Rj88=66a_W+m_Td!0{rmWbH(A#b44-uR&fn>z{3qdbN|~ zXr?9!vIW13wYgIZ_`9la(5{9U-L0sFzSAo2ihB>4I&gDo(gQw?B;fCoOSKRUzcRHn zY<@`D2)R`DX)j8U^k6cTPVC#~NF*tHk@kjA?gQOeN-*m5M!6RB<6(*Zr@hjCR4;pW zvWmIavm$z}c6$P}k(jj!J?{J6=2(mRaX{i}(kVATT(O+&4M5suy#}pm1u_ z_74lvgP#K4qLyRK5;0zZohA${K%+`FvTRG6vnuuyxes<#ZtP}JJ|5L-O5c!NhCf-q0* zuS#98esSOyD)7&VdV3SO<89LQi4X+zqB`R|Fh&L^-YZ2^@pDcgpYD1IYY$-~rsicB zovageZ=I|75si>ozku9($x3j(d&L3{04b#$e0jK^i3Sw&M!QSAs4g7fH)h4QsFiC7 zy$8%0_}v1l>Y8|!1NcrTX)G#gB>FC!l9^XKUHYEP*^#w@YQF(K^{`Ep53c1NxJnqB z=@hyKk|Hn(3|>e5^K*?jLIK~AM>AE?z|rf7^#(^Jot`=YR~_=u=pGDUkD6mL-J2ZP=Zzj2!W*)`g05V`758<^|lU4lhx2GMsy;nm2Mw`jplM=;fb&WuMS}k?fw1G9D-4C;mUn zd(J$q!Y>5J5AdZyf;f8uX8>KZF}MsrU-F9o2{ZsfKO7Npd!5*ed1xfi93g#5%Hg4P zzCyOQK~e4uU=eouN9)3K?mUESnm#HTd@=LHO`2QU)9?4MegE^2dlfcJNY>gzm9WXKUk}B_ zeYl;josIci@qp`CuJqv(c7~iHC>nOO$#M%E@<)+vx1lRuD{z-r>QhP2N@L|OQ3%>8 z@RwLF%DLx`qEsso+QsN+-obE7!AT(a{BHdmv{)kAbWYk%u9uLv2uyzY;+nMP&?KkM zwrQy*I9YpN7_Y2-xy#!BbVKMUT!YTL_k%+LPMF~SL z`N_H;{B~eY4?P1Pam~E?V1RIDhA^C4_Zt!;SSDOCyq;`{n02w+R;F?CY3p>0_3nS$ zgDxM7{|t4d5+>x0XiKq@v`C=txe^GsOf5eJ4T`h=v}uv4GI1j;r`}O)BR2yg!x>hC z{vzU{SR^b_JlT}>6Edxn`+pFDjTEA8)`^zQb5Gs(KwxOB>b4cF7Xz5Hma z)^Jzj7Zp}t-Cs;vzBF^ZFLmbR{8fiKOm|5kr@$eAi+jttBP+)xu+%oW9WX(6!ri-4 zx`b6fR>!Ou-TCKqeYeonfxo|DvBhoAa6OC6G$SwHHVv0r&2|!T5YuK(HaH%*f(@dH9;dYSBQE({~-kk)DUj3kk;wtqP_2t&`cEu9&LOzbyi;0}#I?FB1^nN%Cc@H}N zhA$j>IW@15Rz|WTlX^~f^M*%Ig_(bR3@Demv{W#!X{>mn`MH7DJ)|M;%gUNBq#_`p^4@jnDPHWPB{RQ~@g$7pL=%cCwzKekC!5V=^mRo#ITKVE`NG)r=$fs0e-;fbM0eeYqLMN98 zW-3MypN*6Y-;AMoaQ3`lu8(dKLwz_83?*BiMAn~I;XJTOSuuN%5H=eLNURrFw`muw z0A#c0oywPv)dL=dk<1irNKR<}R^!|T$$ebRlzxITs z5M@y;H)O0i;^~u^;p*!P+C|!?5q;sI_#92yc>+|&bKpZ2v{)0FvE$*kz*hpgh}B;spuS*YH{eq z$4)TWNO189r;SD6_S>WbER-}VT|)*cpH3V~sbbn`k7E7ipp(Wx9z8dfpKT8AbQ z<2Efi@^WNdoLM=kmvRHB?-CoIHr)JGsI?4iH~+S>b8r2QLUsKYZ{*de?%?@178woB zUr!(0+h5z7GuYaeeOgR*4Ly&d{C2?nXu6V*6*@&YcXtjmZAAl3YL88Og;_Orol4^U zdfS89zmx#q9ym^vI;f(dco+IxaD>M6#l$x0ebJz|$TiqadZ(2mHoMmNcs!5uP;=xj z)bS>3YT2Wk9&6vOPhLIECM%8Q9Q~ERQZ0XCq&ixQ`iVR8`=z!W_(T7gx#Xq@MCl_?KH-L>)8RdKM(rznV zQ0eR2WP360`dZX?f)7Q#mWhp4oJJB9zSc(Qpz0gGD+-)L`+u5V431~kX5I*#@}`oozjUh7>9~s*==>n4JT)7Gm^wf zdj@5=`Di9V?i=*YWXwC>tQ>w(d4;hi9rFXPMc76*v|i`C?!3M*N+i(k`?OQuYfd?w z``fdkJ>@0|`SjvMZ%eCroPY6aW^Fv#l_b2@Y_bMd2s$&|gr624%A%h;%(|k4CVBqj z`L03sSpX2ZP29ec_#}4iV!=FyFjl#N5zrmqq&DBy*A&g~wZ0_z}QvOF70>3)w*KQjMafA?LUXQ z33pSqKz9oe3d2nXRNfbXs8*6=N3kriN9?W0IO?a#;V_Cnlfei3y{Mb-GOQF9x6AGv}QC|F(cE-zFV@}OFwtD^+9%WUJz**e&Z3IyyJLg9`#czG-HNuLU`Zh zH&s^=c0#kb{65+^NRE#B=_mma7u>lNgLk>FB!Ah)?Xcss$D2lzhDmNWkUVCSuiGvu zpEH$vuEt_L!=7}yko&T_FH8)k97n+s@HQ&8T0U~FNS*Oo@R6;>aE}Fs!>qE|0u3 zmmCHb=RnS_2A9Xqz~PRAib849{kjQ8*4gdHP9^W~epmKR5H1w#VD#?)pg|`*<=^xQ zDKY~k`a)W|@5y*1PRFg;vQu@zdo9Q@yE9(At|=^AhMzrnPvM-!b2T`w&8WA$o~r14z8_ITIzkB3DM;0pxa z6)@khqOKxY^gISes{L3CWCBVIl^{#sQWxwb8Qyb-QBWCq(N>*WBpAxn|AP7nX6s1G zmOgsAfH_l{>T&Dwu0DPe-%(|K+uH3@-S+Q0Y>LSUF)a|iKfp-zAL>$yeu9`UHcFH) zGx?2w<;7cq?WmyYccwFIK70e>$vgeYjlHM|-&wQDx*V*2nl$}YquF1sL08*Yx$i{W zK)|P=xW8Q91|qPxoZEr1)cr*H7=-?7Pq{B2NyYaMj09hCIn>yoJL(d7ITNG=bg`BP z8!IDc`%gSMLzR952;kz5ZxLGA52_7MPj-7aiUsvmKBFJ&nz?>`{@_2-*M;R@4_1Hf zK_+x&v1P+#Yg@O9vw9fPIVm=4dv%AE&f`wFT)$@kirq4Q>3OZ+W|^!i%Lk~SZakEe zjJcnpe2nh=$;Y_s&A2O0dE(O5Q^>N?G5=OHXae)#r@G}| zl>|+6jFo~I4zueI7tXv6{H|&?2~zh05~Lg8Zt?HQd)p6p`=#+C8~dMo@pnouJCK7SMt$!gNy&}+kxN>M(ilKLg4(9d768KHv}rvyvB zjn%@4UT4!k=ynru2B;sM#jvXv{~U7v31RK(yy1@I_8$n|_IOH^*ea-I99WJ6yF3S*aM878-cY8u3(f4 z|BkT6t4B_3-rER5{oErjtBt%xbfzLVfqp;e-nXbSseatI+L1G7D!PH(6jVdXVW{-U zAx4vkXc6B*;kViB)Ia;dgzRx0=l?~!7Md?vral6!5R?02p2{3d4Hvx2PWGCUNb*bXK(xqNgOqclw!Aehs3-19WnF;nniJInTq6~QX zMj+rN6TM)k^2vG$#^5n|Qwy2QL?mW+dtZXl$C~jl;8|E1uwao&KZK?FOe{+88gw=dE%=}%D}-siXtdDiU)$GIUF4Ty2YOm zfhZgR-yg*dQ$6HcdL{wp-FN&HY+stXd4Y^_X4LH6-`=RjOjB$Js^(NTS#Om7C~xFi zra}Or4=NIfY2(4yplg4%Zjd=-WX9XVwdG#{5T3r<1pcTj)n-HUq%`&UgDV$Fy*B$; zUy=0~0?z>ueo6K7T@pJ_K(}65pyJXEQ)jt@gQ0m9b8h#e5 z-fqvzd}^WDO>HrSo>6&eviUkSMp}8}4&dnEGX0I~Jdsz}@p|-|%8^y{J}%WHpx<2L zLl@R`$Cj__quknF!H-|xIyHRtQ#(|@PyWuUYrn94?`d(Wa?XGLr|93Vg@sx9S4em6 zyy=H#3giSm==WT<^(xlrDh~U%9r7C3zQZYzmNPZlC9M7W%O#duMqstRQvJ(Svqc=f z(iyLW;$wWXj19E<^(y>v9;{z@&RqP?>wk`AdoRNjk-ct)ao87-KSENR#0cCcnsSE3 zVpYhMwxQxDwMXfE8)NvqY2WzX`;uv5$5l?L#k)?zBoW%mAKe`4UzL9kU7Ep!+40cI z;;zK^@BImic=dut+g{4)YUB7#k~w|3+_kmL$G{@k;Knv?P7LM>I~#ZX%S261k?umb zeZ99BBHW&%@|Wuc;A23s8@y&*t3mJl$L*i`!UOJZlM#^SV@Y_Fg%hVcV`io>&fVzX`fdVRHJ>t&B)|4kWA-fbyOH(|5Z>6rKE z{iwlB>#$Z4P0uI~mZnSSsp5 zXxAQmYKcp>4c&ExE!K9m^WxTlpP7|zPYyW?IvHZI(35w$r#i?y`GMW=b4K@@g@sXU ztP8%0Xi^SQ#u#jMWX+MaH|~FhdkRmS z3cWYSKD|1NURzR{-@Hq^6yv#G-FPeCDa}Q7XCptxT*}qrW0C5yi&We#*Cv>+~< zS$^=EpaKV}o{ICZeW3oi7a=;3mR-`dWlHNzC>tlWQfk+)Fj@J@e8sg`2`knmr*b`5Cf~~L91lc&SUOk(~Y)}b-!&qBP^`F zKH(oAA{-O?i-wyuo&q}xq&UtaFW@iT^hU4Y7C1WNu!}6dxgZ&j{4GEBHUTfG9+V$V zeqdU9dIueeKZ$aYkFt}ft{BD2pR;tW)QeUkx072=Qh9e|oOI7Ff^!~71D9%b4+(%VBHj-z?L{1{G3v8uLxBgZ$xSVtvz@#Hmg? zok*CuAExO4ZIzJ4G6c}IW$BLVA&*m=Av3^AXXYHB;vPqM)1INX!pw83*RT9p-rrui zhuz7L{Wl@V?3*~|)30BoU;!{%K5&%^iQ`BGW}+@JHqC$t^Tv@CN20>t~<3zU;H=k(>TLZ?Skt+0Z6DL%!ElWaqR zV^oS=$9{Cx(m_(F+kLcf?HB@T)cLeg7}RIjc&*Iv=5R>NE+Mi3HtEI1xo}XAxvU@m zJ$3g|E1=-}$|RIAtBZ}~d?zd>XuO|mvu}hF_TinJ8%HIkGu+k0pK(){l-5b(sdGD^ z4d{P?i}rp+84=`)goD-GJtZ8!iRvlw$A+@E8Y(6Fb-+G;0xKv zVmEcr@-gQbF9^r|k>^)B2a% z9OK$(UGpAS!|E^0`*t=5>BK`^MR=$I@5BcY(0pZdvG@;_4P=P^H_9S%jSZNlSH1R2 zO+kE$zmySG#qEtpHG=LD+Ya+LBNXAp>OuKeqe+7Ng)aL*MR?$n)Cv3aT1k2P6PDG- zYHeL}v>mrJaHkm_Z8=+a2Nx+oUAitl1ktW63?hropRg5p*6yv z{DF^s2VXSweLZKGl~Hr2irW=gq~F0jd2AzI~o*yXEI99q8&H$`Qk2$^5~ zS`S=naOn*Usgftc1I;o0kmXYMatRLq@_rR&pAfzK#~!F^LYh7I6bh9C-Rt;z{k}cn zJi~74&TPJK@Cgb|j4Jn%;E30R*`p}k()qtx(lfSpb8Cl}A~1WBDf8y8A~@70XQO`X z%g6dRVDH+KW-kT`RnOW7o1 z>{x1B4~M@3#=l4n30E(Hd)W3JYn}aG4AXTKG9&mk(ih@Re|rF5c=DHPV`FijgxfWZKWJLG5~w=bHAH>a%Ap+;9+py(rN$vNeEsDeO#h8mIzAQN7474~ zD#0gqTf%sIpeX}SQ#2w=1yE{i`(f}&7wDa!%p7df-6xdST2>|;0+Or2sitOYq1ro? zqV|LnypZkMMG{!BLVvvIPZ0dRGnZ{&Vqq0Ty!$m(;M0U5$lEVAe4UwfY_kr#$bm?rLvZ zgHJQg)556A#TV0OL8sh;!>5``Vgnu@CF$OQ*br9?+eGY!XPv@bQLn+H@Wt{P1!f}+C}PDlV!vDC?Ps)rwT16NeQ zUL^ExMu4{T+)EDzekZ;0osVz2%&=d&I zX;-153fK@2W1Ted%v&ly!!}s}8I2gbSCUQi0r%vZ@xVUrp%W-q))6A#$d=#3ZD;IAr`*}IaJRK*^9l=iv@AENdu+TR)vgt`m?~!vy<(X^`Tl%Rx{ z`+@^H3@0g_u5YXYAojQa%11Gb+0TYfe5Y5X!NQsS@ zVxo4{>O-iB;{*3SW#14Y(hbEDB%4Pz98taf2B|xQXqI)p>mg&b>9U=)2u1d5f73%? z^w{Y(TNaro*_<&>GkYm@yP}$pY#5eVMvR&R{NW8$7wk*G3~^mj>EUGmZfKnZgoOE8 z$bimZqAs4d0%$n~LGdNS>iVLT+1vRw$W%t+*5rPnE@s%czB*M&NI)=0b}lG4Ad&6@ z?0;?#rIjIvc#Hn{2SXzIYOau)R0K}(JYK%)ELT3hG8dm}>U}OR&}StPbm>ungp_sx zK4~5%f)FW02+^wb7DetEj9v@32#cEDmvk9SXBGtd$A>XS<9*XqoHc-)y+3IfI6UtI zV?ZLvekAv(yzD!-;PSFFNPFd}_3AX;%OT#=I8TPSU#a}D@%FN5T|^hkN8BqL_!p{( zq?b~+jD7wfougB}MtyYK2!(ish^eFjR*WN7BrM>=I~O|g%4%m-p9PYsa{M2#t>>4W zl1>nm*;rcs_4h`+ozFmiU3aq2(-%vZ35xyZ1G+PBbU13s>>~~T`9^idzes?P z8@ymtTl_Cr%6xJSJYi2~(MC$zxgO0(+F6QzbI{}d=HNVPYi+{HU%5a&0-BcpFT}ZV z=FI`Cl@0&xC!(yLg{rUWJHUDDg()Sb&cY{;oOo(de6#=-z##Hn#*>F&6dmWNa)yRH zJ2ZOx$TEOBa9SCy9tIk2O5q`aT3%M|laMvcCJlzQZf_iL)e00mmr|U2015!q;P-regwzup;MQ}(N^Sjl1p!71L8-1GUh~>`C>?zMC%*F4 z4sIpAG>xRwx2+*fhmRF*4S!`1gL*lLhGKSPhA{nU40`Ky#xnu6o2?&qc8A-Nzh!B3 zGVy9-X45(I)s2*1fUmNf>70HktsH>!@)b`$dCLjnHws|&TKWcopb_x{=JLvS7m9&X z82mMeGuNPqnm%xo&SKV;3j;O{^yscJr3sLBG0Gzv z8h}F&l?3mI_uVX+8SGfTCGI{;5h)#hV_kfm8M&m>T4gR6@iDlYv){8?c5UJv(0u|+ zfEIifPb=0ds*@E^bTlLNVq+<<<@JDR=0ym=*fOZJ(PbGh8^|&1GotoD(N~&g6qo3h zy>y=Bu}9H3aAe{4k!&sR?^=uZk&tFPs8>nTt;o=|+o?-YcDezXc3mrn#9M!$!P(EI zUy_ztf{}hcCkRdG7K-fa#L|JKzR+GaDPhj2j_@I4+GKHj)bkU{#bUe>e*olmO07;8 z?vLeM7jp3C1CbBL>I&)um~Z_Hdv~Dvvl-^L0S4h@8;L%d*QmrktDSo%t@(`Y47Z)L zG97}p%+l$O2lt4GkPoCFk*2}_0qq~yE9Xtr_dvDg#wH}Qf2KN~Kc~YwQm^FxK4p=! zjXI7n zLK?T%z7KIsuvNsbBgqES@b7*Luqz0wOz!{WjVJbP?JyHmuQ~Q6ZFJSZ-jE@Ps9#sVqxZ*h7pM97di zOnO6ir%bmTlI6)1t?LbaS}ppRu#=DcmKHgKBbtQ6Gi04Du5$jMZbz(N^j-|x2`Fvo z$vBy&)DqLGpRQ>W?5DCTJ!rlV?H{RGM=weJ_|-$`q1FX+^Z&(NfFerX%0m#l_pjxY zA;qoCJWD-cBh@1A%Fxp%DT-$!KKN>RT|5IfaW%Bkqh>Wlcr0gW)Kbg~BfU#V>Qo)g z-!T*Q33qbsq=&-j&w`uJ8vK^me7^oaY9P^S=-2i^w5gR$2vj}3|3YFZ%2Ay=#g^zN zmaX~fI>Ej7_8lP3!5bQec%|JO#J!RFJS^LJ-fnLeRoU?&DNx;fgzi{g$P>3DY5}8R z5Tl%5?sNh2KV8740Pr6S$yY+~=dQyr2>^6%-=kNZ3I;)J`-?5vHOCwTY^A^BRVaoV zx^`Mrp7(JOLNk8=v>-6{dAcb+EyQ%9xwMDneQ6(w)DqZxw3)OT(3V8QGpU(H?8< ze{k*qzz#6g*gFZ!JF^PJzg*7%dGwgXthPs_^+dZX_WB4eLO>ikp2jQ`W%b7!8A$7t-Z@ZF=KfSDtM)?$S ztbpYN<-yX@pc8-k3mC}j0yZ3~t`IT+)8blgaQ0KVYtYqa&BX@g@XXFwKUEE~rd?AV zE-Rpa$42?jFlXX3a1Z}C22Ppn#%49g@@p~sIW17L0*2?3EzYzCxbsL%rZkSGm_$|Wenz%~%Au@wbM!6?HANuRP3Gc(G}(O0z~UE5 zL9y8Wm3p4k>D3R`6{T`wltmEWZ`?cp8ugzg@uvf~^GQENBGJKz(z9(GJ9Gg3RnYl) z%s=%}mC^gG*2qI*E#iJ?rsFg!VB2(%)Mol8pkVR$c>kip4jnR%$<%=Pij38YY0-_$ zP}hNTgRyF8oH!5g31)*o;yhT}s35{}yZ315k>uZB0h8LTy3f?OOugH~FW?h)vL!!E z$&yGDs}FYF3yKZltSFtH3LQFw{wHZv51nH#i15_u_v7pr>`HML z+y#q|9vP!AjQ{C8A=HpN^$+aRa#7FoS=>|TGJ3tpA0a+Ga1Q{n1wwY8?j2ZrVx+IW zgf=>a3m)MAX>>ei=ffiO*Ij{ZC2}tk42L$QM&;~(47ra{w+*RY^?$j>rI>rf_A-X` zLwv*oJJkBbOOKuQ^FjVbEVK{gVA)PZuF+fM>$1Pt+SslByfrdvdn7*+2xsyA3 zcw6VsrY1>=FCKZl-r3sXOI0mM=J~_R5%*J=N%;=82s_$6ZLyk$BxRIeX`f7WZ@;$D z)sq8+X&k^-U&GEpE?9!GAp#T2f9hSA9K$c>8*kVY1S%0?5n9EZ6?k#>`UJhSdJEE$ zC=$4FcwezmwLE8a1H{GRW9ZJ7=GW1l<$FQWy6_?X05D;7*_{0ae3B)!#bIB$x#9Sj ze8GI}hCJY%fGm7LDv?Tz3oBJ62(lTA6rhKCVJmGgG~7lxk4-vuGAlp&2v;=Fo@#W9 z3;u>vs^x#8!VmNDZ*e>>M)35(-io~w6Ibt|>QISWtkoGzA`H9KhKj2#_&r^o@#V39 zr>na%@I90#qd*IG`ZFd{x$+`_H5b&6_j^>fuEOW&k;D{7-fl1pWtw_r z0Z-PX9<|AmY3f3{ILXIHnzZVP<^1Sup2n*I<6yFNVLG1x@H1EH`jsc26S2IT4LYdI zANvTl!IzBvd3<$YywWZ4%v1EQwPaEjWY^YJYMqC6ab=XsCh0^j%sm^OX@Ep5RMb9M zBG;(pQGrQ$LAt>56&OJVElt#^cs|lg0wYZZy})-F?U=%bCOo`&(W8~FTLs!1P#YOS zxKb(S?7-cxGNA{y_|Z-qd@CeUEi!7D`DiYr4e4sRx(+!L$k&P#j{o{7nSfQsGan^7 z8Wv~g8?ByC-Aa6i?bkDUu)BUWq~?bcFvRp*?ac>9)K@eP2fiw_dO7lE%zFwPiw;QH zEi^=({gmrhRX(`m!Qo?4aTnPoIJp(llroyPy88%ex|ZbiqjT|{B%1_b3P3nv%NC}^ z9=u`~*asr=YZJ0d>nh9_e~>rFsJ>q(1|+aGA3UG9&v?)Z3+U3o`qPFvLAK(xo)}I5 zWG2^}6zEH}xsp8vx?#qoP}EWRsDEp$7INB-Xno{2U9LUe`(t@D+M(^z^0z<15hZQ^ zID09!rM z{MI|k)@0>F2{WKZ>}*Os;NP0F-P)tPWkE{GRxLv!;PH(lGcf9=7v}t3vs=F`4$m|w zu09(AV`zr!@pH2FLsa=lu%KgVR&NBn3MkF#+)6WQOEE|peGhgapp`$5ByUd!6-5E< zhfPXZP-HwSxXLQ)zC39PRKK8-z5^ws3;Zf2_Xj=1v|?c2ecw*0$3XyUZEumr_``5e0Snb~CP$_>Oe1b}2*Nfz{W!O` zA?I0ou;Z@314Hy4$4`q?1%=|=rC4WyL8nu^rv8|xQsTM5W-HVhlkmU{H{)u5aJMou z`$BziZuqTYbx70!H`Tvz?mAVtkpd*R9F^KI;)A7}S<2__)!pdf8RuW92vMOych&=d z7cSFW`*u&nc(G-A-z*L8SNGv@t@^0FK~Lkk8QyWhdHeius7ur1D*LgWe-eCb;5bW3f^h zln$5%-zKHJiWdJ)!z24)lHFyxaG$;j;12p-6xoYUC!{O_Z!l4utdHDrP&@c|!Q-S) z>Ym6W{nZICq5XsYx-xeLio+iv5B|PW{ncso2}f_0B}E1CEvFaxoph+P2>F50tf%?d z5a5vT>hZj7VXuuj!`!M=mm-oC=x$Ii<$>nxC@22qH(q$l^o7y<5LY9u_SCrH>!=y_ zQt+-<>|d@E0OmQM#VWBw)_m1q_`BkkcmtOC3QdaYFpcbX*$>j&hI~uiU0U<=oePy} zwJPH@&gQ`TM+%c&UMefdXG6kzeUffSD$gOMXVF02My+k@_v&m|YVqPXkPS}=FKU+^ zje5o2TaFixpMK1webGDPO2O-8UWRyBNv9iD+o^qf{X2G%p41lDNL7i#$*o>dPAW=G zeDYhr-O-DTpzNjSvgt|6)Mm7nSCzGvD-XLJ7*%p%l3AeFFGs!xfvHl{R`g~NEWY*U z27ZIM4DPug)_oD_yH`w=EE&@oY|yCLM$(iI@{n%31~QWVn>#{(xdwW+;x9qj^bJcK zy$3H5%$raX4qY+@jNr7Dg^!6=@z%NFMKuSSzHJVW9C+6x(P=Xok`C}>QnB4lx)S2& z&R$4ZeH+Id6fJGG?wfjtm+4Mt-F8UN1oORLu~zSEBC!%OAJ6r5X6%&*?~_mFlF#mX z*MjRo?BE|>NA4Q3kK+@*k{9cpjxPCify#oW>^8MyIol89&sDd)1g?8Sdmp~Mj`fNg zws}as8^0g*;GCxoXC~>ZgR(O{+$69efb(!^wa@kH0}yX^tn35ApUfvqie)GDR#4}=#bEmvY$`V*}0<~ZhEnzg!Cl}9TigkGCB=)TvDRrN2-Vu2tu^Gh2^kX1Awz*~Wx z9Nu0Us^7iOjBX{mI}C(A5E{pNNPXIrRF<&ZUf{4$^nPU$*E$o=K2eQp_x;PIfhR0j z)%ckIuiYM_**@wVK*_11MmNjPKOep-3aAK{oPonV>2RTK9PoBE+vKn4Eav5Kya6u* zu|2r@%Y1>TotYaYH7ukC`4(sei}Yf*BOae9<#&Hd&LFxallPM_3R z($7l~>jrX8guC=wGwr%pvB2xvgeCSCzUJ8IfHsJbBCAeG)D#chAF8FAjZHwp>2cMr zJ?IUrNkc=t_xT#&9xf@*Thx(C6YlHxg$CFNfY;wV+{r#)!=iZGMgN27e1?)4B=mP|I4KwTO>HiA;}^*_JE{RatP_puA4wrngix#R>nH){L;3` zvtvn3PwxwDr2Y)8Lfpb{Lj7naAlmImja5s)Uxk2v3i9GqzDeP5!}wZhaX-%C(Tjo8 zR}DFLNj$_IMFBdZyV5Xa)3fZRoNc}?BoP4IDtdQB_ae|r7V&fZYmhBj{DV-Lg`@k2 zO3w;}XVAWjkAXMsHp$itMQ(IQF^+pj_z2N%PFio(A2bnwP}Fq6mxFDu?8hhTw3Y9;W?+o_M080;{W^}hAXd_dW^^6zk8rB`oMjkPX2bss6r zoS0SZcv#Xb-9M>qVWdx#Opf>uz)Sph`sSBn&*MouXWecGJT&MJHW~k@0~GX`|KrJD zb6Zw_x+dI^IfY8W+Pgw%+o&m}LEE4Z6T#(SBye3S6r>!5#G4pSvvO8KJ{=s~k_GUo z7IPlx%@O11%;FKYJcG|E4aW24ekUbYI4f=Ls{Z{`hqsD2H*722><5GIKSdi=AYq+l zeqgRA>(#u{PowpC4CIb2O*(qxl+$<;&reOv_2<~fx`6^mh-(((zOM}=fXfB6f(QXj zNB$aZ4}(G!CYS#Z<2SzZhZKq-T!#FHBtW>%w-KNB zYq+lnNjO1T;Ik0MO{+hofOWAVV8b_UJ+g)57ymvBl|XgD4N7y2-$OQt^W~8;*F`%U z-#;_VKyzyd)Xyy*nr}uR?iDlAEwO`dihvR6hFOfbQBI$sUXkMRJy;24%OLSTC{C3T z?K=ktP%eWScTc@}jWl`Cb?5U-poD3KjGWGYrqDD&QA;zoHGIO**&5(Gy$Tj!ybQfo z_hh4N-5C+O*pQ|0!e2O>eH;mp=xOcvaK)2gP@t-rc!z|`z*v;K`rSQDHd4aXA9s$O z|8;n`uk&n9K>o+c@u(LLhl^Fn>nr^Mr3L}lrag~xP1bGz)Fl{()|3zBN!Q~eze&Xb zFZh3mj`L){5OVH|{jvRX8Yy~6|Ea#wp97xQ-u|Ss(TtfSt?c$he z!|HAE@z|`@gK5=Tk3^1TA!h_5IwDzH6WiC|#LOz4yUVB_O;^o?XLcy|?<>)EKq@yDk( znAq;XH0zLjDX)GI*~@6zm=R`aA@ZdLp}Nt0{PnO+zv=-nM;F{3DYm9OP`gtpZB`_% zQD&BJQoY#tWo@9qQ@j>L}s{m?j&v}0WLURQ!66P6eKnaXq-A3Yg-bv1V)Et9l9Mm2G z#F|WWDXX>YjlImI^(0VHgLVB5iK^zf3CJgLa?dX2w}af$GB4;QOJt;pe{0nM1>i4- zq$evlC8q#k_y#lwVG6XD*AUOfrr~5g>rjPDK-L@^9`{-sy&(lE3lu*LUl@v7%E;l? zl8Pz({d=j%V%G)XSY&B6x6Zc&6)9S^iYQ=iECuO&y*dV0hfL3#B$+@|^sqc@?G^ql zB;Cb-?sa+tTyK`9z|vRZr^#u{_8YS?H}}gcTiY(etJHzlr!sZ2^2StW@i@cq`Pe3s zaO5D@fjDe;f#G;5at)XpPA)HE30^4)CU@fw|>Q}{7n z`8%HWa-78y{ki&rlemZf=A`uY)e6ZCH|AY0u_}Ulf(8B74$X%>YtXK zfFpuch_)e?BUJt1LSjw_Uz2kTeYhVO{>NO}4<02%Dot8P3BO3K*_(u6IKs5~;pOfc zK$??9-e5s+A*$CiK{M&h(L>Z0#rRUDyLb=sd1N7dWqYO8CNi5`4gQQB8CqGBN!iqe z1OO$*kH1{4u&`jSXe@|Vu5d;*CyAv}Y`gpog|MDd1ERot|0H=49}L>LqFRXLXdSl5=Y(yv<^H`X_$ zZfxX}Wzg;B)rOY?BU=hy4a+@!Zi_05BZ7(68X=l&*#psPoq7sSE(+LgaMrOaM4E9*&TpzF<`yV@B zs;$-rYT#1>gb-?P`b#wGXcKI@hfrm1V-%K!yb(hiBwt zo0Kl*Q$UynOtwY03jTdNuns zT>}FaGOkzT7R7f@U;00?-Ycr9EnEY|tzw5Qil_)tX<{gf6qS;#(h(3Tp+`kP2oRAP zN@7ErbO8Y&O7D>pLXY%Lq)QDoNJ|JU2`S#?8Ry~Ldmq*qc}gjh(NK`PXy>7s1? z%*D-(>M<_p#(Bv_(SlmN;Y`-D8{+6e1@&Wy7DSykR~`hY$UD>e^N?VlB$+@Uf-u z_M?D`f}v7<8Pi;<^@=z8G?$hYhhNI5o;>o0M{{Pk$A+XPRGtjX5r>NXD`!GS_vOQt zD~LdoS%lU7P7|U!09kV5;Ke9@D^;{V8=AioFkDg*$i{To8(;bDCANX(ozV%*F_1yj zA3OezA#a;6G*Os@EW#r$#&Vg{u7d&BE*pw~GtuHG2njHbhLt7;9Wf>!87-B$=L z2+ZOmLhDF*Ex>=YE+sZpHNLInU(pwor)1#H72qzkaEP@ePRI+5e6b7Y2F}D*q#b;5 ztEY_FXb-m971Ct20duE1&iiVuDwGjrXEiCHRDeO%}3l+ZV08W6nt)@IXm zvDDykJt~ee&Q@HwR{o93o89Fdg{iam#O@?X8DXYfXR3#l6~0b404{$<*dpzuehA_3 zW)OS?ENqk~Rgav>y7WqaONtv}>4}+{I}^aaSM=anNrXkz_9V=ziL+G1(G&*o+_dREJwC$4CYIhevqpA+l5GAIY? ziq>>CPN1l;e1>d(zY=|D52HcN-E*|S@|^?-y(s^kk>-Rihd5^~S^Bnf8@nDG%U-RE zp%+DuDfV)=$yj7f#bIc__O$J}^6)Q}Fo_pAoyZXfFS3a5k!Y(3jVU&6>0&{mgd6$? zc&6U`V2Y!N8X;{ND>=L_s`(#|G`MqKh~?32Axy-a<5hNJhPpCk2Be=ZAKgPID7LplOiTLM*ez!S?fMx{ z<+uteKLnHtO=&3Y%8r8kVipZIiXROhI(MH((!jHe}?PmKRsA;CQs()mAh{etG646)jGJ*PY9n1mg{wu2EkuUka0 zE<3>-98u)AqZ0A6PVncPv+yUBkK({&XUH zuX3I@H@*%FC?VQ>RKCwasZgohSp2}5A;@4I^9g5SVHtZry4CpkD?|EsRSQyx;_`@^ zR^H0WmikCDpd^U9o|YXKueV}1*7DimU7Ify*mq=9@Z1Ll0iDFTH~XMDR+#uO z<4w)JE@r_F(?Se^W@s?tf+dP&CGB|@Pe#2x+JqHiAdq|M_H){hg@IoV1B+o}>xA{- z*%!|?hf(tW!#G+jZ--cygD4~&HM=U&Wag-W1G*+R(}Jj>Zxj+={Xxe~QgdD2M0}=D z3bE&>H(Mxz`v{1-Za_(~U(u*B*}zLuv@w41EOq4fctts&@C%U4w2mMgHRKo{GKyeYq$PB#|`@OJ?l=^N;FnrKSn z63n$OiG|~UQEk?oPoQ${n->=z+rT4#iBAL&Qti;RcIyJWHgRWJDYV$Kanwl@ozm0^GR}0rBglAkqj)sGU{K-qXLAsw{r~z$VJx|$<*QQhHaeR=A`){c_oA}q> zEh*U^A^%Socpv@sq034Zo{MellsUC;uG^fTqwm-x|n_kM~Aq<(kFUV7}xcfBk4 zE~%w|>g3P+f1Ygqp+ZUEUF#A6AomBh0uj}B!rU6r^x~)1GK;X%~@eh(b^zwga zHgHV`0btRuZ=9mk$A%1M!@1_|^uU}ma z@0^KSd3|i9sc~1~O4TTq=}mV8eeD+XJL%jmpm1@`NcN_}eV&%3r~7UchmU8dc9x`($ z4)xUl!)L!0s@3r}%NrYpYtUesL-Bgzc?vfjC@!z#NM}EpO~3Z}>Zx@W_6WGkvHTX~ z2B9C;sW#Jk&Qf~kRhH}#P?^%jvfAiXNW+Cbcpt?w1)N18@!B8qiy?D)i6rb#Vu;3N z#Cnh3$u#AvQ5aPM1!V}?;Xjs4C~O4mw=@ItYwry?5=YgvYA6dmpJX}Y?q7zzYpUh} z3*tyr(cb?nV>6}ZI$2c)K>2G6#uM5ThL3mH2Drh+>hJjIneP30#gpIbW6H<;A>O*M zr~6}v(JTwL;7@aVL!$*~4R~AUq(>K*Y;^c#EV}6)=HBQD#+jyA`*Hicacqea@=y}p zH~z5vr8r6LmwC&Jmk+)@COC8v2VZ%tu`>Q(LR;S?{MQQP6k80jNoXSoaV3@d(L8$lP#iP7gn_phar-K{nAcNfZk#N;>Iu`~{zT*W z!?}>slsWpKOpx^KwBS-IQESLR@x;qn?J=mp_i43nD8t25VS4{5=rK*r@wz6~vXiP# zbp><3b%uBCtUvycv0RGwTI)mj+d5ml-uJTQ_-LHb<_;=E#}!D?N~G7sczrHzOSCn2 zNOg8uTF}0HD{e4;{CTxpzohx5$qp|DUikf0-*7O=bw|*9?}i!ES2d8=#>GN^C__Ew z>?|A0nP@Aoi*Pdf4KKjQ8lGul3tE3}G)U(UsShq?sG4PT7}m3tqKh$i3z-=8!1HCV zSNcjA6{eAfZ*@59VDW-4=#$!YT$X*q=)H z4CCudZ;n2XiCup8(Wxk7X20lH{jyCA`O?JyY9QRat5Jc+fj) z>FOLMCtl>fEvIjHh~e2e^c1oVRY$u^P0HOMD6f*S4>vNWqoQt^j$h9SuusYFj0|f5 z*i{?Qk2W!4VJ#@7v6bW(X*W3&BR@uaIae45Zr5&le7kX{Z|9u`p*Av=W^l@mepz;V zfrVRzRfx3M1wn=-p4@Z4Z%^25zsO7_KAHl^cZ(MUfxMv4a)UbLDHUk4atA>%kb)^f zZfv*V1vmB|{@Q%d-}-Nvk=GsVjIEkp-%-2Qlw>7}r89S)Vg zGQh}Lc)m4Z2!Qd^!R8Ou7SaC=v|+R-U3D?_q;iqn+SFqAna3enHf za2x>nASck1AfSNLC+hZ&3*y7)xH`XOqB1WyAgx2FlFHkQ@6nAYE9NLWhthZ64`@LMFF4)CKJ2x7_(7x>*Re-(qP-k44nHUG(5_ zX86-PF(U;I!IK#khr6Y%Bz$yAKIhH^^+nb|>T%>z>kN~BRM`L2+62;%(N!ujetz^- z3(&MmwBk^W*AmjnE(}eito80<6kO1LbY;#6EWS1{EvldCG!4XVU6F0yv8*py6Y(+q z>N(QtCF)rCLlSY5eu-Lo#H4(i?}-)@JSIOE695poHYJ(h=!UA8j5*$5 zhBWUZP+?1mX`p9x?T_QxegsNC>PzO2HaJ{YZb6Mw`qKa`4WFsi5PZ_YSLS{UJ zx@RIWlU2N+I5h@7hH<{wPNCDdqH~hF4PfY?_Z>x6Lbj+aNHPNO*o=v4hMh7U;65z& zm1F4luz;??lqP-8@D3(y_@QM+%Odu+-f3m+v_|7b0!e=tBHAut@Ndh@e;#r)thcS6 zZE4H{Ybv1eLC6a)M>7(Z9F%|1n8E-)Dy3eJYqy2Fr^~n-ZqtSr z34A2<;-u};Fi9CkK_4HR>^O-^G`$p;)N|Fafy8m{X)I$KF10*2(Lk&3jaimle5lq2 zo1NT-#<7iP0xlCdC7)UO8E`pj4SCGErRDPyHWH_bfiRM~b)Ay{&@%~9TfJNp+e%BN z1{o9pPVb)QrnjJpwuVUv%GiL|!b4Uv7bwTxj6P85Blsx=m?<3Z@wtvH)!tFLpW&jv z_}n|YD7LjiTjxGl%f;3y_$>KxcEPGNuIXuHH|9Rr8XO4^3redGzt!@GC(60=^My4c z%=-PMe|1c(*)lc}KX|Vg>0nEgBfygXqv8Y#3ZDPH4xoW`8uJ_QlDE(;L!9};gHGLw zQsqJbZybMULEjBsP0yI5TIo31kMK7aKa|$ZP01@wFOj+*AD*nOwjrO+ONrR!5A`)l zmB-)+gE=MOpcAnRSoW+M*}>R0A)Y;;5*Om0o5Yoty!v=cY`n8~CbTayW_tzp4FzJ1XWRLe7(&!czsHHh+L>H^OAZStdH{}1ZVv<(|>?0v^1Os2A>hFTHctPXSRIQrKbz#b1l9bEhAQZxezRPgldz-|ahuraIr3rty@0)z=tPxZ_{NSPeQCKVg zrL`HA5gW6y#RrQTzuaTj-;Q|FpQ$fGNToXMsU_TR3q2)Ji_d*NSD2MoOw1F3MlCV83gy^9Q)Pqb3 zgpnmZInp9`p3}WiZw#SYH_@+h_N=#M_37)zd*1H-8*~do8u-D)!<~h57PWBoyOMDr zE|QW|-_n{oZ)2msjZYSIcLj8@&TlBx9CsEudADSHFo`vKshJR+S^J<@02I^vgQ{73}@t?$>y3 z#lUxS6*FX7ePNZj4$4VXQTEV^>hNX$t)9fd1?uA`&x z1+=+dV_DLdc2+QV)^12t75N>4d5T{Sz6JY=DTltLBs2vihe@8l7&R#4pl&g3#1DjD zY*tlaUW}$L5k{`DTOH1G!1M=mh!*;$PBZp|zb}RV`jX;r=h{g+n}s2Dkx}xnJD<&# zLS>9Idj|LLx6dnVd7bMl;V0qcJm7Tgo?J zHcnOr{k0o>_Ucpc!cLgBphI_1ToL;W!_glLV14IH{_w25?@wIVUtS-d6aGBCqgt0H zZ9HwIy~y4lo0!P?EYP^b1jq+~O|4+hiQvI{p#5otE|)k&0=XZHCCMh3Ul3I#(m1Ij zz;au$iLW@lKB)yi0OGArgKnZD6pvYp!1Ze?99Jd6lR=-cqr~r$q&Oiot5V{PW6$@L zKrnm7zCT|Ikv@aRJ&XZDNxzmbT?m{AiuJ9$7Os3@@ z9@Nh-?tbw8C4WypQi-WWQ)${)3E6$;oXrfs0J+{d8Lg3(%0%(z7dm?8i3~ZvhmZe~tlY@ldKQ>+#9Z~(+K^%yOvgO|ar6+dCjtfS@j@r0-H+ z7yMJ99B@PuT{?w6Av4fT1YP<3S_2ohspfnVoR1qjr)9bHESleB5SKc7f;4jq%NTQr zIw0Z~>+$W|U61%_qa&_8mGNuF)fUHpuuKiee7$=s z;@ZqTOvZO?t(+Q;vxD5Pn;5iu5Uge~c*lLQ@+q4@Aa3XWPQ~s;Ao=NQ zs;zs5o-f92_4s=m7aI6t6Uz32arAaflrr}$P?neZ6)>vKUkwyF2mdIeUw(=z(9NSK z6?^rVC~U^TF{p#3yD|eB(2!o`3U9h4d;Pv^^WbnjK2{j{+<#6pon6j5y!|eW0g?po z<#CUV&=C5Jg3S#657vz_=deYL`?Ec+@j77^6SHp=BYKVO6?)Iooj@w$;Sjj-n^d6~ zws8*o!LWCjqAbX0c=o6JY1tovkqRH%eNSvxD5kyt5B*O81)j`*O((dsNZOR%*u`j= z18igVGDKkis>#TRRU5!m5napOF_J_&yVCW=;7Ky_ALt~hO1_0QE6rASnUx%-Xk2I= zXmgZU{_@>+OJ0&Wa{>C45-3&-2Ma7A$S7*bdjaM9~K8uHDjSf#BR8F|O>=AD+CukA!{6i;U4x zCg47S9Gf6ihzF`2%tzz$yU|-Gm1v-ZE+)X$pyi;Rws_Z6d})_w#sTLK|L7hv_YO02 zb6S6~SLe;xK5YZhF%{Ud1pjQOnS zCyAGUS<&)5pM0{?anOQJJG^vC75GkikPpcb0d^Z*EQjlInGfjCMF=+;1jeZr!c zZ+GHu%8BP2oF(Lhp?F|KOll51o}b7*d-wF+>+`wMALx(c?MM*z;UWQejYyT=mIa)+ z9jiJdaNzI?5^toUI*}REabkC+lf+1b>Ixc`?^F35@2@a?ZNGgK091gZ_y=8WZ3Y_!WMzp zKzLcG=>$e{So3enF=|N3^d~Sy7}lA;mi0U#pq*vv^K|!uT&TBaUj8&m_}!j2lQ3(3 z@AF+Ce4GUka%}a+5>9w-E&Gy^zU-4GBG^4ZF4dOBr_EPRx7sVL7tV0Eoi{0^zLeAc z{b}vPc6Cvf23S?M7bF!X^ZHV~f^H81V5oT^Hpk3f9!cBySUK1V3{&p?rER(7Mv9UY z4l&_XL*CnWm%5k0dG8)*kB5wJ5qb$Nb^s=-8E8r@sYHd-1!}E00uGO3TrzZs!*9zI-0Jwb86++Jy_%8ptcQAf5)BAhZ z*&Cd%H|_=JYn>IpAT zxA}kmB2`uxJqB*+T>3iV^n7b670yKJ*$in zk4Us|Phq;+9K*>AZZZ}CUSZLAg*MOb#i$vToE;ZD! zuva~>g*)QYh^nO7vnNuA&iBn(qbNvY-9e!Nx^2rZS$+H}F5E$z^R$ zwv`p{+vmuSTT4W7H6dEq3tOTRjiz#F~xY|Y{sewf&;1xkbhs#Wtu2)h?(}wgMRv2ctzdnNUVm&i3JZBr^p%L(_ zA@%kE)tN&g*49JXGo)=^SPh@T_?V&3uvpOTXE9Zn3iXIbe)P1g4$#55qs9?C!Nbx7%`u8hoT9yG#VqfF-fSgPb{)*zi4%76=Z^my*`Bojl9ktBQ=YPtv|a;r;%YUa~XhL5SB7GbA4NSM7;%`o*+7BI{` zx98P6_mx#cnKvaF+cxk&)fp*7_+@#4tY(yuO9rkFvx==tS*&Qn{+Ao1|0vcF8X!0F=)VtIng?<8Jh^Vvae zJ2Cu3_d_+o1c{)wLn!zg%YNxDarlM6+O)Ff*oj4~Qh)E{qSJ0ku>L|1$SH~~4zlVGIu5FEn-b5e{=9gTS^u6oK!z5WXihoKO75(ACUb8Xg zbTdOx){D41Z6k{b^4e-pJLhjVeqj-yw7WW-`6Fv~GiA;Qual27C#{v3_o%j2?+##0 zKJrC)JziBQk^H(*_nOqAA8)aH?1G=N-?^wNN3oxK1#Y{?-1#)NGTQ4-*c1i+uCIxM zD=)XqwHUbizWFtLkf!(;NdX6lD?+P<{e-0V!Ri`Y=a z{99^qr;%RdT_OhFskr4?)v{hcDI8PN<_A3{LP?LRo5&Zol!pfJXCyVr9dtw2n0wt? zHU4#`ExA^{Em)^1X-vTybY>+rI{8>s6(L?kqoYeBMFIq!qkwPut>n6) z-E7PC@q4K!iUPeOpNQp0-5~~#FudkC&sfc{e=8e2+7=^h4Bn^RG*~R#A|W};b1(pL z7pBMqj4MU{(`{m9!%B7IL*CI%4z;g|wE*q77jV8yRQT2hKR*h!r_u2n_cl|}(S#Ff zDsy{v$L0wqCk#uiv`d3hic@9d-*NVu9;x$>60VN@S2>9Fk-bWMj32h>8gR^*M8^?& z^Z>=z1&9wFvX+C&%8T?+J3LDW#fa{n$DM*}4_L@b?u)&W{q~RD&&<|%hs*lr6>*d4 z=@8|wV^?U&5$vZ62CC;PJL~Ti+s$-1pE(uR;t8(REzdY@bY~vX;-o8LG{cK314~gEm@pNXQ>!NrXdb+e&nfxn+P(a00 zv|c4O33V0<8t%M5u(G5DJFn%qwA=$^da}}H-`g99AQmX{FbM4Wb*7+O*5nXilDDa* z4p@~Hcd&KYHsZ-_=>GjPHL2>chN}Y8v2UFo#~72S-YH&p3UIqSMyv-Vz$toqPIm54x$cjkW1QS|nD7bzP1NDySo%w0jr9 z_Z#9mu_Dw7&Wu|eooXMf6asW6j0LFGkqgh&J*2wBUBqaTcnQk?UM*#iq+7dX$#;025m;f z?4hZt%Zndz+R0U+e+HSRkMIfW4D^h{vg>SVVpby8Tr=kHuhrYbD6v(1mJXpJ)!bA><5H;+t9FK(O{}SPEC z(I(PX>3Qc~#WKLGsv2-QPB`@|rbTpV-{{4qX z64_r^6Q!P5)V-_f7nh++1YRgVDzwyIRp$D_9np76Xq$qstHq0JXszddhd!BeoGeWtX^eH@&`2*#9|TBTtM1nzMBq33f$W?)z^WP(` z*XF07Hilh*qiXVADnssS);iqO8UHp}kAq0nq9*rAsm563XD+U;pi|5)oSspa|L)fY>by%i32r*= z&iB3JEwGOT-xB%gnU{3NxyOiu;htWbxw5J6YHjxkZ|WM~g>#6ST#TV3u@&qSEM*`H zOtE&a@M^{Ps{7(8Eq#|iYxowUSI2=qS|5HwMYYQRd_(~;zM~(*mlMaf@>eb|Tv=~D zJ9|MqjKk&d3)20XsPE3De%bQhHuI^(HN>8lXX6rj?w#ulb=bnB<*(Ra1i2#q;3gQK zV%pz?a>NOeQM{eK-J87v$;3;E68=Z^F`qoYJn^)T+ay3kjTu%s!Ku@wa$;xnq>j80 z^_t~{Tw}xO5phu(d|5}=3ze7|BDe7$-B&lfHpM!UtM-ZQAkkHe*%K~G4gYDHEx0+k zoP)4E;m$3!>g_l*JbS!t*>2Ij|D0IGST5PQ_u(*OI^h0_!tw>MS=R9@3jv3Sj)r10r6u_yQ z03tEhNR6jwCR{R(8q}}>+f$Y?DHtQ+3A?lbDOcpkwLD5XhLumJD7O)U^v=|y*@oVb z<5vMo-IkY37kur;w7rv@k9v$6pY?XRx}IEiU0Gnwr&i*jUL8+***-MMznLjhEIO?a zw$Z=312ECW^6G~UEQLwR+^TdJF26My!BlB)yvCg#mSBN9lfEPDNM6CHxOwY@CP!Ps zHkBQd@}o{4l_xl_j^d3#N+$PIerU8EQ$i|5j(&-Xi#{EE*gHdsc4ve#(LS_P5fXib zo>o(OXl&uL%&j~=7fNu>b=xrgYncrPv;Xf~`S!|VWVnufmqk>%mU@t z`$K!eje+tL9dixsDDKxyV8sr#3UmO633Mk8&DUlI#yg^Kpvz0M6)_X0b0OP1u+uI8 z&j;-x0O6z(^4+b1aEa&$NzX4-?p<<`h>}Vk7#IsasCAkK%-u3-gi<7dFH6G6vwT)3 zDq_X8o{*-Uu!aUcLt-1 z?WwJw-{sxW1-z#s=2JBqqb11~ZQ@P(A4;>8vW|0C5=Hc))7<%-(8&-0KXAouWNM~A zpkyj?whMC{va2=Y1)-1b9l5ZJO#zJNG>!(z@3l_EYkdGLTem^G&OF;cKaO=kDys;! z%_JQ_dSyAX{pBQKPF-ahLkv0qeo4K~bwRyg+*Ax5mH^ttqHV3G*;$}uG`&D6*xORF zQ-_Lfuy;h}8+)%0o(Wxt??s0W=Dea56{Te@J!p1tq5t#!e8raxoRg|mPJ5f$m|qry z|8ae5f_zfO?w4yd9xoO%qXocLIbzS2m4;pRPqoG&<4fDHTFE+tL8|9i>G`|uBu3f> zsJcSb8bcY4kOp5Bgk2FBz0EAq9G015#mm0>*@6!00iM_>hw%1!N_|feF0*w%oKxmp zM=kLl6_vT6vorye4b&sWHQbBm2gKj5NRl|Cf_iNJLaVptHqxV|i!6<%d5(3ksgaXQ zP)jvX3BRs@iJ!ncu;Z<8@k78DZ7C+g^kU)ovi7p$3%V2gmc4Q84w=AVZxdVh=`?^i zsQXXEwZi|@e3V?rIIlRapVw?I+6IzE?$S#q9wzyO42~Hm{YTR1-Y$Rj3SL4x(Q(P- z2gZL3^|t0>cg1f-pP5S^I|Tbir$TI@H-2}v+2ofF_QjL5-=HIOh-+rp9nKm#4{+r# z>^kFhZq&uB5X^IHrY`-K$=05ZSP*Wx{c23aG%iTu#q)LFyU}U9B}Y=v9&6A-?(U_j zM+Qxm_*UV8ZQIbSt2x8R{P?*c_Fl;BDNB7a zg#8M?V>50qU!k{U`r^E+avfr}-q8w1DTj2yib%q8Zfxi#_yf!u^<>y5sUPU9~n8Cj<@4(`lk zZIwJBAiXkt&g2fH(@Mc5&^@Q`^=TG0fx$x1H}mB#PUpy0XFICfxW)Bau;rDp(fZ^$ zMNw3^=XVdzZlFpG?pi7LER13L(0_(#k|F$gL?bv#;0|P85D9BO;UczKT)zGsUFlw` zUs-e2?=hy)uj0SQDlw-lg`VpGW`B*aq*~RqsMknz(^l~6-0q3|mSx6apQl3AUJDWq zKy~oWA9lj-O?vYN-MKWVdTq&tUA=(RM~ehM*wh=Zm+;FN^Ekp`MK^l9M}Q!taahL7 zF?O^Uh$co`Pp};lUj0}#Sl>$pt(OFA&DEI*HGv}^Rf8M|b|sX-P4r#nW?tug*3#`6$VyEph2&lIBaKTODNQ;?9Li8vBIR;17-GGkw4@ znN)wA>OjiNHZpr4F3hmQz3Lv+Q(l71N?Z5voFKa~!P@Ny>K2W;a@CTR8j<57k|CM8 z+r?$u08DnKMdOmW7U>)$)E(IoQj#(ut?_hw1Dng1LV(8Sr|E=H){aruyPxEO(5hT= zN@li}gC>-<-e>1_&gFGj+Sn_1*RsR!4_HQj$W>15Oxb2EkgbjIul238cVn8rq?peqp3o ziA#5jAE1+f;BCK&oS!L=6{&2%q3%+$7T|#h8!&5F*dD)6KJ=(V44I~3Ouzn28MUQ8 z7*Msp`fMQEm&yEy#zA8~w6vD3KZuzNpoCbzNV%Rtd=LRwJN?(1bj`sKouZ7cPpp%C z_tH;iTbVdFZK9K>=0TEA!u+`2K&WM3LW>iDz3(UTM#4qjtb$Efo5Wnfk(27#_>`2iflMs7=YN9eBH3`vv<^?S!(tX6f6qlpD~q;#|e3& ziMki;AP;P#`qRPvO_JOs9V0ZHUo)u`7{mhs?^#f65qj5a^J3<@%WW z?66w-CPCjIKMW{LdV!;LyUv5#N}=fIoXm2(OoIC#`$AWxg4C)6yoGaxAAuS&aP z>&CMpV)ODFB6G5!R+DhWYPmu3qUgcviMqppd5@k5{AYG$O}d`7)Q%KOnXL>smi#qh zRR8$sUV%=YG{1)0c;0{Ax(Et|i830o^6vASw>8Z3PZw&2=biQuth;q&ayzK7o>y?^ zWCrhmV$8`E?rA;Y&hM|sTkg^nU%q+&2wng6Bec!b-(Virf(c7lYm~E6D!H!r&pkA+ zILKKR7k`gF9765H-cO{v(F!Gtiy?bS7(LOWgX`Yo7q#%U5sJ=1>EUPJQT7%GW+Nv7 zi1fbe+Lt~;|AV3B8a+TXp6%aug9;!1lfBX1V=VZGQaV zmv@+Mf*h_yYuE0+LHq2@AEK|J>z9JHj87z*!ChgC$O~E;F2i3wMqJAzT-0d&zg4dE zs&rz0tq*ZLX$?V{{8rk1g{G7stBPKJBmoD$h|k@`$uf6SFV((VFQGil;QjMiCDYxP#@|Q5_Y&NcT-Id6i`AUZ^ z83(?Vc<8RuzZEZz8P-T<#m~&oZIOJxn>B7xeI<$qZSAtUUljm~u^3khFIJK|wKdXh zJvrI@ifAVqk#xqc1Sk|SoWd2|WQOqQG4!hI%3GWT?j>c^sW^@(jngA@ zCN>vb$-ETZG{z0IY(ZP|R=(;k-~g zNzX4LVjR8#FMjL)?wUa1eG;mZ{orC^(u1lR#+X-#$XcLvcb?0(%slg2; z9&^180i&FJUh}Drt)yx7IT)O9#>HSiBmLbVjp9#_GQz$ z{?Y!!v(;Z@rz>}&OO;JE8(Mrm<7FS-+b3LP7aD*Tc^uBp-Qs{>NgrA-1`nLfKjmOUNRT^j-hPi;o)Z#1sEHqb!W<%(>f1;SQ6M$e0q(uwlKmrf zKF4jb)4u?{uKAV6!6(5Tyn+xkXO)H6Gp~Nv20Gp-8>H?&s3)1`Sn{LJZ{A&b?jdGV zy%;>likS+HQT-cj?8k{^TXEjd7BnkUVb{m(`Ll`JZaN>B%KYpwfs&C$i({t4`_9&z z+=96jcW?E3sk%5}v)V}KuHMQQsr+m)lt{#>;i~ZwQ>*+{@gfp8*GL=XB|bLH39*fU~j)54yj5v}Ksie`-wW z=mNh`S{pKFCTH1zEV-IyJ^cKR4jM?>3XNZr;*{*BpM5n}@rBjs!8_T)amrFepi+gj80j=0doJ<(>fq)gf9$qALZA7_5LmA_k8sstX8tcf zFz(zzd=8G^3I0#v_-#68@)RK6yecO%8U>DB~Qv;x_K!-C< zq=-k${^8+H2RY28Kj=(6iJ^=QX8b#LHMBbpvlQ3p+MU}v0;|)Atl08^9rjf~pK?9A zN4UV<^#nvd2U`FG27iJa;2u(1D|=svL+Zg$0EFmS&7NA6jjY0kqt8SSy%8~&2SCc( zT?8tI+g~Bo5Fr@USxU78ZN{R9OaOwi`isKT-RM8V%){7!r%)SsdAdcd?Dh6L3D*b^ zH1qdJ%gV+j3g+$tHE6}YD2HE0+@pOk@{X zLnV);=rYiun5HaUy6{j}gWL{892YI;#cbbg%#S|4cJHkq^D6f`8R1R6737)O#T_NG z==Ma}%6IN?S@MYSl|V#!&r%akjgVSEB;Svz4@p~QBm0+%X@ zI6gKDD&!~MRe?mO;;mB9=Auegr@6$fkwn_rG=Ru_hLzZ~s#0b{m?3SCK_nY+UYyox zI}j|n^%ci#*MeriX?0uyZh?8aRI5o}$;wYQLA}+J>vkBpVSe-cU{M?8K2ks_Lke0` zOS1@V;OaEuh5Z6LGpldOSo_}{qzW-_#R%(gQnR*z;N@IKx^L3LLp{%MwOOx?3O2m| zA~g`Tj-8n(#*GF!rhiM&yx!`(ai?Pd+$$>?ulD!Jc1ZkiP6XdU%@ddnS}09XVZeu&%`X!)F= zRfAz+Hpa*^6}&5yAR=M856GQrK&5sn>&IpKut-zDFEuQ@SJqw;4vnWEl85AW=NCLP z#zn3t%XK7+p3=DUJd6?*fpLw_j#iGV!df$zeEa&}5-qD^4)t~~RF}S$KSTPs{)N59 zc5kfq6)(r&d1V_hXd@!)1eXFt94N}x^`MYzs4NL zxS{p|^Kh34Ws{$?EQ{Okv0nb`_wSj$Ys$`%631BU&-(th1V;3K&2Ii*&@|rFH%a~2 zB~Snhvu6-UJT{GPHg)rz>he6%tnw1oaoq^R-~<`wOc(}w3MSSfQs>@#=C2Ow`d;Ts z5{&8{vTfLqF*al_>WUX{XpYr59-&N@P%r|f5+l=ui@PiGz8&ci7#ZW=HvbJ5*FVj5 zX%sKNT{(P3=%|9x$rfNW$2g*o&*Dzq3)0ES=J`yIDtBM+1QZZaNb0)hd|*0y);x4F zo7YZZZ?DgvRhDwHOrCuJ1`6>c32|jsK)f>4o$0%l&&R0GlWhF6gSiilkcmS-&#|&f zyldm$x-I$nx@{pQ988CvKAl^8B&wAJj=Aaiy)dibQC6M|U*Om>q@$=P1qE9BXK&u> zNkzq0$^6@1vKo0LB|)%Pk!Jo${MUCY-4I&|c1YzE=Q zFQ6-ZFKS#r1uk%qwTs5ec`kHh7xTH~x3BYO;A;@{Dq-m5m=@zfXb2 z-ntA~HgxkM#=Q+~RLOuJh z?a}P=&%aC$0K)s9i*LH`#eYMJ&u-FhS>aacsp|nk?{;8(<5pH`V=2SAja%<*7n7qd zZ}V^JRG^4d&P}_@!tv=i3Gd)Ln`6*~xzJ_+!b4ZKRXF)^joV|{=)-wDdEJKGj}4V$}t#n=`Axu z+IQh>yO9a|a-OA0XO>bYsr2-RCA&y^Bc07x?JQRMiC=8&$`L6>D1cE=#Qm4i7!DvJ zzSxhcaZcaMK`wDVbOFo4cXbH}K6}{D?C4L!Fvi>sP7cbkfvQ`jXA8iq;y+*3^ka2x z5m;vfB4x3ZtuD)YF>^3uOQmN%7{DJ+vdG5@4yf9`r5gneQeJ4ig6 zz)2J4JL>t4GsCa6DZinVtGZI_n{B%I7Rtn<58<{hodQ1*DuSGug)mRc(+svXE|Das z0gU6WQ|we1{>iLGPP29r*O@l@|8(`8QB7{`wz%!O5f!n37!?5p0g)yM#6}g2^iH+{ zQX-)A5|VA93lR|z5F!Fn0z_)4iAt9eq(y3^cLIcvgcR@cJNJxx?)i}+3?U=DtIaj% zeCBgX9Y1Wd6%GGzp*!;I;9HI6CJDC#dc9>^y$`FkrtHLCSfH)%NKz`pGmdSj1OoYkbOx#M$C;vNkoyZfM` z{g6kG=&+wlE*To`Fqk(S?GYKl9$5^rh|`cO6_)0f7aeTxYVJ=IW_Ba0a21b@4E;$T zTSSHft}W+{4(|4}Esb+B06#&f#aNI=BIsXek?OfZEIu}H92cJzk zT(>FTEm@W%jTxFuMAL1T{jKjLbNKvix}ZT!*_CU~QkmapB$x;X*6k_ps1Vhxb?*sY zt;76qt$Qu$=VZ#!(%PFB;wsjwR4vcCN@ERY{4Uxx*Pe*t%DQ@;s~;>zhm;Yxgi1D8 zzHQNtaiCXg6{|EDAEXW6N$pn5DyY)=_WZ%+N3TkMm9l@j4ik%64QoDf*DYR55*lNJ zvWVric5%8t1#rp_YFt{^4-pxg-L<&8LtO~*)M>-FS(4v*I#z&p^QFYeRF^rOTtYZZp(?Y;UyA zv3G~jex)Zsm+30qL8=-F?Msbae38?^d|D)WbN%2etJRC3qzaxo{a1bR>U4V6N?$Q)W2(jk|Xrtfe;7Z5f>CEXn@u`|JLOShg) z+;iIo27sn-uyM^5It7p<`*m8mTm>G0q=R^@3RFy|bPI{$EzUwGu7Zz?_$_ccd+4fG zz0mIgmf4*Yp%XMBdg8Z$S3|kpV})e9SwLGX&2}BM&`HoFHvqr}7(K(Sm7S&pbK}lp zZ(bAL^wZUBS96KBP}O%Eg|jySQ{u51r|LFL?HmKYTvj=yVL|D}2BOy}1@ja~*EN4O zqASBL<-onr4BN}tCAF$1wnz9%g%|Om=MWP`qZS{06t|~|eZp%nU%~k>j=OaHw?KN} zI9~pf#M{+~V{|Rsk?UXzbr^%t%w}FrsF*96#KY7$HWb`SM}8Bh1WbF5oT&~oZC53w zaGLny9rQur=AX;SjumCc7qK5X1qG7U$d0c1j>s-urU+HabU+FIBFF(UUp-# zf1*(hujJ*LGX;?f<^62~{>qA^wPVGk2xif^TF>FCyYS%`;JNoXgYFcos((fLdm`mC z(kD+uynb%b@43T?%3N>=YNsBwP?!OjJ5XF`%Y!rlzFK4rZs_r1XC`3VFlmCK)jR9A zcWzdiNK7^ePvPFC+!$6rzXV|)s1}qr5*o|fZepV`E=cKpF#ZvD;K62>90UOXS_;@% zzvEcdImr1HzG%PM;o&!u7KHEoRVWzEMymDyZr;_1Qh)O*0$l==^W|a0Sd6hDI z0;3{Sxs-C`?9bBnvm*<1QJ&V|g?K?ajeVA?RE9pF15fOh8t^~m9DPuELka!IXG6)0 z^a?p=VP7laDJNC`R%c&_=u%7c)=A{hJ*%3M-qsrxYg_MJ8%DOGPo&YqLhTbxGP0v4 z4+n`X=6oo5>VCo5zPqf=`jCvi%B2tL;1+G$m3^v6++8cCbYvtbVv=_JS+W$=f8@Po z7+^x*2QPO}9}Gi{tQ74AYcnenUJ`2j@4Xx2s}!ba#~r*AYq^byKKE$2Og}W@79+91 zzQbSr&7{)ljIV7xK_g09qUu7)wBTx2+Tv!_-7Xowfn)l0L|s|Vcl@K3YV|Y0ItY)! z{Vveell4N(lZ^9a2=c}Mjmj^6%#Bw~)`{C=6SZ^EJ@<(gbiy+AssCi%b(T4Hd6ol? z0+hBBSP|=R4|4uuNLQbSqeM~_nDbeb9%xz07ph=T;8rL+N?Rj-@;f+9l(+i69Xj4k zWgfYJmF8BY_;S`++j;Tz0HC#1r5Ha~b{kMkZ0PI4-^*2QSb|)SPBOSV`Y7^ zm?j(F2=S>!j43r*_Mm1`hoLDnE3ExZmkZI;R^*2`Be4Me;kBi9sjR0Gqa9b@iMgQ! z#QNTcP$Kw0D8~!(!~*X-SJ#x^7-~Gb!=aS5!*OMz&BWW)?Pt~e$?33e2Mw!kct!n> z<^s1T)#Ddx#yb|zhof1wyk19;3;lq!L}O}?yz3J*{6ULX+{4au^LuMh`=%`ylq2!Ez$$~z^JYv zQ}-XcnD3ettgVCKgqXyp8Q7b+=|-fjeS^?V*)%TAyMaxa$2Jc97I^h2iL@wGgr2uj zVGmP7*YU&GIQGZwehWBK=7ZRQt#(|an3#+BZ?Gr-bKGS{9PMlM#M%tMUHKPVw^{hs zLi!(R;Wq81Bb(RqQ)9(D4WtWlB#tHdB!-4RkFPMX*|9ANPTYx}VcL{eR!JE*O*K61 zERsj5zO)M&c4}$s5t|vdC6<7q%b~o{UsW{~w^lL(4)W*tRu2}#DF0ghBg z!B`mmx*qwtK6y1S-6`nkihXWaC`Z>#@vAuTQ`LlXBCQe`V^xXzdh1@1I;Nz_WJ_sU za=|3ied6;KjXnXnWN{n?XXX^XZ|{ulR*SyX>Yz`_xQDJUVcK5Kx7j+n#B-0a^tcfMmUI6mP-ab zyaCVkVN@1%q=whNXCooS5BmpEjEGpvo>b?9tik%|8SG?XRqTvH8V?fFe{CMC6>=;^ zM#@guw(GQqMDZ!J>80M9Ew&_IrjL-w*?eVU)3d@pn!TUSPTjW5X_wesuqn>?Eg(Hw z+=3YX4#mvj{?1sE7ugt*sybI2-8T)Zv8O#y6sGcR1~6mVnoaDfPu^!LSdTDh+rOuz;Ax7P4BnL>Su4W2R%KUxxRy`GesSi!dv9WkbdQn4(i1c4>+)De}-cly%e5F zTz?sCaDvaPgRlhAYNpCQj3o!NA&YATdRD>=p)F1SlnDpUr8bS6FA&ay-6%vlRmNs- z7Qb>^hjZ#QSBmsyierk>g8J@8JsLxoBni-Xh>du0_*yA2V8%cb)`kGD6>g6%)HvvH z*R`GQ8dte(wKjVTz?pn^(sLr;>bf`F|1sY5U3$9$rnm3tS^lrR%=~>NqacZ>r zMUIlS$+QqQ*S(3S4F{Ug?qIt8E2g`i@4XWnKWPVm*rbtMIJ_?%`gPU? z9EV{$T@gKt=SSM`ogJ~o{v3&vVYQy$gIs(ML*cx096w|$L(Do}tMs=(DO`Dh;*-rN znKB;q`o|wI!pttHTi{0dlCgwYg5$9`3U3zwPY;a`V-$jYuK_N$;3&(v94o2@p-~Fw z$5nrFkfV7_Lf9g`@NtOWCATmK1S+A>K&Xqv3iKW^P~p|d8vIT4$Xnx)Gwb2T>-B;A zmg=TCBgs{h>-&;436F%BBr5(d-2a4KG1LubiMM>m(O`J zLY+%oU4c*GP8@o3=eNKZpULt6x}uKSIiK~CBmFuk(J0>d&*yVgz%L|xoil)p4$&#S z!wnza@fdgB)Kl$yr_w)-z2H=?Ovo4zou-~{J`g9r@y9_)n9L%sVr)ArdcsdIftTgp z$|D$VLXNm;657b-$elSwj#@oZ&R<2tvtQ8WB*WxfA4`J6OO~6;c68^jSaB6LTnEvo z&(m{z_FNTSxs2Wrd0J~x*|fmHj1?kBaJ~G?`Jr*g&g_xbcIrXnW^2ZzI%aLOJ>#*# zxTzp5^fx(x9FfpHhC{{*?-Fd=In=k(DNI$l$Bn14wNp+jV+0PveZ@$ALQNu%x#ZjU z`AZ_NYze_Wuu@4{NTJCt%Cu%+^S&WJYeFW&C_{diHp>>aVrRw_I+((M#T+DFTC2i- z40_ni@Ps{ngQq1rDB24_D7Z>{Hpvj)mS8tWg?VN`c$jGORF*Ug3}x8>9kksWX-_?cb#%+$1Kf;D`gAAKJjSiZWjHQB2(a-li^y1XS4Yp+630VIgkwQv7r zy1>nVqIVeq*}S#PMAf=U@#{K-T^;DB;emgx z+}OcIOk!e)Vr!ck?4V^zM@`(xLT>aRac!N~oH4C-IMVdt_veQu|KjE`Y`Og`>SX$L z+ObB@2SMU14@XLgFh*scf>`lUVSe?DuLIApvsfG?nW;X2* z$)?-t7B!KA2bjD?_V?%Q=J>AZgzHCLi0hxFx`j}f?1q9PyV`vlY5-ze5~ zpVMG2z#qExDN~ei&vVa7?8T28vedRx>Vo;QWTCZT>yZ-ZxC3zetDt}=qO1kkX8jg0 zOWY6HT2PSq<|R$P(B(2pYJb(As1N6-4&JTOK^cYJy7PB)w=sxK39n1XW>bYCxlYIO z_#d{({BU3Rdpwh*!8^kW1zb+Ux!(f$+F;MlvZu@)OB7w!(zVmUDVm^OIyB>2x)?+O1JG_@k`%PJGrX=D=y5@@(6yBVKpNP zMS^bIaKY9I=um6pDV@8R!|lO^ck5WhKKV8>j~y*bRggE8WJ_`_%ZmJdYD#9iXC5gX zPHpYF7suUlq_XPn}mhWeueA1Eej-7#R;iM4G!!;ag=#1@PAf3n`Bhx(#%k$oo z!a(~mlHA`*dct8IN1YbIof7m5DY-TK^IP%hmm9_P`GLqg*v=NTENFdfgB zsNVuz4h~^ciCF5D$_&y&Bx6jEnO7P$inj+aE$PRay} za8BUeOBauu{k*PMNFDeanNWeR^NheXP>>@7N4{ zFYbq9VR{4kom=0XSE!ZoNDPfpH1jY|qS7}0Rtq84C^@#2ZBdh3k4C`jtlgaWJ7xx7 z?a`-p0;7LP-|m`CYQ*N4_UaGGHx_@)bh{tl+E#tL(YA`8;SNk{sMcMOqmw!u%xyDX zk|V3(TflAWD^XWH0I{#T4ivhhQe&0tmD}t<3Q*4i^dJc;Tlh$cHSV)1`b!Kr7JuU3 za>G7}D>N~m>}V8kTrUw_x*Ld#C%a(b-kbW8t5e7Z4+e;R4D+?{ z>d`xDfe7wbqalc#&C==FO#3+^pva;{#WL&3F+tU=&3t?*Zr+IOzXX+wUElN9-) zA7c$o`sNDADIj39PvkE&+4wEzRo%If!7`-_$-%pf9nq+nDt|7bvJSn8q#O(x^54F{ zlmWn;SI4?vfX|Q9Ov%}dZG6= zHrA%Nvt;iY8(GHFRfM+(Ms0RvoN(+{zMga*Ar}27ceVr;!%v^1FnAIxA%13`2{jSc z2NE|#P!XhkXass6G!k{T5&w0ko;Ut0h)ePI(5!*x`cEhxs64TE{m#adYYayO8(<`EGOC8`2I`cNGIYTOJst}1~ z-3e`mw6Qy1@O5h1@KK1mds7K?XN6-g0Iv{EL8T0jM z<{000{_H8ZLgj;xzRO8Hw>Y&bK9)Z>pHQ2WCt!+Js{_@Jx8~F~ z5@2r(`>i*qFpjGQx8PRXLcLY_t&+%&$pT`S(e)^9GatglL1y{$+@%n|gkvuCO+{3> z2GP2(;&}a*#kt=Uu9r;?j4xI3Pa1$_%W0pjAWJ)N6E$pYo=i947Fy7M z+mi6a;XIp=8$7N3V2;&lyIA2fj(Cn}n7VT=71a1PmW*pVYhui9qY8=cyg7jmNb%{wcy!?O7^ezJ&;mLo}MlJ)T6 zsJv7RcAAZ@aae4|R8whIZ&HY1!mzi$R8IPg+j?$fFw4rVPN4rrEAB5v`8w9Ayuf#z z83R8jR$vo-K8(5)h{O?At@-S+0B`HAcza4q)Zo5EY})}R zeyv;xZ}9!fvC`$C1iIy;xExK#bA8eybh%E+ZYn@uF-0rkI6e^j*O6OTj@G?tA%Qaw%`(3ZPvhs|H}{7%QDH8gzSbj0v{5Tx)sdF-TY@t-=lBQcG~*gZfI)>#CPn<3?^s zpM5qR!uwek?DSfm*DDL&B{O|#8VgzIwOfK9ZW!LnVp{b(LTf8(*F{=N5mA04G-@*) ziMc?ke?tsjm#P#W=(!nr$>iktY-#GuE%%hww#Idp5VEQ2>fh_dO<_N_t!`|ilKjPB zUiz1V*tMc9)xDChP&E0la6gW^SL(+%s>ZZ%@4YmTp!0~+3^a65zcFB}p^A}K9e#Pw zu3WVf<=?D z?0&lueAj!Y8h7tZN%uI}p!YmoN++~HdxP@Y#>3YZb{g!9BZCd+{1FE?>3PvrB(daL zi3?kgRQ&qe2j;2<@`N3~>5|`;L26%oLSP1pj(>YPt@vjD9+RjRoe7q zj4ueQ_NNj0J<8UbE84PRa`^?!G3`4=h=J*F zvXYotvS$7^+Jwbfhcpvz?N>SH;ws(Qv3DKGubdqwRtATmXSG_k#s~p4lKo6h@)~}q z&$o*D%aeh3Z@560d*J+Az>^eFKj26`O}@J7yl^<7zO}&AEupU?79g-viwO?xGT`Tb znq!`p9#uXWtPRG)Ub{cLU~N>)`xEv_N29`b4WV&K>}=?9={}-3ojeQqDgBF7M3(mvG49lV516 z@5jk=MfyT=&`vMD~sD9h_nqfd0brcX%HB zvQ29eza{r(>FOu!<1SE@;0f=>^7-1pYyB@pB_y-^gqA%qrK03x*m}@6hd%o&bjO-h z2|crN1Rx&DZ3C6O;7U7yo;6W4n>z563#D0o|50!e>mSqjv9^So7-*YRaz@G+>&xkX zCaI++p=F+S$?Ty5{{`27v58G`Za#taXCmv+5jlvak*0J20BS4A_D0V>OL$MQJ?h44 zh0djmLD#o8vxUh8_j_w=gq3LCAT3{{by3Ot(fEjEg%>`6hIuk%-#jxuFrJimY0g2A zGK6YAGx6GfC)-NoqLgdm3~#Q(0Ul%Bn%7F-t^LnVEtaO$UddnRNopx>V_fLdxMkWZ z`Q_RwdM%#RtkC&<+h7)!IE|k09AI~>ckh#;NY=%barlq@@I5uN#wD-0@h5=k%!l|l ztJ2epa-z(TbC|@35=nX;6T#VxS1kk;rI~H}Be2(=K35NEX_&!wiY(jt&hEW`$ZfCk z$J*_&gIOLBlHL8$Fz~=P`eusU-oCccoq^;YRVrkBXf0UO(0Q5m=HwA5EhdfmRbzYZ zq3ZC2ALKAB$6gk_JJgfZWKr{S(i2mai#{o1+xo8Fc05%f^?d2Zl9fpmivSan0Z~$4 zND^oeUa<*~I;jeu^7NQmERQ;cs|`zeQIg*2u-3tAEy+VXcA+gJW9HXu^z5%J3f*^4 zqH^_mS2oE<^{Zm5F1@{WX0G^&$V|7Yt1U=({_rU77tj6z=7yQbBNCiy#$k^Pq}MAdFboGh3at3SKy z0ZLBOj>WA+=yMCdy?*>KGpQ$^>Qx!;^DY7Rp-Xf-RP*a?A0@hFeF2?MU$v5cym5{< z@~~F9Hg0lb{)F$DRYA-~K>mv3os`a!=QHR1_@a$LEcQj=o`pBGPEL}S!c}8n9WA-H z^Ss))=RmJ@`wY%Noeh1Sn{^!0xl)(6ZpP#m)U6s=ywC+$mh{U!hVxsXziJqnU8-l2 z*kOceuy^k4W(usMKkN%$V z7bzMI{{!M(p_mI==y0y7yDh&sC2VhP`qfHaF zGY?)`&C1FTa^#_$yWKETa^RM$(=*Z#AQjl5#;y9S_}&YRV9tdri`Y+-EdOvo{43x+Ih5)bF^ zHudzgU&hJp3azh=>!EqZ@$oDKBNp<(_hTKpPOqjx8#&kg%NB+RV6uH|#nTnzQ;Ik6~czgD;iU1hV-sIa$gF zq@(ndu1;sdN-Mga5xcd7-a^ZaS8q(i$8ueQNz3S|fuZH@Ymd>td$=weW?k)U8D3%7 z_oNjQu|t`UzL$HSa(YR#Z@1ra@7sFW{>OVsG5*9(s5K~`=0moYu3k4gjdC}l=;Ym= zX`jvY>CeCve7oPXX?*HJyuAdvh{M4R_}S#dUl^*P22A5GebzR+;H3>R33`gBjn?X4B6WN;~l7&x7g2^{qSarG4 zq-x{czVSPwdwr{|O5tOT;8+1I5ZS8!Tu~CpD(E0Wqo+N!UV9yoB=fI3-kyYtpdY%2 zp5=|=Hz=h+{8_Q_!grn3gnWYC zonvEutf2ZrvZ9dxP=frb{x15^s`V?;!9wc>)PRT2--1E~60 zrr8^q>Xv%|`sgZuFTMv>ccuP8zQfnuEf^mTr7PGIO-!PXEwOh4@Y&kVVJw7n%@3UA zgwfjNX(>yN4*5#oSFUH2ofE+4`pU%xx*R^WhgEjUE@8n`P!~1#7tYS`e5xZX)whiy z;JU5nIsp>C4C0!!j*BdVACE z=igJ(`%FKWw1&8QuP%AeWrY4$h=p)`|MWk_iQO{&62~(d&H9V|;*tUf`P zt=iz?z8(F1^l@?e!Dre{#Z~Ivd#(DW%idQ7>Q1kC+qNz^HWpgn^z~?K*5&J!ip;20 zy|J-ZsV4;^;&bE*dUAbofiBhj$2qvy@V=7XZAZcyc7oR$S6SgM%=>HL$0x5bU&4Ax z)UDOdRBelZFrhWE33X9vuB7d&gl0MNcJ3qIq%;qZM4z4$G2TK8TU863fm%TO7h%4p zp;EJ&#j?FeV>!8;XnTIvM6hsRqO2~SX$B&n26ENqedp$6J2LeePq#lSV&`K-iBeM|jV#zPnQ(2HTeb=Fe^vEEED;&vXs;T7#r# zEttzztqa!5eU=@(x_8dr_=)A{5G05C-i&;vPxfiNSxWHxhkF0g|?;|h?s z1w@v>vA}C(6PH^FvuqTcGnwCUY=Nje#Vce}%&4>4A9D{q)OS1%$3p7!OD39Z#u|tW zy)z|(%qeghnA-x625605jBCBIjAO9LWYuq)KBc_S&3@xdh%h8 z*NQ)xyrv%ggTmt5az~y6T)f`^9D~^OwOz$;b1g{n?V0rNNxV;rZ(>`P;h{?!KO7wxwaOZDlEov61{*0_2#4ij zo@|t*i@HducVTT@Ip&I$pNEv5jB?AXqO1Exmh{v7o}eL8MPCa>IvuaPqnd&IJrE4} zr>C>-tZsLDsAMWzEG$$ZTy(_FTur}Fg0teN=6NF7QX3Vrsr!bezt*eg5w{hKCwB0@ zw`l2!cLz?sR~3ybbR6;=do=Di!F3BkRsLd75zMRU$D_(c+Lro?pQy}P8qT&|vMQFe zFMmN!^mH+Hysa#seAjN*tLG6;Z-hP+Sul#_EKQk`+V;AC2{v3S8c_Km^}Z>V>iR~< z^m=bFTsk$T#?`kbO>G)mr_)(>=P5yCVD=&HGwWqKkT1&3Nh>>^m9Vr3YKa} zUcIa@>}qe;^hS^Ky@&9sRx`??!Gn|m*{;#%3FweQc#A2(uiNA1o*j7ta+*d;BGY3K^>scA6uOC-->XDQq{fi6wO9lR3B^mpL)dlM_g>eDqz zDV_qZ)Nbe4IgdH9T#xbR5Z64z4w=w(>j7Jv^999wOzu|9ot!OhD0;oi{Y2z~{Q)&q z?MdD{?Mu+--q}C=#ac^Ci9d;c=ne33Nbqcupr%TWUC_v#u=`>wQY)SAGJXfowt2Jm zQppV{d22hi>S0%RHewO;3|(<3@7ML29`5Z6DYcsE+K)VG!r*k%;5hGlHMuh@=Yqbx2jqt8L5T3BEsR?>e zs-uHXJa{$5!)(cJ22L=!>AL{Q_rVKCu3|6I(;zh)*ToszDr?*qoGauP?-z#g&^7h> zDbg?C_?f;trSPlgw}7bjE>{fCRyxESy_feVgv%~fPOcv~(?)#m~`z@j2( zaSvZ8eY!xiJ4D4eEbb!uNZRMFx(A8VzXe=yH>Icc|Ir%!rN`B>kpu419BeS6@x6x9 z{H6Y?SM%9e*N&q|EOVo{`HGlY-SuToW%%Evcv|Vkz*2C1V*SN?3%GJX?v1!Y0;3-(fqkNo|E8{xJtLBmxI@|;65gV13!(%b`h-TJV_)r{-6 zTFam3|HyLv8yW0QtQ8A#!Y~bNji$8`yd{P5 zYBvQ{HVVpDt=`*^k~O2DGkG0M+~>ZMD!p0n7H9)p%T&6@G=pqf=2-{n+RIBSp&9n? zLt|Ib{)jf^k!;nrU+mKqmrvu|wpsWuc8dR#%J$O5f-_`9L3lLW7hO|@qdK`V z4}p(TBB@L&f$+>`Y$Oa7kwS+A@^>njvXkVQ%dOv+?2G%NXI=H!=&|C+ zgw;<5Qr>S$|(evv?g8g?(*PAFB z?9I6b^Od5nuMzzf=Mcr;Je}F66;z^2Soh}cJ#?~v);||h_;%IhRNytQw>8Rhrmrj_ z_Iv$dhP}CYfbhdu+YT%9$mEMIw(;L(}PSVJ{ zZ$np?53_?e{A317tDW*T8QWFN#7M8>hQohkhGCl+5=CAGJJpgi9FuC2-tl)Pe=NG| z<#hQzJ1S2s(h%=xXQ_5Tpi3nClRF`#xYy=q)*Gu|2l8bol3Xan35EBgpCN;rTQ_lWgzmgg|{nPFjoK;-BjZ%o9D4X&mgk z9G2xYDb_J|b$oTdjb;<)4>X{T+3S)XyHfc)ABd2*bHf^~jq^qoblfcO|3IiI3!2s$ zmVJZjnIML%D{!|Qen`}#!wATvTa(xKm(;h$c9`%7d6mh-4%54xpRr3&lY(ZUtx%fM z1|`+Bg3TAuu){0|nM|X(sCsfUU&ZY~DB=oW%^!Gv7=?Ln#p!UH_)99mGz?ee%tuq> zOWJP2fZaiTEK;XbyPqWHz<1}VX>0U93f@__P&NlyCJV7B$w>Hps)**zx(|rkppfGU zxFsHP7oOZbRu>oUmmb&7>m?jtlzqh_xLlwfL*AHrDb)vI?caxAIAgb_CCOv5%Ohd{ zb(!)WCSCn(45h;^_C2d6;!g|PQ=F9hPitQd#8J&-Tisq?6g7TZ&hajIxrLcd^zQOnX7O29j z$x)*v=@t$F{8@QWYC~jN4SnpdY90X_=e){SmLBYLk6+kzoj!BPhPU^>VAb3bJMgA` zDV?%(5fo@$G{Z_8@AXOG@P&kyudIK%x%)NLALUW(|FO%8M_0B&oNU_u z7;|RUc6vt77%%+Y%WwVgc+5bnM@+tEQk)Q58dVA(b^kUefN>A&9f)X zRF|w1_LAuhPbtF{Xk~N@wz;;@V>lsBY|eo+&Pi$-8~-Ag4ojz5k&w>v#8VaiGvUKe-=jO!W#>*hCpxuY zS9ptDAQW41FW}dqJ=_=1z{u`5fseZ?PK5<72P}~0=tLNe(nvh(x!usQT^T00E^I|D zajyc3OY~4O@o9e!9WRMCgXhYimY}AxcAXDjUnwXdJ{lKEf)$&HBXk)zHn#9$I;P%9 zFXkWp(6g0|%6j4+kd~xte68%+2E`{Qy1K3L(jhGbuC(@>bgKQkYwE=Z4Twn5!Tr{$ zk3-~gDWi!ZtF}4=pR%&C=QKG{C#Eg&JA04(;P+#?^#ZNWo9SyKv@5~rpVyxL*UoOKkTe>_p92Zqz+QQ9 zwxgz7>4apQ_POMpr#>agJhhag$ZK89+uIdzCo@G#a7W6s&*n@B@h#dXU(@Rl%z5QB7%u-`qJq=eXJ!I7pAD&LWbPQp}K8hr5_VH@} ziCNLaeyw^L3=PJTtd0*zAWdW8>HJz#yWOUs3`i;W+>1_43CqM>B2{q8om}6+W!NHqGe;ryWA;eQb9+p)Xm`bbKuSEmJGs>b?%Gkx5?!gZvmR2* zTL(G+BL1ZXyFcm=UUB7A3ij&TLm1vngl(7jV>#xOzj<|H9)vmO*XY}oa(h!^%c{P% zfrSY0%DH;df4|fHdja_o!UU)-cZwLlt6$!@sO|$D-oZvcC*1*hXv^4IFNgol6s-R! zS$dD|@=B(aBw}OrG%~f@iGKm*`5MnMYYq8$J*b`lSMo%~BDGKQ-bq6kf&=JHmu6H@ z>$?Fy(}Q=Eg-+yLxo5|JHe7;lY7h@*9v9yOIOQ=roKK%Knr)Sw}f4t>q%VuQmvo1sU+xdIeo^nMpyd|nI zJWVNalw+NT=lUvJ&DVSQ&zq-c%Tw=>fY$svQ`7g8kjg&8?9pV|d#&o*UiiL4{V(r73Vo;cxOA zWEW&s1A0`lEWS*!7U_zOe-B(kZ-rD*o8gLfPRmcIjT+ZNV#dpXaovm+xLI`azrMj_ z^La?3^pxIUFG~=y-}$X)LaZQdunwmSbv67|(M?)YD*+%@tG8N1OwTF*^L!+~*5cph z;)r{}phQTfArcH^Rgwmv#6E8W0X>OgG~48_&a=P_HT!OBzEOzY>{M0qb%qLQT`T5U z@wHleYsMt_x?xIuVi9RG#7b9|C87nHCU^N#nHqn}Su|+F`-kMY>J?MdV2Tf`Yz*Qg zN=8++P2eW{9_%`Eg3MGvZ^a?Yao~jGe2fR+9#pSbv9XvZuH5K(ut_Sl`O_E}J{jgg z9~rz}OUYWIE=l6AH*f~F@;R+Fx8SvmcO)OfzLeF5M+&2FYHNj7-im$f+iL>ziZv3~ z@r6cPH}y*q4yYjvr^xBfyM0r>|YPiNtRF4P(0Zs(WPan0$9G zVu`7LV!=KmKwA!M_Jvb8pu8OML+t{3oNu;|3+G!=QGEViRo9^1IE8T$wKYr@-+#q) zWcK#Fn=P_)XfD^fE?GAUrzoM~NTxx)<<@c{m+V!bFP%wIw_P_%TSXEt{-w9`gEV`v zGH+ZZNo||5jh(Z{JNfB`Qhq@8EfCpN)H(OId>+BUPFT$Ac5=bwFsHRcu(A! zBD{8{A3XiN7S4-AzUu}KHh})+ZwdPa#t!?vexAD*1DVKVtfh)nT#xXAr7t3C>cxt4 z$GY`Ynz$GKyiY67zhr!guZ3N3Ou1zeE)2Pl=M8Jgs&+b#EGI0Og77+^urmbbLVhLu zfH`GW*JRr4eK%9J*}h;+F+8I_5TWDV&MzzX(q3j1Je#BLHy3&p@?$6e0U#O{?uaC= ztMLt0>-Z}KeqysNIM_(jrAzRw16YuGdbS7?P1-Q2q%u88o0&5F2>8Ywuw#gEhcbki zb9~{%N)E|5sbK%;VsRVQCV&*kXBFQ?GjJgE|E9#?vsnlz^qPi8^6N0XJwzXTHVTYT z8%c;42-y}y&N%9LN6{i$7xWsbY?XHOvS9Il3O%aFV1xe+mG1sesI-Wx$$Ng?+^->DRJC%xS5Bu_ zu`=M?7sjyc0{Q1^@9@-Qa|K=Z%w6ko{dWw#1Hoq)bhRkb^hFSd+zsXJvg(JH;<-s+ zJnbRB1#YUe#sddf!qNcoVY0my{AdQgQ*s?re|zFO4$8P| zWygbY4-|m=QlV`HaNk-#0>)fJ57}2v@SXL zwI#Q0#KHJ>=rS6{V;y!h|L02lQwnImO(_5r9-28`Z`Xuf#4Z50x)tf=DEo1vQxjv- z(yU@CZPF&5-W5PR`&+<{ML9}EQpSGqg*RTI<|uIB=ASk%1EzHVihlS|$a=F?DVp5M zO@$T`TjVlnX$8G$Ur7fye~deN3{S3x@bBQbuuZ7=FBn?{zpgYzKBMRz<@B_>rXC3H_lCJo9c zU|AHuBhV!#4yiR?2W-i*Fr9k7$%mV%d8YI7vVHze%@gt3+I^By996h~uzCr#aA^J$IeV zji4^rcQLnVtlj_k6~7wfe9W!-^C-#4TQBIX%H&!M^LPtdOOu4%!11?HtVe(A-q8;Pt>K_r>(7PjD7sxn1hCSudR!RLc@T?^&w zzWXg;exCOO`~o}@zJcfi?hhpkKpL#d(hE@Y+mv~HBc81Srtk8pLI6MlMeLt)PycbZ zrJMkqTnXRTj%TJ8j4&E!ZG=e`x*l0A{cZLa`+)i4t qO5|CC2bkZ=jB|uBoOs{254dJnlYE)Zd1hXy<+qDJ>B+6XhyD+6+51cY literal 0 HcmV?d00001 diff --git a/detect.py b/detect.py new file mode 100755 index 00000000..e93312d3 --- /dev/null +++ b/detect.py @@ -0,0 +1,151 @@ +import argparse +import time + +from models import * +from utils.datasets import * +from utils.utils import * + +cuda = torch.cuda.is_available() +device = torch.device('cuda:0' if cuda else 'cpu') + +parser = argparse.ArgumentParser() +# Get data configuration + +# cd yolo && python3 detect.py -secondary_classifier 1 +parser.add_argument('-image_folder', type=str, default='data/samples', help='path to images') +parser.add_argument('-output_folder', type=str, default='output', help='path to outputs') +parser.add_argument('-plot_flag', type=bool, default=True) +parser.add_argument('-txt_out', type=bool, default=False) + +parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') +parser.add_argument('-class_path', type=str, default='data/coco.names', help='path to class label file') +parser.add_argument('-conf_thres', type=float, default=0.8, help='object confidence threshold') +parser.add_argument('-nms_thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') +parser.add_argument('-batch_size', type=int, default=1, help='size of the batches') +parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each image dimension') +opt = parser.parse_args() +print(opt) + + +def detect(opt): + os.system('rm -rf ' + opt.output_folder) + os.makedirs(opt.output_folder, exist_ok=True) + + # Load model + model = Darknet(opt.cfg, opt.img_size) + + weights_path = 'checkpoints/yolov3.weights' + if weights_path.endswith('.weights'): # saved in darknet format + load_weights(model, weights_path) + else: # endswith('.pt'), saved in pytorch format + checkpoint = torch.load(weights_path, map_location='cpu') + model.load_state_dict(checkpoint['model']) + del checkpoint + + # current = model.state_dict() + # saved = checkpoint['model'] + # # 1. filter out unnecessary keys + # saved = {k: v for k, v in saved.items() if ((k in current) and (current[k].shape == v.shape))} + # # 2. overwrite entries in the existing state dict + # current.update(saved) + # # 3. load the new state dict + # model.load_state_dict(current) + # model.to(device).eval() + # del checkpoint, current, saved + + model.to(device).eval() + + # Set Dataloader + classes = load_classes(opt.class_path) # Extracts class labels from file + dataloader = ImageFolder(opt.image_folder, batch_size=opt.batch_size, img_size=opt.img_size) + + imgs = [] # Stores image paths + img_detections = [] # Stores detections for each image index + prev_time = time.time() + detections = None + for batch_i, (img_paths, img) in enumerate(dataloader): + print(batch_i, img.shape, end=' ') + preds = [] + + # Get detections + with torch.no_grad(): + # Normal orientation + chip = torch.from_numpy(img).unsqueeze(0).to(device) + pred = model(chip) + pred = pred[pred[:, :, 4] > opt.conf_thres] + + if len(pred) > 0: + preds.append(pred.unsqueeze(0)) + + if len(preds) > 0: + detections = non_max_suppression(torch.cat(preds, 1), opt.conf_thres, opt.nms_thres) + img_detections.extend(detections) + imgs.extend(img_paths) + + print('Batch %d... (Done %.3fs)' % (batch_i, time.time() - prev_time)) + prev_time = time.time() + + # Bounding-box colors + color_list = [[random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)] for _ in range(len(classes))] + + if len(img_detections) == 0: + return + + # Iterate through images and save plot of detections + for img_i, (path, detections) in enumerate(zip(imgs, img_detections)): + print("image %g: '%s'" % (img_i, path)) + + if opt.plot_flag: + img = cv2.imread(path) + + # The amount of padding that was added + pad_x = max(img.shape[0] - img.shape[1], 0) * (opt.img_size / max(img.shape)) + pad_y = max(img.shape[1] - img.shape[0], 0) * (opt.img_size / max(img.shape)) + # Image height and width after padding is removed + unpad_h = opt.img_size - pad_y + unpad_w = opt.img_size - pad_x + + # Draw bounding boxes and labels of detections + if detections is not None: + unique_classes = detections[:, -1].cpu().unique() + bbox_colors = random.sample(color_list, len(unique_classes)) + + # write results to .txt file + results_img_path = os.path.join(opt.output_folder, path.split('/')[-1]) + results_txt_path = results_img_path + '.txt' + if os.path.isfile(results_txt_path): + os.remove(results_txt_path) + + for i in unique_classes: + n = (detections[:, -1].cpu() == i).sum() + print('%g %ss' % (n, classes[int(i)])) + + for x1, y1, x2, y2, conf, cls_conf, cls_pred in detections: + # Rescale coordinates to original dimensions + box_h = ((y2 - y1) / unpad_h) * img.shape[0] + box_w = ((x2 - x1) / unpad_w) * img.shape[1] + y1 = (((y1 - pad_y // 2) / unpad_h) * img.shape[0]).round().item() + x1 = (((x1 - pad_x // 2) / unpad_w) * img.shape[1]).round().item() + x2 = (x1 + box_w).round().item() + y2 = (y1 + box_h).round().item() + x1, y1, x2, y2 = max(x1, 0), max(y1, 0), max(x2, 0), max(y2, 0) + + # write to file + if opt.txt_out: + with open(results_txt_path, 'a') as file: + file.write(('%g %g %g %g %g %g \n') % (x1, y1, x2, y2, cls_pred, cls_conf * conf)) + + if opt.plot_flag: + # Add the bbox to the plot + label = '%s %.2f' % (classes[int(cls_pred)], cls_conf) if cls_conf > 0.05 else None + color = bbox_colors[int(np.where(unique_classes == int(cls_pred))[0])] + plot_one_box([x1, y1, x2, y2], img, label=label, color=color, line_thickness=3) + + if opt.plot_flag: + # Save generated image with detections + cv2.imwrite(results_img_path.replace('.bmp', '.jpg').replace('.tif', '.jpg'), img) + + +if __name__ == '__main__': + torch.cuda.empty_cache() + detect(opt) diff --git a/models.py b/models.py new file mode 100755 index 00000000..def6f7dc --- /dev/null +++ b/models.py @@ -0,0 +1,336 @@ +from collections import defaultdict + +import torch.nn as nn + +from utils.utils import * +from utils.parse_config import * + + +def create_modules(module_defs): + """ + Constructs module list of layer blocks from module configuration in module_defs + """ + hyperparams = module_defs.pop(0) + output_filters = [int(hyperparams['channels'])] + module_list = nn.ModuleList() + for i, module_def in enumerate(module_defs): + modules = nn.Sequential() + + if module_def['type'] == 'convolutional': + bn = int(module_def['batch_normalize']) + filters = int(module_def['filters']) + kernel_size = int(module_def['size']) + pad = (kernel_size - 1) // 2 if int(module_def['pad']) else 0 + modules.add_module('conv_%d' % i, nn.Conv2d(in_channels=output_filters[-1], + out_channels=filters, + kernel_size=kernel_size, + stride=int(module_def['stride']), + padding=pad, + bias=not bn)) + if bn: + modules.add_module('batch_norm_%d' % i, nn.BatchNorm2d(filters)) + if module_def['activation'] == 'leaky': + modules.add_module('leaky_%d' % i, nn.LeakyReLU(0.1)) + + elif module_def['type'] == 'upsample': + upsample = nn.Upsample(scale_factor=int(module_def['stride']), mode='nearest') + modules.add_module('upsample_%d' % i, upsample) + + elif module_def['type'] == 'route': + layers = [int(x) for x in module_def["layers"].split(',')] + filters = sum([output_filters[layer_i] for layer_i in layers]) + modules.add_module('route_%d' % i, EmptyLayer()) + + elif module_def['type'] == 'shortcut': + filters = output_filters[int(module_def['from'])] + modules.add_module("shortcut_%d" % i, EmptyLayer()) + + elif module_def["type"] == "yolo": + anchor_idxs = [int(x) for x in module_def["mask"].split(",")] + # Extract anchors + anchors = [float(x) for x in module_def["anchors"].split(",")] + anchors = [(anchors[i], anchors[i + 1]) for i in range(0, len(anchors), 2)] + anchors = [anchors[i] for i in anchor_idxs] + num_classes = int(module_def['classes']) + img_height = int(hyperparams['height']) + # Define detection layer + yolo_layer = YOLOLayer(anchors, num_classes, img_height, anchor_idxs) + modules.add_module('yolo_%d' % i, yolo_layer) + + # Register module list and number of output filters + module_list.append(modules) + output_filters.append(filters) + + return hyperparams, module_list + + +class EmptyLayer(nn.Module): + """Placeholder for 'route' and 'shortcut' layers""" + + def __init__(self): + super(EmptyLayer, self).__init__() + + +class YOLOLayer(nn.Module): + # YOLO Layer 0 + + def __init__(self, anchors, nC, img_dim, anchor_idxs): + super(YOLOLayer, self).__init__() + + anchors = [(a_w, a_h) for a_w, a_h in anchors] # (pixels) + nA = len(anchors) + + self.anchors = anchors + self.nA = nA # number of anchors (3) + self.nC = nC # number of classes (60) + self.bbox_attrs = 5 + nC + self.img_dim = img_dim # from hyperparams in cfg file, NOT from parser + + if anchor_idxs[0] == (nA * 2): # 6 + stride = 32 + elif anchor_idxs[0] == nA: # 3 + stride = 16 + else: + stride = 8 + + # Build anchor grids + nG = int(self.img_dim / stride) + self.grid_x = torch.arange(nG).repeat(nG, 1).view([1, 1, nG, nG]).float() + self.grid_y = torch.arange(nG).repeat(nG, 1).t().view([1, 1, nG, nG]).float() + self.scaled_anchors = torch.FloatTensor([(a_w / stride, a_h / stride) for a_w, a_h in anchors]) + self.anchor_w = self.scaled_anchors[:, 0:1].view((1, nA, 1, 1)) + self.anchor_h = self.scaled_anchors[:, 1:2].view((1, nA, 1, 1)) + + def forward(self, p, targets=None, requestPrecision=False, epoch=None): + FT = torch.cuda.FloatTensor if p.is_cuda else torch.FloatTensor + # device = torch.device('cuda:0' if p.is_cuda else 'cpu') + + bs = p.shape[0] + nG = p.shape[2] + stride = self.img_dim / nG + + if p.is_cuda and not self.grid_x.is_cuda: + self.grid_x, self.grid_y = self.grid_x.cuda(), self.grid_y.cuda() + self.anchor_w, self.anchor_h = self.anchor_w.cuda(), self.anchor_h.cuda() + # self.scaled_anchors = self.scaled_anchors.cuda() + + # x.view(4, 650, 19, 19) -- > (4, 10, 19, 19, 65) # (bs, anchors, grid, grid, classes + xywh) + p = p.view(bs, self.nA, self.bbox_attrs, nG, nG).permute(0, 1, 3, 4, 2).contiguous() # prediction + + # Get outputs + x = torch.sigmoid(p[..., 0]) # Center x + y = torch.sigmoid(p[..., 1]) # Center y + w = p[..., 2] # Width + h = p[..., 3] # Height + width = torch.exp(w.data) * self.anchor_w + height = torch.exp(h.data) * self.anchor_h + + # Add offset and scale with anchors (in grid space, i.e. 0-13) + pred_boxes = FT(bs, self.nA, nG, nG, 4) + pred_conf = p[..., 4] # Conf + pred_cls = p[..., 5:] # Class + + # Training + if targets is not None: + BCEWithLogitsLoss1 = nn.BCEWithLogitsLoss(size_average=False) # version 0.4.0 + BCEWithLogitsLoss0 = nn.BCEWithLogitsLoss() + # BCEWithLogitsLoss2 = nn.BCEWithLogitsLoss(size_average=True) + MSELoss = nn.MSELoss(size_average=False) # version 0.4.0 + CrossEntropyLoss = nn.CrossEntropyLoss() + + if requestPrecision: + gx = self.grid_x[:, :, :nG, :nG] + gy = self.grid_y[:, :, :nG, :nG] + pred_boxes[..., 0] = x.data + gx - width / 2 + pred_boxes[..., 1] = y.data + gy - height / 2 + pred_boxes[..., 2] = x.data + gx + width / 2 + pred_boxes[..., 3] = y.data + gy + height / 2 + + tx, ty, tw, th, mask, tcls, TP, FP, FN, TC = \ + build_targets(pred_boxes, pred_conf, pred_cls, targets, self.scaled_anchors, self.nA, self.nC, nG, + requestPrecision) + tcls = tcls[mask] + if x.is_cuda: + tx, ty, tw, th, mask, tcls = tx.cuda(), ty.cuda(), tw.cuda(), th.cuda(), mask.cuda(), tcls.cuda() + + # Mask outputs to ignore non-existing objects (but keep confidence predictions) + nM = mask.sum().float() + nGT = sum([len(x) for x in targets]) + if nM > 0: + lx = 5 * MSELoss(x[mask], tx[mask]) + ly = 5 * MSELoss(y[mask], ty[mask]) + lw = 5 * MSELoss(w[mask], tw[mask]) + lh = 5 * MSELoss(h[mask], th[mask]) + lconf = 1.5 * BCEWithLogitsLoss1(pred_conf[mask], mask[mask].float()) + + lcls = nM * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + # lcls = BCEWithLogitsLoss1(pred_cls[mask], tcls.float()) + else: + lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) + + lconf += nM * BCEWithLogitsLoss0(pred_conf[~mask], mask[~mask].float()) + + loss = lx + ly + lw + lh + lconf + lcls + i = torch.sigmoid(pred_conf[~mask]) > 0.99 + FPe = torch.zeros(self.nC) + if i.sum() > 0: + FP_classes = torch.argmax(pred_cls[~mask][i], 1) + for c in FP_classes: + FPe[c] += 1 + + return loss, loss.item(), lx.item(), ly.item(), lw.item(), lh.item(), lconf.item(), lcls.item(), \ + nGT, TP, FP, FPe, FN, TC + + else: + pred_boxes[..., 0] = x.data + self.grid_x + pred_boxes[..., 1] = y.data + self.grid_y + pred_boxes[..., 2] = width + pred_boxes[..., 3] = height + + # If not in training phase return predictions + output = torch.cat((pred_boxes.view(bs, -1, 4) * stride, + torch.sigmoid(pred_conf.view(bs, -1, 1)), pred_cls.view(bs, -1, self.nC)), -1) + return output.data + + +class Darknet(nn.Module): + """YOLOv3 object detection model""" + + def __init__(self, config_path, img_size=416): + super(Darknet, self).__init__() + self.module_defs = parse_model_config(config_path) + self.module_defs[0]['height'] = img_size + self.hyperparams, self.module_list = create_modules(self.module_defs) + self.img_size = img_size + self.loss_names = ['loss', 'x', 'y', 'w', 'h', 'conf', 'cls', 'nGT', 'TP', 'FP', 'FPe', 'FN', 'TC'] + + def forward(self, x, targets=None, requestPrecision=False, epoch=None): + is_training = targets is not None + output = [] + self.losses = defaultdict(float) + layer_outputs = [] + + for i, (module_def, module) in enumerate(zip(self.module_defs, self.module_list)): + if module_def['type'] in ['convolutional', 'upsample']: + x = module(x) + elif module_def['type'] == 'route': + layer_i = [int(x) for x in module_def['layers'].split(',')] + x = torch.cat([layer_outputs[i] for i in layer_i], 1) + elif module_def['type'] == 'shortcut': + layer_i = int(module_def['from']) + x = layer_outputs[-1] + layer_outputs[layer_i] + elif module_def['type'] == 'yolo': + # Train phase: get loss + if is_training: + x, *losses = module[0](x, targets, requestPrecision, epoch) + for name, loss in zip(self.loss_names, losses): + self.losses[name] += loss + # Test phase: Get detections + else: + x = module(x) + output.append(x) + layer_outputs.append(x) + + if is_training: + self.losses['nGT'] /= 3 + self.losses['TC'] /= 3 + metrics = torch.zeros(4, len(self.losses['FPe'])) # TP, FP, FN, target_count + + ui = np.unique(self.losses['TC'])[1:] + for i in ui: + j = self.losses['TC'] == float(i) + metrics[0, i] = (self.losses['TP'][j] > 0).sum().float() # TP + metrics[1, i] = (self.losses['FP'][j] > 0).sum().float() # FP + metrics[2, i] = (self.losses['FN'][j] == 3).sum().float() # FN + metrics[3] = metrics.sum(0) + metrics[1] += self.losses['FPe'] + + self.losses['TP'] = metrics[0].sum() + self.losses['FP'] = metrics[1].sum() + self.losses['FN'] = metrics[2].sum() + self.losses['TC'] = 0 + self.losses['metrics'] = metrics + + return sum(output) if is_training else torch.cat(output, 1) + + +def load_weights(self, weights_path): + """Parses and loads the weights stored in 'weights_path'""" + + # Open the weights file + fp = open(weights_path, "rb") + header = np.fromfile(fp, dtype=np.int32, count=5) # First five are header values + + # Needed to write header when saving weights + self.header_info = header + + self.seen = header[3] + weights = np.fromfile(fp, dtype=np.float32) # The rest are weights + fp.close() + + ptr = 0 + for i, (module_def, module) in enumerate(zip(self.module_defs, self.module_list)): + if module_def['type'] == 'convolutional': + conv_layer = module[0] + if module_def['batch_normalize']: + # Load BN bias, weights, running mean and running variance + bn_layer = module[1] + num_b = bn_layer.bias.numel() # Number of biases + # Bias + bn_b = torch.from_numpy(weights[ptr:ptr + num_b]).view_as(bn_layer.bias) + bn_layer.bias.data.copy_(bn_b) + ptr += num_b + # Weight + bn_w = torch.from_numpy(weights[ptr:ptr + num_b]).view_as(bn_layer.weight) + bn_layer.weight.data.copy_(bn_w) + ptr += num_b + # Running Mean + bn_rm = torch.from_numpy(weights[ptr:ptr + num_b]).view_as(bn_layer.running_mean) + bn_layer.running_mean.data.copy_(bn_rm) + ptr += num_b + # Running Var + bn_rv = torch.from_numpy(weights[ptr:ptr + num_b]).view_as(bn_layer.running_var) + bn_layer.running_var.data.copy_(bn_rv) + ptr += num_b + else: + # Load conv. bias + num_b = conv_layer.bias.numel() + conv_b = torch.from_numpy(weights[ptr:ptr + num_b]).view_as(conv_layer.bias) + conv_layer.bias.data.copy_(conv_b) + ptr += num_b + # Load conv. weights + num_w = conv_layer.weight.numel() + conv_w = torch.from_numpy(weights[ptr:ptr + num_w]).view_as(conv_layer.weight) + conv_layer.weight.data.copy_(conv_w) + ptr += num_w + + +""" + @:param path - path of the new weights file + @:param cutoff - save layers between 0 and cutoff (cutoff = -1 -> all are saved) +""" + + +def save_weights(self, path, cutoff=-1): + fp = open(path, 'wb') + self.header_info[3] = self.seen + self.header_info.tofile(fp) + + # Iterate through layers + for i, (module_def, module) in enumerate(zip(self.module_defs[:cutoff], self.module_list[:cutoff])): + if module_def['type'] == 'convolutional': + conv_layer = module[0] + # If batch norm, load bn first + if module_def['batch_normalize']: + bn_layer = module[1] + bn_layer.bias.data.cpu().numpy().tofile(fp) + bn_layer.weight.data.cpu().numpy().tofile(fp) + bn_layer.running_mean.data.cpu().numpy().tofile(fp) + bn_layer.running_var.data.cpu().numpy().tofile(fp) + # Load conv bias + else: + conv_layer.bias.data.cpu().numpy().tofile(fp) + # Load conv weights + conv_layer.weight.data.cpu().numpy().tofile(fp) + + fp.close() diff --git a/requirements.txt b/requirements.txt new file mode 100755 index 00000000..2e16f2e3 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,8 @@ +# pip3 install -U -r requirements.txt +numpy +scipy +opencv-python +torch +matplotlib +tqdm +h5py \ No newline at end of file diff --git a/results.txt b/results.txt new file mode 100644 index 00000000..07dd9bd0 --- /dev/null +++ b/results.txt @@ -0,0 +1,3928 @@ + 0/998 0/3375 129 127 517 687 492 1.27e+03 3.22e+03 0 0 149 0 0 149 3.8 + 0/998 1/3375 112 115 596 603 435 1.13e+03 2.99e+03 0 0 115 0 0 115 0.585 + 0/998 2/3375 93.7 95.5 457 491 359 933 2.43e+03 0 0 68 0 0 68 0.562 + 0/998 3/3375 83.3 85.2 461 450 325 849 2.25e+03 0 0 72 0 0 72 0.567 + 0/998 4/3375 86.9 94.8 458 466 349 910 2.37e+03 0 0 133 0 0 133 0.557 + 0/998 5/3375 81.6 88.4 423 450 330 857 2.23e+03 0 0 66 0 0 66 0.556 + 0/998 6/3375 79.2 86.8 431 424 322 834 2.18e+03 0 0 78 0 1 78 0.569 + 0/998 7/3375 80.3 85.7 427 419 322 833 2.17e+03 0 0 95 0 0 95 0.569 + 0/998 8/3375 79.5 83.4 412 409 320 825 2.13e+03 0 0 78 0 0 78 0.568 + 0/998 9/3375 75.7 80.7 389 387 304 786 2.02e+03 0 0 45 0 0 45 0.542 + 0/998 10/3375 74.9 78.8 399 373 299 773 2e+03 0 0 78 0 0 78 0.57 + 0/998 11/3375 74.7 77.4 386 361 295 761 1.96e+03 0 0 69 0 0 69 0.565 + 0/998 12/3375 72.8 75.2 370 350 285 738 1.89e+03 0 0 45 0 0 45 0.558 + 0/998 13/3375 74.7 77.4 375 353 291 755 1.93e+03 0 0 115 0 0 115 0.565 + 0/998 14/3375 73.3 75.9 362 344 286 740 1.88e+03 0 0 61 0 0 61 0.559 + 0/998 15/3375 72.8 75.7 355 339 286 742 1.87e+03 0 0 77 0 0 77 0.572 + 0/998 16/3375 73.6 76.4 357 342 287 745 1.88e+03 0 0 88 0 1 88 0.568 + 0/998 17/3375 73.7 76.3 354 340 288 748 1.88e+03 0 0 83 0 0 83 0.572 + 0/998 18/3375 74 76.8 349 336 289 750 1.87e+03 0 0 85 0 0 85 0.548 + 0/998 19/3375 72.2 74.9 341 325 282 732 1.83e+03 0 0 45 0 0 45 0.559 + 0/998 20/3375 73.4 76.1 342 329 287 747 1.85e+03 0 0 115 0 0 115 0.571 + 0/998 21/3375 73.3 75.8 338 327 286 744 1.84e+03 0 0 70 0 0 70 0.568 + 0/998 22/3375 73 75.1 335 321 284 740 1.83e+03 0 0 71 0 0 71 0.544 + 0/998 23/3375 73.7 75.4 333 327 286 746 1.84e+03 0 0 102 0 4 102 0.572 + 0/998 24/3375 76.8 78 336 335 296 776 1.9e+03 0 0 171 0 0 171 0.58 + 0/998 25/3375 77.6 79.1 335 337 299 784 1.91e+03 0 0 116 0 0 116 0.577 + 0/998 26/3375 77.6 79 335 336 299 785 1.91e+03 0 0 92 0 0 92 0.557 + 0/998 27/3375 78.5 80.1 333 339 302 792 1.93e+03 0 0 122 0 0 122 0.575 + 0/998 28/3375 78 79.3 328 333 299 784 1.9e+03 0 0 64 0 0 64 0.57 + 0/998 29/3375 77.9 79.5 329 333 299 785 1.9e+03 0 0 87 0 0 87 0.598 + 0/998 30/3375 76.5 78.2 323 327 294 772 1.87e+03 0 0 44 0 0 44 0.574 + 0/998 31/3375 75.5 77.1 316 321 290 761 1.84e+03 0 0 49 0 0 49 0.568 + 0/998 32/3375 75.5 76.9 313 317 289 759 1.83e+03 0 0 87 0 0 87 0.556 + 0/998 33/3375 75.4 76.7 311 318 289 758 1.83e+03 0 0 88 0 0 88 0.553 + 0/998 34/3375 75.1 76.4 309 315 288 757 1.82e+03 0 0 79 0 0 79 0.569 + 0/998 35/3375 74.9 76.5 307 313 287 756 1.81e+03 0 0 93 0 0 93 0.589 + 0/998 36/3375 73.8 75.2 301 308 283 745 1.79e+03 0 0 37 0 0 37 0.553 + 0/998 37/3375 72.9 74.3 297 303 279 736 1.76e+03 0 0 43 0 0 43 0.557 + 0/998 38/3375 72.4 74.2 294 300 278 731 1.75e+03 0 0 63 0 0 63 0.566 + 0/998 39/3375 72.4 73.8 292 298 277 729 1.74e+03 0 0 72 0 0 72 0.558 + 0/998 40/3375 71.6 73.1 288 294 274 723 1.72e+03 0 0 54 0 0 54 0.559 + 0/998 41/3375 72.1 73.5 288 294 276 728 1.73e+03 0 0 104 0 0 104 0.57 + 0/998 42/3375 72.2 73.7 285 294 276 729 1.73e+03 0 0 95 0 0 95 0.564 + 0/998 43/3375 72.4 73.6 285 292 276 728 1.73e+03 0 0 90 0 0 90 0.58 + 0/998 44/3375 72.8 74 287 293 277 731 1.73e+03 0 0 114 0 0 114 0.558 + 0/998 45/3375 72 72.9 283 288 273 721 1.71e+03 0 0 34 0 0 34 0.548 + 0/998 46/3375 72.6 73.4 283 290 275 727 1.72e+03 0 0 120 0 0 120 0.569 + 0/998 47/3375 72.2 73.3 282 289 274 725 1.71e+03 0 0 70 0 0 70 0.556 + 0/998 48/3375 71.8 72.9 280 286 272 722 1.7e+03 0 0 69 0 0 69 0.562 + 0/998 49/3375 71.3 72.5 277 283 271 718 1.69e+03 0 0 56 0 0 56 0.572 + 0/998 50/3375 71.2 72.6 275 283 271 718 1.69e+03 0 0 83 0 0 83 0.588 + 0/998 51/3375 70.9 72.3 273 280 269 715 1.68e+03 0 0 65 0 0 65 0.588 + 0/998 52/3375 70.9 72.3 272 280 269 715 1.68e+03 0 0 83 0 0 83 0.594 + 0/998 53/3375 71.2 72.4 271 279 269 717 1.68e+03 0 0 94 0 3 94 0.634 + 0/998 54/3375 71.4 72.8 270 280 270 721 1.69e+03 0 0 101 0 0 101 0.588 + 0/998 55/3375 72 73.5 272 281 273 728 1.7e+03 0 0 133 0 0 133 0.615 + 0/998 56/3375 71.7 73.2 269 279 271 725 1.69e+03 0 0 65 0 0 65 0.554 + 0/998 57/3375 71.8 73.3 268 279 271 724 1.69e+03 0 0 75 0 0 75 0.582 + 0/998 58/3375 71.8 73.2 266 278 271 725 1.68e+03 0 0 85 0 1 85 0.585 + 0/998 59/3375 71.4 72.8 265 276 269 721 1.67e+03 0 0 59 0 0 59 0.573 + 0/998 60/3375 71.7 73.1 265 277 271 725 1.68e+03 0 0 109 0 2 109 0.582 + 0/998 61/3375 71.3 72.7 263 275 269 721 1.67e+03 0 0 55 0 2 55 0.566 + 0/998 62/3375 71.5 72.8 263 275 269 723 1.67e+03 0 0 94 0 0 94 0.578 + 0/998 63/3375 71.7 72.9 262 274 270 724 1.67e+03 0 0 93 0 1 93 0.575 + 0/998 64/3375 71.6 72.8 261 274 269 724 1.67e+03 0 0 78 0 0 78 0.606 + 0/998 65/3375 71.6 72.7 260 274 269 723 1.67e+03 0 0 75 0 0 75 0.555 + 0/998 66/3375 71.8 73 260 274 270 727 1.68e+03 0 0 115 0 8 115 0.568 + 0/998 67/3375 71.9 72.9 259 272 269 726 1.67e+03 0 0 77 0 0 77 0.567 + 0/998 68/3375 71.6 72.4 257 270 268 722 1.66e+03 0 0 52 0 2 52 0.56 + 0/998 69/3375 71.1 71.9 254 268 266 717 1.65e+03 0 0 42 0 1 42 0.556 + 0/998 70/3375 71.3 72 253 268 266 718 1.65e+03 0 0 84 0 0 84 0.56 + 0/998 71/3375 71 71.7 252 266 265 715 1.64e+03 0 0 72 0 0 72 0.558 + 0/998 72/3375 71.4 72.3 252 268 266 720 1.65e+03 0 0 120 0 0 120 0.56 + 0/998 73/3375 71 72 250 266 265 716 1.64e+03 0 0 54 0 0 54 0.54 + 0/998 74/3375 72.1 72.8 252 267 268 725 1.66e+03 0 0 176 0 0 176 0.575 + 0/998 75/3375 72.3 73 251 268 268 727 1.66e+03 0 0 108 0 0 108 0.568 + 0/998 76/3375 72.3 73 251 267 268 727 1.66e+03 0 0 79 0 0 79 0.553 + 0/998 77/3375 72 72.8 250 265 267 725 1.65e+03 0 0 71 0 0 71 0.564 + 0/998 78/3375 72 72.9 249 265 267 726 1.65e+03 0 0 92 0 0 92 0.566 + 0/998 79/3375 71.9 72.7 248 265 266 725 1.65e+03 0 0 68 0 0 68 0.544 + 0/998 80/3375 71.7 72.5 247 264 265 722 1.64e+03 0 0 57 0 20 57 0.553 + 0/998 81/3375 71.4 72.2 246 262 264 720 1.64e+03 0 0 59 0 0 59 0.579 + 0/998 82/3375 71.8 72.6 246 265 265 724 1.65e+03 0 0 135 0 0 135 0.597 + 0/998 83/3375 71.7 72.5 245 264 265 722 1.64e+03 0 0 67 0 6 67 0.574 + 0/998 84/3375 71.8 72.5 245 263 265 723 1.64e+03 0 0 103 0 3 103 0.57 + 0/998 85/3375 71.6 72.4 245 263 264 721 1.64e+03 0 0 59 0 0 59 0.574 + 0/998 86/3375 71.6 72.4 244 264 263 721 1.64e+03 0 0 88 0 0 88 0.573 + 0/998 87/3375 71.1 72 242 262 261 716 1.63e+03 0 0 35 0 0 35 0.567 + 0/998 88/3375 70.9 71.7 241 261 260 713 1.62e+03 0 0 54 0 0 54 0.55 + 0/998 89/3375 70.8 71.5 240 261 260 712 1.62e+03 0 0 74 0 0 74 0.567 + 0/998 90/3375 70.9 71.6 239 261 260 713 1.62e+03 0 0 87 0 0 87 0.557 + 0/998 91/3375 70.9 71.5 238 260 259 712 1.61e+03 0 0 79 0 0 79 0.553 + 0/998 92/3375 70.5 71.2 237 259 258 708 1.6e+03 0 0 46 0 1 46 0.563 + 0/998 93/3375 70.6 71.1 237 259 258 708 1.6e+03 0 0 88 0 0 88 0.566 + 0/998 94/3375 70.4 70.9 236 257 257 706 1.6e+03 0 0 67 0 0 67 0.569 + 0/998 95/3375 70.6 71.2 236 257 257 706 1.6e+03 0 0 92 0 0 92 0.551 + 0/998 96/3375 70.8 71.3 236 258 257 707 1.6e+03 0 0 90 0 0 90 0.564 + 0/998 97/3375 70.6 71.3 235 257 256 705 1.6e+03 0 0 69 0 0 69 0.562 + 0/998 98/3375 70.5 71.1 234 255 255 703 1.59e+03 0 0 69 0 0 69 0.551 + 0/998 99/3375 70.5 71.2 234 255 255 702 1.59e+03 0 0 75 0 0 75 0.556 + 0/998 100/3375 70.7 71.3 234 255 255 702 1.59e+03 0 0 84 0 0 84 0.568 + 0/998 101/3375 70.5 71.1 233 253 254 701 1.58e+03 0 0 58 0 0 58 0.57 + 0/998 102/3375 71 71.5 234 255 255 704 1.59e+03 0 0 136 0 0 136 0.566 + 0/998 103/3375 71.3 71.9 234 256 255 705 1.59e+03 0 0 103 0 0 103 0.569 + 0/998 104/3375 71.3 71.9 233 255 255 705 1.59e+03 0 0 90 0 0 90 0.577 + 0/998 105/3375 71.6 72.3 233 256 256 707 1.6e+03 0 0 105 0 3 105 0.565 + 0/998 106/3375 71.3 71.9 232 255 254 704 1.59e+03 0 0 57 0 0 57 0.554 + 0/998 107/3375 71.2 71.7 231 254 254 702 1.58e+03 0 0 56 0 0 56 0.568 + 0/998 108/3375 71.5 71.9 231 254 254 702 1.58e+03 0 0 111 0 0 111 0.555 + 0/998 109/3375 72 72.4 232 255 255 705 1.59e+03 0 0 137 0 0 137 0.572 + 0/998 110/3375 72 72.3 232 255 254 704 1.59e+03 0 0 70 0 0 70 0.549 + 0/998 111/3375 71.8 72.2 231 254 253 702 1.58e+03 0 0 55 0 5 55 0.553 + 0/998 112/3375 71.9 72.4 231 254 254 703 1.59e+03 0 0 109 0 0 109 0.564 + 0/998 113/3375 72.1 72.4 231 254 254 703 1.59e+03 0 0 106 0 0 106 0.568 + 0/998 114/3375 72.3 72.6 231 254 254 705 1.59e+03 0 0 104 0 0 104 0.568 + 0/998 115/3375 72.3 72.8 232 254 254 705 1.59e+03 0 0 91 0 0 91 0.57 + 0/998 116/3375 72.6 72.9 232 255 255 707 1.59e+03 0 0 110 0 0 110 0.573 + 0/998 117/3375 72.5 72.8 232 254 254 706 1.59e+03 0 0 72 0 0 72 0.558 + 0/998 118/3375 72.4 72.6 231 253 254 704 1.59e+03 0 0 65 0 0 65 0.569 + 0/998 119/3375 72.4 72.6 230 252 253 704 1.59e+03 0 0 94 0 1 94 0.56 + 0/998 120/3375 72.4 72.4 230 252 253 703 1.58e+03 0 0 81 0 3 81 0.568 + 0/998 121/3375 72.3 72.4 229 252 252 702 1.58e+03 0 0 71 0 0 71 0.556 + 0/998 122/3375 72.5 72.7 230 252 253 704 1.58e+03 0 0 107 0 0 107 0.588 + 0/998 123/3375 72.6 72.8 230 252 253 706 1.59e+03 0 0 102 0 1 102 0.569 + 0/998 124/3375 72.6 72.9 230 253 253 706 1.59e+03 0 0 102 0 2 102 0.565 + 0/998 125/3375 72.6 72.8 229 252 253 705 1.58e+03 0 0 73 0 0 73 0.568 + 0/998 126/3375 72.5 72.8 229 251 252 704 1.58e+03 0 0 69 0 1 69 0.559 + 0/998 127/3375 72.3 72.5 228 250 251 701 1.57e+03 0 0 46 0 7 46 0.557 + 0/998 128/3375 72.5 72.6 227 250 251 702 1.58e+03 0 0 94 0 0 94 0.557 + 0/998 129/3375 72.4 72.5 227 249 251 700 1.57e+03 0 0 76 0 0 76 0.56 + 0/998 130/3375 72.7 72.8 227 249 251 701 1.57e+03 0 0 108 0 0 108 0.566 + 0/998 131/3375 72.6 72.8 227 249 251 701 1.57e+03 0 0 87 0 0 87 0.561 + 0/998 132/3375 72.5 72.6 227 249 250 699 1.57e+03 0 0 64 0 0 64 0.569 + 0/998 133/3375 72.2 72.5 226 247 250 697 1.56e+03 0 0 49 0 0 49 0.562 + 0/998 134/3375 72 72.3 225 247 249 695 1.56e+03 0 0 49 0 0 49 0.573 + 0/998 135/3375 71.8 72.1 225 246 248 693 1.56e+03 0 0 56 0 0 56 0.572 + 0/998 136/3375 71.8 72.1 224 246 248 692 1.55e+03 0 0 85 0 0 85 0.606 + 0/998 137/3375 71.6 71.8 224 245 247 690 1.55e+03 0 0 50 0 0 50 0.581 + 0/998 138/3375 71.9 72 224 245 247 692 1.55e+03 0 0 117 0 0 117 0.593 + 0/998 139/3375 71.7 71.9 223 244 246 689 1.55e+03 0 0 54 0 0 54 0.577 + 0/998 140/3375 71.4 71.7 222 243 245 687 1.54e+03 0 0 43 0 0 43 0.59 + 0/998 141/3375 71.4 71.6 222 243 245 686 1.54e+03 0 0 77 0 0 77 0.59 + 0/998 142/3375 71.6 71.9 222 243 245 687 1.54e+03 0 0 116 0 0 116 0.595 + 0/998 143/3375 71.6 71.9 221 243 245 687 1.54e+03 0 0 93 0 1 93 0.607 + 0/998 144/3375 71.5 71.8 221 242 245 686 1.54e+03 0 0 68 0 0 68 0.6 + 0/998 145/3375 71.4 71.8 221 242 244 685 1.53e+03 0 0 71 0 0 71 0.583 + 0/998 146/3375 71.3 71.7 220 242 244 683 1.53e+03 0 0 61 0 0 61 0.583 + 0/998 147/3375 71.1 71.5 220 241 243 681 1.53e+03 0 0 55 0 0 55 0.59 + 0/998 148/3375 70.9 71.4 219 240 242 680 1.52e+03 0 0 60 0 0 60 0.645 + 0/998 149/3375 70.8 71.2 218 240 241 678 1.52e+03 0 0 62 0 0 62 0.58 + 0/998 150/3375 70.8 71.2 218 239 241 677 1.52e+03 0 0 94 0 0 94 0.582 + 0/998 151/3375 70.9 71.4 218 239 242 679 1.52e+03 0 0 104 0 0 104 0.583 + 0/998 152/3375 70.9 71.3 217 238 241 678 1.52e+03 0 0 60 0 0 60 0.591 + 0/998 153/3375 70.8 71.3 217 238 241 678 1.52e+03 0 0 91 0 0 91 0.587 + 0/998 154/3375 70.9 71.5 217 239 241 678 1.52e+03 0 0 107 0 0 107 0.586 + 0/998 155/3375 70.9 71.5 217 238 241 678 1.52e+03 0 0 84 0 0 84 0.592 + 0/998 156/3375 70.9 71.4 216 238 241 678 1.52e+03 0 0 101 0 0 101 0.603 + 0/998 157/3375 71 71.6 216 238 241 678 1.52e+03 0 0 96 0 0 96 0.578 + 0/998 158/3375 70.9 71.4 216 238 240 677 1.51e+03 0 0 54 0 0 54 0.603 + 0/998 159/3375 70.7 71.3 215 237 240 675 1.51e+03 0 0 65 0 0 65 0.59 + 0/998 160/3375 70.9 71.5 215 236 240 676 1.51e+03 0 0 104 0 0 104 0.58 + 0/998 161/3375 70.7 71.3 214 236 239 675 1.51e+03 0 0 55 0 0 55 0.585 + 0/998 162/3375 70.5 71.1 214 235 239 673 1.5e+03 0 0 55 0 11 55 0.596 + 0/998 163/3375 70.6 71 213 235 238 672 1.5e+03 0 0 79 0 0 79 0.593 + 0/998 164/3375 70.6 71 214 235 238 672 1.5e+03 0 0 82 0 0 82 0.576 + 0/998 165/3375 70.6 71.1 213 234 238 671 1.5e+03 0 0 91 0 0 91 0.594 + 0/998 166/3375 70.6 71.1 213 235 238 672 1.5e+03 0 0 100 0 18 100 0.577 + 0/998 167/3375 70.5 71 213 234 238 671 1.5e+03 0 0 76 0 0 76 0.574 + 0/998 168/3375 70.5 71 213 235 237 670 1.5e+03 0 0 68 0 2 68 0.587 + 0/998 169/3375 70.4 70.9 212 234 237 669 1.49e+03 0 0 62 0 0 62 0.602 + 0/998 170/3375 70.4 70.8 212 233 236 668 1.49e+03 0 0 71 0 0 71 0.586 + 0/998 171/3375 70.3 70.7 212 233 236 667 1.49e+03 0 0 66 0 0 66 0.585 + 0/998 172/3375 70.2 70.6 211 232 235 666 1.49e+03 0 0 58 0 0 58 0.579 + 0/998 173/3375 70.1 70.5 211 232 235 665 1.48e+03 0 0 51 0 0 51 0.588 + 0/998 174/3375 69.9 70.3 210 231 234 663 1.48e+03 0 0 38 0 1 38 0.592 + 0/998 175/3375 69.7 70.1 209 230 233 661 1.47e+03 0 0 46 0 0 46 0.575 + 0/998 176/3375 69.7 70.1 209 230 233 660 1.47e+03 0 0 89 0 0 89 0.586 + 0/998 177/3375 69.7 70.1 209 230 233 661 1.47e+03 0 0 77 0 0 77 0.593 + 0/998 178/3375 69.5 70 208 229 232 659 1.47e+03 0 0 47 0 0 47 0.581 + 0/998 179/3375 69.4 69.9 208 229 232 658 1.47e+03 0 0 67 0 0 67 0.591 + 0/998 180/3375 69.4 69.9 207 228 232 658 1.46e+03 0 0 78 0 0 78 0.588 + 0/998 181/3375 69.3 69.7 207 227 231 656 1.46e+03 0 0 48 0 0 48 0.589 + 0/998 182/3375 69.1 69.5 206 226 230 654 1.45e+03 0 0 36 0 0 36 0.598 + 0/998 183/3375 69 69.4 206 226 230 652 1.45e+03 0 0 56 0 0 56 0.603 + 0/998 184/3375 69 69.4 206 225 229 652 1.45e+03 0 0 87 0 0 87 0.601 + 0/998 185/3375 68.9 69.3 205 225 229 651 1.45e+03 0 0 61 0 0 61 0.625 + 0/998 186/3375 69.1 69.5 205 225 229 652 1.45e+03 0 0 122 0 0 122 0.622 + 0/998 187/3375 69.2 69.6 206 226 230 653 1.45e+03 0 0 106 0 0 106 0.597 + 0/998 188/3375 69.3 69.6 206 225 229 653 1.45e+03 0 0 82 0 3 82 0.633 + 0/998 189/3375 69.2 69.5 205 225 229 652 1.45e+03 0 0 59 0 0 59 0.597 + 0/998 190/3375 69.1 69.4 205 224 229 651 1.45e+03 0 0 60 0 3 60 0.603 + 0/998 191/3375 69.1 69.4 204 224 228 651 1.45e+03 0 0 73 0 0 73 0.613 + 0/998 192/3375 69 69.3 204 223 228 650 1.44e+03 0 0 62 0 2 62 0.613 + 0/998 193/3375 69 69.2 204 223 228 649 1.44e+03 0 0 61 0 0 61 0.594 + 0/998 194/3375 68.9 69.1 203 222 227 648 1.44e+03 0 0 54 0 0 54 0.606 + 0/998 195/3375 68.7 68.9 202 221 227 646 1.43e+03 0 0 43 0 1 43 0.597 + 0/998 196/3375 68.8 69 202 221 227 646 1.43e+03 0 0 87 0 1 87 0.614 + 0/998 197/3375 68.7 68.9 202 220 226 644 1.43e+03 0 0 55 0 0 55 0.58 + 0/998 198/3375 68.8 68.9 202 220 226 645 1.43e+03 0 0 116 0 0 116 0.608 + 0/998 199/3375 68.8 69 202 220 226 645 1.43e+03 0 0 84 0 0 84 0.6 + 0/998 200/3375 68.8 68.9 202 220 226 643 1.43e+03 0 0 64 0 1 64 0.592 + 0/998 201/3375 68.7 68.8 201 219 225 643 1.43e+03 0 0 66 0 0 66 0.606 + 0/998 202/3375 68.8 69 201 219 226 643 1.43e+03 0 0 115 0 0 115 0.593 + 0/998 203/3375 68.7 68.9 201 219 225 643 1.43e+03 0 0 53 0 3 53 0.603 + 0/998 204/3375 68.7 68.9 201 219 225 642 1.42e+03 0 0 63 0 0 63 0.602 + 0/998 205/3375 68.7 68.9 201 218 225 642 1.42e+03 0 0 84 0 0 84 0.595 + 0/998 206/3375 68.6 68.8 200 218 224 641 1.42e+03 0 0 67 0 0 67 0.585 + 0/998 207/3375 68.6 69 200 218 224 641 1.42e+03 0 0 106 0 0 106 0.593 + 0/998 208/3375 68.8 69 200 218 224 642 1.42e+03 0 0 104 0 0 104 0.602 + 0/998 209/3375 68.7 69 200 218 224 641 1.42e+03 0 0 63 0 0 63 0.584 + 0/998 210/3375 68.7 68.9 200 218 224 641 1.42e+03 0 0 83 0 0 83 0.6 + 0/998 211/3375 68.7 68.9 199 217 224 641 1.42e+03 0 0 77 0 0 77 0.6 + 0/998 212/3375 68.8 68.9 199 217 224 641 1.42e+03 0 0 100 0 0 100 0.602 + 0/998 213/3375 68.8 69 199 217 224 641 1.42e+03 0 0 87 0 0 87 0.592 + 0/998 214/3375 68.7 69 199 217 224 641 1.42e+03 0 0 84 0 0 84 0.579 + 0/998 215/3375 68.8 69 199 217 224 642 1.42e+03 0 0 116 0 0 116 0.584 + 0/998 216/3375 68.8 68.9 199 217 223 641 1.42e+03 0 0 70 0 0 70 0.583 + 0/998 217/3375 68.9 69.1 199 217 224 642 1.42e+03 0 0 109 0 0 109 0.61 + 0/998 218/3375 69 69.2 199 217 224 642 1.42e+03 0 0 105 0 0 105 0.599 + 0/998 219/3375 69 69.2 199 217 224 642 1.42e+03 0 0 102 0 0 102 0.603 + 0/998 220/3375 69.1 69.3 199 217 224 643 1.42e+03 0 0 108 0 0 108 0.599 + 0/998 221/3375 69.1 69.4 199 216 224 643 1.42e+03 0 0 96 0 0 96 0.601 + 0/998 222/3375 69.1 69.3 198 216 224 642 1.42e+03 0 0 63 0 0 63 0.598 + 0/998 223/3375 69 69.2 198 216 223 641 1.42e+03 0 0 64 0 0 64 0.604 + 0/998 224/3375 69.1 69.3 198 216 223 642 1.42e+03 0 0 110 0 0 110 0.604 + 0/998 225/3375 69.2 69.4 198 216 224 643 1.42e+03 0 0 104 0 0 104 0.616 + 0/998 226/3375 69.1 69.2 198 215 223 642 1.42e+03 0 0 46 0 0 46 0.592 + 0/998 227/3375 69 69.2 197 215 223 641 1.41e+03 0 0 61 0 0 61 0.58 + 0/998 228/3375 69 69.2 197 215 223 641 1.41e+03 0 0 85 0 0 85 0.593 + 0/998 229/3375 69.1 69.2 197 215 223 641 1.41e+03 0 0 110 0 0 110 0.581 + 0/998 230/3375 69.1 69.2 197 215 223 641 1.41e+03 0 0 74 0 0 74 0.612 + 0/998 231/3375 69 69.2 197 214 222 640 1.41e+03 0 0 61 0 0 61 0.588 + 0/998 232/3375 69.1 69.2 197 214 222 640 1.41e+03 0 0 70 0 0 70 0.6 + 0/998 233/3375 69.1 69.2 196 214 222 640 1.41e+03 0 0 89 0 0 89 0.597 + 0/998 234/3375 69.4 69.4 197 214 223 641 1.41e+03 0 0 156 0 0 156 0.601 + 0/998 235/3375 69.3 69.4 197 214 223 641 1.41e+03 0 0 87 0 0 87 0.611 + 0/998 236/3375 69.3 69.5 196 214 222 641 1.41e+03 0 0 79 0 2 79 0.609 + 0/998 237/3375 69.2 69.4 196 214 222 640 1.41e+03 0 0 54 0 9 54 0.591 + 0/998 238/3375 69.2 69.3 196 214 222 640 1.41e+03 0 0 75 0 0 75 0.599 + 0/998 239/3375 69.2 69.4 196 214 222 639 1.41e+03 0 0 97 0 0 97 0.607 + 0/998 240/3375 69.1 69.3 196 213 221 638 1.41e+03 0 0 49 0 0 49 0.606 + 0/998 241/3375 69.3 69.4 196 213 222 640 1.41e+03 0 0 120 0 0 120 0.611 + 0/998 242/3375 69.3 69.5 196 213 221 639 1.41e+03 0 0 97 0 0 97 0.599 + 0/998 243/3375 69.4 69.6 196 213 222 640 1.41e+03 0 0 120 0 0 120 0.633 + 0/998 244/3375 69.5 69.7 196 214 222 640 1.41e+03 0 0 100 0 0 100 0.618 + 0/998 245/3375 69.4 69.6 196 213 221 639 1.41e+03 0 0 53 0 0 53 0.6 + 0/998 246/3375 69.5 69.7 196 213 221 640 1.41e+03 0 0 109 0 0 109 0.593 + 0/998 247/3375 69.5 69.6 196 213 221 639 1.41e+03 0 0 64 0 0 64 0.608 + 0/998 248/3375 69.3 69.5 196 212 221 638 1.41e+03 0 0 49 0 0 49 0.596 + 0/998 249/3375 69.3 69.5 196 212 220 638 1.4e+03 0 0 70 0 0 70 0.595 + 0/998 250/3375 69.4 69.5 196 212 220 638 1.41e+03 0 0 111 0 0 111 0.593 + 0/998 251/3375 69.5 69.6 196 212 221 639 1.41e+03 0 0 110 0 0 110 0.607 + 0/998 252/3375 69.3 69.4 195 212 220 637 1.4e+03 0 0 27 0 0 27 0.601 + 0/998 253/3375 69.3 69.5 195 211 220 636 1.4e+03 0 0 91 0 0 91 0.59 + 0/998 254/3375 69.2 69.4 195 211 220 636 1.4e+03 0 0 68 0 0 68 0.576 + 0/998 255/3375 69.3 69.5 195 211 220 636 1.4e+03 0 0 103 0 0 103 0.602 + 0/998 256/3375 69.4 69.5 195 211 220 636 1.4e+03 0 0 107 0 0 107 0.607 + 0/998 257/3375 69.4 69.5 195 210 219 635 1.4e+03 0 0 64 0 0 64 0.604 + 0/998 258/3375 69.2 69.4 195 210 219 635 1.4e+03 0 0 66 0 0 66 0.633 + 0/998 259/3375 69.2 69.4 195 210 219 634 1.4e+03 0 0 68 0 0 68 0.604 + 0/998 260/3375 69.2 69.3 194 210 219 634 1.4e+03 0 0 74 0 0 74 0.606 + 0/998 261/3375 69.2 69.3 194 210 219 634 1.4e+03 0 0 90 0 0 90 0.591 + 0/998 262/3375 69.3 69.4 194 210 219 634 1.4e+03 0 0 94 0 0 94 0.592 + 0/998 263/3375 69.4 69.5 194 210 219 634 1.4e+03 0 0 110 0 0 110 0.599 + 0/998 264/3375 69.3 69.4 194 210 218 633 1.39e+03 0 0 54 0 0 54 0.604 + 0/998 265/3375 69.3 69.4 194 210 218 633 1.39e+03 0 0 77 0 0 77 0.62 + 0/998 266/3375 69.4 69.5 194 210 218 633 1.39e+03 0 0 113 0 0 113 0.671 + 0/998 267/3375 69.3 69.5 194 209 218 633 1.39e+03 0 0 66 0 0 66 0.606 + 0/998 268/3375 69.2 69.4 194 209 218 632 1.39e+03 0 0 55 0 0 55 0.588 + 0/998 269/3375 69.2 69.4 193 209 218 631 1.39e+03 0 0 72 0 0 72 0.606 + 0/998 270/3375 69.1 69.3 193 208 217 631 1.39e+03 0 0 51 0 0 51 0.607 + 0/998 271/3375 69 69.2 193 208 217 630 1.39e+03 0 0 56 0 1 56 0.581 + 0/998 272/3375 68.9 69.1 192 207 216 629 1.38e+03 0 0 53 0 0 53 0.594 + 0/998 273/3375 68.9 69.1 192 208 216 629 1.38e+03 0 0 96 0 0 96 0.604 + 0/998 274/3375 68.9 69.1 192 207 216 628 1.38e+03 0 0 93 0 0 93 0.603 + 0/998 275/3375 68.8 69.1 192 207 216 627 1.38e+03 0 0 51 0 0 51 0.6 + 0/998 276/3375 68.8 69.1 192 207 216 627 1.38e+03 0 0 67 0 0 67 0.592 + 0/998 277/3375 68.7 69 191 207 215 626 1.38e+03 0 0 48 0 0 48 0.577 + 0/998 278/3375 68.7 69 191 206 215 626 1.38e+03 0 0 86 0 0 86 0.608 + 0/998 279/3375 68.7 68.9 191 206 215 626 1.38e+03 0 0 87 0 1 87 0.608 + 0/998 280/3375 68.6 68.9 191 206 215 625 1.37e+03 0 0 65 0 0 65 0.576 + 0/998 281/3375 68.7 69 191 206 215 625 1.37e+03 0 0 105 0 0 105 0.608 + 0/998 282/3375 68.7 69 191 206 215 625 1.37e+03 0 0 87 0 0 87 0.61 + 0/998 283/3375 68.7 69 191 206 215 624 1.37e+03 0 0 85 0 0 85 0.613 + 0/998 284/3375 68.7 69 191 205 215 624 1.37e+03 0 0 79 0 0 79 0.604 + 0/998 285/3375 68.8 69.1 191 205 215 625 1.37e+03 0 0 140 0 13 140 0.624 + 0/998 286/3375 68.8 69.1 191 205 215 625 1.37e+03 0 0 89 0 0 89 0.608 + 0/998 287/3375 68.8 69.1 190 205 215 626 1.37e+03 0 0 91 0 0 91 0.59 + 0/998 288/3375 68.8 69.1 190 205 215 625 1.37e+03 0 0 63 0 0 63 0.59 + 0/998 289/3375 68.8 69.2 190 205 215 626 1.37e+03 0 0 113 0 0 113 0.592 + 0/998 290/3375 68.8 69.2 190 204 215 626 1.37e+03 0 0 78 0 0 78 0.601 + 0/998 291/3375 68.8 69.3 190 204 214 625 1.37e+03 0 0 89 0 0 89 0.589 + 0/998 292/3375 68.7 69.3 190 204 214 625 1.37e+03 0 0 96 0 0 96 0.594 + 0/998 293/3375 68.7 69.2 190 204 214 624 1.37e+03 0 0 55 0 0 55 0.604 + 0/998 294/3375 68.6 69.1 189 203 214 623 1.37e+03 0 0 74 0 0 74 0.595 + 0/998 295/3375 68.7 69.2 190 203 214 623 1.37e+03 0 0 113 0 0 113 0.603 + 0/998 296/3375 68.7 69.2 190 203 214 623 1.37e+03 0 0 87 0 0 87 0.598 + 0/998 297/3375 68.7 69.3 189 203 214 623 1.37e+03 0 0 79 0 0 79 0.603 + 0/998 298/3375 68.7 69.2 189 203 213 623 1.37e+03 0 0 66 0 0 66 0.615 + 0/998 299/3375 68.7 69.2 189 203 213 623 1.37e+03 0 0 67 0 0 67 0.603 + 0/998 300/3375 68.7 69.2 189 203 213 623 1.37e+03 0 0 87 0 0 87 0.607 + 0/998 301/3375 68.7 69.2 189 203 213 623 1.37e+03 0 0 73 0 0 73 0.585 + 0/998 302/3375 68.6 69.2 189 202 213 622 1.36e+03 0 0 71 0 0 71 0.62 + 0/998 303/3375 68.6 69.2 189 203 213 623 1.36e+03 0 0 94 0 0 94 0.595 + 0/998 304/3375 68.7 69.2 189 202 213 622 1.36e+03 0 0 83 0 0 83 0.62 + 0/998 305/3375 68.6 69.1 188 202 212 621 1.36e+03 0 0 51 0 0 51 0.597 + 0/998 306/3375 68.6 69.1 188 202 212 622 1.36e+03 0 0 89 0 0 89 0.6 + 0/998 307/3375 68.6 69.1 188 202 212 622 1.36e+03 0 0 71 0 0 71 0.609 + 0/998 308/3375 68.7 69.2 188 202 212 622 1.36e+03 0 0 89 0 0 89 0.612 + 0/998 309/3375 68.6 69.1 188 202 212 621 1.36e+03 0 0 55 0 0 55 0.618 + 0/998 310/3375 68.6 69.1 188 202 212 621 1.36e+03 0 0 101 0 0 101 0.606 + 0/998 311/3375 68.6 69.1 188 201 212 621 1.36e+03 0 0 71 0 0 71 0.599 + 0/998 312/3375 68.5 69 188 201 211 620 1.36e+03 0 0 61 0 0 61 0.59 + 0/998 313/3375 68.6 69.2 188 202 212 621 1.36e+03 0 0 139 0 1 139 0.603 + 0/998 314/3375 68.7 69.2 188 202 211 621 1.36e+03 0 0 81 0 0 81 0.607 + 0/998 315/3375 68.7 69.2 188 202 212 621 1.36e+03 0 0 87 0 0 87 0.595 + 0/998 316/3375 68.7 69.2 188 201 211 621 1.36e+03 0 0 75 0 0 75 0.615 + 0/998 317/3375 68.6 69.2 187 201 211 620 1.36e+03 0 0 79 0 0 79 0.591 + 0/998 318/3375 68.6 69.1 187 201 211 620 1.36e+03 0 0 63 0 0 63 0.594 + 0/998 319/3375 68.6 69.2 187 201 211 620 1.36e+03 0 0 75 0 0 75 0.624 + 0/998 320/3375 68.5 69.1 187 200 211 619 1.35e+03 0 0 60 0 0 60 0.584 + 0/998 321/3375 68.5 69 187 200 211 619 1.35e+03 0 0 61 0 0 61 0.599 + 0/998 322/3375 68.6 69.1 187 200 211 620 1.36e+03 0 0 135 0 0 135 0.617 + 0/998 323/3375 68.7 69.2 187 200 211 620 1.36e+03 0 0 101 0 0 101 0.588 + 0/998 324/3375 68.7 69.2 187 200 211 620 1.36e+03 0 0 95 0 0 95 0.616 + 0/998 325/3375 68.7 69.3 187 200 211 620 1.36e+03 0 0 84 0 0 84 0.586 + 0/998 326/3375 68.7 69.3 187 200 211 620 1.35e+03 0 0 79 0 0 79 0.599 + 0/998 327/3375 68.7 69.2 186 199 210 620 1.35e+03 0 0 72 0 0 72 0.602 + 0/998 328/3375 68.6 69.2 186 199 210 619 1.35e+03 0 0 61 0 0 61 0.607 + 0/998 329/3375 68.7 69.2 186 199 210 619 1.35e+03 0 0 95 0 0 95 0.617 + 0/998 330/3375 68.7 69.2 186 199 210 620 1.35e+03 0 0 80 0 0 80 0.606 + 0/998 331/3375 68.6 69.2 186 198 210 619 1.35e+03 0 0 50 0 0 50 0.607 + 0/998 332/3375 68.7 69.2 186 198 210 619 1.35e+03 0 0 90 0 0 90 0.627 + 0/998 333/3375 68.6 69.1 186 198 209 619 1.35e+03 0 0 53 0 0 53 0.59 + 0/998 334/3375 68.5 69 185 198 209 618 1.35e+03 0 0 52 0 0 52 0.615 + 0/998 335/3375 68.4 69 185 197 209 617 1.35e+03 0 0 55 0 0 55 0.608 + 0/998 336/3375 68.4 68.9 185 197 209 617 1.34e+03 0 0 52 0 0 52 0.598 + 0/998 337/3375 68.4 68.8 185 197 208 616 1.34e+03 0 0 62 0 0 62 0.607 + 0/998 338/3375 68.3 68.8 184 197 208 615 1.34e+03 0 0 58 0 0 58 0.662 + 0/998 339/3375 68.3 68.8 185 197 208 615 1.34e+03 0 0 86 0 0 86 0.589 + 0/998 340/3375 68.5 68.9 185 197 208 616 1.34e+03 0 0 137 0 0 137 0.609 + 0/998 341/3375 68.5 69 185 196 208 616 1.34e+03 0 0 86 0 0 86 0.598 + 0/998 342/3375 68.5 69 185 197 208 616 1.34e+03 0 0 81 0 0 81 0.612 + 0/998 343/3375 68.6 69 185 196 208 616 1.34e+03 0 0 110 0 0 110 0.592 + 0/998 344/3375 68.5 68.9 184 196 208 616 1.34e+03 0 0 57 0 0 57 0.605 + 0/998 345/3375 68.5 68.8 184 196 208 615 1.34e+03 0 0 78 0 0 78 0.611 + 0/998 346/3375 68.5 68.9 184 196 208 615 1.34e+03 0 0 98 0 0 98 0.613 + 0/998 347/3375 68.5 68.8 184 195 208 615 1.34e+03 0 0 60 0 0 60 0.606 + 0/998 348/3375 68.4 68.7 184 195 207 614 1.34e+03 0 0 53 0 0 53 0.595 + 0/998 349/3375 68.4 68.7 184 195 207 614 1.34e+03 0 0 72 0 0 72 0.613 + 0/998 350/3375 68.4 68.7 184 195 207 613 1.34e+03 0 0 86 0 0 86 0.643 + 0/998 351/3375 68.4 68.7 184 195 207 614 1.34e+03 0 0 93 0 0 93 0.596 + 0/998 352/3375 68.5 68.8 184 195 207 614 1.34e+03 0 0 117 0 0 117 0.614 + 0/998 353/3375 68.5 68.8 183 195 207 613 1.34e+03 0 0 58 0 0 58 0.603 + 0/998 354/3375 68.4 68.7 183 195 207 613 1.33e+03 0 0 51 0 2 51 0.589 + 0/998 355/3375 68.3 68.5 183 195 206 612 1.33e+03 0 0 40 0 13 40 0.594 + 0/998 356/3375 68.3 68.6 183 195 206 612 1.33e+03 0 0 91 0 0 91 0.579 + 0/998 357/3375 68.4 68.6 183 195 206 612 1.33e+03 0 0 97 0 0 97 0.609 + 0/998 358/3375 68.4 68.6 183 194 206 612 1.33e+03 0 0 97 0 0 97 0.591 + 0/998 359/3375 68.5 68.7 183 195 206 612 1.33e+03 0 0 107 0 0 107 0.591 + 0/998 360/3375 68.5 68.8 183 195 206 613 1.33e+03 0 0 97 0 0 97 0.601 + 0/998 361/3375 68.5 68.7 183 194 206 612 1.33e+03 0 0 81 0 0 81 0.601 + 0/998 362/3375 68.5 68.7 183 194 206 612 1.33e+03 0 0 68 0 0 68 0.603 + 0/998 363/3375 68.5 68.7 183 194 206 612 1.33e+03 0 0 89 0 0 89 0.592 + 0/998 364/3375 68.6 68.7 183 194 206 611 1.33e+03 0 0 85 0 0 85 0.601 + 0/998 365/3375 68.5 68.7 183 194 206 611 1.33e+03 0 0 66 0 0 66 0.602 + 0/998 366/3375 68.6 68.7 183 194 206 611 1.33e+03 0 0 101 0 0 101 0.619 + 0/998 367/3375 68.5 68.7 182 194 205 611 1.33e+03 0 0 49 0 0 49 0.606 + 0/998 368/3375 68.5 68.7 182 193 205 610 1.33e+03 0 0 88 0 4 88 0.594 + 0/998 369/3375 68.5 68.7 182 193 205 610 1.33e+03 0 0 75 0 0 75 0.576 + 0/998 370/3375 68.5 68.7 182 193 205 610 1.33e+03 0 0 83 0 1 83 0.587 + 0/998 371/3375 68.5 68.6 182 193 205 609 1.33e+03 0 0 63 0 5 63 0.618 + 0/998 372/3375 68.4 68.6 182 193 205 609 1.32e+03 0 0 62 0 0 62 0.594 + 0/998 373/3375 68.4 68.6 182 192 205 609 1.32e+03 0 0 95 0 1 95 0.603 + 0/998 374/3375 68.6 68.8 182 193 205 609 1.33e+03 0 0 142 0 0 142 0.604 + 0/998 375/3375 68.5 68.8 182 193 205 609 1.33e+03 0 0 73 0 0 73 0.597 + 0/998 376/3375 68.5 68.7 182 192 205 609 1.32e+03 0 0 79 0 0 79 0.604 + 0/998 377/3375 68.6 68.8 182 192 205 610 1.33e+03 0 0 109 0 0 109 0.585 + 0/998 378/3375 68.5 68.7 182 192 204 609 1.32e+03 0 0 50 0 33 50 0.601 + 0/998 379/3375 68.5 68.7 182 192 204 609 1.32e+03 0 0 73 0 0 73 0.603 + 0/998 380/3375 68.5 68.7 181 192 204 609 1.32e+03 0 0 79 0 0 79 0.58 + 0/998 381/3375 68.6 68.7 181 192 204 609 1.32e+03 0 0 93 0 0 93 0.602 + 0/998 382/3375 68.5 68.7 181 192 204 608 1.32e+03 0 0 55 0 19 55 0.595 + 0/998 383/3375 68.5 68.7 181 192 204 609 1.32e+03 0 0 106 0 0 106 0.607 + 0/998 384/3375 68.5 68.6 181 191 204 608 1.32e+03 0 0 69 0 0 69 0.648 + 0/998 385/3375 68.4 68.6 181 191 204 608 1.32e+03 0 0 72 0 0 72 0.593 + 0/998 386/3375 68.5 68.7 181 191 204 608 1.32e+03 0 0 94 0 0 94 0.605 + 0/998 387/3375 68.4 68.6 181 191 204 607 1.32e+03 0 0 58 0 0 58 0.577 + 0/998 388/3375 68.5 68.7 181 191 204 608 1.32e+03 0 0 106 0 0 106 0.585 + 0/998 389/3375 68.5 68.6 181 191 203 608 1.32e+03 0 0 63 0 0 63 0.587 + 0/998 390/3375 68.4 68.6 181 191 203 607 1.32e+03 0 0 65 0 0 65 0.588 + 0/998 391/3375 68.4 68.6 181 191 203 607 1.32e+03 0 0 71 0 0 71 0.579 + 0/998 392/3375 68.4 68.5 180 190 203 607 1.32e+03 0 0 62 0 0 62 0.592 + 0/998 393/3375 68.4 68.5 180 190 203 607 1.32e+03 0 0 81 0 0 81 0.594 + 0/998 394/3375 68.4 68.5 180 190 203 606 1.32e+03 0 0 93 0 0 93 0.605 + 0/998 395/3375 68.4 68.6 180 190 203 606 1.32e+03 0 0 81 0 0 81 0.58 + 0/998 396/3375 68.4 68.6 180 190 203 606 1.32e+03 0 0 93 0 0 93 0.579 + 0/998 397/3375 68.4 68.6 180 190 203 606 1.32e+03 0 0 78 0 0 78 0.578 + 0/998 398/3375 68.4 68.6 180 190 203 606 1.32e+03 0 0 75 0 0 75 0.601 + 0/998 399/3375 68.3 68.5 180 190 202 606 1.31e+03 0 0 51 0 0 51 0.601 + 0/998 400/3375 68.3 68.5 180 190 202 606 1.31e+03 0 0 91 0 0 91 0.609 + 0/998 401/3375 68.3 68.5 180 190 202 605 1.31e+03 0 0 67 0 0 67 0.609 + 0/998 402/3375 68.3 68.5 180 189 202 605 1.31e+03 0 0 63 0 0 63 0.586 + 0/998 403/3375 68.2 68.4 179 189 202 604 1.31e+03 0 0 38 0 0 38 0.584 + 0/998 404/3375 68.3 68.5 179 189 202 605 1.31e+03 0 0 103 0 0 103 0.608 + 0/998 405/3375 68.2 68.5 179 189 202 604 1.31e+03 0 0 66 0 0 66 0.612 + 0/998 406/3375 68.3 68.6 179 189 202 605 1.31e+03 0 0 114 0 0 114 0.621 + 0/998 407/3375 68.3 68.6 179 189 202 605 1.31e+03 0 0 85 0 0 85 0.613 + 0/998 408/3375 68.3 68.6 179 189 202 605 1.31e+03 0 0 82 0 0 82 0.611 + 0/998 409/3375 68.3 68.5 179 189 201 605 1.31e+03 0 0 67 0 0 67 0.606 + 0/998 410/3375 68.3 68.6 179 189 201 605 1.31e+03 0 0 128 0 0 128 0.6 + 0/998 411/3375 68.3 68.7 179 189 201 605 1.31e+03 0 0 92 0 0 92 0.616 + 0/998 412/3375 68.3 68.6 179 189 201 605 1.31e+03 0 0 78 0 0 78 0.595 + 0/998 413/3375 68.3 68.7 179 189 201 605 1.31e+03 0 0 89 0 0 89 0.618 + 0/998 414/3375 68.4 68.8 179 189 201 605 1.31e+03 0 0 128 0 0 128 0.615 + 0/998 415/3375 68.5 68.8 179 189 201 605 1.31e+03 0 0 87 0 0 87 0.611 + 0/998 416/3375 68.5 68.8 179 188 201 605 1.31e+03 0 0 65 0 0 65 0.601 + 0/998 417/3375 68.6 68.9 179 188 201 606 1.31e+03 0 0 130 0 0 130 0.614 + 0/998 418/3375 68.5 68.9 179 188 201 605 1.31e+03 0 0 63 0 0 63 0.604 + 0/998 419/3375 68.5 68.9 179 188 201 605 1.31e+03 0 0 87 0 0 87 0.59 + 0/998 420/3375 68.5 68.9 179 188 201 605 1.31e+03 0 0 65 0 0 65 0.594 + 0/998 421/3375 68.6 68.9 179 188 201 605 1.31e+03 0 0 108 0 0 108 0.595 + 0/998 422/3375 68.6 68.9 179 188 201 605 1.31e+03 0 0 91 0 0 91 0.61 + 0/998 423/3375 68.6 68.9 179 188 201 605 1.31e+03 0 0 93 0 0 93 0.6 + 0/998 424/3375 68.7 69.1 179 188 201 606 1.31e+03 0 0 122 0 0 122 0.609 + 0/998 425/3375 68.7 69 179 188 201 606 1.31e+03 0 0 78 0 0 78 0.598 + 0/998 426/3375 68.7 69 179 188 201 606 1.31e+03 0 0 85 0 0 85 0.625 + 0/998 427/3375 68.8 69.1 179 188 201 607 1.31e+03 0 0 128 0 0 128 0.618 + 0/998 428/3375 68.9 69.2 179 188 201 607 1.31e+03 0 0 108 0 0 108 0.605 + 0/998 429/3375 68.9 69.1 179 188 201 607 1.31e+03 0 0 67 0 0 67 0.617 + 0/998 430/3375 68.9 69.2 179 188 201 607 1.31e+03 0 0 110 0 0 110 0.618 + 0/998 431/3375 68.9 69.2 179 188 201 607 1.31e+03 0 0 85 0 0 85 0.58 + 0/998 432/3375 69 69.2 179 188 201 607 1.31e+03 0 0 99 0 0 99 0.604 + 0/998 433/3375 69 69.2 179 188 201 607 1.31e+03 0 0 111 0 0 111 0.612 + 0/998 434/3375 69 69.2 179 188 201 607 1.31e+03 0 0 80 0 0 80 0.652 + 0/998 435/3375 69.1 69.3 179 188 201 608 1.31e+03 0 0 141 0 0 141 0.634 + 0/998 436/3375 69.1 69.3 179 188 201 608 1.31e+03 0 0 80 0 0 80 0.636 + 0/998 437/3375 69 69.3 179 188 201 607 1.31e+03 0 0 48 0 0 48 0.592 + 0/998 438/3375 69 69.2 179 188 201 607 1.31e+03 0 0 57 0 0 57 0.588 + 0/998 439/3375 69 69.2 179 188 201 607 1.31e+03 0 0 92 0 0 92 0.593 + 0/998 440/3375 68.9 69.2 178 188 201 606 1.31e+03 0 0 51 0 0 51 0.592 + 0/998 441/3375 69 69.3 178 188 201 606 1.31e+03 0 0 138 0 0 138 0.599 + 0/998 442/3375 69 69.2 178 187 201 606 1.31e+03 0 0 61 0 0 61 0.589 + 0/998 443/3375 69 69.3 178 187 201 606 1.31e+03 0 0 85 0 0 85 0.626 + 0/998 444/3375 69 69.3 178 187 200 606 1.31e+03 0 0 69 0 0 69 0.6 + 0/998 445/3375 68.9 69.2 178 187 200 605 1.31e+03 0 0 49 0 0 49 0.63 + 0/998 446/3375 69 69.3 178 187 200 606 1.31e+03 0 0 108 0 0 108 0.61 + 0/998 447/3375 68.9 69.2 178 187 200 605 1.31e+03 0 0 82 0 0 82 0.604 + 0/998 448/3375 68.9 69.2 178 187 200 605 1.31e+03 0 0 58 0 0 58 0.599 + 0/998 449/3375 68.9 69.2 178 187 200 605 1.31e+03 0 0 83 0 0 83 0.599 + 0/998 450/3375 68.9 69.2 178 186 200 605 1.31e+03 0 0 81 0 0 81 0.627 + 0/998 451/3375 68.9 69.2 178 186 200 605 1.31e+03 0 0 96 0 0 96 0.589 + 0/998 452/3375 68.9 69.2 178 186 200 605 1.31e+03 0 0 98 0 0 98 0.594 + 0/998 453/3375 69 69.3 178 186 200 605 1.31e+03 0 0 116 0 0 116 0.603 + 0/998 454/3375 68.9 69.2 178 186 200 605 1.31e+03 0 0 65 0 0 65 0.596 + 0/998 455/3375 69 69.3 178 186 200 605 1.31e+03 0 0 96 0 0 96 0.593 + 0/998 456/3375 69 69.2 178 186 200 605 1.31e+03 0 0 89 0 3 89 0.608 + 0/998 457/3375 69 69.2 177 186 200 604 1.31e+03 0 0 79 0 0 79 0.594 + 0/998 458/3375 69 69.2 177 186 200 604 1.31e+03 0 0 88 0 0 88 0.602 + 0/998 459/3375 69 69.2 177 186 199 604 1.3e+03 0 0 61 0 0 61 0.579 + 0/998 460/3375 69 69.2 177 186 199 604 1.3e+03 0 0 104 0 0 104 0.603 + 0/998 461/3375 68.9 69.1 177 185 199 603 1.3e+03 0 0 46 0 0 46 0.586 + 0/998 462/3375 68.9 69.1 177 185 199 603 1.3e+03 0 0 53 0 0 53 0.578 + 0/998 463/3375 68.8 69 177 185 199 602 1.3e+03 0 0 55 0 0 55 0.585 + 0/998 464/3375 68.8 69 177 185 199 602 1.3e+03 0 0 81 0 0 81 0.593 + 0/998 465/3375 68.7 69 177 185 199 602 1.3e+03 0 0 77 0 0 77 0.578 + 0/998 466/3375 68.7 69 177 185 199 602 1.3e+03 0 0 93 0 0 93 0.595 + 0/998 467/3375 68.7 68.9 176 185 198 601 1.3e+03 0 0 37 0 0 37 0.596 + 0/998 468/3375 68.7 68.9 176 185 198 601 1.3e+03 0 0 96 0 0 96 0.596 + 0/998 469/3375 68.6 68.9 176 184 198 601 1.3e+03 0 0 58 0 0 58 0.598 + 0/998 470/3375 68.6 68.9 176 184 198 600 1.3e+03 0 0 82 0 0 82 0.589 + 0/998 471/3375 68.6 68.9 176 184 198 600 1.3e+03 0 0 66 0 2 66 0.611 + 0/998 472/3375 68.6 68.9 176 184 198 600 1.3e+03 0 0 79 0 0 79 0.605 + 0/998 473/3375 68.6 68.8 176 184 198 600 1.29e+03 0 0 59 0 0 59 0.597 + 0/998 474/3375 68.5 68.8 176 184 198 599 1.29e+03 0 0 70 0 0 70 0.597 + 0/998 475/3375 68.5 68.8 176 184 198 599 1.29e+03 0 0 84 0 0 84 0.587 + 0/998 476/3375 68.5 68.8 175 184 197 599 1.29e+03 0 0 45 0 0 45 0.601 + 0/998 477/3375 68.4 68.7 175 183 197 598 1.29e+03 0 0 58 0 0 58 0.598 + 0/998 478/3375 68.5 68.8 175 183 197 598 1.29e+03 0 0 89 0 0 89 0.591 + 0/998 479/3375 68.6 68.9 175 184 197 599 1.29e+03 0 0 152 0 0 152 0.606 + 0/998 480/3375 68.6 68.9 175 184 197 599 1.29e+03 0 0 103 0 0 103 0.591 + 0/998 481/3375 68.6 68.9 175 184 197 599 1.29e+03 0 0 85 0 0 85 0.582 + 0/998 482/3375 68.6 68.9 175 183 197 599 1.29e+03 0 0 67 0 0 67 0.593 + 0/998 483/3375 68.6 68.9 175 183 197 598 1.29e+03 0 0 82 0 0 82 0.585 + 0/998 484/3375 68.6 68.8 175 183 197 598 1.29e+03 0 0 69 0 0 69 0.593 + 0/998 485/3375 68.5 68.8 175 183 197 598 1.29e+03 0 0 52 0 0 52 0.601 + 0/998 486/3375 68.6 68.9 175 183 197 599 1.29e+03 0 0 154 0 0 154 0.614 + 0/998 487/3375 68.6 68.9 175 183 197 598 1.29e+03 0 0 66 0 0 66 0.585 + 0/998 488/3375 68.6 68.9 175 183 197 598 1.29e+03 0 0 74 0 0 74 0.59 + 0/998 489/3375 68.5 68.8 175 183 196 597 1.29e+03 0 0 43 0 0 43 0.582 + 0/998 490/3375 68.5 68.7 175 183 196 597 1.29e+03 0 0 59 0 0 59 0.595 + 0/998 491/3375 68.6 68.8 175 183 196 597 1.29e+03 0 0 135 0 0 135 0.602 + 0/998 492/3375 68.6 68.8 175 183 196 597 1.29e+03 0 0 84 0 0 84 0.58 + 0/998 493/3375 68.6 68.9 175 183 196 597 1.29e+03 0 0 100 0 0 100 0.589 + 0/998 494/3375 68.6 68.8 175 183 196 597 1.29e+03 0 0 72 0 0 72 0.603 + 0/998 495/3375 68.7 68.8 175 183 196 597 1.29e+03 0 0 93 0 0 93 0.599 + 0/998 496/3375 68.6 68.8 174 182 196 596 1.29e+03 0 0 55 0 0 55 0.566 + 0/998 497/3375 68.6 68.8 174 182 196 596 1.29e+03 0 0 90 0 0 90 0.586 + 0/998 498/3375 68.6 68.8 174 182 196 596 1.29e+03 0 0 86 0 0 86 0.61 + 0/998 499/3375 68.7 68.9 174 182 196 596 1.29e+03 0 0 111 0 0 111 0.609 + 0/998 500/3375 68.6 68.8 174 182 196 596 1.29e+03 0 0 49 0 5 49 0.592 + 0/998 501/3375 68.6 68.8 174 182 196 596 1.29e+03 0 0 87 0 0 87 0.596 + 0/998 502/3375 68.7 68.9 174 182 196 596 1.29e+03 0 0 111 0 0 111 0.6 + 0/998 503/3375 68.7 68.9 174 182 196 596 1.29e+03 0 0 83 0 0 83 0.592 + 0/998 504/3375 68.7 68.9 174 182 196 596 1.29e+03 0 0 77 0 0 77 0.592 + 0/998 505/3375 68.7 68.9 174 182 196 596 1.28e+03 0 0 88 0 0 88 0.593 + 0/998 506/3375 68.8 68.9 174 182 196 596 1.29e+03 0 0 119 0 0 119 0.608 + 0/998 507/3375 68.7 68.9 174 182 196 596 1.28e+03 0 0 67 0 0 67 0.587 + 0/998 508/3375 68.7 68.9 174 182 195 596 1.28e+03 0 0 69 0 0 69 0.581 + 0/998 509/3375 68.7 68.9 174 182 195 596 1.28e+03 0 0 70 0 0 70 0.599 + 0/998 510/3375 68.7 68.9 174 181 195 596 1.28e+03 0 0 87 0 0 87 0.598 + 0/998 511/3375 68.7 68.9 174 182 195 596 1.28e+03 0 0 94 0 0 94 0.602 + 0/998 512/3375 68.7 68.9 174 181 195 596 1.28e+03 0 0 71 0 0 71 0.587 + 0/998 513/3375 68.8 69 174 181 195 596 1.28e+03 0 0 94 0 0 94 0.602 + 0/998 514/3375 68.7 68.9 174 181 195 595 1.28e+03 0 0 64 0 0 64 0.589 + 0/998 515/3375 68.8 69 174 181 195 596 1.28e+03 0 0 120 0 0 120 0.601 + 0/998 516/3375 68.8 69 174 181 195 596 1.28e+03 0 0 73 0 0 73 0.608 + 0/998 517/3375 68.8 68.9 174 181 195 595 1.28e+03 0 0 59 0 0 59 0.592 + 0/998 518/3375 68.8 68.9 174 181 195 595 1.28e+03 0 0 76 0 0 76 0.6 + 0/998 519/3375 68.9 69 174 181 195 596 1.28e+03 0 0 143 0 0 143 0.6 + 0/998 520/3375 68.9 69 174 181 195 596 1.28e+03 0 0 66 0 0 66 0.589 + 0/998 521/3375 68.9 68.9 174 181 195 595 1.28e+03 0 0 52 0 0 52 0.59 + 0/998 522/3375 68.8 68.9 173 181 195 595 1.28e+03 0 0 33 0 0 33 0.6 + 0/998 523/3375 68.7 68.8 173 180 194 595 1.28e+03 0 0 56 0 0 56 0.591 + 0/998 524/3375 68.8 68.9 173 180 194 595 1.28e+03 0 0 99 0 0 99 0.597 + 0/998 525/3375 68.8 68.9 173 180 194 595 1.28e+03 0 0 88 0 0 88 0.611 + 0/998 526/3375 68.8 68.9 173 180 194 595 1.28e+03 0 0 88 0 0 88 0.611 + 0/998 527/3375 68.8 68.9 173 180 194 595 1.28e+03 0 0 100 0 0 100 0.594 + 0/998 528/3375 68.8 68.9 173 180 194 595 1.28e+03 0 0 85 0 0 85 0.586 + 0/998 529/3375 68.8 68.9 173 180 194 595 1.28e+03 0 0 101 0 0 101 0.589 + 0/998 530/3375 68.9 69 173 180 194 596 1.28e+03 0 0 124 0 0 124 0.595 + 0/998 531/3375 68.9 69 173 180 194 596 1.28e+03 0 0 74 0 0 74 0.592 + 0/998 532/3375 68.8 69 173 180 194 596 1.28e+03 0 0 67 0 0 67 0.606 + 0/998 533/3375 68.8 68.9 173 180 194 595 1.28e+03 0 0 55 0 0 55 0.593 + 0/998 534/3375 68.8 69 173 180 194 596 1.28e+03 0 0 99 0 0 99 0.59 + 0/998 535/3375 68.8 68.9 173 180 194 595 1.28e+03 0 0 37 0 0 37 0.607 + 0/998 536/3375 68.8 68.9 173 180 194 595 1.28e+03 0 0 85 0 0 85 0.577 + 0/998 537/3375 68.8 68.9 173 180 194 595 1.28e+03 0 0 94 0 0 94 0.594 + 0/998 538/3375 68.8 69 173 179 194 595 1.28e+03 0 0 90 0 0 90 0.593 + 0/998 539/3375 68.8 68.9 173 179 194 595 1.28e+03 0 0 54 0 0 54 0.593 + 0/998 540/3375 68.8 68.9 173 179 194 595 1.28e+03 0 0 91 0 0 91 0.597 + 0/998 541/3375 68.8 69 173 179 194 595 1.28e+03 0 0 91 0 0 91 0.583 + 0/998 542/3375 68.8 69 173 179 194 595 1.28e+03 0 0 85 0 0 85 0.582 + 0/998 543/3375 68.8 68.9 172 179 194 595 1.28e+03 0 0 75 0 0 75 0.59 + 0/998 544/3375 68.9 69 173 179 194 595 1.28e+03 0 0 109 0 0 109 0.609 + 0/998 545/3375 68.9 69 173 179 194 595 1.28e+03 0 0 99 0 0 99 0.588 + 0/998 546/3375 68.9 69 173 179 194 595 1.28e+03 0 0 96 0 0 96 0.599 + 0/998 547/3375 68.9 69 172 179 193 595 1.28e+03 0 0 81 0 0 81 0.612 + 0/998 548/3375 68.9 68.9 172 179 193 595 1.28e+03 0 0 58 0 0 58 0.581 + 0/998 549/3375 68.9 68.9 172 179 193 594 1.28e+03 0 0 73 0 0 73 0.594 + 0/998 550/3375 68.8 68.9 172 179 193 594 1.28e+03 0 0 75 0 3 75 0.606 + 0/998 551/3375 68.9 69 172 179 193 594 1.28e+03 0 0 89 0 0 89 0.6 + 0/998 552/3375 68.9 69 172 179 193 594 1.28e+03 0 0 91 0 1 91 0.597 + 0/998 553/3375 68.9 69 172 179 193 594 1.28e+03 0 0 83 0 0 83 0.599 + 0/998 554/3375 68.9 69 172 179 193 595 1.28e+03 0 0 94 0 0 94 0.607 + 0/998 555/3375 68.9 68.9 172 178 193 594 1.27e+03 0 0 62 0 0 62 0.581 + 0/998 556/3375 68.8 68.9 172 178 193 594 1.27e+03 0 0 56 0 0 56 0.568 + 0/998 557/3375 68.8 68.9 172 178 193 593 1.27e+03 0 0 65 0 7 65 0.581 + 0/998 558/3375 68.8 68.9 172 178 193 594 1.27e+03 0 0 108 0 0 108 0.602 + 0/998 559/3375 68.8 68.9 172 178 193 593 1.27e+03 0 0 69 0 0 69 0.586 + 0/998 560/3375 68.8 68.8 171 178 192 593 1.27e+03 0 0 48 0 3 48 0.587 + 0/998 561/3375 68.8 68.8 171 178 192 593 1.27e+03 0 0 100 0 0 100 0.6 + 0/998 562/3375 68.7 68.8 171 178 192 593 1.27e+03 0 0 39 0 5 39 0.584 + 0/998 563/3375 68.7 68.8 171 178 192 593 1.27e+03 0 0 65 0 2 65 0.602 + 0/998 564/3375 68.7 68.8 171 177 192 592 1.27e+03 0 0 83 0 0 83 0.604 + 0/998 565/3375 68.7 68.8 171 177 192 593 1.27e+03 0 0 92 0 0 92 0.592 + 0/998 566/3375 68.7 68.8 171 177 192 593 1.27e+03 0 0 66 0 0 66 0.604 + 0/998 567/3375 68.8 68.8 171 177 192 593 1.27e+03 0 0 99 0 0 99 0.572 + 0/998 568/3375 68.9 68.9 171 177 192 593 1.27e+03 0 0 134 0 0 134 0.596 + 0/998 569/3375 68.8 68.8 171 177 192 593 1.27e+03 0 0 37 0 0 37 0.59 + 0/998 570/3375 68.8 68.8 171 177 192 592 1.27e+03 0 0 70 0 0 70 0.581 + 0/998 571/3375 68.8 68.8 171 177 192 592 1.27e+03 0 0 62 0 0 62 0.572 + 0/998 572/3375 68.8 68.8 171 177 192 592 1.27e+03 0 0 104 0 0 104 0.603 + 0/998 573/3375 68.8 68.9 171 177 192 593 1.27e+03 0.000478 8.8e-07 109 1 5 108 0.6 + 0/998 574/3375 68.9 68.9 171 177 192 593 1.27e+03 0.000478 8.78e-07 130 0 0 130 0.616 + 0/998 575/3375 68.9 68.9 171 177 192 593 1.27e+03 0.000478 8.77e-07 58 0 0 58 0.593 + 0/998 576/3375 68.9 69 171 177 192 593 1.27e+03 0.000478 8.74e-07 118 0 0 118 0.594 + 0/998 577/3375 68.9 68.9 171 177 192 593 1.27e+03 0.000478 8.74e-07 67 0 0 67 0.589 + 0/998 578/3375 68.9 68.9 171 177 191 593 1.27e+03 0.000478 8.72e-07 64 0 0 64 0.595 + 0/998 579/3375 68.8 68.9 171 177 191 592 1.27e+03 0.000478 8.72e-07 49 0 0 49 0.581 + 0/998 580/3375 68.8 68.9 170 176 191 592 1.27e+03 0.000471 8.71e-07 58 0 3 58 0.585 + 0/998 581/3375 68.8 68.8 170 176 191 592 1.27e+03 0.000471 8.69e-07 89 0 0 89 0.588 + 0/998 582/3375 68.8 68.9 170 176 191 592 1.27e+03 0.000471 8.67e-07 99 0 0 99 0.602 + 0/998 583/3375 68.8 68.9 170 176 191 592 1.27e+03 0.000471 8.66e-07 93 0 0 93 0.591 + 0/998 584/3375 68.9 69 170 177 191 592 1.27e+03 0.000471 8.63e-07 119 0 0 119 0.581 + 0/998 585/3375 68.9 69 170 176 191 592 1.27e+03 0.000471 8.6e-07 102 0 0 102 0.602 + 0/998 586/3375 68.9 68.9 170 176 191 592 1.27e+03 0.000471 8.59e-07 68 0 0 68 0.617 + 0/998 587/3375 68.9 68.9 170 176 191 592 1.27e+03 0.000471 8.59e-07 66 0 0 66 0.564 + 0/998 588/3375 68.8 68.9 170 176 191 592 1.27e+03 0.000471 8.57e-07 74 0 0 74 0.595 + 0/998 589/3375 68.8 68.9 170 176 191 591 1.27e+03 0.000471 8.54e-07 84 0 0 84 0.587 + 0/998 590/3375 68.7 68.8 170 176 191 591 1.26e+03 0.000471 8.53e-07 38 0 0 38 0.577 + 0/998 591/3375 68.8 68.9 170 176 191 591 1.26e+03 0.000471 8.51e-07 116 0 0 116 0.592 + 0/998 592/3375 68.7 68.8 170 176 190 591 1.26e+03 0.000471 8.5e-07 73 0 0 73 0.596 + 0/998 593/3375 68.8 68.9 170 176 191 591 1.26e+03 0.000469 8.5e-07 117 0 1 117 0.591 + 0/998 594/3375 68.8 68.9 170 176 191 591 1.27e+03 0.000464 8.46e-07 136 0 2 136 0.584 + 0/998 595/3375 68.9 69 170 176 191 591 1.27e+03 0.000461 8.44e-07 112 0 1 112 0.595 + 0/998 596/3375 68.8 68.9 170 176 190 591 1.26e+03 0.000455 8.44e-07 29 0 3 29 0.595 + 0/998 597/3375 68.8 68.9 170 176 190 591 1.26e+03 0.000455 8.41e-07 114 0 0 114 0.587 + 0/998 598/3375 68.8 68.9 170 176 190 591 1.26e+03 0.000739 1.68e-06 92 1 48 88 0.598 + 0/998 599/3375 68.8 68.9 170 176 190 590 1.26e+03 0.000736 1.68e-06 54 0 1 54 0.594 + 0/998 600/3375 68.8 68.9 170 176 190 590 1.26e+03 0.000736 1.67e-06 78 0 0 78 0.592 + 0/998 601/3375 68.8 68.9 170 176 190 590 1.26e+03 0.000733 1.67e-06 81 0 1 81 0.582 + 0/998 602/3375 68.8 68.9 170 176 190 590 1.26e+03 0.000733 1.67e-06 84 0 0 84 0.59 + 0/998 603/3375 68.8 68.9 169 176 190 590 1.26e+03 0.000733 1.67e-06 83 0 0 83 0.611 + 0/998 604/3375 68.8 68.9 170 176 190 591 1.26e+03 0.000733 1.67e-06 101 0 0 101 0.593 + 0/998 605/3375 68.8 68.9 169 176 190 591 1.26e+03 0.000724 1.66e-06 70 0 3 70 0.585 + 0/998 606/3375 68.8 68.9 169 176 190 591 1.26e+03 0.000724 1.66e-06 65 0 0 65 0.588 + 0/998 607/3375 68.8 68.9 169 176 190 591 1.26e+03 0.000724 1.66e-06 96 0 0 96 0.599 + 0/998 608/3375 68.8 68.9 169 176 190 591 1.26e+03 0.000724 1.66e-06 97 0 0 97 0.606 + 0/998 609/3375 68.9 68.9 169 176 190 591 1.26e+03 0.000724 1.66e-06 102 0 0 102 0.598 + 0/998 610/3375 68.9 68.9 169 175 190 591 1.26e+03 0.000724 1.65e-06 69 0 0 69 0.59 + 0/998 611/3375 68.9 69 169 176 190 591 1.26e+03 0.000724 1.65e-06 123 0 0 123 0.599 + 0/998 612/3375 69 69 170 176 190 591 1.26e+03 0.000724 1.64e-06 124 0 0 124 0.595 + 0/998 613/3375 69 69.1 170 176 190 591 1.26e+03 0.000724 1.64e-06 94 0 0 94 0.583 + 0/998 614/3375 69 69.1 170 176 190 591 1.26e+03 0.000724 1.64e-06 98 0 0 98 0.585 + 0/998 615/3375 69.1 69.1 170 176 190 592 1.27e+03 0.000724 1.63e-06 132 0 0 132 0.596 + 0/998 616/3375 69.2 69.2 170 176 190 592 1.27e+03 0.000724 1.63e-06 160 0 0 160 0.601 + 0/998 617/3375 69.2 69.2 170 176 190 593 1.27e+03 0.000724 1.63e-06 92 0 0 92 0.599 + 0/998 618/3375 69.2 69.2 170 176 190 593 1.27e+03 0.000724 1.62e-06 88 0 0 88 0.593 + 0/998 619/3375 69.2 69.2 170 176 190 592 1.27e+03 0.000724 1.62e-06 81 0 0 81 0.599 + 0/998 620/3375 69.2 69.2 170 176 190 592 1.27e+03 0.000724 1.62e-06 84 0 0 84 0.587 + 0/998 621/3375 69.2 69.2 170 176 190 592 1.27e+03 0.000724 1.62e-06 38 0 0 38 0.581 + 0/998 622/3375 69.2 69.2 170 176 190 592 1.27e+03 0.000724 1.61e-06 110 0 0 110 0.601 + 0/998 623/3375 69.2 69.3 170 176 190 592 1.27e+03 0.000724 1.61e-06 129 0 0 129 0.585 + 0/998 624/3375 69.2 69.2 170 176 190 592 1.27e+03 0.000724 1.61e-06 43 0 0 43 0.582 + 0/998 625/3375 69.2 69.2 170 176 190 592 1.27e+03 0.000724 1.61e-06 72 0 0 72 0.596 + 0/998 626/3375 69.2 69.2 170 175 190 591 1.26e+03 0.000724 1.6e-06 67 0 0 67 0.597 + 0/998 627/3375 69.1 69.1 170 175 190 591 1.26e+03 0.000724 1.6e-06 59 0 0 59 0.596 + 0/998 628/3375 69.1 69.1 169 175 190 591 1.26e+03 0.000724 1.6e-06 56 0 0 56 0.583 + 0/998 629/3375 69.1 69.1 169 175 189 591 1.26e+03 0.000724 1.6e-06 72 0 0 72 0.587 + 0/998 630/3375 69.1 69 169 175 189 591 1.26e+03 0.000724 1.6e-06 56 0 0 56 0.585 + 0/998 631/3375 69.1 69.1 169 175 189 591 1.26e+03 0.000724 1.6e-06 131 0 0 131 0.6 + 0/998 632/3375 69.1 69.1 169 175 189 591 1.26e+03 0.000724 1.6e-06 70 0 0 70 0.58 + 0/998 633/3375 69.1 69 169 175 189 591 1.26e+03 0.000724 1.59e-06 58 0 0 58 0.584 + 0/998 634/3375 69 69 169 175 189 591 1.26e+03 0.000724 1.59e-06 75 0 0 75 0.58 + 0/998 635/3375 69 69 169 175 189 591 1.26e+03 0.000724 1.59e-06 68 0 0 68 0.595 + 0/998 636/3375 69.1 69.1 169 175 189 591 1.26e+03 0.000724 1.59e-06 103 0 0 103 0.605 + 0/998 637/3375 69 69 169 175 189 591 1.26e+03 0.000724 1.59e-06 70 0 0 70 0.589 + 0/998 638/3375 69 69.1 169 175 189 590 1.26e+03 0.000724 1.58e-06 88 0 0 88 0.589 + 0/998 639/3375 69 69 169 174 189 590 1.26e+03 0.000724 1.58e-06 45 0 0 45 0.591 + 0/998 640/3375 69 69 168 174 189 590 1.26e+03 0.000724 1.58e-06 50 0 0 50 0.589 + 0/998 641/3375 69 69 168 174 189 590 1.26e+03 0.000724 1.58e-06 97 0 0 97 0.579 + 0/998 642/3375 69 69 168 174 189 590 1.26e+03 0.000724 1.58e-06 70 0 0 70 0.618 + 0/998 643/3375 69 69 168 174 189 590 1.26e+03 0.000724 1.57e-06 78 0 0 78 0.596 + 0/998 644/3375 69 69 168 174 189 590 1.26e+03 0.000724 1.57e-06 95 0 0 95 0.586 + 0/998 645/3375 69 69 168 174 189 590 1.26e+03 0.000724 1.57e-06 82 0 0 82 0.605 + 0/998 646/3375 69 69 168 174 188 590 1.26e+03 0.000724 1.57e-06 72 0 0 72 0.604 + 0/998 647/3375 69 69 168 174 188 590 1.26e+03 0.000686 1.56e-06 83 0 24 83 0.604 + 0/998 648/3375 69 69 168 174 188 590 1.26e+03 0.000686 1.56e-06 90 0 0 90 0.603 + 0/998 649/3375 69.1 69.1 168 174 189 590 1.26e+03 0.000686 1.56e-06 134 0 8 134 0.602 + 0/998 650/3375 69 69.1 168 174 188 590 1.26e+03 0.000686 1.56e-06 72 0 0 72 0.603 + 0/998 651/3375 69 69 168 174 188 590 1.26e+03 0.000686 1.56e-06 48 0 0 48 0.587 + 0/998 652/3375 69 69 168 174 188 590 1.26e+03 0.000686 1.55e-06 75 0 0 75 0.583 + 0/998 653/3375 69 69 168 174 188 590 1.26e+03 0.000686 1.55e-06 79 0 0 79 0.592 + 0/998 654/3375 69 69 168 174 188 590 1.26e+03 0.000686 1.55e-06 84 0 0 84 0.589 + 0/998 655/3375 69 69.1 168 174 188 590 1.26e+03 0.000686 1.55e-06 96 0 0 96 0.599 + 0/998 656/3375 69 69.1 168 174 188 590 1.26e+03 0.000686 1.55e-06 94 0 0 94 0.599 + 0/998 657/3375 69.1 69.1 168 174 188 590 1.26e+03 0.000686 1.54e-06 137 0 0 137 0.609 + 0/998 658/3375 69.1 69.1 168 174 188 590 1.26e+03 0.000686 1.54e-06 81 0 0 81 0.604 + 0/998 659/3375 69.1 69.2 168 174 188 590 1.26e+03 0.000686 1.53e-06 92 0 0 92 0.6 + 0/998 660/3375 69.1 69.2 168 174 188 590 1.26e+03 0.000686 1.53e-06 88 0 0 88 0.603 + 0/998 661/3375 69.1 69.2 168 174 188 590 1.26e+03 0.000686 1.53e-06 73 0 0 73 0.599 + 0/998 662/3375 69.1 69.2 168 174 188 590 1.26e+03 0.000686 1.53e-06 86 0 0 86 0.586 + 0/998 663/3375 69.1 69.1 168 174 188 590 1.26e+03 0.000681 1.53e-06 60 0 2 60 0.608 + 0/998 664/3375 69.1 69.2 168 174 188 590 1.26e+03 0.000681 1.52e-06 127 0 0 127 0.677 + 0/998 665/3375 69.1 69.2 168 174 188 590 1.26e+03 0.000681 1.52e-06 73 0 0 73 0.594 + 0/998 666/3375 69.1 69.1 168 174 188 590 1.26e+03 0.000681 1.52e-06 72 0 0 72 0.589 + 0/998 667/3375 69 69.1 168 174 188 589 1.26e+03 0.000681 1.51e-06 54 0 0 54 0.585 + 0/998 668/3375 69.1 69.2 168 174 188 590 1.26e+03 0.000681 1.51e-06 131 0 0 131 0.604 + 0/998 669/3375 69.1 69.1 168 174 188 590 1.26e+03 0.000681 1.51e-06 79 0 0 79 0.609 + 0/998 670/3375 69.2 69.2 168 174 188 590 1.26e+03 0.000681 1.5e-06 160 0 0 160 0.584 + 0/998 671/3375 69.3 69.3 168 174 188 591 1.26e+03 0.000681 1.5e-06 150 0 0 150 0.615 + 0/998 672/3375 69.3 69.3 168 174 188 591 1.26e+03 0.000681 1.5e-06 70 0 0 70 0.606 + 0/998 673/3375 69.3 69.3 168 174 188 590 1.26e+03 0.000681 1.5e-06 56 0 0 56 0.592 + 0/998 674/3375 69.3 69.3 168 174 188 590 1.26e+03 0.000681 1.5e-06 56 0 0 56 0.588 + 0/998 675/3375 69.2 69.3 168 174 188 590 1.26e+03 0.000681 1.49e-06 61 0 0 61 0.605 + 0/998 676/3375 69.2 69.3 168 174 188 590 1.26e+03 0.000681 1.49e-06 86 0 0 86 0.599 + 0/998 677/3375 69.2 69.3 168 174 188 590 1.26e+03 0.000681 1.49e-06 87 0 0 87 0.592 + 0/998 678/3375 69.2 69.2 168 174 187 589 1.26e+03 0.000681 1.49e-06 38 0 3 38 0.582 + 0/998 679/3375 69.2 69.2 168 174 187 589 1.26e+03 0.000681 1.48e-06 97 0 0 97 0.588 + 0/998 680/3375 69.2 69.2 168 173 187 589 1.26e+03 0.000681 1.48e-06 100 0 0 100 0.604 + 0/998 681/3375 69.2 69.2 168 173 187 589 1.26e+03 0.000681 1.48e-06 76 0 0 76 0.578 + 0/998 682/3375 69.2 69.2 168 173 187 589 1.26e+03 0.000681 1.48e-06 85 0 0 85 0.583 + 0/998 683/3375 69.3 69.3 168 173 187 590 1.26e+03 0.000676 1.47e-06 120 0 2 120 0.606 + 0/998 684/3375 69.3 69.3 168 174 187 590 1.26e+03 0.000676 1.47e-06 114 0 0 114 0.599 + 0/998 685/3375 69.3 69.2 168 173 187 590 1.26e+03 0.000676 1.47e-06 43 0 0 43 0.593 + 0/998 686/3375 69.2 69.2 168 173 187 589 1.26e+03 0.000676 1.47e-06 62 0 0 62 0.588 + 0/998 687/3375 69.3 69.2 168 173 187 590 1.26e+03 0.000676 1.46e-06 101 0 0 101 0.63 + 0/998 688/3375 69.3 69.2 168 173 187 590 1.26e+03 0.000676 1.46e-06 78 0 0 78 0.595 + 0/998 689/3375 69.2 69.2 168 173 187 589 1.26e+03 0.000676 1.46e-06 58 0 0 58 0.597 + 0/998 690/3375 69.2 69.1 167 173 187 589 1.25e+03 0.000676 1.46e-06 53 0 0 53 0.612 + 0/998 691/3375 69.2 69.2 168 173 187 589 1.26e+03 0.000676 1.46e-06 116 0 0 116 0.609 + 0/998 692/3375 69.2 69.2 168 173 187 590 1.26e+03 0.000676 1.46e-06 88 0 0 88 0.589 + 0/998 693/3375 69.2 69.1 167 173 187 589 1.25e+03 0.000676 1.45e-06 51 0 0 51 0.598 + 0/998 694/3375 69.1 69.1 167 173 187 589 1.25e+03 0.000676 1.45e-06 57 0 0 57 0.576 + 0/998 695/3375 69.2 69.1 167 173 187 589 1.25e+03 0.000676 1.45e-06 97 0 0 97 0.594 + 0/998 696/3375 69.1 69.1 167 173 187 589 1.25e+03 0.000676 1.45e-06 67 0 0 67 0.582 + 0/998 697/3375 69.1 69.1 167 173 187 588 1.25e+03 0.000676 1.44e-06 93 0 0 93 0.599 + 0/998 698/3375 69.1 69 167 172 186 588 1.25e+03 0.000676 1.44e-06 61 0 0 61 0.595 + 0/998 699/3375 69.1 69 167 172 186 588 1.25e+03 0.000676 1.44e-06 59 0 0 59 0.584 + 0/998 700/3375 69.1 69 167 172 186 588 1.25e+03 0.000676 1.44e-06 87 0 0 87 0.58 + 0/998 701/3375 69.1 69 167 172 186 588 1.25e+03 0.000676 1.44e-06 62 0 0 62 0.592 + 0/998 702/3375 69.1 69 167 172 186 588 1.25e+03 0.000676 1.44e-06 95 0 0 95 0.605 + 0/998 703/3375 69 68.9 167 172 186 588 1.25e+03 0.00062 1.44e-06 74 0 2 73 0.58 + 0/998 704/3375 69 68.9 167 172 186 587 1.25e+03 0.00062 1.43e-06 59 0 0 59 0.583 + 0/998 705/3375 69 68.9 167 172 186 587 1.25e+03 0.00062 1.43e-06 98 0 0 98 0.593 + 0/998 706/3375 69 68.9 167 172 186 587 1.25e+03 0.00062 1.43e-06 99 0 0 99 0.596 + 0/998 707/3375 69.1 69 167 172 186 588 1.25e+03 0.00062 1.42e-06 145 0 0 145 0.587 + 0/998 708/3375 69 68.9 167 172 186 587 1.25e+03 0.000613 1.42e-06 42 0 6 42 0.603 + 0/998 709/3375 69 68.9 167 172 186 587 1.25e+03 0.000613 1.42e-06 30 0 3 30 0.591 + 0/998 710/3375 69 68.9 167 172 186 587 1.25e+03 0.000613 1.42e-06 101 0 0 101 0.59 + 0/998 711/3375 68.9 68.9 166 172 186 587 1.25e+03 0.000613 1.42e-06 60 0 0 60 0.603 + 0/998 712/3375 69 68.9 167 172 186 587 1.25e+03 0.000602 1.42e-06 128 0 11 128 0.6 + 0/998 713/3375 69 68.9 166 172 186 587 1.25e+03 0.000602 1.41e-06 62 0 0 62 0.6 + 0/998 714/3375 69 68.9 166 172 186 587 1.25e+03 0.000602 1.41e-06 76 0 0 76 0.603 + 0/998 715/3375 69 68.9 166 172 185 587 1.25e+03 0.000602 1.41e-06 100 0 0 100 0.597 + 0/998 716/3375 69 68.9 166 171 185 587 1.25e+03 0.000602 1.41e-06 85 0 0 85 0.591 + 0/998 717/3375 69 68.9 166 171 185 587 1.25e+03 0.000602 1.41e-06 76 0 0 76 0.607 + 0/998 718/3375 69 68.9 166 171 185 587 1.25e+03 0.000602 1.41e-06 92 0 0 92 0.602 + 0/998 719/3375 69 68.9 166 171 185 587 1.25e+03 0.000602 1.4e-06 94 0 0 94 0.604 + 0/998 720/3375 69 68.9 166 171 185 587 1.25e+03 0.000602 1.4e-06 93 0 0 93 0.59 + 0/998 721/3375 69 68.9 166 171 185 587 1.25e+03 0.000602 1.4e-06 59 0 0 59 0.596 + 0/998 722/3375 69 68.9 166 171 185 587 1.25e+03 0.000602 1.4e-06 77 0 0 77 0.57 + 0/998 723/3375 69 68.8 166 171 185 586 1.25e+03 0.000602 1.4e-06 51 0 0 51 0.582 + 0/998 724/3375 68.9 68.8 166 171 185 586 1.25e+03 0.000602 1.4e-06 46 0 0 46 0.59 + 0/998 725/3375 68.9 68.8 166 171 185 586 1.25e+03 0.000602 1.4e-06 71 0 0 71 0.593 + 0/998 726/3375 68.9 68.7 166 171 185 586 1.24e+03 0.000602 1.4e-06 76 0 0 76 0.594 + 0/998 727/3375 68.9 68.8 166 171 185 586 1.25e+03 0.000602 1.39e-06 126 0 0 126 0.6 + 0/998 728/3375 68.9 68.7 166 171 185 586 1.24e+03 0.000602 1.39e-06 42 0 0 42 0.582 + 0/998 729/3375 68.9 68.8 166 171 185 586 1.25e+03 0.000602 1.39e-06 119 0 0 119 0.612 + 0/998 730/3375 68.9 68.8 166 171 185 586 1.25e+03 0.000602 1.38e-06 102 0 0 102 0.61 + 0/998 731/3375 68.9 68.9 166 171 185 586 1.25e+03 0.000602 1.38e-06 108 0 0 108 0.609 + 0/998 732/3375 68.9 68.8 166 171 185 586 1.24e+03 0.000602 1.38e-06 66 0 0 66 0.592 + 0/998 733/3375 68.9 68.8 166 171 185 586 1.24e+03 0.000602 1.38e-06 85 0 0 85 0.614 + 0/998 734/3375 69 68.9 166 171 185 587 1.25e+03 0.000602 1.38e-06 146 0 0 146 0.619 + 0/998 735/3375 69 68.9 166 171 185 586 1.25e+03 0.000602 1.37e-06 43 0 0 43 0.593 + 0/998 736/3375 69 68.8 166 171 185 586 1.25e+03 0.000602 1.37e-06 81 0 0 81 0.621 + 0/998 737/3375 68.9 68.8 165 171 184 586 1.24e+03 0.000602 1.37e-06 47 0 0 47 0.607 + 0/998 738/3375 68.9 68.8 165 171 184 586 1.24e+03 0.000602 1.37e-06 74 0 0 74 0.599 + 0/998 739/3375 68.9 68.7 165 170 184 586 1.24e+03 0.000602 1.37e-06 53 0 0 53 0.606 + 0/998 740/3375 68.9 68.7 165 170 184 586 1.24e+03 0.000602 1.37e-06 79 0 0 79 0.616 + 0/998 741/3375 68.9 68.8 165 171 184 586 1.24e+03 0.000602 1.37e-06 114 0 0 114 0.577 + 0/998 742/3375 68.9 68.7 165 170 184 586 1.24e+03 0.000602 1.37e-06 56 0 0 56 0.586 + 0/998 743/3375 68.9 68.7 165 170 184 586 1.24e+03 0.000602 1.36e-06 65 0 0 65 0.589 + 0/998 744/3375 68.9 68.7 165 170 184 586 1.24e+03 0.000602 1.36e-06 75 0 0 75 0.603 + 0/998 745/3375 68.9 68.7 165 170 184 585 1.24e+03 0.000602 1.36e-06 86 0 0 86 0.618 + 0/998 746/3375 68.9 68.7 165 170 184 585 1.24e+03 0.000597 1.36e-06 73 0 2 73 0.582 + 0/998 747/3375 68.9 68.7 165 170 184 585 1.24e+03 0.000597 1.36e-06 64 0 0 64 0.583 + 0/998 748/3375 68.9 68.8 165 170 184 586 1.24e+03 0.000597 1.35e-06 139 0 0 139 0.615 + 0/998 749/3375 68.9 68.8 165 170 184 586 1.24e+03 0.000597 1.35e-06 96 0 0 96 0.591 + 0/998 750/3375 69 68.8 165 170 184 586 1.24e+03 0.000595 1.35e-06 105 0 2 104 0.59 + 0/998 751/3375 68.9 68.8 165 170 184 586 1.24e+03 0.000595 1.35e-06 54 0 0 54 0.6 + 0/998 752/3375 68.9 68.8 165 170 184 585 1.24e+03 0.000595 1.35e-06 69 0 2 69 0.588 + 0/998 753/3375 68.9 68.7 165 170 184 585 1.24e+03 0.000595 1.34e-06 69 0 0 69 0.621 + 0/998 754/3375 69 68.8 165 170 184 585 1.24e+03 0.000595 1.34e-06 117 0 0 117 0.603 + 0/998 755/3375 69 68.8 165 170 184 586 1.24e+03 0.000595 1.34e-06 82 0 0 82 0.613 + 0/998 756/3375 69 68.8 165 170 184 585 1.24e+03 0.000595 1.34e-06 73 0 0 73 0.605 + 0/998 757/3375 69 68.8 165 170 184 585 1.24e+03 0.000595 1.34e-06 79 0 0 79 0.608 + 0/998 758/3375 68.9 68.8 165 170 184 585 1.24e+03 0.000595 1.34e-06 72 0 0 72 0.597 + 0/998 759/3375 68.9 68.7 165 170 184 585 1.24e+03 0.000595 1.33e-06 51 0 0 51 0.6 + 0/998 760/3375 68.9 68.7 165 170 183 585 1.24e+03 0.000595 1.33e-06 57 0 0 57 0.615 + 0/998 761/3375 68.9 68.7 165 170 183 585 1.24e+03 0.000595 1.33e-06 102 0 0 102 0.595 + 0/998 762/3375 68.9 68.7 165 170 184 585 1.24e+03 0.000593 1.33e-06 103 0 1 103 0.603 + 0/998 763/3375 68.9 68.7 165 170 183 585 1.24e+03 0.000593 1.33e-06 80 0 0 80 0.606 + 0/998 764/3375 68.9 68.7 165 169 183 585 1.24e+03 0.000593 1.33e-06 67 0 0 67 0.596 + 0/998 765/3375 68.8 68.7 165 169 183 584 1.24e+03 0.000593 1.32e-06 53 0 1 53 0.592 + 0/998 766/3375 68.8 68.7 165 169 183 584 1.24e+03 0.000593 1.32e-06 71 0 0 71 0.603 + 0/998 767/3375 68.8 68.7 165 169 183 584 1.24e+03 0.000593 1.32e-06 93 0 0 93 0.592 + 0/998 768/3375 68.8 68.7 165 169 183 584 1.24e+03 0.000593 1.32e-06 118 0 0 118 0.59 + 0/998 769/3375 68.8 68.7 165 169 183 584 1.24e+03 0.000593 1.32e-06 60 0 0 60 0.6 + 0/998 770/3375 68.9 68.7 165 169 183 584 1.24e+03 0.000591 1.31e-06 105 0 2 105 0.603 + 0/998 771/3375 68.8 68.7 165 169 183 584 1.24e+03 0.000591 1.31e-06 59 0 0 59 0.589 + 0/998 772/3375 68.8 68.7 165 169 183 584 1.24e+03 0.000591 1.31e-06 94 0 0 94 0.596 + 0/998 773/3375 68.8 68.7 165 169 183 584 1.24e+03 0.000591 1.31e-06 77 0 0 77 0.602 + 0/998 774/3375 68.8 68.7 165 169 183 584 1.24e+03 0.000591 1.31e-06 72 0 0 72 0.6 + 0/998 775/3375 68.8 68.7 164 169 183 584 1.24e+03 0.000589 1.3e-06 79 0 4 79 0.593 + 0/998 776/3375 68.8 68.7 164 169 183 583 1.24e+03 0.000585 1.3e-06 70 0 2 70 0.606 + 0/998 777/3375 68.8 68.7 164 169 183 583 1.24e+03 0.000833 1.95e-06 78 1 15 73 0.599 + 0/998 778/3375 68.8 68.7 164 169 183 583 1.24e+03 0.000947 2.6e-06 94 1 53 89 0.601 + 0/998 779/3375 68.8 68.7 164 169 183 583 1.24e+03 0.000926 2.59e-06 109 0 8 107 0.604 + 0/998 780/3375 68.8 68.7 164 169 183 583 1.24e+03 0.0011 3.24e-06 77 1 18 76 0.589 + 0/998 781/3375 68.8 68.7 164 169 183 583 1.24e+03 0.00109 3.23e-06 65 0 5 63 0.599 + 0/998 782/3375 68.8 68.7 164 169 183 583 1.24e+03 0.00107 3.23e-06 85 0 5 84 0.603 + 0/998 783/3375 68.8 68.7 164 169 183 583 1.24e+03 0.0011 3.87e-06 96 1 35 93 0.605 + 0/998 784/3375 68.8 68.6 164 169 183 583 1.24e+03 0.000987 3.87e-06 73 0 15 70 0.622 + 0/998 785/3375 68.7 68.6 164 169 182 583 1.24e+03 0.000985 3.87e-06 45 0 1 45 0.619 + 0/998 786/3375 68.7 68.6 164 169 182 582 1.23e+03 0.000985 3.86e-06 45 0 0 45 0.6 + 0/998 787/3375 68.7 68.6 164 168 182 582 1.23e+03 0.000974 3.86e-06 67 0 5 67 0.612 + 0/998 788/3375 68.7 68.6 164 168 182 582 1.23e+03 0.000974 3.86e-06 76 0 0 76 0.597 + 0/998 789/3375 68.7 68.6 164 168 182 582 1.23e+03 0.000963 3.85e-06 114 0 5 114 0.59 + 0/998 790/3375 68.7 68.5 164 168 182 582 1.23e+03 0.000963 3.84e-06 52 0 0 52 0.585 + 0/998 791/3375 68.7 68.6 164 168 182 582 1.23e+03 0.000963 3.84e-06 86 0 0 86 0.59 + 0/998 792/3375 68.7 68.5 164 168 182 582 1.23e+03 0.000961 3.84e-06 83 0 1 83 0.596 + 0/998 793/3375 68.7 68.5 164 168 182 582 1.23e+03 0.000961 3.83e-06 100 0 0 100 0.6 + 0/998 794/3375 68.8 68.6 164 168 182 582 1.23e+03 0.000961 3.82e-06 121 0 0 121 0.59 + 0/998 795/3375 68.8 68.6 164 168 182 583 1.23e+03 0.000961 3.82e-06 95 0 0 95 0.595 + 0/998 796/3375 68.8 68.6 164 168 182 582 1.23e+03 0.000961 3.81e-06 58 0 0 58 0.589 + 0/998 797/3375 68.8 68.6 164 168 182 582 1.23e+03 0.000961 3.8e-06 106 0 0 106 0.607 + 0/998 798/3375 68.8 68.6 164 168 182 582 1.23e+03 0.000961 3.8e-06 91 0 0 91 0.605 + 0/998 799/3375 68.8 68.6 164 168 182 582 1.23e+03 0.000961 3.79e-06 76 0 0 76 0.609 + 0/998 800/3375 68.7 68.5 164 168 182 582 1.23e+03 0.000961 3.79e-06 48 0 0 48 0.59 + 0/998 801/3375 68.7 68.5 164 168 182 582 1.23e+03 0.000961 3.79e-06 64 0 0 64 0.593 + 0/998 802/3375 68.7 68.5 164 168 182 582 1.23e+03 0.000961 3.79e-06 83 0 0 83 0.598 + 0/998 803/3375 68.7 68.5 163 168 182 582 1.23e+03 0.000961 3.78e-06 79 0 0 79 0.58 + 0/998 804/3375 68.7 68.5 163 168 182 581 1.23e+03 0.000961 3.78e-06 52 0 0 52 0.6 + 0/998 805/3375 68.7 68.5 163 168 182 581 1.23e+03 0.000959 3.76e-06 118 0 1 118 0.615 + 0/998 806/3375 68.7 68.5 163 168 181 581 1.23e+03 0.000959 3.76e-06 52 0 0 52 0.588 + 0/998 807/3375 68.7 68.5 163 168 181 581 1.23e+03 0.000959 3.76e-06 101 0 0 101 0.598 + 0/998 808/3375 68.7 68.5 163 168 181 581 1.23e+03 0.00111 4.38e-06 86 1 1 85 0.611 + 0/998 809/3375 68.7 68.5 163 168 181 581 1.23e+03 0.00111 4.37e-06 70 0 0 70 0.601 + 0/998 810/3375 68.7 68.5 163 168 181 581 1.23e+03 0.00111 4.37e-06 86 0 0 86 0.606 + 0/998 811/3375 68.7 68.5 163 168 181 582 1.23e+03 0.00111 4.36e-06 114 0 0 114 0.602 + 0/998 812/3375 68.7 68.5 163 168 181 582 1.23e+03 0.00111 4.35e-06 84 0 0 84 0.605 + 0/998 813/3375 68.7 68.5 163 167 181 582 1.23e+03 0.00111 4.35e-06 88 0 0 88 0.611 + 0/998 814/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.34e-06 88 0 0 88 0.621 + 0/998 815/3375 68.7 68.5 163 167 181 582 1.23e+03 0.00111 4.34e-06 65 0 0 65 0.599 + 0/998 816/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.33e-06 113 0 0 113 0.6 + 0/998 817/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.33e-06 98 0 0 98 0.614 + 0/998 818/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.33e-06 84 0 0 84 0.613 + 0/998 819/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.32e-06 76 0 0 76 0.596 + 0/998 820/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.31e-06 101 0 0 101 0.59 + 0/998 821/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.31e-06 83 0 0 83 0.617 + 0/998 822/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.3e-06 81 0 0 81 0.613 + 0/998 823/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.29e-06 119 0 0 119 0.613 + 0/998 824/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.29e-06 83 0 0 83 0.583 + 0/998 825/3375 68.9 68.6 163 167 181 582 1.23e+03 0.00111 4.28e-06 97 0 0 97 0.604 + 0/998 826/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.27e-06 55 0 0 55 0.58 + 0/998 827/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.27e-06 53 0 0 53 0.611 + 0/998 828/3375 68.8 68.6 163 167 181 581 1.23e+03 0.00111 4.27e-06 65 0 0 65 0.611 + 0/998 829/3375 68.8 68.6 163 167 181 581 1.23e+03 0.00111 4.26e-06 79 0 0 79 0.619 + 0/998 830/3375 68.8 68.6 163 167 181 581 1.23e+03 0.00111 4.25e-06 91 0 0 91 0.609 + 0/998 831/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.24e-06 124 0 0 124 0.609 + 0/998 832/3375 68.9 68.6 163 167 181 582 1.23e+03 0.00111 4.24e-06 120 0 0 120 0.589 + 0/998 833/3375 68.8 68.6 163 167 181 581 1.23e+03 0.00111 4.24e-06 32 0 1 32 0.6 + 0/998 834/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.23e-06 101 0 0 101 0.6 + 0/998 835/3375 68.8 68.7 163 167 181 582 1.23e+03 0.00111 4.22e-06 95 0 0 95 0.594 + 0/998 836/3375 68.9 68.7 163 167 181 582 1.23e+03 0.00111 4.22e-06 92 0 0 92 0.615 + 0/998 837/3375 68.9 68.7 163 167 181 582 1.23e+03 0.00111 4.21e-06 96 0 0 96 0.616 + 0/998 838/3375 68.9 68.7 163 167 181 582 1.23e+03 0.00111 4.21e-06 75 0 0 75 0.597 + 0/998 839/3375 68.9 68.6 163 167 181 582 1.23e+03 0.00111 4.2e-06 91 0 0 91 0.605 + 0/998 840/3375 68.8 68.6 163 167 181 581 1.23e+03 0.00111 4.2e-06 53 0 0 53 0.59 + 0/998 841/3375 68.9 68.6 163 167 181 581 1.23e+03 0.00111 4.19e-06 98 0 0 98 0.597 + 0/998 842/3375 68.8 68.6 163 167 181 581 1.23e+03 0.00111 4.19e-06 74 0 0 74 0.624 + 0/998 843/3375 68.9 68.6 163 167 181 581 1.23e+03 0.00111 4.18e-06 94 0 0 94 0.592 + 0/998 844/3375 68.9 68.7 163 167 181 581 1.23e+03 0.00111 4.18e-06 82 0 0 82 0.606 + 0/998 845/3375 68.8 68.6 163 167 180 581 1.23e+03 0.00103 4.18e-06 51 0 2 50 0.6 + 0/998 846/3375 68.9 68.7 163 167 180 581 1.23e+03 0.00103 4.17e-06 110 0 3 110 0.609 + 0/998 847/3375 68.9 68.7 163 167 180 582 1.23e+03 0.00103 4.16e-06 103 0 0 103 0.595 + 0/998 848/3375 68.9 68.7 163 167 180 582 1.23e+03 0.00116 4.76e-06 98 1 8 95 0.599 + 0/998 849/3375 68.9 68.7 163 167 180 582 1.23e+03 0.00116 4.75e-06 91 0 1 91 0.611 + 0/998 850/3375 68.9 68.7 163 166 180 582 1.23e+03 0.00116 4.74e-06 47 0 0 47 0.579 + 0/998 851/3375 68.9 68.7 162 166 180 581 1.23e+03 0.00116 4.74e-06 76 0 4 76 0.591 + 0/998 852/3375 68.9 68.7 162 166 180 582 1.23e+03 0.00116 4.74e-06 83 0 0 83 0.579 + 0/998 853/3375 68.9 68.7 163 166 180 582 1.23e+03 0.00116 4.72e-06 135 0 0 135 0.601 + 0/998 854/3375 68.9 68.7 162 166 180 582 1.23e+03 0.00116 4.72e-06 91 0 0 91 0.597 + 0/998 855/3375 68.9 68.7 162 166 180 582 1.23e+03 0.00116 4.71e-06 102 0 0 102 0.597 + 0/998 856/3375 69 68.8 162 166 180 582 1.23e+03 0.00116 4.71e-06 138 0 0 138 0.611 + 0/998 857/3375 69 68.7 162 166 180 582 1.23e+03 0.00116 4.7e-06 67 0 0 67 0.599 + 0/998 858/3375 68.9 68.7 162 166 180 582 1.23e+03 0.00116 4.69e-06 81 0 0 81 0.599 + 0/998 859/3375 68.9 68.7 162 166 180 582 1.23e+03 0.00116 4.69e-06 74 0 0 74 0.604 + 0/998 860/3375 68.9 68.7 162 166 180 582 1.23e+03 0.00116 4.68e-06 92 0 0 92 0.615 + 0/998 861/3375 68.9 68.7 162 166 180 582 1.23e+03 0.00116 4.68e-06 67 0 1 67 0.593 + 0/998 862/3375 69 68.7 162 166 180 582 1.23e+03 0.00116 4.67e-06 122 0 0 122 0.604 + 0/998 863/3375 68.9 68.7 162 166 180 582 1.23e+03 0.00116 4.67e-06 63 0 0 63 0.583 + 0/998 864/3375 68.9 68.7 162 166 180 582 1.23e+03 0.00116 4.66e-06 93 0 0 93 0.594 + 0/998 865/3375 68.9 68.7 162 166 180 581 1.23e+03 0.00116 4.65e-06 77 0 0 77 0.603 + 0/998 866/3375 68.9 68.7 162 166 180 581 1.23e+03 0.00107 4.65e-06 68 0 7 66 0.589 + 0/998 867/3375 68.9 68.6 162 166 180 581 1.23e+03 0.00107 4.65e-06 75 0 0 75 0.597 + 0/998 868/3375 68.9 68.6 162 166 180 581 1.23e+03 0.00107 4.64e-06 84 0 0 84 0.594 + 0/998 869/3375 68.9 68.6 162 166 180 581 1.23e+03 0.00105 4.63e-06 51 0 9 50 0.596 + 0/998 870/3375 68.8 68.6 162 166 180 581 1.23e+03 0.00104 4.63e-06 43 0 6 43 0.576 + 0/998 871/3375 68.8 68.6 162 166 180 581 1.23e+03 0.00104 4.63e-06 68 0 0 68 0.586 + 0/998 872/3375 68.8 68.6 162 166 180 581 1.22e+03 0.00101 4.62e-06 70 0 17 70 0.603 + 0/998 873/3375 68.8 68.6 162 165 180 581 1.22e+03 0.00101 4.62e-06 74 0 0 74 0.589 + 0/998 874/3375 68.8 68.6 162 165 180 581 1.22e+03 0.00101 4.62e-06 88 0 0 88 0.595 + 0/998 875/3375 68.8 68.5 162 165 180 580 1.22e+03 0.00125 5.76e-06 55 2 0 53 0.59 + 0/998 876/3375 68.8 68.5 162 165 180 580 1.22e+03 0.00125 5.75e-06 96 0 0 96 0.613 + 0/998 877/3375 68.8 68.5 162 165 179 580 1.22e+03 0.00125 5.74e-06 71 0 0 71 0.609 + 0/998 878/3375 68.8 68.5 162 165 179 580 1.22e+03 0.00125 5.74e-06 58 0 2 58 0.604 + 0/998 879/3375 68.8 68.5 162 165 179 580 1.22e+03 0.00124 5.73e-06 105 0 2 104 0.588 + 0/998 880/3375 68.8 68.5 162 165 179 580 1.22e+03 0.00124 5.72e-06 86 0 0 86 0.585 + 0/998 881/3375 68.8 68.5 162 165 179 580 1.22e+03 0.00124 5.71e-06 81 0 0 81 0.594 + 0/998 882/3375 68.8 68.5 162 165 179 579 1.22e+03 0.00124 5.71e-06 82 0 0 82 0.583 + 0/998 883/3375 68.8 68.6 162 165 179 580 1.22e+03 0.00124 5.7e-06 123 0 0 123 0.614 + 0/998 884/3375 68.9 68.6 162 165 179 580 1.22e+03 0.00124 5.69e-06 113 0 0 113 0.593 + 0/998 885/3375 68.8 68.6 162 165 179 580 1.22e+03 0.00124 5.68e-06 50 0 0 50 0.583 + 0/998 886/3375 68.8 68.5 161 165 179 580 1.22e+03 0.00124 5.68e-06 58 0 0 58 0.615 + 0/998 887/3375 68.8 68.6 161 165 179 580 1.22e+03 0.00124 5.68e-06 82 0 0 82 0.613 + 0/998 888/3375 68.8 68.6 161 165 179 580 1.22e+03 0.00124 5.67e-06 93 0 0 93 0.595 + 0/998 889/3375 68.9 68.6 161 165 179 580 1.22e+03 0.00124 5.66e-06 119 0 0 119 0.597 + 0/998 890/3375 68.9 68.6 162 165 179 580 1.22e+03 0.00124 5.65e-06 141 0 0 141 0.585 + 0/998 891/3375 68.9 68.6 162 165 179 580 1.22e+03 0.00124 5.64e-06 89 0 0 89 0.609 + 0/998 892/3375 68.9 68.7 162 165 179 580 1.22e+03 0.00124 5.63e-06 96 0 0 96 0.601 + 0/998 893/3375 68.9 68.7 162 165 179 580 1.22e+03 0.00124 5.62e-06 95 0 1 95 0.6 + 0/998 894/3375 68.9 68.7 162 165 179 580 1.22e+03 0.00124 5.61e-06 97 0 0 97 0.602 + 0/998 895/3375 69 68.7 162 165 179 580 1.22e+03 0.00124 5.6e-06 96 0 0 96 0.609 + 0/998 896/3375 69 68.7 161 165 179 580 1.22e+03 0.00124 5.6e-06 69 0 0 69 0.589 + 0/998 897/3375 69 68.7 162 165 179 580 1.22e+03 0.00136 6.15e-06 108 1 0 107 0.604 + 0/998 898/3375 69 68.7 161 165 179 580 1.22e+03 0.00136 6.14e-06 82 0 0 82 0.603 + 0/998 899/3375 69 68.7 161 165 179 580 1.22e+03 0.00136 6.13e-06 90 0 0 90 0.6 + 0/998 900/3375 69 68.7 161 165 179 580 1.22e+03 0.00136 6.13e-06 63 0 0 63 0.601 + 0/998 901/3375 69 68.7 161 165 179 580 1.22e+03 0.00136 6.11e-06 82 0 0 82 0.606 + 0/998 902/3375 69 68.7 161 165 179 580 1.22e+03 0.00136 6.11e-06 83 0 0 83 0.595 + 0/998 903/3375 69 68.7 161 165 179 580 1.22e+03 0.00136 6.1e-06 81 0 0 81 0.597 + 0/998 904/3375 69 68.8 161 165 179 580 1.22e+03 0.00136 6.09e-06 119 0 0 119 0.583 + 0/998 905/3375 69 68.8 161 165 179 580 1.22e+03 0.00136 6.08e-06 85 0 1 85 0.61 + 0/998 906/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00136 6.08e-06 120 0 1 120 0.613 + 0/998 907/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00146 6.62e-06 103 1 6 102 0.631 + 0/998 908/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00144 6.62e-06 55 0 6 55 0.578 + 0/998 909/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00144 6.61e-06 116 0 1 116 0.607 + 0/998 910/3375 69.1 68.8 161 165 179 581 1.22e+03 0.00135 6.6e-06 95 0 3 94 0.609 + 0/998 911/3375 69.1 68.8 161 165 179 581 1.22e+03 0.00135 6.59e-06 88 0 0 88 0.596 + 0/998 912/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00135 6.59e-06 44 0 0 44 0.592 + 0/998 913/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00135 6.58e-06 66 0 0 66 0.581 + 0/998 914/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00135 6.58e-06 82 0 0 82 0.607 + 0/998 915/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00135 6.57e-06 92 0 0 92 0.609 + 0/998 916/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00135 6.56e-06 120 0 1 120 0.641 + 0/998 917/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00135 6.56e-06 68 0 0 68 0.609 + 0/998 918/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00135 6.54e-06 85 0 0 85 0.596 + 0/998 919/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00135 6.54e-06 61 0 0 61 0.615 + 0/998 920/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00134 6.54e-06 73 0 6 71 0.637 + 0/998 921/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00133 6.52e-06 111 0 2 111 0.609 + 0/998 922/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00132 6.52e-06 85 0 5 85 0.606 + 0/998 923/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00132 6.5e-06 90 0 0 90 0.596 + 0/998 924/3375 69.1 68.8 161 165 178 579 1.22e+03 0.00131 6.5e-06 47 0 4 47 0.598 + 0/998 925/3375 69.1 68.8 161 165 178 579 1.22e+03 0.00131 6.5e-06 88 0 0 88 0.607 + 0/998 926/3375 69.1 68.7 161 165 178 579 1.22e+03 0.00131 6.5e-06 70 0 0 70 0.605 + 0/998 927/3375 69.1 68.7 161 165 178 579 1.22e+03 0.00131 6.49e-06 56 0 0 56 0.607 + 0/998 928/3375 69.1 68.7 161 165 178 579 1.22e+03 0.00131 6.48e-06 77 0 2 77 0.59 + 0/998 929/3375 69 68.7 161 165 178 579 1.22e+03 0.0013 6.47e-06 73 0 5 73 0.603 + 0/998 930/3375 69 68.7 161 165 178 579 1.22e+03 0.00129 6.47e-06 80 0 4 80 0.613 + 0/998 931/3375 69 68.7 161 165 178 579 1.22e+03 0.00128 6.46e-06 68 0 5 68 0.595 + 0/998 932/3375 69 68.7 161 164 178 578 1.22e+03 0.00128 6.45e-06 69 0 0 69 0.608 + 0/998 933/3375 69 68.7 161 164 178 578 1.22e+03 0.00128 6.44e-06 87 0 0 87 0.6 + 0/998 934/3375 69 68.7 161 165 178 579 1.22e+03 0.00128 6.96e-06 140 1 11 134 0.611 + 0/998 935/3375 69.1 68.7 161 165 178 579 1.22e+03 0.00128 6.96e-06 104 0 0 104 0.604 + 0/998 936/3375 69 68.7 161 165 178 579 1.22e+03 0.00127 6.96e-06 70 0 7 69 0.611 + 0/998 937/3375 69 68.7 161 165 178 578 1.22e+03 0.00127 6.95e-06 48 0 0 48 0.607 + 0/998 938/3375 69 68.7 161 165 178 579 1.22e+03 0.00126 6.95e-06 110 0 2 110 0.612 + 0/998 939/3375 69 68.7 161 165 178 578 1.22e+03 0.00125 6.94e-06 57 0 9 57 0.598 + 0/998 940/3375 69 68.7 161 164 178 578 1.22e+03 0.00125 6.94e-06 59 0 0 59 0.598 + 0/998 941/3375 69 68.6 160 164 178 578 1.22e+03 0.00125 6.93e-06 50 0 0 50 0.602 + 0/998 942/3375 69 68.7 160 164 178 578 1.22e+03 0.00125 6.92e-06 98 0 0 98 0.613 + 0/998 943/3375 69 68.6 160 164 178 578 1.22e+03 0.00125 6.91e-06 76 0 0 76 0.586 + 0/998 944/3375 69 68.6 160 164 178 578 1.22e+03 0.00125 6.89e-06 92 0 0 92 0.598 + 0/998 945/3375 68.9 68.6 160 164 178 578 1.22e+03 0.00125 6.89e-06 37 0 0 37 0.582 + 0/998 946/3375 68.9 68.6 160 164 177 577 1.22e+03 0.00125 6.89e-06 57 0 0 57 0.604 + 0/998 947/3375 69 68.6 160 164 178 578 1.22e+03 0.00125 6.87e-06 131 0 0 131 0.606 + 0/998 948/3375 69 68.6 160 164 177 577 1.22e+03 0.00134 8.45e-06 86 3 53 75 0.603 + 0/998 949/3375 68.9 68.6 160 164 177 577 1.22e+03 0.00134 8.44e-06 59 0 1 59 0.602 + 0/998 950/3375 68.9 68.6 160 164 177 577 1.22e+03 0.00134 8.42e-06 82 0 0 82 0.589 + 0/998 951/3375 69 68.6 160 164 177 577 1.22e+03 0.00134 8.41e-06 112 0 4 112 0.582 + 0/998 952/3375 69 68.6 160 164 177 577 1.22e+03 0.00127 8.41e-06 81 0 3 80 0.615 + 0/998 953/3375 69 68.6 160 164 177 577 1.22e+03 0.00126 8.4e-06 74 0 5 72 0.607 + 0/998 954/3375 68.9 68.6 160 164 177 577 1.22e+03 0.00126 8.39e-06 63 0 0 63 0.601 + 0/998 955/3375 68.9 68.6 160 164 177 577 1.22e+03 0.00126 8.39e-06 68 0 0 68 0.597 + 0/998 956/3375 68.9 68.6 160 164 177 577 1.22e+03 0.00125 8.37e-06 76 0 5 76 0.604 + 0/998 957/3375 68.9 68.6 160 164 177 577 1.22e+03 0.00124 8.37e-06 66 0 3 65 0.609 + 0/998 958/3375 68.9 68.5 160 164 177 577 1.21e+03 0.00124 8.36e-06 46 0 1 46 0.597 + 0/998 959/3375 68.9 68.5 160 164 177 577 1.21e+03 0.00124 8.36e-06 89 0 0 89 0.611 + 0/998 960/3375 68.9 68.5 160 164 177 576 1.21e+03 0.00124 8.35e-06 74 0 0 74 0.593 + 0/998 961/3375 68.9 68.5 160 164 177 576 1.21e+03 0.00123 8.34e-06 76 0 5 76 0.594 + 0/998 962/3375 68.9 68.5 160 164 177 576 1.21e+03 0.00123 8.32e-06 111 0 0 111 0.617 + 0/998 963/3375 68.9 68.5 160 164 177 577 1.21e+03 0.00123 8.32e-06 92 0 0 92 0.602 + 0/998 964/3375 68.9 68.5 160 164 177 576 1.21e+03 0.00122 8.31e-06 57 0 8 57 0.611 + 0/998 965/3375 68.9 68.5 160 164 177 576 1.21e+03 0.00121 8.31e-06 69 0 3 69 0.599 + 0/998 966/3375 68.9 68.5 160 164 177 576 1.21e+03 0.00129 8.82e-06 102 1 0 101 0.621 + 0/998 967/3375 68.9 68.5 160 164 177 576 1.21e+03 0.00129 8.81e-06 70 0 0 70 0.593 + 0/998 968/3375 68.9 68.5 160 164 177 576 1.21e+03 0.00129 8.8e-06 83 0 0 83 0.602 + 0/998 969/3375 68.9 68.5 160 164 177 576 1.21e+03 0.00128 8.79e-06 91 0 3 91 0.591 + 0/998 970/3375 68.9 68.5 160 164 177 576 1.21e+03 0.00128 8.79e-06 49 0 0 49 0.615 + 0/998 971/3375 68.8 68.4 159 163 177 576 1.21e+03 0.00128 8.78e-06 42 0 0 42 0.608 + 0/998 972/3375 68.8 68.4 159 163 176 576 1.21e+03 0.00128 8.78e-06 78 0 2 78 0.605 + 0/998 973/3375 68.8 68.5 159 163 176 576 1.21e+03 0.00128 8.76e-06 108 0 0 108 0.598 + 0/998 974/3375 68.8 68.4 159 163 176 576 1.21e+03 0.00128 8.75e-06 65 0 0 65 0.584 + 0/998 975/3375 68.8 68.5 159 163 176 576 1.21e+03 0.00133 9.26e-06 90 1 12 88 0.608 + 0/998 976/3375 68.8 68.4 159 163 176 575 1.21e+03 0.00133 9.25e-06 47 0 0 47 0.576 + 0/998 977/3375 68.8 68.4 159 163 176 575 1.21e+03 0.00133 9.25e-06 60 0 1 60 0.601 + 0/998 978/3375 68.8 68.4 159 163 176 575 1.21e+03 0.00133 9.23e-06 79 0 0 79 0.604 + 0/998 979/3375 68.8 68.4 159 163 176 575 1.21e+03 0.00133 9.22e-06 71 0 0 71 0.594 + 0/998 980/3375 68.7 68.4 159 163 176 575 1.21e+03 0.00133 9.22e-06 79 0 0 79 0.592 + 0/998 981/3375 68.7 68.4 159 163 176 575 1.21e+03 0.00131 9.21e-06 88 0 8 88 0.622 + 0/998 982/3375 68.8 68.4 159 163 176 575 1.21e+03 0.00131 9.19e-06 115 0 0 115 0.6 + 0/998 983/3375 68.8 68.4 159 163 176 575 1.21e+03 0.00129 9.19e-06 55 0 8 55 0.6 + 0/998 984/3375 68.7 68.4 159 163 176 575 1.21e+03 0.00127 9.18e-06 40 0 11 40 0.6 + 0/998 985/3375 68.7 68.3 159 163 176 574 1.21e+03 0.00125 9.18e-06 38 0 15 38 0.592 + 0/998 986/3375 68.7 68.3 159 163 176 574 1.21e+03 0.00122 9.17e-06 86 0 16 86 0.628 + 0/998 987/3375 68.7 68.3 159 163 176 574 1.21e+03 0.00185 1.22e-05 65 1 4 64 0.623 + 0/998 988/3375 68.7 68.3 159 163 176 574 1.21e+03 0.00184 1.22e-05 76 0 4 76 0.628 + 0/998 989/3375 68.7 68.3 159 163 176 574 1.21e+03 0.00182 1.22e-05 92 0 15 92 0.629 + 0/998 990/3375 68.7 68.3 159 163 176 574 1.21e+03 0.0018 1.22e-05 72 0 7 72 0.59 + 0/998 991/3375 68.7 68.3 159 163 176 574 1.21e+03 0.0018 1.22e-05 120 0 0 120 0.604 + 0/998 992/3375 68.7 68.3 159 163 176 574 1.21e+03 0.0018 1.22e-05 89 0 0 89 0.615 + 0/998 993/3375 68.8 68.4 159 163 176 575 1.21e+03 0.0018 1.22e-05 131 0 2 131 0.604 + 0/998 994/3375 68.8 68.4 159 163 176 575 1.21e+03 0.0018 1.21e-05 139 0 3 137 0.617 + 0/998 995/3375 68.8 68.4 159 163 176 575 1.21e+03 0.0018 1.21e-05 77 0 0 77 0.603 + 0/998 996/3375 68.8 68.4 159 163 176 575 1.21e+03 0.0018 1.21e-05 76 0 0 76 0.615 + 0/998 997/3375 68.8 68.4 159 163 176 575 1.21e+03 0.0018 1.21e-05 94 0 0 94 0.624 + 0/998 998/3375 68.8 68.4 159 163 176 575 1.21e+03 0.0018 1.21e-05 93 0 0 93 0.614 + 0/998 999/3375 68.8 68.4 159 163 176 575 1.21e+03 0.0018 1.21e-05 96 0 0 96 0.593 + 0/998 1000/3375 68.8 68.4 159 163 176 575 1.21e+03 0.0018 1.2e-05 145 0 0 145 0.632 + 0/998 1001/3375 68.8 68.4 159 163 176 575 1.21e+03 0.0018 1.2e-05 65 0 0 65 0.641 + 0/998 1002/3375 68.8 68.4 159 162 176 574 1.21e+03 0.0018 1.2e-05 46 0 3 46 0.59 + 0/998 1003/3375 68.8 68.4 159 162 176 575 1.21e+03 0.0018 1.2e-05 92 0 0 92 0.609 + 0/998 1004/3375 68.8 68.4 159 162 175 575 1.21e+03 0.0018 1.2e-05 86 0 0 86 0.608 + 0/998 1005/3375 68.8 68.4 159 162 175 574 1.21e+03 0.0018 1.2e-05 75 0 0 75 0.579 + 0/998 1006/3375 68.8 68.4 159 162 175 574 1.21e+03 0.0018 1.2e-05 77 0 0 77 0.613 + 0/998 1007/3375 68.8 68.4 159 162 175 574 1.21e+03 0.0018 1.2e-05 73 0 0 73 0.66 + 0/998 1008/3375 68.8 68.4 159 162 175 575 1.21e+03 0.0018 1.2e-05 124 0 0 124 0.601 + 0/998 1009/3375 68.8 68.4 159 162 175 575 1.21e+03 0.0018 1.2e-05 80 0 0 80 0.588 + 0/998 1010/3375 68.8 68.4 159 162 175 575 1.21e+03 0.00179 1.19e-05 100 0 2 100 0.606 + 0/998 1011/3375 68.8 68.4 159 162 175 575 1.21e+03 0.00179 1.19e-05 66 0 0 66 0.603 + 0/998 1012/3375 68.8 68.4 159 162 175 575 1.21e+03 0.00179 1.19e-05 85 0 0 85 0.6 + 0/998 1013/3375 68.8 68.4 159 162 175 575 1.21e+03 0.00178 1.19e-05 91 0 6 90 0.616 + 0/998 1014/3375 68.8 68.5 159 162 175 575 1.21e+03 0.00178 1.19e-05 110 0 5 110 0.612 + 0/998 1015/3375 68.8 68.5 159 162 175 575 1.21e+03 0.00178 1.19e-05 74 0 0 74 0.59 + 0/998 1016/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00178 1.19e-05 68 0 0 68 0.596 + 0/998 1017/3375 68.8 68.5 159 162 175 575 1.21e+03 0.00177 1.18e-05 125 0 4 124 0.618 + 0/998 1018/3375 68.9 68.5 159 162 175 575 1.21e+03 0.00177 1.18e-05 99 0 0 99 0.617 + 0/998 1019/3375 68.8 68.5 158 162 175 575 1.21e+03 0.00177 1.18e-05 63 0 0 63 0.621 + 0/998 1020/3375 68.9 68.5 159 162 175 575 1.21e+03 0.00177 1.18e-05 101 0 0 101 0.592 + 0/998 1021/3375 68.8 68.5 158 162 175 575 1.21e+03 0.00177 1.18e-05 49 0 0 49 0.58 + 0/998 1022/3375 68.8 68.5 158 162 175 575 1.21e+03 0.00177 1.18e-05 57 0 1 57 0.609 + 0/998 1023/3375 68.8 68.5 158 162 175 575 1.21e+03 0.00177 1.18e-05 89 0 1 89 0.636 + 0/998 1024/3375 68.8 68.4 158 162 175 574 1.21e+03 0.00176 1.18e-05 32 0 5 32 0.586 + 0/998 1025/3375 68.8 68.4 158 162 175 574 1.21e+03 0.00176 1.18e-05 82 0 1 82 0.61 + 0/998 1026/3375 68.8 68.4 158 162 175 574 1.21e+03 0.00176 1.18e-05 73 0 2 73 0.616 + 0/998 1027/3375 68.8 68.4 158 162 175 574 1.21e+03 0.00175 1.17e-05 84 0 1 84 0.61 + 0/998 1028/3375 68.7 68.4 158 162 175 574 1.21e+03 0.00175 1.17e-05 65 0 1 65 0.581 + 0/998 1029/3375 68.7 68.4 158 162 175 574 1.21e+03 0.00175 1.17e-05 70 0 0 70 0.595 + 0/998 1030/3375 68.7 68.4 158 162 175 574 1.21e+03 0.00175 1.17e-05 70 0 5 70 0.599 + 0/998 1031/3375 68.8 68.4 158 162 175 574 1.21e+03 0.00175 1.17e-05 117 0 0 117 0.622 + 0/998 1032/3375 68.8 68.4 158 162 175 574 1.21e+03 0.00174 1.17e-05 79 0 3 78 0.618 + 0/998 1033/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00163 1.17e-05 147 0 16 144 0.648 + 0/998 1034/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00162 1.17e-05 94 0 5 93 0.622 + 0/998 1035/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00162 1.17e-05 75 0 0 75 0.637 + 0/998 1036/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00162 1.16e-05 88 0 2 88 0.596 + 0/998 1037/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00162 1.16e-05 116 0 1 116 0.602 + 0/998 1038/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00162 1.16e-05 60 0 0 60 0.581 + 0/998 1039/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00161 1.16e-05 71 0 3 70 0.597 + 0/998 1040/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00161 1.16e-05 80 0 0 80 0.597 + 0/998 1041/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00161 1.16e-05 103 0 0 103 0.608 + 0/998 1042/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00161 1.16e-05 107 0 1 107 0.603 + 0/998 1043/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00161 1.15e-05 99 0 0 99 0.611 + 0/998 1044/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00161 1.15e-05 44 0 0 44 0.593 + 0/998 1045/3375 68.8 68.5 158 161 175 574 1.21e+03 0.00161 1.15e-05 95 0 0 95 0.606 + 0/998 1046/3375 68.8 68.6 158 161 175 574 1.21e+03 0.00161 1.15e-05 98 0 5 98 0.602 + 0/998 1047/3375 68.9 68.6 158 161 175 574 1.21e+03 0.00159 1.15e-05 100 0 4 100 0.601 + 0/998 1048/3375 68.9 68.6 158 162 175 575 1.21e+03 0.00159 1.15e-05 128 0 0 128 0.605 + 0/998 1049/3375 68.9 68.7 158 162 175 575 1.21e+03 0.00159 1.15e-05 112 0 3 112 0.611 + 0/998 1050/3375 68.9 68.7 158 162 175 575 1.21e+03 0.00159 1.15e-05 88 0 0 88 0.611 + 0/998 1051/3375 69 68.7 158 162 175 575 1.21e+03 0.00159 1.15e-05 106 0 0 106 0.628 + 0/998 1052/3375 69 68.7 158 162 175 575 1.21e+03 0.00159 1.15e-05 87 0 0 87 0.608 + 0/998 1053/3375 69 68.7 158 162 175 575 1.21e+03 0.00158 1.14e-05 76 0 7 71 0.607 + 0/998 1054/3375 68.9 68.7 158 162 175 575 1.21e+03 0.00158 1.14e-05 61 0 0 61 0.591 + 0/998 1055/3375 68.9 68.7 158 162 175 575 1.21e+03 0.00158 1.14e-05 79 0 0 79 0.608 + 0/998 1056/3375 69 68.7 158 162 175 575 1.21e+03 0.00158 1.14e-05 114 0 1 113 0.626 + 0/998 1057/3375 69 68.7 158 161 175 575 1.21e+03 0.00158 1.14e-05 63 0 0 63 0.607 + 0/998 1058/3375 69 68.7 158 161 175 576 1.21e+03 0.00158 1.14e-05 126 0 0 126 0.604 + 0/998 1059/3375 69 68.7 158 162 175 576 1.21e+03 0.00158 1.14e-05 118 0 1 117 0.589 + 0/998 1060/3375 69 68.7 158 161 175 576 1.21e+03 0.00158 1.14e-05 115 0 2 115 0.615 + 0/998 1061/3375 69 68.7 158 161 175 576 1.21e+03 0.00158 1.14e-05 70 0 0 70 0.586 + 0/998 1062/3375 69 68.7 158 161 175 576 1.21e+03 0.00158 1.14e-05 104 0 0 104 0.602 + 0/998 1063/3375 69 68.7 158 161 175 576 1.21e+03 0.00158 1.13e-05 74 0 0 74 0.587 + 0/998 1064/3375 69 68.7 158 161 175 576 1.21e+03 0.00158 1.13e-05 77 0 0 77 0.602 + 0/998 1065/3375 69 68.7 158 161 175 576 1.21e+03 0.00158 1.13e-05 61 0 0 61 0.582 + 0/998 1066/3375 69 68.7 158 161 175 576 1.21e+03 0.00158 1.13e-05 93 0 0 93 0.609 + 0/998 1067/3375 69 68.7 158 161 174 576 1.21e+03 0.00157 1.13e-05 77 0 8 77 0.6 + 0/998 1068/3375 69 68.7 158 161 174 576 1.21e+03 0.00156 1.13e-05 52 0 4 52 0.606 + 0/998 1069/3375 69 68.7 158 161 174 576 1.21e+03 0.00156 1.13e-05 115 0 0 115 0.616 + 0/998 1070/3375 69 68.7 158 161 174 576 1.21e+03 0.00154 1.13e-05 56 0 12 56 0.585 + 0/998 1071/3375 69 68.7 158 161 174 576 1.21e+03 0.00154 1.13e-05 96 0 2 96 0.605 + 0/998 1072/3375 69 68.7 158 161 174 576 1.21e+03 0.00154 1.12e-05 88 0 2 88 0.597 + 0/998 1073/3375 69 68.7 158 161 174 576 1.21e+03 0.00153 1.12e-05 83 0 1 83 0.596 + 0/998 1074/3375 69 68.7 158 161 174 576 1.21e+03 0.00153 1.12e-05 83 0 3 83 0.598 + 0/998 1075/3375 69 68.7 158 161 174 576 1.21e+03 0.00153 1.12e-05 60 0 0 60 0.586 + 0/998 1076/3375 69 68.7 158 161 174 576 1.21e+03 0.00153 1.12e-05 92 0 1 92 0.58 + 0/998 1077/3375 69 68.7 158 161 174 576 1.21e+03 0.00153 1.12e-05 83 0 0 83 0.603 + 0/998 1078/3375 69 68.7 158 161 174 576 1.21e+03 0.00153 1.12e-05 94 0 0 94 0.617 + 0/998 1079/3375 69 68.7 158 161 174 576 1.21e+03 0.00153 1.12e-05 64 0 0 64 0.607 + 0/998 1080/3375 69 68.7 158 161 174 575 1.21e+03 0.00153 1.12e-05 76 0 0 76 0.601 + 0/998 1081/3375 69 68.7 158 161 174 575 1.21e+03 0.00153 1.12e-05 55 0 0 55 0.606 + 0/998 1082/3375 69 68.7 158 161 174 575 1.21e+03 0.00153 1.12e-05 79 0 0 79 0.598 + 0/998 1083/3375 69 68.7 158 161 174 575 1.21e+03 0.00153 1.11e-05 133 0 0 133 0.617 + 0/998 1084/3375 69 68.7 158 161 174 575 1.21e+03 0.00153 1.11e-05 68 0 0 68 0.59 + 0/998 1085/3375 69 68.7 158 161 174 575 1.21e+03 0.00153 1.11e-05 102 0 0 102 0.591 + 0/998 1086/3375 69 68.7 158 161 174 575 1.21e+03 0.00153 1.11e-05 42 0 0 42 0.592 + 0/998 1087/3375 69 68.7 158 161 174 575 1.21e+03 0.00153 1.11e-05 77 0 0 77 0.602 + 0/998 1088/3375 69 68.7 158 161 174 575 1.2e+03 0.00153 1.11e-05 73 0 0 73 0.594 + 0/998 1089/3375 69 68.6 158 161 174 575 1.2e+03 0.00153 1.11e-05 91 0 0 91 0.61 + 0/998 1090/3375 69 68.7 158 161 174 575 1.2e+03 0.00153 1.11e-05 90 0 0 90 0.595 + 0/998 1091/3375 69 68.7 158 161 174 575 1.2e+03 0.00153 1.1e-05 87 0 0 87 0.604 + 0/998 1092/3375 69 68.7 158 161 174 575 1.21e+03 0.00153 1.1e-05 98 0 0 98 0.618 + 0/998 1093/3375 69 68.6 157 161 174 575 1.2e+03 0.00153 1.1e-05 51 0 0 51 0.584 + 0/998 1094/3375 69 68.6 157 161 174 575 1.2e+03 0.00153 1.1e-05 66 0 1 66 0.585 + 0/998 1095/3375 68.9 68.6 157 161 174 575 1.2e+03 0.00153 1.1e-05 63 0 0 63 0.593 + 0/998 1096/3375 68.9 68.6 157 161 174 574 1.2e+03 0.00153 1.1e-05 67 0 0 67 0.618 + 0/998 1097/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00153 1.1e-05 66 0 0 66 0.582 + 0/998 1098/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.1e-05 56 0 7 56 0.589 + 0/998 1099/3375 68.9 68.5 157 161 173 574 1.2e+03 0.00151 1.1e-05 59 0 1 59 0.586 + 0/998 1100/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.1e-05 97 0 0 97 0.596 + 0/998 1101/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.1e-05 95 0 0 95 0.587 + 0/998 1102/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.1e-05 92 0 0 92 0.611 + 0/998 1103/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.09e-05 72 0 4 72 0.594 + 0/998 1104/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.09e-05 78 0 0 78 0.605 + 0/998 1105/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.09e-05 120 0 0 120 0.607 + 0/998 1106/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.09e-05 94 0 0 94 0.59 + 0/998 1107/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.09e-05 77 0 0 77 0.6 + 0/998 1108/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.09e-05 86 0 0 86 0.599 + 0/998 1109/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.09e-05 68 0 0 68 0.614 + 0/998 1110/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.09e-05 103 0 0 103 0.606 + 0/998 1111/3375 68.9 68.5 157 161 173 574 1.2e+03 0.0015 1.09e-05 49 0 2 49 0.603 + 0/998 1112/3375 68.9 68.6 157 161 173 574 1.2e+03 0.0015 1.09e-05 170 0 0 170 0.6 + 0/998 1113/3375 68.9 68.6 157 161 173 574 1.2e+03 0.0015 1.08e-05 52 0 2 52 0.595 + 0/998 1114/3375 68.9 68.6 157 161 173 574 1.2e+03 0.0015 1.08e-05 60 0 0 60 0.611 + 0/998 1115/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00149 1.08e-05 132 0 8 129 0.613 + 0/998 1116/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00149 1.08e-05 99 0 0 99 0.597 + 0/998 1117/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00157 1.17e-05 74 2 20 70 0.626 + 0/998 1118/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00156 1.17e-05 96 0 18 94 0.61 + 0/998 1119/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00154 1.17e-05 69 0 10 69 0.634 + 0/998 1120/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00154 1.17e-05 69 0 7 69 0.631 + 0/998 1121/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00162 1.25e-05 101 2 9 96 0.616 + 0/998 1122/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00162 1.25e-05 64 0 8 64 0.622 + 0/998 1123/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00161 1.25e-05 107 0 5 107 0.635 + 0/998 1124/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00159 1.25e-05 108 0 16 107 0.619 + 0/998 1125/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00163 1.29e-05 57 1 12 56 0.611 + 0/998 1126/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00162 1.29e-05 88 0 5 87 0.607 + 0/998 1127/3375 68.9 68.6 157 160 173 574 1.2e+03 0.0016 1.29e-05 64 0 17 64 0.623 + 0/998 1128/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00157 1.29e-05 124 0 28 118 0.626 + 0/998 1129/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00157 1.29e-05 67 0 0 67 0.611 + 0/998 1130/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00156 1.29e-05 72 0 10 69 0.622 + 0/998 1131/3375 68.9 68.5 157 160 173 573 1.2e+03 0.00155 1.29e-05 53 0 7 53 0.605 + 0/998 1132/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00153 1.29e-05 119 0 17 119 0.648 + 0/998 1133/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00153 1.29e-05 95 0 0 95 0.628 + 0/998 1134/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00152 1.28e-05 91 0 11 89 0.63 + 0/998 1135/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00152 1.28e-05 65 0 0 65 0.609 + 0/998 1136/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00152 1.28e-05 84 0 4 84 0.616 + 0/998 1137/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00152 1.28e-05 89 0 0 89 0.626 + 0/998 1138/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00151 1.28e-05 118 0 4 118 0.595 + 0/998 1139/3375 69 68.6 157 160 173 574 1.2e+03 0.00151 1.28e-05 92 0 0 92 0.622 + 0/998 1140/3375 69 68.6 157 160 173 574 1.2e+03 0.0015 1.28e-05 75 0 17 75 0.605 + 0/998 1141/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00154 1.32e-05 56 1 0 55 0.615 + 0/998 1142/3375 68.9 68.5 156 160 173 573 1.2e+03 0.00154 1.32e-05 43 0 1 43 0.608 + 0/998 1143/3375 68.9 68.5 156 160 172 573 1.2e+03 0.00148 1.32e-05 50 0 42 49 0.616 + 0/998 1144/3375 68.9 68.5 156 160 172 573 1.2e+03 0.00148 1.32e-05 79 0 2 79 0.626 + 0/998 1145/3375 68.9 68.5 156 160 172 573 1.2e+03 0.00148 1.32e-05 71 0 5 71 0.617 + 0/998 1146/3375 68.9 68.5 156 160 172 573 1.2e+03 0.00148 1.32e-05 56 0 0 56 0.604 + 0/998 1147/3375 68.9 68.5 156 160 172 573 1.2e+03 0.00148 1.32e-05 62 0 1 62 0.596 + 0/998 1148/3375 68.8 68.4 156 160 172 572 1.2e+03 0.00148 1.32e-05 50 0 0 50 0.617 + 0/998 1149/3375 68.8 68.4 156 159 172 572 1.2e+03 0.00148 1.31e-05 59 0 1 59 0.626 + 0/998 1150/3375 68.8 68.4 156 159 172 572 1.2e+03 0.00148 1.31e-05 63 0 0 63 0.601 + 0/998 1151/3375 68.9 68.5 156 159 172 573 1.2e+03 0.00148 1.31e-05 148 0 1 147 0.63 + 0/998 1152/3375 68.9 68.5 156 160 172 573 1.2e+03 0.00148 1.31e-05 118 0 0 118 0.616 + 0/998 1153/3375 68.9 68.5 156 160 172 573 1.2e+03 0.00148 1.31e-05 137 0 1 137 0.626 + 0/998 1154/3375 68.9 68.5 156 160 172 573 1.2e+03 0.00148 1.31e-05 61 0 0 61 0.627 + 0/998 1155/3375 68.9 68.5 156 160 172 573 1.2e+03 0.00148 1.31e-05 77 0 0 77 0.607 + 0/998 1156/3375 68.9 68.5 156 159 172 573 1.2e+03 0.00147 1.31e-05 37 0 2 37 0.599 + 0/998 1157/3375 68.9 68.5 156 159 172 573 1.2e+03 0.00147 1.31e-05 103 0 0 103 0.609 + 0/998 1158/3375 68.9 68.5 156 159 172 573 1.2e+03 0.00147 1.3e-05 83 0 0 83 0.617 + 0/998 1159/3375 68.9 68.5 156 159 172 573 1.2e+03 0.00151 1.35e-05 90 1 0 89 0.617 + 0/998 1160/3375 68.9 68.4 156 159 172 573 1.2e+03 0.00151 1.34e-05 98 0 0 98 0.613 + 0/998 1161/3375 68.9 68.5 156 159 172 573 1.2e+03 0.00155 1.39e-05 134 1 1 133 0.634 + 0/998 1162/3375 68.9 68.5 156 159 172 573 1.2e+03 0.00155 1.38e-05 91 0 1 91 0.619 + 0/998 1163/3375 68.9 68.5 156 159 172 573 1.2e+03 0.00155 1.38e-05 81 0 0 81 0.598 + 0/998 1164/3375 68.9 68.5 156 159 172 573 1.2e+03 0.00155 1.38e-05 88 0 0 88 0.615 + 0/998 1165/3375 68.9 68.4 156 159 172 573 1.2e+03 0.00155 1.38e-05 69 0 1 69 0.623 + 0/998 1166/3375 68.9 68.4 156 159 172 573 1.2e+03 0.00155 1.38e-05 94 0 0 94 0.608 + 0/998 1167/3375 68.9 68.4 156 159 172 573 1.2e+03 0.00155 1.38e-05 86 0 0 86 0.593 + 0/998 1168/3375 68.9 68.4 156 159 172 573 1.2e+03 0.00149 1.38e-05 28 0 39 27 0.607 + 0/998 1169/3375 68.9 68.4 156 159 172 573 1.2e+03 0.00149 1.38e-05 94 0 0 94 0.628 + 0/998 1170/3375 68.9 68.4 156 159 172 573 1.2e+03 0.00152 1.42e-05 79 1 3 77 0.608 + 0/998 1171/3375 68.9 68.4 156 159 172 573 1.2e+03 0.00152 1.42e-05 138 0 9 137 0.62 + 0/998 1172/3375 68.9 68.4 156 159 172 573 1.2e+03 0.00147 1.42e-05 79 0 27 77 0.616 + 0/998 1173/3375 68.9 68.4 156 159 172 573 1.2e+03 0.00144 1.41e-05 51 0 38 51 0.604 + 0/998 1174/3375 68.9 68.4 156 159 172 573 1.2e+03 0.00141 1.41e-05 71 0 40 71 0.601 + 0/998 1175/3375 68.9 68.4 156 159 172 572 1.2e+03 0.00144 1.46e-05 37 1 5 36 0.602 + 0/998 1176/3375 68.9 68.4 156 159 172 572 1.2e+03 0.00143 1.46e-05 66 0 24 64 0.597 + 0/998 1177/3375 68.9 68.4 156 159 172 572 1.2e+03 0.00142 1.45e-05 67 0 10 66 0.605 + 0/998 1178/3375 68.9 68.4 156 159 171 572 1.2e+03 0.00135 1.45e-05 98 0 3 96 0.626 + 0/998 1179/3375 68.9 68.4 156 159 171 572 1.2e+03 0.00135 1.45e-05 96 0 9 96 0.609 + 0/998 1180/3375 68.9 68.4 156 159 171 572 1.2e+03 0.00135 1.49e-05 92 1 20 91 0.613 + 0/998 1181/3375 68.9 68.4 156 159 171 572 1.2e+03 0.00138 1.53e-05 100 1 13 98 0.626 + 0/998 1182/3375 68.9 68.4 156 159 171 572 1.19e+03 0.00138 1.53e-05 64 0 0 64 0.587 + 0/998 1183/3375 68.9 68.4 156 159 171 572 1.19e+03 0.00138 1.53e-05 70 0 0 70 0.61 + 0/998 1184/3375 68.9 68.4 156 159 171 572 1.19e+03 0.00141 1.61e-05 82 2 25 79 0.607 + 0/998 1185/3375 68.9 68.4 156 159 171 572 1.19e+03 0.00141 1.61e-05 109 0 7 109 0.618 + 0/998 1186/3375 68.9 68.4 156 159 171 572 1.19e+03 0.00141 1.61e-05 121 0 2 121 0.608 + 0/998 1187/3375 68.9 68.4 156 159 171 572 1.19e+03 0.00138 1.61e-05 92 0 44 92 0.607 + 0/998 1188/3375 68.9 68.4 156 159 171 572 1.19e+03 0.00137 1.61e-05 78 0 6 78 0.628 + 0/998 1189/3375 68.9 68.4 156 159 171 572 1.19e+03 0.00137 1.6e-05 89 0 5 89 0.599 + 0/998 1190/3375 68.9 68.4 155 158 171 571 1.19e+03 0.00133 1.65e-05 54 1 11 49 0.6 + 0/998 1191/3375 68.9 68.4 155 158 171 571 1.19e+03 0.00137 1.73e-05 92 2 27 88 0.601 + 0/998 1192/3375 68.8 68.3 155 158 171 571 1.19e+03 0.00135 1.73e-05 59 0 25 57 0.61 + 0/998 1193/3375 68.8 68.4 155 159 171 571 1.19e+03 0.0014 1.81e-05 104 2 11 100 0.604 + 0/998 1194/3375 68.8 68.3 155 158 171 571 1.19e+03 0.00139 1.81e-05 74 0 10 73 0.599 + 0/998 1195/3375 68.8 68.3 155 158 171 571 1.19e+03 0.00139 1.81e-05 62 0 8 62 0.6 + 0/998 1196/3375 68.8 68.4 155 159 171 571 1.19e+03 0.00132 1.81e-05 105 0 9 104 0.599 + 0/998 1197/3375 68.8 68.4 155 159 171 571 1.19e+03 0.00132 1.81e-05 63 0 5 63 0.608 + 0/998 1198/3375 68.8 68.4 155 158 171 571 1.19e+03 0.00131 1.8e-05 69 0 21 66 0.599 + 0/998 1199/3375 68.8 68.3 155 158 171 571 1.19e+03 0.0013 1.8e-05 65 0 6 65 0.6 + 0/998 1200/3375 68.8 68.4 155 158 171 571 1.19e+03 0.00125 1.8e-05 109 0 51 109 0.597 + 0/998 1201/3375 68.8 68.3 155 158 171 571 1.19e+03 0.00125 1.8e-05 68 0 6 68 0.612 + 0/998 1202/3375 68.8 68.3 155 158 171 571 1.19e+03 0.00124 1.8e-05 84 0 6 84 0.604 + 0/998 1203/3375 68.8 68.3 155 158 171 571 1.19e+03 0.00124 1.8e-05 100 0 12 99 0.609 + 0/998 1204/3375 68.8 68.3 155 158 171 571 1.19e+03 0.00124 1.8e-05 46 0 1 46 0.617 + 0/998 1205/3375 68.8 68.3 155 158 171 571 1.19e+03 0.00123 1.79e-05 87 0 9 85 0.6 + 0/998 1206/3375 68.8 68.3 155 158 171 571 1.19e+03 0.00123 1.79e-05 67 0 4 67 0.595 + 0/998 1207/3375 68.8 68.4 155 158 171 571 1.19e+03 0.00113 1.79e-05 154 0 54 153 0.62 + 0/998 1208/3375 68.8 68.3 155 158 171 571 1.19e+03 0.00113 1.79e-05 63 0 3 63 0.585 + 0/998 1209/3375 68.8 68.3 155 158 171 571 1.19e+03 0.0011 1.79e-05 87 0 62 83 0.602 + 0/998 1210/3375 68.8 68.4 155 158 171 571 1.19e+03 0.0011 1.78e-05 122 0 1 122 0.593 + 0/998 1211/3375 68.9 68.4 155 158 171 571 1.19e+03 0.00109 1.78e-05 113 0 15 112 0.618 + 0/998 1212/3375 68.9 68.4 155 158 171 571 1.19e+03 0.000993 1.78e-05 109 0 60 94 0.603 + 0/998 1213/3375 68.9 68.4 155 158 171 571 1.19e+03 0.000968 1.78e-05 42 0 36 42 0.6 + 0/998 1214/3375 68.9 68.4 155 158 171 571 1.19e+03 0.000965 1.78e-05 80 0 10 78 0.608 + 0/998 1215/3375 68.9 68.4 155 158 171 571 1.19e+03 0.000976 1.9e-05 109 3 24 102 0.599 + 0/998 1216/3375 68.9 68.4 155 158 171 571 1.19e+03 0.000976 1.9e-05 54 0 2 54 0.61 + 0/998 1217/3375 68.9 68.4 155 158 171 571 1.19e+03 0.000972 1.9e-05 94 0 10 94 0.609 + 0/998 1218/3375 68.8 68.3 155 158 171 571 1.19e+03 0.000972 1.9e-05 34 0 0 34 0.59 + 0/998 1219/3375 68.8 68.3 155 158 171 571 1.19e+03 0.000969 1.9e-05 69 0 7 69 0.61 + 0/998 1220/3375 68.8 68.3 155 158 171 571 1.19e+03 0.000961 1.89e-05 97 0 18 97 0.625 + 0/998 1221/3375 68.8 68.3 155 158 171 571 1.19e+03 0.000961 1.89e-05 100 0 1 100 0.592 + 0/998 1222/3375 68.8 68.3 155 158 170 571 1.19e+03 0.000961 1.89e-05 60 0 0 60 0.591 + 0/998 1223/3375 68.9 68.3 155 158 171 571 1.19e+03 0.000961 1.89e-05 127 0 0 127 0.615 + 0/998 1224/3375 68.9 68.4 155 158 171 571 1.19e+03 0.000961 1.89e-05 97 0 0 97 0.593 + 0/998 1225/3375 68.9 68.4 155 158 171 571 1.19e+03 0.000961 1.89e-05 108 0 0 108 0.585 + 0/998 1226/3375 68.9 68.4 155 158 171 571 1.19e+03 0.000961 1.88e-05 100 0 0 100 0.608 + 0/998 1227/3375 68.9 68.4 155 158 171 571 1.19e+03 0.000961 1.88e-05 62 0 0 62 0.592 + 0/998 1228/3375 68.9 68.4 155 158 171 571 1.19e+03 0.000961 1.88e-05 84 0 2 82 0.613 + 0/998 1229/3375 68.9 68.3 155 158 170 571 1.19e+03 0.000961 1.88e-05 57 0 0 57 0.618 + 0/998 1230/3375 68.9 68.3 155 158 170 571 1.19e+03 0.000961 1.88e-05 84 0 0 84 0.585 + 0/998 1231/3375 68.9 68.3 155 158 170 571 1.19e+03 0.000956 1.88e-05 95 0 13 95 0.597 + 0/998 1232/3375 68.9 68.3 155 158 170 571 1.19e+03 0.000956 1.87e-05 90 0 0 90 0.595 + 0/998 1233/3375 68.8 68.3 155 158 170 571 1.19e+03 0.000955 1.87e-05 59 0 2 59 0.603 + 0/998 1234/3375 68.8 68.3 155 158 170 570 1.19e+03 0.000948 1.87e-05 38 0 19 38 0.613 + 0/998 1235/3375 68.8 68.3 155 158 170 571 1.19e+03 0.000948 1.87e-05 94 0 1 94 0.599 + 0/998 1236/3375 68.8 68.3 155 158 170 571 1.19e+03 0.000946 1.87e-05 107 0 6 107 0.599 + 0/998 1237/3375 68.8 68.3 155 158 170 571 1.19e+03 0.000945 1.87e-05 106 0 3 106 0.59 + 0/998 1238/3375 68.9 68.3 155 158 170 571 1.19e+03 0.000961 1.91e-05 98 1 3 96 0.604 + 0/998 1239/3375 68.8 68.3 155 158 170 571 1.19e+03 0.000961 1.9e-05 62 0 1 62 0.589 + 0/998 1240/3375 68.8 68.3 155 158 170 571 1.19e+03 0.000961 1.9e-05 92 0 0 92 0.619 + 0/998 1241/3375 68.9 68.4 155 158 170 571 1.19e+03 0.00096 1.9e-05 130 0 4 127 0.604 + 0/998 1242/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000958 1.9e-05 102 0 4 100 0.61 + 0/998 1243/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000958 1.9e-05 72 0 1 72 0.594 + 0/998 1244/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000951 1.9e-05 117 0 19 117 0.606 + 0/998 1245/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000967 1.93e-05 67 1 4 66 0.586 + 0/998 1246/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000963 1.93e-05 85 0 8 85 0.591 + 0/998 1247/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000962 1.93e-05 54 0 1 54 0.594 + 0/998 1248/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000995 2.01e-05 93 2 4 90 0.608 + 0/998 1249/3375 68.8 68.3 155 158 170 570 1.19e+03 0.00099 2.01e-05 67 0 14 64 0.614 + 0/998 1250/3375 68.8 68.3 155 158 170 570 1.19e+03 0.001 2.09e-05 79 2 50 77 0.615 + 0/998 1251/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000993 2.08e-05 180 0 8 180 0.603 + 0/998 1252/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000988 2.08e-05 81 0 16 78 0.604 + 0/998 1253/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000988 2.08e-05 65 0 0 65 0.611 + 0/998 1254/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000975 2.08e-05 88 0 14 88 0.615 + 0/998 1255/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000972 2.08e-05 79 0 9 79 0.614 + 0/998 1256/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000957 2.08e-05 98 0 38 93 0.607 + 0/998 1257/3375 68.8 68.4 155 158 170 570 1.19e+03 0.000933 2.07e-05 43 0 33 43 0.593 + 0/998 1258/3375 68.9 68.4 155 157 170 571 1.19e+03 0.000928 2.07e-05 81 0 14 80 0.59 + 0/998 1259/3375 68.9 68.4 155 157 170 571 1.19e+03 0.000918 2.07e-05 88 0 31 86 0.619 + 0/998 1260/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000955 2.19e-05 134 3 22 130 0.618 + 0/998 1261/3375 68.9 68.4 155 157 170 571 1.19e+03 0.000955 2.19e-05 81 0 1 81 0.611 + 0/998 1262/3375 68.9 68.4 155 157 170 571 1.19e+03 0.000944 2.18e-05 60 0 26 60 0.584 + 0/998 1263/3375 68.9 68.4 155 157 170 570 1.19e+03 0.000946 2.22e-05 114 1 33 110 0.596 + 0/998 1264/3375 68.9 68.4 155 157 170 570 1.19e+03 0.000944 2.22e-05 89 0 4 89 0.59 + 0/998 1265/3375 68.9 68.4 155 157 170 571 1.19e+03 0.00112 2.49e-05 128 2 25 123 0.603 + 0/998 1266/3375 68.9 68.4 155 157 170 571 1.19e+03 0.00113 2.53e-05 93 1 16 92 0.593 + 0/998 1267/3375 68.9 68.4 154 157 170 571 1.19e+03 0.0013 2.81e-05 58 2 13 55 0.59 + 0/998 1268/3375 68.9 68.4 154 157 170 570 1.19e+03 0.00134 2.92e-05 110 3 24 102 0.6 + 0/998 1269/3375 68.9 68.4 155 157 170 571 1.19e+03 0.00136 3e-05 97 2 22 93 0.587 + 0/998 1270/3375 68.9 68.5 155 157 170 571 1.19e+03 0.00136 3e-05 115 0 1 114 0.585 + 0/998 1271/3375 68.9 68.4 155 157 170 571 1.19e+03 0.00135 3e-05 44 0 22 44 0.583 + 0/998 1272/3375 68.9 68.4 154 157 170 570 1.19e+03 0.00134 2.99e-05 72 0 16 72 0.594 + 0/998 1273/3375 68.9 68.4 155 157 170 571 1.19e+03 0.00146 3.34e-05 128 9 23 119 0.603 + 0/998 1274/3375 68.9 68.4 154 157 170 570 1.19e+03 0.00151 3.54e-05 75 5 55 65 0.604 + 0/998 1275/3375 68.9 68.5 155 157 170 571 1.19e+03 0.0015 3.53e-05 117 0 17 115 0.604 + 0/998 1276/3375 68.9 68.5 155 157 170 571 1.19e+03 0.00151 3.57e-05 86 1 8 85 0.593 + 0/998 1277/3375 68.9 68.4 154 157 170 570 1.19e+03 0.00151 3.57e-05 59 0 19 59 0.598 + 0/998 1278/3375 68.9 68.4 154 157 170 570 1.19e+03 0.0015 3.57e-05 65 0 3 65 0.606 + 0/998 1279/3375 68.9 68.4 154 157 170 570 1.19e+03 0.00148 3.56e-05 57 0 34 55 0.573 + 0/998 1280/3375 68.9 68.4 154 157 170 570 1.19e+03 0.00146 3.6e-05 67 1 70 64 0.599 + 0/998 1281/3375 68.9 68.4 154 157 169 570 1.19e+03 0.00145 3.6e-05 47 0 3 47 0.578 + 0/998 1282/3375 68.9 68.4 154 157 169 570 1.19e+03 0.00145 3.6e-05 88 0 12 88 0.6 + 0/998 1283/3375 68.9 68.4 154 157 169 570 1.19e+03 0.00145 3.59e-05 80 0 3 80 0.587 + 0/998 1284/3375 68.9 68.4 154 157 169 570 1.19e+03 0.00139 3.59e-05 62 0 61 62 0.599 + 0/998 1285/3375 68.8 68.4 154 157 169 570 1.19e+03 0.00139 3.59e-05 67 0 9 66 0.604 + 0/998 1286/3375 68.8 68.3 154 157 169 569 1.19e+03 0.00135 3.59e-05 44 0 70 44 0.596 + 0/998 1287/3375 68.8 68.3 154 157 169 569 1.19e+03 0.00135 3.59e-05 71 0 0 71 0.593 + 0/998 1288/3375 68.8 68.3 154 157 169 569 1.19e+03 0.00137 3.66e-05 94 2 14 91 0.593 + 0/998 1289/3375 68.8 68.3 154 157 169 569 1.19e+03 0.00132 3.66e-05 65 0 92 63 0.6 + 0/998 1290/3375 68.8 68.3 154 157 169 569 1.19e+03 0.00134 3.73e-05 65 2 7 63 0.594 + 0/998 1291/3375 68.8 68.3 154 157 169 569 1.19e+03 0.00134 3.73e-05 126 0 5 126 0.602 + 0/998 1292/3375 68.8 68.3 154 157 169 569 1.19e+03 0.00134 3.73e-05 80 0 3 80 0.602 + 0/998 1293/3375 68.8 68.3 154 157 169 569 1.19e+03 0.00134 3.73e-05 94 0 1 93 0.595 + 0/998 1294/3375 68.9 68.4 154 157 169 570 1.19e+03 0.00134 3.72e-05 177 0 1 177 0.614 + 0/998 1295/3375 68.9 68.4 154 157 169 570 1.19e+03 0.00134 3.72e-05 82 0 0 82 0.569 + 0/998 1296/3375 68.9 68.4 154 157 169 570 1.19e+03 0.00134 3.71e-05 87 0 0 87 0.597 + 0/998 1297/3375 68.9 68.4 154 157 169 570 1.19e+03 0.00134 3.75e-05 62 1 25 61 0.604 + 0/998 1298/3375 68.8 68.3 154 157 169 569 1.19e+03 0.00134 3.75e-05 43 0 2 42 0.604 + 0/998 1299/3375 68.8 68.3 154 157 169 569 1.19e+03 0.00134 3.75e-05 64 0 0 64 0.593 + 0/998 1300/3375 68.9 68.4 154 157 169 570 1.19e+03 0.00131 3.78e-05 168 1 4 165 0.6 + 0/998 1301/3375 68.9 68.4 154 157 169 570 1.19e+03 0.00131 3.78e-05 83 0 1 83 0.591 + 0/998 1302/3375 68.9 68.3 154 157 169 570 1.19e+03 0.00131 3.78e-05 79 0 0 79 0.591 + 0/998 1303/3375 68.9 68.4 154 157 169 570 1.19e+03 0.00131 3.78e-05 99 0 0 99 0.598 + 0/998 1304/3375 68.8 68.3 154 157 169 570 1.19e+03 0.00131 3.77e-05 55 0 4 53 0.595 + 0/998 1305/3375 68.8 68.3 154 156 169 569 1.19e+03 0.0013 3.77e-05 63 0 11 63 0.602 + 0/998 1306/3375 68.8 68.3 154 156 169 569 1.19e+03 0.0013 3.77e-05 53 0 4 53 0.607 + 0/998 1307/3375 68.8 68.3 154 156 169 569 1.19e+03 0.0013 3.77e-05 67 0 2 67 0.589 + 0/998 1308/3375 68.8 68.3 154 156 169 569 1.19e+03 0.0013 3.76e-05 85 0 2 85 0.569 + 0/998 1309/3375 68.8 68.3 154 156 169 569 1.19e+03 0.0013 3.76e-05 88 0 0 88 0.615 + 0/998 1310/3375 68.8 68.3 154 156 169 569 1.19e+03 0.0013 3.76e-05 115 0 0 115 0.598 + 0/998 1311/3375 68.8 68.3 154 156 169 569 1.18e+03 0.0013 3.75e-05 59 0 0 59 0.58 + 0/998 1312/3375 68.8 68.3 154 156 169 569 1.18e+03 0.0013 3.75e-05 89 0 0 89 0.584 + 0/998 1313/3375 68.8 68.3 154 156 169 569 1.18e+03 0.00131 3.78e-05 89 1 16 85 0.6 + 0/998 1314/3375 68.8 68.3 154 156 169 569 1.18e+03 0.00131 3.78e-05 77 0 0 77 0.594 + 0/998 1315/3375 68.8 68.3 154 156 169 569 1.18e+03 0.0013 3.78e-05 99 0 11 99 0.585 + 0/998 1316/3375 68.8 68.3 154 156 169 569 1.18e+03 0.00132 3.85e-05 53 2 14 50 0.6 + 0/998 1317/3375 68.8 68.3 154 156 169 569 1.18e+03 0.00133 3.89e-05 129 1 4 128 0.587 + 0/998 1318/3375 68.8 68.3 154 156 169 569 1.18e+03 0.00134 3.92e-05 64 1 2 62 0.583 + 0/998 1319/3375 68.8 68.3 154 156 169 569 1.18e+03 0.00134 3.96e-05 102 1 27 99 0.609 + 0/998 1320/3375 68.8 68.3 154 156 169 569 1.19e+03 0.00134 3.95e-05 127 0 4 127 0.595 + 0/998 1321/3375 68.8 68.3 154 156 169 569 1.18e+03 0.00134 3.95e-05 86 0 0 86 0.586 + 0/998 1322/3375 68.9 68.4 154 156 169 569 1.19e+03 0.00134 3.94e-05 101 0 1 101 0.595 + 0/998 1323/3375 68.8 68.4 154 156 169 569 1.18e+03 0.00134 3.94e-05 79 0 1 79 0.599 + 0/998 1324/3375 68.8 68.3 154 156 169 569 1.18e+03 0.00134 3.94e-05 41 0 0 41 0.599 + 0/998 1325/3375 68.8 68.3 154 156 168 569 1.18e+03 0.00134 3.94e-05 53 0 0 53 0.587 + 0/998 1326/3375 68.8 68.3 154 156 168 569 1.18e+03 0.00134 3.93e-05 89 0 3 88 0.597 + 0/998 1327/3375 68.8 68.3 154 156 168 569 1.18e+03 0.00134 3.93e-05 86 0 7 86 0.591 + 0/998 1328/3375 68.8 68.3 154 156 168 569 1.18e+03 0.00134 3.93e-05 96 0 1 96 0.583 + 0/998 1329/3375 68.8 68.3 154 156 168 569 1.18e+03 0.00134 3.92e-05 138 0 0 138 0.585 + 0/998 1330/3375 68.8 68.4 154 156 168 569 1.18e+03 0.00134 3.91e-05 101 0 0 101 0.58 + 0/998 1331/3375 68.8 68.3 154 156 168 569 1.18e+03 0.00134 3.91e-05 47 0 1 47 0.58 + 0/998 1332/3375 68.8 68.3 154 156 168 568 1.18e+03 0.00134 3.91e-05 85 0 2 85 0.594 + 0/998 1333/3375 68.8 68.3 154 156 168 568 1.18e+03 0.00134 3.91e-05 86 0 1 86 0.59 + 0/998 1334/3375 68.8 68.3 154 156 168 569 1.18e+03 0.00134 3.9e-05 102 0 0 102 0.59 + 0/998 1335/3375 68.8 68.4 154 156 168 569 1.18e+03 0.00134 3.9e-05 99 0 0 99 0.595 + 0/998 1336/3375 68.8 68.4 154 156 168 569 1.18e+03 0.00133 3.9e-05 85 0 4 85 0.591 + 0/998 1337/3375 68.9 68.4 154 156 168 569 1.18e+03 0.00133 3.9e-05 91 0 3 91 0.582 + 0/998 1338/3375 68.8 68.3 154 156 168 569 1.18e+03 0.00133 3.89e-05 69 0 9 69 0.594 + 0/998 1339/3375 68.8 68.3 153 156 168 569 1.18e+03 0.00134 3.93e-05 66 1 16 65 0.586 + 0/998 1340/3375 68.8 68.3 154 156 168 569 1.18e+03 0.00133 3.93e-05 100 0 15 100 0.587 + 0/998 1341/3375 68.9 68.3 154 156 168 569 1.18e+03 0.00134 3.96e-05 105 1 22 102 0.588 + 0/998 1342/3375 68.8 68.3 154 156 168 569 1.18e+03 0.00133 3.96e-05 78 0 6 78 0.583 + 0/998 1343/3375 68.8 68.3 153 156 168 569 1.18e+03 0.00129 3.96e-05 75 0 8 73 0.577 + 0/998 1344/3375 68.8 68.3 153 156 168 569 1.18e+03 0.00128 3.95e-05 89 0 2 89 0.584 + 0/998 1345/3375 68.8 68.3 153 156 168 569 1.18e+03 0.00129 3.99e-05 72 1 1 71 0.586 + 0/998 1346/3375 68.8 68.3 153 156 168 569 1.18e+03 0.00129 3.98e-05 100 0 0 100 0.591 + 0/998 1347/3375 68.8 68.3 153 156 168 569 1.18e+03 0.00125 3.98e-05 98 0 6 96 0.603 + 0/998 1348/3375 68.9 68.4 153 156 168 569 1.18e+03 0.00125 3.98e-05 123 0 0 123 0.605 + 0/998 1349/3375 68.9 68.3 153 156 168 569 1.18e+03 0.00125 3.97e-05 81 0 2 81 0.585 + 0/998 1350/3375 68.8 68.3 153 156 168 569 1.18e+03 0.00125 3.97e-05 85 0 1 85 0.593 + 0/998 1351/3375 68.9 68.3 153 156 168 569 1.18e+03 0.00128 4.08e-05 76 3 7 73 0.581 + 0/998 1352/3375 68.9 68.3 153 156 168 569 1.18e+03 0.00128 4.07e-05 108 0 0 108 0.612 + 0/998 1353/3375 68.8 68.3 153 156 168 569 1.18e+03 0.00128 4.07e-05 35 0 0 35 0.583 + 0/998 1354/3375 68.8 68.3 153 156 168 569 1.18e+03 0.00128 4.07e-05 90 0 0 90 0.594 + 0/998 1355/3375 68.8 68.3 153 156 168 569 1.18e+03 0.00129 4.1e-05 88 1 1 86 0.602 + 0/998 1356/3375 68.9 68.3 153 156 168 569 1.18e+03 0.00129 4.1e-05 98 0 2 98 0.607 + 0/998 1357/3375 68.9 68.3 153 156 168 569 1.18e+03 0.00128 4.1e-05 90 0 6 90 0.609 + 0/998 1358/3375 68.8 68.3 153 156 168 568 1.18e+03 0.00128 4.09e-05 45 0 6 45 0.59 + 0/998 1359/3375 68.9 68.3 153 156 168 569 1.18e+03 0.00128 4.09e-05 105 0 0 105 0.583 + 0/998 1360/3375 68.9 68.3 153 156 168 569 1.18e+03 0.00129 4.13e-05 119 1 0 118 0.589 + 0/998 1361/3375 68.8 68.3 153 156 168 569 1.18e+03 0.00128 4.12e-05 51 0 17 51 0.599 + 0/998 1362/3375 68.8 68.3 153 156 168 568 1.18e+03 0.00128 4.12e-05 60 0 6 60 0.582 + 0/998 1363/3375 68.8 68.3 153 156 168 568 1.18e+03 0.00128 4.12e-05 75 0 1 75 0.608 + 0/998 1364/3375 68.8 68.3 153 156 168 568 1.18e+03 0.00128 4.12e-05 56 0 0 56 0.603 + 0/998 1365/3375 68.8 68.3 153 156 168 568 1.18e+03 0.00128 4.11e-05 86 0 7 86 0.587 + 0/998 1366/3375 68.8 68.2 153 156 168 568 1.18e+03 0.00128 4.11e-05 60 0 2 60 0.583 + 0/998 1367/3375 68.8 68.2 153 156 168 568 1.18e+03 0.00128 4.11e-05 79 0 2 79 0.587 + 0/998 1368/3375 68.8 68.2 153 156 168 568 1.18e+03 0.00127 4.1e-05 94 0 3 94 0.577 + 0/998 1369/3375 68.8 68.2 153 156 168 568 1.18e+03 0.00129 4.17e-05 90 2 21 86 0.593 + 0/998 1370/3375 68.8 68.2 153 156 168 568 1.18e+03 0.0013 4.2e-05 111 1 1 110 0.594 + 0/998 1371/3375 68.8 68.2 153 156 168 568 1.18e+03 0.00129 4.2e-05 110 0 11 110 0.593 + 0/998 1372/3375 68.8 68.3 153 156 168 568 1.18e+03 0.00129 4.2e-05 120 0 0 120 0.601 + 0/998 1373/3375 68.8 68.2 153 156 168 568 1.18e+03 0.00129 4.19e-05 55 0 2 54 0.597 + 0/998 1374/3375 68.8 68.2 153 155 168 568 1.18e+03 0.00129 4.19e-05 66 0 1 66 0.607 + 0/998 1375/3375 68.8 68.3 153 156 168 568 1.18e+03 0.00129 4.19e-05 124 0 7 124 0.607 + 0/998 1376/3375 68.8 68.2 153 155 168 568 1.18e+03 0.00129 4.19e-05 57 0 5 55 0.601 + 0/998 1377/3375 68.8 68.2 153 155 168 568 1.18e+03 0.00129 4.22e-05 83 1 12 81 0.594 + 0/998 1378/3375 68.8 68.3 153 155 168 568 1.18e+03 0.00129 4.22e-05 101 0 18 101 0.595 + 0/998 1379/3375 68.8 68.3 153 156 168 568 1.18e+03 0.0013 4.32e-05 112 3 38 107 0.606 + 0/998 1380/3375 68.8 68.2 153 155 168 568 1.18e+03 0.0013 4.32e-05 75 0 8 73 0.606 + 0/998 1381/3375 68.8 68.3 153 155 168 568 1.18e+03 0.0013 4.31e-05 139 0 0 139 0.612 + 0/998 1382/3375 68.8 68.2 153 155 168 568 1.18e+03 0.0013 4.31e-05 43 0 19 43 0.608 + 0/998 1383/3375 68.8 68.2 153 155 167 568 1.18e+03 0.00129 4.31e-05 85 0 21 84 0.601 + 0/998 1384/3375 68.8 68.2 153 155 167 568 1.18e+03 0.00129 4.3e-05 56 0 13 55 0.614 + 0/998 1385/3375 68.8 68.2 153 155 167 568 1.18e+03 0.00129 4.3e-05 35 0 6 35 0.598 + 0/998 1386/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00128 4.3e-05 84 0 2 84 0.59 + 0/998 1387/3375 68.8 68.2 153 155 167 568 1.18e+03 0.00129 4.33e-05 104 1 8 103 0.592 + 0/998 1388/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00129 4.33e-05 65 0 21 65 0.587 + 0/998 1389/3375 68.8 68.2 153 155 167 568 1.18e+03 0.00123 4.36e-05 135 1 79 123 0.599 + 0/998 1390/3375 68.8 68.2 153 155 167 568 1.18e+03 0.00125 4.43e-05 61 2 16 58 0.594 + 0/998 1391/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00123 4.42e-05 93 0 77 91 0.608 + 0/998 1392/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00122 4.42e-05 64 0 33 64 0.575 + 0/998 1393/3375 68.8 68.2 153 155 167 567 1.18e+03 0.0012 4.45e-05 127 1 81 118 0.591 + 0/998 1394/3375 68.8 68.2 153 155 167 567 1.18e+03 0.0012 4.45e-05 61 0 23 61 0.601 + 0/998 1395/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00119 4.45e-05 44 0 12 44 0.604 + 0/998 1396/3375 68.7 68.2 153 155 167 567 1.18e+03 0.00119 4.45e-05 65 0 10 64 0.609 + 0/998 1397/3375 68.8 68.2 153 155 167 567 1.18e+03 0.0012 4.55e-05 82 3 44 75 0.607 + 0/998 1398/3375 68.7 68.1 153 155 167 567 1.18e+03 0.0012 4.55e-05 57 0 15 57 0.591 + 0/998 1399/3375 68.7 68.1 153 155 167 567 1.18e+03 0.0012 4.55e-05 51 0 11 51 0.599 + 0/998 1400/3375 68.7 68.1 153 155 167 567 1.18e+03 0.0012 4.54e-05 76 0 2 76 0.589 + 0/998 1401/3375 68.7 68.1 153 155 167 567 1.18e+03 0.0012 4.54e-05 106 0 0 106 0.589 + 0/998 1402/3375 68.7 68.1 153 155 167 567 1.18e+03 0.00116 4.54e-05 78 0 11 76 0.589 + 0/998 1403/3375 68.7 68.1 153 155 167 567 1.18e+03 0.00116 4.54e-05 95 0 3 94 0.608 + 0/998 1404/3375 68.7 68.1 153 155 167 567 1.18e+03 0.00116 4.53e-05 93 0 5 93 0.614 + 0/998 1405/3375 68.7 68.1 153 155 167 567 1.18e+03 0.00116 4.56e-05 106 1 8 104 0.591 + 0/998 1406/3375 68.7 68.1 153 155 167 567 1.18e+03 0.00116 4.56e-05 53 0 0 53 0.593 + 0/998 1407/3375 68.7 68.1 153 155 167 567 1.18e+03 0.00116 4.56e-05 153 0 4 152 0.587 + 0/998 1408/3375 68.7 68.1 153 155 167 567 1.18e+03 0.00116 4.55e-05 72 0 1 72 0.589 + 0/998 1409/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00116 4.55e-05 158 0 1 158 0.59 + 0/998 1410/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00116 4.55e-05 119 0 1 119 0.606 + 0/998 1411/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00116 4.54e-05 56 0 2 56 0.604 + 0/998 1412/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00116 4.54e-05 86 0 1 86 0.587 + 0/998 1413/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00117 4.57e-05 82 1 4 81 0.588 + 0/998 1414/3375 68.7 68.1 153 155 167 567 1.18e+03 0.00116 4.57e-05 56 0 1 56 0.589 + 0/998 1415/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00114 4.6e-05 101 1 10 98 0.593 + 0/998 1416/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00114 4.6e-05 103 0 0 103 0.587 + 0/998 1417/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00114 4.59e-05 132 0 3 132 0.604 + 0/998 1418/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00114 4.59e-05 52 0 0 52 0.586 + 0/998 1419/3375 68.7 68.1 153 155 167 567 1.18e+03 0.00114 4.59e-05 44 0 0 44 0.577 + 0/998 1420/3375 68.7 68.1 153 155 167 567 1.18e+03 0.00114 4.59e-05 83 0 0 83 0.604 + 0/998 1421/3375 68.7 68.1 153 155 167 567 1.18e+03 0.00114 4.58e-05 97 0 1 97 0.591 + 0/998 1422/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00114 4.58e-05 118 0 0 118 0.593 + 0/998 1423/3375 68.7 68.2 152 155 167 567 1.18e+03 0.00113 4.58e-05 46 0 11 46 0.587 + 0/998 1424/3375 68.7 68.1 152 155 167 567 1.18e+03 0.00114 4.61e-05 52 1 5 51 0.601 + 0/998 1425/3375 68.7 68.1 152 155 167 567 1.18e+03 0.00115 4.64e-05 106 1 3 104 0.609 + 0/998 1426/3375 68.7 68.1 152 155 166 567 1.18e+03 0.00114 4.63e-05 90 0 7 90 0.603 + 0/998 1427/3375 68.7 68.1 152 155 166 567 1.18e+03 0.00114 4.63e-05 66 0 1 66 0.58 + 0/998 1428/3375 68.7 68.1 152 154 166 567 1.18e+03 0.00114 4.63e-05 85 0 5 84 0.593 + 0/998 1429/3375 68.7 68.2 152 154 166 567 1.18e+03 0.00114 4.63e-05 112 0 12 112 0.595 + 0/998 1430/3375 68.7 68.1 152 154 166 567 1.18e+03 0.00114 4.62e-05 76 0 9 76 0.6 + 0/998 1431/3375 68.7 68.1 152 154 166 567 1.18e+03 0.00114 4.62e-05 85 0 11 84 0.602 + 0/998 1432/3375 68.7 68.1 152 154 166 567 1.18e+03 0.00114 4.65e-05 89 1 5 86 0.599 + 0/998 1433/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00114 4.65e-05 52 0 6 52 0.593 + 0/998 1434/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00114 4.64e-05 80 0 11 79 0.602 + 0/998 1435/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00114 4.67e-05 74 1 12 71 0.595 + 0/998 1436/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00114 4.67e-05 120 0 8 118 0.594 + 0/998 1437/3375 68.7 68.1 152 154 166 567 1.18e+03 0.00114 4.66e-05 132 0 4 132 0.604 + 0/998 1438/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00116 4.76e-05 86 3 10 83 0.594 + 0/998 1439/3375 68.8 68.2 152 154 166 567 1.18e+03 0.00116 4.76e-05 121 0 3 120 0.598 + 0/998 1440/3375 68.8 68.2 152 155 166 567 1.18e+03 0.00116 4.78e-05 126 1 13 124 0.604 + 0/998 1441/3375 68.8 68.2 152 154 166 566 1.18e+03 0.00117 4.82e-05 38 1 7 37 0.572 + 0/998 1442/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00117 4.82e-05 40 0 8 40 0.587 + 0/998 1443/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00118 4.92e-05 62 3 30 58 0.595 + 0/998 1444/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00118 4.92e-05 56 0 26 56 0.603 + 0/998 1445/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00117 4.91e-05 112 0 10 110 0.599 + 0/998 1446/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00117 4.91e-05 92 0 6 92 0.583 + 0/998 1447/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00117 4.91e-05 75 0 6 75 0.581 + 0/998 1448/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00117 4.9e-05 94 0 9 92 0.6 + 0/998 1449/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00117 4.9e-05 108 0 13 108 0.602 + 0/998 1450/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00117 4.9e-05 57 0 2 57 0.596 + 0/998 1451/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00117 4.93e-05 82 1 18 78 0.595 + 0/998 1452/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00117 4.92e-05 70 0 11 70 0.595 + 0/998 1453/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00116 4.92e-05 111 0 33 104 0.605 + 0/998 1454/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00116 4.91e-05 107 0 4 107 0.605 + 0/998 1455/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00116 4.91e-05 80 0 8 79 0.589 + 0/998 1456/3375 68.7 68.1 152 154 166 566 1.17e+03 0.00115 4.9e-05 58 0 15 56 0.603 + 0/998 1457/3375 68.7 68.1 152 154 166 566 1.17e+03 0.00115 4.9e-05 105 0 4 104 0.593 + 0/998 1458/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00115 4.9e-05 120 0 23 120 0.593 + 0/998 1459/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00115 4.89e-05 65 0 0 65 0.602 + 0/998 1460/3375 68.7 68.1 152 154 166 566 1.17e+03 0.00116 4.96e-05 100 2 11 98 0.592 + 0/998 1461/3375 68.7 68.1 152 154 166 566 1.17e+03 0.00115 4.96e-05 70 0 10 70 0.597 + 0/998 1462/3375 68.7 68.1 152 154 166 566 1.17e+03 0.00115 4.95e-05 65 0 1 65 0.62 + 0/998 1463/3375 68.7 68.1 152 154 166 566 1.17e+03 0.00115 4.95e-05 66 0 9 66 0.597 + 0/998 1464/3375 68.7 68.1 152 154 166 566 1.17e+03 0.00114 4.95e-05 70 0 33 70 0.59 + 0/998 1465/3375 68.7 68.1 152 154 166 566 1.17e+03 0.00114 4.94e-05 90 0 9 90 0.596 + 0/998 1466/3375 68.7 68.1 152 154 166 565 1.17e+03 0.00113 4.94e-05 50 0 20 47 0.597 + 0/998 1467/3375 68.7 68.1 152 154 166 565 1.17e+03 0.00113 4.97e-05 104 1 43 100 0.611 + 0/998 1468/3375 68.7 68.1 152 154 166 565 1.17e+03 0.00113 4.97e-05 70 0 7 70 0.608 + 0/998 1469/3375 68.7 68.1 152 154 166 565 1.17e+03 0.00113 4.96e-05 85 0 1 85 0.584 + 0/998 1470/3375 68.6 68 152 154 166 565 1.17e+03 0.00113 5e-05 47 1 20 45 0.587 + 0/998 1471/3375 68.7 68.1 152 154 166 565 1.17e+03 0.0011 5.06e-05 133 2 45 125 0.599 + 0/998 1472/3375 68.6 68 152 154 166 565 1.17e+03 0.0011 5.06e-05 49 0 10 49 0.582 + 0/998 1473/3375 68.6 68 152 154 166 565 1.17e+03 0.0011 5.09e-05 55 1 24 54 0.575 + 0/998 1474/3375 68.6 68 152 154 166 565 1.17e+03 0.0011 5.12e-05 67 1 36 64 0.606 + 0/998 1475/3375 68.6 68 152 154 166 565 1.17e+03 0.00109 5.12e-05 107 0 4 107 0.6 + 0/998 1476/3375 68.6 68 152 154 166 565 1.17e+03 0.00109 5.12e-05 47 0 4 47 0.584 + 0/998 1477/3375 68.6 68 152 154 165 565 1.17e+03 0.0011 5.18e-05 74 2 6 72 0.588 + 0/998 1478/3375 68.6 68 152 154 165 565 1.17e+03 0.0011 5.18e-05 45 0 34 45 0.595 + 0/998 1479/3375 68.6 68 152 154 165 565 1.17e+03 0.0011 5.17e-05 126 0 6 126 0.595 + 0/998 1480/3375 68.6 68 152 154 165 565 1.17e+03 0.0011 5.2e-05 121 1 8 118 0.614 + 0/998 1481/3375 68.6 68 152 154 165 565 1.17e+03 0.0011 5.2e-05 71 0 6 71 0.596 + 0/998 1482/3375 68.6 68 152 154 165 565 1.17e+03 0.0011 5.2e-05 81 0 3 81 0.58 + 0/998 1483/3375 68.6 68 152 154 165 565 1.17e+03 0.0011 5.19e-05 126 0 3 125 0.6 + 0/998 1484/3375 68.6 68 152 154 165 565 1.17e+03 0.0011 5.22e-05 81 1 7 80 0.579 + 0/998 1485/3375 68.6 68 152 154 165 565 1.17e+03 0.0011 5.22e-05 50 0 19 50 0.594 + 0/998 1486/3375 68.6 68 152 154 165 565 1.17e+03 0.0011 5.22e-05 77 0 21 74 0.595 + 0/998 1487/3375 68.6 68 151 154 165 565 1.17e+03 0.00109 5.22e-05 40 0 14 40 0.591 + 0/998 1488/3375 68.6 68 151 154 165 565 1.17e+03 0.0011 5.24e-05 131 1 4 130 0.594 + 0/998 1489/3375 68.6 68 151 154 165 565 1.17e+03 0.0011 5.24e-05 86 0 3 86 0.589 + 0/998 1490/3375 68.6 68 151 154 165 565 1.17e+03 0.00109 5.24e-05 105 0 20 105 0.604 + 0/998 1491/3375 68.7 68.1 152 154 165 565 1.17e+03 0.00109 5.23e-05 170 0 2 170 0.594 + 0/998 1492/3375 68.6 68.1 152 154 165 565 1.17e+03 0.0011 5.29e-05 70 2 38 65 0.6 + 0/998 1493/3375 68.6 68.1 152 154 165 565 1.17e+03 0.00112 5.42e-05 89 4 10 84 0.587 + 0/998 1494/3375 68.7 68.1 152 154 165 565 1.17e+03 0.00113 5.52e-05 96 3 23 89 0.601 + 0/998 1495/3375 68.6 68.1 151 154 165 565 1.17e+03 0.00113 5.51e-05 77 0 14 77 0.601 + 0/998 1496/3375 68.6 68 151 154 165 565 1.17e+03 0.00114 5.58e-05 69 2 20 66 0.589 + 0/998 1497/3375 68.6 68 151 154 165 565 1.17e+03 0.00113 5.58e-05 52 0 34 52 0.597 + 0/998 1498/3375 68.6 68 151 154 165 565 1.17e+03 0.00112 5.57e-05 73 0 51 72 0.599 + 0/998 1499/3375 68.6 68 151 154 165 564 1.17e+03 0.00112 5.56e-05 82 0 11 80 0.584 + 0/998 1500/3375 68.6 68 151 154 165 564 1.17e+03 0.00112 5.56e-05 103 0 13 102 0.595 + 0/998 1501/3375 68.6 68 151 154 165 564 1.17e+03 0.00112 5.62e-05 73 2 45 65 0.593 + 0/998 1502/3375 68.6 68 151 154 165 564 1.17e+03 0.00112 5.72e-05 71 3 64 63 0.602 + 0/998 1503/3375 68.6 68 151 154 165 564 1.17e+03 0.00112 5.72e-05 49 0 34 48 0.61 + 0/998 1504/3375 68.6 68 151 153 165 564 1.17e+03 0.00111 5.71e-05 74 0 15 73 0.584 + 0/998 1505/3375 68.6 68 151 154 165 564 1.17e+03 0.00111 5.71e-05 82 0 13 82 0.599 + 0/998 1506/3375 68.6 68 151 153 165 564 1.17e+03 0.00111 5.71e-05 93 0 18 93 0.612 + 0/998 1507/3375 68.6 68 151 154 165 564 1.17e+03 0.0011 5.69e-05 151 0 11 149 0.602 + 0/998 1508/3375 68.6 68.1 151 154 165 564 1.17e+03 0.0011 5.69e-05 116 0 1 116 0.6 + 0/998 1509/3375 68.6 68.1 151 154 165 564 1.17e+03 0.0011 5.69e-05 91 0 3 90 0.589 + 0/998 1510/3375 68.6 68.1 151 154 165 564 1.17e+03 0.0011 5.68e-05 89 0 1 89 0.611 + 0/998 1511/3375 68.6 68.1 151 154 165 564 1.17e+03 0.0011 5.68e-05 90 0 8 88 0.6 + 0/998 1512/3375 68.6 68 151 154 165 564 1.17e+03 0.0011 5.67e-05 67 0 1 67 0.592 + 0/998 1513/3375 68.6 68 151 153 165 564 1.17e+03 0.0011 5.67e-05 81 0 2 81 0.598 + 0/998 1514/3375 68.6 68 151 153 165 564 1.17e+03 0.0011 5.67e-05 73 0 3 73 0.591 + 0/998 1515/3375 68.6 68 151 154 165 564 1.17e+03 0.0011 5.66e-05 82 0 8 82 0.599 + 0/998 1516/3375 68.6 68 151 154 165 564 1.17e+03 0.00112 5.83e-05 81 5 34 75 0.596 + 0/998 1517/3375 68.6 68 151 154 165 564 1.17e+03 0.00112 5.82e-05 111 0 4 111 0.591 + 0/998 1518/3375 68.6 68 151 153 165 564 1.17e+03 0.00112 5.82e-05 65 0 9 65 0.603 + 0/998 1519/3375 68.6 68 151 153 165 564 1.17e+03 0.00112 5.81e-05 66 0 7 66 0.597 + 0/998 1520/3375 68.5 68 151 153 165 564 1.17e+03 0.00112 5.81e-05 42 0 3 42 0.578 + 0/998 1521/3375 68.6 68 151 153 165 564 1.17e+03 0.00112 5.81e-05 96 0 4 96 0.588 + 0/998 1522/3375 68.6 68 151 153 165 564 1.17e+03 0.00111 5.8e-05 113 0 16 113 0.602 + 0/998 1523/3375 68.6 68 151 153 165 564 1.17e+03 0.00111 5.8e-05 65 0 2 65 0.594 + 0/998 1524/3375 68.5 68 151 153 165 564 1.17e+03 0.00111 5.8e-05 83 0 5 83 0.603 + 0/998 1525/3375 68.6 68 151 153 165 564 1.17e+03 0.00112 5.82e-05 106 1 9 105 0.606 + 0/998 1526/3375 68.6 68 151 153 165 564 1.17e+03 0.00112 5.82e-05 105 0 2 105 0.616 + 0/998 1527/3375 68.6 68 151 153 165 564 1.17e+03 0.00111 5.82e-05 51 0 4 51 0.578 + 0/998 1528/3375 68.5 68 151 153 165 564 1.17e+03 0.00112 5.84e-05 67 1 24 64 0.592 + 0/998 1529/3375 68.5 68 151 153 165 564 1.17e+03 0.00108 5.87e-05 70 1 35 65 0.59 + 0/998 1530/3375 68.5 68 151 153 165 564 1.17e+03 0.00108 5.87e-05 97 0 20 95 0.588 + 0/998 1531/3375 68.5 67.9 151 153 165 563 1.17e+03 0.00108 5.86e-05 62 0 0 62 0.593 + 0/998 1532/3375 68.5 67.9 151 153 165 563 1.17e+03 0.00108 5.86e-05 67 0 9 67 0.597 + 0/998 1533/3375 68.5 67.9 151 153 165 563 1.17e+03 0.00108 5.86e-05 56 0 2 56 0.591 + 0/998 1534/3375 68.5 67.9 151 153 164 563 1.17e+03 0.00108 5.85e-05 60 0 6 60 0.595 + 0/998 1535/3375 68.5 67.9 151 153 164 563 1.17e+03 0.00107 5.85e-05 51 0 24 51 0.596 + 0/998 1536/3375 68.5 67.9 151 153 164 563 1.17e+03 0.00108 5.91e-05 70 2 42 67 0.605 + 0/998 1537/3375 68.5 67.9 151 153 164 563 1.17e+03 0.00108 5.94e-05 81 1 11 80 0.595 + 0/998 1538/3375 68.4 67.9 151 153 164 563 1.17e+03 0.00108 5.97e-05 86 1 21 85 0.6 + 0/998 1539/3375 68.4 67.8 151 153 164 563 1.17e+03 0.00107 5.97e-05 44 0 51 44 0.603 + 0/998 1540/3375 68.4 67.8 151 153 164 563 1.17e+03 0.00108 6.03e-05 36 2 45 32 0.578 + 0/998 1541/3375 68.4 67.8 151 153 164 562 1.17e+03 0.00108 6.03e-05 56 0 7 56 0.595 + 0/998 1542/3375 68.4 67.8 151 153 164 562 1.17e+03 0.00107 6.06e-05 70 1 87 64 0.599 + 0/998 1543/3375 68.4 67.8 151 153 164 562 1.17e+03 0.00106 6.06e-05 84 0 28 84 0.604 + 0/998 1544/3375 68.4 67.8 151 153 164 562 1.17e+03 0.00106 6.06e-05 53 0 13 52 0.603 + 0/998 1545/3375 68.4 67.8 151 153 164 562 1.17e+03 0.00106 6.11e-05 107 2 41 100 0.581 + 0/998 1546/3375 68.4 67.8 150 153 164 562 1.17e+03 0.00112 6.34e-05 73 2 78 62 0.596 + 0/998 1547/3375 68.4 67.7 150 153 164 562 1.17e+03 0.00115 6.49e-05 81 5 4 76 0.613 + 0/998 1548/3375 68.4 67.7 150 153 164 562 1.17e+03 0.00114 6.49e-05 86 0 26 86 0.593 + 0/998 1549/3375 68.4 67.7 150 153 164 562 1.17e+03 0.00116 6.71e-05 75 7 98 67 0.603 + 0/998 1550/3375 68.4 67.7 150 153 164 562 1.17e+03 0.00115 6.71e-05 108 0 12 106 0.602 + 0/998 1551/3375 68.4 67.7 150 153 164 562 1.16e+03 0.00115 6.74e-05 63 1 36 61 0.598 + 0/998 1552/3375 68.4 67.7 150 153 164 562 1.16e+03 0.00114 6.73e-05 85 0 44 85 0.589 + 0/998 1553/3375 68.3 67.7 150 153 164 562 1.16e+03 0.00115 6.76e-05 72 1 5 71 0.593 + 0/998 1554/3375 68.3 67.7 150 153 164 562 1.16e+03 0.00115 6.86e-05 96 3 52 86 0.598 + 0/998 1555/3375 68.3 67.7 150 152 164 562 1.16e+03 0.00115 6.85e-05 58 0 9 57 0.591 + 0/998 1556/3375 68.3 67.7 150 152 164 562 1.16e+03 0.00115 6.85e-05 88 0 20 88 0.594 + 0/998 1557/3375 68.3 67.7 150 152 164 562 1.16e+03 0.00115 6.85e-05 68 0 24 68 0.608 + 0/998 1558/3375 68.3 67.7 150 152 164 562 1.16e+03 0.00114 6.84e-05 122 0 19 121 0.599 + 0/998 1559/3375 68.3 67.7 150 152 164 562 1.16e+03 0.00115 6.93e-05 71 3 6 67 0.586 + 0/998 1560/3375 68.3 67.7 150 152 164 562 1.16e+03 0.00115 6.93e-05 57 0 15 57 0.58 + 0/998 1561/3375 68.3 67.7 150 152 164 562 1.16e+03 0.00115 6.93e-05 43 0 2 43 0.594 + 0/998 1562/3375 68.3 67.7 150 152 164 562 1.16e+03 0.00115 6.92e-05 83 0 6 82 0.608 + 0/998 1563/3375 68.3 67.7 150 152 164 562 1.16e+03 0.00115 6.92e-05 93 0 0 93 0.591 + 0/998 1564/3375 68.3 67.6 150 152 164 562 1.16e+03 0.00115 6.92e-05 46 0 3 46 0.588 + 0/998 1565/3375 68.3 67.6 150 152 164 561 1.16e+03 0.00115 6.91e-05 60 0 1 60 0.586 + 0/998 1566/3375 68.3 67.6 150 152 164 561 1.16e+03 0.00115 6.97e-05 82 2 26 77 0.594 + 0/998 1567/3375 68.3 67.6 150 152 163 561 1.16e+03 0.00115 6.97e-05 61 0 4 61 0.599 + 0/998 1568/3375 68.3 67.6 150 152 163 561 1.16e+03 0.00115 6.96e-05 60 0 0 60 0.607 + 0/998 1569/3375 68.3 67.6 150 152 163 561 1.16e+03 0.00115 6.96e-05 129 0 3 128 0.589 + 0/998 1570/3375 68.3 67.6 150 152 163 561 1.16e+03 0.00115 6.95e-05 75 0 0 75 0.626 + 0/998 1571/3375 68.2 67.6 150 152 163 561 1.16e+03 0.00116 7.01e-05 51 2 13 46 0.614 + 0/998 1572/3375 68.2 67.6 150 152 163 561 1.16e+03 0.00116 7.01e-05 89 0 12 87 0.589 + 0/998 1573/3375 68.2 67.6 150 152 163 561 1.16e+03 0.00116 7.04e-05 64 1 6 61 0.584 + 0/998 1574/3375 68.2 67.6 150 152 163 561 1.16e+03 0.00117 7.13e-05 81 3 19 72 0.607 + 0/998 1575/3375 68.2 67.6 150 152 163 561 1.16e+03 0.00117 7.16e-05 63 1 34 60 0.608 + 0/998 1576/3375 68.2 67.6 150 152 163 561 1.16e+03 0.00117 7.15e-05 87 0 19 86 0.607 + 0/998 1577/3375 68.2 67.6 150 152 163 561 1.16e+03 0.00117 7.15e-05 51 0 13 51 0.616 + 0/998 1578/3375 68.2 67.5 150 152 163 561 1.16e+03 0.00116 7.15e-05 72 0 26 69 0.607 + 0/998 1579/3375 68.2 67.5 150 152 163 561 1.16e+03 0.00117 7.2e-05 71 2 37 65 0.602 + 0/998 1580/3375 68.2 67.6 150 152 163 561 1.16e+03 0.00116 7.23e-05 100 1 35 96 0.596 + 0/998 1581/3375 68.2 67.6 150 152 163 561 1.16e+03 0.00116 7.23e-05 49 0 6 49 0.609 + 0/998 1582/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00116 7.23e-05 51 0 3 50 0.611 + 0/998 1583/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00116 7.26e-05 49 1 38 47 0.594 + 0/998 1584/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00117 7.28e-05 73 1 1 72 0.605 + 0/998 1585/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00117 7.28e-05 148 0 3 148 0.609 + 0/998 1586/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00113 7.3e-05 68 1 53 66 0.606 + 0/998 1587/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00113 7.33e-05 92 1 35 91 0.607 + 0/998 1588/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00113 7.36e-05 89 1 29 86 0.604 + 0/998 1589/3375 68.2 67.6 150 152 163 560 1.16e+03 0.00113 7.38e-05 122 1 65 112 0.614 + 0/998 1590/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00113 7.38e-05 79 0 4 79 0.603 + 0/998 1591/3375 68.2 67.6 150 152 163 560 1.16e+03 0.00114 7.47e-05 91 3 16 86 0.616 + 0/998 1592/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00114 7.46e-05 81 0 4 81 0.599 + 0/998 1593/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00115 7.58e-05 71 4 31 65 0.601 + 0/998 1594/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00114 7.58e-05 86 0 24 85 0.594 + 0/998 1595/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00114 7.57e-05 60 0 7 59 0.607 + 0/998 1596/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00114 7.57e-05 119 0 12 118 0.612 + 0/998 1597/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00115 7.63e-05 55 2 17 52 0.608 + 0/998 1598/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00115 7.63e-05 75 0 3 74 0.606 + 0/998 1599/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00115 7.62e-05 80 0 0 80 0.604 + 0/998 1600/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00115 7.68e-05 98 2 5 94 0.605 + 0/998 1601/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00115 7.68e-05 103 0 9 102 0.622 + 0/998 1602/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00115 7.67e-05 43 0 4 43 0.595 + 0/998 1603/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00115 7.66e-05 119 0 1 119 0.605 + 0/998 1604/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00116 7.69e-05 65 1 2 64 0.579 + 0/998 1605/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00116 7.72e-05 78 1 1 76 0.587 + 0/998 1606/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00116 7.71e-05 116 0 4 116 0.618 + 0/998 1607/3375 68.2 67.6 150 152 163 560 1.16e+03 0.00116 7.7e-05 149 0 2 148 0.597 + 0/998 1608/3375 68.2 67.6 150 152 163 560 1.16e+03 0.00116 7.7e-05 86 0 2 86 0.604 + 0/998 1609/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00116 7.69e-05 85 0 9 85 0.61 + 0/998 1610/3375 68.3 67.6 150 152 163 560 1.16e+03 0.00116 7.69e-05 111 0 4 111 0.606 + 0/998 1611/3375 68.2 67.6 150 152 163 560 1.16e+03 0.00116 7.68e-05 82 0 4 81 0.602 + 0/998 1612/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00116 7.74e-05 59 2 38 56 0.581 + 0/998 1613/3375 68.2 67.5 150 151 163 560 1.16e+03 0.00116 7.74e-05 63 0 2 63 0.604 + 0/998 1614/3375 68.2 67.5 150 151 163 560 1.16e+03 0.00116 7.73e-05 107 0 9 107 0.608 + 0/998 1615/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00116 7.72e-05 135 0 6 135 0.602 + 0/998 1616/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00115 7.72e-05 71 0 14 71 0.584 + 0/998 1617/3375 68.2 67.6 150 152 163 560 1.16e+03 0.00115 7.71e-05 108 0 8 108 0.605 + 0/998 1618/3375 68.3 67.6 150 152 163 560 1.16e+03 0.00115 7.71e-05 96 0 0 96 0.603 + 0/998 1619/3375 68.2 67.6 150 151 163 560 1.16e+03 0.00115 7.71e-05 46 0 3 46 0.584 + 0/998 1620/3375 68.2 67.6 150 151 163 560 1.16e+03 0.00115 7.7e-05 118 0 7 118 0.59 + 0/998 1621/3375 68.3 67.6 150 152 163 560 1.16e+03 0.00115 7.73e-05 95 1 22 94 0.599 + 0/998 1622/3375 68.2 67.6 150 151 163 560 1.16e+03 0.00115 7.72e-05 51 0 7 51 0.609 + 0/998 1623/3375 68.2 67.6 150 151 163 560 1.16e+03 0.00114 7.72e-05 90 0 74 85 0.607 + 0/998 1624/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00114 7.71e-05 51 0 39 51 0.596 + 0/998 1625/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00113 7.74e-05 75 1 58 74 0.597 + 0/998 1626/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00108 7.74e-05 66 0 99 65 0.594 + 0/998 1627/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00108 7.77e-05 56 1 38 55 0.605 + 0/998 1628/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00108 7.77e-05 125 0 23 124 0.613 + 0/998 1629/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00108 7.86e-05 46 3 29 43 0.607 + 0/998 1630/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00107 7.85e-05 49 0 57 48 0.595 + 0/998 1631/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00107 7.85e-05 57 0 23 57 0.599 + 0/998 1632/3375 68.1 67.5 149 151 162 560 1.16e+03 0.00115 8.4e-05 72 3 136 63 0.608 + 0/998 1633/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00116 8.45e-05 134 2 24 129 0.607 + 0/998 1634/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00116 8.45e-05 90 0 9 90 0.628 + 0/998 1635/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00113 8.44e-05 101 0 92 101 0.612 + 0/998 1636/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00113 8.5e-05 66 2 32 61 0.614 + 0/998 1637/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00113 8.52e-05 97 1 21 95 0.597 + 0/998 1638/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00113 8.51e-05 57 0 39 57 0.616 + 0/998 1639/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00113 8.54e-05 76 1 19 74 0.611 + 0/998 1640/3375 68.2 67.5 149 151 162 559 1.16e+03 0.00113 8.54e-05 52 0 2 50 0.597 + 0/998 1641/3375 68.1 67.5 149 151 162 559 1.16e+03 0.00113 8.56e-05 64 1 31 63 0.596 + 0/998 1642/3375 68.2 67.5 149 151 162 559 1.16e+03 0.00112 8.56e-05 99 0 44 97 0.605 + 0/998 1643/3375 68.1 67.5 149 151 162 559 1.16e+03 0.00112 8.56e-05 43 0 37 43 0.576 + 0/998 1644/3375 68.1 67.5 149 151 162 559 1.16e+03 0.00111 8.55e-05 102 0 13 101 0.614 + 0/998 1645/3375 68.1 67.4 149 151 162 559 1.16e+03 0.00111 8.55e-05 36 0 26 36 0.601 + 0/998 1646/3375 68.1 67.4 149 151 162 559 1.16e+03 0.00111 8.54e-05 54 0 1 54 0.595 + 0/998 1647/3375 68.1 67.4 149 151 162 559 1.16e+03 0.00108 8.6e-05 128 2 19 125 0.6 + 0/998 1648/3375 68.1 67.4 149 151 162 559 1.16e+03 0.00108 8.6e-05 58 0 2 58 0.6 + 0/998 1649/3375 68.1 67.4 149 151 162 559 1.16e+03 0.00108 8.59e-05 55 0 0 55 0.597 + 0/998 1650/3375 68.1 67.4 149 151 162 559 1.16e+03 0.00109 8.65e-05 61 2 22 57 0.591 + 0/998 1651/3375 68.1 67.4 149 151 162 559 1.16e+03 0.00109 8.65e-05 69 0 2 69 0.601 + 0/998 1652/3375 68.1 67.4 149 151 162 559 1.16e+03 0.00109 8.64e-05 72 0 9 72 0.599 + 0/998 1653/3375 68.1 67.4 149 151 162 559 1.16e+03 0.00109 8.63e-05 98 0 3 97 0.602 + 0/998 1654/3375 68.1 67.4 149 151 162 559 1.16e+03 0.00109 8.66e-05 83 1 4 82 0.585 + 0/998 1655/3375 68 67.4 149 151 162 558 1.15e+03 0.00109 8.69e-05 33 1 6 32 0.583 + 0/998 1656/3375 68 67.4 149 150 162 558 1.15e+03 0.00109 8.68e-05 76 0 10 76 0.593 + 0/998 1657/3375 68.1 67.4 149 150 162 558 1.15e+03 0.00109 8.7e-05 90 1 3 89 0.604 + 0/998 1658/3375 68 67.4 149 150 162 558 1.15e+03 0.00109 8.7e-05 86 0 3 86 0.601 + 0/998 1659/3375 68 67.4 149 150 162 558 1.15e+03 0.00109 8.69e-05 76 0 14 76 0.603 + 0/998 1660/3375 68.1 67.4 149 151 162 558 1.15e+03 0.00109 8.69e-05 121 0 0 121 0.611 + 0/998 1661/3375 68 67.4 149 150 162 558 1.15e+03 0.00109 8.68e-05 52 0 33 52 0.591 + 0/998 1662/3375 68 67.3 149 150 162 558 1.15e+03 0.00109 8.68e-05 76 0 5 76 0.621 + 0/998 1663/3375 68 67.4 149 150 162 558 1.15e+03 0.00109 8.67e-05 91 0 1 91 0.607 + 0/998 1664/3375 68 67.3 149 150 161 558 1.15e+03 0.00108 8.67e-05 66 0 45 64 0.6 + 0/998 1665/3375 68 67.3 149 150 161 558 1.15e+03 0.00108 8.67e-05 80 0 7 80 0.605 + 0/998 1666/3375 68 67.3 149 150 161 558 1.15e+03 0.00108 8.69e-05 75 1 16 73 0.604 + 0/998 1667/3375 68 67.3 149 150 161 558 1.15e+03 0.00108 8.69e-05 81 0 1 81 0.618 + 0/998 1668/3375 68 67.3 149 150 161 558 1.15e+03 0.00108 8.71e-05 105 1 1 104 0.599 + 0/998 1669/3375 68 67.3 149 150 161 558 1.15e+03 0.00109 8.74e-05 65 1 2 64 0.603 + 0/998 1670/3375 68 67.3 149 150 161 558 1.15e+03 0.00108 8.73e-05 72 0 17 71 0.604 + 0/998 1671/3375 68 67.3 149 150 161 558 1.15e+03 0.00109 8.76e-05 98 1 14 96 0.599 + 0/998 1672/3375 68 67.3 148 150 161 558 1.15e+03 0.00109 8.85e-05 67 3 15 64 0.615 + 0/998 1673/3375 68 67.3 148 150 161 558 1.15e+03 0.00109 8.84e-05 96 0 5 96 0.606 + 0/998 1674/3375 68 67.3 149 150 161 558 1.15e+03 0.00109 8.86e-05 114 1 19 112 0.63 + 0/998 1675/3375 68 67.3 149 150 161 558 1.15e+03 0.00109 8.85e-05 87 0 12 87 0.624 + 0/998 1676/3375 68 67.4 149 150 161 558 1.15e+03 0.00109 8.85e-05 96 0 11 96 0.608 + 0/998 1677/3375 68 67.4 148 150 161 558 1.15e+03 0.00109 8.84e-05 84 0 19 84 0.608 + 0/998 1678/3375 68 67.4 149 150 161 558 1.15e+03 0.00111 9.05e-05 123 7 34 109 0.651 + 0/998 1679/3375 68 67.4 149 150 161 558 1.15e+03 0.00111 9.04e-05 84 0 16 84 0.598 + 0/998 1680/3375 68 67.4 149 150 161 558 1.15e+03 0.0011 9.03e-05 110 0 19 109 0.608 + 0/998 1681/3375 68 67.4 149 150 161 558 1.15e+03 0.0011 9.03e-05 108 0 7 108 0.6 + 0/998 1682/3375 68 67.4 149 150 161 558 1.15e+03 0.00113 9.23e-05 88 2 104 82 0.616 + 0/998 1683/3375 68.1 67.4 149 150 161 558 1.15e+03 0.00113 9.22e-05 111 0 22 109 0.617 + 0/998 1684/3375 68 67.4 149 150 161 558 1.15e+03 0.00113 9.22e-05 51 0 9 51 0.615 + 0/998 1685/3375 68 67.4 148 150 161 558 1.15e+03 0.00113 9.22e-05 49 0 19 46 0.596 + 0/998 1686/3375 68 67.4 148 150 161 558 1.15e+03 0.00112 9.22e-05 98 0 7 98 0.625 + 0/998 1687/3375 68 67.4 148 150 161 558 1.15e+03 0.00113 9.24e-05 90 1 20 87 0.614 + 0/998 1688/3375 68 67.4 148 150 161 558 1.15e+03 0.00114 9.41e-05 68 6 65 59 0.604 + 0/998 1689/3375 68 67.4 148 150 161 558 1.15e+03 0.00114 9.43e-05 80 1 36 77 0.617 + 0/998 1690/3375 68 67.3 148 150 161 558 1.15e+03 0.00114 9.46e-05 53 1 7 52 0.603 + 0/998 1691/3375 68 67.3 148 150 161 558 1.15e+03 0.00114 9.54e-05 112 3 16 106 0.607 + 0/998 1692/3375 68 67.3 148 150 161 558 1.15e+03 0.00114 9.57e-05 73 1 34 72 0.616 + 0/998 1693/3375 68 67.3 148 150 161 558 1.15e+03 0.00114 9.59e-05 63 1 51 61 0.62 + 0/998 1694/3375 68 67.4 148 150 161 558 1.15e+03 0.00114 9.58e-05 120 0 3 120 0.63 + 0/998 1695/3375 68 67.3 148 150 161 558 1.15e+03 0.00114 9.58e-05 55 0 10 55 0.585 + 0/998 1696/3375 68 67.3 148 150 161 558 1.15e+03 0.00114 9.58e-05 71 0 31 70 0.61 + 0/998 1697/3375 68 67.3 148 150 161 558 1.15e+03 0.00111 9.58e-05 57 0 43 55 0.608 + 0/998 1698/3375 68 67.3 148 150 161 558 1.15e+03 0.00111 9.65e-05 115 3 70 110 0.606 + 0/998 1699/3375 68 67.3 148 150 161 558 1.15e+03 0.00111 9.65e-05 96 0 28 93 0.611 + 0/998 1700/3375 68 67.3 148 150 161 558 1.15e+03 0.00111 9.67e-05 82 1 17 79 0.6 + 0/998 1701/3375 68 67.3 148 150 161 558 1.15e+03 0.00114 9.84e-05 83 1 19 82 0.616 + 0/998 1702/3375 68 67.3 148 150 161 558 1.15e+03 0.00115 9.92e-05 107 3 31 101 0.594 + 0/998 1703/3375 68 67.3 148 150 161 558 1.15e+03 0.00115 9.92e-05 47 0 29 46 0.605 + 0/998 1704/3375 68 67.3 148 150 161 558 1.15e+03 0.00115 9.92e-05 92 0 15 90 0.607 + 0/998 1705/3375 68 67.3 148 150 161 558 1.15e+03 0.00114 9.91e-05 100 0 48 100 0.612 + 0/998 1706/3375 68 67.3 148 150 161 558 1.15e+03 0.00114 0.0001 99 3 142 94 0.616 + 0/998 1707/3375 68 67.4 148 150 161 558 1.15e+03 0.00114 0.0001 131 1 20 130 0.609 + 0/998 1708/3375 68 67.3 148 150 161 558 1.15e+03 0.00113 0.0001 79 0 26 79 0.607 + 0/998 1709/3375 68 67.3 148 150 161 558 1.15e+03 0.00113 0.0001 69 0 1 69 0.59 + 0/998 1710/3375 68 67.3 148 150 161 558 1.15e+03 0.00113 0.000101 61 2 45 59 0.615 + 0/998 1711/3375 68 67.3 148 150 161 558 1.15e+03 0.00114 0.000101 104 1 12 103 0.608 + 0/998 1712/3375 68 67.3 148 150 161 558 1.15e+03 0.00115 0.000102 102 4 11 96 0.608 + 0/998 1713/3375 68 67.4 148 150 161 558 1.15e+03 0.00115 0.000102 84 0 4 84 0.596 + 0/998 1714/3375 68 67.3 148 150 161 558 1.15e+03 0.00115 0.000102 56 1 21 52 0.611 + 0/998 1715/3375 68 67.4 148 150 161 558 1.15e+03 0.00115 0.000102 133 0 9 133 0.608 + 0/998 1716/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00114 0.000102 144 0 12 144 0.607 + 0/998 1717/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00114 0.000102 84 0 13 81 0.612 + 0/998 1718/3375 68 67.4 148 150 161 558 1.15e+03 0.00114 0.000102 59 0 15 59 0.611 + 0/998 1719/3375 68 67.4 148 150 161 558 1.15e+03 0.00114 0.000102 86 1 39 84 0.604 + 0/998 1720/3375 68 67.4 148 150 161 558 1.15e+03 0.00114 0.000102 58 0 8 58 0.591 + 0/998 1721/3375 68 67.4 148 150 161 558 1.15e+03 0.00114 0.000102 75 0 43 74 0.611 + 0/998 1722/3375 68 67.4 148 150 161 558 1.15e+03 0.00114 0.000102 115 1 3 113 0.618 + 0/998 1723/3375 68 67.4 148 150 161 558 1.15e+03 0.00114 0.000102 94 0 39 93 0.61 + 0/998 1724/3375 68 67.4 148 150 161 558 1.15e+03 0.00113 0.000102 62 0 12 62 0.615 + 0/998 1725/3375 68 67.4 148 150 161 558 1.15e+03 0.00113 0.000102 102 0 6 100 0.612 + 0/998 1726/3375 68 67.4 148 150 161 558 1.15e+03 0.00113 0.000102 58 0 6 58 0.594 + 0/998 1727/3375 68 67.4 148 150 161 558 1.15e+03 0.00113 0.000102 80 0 0 80 0.616 + 0/998 1728/3375 68 67.4 148 150 161 558 1.15e+03 0.00113 0.000102 92 0 21 92 0.603 + 0/998 1729/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00113 0.000102 111 0 11 110 0.608 + 0/998 1730/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00113 0.000102 104 0 4 103 0.601 + 0/998 1731/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00112 0.000102 88 0 50 88 0.594 + 0/998 1732/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00112 0.000102 103 0 8 103 0.603 + 0/998 1733/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00112 0.000102 127 0 7 127 0.601 + 0/998 1734/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00113 0.000102 71 1 12 69 0.621 + 0/998 1735/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00112 0.000102 82 0 4 82 0.61 + 0/998 1736/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00112 0.000102 97 0 19 96 0.601 + 0/998 1737/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00113 0.000102 75 1 10 74 0.603 + 0/998 1738/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00112 0.000102 43 0 27 43 0.601 + 0/998 1739/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00112 0.000102 58 1 17 57 0.599 + 0/998 1740/3375 68 67.3 148 149 160 558 1.15e+03 0.00112 0.000102 56 0 30 55 0.599 + 0/998 1741/3375 68 67.3 148 149 160 558 1.15e+03 0.00112 0.000102 98 1 24 94 0.614 + 0/998 1742/3375 68 67.3 148 149 160 558 1.15e+03 0.00112 0.000103 40 1 12 38 0.577 + 0/998 1743/3375 68 67.3 148 149 160 557 1.15e+03 0.00112 0.000103 40 0 32 40 0.592 + 0/998 1744/3375 68 67.3 148 149 160 557 1.15e+03 0.00113 0.000103 99 3 31 95 0.595 + 0/998 1745/3375 68 67.3 148 149 160 558 1.15e+03 0.00112 0.000103 104 0 74 104 0.597 + 0/998 1746/3375 68 67.3 148 149 160 558 1.15e+03 0.00111 0.000105 72 5 226 62 0.604 + 0/998 1747/3375 68 67.3 148 149 160 558 1.15e+03 0.00111 0.000105 140 1 24 135 0.605 + 0/998 1748/3375 68 67.3 148 149 160 557 1.15e+03 0.00111 0.000105 60 2 81 53 0.622 + 0/998 1749/3375 68 67.3 148 149 160 558 1.15e+03 0.00111 0.000106 109 1 17 105 0.609 + 0/998 1750/3375 68.1 67.4 148 149 160 558 1.15e+03 0.00111 0.000107 123 5 46 115 0.607 + 0/998 1751/3375 68.1 67.4 148 149 160 558 1.15e+03 0.00111 0.000107 92 0 0 92 0.598 + 0/998 1752/3375 68 67.3 148 149 160 558 1.15e+03 0.00111 0.000107 65 0 34 64 0.595 + 0/998 1753/3375 68 67.3 148 149 160 557 1.15e+03 0.00111 0.000107 49 1 65 48 0.601 + 0/998 1754/3375 68 67.3 148 149 160 558 1.15e+03 0.00111 0.000108 107 3 34 99 0.605 + 0/998 1755/3375 68.1 67.4 148 149 160 558 1.15e+03 0.00111 0.000108 174 0 2 174 0.624 + 0/998 1756/3375 68.1 67.4 148 149 160 558 1.15e+03 0.00111 0.000108 75 0 1 75 0.581 + 0/998 1757/3375 68.1 67.4 148 149 160 558 1.15e+03 0.00112 0.000108 67 1 10 66 0.602 + 0/998 1758/3375 68.1 67.4 148 149 160 558 1.15e+03 0.00112 0.000109 109 4 34 98 0.601 + 0/998 1759/3375 68.1 67.4 148 149 160 558 1.15e+03 0.00112 0.00011 85 2 55 82 0.616 + 0/998 1760/3375 68.1 67.4 148 149 160 558 1.15e+03 0.00112 0.000109 91 0 1 91 0.604 + 0/998 1761/3375 68.1 67.4 148 149 160 558 1.15e+03 0.00112 0.000109 81 0 7 80 0.598 + 0/998 1762/3375 68.1 67.3 148 149 160 558 1.15e+03 0.0011 0.00011 81 2 32 72 0.603 + 0/998 1763/3375 68 67.3 148 149 160 557 1.15e+03 0.0011 0.00011 32 1 1 31 0.594 + 0/998 1764/3375 68.1 67.3 148 149 160 558 1.15e+03 0.0011 0.00011 139 0 7 139 0.611 + 0/998 1765/3375 68.1 67.4 148 149 160 558 1.15e+03 0.0011 0.00011 96 0 12 96 0.615 + 0/998 1766/3375 68.1 67.4 148 149 160 558 1.15e+03 0.0011 0.00011 93 1 0 92 0.596 + 0/998 1767/3375 68.1 67.3 148 149 160 558 1.15e+03 0.0011 0.00011 54 0 36 54 0.604 + 0/998 1768/3375 68.1 67.3 148 149 160 557 1.15e+03 0.00109 0.00011 74 0 23 74 0.6 + 0/998 1769/3375 68 67.3 148 149 160 557 1.15e+03 0.00109 0.00011 49 0 0 49 0.608 + 0/998 1770/3375 68 67.3 148 149 160 557 1.15e+03 0.00109 0.00011 55 1 18 52 0.584 + 0/998 1771/3375 68 67.3 148 149 160 557 1.15e+03 0.00109 0.000111 51 1 28 50 0.588 + 0/998 1772/3375 68 67.3 148 149 160 557 1.15e+03 0.00109 0.000111 67 0 2 67 0.603 + 0/998 1773/3375 68 67.3 148 149 160 557 1.15e+03 0.00109 0.000111 53 0 9 52 0.6 + 0/998 1774/3375 68 67.3 148 149 160 557 1.15e+03 0.00109 0.000111 51 1 13 50 0.604 + 0/998 1775/3375 68 67.3 148 149 160 557 1.15e+03 0.00109 0.000111 59 0 19 58 0.598 + 0/998 1776/3375 67.9 67.2 148 149 160 557 1.15e+03 0.00109 0.000111 68 0 1 67 0.594 + 0/998 1777/3375 67.9 67.2 148 149 160 556 1.15e+03 0.00106 0.000111 65 2 70 60 0.605 + 0/998 1778/3375 68 67.2 148 149 160 556 1.15e+03 0.00105 0.000112 98 2 184 85 0.622 + 0/998 1779/3375 68 67.2 148 149 160 557 1.15e+03 0.00104 0.000112 93 0 39 92 0.598 + 0/998 1780/3375 68 67.2 148 149 160 557 1.15e+03 0.00102 0.000112 104 2 8 100 0.595 + 0/998 1781/3375 68 67.3 148 149 160 557 1.15e+03 0.00102 0.000112 126 0 32 124 0.618 + 0/998 1782/3375 68 67.3 148 149 160 557 1.15e+03 0.00102 0.000112 69 0 4 69 0.614 + 0/998 1783/3375 68 67.3 148 149 160 557 1.15e+03 0.00102 0.000112 82 0 5 82 0.604 + 0/998 1784/3375 68 67.3 148 149 160 557 1.15e+03 0.000999 0.000112 99 1 12 96 0.622 + 0/998 1785/3375 68 67.3 148 149 160 557 1.15e+03 0.000999 0.000112 107 0 7 106 0.592 + 0/998 1786/3375 68 67.3 148 149 160 557 1.15e+03 0.00101 0.000113 141 4 24 135 0.658 + 0/998 1787/3375 68 67.3 148 149 160 557 1.15e+03 0.000985 0.000113 102 1 5 99 0.611 + 0/998 1788/3375 68 67.3 148 149 160 557 1.15e+03 0.000985 0.000113 129 0 2 129 0.601 + 0/998 1789/3375 68 67.3 148 149 160 557 1.15e+03 0.000985 0.000113 78 0 2 76 0.588 + 0/998 1790/3375 68 67.3 148 149 160 557 1.15e+03 0.000985 0.000113 81 0 1 81 0.61 + 0/998 1791/3375 68 67.3 148 149 160 557 1.15e+03 0.000985 0.000113 44 0 2 44 0.609 + 0/998 1792/3375 68 67.3 148 149 160 557 1.15e+03 0.000992 0.000114 75 4 7 69 0.613 + 0/998 1793/3375 68 67.3 148 149 160 557 1.15e+03 0.000992 0.000114 88 1 31 86 0.611 + 0/998 1794/3375 68 67.3 148 149 160 557 1.15e+03 0.000998 0.000115 116 5 52 110 0.61 + 0/998 1795/3375 68 67.3 148 149 160 557 1.15e+03 0.000998 0.000115 86 0 2 86 0.609 + 0/998 1796/3375 68 67.3 148 149 160 557 1.15e+03 0.000998 0.000115 72 0 13 71 0.608 + 0/998 1797/3375 68 67.3 148 149 160 557 1.15e+03 0.000997 0.000116 54 1 38 53 0.61 + 0/998 1798/3375 68 67.3 148 149 160 557 1.15e+03 0.000999 0.000116 98 2 14 93 0.603 + 0/998 1799/3375 68 67.3 148 149 160 557 1.15e+03 0.001 0.000117 71 2 16 67 0.598 + 0/998 1800/3375 68 67.3 148 149 160 557 1.15e+03 0.001 0.000117 81 0 1 81 0.59 + 0/998 1801/3375 68 67.3 148 149 160 557 1.15e+03 0.000999 0.000117 64 0 30 63 0.601 + 0/998 1802/3375 68 67.3 148 149 160 557 1.15e+03 0.001 0.000117 118 2 34 114 0.604 + 0/998 1803/3375 68 67.3 148 149 160 557 1.15e+03 0.000999 0.000117 51 0 23 51 0.6 + 0/998 1804/3375 68 67.3 148 149 160 556 1.15e+03 0.000998 0.000117 73 0 15 73 0.609 + 0/998 1805/3375 68 67.2 147 149 160 556 1.15e+03 0.00102 0.000119 63 1 74 61 0.592 + 0/998 1806/3375 68 67.2 147 149 160 556 1.15e+03 0.00102 0.000119 79 0 52 77 0.602 + 0/998 1807/3375 68 67.2 147 149 160 556 1.15e+03 0.00101 0.000119 95 3 86 88 0.6 + 0/998 1808/3375 67.9 67.2 147 149 159 556 1.15e+03 0.00101 0.000119 37 0 64 37 0.566 + 0/998 1809/3375 67.9 67.2 147 149 159 556 1.15e+03 0.001 0.00012 69 4 137 60 0.611 + 0/998 1810/3375 67.9 67.2 147 149 159 556 1.15e+03 0.001 0.00012 44 0 15 44 0.61 + 0/998 1811/3375 67.9 67.2 147 149 159 556 1.15e+03 0.000997 0.00012 58 0 43 55 0.598 + 0/998 1812/3375 67.9 67.2 147 149 159 556 1.15e+03 0.001 0.000121 112 4 18 106 0.619 + 0/998 1813/3375 67.9 67.2 147 149 159 556 1.15e+03 0.000998 0.000121 66 0 40 66 0.612 + 0/998 1814/3375 67.9 67.1 147 149 159 556 1.15e+03 0.000993 0.000121 33 0 56 32 0.593 + 0/998 1815/3375 67.9 67.2 147 149 159 556 1.15e+03 0.000993 0.000121 99 1 37 97 0.609 + 0/998 1816/3375 67.9 67.2 147 149 159 556 1.15e+03 0.000989 0.000121 85 0 28 83 0.597 + 0/998 1817/3375 67.9 67.2 147 149 159 556 1.15e+03 0.00104 0.000125 85 2 55 80 0.594 + 0/998 1818/3375 67.9 67.2 147 149 159 556 1.15e+03 0.00104 0.000126 87 4 38 83 0.596 + 0/998 1819/3375 67.9 67.2 147 148 159 556 1.15e+03 0.00104 0.000126 69 1 63 65 0.612 + 0/998 1820/3375 67.9 67.1 147 148 159 556 1.15e+03 0.00104 0.000126 55 0 17 55 0.605 + 0/998 1821/3375 67.9 67.1 147 148 159 555 1.15e+03 0.00103 0.000126 87 0 51 87 0.608 + 0/998 1822/3375 67.9 67.1 147 148 159 555 1.15e+03 0.00102 0.000126 60 0 56 60 0.605 + 0/998 1823/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00102 0.000126 57 0 27 57 0.612 + 0/998 1824/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00102 0.000126 97 0 16 97 0.593 + 0/998 1825/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00102 0.000126 71 1 15 69 0.606 + 0/998 1826/3375 67.9 67.1 147 148 159 555 1.14e+03 0.00102 0.000126 105 0 59 103 0.607 + 0/998 1827/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00102 0.000126 76 1 5 74 0.606 + 0/998 1828/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00102 0.000126 70 0 14 69 0.594 + 0/998 1829/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00102 0.000126 69 0 12 69 0.61 + 0/998 1830/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00102 0.000126 128 0 0 128 0.601 + 0/998 1831/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00102 0.000126 84 0 35 81 0.611 + 0/998 1832/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00102 0.000126 115 0 28 113 0.6 + 0/998 1833/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00101 0.000125 68 0 42 68 0.611 + 0/998 1834/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00101 0.000127 83 4 43 76 0.622 + 0/998 1835/3375 67.9 67.2 147 148 159 555 1.14e+03 0.00102 0.000127 153 1 6 150 0.612 + 0/998 1836/3375 67.9 67.1 147 148 159 555 1.14e+03 0.00101 0.000127 66 0 15 66 0.606 + 0/998 1837/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00101 0.000127 32 0 17 32 0.598 + 0/998 1838/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00101 0.000127 68 0 14 68 0.591 + 0/998 1839/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00101 0.000126 77 0 0 77 0.605 + 0/998 1840/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00101 0.000126 49 0 7 49 0.592 + 0/998 1841/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00101 0.000126 59 0 21 58 0.59 + 0/998 1842/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00101 0.000126 101 0 6 99 0.612 + 0/998 1843/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000989 0.000126 135 0 6 134 0.617 + 0/998 1844/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000988 0.000126 97 1 21 93 0.601 + 0/998 1845/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000985 0.000126 44 0 37 42 0.606 + 0/998 1846/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000984 0.000126 44 0 5 44 0.597 + 0/998 1847/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000991 0.000127 107 4 4 102 0.611 + 0/998 1848/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00099 0.000127 78 0 14 78 0.602 + 0/998 1849/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000991 0.000128 45 1 4 44 0.595 + 0/998 1850/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000991 0.000127 91 0 11 90 0.619 + 0/998 1851/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000992 0.000128 82 1 8 80 0.609 + 0/998 1852/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000991 0.000128 60 0 11 59 0.603 + 0/998 1853/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000992 0.000128 85 1 12 84 0.594 + 0/998 1854/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000992 0.000128 79 0 4 79 0.609 + 0/998 1855/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000991 0.000128 87 0 15 86 0.599 + 0/998 1856/3375 67.8 67 147 148 159 555 1.14e+03 0.000992 0.000128 59 1 7 58 0.597 + 0/998 1857/3375 67.8 67 147 148 159 555 1.14e+03 0.000993 0.000128 76 1 2 74 0.601 + 0/998 1858/3375 67.8 67 147 148 159 554 1.14e+03 0.000998 0.000129 74 3 0 71 0.579 + 0/998 1859/3375 67.8 67 147 148 159 555 1.14e+03 0.000996 0.000129 102 1 61 101 0.599 + 0/998 1860/3375 67.8 67 147 148 159 555 1.14e+03 0.000995 0.000129 87 0 7 86 0.604 + 0/998 1861/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000996 0.000129 137 1 7 135 0.612 + 0/998 1862/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000995 0.000129 84 0 18 84 0.622 + 0/998 1863/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000992 0.000129 80 0 56 76 0.609 + 0/998 1864/3375 67.8 67 147 148 159 554 1.14e+03 0.000992 0.000129 44 0 12 42 0.588 + 0/998 1865/3375 67.8 67 147 148 159 554 1.14e+03 0.00099 0.000129 83 0 18 83 0.609 + 0/998 1866/3375 67.7 67 147 148 158 554 1.14e+03 0.00101 0.00013 55 1 17 54 0.599 + 0/998 1867/3375 67.8 67 147 148 158 554 1.14e+03 0.00101 0.00013 80 0 29 80 0.61 + 0/998 1868/3375 67.7 67 147 148 158 554 1.14e+03 0.00102 0.000131 68 3 18 64 0.616 + 0/998 1869/3375 67.7 67 147 148 158 554 1.14e+03 0.00102 0.000131 62 0 16 62 0.614 + 0/998 1870/3375 67.7 67 147 148 158 554 1.14e+03 0.00101 0.000131 96 0 105 88 0.602 + 0/998 1871/3375 67.8 67 147 148 158 554 1.14e+03 0.001 0.000131 143 0 61 141 0.593 + 0/998 1872/3375 67.8 67 147 148 158 554 1.14e+03 0.000997 0.000131 74 0 57 74 0.617 + 0/998 1873/3375 67.8 67 147 148 158 554 1.14e+03 0.000996 0.000131 91 0 20 91 0.58 + 0/998 1874/3375 67.8 67 147 148 158 554 1.14e+03 0.000991 0.000131 76 0 43 76 0.599 + 0/998 1875/3375 67.8 67 147 148 158 554 1.14e+03 0.000991 0.000131 85 3 67 77 0.607 + 0/998 1876/3375 67.7 67 147 148 158 554 1.14e+03 0.000964 0.000132 45 1 151 41 0.598 + 0/998 1877/3375 67.8 67 147 148 158 554 1.14e+03 0.000966 0.000132 114 2 35 106 0.617 + 0/998 1878/3375 67.8 67 147 148 158 554 1.14e+03 0.000964 0.000133 81 2 41 77 0.611 + 0/998 1879/3375 67.8 67 147 148 158 554 1.14e+03 0.000963 0.000133 124 1 37 121 0.601 + 0/998 1880/3375 67.8 67 147 148 158 554 1.14e+03 0.000959 0.000133 102 2 62 96 0.598 + 0/998 1881/3375 67.8 67 147 148 158 554 1.14e+03 0.000936 0.000134 88 4 163 80 0.608 + 0/998 1882/3375 67.8 67 147 148 158 554 1.14e+03 0.000935 0.000134 73 0 23 73 0.617 + 0/998 1883/3375 67.8 67 147 148 158 554 1.14e+03 0.000918 0.000135 100 3 29 95 0.613 + 0/998 1884/3375 67.8 67 147 148 158 554 1.14e+03 0.000933 0.000137 65 3 98 60 0.61 + 0/998 1885/3375 67.8 67 147 148 158 554 1.14e+03 0.000933 0.000137 116 1 15 113 0.604 + 0/998 1886/3375 67.8 67 147 148 158 554 1.14e+03 0.000934 0.000137 99 1 11 98 0.615 + 0/998 1887/3375 67.8 67 146 147 158 554 1.14e+03 0.000934 0.000138 49 1 28 48 0.582 + 0/998 1888/3375 67.8 67 147 147 158 554 1.14e+03 0.000934 0.000137 76 0 4 76 0.606 + 0/998 1889/3375 67.8 67 146 147 158 554 1.14e+03 0.000914 0.000137 72 0 23 68 0.61 + 0/998 1890/3375 67.7 67 146 147 158 554 1.14e+03 0.000915 0.000138 70 1 11 69 0.589 + 0/998 1891/3375 67.7 67 146 147 158 554 1.14e+03 0.000896 0.000137 88 0 18 84 0.578 + 0/998 1892/3375 67.7 67 146 147 158 554 1.14e+03 0.000896 0.000137 78 0 14 76 0.596 + 0/998 1893/3375 67.7 67 146 147 158 554 1.14e+03 0.000894 0.000138 103 1 18 99 0.61 + 0/998 1894/3375 67.7 67 146 147 158 554 1.14e+03 0.000894 0.000138 50 0 16 50 0.605 + 0/998 1895/3375 67.8 67 146 147 158 554 1.14e+03 0.000893 0.000137 146 0 5 146 0.619 + 0/998 1896/3375 67.8 67 146 147 158 554 1.14e+03 0.000893 0.000137 77 0 6 77 0.618 + 0/998 1897/3375 67.7 67 146 147 158 554 1.14e+03 0.000893 0.000137 77 1 21 73 0.605 + 0/998 1898/3375 67.7 67 146 147 158 554 1.14e+03 0.000893 0.000137 54 0 7 54 0.598 + 0/998 1899/3375 67.7 67 146 147 158 554 1.14e+03 0.000893 0.000137 82 0 2 81 0.605 + 0/998 1900/3375 67.7 67 146 147 158 554 1.14e+03 0.000892 0.000137 95 0 2 95 0.604 + 0/998 1901/3375 67.7 67 146 147 158 554 1.14e+03 0.000895 0.000138 89 3 15 84 0.617 + 0/998 1902/3375 67.7 67 146 147 158 554 1.14e+03 0.000895 0.000138 29 0 1 29 0.598 + 0/998 1903/3375 67.7 67 146 147 158 554 1.14e+03 0.000895 0.000138 105 0 0 105 0.603 + 0/998 1904/3375 67.7 67 146 147 158 554 1.14e+03 0.000895 0.000138 74 0 4 74 0.607 + 0/998 1905/3375 67.7 67 146 147 158 554 1.14e+03 0.000894 0.000138 115 0 17 114 0.596 + 0/998 1906/3375 67.7 67 146 147 158 554 1.14e+03 0.000894 0.000138 69 0 2 69 0.604 + 0/998 1907/3375 67.7 67 146 147 158 554 1.14e+03 0.000893 0.000138 104 0 20 102 0.599 + 0/998 1908/3375 67.7 67 146 147 158 554 1.14e+03 0.000894 0.000138 111 1 5 110 0.604 + 0/998 1909/3375 67.7 67 146 147 158 554 1.14e+03 0.000877 0.000138 73 0 11 68 0.61 + 0/998 1910/3375 67.7 67 146 147 158 554 1.14e+03 0.000912 0.000141 113 3 29 106 0.602 + 0/998 1911/3375 67.7 67 146 147 158 554 1.14e+03 0.000912 0.000141 87 0 3 87 0.602 + 0/998 1912/3375 67.7 67 146 147 158 554 1.14e+03 0.000912 0.000141 39 0 6 39 0.611 + 0/998 1913/3375 67.7 67 146 147 158 554 1.14e+03 0.000929 0.000142 126 1 5 125 0.611 + 0/998 1914/3375 67.7 67 146 147 158 554 1.14e+03 0.000926 0.000142 79 0 13 79 0.613 + 0/998 1915/3375 67.7 67 146 147 158 554 1.14e+03 0.000926 0.000142 90 0 13 90 0.601 + 0/998 1916/3375 67.7 67 146 147 158 554 1.14e+03 0.000943 0.000144 40 1 9 39 0.589 + 0/998 1917/3375 67.7 67 146 147 158 554 1.14e+03 0.000938 0.000144 86 0 30 86 0.6 + 0/998 1918/3375 67.7 67 146 147 158 554 1.14e+03 0.000952 0.000145 74 1 23 73 0.603 + 0/998 1919/3375 67.7 67 146 147 158 554 1.14e+03 0.000952 0.000146 50 1 21 49 0.619 + 0/998 1920/3375 67.7 66.9 146 147 158 554 1.14e+03 0.000935 0.000146 62 0 94 56 0.598 + 0/998 1921/3375 67.7 66.9 146 147 158 554 1.14e+03 0.000935 0.000145 92 0 14 91 0.599 + 0/998 1922/3375 67.7 66.9 146 147 158 553 1.14e+03 0.000932 0.000145 64 0 13 64 0.612 + 0/998 1923/3375 67.7 66.9 146 147 158 553 1.14e+03 0.000932 0.000146 93 1 12 91 0.606 + 0/998 1924/3375 67.6 66.9 146 147 158 553 1.14e+03 0.000926 0.000146 42 0 30 42 0.599 + 0/998 1925/3375 67.7 66.9 146 147 158 553 1.14e+03 0.000928 0.000146 96 2 19 94 0.6 + 0/998 1926/3375 67.7 66.9 146 147 158 553 1.14e+03 0.000924 0.000146 99 0 38 99 0.604 + 0/998 1927/3375 67.7 66.9 146 147 158 554 1.14e+03 0.000923 0.000146 76 0 5 75 0.588 + 0/998 1928/3375 67.7 66.9 146 147 158 553 1.14e+03 0.000923 0.000146 80 0 5 80 0.6 + 0/998 1929/3375 67.7 67 146 147 158 554 1.14e+03 0.000921 0.000146 134 0 22 132 0.622 + 0/998 1930/3375 67.7 67 146 147 158 554 1.14e+03 0.000922 0.000146 95 1 14 92 0.604 + 0/998 1931/3375 67.7 67 146 147 158 554 1.14e+03 0.00092 0.000146 131 0 21 129 0.616 + 0/998 1932/3375 67.7 67 146 147 158 554 1.14e+03 0.000914 0.000146 49 0 50 44 0.594 + 0/998 1933/3375 67.7 67 146 147 158 554 1.14e+03 0.00091 0.000146 78 1 68 72 0.631 + 0/998 1934/3375 67.7 67 146 147 158 554 1.14e+03 0.000911 0.000146 128 1 17 122 0.615 + 0/998 1935/3375 67.7 67 146 147 158 554 1.14e+03 0.000943 0.00015 141 6 68 131 0.622 + 0/998 1936/3375 67.7 67 146 147 158 554 1.14e+03 0.000943 0.00015 78 1 25 77 0.596 + 0/998 1937/3375 67.7 67 146 147 158 553 1.14e+03 0.000922 0.00015 44 0 40 43 0.604 + 0/998 1938/3375 67.7 67 146 147 158 554 1.14e+03 0.000922 0.00015 127 0 16 127 0.599 + 0/998 1939/3375 67.7 67 146 147 158 554 1.14e+03 0.000922 0.00015 71 0 7 70 0.603 + 0/998 1940/3375 67.7 67 146 147 158 554 1.14e+03 0.000921 0.00015 64 1 27 63 0.611 + 0/998 1941/3375 67.7 67 146 147 158 554 1.14e+03 0.000921 0.00015 107 0 0 107 0.603 + 0/998 1942/3375 67.7 67 146 147 158 554 1.14e+03 0.000921 0.00015 42 0 7 42 0.598 + 0/998 1943/3375 67.7 67 146 147 158 554 1.14e+03 0.00092 0.00015 78 0 15 78 0.617 + 0/998 1944/3375 67.7 67 146 147 158 554 1.14e+03 0.00092 0.00015 93 0 0 93 0.616 + 0/998 1945/3375 67.7 67 146 147 158 554 1.14e+03 0.000919 0.00015 84 1 21 82 0.599 + 0/998 1946/3375 67.7 67 146 147 158 554 1.14e+03 0.000919 0.00015 98 0 7 97 0.614 + 0/998 1947/3375 67.7 67 146 147 158 553 1.14e+03 0.000918 0.00015 55 0 4 55 0.6 + 0/998 1948/3375 67.7 67 146 147 158 553 1.14e+03 0.000918 0.00015 124 0 3 124 0.595 + 0/998 1949/3375 67.7 67 146 147 158 553 1.14e+03 0.000918 0.00015 91 1 21 85 0.594 + 0/998 1950/3375 67.7 67 146 147 158 553 1.14e+03 0.000919 0.00015 69 1 6 68 0.603 + 0/998 1951/3375 67.7 67 146 147 158 553 1.14e+03 0.000917 0.00015 75 0 13 75 0.592 + 0/998 1952/3375 67.7 67 146 147 157 553 1.14e+03 0.000914 0.00015 58 0 41 58 0.606 + 0/998 1953/3375 67.7 67 146 147 157 553 1.14e+03 0.000916 0.00015 82 2 15 79 0.599 + 0/998 1954/3375 67.7 67 146 147 157 553 1.14e+03 0.000915 0.00015 86 0 7 86 0.599 + 0/998 1955/3375 67.7 67 146 147 157 553 1.14e+03 0.000914 0.00015 88 0 11 88 0.609 + 0/998 1956/3375 67.7 67 146 147 157 553 1.14e+03 0.000907 0.00015 43 1 42 42 0.597 + 0/998 1957/3375 67.7 67 146 147 157 553 1.14e+03 0.000906 0.00015 125 0 12 124 0.602 + 0/998 1958/3375 67.7 67 146 147 157 553 1.14e+03 0.000906 0.00015 166 0 2 165 0.6 + 0/998 1959/3375 67.7 67 146 147 157 553 1.14e+03 0.000906 0.00015 70 0 14 69 0.618 + 0/998 1960/3375 67.7 67 146 147 157 553 1.14e+03 0.000905 0.00015 82 1 20 79 0.605 + 0/998 1961/3375 67.7 67 146 147 157 553 1.14e+03 0.000901 0.00015 75 0 33 73 0.616 + 0/998 1962/3375 67.7 67 146 147 157 553 1.14e+03 0.000898 0.00015 69 0 56 69 0.586 + 0/998 1963/3375 67.7 67 146 147 157 553 1.14e+03 0.000898 0.00015 137 0 5 137 0.626 + 0/998 1964/3375 67.7 67 146 147 157 553 1.14e+03 0.000897 0.00015 50 0 13 49 0.586 + 0/998 1965/3375 67.7 67 146 147 157 553 1.14e+03 0.000896 0.00015 104 1 54 100 0.613 + 0/998 1966/3375 67.7 67 146 147 157 553 1.14e+03 0.000896 0.00015 105 0 11 105 0.597 + 0/998 1967/3375 67.7 67 146 147 157 553 1.14e+03 0.000934 0.000154 102 3 41 98 0.594 + 0/998 1968/3375 67.7 67 146 147 157 553 1.14e+03 0.000931 0.000154 61 0 66 60 0.599 + 0/998 1969/3375 67.7 67 146 147 157 553 1.14e+03 0.00093 0.000155 152 4 92 141 0.608 + 0/998 1970/3375 67.7 67 146 147 157 553 1.14e+03 0.00092 0.000156 73 2 104 71 0.607 + 0/998 1971/3375 67.7 67 146 147 157 553 1.14e+03 0.00092 0.000157 85 4 113 80 0.615 + 0/998 1972/3375 67.7 67 146 147 157 553 1.14e+03 0.000921 0.000157 47 2 38 43 0.603 + 0/998 1973/3375 67.7 67 146 146 157 553 1.14e+03 0.00092 0.000157 64 0 23 64 0.602 + 0/998 1974/3375 67.7 67 146 147 157 553 1.14e+03 0.00092 0.000157 135 0 18 134 0.621 + 0/998 1975/3375 67.7 67 146 146 157 553 1.14e+03 0.000918 0.000157 71 1 42 65 0.601 + 0/998 1976/3375 67.7 67 146 147 157 554 1.14e+03 0.000917 0.000157 131 0 25 131 0.616 + 0/998 1977/3375 67.7 67 146 147 157 553 1.14e+03 0.000914 0.000157 74 0 67 74 0.595 + 0/998 1978/3375 67.7 67 146 147 157 553 1.14e+03 0.000917 0.000158 72 3 31 69 0.608 + 0/998 1979/3375 67.7 67 146 146 157 553 1.14e+03 0.000916 0.000158 57 0 25 57 0.607 + 0/998 1980/3375 67.7 67 146 146 157 553 1.14e+03 0.000927 0.00016 111 11 56 98 0.608 + 0/998 1981/3375 67.7 67 146 146 157 553 1.14e+03 0.000927 0.00016 99 1 20 95 0.611 + 0/998 1982/3375 67.7 67 146 146 157 553 1.14e+03 0.000926 0.00016 61 0 30 60 0.592 + 0/998 1983/3375 67.7 67 146 146 157 553 1.14e+03 0.000927 0.000161 55 1 9 54 0.598 + 0/998 1984/3375 67.7 67 146 146 157 553 1.14e+03 0.000927 0.000161 56 1 14 54 0.617 + 0/998 1985/3375 67.7 67 146 146 157 553 1.14e+03 0.000926 0.000161 105 0 29 102 0.619 + 0/998 1986/3375 67.7 67 146 146 157 553 1.14e+03 0.000925 0.000161 94 1 48 89 0.588 + 0/998 1987/3375 67.7 67 146 146 157 553 1.14e+03 0.000924 0.000161 89 0 28 89 0.61 + 0/998 1988/3375 67.7 67 146 146 157 553 1.14e+03 0.000927 0.000162 92 4 44 81 0.609 + 0/998 1989/3375 67.7 67 146 146 157 553 1.14e+03 0.000926 0.000162 91 1 48 85 0.6 + 0/998 1990/3375 67.7 67 146 146 157 553 1.14e+03 0.000926 0.000162 68 0 18 68 0.591 + 0/998 1991/3375 67.7 67 146 146 157 553 1.14e+03 0.000924 0.000162 83 0 50 78 0.598 + 0/998 1992/3375 67.6 66.9 146 146 157 553 1.14e+03 0.000924 0.000162 50 2 46 46 0.595 + 0/998 1993/3375 67.6 66.9 146 146 157 553 1.14e+03 0.000924 0.000162 84 0 7 84 0.595 + 0/998 1994/3375 67.6 66.9 146 146 157 553 1.14e+03 0.000923 0.000162 55 0 32 54 0.603 + 0/998 1995/3375 67.6 66.9 146 146 157 553 1.14e+03 0.000922 0.000162 62 0 19 60 0.601 + 0/998 1996/3375 67.6 66.9 146 146 157 552 1.14e+03 0.000918 0.000162 60 0 59 60 0.605 + 0/998 1997/3375 67.6 66.9 146 146 157 552 1.14e+03 0.00092 0.000163 82 4 80 77 0.607 + 0/998 1998/3375 67.6 66.9 146 146 157 552 1.14e+03 0.000919 0.000163 65 3 118 61 0.594 + 0/998 1999/3375 67.6 66.9 146 146 157 552 1.14e+03 0.000918 0.000163 52 0 26 52 0.588 + 0/998 2000/3375 67.6 66.9 146 146 157 552 1.14e+03 0.000914 0.000163 52 0 47 52 0.603 + 0/998 2001/3375 67.6 66.9 145 146 157 552 1.14e+03 0.000917 0.000165 98 7 123 85 0.606 + 0/998 2002/3375 67.6 66.9 146 146 157 552 1.14e+03 0.000917 0.000165 92 1 48 87 0.605 + 0/998 2003/3375 67.6 66.9 145 146 157 552 1.13e+03 0.000918 0.000166 65 2 38 63 0.614 + 0/998 2004/3375 67.6 66.9 146 146 157 552 1.14e+03 0.000918 0.000166 122 1 13 121 0.629 + 0/998 2005/3375 67.6 66.9 146 146 157 552 1.14e+03 0.000918 0.000166 103 0 4 103 0.6 + 0/998 2006/3375 67.6 66.9 146 146 157 552 1.14e+03 0.000917 0.000166 82 1 40 80 0.594 + 0/998 2007/3375 67.6 66.9 145 146 157 552 1.13e+03 0.000917 0.000166 48 0 12 48 0.603 + 0/998 2008/3375 67.6 66.9 145 146 157 552 1.13e+03 0.000916 0.000166 70 0 26 70 0.584 + 0/998 2009/3375 67.6 66.9 145 146 157 552 1.13e+03 0.000916 0.000166 71 1 22 69 0.61 + 0/998 2010/3375 67.6 66.9 145 146 157 552 1.13e+03 0.000915 0.000166 65 0 33 65 0.598 + 0/998 2011/3375 67.6 66.9 145 146 157 552 1.13e+03 0.000917 0.000166 94 2 26 87 0.607 + 0/998 2012/3375 67.6 66.9 145 146 157 552 1.13e+03 0.000916 0.000166 65 0 13 65 0.622 + 0/998 2013/3375 67.6 66.9 145 146 157 552 1.13e+03 0.000914 0.000166 68 0 50 68 0.608 + 0/998 2014/3375 67.6 66.9 145 146 157 552 1.13e+03 0.000914 0.000166 102 0 4 102 0.606 + 0/998 2015/3375 67.5 66.9 145 146 157 552 1.13e+03 0.000912 0.000166 46 0 42 45 0.602 + 0/998 2016/3375 67.5 66.8 145 146 157 552 1.13e+03 0.000914 0.000167 74 2 11 71 0.584 + 0/998 2017/3375 67.5 66.8 145 146 157 552 1.13e+03 0.000913 0.000167 78 0 34 77 0.617 + 0/998 2018/3375 67.5 66.8 145 146 157 552 1.13e+03 0.000912 0.000166 83 0 2 83 0.606 + 0/998 2019/3375 67.5 66.8 145 146 157 552 1.13e+03 0.000912 0.000166 53 0 20 53 0.602 + 0/998 2020/3375 67.5 66.8 145 146 157 552 1.13e+03 0.000911 0.000166 117 0 18 117 0.609 + 0/998 2021/3375 67.5 66.8 145 146 157 552 1.13e+03 0.000904 0.000168 72 2 70 69 0.616 + 0/998 2022/3375 67.5 66.8 145 146 157 552 1.13e+03 0.000903 0.000168 74 0 18 73 0.587 + 0/998 2023/3375 67.5 66.8 145 146 156 552 1.13e+03 0.000902 0.000168 36 0 32 35 0.597 + 0/998 2024/3375 67.5 66.8 145 146 156 552 1.13e+03 0.000904 0.000168 84 2 10 82 0.62 + 0/998 2025/3375 67.5 66.8 145 146 156 552 1.13e+03 0.000905 0.000169 96 3 36 93 0.617 + 0/998 2026/3375 67.5 66.8 145 146 156 552 1.13e+03 0.000905 0.000169 114 0 4 114 0.607 + 0/998 2027/3375 67.5 66.8 145 146 156 551 1.13e+03 0.000902 0.000169 71 0 87 70 0.595 + 0/998 2028/3375 67.5 66.8 145 146 156 551 1.13e+03 0.000901 0.000169 85 0 19 83 0.605 + 0/998 2029/3375 67.5 66.8 145 146 156 551 1.13e+03 0.000898 0.000169 47 0 65 47 0.605 + 0/998 2030/3375 67.5 66.8 145 145 156 551 1.13e+03 0.000896 0.000169 103 1 98 99 0.601 + 0/998 2031/3375 67.5 66.8 145 146 156 551 1.13e+03 0.000896 0.000169 103 2 59 96 0.605 + 0/998 2032/3375 67.5 66.8 145 146 156 551 1.13e+03 0.000896 0.00017 126 6 132 115 0.604 + 0/998 2033/3375 67.5 66.8 145 145 156 551 1.13e+03 0.000934 0.000178 84 16 333 64 0.611 + 0/998 2034/3375 67.5 66.8 145 145 156 551 1.13e+03 0.000927 0.000178 103 0 125 99 0.597 + 0/998 2035/3375 67.5 66.8 145 146 156 551 1.13e+03 0.0191 0.000188 127 4 41 119 0.599 + 0/998 2036/3375 67.5 66.8 145 146 156 551 1.13e+03 0.0191 0.000188 66 1 62 65 0.609 + 0/998 2037/3375 67.5 66.8 145 146 156 551 1.13e+03 0.0191 0.000188 123 1 30 119 0.598 + 0/998 2038/3375 67.5 66.8 145 146 156 551 1.13e+03 0.0191 0.000189 76 2 54 72 0.607 + 0/998 2039/3375 67.5 66.8 145 146 156 551 1.13e+03 0.0191 0.000189 79 4 48 75 0.607 + 0/998 2040/3375 67.5 66.8 145 146 156 551 1.13e+03 0.0191 0.00019 83 1 20 80 0.604 + 0/998 2041/3375 67.5 66.8 145 146 156 551 1.13e+03 0.0191 0.00019 88 1 7 87 0.61 + 0/998 2042/3375 67.5 66.9 145 146 156 551 1.13e+03 0.0191 0.00019 97 0 30 97 0.614 + 0/998 2043/3375 67.5 66.9 145 146 156 551 1.13e+03 0.0191 0.00019 92 1 44 88 0.613 + 0/998 2044/3375 67.5 66.9 145 146 156 551 1.13e+03 0.0191 0.00019 91 1 6 90 0.587 + 0/998 2045/3375 67.5 66.9 145 146 156 551 1.13e+03 0.0191 0.00019 80 0 18 80 0.61 + 0/998 2046/3375 67.5 66.9 145 146 156 551 1.13e+03 0.0191 0.00019 73 0 2 73 0.592 + 0/998 2047/3375 67.5 66.8 145 145 156 551 1.13e+03 0.0191 0.000191 60 4 30 56 0.613 + 0/998 2048/3375 67.5 66.8 145 145 156 551 1.13e+03 0.0191 0.000191 78 0 10 75 0.61 + 0/998 2049/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000191 116 2 79 104 0.617 + 0/998 2050/3375 67.5 66.9 145 146 156 551 1.13e+03 0.0191 0.000191 125 1 47 117 0.611 + 0/998 2051/3375 67.5 66.9 145 146 156 551 1.13e+03 0.0191 0.000191 97 0 34 96 0.622 + 0/998 2052/3375 67.5 66.9 145 145 156 552 1.13e+03 0.0191 0.000191 94 0 2 93 0.606 + 0/998 2053/3375 67.5 66.9 145 145 156 552 1.13e+03 0.0191 0.000192 80 3 9 75 0.606 + 0/998 2054/3375 67.6 66.9 145 145 156 552 1.13e+03 0.0191 0.000192 92 1 8 89 0.596 + 0/998 2055/3375 67.6 66.9 145 145 156 552 1.13e+03 0.0191 0.000192 75 0 2 75 0.601 + 0/998 2056/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000192 46 0 5 46 0.602 + 0/998 2057/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000192 65 1 66 49 0.596 + 0/998 2058/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000193 58 4 42 50 0.599 + 0/998 2059/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000193 121 0 3 121 0.601 + 0/998 2060/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000192 86 0 6 83 0.596 + 0/998 2061/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000192 95 0 1 95 0.608 + 0/998 2062/3375 67.6 66.9 145 145 156 551 1.13e+03 0.0191 0.000194 105 2 5 103 0.617 + 0/998 2063/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000194 50 0 29 48 0.6 + 0/998 2064/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000194 77 1 10 75 0.598 + 0/998 2065/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000194 44 0 15 44 0.597 + 0/998 2066/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000194 128 0 2 128 0.613 + 0/998 2067/3375 67.6 66.9 145 145 156 551 1.13e+03 0.0191 0.000194 133 0 4 133 0.603 + 0/998 2068/3375 67.6 66.9 145 145 156 551 1.13e+03 0.0191 0.000195 83 5 51 76 0.605 + 0/998 2069/3375 67.6 66.9 145 145 156 551 1.13e+03 0.0191 0.000195 89 1 8 88 0.613 + 0/998 2070/3375 67.6 66.9 145 145 156 551 1.13e+03 0.0191 0.000195 88 1 5 87 0.605 + 0/998 2071/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000195 51 1 43 49 0.599 + 0/998 2072/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000196 59 2 14 55 0.61 + 0/998 2073/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000196 78 0 61 78 0.615 + 0/998 2074/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000197 78 6 80 67 0.598 + 0/998 2075/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000197 103 1 17 99 0.619 + 0/998 2076/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000197 82 1 15 80 0.601 + 0/998 2077/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000197 76 0 14 76 0.609 + 0/998 2078/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000197 107 0 30 104 0.589 + 0/998 2079/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000197 66 1 74 62 0.598 + 0/998 2080/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000198 108 3 38 103 0.617 + 0/998 2081/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000198 53 1 41 48 0.607 + 0/998 2082/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000198 97 0 3 97 0.602 + 0/998 2083/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000198 63 1 35 60 0.606 + 0/998 2084/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000199 72 3 73 68 0.605 + 0/998 2085/3375 67.5 66.8 145 145 156 551 1.13e+03 0.0191 0.000199 35 0 58 34 0.592 + 0/998 2086/3375 67.5 66.8 145 145 156 551 1.13e+03 0.0191 0.000199 78 0 2 78 0.598 + 0/998 2087/3375 67.5 66.8 145 145 156 551 1.13e+03 0.0191 0.000199 90 3 8 86 0.57 + 0/998 2088/3375 67.5 66.8 145 145 156 551 1.13e+03 0.0191 0.0002 92 3 63 89 0.605 + 0/998 2089/3375 67.5 66.8 145 145 156 550 1.13e+03 0.0191 0.000201 65 5 19 59 0.599 + 0/998 2090/3375 67.5 66.8 145 145 156 550 1.13e+03 0.0191 0.000201 73 1 22 71 0.598 + 0/998 2091/3375 67.5 66.8 145 145 156 551 1.13e+03 0.0191 0.000201 115 0 14 113 0.607 + 0/998 2092/3375 67.5 66.8 145 145 156 551 1.13e+03 0.0191 0.000201 86 0 2 86 0.595 + 0/998 2093/3375 67.5 66.8 145 145 156 550 1.13e+03 0.0191 0.000201 66 1 3 65 0.61 + 0/998 2094/3375 67.5 66.8 145 145 156 551 1.13e+03 0.0191 0.000201 124 1 5 122 0.625 + 0/998 2095/3375 67.5 66.8 145 145 156 551 1.13e+03 0.0191 0.000202 74 1 29 71 0.608 + 0/998 2096/3375 67.5 66.8 145 145 156 550 1.13e+03 0.0191 0.000201 70 0 24 70 0.586 + 0/998 2097/3375 67.5 66.8 145 145 156 551 1.13e+03 0.0191 0.000201 95 0 3 95 0.6 + 0/998 2098/3375 67.5 66.8 145 145 156 550 1.13e+03 0.0191 0.000201 78 1 13 77 0.606 + 0/998 2099/3375 67.5 66.8 145 145 156 550 1.13e+03 0.0191 0.000201 81 0 48 81 0.576 + 0/998 2100/3375 67.5 66.8 145 145 156 550 1.13e+03 0.0191 0.000201 75 0 43 75 0.605 + 0/998 2101/3375 67.5 66.8 145 145 156 550 1.13e+03 0.0191 0.000201 78 1 48 76 0.59 + 0/998 2102/3375 67.4 66.8 145 145 156 550 1.13e+03 0.0191 0.000201 70 0 85 70 0.59 + 0/998 2103/3375 67.4 66.8 145 145 156 550 1.13e+03 0.0191 0.000202 82 2 24 79 0.595 + 0/998 2104/3375 67.4 66.8 145 145 156 550 1.13e+03 0.0191 0.000202 82 1 10 81 0.604 + 0/998 2105/3375 67.4 66.8 145 145 156 550 1.13e+03 0.0191 0.000202 91 2 8 89 0.605 + 0/998 2106/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000202 60 0 25 58 0.595 + 0/998 2107/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000202 82 0 35 75 0.599 + 0/998 2108/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000202 46 0 37 44 0.591 + 0/998 2109/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000202 93 0 29 90 0.624 + 0/998 2110/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000202 92 0 7 92 0.611 + 0/998 2111/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000202 122 1 1 121 0.614 + 0/998 2112/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000202 89 0 7 86 0.602 + 0/998 2113/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000203 98 3 6 95 0.597 + 0/998 2114/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000202 105 0 3 105 0.585 + 0/998 2115/3375 67.5 66.8 145 145 155 550 1.13e+03 0.0191 0.000203 105 1 13 104 0.606 + 0/998 2116/3375 67.5 66.8 145 145 155 550 1.13e+03 0.0191 0.000203 112 1 34 111 0.601 + 0/998 2117/3375 67.5 66.8 145 145 155 550 1.13e+03 0.0191 0.000203 51 1 19 50 0.592 + 0/998 2118/3375 67.5 66.8 145 145 155 550 1.13e+03 0.0191 0.000203 75 0 7 74 0.597 + 0/998 2119/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000203 59 1 20 55 0.616 + 0/998 2120/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000203 83 0 11 82 0.594 + 0/998 2121/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000203 89 0 22 88 0.593 + 0/998 2122/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000203 79 2 55 77 0.612 + 0/998 2123/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000203 120 0 9 120 0.604 + 0/998 2124/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000204 82 4 56 71 0.613 + 0/998 2125/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000205 79 5 31 74 0.602 + 0/998 2126/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000205 106 1 28 105 0.623 + 0/998 2127/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0188 0.000205 100 1 85 90 0.606 + 0/998 2128/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0188 0.000206 97 3 29 92 0.601 + 0/998 2129/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0188 0.000206 74 0 62 72 0.617 + 0/998 2130/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0188 0.000205 50 0 53 49 0.601 + 0/998 2131/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000206 64 1 15 63 0.604 + 0/998 2132/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000206 72 1 62 68 0.63 + 0/998 2133/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000206 125 0 13 125 0.606 + 0/998 2134/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0188 0.000206 124 0 36 120 0.599 + 0/998 2135/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000206 74 0 16 73 0.594 + 0/998 2136/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0188 0.000205 93 0 30 93 0.61 + 0/998 2137/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000205 84 0 9 84 0.595 + 0/998 2138/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000206 56 3 29 53 0.61 + 0/998 2139/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000206 49 0 22 48 0.605 + 0/998 2140/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000206 63 1 54 57 0.609 + 0/998 2141/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000207 84 6 82 75 0.612 + 0/998 2142/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000207 91 0 16 91 0.621 + 0/998 2143/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000207 62 0 22 62 0.593 + 0/998 2144/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000207 83 0 35 81 0.631 + 0/998 2145/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000207 136 0 17 135 0.633 + 0/998 2146/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000207 91 1 8 90 0.605 + 0/998 2147/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0187 0.000207 91 1 54 88 0.618 + 0/998 2148/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0187 0.000207 124 0 3 124 0.604 + 0/998 2149/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000208 80 5 84 68 0.619 + 0/998 2150/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0187 0.000208 47 0 37 46 0.602 + 0/998 2151/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0187 0.000208 116 0 19 115 0.601 + 0/998 2152/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0187 0.000208 55 1 24 50 0.601 + 0/998 2153/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0187 0.000208 188 1 22 183 0.605 + 0/998 2154/3375 67.5 66.8 144 145 155 550 1.13e+03 0.0187 0.000208 91 0 14 89 0.602 + 0/998 2155/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0184 0.000208 64 1 23 62 0.615 + 0/998 2156/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0184 0.000209 57 3 31 54 0.583 + 0/998 2157/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0184 0.000209 48 0 4 48 0.606 + 0/998 2158/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0184 0.000209 90 1 25 88 0.603 + 0/998 2159/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0184 0.000209 56 0 24 55 0.605 + 0/998 2160/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0181 0.000209 116 0 15 114 0.609 + 0/998 2161/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0181 0.000209 93 0 5 93 0.607 + 0/998 2162/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0181 0.000209 61 0 5 61 0.609 + 0/998 2163/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000209 60 1 23 57 0.611 + 0/998 2164/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0181 0.000208 129 0 10 128 0.609 + 0/998 2165/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0181 0.000209 81 2 24 76 0.604 + 0/998 2166/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000209 84 0 7 84 0.594 + 0/998 2167/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000209 89 0 7 89 0.596 + 0/998 2168/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000208 102 0 10 100 0.617 + 0/998 2169/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000209 108 2 32 99 0.622 + 0/998 2170/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000209 72 1 28 70 0.6 + 0/998 2171/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000209 83 0 28 83 0.596 + 0/998 2172/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000209 58 1 49 52 0.593 + 0/998 2173/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000211 94 9 60 80 0.611 + 0/998 2174/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000211 90 2 53 85 0.614 + 0/998 2175/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000212 120 3 17 116 0.595 + 0/998 2176/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000212 98 1 30 97 0.604 + 0/998 2177/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000212 45 1 37 43 0.59 + 0/998 2178/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000213 114 4 25 107 0.614 + 0/998 2179/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000213 75 0 22 73 0.61 + 0/998 2180/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000215 99 8 45 83 0.605 + 0/998 2181/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000215 96 3 83 85 0.618 + 0/998 2182/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000216 60 4 60 53 0.621 + 0/998 2183/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000216 105 0 12 104 0.597 + 0/998 2184/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000217 77 3 69 67 0.621 + 0/998 2185/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000217 131 1 131 127 0.593 + 0/998 2186/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000217 129 0 9 128 0.61 + 0/998 2187/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000216 87 0 38 83 0.609 + 0/998 2188/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000217 60 3 54 57 0.599 + 0/998 2189/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000217 112 0 9 110 0.602 + 0/998 2190/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000217 90 2 15 87 0.606 + 0/998 2191/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000217 71 0 21 68 0.61 + 0/998 2192/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000218 116 3 55 106 0.608 + 0/998 2193/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000218 70 0 33 70 0.605 + 0/998 2194/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000217 98 0 15 98 0.615 + 0/998 2195/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000217 123 0 41 121 0.613 + 0/998 2196/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0178 0.000218 85 2 47 77 0.608 + 0/998 2197/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0178 0.000218 74 0 11 73 0.604 + 0/998 2198/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0178 0.000218 93 0 58 91 0.602 + 0/998 2199/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0178 0.000217 92 0 8 92 0.601 + 0/998 2200/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0178 0.000218 60 2 49 55 0.604 + 0/998 2201/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0178 0.000218 111 1 12 109 0.606 + 0/998 2202/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0178 0.000218 60 1 59 59 0.612 + 0/998 2203/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0178 0.000218 63 0 25 58 0.596 + 0/998 2204/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0178 0.000218 103 0 19 100 0.605 + 0/998 2205/3375 67.5 66.8 144 144 154 549 1.13e+03 0.0178 0.000219 60 3 40 57 0.602 + 0/998 2206/3375 67.4 66.8 144 144 154 549 1.13e+03 0.0178 0.000219 54 1 44 53 0.609 + 0/998 2207/3375 67.4 66.8 144 144 154 549 1.13e+03 0.0178 0.000219 52 0 13 50 0.593 + 0/998 2208/3375 67.4 66.8 144 144 154 549 1.13e+03 0.0178 0.000219 62 0 25 59 0.597 + 0/998 2209/3375 67.4 66.8 144 144 154 549 1.13e+03 0.0178 0.000219 77 0 14 77 0.605 + 0/998 2210/3375 67.4 66.7 144 144 154 549 1.13e+03 0.0178 0.000219 41 0 9 40 0.612 + 0/998 2211/3375 67.4 66.8 144 144 154 549 1.13e+03 0.0178 0.000218 131 0 4 131 0.591 + 0/998 2212/3375 67.4 66.8 144 144 154 549 1.13e+03 0.0178 0.000219 98 2 16 94 0.601 + 0/998 2213/3375 67.4 66.8 144 144 154 549 1.13e+03 0.0178 0.000219 70 0 4 70 0.6 + 0/998 2214/3375 67.4 66.8 144 144 154 549 1.13e+03 0.0178 0.000219 75 1 6 74 0.599 + 0/998 2215/3375 67.4 66.8 144 144 154 549 1.13e+03 0.0178 0.000219 99 1 14 94 0.616 + 0/998 2216/3375 67.4 66.8 144 144 154 549 1.13e+03 0.0178 0.000219 114 0 9 114 0.615 + 0/998 2217/3375 67.4 66.7 144 144 154 549 1.13e+03 0.0175 0.000219 66 1 59 61 0.585 + 0/998 2218/3375 67.4 66.7 144 144 154 549 1.13e+03 0.0175 0.000219 87 0 10 87 0.588 + 0/998 2219/3375 67.4 66.7 144 144 154 549 1.13e+03 0.0175 0.000219 76 0 22 71 0.595 + 0/998 2220/3375 67.4 66.7 144 144 154 549 1.12e+03 0.0175 0.000219 61 0 22 59 0.597 + 0/998 2221/3375 67.4 66.7 144 144 154 549 1.12e+03 0.00917 0.000219 104 0 12 102 0.605 + 0/998 2222/3375 67.4 66.7 144 144 154 549 1.12e+03 0.00918 0.00022 82 3 32 77 0.61 + 0/998 2223/3375 67.4 66.7 144 144 154 549 1.12e+03 0.00918 0.000221 49 2 134 47 0.59 + 0/998 2224/3375 67.4 66.7 144 144 154 548 1.12e+03 0.00917 0.000221 72 0 16 72 0.594 + 0/998 2225/3375 67.4 66.7 144 144 154 548 1.12e+03 0.00917 0.00022 83 0 23 79 0.59 + 0/998 2226/3375 67.4 66.7 144 144 154 548 1.12e+03 0.00917 0.000221 85 1 38 81 0.615 + 0/998 2227/3375 67.4 66.7 144 144 154 548 1.12e+03 0.00917 0.000221 56 0 59 56 0.601 + 0/998 2228/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00917 0.00022 49 0 94 49 0.612 + 0/998 2229/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00917 0.000221 64 1 19 63 0.618 + 0/998 2230/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00917 0.000221 113 3 58 105 0.629 + 0/998 2231/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00917 0.000221 63 0 24 63 0.594 + 0/998 2232/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00902 0.000221 44 1 122 42 0.603 + 0/998 2233/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00887 0.000221 55 0 42 53 0.604 + 0/998 2234/3375 67.3 66.6 144 144 154 548 1.12e+03 0.00887 0.000221 59 1 16 58 0.59 + 0/998 2235/3375 67.3 66.6 144 144 154 548 1.12e+03 0.00887 0.000222 59 4 46 55 0.611 + 0/998 2236/3375 67.3 66.6 144 144 154 548 1.12e+03 0.00887 0.000222 72 0 18 69 0.608 + 0/998 2237/3375 67.3 66.6 144 144 154 548 1.12e+03 0.00887 0.000222 116 0 62 111 0.622 + 0/998 2238/3375 67.3 66.6 144 144 154 548 1.12e+03 0.00887 0.000224 93 9 123 82 0.603 + 0/998 2239/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000225 130 4 30 122 0.609 + 0/998 2240/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000225 95 1 14 94 0.605 + 0/998 2241/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000225 79 2 49 76 0.604 + 0/998 2242/3375 67.3 66.6 144 144 154 548 1.12e+03 0.00888 0.000226 55 3 11 52 0.586 + 0/998 2243/3375 67.3 66.6 144 144 154 548 1.12e+03 0.00888 0.000226 81 1 35 77 0.611 + 0/998 2244/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000226 119 0 11 116 0.589 + 0/998 2245/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000226 101 0 38 97 0.605 + 0/998 2246/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000226 96 1 11 92 0.607 + 0/998 2247/3375 67.3 66.6 144 144 154 548 1.12e+03 0.00887 0.000226 37 1 87 34 0.592 + 0/998 2248/3375 67.3 66.6 144 144 154 548 1.12e+03 0.00887 0.000227 95 3 12 90 0.607 + 0/998 2249/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00887 0.000227 129 2 4 126 0.603 + 0/998 2250/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000228 76 6 90 63 0.59 + 0/998 2251/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00887 0.000228 83 0 12 82 0.613 + 0/998 2252/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000229 127 3 12 124 0.606 + 0/998 2253/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000229 96 1 9 95 0.613 + 0/998 2254/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000229 110 0 7 108 0.601 + 0/998 2255/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000229 58 1 32 57 0.601 + 0/998 2256/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000229 79 1 14 76 0.614 + 0/998 2257/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000229 44 3 71 39 0.586 + 0/998 2258/3375 67.3 66.7 144 144 154 547 1.12e+03 0.00888 0.00023 60 1 49 57 0.614 + 0/998 2259/3375 67.3 66.7 144 144 154 547 1.12e+03 0.00888 0.00023 100 1 42 98 0.597 + 0/998 2260/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.00023 93 2 60 90 0.612 + 0/998 2261/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00887 0.00023 118 0 50 114 0.612 + 0/998 2262/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00887 0.00023 78 1 8 77 0.615 + 0/998 2263/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00873 0.00023 81 0 44 79 0.6 + 0/998 2264/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00873 0.00023 154 2 37 147 0.617 + 0/998 2265/3375 67.3 66.7 144 144 154 548 1.12e+03 0.0086 0.00023 91 1 49 87 0.607 + 0/998 2266/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00859 0.000231 73 2 50 70 0.611 + 0/998 2267/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00859 0.000231 82 2 77 77 0.594 + 0/998 2268/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00859 0.000231 56 1 67 52 0.6 + 0/998 2269/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00858 0.000231 81 1 238 78 0.601 + 0/998 2270/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00858 0.000232 76 5 115 67 0.611 + 0/998 2271/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00857 0.000232 71 0 93 67 0.608 + 0/998 2272/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00857 0.000233 83 5 53 75 0.599 + 0/998 2273/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00857 0.000233 59 0 51 58 0.601 + 0/998 2274/3375 67.3 66.7 144 144 154 547 1.12e+03 0.00857 0.000233 56 0 45 56 0.592 + 0/998 2275/3375 67.3 66.7 144 143 154 547 1.12e+03 0.00857 0.000233 59 0 11 58 0.606 + 0/998 2276/3375 67.3 66.6 144 143 154 547 1.12e+03 0.00857 0.000234 70 3 64 64 0.616 + 0/998 2277/3375 67.3 66.7 144 143 154 547 1.12e+03 0.00857 0.000235 95 5 78 85 0.606 + 0/998 2278/3375 67.3 66.6 143 143 154 547 1.12e+03 0.00857 0.000235 77 0 22 76 0.626 + 0/998 2279/3375 67.3 66.7 143 143 154 547 1.12e+03 0.00857 0.000235 113 1 39 110 0.6 + 0/998 2280/3375 67.3 66.6 143 143 154 547 1.12e+03 0.00857 0.000235 79 0 18 75 0.591 + 0/998 2281/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00857 0.000235 76 2 50 72 0.61 + 0/998 2282/3375 67.3 66.6 143 143 153 547 1.12e+03 0.00844 0.000236 84 6 126 76 0.612 + 0/998 2283/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00844 0.000236 66 1 16 65 0.6 + 0/998 2284/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00844 0.000236 77 1 34 76 0.608 + 0/998 2285/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00844 0.000237 78 1 19 75 0.609 + 0/998 2286/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00844 0.000237 75 1 12 73 0.599 + 0/998 2287/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00844 0.000238 93 4 158 83 0.596 + 0/998 2288/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00844 0.000238 100 1 9 99 0.61 + 0/998 2289/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.000238 77 0 50 75 0.609 + 0/998 2290/3375 67.2 66.7 143 143 153 547 1.12e+03 0.00844 0.000238 114 4 61 108 0.592 + 0/998 2291/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00844 0.000239 62 2 34 58 0.598 + 0/998 2292/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00844 0.000239 90 0 13 88 0.612 + 0/998 2293/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00844 0.000239 41 1 37 40 0.597 + 0/998 2294/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.000239 87 1 68 84 0.62 + 0/998 2295/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.000239 99 1 40 98 0.616 + 0/998 2296/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.00024 107 4 109 98 0.621 + 0/998 2297/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.00024 87 1 36 82 0.605 + 0/998 2298/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.00024 67 1 42 66 0.612 + 0/998 2299/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.00024 63 0 25 60 0.614 + 0/998 2300/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.000241 141 4 43 131 0.6 + 0/998 2301/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.000241 69 2 66 62 0.597 + 0/998 2302/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.000242 57 3 51 50 0.607 + 0/998 2303/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.000242 109 2 56 96 0.615 + 0/998 2304/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.000242 81 0 52 79 0.608 + 0/998 2305/3375 67.2 66.7 143 143 153 547 1.12e+03 0.00843 0.000242 100 0 22 99 0.588 + 0/998 2306/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000241 97 0 7 97 0.601 + 0/998 2307/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000242 93 2 54 82 0.605 + 0/998 2308/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000242 120 0 6 120 0.607 + 0/998 2309/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000242 73 1 68 67 0.612 + 0/998 2310/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000243 111 6 82 94 0.592 + 0/998 2311/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000243 95 3 69 91 0.605 + 0/998 2312/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000244 81 3 127 77 0.611 + 0/998 2313/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000244 78 0 35 78 0.612 + 0/998 2314/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000244 104 1 59 98 0.612 + 0/998 2315/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000245 76 5 40 69 0.591 + 0/998 2316/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00844 0.000246 106 1 13 104 0.614 + 0/998 2317/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000247 52 2 224 50 0.614 + 0/998 2318/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000247 66 0 35 64 0.615 + 0/998 2319/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000247 100 4 99 89 0.612 + 0/998 2320/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000247 103 1 92 101 0.625 + 0/998 2321/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00842 0.000247 67 0 51 66 0.606 + 0/998 2322/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00842 0.000248 70 3 220 61 0.613 + 0/998 2323/3375 67.3 66.6 143 143 153 547 1.12e+03 0.00842 0.000248 90 1 52 84 0.605 + 0/998 2324/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00842 0.000248 105 0 105 104 0.609 + 0/998 2325/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00842 0.000248 113 0 41 113 0.626 + 0/998 2326/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00842 0.000249 121 7 143 111 0.618 + 0/998 2327/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00842 0.00025 99 8 146 81 0.622 + 0/998 2328/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00842 0.00025 56 0 115 53 0.603 + 0/998 2329/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00841 0.00025 87 0 66 87 0.634 + 0/998 2330/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00841 0.00025 73 0 38 73 0.615 + 0/998 2331/3375 67.3 66.6 143 143 153 547 1.12e+03 0.0084 0.00025 54 0 312 50 0.605 + 0/998 2332/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00842 0.000254 70 4 303 57 0.609 + 0/998 2333/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00842 0.000255 91 4 142 86 0.613 + 0/998 2334/3375 67.3 66.6 143 143 153 547 1.12e+03 0.00842 0.000255 100 0 73 94 0.608 + 0/998 2335/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00841 0.000255 66 1 84 62 0.596 + 0/998 2336/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00841 0.000256 88 6 169 76 0.602 + 0/998 2337/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00841 0.000256 91 1 77 86 0.606 + 0/998 2338/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00841 0.000256 65 1 62 64 0.595 + 0/998 2339/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00841 0.000257 70 2 29 65 0.587 + 0/998 2340/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00841 0.000257 107 3 83 93 0.602 + 0/998 2341/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00842 0.00026 57 2 78 51 0.599 + 0/998 2342/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00842 0.00026 42 0 35 41 0.599 + 0/998 2343/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000261 55 3 38 50 0.612 + 0/998 2344/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000261 100 1 20 96 0.596 + 0/998 2345/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000261 79 0 11 79 0.61 + 0/998 2346/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000261 52 0 6 52 0.601 + 0/998 2347/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000261 78 1 38 70 0.607 + 0/998 2348/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000263 72 7 76 62 0.586 + 0/998 2349/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000263 95 2 36 87 0.6 + 0/998 2350/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000263 79 3 21 73 0.616 + 0/998 2351/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000264 92 3 16 87 0.595 + 0/998 2352/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000264 99 0 18 97 0.616 + 0/998 2353/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000264 92 0 16 91 0.608 + 0/998 2354/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000264 119 1 9 116 0.627 + 0/998 2355/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000264 55 2 16 51 0.607 + 0/998 2356/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00844 0.000264 128 1 12 126 0.617 + 0/998 2357/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000264 61 0 74 59 0.594 + 0/998 2358/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000264 49 0 33 46 0.614 + 0/998 2359/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00844 0.000265 81 1 42 80 0.606 + 0/998 2360/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00844 0.000265 46 0 27 45 0.594 + 0/998 2361/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00844 0.000266 100 2 60 96 0.604 + 0/998 2362/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00844 0.000266 104 2 49 98 0.614 + 0/998 2363/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00844 0.000266 86 3 80 79 0.599 + 0/998 2364/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00844 0.000266 71 0 18 70 0.601 + 0/998 2365/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00844 0.000266 72 0 5 72 0.594 + 0/998 2366/3375 67.2 66.6 143 143 152 546 1.12e+03 0.00844 0.000267 46 3 65 41 0.597 + 0/998 2367/3375 67.2 66.6 143 143 152 546 1.12e+03 0.00844 0.000267 113 1 10 110 0.594 + 0/998 2368/3375 67.1 66.5 143 143 152 546 1.12e+03 0.00844 0.000267 41 3 70 36 0.584 + 0/998 2369/3375 67.1 66.5 143 143 152 546 1.12e+03 0.00844 0.000268 80 5 46 74 0.601 + 0/998 2370/3375 67.1 66.5 143 143 152 545 1.12e+03 0.00844 0.000268 90 0 50 84 0.599 + 0/998 2371/3375 67.1 66.5 143 143 152 545 1.12e+03 0.00843 0.000268 51 0 113 48 0.614 + 0/998 2372/3375 67.1 66.5 143 143 152 545 1.12e+03 0.00843 0.000268 61 0 45 61 0.608 + 0/998 2373/3375 67.1 66.5 143 142 152 545 1.12e+03 0.00843 0.000268 51 2 34 48 0.598 + 0/998 2374/3375 67.1 66.5 143 142 152 545 1.12e+03 0.0083 0.000268 51 0 26 50 0.617 + 0/998 2375/3375 67.1 66.5 143 142 152 545 1.12e+03 0.0083 0.000269 62 3 87 58 0.614 + 0/998 2376/3375 67.1 66.5 143 142 152 545 1.12e+03 0.0083 0.000269 77 2 56 73 0.594 + 0/998 2377/3375 67.1 66.5 142 142 152 545 1.12e+03 0.0083 0.00027 72 7 138 62 0.611 + 0/998 2378/3375 67.1 66.5 142 142 152 545 1.12e+03 0.0083 0.000272 94 9 136 80 0.625 + 0/998 2379/3375 67.1 66.5 142 142 152 545 1.12e+03 0.0083 0.000273 78 4 131 74 0.633 + 0/998 2380/3375 67.1 66.5 142 142 152 545 1.12e+03 0.00818 0.000273 73 0 140 71 0.627 + 0/998 2381/3375 67.1 66.5 142 142 152 545 1.12e+03 0.00818 0.000275 128 4 68 113 0.611 + 0/998 2382/3375 67.1 66.5 142 142 152 545 1.12e+03 0.00818 0.000275 63 2 164 52 0.605 + 0/998 2383/3375 67.1 66.5 142 142 152 545 1.12e+03 0.00818 0.000276 101 4 88 93 0.614 + 0/998 2384/3375 67.1 66.5 142 142 152 545 1.12e+03 0.00818 0.000276 70 3 80 65 0.597 + 0/998 2385/3375 67.1 66.5 142 142 152 545 1.12e+03 0.00818 0.000277 101 3 47 90 0.605 + 0/998 2386/3375 67.1 66.5 142 142 152 545 1.12e+03 0.00818 0.000277 66 3 55 61 0.615 + 0/998 2387/3375 67.1 66.5 142 142 152 545 1.12e+03 0.00818 0.000277 67 0 31 65 0.607 + 0/998 2388/3375 67 66.5 142 142 152 545 1.12e+03 0.00818 0.000277 62 1 25 61 0.617 + 0/998 2389/3375 67 66.5 142 142 152 545 1.12e+03 0.00818 0.000277 99 1 27 97 0.61 + 0/998 2390/3375 67.1 66.5 142 142 152 545 1.12e+03 0.00818 0.000277 103 0 43 96 0.609 + 0/998 2391/3375 67 66.5 142 142 152 545 1.12e+03 0.00818 0.000277 65 0 55 64 0.606 + 0/998 2392/3375 67 66.5 142 142 152 545 1.11e+03 0.00818 0.000277 60 0 13 60 0.592 + 0/998 2393/3375 67 66.5 142 142 152 545 1.11e+03 0.00817 0.000277 64 0 61 63 0.613 + 0/998 2394/3375 67 66.4 142 142 152 545 1.11e+03 0.00817 0.000277 59 0 25 58 0.603 + 0/998 2395/3375 67 66.4 142 142 152 545 1.11e+03 0.00817 0.000277 114 1 3 113 0.61 + 0/998 2396/3375 67 66.5 142 142 152 545 1.11e+03 0.00817 0.000277 95 1 13 94 0.612 + 0/998 2397/3375 67 66.5 142 142 152 545 1.11e+03 0.00818 0.000277 102 3 49 95 0.611 + 0/998 2398/3375 67 66.5 142 142 152 545 1.11e+03 0.00818 0.000277 82 0 13 81 0.609 + 0/998 2399/3375 67 66.5 142 142 152 545 1.11e+03 0.00817 0.000277 80 0 27 75 0.612 + 0/998 2400/3375 67 66.4 142 142 152 544 1.11e+03 0.00818 0.000279 47 2 26 42 0.594 + 0/998 2401/3375 67 66.4 142 142 152 544 1.11e+03 0.00818 0.000279 75 2 15 72 0.615 + 0/998 2402/3375 67 66.4 142 142 152 544 1.11e+03 0.00818 0.00028 103 4 62 91 0.601 + 0/998 2403/3375 67 66.4 142 142 152 544 1.11e+03 0.00818 0.000281 76 5 28 67 0.61 + 0/998 2404/3375 67 66.4 142 142 152 544 1.11e+03 0.00818 0.00028 132 0 14 131 0.608 + 0/998 2405/3375 67 66.4 142 142 152 544 1.11e+03 0.00818 0.000281 65 2 51 61 0.611 + 0/998 2406/3375 67 66.4 142 142 152 544 1.11e+03 0.00818 0.000281 64 0 7 64 0.614 + 0/998 2407/3375 67 66.4 142 142 152 544 1.11e+03 0.00819 0.000282 117 2 8 115 0.611 + 0/998 2408/3375 67 66.4 142 142 152 544 1.11e+03 0.00819 0.000282 67 0 7 67 0.602 + 0/998 2409/3375 67 66.4 142 142 152 544 1.11e+03 0.00819 0.000282 78 1 13 75 0.601 + 0/998 2410/3375 67 66.4 142 142 152 544 1.11e+03 0.00819 0.000282 73 0 12 72 0.612 + 0/998 2411/3375 67 66.4 142 142 152 544 1.11e+03 0.00819 0.000282 101 3 31 94 0.621 + 0/998 2412/3375 67 66.4 142 142 152 544 1.11e+03 0.00819 0.000283 78 1 9 77 0.594 + 0/998 2413/3375 67 66.4 142 142 152 544 1.11e+03 0.00819 0.000283 129 0 5 129 0.606 + 0/998 2414/3375 67 66.4 142 142 152 544 1.11e+03 0.00819 0.000283 93 1 46 88 0.6 + 0/998 2415/3375 67 66.4 142 142 152 544 1.11e+03 0.0082 0.000284 77 4 22 68 0.597 + 0/998 2416/3375 67 66.5 142 142 152 544 1.11e+03 0.0082 0.000284 122 0 6 121 0.613 + 0/998 2417/3375 67 66.5 142 142 152 544 1.11e+03 0.0082 0.000285 104 3 20 100 0.621 + 0/998 2418/3375 67 66.5 142 142 152 544 1.11e+03 0.0082 0.000285 109 0 5 109 0.607 + 0/998 2419/3375 67.1 66.5 142 142 152 544 1.11e+03 0.0082 0.000286 101 3 35 98 0.606 + 0/998 2420/3375 67.1 66.5 142 142 152 544 1.11e+03 0.0082 0.000286 74 2 43 70 0.604 + 0/998 2421/3375 67.1 66.5 142 142 152 544 1.11e+03 0.0082 0.000286 77 2 48 73 0.625 + 0/998 2422/3375 67.1 66.5 142 142 152 545 1.11e+03 0.0082 0.000287 152 3 19 146 0.605 + 0/998 2423/3375 67.1 66.5 142 142 152 545 1.11e+03 0.0082 0.000287 80 1 79 78 0.595 + 0/998 2424/3375 67.1 66.5 142 142 152 544 1.11e+03 0.00821 0.000289 61 6 57 54 0.604 + 0/998 2425/3375 67.1 66.5 142 142 152 544 1.11e+03 0.00821 0.000289 89 2 24 84 0.586 + 0/998 2426/3375 67.1 66.5 142 142 152 544 1.11e+03 0.00821 0.00029 93 2 23 90 0.619 + 0/998 2427/3375 67.1 66.5 142 142 152 544 1.11e+03 0.00821 0.00029 48 1 38 45 0.603 + 0/998 2428/3375 67.1 66.5 142 142 152 544 1.11e+03 0.00821 0.000291 98 5 55 93 0.608 + 0/998 2429/3375 67.1 66.5 142 142 152 544 1.11e+03 0.00821 0.000291 89 2 24 85 0.618 + 0/998 2430/3375 67.1 66.5 142 142 152 544 1.11e+03 0.00821 0.000291 73 1 40 71 0.605 + 0/998 2431/3375 67.1 66.5 142 142 152 544 1.11e+03 0.00822 0.000292 87 1 39 82 0.615 + 0/998 2432/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000293 35 2 34 32 0.597 + 0/998 2433/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000292 57 0 12 57 0.592 + 0/998 2434/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000293 142 1 13 138 0.614 + 0/998 2435/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000293 97 2 13 95 0.617 + 0/998 2436/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000293 83 1 10 82 0.613 + 0/998 2437/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000294 87 5 56 78 0.602 + 0/998 2438/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000294 118 1 10 117 0.602 + 0/998 2439/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000295 71 5 65 63 0.624 + 0/998 2440/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000295 58 2 12 56 0.592 + 0/998 2441/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000295 94 0 8 94 0.615 + 0/998 2442/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000295 53 2 20 51 0.622 + 0/998 2443/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000295 74 0 12 74 0.598 + 0/998 2444/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000296 69 6 94 61 0.619 + 0/998 2445/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000297 70 3 86 63 0.606 + 0/998 2446/3375 67 66.4 142 142 152 544 1.11e+03 0.00822 0.000297 56 2 51 52 0.603 + 0/998 2447/3375 67 66.4 142 142 152 544 1.11e+03 0.00822 0.000297 42 0 13 42 0.607 + 0/998 2448/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.000298 97 7 117 81 0.605 + 0/998 2449/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.000298 107 0 28 106 0.597 + 0/998 2450/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.000298 82 1 13 80 0.616 + 0/998 2451/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.0003 77 7 32 68 0.619 + 0/998 2452/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.000301 73 5 166 65 0.607 + 0/998 2453/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.000301 80 1 152 75 0.602 + 0/998 2454/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.000301 100 1 31 98 0.609 + 0/998 2455/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.000301 95 0 26 92 0.607 + 0/998 2456/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.000301 55 0 30 54 0.601 + 0/998 2457/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.000302 66 5 92 52 0.606 + 0/998 2458/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.000302 67 4 62 63 0.594 + 0/998 2459/3375 67 66.4 142 142 152 543 1.11e+03 0.0081 0.000302 50 0 39 50 0.615 + 0/998 2460/3375 66.9 66.4 142 142 151 543 1.11e+03 0.0081 0.000302 63 0 64 62 0.59 + 0/998 2461/3375 67 66.4 142 142 152 543 1.11e+03 0.0081 0.000303 90 3 57 86 0.624 + 0/998 2462/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.000302 115 0 28 114 0.608 + 0/998 2463/3375 67 66.4 142 142 152 543 1.11e+03 0.0081 0.000303 78 1 29 77 0.599 + 0/998 2464/3375 67 66.4 142 142 151 543 1.11e+03 0.0081 0.000303 77 2 15 74 0.592 + 0/998 2465/3375 66.9 66.4 142 142 151 543 1.11e+03 0.0081 0.000303 54 0 31 54 0.611 + 0/998 2466/3375 67 66.4 142 142 151 543 1.11e+03 0.0081 0.000303 98 2 21 96 0.618 + 0/998 2467/3375 66.9 66.4 142 142 151 543 1.11e+03 0.0081 0.000304 67 4 79 62 0.614 + 0/998 2468/3375 66.9 66.4 142 142 151 543 1.11e+03 0.0081 0.000304 47 1 24 46 0.608 + 0/998 2469/3375 66.9 66.4 142 142 151 543 1.11e+03 0.0081 0.000304 58 0 143 54 0.609 + 0/998 2470/3375 66.9 66.4 142 142 151 543 1.11e+03 0.0081 0.000304 69 0 63 66 0.609 + 0/998 2471/3375 66.9 66.3 142 142 151 543 1.11e+03 0.0081 0.000303 79 0 56 79 0.602 + 0/998 2472/3375 66.9 66.3 142 142 151 543 1.11e+03 0.0081 0.000303 77 0 22 77 0.603 + 0/998 2473/3375 66.9 66.3 142 142 151 543 1.11e+03 0.0081 0.000304 57 2 36 54 0.601 + 0/998 2474/3375 66.9 66.3 142 142 151 543 1.11e+03 0.00809 0.000304 116 1 37 115 0.61 + 0/998 2475/3375 66.9 66.3 142 142 151 543 1.11e+03 0.00809 0.000305 61 4 70 56 0.604 + 0/998 2476/3375 66.9 66.3 142 142 151 543 1.11e+03 0.00809 0.000304 82 0 44 82 0.615 + 0/998 2477/3375 66.9 66.3 142 142 151 543 1.11e+03 0.0081 0.000307 72 3 115 63 0.62 + 0/998 2478/3375 66.9 66.3 142 142 151 543 1.11e+03 0.0081 0.000307 70 1 57 65 0.612 + 0/998 2479/3375 66.9 66.3 142 142 151 543 1.11e+03 0.0081 0.000307 102 1 23 97 0.603 + 0/998 2480/3375 66.9 66.3 142 142 151 543 1.11e+03 0.0081 0.000307 111 0 46 110 0.607 + 0/998 2481/3375 66.9 66.4 142 142 151 543 1.11e+03 0.0081 0.000307 106 0 41 106 0.617 + 0/998 2482/3375 66.9 66.4 142 142 151 543 1.11e+03 0.0081 0.000308 105 5 94 94 0.612 + 0/998 2483/3375 66.9 66.3 142 142 151 543 1.11e+03 0.0081 0.000308 46 1 86 44 0.603 + 0/998 2484/3375 66.9 66.3 142 142 151 543 1.11e+03 0.0081 0.000308 58 0 45 58 0.602 + 0/998 2485/3375 66.9 66.3 142 141 151 543 1.11e+03 0.0081 0.000308 86 1 48 83 0.593 + 0/998 2486/3375 66.9 66.3 142 141 151 543 1.11e+03 0.00809 0.000308 58 1 87 55 0.604 + 0/998 2487/3375 66.9 66.3 142 141 151 543 1.11e+03 0.00809 0.000308 43 1 210 41 0.62 + 0/998 2488/3375 66.9 66.3 142 141 151 543 1.11e+03 0.00809 0.000309 97 5 136 87 0.637 + 0/998 2489/3375 66.9 66.3 142 141 151 543 1.11e+03 0.00809 0.000309 112 0 128 107 0.615 + 0/998 2490/3375 66.9 66.3 141 141 151 543 1.11e+03 0.00808 0.000309 50 0 228 45 0.621 + 0/998 2491/3375 66.9 66.3 142 141 151 543 1.11e+03 0.00808 0.000309 157 3 48 148 0.62 + 0/998 2492/3375 66.9 66.3 142 141 151 543 1.11e+03 0.00808 0.000309 123 0 46 123 0.62 + 0/998 2493/3375 66.9 66.3 142 141 151 543 1.11e+03 0.00808 0.000309 93 4 65 85 0.604 + 0/998 2494/3375 66.9 66.3 142 141 151 543 1.11e+03 0.00808 0.000309 61 0 74 60 0.619 + 0/998 2495/3375 66.9 66.3 142 141 151 543 1.11e+03 0.00808 0.00031 94 1 42 91 0.624 + 0/998 2496/3375 66.9 66.3 141 141 151 543 1.11e+03 0.00808 0.00031 65 5 89 54 0.603 + 0/998 2497/3375 66.9 66.3 141 141 151 543 1.11e+03 0.00808 0.000311 51 1 99 49 0.615 + 0/998 2498/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.00031 74 0 24 72 0.603 + 0/998 2499/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000312 59 3 68 52 0.602 + 0/998 2500/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000312 62 1 104 60 0.6 + 0/998 2501/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000312 111 0 23 110 0.608 + 0/998 2502/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000312 54 1 11 53 0.602 + 0/998 2503/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000312 70 0 33 69 0.602 + 0/998 2504/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000312 108 1 32 107 0.625 + 0/998 2505/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000313 115 4 86 107 0.595 + 0/998 2506/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000313 83 1 31 80 0.604 + 0/998 2507/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000314 142 6 61 125 0.613 + 0/998 2508/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000313 65 0 28 64 0.603 + 0/998 2509/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000314 60 1 31 59 0.587 + 0/998 2510/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000314 66 0 91 65 0.608 + 0/998 2511/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000315 101 5 62 89 0.611 + 0/998 2512/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000315 102 1 62 96 0.62 + 0/998 2513/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000319 124 4 119 107 0.631 + 0/998 2514/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.00032 102 3 54 95 0.628 + 0/998 2515/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.00032 81 4 61 76 0.598 + 0/998 2516/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000322 77 8 159 64 0.625 + 0/998 2517/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000322 99 0 46 93 0.615 + 0/998 2518/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000322 85 1 52 83 0.609 + 0/998 2519/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000322 63 2 42 60 0.616 + 0/998 2520/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000322 81 0 50 78 0.601 + 0/998 2521/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000323 80 7 207 63 0.614 + 0/998 2522/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000324 83 3 91 79 0.612 + 0/998 2523/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000324 59 4 65 53 0.596 + 0/998 2524/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000325 102 3 28 96 0.621 + 0/998 2525/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000326 79 4 161 71 0.618 + 0/998 2526/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000326 89 0 63 88 0.609 + 0/998 2527/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000326 92 1 24 89 0.624 + 0/998 2528/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00831 0.000326 91 1 55 89 0.617 + 0/998 2529/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000326 54 1 5 53 0.607 + 0/998 2530/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00831 0.000326 75 0 117 67 0.612 + 0/998 2531/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00831 0.000326 89 1 71 86 0.608 + 0/998 2532/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00831 0.000327 148 4 85 139 0.616 + 0/998 2533/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00831 0.000328 78 4 139 68 0.603 + 0/998 2534/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00831 0.000328 94 0 23 92 0.597 + 0/998 2535/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00831 0.000328 119 2 49 116 0.608 + 0/998 2536/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00831 0.000329 79 6 52 70 0.615 + 0/998 2537/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000333 96 5 53 83 0.616 + 0/998 2538/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000333 83 0 44 81 0.617 + 0/998 2539/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000333 90 0 92 88 0.615 + 0/998 2540/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000332 79 0 70 78 0.618 + 0/998 2541/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000333 64 2 55 61 0.615 + 0/998 2542/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000333 80 1 13 77 0.605 + 0/998 2543/3375 66.8 66.3 141 141 151 542 1.11e+03 0.00832 0.000333 58 0 6 57 0.588 + 0/998 2544/3375 66.8 66.3 141 141 151 542 1.11e+03 0.00832 0.000333 82 1 25 78 0.62 + 0/998 2545/3375 66.8 66.3 141 141 151 542 1.11e+03 0.00832 0.000333 65 2 45 60 0.623 + 0/998 2546/3375 66.8 66.3 141 141 151 542 1.11e+03 0.00832 0.000334 90 6 126 74 0.618 + 0/998 2547/3375 66.8 66.3 141 141 151 542 1.11e+03 0.00832 0.000335 55 5 108 47 0.615 + 0/998 2548/3375 66.8 66.3 141 141 151 542 1.11e+03 0.00832 0.000335 57 1 15 55 0.595 + 0/998 2549/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000335 57 1 65 55 0.612 + 0/998 2550/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00831 0.000335 102 1 64 101 0.618 + 0/998 2551/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00831 0.000335 93 2 49 85 0.606 + 0/998 2552/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00831 0.000336 87 4 74 76 0.611 + 0/998 2553/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00831 0.000337 85 6 119 70 0.61 + 0/998 2554/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000338 78 1 60 76 0.626 + 0/998 2555/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000339 78 3 42 74 0.605 + 0/998 2556/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.00034 64 9 86 53 0.6 + 0/998 2557/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000341 56 2 15 53 0.614 + 0/998 2558/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000341 93 0 47 87 0.604 + 0/998 2559/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000341 108 1 51 104 0.618 + 0/998 2560/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000342 65 3 138 56 0.605 + 0/998 2561/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000342 123 1 66 118 0.614 + 0/998 2562/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000344 92 5 58 82 0.605 + 0/998 2563/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000344 93 1 31 90 0.602 + 0/998 2564/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000346 103 10 124 87 0.616 + 0/998 2565/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000346 82 0 37 82 0.621 + 0/998 2566/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000346 63 1 7 62 0.61 + 0/998 2567/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000345 112 0 11 111 0.629 + 0/998 2568/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000345 74 0 33 73 0.609 + 0/998 2569/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000346 71 3 10 68 0.602 + 0/998 2570/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000346 62 1 25 58 0.603 + 0/998 2571/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000346 97 3 30 94 0.597 + 0/998 2572/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000347 52 2 11 49 0.592 + 0/998 2573/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000346 63 0 24 62 0.588 + 0/998 2574/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000346 138 0 9 138 0.611 + 0/998 2575/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000346 83 0 31 82 0.614 + 0/998 2576/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000346 92 2 16 89 0.627 + 0/998 2577/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000346 85 0 15 85 0.615 + 0/998 2578/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000346 80 0 47 79 0.632 + 0/998 2579/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000346 105 0 8 105 0.614 + 0/998 2580/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00831 0.000346 83 0 14 81 0.611 + 0/998 2581/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00831 0.000346 103 0 6 103 0.61 + 0/998 2582/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00831 0.000346 85 0 16 83 0.617 + 0/998 2583/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00829 0.000346 70 1 14 68 0.609 + 0/998 2584/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00828 0.000346 67 0 24 67 0.598 + 0/998 2585/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00827 0.000346 46 0 69 44 0.601 + 0/998 2586/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00827 0.000346 57 1 62 55 0.61 + 0/998 2587/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00827 0.000346 92 0 17 91 0.604 + 0/998 2588/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00827 0.000346 51 0 12 51 0.606 + 0/998 2589/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00827 0.000345 66 0 37 64 0.605 + 0/998 2590/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00826 0.000345 81 0 45 77 0.613 + 0/998 2591/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00826 0.000346 116 3 18 112 0.632 + 0/998 2592/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00826 0.000346 45 2 31 42 0.608 + 0/998 2593/3375 66.7 66.2 141 141 150 541 1.11e+03 0.00826 0.000346 72 0 19 70 0.633 + 0/998 2594/3375 66.7 66.2 141 141 150 541 1.11e+03 0.00826 0.000346 64 1 51 62 0.61 + 0/998 2595/3375 66.7 66.2 141 141 150 541 1.1e+03 0.00826 0.000346 56 0 35 56 0.614 + 0/998 2596/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00825 0.000346 47 3 48 43 0.611 + 0/998 2597/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00826 0.000348 108 4 52 101 0.63 + 0/998 2598/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00826 0.000348 110 0 8 110 0.612 + 0/998 2599/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00826 0.000348 106 1 38 105 0.612 + 0/998 2600/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00826 0.000349 80 6 44 72 0.608 + 0/998 2601/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00826 0.00035 58 9 318 48 0.634 + 0/998 2602/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00826 0.00035 96 0 33 93 0.63 + 0/998 2603/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00826 0.00035 51 0 28 51 0.615 + 0/998 2604/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00826 0.00035 64 0 60 63 0.613 + 0/998 2605/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00826 0.000351 92 3 40 87 0.61 + 0/998 2606/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00826 0.000351 63 0 85 53 0.625 + 0/998 2607/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00827 0.000356 105 9 84 85 0.628 + 0/998 2608/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00827 0.000357 50 1 71 48 0.611 + 0/998 2609/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00827 0.000357 130 3 77 126 0.601 + 0/998 2610/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00827 0.000357 67 1 30 62 0.62 + 0/998 2611/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00827 0.000357 115 0 6 114 0.601 + 0/998 2612/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00826 0.000357 87 0 15 85 0.604 + 0/998 2613/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00826 0.000357 79 2 12 77 0.603 + 0/998 2614/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00826 0.000357 46 0 7 45 0.619 + 0/998 2615/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00815 0.000359 94 3 28 87 0.63 + 0/998 2616/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00815 0.000359 71 1 30 66 0.594 + 0/998 2617/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00815 0.000358 77 0 15 77 0.612 + 0/998 2618/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00815 0.000358 134 0 21 133 0.622 + 0/998 2619/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00815 0.000359 120 4 40 113 0.626 + 0/998 2620/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00814 0.00036 56 4 49 51 0.603 + 0/998 2621/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00814 0.000359 64 0 7 63 0.625 + 0/998 2622/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00815 0.000362 77 3 54 71 0.619 + 0/998 2623/3375 66.7 66.1 141 140 150 540 1.1e+03 0.00815 0.000362 74 0 18 73 0.613 + 0/998 2624/3375 66.7 66.1 141 140 150 540 1.1e+03 0.00815 0.000362 55 1 42 53 0.611 + 0/998 2625/3375 66.7 66.1 141 140 150 540 1.1e+03 0.00815 0.000362 47 0 14 46 0.59 + 0/998 2626/3375 66.7 66.1 141 140 150 540 1.1e+03 0.00815 0.000363 121 3 19 117 0.598 + 0/998 2627/3375 66.7 66.1 141 140 150 540 1.1e+03 0.00815 0.000363 74 3 29 69 0.612 + 0/998 2628/3375 66.7 66.1 141 140 150 540 1.1e+03 0.00814 0.000364 83 1 42 76 0.6 + 0/998 2629/3375 66.7 66.1 141 140 150 540 1.1e+03 0.00802 0.000364 78 2 27 75 0.585 + 0/998 2630/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000364 42 0 10 41 0.598 + 0/998 2631/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000364 62 0 41 60 0.61 + 0/998 2632/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000365 141 9 59 128 0.605 + 0/998 2633/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000365 90 0 24 87 0.605 + 0/998 2634/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000365 75 1 22 71 0.61 + 0/998 2635/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000365 117 0 30 117 0.609 + 0/998 2636/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000365 78 3 48 74 0.608 + 0/998 2637/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000365 71 1 21 69 0.608 + 0/998 2638/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000367 73 2 13 69 0.608 + 0/998 2639/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000367 45 0 7 45 0.614 + 0/998 2640/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000367 69 0 12 68 0.598 + 0/998 2641/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000366 70 0 29 70 0.615 + 0/998 2642/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000366 84 0 9 84 0.632 + 0/998 2643/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000366 145 0 4 143 0.636 + 0/998 2644/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000366 95 0 8 94 0.606 + 0/998 2645/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000366 126 1 0 125 0.616 + 0/998 2646/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000366 70 1 41 67 0.612 + 0/998 2647/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000366 63 0 20 62 0.617 + 0/998 2648/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000366 82 2 31 78 0.615 + 0/998 2649/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00801 0.000366 60 0 51 60 0.609 + 0/998 2650/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00801 0.000366 73 0 28 72 0.623 + 0/998 2651/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00801 0.000366 102 2 37 98 0.596 + 0/998 2652/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00801 0.000367 85 1 22 82 0.631 + 0/998 2653/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000368 55 6 51 49 0.603 + 0/998 2654/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00802 0.000368 92 1 15 91 0.608 + 0/998 2655/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00801 0.000368 143 0 28 135 0.618 + 0/998 2656/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00801 0.000368 148 1 52 144 0.623 + 0/998 2657/3375 66.7 66.2 140 140 150 540 1.1e+03 0.00801 0.000368 112 1 13 109 0.604 + 0/998 2658/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000371 86 6 70 74 0.604 + 0/998 2659/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00801 0.000371 47 0 86 47 0.59 + 0/998 2660/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00801 0.000372 123 6 18 111 0.615 + 0/998 2661/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00801 0.000372 78 4 81 72 0.6 + 0/998 2662/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00801 0.000373 78 2 44 73 0.629 + 0/998 2663/3375 66.7 66.1 140 140 149 540 1.1e+03 0.008 0.000373 73 1 25 71 0.614 + 0/998 2664/3375 66.7 66.1 140 140 149 540 1.1e+03 0.008 0.000374 43 1 49 41 0.59 + 0/998 2665/3375 66.7 66.1 140 140 149 540 1.1e+03 0.008 0.000375 56 5 60 48 0.601 + 0/998 2666/3375 66.7 66.1 140 140 149 540 1.1e+03 0.008 0.000375 84 1 43 81 0.637 + 0/998 2667/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00799 0.000375 61 1 35 60 0.617 + 0/998 2668/3375 66.7 66.1 140 140 149 540 1.1e+03 0.008 0.000376 119 1 15 116 0.627 + 0/998 2669/3375 66.7 66.1 140 140 149 540 1.1e+03 0.008 0.000377 67 7 76 59 0.642 + 0/998 2670/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00799 0.000377 121 0 98 115 0.649 + 0/998 2671/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00799 0.000377 95 4 37 90 0.624 + 0/998 2672/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00799 0.000377 88 0 86 85 0.621 + 0/998 2673/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00799 0.000377 61 1 77 57 0.608 + 0/998 2674/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00798 0.000378 66 4 206 49 0.618 + 0/998 2675/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00798 0.000378 129 1 51 127 0.626 + 0/998 2676/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00798 0.000378 65 0 9 65 0.612 + 0/998 2677/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00798 0.000378 76 0 41 75 0.605 + 0/998 2678/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00797 0.000378 79 1 79 74 0.616 + 0/998 2679/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00797 0.000378 49 1 63 46 0.606 + 0/998 2680/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00797 0.000378 60 1 80 57 0.616 + 0/998 2681/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00797 0.000378 72 0 56 71 0.608 + 0/998 2682/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00785 0.000378 91 2 116 83 0.619 + 0/998 2683/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00785 0.000379 60 4 95 53 0.607 + 0/998 2684/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00785 0.000379 94 2 119 91 0.605 + 0/998 2685/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00785 0.000379 124 1 53 121 0.616 + 0/998 2686/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00785 0.000379 76 2 61 72 0.619 + 0/998 2687/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00785 0.00038 105 7 136 93 0.609 + 0/998 2688/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00784 0.00038 44 0 100 41 0.618 + 0/998 2689/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00784 0.00038 73 0 160 71 0.612 + 0/998 2690/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00784 0.000381 126 4 91 115 0.607 + 0/998 2691/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00784 0.000381 107 0 56 101 0.614 + 0/998 2692/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00784 0.000382 105 4 30 100 0.602 + 0/998 2693/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00784 0.000382 67 0 39 64 0.621 + 0/998 2694/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00784 0.000384 91 10 106 77 0.609 + 0/998 2695/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00784 0.000384 86 0 32 84 0.608 + 0/998 2696/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00784 0.000385 75 7 138 62 0.609 + 0/998 2697/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00784 0.000385 82 0 28 81 0.611 + 0/998 2698/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00784 0.000385 105 5 80 94 0.608 + 0/998 2699/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00784 0.000385 139 1 28 135 0.615 + 0/998 2700/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00784 0.000385 92 0 60 87 0.61 + 0/998 2701/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00784 0.000386 124 3 24 118 0.602 + 0/998 2702/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00781 0.000389 83 4 35 79 0.606 + 0/998 2703/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00781 0.000389 63 1 103 59 0.603 + 0/998 2704/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00781 0.00039 63 1 14 62 0.607 + 0/998 2705/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00781 0.00039 84 1 26 79 0.595 + 0/998 2706/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00781 0.000389 70 0 63 69 0.599 + 0/998 2707/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00781 0.000389 142 1 10 141 0.601 + 0/998 2708/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00781 0.000389 64 1 36 62 0.598 + 0/998 2709/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00781 0.000389 86 0 16 86 0.607 + 0/998 2710/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00781 0.000389 74 1 70 70 0.6 + 0/998 2711/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00781 0.00039 47 2 45 43 0.614 + 0/998 2712/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00781 0.00039 89 1 19 87 0.614 + 0/998 2713/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00781 0.00039 76 2 69 70 0.605 + 0/998 2714/3375 66.6 66.1 140 140 149 539 1.1e+03 0.0078 0.00039 54 0 32 52 0.6 + 0/998 2715/3375 66.6 66.1 140 140 149 539 1.1e+03 0.0078 0.00039 118 0 30 112 0.601 + 0/998 2716/3375 66.7 66.1 140 140 149 539 1.1e+03 0.0078 0.00039 104 0 45 103 0.597 + 0/998 2717/3375 66.7 66.1 140 140 149 539 1.1e+03 0.0078 0.00039 102 3 78 93 0.602 + 0/998 2718/3375 66.6 66.1 140 140 149 539 1.1e+03 0.0078 0.00039 71 0 28 70 0.602 + 0/998 2719/3375 66.6 66.1 140 140 149 539 1.1e+03 0.0078 0.00039 80 4 36 74 0.609 + 0/998 2720/3375 66.6 66.1 140 140 149 539 1.1e+03 0.0078 0.00039 94 0 15 94 0.601 + 0/998 2721/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00779 0.000391 84 6 46 75 0.609 + 0/998 2722/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00779 0.000391 67 0 21 63 0.607 + 0/998 2723/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00779 0.000392 80 5 78 74 0.621 + 0/998 2724/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00779 0.000393 70 4 45 63 0.615 + 0/998 2725/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00779 0.000392 83 0 56 81 0.601 + 0/998 2726/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00779 0.000394 81 4 74 74 0.614 + 0/998 2727/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00779 0.000394 125 2 48 122 0.617 + 0/998 2728/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00547 0.000395 114 6 69 105 0.631 + 0/998 2729/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00539 0.000395 78 2 93 74 0.607 + 0/998 2730/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00539 0.000396 66 6 64 58 0.608 + 0/998 2731/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000397 150 6 56 137 0.612 + 0/998 2732/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000397 151 2 24 146 0.611 + 0/998 2733/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000397 61 0 58 58 0.62 + 0/998 2734/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000398 96 5 28 87 0.615 + 0/998 2735/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000398 49 2 30 43 0.622 + 0/998 2736/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000399 86 2 16 84 0.6 + 0/998 2737/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000399 109 1 31 108 0.599 + 0/998 2738/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.0004 141 7 89 123 0.613 + 0/998 2739/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000402 114 13 171 92 0.598 + 0/998 2740/3375 66.7 66.1 140 140 149 539 1.1e+03 0.0054 0.000403 80 8 41 67 0.6 + 0/998 2741/3375 66.7 66.1 140 140 149 539 1.1e+03 0.0054 0.000403 52 1 43 46 0.609 + 0/998 2742/3375 66.7 66.1 140 140 149 539 1.1e+03 0.0054 0.000403 76 1 20 72 0.611 + 0/998 2743/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000404 122 3 56 116 0.61 + 0/998 2744/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000404 74 4 39 68 0.606 + 0/998 2745/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000404 92 1 25 91 0.613 + 0/998 2746/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000405 86 4 59 80 0.616 + 0/998 2747/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000405 37 1 50 35 0.609 + 0/998 2748/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000405 50 0 43 45 0.6 + 0/998 2749/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00538 0.000407 98 9 138 86 0.607 + 0/998 2750/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00538 0.000407 76 1 51 72 0.612 + 0/998 2751/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00538 0.000407 54 3 41 50 0.611 + 0/998 2752/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00539 0.000409 89 3 85 84 0.606 + 0/998 2753/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00538 0.000409 44 0 78 42 0.594 + 0/998 2754/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00538 0.00041 57 2 167 50 0.605 + 0/998 2755/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00538 0.00041 66 1 25 64 0.603 + 0/998 2756/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00538 0.00041 79 1 67 71 0.598 + 0/998 2757/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00538 0.00041 94 1 27 92 0.614 + 0/998 2758/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00538 0.000409 74 0 48 73 0.599 + 0/998 2759/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00538 0.000411 72 7 179 61 0.626 + 0/998 2760/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00538 0.000411 120 2 36 117 0.63 + 0/998 2761/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00537 0.000411 98 0 35 95 0.602 + 0/998 2762/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00537 0.000411 44 2 234 36 0.607 + 0/998 2763/3375 66.6 66.1 140 140 149 538 1.1e+03 0.00537 0.000411 54 2 65 50 0.588 + 0/998 2764/3375 66.6 66.1 140 140 149 538 1.1e+03 0.00537 0.000411 102 2 51 98 0.614 + 0/998 2765/3375 66.6 66.1 140 140 149 538 1.1e+03 0.00537 0.000412 82 4 94 77 0.61 + 0/998 2766/3375 66.6 66.1 140 140 149 538 1.1e+03 0.00537 0.000412 77 1 17 75 0.604 + 0/998 2767/3375 66.6 66.1 140 140 149 538 1.1e+03 0.00537 0.000412 77 0 25 76 0.604 + 0/998 2768/3375 66.6 66.1 140 140 149 538 1.1e+03 0.00537 0.000412 70 3 43 67 0.589 + 0/998 2769/3375 66.6 66.1 140 140 149 538 1.1e+03 0.00537 0.000413 95 3 57 88 0.589 + 0/998 2770/3375 66.6 66.1 140 140 149 538 1.1e+03 0.00537 0.000413 52 0 13 52 0.608 + 0/998 2771/3375 66.6 66.1 140 140 149 538 1.1e+03 0.00537 0.000413 61 1 45 60 0.604 + 0/998 2772/3375 66.6 66.1 140 140 149 538 1.1e+03 0.00537 0.000413 50 2 74 46 0.603 + 0/998 2773/3375 66.5 66 140 140 148 538 1.1e+03 0.00537 0.000413 55 0 31 54 0.608 + 0/998 2774/3375 66.5 66 140 140 148 538 1.1e+03 0.00537 0.000413 93 1 60 90 0.609 + 0/998 2775/3375 66.5 66 140 140 148 538 1.1e+03 0.00529 0.000413 80 1 209 64 0.623 + 0/998 2776/3375 66.5 66 140 140 148 538 1.1e+03 0.00529 0.000414 78 5 128 69 0.618 + 0/998 2777/3375 66.5 66 140 140 148 538 1.1e+03 0.00529 0.000414 44 0 67 42 0.612 + 0/998 2778/3375 66.5 66 140 139 148 538 1.1e+03 0.00529 0.000417 78 8 106 66 0.606 + 0/998 2779/3375 66.5 66 140 139 148 538 1.1e+03 0.00529 0.000417 85 0 27 83 0.633 + 0/998 2780/3375 66.5 66 140 139 148 538 1.1e+03 0.00529 0.000418 80 7 150 69 0.605 + 0/998 2781/3375 66.5 66 140 139 148 538 1.1e+03 0.00529 0.00042 115 11 298 97 0.627 + 0/998 2782/3375 66.5 66 140 139 148 538 1.1e+03 0.00529 0.00042 98 3 79 94 0.614 + 0/998 2783/3375 66.5 66 140 139 148 538 1.1e+03 0.00529 0.00042 93 2 47 89 0.611 + 0/998 2784/3375 66.6 66 140 140 148 538 1.1e+03 0.0053 0.000421 212 7 52 197 0.605 + 0/998 2785/3375 66.6 66 140 139 148 538 1.1e+03 0.00529 0.000421 60 0 70 57 0.605 + 0/998 2786/3375 66.6 66 140 139 148 538 1.1e+03 0.00529 0.000421 95 1 64 89 0.615 + 0/998 2787/3375 66.6 66.1 140 140 148 538 1.1e+03 0.00529 0.000421 138 3 49 132 0.606 + 0/998 2788/3375 66.6 66 140 139 148 538 1.1e+03 0.00529 0.000422 45 3 109 42 0.602 + 0/998 2789/3375 66.6 66 140 139 148 538 1.1e+03 0.00529 0.000422 114 3 63 106 0.62 + 0/998 2790/3375 66.6 66 140 139 148 538 1.1e+03 0.00529 0.000422 76 1 36 74 0.604 + 0/998 2791/3375 66.6 66 140 139 148 538 1.1e+03 0.00529 0.000423 87 3 46 83 0.592 + 0/998 2792/3375 66.5 66 140 139 148 538 1.1e+03 0.00529 0.000422 73 1 20 69 0.607 + 0/998 2793/3375 66.5 66 140 139 148 538 1.1e+03 0.00529 0.000423 57 3 20 54 0.614 + 0/998 2794/3375 66.5 66 140 139 148 538 1.1e+03 0.00529 0.000423 67 1 37 64 0.607 + 0/998 2795/3375 66.5 66 140 139 148 538 1.1e+03 0.00529 0.000424 83 4 69 79 0.608 + 0/998 2796/3375 66.5 66 140 139 148 538 1.1e+03 0.00529 0.000424 45 0 50 45 0.594 + 0/998 2797/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 82 0 18 81 0.609 + 0/998 2798/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000424 70 1 10 69 0.59 + 0/998 2799/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 78 1 64 75 0.605 + 0/998 2800/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 119 0 17 118 0.611 + 0/998 2801/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 97 1 37 96 0.584 + 0/998 2802/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000424 83 1 73 79 0.616 + 0/998 2803/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 50 0 15 50 0.613 + 0/998 2804/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000424 48 1 69 42 0.6 + 0/998 2805/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 99 0 44 99 0.604 + 0/998 2806/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 99 0 6 98 0.597 + 0/998 2807/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 117 0 24 116 0.608 + 0/998 2808/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 53 0 17 53 0.615 + 0/998 2809/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 63 0 29 61 0.609 + 0/998 2810/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 67 0 38 67 0.601 + 0/998 2811/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 65 2 27 62 0.619 + 0/998 2812/3375 66.5 66 139 139 148 537 1.1e+03 0.00529 0.000423 54 1 11 53 0.591 + 0/998 2813/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 104 1 19 103 0.612 + 0/998 2814/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 109 2 17 106 0.614 + 0/998 2815/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 92 0 7 92 0.613 + 0/998 2816/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 76 1 30 75 0.602 + 0/998 2817/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 106 1 12 101 0.612 + 0/998 2818/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 59 0 66 59 0.602 + 0/998 2819/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 83 0 2 83 0.605 + 0/998 2820/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 58 1 50 56 0.59 + 0/998 2821/3375 66.5 66 139 139 148 538 1.1e+03 0.00528 0.000424 112 3 47 107 0.598 + 0/998 2822/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000427 109 4 118 98 0.623 + 0/998 2823/3375 66.5 66 139 139 148 538 1.1e+03 0.0053 0.000431 96 8 114 85 0.622 + 0/998 2824/3375 66.5 66 139 139 148 538 1.1e+03 0.0053 0.000431 112 1 84 107 0.606 + 0/998 2825/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000431 102 2 65 99 0.607 + 0/998 2826/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000431 150 1 45 147 0.616 + 0/998 2827/3375 66.5 66 139 139 148 538 1.1e+03 0.0053 0.000432 92 7 47 82 0.596 + 0/998 2828/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000432 96 0 28 95 0.628 + 0/998 2829/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000432 64 2 199 57 0.606 + 0/998 2830/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000432 56 0 90 53 0.599 + 0/998 2831/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000432 80 0 32 77 0.607 + 0/998 2832/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000432 73 2 39 71 0.608 + 0/998 2833/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000433 95 1 58 91 0.607 + 0/998 2834/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000434 59 5 95 53 0.603 + 0/998 2835/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000434 75 0 102 75 0.6 + 0/998 2836/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000436 84 2 61 78 0.618 + 0/998 2837/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000436 57 0 32 57 0.615 + 0/998 2838/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000436 115 2 19 113 0.622 + 0/998 2839/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000436 73 0 32 71 0.604 + 0/998 2840/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000435 104 0 43 100 0.615 + 0/998 2841/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000435 59 0 110 58 0.609 + 0/998 2842/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000436 98 2 54 94 0.619 + 0/998 2843/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000436 80 5 90 63 0.598 + 0/998 2844/3375 66.5 66 139 139 148 537 1.1e+03 0.00522 0.000437 52 3 108 41 0.61 + 0/998 2845/3375 66.5 66 139 139 148 537 1.1e+03 0.00522 0.000438 73 5 53 66 0.607 + 0/998 2846/3375 66.5 66 139 139 148 537 1.1e+03 0.00522 0.000439 99 2 19 94 0.625 + 0/998 2847/3375 66.5 66 139 139 148 537 1.1e+03 0.00522 0.000438 77 0 25 76 0.598 + 0/998 2848/3375 66.5 66 139 139 148 537 1.1e+03 0.00522 0.000439 77 2 73 73 0.615 + 0/998 2849/3375 66.5 66 139 139 148 537 1.1e+03 0.00522 0.000439 59 0 28 58 0.611 + 0/998 2850/3375 66.5 66 139 139 148 537 1.1e+03 0.00522 0.000441 113 9 62 98 0.607 + 0/998 2851/3375 66.5 66 139 139 148 537 1.1e+03 0.00522 0.000441 72 1 30 71 0.614 + 0/998 2852/3375 66.5 66 139 139 148 537 1.1e+03 0.00522 0.000441 109 1 33 108 0.607 + 0/998 2853/3375 66.5 66 139 139 148 537 1.1e+03 0.00522 0.000441 66 1 34 63 0.609 + 0/998 2854/3375 66.5 66 139 139 148 537 1.1e+03 0.00522 0.000441 55 3 120 49 0.596 + 0/998 2855/3375 66.5 65.9 139 139 148 537 1.1e+03 0.00522 0.000442 48 2 94 40 0.609 + 0/998 2856/3375 66.5 65.9 139 139 148 537 1.1e+03 0.00522 0.000442 73 0 70 72 0.605 + 0/998 2857/3375 66.4 65.9 139 139 148 537 1.1e+03 0.00655 0.000449 57 3 116 50 0.605 + 0/998 2858/3375 66.4 65.9 139 139 148 537 1.1e+03 0.00655 0.00045 74 2 292 68 0.617 + 0/998 2859/3375 66.4 65.9 139 139 148 537 1.1e+03 0.00655 0.000451 68 7 76 61 0.598 + 0/998 2860/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00655 0.000451 34 1 132 29 0.604 + 0/998 2861/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00642 0.000451 73 2 137 68 0.61 + 0/998 2862/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00642 0.000451 111 3 79 107 0.63 + 0/998 2863/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00642 0.000452 109 2 43 106 0.61 + 0/998 2864/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00642 0.000452 56 4 72 48 0.601 + 0/998 2865/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00642 0.000452 69 1 65 64 0.61 + 0/998 2866/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00642 0.000452 51 0 24 51 0.607 + 0/998 2867/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00642 0.000453 42 3 79 37 0.613 + 0/998 2868/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00642 0.000453 81 0 29 81 0.612 + 0/998 2869/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00642 0.000453 73 2 36 69 0.589 + 0/998 2870/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00531 0.000454 95 5 40 86 0.606 + 0/998 2871/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00531 0.000454 97 3 35 91 0.625 + 0/998 2872/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00531 0.000454 123 2 67 115 0.616 + 0/998 2873/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00531 0.000454 92 3 38 84 0.608 + 0/998 2874/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00531 0.000455 88 5 84 77 0.606 + 0/998 2875/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00531 0.000457 82 10 232 67 0.621 + 0/998 2876/3375 66.4 65.9 139 139 148 536 1.09e+03 0.00531 0.000456 46 0 36 45 0.599 + 0/998 2877/3375 66.4 65.9 139 139 148 536 1.09e+03 0.00531 0.000457 82 6 124 70 0.602 + 0/998 2878/3375 66.4 65.9 139 139 148 536 1.09e+03 0.00531 0.000457 54 0 30 54 0.614 + 0/998 2879/3375 66.4 65.9 139 139 148 536 1.09e+03 0.00531 0.000457 86 0 38 85 0.596 + 0/998 2880/3375 66.4 65.9 139 139 148 536 1.09e+03 0.00531 0.000457 69 1 60 67 0.611 + 0/998 2881/3375 66.4 65.9 139 139 148 536 1.09e+03 0.00531 0.000458 72 5 279 58 0.604 + 0/998 2882/3375 66.4 65.9 139 139 148 536 1.09e+03 0.00531 0.000459 118 2 42 113 0.617 + 0/998 2883/3375 66.4 65.9 139 139 148 536 1.09e+03 0.00531 0.000461 101 4 78 96 0.608 + 0/998 2884/3375 66.4 65.9 139 139 147 536 1.09e+03 0.00531 0.000462 61 6 69 55 0.607 + 0/998 2885/3375 66.4 65.9 139 139 147 536 1.09e+03 0.00531 0.000463 103 7 116 90 0.604 + 0/998 2886/3375 66.4 65.9 139 139 147 536 1.09e+03 0.00531 0.000464 90 7 188 77 0.627 + 0/998 2887/3375 66.4 65.9 139 139 147 536 1.09e+03 0.00531 0.000465 105 3 42 99 0.599 + 0/998 2888/3375 66.4 65.9 139 139 147 536 1.09e+03 0.00531 0.000465 110 2 69 103 0.609 + 0/998 2889/3375 66.4 65.9 139 139 147 536 1.09e+03 0.00531 0.000465 54 1 161 52 0.601 + 0/998 2890/3375 66.4 65.9 139 139 147 536 1.09e+03 0.00531 0.000465 81 0 36 81 0.607 + 0/998 2891/3375 66.4 65.9 139 139 147 536 1.09e+03 0.00531 0.000465 92 3 45 88 0.6 + 0/998 2892/3375 66.4 65.9 139 139 147 536 1.09e+03 0.00531 0.000465 92 1 33 91 0.602 + 0/998 2893/3375 66.4 65.8 139 139 147 536 1.09e+03 0.00531 0.000465 64 2 81 59 0.602 + 0/998 2894/3375 66.4 65.8 139 139 147 536 1.09e+03 0.00531 0.000467 82 8 141 64 0.612 + 0/998 2895/3375 66.4 65.8 139 139 147 536 1.09e+03 0.00531 0.000467 83 0 159 78 0.624 + 0/998 2896/3375 66.4 65.8 139 139 147 536 1.09e+03 0.00531 0.000467 97 0 91 93 0.603 + 0/998 2897/3375 66.4 65.8 139 139 147 536 1.09e+03 0.00531 0.000468 74 5 277 58 0.62 + 0/998 2898/3375 66.4 65.8 139 138 147 536 1.09e+03 0.00531 0.000468 82 1 214 79 0.625 + 0/998 2899/3375 66.4 65.8 139 138 147 536 1.09e+03 0.0053 0.000469 63 1 454 57 0.624 + 0/998 2900/3375 66.4 65.8 139 138 147 536 1.09e+03 0.0052 0.000469 103 1 69 100 0.612 + 0/998 2901/3375 66.4 65.8 139 138 147 536 1.09e+03 0.0052 0.000469 58 3 144 54 0.612 + 0/998 2902/3375 66.4 65.8 139 139 147 536 1.09e+03 0.0052 0.000469 77 2 44 74 0.628 + 0/998 2903/3375 66.4 65.8 139 138 147 536 1.09e+03 0.0052 0.00047 65 2 61 57 0.622 + 0/998 2904/3375 66.4 65.8 139 138 147 536 1.09e+03 0.00498 0.00047 69 1 53 65 0.604 + 0/998 2905/3375 66.3 65.8 139 138 147 536 1.09e+03 0.00498 0.000469 40 0 23 39 0.621 + 0/998 2906/3375 66.3 65.8 139 138 147 536 1.09e+03 0.00498 0.00047 80 3 13 77 0.607 + 0/998 2907/3375 66.3 65.8 139 138 147 536 1.09e+03 0.00492 0.00047 82 1 42 79 0.611 + 0/998 2908/3375 66.3 65.8 139 138 147 536 1.09e+03 0.00492 0.00047 73 0 45 72 0.617 + 0/998 2909/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00492 0.000469 77 0 7 77 0.609 + 0/998 2910/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00492 0.00047 85 2 21 83 0.605 + 0/998 2911/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00492 0.00047 64 1 16 62 0.624 + 0/998 2912/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00492 0.00047 143 1 6 140 0.631 + 0/998 2913/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00492 0.000469 81 0 12 78 0.617 + 0/998 2914/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00492 0.000469 62 0 13 61 0.62 + 0/998 2915/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00492 0.000469 114 1 25 113 0.599 + 0/998 2916/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00492 0.000469 85 2 45 80 0.629 + 0/998 2917/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00485 0.000469 49 0 24 48 0.602 + 0/998 2918/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00485 0.00047 84 2 31 82 0.618 + 0/998 2919/3375 66.3 65.8 139 138 147 535 1.09e+03 0.0042 0.00047 74 0 26 72 0.61 + 0/998 2920/3375 66.3 65.8 139 138 147 535 1.09e+03 0.0042 0.000471 65 3 65 59 0.679 + 0/998 2921/3375 66.3 65.8 139 138 147 535 1.09e+03 0.0042 0.000472 85 5 65 77 0.61 + 0/998 2922/3375 66.3 65.8 139 138 147 535 1.09e+03 0.0042 0.000472 88 1 34 82 0.621 + 0/998 2923/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00415 0.000472 75 0 19 73 0.611 + 0/998 2924/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00415 0.000474 51 3 98 48 0.608 + 0/998 2925/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00415 0.000475 54 4 61 48 0.618 + 0/998 2926/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00415 0.000475 60 2 121 55 0.623 + 0/998 2927/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00415 0.000475 91 1 47 86 0.602 + 0/998 2928/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00415 0.000475 78 1 64 68 0.602 + 0/998 2929/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00415 0.000475 117 2 53 111 0.619 + 0/998 2930/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00415 0.000475 76 1 155 73 0.614 + 0/998 2931/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00415 0.000476 49 6 144 41 0.598 + 0/998 2932/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00415 0.000477 94 4 140 78 0.622 + 0/998 2933/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00415 0.000477 123 2 32 121 0.622 + 0/998 2934/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00415 0.000477 115 3 91 108 0.609 + 0/998 2935/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00415 0.000478 96 5 148 83 0.603 + 0/998 2936/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00415 0.000478 44 3 62 41 0.599 + 0/998 2937/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00414 0.000478 99 1 99 94 0.629 + 0/998 2938/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00414 0.000479 46 2 205 37 0.617 + 0/998 2939/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00414 0.00048 92 4 93 81 0.617 + 0/998 2940/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00414 0.000482 123 12 128 104 0.605 + 0/998 2941/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00414 0.000481 126 0 33 124 0.601 + 0/998 2942/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00414 0.000482 41 2 51 39 0.601 + 0/998 2943/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00414 0.000482 66 4 117 58 0.617 + 0/998 2944/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.00049 66 3 75 62 0.61 + 0/998 2945/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000491 107 4 54 101 0.614 + 0/998 2946/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000491 165 3 58 156 0.631 + 0/998 2947/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000492 79 4 40 73 0.618 + 0/998 2948/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000493 116 4 81 104 0.606 + 0/998 2949/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00451 0.000493 91 5 46 84 0.621 + 0/998 2950/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00451 0.000494 55 3 82 48 0.61 + 0/998 2951/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000496 118 6 68 108 0.633 + 0/998 2952/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000497 90 6 96 77 0.581 + 0/998 2953/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000498 62 4 95 57 0.606 + 0/998 2954/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000498 63 2 39 59 0.609 + 0/998 2955/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000498 84 1 47 82 0.607 + 0/998 2956/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000499 134 8 91 124 0.609 + 0/998 2957/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000499 52 2 88 45 0.608 + 0/998 2958/3375 66.3 65.8 138 138 147 534 1.09e+03 0.00452 0.0005 35 2 66 32 0.628 + 0/998 2959/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00452 0.0005 48 1 57 43 0.619 + 0/998 2960/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.0005 192 2 96 180 0.625 + 0/998 2961/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000501 80 8 133 63 0.606 + 0/998 2962/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000503 93 2 75 84 0.605 + 0/998 2963/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000503 99 2 85 94 0.613 + 0/998 2964/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000504 52 4 75 42 0.603 + 0/998 2965/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000504 102 3 55 98 0.606 + 0/998 2966/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000505 82 5 73 71 0.607 + 0/998 2967/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000506 51 5 55 45 0.603 + 0/998 2968/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000507 91 6 155 74 0.623 + 0/998 2969/3375 66.3 65.7 138 138 147 535 1.09e+03 0.00452 0.000508 68 3 43 65 0.615 + 0/998 2970/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00452 0.000508 46 0 30 45 0.622 + 0/998 2971/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00452 0.000507 81 0 51 80 0.597 + 0/998 2972/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00452 0.000507 97 0 25 97 0.601 + 0/998 2973/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00452 0.00051 94 5 108 82 0.633 + 0/998 2974/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00452 0.00051 66 0 62 65 0.604 + 0/998 2975/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00453 0.000514 64 5 73 51 0.609 + 0/998 2976/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00453 0.000514 56 0 55 52 0.584 + 0/998 2977/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00453 0.000514 131 2 36 122 0.612 + 0/998 2978/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00453 0.000514 76 5 71 67 0.613 + 0/998 2979/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00453 0.000515 86 1 41 82 0.611 + 0/998 2980/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00453 0.000515 46 1 35 45 0.594 + 0/998 2981/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00453 0.000515 89 1 29 86 0.603 + 0/998 2982/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00453 0.000515 84 2 72 77 0.614 + 0/998 2983/3375 66.2 65.7 138 138 147 534 1.09e+03 0.00453 0.000515 40 1 16 37 0.591 + 0/998 2984/3375 66.2 65.7 138 138 147 534 1.09e+03 0.00453 0.000515 104 1 21 103 0.598 + 0/998 2985/3375 66.2 65.7 138 138 147 534 1.09e+03 0.00453 0.000515 89 4 59 82 0.606 + 0/998 2986/3375 66.2 65.7 138 138 147 534 1.09e+03 0.00453 0.000516 87 4 82 76 0.609 + 0/998 2987/3375 66.2 65.7 138 138 147 534 1.09e+03 0.00452 0.000516 57 5 170 46 0.61 + 0/998 2988/3375 66.2 65.7 138 138 147 534 1.09e+03 0.00452 0.000517 89 4 92 83 0.619 + 0/998 2989/3375 66.2 65.7 138 138 147 534 1.09e+03 0.00452 0.000517 107 2 85 99 0.615 + 0/998 2990/3375 66.2 65.7 138 138 147 534 1.09e+03 0.00452 0.000518 87 5 179 78 0.625 + 0/998 2991/3375 66.2 65.7 138 138 147 534 1.09e+03 0.00452 0.000519 67 8 210 52 0.624 + 0/998 2992/3375 66.2 65.7 138 138 147 534 1.09e+03 0.0045 0.000519 53 0 191 48 0.629 + 0/998 2993/3375 66.2 65.7 138 138 147 534 1.09e+03 0.0045 0.00052 113 9 263 99 0.622 + 0/998 2994/3375 66.2 65.7 138 138 147 534 1.09e+03 0.0045 0.000521 76 5 130 65 0.618 + 0/998 2995/3375 66.2 65.7 138 138 146 534 1.09e+03 0.0045 0.000521 60 1 214 57 0.62 + 0/998 2996/3375 66.2 65.7 138 138 146 534 1.09e+03 0.00449 0.000521 76 5 236 67 0.619 + 0/998 2997/3375 66.2 65.7 138 138 146 534 1.09e+03 0.00449 0.000521 76 1 118 74 0.61 + 0/998 2998/3375 66.2 65.7 138 138 146 534 1.09e+03 0.00449 0.000523 101 8 193 90 0.618 + 0/998 2999/3375 66.2 65.7 138 138 146 534 1.09e+03 0.00449 0.000523 77 1 63 74 0.614 + 0/998 3000/3375 66.2 65.7 138 138 146 534 1.09e+03 0.00449 0.000524 74 10 227 60 0.619 + 0/998 3001/3375 66.2 65.7 138 138 146 533 1.09e+03 0.00449 0.000527 81 6 238 67 0.606 + 0/998 3002/3375 66.2 65.7 138 138 146 533 1.09e+03 0.00449 0.000527 95 5 69 87 0.621 + 0/998 3003/3375 66.2 65.6 138 138 146 533 1.09e+03 0.00449 0.000527 68 1 91 65 0.585 + 0/998 3004/3375 66.2 65.6 138 138 146 533 1.09e+03 0.00449 0.000527 79 1 125 78 0.629 + 0/998 3005/3375 66.2 65.6 138 138 146 533 1.09e+03 0.00449 0.000527 70 1 186 61 0.615 + 0/998 3006/3375 66.2 65.6 138 137 146 533 1.09e+03 0.00449 0.000527 29 0 60 27 0.594 + 0/998 3007/3375 66.2 65.6 138 137 146 533 1.09e+03 0.00449 0.000529 138 14 178 115 0.618 + 0/998 3008/3375 66.2 65.6 138 137 146 533 1.09e+03 0.00449 0.00053 43 3 180 40 0.606 + 0/998 3009/3375 66.2 65.6 138 137 146 533 1.09e+03 0.00445 0.000529 82 0 44 81 0.679 + 0/998 3010/3375 66.2 65.6 138 137 146 533 1.09e+03 0.00445 0.000529 99 1 38 95 0.66 + 0/998 3011/3375 66.2 65.6 138 137 146 533 1.09e+03 0.00445 0.00053 87 6 96 79 0.626 + 0/998 3012/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00444 0.00053 42 0 111 41 0.602 + 0/998 3013/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00444 0.00053 85 1 70 79 0.634 + 0/998 3014/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00444 0.00053 81 1 38 80 0.625 + 0/998 3015/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00444 0.00053 97 2 34 95 1.57 + 0/998 3016/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00444 0.000531 60 3 47 55 0.65 + 0/998 3017/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00444 0.000531 116 0 21 116 0.643 + 0/998 3018/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00444 0.000531 60 1 73 56 0.631 + 0/998 3019/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00444 0.000531 82 4 70 75 1.82 + 0/998 3020/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00445 0.000534 87 6 154 70 0.624 + 0/998 3021/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00444 0.000534 45 0 52 42 0.591 + 0/998 3022/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00444 0.000533 75 0 108 72 0.624 + 0/998 3023/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00437 0.000534 60 1 153 56 0.634 + 0/998 3024/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00437 0.000534 119 7 78 106 0.623 + 0/998 3025/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00437 0.000534 63 0 13 61 0.593 + 0/998 3026/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00437 0.000534 43 0 60 43 0.599 + 0/998 3027/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00437 0.000534 92 3 36 86 0.625 + 0/998 3028/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00437 0.000535 71 2 58 67 0.62 + 0/998 3029/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00437 0.000534 82 0 50 81 0.896 + 0/998 3030/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00437 0.000535 83 4 109 76 0.608 + 0/998 3031/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00437 0.000535 91 0 32 89 0.626 + 0/998 3032/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00437 0.000535 49 1 68 46 0.615 + 0/998 3033/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00437 0.000535 82 1 12 81 1.18 + 0/998 3034/3375 66.1 65.5 138 137 146 533 1.09e+03 0.00437 0.000535 58 0 62 57 0.607 + 0/998 3035/3375 66.1 65.5 138 137 146 533 1.09e+03 0.00437 0.000535 87 2 22 83 0.605 + 0/998 3036/3375 66.1 65.5 138 137 146 533 1.08e+03 0.00437 0.000536 90 7 92 81 0.585 + 0/998 3037/3375 66.1 65.5 138 137 146 533 1.08e+03 0.00436 0.000536 75 0 22 74 0.608 + 0/998 3038/3375 66.1 65.5 138 137 146 533 1.08e+03 0.00436 0.000536 96 2 46 93 0.596 + 0/998 3039/3375 66.1 65.6 138 137 146 533 1.08e+03 0.00436 0.000536 112 2 41 109 0.614 + 0/998 3040/3375 66.1 65.6 138 137 146 533 1.08e+03 0.00436 0.000536 116 3 86 112 0.608 + 0/998 3041/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00436 0.000537 123 6 83 113 0.585 + 0/998 3042/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00436 0.000538 119 10 227 93 0.601 + 0/998 3043/3375 66.1 65.6 138 137 146 533 1.08e+03 0.00436 0.000538 71 0 90 69 0.591 + 0/998 3044/3375 66.1 65.6 138 137 146 532 1.08e+03 0.00436 0.000538 54 0 125 49 0.608 + 0/998 3045/3375 66.1 65.6 138 137 146 532 1.08e+03 0.00436 0.000538 90 3 45 87 0.602 + 0/998 3046/3375 66.1 65.6 138 137 146 532 1.08e+03 0.00436 0.000539 75 2 104 72 0.609 + 0/998 3047/3375 66.1 65.5 138 137 146 532 1.08e+03 0.00436 0.000539 78 6 333 58 0.587 + 0/998 3048/3375 66.1 65.5 138 137 146 532 1.08e+03 0.00624 0.000546 76 6 297 68 0.618 + 0/998 3049/3375 66.1 65.5 138 137 146 532 1.08e+03 0.00624 0.000545 93 0 86 93 0.607 + 0/998 3050/3375 66.1 65.6 138 137 146 533 1.08e+03 0.00624 0.000545 147 0 18 147 0.612 + 0/998 3051/3375 66.1 65.6 138 137 146 532 1.08e+03 0.00623 0.000545 52 0 114 46 0.596 + 0/998 3052/3375 66.1 65.6 138 137 146 533 1.08e+03 0.00623 0.000545 97 0 55 95 0.615 + 0/998 3053/3375 66.1 65.6 138 137 146 533 1.08e+03 0.00555 0.000545 95 2 150 90 0.607 + 0/998 3054/3375 66.1 65.6 138 137 146 533 1.08e+03 0.00555 0.000546 148 3 60 140 0.625 + 0/998 3055/3375 66.1 65.6 138 137 146 533 1.08e+03 0.00555 0.000546 91 3 91 84 0.599 + 0/998 3056/3375 66.1 65.6 138 137 146 533 1.08e+03 0.00555 0.000548 69 4 48 63 0.624 + 0/998 3057/3375 66.1 65.6 138 137 146 533 1.08e+03 0.00555 0.000548 80 1 112 74 0.591 + 0/998 3058/3375 66.1 65.5 138 137 146 533 1.08e+03 0.00555 0.000549 47 2 59 43 0.619 + 0/998 3059/3375 66.1 65.5 138 137 146 533 1.08e+03 0.00555 0.000549 96 0 21 95 0.626 + 0/998 3060/3375 66.1 65.5 138 137 146 533 1.08e+03 0.00555 0.00055 59 4 61 55 0.586 + 0/998 3061/3375 66.1 65.5 138 137 146 532 1.08e+03 0.00555 0.00055 65 2 70 59 0.586 + 0/998 3062/3375 66.1 65.5 138 137 146 532 1.08e+03 0.00555 0.00055 120 3 21 117 0.615 + 0/998 3063/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000552 65 9 140 50 0.598 + 0/998 3064/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000552 72 4 32 68 0.606 + 0/998 3065/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000552 116 3 37 108 0.607 + 0/998 3066/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000556 80 15 129 55 0.59 + 0/998 3067/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000556 110 0 20 110 0.591 + 0/998 3068/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000556 73 2 31 70 0.572 + 0/998 3069/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000556 98 3 51 92 0.619 + 0/998 3070/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000557 61 4 40 57 0.6 + 0/998 3071/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000557 102 3 14 99 0.592 + 0/998 3072/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000557 113 2 52 105 0.607 + 0/998 3073/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000558 69 3 41 65 0.609 + 0/998 3074/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000558 84 2 50 79 0.62 + 0/998 3075/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000558 87 1 54 84 0.617 + 0/998 3076/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000558 75 1 34 74 0.616 + 0/998 3077/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00556 0.00056 113 4 69 106 0.615 + 0/998 3078/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00552 0.00056 77 5 83 70 0.613 + 0/998 3079/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00552 0.000561 73 4 59 67 0.604 + 0/998 3080/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00552 0.000561 64 1 43 62 0.605 + 0/998 3081/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00552 0.000561 77 2 64 72 0.604 + 0/998 3082/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00552 0.000561 73 1 92 65 0.591 + 0/998 3083/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00561 0.000567 114 2 103 107 0.607 + 0/998 3084/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00561 0.000567 67 1 33 64 0.6 + 0/998 3085/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00561 0.000567 104 1 34 98 0.611 + 0/998 3086/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00561 0.000568 75 6 201 61 0.609 + 0/998 3087/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00561 0.000568 70 1 30 67 0.585 + 0/998 3088/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00561 0.000568 70 2 53 66 0.609 + 0/998 3089/3375 66.1 65.5 137 137 146 532 1.08e+03 0.0056 0.000568 108 2 92 100 0.606 + 0/998 3090/3375 66.1 65.5 137 137 146 532 1.08e+03 0.0056 0.000568 100 2 119 96 0.604 + 0/998 3091/3375 66.1 65.5 137 137 146 532 1.08e+03 0.0056 0.000568 59 3 148 48 0.596 + 0/998 3092/3375 66 65.5 137 137 146 532 1.08e+03 0.0056 0.000572 70 10 187 51 0.611 + 0/998 3093/3375 66.1 65.5 137 137 146 532 1.08e+03 0.0056 0.000572 106 1 34 103 0.611 + 0/998 3094/3375 66.1 65.5 137 137 146 532 1.08e+03 0.0056 0.000572 118 0 36 116 0.606 + 0/998 3095/3375 66.1 65.5 137 137 146 532 1.08e+03 0.0056 0.000572 55 1 41 54 0.597 + 0/998 3096/3375 66 65.5 137 137 146 532 1.08e+03 0.0056 0.000572 52 0 73 52 0.606 + 0/998 3097/3375 66 65.5 137 137 146 532 1.08e+03 0.00557 0.000573 65 6 142 55 0.604 + 0/998 3098/3375 66 65.5 137 137 146 532 1.08e+03 0.00557 0.000573 80 0 97 77 0.624 + 0/998 3099/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00557 0.000574 175 3 60 162 0.613 + 0/998 3100/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00557 0.000575 71 6 37 62 0.609 + 0/998 3101/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00557 0.000575 116 4 61 106 0.624 + 0/998 3102/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00557 0.000575 59 2 80 57 0.625 + 0/998 3103/3375 66 65.5 137 137 146 532 1.08e+03 0.00557 0.000576 69 7 131 60 0.607 + 0/998 3104/3375 66 65.5 137 137 146 532 1.08e+03 0.00557 0.000576 71 1 28 68 0.618 + 0/998 3105/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00557 0.000577 135 2 116 130 0.61 + 0/998 3106/3375 66 65.5 137 137 146 532 1.08e+03 0.00557 0.000577 65 4 191 54 0.607 + 0/998 3107/3375 66 65.5 137 137 146 532 1.08e+03 0.00557 0.000578 107 7 265 96 0.599 + 0/998 3108/3375 66.1 65.6 137 137 146 532 1.08e+03 0.00557 0.000578 111 1 136 107 0.607 + 0/998 3109/3375 66.1 65.6 137 137 146 532 1.08e+03 0.00557 0.000578 93 2 100 88 0.598 + 0/998 3110/3375 66.1 65.6 137 137 146 532 1.08e+03 0.00557 0.000578 42 2 148 36 0.597 + 0/998 3111/3375 66.1 65.6 137 137 146 532 1.08e+03 0.00557 0.000579 94 6 69 87 0.606 + 0/998 3112/3375 66.1 65.6 137 137 146 532 1.08e+03 0.00557 0.000579 135 2 88 132 0.6 + 0/998 3113/3375 66.1 65.6 137 137 146 532 1.08e+03 0.00557 0.00058 81 4 35 77 0.631 + 0/998 3114/3375 66.1 65.6 137 137 146 532 1.08e+03 0.00557 0.00058 55 3 105 50 0.59 + 0/998 3115/3375 66.1 65.6 137 137 146 532 1.08e+03 0.00557 0.00058 50 0 55 49 0.623 + 0/998 3116/3375 66 65.6 137 137 146 532 1.08e+03 0.00557 0.00058 94 0 18 93 0.601 + 0/998 3117/3375 66 65.6 137 137 146 532 1.08e+03 0.00557 0.00058 51 0 134 49 0.607 + 0/998 3118/3375 66 65.6 137 137 146 532 1.08e+03 0.00554 0.00058 55 0 12 54 0.598 + 0/998 3119/3375 66 65.5 137 137 146 532 1.08e+03 0.00554 0.00058 74 2 10 72 0.611 + 0/998 3120/3375 66 65.6 137 137 146 532 1.08e+03 0.00554 0.00058 90 0 32 90 0.591 + 0/998 3121/3375 66 65.5 137 137 145 532 1.08e+03 0.00554 0.00058 71 3 35 67 0.618 + 0/998 3122/3375 66 65.5 137 137 145 532 1.08e+03 0.00554 0.00058 57 2 58 49 0.612 + 0/998 3123/3375 66 65.5 137 137 145 532 1.08e+03 0.00554 0.00058 104 2 21 100 0.614 + 0/998 3124/3375 66 65.5 137 137 145 532 1.08e+03 0.00554 0.00058 52 0 35 52 0.593 + 0/998 3125/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.00058 86 2 78 81 0.62 + 0/998 3126/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000581 113 2 50 107 0.618 + 0/998 3127/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000583 92 11 92 77 0.606 + 0/998 3128/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000583 84 0 138 77 0.621 + 0/998 3129/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000583 73 2 141 65 0.632 + 0/998 3130/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000583 90 3 104 82 0.61 + 0/998 3131/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000583 65 0 88 64 0.637 + 0/998 3132/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000583 97 2 60 95 0.596 + 0/998 3133/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000583 97 5 48 90 0.616 + 0/998 3134/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000584 101 7 134 88 0.616 + 0/998 3135/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000585 45 4 108 37 0.608 + 0/998 3136/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000585 56 2 154 50 0.597 + 0/998 3137/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000586 94 6 180 83 0.609 + 0/998 3138/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000588 93 12 197 78 0.607 + 0/998 3139/3375 66 65.5 137 137 145 531 1.08e+03 0.00553 0.000588 66 3 87 62 0.617 + 0/998 3140/3375 66 65.5 137 137 145 532 1.08e+03 0.0055 0.000588 117 3 62 109 0.615 + 0/998 3141/3375 66 65.5 137 137 145 532 1.08e+03 0.0055 0.00059 87 14 134 69 0.627 + 0/998 3142/3375 66 65.5 137 137 145 531 1.08e+03 0.0055 0.000591 65 6 196 49 0.606 + 0/998 3143/3375 66 65.5 137 137 145 531 1.08e+03 0.0055 0.000593 59 10 253 43 0.618 + 0/998 3144/3375 66 65.5 137 137 145 531 1.08e+03 0.00548 0.000594 70 8 220 57 0.612 + 0/998 3145/3375 66 65.5 137 137 145 531 1.08e+03 0.00548 0.000595 97 3 108 88 0.615 + 0/998 3146/3375 66 65.5 137 137 145 531 1.08e+03 0.00548 0.000596 105 6 207 90 0.624 + 0/998 3147/3375 66 65.5 137 137 145 531 1.08e+03 0.00593 0.000603 85 4 72 81 0.606 + 0/998 3148/3375 66 65.5 137 137 145 531 1.08e+03 0.00593 0.000603 92 0 47 91 0.618 + 0/998 3149/3375 66 65.5 137 137 145 531 1.08e+03 0.00593 0.000603 68 1 135 67 0.626 + 0/998 3150/3375 66 65.5 137 137 145 531 1.08e+03 0.00593 0.000607 53 6 253 41 0.613 + 0/998 3151/3375 66 65.5 137 137 145 531 1.08e+03 0.00593 0.000608 100 5 95 90 0.611 + 0/998 3152/3375 66 65.5 137 137 145 531 1.08e+03 0.0059 0.000608 141 1 79 131 0.627 + 0/998 3153/3375 66 65.5 137 137 145 531 1.08e+03 0.0059 0.000608 73 0 94 73 0.623 + 0/998 3154/3375 66 65.5 137 137 145 531 1.08e+03 0.0059 0.000608 126 2 108 119 0.602 + 0/998 3155/3375 66 65.5 137 137 145 531 1.08e+03 0.0059 0.000609 97 3 115 90 0.619 + 0/998 3156/3375 66 65.5 137 137 145 531 1.08e+03 0.00586 0.000608 91 1 62 83 0.619 + 0/998 3157/3375 66 65.5 137 137 145 531 1.08e+03 0.00586 0.000608 71 0 50 71 0.615 + 0/998 3158/3375 66 65.5 137 137 145 531 1.08e+03 0.00586 0.000608 69 2 98 66 0.623 + 0/998 3159/3375 66 65.5 137 137 145 531 1.08e+03 0.00586 0.000608 73 1 115 62 0.596 + 0/998 3160/3375 66 65.5 137 137 145 531 1.08e+03 0.00586 0.000609 60 2 78 56 0.607 + 0/998 3161/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00586 0.000609 44 0 56 43 1.14 + 0/998 3162/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00585 0.000609 78 0 50 77 1.1 + 0/998 3163/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00585 0.000609 61 0 69 59 0.612 + 0/998 3164/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00582 0.000609 93 2 34 89 0.615 + 0/998 3165/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00582 0.000609 91 1 74 80 0.615 + 0/998 3166/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00614 0.000616 60 2 120 57 0.626 + 0/998 3167/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00614 0.000619 78 3 57 73 0.611 + 0/998 3168/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00614 0.000619 68 4 110 64 0.601 + 0/998 3169/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00614 0.000619 116 0 57 113 0.621 + 0/998 3170/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00614 0.000619 120 1 64 117 0.601 + 0/998 3171/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00614 0.000619 99 0 16 99 0.609 + 0/998 3172/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00611 0.000618 86 1 120 78 0.608 + 0/998 3173/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00611 0.000618 55 0 102 53 0.613 + 0/998 3174/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00604 0.000618 47 1 89 45 0.622 + 0/998 3175/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00604 0.000619 72 3 35 67 0.605 + 0/998 3176/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00604 0.000621 94 8 96 79 0.61 + 0/998 3177/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00604 0.000621 94 0 22 92 0.636 + 0/998 3178/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00604 0.00062 80 0 96 73 0.628 + 0/998 3179/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00604 0.00062 111 1 29 109 0.635 + 0/998 3180/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00604 0.00062 41 0 13 40 0.613 + 0/998 3181/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.000627 80 4 47 75 0.606 + 0/998 3182/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.000627 85 2 37 82 0.64 + 0/998 3183/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.000627 98 2 27 91 0.602 + 0/998 3184/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.000628 115 4 26 111 0.595 + 0/998 3185/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.000628 43 0 44 43 0.591 + 0/998 3186/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.000628 75 1 35 72 0.591 + 0/998 3187/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.000628 103 2 107 89 0.6 + 0/998 3188/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.000629 85 2 31 81 0.613 + 0/998 3189/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.000629 58 4 113 52 0.632 + 0/998 3190/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.00063 139 7 43 130 0.634 + 0/998 3191/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.00063 77 0 37 77 0.605 + 0/998 3192/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.00063 97 1 51 94 0.605 + 0/998 3193/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00624 0.000629 94 0 6 94 0.623 + 0/998 3194/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.00063 78 4 95 73 0.604 + 0/998 3195/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00623 0.00063 38 0 38 36 0.618 + 0/998 3196/3375 65.9 65.4 137 136 145 530 1.08e+03 0.00623 0.000631 51 1 91 47 0.609 + 0/998 3197/3375 65.9 65.4 137 136 145 530 1.08e+03 0.00623 0.000631 68 2 42 65 0.627 + 0/998 3198/3375 65.9 65.4 137 136 145 530 1.08e+03 0.00623 0.000631 106 4 120 98 0.622 + 0/998 3199/3375 65.9 65.4 137 136 145 530 1.08e+03 0.00623 0.000631 73 0 38 71 0.592 + 0/998 3200/3375 65.9 65.4 137 136 145 530 1.08e+03 0.00623 0.000631 101 4 117 93 0.627 + 0/998 3201/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00623 0.000631 73 0 111 64 0.601 + 0/998 3202/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00623 0.000631 78 1 72 68 0.614 + 0/998 3203/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00623 0.000631 66 0 91 65 0.601 + 0/998 3204/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00623 0.000632 86 7 91 76 0.597 + 0/998 3205/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00622 0.000632 57 1 107 50 0.597 + 0/998 3206/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00622 0.000632 57 0 34 57 0.598 + 0/998 3207/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00622 0.000633 72 2 58 65 0.595 + 0/998 3208/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000633 92 1 46 88 0.615 + 0/998 3209/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000633 111 1 59 107 0.638 + 0/998 3210/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000633 80 2 31 76 0.601 + 0/998 3211/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000633 74 0 9 73 0.614 + 0/998 3212/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000633 129 3 63 119 0.631 + 0/998 3213/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000633 105 1 23 104 0.613 + 0/998 3214/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000632 77 0 53 74 0.604 + 0/998 3215/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000633 108 4 88 98 0.642 + 0/998 3216/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000633 87 0 48 85 0.594 + 0/998 3217/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000634 91 2 138 84 0.621 + 0/998 3218/3375 65.9 65.4 136 136 145 530 1.08e+03 0.0062 0.000634 63 1 89 56 0.607 + 0/998 3219/3375 65.9 65.4 136 136 145 530 1.08e+03 0.0062 0.000633 102 1 21 100 0.614 + 0/998 3220/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000637 84 5 48 76 0.605 + 0/998 3221/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000637 113 3 92 106 0.597 + 0/998 3222/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000637 94 1 99 87 0.614 + 0/998 3223/3375 65.9 65.4 136 136 145 530 1.08e+03 0.0062 0.000637 77 1 54 74 0.619 + 0/998 3224/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.00064 89 4 83 82 0.605 + 0/998 3225/3375 65.9 65.4 136 136 145 530 1.08e+03 0.0062 0.00064 60 1 162 56 0.609 + 0/998 3226/3375 65.9 65.4 136 136 145 530 1.08e+03 0.0062 0.00064 44 3 157 36 0.595 + 0/998 3227/3375 65.9 65.4 136 136 145 530 1.08e+03 0.0062 0.00064 80 1 219 66 0.604 + 0/998 3228/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00616 0.000641 54 2 468 48 0.643 + 0/998 3229/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00616 0.000641 70 0 171 67 0.605 + 0/998 3230/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00613 0.000643 119 7 232 99 0.607 + 0/998 3231/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00613 0.000643 57 4 55 53 0.607 + 0/998 3232/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00613 0.000645 67 5 213 58 0.644 + 0/998 3233/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00613 0.000645 92 1 73 88 0.608 + 0/998 3234/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00612 0.000645 105 2 149 103 0.597 + 0/998 3235/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00612 0.000645 66 0 54 65 0.599 + 0/998 3236/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00612 0.000646 105 5 143 95 0.624 + 0/998 3237/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00612 0.000647 64 4 162 58 0.607 + 0/998 3238/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00612 0.000648 102 10 189 84 0.598 + 0/998 3239/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00612 0.000649 99 3 83 92 0.616 + 0/998 3240/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00612 0.000649 116 1 28 113 0.617 + 0/998 3241/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00612 0.000649 133 2 14 130 0.607 + 0/998 3242/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00612 0.000649 74 0 20 74 0.613 + 0/998 3243/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00612 0.000648 92 1 78 84 0.608 + 0/998 3244/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00612 0.000649 89 6 72 80 0.614 + 0/998 3245/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00612 0.000652 92 3 45 83 0.61 + 0/998 3246/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00612 0.000652 48 1 34 46 0.599 + 0/998 3247/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00612 0.000652 68 2 20 65 0.596 + 0/998 3248/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00612 0.000652 71 1 41 70 0.618 + 0/998 3249/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00612 0.000652 129 3 142 124 0.641 + 0/998 3250/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00612 0.000652 84 0 84 81 0.617 + 0/998 3251/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00612 0.000652 74 0 77 69 0.607 + 0/998 3252/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00612 0.000652 71 1 35 70 0.613 + 0/998 3253/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00612 0.000652 60 5 81 54 0.633 + 0/998 3254/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00612 0.000653 78 2 77 75 0.628 + 0/998 3255/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00612 0.000653 88 1 98 85 0.632 + 0/998 3256/3375 65.8 65.4 136 136 144 530 1.08e+03 0.00612 0.000653 70 3 64 66 0.644 + 0/998 3257/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00611 0.000656 128 14 216 108 0.634 + 0/998 3258/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00611 0.000657 100 12 246 76 0.634 + 0/998 3259/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00611 0.000658 82 8 85 70 0.643 + 0/998 3260/3375 65.8 65.4 136 136 144 530 1.08e+03 0.00601 0.000659 60 4 399 34 0.622 + 0/998 3261/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00601 0.000659 38 3 68 34 0.626 + 0/998 3262/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00601 0.00066 97 5 80 89 0.625 + 0/998 3263/3375 65.8 65.4 136 136 144 529 1.08e+03 0.006 0.000661 57 8 220 39 0.605 + 0/998 3264/3375 65.8 65.4 136 136 144 529 1.08e+03 0.006 0.000661 122 5 150 113 0.623 + 0/998 3265/3375 65.8 65.4 136 136 144 529 1.08e+03 0.006 0.000661 61 1 146 57 0.603 + 0/998 3266/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00592 0.000661 71 2 82 65 0.621 + 0/998 3267/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00592 0.000661 75 3 113 68 0.606 + 0/998 3268/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00592 0.000661 48 0 76 47 0.607 + 0/998 3269/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00589 0.000661 48 1 169 47 0.614 + 0/998 3270/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00589 0.000661 73 2 121 68 0.62 + 0/998 3271/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00589 0.000662 122 3 84 112 0.614 + 0/998 3272/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00589 0.000662 97 1 82 91 0.621 + 0/998 3273/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00589 0.000662 101 3 211 93 0.614 + 0/998 3274/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00589 0.000662 57 1 115 54 0.627 + 0/998 3275/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00589 0.000663 121 8 156 105 0.603 + 0/998 3276/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00588 0.000664 76 8 302 65 0.614 + 0/998 3277/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00588 0.000664 77 0 105 73 0.59 + 0/998 3278/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00588 0.000664 83 5 90 73 0.623 + 0/998 3279/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00588 0.000664 101 2 147 93 0.612 + 0/998 3280/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00545 0.000664 64 0 192 60 0.597 + 0/998 3281/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00545 0.000666 100 6 128 86 0.599 + 0/998 3282/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00536 0.000666 67 2 126 62 0.596 + 0/998 3283/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00536 0.000666 96 3 81 88 0.618 + 0/998 3284/3375 65.8 65.3 136 136 144 529 1.08e+03 0.0055 0.000672 76 5 86 67 0.597 + 0/998 3285/3375 65.8 65.3 136 136 144 529 1.08e+03 0.0055 0.000673 52 6 262 43 0.601 + 0/998 3286/3375 65.8 65.3 136 136 144 529 1.08e+03 0.0055 0.000673 75 1 71 73 0.606 + 0/998 3287/3375 65.8 65.3 136 136 144 529 1.08e+03 0.0055 0.000673 101 6 154 85 0.623 + 0/998 3288/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00547 0.000674 65 8 163 56 0.639 + 0/998 3289/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00547 0.000674 123 1 135 103 0.612 + 0/998 3290/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00547 0.000675 113 4 121 105 0.633 + 0/998 3291/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00547 0.000675 102 4 232 86 0.612 + 0/998 3292/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00547 0.000676 73 2 110 66 0.636 + 0/998 3293/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00547 0.000677 127 7 107 117 0.625 + 0/998 3294/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00547 0.000678 83 1 104 73 0.626 + 0/998 3295/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00547 0.000679 62 5 191 46 0.618 + 0/998 3296/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00548 0.000682 100 8 187 84 0.665 + 0/998 3297/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00548 0.000682 113 1 51 112 0.641 + 0/998 3298/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00547 0.000684 74 6 240 62 0.661 + 0/998 3299/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00597 0.000692 90 5 69 84 0.665 + 0/998 3300/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00597 0.000692 124 3 124 115 0.653 + 0/998 3301/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00597 0.000692 56 1 72 49 0.645 + 0/998 3302/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00597 0.000693 84 2 17 82 0.624 + 0/998 3303/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00594 0.000693 71 0 123 69 0.622 + 0/998 3304/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00592 0.000693 48 1 109 46 0.609 + 0/998 3305/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00592 0.000693 96 1 56 94 0.636 + 0/998 3306/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00592 0.000693 86 0 47 86 0.639 + 0/998 3307/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00617 0.000703 104 4 267 83 0.621 + 0/998 3308/3375 65.8 65.3 136 135 144 529 1.08e+03 0.00617 0.000703 80 1 8 78 0.616 + 0/998 3309/3375 65.8 65.3 136 135 144 529 1.08e+03 0.00613 0.000703 73 0 59 72 0.611 + 0/998 3310/3375 65.7 65.3 136 135 144 529 1.07e+03 0.00613 0.000703 51 0 21 50 0.587 + 0/998 3311/3375 65.7 65.3 136 135 144 529 1.07e+03 0.00613 0.000703 73 0 23 72 0.614 + 0/998 3312/3375 65.8 65.3 136 135 144 529 1.08e+03 0.00613 0.000703 127 1 8 125 0.62 + 0/998 3313/3375 65.8 65.3 136 135 144 529 1.08e+03 0.00613 0.000703 90 0 31 86 0.632 + 0/998 3314/3375 65.8 65.3 136 135 144 529 1.08e+03 0.00612 0.000702 79 0 23 74 0.627 + 0/998 3315/3375 65.8 65.3 136 135 144 529 1.08e+03 0.00581 0.000703 122 3 38 116 0.61 + 0/998 3316/3375 65.8 65.3 136 135 144 529 1.08e+03 0.00581 0.000703 74 3 40 67 0.613 + 0/998 3317/3375 65.8 65.3 136 135 144 529 1.08e+03 0.00579 0.000703 92 1 40 89 0.628 + 0/998 3318/3375 65.8 65.3 136 135 144 529 1.08e+03 0.00579 0.000704 87 6 48 80 0.598 + 0/998 3319/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00578 0.000703 72 0 73 67 0.617 + 0/998 3320/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00576 0.000704 71 3 83 63 0.619 + 0/998 3321/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00576 0.000704 85 3 207 75 0.615 + 0/998 3322/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00576 0.000705 112 8 115 101 0.628 + 0/998 3323/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00576 0.000705 102 1 74 91 0.607 + 0/998 3324/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00574 0.000705 74 4 136 64 0.59 + 0/998 3325/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00572 0.000706 64 4 81 51 0.598 + 0/998 3326/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00572 0.000707 94 6 182 72 0.617 + 0/998 3327/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00574 0.00071 68 2 34 66 0.621 + 0/998 3328/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00574 0.00071 59 3 116 54 0.613 + 0/998 3329/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00574 0.000711 69 9 188 54 0.606 + 0/998 3330/3375 65.7 65.3 136 135 144 529 1.07e+03 0.00572 0.000713 93 12 349 72 0.611 + 0/998 3331/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00572 0.000713 115 2 56 112 0.619 + 0/998 3332/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00549 0.00072 78 9 172 61 0.603 + 0/998 3333/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00549 0.000721 85 5 92 78 0.625 + 0/998 3334/3375 65.7 65.3 136 135 144 529 1.07e+03 0.00549 0.000721 58 0 170 56 0.591 + 0/998 3335/3375 65.7 65.3 136 135 144 528 1.07e+03 0.00549 0.000721 77 2 150 69 0.614 + 0/998 3336/3375 65.7 65.3 136 135 144 528 1.07e+03 0.00549 0.000722 62 10 224 44 0.607 + 0/998 3337/3375 65.7 65.3 136 135 144 528 1.07e+03 0.00546 0.000723 83 10 133 71 0.609 + 0/998 3338/3375 65.7 65.3 136 135 144 528 1.07e+03 0.00545 0.000724 42 3 173 35 0.598 + 0/998 3339/3375 65.7 65.3 136 135 144 528 1.07e+03 0.00545 0.000725 72 7 197 62 0.61 + 0/998 3340/3375 65.7 65.3 136 135 144 528 1.07e+03 0.00544 0.000726 108 3 169 98 0.615 + 0/998 3341/3375 65.7 65.3 136 135 144 528 1.07e+03 0.0054 0.000726 67 6 312 46 0.62 + 0/998 3342/3375 65.7 65.3 136 135 144 528 1.07e+03 0.0054 0.000727 97 2 84 93 0.6 + 0/998 3343/3375 65.7 65.3 135 135 144 528 1.07e+03 0.00532 0.000727 53 1 119 46 0.61 + 0/998 3344/3375 65.7 65.3 135 135 144 528 1.07e+03 0.00532 0.00073 74 12 548 48 0.615 + 0/998 3345/3375 65.7 65.3 135 135 144 528 1.07e+03 0.00532 0.00073 130 2 116 118 0.617 + 0/998 3346/3375 65.7 65.3 135 135 144 528 1.07e+03 0.00531 0.000731 61 3 76 53 0.615 + 0/998 3347/3375 65.7 65.3 135 135 144 528 1.07e+03 0.00531 0.000731 75 0 56 69 0.617 + 0/998 3348/3375 65.7 65.3 135 135 144 528 1.07e+03 0.0053 0.000731 104 1 63 100 0.612 + 0/998 3349/3375 65.7 65.3 135 135 144 528 1.07e+03 0.0056 0.000735 48 2 88 46 0.604 + 0/998 3350/3375 65.7 65.3 135 135 144 528 1.07e+03 0.00559 0.000735 57 1 71 56 0.626 + 0/998 3351/3375 65.7 65.3 135 135 144 528 1.07e+03 0.00557 0.000735 77 2 35 73 0.636 + 0/998 3352/3375 65.7 65.3 135 135 144 528 1.07e+03 0.00557 0.000735 84 1 48 81 0.626 + 0/998 3353/3375 65.7 65.3 135 135 144 528 1.07e+03 0.00557 0.000736 67 3 20 64 0.624 + 0/998 3354/3375 65.7 65.2 135 135 144 528 1.07e+03 0.00557 0.000736 48 3 31 44 0.624 + 0/998 3355/3375 65.7 65.2 135 135 144 528 1.07e+03 0.00557 0.000736 83 0 26 82 0.631 + 0/998 3356/3375 65.7 65.2 135 135 144 528 1.07e+03 0.00557 0.000737 67 3 133 59 0.632 + 0/998 3357/3375 65.7 65.2 135 135 143 528 1.07e+03 0.00568 0.000742 42 1 41 41 0.603 + 0/998 3358/3375 65.7 65.2 135 135 143 528 1.07e+03 0.00567 0.000743 68 3 59 62 0.616 + 0/998 3359/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00567 0.000743 96 1 41 92 0.614 + 0/998 3360/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00567 0.000744 81 7 126 65 0.637 + 0/998 3361/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00567 0.000744 85 1 10 84 0.608 + 0/998 3362/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00568 0.000746 75 2 55 70 0.607 + 0/998 3363/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00567 0.000749 72 4 125 66 0.621 + 0/998 3364/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00567 0.000749 113 0 34 112 0.619 + 0/998 3365/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00567 0.00075 98 6 137 85 0.619 + 0/998 3366/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00567 0.000749 83 0 82 77 0.633 + 0/998 3367/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00566 0.00075 127 3 134 115 0.613 + 0/998 3368/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00566 0.00075 106 4 73 96 0.64 + 0/998 3369/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00566 0.000751 70 1 151 60 0.635 + 0/998 3370/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00566 0.000752 74 2 388 59 0.627 + 0/998 3371/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00566 0.000752 68 3 79 64 0.636 + 0/998 3372/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00566 0.000754 148 6 109 129 0.634 + 0/998 3373/3375 65.7 65.2 135 135 143 528 1.07e+03 0.00566 0.000753 110 0 87 108 0.618 + 0/998 3374/3375 65.7 65.2 135 135 143 528 1.07e+03 0.00565 0.000754 68 2 134 63 0.64 + 0/998 3374/3375 65.7 65.2 135 135 143 528 1.07e+03 0.00565 0.000754 68 2 134 63 0.64 + 1/998 0/3375 103 114 168 241 250 943 1.82e+03 0.000676 0.00192 141 1 239 124 2.15 + 1/998 1/3375 98.8 102 163 208 210 774 1.55e+03 0.00244 0.00403 119 10 255 100 0.619 + 1/998 2/3375 78.6 79.8 134 168 165 619 1.24e+03 0.00216 0.00304 68 3 103 58 0.595 + 1/998 3/3375 71.2 70.9 124 145 146 563 1.12e+03 0.00153 0.00255 72 1 104 69 0.599 + 1/998 4/3375 77.3 76.2 137 164 163 625 1.24e+03 0.00172 0.00218 132 4 39 123 0.628 + 1/998 5/3375 71.1 69.5 128 146 151 571 1.14e+03 0.0024 0.0031 65 3 82 58 0.614 + 1/998 6/3375 68.6 67.3 127 140 141 538 1.08e+03 0.00225 0.00299 75 3 103 65 0.624 + 1/998 7/3375 68.8 68.4 125 138 140 530 1.07e+03 0.00224 0.00289 95 4 79 86 0.59 + 1/998 8/3375 68.1 67.7 123 140 138 523 1.06e+03 0.00212 0.00284 75 5 99 69 0.615 + 1/998 9/3375 65 64.7 119 132 131 498 1.01e+03 0.00216 0.00248 45 1 8 43 0.591 + 1/998 10/3375 64.8 64.2 116 129 130 497 1e+03 0.00227 0.00236 80 3 21 75 0.603 + 1/998 11/3375 63.1 63.3 113 127 127 487 981 0.00215 0.00235 68 3 35 62 0.607 + 1/998 12/3375 60.6 61.3 108 121 123 474 948 0.00215 0.00229 44 1 25 43 0.599 + 1/998 13/3375 62.7 62.4 113 123 126 493 980 0.00215 0.00209 112 3 34 105 0.602 + 1/998 14/3375 62.1 61.5 110 121 123 481 959 0.00213 0.00203 61 2 4 58 0.591 + 1/998 15/3375 62 60.8 112 120 124 491 970 0.00204 0.00198 77 0 10 75 0.589 + 1/998 16/3375 62.3 61 112 120 124 493 972 0.00203 0.00182 88 0 6 87 0.596 + 1/998 17/3375 62.9 61.1 112 120 123 491 970 0.00208 0.00178 81 3 35 78 0.611 + 1/998 18/3375 63.4 60.8 111 119 124 495 973 0.00187 0.00173 85 1 31 80 0.597 + 1/998 19/3375 61.4 59.3 108 116 121 482 948 0.00183 0.00171 45 1 54 42 0.59 + 1/998 20/3375 63 60.8 111 121 124 495 976 0.00181 0.00167 118 2 12 114 0.599 + 1/998 21/3375 62.4 60.8 111 120 124 495 973 0.00179 0.00164 75 1 35 74 0.593 + 1/998 22/3375 62.2 60.3 112 120 123 489 965 0.00175 0.00158 75 1 50 72 0.598 + 1/998 23/3375 63 61.1 113 122 123 489 971 0.00174 0.00159 101 5 71 93 0.633 + 1/998 24/3375 65.8 63.9 120 125 128 509 1.01e+03 0.0017 0.00146 171 0 33 168 0.643 + 1/998 25/3375 66.4 64.5 121 126 129 511 1.02e+03 0.00211 0.00177 118 7 79 108 0.645 + 1/998 26/3375 66.3 64.7 122 126 128 510 1.02e+03 0.00697 0.0025 94 7 91 83 0.627 + 1/998 27/3375 67.1 65.7 126 129 128 510 1.03e+03 0.00718 0.0025 125 5 100 117 0.645 + 1/998 28/3375 66.2 64.7 124 127 127 502 1.01e+03 0.00712 0.00247 64 1 52 62 0.61 + 1/998 29/3375 66.5 64.7 126 126 127 498 1.01e+03 0.0071 0.00238 93 1 29 91 0.641 + 1/998 30/3375 65.4 63.8 124 123 125 489 991 0.00658 0.00237 44 2 136 34 0.632 + 1/998 31/3375 64.3 62.9 122 122 123 481 975 0.00655 0.00245 48 7 150 40 0.63 + 1/998 32/3375 63.8 62.2 121 121 122 478 967 0.00657 0.00226 87 9 157 70 0.606 + 1/998 33/3375 63.8 62.5 121 121 122 480 971 0.00583 0.00219 92 6 252 82 0.612 + 1/998 34/3375 63.5 62.2 122 120 122 481 970 0.00578 0.00217 80 2 130 72 0.631 + 1/998 35/3375 63.3 62.5 121 120 122 481 970 0.00578 0.00218 95 5 107 86 0.637 + 1/998 36/3375 62.4 61.6 119 118 120 477 957 0.0053 0.00216 38 0 231 29 0.594 + 1/998 37/3375 62 61.1 118 116 118 472 947 0.00493 0.00223 44 7 410 30 0.632 + 1/998 38/3375 61.5 60.9 117 115 117 468 941 0.00488 0.00221 64 1 186 60 0.622 + 1/998 39/3375 61.2 60.7 117 115 117 466 937 0.00405 0.00215 72 1 135 64 0.592 + 1/998 40/3375 60.8 60.2 116 114 116 460 927 0.00404 0.00218 55 5 155 47 0.599 + 1/998 41/3375 61.2 60.9 117 115 117 464 935 0.00375 0.00215 109 2 85 102 0.608 + 1/998 42/3375 61.4 60.9 117 115 118 464 936 0.00361 0.00218 97 7 279 83 0.631 + 1/998 43/3375 61.3 61 117 115 118 462 935 0.00362 0.0022 90 7 153 77 0.621 + 1/998 44/3375 61.3 60.9 120 115 118 469 944 0.00326 0.00245 117 3 225 86 0.627 + 1/998 45/3375 60.5 60.1 119 114 116 463 932 0.00325 0.00246 35 3 92 31 0.577 + 1/998 46/3375 61.1 60.5 120 115 117 465 938 0.00337 0.00253 113 5 113 105 0.626 + 1/998 47/3375 60.8 60.4 120 114 116 464 935 0.00335 0.00254 68 4 188 57 0.615 + 1/998 48/3375 60.7 60.4 119 114 116 461 931 0.00335 0.00253 68 3 85 64 0.606 + 1/998 49/3375 60.2 60.1 118 113 115 460 926 0.00324 0.00247 56 0 84 54 0.608 + 1/998 50/3375 60.1 60.1 118 113 115 459 926 0.00324 0.00246 84 2 67 79 0.62 + 1/998 51/3375 59.8 60 117 113 115 458 922 0.00321 0.00254 67 4 136 57 0.614 + 1/998 52/3375 59.7 60 117 112 115 458 922 0.00322 0.00252 80 2 34 78 0.605 + 1/998 53/3375 60 60.1 117 113 115 463 929 0.00321 0.00253 94 1 48 90 0.621 + 1/998 54/3375 60.3 60.5 118 114 116 467 936 0.00322 0.00246 98 1 12 97 0.602 + 1/998 55/3375 61.3 61.1 120 115 119 472 947 0.00321 0.00238 134 0 16 130 0.605 + 1/998 56/3375 61.1 61 119 114 118 471 944 0.00313 0.00237 65 2 58 63 0.591 + 1/998 57/3375 61 61 119 113 118 471 944 0.00281 0.00236 77 2 40 72 0.604 + 1/998 58/3375 61 60.9 119 113 118 471 942 0.00281 0.00232 85 1 26 84 0.605 + 1/998 59/3375 60.6 60.6 118 112 117 467 936 0.0028 0.0023 60 1 17 58 0.599 + 1/998 60/3375 60.9 61.1 119 112 118 470 942 0.00281 0.00229 107 2 14 105 0.618 + 1/998 61/3375 60.6 60.7 118 112 118 469 938 0.00281 0.00228 56 0 25 54 0.582 + 1/998 62/3375 60.7 60.9 118 113 118 469 940 0.00283 0.00227 94 5 14 88 0.605 + 1/998 63/3375 60.7 60.9 119 113 118 468 940 0.00271 0.00229 93 6 133 82 0.613 + 1/998 64/3375 60.6 60.9 119 113 118 469 940 0.0027 0.00227 78 3 80 68 0.635 + 1/998 65/3375 60.5 61 118 113 118 467 938 0.00263 0.00224 72 0 39 69 0.59 + 1/998 66/3375 60.9 61.3 119 113 119 472 946 0.00257 0.00223 116 2 44 108 0.575 + 1/998 67/3375 60.8 61.2 120 114 119 472 946 0.00257 0.0022 77 0 28 75 0.588 + 1/998 68/3375 60.6 60.9 119 113 118 469 941 0.00257 0.0023 49 1 122 44 0.582 + 1/998 69/3375 60.1 60.5 118 112 117 467 935 0.00255 0.00231 42 2 172 39 0.582 + 1/998 70/3375 60.2 60.6 118 112 117 467 934 0.00254 0.00225 85 0 31 85 0.611 + 1/998 71/3375 59.9 60.4 117 111 117 465 931 0.00253 0.00226 70 4 143 61 0.592 + 1/998 72/3375 60.3 60.9 118 113 119 468 938 0.00251 0.00223 119 3 89 111 0.594 + 1/998 73/3375 60 60.6 117 112 118 464 931 0.0025 0.00225 53 7 162 43 0.559 + 1/998 74/3375 61 61.7 119 113 119 470 943 0.0025 0.00221 179 2 32 176 0.591 + 1/998 75/3375 61.2 61.9 119 113 120 471 946 0.00257 0.00229 109 5 154 101 0.607 + 1/998 76/3375 61.3 62 119 113 120 471 946 0.00254 0.0023 87 6 156 76 0.578 + 1/998 77/3375 61.2 61.9 119 113 119 471 946 0.00253 0.0023 70 0 53 67 0.585 + 1/998 78/3375 61.5 62 119 113 119 472 947 0.00245 0.00231 93 3 135 84 0.588 + 1/998 79/3375 61.6 62 119 113 119 473 947 0.00243 0.0023 68 0 89 66 0.57 + 1/998 80/3375 61.4 61.9 118 113 119 472 945 0.00234 0.0023 57 2 60 54 0.58 + 1/998 81/3375 61.1 61.7 118 112 118 471 941 0.00235 0.00233 60 1 60 56 0.591 + 1/998 82/3375 61.5 62.2 118 114 119 474 949 0.00224 0.00232 134 2 111 128 0.594 + 1/998 83/3375 61.4 62.1 118 113 119 473 946 0.00212 0.00233 68 4 61 57 0.599 + 1/998 84/3375 61.5 62.2 119 114 119 473 948 0.00209 0.00231 103 3 35 95 0.585 + 1/998 85/3375 61.3 62 118 114 119 473 947 0.00202 0.00231 58 2 91 55 0.571 + 1/998 86/3375 61.5 62 118 114 119 475 951 0.00201 0.0023 87 1 37 85 0.587 + 1/998 87/3375 61.1 61.7 118 114 118 472 945 0.00196 0.00229 35 0 76 34 0.58 + 1/998 88/3375 60.8 61.3 117 113 117 470 939 0.00193 0.00233 50 8 105 39 0.572 + 1/998 89/3375 60.9 61.4 118 113 117 471 941 0.00196 0.00235 77 3 46 71 0.594 + 1/998 90/3375 61.1 61.4 118 114 118 471 943 0.00195 0.00233 85 1 26 84 0.591 + 1/998 91/3375 61 61.2 118 113 117 471 941 0.0024 0.00253 71 7 80 58 0.581 + 1/998 92/3375 60.8 61 117 113 117 469 937 0.00237 0.00257 47 3 96 42 0.575 + 1/998 93/3375 60.8 61.1 117 113 117 468 937 0.00237 0.00255 88 1 21 87 0.581 + 1/998 94/3375 60.6 60.8 117 112 116 467 934 0.00236 0.00253 67 0 74 65 0.603 + 1/998 95/3375 60.7 60.9 117 113 116 467 936 0.00234 0.00253 91 6 30 83 0.577 + 1/998 96/3375 60.8 61.1 117 113 117 467 936 0.00223 0.00246 88 0 39 85 0.582 + 1/998 97/3375 60.7 61 117 113 116 466 934 0.00222 0.00244 70 3 81 61 0.602 + 1/998 98/3375 60.5 60.8 117 112 116 464 930 0.0022 0.00243 68 3 183 59 0.581 + 1/998 99/3375 60.5 60.8 116 112 116 464 929 0.0022 0.00242 70 1 56 65 0.584 + 1/998 100/3375 60.6 60.9 117 112 116 463 929 0.00221 0.00242 82 2 97 79 0.606 + 1/998 101/3375 60.6 60.7 117 112 115 463 928 0.00211 0.00241 59 0 71 57 0.596 + 1/998 102/3375 61 61.1 118 113 116 465 934 0.00211 0.00239 138 2 94 127 0.587 + 1/998 103/3375 61.2 61.3 118 115 117 465 936 0.0037 0.00278 102 9 113 90 0.59 + 1/998 104/3375 61.1 61.3 118 115 117 465 936 0.0037 0.00278 92 3 96 85 0.605 + 1/998 105/3375 61.4 61.7 118 115 118 468 942 0.00361 0.00274 98 3 98 89 0.587 + 1/998 106/3375 61.1 61.3 117 115 117 466 937 0.00361 0.00273 53 1 42 49 0.583 + 1/998 107/3375 60.9 61.2 117 114 117 465 935 0.0036 0.00272 59 1 41 57 0.593 + 1/998 108/3375 61.1 61.6 117 116 117 465 938 0.00348 0.00269 112 1 17 111 0.573 + 1/998 109/3375 61.6 61.8 118 116 118 467 942 0.00348 0.00267 136 3 29 130 0.608 + 1/998 110/3375 61.5 61.9 118 116 118 466 941 0.00349 0.00267 72 3 34 69 0.572 + 1/998 111/3375 61.5 61.7 117 116 118 465 939 0.00348 0.00266 55 0 31 55 0.578 + 1/998 112/3375 61.7 61.8 118 116 118 465 941 0.00348 0.00262 114 2 53 102 0.577 + 1/998 113/3375 61.7 61.8 118 116 119 465 942 0.0035 0.00263 105 9 29 92 0.59 + 1/998 114/3375 61.7 61.9 118 117 119 466 943 0.0035 0.00261 101 2 63 96 0.593 + 1/998 115/3375 61.9 62 119 117 119 467 947 0.00349 0.00259 96 4 92 84 0.59 + 1/998 116/3375 62 62.1 120 117 120 468 949 0.00351 0.0026 111 5 60 100 0.599 + 1/998 117/3375 62 62 120 117 120 468 948 0.00351 0.0026 72 0 59 69 0.579 + 1/998 118/3375 61.8 61.9 119 117 120 467 946 0.0035 0.00258 61 1 101 59 0.59 + 1/998 119/3375 62 62 120 117 120 467 947 0.00338 0.00257 96 0 116 94 0.586 + 1/998 120/3375 62 62 120 117 120 468 948 0.00335 0.00256 83 0 61 82 0.612 + 1/998 121/3375 62 61.8 120 116 120 467 946 0.00328 0.00256 68 5 159 53 0.588 + 1/998 122/3375 62.1 62.1 120 117 121 468 950 0.00327 0.00254 104 0 53 103 0.606 + 1/998 123/3375 62.4 62.2 120 117 121 470 954 0.00339 0.00273 106 6 109 95 0.588 + 1/998 124/3375 62.4 62.3 121 118 121 471 955 0.00338 0.00269 104 4 74 97 0.594 + 1/998 125/3375 62.4 62.2 120 117 121 470 954 0.0034 0.00272 70 3 156 57 0.596 + 1/998 126/3375 62.3 62.1 121 117 121 470 952 0.0034 0.00271 71 0 55 70 0.643 + 1/998 127/3375 62 61.8 120 117 120 468 949 0.00339 0.0027 47 0 37 47 0.579 + 1/998 128/3375 62.1 62 120 117 121 469 951 0.00329 0.00269 90 2 94 85 0.583 + 1/998 129/3375 62.1 61.9 120 117 120 468 950 0.00326 0.00268 79 1 81 76 0.589 + 1/998 130/3375 62.3 62.1 121 118 121 469 953 0.00325 0.00266 112 0 55 111 0.592 + 1/998 131/3375 62.4 62.1 121 118 121 470 954 0.00324 0.00266 93 4 40 87 0.597 + 1/998 132/3375 62.3 61.9 121 118 121 468 951 0.00321 0.00266 66 2 71 56 0.592 + 1/998 133/3375 62.1 61.8 120 117 120 467 948 0.00319 0.00264 50 0 55 50 0.584 + 1/998 134/3375 61.9 61.6 120 117 120 466 946 0.00317 0.00264 52 1 154 46 0.576 + 1/998 135/3375 61.8 61.4 120 116 120 466 945 0.00315 0.00263 54 0 97 50 0.594 + 1/998 136/3375 61.8 61.3 120 116 120 465 944 0.00315 0.00262 80 3 102 65 0.63 + 1/998 137/3375 61.6 61.2 119 116 119 463 940 0.00313 0.00263 52 5 92 46 0.595 + 1/998 138/3375 61.8 61.4 119 116 120 465 943 0.00312 0.00261 120 4 55 110 0.627 + 1/998 139/3375 61.7 61.2 119 116 119 464 940 0.00311 0.00261 50 2 74 46 0.601 + 1/998 140/3375 61.5 61 119 115 119 462 937 0.00309 0.00261 43 4 236 37 0.608 + 1/998 141/3375 61.5 60.9 118 115 119 462 936 0.00311 0.00264 73 2 73 68 0.606 + 1/998 142/3375 61.7 61.1 119 115 119 463 939 0.00311 0.00263 117 4 28 112 0.609 + 1/998 143/3375 61.7 61.2 119 116 119 462 939 0.0031 0.00262 97 4 67 86 0.614 + 1/998 144/3375 61.6 61.2 119 116 119 462 938 0.00309 0.00261 69 0 66 67 0.616 + 1/998 145/3375 61.5 61.1 118 115 119 461 937 0.00309 0.0026 70 2 35 63 0.594 + 1/998 146/3375 61.4 61 118 115 119 461 935 0.00309 0.00259 61 1 27 60 0.617 + 1/998 147/3375 61.3 60.8 118 115 118 459 933 0.00307 0.0026 54 4 301 42 0.612 + 1/998 148/3375 61.2 60.7 118 115 118 458 931 0.00307 0.00263 65 7 343 43 0.613 + 1/998 149/3375 61 60.6 118 114 118 458 929 0.00307 0.00264 62 6 128 50 0.617 + 1/998 150/3375 61.1 60.6 118 114 118 458 929 0.00307 0.00266 98 4 145 88 0.597 + 1/998 151/3375 61.2 60.7 118 114 118 458 930 0.00308 0.00268 100 6 82 90 0.595 + 1/998 152/3375 61.1 60.6 117 114 118 458 929 0.00307 0.00269 62 4 151 56 0.607 + 1/998 153/3375 61.1 60.6 117 114 118 458 930 0.00307 0.00267 92 2 79 89 0.611 + 1/998 154/3375 61.2 60.7 118 115 118 458 931 0.00308 0.00268 108 8 78 95 0.611 + 1/998 155/3375 61.2 60.7 118 115 118 459 931 0.00309 0.00271 82 3 137 74 0.618 + 1/998 156/3375 61.2 60.7 118 115 118 459 932 0.00304 0.00269 103 9 323 80 0.636 + 1/998 157/3375 61.3 60.9 118 115 118 459 932 0.00303 0.0027 95 2 107 83 0.592 + 1/998 158/3375 61.2 60.8 118 115 118 458 931 0.00298 0.0027 54 3 77 48 0.607 + 1/998 159/3375 61 60.7 117 115 118 457 929 0.00298 0.0027 64 1 68 62 0.613 + 1/998 160/3375 61.2 60.8 117 115 118 459 932 0.00298 0.00269 104 3 73 97 0.624 + 1/998 161/3375 61.1 60.7 117 115 118 458 930 0.0032 0.00276 56 3 87 49 0.612 + 1/998 162/3375 60.9 60.7 117 115 118 457 928 0.00319 0.00276 55 1 77 53 0.62 + 1/998 163/3375 60.9 60.7 117 115 118 457 928 0.00319 0.00276 79 7 83 70 0.616 + 1/998 164/3375 61 60.7 117 115 118 457 928 0.00319 0.00276 82 3 59 78 0.609 + 1/998 165/3375 61 60.8 117 114 118 457 928 0.00318 0.00273 93 2 63 86 0.603 + 1/998 166/3375 61.1 60.8 117 115 118 457 928 0.00318 0.00272 97 3 35 92 0.594 + 1/998 167/3375 61 60.7 117 114 117 456 927 0.0031 0.00273 74 4 90 61 0.607 + 1/998 168/3375 61 60.6 117 115 117 456 926 0.0031 0.00274 67 7 94 58 0.611 + 1/998 169/3375 60.8 60.5 117 114 117 456 925 0.0031 0.00274 61 1 81 60 0.636 + 1/998 170/3375 60.7 60.4 117 114 117 455 924 0.00308 0.00278 68 5 107 61 0.629 + 1/998 171/3375 60.7 60.4 117 114 117 455 923 0.00303 0.00278 65 1 40 60 0.608 + 1/998 172/3375 60.5 60.3 116 113 117 454 921 0.00303 0.00279 58 6 134 45 0.611 + 1/998 173/3375 60.4 60.2 116 113 116 454 920 0.00294 0.0028 49 2 191 41 0.608 + 1/998 174/3375 60.2 60 116 113 116 452 917 0.00291 0.00279 38 1 120 30 0.621 + 1/998 175/3375 60.1 59.8 115 112 116 452 915 0.00289 0.00279 49 0 25 47 0.603 + 1/998 176/3375 60.1 59.9 115 112 116 451 914 0.00288 0.00278 90 2 72 83 0.627 + 1/998 177/3375 60.1 59.9 115 113 116 452 915 0.00286 0.00277 78 0 53 76 0.597 + 1/998 178/3375 60 59.8 115 112 116 451 914 0.00284 0.00277 50 3 153 42 0.609 + 1/998 179/3375 59.9 59.8 115 112 115 451 913 0.00284 0.00277 70 2 60 67 0.619 + 1/998 180/3375 59.9 59.8 115 112 116 451 913 0.00279 0.00276 81 1 51 78 0.611 + 1/998 181/3375 59.8 59.7 115 112 115 450 911 0.00278 0.00275 53 1 72 51 0.608 + 1/998 182/3375 59.6 59.5 114 112 115 449 909 0.00278 0.00274 36 0 96 34 0.611 + 1/998 183/3375 59.4 59.4 114 111 115 448 907 0.00278 0.00274 58 3 122 52 0.606 + 1/998 184/3375 59.5 59.4 114 111 115 448 907 0.00278 0.00274 88 3 36 83 0.611 + 1/998 185/3375 59.4 59.4 114 111 115 447 906 0.00271 0.00273 62 1 44 58 0.606 + 1/998 186/3375 59.6 59.5 114 111 115 449 908 0.00271 0.00272 119 0 40 116 0.62 + 1/998 187/3375 59.8 59.7 114 112 115 449 910 0.00271 0.00271 106 4 61 99 0.601 + 1/998 188/3375 59.8 59.8 114 112 115 450 911 0.00271 0.0027 83 0 66 83 0.618 + 1/998 189/3375 59.7 59.7 114 111 115 449 909 0.00271 0.0027 61 3 84 50 0.601 + 1/998 190/3375 59.6 59.6 114 111 115 449 908 0.00271 0.00269 61 0 27 59 0.613 + 1/998 191/3375 59.6 59.7 114 111 115 448 908 0.00271 0.00268 73 0 34 73 0.608 + 1/998 192/3375 59.6 59.6 114 111 115 448 907 0.00271 0.00268 63 1 47 61 0.607 + 1/998 193/3375 59.4 59.5 114 111 115 448 906 0.00269 0.00267 64 2 57 60 0.599 + 1/998 194/3375 59.4 59.4 113 111 114 447 904 0.00269 0.00267 54 1 86 51 0.623 + 1/998 195/3375 59.3 59.3 113 110 114 446 903 0.00268 0.00266 50 1 29 49 0.611 + 1/998 196/3375 59.3 59.2 113 110 114 446 903 0.00268 0.00267 84 3 94 79 0.628 + 1/998 197/3375 59.2 59.1 113 110 114 446 901 0.00268 0.00267 54 2 69 50 0.604 + 1/998 198/3375 59.2 59.2 113 110 114 446 901 0.003 0.0029 116 6 47 103 0.609 + 1/998 199/3375 59.2 59.2 113 110 114 446 901 0.003 0.00291 87 7 175 73 0.629 + 1/998 200/3375 59.1 59 113 110 114 445 900 0.003 0.00292 60 5 134 43 0.602 + 1/998 201/3375 59.1 59 113 110 114 445 899 0.00295 0.0029 63 1 47 57 0.62 + 1/998 202/3375 59.2 59.2 113 110 114 446 901 0.00291 0.0029 113 3 59 105 0.606 + 1/998 203/3375 59.1 59.1 113 110 114 445 900 0.00272 0.00289 51 8 209 38 0.602 + 1/998 204/3375 59 59.1 113 110 114 445 899 0.00271 0.00294 65 7 214 50 0.609 + 1/998 205/3375 59 59 113 110 114 445 900 0.00271 0.00295 83 5 92 77 0.601 + 1/998 206/3375 58.9 59 113 110 114 445 899 0.00268 0.00295 72 7 255 61 0.621 + 1/998 207/3375 59 59.1 113 110 114 446 901 0.00269 0.00297 106 3 145 100 0.607 + 1/998 208/3375 59 59.1 113 110 114 446 901 0.00283 0.00311 104 15 296 83 0.626 + 1/998 209/3375 58.9 59 113 110 114 446 900 0.00284 0.00313 61 5 174 50 0.611 + 1/998 210/3375 59 59 113 110 114 447 901 0.00283 0.00312 80 0 94 76 0.636 + 1/998 211/3375 59 59 113 110 114 446 900 0.00284 0.00315 80 3 112 74 0.613 + 1/998 212/3375 59 59 113 110 114 447 901 0.00286 0.00318 103 5 125 96 0.609 + 1/998 213/3375 59 59.1 113 110 114 447 902 0.00281 0.00319 89 4 165 79 0.605 + 1/998 214/3375 59.1 59.1 113 110 114 448 902 0.0028 0.00319 79 4 71 75 0.583 + 1/998 215/3375 59.2 59.2 113 110 114 448 903 0.0028 0.00323 116 10 277 87 0.62 + 1/998 216/3375 59.1 59.1 112 110 114 448 902 0.00276 0.00323 66 1 72 64 0.592 + 1/998 217/3375 59.3 59.2 112 110 114 449 904 0.00276 0.00322 110 3 93 106 0.623 + 1/998 218/3375 59.4 59.4 112 110 115 449 906 0.00276 0.00321 105 1 31 101 0.611 + 1/998 219/3375 59.5 59.4 113 111 115 450 907 0.00275 0.00321 102 3 49 97 0.605 + 1/998 220/3375 59.6 59.5 113 111 115 450 908 0.0027 0.0032 109 1 100 103 0.617 + 1/998 221/3375 59.7 59.5 113 111 115 451 908 0.00267 0.00319 98 3 105 92 0.616 + 1/998 222/3375 59.6 59.4 113 111 115 450 907 0.00269 0.00323 62 4 93 56 0.6 + 1/998 223/3375 59.6 59.4 112 111 115 450 907 0.00266 0.00323 62 1 83 59 0.61 + 1/998 224/3375 59.6 59.5 113 111 115 451 908 0.00266 0.00322 110 2 32 108 0.625 + 1/998 225/3375 59.7 59.6 113 111 115 452 911 0.00266 0.00321 114 0 5 113 0.627 + 1/998 226/3375 59.6 59.5 112 111 115 451 909 0.00266 0.00322 44 3 91 40 0.615 + 1/998 227/3375 59.6 59.4 112 110 115 451 908 0.00266 0.00321 65 3 50 61 0.595 + 1/998 228/3375 59.6 59.4 112 110 115 451 908 0.00266 0.00321 89 1 41 86 0.616 + 1/998 229/3375 59.7 59.4 112 110 115 452 909 0.00266 0.00319 111 2 33 107 0.596 + 1/998 230/3375 59.6 59.4 112 110 115 452 909 0.00264 0.00319 74 1 62 71 0.639 + 1/998 231/3375 59.6 59.4 112 110 115 451 907 0.00262 0.00319 59 2 62 54 0.602 + 1/998 232/3375 59.6 59.4 112 110 115 451 908 0.00262 0.00319 70 2 30 65 0.622 + 1/998 233/3375 59.6 59.4 112 110 115 451 908 0.00259 0.00324 84 6 201 74 0.589 + 1/998 234/3375 59.8 59.6 113 111 116 453 911 0.00257 0.00319 155 3 51 150 0.629 + 1/998 235/3375 59.8 59.6 112 111 116 453 911 0.00254 0.00323 90 5 222 75 0.619 + 1/998 236/3375 59.8 59.6 112 111 116 453 911 0.00254 0.00322 77 1 50 76 0.601 + 1/998 237/3375 59.7 59.5 112 110 116 452 910 0.00252 0.00323 53 2 54 49 0.594 + 1/998 238/3375 59.7 59.5 112 110 116 452 909 0.00248 0.00322 72 3 230 63 0.607 + 1/998 239/3375 59.8 59.5 112 111 116 452 910 0.00245 0.00321 110 7 165 96 0.618 + 1/998 240/3375 59.7 59.4 112 110 116 452 909 0.00244 0.00321 47 2 97 45 0.598 + 1/998 241/3375 59.8 59.4 112 111 116 453 910 0.00244 0.00321 111 2 120 102 0.624 + 1/998 242/3375 59.8 59.5 113 111 116 453 911 0.00244 0.00321 93 1 56 89 0.617 + 1/998 243/3375 59.9 59.6 113 111 116 454 913 0.00244 0.0032 117 4 56 108 0.606 + 1/998 244/3375 60 59.6 113 111 116 454 913 0.00244 0.00321 103 7 183 84 0.617 + 1/998 245/3375 59.9 59.5 113 111 116 453 912 0.00244 0.00321 52 1 119 40 0.609 + 1/998 246/3375 60 59.5 113 111 116 454 913 0.00261 0.00324 107 16 448 71 0.601 + 1/998 247/3375 59.9 59.5 113 111 116 453 912 0.00261 0.00325 63 4 151 58 0.607 + 1/998 248/3375 59.8 59.4 113 111 116 453 911 0.00258 0.00324 50 0 226 49 0.608 + 1/998 249/3375 59.7 59.4 113 111 116 452 910 0.00254 0.00324 69 5 186 58 0.618 + 1/998 250/3375 59.9 59.5 113 111 116 453 911 0.00252 0.00323 112 3 106 107 0.602 + 1/998 251/3375 59.9 59.6 113 111 116 453 913 0.00252 0.00323 109 5 102 96 0.635 + 1/998 252/3375 59.8 59.4 113 111 115 452 910 0.0025 0.00323 27 1 131 25 0.607 + 1/998 253/3375 59.8 59.4 113 111 115 452 910 0.00248 0.00323 88 5 205 76 0.599 + 1/998 254/3375 59.7 59.4 113 111 115 452 910 0.00246 0.00323 70 5 289 56 0.603 + 1/998 255/3375 59.8 59.5 113 111 115 452 911 0.00246 0.00325 108 14 188 81 0.618 + 1/998 256/3375 59.9 59.6 113 111 116 453 912 0.00245 0.00326 105 4 105 90 0.628 + 1/998 257/3375 59.8 59.5 113 111 116 452 911 0.00245 0.00325 64 0 96 63 0.619 + 1/998 258/3375 59.8 59.4 113 111 115 452 910 0.00244 0.00325 60 1 90 56 0.601 + 1/998 259/3375 59.7 59.4 113 110 115 452 909 0.00244 0.00326 67 7 138 56 0.604 + 1/998 260/3375 59.7 59.3 113 110 115 452 909 0.00244 0.00324 74 1 147 70 0.605 + 1/998 261/3375 59.7 59.4 113 111 115 452 910 0.00243 0.00323 92 0 90 92 0.588 + 1/998 262/3375 59.8 59.5 113 111 115 452 911 0.00243 0.00322 91 2 61 87 0.599 + 1/998 263/3375 59.9 59.5 113 111 116 453 912 0.00243 0.00321 108 1 55 104 0.613 + 1/998 264/3375 59.8 59.4 113 111 115 452 911 0.00329 0.0033 54 11 88 40 0.609 + 1/998 265/3375 59.8 59.4 113 111 115 451 910 0.00457 0.0035 71 11 264 45 0.61 + 1/998 266/3375 59.8 59.5 113 111 115 452 911 0.00457 0.0035 113 4 42 106 0.604 + 1/998 267/3375 59.8 59.5 113 111 115 452 911 0.00457 0.0035 85 5 80 71 0.606 + 1/998 268/3375 59.8 59.4 113 111 115 451 910 0.00457 0.00351 52 3 77 46 0.597 + 1/998 269/3375 59.7 59.4 113 111 115 451 909 0.00457 0.00351 69 6 215 58 0.619 + 1/998 270/3375 59.6 59.3 113 111 115 451 908 0.00456 0.0035 50 0 175 43 0.622 + 1/998 271/3375 59.5 59.2 113 110 115 450 906 0.00508 0.00361 55 7 346 38 0.608 + 1/998 272/3375 59.4 59 112 110 115 449 905 0.00508 0.00361 53 4 258 42 0.609 + 1/998 273/3375 59.4 59.1 112 110 115 449 905 0.00508 0.00363 95 6 165 79 0.627 + 1/998 274/3375 59.5 59.1 112 110 115 449 905 0.00506 0.00362 92 5 133 81 0.638 + 1/998 275/3375 59.4 59 112 110 114 448 904 0.00506 0.00363 49 3 118 45 0.615 + 1/998 276/3375 59.4 58.9 112 110 114 448 903 0.00505 0.00362 67 1 376 56 0.604 + 1/998 277/3375 59.3 58.9 112 110 114 447 902 0.00505 0.00362 46 4 187 36 0.597 + 1/998 278/3375 59.3 58.8 112 110 114 447 902 0.00504 0.00363 81 7 209 68 0.619 + 1/998 279/3375 59.3 58.8 112 110 114 447 902 0.00497 0.00362 86 1 85 78 0.613 + 1/998 280/3375 59.3 58.8 112 110 114 447 901 0.00496 0.00361 64 7 272 52 0.6 + 1/998 281/3375 59.3 58.8 112 110 114 447 901 0.00505 0.00367 109 9 166 94 0.605 + 1/998 282/3375 59.4 58.8 112 110 114 447 901 0.00505 0.00367 87 1 133 83 0.617 + 1/998 283/3375 59.4 58.9 112 110 114 447 901 0.00505 0.00367 85 4 72 78 0.625 + 1/998 284/3375 59.4 58.9 112 110 114 447 901 0.00497 0.00366 83 2 89 77 0.613 + 1/998 285/3375 59.5 58.9 112 110 115 448 903 0.00498 0.00368 131 4 116 118 0.622 + 1/998 286/3375 59.5 58.9 112 110 115 448 903 0.00498 0.00367 91 3 75 84 0.615 + 1/998 287/3375 59.5 59 112 110 115 448 903 0.00497 0.00367 88 3 161 70 0.605 + 1/998 288/3375 59.5 58.9 112 110 115 448 903 0.00497 0.00367 62 5 183 51 0.605 + 1/998 289/3375 59.6 59.1 112 110 115 449 904 0.00487 0.00367 111 2 120 98 0.602 + 1/998 290/3375 59.5 59 112 110 115 449 904 0.00486 0.00366 79 3 142 66 0.609 + 1/998 291/3375 59.5 59 112 110 115 449 904 0.00485 0.00365 88 4 53 80 0.6 + 1/998 292/3375 59.5 59 112 110 115 448 904 0.00567 0.00378 93 6 127 77 0.614 + 1/998 293/3375 59.4 59 112 110 115 448 902 0.00567 0.00377 58 4 89 52 0.608 + 1/998 294/3375 59.4 58.9 112 110 114 447 902 0.00566 0.00377 69 2 96 65 0.606 + 1/998 295/3375 59.5 59 112 110 114 448 902 0.00567 0.00377 114 3 104 107 0.622 + 1/998 296/3375 59.5 59 112 110 115 448 903 0.00591 0.00377 88 9 264 71 0.619 + 1/998 297/3375 59.5 59 112 110 115 448 903 0.00591 0.00377 76 2 49 73 0.616 + 1/998 298/3375 59.5 59 112 110 115 448 903 0.0059 0.00378 65 2 102 61 0.627 + 1/998 299/3375 59.4 59 112 110 114 447 902 0.0059 0.00377 64 3 45 60 0.627 + 1/998 300/3375 59.4 59 112 110 114 448 903 0.0059 0.00377 90 7 130 74 0.617 + 1/998 301/3375 59.4 58.9 112 110 114 448 903 0.00588 0.00376 77 1 87 70 0.609 + 1/998 302/3375 59.4 58.9 112 110 114 448 902 0.00586 0.00377 69 5 111 60 0.628 + 1/998 303/3375 59.4 59 112 110 114 448 903 0.00586 0.00376 95 2 29 92 0.612 + 1/998 304/3375 59.4 58.9 112 110 114 448 903 0.00586 0.00374 84 3 120 71 0.623 + 1/998 305/3375 59.3 58.9 112 110 114 447 902 0.00585 0.00374 50 0 87 47 0.606 + 1/998 306/3375 59.4 58.9 112 110 114 448 903 0.00586 0.00373 88 1 31 87 0.621 + 1/998 307/3375 59.4 58.9 112 110 114 448 903 0.00642 0.0038 71 2 125 65 0.634 + 1/998 308/3375 59.4 58.9 112 110 114 448 903 0.0063 0.0038 93 14 126 75 0.64 + 1/998 309/3375 59.3 58.9 112 110 114 448 901 0.0063 0.0038 57 6 136 43 0.723 + 1/998 310/3375 59.4 59 112 110 114 448 902 0.00629 0.00379 103 0 74 102 0.668 + 1/998 311/3375 59.3 59 112 110 114 448 902 0.00627 0.00378 72 1 143 61 0.687 + 1/998 312/3375 59.3 58.9 112 110 114 447 900 0.00626 0.00377 59 3 138 49 0.615 + 1/998 313/3375 59.4 59.1 112 110 114 448 903 0.00621 0.00378 138 7 123 124 0.692 + 1/998 314/3375 59.4 59.1 112 110 114 448 903 0.0061 0.00384 81 9 249 58 0.693 + 1/998 315/3375 59.4 59.1 112 110 115 448 904 0.0061 0.00384 89 0 89 86 0.63 + 1/998 316/3375 59.4 59.1 112 110 115 448 904 0.0061 0.00386 75 2 114 69 0.65 + 1/998 317/3375 59.4 59.1 112 110 115 448 904 0.00608 0.00386 79 3 119 74 0.627 + 1/998 318/3375 59.3 59.1 112 110 114 448 903 0.00607 0.00385 65 3 83 58 0.624 + 1/998 319/3375 59.3 59.1 112 110 114 448 903 0.00607 0.00385 76 2 78 73 0.633 + 1/998 320/3375 59.3 59.1 112 110 114 448 902 0.00607 0.00384 59 0 136 56 0.619 + 1/998 321/3375 59.3 59 112 110 114 447 902 0.00583 0.00386 57 3 114 51 0.652 + 1/998 322/3375 59.4 59.1 112 110 115 448 903 0.00582 0.00386 132 5 131 121 0.628 + 1/998 323/3375 59.5 59.2 112 110 115 448 904 0.00572 0.00386 99 5 137 90 0.622 + 1/998 324/3375 59.5 59.2 112 110 115 449 905 0.00572 0.00388 93 5 217 79 0.639 + 1/998 325/3375 59.5 59.2 112 110 115 449 905 0.00571 0.00388 86 2 127 80 0.619 + 1/998 326/3375 59.5 59.2 112 110 115 449 905 0.00563 0.00387 81 1 166 74 0.622 + 1/998 327/3375 59.4 59.2 112 110 115 449 905 0.00563 0.00392 72 8 244 55 0.626 + 1/998 328/3375 59.4 59.2 112 110 115 449 905 0.00561 0.00392 62 2 143 51 0.613 + 1/998 329/3375 59.4 59.2 112 110 115 450 905 0.00601 0.00398 93 4 154 83 0.62 + 1/998 330/3375 59.4 59.3 112 110 115 450 906 0.0059 0.00397 79 0 272 74 0.635 + 1/998 331/3375 59.4 59.2 112 110 115 450 905 0.00589 0.00397 49 1 117 45 0.615 + 1/998 332/3375 59.5 59.3 112 110 115 450 905 0.00582 0.00398 89 8 151 75 0.616 + 1/998 333/3375 59.4 59.2 112 110 114 450 905 0.00581 0.00398 55 1 73 51 0.608 + 1/998 334/3375 59.3 59.2 112 109 114 450 904 0.00581 0.00398 52 2 61 47 0.621 + 1/998 335/3375 59.3 59.1 112 109 114 449 903 0.0058 0.00398 54 0 61 54 0.611 + 1/998 336/3375 59.2 59 112 109 114 449 902 0.00579 0.00398 49 0 148 49 0.609 + 1/998 337/3375 59.1 59 112 109 114 448 901 0.00577 0.00396 61 2 68 56 0.62 + 1/998 338/3375 59.1 59 111 109 114 448 900 0.00576 0.00396 59 4 145 53 0.631 + 1/998 339/3375 59.1 59 112 109 114 448 901 0.0058 0.00398 87 4 80 77 0.603 + 1/998 340/3375 59.2 59 112 109 114 449 902 0.0058 0.00397 131 4 72 116 0.641 + 1/998 341/3375 59.2 59.1 112 109 114 449 903 0.00578 0.00396 85 6 152 76 0.613 + 1/998 342/3375 59.2 59.1 112 109 114 449 902 0.00577 0.00396 84 9 167 64 0.623 + 1/998 343/3375 59.3 59.1 112 109 114 449 903 0.00577 0.00401 108 9 183 92 0.602 + 1/998 344/3375 59.3 59.1 112 109 114 449 902 0.00577 0.00402 57 5 145 51 0.596 + 1/998 345/3375 59.2 59 112 109 114 449 902 0.00575 0.00403 77 9 192 66 0.596 + 1/998 346/3375 59.2 59 112 109 114 449 902 0.00575 0.00403 98 8 209 77 0.609 + 1/998 347/3375 59.2 59 112 109 114 448 902 0.00573 0.00401 62 1 90 59 0.616 + 1/998 348/3375 59.2 58.9 112 109 114 448 901 0.00573 0.00401 54 1 148 50 0.618 + 1/998 349/3375 59.2 58.9 112 109 114 448 901 0.00563 0.004 72 3 146 68 0.605 + 1/998 350/3375 59.2 58.9 112 109 114 448 901 0.0056 0.00401 85 7 169 68 0.617 + 1/998 351/3375 59.2 58.9 112 109 114 448 901 0.0056 0.00401 93 3 213 80 0.609 + 1/998 352/3375 59.3 59 112 109 114 449 902 0.00558 0.00399 117 2 80 109 0.627 + 1/998 353/3375 59.2 58.9 112 109 114 448 901 0.00558 0.00399 55 6 124 43 0.615 + 1/998 354/3375 59.2 58.8 112 109 114 447 900 0.00557 0.00398 51 2 110 44 0.617 + 1/998 355/3375 59.1 58.7 112 109 114 447 899 0.00557 0.00398 40 2 174 35 0.62 + 1/998 356/3375 59.1 58.8 112 109 114 447 899 0.00556 0.00398 91 7 286 74 0.613 + 1/998 357/3375 59.2 58.8 112 109 114 447 900 0.00556 0.00397 95 2 49 92 0.62 + 1/998 358/3375 59.2 58.9 112 109 114 447 900 0.00556 0.00397 98 9 147 88 0.609 + 1/998 359/3375 59.2 59 112 109 114 448 901 0.00556 0.00395 111 2 111 106 0.619 + 1/998 360/3375 59.3 59 112 109 114 448 901 0.00556 0.00396 92 2 194 81 0.628 + 1/998 361/3375 59.3 59 112 109 114 448 901 0.00556 0.00395 82 12 185 64 0.628 + 1/998 362/3375 59.2 59 112 109 114 448 901 0.00553 0.00394 69 0 59 69 0.618 + 1/998 363/3375 59.2 59 112 109 114 447 900 0.00552 0.00394 87 8 301 70 0.615 + 1/998 364/3375 59.2 59 112 109 114 447 900 0.00547 0.00394 82 7 303 66 0.639 + 1/998 365/3375 59.2 59 112 109 114 447 900 0.00546 0.00394 67 3 282 51 0.616 + 1/998 366/3375 59.2 59 112 109 114 447 900 0.00538 0.00395 96 4 303 81 0.654 + 1/998 367/3375 59.2 58.9 112 109 114 447 899 0.00538 0.00396 49 5 214 43 0.638 + 1/998 368/3375 59.2 58.9 112 109 114 447 899 0.0053 0.00396 94 10 446 71 0.622 + 1/998 369/3375 59.2 58.9 111 109 114 446 899 0.00528 0.00397 75 11 233 51 0.607 + 1/998 370/3375 59.2 58.9 111 109 114 447 899 0.00525 0.00397 84 6 271 66 0.644 + 1/998 371/3375 59.2 58.9 111 109 114 446 898 0.0052 0.00397 63 4 188 54 0.627 + 1/998 372/3375 59.2 58.8 111 109 113 446 897 0.0052 0.00399 65 4 269 56 0.629 + 1/998 373/3375 59.2 58.9 111 109 113 446 898 0.00518 0.00402 90 11 260 72 0.627 + 1/998 374/3375 59.3 59 112 109 114 447 900 0.00516 0.00404 144 13 407 117 0.618 + 1/998 375/3375 59.3 59 112 109 114 446 899 0.00516 0.00406 69 8 342 57 0.627 + 1/998 376/3375 59.3 58.9 112 109 114 446 899 0.00516 0.00405 85 5 120 75 0.625 + 1/998 377/3375 59.4 59 112 109 114 447 900 0.00516 0.00404 107 1 61 105 0.608 + 1/998 378/3375 59.3 59 112 109 114 447 899 0.00514 0.00404 48 3 176 43 0.623 + 1/998 379/3375 59.3 59 112 109 114 447 899 0.00514 0.00403 75 2 106 70 0.63 + 1/998 380/3375 59.3 59 112 109 114 447 899 0.00514 0.00403 77 0 84 75 0.613 + 1/998 381/3375 59.3 59 112 109 114 447 900 0.00513 0.00403 91 7 177 72 0.617 + 1/998 382/3375 59.2 58.9 112 109 114 446 899 0.00512 0.00402 58 3 166 50 0.612 + 1/998 383/3375 59.3 59 112 109 114 447 899 0.00512 0.00402 99 3 26 96 0.645 + 1/998 384/3375 59.3 58.9 112 109 114 446 899 0.00511 0.00401 72 2 81 67 0.614 + 1/998 385/3375 59.3 59 112 109 114 446 899 0.00511 0.004 81 2 70 77 0.597 + 1/998 386/3375 59.3 59 112 109 114 446 899 0.00511 0.004 90 4 83 86 0.613 + 1/998 387/3375 59.3 58.9 112 109 114 446 899 0.0051 0.00399 61 0 51 58 0.585 + 1/998 388/3375 59.3 59 112 109 114 447 900 0.00509 0.00398 107 2 83 100 0.609 + 1/998 389/3375 59.3 59 112 109 114 447 900 0.00509 0.00399 62 6 115 54 0.619 + 1/998 390/3375 59.3 58.9 112 109 114 446 899 0.00509 0.00398 67 4 108 62 0.65 + 1/998 391/3375 59.2 58.9 112 109 114 446 899 0.00509 0.00398 69 2 38 65 0.595 + 1/998 392/3375 59.2 58.9 112 109 113 446 899 0.005 0.004 64 3 111 57 0.607 + 1/998 393/3375 59.2 58.9 112 109 113 446 899 0.00507 0.00405 84 2 18 79 0.603 + 1/998 394/3375 59.3 59 112 109 114 446 899 0.00507 0.00403 102 3 60 96 0.601 + 1/998 395/3375 59.3 59 112 109 114 446 899 0.00501 0.004 85 6 121 74 0.594 + 1/998 396/3375 59.3 59 112 109 114 446 899 0.00565 0.00412 92 2 43 89 0.595 + 1/998 397/3375 59.3 59 112 109 113 446 899 0.00565 0.00411 79 0 83 71 0.593 + 1/998 398/3375 59.3 59 112 109 114 446 899 0.00563 0.00411 74 5 74 65 0.597 + 1/998 399/3375 59.2 59 112 109 113 446 899 0.00563 0.00411 52 3 59 46 0.593 + 1/998 400/3375 59.2 59 112 109 113 446 899 0.00563 0.00411 91 2 37 85 0.599 + 1/998 401/3375 59.2 59 112 109 113 446 898 0.00562 0.00411 67 4 45 62 0.598 + 1/998 402/3375 59.2 59 112 109 113 445 898 0.00562 0.0041 63 2 23 61 0.59 + 1/998 403/3375 59.1 58.9 112 109 113 445 897 0.00562 0.0041 37 0 69 35 0.59 + 1/998 404/3375 59.2 59 112 109 113 445 898 0.00557 0.00409 100 0 26 99 0.595 + 1/998 405/3375 59.2 59 112 109 113 445 898 0.00557 0.00409 68 4 99 61 0.596 + 1/998 406/3375 59.2 59.1 112 109 113 446 899 0.00556 0.00408 113 3 68 108 0.614 + 1/998 407/3375 59.2 59.1 112 109 113 446 899 0.00557 0.00409 83 10 86 67 0.593 + 1/998 408/3375 59.2 59.1 112 109 113 446 899 0.00557 0.00408 81 1 25 76 0.606 + 1/998 409/3375 59.2 59.1 112 109 113 446 899 0.00557 0.00407 68 1 34 66 0.588 + 1/998 410/3375 59.2 59.1 112 109 113 446 899 0.00557 0.00407 123 8 64 109 0.594 + 1/998 411/3375 59.2 59.2 112 109 113 446 899 0.00557 0.00406 93 5 118 84 0.599 + 1/998 412/3375 59.2 59.1 112 109 113 446 899 0.00557 0.00406 77 2 129 71 0.6 + 1/998 413/3375 59.2 59.2 112 109 114 446 899 0.00556 0.00405 84 1 22 81 0.598 + 1/998 414/3375 59.3 59.2 112 109 114 447 900 0.00556 0.00405 130 7 94 117 0.608 + 1/998 415/3375 59.3 59.2 112 109 114 447 901 0.00556 0.00405 86 5 82 75 0.605 + 1/998 416/3375 59.3 59.2 112 109 114 447 900 0.00554 0.00404 62 2 99 59 0.595 + 1/998 417/3375 59.4 59.3 112 109 114 447 901 0.00554 0.00404 131 16 143 103 0.607 + 1/998 418/3375 59.3 59.2 112 109 114 447 901 0.00554 0.00405 64 11 196 47 0.612 + 1/998 419/3375 59.3 59.2 112 109 114 447 900 0.00555 0.00405 86 9 147 68 0.628 + 1/998 420/3375 59.3 59.2 112 109 114 447 900 0.00543 0.00405 65 1 130 59 0.603 + 1/998 421/3375 59.3 59.2 112 109 114 447 901 0.00542 0.00405 107 11 196 92 0.601 + 1/998 422/3375 59.4 59.3 112 109 114 447 901 0.00542 0.00405 91 3 47 82 0.606 + 1/998 423/3375 59.4 59.4 112 110 114 447 902 0.00541 0.00404 95 3 48 90 0.605 + 1/998 424/3375 59.5 59.4 112 110 114 448 903 0.00526 0.00403 124 3 160 111 0.609 + 1/998 425/3375 59.5 59.5 112 110 114 448 903 0.00526 0.00403 77 2 85 74 0.595 + 1/998 426/3375 59.5 59.4 112 110 114 448 903 0.00525 0.00402 84 3 74 74 0.604 + 1/998 427/3375 59.6 59.5 113 110 114 449 904 0.00525 0.00401 126 2 58 120 0.615 + 1/998 428/3375 59.7 59.5 113 110 114 449 905 0.00525 0.00401 106 6 105 96 0.604 + 1/998 429/3375 59.7 59.5 113 110 114 449 905 0.00525 0.00399 68 1 49 65 0.613 + 1/998 430/3375 59.7 59.6 113 110 114 449 906 0.00523 0.004 114 7 182 102 0.633 + 1/998 431/3375 59.7 59.6 113 110 114 449 906 0.00523 0.004 84 4 86 73 0.586 + 1/998 432/3375 59.8 59.7 113 110 114 449 906 0.00523 0.00399 99 4 43 95 0.607 + 1/998 433/3375 59.8 59.8 113 110 114 450 907 0.00521 0.00398 113 5 152 100 0.622 + 1/998 434/3375 59.8 59.8 113 110 114 450 907 0.0052 0.00398 80 6 126 70 0.609 + 1/998 435/3375 60 59.9 113 110 115 450 909 0.00518 0.00397 143 4 75 135 0.616 + 1/998 436/3375 60 59.9 113 110 115 450 908 0.00517 0.00397 73 9 171 62 0.605 + 1/998 437/3375 59.9 59.8 113 110 115 450 907 0.00517 0.00397 50 2 53 41 0.595 + 1/998 438/3375 59.9 59.8 113 110 114 450 907 0.00516 0.00397 57 2 59 54 0.609 + 1/998 439/3375 59.9 59.8 113 110 115 450 907 0.00521 0.004 91 2 53 87 0.604 + 1/998 440/3375 59.9 59.8 113 110 114 449 907 0.00521 0.00399 55 1 93 48 0.611 + 1/998 441/3375 60 59.9 113 110 115 450 907 0.0052 0.00399 136 5 56 128 0.601 + 1/998 442/3375 60 59.8 113 110 115 450 907 0.0052 0.00397 63 6 113 56 0.605 + 1/998 443/3375 60 59.8 113 110 115 450 907 0.0052 0.00396 85 2 63 78 0.612 + 1/998 444/3375 60 59.8 113 110 114 450 907 0.00524 0.00399 68 1 71 64 0.59 + 1/998 445/3375 59.9 59.8 113 110 114 449 906 0.00524 0.00399 50 1 121 43 0.599 + 1/998 446/3375 60 59.8 113 110 114 450 907 0.00523 0.00399 109 1 116 105 0.606 + 1/998 447/3375 59.9 59.8 113 110 114 450 907 0.00524 0.00399 76 9 83 62 0.678 + 1/998 448/3375 59.9 59.8 113 110 114 449 906 0.00523 0.00399 58 5 119 49 0.608 + 1/998 449/3375 59.9 59.8 113 110 114 450 907 0.00522 0.00399 81 2 135 77 0.607 + 1/998 450/3375 59.9 59.7 113 110 114 449 906 0.00522 0.00399 78 1 59 76 0.614 + 1/998 451/3375 59.9 59.8 113 110 114 449 906 0.00522 0.00397 88 4 114 83 0.591 + 1/998 452/3375 59.9 59.8 113 110 114 450 907 0.00521 0.00396 97 1 145 87 0.614 + 1/998 453/3375 60 59.8 113 110 115 450 908 0.00521 0.00394 125 2 61 122 0.6 + 1/998 454/3375 60 59.8 113 110 114 450 907 0.0052 0.00393 63 3 179 58 0.604 + 1/998 455/3375 60 59.8 113 110 114 450 908 0.00519 0.00392 95 1 52 89 0.596 + 1/998 456/3375 60 59.8 113 110 114 450 907 0.0052 0.00396 89 19 384 59 0.626 + 1/998 457/3375 60 59.8 113 110 114 450 907 0.0052 0.00396 79 4 101 74 0.621 + 1/998 458/3375 60 59.8 113 110 115 450 908 0.00512 0.00395 92 2 78 84 0.603 + 1/998 459/3375 60 59.8 113 110 115 450 907 0.00512 0.00395 61 9 277 44 0.594 + 1/998 460/3375 60 59.9 113 110 115 450 907 0.00512 0.00396 106 7 112 96 0.604 + 1/998 461/3375 59.9 59.9 113 110 114 449 907 0.00511 0.00395 47 2 66 41 0.601 + 1/998 462/3375 59.9 59.8 113 110 114 449 906 0.00511 0.00395 53 3 131 47 0.597 + 1/998 463/3375 59.8 59.8 113 110 114 449 905 0.00511 0.00397 58 3 288 46 0.605 + 1/998 464/3375 59.8 59.8 113 110 114 449 905 0.00509 0.00397 83 1 94 77 0.594 + 1/998 465/3375 59.8 59.7 113 110 114 449 905 0.00509 0.00398 77 7 358 58 0.605 + 1/998 466/3375 59.8 59.8 113 110 114 449 905 0.00509 0.00398 94 2 49 84 0.615 + 1/998 467/3375 59.8 59.7 113 110 114 448 904 0.00509 0.00398 36 3 104 32 0.601 + 1/998 468/3375 59.8 59.7 113 110 114 448 905 0.00509 0.00397 97 2 65 92 0.606 + 1/998 469/3375 59.8 59.7 113 110 114 448 904 0.00507 0.00397 58 3 162 49 0.63 + 1/998 470/3375 59.8 59.7 113 110 114 448 904 0.00507 0.00397 78 4 77 73 0.597 + 1/998 471/3375 59.7 59.7 113 110 114 448 904 0.00507 0.00397 65 0 90 63 0.61 + 1/998 472/3375 59.7 59.6 113 110 114 448 903 0.00507 0.00397 79 7 192 62 0.619 + 1/998 473/3375 59.7 59.6 113 110 114 447 903 0.00506 0.00397 59 5 181 50 0.601 + 1/998 474/3375 59.7 59.6 112 110 114 447 902 0.00506 0.00398 68 9 191 53 0.593 + 1/998 475/3375 59.7 59.6 112 110 114 447 902 0.00507 0.004 87 8 112 78 0.6 + 1/998 476/3375 59.6 59.5 112 109 114 447 902 0.00504 0.004 44 2 45 42 0.595 + 1/998 477/3375 59.6 59.5 112 109 114 446 901 0.005 0.00399 58 1 49 52 0.595 + 1/998 478/3375 59.6 59.5 112 109 114 446 901 0.005 0.00399 88 1 17 84 0.598 + 1/998 479/3375 59.7 59.6 112 110 114 447 902 0.005 0.00398 150 3 66 140 0.613 + 1/998 480/3375 59.7 59.6 112 110 114 447 903 0.00497 0.00397 96 2 80 85 0.614 + 1/998 481/3375 59.7 59.7 112 110 114 447 902 0.00497 0.00398 83 14 295 62 0.609 + 1/998 482/3375 59.7 59.7 112 110 114 447 902 0.00495 0.00398 67 5 81 58 0.601 + 1/998 483/3375 59.7 59.7 112 110 114 447 902 0.00495 0.00397 84 5 77 74 0.606 + 1/998 484/3375 59.7 59.7 112 110 114 447 902 0.00494 0.00397 71 1 32 69 0.594 + 1/998 485/3375 59.7 59.6 112 110 114 447 901 0.00494 0.00397 51 8 184 40 0.593 + 1/998 486/3375 59.9 59.8 112 110 114 448 903 0.00494 0.00396 154 2 32 148 0.609 + 1/998 487/3375 59.8 59.7 112 110 114 447 903 0.00494 0.00396 66 5 111 57 0.592 + 1/998 488/3375 59.8 59.7 112 110 114 447 902 0.00494 0.00397 73 6 125 58 0.604 + 1/998 489/3375 59.8 59.7 112 110 114 447 902 0.00494 0.00396 45 0 126 43 0.58 + 1/998 490/3375 59.8 59.6 112 110 114 446 901 0.00494 0.00396 60 3 34 56 0.596 + 1/998 491/3375 59.8 59.7 112 110 114 447 902 0.00494 0.00395 139 1 31 135 0.595 + 1/998 492/3375 59.8 59.7 112 110 114 447 902 0.00493 0.00395 84 3 85 79 0.582 + 1/998 493/3375 59.9 59.7 112 110 114 447 902 0.00493 0.00395 96 5 75 88 0.598 + 1/998 494/3375 59.8 59.7 112 110 114 446 902 0.00493 0.00396 73 5 150 53 0.62 + 1/998 495/3375 59.8 59.6 112 110 114 446 901 0.00492 0.00396 91 8 149 78 0.604 + 1/998 496/3375 59.8 59.6 112 110 114 446 901 0.00492 0.00395 56 1 114 54 0.599 + 1/998 497/3375 59.8 59.6 112 110 114 446 901 0.00492 0.00395 90 4 122 83 0.601 + 1/998 498/3375 59.8 59.6 112 110 114 446 901 0.00492 0.00395 86 2 73 82 0.615 + 1/998 499/3375 59.9 59.6 112 110 114 446 901 0.00492 0.00394 109 4 91 100 0.636 + 1/998 500/3375 59.8 59.6 112 110 114 446 901 0.00491 0.00394 46 3 121 40 0.607 + 1/998 501/3375 59.8 59.6 112 110 114 446 901 0.00491 0.00395 92 4 158 83 0.612 + 1/998 502/3375 59.9 59.6 112 110 114 446 902 0.00491 0.00395 121 7 106 111 0.603 + 1/998 503/3375 59.9 59.6 112 110 114 446 902 0.0049 0.00395 76 1 147 75 0.613 + 1/998 504/3375 59.9 59.6 112 110 114 446 902 0.0049 0.00394 73 3 181 69 0.602 + 1/998 505/3375 59.9 59.6 112 110 114 446 902 0.00491 0.00397 90 11 135 75 0.612 + 1/998 506/3375 59.9 59.7 112 110 114 447 902 0.00491 0.00396 120 3 63 111 0.62 + 1/998 507/3375 59.9 59.7 112 110 114 447 902 0.00491 0.00396 61 2 113 54 0.606 + 1/998 508/3375 59.9 59.6 112 110 114 446 902 0.00491 0.00397 71 2 42 69 0.596 + 1/998 509/3375 59.9 59.6 112 110 114 446 902 0.00491 0.00397 70 3 156 62 0.608 + 1/998 510/3375 59.9 59.6 112 110 114 446 902 0.00489 0.00398 82 6 131 66 0.626 + 1/998 511/3375 59.9 59.7 112 110 114 447 902 0.00489 0.00398 93 4 98 85 0.651 + 1/998 512/3375 59.9 59.6 112 110 114 447 902 0.0049 0.00399 74 5 109 67 0.587 + 1/998 513/3375 60 59.7 112 110 114 446 902 0.0049 0.00397 97 3 81 90 0.602 + 1/998 514/3375 59.9 59.6 112 110 114 446 901 0.00489 0.00397 64 1 90 62 0.609 + 1/998 515/3375 60 59.7 112 110 114 447 902 0.00489 0.00396 114 0 83 113 0.613 + 1/998 516/3375 60 59.7 112 110 114 447 903 0.00489 0.00395 72 1 114 67 0.619 + 1/998 517/3375 59.9 59.7 112 110 114 447 902 0.00489 0.00395 59 2 82 54 0.611 + 1/998 518/3375 60 59.7 112 110 114 447 902 0.00488 0.00394 79 0 93 76 0.614 + 1/998 519/3375 60.1 59.8 112 110 114 447 903 0.00496 0.00397 134 4 36 125 0.614 + 1/998 520/3375 60 59.8 112 110 114 447 903 0.00496 0.00396 64 1 56 63 0.575 + 1/998 521/3375 60 59.7 112 110 114 447 902 0.00497 0.00397 52 3 60 47 0.588 + 1/998 522/3375 59.9 59.6 112 110 114 446 901 0.00496 0.00397 37 0 63 35 0.604 + 1/998 523/3375 59.9 59.6 112 110 114 446 901 0.00495 0.00397 60 2 164 54 0.612 + 1/998 524/3375 59.9 59.7 112 110 114 446 901 0.00495 0.00398 100 9 88 84 0.608 + 1/998 525/3375 59.9 59.7 112 109 114 447 902 0.00474 0.00397 87 1 73 83 0.624 + 1/998 526/3375 59.9 59.7 112 110 114 447 901 0.00479 0.004 80 5 87 70 0.613 + 1/998 527/3375 60 59.7 112 110 114 447 902 0.00478 0.004 103 2 73 99 0.606 + 1/998 528/3375 59.9 59.7 112 110 114 447 902 0.00478 0.00399 85 3 86 75 0.598 + 1/998 529/3375 60 59.7 112 110 114 447 903 0.00478 0.004 100 8 53 92 0.599 + 1/998 530/3375 60 59.8 112 110 114 448 904 0.00478 0.00399 124 1 24 121 0.601 + 1/998 531/3375 60.1 59.8 112 110 114 448 904 0.00477 0.00398 73 0 63 70 0.601 + 1/998 532/3375 60 59.8 112 110 114 448 903 0.00475 0.00398 69 0 130 64 0.629 + 1/998 533/3375 60 59.7 112 110 114 447 903 0.00474 0.00397 56 0 57 55 0.606 + 1/998 534/3375 60 59.7 112 110 114 448 903 0.00473 0.00397 98 0 45 92 0.616 + 1/998 535/3375 60 59.7 112 110 114 447 903 0.00473 0.00397 37 1 29 35 0.588 + 1/998 536/3375 60 59.7 112 110 114 448 903 0.00472 0.00397 92 8 207 72 0.607 + 1/998 537/3375 60 59.7 112 110 114 448 903 0.00472 0.00396 92 4 49 85 0.607 + 1/998 538/3375 60 59.7 112 110 114 448 903 0.00469 0.00396 91 1 113 86 0.611 + 1/998 539/3375 60 59.7 112 110 114 447 903 0.00469 0.00396 53 5 60 47 0.606 + 1/998 540/3375 60 59.7 112 110 114 448 903 0.00469 0.00395 88 1 77 85 0.601 + 0/998 0/416 90.9 90 596 585 367 939 2.67e+03 0 0 117 0 0 117 4.28 + 0/998 1/416 80.5 88.3 593 591 318 825 2.5e+03 0 0 87 0 0 87 0.579 + 0/998 2/416 74.3 82.9 500 502 297 763 2.22e+03 0 0 68 0 0 68 0.554 + 0/998 3/416 69.2 76.6 447 451 271 700 2.01e+03 0 0 59 0 0 59 0.553 + 0/998 4/416 65.6 69.9 395 403 253 652 1.84e+03 0 0 49 0 0 49 0.533 + 0/998 5/416 65.6 69.3 390 390 255 664 1.83e+03 0 0 97 0 0 97 0.531 + 0/998 6/416 62.9 67.2 374 364 245 636 1.75e+03 0 0 50 0 0 50 0.545 + 0/998 7/416 65.9 69.6 377 369 254 662 1.8e+03 0 0 97 0 0 97 0.539 + 0/998 8/416 65.3 67.7 367 353 250 652 1.75e+03 0 0 64 0 3 64 0.549 + 0/998 9/416 65.5 68.6 359 357 254 663 1.77e+03 0 0 81 0 14 81 0.541 + 0/998 10/416 64.6 66.9 354 349 250 650 1.73e+03 0 0 54 0 2 54 0.537 diff --git a/test.py b/test.py new file mode 100644 index 00000000..88054f70 --- /dev/null +++ b/test.py @@ -0,0 +1,130 @@ +import argparse + +from models import * +from utils.datasets import * +from utils.utils import * + +parser = argparse.ArgumentParser() +parser.add_argument('--epochs', type=int, default=200, help='number of epochs') +parser.add_argument('--batch_size', type=int, default=32, help='size of each image batch') +parser.add_argument('--model_config_path', type=str, default='cfg/yolov3.cfg', help='path to model config file') +parser.add_argument('--data_config_path', type=str, default='cfg/coco.data', help='path to data config file') +parser.add_argument('--weights_path', type=str, default='checkpoints/yolov3.weights', help='path to weights file') +parser.add_argument('--class_path', type=str, default='data/coco.names', help='path to class label file') +parser.add_argument('--iou_thres', type=float, default=0.5, help='iou threshold required to qualify as detected') +parser.add_argument('--conf_thres', type=float, default=0.5, help='object confidence threshold') +parser.add_argument('--nms_thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') +parser.add_argument('--n_cpu', type=int, default=0, help='number of cpu threads to use during batch generation') +parser.add_argument('--img_size', type=int, default=416, help='size of each image dimension') +parser.add_argument('--use_cuda', type=bool, default=True, help='whether to use cuda if available') +opt = parser.parse_args() +print(opt) + +cuda = torch.cuda.is_available() and opt.use_cuda +device = torch.device('cuda:0' if cuda else 'cpu') + +# Get data configuration +data_config = parse_data_config(opt.data_config_path) +test_path = data_config['valid'] +num_classes = int(data_config['classes']) + +# Initiate model +model = Darknet(opt.model_config_path, opt.img_size) + +# Load weights +weights_path = 'checkpoints/yolov3.pt' +if weights_path.endswith('.weights'): # darknet format + load_weights(model, weights_path) +elif weights_path.endswith('.pt'): # pytorch format + checkpoint = torch.load(weights_path, map_location='cpu') + model.load_state_dict(checkpoint['model']) + del checkpoint + +model.to(device).eval() + +# Get dataloader +# dataset = ListDataset(test_path) +# dataloader = torch.utils.data.DataLoader(dataset, batch_size=opt.batch_size, shuffle=False, num_workers=opt.n_cpu) +dataloader = ListDataset(test_path, batch_size=opt.batch_size, img_size=opt.img_size) + +Tensor = torch.cuda.FloatTensor if cuda else torch.FloatTensor + +n_gt = 0 +correct = 0 + +print('Compute mAP...') + +outputs = [] +targets = None +APs = [] +for batch_i, (imgs, targets) in enumerate(dataloader): + imgs = imgs.to(device) + + with torch.no_grad(): + output = model(imgs) + output = non_max_suppression(output, conf_thres=opt.conf_thres, nms_thres=opt.nms_thres) + + # Compute average precision for each sample + for sample_i in range(len(targets)): + correct = [] + + # Get labels for sample where width is not zero (dummies) + annotations = targets[sample_i] + # Extract detections + detections = output[sample_i] + + if detections is None: + # If there are no detections but there are annotations mask as zero AP + if annotations.size(0) != 0: + APs.append(0) + continue + + # Get detections sorted by decreasing confidence scores + detections = detections[np.argsort(-detections[:, 4])] + + # If no annotations add number of detections as incorrect + if annotations.size(0) == 0: + correct.extend([0 for _ in range(len(detections))]) + else: + # Extract target boxes as (x1, y1, x2, y2) + target_boxes = torch.FloatTensor(annotations[:, 1:].shape) + target_boxes[:, 0] = (annotations[:, 1] - annotations[:, 3] / 2) + target_boxes[:, 1] = (annotations[:, 2] - annotations[:, 4] / 2) + target_boxes[:, 2] = (annotations[:, 1] + annotations[:, 3] / 2) + target_boxes[:, 3] = (annotations[:, 2] + annotations[:, 4] / 2) + target_boxes *= opt.img_size + + detected = [] + for *pred_bbox, conf, obj_conf, obj_pred in detections: + + pred_bbox = torch.FloatTensor(pred_bbox).view(1, -1) + # Compute iou with target boxes + iou = bbox_iou(pred_bbox, target_boxes) + # Extract index of largest overlap + best_i = np.argmax(iou) + # If overlap exceeds threshold and classification is correct mark as correct + if iou[best_i] > opt.iou_thres and obj_pred == annotations[best_i, 0] and best_i not in detected: + correct.append(1) + detected.append(best_i) + else: + correct.append(0) + + # Extract true and false positives + true_positives = np.array(correct) + false_positives = 1 - true_positives + + # Compute cumulative false positives and true positives + false_positives = np.cumsum(false_positives) + true_positives = np.cumsum(true_positives) + + # Compute recall and precision at all ranks + recall = true_positives / annotations.size(0) if annotations.size(0) else true_positives + precision = true_positives / np.maximum(true_positives + false_positives, np.finfo(np.float64).eps) + + # Compute average precision + AP = compute_ap(recall, precision) + APs.append(AP) + + print("+ Sample [%d/%d] AP: %.4f (%.4f)" % (len(APs), len(dataloader) * opt.batch_size, AP, np.mean(APs))) + +print("Mean Average Precision: %.4f" % np.mean(APs)) diff --git a/train.py b/train.py new file mode 100644 index 00000000..56435dcc --- /dev/null +++ b/train.py @@ -0,0 +1,192 @@ +import argparse +import time +from sys import platform + +from models import * +from utils.datasets import * +from utils.utils import * + +parser = argparse.ArgumentParser() +parser.add_argument('-epochs', type=int, default=999, help='number of epochs') +parser.add_argument('-batch_size', type=int, default=12, help='size of each image batch') +parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='data config file path') +parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') +parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each image dimension') +parser.add_argument('-resume', default=False, help='resume training flag') +opt = parser.parse_args() +print(opt) + +cuda = torch.cuda.is_available() +device = torch.device('cuda:0' if cuda else 'cpu') + +random.seed(0) +np.random.seed(0) +torch.manual_seed(0) +if cuda: + torch.cuda.manual_seed(0) + torch.cuda.manual_seed_all(0) + torch.backends.cudnn.benchmark = True + +def main(opt): + os.makedirs('checkpoints', exist_ok=True) + + # Configure run + data_config = parse_data_config(opt.data_config_path) + num_classes = int(data_config['classes']) + if platform == 'darwin': # macos + train_path = data_config['valid'] + else: # linux (gcp cloud) + train_path = '../coco/trainvalno5k.txt' + + # Initialize model + model = Darknet(opt.cfg, opt.img_size) + + # Get dataloader + dataloader = ListDataset(train_path, batch_size=opt.batch_size, img_size=opt.img_size) + + # reload saved optimizer state + start_epoch = 0 + best_loss = float('inf') + if opt.resume: + checkpoint = torch.load('checkpoints/latest.pt', map_location='cpu') + + model.load_state_dict(checkpoint['model']) + if torch.cuda.device_count() > 1: + print('Using ', torch.cuda.device_count(), ' GPUs') + model = nn.DataParallel(model) + model.to(device).train() + + # # Transfer learning + # for i, (name, p) in enumerate(model.named_parameters()): + # #name = name.replace('module_list.', '') + # #print('%4g %70s %9s %12g %20s %12g %12g' % ( + # # i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) + # if p.shape[0] != 650: # not YOLO layer + # p.requires_grad = False + + # Set optimizer + # optimizer = torch.optim.SGD(model.parameters(), lr=.001, momentum=.9, weight_decay=0.0005 * 0, nesterov=True) + # optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, model.parameters())) + optimizer = torch.optim.Adam(model.parameters()) + optimizer.load_state_dict(checkpoint['optimizer']) + + start_epoch = checkpoint['epoch'] + 1 + best_loss = checkpoint['best_loss'] + + del checkpoint # current, saved + else: + if torch.cuda.device_count() > 1: + print('Using ', torch.cuda.device_count(), ' GPUs') + model = nn.DataParallel(model) + model.to(device).train() + optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-4, weight_decay=5e-4) + + # Set scheduler + # scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, 24, eta_min=0.00001, last_epoch=-1) + # y = 0.001 * exp(-0.00921 * x) # 1e-4 @ 250, 1e-5 @ 500 + # scheduler = torch.optim.lr_scheduler.ExponentialLR(optimizer, gamma=0.99082, last_epoch=start_epoch - 1) + + modelinfo(model) + t0, t1 = time.time(), time.time() + print('%10s' * 16 % ( + 'Epoch', 'Batch', 'x', 'y', 'w', 'h', 'conf', 'cls', 'total', 'P', 'R', 'nGT', 'TP', 'FP', 'FN', 'time')) + for epoch in range(opt.epochs): + epoch += start_epoch + + # img_size = random.choice([19, 20, 21, 22, 23, 24, 25]) * 32 + # dataloader = ListDataset(train_path, batch_size=opt.batch_size, img_size=img_size, targets_path=targets_path) + # print('Running image size %g' % img_size) + + # Update scheduler + # if epoch % 25 == 0: + # scheduler.last_epoch = -1 # for cosine annealing, restart every 25 epochs + # scheduler.step() + # if epoch <= 100: + # for g in optimizer.param_groups: + # g['lr'] = 0.0005 * (0.992 ** epoch) # 1/10 th every 250 epochs + # g['lr'] = 0.001 * (0.9773 ** epoch) # 1/10 th every 100 epochs + # g['lr'] = 0.0005 * (0.955 ** epoch) # 1/10 th every 50 epochs + # g['lr'] = 0.0005 * (0.926 ** epoch) # 1/10 th every 30 epochs + + ui = -1 + rloss = defaultdict(float) # running loss + metrics = torch.zeros(4, num_classes) + for i, (imgs, targets) in enumerate(dataloader): + + n = opt.batch_size # number of pictures at a time + for j in range(int(len(imgs) / n)): + targets_j = targets[j * n:j * n + n] + nGT = sum([len(x) for x in targets_j]) + if nGT < 1: + continue + + loss = model(imgs[j * n:j * n + n].to(device), targets_j, requestPrecision=True, epoch=epoch) + optimizer.zero_grad() + loss.backward() + optimizer.step() + + ui += 1 + metrics += model.losses['metrics'] + for key, val in model.losses.items(): + rloss[key] = (rloss[key] * ui + val) / (ui + 1) + + # Precision + precision = metrics[0] / (metrics[0] + metrics[1] + 1e-16) + k = (metrics[0] + metrics[1]) > 0 + if k.sum() > 0: + mean_precision = precision[k].mean() + else: + mean_precision = 0 + + # Recall + recall = metrics[0] / (metrics[0] + metrics[2] + 1e-16) + k = (metrics[0] + metrics[2]) > 0 + if k.sum() > 0: + mean_recall = recall[k].mean() + else: + mean_recall = 0 + + s = ('%10s%10s' + '%10.3g' * 14) % ( + '%g/%g' % (epoch, opt.epochs - 1), '%g/%g' % (i, len(dataloader) - 1), rloss['x'], + rloss['y'], rloss['w'], rloss['h'], rloss['conf'], rloss['cls'], + rloss['loss'], mean_precision, mean_recall, model.losses['nGT'], model.losses['TP'], + model.losses['FP'], model.losses['FN'], time.time() - t1) + t1 = time.time() + print(s) + + # if i == 1: + # return + + # Write epoch results + with open('results.txt', 'a') as file: + file.write(s + '\n') + + # Update best loss + loss_per_target = rloss['loss'] / rloss['nGT'] + if loss_per_target < best_loss: + best_loss = loss_per_target + + # Save latest checkpoint + checkpoint = {'epoch': epoch, + 'best_loss': best_loss, + 'model': model.state_dict(), + 'optimizer': optimizer.state_dict()} + torch.save(checkpoint, 'checkpoints/latest.pt') + + # Save best checkpoint + if best_loss == loss_per_target: + os.system('cp checkpoints/latest.pt checkpoints/best.pt') + + # Save backup checkpoint + if (epoch > 0) & (epoch % 100 == 0): + os.system('cp checkpoints/latest.pt checkpoints/backup' + str(epoch) + '.pt') + + # Save final model + dt = time.time() - t0 + print('Finished %g epochs in %.2fs (%.2fs/epoch)' % (epoch, dt, dt / (epoch + 1))) + + +if __name__ == '__main__': + torch.cuda.empty_cache() + main(opt) + torch.cuda.empty_cache() diff --git a/utils/datasets.py b/utils/datasets.py new file mode 100755 index 00000000..0760d7e5 --- /dev/null +++ b/utils/datasets.py @@ -0,0 +1,284 @@ +import glob +import math +import os +import random + +import cv2 +import numpy as np +import torch + +# from torch.utils.data import Dataset +from utils.utils import xyxy2xywh + + +class ImageFolder(): # for eval-only + def __init__(self, path, batch_size=1, img_size=416): + if os.path.isdir(path): + self.files = sorted(glob.glob('%s/*.*' % path)) + elif os.path.isfile(path): + self.files = [path] + + self.nF = len(self.files) # number of image files + self.nB = math.ceil(self.nF / batch_size) # number of batches + self.batch_size = batch_size + self.height = img_size + assert self.nF > 0, 'No images found in path %s' % path + + # RGB normalization values + # self.rgb_mean = np.array([60.134, 49.697, 40.746], dtype=np.float32).reshape((3, 1, 1)) + # self.rgb_std = np.array([29.99, 24.498, 22.046], dtype=np.float32).reshape((3, 1, 1)) + + def __iter__(self): + self.count = -1 + return self + + def __next__(self): + self.count += 1 + if self.count == self.nB: + raise StopIteration + img_path = self.files[self.count] + + # Read image + img = cv2.imread(img_path) # BGR + + # Padded resize + img, _, _, _ = resize_square(img, height=self.height, color=(127.5, 127.5, 127.5)) + + # Normalize RGB + img = img[:, :, ::-1].transpose(2, 0, 1) + img = np.ascontiguousarray(img, dtype=np.float32) + # img -= self.rgb_mean + # img /= self.rgb_std + img /= 255.0 + + return [img_path], img + + def __len__(self): + return self.nB # number of batches + + +class ListDataset(): # for training + def __init__(self, path, batch_size=1, img_size=608): + self.path = path + #self.img_files = sorted(glob.glob('%s/*.*' % path)) + with open(path, 'r') as file: + self.img_files = file.readlines() + self.img_files = [path.replace('\n', '').replace('/images','/Users/glennjocher/Downloads/DATA/coco/images') for path in self.img_files] + + self.label_files = [path.replace('images', 'labels').replace('.png', '.txt').replace('.jpg', '.txt') for path in + self.img_files] + + self.nF = len(self.img_files) # number of image files + self.nB = math.ceil(self.nF / batch_size) # number of batches + self.batch_size = batch_size + + #assert self.nB > 0, 'No images found in path %s' % path + self.height = img_size + + # RGB normalization values + # self.rgb_mean = np.array([60.134, 49.697, 40.746], dtype=np.float32).reshape((1, 3, 1, 1)) + # self.rgb_std = np.array([29.99, 24.498, 22.046], dtype=np.float32).reshape((1, 3, 1, 1)) + + def __iter__(self): + self.count = -1 + # self.shuffled_vector = np.random.permutation(self.nF) # shuffled vector + self.shuffled_vector = np.arange(self.nF) + return self + + def __next__(self): + self.count += 1 + if self.count == self.nB: + raise StopIteration + + ia = self.count * self.batch_size + ib = min((self.count + 1) * self.batch_size, self.nF) + + height = self.height + + img_all = [] + labels_all = [] + for index, files_index in enumerate(range(ia, ib)): + img_path = self.img_files[self.shuffled_vector[files_index]] + label_path = self.label_files[self.shuffled_vector[files_index]] + + img = cv2.imread(img_path) # BGR + if img is None: + continue + + augment_hsv = False + if augment_hsv: + # SV augmentation by 50% + fraction = 0.50 + img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) + S = img_hsv[:, :, 1].astype(np.float32) + V = img_hsv[:, :, 2].astype(np.float32) + + a = (random.random() * 2 - 1) * fraction + 1 + S *= a + if a > 1: + np.clip(S, a_min=0, a_max=255, out=S) + + a = (random.random() * 2 - 1) * fraction + 1 + V *= a + if a > 1: + np.clip(V, a_min=0, a_max=255, out=V) + + img_hsv[:, :, 1] = S.astype(np.uint8) + img_hsv[:, :, 2] = V.astype(np.uint8) + cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) + + h, w, _ = img.shape + img, ratio, padw, padh = resize_square(img, height=height, color=(127.5, 127.5, 127.5)) + + # Load labels + if os.path.isfile(label_path): + labels0 = np.loadtxt(label_path, dtype=np.float32).reshape(-1, 5) + + # Normalized xywh to pixel xyxy format + labels = labels0.copy() + labels[:, 1] = ratio * w * (labels0[:, 1] - labels0[:, 3] / 2) + padw + labels[:, 2] = ratio * h * (labels0[:, 2] - labels0[:, 4] / 2) + padh + labels[:, 3] = ratio * w * (labels0[:, 1] + labels0[:, 3] / 2) + padw + labels[:, 4] = ratio * h * (labels0[:, 2] + labels0[:, 4] / 2) + padh + else: + labels = np.array([]) + + # Augment image and labels + # img, labels, M = random_affine(img, targets=labels, degrees=(-5, 5), translate=(0.1, 0.1), scale=(0.8, 1.2)) # RGB + + plotFlag = False + if plotFlag: + import matplotlib.pyplot as plt + plt.subplot(4, 4, index + 1).imshow(img[:, :, ::-1]) + plt.plot(labels[:, [1, 3, 3, 1, 1]].T, labels[:, [2, 2, 4, 4, 2]].T, '.-') + + nL = len(labels) + if nL > 0: + # convert xyxy to xywh + labels[:, 1:5] = xyxy2xywh(labels[:, 1:5].copy()) / height + + # random left-right flip + lr_flip = False + if lr_flip & (random.random() > 0.5): + img = np.fliplr(img) + if nL > 0: + labels[:, 1] = 1 - labels[:, 1] + + # random up-down flip + ud_flip = False + if ud_flip & (random.random() > 0.5): + img = np.flipud(img) + if nL > 0: + labels[:, 2] = 1 - labels[:, 2] + + img_all.append(img) + labels_all.append(torch.from_numpy(labels)) + + # Normalize + img_all = np.stack(img_all)[:, :, :, ::-1].transpose(0, 3, 1, 2) # BGR to RGB and cv2 to pytorch + img_all = np.ascontiguousarray(img_all, dtype=np.float32) + # img_all -= self.rgb_mean + # img_all /= self.rgb_std + img_all /= 255.0 + + return torch.from_numpy(img_all), labels_all + + def __len__(self): + return self.nB # number of batches + + +def resize_square(img, height=416, color=(0, 0, 0)): # resize a rectangular image to a padded square + shape = img.shape[:2] # shape = [height, width] + ratio = float(height) / max(shape) + new_shape = [round(shape[0] * ratio), round(shape[1] * ratio)] + dw = height - new_shape[1] # width padding + dh = height - new_shape[0] # height padding + top, bottom = dh // 2, dh - (dh // 2) + left, right = dw // 2, dw - (dw // 2) + img = cv2.resize(img, (new_shape[1], new_shape[0]), interpolation=cv2.INTER_AREA) + return cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color), ratio, dw // 2, dh // 2 + + +def random_affine(img, targets=None, degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-3, 3), + borderValue=(0, 0, 0)): + # torchvision.transforms.RandomAffine(degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-10, 10)) + # https://medium.com/uruvideo/dataset-augmentation-with-random-homographies-a8f4b44830d4 + + border = 0 # width of added border (optional) + height = max(img.shape[0], img.shape[1]) + border * 2 + + # Rotation and Scale + R = np.eye(3) + a = random.random() * (degrees[1] - degrees[0]) + degrees[0] + # a += random.choice([-180, -90, 0, 90]) # random 90deg rotations added to small rotations + + s = random.random() * (scale[1] - scale[0]) + scale[0] + R[:2] = cv2.getRotationMatrix2D(angle=a, center=(img.shape[1] / 2, img.shape[0] / 2), scale=s) + + # Translation + T = np.eye(3) + T[0, 2] = (random.random() * 2 - 1) * translate[0] * img.shape[0] + border # x translation (pixels) + T[1, 2] = (random.random() * 2 - 1) * translate[1] * img.shape[1] + border # y translation (pixels) + + # Shear + S = np.eye(3) + S[0, 1] = math.tan((random.random() * (shear[1] - shear[0]) + shear[0]) * math.pi / 180) # x shear (deg) + S[1, 0] = math.tan((random.random() * (shear[1] - shear[0]) + shear[0]) * math.pi / 180) # y shear (deg) + + M = S @ T @ R # ORDER IS IMPORTANT HERE!! + imw = cv2.warpPerspective(img, M, dsize=(height, height), flags=cv2.INTER_LINEAR, + borderValue=borderValue) # BGR order (YUV-equalized BGR means) + + # Return warped points also + if targets is not None: + if len(targets) > 0: + n = targets.shape[0] + points = targets[:, 1:5].copy() + area0 = (points[:, 2] - points[:, 0]) * (points[:, 3] - points[:, 1]) + + # warp points + xy = np.ones((n * 4, 3)) + xy[:, :2] = points[:, [0, 1, 2, 3, 0, 3, 2, 1]].reshape(n * 4, 2) # x1y1, x2y2, x1y2, x2y1 + xy = (xy @ M.T)[:, :2].reshape(n, 8) + + # create new boxes + x = xy[:, [0, 2, 4, 6]] + y = xy[:, [1, 3, 5, 7]] + xy = np.concatenate((x.min(1), y.min(1), x.max(1), y.max(1))).reshape(4, n).T + + # apply angle-based reduction + radians = a * math.pi / 180 + reduction = max(abs(math.sin(radians)), abs(math.cos(radians))) ** 0.5 + x = (xy[:, 2] + xy[:, 0]) / 2 + y = (xy[:, 3] + xy[:, 1]) / 2 + w = (xy[:, 2] - xy[:, 0]) * reduction + h = (xy[:, 3] - xy[:, 1]) * reduction + xy = np.concatenate((x - w / 2, y - h / 2, x + w / 2, y + h / 2)).reshape(4, n).T + + # reject warped points outside of image + np.clip(xy, 0, height, out=xy) + w = xy[:, 2] - xy[:, 0] + h = xy[:, 3] - xy[:, 1] + area = w * h + ar = np.maximum(w / (h + 1e-16), h / (w + 1e-16)) + i = (w > 4) & (h > 4) & (area / area0 > 0.1) & (ar < 10) + + targets = targets[i] + targets[:, 1:5] = xy[i] + + return imw, targets, M + else: + return imw + + +def convert_tif2bmp(p='/Users/glennjocher/Downloads/DATA/xview/val_images_bmp'): + import glob + import cv2 + files = sorted(glob.glob('%s/*.tif' % p)) + for i, f in enumerate(files): + print('%g/%g' % (i + 1, len(files))) + + img = cv2.imread(f) + + cv2.imwrite(f.replace('.tif', '.bmp'), img) + os.system('rm -rf ' + f) diff --git a/utils/gcp.sh b/utils/gcp.sh new file mode 100644 index 00000000..765747ba --- /dev/null +++ b/utils/gcp.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash + +# Start +sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 train.py -img_size 416 -epochs 999 + +# Resume +cd yolov3 && python3 train.py -img_size 416 -resume 1 + +# Detect +gsutil cp gs://ultralytics/fresh9_5_e201.pt yolov3/checkpoints +cd yolov3 && python3 detect.py + diff --git a/utils/parse_config.py b/utils/parse_config.py new file mode 100644 index 00000000..9dc03585 --- /dev/null +++ b/utils/parse_config.py @@ -0,0 +1,36 @@ + + +def parse_model_config(path): + """Parses the yolo-v3 layer configuration file and returns module definitions""" + file = open(path, 'r') + lines = file.read().split('\n') + lines = [x for x in lines if x and not x.startswith('#')] + lines = [x.rstrip().lstrip() for x in lines] # get rid of fringe whitespaces + module_defs = [] + for line in lines: + if line.startswith('['): # This marks the start of a new block + module_defs.append({}) + module_defs[-1]['type'] = line[1:-1].rstrip() + if module_defs[-1]['type'] == 'convolutional': + module_defs[-1]['batch_normalize'] = 0 + else: + key, value = line.split("=") + value = value.strip() + module_defs[-1][key.rstrip()] = value.strip() + + return module_defs + +def parse_data_config(path): + """Parses the data configuration file""" + options = dict() + options['gpus'] = '0,1,2,3' + options['num_workers'] = '10' + with open(path, 'r') as fp: + lines = fp.readlines() + for line in lines: + line = line.strip() + if line == '' or line.startswith('#'): + continue + key, value = line.split('=') + options[key.strip()] = value.strip() + return options diff --git a/utils/utils.py b/utils/utils.py new file mode 100755 index 00000000..67eaed19 --- /dev/null +++ b/utils/utils.py @@ -0,0 +1,372 @@ +import random + +import cv2 +import numpy as np +import torch +import torch.nn.functional as F + +# set printoptions +torch.set_printoptions(linewidth=1320, precision=5, profile='long') +np.set_printoptions(linewidth=320, formatter={'float_kind': '{11.5g}'.format}) # format short g, %precision=5 + + +def load_classes(path): + """ + Loads class labels at 'path' + """ + fp = open(path, "r") + names = fp.read().split("\n")[:-1] + return names + + +def modelinfo(model): + nparams = sum(x.numel() for x in model.parameters()) + ngradients = sum(x.numel() for x in model.parameters() if x.requires_grad) + print('\n%4s %70s %9s %12s %20s %12s %12s' % ('', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) + for i, (name, p) in enumerate(model.named_parameters()): + name = name.replace('module_list.', '') + print('%4g %70s %9s %12g %20s %12g %12g' % ( + i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) + print('\n%g layers, %g parameters, %g gradients' % (i + 1, nparams, ngradients)) + + + +def xview_class_weights(indices): # weights of each class in the training set, normalized to mu = 1 + weights = 1 / torch.FloatTensor( + [74, 364, 713, 71, 2925, 209767, 6925, 1101, 3612, 12134, 5871, 3640, 860, 4062, 895, 149, 174, 17, 1624, 1846, + 125, 122, 124, 662, 1452, 697, 222, 190, 786, 200, 450, 295, 79, 205, 156, 181, 70, 64, 337, 1352, 336, 78, + 628, 841, 287, 83, 702, 1177, 313865, 195, 1081, 882, 1059, 4175, 123, 1700, 2317, 1579, 368, 85]) + weights /= weights.sum() + return weights[indices] + + + +def plot_one_box(x, im, color=None, label=None, line_thickness=None): + tl = line_thickness or round(0.003 * max(im.shape[0:2])) # line thickness + color = color or [random.randint(0, 255) for _ in range(3)] + c1, c2 = (int(x[0]), int(x[1])), (int(x[2]), int(x[3])) + cv2.rectangle(im, c1, c2, color, thickness=tl) + if label: + tf = max(tl - 1, 1) # font thickness + t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, thickness=tf)[0] + c2 = c1[0] + t_size[0], c1[1] - t_size[1] - 3 + cv2.rectangle(im, c1, c2, color, -1) # filled + cv2.putText(im, label, (c1[0], c1[1] - 2), 0, tl / 3, [225, 255, 255], thickness=tf, lineType=cv2.LINE_AA) + + +def weights_init_normal(m): + classname = m.__class__.__name__ + if classname.find('Conv') != -1: + torch.nn.init.normal_(m.weight.data, 0.0, 0.03) + elif classname.find('BatchNorm2d') != -1: + torch.nn.init.normal_(m.weight.data, 1.0, 0.03) + torch.nn.init.constant_(m.bias.data, 0.0) + + +def xyxy2xywh(box): + xywh = np.zeros(box.shape) + xywh[:, 0] = (box[:, 0] + box[:, 2]) / 2 + xywh[:, 1] = (box[:, 1] + box[:, 3]) / 2 + xywh[:, 2] = box[:, 2] - box[:, 0] + xywh[:, 3] = box[:, 3] - box[:, 1] + return xywh + + +def compute_ap(recall, precision): + """ Compute the average precision, given the recall and precision curves. + Code originally from https://github.com/rbgirshick/py-faster-rcnn. + # Arguments + recall: The recall curve (list). + precision: The precision curve (list). + # Returns + The average precision as computed in py-faster-rcnn. + """ + # correct AP calculation + # first append sentinel values at the end + mrec = np.concatenate(([0.], recall, [1.])) + mpre = np.concatenate(([0.], precision, [0.])) + + # compute the precision envelope + for i in range(mpre.size - 1, 0, -1): + mpre[i - 1] = np.maximum(mpre[i - 1], mpre[i]) + + # to calculate area under PR curve, look for points + # where X axis (recall) changes value + i = np.where(mrec[1:] != mrec[:-1])[0] + + # and sum (\Delta recall) * prec + ap = np.sum((mrec[i + 1] - mrec[i]) * mpre[i + 1]) + return ap + + +def bbox_iou(box1, box2, x1y1x2y2=True): + # if len(box1.shape) == 1: + # box1 = box1.reshape(1, 4) + + """ + Returns the IoU of two bounding boxes + """ + if x1y1x2y2: + # Get the coordinates of bounding boxes + b1_x1, b1_y1, b1_x2, b1_y2 = box1[:, 0], box1[:, 1], box1[:, 2], box1[:, 3] + b2_x1, b2_y1, b2_x2, b2_y2 = box2[:, 0], box2[:, 1], box2[:, 2], box2[:, 3] + else: + # Transform from center and width to exact coordinates + b1_x1, b1_x2 = box1[:, 0] - box1[:, 2] / 2, box1[:, 0] + box1[:, 2] / 2 + b1_y1, b1_y2 = box1[:, 1] - box1[:, 3] / 2, box1[:, 1] + box1[:, 3] / 2 + b2_x1, b2_x2 = box2[:, 0] - box2[:, 2] / 2, box2[:, 0] + box2[:, 2] / 2 + b2_y1, b2_y2 = box2[:, 1] - box2[:, 3] / 2, box2[:, 1] + box2[:, 3] / 2 + + # get the corrdinates of the intersection rectangle + inter_rect_x1 = torch.max(b1_x1, b2_x1) + inter_rect_y1 = torch.max(b1_y1, b2_y1) + inter_rect_x2 = torch.min(b1_x2, b2_x2) + inter_rect_y2 = torch.min(b1_y2, b2_y2) + # Intersection area + inter_area = torch.clamp(inter_rect_x2 - inter_rect_x1, 0) * torch.clamp(inter_rect_y2 - inter_rect_y1, 0) + # Union Area + b1_area = (b1_x2 - b1_x1) * (b1_y2 - b1_y1) + b2_area = (b2_x2 - b2_x1) * (b2_y2 - b2_y1) + + return inter_area / (b1_area + b2_area - inter_area + 1e-16) + + +def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG, requestPrecision): + """ + returns nGT, nCorrect, tx, ty, tw, th, tconf, tcls + """ + nB = len(target) # target.shape[0] + nT = [len(x) for x in target] # torch.argmin(target[:, :, 4], 1) # targets per image + tx = torch.zeros(nB, nA, nG, nG) # batch size (4), number of anchors (3), number of grid points (13) + ty = torch.zeros(nB, nA, nG, nG) + tw = torch.zeros(nB, nA, nG, nG) + th = torch.zeros(nB, nA, nG, nG) + tconf = torch.ByteTensor(nB, nA, nG, nG).fill_(0) + tcls = torch.ByteTensor(nB, nA, nG, nG, nC).fill_(0) # nC = number of classes + TP = torch.ByteTensor(nB, max(nT)).fill_(0) + FP = torch.ByteTensor(nB, max(nT)).fill_(0) + FN = torch.ByteTensor(nB, max(nT)).fill_(0) + TC = torch.ShortTensor(nB, max(nT)).fill_(-1) # target category + + for b in range(nB): + nTb = nT[b] # number of targets + if nTb == 0: + continue + t = target[b] + FN[b, :nTb] = 1 + + # Convert to position relative to box + TC[b, :nTb], gx, gy, gw, gh = t[:, 0].long(), t[:, 1] * nG, t[:, 2] * nG, t[:, 3] * nG, t[:, 4] * nG + # Get grid box indices and prevent overflows (i.e. 13.01 on 13 anchors) + gi = torch.clamp(gx.long(), min=0, max=nG - 1) + gj = torch.clamp(gy.long(), min=0, max=nG - 1) + + # iou of targets-anchors (using wh only) + box1 = t[:, 3:5] * nG + # box2 = anchor_grid_wh[:, gj, gi] + box2 = anchor_wh.unsqueeze(1).repeat(1, nTb, 1) + inter_area = torch.min(box1, box2).prod(2) + iou_anch = inter_area / (gw * gh + box2.prod(2) - inter_area + 1e-16) + + # Select best iou_pred and anchor + iou_anch_best, a = iou_anch.max(0) # best anchor [0-2] for each target + + # Two targets can not claim the same anchor + if nTb > 1: + iou_order = np.argsort(-iou_anch_best) # best to worst + # u = torch.cat((gi, gj, a), 0).view(3, -1).numpy() + # _, first_unique = np.unique(u[:, iou_order], axis=1, return_index=True) # first unique indices + u = gi.float() * 0.4361538773074043 + gj.float() * 0.28012496588736746 + a.float() * 0.6627147212460307 + _, first_unique = np.unique(u[iou_order], return_index=True) # first unique indices + # print(((np.sort(first_unique) - np.sort(first_unique2)) ** 2).sum()) + i = iou_order[first_unique] + # best anchor must share significant commonality (iou) with target + i = i[iou_anch_best[i] > 0.10] + if len(i) == 0: + continue + + a, gj, gi, t = a[i], gj[i], gi[i], t[i] + if len(t.shape) == 1: + t = t.view(1, 5) + else: + if iou_anch_best < 0.10: + continue + i = 0 + + tc, gx, gy, gw, gh = t[:, 0].long(), t[:, 1] * nG, t[:, 2] * nG, t[:, 3] * nG, t[:, 4] * nG + + # Coordinates + tx[b, a, gj, gi] = gx - gi.float() + ty[b, a, gj, gi] = gy - gj.float() + # Width and height (sqrt method) + # tw[b, a, gj, gi] = torch.sqrt(gw / anchor_wh[a, 0]) / 2 + # th[b, a, gj, gi] = torch.sqrt(gh / anchor_wh[a, 1]) / 2 + # Width and height (yolov3 method) + tw[b, a, gj, gi] = torch.log(gw / anchor_wh[a, 0] + 1e-16) + th[b, a, gj, gi] = torch.log(gh / anchor_wh[a, 1] + 1e-16) + + # One-hot encoding of label + tcls[b, a, gj, gi, tc] = 1 + tconf[b, a, gj, gi] = 1 + + if requestPrecision: + # predicted classes and confidence + tb = torch.cat((gx - gw / 2, gy - gh / 2, gx + gw / 2, gy + gh / 2)).view(4, -1).t() # target boxes + pcls = torch.argmax(pred_cls[b, a, gj, gi], 1).cpu() + pconf = torch.sigmoid(pred_conf[b, a, gj, gi]).cpu() + iou_pred = bbox_iou(tb, pred_boxes[b, a, gj, gi].cpu()) + + TP[b, i] = (pconf > 0.99) & (iou_pred > 0.5) & (pcls == tc) + FP[b, i] = (pconf > 0.99) & (TP[b, i] == 0) # coordinates or class are wrong + FN[b, i] = pconf <= 0.99 # confidence score is too low (set to zero) + + return tx, ty, tw, th, tconf, tcls, TP, FP, FN, TC + + +def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): + prediction = prediction.cpu() + + """ + Removes detections with lower object confidence score than 'conf_thres' and performs + Non-Maximum Suppression to further filter detections. + Returns detections with shape: + (x1, y1, x2, y2, object_conf, class_score, class_pred) + """ + + output = [None for _ in range(len(prediction))] + for image_i, pred in enumerate(prediction): + # Filter out confidence scores below threshold + # Get score and class with highest confidence + + # cross-class NMS + cross_class_nms = False + if cross_class_nms: + thresh = 0.85 + a = pred.clone() + a = a[np.argsort(-a[:, 4])] # sort best to worst + radius = 30 # area to search for cross-class ious + for i in range(len(a)): + if i >= len(a) - 1: + break + + close = (np.abs(a[i, 0] - a[i + 1:, 0]) < radius) & (np.abs(a[i, 1] - a[i + 1:, 1]) < radius) + close = close.nonzero() + + if len(close) > 0: + close = close + i + 1 + iou = bbox_iou(a[i:i + 1, :4], a[close.squeeze(), :4].reshape(-1, 4), x1y1x2y2=False) + bad = close[iou > thresh] + + if len(bad) > 0: + mask = torch.ones(len(a)).type(torch.ByteTensor) + mask[bad] = 0 + a = a[mask] + pred = a + + x, y, w, h = pred[:, 0].numpy(), pred[:, 1].numpy(), pred[:, 2].numpy(), pred[:, 3].numpy() + a = w * h # area + ar = w / (h + 1e-16) # aspect ratio + log_w, log_h, log_a, log_ar = np.log(w), np.log(h), np.log(a), np.log(ar) + + # n = len(w) + # shape_likelihood = np.zeros((n, 60), dtype=np.float32) + # x = np.concatenate((log_w.reshape(-1, 1), log_h.reshape(-1, 1)), 1) + # from scipy.stats import multivariate_normal + # for c in range(60): + # shape_likelihood[:, c] = multivariate_normal.pdf(x, mean=mat['class_mu'][c, :2], cov=mat['class_cov'][c, :2, :2]) + + class_prob, class_pred = torch.max(F.softmax(pred[:, 5:], 1), 1) + + v = ((pred[:, 4] > conf_thres) & (class_prob > .3)).numpy() + v = v.nonzero() + + pred = pred[v] + class_prob = class_prob[v] + class_pred = class_pred[v] + + # If none are remaining => process next image + nP = pred.shape[0] + if not nP: + continue + + # From (center x, center y, width, height) to (x1, y1, x2, y2) + box_corner = pred.new(nP, 4) + xy = pred[:, 0:2] + wh = pred[:, 2:4] / 2 + box_corner[:, 0:2] = xy - wh + box_corner[:, 2:4] = xy + wh + pred[:, :4] = box_corner + + # Detections ordered as (x1, y1, x2, y2, obj_conf, class_prob, class_pred) + detections = torch.cat((pred[:, :5], class_prob.float().unsqueeze(1), class_pred.float().unsqueeze(1)), 1) + # Iterate through all predicted classes + unique_labels = detections[:, -1].cpu().unique() + if prediction.is_cuda: + unique_labels = unique_labels.cuda() + + nms_style = 'OR' # 'AND' or 'OR' (classical) + for c in unique_labels: + # Get the detections with the particular class + detections_class = detections[detections[:, -1] == c] + # Sort the detections by maximum objectness confidence + _, conf_sort_index = torch.sort(detections_class[:, 4], descending=True) + detections_class = detections_class[conf_sort_index] + # Perform non-maximum suppression + max_detections = [] + + if nms_style == 'OR': # Classical NMS + while detections_class.shape[0]: + # Get detection with highest confidence and save as max detection + max_detections.append(detections_class[0].unsqueeze(0)) + # Stop if we're at the last detection + if len(detections_class) == 1: + break + # Get the IOUs for all boxes with lower confidence + ious = bbox_iou(max_detections[-1], detections_class[1:]) + + # Remove detections with IoU >= NMS threshold + detections_class = detections_class[1:][ious < nms_thres] + + elif nms_style == 'AND': # 'AND'-style NMS, at least two boxes must share commonality to pass, single boxes erased + while detections_class.shape[0]: + if len(detections_class) == 1: + break + + ious = bbox_iou(detections_class[:1], detections_class[1:]) + + if ious.max() > 0.5: + max_detections.append(detections_class[0].unsqueeze(0)) + + # Remove detections with IoU >= NMS threshold + detections_class = detections_class[1:][ious < nms_thres] + + if len(max_detections) > 0: + max_detections = torch.cat(max_detections).data + # Add max detections to outputs + output[image_i] = max_detections if output[image_i] is None else torch.cat( + (output[image_i], max_detections)) + + return output + + +def strip_optimizer_from_checkpoint(filename='checkpoints/best.pt'): + # Strip optimizer from *.pt files for lighter files (reduced by 2/3 size) + import torch + a = torch.load(filename, map_location='cpu') + a['optimizer'] = [] + torch.save(a, filename.replace('.pt', '_lite.pt')) + + +def plotResults(): + # Plot YOLO training results file "results.txt" + import numpy as np + import matplotlib.pyplot as plt + plt.figure(figsize=(18, 9)) + s = ['x', 'y', 'w', 'h', 'conf', 'cls', 'loss', 'prec', 'recall'] + for f in ('results.txt',): + results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 9, 10]).T + for i in range(9): + plt.subplot(2, 5, i + 1) + plt.plot(results[i, :3000], marker='.', label=f) + plt.title(s[i]) + plt.legend() From 5463ab8aa01533d5dc9f0ca8f1e46b8702553282 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 10:57:06 +0200 Subject: [PATCH 0002/2595] updates --- .gitattributes | 2 -- .gitignore | 2 +- README.md | 4 ++-- 3 files changed, 3 insertions(+), 5 deletions(-) delete mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index dfe07704..00000000 --- a/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto diff --git a/.gitignore b/.gitignore index 774b1577..979315f3 100755 --- a/.gitignore +++ b/.gitignore @@ -12,7 +12,7 @@ *.pt *.tif.txt !zidane_result.jpg -!coco_training_loss.png +#!coco_training_loss.png !images/* checkpoints diff --git a/README.md b/README.md index 0c0f689f..401e0f7e 100755 --- a/README.md +++ b/README.md @@ -19,8 +19,8 @@ Python 3.6 or later with the following `pip3 install -U -r requirements.txt` pac # Running -Run `train.py` to begin training. Each epoch trains on 120,000 images from the train and validate sets, and validates on 5000 images in the validation set. An Nvidia GTX 1080 Ti will run about 16 epochs per day. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here. -![Alt](https://github.com/ultralytics/yolov3/blob/master/data/xview_training_loss.png "training loss") +Run `train.py` to begin training. Each epoch trains on 120,000 images from the train and validate sets, and validates on 5000 images in the validation set. An Nvidia GTX 1080 Ti will run about 16 epochs per day. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (coming soon) +![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_training_loss.png "training loss") Checkpoints will be saved in `/checkpoints` directory. Run `detect.py` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder, shown here. ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/zidane_result.jpg "example") From be17c9aaf67018369675f901857c2b1dd9edfe74 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 10:59:39 +0200 Subject: [PATCH 0003/2595] updates --- utils/utils.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 67eaed19..79737fb3 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -30,7 +30,6 @@ def modelinfo(model): print('\n%g layers, %g parameters, %g gradients' % (i + 1, nparams, ngradients)) - def xview_class_weights(indices): # weights of each class in the training set, normalized to mu = 1 weights = 1 / torch.FloatTensor( [74, 364, 713, 71, 2925, 209767, 6925, 1101, 3612, 12134, 5871, 3640, 860, 4062, 895, 149, 174, 17, 1624, 1846, @@ -40,7 +39,6 @@ def xview_class_weights(indices): # weights of each class in the training set, return weights[indices] - def plot_one_box(x, im, color=None, label=None, line_thickness=None): tl = line_thickness or round(0.003 * max(im.shape[0:2])) # line thickness color = color or [random.randint(0, 255) for _ in range(3)] From a1bf591a78239c155a393f45d5be96832d1c995d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 11:05:13 +0200 Subject: [PATCH 0004/2595] updates --- README.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 401e0f7e..26926e2f 100755 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ http://www.ultralytics.com   # Description -The https://github.com/ultralytics/yolov3 repo contains code to train YOLOv3 on the COCO dataset: https://cocodataset.org/#home. Credit to P.J. Reddie for YOLO (https://pjreddie.com/darknet/yolo/) and to Erik Lindernoren for the pytorch implementation this repo is based on (https://github.com/eriklindernoren/PyTorch-YOLOv3). +The https://github.com/ultralytics/yolov3 repo contains code to train YOLOv3 on the COCO dataset: https://cocodataset.org/#home. **Credit to P.J. Reddie for YOLO** (https://pjreddie.com/darknet/yolo/) and to **Erik Lindernoren for the pytorch implementation** this work is based on (https://github.com/eriklindernoren/PyTorch-YOLOv3). # Requirements @@ -17,14 +17,18 @@ Python 3.6 or later with the following `pip3 install -U -r requirements.txt` pac - `torch` - `opencv-python` -# Running +# Training -Run `train.py` to begin training. Each epoch trains on 120,000 images from the train and validate sets, and validates on 5000 images in the validation set. An Nvidia GTX 1080 Ti will run about 16 epochs per day. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (coming soon) +Run `train.py` to begin training. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the validation set. An Nvidia GTX 1080 Ti will run about 16 epochs per day. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (coming soon) ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_training_loss.png "training loss") +# Inference + Checkpoints will be saved in `/checkpoints` directory. Run `detect.py` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder, shown here. ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/zidane_result.jpg "example") +# Testing + Run `test.py` to test the latest checkpoint on the 5000 validation images. Joseph Redmon's official YOLOv3 weights produce a mAP of .581 using this method, compared to .579 in his paper. # Contact From b83342d3ed1a910cde7b56512b84c425be444492 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 11:06:01 +0200 Subject: [PATCH 0005/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 26926e2f..59c028af 100755 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ http://www.ultralytics.com   # Description -The https://github.com/ultralytics/yolov3 repo contains code to train YOLOv3 on the COCO dataset: https://cocodataset.org/#home. **Credit to P.J. Reddie for YOLO** (https://pjreddie.com/darknet/yolo/) and to **Erik Lindernoren for the pytorch implementation** this work is based on (https://github.com/eriklindernoren/PyTorch-YOLOv3). +The https://github.com/ultralytics/yolov3 repo contains code to train YOLOv3 on the COCO dataset: https://cocodataset.org/#home. **Credit to Joseph Redmon for YOLO** (https://pjreddie.com/darknet/yolo/) and to **Erik Lindernoren for the pytorch implementation** this work is based on (https://github.com/eriklindernoren/PyTorch-YOLOv3). # Requirements From 8fc6a999c9a7738c3be6e6888c6377303034cb87 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 11:10:32 +0200 Subject: [PATCH 0006/2595] updates --- README.md | 2 +- data/coco_training_loss.png | Bin 361701 -> 0 bytes 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 data/coco_training_loss.png diff --git a/README.md b/README.md index 59c028af..939f411b 100755 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Python 3.6 or later with the following `pip3 install -U -r requirements.txt` pac # Training -Run `train.py` to begin training. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the validation set. An Nvidia GTX 1080 Ti will run about 16 epochs per day. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (coming soon) +Run `train.py` to begin training. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process ~16 epochs per day. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (coming soon) ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_training_loss.png "training loss") # Inference diff --git a/data/coco_training_loss.png b/data/coco_training_loss.png deleted file mode 100644 index 35597edbd46cd664d3da9751308212e5e154db3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361701 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 z
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

At2B+J-~ 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

Cg@>PIllck{eeDl>IL<$B`C8|xc>A4i^ zJ>vQ#`pdmTV)8lLqe0*oWo7X84u;aAk^SzH`kKPrKHQEEO;I2E%0k zY4pBEmpU+C`%aN@4AA|+?BXk3%d+gsyNr;o&h*#@Bg8$cwBiM=0Z)NGi33Jmt@6jF zK9&HB^%=im`M)^T(}(og#*g$j=DH#bsME;_Jz?%Iom%NmQqZw zL?X~7E}^a#RZI6o*o>F_JZJG!MBXB|W4mz0{MaI7j-<3WZO%f1R0&c7){}SslT*bn zN{M#OfmfGROIKy$>(}&B-H1Bjg9i@|7v69heZ_Cq$O2*r1s`tkhKo6*xqulrNFrz? zW3qx|ycLvjh(-JbNS34O5uTz=UNP0MzkbLRCR)#wOr~^U=wx~&M;F2vJBpd!3 zUAmrI-NHTNDOtoL%8c6v(zNxg6GEfhE!L&$_GLeBw`Y8O*A#w)`Ld`$V(pQ)1U=$T zbEk~&odZ={=1JbE1mqoTGkR~eu&|+o@aYS8SL80c|!(}5@|A+Y@d+<;VZ2ZRT zWd>Z`ll((b6M{);`PI*j1SB3yDi+hWcy4Jf;pMB0nvduL<=(E4V?13h=ZzHSFLqtj+|h?o01Y;5TfRW>LwWBbM;E9 z(2r#wc2zpSnd-iIaO&duWA^1=;eYb4k>|WRoYp1F#@>IxR!tVkWkUKuj2u*F zr&=zVV4964=Mf~4uHCQ4wcpQzK&(Oe1lS59@~t2VU7n)!PR~^$zE1AEYx7jUF3Z~u zol_b}xWVMnv;$4r23^cYZm-OL^Aqv-7qF;IaS;?)A&3YU%n)l(JUS@XiMS))8z7&Q6sseQhyDDv^H|nyMUe6*u3M<>Zqqr7$kR~dM*1U#jX?Zqrqd$5^75G;77&0tQ!Wfl+we2iy6pqa zbaZ@$6a33i&G@=bgC^W4$TuPabOf8gemt;X({HxhRf*qTe=#7bx>#2B1pW3|q7L*} zCg^}T`1R)<;t2yt|J0)YPXEy5werVOo<{7VjX1t@0=NIE{t_W3_E$~=`JE%g=ST!K z%)W=aA|bc#R@bsc?7C$5M6VuG{OQPCD`9$EGvpzmQ(fk}xd78Es)CJJ`um|`_7mF; znt-Q-Cee1!xwZ2YOF)lD;rjK^ZZJ^fdHj~36;bvC34+6RFDYza%htt>f*3tdGjA49 zlL6`Pd_K>+jr8)=YKVh`1fA_M^F7_(4-dp|w_7m3iO0sq20^8}d@F-=m}*Up9IwY=C|BjTmn;>wta8_MdeuK|L&X)J z_x1XZBe>6v%MV%n07dxh9?wBzmQ-@JclU(p2s-H}603glC)<5m%hpG2{|C0Ra7*KRmW%1Uy7eHvUYBN5PiKLz;IC;Kwt$-90sJC04msRen7?1)wQ@f zMqK*_Z&>Cg(Y|xkDw0H`d!Cw>=Jm?;Q58GCk&kh8jkPmfk8xemT;@+UMFr1ka2o!5 z35V=zV0iiPjrBc@DKXcmWf1*@V4}mZeN~-n6nC*MtU(HBz3x%*Z$uUja+SN;O_IE> zp~S>5Lm?YDRqM9B3SWH7-X_Ixdeia=Z+sFN1+fSDd-s0Ouz)G@$rYKE^XO@w#wOLo z2AcL7%bMb+CqH621rYDUQ)&{KLLbS4hS{ay&d$y&mp{L2^Kb8U8s{;HWw`x8YD))W z<4=3LLtuuS$=qqS;b-46@8FwBxbKCkcO!f|>0s*Tg9guRH7%heSzfwcu{#OWLiDD^ zh655J4L=U)(1+nWj$h=_k_ViBczsfHaQ`?e&eF2Tqo3^jiU^ya$QlzAzdu{7J`yg_ zVhSkjsf$6&Oq2#&-O#56Xf?IxEhZN(c!ur^X`o9I+9FyWuwO+PU4+m0$`o6lx%&>-Kcr8| zvHhi?`9~?gTlWTM;1@YQhv{T@(SuDu@Z&Eur54csHd#uhv<<(<`0@N+kcrJ*A#N+( zM0!ZH>pynr57G)ha$=$l7k>^&72f;cnF;8MJ)Mu`u`f%ejN;>~>wJj-4|abC;K7mW z`S}YH0Tj*tnj3RX%2hfJJw}#$8H5#E({#8*L`013+DoByyE)yYD|S?5iqWvAaJEwO zQ`fl5S>C@(08KswQyF-F_%GT8`4C6 z@qtlOZb)vw+#&8cPz!cbyo&aO;#zF_{ zaHum7)ykRCq}WdS-vBc_*|%KlFqqS%bkOx=8zM*9*;ZnF^t0OTO|!&d+YX~Jx>XCw z&e(-QX!hJGcxgpVP^{Om>H|m>6SK;V|G+CiDWKr|W4AlHHq~Mk6^50v3ZcohwMai* zL+-Qm&uvWu3C07xsmk$5>`BP0Ej#(-;kz5EJ*DHSREDdyeh^` z+oAL`IL7L+cNedR)grg@;NkWxBkwJ4A#kUv5NsyQ=4q&kZd+Q002x(U*s>iZx$(yz zk^6-9WI>z;f~n;J*u=~e$u%j7l@aE*>FHsgpX_5;9X*Xmvf9~gcp6pvU65Ics9E;Cf;zm&mHhoXG{8TNf4q$i{C8B*o=mJX?V#Oyk?4bZipFt7a3-@37IR;?xN~0LdJQ5yQVC*;rj}!F1*HoK z>t>~*kqwa3^EjPT9VE>Bpw~c)d9|C1S@Prpt}~cOn~~l4xcpe=gG-H@R|&TJ3gv|A zH*6l+J%k&(_Pew399<1QD{Y-+suQ-Ki4?X9Lexb-es!w5V@bmu#4hdaFFzH2DZ$_5 zUpL1rXq=<;w5kU6_w{6Y5O!17!*EY&EM+H0*5Q3F)4mqV(+yirJY|nPNcr6nsvr#e z)i(MzSKawtS8NeP=^&_xoie886kTlqnLYM|YhB}RD?yi68#Z$E zCiR-umS->eD|jiQ)E2qiyVqmqZkcP#9Q`C*bR@+U@( zY=pbzWl*iIARurPI^gW}#xG~rNm!7aLqH{sz-CVucJg75b!mLDUz_Wg+tST+r+Wi0 zpB&@QDw(Wtnp9tHyQZmWR(;#5^$$Y~I%P_|b>ggI+12}D4_dLy@S6#9N3F9yv}A`u zd5b-cD+caL@21fZM1b`$?+sIzU7Of6*wAHHx(t)3?VIYzGkg;Vx6EqnJB(TdUP0=s zj6_hRjbB#EEaUgkHOjB(rqU`sP78pDDco)_`Ex#gVvKzV>QbmrzD?&UL> z$2HiEZ+qpQTHk8%y&x2g40sLg$n1(09WVw8Y-81ds3)J?Ef5?V%cr;eUESwIG+c}Y zo!Oo3ZZJ{t$x3&dPmZ5lXPwmZPXOM+&_=`+~YC(_5HmGbvB5$sR+_pLaZlDVjRoQW`L7406?I-^GPDmm*I?;N&TGF`yRGOj~+>F z&M|LD%exppmsJnW{3mm_f%)~+*|rA)pZY@LF zLg4~hk-JSzO#=|Sq{x+c9sqi#nEw%jvM3=1Dn}@S$F8Tlg7Rc`w7Tb}rRgT(S(N!| z6_klqEG~spVKlnasec<1#js)5_=h?wDpVNCbsD_xAEuoG&-~qGO7&(6@aVRao!1f3 zXoK8Lhh9e+K%pP)3YPuRyIjGI;p4sVchepe9f2J$rkZfoUndfufv&B#PJlJ(M7Nk9|&h6xh#0QY5mv&Sb z)C%Hw@#Am~$|$F?x8<`hL3CFcfYXT}VzhMM4Mt9v>h0n_Uj|k5h{#Cat(oY>>~H}S zt$E|ZE2SVGpzQ6|pYP#c-M>6$GlgA3T>F&F_6C8>H*ulbJp|SS_a0XO!1nb>mi4OS z+dwnrqT{t3Bu7r)3x0n_d+WbTJy=hx3!Y2KFMO&7v{D9O_#Q4-W$nG8}}= zG`_~Hn!Oyh|F8}tFAdO3MCu^ZU}$8<%|Fu^buNw1=IHs;#t+HZxrv`?&>zqQQVo4k zsu_USG=X6P?LzJX!Y6JhVdzeq?g~A&vo!Z9UM#Y{=i#Dp_g4}u(^B6%Ao1y{?>TG& z_$Avzf?4yr6UT@%vjo5QFjsXxzN?OX?fL~co$rf9WGr8K)LyDT`T02Ws>5kr(%vaI z%@MCp(tfeArl%f+-Oq3TPWfeft)xgU`5)s!_%?`R3Qs2^;I28r5GQwLgC7!8H5)s- z+|V|~oRvRg&2^7W;@-!OCGzr5s~`GUODW;5!RsK{T-47mQmmdf@$OAfEN|b>`JgL6 zVz{rZcg)-)gwAI&o$ovLCPImj%x(OL72D+5Y~T3$&AQ-wInC7F=#LR5sLJK(2P)gI z69Bkn8RPdG`PbHpg&`tK7ti?MOowq-8m65*u{_Pf=@M#za3$+be@3s0NIe$i<3qJ=|ZvcqxI@cAj3@Ny`g4cYsIzA~UAT|1V%4%|T$CwU<@e z^~vFS{o%{blD?fH5mNFn6mqQjl_;eEpq@$~7GE^+tyWSF256K|_{s43ljdu-NG-+^ zf(A9Ii<{Mgh)U6~2#Y~rRTX!G%@w~@r=TY28C6G#G+CYi?+>*SWF7#(=(aZPuR!C$ zVbUcTcJDp<`|8R?m2Eipl=lOc+EGf0;!+K*EIk0xpPFKyxVuDpX}L>z`eu%Gbi)px z^FGDV)Q$cUl`7{USDU)g4nN%PMFnsW7KpwuDOmIp7>vl&o8dn3H|7GKzWsncn}xQb z;Mf~T;?y;ykP)=Wx4}fOrpNT+2^Dk3!Q=&_E6RyFcwwZKO*XhM^Uy?yADC>NXs6A5#73uUf&R z@(3TS^D@!%8e0&>6&PP^!wM+oZasO{ej!9tVYK(8z}VucmHjW=JazzD=Sck2oOjdB zS0AsaXnKNMd6t;6%!9tVo?{WwQ~xJ~NgveGEDBX~#sdiH6G0VAxw-DLX9$2;jN~dy zJfLkWC$6_q|oj*TXW{s%a6{jQpqpHvOyikKtMp?DsrXPaUzn~ zrg{<8_PSIX*)P|v0kqOS)BR0P`+Gbe^`!HQPa8VYp6_>#{mI{&m#bDQkAc|T4Bo_# zoa0VW?JAJ~<1Jd_ETuB88a!|t$HX&b!0cr-6u0S@mXnhsAGZdWs_tDxR&a7Xm*?aL zF(RM?75PQ+`hr^VuHf4H`s}0CZBXAtzs62k&>PST)u4ck297UMI%Mixzs?F;X^Za! z&g?yQjsu8olD;(xy!q0Q232zosK3v>5ex{mji80}Zw-Qw-@9Mt@P6sxxG(tds}CdZ zCDTHppD5|p9f=Xv!QLHyuHf$1XD5CXdOh(=wpggFBs*Z_ z<3ogdGyIsfQz`DkZp|lEz{KLb@OTfo!PTtH=IN?vrKGhH8Of~9$VtBq_k}6q60eyX zYfBdnWCe0uu_yfgZX)iy$}JU8&X*#{e4j`5RclP`QEOgna&GEk-@6YtEOQUPQ!h@9 zyBJ4tkuOy?BoDL=3IQemgO-It<`_Dy&t2^%I^{p;{5vUS_qDefk$fQ=F z&iQv7^4t9C01M)B(v`2G969o9NRw82=*!BT_6I@HDrVl7a989q$@AxG6*`nvF1&_+ z$|=Hs8$LVjtp2D@0_U9vVqv_$%~DO+#wV)xR9Z!=>OEmw)t27;yJnH)#H2`1O+pdE z1#Mh{!ViwK#z-roMl>Qb6B+|<u3Ts08-8PRP0ta4`&izWO*q^Oewu z2y;RxIBTj3k`=tH)KnY0la|w9>ReS~5bwI}ft{FMR_C@L0I8UtV$8XYJuy>2(}Sd_ z0xG}6qM{oci|(81y^h0-2RX#VwB5jpK|$^L@SPM0x-;W?n_8f2$hryK(4i{5jjXk~ zBuSc@`#R8GLcrx~>(lOMx|aMmm-gj@bg9)xzWl)h%OLH(<%xon>%7p=&j+=}n#_QO zArP$(fd~}&ZDUNmGzcag9eJP2+bQ=O zd;7GBO1L21qV$B9pO~$CsnVnFstlrAI16`{R1XKX@uperNP%9qNsnvml^EcP^EndBaPheIDt|AaYDyoQRi1jmH=Q z8l3s_jj0Me4yvzY`JgGXHxe*nCdwHbB+8;aAXrf655thTnI+C6AWVgNJN(W3_HAJR$$zzYUIFN@N8@ESCwc2zE3Q$G$A>dVCIn#k zTh|j^w_dNEJO#|A5Q6%>=f0pJB@d#8HHs~wN)0Kk5kIv|#t=kSxTfe8+WN>-<;2c8ddXPa8z^?9L-W%_%}kTR?OCPp4mA(xmxnglpshJG zLd5;yAL0_(#mM`vl%32}hVS0IIW>Mcoc|(l$2^Z+cr(6pb(YYH}4k+v28&V0+exn$X(470{LV=fY`D<+X36It+ zB>b#5;g0Huu%FV;M6qdo05_pi?9eOs$%T>IUjql?yLQ`))fkB3y`1qWiHFBQOk%C! zIt;oB(`>*2InC%W_3y)`eV05_474kb(rN2yZR3woG$g;mCIZSiY979P*+LuJa+)Um z0~>aGlS!dXa_gNBDN!u)NA0+!1;PJK5eWgwMW6UuVVJATc=hD}10F5$ zO8%0vD9vszt(pd$lt>~5tz!^;)Y{Z*EOhLJN#1_bb+@l3s@i=V^c6TaB+T5w4{txb zA1U@iKXRtS*tX-C$dxQV3}2rrHpz-JG~w4d?E3e<+=U^gu8{YTc-Zm?z{0(D-8p7W zH>&I@5hVcxhzVE&K4es%Jkg$cLGa2dVqgc&nQ(BWrF-KF`A-)}k4Cl_m&s4~M0yzC zyHRx0y1F)9Paa~DBB{L?4=yf2B#;%ybf+j*T13;$qsQ5p)3lPlwJe!i=?Q3>$I%#s zHm@@Fdu<<=-|TVji|(Rs9_M~{8h3F*NHw~Nl>;SXd5Pu_c*Mh(9`qz>4^8y4=l}6x z&hD4}jPu}dc5#9bh^bFYutrPvO;`{SR?EgKbB1ubyo5O zK@fArn4)QwMN3jr>}2UNDyqkw|Jh^PC!3lE;{#qfpL`J?jPmB;nqQhi9->!706yVL zn9?(@2NJV)H`f;hQ{;#F!cH$Tiaj=OdaI-Em?l`*FLcxY9-b&BJ;6586GF59(RL-6EE&tFd>xkcEAqU@_z1uwyv0`h< z%yjM!Nw$sSn+)9YSMuuD9QrjVI)@QRRmO7r;iKbkx+n@3qkwtPve4JnQ&RE^_w5}0 zx{|yYJ?-+1<|*imn7g;E-R1)z6Iv3)5a*q_#cr`ve?MgNbK$&a%D!u{sIw<;p#8R+ zQm7gdLC?YNx1Y7R>z$-3l?3XY7UEUuY&YfU?)S;hUT^Cm%2+SvAvRtOzA3hSTR&rs zb8nlUE^&S<(ZHd-z<96k3qNi!2L0hy#hXgJ(k65DD|pYi|B#j5q8n?TJi}H_sydK}NubgW1M1*f+ zpKT$1NTO>aH+lCLZ|Nw5?R-m?2lMQ6p#mfh{ENP+S>{z6FLb*>ep}Og&D7W;dE{EY z_nB)IS&i}nKeSf|bR^y^DaL4KU+7)>aj;=Usa&Gh3h&U$!yM;6ZbwSFSi0!+OW7|b zfL!_c(z?pvLl&0 zo=Var^L?OgUs&}Kwrl369we{3{(RGA!p9xD=<8vgJaYC|K~i5R*YN0(q{clNt*)4I ziPp>_+`)l7x9@i0E{kOLl||h}3vpcHg$m$AKG;UkH4Bg2T9#jYa!T*c-eLUr)VN|2 zDY9-uYc)*Qsq)%Ldu9UEZM>W(kkAZTl;Kt&lfuJk)hN40az6Y7uU7H=MwTj3n$T~p z>D>k)!5_kHD(u(I({Mcb(F{<&NB&2-`ct zQgxf_aAA1iInHd{q597&wUdD!`aBRSk-hfI2$Gt<0HD@KDp0sK3DliqR%087y!mnO zE*X{-52gJ{bQD@y8hUC$;_p~nL}<4k=q>Z9A{lKY0>7s;=O;{`BglNBcAJK(V6R$A zrgDbU1ddzOP9ezP{#iX_`krmj(9rcAhb<2@Cz%GhHK%0i?1!U_lSR4n9xgeXFTUBU z?VNP{KP3^$(O`24i>+M3of0hVgP@PT(q(nq9XJhJIM4j3$Ve^$<7zUE*yu`D{mc8? z8ZoUaMnh{thW_$teTSX4;}rT9*%t$0KiTvsbgC?g2o`u!K{7@kc_Z7D#Nx6^N8`@v zMRkzK-VdIbMy+Gt2_K74nIu7M6)P2i%<%*bT8Q?_aMV4eE1FbUtxmKz?qJqRHy1ah z1#Xr?BN_2x*My;vVzlUW5EwxLl-O9?|J=+|+v#3$)52@AyadsNN=XkQU6ca3xDt(@ zOms*{8q>z>sioa7{jRb~%qoI+A~j>B_U|}*f`IJ`*8y?A?QMV(CCt|hPg_0qQLB0N zgjOv6yR#IQtsOYf%d+Y$`)^@ph!kc~&V4Yg;ebB-sWT##w^;) zMk?3^^+%I(y!u8tZuh@m5x5%c7Wl!a?=(^pjvQLdx z-EY(-9zynzVpdOU7!A@{8D0IVBGNEoS-s!Q`T>(%oZ1~`bL_ojL0}>5^Ob?~L5%rY zK-z!z2|uMEL*H}?N8j+s0l}ZXZZcnvRP3k4CCfX(^~XI-Vx{3a6g@9=YOAY50Alj7 zf#E)on7+d}lmqdiZ~4|6R1Yc=o6SOU?+(?cWuCRGusZOD zhM#UX_Js}-uxH;KaSaInT72uS8$JHCYN^JhWy%Q#`Uc-(EwWJ!!==`^Mh5(l2Wx=f z+k1UbuqM~}=}}Tr)_7PZNp<)!yuS6F%=EV^#CS--$-JK()`0#OBF~D_m371dQ9)Xc?=%FXNP!2B-Z&hta;t{HssG z4feE2abwee@Y&&v%YJTtf`J{=%2FiPcqaVz-yMEx6J)s=P1u!UKM}Ul2EaZ3h`VIS zMWo~IpO*7iR4F!Z*_dswnzTxptMK0Bj+#)Jp@uW>HIr=|Ygn#u@lHh@+B!@aG~o(* z`TB)I$7>Cx9l>=cgN)wOcu(y(O}|COEh@n6*FT~vdw<~RGu-ytS+gIoWZ@~rD>a;i zDzx>HHhdcf?*%(wIeD#gCoa?>c|MB=`oh(089rmzSMS$;TbMXo8sO_qSrSa7mvdEC<9ClmSqKXh(}Ha~53&7E zXcyuNLq;Zt+6WKAnoD=)y=Gi_IG+ud%MwZSoaWvMXteYA^)HdZAsQR`3oe%cb; z-$h7%;&)|(sDF&Dgm{}lGz~88L0u5yO7@h8=&i8H`+ZFWj`I zCx_at^3UVfhYS0w)lvtED=B-)hzEIVC?8m~8YSwJs9XM7E zt|f!n(Nx&zv-4CQXbwWdti2b#3r_L`+*G7XA~?^ZN$*?jpH2JRtCtw(d%cTLiKPGZ z?LSkIq#70t;poHGZvv8sQv=n{OwFg2V?PmDPDYue!_ns}|BtZmj;FeR|F>6(6xkF~ zC}oduR5Bxbuk4Ol_B^OmgzUYAILO|kVefIwV`Muxm6iQ_oly7pbKj50@4xQpc%Rq% zdR^CZUGG(Wvf!!`>s#m6#I&gYG#hP1TsPpDmZ_z!Gx?WZzu={PRmZ=p#Q*fM-JRkiZ-sAFfH%d23`?=2AvW-lfSiOYL3eEJD>~b;=u&r=@)9I(dkLJhK%;|9EMk zg1LBkmx0%?SI(Jh)1jpoG-CF1)TWqkUq!qg$*Lmk>`SK~UG z@)w5KazFb+9IROw6B2d|%Wt}_YYI2k6Ts7HHoT2k_CHpz_+V(|v zUVHD>bK1&v-5s>CLn8ehb#O_IQJ2$iEF%O`({!Wpxu(qscWyaDs3`X;JJV`Gl%V*p z=MM6>__mHq2|#f;d$O;~q$p#+u6wWi1RtK1ABZRDEh&7k5gOf&M*x+a-xfy*82m?T z`3Uo-y`ggIzYFnCh(>B~f!aYq`WTT`U?^4{ZrXIK-Kj8-L|z~%Zp-$^OA_8kvU^T7 zsj`mxS)W`$fudL}XZ@Y9^%Y=*Ytj+b}9l3$m zmz@4|Ql|x_K@|p)0vYozPhCzi6k2{OhzgYMq^cZfdCJfpgjmz2Kz59q1S$}=$~RMg`Kj&;t*V^%ya%eU%%5wY<5jBz~o#rJoHOndXz=Ss)8BZBdTgKt)w7zdv{9Fb!&%I;J4 z+LohD=`3+syTWxsZ71O<)>#IX2ZcMx7siS?Hjx1UBna`tTTuA-b}h&iBB9?O@k)*A z$@+Pa2yxlSODTMbz5Q*l$A$+zT>3wz^H0E#DWWGFEboCCN85|W-kALqmU{fKHMgMZ z@DfY5`?8yuzG~0X!>4Sp6HrhLKaZO>v7_cZ_ht5( zD1Zq2b*-fOBF+FB7R4iULd_9_IrYfLp_94(;Brq3H>v2!F=v*=-|&b_4iX(p-+pk8 ze%*ui;PAn=>c3tBEMFPCqAS8NCg){busLB%)7S64ZCJd@8(5;)3)OtG9KRwUZ9_Mb zo%TTX1mnwi4)cCDT%ejt0|NqgxnMy)S@T?tKF6P?;|1NV6`3PMNd}-SDjRO@I^LPL zqo2<{e*y!B;^5p19NpD>Ax@r8CfLcfCUsSsiQ$w=ffSu7>DuUE=TEcH<@I+eGQ9M! zX#?!p#B2h*JwfRHZWgT54NqP@@?lT>beQyY?sl~tshaz*s??|E0iITTMMgt{f`n&( z1#3%No(BC;$Tb}J7LM*dpxK$?;2jp3NUT}?R`=97`V$O!4Y{5(Q}+a`QXC+(cc{Lb zuAJD>r0{;vXJLvjgnx!4dqxtzyQ8Lc@}>K#QT&?CUig*OzEqjx=%)8C!ywTY?FJt; z%LLJ;rSmdu*zBsv0FPR+(K)%JuB_IOBfXn0H@KehhlBS@^V}+jAm#Q|)kygl_{SBh zPZh#M)Xzlv;9RLG9Zl+Te4JD>6?;%XWtuXh;pV&jEqKV>2jeZ1NC2+$co^r*s9L@3 z0-#{?X3p>Bb6~tAS;U=CI$UK5k%#gzewrvkQ*Yz{pN~JhKxvBH;q%K=T{@W4`QOv= zsvNdJuk&M#bU~UKA58Vj;tB1O&oUG>Y(~%*HZmk1Vc?YK?DF?qu23odMPp)j-PFqDuh=%gszWmwyVC-xqL-Li<2-ok!VMY zozOKz{ca*QYkNgLC_@PeZ%&4jj11T&EbQ=MDd&U_balD#Pb!*>05<9}FM5v>tw}$3 zx!BZ$cj=Ti|8pS{a{+r4PQ9?>4Sqa6XojLOQ+JwS_RVV}G~GAtZBH&F87yD4-mtXJ zi{X&Lv2!iz>xh% z9~B)Ut{x3OJsH%%5ETQ=?o?b1GsBd~{5@H5ldR7Ir?=mqi-$-Gv|x`)vI8O1IMe2D z&(5e}lW7|mNcAW~E<2z6-*<6ngZ4jjc9HDd-4vCVnACka9#xO)n3pEmm)e0Lc5Y!!@PW|3-dtKwhQ82pGE)Mf4Dp9#-@o=MQt};^Hzt3V-j1R`~#! zcr5%DLD31500|=okJ3wKRQ899VMFW3fj^fbg;axkONXqFYfHy#ihs9Y%%R{u$1p6A z2z^@gX*lUm1#A)!iv6 zYgCSoj@En~>@gk~Y(tG(8Cdu`geJ5DY!;04UL#XmSv!OGpMLrTJElzq|KTEy08i=$Tc;bj{RR7{xIJ+9;lNtal6L?lX#X;e>=eKV z6~G}k1NPic?#I^zP7g(of+}!al}Pin;TS}6fE^sNnC#!a zp-?PPetkf1a>qT)inTlmz;Ml8*dZi&f6ACFhmn{mqOIGM5uCUTJ1*oOTg%Bi!i>p$ zQfv@>aWk_H=7jsmZsTjwBIyH8|4l;5M%&IB4>H z#ZMq^%;dUpx%kYU(?)jwWaanJSVH1|v$Eu=5RK=}&%nxv=hwj(yywIbfzKu?Rm}Q? zJj7gw9%@$6f5c!qmBMm zpV*yrzGV6q$M~(PEYvlI&x;|!l?iw{9u|$x{9jHQY2s_&TR)0~7&r-wb^j9y8N{QF zj}yDOByA`vU$-79&Nz13k^BK>L3zJ|Nh`phqs(`)IiVOS$u8avLq`qv5Udq@#X(cN z^ZEy-uc^7uM_y%NKzy03VJYTDagULywF9^&Kjpi_1Lqb{f2(=Sr5&%FJI$r9AOSzz z(*CEf2|N9!-PgUn*>@<#I5LyOq)YW7^l)C?*6(S~MU_9ZJGe)tX+JOGnkv2#-=9yy zA8WmRQWuyFaFXda_eGH(Z?PNbPuHBZ4pY*YHO@aLfe+^AE~+5#=ECf(%w(OH+44XR zaLSg;fV|{n7JoZiTU)ThudD@FAGp^okX25YI3VDa5hOd@n>@M+1k%diUxsBjO~+ z<_j;KqU)_cLu=~%ZDEu(4 z0_(KI{kh#`xO{`YET5|d71<7(^y!Cu=*C3CBNQzR-Y6f(7Iq4(;832rjaMPQ-){BYcWQ+^J3a3a-nHCkQj))~T0fQS1jFdfK& zt+-lu*pZCafDft^6JGK1EDeQ*ZmWH$w}8YqKzn2gm=-C%+z$Txs-L!-3ZPeD@2{3J z>{l_evU=g^V{G-wuo`TXyEYR0{UF2t(bI z<*E_DN_iJ!J;dyo1&gm+GGxO)J>jG|C!#YnwH|vUkN^Mw^+4}t z-dwVGW6tk)E$WkLOXvmN^4OqhDDQX^(trEwv?v` zsX{+iDIg$bUGIgDB-Jg8_(IRG_x%>M05g5#8r`jRwdW1=$C2%ji+Gqs2)o+NsF6OP z^X;5^f;M01h-Cq0-CKeZhred}dU~ex*%o)RmD6XzYGRDQL>|1nJ-e+2jUH5FwMknx z;I`P>jy(L|7BJKj^R6drc#KxRzw^nisK?wtxRdbN(=X{*vQY zK*`^6H79KP-4gp|pAo9GOYtd)apPFt;5#0mU?#r6a#pe26?6M@=}KKF@HY3qf5bRiMe2!KP zZpm?df${nRpH&RyScw%2Ftz1R`h%?!s8LN7m2W!cjhYY%Xt$S1Zu2>>J8|7pjI96u zb-=f-BQScIgyB6gUY`_%_pWGXUAFK2?V8=XNv^;fW(Xs^mq$~PJe5E}qeRdiwT!!P zIxG*L(V~GfC4oJn)NnFwGf(m2m&g&NcBoCc@cS|GTxh7ny{eXPq?EVCLImpa^6r9; z#x>}xBYoC_frgHi`F7bE@esFWq2Ij`MDEPKZirbk8UmQS zEw^$(3P@Pw+>zan5sT#2<$9+eDDIh?*a!P!K$6jHVUN_-on!^??lf%P2DMI3OsmHwbUmOV)HlKC%qF%+=x1pUL8ZI#w6f3fS|d-I~CJI zf1H&B!NUQy@F~!m7r#hLOM~4gg$^n5jX6Dh_;zKanB55Jx;hR_whgM9>gxF8OiPNL zYBraQY)acL?B)G5|5f~7ML`~v(58Wz7Xysnu-cN6&WudgxuGFzXWC_;#X)!Ib>DIK zn|&aouI?nYGTn4i{LE=5=Z=##SGr%E$h0QP0Sf;O_eXN|3__Noqctvr5k+(-qJa`RBdk~Crl zcCpR;vsFHs9RT-?GyWvo+ptVpO%^XX>b}yjr}1+9W%&9d!jpDLM=@poet385==@iK z>dm8kY9n)N>&d!W%ST--A$P8T zB?0I4<-u|W5SXY9vXX==f&0o7cs;|y!&%@#+9?|g@bZZ_*$4MUhFiUGYYT1_S7=^w zimyBFokIn1;#x;JfUN_OHmS)_Y$@!$Uok1NRCTXjR11J*y>sg{my^bZF_L5B1r(H4BNLB_xpM=uIW5RQ)%FH;8Z#Nl5V!R zyY5%H4sPxcT-V~TBU!>Qirere(7l~QxnmZ^gTNejt>&v^lJ1jJfNG3l;=WnFS~Vfq zvq$n*40wY(G(H|BVg=$Kpd*u?K+ZykzMGrd;fF6ydw{UUNva2_M4t9HjWTb!EL%Lu zn)Lrpb4S7S+$r1p_xLkm*G+F*FNWa~#hcve4wC)3otQuax&MJxs5DFuiXxA+qpK*0zTaQQpN1Kj4>v#>PojA1fpbq{HWa4zKZ+qo{dEB zGTEAUl~QzG_a4FvH<{!V5%8rte~pXFF)<6gh@~rbsX${nPT57>Vi?~$ZlI=iv2*_J z6L|?$6m_#~ic?DW)aAs8w*P%4nL{y-wyc8!EUZ>$@L=QImH}McdG?h%Z?D*|2U&y$ zRUhxxP(TQ4N;bE>)khZ=Dn@C>>eCf~xTo(TYmcx|x}@`y&}oD!qFhlTH-U@eMuHOiv5nvY^P@8|2#y%3ZQ?__m{WpSJjgl zT^to^I7zvma9X%rkFX0~yRI$CqlEJAWL-9Jyc&`_4}Vt=FkO;D#DNH-u9;~vjw_36IIlYwiMGr^*!8;iZ>u+kaa z@VvCc#26rs*?+cR9FjD|pA-QN3dr6O{nmI&sykdLY!U#*enE?&??dOkS~@row-F)* zS$KTY3PQ<^KmPq*l#5L))ublyb7#Ne^vvBigC4NOnRH5e+f#bxJ$c?+_xQ4X zRS$7+_&7q`sd50KY_iRmajtW5YTlg)lqd-*tn@ zHxr7I4a77W9r}G8FHrN3l5m|OaXYezmM^<~^Odx)nkt&)ik;=|7VaMSk%>{0#-@neQw8yMO5@{EEufAWd0$o_p;&Atx-1jH`H-h>>cH~oHcNKZeQ*ogZ@$vwwSaOtYw{Xy18mrMTO9wK&+p#;DQL z((T3P?*8`n+>YJC-(9V7a!lN5762GQ_wgRQrDek`J|FSLKSR|5v}#@=ye?~cADhG` zfr%#*C@~qG9Gycnn)u{)d4Z`c#A~T6jn`>^^|R8Qo7K8wda>H$?FmwCCWQY6$Y5a9 zJFM@0Q)qln8ceiAmQe(qQQ0FOHrmxl@AR#N($-vDxjOTm(S}Ww_ujGunZcW{lzF2? z5*(cqK$Bs>nM=_*0dJi9gVf&nBNuAy-z6Uox^2LDkwaY8N+vR?Z<94|V)P^B{(Z`L!u{r*!-PFIKZVAUZeClIJYO_J(-jt+S&x)KVje}W`%H+o$ion_!v zH9X<~Qp~4tl)oL=ACtdns->l)V=Q_GF~QPw zMUD{A>K0pXtPM9g6viZdC86s72taCR)Z%?EJ0HiMt*U#gx%2sDjDGz_!nFpS_VBM_ zA4^M>aK~tvV(;vO9+^UB3S@@oPXN1EMbyC!t>11D(018)gfNPIbG8+8xJE{^^jY|? zr1A$PCXbOzui{bNPN!WP80QsLup0P{c=@u8Fg%MB(2qVmrE=)?vuL8MLk9e4btWPJ$u-l%%z}Y#R4o_ zxccSRBiuSiU_tTb)atN8BmKYDiM@~R|EyCpv32nA%vnBOcj!jxL#x&w@60I+;C6h) zfn$y@9)fQTCJ*RBT{f_6OJ`&6!?taSrL**#EZAn~y9JFs{=`9!2oIbsc;V?zM=<|v z4r;bz_L<~YuThX@cXfA1m)VT90dR;N*c=>Y9`vsCUG%_CY?YNj6L3@+TI~GQU;RBL zy%aJ#3JCVMOQjZ_adUA`I{k99vqLovy$1Iycjn{gKp+nl>HK@<&^4S!9>uF^Ax<-D zyaG>BLd?qtra0?l6u-CxivO-48R;C=I{Z@UeQG@lbVRLFcc zC|Wu@o%HSh-LBglx9inl3lAt%l!b~JqMMVtiIvQcQr?L}#EOL+m>#?tfXy72e3=Kn zyj?=~7`-->*V!Wup+%Pu>NvF=RM@rXURM~R_fQK;>}GCmk&6d}+a839!Re=7octk6x(wc2e1O<1X7v-396MLt>FYj!3?A_@b+b)5a) z!P_m<9Lz8mUB91MZ$2Ch(IK{cAe*S7#4El?D$9vwWnbQJimVS|&G-t9=je>@;GAIZ zVZS`dEON{m!GLPWewmBT`KxSU4CBIqUPdIoZZoH1Ac02oq)+95pkOs)hmMZUdHYf0 zESu_~{#MB}`tsEY&z?CguaDLinTNEj1=v2jQ}My<7%UZ54cjZ(9vp1sJpftJF#(sr z+b9@L-Yz1qQxmv})xYw>tk3j5 zJ&uEg~XJ?03)yv@cZ|LL(wyZl{BO_EPXzEFVCW97D$wKbmyKL|Yo2Wqer=)!wfbxJ0{ zd9q#o2Htz|ONBg&%ehW0ys`FiL6AIALypLyHjeO|v5n)Z;9GLB$LQk;s+ZyP{yf`! zmV#^1eZKf2b-puY<|~dWB@-Rr49e8`scjlJ-u0XJ1J7Xg_s2ttWL?LMk;s&7jFw7>}xH5_cpezy|$n8!F_i<}1{ zp^c;WUY*ui8GLLMHk5rRjZ6dTbxLCV<82}*^^G7c61P%_1hGUa{fnSCi2@~l%zbIA zxJ#scyc}dy_s#&thY>e<+gpV_s&B>WM+J2UN_1j=AHVfq=sKO{8u9pgwEa_XN!#Jp zt#RtwfsDK^%Y`Yvy|hB`O+T}(8uKrg8YhGw2rQf4U^w&46!@8gt0%4Tq=yiKZ|bVJ zbx9Y?fHyR65LO`axn<==ra9sVjB*4(nO1C%^z^I^3e0o7LGanW!QMYw=0?pakg>o> zCrUN%p7+=Nk?{r=PMC))rj^KXPVdxI^7pqc$%FiSa2C&DwDMV&np#4et)TPDFsu}Q zAfmsTuV0OWFk{DAx;Zub!2AlWRZ6L%z8${Fi$3XU=JZFwS*Njp&#zAL>HY-sZT?GS zv5^Pi15}lHGlFYGr(5gvl)fuo>5U01R;;;`M7fAm1ylRpgPwB-&dq#RSmz zRU}%1Jex1giYPnXml%W0hJ3bRPtY)yZDy8glaXU^6CmMdo`>B4kWOT*!-z;OzhZC0 zVy8s?-Lj*n2|FK9iac7ntFHBRKN{I5;=|05qNsA0=IE#-lIOo=91x^w#(6uQriVIw z**e=+g&S>TTe1cy1@u*%d_qy527k=CxXykHGl_y6vQCr^*o2V>@;er2fysdrQ5%Z} zpTDol2^u1TAuURt47TlKlAN3C9QA&X7Ii5~6Xc(2KKkxMm=cos%R-t5mo+I<#kE#@ zvHq)7#`4X>+M_TZ0#V9hyG0;9yqBrdIzu}Y0})~jg<{J9w{0#32+OQanJ$QQ4S*K! zIpn{Uq~gPMPEk=;r?eE@BbO1uu6;Lxk<=B|0N|T8P7!~a_45nMTL?hf%DvPKtsqc? zB09jU&|#DYvAuBB@EMFm_J3qc$z^seLfS8ydtf$>#+c6^_ zoDM)FVHhUrYeoI&@W8AqLD+cv5t_0xy01@VXc;tunjx_r7}qYQOFn2VvCpoWNUvr% z)B1mu_6d-9`fd-bOEk%>*&i!VM*fgA#fXN0}%t?JF196(a;EJ^NXzd%@kN_jcLAS1w+_Mz1Hmh{G>M zOz+BUwo_t*jT7*+bQj8&mxHb%ib}bMQK)#1IbUMj&M6mk0CGHJ)BF34o?(uNs2jRK7&u&;)5GHZ(vo8d4NyG`i z1_)9YKA+5dLegqyGEjeqOV|x_N*u0Vl^vKx#5R@mu`ubG5!hPwbnST6v0`NMR|#q8 zk?MSfix%zTp`_Izu6Q)~ZO-uKfH14u;8A#)9KWBwrc^y2Ux*i$0KafgJGDdx7z#s) zG9@HM>6=L=wCkM`Qh8mU>r5Q{3cd3bd8-ntoRe@i32SVy#vGSvzgRFR<=5Ft&qo%O zJDgso_AcEcuT~g6*99?WJokbmRhrn=8)py6s%~4r2}}XkeAL5uf!F4x2%{&7mle=R z%LhxS{Axwp>Q#YWLiF`R{FOt7fl;K(;bAs_=rZ8hHuM^7?)3@8?Lg@wzLK16!@HRsPfo$J}N~O?tN%3A~4n+$>;aix)w`yF9+qIa$-M} zIgg!q{;{@IX0yM-MD+Wa7eEhLBiL+;l=XT1^xHLo<;2Zu$L_5B+sfCndVln1;)=AI z;fl1=#Y+&+Ju1#8(Bj^PaIaZnf;X^2a80~y)FDM@&9jy0r*pwn z*^0rC?A0O5klHk4(pculR}eYk1cxS?pP23L5~+H_QkV2i@61l44Po3mPgNEIM_WrT zw$;Zf9x^E8=Vq0kJV-DDO~mG%c}B6D+vVs}UE%$g4mkc(m;p0OY(a_(dICs_N&&Z{ z4}z)mqgA!E7IpIT^PO*u-540~yj}VPlo0($*cb?rW9?A_@m;u#-HLcB4~<+y%F=xA zD86~8HL4CO85k+Ks^MDRws_-~-_>|7k$#T_J(=ap+nucMX@rruHDE+VdFMV?84`JU zLd~f>gy4RfS7exX;Yu;VLr$vrnl$cS_}~*DFcLQMX(oX)Xr))@35w3FwTYy1ZRtDH ztA1@s@$7xBf%dJO`YzX$wdL;SyTG`GclN`Ozms()@9XiythZnf5f!XdJ1o$@W|brsMl_qz-$;h6E2EVKPYJ!W~eq(0MZn8d%W5a`a}n?F>WPpQ_#xAA&^ ztzQuH1pyuU)pO{Z7_!E<2!nkQMsE1#{kT^ZN0SGyfAKDXCBkHN_d?r`H7DqDyy*zs zWR?uQ5;i2D-bTz){VcD&cZQT_@h~!6Q`9h5^&IS>gbN zcN8G#uz4w-P_=>AsiPr!-+Iy~IM3*6Cjq>%tyO0qUrTq$#7yUo)$_-wrzwvI)df2Z z-W%paQ^E-nt&FOx${l;OQw}jt|M;Qho$WhhYT0LLeWzcI;wu-z$3yoF8)7s&pzK!7z4QtA@QADee!^+uY+>0>$# zKgo!I6+0Red$z_4+Bt7_wLON@xo7hh@8DhifRR(* zy;$fM$`?8ctXZTQ#8l*Ydp>TfM%7nUo{XU$P|0VFv_wU!V>FH(3e$*a)NYmQ=bTlM zhhoR%3((^CD14#4hT>*%xRby6mQ0*@uVmLgqH8Kus$i*V-M!_+hcWN3T2<@x{(xF; zTRDNaLezul{FAF%aHj10)wPg?$AII@D2E*$^!Q9BL_m(ti3lhCv8MvbFxa^G3Qgkm zzv*(opdTjE;tueHpTH^{hgJmSkCcA~93+@QK(5!~+*OQK&nEeEZ<)o5@mJmjZdVmvUbL97C(@3o@l zDbDRXO!PcVY9OC*Cctr%n7W+t(cY9Vr|EikL1^{ORSTDEV|U356Zo;JfProtH}jqw z8C;>zSCL_L3nwwq3k=W`IJ@@2U5{row7@T!BYz@{2YLr>yx>88cgIrZA(tqHf671q ze#z&FSgk`h4G(`_va;T&QU2zgnC$uUwE_s?p{1qm=*0Mp_iUf-fbGo@d3maWnwX{m z(=AFf=nsLhISB#WNf1Z;8r+wB_ARmm&~1a~KiP`*99l~f;v=Vp=(Gz_U^NFQX#VOZ zzr8q^fSBv#t++-a@y%dJ_U_J`NfH$Fxe`+IvD1#h8Sm1gg~0CRYsHr$+c3lpPyoag zROOSUzxc^0(uzm7y5(nhnIHUaiTJi0Yc~$f-xlfl9n^kY{zE$wvBraTNOkgz&cV%= z%PpftQ>S3w=}iv2Kir{(k_g&;&n6m+76zB`%RamP$)>BLr79rE_y`1Sv2Ra!6r82y zlM%2Tw|sN)(xpKCP$$p|&k;)e^3}Egd2*Px8Pmlr76FgeO(-=0iDws1kS(;s7kawpr^> zSt;;2K=FX+nDs%Dz9ivi?=g!+O2m?YNFkIO2NB(JSmd;{#bn^1(PM4!+JV2WcKF$B zMNR1{3>|!{TqqVH-tk@-m;n8Vzyf;7Lsb2tJXmALj!D>Qz6PWxX=FYRlg0JHwwntX z_}xhG!wk*(GGxL2OVhGUa5}~ksS+7xUF!D|J?A(L-vu*>${83WZ2(FJ6NZK>MBnq<8d$Z_e_$@F#A4Fyod5RT<|g7TplzhK!I3Q z4F5a_rp+`-IoiSu$srJ^mQ;%iF^-@Rr)yhdhs;20>EJ<_H!! z;c*_mFCD^)0TfH`^;Q0vG<^q^<~1Rp@`kklc42O{d~z!_8zkCeqAK@$Z+Df~ZQcM& z>+4J{EcOOU1wgu8-&sGzk3f%{|HZhYG~g>oK8Tr(#uCng8kNJHZl5Ya7ABwlk2~vt zhiSF*+0z}mXT=zaQ9;+^AaIRn^XTLrl~7LQn$X&Ou3em*0;BV|ps@=`a8jCn zFthJEwigqlPUYaQ?f&{#=X0;IxR*tuk_=F^F2QttQhYI^d$s)|6ipiAa6A`YMfY zaH{B}zhY*<`>^Vl*J_%0&Q5ITSYCK~S%O+Pjz=NTqT?U2!LDNl()`mTz~vxgi_Pge zXFStxQf)My8{iyXZ8*X@VJN`9t)9GmkQluct{?EE(`wCMUkMb6ks@>qCsvCrR#3P| zV^_O3UY|Y$H>K1Og?I=!2oVe#8X zJf+wTBZ%nBQexu0wF@%QDH7k^1DQ^|rS&wz8#Qs8qd+AvhXyIHeRWGo)a z#g9EjGTB}C-JlqKtY<=(%J%Hxlb_v7y2IO)P^QRyZoi?;TJ4(DyBL@Qov0tBMVchB zE^l+6*Qz?Y20`<40sYqDZRhxQ>6apNrEPEKhSp8IWnJ)YIf^5jUHN0k_xc}B$=K93 zv$zM3Hh65}fg zE|1<0nsBD4~W6r@sK zjWw@DK&;UiIEe-{k2J5mKyYL1$j9}cKlKJdCRJxZFQUMZ8M`!;6L6??#~M{s&CxEC_IIAW$L{TOhJ7%_h5{?qGe@uL{!z5N_3wqCDzG_p66$y zdN59=6XG=)W5p*Eb7C8lo&!z>hJwcNc3V1@T9Go@k&hwU@sH2iu=Z1vy$BN?uO`hx z#Z8O!u$wX5yHO1vX0aT-xj1~_N%oNDifY%Av2BruR!^-hUo`(MH*o1-BUkd-A2B`d zHBVVzs)N)aVxoR5UwX4odid!Iqx_BO0w3O8Wc8<+;%R94rS_?{tmc_8VfJHOl9;83 z!YAOu{NoFSEFZTF>rsVZTL4{=oTOq@jh$!NNooTa{XQPjC9Kuyo%RYD<&X#NhT@ul z+s(O(QMOlV=jLKUj?}6E7sDJz(p9;X9wHu=DIZ;hHU|U8UGkP&ezu#< zR#%_EvwX|eq(YbkGXnRn*0&D@E#CAGf`~BeSvEL}T=Wtdo{YIVI>dCXL8m+OpvQVv zqt_v}2)61u7{Op^7035=JZOzIVCA!&zH{E$0x7`vAi&(Pb4Y~ofA|hVj zFMxbYFKDZJJEmYO`Ns!R`gj$cDJ}i&4!NX^vFKQGg<%=4_y#?=y5KTFBQMjI@uhQ#XtbJ_e zsmZdfURugo;($pqh)_SS^X&Zk5FVK+kT2<(zpY*lGKr2! zE`r@@8|cZ&aTTE8E(?$Xk47Clngz_<99vM^efzIVp4JEsMDgkgc;>oJs|HHcjde}o zv^>il&iQ%6w0Pn>30K@!w;qq|uXE0RMD1_4=65;{zaMD{xbywxyLaxHT+ZYP^evz& zvpn4lXDccx`E*t;A8uDds)&HiJ=(G=bIckUEcKCa75=rtmRe#J{ZTB`A6e&$=QOtI zZ$rcy*DxK&-4rn@c;F%$q7eLgOQ82;M>6@VG?=%6yKCmc**m*33qS$RGriues(gpx z;UAOZ-_heegz6mlE64}pvuoZ}L41DC`Lx&)(i-Jm3>~7zD+~D+2bQNxlJlCiBzbm5 zQV*7T8mLK|daV;_Js(Jd)B%7DuU_d<7@U~)EMBr^*!g- zFHSphPKOY)!GwpuTE0YKnkvj4Px~t$y#pjivtuUivR*? zpL(Sk>a-_d`cZLXJLvG_!9srF#B+wU0b}0$3d9+{XhDN4NY1R4;2j&ZIE~%?bAXAM zr_`8BWQ4QeDj4+PRdECE1%mhyEcnuJqH}ZGIk&+=+Xtb2IdsMD{!vdkcy+Ex^0?28 z88(m!R_(l%)AXI6H{Ss;{an>PsH#;_aC}n7GN9XeS8BO83NmGfoVRBj)Ay?SofT=1 z)~qyEFl6JPZ3;e|E?W%fr5cXhNx z@wsg;;c3BSz6w%dN7i`D_F5h5#q;PFQ--vWjQcK$Jw4r`Tg_2+X?r)tndbt5V5O3bW`6UUx$h4tXc0`uiQ6j4z4Vt z#0Y#=sm6H~!KytEwbvS=jBnlHmZ2^w$;#;u+!z2)xOCY_@MR$#RH(NHrqS7k;+`6O za_@+$e(%R+DF2EkX<_M}E_(LNYN1k_uko41!VYsw^Rg^#0@@XyR_(<5&2@@_!6SSg zjwxw0B?oVd;WLi)<^~}pT9Qb`(bo?im19)-zOH8${kgjfkaN9n52Te|{mCl9+}7Zu zIL$M%f1R|@VQ*GBRq+2~;3>So9A278G6v>PHaxxt*(}0=6-xJK>bMWUU-)zLP2I!& zxJdvfcxUgDuf7Tq*j9n~JF=)}l}ZuB~v8x(a2 z!0~1A@!m^Uw+sdkeMQglnP6|sA(;8B6>y;*6Wn=a!yiG)u~A8q#^Aj-Y#(L7C#P1il&crK7THv@}`a?()r-^R{=CM=&P_LFF*cRQX*D@)^*#jBa~^Yc|@Lqi^lxaiRzI~ZlZUOb43)@!etLI&?uNlTfqJrbR8 zLJn=OjLg(67wdu0eAD7BV=zz=3o$_Nx22H4o z$r=v?P~igDz0S4!pGB+v6hFcx6HqP;?=BtwunW0L;3W2tvCcN8(gu+1yfX=h1|l@; zR#XOP!e4m-dwljAd)$%k3GF%#WXok`Y|GFTs3})MHd^P~hP;o@3QiuJQHN$_)7Zp2 znTzt&Lki*$@9xwCZ2B|?p+w0TuBg&aw?->no3N=|IRfaZHA`m z&)>}w*9ZzBKypnyGB(%m&$9-P?x7JNsh{r5MYn^Uo~&T=!6C?CZv}(%fq}WPaVpdh zY<_``*kW}1rIjfu4W)T!dY?3>D;GqjrClN3=r4t87O-IGSuNuG&;*_dYLsh8bRKt! z$)L-q4Gne{He!@6OVxV8bZ0{4*HbiitMpz-tcfVYjJEI5go$|Pte)hJ!{nP{+sosb*>S_pQ~B{cp84?nOz}xJS#sCMUPoh$S&ixE#?O-dM9>bn7-p1 zI^zxGTC$51l{~t;B|YSM2ad~vkpRf1CJ;smUDpx@wn|mA zq13pPSZ6dJj|y1@x_}4FaTxaC=jsBYbw$d|+g}>)kj7v9W>5BL{e!RUyN^Rw1dl=5 zPlF;vf(3qU(xSZGBEFxH&GVe;p9DCN(x51gUiR7p$Ueme$s*Oi#1*W$z|_>b+tq6a z?$1D&Vr8Cc#%ullXFmps8s?&&$bMZk|EE(G{s}`)REYs!*M5$sy z1|OP#c?*Y-j4=X3#R7qfaS|{jxdEMdNeVlokbO#S7qFIMGN;$}2+vYaDYGRw^F68t z^d;jeCS#?Qh1@!UVnt5JqAYA$YHNm?-Ov)chY1`Xwi-@m#laA=!Lc}RKL;~zlYT+$ zio8Fg=2$>^3yzKS87nf3^P^9<(V@vlj^*}M~1zB zqpdK3ecjcE`O@fil$XbUCMBg^2e~MG{8nJ2P~Tl65cNDCF^kDQ1Zf)c{HWY~l-eAb z0`-a@k?0NBm6{f0KuEP8A)gQ=D|RSn#t>OCWFqH=?iV6XGJoT2$B!^!`wr}WtpJ9& z4B$Hfr60M52XeNxn;OztsKMN5fQ5ACRRbOZ)?5Qt9nK$OFbiPHT~aQus2DC~%uWQ` z5L!X^*HHyFoH{Uk1~z=wEErOVt-nPDouNRDK%z_95SK;|8Toj>70-P{1+@CnNmn&V zD|X2yexbBy3Rt3+3*7!}?Hrr8&6FEBB9&P38Yw=_9y(B6a2plj|FRXbg7un168~v2 z55v*khh(Kv@l)>zxeS{xXxn%76m2zLqUvhA8BaqAPhT#~%hXHN^2XV}1e5EK;SZy< z-1r`mYX0)p0gmYBmMCM&&bZs`4G{|(Vg`xCmh+#gsiJ5i+dCTk3P{(uCTYFiW0o*D z4mB{@*>T>o1k`Tq*9_3aCX1|D3_Y`?)8QTuVyA_q)6CTPFpYPAe!6^S0D))&Ipx>s z1gvjyZ)HgwA;^bIkt)OTHIIok3)6Rg^a9f@UedGiI&adBk$TXI-&jt%f)`L_ED+Z#D@%5da-SreR3`-Jrwa)gS|&_?zTA_rBG|F68S42yDI z+g1b-P((sdkuE_%O1e}!1!)Os7y;=n5f$l{7(k>Mh8$ujMWnkM=@#jR?;aG_+H0+M zzwh3EKYwtH#Pi&F^>v=w&ADUL+S;JDzjE9aDs(yBit=0ZxfAobXqqkH58cJsB!_p? ziWo{iSnPwB$vQtXt9z8Lu0K0qCYRu0^I3C4!N@u0@=~X&j>dk>67_7(^ujg4VI!{o zf>@q3sdb&=*EAbWWmk=SSQWLjm|`;y0R}@{AQU98o;r@&C*1N_`$~-B2Vg>Vr~*oM zKe+m6k(qLNLXK8RZ2gu9prxQ5nrvTJAmn|1GqY9v<8H)jS0jf{1#Q>E| z9!_}T#SL64^YcvdgSiGw8->hUI8v%}6#}ZfT;BYn#QvNyDg-uLw!KSf*&(gvi!Wjh zH(lA?Klf+Tn`9ZpuhE3A+FMXZ3s&(c=SwCG=Qtbe=|iB9%hM+5jyE6fO=2#sFy^op z4q{4|e#C0&i)tob?aHx?wz?a=WWPV|=RqktT3`VaiI-y-o3q{9i*1fJp3IS4Jqy*s z(Bg`hGx|42V^#Y2>;4FO{QmSw!JA!}=_3ou`1iKLfYGGvz;7_iz;83}XEl}!-x$<3 ze#+D07Vv@Y@qAjYPx&(4Oi*uLb&j7PxAzdVe43Ve!o(zshDC1OWl*xV%_wd!7m=KO zZ5C<9-k$H+%BHqlgl__?r51$G4Ng+O05vvEpp2{)m)vFkgYnCa^3^IPOHV*3AA4Ow z?L!~B*(j(Kp$Ad?NC|THo{@ev_uP8>gRiU}l&Dv;?ZYsQ<%b|v3vg(m^ptF(L?G>QATK2hZwpL%bpC)C+zI@tm zFMB4%8(M&zj&14w=q`hQyTDxh<0rtBu@Y3V*(KAJt1Eoqj)b;B`J3y>J>$PeJoP-< zLLpn10s2lrG)u?#8EBC3<2kK*H{9W5U8Rh z5Y)pO=wl2~eGrP+-wMEaW32u4v6Y=u;x_w6@`O!)=7rjW*ic?BE>&L-F86%X^#Ds` zmc5*X_E2w5CCx@Hc1YVkRZ_N$Lfn111n1csHvp%X-F$~AC#9zD))7pj&=A19%rf@G zSPp$n`_N5;9}QgX3<_nkG|wFuM^xW%T}^8*P23`fM@>}Vl@{R!HKX7bQ}Rt|ILz^yh< zQ=K-y!L}w_zw?Mg|2hIS7=4`jiC`XDzH-=+8%C@OU2aU?st&WpXFgq7_!;VE$E6gw z;b@x1R7Vl?_1~(wM4T|fPE_bBj*@0jL8=sV*mU|4Uorbh{)h!py$yBryy}#7NBz}| z`vmt`PlkCun?jq~5z4wlClS(GJjRM?(OH7Dz zhr#TqgHAUKA6r^G;l-4o*H|<*Po2k_we5(^kGey0l9L~>lzv0oP3|TsLFbTL_BW&z`VeP!h#Z%Ff*^})jpW<=VUgVywrZ9U1XnYn=!lF81mBdZk+XI3t3Y~!N0ELx(Ky!<`$;beAY z>$cxf&rrMp^>ES)2s81^gnr(s1ZTqT%pgR6Dsti;dWu9y@eNJ&L6>WPKoo6%&~^99 zR`t)C!Rf=Wbs6|kRldH?8#}QAvTl_ED`98Py^U9tHZ8|{y`fully{S)*o8gqKJ2}9 z)^_LUmkYPGD-1*ANYu}{RH}Sm@P)M0w?S%3bnP|mfkED;uB>HJ#TQ)ovun;P5emVAECk+Haj$<>GgKD*@TMOZVEfeYfB#a>Z&x^_pj@&xE?Bw+oX-35Ap} zGa=@gie^Vc&esY@9nxnC`>P)HAKtd;5*_=Svw03p2q(mFg@d6NwWPj;KVm~tW;_pt zM;{Tqs(3yVc(W16vBtFvS*^`>y+(3K;{#0*;w_=I@7zYi+!a(3Zzerk$BU&CDGb~x zMRd0^X>>|%i$5II=gC>R%E}ro6rRX2#Wu;Bi(F%Bmj<-dwl1e2cU~g#7%(wV_P&Z^N$rFluk-kBvL*_rWCn{4kNnFK|7aLyjgnwwo!FZ&hi({da*a# zA^bXr4MKH6oIEiS;fUZW+aNg&OPUqZu0rTjmq)op*%1oRLMj8BAk~yc{yE{zAh+#a z2isJL9DesB3b}}WYuSfPb$iYKCjR5*m}pEb+75Eg|gWM)rO*_6^!7E*9*+zLn41GVOu*3^RZ z*jS>FVO!r@H5&Qqy1n5)QG@Wz&L179FRn5}Zx>&O&UaR&F0BedX9oXDRROMe1$JH- zLXE8n^@o&%9q1a`ertJSD}}{6YLyB1o+rA@99LS)R2q=}P}55fr8okHWMJ)5|09A# zX!hf!<3fL1EwPR8KrZ8#h~hTsD4}gQuQ4=}xowM_QT;KSO3=>f1$~CsVW`fku-Q={ zOxD>dpVuceyH1;aPrak=5W_O2@`?QZ)GhXt@wk@VmVNw>9-?r(xJZTvhboswfAnW= z=+C^Ku8xz_&5Nb)c;#uja0UgKa;;%z)!?SELR=wxYcJ_v3(&yqZldJomn)g5_NGg| zUUWXP{E(25XRwy}sOKs5R=27>D^-L!Kkt+|o)EnA5dRQ*vE=Dt!-I`bkcRir*)HFA zF5B(IaG10ca<`M|n;>Ug@0`AQYU1WyQg6(&%nvRkUzns|)wQwdi)=oga35+m`si9# zXQU|sJc~WrGPIfX*)G{8H|l%+l6hn%G@3ieMUArBx6O8`6-+_P+V{xu#jwS1Exz0G zf4@H?rM)#$R#~-dyHT28^1IhRnd%#uCdy8$#=8+&)qVA^+5zuU&^f8T&o^*1Q9&m{ zv2Ug4b#u+#YtHv}0hQ^j;NH6f5H8>#Hg1tU9HaI!7rvsFL3FG%OoG_iA8=)IexUX- zA>UNnr~G{^Oxc9SWE#nL|3tA<&x7%_w22|qYwOWflV#nfj>~KeL~n^5swj?isI(E7KHxUwJVPYD$$*;e{(&;{Ki%0~X2l6d-=0$pM?AOl z5S4mh&YB#rmt`eCZDPM0nlZ;UA>pY3T{6zOn3;XJFm;nl>QQcg3LV?AXL@K-vVG7( zd9_q3j2*pYg07WvD%j*^6X=5W*rI}-_%lxu_W7@Yp#He7>`Aq z+==xP&nb*1+?Hak)fKzdra02jOkldX@aVU>E;4{oap*34Qk6RMOGy5ynhccgU^GOm zYenp%yed2_Q#1t@sX|SZ%5K`+8zdLbVNxSEfxTXlrRegUcBHdodTg%L-4OAJMy^ht zCN^g^aylMHk(IGxJJefvBD7{U?kXZMy6!a}pI zxyho9FOH3-uYt|?@wnzyiRe9 zwPD)*3#0y*O%3khOD1p+U(~;jLMa_@d>#{ZwV3=D7Io84sS_mtLNzvvJrDtHpgb$KFc#<IAcQqP5VYJY z?{Pfvz}aCfeKza83X#$5;_Mvms_~c@xvnL&TZPzu#`Z`856ZnzObe+d1V=dgjloZ2 zhftHEpQK@hBbRceyOg0n-A{eTn$FGS;AOo1mE6ySJQfXOpP!TDFe1I8S)b;ixpcmH zbL$Kd?mPypI#_#szNSb)pvZ$>`)zeFQJ&Tll!y3-VnltS#HVQFd*mag49p8}C7ghj z@y9MjR(HB*VTA6N5%93Ilef9qq)Ur|zWYWFtAbihCb|}^_B#fyC-UW7k$!c;hRd9) z`NhQ+z=LeWfV2vWAFFi<+ss#VL~?ND%Mh&EkMWeG6T?G$43D1o^W>TUrw?_=^>HE? zFLrs%7TCnigvRP6C4R|FEK?nH(}^R|E#O0r>i~OG6V&|-mr^7mOX&(l45qHJ9c2$2 zveXU^TmoC@yM-P*@U7$Vul;&k0a}ihee87`$#pd>cT_ydoe#YhUmnX3Ro(c-y!EGv z<3Y}c!3+cs?NIDbKUnl~$ZVSZjvkR~oaj1>WGen zxa|#BGY{X0@<(kuUAj3|TA1+xc^)vLZlK2Q25M2+1Tuwh)J2q*Ypbd(%2Q zuki`)7XIaturI@i=VAQ>4}!k;e?CO(Wv2hmilb%~R$Z~>xAwI>H__&UZUuko@b|8U zOL;ol`!PLXuSSz%TtI&f4w(UWhWFE_cHU2`UQ9e~teU?v{rYShMb2X|2C};Gm3%oU z;y$sQ6sSAJYW&xIR=fnJi}OJmRnjkV8J#m9sbOR-BwisvRzA|O+^LJy%6?A1H!5gk zx>LMfw|+%RN(5Om+@P~!I7yB3iZrQ4P8}h5^1*TXJ2{ytou3@E@BwEiUw7J^J;F}g zJ^a)PKj)o%E~+(cx+;P&cdn$!z7w9R4=TYioS{Yw%s!1F_DY$mNfVBGtdH zB}D>SoVj^8UzMvr-JiXxKQKBV5l3i?s_pvO3GQr2*nb!@#R(`@a6; z)kU&V@bTvcoGex}$o0Kf&khC@g7Xy${%{E&=_$7cr6d%Ysm5$3{5na0%m{4S2lTMS zT$PM+#a|-p3SmdR0i;VRO|Bhc;~lvi9-9>Ry_AlzrNXonn5^1qS-kxs=e42xQG+r@ zCP9PC$n}|;-ng4iYAnAf7F^I4CU3A-7A4??EpgG4c02}gJ6TTS^@17va_3A|T%!#{ zkk1vsLZ>HVv5vjwn85eR4J`m}*ZSMSex#z;jS5XULgd5jpVY^C{C3`c9Zoz>aO`~U zQx%=2vMF-Bww#`qJX(4U+fTP2ckH7u8!8o8spM6^>AmJyZ3J_Jx^Jy_6$O?56k>St z=jFQkRMKn*>uxAqDzk7qsZgzNyKmADdmwxSbxl`hvm z{Gi8#1MkBOTc!IRlN#-xVmza6=dU#txrZTHfD00RjHj}Q6Ak$?8J^+<3@L{PMRejz z2X3nBc4IX%HK7~Go}(`=CE*Liq<2A-MK^%nv5-qdM6J4NGheL0a3%UmhOf+-XQo0C zt&+Bd^L*~|YOG6U`i^D(@UzNc8Rsba2q)y@3piR9oux|Q(6}drJ8HBZ>f9k-%@3*a zoL!;MbB7~)hKgI`Xe#HfoQ)Ds%v+8NW_bInb*jSIz|W@eN;HY;a$pK57e~!X9j!0x zZAtuqLUHd3q5E_to#a8jSxskvFGMWdwbC+H(S2$6XlD0(?`$fjoh7y4j_I9K2c{su z4q_j1A}&&|KNKH1OWh%QR_x}94s(*OZi!&|Zq`8XKuODVl!?osJ6)x8bR2u7%h%9_ zWpu6Qz{R=Rbe(}Cp=e5aimZE%c+TvmhoR!NhNB`UmM`c02Ftb~ z>_~U+(P~8UvMC0+5&pJ)&y=qBMQlPx=d_FWqndxNYTi$2Q*!xur4V)OzS3dr>6!>xGAg{=02_i&vYwp0#yi&5%oh1Gm%Ud3Z-=l%4DV$1`0 z4Pts=)X!uI0qLVn*(ky`ZP?*kgEW@P1D)Qx=lUt}H6=5S_0T!Nir(!g{uH9aN5 z5dk#Jjj0j`QL~GUu_M{lwf)n+Z0XQ<6ba zb`)ft;H(&FmtODdow7QvITP3leK4UCKkEfdf8b}bFv#DZ|!sGq_cjQMTWCt)>9 zSU&>%m|`w?UY_)c!s`ovJ$V%0O3n>Rd-yAXW+5P#<}qNku{|kdCiSph5@`L%Hq>vJ z;{;JW*2HAlpGww`QGDx03?Y9ZZ1L%{h-{e@o!etOvC}##kIBYxJ8XXHZZwu}wD3ER z)YwPIol#L2;B$6c+$4vxn_9)J*C=H+<1=aWFLjG=%GfR3XYz>KAHt5Q(vw3{UEzyb z7`u}7-kr{VZ+huhJRlp>}w)E z=2wr`=l&!RPVbe-1V$6KC(ieu-xuM*fTfVRTg)5NT2_0m>=-p7J{k?$OT^})=rgO4!bz^^Wv3z$e+wAV_TvT)AQ3biZuNKAdNPjKl$m(Hp z{x8WY@&iL?Z<-*6(<}^xi4fIrDw(o~mOW#Y_-fxOmGimV^?=H9RT(WWR zD_uL;555jeU8Qo{=;_i+hAbtG^r`gh^S8gI&j>sMS5_>j8&a)~h|a$Q-SP~*hW7do{0j@weVl1shRP<-Q?>IZ zNpltMlL>6(S@#Wdx(x{k~Il!@vZE)Z2U@?wY(J*%Nw&-W+C&{g?7!mq}w%6jG zyTSiyH2sW-QChDvS&ZG|(8(6D2=dYmxgJ|gH+XGQo{u6`$egFIm4PNMRBdR)#~{8Y z+0s7tz2|D$_K{FMLA_7sP$|t6trANV7&{7r2}KV*yXUYn)M($Y9o^3S&gP1>;^X&a zSZ50C_x+lt01JjIN%&K{B$1%CsldBO6$pInQkS0Im&>a%d~&sH$~U+rGD|r(pG^5= zG$rFCNjwY%-i}H}a*x`D$GdM28lySDw}=Z#trgi2Wxt4Xf1Q2Q${6B* z)7@iVc!B#t-xWyQ19gDSA>xW{ve7ameq$Itc8NA)mZ_wrS(_lO^f5ummV}JbN^iXiEBS@UNGBx@LbhxbByaFN_2_o z+JAj62#<^G$;o|wX_pc&qHI+{H{-(3xAWkja&$T#dq&}UAcHN11ro;q(Sp%^f0J!| z%)0(|fk8d)(v!Aa(7RgR)7u*}vs$qs576YYk~9j9lk4rfZCnzQENewYZ{HaD8?(qE zx_Tp@hk<Nkec}!IyW%BOw;ZQAVFfD|K4$7|A>5x<>hD7ijuRG` zClY;r1pnuvx?!~4=u;`kVab`JzdTI8a9x!>q{?NGJ!ilvK7XjXlK` z_#x7d8%V-dBgAdeM(QdY4UJ?{Yl`L4Wo`KeqaQ`|?V$=eQ7K!vBt_6QObmSzQ}n-H z(tKhN2iR6VcS@t+eGf}rs@)Q+#bsn~z@>VBHVWMWF;@u@Zw`Y<_*X3+ae4D`oiEQy zmaV(tH`spo+zF^WU5k{n7CivDO=L^RfAJlhK@i9PoUQO(YO!DJATNlW0Ka@|_-MIf z^gHYw%$7y$o<3u3gUa^p#k;Fuxb|%uZA)E|%rk70NlJ^hpjzy=;Qje24}HWl&LHx4 zlPVhRy<$&^1rYp}jVn|#X4awCa$M$A3nS}xWVOYB9AUoIw^GF~-l*ymel-Hl&!B3F zau#FL*Cpwpw*7%$p>j}{i_UiO-Ok&N1AVM}JN~q-?myr5Lst*Sc=KwbIp{qzJL6nL*QAhTQ%s^XdpeK){@}wc z_M1ObCSG@b^s4C&;xlU&yoD$ms4}ZT&_+@LRF%!J zMTuY3UiHa=aAtOPIABl7y}_SFpXhn)Y)kaKd4!eqNJLy567+a)`)stYUD?ad@!6$lp0j%>TNjSQpuj4fzt8W@!IG zp88`=kADzguP~Zk4wb}km^AIKO)b#^Oez3=lT#Lp*g9UTCoggMgLM9%U!IhLhO8+% zc8#*kR?BT0IK_^MJU0qj9s-P%75Ksv3rFkAZX)^*QpTcxCXD{15P<;g!9a^MgyI}h zz9H2o)~a$Vt8D)V#KS*{+;eED*XO&_g9l#$)hq=7Q6aWMyWcJx#M=kDQ#7{$L~BU& zi#`K#yJens*UI3JHy!@I$KL9fUhy>|i;MfnQVI$b9lw6Z{CmLgU*6e?M{@u9`@w74 zsrvw2+j^x3wC3t3-r}>%s7!2b6FOL?zRhQM&!2Be%5fz-x5}LC`#}CjyM-=V?Q21Q zjgg=p>_&~Z*kU-x`p#wNJJepWop0&xAn0TOqv>)J7!IL)IGvRZ4+G>ChLur&mD~Ta zfZ$n9*Lc2{PAyOFjC)pBu8s^MAkhN5-+X32pa9bWS3NYn@H@A8k0d}OhD3EoW{tZn zfO6`}5(YIIr$EYI;uCfx?s_!CS%}6_u;SAEgGD`g5aE4c7pq znC0YfPIv}X%|)Z?N)wMa=}Vdm$aE`R5Qh8UHXvd4ivN0-{vy*wC^XT0Ft0`dX%`2L z1+Af|Tf4>Q1nzC)!D_V?St6*#_Jst zBbZ|Ny9HNZBVtl*AW#sX3>H2veLh?)hvKu@Abv6jbp)jomh>>b(KcJsQ*Hl0 zeF5>x>Z27aqxp^x#*-V@BuFXMo?82sX(H%^gx4FWPw~U<3A%1a$goy&veHyKfHwVE zG%?Uy$+7APYT{)|EJqFZ)@N+G<+vMPV&JqOJ=gqoB>_6^I`S&p-$phmV#X+ zs10j*wWuu5n>vO-DYPYcIeg3-_b-n;{cjI3L$)WwfCNAS7woKEKqC3ffG!XK11kUq zb}3*R$X4CLhe3ToAH8YW{$h6PLoP0^{DP{Li~n!}_9y zt^Slk%l0$5T!v*IET+hEbjVF98_{I9^L_MIPiH{^`^I<~r-tkDKzaRC{)ysC51O*gtILpYQfJym`=10$@hI9!~MZ+wX)t#AQ3V!UXwjg$+R0#W$~> zxxjy3SdlO24>nY`05o(H&?hYWLm7{$Hy)cHlM&=v2iq&DK)M^NK>A>7AEg)ndL#e+ zef{}U?-1-)RE;iQUSDAc(1RNJ`o4{B;BGYCFo~aFDue6)5i9=lsQ!E*|2)OtG8SE^ zao?Y{3PqaK97ZeC(urKFyETI zY8g`dp2zH-$8O470DLS0$d(bu2^4V^ED~kpOt>CB`72(*|2lfqI3}*4bi9Q{4yoti z8j8^^E*1sD2hM(5_%g7>@8Vp)+u+m+sH0~3tB(;HX#g)6r8oj+cma~*KQ79@onGhl zj7#P_@`77WVgy}_2P;r6ES>Co3UK-05L+fDCKUdG)Erl%3*c?B=@7+iWUD8oK04Tm z2J#^;TQyfb{{fljq4h>E;@uXYJYWQJT{g?-ceL|A8516>_a{0Hg+!rIGCvf72LRJG zsa7cIF0(c1Oj)!WjH~r^9Mp+7zP@rR1rC=V0%T7>(kGHS3_P=G+&wPPk5L#&RwsY$0b7wY{cMTSguq!mN(YKtMiytF?wk`if)U%)2((~wt z#4kL)^9ctZRTFUic0AVzP^T>7^(1H~FD&P9`l08Vc!p)fkl^J(=D5(6>cl-Q|KM^h z&CmOtw24+L@|FC8e$r%|t;A2?stXGbGgbM{GH|$R_Lca5ZbaE7ybCkQk8Yf~Ulfks z1tb1SKV92Di_?FSgn#|s+bWTdukyvJ<5E{9P#wl=lV6Rg0dzk-5z+Bo3V5(vzG@vf z3MEFlmD`LK5@oIo81Df9ckw5#SZBggN-PVX!vvXqNlpj`w95TJT17?0)S_nKg?`e# zAWgTS<(>Ap-GIflcJ0Cp2llb{!^_i&v|L2upH>rjea&bQ7qz{d z2{*4{OB`Uc1;6!?=HIRrP2HON9)p3s#zDVvoA;L3`Ps*W5{O-Q###ZYi;TxSHosO0 z?`^P`@L<*2T2pp$3Y{{-+Mp}~k`AD0zLo2a%_c-c@p?7Zo%P(92zfi{U>kd8A zO1e8V`qA+p@67*p%e=Tj(yr3^@y-8qlTinZ3RQ`_&@y3?_UAE$}}1hj?Wiv{5OhnniAYgGE>pg z>2L+1P>>ap0*nAD&Kt7@!8h#m^A&30B67564}o(}B- zZ3$*Q8KHY~u)?-=w|W4sBagxx>+S6Y?h3(%%J|aS(-L5>?{z00)0}JwpHKt%mvBG= zAr0*58DOqO12V~J%_}qS814aU3lL{`7_@zmhw{Z3j3p4seH zh-T47N~)+tE(7?Q^`lkK@d^ofA~$8pVNRD#(+!s#iKT8A;P5iD_A1{01{C3W@+35_ zV3G`xJhtp85(eW7I$q!LFA$xJWVF3baj_|eQ3=D(n~E!*cIh&kV&gouy}@LX7 zzK5iQNJ_{HA3yJ#vXU6%m+&yzh;A~9T<%d6h5s(TrJ@Sa!-0B*8phoV8^o_8ls!lX z(PY1w=IA$YT~3~Iui^JgYrrMraK#vp7yw<&lOX>j!|w@mop)xAHXF`+_Hfd5`~Y~G z;*$>gz>nvxrxuuR9K}J-5ux;5^tw(HzVWl6YhodH7&L!2glh4LcyTxqBI+5P@xb$+e#4H^ewe7O>?W)I*3*|7K z^nQq-W+K-dg4sp5_y;!L1z*SIL(?*%xOpbF5c1@;>@WKQ6c^u(4;%~{=u-%DWiqLq z*H3zynye8-!Vo*9*`jmp0+BNR&<+*uyY1bJ2uD;pCZ?vupCsc)optF2YeiD=vLEg= z7a1$q9DloeHK^nqiFjjY-9ud7T3H%EvvMyy`*wQEC@|CqVne*P?pp zYC(+G+~N65Q{=YOT&&>{pz@`)JDz9FyogKsJ|icJ2y4Gi08@C zcBSWfc%u576}8HC6#sFdEC^uW^E)i(wdX7Id7q{mU-r^~9!ir$_o#Uw4g`x)0cNB= z*6d@=r~y*DIAM7&5VPn?kl3dU=s~&HejwZvXS5B11+Ur!=hAjMRA4!}8Pxzqx~+Tr z7!@Xp?p)8b=ypMP@sl?qT3c!BZoCNtW&quqL8`Qddaza!oL=7IrzcyC`{8gu<;(@WFg zhB;WBeF9yPCfyb;BaF5azQk!vVFMr+u;QHNH@HxI%d+${TtZFO80U=_-MZG)35tr( z;$w`2nFh~$sw4%KjxxXwHXOm>_i95%6dCJ*v;Z;a?RNtpCU1wN@?$fod%x2WS%`2$ z$}N@5ZUWaX7JjK7jYZ@#;g9o-q8q^U^dj@o!oToUFT}q`Oh1WAwEo-uS`ju9!(eTi zi|d!f*W!VMu+dLe3_`0F<$dt@ZuU8AMb%_=B5)LYUl1b-YemIof;L;qXg+f}ydFqmu`&(!6OkbKQ_5+*l3g+g-M^HU}X0)Q_d z?d4juAS&&qc};LETa9%izKy@Kt?WiN$!QSaAu3|U38(;^hsK1LV1>&^3*G6%2g~SM zpVTR9Ex)bLG_SZr-Z&dd{fL!I0;Z19~g2&UahpT>4$W^^-aSEhQ9xcBee@DVFc|msPmmNT{4OIIZQ|t-=Sz`?0k`(^&>4LVF z5CFYD7>Vb#U3PcCyH~Zs3LIuO%J>Z$Xn?&3K)YNA5qWx|{Mlr(q9$6R-Pu;ayKn~t z5;@1&h`X^cHs0r>RgK;|niOBG6ObmFaOd*|Az|I?EKf}nx>)UbxSCMdyAFYveo^xU7x$&1IB>aYM43dx{ZMDDQwtwc%uY|H zhj}sy|Fgt&ajnR;8x2%;K0Fzh8rVuP*c2~cjA1!TdoE)vnzVmSpea3fGYK?(yE+13 z%oi3J95JoPI>bGCecEsFSKFM!a6dbbIYXoDs~n@6pR{MGWE+CmYD2A3>vHor} z*={PXeHY@}wxl$kULHJp$)KLEUBD&_-Ksh*P24W^;Er-y0|<&60RR$XYI^zj_dV*& z%4%vRWQBG2Grgt)H!8?&C0Da|OmL#TxVC{rxLHDh=!<t_N$QK@&ixUT2HeH?(A!7aRXlyO+*D)EK6BMJ=M9PE zOili^3%&;NFNdTjlahjDcZZGKuV2IT^}H+7c>!`fUuhetT?7Lqh&yFKQl;2T48HZL z;ZPNY++hRC_0{%ogVmRaq7j)_Rn=Q%F?@e8@0pJVz)Z2Pb3svE_feZ|vTi&FMS^X6 zAr@rzi#?4<+4%ki(Yb@COP%$F3t0otKVJvtNA!r(RG>#<$O}2b>EyydxearsL0ehK(f|YlwbtAz z2`P1JbT5D?^}ZFRc)ww9<0GXo>w4xJ5(ZM`*Wk+(VTvmL1q?IJn35{cuT@??~7{B zYrG3Yk^EiU)ED1v{GU{5P$d>LKAGbqCB>k{ z8q&XoK-GSgfiyHSYU0r$dPNI01UFM@QD8kgVK-1D&lMIdb}+;0X?7oAZEmmE3m>yt z_#EBztX`BFmc+d-_pNj)DEzBGahxZo=n1f|uFG}k0`TUtms=ocxrF$do4=Et;BsYJ zBniDDpz!|4{-N~IGWL^nQ`t_8(|4IsE6;`MZV}%0x@AlVjOm6iQpD%=DTqmM59q$l za7b90yL+U1IPCRNFk+{AMLQd|Qm&Yu4o{IvytEUD2eJ_~$3UKpPoJK!>IgYTH1A)Q zIXZmFUIn%*gv;{@lRfU9ih`R2RjD97F822U^fIGb5mB<+L%-E9p(;?rHT(OjuD~bI zRs-Q!u=RxiT6E(HupfSJJ=dFvJN9JYS(o2XcdqNvZs#yjcpQ~;te8in|*3R9;979)}St619&$nsHE z{ows=ANp@b@rbRyIkiO-wI43x{_pO5Ga}Qll^l-d3qH(BfA2o069Wtr_JbFF+F)Nt zUvnIT4u_Ube$7PP%tYXXoeGyR!T#y$^o*@U zAgn#Fr#-iHztid(t8GK9@M09-o5QR(Y*jkQXzQ-J z1+!Lh(GmdEDMYOiz*gOO;(wiawa{X8_rtEMXX zKM$zcu+r(F$sQk}F9dFfF?ri8y~yQ=#9L~;#6Q+!KB{S*F3A>TRx^b)g30ZKawB{S z+@_Q-Wo}^k*CVI+&X$Ej0Hu-*VVlEUz=+_|LLuh_QV+yq|C zA8$bha!*YxaeTq+ndtyZZnB~c9uEz}2J}m+C{v?T?e<3?DcS+(u=2e;-;ZPHZ+$A9A0w;4!nqR!z1>^YJ9H)C z_@D^Huy0tZ&hN>QfXQJRklL7wfha(W4bYk4;JEigey7g8pz1iwpb*mG1iDcxG(TXS zpa7NF>-i`Z2&zRKN4!Usa8S78C@NMaRoJ~an_o$vP=p518>&qLP13i@&_D>F@L&@# zPYsW)0*k)P97*=#7?zL2;}Ac0^!_0c5m6V=?De+?uK1iP*JmU-dc~pbaJ?XzOii)N zPZ;-hN1{m>gbcLj6M$E)$+N#ja6!y7pmH;Wq{08X(FPINJhh-DC5*Q|N@7l{D4FQ5 zD$oR~dkx}c24(dBrG6;s2beYS*gy$Cz*T60$*7^bgHbjnz{{=e+ovft2_$BCZ0yZBGuIPuOtQQkkUn>EO@ww~ z&pX}zm2fMhRMT-zMNw$+a=&wq;80n{IbN~yEW83pvLLHVL0d7~Gts(Dpv*bEO~XnR za9W)JKdPnV&25MGMb8Jj_>8I+e`Wd??*B5`yRa}$-UE|8wN~Uac`ik9NIRS&NP2Df z(d8#@8>M5RBn)usRnKa$RNR4Dfncd_t!*CBUX)&~>HNo~dX@{8YMGiOVVmHBuL;cb z&e>9hM2oy+eu4(*(G^H8Kr=EjBmu|kt*s#s5QmDJL$rW%qrEDCnM|8!Gb8O<0pR9a z;`w%f7LDDIn0uSg_`GHp<6)QmzD}^#MvJ;1-$KQfF^KPMR|XP=Jfd&1m=oJ&;T>=^X@0nE&}P~_szgV zOF!wof>*?Mf(xl$KkjD($)iezJWYNKmip2X{dk%FZC(I4vQ(A6i+H54RNXINa@FY}o;!PXg+)$ErD+v?$mv zR9#-cD=9X7l9@*OL_+EXP?UdPaI@oK7btNm+Io>!ipH0~VbaEF1ptcPG@o=RE>c7QQ*8`ywSUB;|mT4hfO1GbOWeS zmx}<#8!GIX0ucVBBtg_75|pUE-*`;kzf((~@SaI!b)-yr(I<6pAQSq3fYcs1&e)ww z`biHm>aykalbiw_Ke)(Te!`%!*h&NRtrY$K+*|Kt;X2>%lx&J0e5aIw?d?{_Cn-pa zi``{PSi%glh+9F6qi=nZ`3kbSYAXeySR=wTCF6CL@EG_I)=|c8 zT_e)G82%}DW@PA@+n`T6zagpbk9eAk*zM|jqe}V|)nZd>iNhwZhOPCJc3VTAy2xIR z@W(g8rWCpSJco$xd=@AI-V|^GbNk!0j;Y8yR?cEtu8Ab%OJJm72OkVNZ;LOut)JEJTLSn z)8Z_ppAQzKat2PqF^GRG5zDAP3?wok0Oq3{00*M{fYrI5wHnx)lS8GU3v^H@z<)dr zxu^O@jwJgQeO6W$zIM5TTs$aNz%sC3g7qsWm7-Zz3)t`{EJRDIHpfUrJ#y0tB+4cL zC)jZk#Qo(-vWMtFEluzvF)^_k^~b`Uz>clOqK^;hkjR+XcRmeadi?Mqr$N=S9^W+w z$nE-oV9gIzE}5Ws0vJl(_b+VibI75h=uT5t6t)z327qnxnJn=EB8VhIv0yE;pSjPP zU;Z*-V%bD$`e~GSspK46$awNZ28a>>w{Kb%`IXPI9z=-+VpA<{Su2_yO?fy@f^9el z_9D=k(q;MjYUyoyT*g|4SJmKX{s^WN{2i=3#4}BaB=L;V`)~3uAS!hay-D%+!~U~0 z%r45Auwowg@7}E57|Z*QNzeZw(e&H3zr+K;y@oPB|3g>r|NgvM9Wdqrh4bhBv#I`E zp-*>2!Vt>;fQ|KkSirZHAjy`Wh<5IedHml$c`19*K+-QBoH@7uxJ1Toy%p!qo%fe| zB>Ln`E&pXf@LYjGV<3!i?*B00zyC@)n1TG2?f)h%dm7NI_rN~)mjV6X{wohg4ZXSi z50%6Jc0o{!05GE@3xbXa!NQ!$q5t4hJTQ>?xy~x$|Dz{(58xbnnydv|s^Q&eJqP|t NiOD~LKhS&m{{XR)+ZX@< From 641e784ab58e944b18dd823c1395dddcd31e924e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 11:12:10 +0200 Subject: [PATCH 0007/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 939f411b..374819e2 100755 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Python 3.6 or later with the following `pip3 install -U -r requirements.txt` pac # Training -Run `train.py` to begin training. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process ~16 epochs per day. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (coming soon) +Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process ~16 epochs per day. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (coming soon) ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_training_loss.png "training loss") # Inference From 823a34af5abc77e8a84993bbf79bfb3bb2eeaa1f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 11:17:57 +0200 Subject: [PATCH 0008/2595] updates --- .gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 979315f3..d8221550 100755 --- a/.gitignore +++ b/.gitignore @@ -10,10 +10,9 @@ *.HEIC *.weights *.pt -*.tif.txt +*results.txt !zidane_result.jpg #!coco_training_loss.png -!images/* checkpoints temp-plot.html From 67ee4f0c0d446451f6f29fc41fc93d3071dbebcf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 11:24:09 +0200 Subject: [PATCH 0009/2595] updates --- .gitignore | 3 ++- checkpoints/download_yolov3_weights.sh | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 checkpoints/download_yolov3_weights.sh diff --git a/.gitignore b/.gitignore index d8221550..4f0936fc 100755 --- a/.gitignore +++ b/.gitignore @@ -10,11 +10,12 @@ *.HEIC *.weights *.pt +*.weights *results.txt !zidane_result.jpg #!coco_training_loss.png -checkpoints + temp-plot.html # MATLAB GitIgnore ----------------------------------------------------------------------------------------------------- diff --git a/checkpoints/download_yolov3_weights.sh b/checkpoints/download_yolov3_weights.sh new file mode 100644 index 00000000..38108e7a --- /dev/null +++ b/checkpoints/download_yolov3_weights.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +wget https://pjreddie.com/media/files/yolov3.weights From a27276f055ce173525bd387a987c45ecd068569e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 11:30:46 +0200 Subject: [PATCH 0010/2595] updates --- utils/datasets.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 0760d7e5..50af4d78 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -105,7 +105,7 @@ class ListDataset(): # for training if img is None: continue - augment_hsv = False + augment_hsv = True if augment_hsv: # SV augmentation by 50% fraction = 0.50 @@ -144,7 +144,7 @@ class ListDataset(): # for training labels = np.array([]) # Augment image and labels - # img, labels, M = random_affine(img, targets=labels, degrees=(-5, 5), translate=(0.1, 0.1), scale=(0.8, 1.2)) # RGB + img, labels, M = random_affine(img, targets=labels, degrees=(-10, 10), translate=(0.2, 0.2), scale=(0.8, 1.2)) # RGB plotFlag = False if plotFlag: @@ -158,7 +158,7 @@ class ListDataset(): # for training labels[:, 1:5] = xyxy2xywh(labels[:, 1:5].copy()) / height # random left-right flip - lr_flip = False + lr_flip = True if lr_flip & (random.random() > 0.5): img = np.fliplr(img) if nL > 0: From 2737b419ac687cf10bcdacb40501f6d7eee06619 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 11:33:36 +0200 Subject: [PATCH 0011/2595] updates --- README.md | 2 +- results.txt | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 374819e2..8ac1a61d 100755 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Python 3.6 or later with the following `pip3 install -U -r requirements.txt` pac # Training -Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process ~16 epochs per day. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (coming soon) +Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process ~10 epochs/day with full augmentation, or ~15 epochs/day without input image augmentation. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (coming soon) ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_training_loss.png "training loss") # Inference diff --git a/results.txt b/results.txt index 07dd9bd0..4c972ad4 100644 --- a/results.txt +++ b/results.txt @@ -3926,3 +3926,32 @@ 0/998 8/416 65.3 67.7 367 353 250 652 1.75e+03 0 0 64 0 3 64 0.549 0/998 9/416 65.5 68.6 359 357 254 663 1.77e+03 0 0 81 0 14 81 0.541 0/998 10/416 64.6 66.9 354 349 250 650 1.73e+03 0 0 54 0 2 54 0.537 + 0/998 0/416 73.8 77.3 570 512 319 820 2.37e+03 0 0 107 0 0 107 4 + 0/998 1/416 66.5 77.9 449 456 284 734 2.07e+03 0 0 79 0 0 79 0.653 + 0/998 2/416 64.8 71.3 397 388 266 685 1.87e+03 0 0 64 0 0 64 0.633 + 0/998 3/416 60.4 66.6 367 363 246 632 1.74e+03 0 0 53 0 0 53 0.654 + 0/998 4/416 57.3 63.1 334 332 236 604 1.63e+03 0 0 49 0 0 49 0.634 + 0/998 5/416 58.7 63.1 352 315 237 611 1.64e+03 0 0 81 0 0 81 0.637 + 0/998 6/416 55.6 61.1 327 293 228 589 1.55e+03 0 0 50 0 0 50 0.636 + 0/998 7/416 56.7 62.3 318 291 237 612 1.58e+03 0 0 91 0 0 91 0.647 + 0/998 8/416 57.2 61.7 328 291 233 603 1.57e+03 0 0 59 0 0 59 0.642 + 0/998 9/416 59.7 63.1 334 302 239 619 1.62e+03 0 0 81 0 0 81 0.625 + 0/998 10/416 59.1 61.9 325 296 236 609 1.59e+03 0 0 53 0 0 53 0.629 + 0/998 11/416 60.9 63.1 324 301 245 633 1.63e+03 0 0 92 0 0 92 0.648 + 0/998 12/416 58.7 61.2 321 289 236 612 1.58e+03 0 0 36 0 0 36 0.627 + 0/998 13/416 59.1 61.7 316 285 238 615 1.57e+03 0 0 78 0 0 78 0.637 + 0/998 14/416 59.4 61.7 309 280 239 619 1.57e+03 0 0 73 0 0 73 0.633 + 0/998 15/416 59.2 61.5 301 273 238 616 1.55e+03 0 0 61 0 0 61 0.657 + 0/998 16/416 59.6 61.3 296 268 238 615 1.54e+03 0 0 59 0 1 59 0.643 + 0/998 17/416 58 60 290 260 232 601 1.5e+03 0 0 38 0 0 38 0.633 + 0/998 18/416 60.7 63.1 295 279 242 629 1.57e+03 0 0 140 0 0 140 0.641 + 0/998 0/416 85 97.3 434 557 358 917 2.45e+03 0 0 113 0 0 113 3.84 + 0/998 1/416 71.9 84.7 392 465 303 789 2.11e+03 0 0 79 0 0 79 0.586 + 0/998 2/416 70.5 77.2 363 413 283 733 1.94e+03 0 0 65 0 0 65 0.569 + 0/998 3/416 62.7 68.6 341 388 260 674 1.8e+03 0 0 59 0 0 59 0.575 + 0/998 4/416 58.6 63.7 312 347 243 628 1.65e+03 0 0 46 0 0 46 0.568 + 0/998 5/416 60.1 64.9 312 334 242 630 1.64e+03 0 0 79 0 1 79 0.569 + 0/998 6/416 57.4 62.5 309 318 234 609 1.59e+03 0 0 50 0 0 50 0.563 + 0/998 7/416 59.6 65.4 311 323 241 629 1.63e+03 0 0 91 0 0 91 0.565 + 0/998 8/416 59.4 66 313 324 237 621 1.62e+03 0 0 61 0 1 61 0.561 + 0/998 9/416 61.3 66.7 319 333 242 636 1.66e+03 0 0 81 0 15 81 0.571 From 55d63fe939fed3dc514c13a277b990b19c916d67 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 11:35:56 +0200 Subject: [PATCH 0012/2595] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8ac1a61d..70faa300 100755 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ http://www.ultralytics.com   # Description -The https://github.com/ultralytics/yolov3 repo contains code to train YOLOv3 on the COCO dataset: https://cocodataset.org/#home. **Credit to Joseph Redmon for YOLO** (https://pjreddie.com/darknet/yolo/) and to **Erik Lindernoren for the pytorch implementation** this work is based on (https://github.com/eriklindernoren/PyTorch-YOLOv3). +The https://github.com/ultralytics/yolov3 repo contains code inference and training of YOLOv3 on the COCO dataset: https://cocodataset.org/#home. **Credit to Joseph Redmon for YOLO** (https://pjreddie.com/darknet/yolo/) and to **Erik Lindernoren for the pytorch implementation** this work is based on (https://github.com/eriklindernoren/PyTorch-YOLOv3). # Requirements @@ -33,4 +33,4 @@ Run `test.py` to test the latest checkpoint on the 5000 validation images. Josep # Contact -For questions or comments please contact Glenn Jocher at glenn.jocher@ultralytics.com or visit us at http://www.ultralytics.com/contact \ No newline at end of file +For questions or comments please contact Glenn Jocher at glenn.jocher@ultralytics.com or visit us at http://www.ultralytics.com/contact From ef848642518132c7401a1a0194b75609528b3b4b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 11:39:43 +0200 Subject: [PATCH 0013/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 70faa300..3ec2edba 100755 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ Checkpoints will be saved in `/checkpoints` directory. Run `detect.py` to apply # Testing -Run `test.py` to test the latest checkpoint on the 5000 validation images. Joseph Redmon's official YOLOv3 weights produce a mAP of .581 using this method, compared to .579 in his paper. +Run `test.py` to test the latest checkpoint on the 5000 validation images. Joseph Redmon's official YOLOv3 weights produce a mAP of .581 using this PyTorch implementation, compared to .579 in darknet (https://arxiv.org/abs/1804.02767). # Contact From 7f2df9027786be331ed91af9424afc1d79a7072a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 11:42:34 +0200 Subject: [PATCH 0014/2595] updates --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 56435dcc..a4af4af6 100644 --- a/train.py +++ b/train.py @@ -157,9 +157,9 @@ def main(opt): # if i == 1: # return - # Write epoch results - with open('results.txt', 'a') as file: - file.write(s + '\n') + # Write epoch results + with open('results.txt', 'a') as file: + file.write(s + '\n') # Update best loss loss_per_target = rloss['loss'] / rloss['nGT'] From e81ef205fe54361ce59c1d443b8c26dd637ab42c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 11:44:41 +0200 Subject: [PATCH 0015/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index a4af4af6..493a28fd 100644 --- a/train.py +++ b/train.py @@ -7,7 +7,7 @@ from utils.datasets import * from utils.utils import * parser = argparse.ArgumentParser() -parser.add_argument('-epochs', type=int, default=999, help='number of epochs') +parser.add_argument('-epochs', type=int, default=160, help='number of epochs') parser.add_argument('-batch_size', type=int, default=12, help='size of each image batch') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='data config file path') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') From 65228ba8a2e6956d9d39ebabfdc29a6399b57d61 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 11:47:38 +0200 Subject: [PATCH 0016/2595] updates --- cfg/coco.data | 4 ++-- utils/gcp.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cfg/coco.data b/cfg/coco.data index 785b5e25..7a04df29 100644 --- a/cfg/coco.data +++ b/cfg/coco.data @@ -1,6 +1,6 @@ classes=80 -train=/Users/glennjocher/Downloads/DATA/coco/trainvalno5k.txt -valid=/Users/glennjocher/Downloads/DATA/coco/5k.txt +train=/Users/glennjocher/Downloads/DATA/coco/trainvalno5k.part +valid=/Users/glennjocher/Downloads/DATA/coco/5k.part names=data/coco.names backup=backup/ eval=coco diff --git a/utils/gcp.sh b/utils/gcp.sh index 765747ba..71e790d8 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Start -sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 train.py -img_size 416 -epochs 999 +sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 train.py -img_size 416 -epochs 160 # Resume cd yolov3 && python3 train.py -img_size 416 -resume 1 From 119d39599edb2c1da440a3e708786cf9014a0513 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 11:48:19 +0200 Subject: [PATCH 0017/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 493a28fd..dfcad225 100644 --- a/train.py +++ b/train.py @@ -36,7 +36,7 @@ def main(opt): if platform == 'darwin': # macos train_path = data_config['valid'] else: # linux (gcp cloud) - train_path = '../coco/trainvalno5k.txt' + train_path = '../coco/trainvalno5k.part' # Initialize model model = Darknet(opt.cfg, opt.img_size) From 184db1fb1070933947761634df21e67b44c038ec Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 11:48:58 +0200 Subject: [PATCH 0018/2595] updates --- cfg/coco.data | 4 ++-- train.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cfg/coco.data b/cfg/coco.data index 7a04df29..785b5e25 100644 --- a/cfg/coco.data +++ b/cfg/coco.data @@ -1,6 +1,6 @@ classes=80 -train=/Users/glennjocher/Downloads/DATA/coco/trainvalno5k.part -valid=/Users/glennjocher/Downloads/DATA/coco/5k.part +train=/Users/glennjocher/Downloads/DATA/coco/trainvalno5k.txt +valid=/Users/glennjocher/Downloads/DATA/coco/5k.txt names=data/coco.names backup=backup/ eval=coco diff --git a/train.py b/train.py index dfcad225..493a28fd 100644 --- a/train.py +++ b/train.py @@ -36,7 +36,7 @@ def main(opt): if platform == 'darwin': # macos train_path = data_config['valid'] else: # linux (gcp cloud) - train_path = '../coco/trainvalno5k.part' + train_path = '../coco/trainvalno5k.txt' # Initialize model model = Darknet(opt.cfg, opt.img_size) From b965b6e9b7927a391974f329bd1ac7fac9649792 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 11:52:27 +0200 Subject: [PATCH 0019/2595] updates --- utils/datasets.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 50af4d78..d6036d15 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -2,6 +2,7 @@ import glob import math import os import random +from sys import platform import cv2 import numpy as np @@ -63,7 +64,11 @@ class ListDataset(): # for training #self.img_files = sorted(glob.glob('%s/*.*' % path)) with open(path, 'r') as file: self.img_files = file.readlines() - self.img_files = [path.replace('\n', '').replace('/images','/Users/glennjocher/Downloads/DATA/coco/images') for path in self.img_files] + + if platform == 'darwin': # macos + self.img_files = [path.replace('\n', '').replace('/images','/Users/glennjocher/Downloads/DATA/coco/images') for path in self.img_files] + else: + self.img_files = [path.replace('\n', '').replace('/images','../coco/images') for path in self.img_files] self.label_files = [path.replace('images', 'labels').replace('.png', '.txt').replace('.jpg', '.txt') for path in self.img_files] From 3fb6cc81612975d8272d523c3c4535e63af6b3a3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 15:40:07 +0200 Subject: [PATCH 0020/2595] updates --- .gitignore | 5 ++--- train.py | 2 +- utils/datasets.py | 19 ++++++++++--------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index 4f0936fc..2d7e160b 100755 --- a/.gitignore +++ b/.gitignore @@ -11,11 +11,10 @@ *.weights *.pt *.weights -*results.txt !zidane_result.jpg -#!coco_training_loss.png - +!coco_training_loss.png +results.txt temp-plot.html # MATLAB GitIgnore ----------------------------------------------------------------------------------------------------- diff --git a/train.py b/train.py index 493a28fd..07939283 100644 --- a/train.py +++ b/train.py @@ -178,7 +178,7 @@ def main(opt): os.system('cp checkpoints/latest.pt checkpoints/best.pt') # Save backup checkpoint - if (epoch > 0) & (epoch % 100 == 0): + if (epoch > 0) & (epoch % 10 == 0): os.system('cp checkpoints/latest.pt checkpoints/backup' + str(epoch) + '.pt') # Save final model diff --git a/utils/datasets.py b/utils/datasets.py index d6036d15..b7a7db41 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -61,14 +61,15 @@ class ImageFolder(): # for eval-only class ListDataset(): # for training def __init__(self, path, batch_size=1, img_size=608): self.path = path - #self.img_files = sorted(glob.glob('%s/*.*' % path)) + # self.img_files = sorted(glob.glob('%s/*.*' % path)) with open(path, 'r') as file: self.img_files = file.readlines() if platform == 'darwin': # macos - self.img_files = [path.replace('\n', '').replace('/images','/Users/glennjocher/Downloads/DATA/coco/images') for path in self.img_files] + self.img_files = [path.replace('\n', '').replace('/images', '/Users/glennjocher/Downloads/DATA/coco/images') + for path in self.img_files] else: - self.img_files = [path.replace('\n', '').replace('/images','../coco/images') for path in self.img_files] + self.img_files = [path.replace('\n', '').replace('/images', '../coco/images') for path in self.img_files] self.label_files = [path.replace('images', 'labels').replace('.png', '.txt').replace('.jpg', '.txt') for path in self.img_files] @@ -77,7 +78,7 @@ class ListDataset(): # for training self.nB = math.ceil(self.nF / batch_size) # number of batches self.batch_size = batch_size - #assert self.nB > 0, 'No images found in path %s' % path + # assert self.nB > 0, 'No images found in path %s' % path self.height = img_size # RGB normalization values @@ -86,8 +87,8 @@ class ListDataset(): # for training def __iter__(self): self.count = -1 - # self.shuffled_vector = np.random.permutation(self.nF) # shuffled vector - self.shuffled_vector = np.arange(self.nF) + self.shuffled_vector = np.random.permutation(self.nF) # shuffled vector + # self.shuffled_vector = np.arange(self.nF) # not shuffled return self def __next__(self): @@ -110,7 +111,7 @@ class ListDataset(): # for training if img is None: continue - augment_hsv = True + augment_hsv = False if augment_hsv: # SV augmentation by 50% fraction = 0.50 @@ -149,7 +150,7 @@ class ListDataset(): # for training labels = np.array([]) # Augment image and labels - img, labels, M = random_affine(img, targets=labels, degrees=(-10, 10), translate=(0.2, 0.2), scale=(0.8, 1.2)) # RGB + # img, labels, M = random_affine(img, targets=labels, degrees=(-10, 10), translate=(0.2, 0.2), scale=(0.8, 1.2)) # RGB plotFlag = False if plotFlag: @@ -163,7 +164,7 @@ class ListDataset(): # for training labels[:, 1:5] = xyxy2xywh(labels[:, 1:5].copy()) / height # random left-right flip - lr_flip = True + lr_flip = False if lr_flip & (random.random() > 0.5): img = np.fliplr(img) if nL > 0: From f52b6281d3ba8a1c0b9bcf676b700ec802dd0f8b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 15:41:28 +0200 Subject: [PATCH 0021/2595] updates --- results.txt | 3957 --------------------------------------------------- 1 file changed, 3957 deletions(-) delete mode 100644 results.txt diff --git a/results.txt b/results.txt deleted file mode 100644 index 4c972ad4..00000000 --- a/results.txt +++ /dev/null @@ -1,3957 +0,0 @@ - 0/998 0/3375 129 127 517 687 492 1.27e+03 3.22e+03 0 0 149 0 0 149 3.8 - 0/998 1/3375 112 115 596 603 435 1.13e+03 2.99e+03 0 0 115 0 0 115 0.585 - 0/998 2/3375 93.7 95.5 457 491 359 933 2.43e+03 0 0 68 0 0 68 0.562 - 0/998 3/3375 83.3 85.2 461 450 325 849 2.25e+03 0 0 72 0 0 72 0.567 - 0/998 4/3375 86.9 94.8 458 466 349 910 2.37e+03 0 0 133 0 0 133 0.557 - 0/998 5/3375 81.6 88.4 423 450 330 857 2.23e+03 0 0 66 0 0 66 0.556 - 0/998 6/3375 79.2 86.8 431 424 322 834 2.18e+03 0 0 78 0 1 78 0.569 - 0/998 7/3375 80.3 85.7 427 419 322 833 2.17e+03 0 0 95 0 0 95 0.569 - 0/998 8/3375 79.5 83.4 412 409 320 825 2.13e+03 0 0 78 0 0 78 0.568 - 0/998 9/3375 75.7 80.7 389 387 304 786 2.02e+03 0 0 45 0 0 45 0.542 - 0/998 10/3375 74.9 78.8 399 373 299 773 2e+03 0 0 78 0 0 78 0.57 - 0/998 11/3375 74.7 77.4 386 361 295 761 1.96e+03 0 0 69 0 0 69 0.565 - 0/998 12/3375 72.8 75.2 370 350 285 738 1.89e+03 0 0 45 0 0 45 0.558 - 0/998 13/3375 74.7 77.4 375 353 291 755 1.93e+03 0 0 115 0 0 115 0.565 - 0/998 14/3375 73.3 75.9 362 344 286 740 1.88e+03 0 0 61 0 0 61 0.559 - 0/998 15/3375 72.8 75.7 355 339 286 742 1.87e+03 0 0 77 0 0 77 0.572 - 0/998 16/3375 73.6 76.4 357 342 287 745 1.88e+03 0 0 88 0 1 88 0.568 - 0/998 17/3375 73.7 76.3 354 340 288 748 1.88e+03 0 0 83 0 0 83 0.572 - 0/998 18/3375 74 76.8 349 336 289 750 1.87e+03 0 0 85 0 0 85 0.548 - 0/998 19/3375 72.2 74.9 341 325 282 732 1.83e+03 0 0 45 0 0 45 0.559 - 0/998 20/3375 73.4 76.1 342 329 287 747 1.85e+03 0 0 115 0 0 115 0.571 - 0/998 21/3375 73.3 75.8 338 327 286 744 1.84e+03 0 0 70 0 0 70 0.568 - 0/998 22/3375 73 75.1 335 321 284 740 1.83e+03 0 0 71 0 0 71 0.544 - 0/998 23/3375 73.7 75.4 333 327 286 746 1.84e+03 0 0 102 0 4 102 0.572 - 0/998 24/3375 76.8 78 336 335 296 776 1.9e+03 0 0 171 0 0 171 0.58 - 0/998 25/3375 77.6 79.1 335 337 299 784 1.91e+03 0 0 116 0 0 116 0.577 - 0/998 26/3375 77.6 79 335 336 299 785 1.91e+03 0 0 92 0 0 92 0.557 - 0/998 27/3375 78.5 80.1 333 339 302 792 1.93e+03 0 0 122 0 0 122 0.575 - 0/998 28/3375 78 79.3 328 333 299 784 1.9e+03 0 0 64 0 0 64 0.57 - 0/998 29/3375 77.9 79.5 329 333 299 785 1.9e+03 0 0 87 0 0 87 0.598 - 0/998 30/3375 76.5 78.2 323 327 294 772 1.87e+03 0 0 44 0 0 44 0.574 - 0/998 31/3375 75.5 77.1 316 321 290 761 1.84e+03 0 0 49 0 0 49 0.568 - 0/998 32/3375 75.5 76.9 313 317 289 759 1.83e+03 0 0 87 0 0 87 0.556 - 0/998 33/3375 75.4 76.7 311 318 289 758 1.83e+03 0 0 88 0 0 88 0.553 - 0/998 34/3375 75.1 76.4 309 315 288 757 1.82e+03 0 0 79 0 0 79 0.569 - 0/998 35/3375 74.9 76.5 307 313 287 756 1.81e+03 0 0 93 0 0 93 0.589 - 0/998 36/3375 73.8 75.2 301 308 283 745 1.79e+03 0 0 37 0 0 37 0.553 - 0/998 37/3375 72.9 74.3 297 303 279 736 1.76e+03 0 0 43 0 0 43 0.557 - 0/998 38/3375 72.4 74.2 294 300 278 731 1.75e+03 0 0 63 0 0 63 0.566 - 0/998 39/3375 72.4 73.8 292 298 277 729 1.74e+03 0 0 72 0 0 72 0.558 - 0/998 40/3375 71.6 73.1 288 294 274 723 1.72e+03 0 0 54 0 0 54 0.559 - 0/998 41/3375 72.1 73.5 288 294 276 728 1.73e+03 0 0 104 0 0 104 0.57 - 0/998 42/3375 72.2 73.7 285 294 276 729 1.73e+03 0 0 95 0 0 95 0.564 - 0/998 43/3375 72.4 73.6 285 292 276 728 1.73e+03 0 0 90 0 0 90 0.58 - 0/998 44/3375 72.8 74 287 293 277 731 1.73e+03 0 0 114 0 0 114 0.558 - 0/998 45/3375 72 72.9 283 288 273 721 1.71e+03 0 0 34 0 0 34 0.548 - 0/998 46/3375 72.6 73.4 283 290 275 727 1.72e+03 0 0 120 0 0 120 0.569 - 0/998 47/3375 72.2 73.3 282 289 274 725 1.71e+03 0 0 70 0 0 70 0.556 - 0/998 48/3375 71.8 72.9 280 286 272 722 1.7e+03 0 0 69 0 0 69 0.562 - 0/998 49/3375 71.3 72.5 277 283 271 718 1.69e+03 0 0 56 0 0 56 0.572 - 0/998 50/3375 71.2 72.6 275 283 271 718 1.69e+03 0 0 83 0 0 83 0.588 - 0/998 51/3375 70.9 72.3 273 280 269 715 1.68e+03 0 0 65 0 0 65 0.588 - 0/998 52/3375 70.9 72.3 272 280 269 715 1.68e+03 0 0 83 0 0 83 0.594 - 0/998 53/3375 71.2 72.4 271 279 269 717 1.68e+03 0 0 94 0 3 94 0.634 - 0/998 54/3375 71.4 72.8 270 280 270 721 1.69e+03 0 0 101 0 0 101 0.588 - 0/998 55/3375 72 73.5 272 281 273 728 1.7e+03 0 0 133 0 0 133 0.615 - 0/998 56/3375 71.7 73.2 269 279 271 725 1.69e+03 0 0 65 0 0 65 0.554 - 0/998 57/3375 71.8 73.3 268 279 271 724 1.69e+03 0 0 75 0 0 75 0.582 - 0/998 58/3375 71.8 73.2 266 278 271 725 1.68e+03 0 0 85 0 1 85 0.585 - 0/998 59/3375 71.4 72.8 265 276 269 721 1.67e+03 0 0 59 0 0 59 0.573 - 0/998 60/3375 71.7 73.1 265 277 271 725 1.68e+03 0 0 109 0 2 109 0.582 - 0/998 61/3375 71.3 72.7 263 275 269 721 1.67e+03 0 0 55 0 2 55 0.566 - 0/998 62/3375 71.5 72.8 263 275 269 723 1.67e+03 0 0 94 0 0 94 0.578 - 0/998 63/3375 71.7 72.9 262 274 270 724 1.67e+03 0 0 93 0 1 93 0.575 - 0/998 64/3375 71.6 72.8 261 274 269 724 1.67e+03 0 0 78 0 0 78 0.606 - 0/998 65/3375 71.6 72.7 260 274 269 723 1.67e+03 0 0 75 0 0 75 0.555 - 0/998 66/3375 71.8 73 260 274 270 727 1.68e+03 0 0 115 0 8 115 0.568 - 0/998 67/3375 71.9 72.9 259 272 269 726 1.67e+03 0 0 77 0 0 77 0.567 - 0/998 68/3375 71.6 72.4 257 270 268 722 1.66e+03 0 0 52 0 2 52 0.56 - 0/998 69/3375 71.1 71.9 254 268 266 717 1.65e+03 0 0 42 0 1 42 0.556 - 0/998 70/3375 71.3 72 253 268 266 718 1.65e+03 0 0 84 0 0 84 0.56 - 0/998 71/3375 71 71.7 252 266 265 715 1.64e+03 0 0 72 0 0 72 0.558 - 0/998 72/3375 71.4 72.3 252 268 266 720 1.65e+03 0 0 120 0 0 120 0.56 - 0/998 73/3375 71 72 250 266 265 716 1.64e+03 0 0 54 0 0 54 0.54 - 0/998 74/3375 72.1 72.8 252 267 268 725 1.66e+03 0 0 176 0 0 176 0.575 - 0/998 75/3375 72.3 73 251 268 268 727 1.66e+03 0 0 108 0 0 108 0.568 - 0/998 76/3375 72.3 73 251 267 268 727 1.66e+03 0 0 79 0 0 79 0.553 - 0/998 77/3375 72 72.8 250 265 267 725 1.65e+03 0 0 71 0 0 71 0.564 - 0/998 78/3375 72 72.9 249 265 267 726 1.65e+03 0 0 92 0 0 92 0.566 - 0/998 79/3375 71.9 72.7 248 265 266 725 1.65e+03 0 0 68 0 0 68 0.544 - 0/998 80/3375 71.7 72.5 247 264 265 722 1.64e+03 0 0 57 0 20 57 0.553 - 0/998 81/3375 71.4 72.2 246 262 264 720 1.64e+03 0 0 59 0 0 59 0.579 - 0/998 82/3375 71.8 72.6 246 265 265 724 1.65e+03 0 0 135 0 0 135 0.597 - 0/998 83/3375 71.7 72.5 245 264 265 722 1.64e+03 0 0 67 0 6 67 0.574 - 0/998 84/3375 71.8 72.5 245 263 265 723 1.64e+03 0 0 103 0 3 103 0.57 - 0/998 85/3375 71.6 72.4 245 263 264 721 1.64e+03 0 0 59 0 0 59 0.574 - 0/998 86/3375 71.6 72.4 244 264 263 721 1.64e+03 0 0 88 0 0 88 0.573 - 0/998 87/3375 71.1 72 242 262 261 716 1.63e+03 0 0 35 0 0 35 0.567 - 0/998 88/3375 70.9 71.7 241 261 260 713 1.62e+03 0 0 54 0 0 54 0.55 - 0/998 89/3375 70.8 71.5 240 261 260 712 1.62e+03 0 0 74 0 0 74 0.567 - 0/998 90/3375 70.9 71.6 239 261 260 713 1.62e+03 0 0 87 0 0 87 0.557 - 0/998 91/3375 70.9 71.5 238 260 259 712 1.61e+03 0 0 79 0 0 79 0.553 - 0/998 92/3375 70.5 71.2 237 259 258 708 1.6e+03 0 0 46 0 1 46 0.563 - 0/998 93/3375 70.6 71.1 237 259 258 708 1.6e+03 0 0 88 0 0 88 0.566 - 0/998 94/3375 70.4 70.9 236 257 257 706 1.6e+03 0 0 67 0 0 67 0.569 - 0/998 95/3375 70.6 71.2 236 257 257 706 1.6e+03 0 0 92 0 0 92 0.551 - 0/998 96/3375 70.8 71.3 236 258 257 707 1.6e+03 0 0 90 0 0 90 0.564 - 0/998 97/3375 70.6 71.3 235 257 256 705 1.6e+03 0 0 69 0 0 69 0.562 - 0/998 98/3375 70.5 71.1 234 255 255 703 1.59e+03 0 0 69 0 0 69 0.551 - 0/998 99/3375 70.5 71.2 234 255 255 702 1.59e+03 0 0 75 0 0 75 0.556 - 0/998 100/3375 70.7 71.3 234 255 255 702 1.59e+03 0 0 84 0 0 84 0.568 - 0/998 101/3375 70.5 71.1 233 253 254 701 1.58e+03 0 0 58 0 0 58 0.57 - 0/998 102/3375 71 71.5 234 255 255 704 1.59e+03 0 0 136 0 0 136 0.566 - 0/998 103/3375 71.3 71.9 234 256 255 705 1.59e+03 0 0 103 0 0 103 0.569 - 0/998 104/3375 71.3 71.9 233 255 255 705 1.59e+03 0 0 90 0 0 90 0.577 - 0/998 105/3375 71.6 72.3 233 256 256 707 1.6e+03 0 0 105 0 3 105 0.565 - 0/998 106/3375 71.3 71.9 232 255 254 704 1.59e+03 0 0 57 0 0 57 0.554 - 0/998 107/3375 71.2 71.7 231 254 254 702 1.58e+03 0 0 56 0 0 56 0.568 - 0/998 108/3375 71.5 71.9 231 254 254 702 1.58e+03 0 0 111 0 0 111 0.555 - 0/998 109/3375 72 72.4 232 255 255 705 1.59e+03 0 0 137 0 0 137 0.572 - 0/998 110/3375 72 72.3 232 255 254 704 1.59e+03 0 0 70 0 0 70 0.549 - 0/998 111/3375 71.8 72.2 231 254 253 702 1.58e+03 0 0 55 0 5 55 0.553 - 0/998 112/3375 71.9 72.4 231 254 254 703 1.59e+03 0 0 109 0 0 109 0.564 - 0/998 113/3375 72.1 72.4 231 254 254 703 1.59e+03 0 0 106 0 0 106 0.568 - 0/998 114/3375 72.3 72.6 231 254 254 705 1.59e+03 0 0 104 0 0 104 0.568 - 0/998 115/3375 72.3 72.8 232 254 254 705 1.59e+03 0 0 91 0 0 91 0.57 - 0/998 116/3375 72.6 72.9 232 255 255 707 1.59e+03 0 0 110 0 0 110 0.573 - 0/998 117/3375 72.5 72.8 232 254 254 706 1.59e+03 0 0 72 0 0 72 0.558 - 0/998 118/3375 72.4 72.6 231 253 254 704 1.59e+03 0 0 65 0 0 65 0.569 - 0/998 119/3375 72.4 72.6 230 252 253 704 1.59e+03 0 0 94 0 1 94 0.56 - 0/998 120/3375 72.4 72.4 230 252 253 703 1.58e+03 0 0 81 0 3 81 0.568 - 0/998 121/3375 72.3 72.4 229 252 252 702 1.58e+03 0 0 71 0 0 71 0.556 - 0/998 122/3375 72.5 72.7 230 252 253 704 1.58e+03 0 0 107 0 0 107 0.588 - 0/998 123/3375 72.6 72.8 230 252 253 706 1.59e+03 0 0 102 0 1 102 0.569 - 0/998 124/3375 72.6 72.9 230 253 253 706 1.59e+03 0 0 102 0 2 102 0.565 - 0/998 125/3375 72.6 72.8 229 252 253 705 1.58e+03 0 0 73 0 0 73 0.568 - 0/998 126/3375 72.5 72.8 229 251 252 704 1.58e+03 0 0 69 0 1 69 0.559 - 0/998 127/3375 72.3 72.5 228 250 251 701 1.57e+03 0 0 46 0 7 46 0.557 - 0/998 128/3375 72.5 72.6 227 250 251 702 1.58e+03 0 0 94 0 0 94 0.557 - 0/998 129/3375 72.4 72.5 227 249 251 700 1.57e+03 0 0 76 0 0 76 0.56 - 0/998 130/3375 72.7 72.8 227 249 251 701 1.57e+03 0 0 108 0 0 108 0.566 - 0/998 131/3375 72.6 72.8 227 249 251 701 1.57e+03 0 0 87 0 0 87 0.561 - 0/998 132/3375 72.5 72.6 227 249 250 699 1.57e+03 0 0 64 0 0 64 0.569 - 0/998 133/3375 72.2 72.5 226 247 250 697 1.56e+03 0 0 49 0 0 49 0.562 - 0/998 134/3375 72 72.3 225 247 249 695 1.56e+03 0 0 49 0 0 49 0.573 - 0/998 135/3375 71.8 72.1 225 246 248 693 1.56e+03 0 0 56 0 0 56 0.572 - 0/998 136/3375 71.8 72.1 224 246 248 692 1.55e+03 0 0 85 0 0 85 0.606 - 0/998 137/3375 71.6 71.8 224 245 247 690 1.55e+03 0 0 50 0 0 50 0.581 - 0/998 138/3375 71.9 72 224 245 247 692 1.55e+03 0 0 117 0 0 117 0.593 - 0/998 139/3375 71.7 71.9 223 244 246 689 1.55e+03 0 0 54 0 0 54 0.577 - 0/998 140/3375 71.4 71.7 222 243 245 687 1.54e+03 0 0 43 0 0 43 0.59 - 0/998 141/3375 71.4 71.6 222 243 245 686 1.54e+03 0 0 77 0 0 77 0.59 - 0/998 142/3375 71.6 71.9 222 243 245 687 1.54e+03 0 0 116 0 0 116 0.595 - 0/998 143/3375 71.6 71.9 221 243 245 687 1.54e+03 0 0 93 0 1 93 0.607 - 0/998 144/3375 71.5 71.8 221 242 245 686 1.54e+03 0 0 68 0 0 68 0.6 - 0/998 145/3375 71.4 71.8 221 242 244 685 1.53e+03 0 0 71 0 0 71 0.583 - 0/998 146/3375 71.3 71.7 220 242 244 683 1.53e+03 0 0 61 0 0 61 0.583 - 0/998 147/3375 71.1 71.5 220 241 243 681 1.53e+03 0 0 55 0 0 55 0.59 - 0/998 148/3375 70.9 71.4 219 240 242 680 1.52e+03 0 0 60 0 0 60 0.645 - 0/998 149/3375 70.8 71.2 218 240 241 678 1.52e+03 0 0 62 0 0 62 0.58 - 0/998 150/3375 70.8 71.2 218 239 241 677 1.52e+03 0 0 94 0 0 94 0.582 - 0/998 151/3375 70.9 71.4 218 239 242 679 1.52e+03 0 0 104 0 0 104 0.583 - 0/998 152/3375 70.9 71.3 217 238 241 678 1.52e+03 0 0 60 0 0 60 0.591 - 0/998 153/3375 70.8 71.3 217 238 241 678 1.52e+03 0 0 91 0 0 91 0.587 - 0/998 154/3375 70.9 71.5 217 239 241 678 1.52e+03 0 0 107 0 0 107 0.586 - 0/998 155/3375 70.9 71.5 217 238 241 678 1.52e+03 0 0 84 0 0 84 0.592 - 0/998 156/3375 70.9 71.4 216 238 241 678 1.52e+03 0 0 101 0 0 101 0.603 - 0/998 157/3375 71 71.6 216 238 241 678 1.52e+03 0 0 96 0 0 96 0.578 - 0/998 158/3375 70.9 71.4 216 238 240 677 1.51e+03 0 0 54 0 0 54 0.603 - 0/998 159/3375 70.7 71.3 215 237 240 675 1.51e+03 0 0 65 0 0 65 0.59 - 0/998 160/3375 70.9 71.5 215 236 240 676 1.51e+03 0 0 104 0 0 104 0.58 - 0/998 161/3375 70.7 71.3 214 236 239 675 1.51e+03 0 0 55 0 0 55 0.585 - 0/998 162/3375 70.5 71.1 214 235 239 673 1.5e+03 0 0 55 0 11 55 0.596 - 0/998 163/3375 70.6 71 213 235 238 672 1.5e+03 0 0 79 0 0 79 0.593 - 0/998 164/3375 70.6 71 214 235 238 672 1.5e+03 0 0 82 0 0 82 0.576 - 0/998 165/3375 70.6 71.1 213 234 238 671 1.5e+03 0 0 91 0 0 91 0.594 - 0/998 166/3375 70.6 71.1 213 235 238 672 1.5e+03 0 0 100 0 18 100 0.577 - 0/998 167/3375 70.5 71 213 234 238 671 1.5e+03 0 0 76 0 0 76 0.574 - 0/998 168/3375 70.5 71 213 235 237 670 1.5e+03 0 0 68 0 2 68 0.587 - 0/998 169/3375 70.4 70.9 212 234 237 669 1.49e+03 0 0 62 0 0 62 0.602 - 0/998 170/3375 70.4 70.8 212 233 236 668 1.49e+03 0 0 71 0 0 71 0.586 - 0/998 171/3375 70.3 70.7 212 233 236 667 1.49e+03 0 0 66 0 0 66 0.585 - 0/998 172/3375 70.2 70.6 211 232 235 666 1.49e+03 0 0 58 0 0 58 0.579 - 0/998 173/3375 70.1 70.5 211 232 235 665 1.48e+03 0 0 51 0 0 51 0.588 - 0/998 174/3375 69.9 70.3 210 231 234 663 1.48e+03 0 0 38 0 1 38 0.592 - 0/998 175/3375 69.7 70.1 209 230 233 661 1.47e+03 0 0 46 0 0 46 0.575 - 0/998 176/3375 69.7 70.1 209 230 233 660 1.47e+03 0 0 89 0 0 89 0.586 - 0/998 177/3375 69.7 70.1 209 230 233 661 1.47e+03 0 0 77 0 0 77 0.593 - 0/998 178/3375 69.5 70 208 229 232 659 1.47e+03 0 0 47 0 0 47 0.581 - 0/998 179/3375 69.4 69.9 208 229 232 658 1.47e+03 0 0 67 0 0 67 0.591 - 0/998 180/3375 69.4 69.9 207 228 232 658 1.46e+03 0 0 78 0 0 78 0.588 - 0/998 181/3375 69.3 69.7 207 227 231 656 1.46e+03 0 0 48 0 0 48 0.589 - 0/998 182/3375 69.1 69.5 206 226 230 654 1.45e+03 0 0 36 0 0 36 0.598 - 0/998 183/3375 69 69.4 206 226 230 652 1.45e+03 0 0 56 0 0 56 0.603 - 0/998 184/3375 69 69.4 206 225 229 652 1.45e+03 0 0 87 0 0 87 0.601 - 0/998 185/3375 68.9 69.3 205 225 229 651 1.45e+03 0 0 61 0 0 61 0.625 - 0/998 186/3375 69.1 69.5 205 225 229 652 1.45e+03 0 0 122 0 0 122 0.622 - 0/998 187/3375 69.2 69.6 206 226 230 653 1.45e+03 0 0 106 0 0 106 0.597 - 0/998 188/3375 69.3 69.6 206 225 229 653 1.45e+03 0 0 82 0 3 82 0.633 - 0/998 189/3375 69.2 69.5 205 225 229 652 1.45e+03 0 0 59 0 0 59 0.597 - 0/998 190/3375 69.1 69.4 205 224 229 651 1.45e+03 0 0 60 0 3 60 0.603 - 0/998 191/3375 69.1 69.4 204 224 228 651 1.45e+03 0 0 73 0 0 73 0.613 - 0/998 192/3375 69 69.3 204 223 228 650 1.44e+03 0 0 62 0 2 62 0.613 - 0/998 193/3375 69 69.2 204 223 228 649 1.44e+03 0 0 61 0 0 61 0.594 - 0/998 194/3375 68.9 69.1 203 222 227 648 1.44e+03 0 0 54 0 0 54 0.606 - 0/998 195/3375 68.7 68.9 202 221 227 646 1.43e+03 0 0 43 0 1 43 0.597 - 0/998 196/3375 68.8 69 202 221 227 646 1.43e+03 0 0 87 0 1 87 0.614 - 0/998 197/3375 68.7 68.9 202 220 226 644 1.43e+03 0 0 55 0 0 55 0.58 - 0/998 198/3375 68.8 68.9 202 220 226 645 1.43e+03 0 0 116 0 0 116 0.608 - 0/998 199/3375 68.8 69 202 220 226 645 1.43e+03 0 0 84 0 0 84 0.6 - 0/998 200/3375 68.8 68.9 202 220 226 643 1.43e+03 0 0 64 0 1 64 0.592 - 0/998 201/3375 68.7 68.8 201 219 225 643 1.43e+03 0 0 66 0 0 66 0.606 - 0/998 202/3375 68.8 69 201 219 226 643 1.43e+03 0 0 115 0 0 115 0.593 - 0/998 203/3375 68.7 68.9 201 219 225 643 1.43e+03 0 0 53 0 3 53 0.603 - 0/998 204/3375 68.7 68.9 201 219 225 642 1.42e+03 0 0 63 0 0 63 0.602 - 0/998 205/3375 68.7 68.9 201 218 225 642 1.42e+03 0 0 84 0 0 84 0.595 - 0/998 206/3375 68.6 68.8 200 218 224 641 1.42e+03 0 0 67 0 0 67 0.585 - 0/998 207/3375 68.6 69 200 218 224 641 1.42e+03 0 0 106 0 0 106 0.593 - 0/998 208/3375 68.8 69 200 218 224 642 1.42e+03 0 0 104 0 0 104 0.602 - 0/998 209/3375 68.7 69 200 218 224 641 1.42e+03 0 0 63 0 0 63 0.584 - 0/998 210/3375 68.7 68.9 200 218 224 641 1.42e+03 0 0 83 0 0 83 0.6 - 0/998 211/3375 68.7 68.9 199 217 224 641 1.42e+03 0 0 77 0 0 77 0.6 - 0/998 212/3375 68.8 68.9 199 217 224 641 1.42e+03 0 0 100 0 0 100 0.602 - 0/998 213/3375 68.8 69 199 217 224 641 1.42e+03 0 0 87 0 0 87 0.592 - 0/998 214/3375 68.7 69 199 217 224 641 1.42e+03 0 0 84 0 0 84 0.579 - 0/998 215/3375 68.8 69 199 217 224 642 1.42e+03 0 0 116 0 0 116 0.584 - 0/998 216/3375 68.8 68.9 199 217 223 641 1.42e+03 0 0 70 0 0 70 0.583 - 0/998 217/3375 68.9 69.1 199 217 224 642 1.42e+03 0 0 109 0 0 109 0.61 - 0/998 218/3375 69 69.2 199 217 224 642 1.42e+03 0 0 105 0 0 105 0.599 - 0/998 219/3375 69 69.2 199 217 224 642 1.42e+03 0 0 102 0 0 102 0.603 - 0/998 220/3375 69.1 69.3 199 217 224 643 1.42e+03 0 0 108 0 0 108 0.599 - 0/998 221/3375 69.1 69.4 199 216 224 643 1.42e+03 0 0 96 0 0 96 0.601 - 0/998 222/3375 69.1 69.3 198 216 224 642 1.42e+03 0 0 63 0 0 63 0.598 - 0/998 223/3375 69 69.2 198 216 223 641 1.42e+03 0 0 64 0 0 64 0.604 - 0/998 224/3375 69.1 69.3 198 216 223 642 1.42e+03 0 0 110 0 0 110 0.604 - 0/998 225/3375 69.2 69.4 198 216 224 643 1.42e+03 0 0 104 0 0 104 0.616 - 0/998 226/3375 69.1 69.2 198 215 223 642 1.42e+03 0 0 46 0 0 46 0.592 - 0/998 227/3375 69 69.2 197 215 223 641 1.41e+03 0 0 61 0 0 61 0.58 - 0/998 228/3375 69 69.2 197 215 223 641 1.41e+03 0 0 85 0 0 85 0.593 - 0/998 229/3375 69.1 69.2 197 215 223 641 1.41e+03 0 0 110 0 0 110 0.581 - 0/998 230/3375 69.1 69.2 197 215 223 641 1.41e+03 0 0 74 0 0 74 0.612 - 0/998 231/3375 69 69.2 197 214 222 640 1.41e+03 0 0 61 0 0 61 0.588 - 0/998 232/3375 69.1 69.2 197 214 222 640 1.41e+03 0 0 70 0 0 70 0.6 - 0/998 233/3375 69.1 69.2 196 214 222 640 1.41e+03 0 0 89 0 0 89 0.597 - 0/998 234/3375 69.4 69.4 197 214 223 641 1.41e+03 0 0 156 0 0 156 0.601 - 0/998 235/3375 69.3 69.4 197 214 223 641 1.41e+03 0 0 87 0 0 87 0.611 - 0/998 236/3375 69.3 69.5 196 214 222 641 1.41e+03 0 0 79 0 2 79 0.609 - 0/998 237/3375 69.2 69.4 196 214 222 640 1.41e+03 0 0 54 0 9 54 0.591 - 0/998 238/3375 69.2 69.3 196 214 222 640 1.41e+03 0 0 75 0 0 75 0.599 - 0/998 239/3375 69.2 69.4 196 214 222 639 1.41e+03 0 0 97 0 0 97 0.607 - 0/998 240/3375 69.1 69.3 196 213 221 638 1.41e+03 0 0 49 0 0 49 0.606 - 0/998 241/3375 69.3 69.4 196 213 222 640 1.41e+03 0 0 120 0 0 120 0.611 - 0/998 242/3375 69.3 69.5 196 213 221 639 1.41e+03 0 0 97 0 0 97 0.599 - 0/998 243/3375 69.4 69.6 196 213 222 640 1.41e+03 0 0 120 0 0 120 0.633 - 0/998 244/3375 69.5 69.7 196 214 222 640 1.41e+03 0 0 100 0 0 100 0.618 - 0/998 245/3375 69.4 69.6 196 213 221 639 1.41e+03 0 0 53 0 0 53 0.6 - 0/998 246/3375 69.5 69.7 196 213 221 640 1.41e+03 0 0 109 0 0 109 0.593 - 0/998 247/3375 69.5 69.6 196 213 221 639 1.41e+03 0 0 64 0 0 64 0.608 - 0/998 248/3375 69.3 69.5 196 212 221 638 1.41e+03 0 0 49 0 0 49 0.596 - 0/998 249/3375 69.3 69.5 196 212 220 638 1.4e+03 0 0 70 0 0 70 0.595 - 0/998 250/3375 69.4 69.5 196 212 220 638 1.41e+03 0 0 111 0 0 111 0.593 - 0/998 251/3375 69.5 69.6 196 212 221 639 1.41e+03 0 0 110 0 0 110 0.607 - 0/998 252/3375 69.3 69.4 195 212 220 637 1.4e+03 0 0 27 0 0 27 0.601 - 0/998 253/3375 69.3 69.5 195 211 220 636 1.4e+03 0 0 91 0 0 91 0.59 - 0/998 254/3375 69.2 69.4 195 211 220 636 1.4e+03 0 0 68 0 0 68 0.576 - 0/998 255/3375 69.3 69.5 195 211 220 636 1.4e+03 0 0 103 0 0 103 0.602 - 0/998 256/3375 69.4 69.5 195 211 220 636 1.4e+03 0 0 107 0 0 107 0.607 - 0/998 257/3375 69.4 69.5 195 210 219 635 1.4e+03 0 0 64 0 0 64 0.604 - 0/998 258/3375 69.2 69.4 195 210 219 635 1.4e+03 0 0 66 0 0 66 0.633 - 0/998 259/3375 69.2 69.4 195 210 219 634 1.4e+03 0 0 68 0 0 68 0.604 - 0/998 260/3375 69.2 69.3 194 210 219 634 1.4e+03 0 0 74 0 0 74 0.606 - 0/998 261/3375 69.2 69.3 194 210 219 634 1.4e+03 0 0 90 0 0 90 0.591 - 0/998 262/3375 69.3 69.4 194 210 219 634 1.4e+03 0 0 94 0 0 94 0.592 - 0/998 263/3375 69.4 69.5 194 210 219 634 1.4e+03 0 0 110 0 0 110 0.599 - 0/998 264/3375 69.3 69.4 194 210 218 633 1.39e+03 0 0 54 0 0 54 0.604 - 0/998 265/3375 69.3 69.4 194 210 218 633 1.39e+03 0 0 77 0 0 77 0.62 - 0/998 266/3375 69.4 69.5 194 210 218 633 1.39e+03 0 0 113 0 0 113 0.671 - 0/998 267/3375 69.3 69.5 194 209 218 633 1.39e+03 0 0 66 0 0 66 0.606 - 0/998 268/3375 69.2 69.4 194 209 218 632 1.39e+03 0 0 55 0 0 55 0.588 - 0/998 269/3375 69.2 69.4 193 209 218 631 1.39e+03 0 0 72 0 0 72 0.606 - 0/998 270/3375 69.1 69.3 193 208 217 631 1.39e+03 0 0 51 0 0 51 0.607 - 0/998 271/3375 69 69.2 193 208 217 630 1.39e+03 0 0 56 0 1 56 0.581 - 0/998 272/3375 68.9 69.1 192 207 216 629 1.38e+03 0 0 53 0 0 53 0.594 - 0/998 273/3375 68.9 69.1 192 208 216 629 1.38e+03 0 0 96 0 0 96 0.604 - 0/998 274/3375 68.9 69.1 192 207 216 628 1.38e+03 0 0 93 0 0 93 0.603 - 0/998 275/3375 68.8 69.1 192 207 216 627 1.38e+03 0 0 51 0 0 51 0.6 - 0/998 276/3375 68.8 69.1 192 207 216 627 1.38e+03 0 0 67 0 0 67 0.592 - 0/998 277/3375 68.7 69 191 207 215 626 1.38e+03 0 0 48 0 0 48 0.577 - 0/998 278/3375 68.7 69 191 206 215 626 1.38e+03 0 0 86 0 0 86 0.608 - 0/998 279/3375 68.7 68.9 191 206 215 626 1.38e+03 0 0 87 0 1 87 0.608 - 0/998 280/3375 68.6 68.9 191 206 215 625 1.37e+03 0 0 65 0 0 65 0.576 - 0/998 281/3375 68.7 69 191 206 215 625 1.37e+03 0 0 105 0 0 105 0.608 - 0/998 282/3375 68.7 69 191 206 215 625 1.37e+03 0 0 87 0 0 87 0.61 - 0/998 283/3375 68.7 69 191 206 215 624 1.37e+03 0 0 85 0 0 85 0.613 - 0/998 284/3375 68.7 69 191 205 215 624 1.37e+03 0 0 79 0 0 79 0.604 - 0/998 285/3375 68.8 69.1 191 205 215 625 1.37e+03 0 0 140 0 13 140 0.624 - 0/998 286/3375 68.8 69.1 191 205 215 625 1.37e+03 0 0 89 0 0 89 0.608 - 0/998 287/3375 68.8 69.1 190 205 215 626 1.37e+03 0 0 91 0 0 91 0.59 - 0/998 288/3375 68.8 69.1 190 205 215 625 1.37e+03 0 0 63 0 0 63 0.59 - 0/998 289/3375 68.8 69.2 190 205 215 626 1.37e+03 0 0 113 0 0 113 0.592 - 0/998 290/3375 68.8 69.2 190 204 215 626 1.37e+03 0 0 78 0 0 78 0.601 - 0/998 291/3375 68.8 69.3 190 204 214 625 1.37e+03 0 0 89 0 0 89 0.589 - 0/998 292/3375 68.7 69.3 190 204 214 625 1.37e+03 0 0 96 0 0 96 0.594 - 0/998 293/3375 68.7 69.2 190 204 214 624 1.37e+03 0 0 55 0 0 55 0.604 - 0/998 294/3375 68.6 69.1 189 203 214 623 1.37e+03 0 0 74 0 0 74 0.595 - 0/998 295/3375 68.7 69.2 190 203 214 623 1.37e+03 0 0 113 0 0 113 0.603 - 0/998 296/3375 68.7 69.2 190 203 214 623 1.37e+03 0 0 87 0 0 87 0.598 - 0/998 297/3375 68.7 69.3 189 203 214 623 1.37e+03 0 0 79 0 0 79 0.603 - 0/998 298/3375 68.7 69.2 189 203 213 623 1.37e+03 0 0 66 0 0 66 0.615 - 0/998 299/3375 68.7 69.2 189 203 213 623 1.37e+03 0 0 67 0 0 67 0.603 - 0/998 300/3375 68.7 69.2 189 203 213 623 1.37e+03 0 0 87 0 0 87 0.607 - 0/998 301/3375 68.7 69.2 189 203 213 623 1.37e+03 0 0 73 0 0 73 0.585 - 0/998 302/3375 68.6 69.2 189 202 213 622 1.36e+03 0 0 71 0 0 71 0.62 - 0/998 303/3375 68.6 69.2 189 203 213 623 1.36e+03 0 0 94 0 0 94 0.595 - 0/998 304/3375 68.7 69.2 189 202 213 622 1.36e+03 0 0 83 0 0 83 0.62 - 0/998 305/3375 68.6 69.1 188 202 212 621 1.36e+03 0 0 51 0 0 51 0.597 - 0/998 306/3375 68.6 69.1 188 202 212 622 1.36e+03 0 0 89 0 0 89 0.6 - 0/998 307/3375 68.6 69.1 188 202 212 622 1.36e+03 0 0 71 0 0 71 0.609 - 0/998 308/3375 68.7 69.2 188 202 212 622 1.36e+03 0 0 89 0 0 89 0.612 - 0/998 309/3375 68.6 69.1 188 202 212 621 1.36e+03 0 0 55 0 0 55 0.618 - 0/998 310/3375 68.6 69.1 188 202 212 621 1.36e+03 0 0 101 0 0 101 0.606 - 0/998 311/3375 68.6 69.1 188 201 212 621 1.36e+03 0 0 71 0 0 71 0.599 - 0/998 312/3375 68.5 69 188 201 211 620 1.36e+03 0 0 61 0 0 61 0.59 - 0/998 313/3375 68.6 69.2 188 202 212 621 1.36e+03 0 0 139 0 1 139 0.603 - 0/998 314/3375 68.7 69.2 188 202 211 621 1.36e+03 0 0 81 0 0 81 0.607 - 0/998 315/3375 68.7 69.2 188 202 212 621 1.36e+03 0 0 87 0 0 87 0.595 - 0/998 316/3375 68.7 69.2 188 201 211 621 1.36e+03 0 0 75 0 0 75 0.615 - 0/998 317/3375 68.6 69.2 187 201 211 620 1.36e+03 0 0 79 0 0 79 0.591 - 0/998 318/3375 68.6 69.1 187 201 211 620 1.36e+03 0 0 63 0 0 63 0.594 - 0/998 319/3375 68.6 69.2 187 201 211 620 1.36e+03 0 0 75 0 0 75 0.624 - 0/998 320/3375 68.5 69.1 187 200 211 619 1.35e+03 0 0 60 0 0 60 0.584 - 0/998 321/3375 68.5 69 187 200 211 619 1.35e+03 0 0 61 0 0 61 0.599 - 0/998 322/3375 68.6 69.1 187 200 211 620 1.36e+03 0 0 135 0 0 135 0.617 - 0/998 323/3375 68.7 69.2 187 200 211 620 1.36e+03 0 0 101 0 0 101 0.588 - 0/998 324/3375 68.7 69.2 187 200 211 620 1.36e+03 0 0 95 0 0 95 0.616 - 0/998 325/3375 68.7 69.3 187 200 211 620 1.36e+03 0 0 84 0 0 84 0.586 - 0/998 326/3375 68.7 69.3 187 200 211 620 1.35e+03 0 0 79 0 0 79 0.599 - 0/998 327/3375 68.7 69.2 186 199 210 620 1.35e+03 0 0 72 0 0 72 0.602 - 0/998 328/3375 68.6 69.2 186 199 210 619 1.35e+03 0 0 61 0 0 61 0.607 - 0/998 329/3375 68.7 69.2 186 199 210 619 1.35e+03 0 0 95 0 0 95 0.617 - 0/998 330/3375 68.7 69.2 186 199 210 620 1.35e+03 0 0 80 0 0 80 0.606 - 0/998 331/3375 68.6 69.2 186 198 210 619 1.35e+03 0 0 50 0 0 50 0.607 - 0/998 332/3375 68.7 69.2 186 198 210 619 1.35e+03 0 0 90 0 0 90 0.627 - 0/998 333/3375 68.6 69.1 186 198 209 619 1.35e+03 0 0 53 0 0 53 0.59 - 0/998 334/3375 68.5 69 185 198 209 618 1.35e+03 0 0 52 0 0 52 0.615 - 0/998 335/3375 68.4 69 185 197 209 617 1.35e+03 0 0 55 0 0 55 0.608 - 0/998 336/3375 68.4 68.9 185 197 209 617 1.34e+03 0 0 52 0 0 52 0.598 - 0/998 337/3375 68.4 68.8 185 197 208 616 1.34e+03 0 0 62 0 0 62 0.607 - 0/998 338/3375 68.3 68.8 184 197 208 615 1.34e+03 0 0 58 0 0 58 0.662 - 0/998 339/3375 68.3 68.8 185 197 208 615 1.34e+03 0 0 86 0 0 86 0.589 - 0/998 340/3375 68.5 68.9 185 197 208 616 1.34e+03 0 0 137 0 0 137 0.609 - 0/998 341/3375 68.5 69 185 196 208 616 1.34e+03 0 0 86 0 0 86 0.598 - 0/998 342/3375 68.5 69 185 197 208 616 1.34e+03 0 0 81 0 0 81 0.612 - 0/998 343/3375 68.6 69 185 196 208 616 1.34e+03 0 0 110 0 0 110 0.592 - 0/998 344/3375 68.5 68.9 184 196 208 616 1.34e+03 0 0 57 0 0 57 0.605 - 0/998 345/3375 68.5 68.8 184 196 208 615 1.34e+03 0 0 78 0 0 78 0.611 - 0/998 346/3375 68.5 68.9 184 196 208 615 1.34e+03 0 0 98 0 0 98 0.613 - 0/998 347/3375 68.5 68.8 184 195 208 615 1.34e+03 0 0 60 0 0 60 0.606 - 0/998 348/3375 68.4 68.7 184 195 207 614 1.34e+03 0 0 53 0 0 53 0.595 - 0/998 349/3375 68.4 68.7 184 195 207 614 1.34e+03 0 0 72 0 0 72 0.613 - 0/998 350/3375 68.4 68.7 184 195 207 613 1.34e+03 0 0 86 0 0 86 0.643 - 0/998 351/3375 68.4 68.7 184 195 207 614 1.34e+03 0 0 93 0 0 93 0.596 - 0/998 352/3375 68.5 68.8 184 195 207 614 1.34e+03 0 0 117 0 0 117 0.614 - 0/998 353/3375 68.5 68.8 183 195 207 613 1.34e+03 0 0 58 0 0 58 0.603 - 0/998 354/3375 68.4 68.7 183 195 207 613 1.33e+03 0 0 51 0 2 51 0.589 - 0/998 355/3375 68.3 68.5 183 195 206 612 1.33e+03 0 0 40 0 13 40 0.594 - 0/998 356/3375 68.3 68.6 183 195 206 612 1.33e+03 0 0 91 0 0 91 0.579 - 0/998 357/3375 68.4 68.6 183 195 206 612 1.33e+03 0 0 97 0 0 97 0.609 - 0/998 358/3375 68.4 68.6 183 194 206 612 1.33e+03 0 0 97 0 0 97 0.591 - 0/998 359/3375 68.5 68.7 183 195 206 612 1.33e+03 0 0 107 0 0 107 0.591 - 0/998 360/3375 68.5 68.8 183 195 206 613 1.33e+03 0 0 97 0 0 97 0.601 - 0/998 361/3375 68.5 68.7 183 194 206 612 1.33e+03 0 0 81 0 0 81 0.601 - 0/998 362/3375 68.5 68.7 183 194 206 612 1.33e+03 0 0 68 0 0 68 0.603 - 0/998 363/3375 68.5 68.7 183 194 206 612 1.33e+03 0 0 89 0 0 89 0.592 - 0/998 364/3375 68.6 68.7 183 194 206 611 1.33e+03 0 0 85 0 0 85 0.601 - 0/998 365/3375 68.5 68.7 183 194 206 611 1.33e+03 0 0 66 0 0 66 0.602 - 0/998 366/3375 68.6 68.7 183 194 206 611 1.33e+03 0 0 101 0 0 101 0.619 - 0/998 367/3375 68.5 68.7 182 194 205 611 1.33e+03 0 0 49 0 0 49 0.606 - 0/998 368/3375 68.5 68.7 182 193 205 610 1.33e+03 0 0 88 0 4 88 0.594 - 0/998 369/3375 68.5 68.7 182 193 205 610 1.33e+03 0 0 75 0 0 75 0.576 - 0/998 370/3375 68.5 68.7 182 193 205 610 1.33e+03 0 0 83 0 1 83 0.587 - 0/998 371/3375 68.5 68.6 182 193 205 609 1.33e+03 0 0 63 0 5 63 0.618 - 0/998 372/3375 68.4 68.6 182 193 205 609 1.32e+03 0 0 62 0 0 62 0.594 - 0/998 373/3375 68.4 68.6 182 192 205 609 1.32e+03 0 0 95 0 1 95 0.603 - 0/998 374/3375 68.6 68.8 182 193 205 609 1.33e+03 0 0 142 0 0 142 0.604 - 0/998 375/3375 68.5 68.8 182 193 205 609 1.33e+03 0 0 73 0 0 73 0.597 - 0/998 376/3375 68.5 68.7 182 192 205 609 1.32e+03 0 0 79 0 0 79 0.604 - 0/998 377/3375 68.6 68.8 182 192 205 610 1.33e+03 0 0 109 0 0 109 0.585 - 0/998 378/3375 68.5 68.7 182 192 204 609 1.32e+03 0 0 50 0 33 50 0.601 - 0/998 379/3375 68.5 68.7 182 192 204 609 1.32e+03 0 0 73 0 0 73 0.603 - 0/998 380/3375 68.5 68.7 181 192 204 609 1.32e+03 0 0 79 0 0 79 0.58 - 0/998 381/3375 68.6 68.7 181 192 204 609 1.32e+03 0 0 93 0 0 93 0.602 - 0/998 382/3375 68.5 68.7 181 192 204 608 1.32e+03 0 0 55 0 19 55 0.595 - 0/998 383/3375 68.5 68.7 181 192 204 609 1.32e+03 0 0 106 0 0 106 0.607 - 0/998 384/3375 68.5 68.6 181 191 204 608 1.32e+03 0 0 69 0 0 69 0.648 - 0/998 385/3375 68.4 68.6 181 191 204 608 1.32e+03 0 0 72 0 0 72 0.593 - 0/998 386/3375 68.5 68.7 181 191 204 608 1.32e+03 0 0 94 0 0 94 0.605 - 0/998 387/3375 68.4 68.6 181 191 204 607 1.32e+03 0 0 58 0 0 58 0.577 - 0/998 388/3375 68.5 68.7 181 191 204 608 1.32e+03 0 0 106 0 0 106 0.585 - 0/998 389/3375 68.5 68.6 181 191 203 608 1.32e+03 0 0 63 0 0 63 0.587 - 0/998 390/3375 68.4 68.6 181 191 203 607 1.32e+03 0 0 65 0 0 65 0.588 - 0/998 391/3375 68.4 68.6 181 191 203 607 1.32e+03 0 0 71 0 0 71 0.579 - 0/998 392/3375 68.4 68.5 180 190 203 607 1.32e+03 0 0 62 0 0 62 0.592 - 0/998 393/3375 68.4 68.5 180 190 203 607 1.32e+03 0 0 81 0 0 81 0.594 - 0/998 394/3375 68.4 68.5 180 190 203 606 1.32e+03 0 0 93 0 0 93 0.605 - 0/998 395/3375 68.4 68.6 180 190 203 606 1.32e+03 0 0 81 0 0 81 0.58 - 0/998 396/3375 68.4 68.6 180 190 203 606 1.32e+03 0 0 93 0 0 93 0.579 - 0/998 397/3375 68.4 68.6 180 190 203 606 1.32e+03 0 0 78 0 0 78 0.578 - 0/998 398/3375 68.4 68.6 180 190 203 606 1.32e+03 0 0 75 0 0 75 0.601 - 0/998 399/3375 68.3 68.5 180 190 202 606 1.31e+03 0 0 51 0 0 51 0.601 - 0/998 400/3375 68.3 68.5 180 190 202 606 1.31e+03 0 0 91 0 0 91 0.609 - 0/998 401/3375 68.3 68.5 180 190 202 605 1.31e+03 0 0 67 0 0 67 0.609 - 0/998 402/3375 68.3 68.5 180 189 202 605 1.31e+03 0 0 63 0 0 63 0.586 - 0/998 403/3375 68.2 68.4 179 189 202 604 1.31e+03 0 0 38 0 0 38 0.584 - 0/998 404/3375 68.3 68.5 179 189 202 605 1.31e+03 0 0 103 0 0 103 0.608 - 0/998 405/3375 68.2 68.5 179 189 202 604 1.31e+03 0 0 66 0 0 66 0.612 - 0/998 406/3375 68.3 68.6 179 189 202 605 1.31e+03 0 0 114 0 0 114 0.621 - 0/998 407/3375 68.3 68.6 179 189 202 605 1.31e+03 0 0 85 0 0 85 0.613 - 0/998 408/3375 68.3 68.6 179 189 202 605 1.31e+03 0 0 82 0 0 82 0.611 - 0/998 409/3375 68.3 68.5 179 189 201 605 1.31e+03 0 0 67 0 0 67 0.606 - 0/998 410/3375 68.3 68.6 179 189 201 605 1.31e+03 0 0 128 0 0 128 0.6 - 0/998 411/3375 68.3 68.7 179 189 201 605 1.31e+03 0 0 92 0 0 92 0.616 - 0/998 412/3375 68.3 68.6 179 189 201 605 1.31e+03 0 0 78 0 0 78 0.595 - 0/998 413/3375 68.3 68.7 179 189 201 605 1.31e+03 0 0 89 0 0 89 0.618 - 0/998 414/3375 68.4 68.8 179 189 201 605 1.31e+03 0 0 128 0 0 128 0.615 - 0/998 415/3375 68.5 68.8 179 189 201 605 1.31e+03 0 0 87 0 0 87 0.611 - 0/998 416/3375 68.5 68.8 179 188 201 605 1.31e+03 0 0 65 0 0 65 0.601 - 0/998 417/3375 68.6 68.9 179 188 201 606 1.31e+03 0 0 130 0 0 130 0.614 - 0/998 418/3375 68.5 68.9 179 188 201 605 1.31e+03 0 0 63 0 0 63 0.604 - 0/998 419/3375 68.5 68.9 179 188 201 605 1.31e+03 0 0 87 0 0 87 0.59 - 0/998 420/3375 68.5 68.9 179 188 201 605 1.31e+03 0 0 65 0 0 65 0.594 - 0/998 421/3375 68.6 68.9 179 188 201 605 1.31e+03 0 0 108 0 0 108 0.595 - 0/998 422/3375 68.6 68.9 179 188 201 605 1.31e+03 0 0 91 0 0 91 0.61 - 0/998 423/3375 68.6 68.9 179 188 201 605 1.31e+03 0 0 93 0 0 93 0.6 - 0/998 424/3375 68.7 69.1 179 188 201 606 1.31e+03 0 0 122 0 0 122 0.609 - 0/998 425/3375 68.7 69 179 188 201 606 1.31e+03 0 0 78 0 0 78 0.598 - 0/998 426/3375 68.7 69 179 188 201 606 1.31e+03 0 0 85 0 0 85 0.625 - 0/998 427/3375 68.8 69.1 179 188 201 607 1.31e+03 0 0 128 0 0 128 0.618 - 0/998 428/3375 68.9 69.2 179 188 201 607 1.31e+03 0 0 108 0 0 108 0.605 - 0/998 429/3375 68.9 69.1 179 188 201 607 1.31e+03 0 0 67 0 0 67 0.617 - 0/998 430/3375 68.9 69.2 179 188 201 607 1.31e+03 0 0 110 0 0 110 0.618 - 0/998 431/3375 68.9 69.2 179 188 201 607 1.31e+03 0 0 85 0 0 85 0.58 - 0/998 432/3375 69 69.2 179 188 201 607 1.31e+03 0 0 99 0 0 99 0.604 - 0/998 433/3375 69 69.2 179 188 201 607 1.31e+03 0 0 111 0 0 111 0.612 - 0/998 434/3375 69 69.2 179 188 201 607 1.31e+03 0 0 80 0 0 80 0.652 - 0/998 435/3375 69.1 69.3 179 188 201 608 1.31e+03 0 0 141 0 0 141 0.634 - 0/998 436/3375 69.1 69.3 179 188 201 608 1.31e+03 0 0 80 0 0 80 0.636 - 0/998 437/3375 69 69.3 179 188 201 607 1.31e+03 0 0 48 0 0 48 0.592 - 0/998 438/3375 69 69.2 179 188 201 607 1.31e+03 0 0 57 0 0 57 0.588 - 0/998 439/3375 69 69.2 179 188 201 607 1.31e+03 0 0 92 0 0 92 0.593 - 0/998 440/3375 68.9 69.2 178 188 201 606 1.31e+03 0 0 51 0 0 51 0.592 - 0/998 441/3375 69 69.3 178 188 201 606 1.31e+03 0 0 138 0 0 138 0.599 - 0/998 442/3375 69 69.2 178 187 201 606 1.31e+03 0 0 61 0 0 61 0.589 - 0/998 443/3375 69 69.3 178 187 201 606 1.31e+03 0 0 85 0 0 85 0.626 - 0/998 444/3375 69 69.3 178 187 200 606 1.31e+03 0 0 69 0 0 69 0.6 - 0/998 445/3375 68.9 69.2 178 187 200 605 1.31e+03 0 0 49 0 0 49 0.63 - 0/998 446/3375 69 69.3 178 187 200 606 1.31e+03 0 0 108 0 0 108 0.61 - 0/998 447/3375 68.9 69.2 178 187 200 605 1.31e+03 0 0 82 0 0 82 0.604 - 0/998 448/3375 68.9 69.2 178 187 200 605 1.31e+03 0 0 58 0 0 58 0.599 - 0/998 449/3375 68.9 69.2 178 187 200 605 1.31e+03 0 0 83 0 0 83 0.599 - 0/998 450/3375 68.9 69.2 178 186 200 605 1.31e+03 0 0 81 0 0 81 0.627 - 0/998 451/3375 68.9 69.2 178 186 200 605 1.31e+03 0 0 96 0 0 96 0.589 - 0/998 452/3375 68.9 69.2 178 186 200 605 1.31e+03 0 0 98 0 0 98 0.594 - 0/998 453/3375 69 69.3 178 186 200 605 1.31e+03 0 0 116 0 0 116 0.603 - 0/998 454/3375 68.9 69.2 178 186 200 605 1.31e+03 0 0 65 0 0 65 0.596 - 0/998 455/3375 69 69.3 178 186 200 605 1.31e+03 0 0 96 0 0 96 0.593 - 0/998 456/3375 69 69.2 178 186 200 605 1.31e+03 0 0 89 0 3 89 0.608 - 0/998 457/3375 69 69.2 177 186 200 604 1.31e+03 0 0 79 0 0 79 0.594 - 0/998 458/3375 69 69.2 177 186 200 604 1.31e+03 0 0 88 0 0 88 0.602 - 0/998 459/3375 69 69.2 177 186 199 604 1.3e+03 0 0 61 0 0 61 0.579 - 0/998 460/3375 69 69.2 177 186 199 604 1.3e+03 0 0 104 0 0 104 0.603 - 0/998 461/3375 68.9 69.1 177 185 199 603 1.3e+03 0 0 46 0 0 46 0.586 - 0/998 462/3375 68.9 69.1 177 185 199 603 1.3e+03 0 0 53 0 0 53 0.578 - 0/998 463/3375 68.8 69 177 185 199 602 1.3e+03 0 0 55 0 0 55 0.585 - 0/998 464/3375 68.8 69 177 185 199 602 1.3e+03 0 0 81 0 0 81 0.593 - 0/998 465/3375 68.7 69 177 185 199 602 1.3e+03 0 0 77 0 0 77 0.578 - 0/998 466/3375 68.7 69 177 185 199 602 1.3e+03 0 0 93 0 0 93 0.595 - 0/998 467/3375 68.7 68.9 176 185 198 601 1.3e+03 0 0 37 0 0 37 0.596 - 0/998 468/3375 68.7 68.9 176 185 198 601 1.3e+03 0 0 96 0 0 96 0.596 - 0/998 469/3375 68.6 68.9 176 184 198 601 1.3e+03 0 0 58 0 0 58 0.598 - 0/998 470/3375 68.6 68.9 176 184 198 600 1.3e+03 0 0 82 0 0 82 0.589 - 0/998 471/3375 68.6 68.9 176 184 198 600 1.3e+03 0 0 66 0 2 66 0.611 - 0/998 472/3375 68.6 68.9 176 184 198 600 1.3e+03 0 0 79 0 0 79 0.605 - 0/998 473/3375 68.6 68.8 176 184 198 600 1.29e+03 0 0 59 0 0 59 0.597 - 0/998 474/3375 68.5 68.8 176 184 198 599 1.29e+03 0 0 70 0 0 70 0.597 - 0/998 475/3375 68.5 68.8 176 184 198 599 1.29e+03 0 0 84 0 0 84 0.587 - 0/998 476/3375 68.5 68.8 175 184 197 599 1.29e+03 0 0 45 0 0 45 0.601 - 0/998 477/3375 68.4 68.7 175 183 197 598 1.29e+03 0 0 58 0 0 58 0.598 - 0/998 478/3375 68.5 68.8 175 183 197 598 1.29e+03 0 0 89 0 0 89 0.591 - 0/998 479/3375 68.6 68.9 175 184 197 599 1.29e+03 0 0 152 0 0 152 0.606 - 0/998 480/3375 68.6 68.9 175 184 197 599 1.29e+03 0 0 103 0 0 103 0.591 - 0/998 481/3375 68.6 68.9 175 184 197 599 1.29e+03 0 0 85 0 0 85 0.582 - 0/998 482/3375 68.6 68.9 175 183 197 599 1.29e+03 0 0 67 0 0 67 0.593 - 0/998 483/3375 68.6 68.9 175 183 197 598 1.29e+03 0 0 82 0 0 82 0.585 - 0/998 484/3375 68.6 68.8 175 183 197 598 1.29e+03 0 0 69 0 0 69 0.593 - 0/998 485/3375 68.5 68.8 175 183 197 598 1.29e+03 0 0 52 0 0 52 0.601 - 0/998 486/3375 68.6 68.9 175 183 197 599 1.29e+03 0 0 154 0 0 154 0.614 - 0/998 487/3375 68.6 68.9 175 183 197 598 1.29e+03 0 0 66 0 0 66 0.585 - 0/998 488/3375 68.6 68.9 175 183 197 598 1.29e+03 0 0 74 0 0 74 0.59 - 0/998 489/3375 68.5 68.8 175 183 196 597 1.29e+03 0 0 43 0 0 43 0.582 - 0/998 490/3375 68.5 68.7 175 183 196 597 1.29e+03 0 0 59 0 0 59 0.595 - 0/998 491/3375 68.6 68.8 175 183 196 597 1.29e+03 0 0 135 0 0 135 0.602 - 0/998 492/3375 68.6 68.8 175 183 196 597 1.29e+03 0 0 84 0 0 84 0.58 - 0/998 493/3375 68.6 68.9 175 183 196 597 1.29e+03 0 0 100 0 0 100 0.589 - 0/998 494/3375 68.6 68.8 175 183 196 597 1.29e+03 0 0 72 0 0 72 0.603 - 0/998 495/3375 68.7 68.8 175 183 196 597 1.29e+03 0 0 93 0 0 93 0.599 - 0/998 496/3375 68.6 68.8 174 182 196 596 1.29e+03 0 0 55 0 0 55 0.566 - 0/998 497/3375 68.6 68.8 174 182 196 596 1.29e+03 0 0 90 0 0 90 0.586 - 0/998 498/3375 68.6 68.8 174 182 196 596 1.29e+03 0 0 86 0 0 86 0.61 - 0/998 499/3375 68.7 68.9 174 182 196 596 1.29e+03 0 0 111 0 0 111 0.609 - 0/998 500/3375 68.6 68.8 174 182 196 596 1.29e+03 0 0 49 0 5 49 0.592 - 0/998 501/3375 68.6 68.8 174 182 196 596 1.29e+03 0 0 87 0 0 87 0.596 - 0/998 502/3375 68.7 68.9 174 182 196 596 1.29e+03 0 0 111 0 0 111 0.6 - 0/998 503/3375 68.7 68.9 174 182 196 596 1.29e+03 0 0 83 0 0 83 0.592 - 0/998 504/3375 68.7 68.9 174 182 196 596 1.29e+03 0 0 77 0 0 77 0.592 - 0/998 505/3375 68.7 68.9 174 182 196 596 1.28e+03 0 0 88 0 0 88 0.593 - 0/998 506/3375 68.8 68.9 174 182 196 596 1.29e+03 0 0 119 0 0 119 0.608 - 0/998 507/3375 68.7 68.9 174 182 196 596 1.28e+03 0 0 67 0 0 67 0.587 - 0/998 508/3375 68.7 68.9 174 182 195 596 1.28e+03 0 0 69 0 0 69 0.581 - 0/998 509/3375 68.7 68.9 174 182 195 596 1.28e+03 0 0 70 0 0 70 0.599 - 0/998 510/3375 68.7 68.9 174 181 195 596 1.28e+03 0 0 87 0 0 87 0.598 - 0/998 511/3375 68.7 68.9 174 182 195 596 1.28e+03 0 0 94 0 0 94 0.602 - 0/998 512/3375 68.7 68.9 174 181 195 596 1.28e+03 0 0 71 0 0 71 0.587 - 0/998 513/3375 68.8 69 174 181 195 596 1.28e+03 0 0 94 0 0 94 0.602 - 0/998 514/3375 68.7 68.9 174 181 195 595 1.28e+03 0 0 64 0 0 64 0.589 - 0/998 515/3375 68.8 69 174 181 195 596 1.28e+03 0 0 120 0 0 120 0.601 - 0/998 516/3375 68.8 69 174 181 195 596 1.28e+03 0 0 73 0 0 73 0.608 - 0/998 517/3375 68.8 68.9 174 181 195 595 1.28e+03 0 0 59 0 0 59 0.592 - 0/998 518/3375 68.8 68.9 174 181 195 595 1.28e+03 0 0 76 0 0 76 0.6 - 0/998 519/3375 68.9 69 174 181 195 596 1.28e+03 0 0 143 0 0 143 0.6 - 0/998 520/3375 68.9 69 174 181 195 596 1.28e+03 0 0 66 0 0 66 0.589 - 0/998 521/3375 68.9 68.9 174 181 195 595 1.28e+03 0 0 52 0 0 52 0.59 - 0/998 522/3375 68.8 68.9 173 181 195 595 1.28e+03 0 0 33 0 0 33 0.6 - 0/998 523/3375 68.7 68.8 173 180 194 595 1.28e+03 0 0 56 0 0 56 0.591 - 0/998 524/3375 68.8 68.9 173 180 194 595 1.28e+03 0 0 99 0 0 99 0.597 - 0/998 525/3375 68.8 68.9 173 180 194 595 1.28e+03 0 0 88 0 0 88 0.611 - 0/998 526/3375 68.8 68.9 173 180 194 595 1.28e+03 0 0 88 0 0 88 0.611 - 0/998 527/3375 68.8 68.9 173 180 194 595 1.28e+03 0 0 100 0 0 100 0.594 - 0/998 528/3375 68.8 68.9 173 180 194 595 1.28e+03 0 0 85 0 0 85 0.586 - 0/998 529/3375 68.8 68.9 173 180 194 595 1.28e+03 0 0 101 0 0 101 0.589 - 0/998 530/3375 68.9 69 173 180 194 596 1.28e+03 0 0 124 0 0 124 0.595 - 0/998 531/3375 68.9 69 173 180 194 596 1.28e+03 0 0 74 0 0 74 0.592 - 0/998 532/3375 68.8 69 173 180 194 596 1.28e+03 0 0 67 0 0 67 0.606 - 0/998 533/3375 68.8 68.9 173 180 194 595 1.28e+03 0 0 55 0 0 55 0.593 - 0/998 534/3375 68.8 69 173 180 194 596 1.28e+03 0 0 99 0 0 99 0.59 - 0/998 535/3375 68.8 68.9 173 180 194 595 1.28e+03 0 0 37 0 0 37 0.607 - 0/998 536/3375 68.8 68.9 173 180 194 595 1.28e+03 0 0 85 0 0 85 0.577 - 0/998 537/3375 68.8 68.9 173 180 194 595 1.28e+03 0 0 94 0 0 94 0.594 - 0/998 538/3375 68.8 69 173 179 194 595 1.28e+03 0 0 90 0 0 90 0.593 - 0/998 539/3375 68.8 68.9 173 179 194 595 1.28e+03 0 0 54 0 0 54 0.593 - 0/998 540/3375 68.8 68.9 173 179 194 595 1.28e+03 0 0 91 0 0 91 0.597 - 0/998 541/3375 68.8 69 173 179 194 595 1.28e+03 0 0 91 0 0 91 0.583 - 0/998 542/3375 68.8 69 173 179 194 595 1.28e+03 0 0 85 0 0 85 0.582 - 0/998 543/3375 68.8 68.9 172 179 194 595 1.28e+03 0 0 75 0 0 75 0.59 - 0/998 544/3375 68.9 69 173 179 194 595 1.28e+03 0 0 109 0 0 109 0.609 - 0/998 545/3375 68.9 69 173 179 194 595 1.28e+03 0 0 99 0 0 99 0.588 - 0/998 546/3375 68.9 69 173 179 194 595 1.28e+03 0 0 96 0 0 96 0.599 - 0/998 547/3375 68.9 69 172 179 193 595 1.28e+03 0 0 81 0 0 81 0.612 - 0/998 548/3375 68.9 68.9 172 179 193 595 1.28e+03 0 0 58 0 0 58 0.581 - 0/998 549/3375 68.9 68.9 172 179 193 594 1.28e+03 0 0 73 0 0 73 0.594 - 0/998 550/3375 68.8 68.9 172 179 193 594 1.28e+03 0 0 75 0 3 75 0.606 - 0/998 551/3375 68.9 69 172 179 193 594 1.28e+03 0 0 89 0 0 89 0.6 - 0/998 552/3375 68.9 69 172 179 193 594 1.28e+03 0 0 91 0 1 91 0.597 - 0/998 553/3375 68.9 69 172 179 193 594 1.28e+03 0 0 83 0 0 83 0.599 - 0/998 554/3375 68.9 69 172 179 193 595 1.28e+03 0 0 94 0 0 94 0.607 - 0/998 555/3375 68.9 68.9 172 178 193 594 1.27e+03 0 0 62 0 0 62 0.581 - 0/998 556/3375 68.8 68.9 172 178 193 594 1.27e+03 0 0 56 0 0 56 0.568 - 0/998 557/3375 68.8 68.9 172 178 193 593 1.27e+03 0 0 65 0 7 65 0.581 - 0/998 558/3375 68.8 68.9 172 178 193 594 1.27e+03 0 0 108 0 0 108 0.602 - 0/998 559/3375 68.8 68.9 172 178 193 593 1.27e+03 0 0 69 0 0 69 0.586 - 0/998 560/3375 68.8 68.8 171 178 192 593 1.27e+03 0 0 48 0 3 48 0.587 - 0/998 561/3375 68.8 68.8 171 178 192 593 1.27e+03 0 0 100 0 0 100 0.6 - 0/998 562/3375 68.7 68.8 171 178 192 593 1.27e+03 0 0 39 0 5 39 0.584 - 0/998 563/3375 68.7 68.8 171 178 192 593 1.27e+03 0 0 65 0 2 65 0.602 - 0/998 564/3375 68.7 68.8 171 177 192 592 1.27e+03 0 0 83 0 0 83 0.604 - 0/998 565/3375 68.7 68.8 171 177 192 593 1.27e+03 0 0 92 0 0 92 0.592 - 0/998 566/3375 68.7 68.8 171 177 192 593 1.27e+03 0 0 66 0 0 66 0.604 - 0/998 567/3375 68.8 68.8 171 177 192 593 1.27e+03 0 0 99 0 0 99 0.572 - 0/998 568/3375 68.9 68.9 171 177 192 593 1.27e+03 0 0 134 0 0 134 0.596 - 0/998 569/3375 68.8 68.8 171 177 192 593 1.27e+03 0 0 37 0 0 37 0.59 - 0/998 570/3375 68.8 68.8 171 177 192 592 1.27e+03 0 0 70 0 0 70 0.581 - 0/998 571/3375 68.8 68.8 171 177 192 592 1.27e+03 0 0 62 0 0 62 0.572 - 0/998 572/3375 68.8 68.8 171 177 192 592 1.27e+03 0 0 104 0 0 104 0.603 - 0/998 573/3375 68.8 68.9 171 177 192 593 1.27e+03 0.000478 8.8e-07 109 1 5 108 0.6 - 0/998 574/3375 68.9 68.9 171 177 192 593 1.27e+03 0.000478 8.78e-07 130 0 0 130 0.616 - 0/998 575/3375 68.9 68.9 171 177 192 593 1.27e+03 0.000478 8.77e-07 58 0 0 58 0.593 - 0/998 576/3375 68.9 69 171 177 192 593 1.27e+03 0.000478 8.74e-07 118 0 0 118 0.594 - 0/998 577/3375 68.9 68.9 171 177 192 593 1.27e+03 0.000478 8.74e-07 67 0 0 67 0.589 - 0/998 578/3375 68.9 68.9 171 177 191 593 1.27e+03 0.000478 8.72e-07 64 0 0 64 0.595 - 0/998 579/3375 68.8 68.9 171 177 191 592 1.27e+03 0.000478 8.72e-07 49 0 0 49 0.581 - 0/998 580/3375 68.8 68.9 170 176 191 592 1.27e+03 0.000471 8.71e-07 58 0 3 58 0.585 - 0/998 581/3375 68.8 68.8 170 176 191 592 1.27e+03 0.000471 8.69e-07 89 0 0 89 0.588 - 0/998 582/3375 68.8 68.9 170 176 191 592 1.27e+03 0.000471 8.67e-07 99 0 0 99 0.602 - 0/998 583/3375 68.8 68.9 170 176 191 592 1.27e+03 0.000471 8.66e-07 93 0 0 93 0.591 - 0/998 584/3375 68.9 69 170 177 191 592 1.27e+03 0.000471 8.63e-07 119 0 0 119 0.581 - 0/998 585/3375 68.9 69 170 176 191 592 1.27e+03 0.000471 8.6e-07 102 0 0 102 0.602 - 0/998 586/3375 68.9 68.9 170 176 191 592 1.27e+03 0.000471 8.59e-07 68 0 0 68 0.617 - 0/998 587/3375 68.9 68.9 170 176 191 592 1.27e+03 0.000471 8.59e-07 66 0 0 66 0.564 - 0/998 588/3375 68.8 68.9 170 176 191 592 1.27e+03 0.000471 8.57e-07 74 0 0 74 0.595 - 0/998 589/3375 68.8 68.9 170 176 191 591 1.27e+03 0.000471 8.54e-07 84 0 0 84 0.587 - 0/998 590/3375 68.7 68.8 170 176 191 591 1.26e+03 0.000471 8.53e-07 38 0 0 38 0.577 - 0/998 591/3375 68.8 68.9 170 176 191 591 1.26e+03 0.000471 8.51e-07 116 0 0 116 0.592 - 0/998 592/3375 68.7 68.8 170 176 190 591 1.26e+03 0.000471 8.5e-07 73 0 0 73 0.596 - 0/998 593/3375 68.8 68.9 170 176 191 591 1.26e+03 0.000469 8.5e-07 117 0 1 117 0.591 - 0/998 594/3375 68.8 68.9 170 176 191 591 1.27e+03 0.000464 8.46e-07 136 0 2 136 0.584 - 0/998 595/3375 68.9 69 170 176 191 591 1.27e+03 0.000461 8.44e-07 112 0 1 112 0.595 - 0/998 596/3375 68.8 68.9 170 176 190 591 1.26e+03 0.000455 8.44e-07 29 0 3 29 0.595 - 0/998 597/3375 68.8 68.9 170 176 190 591 1.26e+03 0.000455 8.41e-07 114 0 0 114 0.587 - 0/998 598/3375 68.8 68.9 170 176 190 591 1.26e+03 0.000739 1.68e-06 92 1 48 88 0.598 - 0/998 599/3375 68.8 68.9 170 176 190 590 1.26e+03 0.000736 1.68e-06 54 0 1 54 0.594 - 0/998 600/3375 68.8 68.9 170 176 190 590 1.26e+03 0.000736 1.67e-06 78 0 0 78 0.592 - 0/998 601/3375 68.8 68.9 170 176 190 590 1.26e+03 0.000733 1.67e-06 81 0 1 81 0.582 - 0/998 602/3375 68.8 68.9 170 176 190 590 1.26e+03 0.000733 1.67e-06 84 0 0 84 0.59 - 0/998 603/3375 68.8 68.9 169 176 190 590 1.26e+03 0.000733 1.67e-06 83 0 0 83 0.611 - 0/998 604/3375 68.8 68.9 170 176 190 591 1.26e+03 0.000733 1.67e-06 101 0 0 101 0.593 - 0/998 605/3375 68.8 68.9 169 176 190 591 1.26e+03 0.000724 1.66e-06 70 0 3 70 0.585 - 0/998 606/3375 68.8 68.9 169 176 190 591 1.26e+03 0.000724 1.66e-06 65 0 0 65 0.588 - 0/998 607/3375 68.8 68.9 169 176 190 591 1.26e+03 0.000724 1.66e-06 96 0 0 96 0.599 - 0/998 608/3375 68.8 68.9 169 176 190 591 1.26e+03 0.000724 1.66e-06 97 0 0 97 0.606 - 0/998 609/3375 68.9 68.9 169 176 190 591 1.26e+03 0.000724 1.66e-06 102 0 0 102 0.598 - 0/998 610/3375 68.9 68.9 169 175 190 591 1.26e+03 0.000724 1.65e-06 69 0 0 69 0.59 - 0/998 611/3375 68.9 69 169 176 190 591 1.26e+03 0.000724 1.65e-06 123 0 0 123 0.599 - 0/998 612/3375 69 69 170 176 190 591 1.26e+03 0.000724 1.64e-06 124 0 0 124 0.595 - 0/998 613/3375 69 69.1 170 176 190 591 1.26e+03 0.000724 1.64e-06 94 0 0 94 0.583 - 0/998 614/3375 69 69.1 170 176 190 591 1.26e+03 0.000724 1.64e-06 98 0 0 98 0.585 - 0/998 615/3375 69.1 69.1 170 176 190 592 1.27e+03 0.000724 1.63e-06 132 0 0 132 0.596 - 0/998 616/3375 69.2 69.2 170 176 190 592 1.27e+03 0.000724 1.63e-06 160 0 0 160 0.601 - 0/998 617/3375 69.2 69.2 170 176 190 593 1.27e+03 0.000724 1.63e-06 92 0 0 92 0.599 - 0/998 618/3375 69.2 69.2 170 176 190 593 1.27e+03 0.000724 1.62e-06 88 0 0 88 0.593 - 0/998 619/3375 69.2 69.2 170 176 190 592 1.27e+03 0.000724 1.62e-06 81 0 0 81 0.599 - 0/998 620/3375 69.2 69.2 170 176 190 592 1.27e+03 0.000724 1.62e-06 84 0 0 84 0.587 - 0/998 621/3375 69.2 69.2 170 176 190 592 1.27e+03 0.000724 1.62e-06 38 0 0 38 0.581 - 0/998 622/3375 69.2 69.2 170 176 190 592 1.27e+03 0.000724 1.61e-06 110 0 0 110 0.601 - 0/998 623/3375 69.2 69.3 170 176 190 592 1.27e+03 0.000724 1.61e-06 129 0 0 129 0.585 - 0/998 624/3375 69.2 69.2 170 176 190 592 1.27e+03 0.000724 1.61e-06 43 0 0 43 0.582 - 0/998 625/3375 69.2 69.2 170 176 190 592 1.27e+03 0.000724 1.61e-06 72 0 0 72 0.596 - 0/998 626/3375 69.2 69.2 170 175 190 591 1.26e+03 0.000724 1.6e-06 67 0 0 67 0.597 - 0/998 627/3375 69.1 69.1 170 175 190 591 1.26e+03 0.000724 1.6e-06 59 0 0 59 0.596 - 0/998 628/3375 69.1 69.1 169 175 190 591 1.26e+03 0.000724 1.6e-06 56 0 0 56 0.583 - 0/998 629/3375 69.1 69.1 169 175 189 591 1.26e+03 0.000724 1.6e-06 72 0 0 72 0.587 - 0/998 630/3375 69.1 69 169 175 189 591 1.26e+03 0.000724 1.6e-06 56 0 0 56 0.585 - 0/998 631/3375 69.1 69.1 169 175 189 591 1.26e+03 0.000724 1.6e-06 131 0 0 131 0.6 - 0/998 632/3375 69.1 69.1 169 175 189 591 1.26e+03 0.000724 1.6e-06 70 0 0 70 0.58 - 0/998 633/3375 69.1 69 169 175 189 591 1.26e+03 0.000724 1.59e-06 58 0 0 58 0.584 - 0/998 634/3375 69 69 169 175 189 591 1.26e+03 0.000724 1.59e-06 75 0 0 75 0.58 - 0/998 635/3375 69 69 169 175 189 591 1.26e+03 0.000724 1.59e-06 68 0 0 68 0.595 - 0/998 636/3375 69.1 69.1 169 175 189 591 1.26e+03 0.000724 1.59e-06 103 0 0 103 0.605 - 0/998 637/3375 69 69 169 175 189 591 1.26e+03 0.000724 1.59e-06 70 0 0 70 0.589 - 0/998 638/3375 69 69.1 169 175 189 590 1.26e+03 0.000724 1.58e-06 88 0 0 88 0.589 - 0/998 639/3375 69 69 169 174 189 590 1.26e+03 0.000724 1.58e-06 45 0 0 45 0.591 - 0/998 640/3375 69 69 168 174 189 590 1.26e+03 0.000724 1.58e-06 50 0 0 50 0.589 - 0/998 641/3375 69 69 168 174 189 590 1.26e+03 0.000724 1.58e-06 97 0 0 97 0.579 - 0/998 642/3375 69 69 168 174 189 590 1.26e+03 0.000724 1.58e-06 70 0 0 70 0.618 - 0/998 643/3375 69 69 168 174 189 590 1.26e+03 0.000724 1.57e-06 78 0 0 78 0.596 - 0/998 644/3375 69 69 168 174 189 590 1.26e+03 0.000724 1.57e-06 95 0 0 95 0.586 - 0/998 645/3375 69 69 168 174 189 590 1.26e+03 0.000724 1.57e-06 82 0 0 82 0.605 - 0/998 646/3375 69 69 168 174 188 590 1.26e+03 0.000724 1.57e-06 72 0 0 72 0.604 - 0/998 647/3375 69 69 168 174 188 590 1.26e+03 0.000686 1.56e-06 83 0 24 83 0.604 - 0/998 648/3375 69 69 168 174 188 590 1.26e+03 0.000686 1.56e-06 90 0 0 90 0.603 - 0/998 649/3375 69.1 69.1 168 174 189 590 1.26e+03 0.000686 1.56e-06 134 0 8 134 0.602 - 0/998 650/3375 69 69.1 168 174 188 590 1.26e+03 0.000686 1.56e-06 72 0 0 72 0.603 - 0/998 651/3375 69 69 168 174 188 590 1.26e+03 0.000686 1.56e-06 48 0 0 48 0.587 - 0/998 652/3375 69 69 168 174 188 590 1.26e+03 0.000686 1.55e-06 75 0 0 75 0.583 - 0/998 653/3375 69 69 168 174 188 590 1.26e+03 0.000686 1.55e-06 79 0 0 79 0.592 - 0/998 654/3375 69 69 168 174 188 590 1.26e+03 0.000686 1.55e-06 84 0 0 84 0.589 - 0/998 655/3375 69 69.1 168 174 188 590 1.26e+03 0.000686 1.55e-06 96 0 0 96 0.599 - 0/998 656/3375 69 69.1 168 174 188 590 1.26e+03 0.000686 1.55e-06 94 0 0 94 0.599 - 0/998 657/3375 69.1 69.1 168 174 188 590 1.26e+03 0.000686 1.54e-06 137 0 0 137 0.609 - 0/998 658/3375 69.1 69.1 168 174 188 590 1.26e+03 0.000686 1.54e-06 81 0 0 81 0.604 - 0/998 659/3375 69.1 69.2 168 174 188 590 1.26e+03 0.000686 1.53e-06 92 0 0 92 0.6 - 0/998 660/3375 69.1 69.2 168 174 188 590 1.26e+03 0.000686 1.53e-06 88 0 0 88 0.603 - 0/998 661/3375 69.1 69.2 168 174 188 590 1.26e+03 0.000686 1.53e-06 73 0 0 73 0.599 - 0/998 662/3375 69.1 69.2 168 174 188 590 1.26e+03 0.000686 1.53e-06 86 0 0 86 0.586 - 0/998 663/3375 69.1 69.1 168 174 188 590 1.26e+03 0.000681 1.53e-06 60 0 2 60 0.608 - 0/998 664/3375 69.1 69.2 168 174 188 590 1.26e+03 0.000681 1.52e-06 127 0 0 127 0.677 - 0/998 665/3375 69.1 69.2 168 174 188 590 1.26e+03 0.000681 1.52e-06 73 0 0 73 0.594 - 0/998 666/3375 69.1 69.1 168 174 188 590 1.26e+03 0.000681 1.52e-06 72 0 0 72 0.589 - 0/998 667/3375 69 69.1 168 174 188 589 1.26e+03 0.000681 1.51e-06 54 0 0 54 0.585 - 0/998 668/3375 69.1 69.2 168 174 188 590 1.26e+03 0.000681 1.51e-06 131 0 0 131 0.604 - 0/998 669/3375 69.1 69.1 168 174 188 590 1.26e+03 0.000681 1.51e-06 79 0 0 79 0.609 - 0/998 670/3375 69.2 69.2 168 174 188 590 1.26e+03 0.000681 1.5e-06 160 0 0 160 0.584 - 0/998 671/3375 69.3 69.3 168 174 188 591 1.26e+03 0.000681 1.5e-06 150 0 0 150 0.615 - 0/998 672/3375 69.3 69.3 168 174 188 591 1.26e+03 0.000681 1.5e-06 70 0 0 70 0.606 - 0/998 673/3375 69.3 69.3 168 174 188 590 1.26e+03 0.000681 1.5e-06 56 0 0 56 0.592 - 0/998 674/3375 69.3 69.3 168 174 188 590 1.26e+03 0.000681 1.5e-06 56 0 0 56 0.588 - 0/998 675/3375 69.2 69.3 168 174 188 590 1.26e+03 0.000681 1.49e-06 61 0 0 61 0.605 - 0/998 676/3375 69.2 69.3 168 174 188 590 1.26e+03 0.000681 1.49e-06 86 0 0 86 0.599 - 0/998 677/3375 69.2 69.3 168 174 188 590 1.26e+03 0.000681 1.49e-06 87 0 0 87 0.592 - 0/998 678/3375 69.2 69.2 168 174 187 589 1.26e+03 0.000681 1.49e-06 38 0 3 38 0.582 - 0/998 679/3375 69.2 69.2 168 174 187 589 1.26e+03 0.000681 1.48e-06 97 0 0 97 0.588 - 0/998 680/3375 69.2 69.2 168 173 187 589 1.26e+03 0.000681 1.48e-06 100 0 0 100 0.604 - 0/998 681/3375 69.2 69.2 168 173 187 589 1.26e+03 0.000681 1.48e-06 76 0 0 76 0.578 - 0/998 682/3375 69.2 69.2 168 173 187 589 1.26e+03 0.000681 1.48e-06 85 0 0 85 0.583 - 0/998 683/3375 69.3 69.3 168 173 187 590 1.26e+03 0.000676 1.47e-06 120 0 2 120 0.606 - 0/998 684/3375 69.3 69.3 168 174 187 590 1.26e+03 0.000676 1.47e-06 114 0 0 114 0.599 - 0/998 685/3375 69.3 69.2 168 173 187 590 1.26e+03 0.000676 1.47e-06 43 0 0 43 0.593 - 0/998 686/3375 69.2 69.2 168 173 187 589 1.26e+03 0.000676 1.47e-06 62 0 0 62 0.588 - 0/998 687/3375 69.3 69.2 168 173 187 590 1.26e+03 0.000676 1.46e-06 101 0 0 101 0.63 - 0/998 688/3375 69.3 69.2 168 173 187 590 1.26e+03 0.000676 1.46e-06 78 0 0 78 0.595 - 0/998 689/3375 69.2 69.2 168 173 187 589 1.26e+03 0.000676 1.46e-06 58 0 0 58 0.597 - 0/998 690/3375 69.2 69.1 167 173 187 589 1.25e+03 0.000676 1.46e-06 53 0 0 53 0.612 - 0/998 691/3375 69.2 69.2 168 173 187 589 1.26e+03 0.000676 1.46e-06 116 0 0 116 0.609 - 0/998 692/3375 69.2 69.2 168 173 187 590 1.26e+03 0.000676 1.46e-06 88 0 0 88 0.589 - 0/998 693/3375 69.2 69.1 167 173 187 589 1.25e+03 0.000676 1.45e-06 51 0 0 51 0.598 - 0/998 694/3375 69.1 69.1 167 173 187 589 1.25e+03 0.000676 1.45e-06 57 0 0 57 0.576 - 0/998 695/3375 69.2 69.1 167 173 187 589 1.25e+03 0.000676 1.45e-06 97 0 0 97 0.594 - 0/998 696/3375 69.1 69.1 167 173 187 589 1.25e+03 0.000676 1.45e-06 67 0 0 67 0.582 - 0/998 697/3375 69.1 69.1 167 173 187 588 1.25e+03 0.000676 1.44e-06 93 0 0 93 0.599 - 0/998 698/3375 69.1 69 167 172 186 588 1.25e+03 0.000676 1.44e-06 61 0 0 61 0.595 - 0/998 699/3375 69.1 69 167 172 186 588 1.25e+03 0.000676 1.44e-06 59 0 0 59 0.584 - 0/998 700/3375 69.1 69 167 172 186 588 1.25e+03 0.000676 1.44e-06 87 0 0 87 0.58 - 0/998 701/3375 69.1 69 167 172 186 588 1.25e+03 0.000676 1.44e-06 62 0 0 62 0.592 - 0/998 702/3375 69.1 69 167 172 186 588 1.25e+03 0.000676 1.44e-06 95 0 0 95 0.605 - 0/998 703/3375 69 68.9 167 172 186 588 1.25e+03 0.00062 1.44e-06 74 0 2 73 0.58 - 0/998 704/3375 69 68.9 167 172 186 587 1.25e+03 0.00062 1.43e-06 59 0 0 59 0.583 - 0/998 705/3375 69 68.9 167 172 186 587 1.25e+03 0.00062 1.43e-06 98 0 0 98 0.593 - 0/998 706/3375 69 68.9 167 172 186 587 1.25e+03 0.00062 1.43e-06 99 0 0 99 0.596 - 0/998 707/3375 69.1 69 167 172 186 588 1.25e+03 0.00062 1.42e-06 145 0 0 145 0.587 - 0/998 708/3375 69 68.9 167 172 186 587 1.25e+03 0.000613 1.42e-06 42 0 6 42 0.603 - 0/998 709/3375 69 68.9 167 172 186 587 1.25e+03 0.000613 1.42e-06 30 0 3 30 0.591 - 0/998 710/3375 69 68.9 167 172 186 587 1.25e+03 0.000613 1.42e-06 101 0 0 101 0.59 - 0/998 711/3375 68.9 68.9 166 172 186 587 1.25e+03 0.000613 1.42e-06 60 0 0 60 0.603 - 0/998 712/3375 69 68.9 167 172 186 587 1.25e+03 0.000602 1.42e-06 128 0 11 128 0.6 - 0/998 713/3375 69 68.9 166 172 186 587 1.25e+03 0.000602 1.41e-06 62 0 0 62 0.6 - 0/998 714/3375 69 68.9 166 172 186 587 1.25e+03 0.000602 1.41e-06 76 0 0 76 0.603 - 0/998 715/3375 69 68.9 166 172 185 587 1.25e+03 0.000602 1.41e-06 100 0 0 100 0.597 - 0/998 716/3375 69 68.9 166 171 185 587 1.25e+03 0.000602 1.41e-06 85 0 0 85 0.591 - 0/998 717/3375 69 68.9 166 171 185 587 1.25e+03 0.000602 1.41e-06 76 0 0 76 0.607 - 0/998 718/3375 69 68.9 166 171 185 587 1.25e+03 0.000602 1.41e-06 92 0 0 92 0.602 - 0/998 719/3375 69 68.9 166 171 185 587 1.25e+03 0.000602 1.4e-06 94 0 0 94 0.604 - 0/998 720/3375 69 68.9 166 171 185 587 1.25e+03 0.000602 1.4e-06 93 0 0 93 0.59 - 0/998 721/3375 69 68.9 166 171 185 587 1.25e+03 0.000602 1.4e-06 59 0 0 59 0.596 - 0/998 722/3375 69 68.9 166 171 185 587 1.25e+03 0.000602 1.4e-06 77 0 0 77 0.57 - 0/998 723/3375 69 68.8 166 171 185 586 1.25e+03 0.000602 1.4e-06 51 0 0 51 0.582 - 0/998 724/3375 68.9 68.8 166 171 185 586 1.25e+03 0.000602 1.4e-06 46 0 0 46 0.59 - 0/998 725/3375 68.9 68.8 166 171 185 586 1.25e+03 0.000602 1.4e-06 71 0 0 71 0.593 - 0/998 726/3375 68.9 68.7 166 171 185 586 1.24e+03 0.000602 1.4e-06 76 0 0 76 0.594 - 0/998 727/3375 68.9 68.8 166 171 185 586 1.25e+03 0.000602 1.39e-06 126 0 0 126 0.6 - 0/998 728/3375 68.9 68.7 166 171 185 586 1.24e+03 0.000602 1.39e-06 42 0 0 42 0.582 - 0/998 729/3375 68.9 68.8 166 171 185 586 1.25e+03 0.000602 1.39e-06 119 0 0 119 0.612 - 0/998 730/3375 68.9 68.8 166 171 185 586 1.25e+03 0.000602 1.38e-06 102 0 0 102 0.61 - 0/998 731/3375 68.9 68.9 166 171 185 586 1.25e+03 0.000602 1.38e-06 108 0 0 108 0.609 - 0/998 732/3375 68.9 68.8 166 171 185 586 1.24e+03 0.000602 1.38e-06 66 0 0 66 0.592 - 0/998 733/3375 68.9 68.8 166 171 185 586 1.24e+03 0.000602 1.38e-06 85 0 0 85 0.614 - 0/998 734/3375 69 68.9 166 171 185 587 1.25e+03 0.000602 1.38e-06 146 0 0 146 0.619 - 0/998 735/3375 69 68.9 166 171 185 586 1.25e+03 0.000602 1.37e-06 43 0 0 43 0.593 - 0/998 736/3375 69 68.8 166 171 185 586 1.25e+03 0.000602 1.37e-06 81 0 0 81 0.621 - 0/998 737/3375 68.9 68.8 165 171 184 586 1.24e+03 0.000602 1.37e-06 47 0 0 47 0.607 - 0/998 738/3375 68.9 68.8 165 171 184 586 1.24e+03 0.000602 1.37e-06 74 0 0 74 0.599 - 0/998 739/3375 68.9 68.7 165 170 184 586 1.24e+03 0.000602 1.37e-06 53 0 0 53 0.606 - 0/998 740/3375 68.9 68.7 165 170 184 586 1.24e+03 0.000602 1.37e-06 79 0 0 79 0.616 - 0/998 741/3375 68.9 68.8 165 171 184 586 1.24e+03 0.000602 1.37e-06 114 0 0 114 0.577 - 0/998 742/3375 68.9 68.7 165 170 184 586 1.24e+03 0.000602 1.37e-06 56 0 0 56 0.586 - 0/998 743/3375 68.9 68.7 165 170 184 586 1.24e+03 0.000602 1.36e-06 65 0 0 65 0.589 - 0/998 744/3375 68.9 68.7 165 170 184 586 1.24e+03 0.000602 1.36e-06 75 0 0 75 0.603 - 0/998 745/3375 68.9 68.7 165 170 184 585 1.24e+03 0.000602 1.36e-06 86 0 0 86 0.618 - 0/998 746/3375 68.9 68.7 165 170 184 585 1.24e+03 0.000597 1.36e-06 73 0 2 73 0.582 - 0/998 747/3375 68.9 68.7 165 170 184 585 1.24e+03 0.000597 1.36e-06 64 0 0 64 0.583 - 0/998 748/3375 68.9 68.8 165 170 184 586 1.24e+03 0.000597 1.35e-06 139 0 0 139 0.615 - 0/998 749/3375 68.9 68.8 165 170 184 586 1.24e+03 0.000597 1.35e-06 96 0 0 96 0.591 - 0/998 750/3375 69 68.8 165 170 184 586 1.24e+03 0.000595 1.35e-06 105 0 2 104 0.59 - 0/998 751/3375 68.9 68.8 165 170 184 586 1.24e+03 0.000595 1.35e-06 54 0 0 54 0.6 - 0/998 752/3375 68.9 68.8 165 170 184 585 1.24e+03 0.000595 1.35e-06 69 0 2 69 0.588 - 0/998 753/3375 68.9 68.7 165 170 184 585 1.24e+03 0.000595 1.34e-06 69 0 0 69 0.621 - 0/998 754/3375 69 68.8 165 170 184 585 1.24e+03 0.000595 1.34e-06 117 0 0 117 0.603 - 0/998 755/3375 69 68.8 165 170 184 586 1.24e+03 0.000595 1.34e-06 82 0 0 82 0.613 - 0/998 756/3375 69 68.8 165 170 184 585 1.24e+03 0.000595 1.34e-06 73 0 0 73 0.605 - 0/998 757/3375 69 68.8 165 170 184 585 1.24e+03 0.000595 1.34e-06 79 0 0 79 0.608 - 0/998 758/3375 68.9 68.8 165 170 184 585 1.24e+03 0.000595 1.34e-06 72 0 0 72 0.597 - 0/998 759/3375 68.9 68.7 165 170 184 585 1.24e+03 0.000595 1.33e-06 51 0 0 51 0.6 - 0/998 760/3375 68.9 68.7 165 170 183 585 1.24e+03 0.000595 1.33e-06 57 0 0 57 0.615 - 0/998 761/3375 68.9 68.7 165 170 183 585 1.24e+03 0.000595 1.33e-06 102 0 0 102 0.595 - 0/998 762/3375 68.9 68.7 165 170 184 585 1.24e+03 0.000593 1.33e-06 103 0 1 103 0.603 - 0/998 763/3375 68.9 68.7 165 170 183 585 1.24e+03 0.000593 1.33e-06 80 0 0 80 0.606 - 0/998 764/3375 68.9 68.7 165 169 183 585 1.24e+03 0.000593 1.33e-06 67 0 0 67 0.596 - 0/998 765/3375 68.8 68.7 165 169 183 584 1.24e+03 0.000593 1.32e-06 53 0 1 53 0.592 - 0/998 766/3375 68.8 68.7 165 169 183 584 1.24e+03 0.000593 1.32e-06 71 0 0 71 0.603 - 0/998 767/3375 68.8 68.7 165 169 183 584 1.24e+03 0.000593 1.32e-06 93 0 0 93 0.592 - 0/998 768/3375 68.8 68.7 165 169 183 584 1.24e+03 0.000593 1.32e-06 118 0 0 118 0.59 - 0/998 769/3375 68.8 68.7 165 169 183 584 1.24e+03 0.000593 1.32e-06 60 0 0 60 0.6 - 0/998 770/3375 68.9 68.7 165 169 183 584 1.24e+03 0.000591 1.31e-06 105 0 2 105 0.603 - 0/998 771/3375 68.8 68.7 165 169 183 584 1.24e+03 0.000591 1.31e-06 59 0 0 59 0.589 - 0/998 772/3375 68.8 68.7 165 169 183 584 1.24e+03 0.000591 1.31e-06 94 0 0 94 0.596 - 0/998 773/3375 68.8 68.7 165 169 183 584 1.24e+03 0.000591 1.31e-06 77 0 0 77 0.602 - 0/998 774/3375 68.8 68.7 165 169 183 584 1.24e+03 0.000591 1.31e-06 72 0 0 72 0.6 - 0/998 775/3375 68.8 68.7 164 169 183 584 1.24e+03 0.000589 1.3e-06 79 0 4 79 0.593 - 0/998 776/3375 68.8 68.7 164 169 183 583 1.24e+03 0.000585 1.3e-06 70 0 2 70 0.606 - 0/998 777/3375 68.8 68.7 164 169 183 583 1.24e+03 0.000833 1.95e-06 78 1 15 73 0.599 - 0/998 778/3375 68.8 68.7 164 169 183 583 1.24e+03 0.000947 2.6e-06 94 1 53 89 0.601 - 0/998 779/3375 68.8 68.7 164 169 183 583 1.24e+03 0.000926 2.59e-06 109 0 8 107 0.604 - 0/998 780/3375 68.8 68.7 164 169 183 583 1.24e+03 0.0011 3.24e-06 77 1 18 76 0.589 - 0/998 781/3375 68.8 68.7 164 169 183 583 1.24e+03 0.00109 3.23e-06 65 0 5 63 0.599 - 0/998 782/3375 68.8 68.7 164 169 183 583 1.24e+03 0.00107 3.23e-06 85 0 5 84 0.603 - 0/998 783/3375 68.8 68.7 164 169 183 583 1.24e+03 0.0011 3.87e-06 96 1 35 93 0.605 - 0/998 784/3375 68.8 68.6 164 169 183 583 1.24e+03 0.000987 3.87e-06 73 0 15 70 0.622 - 0/998 785/3375 68.7 68.6 164 169 182 583 1.24e+03 0.000985 3.87e-06 45 0 1 45 0.619 - 0/998 786/3375 68.7 68.6 164 169 182 582 1.23e+03 0.000985 3.86e-06 45 0 0 45 0.6 - 0/998 787/3375 68.7 68.6 164 168 182 582 1.23e+03 0.000974 3.86e-06 67 0 5 67 0.612 - 0/998 788/3375 68.7 68.6 164 168 182 582 1.23e+03 0.000974 3.86e-06 76 0 0 76 0.597 - 0/998 789/3375 68.7 68.6 164 168 182 582 1.23e+03 0.000963 3.85e-06 114 0 5 114 0.59 - 0/998 790/3375 68.7 68.5 164 168 182 582 1.23e+03 0.000963 3.84e-06 52 0 0 52 0.585 - 0/998 791/3375 68.7 68.6 164 168 182 582 1.23e+03 0.000963 3.84e-06 86 0 0 86 0.59 - 0/998 792/3375 68.7 68.5 164 168 182 582 1.23e+03 0.000961 3.84e-06 83 0 1 83 0.596 - 0/998 793/3375 68.7 68.5 164 168 182 582 1.23e+03 0.000961 3.83e-06 100 0 0 100 0.6 - 0/998 794/3375 68.8 68.6 164 168 182 582 1.23e+03 0.000961 3.82e-06 121 0 0 121 0.59 - 0/998 795/3375 68.8 68.6 164 168 182 583 1.23e+03 0.000961 3.82e-06 95 0 0 95 0.595 - 0/998 796/3375 68.8 68.6 164 168 182 582 1.23e+03 0.000961 3.81e-06 58 0 0 58 0.589 - 0/998 797/3375 68.8 68.6 164 168 182 582 1.23e+03 0.000961 3.8e-06 106 0 0 106 0.607 - 0/998 798/3375 68.8 68.6 164 168 182 582 1.23e+03 0.000961 3.8e-06 91 0 0 91 0.605 - 0/998 799/3375 68.8 68.6 164 168 182 582 1.23e+03 0.000961 3.79e-06 76 0 0 76 0.609 - 0/998 800/3375 68.7 68.5 164 168 182 582 1.23e+03 0.000961 3.79e-06 48 0 0 48 0.59 - 0/998 801/3375 68.7 68.5 164 168 182 582 1.23e+03 0.000961 3.79e-06 64 0 0 64 0.593 - 0/998 802/3375 68.7 68.5 164 168 182 582 1.23e+03 0.000961 3.79e-06 83 0 0 83 0.598 - 0/998 803/3375 68.7 68.5 163 168 182 582 1.23e+03 0.000961 3.78e-06 79 0 0 79 0.58 - 0/998 804/3375 68.7 68.5 163 168 182 581 1.23e+03 0.000961 3.78e-06 52 0 0 52 0.6 - 0/998 805/3375 68.7 68.5 163 168 182 581 1.23e+03 0.000959 3.76e-06 118 0 1 118 0.615 - 0/998 806/3375 68.7 68.5 163 168 181 581 1.23e+03 0.000959 3.76e-06 52 0 0 52 0.588 - 0/998 807/3375 68.7 68.5 163 168 181 581 1.23e+03 0.000959 3.76e-06 101 0 0 101 0.598 - 0/998 808/3375 68.7 68.5 163 168 181 581 1.23e+03 0.00111 4.38e-06 86 1 1 85 0.611 - 0/998 809/3375 68.7 68.5 163 168 181 581 1.23e+03 0.00111 4.37e-06 70 0 0 70 0.601 - 0/998 810/3375 68.7 68.5 163 168 181 581 1.23e+03 0.00111 4.37e-06 86 0 0 86 0.606 - 0/998 811/3375 68.7 68.5 163 168 181 582 1.23e+03 0.00111 4.36e-06 114 0 0 114 0.602 - 0/998 812/3375 68.7 68.5 163 168 181 582 1.23e+03 0.00111 4.35e-06 84 0 0 84 0.605 - 0/998 813/3375 68.7 68.5 163 167 181 582 1.23e+03 0.00111 4.35e-06 88 0 0 88 0.611 - 0/998 814/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.34e-06 88 0 0 88 0.621 - 0/998 815/3375 68.7 68.5 163 167 181 582 1.23e+03 0.00111 4.34e-06 65 0 0 65 0.599 - 0/998 816/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.33e-06 113 0 0 113 0.6 - 0/998 817/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.33e-06 98 0 0 98 0.614 - 0/998 818/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.33e-06 84 0 0 84 0.613 - 0/998 819/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.32e-06 76 0 0 76 0.596 - 0/998 820/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.31e-06 101 0 0 101 0.59 - 0/998 821/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.31e-06 83 0 0 83 0.617 - 0/998 822/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.3e-06 81 0 0 81 0.613 - 0/998 823/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.29e-06 119 0 0 119 0.613 - 0/998 824/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.29e-06 83 0 0 83 0.583 - 0/998 825/3375 68.9 68.6 163 167 181 582 1.23e+03 0.00111 4.28e-06 97 0 0 97 0.604 - 0/998 826/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.27e-06 55 0 0 55 0.58 - 0/998 827/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.27e-06 53 0 0 53 0.611 - 0/998 828/3375 68.8 68.6 163 167 181 581 1.23e+03 0.00111 4.27e-06 65 0 0 65 0.611 - 0/998 829/3375 68.8 68.6 163 167 181 581 1.23e+03 0.00111 4.26e-06 79 0 0 79 0.619 - 0/998 830/3375 68.8 68.6 163 167 181 581 1.23e+03 0.00111 4.25e-06 91 0 0 91 0.609 - 0/998 831/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.24e-06 124 0 0 124 0.609 - 0/998 832/3375 68.9 68.6 163 167 181 582 1.23e+03 0.00111 4.24e-06 120 0 0 120 0.589 - 0/998 833/3375 68.8 68.6 163 167 181 581 1.23e+03 0.00111 4.24e-06 32 0 1 32 0.6 - 0/998 834/3375 68.8 68.6 163 167 181 582 1.23e+03 0.00111 4.23e-06 101 0 0 101 0.6 - 0/998 835/3375 68.8 68.7 163 167 181 582 1.23e+03 0.00111 4.22e-06 95 0 0 95 0.594 - 0/998 836/3375 68.9 68.7 163 167 181 582 1.23e+03 0.00111 4.22e-06 92 0 0 92 0.615 - 0/998 837/3375 68.9 68.7 163 167 181 582 1.23e+03 0.00111 4.21e-06 96 0 0 96 0.616 - 0/998 838/3375 68.9 68.7 163 167 181 582 1.23e+03 0.00111 4.21e-06 75 0 0 75 0.597 - 0/998 839/3375 68.9 68.6 163 167 181 582 1.23e+03 0.00111 4.2e-06 91 0 0 91 0.605 - 0/998 840/3375 68.8 68.6 163 167 181 581 1.23e+03 0.00111 4.2e-06 53 0 0 53 0.59 - 0/998 841/3375 68.9 68.6 163 167 181 581 1.23e+03 0.00111 4.19e-06 98 0 0 98 0.597 - 0/998 842/3375 68.8 68.6 163 167 181 581 1.23e+03 0.00111 4.19e-06 74 0 0 74 0.624 - 0/998 843/3375 68.9 68.6 163 167 181 581 1.23e+03 0.00111 4.18e-06 94 0 0 94 0.592 - 0/998 844/3375 68.9 68.7 163 167 181 581 1.23e+03 0.00111 4.18e-06 82 0 0 82 0.606 - 0/998 845/3375 68.8 68.6 163 167 180 581 1.23e+03 0.00103 4.18e-06 51 0 2 50 0.6 - 0/998 846/3375 68.9 68.7 163 167 180 581 1.23e+03 0.00103 4.17e-06 110 0 3 110 0.609 - 0/998 847/3375 68.9 68.7 163 167 180 582 1.23e+03 0.00103 4.16e-06 103 0 0 103 0.595 - 0/998 848/3375 68.9 68.7 163 167 180 582 1.23e+03 0.00116 4.76e-06 98 1 8 95 0.599 - 0/998 849/3375 68.9 68.7 163 167 180 582 1.23e+03 0.00116 4.75e-06 91 0 1 91 0.611 - 0/998 850/3375 68.9 68.7 163 166 180 582 1.23e+03 0.00116 4.74e-06 47 0 0 47 0.579 - 0/998 851/3375 68.9 68.7 162 166 180 581 1.23e+03 0.00116 4.74e-06 76 0 4 76 0.591 - 0/998 852/3375 68.9 68.7 162 166 180 582 1.23e+03 0.00116 4.74e-06 83 0 0 83 0.579 - 0/998 853/3375 68.9 68.7 163 166 180 582 1.23e+03 0.00116 4.72e-06 135 0 0 135 0.601 - 0/998 854/3375 68.9 68.7 162 166 180 582 1.23e+03 0.00116 4.72e-06 91 0 0 91 0.597 - 0/998 855/3375 68.9 68.7 162 166 180 582 1.23e+03 0.00116 4.71e-06 102 0 0 102 0.597 - 0/998 856/3375 69 68.8 162 166 180 582 1.23e+03 0.00116 4.71e-06 138 0 0 138 0.611 - 0/998 857/3375 69 68.7 162 166 180 582 1.23e+03 0.00116 4.7e-06 67 0 0 67 0.599 - 0/998 858/3375 68.9 68.7 162 166 180 582 1.23e+03 0.00116 4.69e-06 81 0 0 81 0.599 - 0/998 859/3375 68.9 68.7 162 166 180 582 1.23e+03 0.00116 4.69e-06 74 0 0 74 0.604 - 0/998 860/3375 68.9 68.7 162 166 180 582 1.23e+03 0.00116 4.68e-06 92 0 0 92 0.615 - 0/998 861/3375 68.9 68.7 162 166 180 582 1.23e+03 0.00116 4.68e-06 67 0 1 67 0.593 - 0/998 862/3375 69 68.7 162 166 180 582 1.23e+03 0.00116 4.67e-06 122 0 0 122 0.604 - 0/998 863/3375 68.9 68.7 162 166 180 582 1.23e+03 0.00116 4.67e-06 63 0 0 63 0.583 - 0/998 864/3375 68.9 68.7 162 166 180 582 1.23e+03 0.00116 4.66e-06 93 0 0 93 0.594 - 0/998 865/3375 68.9 68.7 162 166 180 581 1.23e+03 0.00116 4.65e-06 77 0 0 77 0.603 - 0/998 866/3375 68.9 68.7 162 166 180 581 1.23e+03 0.00107 4.65e-06 68 0 7 66 0.589 - 0/998 867/3375 68.9 68.6 162 166 180 581 1.23e+03 0.00107 4.65e-06 75 0 0 75 0.597 - 0/998 868/3375 68.9 68.6 162 166 180 581 1.23e+03 0.00107 4.64e-06 84 0 0 84 0.594 - 0/998 869/3375 68.9 68.6 162 166 180 581 1.23e+03 0.00105 4.63e-06 51 0 9 50 0.596 - 0/998 870/3375 68.8 68.6 162 166 180 581 1.23e+03 0.00104 4.63e-06 43 0 6 43 0.576 - 0/998 871/3375 68.8 68.6 162 166 180 581 1.23e+03 0.00104 4.63e-06 68 0 0 68 0.586 - 0/998 872/3375 68.8 68.6 162 166 180 581 1.22e+03 0.00101 4.62e-06 70 0 17 70 0.603 - 0/998 873/3375 68.8 68.6 162 165 180 581 1.22e+03 0.00101 4.62e-06 74 0 0 74 0.589 - 0/998 874/3375 68.8 68.6 162 165 180 581 1.22e+03 0.00101 4.62e-06 88 0 0 88 0.595 - 0/998 875/3375 68.8 68.5 162 165 180 580 1.22e+03 0.00125 5.76e-06 55 2 0 53 0.59 - 0/998 876/3375 68.8 68.5 162 165 180 580 1.22e+03 0.00125 5.75e-06 96 0 0 96 0.613 - 0/998 877/3375 68.8 68.5 162 165 179 580 1.22e+03 0.00125 5.74e-06 71 0 0 71 0.609 - 0/998 878/3375 68.8 68.5 162 165 179 580 1.22e+03 0.00125 5.74e-06 58 0 2 58 0.604 - 0/998 879/3375 68.8 68.5 162 165 179 580 1.22e+03 0.00124 5.73e-06 105 0 2 104 0.588 - 0/998 880/3375 68.8 68.5 162 165 179 580 1.22e+03 0.00124 5.72e-06 86 0 0 86 0.585 - 0/998 881/3375 68.8 68.5 162 165 179 580 1.22e+03 0.00124 5.71e-06 81 0 0 81 0.594 - 0/998 882/3375 68.8 68.5 162 165 179 579 1.22e+03 0.00124 5.71e-06 82 0 0 82 0.583 - 0/998 883/3375 68.8 68.6 162 165 179 580 1.22e+03 0.00124 5.7e-06 123 0 0 123 0.614 - 0/998 884/3375 68.9 68.6 162 165 179 580 1.22e+03 0.00124 5.69e-06 113 0 0 113 0.593 - 0/998 885/3375 68.8 68.6 162 165 179 580 1.22e+03 0.00124 5.68e-06 50 0 0 50 0.583 - 0/998 886/3375 68.8 68.5 161 165 179 580 1.22e+03 0.00124 5.68e-06 58 0 0 58 0.615 - 0/998 887/3375 68.8 68.6 161 165 179 580 1.22e+03 0.00124 5.68e-06 82 0 0 82 0.613 - 0/998 888/3375 68.8 68.6 161 165 179 580 1.22e+03 0.00124 5.67e-06 93 0 0 93 0.595 - 0/998 889/3375 68.9 68.6 161 165 179 580 1.22e+03 0.00124 5.66e-06 119 0 0 119 0.597 - 0/998 890/3375 68.9 68.6 162 165 179 580 1.22e+03 0.00124 5.65e-06 141 0 0 141 0.585 - 0/998 891/3375 68.9 68.6 162 165 179 580 1.22e+03 0.00124 5.64e-06 89 0 0 89 0.609 - 0/998 892/3375 68.9 68.7 162 165 179 580 1.22e+03 0.00124 5.63e-06 96 0 0 96 0.601 - 0/998 893/3375 68.9 68.7 162 165 179 580 1.22e+03 0.00124 5.62e-06 95 0 1 95 0.6 - 0/998 894/3375 68.9 68.7 162 165 179 580 1.22e+03 0.00124 5.61e-06 97 0 0 97 0.602 - 0/998 895/3375 69 68.7 162 165 179 580 1.22e+03 0.00124 5.6e-06 96 0 0 96 0.609 - 0/998 896/3375 69 68.7 161 165 179 580 1.22e+03 0.00124 5.6e-06 69 0 0 69 0.589 - 0/998 897/3375 69 68.7 162 165 179 580 1.22e+03 0.00136 6.15e-06 108 1 0 107 0.604 - 0/998 898/3375 69 68.7 161 165 179 580 1.22e+03 0.00136 6.14e-06 82 0 0 82 0.603 - 0/998 899/3375 69 68.7 161 165 179 580 1.22e+03 0.00136 6.13e-06 90 0 0 90 0.6 - 0/998 900/3375 69 68.7 161 165 179 580 1.22e+03 0.00136 6.13e-06 63 0 0 63 0.601 - 0/998 901/3375 69 68.7 161 165 179 580 1.22e+03 0.00136 6.11e-06 82 0 0 82 0.606 - 0/998 902/3375 69 68.7 161 165 179 580 1.22e+03 0.00136 6.11e-06 83 0 0 83 0.595 - 0/998 903/3375 69 68.7 161 165 179 580 1.22e+03 0.00136 6.1e-06 81 0 0 81 0.597 - 0/998 904/3375 69 68.8 161 165 179 580 1.22e+03 0.00136 6.09e-06 119 0 0 119 0.583 - 0/998 905/3375 69 68.8 161 165 179 580 1.22e+03 0.00136 6.08e-06 85 0 1 85 0.61 - 0/998 906/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00136 6.08e-06 120 0 1 120 0.613 - 0/998 907/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00146 6.62e-06 103 1 6 102 0.631 - 0/998 908/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00144 6.62e-06 55 0 6 55 0.578 - 0/998 909/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00144 6.61e-06 116 0 1 116 0.607 - 0/998 910/3375 69.1 68.8 161 165 179 581 1.22e+03 0.00135 6.6e-06 95 0 3 94 0.609 - 0/998 911/3375 69.1 68.8 161 165 179 581 1.22e+03 0.00135 6.59e-06 88 0 0 88 0.596 - 0/998 912/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00135 6.59e-06 44 0 0 44 0.592 - 0/998 913/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00135 6.58e-06 66 0 0 66 0.581 - 0/998 914/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00135 6.58e-06 82 0 0 82 0.607 - 0/998 915/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00135 6.57e-06 92 0 0 92 0.609 - 0/998 916/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00135 6.56e-06 120 0 1 120 0.641 - 0/998 917/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00135 6.56e-06 68 0 0 68 0.609 - 0/998 918/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00135 6.54e-06 85 0 0 85 0.596 - 0/998 919/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00135 6.54e-06 61 0 0 61 0.615 - 0/998 920/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00134 6.54e-06 73 0 6 71 0.637 - 0/998 921/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00133 6.52e-06 111 0 2 111 0.609 - 0/998 922/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00132 6.52e-06 85 0 5 85 0.606 - 0/998 923/3375 69.1 68.8 161 165 179 580 1.22e+03 0.00132 6.5e-06 90 0 0 90 0.596 - 0/998 924/3375 69.1 68.8 161 165 178 579 1.22e+03 0.00131 6.5e-06 47 0 4 47 0.598 - 0/998 925/3375 69.1 68.8 161 165 178 579 1.22e+03 0.00131 6.5e-06 88 0 0 88 0.607 - 0/998 926/3375 69.1 68.7 161 165 178 579 1.22e+03 0.00131 6.5e-06 70 0 0 70 0.605 - 0/998 927/3375 69.1 68.7 161 165 178 579 1.22e+03 0.00131 6.49e-06 56 0 0 56 0.607 - 0/998 928/3375 69.1 68.7 161 165 178 579 1.22e+03 0.00131 6.48e-06 77 0 2 77 0.59 - 0/998 929/3375 69 68.7 161 165 178 579 1.22e+03 0.0013 6.47e-06 73 0 5 73 0.603 - 0/998 930/3375 69 68.7 161 165 178 579 1.22e+03 0.00129 6.47e-06 80 0 4 80 0.613 - 0/998 931/3375 69 68.7 161 165 178 579 1.22e+03 0.00128 6.46e-06 68 0 5 68 0.595 - 0/998 932/3375 69 68.7 161 164 178 578 1.22e+03 0.00128 6.45e-06 69 0 0 69 0.608 - 0/998 933/3375 69 68.7 161 164 178 578 1.22e+03 0.00128 6.44e-06 87 0 0 87 0.6 - 0/998 934/3375 69 68.7 161 165 178 579 1.22e+03 0.00128 6.96e-06 140 1 11 134 0.611 - 0/998 935/3375 69.1 68.7 161 165 178 579 1.22e+03 0.00128 6.96e-06 104 0 0 104 0.604 - 0/998 936/3375 69 68.7 161 165 178 579 1.22e+03 0.00127 6.96e-06 70 0 7 69 0.611 - 0/998 937/3375 69 68.7 161 165 178 578 1.22e+03 0.00127 6.95e-06 48 0 0 48 0.607 - 0/998 938/3375 69 68.7 161 165 178 579 1.22e+03 0.00126 6.95e-06 110 0 2 110 0.612 - 0/998 939/3375 69 68.7 161 165 178 578 1.22e+03 0.00125 6.94e-06 57 0 9 57 0.598 - 0/998 940/3375 69 68.7 161 164 178 578 1.22e+03 0.00125 6.94e-06 59 0 0 59 0.598 - 0/998 941/3375 69 68.6 160 164 178 578 1.22e+03 0.00125 6.93e-06 50 0 0 50 0.602 - 0/998 942/3375 69 68.7 160 164 178 578 1.22e+03 0.00125 6.92e-06 98 0 0 98 0.613 - 0/998 943/3375 69 68.6 160 164 178 578 1.22e+03 0.00125 6.91e-06 76 0 0 76 0.586 - 0/998 944/3375 69 68.6 160 164 178 578 1.22e+03 0.00125 6.89e-06 92 0 0 92 0.598 - 0/998 945/3375 68.9 68.6 160 164 178 578 1.22e+03 0.00125 6.89e-06 37 0 0 37 0.582 - 0/998 946/3375 68.9 68.6 160 164 177 577 1.22e+03 0.00125 6.89e-06 57 0 0 57 0.604 - 0/998 947/3375 69 68.6 160 164 178 578 1.22e+03 0.00125 6.87e-06 131 0 0 131 0.606 - 0/998 948/3375 69 68.6 160 164 177 577 1.22e+03 0.00134 8.45e-06 86 3 53 75 0.603 - 0/998 949/3375 68.9 68.6 160 164 177 577 1.22e+03 0.00134 8.44e-06 59 0 1 59 0.602 - 0/998 950/3375 68.9 68.6 160 164 177 577 1.22e+03 0.00134 8.42e-06 82 0 0 82 0.589 - 0/998 951/3375 69 68.6 160 164 177 577 1.22e+03 0.00134 8.41e-06 112 0 4 112 0.582 - 0/998 952/3375 69 68.6 160 164 177 577 1.22e+03 0.00127 8.41e-06 81 0 3 80 0.615 - 0/998 953/3375 69 68.6 160 164 177 577 1.22e+03 0.00126 8.4e-06 74 0 5 72 0.607 - 0/998 954/3375 68.9 68.6 160 164 177 577 1.22e+03 0.00126 8.39e-06 63 0 0 63 0.601 - 0/998 955/3375 68.9 68.6 160 164 177 577 1.22e+03 0.00126 8.39e-06 68 0 0 68 0.597 - 0/998 956/3375 68.9 68.6 160 164 177 577 1.22e+03 0.00125 8.37e-06 76 0 5 76 0.604 - 0/998 957/3375 68.9 68.6 160 164 177 577 1.22e+03 0.00124 8.37e-06 66 0 3 65 0.609 - 0/998 958/3375 68.9 68.5 160 164 177 577 1.21e+03 0.00124 8.36e-06 46 0 1 46 0.597 - 0/998 959/3375 68.9 68.5 160 164 177 577 1.21e+03 0.00124 8.36e-06 89 0 0 89 0.611 - 0/998 960/3375 68.9 68.5 160 164 177 576 1.21e+03 0.00124 8.35e-06 74 0 0 74 0.593 - 0/998 961/3375 68.9 68.5 160 164 177 576 1.21e+03 0.00123 8.34e-06 76 0 5 76 0.594 - 0/998 962/3375 68.9 68.5 160 164 177 576 1.21e+03 0.00123 8.32e-06 111 0 0 111 0.617 - 0/998 963/3375 68.9 68.5 160 164 177 577 1.21e+03 0.00123 8.32e-06 92 0 0 92 0.602 - 0/998 964/3375 68.9 68.5 160 164 177 576 1.21e+03 0.00122 8.31e-06 57 0 8 57 0.611 - 0/998 965/3375 68.9 68.5 160 164 177 576 1.21e+03 0.00121 8.31e-06 69 0 3 69 0.599 - 0/998 966/3375 68.9 68.5 160 164 177 576 1.21e+03 0.00129 8.82e-06 102 1 0 101 0.621 - 0/998 967/3375 68.9 68.5 160 164 177 576 1.21e+03 0.00129 8.81e-06 70 0 0 70 0.593 - 0/998 968/3375 68.9 68.5 160 164 177 576 1.21e+03 0.00129 8.8e-06 83 0 0 83 0.602 - 0/998 969/3375 68.9 68.5 160 164 177 576 1.21e+03 0.00128 8.79e-06 91 0 3 91 0.591 - 0/998 970/3375 68.9 68.5 160 164 177 576 1.21e+03 0.00128 8.79e-06 49 0 0 49 0.615 - 0/998 971/3375 68.8 68.4 159 163 177 576 1.21e+03 0.00128 8.78e-06 42 0 0 42 0.608 - 0/998 972/3375 68.8 68.4 159 163 176 576 1.21e+03 0.00128 8.78e-06 78 0 2 78 0.605 - 0/998 973/3375 68.8 68.5 159 163 176 576 1.21e+03 0.00128 8.76e-06 108 0 0 108 0.598 - 0/998 974/3375 68.8 68.4 159 163 176 576 1.21e+03 0.00128 8.75e-06 65 0 0 65 0.584 - 0/998 975/3375 68.8 68.5 159 163 176 576 1.21e+03 0.00133 9.26e-06 90 1 12 88 0.608 - 0/998 976/3375 68.8 68.4 159 163 176 575 1.21e+03 0.00133 9.25e-06 47 0 0 47 0.576 - 0/998 977/3375 68.8 68.4 159 163 176 575 1.21e+03 0.00133 9.25e-06 60 0 1 60 0.601 - 0/998 978/3375 68.8 68.4 159 163 176 575 1.21e+03 0.00133 9.23e-06 79 0 0 79 0.604 - 0/998 979/3375 68.8 68.4 159 163 176 575 1.21e+03 0.00133 9.22e-06 71 0 0 71 0.594 - 0/998 980/3375 68.7 68.4 159 163 176 575 1.21e+03 0.00133 9.22e-06 79 0 0 79 0.592 - 0/998 981/3375 68.7 68.4 159 163 176 575 1.21e+03 0.00131 9.21e-06 88 0 8 88 0.622 - 0/998 982/3375 68.8 68.4 159 163 176 575 1.21e+03 0.00131 9.19e-06 115 0 0 115 0.6 - 0/998 983/3375 68.8 68.4 159 163 176 575 1.21e+03 0.00129 9.19e-06 55 0 8 55 0.6 - 0/998 984/3375 68.7 68.4 159 163 176 575 1.21e+03 0.00127 9.18e-06 40 0 11 40 0.6 - 0/998 985/3375 68.7 68.3 159 163 176 574 1.21e+03 0.00125 9.18e-06 38 0 15 38 0.592 - 0/998 986/3375 68.7 68.3 159 163 176 574 1.21e+03 0.00122 9.17e-06 86 0 16 86 0.628 - 0/998 987/3375 68.7 68.3 159 163 176 574 1.21e+03 0.00185 1.22e-05 65 1 4 64 0.623 - 0/998 988/3375 68.7 68.3 159 163 176 574 1.21e+03 0.00184 1.22e-05 76 0 4 76 0.628 - 0/998 989/3375 68.7 68.3 159 163 176 574 1.21e+03 0.00182 1.22e-05 92 0 15 92 0.629 - 0/998 990/3375 68.7 68.3 159 163 176 574 1.21e+03 0.0018 1.22e-05 72 0 7 72 0.59 - 0/998 991/3375 68.7 68.3 159 163 176 574 1.21e+03 0.0018 1.22e-05 120 0 0 120 0.604 - 0/998 992/3375 68.7 68.3 159 163 176 574 1.21e+03 0.0018 1.22e-05 89 0 0 89 0.615 - 0/998 993/3375 68.8 68.4 159 163 176 575 1.21e+03 0.0018 1.22e-05 131 0 2 131 0.604 - 0/998 994/3375 68.8 68.4 159 163 176 575 1.21e+03 0.0018 1.21e-05 139 0 3 137 0.617 - 0/998 995/3375 68.8 68.4 159 163 176 575 1.21e+03 0.0018 1.21e-05 77 0 0 77 0.603 - 0/998 996/3375 68.8 68.4 159 163 176 575 1.21e+03 0.0018 1.21e-05 76 0 0 76 0.615 - 0/998 997/3375 68.8 68.4 159 163 176 575 1.21e+03 0.0018 1.21e-05 94 0 0 94 0.624 - 0/998 998/3375 68.8 68.4 159 163 176 575 1.21e+03 0.0018 1.21e-05 93 0 0 93 0.614 - 0/998 999/3375 68.8 68.4 159 163 176 575 1.21e+03 0.0018 1.21e-05 96 0 0 96 0.593 - 0/998 1000/3375 68.8 68.4 159 163 176 575 1.21e+03 0.0018 1.2e-05 145 0 0 145 0.632 - 0/998 1001/3375 68.8 68.4 159 163 176 575 1.21e+03 0.0018 1.2e-05 65 0 0 65 0.641 - 0/998 1002/3375 68.8 68.4 159 162 176 574 1.21e+03 0.0018 1.2e-05 46 0 3 46 0.59 - 0/998 1003/3375 68.8 68.4 159 162 176 575 1.21e+03 0.0018 1.2e-05 92 0 0 92 0.609 - 0/998 1004/3375 68.8 68.4 159 162 175 575 1.21e+03 0.0018 1.2e-05 86 0 0 86 0.608 - 0/998 1005/3375 68.8 68.4 159 162 175 574 1.21e+03 0.0018 1.2e-05 75 0 0 75 0.579 - 0/998 1006/3375 68.8 68.4 159 162 175 574 1.21e+03 0.0018 1.2e-05 77 0 0 77 0.613 - 0/998 1007/3375 68.8 68.4 159 162 175 574 1.21e+03 0.0018 1.2e-05 73 0 0 73 0.66 - 0/998 1008/3375 68.8 68.4 159 162 175 575 1.21e+03 0.0018 1.2e-05 124 0 0 124 0.601 - 0/998 1009/3375 68.8 68.4 159 162 175 575 1.21e+03 0.0018 1.2e-05 80 0 0 80 0.588 - 0/998 1010/3375 68.8 68.4 159 162 175 575 1.21e+03 0.00179 1.19e-05 100 0 2 100 0.606 - 0/998 1011/3375 68.8 68.4 159 162 175 575 1.21e+03 0.00179 1.19e-05 66 0 0 66 0.603 - 0/998 1012/3375 68.8 68.4 159 162 175 575 1.21e+03 0.00179 1.19e-05 85 0 0 85 0.6 - 0/998 1013/3375 68.8 68.4 159 162 175 575 1.21e+03 0.00178 1.19e-05 91 0 6 90 0.616 - 0/998 1014/3375 68.8 68.5 159 162 175 575 1.21e+03 0.00178 1.19e-05 110 0 5 110 0.612 - 0/998 1015/3375 68.8 68.5 159 162 175 575 1.21e+03 0.00178 1.19e-05 74 0 0 74 0.59 - 0/998 1016/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00178 1.19e-05 68 0 0 68 0.596 - 0/998 1017/3375 68.8 68.5 159 162 175 575 1.21e+03 0.00177 1.18e-05 125 0 4 124 0.618 - 0/998 1018/3375 68.9 68.5 159 162 175 575 1.21e+03 0.00177 1.18e-05 99 0 0 99 0.617 - 0/998 1019/3375 68.8 68.5 158 162 175 575 1.21e+03 0.00177 1.18e-05 63 0 0 63 0.621 - 0/998 1020/3375 68.9 68.5 159 162 175 575 1.21e+03 0.00177 1.18e-05 101 0 0 101 0.592 - 0/998 1021/3375 68.8 68.5 158 162 175 575 1.21e+03 0.00177 1.18e-05 49 0 0 49 0.58 - 0/998 1022/3375 68.8 68.5 158 162 175 575 1.21e+03 0.00177 1.18e-05 57 0 1 57 0.609 - 0/998 1023/3375 68.8 68.5 158 162 175 575 1.21e+03 0.00177 1.18e-05 89 0 1 89 0.636 - 0/998 1024/3375 68.8 68.4 158 162 175 574 1.21e+03 0.00176 1.18e-05 32 0 5 32 0.586 - 0/998 1025/3375 68.8 68.4 158 162 175 574 1.21e+03 0.00176 1.18e-05 82 0 1 82 0.61 - 0/998 1026/3375 68.8 68.4 158 162 175 574 1.21e+03 0.00176 1.18e-05 73 0 2 73 0.616 - 0/998 1027/3375 68.8 68.4 158 162 175 574 1.21e+03 0.00175 1.17e-05 84 0 1 84 0.61 - 0/998 1028/3375 68.7 68.4 158 162 175 574 1.21e+03 0.00175 1.17e-05 65 0 1 65 0.581 - 0/998 1029/3375 68.7 68.4 158 162 175 574 1.21e+03 0.00175 1.17e-05 70 0 0 70 0.595 - 0/998 1030/3375 68.7 68.4 158 162 175 574 1.21e+03 0.00175 1.17e-05 70 0 5 70 0.599 - 0/998 1031/3375 68.8 68.4 158 162 175 574 1.21e+03 0.00175 1.17e-05 117 0 0 117 0.622 - 0/998 1032/3375 68.8 68.4 158 162 175 574 1.21e+03 0.00174 1.17e-05 79 0 3 78 0.618 - 0/998 1033/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00163 1.17e-05 147 0 16 144 0.648 - 0/998 1034/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00162 1.17e-05 94 0 5 93 0.622 - 0/998 1035/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00162 1.17e-05 75 0 0 75 0.637 - 0/998 1036/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00162 1.16e-05 88 0 2 88 0.596 - 0/998 1037/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00162 1.16e-05 116 0 1 116 0.602 - 0/998 1038/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00162 1.16e-05 60 0 0 60 0.581 - 0/998 1039/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00161 1.16e-05 71 0 3 70 0.597 - 0/998 1040/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00161 1.16e-05 80 0 0 80 0.597 - 0/998 1041/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00161 1.16e-05 103 0 0 103 0.608 - 0/998 1042/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00161 1.16e-05 107 0 1 107 0.603 - 0/998 1043/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00161 1.15e-05 99 0 0 99 0.611 - 0/998 1044/3375 68.8 68.5 158 162 175 574 1.21e+03 0.00161 1.15e-05 44 0 0 44 0.593 - 0/998 1045/3375 68.8 68.5 158 161 175 574 1.21e+03 0.00161 1.15e-05 95 0 0 95 0.606 - 0/998 1046/3375 68.8 68.6 158 161 175 574 1.21e+03 0.00161 1.15e-05 98 0 5 98 0.602 - 0/998 1047/3375 68.9 68.6 158 161 175 574 1.21e+03 0.00159 1.15e-05 100 0 4 100 0.601 - 0/998 1048/3375 68.9 68.6 158 162 175 575 1.21e+03 0.00159 1.15e-05 128 0 0 128 0.605 - 0/998 1049/3375 68.9 68.7 158 162 175 575 1.21e+03 0.00159 1.15e-05 112 0 3 112 0.611 - 0/998 1050/3375 68.9 68.7 158 162 175 575 1.21e+03 0.00159 1.15e-05 88 0 0 88 0.611 - 0/998 1051/3375 69 68.7 158 162 175 575 1.21e+03 0.00159 1.15e-05 106 0 0 106 0.628 - 0/998 1052/3375 69 68.7 158 162 175 575 1.21e+03 0.00159 1.15e-05 87 0 0 87 0.608 - 0/998 1053/3375 69 68.7 158 162 175 575 1.21e+03 0.00158 1.14e-05 76 0 7 71 0.607 - 0/998 1054/3375 68.9 68.7 158 162 175 575 1.21e+03 0.00158 1.14e-05 61 0 0 61 0.591 - 0/998 1055/3375 68.9 68.7 158 162 175 575 1.21e+03 0.00158 1.14e-05 79 0 0 79 0.608 - 0/998 1056/3375 69 68.7 158 162 175 575 1.21e+03 0.00158 1.14e-05 114 0 1 113 0.626 - 0/998 1057/3375 69 68.7 158 161 175 575 1.21e+03 0.00158 1.14e-05 63 0 0 63 0.607 - 0/998 1058/3375 69 68.7 158 161 175 576 1.21e+03 0.00158 1.14e-05 126 0 0 126 0.604 - 0/998 1059/3375 69 68.7 158 162 175 576 1.21e+03 0.00158 1.14e-05 118 0 1 117 0.589 - 0/998 1060/3375 69 68.7 158 161 175 576 1.21e+03 0.00158 1.14e-05 115 0 2 115 0.615 - 0/998 1061/3375 69 68.7 158 161 175 576 1.21e+03 0.00158 1.14e-05 70 0 0 70 0.586 - 0/998 1062/3375 69 68.7 158 161 175 576 1.21e+03 0.00158 1.14e-05 104 0 0 104 0.602 - 0/998 1063/3375 69 68.7 158 161 175 576 1.21e+03 0.00158 1.13e-05 74 0 0 74 0.587 - 0/998 1064/3375 69 68.7 158 161 175 576 1.21e+03 0.00158 1.13e-05 77 0 0 77 0.602 - 0/998 1065/3375 69 68.7 158 161 175 576 1.21e+03 0.00158 1.13e-05 61 0 0 61 0.582 - 0/998 1066/3375 69 68.7 158 161 175 576 1.21e+03 0.00158 1.13e-05 93 0 0 93 0.609 - 0/998 1067/3375 69 68.7 158 161 174 576 1.21e+03 0.00157 1.13e-05 77 0 8 77 0.6 - 0/998 1068/3375 69 68.7 158 161 174 576 1.21e+03 0.00156 1.13e-05 52 0 4 52 0.606 - 0/998 1069/3375 69 68.7 158 161 174 576 1.21e+03 0.00156 1.13e-05 115 0 0 115 0.616 - 0/998 1070/3375 69 68.7 158 161 174 576 1.21e+03 0.00154 1.13e-05 56 0 12 56 0.585 - 0/998 1071/3375 69 68.7 158 161 174 576 1.21e+03 0.00154 1.13e-05 96 0 2 96 0.605 - 0/998 1072/3375 69 68.7 158 161 174 576 1.21e+03 0.00154 1.12e-05 88 0 2 88 0.597 - 0/998 1073/3375 69 68.7 158 161 174 576 1.21e+03 0.00153 1.12e-05 83 0 1 83 0.596 - 0/998 1074/3375 69 68.7 158 161 174 576 1.21e+03 0.00153 1.12e-05 83 0 3 83 0.598 - 0/998 1075/3375 69 68.7 158 161 174 576 1.21e+03 0.00153 1.12e-05 60 0 0 60 0.586 - 0/998 1076/3375 69 68.7 158 161 174 576 1.21e+03 0.00153 1.12e-05 92 0 1 92 0.58 - 0/998 1077/3375 69 68.7 158 161 174 576 1.21e+03 0.00153 1.12e-05 83 0 0 83 0.603 - 0/998 1078/3375 69 68.7 158 161 174 576 1.21e+03 0.00153 1.12e-05 94 0 0 94 0.617 - 0/998 1079/3375 69 68.7 158 161 174 576 1.21e+03 0.00153 1.12e-05 64 0 0 64 0.607 - 0/998 1080/3375 69 68.7 158 161 174 575 1.21e+03 0.00153 1.12e-05 76 0 0 76 0.601 - 0/998 1081/3375 69 68.7 158 161 174 575 1.21e+03 0.00153 1.12e-05 55 0 0 55 0.606 - 0/998 1082/3375 69 68.7 158 161 174 575 1.21e+03 0.00153 1.12e-05 79 0 0 79 0.598 - 0/998 1083/3375 69 68.7 158 161 174 575 1.21e+03 0.00153 1.11e-05 133 0 0 133 0.617 - 0/998 1084/3375 69 68.7 158 161 174 575 1.21e+03 0.00153 1.11e-05 68 0 0 68 0.59 - 0/998 1085/3375 69 68.7 158 161 174 575 1.21e+03 0.00153 1.11e-05 102 0 0 102 0.591 - 0/998 1086/3375 69 68.7 158 161 174 575 1.21e+03 0.00153 1.11e-05 42 0 0 42 0.592 - 0/998 1087/3375 69 68.7 158 161 174 575 1.21e+03 0.00153 1.11e-05 77 0 0 77 0.602 - 0/998 1088/3375 69 68.7 158 161 174 575 1.2e+03 0.00153 1.11e-05 73 0 0 73 0.594 - 0/998 1089/3375 69 68.6 158 161 174 575 1.2e+03 0.00153 1.11e-05 91 0 0 91 0.61 - 0/998 1090/3375 69 68.7 158 161 174 575 1.2e+03 0.00153 1.11e-05 90 0 0 90 0.595 - 0/998 1091/3375 69 68.7 158 161 174 575 1.2e+03 0.00153 1.1e-05 87 0 0 87 0.604 - 0/998 1092/3375 69 68.7 158 161 174 575 1.21e+03 0.00153 1.1e-05 98 0 0 98 0.618 - 0/998 1093/3375 69 68.6 157 161 174 575 1.2e+03 0.00153 1.1e-05 51 0 0 51 0.584 - 0/998 1094/3375 69 68.6 157 161 174 575 1.2e+03 0.00153 1.1e-05 66 0 1 66 0.585 - 0/998 1095/3375 68.9 68.6 157 161 174 575 1.2e+03 0.00153 1.1e-05 63 0 0 63 0.593 - 0/998 1096/3375 68.9 68.6 157 161 174 574 1.2e+03 0.00153 1.1e-05 67 0 0 67 0.618 - 0/998 1097/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00153 1.1e-05 66 0 0 66 0.582 - 0/998 1098/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.1e-05 56 0 7 56 0.589 - 0/998 1099/3375 68.9 68.5 157 161 173 574 1.2e+03 0.00151 1.1e-05 59 0 1 59 0.586 - 0/998 1100/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.1e-05 97 0 0 97 0.596 - 0/998 1101/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.1e-05 95 0 0 95 0.587 - 0/998 1102/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.1e-05 92 0 0 92 0.611 - 0/998 1103/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.09e-05 72 0 4 72 0.594 - 0/998 1104/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.09e-05 78 0 0 78 0.605 - 0/998 1105/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.09e-05 120 0 0 120 0.607 - 0/998 1106/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.09e-05 94 0 0 94 0.59 - 0/998 1107/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.09e-05 77 0 0 77 0.6 - 0/998 1108/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.09e-05 86 0 0 86 0.599 - 0/998 1109/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.09e-05 68 0 0 68 0.614 - 0/998 1110/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00151 1.09e-05 103 0 0 103 0.606 - 0/998 1111/3375 68.9 68.5 157 161 173 574 1.2e+03 0.0015 1.09e-05 49 0 2 49 0.603 - 0/998 1112/3375 68.9 68.6 157 161 173 574 1.2e+03 0.0015 1.09e-05 170 0 0 170 0.6 - 0/998 1113/3375 68.9 68.6 157 161 173 574 1.2e+03 0.0015 1.08e-05 52 0 2 52 0.595 - 0/998 1114/3375 68.9 68.6 157 161 173 574 1.2e+03 0.0015 1.08e-05 60 0 0 60 0.611 - 0/998 1115/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00149 1.08e-05 132 0 8 129 0.613 - 0/998 1116/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00149 1.08e-05 99 0 0 99 0.597 - 0/998 1117/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00157 1.17e-05 74 2 20 70 0.626 - 0/998 1118/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00156 1.17e-05 96 0 18 94 0.61 - 0/998 1119/3375 68.9 68.6 157 161 173 574 1.2e+03 0.00154 1.17e-05 69 0 10 69 0.634 - 0/998 1120/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00154 1.17e-05 69 0 7 69 0.631 - 0/998 1121/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00162 1.25e-05 101 2 9 96 0.616 - 0/998 1122/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00162 1.25e-05 64 0 8 64 0.622 - 0/998 1123/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00161 1.25e-05 107 0 5 107 0.635 - 0/998 1124/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00159 1.25e-05 108 0 16 107 0.619 - 0/998 1125/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00163 1.29e-05 57 1 12 56 0.611 - 0/998 1126/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00162 1.29e-05 88 0 5 87 0.607 - 0/998 1127/3375 68.9 68.6 157 160 173 574 1.2e+03 0.0016 1.29e-05 64 0 17 64 0.623 - 0/998 1128/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00157 1.29e-05 124 0 28 118 0.626 - 0/998 1129/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00157 1.29e-05 67 0 0 67 0.611 - 0/998 1130/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00156 1.29e-05 72 0 10 69 0.622 - 0/998 1131/3375 68.9 68.5 157 160 173 573 1.2e+03 0.00155 1.29e-05 53 0 7 53 0.605 - 0/998 1132/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00153 1.29e-05 119 0 17 119 0.648 - 0/998 1133/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00153 1.29e-05 95 0 0 95 0.628 - 0/998 1134/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00152 1.28e-05 91 0 11 89 0.63 - 0/998 1135/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00152 1.28e-05 65 0 0 65 0.609 - 0/998 1136/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00152 1.28e-05 84 0 4 84 0.616 - 0/998 1137/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00152 1.28e-05 89 0 0 89 0.626 - 0/998 1138/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00151 1.28e-05 118 0 4 118 0.595 - 0/998 1139/3375 69 68.6 157 160 173 574 1.2e+03 0.00151 1.28e-05 92 0 0 92 0.622 - 0/998 1140/3375 69 68.6 157 160 173 574 1.2e+03 0.0015 1.28e-05 75 0 17 75 0.605 - 0/998 1141/3375 68.9 68.6 157 160 173 574 1.2e+03 0.00154 1.32e-05 56 1 0 55 0.615 - 0/998 1142/3375 68.9 68.5 156 160 173 573 1.2e+03 0.00154 1.32e-05 43 0 1 43 0.608 - 0/998 1143/3375 68.9 68.5 156 160 172 573 1.2e+03 0.00148 1.32e-05 50 0 42 49 0.616 - 0/998 1144/3375 68.9 68.5 156 160 172 573 1.2e+03 0.00148 1.32e-05 79 0 2 79 0.626 - 0/998 1145/3375 68.9 68.5 156 160 172 573 1.2e+03 0.00148 1.32e-05 71 0 5 71 0.617 - 0/998 1146/3375 68.9 68.5 156 160 172 573 1.2e+03 0.00148 1.32e-05 56 0 0 56 0.604 - 0/998 1147/3375 68.9 68.5 156 160 172 573 1.2e+03 0.00148 1.32e-05 62 0 1 62 0.596 - 0/998 1148/3375 68.8 68.4 156 160 172 572 1.2e+03 0.00148 1.32e-05 50 0 0 50 0.617 - 0/998 1149/3375 68.8 68.4 156 159 172 572 1.2e+03 0.00148 1.31e-05 59 0 1 59 0.626 - 0/998 1150/3375 68.8 68.4 156 159 172 572 1.2e+03 0.00148 1.31e-05 63 0 0 63 0.601 - 0/998 1151/3375 68.9 68.5 156 159 172 573 1.2e+03 0.00148 1.31e-05 148 0 1 147 0.63 - 0/998 1152/3375 68.9 68.5 156 160 172 573 1.2e+03 0.00148 1.31e-05 118 0 0 118 0.616 - 0/998 1153/3375 68.9 68.5 156 160 172 573 1.2e+03 0.00148 1.31e-05 137 0 1 137 0.626 - 0/998 1154/3375 68.9 68.5 156 160 172 573 1.2e+03 0.00148 1.31e-05 61 0 0 61 0.627 - 0/998 1155/3375 68.9 68.5 156 160 172 573 1.2e+03 0.00148 1.31e-05 77 0 0 77 0.607 - 0/998 1156/3375 68.9 68.5 156 159 172 573 1.2e+03 0.00147 1.31e-05 37 0 2 37 0.599 - 0/998 1157/3375 68.9 68.5 156 159 172 573 1.2e+03 0.00147 1.31e-05 103 0 0 103 0.609 - 0/998 1158/3375 68.9 68.5 156 159 172 573 1.2e+03 0.00147 1.3e-05 83 0 0 83 0.617 - 0/998 1159/3375 68.9 68.5 156 159 172 573 1.2e+03 0.00151 1.35e-05 90 1 0 89 0.617 - 0/998 1160/3375 68.9 68.4 156 159 172 573 1.2e+03 0.00151 1.34e-05 98 0 0 98 0.613 - 0/998 1161/3375 68.9 68.5 156 159 172 573 1.2e+03 0.00155 1.39e-05 134 1 1 133 0.634 - 0/998 1162/3375 68.9 68.5 156 159 172 573 1.2e+03 0.00155 1.38e-05 91 0 1 91 0.619 - 0/998 1163/3375 68.9 68.5 156 159 172 573 1.2e+03 0.00155 1.38e-05 81 0 0 81 0.598 - 0/998 1164/3375 68.9 68.5 156 159 172 573 1.2e+03 0.00155 1.38e-05 88 0 0 88 0.615 - 0/998 1165/3375 68.9 68.4 156 159 172 573 1.2e+03 0.00155 1.38e-05 69 0 1 69 0.623 - 0/998 1166/3375 68.9 68.4 156 159 172 573 1.2e+03 0.00155 1.38e-05 94 0 0 94 0.608 - 0/998 1167/3375 68.9 68.4 156 159 172 573 1.2e+03 0.00155 1.38e-05 86 0 0 86 0.593 - 0/998 1168/3375 68.9 68.4 156 159 172 573 1.2e+03 0.00149 1.38e-05 28 0 39 27 0.607 - 0/998 1169/3375 68.9 68.4 156 159 172 573 1.2e+03 0.00149 1.38e-05 94 0 0 94 0.628 - 0/998 1170/3375 68.9 68.4 156 159 172 573 1.2e+03 0.00152 1.42e-05 79 1 3 77 0.608 - 0/998 1171/3375 68.9 68.4 156 159 172 573 1.2e+03 0.00152 1.42e-05 138 0 9 137 0.62 - 0/998 1172/3375 68.9 68.4 156 159 172 573 1.2e+03 0.00147 1.42e-05 79 0 27 77 0.616 - 0/998 1173/3375 68.9 68.4 156 159 172 573 1.2e+03 0.00144 1.41e-05 51 0 38 51 0.604 - 0/998 1174/3375 68.9 68.4 156 159 172 573 1.2e+03 0.00141 1.41e-05 71 0 40 71 0.601 - 0/998 1175/3375 68.9 68.4 156 159 172 572 1.2e+03 0.00144 1.46e-05 37 1 5 36 0.602 - 0/998 1176/3375 68.9 68.4 156 159 172 572 1.2e+03 0.00143 1.46e-05 66 0 24 64 0.597 - 0/998 1177/3375 68.9 68.4 156 159 172 572 1.2e+03 0.00142 1.45e-05 67 0 10 66 0.605 - 0/998 1178/3375 68.9 68.4 156 159 171 572 1.2e+03 0.00135 1.45e-05 98 0 3 96 0.626 - 0/998 1179/3375 68.9 68.4 156 159 171 572 1.2e+03 0.00135 1.45e-05 96 0 9 96 0.609 - 0/998 1180/3375 68.9 68.4 156 159 171 572 1.2e+03 0.00135 1.49e-05 92 1 20 91 0.613 - 0/998 1181/3375 68.9 68.4 156 159 171 572 1.2e+03 0.00138 1.53e-05 100 1 13 98 0.626 - 0/998 1182/3375 68.9 68.4 156 159 171 572 1.19e+03 0.00138 1.53e-05 64 0 0 64 0.587 - 0/998 1183/3375 68.9 68.4 156 159 171 572 1.19e+03 0.00138 1.53e-05 70 0 0 70 0.61 - 0/998 1184/3375 68.9 68.4 156 159 171 572 1.19e+03 0.00141 1.61e-05 82 2 25 79 0.607 - 0/998 1185/3375 68.9 68.4 156 159 171 572 1.19e+03 0.00141 1.61e-05 109 0 7 109 0.618 - 0/998 1186/3375 68.9 68.4 156 159 171 572 1.19e+03 0.00141 1.61e-05 121 0 2 121 0.608 - 0/998 1187/3375 68.9 68.4 156 159 171 572 1.19e+03 0.00138 1.61e-05 92 0 44 92 0.607 - 0/998 1188/3375 68.9 68.4 156 159 171 572 1.19e+03 0.00137 1.61e-05 78 0 6 78 0.628 - 0/998 1189/3375 68.9 68.4 156 159 171 572 1.19e+03 0.00137 1.6e-05 89 0 5 89 0.599 - 0/998 1190/3375 68.9 68.4 155 158 171 571 1.19e+03 0.00133 1.65e-05 54 1 11 49 0.6 - 0/998 1191/3375 68.9 68.4 155 158 171 571 1.19e+03 0.00137 1.73e-05 92 2 27 88 0.601 - 0/998 1192/3375 68.8 68.3 155 158 171 571 1.19e+03 0.00135 1.73e-05 59 0 25 57 0.61 - 0/998 1193/3375 68.8 68.4 155 159 171 571 1.19e+03 0.0014 1.81e-05 104 2 11 100 0.604 - 0/998 1194/3375 68.8 68.3 155 158 171 571 1.19e+03 0.00139 1.81e-05 74 0 10 73 0.599 - 0/998 1195/3375 68.8 68.3 155 158 171 571 1.19e+03 0.00139 1.81e-05 62 0 8 62 0.6 - 0/998 1196/3375 68.8 68.4 155 159 171 571 1.19e+03 0.00132 1.81e-05 105 0 9 104 0.599 - 0/998 1197/3375 68.8 68.4 155 159 171 571 1.19e+03 0.00132 1.81e-05 63 0 5 63 0.608 - 0/998 1198/3375 68.8 68.4 155 158 171 571 1.19e+03 0.00131 1.8e-05 69 0 21 66 0.599 - 0/998 1199/3375 68.8 68.3 155 158 171 571 1.19e+03 0.0013 1.8e-05 65 0 6 65 0.6 - 0/998 1200/3375 68.8 68.4 155 158 171 571 1.19e+03 0.00125 1.8e-05 109 0 51 109 0.597 - 0/998 1201/3375 68.8 68.3 155 158 171 571 1.19e+03 0.00125 1.8e-05 68 0 6 68 0.612 - 0/998 1202/3375 68.8 68.3 155 158 171 571 1.19e+03 0.00124 1.8e-05 84 0 6 84 0.604 - 0/998 1203/3375 68.8 68.3 155 158 171 571 1.19e+03 0.00124 1.8e-05 100 0 12 99 0.609 - 0/998 1204/3375 68.8 68.3 155 158 171 571 1.19e+03 0.00124 1.8e-05 46 0 1 46 0.617 - 0/998 1205/3375 68.8 68.3 155 158 171 571 1.19e+03 0.00123 1.79e-05 87 0 9 85 0.6 - 0/998 1206/3375 68.8 68.3 155 158 171 571 1.19e+03 0.00123 1.79e-05 67 0 4 67 0.595 - 0/998 1207/3375 68.8 68.4 155 158 171 571 1.19e+03 0.00113 1.79e-05 154 0 54 153 0.62 - 0/998 1208/3375 68.8 68.3 155 158 171 571 1.19e+03 0.00113 1.79e-05 63 0 3 63 0.585 - 0/998 1209/3375 68.8 68.3 155 158 171 571 1.19e+03 0.0011 1.79e-05 87 0 62 83 0.602 - 0/998 1210/3375 68.8 68.4 155 158 171 571 1.19e+03 0.0011 1.78e-05 122 0 1 122 0.593 - 0/998 1211/3375 68.9 68.4 155 158 171 571 1.19e+03 0.00109 1.78e-05 113 0 15 112 0.618 - 0/998 1212/3375 68.9 68.4 155 158 171 571 1.19e+03 0.000993 1.78e-05 109 0 60 94 0.603 - 0/998 1213/3375 68.9 68.4 155 158 171 571 1.19e+03 0.000968 1.78e-05 42 0 36 42 0.6 - 0/998 1214/3375 68.9 68.4 155 158 171 571 1.19e+03 0.000965 1.78e-05 80 0 10 78 0.608 - 0/998 1215/3375 68.9 68.4 155 158 171 571 1.19e+03 0.000976 1.9e-05 109 3 24 102 0.599 - 0/998 1216/3375 68.9 68.4 155 158 171 571 1.19e+03 0.000976 1.9e-05 54 0 2 54 0.61 - 0/998 1217/3375 68.9 68.4 155 158 171 571 1.19e+03 0.000972 1.9e-05 94 0 10 94 0.609 - 0/998 1218/3375 68.8 68.3 155 158 171 571 1.19e+03 0.000972 1.9e-05 34 0 0 34 0.59 - 0/998 1219/3375 68.8 68.3 155 158 171 571 1.19e+03 0.000969 1.9e-05 69 0 7 69 0.61 - 0/998 1220/3375 68.8 68.3 155 158 171 571 1.19e+03 0.000961 1.89e-05 97 0 18 97 0.625 - 0/998 1221/3375 68.8 68.3 155 158 171 571 1.19e+03 0.000961 1.89e-05 100 0 1 100 0.592 - 0/998 1222/3375 68.8 68.3 155 158 170 571 1.19e+03 0.000961 1.89e-05 60 0 0 60 0.591 - 0/998 1223/3375 68.9 68.3 155 158 171 571 1.19e+03 0.000961 1.89e-05 127 0 0 127 0.615 - 0/998 1224/3375 68.9 68.4 155 158 171 571 1.19e+03 0.000961 1.89e-05 97 0 0 97 0.593 - 0/998 1225/3375 68.9 68.4 155 158 171 571 1.19e+03 0.000961 1.89e-05 108 0 0 108 0.585 - 0/998 1226/3375 68.9 68.4 155 158 171 571 1.19e+03 0.000961 1.88e-05 100 0 0 100 0.608 - 0/998 1227/3375 68.9 68.4 155 158 171 571 1.19e+03 0.000961 1.88e-05 62 0 0 62 0.592 - 0/998 1228/3375 68.9 68.4 155 158 171 571 1.19e+03 0.000961 1.88e-05 84 0 2 82 0.613 - 0/998 1229/3375 68.9 68.3 155 158 170 571 1.19e+03 0.000961 1.88e-05 57 0 0 57 0.618 - 0/998 1230/3375 68.9 68.3 155 158 170 571 1.19e+03 0.000961 1.88e-05 84 0 0 84 0.585 - 0/998 1231/3375 68.9 68.3 155 158 170 571 1.19e+03 0.000956 1.88e-05 95 0 13 95 0.597 - 0/998 1232/3375 68.9 68.3 155 158 170 571 1.19e+03 0.000956 1.87e-05 90 0 0 90 0.595 - 0/998 1233/3375 68.8 68.3 155 158 170 571 1.19e+03 0.000955 1.87e-05 59 0 2 59 0.603 - 0/998 1234/3375 68.8 68.3 155 158 170 570 1.19e+03 0.000948 1.87e-05 38 0 19 38 0.613 - 0/998 1235/3375 68.8 68.3 155 158 170 571 1.19e+03 0.000948 1.87e-05 94 0 1 94 0.599 - 0/998 1236/3375 68.8 68.3 155 158 170 571 1.19e+03 0.000946 1.87e-05 107 0 6 107 0.599 - 0/998 1237/3375 68.8 68.3 155 158 170 571 1.19e+03 0.000945 1.87e-05 106 0 3 106 0.59 - 0/998 1238/3375 68.9 68.3 155 158 170 571 1.19e+03 0.000961 1.91e-05 98 1 3 96 0.604 - 0/998 1239/3375 68.8 68.3 155 158 170 571 1.19e+03 0.000961 1.9e-05 62 0 1 62 0.589 - 0/998 1240/3375 68.8 68.3 155 158 170 571 1.19e+03 0.000961 1.9e-05 92 0 0 92 0.619 - 0/998 1241/3375 68.9 68.4 155 158 170 571 1.19e+03 0.00096 1.9e-05 130 0 4 127 0.604 - 0/998 1242/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000958 1.9e-05 102 0 4 100 0.61 - 0/998 1243/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000958 1.9e-05 72 0 1 72 0.594 - 0/998 1244/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000951 1.9e-05 117 0 19 117 0.606 - 0/998 1245/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000967 1.93e-05 67 1 4 66 0.586 - 0/998 1246/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000963 1.93e-05 85 0 8 85 0.591 - 0/998 1247/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000962 1.93e-05 54 0 1 54 0.594 - 0/998 1248/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000995 2.01e-05 93 2 4 90 0.608 - 0/998 1249/3375 68.8 68.3 155 158 170 570 1.19e+03 0.00099 2.01e-05 67 0 14 64 0.614 - 0/998 1250/3375 68.8 68.3 155 158 170 570 1.19e+03 0.001 2.09e-05 79 2 50 77 0.615 - 0/998 1251/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000993 2.08e-05 180 0 8 180 0.603 - 0/998 1252/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000988 2.08e-05 81 0 16 78 0.604 - 0/998 1253/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000988 2.08e-05 65 0 0 65 0.611 - 0/998 1254/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000975 2.08e-05 88 0 14 88 0.615 - 0/998 1255/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000972 2.08e-05 79 0 9 79 0.614 - 0/998 1256/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000957 2.08e-05 98 0 38 93 0.607 - 0/998 1257/3375 68.8 68.4 155 158 170 570 1.19e+03 0.000933 2.07e-05 43 0 33 43 0.593 - 0/998 1258/3375 68.9 68.4 155 157 170 571 1.19e+03 0.000928 2.07e-05 81 0 14 80 0.59 - 0/998 1259/3375 68.9 68.4 155 157 170 571 1.19e+03 0.000918 2.07e-05 88 0 31 86 0.619 - 0/998 1260/3375 68.9 68.4 155 158 170 571 1.19e+03 0.000955 2.19e-05 134 3 22 130 0.618 - 0/998 1261/3375 68.9 68.4 155 157 170 571 1.19e+03 0.000955 2.19e-05 81 0 1 81 0.611 - 0/998 1262/3375 68.9 68.4 155 157 170 571 1.19e+03 0.000944 2.18e-05 60 0 26 60 0.584 - 0/998 1263/3375 68.9 68.4 155 157 170 570 1.19e+03 0.000946 2.22e-05 114 1 33 110 0.596 - 0/998 1264/3375 68.9 68.4 155 157 170 570 1.19e+03 0.000944 2.22e-05 89 0 4 89 0.59 - 0/998 1265/3375 68.9 68.4 155 157 170 571 1.19e+03 0.00112 2.49e-05 128 2 25 123 0.603 - 0/998 1266/3375 68.9 68.4 155 157 170 571 1.19e+03 0.00113 2.53e-05 93 1 16 92 0.593 - 0/998 1267/3375 68.9 68.4 154 157 170 571 1.19e+03 0.0013 2.81e-05 58 2 13 55 0.59 - 0/998 1268/3375 68.9 68.4 154 157 170 570 1.19e+03 0.00134 2.92e-05 110 3 24 102 0.6 - 0/998 1269/3375 68.9 68.4 155 157 170 571 1.19e+03 0.00136 3e-05 97 2 22 93 0.587 - 0/998 1270/3375 68.9 68.5 155 157 170 571 1.19e+03 0.00136 3e-05 115 0 1 114 0.585 - 0/998 1271/3375 68.9 68.4 155 157 170 571 1.19e+03 0.00135 3e-05 44 0 22 44 0.583 - 0/998 1272/3375 68.9 68.4 154 157 170 570 1.19e+03 0.00134 2.99e-05 72 0 16 72 0.594 - 0/998 1273/3375 68.9 68.4 155 157 170 571 1.19e+03 0.00146 3.34e-05 128 9 23 119 0.603 - 0/998 1274/3375 68.9 68.4 154 157 170 570 1.19e+03 0.00151 3.54e-05 75 5 55 65 0.604 - 0/998 1275/3375 68.9 68.5 155 157 170 571 1.19e+03 0.0015 3.53e-05 117 0 17 115 0.604 - 0/998 1276/3375 68.9 68.5 155 157 170 571 1.19e+03 0.00151 3.57e-05 86 1 8 85 0.593 - 0/998 1277/3375 68.9 68.4 154 157 170 570 1.19e+03 0.00151 3.57e-05 59 0 19 59 0.598 - 0/998 1278/3375 68.9 68.4 154 157 170 570 1.19e+03 0.0015 3.57e-05 65 0 3 65 0.606 - 0/998 1279/3375 68.9 68.4 154 157 170 570 1.19e+03 0.00148 3.56e-05 57 0 34 55 0.573 - 0/998 1280/3375 68.9 68.4 154 157 170 570 1.19e+03 0.00146 3.6e-05 67 1 70 64 0.599 - 0/998 1281/3375 68.9 68.4 154 157 169 570 1.19e+03 0.00145 3.6e-05 47 0 3 47 0.578 - 0/998 1282/3375 68.9 68.4 154 157 169 570 1.19e+03 0.00145 3.6e-05 88 0 12 88 0.6 - 0/998 1283/3375 68.9 68.4 154 157 169 570 1.19e+03 0.00145 3.59e-05 80 0 3 80 0.587 - 0/998 1284/3375 68.9 68.4 154 157 169 570 1.19e+03 0.00139 3.59e-05 62 0 61 62 0.599 - 0/998 1285/3375 68.8 68.4 154 157 169 570 1.19e+03 0.00139 3.59e-05 67 0 9 66 0.604 - 0/998 1286/3375 68.8 68.3 154 157 169 569 1.19e+03 0.00135 3.59e-05 44 0 70 44 0.596 - 0/998 1287/3375 68.8 68.3 154 157 169 569 1.19e+03 0.00135 3.59e-05 71 0 0 71 0.593 - 0/998 1288/3375 68.8 68.3 154 157 169 569 1.19e+03 0.00137 3.66e-05 94 2 14 91 0.593 - 0/998 1289/3375 68.8 68.3 154 157 169 569 1.19e+03 0.00132 3.66e-05 65 0 92 63 0.6 - 0/998 1290/3375 68.8 68.3 154 157 169 569 1.19e+03 0.00134 3.73e-05 65 2 7 63 0.594 - 0/998 1291/3375 68.8 68.3 154 157 169 569 1.19e+03 0.00134 3.73e-05 126 0 5 126 0.602 - 0/998 1292/3375 68.8 68.3 154 157 169 569 1.19e+03 0.00134 3.73e-05 80 0 3 80 0.602 - 0/998 1293/3375 68.8 68.3 154 157 169 569 1.19e+03 0.00134 3.73e-05 94 0 1 93 0.595 - 0/998 1294/3375 68.9 68.4 154 157 169 570 1.19e+03 0.00134 3.72e-05 177 0 1 177 0.614 - 0/998 1295/3375 68.9 68.4 154 157 169 570 1.19e+03 0.00134 3.72e-05 82 0 0 82 0.569 - 0/998 1296/3375 68.9 68.4 154 157 169 570 1.19e+03 0.00134 3.71e-05 87 0 0 87 0.597 - 0/998 1297/3375 68.9 68.4 154 157 169 570 1.19e+03 0.00134 3.75e-05 62 1 25 61 0.604 - 0/998 1298/3375 68.8 68.3 154 157 169 569 1.19e+03 0.00134 3.75e-05 43 0 2 42 0.604 - 0/998 1299/3375 68.8 68.3 154 157 169 569 1.19e+03 0.00134 3.75e-05 64 0 0 64 0.593 - 0/998 1300/3375 68.9 68.4 154 157 169 570 1.19e+03 0.00131 3.78e-05 168 1 4 165 0.6 - 0/998 1301/3375 68.9 68.4 154 157 169 570 1.19e+03 0.00131 3.78e-05 83 0 1 83 0.591 - 0/998 1302/3375 68.9 68.3 154 157 169 570 1.19e+03 0.00131 3.78e-05 79 0 0 79 0.591 - 0/998 1303/3375 68.9 68.4 154 157 169 570 1.19e+03 0.00131 3.78e-05 99 0 0 99 0.598 - 0/998 1304/3375 68.8 68.3 154 157 169 570 1.19e+03 0.00131 3.77e-05 55 0 4 53 0.595 - 0/998 1305/3375 68.8 68.3 154 156 169 569 1.19e+03 0.0013 3.77e-05 63 0 11 63 0.602 - 0/998 1306/3375 68.8 68.3 154 156 169 569 1.19e+03 0.0013 3.77e-05 53 0 4 53 0.607 - 0/998 1307/3375 68.8 68.3 154 156 169 569 1.19e+03 0.0013 3.77e-05 67 0 2 67 0.589 - 0/998 1308/3375 68.8 68.3 154 156 169 569 1.19e+03 0.0013 3.76e-05 85 0 2 85 0.569 - 0/998 1309/3375 68.8 68.3 154 156 169 569 1.19e+03 0.0013 3.76e-05 88 0 0 88 0.615 - 0/998 1310/3375 68.8 68.3 154 156 169 569 1.19e+03 0.0013 3.76e-05 115 0 0 115 0.598 - 0/998 1311/3375 68.8 68.3 154 156 169 569 1.18e+03 0.0013 3.75e-05 59 0 0 59 0.58 - 0/998 1312/3375 68.8 68.3 154 156 169 569 1.18e+03 0.0013 3.75e-05 89 0 0 89 0.584 - 0/998 1313/3375 68.8 68.3 154 156 169 569 1.18e+03 0.00131 3.78e-05 89 1 16 85 0.6 - 0/998 1314/3375 68.8 68.3 154 156 169 569 1.18e+03 0.00131 3.78e-05 77 0 0 77 0.594 - 0/998 1315/3375 68.8 68.3 154 156 169 569 1.18e+03 0.0013 3.78e-05 99 0 11 99 0.585 - 0/998 1316/3375 68.8 68.3 154 156 169 569 1.18e+03 0.00132 3.85e-05 53 2 14 50 0.6 - 0/998 1317/3375 68.8 68.3 154 156 169 569 1.18e+03 0.00133 3.89e-05 129 1 4 128 0.587 - 0/998 1318/3375 68.8 68.3 154 156 169 569 1.18e+03 0.00134 3.92e-05 64 1 2 62 0.583 - 0/998 1319/3375 68.8 68.3 154 156 169 569 1.18e+03 0.00134 3.96e-05 102 1 27 99 0.609 - 0/998 1320/3375 68.8 68.3 154 156 169 569 1.19e+03 0.00134 3.95e-05 127 0 4 127 0.595 - 0/998 1321/3375 68.8 68.3 154 156 169 569 1.18e+03 0.00134 3.95e-05 86 0 0 86 0.586 - 0/998 1322/3375 68.9 68.4 154 156 169 569 1.19e+03 0.00134 3.94e-05 101 0 1 101 0.595 - 0/998 1323/3375 68.8 68.4 154 156 169 569 1.18e+03 0.00134 3.94e-05 79 0 1 79 0.599 - 0/998 1324/3375 68.8 68.3 154 156 169 569 1.18e+03 0.00134 3.94e-05 41 0 0 41 0.599 - 0/998 1325/3375 68.8 68.3 154 156 168 569 1.18e+03 0.00134 3.94e-05 53 0 0 53 0.587 - 0/998 1326/3375 68.8 68.3 154 156 168 569 1.18e+03 0.00134 3.93e-05 89 0 3 88 0.597 - 0/998 1327/3375 68.8 68.3 154 156 168 569 1.18e+03 0.00134 3.93e-05 86 0 7 86 0.591 - 0/998 1328/3375 68.8 68.3 154 156 168 569 1.18e+03 0.00134 3.93e-05 96 0 1 96 0.583 - 0/998 1329/3375 68.8 68.3 154 156 168 569 1.18e+03 0.00134 3.92e-05 138 0 0 138 0.585 - 0/998 1330/3375 68.8 68.4 154 156 168 569 1.18e+03 0.00134 3.91e-05 101 0 0 101 0.58 - 0/998 1331/3375 68.8 68.3 154 156 168 569 1.18e+03 0.00134 3.91e-05 47 0 1 47 0.58 - 0/998 1332/3375 68.8 68.3 154 156 168 568 1.18e+03 0.00134 3.91e-05 85 0 2 85 0.594 - 0/998 1333/3375 68.8 68.3 154 156 168 568 1.18e+03 0.00134 3.91e-05 86 0 1 86 0.59 - 0/998 1334/3375 68.8 68.3 154 156 168 569 1.18e+03 0.00134 3.9e-05 102 0 0 102 0.59 - 0/998 1335/3375 68.8 68.4 154 156 168 569 1.18e+03 0.00134 3.9e-05 99 0 0 99 0.595 - 0/998 1336/3375 68.8 68.4 154 156 168 569 1.18e+03 0.00133 3.9e-05 85 0 4 85 0.591 - 0/998 1337/3375 68.9 68.4 154 156 168 569 1.18e+03 0.00133 3.9e-05 91 0 3 91 0.582 - 0/998 1338/3375 68.8 68.3 154 156 168 569 1.18e+03 0.00133 3.89e-05 69 0 9 69 0.594 - 0/998 1339/3375 68.8 68.3 153 156 168 569 1.18e+03 0.00134 3.93e-05 66 1 16 65 0.586 - 0/998 1340/3375 68.8 68.3 154 156 168 569 1.18e+03 0.00133 3.93e-05 100 0 15 100 0.587 - 0/998 1341/3375 68.9 68.3 154 156 168 569 1.18e+03 0.00134 3.96e-05 105 1 22 102 0.588 - 0/998 1342/3375 68.8 68.3 154 156 168 569 1.18e+03 0.00133 3.96e-05 78 0 6 78 0.583 - 0/998 1343/3375 68.8 68.3 153 156 168 569 1.18e+03 0.00129 3.96e-05 75 0 8 73 0.577 - 0/998 1344/3375 68.8 68.3 153 156 168 569 1.18e+03 0.00128 3.95e-05 89 0 2 89 0.584 - 0/998 1345/3375 68.8 68.3 153 156 168 569 1.18e+03 0.00129 3.99e-05 72 1 1 71 0.586 - 0/998 1346/3375 68.8 68.3 153 156 168 569 1.18e+03 0.00129 3.98e-05 100 0 0 100 0.591 - 0/998 1347/3375 68.8 68.3 153 156 168 569 1.18e+03 0.00125 3.98e-05 98 0 6 96 0.603 - 0/998 1348/3375 68.9 68.4 153 156 168 569 1.18e+03 0.00125 3.98e-05 123 0 0 123 0.605 - 0/998 1349/3375 68.9 68.3 153 156 168 569 1.18e+03 0.00125 3.97e-05 81 0 2 81 0.585 - 0/998 1350/3375 68.8 68.3 153 156 168 569 1.18e+03 0.00125 3.97e-05 85 0 1 85 0.593 - 0/998 1351/3375 68.9 68.3 153 156 168 569 1.18e+03 0.00128 4.08e-05 76 3 7 73 0.581 - 0/998 1352/3375 68.9 68.3 153 156 168 569 1.18e+03 0.00128 4.07e-05 108 0 0 108 0.612 - 0/998 1353/3375 68.8 68.3 153 156 168 569 1.18e+03 0.00128 4.07e-05 35 0 0 35 0.583 - 0/998 1354/3375 68.8 68.3 153 156 168 569 1.18e+03 0.00128 4.07e-05 90 0 0 90 0.594 - 0/998 1355/3375 68.8 68.3 153 156 168 569 1.18e+03 0.00129 4.1e-05 88 1 1 86 0.602 - 0/998 1356/3375 68.9 68.3 153 156 168 569 1.18e+03 0.00129 4.1e-05 98 0 2 98 0.607 - 0/998 1357/3375 68.9 68.3 153 156 168 569 1.18e+03 0.00128 4.1e-05 90 0 6 90 0.609 - 0/998 1358/3375 68.8 68.3 153 156 168 568 1.18e+03 0.00128 4.09e-05 45 0 6 45 0.59 - 0/998 1359/3375 68.9 68.3 153 156 168 569 1.18e+03 0.00128 4.09e-05 105 0 0 105 0.583 - 0/998 1360/3375 68.9 68.3 153 156 168 569 1.18e+03 0.00129 4.13e-05 119 1 0 118 0.589 - 0/998 1361/3375 68.8 68.3 153 156 168 569 1.18e+03 0.00128 4.12e-05 51 0 17 51 0.599 - 0/998 1362/3375 68.8 68.3 153 156 168 568 1.18e+03 0.00128 4.12e-05 60 0 6 60 0.582 - 0/998 1363/3375 68.8 68.3 153 156 168 568 1.18e+03 0.00128 4.12e-05 75 0 1 75 0.608 - 0/998 1364/3375 68.8 68.3 153 156 168 568 1.18e+03 0.00128 4.12e-05 56 0 0 56 0.603 - 0/998 1365/3375 68.8 68.3 153 156 168 568 1.18e+03 0.00128 4.11e-05 86 0 7 86 0.587 - 0/998 1366/3375 68.8 68.2 153 156 168 568 1.18e+03 0.00128 4.11e-05 60 0 2 60 0.583 - 0/998 1367/3375 68.8 68.2 153 156 168 568 1.18e+03 0.00128 4.11e-05 79 0 2 79 0.587 - 0/998 1368/3375 68.8 68.2 153 156 168 568 1.18e+03 0.00127 4.1e-05 94 0 3 94 0.577 - 0/998 1369/3375 68.8 68.2 153 156 168 568 1.18e+03 0.00129 4.17e-05 90 2 21 86 0.593 - 0/998 1370/3375 68.8 68.2 153 156 168 568 1.18e+03 0.0013 4.2e-05 111 1 1 110 0.594 - 0/998 1371/3375 68.8 68.2 153 156 168 568 1.18e+03 0.00129 4.2e-05 110 0 11 110 0.593 - 0/998 1372/3375 68.8 68.3 153 156 168 568 1.18e+03 0.00129 4.2e-05 120 0 0 120 0.601 - 0/998 1373/3375 68.8 68.2 153 156 168 568 1.18e+03 0.00129 4.19e-05 55 0 2 54 0.597 - 0/998 1374/3375 68.8 68.2 153 155 168 568 1.18e+03 0.00129 4.19e-05 66 0 1 66 0.607 - 0/998 1375/3375 68.8 68.3 153 156 168 568 1.18e+03 0.00129 4.19e-05 124 0 7 124 0.607 - 0/998 1376/3375 68.8 68.2 153 155 168 568 1.18e+03 0.00129 4.19e-05 57 0 5 55 0.601 - 0/998 1377/3375 68.8 68.2 153 155 168 568 1.18e+03 0.00129 4.22e-05 83 1 12 81 0.594 - 0/998 1378/3375 68.8 68.3 153 155 168 568 1.18e+03 0.00129 4.22e-05 101 0 18 101 0.595 - 0/998 1379/3375 68.8 68.3 153 156 168 568 1.18e+03 0.0013 4.32e-05 112 3 38 107 0.606 - 0/998 1380/3375 68.8 68.2 153 155 168 568 1.18e+03 0.0013 4.32e-05 75 0 8 73 0.606 - 0/998 1381/3375 68.8 68.3 153 155 168 568 1.18e+03 0.0013 4.31e-05 139 0 0 139 0.612 - 0/998 1382/3375 68.8 68.2 153 155 168 568 1.18e+03 0.0013 4.31e-05 43 0 19 43 0.608 - 0/998 1383/3375 68.8 68.2 153 155 167 568 1.18e+03 0.00129 4.31e-05 85 0 21 84 0.601 - 0/998 1384/3375 68.8 68.2 153 155 167 568 1.18e+03 0.00129 4.3e-05 56 0 13 55 0.614 - 0/998 1385/3375 68.8 68.2 153 155 167 568 1.18e+03 0.00129 4.3e-05 35 0 6 35 0.598 - 0/998 1386/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00128 4.3e-05 84 0 2 84 0.59 - 0/998 1387/3375 68.8 68.2 153 155 167 568 1.18e+03 0.00129 4.33e-05 104 1 8 103 0.592 - 0/998 1388/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00129 4.33e-05 65 0 21 65 0.587 - 0/998 1389/3375 68.8 68.2 153 155 167 568 1.18e+03 0.00123 4.36e-05 135 1 79 123 0.599 - 0/998 1390/3375 68.8 68.2 153 155 167 568 1.18e+03 0.00125 4.43e-05 61 2 16 58 0.594 - 0/998 1391/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00123 4.42e-05 93 0 77 91 0.608 - 0/998 1392/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00122 4.42e-05 64 0 33 64 0.575 - 0/998 1393/3375 68.8 68.2 153 155 167 567 1.18e+03 0.0012 4.45e-05 127 1 81 118 0.591 - 0/998 1394/3375 68.8 68.2 153 155 167 567 1.18e+03 0.0012 4.45e-05 61 0 23 61 0.601 - 0/998 1395/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00119 4.45e-05 44 0 12 44 0.604 - 0/998 1396/3375 68.7 68.2 153 155 167 567 1.18e+03 0.00119 4.45e-05 65 0 10 64 0.609 - 0/998 1397/3375 68.8 68.2 153 155 167 567 1.18e+03 0.0012 4.55e-05 82 3 44 75 0.607 - 0/998 1398/3375 68.7 68.1 153 155 167 567 1.18e+03 0.0012 4.55e-05 57 0 15 57 0.591 - 0/998 1399/3375 68.7 68.1 153 155 167 567 1.18e+03 0.0012 4.55e-05 51 0 11 51 0.599 - 0/998 1400/3375 68.7 68.1 153 155 167 567 1.18e+03 0.0012 4.54e-05 76 0 2 76 0.589 - 0/998 1401/3375 68.7 68.1 153 155 167 567 1.18e+03 0.0012 4.54e-05 106 0 0 106 0.589 - 0/998 1402/3375 68.7 68.1 153 155 167 567 1.18e+03 0.00116 4.54e-05 78 0 11 76 0.589 - 0/998 1403/3375 68.7 68.1 153 155 167 567 1.18e+03 0.00116 4.54e-05 95 0 3 94 0.608 - 0/998 1404/3375 68.7 68.1 153 155 167 567 1.18e+03 0.00116 4.53e-05 93 0 5 93 0.614 - 0/998 1405/3375 68.7 68.1 153 155 167 567 1.18e+03 0.00116 4.56e-05 106 1 8 104 0.591 - 0/998 1406/3375 68.7 68.1 153 155 167 567 1.18e+03 0.00116 4.56e-05 53 0 0 53 0.593 - 0/998 1407/3375 68.7 68.1 153 155 167 567 1.18e+03 0.00116 4.56e-05 153 0 4 152 0.587 - 0/998 1408/3375 68.7 68.1 153 155 167 567 1.18e+03 0.00116 4.55e-05 72 0 1 72 0.589 - 0/998 1409/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00116 4.55e-05 158 0 1 158 0.59 - 0/998 1410/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00116 4.55e-05 119 0 1 119 0.606 - 0/998 1411/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00116 4.54e-05 56 0 2 56 0.604 - 0/998 1412/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00116 4.54e-05 86 0 1 86 0.587 - 0/998 1413/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00117 4.57e-05 82 1 4 81 0.588 - 0/998 1414/3375 68.7 68.1 153 155 167 567 1.18e+03 0.00116 4.57e-05 56 0 1 56 0.589 - 0/998 1415/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00114 4.6e-05 101 1 10 98 0.593 - 0/998 1416/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00114 4.6e-05 103 0 0 103 0.587 - 0/998 1417/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00114 4.59e-05 132 0 3 132 0.604 - 0/998 1418/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00114 4.59e-05 52 0 0 52 0.586 - 0/998 1419/3375 68.7 68.1 153 155 167 567 1.18e+03 0.00114 4.59e-05 44 0 0 44 0.577 - 0/998 1420/3375 68.7 68.1 153 155 167 567 1.18e+03 0.00114 4.59e-05 83 0 0 83 0.604 - 0/998 1421/3375 68.7 68.1 153 155 167 567 1.18e+03 0.00114 4.58e-05 97 0 1 97 0.591 - 0/998 1422/3375 68.8 68.2 153 155 167 567 1.18e+03 0.00114 4.58e-05 118 0 0 118 0.593 - 0/998 1423/3375 68.7 68.2 152 155 167 567 1.18e+03 0.00113 4.58e-05 46 0 11 46 0.587 - 0/998 1424/3375 68.7 68.1 152 155 167 567 1.18e+03 0.00114 4.61e-05 52 1 5 51 0.601 - 0/998 1425/3375 68.7 68.1 152 155 167 567 1.18e+03 0.00115 4.64e-05 106 1 3 104 0.609 - 0/998 1426/3375 68.7 68.1 152 155 166 567 1.18e+03 0.00114 4.63e-05 90 0 7 90 0.603 - 0/998 1427/3375 68.7 68.1 152 155 166 567 1.18e+03 0.00114 4.63e-05 66 0 1 66 0.58 - 0/998 1428/3375 68.7 68.1 152 154 166 567 1.18e+03 0.00114 4.63e-05 85 0 5 84 0.593 - 0/998 1429/3375 68.7 68.2 152 154 166 567 1.18e+03 0.00114 4.63e-05 112 0 12 112 0.595 - 0/998 1430/3375 68.7 68.1 152 154 166 567 1.18e+03 0.00114 4.62e-05 76 0 9 76 0.6 - 0/998 1431/3375 68.7 68.1 152 154 166 567 1.18e+03 0.00114 4.62e-05 85 0 11 84 0.602 - 0/998 1432/3375 68.7 68.1 152 154 166 567 1.18e+03 0.00114 4.65e-05 89 1 5 86 0.599 - 0/998 1433/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00114 4.65e-05 52 0 6 52 0.593 - 0/998 1434/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00114 4.64e-05 80 0 11 79 0.602 - 0/998 1435/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00114 4.67e-05 74 1 12 71 0.595 - 0/998 1436/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00114 4.67e-05 120 0 8 118 0.594 - 0/998 1437/3375 68.7 68.1 152 154 166 567 1.18e+03 0.00114 4.66e-05 132 0 4 132 0.604 - 0/998 1438/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00116 4.76e-05 86 3 10 83 0.594 - 0/998 1439/3375 68.8 68.2 152 154 166 567 1.18e+03 0.00116 4.76e-05 121 0 3 120 0.598 - 0/998 1440/3375 68.8 68.2 152 155 166 567 1.18e+03 0.00116 4.78e-05 126 1 13 124 0.604 - 0/998 1441/3375 68.8 68.2 152 154 166 566 1.18e+03 0.00117 4.82e-05 38 1 7 37 0.572 - 0/998 1442/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00117 4.82e-05 40 0 8 40 0.587 - 0/998 1443/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00118 4.92e-05 62 3 30 58 0.595 - 0/998 1444/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00118 4.92e-05 56 0 26 56 0.603 - 0/998 1445/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00117 4.91e-05 112 0 10 110 0.599 - 0/998 1446/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00117 4.91e-05 92 0 6 92 0.583 - 0/998 1447/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00117 4.91e-05 75 0 6 75 0.581 - 0/998 1448/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00117 4.9e-05 94 0 9 92 0.6 - 0/998 1449/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00117 4.9e-05 108 0 13 108 0.602 - 0/998 1450/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00117 4.9e-05 57 0 2 57 0.596 - 0/998 1451/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00117 4.93e-05 82 1 18 78 0.595 - 0/998 1452/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00117 4.92e-05 70 0 11 70 0.595 - 0/998 1453/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00116 4.92e-05 111 0 33 104 0.605 - 0/998 1454/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00116 4.91e-05 107 0 4 107 0.605 - 0/998 1455/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00116 4.91e-05 80 0 8 79 0.589 - 0/998 1456/3375 68.7 68.1 152 154 166 566 1.17e+03 0.00115 4.9e-05 58 0 15 56 0.603 - 0/998 1457/3375 68.7 68.1 152 154 166 566 1.17e+03 0.00115 4.9e-05 105 0 4 104 0.593 - 0/998 1458/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00115 4.9e-05 120 0 23 120 0.593 - 0/998 1459/3375 68.7 68.1 152 154 166 566 1.18e+03 0.00115 4.89e-05 65 0 0 65 0.602 - 0/998 1460/3375 68.7 68.1 152 154 166 566 1.17e+03 0.00116 4.96e-05 100 2 11 98 0.592 - 0/998 1461/3375 68.7 68.1 152 154 166 566 1.17e+03 0.00115 4.96e-05 70 0 10 70 0.597 - 0/998 1462/3375 68.7 68.1 152 154 166 566 1.17e+03 0.00115 4.95e-05 65 0 1 65 0.62 - 0/998 1463/3375 68.7 68.1 152 154 166 566 1.17e+03 0.00115 4.95e-05 66 0 9 66 0.597 - 0/998 1464/3375 68.7 68.1 152 154 166 566 1.17e+03 0.00114 4.95e-05 70 0 33 70 0.59 - 0/998 1465/3375 68.7 68.1 152 154 166 566 1.17e+03 0.00114 4.94e-05 90 0 9 90 0.596 - 0/998 1466/3375 68.7 68.1 152 154 166 565 1.17e+03 0.00113 4.94e-05 50 0 20 47 0.597 - 0/998 1467/3375 68.7 68.1 152 154 166 565 1.17e+03 0.00113 4.97e-05 104 1 43 100 0.611 - 0/998 1468/3375 68.7 68.1 152 154 166 565 1.17e+03 0.00113 4.97e-05 70 0 7 70 0.608 - 0/998 1469/3375 68.7 68.1 152 154 166 565 1.17e+03 0.00113 4.96e-05 85 0 1 85 0.584 - 0/998 1470/3375 68.6 68 152 154 166 565 1.17e+03 0.00113 5e-05 47 1 20 45 0.587 - 0/998 1471/3375 68.7 68.1 152 154 166 565 1.17e+03 0.0011 5.06e-05 133 2 45 125 0.599 - 0/998 1472/3375 68.6 68 152 154 166 565 1.17e+03 0.0011 5.06e-05 49 0 10 49 0.582 - 0/998 1473/3375 68.6 68 152 154 166 565 1.17e+03 0.0011 5.09e-05 55 1 24 54 0.575 - 0/998 1474/3375 68.6 68 152 154 166 565 1.17e+03 0.0011 5.12e-05 67 1 36 64 0.606 - 0/998 1475/3375 68.6 68 152 154 166 565 1.17e+03 0.00109 5.12e-05 107 0 4 107 0.6 - 0/998 1476/3375 68.6 68 152 154 166 565 1.17e+03 0.00109 5.12e-05 47 0 4 47 0.584 - 0/998 1477/3375 68.6 68 152 154 165 565 1.17e+03 0.0011 5.18e-05 74 2 6 72 0.588 - 0/998 1478/3375 68.6 68 152 154 165 565 1.17e+03 0.0011 5.18e-05 45 0 34 45 0.595 - 0/998 1479/3375 68.6 68 152 154 165 565 1.17e+03 0.0011 5.17e-05 126 0 6 126 0.595 - 0/998 1480/3375 68.6 68 152 154 165 565 1.17e+03 0.0011 5.2e-05 121 1 8 118 0.614 - 0/998 1481/3375 68.6 68 152 154 165 565 1.17e+03 0.0011 5.2e-05 71 0 6 71 0.596 - 0/998 1482/3375 68.6 68 152 154 165 565 1.17e+03 0.0011 5.2e-05 81 0 3 81 0.58 - 0/998 1483/3375 68.6 68 152 154 165 565 1.17e+03 0.0011 5.19e-05 126 0 3 125 0.6 - 0/998 1484/3375 68.6 68 152 154 165 565 1.17e+03 0.0011 5.22e-05 81 1 7 80 0.579 - 0/998 1485/3375 68.6 68 152 154 165 565 1.17e+03 0.0011 5.22e-05 50 0 19 50 0.594 - 0/998 1486/3375 68.6 68 152 154 165 565 1.17e+03 0.0011 5.22e-05 77 0 21 74 0.595 - 0/998 1487/3375 68.6 68 151 154 165 565 1.17e+03 0.00109 5.22e-05 40 0 14 40 0.591 - 0/998 1488/3375 68.6 68 151 154 165 565 1.17e+03 0.0011 5.24e-05 131 1 4 130 0.594 - 0/998 1489/3375 68.6 68 151 154 165 565 1.17e+03 0.0011 5.24e-05 86 0 3 86 0.589 - 0/998 1490/3375 68.6 68 151 154 165 565 1.17e+03 0.00109 5.24e-05 105 0 20 105 0.604 - 0/998 1491/3375 68.7 68.1 152 154 165 565 1.17e+03 0.00109 5.23e-05 170 0 2 170 0.594 - 0/998 1492/3375 68.6 68.1 152 154 165 565 1.17e+03 0.0011 5.29e-05 70 2 38 65 0.6 - 0/998 1493/3375 68.6 68.1 152 154 165 565 1.17e+03 0.00112 5.42e-05 89 4 10 84 0.587 - 0/998 1494/3375 68.7 68.1 152 154 165 565 1.17e+03 0.00113 5.52e-05 96 3 23 89 0.601 - 0/998 1495/3375 68.6 68.1 151 154 165 565 1.17e+03 0.00113 5.51e-05 77 0 14 77 0.601 - 0/998 1496/3375 68.6 68 151 154 165 565 1.17e+03 0.00114 5.58e-05 69 2 20 66 0.589 - 0/998 1497/3375 68.6 68 151 154 165 565 1.17e+03 0.00113 5.58e-05 52 0 34 52 0.597 - 0/998 1498/3375 68.6 68 151 154 165 565 1.17e+03 0.00112 5.57e-05 73 0 51 72 0.599 - 0/998 1499/3375 68.6 68 151 154 165 564 1.17e+03 0.00112 5.56e-05 82 0 11 80 0.584 - 0/998 1500/3375 68.6 68 151 154 165 564 1.17e+03 0.00112 5.56e-05 103 0 13 102 0.595 - 0/998 1501/3375 68.6 68 151 154 165 564 1.17e+03 0.00112 5.62e-05 73 2 45 65 0.593 - 0/998 1502/3375 68.6 68 151 154 165 564 1.17e+03 0.00112 5.72e-05 71 3 64 63 0.602 - 0/998 1503/3375 68.6 68 151 154 165 564 1.17e+03 0.00112 5.72e-05 49 0 34 48 0.61 - 0/998 1504/3375 68.6 68 151 153 165 564 1.17e+03 0.00111 5.71e-05 74 0 15 73 0.584 - 0/998 1505/3375 68.6 68 151 154 165 564 1.17e+03 0.00111 5.71e-05 82 0 13 82 0.599 - 0/998 1506/3375 68.6 68 151 153 165 564 1.17e+03 0.00111 5.71e-05 93 0 18 93 0.612 - 0/998 1507/3375 68.6 68 151 154 165 564 1.17e+03 0.0011 5.69e-05 151 0 11 149 0.602 - 0/998 1508/3375 68.6 68.1 151 154 165 564 1.17e+03 0.0011 5.69e-05 116 0 1 116 0.6 - 0/998 1509/3375 68.6 68.1 151 154 165 564 1.17e+03 0.0011 5.69e-05 91 0 3 90 0.589 - 0/998 1510/3375 68.6 68.1 151 154 165 564 1.17e+03 0.0011 5.68e-05 89 0 1 89 0.611 - 0/998 1511/3375 68.6 68.1 151 154 165 564 1.17e+03 0.0011 5.68e-05 90 0 8 88 0.6 - 0/998 1512/3375 68.6 68 151 154 165 564 1.17e+03 0.0011 5.67e-05 67 0 1 67 0.592 - 0/998 1513/3375 68.6 68 151 153 165 564 1.17e+03 0.0011 5.67e-05 81 0 2 81 0.598 - 0/998 1514/3375 68.6 68 151 153 165 564 1.17e+03 0.0011 5.67e-05 73 0 3 73 0.591 - 0/998 1515/3375 68.6 68 151 154 165 564 1.17e+03 0.0011 5.66e-05 82 0 8 82 0.599 - 0/998 1516/3375 68.6 68 151 154 165 564 1.17e+03 0.00112 5.83e-05 81 5 34 75 0.596 - 0/998 1517/3375 68.6 68 151 154 165 564 1.17e+03 0.00112 5.82e-05 111 0 4 111 0.591 - 0/998 1518/3375 68.6 68 151 153 165 564 1.17e+03 0.00112 5.82e-05 65 0 9 65 0.603 - 0/998 1519/3375 68.6 68 151 153 165 564 1.17e+03 0.00112 5.81e-05 66 0 7 66 0.597 - 0/998 1520/3375 68.5 68 151 153 165 564 1.17e+03 0.00112 5.81e-05 42 0 3 42 0.578 - 0/998 1521/3375 68.6 68 151 153 165 564 1.17e+03 0.00112 5.81e-05 96 0 4 96 0.588 - 0/998 1522/3375 68.6 68 151 153 165 564 1.17e+03 0.00111 5.8e-05 113 0 16 113 0.602 - 0/998 1523/3375 68.6 68 151 153 165 564 1.17e+03 0.00111 5.8e-05 65 0 2 65 0.594 - 0/998 1524/3375 68.5 68 151 153 165 564 1.17e+03 0.00111 5.8e-05 83 0 5 83 0.603 - 0/998 1525/3375 68.6 68 151 153 165 564 1.17e+03 0.00112 5.82e-05 106 1 9 105 0.606 - 0/998 1526/3375 68.6 68 151 153 165 564 1.17e+03 0.00112 5.82e-05 105 0 2 105 0.616 - 0/998 1527/3375 68.6 68 151 153 165 564 1.17e+03 0.00111 5.82e-05 51 0 4 51 0.578 - 0/998 1528/3375 68.5 68 151 153 165 564 1.17e+03 0.00112 5.84e-05 67 1 24 64 0.592 - 0/998 1529/3375 68.5 68 151 153 165 564 1.17e+03 0.00108 5.87e-05 70 1 35 65 0.59 - 0/998 1530/3375 68.5 68 151 153 165 564 1.17e+03 0.00108 5.87e-05 97 0 20 95 0.588 - 0/998 1531/3375 68.5 67.9 151 153 165 563 1.17e+03 0.00108 5.86e-05 62 0 0 62 0.593 - 0/998 1532/3375 68.5 67.9 151 153 165 563 1.17e+03 0.00108 5.86e-05 67 0 9 67 0.597 - 0/998 1533/3375 68.5 67.9 151 153 165 563 1.17e+03 0.00108 5.86e-05 56 0 2 56 0.591 - 0/998 1534/3375 68.5 67.9 151 153 164 563 1.17e+03 0.00108 5.85e-05 60 0 6 60 0.595 - 0/998 1535/3375 68.5 67.9 151 153 164 563 1.17e+03 0.00107 5.85e-05 51 0 24 51 0.596 - 0/998 1536/3375 68.5 67.9 151 153 164 563 1.17e+03 0.00108 5.91e-05 70 2 42 67 0.605 - 0/998 1537/3375 68.5 67.9 151 153 164 563 1.17e+03 0.00108 5.94e-05 81 1 11 80 0.595 - 0/998 1538/3375 68.4 67.9 151 153 164 563 1.17e+03 0.00108 5.97e-05 86 1 21 85 0.6 - 0/998 1539/3375 68.4 67.8 151 153 164 563 1.17e+03 0.00107 5.97e-05 44 0 51 44 0.603 - 0/998 1540/3375 68.4 67.8 151 153 164 563 1.17e+03 0.00108 6.03e-05 36 2 45 32 0.578 - 0/998 1541/3375 68.4 67.8 151 153 164 562 1.17e+03 0.00108 6.03e-05 56 0 7 56 0.595 - 0/998 1542/3375 68.4 67.8 151 153 164 562 1.17e+03 0.00107 6.06e-05 70 1 87 64 0.599 - 0/998 1543/3375 68.4 67.8 151 153 164 562 1.17e+03 0.00106 6.06e-05 84 0 28 84 0.604 - 0/998 1544/3375 68.4 67.8 151 153 164 562 1.17e+03 0.00106 6.06e-05 53 0 13 52 0.603 - 0/998 1545/3375 68.4 67.8 151 153 164 562 1.17e+03 0.00106 6.11e-05 107 2 41 100 0.581 - 0/998 1546/3375 68.4 67.8 150 153 164 562 1.17e+03 0.00112 6.34e-05 73 2 78 62 0.596 - 0/998 1547/3375 68.4 67.7 150 153 164 562 1.17e+03 0.00115 6.49e-05 81 5 4 76 0.613 - 0/998 1548/3375 68.4 67.7 150 153 164 562 1.17e+03 0.00114 6.49e-05 86 0 26 86 0.593 - 0/998 1549/3375 68.4 67.7 150 153 164 562 1.17e+03 0.00116 6.71e-05 75 7 98 67 0.603 - 0/998 1550/3375 68.4 67.7 150 153 164 562 1.17e+03 0.00115 6.71e-05 108 0 12 106 0.602 - 0/998 1551/3375 68.4 67.7 150 153 164 562 1.16e+03 0.00115 6.74e-05 63 1 36 61 0.598 - 0/998 1552/3375 68.4 67.7 150 153 164 562 1.16e+03 0.00114 6.73e-05 85 0 44 85 0.589 - 0/998 1553/3375 68.3 67.7 150 153 164 562 1.16e+03 0.00115 6.76e-05 72 1 5 71 0.593 - 0/998 1554/3375 68.3 67.7 150 153 164 562 1.16e+03 0.00115 6.86e-05 96 3 52 86 0.598 - 0/998 1555/3375 68.3 67.7 150 152 164 562 1.16e+03 0.00115 6.85e-05 58 0 9 57 0.591 - 0/998 1556/3375 68.3 67.7 150 152 164 562 1.16e+03 0.00115 6.85e-05 88 0 20 88 0.594 - 0/998 1557/3375 68.3 67.7 150 152 164 562 1.16e+03 0.00115 6.85e-05 68 0 24 68 0.608 - 0/998 1558/3375 68.3 67.7 150 152 164 562 1.16e+03 0.00114 6.84e-05 122 0 19 121 0.599 - 0/998 1559/3375 68.3 67.7 150 152 164 562 1.16e+03 0.00115 6.93e-05 71 3 6 67 0.586 - 0/998 1560/3375 68.3 67.7 150 152 164 562 1.16e+03 0.00115 6.93e-05 57 0 15 57 0.58 - 0/998 1561/3375 68.3 67.7 150 152 164 562 1.16e+03 0.00115 6.93e-05 43 0 2 43 0.594 - 0/998 1562/3375 68.3 67.7 150 152 164 562 1.16e+03 0.00115 6.92e-05 83 0 6 82 0.608 - 0/998 1563/3375 68.3 67.7 150 152 164 562 1.16e+03 0.00115 6.92e-05 93 0 0 93 0.591 - 0/998 1564/3375 68.3 67.6 150 152 164 562 1.16e+03 0.00115 6.92e-05 46 0 3 46 0.588 - 0/998 1565/3375 68.3 67.6 150 152 164 561 1.16e+03 0.00115 6.91e-05 60 0 1 60 0.586 - 0/998 1566/3375 68.3 67.6 150 152 164 561 1.16e+03 0.00115 6.97e-05 82 2 26 77 0.594 - 0/998 1567/3375 68.3 67.6 150 152 163 561 1.16e+03 0.00115 6.97e-05 61 0 4 61 0.599 - 0/998 1568/3375 68.3 67.6 150 152 163 561 1.16e+03 0.00115 6.96e-05 60 0 0 60 0.607 - 0/998 1569/3375 68.3 67.6 150 152 163 561 1.16e+03 0.00115 6.96e-05 129 0 3 128 0.589 - 0/998 1570/3375 68.3 67.6 150 152 163 561 1.16e+03 0.00115 6.95e-05 75 0 0 75 0.626 - 0/998 1571/3375 68.2 67.6 150 152 163 561 1.16e+03 0.00116 7.01e-05 51 2 13 46 0.614 - 0/998 1572/3375 68.2 67.6 150 152 163 561 1.16e+03 0.00116 7.01e-05 89 0 12 87 0.589 - 0/998 1573/3375 68.2 67.6 150 152 163 561 1.16e+03 0.00116 7.04e-05 64 1 6 61 0.584 - 0/998 1574/3375 68.2 67.6 150 152 163 561 1.16e+03 0.00117 7.13e-05 81 3 19 72 0.607 - 0/998 1575/3375 68.2 67.6 150 152 163 561 1.16e+03 0.00117 7.16e-05 63 1 34 60 0.608 - 0/998 1576/3375 68.2 67.6 150 152 163 561 1.16e+03 0.00117 7.15e-05 87 0 19 86 0.607 - 0/998 1577/3375 68.2 67.6 150 152 163 561 1.16e+03 0.00117 7.15e-05 51 0 13 51 0.616 - 0/998 1578/3375 68.2 67.5 150 152 163 561 1.16e+03 0.00116 7.15e-05 72 0 26 69 0.607 - 0/998 1579/3375 68.2 67.5 150 152 163 561 1.16e+03 0.00117 7.2e-05 71 2 37 65 0.602 - 0/998 1580/3375 68.2 67.6 150 152 163 561 1.16e+03 0.00116 7.23e-05 100 1 35 96 0.596 - 0/998 1581/3375 68.2 67.6 150 152 163 561 1.16e+03 0.00116 7.23e-05 49 0 6 49 0.609 - 0/998 1582/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00116 7.23e-05 51 0 3 50 0.611 - 0/998 1583/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00116 7.26e-05 49 1 38 47 0.594 - 0/998 1584/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00117 7.28e-05 73 1 1 72 0.605 - 0/998 1585/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00117 7.28e-05 148 0 3 148 0.609 - 0/998 1586/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00113 7.3e-05 68 1 53 66 0.606 - 0/998 1587/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00113 7.33e-05 92 1 35 91 0.607 - 0/998 1588/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00113 7.36e-05 89 1 29 86 0.604 - 0/998 1589/3375 68.2 67.6 150 152 163 560 1.16e+03 0.00113 7.38e-05 122 1 65 112 0.614 - 0/998 1590/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00113 7.38e-05 79 0 4 79 0.603 - 0/998 1591/3375 68.2 67.6 150 152 163 560 1.16e+03 0.00114 7.47e-05 91 3 16 86 0.616 - 0/998 1592/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00114 7.46e-05 81 0 4 81 0.599 - 0/998 1593/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00115 7.58e-05 71 4 31 65 0.601 - 0/998 1594/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00114 7.58e-05 86 0 24 85 0.594 - 0/998 1595/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00114 7.57e-05 60 0 7 59 0.607 - 0/998 1596/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00114 7.57e-05 119 0 12 118 0.612 - 0/998 1597/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00115 7.63e-05 55 2 17 52 0.608 - 0/998 1598/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00115 7.63e-05 75 0 3 74 0.606 - 0/998 1599/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00115 7.62e-05 80 0 0 80 0.604 - 0/998 1600/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00115 7.68e-05 98 2 5 94 0.605 - 0/998 1601/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00115 7.68e-05 103 0 9 102 0.622 - 0/998 1602/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00115 7.67e-05 43 0 4 43 0.595 - 0/998 1603/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00115 7.66e-05 119 0 1 119 0.605 - 0/998 1604/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00116 7.69e-05 65 1 2 64 0.579 - 0/998 1605/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00116 7.72e-05 78 1 1 76 0.587 - 0/998 1606/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00116 7.71e-05 116 0 4 116 0.618 - 0/998 1607/3375 68.2 67.6 150 152 163 560 1.16e+03 0.00116 7.7e-05 149 0 2 148 0.597 - 0/998 1608/3375 68.2 67.6 150 152 163 560 1.16e+03 0.00116 7.7e-05 86 0 2 86 0.604 - 0/998 1609/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00116 7.69e-05 85 0 9 85 0.61 - 0/998 1610/3375 68.3 67.6 150 152 163 560 1.16e+03 0.00116 7.69e-05 111 0 4 111 0.606 - 0/998 1611/3375 68.2 67.6 150 152 163 560 1.16e+03 0.00116 7.68e-05 82 0 4 81 0.602 - 0/998 1612/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00116 7.74e-05 59 2 38 56 0.581 - 0/998 1613/3375 68.2 67.5 150 151 163 560 1.16e+03 0.00116 7.74e-05 63 0 2 63 0.604 - 0/998 1614/3375 68.2 67.5 150 151 163 560 1.16e+03 0.00116 7.73e-05 107 0 9 107 0.608 - 0/998 1615/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00116 7.72e-05 135 0 6 135 0.602 - 0/998 1616/3375 68.2 67.5 150 152 163 560 1.16e+03 0.00115 7.72e-05 71 0 14 71 0.584 - 0/998 1617/3375 68.2 67.6 150 152 163 560 1.16e+03 0.00115 7.71e-05 108 0 8 108 0.605 - 0/998 1618/3375 68.3 67.6 150 152 163 560 1.16e+03 0.00115 7.71e-05 96 0 0 96 0.603 - 0/998 1619/3375 68.2 67.6 150 151 163 560 1.16e+03 0.00115 7.71e-05 46 0 3 46 0.584 - 0/998 1620/3375 68.2 67.6 150 151 163 560 1.16e+03 0.00115 7.7e-05 118 0 7 118 0.59 - 0/998 1621/3375 68.3 67.6 150 152 163 560 1.16e+03 0.00115 7.73e-05 95 1 22 94 0.599 - 0/998 1622/3375 68.2 67.6 150 151 163 560 1.16e+03 0.00115 7.72e-05 51 0 7 51 0.609 - 0/998 1623/3375 68.2 67.6 150 151 163 560 1.16e+03 0.00114 7.72e-05 90 0 74 85 0.607 - 0/998 1624/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00114 7.71e-05 51 0 39 51 0.596 - 0/998 1625/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00113 7.74e-05 75 1 58 74 0.597 - 0/998 1626/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00108 7.74e-05 66 0 99 65 0.594 - 0/998 1627/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00108 7.77e-05 56 1 38 55 0.605 - 0/998 1628/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00108 7.77e-05 125 0 23 124 0.613 - 0/998 1629/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00108 7.86e-05 46 3 29 43 0.607 - 0/998 1630/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00107 7.85e-05 49 0 57 48 0.595 - 0/998 1631/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00107 7.85e-05 57 0 23 57 0.599 - 0/998 1632/3375 68.1 67.5 149 151 162 560 1.16e+03 0.00115 8.4e-05 72 3 136 63 0.608 - 0/998 1633/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00116 8.45e-05 134 2 24 129 0.607 - 0/998 1634/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00116 8.45e-05 90 0 9 90 0.628 - 0/998 1635/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00113 8.44e-05 101 0 92 101 0.612 - 0/998 1636/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00113 8.5e-05 66 2 32 61 0.614 - 0/998 1637/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00113 8.52e-05 97 1 21 95 0.597 - 0/998 1638/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00113 8.51e-05 57 0 39 57 0.616 - 0/998 1639/3375 68.2 67.5 149 151 162 560 1.16e+03 0.00113 8.54e-05 76 1 19 74 0.611 - 0/998 1640/3375 68.2 67.5 149 151 162 559 1.16e+03 0.00113 8.54e-05 52 0 2 50 0.597 - 0/998 1641/3375 68.1 67.5 149 151 162 559 1.16e+03 0.00113 8.56e-05 64 1 31 63 0.596 - 0/998 1642/3375 68.2 67.5 149 151 162 559 1.16e+03 0.00112 8.56e-05 99 0 44 97 0.605 - 0/998 1643/3375 68.1 67.5 149 151 162 559 1.16e+03 0.00112 8.56e-05 43 0 37 43 0.576 - 0/998 1644/3375 68.1 67.5 149 151 162 559 1.16e+03 0.00111 8.55e-05 102 0 13 101 0.614 - 0/998 1645/3375 68.1 67.4 149 151 162 559 1.16e+03 0.00111 8.55e-05 36 0 26 36 0.601 - 0/998 1646/3375 68.1 67.4 149 151 162 559 1.16e+03 0.00111 8.54e-05 54 0 1 54 0.595 - 0/998 1647/3375 68.1 67.4 149 151 162 559 1.16e+03 0.00108 8.6e-05 128 2 19 125 0.6 - 0/998 1648/3375 68.1 67.4 149 151 162 559 1.16e+03 0.00108 8.6e-05 58 0 2 58 0.6 - 0/998 1649/3375 68.1 67.4 149 151 162 559 1.16e+03 0.00108 8.59e-05 55 0 0 55 0.597 - 0/998 1650/3375 68.1 67.4 149 151 162 559 1.16e+03 0.00109 8.65e-05 61 2 22 57 0.591 - 0/998 1651/3375 68.1 67.4 149 151 162 559 1.16e+03 0.00109 8.65e-05 69 0 2 69 0.601 - 0/998 1652/3375 68.1 67.4 149 151 162 559 1.16e+03 0.00109 8.64e-05 72 0 9 72 0.599 - 0/998 1653/3375 68.1 67.4 149 151 162 559 1.16e+03 0.00109 8.63e-05 98 0 3 97 0.602 - 0/998 1654/3375 68.1 67.4 149 151 162 559 1.16e+03 0.00109 8.66e-05 83 1 4 82 0.585 - 0/998 1655/3375 68 67.4 149 151 162 558 1.15e+03 0.00109 8.69e-05 33 1 6 32 0.583 - 0/998 1656/3375 68 67.4 149 150 162 558 1.15e+03 0.00109 8.68e-05 76 0 10 76 0.593 - 0/998 1657/3375 68.1 67.4 149 150 162 558 1.15e+03 0.00109 8.7e-05 90 1 3 89 0.604 - 0/998 1658/3375 68 67.4 149 150 162 558 1.15e+03 0.00109 8.7e-05 86 0 3 86 0.601 - 0/998 1659/3375 68 67.4 149 150 162 558 1.15e+03 0.00109 8.69e-05 76 0 14 76 0.603 - 0/998 1660/3375 68.1 67.4 149 151 162 558 1.15e+03 0.00109 8.69e-05 121 0 0 121 0.611 - 0/998 1661/3375 68 67.4 149 150 162 558 1.15e+03 0.00109 8.68e-05 52 0 33 52 0.591 - 0/998 1662/3375 68 67.3 149 150 162 558 1.15e+03 0.00109 8.68e-05 76 0 5 76 0.621 - 0/998 1663/3375 68 67.4 149 150 162 558 1.15e+03 0.00109 8.67e-05 91 0 1 91 0.607 - 0/998 1664/3375 68 67.3 149 150 161 558 1.15e+03 0.00108 8.67e-05 66 0 45 64 0.6 - 0/998 1665/3375 68 67.3 149 150 161 558 1.15e+03 0.00108 8.67e-05 80 0 7 80 0.605 - 0/998 1666/3375 68 67.3 149 150 161 558 1.15e+03 0.00108 8.69e-05 75 1 16 73 0.604 - 0/998 1667/3375 68 67.3 149 150 161 558 1.15e+03 0.00108 8.69e-05 81 0 1 81 0.618 - 0/998 1668/3375 68 67.3 149 150 161 558 1.15e+03 0.00108 8.71e-05 105 1 1 104 0.599 - 0/998 1669/3375 68 67.3 149 150 161 558 1.15e+03 0.00109 8.74e-05 65 1 2 64 0.603 - 0/998 1670/3375 68 67.3 149 150 161 558 1.15e+03 0.00108 8.73e-05 72 0 17 71 0.604 - 0/998 1671/3375 68 67.3 149 150 161 558 1.15e+03 0.00109 8.76e-05 98 1 14 96 0.599 - 0/998 1672/3375 68 67.3 148 150 161 558 1.15e+03 0.00109 8.85e-05 67 3 15 64 0.615 - 0/998 1673/3375 68 67.3 148 150 161 558 1.15e+03 0.00109 8.84e-05 96 0 5 96 0.606 - 0/998 1674/3375 68 67.3 149 150 161 558 1.15e+03 0.00109 8.86e-05 114 1 19 112 0.63 - 0/998 1675/3375 68 67.3 149 150 161 558 1.15e+03 0.00109 8.85e-05 87 0 12 87 0.624 - 0/998 1676/3375 68 67.4 149 150 161 558 1.15e+03 0.00109 8.85e-05 96 0 11 96 0.608 - 0/998 1677/3375 68 67.4 148 150 161 558 1.15e+03 0.00109 8.84e-05 84 0 19 84 0.608 - 0/998 1678/3375 68 67.4 149 150 161 558 1.15e+03 0.00111 9.05e-05 123 7 34 109 0.651 - 0/998 1679/3375 68 67.4 149 150 161 558 1.15e+03 0.00111 9.04e-05 84 0 16 84 0.598 - 0/998 1680/3375 68 67.4 149 150 161 558 1.15e+03 0.0011 9.03e-05 110 0 19 109 0.608 - 0/998 1681/3375 68 67.4 149 150 161 558 1.15e+03 0.0011 9.03e-05 108 0 7 108 0.6 - 0/998 1682/3375 68 67.4 149 150 161 558 1.15e+03 0.00113 9.23e-05 88 2 104 82 0.616 - 0/998 1683/3375 68.1 67.4 149 150 161 558 1.15e+03 0.00113 9.22e-05 111 0 22 109 0.617 - 0/998 1684/3375 68 67.4 149 150 161 558 1.15e+03 0.00113 9.22e-05 51 0 9 51 0.615 - 0/998 1685/3375 68 67.4 148 150 161 558 1.15e+03 0.00113 9.22e-05 49 0 19 46 0.596 - 0/998 1686/3375 68 67.4 148 150 161 558 1.15e+03 0.00112 9.22e-05 98 0 7 98 0.625 - 0/998 1687/3375 68 67.4 148 150 161 558 1.15e+03 0.00113 9.24e-05 90 1 20 87 0.614 - 0/998 1688/3375 68 67.4 148 150 161 558 1.15e+03 0.00114 9.41e-05 68 6 65 59 0.604 - 0/998 1689/3375 68 67.4 148 150 161 558 1.15e+03 0.00114 9.43e-05 80 1 36 77 0.617 - 0/998 1690/3375 68 67.3 148 150 161 558 1.15e+03 0.00114 9.46e-05 53 1 7 52 0.603 - 0/998 1691/3375 68 67.3 148 150 161 558 1.15e+03 0.00114 9.54e-05 112 3 16 106 0.607 - 0/998 1692/3375 68 67.3 148 150 161 558 1.15e+03 0.00114 9.57e-05 73 1 34 72 0.616 - 0/998 1693/3375 68 67.3 148 150 161 558 1.15e+03 0.00114 9.59e-05 63 1 51 61 0.62 - 0/998 1694/3375 68 67.4 148 150 161 558 1.15e+03 0.00114 9.58e-05 120 0 3 120 0.63 - 0/998 1695/3375 68 67.3 148 150 161 558 1.15e+03 0.00114 9.58e-05 55 0 10 55 0.585 - 0/998 1696/3375 68 67.3 148 150 161 558 1.15e+03 0.00114 9.58e-05 71 0 31 70 0.61 - 0/998 1697/3375 68 67.3 148 150 161 558 1.15e+03 0.00111 9.58e-05 57 0 43 55 0.608 - 0/998 1698/3375 68 67.3 148 150 161 558 1.15e+03 0.00111 9.65e-05 115 3 70 110 0.606 - 0/998 1699/3375 68 67.3 148 150 161 558 1.15e+03 0.00111 9.65e-05 96 0 28 93 0.611 - 0/998 1700/3375 68 67.3 148 150 161 558 1.15e+03 0.00111 9.67e-05 82 1 17 79 0.6 - 0/998 1701/3375 68 67.3 148 150 161 558 1.15e+03 0.00114 9.84e-05 83 1 19 82 0.616 - 0/998 1702/3375 68 67.3 148 150 161 558 1.15e+03 0.00115 9.92e-05 107 3 31 101 0.594 - 0/998 1703/3375 68 67.3 148 150 161 558 1.15e+03 0.00115 9.92e-05 47 0 29 46 0.605 - 0/998 1704/3375 68 67.3 148 150 161 558 1.15e+03 0.00115 9.92e-05 92 0 15 90 0.607 - 0/998 1705/3375 68 67.3 148 150 161 558 1.15e+03 0.00114 9.91e-05 100 0 48 100 0.612 - 0/998 1706/3375 68 67.3 148 150 161 558 1.15e+03 0.00114 0.0001 99 3 142 94 0.616 - 0/998 1707/3375 68 67.4 148 150 161 558 1.15e+03 0.00114 0.0001 131 1 20 130 0.609 - 0/998 1708/3375 68 67.3 148 150 161 558 1.15e+03 0.00113 0.0001 79 0 26 79 0.607 - 0/998 1709/3375 68 67.3 148 150 161 558 1.15e+03 0.00113 0.0001 69 0 1 69 0.59 - 0/998 1710/3375 68 67.3 148 150 161 558 1.15e+03 0.00113 0.000101 61 2 45 59 0.615 - 0/998 1711/3375 68 67.3 148 150 161 558 1.15e+03 0.00114 0.000101 104 1 12 103 0.608 - 0/998 1712/3375 68 67.3 148 150 161 558 1.15e+03 0.00115 0.000102 102 4 11 96 0.608 - 0/998 1713/3375 68 67.4 148 150 161 558 1.15e+03 0.00115 0.000102 84 0 4 84 0.596 - 0/998 1714/3375 68 67.3 148 150 161 558 1.15e+03 0.00115 0.000102 56 1 21 52 0.611 - 0/998 1715/3375 68 67.4 148 150 161 558 1.15e+03 0.00115 0.000102 133 0 9 133 0.608 - 0/998 1716/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00114 0.000102 144 0 12 144 0.607 - 0/998 1717/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00114 0.000102 84 0 13 81 0.612 - 0/998 1718/3375 68 67.4 148 150 161 558 1.15e+03 0.00114 0.000102 59 0 15 59 0.611 - 0/998 1719/3375 68 67.4 148 150 161 558 1.15e+03 0.00114 0.000102 86 1 39 84 0.604 - 0/998 1720/3375 68 67.4 148 150 161 558 1.15e+03 0.00114 0.000102 58 0 8 58 0.591 - 0/998 1721/3375 68 67.4 148 150 161 558 1.15e+03 0.00114 0.000102 75 0 43 74 0.611 - 0/998 1722/3375 68 67.4 148 150 161 558 1.15e+03 0.00114 0.000102 115 1 3 113 0.618 - 0/998 1723/3375 68 67.4 148 150 161 558 1.15e+03 0.00114 0.000102 94 0 39 93 0.61 - 0/998 1724/3375 68 67.4 148 150 161 558 1.15e+03 0.00113 0.000102 62 0 12 62 0.615 - 0/998 1725/3375 68 67.4 148 150 161 558 1.15e+03 0.00113 0.000102 102 0 6 100 0.612 - 0/998 1726/3375 68 67.4 148 150 161 558 1.15e+03 0.00113 0.000102 58 0 6 58 0.594 - 0/998 1727/3375 68 67.4 148 150 161 558 1.15e+03 0.00113 0.000102 80 0 0 80 0.616 - 0/998 1728/3375 68 67.4 148 150 161 558 1.15e+03 0.00113 0.000102 92 0 21 92 0.603 - 0/998 1729/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00113 0.000102 111 0 11 110 0.608 - 0/998 1730/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00113 0.000102 104 0 4 103 0.601 - 0/998 1731/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00112 0.000102 88 0 50 88 0.594 - 0/998 1732/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00112 0.000102 103 0 8 103 0.603 - 0/998 1733/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00112 0.000102 127 0 7 127 0.601 - 0/998 1734/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00113 0.000102 71 1 12 69 0.621 - 0/998 1735/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00112 0.000102 82 0 4 82 0.61 - 0/998 1736/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00112 0.000102 97 0 19 96 0.601 - 0/998 1737/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00113 0.000102 75 1 10 74 0.603 - 0/998 1738/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00112 0.000102 43 0 27 43 0.601 - 0/998 1739/3375 68.1 67.4 148 150 161 558 1.15e+03 0.00112 0.000102 58 1 17 57 0.599 - 0/998 1740/3375 68 67.3 148 149 160 558 1.15e+03 0.00112 0.000102 56 0 30 55 0.599 - 0/998 1741/3375 68 67.3 148 149 160 558 1.15e+03 0.00112 0.000102 98 1 24 94 0.614 - 0/998 1742/3375 68 67.3 148 149 160 558 1.15e+03 0.00112 0.000103 40 1 12 38 0.577 - 0/998 1743/3375 68 67.3 148 149 160 557 1.15e+03 0.00112 0.000103 40 0 32 40 0.592 - 0/998 1744/3375 68 67.3 148 149 160 557 1.15e+03 0.00113 0.000103 99 3 31 95 0.595 - 0/998 1745/3375 68 67.3 148 149 160 558 1.15e+03 0.00112 0.000103 104 0 74 104 0.597 - 0/998 1746/3375 68 67.3 148 149 160 558 1.15e+03 0.00111 0.000105 72 5 226 62 0.604 - 0/998 1747/3375 68 67.3 148 149 160 558 1.15e+03 0.00111 0.000105 140 1 24 135 0.605 - 0/998 1748/3375 68 67.3 148 149 160 557 1.15e+03 0.00111 0.000105 60 2 81 53 0.622 - 0/998 1749/3375 68 67.3 148 149 160 558 1.15e+03 0.00111 0.000106 109 1 17 105 0.609 - 0/998 1750/3375 68.1 67.4 148 149 160 558 1.15e+03 0.00111 0.000107 123 5 46 115 0.607 - 0/998 1751/3375 68.1 67.4 148 149 160 558 1.15e+03 0.00111 0.000107 92 0 0 92 0.598 - 0/998 1752/3375 68 67.3 148 149 160 558 1.15e+03 0.00111 0.000107 65 0 34 64 0.595 - 0/998 1753/3375 68 67.3 148 149 160 557 1.15e+03 0.00111 0.000107 49 1 65 48 0.601 - 0/998 1754/3375 68 67.3 148 149 160 558 1.15e+03 0.00111 0.000108 107 3 34 99 0.605 - 0/998 1755/3375 68.1 67.4 148 149 160 558 1.15e+03 0.00111 0.000108 174 0 2 174 0.624 - 0/998 1756/3375 68.1 67.4 148 149 160 558 1.15e+03 0.00111 0.000108 75 0 1 75 0.581 - 0/998 1757/3375 68.1 67.4 148 149 160 558 1.15e+03 0.00112 0.000108 67 1 10 66 0.602 - 0/998 1758/3375 68.1 67.4 148 149 160 558 1.15e+03 0.00112 0.000109 109 4 34 98 0.601 - 0/998 1759/3375 68.1 67.4 148 149 160 558 1.15e+03 0.00112 0.00011 85 2 55 82 0.616 - 0/998 1760/3375 68.1 67.4 148 149 160 558 1.15e+03 0.00112 0.000109 91 0 1 91 0.604 - 0/998 1761/3375 68.1 67.4 148 149 160 558 1.15e+03 0.00112 0.000109 81 0 7 80 0.598 - 0/998 1762/3375 68.1 67.3 148 149 160 558 1.15e+03 0.0011 0.00011 81 2 32 72 0.603 - 0/998 1763/3375 68 67.3 148 149 160 557 1.15e+03 0.0011 0.00011 32 1 1 31 0.594 - 0/998 1764/3375 68.1 67.3 148 149 160 558 1.15e+03 0.0011 0.00011 139 0 7 139 0.611 - 0/998 1765/3375 68.1 67.4 148 149 160 558 1.15e+03 0.0011 0.00011 96 0 12 96 0.615 - 0/998 1766/3375 68.1 67.4 148 149 160 558 1.15e+03 0.0011 0.00011 93 1 0 92 0.596 - 0/998 1767/3375 68.1 67.3 148 149 160 558 1.15e+03 0.0011 0.00011 54 0 36 54 0.604 - 0/998 1768/3375 68.1 67.3 148 149 160 557 1.15e+03 0.00109 0.00011 74 0 23 74 0.6 - 0/998 1769/3375 68 67.3 148 149 160 557 1.15e+03 0.00109 0.00011 49 0 0 49 0.608 - 0/998 1770/3375 68 67.3 148 149 160 557 1.15e+03 0.00109 0.00011 55 1 18 52 0.584 - 0/998 1771/3375 68 67.3 148 149 160 557 1.15e+03 0.00109 0.000111 51 1 28 50 0.588 - 0/998 1772/3375 68 67.3 148 149 160 557 1.15e+03 0.00109 0.000111 67 0 2 67 0.603 - 0/998 1773/3375 68 67.3 148 149 160 557 1.15e+03 0.00109 0.000111 53 0 9 52 0.6 - 0/998 1774/3375 68 67.3 148 149 160 557 1.15e+03 0.00109 0.000111 51 1 13 50 0.604 - 0/998 1775/3375 68 67.3 148 149 160 557 1.15e+03 0.00109 0.000111 59 0 19 58 0.598 - 0/998 1776/3375 67.9 67.2 148 149 160 557 1.15e+03 0.00109 0.000111 68 0 1 67 0.594 - 0/998 1777/3375 67.9 67.2 148 149 160 556 1.15e+03 0.00106 0.000111 65 2 70 60 0.605 - 0/998 1778/3375 68 67.2 148 149 160 556 1.15e+03 0.00105 0.000112 98 2 184 85 0.622 - 0/998 1779/3375 68 67.2 148 149 160 557 1.15e+03 0.00104 0.000112 93 0 39 92 0.598 - 0/998 1780/3375 68 67.2 148 149 160 557 1.15e+03 0.00102 0.000112 104 2 8 100 0.595 - 0/998 1781/3375 68 67.3 148 149 160 557 1.15e+03 0.00102 0.000112 126 0 32 124 0.618 - 0/998 1782/3375 68 67.3 148 149 160 557 1.15e+03 0.00102 0.000112 69 0 4 69 0.614 - 0/998 1783/3375 68 67.3 148 149 160 557 1.15e+03 0.00102 0.000112 82 0 5 82 0.604 - 0/998 1784/3375 68 67.3 148 149 160 557 1.15e+03 0.000999 0.000112 99 1 12 96 0.622 - 0/998 1785/3375 68 67.3 148 149 160 557 1.15e+03 0.000999 0.000112 107 0 7 106 0.592 - 0/998 1786/3375 68 67.3 148 149 160 557 1.15e+03 0.00101 0.000113 141 4 24 135 0.658 - 0/998 1787/3375 68 67.3 148 149 160 557 1.15e+03 0.000985 0.000113 102 1 5 99 0.611 - 0/998 1788/3375 68 67.3 148 149 160 557 1.15e+03 0.000985 0.000113 129 0 2 129 0.601 - 0/998 1789/3375 68 67.3 148 149 160 557 1.15e+03 0.000985 0.000113 78 0 2 76 0.588 - 0/998 1790/3375 68 67.3 148 149 160 557 1.15e+03 0.000985 0.000113 81 0 1 81 0.61 - 0/998 1791/3375 68 67.3 148 149 160 557 1.15e+03 0.000985 0.000113 44 0 2 44 0.609 - 0/998 1792/3375 68 67.3 148 149 160 557 1.15e+03 0.000992 0.000114 75 4 7 69 0.613 - 0/998 1793/3375 68 67.3 148 149 160 557 1.15e+03 0.000992 0.000114 88 1 31 86 0.611 - 0/998 1794/3375 68 67.3 148 149 160 557 1.15e+03 0.000998 0.000115 116 5 52 110 0.61 - 0/998 1795/3375 68 67.3 148 149 160 557 1.15e+03 0.000998 0.000115 86 0 2 86 0.609 - 0/998 1796/3375 68 67.3 148 149 160 557 1.15e+03 0.000998 0.000115 72 0 13 71 0.608 - 0/998 1797/3375 68 67.3 148 149 160 557 1.15e+03 0.000997 0.000116 54 1 38 53 0.61 - 0/998 1798/3375 68 67.3 148 149 160 557 1.15e+03 0.000999 0.000116 98 2 14 93 0.603 - 0/998 1799/3375 68 67.3 148 149 160 557 1.15e+03 0.001 0.000117 71 2 16 67 0.598 - 0/998 1800/3375 68 67.3 148 149 160 557 1.15e+03 0.001 0.000117 81 0 1 81 0.59 - 0/998 1801/3375 68 67.3 148 149 160 557 1.15e+03 0.000999 0.000117 64 0 30 63 0.601 - 0/998 1802/3375 68 67.3 148 149 160 557 1.15e+03 0.001 0.000117 118 2 34 114 0.604 - 0/998 1803/3375 68 67.3 148 149 160 557 1.15e+03 0.000999 0.000117 51 0 23 51 0.6 - 0/998 1804/3375 68 67.3 148 149 160 556 1.15e+03 0.000998 0.000117 73 0 15 73 0.609 - 0/998 1805/3375 68 67.2 147 149 160 556 1.15e+03 0.00102 0.000119 63 1 74 61 0.592 - 0/998 1806/3375 68 67.2 147 149 160 556 1.15e+03 0.00102 0.000119 79 0 52 77 0.602 - 0/998 1807/3375 68 67.2 147 149 160 556 1.15e+03 0.00101 0.000119 95 3 86 88 0.6 - 0/998 1808/3375 67.9 67.2 147 149 159 556 1.15e+03 0.00101 0.000119 37 0 64 37 0.566 - 0/998 1809/3375 67.9 67.2 147 149 159 556 1.15e+03 0.001 0.00012 69 4 137 60 0.611 - 0/998 1810/3375 67.9 67.2 147 149 159 556 1.15e+03 0.001 0.00012 44 0 15 44 0.61 - 0/998 1811/3375 67.9 67.2 147 149 159 556 1.15e+03 0.000997 0.00012 58 0 43 55 0.598 - 0/998 1812/3375 67.9 67.2 147 149 159 556 1.15e+03 0.001 0.000121 112 4 18 106 0.619 - 0/998 1813/3375 67.9 67.2 147 149 159 556 1.15e+03 0.000998 0.000121 66 0 40 66 0.612 - 0/998 1814/3375 67.9 67.1 147 149 159 556 1.15e+03 0.000993 0.000121 33 0 56 32 0.593 - 0/998 1815/3375 67.9 67.2 147 149 159 556 1.15e+03 0.000993 0.000121 99 1 37 97 0.609 - 0/998 1816/3375 67.9 67.2 147 149 159 556 1.15e+03 0.000989 0.000121 85 0 28 83 0.597 - 0/998 1817/3375 67.9 67.2 147 149 159 556 1.15e+03 0.00104 0.000125 85 2 55 80 0.594 - 0/998 1818/3375 67.9 67.2 147 149 159 556 1.15e+03 0.00104 0.000126 87 4 38 83 0.596 - 0/998 1819/3375 67.9 67.2 147 148 159 556 1.15e+03 0.00104 0.000126 69 1 63 65 0.612 - 0/998 1820/3375 67.9 67.1 147 148 159 556 1.15e+03 0.00104 0.000126 55 0 17 55 0.605 - 0/998 1821/3375 67.9 67.1 147 148 159 555 1.15e+03 0.00103 0.000126 87 0 51 87 0.608 - 0/998 1822/3375 67.9 67.1 147 148 159 555 1.15e+03 0.00102 0.000126 60 0 56 60 0.605 - 0/998 1823/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00102 0.000126 57 0 27 57 0.612 - 0/998 1824/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00102 0.000126 97 0 16 97 0.593 - 0/998 1825/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00102 0.000126 71 1 15 69 0.606 - 0/998 1826/3375 67.9 67.1 147 148 159 555 1.14e+03 0.00102 0.000126 105 0 59 103 0.607 - 0/998 1827/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00102 0.000126 76 1 5 74 0.606 - 0/998 1828/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00102 0.000126 70 0 14 69 0.594 - 0/998 1829/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00102 0.000126 69 0 12 69 0.61 - 0/998 1830/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00102 0.000126 128 0 0 128 0.601 - 0/998 1831/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00102 0.000126 84 0 35 81 0.611 - 0/998 1832/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00102 0.000126 115 0 28 113 0.6 - 0/998 1833/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00101 0.000125 68 0 42 68 0.611 - 0/998 1834/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00101 0.000127 83 4 43 76 0.622 - 0/998 1835/3375 67.9 67.2 147 148 159 555 1.14e+03 0.00102 0.000127 153 1 6 150 0.612 - 0/998 1836/3375 67.9 67.1 147 148 159 555 1.14e+03 0.00101 0.000127 66 0 15 66 0.606 - 0/998 1837/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00101 0.000127 32 0 17 32 0.598 - 0/998 1838/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00101 0.000127 68 0 14 68 0.591 - 0/998 1839/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00101 0.000126 77 0 0 77 0.605 - 0/998 1840/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00101 0.000126 49 0 7 49 0.592 - 0/998 1841/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00101 0.000126 59 0 21 58 0.59 - 0/998 1842/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00101 0.000126 101 0 6 99 0.612 - 0/998 1843/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000989 0.000126 135 0 6 134 0.617 - 0/998 1844/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000988 0.000126 97 1 21 93 0.601 - 0/998 1845/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000985 0.000126 44 0 37 42 0.606 - 0/998 1846/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000984 0.000126 44 0 5 44 0.597 - 0/998 1847/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000991 0.000127 107 4 4 102 0.611 - 0/998 1848/3375 67.8 67.1 147 148 159 555 1.14e+03 0.00099 0.000127 78 0 14 78 0.602 - 0/998 1849/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000991 0.000128 45 1 4 44 0.595 - 0/998 1850/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000991 0.000127 91 0 11 90 0.619 - 0/998 1851/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000992 0.000128 82 1 8 80 0.609 - 0/998 1852/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000991 0.000128 60 0 11 59 0.603 - 0/998 1853/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000992 0.000128 85 1 12 84 0.594 - 0/998 1854/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000992 0.000128 79 0 4 79 0.609 - 0/998 1855/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000991 0.000128 87 0 15 86 0.599 - 0/998 1856/3375 67.8 67 147 148 159 555 1.14e+03 0.000992 0.000128 59 1 7 58 0.597 - 0/998 1857/3375 67.8 67 147 148 159 555 1.14e+03 0.000993 0.000128 76 1 2 74 0.601 - 0/998 1858/3375 67.8 67 147 148 159 554 1.14e+03 0.000998 0.000129 74 3 0 71 0.579 - 0/998 1859/3375 67.8 67 147 148 159 555 1.14e+03 0.000996 0.000129 102 1 61 101 0.599 - 0/998 1860/3375 67.8 67 147 148 159 555 1.14e+03 0.000995 0.000129 87 0 7 86 0.604 - 0/998 1861/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000996 0.000129 137 1 7 135 0.612 - 0/998 1862/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000995 0.000129 84 0 18 84 0.622 - 0/998 1863/3375 67.8 67.1 147 148 159 555 1.14e+03 0.000992 0.000129 80 0 56 76 0.609 - 0/998 1864/3375 67.8 67 147 148 159 554 1.14e+03 0.000992 0.000129 44 0 12 42 0.588 - 0/998 1865/3375 67.8 67 147 148 159 554 1.14e+03 0.00099 0.000129 83 0 18 83 0.609 - 0/998 1866/3375 67.7 67 147 148 158 554 1.14e+03 0.00101 0.00013 55 1 17 54 0.599 - 0/998 1867/3375 67.8 67 147 148 158 554 1.14e+03 0.00101 0.00013 80 0 29 80 0.61 - 0/998 1868/3375 67.7 67 147 148 158 554 1.14e+03 0.00102 0.000131 68 3 18 64 0.616 - 0/998 1869/3375 67.7 67 147 148 158 554 1.14e+03 0.00102 0.000131 62 0 16 62 0.614 - 0/998 1870/3375 67.7 67 147 148 158 554 1.14e+03 0.00101 0.000131 96 0 105 88 0.602 - 0/998 1871/3375 67.8 67 147 148 158 554 1.14e+03 0.001 0.000131 143 0 61 141 0.593 - 0/998 1872/3375 67.8 67 147 148 158 554 1.14e+03 0.000997 0.000131 74 0 57 74 0.617 - 0/998 1873/3375 67.8 67 147 148 158 554 1.14e+03 0.000996 0.000131 91 0 20 91 0.58 - 0/998 1874/3375 67.8 67 147 148 158 554 1.14e+03 0.000991 0.000131 76 0 43 76 0.599 - 0/998 1875/3375 67.8 67 147 148 158 554 1.14e+03 0.000991 0.000131 85 3 67 77 0.607 - 0/998 1876/3375 67.7 67 147 148 158 554 1.14e+03 0.000964 0.000132 45 1 151 41 0.598 - 0/998 1877/3375 67.8 67 147 148 158 554 1.14e+03 0.000966 0.000132 114 2 35 106 0.617 - 0/998 1878/3375 67.8 67 147 148 158 554 1.14e+03 0.000964 0.000133 81 2 41 77 0.611 - 0/998 1879/3375 67.8 67 147 148 158 554 1.14e+03 0.000963 0.000133 124 1 37 121 0.601 - 0/998 1880/3375 67.8 67 147 148 158 554 1.14e+03 0.000959 0.000133 102 2 62 96 0.598 - 0/998 1881/3375 67.8 67 147 148 158 554 1.14e+03 0.000936 0.000134 88 4 163 80 0.608 - 0/998 1882/3375 67.8 67 147 148 158 554 1.14e+03 0.000935 0.000134 73 0 23 73 0.617 - 0/998 1883/3375 67.8 67 147 148 158 554 1.14e+03 0.000918 0.000135 100 3 29 95 0.613 - 0/998 1884/3375 67.8 67 147 148 158 554 1.14e+03 0.000933 0.000137 65 3 98 60 0.61 - 0/998 1885/3375 67.8 67 147 148 158 554 1.14e+03 0.000933 0.000137 116 1 15 113 0.604 - 0/998 1886/3375 67.8 67 147 148 158 554 1.14e+03 0.000934 0.000137 99 1 11 98 0.615 - 0/998 1887/3375 67.8 67 146 147 158 554 1.14e+03 0.000934 0.000138 49 1 28 48 0.582 - 0/998 1888/3375 67.8 67 147 147 158 554 1.14e+03 0.000934 0.000137 76 0 4 76 0.606 - 0/998 1889/3375 67.8 67 146 147 158 554 1.14e+03 0.000914 0.000137 72 0 23 68 0.61 - 0/998 1890/3375 67.7 67 146 147 158 554 1.14e+03 0.000915 0.000138 70 1 11 69 0.589 - 0/998 1891/3375 67.7 67 146 147 158 554 1.14e+03 0.000896 0.000137 88 0 18 84 0.578 - 0/998 1892/3375 67.7 67 146 147 158 554 1.14e+03 0.000896 0.000137 78 0 14 76 0.596 - 0/998 1893/3375 67.7 67 146 147 158 554 1.14e+03 0.000894 0.000138 103 1 18 99 0.61 - 0/998 1894/3375 67.7 67 146 147 158 554 1.14e+03 0.000894 0.000138 50 0 16 50 0.605 - 0/998 1895/3375 67.8 67 146 147 158 554 1.14e+03 0.000893 0.000137 146 0 5 146 0.619 - 0/998 1896/3375 67.8 67 146 147 158 554 1.14e+03 0.000893 0.000137 77 0 6 77 0.618 - 0/998 1897/3375 67.7 67 146 147 158 554 1.14e+03 0.000893 0.000137 77 1 21 73 0.605 - 0/998 1898/3375 67.7 67 146 147 158 554 1.14e+03 0.000893 0.000137 54 0 7 54 0.598 - 0/998 1899/3375 67.7 67 146 147 158 554 1.14e+03 0.000893 0.000137 82 0 2 81 0.605 - 0/998 1900/3375 67.7 67 146 147 158 554 1.14e+03 0.000892 0.000137 95 0 2 95 0.604 - 0/998 1901/3375 67.7 67 146 147 158 554 1.14e+03 0.000895 0.000138 89 3 15 84 0.617 - 0/998 1902/3375 67.7 67 146 147 158 554 1.14e+03 0.000895 0.000138 29 0 1 29 0.598 - 0/998 1903/3375 67.7 67 146 147 158 554 1.14e+03 0.000895 0.000138 105 0 0 105 0.603 - 0/998 1904/3375 67.7 67 146 147 158 554 1.14e+03 0.000895 0.000138 74 0 4 74 0.607 - 0/998 1905/3375 67.7 67 146 147 158 554 1.14e+03 0.000894 0.000138 115 0 17 114 0.596 - 0/998 1906/3375 67.7 67 146 147 158 554 1.14e+03 0.000894 0.000138 69 0 2 69 0.604 - 0/998 1907/3375 67.7 67 146 147 158 554 1.14e+03 0.000893 0.000138 104 0 20 102 0.599 - 0/998 1908/3375 67.7 67 146 147 158 554 1.14e+03 0.000894 0.000138 111 1 5 110 0.604 - 0/998 1909/3375 67.7 67 146 147 158 554 1.14e+03 0.000877 0.000138 73 0 11 68 0.61 - 0/998 1910/3375 67.7 67 146 147 158 554 1.14e+03 0.000912 0.000141 113 3 29 106 0.602 - 0/998 1911/3375 67.7 67 146 147 158 554 1.14e+03 0.000912 0.000141 87 0 3 87 0.602 - 0/998 1912/3375 67.7 67 146 147 158 554 1.14e+03 0.000912 0.000141 39 0 6 39 0.611 - 0/998 1913/3375 67.7 67 146 147 158 554 1.14e+03 0.000929 0.000142 126 1 5 125 0.611 - 0/998 1914/3375 67.7 67 146 147 158 554 1.14e+03 0.000926 0.000142 79 0 13 79 0.613 - 0/998 1915/3375 67.7 67 146 147 158 554 1.14e+03 0.000926 0.000142 90 0 13 90 0.601 - 0/998 1916/3375 67.7 67 146 147 158 554 1.14e+03 0.000943 0.000144 40 1 9 39 0.589 - 0/998 1917/3375 67.7 67 146 147 158 554 1.14e+03 0.000938 0.000144 86 0 30 86 0.6 - 0/998 1918/3375 67.7 67 146 147 158 554 1.14e+03 0.000952 0.000145 74 1 23 73 0.603 - 0/998 1919/3375 67.7 67 146 147 158 554 1.14e+03 0.000952 0.000146 50 1 21 49 0.619 - 0/998 1920/3375 67.7 66.9 146 147 158 554 1.14e+03 0.000935 0.000146 62 0 94 56 0.598 - 0/998 1921/3375 67.7 66.9 146 147 158 554 1.14e+03 0.000935 0.000145 92 0 14 91 0.599 - 0/998 1922/3375 67.7 66.9 146 147 158 553 1.14e+03 0.000932 0.000145 64 0 13 64 0.612 - 0/998 1923/3375 67.7 66.9 146 147 158 553 1.14e+03 0.000932 0.000146 93 1 12 91 0.606 - 0/998 1924/3375 67.6 66.9 146 147 158 553 1.14e+03 0.000926 0.000146 42 0 30 42 0.599 - 0/998 1925/3375 67.7 66.9 146 147 158 553 1.14e+03 0.000928 0.000146 96 2 19 94 0.6 - 0/998 1926/3375 67.7 66.9 146 147 158 553 1.14e+03 0.000924 0.000146 99 0 38 99 0.604 - 0/998 1927/3375 67.7 66.9 146 147 158 554 1.14e+03 0.000923 0.000146 76 0 5 75 0.588 - 0/998 1928/3375 67.7 66.9 146 147 158 553 1.14e+03 0.000923 0.000146 80 0 5 80 0.6 - 0/998 1929/3375 67.7 67 146 147 158 554 1.14e+03 0.000921 0.000146 134 0 22 132 0.622 - 0/998 1930/3375 67.7 67 146 147 158 554 1.14e+03 0.000922 0.000146 95 1 14 92 0.604 - 0/998 1931/3375 67.7 67 146 147 158 554 1.14e+03 0.00092 0.000146 131 0 21 129 0.616 - 0/998 1932/3375 67.7 67 146 147 158 554 1.14e+03 0.000914 0.000146 49 0 50 44 0.594 - 0/998 1933/3375 67.7 67 146 147 158 554 1.14e+03 0.00091 0.000146 78 1 68 72 0.631 - 0/998 1934/3375 67.7 67 146 147 158 554 1.14e+03 0.000911 0.000146 128 1 17 122 0.615 - 0/998 1935/3375 67.7 67 146 147 158 554 1.14e+03 0.000943 0.00015 141 6 68 131 0.622 - 0/998 1936/3375 67.7 67 146 147 158 554 1.14e+03 0.000943 0.00015 78 1 25 77 0.596 - 0/998 1937/3375 67.7 67 146 147 158 553 1.14e+03 0.000922 0.00015 44 0 40 43 0.604 - 0/998 1938/3375 67.7 67 146 147 158 554 1.14e+03 0.000922 0.00015 127 0 16 127 0.599 - 0/998 1939/3375 67.7 67 146 147 158 554 1.14e+03 0.000922 0.00015 71 0 7 70 0.603 - 0/998 1940/3375 67.7 67 146 147 158 554 1.14e+03 0.000921 0.00015 64 1 27 63 0.611 - 0/998 1941/3375 67.7 67 146 147 158 554 1.14e+03 0.000921 0.00015 107 0 0 107 0.603 - 0/998 1942/3375 67.7 67 146 147 158 554 1.14e+03 0.000921 0.00015 42 0 7 42 0.598 - 0/998 1943/3375 67.7 67 146 147 158 554 1.14e+03 0.00092 0.00015 78 0 15 78 0.617 - 0/998 1944/3375 67.7 67 146 147 158 554 1.14e+03 0.00092 0.00015 93 0 0 93 0.616 - 0/998 1945/3375 67.7 67 146 147 158 554 1.14e+03 0.000919 0.00015 84 1 21 82 0.599 - 0/998 1946/3375 67.7 67 146 147 158 554 1.14e+03 0.000919 0.00015 98 0 7 97 0.614 - 0/998 1947/3375 67.7 67 146 147 158 553 1.14e+03 0.000918 0.00015 55 0 4 55 0.6 - 0/998 1948/3375 67.7 67 146 147 158 553 1.14e+03 0.000918 0.00015 124 0 3 124 0.595 - 0/998 1949/3375 67.7 67 146 147 158 553 1.14e+03 0.000918 0.00015 91 1 21 85 0.594 - 0/998 1950/3375 67.7 67 146 147 158 553 1.14e+03 0.000919 0.00015 69 1 6 68 0.603 - 0/998 1951/3375 67.7 67 146 147 158 553 1.14e+03 0.000917 0.00015 75 0 13 75 0.592 - 0/998 1952/3375 67.7 67 146 147 157 553 1.14e+03 0.000914 0.00015 58 0 41 58 0.606 - 0/998 1953/3375 67.7 67 146 147 157 553 1.14e+03 0.000916 0.00015 82 2 15 79 0.599 - 0/998 1954/3375 67.7 67 146 147 157 553 1.14e+03 0.000915 0.00015 86 0 7 86 0.599 - 0/998 1955/3375 67.7 67 146 147 157 553 1.14e+03 0.000914 0.00015 88 0 11 88 0.609 - 0/998 1956/3375 67.7 67 146 147 157 553 1.14e+03 0.000907 0.00015 43 1 42 42 0.597 - 0/998 1957/3375 67.7 67 146 147 157 553 1.14e+03 0.000906 0.00015 125 0 12 124 0.602 - 0/998 1958/3375 67.7 67 146 147 157 553 1.14e+03 0.000906 0.00015 166 0 2 165 0.6 - 0/998 1959/3375 67.7 67 146 147 157 553 1.14e+03 0.000906 0.00015 70 0 14 69 0.618 - 0/998 1960/3375 67.7 67 146 147 157 553 1.14e+03 0.000905 0.00015 82 1 20 79 0.605 - 0/998 1961/3375 67.7 67 146 147 157 553 1.14e+03 0.000901 0.00015 75 0 33 73 0.616 - 0/998 1962/3375 67.7 67 146 147 157 553 1.14e+03 0.000898 0.00015 69 0 56 69 0.586 - 0/998 1963/3375 67.7 67 146 147 157 553 1.14e+03 0.000898 0.00015 137 0 5 137 0.626 - 0/998 1964/3375 67.7 67 146 147 157 553 1.14e+03 0.000897 0.00015 50 0 13 49 0.586 - 0/998 1965/3375 67.7 67 146 147 157 553 1.14e+03 0.000896 0.00015 104 1 54 100 0.613 - 0/998 1966/3375 67.7 67 146 147 157 553 1.14e+03 0.000896 0.00015 105 0 11 105 0.597 - 0/998 1967/3375 67.7 67 146 147 157 553 1.14e+03 0.000934 0.000154 102 3 41 98 0.594 - 0/998 1968/3375 67.7 67 146 147 157 553 1.14e+03 0.000931 0.000154 61 0 66 60 0.599 - 0/998 1969/3375 67.7 67 146 147 157 553 1.14e+03 0.00093 0.000155 152 4 92 141 0.608 - 0/998 1970/3375 67.7 67 146 147 157 553 1.14e+03 0.00092 0.000156 73 2 104 71 0.607 - 0/998 1971/3375 67.7 67 146 147 157 553 1.14e+03 0.00092 0.000157 85 4 113 80 0.615 - 0/998 1972/3375 67.7 67 146 147 157 553 1.14e+03 0.000921 0.000157 47 2 38 43 0.603 - 0/998 1973/3375 67.7 67 146 146 157 553 1.14e+03 0.00092 0.000157 64 0 23 64 0.602 - 0/998 1974/3375 67.7 67 146 147 157 553 1.14e+03 0.00092 0.000157 135 0 18 134 0.621 - 0/998 1975/3375 67.7 67 146 146 157 553 1.14e+03 0.000918 0.000157 71 1 42 65 0.601 - 0/998 1976/3375 67.7 67 146 147 157 554 1.14e+03 0.000917 0.000157 131 0 25 131 0.616 - 0/998 1977/3375 67.7 67 146 147 157 553 1.14e+03 0.000914 0.000157 74 0 67 74 0.595 - 0/998 1978/3375 67.7 67 146 147 157 553 1.14e+03 0.000917 0.000158 72 3 31 69 0.608 - 0/998 1979/3375 67.7 67 146 146 157 553 1.14e+03 0.000916 0.000158 57 0 25 57 0.607 - 0/998 1980/3375 67.7 67 146 146 157 553 1.14e+03 0.000927 0.00016 111 11 56 98 0.608 - 0/998 1981/3375 67.7 67 146 146 157 553 1.14e+03 0.000927 0.00016 99 1 20 95 0.611 - 0/998 1982/3375 67.7 67 146 146 157 553 1.14e+03 0.000926 0.00016 61 0 30 60 0.592 - 0/998 1983/3375 67.7 67 146 146 157 553 1.14e+03 0.000927 0.000161 55 1 9 54 0.598 - 0/998 1984/3375 67.7 67 146 146 157 553 1.14e+03 0.000927 0.000161 56 1 14 54 0.617 - 0/998 1985/3375 67.7 67 146 146 157 553 1.14e+03 0.000926 0.000161 105 0 29 102 0.619 - 0/998 1986/3375 67.7 67 146 146 157 553 1.14e+03 0.000925 0.000161 94 1 48 89 0.588 - 0/998 1987/3375 67.7 67 146 146 157 553 1.14e+03 0.000924 0.000161 89 0 28 89 0.61 - 0/998 1988/3375 67.7 67 146 146 157 553 1.14e+03 0.000927 0.000162 92 4 44 81 0.609 - 0/998 1989/3375 67.7 67 146 146 157 553 1.14e+03 0.000926 0.000162 91 1 48 85 0.6 - 0/998 1990/3375 67.7 67 146 146 157 553 1.14e+03 0.000926 0.000162 68 0 18 68 0.591 - 0/998 1991/3375 67.7 67 146 146 157 553 1.14e+03 0.000924 0.000162 83 0 50 78 0.598 - 0/998 1992/3375 67.6 66.9 146 146 157 553 1.14e+03 0.000924 0.000162 50 2 46 46 0.595 - 0/998 1993/3375 67.6 66.9 146 146 157 553 1.14e+03 0.000924 0.000162 84 0 7 84 0.595 - 0/998 1994/3375 67.6 66.9 146 146 157 553 1.14e+03 0.000923 0.000162 55 0 32 54 0.603 - 0/998 1995/3375 67.6 66.9 146 146 157 553 1.14e+03 0.000922 0.000162 62 0 19 60 0.601 - 0/998 1996/3375 67.6 66.9 146 146 157 552 1.14e+03 0.000918 0.000162 60 0 59 60 0.605 - 0/998 1997/3375 67.6 66.9 146 146 157 552 1.14e+03 0.00092 0.000163 82 4 80 77 0.607 - 0/998 1998/3375 67.6 66.9 146 146 157 552 1.14e+03 0.000919 0.000163 65 3 118 61 0.594 - 0/998 1999/3375 67.6 66.9 146 146 157 552 1.14e+03 0.000918 0.000163 52 0 26 52 0.588 - 0/998 2000/3375 67.6 66.9 146 146 157 552 1.14e+03 0.000914 0.000163 52 0 47 52 0.603 - 0/998 2001/3375 67.6 66.9 145 146 157 552 1.14e+03 0.000917 0.000165 98 7 123 85 0.606 - 0/998 2002/3375 67.6 66.9 146 146 157 552 1.14e+03 0.000917 0.000165 92 1 48 87 0.605 - 0/998 2003/3375 67.6 66.9 145 146 157 552 1.13e+03 0.000918 0.000166 65 2 38 63 0.614 - 0/998 2004/3375 67.6 66.9 146 146 157 552 1.14e+03 0.000918 0.000166 122 1 13 121 0.629 - 0/998 2005/3375 67.6 66.9 146 146 157 552 1.14e+03 0.000918 0.000166 103 0 4 103 0.6 - 0/998 2006/3375 67.6 66.9 146 146 157 552 1.14e+03 0.000917 0.000166 82 1 40 80 0.594 - 0/998 2007/3375 67.6 66.9 145 146 157 552 1.13e+03 0.000917 0.000166 48 0 12 48 0.603 - 0/998 2008/3375 67.6 66.9 145 146 157 552 1.13e+03 0.000916 0.000166 70 0 26 70 0.584 - 0/998 2009/3375 67.6 66.9 145 146 157 552 1.13e+03 0.000916 0.000166 71 1 22 69 0.61 - 0/998 2010/3375 67.6 66.9 145 146 157 552 1.13e+03 0.000915 0.000166 65 0 33 65 0.598 - 0/998 2011/3375 67.6 66.9 145 146 157 552 1.13e+03 0.000917 0.000166 94 2 26 87 0.607 - 0/998 2012/3375 67.6 66.9 145 146 157 552 1.13e+03 0.000916 0.000166 65 0 13 65 0.622 - 0/998 2013/3375 67.6 66.9 145 146 157 552 1.13e+03 0.000914 0.000166 68 0 50 68 0.608 - 0/998 2014/3375 67.6 66.9 145 146 157 552 1.13e+03 0.000914 0.000166 102 0 4 102 0.606 - 0/998 2015/3375 67.5 66.9 145 146 157 552 1.13e+03 0.000912 0.000166 46 0 42 45 0.602 - 0/998 2016/3375 67.5 66.8 145 146 157 552 1.13e+03 0.000914 0.000167 74 2 11 71 0.584 - 0/998 2017/3375 67.5 66.8 145 146 157 552 1.13e+03 0.000913 0.000167 78 0 34 77 0.617 - 0/998 2018/3375 67.5 66.8 145 146 157 552 1.13e+03 0.000912 0.000166 83 0 2 83 0.606 - 0/998 2019/3375 67.5 66.8 145 146 157 552 1.13e+03 0.000912 0.000166 53 0 20 53 0.602 - 0/998 2020/3375 67.5 66.8 145 146 157 552 1.13e+03 0.000911 0.000166 117 0 18 117 0.609 - 0/998 2021/3375 67.5 66.8 145 146 157 552 1.13e+03 0.000904 0.000168 72 2 70 69 0.616 - 0/998 2022/3375 67.5 66.8 145 146 157 552 1.13e+03 0.000903 0.000168 74 0 18 73 0.587 - 0/998 2023/3375 67.5 66.8 145 146 156 552 1.13e+03 0.000902 0.000168 36 0 32 35 0.597 - 0/998 2024/3375 67.5 66.8 145 146 156 552 1.13e+03 0.000904 0.000168 84 2 10 82 0.62 - 0/998 2025/3375 67.5 66.8 145 146 156 552 1.13e+03 0.000905 0.000169 96 3 36 93 0.617 - 0/998 2026/3375 67.5 66.8 145 146 156 552 1.13e+03 0.000905 0.000169 114 0 4 114 0.607 - 0/998 2027/3375 67.5 66.8 145 146 156 551 1.13e+03 0.000902 0.000169 71 0 87 70 0.595 - 0/998 2028/3375 67.5 66.8 145 146 156 551 1.13e+03 0.000901 0.000169 85 0 19 83 0.605 - 0/998 2029/3375 67.5 66.8 145 146 156 551 1.13e+03 0.000898 0.000169 47 0 65 47 0.605 - 0/998 2030/3375 67.5 66.8 145 145 156 551 1.13e+03 0.000896 0.000169 103 1 98 99 0.601 - 0/998 2031/3375 67.5 66.8 145 146 156 551 1.13e+03 0.000896 0.000169 103 2 59 96 0.605 - 0/998 2032/3375 67.5 66.8 145 146 156 551 1.13e+03 0.000896 0.00017 126 6 132 115 0.604 - 0/998 2033/3375 67.5 66.8 145 145 156 551 1.13e+03 0.000934 0.000178 84 16 333 64 0.611 - 0/998 2034/3375 67.5 66.8 145 145 156 551 1.13e+03 0.000927 0.000178 103 0 125 99 0.597 - 0/998 2035/3375 67.5 66.8 145 146 156 551 1.13e+03 0.0191 0.000188 127 4 41 119 0.599 - 0/998 2036/3375 67.5 66.8 145 146 156 551 1.13e+03 0.0191 0.000188 66 1 62 65 0.609 - 0/998 2037/3375 67.5 66.8 145 146 156 551 1.13e+03 0.0191 0.000188 123 1 30 119 0.598 - 0/998 2038/3375 67.5 66.8 145 146 156 551 1.13e+03 0.0191 0.000189 76 2 54 72 0.607 - 0/998 2039/3375 67.5 66.8 145 146 156 551 1.13e+03 0.0191 0.000189 79 4 48 75 0.607 - 0/998 2040/3375 67.5 66.8 145 146 156 551 1.13e+03 0.0191 0.00019 83 1 20 80 0.604 - 0/998 2041/3375 67.5 66.8 145 146 156 551 1.13e+03 0.0191 0.00019 88 1 7 87 0.61 - 0/998 2042/3375 67.5 66.9 145 146 156 551 1.13e+03 0.0191 0.00019 97 0 30 97 0.614 - 0/998 2043/3375 67.5 66.9 145 146 156 551 1.13e+03 0.0191 0.00019 92 1 44 88 0.613 - 0/998 2044/3375 67.5 66.9 145 146 156 551 1.13e+03 0.0191 0.00019 91 1 6 90 0.587 - 0/998 2045/3375 67.5 66.9 145 146 156 551 1.13e+03 0.0191 0.00019 80 0 18 80 0.61 - 0/998 2046/3375 67.5 66.9 145 146 156 551 1.13e+03 0.0191 0.00019 73 0 2 73 0.592 - 0/998 2047/3375 67.5 66.8 145 145 156 551 1.13e+03 0.0191 0.000191 60 4 30 56 0.613 - 0/998 2048/3375 67.5 66.8 145 145 156 551 1.13e+03 0.0191 0.000191 78 0 10 75 0.61 - 0/998 2049/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000191 116 2 79 104 0.617 - 0/998 2050/3375 67.5 66.9 145 146 156 551 1.13e+03 0.0191 0.000191 125 1 47 117 0.611 - 0/998 2051/3375 67.5 66.9 145 146 156 551 1.13e+03 0.0191 0.000191 97 0 34 96 0.622 - 0/998 2052/3375 67.5 66.9 145 145 156 552 1.13e+03 0.0191 0.000191 94 0 2 93 0.606 - 0/998 2053/3375 67.5 66.9 145 145 156 552 1.13e+03 0.0191 0.000192 80 3 9 75 0.606 - 0/998 2054/3375 67.6 66.9 145 145 156 552 1.13e+03 0.0191 0.000192 92 1 8 89 0.596 - 0/998 2055/3375 67.6 66.9 145 145 156 552 1.13e+03 0.0191 0.000192 75 0 2 75 0.601 - 0/998 2056/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000192 46 0 5 46 0.602 - 0/998 2057/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000192 65 1 66 49 0.596 - 0/998 2058/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000193 58 4 42 50 0.599 - 0/998 2059/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000193 121 0 3 121 0.601 - 0/998 2060/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000192 86 0 6 83 0.596 - 0/998 2061/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000192 95 0 1 95 0.608 - 0/998 2062/3375 67.6 66.9 145 145 156 551 1.13e+03 0.0191 0.000194 105 2 5 103 0.617 - 0/998 2063/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000194 50 0 29 48 0.6 - 0/998 2064/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000194 77 1 10 75 0.598 - 0/998 2065/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000194 44 0 15 44 0.597 - 0/998 2066/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000194 128 0 2 128 0.613 - 0/998 2067/3375 67.6 66.9 145 145 156 551 1.13e+03 0.0191 0.000194 133 0 4 133 0.603 - 0/998 2068/3375 67.6 66.9 145 145 156 551 1.13e+03 0.0191 0.000195 83 5 51 76 0.605 - 0/998 2069/3375 67.6 66.9 145 145 156 551 1.13e+03 0.0191 0.000195 89 1 8 88 0.613 - 0/998 2070/3375 67.6 66.9 145 145 156 551 1.13e+03 0.0191 0.000195 88 1 5 87 0.605 - 0/998 2071/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000195 51 1 43 49 0.599 - 0/998 2072/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000196 59 2 14 55 0.61 - 0/998 2073/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000196 78 0 61 78 0.615 - 0/998 2074/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000197 78 6 80 67 0.598 - 0/998 2075/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000197 103 1 17 99 0.619 - 0/998 2076/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000197 82 1 15 80 0.601 - 0/998 2077/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000197 76 0 14 76 0.609 - 0/998 2078/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000197 107 0 30 104 0.589 - 0/998 2079/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000197 66 1 74 62 0.598 - 0/998 2080/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000198 108 3 38 103 0.617 - 0/998 2081/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000198 53 1 41 48 0.607 - 0/998 2082/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000198 97 0 3 97 0.602 - 0/998 2083/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000198 63 1 35 60 0.606 - 0/998 2084/3375 67.5 66.9 145 145 156 551 1.13e+03 0.0191 0.000199 72 3 73 68 0.605 - 0/998 2085/3375 67.5 66.8 145 145 156 551 1.13e+03 0.0191 0.000199 35 0 58 34 0.592 - 0/998 2086/3375 67.5 66.8 145 145 156 551 1.13e+03 0.0191 0.000199 78 0 2 78 0.598 - 0/998 2087/3375 67.5 66.8 145 145 156 551 1.13e+03 0.0191 0.000199 90 3 8 86 0.57 - 0/998 2088/3375 67.5 66.8 145 145 156 551 1.13e+03 0.0191 0.0002 92 3 63 89 0.605 - 0/998 2089/3375 67.5 66.8 145 145 156 550 1.13e+03 0.0191 0.000201 65 5 19 59 0.599 - 0/998 2090/3375 67.5 66.8 145 145 156 550 1.13e+03 0.0191 0.000201 73 1 22 71 0.598 - 0/998 2091/3375 67.5 66.8 145 145 156 551 1.13e+03 0.0191 0.000201 115 0 14 113 0.607 - 0/998 2092/3375 67.5 66.8 145 145 156 551 1.13e+03 0.0191 0.000201 86 0 2 86 0.595 - 0/998 2093/3375 67.5 66.8 145 145 156 550 1.13e+03 0.0191 0.000201 66 1 3 65 0.61 - 0/998 2094/3375 67.5 66.8 145 145 156 551 1.13e+03 0.0191 0.000201 124 1 5 122 0.625 - 0/998 2095/3375 67.5 66.8 145 145 156 551 1.13e+03 0.0191 0.000202 74 1 29 71 0.608 - 0/998 2096/3375 67.5 66.8 145 145 156 550 1.13e+03 0.0191 0.000201 70 0 24 70 0.586 - 0/998 2097/3375 67.5 66.8 145 145 156 551 1.13e+03 0.0191 0.000201 95 0 3 95 0.6 - 0/998 2098/3375 67.5 66.8 145 145 156 550 1.13e+03 0.0191 0.000201 78 1 13 77 0.606 - 0/998 2099/3375 67.5 66.8 145 145 156 550 1.13e+03 0.0191 0.000201 81 0 48 81 0.576 - 0/998 2100/3375 67.5 66.8 145 145 156 550 1.13e+03 0.0191 0.000201 75 0 43 75 0.605 - 0/998 2101/3375 67.5 66.8 145 145 156 550 1.13e+03 0.0191 0.000201 78 1 48 76 0.59 - 0/998 2102/3375 67.4 66.8 145 145 156 550 1.13e+03 0.0191 0.000201 70 0 85 70 0.59 - 0/998 2103/3375 67.4 66.8 145 145 156 550 1.13e+03 0.0191 0.000202 82 2 24 79 0.595 - 0/998 2104/3375 67.4 66.8 145 145 156 550 1.13e+03 0.0191 0.000202 82 1 10 81 0.604 - 0/998 2105/3375 67.4 66.8 145 145 156 550 1.13e+03 0.0191 0.000202 91 2 8 89 0.605 - 0/998 2106/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000202 60 0 25 58 0.595 - 0/998 2107/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000202 82 0 35 75 0.599 - 0/998 2108/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000202 46 0 37 44 0.591 - 0/998 2109/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000202 93 0 29 90 0.624 - 0/998 2110/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000202 92 0 7 92 0.611 - 0/998 2111/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000202 122 1 1 121 0.614 - 0/998 2112/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000202 89 0 7 86 0.602 - 0/998 2113/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000203 98 3 6 95 0.597 - 0/998 2114/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000202 105 0 3 105 0.585 - 0/998 2115/3375 67.5 66.8 145 145 155 550 1.13e+03 0.0191 0.000203 105 1 13 104 0.606 - 0/998 2116/3375 67.5 66.8 145 145 155 550 1.13e+03 0.0191 0.000203 112 1 34 111 0.601 - 0/998 2117/3375 67.5 66.8 145 145 155 550 1.13e+03 0.0191 0.000203 51 1 19 50 0.592 - 0/998 2118/3375 67.5 66.8 145 145 155 550 1.13e+03 0.0191 0.000203 75 0 7 74 0.597 - 0/998 2119/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000203 59 1 20 55 0.616 - 0/998 2120/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000203 83 0 11 82 0.594 - 0/998 2121/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000203 89 0 22 88 0.593 - 0/998 2122/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000203 79 2 55 77 0.612 - 0/998 2123/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000203 120 0 9 120 0.604 - 0/998 2124/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000204 82 4 56 71 0.613 - 0/998 2125/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000205 79 5 31 74 0.602 - 0/998 2126/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0191 0.000205 106 1 28 105 0.623 - 0/998 2127/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0188 0.000205 100 1 85 90 0.606 - 0/998 2128/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0188 0.000206 97 3 29 92 0.601 - 0/998 2129/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0188 0.000206 74 0 62 72 0.617 - 0/998 2130/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0188 0.000205 50 0 53 49 0.601 - 0/998 2131/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000206 64 1 15 63 0.604 - 0/998 2132/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000206 72 1 62 68 0.63 - 0/998 2133/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000206 125 0 13 125 0.606 - 0/998 2134/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0188 0.000206 124 0 36 120 0.599 - 0/998 2135/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000206 74 0 16 73 0.594 - 0/998 2136/3375 67.4 66.8 145 145 155 550 1.13e+03 0.0188 0.000205 93 0 30 93 0.61 - 0/998 2137/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000205 84 0 9 84 0.595 - 0/998 2138/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000206 56 3 29 53 0.61 - 0/998 2139/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000206 49 0 22 48 0.605 - 0/998 2140/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000206 63 1 54 57 0.609 - 0/998 2141/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000207 84 6 82 75 0.612 - 0/998 2142/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000207 91 0 16 91 0.621 - 0/998 2143/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000207 62 0 22 62 0.593 - 0/998 2144/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000207 83 0 35 81 0.631 - 0/998 2145/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000207 136 0 17 135 0.633 - 0/998 2146/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000207 91 1 8 90 0.605 - 0/998 2147/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0187 0.000207 91 1 54 88 0.618 - 0/998 2148/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0187 0.000207 124 0 3 124 0.604 - 0/998 2149/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0188 0.000208 80 5 84 68 0.619 - 0/998 2150/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0187 0.000208 47 0 37 46 0.602 - 0/998 2151/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0187 0.000208 116 0 19 115 0.601 - 0/998 2152/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0187 0.000208 55 1 24 50 0.601 - 0/998 2153/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0187 0.000208 188 1 22 183 0.605 - 0/998 2154/3375 67.5 66.8 144 145 155 550 1.13e+03 0.0187 0.000208 91 0 14 89 0.602 - 0/998 2155/3375 67.4 66.8 144 145 155 550 1.13e+03 0.0184 0.000208 64 1 23 62 0.615 - 0/998 2156/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0184 0.000209 57 3 31 54 0.583 - 0/998 2157/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0184 0.000209 48 0 4 48 0.606 - 0/998 2158/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0184 0.000209 90 1 25 88 0.603 - 0/998 2159/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0184 0.000209 56 0 24 55 0.605 - 0/998 2160/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0181 0.000209 116 0 15 114 0.609 - 0/998 2161/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0181 0.000209 93 0 5 93 0.607 - 0/998 2162/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0181 0.000209 61 0 5 61 0.609 - 0/998 2163/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000209 60 1 23 57 0.611 - 0/998 2164/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0181 0.000208 129 0 10 128 0.609 - 0/998 2165/3375 67.4 66.8 144 144 155 550 1.13e+03 0.0181 0.000209 81 2 24 76 0.604 - 0/998 2166/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000209 84 0 7 84 0.594 - 0/998 2167/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000209 89 0 7 89 0.596 - 0/998 2168/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000208 102 0 10 100 0.617 - 0/998 2169/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000209 108 2 32 99 0.622 - 0/998 2170/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000209 72 1 28 70 0.6 - 0/998 2171/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000209 83 0 28 83 0.596 - 0/998 2172/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000209 58 1 49 52 0.593 - 0/998 2173/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000211 94 9 60 80 0.611 - 0/998 2174/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000211 90 2 53 85 0.614 - 0/998 2175/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000212 120 3 17 116 0.595 - 0/998 2176/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000212 98 1 30 97 0.604 - 0/998 2177/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000212 45 1 37 43 0.59 - 0/998 2178/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000213 114 4 25 107 0.614 - 0/998 2179/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000213 75 0 22 73 0.61 - 0/998 2180/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000215 99 8 45 83 0.605 - 0/998 2181/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000215 96 3 83 85 0.618 - 0/998 2182/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000216 60 4 60 53 0.621 - 0/998 2183/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000216 105 0 12 104 0.597 - 0/998 2184/3375 67.4 66.8 144 144 155 549 1.13e+03 0.0181 0.000217 77 3 69 67 0.621 - 0/998 2185/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000217 131 1 131 127 0.593 - 0/998 2186/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000217 129 0 9 128 0.61 - 0/998 2187/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000216 87 0 38 83 0.609 - 0/998 2188/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000217 60 3 54 57 0.599 - 0/998 2189/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000217 112 0 9 110 0.602 - 0/998 2190/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000217 90 2 15 87 0.606 - 0/998 2191/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000217 71 0 21 68 0.61 - 0/998 2192/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000218 116 3 55 106 0.608 - 0/998 2193/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000218 70 0 33 70 0.605 - 0/998 2194/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000217 98 0 15 98 0.615 - 0/998 2195/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0181 0.000217 123 0 41 121 0.613 - 0/998 2196/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0178 0.000218 85 2 47 77 0.608 - 0/998 2197/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0178 0.000218 74 0 11 73 0.604 - 0/998 2198/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0178 0.000218 93 0 58 91 0.602 - 0/998 2199/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0178 0.000217 92 0 8 92 0.601 - 0/998 2200/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0178 0.000218 60 2 49 55 0.604 - 0/998 2201/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0178 0.000218 111 1 12 109 0.606 - 0/998 2202/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0178 0.000218 60 1 59 59 0.612 - 0/998 2203/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0178 0.000218 63 0 25 58 0.596 - 0/998 2204/3375 67.5 66.8 144 144 155 549 1.13e+03 0.0178 0.000218 103 0 19 100 0.605 - 0/998 2205/3375 67.5 66.8 144 144 154 549 1.13e+03 0.0178 0.000219 60 3 40 57 0.602 - 0/998 2206/3375 67.4 66.8 144 144 154 549 1.13e+03 0.0178 0.000219 54 1 44 53 0.609 - 0/998 2207/3375 67.4 66.8 144 144 154 549 1.13e+03 0.0178 0.000219 52 0 13 50 0.593 - 0/998 2208/3375 67.4 66.8 144 144 154 549 1.13e+03 0.0178 0.000219 62 0 25 59 0.597 - 0/998 2209/3375 67.4 66.8 144 144 154 549 1.13e+03 0.0178 0.000219 77 0 14 77 0.605 - 0/998 2210/3375 67.4 66.7 144 144 154 549 1.13e+03 0.0178 0.000219 41 0 9 40 0.612 - 0/998 2211/3375 67.4 66.8 144 144 154 549 1.13e+03 0.0178 0.000218 131 0 4 131 0.591 - 0/998 2212/3375 67.4 66.8 144 144 154 549 1.13e+03 0.0178 0.000219 98 2 16 94 0.601 - 0/998 2213/3375 67.4 66.8 144 144 154 549 1.13e+03 0.0178 0.000219 70 0 4 70 0.6 - 0/998 2214/3375 67.4 66.8 144 144 154 549 1.13e+03 0.0178 0.000219 75 1 6 74 0.599 - 0/998 2215/3375 67.4 66.8 144 144 154 549 1.13e+03 0.0178 0.000219 99 1 14 94 0.616 - 0/998 2216/3375 67.4 66.8 144 144 154 549 1.13e+03 0.0178 0.000219 114 0 9 114 0.615 - 0/998 2217/3375 67.4 66.7 144 144 154 549 1.13e+03 0.0175 0.000219 66 1 59 61 0.585 - 0/998 2218/3375 67.4 66.7 144 144 154 549 1.13e+03 0.0175 0.000219 87 0 10 87 0.588 - 0/998 2219/3375 67.4 66.7 144 144 154 549 1.13e+03 0.0175 0.000219 76 0 22 71 0.595 - 0/998 2220/3375 67.4 66.7 144 144 154 549 1.12e+03 0.0175 0.000219 61 0 22 59 0.597 - 0/998 2221/3375 67.4 66.7 144 144 154 549 1.12e+03 0.00917 0.000219 104 0 12 102 0.605 - 0/998 2222/3375 67.4 66.7 144 144 154 549 1.12e+03 0.00918 0.00022 82 3 32 77 0.61 - 0/998 2223/3375 67.4 66.7 144 144 154 549 1.12e+03 0.00918 0.000221 49 2 134 47 0.59 - 0/998 2224/3375 67.4 66.7 144 144 154 548 1.12e+03 0.00917 0.000221 72 0 16 72 0.594 - 0/998 2225/3375 67.4 66.7 144 144 154 548 1.12e+03 0.00917 0.00022 83 0 23 79 0.59 - 0/998 2226/3375 67.4 66.7 144 144 154 548 1.12e+03 0.00917 0.000221 85 1 38 81 0.615 - 0/998 2227/3375 67.4 66.7 144 144 154 548 1.12e+03 0.00917 0.000221 56 0 59 56 0.601 - 0/998 2228/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00917 0.00022 49 0 94 49 0.612 - 0/998 2229/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00917 0.000221 64 1 19 63 0.618 - 0/998 2230/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00917 0.000221 113 3 58 105 0.629 - 0/998 2231/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00917 0.000221 63 0 24 63 0.594 - 0/998 2232/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00902 0.000221 44 1 122 42 0.603 - 0/998 2233/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00887 0.000221 55 0 42 53 0.604 - 0/998 2234/3375 67.3 66.6 144 144 154 548 1.12e+03 0.00887 0.000221 59 1 16 58 0.59 - 0/998 2235/3375 67.3 66.6 144 144 154 548 1.12e+03 0.00887 0.000222 59 4 46 55 0.611 - 0/998 2236/3375 67.3 66.6 144 144 154 548 1.12e+03 0.00887 0.000222 72 0 18 69 0.608 - 0/998 2237/3375 67.3 66.6 144 144 154 548 1.12e+03 0.00887 0.000222 116 0 62 111 0.622 - 0/998 2238/3375 67.3 66.6 144 144 154 548 1.12e+03 0.00887 0.000224 93 9 123 82 0.603 - 0/998 2239/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000225 130 4 30 122 0.609 - 0/998 2240/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000225 95 1 14 94 0.605 - 0/998 2241/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000225 79 2 49 76 0.604 - 0/998 2242/3375 67.3 66.6 144 144 154 548 1.12e+03 0.00888 0.000226 55 3 11 52 0.586 - 0/998 2243/3375 67.3 66.6 144 144 154 548 1.12e+03 0.00888 0.000226 81 1 35 77 0.611 - 0/998 2244/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000226 119 0 11 116 0.589 - 0/998 2245/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000226 101 0 38 97 0.605 - 0/998 2246/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000226 96 1 11 92 0.607 - 0/998 2247/3375 67.3 66.6 144 144 154 548 1.12e+03 0.00887 0.000226 37 1 87 34 0.592 - 0/998 2248/3375 67.3 66.6 144 144 154 548 1.12e+03 0.00887 0.000227 95 3 12 90 0.607 - 0/998 2249/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00887 0.000227 129 2 4 126 0.603 - 0/998 2250/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000228 76 6 90 63 0.59 - 0/998 2251/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00887 0.000228 83 0 12 82 0.613 - 0/998 2252/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000229 127 3 12 124 0.606 - 0/998 2253/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000229 96 1 9 95 0.613 - 0/998 2254/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000229 110 0 7 108 0.601 - 0/998 2255/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000229 58 1 32 57 0.601 - 0/998 2256/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000229 79 1 14 76 0.614 - 0/998 2257/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.000229 44 3 71 39 0.586 - 0/998 2258/3375 67.3 66.7 144 144 154 547 1.12e+03 0.00888 0.00023 60 1 49 57 0.614 - 0/998 2259/3375 67.3 66.7 144 144 154 547 1.12e+03 0.00888 0.00023 100 1 42 98 0.597 - 0/998 2260/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00888 0.00023 93 2 60 90 0.612 - 0/998 2261/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00887 0.00023 118 0 50 114 0.612 - 0/998 2262/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00887 0.00023 78 1 8 77 0.615 - 0/998 2263/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00873 0.00023 81 0 44 79 0.6 - 0/998 2264/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00873 0.00023 154 2 37 147 0.617 - 0/998 2265/3375 67.3 66.7 144 144 154 548 1.12e+03 0.0086 0.00023 91 1 49 87 0.607 - 0/998 2266/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00859 0.000231 73 2 50 70 0.611 - 0/998 2267/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00859 0.000231 82 2 77 77 0.594 - 0/998 2268/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00859 0.000231 56 1 67 52 0.6 - 0/998 2269/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00858 0.000231 81 1 238 78 0.601 - 0/998 2270/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00858 0.000232 76 5 115 67 0.611 - 0/998 2271/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00857 0.000232 71 0 93 67 0.608 - 0/998 2272/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00857 0.000233 83 5 53 75 0.599 - 0/998 2273/3375 67.3 66.7 144 144 154 548 1.12e+03 0.00857 0.000233 59 0 51 58 0.601 - 0/998 2274/3375 67.3 66.7 144 144 154 547 1.12e+03 0.00857 0.000233 56 0 45 56 0.592 - 0/998 2275/3375 67.3 66.7 144 143 154 547 1.12e+03 0.00857 0.000233 59 0 11 58 0.606 - 0/998 2276/3375 67.3 66.6 144 143 154 547 1.12e+03 0.00857 0.000234 70 3 64 64 0.616 - 0/998 2277/3375 67.3 66.7 144 143 154 547 1.12e+03 0.00857 0.000235 95 5 78 85 0.606 - 0/998 2278/3375 67.3 66.6 143 143 154 547 1.12e+03 0.00857 0.000235 77 0 22 76 0.626 - 0/998 2279/3375 67.3 66.7 143 143 154 547 1.12e+03 0.00857 0.000235 113 1 39 110 0.6 - 0/998 2280/3375 67.3 66.6 143 143 154 547 1.12e+03 0.00857 0.000235 79 0 18 75 0.591 - 0/998 2281/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00857 0.000235 76 2 50 72 0.61 - 0/998 2282/3375 67.3 66.6 143 143 153 547 1.12e+03 0.00844 0.000236 84 6 126 76 0.612 - 0/998 2283/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00844 0.000236 66 1 16 65 0.6 - 0/998 2284/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00844 0.000236 77 1 34 76 0.608 - 0/998 2285/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00844 0.000237 78 1 19 75 0.609 - 0/998 2286/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00844 0.000237 75 1 12 73 0.599 - 0/998 2287/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00844 0.000238 93 4 158 83 0.596 - 0/998 2288/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00844 0.000238 100 1 9 99 0.61 - 0/998 2289/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.000238 77 0 50 75 0.609 - 0/998 2290/3375 67.2 66.7 143 143 153 547 1.12e+03 0.00844 0.000238 114 4 61 108 0.592 - 0/998 2291/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00844 0.000239 62 2 34 58 0.598 - 0/998 2292/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00844 0.000239 90 0 13 88 0.612 - 0/998 2293/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00844 0.000239 41 1 37 40 0.597 - 0/998 2294/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.000239 87 1 68 84 0.62 - 0/998 2295/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.000239 99 1 40 98 0.616 - 0/998 2296/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.00024 107 4 109 98 0.621 - 0/998 2297/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.00024 87 1 36 82 0.605 - 0/998 2298/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.00024 67 1 42 66 0.612 - 0/998 2299/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.00024 63 0 25 60 0.614 - 0/998 2300/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.000241 141 4 43 131 0.6 - 0/998 2301/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.000241 69 2 66 62 0.597 - 0/998 2302/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.000242 57 3 51 50 0.607 - 0/998 2303/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.000242 109 2 56 96 0.615 - 0/998 2304/3375 67.2 66.6 143 143 153 547 1.12e+03 0.00843 0.000242 81 0 52 79 0.608 - 0/998 2305/3375 67.2 66.7 143 143 153 547 1.12e+03 0.00843 0.000242 100 0 22 99 0.588 - 0/998 2306/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000241 97 0 7 97 0.601 - 0/998 2307/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000242 93 2 54 82 0.605 - 0/998 2308/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000242 120 0 6 120 0.607 - 0/998 2309/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000242 73 1 68 67 0.612 - 0/998 2310/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000243 111 6 82 94 0.592 - 0/998 2311/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000243 95 3 69 91 0.605 - 0/998 2312/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000244 81 3 127 77 0.611 - 0/998 2313/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000244 78 0 35 78 0.612 - 0/998 2314/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000244 104 1 59 98 0.612 - 0/998 2315/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000245 76 5 40 69 0.591 - 0/998 2316/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00844 0.000246 106 1 13 104 0.614 - 0/998 2317/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000247 52 2 224 50 0.614 - 0/998 2318/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000247 66 0 35 64 0.615 - 0/998 2319/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000247 100 4 99 89 0.612 - 0/998 2320/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00843 0.000247 103 1 92 101 0.625 - 0/998 2321/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00842 0.000247 67 0 51 66 0.606 - 0/998 2322/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00842 0.000248 70 3 220 61 0.613 - 0/998 2323/3375 67.3 66.6 143 143 153 547 1.12e+03 0.00842 0.000248 90 1 52 84 0.605 - 0/998 2324/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00842 0.000248 105 0 105 104 0.609 - 0/998 2325/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00842 0.000248 113 0 41 113 0.626 - 0/998 2326/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00842 0.000249 121 7 143 111 0.618 - 0/998 2327/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00842 0.00025 99 8 146 81 0.622 - 0/998 2328/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00842 0.00025 56 0 115 53 0.603 - 0/998 2329/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00841 0.00025 87 0 66 87 0.634 - 0/998 2330/3375 67.3 66.7 143 143 153 547 1.12e+03 0.00841 0.00025 73 0 38 73 0.615 - 0/998 2331/3375 67.3 66.6 143 143 153 547 1.12e+03 0.0084 0.00025 54 0 312 50 0.605 - 0/998 2332/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00842 0.000254 70 4 303 57 0.609 - 0/998 2333/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00842 0.000255 91 4 142 86 0.613 - 0/998 2334/3375 67.3 66.6 143 143 153 547 1.12e+03 0.00842 0.000255 100 0 73 94 0.608 - 0/998 2335/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00841 0.000255 66 1 84 62 0.596 - 0/998 2336/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00841 0.000256 88 6 169 76 0.602 - 0/998 2337/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00841 0.000256 91 1 77 86 0.606 - 0/998 2338/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00841 0.000256 65 1 62 64 0.595 - 0/998 2339/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00841 0.000257 70 2 29 65 0.587 - 0/998 2340/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00841 0.000257 107 3 83 93 0.602 - 0/998 2341/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00842 0.00026 57 2 78 51 0.599 - 0/998 2342/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00842 0.00026 42 0 35 41 0.599 - 0/998 2343/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000261 55 3 38 50 0.612 - 0/998 2344/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000261 100 1 20 96 0.596 - 0/998 2345/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000261 79 0 11 79 0.61 - 0/998 2346/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000261 52 0 6 52 0.601 - 0/998 2347/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000261 78 1 38 70 0.607 - 0/998 2348/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000263 72 7 76 62 0.586 - 0/998 2349/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000263 95 2 36 87 0.6 - 0/998 2350/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000263 79 3 21 73 0.616 - 0/998 2351/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000264 92 3 16 87 0.595 - 0/998 2352/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000264 99 0 18 97 0.616 - 0/998 2353/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000264 92 0 16 91 0.608 - 0/998 2354/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000264 119 1 9 116 0.627 - 0/998 2355/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000264 55 2 16 51 0.607 - 0/998 2356/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00844 0.000264 128 1 12 126 0.617 - 0/998 2357/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000264 61 0 74 59 0.594 - 0/998 2358/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00843 0.000264 49 0 33 46 0.614 - 0/998 2359/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00844 0.000265 81 1 42 80 0.606 - 0/998 2360/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00844 0.000265 46 0 27 45 0.594 - 0/998 2361/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00844 0.000266 100 2 60 96 0.604 - 0/998 2362/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00844 0.000266 104 2 49 98 0.614 - 0/998 2363/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00844 0.000266 86 3 80 79 0.599 - 0/998 2364/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00844 0.000266 71 0 18 70 0.601 - 0/998 2365/3375 67.2 66.6 143 143 153 546 1.12e+03 0.00844 0.000266 72 0 5 72 0.594 - 0/998 2366/3375 67.2 66.6 143 143 152 546 1.12e+03 0.00844 0.000267 46 3 65 41 0.597 - 0/998 2367/3375 67.2 66.6 143 143 152 546 1.12e+03 0.00844 0.000267 113 1 10 110 0.594 - 0/998 2368/3375 67.1 66.5 143 143 152 546 1.12e+03 0.00844 0.000267 41 3 70 36 0.584 - 0/998 2369/3375 67.1 66.5 143 143 152 546 1.12e+03 0.00844 0.000268 80 5 46 74 0.601 - 0/998 2370/3375 67.1 66.5 143 143 152 545 1.12e+03 0.00844 0.000268 90 0 50 84 0.599 - 0/998 2371/3375 67.1 66.5 143 143 152 545 1.12e+03 0.00843 0.000268 51 0 113 48 0.614 - 0/998 2372/3375 67.1 66.5 143 143 152 545 1.12e+03 0.00843 0.000268 61 0 45 61 0.608 - 0/998 2373/3375 67.1 66.5 143 142 152 545 1.12e+03 0.00843 0.000268 51 2 34 48 0.598 - 0/998 2374/3375 67.1 66.5 143 142 152 545 1.12e+03 0.0083 0.000268 51 0 26 50 0.617 - 0/998 2375/3375 67.1 66.5 143 142 152 545 1.12e+03 0.0083 0.000269 62 3 87 58 0.614 - 0/998 2376/3375 67.1 66.5 143 142 152 545 1.12e+03 0.0083 0.000269 77 2 56 73 0.594 - 0/998 2377/3375 67.1 66.5 142 142 152 545 1.12e+03 0.0083 0.00027 72 7 138 62 0.611 - 0/998 2378/3375 67.1 66.5 142 142 152 545 1.12e+03 0.0083 0.000272 94 9 136 80 0.625 - 0/998 2379/3375 67.1 66.5 142 142 152 545 1.12e+03 0.0083 0.000273 78 4 131 74 0.633 - 0/998 2380/3375 67.1 66.5 142 142 152 545 1.12e+03 0.00818 0.000273 73 0 140 71 0.627 - 0/998 2381/3375 67.1 66.5 142 142 152 545 1.12e+03 0.00818 0.000275 128 4 68 113 0.611 - 0/998 2382/3375 67.1 66.5 142 142 152 545 1.12e+03 0.00818 0.000275 63 2 164 52 0.605 - 0/998 2383/3375 67.1 66.5 142 142 152 545 1.12e+03 0.00818 0.000276 101 4 88 93 0.614 - 0/998 2384/3375 67.1 66.5 142 142 152 545 1.12e+03 0.00818 0.000276 70 3 80 65 0.597 - 0/998 2385/3375 67.1 66.5 142 142 152 545 1.12e+03 0.00818 0.000277 101 3 47 90 0.605 - 0/998 2386/3375 67.1 66.5 142 142 152 545 1.12e+03 0.00818 0.000277 66 3 55 61 0.615 - 0/998 2387/3375 67.1 66.5 142 142 152 545 1.12e+03 0.00818 0.000277 67 0 31 65 0.607 - 0/998 2388/3375 67 66.5 142 142 152 545 1.12e+03 0.00818 0.000277 62 1 25 61 0.617 - 0/998 2389/3375 67 66.5 142 142 152 545 1.12e+03 0.00818 0.000277 99 1 27 97 0.61 - 0/998 2390/3375 67.1 66.5 142 142 152 545 1.12e+03 0.00818 0.000277 103 0 43 96 0.609 - 0/998 2391/3375 67 66.5 142 142 152 545 1.12e+03 0.00818 0.000277 65 0 55 64 0.606 - 0/998 2392/3375 67 66.5 142 142 152 545 1.11e+03 0.00818 0.000277 60 0 13 60 0.592 - 0/998 2393/3375 67 66.5 142 142 152 545 1.11e+03 0.00817 0.000277 64 0 61 63 0.613 - 0/998 2394/3375 67 66.4 142 142 152 545 1.11e+03 0.00817 0.000277 59 0 25 58 0.603 - 0/998 2395/3375 67 66.4 142 142 152 545 1.11e+03 0.00817 0.000277 114 1 3 113 0.61 - 0/998 2396/3375 67 66.5 142 142 152 545 1.11e+03 0.00817 0.000277 95 1 13 94 0.612 - 0/998 2397/3375 67 66.5 142 142 152 545 1.11e+03 0.00818 0.000277 102 3 49 95 0.611 - 0/998 2398/3375 67 66.5 142 142 152 545 1.11e+03 0.00818 0.000277 82 0 13 81 0.609 - 0/998 2399/3375 67 66.5 142 142 152 545 1.11e+03 0.00817 0.000277 80 0 27 75 0.612 - 0/998 2400/3375 67 66.4 142 142 152 544 1.11e+03 0.00818 0.000279 47 2 26 42 0.594 - 0/998 2401/3375 67 66.4 142 142 152 544 1.11e+03 0.00818 0.000279 75 2 15 72 0.615 - 0/998 2402/3375 67 66.4 142 142 152 544 1.11e+03 0.00818 0.00028 103 4 62 91 0.601 - 0/998 2403/3375 67 66.4 142 142 152 544 1.11e+03 0.00818 0.000281 76 5 28 67 0.61 - 0/998 2404/3375 67 66.4 142 142 152 544 1.11e+03 0.00818 0.00028 132 0 14 131 0.608 - 0/998 2405/3375 67 66.4 142 142 152 544 1.11e+03 0.00818 0.000281 65 2 51 61 0.611 - 0/998 2406/3375 67 66.4 142 142 152 544 1.11e+03 0.00818 0.000281 64 0 7 64 0.614 - 0/998 2407/3375 67 66.4 142 142 152 544 1.11e+03 0.00819 0.000282 117 2 8 115 0.611 - 0/998 2408/3375 67 66.4 142 142 152 544 1.11e+03 0.00819 0.000282 67 0 7 67 0.602 - 0/998 2409/3375 67 66.4 142 142 152 544 1.11e+03 0.00819 0.000282 78 1 13 75 0.601 - 0/998 2410/3375 67 66.4 142 142 152 544 1.11e+03 0.00819 0.000282 73 0 12 72 0.612 - 0/998 2411/3375 67 66.4 142 142 152 544 1.11e+03 0.00819 0.000282 101 3 31 94 0.621 - 0/998 2412/3375 67 66.4 142 142 152 544 1.11e+03 0.00819 0.000283 78 1 9 77 0.594 - 0/998 2413/3375 67 66.4 142 142 152 544 1.11e+03 0.00819 0.000283 129 0 5 129 0.606 - 0/998 2414/3375 67 66.4 142 142 152 544 1.11e+03 0.00819 0.000283 93 1 46 88 0.6 - 0/998 2415/3375 67 66.4 142 142 152 544 1.11e+03 0.0082 0.000284 77 4 22 68 0.597 - 0/998 2416/3375 67 66.5 142 142 152 544 1.11e+03 0.0082 0.000284 122 0 6 121 0.613 - 0/998 2417/3375 67 66.5 142 142 152 544 1.11e+03 0.0082 0.000285 104 3 20 100 0.621 - 0/998 2418/3375 67 66.5 142 142 152 544 1.11e+03 0.0082 0.000285 109 0 5 109 0.607 - 0/998 2419/3375 67.1 66.5 142 142 152 544 1.11e+03 0.0082 0.000286 101 3 35 98 0.606 - 0/998 2420/3375 67.1 66.5 142 142 152 544 1.11e+03 0.0082 0.000286 74 2 43 70 0.604 - 0/998 2421/3375 67.1 66.5 142 142 152 544 1.11e+03 0.0082 0.000286 77 2 48 73 0.625 - 0/998 2422/3375 67.1 66.5 142 142 152 545 1.11e+03 0.0082 0.000287 152 3 19 146 0.605 - 0/998 2423/3375 67.1 66.5 142 142 152 545 1.11e+03 0.0082 0.000287 80 1 79 78 0.595 - 0/998 2424/3375 67.1 66.5 142 142 152 544 1.11e+03 0.00821 0.000289 61 6 57 54 0.604 - 0/998 2425/3375 67.1 66.5 142 142 152 544 1.11e+03 0.00821 0.000289 89 2 24 84 0.586 - 0/998 2426/3375 67.1 66.5 142 142 152 544 1.11e+03 0.00821 0.00029 93 2 23 90 0.619 - 0/998 2427/3375 67.1 66.5 142 142 152 544 1.11e+03 0.00821 0.00029 48 1 38 45 0.603 - 0/998 2428/3375 67.1 66.5 142 142 152 544 1.11e+03 0.00821 0.000291 98 5 55 93 0.608 - 0/998 2429/3375 67.1 66.5 142 142 152 544 1.11e+03 0.00821 0.000291 89 2 24 85 0.618 - 0/998 2430/3375 67.1 66.5 142 142 152 544 1.11e+03 0.00821 0.000291 73 1 40 71 0.605 - 0/998 2431/3375 67.1 66.5 142 142 152 544 1.11e+03 0.00822 0.000292 87 1 39 82 0.615 - 0/998 2432/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000293 35 2 34 32 0.597 - 0/998 2433/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000292 57 0 12 57 0.592 - 0/998 2434/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000293 142 1 13 138 0.614 - 0/998 2435/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000293 97 2 13 95 0.617 - 0/998 2436/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000293 83 1 10 82 0.613 - 0/998 2437/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000294 87 5 56 78 0.602 - 0/998 2438/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000294 118 1 10 117 0.602 - 0/998 2439/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000295 71 5 65 63 0.624 - 0/998 2440/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000295 58 2 12 56 0.592 - 0/998 2441/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000295 94 0 8 94 0.615 - 0/998 2442/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000295 53 2 20 51 0.622 - 0/998 2443/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000295 74 0 12 74 0.598 - 0/998 2444/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000296 69 6 94 61 0.619 - 0/998 2445/3375 67 66.5 142 142 152 544 1.11e+03 0.00822 0.000297 70 3 86 63 0.606 - 0/998 2446/3375 67 66.4 142 142 152 544 1.11e+03 0.00822 0.000297 56 2 51 52 0.603 - 0/998 2447/3375 67 66.4 142 142 152 544 1.11e+03 0.00822 0.000297 42 0 13 42 0.607 - 0/998 2448/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.000298 97 7 117 81 0.605 - 0/998 2449/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.000298 107 0 28 106 0.597 - 0/998 2450/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.000298 82 1 13 80 0.616 - 0/998 2451/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.0003 77 7 32 68 0.619 - 0/998 2452/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.000301 73 5 166 65 0.607 - 0/998 2453/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.000301 80 1 152 75 0.602 - 0/998 2454/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.000301 100 1 31 98 0.609 - 0/998 2455/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.000301 95 0 26 92 0.607 - 0/998 2456/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.000301 55 0 30 54 0.601 - 0/998 2457/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.000302 66 5 92 52 0.606 - 0/998 2458/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.000302 67 4 62 63 0.594 - 0/998 2459/3375 67 66.4 142 142 152 543 1.11e+03 0.0081 0.000302 50 0 39 50 0.615 - 0/998 2460/3375 66.9 66.4 142 142 151 543 1.11e+03 0.0081 0.000302 63 0 64 62 0.59 - 0/998 2461/3375 67 66.4 142 142 152 543 1.11e+03 0.0081 0.000303 90 3 57 86 0.624 - 0/998 2462/3375 67 66.4 142 142 152 544 1.11e+03 0.0081 0.000302 115 0 28 114 0.608 - 0/998 2463/3375 67 66.4 142 142 152 543 1.11e+03 0.0081 0.000303 78 1 29 77 0.599 - 0/998 2464/3375 67 66.4 142 142 151 543 1.11e+03 0.0081 0.000303 77 2 15 74 0.592 - 0/998 2465/3375 66.9 66.4 142 142 151 543 1.11e+03 0.0081 0.000303 54 0 31 54 0.611 - 0/998 2466/3375 67 66.4 142 142 151 543 1.11e+03 0.0081 0.000303 98 2 21 96 0.618 - 0/998 2467/3375 66.9 66.4 142 142 151 543 1.11e+03 0.0081 0.000304 67 4 79 62 0.614 - 0/998 2468/3375 66.9 66.4 142 142 151 543 1.11e+03 0.0081 0.000304 47 1 24 46 0.608 - 0/998 2469/3375 66.9 66.4 142 142 151 543 1.11e+03 0.0081 0.000304 58 0 143 54 0.609 - 0/998 2470/3375 66.9 66.4 142 142 151 543 1.11e+03 0.0081 0.000304 69 0 63 66 0.609 - 0/998 2471/3375 66.9 66.3 142 142 151 543 1.11e+03 0.0081 0.000303 79 0 56 79 0.602 - 0/998 2472/3375 66.9 66.3 142 142 151 543 1.11e+03 0.0081 0.000303 77 0 22 77 0.603 - 0/998 2473/3375 66.9 66.3 142 142 151 543 1.11e+03 0.0081 0.000304 57 2 36 54 0.601 - 0/998 2474/3375 66.9 66.3 142 142 151 543 1.11e+03 0.00809 0.000304 116 1 37 115 0.61 - 0/998 2475/3375 66.9 66.3 142 142 151 543 1.11e+03 0.00809 0.000305 61 4 70 56 0.604 - 0/998 2476/3375 66.9 66.3 142 142 151 543 1.11e+03 0.00809 0.000304 82 0 44 82 0.615 - 0/998 2477/3375 66.9 66.3 142 142 151 543 1.11e+03 0.0081 0.000307 72 3 115 63 0.62 - 0/998 2478/3375 66.9 66.3 142 142 151 543 1.11e+03 0.0081 0.000307 70 1 57 65 0.612 - 0/998 2479/3375 66.9 66.3 142 142 151 543 1.11e+03 0.0081 0.000307 102 1 23 97 0.603 - 0/998 2480/3375 66.9 66.3 142 142 151 543 1.11e+03 0.0081 0.000307 111 0 46 110 0.607 - 0/998 2481/3375 66.9 66.4 142 142 151 543 1.11e+03 0.0081 0.000307 106 0 41 106 0.617 - 0/998 2482/3375 66.9 66.4 142 142 151 543 1.11e+03 0.0081 0.000308 105 5 94 94 0.612 - 0/998 2483/3375 66.9 66.3 142 142 151 543 1.11e+03 0.0081 0.000308 46 1 86 44 0.603 - 0/998 2484/3375 66.9 66.3 142 142 151 543 1.11e+03 0.0081 0.000308 58 0 45 58 0.602 - 0/998 2485/3375 66.9 66.3 142 141 151 543 1.11e+03 0.0081 0.000308 86 1 48 83 0.593 - 0/998 2486/3375 66.9 66.3 142 141 151 543 1.11e+03 0.00809 0.000308 58 1 87 55 0.604 - 0/998 2487/3375 66.9 66.3 142 141 151 543 1.11e+03 0.00809 0.000308 43 1 210 41 0.62 - 0/998 2488/3375 66.9 66.3 142 141 151 543 1.11e+03 0.00809 0.000309 97 5 136 87 0.637 - 0/998 2489/3375 66.9 66.3 142 141 151 543 1.11e+03 0.00809 0.000309 112 0 128 107 0.615 - 0/998 2490/3375 66.9 66.3 141 141 151 543 1.11e+03 0.00808 0.000309 50 0 228 45 0.621 - 0/998 2491/3375 66.9 66.3 142 141 151 543 1.11e+03 0.00808 0.000309 157 3 48 148 0.62 - 0/998 2492/3375 66.9 66.3 142 141 151 543 1.11e+03 0.00808 0.000309 123 0 46 123 0.62 - 0/998 2493/3375 66.9 66.3 142 141 151 543 1.11e+03 0.00808 0.000309 93 4 65 85 0.604 - 0/998 2494/3375 66.9 66.3 142 141 151 543 1.11e+03 0.00808 0.000309 61 0 74 60 0.619 - 0/998 2495/3375 66.9 66.3 142 141 151 543 1.11e+03 0.00808 0.00031 94 1 42 91 0.624 - 0/998 2496/3375 66.9 66.3 141 141 151 543 1.11e+03 0.00808 0.00031 65 5 89 54 0.603 - 0/998 2497/3375 66.9 66.3 141 141 151 543 1.11e+03 0.00808 0.000311 51 1 99 49 0.615 - 0/998 2498/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.00031 74 0 24 72 0.603 - 0/998 2499/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000312 59 3 68 52 0.602 - 0/998 2500/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000312 62 1 104 60 0.6 - 0/998 2501/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000312 111 0 23 110 0.608 - 0/998 2502/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000312 54 1 11 53 0.602 - 0/998 2503/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000312 70 0 33 69 0.602 - 0/998 2504/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000312 108 1 32 107 0.625 - 0/998 2505/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000313 115 4 86 107 0.595 - 0/998 2506/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000313 83 1 31 80 0.604 - 0/998 2507/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000314 142 6 61 125 0.613 - 0/998 2508/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000313 65 0 28 64 0.603 - 0/998 2509/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000314 60 1 31 59 0.587 - 0/998 2510/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000314 66 0 91 65 0.608 - 0/998 2511/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000315 101 5 62 89 0.611 - 0/998 2512/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00808 0.000315 102 1 62 96 0.62 - 0/998 2513/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000319 124 4 119 107 0.631 - 0/998 2514/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.00032 102 3 54 95 0.628 - 0/998 2515/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.00032 81 4 61 76 0.598 - 0/998 2516/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000322 77 8 159 64 0.625 - 0/998 2517/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000322 99 0 46 93 0.615 - 0/998 2518/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000322 85 1 52 83 0.609 - 0/998 2519/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000322 63 2 42 60 0.616 - 0/998 2520/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000322 81 0 50 78 0.601 - 0/998 2521/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000323 80 7 207 63 0.614 - 0/998 2522/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000324 83 3 91 79 0.612 - 0/998 2523/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000324 59 4 65 53 0.596 - 0/998 2524/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000325 102 3 28 96 0.621 - 0/998 2525/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000326 79 4 161 71 0.618 - 0/998 2526/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000326 89 0 63 88 0.609 - 0/998 2527/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000326 92 1 24 89 0.624 - 0/998 2528/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00831 0.000326 91 1 55 89 0.617 - 0/998 2529/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000326 54 1 5 53 0.607 - 0/998 2530/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00831 0.000326 75 0 117 67 0.612 - 0/998 2531/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00831 0.000326 89 1 71 86 0.608 - 0/998 2532/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00831 0.000327 148 4 85 139 0.616 - 0/998 2533/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00831 0.000328 78 4 139 68 0.603 - 0/998 2534/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00831 0.000328 94 0 23 92 0.597 - 0/998 2535/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00831 0.000328 119 2 49 116 0.608 - 0/998 2536/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00831 0.000329 79 6 52 70 0.615 - 0/998 2537/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000333 96 5 53 83 0.616 - 0/998 2538/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000333 83 0 44 81 0.617 - 0/998 2539/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000333 90 0 92 88 0.615 - 0/998 2540/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000332 79 0 70 78 0.618 - 0/998 2541/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000333 64 2 55 61 0.615 - 0/998 2542/3375 66.9 66.3 141 141 151 542 1.11e+03 0.00832 0.000333 80 1 13 77 0.605 - 0/998 2543/3375 66.8 66.3 141 141 151 542 1.11e+03 0.00832 0.000333 58 0 6 57 0.588 - 0/998 2544/3375 66.8 66.3 141 141 151 542 1.11e+03 0.00832 0.000333 82 1 25 78 0.62 - 0/998 2545/3375 66.8 66.3 141 141 151 542 1.11e+03 0.00832 0.000333 65 2 45 60 0.623 - 0/998 2546/3375 66.8 66.3 141 141 151 542 1.11e+03 0.00832 0.000334 90 6 126 74 0.618 - 0/998 2547/3375 66.8 66.3 141 141 151 542 1.11e+03 0.00832 0.000335 55 5 108 47 0.615 - 0/998 2548/3375 66.8 66.3 141 141 151 542 1.11e+03 0.00832 0.000335 57 1 15 55 0.595 - 0/998 2549/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000335 57 1 65 55 0.612 - 0/998 2550/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00831 0.000335 102 1 64 101 0.618 - 0/998 2551/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00831 0.000335 93 2 49 85 0.606 - 0/998 2552/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00831 0.000336 87 4 74 76 0.611 - 0/998 2553/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00831 0.000337 85 6 119 70 0.61 - 0/998 2554/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000338 78 1 60 76 0.626 - 0/998 2555/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000339 78 3 42 74 0.605 - 0/998 2556/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.00034 64 9 86 53 0.6 - 0/998 2557/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000341 56 2 15 53 0.614 - 0/998 2558/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000341 93 0 47 87 0.604 - 0/998 2559/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000341 108 1 51 104 0.618 - 0/998 2560/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000342 65 3 138 56 0.605 - 0/998 2561/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000342 123 1 66 118 0.614 - 0/998 2562/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000344 92 5 58 82 0.605 - 0/998 2563/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000344 93 1 31 90 0.602 - 0/998 2564/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000346 103 10 124 87 0.616 - 0/998 2565/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000346 82 0 37 82 0.621 - 0/998 2566/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000346 63 1 7 62 0.61 - 0/998 2567/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000345 112 0 11 111 0.629 - 0/998 2568/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000345 74 0 33 73 0.609 - 0/998 2569/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00832 0.000346 71 3 10 68 0.602 - 0/998 2570/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000346 62 1 25 58 0.603 - 0/998 2571/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000346 97 3 30 94 0.597 - 0/998 2572/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000347 52 2 11 49 0.592 - 0/998 2573/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000346 63 0 24 62 0.588 - 0/998 2574/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000346 138 0 9 138 0.611 - 0/998 2575/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000346 83 0 31 82 0.614 - 0/998 2576/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000346 92 2 16 89 0.627 - 0/998 2577/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000346 85 0 15 85 0.615 - 0/998 2578/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000346 80 0 47 79 0.632 - 0/998 2579/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00832 0.000346 105 0 8 105 0.614 - 0/998 2580/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00831 0.000346 83 0 14 81 0.611 - 0/998 2581/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00831 0.000346 103 0 6 103 0.61 - 0/998 2582/3375 66.8 66.3 141 141 150 541 1.11e+03 0.00831 0.000346 85 0 16 83 0.617 - 0/998 2583/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00829 0.000346 70 1 14 68 0.609 - 0/998 2584/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00828 0.000346 67 0 24 67 0.598 - 0/998 2585/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00827 0.000346 46 0 69 44 0.601 - 0/998 2586/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00827 0.000346 57 1 62 55 0.61 - 0/998 2587/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00827 0.000346 92 0 17 91 0.604 - 0/998 2588/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00827 0.000346 51 0 12 51 0.606 - 0/998 2589/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00827 0.000345 66 0 37 64 0.605 - 0/998 2590/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00826 0.000345 81 0 45 77 0.613 - 0/998 2591/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00826 0.000346 116 3 18 112 0.632 - 0/998 2592/3375 66.8 66.2 141 141 150 541 1.11e+03 0.00826 0.000346 45 2 31 42 0.608 - 0/998 2593/3375 66.7 66.2 141 141 150 541 1.11e+03 0.00826 0.000346 72 0 19 70 0.633 - 0/998 2594/3375 66.7 66.2 141 141 150 541 1.11e+03 0.00826 0.000346 64 1 51 62 0.61 - 0/998 2595/3375 66.7 66.2 141 141 150 541 1.1e+03 0.00826 0.000346 56 0 35 56 0.614 - 0/998 2596/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00825 0.000346 47 3 48 43 0.611 - 0/998 2597/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00826 0.000348 108 4 52 101 0.63 - 0/998 2598/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00826 0.000348 110 0 8 110 0.612 - 0/998 2599/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00826 0.000348 106 1 38 105 0.612 - 0/998 2600/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00826 0.000349 80 6 44 72 0.608 - 0/998 2601/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00826 0.00035 58 9 318 48 0.634 - 0/998 2602/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00826 0.00035 96 0 33 93 0.63 - 0/998 2603/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00826 0.00035 51 0 28 51 0.615 - 0/998 2604/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00826 0.00035 64 0 60 63 0.613 - 0/998 2605/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00826 0.000351 92 3 40 87 0.61 - 0/998 2606/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00826 0.000351 63 0 85 53 0.625 - 0/998 2607/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00827 0.000356 105 9 84 85 0.628 - 0/998 2608/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00827 0.000357 50 1 71 48 0.611 - 0/998 2609/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00827 0.000357 130 3 77 126 0.601 - 0/998 2610/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00827 0.000357 67 1 30 62 0.62 - 0/998 2611/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00827 0.000357 115 0 6 114 0.601 - 0/998 2612/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00826 0.000357 87 0 15 85 0.604 - 0/998 2613/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00826 0.000357 79 2 12 77 0.603 - 0/998 2614/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00826 0.000357 46 0 7 45 0.619 - 0/998 2615/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00815 0.000359 94 3 28 87 0.63 - 0/998 2616/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00815 0.000359 71 1 30 66 0.594 - 0/998 2617/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00815 0.000358 77 0 15 77 0.612 - 0/998 2618/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00815 0.000358 134 0 21 133 0.622 - 0/998 2619/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00815 0.000359 120 4 40 113 0.626 - 0/998 2620/3375 66.7 66.2 141 141 150 540 1.1e+03 0.00814 0.00036 56 4 49 51 0.603 - 0/998 2621/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00814 0.000359 64 0 7 63 0.625 - 0/998 2622/3375 66.7 66.1 141 141 150 540 1.1e+03 0.00815 0.000362 77 3 54 71 0.619 - 0/998 2623/3375 66.7 66.1 141 140 150 540 1.1e+03 0.00815 0.000362 74 0 18 73 0.613 - 0/998 2624/3375 66.7 66.1 141 140 150 540 1.1e+03 0.00815 0.000362 55 1 42 53 0.611 - 0/998 2625/3375 66.7 66.1 141 140 150 540 1.1e+03 0.00815 0.000362 47 0 14 46 0.59 - 0/998 2626/3375 66.7 66.1 141 140 150 540 1.1e+03 0.00815 0.000363 121 3 19 117 0.598 - 0/998 2627/3375 66.7 66.1 141 140 150 540 1.1e+03 0.00815 0.000363 74 3 29 69 0.612 - 0/998 2628/3375 66.7 66.1 141 140 150 540 1.1e+03 0.00814 0.000364 83 1 42 76 0.6 - 0/998 2629/3375 66.7 66.1 141 140 150 540 1.1e+03 0.00802 0.000364 78 2 27 75 0.585 - 0/998 2630/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000364 42 0 10 41 0.598 - 0/998 2631/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000364 62 0 41 60 0.61 - 0/998 2632/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000365 141 9 59 128 0.605 - 0/998 2633/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000365 90 0 24 87 0.605 - 0/998 2634/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000365 75 1 22 71 0.61 - 0/998 2635/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000365 117 0 30 117 0.609 - 0/998 2636/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000365 78 3 48 74 0.608 - 0/998 2637/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000365 71 1 21 69 0.608 - 0/998 2638/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000367 73 2 13 69 0.608 - 0/998 2639/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000367 45 0 7 45 0.614 - 0/998 2640/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000367 69 0 12 68 0.598 - 0/998 2641/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000366 70 0 29 70 0.615 - 0/998 2642/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000366 84 0 9 84 0.632 - 0/998 2643/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000366 145 0 4 143 0.636 - 0/998 2644/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000366 95 0 8 94 0.606 - 0/998 2645/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000366 126 1 0 125 0.616 - 0/998 2646/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000366 70 1 41 67 0.612 - 0/998 2647/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000366 63 0 20 62 0.617 - 0/998 2648/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000366 82 2 31 78 0.615 - 0/998 2649/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00801 0.000366 60 0 51 60 0.609 - 0/998 2650/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00801 0.000366 73 0 28 72 0.623 - 0/998 2651/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00801 0.000366 102 2 37 98 0.596 - 0/998 2652/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00801 0.000367 85 1 22 82 0.631 - 0/998 2653/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000368 55 6 51 49 0.603 - 0/998 2654/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00802 0.000368 92 1 15 91 0.608 - 0/998 2655/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00801 0.000368 143 0 28 135 0.618 - 0/998 2656/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00801 0.000368 148 1 52 144 0.623 - 0/998 2657/3375 66.7 66.2 140 140 150 540 1.1e+03 0.00801 0.000368 112 1 13 109 0.604 - 0/998 2658/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00802 0.000371 86 6 70 74 0.604 - 0/998 2659/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00801 0.000371 47 0 86 47 0.59 - 0/998 2660/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00801 0.000372 123 6 18 111 0.615 - 0/998 2661/3375 66.7 66.1 140 140 150 540 1.1e+03 0.00801 0.000372 78 4 81 72 0.6 - 0/998 2662/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00801 0.000373 78 2 44 73 0.629 - 0/998 2663/3375 66.7 66.1 140 140 149 540 1.1e+03 0.008 0.000373 73 1 25 71 0.614 - 0/998 2664/3375 66.7 66.1 140 140 149 540 1.1e+03 0.008 0.000374 43 1 49 41 0.59 - 0/998 2665/3375 66.7 66.1 140 140 149 540 1.1e+03 0.008 0.000375 56 5 60 48 0.601 - 0/998 2666/3375 66.7 66.1 140 140 149 540 1.1e+03 0.008 0.000375 84 1 43 81 0.637 - 0/998 2667/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00799 0.000375 61 1 35 60 0.617 - 0/998 2668/3375 66.7 66.1 140 140 149 540 1.1e+03 0.008 0.000376 119 1 15 116 0.627 - 0/998 2669/3375 66.7 66.1 140 140 149 540 1.1e+03 0.008 0.000377 67 7 76 59 0.642 - 0/998 2670/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00799 0.000377 121 0 98 115 0.649 - 0/998 2671/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00799 0.000377 95 4 37 90 0.624 - 0/998 2672/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00799 0.000377 88 0 86 85 0.621 - 0/998 2673/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00799 0.000377 61 1 77 57 0.608 - 0/998 2674/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00798 0.000378 66 4 206 49 0.618 - 0/998 2675/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00798 0.000378 129 1 51 127 0.626 - 0/998 2676/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00798 0.000378 65 0 9 65 0.612 - 0/998 2677/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00798 0.000378 76 0 41 75 0.605 - 0/998 2678/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00797 0.000378 79 1 79 74 0.616 - 0/998 2679/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00797 0.000378 49 1 63 46 0.606 - 0/998 2680/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00797 0.000378 60 1 80 57 0.616 - 0/998 2681/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00797 0.000378 72 0 56 71 0.608 - 0/998 2682/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00785 0.000378 91 2 116 83 0.619 - 0/998 2683/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00785 0.000379 60 4 95 53 0.607 - 0/998 2684/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00785 0.000379 94 2 119 91 0.605 - 0/998 2685/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00785 0.000379 124 1 53 121 0.616 - 0/998 2686/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00785 0.000379 76 2 61 72 0.619 - 0/998 2687/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00785 0.00038 105 7 136 93 0.609 - 0/998 2688/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00784 0.00038 44 0 100 41 0.618 - 0/998 2689/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00784 0.00038 73 0 160 71 0.612 - 0/998 2690/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00784 0.000381 126 4 91 115 0.607 - 0/998 2691/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00784 0.000381 107 0 56 101 0.614 - 0/998 2692/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00784 0.000382 105 4 30 100 0.602 - 0/998 2693/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00784 0.000382 67 0 39 64 0.621 - 0/998 2694/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00784 0.000384 91 10 106 77 0.609 - 0/998 2695/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00784 0.000384 86 0 32 84 0.608 - 0/998 2696/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00784 0.000385 75 7 138 62 0.609 - 0/998 2697/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00784 0.000385 82 0 28 81 0.611 - 0/998 2698/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00784 0.000385 105 5 80 94 0.608 - 0/998 2699/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00784 0.000385 139 1 28 135 0.615 - 0/998 2700/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00784 0.000385 92 0 60 87 0.61 - 0/998 2701/3375 66.7 66.1 140 140 149 540 1.1e+03 0.00784 0.000386 124 3 24 118 0.602 - 0/998 2702/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00781 0.000389 83 4 35 79 0.606 - 0/998 2703/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00781 0.000389 63 1 103 59 0.603 - 0/998 2704/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00781 0.00039 63 1 14 62 0.607 - 0/998 2705/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00781 0.00039 84 1 26 79 0.595 - 0/998 2706/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00781 0.000389 70 0 63 69 0.599 - 0/998 2707/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00781 0.000389 142 1 10 141 0.601 - 0/998 2708/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00781 0.000389 64 1 36 62 0.598 - 0/998 2709/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00781 0.000389 86 0 16 86 0.607 - 0/998 2710/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00781 0.000389 74 1 70 70 0.6 - 0/998 2711/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00781 0.00039 47 2 45 43 0.614 - 0/998 2712/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00781 0.00039 89 1 19 87 0.614 - 0/998 2713/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00781 0.00039 76 2 69 70 0.605 - 0/998 2714/3375 66.6 66.1 140 140 149 539 1.1e+03 0.0078 0.00039 54 0 32 52 0.6 - 0/998 2715/3375 66.6 66.1 140 140 149 539 1.1e+03 0.0078 0.00039 118 0 30 112 0.601 - 0/998 2716/3375 66.7 66.1 140 140 149 539 1.1e+03 0.0078 0.00039 104 0 45 103 0.597 - 0/998 2717/3375 66.7 66.1 140 140 149 539 1.1e+03 0.0078 0.00039 102 3 78 93 0.602 - 0/998 2718/3375 66.6 66.1 140 140 149 539 1.1e+03 0.0078 0.00039 71 0 28 70 0.602 - 0/998 2719/3375 66.6 66.1 140 140 149 539 1.1e+03 0.0078 0.00039 80 4 36 74 0.609 - 0/998 2720/3375 66.6 66.1 140 140 149 539 1.1e+03 0.0078 0.00039 94 0 15 94 0.601 - 0/998 2721/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00779 0.000391 84 6 46 75 0.609 - 0/998 2722/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00779 0.000391 67 0 21 63 0.607 - 0/998 2723/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00779 0.000392 80 5 78 74 0.621 - 0/998 2724/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00779 0.000393 70 4 45 63 0.615 - 0/998 2725/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00779 0.000392 83 0 56 81 0.601 - 0/998 2726/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00779 0.000394 81 4 74 74 0.614 - 0/998 2727/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00779 0.000394 125 2 48 122 0.617 - 0/998 2728/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00547 0.000395 114 6 69 105 0.631 - 0/998 2729/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00539 0.000395 78 2 93 74 0.607 - 0/998 2730/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00539 0.000396 66 6 64 58 0.608 - 0/998 2731/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000397 150 6 56 137 0.612 - 0/998 2732/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000397 151 2 24 146 0.611 - 0/998 2733/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000397 61 0 58 58 0.62 - 0/998 2734/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000398 96 5 28 87 0.615 - 0/998 2735/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000398 49 2 30 43 0.622 - 0/998 2736/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000399 86 2 16 84 0.6 - 0/998 2737/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000399 109 1 31 108 0.599 - 0/998 2738/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.0004 141 7 89 123 0.613 - 0/998 2739/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000402 114 13 171 92 0.598 - 0/998 2740/3375 66.7 66.1 140 140 149 539 1.1e+03 0.0054 0.000403 80 8 41 67 0.6 - 0/998 2741/3375 66.7 66.1 140 140 149 539 1.1e+03 0.0054 0.000403 52 1 43 46 0.609 - 0/998 2742/3375 66.7 66.1 140 140 149 539 1.1e+03 0.0054 0.000403 76 1 20 72 0.611 - 0/998 2743/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000404 122 3 56 116 0.61 - 0/998 2744/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000404 74 4 39 68 0.606 - 0/998 2745/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000404 92 1 25 91 0.613 - 0/998 2746/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000405 86 4 59 80 0.616 - 0/998 2747/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000405 37 1 50 35 0.609 - 0/998 2748/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00539 0.000405 50 0 43 45 0.6 - 0/998 2749/3375 66.7 66.1 140 140 149 539 1.1e+03 0.00538 0.000407 98 9 138 86 0.607 - 0/998 2750/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00538 0.000407 76 1 51 72 0.612 - 0/998 2751/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00538 0.000407 54 3 41 50 0.611 - 0/998 2752/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00539 0.000409 89 3 85 84 0.606 - 0/998 2753/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00538 0.000409 44 0 78 42 0.594 - 0/998 2754/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00538 0.00041 57 2 167 50 0.605 - 0/998 2755/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00538 0.00041 66 1 25 64 0.603 - 0/998 2756/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00538 0.00041 79 1 67 71 0.598 - 0/998 2757/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00538 0.00041 94 1 27 92 0.614 - 0/998 2758/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00538 0.000409 74 0 48 73 0.599 - 0/998 2759/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00538 0.000411 72 7 179 61 0.626 - 0/998 2760/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00538 0.000411 120 2 36 117 0.63 - 0/998 2761/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00537 0.000411 98 0 35 95 0.602 - 0/998 2762/3375 66.6 66.1 140 140 149 539 1.1e+03 0.00537 0.000411 44 2 234 36 0.607 - 0/998 2763/3375 66.6 66.1 140 140 149 538 1.1e+03 0.00537 0.000411 54 2 65 50 0.588 - 0/998 2764/3375 66.6 66.1 140 140 149 538 1.1e+03 0.00537 0.000411 102 2 51 98 0.614 - 0/998 2765/3375 66.6 66.1 140 140 149 538 1.1e+03 0.00537 0.000412 82 4 94 77 0.61 - 0/998 2766/3375 66.6 66.1 140 140 149 538 1.1e+03 0.00537 0.000412 77 1 17 75 0.604 - 0/998 2767/3375 66.6 66.1 140 140 149 538 1.1e+03 0.00537 0.000412 77 0 25 76 0.604 - 0/998 2768/3375 66.6 66.1 140 140 149 538 1.1e+03 0.00537 0.000412 70 3 43 67 0.589 - 0/998 2769/3375 66.6 66.1 140 140 149 538 1.1e+03 0.00537 0.000413 95 3 57 88 0.589 - 0/998 2770/3375 66.6 66.1 140 140 149 538 1.1e+03 0.00537 0.000413 52 0 13 52 0.608 - 0/998 2771/3375 66.6 66.1 140 140 149 538 1.1e+03 0.00537 0.000413 61 1 45 60 0.604 - 0/998 2772/3375 66.6 66.1 140 140 149 538 1.1e+03 0.00537 0.000413 50 2 74 46 0.603 - 0/998 2773/3375 66.5 66 140 140 148 538 1.1e+03 0.00537 0.000413 55 0 31 54 0.608 - 0/998 2774/3375 66.5 66 140 140 148 538 1.1e+03 0.00537 0.000413 93 1 60 90 0.609 - 0/998 2775/3375 66.5 66 140 140 148 538 1.1e+03 0.00529 0.000413 80 1 209 64 0.623 - 0/998 2776/3375 66.5 66 140 140 148 538 1.1e+03 0.00529 0.000414 78 5 128 69 0.618 - 0/998 2777/3375 66.5 66 140 140 148 538 1.1e+03 0.00529 0.000414 44 0 67 42 0.612 - 0/998 2778/3375 66.5 66 140 139 148 538 1.1e+03 0.00529 0.000417 78 8 106 66 0.606 - 0/998 2779/3375 66.5 66 140 139 148 538 1.1e+03 0.00529 0.000417 85 0 27 83 0.633 - 0/998 2780/3375 66.5 66 140 139 148 538 1.1e+03 0.00529 0.000418 80 7 150 69 0.605 - 0/998 2781/3375 66.5 66 140 139 148 538 1.1e+03 0.00529 0.00042 115 11 298 97 0.627 - 0/998 2782/3375 66.5 66 140 139 148 538 1.1e+03 0.00529 0.00042 98 3 79 94 0.614 - 0/998 2783/3375 66.5 66 140 139 148 538 1.1e+03 0.00529 0.00042 93 2 47 89 0.611 - 0/998 2784/3375 66.6 66 140 140 148 538 1.1e+03 0.0053 0.000421 212 7 52 197 0.605 - 0/998 2785/3375 66.6 66 140 139 148 538 1.1e+03 0.00529 0.000421 60 0 70 57 0.605 - 0/998 2786/3375 66.6 66 140 139 148 538 1.1e+03 0.00529 0.000421 95 1 64 89 0.615 - 0/998 2787/3375 66.6 66.1 140 140 148 538 1.1e+03 0.00529 0.000421 138 3 49 132 0.606 - 0/998 2788/3375 66.6 66 140 139 148 538 1.1e+03 0.00529 0.000422 45 3 109 42 0.602 - 0/998 2789/3375 66.6 66 140 139 148 538 1.1e+03 0.00529 0.000422 114 3 63 106 0.62 - 0/998 2790/3375 66.6 66 140 139 148 538 1.1e+03 0.00529 0.000422 76 1 36 74 0.604 - 0/998 2791/3375 66.6 66 140 139 148 538 1.1e+03 0.00529 0.000423 87 3 46 83 0.592 - 0/998 2792/3375 66.5 66 140 139 148 538 1.1e+03 0.00529 0.000422 73 1 20 69 0.607 - 0/998 2793/3375 66.5 66 140 139 148 538 1.1e+03 0.00529 0.000423 57 3 20 54 0.614 - 0/998 2794/3375 66.5 66 140 139 148 538 1.1e+03 0.00529 0.000423 67 1 37 64 0.607 - 0/998 2795/3375 66.5 66 140 139 148 538 1.1e+03 0.00529 0.000424 83 4 69 79 0.608 - 0/998 2796/3375 66.5 66 140 139 148 538 1.1e+03 0.00529 0.000424 45 0 50 45 0.594 - 0/998 2797/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 82 0 18 81 0.609 - 0/998 2798/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000424 70 1 10 69 0.59 - 0/998 2799/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 78 1 64 75 0.605 - 0/998 2800/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 119 0 17 118 0.611 - 0/998 2801/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 97 1 37 96 0.584 - 0/998 2802/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000424 83 1 73 79 0.616 - 0/998 2803/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 50 0 15 50 0.613 - 0/998 2804/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000424 48 1 69 42 0.6 - 0/998 2805/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 99 0 44 99 0.604 - 0/998 2806/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 99 0 6 98 0.597 - 0/998 2807/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 117 0 24 116 0.608 - 0/998 2808/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 53 0 17 53 0.615 - 0/998 2809/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 63 0 29 61 0.609 - 0/998 2810/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 67 0 38 67 0.601 - 0/998 2811/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 65 2 27 62 0.619 - 0/998 2812/3375 66.5 66 139 139 148 537 1.1e+03 0.00529 0.000423 54 1 11 53 0.591 - 0/998 2813/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 104 1 19 103 0.612 - 0/998 2814/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 109 2 17 106 0.614 - 0/998 2815/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 92 0 7 92 0.613 - 0/998 2816/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 76 1 30 75 0.602 - 0/998 2817/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 106 1 12 101 0.612 - 0/998 2818/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 59 0 66 59 0.602 - 0/998 2819/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 83 0 2 83 0.605 - 0/998 2820/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000423 58 1 50 56 0.59 - 0/998 2821/3375 66.5 66 139 139 148 538 1.1e+03 0.00528 0.000424 112 3 47 107 0.598 - 0/998 2822/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000427 109 4 118 98 0.623 - 0/998 2823/3375 66.5 66 139 139 148 538 1.1e+03 0.0053 0.000431 96 8 114 85 0.622 - 0/998 2824/3375 66.5 66 139 139 148 538 1.1e+03 0.0053 0.000431 112 1 84 107 0.606 - 0/998 2825/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000431 102 2 65 99 0.607 - 0/998 2826/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000431 150 1 45 147 0.616 - 0/998 2827/3375 66.5 66 139 139 148 538 1.1e+03 0.0053 0.000432 92 7 47 82 0.596 - 0/998 2828/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000432 96 0 28 95 0.628 - 0/998 2829/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000432 64 2 199 57 0.606 - 0/998 2830/3375 66.5 66 139 139 148 538 1.1e+03 0.00529 0.000432 56 0 90 53 0.599 - 0/998 2831/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000432 80 0 32 77 0.607 - 0/998 2832/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000432 73 2 39 71 0.608 - 0/998 2833/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000433 95 1 58 91 0.607 - 0/998 2834/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000434 59 5 95 53 0.603 - 0/998 2835/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000434 75 0 102 75 0.6 - 0/998 2836/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000436 84 2 61 78 0.618 - 0/998 2837/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000436 57 0 32 57 0.615 - 0/998 2838/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000436 115 2 19 113 0.622 - 0/998 2839/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000436 73 0 32 71 0.604 - 0/998 2840/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000435 104 0 43 100 0.615 - 0/998 2841/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000435 59 0 110 58 0.609 - 0/998 2842/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000436 98 2 54 94 0.619 - 0/998 2843/3375 66.5 66 139 139 148 538 1.1e+03 0.00522 0.000436 80 5 90 63 0.598 - 0/998 2844/3375 66.5 66 139 139 148 537 1.1e+03 0.00522 0.000437 52 3 108 41 0.61 - 0/998 2845/3375 66.5 66 139 139 148 537 1.1e+03 0.00522 0.000438 73 5 53 66 0.607 - 0/998 2846/3375 66.5 66 139 139 148 537 1.1e+03 0.00522 0.000439 99 2 19 94 0.625 - 0/998 2847/3375 66.5 66 139 139 148 537 1.1e+03 0.00522 0.000438 77 0 25 76 0.598 - 0/998 2848/3375 66.5 66 139 139 148 537 1.1e+03 0.00522 0.000439 77 2 73 73 0.615 - 0/998 2849/3375 66.5 66 139 139 148 537 1.1e+03 0.00522 0.000439 59 0 28 58 0.611 - 0/998 2850/3375 66.5 66 139 139 148 537 1.1e+03 0.00522 0.000441 113 9 62 98 0.607 - 0/998 2851/3375 66.5 66 139 139 148 537 1.1e+03 0.00522 0.000441 72 1 30 71 0.614 - 0/998 2852/3375 66.5 66 139 139 148 537 1.1e+03 0.00522 0.000441 109 1 33 108 0.607 - 0/998 2853/3375 66.5 66 139 139 148 537 1.1e+03 0.00522 0.000441 66 1 34 63 0.609 - 0/998 2854/3375 66.5 66 139 139 148 537 1.1e+03 0.00522 0.000441 55 3 120 49 0.596 - 0/998 2855/3375 66.5 65.9 139 139 148 537 1.1e+03 0.00522 0.000442 48 2 94 40 0.609 - 0/998 2856/3375 66.5 65.9 139 139 148 537 1.1e+03 0.00522 0.000442 73 0 70 72 0.605 - 0/998 2857/3375 66.4 65.9 139 139 148 537 1.1e+03 0.00655 0.000449 57 3 116 50 0.605 - 0/998 2858/3375 66.4 65.9 139 139 148 537 1.1e+03 0.00655 0.00045 74 2 292 68 0.617 - 0/998 2859/3375 66.4 65.9 139 139 148 537 1.1e+03 0.00655 0.000451 68 7 76 61 0.598 - 0/998 2860/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00655 0.000451 34 1 132 29 0.604 - 0/998 2861/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00642 0.000451 73 2 137 68 0.61 - 0/998 2862/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00642 0.000451 111 3 79 107 0.63 - 0/998 2863/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00642 0.000452 109 2 43 106 0.61 - 0/998 2864/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00642 0.000452 56 4 72 48 0.601 - 0/998 2865/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00642 0.000452 69 1 65 64 0.61 - 0/998 2866/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00642 0.000452 51 0 24 51 0.607 - 0/998 2867/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00642 0.000453 42 3 79 37 0.613 - 0/998 2868/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00642 0.000453 81 0 29 81 0.612 - 0/998 2869/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00642 0.000453 73 2 36 69 0.589 - 0/998 2870/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00531 0.000454 95 5 40 86 0.606 - 0/998 2871/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00531 0.000454 97 3 35 91 0.625 - 0/998 2872/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00531 0.000454 123 2 67 115 0.616 - 0/998 2873/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00531 0.000454 92 3 38 84 0.608 - 0/998 2874/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00531 0.000455 88 5 84 77 0.606 - 0/998 2875/3375 66.4 65.9 139 139 148 537 1.09e+03 0.00531 0.000457 82 10 232 67 0.621 - 0/998 2876/3375 66.4 65.9 139 139 148 536 1.09e+03 0.00531 0.000456 46 0 36 45 0.599 - 0/998 2877/3375 66.4 65.9 139 139 148 536 1.09e+03 0.00531 0.000457 82 6 124 70 0.602 - 0/998 2878/3375 66.4 65.9 139 139 148 536 1.09e+03 0.00531 0.000457 54 0 30 54 0.614 - 0/998 2879/3375 66.4 65.9 139 139 148 536 1.09e+03 0.00531 0.000457 86 0 38 85 0.596 - 0/998 2880/3375 66.4 65.9 139 139 148 536 1.09e+03 0.00531 0.000457 69 1 60 67 0.611 - 0/998 2881/3375 66.4 65.9 139 139 148 536 1.09e+03 0.00531 0.000458 72 5 279 58 0.604 - 0/998 2882/3375 66.4 65.9 139 139 148 536 1.09e+03 0.00531 0.000459 118 2 42 113 0.617 - 0/998 2883/3375 66.4 65.9 139 139 148 536 1.09e+03 0.00531 0.000461 101 4 78 96 0.608 - 0/998 2884/3375 66.4 65.9 139 139 147 536 1.09e+03 0.00531 0.000462 61 6 69 55 0.607 - 0/998 2885/3375 66.4 65.9 139 139 147 536 1.09e+03 0.00531 0.000463 103 7 116 90 0.604 - 0/998 2886/3375 66.4 65.9 139 139 147 536 1.09e+03 0.00531 0.000464 90 7 188 77 0.627 - 0/998 2887/3375 66.4 65.9 139 139 147 536 1.09e+03 0.00531 0.000465 105 3 42 99 0.599 - 0/998 2888/3375 66.4 65.9 139 139 147 536 1.09e+03 0.00531 0.000465 110 2 69 103 0.609 - 0/998 2889/3375 66.4 65.9 139 139 147 536 1.09e+03 0.00531 0.000465 54 1 161 52 0.601 - 0/998 2890/3375 66.4 65.9 139 139 147 536 1.09e+03 0.00531 0.000465 81 0 36 81 0.607 - 0/998 2891/3375 66.4 65.9 139 139 147 536 1.09e+03 0.00531 0.000465 92 3 45 88 0.6 - 0/998 2892/3375 66.4 65.9 139 139 147 536 1.09e+03 0.00531 0.000465 92 1 33 91 0.602 - 0/998 2893/3375 66.4 65.8 139 139 147 536 1.09e+03 0.00531 0.000465 64 2 81 59 0.602 - 0/998 2894/3375 66.4 65.8 139 139 147 536 1.09e+03 0.00531 0.000467 82 8 141 64 0.612 - 0/998 2895/3375 66.4 65.8 139 139 147 536 1.09e+03 0.00531 0.000467 83 0 159 78 0.624 - 0/998 2896/3375 66.4 65.8 139 139 147 536 1.09e+03 0.00531 0.000467 97 0 91 93 0.603 - 0/998 2897/3375 66.4 65.8 139 139 147 536 1.09e+03 0.00531 0.000468 74 5 277 58 0.62 - 0/998 2898/3375 66.4 65.8 139 138 147 536 1.09e+03 0.00531 0.000468 82 1 214 79 0.625 - 0/998 2899/3375 66.4 65.8 139 138 147 536 1.09e+03 0.0053 0.000469 63 1 454 57 0.624 - 0/998 2900/3375 66.4 65.8 139 138 147 536 1.09e+03 0.0052 0.000469 103 1 69 100 0.612 - 0/998 2901/3375 66.4 65.8 139 138 147 536 1.09e+03 0.0052 0.000469 58 3 144 54 0.612 - 0/998 2902/3375 66.4 65.8 139 139 147 536 1.09e+03 0.0052 0.000469 77 2 44 74 0.628 - 0/998 2903/3375 66.4 65.8 139 138 147 536 1.09e+03 0.0052 0.00047 65 2 61 57 0.622 - 0/998 2904/3375 66.4 65.8 139 138 147 536 1.09e+03 0.00498 0.00047 69 1 53 65 0.604 - 0/998 2905/3375 66.3 65.8 139 138 147 536 1.09e+03 0.00498 0.000469 40 0 23 39 0.621 - 0/998 2906/3375 66.3 65.8 139 138 147 536 1.09e+03 0.00498 0.00047 80 3 13 77 0.607 - 0/998 2907/3375 66.3 65.8 139 138 147 536 1.09e+03 0.00492 0.00047 82 1 42 79 0.611 - 0/998 2908/3375 66.3 65.8 139 138 147 536 1.09e+03 0.00492 0.00047 73 0 45 72 0.617 - 0/998 2909/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00492 0.000469 77 0 7 77 0.609 - 0/998 2910/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00492 0.00047 85 2 21 83 0.605 - 0/998 2911/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00492 0.00047 64 1 16 62 0.624 - 0/998 2912/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00492 0.00047 143 1 6 140 0.631 - 0/998 2913/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00492 0.000469 81 0 12 78 0.617 - 0/998 2914/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00492 0.000469 62 0 13 61 0.62 - 0/998 2915/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00492 0.000469 114 1 25 113 0.599 - 0/998 2916/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00492 0.000469 85 2 45 80 0.629 - 0/998 2917/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00485 0.000469 49 0 24 48 0.602 - 0/998 2918/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00485 0.00047 84 2 31 82 0.618 - 0/998 2919/3375 66.3 65.8 139 138 147 535 1.09e+03 0.0042 0.00047 74 0 26 72 0.61 - 0/998 2920/3375 66.3 65.8 139 138 147 535 1.09e+03 0.0042 0.000471 65 3 65 59 0.679 - 0/998 2921/3375 66.3 65.8 139 138 147 535 1.09e+03 0.0042 0.000472 85 5 65 77 0.61 - 0/998 2922/3375 66.3 65.8 139 138 147 535 1.09e+03 0.0042 0.000472 88 1 34 82 0.621 - 0/998 2923/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00415 0.000472 75 0 19 73 0.611 - 0/998 2924/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00415 0.000474 51 3 98 48 0.608 - 0/998 2925/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00415 0.000475 54 4 61 48 0.618 - 0/998 2926/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00415 0.000475 60 2 121 55 0.623 - 0/998 2927/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00415 0.000475 91 1 47 86 0.602 - 0/998 2928/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00415 0.000475 78 1 64 68 0.602 - 0/998 2929/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00415 0.000475 117 2 53 111 0.619 - 0/998 2930/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00415 0.000475 76 1 155 73 0.614 - 0/998 2931/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00415 0.000476 49 6 144 41 0.598 - 0/998 2932/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00415 0.000477 94 4 140 78 0.622 - 0/998 2933/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00415 0.000477 123 2 32 121 0.622 - 0/998 2934/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00415 0.000477 115 3 91 108 0.609 - 0/998 2935/3375 66.3 65.8 139 138 147 535 1.09e+03 0.00415 0.000478 96 5 148 83 0.603 - 0/998 2936/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00415 0.000478 44 3 62 41 0.599 - 0/998 2937/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00414 0.000478 99 1 99 94 0.629 - 0/998 2938/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00414 0.000479 46 2 205 37 0.617 - 0/998 2939/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00414 0.00048 92 4 93 81 0.617 - 0/998 2940/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00414 0.000482 123 12 128 104 0.605 - 0/998 2941/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00414 0.000481 126 0 33 124 0.601 - 0/998 2942/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00414 0.000482 41 2 51 39 0.601 - 0/998 2943/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00414 0.000482 66 4 117 58 0.617 - 0/998 2944/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.00049 66 3 75 62 0.61 - 0/998 2945/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000491 107 4 54 101 0.614 - 0/998 2946/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000491 165 3 58 156 0.631 - 0/998 2947/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000492 79 4 40 73 0.618 - 0/998 2948/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000493 116 4 81 104 0.606 - 0/998 2949/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00451 0.000493 91 5 46 84 0.621 - 0/998 2950/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00451 0.000494 55 3 82 48 0.61 - 0/998 2951/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000496 118 6 68 108 0.633 - 0/998 2952/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000497 90 6 96 77 0.581 - 0/998 2953/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000498 62 4 95 57 0.606 - 0/998 2954/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000498 63 2 39 59 0.609 - 0/998 2955/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000498 84 1 47 82 0.607 - 0/998 2956/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000499 134 8 91 124 0.609 - 0/998 2957/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000499 52 2 88 45 0.608 - 0/998 2958/3375 66.3 65.8 138 138 147 534 1.09e+03 0.00452 0.0005 35 2 66 32 0.628 - 0/998 2959/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00452 0.0005 48 1 57 43 0.619 - 0/998 2960/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.0005 192 2 96 180 0.625 - 0/998 2961/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000501 80 8 133 63 0.606 - 0/998 2962/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000503 93 2 75 84 0.605 - 0/998 2963/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000503 99 2 85 94 0.613 - 0/998 2964/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000504 52 4 75 42 0.603 - 0/998 2965/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000504 102 3 55 98 0.606 - 0/998 2966/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000505 82 5 73 71 0.607 - 0/998 2967/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000506 51 5 55 45 0.603 - 0/998 2968/3375 66.3 65.8 138 138 147 535 1.09e+03 0.00452 0.000507 91 6 155 74 0.623 - 0/998 2969/3375 66.3 65.7 138 138 147 535 1.09e+03 0.00452 0.000508 68 3 43 65 0.615 - 0/998 2970/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00452 0.000508 46 0 30 45 0.622 - 0/998 2971/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00452 0.000507 81 0 51 80 0.597 - 0/998 2972/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00452 0.000507 97 0 25 97 0.601 - 0/998 2973/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00452 0.00051 94 5 108 82 0.633 - 0/998 2974/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00452 0.00051 66 0 62 65 0.604 - 0/998 2975/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00453 0.000514 64 5 73 51 0.609 - 0/998 2976/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00453 0.000514 56 0 55 52 0.584 - 0/998 2977/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00453 0.000514 131 2 36 122 0.612 - 0/998 2978/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00453 0.000514 76 5 71 67 0.613 - 0/998 2979/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00453 0.000515 86 1 41 82 0.611 - 0/998 2980/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00453 0.000515 46 1 35 45 0.594 - 0/998 2981/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00453 0.000515 89 1 29 86 0.603 - 0/998 2982/3375 66.3 65.7 138 138 147 534 1.09e+03 0.00453 0.000515 84 2 72 77 0.614 - 0/998 2983/3375 66.2 65.7 138 138 147 534 1.09e+03 0.00453 0.000515 40 1 16 37 0.591 - 0/998 2984/3375 66.2 65.7 138 138 147 534 1.09e+03 0.00453 0.000515 104 1 21 103 0.598 - 0/998 2985/3375 66.2 65.7 138 138 147 534 1.09e+03 0.00453 0.000515 89 4 59 82 0.606 - 0/998 2986/3375 66.2 65.7 138 138 147 534 1.09e+03 0.00453 0.000516 87 4 82 76 0.609 - 0/998 2987/3375 66.2 65.7 138 138 147 534 1.09e+03 0.00452 0.000516 57 5 170 46 0.61 - 0/998 2988/3375 66.2 65.7 138 138 147 534 1.09e+03 0.00452 0.000517 89 4 92 83 0.619 - 0/998 2989/3375 66.2 65.7 138 138 147 534 1.09e+03 0.00452 0.000517 107 2 85 99 0.615 - 0/998 2990/3375 66.2 65.7 138 138 147 534 1.09e+03 0.00452 0.000518 87 5 179 78 0.625 - 0/998 2991/3375 66.2 65.7 138 138 147 534 1.09e+03 0.00452 0.000519 67 8 210 52 0.624 - 0/998 2992/3375 66.2 65.7 138 138 147 534 1.09e+03 0.0045 0.000519 53 0 191 48 0.629 - 0/998 2993/3375 66.2 65.7 138 138 147 534 1.09e+03 0.0045 0.00052 113 9 263 99 0.622 - 0/998 2994/3375 66.2 65.7 138 138 147 534 1.09e+03 0.0045 0.000521 76 5 130 65 0.618 - 0/998 2995/3375 66.2 65.7 138 138 146 534 1.09e+03 0.0045 0.000521 60 1 214 57 0.62 - 0/998 2996/3375 66.2 65.7 138 138 146 534 1.09e+03 0.00449 0.000521 76 5 236 67 0.619 - 0/998 2997/3375 66.2 65.7 138 138 146 534 1.09e+03 0.00449 0.000521 76 1 118 74 0.61 - 0/998 2998/3375 66.2 65.7 138 138 146 534 1.09e+03 0.00449 0.000523 101 8 193 90 0.618 - 0/998 2999/3375 66.2 65.7 138 138 146 534 1.09e+03 0.00449 0.000523 77 1 63 74 0.614 - 0/998 3000/3375 66.2 65.7 138 138 146 534 1.09e+03 0.00449 0.000524 74 10 227 60 0.619 - 0/998 3001/3375 66.2 65.7 138 138 146 533 1.09e+03 0.00449 0.000527 81 6 238 67 0.606 - 0/998 3002/3375 66.2 65.7 138 138 146 533 1.09e+03 0.00449 0.000527 95 5 69 87 0.621 - 0/998 3003/3375 66.2 65.6 138 138 146 533 1.09e+03 0.00449 0.000527 68 1 91 65 0.585 - 0/998 3004/3375 66.2 65.6 138 138 146 533 1.09e+03 0.00449 0.000527 79 1 125 78 0.629 - 0/998 3005/3375 66.2 65.6 138 138 146 533 1.09e+03 0.00449 0.000527 70 1 186 61 0.615 - 0/998 3006/3375 66.2 65.6 138 137 146 533 1.09e+03 0.00449 0.000527 29 0 60 27 0.594 - 0/998 3007/3375 66.2 65.6 138 137 146 533 1.09e+03 0.00449 0.000529 138 14 178 115 0.618 - 0/998 3008/3375 66.2 65.6 138 137 146 533 1.09e+03 0.00449 0.00053 43 3 180 40 0.606 - 0/998 3009/3375 66.2 65.6 138 137 146 533 1.09e+03 0.00445 0.000529 82 0 44 81 0.679 - 0/998 3010/3375 66.2 65.6 138 137 146 533 1.09e+03 0.00445 0.000529 99 1 38 95 0.66 - 0/998 3011/3375 66.2 65.6 138 137 146 533 1.09e+03 0.00445 0.00053 87 6 96 79 0.626 - 0/998 3012/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00444 0.00053 42 0 111 41 0.602 - 0/998 3013/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00444 0.00053 85 1 70 79 0.634 - 0/998 3014/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00444 0.00053 81 1 38 80 0.625 - 0/998 3015/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00444 0.00053 97 2 34 95 1.57 - 0/998 3016/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00444 0.000531 60 3 47 55 0.65 - 0/998 3017/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00444 0.000531 116 0 21 116 0.643 - 0/998 3018/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00444 0.000531 60 1 73 56 0.631 - 0/998 3019/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00444 0.000531 82 4 70 75 1.82 - 0/998 3020/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00445 0.000534 87 6 154 70 0.624 - 0/998 3021/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00444 0.000534 45 0 52 42 0.591 - 0/998 3022/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00444 0.000533 75 0 108 72 0.624 - 0/998 3023/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00437 0.000534 60 1 153 56 0.634 - 0/998 3024/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00437 0.000534 119 7 78 106 0.623 - 0/998 3025/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00437 0.000534 63 0 13 61 0.593 - 0/998 3026/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00437 0.000534 43 0 60 43 0.599 - 0/998 3027/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00437 0.000534 92 3 36 86 0.625 - 0/998 3028/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00437 0.000535 71 2 58 67 0.62 - 0/998 3029/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00437 0.000534 82 0 50 81 0.896 - 0/998 3030/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00437 0.000535 83 4 109 76 0.608 - 0/998 3031/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00437 0.000535 91 0 32 89 0.626 - 0/998 3032/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00437 0.000535 49 1 68 46 0.615 - 0/998 3033/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00437 0.000535 82 1 12 81 1.18 - 0/998 3034/3375 66.1 65.5 138 137 146 533 1.09e+03 0.00437 0.000535 58 0 62 57 0.607 - 0/998 3035/3375 66.1 65.5 138 137 146 533 1.09e+03 0.00437 0.000535 87 2 22 83 0.605 - 0/998 3036/3375 66.1 65.5 138 137 146 533 1.08e+03 0.00437 0.000536 90 7 92 81 0.585 - 0/998 3037/3375 66.1 65.5 138 137 146 533 1.08e+03 0.00436 0.000536 75 0 22 74 0.608 - 0/998 3038/3375 66.1 65.5 138 137 146 533 1.08e+03 0.00436 0.000536 96 2 46 93 0.596 - 0/998 3039/3375 66.1 65.6 138 137 146 533 1.08e+03 0.00436 0.000536 112 2 41 109 0.614 - 0/998 3040/3375 66.1 65.6 138 137 146 533 1.08e+03 0.00436 0.000536 116 3 86 112 0.608 - 0/998 3041/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00436 0.000537 123 6 83 113 0.585 - 0/998 3042/3375 66.1 65.6 138 137 146 533 1.09e+03 0.00436 0.000538 119 10 227 93 0.601 - 0/998 3043/3375 66.1 65.6 138 137 146 533 1.08e+03 0.00436 0.000538 71 0 90 69 0.591 - 0/998 3044/3375 66.1 65.6 138 137 146 532 1.08e+03 0.00436 0.000538 54 0 125 49 0.608 - 0/998 3045/3375 66.1 65.6 138 137 146 532 1.08e+03 0.00436 0.000538 90 3 45 87 0.602 - 0/998 3046/3375 66.1 65.6 138 137 146 532 1.08e+03 0.00436 0.000539 75 2 104 72 0.609 - 0/998 3047/3375 66.1 65.5 138 137 146 532 1.08e+03 0.00436 0.000539 78 6 333 58 0.587 - 0/998 3048/3375 66.1 65.5 138 137 146 532 1.08e+03 0.00624 0.000546 76 6 297 68 0.618 - 0/998 3049/3375 66.1 65.5 138 137 146 532 1.08e+03 0.00624 0.000545 93 0 86 93 0.607 - 0/998 3050/3375 66.1 65.6 138 137 146 533 1.08e+03 0.00624 0.000545 147 0 18 147 0.612 - 0/998 3051/3375 66.1 65.6 138 137 146 532 1.08e+03 0.00623 0.000545 52 0 114 46 0.596 - 0/998 3052/3375 66.1 65.6 138 137 146 533 1.08e+03 0.00623 0.000545 97 0 55 95 0.615 - 0/998 3053/3375 66.1 65.6 138 137 146 533 1.08e+03 0.00555 0.000545 95 2 150 90 0.607 - 0/998 3054/3375 66.1 65.6 138 137 146 533 1.08e+03 0.00555 0.000546 148 3 60 140 0.625 - 0/998 3055/3375 66.1 65.6 138 137 146 533 1.08e+03 0.00555 0.000546 91 3 91 84 0.599 - 0/998 3056/3375 66.1 65.6 138 137 146 533 1.08e+03 0.00555 0.000548 69 4 48 63 0.624 - 0/998 3057/3375 66.1 65.6 138 137 146 533 1.08e+03 0.00555 0.000548 80 1 112 74 0.591 - 0/998 3058/3375 66.1 65.5 138 137 146 533 1.08e+03 0.00555 0.000549 47 2 59 43 0.619 - 0/998 3059/3375 66.1 65.5 138 137 146 533 1.08e+03 0.00555 0.000549 96 0 21 95 0.626 - 0/998 3060/3375 66.1 65.5 138 137 146 533 1.08e+03 0.00555 0.00055 59 4 61 55 0.586 - 0/998 3061/3375 66.1 65.5 138 137 146 532 1.08e+03 0.00555 0.00055 65 2 70 59 0.586 - 0/998 3062/3375 66.1 65.5 138 137 146 532 1.08e+03 0.00555 0.00055 120 3 21 117 0.615 - 0/998 3063/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000552 65 9 140 50 0.598 - 0/998 3064/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000552 72 4 32 68 0.606 - 0/998 3065/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000552 116 3 37 108 0.607 - 0/998 3066/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000556 80 15 129 55 0.59 - 0/998 3067/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000556 110 0 20 110 0.591 - 0/998 3068/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000556 73 2 31 70 0.572 - 0/998 3069/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000556 98 3 51 92 0.619 - 0/998 3070/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000557 61 4 40 57 0.6 - 0/998 3071/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000557 102 3 14 99 0.592 - 0/998 3072/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000557 113 2 52 105 0.607 - 0/998 3073/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000558 69 3 41 65 0.609 - 0/998 3074/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000558 84 2 50 79 0.62 - 0/998 3075/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000558 87 1 54 84 0.617 - 0/998 3076/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00555 0.000558 75 1 34 74 0.616 - 0/998 3077/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00556 0.00056 113 4 69 106 0.615 - 0/998 3078/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00552 0.00056 77 5 83 70 0.613 - 0/998 3079/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00552 0.000561 73 4 59 67 0.604 - 0/998 3080/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00552 0.000561 64 1 43 62 0.605 - 0/998 3081/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00552 0.000561 77 2 64 72 0.604 - 0/998 3082/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00552 0.000561 73 1 92 65 0.591 - 0/998 3083/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00561 0.000567 114 2 103 107 0.607 - 0/998 3084/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00561 0.000567 67 1 33 64 0.6 - 0/998 3085/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00561 0.000567 104 1 34 98 0.611 - 0/998 3086/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00561 0.000568 75 6 201 61 0.609 - 0/998 3087/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00561 0.000568 70 1 30 67 0.585 - 0/998 3088/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00561 0.000568 70 2 53 66 0.609 - 0/998 3089/3375 66.1 65.5 137 137 146 532 1.08e+03 0.0056 0.000568 108 2 92 100 0.606 - 0/998 3090/3375 66.1 65.5 137 137 146 532 1.08e+03 0.0056 0.000568 100 2 119 96 0.604 - 0/998 3091/3375 66.1 65.5 137 137 146 532 1.08e+03 0.0056 0.000568 59 3 148 48 0.596 - 0/998 3092/3375 66 65.5 137 137 146 532 1.08e+03 0.0056 0.000572 70 10 187 51 0.611 - 0/998 3093/3375 66.1 65.5 137 137 146 532 1.08e+03 0.0056 0.000572 106 1 34 103 0.611 - 0/998 3094/3375 66.1 65.5 137 137 146 532 1.08e+03 0.0056 0.000572 118 0 36 116 0.606 - 0/998 3095/3375 66.1 65.5 137 137 146 532 1.08e+03 0.0056 0.000572 55 1 41 54 0.597 - 0/998 3096/3375 66 65.5 137 137 146 532 1.08e+03 0.0056 0.000572 52 0 73 52 0.606 - 0/998 3097/3375 66 65.5 137 137 146 532 1.08e+03 0.00557 0.000573 65 6 142 55 0.604 - 0/998 3098/3375 66 65.5 137 137 146 532 1.08e+03 0.00557 0.000573 80 0 97 77 0.624 - 0/998 3099/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00557 0.000574 175 3 60 162 0.613 - 0/998 3100/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00557 0.000575 71 6 37 62 0.609 - 0/998 3101/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00557 0.000575 116 4 61 106 0.624 - 0/998 3102/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00557 0.000575 59 2 80 57 0.625 - 0/998 3103/3375 66 65.5 137 137 146 532 1.08e+03 0.00557 0.000576 69 7 131 60 0.607 - 0/998 3104/3375 66 65.5 137 137 146 532 1.08e+03 0.00557 0.000576 71 1 28 68 0.618 - 0/998 3105/3375 66.1 65.5 137 137 146 532 1.08e+03 0.00557 0.000577 135 2 116 130 0.61 - 0/998 3106/3375 66 65.5 137 137 146 532 1.08e+03 0.00557 0.000577 65 4 191 54 0.607 - 0/998 3107/3375 66 65.5 137 137 146 532 1.08e+03 0.00557 0.000578 107 7 265 96 0.599 - 0/998 3108/3375 66.1 65.6 137 137 146 532 1.08e+03 0.00557 0.000578 111 1 136 107 0.607 - 0/998 3109/3375 66.1 65.6 137 137 146 532 1.08e+03 0.00557 0.000578 93 2 100 88 0.598 - 0/998 3110/3375 66.1 65.6 137 137 146 532 1.08e+03 0.00557 0.000578 42 2 148 36 0.597 - 0/998 3111/3375 66.1 65.6 137 137 146 532 1.08e+03 0.00557 0.000579 94 6 69 87 0.606 - 0/998 3112/3375 66.1 65.6 137 137 146 532 1.08e+03 0.00557 0.000579 135 2 88 132 0.6 - 0/998 3113/3375 66.1 65.6 137 137 146 532 1.08e+03 0.00557 0.00058 81 4 35 77 0.631 - 0/998 3114/3375 66.1 65.6 137 137 146 532 1.08e+03 0.00557 0.00058 55 3 105 50 0.59 - 0/998 3115/3375 66.1 65.6 137 137 146 532 1.08e+03 0.00557 0.00058 50 0 55 49 0.623 - 0/998 3116/3375 66 65.6 137 137 146 532 1.08e+03 0.00557 0.00058 94 0 18 93 0.601 - 0/998 3117/3375 66 65.6 137 137 146 532 1.08e+03 0.00557 0.00058 51 0 134 49 0.607 - 0/998 3118/3375 66 65.6 137 137 146 532 1.08e+03 0.00554 0.00058 55 0 12 54 0.598 - 0/998 3119/3375 66 65.5 137 137 146 532 1.08e+03 0.00554 0.00058 74 2 10 72 0.611 - 0/998 3120/3375 66 65.6 137 137 146 532 1.08e+03 0.00554 0.00058 90 0 32 90 0.591 - 0/998 3121/3375 66 65.5 137 137 145 532 1.08e+03 0.00554 0.00058 71 3 35 67 0.618 - 0/998 3122/3375 66 65.5 137 137 145 532 1.08e+03 0.00554 0.00058 57 2 58 49 0.612 - 0/998 3123/3375 66 65.5 137 137 145 532 1.08e+03 0.00554 0.00058 104 2 21 100 0.614 - 0/998 3124/3375 66 65.5 137 137 145 532 1.08e+03 0.00554 0.00058 52 0 35 52 0.593 - 0/998 3125/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.00058 86 2 78 81 0.62 - 0/998 3126/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000581 113 2 50 107 0.618 - 0/998 3127/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000583 92 11 92 77 0.606 - 0/998 3128/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000583 84 0 138 77 0.621 - 0/998 3129/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000583 73 2 141 65 0.632 - 0/998 3130/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000583 90 3 104 82 0.61 - 0/998 3131/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000583 65 0 88 64 0.637 - 0/998 3132/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000583 97 2 60 95 0.596 - 0/998 3133/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000583 97 5 48 90 0.616 - 0/998 3134/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000584 101 7 134 88 0.616 - 0/998 3135/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000585 45 4 108 37 0.608 - 0/998 3136/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000585 56 2 154 50 0.597 - 0/998 3137/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000586 94 6 180 83 0.609 - 0/998 3138/3375 66 65.5 137 137 145 532 1.08e+03 0.00553 0.000588 93 12 197 78 0.607 - 0/998 3139/3375 66 65.5 137 137 145 531 1.08e+03 0.00553 0.000588 66 3 87 62 0.617 - 0/998 3140/3375 66 65.5 137 137 145 532 1.08e+03 0.0055 0.000588 117 3 62 109 0.615 - 0/998 3141/3375 66 65.5 137 137 145 532 1.08e+03 0.0055 0.00059 87 14 134 69 0.627 - 0/998 3142/3375 66 65.5 137 137 145 531 1.08e+03 0.0055 0.000591 65 6 196 49 0.606 - 0/998 3143/3375 66 65.5 137 137 145 531 1.08e+03 0.0055 0.000593 59 10 253 43 0.618 - 0/998 3144/3375 66 65.5 137 137 145 531 1.08e+03 0.00548 0.000594 70 8 220 57 0.612 - 0/998 3145/3375 66 65.5 137 137 145 531 1.08e+03 0.00548 0.000595 97 3 108 88 0.615 - 0/998 3146/3375 66 65.5 137 137 145 531 1.08e+03 0.00548 0.000596 105 6 207 90 0.624 - 0/998 3147/3375 66 65.5 137 137 145 531 1.08e+03 0.00593 0.000603 85 4 72 81 0.606 - 0/998 3148/3375 66 65.5 137 137 145 531 1.08e+03 0.00593 0.000603 92 0 47 91 0.618 - 0/998 3149/3375 66 65.5 137 137 145 531 1.08e+03 0.00593 0.000603 68 1 135 67 0.626 - 0/998 3150/3375 66 65.5 137 137 145 531 1.08e+03 0.00593 0.000607 53 6 253 41 0.613 - 0/998 3151/3375 66 65.5 137 137 145 531 1.08e+03 0.00593 0.000608 100 5 95 90 0.611 - 0/998 3152/3375 66 65.5 137 137 145 531 1.08e+03 0.0059 0.000608 141 1 79 131 0.627 - 0/998 3153/3375 66 65.5 137 137 145 531 1.08e+03 0.0059 0.000608 73 0 94 73 0.623 - 0/998 3154/3375 66 65.5 137 137 145 531 1.08e+03 0.0059 0.000608 126 2 108 119 0.602 - 0/998 3155/3375 66 65.5 137 137 145 531 1.08e+03 0.0059 0.000609 97 3 115 90 0.619 - 0/998 3156/3375 66 65.5 137 137 145 531 1.08e+03 0.00586 0.000608 91 1 62 83 0.619 - 0/998 3157/3375 66 65.5 137 137 145 531 1.08e+03 0.00586 0.000608 71 0 50 71 0.615 - 0/998 3158/3375 66 65.5 137 137 145 531 1.08e+03 0.00586 0.000608 69 2 98 66 0.623 - 0/998 3159/3375 66 65.5 137 137 145 531 1.08e+03 0.00586 0.000608 73 1 115 62 0.596 - 0/998 3160/3375 66 65.5 137 137 145 531 1.08e+03 0.00586 0.000609 60 2 78 56 0.607 - 0/998 3161/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00586 0.000609 44 0 56 43 1.14 - 0/998 3162/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00585 0.000609 78 0 50 77 1.1 - 0/998 3163/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00585 0.000609 61 0 69 59 0.612 - 0/998 3164/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00582 0.000609 93 2 34 89 0.615 - 0/998 3165/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00582 0.000609 91 1 74 80 0.615 - 0/998 3166/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00614 0.000616 60 2 120 57 0.626 - 0/998 3167/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00614 0.000619 78 3 57 73 0.611 - 0/998 3168/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00614 0.000619 68 4 110 64 0.601 - 0/998 3169/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00614 0.000619 116 0 57 113 0.621 - 0/998 3170/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00614 0.000619 120 1 64 117 0.601 - 0/998 3171/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00614 0.000619 99 0 16 99 0.609 - 0/998 3172/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00611 0.000618 86 1 120 78 0.608 - 0/998 3173/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00611 0.000618 55 0 102 53 0.613 - 0/998 3174/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00604 0.000618 47 1 89 45 0.622 - 0/998 3175/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00604 0.000619 72 3 35 67 0.605 - 0/998 3176/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00604 0.000621 94 8 96 79 0.61 - 0/998 3177/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00604 0.000621 94 0 22 92 0.636 - 0/998 3178/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00604 0.00062 80 0 96 73 0.628 - 0/998 3179/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00604 0.00062 111 1 29 109 0.635 - 0/998 3180/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00604 0.00062 41 0 13 40 0.613 - 0/998 3181/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.000627 80 4 47 75 0.606 - 0/998 3182/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.000627 85 2 37 82 0.64 - 0/998 3183/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.000627 98 2 27 91 0.602 - 0/998 3184/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.000628 115 4 26 111 0.595 - 0/998 3185/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.000628 43 0 44 43 0.591 - 0/998 3186/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.000628 75 1 35 72 0.591 - 0/998 3187/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.000628 103 2 107 89 0.6 - 0/998 3188/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.000629 85 2 31 81 0.613 - 0/998 3189/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.000629 58 4 113 52 0.632 - 0/998 3190/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.00063 139 7 43 130 0.634 - 0/998 3191/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.00063 77 0 37 77 0.605 - 0/998 3192/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.00063 97 1 51 94 0.605 - 0/998 3193/3375 65.9 65.5 137 136 145 531 1.08e+03 0.00624 0.000629 94 0 6 94 0.623 - 0/998 3194/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00624 0.00063 78 4 95 73 0.604 - 0/998 3195/3375 65.9 65.4 137 136 145 531 1.08e+03 0.00623 0.00063 38 0 38 36 0.618 - 0/998 3196/3375 65.9 65.4 137 136 145 530 1.08e+03 0.00623 0.000631 51 1 91 47 0.609 - 0/998 3197/3375 65.9 65.4 137 136 145 530 1.08e+03 0.00623 0.000631 68 2 42 65 0.627 - 0/998 3198/3375 65.9 65.4 137 136 145 530 1.08e+03 0.00623 0.000631 106 4 120 98 0.622 - 0/998 3199/3375 65.9 65.4 137 136 145 530 1.08e+03 0.00623 0.000631 73 0 38 71 0.592 - 0/998 3200/3375 65.9 65.4 137 136 145 530 1.08e+03 0.00623 0.000631 101 4 117 93 0.627 - 0/998 3201/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00623 0.000631 73 0 111 64 0.601 - 0/998 3202/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00623 0.000631 78 1 72 68 0.614 - 0/998 3203/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00623 0.000631 66 0 91 65 0.601 - 0/998 3204/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00623 0.000632 86 7 91 76 0.597 - 0/998 3205/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00622 0.000632 57 1 107 50 0.597 - 0/998 3206/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00622 0.000632 57 0 34 57 0.598 - 0/998 3207/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00622 0.000633 72 2 58 65 0.595 - 0/998 3208/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000633 92 1 46 88 0.615 - 0/998 3209/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000633 111 1 59 107 0.638 - 0/998 3210/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000633 80 2 31 76 0.601 - 0/998 3211/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000633 74 0 9 73 0.614 - 0/998 3212/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000633 129 3 63 119 0.631 - 0/998 3213/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000633 105 1 23 104 0.613 - 0/998 3214/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000632 77 0 53 74 0.604 - 0/998 3215/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000633 108 4 88 98 0.642 - 0/998 3216/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000633 87 0 48 85 0.594 - 0/998 3217/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000634 91 2 138 84 0.621 - 0/998 3218/3375 65.9 65.4 136 136 145 530 1.08e+03 0.0062 0.000634 63 1 89 56 0.607 - 0/998 3219/3375 65.9 65.4 136 136 145 530 1.08e+03 0.0062 0.000633 102 1 21 100 0.614 - 0/998 3220/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000637 84 5 48 76 0.605 - 0/998 3221/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000637 113 3 92 106 0.597 - 0/998 3222/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.000637 94 1 99 87 0.614 - 0/998 3223/3375 65.9 65.4 136 136 145 530 1.08e+03 0.0062 0.000637 77 1 54 74 0.619 - 0/998 3224/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00621 0.00064 89 4 83 82 0.605 - 0/998 3225/3375 65.9 65.4 136 136 145 530 1.08e+03 0.0062 0.00064 60 1 162 56 0.609 - 0/998 3226/3375 65.9 65.4 136 136 145 530 1.08e+03 0.0062 0.00064 44 3 157 36 0.595 - 0/998 3227/3375 65.9 65.4 136 136 145 530 1.08e+03 0.0062 0.00064 80 1 219 66 0.604 - 0/998 3228/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00616 0.000641 54 2 468 48 0.643 - 0/998 3229/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00616 0.000641 70 0 171 67 0.605 - 0/998 3230/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00613 0.000643 119 7 232 99 0.607 - 0/998 3231/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00613 0.000643 57 4 55 53 0.607 - 0/998 3232/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00613 0.000645 67 5 213 58 0.644 - 0/998 3233/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00613 0.000645 92 1 73 88 0.608 - 0/998 3234/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00612 0.000645 105 2 149 103 0.597 - 0/998 3235/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00612 0.000645 66 0 54 65 0.599 - 0/998 3236/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00612 0.000646 105 5 143 95 0.624 - 0/998 3237/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00612 0.000647 64 4 162 58 0.607 - 0/998 3238/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00612 0.000648 102 10 189 84 0.598 - 0/998 3239/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00612 0.000649 99 3 83 92 0.616 - 0/998 3240/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00612 0.000649 116 1 28 113 0.617 - 0/998 3241/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00612 0.000649 133 2 14 130 0.607 - 0/998 3242/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00612 0.000649 74 0 20 74 0.613 - 0/998 3243/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00612 0.000648 92 1 78 84 0.608 - 0/998 3244/3375 65.9 65.4 136 136 145 530 1.08e+03 0.00612 0.000649 89 6 72 80 0.614 - 0/998 3245/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00612 0.000652 92 3 45 83 0.61 - 0/998 3246/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00612 0.000652 48 1 34 46 0.599 - 0/998 3247/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00612 0.000652 68 2 20 65 0.596 - 0/998 3248/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00612 0.000652 71 1 41 70 0.618 - 0/998 3249/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00612 0.000652 129 3 142 124 0.641 - 0/998 3250/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00612 0.000652 84 0 84 81 0.617 - 0/998 3251/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00612 0.000652 74 0 77 69 0.607 - 0/998 3252/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00612 0.000652 71 1 35 70 0.613 - 0/998 3253/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00612 0.000652 60 5 81 54 0.633 - 0/998 3254/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00612 0.000653 78 2 77 75 0.628 - 0/998 3255/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00612 0.000653 88 1 98 85 0.632 - 0/998 3256/3375 65.8 65.4 136 136 144 530 1.08e+03 0.00612 0.000653 70 3 64 66 0.644 - 0/998 3257/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00611 0.000656 128 14 216 108 0.634 - 0/998 3258/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00611 0.000657 100 12 246 76 0.634 - 0/998 3259/3375 65.9 65.4 136 136 144 530 1.08e+03 0.00611 0.000658 82 8 85 70 0.643 - 0/998 3260/3375 65.8 65.4 136 136 144 530 1.08e+03 0.00601 0.000659 60 4 399 34 0.622 - 0/998 3261/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00601 0.000659 38 3 68 34 0.626 - 0/998 3262/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00601 0.00066 97 5 80 89 0.625 - 0/998 3263/3375 65.8 65.4 136 136 144 529 1.08e+03 0.006 0.000661 57 8 220 39 0.605 - 0/998 3264/3375 65.8 65.4 136 136 144 529 1.08e+03 0.006 0.000661 122 5 150 113 0.623 - 0/998 3265/3375 65.8 65.4 136 136 144 529 1.08e+03 0.006 0.000661 61 1 146 57 0.603 - 0/998 3266/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00592 0.000661 71 2 82 65 0.621 - 0/998 3267/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00592 0.000661 75 3 113 68 0.606 - 0/998 3268/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00592 0.000661 48 0 76 47 0.607 - 0/998 3269/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00589 0.000661 48 1 169 47 0.614 - 0/998 3270/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00589 0.000661 73 2 121 68 0.62 - 0/998 3271/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00589 0.000662 122 3 84 112 0.614 - 0/998 3272/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00589 0.000662 97 1 82 91 0.621 - 0/998 3273/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00589 0.000662 101 3 211 93 0.614 - 0/998 3274/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00589 0.000662 57 1 115 54 0.627 - 0/998 3275/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00589 0.000663 121 8 156 105 0.603 - 0/998 3276/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00588 0.000664 76 8 302 65 0.614 - 0/998 3277/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00588 0.000664 77 0 105 73 0.59 - 0/998 3278/3375 65.8 65.4 136 136 144 529 1.08e+03 0.00588 0.000664 83 5 90 73 0.623 - 0/998 3279/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00588 0.000664 101 2 147 93 0.612 - 0/998 3280/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00545 0.000664 64 0 192 60 0.597 - 0/998 3281/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00545 0.000666 100 6 128 86 0.599 - 0/998 3282/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00536 0.000666 67 2 126 62 0.596 - 0/998 3283/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00536 0.000666 96 3 81 88 0.618 - 0/998 3284/3375 65.8 65.3 136 136 144 529 1.08e+03 0.0055 0.000672 76 5 86 67 0.597 - 0/998 3285/3375 65.8 65.3 136 136 144 529 1.08e+03 0.0055 0.000673 52 6 262 43 0.601 - 0/998 3286/3375 65.8 65.3 136 136 144 529 1.08e+03 0.0055 0.000673 75 1 71 73 0.606 - 0/998 3287/3375 65.8 65.3 136 136 144 529 1.08e+03 0.0055 0.000673 101 6 154 85 0.623 - 0/998 3288/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00547 0.000674 65 8 163 56 0.639 - 0/998 3289/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00547 0.000674 123 1 135 103 0.612 - 0/998 3290/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00547 0.000675 113 4 121 105 0.633 - 0/998 3291/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00547 0.000675 102 4 232 86 0.612 - 0/998 3292/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00547 0.000676 73 2 110 66 0.636 - 0/998 3293/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00547 0.000677 127 7 107 117 0.625 - 0/998 3294/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00547 0.000678 83 1 104 73 0.626 - 0/998 3295/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00547 0.000679 62 5 191 46 0.618 - 0/998 3296/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00548 0.000682 100 8 187 84 0.665 - 0/998 3297/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00548 0.000682 113 1 51 112 0.641 - 0/998 3298/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00547 0.000684 74 6 240 62 0.661 - 0/998 3299/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00597 0.000692 90 5 69 84 0.665 - 0/998 3300/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00597 0.000692 124 3 124 115 0.653 - 0/998 3301/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00597 0.000692 56 1 72 49 0.645 - 0/998 3302/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00597 0.000693 84 2 17 82 0.624 - 0/998 3303/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00594 0.000693 71 0 123 69 0.622 - 0/998 3304/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00592 0.000693 48 1 109 46 0.609 - 0/998 3305/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00592 0.000693 96 1 56 94 0.636 - 0/998 3306/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00592 0.000693 86 0 47 86 0.639 - 0/998 3307/3375 65.8 65.3 136 136 144 529 1.08e+03 0.00617 0.000703 104 4 267 83 0.621 - 0/998 3308/3375 65.8 65.3 136 135 144 529 1.08e+03 0.00617 0.000703 80 1 8 78 0.616 - 0/998 3309/3375 65.8 65.3 136 135 144 529 1.08e+03 0.00613 0.000703 73 0 59 72 0.611 - 0/998 3310/3375 65.7 65.3 136 135 144 529 1.07e+03 0.00613 0.000703 51 0 21 50 0.587 - 0/998 3311/3375 65.7 65.3 136 135 144 529 1.07e+03 0.00613 0.000703 73 0 23 72 0.614 - 0/998 3312/3375 65.8 65.3 136 135 144 529 1.08e+03 0.00613 0.000703 127 1 8 125 0.62 - 0/998 3313/3375 65.8 65.3 136 135 144 529 1.08e+03 0.00613 0.000703 90 0 31 86 0.632 - 0/998 3314/3375 65.8 65.3 136 135 144 529 1.08e+03 0.00612 0.000702 79 0 23 74 0.627 - 0/998 3315/3375 65.8 65.3 136 135 144 529 1.08e+03 0.00581 0.000703 122 3 38 116 0.61 - 0/998 3316/3375 65.8 65.3 136 135 144 529 1.08e+03 0.00581 0.000703 74 3 40 67 0.613 - 0/998 3317/3375 65.8 65.3 136 135 144 529 1.08e+03 0.00579 0.000703 92 1 40 89 0.628 - 0/998 3318/3375 65.8 65.3 136 135 144 529 1.08e+03 0.00579 0.000704 87 6 48 80 0.598 - 0/998 3319/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00578 0.000703 72 0 73 67 0.617 - 0/998 3320/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00576 0.000704 71 3 83 63 0.619 - 0/998 3321/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00576 0.000704 85 3 207 75 0.615 - 0/998 3322/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00576 0.000705 112 8 115 101 0.628 - 0/998 3323/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00576 0.000705 102 1 74 91 0.607 - 0/998 3324/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00574 0.000705 74 4 136 64 0.59 - 0/998 3325/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00572 0.000706 64 4 81 51 0.598 - 0/998 3326/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00572 0.000707 94 6 182 72 0.617 - 0/998 3327/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00574 0.00071 68 2 34 66 0.621 - 0/998 3328/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00574 0.00071 59 3 116 54 0.613 - 0/998 3329/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00574 0.000711 69 9 188 54 0.606 - 0/998 3330/3375 65.7 65.3 136 135 144 529 1.07e+03 0.00572 0.000713 93 12 349 72 0.611 - 0/998 3331/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00572 0.000713 115 2 56 112 0.619 - 0/998 3332/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00549 0.00072 78 9 172 61 0.603 - 0/998 3333/3375 65.8 65.3 136 135 144 529 1.07e+03 0.00549 0.000721 85 5 92 78 0.625 - 0/998 3334/3375 65.7 65.3 136 135 144 529 1.07e+03 0.00549 0.000721 58 0 170 56 0.591 - 0/998 3335/3375 65.7 65.3 136 135 144 528 1.07e+03 0.00549 0.000721 77 2 150 69 0.614 - 0/998 3336/3375 65.7 65.3 136 135 144 528 1.07e+03 0.00549 0.000722 62 10 224 44 0.607 - 0/998 3337/3375 65.7 65.3 136 135 144 528 1.07e+03 0.00546 0.000723 83 10 133 71 0.609 - 0/998 3338/3375 65.7 65.3 136 135 144 528 1.07e+03 0.00545 0.000724 42 3 173 35 0.598 - 0/998 3339/3375 65.7 65.3 136 135 144 528 1.07e+03 0.00545 0.000725 72 7 197 62 0.61 - 0/998 3340/3375 65.7 65.3 136 135 144 528 1.07e+03 0.00544 0.000726 108 3 169 98 0.615 - 0/998 3341/3375 65.7 65.3 136 135 144 528 1.07e+03 0.0054 0.000726 67 6 312 46 0.62 - 0/998 3342/3375 65.7 65.3 136 135 144 528 1.07e+03 0.0054 0.000727 97 2 84 93 0.6 - 0/998 3343/3375 65.7 65.3 135 135 144 528 1.07e+03 0.00532 0.000727 53 1 119 46 0.61 - 0/998 3344/3375 65.7 65.3 135 135 144 528 1.07e+03 0.00532 0.00073 74 12 548 48 0.615 - 0/998 3345/3375 65.7 65.3 135 135 144 528 1.07e+03 0.00532 0.00073 130 2 116 118 0.617 - 0/998 3346/3375 65.7 65.3 135 135 144 528 1.07e+03 0.00531 0.000731 61 3 76 53 0.615 - 0/998 3347/3375 65.7 65.3 135 135 144 528 1.07e+03 0.00531 0.000731 75 0 56 69 0.617 - 0/998 3348/3375 65.7 65.3 135 135 144 528 1.07e+03 0.0053 0.000731 104 1 63 100 0.612 - 0/998 3349/3375 65.7 65.3 135 135 144 528 1.07e+03 0.0056 0.000735 48 2 88 46 0.604 - 0/998 3350/3375 65.7 65.3 135 135 144 528 1.07e+03 0.00559 0.000735 57 1 71 56 0.626 - 0/998 3351/3375 65.7 65.3 135 135 144 528 1.07e+03 0.00557 0.000735 77 2 35 73 0.636 - 0/998 3352/3375 65.7 65.3 135 135 144 528 1.07e+03 0.00557 0.000735 84 1 48 81 0.626 - 0/998 3353/3375 65.7 65.3 135 135 144 528 1.07e+03 0.00557 0.000736 67 3 20 64 0.624 - 0/998 3354/3375 65.7 65.2 135 135 144 528 1.07e+03 0.00557 0.000736 48 3 31 44 0.624 - 0/998 3355/3375 65.7 65.2 135 135 144 528 1.07e+03 0.00557 0.000736 83 0 26 82 0.631 - 0/998 3356/3375 65.7 65.2 135 135 144 528 1.07e+03 0.00557 0.000737 67 3 133 59 0.632 - 0/998 3357/3375 65.7 65.2 135 135 143 528 1.07e+03 0.00568 0.000742 42 1 41 41 0.603 - 0/998 3358/3375 65.7 65.2 135 135 143 528 1.07e+03 0.00567 0.000743 68 3 59 62 0.616 - 0/998 3359/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00567 0.000743 96 1 41 92 0.614 - 0/998 3360/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00567 0.000744 81 7 126 65 0.637 - 0/998 3361/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00567 0.000744 85 1 10 84 0.608 - 0/998 3362/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00568 0.000746 75 2 55 70 0.607 - 0/998 3363/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00567 0.000749 72 4 125 66 0.621 - 0/998 3364/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00567 0.000749 113 0 34 112 0.619 - 0/998 3365/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00567 0.00075 98 6 137 85 0.619 - 0/998 3366/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00567 0.000749 83 0 82 77 0.633 - 0/998 3367/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00566 0.00075 127 3 134 115 0.613 - 0/998 3368/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00566 0.00075 106 4 73 96 0.64 - 0/998 3369/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00566 0.000751 70 1 151 60 0.635 - 0/998 3370/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00566 0.000752 74 2 388 59 0.627 - 0/998 3371/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00566 0.000752 68 3 79 64 0.636 - 0/998 3372/3375 65.6 65.2 135 135 143 528 1.07e+03 0.00566 0.000754 148 6 109 129 0.634 - 0/998 3373/3375 65.7 65.2 135 135 143 528 1.07e+03 0.00566 0.000753 110 0 87 108 0.618 - 0/998 3374/3375 65.7 65.2 135 135 143 528 1.07e+03 0.00565 0.000754 68 2 134 63 0.64 - 0/998 3374/3375 65.7 65.2 135 135 143 528 1.07e+03 0.00565 0.000754 68 2 134 63 0.64 - 1/998 0/3375 103 114 168 241 250 943 1.82e+03 0.000676 0.00192 141 1 239 124 2.15 - 1/998 1/3375 98.8 102 163 208 210 774 1.55e+03 0.00244 0.00403 119 10 255 100 0.619 - 1/998 2/3375 78.6 79.8 134 168 165 619 1.24e+03 0.00216 0.00304 68 3 103 58 0.595 - 1/998 3/3375 71.2 70.9 124 145 146 563 1.12e+03 0.00153 0.00255 72 1 104 69 0.599 - 1/998 4/3375 77.3 76.2 137 164 163 625 1.24e+03 0.00172 0.00218 132 4 39 123 0.628 - 1/998 5/3375 71.1 69.5 128 146 151 571 1.14e+03 0.0024 0.0031 65 3 82 58 0.614 - 1/998 6/3375 68.6 67.3 127 140 141 538 1.08e+03 0.00225 0.00299 75 3 103 65 0.624 - 1/998 7/3375 68.8 68.4 125 138 140 530 1.07e+03 0.00224 0.00289 95 4 79 86 0.59 - 1/998 8/3375 68.1 67.7 123 140 138 523 1.06e+03 0.00212 0.00284 75 5 99 69 0.615 - 1/998 9/3375 65 64.7 119 132 131 498 1.01e+03 0.00216 0.00248 45 1 8 43 0.591 - 1/998 10/3375 64.8 64.2 116 129 130 497 1e+03 0.00227 0.00236 80 3 21 75 0.603 - 1/998 11/3375 63.1 63.3 113 127 127 487 981 0.00215 0.00235 68 3 35 62 0.607 - 1/998 12/3375 60.6 61.3 108 121 123 474 948 0.00215 0.00229 44 1 25 43 0.599 - 1/998 13/3375 62.7 62.4 113 123 126 493 980 0.00215 0.00209 112 3 34 105 0.602 - 1/998 14/3375 62.1 61.5 110 121 123 481 959 0.00213 0.00203 61 2 4 58 0.591 - 1/998 15/3375 62 60.8 112 120 124 491 970 0.00204 0.00198 77 0 10 75 0.589 - 1/998 16/3375 62.3 61 112 120 124 493 972 0.00203 0.00182 88 0 6 87 0.596 - 1/998 17/3375 62.9 61.1 112 120 123 491 970 0.00208 0.00178 81 3 35 78 0.611 - 1/998 18/3375 63.4 60.8 111 119 124 495 973 0.00187 0.00173 85 1 31 80 0.597 - 1/998 19/3375 61.4 59.3 108 116 121 482 948 0.00183 0.00171 45 1 54 42 0.59 - 1/998 20/3375 63 60.8 111 121 124 495 976 0.00181 0.00167 118 2 12 114 0.599 - 1/998 21/3375 62.4 60.8 111 120 124 495 973 0.00179 0.00164 75 1 35 74 0.593 - 1/998 22/3375 62.2 60.3 112 120 123 489 965 0.00175 0.00158 75 1 50 72 0.598 - 1/998 23/3375 63 61.1 113 122 123 489 971 0.00174 0.00159 101 5 71 93 0.633 - 1/998 24/3375 65.8 63.9 120 125 128 509 1.01e+03 0.0017 0.00146 171 0 33 168 0.643 - 1/998 25/3375 66.4 64.5 121 126 129 511 1.02e+03 0.00211 0.00177 118 7 79 108 0.645 - 1/998 26/3375 66.3 64.7 122 126 128 510 1.02e+03 0.00697 0.0025 94 7 91 83 0.627 - 1/998 27/3375 67.1 65.7 126 129 128 510 1.03e+03 0.00718 0.0025 125 5 100 117 0.645 - 1/998 28/3375 66.2 64.7 124 127 127 502 1.01e+03 0.00712 0.00247 64 1 52 62 0.61 - 1/998 29/3375 66.5 64.7 126 126 127 498 1.01e+03 0.0071 0.00238 93 1 29 91 0.641 - 1/998 30/3375 65.4 63.8 124 123 125 489 991 0.00658 0.00237 44 2 136 34 0.632 - 1/998 31/3375 64.3 62.9 122 122 123 481 975 0.00655 0.00245 48 7 150 40 0.63 - 1/998 32/3375 63.8 62.2 121 121 122 478 967 0.00657 0.00226 87 9 157 70 0.606 - 1/998 33/3375 63.8 62.5 121 121 122 480 971 0.00583 0.00219 92 6 252 82 0.612 - 1/998 34/3375 63.5 62.2 122 120 122 481 970 0.00578 0.00217 80 2 130 72 0.631 - 1/998 35/3375 63.3 62.5 121 120 122 481 970 0.00578 0.00218 95 5 107 86 0.637 - 1/998 36/3375 62.4 61.6 119 118 120 477 957 0.0053 0.00216 38 0 231 29 0.594 - 1/998 37/3375 62 61.1 118 116 118 472 947 0.00493 0.00223 44 7 410 30 0.632 - 1/998 38/3375 61.5 60.9 117 115 117 468 941 0.00488 0.00221 64 1 186 60 0.622 - 1/998 39/3375 61.2 60.7 117 115 117 466 937 0.00405 0.00215 72 1 135 64 0.592 - 1/998 40/3375 60.8 60.2 116 114 116 460 927 0.00404 0.00218 55 5 155 47 0.599 - 1/998 41/3375 61.2 60.9 117 115 117 464 935 0.00375 0.00215 109 2 85 102 0.608 - 1/998 42/3375 61.4 60.9 117 115 118 464 936 0.00361 0.00218 97 7 279 83 0.631 - 1/998 43/3375 61.3 61 117 115 118 462 935 0.00362 0.0022 90 7 153 77 0.621 - 1/998 44/3375 61.3 60.9 120 115 118 469 944 0.00326 0.00245 117 3 225 86 0.627 - 1/998 45/3375 60.5 60.1 119 114 116 463 932 0.00325 0.00246 35 3 92 31 0.577 - 1/998 46/3375 61.1 60.5 120 115 117 465 938 0.00337 0.00253 113 5 113 105 0.626 - 1/998 47/3375 60.8 60.4 120 114 116 464 935 0.00335 0.00254 68 4 188 57 0.615 - 1/998 48/3375 60.7 60.4 119 114 116 461 931 0.00335 0.00253 68 3 85 64 0.606 - 1/998 49/3375 60.2 60.1 118 113 115 460 926 0.00324 0.00247 56 0 84 54 0.608 - 1/998 50/3375 60.1 60.1 118 113 115 459 926 0.00324 0.00246 84 2 67 79 0.62 - 1/998 51/3375 59.8 60 117 113 115 458 922 0.00321 0.00254 67 4 136 57 0.614 - 1/998 52/3375 59.7 60 117 112 115 458 922 0.00322 0.00252 80 2 34 78 0.605 - 1/998 53/3375 60 60.1 117 113 115 463 929 0.00321 0.00253 94 1 48 90 0.621 - 1/998 54/3375 60.3 60.5 118 114 116 467 936 0.00322 0.00246 98 1 12 97 0.602 - 1/998 55/3375 61.3 61.1 120 115 119 472 947 0.00321 0.00238 134 0 16 130 0.605 - 1/998 56/3375 61.1 61 119 114 118 471 944 0.00313 0.00237 65 2 58 63 0.591 - 1/998 57/3375 61 61 119 113 118 471 944 0.00281 0.00236 77 2 40 72 0.604 - 1/998 58/3375 61 60.9 119 113 118 471 942 0.00281 0.00232 85 1 26 84 0.605 - 1/998 59/3375 60.6 60.6 118 112 117 467 936 0.0028 0.0023 60 1 17 58 0.599 - 1/998 60/3375 60.9 61.1 119 112 118 470 942 0.00281 0.00229 107 2 14 105 0.618 - 1/998 61/3375 60.6 60.7 118 112 118 469 938 0.00281 0.00228 56 0 25 54 0.582 - 1/998 62/3375 60.7 60.9 118 113 118 469 940 0.00283 0.00227 94 5 14 88 0.605 - 1/998 63/3375 60.7 60.9 119 113 118 468 940 0.00271 0.00229 93 6 133 82 0.613 - 1/998 64/3375 60.6 60.9 119 113 118 469 940 0.0027 0.00227 78 3 80 68 0.635 - 1/998 65/3375 60.5 61 118 113 118 467 938 0.00263 0.00224 72 0 39 69 0.59 - 1/998 66/3375 60.9 61.3 119 113 119 472 946 0.00257 0.00223 116 2 44 108 0.575 - 1/998 67/3375 60.8 61.2 120 114 119 472 946 0.00257 0.0022 77 0 28 75 0.588 - 1/998 68/3375 60.6 60.9 119 113 118 469 941 0.00257 0.0023 49 1 122 44 0.582 - 1/998 69/3375 60.1 60.5 118 112 117 467 935 0.00255 0.00231 42 2 172 39 0.582 - 1/998 70/3375 60.2 60.6 118 112 117 467 934 0.00254 0.00225 85 0 31 85 0.611 - 1/998 71/3375 59.9 60.4 117 111 117 465 931 0.00253 0.00226 70 4 143 61 0.592 - 1/998 72/3375 60.3 60.9 118 113 119 468 938 0.00251 0.00223 119 3 89 111 0.594 - 1/998 73/3375 60 60.6 117 112 118 464 931 0.0025 0.00225 53 7 162 43 0.559 - 1/998 74/3375 61 61.7 119 113 119 470 943 0.0025 0.00221 179 2 32 176 0.591 - 1/998 75/3375 61.2 61.9 119 113 120 471 946 0.00257 0.00229 109 5 154 101 0.607 - 1/998 76/3375 61.3 62 119 113 120 471 946 0.00254 0.0023 87 6 156 76 0.578 - 1/998 77/3375 61.2 61.9 119 113 119 471 946 0.00253 0.0023 70 0 53 67 0.585 - 1/998 78/3375 61.5 62 119 113 119 472 947 0.00245 0.00231 93 3 135 84 0.588 - 1/998 79/3375 61.6 62 119 113 119 473 947 0.00243 0.0023 68 0 89 66 0.57 - 1/998 80/3375 61.4 61.9 118 113 119 472 945 0.00234 0.0023 57 2 60 54 0.58 - 1/998 81/3375 61.1 61.7 118 112 118 471 941 0.00235 0.00233 60 1 60 56 0.591 - 1/998 82/3375 61.5 62.2 118 114 119 474 949 0.00224 0.00232 134 2 111 128 0.594 - 1/998 83/3375 61.4 62.1 118 113 119 473 946 0.00212 0.00233 68 4 61 57 0.599 - 1/998 84/3375 61.5 62.2 119 114 119 473 948 0.00209 0.00231 103 3 35 95 0.585 - 1/998 85/3375 61.3 62 118 114 119 473 947 0.00202 0.00231 58 2 91 55 0.571 - 1/998 86/3375 61.5 62 118 114 119 475 951 0.00201 0.0023 87 1 37 85 0.587 - 1/998 87/3375 61.1 61.7 118 114 118 472 945 0.00196 0.00229 35 0 76 34 0.58 - 1/998 88/3375 60.8 61.3 117 113 117 470 939 0.00193 0.00233 50 8 105 39 0.572 - 1/998 89/3375 60.9 61.4 118 113 117 471 941 0.00196 0.00235 77 3 46 71 0.594 - 1/998 90/3375 61.1 61.4 118 114 118 471 943 0.00195 0.00233 85 1 26 84 0.591 - 1/998 91/3375 61 61.2 118 113 117 471 941 0.0024 0.00253 71 7 80 58 0.581 - 1/998 92/3375 60.8 61 117 113 117 469 937 0.00237 0.00257 47 3 96 42 0.575 - 1/998 93/3375 60.8 61.1 117 113 117 468 937 0.00237 0.00255 88 1 21 87 0.581 - 1/998 94/3375 60.6 60.8 117 112 116 467 934 0.00236 0.00253 67 0 74 65 0.603 - 1/998 95/3375 60.7 60.9 117 113 116 467 936 0.00234 0.00253 91 6 30 83 0.577 - 1/998 96/3375 60.8 61.1 117 113 117 467 936 0.00223 0.00246 88 0 39 85 0.582 - 1/998 97/3375 60.7 61 117 113 116 466 934 0.00222 0.00244 70 3 81 61 0.602 - 1/998 98/3375 60.5 60.8 117 112 116 464 930 0.0022 0.00243 68 3 183 59 0.581 - 1/998 99/3375 60.5 60.8 116 112 116 464 929 0.0022 0.00242 70 1 56 65 0.584 - 1/998 100/3375 60.6 60.9 117 112 116 463 929 0.00221 0.00242 82 2 97 79 0.606 - 1/998 101/3375 60.6 60.7 117 112 115 463 928 0.00211 0.00241 59 0 71 57 0.596 - 1/998 102/3375 61 61.1 118 113 116 465 934 0.00211 0.00239 138 2 94 127 0.587 - 1/998 103/3375 61.2 61.3 118 115 117 465 936 0.0037 0.00278 102 9 113 90 0.59 - 1/998 104/3375 61.1 61.3 118 115 117 465 936 0.0037 0.00278 92 3 96 85 0.605 - 1/998 105/3375 61.4 61.7 118 115 118 468 942 0.00361 0.00274 98 3 98 89 0.587 - 1/998 106/3375 61.1 61.3 117 115 117 466 937 0.00361 0.00273 53 1 42 49 0.583 - 1/998 107/3375 60.9 61.2 117 114 117 465 935 0.0036 0.00272 59 1 41 57 0.593 - 1/998 108/3375 61.1 61.6 117 116 117 465 938 0.00348 0.00269 112 1 17 111 0.573 - 1/998 109/3375 61.6 61.8 118 116 118 467 942 0.00348 0.00267 136 3 29 130 0.608 - 1/998 110/3375 61.5 61.9 118 116 118 466 941 0.00349 0.00267 72 3 34 69 0.572 - 1/998 111/3375 61.5 61.7 117 116 118 465 939 0.00348 0.00266 55 0 31 55 0.578 - 1/998 112/3375 61.7 61.8 118 116 118 465 941 0.00348 0.00262 114 2 53 102 0.577 - 1/998 113/3375 61.7 61.8 118 116 119 465 942 0.0035 0.00263 105 9 29 92 0.59 - 1/998 114/3375 61.7 61.9 118 117 119 466 943 0.0035 0.00261 101 2 63 96 0.593 - 1/998 115/3375 61.9 62 119 117 119 467 947 0.00349 0.00259 96 4 92 84 0.59 - 1/998 116/3375 62 62.1 120 117 120 468 949 0.00351 0.0026 111 5 60 100 0.599 - 1/998 117/3375 62 62 120 117 120 468 948 0.00351 0.0026 72 0 59 69 0.579 - 1/998 118/3375 61.8 61.9 119 117 120 467 946 0.0035 0.00258 61 1 101 59 0.59 - 1/998 119/3375 62 62 120 117 120 467 947 0.00338 0.00257 96 0 116 94 0.586 - 1/998 120/3375 62 62 120 117 120 468 948 0.00335 0.00256 83 0 61 82 0.612 - 1/998 121/3375 62 61.8 120 116 120 467 946 0.00328 0.00256 68 5 159 53 0.588 - 1/998 122/3375 62.1 62.1 120 117 121 468 950 0.00327 0.00254 104 0 53 103 0.606 - 1/998 123/3375 62.4 62.2 120 117 121 470 954 0.00339 0.00273 106 6 109 95 0.588 - 1/998 124/3375 62.4 62.3 121 118 121 471 955 0.00338 0.00269 104 4 74 97 0.594 - 1/998 125/3375 62.4 62.2 120 117 121 470 954 0.0034 0.00272 70 3 156 57 0.596 - 1/998 126/3375 62.3 62.1 121 117 121 470 952 0.0034 0.00271 71 0 55 70 0.643 - 1/998 127/3375 62 61.8 120 117 120 468 949 0.00339 0.0027 47 0 37 47 0.579 - 1/998 128/3375 62.1 62 120 117 121 469 951 0.00329 0.00269 90 2 94 85 0.583 - 1/998 129/3375 62.1 61.9 120 117 120 468 950 0.00326 0.00268 79 1 81 76 0.589 - 1/998 130/3375 62.3 62.1 121 118 121 469 953 0.00325 0.00266 112 0 55 111 0.592 - 1/998 131/3375 62.4 62.1 121 118 121 470 954 0.00324 0.00266 93 4 40 87 0.597 - 1/998 132/3375 62.3 61.9 121 118 121 468 951 0.00321 0.00266 66 2 71 56 0.592 - 1/998 133/3375 62.1 61.8 120 117 120 467 948 0.00319 0.00264 50 0 55 50 0.584 - 1/998 134/3375 61.9 61.6 120 117 120 466 946 0.00317 0.00264 52 1 154 46 0.576 - 1/998 135/3375 61.8 61.4 120 116 120 466 945 0.00315 0.00263 54 0 97 50 0.594 - 1/998 136/3375 61.8 61.3 120 116 120 465 944 0.00315 0.00262 80 3 102 65 0.63 - 1/998 137/3375 61.6 61.2 119 116 119 463 940 0.00313 0.00263 52 5 92 46 0.595 - 1/998 138/3375 61.8 61.4 119 116 120 465 943 0.00312 0.00261 120 4 55 110 0.627 - 1/998 139/3375 61.7 61.2 119 116 119 464 940 0.00311 0.00261 50 2 74 46 0.601 - 1/998 140/3375 61.5 61 119 115 119 462 937 0.00309 0.00261 43 4 236 37 0.608 - 1/998 141/3375 61.5 60.9 118 115 119 462 936 0.00311 0.00264 73 2 73 68 0.606 - 1/998 142/3375 61.7 61.1 119 115 119 463 939 0.00311 0.00263 117 4 28 112 0.609 - 1/998 143/3375 61.7 61.2 119 116 119 462 939 0.0031 0.00262 97 4 67 86 0.614 - 1/998 144/3375 61.6 61.2 119 116 119 462 938 0.00309 0.00261 69 0 66 67 0.616 - 1/998 145/3375 61.5 61.1 118 115 119 461 937 0.00309 0.0026 70 2 35 63 0.594 - 1/998 146/3375 61.4 61 118 115 119 461 935 0.00309 0.00259 61 1 27 60 0.617 - 1/998 147/3375 61.3 60.8 118 115 118 459 933 0.00307 0.0026 54 4 301 42 0.612 - 1/998 148/3375 61.2 60.7 118 115 118 458 931 0.00307 0.00263 65 7 343 43 0.613 - 1/998 149/3375 61 60.6 118 114 118 458 929 0.00307 0.00264 62 6 128 50 0.617 - 1/998 150/3375 61.1 60.6 118 114 118 458 929 0.00307 0.00266 98 4 145 88 0.597 - 1/998 151/3375 61.2 60.7 118 114 118 458 930 0.00308 0.00268 100 6 82 90 0.595 - 1/998 152/3375 61.1 60.6 117 114 118 458 929 0.00307 0.00269 62 4 151 56 0.607 - 1/998 153/3375 61.1 60.6 117 114 118 458 930 0.00307 0.00267 92 2 79 89 0.611 - 1/998 154/3375 61.2 60.7 118 115 118 458 931 0.00308 0.00268 108 8 78 95 0.611 - 1/998 155/3375 61.2 60.7 118 115 118 459 931 0.00309 0.00271 82 3 137 74 0.618 - 1/998 156/3375 61.2 60.7 118 115 118 459 932 0.00304 0.00269 103 9 323 80 0.636 - 1/998 157/3375 61.3 60.9 118 115 118 459 932 0.00303 0.0027 95 2 107 83 0.592 - 1/998 158/3375 61.2 60.8 118 115 118 458 931 0.00298 0.0027 54 3 77 48 0.607 - 1/998 159/3375 61 60.7 117 115 118 457 929 0.00298 0.0027 64 1 68 62 0.613 - 1/998 160/3375 61.2 60.8 117 115 118 459 932 0.00298 0.00269 104 3 73 97 0.624 - 1/998 161/3375 61.1 60.7 117 115 118 458 930 0.0032 0.00276 56 3 87 49 0.612 - 1/998 162/3375 60.9 60.7 117 115 118 457 928 0.00319 0.00276 55 1 77 53 0.62 - 1/998 163/3375 60.9 60.7 117 115 118 457 928 0.00319 0.00276 79 7 83 70 0.616 - 1/998 164/3375 61 60.7 117 115 118 457 928 0.00319 0.00276 82 3 59 78 0.609 - 1/998 165/3375 61 60.8 117 114 118 457 928 0.00318 0.00273 93 2 63 86 0.603 - 1/998 166/3375 61.1 60.8 117 115 118 457 928 0.00318 0.00272 97 3 35 92 0.594 - 1/998 167/3375 61 60.7 117 114 117 456 927 0.0031 0.00273 74 4 90 61 0.607 - 1/998 168/3375 61 60.6 117 115 117 456 926 0.0031 0.00274 67 7 94 58 0.611 - 1/998 169/3375 60.8 60.5 117 114 117 456 925 0.0031 0.00274 61 1 81 60 0.636 - 1/998 170/3375 60.7 60.4 117 114 117 455 924 0.00308 0.00278 68 5 107 61 0.629 - 1/998 171/3375 60.7 60.4 117 114 117 455 923 0.00303 0.00278 65 1 40 60 0.608 - 1/998 172/3375 60.5 60.3 116 113 117 454 921 0.00303 0.00279 58 6 134 45 0.611 - 1/998 173/3375 60.4 60.2 116 113 116 454 920 0.00294 0.0028 49 2 191 41 0.608 - 1/998 174/3375 60.2 60 116 113 116 452 917 0.00291 0.00279 38 1 120 30 0.621 - 1/998 175/3375 60.1 59.8 115 112 116 452 915 0.00289 0.00279 49 0 25 47 0.603 - 1/998 176/3375 60.1 59.9 115 112 116 451 914 0.00288 0.00278 90 2 72 83 0.627 - 1/998 177/3375 60.1 59.9 115 113 116 452 915 0.00286 0.00277 78 0 53 76 0.597 - 1/998 178/3375 60 59.8 115 112 116 451 914 0.00284 0.00277 50 3 153 42 0.609 - 1/998 179/3375 59.9 59.8 115 112 115 451 913 0.00284 0.00277 70 2 60 67 0.619 - 1/998 180/3375 59.9 59.8 115 112 116 451 913 0.00279 0.00276 81 1 51 78 0.611 - 1/998 181/3375 59.8 59.7 115 112 115 450 911 0.00278 0.00275 53 1 72 51 0.608 - 1/998 182/3375 59.6 59.5 114 112 115 449 909 0.00278 0.00274 36 0 96 34 0.611 - 1/998 183/3375 59.4 59.4 114 111 115 448 907 0.00278 0.00274 58 3 122 52 0.606 - 1/998 184/3375 59.5 59.4 114 111 115 448 907 0.00278 0.00274 88 3 36 83 0.611 - 1/998 185/3375 59.4 59.4 114 111 115 447 906 0.00271 0.00273 62 1 44 58 0.606 - 1/998 186/3375 59.6 59.5 114 111 115 449 908 0.00271 0.00272 119 0 40 116 0.62 - 1/998 187/3375 59.8 59.7 114 112 115 449 910 0.00271 0.00271 106 4 61 99 0.601 - 1/998 188/3375 59.8 59.8 114 112 115 450 911 0.00271 0.0027 83 0 66 83 0.618 - 1/998 189/3375 59.7 59.7 114 111 115 449 909 0.00271 0.0027 61 3 84 50 0.601 - 1/998 190/3375 59.6 59.6 114 111 115 449 908 0.00271 0.00269 61 0 27 59 0.613 - 1/998 191/3375 59.6 59.7 114 111 115 448 908 0.00271 0.00268 73 0 34 73 0.608 - 1/998 192/3375 59.6 59.6 114 111 115 448 907 0.00271 0.00268 63 1 47 61 0.607 - 1/998 193/3375 59.4 59.5 114 111 115 448 906 0.00269 0.00267 64 2 57 60 0.599 - 1/998 194/3375 59.4 59.4 113 111 114 447 904 0.00269 0.00267 54 1 86 51 0.623 - 1/998 195/3375 59.3 59.3 113 110 114 446 903 0.00268 0.00266 50 1 29 49 0.611 - 1/998 196/3375 59.3 59.2 113 110 114 446 903 0.00268 0.00267 84 3 94 79 0.628 - 1/998 197/3375 59.2 59.1 113 110 114 446 901 0.00268 0.00267 54 2 69 50 0.604 - 1/998 198/3375 59.2 59.2 113 110 114 446 901 0.003 0.0029 116 6 47 103 0.609 - 1/998 199/3375 59.2 59.2 113 110 114 446 901 0.003 0.00291 87 7 175 73 0.629 - 1/998 200/3375 59.1 59 113 110 114 445 900 0.003 0.00292 60 5 134 43 0.602 - 1/998 201/3375 59.1 59 113 110 114 445 899 0.00295 0.0029 63 1 47 57 0.62 - 1/998 202/3375 59.2 59.2 113 110 114 446 901 0.00291 0.0029 113 3 59 105 0.606 - 1/998 203/3375 59.1 59.1 113 110 114 445 900 0.00272 0.00289 51 8 209 38 0.602 - 1/998 204/3375 59 59.1 113 110 114 445 899 0.00271 0.00294 65 7 214 50 0.609 - 1/998 205/3375 59 59 113 110 114 445 900 0.00271 0.00295 83 5 92 77 0.601 - 1/998 206/3375 58.9 59 113 110 114 445 899 0.00268 0.00295 72 7 255 61 0.621 - 1/998 207/3375 59 59.1 113 110 114 446 901 0.00269 0.00297 106 3 145 100 0.607 - 1/998 208/3375 59 59.1 113 110 114 446 901 0.00283 0.00311 104 15 296 83 0.626 - 1/998 209/3375 58.9 59 113 110 114 446 900 0.00284 0.00313 61 5 174 50 0.611 - 1/998 210/3375 59 59 113 110 114 447 901 0.00283 0.00312 80 0 94 76 0.636 - 1/998 211/3375 59 59 113 110 114 446 900 0.00284 0.00315 80 3 112 74 0.613 - 1/998 212/3375 59 59 113 110 114 447 901 0.00286 0.00318 103 5 125 96 0.609 - 1/998 213/3375 59 59.1 113 110 114 447 902 0.00281 0.00319 89 4 165 79 0.605 - 1/998 214/3375 59.1 59.1 113 110 114 448 902 0.0028 0.00319 79 4 71 75 0.583 - 1/998 215/3375 59.2 59.2 113 110 114 448 903 0.0028 0.00323 116 10 277 87 0.62 - 1/998 216/3375 59.1 59.1 112 110 114 448 902 0.00276 0.00323 66 1 72 64 0.592 - 1/998 217/3375 59.3 59.2 112 110 114 449 904 0.00276 0.00322 110 3 93 106 0.623 - 1/998 218/3375 59.4 59.4 112 110 115 449 906 0.00276 0.00321 105 1 31 101 0.611 - 1/998 219/3375 59.5 59.4 113 111 115 450 907 0.00275 0.00321 102 3 49 97 0.605 - 1/998 220/3375 59.6 59.5 113 111 115 450 908 0.0027 0.0032 109 1 100 103 0.617 - 1/998 221/3375 59.7 59.5 113 111 115 451 908 0.00267 0.00319 98 3 105 92 0.616 - 1/998 222/3375 59.6 59.4 113 111 115 450 907 0.00269 0.00323 62 4 93 56 0.6 - 1/998 223/3375 59.6 59.4 112 111 115 450 907 0.00266 0.00323 62 1 83 59 0.61 - 1/998 224/3375 59.6 59.5 113 111 115 451 908 0.00266 0.00322 110 2 32 108 0.625 - 1/998 225/3375 59.7 59.6 113 111 115 452 911 0.00266 0.00321 114 0 5 113 0.627 - 1/998 226/3375 59.6 59.5 112 111 115 451 909 0.00266 0.00322 44 3 91 40 0.615 - 1/998 227/3375 59.6 59.4 112 110 115 451 908 0.00266 0.00321 65 3 50 61 0.595 - 1/998 228/3375 59.6 59.4 112 110 115 451 908 0.00266 0.00321 89 1 41 86 0.616 - 1/998 229/3375 59.7 59.4 112 110 115 452 909 0.00266 0.00319 111 2 33 107 0.596 - 1/998 230/3375 59.6 59.4 112 110 115 452 909 0.00264 0.00319 74 1 62 71 0.639 - 1/998 231/3375 59.6 59.4 112 110 115 451 907 0.00262 0.00319 59 2 62 54 0.602 - 1/998 232/3375 59.6 59.4 112 110 115 451 908 0.00262 0.00319 70 2 30 65 0.622 - 1/998 233/3375 59.6 59.4 112 110 115 451 908 0.00259 0.00324 84 6 201 74 0.589 - 1/998 234/3375 59.8 59.6 113 111 116 453 911 0.00257 0.00319 155 3 51 150 0.629 - 1/998 235/3375 59.8 59.6 112 111 116 453 911 0.00254 0.00323 90 5 222 75 0.619 - 1/998 236/3375 59.8 59.6 112 111 116 453 911 0.00254 0.00322 77 1 50 76 0.601 - 1/998 237/3375 59.7 59.5 112 110 116 452 910 0.00252 0.00323 53 2 54 49 0.594 - 1/998 238/3375 59.7 59.5 112 110 116 452 909 0.00248 0.00322 72 3 230 63 0.607 - 1/998 239/3375 59.8 59.5 112 111 116 452 910 0.00245 0.00321 110 7 165 96 0.618 - 1/998 240/3375 59.7 59.4 112 110 116 452 909 0.00244 0.00321 47 2 97 45 0.598 - 1/998 241/3375 59.8 59.4 112 111 116 453 910 0.00244 0.00321 111 2 120 102 0.624 - 1/998 242/3375 59.8 59.5 113 111 116 453 911 0.00244 0.00321 93 1 56 89 0.617 - 1/998 243/3375 59.9 59.6 113 111 116 454 913 0.00244 0.0032 117 4 56 108 0.606 - 1/998 244/3375 60 59.6 113 111 116 454 913 0.00244 0.00321 103 7 183 84 0.617 - 1/998 245/3375 59.9 59.5 113 111 116 453 912 0.00244 0.00321 52 1 119 40 0.609 - 1/998 246/3375 60 59.5 113 111 116 454 913 0.00261 0.00324 107 16 448 71 0.601 - 1/998 247/3375 59.9 59.5 113 111 116 453 912 0.00261 0.00325 63 4 151 58 0.607 - 1/998 248/3375 59.8 59.4 113 111 116 453 911 0.00258 0.00324 50 0 226 49 0.608 - 1/998 249/3375 59.7 59.4 113 111 116 452 910 0.00254 0.00324 69 5 186 58 0.618 - 1/998 250/3375 59.9 59.5 113 111 116 453 911 0.00252 0.00323 112 3 106 107 0.602 - 1/998 251/3375 59.9 59.6 113 111 116 453 913 0.00252 0.00323 109 5 102 96 0.635 - 1/998 252/3375 59.8 59.4 113 111 115 452 910 0.0025 0.00323 27 1 131 25 0.607 - 1/998 253/3375 59.8 59.4 113 111 115 452 910 0.00248 0.00323 88 5 205 76 0.599 - 1/998 254/3375 59.7 59.4 113 111 115 452 910 0.00246 0.00323 70 5 289 56 0.603 - 1/998 255/3375 59.8 59.5 113 111 115 452 911 0.00246 0.00325 108 14 188 81 0.618 - 1/998 256/3375 59.9 59.6 113 111 116 453 912 0.00245 0.00326 105 4 105 90 0.628 - 1/998 257/3375 59.8 59.5 113 111 116 452 911 0.00245 0.00325 64 0 96 63 0.619 - 1/998 258/3375 59.8 59.4 113 111 115 452 910 0.00244 0.00325 60 1 90 56 0.601 - 1/998 259/3375 59.7 59.4 113 110 115 452 909 0.00244 0.00326 67 7 138 56 0.604 - 1/998 260/3375 59.7 59.3 113 110 115 452 909 0.00244 0.00324 74 1 147 70 0.605 - 1/998 261/3375 59.7 59.4 113 111 115 452 910 0.00243 0.00323 92 0 90 92 0.588 - 1/998 262/3375 59.8 59.5 113 111 115 452 911 0.00243 0.00322 91 2 61 87 0.599 - 1/998 263/3375 59.9 59.5 113 111 116 453 912 0.00243 0.00321 108 1 55 104 0.613 - 1/998 264/3375 59.8 59.4 113 111 115 452 911 0.00329 0.0033 54 11 88 40 0.609 - 1/998 265/3375 59.8 59.4 113 111 115 451 910 0.00457 0.0035 71 11 264 45 0.61 - 1/998 266/3375 59.8 59.5 113 111 115 452 911 0.00457 0.0035 113 4 42 106 0.604 - 1/998 267/3375 59.8 59.5 113 111 115 452 911 0.00457 0.0035 85 5 80 71 0.606 - 1/998 268/3375 59.8 59.4 113 111 115 451 910 0.00457 0.00351 52 3 77 46 0.597 - 1/998 269/3375 59.7 59.4 113 111 115 451 909 0.00457 0.00351 69 6 215 58 0.619 - 1/998 270/3375 59.6 59.3 113 111 115 451 908 0.00456 0.0035 50 0 175 43 0.622 - 1/998 271/3375 59.5 59.2 113 110 115 450 906 0.00508 0.00361 55 7 346 38 0.608 - 1/998 272/3375 59.4 59 112 110 115 449 905 0.00508 0.00361 53 4 258 42 0.609 - 1/998 273/3375 59.4 59.1 112 110 115 449 905 0.00508 0.00363 95 6 165 79 0.627 - 1/998 274/3375 59.5 59.1 112 110 115 449 905 0.00506 0.00362 92 5 133 81 0.638 - 1/998 275/3375 59.4 59 112 110 114 448 904 0.00506 0.00363 49 3 118 45 0.615 - 1/998 276/3375 59.4 58.9 112 110 114 448 903 0.00505 0.00362 67 1 376 56 0.604 - 1/998 277/3375 59.3 58.9 112 110 114 447 902 0.00505 0.00362 46 4 187 36 0.597 - 1/998 278/3375 59.3 58.8 112 110 114 447 902 0.00504 0.00363 81 7 209 68 0.619 - 1/998 279/3375 59.3 58.8 112 110 114 447 902 0.00497 0.00362 86 1 85 78 0.613 - 1/998 280/3375 59.3 58.8 112 110 114 447 901 0.00496 0.00361 64 7 272 52 0.6 - 1/998 281/3375 59.3 58.8 112 110 114 447 901 0.00505 0.00367 109 9 166 94 0.605 - 1/998 282/3375 59.4 58.8 112 110 114 447 901 0.00505 0.00367 87 1 133 83 0.617 - 1/998 283/3375 59.4 58.9 112 110 114 447 901 0.00505 0.00367 85 4 72 78 0.625 - 1/998 284/3375 59.4 58.9 112 110 114 447 901 0.00497 0.00366 83 2 89 77 0.613 - 1/998 285/3375 59.5 58.9 112 110 115 448 903 0.00498 0.00368 131 4 116 118 0.622 - 1/998 286/3375 59.5 58.9 112 110 115 448 903 0.00498 0.00367 91 3 75 84 0.615 - 1/998 287/3375 59.5 59 112 110 115 448 903 0.00497 0.00367 88 3 161 70 0.605 - 1/998 288/3375 59.5 58.9 112 110 115 448 903 0.00497 0.00367 62 5 183 51 0.605 - 1/998 289/3375 59.6 59.1 112 110 115 449 904 0.00487 0.00367 111 2 120 98 0.602 - 1/998 290/3375 59.5 59 112 110 115 449 904 0.00486 0.00366 79 3 142 66 0.609 - 1/998 291/3375 59.5 59 112 110 115 449 904 0.00485 0.00365 88 4 53 80 0.6 - 1/998 292/3375 59.5 59 112 110 115 448 904 0.00567 0.00378 93 6 127 77 0.614 - 1/998 293/3375 59.4 59 112 110 115 448 902 0.00567 0.00377 58 4 89 52 0.608 - 1/998 294/3375 59.4 58.9 112 110 114 447 902 0.00566 0.00377 69 2 96 65 0.606 - 1/998 295/3375 59.5 59 112 110 114 448 902 0.00567 0.00377 114 3 104 107 0.622 - 1/998 296/3375 59.5 59 112 110 115 448 903 0.00591 0.00377 88 9 264 71 0.619 - 1/998 297/3375 59.5 59 112 110 115 448 903 0.00591 0.00377 76 2 49 73 0.616 - 1/998 298/3375 59.5 59 112 110 115 448 903 0.0059 0.00378 65 2 102 61 0.627 - 1/998 299/3375 59.4 59 112 110 114 447 902 0.0059 0.00377 64 3 45 60 0.627 - 1/998 300/3375 59.4 59 112 110 114 448 903 0.0059 0.00377 90 7 130 74 0.617 - 1/998 301/3375 59.4 58.9 112 110 114 448 903 0.00588 0.00376 77 1 87 70 0.609 - 1/998 302/3375 59.4 58.9 112 110 114 448 902 0.00586 0.00377 69 5 111 60 0.628 - 1/998 303/3375 59.4 59 112 110 114 448 903 0.00586 0.00376 95 2 29 92 0.612 - 1/998 304/3375 59.4 58.9 112 110 114 448 903 0.00586 0.00374 84 3 120 71 0.623 - 1/998 305/3375 59.3 58.9 112 110 114 447 902 0.00585 0.00374 50 0 87 47 0.606 - 1/998 306/3375 59.4 58.9 112 110 114 448 903 0.00586 0.00373 88 1 31 87 0.621 - 1/998 307/3375 59.4 58.9 112 110 114 448 903 0.00642 0.0038 71 2 125 65 0.634 - 1/998 308/3375 59.4 58.9 112 110 114 448 903 0.0063 0.0038 93 14 126 75 0.64 - 1/998 309/3375 59.3 58.9 112 110 114 448 901 0.0063 0.0038 57 6 136 43 0.723 - 1/998 310/3375 59.4 59 112 110 114 448 902 0.00629 0.00379 103 0 74 102 0.668 - 1/998 311/3375 59.3 59 112 110 114 448 902 0.00627 0.00378 72 1 143 61 0.687 - 1/998 312/3375 59.3 58.9 112 110 114 447 900 0.00626 0.00377 59 3 138 49 0.615 - 1/998 313/3375 59.4 59.1 112 110 114 448 903 0.00621 0.00378 138 7 123 124 0.692 - 1/998 314/3375 59.4 59.1 112 110 114 448 903 0.0061 0.00384 81 9 249 58 0.693 - 1/998 315/3375 59.4 59.1 112 110 115 448 904 0.0061 0.00384 89 0 89 86 0.63 - 1/998 316/3375 59.4 59.1 112 110 115 448 904 0.0061 0.00386 75 2 114 69 0.65 - 1/998 317/3375 59.4 59.1 112 110 115 448 904 0.00608 0.00386 79 3 119 74 0.627 - 1/998 318/3375 59.3 59.1 112 110 114 448 903 0.00607 0.00385 65 3 83 58 0.624 - 1/998 319/3375 59.3 59.1 112 110 114 448 903 0.00607 0.00385 76 2 78 73 0.633 - 1/998 320/3375 59.3 59.1 112 110 114 448 902 0.00607 0.00384 59 0 136 56 0.619 - 1/998 321/3375 59.3 59 112 110 114 447 902 0.00583 0.00386 57 3 114 51 0.652 - 1/998 322/3375 59.4 59.1 112 110 115 448 903 0.00582 0.00386 132 5 131 121 0.628 - 1/998 323/3375 59.5 59.2 112 110 115 448 904 0.00572 0.00386 99 5 137 90 0.622 - 1/998 324/3375 59.5 59.2 112 110 115 449 905 0.00572 0.00388 93 5 217 79 0.639 - 1/998 325/3375 59.5 59.2 112 110 115 449 905 0.00571 0.00388 86 2 127 80 0.619 - 1/998 326/3375 59.5 59.2 112 110 115 449 905 0.00563 0.00387 81 1 166 74 0.622 - 1/998 327/3375 59.4 59.2 112 110 115 449 905 0.00563 0.00392 72 8 244 55 0.626 - 1/998 328/3375 59.4 59.2 112 110 115 449 905 0.00561 0.00392 62 2 143 51 0.613 - 1/998 329/3375 59.4 59.2 112 110 115 450 905 0.00601 0.00398 93 4 154 83 0.62 - 1/998 330/3375 59.4 59.3 112 110 115 450 906 0.0059 0.00397 79 0 272 74 0.635 - 1/998 331/3375 59.4 59.2 112 110 115 450 905 0.00589 0.00397 49 1 117 45 0.615 - 1/998 332/3375 59.5 59.3 112 110 115 450 905 0.00582 0.00398 89 8 151 75 0.616 - 1/998 333/3375 59.4 59.2 112 110 114 450 905 0.00581 0.00398 55 1 73 51 0.608 - 1/998 334/3375 59.3 59.2 112 109 114 450 904 0.00581 0.00398 52 2 61 47 0.621 - 1/998 335/3375 59.3 59.1 112 109 114 449 903 0.0058 0.00398 54 0 61 54 0.611 - 1/998 336/3375 59.2 59 112 109 114 449 902 0.00579 0.00398 49 0 148 49 0.609 - 1/998 337/3375 59.1 59 112 109 114 448 901 0.00577 0.00396 61 2 68 56 0.62 - 1/998 338/3375 59.1 59 111 109 114 448 900 0.00576 0.00396 59 4 145 53 0.631 - 1/998 339/3375 59.1 59 112 109 114 448 901 0.0058 0.00398 87 4 80 77 0.603 - 1/998 340/3375 59.2 59 112 109 114 449 902 0.0058 0.00397 131 4 72 116 0.641 - 1/998 341/3375 59.2 59.1 112 109 114 449 903 0.00578 0.00396 85 6 152 76 0.613 - 1/998 342/3375 59.2 59.1 112 109 114 449 902 0.00577 0.00396 84 9 167 64 0.623 - 1/998 343/3375 59.3 59.1 112 109 114 449 903 0.00577 0.00401 108 9 183 92 0.602 - 1/998 344/3375 59.3 59.1 112 109 114 449 902 0.00577 0.00402 57 5 145 51 0.596 - 1/998 345/3375 59.2 59 112 109 114 449 902 0.00575 0.00403 77 9 192 66 0.596 - 1/998 346/3375 59.2 59 112 109 114 449 902 0.00575 0.00403 98 8 209 77 0.609 - 1/998 347/3375 59.2 59 112 109 114 448 902 0.00573 0.00401 62 1 90 59 0.616 - 1/998 348/3375 59.2 58.9 112 109 114 448 901 0.00573 0.00401 54 1 148 50 0.618 - 1/998 349/3375 59.2 58.9 112 109 114 448 901 0.00563 0.004 72 3 146 68 0.605 - 1/998 350/3375 59.2 58.9 112 109 114 448 901 0.0056 0.00401 85 7 169 68 0.617 - 1/998 351/3375 59.2 58.9 112 109 114 448 901 0.0056 0.00401 93 3 213 80 0.609 - 1/998 352/3375 59.3 59 112 109 114 449 902 0.00558 0.00399 117 2 80 109 0.627 - 1/998 353/3375 59.2 58.9 112 109 114 448 901 0.00558 0.00399 55 6 124 43 0.615 - 1/998 354/3375 59.2 58.8 112 109 114 447 900 0.00557 0.00398 51 2 110 44 0.617 - 1/998 355/3375 59.1 58.7 112 109 114 447 899 0.00557 0.00398 40 2 174 35 0.62 - 1/998 356/3375 59.1 58.8 112 109 114 447 899 0.00556 0.00398 91 7 286 74 0.613 - 1/998 357/3375 59.2 58.8 112 109 114 447 900 0.00556 0.00397 95 2 49 92 0.62 - 1/998 358/3375 59.2 58.9 112 109 114 447 900 0.00556 0.00397 98 9 147 88 0.609 - 1/998 359/3375 59.2 59 112 109 114 448 901 0.00556 0.00395 111 2 111 106 0.619 - 1/998 360/3375 59.3 59 112 109 114 448 901 0.00556 0.00396 92 2 194 81 0.628 - 1/998 361/3375 59.3 59 112 109 114 448 901 0.00556 0.00395 82 12 185 64 0.628 - 1/998 362/3375 59.2 59 112 109 114 448 901 0.00553 0.00394 69 0 59 69 0.618 - 1/998 363/3375 59.2 59 112 109 114 447 900 0.00552 0.00394 87 8 301 70 0.615 - 1/998 364/3375 59.2 59 112 109 114 447 900 0.00547 0.00394 82 7 303 66 0.639 - 1/998 365/3375 59.2 59 112 109 114 447 900 0.00546 0.00394 67 3 282 51 0.616 - 1/998 366/3375 59.2 59 112 109 114 447 900 0.00538 0.00395 96 4 303 81 0.654 - 1/998 367/3375 59.2 58.9 112 109 114 447 899 0.00538 0.00396 49 5 214 43 0.638 - 1/998 368/3375 59.2 58.9 112 109 114 447 899 0.0053 0.00396 94 10 446 71 0.622 - 1/998 369/3375 59.2 58.9 111 109 114 446 899 0.00528 0.00397 75 11 233 51 0.607 - 1/998 370/3375 59.2 58.9 111 109 114 447 899 0.00525 0.00397 84 6 271 66 0.644 - 1/998 371/3375 59.2 58.9 111 109 114 446 898 0.0052 0.00397 63 4 188 54 0.627 - 1/998 372/3375 59.2 58.8 111 109 113 446 897 0.0052 0.00399 65 4 269 56 0.629 - 1/998 373/3375 59.2 58.9 111 109 113 446 898 0.00518 0.00402 90 11 260 72 0.627 - 1/998 374/3375 59.3 59 112 109 114 447 900 0.00516 0.00404 144 13 407 117 0.618 - 1/998 375/3375 59.3 59 112 109 114 446 899 0.00516 0.00406 69 8 342 57 0.627 - 1/998 376/3375 59.3 58.9 112 109 114 446 899 0.00516 0.00405 85 5 120 75 0.625 - 1/998 377/3375 59.4 59 112 109 114 447 900 0.00516 0.00404 107 1 61 105 0.608 - 1/998 378/3375 59.3 59 112 109 114 447 899 0.00514 0.00404 48 3 176 43 0.623 - 1/998 379/3375 59.3 59 112 109 114 447 899 0.00514 0.00403 75 2 106 70 0.63 - 1/998 380/3375 59.3 59 112 109 114 447 899 0.00514 0.00403 77 0 84 75 0.613 - 1/998 381/3375 59.3 59 112 109 114 447 900 0.00513 0.00403 91 7 177 72 0.617 - 1/998 382/3375 59.2 58.9 112 109 114 446 899 0.00512 0.00402 58 3 166 50 0.612 - 1/998 383/3375 59.3 59 112 109 114 447 899 0.00512 0.00402 99 3 26 96 0.645 - 1/998 384/3375 59.3 58.9 112 109 114 446 899 0.00511 0.00401 72 2 81 67 0.614 - 1/998 385/3375 59.3 59 112 109 114 446 899 0.00511 0.004 81 2 70 77 0.597 - 1/998 386/3375 59.3 59 112 109 114 446 899 0.00511 0.004 90 4 83 86 0.613 - 1/998 387/3375 59.3 58.9 112 109 114 446 899 0.0051 0.00399 61 0 51 58 0.585 - 1/998 388/3375 59.3 59 112 109 114 447 900 0.00509 0.00398 107 2 83 100 0.609 - 1/998 389/3375 59.3 59 112 109 114 447 900 0.00509 0.00399 62 6 115 54 0.619 - 1/998 390/3375 59.3 58.9 112 109 114 446 899 0.00509 0.00398 67 4 108 62 0.65 - 1/998 391/3375 59.2 58.9 112 109 114 446 899 0.00509 0.00398 69 2 38 65 0.595 - 1/998 392/3375 59.2 58.9 112 109 113 446 899 0.005 0.004 64 3 111 57 0.607 - 1/998 393/3375 59.2 58.9 112 109 113 446 899 0.00507 0.00405 84 2 18 79 0.603 - 1/998 394/3375 59.3 59 112 109 114 446 899 0.00507 0.00403 102 3 60 96 0.601 - 1/998 395/3375 59.3 59 112 109 114 446 899 0.00501 0.004 85 6 121 74 0.594 - 1/998 396/3375 59.3 59 112 109 114 446 899 0.00565 0.00412 92 2 43 89 0.595 - 1/998 397/3375 59.3 59 112 109 113 446 899 0.00565 0.00411 79 0 83 71 0.593 - 1/998 398/3375 59.3 59 112 109 114 446 899 0.00563 0.00411 74 5 74 65 0.597 - 1/998 399/3375 59.2 59 112 109 113 446 899 0.00563 0.00411 52 3 59 46 0.593 - 1/998 400/3375 59.2 59 112 109 113 446 899 0.00563 0.00411 91 2 37 85 0.599 - 1/998 401/3375 59.2 59 112 109 113 446 898 0.00562 0.00411 67 4 45 62 0.598 - 1/998 402/3375 59.2 59 112 109 113 445 898 0.00562 0.0041 63 2 23 61 0.59 - 1/998 403/3375 59.1 58.9 112 109 113 445 897 0.00562 0.0041 37 0 69 35 0.59 - 1/998 404/3375 59.2 59 112 109 113 445 898 0.00557 0.00409 100 0 26 99 0.595 - 1/998 405/3375 59.2 59 112 109 113 445 898 0.00557 0.00409 68 4 99 61 0.596 - 1/998 406/3375 59.2 59.1 112 109 113 446 899 0.00556 0.00408 113 3 68 108 0.614 - 1/998 407/3375 59.2 59.1 112 109 113 446 899 0.00557 0.00409 83 10 86 67 0.593 - 1/998 408/3375 59.2 59.1 112 109 113 446 899 0.00557 0.00408 81 1 25 76 0.606 - 1/998 409/3375 59.2 59.1 112 109 113 446 899 0.00557 0.00407 68 1 34 66 0.588 - 1/998 410/3375 59.2 59.1 112 109 113 446 899 0.00557 0.00407 123 8 64 109 0.594 - 1/998 411/3375 59.2 59.2 112 109 113 446 899 0.00557 0.00406 93 5 118 84 0.599 - 1/998 412/3375 59.2 59.1 112 109 113 446 899 0.00557 0.00406 77 2 129 71 0.6 - 1/998 413/3375 59.2 59.2 112 109 114 446 899 0.00556 0.00405 84 1 22 81 0.598 - 1/998 414/3375 59.3 59.2 112 109 114 447 900 0.00556 0.00405 130 7 94 117 0.608 - 1/998 415/3375 59.3 59.2 112 109 114 447 901 0.00556 0.00405 86 5 82 75 0.605 - 1/998 416/3375 59.3 59.2 112 109 114 447 900 0.00554 0.00404 62 2 99 59 0.595 - 1/998 417/3375 59.4 59.3 112 109 114 447 901 0.00554 0.00404 131 16 143 103 0.607 - 1/998 418/3375 59.3 59.2 112 109 114 447 901 0.00554 0.00405 64 11 196 47 0.612 - 1/998 419/3375 59.3 59.2 112 109 114 447 900 0.00555 0.00405 86 9 147 68 0.628 - 1/998 420/3375 59.3 59.2 112 109 114 447 900 0.00543 0.00405 65 1 130 59 0.603 - 1/998 421/3375 59.3 59.2 112 109 114 447 901 0.00542 0.00405 107 11 196 92 0.601 - 1/998 422/3375 59.4 59.3 112 109 114 447 901 0.00542 0.00405 91 3 47 82 0.606 - 1/998 423/3375 59.4 59.4 112 110 114 447 902 0.00541 0.00404 95 3 48 90 0.605 - 1/998 424/3375 59.5 59.4 112 110 114 448 903 0.00526 0.00403 124 3 160 111 0.609 - 1/998 425/3375 59.5 59.5 112 110 114 448 903 0.00526 0.00403 77 2 85 74 0.595 - 1/998 426/3375 59.5 59.4 112 110 114 448 903 0.00525 0.00402 84 3 74 74 0.604 - 1/998 427/3375 59.6 59.5 113 110 114 449 904 0.00525 0.00401 126 2 58 120 0.615 - 1/998 428/3375 59.7 59.5 113 110 114 449 905 0.00525 0.00401 106 6 105 96 0.604 - 1/998 429/3375 59.7 59.5 113 110 114 449 905 0.00525 0.00399 68 1 49 65 0.613 - 1/998 430/3375 59.7 59.6 113 110 114 449 906 0.00523 0.004 114 7 182 102 0.633 - 1/998 431/3375 59.7 59.6 113 110 114 449 906 0.00523 0.004 84 4 86 73 0.586 - 1/998 432/3375 59.8 59.7 113 110 114 449 906 0.00523 0.00399 99 4 43 95 0.607 - 1/998 433/3375 59.8 59.8 113 110 114 450 907 0.00521 0.00398 113 5 152 100 0.622 - 1/998 434/3375 59.8 59.8 113 110 114 450 907 0.0052 0.00398 80 6 126 70 0.609 - 1/998 435/3375 60 59.9 113 110 115 450 909 0.00518 0.00397 143 4 75 135 0.616 - 1/998 436/3375 60 59.9 113 110 115 450 908 0.00517 0.00397 73 9 171 62 0.605 - 1/998 437/3375 59.9 59.8 113 110 115 450 907 0.00517 0.00397 50 2 53 41 0.595 - 1/998 438/3375 59.9 59.8 113 110 114 450 907 0.00516 0.00397 57 2 59 54 0.609 - 1/998 439/3375 59.9 59.8 113 110 115 450 907 0.00521 0.004 91 2 53 87 0.604 - 1/998 440/3375 59.9 59.8 113 110 114 449 907 0.00521 0.00399 55 1 93 48 0.611 - 1/998 441/3375 60 59.9 113 110 115 450 907 0.0052 0.00399 136 5 56 128 0.601 - 1/998 442/3375 60 59.8 113 110 115 450 907 0.0052 0.00397 63 6 113 56 0.605 - 1/998 443/3375 60 59.8 113 110 115 450 907 0.0052 0.00396 85 2 63 78 0.612 - 1/998 444/3375 60 59.8 113 110 114 450 907 0.00524 0.00399 68 1 71 64 0.59 - 1/998 445/3375 59.9 59.8 113 110 114 449 906 0.00524 0.00399 50 1 121 43 0.599 - 1/998 446/3375 60 59.8 113 110 114 450 907 0.00523 0.00399 109 1 116 105 0.606 - 1/998 447/3375 59.9 59.8 113 110 114 450 907 0.00524 0.00399 76 9 83 62 0.678 - 1/998 448/3375 59.9 59.8 113 110 114 449 906 0.00523 0.00399 58 5 119 49 0.608 - 1/998 449/3375 59.9 59.8 113 110 114 450 907 0.00522 0.00399 81 2 135 77 0.607 - 1/998 450/3375 59.9 59.7 113 110 114 449 906 0.00522 0.00399 78 1 59 76 0.614 - 1/998 451/3375 59.9 59.8 113 110 114 449 906 0.00522 0.00397 88 4 114 83 0.591 - 1/998 452/3375 59.9 59.8 113 110 114 450 907 0.00521 0.00396 97 1 145 87 0.614 - 1/998 453/3375 60 59.8 113 110 115 450 908 0.00521 0.00394 125 2 61 122 0.6 - 1/998 454/3375 60 59.8 113 110 114 450 907 0.0052 0.00393 63 3 179 58 0.604 - 1/998 455/3375 60 59.8 113 110 114 450 908 0.00519 0.00392 95 1 52 89 0.596 - 1/998 456/3375 60 59.8 113 110 114 450 907 0.0052 0.00396 89 19 384 59 0.626 - 1/998 457/3375 60 59.8 113 110 114 450 907 0.0052 0.00396 79 4 101 74 0.621 - 1/998 458/3375 60 59.8 113 110 115 450 908 0.00512 0.00395 92 2 78 84 0.603 - 1/998 459/3375 60 59.8 113 110 115 450 907 0.00512 0.00395 61 9 277 44 0.594 - 1/998 460/3375 60 59.9 113 110 115 450 907 0.00512 0.00396 106 7 112 96 0.604 - 1/998 461/3375 59.9 59.9 113 110 114 449 907 0.00511 0.00395 47 2 66 41 0.601 - 1/998 462/3375 59.9 59.8 113 110 114 449 906 0.00511 0.00395 53 3 131 47 0.597 - 1/998 463/3375 59.8 59.8 113 110 114 449 905 0.00511 0.00397 58 3 288 46 0.605 - 1/998 464/3375 59.8 59.8 113 110 114 449 905 0.00509 0.00397 83 1 94 77 0.594 - 1/998 465/3375 59.8 59.7 113 110 114 449 905 0.00509 0.00398 77 7 358 58 0.605 - 1/998 466/3375 59.8 59.8 113 110 114 449 905 0.00509 0.00398 94 2 49 84 0.615 - 1/998 467/3375 59.8 59.7 113 110 114 448 904 0.00509 0.00398 36 3 104 32 0.601 - 1/998 468/3375 59.8 59.7 113 110 114 448 905 0.00509 0.00397 97 2 65 92 0.606 - 1/998 469/3375 59.8 59.7 113 110 114 448 904 0.00507 0.00397 58 3 162 49 0.63 - 1/998 470/3375 59.8 59.7 113 110 114 448 904 0.00507 0.00397 78 4 77 73 0.597 - 1/998 471/3375 59.7 59.7 113 110 114 448 904 0.00507 0.00397 65 0 90 63 0.61 - 1/998 472/3375 59.7 59.6 113 110 114 448 903 0.00507 0.00397 79 7 192 62 0.619 - 1/998 473/3375 59.7 59.6 113 110 114 447 903 0.00506 0.00397 59 5 181 50 0.601 - 1/998 474/3375 59.7 59.6 112 110 114 447 902 0.00506 0.00398 68 9 191 53 0.593 - 1/998 475/3375 59.7 59.6 112 110 114 447 902 0.00507 0.004 87 8 112 78 0.6 - 1/998 476/3375 59.6 59.5 112 109 114 447 902 0.00504 0.004 44 2 45 42 0.595 - 1/998 477/3375 59.6 59.5 112 109 114 446 901 0.005 0.00399 58 1 49 52 0.595 - 1/998 478/3375 59.6 59.5 112 109 114 446 901 0.005 0.00399 88 1 17 84 0.598 - 1/998 479/3375 59.7 59.6 112 110 114 447 902 0.005 0.00398 150 3 66 140 0.613 - 1/998 480/3375 59.7 59.6 112 110 114 447 903 0.00497 0.00397 96 2 80 85 0.614 - 1/998 481/3375 59.7 59.7 112 110 114 447 902 0.00497 0.00398 83 14 295 62 0.609 - 1/998 482/3375 59.7 59.7 112 110 114 447 902 0.00495 0.00398 67 5 81 58 0.601 - 1/998 483/3375 59.7 59.7 112 110 114 447 902 0.00495 0.00397 84 5 77 74 0.606 - 1/998 484/3375 59.7 59.7 112 110 114 447 902 0.00494 0.00397 71 1 32 69 0.594 - 1/998 485/3375 59.7 59.6 112 110 114 447 901 0.00494 0.00397 51 8 184 40 0.593 - 1/998 486/3375 59.9 59.8 112 110 114 448 903 0.00494 0.00396 154 2 32 148 0.609 - 1/998 487/3375 59.8 59.7 112 110 114 447 903 0.00494 0.00396 66 5 111 57 0.592 - 1/998 488/3375 59.8 59.7 112 110 114 447 902 0.00494 0.00397 73 6 125 58 0.604 - 1/998 489/3375 59.8 59.7 112 110 114 447 902 0.00494 0.00396 45 0 126 43 0.58 - 1/998 490/3375 59.8 59.6 112 110 114 446 901 0.00494 0.00396 60 3 34 56 0.596 - 1/998 491/3375 59.8 59.7 112 110 114 447 902 0.00494 0.00395 139 1 31 135 0.595 - 1/998 492/3375 59.8 59.7 112 110 114 447 902 0.00493 0.00395 84 3 85 79 0.582 - 1/998 493/3375 59.9 59.7 112 110 114 447 902 0.00493 0.00395 96 5 75 88 0.598 - 1/998 494/3375 59.8 59.7 112 110 114 446 902 0.00493 0.00396 73 5 150 53 0.62 - 1/998 495/3375 59.8 59.6 112 110 114 446 901 0.00492 0.00396 91 8 149 78 0.604 - 1/998 496/3375 59.8 59.6 112 110 114 446 901 0.00492 0.00395 56 1 114 54 0.599 - 1/998 497/3375 59.8 59.6 112 110 114 446 901 0.00492 0.00395 90 4 122 83 0.601 - 1/998 498/3375 59.8 59.6 112 110 114 446 901 0.00492 0.00395 86 2 73 82 0.615 - 1/998 499/3375 59.9 59.6 112 110 114 446 901 0.00492 0.00394 109 4 91 100 0.636 - 1/998 500/3375 59.8 59.6 112 110 114 446 901 0.00491 0.00394 46 3 121 40 0.607 - 1/998 501/3375 59.8 59.6 112 110 114 446 901 0.00491 0.00395 92 4 158 83 0.612 - 1/998 502/3375 59.9 59.6 112 110 114 446 902 0.00491 0.00395 121 7 106 111 0.603 - 1/998 503/3375 59.9 59.6 112 110 114 446 902 0.0049 0.00395 76 1 147 75 0.613 - 1/998 504/3375 59.9 59.6 112 110 114 446 902 0.0049 0.00394 73 3 181 69 0.602 - 1/998 505/3375 59.9 59.6 112 110 114 446 902 0.00491 0.00397 90 11 135 75 0.612 - 1/998 506/3375 59.9 59.7 112 110 114 447 902 0.00491 0.00396 120 3 63 111 0.62 - 1/998 507/3375 59.9 59.7 112 110 114 447 902 0.00491 0.00396 61 2 113 54 0.606 - 1/998 508/3375 59.9 59.6 112 110 114 446 902 0.00491 0.00397 71 2 42 69 0.596 - 1/998 509/3375 59.9 59.6 112 110 114 446 902 0.00491 0.00397 70 3 156 62 0.608 - 1/998 510/3375 59.9 59.6 112 110 114 446 902 0.00489 0.00398 82 6 131 66 0.626 - 1/998 511/3375 59.9 59.7 112 110 114 447 902 0.00489 0.00398 93 4 98 85 0.651 - 1/998 512/3375 59.9 59.6 112 110 114 447 902 0.0049 0.00399 74 5 109 67 0.587 - 1/998 513/3375 60 59.7 112 110 114 446 902 0.0049 0.00397 97 3 81 90 0.602 - 1/998 514/3375 59.9 59.6 112 110 114 446 901 0.00489 0.00397 64 1 90 62 0.609 - 1/998 515/3375 60 59.7 112 110 114 447 902 0.00489 0.00396 114 0 83 113 0.613 - 1/998 516/3375 60 59.7 112 110 114 447 903 0.00489 0.00395 72 1 114 67 0.619 - 1/998 517/3375 59.9 59.7 112 110 114 447 902 0.00489 0.00395 59 2 82 54 0.611 - 1/998 518/3375 60 59.7 112 110 114 447 902 0.00488 0.00394 79 0 93 76 0.614 - 1/998 519/3375 60.1 59.8 112 110 114 447 903 0.00496 0.00397 134 4 36 125 0.614 - 1/998 520/3375 60 59.8 112 110 114 447 903 0.00496 0.00396 64 1 56 63 0.575 - 1/998 521/3375 60 59.7 112 110 114 447 902 0.00497 0.00397 52 3 60 47 0.588 - 1/998 522/3375 59.9 59.6 112 110 114 446 901 0.00496 0.00397 37 0 63 35 0.604 - 1/998 523/3375 59.9 59.6 112 110 114 446 901 0.00495 0.00397 60 2 164 54 0.612 - 1/998 524/3375 59.9 59.7 112 110 114 446 901 0.00495 0.00398 100 9 88 84 0.608 - 1/998 525/3375 59.9 59.7 112 109 114 447 902 0.00474 0.00397 87 1 73 83 0.624 - 1/998 526/3375 59.9 59.7 112 110 114 447 901 0.00479 0.004 80 5 87 70 0.613 - 1/998 527/3375 60 59.7 112 110 114 447 902 0.00478 0.004 103 2 73 99 0.606 - 1/998 528/3375 59.9 59.7 112 110 114 447 902 0.00478 0.00399 85 3 86 75 0.598 - 1/998 529/3375 60 59.7 112 110 114 447 903 0.00478 0.004 100 8 53 92 0.599 - 1/998 530/3375 60 59.8 112 110 114 448 904 0.00478 0.00399 124 1 24 121 0.601 - 1/998 531/3375 60.1 59.8 112 110 114 448 904 0.00477 0.00398 73 0 63 70 0.601 - 1/998 532/3375 60 59.8 112 110 114 448 903 0.00475 0.00398 69 0 130 64 0.629 - 1/998 533/3375 60 59.7 112 110 114 447 903 0.00474 0.00397 56 0 57 55 0.606 - 1/998 534/3375 60 59.7 112 110 114 448 903 0.00473 0.00397 98 0 45 92 0.616 - 1/998 535/3375 60 59.7 112 110 114 447 903 0.00473 0.00397 37 1 29 35 0.588 - 1/998 536/3375 60 59.7 112 110 114 448 903 0.00472 0.00397 92 8 207 72 0.607 - 1/998 537/3375 60 59.7 112 110 114 448 903 0.00472 0.00396 92 4 49 85 0.607 - 1/998 538/3375 60 59.7 112 110 114 448 903 0.00469 0.00396 91 1 113 86 0.611 - 1/998 539/3375 60 59.7 112 110 114 447 903 0.00469 0.00396 53 5 60 47 0.606 - 1/998 540/3375 60 59.7 112 110 114 448 903 0.00469 0.00395 88 1 77 85 0.601 - 0/998 0/416 90.9 90 596 585 367 939 2.67e+03 0 0 117 0 0 117 4.28 - 0/998 1/416 80.5 88.3 593 591 318 825 2.5e+03 0 0 87 0 0 87 0.579 - 0/998 2/416 74.3 82.9 500 502 297 763 2.22e+03 0 0 68 0 0 68 0.554 - 0/998 3/416 69.2 76.6 447 451 271 700 2.01e+03 0 0 59 0 0 59 0.553 - 0/998 4/416 65.6 69.9 395 403 253 652 1.84e+03 0 0 49 0 0 49 0.533 - 0/998 5/416 65.6 69.3 390 390 255 664 1.83e+03 0 0 97 0 0 97 0.531 - 0/998 6/416 62.9 67.2 374 364 245 636 1.75e+03 0 0 50 0 0 50 0.545 - 0/998 7/416 65.9 69.6 377 369 254 662 1.8e+03 0 0 97 0 0 97 0.539 - 0/998 8/416 65.3 67.7 367 353 250 652 1.75e+03 0 0 64 0 3 64 0.549 - 0/998 9/416 65.5 68.6 359 357 254 663 1.77e+03 0 0 81 0 14 81 0.541 - 0/998 10/416 64.6 66.9 354 349 250 650 1.73e+03 0 0 54 0 2 54 0.537 - 0/998 0/416 73.8 77.3 570 512 319 820 2.37e+03 0 0 107 0 0 107 4 - 0/998 1/416 66.5 77.9 449 456 284 734 2.07e+03 0 0 79 0 0 79 0.653 - 0/998 2/416 64.8 71.3 397 388 266 685 1.87e+03 0 0 64 0 0 64 0.633 - 0/998 3/416 60.4 66.6 367 363 246 632 1.74e+03 0 0 53 0 0 53 0.654 - 0/998 4/416 57.3 63.1 334 332 236 604 1.63e+03 0 0 49 0 0 49 0.634 - 0/998 5/416 58.7 63.1 352 315 237 611 1.64e+03 0 0 81 0 0 81 0.637 - 0/998 6/416 55.6 61.1 327 293 228 589 1.55e+03 0 0 50 0 0 50 0.636 - 0/998 7/416 56.7 62.3 318 291 237 612 1.58e+03 0 0 91 0 0 91 0.647 - 0/998 8/416 57.2 61.7 328 291 233 603 1.57e+03 0 0 59 0 0 59 0.642 - 0/998 9/416 59.7 63.1 334 302 239 619 1.62e+03 0 0 81 0 0 81 0.625 - 0/998 10/416 59.1 61.9 325 296 236 609 1.59e+03 0 0 53 0 0 53 0.629 - 0/998 11/416 60.9 63.1 324 301 245 633 1.63e+03 0 0 92 0 0 92 0.648 - 0/998 12/416 58.7 61.2 321 289 236 612 1.58e+03 0 0 36 0 0 36 0.627 - 0/998 13/416 59.1 61.7 316 285 238 615 1.57e+03 0 0 78 0 0 78 0.637 - 0/998 14/416 59.4 61.7 309 280 239 619 1.57e+03 0 0 73 0 0 73 0.633 - 0/998 15/416 59.2 61.5 301 273 238 616 1.55e+03 0 0 61 0 0 61 0.657 - 0/998 16/416 59.6 61.3 296 268 238 615 1.54e+03 0 0 59 0 1 59 0.643 - 0/998 17/416 58 60 290 260 232 601 1.5e+03 0 0 38 0 0 38 0.633 - 0/998 18/416 60.7 63.1 295 279 242 629 1.57e+03 0 0 140 0 0 140 0.641 - 0/998 0/416 85 97.3 434 557 358 917 2.45e+03 0 0 113 0 0 113 3.84 - 0/998 1/416 71.9 84.7 392 465 303 789 2.11e+03 0 0 79 0 0 79 0.586 - 0/998 2/416 70.5 77.2 363 413 283 733 1.94e+03 0 0 65 0 0 65 0.569 - 0/998 3/416 62.7 68.6 341 388 260 674 1.8e+03 0 0 59 0 0 59 0.575 - 0/998 4/416 58.6 63.7 312 347 243 628 1.65e+03 0 0 46 0 0 46 0.568 - 0/998 5/416 60.1 64.9 312 334 242 630 1.64e+03 0 0 79 0 1 79 0.569 - 0/998 6/416 57.4 62.5 309 318 234 609 1.59e+03 0 0 50 0 0 50 0.563 - 0/998 7/416 59.6 65.4 311 323 241 629 1.63e+03 0 0 91 0 0 91 0.565 - 0/998 8/416 59.4 66 313 324 237 621 1.62e+03 0 0 61 0 1 61 0.561 - 0/998 9/416 61.3 66.7 319 333 242 636 1.66e+03 0 0 81 0 15 81 0.571 From 42221c682299af58644c133f673aff30e8544c1b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 15:42:09 +0200 Subject: [PATCH 0022/2595] updates --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 2d7e160b..c7724dd6 100755 --- a/.gitignore +++ b/.gitignore @@ -10,7 +10,6 @@ *.HEIC *.weights *.pt -*.weights !zidane_result.jpg !coco_training_loss.png From ad0860dbe271c9e07ed59606517cbdfb9a551c25 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 17:09:10 +0200 Subject: [PATCH 0023/2595] updates --- test.py | 26 +++++++++++++------------- train.py | 4 ++-- utils/datasets.py | 10 ++++++---- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/test.py b/test.py index 88054f70..014a7d29 100644 --- a/test.py +++ b/test.py @@ -5,18 +5,18 @@ from utils.datasets import * from utils.utils import * parser = argparse.ArgumentParser() -parser.add_argument('--epochs', type=int, default=200, help='number of epochs') -parser.add_argument('--batch_size', type=int, default=32, help='size of each image batch') -parser.add_argument('--model_config_path', type=str, default='cfg/yolov3.cfg', help='path to model config file') -parser.add_argument('--data_config_path', type=str, default='cfg/coco.data', help='path to data config file') -parser.add_argument('--weights_path', type=str, default='checkpoints/yolov3.weights', help='path to weights file') -parser.add_argument('--class_path', type=str, default='data/coco.names', help='path to class label file') -parser.add_argument('--iou_thres', type=float, default=0.5, help='iou threshold required to qualify as detected') -parser.add_argument('--conf_thres', type=float, default=0.5, help='object confidence threshold') -parser.add_argument('--nms_thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') -parser.add_argument('--n_cpu', type=int, default=0, help='number of cpu threads to use during batch generation') -parser.add_argument('--img_size', type=int, default=416, help='size of each image dimension') -parser.add_argument('--use_cuda', type=bool, default=True, help='whether to use cuda if available') +parser.add_argument('-epochs', type=int, default=200, help='number of epochs') +parser.add_argument('-batch_size', type=int, default=32, help='size of each image batch') +parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='path to model config file') +parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='path to data config file') +parser.add_argument('-weights_path', type=str, default='checkpoints/yolov3.weights', help='path to weights file') +parser.add_argument('-class_path', type=str, default='data/coco.names', help='path to class label file') +parser.add_argument('-iou_thres', type=float, default=0.5, help='iou threshold required to qualify as detected') +parser.add_argument('-conf_thres', type=float, default=0.5, help='object confidence threshold') +parser.add_argument('-nms_thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') +parser.add_argument('-n_cpu', type=int, default=0, help='number of cpu threads to use during batch generation') +parser.add_argument('-img_size', type=int, default=416, help='size of each image dimension') +parser.add_argument('-use_cuda', type=bool, default=True, help='whether to use cuda if available') opt = parser.parse_args() print(opt) @@ -29,7 +29,7 @@ test_path = data_config['valid'] num_classes = int(data_config['classes']) # Initiate model -model = Darknet(opt.model_config_path, opt.img_size) +model = Darknet(opt.cfg, opt.img_size) # Load weights weights_path = 'checkpoints/yolov3.pt' diff --git a/train.py b/train.py index 07939283..97e9b0a4 100644 --- a/train.py +++ b/train.py @@ -1,6 +1,5 @@ import argparse import time -from sys import platform from models import * from utils.datasets import * @@ -27,6 +26,7 @@ if cuda: torch.cuda.manual_seed_all(0) torch.backends.cudnn.benchmark = True + def main(opt): os.makedirs('checkpoints', exist_ok=True) @@ -93,7 +93,7 @@ def main(opt): for epoch in range(opt.epochs): epoch += start_epoch - # img_size = random.choice([19, 20, 21, 22, 23, 24, 25]) * 32 + # img_size = random.choice(range(10, 20)) * 32 # dataloader = ListDataset(train_path, batch_size=opt.batch_size, img_size=img_size, targets_path=targets_path) # print('Running image size %g' % img_size) diff --git a/utils/datasets.py b/utils/datasets.py index b7a7db41..277b7001 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -111,7 +111,7 @@ class ListDataset(): # for training if img is None: continue - augment_hsv = False + augment_hsv = True if augment_hsv: # SV augmentation by 50% fraction = 0.50 @@ -150,13 +150,15 @@ class ListDataset(): # for training labels = np.array([]) # Augment image and labels - # img, labels, M = random_affine(img, targets=labels, degrees=(-10, 10), translate=(0.2, 0.2), scale=(0.8, 1.2)) # RGB + img, labels, M = random_affine(img, targets=labels, degrees=(-5, 5), translate=(0.2, 0.2), scale=(0.8, 1.2)) # RGB plotFlag = False if plotFlag: import matplotlib.pyplot as plt + plt.figure(figsize=(10, 10)) if index == 0 else None plt.subplot(4, 4, index + 1).imshow(img[:, :, ::-1]) plt.plot(labels[:, [1, 3, 3, 1, 1]].T, labels[:, [2, 2, 4, 4, 2]].T, '.-') + plt.axis('off') nL = len(labels) if nL > 0: @@ -164,7 +166,7 @@ class ListDataset(): # for training labels[:, 1:5] = xyxy2xywh(labels[:, 1:5].copy()) / height # random left-right flip - lr_flip = False + lr_flip = True if lr_flip & (random.random() > 0.5): img = np.fliplr(img) if nL > 0: @@ -206,7 +208,7 @@ def resize_square(img, height=416, color=(0, 0, 0)): # resize a rectangular ima def random_affine(img, targets=None, degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-3, 3), - borderValue=(0, 0, 0)): + borderValue=(127.5, 127.5, 127.5)): # torchvision.transforms.RandomAffine(degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-10, 10)) # https://medium.com/uruvideo/dataset-augmentation-with-random-homographies-a8f4b44830d4 From 8a1d1b76c04aed1703e019bee7f9f33e17411c04 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 19:33:37 +0200 Subject: [PATCH 0024/2595] updates --- detect.py | 1 - models.py | 22 +++++++++------------- train.py | 2 +- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/detect.py b/detect.py index e93312d3..34b9f90d 100755 --- a/detect.py +++ b/detect.py @@ -11,7 +11,6 @@ device = torch.device('cuda:0' if cuda else 'cpu') parser = argparse.ArgumentParser() # Get data configuration -# cd yolo && python3 detect.py -secondary_classifier 1 parser.add_argument('-image_folder', type=str, default='data/samples', help='path to images') parser.add_argument('-output_folder', type=str, default='output', help='path to outputs') parser.add_argument('-plot_flag', type=bool, default=True) diff --git a/models.py b/models.py index def6f7dc..a01bef92 100755 --- a/models.py +++ b/models.py @@ -82,7 +82,7 @@ class YOLOLayer(nn.Module): self.anchors = anchors self.nA = nA # number of anchors (3) - self.nC = nC # number of classes (60) + self.nC = nC # number of classes (80) self.bbox_attrs = 5 + nC self.img_dim = img_dim # from hyperparams in cfg file, NOT from parser @@ -103,7 +103,6 @@ class YOLOLayer(nn.Module): def forward(self, p, targets=None, requestPrecision=False, epoch=None): FT = torch.cuda.FloatTensor if p.is_cuda else torch.FloatTensor - # device = torch.device('cuda:0' if p.is_cuda else 'cpu') bs = p.shape[0] nG = p.shape[2] @@ -112,7 +111,6 @@ class YOLOLayer(nn.Module): if p.is_cuda and not self.grid_x.is_cuda: self.grid_x, self.grid_y = self.grid_x.cuda(), self.grid_y.cuda() self.anchor_w, self.anchor_h = self.anchor_w.cuda(), self.anchor_h.cuda() - # self.scaled_anchors = self.scaled_anchors.cuda() # x.view(4, 650, 19, 19) -- > (4, 10, 19, 19, 65) # (bs, anchors, grid, grid, classes + xywh) p = p.view(bs, self.nA, self.bbox_attrs, nG, nG).permute(0, 1, 3, 4, 2).contiguous() # prediction @@ -132,11 +130,9 @@ class YOLOLayer(nn.Module): # Training if targets is not None: - BCEWithLogitsLoss1 = nn.BCEWithLogitsLoss(size_average=False) # version 0.4.0 - BCEWithLogitsLoss0 = nn.BCEWithLogitsLoss() - # BCEWithLogitsLoss2 = nn.BCEWithLogitsLoss(size_average=True) - MSELoss = nn.MSELoss(size_average=False) # version 0.4.0 - CrossEntropyLoss = nn.CrossEntropyLoss() + BCEWithLogitsLoss = nn.BCEWithLogitsLoss() + MSELoss = nn.MSELoss() # version 0.4.0 + # CrossEntropyLoss = nn.CrossEntropyLoss() if requestPrecision: gx = self.grid_x[:, :, :nG, :nG] @@ -154,21 +150,21 @@ class YOLOLayer(nn.Module): tx, ty, tw, th, mask, tcls = tx.cuda(), ty.cuda(), tw.cuda(), th.cuda(), mask.cuda(), tcls.cuda() # Mask outputs to ignore non-existing objects (but keep confidence predictions) - nM = mask.sum().float() + nM = mask.sum() nGT = sum([len(x) for x in targets]) if nM > 0: lx = 5 * MSELoss(x[mask], tx[mask]) ly = 5 * MSELoss(y[mask], ty[mask]) lw = 5 * MSELoss(w[mask], tw[mask]) lh = 5 * MSELoss(h[mask], th[mask]) - lconf = 1.5 * BCEWithLogitsLoss1(pred_conf[mask], mask[mask].float()) + lconf = 1.5 * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) - lcls = nM * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) - # lcls = BCEWithLogitsLoss1(pred_cls[mask], tcls.float()) + # lcls = CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + lcls = BCEWithLogitsLoss(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) - lconf += nM * BCEWithLogitsLoss0(pred_conf[~mask], mask[~mask].float()) + lconf += BCEWithLogitsLoss(pred_conf[~mask], mask[~mask].float()) loss = lx + ly + lw + lh + lconf + lcls i = torch.sigmoid(pred_conf[~mask]) > 0.99 diff --git a/train.py b/train.py index 97e9b0a4..5c7fe342 100644 --- a/train.py +++ b/train.py @@ -94,7 +94,7 @@ def main(opt): epoch += start_epoch # img_size = random.choice(range(10, 20)) * 32 - # dataloader = ListDataset(train_path, batch_size=opt.batch_size, img_size=img_size, targets_path=targets_path) + # dataloader = ListDataset(train_path, batch_size=opt.batch_size, img_size=img_size) # print('Running image size %g' % img_size) # Update scheduler From 1bc4f89bca451cacbc55756103adb763222c33e1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 19:34:04 +0200 Subject: [PATCH 0025/2595] updates --- utils/datasets.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 277b7001..ed71c31b 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -150,7 +150,8 @@ class ListDataset(): # for training labels = np.array([]) # Augment image and labels - img, labels, M = random_affine(img, targets=labels, degrees=(-5, 5), translate=(0.2, 0.2), scale=(0.8, 1.2)) # RGB + img, labels, M = random_affine(img, targets=labels, degrees=(-5, 5), translate=(0.2, 0.2), + scale=(0.8, 1.2)) # RGB plotFlag = False if plotFlag: From c0d1aad97e21dacf879514823d22ffc73e0530ed Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 19:38:14 +0200 Subject: [PATCH 0026/2595] updates --- cfg/coco.data | 4 ++-- utils/utils.py | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/cfg/coco.data b/cfg/coco.data index 785b5e25..7a04df29 100644 --- a/cfg/coco.data +++ b/cfg/coco.data @@ -1,6 +1,6 @@ classes=80 -train=/Users/glennjocher/Downloads/DATA/coco/trainvalno5k.txt -valid=/Users/glennjocher/Downloads/DATA/coco/5k.txt +train=/Users/glennjocher/Downloads/DATA/coco/trainvalno5k.part +valid=/Users/glennjocher/Downloads/DATA/coco/5k.part names=data/coco.names backup=backup/ eval=coco diff --git a/utils/utils.py b/utils/utils.py index 79737fb3..ca8ef8cc 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -361,10 +361,11 @@ def plotResults(): import matplotlib.pyplot as plt plt.figure(figsize=(18, 9)) s = ['x', 'y', 'w', 'h', 'conf', 'cls', 'loss', 'prec', 'recall'] - for f in ('results.txt',): + for f in ('/Users/glennjocher/Downloads/results.txt', + 'results.txt'): results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 9, 10]).T for i in range(9): plt.subplot(2, 5, i + 1) - plt.plot(results[i, :3000], marker='.', label=f) + plt.plot(results[i, :], marker='.', label=f) plt.title(s[i]) plt.legend() From af7144ba79f1398ed37c9a9c9989c58e6d7eb59e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 19:38:37 +0200 Subject: [PATCH 0027/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 5c7fe342..bfd03462 100644 --- a/train.py +++ b/train.py @@ -36,7 +36,7 @@ def main(opt): if platform == 'darwin': # macos train_path = data_config['valid'] else: # linux (gcp cloud) - train_path = '../coco/trainvalno5k.txt' + train_path = '../coco/trainvalno5k.part' # Initialize model model = Darknet(opt.cfg, opt.img_size) From 56badeef8a83b9710431d6f8e751efbdd988d33a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 19:40:30 +0200 Subject: [PATCH 0028/2595] updates --- cfg/coco.data | 4 ++-- train.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cfg/coco.data b/cfg/coco.data index 7a04df29..785b5e25 100644 --- a/cfg/coco.data +++ b/cfg/coco.data @@ -1,6 +1,6 @@ classes=80 -train=/Users/glennjocher/Downloads/DATA/coco/trainvalno5k.part -valid=/Users/glennjocher/Downloads/DATA/coco/5k.part +train=/Users/glennjocher/Downloads/DATA/coco/trainvalno5k.txt +valid=/Users/glennjocher/Downloads/DATA/coco/5k.txt names=data/coco.names backup=backup/ eval=coco diff --git a/train.py b/train.py index bfd03462..5c7fe342 100644 --- a/train.py +++ b/train.py @@ -36,7 +36,7 @@ def main(opt): if platform == 'darwin': # macos train_path = data_config['valid'] else: # linux (gcp cloud) - train_path = '../coco/trainvalno5k.part' + train_path = '../coco/trainvalno5k.txt' # Initialize model model = Darknet(opt.cfg, opt.img_size) From 6da62e433da39077186a0521edf3f52b9386c307 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 20:24:37 +0200 Subject: [PATCH 0029/2595] updates --- test.py | 2 +- utils/datasets.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index 014a7d29..431515ba 100644 --- a/test.py +++ b/test.py @@ -32,7 +32,7 @@ num_classes = int(data_config['classes']) model = Darknet(opt.cfg, opt.img_size) # Load weights -weights_path = 'checkpoints/yolov3.pt' +weights_path = 'checkpoints/yolov3.weights' if weights_path.endswith('.weights'): # darknet format load_weights(model, weights_path) elif weights_path.endswith('.pt'): # pytorch format diff --git a/utils/datasets.py b/utils/datasets.py index ed71c31b..07647166 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -68,7 +68,7 @@ class ListDataset(): # for training if platform == 'darwin': # macos self.img_files = [path.replace('\n', '').replace('/images', '/Users/glennjocher/Downloads/DATA/coco/images') for path in self.img_files] - else: + else: # linux (gcp cloud) self.img_files = [path.replace('\n', '').replace('/images', '../coco/images') for path in self.img_files] self.label_files = [path.replace('images', 'labels').replace('.png', '.txt').replace('.jpg', '.txt') for path in From ebe27544eb38d65fba9d3e2cb0cbbceb0cd75ee7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 20:30:47 +0200 Subject: [PATCH 0030/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 5c7fe342..bfd03462 100644 --- a/train.py +++ b/train.py @@ -36,7 +36,7 @@ def main(opt): if platform == 'darwin': # macos train_path = data_config['valid'] else: # linux (gcp cloud) - train_path = '../coco/trainvalno5k.txt' + train_path = '../coco/trainvalno5k.part' # Initialize model model = Darknet(opt.cfg, opt.img_size) From d602aed1d859d0f457570834aff6642c405aa134 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 21:41:35 +0200 Subject: [PATCH 0031/2595] updates --- models.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/models.py b/models.py index a01bef92..ea86a726 100755 --- a/models.py +++ b/models.py @@ -132,7 +132,7 @@ class YOLOLayer(nn.Module): if targets is not None: BCEWithLogitsLoss = nn.BCEWithLogitsLoss() MSELoss = nn.MSELoss() # version 0.4.0 - # CrossEntropyLoss = nn.CrossEntropyLoss() + CrossEntropyLoss = nn.CrossEntropyLoss() if requestPrecision: gx = self.grid_x[:, :, :nG, :nG] @@ -159,8 +159,8 @@ class YOLOLayer(nn.Module): lh = 5 * MSELoss(h[mask], th[mask]) lconf = 1.5 * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) - # lcls = CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) - lcls = BCEWithLogitsLoss(pred_cls[mask], tcls.float()) + lcls = CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + # lcls = BCEWithLogitsLoss(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) From d378e328036638a464ad9ed9a5f964042d78f31e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 21:59:55 +0200 Subject: [PATCH 0032/2595] updates --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index ea86a726..304100e7 100755 --- a/models.py +++ b/models.py @@ -159,8 +159,8 @@ class YOLOLayer(nn.Module): lh = 5 * MSELoss(h[mask], th[mask]) lconf = 1.5 * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) - lcls = CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) - # lcls = BCEWithLogitsLoss(pred_cls[mask], tcls.float()) + # lcls = CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + lcls = 10 * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) From 8944db80b93e5042e4060f8c99f42f5d53143778 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 22:37:23 +0200 Subject: [PATCH 0033/2595] updates --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 304100e7..f836346b 100755 --- a/models.py +++ b/models.py @@ -159,8 +159,8 @@ class YOLOLayer(nn.Module): lh = 5 * MSELoss(h[mask], th[mask]) lconf = 1.5 * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) - # lcls = CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) - lcls = 10 * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) + lcls = 0.5 * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + # lcls = BCEWithLogitsLoss(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) From 2769d79d05ea7e50b7894e12dfec3b24836ebcaa Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 23:52:06 +0200 Subject: [PATCH 0034/2595] updates --- models.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/models.py b/models.py index f836346b..06a18a0b 100755 --- a/models.py +++ b/models.py @@ -130,8 +130,9 @@ class YOLOLayer(nn.Module): # Training if targets is not None: - BCEWithLogitsLoss = nn.BCEWithLogitsLoss() - MSELoss = nn.MSELoss() # version 0.4.0 + BCEWithLogitsLoss1 = nn.BCEWithLogitsLoss(size_average=False) + BCEWithLogitsLoss2 = nn.BCEWithLogitsLoss(size_average=True) + MSELoss = nn.MSELoss(size_average=False) # version 0.4.0 CrossEntropyLoss = nn.CrossEntropyLoss() if requestPrecision: @@ -150,21 +151,21 @@ class YOLOLayer(nn.Module): tx, ty, tw, th, mask, tcls = tx.cuda(), ty.cuda(), tw.cuda(), th.cuda(), mask.cuda(), tcls.cuda() # Mask outputs to ignore non-existing objects (but keep confidence predictions) - nM = mask.sum() + nM = mask.sum().float() nGT = sum([len(x) for x in targets]) if nM > 0: lx = 5 * MSELoss(x[mask], tx[mask]) ly = 5 * MSELoss(y[mask], ty[mask]) lw = 5 * MSELoss(w[mask], tw[mask]) lh = 5 * MSELoss(h[mask], th[mask]) - lconf = 1.5 * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) + lconf = 1.5 * BCEWithLogitsLoss1(pred_conf[mask], mask[mask].float()) - lcls = 0.5 * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) - # lcls = BCEWithLogitsLoss(pred_cls[mask], tcls.float()) + lcls = nM * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + # lcls = BCEWithLogitsLoss1(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) - lconf += BCEWithLogitsLoss(pred_conf[~mask], mask[~mask].float()) + lconf += nM * BCEWithLogitsLoss2(pred_conf[~mask], mask[~mask].float()) loss = lx + ly + lw + lh + lconf + lcls i = torch.sigmoid(pred_conf[~mask]) > 0.99 From a6602117331276bf76f631e492dddb706ccaf184 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Aug 2018 23:59:13 +0200 Subject: [PATCH 0035/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 07647166..81371c8f 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -270,7 +270,7 @@ def random_affine(img, targets=None, degrees=(-10, 10), translate=(.1, .1), scal h = xy[:, 3] - xy[:, 1] area = w * h ar = np.maximum(w / (h + 1e-16), h / (w + 1e-16)) - i = (w > 4) & (h > 4) & (area / area0 > 0.1) & (ar < 10) + i = (w > 4) & (h > 4) & (area / (area0 + 1e-16) > 0.1) & (ar < 10) targets = targets[i] targets[:, 1:5] = xy[i] From 54d1da904c6a5cbf07237b15a455a0235342f903 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 27 Aug 2018 00:00:25 +0200 Subject: [PATCH 0036/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index bfd03462..4a8cc70b 100644 --- a/train.py +++ b/train.py @@ -178,7 +178,7 @@ def main(opt): os.system('cp checkpoints/latest.pt checkpoints/best.pt') # Save backup checkpoint - if (epoch > 0) & (epoch % 10 == 0): + if (epoch > 0) & (epoch % 5 == 0): os.system('cp checkpoints/latest.pt checkpoints/backup' + str(epoch) + '.pt') # Save final model From 75004715268e47609aaf3c5607b9775af0008d62 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 27 Aug 2018 00:01:41 +0200 Subject: [PATCH 0037/2595] updates --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 06a18a0b..f54fd983 100755 --- a/models.py +++ b/models.py @@ -160,8 +160,8 @@ class YOLOLayer(nn.Module): lh = 5 * MSELoss(h[mask], th[mask]) lconf = 1.5 * BCEWithLogitsLoss1(pred_conf[mask], mask[mask].float()) - lcls = nM * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) - # lcls = BCEWithLogitsLoss1(pred_cls[mask], tcls.float()) + # lcls = nM * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + lcls = nM * BCEWithLogitsLoss2(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) From b03f5a9a7ae05461acdaea289b6da86b6c359506 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 31 Aug 2018 19:23:46 +0200 Subject: [PATCH 0038/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3ec2edba..5d4eec39 100755 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ http://www.ultralytics.com   # Description -The https://github.com/ultralytics/yolov3 repo contains code inference and training of YOLOv3 on the COCO dataset: https://cocodataset.org/#home. **Credit to Joseph Redmon for YOLO** (https://pjreddie.com/darknet/yolo/) and to **Erik Lindernoren for the pytorch implementation** this work is based on (https://github.com/eriklindernoren/PyTorch-YOLOv3). +The https://github.com/ultralytics/yolov3 repo contains inference and training code for YOLOv3 in PyTorch. Training is done on the COCO dataset by default: https://cocodataset.org/#home. **Credit to Joseph Redmon for YOLO** (https://pjreddie.com/darknet/yolo/) and to **Erik Lindernoren for the pytorch implementation** this work is based on (https://github.com/eriklindernoren/PyTorch-YOLOv3). # Requirements From c09703f4d454ad78dd786e83f545b73c4497b7cc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Sep 2018 13:11:50 +0200 Subject: [PATCH 0039/2595] updates --- data/coco_training_loss.png | Bin 0 -> 270636 bytes utils/utils.py | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 data/coco_training_loss.png diff --git a/data/coco_training_loss.png b/data/coco_training_loss.png new file mode 100644 index 0000000000000000000000000000000000000000..5883c339f0706ce8d88497c1a4c4f2009e5a2b30 GIT binary patch literal 270636 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 fxFllHwa!C9Ha1Ve&jj$FD&?0Lue0Hv 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�aL0LQ| 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 Date: Sat, 1 Sep 2018 13:17:21 +0200 Subject: [PATCH 0040/2595] updates --- data/coco_training_loss.png | Bin 270636 -> 248165 bytes utils/utils.py | 8 ++++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data/coco_training_loss.png b/data/coco_training_loss.png index 5883c339f0706ce8d88497c1a4c4f2009e5a2b30..570ca737d9c412ca6c5ad58097754043f25bea2b 100644 GIT binary patch literal 248165 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%0A* z^xLxP!p?aX9evZ*2MW(zSaLO`8p08KtaC_IHB{kKsfyJKDMkV8X zkBnzw;{USk6whq#!#}}TGS!DgcY(!Vb@b3f%|68T1P-jLkKP=^p|*0`+_?G{V)m88 za$USMMrjC-zv}-ADS!W3Szk6wG;uz z@&|}hdtXsVIvn~EI3a$T4=&@S%n}tfrHA@i!oVcF*mKK20&fTLGluoRWqylV$YvTq zo4?@kVw4W!jF2=i$Z)j+MRN>TA1ZJh0V|kMyZ|E%^vu@4OaZ&xY`q%ox0MjOkbXKL zmC)$^P7p;2R5-wRcMp^_34+fbzj*ONQnCTgu{@u2edl?`ir6U@W~)1|Fw)uOs2;1O z{W#(0nC==XY^o%)>3DbQ>a)s^UcNMh*wNQTo=7*xdN;uJ87k)S z0bk3J!y1E#d~e1s25M^_3`7!6)tytsequML+DHf3@?lHs7?Sx z6eSzrt^wSlN$^bhWOdDYvL05nzW%2+W$vuId71^1=&jluTB9?|%g}^Yv0X^5eSuBd zH=={~ek;Rw3A-Oyx&KIrR4gfWAOc}XrSQ%R1o3%$mHmRh)fbtH&;KyesK@>Spt zi&P3h#i7J>ee`Bq^i~J0eJVfdmIgBo`_$k)(LnC4A*;J{8@O^tS8K(#3!|(SH3gEV z?L=!A^JtHqt|=hP^+JfBkC=!>tFpilg8JhBxolYxh}8Fy*JZ5>yYwFWI?-tIBP_Uc zq7|CU$dlo9Rqf!;uf)?&24c5e#nud_Ix;C3#1 zjAJWBuPf?9%`!bv>A~~5dj`~pO;qjteW&n)Cp~cUEZOEg`r$6GqpRDIkilPo z%q6yCq^EmQX1KySk;}jjqZ=njKF#C{w5kgYBYKy%N8;i}`LS)C2g_-Yc;JbLBg=%| zDr(V_)R*mgSKQ)1Fpp+35m|&v4<0c(`Pjz{ z*-H`ph7|m?C*}Gx=;v{XXiITY^o_JBT5mk2Yx+M!I=@zteQ?k~Cr)kEMM3xJKUz5( zn?Vb^>;D)baRSVB)*GRHf6unA?ROnG({)ZiX8tzwccUs2hX`SXcu~-=_Iep^6r9`L z#n@ZF6DmaFa&q2TBTV^wsWcu5-DmWpZ)TT-U_TFRQHseKM&^}f@)r7*lsu<)#D{1y zQmWs#em!A1om}Lu&9Q;YJ^tY@z@iuO%zyn_X4GG^x@n^x`O9XSM*-Vb`ZYf?*(P|h z-gU2744d znaMLI_cv+*?#Zvc8$0<0yp$))HdEe{kGFH09^_NR%xUlZdOA+Njv1$=DayH0wTU%a z1YKl)o9EK$GEYyhANwoCzbdYmJ+gQ%seHeWjz(H4xIbYL7#YT?71(b^{5e@ zM@sN{3i-U9^1=}uZ9Pd3;>2?3C9q^VZ|G(E+O|bk$W_f2~S};rv1?S`tMn0h(oM4qL>*D7h@(m z2qRndxbasE{_=Zh>MAUz=R2+WMH3n4HluD-FEI^CaXEj+XlQOWd0e<;b+3=G)K2xc zi-Uu?y12Aj+b4#hguJ{6tkbFyn~JAQc66$kWcC0BpRgyg=%8K(1(-W@K5D6=Go?I` zcbo*Kvic-m@-B`;&LfG!AG||t>>ODyd1yOwsZi{O;EO|cboXqAu-!CjY;plW$N;C%bg#f_x!#UmgYRlFiFCd`HXl}3<6TjoFAvN+qo-ueKenXvB zG(S#R^Dre1c^jN>>!c!0v|SE>`jL4RCbD``*O^A`DlJ8x}28~9ys;0 zDA@XE`z`5k2-yjccnl*IRDpF9Z4aBvy-b0gNirKN37G)LdVpqA%X%$TJZlp%X{WJq90hXbx9Pa-_IsUo+(8fBx_LvgK(j{0JiUI{zNF zW{;$wd@Ky37f5t55BB$+2MM;39FXEJ+fV)|pXjUgVyJhgNbKJ?L;H=BrLBVyR-|QjK)AzwzdH`W%Yko6u{lS}5&Q!bErxw+v-{G;i5Ucji1vnD93m4*e$6D_qg z@FZyi^-yo|TG%_*qcY7BVnfr~P)v@Kfs*7`VWcOIlrz3v&1e2$`_&ufUA02u)}!wm z?GB=)PyKcy&e=a@F@NyB43$SCuS?bEjIIB2dK=~Ae#v#EOrDc18B7*p+63&Ql1J;< ztA9s3&zyuPC|BD@o#|}levH#iv7dl-7FjuMwANhgD@k3YNS5xN9XUQ;O>i305F*EW zDGMz11ivt$Cj0y$ATvUS05w4J*B56YL+Jc3LrBD#o+i7mQ`)Zkl2M}5Z3vYPCXx-g z@VE_K5hrhGETr_A0=|nDz3`ViepmiSil4*2<~Q`V$o>2p`7F`s_s0TA@Oc2S@}S=l zig|1*sO^jVAtE)o6W)O(_G54K^^J|Ge2nx8!jlIL_hg`QxA?xDT`j5hYwj1HruizwzwTKT_lOKVkaz_ZVZO3!`PLby6r=EQU8t_r~O>6hcN^1-^yg(bv4;HWOd5 z=C^e=R7lU~_LtjV_A0eG(6j?y5+JL@s|THgbbzil+6gn5b7ZaVVcO=tFkj~3H~mV! z^sDJ?jMpfax(2_uy#%%vvdsHg>*l_5N^)Df;v9wF(C6IE(^VN zx|t+cy)MiZQtRg1Eq=G%8;K01wffOtl9>OVQDTeZhO{4y6R4ra!Lx zzlBeK{wcbdcT~ricG1q}rvxiSI0}B@2L`%7a`X%F#G4?5_pRrP!f8C!yi!IlK;8bq zYIEfUAxt>3`+J&47hAoSo423M&dj8+{S(-DX5m0iXe+aDZr{bFfA1Grymnfz?Q5b@ z+9#-m#)?i%i)O|$O{;$K-$tx|h_QL0+WWxu!ySwjq3GO|YAC+-B^7uqe3w3E6qEN{ zc+G;^_?I!Jr#=!AUfK4=+^ejM8+X~ARo~N7!wtK(@ zQZMr3R2->Nb8BdfW7eJ#zqvVOGU4I6$5iTZnG-dHG2O&x`3Yj?%5p#t5UBg~f*KWkA!CLw z$$Ii>WaS{me3_<>;@4*h)Oo~qi)P++dz#z+x5{~)c-6@47FL$x?6h;IFYG4Saa2y&kbo8hg zb@W(!c=?BfVPCiP|8eZjgN{0?G0a}omp;kh@o6_qAHm2o@Teuab_;b4QM!OReU&~M zje}Ot%8J|a0B--(IpXVI7hcX4ZCoWL2a55{fzWLfYa5y81(HcZ$^CWMBs^IPqgbC% zgA_t1PCD9G)Tg*_^EIWlDV|s44iXEHT@}v=(9m4O$~NcNiw;*!g;kytOhxG|CWBXv zAxj7&%QPpQlfu|o(r3|{n3el-F^6?-%-`k&v41Wu^W`eqVqNLQKb_%B4LFwEJWvVL zvded*cm+78+efd9dL-+K!vB`$>NT|JUt33teiMJEB#h&SmmXR6DXgyNS9MtpN5*w*I7A?%_UW(66?Itz*l zf-ELXOk^>!Zb==g(bF{rcq7M_(gh4T8UJW0-3xz&o}9qc^_>_2fq@!F&g(v;Rl#Y- z!aa6OjzS-$5j`8=Of5@~+#H7tCtu#Y5&J?a=2B=RRmA3%rG(r2A7p-y#^@&IaHQfCi(?BdX!0>!Dlq25w++ zYGL;c;>Y`DsP!)*Nh2ABR6D4i%afm02A{DSMAO>%lyGlW31sbeOtuT($jl)K!_j-@ zR5X7B*{0HHum#$sV|10qr51+i8q6GrrddvO1Ca79;yI2k{|skUnT|TM3<7ovon_#z zj{;Mm1PZ%oXlUyyZOTuw3e@$LlvcsMdUJVHfQN^Ng(V#vegT*|hE`P_!8S*Ff;zsQY+7p@H(TMmgi=2}9581M{S;Z_6FKm*WSvQMY%tl&2oeB;Q*NOUU#+ zjgNFR(MxqB&SSB3EnUprQ7>F(Wlusp)Ri!oI%vm%9szB+I%SyZ6l4t%g}YiOaHo!4 z)_5N^yaJ?Ahc4SJiY+-g8K2_D(?(x{%-P8=T~Lukm?1!^k?F6Jq~+n5Y}%#FVdn80 zBCV9BMxB{=Jm{NnP~5P{{N`5z+P!B(qV z7AFC?1LJ;d`_aCJ@Zho{zqxAGK>c|Fr{8>F zf*@Jju^gJGAtE{urq85>&k$umgRnHtU``H>@Vj3@)`!ckksH1amTpXBZJnJFAPu zgBrLa!1+c94aXgx5mtoV%J@U~ug%T!L4BYVemHyX%6UYb;&HGhli@n)g#{R0R?M@? z4AAEiif)F)(u#=a{%lr`Y$={fHyi6ioh3m6-ttJ;zJCdOZ3kzS(@8ykijkIi;tUsZ zZ-i$FA`^@YeG*U0!(1m@C_CWDd?r(A66$V<_!80DOG+Zj82!l(aCu;7&+?86=PiEv zT~gi*G{8l;@j;Cs@xSHuZqD{kbe(CNhH$T~yxW#p1xE5KKa-#(2G-@PBD|;?D{}1B zV93>O@o(+}k$+@!qHNr`ePUuFU&FGEqEDM;XKPSDO1B{sw6&UMhAP|NfEC|w?gK<@ z*(A`vYTsIpP;Ek*A{*HrA02|UMQy8JuRD)N?p67S71mWGYQ-{HUng~IPUdUC;kg1>DA){!~3^Ol;tF&{p#+2TNtpRpAAC?MXb zO;2};Y;*wUl-=gsTPWmJp%)VQFvy1`^eCsE=N@-H@EtbSSP}gso`1`6(r;%|^QgPO z%+8dd>*6q@c*?=nOE=#yUw-Q-{}UK0lH^DGX&Ubs8ydc$60HQ^Vd(x_aMO7Ai)7%h zHj!WO6ci(}_ka)%RHQ1yR+8wq*@eXNn+{O>>G=z$VIdNQQ|Z9Pe+uHeK(Yz@QA^*N z{t_*-^Vcu5WG?bsKSV;pO$=aPU+6M2*SJ4LtaP=^)BJ?S17Wgo16NH~1Q3{6ZxWW5SCk#|-uVEM`L{qeBc+YPJH(tD{F zFwULZ+ucn`ON;u2PYI!U7QO0z@?DC3s6iUh;=cY1hqMzv?@E-E34u(|?~&j0p9@M} z9wh6bqQHZJ6zt6{+MRr~fK!hQ5yg7vSB}tp5V%C|N?zjIx)S_~iW0qW;X+CwxXSuI z97*kKpTLLeqBxL@HfEy=)d9r5zg!}c2~uRsk>cSptAuP75Y1PbLGH&C66#l8`3HRv zsk>(0rlCtVqzwx1s5YBFONRUv60|88^S7QZfO6(Mv&qO+zLR;NLq{45t>)+DtpGn{ zFiV4bSrz&X-2>hVFt6x}0`#3`NTYFe2jpdK3Xl_~3v`v=Vg!P*pKGC+275k4^70uW zW$Wh)`8OhI)&gF=^ZjHf)*)YJUtW4>wC9Y2kF~FJT&X$n29?Oe#sj;B2(?rYyzYRv zW6KbO4?;g}rEypp&sheBzIsfCbHDP3jKUFfLG`RCqg-CzJ57<_ z*3_e{WvkbLM-!ji0JF^EM9D^xM^GfqUsrx#jpe*P-I|qKDR*@48g(hg^OAGG0xldW z1UZg&jTvi9riFVr$0N>n!83&CvP{$?dhSGQ`6MSZ92#S`@2yIx>pe1lc1zZiv=Ud( z2M!f@VY*5*l4Wl&octfIp8L*-8ZO3|wuFsT=9Y*9a|!|t9P|aVba(9o&8DhKqezsw zckTi4jEgZeDGqg2>(spiT6C{5iB&Ujm1TX_SjncRC_!S7g^jya=R9+Lzfe24l@=6@UOYH0KYPr!^Jl!!YRB{5F1YrR5^y*?_=hg?$<<$; z4KImV2!;K^TjFR2iM=6sIC7XVMsMAIeU|2F* zfBB@H=VzG;d1A1`^t755jLjWNt?ko2baMP zy8Na0a+ImcueC}GvbD;sr=VdgPzr=?XBFCO;KC>I1=H{$u9jKDv%cb4dx|$@45^7w<{{5l()}eVrHD%`=qM19O2#n zX_H{nsKmIWR=KUP?FGmS@FPfv!%ds&(hN;aLWG(~g-DxGV=51okZwsSi%afejXv04 zxl{J`lpqPg-kw*w)SQT^*M~beclqPlL>)c}3B5m{dX4lNkt1Sypck#jQRHRm#`)wm zgS;~6_#P}k^)v;Nl=gGy2Lzdaynh*&M2^nIXe}muT#@I&yP_PDpa^6#rzhQ6=1M|eMW0gNlHKg#kj=cAPh z>r9K%!&ibYv2Ud$+K|8|swcqM%=q1946F>&eMgsyTXpkvCvOS6Jk!(3x1}`7htnf!2D_XfYVmQKykC6Z?h4F0dOUsY8Hk-d z?6OC#&lsyvRs8c)j^14g7p=Dq19}Un-Hf`igiHHFKUhu`FC8FRM?^5TAN|I0Kitx= z+yJh!pwqe}TOh5JZ;L)U+fDPu!+Tpy8ApQ-hYvtSJg6_rZZ328l3{;OVbF&8CNcUf zk?=$UJMwz^856stbX9d1b=CC%uFd|rut1860?6^?a4{tL{vu%t#}E64s3VQbZAvL4bzp{#@F4nufO|t0NEAjOKUkaVIy0$lZi2LB9~|*QrWIn5BJ?a zJ~3~HMY{(_&25#1tsXc>n(h{Gp2f2>h>!n!kQEi{UvQTAr+)s`l1wMK|;1@Cw_CZ`J`CV{~#8i|14lXwnz2pT?(aawcp$-K0u#iRtN@ z>%wj5@xJ8RP^JnjV{|V(+NnwFk-utCK)XxdN@SWO=~IN+7iLx36L8nBcqMex^ozxo zviAM=*KUo6ID*O(G4IZbez|4F@15k9l6HkRHsKzIuF7QE*;bX>v1msworxL=eJibF zIlbot9t)BWAxGYvefv=N!vSU&Bd) z&rRD}B?CN#jWzDNE8kr07WcS+46M1TADu`SiqpcNUVzYCuVkN;EhG||@L>FN`UjdN zArq4cE`NlEOQ01gaDB7*3%R=UA2p6UFLFk2?YDE+ZG!XKa+r7D(;}~wAa~3pU`4lt z|NK$q0F0`qkUxL^{CV$FGTF#1h>W)&nPrmHT`u!HkDQqOjEL@vuBkQJslT7#Kbip- zd;Whu47rT@%}_lpH`ICD-qL-T#@p6s2~pv7;8!&U8e4xxZcQ7T!kpsAh%?zM%>?xh zbrWcK%vA+VBr1*CBgsdeGKVH;*A}Ixrz4Fwx_u!n%Xh_@Z=2m3*K|`Nx$yhB_n})n zW#5sa=!X`8g6nqPhF@2~njk0FB1t^pUnVYqlrf zfMXoeiEMYyZ;IjmcwZN7Btv+ZSaa*uNgLEohgVOo9Tp(Q_)@5;-;TPR>*RFiVxtL^ z&l+xIdbqisY4>nHop5EI_;|=gPMP-|e|{7i1sW-;R$kX= zCpI2dGb6G#N7Lb^oyTIF$BDn-jpWec0g4PFuY`Sia)s8Z+SQtp=V2MndB5YG&2 zze0B6_c`RD!Qx5!)n3*Hvwn+I2cn=yy~A<_8ZBDJoqQpgIGTwEq92ZS+n5%r_D>Yr zEkve&zK$=DmII@#*l65vVI@LCFJndF!2=NMyD{*A!6rGhG;xpWFKm_H2JOo}((-`c z(i!yDSA9(^uZU zeH%%X2M!C6W`Ow+yGzdY-Sy!Ec&S#kyQ$UT6vV`|LAGGT<6zIu|308W~q04AH>5Om!#JojrQMe_-c_H5kwD_NM z8tdB!VB)~ApW%wwWm_qNxl9|g!44yXICWmv*Bu5CT`|2=6ECPv3f}PhI~+)D%Nk9@ zLA}B6TT}RUQ=i)%e=E0wd~)#u)$f={l|;Lh7tYVJ(yt9JvDKjN%jvpkC{i-$6LPss zPLYlpOsMjqA6DD02U-wFT{_Obpjt@vI*FW|j)2CZGQ1uv^VkAq|BpUifh=+z^mvGu z<9yomRmjG|wjvG02 zO&zqh6Z^7VFu`7hxWA)9X$YTdZ9P4K@qrc++uE{K(87{Uy$*N~BYrmEh+wVq;?LMF za_TSUR`vAs0Cj$)^p&5{^@{v!dU1nUN_P^&FuAHb0x%=!>oDSLR3-=BizWCa1yAR%;E9Iyld3taJ$L|3J%;R{i^6MD?s zSWXT$esTeB+UUs>zZW>@IxwLC`A5af%1|?L1gg;|h%6O1QBok0$tG z6ZYp$2q2zUy`a|Q(D}o9RUtLUo`j02DxZ^b;fHJ@xHshK9tziRSe{+DYIqsB-A5g_{<}tG%`4x*Zs1j?UA)>C;RyEPY-T) zCWZH_Ft{rt=AFvQ%F~ip_$`!Vu2%nz7WX&;Mky+gt1Q4}+@0diqjg`tXhpYU2sau}DvRGt^~m2-zu5vcI=@7cX8C z-S4zYIIvOmknOs(Mezy?0C!cSr2C2?P+lJQ<ycUxGLRL5%yC`cD{ry=T&TIKd-Vi!Ss-m`;kSn+u)y*XFo4fec%^Q2bHzvRt6ccvZcf`!TXE}2_7o|d;%HEHS@km~ zKLgZ|uKcE_5K%WZ2A0YMX-xnH)dU4H;f6o+m-8690+9w0F?Vk*d6 zNik`Lq=4Zv#}f$CqkwR-1m2dffW)+?7IFb_MTr-4+k>^iXpv2Q+)VAk5tK6Pg+=A~ zD@dUDp{Vm_`R;5C0Ja|@Be%Py2wQD>7ufayuh+dP8LJT_I@R-U^8}%<|2Pz-wivPB zj9qxCun@Lt{i!mW`=cxilG^|~N+R{sn|yOr`kNZ9HM)YUhy8!6_F_vbclAzV=at}CHL{37e@2n98+6jA?ppx-qD5ce;HGL- zH1(K#@pVcpBkkL-{nGpo)vcf9yZ@Eli1HE2R^*$Az4ZJuYV38@ah-BOHobg)YCu)!#+;d1-KOLX}JMz#t{eM)0kz|YrSiI7IqeK26c)n zH8$4GPyhRQkh|$ZDa~j#o9ySxj9QOav`?!1H5OV=&rv+E^SN`SF-gjg1B-sxCq;Q& z7cuNF-GL&XUqiRub>i-(v6) zYHCB(1z~>Txf1WKwzaamPWI+3ZZl_1wK?o0zz`PO8&nBSxGxx#C{FQjkDs7m>Hvk_ z_PXt|*j*EcM_ydZy--@$@TkdjDRTBuUG+H4ht7Dlk%6__ITd|S0NmBRN;7;*H5w@p zP5wa#A-V}z0l$$9!y>z+_m@}A4fJ}YuDdqFl;Bc5aHkD~2m=(Led<@%SK7)<`6UAf z4F@l;ibts#w>;J3e!p=1St52sxQ8rx$83pt9KDI7{JCNZGsnag=3luM6RQm?_fKfM zzy+3|;(B*!nI%82G8by*fyX0NjCiVo&*Z>{_T+eof^Oz-Gb^y}QngKsqo0-bH~-^- z^@b8n@uL5mH?eRICmbJ`+?55@?#}BA%xy2mA=(TBz#o}?>na)9P8)k(dXhYm2D^Y+ zpRC#f9;gim_|@cxRgE@289p+LcFoRF$q`RW;;_W$8!=W^4(s0wP>s|!`oPD)CfQnW z8kt^tDy;T+ywukWyYWf=sppE!uiR?7)KcL$FU3x9qDU0kb85=BZ=+;jn{ zBM`W40hPnX!FdodKOc2;9iN~i-bIlw@|rDXu(ID3TsCaW^t^yhWn2GNDSgtW*i#Ke z6!Eo$$*r;Oq4KYGx~WAkFp$Hz-V%es_A^|inSO{yMNt131KdjwR#UN4lENu=B5LdueCgY4~}l`aBI11P0-Lx_K3d+ z&yCDl1n$f#pfQ(C&r0a*cqhKp&vd#-iJ+*yfuko*EwcFNmysZ9R=*Jg0iw@_aI`WO zn9Zfz%KvB@*s34FMzZh`u)OSm?nR2IcvsJ$weGw8up1OTKG*=-J7S+X{TT$Gb6p9? zptOPns|Ye40Fe*_S+is>FE4GaONr1R)tfTc5&{4APV{$%on~1Hum~u$)m>GnX}LJq z#G>N#*KGf@g|)r~z>5};N&=ZKi zeP4;e`j~VxP>{xiI znRowBwT_Wq0zAXu7I7V{Z^6NJ-EIyHVjv^anV~k+5|u>6_8p2_08PBPB5;4bvz=G+ zZJ0-yRpoptv|1c-UTitASh@|a;@^zsu7A$5xhr%9xyN}TCOdY`E_Lr2Xe0U03g6h| zC!nSOcPYkJjYMA4-N+A89c;Zuji2~H6PxQP?I8|M#Pj-aIol-nFQMAs+e3UU+Q8^d zo0nA{Ut-h+EOl}W{<0Rilu)>p8ej#ludgd}5~Sti-t*93S(VVY+nUB-q;$+|6bXuQ=nlDHUCvtQIbb=#z?B0CE4%ac5 zTeGDf-y1%#W^#-^brY;tHZYRxsUI9z7PS9n6O|b{{{_h58ZrMkRKOo1g#(pe&+V09 zG>+kaQ(;IU=CUn$rv@ybbe4?(t1ofJVSefZ>N%;PDT#jN+4PKu=cyQP8AT7IzO@PU zb|-%gR9^F^Ri_u}$;5h)!QOdG$$A&Va6Q-X(%%#7S{Izowkb$ouHJYWk`qCj9e=KYad$R5>~% zgvO19g(V*`U(D2|0ei@ZSOaBb|gBxip5t zvDcEO<>gJ%U?Y+~!*N4yiKsRLvjpwpvm_rPURRIcFz!o*Gx|1Cw4_&`43=qCachx`%Ilrg`XD(j8aCYc$}i%|zf;oM`^@*wLfS>< zkk-%+TJ|f{IZ$O+!(_loNv4b(&(W_NHw)49@nXD|O(1#6n~LA!eK=z*%{&7E{W}WF z^99ABk!E?>k8|#^>H*Ad)X)w#iRPSOCZBu$d7R{_X3aWoUs4f5!gDmOd(Hr)^yt}~ z$y&{~{|k)~iaipHyz`vdTMjzF|7U=T9L}rCOH>0Rh<8~~xKSSeL(Mo7n6kq35{vWT zQ|9AWQbSVg4n13n3p?1<{gfmUGcj=k119#@x+e#J5ll^ewR`Ex!E=k}b5^Dm)*QmX z9n%IpTTtHk-9=LKPnw0C58}CfS6B1Pe;X0%i{9Y6V~l^iJr-1TWcTU7a64aT!r}DZ z?HL1t7p~EutP9i3`nc&&zJ&yws3ROMt!{5es)-t5@Gxs$y2^)tyS5X7uX5Ge9QMre z6r_7oFN#BZIV48uwJFob6l#p5JLjza{dL?m?&hhXmP|k?P%-brz)&1=22FD1VUV&k zv8sgWB_*Q1exEN9g$tR9KPwl!Ne2~8y-6|AFtgcduzP6nZYBG^l90tt9*kM>Y5XQS zc85gy+3ti}{8DVRkgc(Mv)^>Q5buiW-ImmWLd|>nFaEAhfgOmJjbTYNZwJu@KTVGv zS$a=TTkLF5oGqqvEb}cE9MF}6H8rEkQRkp>XeZnIt8#)<5$qar#^9U)aI=v*n-Dm1 zhAUKj6r(73MLA#w*mB>}MIqI!AUxcm)`>8`Sh)+`;SC+n-MkN%1(H>y)ZU#koj%kby^Ag+yFE%iQR4JRcvon* z=pmt7`SMzq!`!7v7CLdOE)73B$0w?3G!ybMj!w?b7%j7}Dw%^ad2mkiHDmz{8CAMA ztjol3(2GSx=f!=cC|qBA05@<-O^NM`5hjO)xenk40we@SV6#lGxw*U7W}k~BHGnj^ zX9t)q^N~8w9=r^}{LJ%%ecz`|{bM0_aR*&{qg(Xv2+P}Ge8AYBdM}1)G%|BfTT)vu z-{3R+FM{HY%E_;`Lvak};V!_-#>U2N7k#otdYR%o?`N+yLS*Updm;Iq9S^uilOpJ# zybXMzj$V`Xdws9AeV}_}3aaA}L5$r(jrM>F)7sh^miLV(i+-16NRX9v9&U(c$2hww zG*{$XV%NY?yEPUVo|&CMBUT}7-5O7k+Jv&TmXW_IBa!hr3s~)yxvoFP@^wEt z{YVs|7q<7ujVNB)W(};=yE0B&SKidsUVq^rs}8dm$(75K>)U>`szm-_J(}oww98p! zvvap7v^1S;^IOeB?LIvI_PPH$oTRg&8T+?$awqxs<6k%TZ|`izfgz=%7h)?I`$J3K z_~PQ?JZ|?6XSN4yb$@^26)9+0#{$=dx0Z*|;*y4D>9sh>khR=|Zd}GMOtt_Ao5JDw z!a!;@nFeK~MIu<+stTQt@b6yciHmQfc$(b7@n%)|Q%zD+yy`yM)1|bDzP=ag?yRYw+~eR79RFNK$0GqR zMtSu=H5;Y0C;3mC3G8TE^|@=nUX+Do0S|j~WkTN@s|#d}aEAmY6J%Ji3bcK2z(d4@ zLdDAD=a*Z=J|$~yVfq>3&~F5hej2+P*$dIpNiK-5x6s=&Ij6jBdVeqpO=`iCKU%1z zwe|IzH{qCV@0b;zjh5y#%K2hNA03(y6f}-A-Sj;9 ze5m#A5EXY``_%PfwOE>5NmQZBn4qA62H>l2v>_1@DR!#HhL&5JF|^;leJfSFHKSj^ zXDXLvG4KII234BvF1Ja-3;>hPyyb**mmg_|%M3jlKJhFw^x+rB-MmPfh_NJI8~hsk zuX7Ip8(Z?tK-5VCVjkJw&ca^j7_7f0@eb>+T%SN6z^7T=l9xbdpbr2^-F$@U`_?3oxCIN;R~7H4q-Y>iF(KQK&_XT1_k2W2cc?=EjDdElC2w6V~1?J#cV$F-$> zBg4?GEh>&{yLe*#{L)kF_nz1CqN2Y!+uFR*QejeGYUBKsW5J@e;No|4+=p&P?b08A zv{Tx85)v9%;)MRY$?!4NQ?tyZ=6%wU`bu&78fYeq(TTlM`I>mJac+-Y>zgo@k!ps= zU&a6<-s0>*3Go|FZmk=6d|+6*-F-`p)G{Ch@Jc zt3*MFu^&RD?OWdo<7`m%XLYiTC4cNtzVe0`Es7ZX{P}^ek4u+}+&xKNX`WxUkji0$ zWs}2NG{Df4&o9amx&ri9otINRXL}(-t3&!!sPKOn&wuoigFaHqjx!5KXDv8KovAkt z(-3W~nm}d=Z}snZEny1stvWbExDWM}wf9sc&74@zl~_&A&p#M1O8++{_*&*CfjsxdJFmav9f`MQUYa%=Q9X7U15Y+zxLP1)xBc=(0(%sYw12J~UfFTw8B zPre0v3|VzLmqs!0@!c^2PjPb^QbnsI~U>+2nmM7@>*&!(shbVY|B` zrgqdptI1rRh-yOT1L|SQbLvT@2F-cU#C+Xz7Q`G}VyKUtf4wz%=Kkx?{q@l%{ChUW z!At2rT>R`m|BF1<7-;sr{@J+X^efncQzRlro;Sa zoo-IG{Dx|AxsQad?ihIQ(c$?xEDe1xGEpqL4#%-xdj;@WIs-TeA?K%~r&o*@$v~oQ z%x(GmP-lSB(Z_)5YA(0^{F}Eq`vU?3irX?%Z$@FD&yf6memr02UMrkczsd7Tq+(~a z{Hx>c!V9X2DESBk9rtX<)4l$p2HRCIcfX{Q&b3-0>zVHhv&%XHjz?cVng3K_D6PTZ z4*9`qxOJ_!k?WWm|LiI8J_A$1qf>C}T4vG4ty(?zai+394oPASW^oiT!AzNku3P4z z-cO>e8%UI@XT|V6e>HQI4)fT{-{dx=PR(2gHIIo)odx+7G& zjY%0~bfh@!l2h3toQya*FZ8piFd8~L0{CNdnS?|c%qWoPXoJ(To+sdO@TB4A^4|PZ z_nDP1zg%2-=Y1h>oBmvLgGHRN#_Vyd$N;y-zAEadw0?wUrKtGwiyc} zT`rfk7UfUM0ivqCLt|I$@>mHtY@R{5A|C*vcS(gNUlVwqnd?Zv3mYCC)tSiya^}%q zL>J^oYN?TqQ135^sC~zDudTgZB_%A9QYc(G#;hT9O5b8lKPftZ3PbVj|=M?Ukcyh^4PrTW%wmD81FzkTNG$=5_mJdIRR>xD2IxJLoF zZ2IOzHqVFthqJrF)+D;=DzFkbrrdyAzIB=BR~6hMCMONtQV%!fxog5de5f?|j2=Bx z1GX4j5eVhhe1OC4ZR8OY_WTI0F!lBTBFU%oh=UZ^UmMUAy4Yg4XI6itb#g>U=)5qo~WC-X!0q_eYD1U5l8B-t>FA+Ivzj{|)zC=NC zaP)K1KdEx;14!Zm#`qw_^TNBrrbWH0`>aI776CjV@luqJ)2d&;pg_Yg%renxU|)1F z5`$d4wYfRXX=4^VFW!SeiG+kig{z3Ds8OR?^cvE_ze&me3XTrgsx7FJi$9=5SQb)+B;T4WFP3gj&)ad`^;CB*vu2=8MR@UCv z^xP5Nv9G9gdL{M_(R;vRibUrTJ=h^#ORy483UI}b_o&O+8c*JUqosH!#L(8%X-4)V zY5Glu6A&AaY!f6QqjLxmY$AQ|3-!8oG3n6lc$*uWRK9s=kfWjhVd;j3OG0Gg z8kDXHVs3Ks%eQ~MyTo9T@0vRlo=Jmu(@*yxostAQTwX$*a52q~v&*tKao{*;K665A zr0~2D>e;aUJrCkGmfDWpEBkMVE?KVr-TBQWP?F1>l1H!-qObdN&S=tw`nUvz(8Fq4 z#DUEc>XNB1r9jyhfNgUghBz6EK6Ohh^HxNpDzKUAiS!t&zV1r059bUwOxj>S~Jqk8@(}gjOr0F?}hflSu#hTup%POWTt$ zt61MPO0;A?;!Yo@wE5N{7^UDq(D;^T2_z&v-!7-9E(~QzAi55C+v_YVK33Zv<-<2b zEy}NnjyXw;?oFOfA5^jEAVs?U>_r@n3T2!3<0tC3p5NAxcIm+`AZDtQI&LSc8WOV8h?wFMFUHz3ZEY5y4 z_g$KJoJ?7%SX6d1X@S1S2QSpV zv`Xfr+7zoZsrzi|_pT1_hUK3r2ExPU<}ZRfH1jCctb`F>_E?;V(L5C&dp3#9)o3br zH`O%Zn|IW=`Ai8Yi+C@eECGW08!##RaW)be!f#Y?`leG$pEl zgS^Z?H1HlVR|?%fnQBStepVMm+6GC~4`a}wyQxO?7QL3rzIM6^lzfof?+MwnAVsmf z+y??f4hB_wBzBrM({uS;53-oPu7&IGhM)>q-578j9DaPn8%b{}WGwW*uY+a7)k|9a zJt~LR*tgs}AQmo?*n$c5M&|yuj#4eVe`rKcqWev+v4)?|@yhIZGDx*NNO;G~4>*xmeJ4`DhFL`jd-I+wN83u?nRxd4@ z`1b-t^WQgmx)Z`23QrthUPI2j-_yVr1msxHt?}f*HuDw)+V=B?Y9cefgR+2<7nL_dMTW|2{tKYUAdbbhBly zc>V%a8>^qkzzqxv2GL)Xc#mqA)Y)qB58b?_diia%Cu|Mi(oEYr+5bPXzB``l{(Ju> z3MH~CGP7q9LPp8ndynibdt|1N%ARGFz4s^?MVXPkG7`y3WDCFZdcW0uf4;weJbGlj zU*q{a&vUMGUDuJ#vQpkZX?OchTBz#r4c*lMxP{Hr5|+iy>xu|BDp{ZA#wRV&`xOEY z_r(9?9m*`25)2<6r7i#N2~;1{poerYlNU5w!Sva?P}Uz8_FkQjWAdhPzNhqN3p6{ zgZ3O5*?F?K8;83;R=3kMi?DaSIjE*844Mh!#E*YY2=n|53HzketbBNpAh+<1duFYC zQExoW{@yP)N}GF}67#*k46TwGk&u2lm252!QbqJBOAA~ZB) z4j1VS*Ekwg$RB)xHoQf5a$b+h0(hVTgmSZRV4l1GhL>#umDlCAekYFenAGLRRQA89z6^+wU zr{gk>`#$*=|L0Yo9pi1q-WS@a@|;GQ48v>6YAoSi4V6#y$j_iXV%!3&-YRT7**mQtV}eM+ifRA&rLPypXoo z)tDSrP23duVV}5MGHG*pSczcY>mKK&@p{{@V-6wj0#E^omG$SMN27oJe5PQX zA;**w)gtM|MJ}G!-S-TBh9^yc9CW-9Xr`+%6Fw3?zUAs#S%~{%tg3(>xC6%5$YY|T z8-RudlT~uEvXI#!nio92e|pr*+mb8m^DpjnK%`F`1i zxwp2nnaTC0*55k0`7(c&FyURcz|KR~=vQB0Dr@Ij#3cde_hF<65#i3AF9@N}Zj`%I z@aom8fag_o)jX>(qbCrl|KkPF9u133y4N&9m=A2xiWH$%fdP@sG5zJEo6ynNTAf;* zbJN)_5iiZtYdwmp969i&YV1WAtLPh z{S%D%lnLjnDB#K$)8#9SuXy+FUF8Ft7m&9q32(+;I$Ud|1{JFMZg|qC5IW8Ar-Bw* z3#gfcVhnf>PVMFod5TM`pbrr-aAht3lG8#}?K1Ohha}H52U7waAgwUhWagRt%H@va zzEXQsFHO8WD}w$G5+mc0HKRwi=_F<4dkkT_Sk~s38j!` zXOwTz$FNH)rBG2!pQ(EyIJWXa6#k4@9PW4V-WaHq9dWFGJ~+65-6KD zP^K10hmIh(X;?0Aza^-dBYWm&F26YJqrNTqZ;k{$j?7DEoWMsAu+J=9dxo;X>W;)+ z=tx`fA_@U7Sr{+{;t<+h3Vw%5cDLMQoP#q?WKPVKi{Cz7L^c>6q{|S0AHKPU*s{<} zYhuC%G2*&sBzI7cui9E9e}NrI)&LXjo+o>1P^-|`Je86{A>#Dw;i)IbbQ9!sD#RPv zXXRv?{r0URdI}s6r9)?;qfa}2QGjaJMjYl$xx$3th=_<~$_eO=Hy&=5oFbsA)Kz1A zUge_~^HKK@SSHTS&V|*}G)a2~*`wwIHy!XMkiVRNlZI|Y%HSa{2>XwN4Jo1Yjpw%h zrx$LnPWtrR2=g^q03K1QO_)3H}`6mGeKj zdul!3SoOXHF`W*XLWjz|!5YCsml^F+{JsU~2yU{d-<$ zVRd%0UA?*n{CLB1GZ`R#!@f7t*4_cpv$(&ere?hR1rn0X9xZE*>9R`}md_^-)v_#b z?FC2KE4v9|DY3T>>(aEm@fUjxLcT?qzakz zPe(Q)Sl1DLDxr<<@2@!R`Hu>Q zwm?;egoMN@qiOJ9?t-`Nr;KjAD+q`_wXsJL$LXf?w zHT|Al)H640le)i~=PZbJe5~tEFKCb-9SRN9zu-aN6W100ue~51%X2un@6ACzES??0 zAjKGbg5EXr$G!M`$>S67T;#_r4lM#(ZicL^b+(fX=y(dZ9$1bO>lUm%7LDDqu9ocx z1QNaYYz9Ur82OZG0V1D<2KnzcAu!B!&nIpu9{ZlBXYRB7wiiU)!k4J5#+diz`FL8+ zy7_-U13MWimOcNYerLRbpR(u(3e_%d;Zvn3>=qmO$&(RB6#Z4^2XZCn3Ve=J4sE

j`JO=tZvKd>3)g_-d3M3X^-%;<^;LjUf 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

sd5X^Xsqh2b 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 NSbl-NmCTsTe*=`4QJ4S# literal 270636 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 fxFllHwa!C9Ha1Ve&jj$FD&?0Lue0Hv zFw)8B>FJHezrGoEI}#v<#=~ktJCKPXJAXcT%YOOPUrz=EN<*qL9l*c*fUYxjDe37i zUcIXGfXT|Z(Zim^R13bZyT+=02`DHiWO`3uziQ!eWV|Fel9t?l^ePfpm@4kDHR$s6|&?TW-Y%w zPtVt$N2&nUF#-{Iz0<)pUnve(&vHQ20ky4|vgdIs{&w@VqiC_yEiIl%*WC?u#+; zLJ?=pLB>~lLrLmajg>StZ$N?$MsL)vp@6_10?~qw;q2ZZsXUC)e%p$%e1=G)W!wBE ze{~)A%T?UTgsC@uqG1qjL0MJLhbV2mwF9dVbEeqj6~~w=}VYpyf{<_tbRqE11*~- z?x|>}%(?oIyw{8>3Rh=CHQcW!D|FC(4S;VW;j?EuZ;#18U2;E#j7IhAA1f-{ z`QB$%LX}K^{OZp?{_dwX8X*pebxlmir+>3*J2DB5v)7US@{Rxfqg1$J$h0=1 zZ8fnh|Kmfy-W>6fda}XO|L&tggy^pu@x(};W&X=`-hrvpVo1N)&)@E`B+B`48c8;k z@BiHW-+dZ>=ZZ%a{%r5R{PCYh=yM6_EpPm^UMtamp6>4+;ckGv_-|j_59RixPrUyv z)qj5Je_6;|-oms0?xP-z_*CIEer#v7ZvE~h|MPdZCr2p$%eVe>-SM~G4FVX8&)cH@ zyLD29f9Vm(Htk5d_ppc#crpS4W#TVM$@%TcplUcy#M^n{%cm!Jy?~yr&vd}SyFhPy zpitA3J7JOYalKyKgAoJlrOQ>|C}R*YPiKWF<9`k4^u6q1S-xWgjlYUTNV!a6&ELIw z(-tp=`JL8gs(Hid(jcv?Z!+%tQ`D@tE7gYIF%r+IUKu=K@btPDw)qT?$`dt#=WKE(9Q?k%%_Gs8>G%F#@g*oo|!t%QJQhU}c=KD*x`0Bl}+O!WEE48@2ylPo-@JS(2(($N0VG|0gj`nxfZUP{Q zMmyU? zS~LIH&}FN;h;uDYhsHt|xy?G~vMMso%kF=EDna4!-t}O2(pty9&oGm8kT#Q*@VOkU zM7XinqM;OThFzZ3o?UO-@h%!>%;n2xnS{_V@vjKlGkDh2*`4c9ht;4+<-%(GU^PjI z)vQloKAu9?{Xv{`a32Lt_w#g3UAbrWc45E|e$05a?FXk#!ws+>CsGJFPB*d8(TSOo zZIU7=qYjECpxfssSnFck>D3&T%C_w1d*c)bvUQ&oEtUuJcBiW+IEix)6j)}>JYfw4 zPbxT!-wb+FsqkW6y^I(Dtg7RZpPk)mMGRp{y8+AO^Bw5(NPe&A4jEPYa}ih*c2}5r zAS1C&DC=9`9*ZeN>IdI;$5pwM`6NRc&A*4`;@h=La4K)at7zfS2p*i{mO}H7^C#NL z#IL$!*^GCZ1f=mHQ5HA4?uw(Kh@G}*j@+G)O!Bw9nuF_}WjoZH5$2gz57?NQ8=9ND zyMgmbLP*H-=_6?tG7`Owrqe?HWOExD7B)t3m<)7pDAOlMTVaUhqOvKnEc|h%uFoov zM@S8;2qbL$y;UofJS#SvUiDoMT;i){*idqew#F6biCZgxTL_XqA01ipczR-fm5 zIB>yC{TI=w)U4v{n&FQJFr-zIt!?X>3(WYKvq>r8_27o(I1!8HfI>9vwPCrU9@o%z zA#E^qCb`ng84b5;bd0Zd5$>zrR)4T=OGc%E7qf)%AFm}u=wF#g8~(*NDki4FY3pII zk)a`P0r|Zw?Xu!C3$3F-6Vzgn3kyT;J{VbOHf@ddc#~sBPp>o>V`pWx0zHgP?%KdC z-OaUpHi7HD@4O~(F>tGdeZoy-R?Y;Qs19y8qw9id5f_JRcwwsW1_m`N8@u@(SwCEa z8|SS8lC05EZTb>7gr}#!E*!tgc_f<&8J2}cRX0J6rVB2ml$C;LjzVm(9?4tYC==){ z$t89HdZ$@bWJDSSL`6jnV{Ee{*X@+qG+NLwEk~6|!f%Mi|O|Io?d6XZDpJb+);# zOJu@o(mKPH{IZ0YgUn$Ov^G2&L4GEFP+I(M!1Z31T-;OQwbfNumXQiHvZ<}+s|8q( z?>Y~&kjl?4xgC`>=fK<^S;3w6V+JQmOtW%HAc+RQO1PPV5^J~2!AEb!D$XSemAdgP zcH||hku9y;E>xakBf{0A)cZp>JhRnG)9Ge8snbO@l@P1Geu+E?RK|{)WyjJx5j6h| zsriB<&np$8N@xX$zuLj+ET-Z5FYJ}spy}p3QJ3mBj#s-=BdHZ*fX$$#p%KBv%*goY z;hx0-)Ng8}tL2PZqVAJ;jO`EcPJa5)>^tT(vA0ywV}ghlcS9Q>w-Rvk@JSu)`>|$2 z?7IXlTz3IM(vy836L#Xq6b`$7p@D`T@%jSPo?`RX)!iP)uisl7OSf>DI{m#~C(iF* zzXV<%VxE^Tj$i*7E^)Xy-aUyGrzsHhxu+rV1;--eh!7cDXvcg_OmMR5Yg3alIptb5 z&qYH4B$QvT-s1$cSS;wP2*a%{i>xQKp|Q^5_Y$XQrt7{R(COlcmYrVBJo3zLji{3` zceSL5R~ytcZy})ebcm3{cR;FG5}w7UW?k)}qYs!q7Mf~1RxJi}-9#Jxtk;;^E;Q|U zzIxQgub!Pb7~(}ZC=ElP+9ze6uc9ITs^EsEi&xHg)rzO$F*Y?TeWrd2{~baWZmk)6 zxRx_Xo*w}S3x3%5v8HIDx7anE+foFJlXkVbKRE((~FuA)GaP&Tf`_9b6aMiUAgBK|EFFbiKsk-Gu)&p z-yNHhFc9abZTiEl7`QdUbKyK05OPjw@HYqHPM*@uKZlB@Yv@DS;Z1*R?LV%G=1?I? z&v6(={12bsrj3lY$!BVp>W<`@!2bEabtEd|JW`=hMi$%z=Rd^o-p( z3ahbd=a1}x=QZ@2SeOM2ONQ~&JaIIs*O&`DGQwe}J-ax-t_1JU`P5*8D6FJAiC zd3_}$4-c$$b+P?IssdI;4&=vMnrtQ;uX@3hjg>*kJ5?B54+jgi%N+S!=CG~goDX-V zm{VYgQG)nOvPiX;S{^XdD8{Cl7x3OzrW=rF@6mev?v>3C`W25aNpk3*^XS4&7M2k@ zPjgBNO{&tLV&VfByj4uX{O>fLVhf4rI(2BeKXMZ%6fkjXBxORs^5a+GFV7OdKk*Vr zOaxW&N2Fr9IOw|aPvkGP(#5Nxyw<|G#o>+l4V6Umz9gdecHQLY=;&08o3G_<7`l1riR=B>w_ZTJ z^@3kr!w!Cx-h`x>@=bVaJKjqj7vj|nqQ1Yf4hoH|3^$Hu$^rr>jG7-P0M6Z)+LgtU zrB9)`WW&hNbpJ|^3*eN3&9>l~78@(&y6kN_>g1Z4snbmc?EdhkOt&W1(>QKxxx0S# zdTp|N0`d)#hi?&X#tX2D=gSHQLm7!fL%G8OFF~kKSFQ`9>=k^S_#(Kdqso}(G3du3 z0~Le}w~%Z57UAlZ#D0!}JN86G11$!g;ruD5mxG#>I7_2&Pnr<3AbV-^+sg}_wfpDm zbxMRHuUT**OWeBkIW4O^l`t0)v;x>%aiDs8I^1}G+%)Bs&=1a24jFF*fZ6vpO zcR`)DKk?;V5NW%oV4>>k>yzZ%>|%ObiXn&Y;NZ}21-FyasIhhVGIVEyAgF9MHLY<3 zi?m1=VM4Xk0-zYZ0j6E09RWqZcr1V)%s_s}Sia@3;CG@;oAJN+UixY3@oEpWve33d zaEWyvVUryDhG{&RcMwk2#r+h#s;AfAdo82m)>Ii^WVuX$IH=$|a8QO-&9_d2GC)Nm zs_Oy+>ue=rZFYP`%JGJaD11vdVAx59LZaV?bPnF2-Zx)4(5)9qJ-@8Y@=M-e^7Hcx zD*lmdqyk7%W=3?09DV|FrfQ!&_?9A2lt{nA6-RsGG}UT86U_-LF?chdO`}nS@T48Y zctW(?agBOzHyR47>1l7BYU$@T;suxpNl)Q28M0{3qvTq-NYCu^#cFSsQh)wmZdyF? zbV2|a;oErNhJ^J9Ea%!|-3t(oR~w0@%Lt#(HtNDZf8~DVN5gLqi)ZK!EtOK0?j*39 zB)#yaa5RDb_|SnNH#NuIT}x=pUOJp(0@?}#+i`8KD=jo4BDF%JTZkN*5Ok|J8HNxj zx<}Gp&2sW=iGW>QF61S%l(Vv7`eJ)&kXrX?qI$_G>c-5^)+5NJw@@DjhjAB)AP~93 zbO_?Ezj{WqdWPsM$<_1^mE`y;+N1?=yNFRSJum@aD^#xP9;ZjIPn1>Il(yvvdALt5^d*I;y!s!Rr&9Fo?Oq<+X}L9DYnVkdWdDKek3Fi)0<#LZ z_+QgF|06pjdKZlLS9KfO|0aKbJowns{eSUvp$W`RHJaj&C1ex#u{PLr|dz-A;qqbp(O(!Ovd;35>@>4pR_Exk9!WKVRJN zWb;bV9{?L?eYy=GP`<dT`+n1|G*#8)RQPUi z_#vj;bvxQ}gFJ5Iw{L5ME>J-;R`+V@dr85lKD3@qlnf@l_MkUYtK=J7$vhNg0g#$D z#TIm&X`>AgYPV#!X@Ej^3h1Wh%MhL1qTPE~4SD5Ms7UJ64sGOb#3Q6-Ok9=+Qm1y_O%c1vw%6vRA$K(9{el{fPg zlWqA%C?F_9R(0eU;*%Zl@cg?s4{Tiy`#)Jk8XHR7k(X}+yypxKMY^1cpiNi0x*}z_ zZL2IKE~eWO0(NU^Y9Q269s`7h_lGCJx~Wv0OiU?EBu#WrZqWonmhDX3|!tYkNyEJJQ%tu5f10Hj6&%GAV8L|a*? z51&2>SWlmGpSlutkT_@Fl9&KiiTe~Av;5sSS1p_G-xT)S(O|TL^=NXsX-En?!Aw#Smz4((l{`WQ?4u2_shEGY}dV_IZ!k3FGsl@?rb8M z`bTRqNAt=0U0G^5@zG~R*TFg}LI6CfPvX|Z; zt|^}%(@%IyC_~dwQLt3S@rOPT@lYfyRAV~$Y^PgG9c&KH zeF9oHWGEESY&Rk`u+nzJ#Cm zMpU@?>-GxG4d*pKA{Lb_?Sj+c6g)ahKwU2rK0M}R{x zUPMB7ykEXd%f0%q!q>NwWFnbagja-V$X(&GwYNUG2+%;6&~rb*p+}P~F*l7G&$~Qt zCuoFQr1-iYG6iqxq~G8*t79p@D*8bkN)?Wb=k{CPCJJF8H z?v4&`YGA0gV~QQsUqYEnh(NA7nHLxNu7}&v-mnUN9h7x&-L+Iv2`PJ9j@79~x@%(0 zZmXp-=^ahoLGQBOF6W2fOCZ}3r8!0cOu@O?IUT=a;cF79sAvI4za!26+`nh;`Om^$Q>^FI38`+-IS*H zj!=-cJ=Yc|5yLH)9sJG2^5wA-^*|vk+~~d+d?D+JRSl7<+J~bqRh^lw50q~E@;4=z zcBc~p3qB_Xp~Vm90Tv`EkpJKyFG)?GJ5dxXus-gU*6yvl&mNh?Uo}sAOS)kb>WYuZ zEOYbsS`>UYvS@!AKVIo^T87@cU6fF$i^YjiX$$oDI{?b7%SpbS+&bFWbLSFOq~Gy% z3Fi9=v?6kE^noIM6ubR$1Tq>Qvd|J6pG**@mM4kM^yL}@11%#%Lr!5NTlWhriejbx zc4dQko~qnonP56o%opwCPLYMg?cPKw5|+(y48GSNX}gSFE_K|e1~RMScJ9)*zg$LI z6iKdtv%z>mR7%K*a>|K@;HIPc4PVAeqb3`peksgNt@QV}Ep0OkU25XTI*UpOsb|G{ z12vukoAa|&AJHyFYg>dQmt=NI>=LE&aOyIQ{0j%ks2F5kFNyVz&JU%?=zgH*%A$B2 zq*Gl*m3F@BwjuYC;prK-k8e?f)u)s1%jCur2Z>Jinq@FwOaSyXH6dNplJk>EEK?v; z{C48_Idh%M(}58)ajv!Z^38%>2!8I|<@-ZN8>+m{LzjF|xJ3L?QjE)j_NUC^^MnN|?KFw|+07cU|DDJVN>M;X!da{6}i7IJ@H=WP1u#dDyvcm7(lTqJp z`jdNxFER2~ifx7Xmgh3eCOYqTmg0#JfqL;r#xwa3`V=CKnxj&3a5DHvpEsPFiIX(| zA43!Erhw@nwhduzz{foGKOmV)OmJ6e^LdGpD=^h`7GPwFFb>&Kd7P3IL)4?EeX^9j z>nLg|{r4G8c4{B3F@pPBXREWe-CVa_Mutw+dQe#3d!(rhK9yw0v6t7mDzlUqoj%Ve zGR5mS&d?2W_nq8hcX8jX=l2CD5!Tv^sK<=dmYJ?*PBRbS#Vbw+E3e#azkes(obCF? z+8BAgC3O=jmLf!PUpAX;RQER^BP@u}Q?zX#s)&Z__f;(Tea30FUl~uO-ealZA8l})oyj_DQYIkgL~dyY1Xw}zZ#Xd*taE_WyU{=s#^ zWk$*xR`i@bmG|rvawf85`1OfN&M@59<;Z} zXU0^mBQ*>xGV5gD_vqUNx!B#Q0{|1 zjy2nmq`6{HaV}9M3T%xkJwjuoBhGnAG7U6s+5V&?)fl>&8w;mB3RPlpe_aM4Dl!C^ zB@%oMZr{!T-poL0qxDs+#`2u8GPF4C-aFj8h7~@ zxUjg>S2olE>Ngz=(S(kI8dP=DSr&N-?1CW}@_=_|9>yEaeTtNEWYv)}X0Wz;+ z&D+L4Leu(S;8WAO4qjbE__wVKUbL+ym#(;2B=2y!P)gm);F&I#2@MJ`1nP5EJu+_9O&OF3ljydQCjj zU0K=31Bd3}`CSxCc^Tm7kPaTEre%I)W;`p8!-7aSND6cgwjjn(C-g}MGn-}-)46h4 z^mq0n6pa8;M$S67sCTqR?kY_N#>p|$Cb`Eye??Fb|BB{@ddc>ARx@ZlrILS&WIZ-l zxr0wHS@1ypa_(_xhAV#FWw9HZKRz6H_YH!e3rM{eeGp5QHpJ?`3RB9wQo;TifUE5%(@heAShg35c5<5w zc@uNU_a|d7VPmw)or|L7J8pD9W9RF3;B;}h?myuc7W6*-QW%m^Wgb5!B0<#B!X z+UiKAfbAN*38Oi zYjLs_mda792u@SXO`Wj;Suo${9_wgoIxpn+tlFrWy+(mm)NQ_AlmvhRJnbxE|-u-O9juoOzGw#J(Yn z99jVc_CStuK^a6v#80`mD)ftb(8N;k`GJWRFA`=+5j>Cs%q%%B>5C^GF=Oi|i+eWx z4J7MUhX}v3&#~Y1!%ni%HKrVq)7BQys_GgPFdpy_C0c38eR9%-Qgx&(q z4oBtpz(BVH)5?JxhNLv(DIcOSvbj^K{{US)MF3WLl-y2_e26Ok;yg@1j&mf@*JA$*h=qK7<)dTJ@<1M+!py$)1rCiU}u&xirws9+c z01_VLdgsG z;!m{mNT_JJv8Id}WTKWl4RHmQ?aT6z?3VYf>VT2~7q=H5?H@n@q8<&n#o@tThPAma zOj?7x_Hf2`h)d=MFCTj z{Kkg4I%rcJhY2DHJ|D;A-qeE9$-(+GYxD$Vw~O0Y~iHV-dS7%`wbCG z3;)uMv)}Yz2^i6vwVh1^f~kY+bA`jY?Uk|M7~O?rhq~FGtSsf4Bq_F{>IgeAI=;;#-H&vO1&VPD9gw6*_u7+<=XMEoXm-%vS z*Th@qSnr^16QAcYc^&O^*i&(sXokp*o^JJ1M5sU`t+w?>$!}Lm%m)Mf*^0lm1yRfv zFBZ?O6NI`p@$HNU0>bu+j5pr$98s#Zjg5?yXS{g``F9SgU}oiZLWbQuWiv`c zKY(ry%l8%)F%fY+J-H%Jht!=l41;?G54*g1#MpW^m8Y7n4=ZW-#)s7|6wZJA27H>D zu-b(7_m^Re^&SY!I{Mw*%EHCF)W@FiCA572cI3rNDCXKpTz2tgcP{Lv%Ed&lTSTv3 zCS-+D$%je1W<8njPLJnx+=VgNe!{_Lrj>8-0RXju6(=adbU}VEQ!PhWN7$^Na8H7P zZkQ!G{6-Z7E^3tNgkeFil4;*UxEXo2maC}&T=7L7;m)-%B0&;} zO_x=Xw7dCe#Qph?gVo+|+U!hBcZPZUr8GlXR5KqmbomHI&rBpIVGz(ux6*V5SpU3H zj472jk9JzXBifpl9Lov;;>@J~YexuAOYiqBP@FpI@gPfU#S@(9FM- zcV?iq8<-6&b|MmOt5EcxJ`+P;Vv-LKsbfHRUCj+cMg%(@UrtETg-Lr52GH*oNwJr> zUkV)+gL$;`UWsZdV+})vGf9y_FOq$dD7)5IA4q)p&f>@0Aj>;JD8P`>wiHa9B76NY& zdYDXxhlDbZEcv8IGYqtx68>|F_I7%K^r(05GFFJV5B#1Ze`20P=X8nhm_?8t4AV3* zVUza(dkn&g_ill41@Cow6ciN9y3-xn?=Wlt`(5@!SEkm0cFa%E*cpw>taBRfh7zg^ zPO@Q3M1SfVUcyqPTe8%uX(}?DZ064iUF@Dzp))+`R`nH+Y7c!z>Mc^?WUB7_!jVv# zpLrbkFH$!j&QM>e3)mHuKkeEGhH+)IX7{Z;jp_`h%!F5RQnb8c&^*A&f54S8LKl`N zgPOK3lKP3rUSqLm92UO$c*esBOCrlEj?hZeFo=W)_@)-S^SLc~^BQ&X$)X}nf$>yO zGbUU^FT zRE5* ziM3;Gl1Vabd8Y7Z0S&GX*dPx^`Jd?INf2-xNW{xm*1eK$>($!z{38VYLkdvnUz4eE zoBe6k|95GNs4&?4+l)5n{_^}kqm}>o39y^Dyg>aV{pAY%@x8zO8eDXQqZHS8^*OoaDVSF-ZE`CI0OxbhuRE2`FkxC*b^lEblD_G*t7zh~*(oUk)d^bG@$NIgqiphfHB$B#EKnf_kZqo)MYb-wJ8 z?Zw}IkqJrRO6|qq`ZsUiu7WRRw>a2mTL4c7C#7QH(*QUn8-Po_pb#h){QxyI{*Yb_ zHX&jD`(a#Vcui&_ko4vEl7f4HOlqgUIo~%s1svWCY3z=LNXv3we*Syk0zoBMkNYr< zv;SR~-RXolyv05r!$tpjzdWT!77B*1S%8n!*k)pFy$Wuna^d48?ZD+9$(781d(`U@ zWGlfYNf@vM*2eCoc~@%U4>E#%J)2#4Ss^8Km@vNBpD(3_C^CSQnbO8(Qa<1*KTi{) zL>!YUl5iM{zw&KF*&ss1$m9+%J{6QR&ZZbche`K@Z-h&p5H|*4Y zVnb2jDV;(_!Vu;0MD1ny>EGk3c<{7X%F!bxeScxTJ$AfXw=kR`*+9-`i}vx&_5hG! z-FkvJg->~G6Hs{;X)D6FVh7URIDj;h1^0{ieg==+$_|S zrOfn#F9A`!5Q?x`p{&Q|NlqV4j*7R^QAy-)I^|E@1bS9Vijx}?1EX}odV5*d0s&bT zU~H~JHnE?RH(dr;#T9#tCHan^_Lvlt)FuRpxpMsHq)uCJ_xk^I$A2nYAzCmAKJTy9 z{g$*wMUBD??qPFB9V>HDQBmrcK1Il>M2KB=S8q%!Y z{%5KP#M@4$iTqwu`zU)rGYUHw;I~4>K=f4hFUmNhe0^Jjgp^WD!{1*r2oo546C^&1 zzcuH$fyh8USFYgRuN|%N7m%%tz)yroHu|2F(nm->Llk5Z3K{2M6N!JQOnDYi|DD>T ze807WLgz3wAALqm+Je|HeT>V`-ya5hIS{F&sbl~!7LY-wkZVsh=uDQM_!e4lttnc7 zf2P+Qq(dc+7$Ukt=s)JGqY>+(X!Ss=(C2x%l>|4r9}p#g~Rh&$fin#!RJFTVav)hd%hHB3a z6l5tk{}-nr$oCYDO%OW&PYr)^avmr|zx=HFxRoo5Kz)I#0R+hahQ{G~e`E>Le-ju; zK=qOv!)0f60>ozkzF5d!X%F=0^>8v+Zl+)|!|W?ZyL!4%ICj?8_Q{Zd`g5s&{`7+Y z7QNip{%7JA@wpK~g#X1&C?P4?0IA4Mz#ejo{`9}Nglb_hBnP<6Qx6}`0RzSnx)5$bCIq;bGp zY#-?T{ht1DH!m@b?60!Dt(#Q)^DN*eAz^d~cvYt&qoap1wfI{I5Vw#i>bhn0RQKzk zFzjTeIkinAMDcHV3avAFHf6xi!26%Kei=v--cU~VH4%);sFzzKssL)tK>>N8eqLR>?A*+4KxnyI~R0`AoRRn3n)RVQyj3w6+i>g?~7E8t9xrYx< zWGXftQI6(<$|H!lzih8VLX55v5)u~n@GSDkJdBqC6}hfL{nfhTYy~;mdz_)kr)^v; z(9_`D$C&wJtbGJ`gmMQ8rjI2?PYg;RSycU8kJELcaez21l8E`nZ%SjQy|w078Y;Cn ztewi1J`O){eVAeQm9((=5K5*O72$cQxHQJUjf_m=6HL05b6w5P@aOkJOXCIQ32hAqsSO)BX8rZ+W?{AUsPTHQLr?BI*X|AeCbE0HZ6F z?|wvk&W%7`;>#Ka&(EOioE5gagdjhlRmZ!(ikp-uTg{mBtni4UA67(-7bQoST94Og zj3K6SY64hk(~5syt`IxstU)WGzKd(!i-(S1TD&p+Pv0P>W))&QiCk&Zg2ki$e z?o=Eb`{f8gdo3@1KT5+0&`R$DoBZVhh6r9@GGuGYjkW$lo6smbyaGr9;C z$lRX5wXIGkqfMs=L#HXzBT9@OkA#z%LBoT$bHX&o0%paEE5}g>9qOQE;CXCRtRGI0 z`(#oy_)+C$Yw+bf&)2un%_ZvIkh+_PVlsn3`uqK;VfI_>tU%FM%w>P?gRoX+!Kx0HT{ zvsA!_u^f|P64@Wo&7yf1y2g7?fSOfF)!Y8~?M9U=k3^{*1s_1my9oXwFc18X7uT__ zf_Q-s>d=jtY|PqNUq3TkaReu8%G@^){=BN0fE4AmO^3!g1-rA1+|i&G?EvU9{V(wtV63+p*J&!gXap~VKCKWK3r0!DSK)xbNFV- zR2cnuLugT<^zsAy24}g_vst2+2l7(9WX4=g=^8UzIcIiK=-#UO=^y)!)#2_j1_1yZ z4%_u;@l7$rI4dOVJzpM2Fm~NxVt0yzFfIKo^ z2&wGdyPqhPzC~bZ)RSpE0aDsG=5P^-o~a+vm(45IyXZU0I_@SnGZ=_`);ZRAj3jcE z#UB;FR8$lVuIJhZa|x>j>2MT-`{PR=8|5nzP_`dkDClqM>}uKN{9yHyKNDnnd$?E} zcQR{Ljzy0WIpRQ6zu66pYkek9f!(_}W3FARmN*jP{q2p~7?=6!BBs~sE*r9r0)sce z?B1}ExN-6Q3I7s`A+2#p1b1g5j3+G~yxJ%OC)v zdPvqFx;+6!9J93MlsUk5J)QI5gioAJ8PIZ(bWDt$(X=p#tY&(cH+7+Y}Ke z!bXMrLP+Kw+CZQpuC(I3KbXB^!;km}+v9Qhce9un)g3ZR*IeZz8>L*8$gbw|gGF(Z z3Po!fOJp~FgH2R)ULO6}9nAfM@QkJ{q&~(OvQ%if>qmapmAq*1aU>~wgP?G*x#2Gu z7QSX1cR8XlPM4FbI&-tr_8a)wt8Jbxf#RKN(82*|+1x!J#TOTV;ihxA8VVumz+9N2 zGAAaao!18=-o9>?VNR(+wBUwT;qNIrvcKue~=kf zGJN2=81WrxllJvWBJzVjk~;TE5Nr5h|9HOFs`i30f|ykPY-s`k>SFu{sB1M}=&)uK zY_k0l=nA~o!j+r)(hULt^@19NLSe6APG(IO^JvqaRXDYhkh9uhrcUYMZ+MX(C(s{@ zcsQm((h-FK4hiuTF`=Q-GU?X0(gNGR#DX5@@muGa1KPN6@MkRr9d_n?HvAAHS70W# zr}8|az&!f};&5@5ksVOQWE-{jVtD5;{rnclr7nj$%WTnOnJcvil?R}y#jhmJTYNnJ zFzl2o>Y!U^+c-UfM6i7R=y0pzw6k9U5cNs4pXdVnI@mKVArrFsFTwQ#1+liab_A*T zv^UUmzu(CQf|?8?1A|`7g>MaOSJHTSd0hi}8*eR?c$@9GiBIx;)o+TkPCW6cvN3xl zCR;ymj*|frJwHwM=gO#%P_QS-9V}F#Iexg z5iqg|M(C&og(x&PzFw{Oi>WQ$ItVFq2*8f&yRjC%cGpZ{E>y=xqbsdpTLGK$XWktx z#$Ad7G?)iIJJPZ*&_sa1qmfFevFYs)gkp?GGl`*hAt!o)0(ypovYV!z=j38ht5VFKU`5ky5n}VbOdP>lZGHBD6;yX zeEITanQxM0Ig(_U5n44tO6l7-_2v0e!<9Kr{io<bE&y zPWlj~b^U~(=PneES-Q5+9r@vMzLAu?V4e5y(xdfMP3!jM%$JrtX+?89SufZpMt4F@UpjkoSqr)fxg&j>oB9>M%^<6m<#eI2-+eX$s@GR#^n2SHuKcsG-TCz zf8k3@AP2Nf+8OPNo437kI^r}wU|?~>*caXVlxbd@hT}|Pb{vmV@nL3H|LO$*oV%Cx zx-H|61WfA0xfe@D#tG*3S81@>f9?;X2$C^J9WdUwHN+to!xd5s^(cBveNf3}tYX|0 zk*{CJ?htYM%(>;rWqGjsFx&{#h{gBfuAzu_c1R_$7(SQ>3=bm5O&O!UbD!kXR4$vB z6SeTYVM_d3lCm}jjCMsD%Q_Mhd zv$7Vc<>5}No1o6o!lX;)hv@f8I0aZtbrgp71HutnP;7Y~8J_FP`&)w>c!nvrb8zNL!+Nl6ubOVBj|{ z7UDBMDRjriV4rP-w|_r!_(9i^YnJXk$;+YXF@@r`=KEy>flUqLVOOR*0T$`qypPBa z!C9N&ePw5KL};6`JCb~hPp=tRZ{wasmO%9(dPHyIxjzD){$Q^0tB4HMtmv{8V97-& z%T$bpHv$xWiL*%(hEC2q1=oKRpUe&@@vn=xjCoR~5U(xNk*?-K>#0t7LYX>#L#q4e zC>;HzDVlVbCmNcuylo#Ul}JWNMs#HkmfBA+tzBzWD;HS0Enl-b!Bx@#;$J_W{oo{H z00~JERIe=OvYnKc9&#pYhwbiJTm+KUkps=gcxs8=Pu{bj=r zE`DSKAdBHCt>A0dEk>uw3Ty;1r-$;&ZO3hMtS-k_h%;o_Scpcw^3h)X1+Prrmo(40(x^ z){u}86{yR*x&H$vV5U~{u_}TAD6x?rx~Yt*C}$qjs4(gZpTfUOf z+5~kOjuaxC(fi0Sj|Rbb-{?s#U+6W55VwI4k)GCKKr4Z&izQ%Jj*jZ(_5|o>LG$49 z^>!)n;uHyUHFAlAIIIByXKYueyGh|>8hTZ~b`YWf6^9FKy=!<|{^6(L z%6p8CCOBrR-ISnXU~r&NdqrfiyVE+zT{4x?xA9}^rh`hhBv=1_wba16rIzYtb*}(a z@}~@8Q$Z|a<)KLsQ%~!Kk;PwWQIA#(Px|l#NSOip zLviIkqO}gN=`vnb&-G;W;21fE%U=)5j60h^uBD3X9UXWG@!G?Zg-`kBJ%>=q0^P>q zpC6p(w|}6k8yCVL6EWVKD6O(kPgb%+moA-&beu{+Cg_EaL#bvNcuC5tNr;ZsT=k*W zyj&Qa=D;b1M`}Z-ODGD=OvtGZWQc705OK}I5jtn)J^Zdwasx`!Fz!I_$syq09zZz- zpMBdb&?KPP?CA*f9VP5X3PDT{G|}u+TmLw#l%g!;Lo=HJ zabGTIqaBOHHc{&|DOAhVUm&IU(%I81A7La$N9qdy4SifEp{&4!8_|l0ldls@f9wSX z4o=RdB%ltPr?Pjc-cTTfJaA;bKQS1}1U#O+SkYQU4n(s^r#7b3L;>OSfU!YP>TcBd zvzHel%uCs&3eApdioM!00UAn;J*{slFc6fzU*(+#8&&Q zeuegU%Y32+RQ!>AyIqp6SaqOY8i?w}uIP%J&y(bMq5RuvW7ZDp$St9um^<*x`~Z{! zK-79;y;TGe7qM&iZ$XdDQeZwpP9aIB4S7jK&D_Xn|4?lW!UobT)^zU#t79e6j!sBK z#Iz#32SwnmHX#HrL*l3sGZ2-@We4z`8argn@>f1`@aCoNzhH=dQe|NJ;^Ot@a{my( zR&*uE6>nWmCckWs%)x0G#>Adhv1x!Upjf!o`sU*-dfi{>RaAq>j$D0fADGDVrl;G~ z)9gbo1&Zu(^g9=3k)E)&f;1}cjdb9g4;a3}HP!3zp?mLsXL!pw$RNtUTpQ?g+uF?} zc^8rxB}T60mY#+aY$380*<`Qml@PMBM=Gi8J+k-Ch_cC+J)%Nc85xh2{hsG} z@cq62_@m*z@6R~nI@h@lQu3CFn>yU108K;ee{S2i^Vlc6OYcoN}Kcfjp|h zntONf*2^LNveY4H{!h9g3KeRz+$uRD3sspx+Hsjl4)%1~QD5yC2Y-}XIm$!v=}&(x zFbZh9+UI4-tkbLr*TA`wRRb*;JT>TP6wg_6za z+(d4lj%ogN?b#~h_RIT^ueYepQB)lt%pFV_D4BV@4^j-W$T$?{^ux>6ZvegnzK|c1 z_9a8TveqpUH-DYH-BBbLy30g(+sLr6uz*os#sr>Ut5L>fX|USu8J#_uu)8y0nn<2D zVd-0$(mc@A%6hNxp5Fs1j5$sqPymD}w;_K`f8lo;h2cB));@f{6XNxWsfSME{SWC8 z;(5e{H^Tp{cfZSelBkVsz|n}P%l&+yB_N~T;IqVSh(oLYk>+!#MMQ`gksJtjn|HEw5o4IFSr~Q?u?SA zX4W)ZmCs8?5ipXyPiCg4INR!p<6^EIoqd*R**MVBTZYaT4#}0%*-ssW`ZnO47y{s7 z;rA43$?`0_J?V{{lPxC~-0Kio^r+RlHnzIne0xJEC^c3h!bYzW0VNZtL?k>*lS=(+ z=@juxmvkZ9R8s!GWGzF!*MO9gW!&(2FPP<mU9 zgL5yRzluH{_^-8*WY5ps*TcsWIxqJKtD;JQuk%DPQPDKeqEe88u-- zsxh)ScSRbtlX9C+WMvN${GH~FL6Q(=@B?e1l=&>^8<-amcZ{ogqdaB8V&22lsGfp(><{Ndk5amK_+ za1%AVe?Nx&j5TK~`ef-;_{}p(+)sU?e~*!F^yM*`2LA~#7cd>}bHAOxB(lHr*BdyU z=9EmRiwfIDV;}E0qy=W@7nCcJI+!3>(dp?P!J=RDBOHVmdOie)gcufDu|7=on3~!< zApcP2=D%4y>cFD8O&y3(%pdCf=TTfF1TvS3pZfk|g@9s*Af+Nj-=~m-`<@=FGu`UT zee4hE=6%k7Ux{opENe7h1EDn35`qTu2HZopPlnWZK&~u=$%}k^a4-Z2$aKvy4MekpDgJ{XfJADA`m9C*?f~ zufClS?w}KQb}-UBs4zlu}aln*`tmqQ)b9v!poIXgvs>N8`?HNYtl%vIv3gpCqf&v8l;LV~;5=K?hzUi3OA2Y4MI}dpKx)-+Vk-V9cIN48@5! z?#F#dX@LmU0-cfY%=GjatgtCVwU0!2ln1wc3XPiHs2k307CSv-(G2@|r#-?qrT^*G zNFz00SuMA}hOvYl&rvm)qiB_AWz)OZGKzF4&tdhk7V*c99R2(h8mun^!;j|gT z=X8rxQq&A}JK7~gQ=i7W&S!&;dF{-@TWiU*3=F`YRiPV-X9W2a-uETN{EH=7-*(@} z#aXKV<;n@SW_K&uoQ7ihu0?Cq-~PPCu6K!J=O<&gjVgIBM|2 zQ{4Sn)2=^zJR5Pt1%jqyuShz|XUQ3r$$`Uii?0;|dS(SwKrc=NrR=Qe>4y{DKjYQ~ zKRA8Al9QQ1``wb@-+!2>7wUS*{|&m$1s`I9{tyMxHZlmXnVFdSCWwGo1|p$A@>G7N z2mRRn*#H>;b`xTRWXJ87z4~en63J@yH5$LXRr?2>NgcNsygz~!idU~YbD(8}78DB4&N9{98RP_Dt zTV6`no!s&1kBkpJ!fw+8>N}|ag;o< z7qt=d+DU0?Q{bYbQcJBy5Fmfihev$vT6A>u&1vx0YW(4ejZpTbjesJ>&P6ilWQrh9 z*Ryo|Cflr4?OLXqV~s~X@505;B1NuLbA|ophb;LE=+{R*Jz7ST!qTH+r#r-E-$;dYyf5G4 zriA3$d%>050Z|8(_puGDgOC(r@aYM#d_g9YiX|1mu}zN;3oC&(54CJUlfMxV{_C|P zo6E(;UsyyG542{KM(QWtZw~2AbA+;^1u-v?5q0}>K9lQOpMEs_aK3$q8x6+5CwR;H z7;n=(^D6q~f4??D^DmpgdyA}2oc3m#9&~o?O^Ow1CFBn6Ls5sG;v#;psk}reThi-k zL&b*h!d|Mb3o#xM)V;UP<98}$TmIzcR;>MEAz}SA-6<7aY_G;a0*8CIU~a*J*ZzXO zGGr^eew3b?hi^#?U11{i=;Oj5~~@1&_rs8vbAp=J3QWpiM<>0gLU9Nf4Y5J)W zRY{BCFJ(}%`q>*)h5lnAUXvbcy!=({{CSdl?QKy&a_kErE)B(0wPQo5wCn#&vfzSlm-{j<^in4Ns!uy>2VMyO+cgL^# zNAcX`Jl$nPKv{{Yh?ciY}aITsGhvzkvvTaiu4FSRzgT5k1<6pO7j#wYciTX9GOKL8X!Rb124{qCN&s+}}zSO20Es zbA8iLXh&MV+#%Vy1<*-#HhnY>O$s`8?dHn+(1G|Td$`uCHF zxA}+PLw<35zo8o^;^v{@f-R}f9zvPyBUsTJrikuWsdK~n_dcn3SeS=8tM^y`d#<)l zB`uyEWTdsh%Hg(YF}>cKahhkGByTgfiUpSYY#RGPoF+rV8#WZKrXb-LSaM` zid#?*F$oEW*%|Mk#@=UFF$x33O+edrZMHj+*Jcdj>Oe{nXh|pms_qXU(uQ9DGN@;r z9fXIY+VZuFfy=KU3BAq8y`E6;X^QJV*qF9)X(HOE4J9zryFN(6hA`n5^8Y@8Wh#V+ zqQd#WW#Fxl#`%~vrA*Mh3Z1<{L|yTsVLjenmzG_1w}?WOHsr_;Pf}1atn)LrSD%*U zUkak*@?)l(N3LEuPU}1aBDr~tY-q##E~!}EOl>+&TjQ($WO_23+a1- zh&uyES4h<5^mD%UxI2YNFEf*{5#YNVFT@k8A&{Ky=i#u2x?%*p8K3ZoyObYMJjo70AVuI!L zfr9YcMuW*kgFqwS1a4FqPi4U5^9Q`CjNENr`u{kv6ZIH`8L>g<5nk5f!@qs?ME{NorZb$nNill zA2X$~UHw8w*DR4)ifp6mNl?>G6kXkZbI@H?v+nn9sJ7%wS00QOl~chV$vcRu9? z_ffLDy%YV&we!ECSCS#N6rPJqu4cmh?a%-6IsZEU>h?0p-=hKUpdYS6e$khqV(Hg+ z&mAqDxhRI^7RCN|KhlfTd{a8FoGgFMFO7J2g=eFyE#9Kl*x;|U=D)2N0CZMGQ1i6M z7k#lg@|F+^Eii+sFyw_TwV$R3!{MG)(6}6Bm*xa}{ z1KkV)K?Zo$=TP?;9sJ8+vy8>_Jgz6&h?co`i^y8;VbxrZ>3btCySFNR3fF||?Cj1f ze-*f!jOtcMN`?hpepIuwKUsF}9Rphk8JFZn4>eVQTi*$?eiQcV>U}IMO3K9Ol{zto zH>I8gol5n1+-Rq7fah~cWSlu2_T44)%HfJp@v|sm*_%v9ale!1l080jr%v~uZ=Gji zVvsbYr>p-$oJicy#w^6#Jo(S%XE*cHmM+PptAHa45`B6{MKh@W+% z+ea%(;#&+Z?AbHqCf`tXGxH=2qTIhCvMRF&RT?6Pk@EM(s`D@5WdD)Bc@+DJeg(gf z_1sYIP7Gg8-F*$z(yyKWV`G?i)huD5LGHwKgyBdjm(NC}dw%?tv?@5QJ9U?QQfE3i zis2y~KB~d04>$5rhsTU4m{x7{IU~ab+2y#})u^8%J0qJm#QV*x#Nsa_s-;qG(vSHE z=T#p<0L|1h$7R1ln|Hz10cDPD%S9bDwFHfbAPDl{LlKBkx68ouw2Q^Y>gRoS_e!w@ zZM8e!lYeSgyqQwm4YklyQbdIkU^~9!O?N7c(R2hzhcam?c6JYECQap8sXfyfn9(10 zz*|{+BFfODdbFoW$;i<6B{N}ecV~!(&P$;=^ab*Mh?TO@kvC!n=yyvi# z@e-VkR&5^Qkrj5z?W0UUzTATyv;pWT!X&a$h$}UC+hjJJp=YD)&3&A0KLcuHMUWZ*=`4i?MAMQvVFsoR`66xi7pi)IylH z?t!{SNIaRiUG#h`CkgUw`HT_-52}&fyS72IWkW1R>qqh8xYuLg<*5(n)f5LG%>@4} zM!dnE$-*nM<{Pv1bsjL6@U_ml22`7ykRCxO%sJkIr$Aw8drnD4#b{0`PaB+^N zH~6fF`AHXn1=w;)!c%k(G~7K8?Ci{UTV(D{{j5 zj8C?j|Jf~G9I)pZ-K6ZRWaBp7w$UoK-pgmA%4#h|zf*a&P#L(`5?*g5mccWyLj5x5 zaPJqa?fbnG;c03+wqo2=DMyMmm=@OI4cDaDwps`cZ*0!w zD}9JFqA%hJzedOWJBAxK0im~RdyCKNuP@q3|8(00pSHHd9BWXBqvogh#AXZ(qvwVZ4~2>?U6E#Qi> zycKGq5M;M>w?i=gKheMQTT#ys(;#Bn{D>44gFQNVdqKH6>+;&IwVG_%@`sK-q?hXt z3IpZ{i7yMH?;FAL&1ceDy7%qu@Y{YF9-g{`VqTrblw(G&EL*^V^tF02wUSiS;Q{+* z)Np2SwWO^xndRn5z&mzhr6uG?tw-ro4T*%+xppoleV21FM_yWwMp4ybe>kev zkCyR?L+&I*%yRR2NqVW>m}wGA-GnHVS8t4`V0X?I6MdmNse?UJ{w!VMwc@kY5lOCp zA6M;eAM|?Slp5nLvb?()+{Yh)4h(NwcyLIn>-neYudV)i8IeQMheD(3STTAHA;?F( z`N?_ie;5dg-57|EtKo%Sht7Xb??3fD<1Wj>qf5OV7C_K;!-gV^SMSn&)Cbj-VDap^ ztS4OJ*X9#d?Kl1-J6b^VpB?>^ zjCS143EtwIIfKf=T9t=wO|=o)f9JWy&g?^`I5}Uys)~DpE7w({PP_=jSG8hhdY9|T zT=CHnSq9;2Z1xUh%r0J2JHdLTUyp_Uq|bIh$3Uz7S6iaZSJsbz{B}BC&I&p{iGn!e zXsBA}XQuni%N<~U5WBW~;3^P+S4Ra9phT2(^bErKnKY!iaN_OFre{uW%8HJ`~H!|yFGYaJJ`ssdAZlTq$zf(|1zOpLNk z=^zi1ZR{t#|YkK zypw!wBKm)pfGG()OD$sL@1}CDuGb4v*D`l&aScw}1T z+w?;AiQ+{k6&Qqw!h2TYMWcQO{}cBX_q~x}i+KM)FlD>&8W-A0Lj1vmZ`(@Bj+6K2 zS@5?&#>OtnpXFuX25J(H9Jd}dRZK3xFQoB{HjnxGB!|ek{)nOALlm6B24Q~=3*{BP zk9HJrJ7$d03%i9a?sqQdzF~Um!%~v6+15T;X7&;dU(_vPgvN-; z-->$}ePr*EMxR^G=MAD+@^V`*2Rlm%%DrV}d$aIw)(*Uz8_!r041FZ1F6FIXRGave z@(5jr5c3%_^)%hq{29i^L6@@3VF-Q*tc|5e{M?EB&?VpQPmKg*@w2Ss0Yv}x-MsCr_MhqXPOa7;J&qb7* zn&1I9#c5xGn|S8G)w)@zU6rU9-T&y--&X;d3Vk0Y59du6Hj~ zqh@@&H+CQ4_+nLaDu8zr4VNd~#gW>~rhcoYF4c>$NK3pKyV2P7V3_=-m)qiippjzB zw~^dU?Jnyuslb?2R|o$fs~$W#ilh4^h{^->$17eJ564aq*BWEd?W_bcU24HYpZb9) z(NgR5BCAl@L1KZHlap+5Uld{MUbNG#HNM=*SgdL$ifGo5@JH85a1{)`C�aL0LQ| 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 Date: Sat, 1 Sep 2018 13:18:53 +0200 Subject: [PATCH 0041/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5d4eec39..e496a2b9 100755 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Python 3.6 or later with the following `pip3 install -U -r requirements.txt` pac # Training -Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process ~10 epochs/day with full augmentation, or ~15 epochs/day without input image augmentation. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (coming soon) +Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process ~10 epochs/day with full image augmentation, or ~15 epochs/day with no augmentation. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (coming soon) ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_training_loss.png "training loss") # Inference From d3be281418187e88996ed905327f38cb9fb9481d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Sep 2018 13:20:01 +0200 Subject: [PATCH 0042/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e496a2b9..d8aa9d7c 100755 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Python 3.6 or later with the following `pip3 install -U -r requirements.txt` pac # Training -Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process ~10 epochs/day with full image augmentation, or ~15 epochs/day with no augmentation. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (coming soon) +Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process ~10 epochs/day with full image augmentation, or ~15 epochs/day with no augmentation. Loss plots for bounding boxes, objectness and classification should appear similar to results shown here (training currently in-progress to 160 epochs). ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_training_loss.png "training loss") # Inference From b28fdb157045e50408570a1f2ecdef9d19527168 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Sep 2018 13:34:05 +0200 Subject: [PATCH 0043/2595] updates --- README.md | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5d4eec39..0407e452 100755 --- a/README.md +++ b/README.md @@ -20,12 +20,27 @@ Python 3.6 or later with the following `pip3 install -U -r requirements.txt` pac # Training Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process ~10 epochs/day with full augmentation, or ~15 epochs/day without input image augmentation. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (coming soon) -![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_training_loss.png "training loss") +![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_training_loss.png "coco training loss") + +## Augmentation + +`datasets.py` applies random augmentation to the input images in accordance with the following specifications. Augmentation is applied *only* during training, not during inference. Bounding boxes are automatically tracked and updated with the images. Examples pictured below. + +- Translation: +/- 20% X and Y +- Rotation: +/- 5 degrees +- Skew: +/- 3 degrees +- Scale: +/- 20% +- Reflection: 50% probability left-right +- Saturation: +/- 50% +- Intensity: +/- 50% + +![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_augmentation_examples.png "coco image augmentation") + # Inference Checkpoints will be saved in `/checkpoints` directory. Run `detect.py` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder, shown here. -![Alt](https://github.com/ultralytics/yolov3/blob/master/data/zidane_result.jpg "example") +![Alt](https://github.com/ultralytics/yolov3/blob/master/data/zidane_result.jpg "inference example") # Testing From 5bd70cfe7099f50491b71d859840c1aa5a5b3d40 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Sep 2018 13:34:50 +0200 Subject: [PATCH 0044/2595] updates --- .gitignore | 1 + data/coco_augmentation_examples.jpg | Bin 0 -> 395789 bytes 2 files changed, 1 insertion(+) create mode 100644 data/coco_augmentation_examples.jpg diff --git a/.gitignore b/.gitignore index c7724dd6..d625e360 100755 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ *.pt !zidane_result.jpg !coco_training_loss.png +!coco_augmentation_examples.jpg results.txt temp-plot.html diff --git a/data/coco_augmentation_examples.jpg b/data/coco_augmentation_examples.jpg new file mode 100644 index 0000000000000000000000000000000000000000..633ffa118be71d566b437c704bb772fb77249b1b GIT binary patch literal 395789 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%0A_Ku27t=3z)Lt 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

Ags3Gl)e0{V zO)a9h@up`1<2_whFZ0muQmwrO>GAECqb!CQ9yZW#qT6WbX(|Asng+p9Z5;^w7f2gh%UWL__cOz96H2}Q+ zxC(~C1kiM-_hk_VAz}9C8RpE@-)JhU>w;<{i|%U2Zv1B=wESm1H7BY13*y4<5YrnfzF$$?NV`e+{p9DSz^MsaY_8K(Yb7LH}NVikzL@ z!}$~oQREK8x8#V)w4!-=*UgnNzf+!|IsXz4E>)&`zs_G~JAeKLkm&3cIo(oaXxra5 zZ7g(thp=8-Ihh=qtxIO-yVgyz$>#`ntfktUi#MHv_v$cC`Sj+{}cM8a2YzgsfW zWstcC)9GP=Xr7;6x1UDgXKe)kfitLJ#6b`*S+_amww-KlIdZD}pQ+T~I_Ydr2i)<> zjY6U1(|juLBYtZQcT%~4b=M_X{&2=h+}rma*!NaAj>xLp>$4VQ7$n1Q&K$&{G%(Lu zZK_U$9gFzw`KNH83h)`jz<0EN^JwyM378xMm%`#r&JPun;Sz}aH2@F

40kRE*7 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 z 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 literal 248165 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%0A* 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

j`JO=tZvKd>3)g_-d3M3X^-%;<^;LjUf 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

Ags3Gl)e0{V zO)a9h@up`1<2_whFZ0muQmwrO>GAECqb!CQ9yZW#qT6WbX(|Asng+p9Z5;^w7f2gh%UWL__cOz96H2}Q+ zxC(~C1kiM-_hk_VAz}9C8RpE@-)JhU>w;<{i|%U2Zv1B=wESm1H7BY13*y4<5YrnfzF$$?NV`e+{p9DSz^MsaY_8K(Yb7LH}NVikzL@ z!}$~oQREK8x8#V)w4!-=*UgnNzf+!|IsXz4E>)&`zs_G~JAeKLkm&3cIo(oaXxra5 zZ7g(thp=8-Ihh=qtxIO-yVgyz$>#`ntfktUi#MHv_v$cC`Sj+{}cM8a2YzgsfW zWstcC)9GP=Xr7;6x1UDgXKe)kfitLJ#6b`*S+_amww-KlIdZD}pQ+T~I_Ydr2i)<> zjY6U1(|juLBYtZQcT%~4b=M_X{&2=h+}rma*!NaAj>xLp>$4VQ7$n1Q&K$&{G%(Lu zZK_U$9gFzw`KNH83h)`jz<0EN^JwyM378xMm%`#r&JPun;Sz}aH2@F

sd5X^Xsqh2b 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 NSbl-NmCTsTe*=`4QJ4S# diff --git a/test.py b/test.py index 9a938971..9c2d9de4 100644 --- a/test.py +++ b/test.py @@ -42,13 +42,11 @@ elif weights_path.endswith('.pt'): # pytorch format model.to(device).eval() -# Get PyTorch dataloader +# Get dataloader # dataset = load_images_with_labels(test_path) # dataloader = torch.utils.data.DataLoader(dataset, batch_size=opt.batch_size, shuffle=False, num_workers=opt.n_cpu) dataloader = load_images_and_labels(test_path, batch_size=opt.batch_size, img_size=opt.img_size) -Tensor = torch.cuda.FloatTensor if cuda else torch.FloatTensor - n_gt = 0 correct = 0 @@ -87,11 +85,6 @@ for batch_i, (imgs, targets) in enumerate(dataloader): correct.extend([0 for _ in range(len(detections))]) else: # Extract target boxes as (x1, y1, x2, y2) - # target_boxes = torch.FloatTensor(annotations[:, 1:].shape) - # target_boxes[:, 0] = (annotations[:, 1] - annotations[:, 3] / 2) - # target_boxes[:, 1] = (annotations[:, 2] - annotations[:, 4] / 2) - # target_boxes[:, 2] = (annotations[:, 1] + annotations[:, 3] / 2) - # target_boxes[:, 3] = (annotations[:, 2] + annotations[:, 4] / 2) target_boxes = xywh2xyxy(annotations[:,1:5]) target_boxes *= opt.img_size diff --git a/utils/utils.py b/utils/utils.py index b3c09d3e..249a855f 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -368,10 +368,10 @@ def plotResults(): plt.figure(figsize=(16, 8)) s = ['X', 'Y', 'Width', 'Height', 'Objectness', 'Classification', 'Total Loss', 'Precision', 'Recall'] for f in ('/Users/glennjocher/Downloads/results.txt', - ''): + '/Users/glennjocher/Downloads/resultsBCE2.txt'): results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 9, 10]).T for i in range(9): plt.subplot(2, 5, i + 1) plt.plot(results[i, :], marker='.', label=f) plt.title(s[i]) - plt.legend() + plt.legend(cocococosadfc) From 058bb7f38de5014fffa773a87d4c0ee099489e40 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 2 Sep 2018 12:55:05 +0200 Subject: [PATCH 0067/2595] updates --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index f54fd983..117ed30f 100755 --- a/models.py +++ b/models.py @@ -160,8 +160,8 @@ class YOLOLayer(nn.Module): lh = 5 * MSELoss(h[mask], th[mask]) lconf = 1.5 * BCEWithLogitsLoss1(pred_conf[mask], mask[mask].float()) - # lcls = nM * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) - lcls = nM * BCEWithLogitsLoss2(pred_cls[mask], tcls.float()) + lcls = nM * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + # lcls = nM * BCEWithLogitsLoss2(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) From e2a8f5bdceca66de9c6acdaa1382de01da7e48ea Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 2 Sep 2018 12:59:39 +0200 Subject: [PATCH 0068/2595] updates --- models.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/models.py b/models.py index 117ed30f..136c314d 100755 --- a/models.py +++ b/models.py @@ -37,18 +37,18 @@ def create_modules(module_defs): modules.add_module('upsample_%d' % i, upsample) elif module_def['type'] == 'route': - layers = [int(x) for x in module_def["layers"].split(',')] + layers = [int(x) for x in module_def['layers'].split(',')] filters = sum([output_filters[layer_i] for layer_i in layers]) modules.add_module('route_%d' % i, EmptyLayer()) elif module_def['type'] == 'shortcut': filters = output_filters[int(module_def['from'])] - modules.add_module("shortcut_%d" % i, EmptyLayer()) + modules.add_module('shortcut_%d' % i, EmptyLayer()) - elif module_def["type"] == "yolo": - anchor_idxs = [int(x) for x in module_def["mask"].split(",")] + elif module_def['type'] == 'yolo': + anchor_idxs = [int(x) for x in module_def['mask'].split(',')] # Extract anchors - anchors = [float(x) for x in module_def["anchors"].split(",")] + anchors = [float(x) for x in module_def['anchors'].split(',')] anchors = [(anchors[i], anchors[i + 1]) for i in range(0, len(anchors), 2)] anchors = [anchors[i] for i in anchor_idxs] num_classes = int(module_def['classes']) @@ -72,7 +72,6 @@ class EmptyLayer(nn.Module): class YOLOLayer(nn.Module): - # YOLO Layer 0 def __init__(self, anchors, nC, img_dim, anchor_idxs): super(YOLOLayer, self).__init__() @@ -104,15 +103,15 @@ class YOLOLayer(nn.Module): def forward(self, p, targets=None, requestPrecision=False, epoch=None): FT = torch.cuda.FloatTensor if p.is_cuda else torch.FloatTensor - bs = p.shape[0] - nG = p.shape[2] + bs = p.shape[0] # batch size + nG = p.shape[2] # number of grid points stride = self.img_dim / nG if p.is_cuda and not self.grid_x.is_cuda: self.grid_x, self.grid_y = self.grid_x.cuda(), self.grid_y.cuda() self.anchor_w, self.anchor_h = self.anchor_w.cuda(), self.anchor_h.cuda() - # x.view(4, 650, 19, 19) -- > (4, 10, 19, 19, 65) # (bs, anchors, grid, grid, classes + xywh) + # p.view(12, 255, 13, 13) -- > (12, 3, 13, 13, 80) # (bs, anchors, grid, grid, classes + xywh) p = p.view(bs, self.nA, self.bbox_attrs, nG, nG).permute(0, 1, 3, 4, 2).contiguous() # prediction # Get outputs @@ -255,7 +254,7 @@ def load_weights(self, weights_path): """Parses and loads the weights stored in 'weights_path'""" # Open the weights file - fp = open(weights_path, "rb") + fp = open(weights_path, 'rb') header = np.fromfile(fp, dtype=np.int32, count=5) # First five are header values # Needed to write header when saving weights From 1d760a70460caba0534dfd222654cb23186e8215 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 2 Sep 2018 13:03:55 +0200 Subject: [PATCH 0069/2595] updates --- test.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/test.py b/test.py index 9c2d9de4..7bcef824 100644 --- a/test.py +++ b/test.py @@ -5,7 +5,6 @@ from utils.datasets import * from utils.utils import * parser = argparse.ArgumentParser() -parser.add_argument('-epochs', type=int, default=200, help='number of epochs') parser.add_argument('-batch_size', type=int, default=32, help='size of each image batch') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='path to model config file') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='path to data config file') @@ -32,11 +31,10 @@ num_classes = int(data_config['classes']) model = Darknet(opt.cfg, opt.img_size) # Load weights -weights_path = 'checkpoints/yolov3.weights' -if weights_path.endswith('.weights'): # darknet format - load_weights(model, weights_path) -elif weights_path.endswith('.pt'): # pytorch format - checkpoint = torch.load(weights_path, map_location='cpu') +if opt.weights_path('.weights'): # darknet format + load_weights(model, opt.weights_path) +elif opt.weights_path.endswith('.pt'): # pytorch format + checkpoint = torch.load(opt.weights_path, map_location='cpu') model.load_state_dict(checkpoint['model']) del checkpoint From 521b4c02ff18889defbd9f9dbbbf6ffb70f43eca Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 2 Sep 2018 13:09:05 +0200 Subject: [PATCH 0070/2595] updates --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7ba50a85..2792cbf5 100755 --- a/README.md +++ b/README.md @@ -51,7 +51,9 @@ Checkpoints are saved in `/checkpoints` directory. Run `detect.py` to apply trai # Testing -Run `test.py` to test the latest checkpoint on the 5000 validation images. Joseph Redmon's official YOLOv3 weights produce a mAP of .581 using this PyTorch implementation, compared to .579 in darknet (https://arxiv.org/abs/1804.02767). +Run `test.py` to validate the official YOLOv3 weights `checkpoints/yolov3.weights` against thh 5000 validation images. You should obtain a mAP of .581 using this repo (https://github.com/ultralytics/yolov3), compared to .579 as reported in darknet (https://arxiv.org/abs/1804.02767). + +Run `test.py -weights_path checkpoints/latest.pt` to validate against the latest training checkpoint. # Contact From 1c72eb03f03bc1f5112c0b224762b7f83d92cc5a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 2 Sep 2018 13:13:22 +0200 Subject: [PATCH 0071/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 7bcef824..a0a71b14 100644 --- a/test.py +++ b/test.py @@ -31,7 +31,7 @@ num_classes = int(data_config['classes']) model = Darknet(opt.cfg, opt.img_size) # Load weights -if opt.weights_path('.weights'): # darknet format +if opt.weights_path.endswith('.weights'): # darknet format load_weights(model, opt.weights_path) elif opt.weights_path.endswith('.pt'): # pytorch format checkpoint = torch.load(opt.weights_path, map_location='cpu') From 8b6f1595e0eaa444a78bfbb0d568d15c1077f1d8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 2 Sep 2018 13:17:28 +0200 Subject: [PATCH 0072/2595] updates --- test.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index a0a71b14..e1ce5d54 100644 --- a/test.py +++ b/test.py @@ -22,10 +22,14 @@ print(opt) cuda = torch.cuda.is_available() and opt.use_cuda device = torch.device('cuda:0' if cuda else 'cpu') -# Get data configuration +# Configure run data_config = parse_data_config(opt.data_config_path) -test_path = data_config['valid'] num_classes = int(data_config['classes']) +if platform == 'darwin': # MacOS (local) + test_path = data_config['valid'] +else: # linux (cloud, i.e. gcp) + test_path = '../coco/trainvalno5k.part' + # Initiate model model = Darknet(opt.cfg, opt.img_size) From c99cb43c55b42b454804601d6b46610efc30f976 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 2 Sep 2018 13:17:38 +0200 Subject: [PATCH 0073/2595] updates --- test.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test.py b/test.py index e1ce5d54..975e16e0 100644 --- a/test.py +++ b/test.py @@ -30,7 +30,6 @@ if platform == 'darwin': # MacOS (local) else: # linux (cloud, i.e. gcp) test_path = '../coco/trainvalno5k.part' - # Initiate model model = Darknet(opt.cfg, opt.img_size) @@ -87,7 +86,7 @@ for batch_i, (imgs, targets) in enumerate(dataloader): correct.extend([0 for _ in range(len(detections))]) else: # Extract target boxes as (x1, y1, x2, y2) - target_boxes = xywh2xyxy(annotations[:,1:5]) + target_boxes = xywh2xyxy(annotations[:, 1:5]) target_boxes *= opt.img_size detected = [] From 345f4773b72b1d0d22626f9984870e684ef3fdf8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 2 Sep 2018 13:18:59 +0200 Subject: [PATCH 0074/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 975e16e0..f0faeab1 100644 --- a/test.py +++ b/test.py @@ -28,7 +28,7 @@ num_classes = int(data_config['classes']) if platform == 'darwin': # MacOS (local) test_path = data_config['valid'] else: # linux (cloud, i.e. gcp) - test_path = '../coco/trainvalno5k.part' + test_path = '../coco/5k.part' # Initiate model model = Darknet(opt.cfg, opt.img_size) From caeba13b843a16a26e33699989c0895ce4a583be Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 2 Sep 2018 14:01:31 +0200 Subject: [PATCH 0075/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index f404e3d7..6fff74c5 100644 --- a/train.py +++ b/train.py @@ -95,7 +95,7 @@ def main(opt): # Multi-Scale Training # img_size = random.choice(range(10, 20)) * 32 - # dataloader = ListDataset(train_path, batch_size=opt.batch_size, img_size=img_size) + # dataloader = load_images_and_labels(train_path, batch_size=opt.batch_size, img_size=img_size, augment=True) # print('Running this epoch with image size %g' % img_size) # Update scheduler From d35cff2d22607a322de80782e1b0d792456f4a72 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 2 Sep 2018 23:43:26 +0200 Subject: [PATCH 0076/2595] updates --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 2792cbf5..83fbf691 100755 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ http://www.ultralytics.com # Description -The https://github.com/ultralytics/yolov3 repo contains inference and training code for YOLOv3 in PyTorch. Training is done on the COCO dataset by default: https://cocodataset.org/#home. **Credit to Joseph Redmon for YOLO** (https://pjreddie.com/darknet/yolo/) and to **Erik Lindernoren for the pytorch implementation** this work is based on (https://github.com/eriklindernoren/PyTorch-YOLOv3). +The https://github.com/ultralytics/yolov3 repo contains inference and training code for YOLOv3 in PyTorch. Training is done on the COCO dataset by default: https://cocodataset.org/#home. **Credit to Joseph Redmon for YOLO** (https://pjreddie.com/darknet/yolo/) and to **Erik Lindernoren for the PyTorch implementation** this work is based on (https://github.com/eriklindernoren/PyTorch-YOLOv3). # Requirements @@ -23,7 +23,7 @@ Python 3.6 or later with the following `pip3 install -U -r requirements.txt` pac **Resume Training:** Run `train.py -resume 1` to resume training from the most recently saved checkpoint `latest.pt`. -Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process ~10 epochs/day with full augmentation, or ~15 epochs/day without input image augmentation. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (results in progress to 160 epochs, will update). +Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process about 10-15 epochs/day depending on image size and augmentation (13 epochs/day at 416 pixels with default augmentation). Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (results in progress to 160 epochs, will update). ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_training_loss.png "coco training loss") @@ -51,7 +51,7 @@ Checkpoints are saved in `/checkpoints` directory. Run `detect.py` to apply trai # Testing -Run `test.py` to validate the official YOLOv3 weights `checkpoints/yolov3.weights` against thh 5000 validation images. You should obtain a mAP of .581 using this repo (https://github.com/ultralytics/yolov3), compared to .579 as reported in darknet (https://arxiv.org/abs/1804.02767). +Run `test.py` to validate the official YOLOv3 weights `checkpoints/yolov3.weights` against the 5000 validation images. You should obtain a mAP of .581 using this repo (https://github.com/ultralytics/yolov3), compared to .579 as reported in darknet (https://arxiv.org/abs/1804.02767). Run `test.py -weights_path checkpoints/latest.pt` to validate against the latest training checkpoint. From defae83d77753a69ba79e9758440958777bd58b9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 3 Sep 2018 00:35:46 +0200 Subject: [PATCH 0077/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 6fff74c5..ca6090c5 100644 --- a/train.py +++ b/train.py @@ -34,7 +34,7 @@ def main(opt): data_config = parse_data_config(opt.data_config_path) num_classes = int(data_config['classes']) if platform == 'darwin': # MacOS (local) - train_path = data_config['valid'] + train_path = data_config['train'] else: # linux (cloud, i.e. gcp) train_path = '../coco/trainvalno5k.part' From aa77cbea116de6238c2fa1b06d80b8a009ecd160 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 3 Sep 2018 00:44:55 +0200 Subject: [PATCH 0078/2595] updates --- train.py | 2 +- utils/utils.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index ca6090c5..27074389 100644 --- a/train.py +++ b/train.py @@ -65,7 +65,7 @@ def main(opt): # p.requires_grad = False # Set optimizer - # optimizer = torch.optim.SGD(model.parameters(), lr=.001, momentum=.9, weight_decay=0.0005 * 0, nesterov=True) + # optimizer = torch.optim.SGD(model.parameters(), lr=.001, momentum=.9, weight_decay=5e-4, nesterov=True) # optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, model.parameters())) optimizer = torch.optim.Adam(model.parameters()) optimizer.load_state_dict(checkpoint['optimizer']) diff --git a/utils/utils.py b/utils/utils.py index 249a855f..17b8f9bd 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -368,10 +368,10 @@ def plotResults(): plt.figure(figsize=(16, 8)) s = ['X', 'Y', 'Width', 'Height', 'Objectness', 'Classification', 'Total Loss', 'Precision', 'Recall'] for f in ('/Users/glennjocher/Downloads/results.txt', - '/Users/glennjocher/Downloads/resultsBCE2.txt'): + '/Users/glennjocher/Downloads/resultsBCE.txt'): results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 9, 10]).T for i in range(9): plt.subplot(2, 5, i + 1) plt.plot(results[i, :], marker='.', label=f) plt.title(s[i]) - plt.legend(cocococosadfc) + plt.legend() From 3a0c16fbc2e9cd1cb7d36249ac1654281978fba9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 4 Sep 2018 14:36:51 +0200 Subject: [PATCH 0079/2595] updates --- README.md | 5 ++++- train.py | 3 ++- utils/gcp.sh | 6 ++++-- utils/utils.py | 8 ++++---- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 83fbf691..b0b73bf2 100755 --- a/README.md +++ b/README.md @@ -45,7 +45,10 @@ HS**V** Intensity | +/- 50% # Inference -Checkpoints are saved in `/checkpoints` directory. Run `detect.py` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder, shown here. +Checkpoints are saved in `/checkpoints` directory. Run `detect.py` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder, shown here. Alternatively you can use the official YOLOv3 weights: + +-PyTorch format: https://storage.googleapis.com/ultralytics/yolov3.pt +-darknet format: https://pjreddie.com/media/files/yolov3.weights ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/zidane_result.jpg "inference example") diff --git a/train.py b/train.py index 27074389..514195c2 100644 --- a/train.py +++ b/train.py @@ -68,7 +68,7 @@ def main(opt): # optimizer = torch.optim.SGD(model.parameters(), lr=.001, momentum=.9, weight_decay=5e-4, nesterov=True) # optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, model.parameters())) optimizer = torch.optim.Adam(model.parameters()) - optimizer.load_state_dict(checkpoint['optimizer']) + #optimizer.load_state_dict(checkpoint['optimizer']) start_epoch = checkpoint['epoch'] + 1 best_loss = checkpoint['best_loss'] @@ -79,6 +79,7 @@ def main(opt): print('Using ', torch.cuda.device_count(), ' GPUs') model = nn.DataParallel(model) model.to(device).train() + # optimizer = torch.optim.SGD(model.parameters(), lr=1e-4, momentum=.9, weight_decay=5e-4) optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-4, weight_decay=5e-4) # Set scheduler diff --git a/utils/gcp.sh b/utils/gcp.sh index 71e790d8..2c9da943 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -4,9 +4,11 @@ sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 train.py -img_size 416 -epochs 160 # Resume -cd yolov3 && python3 train.py -img_size 416 -resume 1 +python3 train.py -img_size 416 -resume 1 # Detect gsutil cp gs://ultralytics/fresh9_5_e201.pt yolov3/checkpoints -cd yolov3 && python3 detect.py +python3 detect.py +# Test +python3 test.py -img_size 416 -weights_path checkpoints/latest.pt diff --git a/utils/utils.py b/utils/utils.py index 17b8f9bd..abd42c76 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -367,11 +367,11 @@ def plotResults(): import matplotlib.pyplot as plt plt.figure(figsize=(16, 8)) s = ['X', 'Y', 'Width', 'Height', 'Objectness', 'Classification', 'Total Loss', 'Precision', 'Recall'] - for f in ('/Users/glennjocher/Downloads/results.txt', - '/Users/glennjocher/Downloads/resultsBCE.txt'): + for f in ('/Users/glennjocher/Downloads/results_CE.txt', + '/Users/glennjocher/Downloads/results_BCE.txt'): results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 9, 10]).T for i in range(9): plt.subplot(2, 5, i + 1) - plt.plot(results[i, :], marker='.', label=f) + plt.plot(results[i, :19], marker='.', label=f) plt.title(s[i]) - plt.legend() + plt.legend \ No newline at end of file From 283a3d27a4426885ca61d0b6c68d19f591ee59f5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 4 Sep 2018 14:38:20 +0200 Subject: [PATCH 0080/2595] updates --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b0b73bf2..aaf33a8a 100755 --- a/README.md +++ b/README.md @@ -47,8 +47,8 @@ HS**V** Intensity | +/- 50% Checkpoints are saved in `/checkpoints` directory. Run `detect.py` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder, shown here. Alternatively you can use the official YOLOv3 weights: --PyTorch format: https://storage.googleapis.com/ultralytics/yolov3.pt --darknet format: https://pjreddie.com/media/files/yolov3.weights +- PyTorch format: https://storage.googleapis.com/ultralytics/yolov3.pt +- darknet format: https://pjreddie.com/media/files/yolov3.weights ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/zidane_result.jpg "inference example") From f88b2bd15345615569fe845a85abfb098aa22c24 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 4 Sep 2018 14:39:48 +0200 Subject: [PATCH 0081/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index aaf33a8a..4c9a48ef 100755 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ HS**V** Intensity | +/- 50% Checkpoints are saved in `/checkpoints` directory. Run `detect.py` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder, shown here. Alternatively you can use the official YOLOv3 weights: - PyTorch format: https://storage.googleapis.com/ultralytics/yolov3.pt -- darknet format: https://pjreddie.com/media/files/yolov3.weights +- Darknet format: https://pjreddie.com/media/files/yolov3.weights ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/zidane_result.jpg "inference example") From b04ee340356f044f695525f099542d560c821064 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 4 Sep 2018 14:41:52 +0200 Subject: [PATCH 0082/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 514195c2..626bbcc0 100644 --- a/train.py +++ b/train.py @@ -68,7 +68,7 @@ def main(opt): # optimizer = torch.optim.SGD(model.parameters(), lr=.001, momentum=.9, weight_decay=5e-4, nesterov=True) # optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, model.parameters())) optimizer = torch.optim.Adam(model.parameters()) - #optimizer.load_state_dict(checkpoint['optimizer']) + optimizer.load_state_dict(checkpoint['optimizer']) start_epoch = checkpoint['epoch'] + 1 best_loss = checkpoint['best_loss'] From 966d85ba01c5331cd4515e2f74b6fb7e282da51b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 4 Sep 2018 15:08:06 +0200 Subject: [PATCH 0083/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index abd42c76..43140197 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -372,6 +372,6 @@ def plotResults(): results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 9, 10]).T for i in range(9): plt.subplot(2, 5, i + 1) - plt.plot(results[i, :19], marker='.', label=f) + plt.plot(results[i, :], marker='.', label=f) plt.title(s[i]) plt.legend \ No newline at end of file From 0bfc4bcee33096472ecbdc5287707f586ab162bf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 4 Sep 2018 15:08:32 +0200 Subject: [PATCH 0084/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 43140197..44367b81 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -374,4 +374,4 @@ def plotResults(): plt.subplot(2, 5, i + 1) plt.plot(results[i, :], marker='.', label=f) plt.title(s[i]) - plt.legend \ No newline at end of file + plt.legend() From af9864de7b3cdc9a081d2babbbd2c2494b5ae734 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 5 Sep 2018 14:59:49 +0200 Subject: [PATCH 0085/2595] updates --- detect.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/detect.py b/detect.py index d52f8139..b2acb320 100755 --- a/detect.py +++ b/detect.py @@ -18,8 +18,8 @@ parser.add_argument('-txt_out', type=bool, default=False) parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('-class_path', type=str, default='data/coco.names', help='path to class label file') -parser.add_argument('-conf_thres', type=float, default=0.8, help='object confidence threshold') -parser.add_argument('-nms_thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') +parser.add_argument('-conf_thres', type=float, default=0.99, help='object confidence threshold') +parser.add_argument('-nms_thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') parser.add_argument('-batch_size', type=int, default=1, help='size of the batches') parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each image dimension') opt = parser.parse_args() @@ -33,7 +33,8 @@ def detect(opt): # Load model model = Darknet(opt.cfg, opt.img_size) - weights_path = 'checkpoints/yolov3.weights' + #weights_path = 'checkpoints/yolov3.weights' + weights_path = 'checkpoints/latest.pt' if weights_path.endswith('.weights'): # saved in darknet format load_weights(model, weights_path) else: # endswith('.pt'), saved in pytorch format @@ -130,7 +131,7 @@ def detect(opt): if opt.plot_flag: # Add the bbox to the plot - label = '%s %.2f' % (classes[int(cls_pred)], cls_conf) if cls_conf > 0.05 else None + label = '%s %.2f' % (classes[int(cls_pred)], conf) color = bbox_colors[int(np.where(unique_classes == int(cls_pred))[0])] plot_one_box([x1, y1, x2, y2], img, label=label, color=color, line_thickness=3) From a284fc921db7b87710651238e5e0951c08c59ff1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 8 Sep 2018 14:46:22 +0200 Subject: [PATCH 0086/2595] updates --- detect.py | 2 +- test.py | 5 ++++- utils/datasets.py | 3 +-- utils/utils.py | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/detect.py b/detect.py index b2acb320..76c6d3c2 100755 --- a/detect.py +++ b/detect.py @@ -133,7 +133,7 @@ def detect(opt): # Add the bbox to the plot label = '%s %.2f' % (classes[int(cls_pred)], conf) color = bbox_colors[int(np.where(unique_classes == int(cls_pred))[0])] - plot_one_box([x1, y1, x2, y2], img, label=label, color=color, line_thickness=3) + plot_one_box([x1, y1, x2, y2], img, label=label, color=color) if opt.plot_flag: # Save generated image with detections diff --git a/test.py b/test.py index f0faeab1..9d54421a 100644 --- a/test.py +++ b/test.py @@ -8,7 +8,7 @@ parser = argparse.ArgumentParser() parser.add_argument('-batch_size', type=int, default=32, help='size of each image batch') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='path to model config file') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='path to data config file') -parser.add_argument('-weights_path', type=str, default='checkpoints/yolov3.weights', help='path to weights file') +parser.add_argument('-weights_path', type=str, default='checkpoints/yolov3.pt', help='path to weights file') parser.add_argument('-class_path', type=str, default='data/coco.names', help='path to class label file') parser.add_argument('-iou_thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('-conf_thres', type=float, default=0.5, help='object confidence threshold') @@ -63,6 +63,9 @@ for batch_i, (imgs, targets) in enumerate(dataloader): output = model(imgs) output = non_max_suppression(output, conf_thres=opt.conf_thres, nms_thres=opt.nms_thres) + # import matplotlib.pyplot as plt + # plt.imshow(imgs[1][0]) + # Compute average precision for each sample for sample_i in range(len(targets)): correct = [] diff --git a/utils/datasets.py b/utils/datasets.py index 385384eb..0ecdfa5e 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -89,8 +89,7 @@ class load_images_and_labels(): # for training def __iter__(self): self.count = -1 - self.shuffled_vector = np.random.permutation(self.nF) # shuffled vector - # self.shuffled_vector = np.arange(self.nF) # not shuffled + self.shuffled_vector = np.random.permutation(self.nF) if self.augment else np.arange(self.nF) return self def __next__(self): diff --git a/utils/utils.py b/utils/utils.py index 44367b81..3b6c0a65 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -40,7 +40,7 @@ def xview_class_weights(indices): # weights of each class in the training set, def plot_one_box(x, img, color=None, label=None, line_thickness=None): # Plots one bounding box on image img - tl = line_thickness or round(0.003 * max(img.shape[0:2])) # line thickness + tl = line_thickness or round(0.002 * max(img.shape[0:2])) + 1 # line thickness color = color or [random.randint(0, 255) for _ in range(3)] c1, c2 = (int(x[0]), int(x[1])), (int(x[2]), int(x[3])) cv2.rectangle(img, c1, c2, color, thickness=tl) From 6116acb8c20ba523fe54111341032c6aec94ead3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 9 Sep 2018 16:14:24 +0200 Subject: [PATCH 0087/2595] np.unique sorting correction --- utils/utils.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 3b6c0a65..c843312a 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -175,14 +175,21 @@ def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG # Select best iou_pred and anchor iou_anch_best, a = iou_anch.max(0) # best anchor [0-2] for each target - # Two targets can not claim the same anchor + # Select best IOU target-anchor combo in case multiple targets want same anchor if nTb > 1: iou_order = np.argsort(-iou_anch_best) # best to worst - # u = torch.cat((gi, gj, a), 0).view(3, -1).numpy() - # _, first_unique = np.unique(u[:, iou_order], axis=1, return_index=True) # first unique indices - u = gi.float() * 0.4361538773074043 + gj.float() * 0.28012496588736746 + a.float() * 0.6627147212460307 - _, first_unique = np.unique(u[iou_order], return_index=True) # first unique indices - # print(((np.sort(first_unique) - np.sort(first_unique2)) ** 2).sum()) + + # Unique anchor selection (slow but retains original order) + u = torch.cat((gi, gj, a), 0).view(3, -1).numpy() + _, first_unique = np.unique(u[:, iou_order], axis=1, return_index=True) # first unique indices + + # Unique anchor selection (fast but does not retain order) TODO: update to retain original order + # u = gi.float() * 0.4361538773074043 + gj.float() * 0.28012496588736746 + a.float() * 0.6627147212460307 + # _, first_unique_sorted = np.unique(u[iou_order], return_index=True) # first unique indices + + # Slow - fast difference comparison + # print(((first_unique - first_unique_sorted) ** 2).sum()) + i = iou_order[first_unique] # best anchor must share significant commonality (iou) with target i = i[iou_anch_best[i] > 0.10] From e7dab5a42fc1cc31a1a46b7def94acf23b7735ff Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 10 Sep 2018 15:12:13 +0200 Subject: [PATCH 0088/2595] mAP corrected to per-class --- test.py | 31 ++++++++++++++--------------- utils/utils.py | 54 +++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 66 insertions(+), 19 deletions(-) diff --git a/test.py b/test.py index 9d54421a..f31dadd9 100644 --- a/test.py +++ b/test.py @@ -55,7 +55,11 @@ print('Compute mAP...') outputs = [] targets = None -APs = [] +mAPs = [] +TP = [] +confidence = [] +pred_class = [] +target_class = [] for batch_i, (imgs, targets) in enumerate(dataloader): imgs = imgs.to(device) @@ -78,7 +82,7 @@ for batch_i, (imgs, targets) in enumerate(dataloader): if detections is None: # If there are no detections but there are annotations mask as zero AP if annotations.size(0) != 0: - APs.append(0) + mAPs.append(0) continue # Get detections sorted by decreasing confidence scores @@ -107,22 +111,17 @@ for batch_i, (imgs, targets) in enumerate(dataloader): else: correct.append(0) - # Extract true and false positives - true_positives = np.array(correct) - false_positives = 1 - true_positives + # Compute Average Precision (AP) per class + AP = ap_per_class(tp=correct, conf=detections[:, 4], pred_cls=detections[:, 6], target_cls=annotations[:, 0]) - # Compute cumulative false positives and true positives - false_positives = np.cumsum(false_positives) - true_positives = np.cumsum(true_positives) + # Compute mean AP for this image + mAP = AP.mean() - # Compute recall and precision at all ranks - recall = true_positives / annotations.size(0) if annotations.size(0) else true_positives - precision = true_positives / np.maximum(true_positives + false_positives, np.finfo(np.float64).eps) + # Append image mAP to list of validation mAPs + mAPs.append(mAP) - # Compute average precision - AP = compute_ap(recall, precision) - APs.append(AP) + # Print image mAP and running mean mAP + print('+ Sample [%d/%d] AP: %.4f (%.4f)' % (len(mAPs), len(dataloader) * opt.batch_size, AP, np.mean(mAPs))) - print("+ Sample [%d/%d] AP: %.4f (%.4f)" % (len(APs), len(dataloader) * opt.batch_size, AP, np.mean(APs))) -print("Mean Average Precision: %.4f" % np.mean(APs)) +print('Mean Average Precision: %.4f' % np.mean(mAPs)) diff --git a/utils/utils.py b/utils/utils.py index c843312a..ad39a26d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -79,6 +79,53 @@ def xywh2xyxy(x): # Convert bounding box format from [x, y, w, h] to [x1, y1, x return y +def ap_per_class(tp, conf, pred_cls, target_cls): + """ Compute the average precision, given the recall and precision curves. + Method originally from https://github.com/rafaelpadilla/Object-Detection-Metrics. + # Arguments + tp: True positives (list). + conf: Objectness value from 0-1 (list). + pred_cls: Predicted object classes (list). + target_cls: True object classes (list). + # Returns + The average precision as computed in py-faster-rcnn. + """ + + # lists/pytorch to numpy + tp, conf, pred_cls, target_cls = np.array(tp), np.array(conf), np.array(pred_cls), np.array(target_cls) + + # Sort by objectness + i = np.argsort(-conf) + tp, conf, pred_cls = tp[i], conf[i], pred_cls[i] + + # Find unique classes + unique_classes = np.unique(np.concatenate((pred_cls, target_cls), 0)) + + # Create Precision-Recall curve and compute AP for each class + ap = [] + for c in unique_classes: + i = pred_cls == c + nGT = sum(target_cls == c) # Number of ground truth objects + + if sum(i) == 0: + ap.append(0) + else: + # Accumulate FPs and TPs + fpa = np.cumsum(1 - tp[i]) + tpa = np.cumsum(tp[i]) + + # Recall + recall = tpa / (nGT + 1e-16) + + # Precision + precision = tpa / (tpa + fpa) + + # AP from recall-precision curve + ap.append(compute_ap(recall, precision)) + + return np.array(ap) + + def compute_ap(recall, precision): """ Compute the average precision, given the recall and precision curves. Code originally from https://github.com/rbgirshick/py-faster-rcnn. @@ -90,6 +137,7 @@ def compute_ap(recall, precision): """ # correct AP calculation # first append sentinel values at the end + mrec = np.concatenate(([0.], recall, [1.])) mpre = np.concatenate(([0.], precision, [0.])) @@ -175,15 +223,15 @@ def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG # Select best iou_pred and anchor iou_anch_best, a = iou_anch.max(0) # best anchor [0-2] for each target - # Select best IOU target-anchor combo in case multiple targets want same anchor + # Select best unique target-anchor combinations if nTb > 1: iou_order = np.argsort(-iou_anch_best) # best to worst - # Unique anchor selection (slow but retains original order) + # Unique anchor selection (slower but retains original order) u = torch.cat((gi, gj, a), 0).view(3, -1).numpy() _, first_unique = np.unique(u[:, iou_order], axis=1, return_index=True) # first unique indices - # Unique anchor selection (fast but does not retain order) TODO: update to retain original order + # Unique anchor selection (faster but does not retain order) TODO: update to retain original order # u = gi.float() * 0.4361538773074043 + gj.float() * 0.28012496588736746 + a.float() * 0.6627147212460307 # _, first_unique_sorted = np.unique(u[iou_order], return_index=True) # first unique indices From cd753d23f7a627a298600d3dee29e37cd38f14b2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 10 Sep 2018 15:23:04 +0200 Subject: [PATCH 0089/2595] mAP corrected to per-class --- test.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/test.py b/test.py index f31dadd9..5521b246 100644 --- a/test.py +++ b/test.py @@ -8,7 +8,7 @@ parser = argparse.ArgumentParser() parser.add_argument('-batch_size', type=int, default=32, help='size of each image batch') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='path to model config file') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='path to data config file') -parser.add_argument('-weights_path', type=str, default='checkpoints/yolov3.pt', help='path to weights file') +parser.add_argument('-weights_path', type=str, default='checkpoints/yolov3.weights', help='path to weights file') parser.add_argument('-class_path', type=str, default='data/coco.names', help='path to class label file') parser.add_argument('-iou_thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('-conf_thres', type=float, default=0.5, help='object confidence threshold') @@ -117,11 +117,10 @@ for batch_i, (imgs, targets) in enumerate(dataloader): # Compute mean AP for this image mAP = AP.mean() - # Append image mAP to list of validation mAPs - mAPs.append(mAP) + # Append image mAP to list # Print image mAP and running mean mAP - print('+ Sample [%d/%d] AP: %.4f (%.4f)' % (len(mAPs), len(dataloader) * opt.batch_size, AP, np.mean(mAPs))) + print('+ Sample [%d/%d] AP: %.4f (%.4f)' % (len(mAPs), len(dataloader) * opt.batch_size, mAP, np.mean(mAPs))) print('Mean Average Precision: %.4f' % np.mean(mAPs)) From 873abaeef480484f6b414ff444a324def92d6a73 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 10 Sep 2018 15:23:39 +0200 Subject: [PATCH 0090/2595] mAP corrected to per-class --- test.py | 1 + 1 file changed, 1 insertion(+) diff --git a/test.py b/test.py index 5521b246..730ad5b6 100644 --- a/test.py +++ b/test.py @@ -118,6 +118,7 @@ for batch_i, (imgs, targets) in enumerate(dataloader): mAP = AP.mean() # Append image mAP to list + mAPs.append(mAP) # Print image mAP and running mean mAP print('+ Sample [%d/%d] AP: %.4f (%.4f)' % (len(mAPs), len(dataloader) * opt.batch_size, mAP, np.mean(mAPs))) From c1492ae4fb3aa3614f8478ae71fc10003f9a2b9d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 10 Sep 2018 15:50:37 +0200 Subject: [PATCH 0091/2595] updates --- detect.py | 4 ++-- test.py | 18 ++++-------------- utils/gcp.sh | 2 +- utils/utils.py | 4 ++-- 4 files changed, 9 insertions(+), 19 deletions(-) diff --git a/detect.py b/detect.py index 76c6d3c2..8603ed9f 100755 --- a/detect.py +++ b/detect.py @@ -18,7 +18,7 @@ parser.add_argument('-txt_out', type=bool, default=False) parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('-class_path', type=str, default='data/coco.names', help='path to class label file') -parser.add_argument('-conf_thres', type=float, default=0.99, help='object confidence threshold') +parser.add_argument('-conf_thres', type=float, default=0.9, help='object confidence threshold') parser.add_argument('-nms_thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') parser.add_argument('-batch_size', type=int, default=1, help='size of the batches') parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each image dimension') @@ -34,7 +34,7 @@ def detect(opt): model = Darknet(opt.cfg, opt.img_size) #weights_path = 'checkpoints/yolov3.weights' - weights_path = 'checkpoints/latest.pt' + weights_path = 'checkpoints/yolov3.pt' if weights_path.endswith('.weights'): # saved in darknet format load_weights(model, weights_path) else: # endswith('.pt'), saved in pytorch format diff --git a/test.py b/test.py index 730ad5b6..389e96a0 100644 --- a/test.py +++ b/test.py @@ -48,18 +48,11 @@ model.to(device).eval() # dataloader = torch.utils.data.DataLoader(dataset, batch_size=opt.batch_size, shuffle=False, num_workers=opt.n_cpu) dataloader = load_images_and_labels(test_path, batch_size=opt.batch_size, img_size=opt.img_size) -n_gt = 0 -correct = 0 - print('Compute mAP...') -outputs = [] +correct = 0 targets = None -mAPs = [] -TP = [] -confidence = [] -pred_class = [] -target_class = [] +outputs, mAPs, TP, confidence, pred_class, target_class = [], [], [], [], [], [] for batch_i, (imgs, targets) in enumerate(dataloader): imgs = imgs.to(device) @@ -67,9 +60,6 @@ for batch_i, (imgs, targets) in enumerate(dataloader): output = model(imgs) output = non_max_suppression(output, conf_thres=opt.conf_thres, nms_thres=opt.nms_thres) - # import matplotlib.pyplot as plt - # plt.imshow(imgs[1][0]) - # Compute average precision for each sample for sample_i in range(len(targets)): correct = [] @@ -112,7 +102,8 @@ for batch_i, (imgs, targets) in enumerate(dataloader): correct.append(0) # Compute Average Precision (AP) per class - AP = ap_per_class(tp=correct, conf=detections[:, 4], pred_cls=detections[:, 6], target_cls=annotations[:, 0]) + target_cls = annotations[:, 0] if annotations.size(0) > 1 else annotations[0] + AP = ap_per_class(tp=correct, conf=detections[:, 4], pred_cls=detections[:, 6], target_cls=target_cls) # Compute mean AP for this image mAP = AP.mean() @@ -123,5 +114,4 @@ for batch_i, (imgs, targets) in enumerate(dataloader): # Print image mAP and running mean mAP print('+ Sample [%d/%d] AP: %.4f (%.4f)' % (len(mAPs), len(dataloader) * opt.batch_size, mAP, np.mean(mAPs))) - print('Mean Average Precision: %.4f' % np.mean(mAPs)) diff --git a/utils/gcp.sh b/utils/gcp.sh index 2c9da943..50e1b9a5 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -11,4 +11,4 @@ gsutil cp gs://ultralytics/fresh9_5_e201.pt yolov3/checkpoints python3 detect.py # Test -python3 test.py -img_size 416 -weights_path checkpoints/latest.pt +python3 test.py -img_size 416 -weights_path checkpoints/yolov3.weights diff --git a/utils/utils.py b/utils/utils.py index ad39a26d..121f352e 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -105,7 +105,7 @@ def ap_per_class(tp, conf, pred_cls, target_cls): ap = [] for c in unique_classes: i = pred_cls == c - nGT = sum(target_cls == c) # Number of ground truth objects + n_gt = sum(target_cls == c) # Number of ground truth objects if sum(i) == 0: ap.append(0) @@ -115,7 +115,7 @@ def ap_per_class(tp, conf, pred_cls, target_cls): tpa = np.cumsum(tp[i]) # Recall - recall = tpa / (nGT + 1e-16) + recall = tpa / (n_gt + 1e-16) # Precision precision = tpa / (tpa + fpa) From b19e3a049fec422e189ecf176a61341785b76a87 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 10 Sep 2018 15:52:28 +0200 Subject: [PATCH 0092/2595] updates --- test.py | 1 - 1 file changed, 1 deletion(-) diff --git a/test.py b/test.py index 389e96a0..1a9f8cb8 100644 --- a/test.py +++ b/test.py @@ -1,5 +1,4 @@ import argparse - from models import * from utils.datasets import * from utils.utils import * From c43be7b350cfff8f2423547c6aa0e8d6db07061b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 10 Sep 2018 15:58:01 +0200 Subject: [PATCH 0093/2595] updates --- test.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test.py b/test.py index 1a9f8cb8..b55c039e 100644 --- a/test.py +++ b/test.py @@ -79,8 +79,11 @@ for batch_i, (imgs, targets) in enumerate(dataloader): # If no annotations add number of detections as incorrect if annotations.size(0) == 0: + target_cls = [] correct.extend([0 for _ in range(len(detections))]) else: + target_cls = annotations[:, 0] + # Extract target boxes as (x1, y1, x2, y2) target_boxes = xywh2xyxy(annotations[:, 1:5]) target_boxes *= opt.img_size @@ -101,7 +104,7 @@ for batch_i, (imgs, targets) in enumerate(dataloader): correct.append(0) # Compute Average Precision (AP) per class - target_cls = annotations[:, 0] if annotations.size(0) > 1 else annotations[0] + # target_cls = annotations[:, 0] if annotations.size(0) > 1 else annotations[0] AP = ap_per_class(tp=correct, conf=detections[:, 4], pred_cls=detections[:, 6], target_cls=target_cls) # Compute mean AP for this image From ba1b3d8fe5c509e0761be36806b9b1925418fb49 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 10 Sep 2018 16:19:00 +0200 Subject: [PATCH 0094/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 121f352e..bccb4278 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -99,7 +99,7 @@ def ap_per_class(tp, conf, pred_cls, target_cls): tp, conf, pred_cls = tp[i], conf[i], pred_cls[i] # Find unique classes - unique_classes = np.unique(np.concatenate((pred_cls, target_cls), 0)) + unique_classes = target_cls #np.unique(np.concatenate((pred_cls, target_cls), 0)) # Create Precision-Recall curve and compute AP for each class ap = [] From 751e02de3e0634ec8e08eb13619c77d113e2460e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 10 Sep 2018 16:26:40 +0200 Subject: [PATCH 0095/2595] updates --- test.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test.py b/test.py index b55c039e..5ff81729 100644 --- a/test.py +++ b/test.py @@ -80,7 +80,9 @@ for batch_i, (imgs, targets) in enumerate(dataloader): # If no annotations add number of detections as incorrect if annotations.size(0) == 0: target_cls = [] - correct.extend([0 for _ in range(len(detections))]) + #correct.extend([0 for _ in range(len(detections))]) + mAPs.append(0) + continue else: target_cls = annotations[:, 0] From 34144aabe366d06dc6978a8a623709cb16c4859a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 10 Sep 2018 16:31:56 +0200 Subject: [PATCH 0096/2595] updates --- utils/utils.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index bccb4278..fe620193 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -99,15 +99,20 @@ def ap_per_class(tp, conf, pred_cls, target_cls): tp, conf, pred_cls = tp[i], conf[i], pred_cls[i] # Find unique classes - unique_classes = target_cls #np.unique(np.concatenate((pred_cls, target_cls), 0)) + unique_classes = np.unique(np.concatenate((pred_cls, target_cls), 0)) # Create Precision-Recall curve and compute AP for each class ap = [] for c in unique_classes: i = pred_cls == c n_gt = sum(target_cls == c) # Number of ground truth objects + n_p = sum(i) # Number of predicted objects - if sum(i) == 0: + if (n_p == 0) and (n_gt == 0): + continue + elif (np == 0) and (n_gt > 0): + ap.append(0) + elif (n_p > 0) and (n_gt == 0): ap.append(0) else: # Accumulate FPs and TPs From ff04315f96b9d1433d4075388ed79752f36eafd7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 10 Sep 2018 16:35:00 +0200 Subject: [PATCH 0097/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index fe620193..fc590bc1 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -99,7 +99,7 @@ def ap_per_class(tp, conf, pred_cls, target_cls): tp, conf, pred_cls = tp[i], conf[i], pred_cls[i] # Find unique classes - unique_classes = np.unique(np.concatenate((pred_cls, target_cls), 0)) + unique_classes = target_cls# np.unique(np.concatenate((pred_cls, target_cls), 0)) # Create Precision-Recall curve and compute AP for each class ap = [] From 300e2b5dfc04e626f2e9aa8fce5b8b1a4ec678e9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 10 Sep 2018 16:41:02 +0200 Subject: [PATCH 0098/2595] updates --- test.py | 2 +- utils/gcp.sh | 8 ++++++++ utils/utils.py | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index 5ff81729..7252e291 100644 --- a/test.py +++ b/test.py @@ -11,7 +11,7 @@ parser.add_argument('-weights_path', type=str, default='checkpoints/yolov3.weigh parser.add_argument('-class_path', type=str, default='data/coco.names', help='path to class label file') parser.add_argument('-iou_thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('-conf_thres', type=float, default=0.5, help='object confidence threshold') -parser.add_argument('-nms_thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') +parser.add_argument('-nms_thres', type=float, default=0.4, help='iou threshold for non-maximum suppression') parser.add_argument('-n_cpu', type=int, default=0, help='number of cpu threads to use during batch generation') parser.add_argument('-img_size', type=int, default=416, help='size of each image dimension') parser.add_argument('-use_cuda', type=bool, default=True, help='whether to use cuda if available') diff --git a/utils/gcp.sh b/utils/gcp.sh index 50e1b9a5..ed1d189c 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -12,3 +12,11 @@ python3 detect.py # Test python3 test.py -img_size 416 -weights_path checkpoints/yolov3.weights + + +sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 +cd yolov3 +cd checkpoints +wget https://pjreddie.com/media/files/yolov3.weights +cd .. +python3 test.py -img_size 416 -weights_path checkpoints/yolov3.weights diff --git a/utils/utils.py b/utils/utils.py index fc590bc1..fe620193 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -99,7 +99,7 @@ def ap_per_class(tp, conf, pred_cls, target_cls): tp, conf, pred_cls = tp[i], conf[i], pred_cls[i] # Find unique classes - unique_classes = target_cls# np.unique(np.concatenate((pred_cls, target_cls), 0)) + unique_classes = np.unique(np.concatenate((pred_cls, target_cls), 0)) # Create Precision-Recall curve and compute AP for each class ap = [] From a8f8ec134bcab7e163134d7435db9c1a065b8701 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 10 Sep 2018 17:00:39 +0200 Subject: [PATCH 0099/2595] updates --- detect.py | 2 +- test.py | 2 +- utils/gcp.sh | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/detect.py b/detect.py index 8603ed9f..5b6c3ea3 100755 --- a/detect.py +++ b/detect.py @@ -18,7 +18,7 @@ parser.add_argument('-txt_out', type=bool, default=False) parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('-class_path', type=str, default='data/coco.names', help='path to class label file') -parser.add_argument('-conf_thres', type=float, default=0.9, help='object confidence threshold') +parser.add_argument('-conf_thres', type=float, default=0.98, help='object confidence threshold') parser.add_argument('-nms_thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') parser.add_argument('-batch_size', type=int, default=1, help='size of the batches') parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each image dimension') diff --git a/test.py b/test.py index 7252e291..5ff81729 100644 --- a/test.py +++ b/test.py @@ -11,7 +11,7 @@ parser.add_argument('-weights_path', type=str, default='checkpoints/yolov3.weigh parser.add_argument('-class_path', type=str, default='data/coco.names', help='path to class label file') parser.add_argument('-iou_thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('-conf_thres', type=float, default=0.5, help='object confidence threshold') -parser.add_argument('-nms_thres', type=float, default=0.4, help='iou threshold for non-maximum suppression') +parser.add_argument('-nms_thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') parser.add_argument('-n_cpu', type=int, default=0, help='number of cpu threads to use during batch generation') parser.add_argument('-img_size', type=int, default=416, help='size of each image dimension') parser.add_argument('-use_cuda', type=bool, default=True, help='whether to use cuda if available') diff --git a/utils/gcp.sh b/utils/gcp.sh index ed1d189c..63bb2f55 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -14,9 +14,10 @@ python3 detect.py python3 test.py -img_size 416 -weights_path checkpoints/yolov3.weights +# Download and Test sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 cd yolov3 cd checkpoints wget https://pjreddie.com/media/files/yolov3.weights cd .. -python3 test.py -img_size 416 -weights_path checkpoints/yolov3.weights +python3 test.py -img_size 416 -weights_path checkpoints/backup5.pt -nms_thres 0.45 From 9514e7443891ab2eaa106292a041cb0b8770f7c3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 10 Sep 2018 17:02:38 +0200 Subject: [PATCH 0100/2595] updates --- models.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 136c314d..0df5930e 100755 --- a/models.py +++ b/models.py @@ -159,14 +159,16 @@ class YOLOLayer(nn.Module): lh = 5 * MSELoss(h[mask], th[mask]) lconf = 1.5 * BCEWithLogitsLoss1(pred_conf[mask], mask[mask].float()) - lcls = nM * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) - # lcls = nM * BCEWithLogitsLoss2(pred_cls[mask], tcls.float()) + # lcls = nM * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + lcls = nM * BCEWithLogitsLoss2(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) lconf += nM * BCEWithLogitsLoss2(pred_conf[~mask], mask[~mask].float()) loss = lx + ly + lw + lh + lconf + lcls + + # Sum False Positives from unnasigned anchors i = torch.sigmoid(pred_conf[~mask]) > 0.99 FPe = torch.zeros(self.nC) if i.sum() > 0: From 68de92f1a118ddc2f5b117c6421bc4827c6c9f1f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 13 Sep 2018 14:15:49 +0200 Subject: [PATCH 0101/2595] loss lambda corrections --- models.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/models.py b/models.py index 0df5930e..15502462 100755 --- a/models.py +++ b/models.py @@ -157,14 +157,14 @@ class YOLOLayer(nn.Module): ly = 5 * MSELoss(y[mask], ty[mask]) lw = 5 * MSELoss(w[mask], tw[mask]) lh = 5 * MSELoss(h[mask], th[mask]) - lconf = 1.5 * BCEWithLogitsLoss1(pred_conf[mask], mask[mask].float()) + lconf = BCEWithLogitsLoss1(pred_conf[mask], mask[mask].float()) - # lcls = nM * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) - lcls = nM * BCEWithLogitsLoss2(pred_cls[mask], tcls.float()) + lcls = nM * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + # lcls = nM * BCEWithLogitsLoss2(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) - lconf += nM * BCEWithLogitsLoss2(pred_conf[~mask], mask[~mask].float()) + lconf += 0.5 * nM * BCEWithLogitsLoss2(pred_conf[~mask], mask[~mask].float()) loss = lx + ly + lw + lh + lconf + lcls From 29fbcb059f74959dff15be7f1ee033b34cf0ea53 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 19 Sep 2018 04:21:46 +0200 Subject: [PATCH 0102/2595] simplify train.py --- train.py | 73 +++++++++++++++++++++++++------------------------------- 1 file changed, 33 insertions(+), 40 deletions(-) diff --git a/train.py b/train.py index 626bbcc0..76d96efb 100644 --- a/train.py +++ b/train.py @@ -90,7 +90,7 @@ def main(opt): modelinfo(model) t0, t1 = time.time(), time.time() print('%10s' * 16 % ( - 'Epoch', 'Batch', 'x', 'y', 'w', 'h', 'conf', 'cls', 'total', 'P', 'R', 'nGT', 'TP', 'FP', 'FN', 'time')) + 'Epoch', 'Batch', 'x', 'y', 'w', 'h', 'conf', 'cls', 'total', 'P', 'R', 'nTargets', 'TP', 'FP', 'FN', 'time')) for epoch in range(opt.epochs): epoch += start_epoch @@ -115,56 +115,49 @@ def main(opt): metrics = torch.zeros(4, num_classes) for i, (imgs, targets) in enumerate(dataloader): - n = opt.batch_size # number of pictures at a time - for j in range(int(len(imgs) / n)): - targets_j = targets[j * n:j * n + n] - nGT = sum([len(x) for x in targets_j]) - if nGT < 1: - continue + if sum([len(x) for x in targets]) < 1: # if no targets continue + continue - loss = model(imgs[j * n:j * n + n].to(device), targets_j, requestPrecision=True, epoch=epoch) - optimizer.zero_grad() - loss.backward() - optimizer.step() + loss = model(imgs.to(device), targets, requestPrecision=True, epoch=epoch) + optimizer.zero_grad() + loss.backward() + optimizer.step() - ui += 1 - metrics += model.losses['metrics'] - for key, val in model.losses.items(): - rloss[key] = (rloss[key] * ui + val) / (ui + 1) + ui += 1 + metrics += model.losses['metrics'] + for key, val in model.losses.items(): + rloss[key] = (rloss[key] * ui + val) / (ui + 1) - # Precision - precision = metrics[0] / (metrics[0] + metrics[1] + 1e-16) - k = (metrics[0] + metrics[1]) > 0 - if k.sum() > 0: - mean_precision = precision[k].mean() - else: - mean_precision = 0 + # Precision + precision = metrics[0] / (metrics[0] + metrics[1] + 1e-16) + k = (metrics[0] + metrics[1]) > 0 + if k.sum() > 0: + mean_precision = precision[k].mean() + else: + mean_precision = 0 - # Recall - recall = metrics[0] / (metrics[0] + metrics[2] + 1e-16) - k = (metrics[0] + metrics[2]) > 0 - if k.sum() > 0: - mean_recall = recall[k].mean() - else: - mean_recall = 0 + # Recall + recall = metrics[0] / (metrics[0] + metrics[2] + 1e-16) + k = (metrics[0] + metrics[2]) > 0 + if k.sum() > 0: + mean_recall = recall[k].mean() + else: + mean_recall = 0 - s = ('%10s%10s' + '%10.3g' * 14) % ( - '%g/%g' % (epoch, opt.epochs - 1), '%g/%g' % (i, len(dataloader) - 1), rloss['x'], - rloss['y'], rloss['w'], rloss['h'], rloss['conf'], rloss['cls'], - rloss['loss'], mean_precision, mean_recall, model.losses['nGT'], model.losses['TP'], - model.losses['FP'], model.losses['FN'], time.time() - t1) - t1 = time.time() - print(s) - - # if i == 1: - # return + s = ('%10s%10s' + '%10.3g' * 14) % ( + '%g/%g' % (epoch, opt.epochs - 1), '%g/%g' % (i, len(dataloader) - 1), rloss['x'], + rloss['y'], rloss['w'], rloss['h'], rloss['conf'], rloss['cls'], + rloss['loss'], mean_precision, mean_recall, model.losses['nT'], model.losses['TP'], + model.losses['FP'], model.losses['FN'], time.time() - t1) + t1 = time.time() + print(s) # Write epoch results with open('results.txt', 'a') as file: file.write(s + '\n') # Update best loss - loss_per_target = rloss['loss'] / rloss['nGT'] + loss_per_target = rloss['loss'] / rloss['nT'] if loss_per_target < best_loss: best_loss = loss_per_target From 1cfde4aba83ba549ca5290ea1cb42a7f7bea40ed Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 19 Sep 2018 04:32:16 +0200 Subject: [PATCH 0103/2595] nGT to nT --- models.py | 10 +++++----- train.py | 2 +- utils/utils.py | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/models.py b/models.py index 15502462..d9ed6689 100755 --- a/models.py +++ b/models.py @@ -2,8 +2,8 @@ from collections import defaultdict import torch.nn as nn -from utils.utils import * from utils.parse_config import * +from utils.utils import * def create_modules(module_defs): @@ -151,7 +151,7 @@ class YOLOLayer(nn.Module): # Mask outputs to ignore non-existing objects (but keep confidence predictions) nM = mask.sum().float() - nGT = sum([len(x) for x in targets]) + nT = sum([len(x) for x in targets]) if nM > 0: lx = 5 * MSELoss(x[mask], tx[mask]) ly = 5 * MSELoss(y[mask], ty[mask]) @@ -177,7 +177,7 @@ class YOLOLayer(nn.Module): FPe[c] += 1 return loss, loss.item(), lx.item(), ly.item(), lw.item(), lh.item(), lconf.item(), lcls.item(), \ - nGT, TP, FP, FPe, FN, TC + nT, TP, FP, FPe, FN, TC else: pred_boxes[..., 0] = x.data + self.grid_x @@ -200,7 +200,7 @@ class Darknet(nn.Module): self.module_defs[0]['height'] = img_size self.hyperparams, self.module_list = create_modules(self.module_defs) self.img_size = img_size - self.loss_names = ['loss', 'x', 'y', 'w', 'h', 'conf', 'cls', 'nGT', 'TP', 'FP', 'FPe', 'FN', 'TC'] + self.loss_names = ['loss', 'x', 'y', 'w', 'h', 'conf', 'cls', 'nT', 'TP', 'FP', 'FPe', 'FN', 'TC'] def forward(self, x, targets=None, requestPrecision=False, epoch=None): is_training = targets is not None @@ -230,7 +230,7 @@ class Darknet(nn.Module): layer_outputs.append(x) if is_training: - self.losses['nGT'] /= 3 + self.losses['nT'] /= 3 self.losses['TC'] /= 3 metrics = torch.zeros(4, len(self.losses['FPe'])) # TP, FP, FN, target_count diff --git a/train.py b/train.py index 76d96efb..25580ab8 100644 --- a/train.py +++ b/train.py @@ -145,7 +145,7 @@ def main(opt): mean_recall = 0 s = ('%10s%10s' + '%10.3g' * 14) % ( - '%g/%g' % (epoch, opt.epochs - 1), '%g/%g' % (i, len(dataloader) - 1), rloss['x'], + '%g/%g' % (epoch, opt.epochs - 1), '%g/%g' % (i, len(dataloader) - 1), rloss['x'], rloss['y'], rloss['w'], rloss['h'], rloss['conf'], rloss['cls'], rloss['loss'], mean_precision, mean_recall, model.losses['nT'], model.losses['TP'], model.losses['FP'], model.losses['FN'], time.time() - t1) diff --git a/utils/utils.py b/utils/utils.py index fe620193..13b6e031 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -190,7 +190,7 @@ def bbox_iou(box1, box2, x1y1x2y2=True): def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG, requestPrecision): """ - returns nGT, nCorrect, tx, ty, tw, th, tconf, tcls + returns nT, nCorrect, tx, ty, tw, th, tconf, tcls """ nB = len(target) # target.shape[0] nT = [len(x) for x in target] # torch.argmin(target[:, :, 4], 1) # targets per image From a722601ef61149cc9e5135f58c762310627c970a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 20 Sep 2018 18:03:19 +0200 Subject: [PATCH 0104/2595] Adam to SGD with burn-in --- detect.py | 3 +-- models.py | 25 +++++++++++++++++-------- test.py | 3 +-- train.py | 40 ++++++++++++++++++++++------------------ utils/utils.py | 12 +++++++----- 5 files changed, 48 insertions(+), 35 deletions(-) diff --git a/detect.py b/detect.py index 5b6c3ea3..1abfda65 100755 --- a/detect.py +++ b/detect.py @@ -18,7 +18,7 @@ parser.add_argument('-txt_out', type=bool, default=False) parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('-class_path', type=str, default='data/coco.names', help='path to class label file') -parser.add_argument('-conf_thres', type=float, default=0.98, help='object confidence threshold') +parser.add_argument('-conf_thres', type=float, default=0.80, help='object confidence threshold') parser.add_argument('-nms_thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') parser.add_argument('-batch_size', type=int, default=1, help='size of the batches') parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each image dimension') @@ -33,7 +33,6 @@ def detect(opt): # Load model model = Darknet(opt.cfg, opt.img_size) - #weights_path = 'checkpoints/yolov3.weights' weights_path = 'checkpoints/yolov3.pt' if weights_path.endswith('.weights'): # saved in darknet format load_weights(model, weights_path) diff --git a/models.py b/models.py index d9ed6689..3da8fa55 100755 --- a/models.py +++ b/models.py @@ -100,7 +100,7 @@ class YOLOLayer(nn.Module): self.anchor_w = self.scaled_anchors[:, 0:1].view((1, nA, 1, 1)) self.anchor_h = self.scaled_anchors[:, 1:2].view((1, nA, 1, 1)) - def forward(self, p, targets=None, requestPrecision=False, epoch=None): + def forward(self, p, targets=None, requestPrecision=False): FT = torch.cuda.FloatTensor if p.is_cuda else torch.FloatTensor bs = p.shape[0] # batch size @@ -117,10 +117,18 @@ class YOLOLayer(nn.Module): # Get outputs x = torch.sigmoid(p[..., 0]) # Center x y = torch.sigmoid(p[..., 1]) # Center y - w = p[..., 2] # Width - h = p[..., 3] # Height - width = torch.exp(w.data) * self.anchor_w - height = torch.exp(h.data) * self.anchor_h + + # Width and height (yolo method) + # w = p[..., 2] # Width + # h = p[..., 3] # Height + # width = torch.exp(w.data) * self.anchor_w + # height = torch.exp(h.data) * self.anchor_h + + # Width and height (power method) + w = torch.sigmoid(p[..., 2]) # Width + h = torch.sigmoid(p[..., 3]) # Height + width = ((w.data * 2) ** 2) * self.anchor_w + height = ((h.data * 2) ** 2) * self.anchor_h # Add offset and scale with anchors (in grid space, i.e. 0-13) pred_boxes = FT(bs, self.nA, nG, nG, 4) @@ -151,6 +159,7 @@ class YOLOLayer(nn.Module): # Mask outputs to ignore non-existing objects (but keep confidence predictions) nM = mask.sum().float() + batch_size = len(targets) nT = sum([len(x) for x in targets]) if nM > 0: lx = 5 * MSELoss(x[mask], tx[mask]) @@ -166,7 +175,7 @@ class YOLOLayer(nn.Module): lconf += 0.5 * nM * BCEWithLogitsLoss2(pred_conf[~mask], mask[~mask].float()) - loss = lx + ly + lw + lh + lconf + lcls + loss = (lx + ly + lw + lh + lconf + lcls) / batch_size # Sum False Positives from unnasigned anchors i = torch.sigmoid(pred_conf[~mask]) > 0.99 @@ -202,7 +211,7 @@ class Darknet(nn.Module): self.img_size = img_size self.loss_names = ['loss', 'x', 'y', 'w', 'h', 'conf', 'cls', 'nT', 'TP', 'FP', 'FPe', 'FN', 'TC'] - def forward(self, x, targets=None, requestPrecision=False, epoch=None): + def forward(self, x, targets=None, requestPrecision=False): is_training = targets is not None output = [] self.losses = defaultdict(float) @@ -220,7 +229,7 @@ class Darknet(nn.Module): elif module_def['type'] == 'yolo': # Train phase: get loss if is_training: - x, *losses = module[0](x, targets, requestPrecision, epoch) + x, *losses = module[0](x, targets, requestPrecision) for name, loss in zip(self.loss_names, losses): self.losses[name] += loss # Test phase: Get detections diff --git a/test.py b/test.py index 5ff81729..64415126 100644 --- a/test.py +++ b/test.py @@ -7,7 +7,7 @@ parser = argparse.ArgumentParser() parser.add_argument('-batch_size', type=int, default=32, help='size of each image batch') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='path to model config file') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='path to data config file') -parser.add_argument('-weights_path', type=str, default='checkpoints/yolov3.weights', help='path to weights file') +parser.add_argument('-weights_path', type=str, default='checkpoints/yolov3.pt', help='path to weights file') parser.add_argument('-class_path', type=str, default='data/coco.names', help='path to class label file') parser.add_argument('-iou_thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('-conf_thres', type=float, default=0.5, help='object confidence threshold') @@ -106,7 +106,6 @@ for batch_i, (imgs, targets) in enumerate(dataloader): correct.append(0) # Compute Average Precision (AP) per class - # target_cls = annotations[:, 0] if annotations.size(0) > 1 else annotations[0] AP = ap_per_class(tp=correct, conf=detections[:, 4], pred_cls=detections[:, 6], target_cls=target_cls) # Compute mean AP for this image diff --git a/train.py b/train.py index 25580ab8..7ab90867 100644 --- a/train.py +++ b/train.py @@ -65,9 +65,8 @@ def main(opt): # p.requires_grad = False # Set optimizer - # optimizer = torch.optim.SGD(model.parameters(), lr=.001, momentum=.9, weight_decay=5e-4, nesterov=True) # optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, model.parameters())) - optimizer = torch.optim.Adam(model.parameters()) + optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters())) optimizer.load_state_dict(checkpoint['optimizer']) start_epoch = checkpoint['epoch'] + 1 @@ -79,12 +78,12 @@ def main(opt): print('Using ', torch.cuda.device_count(), ' GPUs') model = nn.DataParallel(model) model.to(device).train() - # optimizer = torch.optim.SGD(model.parameters(), lr=1e-4, momentum=.9, weight_decay=5e-4) - optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-4, weight_decay=5e-4) + + # Set optimizer + # optimizer = torch.optim.Adam(model.parameters(), lr=1e-4, weight_decay=5e-4) + optimizer = torch.optim.SGD(model.parameters(), lr=1e-3, momentum=.9, weight_decay=5e-4, nesterov=True) # Set scheduler - # scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(optimizer, 24, eta_min=0.00001, last_epoch=-1) - # y = 0.001 * exp(-0.00921 * x) # 1e-4 @ 250, 1e-5 @ 500 # scheduler = torch.optim.lr_scheduler.ExponentialLR(optimizer, gamma=0.99082, last_epoch=start_epoch - 1) modelinfo(model) @@ -94,35 +93,40 @@ def main(opt): for epoch in range(opt.epochs): epoch += start_epoch - # Multi-Scale Training - # img_size = random.choice(range(10, 20)) * 32 + # Multi-Scale YOLO Training + # img_size = random.choice(range(10, 20)) * 32 # 320 - 608 pixels # dataloader = load_images_and_labels(train_path, batch_size=opt.batch_size, img_size=img_size, augment=True) # print('Running this epoch with image size %g' % img_size) - # Update scheduler - # if epoch % 25 == 0: - # scheduler.last_epoch = -1 # for cosine annealing, restart every 25 epochs + # Update scheduler (automatic) # scheduler.step() - # if epoch <= 100: + + # Update scheduler (manual) # for g in optimizer.param_groups: - # g['lr'] = 0.0005 * (0.992 ** epoch) # 1/10 th every 250 epochs - # g['lr'] = 0.001 * (0.9773 ** epoch) # 1/10 th every 100 epochs - # g['lr'] = 0.0005 * (0.955 ** epoch) # 1/10 th every 50 epochs - # g['lr'] = 0.0005 * (0.926 ** epoch) # 1/10 th every 30 epochs + # g['lr'] = 1e-3 * (g ** epoch) # 1/10th every [30, 50, 100, 250] epochs using g = [.926, .955, .977, .992] ui = -1 rloss = defaultdict(float) # running loss metrics = torch.zeros(4, num_classes) for i, (imgs, targets) in enumerate(dataloader): - if sum([len(x) for x in targets]) < 1: # if no targets continue continue - loss = model(imgs.to(device), targets, requestPrecision=True, epoch=epoch) + # SGD burn-in + if (epoch == 0) & (i <= 1000): + power = 4 + lr = 1e-3 * (i / 1000) ** power + for g in optimizer.param_groups: + g['lr'] = lr + # print('SGD Burn-In LR = %9.5g' % lr, end='') + + # Compute loss, compute gradient, update parameters + loss = model(imgs.to(device), targets, requestPrecision=True) optimizer.zero_grad() loss.backward() optimizer.step() + # Compute running epoch-means of tracked metrics ui += 1 metrics += model.losses['metrics'] for key, val in model.losses.items(): diff --git a/utils/utils.py b/utils/utils.py index 13b6e031..61da640c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -262,12 +262,14 @@ def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG # Coordinates tx[b, a, gj, gi] = gx - gi.float() ty[b, a, gj, gi] = gy - gj.float() - # Width and height (sqrt method) - # tw[b, a, gj, gi] = torch.sqrt(gw / anchor_wh[a, 0]) / 2 - # th[b, a, gj, gi] = torch.sqrt(gh / anchor_wh[a, 1]) / 2 + + # Width and height (power method) + tw[b, a, gj, gi] = torch.sqrt(gw / anchor_wh[a, 0]) / 2 + th[b, a, gj, gi] = torch.sqrt(gh / anchor_wh[a, 1]) / 2 + # Width and height (yolov3 method) - tw[b, a, gj, gi] = torch.log(gw / anchor_wh[a, 0] + 1e-16) - th[b, a, gj, gi] = torch.log(gh / anchor_wh[a, 1] + 1e-16) + # tw[b, a, gj, gi] = torch.log(gw / anchor_wh[a, 0] + 1e-16) + # th[b, a, gj, gi] = torch.log(gh / anchor_wh[a, 1] + 1e-16) # One-hot encoding of label tcls[b, a, gj, gi, tc] = 1 From b93839dea7bf814ed0374fbe01dccd5f4c251c28 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 21 Sep 2018 16:00:41 +0200 Subject: [PATCH 0105/2595] add yolov3-spp.cfg --- cfg/yolov3-spp.cfg | 821 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 821 insertions(+) create mode 100755 cfg/yolov3-spp.cfg diff --git a/cfg/yolov3-spp.cfg b/cfg/yolov3-spp.cfg new file mode 100755 index 00000000..a97a3cf3 --- /dev/null +++ b/cfg/yolov3-spp.cfg @@ -0,0 +1,821 @@ +[net] +# Testing +batch=1 +subdivisions=1 +# Training +# batch=64 +# subdivisions=16 +width=608 +height=608 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +###################### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +### SPP ### +[maxpool] +stride=1 +size=5 + +[route] +layers=-2 + +[maxpool] +stride=1 +size=9 + +[route] +layers=-4 + +[maxpool] +stride=1 +size=13 + +[route] +layers=-1,-3,-5,-6 + +### End SPP ### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 6,7,8 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 61 + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 3,4,5 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 36 + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 0,1,2 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 From bd3f6171290dc8e98c058973ab8fdbbcacb0bee2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 22 Sep 2018 21:50:01 +0200 Subject: [PATCH 0106/2595] updates --- models.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/models.py b/models.py index 3da8fa55..760cea76 100755 --- a/models.py +++ b/models.py @@ -157,25 +157,25 @@ class YOLOLayer(nn.Module): if x.is_cuda: tx, ty, tw, th, mask, tcls = tx.cuda(), ty.cuda(), tw.cuda(), th.cuda(), mask.cuda(), tcls.cuda() - # Mask outputs to ignore non-existing objects (but keep confidence predictions) - nM = mask.sum().float() - batch_size = len(targets) - nT = sum([len(x) for x in targets]) - if nM > 0: - lx = 5 * MSELoss(x[mask], tx[mask]) - ly = 5 * MSELoss(y[mask], ty[mask]) - lw = 5 * MSELoss(w[mask], tw[mask]) - lh = 5 * MSELoss(h[mask], th[mask]) - lconf = BCEWithLogitsLoss1(pred_conf[mask], mask[mask].float()) + # Mask outputs to ignore non-existing objects (but keep confidence predictions) + nT = sum([len(x) for x in targets]) # number of targets + nM = mask.sum().float() # number of anchors (assigned to targets) + nB = len(targets) # batch size + if nM > 0: + lx = (5 / nB) * MSELoss(x[mask], tx[mask]) + ly = (5 / nB) * MSELoss(y[mask], ty[mask]) + lw = (5 / nB) * MSELoss(w[mask], tw[mask]) + lh = (5 / nB) * MSELoss(h[mask], th[mask]) + lconf = (1 / nB) * BCEWithLogitsLoss1(pred_conf[mask], mask[mask].float()) - lcls = nM * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) - # lcls = nM * BCEWithLogitsLoss2(pred_cls[mask], tcls.float()) - else: - lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) + lcls = (1 * nM / nB) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + # lcls = (1 * nM / nB) * BCEWithLogitsLoss2(pred_cls[mask], tcls.float()) + else: + lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) - lconf += 0.5 * nM * BCEWithLogitsLoss2(pred_conf[~mask], mask[~mask].float()) + lconf += (0.5 * nM / nB) * BCEWithLogitsLoss2(pred_conf[~mask], mask[~mask].float()) - loss = (lx + ly + lw + lh + lconf + lcls) / batch_size + loss = lx + ly + lw + lh + lconf + lcls # Sum False Positives from unnasigned anchors i = torch.sigmoid(pred_conf[~mask]) > 0.99 From cf9b4cfa5226c103cfd6e950fc789a6e45a96584 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 23 Sep 2018 22:25:23 +0200 Subject: [PATCH 0107/2595] update loss components --- models.py | 52 ++++++++++++++++++++++++++------------------------ utils/gcp.sh | 2 +- utils/utils.py | 10 +++++----- 3 files changed, 33 insertions(+), 31 deletions(-) diff --git a/models.py b/models.py index 760cea76..5cd0b865 100755 --- a/models.py +++ b/models.py @@ -137,10 +137,9 @@ class YOLOLayer(nn.Module): # Training if targets is not None: - BCEWithLogitsLoss1 = nn.BCEWithLogitsLoss(size_average=False) - BCEWithLogitsLoss2 = nn.BCEWithLogitsLoss(size_average=True) - MSELoss = nn.MSELoss(size_average=False) # version 0.4.0 - CrossEntropyLoss = nn.CrossEntropyLoss() + MSELoss = nn.MSELoss() + BCEWithLogitsLoss = nn.BCEWithLogitsLoss() + # CrossEntropyLoss = nn.CrossEntropyLoss() if requestPrecision: gx = self.grid_x[:, :, :nG, :nG] @@ -157,33 +156,36 @@ class YOLOLayer(nn.Module): if x.is_cuda: tx, ty, tw, th, mask, tcls = tx.cuda(), ty.cuda(), tw.cuda(), th.cuda(), mask.cuda(), tcls.cuda() - # Mask outputs to ignore non-existing objects (but keep confidence predictions) - nT = sum([len(x) for x in targets]) # number of targets - nM = mask.sum().float() # number of anchors (assigned to targets) - nB = len(targets) # batch size - if nM > 0: - lx = (5 / nB) * MSELoss(x[mask], tx[mask]) - ly = (5 / nB) * MSELoss(y[mask], ty[mask]) - lw = (5 / nB) * MSELoss(w[mask], tw[mask]) - lh = (5 / nB) * MSELoss(h[mask], th[mask]) - lconf = (1 / nB) * BCEWithLogitsLoss1(pred_conf[mask], mask[mask].float()) + # Mask outputs to ignore non-existing objects (but keep confidence predictions) + nT = sum([len(x) for x in targets]) # number of targets + nM = mask.sum().float() # number of anchors (assigned to targets) + nB = len(targets) # batch size + k = nM / nB + if nM > 0: + lx = k * MSELoss(x[mask], tx[mask]) + ly = k * MSELoss(y[mask], ty[mask]) + lw = k * MSELoss(w[mask], tw[mask]) + lh = k * MSELoss(h[mask], th[mask]) + lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) - lcls = (1 * nM / nB) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) - # lcls = (1 * nM / nB) * BCEWithLogitsLoss2(pred_cls[mask], tcls.float()) - else: - lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) + # lcls = k * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + lcls = k * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) + else: + lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) - lconf += (0.5 * nM / nB) * BCEWithLogitsLoss2(pred_conf[~mask], mask[~mask].float()) + # Add confidence loss for background anchors (noobj) + lconf += k * BCEWithLogitsLoss(pred_conf[~mask], mask[~mask].float()) - loss = lx + ly + lw + lh + lconf + lcls + # Sum loss components + loss = lx + ly + lw + lh + lconf + lcls - # Sum False Positives from unnasigned anchors - i = torch.sigmoid(pred_conf[~mask]) > 0.99 - FPe = torch.zeros(self.nC) + # Sum False Positives from unassigned anchors + i = torch.sigmoid(pred_conf[~mask]) > 0.9 if i.sum() > 0: FP_classes = torch.argmax(pred_cls[~mask][i], 1) - for c in FP_classes: - FPe[c] += 1 + FPe = torch.bincount(FP_classes, minlength=self.nC).float().cpu() # extra FPs + else: + FPe = torch.zeros(self.nC) return loss, loss.item(), lx.item(), ly.item(), lw.item(), lh.item(), lconf.item(), lcls.item(), \ nT, TP, FP, FPe, FN, TC diff --git a/utils/gcp.sh b/utils/gcp.sh index 63bb2f55..a52aff2f 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -11,7 +11,7 @@ gsutil cp gs://ultralytics/fresh9_5_e201.pt yolov3/checkpoints python3 detect.py # Test -python3 test.py -img_size 416 -weights_path checkpoints/yolov3.weights +python3 test.py -img_size 416 -weights_path checkpoints/latest.pt -conf_thresh 0.5 # Download and Test diff --git a/utils/utils.py b/utils/utils.py index 61da640c..011cc17a 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -282,9 +282,9 @@ def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG pconf = torch.sigmoid(pred_conf[b, a, gj, gi]).cpu() iou_pred = bbox_iou(tb, pred_boxes[b, a, gj, gi].cpu()) - TP[b, i] = (pconf > 0.99) & (iou_pred > 0.5) & (pcls == tc) - FP[b, i] = (pconf > 0.99) & (TP[b, i] == 0) # coordinates or class are wrong - FN[b, i] = pconf <= 0.99 # confidence score is too low (set to zero) + TP[b, i] = (pconf > 0.9) & (iou_pred > 0.5) & (pcls == tc) + FP[b, i] = (pconf > 0.9) & (TP[b, i] == 0) # coordinates or class are wrong + FN[b, i] = pconf <= 0.9 # confidence score is too low (set to zero) return tx, ty, tw, th, tconf, tcls, TP, FP, FN, TC @@ -429,8 +429,8 @@ def plotResults(): import matplotlib.pyplot as plt plt.figure(figsize=(16, 8)) s = ['X', 'Y', 'Width', 'Height', 'Objectness', 'Classification', 'Total Loss', 'Precision', 'Recall'] - for f in ('/Users/glennjocher/Downloads/results_CE.txt', - '/Users/glennjocher/Downloads/results_BCE.txt'): + for f in ('results.txt', + ): results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 9, 10]).T for i in range(9): plt.subplot(2, 5, i + 1) From 5d402ad31a53a44fd7dda46c75bb1dc43df9923b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 23 Sep 2018 22:41:36 +0200 Subject: [PATCH 0108/2595] reapply yolo width and height --- models.py | 16 ++++++++-------- utils/utils.py | 12 ++++++------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/models.py b/models.py index 5cd0b865..8414d4e4 100755 --- a/models.py +++ b/models.py @@ -119,16 +119,16 @@ class YOLOLayer(nn.Module): y = torch.sigmoid(p[..., 1]) # Center y # Width and height (yolo method) - # w = p[..., 2] # Width - # h = p[..., 3] # Height - # width = torch.exp(w.data) * self.anchor_w - # height = torch.exp(h.data) * self.anchor_h + w = p[..., 2] # Width + h = p[..., 3] # Height + width = torch.exp(w.data) * self.anchor_w + height = torch.exp(h.data) * self.anchor_h # Width and height (power method) - w = torch.sigmoid(p[..., 2]) # Width - h = torch.sigmoid(p[..., 3]) # Height - width = ((w.data * 2) ** 2) * self.anchor_w - height = ((h.data * 2) ** 2) * self.anchor_h + # w = torch.sigmoid(p[..., 2]) # Width + # h = torch.sigmoid(p[..., 3]) # Height + # width = ((w.data * 2) ** 2) * self.anchor_w + # height = ((h.data * 2) ** 2) * self.anchor_h # Add offset and scale with anchors (in grid space, i.e. 0-13) pred_boxes = FT(bs, self.nA, nG, nG, 4) diff --git a/utils/utils.py b/utils/utils.py index 011cc17a..8eebdc33 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -263,13 +263,13 @@ def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG tx[b, a, gj, gi] = gx - gi.float() ty[b, a, gj, gi] = gy - gj.float() - # Width and height (power method) - tw[b, a, gj, gi] = torch.sqrt(gw / anchor_wh[a, 0]) / 2 - th[b, a, gj, gi] = torch.sqrt(gh / anchor_wh[a, 1]) / 2 + # Width and height (yolo method) + tw[b, a, gj, gi] = torch.log(gw / anchor_wh[a, 0] + 1e-16) + th[b, a, gj, gi] = torch.log(gh / anchor_wh[a, 1] + 1e-16) - # Width and height (yolov3 method) - # tw[b, a, gj, gi] = torch.log(gw / anchor_wh[a, 0] + 1e-16) - # th[b, a, gj, gi] = torch.log(gh / anchor_wh[a, 1] + 1e-16) + # Width and height (power method) + # tw[b, a, gj, gi] = torch.sqrt(gw / anchor_wh[a, 0]) / 2 + # th[b, a, gj, gi] = torch.sqrt(gh / anchor_wh[a, 1]) / 2 # One-hot encoding of label tcls[b, a, gj, gi, tc] = 1 From 313a3f6b0ca9821c23b99063da4c7d47b6414e2e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 24 Sep 2018 03:06:04 +0200 Subject: [PATCH 0109/2595] updates --- test.py | 3 +-- train.py | 12 +++++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/test.py b/test.py index 64415126..b88faf0a 100644 --- a/test.py +++ b/test.py @@ -14,11 +14,10 @@ parser.add_argument('-conf_thres', type=float, default=0.5, help='object confide parser.add_argument('-nms_thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') parser.add_argument('-n_cpu', type=int, default=0, help='number of cpu threads to use during batch generation') parser.add_argument('-img_size', type=int, default=416, help='size of each image dimension') -parser.add_argument('-use_cuda', type=bool, default=True, help='whether to use cuda if available') opt = parser.parse_args() print(opt) -cuda = torch.cuda.is_available() and opt.use_cuda +cuda = torch.cuda.is_available() device = torch.device('cuda:0' if cuda else 'cpu') # Configure run diff --git a/train.py b/train.py index 7ab90867..2d959f52 100644 --- a/train.py +++ b/train.py @@ -44,7 +44,7 @@ def main(opt): # Get dataloader dataloader = load_images_and_labels(train_path, batch_size=opt.batch_size, img_size=opt.img_size, augment=True) - # reload saved optimizer state + # Reload saved optimizer state start_epoch = 0 best_loss = float('inf') if opt.resume: @@ -66,11 +66,13 @@ def main(opt): # Set optimizer # optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, model.parameters())) - optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters())) - optimizer.load_state_dict(checkpoint['optimizer']) + optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-3, + momentum=.9, weight_decay=5e-4, nesterov=True) - start_epoch = checkpoint['epoch'] + 1 - best_loss = checkpoint['best_loss'] + if checkpoint['optimizer'] is not None: + optimizer.load_state_dict(checkpoint['optimizer']) + start_epoch = checkpoint['epoch'] + 1 + best_loss = checkpoint['best_loss'] del checkpoint # current, saved else: From 292af1f2f4eaa4158c612f6e09a0d9d49d04e8dc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 24 Sep 2018 03:10:42 +0200 Subject: [PATCH 0110/2595] align loss to darknet --- models.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/models.py b/models.py index 8414d4e4..59207bb4 100755 --- a/models.py +++ b/models.py @@ -137,8 +137,8 @@ class YOLOLayer(nn.Module): # Training if targets is not None: - MSELoss = nn.MSELoss() - BCEWithLogitsLoss = nn.BCEWithLogitsLoss() + MSELoss = nn.MSELoss(size_average=False) + BCEWithLogitsLoss = nn.BCEWithLogitsLoss(size_average=False) # CrossEntropyLoss = nn.CrossEntropyLoss() if requestPrecision: @@ -160,7 +160,7 @@ class YOLOLayer(nn.Module): nT = sum([len(x) for x in targets]) # number of targets nM = mask.sum().float() # number of anchors (assigned to targets) nB = len(targets) # batch size - k = nM / nB + k = 1 / nB if nM > 0: lx = k * MSELoss(x[mask], tx[mask]) ly = k * MSELoss(y[mask], ty[mask]) From 750f528bfe3c1f85f0c572c7aa452d5eb0505703 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 24 Sep 2018 03:34:12 +0200 Subject: [PATCH 0111/2595] align loss to darknet --- models.py | 4 ++-- train.py | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/models.py b/models.py index 59207bb4..9c026965 100755 --- a/models.py +++ b/models.py @@ -137,8 +137,8 @@ class YOLOLayer(nn.Module): # Training if targets is not None: - MSELoss = nn.MSELoss(size_average=False) - BCEWithLogitsLoss = nn.BCEWithLogitsLoss(size_average=False) + MSELoss = nn.MSELoss(size_average=True) + BCEWithLogitsLoss = nn.BCEWithLogitsLoss(size_average=True) # CrossEntropyLoss = nn.CrossEntropyLoss() if requestPrecision: diff --git a/train.py b/train.py index 2d959f52..f50dcb05 100644 --- a/train.py +++ b/train.py @@ -6,12 +6,12 @@ from utils.datasets import * from utils.utils import * parser = argparse.ArgumentParser() -parser.add_argument('-epochs', type=int, default=160, help='number of epochs') +parser.add_argument('-epochs', type=int, default=1, help='number of epochs') parser.add_argument('-batch_size', type=int, default=12, help='size of each image batch') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='data config file path') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each image dimension') -parser.add_argument('-resume', default=False, help='resume training flag') +parser.add_argument('-resume', default=True, help='resume training flag') opt = parser.parse_args() print(opt) @@ -48,7 +48,7 @@ def main(opt): start_epoch = 0 best_loss = float('inf') if opt.resume: - checkpoint = torch.load('checkpoints/latest.pt', map_location='cpu') + checkpoint = torch.load('checkpoints/yolov3.pt', map_location='cpu') model.load_state_dict(checkpoint['model']) if torch.cuda.device_count() > 1: @@ -115,12 +115,12 @@ def main(opt): continue # SGD burn-in - if (epoch == 0) & (i <= 1000): - power = 4 - lr = 1e-3 * (i / 1000) ** power - for g in optimizer.param_groups: - g['lr'] = lr - # print('SGD Burn-In LR = %9.5g' % lr, end='') + # if (epoch == 0) & (i <= 1000): + # power = 4 + # lr = 1e-3 * (i / 1000) ** power + # for g in optimizer.param_groups: + # g['lr'] = lr + # # print('SGD Burn-In LR = %9.5g' % lr, end='') # Compute loss, compute gradient, update parameters loss = model(imgs.to(device), targets, requestPrecision=True) From a75119b8f0f0f98d9bb0af7232f15d805638bdb8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 24 Sep 2018 20:32:05 +0200 Subject: [PATCH 0112/2595] align loss to darknet --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 9c026965..0d3d9461 100755 --- a/models.py +++ b/models.py @@ -159,8 +159,8 @@ class YOLOLayer(nn.Module): # Mask outputs to ignore non-existing objects (but keep confidence predictions) nT = sum([len(x) for x in targets]) # number of targets nM = mask.sum().float() # number of anchors (assigned to targets) - nB = len(targets) # batch size - k = 1 / nB + # nB = len(targets) # batch size + k = 1 if nM > 0: lx = k * MSELoss(x[mask], tx[mask]) ly = k * MSELoss(y[mask], ty[mask]) From 396a71001ec4196ab98303707c52ab54d24dd4aa Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 24 Sep 2018 21:25:17 +0200 Subject: [PATCH 0113/2595] align loss to darknet --- test.py | 2 +- train.py | 14 ++++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/test.py b/test.py index b88faf0a..5ab46bb8 100644 --- a/test.py +++ b/test.py @@ -7,7 +7,7 @@ parser = argparse.ArgumentParser() parser.add_argument('-batch_size', type=int, default=32, help='size of each image batch') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='path to model config file') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='path to data config file') -parser.add_argument('-weights_path', type=str, default='checkpoints/yolov3.pt', help='path to weights file') +parser.add_argument('-weights_path', type=str, default='checkpoints/latest.pt', help='path to weights file') parser.add_argument('-class_path', type=str, default='data/coco.names', help='path to class label file') parser.add_argument('-iou_thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('-conf_thres', type=float, default=0.5, help='object confidence threshold') diff --git a/train.py b/train.py index f50dcb05..a982b407 100644 --- a/train.py +++ b/train.py @@ -6,7 +6,7 @@ from utils.datasets import * from utils.utils import * parser = argparse.ArgumentParser() -parser.add_argument('-epochs', type=int, default=1, help='number of epochs') +parser.add_argument('-epochs', type=int, default=160, help='number of epochs') parser.add_argument('-batch_size', type=int, default=12, help='size of each image batch') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='data config file path') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') @@ -69,9 +69,9 @@ def main(opt): optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-3, momentum=.9, weight_decay=5e-4, nesterov=True) + start_epoch = checkpoint['epoch'] + 1 if checkpoint['optimizer'] is not None: optimizer.load_state_dict(checkpoint['optimizer']) - start_epoch = checkpoint['epoch'] + 1 best_loss = checkpoint['best_loss'] del checkpoint # current, saved @@ -115,12 +115,10 @@ def main(opt): continue # SGD burn-in - # if (epoch == 0) & (i <= 1000): - # power = 4 - # lr = 1e-3 * (i / 1000) ** power - # for g in optimizer.param_groups: - # g['lr'] = lr - # # print('SGD Burn-In LR = %9.5g' % lr, end='') + if (epoch == 0) & (i <= 1000): + lr = 1e-3 * (i / 1000) ** 4 + for g in optimizer.param_groups: + g['lr'] = lr # Compute loss, compute gradient, update parameters loss = model(imgs.to(device), targets, requestPrecision=True) From b542c2d899ef81bdcb8a0a882db3eb8d25a4b09e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 24 Sep 2018 21:25:43 +0200 Subject: [PATCH 0114/2595] align loss to darknet --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 5ab46bb8..b88faf0a 100644 --- a/test.py +++ b/test.py @@ -7,7 +7,7 @@ parser = argparse.ArgumentParser() parser.add_argument('-batch_size', type=int, default=32, help='size of each image batch') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='path to model config file') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='path to data config file') -parser.add_argument('-weights_path', type=str, default='checkpoints/latest.pt', help='path to weights file') +parser.add_argument('-weights_path', type=str, default='checkpoints/yolov3.pt', help='path to weights file') parser.add_argument('-class_path', type=str, default='data/coco.names', help='path to class label file') parser.add_argument('-iou_thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('-conf_thres', type=float, default=0.5, help='object confidence threshold') From 6528238953282470bf4abac870634d2d2874e6d9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 24 Sep 2018 21:26:12 +0200 Subject: [PATCH 0115/2595] align loss to darknet --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index a982b407..88ef61e8 100644 --- a/train.py +++ b/train.py @@ -11,7 +11,7 @@ parser.add_argument('-batch_size', type=int, default=12, help='size of each imag parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='data config file path') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each image dimension') -parser.add_argument('-resume', default=True, help='resume training flag') +parser.add_argument('-resume', default=False, help='resume training flag') opt = parser.parse_args() print(opt) From 208fd77fe40f3761e2a68033c9f7390e05f4d15e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 25 Sep 2018 01:29:35 +0200 Subject: [PATCH 0116/2595] create step lr schedule --- train.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index 88ef61e8..b11ac89f 100644 --- a/train.py +++ b/train.py @@ -6,7 +6,7 @@ from utils.datasets import * from utils.utils import * parser = argparse.ArgumentParser() -parser.add_argument('-epochs', type=int, default=160, help='number of epochs') +parser.add_argument('-epochs', type=int, default=68, help='number of epochs') parser.add_argument('-batch_size', type=int, default=12, help='size of each image batch') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='data config file path') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') @@ -86,7 +86,7 @@ def main(opt): optimizer = torch.optim.SGD(model.parameters(), lr=1e-3, momentum=.9, weight_decay=5e-4, nesterov=True) # Set scheduler - # scheduler = torch.optim.lr_scheduler.ExponentialLR(optimizer, gamma=0.99082, last_epoch=start_epoch - 1) + # scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[54, 61], gamma=0.1) modelinfo(model) t0, t1 = time.time(), time.time() @@ -104,8 +104,14 @@ def main(opt): # scheduler.step() # Update scheduler (manual) - # for g in optimizer.param_groups: - # g['lr'] = 1e-3 * (g ** epoch) # 1/10th every [30, 50, 100, 250] epochs using g = [.926, .955, .977, .992] + if epoch < 54: + lr = 1e-3 + elif epoch < 61: + lr = 1e-4 + else: + lr = 1e-5 + for g in optimizer.param_groups: + g['lr'] = lr ui = -1 rloss = defaultdict(float) # running loss From c09dc09dba5d5958c4c65bbfd838d4dda938f556 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 25 Sep 2018 01:30:51 +0200 Subject: [PATCH 0117/2595] align loss to darknet --- models.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/models.py b/models.py index 0d3d9461..256898eb 100755 --- a/models.py +++ b/models.py @@ -159,14 +159,16 @@ class YOLOLayer(nn.Module): # Mask outputs to ignore non-existing objects (but keep confidence predictions) nT = sum([len(x) for x in targets]) # number of targets nM = mask.sum().float() # number of anchors (assigned to targets) - # nB = len(targets) # batch size - k = 1 + nB = len(targets) # batch size + k = nM / nB if nM > 0: lx = k * MSELoss(x[mask], tx[mask]) ly = k * MSELoss(y[mask], ty[mask]) lw = k * MSELoss(w[mask], tw[mask]) lh = k * MSELoss(h[mask], th[mask]) - lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) + + # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) + lconf = k * BCEWithLogitsLoss(pred_conf, mask.float()) # lcls = k * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) lcls = k * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) @@ -174,7 +176,7 @@ class YOLOLayer(nn.Module): lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) # Add confidence loss for background anchors (noobj) - lconf += k * BCEWithLogitsLoss(pred_conf[~mask], mask[~mask].float()) + #lconf += k * BCEWithLogitsLoss(pred_conf[~mask], mask[~mask].float()) # Sum loss components loss = lx + ly + lw + lh + lconf + lcls From 7416c1842a4526e9bd00838b7b667968c856e79d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 25 Sep 2018 01:33:26 +0200 Subject: [PATCH 0118/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 1abfda65..b837be70 100755 --- a/detect.py +++ b/detect.py @@ -18,7 +18,7 @@ parser.add_argument('-txt_out', type=bool, default=False) parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('-class_path', type=str, default='data/coco.names', help='path to class label file') -parser.add_argument('-conf_thres', type=float, default=0.80, help='object confidence threshold') +parser.add_argument('-conf_thres', type=float, default=0.50, help='object confidence threshold') parser.add_argument('-nms_thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') parser.add_argument('-batch_size', type=int, default=1, help='size of the batches') parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each image dimension') From ff630b196052757b1ac57e7a3f4d7155a6e00c29 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 25 Sep 2018 03:45:52 +0200 Subject: [PATCH 0119/2595] align loss to darknet --- models.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/models.py b/models.py index 256898eb..25ac4dcf 100755 --- a/models.py +++ b/models.py @@ -139,7 +139,7 @@ class YOLOLayer(nn.Module): if targets is not None: MSELoss = nn.MSELoss(size_average=True) BCEWithLogitsLoss = nn.BCEWithLogitsLoss(size_average=True) - # CrossEntropyLoss = nn.CrossEntropyLoss() + CrossEntropyLoss = nn.CrossEntropyLoss() if requestPrecision: gx = self.grid_x[:, :, :nG, :nG] @@ -170,8 +170,8 @@ class YOLOLayer(nn.Module): # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) lconf = k * BCEWithLogitsLoss(pred_conf, mask.float()) - # lcls = k * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) - lcls = k * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) + lcls = k * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + # lcls = k * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) From 0058431e2e8b05b1bdad8ed8e9744c184b6fd4ea Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 28 Sep 2018 14:26:46 +0200 Subject: [PATCH 0120/2595] create step lr schedule --- train.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index b11ac89f..f0320401 100644 --- a/train.py +++ b/train.py @@ -48,7 +48,7 @@ def main(opt): start_epoch = 0 best_loss = float('inf') if opt.resume: - checkpoint = torch.load('checkpoints/yolov3.pt', map_location='cpu') + checkpoint = torch.load('checkpoints/latest.pt', map_location='cpu') model.load_state_dict(checkpoint['model']) if torch.cuda.device_count() > 1: @@ -56,11 +56,8 @@ def main(opt): model = nn.DataParallel(model) model.to(device).train() - # # Transfer learning + # # Transfer learning (train only YOLO layers) # for i, (name, p) in enumerate(model.named_parameters()): - # #name = name.replace('module_list.', '') - # #print('%4g %70s %9s %12g %20s %12g %12g' % ( - # # i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) # if p.shape[0] != 650: # not YOLO layer # p.requires_grad = False From bce94f6adec6988c07bf295ea50bf59299974886 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 3 Oct 2018 13:55:56 +0200 Subject: [PATCH 0121/2595] corrected numpy printoptions --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 8eebdc33..95abacce 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -7,7 +7,7 @@ import torch.nn.functional as F # Set printoptions torch.set_printoptions(linewidth=1320, precision=5, profile='long') -np.set_printoptions(linewidth=320, formatter={'float_kind': '{11.5g}'.format}) # format short g, %precision=5 +np.set_printoptions(linewidth=320, formatter={'float_kind': '{:11.5g}'.format}) # format short g, %precision=5 def load_classes(path): From 8a8752104456164224b7a47c7181b6067cfdccad Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 5 Oct 2018 16:01:27 +0200 Subject: [PATCH 0122/2595] P and R conf thresh to 0.5 --- models.py | 2 +- utils/utils.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/models.py b/models.py index 25ac4dcf..ca5f07d2 100755 --- a/models.py +++ b/models.py @@ -182,7 +182,7 @@ class YOLOLayer(nn.Module): loss = lx + ly + lw + lh + lconf + lcls # Sum False Positives from unassigned anchors - i = torch.sigmoid(pred_conf[~mask]) > 0.9 + i = torch.sigmoid(pred_conf[~mask]) > 0.5 if i.sum() > 0: FP_classes = torch.argmax(pred_cls[~mask][i], 1) FPe = torch.bincount(FP_classes, minlength=self.nC).float().cpu() # extra FPs diff --git a/utils/utils.py b/utils/utils.py index 95abacce..08692c5f 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -282,9 +282,9 @@ def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG pconf = torch.sigmoid(pred_conf[b, a, gj, gi]).cpu() iou_pred = bbox_iou(tb, pred_boxes[b, a, gj, gi].cpu()) - TP[b, i] = (pconf > 0.9) & (iou_pred > 0.5) & (pcls == tc) - FP[b, i] = (pconf > 0.9) & (TP[b, i] == 0) # coordinates or class are wrong - FN[b, i] = pconf <= 0.9 # confidence score is too low (set to zero) + TP[b, i] = (pconf > 0.5) & (iou_pred > 0.5) & (pcls == tc) + FP[b, i] = (pconf > 0.5) & (TP[b, i] == 0) # coordinates or class are wrong + FN[b, i] = pconf <= 0.5 # confidence score is too low (set to zero) return tx, ty, tw, th, tconf, tcls, TP, FP, FN, TC From c01b8e6b7cfd13cb73e8b4d60263a23f4f892e4e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 5 Oct 2018 16:38:59 +0200 Subject: [PATCH 0123/2595] updates --- train.py | 2 +- utils/gcp.sh | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index f0320401..82a5188e 100644 --- a/train.py +++ b/train.py @@ -179,7 +179,7 @@ def main(opt): if best_loss == loss_per_target: os.system('cp checkpoints/latest.pt checkpoints/best.pt') - # Save backup checkpoint + # Save backup checkpoints every 5 epochs if (epoch > 0) & (epoch % 5 == 0): os.system('cp checkpoints/latest.pt checkpoints/backup' + str(epoch) + '.pt') diff --git a/utils/gcp.sh b/utils/gcp.sh index a52aff2f..42d5ee7c 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -13,7 +13,6 @@ python3 detect.py # Test python3 test.py -img_size 416 -weights_path checkpoints/latest.pt -conf_thresh 0.5 - # Download and Test sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 cd yolov3 @@ -21,3 +20,12 @@ cd checkpoints wget https://pjreddie.com/media/files/yolov3.weights cd .. python3 test.py -img_size 416 -weights_path checkpoints/backup5.pt -nms_thres 0.45 + +# Download and Resume +sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 +cd yolov3 +cd checkpoints +wget https://storage.googleapis.com/ultralytics/yolov3.pt +cp yolov3.pt latest.pt +cd .. +python3 train.py -img_size 416 -epochs 1 -resume 1 From 07ac4fef8d5117508f29b6699997bf758e85f3a8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 5 Oct 2018 17:01:07 +0200 Subject: [PATCH 0124/2595] create step lr schedule --- models.py | 4 ++-- test.py | 2 +- utils/utils.py | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/models.py b/models.py index ca5f07d2..2bb8719b 100755 --- a/models.py +++ b/models.py @@ -170,8 +170,8 @@ class YOLOLayer(nn.Module): # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) lconf = k * BCEWithLogitsLoss(pred_conf, mask.float()) - lcls = k * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) - # lcls = k * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) + # lcls = k * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + lcls = k * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) diff --git a/test.py b/test.py index b88faf0a..5ab46bb8 100644 --- a/test.py +++ b/test.py @@ -7,7 +7,7 @@ parser = argparse.ArgumentParser() parser.add_argument('-batch_size', type=int, default=32, help='size of each image batch') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='path to model config file') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='path to data config file') -parser.add_argument('-weights_path', type=str, default='checkpoints/yolov3.pt', help='path to weights file') +parser.add_argument('-weights_path', type=str, default='checkpoints/latest.pt', help='path to weights file') parser.add_argument('-class_path', type=str, default='data/coco.names', help='path to class label file') parser.add_argument('-iou_thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('-conf_thres', type=float, default=0.5, help='object confidence threshold') diff --git a/utils/utils.py b/utils/utils.py index 08692c5f..4c677dfa 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -264,8 +264,8 @@ def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG ty[b, a, gj, gi] = gy - gj.float() # Width and height (yolo method) - tw[b, a, gj, gi] = torch.log(gw / anchor_wh[a, 0] + 1e-16) - th[b, a, gj, gi] = torch.log(gh / anchor_wh[a, 1] + 1e-16) + tw[b, a, gj, gi] = torch.log(gw / anchor_wh[a, 0]) + th[b, a, gj, gi] = torch.log(gh / anchor_wh[a, 1]) # Width and height (power method) # tw[b, a, gj, gi] = torch.sqrt(gw / anchor_wh[a, 0]) / 2 From b7d039737abdc4bbc1617504847ef1361e31e885 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 5 Oct 2018 17:01:43 +0200 Subject: [PATCH 0125/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 5ab46bb8..b88faf0a 100644 --- a/test.py +++ b/test.py @@ -7,7 +7,7 @@ parser = argparse.ArgumentParser() parser.add_argument('-batch_size', type=int, default=32, help='size of each image batch') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='path to model config file') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='path to data config file') -parser.add_argument('-weights_path', type=str, default='checkpoints/latest.pt', help='path to weights file') +parser.add_argument('-weights_path', type=str, default='checkpoints/yolov3.pt', help='path to weights file') parser.add_argument('-class_path', type=str, default='data/coco.names', help='path to class label file') parser.add_argument('-iou_thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('-conf_thres', type=float, default=0.5, help='object confidence threshold') From 0cc8f2be01456c1e91f160e7fd8f1d830e3332ae Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 9 Oct 2018 19:22:33 +0200 Subject: [PATCH 0126/2595] clean up train.py --- models.py | 9 ++++----- train.py | 26 ++++++++++++++------------ utils/gcp.sh | 13 +++++++------ 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/models.py b/models.py index 2bb8719b..562a5c6a 100755 --- a/models.py +++ b/models.py @@ -139,7 +139,7 @@ class YOLOLayer(nn.Module): if targets is not None: MSELoss = nn.MSELoss(size_average=True) BCEWithLogitsLoss = nn.BCEWithLogitsLoss(size_average=True) - CrossEntropyLoss = nn.CrossEntropyLoss() + # CrossEntropyLoss = nn.CrossEntropyLoss() if requestPrecision: gx = self.grid_x[:, :, :nG, :nG] @@ -176,7 +176,7 @@ class YOLOLayer(nn.Module): lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) # Add confidence loss for background anchors (noobj) - #lconf += k * BCEWithLogitsLoss(pred_conf[~mask], mask[~mask].float()) + # lconf += k * BCEWithLogitsLoss(pred_conf[~mask], mask[~mask].float()) # Sum loss components loss = lx + ly + lw + lh + lconf + lcls @@ -244,8 +244,8 @@ class Darknet(nn.Module): if is_training: self.losses['nT'] /= 3 - self.losses['TC'] /= 3 - metrics = torch.zeros(4, len(self.losses['FPe'])) # TP, FP, FN, target_count + self.losses['TC'] /= 3 # target category + metrics = torch.zeros(3, len(self.losses['FPe'])) # TP, FP, FN ui = np.unique(self.losses['TC'])[1:] for i in ui: @@ -253,7 +253,6 @@ class Darknet(nn.Module): metrics[0, i] = (self.losses['TP'][j] > 0).sum().float() # TP metrics[1, i] = (self.losses['FP'][j] > 0).sum().float() # FP metrics[2, i] = (self.losses['FN'][j] == 3).sum().float() # FN - metrics[3] = metrics.sum(0) metrics[1] += self.losses['FPe'] self.losses['TP'] = metrics[0].sum() diff --git a/train.py b/train.py index 82a5188e..a605e186 100644 --- a/train.py +++ b/train.py @@ -87,6 +87,7 @@ def main(opt): modelinfo(model) t0, t1 = time.time(), time.time() + mean_recall, mean_precision = 0, 0 print('%10s' * 16 % ( 'Epoch', 'Batch', 'x', 'y', 'w', 'h', 'conf', 'cls', 'total', 'P', 'R', 'nTargets', 'TP', 'FP', 'FN', 'time')) for epoch in range(opt.epochs): @@ -112,7 +113,8 @@ def main(opt): ui = -1 rloss = defaultdict(float) # running loss - metrics = torch.zeros(4, num_classes) + metrics = torch.zeros(3, num_classes) + optimizer.zero_grad() for i, (imgs, targets) in enumerate(dataloader): if sum([len(x) for x in targets]) < 1: # if no targets continue continue @@ -125,37 +127,37 @@ def main(opt): # Compute loss, compute gradient, update parameters loss = model(imgs.to(device), targets, requestPrecision=True) - optimizer.zero_grad() loss.backward() + + # accumulated_batches = 4 # accumulate gradient for 4 batches before stepping optimizer + # if ((i+1) % accumulated_batches == 0) or (i == len(dataloader) - 1): optimizer.step() + optimizer.zero_grad() # Compute running epoch-means of tracked metrics ui += 1 metrics += model.losses['metrics'] + TP, FP, FN = metrics for key, val in model.losses.items(): rloss[key] = (rloss[key] * ui + val) / (ui + 1) # Precision - precision = metrics[0] / (metrics[0] + metrics[1] + 1e-16) - k = (metrics[0] + metrics[1]) > 0 + precision = TP / (TP + FP) + k = (TP + FP) > 0 if k.sum() > 0: mean_precision = precision[k].mean() - else: - mean_precision = 0 # Recall - recall = metrics[0] / (metrics[0] + metrics[2] + 1e-16) - k = (metrics[0] + metrics[2]) > 0 + recall = TP / (TP + FN) + k = (TP + FN) > 0 if k.sum() > 0: mean_recall = recall[k].mean() - else: - mean_recall = 0 s = ('%10s%10s' + '%10.3g' * 14) % ( '%g/%g' % (epoch, opt.epochs - 1), '%g/%g' % (i, len(dataloader) - 1), rloss['x'], rloss['y'], rloss['w'], rloss['h'], rloss['conf'], rloss['cls'], - rloss['loss'], mean_precision, mean_recall, model.losses['nT'], model.losses['TP'], - model.losses['FP'], model.losses['FN'], time.time() - t1) + rloss['loss'], mean_precision, mean_recall, model.losses['nT'], TP.sum(), + FP.sum(), FN.sum(), time.time() - t1) t1 = time.time() print(s) diff --git a/utils/gcp.sh b/utils/gcp.sh index 42d5ee7c..e21e5155 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -11,21 +11,22 @@ gsutil cp gs://ultralytics/fresh9_5_e201.pt yolov3/checkpoints python3 detect.py # Test -python3 test.py -img_size 416 -weights_path checkpoints/latest.pt -conf_thresh 0.5 +python3 test.py -img_size 416 -weights_path checkpoints/latest.pt -conf_thres 0.5 # Download and Test sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 -cd yolov3 -cd checkpoints +cd yolov3/checkpoints wget https://pjreddie.com/media/files/yolov3.weights cd .. python3 test.py -img_size 416 -weights_path checkpoints/backup5.pt -nms_thres 0.45 # Download and Resume sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 -cd yolov3 -cd checkpoints +cd yolov3/checkpoints wget https://storage.googleapis.com/ultralytics/yolov3.pt cp yolov3.pt latest.pt cd .. -python3 train.py -img_size 416 -epochs 1 -resume 1 +python3 train.py -img_size 416 -batch_size 12 -epochs 1 -resume 1 +python3 test.py -img_size 416 -weights_path checkpoints/latest.pt -conf_thres 0.5 + + From e7cd5d01c409132d0e5ae1393ff1eca68ff244c9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 9 Oct 2018 19:28:27 +0200 Subject: [PATCH 0127/2595] cleanup train.py --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index a605e186..bc474f5b 100644 --- a/train.py +++ b/train.py @@ -156,8 +156,8 @@ def main(opt): s = ('%10s%10s' + '%10.3g' * 14) % ( '%g/%g' % (epoch, opt.epochs - 1), '%g/%g' % (i, len(dataloader) - 1), rloss['x'], rloss['y'], rloss['w'], rloss['h'], rloss['conf'], rloss['cls'], - rloss['loss'], mean_precision, mean_recall, model.losses['nT'], TP.sum(), - FP.sum(), FN.sum(), time.time() - t1) + rloss['loss'], mean_precision, mean_recall, model.losses['nT'], rloss['TP'], + rloss['FP'], rloss['FN'], time.time() - t1) t1 = time.time() print(s) From d748bedb1dbce278c14dbd3e968459bdc654ec19 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 9 Oct 2018 19:32:42 +0200 Subject: [PATCH 0128/2595] clean up train.py --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index bc474f5b..9e9d60df 100644 --- a/train.py +++ b/train.py @@ -156,8 +156,8 @@ def main(opt): s = ('%10s%10s' + '%10.3g' * 14) % ( '%g/%g' % (epoch, opt.epochs - 1), '%g/%g' % (i, len(dataloader) - 1), rloss['x'], rloss['y'], rloss['w'], rloss['h'], rloss['conf'], rloss['cls'], - rloss['loss'], mean_precision, mean_recall, model.losses['nT'], rloss['TP'], - rloss['FP'], rloss['FN'], time.time() - t1) + rloss['loss'], mean_precision, mean_recall, model.losses['nT'], model.losses['TP'], + model.losses['FP'], model.losses['FN'], time.time() - t1) t1 = time.time() print(s) From f79e7ffa761ecfa822cc894ca273029287f549bf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 10 Oct 2018 16:16:17 +0200 Subject: [PATCH 0129/2595] updates --- models.py | 6 +++--- train.py | 2 +- utils/utils.py | 45 ++++++++++++++++++++++++++------------------- 3 files changed, 30 insertions(+), 23 deletions(-) diff --git a/models.py b/models.py index 562a5c6a..512d89c0 100755 --- a/models.py +++ b/models.py @@ -93,7 +93,7 @@ class YOLOLayer(nn.Module): stride = 8 # Build anchor grids - nG = int(self.img_dim / stride) + nG = int(self.img_dim / stride) # number grid points self.grid_x = torch.arange(nG).repeat(nG, 1).view([1, 1, nG, nG]).float() self.grid_y = torch.arange(nG).repeat(nG, 1).t().view([1, 1, nG, nG]).float() self.scaled_anchors = torch.FloatTensor([(a_w / stride, a_h / stride) for a_w, a_h in anchors]) @@ -139,7 +139,7 @@ class YOLOLayer(nn.Module): if targets is not None: MSELoss = nn.MSELoss(size_average=True) BCEWithLogitsLoss = nn.BCEWithLogitsLoss(size_average=True) - # CrossEntropyLoss = nn.CrossEntropyLoss() + CrossEntropyLoss = nn.CrossEntropyLoss() if requestPrecision: gx = self.grid_x[:, :, :nG, :nG] @@ -156,7 +156,7 @@ class YOLOLayer(nn.Module): if x.is_cuda: tx, ty, tw, th, mask, tcls = tx.cuda(), ty.cuda(), tw.cuda(), th.cuda(), mask.cuda(), tcls.cuda() - # Mask outputs to ignore non-existing objects (but keep confidence predictions) + # Compute losses nT = sum([len(x) for x in targets]) # number of targets nM = mask.sum().float() # number of anchors (assigned to targets) nB = len(targets) # batch size diff --git a/train.py b/train.py index 9e9d60df..5ea4741d 100644 --- a/train.py +++ b/train.py @@ -85,7 +85,7 @@ def main(opt): # Set scheduler # scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[54, 61], gamma=0.1) - modelinfo(model) + model_info(model) t0, t1 = time.time(), time.time() mean_recall, mean_precision = 0, 0 print('%10s' * 16 % ( diff --git a/utils/utils.py b/utils/utils.py index 4c677dfa..1b1c67a1 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -19,24 +19,26 @@ def load_classes(path): return names -def modelinfo(model): # Plots a line-by-line description of a PyTorch model - nparams = sum(x.numel() for x in model.parameters()) - ngradients = sum(x.numel() for x in model.parameters() if x.requires_grad) +def model_info(model): # Plots a line-by-line description of a PyTorch model + nP = sum(x.numel() for x in model.parameters()) # number parameters + nG = sum(x.numel() for x in model.parameters() if x.requires_grad) # number gradients print('\n%4s %70s %9s %12s %20s %12s %12s' % ('', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) for i, (name, p) in enumerate(model.named_parameters()): name = name.replace('module_list.', '') print('%4g %70s %9s %12g %20s %12g %12g' % ( i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) - print('\n%g layers, %g parameters, %g gradients' % (i + 1, nparams, ngradients)) + print('\n%g layers, %g parameters, %g gradients' % (i + 1, nP, nG)) -def xview_class_weights(indices): # weights of each class in the training set, normalized to mu = 1 +def class_weights(): # frequency of each class in coco train2014 weights = 1 / torch.FloatTensor( - [74, 364, 713, 71, 2925, 209767, 6925, 1101, 3612, 12134, 5871, 3640, 860, 4062, 895, 149, 174, 17, 1624, 1846, - 125, 122, 124, 662, 1452, 697, 222, 190, 786, 200, 450, 295, 79, 205, 156, 181, 70, 64, 337, 1352, 336, 78, - 628, 841, 287, 83, 702, 1177, 313865, 195, 1081, 882, 1059, 4175, 123, 1700, 2317, 1579, 368, 85]) + [187437, 4955, 30920, 6033, 3838, 4332, 3160, 7051, 7677, 9167, 1316, 1372, 833, 6757, 7355, 3302, 3776, 4671, + 6769, 5706, 3908, 903, 3686, 3596, 6200, 7920, 8779, 4505, 4272, 1862, 4698, 1962, 4403, 6659, 2402, 2689, + 4012, 4175, 3411, 17048, 5637, 14553, 3923, 5539, 4289, 10084, 7018, 4314, 3099, 4638, 4939, 5543, 2038, 4004, + 5053, 4578, 27292, 4113, 5931, 2905, 11174, 2873, 4036, 3415, 1517, 4122, 1980, 4464, 1190, 2302, 156, 3933, + 1877, 17630, 4337, 4624, 1075, 3468, 135, 1380]) weights /= weights.sum() - return weights[indices] + return weights def plot_one_box(x, img, color=None, label=None, line_thickness=None): # Plots one bounding box on image img @@ -174,7 +176,7 @@ def bbox_iou(box1, box2, x1y1x2y2=True): b2_x1, b2_x2 = box2[:, 0] - box2[:, 2] / 2, box2[:, 0] + box2[:, 2] / 2 b2_y1, b2_y2 = box2[:, 1] - box2[:, 3] / 2, box2[:, 1] + box2[:, 3] / 2 - # get the corrdinates of the intersection rectangle + # get the coordinates of the intersection rectangle inter_rect_x1 = torch.max(b1_x1, b2_x1) inter_rect_y1 = torch.max(b1_y1, b2_y1) inter_rect_x2 = torch.min(b1_x2, b2_x2) @@ -192,7 +194,7 @@ def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG """ returns nT, nCorrect, tx, ty, tw, th, tconf, tcls """ - nB = len(target) # target.shape[0] + nB = len(target) # number of images in batch nT = [len(x) for x in target] # torch.argmin(target[:, :, 4], 1) # targets per image tx = torch.zeros(nB, nA, nG, nG) # batch size (4), number of anchors (3), number of grid points (13) ty = torch.zeros(nB, nA, nG, nG) @@ -236,13 +238,6 @@ def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG u = torch.cat((gi, gj, a), 0).view(3, -1).numpy() _, first_unique = np.unique(u[:, iou_order], axis=1, return_index=True) # first unique indices - # Unique anchor selection (faster but does not retain order) TODO: update to retain original order - # u = gi.float() * 0.4361538773074043 + gj.float() * 0.28012496588736746 + a.float() * 0.6627147212460307 - # _, first_unique_sorted = np.unique(u[iou_order], return_index=True) # first unique indices - - # Slow - fast difference comparison - # print(((first_unique - first_unique_sorted) ** 2).sum()) - i = iou_order[first_unique] # best anchor must share significant commonality (iou) with target i = i[iou_anch_best[i] > 0.10] @@ -423,7 +418,19 @@ def strip_optimizer_from_checkpoint(filename='checkpoints/best.pt'): torch.save(a, filename.replace('.pt', '_lite.pt')) -def plotResults(): +def coco_class_count(path='/Users/glennjocher/downloads/DATA/coco/labels/train2014/'): + import glob + + nC = 80 # number classes + x = np.zeros(nC, dtype='int32') + files = sorted(glob.glob('%s/*.*' % path)) + for i, file in enumerate(files): + labels = np.loadtxt(file, dtype=np.float32).reshape(-1, 5) + x += np.bincount(labels[:, 0].astype('int32'), minlength=nC) + print(i, len(files)) + + +def plot_results(): # Plot YOLO training results file "results.txt" import numpy as np import matplotlib.pyplot as plt From d336e0053df5c29341634394df0f97c02423cbd7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 10 Oct 2018 17:07:21 +0200 Subject: [PATCH 0130/2595] per-class mAP report --- models.py | 3 +++ test.py | 17 +++++++++++++++-- utils/utils.py | 2 +- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/models.py b/models.py index 512d89c0..db2395b2 100755 --- a/models.py +++ b/models.py @@ -99,6 +99,8 @@ class YOLOLayer(nn.Module): self.scaled_anchors = torch.FloatTensor([(a_w / stride, a_h / stride) for a_w, a_h in anchors]) self.anchor_w = self.scaled_anchors[:, 0:1].view((1, nA, 1, 1)) self.anchor_h = self.scaled_anchors[:, 1:2].view((1, nA, 1, 1)) + self.weights = class_weights() + def forward(self, p, targets=None, requestPrecision=False): FT = torch.cuda.FloatTensor if p.is_cuda else torch.FloatTensor @@ -110,6 +112,7 @@ class YOLOLayer(nn.Module): if p.is_cuda and not self.grid_x.is_cuda: self.grid_x, self.grid_y = self.grid_x.cuda(), self.grid_y.cuda() self.anchor_w, self.anchor_h = self.anchor_w.cuda(), self.anchor_h.cuda() + self.weights = self.weights.cuda() # p.view(12, 255, 13, 13) -- > (12, 3, 13, 13, 80) # (bs, anchors, grid, grid, classes + xywh) p = p.view(bs, self.nA, self.bbox_attrs, nG, nG).permute(0, 1, 3, 4, 2).contiguous() # prediction diff --git a/test.py b/test.py index b88faf0a..e8ca3163 100644 --- a/test.py +++ b/test.py @@ -1,4 +1,5 @@ import argparse + from models import * from utils.datasets import * from utils.utils import * @@ -48,9 +49,11 @@ dataloader = load_images_and_labels(test_path, batch_size=opt.batch_size, img_si print('Compute mAP...') +nC = 80 # number of classes correct = 0 targets = None outputs, mAPs, TP, confidence, pred_class, target_class = [], [], [], [], [], [] +AP_accum, AP_accum_count = np.zeros(nC), np.zeros(nC) for batch_i, (imgs, targets) in enumerate(dataloader): imgs = imgs.to(device) @@ -79,7 +82,7 @@ for batch_i, (imgs, targets) in enumerate(dataloader): # If no annotations add number of detections as incorrect if annotations.size(0) == 0: target_cls = [] - #correct.extend([0 for _ in range(len(detections))]) + # correct.extend([0 for _ in range(len(detections))]) mAPs.append(0) continue else: @@ -105,7 +108,11 @@ for batch_i, (imgs, targets) in enumerate(dataloader): correct.append(0) # Compute Average Precision (AP) per class - AP = ap_per_class(tp=correct, conf=detections[:, 4], pred_cls=detections[:, 6], target_cls=target_cls) + AP, AP_class = ap_per_class(tp=correct, conf=detections[:, 4], pred_cls=detections[:, 6], target_cls=target_cls) + + # Accumulate AP per class + AP_accum_count += np.bincount(AP_class, minlength=nC) + AP_accum += np.bincount(AP_class, minlength=nC, weights=AP) # Compute mean AP for this image mAP = AP.mean() @@ -116,4 +123,10 @@ for batch_i, (imgs, targets) in enumerate(dataloader): # Print image mAP and running mean mAP print('+ Sample [%d/%d] AP: %.4f (%.4f)' % (len(mAPs), len(dataloader) * opt.batch_size, mAP, np.mean(mAPs))) +# Print mAP per class +classes = load_classes(opt.class_path) # Extracts class labels from file +for i, c in enumerate(classes): + print('%15s: %-.4f' % (c, AP_accum[i] / AP_accum_count[i])) + +# Print mAP print('Mean Average Precision: %.4f' % np.mean(mAPs)) diff --git a/utils/utils.py b/utils/utils.py index 1b1c67a1..8b525437 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -130,7 +130,7 @@ def ap_per_class(tp, conf, pred_cls, target_cls): # AP from recall-precision curve ap.append(compute_ap(recall, precision)) - return np.array(ap) + return np.array(ap), unique_classes.astype('int32') def compute_ap(recall, precision): From 24a41972cb96358716c9898eede4545a6cba257d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 11 Oct 2018 17:43:34 +0200 Subject: [PATCH 0131/2595] BCE to CE lconf + batch size 16 --- models.py | 5 ++--- utils/gcp.sh | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/models.py b/models.py index db2395b2..44904203 100755 --- a/models.py +++ b/models.py @@ -101,7 +101,6 @@ class YOLOLayer(nn.Module): self.anchor_h = self.scaled_anchors[:, 1:2].view((1, nA, 1, 1)) self.weights = class_weights() - def forward(self, p, targets=None, requestPrecision=False): FT = torch.cuda.FloatTensor if p.is_cuda else torch.FloatTensor @@ -173,8 +172,8 @@ class YOLOLayer(nn.Module): # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) lconf = k * BCEWithLogitsLoss(pred_conf, mask.float()) - # lcls = k * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) - lcls = k * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) + lcls = k * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + # lcls = k * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) diff --git a/utils/gcp.sh b/utils/gcp.sh index e21e5155..559bcdb1 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -26,7 +26,6 @@ cd yolov3/checkpoints wget https://storage.googleapis.com/ultralytics/yolov3.pt cp yolov3.pt latest.pt cd .. -python3 train.py -img_size 416 -batch_size 12 -epochs 1 -resume 1 +python3 train.py -img_size 416 -batch_size 16 -epochs 1 -resume 1 python3 test.py -img_size 416 -weights_path checkpoints/latest.pt -conf_thres 0.5 - From 05f28ab02b591e5c95d1ddae42d6de74e302be3b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Oct 2018 21:05:24 +0200 Subject: [PATCH 0132/2595] -batch_size from 12 to 16 --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 5ea4741d..5a746407 100644 --- a/train.py +++ b/train.py @@ -7,7 +7,7 @@ from utils.utils import * parser = argparse.ArgumentParser() parser.add_argument('-epochs', type=int, default=68, help='number of epochs') -parser.add_argument('-batch_size', type=int, default=12, help='size of each image batch') +parser.add_argument('-batch_size', type=int, default=16, help='size of each image batch') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='data config file path') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each image dimension') From 10f44ce8304810df8238040ad6a644b596271953 Mon Sep 17 00:00:00 2001 From: glennjocher Date: Sun, 21 Oct 2018 16:08:31 +0200 Subject: [PATCH 0133/2595] updates --- checkpoints/download_yolov3_weights.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/checkpoints/download_yolov3_weights.sh b/checkpoints/download_yolov3_weights.sh index 38108e7a..c46580c5 100644 --- a/checkpoints/download_yolov3_weights.sh +++ b/checkpoints/download_yolov3_weights.sh @@ -1,3 +1,4 @@ #!/bin/bash wget https://pjreddie.com/media/files/yolov3.weights +wget https://storage.googleapis.com/ultralytics/yolov3.pt From c0ff46256fb9a7a07f21e452892dbe0476645f57 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 26 Oct 2018 01:03:46 +0200 Subject: [PATCH 0134/2595] updates --- .gitignore | 1 + data/samples/zidane.jpg | Bin 0 -> 168949 bytes 2 files changed, 1 insertion(+) create mode 100644 data/samples/zidane.jpg diff --git a/.gitignore b/.gitignore index d625e360..0d9adfc0 100755 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ !zidane_result.jpg !coco_training_loss.png !coco_augmentation_examples.jpg +!data/samples/zidane.jpg results.txt temp-plot.html diff --git a/data/samples/zidane.jpg b/data/samples/zidane.jpg new file mode 100644 index 0000000000000000000000000000000000000000..92d72ea124760ce5dbf9425e3aa8f371e7481328 GIT binary patch literal 168949 zcmbTcXH*ki_&pj35IRzVK>|{u2mz!BCNwEZlMV@8kt$Un(go=%hR_5NLj>uB-Vsp{ zN$4PiB26TL&{3)=`d)tj+t#|D?!C{P`7~$FI(z2Koc%m||2OmB65yP%zL7qFfdK$u zI6DCU%>ncPKt{&@X=lN7)|gqDnVFcF*+C!{R!(+KP7Zbs4lZuKb6niK+#DR|1kdsE z3xL63PM-4+K>-M#09fFE24Mi6-NVGp#>~tnz{SBO@c%jf>jLnyGLA6=fD94>Otun$H0k8Gt}WCgA_f`mA^K*>wODFEgLG zq7DncdOz9vTJZW8@u3nh|q;gm!+;q%Un}Yy^cVt>D|1g zZ(wL-Y;A)=+uGSXxVd|HdfoT-!8{BJ4GWKmOh`;he)9BLN@muJ?3|amukzj&6_=Ej zl~+_YG&VK2w6?Xs`_%KfmqhOC9~hsYOioSDe4YKiOr@=?(%05Ee(vob93CD2I{E!S zxERiG{-5!`1N(pA;yuH~$ixI>0{ssz2F9?n6UfWNEUw7Hr(+4a7sM~26vrx{n^9Qb z%_gaA^#kl0{DoZ*cJ2G6pZ^2xeo7qb5g*#C`d7QhK)ID2_OUce2&ufHzx z8zAKNG&q3O-qlkByS+Jl8{E+lu-6qZe@LvGD?F)>Z-Z!V_8W{{iZ*`6!3U`s<3?&w zh<TY=CY^h zYgye50f8>2szScn`j(oPMzYf|q3_fL{M{|1_`V?nbf`hJC~Nm-vG2C9Ll_-gCJ|uE zU?5qdKh`QI;V!S`A@bACtSX0&lJU+xKQ%8ng6SUi=q$QyG{V}Y)jV(feFUG^-CjwI~DQ~j?re?;GK zRFkkjq@T58temM{O6=le#H@`XF8svWEFd4K~M=t5-U#*Y3#lpcTA za70$lJCTf(4YRD%Vn%Q*D5diI>zCcYkJFuo?p8~U0D8fQ8Vdd5rC392xmNaYNa$O? zsh6&JNd*fIz6jv1HT3Sv}VD_T#{TI?k zUU+1XSm*ZAEUgkfxsyJaY2A%X4hj6a5_#IbZdui2GH^e5U?V|{VM3~)RHHOlh~^1T zawZp+Tp7NQEdIo*w7`?;+_QKdpX4l0-&>w~K}zzhNG6xxQ>fESMpjHbfIePhvPE;J zMMhp2?8v3zsTae5B_Y;mM~Inz^x&H}6@QiOTFpl=*ds6z^NMF^-tBUuC%lPJ{1bP$ zrlWp8V$%6bwuXW54@H#r)ys-$h1EvlvL6cAYg%Xs|Bk75%j5N=Ltzk893k=#x|v{m ziDy8cRUwwtLP6RO6pKlD(%Lq!C@9;fmV2$6_;Q815Fo)X~a4%?d00ADg zKaEpR-gE|M@kjwh6GTi^oysLO13-AVoj-$P$hElu!XjC*k9woG1Tx;7ty!-3)MtX z<(f}&iv`gBfvbm_4fL;4_9PKd;O1dz=j>ar8&OEfx+=w}L~2lf_v+isA2%Sb%D7H% zzbA#wN6V6+vX&^6`tv1$Oe3j6G85YAI6S)#p_f|8{g{)&zo5z{DQh69`NyW|RmpGg zp@Dty+%pkX!sN&hEg7_vkXC)S{hd;UaKG$4|5y|{dORZbNB9k;6nbWRm3)(@=D1|b z_u~%tA2O^|NhD-8d=#Wo>K~t#Zgk^Ql#SI~a(bpvTIiMx^r4zS_Mr?DH<=R^9l4tK zqk{!0*YPXb$BozXQ#k-g2-1#oc7$W`hnr60&*l0`2lNFLX6LEDt@Mk*>Q9COQJpeJ zpV4VP2Tn@_H42}SSIoCuXdqmO?95W)Z|^FhuWdSm?53*J`WdALr8A5~b9s=AMf&IFIw)e`S<;)ni~abR(^eXAF!$wvqry>>ei#~2l`V$ z^Qt(i(4yRyatTMMEZLOKr#bM?uHv(jC9kI21~Pe-Sm)80`Yx+@jDk|)Y9bIMBpJ$H zGwt~NJV4=&Do)v!Jv1_3V}Z@H&3W_N${}6FbUwALa8&H*)Z0DxTxC}d6ndb-#=f19 zTI|9w+sSS-{)JcC-p;61P%38YXRjVC!qa)FZFkJGx(WDe2CT^{!mI`l?%CO)-&daZwS{_7{NE+S>N|!qprDZXP@qy!p4~OK%Vy!Aouk^qGA{Y> zkjlGmjBsRVsrBjz3z7&l|6I`_-X%tjOY>P@8h>SPBQ1+0g{w$^d9D^99!iLDBKXW( zdCBDCwCz3eBV^3~?#W!;Dur!JJuqQ#?)q|6Ct|n(*pL>!b#m+{qhQF`zQVEQD>PTp zqnfuVCRuo~T5WMSy+hp{x0wA^_YtvV*bA#1MDD4C`>I^1iOBhEQ<^89+ma+7(%@l5$SeUzTd&0W6n^(PB?= z+gf3!KyZC562)ehF%8`(99ButhUTlP`sQn#2%3E1g2oJMIRa@v;?>(pUc&o@c=0(%^EM7tgR7@?_b>_5uT!DBr5>MlB@{76E3haAAIuA<)^OPY5H+2Jy?#wLkzpOoIv*~|Yp z(nQzKNd0O*X%5XqG98XqOEyY_7;-s7%8XMgjd%Jr(v0I~WD{MIcQmCdoVj{4&r1PX z#?;v}uY-U^VXGBQM1oq}sED-HchsIC2*E^XZkTimqfFjTPU?dxN{YTm_3dzv8Nm+0 zDVgajt?qP4MNV{ah1QZ+iSK!T6UQ(W2b$D^7+v|RYDE^X=I2=cd$ zc_7eT!EJrr)}uYK)S<17n;QYy@u_;5i{&nws??wcZvUe2E%4-eVKH$w*{w(~)Pa<5 zybY9(%Q}aaqnWIvJWnyb&isOk?sSUFd2*hnyGS9pSQx&=WNR)>rO1 zb%a6=$~k9fG1)I_aBV0`%ft&LAYFaTtDn=c+FCv=cs|m4O8f50w$p?`y>ZD_mR!^8 zHc-~|wO{y(ZX~d<@^z1*WCavx-7DN!ez5Dbhc+OZl{`1T9Y_wFZZ@q0FHynH2&Cxy z$s~ZZSf=>{<8Gp8v5ZrouwvZdXe37Yfzv;sQm}d;8M$r+Kxw;;?dJ^_Rhaq#GY2Ap zzb6Lsr*-;*nb+++ctZ@#bJ40JhAl zRXCnBe@Ix=Wq>7v4$4~vX`+9n6^!8IUzD3$esS>#jVXMKK7X~py>c5w95XYa=K|#u zo=~wHU{J^GNPh??hm2wzibvG4Gw$sOCp0les4%6qL0bhrQKg``Ne2852>>duUVgQL zB0e;OEf%}SMp?n#w_O=liSR8UCV!SDIaDNclW5N&*vBw+UFTYZuz#qRLuJU(!*1MX?j)=fpRA*Ha+UX zhZetIXeY0aKB?P%u4cBs!Znt&-@Vq^@RF6ayCG{XG-_g&6g)ewR<2&~!CkqY__2iBzH0vVbduu_uN>vvX7QXdwZ5J*HqV7u zR$RXZkZ|8f)7&cWt8&)I*mug(`vL^Ef2iRNG#%!S|4DY(4q@uk;2j-^hUb5H5?KfM z*{72D4byJ*p{!``t(a?1-~uIt<;?{l4lZIHpAC*xh25~=jcj~nWCrCwK+Sc_UBYHT_4cq4!K8?$s$!k{GpS&r=(W>Yh6Wr+GICeww_By zoqb(CvU)K0gA?|E#yi_UYk@+UscF`Cb&}sjz8Y9y|D6 zpSM!p=j7ImUf*Cm@nN~4oOfI>s#TR~^2oexKV!{s( z3w9arsqu&^iUc27sIP0z!E#9Q7J?lx7dITCa;bWx&7j?bEd<%`@==il`fi-*rq0$4 z>E1pp=Pc$bSm}^HC^ZTU?xk>M9EUT$uS_j!P;|b1@&0IE=+Z+iO00o6_kiPri&yAi zs2>pFX|TJ`oiLv0S_Q^5Y8>788#$u2&PQqFbVWJw@z<~Upk}+fNdm{Taea{RQTd-P z70v8;o-8RL7@kUav2s;{FOqY1fIV4|VTH>=uqRvtxt1mcxDAtAj{ke2*_RI*UkmJJdSU?+6gU7)P?J2(w zd8xp}gstCUs2a@uc}`!*b4M+2P5z$!`IYp{a7oeZmtlgWOKoBdZQO4=q!-Z-+~UK+ zkYC4Sw!5h~Q!7J3lOI4}+^*w!)*5FsmKgue%Er$%OY#E1zFHmC355HreA@Z+jO^{E zak5VoJwQp5csF3G&m`U(4Y1jE`7oqrLH7uVUon~=xouIA-hm4r6;MlzuI|4#sxg)H z+0G9`V4a&sc^A!`+@l2gWKH)i+;ogMA6&!o4=)I&ccHmi~gN|8_h{crm30VXsO&K=X z)3ym1Ab4RUXsW%0 z@5MlcB4^|wS+nvpWMMBIutll_d$_Vfe=w-P0=Jo5UTX4K-Z7JSiTP57p3O@i(Bq6X zM4rm%ze0ToxPAjTOPm!GV#>lHRf5D^=eb!}<)%Ia+eB}h-^q6*)^oaCmvTXpRro(( zUi6b#9={^KmG}>E^<~HXg;A67=c@S2lFUCx!Y}5VTxpi~46RtROnpQ~(Y&Th92}iQ z23VAkhs3EP;amcgUQb;|FW1?)e6Y8w#&yCci*DyHND@jsM1~HVA<^GdBh!pKSYE?Y zQogvC3X8=w6S;FZIOVkh$~t}K)_tCj=zy>n$2&I!wleFNr-{R%ZaQVVPT5Re?B-&q z@`F;1v{yPCo$!D~ii|$s%E^dIGrJ>Rxaea5h!&{tDj zT`{r}&6cCI^q3cjAThIk?UHnhO!54ZsdJ*quv%gi<3FQ;cfsV9REQ>iDTl4tU;_<) zM*ECw+nW#egp|KE;nSXthU>E)OC*q@L=R1yQcQPrxZagHDM)1#1Lv@D9ifjCA6ASr zxfIst?54Cn@T=45oIW}geN*!At_K^h$BEHD@zV{q0+JIx z5^HM{GPax*hEyj4Q%B>q|8(|xEO=9WsA7@S%N;^nQ@Yw9rXQ@U<>vQUmUYP501`aB z#1~(K_TqS4#+b<6c2EVebTTB{` zs~xdE!!5J&-ico0v-wpZIH+4wIz!*&sUg6N<^4&gS>J}KUoP;*6_MDp@^EH%*TP}x z+-H%5Uk&YQ}Nx(VG(wlG@QCy@*ABrn-ePWK?|2uThcgGRK^-prNfVmq+C^UV&o zuR%_NHGfZEE5)sKFZQx-w_usONXyEUiKGt}iq>SGDZ#{8?YT6EyY(l2PIy8a@J12_ zSv@i{G1hyZg-tAD+s5PB8+IcLt@Xp|lebFl+n;bn;5VA>s4EPd82oXeX_I4_Kh`%} zGNJqK@~A_Z0!JT2lU(iNd{cL+VACE`*nbjp=kxDr52PPvI5;~`51(~LtFtDg~;&XW33t&eYx>fBi8w5M$pMzShrC2cz*kvi^e85%J;8apAdPoXrw!4r+lD z3<{0?1-}?=bZD=mm(+D@lrZ_9h&`Ve`d6DIEEJ-SYeG8+lQJ*smBi+i~F7`*o3#Bx&PwCu9d z0({s4uK!7(Tu3&UjdT}1e3$&>HTvUCr~Tld8JoHfTag!y3u^lTgvbjWe%D3YG>Oh> zN+HOWYlYT$9P|CzLcS|fVksjnoI&gBj)Gq@2m88iqzdX^zb0p~4Q1*63)g3|PSYc6 zxDp+&=o&#loqi6V3m9$JEgRdj!q9Sdk8p)CXKd?R-AzgH>o<-YGfvQ^#o9(WKpbJR z)3w8~)KLfl_ViqQ^8l6@|CLz>0wKX&CxPb-nGFXqDg6zBENnsIlJ`d;l4Z@lT^q## zz%qykmr7~3FNnAH9!{4%-u;_6iKkG-qr|`PITsnpgbGP_*Kkia=QIF2C>6nZl~~VK zsMgQQJ@@>!fw=sIRP$9Y8b=yt#HZujh+bd<{$RE7!COr=u9lRnN7VaHt;dbyjR8eG zP0|3&82UvY7*#(Klu{IGuTOzOshzs3ju-XxuRG+Pzh{#JRoI@byUGHkdDWUtjxBt` z?4Q%r79k2-JO^x(#v@b`-(V&Z9VzRQZJckUSM+uBn!%)F7-JDGxqY&Y9k38LmQ74w zkZ=*CA~(m|!C&^Oi%JXzvIvR^W+@i!8*CbcnW~5HPmoki){P+R*CqGo9*h{SaRrUO zx}REfrPQb7le}?e%{(LMV!n#|eJVtZip`p8EXv)6$HiiX?Tl_qbFz%zxHH*fwShL- zEzA*g$HewpUi(__ z0tY<6BB-sleA^`N5;k?gToOtd{`2X4{0zxJ==ZpSX?q{wP%HbridzoJf8xUwtGwv#sdx+Jc@fjL~}VYaYd~=iHB|S!Orq z0dfgAR-x5A+Z^#U5k)jVtNt>o6Hx1^E{d{mZa;^8+QY|oaez4Q!qxk}%Rn1B?0m0D zesWeJV)Smcb-Q(2g(R?C{S}mOIUm1f} z$scTr#G>wZd8@gBuz?s{v%kd2tLLZh84Zl1@Y^aC!C#HA@;YPwq);i2?@=8EKbQc&J>}3u$*)6fJsySQ4G|RGF=UaPr>_PQ|LQ;Ho|gn2xp5^l&mTb&70c6qqk zn)oX5rJGS13h?AlPrAX4e9_2sgmuD*8KUafsxY7*zO6R|Zs69`sYyIUloiH!gK3s= z6ZQW>cCVl9t`Qj(cOAHMGwN4isK&dH#W}{3TE8{=gC)n05AREOF0$ zlnlAo1@Aws%4G zYG(J%Ik&j~E<6?4R9)?VPY?iu5WRwJmxICtleB^bYHmDfiS|`;*3uQR$zgK$?67Yd zRWz=1qOv)=JBl#9Lb@OuOaS(D>`)t7}K z*Q+&>-=s?&73)VM6xf1&d>oWZ!9p1i{5acWRH@8%A=S4go@%R}_k*UbTa&$47)4lO z)*-Yg%8yKFg&Cr1EousRH6B zLHp?ZD&v959-!Dil?}@>3YBPG7(7mf!R6U8rhBB$%kE)ZyypKFQ5oX-UT<~f#*I&eJ z@o>IyX8A=*x*Z(QnlbFMgYeZf|8;27vyYZ7TtN5lJt1pLYWJ zF&a~u(~PUOI#O10Be|uIWiM!V+`dAGEd7~`kO#Ife4@V5_Pr$T8^r*@ zcRpJIAXfqaORCBavm2||cXaE^J;dl>*>m`GV1N{`zLX~3&y+~S2eM$A_?rN1>-H8pq*ar0P37T-4v*Q3ISIKUw{C4!Js2Z!NL0ny zAw=}TSemN0QQGrB!A+c^wY_5@$ETMXf!qdD&2m)@`ufX76Ihf1+T+R*TrVJvm4kBH zb=C5))CiCi3$3RG;is0nFTRS6b5zf*HOpt#J@T;+ZM95~)=Yf>^27{#yK#qq8h}Xb z&)~GOnJKb;-_5>HheL#_k(R-OJ&H7DO+}j;i^oyw`r6$!ZH<{mkcnISw0eYP0`@|M zX1nQJ!(fLxX0~aC)$Y6#XJFJM+tbTBtB;CsYW&XZ&fK;lCQ*GOfq~^w+{yJ*eQL$ZZ zR;+(-+3?2dxW!FN*4MD9=Lba=8~7xCn8+;njc%^{lnl!O#on?^R*1~Be@ zjZewdX2YEK`(}yB!u6xDv8nG7h*2Fvv->^J0w{ICyI}zMs2Dh(NB8dEczF43(-l*} zRT%}q?u3f&vdW?%lj3gPRH(37DD7v0&8n511n|bpJD0o>Nb28h=HHZmKpSZ`|MnX zk#H~&A6z7~!M0lVN?R9n=M%B7s!s_?MjX~8;*92#4F&_1WG;h30g}L!spc>8DuNan zncNESvG?#F=Ra#nWVv4m`P{(!4rbTCZ_p|NH+V~-;oI-NqKyXhUFVAsTDN!|${uz` zgEQgVqlp*mws$JZ^%qt0=6VE!ajn`-2@^EvzmVBGFZ}YBE)gD(N|D$ZdXg!tQ#hc zkGIvz9>4#sZa3lD0z|caxxcK#g+s5@d)$!tO?XtOJS%=7kJSA8;+q(gr#1qTVR|^3 z``?i?QTTSJ+mY^%k){m25+Ah}chD%Vg|LTKA%6sqcu&544%g64W7ZIU5 z2u--U^ds4gWC_KXqbH+*5_o8^%&DY=aM7A`HA5t$c#BCTBAaEE0LMToG$BNUr0PpkrR zyY~UtHHCb~9Z%zKGXt&V3grq2oidd)rJFya@$jgMWTA{pC;)!}NAqZf`1R#Q_h8@D zIwZ}>8VzfCIJxujI8=?;L6_(yewp<{8!cQ{EOekY9?zkS0vv_LkJ z&jVM-de8AWUw@B&Ng=3f)3!}!r4hNd`W7QxTsN`y-c*x#TDu8%!q`M-zt5lZVgpQ0 z0V27_Diyv#P4`}FxC4}jJ@timYb@wu2OL{6TfD_V6&`zgL4E7HC_Z})T)}0)9i^_w z$*5<*04LrxX86FDEMdQN={{;o^|dPPKOJ!+S2|PldhY#Tm}gA3bCE=+4o8O36}zesh7d0>Z$5U7r3-Z)JWh*t_fto}36Ec8SyjZ{~g zbt#ZrG2H;16-GIf$ef~?iZN>gSC=S1&69B`dcLZ&p(75#{7x%z8l2G+i}kiz z(gSo;kMQD0!z6Q&-n%W?l1LbSe>fQZ@*X2LGjiXy_eAJ~q~?EEt5&PpnJTeORMSD^ zNEjhB$w7amV<@4uIVCSM4FgPFxC|4;pwxuCX0Fv0>5ltM(CL>~oEJn>rD94C&L=BX zV({Bg_oaO_=j#^-3)7l#QRGlbj34hbVKP7vkRHZ}biy@XTiS^XdMVR*Ele=fzxYF- zLiq2Ak_=nf5e713Jue<9sQs~vhxzznVG*~0S1Vd1CVSm7^;n{~LoxGS9f-51e7T|@ znkpp~w}%f(nP6Mxc^BN&@5+Cf=iW5Mw)s}@T9DaW2cgsl?K)7mOr!0a;mX%xIct&s z&ZHFPSaw}e zIq>N&y5r2bvdBJlS%R|AKs9J+IRiv2dIKK774)opMl2t$CuJJyn_*Atn4N;}o$WL(`64VThx{_GGY(dQDkm zO|{9%&(GR*3uo2cO59+xb#PT3VN6~s*R;6`RqM6#H)hvdYnpGxj-=>ccjsfHf*tIcUWZFg z{|Bf=!#tn906^1v)-AHqBf2+0wau=}xbpsLeO)E2q0k7!VX6M$g`K4k0Kb(iOtc_? z=5kQ({`7@p$go?42|jC#-pyu zCP%$Hskqa<@8U!aheE0?^hppvffu4nlEdv;hKToGeb78<0r9uvnXHi!|e+{ucfpfcLk}12(kqGh0it zTgsOxmmu-)jo9l#~kJtEBaX3Iv{SL_~& zzHO=cfx2L_BUP||P^)`|niZxh=O&D*n}L>-3|5>kRTpS;TpgzHtlK+0j0&2*rwOlU zh--lh42JZCFm_BdAYog_ax?a|Ic-kv?r)6enkO2b1|?|#Ex-1BP#AjRlV5N(a{A_X z1Kl#DdjY;PLfjYtiE|=QFX`21 z1?t*J((QV0d`k(-iDF$HAmp&d&EjeOda|nxJ-)O;6#p+&7k*B)P?dp=zyYC{oha@5i9Et29n+Z z0L$Og>Z!P=qwRyvfn~ZbZGDL{e%>)Jl$xIkw2vTdUu8t39iowGT!-j)>Qx;*YC2 zd^1@bIY!s*RoqIno;)ZWsw{5gd`L~$b_}&vcq#>;=7_*kCw98nG41Dfb~Jr`rcUcE zRBL#UyJi=dUX8;OXHk0R6nYILrwSu3hKu=&goACISWwK*f<{4czpS2PYs?IWfVR4n z)hv_hD;DHI0G6)F<+;#u`-)$h^M8UzUZMq$1kauN<8G>^X`!#vCuod#Q1 zq^3(OL+yp)EEtfIQ%zT6)9aw+LTJl3pBgV?1DGx^ejTlTc=^@H!F*w8Q3UdE*nQz* zCxK-#ch_N>^;{n!AaY9M`zv>i0I75t;j!|?Rp<J)YbnatR6mUJ8uLYm}&9wl^ey z08~zZEdXLys3OFi=!^+rr-yeX-G47dP0rA-e0aaVZNCyvDk~7_l-`t|LTdbBr@law zLy*Fu(=z&D(8vp&BA?#5wAkLba)+%7a{0`FWPP}a7H?bp^Lk~gnJnX5xMp2`bRGBz ztH&AFv{P`q39!UxFv9GqGWUoasyNYU3?&!{iI_W0$*Zbbchq0Y#9fzX2`Brwy~oa= zAOM`9(5ZCciRJsVJfAX*`%J?{03NESI_6bqW>~E&0nh13ZKnAQwY6GAAi(u7kH=|R z&H9Gj!5#X-*t|tGN$I(YG!15*5f(L+y#&{qc||ocn-#`qU{0#cy{`T^N`wslYPM?~ zUx@!9Jz|7duDs1l*94hNb@Vhx@*nKl%09XpMx578|FpdtJ$7DY@}lHO#araV`po6P z45FZ0tbk|d#M1e#*4jsRr>M=zmvLWNmFIK&XF6jn7dnYw{{wh_o7poL^l6bR?}gVt zCTJ#K)0vhfQzC8GuRhTd^9B@=#@fm^C$($zPinN{u(||w>wZLIfO+4q zKVAO;8p4uJMM7BH8VS1=1{};U>P{NkMQ+Rd_?Q|s@4!q?esIUSLg)L*_&f}aMz2jU z1I3sv3}Mqj%hhr*!uKolP@f~+l?VR=@N-3;92*no4G6a{>{I?0T+_T^GH4&(eMwx5dm5SGD1$aP%5f$M?qr8)yh&B*4WFiiK@Qd`sep*{f#-@Zm<7i$PAIB{zlv9P1B9!%kSe45B+(o zNN%QTQ7$EB;aB0@zPUfmal2Oux9TYe&pSBYtIgS^f6_RD+2;RBxFsq-;XtB(KTJ;J zP+GQs@Mz(~g4*O?_!6nUBs_F+WAdS${}SdMTvh$(sK0!&q&&~D(Y#0S&eg{Ee8!uwk#Y-4SP~cOTI+#0RHt++6F_{xw@P35ToFKqj%XqsFzHz(#Arby@d-bD?>9r zAQpa2_x`)_H~Tc|$EbZCDO#j?kdNF)k^7R;mq6sl!4EdkKd;A~>P5Dw{!YryDJ^@H z_;0KBUe20f&GViQkg03cTHbPxP~1e(c|B;C*7x;MNcAM@lDB$6BHeT?MsbtCqKY2W z@P=8#1#)Ixf$|^=wdHnHlFbi2+s%*U8wrchpR1`Fc^{IzOMONXFPFK1m9*EiH+=US zsTaHZ9`VMEuOB~;VC?NIlH`-#O_z~^G>11%_E6Vu|qU)e{8rf2P%ZS!3@>+23v74ZsiRb~z>&q&kud1#$_ z{S0NsWUfKo81E*U{bfe!9ZUBDfv2_8#XenI^!*!$g*vAzbKQO28k8Mj;T8a!Di)eC z-R##@w3EEl3PsDkk~f;?(S-ZV9mkei<9`rd)cPCUpK3|9lLp-|{>Z2pG$xaYGI(6= zHCr~M^w|xM`Xx+sZxw=KtfMkwddrvD!xU+R`Jd>UugxNVD6}mX;80>%{w?XDMN2V& zz@C{;0_FCzk5eoR!JP(sy{|=0FaHxmlue>Z^Xqg4HZn$RL;4$u2H$|HDA#aJpe#m z=hWvfrQoxnYh~nWL#-4%gA%5aXL2a^FLq^Tb@-U2*VjSnGL>#08! zshcTaqKq!%>9I;-eSNww$mrE z;gECYPOi!<4yhRe84s8b6I}Q``AAXjI5=DY8n>7IJI&a+FDM~l6TN-!GC+Q^du~pu zPzC%+Cc7Vyk(FTbsgbueGlJ<~v$B3BrpKSEmEEH`(r46M;cN&J`t4SNkbz%SH@f&R z? zb!KQXw0YWPLJYheiXgIfEhzx#uv%T2E4=x({~`{Bwyi5u+hGY4XToX#UHzTod4JMv zMX3Ni9+TgbzhGXj=EC74a4jVPQl-M;s|~mgY<{RHGZMNdt^Uo$0iFZyso87eAWyGb zHk_QxPN#(k>mv?`?2Pe1rSEaG3zcjvPDDY;+RG*CYo_hZAQypibK1gBck?P9ZuIJ= z5^=`d81sSrZEQ`TqJZArvs+o>~+`5C1x%BS3dIIK8NKSAjUi+ttr~Z@(hCr8D}^Wd<&M$PS+E)?>hD#J>;rS&Ic`YW<>0s{7C^ z{O6K1li?mA^}Uu($y1+upSai^LZ~cFvfF^iuO-9os9A4UlMGQO$>vg6bW)Rei-(aV zNeTIT+V7gi2{FLFDT#v!s3MZ0T;DlsDF_HGiH6g`Z~Pf+7$1E}f>Jep+v=2cy)J@x zNxq5Pa)esPcrHBk?+KK>9+bDXRfMuCH1vxOuZl)6->0;&X>fl$Gr&##eEMy-#W|>r z^Nh3lZ`mbJqC&4&{SpfJMa*5e&@yJWP$rpHJM|iBlrdeSgy6fhJDiRrk?|e6+GdCK$aI%j4h=m@5 zJspE!{RHjxxRj@5nSo*MKjYR9tBxGI7ED}a!GG6z& z1hPs2k?W@CW3w-DYpwmZy`}l=1ukV=yQcDXfLxboc84nw7N>opNUpE38n`8OwnN=% zCxgFu+g^Gyq@al9Ze9Sn2j8}Csdr8g{txg(2s~jAeX9%zR=OUlbx2-6&(;)RWwy{J zB~+6$vi9x)YzO8gndO|(h(?r#s`Ax8<9LK?cj@}+@YC4SioAMaBn!`p-&09CCsOhZ zIqE}c{(!=|VEw!LiROiUr>X9)S}p?yi`@sm(IKn-*SShM@S(#-M};dyNoI9JNlMgI z^iYqt#muO-jQ`A|DSgjkw8YFjOJo4O1oP5NV`XILNxB+(<$nXuKrp}AbGR zip9M=Hy|h+gWnzN86#*joWI6ND$2RQZs#@4UqTu;LUIpd>s>~qRnhQy3y{RuH+oh^ z-Ha2DyVAMZI@GLknu_g0q@CY*ZR85%wTM9{AP{&J*XmKr<`qyAExU0&vC_GnRT+?w zioE*wtR)_%(PtT`ZVneDw{R;C;IWXLZDZrEiCU~mUO1xnLmo~&fAxUNP)IM1ax z;aK2&yzU3n+L#kOkDKYLOj?~C_JOTjZk{*H0s-hv zVA8 zted%rX4r5s)OywH(5h6AloQl*SyQR<&ryTUJ5=)~3ME^KvM>S9eD$hs+qSP5&wpBc zrI_-2bCFcq<8KE5dit7%%@Jg>Y|q{&j2}@$zsZJRF^piLaGvF`3m)FUSBLye_sTlcHz0XRy@R#;=xVqEY z>s;|0+Pr`XZQ3C2NBhT)eXCdDFM_Nzy-q7lItPx{A?A6qIca2b*Bz_q%{M_?Yh&{H zPQyN9V3GOOkat=GcR4%l9^1iw7+pV3vQ{?e2)wwBc8+`3ka(u%{{UFqDyrYJ4B$(E zG3j2X<4H8TD``%ntG1~lxnHvxcCJ9+5IX%U=8uT_q;OAdaMzl2Z7JHZ!7kQO@6V+~ zrrRf$`EA+EJzOoidBj3D;|H2_g)%l zZFD_8(-JNOx{4W?;Bs?ZPMzWF-yU2|aVD$%oFtUU(XFtKGRLV6*AXC^*v4k!_2w5jSwC&(2Uc3L*S2wKO8kr?GFb_C62cj&vR*LE}Uah3ImeQ`}nI!ph>?_6oH+(MAd`D?>t?0K=-WXtU zi1=q1=-#~dtNN$I&kyML5?X7T-jAVbakkadh3B0zj@idU?M$-pz4n@t%x;?h08gGm z1gJ0o9R@y?DY$8SvRl8rm5+k2ZQd)FNteoCa8M7reJO@9!iUHmtL)zv{>ZWT&h7Ob zBK{a9oA1C*2t9L*dRNcC5Pk^iz5|j-&IMwz-k(QN_YZMV?~OkeTQ~ zHAZwKb;02J)|`E`85x!L=-0;j&1rt46|(NIkJq$Em++$2|xKjP^CRXu!r5&f(jfV!5kXys{4N z2*Dj|TGn9b3aBm*T1{!GEa>gz$m_HYm^GnqH(j7_>OBo}@Z1nVY%YJh(zGqES9k%( z)bt{eHZ4HC;SL5{nRIpYGU zn}N6m9Q7FKRVI`$IN*25{#8|^*nsai1Fu?7W3H3d=8?Dvcv3T*~$&x(16OM47X2eyBuJR%bnh=YP?{U85usp zuf#F9a>RO8O^ewwdtK+|18C0~6{7@xUm%_b89i#OF?^+t2qPa#yA*tnEN=jFxYm1< zWRCr2h`LDA zNmuVWp1=@!C)S?twie@%P6+g>5H{_^gS5Ba>Cd%2e%i>s4h@&!gKpMcndhgyHq+3-D+&lX3xIv8Rg~d+gV!DDL_{&lI3)3f z;<;wiI%87AZkYS0X~r^5NQg@1PS*Z@wDpA>7%b#;z~ZKgAfTuOu{?iOfW=f& zyEt5eGsqx{vuxzQQc!dR^HFr+LD=fHDq9$v71i%XdFH9SWLoA2;sQlbVc1 z0op<1H7XkDWd+Xr?t^9*6DrV#QX zQhf=siwZa1Dsz@Upr~2=;DvbWij4_7LlA*_FQKIK0l*B+lZ>#%cg1u$8s^lBe1OVO zWqanRNEaJ<40@WmaHDol7#YAdLgn`cBjo_#kZYkL97@j29Y@N3W6AH2N<${%4mN}O zQ)C0?Cm=I&8s_aUMxM6xVE3)z3Pmu5~t2h1v@TVo%Dw{>h33CnR)a+Ep~G1%NMY>}F$IaWJ}027MIxP&Tg+Kqve&m-yWSEZABH?cSdvt@M(K;=gO zXQgK;8>loRU@JGtoe~;2L!Mu7=G0)<@sc04anmySob=H#btI33CJCVbIIRhRJt&n zk+cFbqjpF5)_v{5N55+oKA5W4x}!%CDa&WE;;?lMV631iTmX2_Q(0f3(-!P$OQ;24 zTRTTjbL&+`pbKDSn4Sr)eqB*X+&)$u_2V@JdZRRh<{*z=_0vrmP2BISue_iR^&k!h zTI#fm#&rq^5_;E~={k=iYjd7>uER>W7y+LQMoILp$h+=yOUU$FE3{3Z?TnBJZne=^ zUlu6k$j8fodi&P}VL2}wBLk6-t#r0mA=f(KOq8xI7xg)LZ2UFvkRzKj)=yU1Yf= zV*@zvSQo0Qn8^#%cS0)}XlRaaQE?z*asg5T0K_QS8?+22sk;e zb5dkd6J}dE2e}@#gLY?PXFaOKl14&hlr95jlU&vOOk+lkv$G?f)zn=D4S)&*k%8ao zSXYq%nG961=tmf=S~ZEr>Jb@{fF#CFO4mPgX^q@%9WZOQx`9)6NXu{t?N~a6m@?tM zY;p?YZ3lZ4k3%CQFrl&~` z{{SowF_5(AqXBYG`0G1~>=OZ;{Ad2X$69XLo0EH?e1|*UR?mJQl z$Qv7idEJhlly9(_u_8#S+zvrF$?5M_Vci}_1bg~=)CNB-;|B}~9QvAkUpbR3!GR+u zj-9IcpF=ja)Y4m}G4ILT4o==qDmktJcMG|PKpXj*t(J`K`r`gJJpdhv z6>d?x7{hvTRc8l+$AQ|dK4M%-@-ZBO3j2zQt_Cxaoc>hVh{FNfoK;7Cq$wFaOhun!)v?IV1!1g%w^CaD1p@kE@>Kp2E350eE^1M^uF`IEkbSCdJDr z&u>#-dHf#m)E*1ebZB(jUAo=h?<0gLCf*WwEPE5z7113P+2mrT*Se2b_$%;jwBNH^ zYQU?+s@_x)?ZNMsHSc#mAGfrV&$YF*M;Kq;e4r?)Kcr5l8b3?7GsQ&$m%mna^?7SJoObHi1h7b+{-G(XR2Dp&&gPina6%V zO7VXZ{6fFIzPQq?Og6$dDLm2@cU8||GmO`r-haZ!vb|Mr54E&vqA_uEID|UqfE9VJ z_rjhQ9vZfP5qPz<{SMCDw8GsSAefHipPkKNCA*ReP-g;#1$bP z>5E)R>E*}Y@D)qNpBr_H%Q@21M}03&Sej3_>ocvpPCIN)xczI+b?=E#>Q8&(Z7WK% zBHVeg>bl8qEk{5j-TDO;JIii?Jg>KI)E$DtXmaZib0+ zp`If6uj2mzi8{@$k>R^_o*^Mu7Mb$n&sTXmpU$N52ZAiTHDNNx9j2kHMIQUx>6n<~ z80I*}d2IJJ?iN=*2=LaM2ZB5+d#6~$ZQA2i)LuZZ0uD}Fu*Q1V%D)#sX`c-0H=3S_ z;Egz4X%-C84OV5!+_~VDUagb-Myi~t$4Kf!jQ5dGPma%4yl1$(^KIY?BZ?9i&2~Fg z7rExWX2u^6*k4}hclzC)l^&S^ZBl5P%rJ4EDLWYm5W+b1+l;>nrVxFhJ>VFd+Z7{!v zbVbp8GYb_umFfn%x;g950Aiqv#~v!Scy%bXd+YcR{{Y9dY`bxe0a4Ib1E+jwwecLb z_V=v>Rw$T3Dt_#Lz-!d}F>QM#h`#W;=~rd2l3SvW-kfI`>(a7SVJCK9BiS9VfW9+b z>-Scc8up!N*79+(ctbN}A~yI@~)pq)DMUJO{`yNI?TGBld8L1G`B!* zJGz6Op4F7=I5v~}%T&3yM<4Oiz|!4WL91+qZ*=k&<6s-63_eyT6-&Y1AiA}+x3-y{ zNKeeDPYcI-($+4oC$PRtnTvV3U!AfFgTVYNjFwxgO+CXDLI>U+mCZa)Gg=)H!!;Lk z*}N&^sI9dXjpN$R`Q8`+7rs4z8ub4Fh~EUX&xk$+o>}yym4caKyNXOW$o8*`F173H z8`x!vRGF4AilunQa%<@CfnOYFghywpN>GkVkU{`^W74}JUy&(pjv3PLq4AH#?}1ld z1Zi$!o++6KRanUxAB}ia(~dw~Wd6SO`pNN|;bpJHn+Y!Le5;r*AS&w$Zt|FOzuLbl zJa3~-;m;K6dR&Uz?WQ2J zk(#kvp<*7H&URKf73Q zJ8)FsbjB-A-f<=|k;i(LR_67q5`dGytth7Qn}hYNI2hmna0g#{(1KEOqy`^amwkck zZraMAboofeb5{~$xNRGO90S_1QNCO$12twdAV4#N`igrIxw5ya6vkAyuQ(MG-71zl zP5|gR6+p?iZ&GoBDkJg|%2*IOdeD}GxoTPPfpR(yqcuk2VkBU!tCC0^sU?)R%yXWg z`qe2Jfn{O{$Lm5&XeM?F0el~BYPpnxSbW6hlXAOtH~^2vtCu(dTb}r&(X@MyXDT+6 z*V3BO0N?_8bDCt2y9BT;+t#Yi!T8QW^sJh(-%6#diKLLA!6AXQ)1_yw=cuYDr((m#4?)dCg5(Thu1LFi+t;wF?3i7^VTU6%&fbSy zDGUgE44*+#jm*7pM{!9Q1QJ^q^c5s)#~2_D*gRG(+hftEM(Cax%$x$to@)KOj1@Tm zow@X?(E=kGAaT%Dm{C~#VboU~)8*GcV{{ZU>oE04H2d!wMAOV75x*tl!K0aJ-+T9kPEZ7eq`El8KJk=-=;QYkn)4fj_CpZU#*EQP%G=57g+E^OBqM?j z+;9a-W5bu)SRQjp3}HS}aNR+nzUF(e?1e~HJ4pi=rx^B(k+VEuy=lTi`N%l^YR8rs zFU%z*Zoxf1waZd=HiEfXBIE=+J;1A0;Xo!+^An8w(6JLT?F63S9xCinFefd`ACzLe zdXjC}^=QV*0jDSs8TW#^S2E`{QJx|iAF;ZmCe5+EtD(uR{ zfSm~LDs@32Di>)4@&{k7S%xjl3Xl~>7%=42$s1(gsTlO+S7d3l>~T(_waQXP=@4%iN0*-1P!MgRPouFPUMSuaq~8DTe@A&e{0nhL~cujArv<3 zXMieIwv?~jB^2;|v6|G1$jcX&ykSN?ewBP_tsH6s;1Se}kz0Eux8O5E7lF>+wMuIM#fVS8KcR30!C)~Yso7PUt;cWy|=c<6m= zI$hB&RYwQr2D(eTCutXW#~iZutc#e?vnvdYj-!%l?Qq)mGA3oqH{HkZ^~G1h2PK>3 z?m_9rUcG=sq?Q9L2OUjjG>l0|#xuw`$j5qDxs;X5V+FtjfJO;Zz^NU~Q4ze3eq4;z z7$t4PkWP6XwO}y{PScWl=clz~*K-{bCuy(|hynT^fAFhO-ZBvwd^qjv_|{>$&eBFk zazGtDs$`i;k^$i39ffjAD*BeC)f#O!BL$o0W$V`zeWA9TfxG*l{{UK~W!f;KC;;ou z1p;PvBml*_p4Bl-mh4>fi!kZNa!2y3R_~M!TaR;DuuHfR!u~xCT(?mBI&Q(h_pZ2l zoKto*;si693hm<<`c<1%JIO1MK3;k+y=O-IR1MkBRqvl#(Tgsnix%V#1~XmM(dX1@ z?rmFOl^NvlGsSM%$RcG5-*|OAS3PNll~kXYaJlbSZRZ>Y3ykBQYqc#8I&G(OuCurz zFu>y+WcRLy!gf&4oGW9te+uHPZpW3Av;`m^U&^;Euayf7ump0#hP1IAZgpvTR#Y5d zbsyHQ3)KK%tcR}L^{!eCLODo{%MuioAaVHA@mzwdleCYOu~{i{CLB0mgC<9Ou@tudi2W zkAgaT@H*5tce$06uwMMvKYwx#;H<1c`Mz#zE@N&+O?#-QUAb)MC*HZuLsekJVMqH} z>+MUZTnlv^9OHmb8LoQv^CyfBIi}boCGN2Q05}AW!1p!JU+Sc>W`0MZ&M9>Zpt#6x z`8ndTX5_XyW1jh_ie{S=$*L&?DJLzToBCC&E2AW&ILThkSPjgfwuUHhGuT$GjBJ5M z0U6F%R>`7VZ>id8b26fpJoV{ahLv)|80C&K4RHEUV9|n3Ta$rZhMKP$mcSU`5`Ok; zq7O?P(p^sbPH=`IN`QC)SRcl>t!4|j5xWiC*C${QELcH|^c)=5N2d_s7=8ZYx|3%- zk0l4e9DbB^ijT`F9sER$zPZ7|w8 zMsa|Dy^64^7ly!gIo;fv&9u2#*J~ZXSLJQQjGT^ZWum${^&NQrTdwBX zLC$;o*EfB11dO|e!pD=zHKTiV$jQsEHO^k$Fk(z+0CgRWX7@B&85)er-zu)ntO0Cw ztQ)yJ=2zSZ#sM91S~rrJ+_Cvaagr+@=0+s&HZUh~JrAXG%FUfI>}OrhNx>{xKo}iA z3dX%%yQE;Hm-xEY%~hjn`u$<}e~sQ~~SM{VOK%2g<=q zIX#aCweAm^kGl#mIbUB)R(0phz>YhE&6Ga~SzLC3ynHp_}uEJiqG3Q6^= zEeSt3JPZOG2lS|I!Ei?7)SsAks|rNG5^&^p9cd`L=sV~kU9HNNUVZ7y5O!9|BGb{*e3F$bKUqNl-p5%XYjxWM{Ul0tmK zPT)KH3U5=CA(V_9pVq4VNs44MNJ14O<{be!AXN*KzB7}!9;eo{_HB0DqF%qo#eT7lX@28QqSV6;YZ*N}b)&n{slBqi!+6 z&sN$#C*d& zy=fwWhDLLYagO!1q*)m+5CzNj$86SIspxAY(z)!P1bicH4fxburOX2H_rIPvM zYwL(0AS)26qxk_`ZOy04pyLSNQ_p@Re$hJQHw|?6-efR27PfH=uqXJ5JlB)z{{R+l z^*Q0y{6QqM0NGe4kdWTkC#TY*@wMdt0NOWkSxALgY?4G=jQ0vnd1kX?Hmj*bW|5_a z6#*6dpQU4HuT#Dho6#PNfAM3)zZEr`Jt?J@-%5>qrHv46f-m+*Ku@Wz-^ZU8FFZ4$ zLE&!(+&z*7K`O?e%QKI>@=59KUR|NZFNgH>v9#K^mpN%B=v8|PCb1UK{hHr0Pb(Li zeB_g!05tU3KVLHamE~(0J|fgLuMla^qCjLzNo3!7BqaH_j(@&-l^ro%UxhperhGNi zbnR2cU^G)nzS~VwH%b?teHY%ktvgt;_-)|1btx@upuYipxvx2CAF{?f``6AsFY!LN zawOzKh z>7FtN-Z-xwxVxWIx$|`y)tGU(4itI;*jAmFhi5;#2oyIs#xYkQ@I>Zaq!#C(6gj5u z+0wADYYx$@T4NpuR+2vjp@OAfy{#{vq*>%^> zcHG3Cqv>BjcvHZU$EHS(I*u0{5IE`STmB#LjkcMnnIM5e9B>7CcAW$f`A{{w6kakH z2M6A{r6k?@9kIcvBgS=a0ZVrYjV-txz~l0+17Gl~X#|-ecLlbBsb648rQ6%a9dI%` zR~_RY0@`?r$)i;A$R&=`$^2_MB-njk>Dc&#UC?EQPcjrNnE>xR<2CGm0VB~bH8hU? z{M)nOd1ZHCR38w$4EijgRak+R;AB`T5hnwT zS3@FiIKavE^sM`vZMi#nJ%wo()fhPTIr-NI2hywgd$Y$LwXHRvW*;cxsz{h5e+_Dz zW-VBtxELMjRd$bY+*Hn;@q?bUo>q}yK8t}`P*c9MEf^hi{OmIXL8#R+myYD@>$+5de&F z+Nnwg*HQ~{!Okk|*eprTe~T4bROf+}_3u^C6SFhfhTBu=JJesQ`b&uY6oYz9tA2N}gd zCQ0BEk;V;q9LrqSm1D=?vQ9x0k7a(xmhow3}Nkx@u*o8|``R!lO3 z{CPRRtw>y=p<&SEX12NJSiF;NPzmRu3ToUzPBN!rjF3;|SmZw)F?qXDd z{5R#5A`pGoP2`J5MK?W6q=zv;uRJRo>-@+QbZTkMO9^CmX-uCbqc^Us6?K zqzqwk#WWBYXP(E>p$;D}gVU!@lnL+y07rZ`PH9S3B}T>A6(r=Hr1P}Y$~WhLFnP~< zq>`v*8@B*CIq%-B23J)i;IBUQ#ZpbQZwMrd(8A8^kCl1oJJtJm_Ku{5_3KpaZUM_P z7s=x%2c=m{mB;{r>N=75*9@=CW4bbmj*Pt;?K^{Hp1(H~*`3gBURNVM$)-g!oQx3e zq;NY@?kvlZwZOo0QyAJ>oAX7)k|rY#0_Qz@0au}j%H4Mod-fGt0p~J+3Ml7j<29`c zM#HDi#&(<DN5hq0OfikL64rcYm}!>lSS_N*2Zm$t#LE z5z`u%Ryd2>Wp=>mGm<+F)z0cR+ZdC`Jbf#?y3?cB#|A$@MROXhuu+0`>^NNa0;QyD z&T;p#fGXNt7vOFf9F^!Rn~LxN6dWf}pIWsI(Gn_?xm$uWirNsi z$1LZ4j;`A0fJr2eewD8U%H}?PQ`)&pIhSrpUBLCtUxM&&;f_xuHQyAHIHb;)UNWO( zh8V)*u5(t!+Qf~AS7FlwzH6CV{{SQ`Lp*bzTA6P)g#hFej!sT%V~wYKou$5@X2IMJ zI+MrgSK_}-q=vyKBpmQ-i?!5407iF?I&`fFFM}1&ET?xSrM{)W?9%y)WpXlcgU)!X zk!mZGmctxmXRp31k+i-!0a$>2PfD`)!5NM-g~m^M=9I0u+ZY`?>RX5bnF#y9o&l;d z>Ms)&Y_olM#bAv~Dxe0!{{SkEOSURT<=O^tPb60q=8@S7ZJQEmhZx}Q=sl}C<5kRV z0)fv2@@pbXwlU<8a7jG&^s3TNjzg6Ps+#6?F84asHl5LKYo?KRDZpcl_32qRcVal* ziXFWRFH`jPsLaf=5{-o!;d&a(zL}URu_`mh59v{U#;P4zTK@5mR^84sSXVb?mGB7t zb64)z$;cQ0)=c}O$t}A)l@+3Qc4l0b)T41HnxGO``c*Wxb}fPrzo)fblMdZ6j(YW{ zMHwlA2^s1KTCQs#QPiTAq_OPY)umx*#fasPN_j-QWOk&*IQv3jx1$Dry!{4Yn{_A!2=}jJzG8Nrm#S82i+WG9&=rAXB6XPbed>V zs=jC$`LacH7GuehFgg*~S36)g!!OD?We1#&--UI>yBxBK(ppY1plt;9 z?^_mkDpX*yp4{U#%358k#v30mJeB7)rE7K+Dkvv!LOTlSO6Mewx+#oDkB~nZ9gR5M z><;Sa8F=^Ru;aW87Y@fgiS(z7;k%a@Zg6X%Y;xOO3zu^P83!MSdcwSwV-Lt}-0iCp z&E^8k`2!@9c>e(PRxS0|ExQV%Z*h~FhFVOcaOF=p13W0tO3S%#UA&UaD%HgKV4;h1 z*F8S9pC-UE#H4`Za6N09US~pX+7vDrxeXyW3)N5EHIaF8thp?B8(ScbYW?ixX2Y;- zak);t~qO|){+wezE$P1RrxAO3Nm=W$;C|UrDWJkDxTbCqAIFS&O4KiwGr!cRj7-! zp~2jv)ODm-h+(-|K{?BIsjZ>}p5I!PKuI__4c9-!Yee1jG_}^Gkbsaj&{;vr%}EN3 z;GLk1jidCYM!8INBer;}3lfm3eozNE>qj+#MX_VrEzto4_1edrRIBq$sw2V1Hv`(6 z2uS&00UzESL8+G@N3dge8|qWu#apQpm0bPp-93#k#0s_)bNoFjc_Z9L+=lDH;QP~L zO{%A$9Ag>AXiUz{vL%aZtZaMt;}uTvFnI$%(yx=qZ6+NPgfDNURCt$h2&8AQ^{lzl)aX>(Ga4)c z3Je~(?^UJ9V5IFQpsg1u7<{|?5!`)iKIM^DDo7)d-l`7L*iIHj3y`c^<@tv^cC4F{ zLon<)#cEu?85qguBl^}&+?+RJM+Ee)>SrwCWlfUVBQ-)oMn*dKJ*wrvATtBF4%zQi zr6qD(xUSgiq36mvkq??d&N0W~SFIQ393D8uQ%%mxfC(LOTJ~{%P3>D-K!RvnL1!r6|_EFj6)SabaBRO)BX_nQs-XPZQ9Zmx&emeCmiSXq^!`Zq^Y)j>F|@n zkoafAI&!9GxVeNFgARc5a%%Rl$6eQzqCs(Grj4=37~*S#-MyB%-vId5_WuA0aIO3&k?uTE(Vmes`SDwE07T zI%N8q<32L@n#M0LXu3Yp#Hu?H?kcJ%b6c&NU{^q~2bw>~cMr-qJ`b0xjN zj%)Ls$e12d`+>kd)#dtsg{ND{i{>!T`@-CiJ*(AVzqq>&ZZNXU<(#m|Irpr|Q_h_& zkm60*b|a_KyjfLUkE^AGaD~~->N+{OyOwl~VvR6^)UG)-Np&c+%bm{zY_alVZZdJj zc9X1D8fK@tNtICGp6Ae4pIz8$8pWKKDFVdKKIv?lBQAYWlquNrj~VKE$Bni5bqm%E z6zqZ_#BiwWqqcjRqiLgFDMPaW9^;Db?0gfd%8b%RtFf?mH$z*Hd^*-lNbx`}Gn|Ou zILB(~oa~jEy(&&xvj;%XZZeY?npe*ONayQaHm3}Bku2ib<8U(B9X}eIP0}@c3$3qV zENY|f?a$?1CaryF+FmY!iLf_EAjUIZeMzgHq$#Ui8QvY&?V;MPLasr<{+0D7!mHt_ zLk+xSs;~gGm^^l`mnQJ-h3%v>+sFaVN0-q3E8hMKU$VfV8*?r`_`&*DHAb{(?53Me zEgwcTy^fU^pK$*GFyN3gx~I`K7(7F%n|M*mrUA&u(w6-FyG6Ho+Aoj-*f=E8csfgK zJwYx!_>%yzQr)YeN-NOhnrbbjsp)a}NZebiV*?xt$<}-^EsSXRARZ1Ysn9j}@6-V_ zWkJ9KuIoExh;%F7y%$c6N_^2iayYz2D%`R@bNH9x(|2I!XDFnG{{R~CuLAv>Pw{2B zxcLgpg>l&CzO2@CsI_hJNVvv&b+0edeh@(xv2w1mOAE=lB*r$J@GF9nN?IG^?I@`q zLb4(7&)Ke|5~Q%(xVyrGnznqH_6wSD=ctN43Dn@_*p zIw9K|4o2Kp$v?Iqg_>^!>sNLz%@W7v9j7hVo-5iD=J1Clhd5$p*F>_jD#ngj%&R&9U1CtBvO-WoMRtO)lOJIS0EC4j%!h( z8-_4F$fzZVWP(5k__0ki4mRA!c(;ZG40{@*acr^Yzdijcb?vqxTyjTHDwLMY6y-_h z6{KX|rV?EYNh4KacK7K}NUN4Otx0Y2a8FJ#ROCRU=O9+;+{VQ+yySH6QpdZfAbL>X zXCM-KVw)J}9V+(`I!H@($gL}BHth}3t1UWr1RA?;#EcSsg#$M1=|D#~}Uztl0RChD{cqx2-J+9TGN&?0X+fd+Oy@4aBlwqN>{n6b}3Bx z=Q%j463d=W8HcB(UAR!7?a0RmjAPofXBccL!S$)Kxux0NO&6Bg8Dt!0sk~vy#sKYF zQbqvX$s8^ZYJkM7y@q`SeEWS*)zZGj1%Q$moPpM)5e8yaNF$yqV+r1I&rWIE843-g zu_P1PvgWzEvP3|X3Jx%TT6}I*js^hr=MGd+fR^v?imIo}KQ}r3DoCd>9FxHQFG}fKSsyiswe>E<%7bVG_UTvc!DQrT z)0|d(PI3-M)K!S?8*^c>7+?@Mts2uq%6c#*6Dr#8WLjp2RGm~8I_VYGcdK{&wA8NJZ@d63u7uz7^^m@suYFGk3q@xtI7!ZcCc-~ zbc%KkYZ((+4>7Vf`tey;_WLFZ+;8U|wbV(Cps+01IrOYs=#dx<61dJ!N}i?O<^|Lt zGr91)cYFOS67f~!GHv-l`B?S*YoWP>hEO?;k1PdZY6?S~XDz`erxaQ4Zx?2BH|iZY zTmn1sn&UOKNR^os5xbmMZG2Kq#zJtU^U}CoV1D(1Am_J1Qte|{$((Mmt>y5_InNz& zT+RDuE4vB?eznnRvI#ff{JPGoOIeT;25Va|J0hW96fkLz6IcVuK|gWT1a?l&GA zZaLAc1WIV4f%4hZYt2C;?C(0_{*;W%dCpIQ>LA<4ZBsOG~KQ}d1vdsWEp za#hJ0AB|u`bft5j$KI^Na?C~!-($vWM71+Ii+j=vw^8Yeyl;1|cal1E#tn0DTpR$$ z<~-H7?%R=^FRgBjcRDEb68Of_K;)i+o;4AZkGwjMPkO>jhFmE87<8%Bjy5*a+$DdRuPt%HMe7PJxM?iTM zA`={goMWX+cF=K&W+1s82iC3I{H!z3RScG57X? zHh@7S9OQJZ+X;^HM=W{_aa`53fl7jK2R`+&1?H4 z$-qt63-4NX*DRzy?Zgg;y>m9VJCv~`FvrS9e+tpJmuMg`$3E5985~lDj)E(#(EZ|= zI3b6BYQGiKh@wc?vkn*)z!lCV)(|%YuLKjEeQ9C6V&w1VfJv^nzUL(4bF58GP@qyl zAf5+WMb!Mylo9hD-Nkb!QZW`(Ja;Gg3S(-@FgF!Z(-qRJ_Bk3!oh#odk9v{^BWJy3 z-d|w`cqIMcd8~KUF_Rx0;FfL$Qf*O6ICdUjI3uyClD2}?>S)V&8+J0lV?L+ev#&1< zdvZqq0OG;p6_+lmv6evU820a3bLveZlaKz8uYrVu{ z9GcC0oU)zS9)_WL31U>Q%zEazWVyFDOxuoL17s3?IH}^fE6#SFx%Cx=9m53!Zh7OH zk*=CNg4n>%J#$>nHd-A~lG5g*T?ba`NjN#L)4 z83O^isggZ_C?T*2BON}KLNm8&@J9!cnz~3u!3P7A&mPoEO@yO;#A{_6Uy;smO#~7M zBoetf1E{5U5|S4xpnTl)rzB!EZPFDaagX7sl8fefAkOns%G4EAnCvMfqQOF?vb;l{W9nhwtX3rU8^Dzp%U~^PuQnELFzjq(j zwVgsUN%w{^$9l`Ujf!O85=KYAYLz8>Hg-mx*2Yc5j9Bmx0zp32n=|ZS2^l^6R;|ou z4l(m*9QLf6r3bDT9B0J&#K5iahzzvl7`b zPTU@PR^5bT62TpNYdVG0OOA;~ZTc@cimZqhgdjf;=6VsaMEMpFY z;~44%W9jj>6pRda#dNkY6St;){{Wp#-j_S+K{EBNx@|$(mpCJlTUM5=gyaC_KpMXQ z9DVQURBV7UDxvv^!994byBJ+d1|^6i1bSC1yE`eERq$#0QMfHx;-mdy3_QgxbqHLFsg)ef;lzHTI+WfdMZPBv6*Hup*Z+u>g!TzUQ*MvyO{m%+}C;Io9Q8+QFg$N7{~*6-Z2f9dpom-Vh;Z1!6S!@Dl(w_z}0O&4bh@w<@Owk==41m zq`8eFj5-sOyRYG1M5;#GA6*!`YGvv(&vpz^K*lFIES#Fk9tqdAC>6}hr`u)YnhG*1oaQfnHt%WZ7{+{@I+dn(tTYaTJb@ny1K+`$f!;pp6~K4`?VFVeNc)QU|r zlC38lR)?Buz8HqZ76|-RB$Jf|fl>h^{{Sy~lSI*VOD9oft-$KXfh46#KSFAbyW$TI zq|z0E6a$7}=W`F~S##@}9n@?s_d_ENK5XKOoULeSNw~gddW<*v-kB=3<(Ziff?6(e zJDk?7-OZnfbcxu-46)=4O1O3W>(2Zo}0PP2{f*I}1xfSmO8sc!F4rOMA+(sdhKtvOO>mE}MJ zhHvLx7l*8b_Xxwv3g;t{kUi_md^uwU+(K5BR>CzO9S~X?hg?eVA=RpJgmVM-8 zg^=VQYV@4B6_1>i6;h`&{7EftyxXS=ax;TnFNR=Ci>ZU6vVp({y>K>{E*P|ovB)`L zU6+J4A|?ZZ9P&kTQL3Xf-q#*sLHj3TOIooJTFQf+xyE~n`0w_h@f=B7qLOL*VRjZOru)rC`ga&V;l)ww;EB_O`-y!w&tPzzNE4mccS4%NRs zv^~f{Bw{>Uen6)tt2Lm(908sMZ?&En?gXjhIO$M5rsgAP3cLyww6Y&1%n1>biP1?_DM2 z2nG%}5OOOP;w1%#AP)Yu(H3(_E~Z@lFhB>f6$e5yoOY{nu10ax<2~xDC{_c|*2$S{ z>^)x}De2ayjDX9}T7?H*hNOvrZ18<5(+e8b?URGpb@i+E?VNFu@6xdmx*pljUbUrc z`*!olIj5*t*^W+I<|=yC=p`g>1Oj^>TEs~REtA)!Xxqp^9Wl@hRJ}-O+D6_3W3~<{ z{4#Je`1Gm~%m^otqp7PZ;EXBTk(|{feT5wIxESFU-@K^r#ApP9O3 zb52GikDH8R>+e-#KOxT^6@Fka4l~o~RAp1Q9AmF1ty`LA2k#6Hpw&6XUpYDb0H#q= zQW$^-$_M9FB~Y)m2Vc^!TsO_h5G91Wqps_bgO{NYdPaY;NITOn`&$n8^fjX8|t7|SWj=k=(W z4gmfTa5<}!LzCa|s0hbZAoVq^%qvM)fuzPkI3(cEA8FgOBOOWNqm(KfhRCRt;h2IL zb2Jhfu@4Rw{>cpO|Nkb5l-8 zV8yp*xTwT@6SM+*9w{cneTY_k0;B*z&myhEI3SXscHBGE3m)<^Gm+ChDn`lx0pqR( z4JV-0&3kDJ50q~tdg88$Jg|0Mm$*db(s{P%}216c(wzSssFw6=8*bcSn(uw5Mz0Rt^%!n{maB{$O zHMwCD9KK7T=NJGA=51U=5q5-9G6Cf0wQpI<#o~P6^&>q`(z@dwrz>Y)r>^~k9-{zy z*F$X*ov1!h!N47Bo73dl7nL|UAx{FjjXe2_^KC9b1g|82g<4iZ^fj#E*%s0PVoy$( zsoY~2Y>+#iY9x6gLC$@;jMUA73EQ;e<|K8gx?@PMa028KGI5M_HI1k!iE!kCTO*E! zweB#hxb8XSR~;)p=#@?eNnG>JD>m#}MjhZ1m-$3%o&g`{n&4`&P#GJpT?r*isvb;OSL3pjhM~{QCudvcPUf=D9KaYel^@`ueoxI zjE+F)Yl+q)Ra1l^`Q4MjslQffw#N;sjf}u&EHVZ<*B7cF2d)U@jC8KURQZ{J1QEf> zt~*d)^_z}yoDTG_*okU#+KZ5{jCJZO9pw4&dC2Cq^#H^8ai2=Un0aLLxxFhzW?TFFMsZ5&m&<|+W=81GimDVLI9a=9S;Q`TZh!RmUCN~)6j_o;K9 zgz<`xP`fTcE;jAwj1Wa#g@T1*103|M$mIZr$Qj^z)z}GMxa9CfG$xHpX*L2dI(Id4 z46^qbIT`I)_Tf%9ci@`83;B*WFl_PZ(vDzJF2>ur&Oq(!R$_~L?mPwVf2CH1c)-ev zxf<Y&vrEu{kUMLzrc9UdeXNnilZRo(Ek8B&xht-4npuit4ibzppI}xO>xS7 zPN-A4ryauyLu76o=QyeS&@;I2Zo|^Efg@`IJvijmoy_2s#{>XRaaUB}k@@q+g(XBQY)Q)|zh$s}}pAv4QDa^m>qX zTs8>KPB;|T)W9Dzag)Y+n(K==B@?8$ye_zoQMaxIQ+-4Cgpu;DGgyOBgt!MGPgc+L zsGCtLa4_Zac=YX>)k@nl7f$A++LG>*=FU&AK~(3|-N6O6_fwDOSu<)pkV2PVL)Nn{ zH6T7*u}?unrn(XA>}p)xz;&cv08X=Cf+Y zTx6M~mktW>3XXSwO22P(ag1Zps})B%86&9XtU*2r%N}|t?O3$VgwBc!gPexo4nQ@l zX5=7pdag2i*Ewf%k^wj%@y2Ub+UI^(U^qLEYR$H37~I#2U8})3Q^t8UZDu=%A1OHJ z`PO_g3Cw(|J8(z8)~zFMDx?F?KU&WAG)cY7TbnDKHr}VcX~Ef5n*n!@{i*}=6bFX- zaaI;FfI;AqipFob*$CZ|Our%_`>Y0iDyt(0akK?ff$566(3t_q;2ey9DvaZNd0qj- zWY;s5`ks_2c^UIYa#2pwM*cbxS=S5#u^1f*3VNE>o-#{dWkJFB6-Mv`!t5gefw!;H zi0F4lK1K!dyPm89o=;AHtz=!Dr(*)R?_0M}<+qcZ4WJQ_YZ~Wrl3N9RE20*N%?zprSkTsPCbq*sY#_{&y^K>v6k?MJPZNXJ?m!7F;S2do(UD50uTo$IrQSS z?H6dk8PC6J(MrZ{m5psVN6LpJcgK3^tfTWb5D8@fV2+;%f^T%(ccRvrwhgY^6caqDuaO?AQu38urL%SQ8ACsH_Yo_p|Y?`!f z5<1G*0|%+~u3ECSIY`wAqyPmK#(G2Ejb-Tsy0o(u6c z&x^I2=+Lv?$n7(%YmAb50bf7qpAvjcqIj=d5!}f35!^AEA0#h0#eEgJ1F zpKp<7P>B!9zh6rI9`Rz^>iQSB$3 zU0H=#D5V|Q<7G6bI*(0{F}4X9P#0sfV;JdOR+Xw)SRw-IC1d-rM^ztrkFc%-Rl1fZ zSkX_KIx)`!*0}E#_|j_|YujsACRx+$?I=8|cgNPeD5oc7x%L$rrmT+7$KMt#yici3 zb95PeIis(aZ)^_JbuNDS9+?&MPmlg9YMw3Bn`S6hoUvx$7T zv(Gss`kM2*n}Z|Ds5dhA^{-nEhe@>02Nzk%Su!jC02yCzD#Y#j=kca#-ZzpNa?Wyi zBQ>9KZ0a{inBC3^suNl(4dVd&SFajW`FUEg;JMUJ_dP#F@q1i2e>ZU*KtI;I9V^6* zJcWdfjE|Q!;1z@tWz`^Da zCRm_3OtFCI>QO zcYJph!R(fnJ%x*IFPQt=;a`lc?`_B0n+Uw0n~}$A^&boPhfcIVZk{xIagZ3k6dL^0 z(|$Hy=r(MY^APRSo^$I_#rs3}m_v1K1^j|JMpZ&*6`G@0XrQZ$rjOL^JL4CFW7L|? zNn?&?f8CbG6nnLHHl8BWH57R?>$qJ0@_uJIdd62j(m4e}i8W z^$!lD78-<8#)oJ=Y7kH3Sfg4J>>RbP~$IT_!Ia+fPTXv3K2&9ex;L=L^Zs;rjBZtQ&7`@Z$o z7y^^>jlGAZP`S5Q&Pf3EKT6NqU1~pMlR4XqRx6eSud4r^J_ZBN@d#kxI>6u#b)h&5reYDahaePpPc9obmw#dm6Hm?Z<4@14$bY z%y2japVF^e$W@7Mdk$+FIj{!P+dP`PZz&v>&`?#o@=nzQ3?TpgDV&aLWl~`wsHv z%gD&*-@PQ04(F+=jXvjMPI%^xcP(l%?p49dW%~X#l{*$1{nwM_VwEf`O&U%j3HS3wW9D9WKy67IRI1-ZW)LJp2D$5S3S07MDer8{eT~x zR+c8*0T{^72DK%HnT`{$ap_spC@s4j4h3{1b5xt$&zd5k@s36gMO0-Wim({18CPnY zuO5c0$r%lupf)=C3h#yNcsPl3F_z7OIXFJmp>7%Wj-IC#UKqf^Jb{DHYQGBLbvZri z+vPZxtVKfPY-6|_X09$%lB}n=Z|O}~_H+w?aqdlAw}Dg>oad5B=CX1rBtx@t2Wcmt zml&x8E(R17Uc6P9q9I5Hfgdm!&otP;79rIDln+GaR zJL8jA-X`St-PgTEDwaSUzG8W7^r`AnOsVCnfX9wA@ANdP127=2;lTh@(yrh#+-DgA zpm1RwI6dj5eMX5xkbYcaJo?qxix%Mj0KiWbK@=UFbJ+AXp=~DABpjdij&W9(V72!& z?S@nZ$ZYa4+O};;%7B?9l+F};m=fQ`2? z3cZ2v+O#cXXk4q0lW5M~$FQvHHjY_v*kAy{nzy({<%50haCrS|t_>Vj8okboPhic7 z816%~u06QLbQTho+M$pfckB39C1)c>;DhEyPe6Ot&Yw7CJxrO&&ls+iE{7zM+-b7! zY(8+uZ(c@gsIt2e6;u2p0~``Zt#CSR-U|)D9ycD9(^+5O;Hb#wCy;2lDmFViNeBzm z1Z0wO1zNVBF@^w>w=6TjIj(xz=@JpOlmX}uKZRVjx(aYM`-9fAax_T4F%5-Q$sC;X zn$Eb&q1l1YMX3$(F`(YtpLR$cFZuHqGkO45LQQI1!qK?i0V1WJ$S7Pc)n0ZKp%S|vXskEvoF98 zTo1;y?Sr!9U;;9Is->VfUUsQGan`Oxg@I9%yS-s5t7deta=ckYca8}lvilMCj)OaGP&E5R{-QNG%}Np z4({3S^rx&Oe54({$6Df)+>%FpA#H#Xk@YQ;ka64mDTyg=HjTZ?^r>Y+%0l3Ci~-1{ z5ClRIhUV$VTE(NOM#Tnj&9RecISY?kfXquTW#kizvexARCExwi+M;-5#?1BT*~V+9 zLl+x8H!FZcj2!WfKb<|4ToMQ&v)lElg}zwu7~|%}J{Suq2nfbAj!CUlZc9!(l-dQ$ zF4Cs}0tOG@YE-r=#~>avlh^523?IKc)P~2*zMhz=1+Zq$NY6u>*O0-bt1>2w5w>y( z8RM{~3sE7A{JW3gT2Ba)KrxIQWPe&oVaq88Xa|xy8qr3}Ln&Rdn%k9SRwq46D99ev zOKpReVpwnoV_E?+epblr!kcw!LwScBuLnPO@T{8Imle>@*ti9c&5Vpx#$ymxC#C_w z{#6|0f)rx_V3X42d1Y4;ndY@)AzT0*yTW|P5%HGF5gVnLtGF>)5$&RKeP}@CxOZ0 zx}xv7gQd->xVN7%Jn@Wzc%_>65%=WuQ;vVavDSA3A%M*iT(-;;&tfXMk~W4Nv{|^g z+_)LR?mcTh;^mP>I+KEPie#4sg7bq^q$RVvC+qy`Iqn};<<`SyxL`*(B=f~pdCQPM zC3*u^3i*wKMsZM>FoUldtfeyE8Si4hn8~}IPfU)K838%={u5G&ak!8PKBkz^6-PBHbV7BZ})@Cdl9L}Adq-qMW=)j(o zZaa>7rxe|fOmIao@)Q)>PkLM2&evna0J7?so4ow+O~2ZA%F~d z6|D?}4dVcG#&KNiEwuv%;PuUFLn%033aHOK=B4d(rYz`fW;@iL2V5;_L$o*pr(Q=& z!_#N=1&>YzZCj}-!S`+?V~(P^DmQbkl1&!8hC(tnhxwNWty>WZ8+OyP0D^lOiWu=A zW;q~Z2cW9~RmySqPSKOrux{^D(xn?{iGr%J0JaVR2fq|FOUYawoO{&E8n9jDs0WO5 z%`cVaE*KIyiFL&~cJiqWGe;}|`S zUxVg2Dh4}_m0gr8k{c(W^{2tZk~;d1wXZ|YlS^}RPsacp`IXEAsZdl4s&RaP-+ni>x=CRQUSy=3CCMwFz6-ur#*EQStF6kiD1kdvb<7OBh z++*In-pcDG9hfg-E3fd=ytfj>fH`F)O8qO&#P*YC)C(m zO|9w#8;gelwyEkpDo+5~X!<9`h_sy}Q%zFAN}R@Ws@dsYJ@Mzn2TjpDJ*8V*Y;?CW zuuP4+k39Ob0iv+rMv46yh* z)?%$3NfM}4{u7G%N5uNE)u)hpZtW86VdFa>mCDk_aAv&hP*I#k@It#ex9%GUBM%CWL4^2_qEKVJ3X9})aN z3{Xro_YZLL5Z+{1(3_8wdFt<6`!5crPJ$!h|^5&}cH&g#58 zlXj7&F#0Nq;^_7<)1zS?a{bi4A~Vd0yn73Cg0 z@O*aSQ*CM)Kf8{CzKai58#H{iYE>q$6TzapxVw{S`J3LfZ#1imNR{w9bgfgQTH0JJ zh_0lQ@|8SOHB0uIKPUl!xXvrKr0&#Wk2W->z9w@<>&zQ+0Uc`Ymdz}iM+c^Av>I`m zemMkZfnCRiJS8lyvJ^NyF;O=dqM)TI9Y@1&3O=)}!D?e*WII*ykUi_a_~Y;^RQPk@ z+kJla28&IV)-{?!K4v`t?_DRtJrL=7&8*W#xCC-|CccRMw)`1$@fY@L(66i)%%4fU zN#w(FS8mdA?O#7RIag77CVexbY%e<0{MNm`hTR782c~OJ!(JxQ?5-nwh?ZgxOyeWg zurPdHrt>g%J1*+GD{vTcH8j?g|U>NdGO7@-}pC#oh9vrL6GEOkL_CLWbQ^1}r zF`YKz3oS)XJej}+z3b`td^@J=npfEGE#sErB-*ls0E}0_{vG|E{6;PzyzuF0=0Y7n zJfHGw>wkq8o-($(w$nUEVD?uE05YlKLEo=>`P@}G!E-`aN6_KrPP}bWJhDA2!5V$m zjU2Z7*xT>GEP7X__&WVRwV}u?H{gsK%!@>gErh#BS0J2>l4|dQwYW5&6n~|lYe*61 zc_hHv6cd{96eBv3Pr5s1xp30-K0*Ds{x4hj@5fgD8`Cb@TWtZ^B`J`6=KJ4Va4Y9a zc-7_H7j`&ojPqOmGq@Vxj(kCSr0lrVCzTn8EUd(iew9``P(UQ$XOKJB=#heiR98dg z=u^CIFk6MdE4X7JLEsv+umO-aeF>?dhht-5Voge@OXOrJ>bU7yPhAg6FtX7Uq==Zo zDmLSu^+s!Kh7F8$1PmJ5bSl7S<>`aov##R~Ng#v$-1Ml2W<;TNrsq9z4hd|K-9=~W z3PX-gFfwslcQIhG9Wj!70a;gDyuwQs0AMaFqAOc7&yv$a0`4Vk_~4VCD-!w)l6#&x zuAbr^U!sc2xVGTuj>5X)tZ>df&Qk6KRmLkC`q(R$UzfH&!n(`bP7ene@7}R4ZApB7 zHPp2^UXJHAE>(ye{uLRQZyoCG>@1SxV{K7khRGQ@#TM=)(?gZ;`A{%>Vy8*E20UavaGqJR8#z!~@tvAmI$8Ip*rn6S(dj%j8Io(nMSdG}mdsMbG zwa~Qh^ENPf=M@nrXE+Vl*wT#jBLlW++Z%IXcXr7YJjJ9{aeD`UQWD*phH zv<~DRqrD-Apx_?-cC7h}O52{iup-Dy4cOz3^(2vQLA7y=<0Gw23aK0^J%@8v1Ykr0 zoOdAq0807UJ#{|DCV!R@RfbgOoEl?Bid&LbIm>kwc1StKNM13X^#rScppn$@d(<^^ zRZ_-Xzzkb-g?Yyuiq4$}@G0PTt(jp1Y1+Y$8OB9Ynj#&E8+q@|ZyijfE3HgfqHX63 zxZ|d37K!6vNEjV!N<{`nJp8TLaZ&jtw+xe>;=5rd%Vc?V756E_8S_3+AD*VPppExn zXC8o3+SvjbhSl}&T9$UBAm9LfDavLrhjIvD#6ij)PB3cB7Rtc=dY+YOVGIhcTrVJ= zm2L}087GCtKt1axE>vq6tCWfaDpYJeI^KOR@s3?ZOj{|A6je6%MMujcCBM|pq09mm3N#4+B3mDjZ7Td zh2&?U1Emg%xoi=+dBFWCyGGRryNdEN+P9C94?@CRg=O3b-Oejk(&PZS`Ac!lbLltD zoSny@J!#>mt*NglkK=}jEXKBrM_K7Lhjn@AvMlUiPJ&&v2-p-ppE_hb%)jA!39 zsc&$lfZy|x#zucy+6^rZd8EzDORz|0%C11l9Fbc#mv~*EHv@uCYUJ&%)d^ly9tZ=a zYFk~ZbS&U5G1UENy_v|<*z6(Hn3V;C5(3~J4R7iCi@Z#O=TpHWsINbc;EXWZ2>{_c zR>iKMVZ#!<@-x@zQ#shu5xMA*>Zlw2VP*hum2m2askvVgcV6|v+G-8*vk)+O_p6Jj z61jE&=K%MvXIG)rsdYzKbz_6Q_Xaos)MHQ|bhD@($9m?H{{ZG2akr@4dQ;n1BY(F! z>?;>lJ&uUbwye<9ulF-<8CK-(>T93W@77rg;}Nb7(0MeM8jzA)mH~G1$DEqQy}S$@ zkC(pT*06PLp|`OqY8On%Km|j8jdD8F?96gVAm`;ZuX%O1cFdOk@NO%aylv-m;m@h# z6e^mM>F8l{V56@zyP`H50M@6$EePIo-|k!a`TjDSxh zRZ|f`#{|}#(G|uA2CGQ{$RPKw)hisfxluE?o^U$iuEu!C3f)dXx#-ZNI>QrO$u z)}_AX#y2OoQMdz>o}(3|3}yIb`7_RHtP9_7UbsCgM$|R{UUB-?4ocb`5rQql8QNQE zVmZcZQU%_JTYjYQgd;1>k2>JO)C+50gCP<3;h{{VN|k?hZyS+GVnkF9mW zIs;1D7}45@+l-dv5PMY7TL7DazDGqJPrYfrn5qHJGuH<-EOv<)&gO0Ff=^oPj1{yw z-(wZ6j|0p&$5-UkK0z2_eq}iC*Veij?a;hsc{uE9yw<9#f)3z&n%kDgGmiH%Je4Xz z1a9Q8^{D)j3S~y+CkNWK8VL6StQa1dJu0k_5O{uZ&U;bI(8kTPJwR`|a=`QhwGyYw zdiCTJ$F*78v4AHXy{WRqBmk)Zp0y2Fn;7?TZ99nhk5FqaXFJFDK+ZANwl0yQ8Qe+E z10L0jbPi7A&Uy;w*xPhQ)3GIY1t;FA&u~E_KQFFo#>0RLVD_rBL&*$BUX`RCT zUS^t6NaSF9cdHS{yr{!x*k?6nJ7#dqbA=zBV(NL1 z>Xt@hSOyD|w4R63n)bm#!Q(uiTHl7)%0BKm2cBvPtiWKZpd90+VeM1VoVBpJXkope z1FjD4N3}%Ie9R9x;8x6#1blFKKS5Fbm}C-04;4|Ums7*7Nv2}S30=5eIvgAfQ+%Zg z1_}1fYBUNTrqPe$=~0_-ISfh9euA}g(DUU?%zJa5nFqFMf*i;&JNB&^pvxTaJ!&aX zfB?exrFWpcpK`jP>ZI{jRauyvg(TzK6&fe6I6ZS$BV01B0playp2)Z+iEY7BqaAvR z(zYZ5yLiaQxT+}@7+_$N*0inA?H?!^;2xEZ$5b@f*0cw^F|=iCHJ+fWi;Bjp{9PSHC2tIi202CQ4FqwR1HpvNMl zMBN^9oF1J&3Q>c(-3hesb1MLa3XLL@)EdjahkCIpzMFg3MR2FfWB?yvFy1mmSpxKF*2h8;z0%k#T&k8I|%ZURU0?I%2QT?#F96sHtr$THa( z4n_r4Dr4+elY{G5r;BL-4X4tokT6{Qq;&(mbwyb4aT3167twmMg&T?_CL99z5q_{i^Pe4cG+oPg>fuW4~}a7u7^=$aftwbmB$K4AlG^D{`_0&dzrad*abZww-tk&}O|~!u~w)UyUc!Kd`N( zeOls1FAQo%+#XANSIf_pLzV7&Ri!CZZOb z69dx~*=XKBiYT2WxOKGy7-sM7>0FnKJUMe@yN@$bi+oq=tTHPE} z>Bco3IsBRQSHiD{x|WeVQr@WYQAXW}0nd8&Jzmnnb84p9T3x{v*nGeqPc`HI3i!=- zG|0{Ektoa9;j7TRIjGI9TthK(pyaG=*9(5n#E%zg>#-s^rMyD!6cr?D}83_NM$SE0OVq@=e9h^GDdPev0cU8uyoy( z36G&aTF1N7cP`Eg4x}~!_O6Jek20)v(Bp0+VqCLyKXd`e`qowC860vm&$V?E*tAG- zj1l~KkMW0TZvlbkoV0^!sYHZ<#yxOzP{v5l)}9!t@>%7fV`2~n_@*c(_kED>r=%ET%LnD&vETq5!i#Y?8ztct1(#Z8R|*>D>mC^ zkzGniif~GvIK@jGZJxNu#xq(`*k!rOJu-xKcML$N*HrBN#XU4WQujlULr?_l$TfgOi@7 zm}A3W-~o<(Ysi#reH?Y%&XPA}RaOdm=dDzDlZ6U0asea0d)Bn}`{Ya@9YG}YH3ZQN zg}^-I0(q?UIvQ3orHO*$s*lvw8--FwCzGB#R;|+R&K!-Sx2;i?L%&YhBONPMqtxb= z?9rCVx_mLf9COm6XpAQWmL&A66EE)w+A*9FO&Id|{{UOtK9$ve%X5*dj<$_qi*oam zoB_>g+9ETn1!4ilI#n1$DH!HG+0T4dy`!qixCdw(y}ufl?&>J6XJX~8r3VVNz zUKZs}K3sGItuits17HUu<{dbzk*H9+Q~)qJ?eAQ!S4UckLq)J|cJtUCGf|sy96{HN zpI-H3$AxX@b_m7~YOiuKqJQ1Fi)dzhJX*&&)PdqYiIP5^hK`zm>5?>(l1~6%@D@eo)k7LC)O}oe4 zV~z+tD|Bb2uE~pUjAghTx_&iC`TY>`;PUFUL$gOWUb1btk=QKz8jbf!NgukYk?R>q^yComD&XK^tTMSp}1hM}KchmJU?;W4}!Hsc|)raZ)ccc6sBF1_fJ*6t5~nV++S3nQIELS0sk} zz#en>RrsT3P+1s%4oK_oU2sY47jJU9TkK^R1@q9Jl{|K&le_{zBxjnr6kC{J1}CTk z^{JwSIr9-pl6VAHZ8)c(-iWN0XjC$&Rz3QRQa!3C%GeSffDUVBI{`Eyc8#RUYc**NsecUSG422yAd)5B{1$-p&SH!(h zE&My7UFvL3!qFiL2<}+$1!VPC1yM!&%=4F0SObyB019!kVmB(}6V|@c@NfJRk6V&B zu6$wQD@_(Q$!j}d=gJ4va4XgH@7N#VC5j-ry4N)~AZ5(LF`r;NR}ArVX=y1M!OB}j zv-4(4Mv&owByva40s*tSmFygfDbLlRB%E3s_Yi{BP`yzHBypmQ_`nO6IVkL z*tA5PZqM+JhOQ;CRRxr&BO{8kw&@TU9JfqolUCzbP*s@Z_U($~l&)N;+eT-tsAm{o zsP(Akk1ox;fCoS`&uY;St2Ws%FnZ^jt2AJ62Os@@^!%tvb3)a6R&mZ7PTAjl7Zdt)7as;t(Wu~j(fir(@GQWbjShV-g4Tk-|~W7LYM zRJ+t2Bx0;%Yi9+!FR80A+qn!0QPU&6IiV2D2s=)C8h%s~z>?>jR??Q58OAE(qWk4Q zKF2kqV*wzjDoE~sol}4olXEFRc^p=~ji_{GU>gTM#*=o`yIk1Qtu`nG9Fd%g-Lkjb z6fqq4AI`JvVh#WpKPdy80BcgqbRd>bnQ%8_h83DgyQ01V{k&lYcZ`FA2+nHsF@kVI zV0Il1MFdQNTO;P_fmb#d_7XOdaB_J1(aQRpMx;v%YRteMK_C!MPs*%D4hohGs&F>0 zKRSpIGEg56~Mo-Rh*rs}Ynuden_3)3rh4uJ1~L*p?Ur zo=?)cqfHr9#Wb!}kQ^VIB%j8qPtmcH@9S44ak-C7_o{O-DYd@n&q~!o$nt996^in{ zR08*_rz@Ht*F$6!0vSshrMcIZ84JP|i$h z7oVkfUIf*l({=l4r8^*286nY!s$Q@*z(f2Ncs@_=qGPkf@J?-x`7`&yOhu-4{ zZ|7WwhpI#HXT(-M2C-Nt@dmKUbqT=B#Tn!-duP3R7m2y=@$yN4qqnVc+I@uAlCDN0UUB?}E2H>;%J-K}3G)kXVbJZ)Y99!pzY;Q` zP^+AE{Oie+(D$PrV_M5du!#-L>`^nkMOCEezTkS-i}>5Yu-$6He<9u{a;l+nK+hHI zx`w@DqFpRf0e09WfLw&Ga(!YO!2bZdMm)A#qF1Aae(tB4ijAdYc^%Kf>sxhqk|aT% zbM*DEE%9ZQu8_v1+*^wI)5Ln*v)q)Bk{FZ8$jy2R zQfouc<&8aL$gg#r%zU!Qfc8DBHeGR|I1ETU44TQhzua9&&%I&Id}MV19faWL`PR{g zwCHlqx{l2Dzl7ctzwvd`P8I&i4-Y3npG?=gXdVudEkY-Vouq}qU)H>H!v6rY6|cgd z2>Yo>M{R6}oItARq zDazqXw?UkAu2WOiVDTlR*vP_5V0dCVW7yZ0{?s?tSH2e>Hq+%;H4AB%%u)B94^S)5 zej9vFmr{};B+^SEATVRW`d2QkbH(V-S`^^brnNoCz@HCq#(lblBjM*<+lHxr|_r+*MzMUuV9tigrL8oRX*K&#A7L#-b2NSkDSa2a{Dalp9-| z6Kz#dJjYm_u4eu4FOKHC$Kzh1C7;8mMPDx7@^p;@E_X0Jv*}*5saqwjmzuzg^=^cF zSI=J^wTU$?Lrv11neDAm&H_GEGY&ZQrIu6nn55rAvDGAAjAa7Y~Dtt5Gr9z4R{y{qpUPebP^tu-WyH4(AK!a4c-)xjAU z2dNzGJXC23+DmO!Cxy*jf*kyyj&Le@7UyDi(4%u|r!3f0+@60Lp>b?T+!?ob9f$t_ zTDlLiorQTqI4XIl-o=bzytByeI5lyN-i9t+4n|ubQI6D*aNL}eS$FmxVK0!M-u~@& zQ`su=zc68d02PmMVYvtifH^y=;~u9SN$7BQ)(oVwJu-S%cYk75 z7k#({=NQ2s{c7i~tcoAFFiuL3O4>0@0Q^7$zu=TkM()>Y9;B%1PjgszcDo!8yTKX7 zc6WAT3<=$n!kWdrvo22nHts7$=5S3U&MxxY6+JoXFgbr+7q#n4UXImqL@;bPMus$2c{iZ2)1CGEXBNs@yg*ZouFkySe-;O4~~y0#oPiJ626IXp|$d zGBA)2ls9TwY|9q;aqZf=7&P;RY+xrQt$${r>%+Gok4nN`XG~q5hZQBFx5`rouQgSy zvc!@Ge(4>nues9l&Bj|DPfE?X)5Kv^F5{o2Lf=DV)6n#lMJx+rBckJv#-frl=Hn{J zMS}Q^WXZJeJxHu=uBP{9huSiP1R;Rw z>+e;jknPK5heEYZOO_-O!47a#pURoNfh^21$i{ja5@T|G2(Jn{H#lL)6^>*Cft|0O zok6Qta;`{kn4Yzlb1%z)M%-kNdg-TRjyjFDI^sY<-MFwljZ~iSV2Fqd>)x3q!hlEs zG3%3A(_M@M>(aYaE^|7L)-+?eGGLyg)1juxI_@95W<5ykwUU>GT#etmCj-)~OK`4$ zu0rFbZxv%FI~N{NB8=lW>JL*)Sy@2{cHrQH-l!$cByZwV>UvX!%W}EO`jJ}M*yfb( z?r8}DY;+y6YEe56lpUwmvKn(2`$x7#Iyv_S^(XPB-$6NP=4~y{BoZ4vYH03DmgH?t zfL1z5xZsjUcInMqhH}R_7$X@KjGHxG&Dbt-!w=MPjw({Vbg|trMfpHpxKo2y1@2?qWXU7~#Cumc4bsR6-GD#5YEyJd zsSHUx;dol}=dP!t30WNgy1-Wh=OFS;HLkfNzV4fVtdV|FAH9OZZ}~LwcFGU?Lv961 ziz-q^u#mG5NyGG@OB#We`GDjo&1XkBDgi7AIQPe`J~;%8dEcCZ_{Kn~IgoyqlI(_ISM}RdWx+yWl@R2Q;(H;)g^5K>SSEJrF^sVHhOzj zJ;Z#-8IA@B2fcI?p+mcCV2-}^m3?j*uvb3dR`8NqBL@rW%u9%hHWZfk?TXF0;FiZD zfN{lb-Nm;(Fgn&%+kh~71I|0v>Q`W?-B`q)Hpx8?U`158jFmX$vz}{Cal80UvhS ztU@Uh1D=GAl~URun|CP(8T!_}ss>(E9P}htEar`42Xghg0kn+gr?zWa6=f@u17oNa zp8!z1dFQ4(R)j0T1&eOyK9$DzyGK%1*uMxWyfT3;m ziMESI$)Vj4QUK05&ow+CxmH26zm3^*_q5+QF6t6SQHDI}b{<^=CrA zE`_UDisK5qdNJwwR-L`D1Lhq#;7X zIKcbdb60HbK3;mBgE+=2ac&m_A&BUxG7Vpb9k?tG?@V|8mC%}q+ij5jn{)#h3xkk* zQ{%MH%DCH%f$oZgz8UCx|5#=ziq9{$ytJ-*B% z5g5nI#den#8&%{Z+~9T3eAXVJV;eU;58cIMQcGizG}*~qTOG)%069E$&%H^fczWwr zy-QnUGRZO78b+myx26Sc*yuBBSCLvlZ6uS(L};KS&1&S z`4loMDBElZ=s()`u4MV7qKvE8jVQLyDgB@S0AR~`Y@pUWex-w|v|3^u61_(A+v#6d z#h_{44bs<5(X{)0Gf!2*!)X{nk8|F;VxS7-yk~y4a1zG@zrACauVqK`JbDwATFaQ@ zb({2yA#)}_yI4)ADI2)ZR&e)*i0Pt(zs&b}& zg@>aB9a-4TsV>2>@^SZlD7V$2WmI-3#F5WR;%+s+^k>@W#IVGG=U^RdVC^kNhD`FWX0y=;|F?jf^r6;A_s{*RHha?q;6j?NO^` zQZ>UM&rf>MkHqaVx!OQ0@-aPrl~I$io5QE0cPsec;D5uPhy_34An?_xx++jz*^eeb z52;?JzH{-%>>Y1sGf&{Z614G2|Ppa+G7X+wAu~a zncwT=xBkj&*`bT4U)_33vDXa3OWm%t?!Qyy*?vX?Y z1J{FAqFt&+Fh@h{QV7GoK{)pnN!hC(Jz6~1L|+G0_C~;!;(EJ2#>_cb;%Q>F8@j^w3(G_K^Ta zNl-W>)~%o{512=m4$vQvN3};|Zm;vR5u6>k>sr?E7GIbzm`@9i-qlFwl6#@i0;O}g zmjf(4eJb6mvxQa39Fv~h(p$mhuq>nyaDByFjTxV40EFd=oaEN(E$WQ<`B0%4N=|ux zrN5Ovh_DG#>W5w&O6qs2SUVZa=NGnCn3oh$EHnjTCAa^Wl1cqEOMBFf0knX)n%qi3G=5tQT}gSn_=mBTQ` zan#gJxP#6ITmxGz5zSW;+ZI_c#Db(}t!Lc6=G~GGJ$R{Skg&iwC!xhsoSp`A>yGtp z98;}*2t(~|a7TKU)_gfU{{V$ll!hQ=4`E9TgMplL)7GJ@oc`6{Lu%RZ!~#xx9@VRF zaur5-^{#p;Laq-^pGwoTljho5uxi&eg-+(}yo!yL{A)%j{Kwo_k~;ChtO#c1esDqK z+O*)gJC~4hE1FBG*9pCjhfkZ#UBrdwpzB(&-T7l(ABAc` zbO|8ie`asxQDke)bz|8+5o*6_@ePfw&EDu5;Z&eFPPO;n#vcz_UTHc-)yGzykP~UyU8fp zinuSl@1%SD70!5Th6*4)x@E-;A6SvD6P1O_=`ahzA6&O?$SRtRx7eOio82 z^vztc)Ggz@k91MUr;gQx2so#h!WKABP&pitm=v(#m^_ggl^LN53`g zfAG&g5xh4Aymr}gbH@_DznskX{k|7!r00RTkzSg+A)29*7 zaETyS`4n^m>s&Rl6r9?WO=$Z{ZAmlWuO9pw@m-g~=C_kjlJ%IZw>z>}sOX}+Q^8uS z+6JhRHt3{{z~r6>(!W%^e`#f^X#PdKD6vR4Fj1WPX1_SUX%7vr!|#Z&T*n!T+VPG+ zA1GiwYnzr1Jdr(!;^w5L-;wr5?Ee7cBXes4Z`&q5@o&9~_N`Y?k5c{XfUHhK9)i9i z{hs_{w{03_Re{Z0NC^yuc)#-=t)~vT7uur!vaPKJvcROEyEUIz~?7DKPqj!MT2~~JP@Su^sNY?U`_|$ z`EUnMrB$>o&ibx|P}-iag;T&EPW3ZepL2nX59wCzpc3JqiBEEKfmUOTv}K6M?UB~B zidz};X?Anh8hWuINJ4S9BcG*Y-096Ak#=Vu_14R5WNs5Edgq)9u5{K{8$gT>Mk3_V2Jd58G&_`Stk{A$=e=!O*a3n-2N>e5 zSy(X~rac91S?Q#($jXkZS?cs1%6583$_n90HKw{6BV=KKUT`@TwPmKFgOz4)O!TcN ztW>xJG84&F>s4zq4qbF?f+HDRXC!k{!=^Se7mk<%y>>C_zGyps>afokCay=LnFj!m zY+wp3n44!KZ=xPJJBB{#&TC%VOaS9b{5|p=!+Z5U)$0=INrz&p8CQZwBC{`aHDcU>xMPLred=6p zXr}r*(xq8R++*0Sjy|7SWRj`e&Vf!q$T`J6TWnONrJ0j+2`JeL zRE%@m-nsom0rH*_Mo?NI~dY`_Pe-&|C391~X5=B`fG#z_<_ zp~tUId(zy6T(DxLxgScc=M1P`8~fPlP}R|e`kGKM!N==b79^`5;a;OPk!w(10y|8y-Pf~8*#=!1e&FG#7M^&QZbQK zlf8v0b}C%m?_vid9epbR7Xe+taGaQVXg-ErtEtw%$Ry>%{ zhO%DdWRrjaq>gdP-Jeh^MdoA7_cs#cGXkVGe@c_>ISi+v<381kYT03ff;~-NSqB4? z#a_&t+`Z>-Ae`iN=9MI8^%>yRWFvNeg!k`OA`OBw)}gV-eG8DW@7J~}#8T~EIQI0a zXyq6yboK34VmatZ9V<4wol#v)B#=2=;Xv*^YSc5~$2g|11XrV>{* zgoW`N<&<>5{VK?l_ln86Pf&51%UKvNEJ*LoTS-U&oa4A11w&5S7b_ZVD-F2F1-@cO zTAn5j*ibus%luVB7Y{Oq49a;Gb|hs5m*r9U=Cf&AaNU+d?@R(02dMR;WWm@8*u-NT z^Gm-ms3i3Hi*PBx$UwjvX ze=lfHMdzB#mLq_!J@^=;mr~42n8-#2K$khobjB+ZXo`|sn(4I|h&WM}#~zi5EJfLh zsBHDe0=gqDE;g;Pg?STX07xBi=~U%Rlg>}AYE1{4CQm9#Ro%)cmd z2SeQTs}MoTWOM0Ln8rZBBy-5CFhkg!f-|2=QlDa@1h*x&fCHVtzolP=2H;c?pI+4z zFe>aja@_$O)#Zf6ka~6eYmu~Q;)&yrEDkWkjyu)cbSnFlXD0`aDhS3KAmlLb&0c{> zJe)TeQAO;uFt(+ec%M9HuN?HPSX6mqIV0|jj&oEk)6Brj1#YL(v>_o>pku%TaOa<` zbG=@M@zTtXL0V}M6IRm^@t+&dgV{06r@TwMZ2UQF?CpjmN!nSQ8-c$^AA8u8FPf0wZlw z2{{KHD&%TI0tR@`N_DzAC|s7n!KoS$tCr3W3%9*(8MB9JZqHtTjAPcNjsv%l19j)US&G=m zFzloNKJNt7?;q~*otgY|TBgy2wMGrvD=;sNDLGTm(y(r=yw>vA7F>dOuCD4eXrDhI zBe2bMKMTAhHC)*2f0KxclMqd%@2@`4( zWLrkq{nBHp9;Uvy)AcAV;zW_c40R`p`L^H2vFV?>g_F!Fw`u4PZ_=`Le~VLLr2(P? z_iDmSfv&DF?#h(;O4XyElRKgsbo`SrL ze0;oH2rZ?!2(I`n-7r6hd*-;$i5@&UmWcOu?q`xW**uQ?xIW#5dNr#&WL3^eaa3i@ zbGrWkjwF`pz@Ng~`DL9aH~d_fFn$Vp4cPVBEw!l~PM zg`kILov;Ig-oAcVX*Xnj9vc|qw>`T~@za>`JB3_)tJ6O9B;F%^Nm?kbJgxx*^%de) z{wZ15qp4O=!cGw?|usah=;7W1fcwvi41_ z1?~BsjP>iE6s5zd4Y`o<>G;q*NeogeN5=92!Rwypyo%q%%XCz%g;)%@9A>n%`}rm4 zGRO$tI30K=v5r0ls%J$QTm&&*5EGnc@hCltCo1I~Wnu*1S^RRVb;r zj1z_kJNniAA6$`OaEHrX$7VmfQz&bAob#Ht$6fJ{;Gc$mIO*}DIMO^=0sA(tploB= zCG`i_wR|PxPX_CM4?IP2p!kx-tTh{VDh7U8hi60lN_}hYD7;hV!xH(8s}tc@Yb<)rfLz0uAq>i>=<@o^{TN94tWEwdh{ixgK|^V5`xTt zZpR>xdRVgTS=VR{v}Tq+kTF*vx3+Op>{W~?8-eF1wF%iA?G)x^MI}M{9<`r5c~>j) zYE^n15%;T3ZEj`CtWmXv*bRh+ZvDk{I$RAKs^>WV@T}{5W08j2*;ou8t!&xA zRDi_gvCq=FY1y208&^6=5OJ2?03Uan+KBmcec{01f!e5P=&p(plLX`{j{WOWDE|O< z10D(EBbw}tQ#hwS#PLL}mv+j5kf*IZBl!xT01?Os2A7b)V+4#6M<0j1Iyknr6kr38 zPgC`+(z4Lyl(iim*ZZev#sK8w=~EmCh(-BxgOks;YBHsm0H*_tgH{XyTzuP?`=^T1 z=1N6Ng%V>9!{x?13ZXi*s&YwPxzA&Y)|DE6m2yh;+&fl$;kJMZ?NNi8qLkl5lhwx6 zA1p&w;p0(ZU3>_7Mj!Egr&#iHqlAJJ;VQ#-K02*mK6sjDY;hDHO z2lO=*t%U@x78-eZbR^_uHz~u3YV%uPq$6n%; zmtt0ft=kR@9AngVtr#T;%HP9|qqo+nZ3BV{BehQ-0D+(Oaal(h*ygWCjii!$U{?)G>~_KFp`!)cqbbKh)OM{~SM$^}WPm}(^{g~j zVUT%Vm^Iq?Bg5~i+!9ogox8}vtf|MD*ttzoi)`8O?br4_^_}d5t4APWbC5-Tn0zkP zEj~5;1iH}RmpZ1Jq2Sy;eg@=W_2gIQ&y0LG4wI!UDnncqOPg~`#7lC9ulo7Rp+_Y{7196iLN7f+B=w^47uf7zG-|T z=f0ORF!MfL%5%uT=DkbyqOsC%ykBGDtqORj(ELMcw+SMB-T35j-n`?()?pGzeBH4W zI|o6GbUwB4c`bFK1615Ju1U@Z>sY#^ ztd}8x?ZK;-*Bi(U^LtfoWM^k#(>2!x%RNt?sVl7+6j$>}wMRJQ*GZ+`mnyF=&#P7* zn`paoKKE~W>U8T{8~urK7(zJSI3l`VD@`;yQIp-BPLpw9$Qn!Z0YKoMPqli_g1jN4 zc$Y?+Td*|8a$7js_|7@$Tyvz} zwB~yBlD90N{ZDH6ZQx6rKN_r-^B|Tc`^E8}U@PkAu62tI9b=YeB#=bAw_?5*(R?TI zBIe;_wp)alu|n$DC9}|1(Ov?&_@SgmuwJA$(Z)n;6plBOjqvs{{U{ide2$#&Vh4jFcQOd0gsKxJxzKK#rxe;OYo(|`@9zS zh`wWmeZ^0vYvHYX#9F6}@6q)ehPm3=RLLqU3>_)Ds-u4DJo>Mb+?MS1ui5j(kEiRg zM$(AYn=Hqj-rrjL+rwJBTv)>>-q1Q{4au+0--Vh~_WISU0h~BEBc*-i;3?1cTm+UV zhz7&l*Dfute{-qyIeeOhL<>UcQX-qyUDH*N4# z1v|ELyB$Sp*~R8zh$^Fy0p!+wkMQM`xA9}4_N|*VRA54{CzD>nS{!Pvv}OBcXwG&P zayEc_)~qN%10NwAcfqQ5@ovNX*~UQ~1#CfRp+Hl?&@RP}^GHGPCT#eZ$rZH8@a?Wj@Z*ilP8@BBXer8dOn#{h^ z3hr>lf#9he{uSu+>E(B4x!{r7v9Gl3?l>TW*A=CkvS$>fspXe?Sdqy9ry1MRHO}g~ zF6DIvQ@(MU^((z39$87_8>9iLIkLHz4p&q!7cv~>WIY4VWWj0m($L^mAspO?S2T#rdrBlmmp z)vKeouqP}47ny+`j;I?EqshBD=~pAORwsZFM?=MF$!5|F zk({5_og^WK7y^3%=~+E>HB82PG<0Bu7Gd00MdqHO4i_DF4_fM)J&*E%j)3F&)^?)^ zb|8*}0FHSzHtJo^1iZchN}}fJlfsdDpmNz4iSw~e| zcCJLV)cc2IX}gpFte8?WjDD2KRdQ8^SMOwZ_Nv>-ae;tFIX&qa+{y_f<@KcWVv~wP z*<<8#tOr6X15}Kab0ZMV$jRtED{|sNxG8*r)Q+`{tV$Uif*C+6GC8Sw9(`9GQON2X zfJZ70Gm4JHm74p{X9swq+qN!^NzbU5V8kQ8IMeB=&AX-6w0V`v*& z^A(?Ehh+h>d+}PaL(F`Z{3&U$t)A-!+GNtW=Os2O!q<;}S*z!RTui`GZH2F^;@fTy#ey-OhI9-;hWmv*eSK za0sjS*bdu!)^U#;h|Whitrn=`l!%%4V;qA_kLGN5^r<|P+wsLo3_D3~K^*cb*Hb$- z$HET$u;#R3Y_=G4k6Nu93?FbjH)B_$flG1MKYF3NmZHhx8@BcXAc~zhAhvP_DX~T6 zft)iF&0JJaLmkIC91bd5MzMp~M2xZi_pqx7g#f~2wm1~^iM+65z2}IBg)~M-vhlzINd#qFbp&)!6E#Ex@}0nRHf z=FqQU$m-S7%?M$%fX6(X)_ue|AQ8atR;QrcTGbr1)@2y8jlhiNqI*B$Dg$FGJ!^92 z-)RFOf&T9~s13LX$^Zq1ao)9azT;H%IrgI`LQS)W$NH<%V|ED?|^F>%6xBuNeF){kn#6`u4}xxtq49Qe6!Q2bPL{ zQU-DlU#P2A#~Vu$OLfgujx3$3GoR9~MmG{%kjIafvv$8Rs=Lt_V~Rc7iOvpjo_?Q7 zwPpLik(lo5(*TN~vA*w>fma;!^HuvWBiX!^AMG6A)~SMe*yt@|Q-&BDdB>%1S)p}8 zq@g1pUwX>ZSygcRN#h)ITb7o}lB|K*SPWws2Q}3V45aU=ZXCwT&gDNY5A&&*7T8xf z3xJh1x+{>ONj-Dx?N$;KwSXAKbj4~b+jdfd7Av@N$DtLX(U{a7#4sR|De+kp$^h9U zeFaW!%0@~MM^o=xrFKh_ute^KPDW2VNXa6c#9%g9s094oGHMAC;4IQB?!el>@IIoe zYMP9CJ&Rn;nIj)6#GP5Y3{q~|mXcetwC=iwr){So2hCyTg+DTZQ`=Z z8+6zc8~_e0hVW{sf?Y~b@ai+M4I7MYjC2FiscYKnM{y?BK4H$?rvtAw^LWX+^W|G3 zfz-aJ>h-@I{gV^#T=t=_ zyeM~l_2>cbSkt1>&gATOmtHM+6lr&=2Xg1qvakGFF5_ldofWxcC+0Qh&*G+* zRz{O{>|`J1Syy-KBk;vWPtBf1cfu`cYa^OX8P|_hV2UW#!s;0(uqxlsbDgxp9?_g>}4=&cL%VImaW~v@ASaQC1_e z6(A|w&wqO2-t02%L5EebT&R{{XFCMPYp~X#2mfQcZVSJ^b@cmv5AE0X-|stsY5S_Av8vR=Kwd z$qmK=k&}=+AE~aYIEAr|7tE3e1Lkw<)DOm~>CnY<8njWBz#Gf=KDE@trIxnd7kFF^ zsx!CVxi1#2-1MVPT?H1RGNLxvMgSenZrdu`B7|jApW_?>ilZIBm2tfglp_JU^!BY7 z^!V?so6crz9zZxF6h&LzGOf&u)@ZZChZq?J$QT&*t5Mp_XJZ>-c`B#x3X@B-S#IIC z$(^K+a)2^G9YLuuYww>EcrtshsRzKpTK@PyV53BOL>^j zXgyT&Mr+WaRm$|_wk8!hUY$w^-~d?gI^wL2iohKD@l@d;$e<5h)oB>8A1HIvX&5!p zd+2th)N{kUh51yjI3028QT?6M8H}E|Bcb=JgUjEv42*TfH5U$d6Uv_1#UzR|Wwgu4 zGtY7=Hnt22EJ-5@4?~K-BCvENvVV&_W{`p9jmkp~fdUpmwc0 zC>Brqpn@^f|XBR#ZGL{(6Iq98}B>(%aQrZ$rt?)}f6G z2PKcpGm(mL0yQLtagIUiD%7>HHW129x}!G(oaen|UCh!WVL{2j=lRv!jFkm?W0f6E zXI(P5Dn=OdkZSHLYI9n+#!C`0`3mE8MFcs{bAerz_%FN>kVnmv&2tx)-eVMX+qaB& z_NwM7D;%Vjrbb|(mM0YGY>KJMZO0rA^}4nN!tx75E9+ZXqq1_%m%Or zr#rjVX0jV_2JU|DIr`UJnpd2woS_4t6sJo7AD1BTGAggp3Bj|7I(8&{t|SAU-j!Bc zCQvYNap_&t=!_d{50v_hel=3(N#08NWCi1=S}xHJHrAaEQ2HUs)F1`04i96#wkiJ&c#PVI7PH{B(UH&K~pYsfyrL|jc!=@Uhh+o{hbRi z843kr$!R5|j*@~f*dqrco@(qrH1~g|x)bBv+FjLXX}y zaseFInfMP;(d_lhFte$d*a5g>2fl04ek|(IX?`2Jx3rrVGa-*?Z@ZEAt7>%lb$gsu z>q<`D4>s|C#UVe4u6&Dyk~MO?p0&(sI^XumHz>-JDacXCz!l`z@jjn&+vna}Il;|s z=(jSgd*W@_80%YgIjqll@F&L${X4_M!n&M`E|`*e){;tcZP@iup4IAF2a5#KKuIiw z0!MGHd~2v*7A=v;uR!>B@d!9J^GL}u4of!&74!L?7uqE_pI4LPRVVCa)am~KX)74+ zwZnA~VzMrJa1JZy$!#P?B>r{oemwCkI{l&-i>-09`IvM^xQFD&2Wo<;uv zWlvh|yeaWlSkZ1Hk|sD_17`;v>b;kOqQAIU%ZR}1xb^&N-#!_B&6*ys_E){RW?2T} z6l5-Y*ELyFdPwV`3{+j<^cnEm<7!W-!xiKX31U|b-`c*8(7aD?s-j68O#=na{-FC- zex3U&>7F07No=JOstw`ZFi$n9r}#_kb2JEyo?bFYU!~CD|lz& zrT+kj<-3aRH;tpr3IJ$CGla|KUfV3T#(Js}>kV|uc_}9H_zBZ4- z9u{fAU$kur7(>y>z&P};Kk%NLCZBKitA+B>er9vn59eHei2O${iS=0}az(lwkfNM! z9;8;-Oh49V%=!^5L#I!cJC%~+Y3`<)=2JY=67J`zbJW(ogulE1$(F`I$4bhyw^VF` z*atlGirKPN$Rp(nI%AS+?V)6>j}fk?L28P?lAtN%@yR~b&{@R$)v=TVCnK-5VOftb z0M1wribqd+=`7X3`J502M;vClW2!T|>TT(ff^tYiJb=fF+O>rzMc{1*A&IQ5FamHJ zEWa_wTIj76q*IWqoMRnxTI?L}p!BmSp-Ehye${dtVIL?_(bu3IDp;W|QTBvU&Iso< zWe_3U+dv%gS`Evw1Q3NQ@}4@MTF{QsB-+6cp2Ix-X<>u+oQ??@0#OBUy~bc<{!i{)H^a1BQGN_V+H-!=nQvC!pmIIGPyaB?@O z91iu5b*6$jBy?_i{x#m-*bFxV*bXZq>d57HF7DYqt6N#+c=f0AbVLG_7ri%z5SBmJ>J!7~|fk&7y-M z;45t#w=aMH09ASo#*_%#oveB3S<>ljnIHlI#~ju(O2bUz{{XUflaL5JhNgdKsEoR( z+IR=jyBTazL*aIgr`**;rkL<{s0@Cf8s}=}iCbe5(!{DU0Z!%U#~jx~W2fy2g#a$eOLpcQCFyl3Y?tQDMoNmkD z%0l2_y9PWOf1aogGF!OLYA8YTH>+fkwNQ(R>T!+$HK}til*b!gMt45?1me8LxD}&b_ z^zj=u*3L&9`c|c#vgaiO6WI3rYZmMgT-uJdwM1n^Qb6aP^{oZD3^F)8jQY`OYRbg( zjB}2)sF9-$gkUi1+)`H5e5EqG0UI-(;8Xm+F+eC=9B^^@)SQM3#y536eT7FLc@{!c z9jET&HC(!A9L>E-Q%0bU!16_B+R^U;B!=N}k zR9xN=B1o_}8LQAh_(DKX4nZEi^(1krAPj9@q*cX$kho)xGg(SjH&kC?k=l{Y0XfMv zVmov!dgB~suEPmu8%NORtx7GvT$8lty<+8ct2T`%bVUq*FvswZ^O}E@rO=$Q>UN$7 zwLC(_v4FVlJJpEbEOIu1>+4+ZO>B1iHGPQI1t&i?SEy={A_~~shCM;6NSg$B%N~T| zIjNR4B0a~4?s}XW=W~5dn9}OX=>mi#FX8?*VIXpTVaOT4^s7r28wa-_RfsLw$t471 z9YrTS4OKl#(Z&}ej4xdFs|jzl*K2QK$pBQQ1y|bKwh0;O#ap%mW3d5T9jl(T9PZZ% zQ@(@k;6T6wl2?qJl$3xcPBJ<0W}@Tp)FDuOe(p0yI4p5g4+ zkwO%O+mKHgsYSaZGdh(GlA@%JEud}(@aY_f)6bCJOuR!zhvLz98%GgqNDXvdN;#OzR|zerDq9wGk~B1diJQS&@sj_j@ZsCLfQgcWaI#PclW51v(Xb3ec3&tmwc7M>6+Jq z6*(+as}2u5nynh5;~=w-m;udb+b&BkR1D+{S3T~o&bX^e!`9sGP@gVwobiF)tt2d} zRY?juXQ?$ZD((4sVmVSXx~#3cJ7;c31LhqoK4#8@mGmHrCT9+KY;--VQqln+1dQ{X z;+Y+|bqIF0e>&2&v@!+xh|7J`+O2D1T5GAJX&SNIIw#A=sr9aw&MczmB#t?(TU&7- z&4Og-f&9g8>8Z6Ju3aZw&q=-j#sGY)g`QW zh>T<&K5q4=V{GxpsQ4SON$4@{U66~|<#Q@SYbMf8G5kPus|#$YkG&&u4{T<&A+-l` zjua8s(yXSM9oRU|akWSDu8V3)n|d7lwxQ!HkK`dCy(lab9jVqNfXYDy2sK!#7@) zVzDHMpqn8&9f@^aAIHF}a-VY@9$F*WzTr7?9g>OTiMN4U!>V@AszXvGT$2``poEJ=|A2`n$ z9jhwV;wLyQht6<##dKDeq!l4T#(nFSw7F6`Df`cI<&58Da(+=ZF@`(}>a;uN3=83< zI2Z%o`x??Kf=&K28o z#!lW(=}Hr`)Vb1AJ=a3ftuJmNySI!b!$uUcovNe171qb$Ssva6)1 z&UkUu;~for`TJS?6_dnT47!e$3ftY-ui6nvC73A50QwsGr(e^p^ziQLBOv7M;5QYI zb8~HfXe7FfT*ChVxY|xf%m~S?9Zp&EUt`aW7T1yaI~Bt`F}ua(GpNr!4PK3iT&m&J z0C#ogy>@>ZJQCgt_=$gI}>7;a(WS3O9G;NsvQ079%_}o7y+HQ z>JLL&aGyO@SOK@VI3!ld^*H3WOcb`%EW~7ixO5+dSdKioNj~u>80bKzhzxC&Y!kt5 z*rkdle0371-5Kl6U6R=6YT6ef3Jc*>0l){GdeRaZ%YaVaFnST|N-^duY{%4erWtnt zI<|RH#yvT#oz}%$LcG{mNfm`pZgN*GJtP{*90B66cs+SO~L><^pgnQPD zL_S;eIm^31t0@4MAH|MMV_n0vlDJ}i_o({URe2Yb!9m^c^{PK&-60`B2d)QGO+9R1 zv%bb1o|MuIwsJWDe-&(5Xre`3h|U}DXN-H+{-37q3ZyplBLFY+u9DA3BqL!+&vDLc zq6<>JowPXkv=uO}W8e<`NzDhtT1QF zwPE3?vuK}c)OO%bqYD}7#a)tGoE2&)>{?43Ux&Ia%19LIvw$53{IgF(?_MY3eNiR3 znb0RafbU(8h-JRj?hKNRN(oBGY+!4}-l(b-^;_i;l^H80%=;k9f?~k9}vMsfVB9#5zr>7O! z{0Y^xeMb6E3V4DvO*d4;DR%z=dfrlgRvy)r@t@%)vG8NX(&>7cGulXe%UiS`B*=OY zYl?VC*~$p-hBjAR%&q;VCyA65B=tD{RW6%!5>XyO7~qkbcl!sCuBntfX!A>;L=O+=#Oq0UD=Y9mdx zW2f82v$eLrib<80O_B!Z(AUx52>fOCc&#l<2g9k{Ivn<|ku=>&q@U+u^Bm_D?SBn5 zCx%OZEr$#TCmed$4k9frPg@6CGj_T9G2yQeL8@3ayv&ROf`>Rb^sLLYf-OPGLFG3) zn}83cc$b7cRPZ{MkjW9q!nO$>wcP3cB$HFNKfN-G5hB;CR4TTOpWZBzYaVOyL&Y&WrjushEJHFdai8~it~S9FX=wosk;m4l zOLE$U?31=P$WC%QX0&ZlBz7`4m(U9R6A4Z4l%<6(ATRQGtX?@($$w{REFDvU5Dvi4WVQhT&n^y zPaultZKgqj12FCm20oRq1>yxDXCb{fu9)qigK3>MoZF>R%be$N&j90!+puPm1aq{r zcRtn2TV4QmmH-@JcP6(j?v#PF{oYTZtrNJlM^9}bQH9zEOoP-_xEMPfpl=7}4b5TO z-4B;1p1jr6oJPh)BWMFBJk{(?-*ajf+JG#BEZm;8rEj&>fD8#IXdT62L2$&4r7%AC z9E#Ypx=>Vu!8J(EPockQwc}oJz;dIws}d;M3aA)40CQBWY-0FRHe3%{lqP}@}%?>-oj5) zl%CC9oD@GMGnL?qsd1->$pSU!sV9-`iU7_)F~8}Y1>P~8y^ngUbpUafUzqcfYo2ED zXDM^1#;VGL3_H~s;oQ4-Hy9g8u7dV3cNI8c>D*Ra+fbY_a0fWzxtXT>6>aUlRSSUK z*!9h9+FR`kNXNE+oo5Ldl}ds(@#sx#Y2{>G4eOs#!8IC)zh`VhsM;5EU?1;Rg5f|M zug!y=DPU01hTFRs1DqOHk8@?V6~{R}4L+Kgx7eK~9%c?Uj;g$7hmaWx;{!d8MNwOj ztW=}!St4gULEY-j-k~~pWn#xC9Xe*TZKGyYG5`VOkZM_NcLpG29+^EW zHjNSa^AzGjr+3YafNK03Qv`BPIjo2QR!z#I9DP0OQrwa<4l~I5*B>$TvZ&q5sUd<@ z&In`l=hCEiX;*NScXRTws0_>r+rzF2`ufyUOSEs`u{j6R)|{kdqjH_x$7|t>HvU2F z?O8VtPVPt_P6cUPmUqZwm(PAGkxm#dB#ivs39R|KV-{h7!6O8pN=I;mb_WNu%=yne)F5Gj z11m$4%v9$C@}&hv(YNubDl4Nbq&eC^3ObSNR$z@!A27(r9jdf01CH6~D*dkHIl&`8 zjb|ow(~XNzpow;ZGmh1M2+7)6K*`1c{c5~8`@Ij+wJoAx-zX=HEG*Cp=DVY0CXJ(TBx#~H?YS*1zfjqO5h$2Ngb(N zu0?%|(MF(+s?v|;R^TCBcBwe_s?hBx3fsBPSG8Y5<)ZF2>!GxjoHWy5A>ngQI66}40Yn4!ez^G&f6F{RXhQ-eeC?!g-+_GSjIV5D7go4Me2YtgdYBH+_@_@jNf%$+LNxnnVKQ|}&RxPWtm%{BMLxMB*oUjG1LzXxZ0-&9QCMkgN9J0eqqIEuY0ow z$n9ZhcWnR$U%Gk&T2SIL2j1W*Va-&6G-hT1DC%n6v|(KGcl17lR&^E4De7q;5wT-} zNB|6DHG18EU@*Dup7lZ{EOxgG(S1j~Xrw#9&ngHfJOFXpxn1qC(;dwSLrfO~C5{gq zX0%ZVIXr(+-l;>CQgebjW2S3D!Ib2DtPcR5)GJ=rI=Wo7ZxXY7tHI}RJYu!&qK%kH z1~I_EP4y1RjOLR^_$=|}ZFhx|eDJ!V} zN~4Sc!Odw~MofGVN8PP$pm`#msirQX_LlfNM1n^_&hR~J8^+N~bA2l$ahPIJx3LGX zuCo4bBHeQ6hB(Ux+m=yWKB;vz)vz<7u$jPST#g5N`CP_N+gqVAZcgW&Yua;O-$`(v zC0WYt zt3vr-G0bZ4J;1kxMo||fv5cPl)YvNCc2B(L7C$Vw@BoOL4EYgCkn`O2cYf&(6F8sM2H0S@ju0aPZwd1P(Qc8)+a zkm@D~!31YLd)D#MSm%;YQPMMsm9hip1of*kYY!4K2FidrJY(rqJmi$CtAWo$)ccxS z>r|33+kwxZ{&fv0C3Z|xT8_8ZXJfcXRfkL-D`!sEC0Ue6yMqI{nDnk)V=%4)0tY!1 zqfwGEz&sueb54X_sU1+N;?>#eb{hWxl>sj>A1*#c+()HuXxiiCN*M~04(Sg=>5B3D zZDgFGU8Ba@T(*QM!NWL_kdL*4Ch_e^cU9<}CFR(I%q4LY9E zH;%`ocpJs`mYS+Y>P`*|5s(M1eRJV0YfU^4MR=w28VANZHDqOw8TaT{{ZXLg;h&M)aS1#)s30zUL}xUgB%5AjAZ1u z0=(x~GTX^-Yvq(I%0N(d*F`RgHk~Z98^&Z)jh#WyTDNUy4yProjDOX?&;HW-Qk{Q) z-ZZ&V8?d=b-*UR!u`2z%>EF9 zQy)=$S^b?JMjDys%>r-1M=55Cy_5T10uN#?h(1YL7 zu0a`)smN97(~8y!qX{xwNQA8Hpp%{lrE9?o?ral}am`kSA%)K;2aTj0`&OO3qb}Yu zJxzB-XmZQYlG~LT^~h7fts7<`#s+=QCZM-X%bnRHJxA+Ol42-9${yIQY+)|N?Zkqh zhEu}|9YK%)`+@8SdaRP7F)Q-($v(9pkc@O-2h3Nws1xvLcQ_Yx|6cdmmbCx7AncPM+|*2pT?g)o{&erP!$t{Avnce z)x1Ne={BrceAiKupl~b7wf_Jb-D;AQP-Rv)NYG#b??P_&NaC+v6qTDb^?wstTQrFh zHO!#r3cbB^Tz0kMR=bsBnO<1f5|BVL0rV!F=195wRI6?3iOD|IN^Nr2PF>dO7EVBX zb6Uk7HC#;PqAo`)^PqES4Wt?W09W@*4*9Ix*{tCiQ65{6$DO#Yb5`+`jvYor0DgYi zt}jsWMa9IKFP`0cRovrCyE;vCTuG&MN8OGXpXupbb^XxfIZeT8J)J2Amv4?s;V%1q_8 z0`Zg1Dx2ZKUB5qwF%_*>(P9b-?pc*-~u1^zY9D@{qo-4NoQgS=9% zZz9P9kXsxdaad7481Ds0;=e+^B=|o^_~+njFBWMjADu0zl5K;dcL&^8#hxYje{rQ< zy2}>U4S-Z}_}4vpNv>$E3#VU|@=tS(W4jIaPCFWKV89mRjNi?xLOx-;IL~U~tSp)CPylw4I#pGSo_`Tu75hf`s%<{v*TddSwvt>ZxozrInE}Q})YsJ?0Q?B|I>n{Nq`NK1 z<~JPuDu?_Oli^HP{sz%Jccqs}T)&pfxk>0ftBPHzfsk;dlaPCg+0*aciZcem94mTy)uj53OGCV|)I8D2TxTCz zzXih;%VQk|*6Un_o#E=l4Y}G$$ib~EeL)7+3^p$$uOhVAm#Npobff@;;PpApYFb^Q z73ITZa0W-#xT`%)T0&K@n|Zu?HgtubCN2Iv27JJPyErTB~|OpdgM11Rm8F+dQyPkU_xR zRqn5YE1)W%{GrEso?)oc%J&;P zYfFqN2up2jVxJ_3Vg-HbPds!!^???o!AQtX`-Lo;(&T)_bH@UkeF@OemiIDb3=mEU z?d?=$)D%cd9uGn9>sgXsl-!}Vvz&~cqt>$LzsJkw{D5^QB-BbnOH-kJMLMb3jCZS0 z-kD2{!*SqawQzH4*l(1L$BY5T)~xAT+cyMmlyQ?;w{hE3)2$~_7tG4aIKv)IST}xP z#tP(Q4%N#+sttToeW1dZ?W{o&*Sp0)3 zIU~}o`PmpFA$>bmG#49`eB3Qsg6+3%UzZ~s_pMh}%-*)KaIj_FoM7^C{V9s!Q00i{ zimUd5kDb60zcDoo*FI>-g7r4+phhg&X_83{_-| z#&AY*axgnpu%rwDyPn;v8Cf0F;%HhG>NAd<~FxS`IS12*@C9 z82tU}R8W}R_s%+siBmFXx1sf`NTuAn0lT0b!0(ES*wrhsh>Af9q-d^TiVRHlOg5L1ad_+_5{Fxn4SsgQN*Q)AbgoooO8ewsR$BA%;j0L&Nw_(hKuAWg=3A`^!BNvg=BISF|~N^F++M-#!>E8+FmiW zLcVfCb;UeH+f?VCfC2i|u@G`b?Bf{r9+a}C=geS+=zGzk(HKb?#?TZ}PT~$vwN$yc z+UF~{k9yj8ixoVm-Sr=-Q1sTsyJ!?bAE3|?0 zo}QTZrMHQrRVjiAAfCWfyFEe|S`pg75g#O=QHs>HKmw@w_YQDrw&{_AIX?V@>sPJD z*vhc?+&k7S+1%`ebtJYVjlg3kspv&(*+dzD%7Vj;{82eq~i& zgDNmZW}V&9*p-&0=)*bt%m_Fwj+L)yf+hfSj(2y@xT+TIm5g*G*9b51%N7RbR%h0aIoSMAFAWlIJmjIXUyw2%ZVwUjZyJw`=cw>w=!e8)NIz^_J{ zIHv5jHLL4k@cM zV#0Dm0NYT4Mh7F(wb6h@YRN;fOsTr6b$7pblu z*Y>;kd#QMe+d%OB#;M}HTIs}a+i5n1mPS5>u}R9x=5BCHR(js4BWjaOBAMh!Wb(F{ z_Nw4=Gv2um7T>L%v`M%lX`P_r;^{)^3 zpM7_w>en;*MN}rn1o9i&zDpB7Z8>s^8b4C5sp4B`r!qW_N#R!<=DEwi90~1YgClCN z+<52luQt`ZOLeK;k1=)t#X##<^h;wk)KKg!@?jAba$UOsJ!^^(x5n*b(xVqWj`qeu zcWX0TFc7#KS&29wO5wHn?IH7$*5FEtalt<;cLu(=u+)AAd=JoUYD0n}`%`6&chBRO7sap}pXAa2}dY0;I8nr1>N=e@%61azkPBWNJw2Z2#W-e}5z za60F$Iyt3cV<0MLA*-@WO%Ee|StKe`InO;Rc<{>tAa`Sw*$s0=;-^Dsri42 zd)6&XcrA?{*#2R6oCp&gzAE`C;ufo3+>lSwq z{h|%F`*6VEZEnLA;Nqm(c1O|Ro7(5A$KyX0XqORvufwoQX(EWl!E`bN9Z6dCUj^!# zM!N&t8&9#{0GQkI^PaVHz+M>Az9Z;u4dgcW^Mw1Q@ae~Fbj5MLDDdKZE!Cou8Ffu2 z*`!nrcs|o^+3C+!0=eT!$~@87+ErIOr!CKDOW3Vol`fTco_7qIj?VhnF%hyV<0O;T zsOa5 z9QXrKj?UmlEMgY{k#e#!oZ`L~f;N#C1cxiTYY$&a{WJK%;ilHU8|$`~HtiezfF#f-%%rxtIJhT@N=GD7PL|Wi`1fati02q*O_7`^77`HV+lM zb8F@&$_~-X9N^V4ZdHa`1rOfFe_HhxnzMHseK2eMiYB|6=Fg{WT1J212krj=tilqdy|r z&eD*0Z<~>v3bb4_JGugR$gIS64gf$`8<_VMJIIRyZf&^E257dH6_At8Wn}=a!ZXc8 z*CtmA#JR=-j+v@2aKVdo{_=yGvuf;5DVFqJzgo$rcT$PdX(MXnVoYOwW0sa@YZS0rK#0Ln@wh8-n#t6B zV4_n8ny|&m2R(k3=bkC}ffk!#Ec4yR2vi|_(~^G*@oiJ%8c96iz1h2sNz^#(M zyw3*}jd$gx_nyJy9~XVKr_;2MZYNdC9Dg%jb9b!YTdbeDAc2-*bIxmmm*R!hv@^wG zOfpZ8GEhEaS+`y~mN-LACUe&v>vXJ-5#CzJ?QS*ez*rT0H_l6co|Tz@;w|xvxeh^W z4_e^wejvT%hiTZOjyuv@c$F^X%)o8#4|-Q@YAn~EUJ^4SHtZbj^v!2Ybgs>o+s|WF zu9^vyG;%8Qou;v-n4@hOBzN_z8qu0_UX8_%Ur|+Lyeu1&yBNtms)v}tNo*Q75JCIg zXK13sxipsm42*p<)|g1(jy(k%S9URz)EY)3%^-~N)OV(=E8j*_nliu+q~@|OqF~$% z9PmYNk+hOd4{TLSn_}fhcK7K*)J84cvRy9aAe9*)de&r-x{w)2HK%o9C9|0$9S%tK zt2S}LsxH&=&FSwz%tdBW1`pPl?#keUf<5b@o5R}yY?a4)&6`ai|NpwP6fNOwrRsD+N;M(?Ct&n-1sj^jkOzjEu=sRV!Uqj z&qH6SnlFYljV9PfV{066{{XYjX`UqTR*mA#9^*^Y^!RQp=3T6Xa7Va3jYVuVD$(U< zeF~MS%bMu??eLF>2ieh*;dYX78EoL!sQ6dG)|T=at`~n91J<@YS^G2G{4&-J=71&C zbZJ|5*$HQdo`=`#Q`n&p1(W1u2dT!Jev@u%Q-iZnrkCDxlPTN{#(u$9l^1$?V%e0*Q8T}^2IbO|Sv zyLt_$2lcP4J`w0I;g1LE7dMKqLa;NFpWzBgCpGjLTqO%w;Lg39i%)a$w#nKkHb_sM z8!|8--cnSL%vPPWggTZuEIafSmuY2yBy#)*7)<^ADAJFzhPYT(ES=%CN^?-K(M%NH0KXAzEpaZ$&53bPVhur<=OMlQ!s9q!4AE;`_2 zn$WYYEfe zP&P{=X{u%sl1V3_Jt=c^3p3DS)RdJ+ZgZbnvu~)97z30! z1XmSlf3cQLXg?|vpZDO1d$Qu4w*b;8jkApe5ZP;7~Sn$Yg-}Q*oSfG5Hvq-Md4s;*GxV(P)vP~fWp;RC+wJ*+ zkj!{2F;4q2W4L|u$0x06$!uAlfZvZwQ4UTqli!Y&<8#>ho=cSy(_%OWpy|-(>rpg8 z!6kO@>sreLNx>(cea%$4w*-!GdK^=XwA9nt-qtakZ6|K!40%4LnYFO&OJla<(yv`a z2p?RKPkPV0k#}_=xWF8ad)Gu~bPko4g=@3EGswW_1FdCCHY6t`WMoy_#xcZqXCtWx zt!7N%<7otAn(L+5;;RP5SK6Q+PIK0*LvqRj^b5!YX0ln%?Zf3imTE{v6_MI20l}s-DAdDy^@(5gFt;GsPiU=fk&uYR_y1Cm9qQ*l7Y_`GB z_o+p}ErM~J9z{j9V|MwD!g$Y6F-Oc4f_HI`#<^|WZcCv#k-WwPa7Q>jO*vJL0O~m; zo+_r|j56K20oJBfSyyuqqXRiTY8vVaSJ1MHi2?H#G281_@Cq&%1}6=UwN@nE9__;! z;~lEV$2e`kcckQR5_Cin_1<%znx=_M4uxDEq~rlmD~THo$s7agRulzX1_l2B+V-TG zs=Im?Ae2bC01c-J>f*H2)$6Jyk0LP4TRA;FD%30c zjF-+jo|&dwL`-UU&qAJtr-yO_xrWkmR~4*ao`x<~V5_STV&V=1Y|o3u>@zU>{Z>$Amf}?HgY=S%MpnY z^1{0k19Z(@5xlq=CZkXHxs+BwR&{vO>{VFV=(JS zE1I@QR#2tOWDl3Q_pOUITVNt~-%6a01UI%Gg>k$afz*eFtj2CZ`>oFC;OP za=0@Qx!%1MPF+t5wqqStG;dGhYb_St?x!!YcwoZ-ekY}Twegqs-PSE$_eAhZL1z$s zuc-wN`0fyq$JV(|+FRpw)RVV{beW0(Gk0*OmOtDdO8KDkTBuy}-D;B6vrk>|9;xD; zNw0N%Lg!PvbC#OsLhbt3=#Tsoi{V5c+M4ggO-9{Y`#pZerxs87YUAf{eTD^odU#jE z8i$H?m^AG+)?3TTm@IKbyyWyX`@Qfx;Z#2dehc_(!j{pjH#YW*J>0+Z(&5*0=jeF+ zE6L3(`x;!a-JMt}UfQm^BHxLutf0NRdDjw7-eFLAC)E4b&Yu>%4JG-xo)Sz+E=K%i z)w`V6uz1^ExV3p2_T3_5_tkP$$4<57TF;Mk`w7F}OoldH&acS|y)j=K3XUr0vFy~P zW5l1~MZKiL>7s4Kmyj_#MtUFqwRAoR(d@hzr0ZTWzKlsGiyIp?kp|N{0wdu1b*%3f zd{mC}P?{(TvN7 z(2Uc1*z$Sx9ZTXbiSF+%WowD&k))ndGJct=H*I&}$1MZ81vm_(f)Ay4{s7W{u)H)0 zM0@MvTXOXZJ63;>wf#F!wHC{547YA_z;aM}n&{?=lBX4PcjEC9NzJmy!~Xz`R|#~m zPR1EgNGt~usp_V=kBGWur}mm%S|W(2JOpfo&nCF#)LKnINRg~c5AfCPPf&Y{WL?>e zbB{{hQI#sHRP;}De4Zy0?c&t+B|1p6OceyM&pm}!lH7TQG3k&y(QSM7t5ST@tq|Zb z&hKiuWiXN%EhC%YHPyQ<=>x|}jf_b$h%Upui|rnR>W4#XG?dsfby<9q!kDG**u zD>2Slx)JGF77^}*EX(_#Hy%1w-}p^DBjLCeH9)SyP*no%W?uEilAO6zZ|GEIDt`Ah zjmsa6`u>2?-Pmi=Sl#D1fkJKJ9PBx*kZu&THMm(&df&o*hXpdv+zt$Uy|LJ;COyG7aPdf*U1G z2<1YSCnuf0l_M3EIsn}de0>deB%8I&TkB$Y;YLtc6jRVIHK%J68L$D`2PL|J>sj{E z?Njp(2ORbK*5#;Kn63z5ypvrq@-dMjtFAVNE6}!i9+f|kQ3xyZDd%-bZ3C%Xl~4iT ze-&9sN0dMX%AT3sU9s54*E85GYqXu*@LHg_&i6eZ(>$!rwB z8P7`SNXhG?D9R4tNl>722V+&G3-aWL2aY>c`P>k}v&hKE=~UeUC}zVFbMl|(TS6(A zw`~YZ6x)DLW0O^$W?*`dJ072fO?5KFbDio2cCQ51E!66x01_3rIpkKnx71wr*qNqg zk+!zbPXyJgNdg=@X=T{)S0!0enF*p^JqkT=3^xWZEb_BVx#>JpR`QHn3J4~wbeyEAPhk&gXqQYnSXZX^yk=aXDaQXRncA6~V$q~2wK zW5+?B-qk7gBh=nh-}8)|oM6(3@DE)5YDj@4Pw<}Jl{3Y$f`ENNswZto0_|Mjjos4E&}Nt8Z&(?T-hL7oSvYUsQ<;z@in zs6%j!-)D9SEMVgU*0BU2k~7Ub##$pA5P0wW>Q=0oM(Fzs!CLe)TElk)!IXehp0)IM z!(WIk8G$_CEW`%{<0ij9{s{QYEX|}(H}4naP3PsseJA1j+4RZL!;+^51B%j7)7?Dg z+Lf92MuqW;`@@n(%&m2&%0XO?*UqhP<-7jq zj57E7R%W5B>OKVVAbUw1+dJ9cdGnNO$WjHE%n&(1hN~s zjkBu=;@h+Wzuv}iUL*0x<2{e;Wv5&Ca@R+<)jU^nrdX`*vV6Rs^|IrhPeEKbj5pS8 z&9XiG207teq_=4L!{BGbjSs^b1Kw)aDQl-$jLUgD1VY{NO>>{LzwK>lru;7Pou`Hh zLt!3^JV|`x5hyd~3M_+2dv)7_vkj&%FP)uwaf)8rZmV7AWa57GFQ5_D)D9v4L zSQjiGEW}~D=k%vZd%-G49C~qB*Ea#3TX|dz=hmq{rO(QH{MEXV$kol&zmg^+j=g;; z<4`VDnStklo-3Re${eoa^9%xd(;HCv!3qkf?r}qs+?1?!E2%U{cay13>9#t|PFIb{Pf~vEbozd@BwyWyGBG#i-^@+qQ*nLE~`m zTt%Lu@AGdC-Ff2`cxvq7TOd9;!Qj#DIvOf%>UIl%u&{{d2a!!}O;jvDOxqd2L!6Sl z@l$=VvUagioZ}o;POhf@%KDl&S7Q^3mFM4HVo|?nq;?b_-+V4Fg=A) zxtOsh%p;yqb{@4p(Y=av(nF<{LqX)}j8=AY^17 z=QU4PemPcl z-MxtD0-RSBWpG4C=If8W(zfkq+5+IH0DRqzWSUxB*+a52O`9nr0PXLdzmIwfh~z31 zGh>sUm7>udpfTuix4jZZdZ+XqDy$CX?#HEN+=%|}c9Y(;CEo9Y(4K;*+#RE7!8z^TyJ1sfj;HQrmT2%XgIRcAY|v0?aej0 z+@yU4KHWUCfWeo)y-v_|Dh>y?O3qR_IUCWG9y|bdbDo2}ShBV_IOE$DVmm+?SRcm~ zcG}$}1OiKrPZ+6k^Eu@aBC-I3!+X`ZEP-qy1@$=VR&A_#+~au913fEB*4VfJ4ZNHW zK~r?}Gq=5FQ-;L`NIkF{(ya&!NUGTiah4US6^a78kYTvTsi~gZZUV$SymYLkC9&BC z(U#W#03cEO!ZUz-)mbeFkd#0WADchYw~ec^kgmN7(e7Z$ z5Ov%!l6uq(ODeZa^&K%<(m)v)?D=~h^_wNTdMR=v?FUrQI}F)$d0Y%v+nQYuJ} z@)Y9)WFDC`c{xS>-q#(+y-Klc+mpG^N?IaQWU!;NAm9vVj@4~ZlmsAc9FhlmY%mg3 z@z1Xnptj_$0-WcAo`cq~aysMOfIuB{ij{F8SjkW`%O2De&T+$Z$mo8xJWvd)s38gH z!>v-ZtZNoY0{o?v0(xyc3{}`il1s+9>ON7NA4)A^Rsg9W9?UC77!)$F0eR&5QFd;n z%dtiU`S?Hx=Q+(>F_Dd=v0?Xs;2z?h@PTr`1I8QW9jb?owZY-P56Ly5GG4jD06s{^ za((N%l{r*u$380+3^hJ!J$oHBhKTbj`LaiBt;lIxX~sP&*zm!U7h7#c)_Ig=BWA$% zubUIb`i;%|%O%vT@?bvZ$-wPe_8vLDigkGI8C_0r8`8aK(2RN?8;H#7)s^Dxk45pG ztFL%z40l>}xu_q_$d)E&yilvevGF^eR^M>i|T^yb<9wpE&Z1n@Vq`^X`ED!$x zUc572ntcycAsnKv;L#3*S3-j5k2Te)CwWPo?Z?Dh`)iCP>wbM|B>10tNZoPrXCY5o z;qGoN7AWOIy^3eljOL##dks{my0h04;$6ZhB7UO@f9E($hn+HDJ^r?TeAwiw(oYMAidbA$aqw0GN&%`UHQRT|2af}ZB=ANGr z?#d#G2;-BUbL(C?CaSxGdBpLIdQld*MnlM~x#FKBdLeVoFNpS|@d|frHNy}SfO)~G zzu`ZX*b^eYc^Uq-<7upu+#kk+tjajw#ZR(Zq#n|L%+F?r;u|3$=g#lpUWTkiX4j+o@SQdsl`xh_HE(;Bm(os9(jb2GJ%#9<^MFYhqNUx}Qba`1aC3Rkb4z z00SxHA57PGq)Bam6mr9L71l-zBkuZF#WU;vXa{iw9_PJm_*=y~t)k3CPIs5L(s>0StdE+;YG>Tab{*o>ljXWqVikKz^V zo?Me%8Ks3bq4hn@S8Z-hYf%j>gr27-H7T~q<+9xO&kXDL-YwLA(SAhml{kcOtK4F$ zd|~*Qo*3}8!&_XRJjJ#!2N~(t+PU2aS6fXXWQtZ!2e&ohpBy}0F1M=-VpK;E+p&M0 zTUOX2`JK-$x{`fTc`m1sq?%SP?%a}1cHam73HX!aAB*igKjG~@YwOwFSNCa^jY;L3 z&y2eVmVnH zVknp2BxbdYZ60ZC6P@I#$A8H3KiRYPW$@0E@o~HhqO#s6g_UnSQ>>hBxw_z`x*p08 zTzXgA`m#eWoC65TbRhSynEwFanl`MT2sK|4>ZOje;!DXd?q`(bxGr(erF{Y7eL^_Q zk|`3#!0mP9d)L8cmHn+(2q*zZ37QC zDA6eeP|xB^KRA0sb4E57k|vkVryB%ke$ z*#rUi7M=VOKZ!C8T6#8+}y5%X#JjnI1a!{z0jlTz*Yp)S%7KS`E zy_0zaaszGP*UmcJvP~n&GwztPZgP6_(!PiAeY~xIs_J%fmV0|vkRT&1k<%UP<~?Up zXP!ZTs#%WS;OCJ~1s6HVnPv?rSZo&-_L3w?^UEu3+1T*Va z#%@rb!y~0__^pI-f}m~PjMuMGT5*SSJOh5=b16J(BkS6jQVeOiOMnYm! z#u)dlnPCi>+!PLj6y{$^{z!$?)?s5V)yEKKAqtCyl>)|^cb!m zOM-M8CYECYEw41Fu^Pm7U3 z9^u(a9iyG6wS5ur`^6q5@LrDh(pt#`?-`B=*|GBxjGX#ZpRsm_rKYy=YVdi=()ndu zk1UbY*T4SQKM$ht*M|H#tZ4CW(_?0~yD{{Pw<_)IdRGF9ty`4!qY2^Zsb6#DnA6A- zd9rzvNX;a&6OztONi?2dkdOvPKuGF+Y5XSa5E0Mb1FyY87Ys)%Nd6l4+)`FJ)3dmN znB%EnFh(lGJNA`G%PRH)ltQc(80788PIFVo3t;jvcq~s}rE{%UnX9<_FP(!IP!A+y zk?matsOCM`IV7AK$8@QF$vsO}$R1Z5Z6mLG zv>#+_yoMYA02%eoHW9Kdz%B{E#YSh_87{2AoNXBSYq}S)7fW_kyTgUslpy5s)K+w} zF=j@>=LJe&kH)laz;Jf9&wO>Pxue26?&x{rt#v^qxtr5eR%y30so<(C`$PVIiz9+e_)W8Va4)~spzOp^{5aAS(u zIxAbM?p$LWRajR>5~oa@@x?(qkjFSt)1LLKdJ-a3eeSr&O3S$c`haoQH7upMpDtLQ z!1t&?Juov?if4W}%|o+=;~DC6N1P@UoPRnt5#4B$ zHQK74SnW#)3}kbPX^|y#P@c%ZRSp}T z-Kk=;e1gN|=NYXA8|67tp;+YOsi_tuBw!Jb){V6@PQ@!&_DlD74D_v-0oVY-r>Lre z91t;(4{r5jHF}~ zVp`pcxZW&+4`v+&7PBoj(N{y%#pD}H{`p5kTOmsZ9eBwCxI3{XhpRTwRA)H$uHQ+y zTj*9`dUY73{t3t9Jq~$R?^4n&*7iJden$O*09!NoOQ zp?{PX$;K<1@NTLEi5cKvaNRktR`B1$tyji(DISq%_mfNaVug1%N{2NSc{5iRvN`r~ zEIW{{;qTJ6^bKfU#pFAU=y*Nb+OVe6r_!$GwY!Q)CXJaHB~q*yb;zu5ww*IpUD*i4 zVEfeQ)zMVs)3-y=uJ*cy13aEH(z0g+w(P46=N;=-$wl>|&Yegk?Z*bH$!5F4sU>+V zao^U5D`<6cC#jvhmnC-r+i}fBxtHbY3CSeYwz1om8DKdEqL$NWW+%&RbMH{t)H{`o zgf}@Lcg;m4rcKxYWAv*A+>ww8=N!{g$%Kah?L6ldle$+lQM(x&vJ}G(I}uuz&H~1y z6VD`ds_@&L%yG3q{LNd2ClUo8QV*qJChT-ZDA~7|u)xS3o$*_Cm!B+UNnCy5-nrXU zZ!BPPeesIhvH8aJ1gEYrc&=GblT)rVlRA4#{K=ioyQWCywPU#`dJw2M+%gSwG0JyF z+qhAR(v8e<77B~k^D!u;Zhrs9$GeM?di=>iT1hPcN5>z ztlOw^j80erPDd0#sR6B!)_6>*<${{USv(1%^4_(;nR zewCyq<%vhRX~7314#uiWY_cI@4_}+N z71>T!TC;|5zK1VymB0v~`0j*o!A<23`X&PdKrQVng(rYfo3^0s)-b5&-5+l|WEU;^Zf=iaXO zGxl!!8EF7O02{Y)&0K&502Kj;%bfJ58*{ymbCZl>rGgFu0rK?(jMg(Yj4bR}idRPxz%lKC&{YeYbqnS(3b^Zz_4EBtu!LQ-F{Jt91eGLrJPOIX z`IxXc0Of|>Ptexo>c$Qgat}Ce^_z6A>yi#Y$Uu0lW1;BMrE{O2d~h2qynq(7=gB7+ z1pC&l+&?P?%H(o$(y3f3upz>d00oCy(lX`H^=aYnxruWV7X%PldJ3a*hap&nBy{gv zS0XeU_Z_*&P%;H&&a3x!lEnS&bgr0A;;V*MGhPA|jDW!4W|)z)9fV|pImKFF5Mw+q zKBqM3pxO=r$nJaBd}n2;^BBB6t~%Zv#yICccQt-HH<3o(amLo~Ot*{$O~WnM*0kdr z*>iwMBacs7Ii2)AcBDB`1U99%khoPOW4NsgXj{vC5IG!TrH(Q|Q_2o^4&tuc4fqO6 zMg~dSiqFlQ6Sq);*Uc z9JRUC2&Jkq&9eeAfd2r*bIA1Km&*A}OaneM$6?;IUeVkJ11E2;4_X$`hx@xgAd}Pq z?^53~vo?ogE6MW8y7b2&R97(W+$`#+n(T_1y%bjVG8Zb79ch`rS9JS z3u;YR#1L=bsZcs&oY57p-pUe3W7id`ZB&OUO5>@=T8=ndc-xG7j=t2JR|J_HQ8ANg zCj$+G&086E01Tdbe=1asqU0x2lkO_VlrpSN;16H%td5kLAxm|L;Ejiz_vuqXAMbZ6 z^cf!crZh!lFR->r00W%W>m>6^WNrWuPI>#y=7(?Dgr>pYf>FNy0(7k z9sARC_*F;E(DWqs?N;?s_G=kkNn_bp)}1uxH56+)k);PYJrT(Gm&R~u7j0)8izVX_ zLT%CT<9*@(02CcU@mLujED1cH{{U5X{v+`e zQ`qTRl1P$8B6I-ZJ7T_~l_f?tTc4lfF%repb8k+EmTNkDY1)jjf>-9?`%=Rv?!g~; za2wXQylWJ5?7e`3vMzWT3Vkb@hC?6+g2S-ly1dRC=xynD>>Ma;9OoqTu7BbhE69?e zIc}phZ6+4vuml`>^sJu|NG_qtegMZOnwO~7r!xi9pb@#;y|YkE0c@!t9%)?pP6!zk z$z%+;3*V`yYiMYl#u*A{4T>7&f{f&hcJENI1Y`r&n8zca$n~eP4N3gMq-P`n-i5l! z8R^tjQ!W7quc)RMBm>_$q&ryA8i3DSFdZq6d`KZ&k4mAu^(UWSS`>qVa&b?fSh}}T z44ucGywkqg!AH%z9nDc^IW&2MCu2xfWyZdFSmfj$)eN!&fwe_eW+VfgQf}aIPADCT zizZZbu7=WY?5#91w&`vGP=C6;&2yH~?wNCw>zcPc$-0zrgi*CddsBN^irSq8mGck@ zIRmA4UJ+llTn)n@^!Kkd(~)I$8Nl|hOYr6`?Z(~+9Fy9fiCoS{ajR=74xUhg5;Ver z$3Nj;J?pnGsOz%Ho!gtBuTAluu(rBeD#*aFBOcY}dK67_sTK-djyS2+$ZFA7XWk$1 zOOM(9A0PZnJ}T8MeEl~>Rhdz_Up)QK%NehwKj5+cHj_d9o-_{*Lgfy>tfEL2vHQ4` zz6kWrE7<=4;Ge$=7vZPCJsw$L@^7_e7jteOF$eC~$zSkVyYkxK!ksy?(QUi9E896y zTh?~>S43xqPD#!6W~b~|@m?(#;NFpCa;#D$5s1)Ws08Dl=Dmww@!hVYr!>~Li7DhX zQT(NSh_4U*ko*s6sC+Q7wYemTHps5Y_X#}nUb*8h+1l$$)2=lQCsZ-X{Y##hxsJ;iO+IERIQ&a`eZcuOrv>Cs`S7=2=xTSSxY`T=7)8 z-kGahTU}Ys0Uvz^QGxCop{_D(3(LnP$&YyIBP9Mb>C)2Xoarw!nehjS8dhcVS7Mxu zb@~%f=uIW$>`9PAD&j>0KQFkhxO_KTh7(9uRdK*5S2a@OMY_>iNZ|xR20@Gy)7H9d zqJ*6HISD4!v|HmXmBYkiKPJ}3MPOWLHXb39$h?g$FWrgrmwlV>Xr!DMK0Xi{RBRmy9N{VuH+vU*Swd$>PI88^vx|WlyeT?8b5LQh5 zq#lNk6gt~O6b$Io0y0qNHDg)TZZ1%nC1+(E5_?xOVp~zX4D1Ri&&(^wej!7d%MqwzBbikRQvgjZHEOh+m8L~>)(oAC%4e_nWfq%kr#Ol z(;r&+S5o+iZ>IRJ^Ix}UlWQ}w?(2@6`ikgrjk#B;rXDFTX*H`iJQ3kx;a?Bl-E_RP zm=;_B{C6YTzLV0m%_rk8!i{UfGPj=hmJE?dtGJ0k%8~RUzA%sCB)&4%HGA7v5&fg* zniK>A{WJ8%d(Z62;&$-Qi6dtN?1os-D)YFXPtLm{r3opfIYm{cD7ES8e7yyv@S(H0 zS2uR<(8!^1Lm?pkJXC>q9l?usBN)Yd5A9vxRPaZ~oqh{{lTOv6O-|e|8S^-N9^BWI z+u4L&qyV7c9Q76SmcH!yXw6#b4T=HI(~NVT{{Wp_hS+&yKfG>mame-*9s9Qz7R02a51md+L zMG@zc263J~xvtuANosR8Vax0 z1Kyk3$mN=AQl_P+yc&F)a3qm?4nXc}$^1T|{bB9%Wmn*WP1ho=rjHIz_=i9ASl#Co?pQSc71YnYWohmtrT=o>wFL92< zjN=*YQIWwtM^jH2b_bv|fdY~-l6q!~_7V`T^xd}tog878fuF*aRObVydYUXOc>YwH z9>^`XMIaz#gIT~UkzE)Ft4#c*(-BRC+Qwb1x}_v}|Gl6H6FCXSjC)y}}Va$7k$ z&H?F93^wlEc{!~4ro`D_x_RcLX+&U>cZgZY9^4i04kGe2%Tn?9YvfzyO#dp3i8??3natY*& zX1vDUU6cO+_32-sY2QO{#nvBcv`dK8VHc9UPu8+LEv+?#{!wGGjtD&~sI}XuY3&OT zaywTCs9QFjdh4`|9x9sbR9^8tT|k~QBJw*CRp)@I9CYdJR6G%@t@Xc=BZ9+#4R6gB zeqsounKJBVK)YNL0UfG&Wt!6B9YV?cyQrKxu;Anzii%|Nm~O}6S{hZD)nyj!-dSbg z&p>I%MrTsaC+ZjMuIcg9!5U_*3`;H4UnR~utco$uv9GJ4_*0=jfi*7;YPL~LX{bcW zIyeV#BEKyE0ALS^n*RX9kBfisjYV)phNgVKEzS_Q=ttJSSY*`Z@kW<5x|3~T0l$PtCG1G+&#hPHTV(n{{Z1F@4+97o+a>Y;xQU^(}_ejtiJ={kn% zi%m~Sp4uoexmrdTQTo@(b~o*3IOlFS_O9l`Q%n6krwrkGn&eI09de4b(Z<}{NucUM zMgkBSPCD1nUjhCv>b?TjtaTkKb%IUXB_#pM5rd5M;=BXIQoYI|l6ORKze?5cR;(hL zH8NuzaoVQ6DAbFLwqvC!MJBgL=?BLjgFY7c!SFj(_=n-EV{76K8WC}G8gjDd0OuU^ z=D$4k*j9Tqn>i{ok=)nNz5)HEej)rh@SdTeczaN@{>aoKD=n?e0q{u1?Dgqh6{*1T z+e#;p%Pa0@Yyp-hCb7fDRH>?R>9g_^SDTu9@9K1Z0lf3A3N8s?AM5X3J;jPMWFu#; zYtOzK%JAIArBnrNg-Op9>knl9X55BupFv7V#h$GnekVIEwmEN=M;NFjvE$`d1GafJ z)IFZ$A(S3)8z0W0HZB#uP}l%u)EmkPY;zB$1!Wxd$>$lNEV9jyr~}fvfu|Q=nKxtm z-_nvTF%XfBw6#cT2Rbaut{HKT#-&SNoR#HI1Y@Oa{{UugEP8XuIp&45DS^tbOjJo5 zL0GE<3m6Hv=57uu?X+24gpi}KJ?YWgC~`5L>%1T5SM8u1*p*TPbnjk$M4is+cj!qJ zTn2SG0|YOvYuiD%s67gR3v*Q9M2(Z?{o4NkGg@#acmp9wBe50c&2rkurB7YS64)We zSg|LMZ(6@;Y_4(}ws`4HfP$pp0(czutJZe>3@#UvKDEx?wr5gHp<>qEBXu8mvEwV= ztV<9i`D^n6cMy70lX8W@RpW!yVx@hhf|G`BNl}50)i%4h-ip>Uni9xLrqBj??@upGjtyveDcOSq#!2XECV@bFWOm#JKPv2m&UwQ^izz5jjFIza9Zght46cE|8R&Ws z#$)z?;BZpVp*^c?K3@!fhN``p4Y_~^9Ff|#OhA#8 zF{+$n)~npaLiu}wgWU8U)zKO0V?Sh`tjKFL+kuVG*Ko~IxwlqK00GAvc*pqG+?Ko* z#!tEVt3G(bpd%oIzy~?}D*2u4jg=VRV+P_D`BbX{cv8F?8W9@>bpz&lR<0Y+evT<8x;xjw=phPh+7wks^XNhCB>&lTj4&l&MTGW&o;; z_3K#oa14^l0V5~d>07A1k7kRp&0Jf8aItSSn|6&HA1*0wJoV5gxYo_p3w?lI62_|lEy zv^wfWE*B}!7$`CV`qNZx#@<2cR$c<@wv<3BhY0($*x zM$z&H6nnO79vhLpLn#290&8B*U6KHJLGuHOnW-dsGJ4qAu?1Lk13aGfy>AZo4y5h+ zb6Iw11|-}u-`cjJVxcw_2r+^ilj~fS9=AFvQj^@CHB*7G4mcokYGDX@4n9>pfKNe5 zXrz<#9ofOjtH~OY!GOR6k%N<1%3CCNs#esdw&N@B?^W*N2qY@GJ@%d}VMre_10-M! za%!Z-BvuMB*_YO;EKMlvW6B(>Yzw=&TB^}tm&gs!@x^J)Xi)A&41c@Qt1vqOz#I@V zGen|_gRw?fcY+Dy+tb#f^1vmE?QiybRk;z7a(3sYN2Nw^qjxIU!9KaEOQI{ET}=6v zSY!syae>Avx0b8BX(55g=Cr3qUzS2hT=f1~st*andY|EA(vwLQdyP4ek`4|yQaSq6 z<8Wf2oDq^p?^Vex${Rd#K&v+LsSXB9V2}q;D;Al&TDf5&!-3RihUi6TS;7!6%DD%y z>rq)@`T>k`Ta0^((})5@VO5nuIUeGeAqlgrbY$bvw4mXaNu>#dt1c$gxWm+0K+$Fs#?pX&B~U4l~79-NzUrtV@7M9=^3%N6b_V zdehvrAx!h0I*@8P2e0W?UNRI8SRT~`quY^4Wmd^8j?~6EH6*;8W15Sc9QL4SGI8u_ z;5Ko`N{=}Lo~_Tl0u+!q<2dU~-cJ;aFlbT8=9ug+QN=W5W1MEB;d;>!-s(TjDIi3p z{J3&H@!(_9mM(e4MJWbDj(sWduH*NxPo*1)o0?$S!IuEnbEU~E$M=9xD~8j@k`b7L zkJh?)bv7`pai-tKuSATRxd)4Ga{&y&i0N8?0Q@ZeGWd<5>8L+>cYPFU4p$m6|!aeu*Pygu5e!|wy@=($}p zQFvuwGl3xEC-A76ZjPIOEd0>+c%0vJmbso(%sK6v7|ZC>L;izoLk>fm4iGx%2zsrZbDB-J@{cf_7GlJJ-joRN@BZ?~_m zD=%E}EVnB0szo9{-dQ^Rb6m*2K4VE52-A)f*JU_K@3G4&%V?gH;Yn>Y_@KSi3~Hz{ zHxftF70rA^)-3&CRP}rQgYIard~$#!Y&^gEjoh zspgXGbC7>Z@s)kDWDMuIuCK!PY`01?z#vy9B9fB1-Gjt9%_j6d$oOTgE4F2klx-{( zyPEnZz}ov`bI8WgesYcSh4tpXO894bR4NeC@Gu7eoOQ25)&3=0>DFmy47;L24b+63 z9{69Sc(A*khuK1^sRGySJMp^v#FCE+_-<=h;!KN~nXw~h_(!HI;eQpTs%Lm7^Ca@v zpvFKXb^6u@t?>fp@8Tx6sZVml?HAHAC^#E4^8SLoGT+A%)5ZQtW})B#2K1PqlsH`#4CxD)C;KZyZ|$$0~N= z1`h|@iui-YkEUMSM|Eo&tct_u9mh;p)nBq-j1G?_oy;;U_cq|5UZqBJfNE;gge^N8 zVO2)uO8WFW{{Y*r?g#k6pxQ#p#@|b8ec0=@hJPbpKEPH{7#V&PeN@N}k>TyaBb3I3quauISUU(B{kyV=oSw=`b#a|;wY!bbU%Y%Y)2tAmNFq$`^N)!yr12K3G^@G%)+Isfj@hE^o<1q^ z=yErglU>SKoS*Ac>H0kPk`0PmJxJ!gFTmdjFFZ>+m4KAaa(NZ)x);GcKS9|g#>OZ& zHhX)0YPnKco>QpyNb^sIUkuek-(LKYAl`5}`c=P(-ZG9CYiK0eh`Rt@K3eI1BKYPl zBG3Ci$VC#SLlonu^{<@u&1PHsmUd!Ksqb00%v4piBh>X-Zlz`{dEgG%tce`4C#N)x zHW=q5dr}9>bvQn>BxtP3k%&Tf9Qt;qvE0CPJ#$IB0QEnG1cuHJ&DbAGHry=GV6eg9 zgTbLj*4jR9;F?l52L5!N#~l9vo+^Y*w~@|ERI3IP8NuugM+0$?xC6CZRt19*oO@E( zG-OcjQ-Ux$eQRe*h)E*kfJyFaILDlvbK4bSAkavJatA+3O$*TKZ&9sajlm@JHCydq z<1PvHroGe8r!tapf%(=$Ugk6;VD$ZHZCc^8(Cjo@lrA#Eis&51;I`e^I3)4KaJntX zNw$tbARc(G(WEj)2nqqzNU9PEU*ZOLVZph6wakpo4 z&OAS;ww->BlY&66WkN4>_@+z%!;Dvl-az(OOr&6`;=Nnp?xrua-z~ml9u7Td>JnF1 zC!P|W2VT_68Ja7lAYnDcLO6MA;!rRf~0;``p4iuivv# z=s`*<&t9jWQcf+aX!bs^Td1!sEj&SEh6O>CDErEK*X0lV76-zRXnz8YC0p26Wu^}n$~$Ee0f6&|T%P|2J&dI8(sxW55wB_|O#3QtdZ^qb}T zO}e<}jz9f%jh)9WH8K1rVAi^;GICgk;Pf@_G3ooDhJ1+}sL323dh!hpPqS(XyK3$u zCAwF(>6XhatR^fra1PVJtm^kYEF-dMl)l2O&OTr{Y~#H~`c^pFr_`U~9<|XWpDe_2 zo(TT5^s;3jfx$fceih1|w>#}~pBi$3xFN@(=bDCHHH)3Aka;JjE2@smouoEFKQQf4 zn~V~_sNc6Z&ougi|r3+bdC&b))1XQg&iY2`^QrC4K(b*LJ{db5Gg zCqDj_R=%T+(aNo_2Mi5K4Z9ggW*;^<$0D~TvoNmWgRV#;JXL3bLmXfO-1Qa1QZ1d- zwkt;-?Xm4amMxYU;;zC%o?GP{61{4+)58M5e@c-ZjCmvH=L8z_Y9^0DosCE&210X{ z9Anb7>U2>_f9f0bZ)WSoJ?0I~F|miMU~KQ>7Xj1kUjf=jDA6E{*_q$?F5U}rh} zO-~%V@VO#FPdVx5wUd%SIfi8RskQU9pl&LzYzfl+liJwOMh_I6s9l;Uh4CFBs=N$*WSJ zDnUgBhw*k5S)&eA9zg#0YT7Mc;!4P&ELaCBT%3H}2&xW%J4jg^x1#i|YluSO9d|GB zDd~>YNt5Qv0;AP0HlX~-C)TYP{O4nX9Sf(2VKVp6#zDB!T?@u@^) zNQa`gQAxWM%iWRMKnp2#7#}FlrEl9s9^_7gsLOC`E)b?Y!4+691Rg$>uVm52Mpx!; zoOG;`yCufT#VA0JcE;S<$UoMtAS|JsK-w~MR8@g~2-*e#&N!_|6c$c*2IB|Q-m&&p zTAIQ|1uBxB!(Ux*F>4ZQBEP1Q2iqXU$}SJ*yam7CnDji9@OF z)2nSxCi=(BjN=15;F{)c;#lQ5P%^j$dRKpa0;pi1G6S?T3|Bd*+F|g68++q}ShZ(+ z9gezdQ=5`7Mlpfhj`dPT%V2`Lxd8XAE2xN&Alkm9)fr=0$v{aedCz*P22cht4r(Q)h7@TzGqSS0C08sk!@u}e)wR-; z3K(u|4CDD%8*OlQL;)p$t($qyF(+OEkz5k9-1Xr?QQaL!o>{(NPdt0pg}GTUxxfp@ z*15Q^3}rVGL14J+k8@h_U8vo)caefQ#y#shTcObCw2j62R}9Jl$36c53X0-Ask?v= zL*AhmD(i#8u%Jvf=OYd2OX-XoL8tNhfJO+&cYTWAeQH!TCUR= zm=*!>KH>YnTF%1ea@2FVlV}HaIU_wPyB)~Vau^(Bj)s(6G^_v_J(PE|i|!k+Ko}cMbIn_0dQCYR zuw@9r+>AiM{RL>nGQzx{Eb zx7DNE+lk(yzRHwUIHeQw+SMIdIZLU#;yrz1)MpTrgZB$_kEJ?IakV`#rSt>!89LUPEs++N0|H#h0Unv9@a(1F zmeOnza#N0TT+XlJS+BKS(#XxU{JA_2YQJTDiPGmdf8qesc5G_nwHqh2W(4OXpQp8Q z`hx=GW1m{@b(rJ5MV=$c8D*{mTSks@56kqV(k*OKkBJ9ElSu3Yt(knm(2hymY1msCa;_UB zV~k?2TtXD{j2@Lyi392DNfd~H#V<}rQA^da)KX+n09faqIixtc!H~K#~e|xir1GOb;j<4Kb3u({{RHi zv5s$!I$gx7cEcOUA3YClE8>ij!yJnHpZ*EKXvy&&D}Znk6M_yhbNs7HOW(1}iP8t` z^`*#?%rds%MnM(wpZpX9!D;aa;0KCy;*TZFFq^0pbMvPl*U^?2&mEvHyGB0>^WTYg z7TS)Pbrk5XB!%O{bU7HV$y2hC=SF<8O#F2HpL|awejj@_c1KPCJq9}0v02=`$pD?( zc**KBUp`&w*Ix>LGWdtXjJr{8*`ik+QI0_e@vlm?)pZ9T?Z7`cu~ZM=Tn7Xas_$rr*U&| zU4bpTC#`eBoRZYqtyHxp)NfK?TY|vyLB>U7T;HPS3%EBOYL?opg)sLfIV5@3C<6tYei-W0YNQ{V-=&djJ>0J z8fkp9C`5!3I4z#FpLYkA#J4#es$&$8;RZn*mOUxAjpW2bvX�n#M^%*&1_Q8RYE% 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 U)TTw=tivogI5l>*#uwE8*<&4X;s5{u literal 0 HcmV?d00001 From b25b16dcccb44e0e1b38bbe838252725718bbdb0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 26 Oct 2018 01:09:45 +0200 Subject: [PATCH 0135/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index b837be70..ab7772b6 100755 --- a/detect.py +++ b/detect.py @@ -75,7 +75,7 @@ def detect(opt): img_detections.extend(detections) imgs.extend(img_paths) - print('Batch %d... (Done %.3fs)' % (batch_i, time.time() - prev_time)) + print('Batch %d... (Done %.3f s)' % (batch_i, time.time() - prev_time)) prev_time = time.time() # Bounding-box colors From 553254bbd6b86a858f94d5dd56e201f61a26ec68 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 27 Oct 2018 00:10:40 +0200 Subject: [PATCH 0136/2595] updates --- .github/ISSUE_TEMPLATE/bug_report.md | 29 ----------------------- .github/ISSUE_TEMPLATE/feature_request.md | 17 ------------- 2 files changed, 46 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 07bbcbbf..00000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve - ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Browser [e.g. chrome, safari] - - Version [e.g. 22] - -**Additional context** -Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 066b2d92..00000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project - ---- - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. From 0ae90d0fb7531a71efe51277af7bf96cd346939c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 27 Oct 2018 00:42:34 +0200 Subject: [PATCH 0137/2595] rename /checkpoints to /weights --- detect.py | 2 +- test.py | 2 +- train.py | 12 ++++++------ utils/gcp.sh | 2 +- utils/utils.py | 2 +- {checkpoints => weights}/download_yolov3_weights.sh | 0 6 files changed, 10 insertions(+), 10 deletions(-) rename {checkpoints => weights}/download_yolov3_weights.sh (100%) diff --git a/detect.py b/detect.py index ab7772b6..09b45994 100755 --- a/detect.py +++ b/detect.py @@ -33,7 +33,7 @@ def detect(opt): # Load model model = Darknet(opt.cfg, opt.img_size) - weights_path = 'checkpoints/yolov3.pt' + weights_path = 'weights/yolov3.pt' if weights_path.endswith('.weights'): # saved in darknet format load_weights(model, weights_path) else: # endswith('.pt'), saved in pytorch format diff --git a/test.py b/test.py index e8ca3163..1fe87a77 100644 --- a/test.py +++ b/test.py @@ -8,7 +8,7 @@ parser = argparse.ArgumentParser() parser.add_argument('-batch_size', type=int, default=32, help='size of each image batch') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='path to model config file') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='path to data config file') -parser.add_argument('-weights_path', type=str, default='checkpoints/yolov3.pt', help='path to weights file') +parser.add_argument('-weights_path', type=str, default='weights/yolov3.pt', help='path to weights file') parser.add_argument('-class_path', type=str, default='data/coco.names', help='path to class label file') parser.add_argument('-iou_thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('-conf_thres', type=float, default=0.5, help='object confidence threshold') diff --git a/train.py b/train.py index 5a746407..a1d8f7d1 100644 --- a/train.py +++ b/train.py @@ -28,7 +28,7 @@ if cuda: def main(opt): - os.makedirs('checkpoints', exist_ok=True) + os.makedirs('weights', exist_ok=True) # Configure run data_config = parse_data_config(opt.data_config_path) @@ -48,7 +48,7 @@ def main(opt): start_epoch = 0 best_loss = float('inf') if opt.resume: - checkpoint = torch.load('checkpoints/latest.pt', map_location='cpu') + checkpoint = torch.load('weights/latest.pt', map_location='cpu') model.load_state_dict(checkpoint['model']) if torch.cuda.device_count() > 1: @@ -175,15 +175,15 @@ def main(opt): 'best_loss': best_loss, 'model': model.state_dict(), 'optimizer': optimizer.state_dict()} - torch.save(checkpoint, 'checkpoints/latest.pt') + torch.save(checkpoint, 'weights/latest.pt') # Save best checkpoint if best_loss == loss_per_target: - os.system('cp checkpoints/latest.pt checkpoints/best.pt') + os.system('cp weights/latest.pt weights/best.pt') - # Save backup checkpoints every 5 epochs + # Save backup weights every 5 epochs if (epoch > 0) & (epoch % 5 == 0): - os.system('cp checkpoints/latest.pt checkpoints/backup' + str(epoch) + '.pt') + os.system('cp weights/latest.pt weights/backup' + str(epoch) + '.pt') # Save final model dt = time.time() - t0 diff --git a/utils/gcp.sh b/utils/gcp.sh index 559bcdb1..f4acdf6f 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Start -sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 train.py -img_size 416 -epochs 160 +sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 train.py -img_size 416 # Resume python3 train.py -img_size 416 -resume 1 diff --git a/utils/utils.py b/utils/utils.py index 8b525437..0f26542f 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -410,7 +410,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): return output -def strip_optimizer_from_checkpoint(filename='checkpoints/best.pt'): +def strip_optimizer_from_checkpoint(filename='weights/best.pt'): # Strip optimizer from *.pt files for lighter files (reduced by 2/3 size) import torch a = torch.load(filename, map_location='cpu') diff --git a/checkpoints/download_yolov3_weights.sh b/weights/download_yolov3_weights.sh similarity index 100% rename from checkpoints/download_yolov3_weights.sh rename to weights/download_yolov3_weights.sh From 332fe002b39e3b0406100475f34d808e2ddcb1ec Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 30 Oct 2018 14:58:26 +0100 Subject: [PATCH 0138/2595] rename /checkpoints to /weights --- models.py | 10 +++++++--- train.py | 2 ++ utils/datasets.py | 2 +- weights/download_yolov3_weights.sh | 1 + 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/models.py b/models.py index 44904203..6183dbfc 100755 --- a/models.py +++ b/models.py @@ -266,8 +266,12 @@ class Darknet(nn.Module): return sum(output) if is_training else torch.cat(output, 1) -def load_weights(self, weights_path): - """Parses and loads the weights stored in 'weights_path'""" +def load_weights(self, weights_path, cutoff=-1): + # Parses and loads the weights stored in 'weights_path' + # @:param cutoff - save layers between 0 and cutoff (cutoff = -1 -> all are saved) + + if weights_path.endswith('darknet53.conv.74'): + cutoff = 75 # Open the weights file fp = open(weights_path, 'rb') @@ -281,7 +285,7 @@ def load_weights(self, weights_path): fp.close() ptr = 0 - for i, (module_def, module) in enumerate(zip(self.module_defs, self.module_list)): + for i, (module_def, module) in enumerate(zip(self.module_defs[:cutoff], self.module_list[:cutoff])): if module_def['type'] == 'convolutional': conv_layer = module[0] if module_def['batch_normalize']: diff --git a/train.py b/train.py index a1d8f7d1..fe9f56e1 100644 --- a/train.py +++ b/train.py @@ -73,6 +73,8 @@ def main(opt): del checkpoint # current, saved else: + load_weights(model, 'weights/darknet53.conv.74') # load darknet53 weights (optional) + if torch.cuda.device_count() > 1: print('Using ', torch.cuda.device_count(), ' GPUs') model = nn.DataParallel(model) diff --git a/utils/datasets.py b/utils/datasets.py index 0ecdfa5e..37982fbf 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -67,7 +67,7 @@ class load_images_and_labels(): # for training self.img_files = file.readlines() if platform == 'darwin': # MacOS (local) - self.img_files = [path.replace('\n', '').replace('/images', '/Users/glennjocher/Downloads/DATA/coco/images') + self.img_files = [path.replace('\n', '').replace('/images', '/Users/glennjocher/Downloads/data/coco/images') for path in self.img_files] else: # linux (gcp cloud) self.img_files = [path.replace('\n', '').replace('/images', '../coco/images') for path in self.img_files] diff --git a/weights/download_yolov3_weights.sh b/weights/download_yolov3_weights.sh index c46580c5..aadcb453 100644 --- a/weights/download_yolov3_weights.sh +++ b/weights/download_yolov3_weights.sh @@ -1,4 +1,5 @@ #!/bin/bash +wget https://pjreddie.com/media/files/darknet53.conv.74 wget https://pjreddie.com/media/files/yolov3.weights wget https://storage.googleapis.com/ultralytics/yolov3.pt From ed0390d0b5997be626b65f5e74a0dfacc7037a36 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 30 Oct 2018 14:58:56 +0100 Subject: [PATCH 0139/2595] initialize from darknet53 --- train.py | 1 - 1 file changed, 1 deletion(-) diff --git a/train.py b/train.py index fe9f56e1..cbee6a75 100644 --- a/train.py +++ b/train.py @@ -74,7 +74,6 @@ def main(opt): del checkpoint # current, saved else: load_weights(model, 'weights/darknet53.conv.74') # load darknet53 weights (optional) - if torch.cuda.device_count() > 1: print('Using ', torch.cuda.device_count(), ' GPUs') model = nn.DataParallel(model) From 26c52f9485d2a1616d5c53b0eaa50ef5e4f4382b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 30 Oct 2018 15:18:52 +0100 Subject: [PATCH 0140/2595] initialize from darknet53 --- train.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index cbee6a75..3236786d 100644 --- a/train.py +++ b/train.py @@ -72,8 +72,13 @@ def main(opt): best_loss = checkpoint['best_loss'] del checkpoint # current, saved + else: - load_weights(model, 'weights/darknet53.conv.74') # load darknet53 weights (optional) + # Initialize model with darknet53 weights (optional) + if not os.path.isfile('weights/darknet53.conv.74'): + os.system('wget https://pjreddie.com/media/files/darknet53.conv.74 -P /weights') + load_weights(model, 'weights/darknet53.conv.74') + if torch.cuda.device_count() > 1: print('Using ', torch.cuda.device_count(), ' GPUs') model = nn.DataParallel(model) From 741626c55bbbc13436a2e49e8b3e1dbd5711fbd0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 30 Oct 2018 15:20:52 +0100 Subject: [PATCH 0141/2595] initialize from darknet53 --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 3236786d..9f9798f9 100644 --- a/train.py +++ b/train.py @@ -76,7 +76,7 @@ def main(opt): else: # Initialize model with darknet53 weights (optional) if not os.path.isfile('weights/darknet53.conv.74'): - os.system('wget https://pjreddie.com/media/files/darknet53.conv.74 -P /weights') + os.system('wget https://pjreddie.com/media/files/darknet53.conv.74 -P weights') load_weights(model, 'weights/darknet53.conv.74') if torch.cuda.device_count() > 1: From 0c89122aabe75f22ff337287e3eeb6933a82c5da Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 4 Nov 2018 18:19:07 +0100 Subject: [PATCH 0142/2595] updates --- utils/gcp.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index f4acdf6f..0643ef30 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -7,25 +7,25 @@ sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolo python3 train.py -img_size 416 -resume 1 # Detect -gsutil cp gs://ultralytics/fresh9_5_e201.pt yolov3/checkpoints +gsutil cp gs://ultralytics/fresh9_5_e201.pt yolov3/weights python3 detect.py # Test -python3 test.py -img_size 416 -weights_path checkpoints/latest.pt -conf_thres 0.5 +python3 test.py -img_size 416 -weights_path weights/latest.pt -conf_thres 0.5 # Download and Test sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 -cd yolov3/checkpoints +cd yolov3/weights wget https://pjreddie.com/media/files/yolov3.weights cd .. -python3 test.py -img_size 416 -weights_path checkpoints/backup5.pt -nms_thres 0.45 +python3 test.py -img_size 416 -weights_path weights/backup5.pt -nms_thres 0.45 # Download and Resume sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 -cd yolov3/checkpoints +cd yolov3/weights wget https://storage.googleapis.com/ultralytics/yolov3.pt cp yolov3.pt latest.pt cd .. python3 train.py -img_size 416 -batch_size 16 -epochs 1 -resume 1 -python3 test.py -img_size 416 -weights_path checkpoints/latest.pt -conf_thres 0.5 +python3 test.py -img_size 416 -weights_path weights/latest.pt -conf_thres 0.5 From b352f93f19c7af6f942dd9acb796096879220459 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 5 Nov 2018 08:57:51 +0100 Subject: [PATCH 0143/2595] updates --- data/get_coco_dataset.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/data/get_coco_dataset.sh b/data/get_coco_dataset.sh index 8a892633..529aafd8 100755 --- a/data/get_coco_dataset.sh +++ b/data/get_coco_dataset.sh @@ -1,5 +1,4 @@ #!/bin/bash - # CREDIT: https://github.com/pjreddie/darknet/tree/master/scripts/get_coco_dataset.sh # Clone COCO API From dc7b58bb3c46c88e0f631528ef3ad274fee4126d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 5 Nov 2018 09:07:15 +0100 Subject: [PATCH 0144/2595] add multi_scale train option to argparser --- models.py | 4 ++-- train.py | 20 ++++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/models.py b/models.py index 6183dbfc..3a6f5b13 100755 --- a/models.py +++ b/models.py @@ -209,9 +209,9 @@ class YOLOLayer(nn.Module): class Darknet(nn.Module): """YOLOv3 object detection model""" - def __init__(self, config_path, img_size=416): + def __init__(self, cfg_path, img_size=416): super(Darknet, self).__init__() - self.module_defs = parse_model_config(config_path) + self.module_defs = parse_model_config(cfg_path) self.module_defs[0]['height'] = img_size self.hyperparams, self.module_list = create_modules(self.module_defs) self.img_size = img_size diff --git a/train.py b/train.py index 9f9798f9..4d87934e 100644 --- a/train.py +++ b/train.py @@ -6,12 +6,13 @@ from utils.datasets import * from utils.utils import * parser = argparse.ArgumentParser() -parser.add_argument('-epochs', type=int, default=68, help='number of epochs') +parser.add_argument('-epochs', type=int, default=100, help='number of epochs') parser.add_argument('-batch_size', type=int, default=16, help='size of each image batch') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='data config file path') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each image dimension') parser.add_argument('-resume', default=False, help='resume training flag') +parser.add_argument('-multi_scale', default=True, help='train at random img_size 320-608') opt = parser.parse_args() print(opt) @@ -39,7 +40,7 @@ def main(opt): train_path = '../coco/trainvalno5k.part' # Initialize model - model = Darknet(opt.cfg, opt.img_size) + model = Darknet(opt.cfg, opt.img_size if opt.multi_scale is False else 608) # Get dataloader dataloader = load_images_and_labels(train_path, batch_size=opt.batch_size, img_size=opt.img_size, augment=True) @@ -100,20 +101,19 @@ def main(opt): epoch += start_epoch # Multi-Scale YOLO Training - # img_size = random.choice(range(10, 20)) * 32 # 320 - 608 pixels - # dataloader = load_images_and_labels(train_path, batch_size=opt.batch_size, img_size=img_size, augment=True) - # print('Running this epoch with image size %g' % img_size) + if opt.multi_scale: + img_size = random.choice(range(10, 20)) * 32 # 320 - 608 pixels + dataloader = load_images_and_labels(train_path, batch_size=opt.batch_size, img_size=img_size, augment=True) + print('Running Epoch %g at multi_scale img_size %g' % (epoch, img_size)) # Update scheduler (automatic) # scheduler.step() - # Update scheduler (manual) - if epoch < 54: + # Update scheduler (manual) at 0, 54, 61 epochs to 1e-3, 1e-4, 1e-5 + if epoch < 50: lr = 1e-3 - elif epoch < 61: - lr = 1e-4 else: - lr = 1e-5 + lr = 1e-3 for g in optimizer.param_groups: g['lr'] = lr From 2ccf68cf96416faca899e4af8be911ac56271be9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 5 Nov 2018 09:08:48 +0100 Subject: [PATCH 0145/2595] add multi_scale train option to argparser --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 4d87934e..cb9eb39d 100644 --- a/train.py +++ b/train.py @@ -12,7 +12,7 @@ parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each image dimension') parser.add_argument('-resume', default=False, help='resume training flag') -parser.add_argument('-multi_scale', default=True, help='train at random img_size 320-608') +parser.add_argument('-multi_scale', default=True, help='train at random img_size 320-608') # ensure memory for 608 size opt = parser.parse_args() print(opt) From 587097affb9fc1fe9892f063877eda7ce1a46998 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 5 Nov 2018 09:20:18 +0100 Subject: [PATCH 0146/2595] update LR scheduler --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index cb9eb39d..59ca365e 100644 --- a/train.py +++ b/train.py @@ -113,7 +113,7 @@ def main(opt): if epoch < 50: lr = 1e-3 else: - lr = 1e-3 + lr = 1e-4 for g in optimizer.param_groups: g['lr'] = lr From 77469a5268fc3f08fbef7f0211a1cc72b39199ba Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 5 Nov 2018 23:17:53 +0100 Subject: [PATCH 0147/2595] update multi-scale training --- train.py | 13 +++---------- utils/datasets.py | 8 +++++++- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/train.py b/train.py index 59ca365e..e558882a 100644 --- a/train.py +++ b/train.py @@ -7,12 +7,11 @@ from utils.utils import * parser = argparse.ArgumentParser() parser.add_argument('-epochs', type=int, default=100, help='number of epochs') -parser.add_argument('-batch_size', type=int, default=16, help='size of each image batch') +parser.add_argument('-batch_size', type=int, default=2, help='size of each image batch') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='data config file path') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') -parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each image dimension') +parser.add_argument('-img_size', type=int, default=32 * 19, help='size of each image dimension') parser.add_argument('-resume', default=False, help='resume training flag') -parser.add_argument('-multi_scale', default=True, help='train at random img_size 320-608') # ensure memory for 608 size opt = parser.parse_args() print(opt) @@ -40,7 +39,7 @@ def main(opt): train_path = '../coco/trainvalno5k.part' # Initialize model - model = Darknet(opt.cfg, opt.img_size if opt.multi_scale is False else 608) + model = Darknet(opt.cfg, opt.img_size) # Get dataloader dataloader = load_images_and_labels(train_path, batch_size=opt.batch_size, img_size=opt.img_size, augment=True) @@ -100,12 +99,6 @@ def main(opt): for epoch in range(opt.epochs): epoch += start_epoch - # Multi-Scale YOLO Training - if opt.multi_scale: - img_size = random.choice(range(10, 20)) * 32 # 320 - 608 pixels - dataloader = load_images_and_labels(train_path, batch_size=opt.batch_size, img_size=img_size, augment=True) - print('Running Epoch %g at multi_scale img_size %g' % (epoch, img_size)) - # Update scheduler (automatic) # scheduler.step() diff --git a/utils/datasets.py b/utils/datasets.py index 37982fbf..4038d738 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -100,7 +100,13 @@ class load_images_and_labels(): # for training ia = self.count * self.batch_size ib = min((self.count + 1) * self.batch_size, self.nF) - height = self.height + if self.augment is True: + # Multi-Scale YOLO Training + height = random.choice(range(10, 20)) * 32 # 320 - 608 pixels + else: + # Fixed-Scale YOLO Training + height = self.height + print(height) img_all = [] labels_all = [] From 0096bb4dd586a2dd4a41384457222ef84863985e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 5 Nov 2018 23:20:21 +0100 Subject: [PATCH 0148/2595] update multi-scale training --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index e558882a..ce086f7c 100644 --- a/train.py +++ b/train.py @@ -7,7 +7,7 @@ from utils.utils import * parser = argparse.ArgumentParser() parser.add_argument('-epochs', type=int, default=100, help='number of epochs') -parser.add_argument('-batch_size', type=int, default=2, help='size of each image batch') +parser.add_argument('-batch_size', type=int, default=16, help='size of each image batch') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='data config file path') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('-img_size', type=int, default=32 * 19, help='size of each image dimension') From 3afb29ad48885d303107526a391d4273b3241f56 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 5 Nov 2018 23:20:45 +0100 Subject: [PATCH 0149/2595] update multi-scale training --- utils/datasets.py | 1 - 1 file changed, 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 4038d738..6b16166d 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -106,7 +106,6 @@ class load_images_and_labels(): # for training else: # Fixed-Scale YOLO Training height = self.height - print(height) img_all = [] labels_all = [] From 19ccb41eafc60276e79293eafc9bc482d2a986ad Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 5 Nov 2018 23:28:10 +0100 Subject: [PATCH 0150/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index ce086f7c..15f412a9 100644 --- a/train.py +++ b/train.py @@ -24,7 +24,7 @@ torch.manual_seed(0) if cuda: torch.cuda.manual_seed(0) torch.cuda.manual_seed_all(0) - torch.backends.cudnn.benchmark = True + # torch.backends.cudnn.benchmark = True def main(opt): From 6e5da1ce274abf9d22815eac04ae6aa16a2209b8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 5 Nov 2018 23:32:36 +0100 Subject: [PATCH 0151/2595] updates --- train.py | 10 +++++----- utils/utils.py | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/train.py b/train.py index 15f412a9..6c0ead81 100644 --- a/train.py +++ b/train.py @@ -7,7 +7,7 @@ from utils.utils import * parser = argparse.ArgumentParser() parser.add_argument('-epochs', type=int, default=100, help='number of epochs') -parser.add_argument('-batch_size', type=int, default=16, help='size of each image batch') +parser.add_argument('-batch_size', type=int, default=4, help='size of each image batch') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='data config file path') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('-img_size', type=int, default=32 * 19, help='size of each image dimension') @@ -128,10 +128,10 @@ def main(opt): loss = model(imgs.to(device), targets, requestPrecision=True) loss.backward() - # accumulated_batches = 4 # accumulate gradient for 4 batches before stepping optimizer - # if ((i+1) % accumulated_batches == 0) or (i == len(dataloader) - 1): - optimizer.step() - optimizer.zero_grad() + accumulated_batches = 4 # accumulate gradient for 4 batches before stepping optimizer + if ((i+1) % accumulated_batches == 0) or (i == len(dataloader) - 1): + optimizer.step() + optimizer.zero_grad() # Compute running epoch-means of tracked metrics ui += 1 diff --git a/utils/utils.py b/utils/utils.py index 0f26542f..277b6a70 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -436,11 +436,11 @@ def plot_results(): import matplotlib.pyplot as plt plt.figure(figsize=(16, 8)) s = ['X', 'Y', 'Width', 'Height', 'Objectness', 'Classification', 'Total Loss', 'Precision', 'Recall'] - for f in ('results.txt', + for f in ('results_orig.txt','results.txt', ): results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 9, 10]).T for i in range(9): plt.subplot(2, 5, i + 1) - plt.plot(results[i, :], marker='.', label=f) + plt.plot(results[i, :250], marker='.', label=f) plt.title(s[i]) plt.legend() From edfad8095d753757763279c97a9297fdde16722d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 5 Nov 2018 23:34:26 +0100 Subject: [PATCH 0152/2595] updates --- train.py | 4 ++-- utils/gcp.sh | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index 6c0ead81..d64257fb 100644 --- a/train.py +++ b/train.py @@ -7,7 +7,7 @@ from utils.utils import * parser = argparse.ArgumentParser() parser.add_argument('-epochs', type=int, default=100, help='number of epochs') -parser.add_argument('-batch_size', type=int, default=4, help='size of each image batch') +parser.add_argument('-batch_size', type=int, default=8, help='size of each image batch') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='data config file path') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('-img_size', type=int, default=32 * 19, help='size of each image dimension') @@ -128,7 +128,7 @@ def main(opt): loss = model(imgs.to(device), targets, requestPrecision=True) loss.backward() - accumulated_batches = 4 # accumulate gradient for 4 batches before stepping optimizer + accumulated_batches = 2 # accumulate gradient for 4 batches before stepping optimizer if ((i+1) % accumulated_batches == 0) or (i == len(dataloader) - 1): optimizer.step() optimizer.zero_grad() diff --git a/utils/gcp.sh b/utils/gcp.sh index 0643ef30..fd89d383 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -1,13 +1,13 @@ #!/usr/bin/env bash # Start -sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 train.py -img_size 416 +sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 train.py -batch_size 8 # Resume -python3 train.py -img_size 416 -resume 1 +python3 train.py -resume 1 # Detect -gsutil cp gs://ultralytics/fresh9_5_e201.pt yolov3/weights +gsutil cp gs://ultralytics/yolov3.pt yolov3/weights python3 detect.py # Test From 8d7660b43802b0d1097e3bd01546d2531935f497 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 7 Nov 2018 15:17:00 +0100 Subject: [PATCH 0153/2595] updates --- utils/gcp.sh | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index fd89d383..435ba248 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Start -sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 train.py -batch_size 8 +sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 train.py # Resume python3 train.py -resume 1 @@ -14,18 +14,15 @@ python3 detect.py python3 test.py -img_size 416 -weights_path weights/latest.pt -conf_thres 0.5 # Download and Test -sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 -cd yolov3/weights -wget https://pjreddie.com/media/files/yolov3.weights -cd .. +sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 +wget https://pjreddie.com/media/files/yolov3.weights -P weights python3 test.py -img_size 416 -weights_path weights/backup5.pt -nms_thres 0.45 # Download and Resume -sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 -cd yolov3/weights -wget https://storage.googleapis.com/ultralytics/yolov3.pt -cp yolov3.pt latest.pt -cd .. +sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 +wget https://storage.googleapis.com/ultralytics/yolov3.pt -O weights/latest.pt python3 train.py -img_size 416 -batch_size 16 -epochs 1 -resume 1 python3 test.py -img_size 416 -weights_path weights/latest.pt -conf_thres 0.5 +# Copy latest.pt to bucket +gsutil cp yolov3/weights/latest.pt gs://ultralytics From 364da386f78ca4be2e7d10076874057ea8a07b5f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 8 Nov 2018 00:50:36 +0100 Subject: [PATCH 0154/2595] updates --- data/get_coco_dataset.sh | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/data/get_coco_dataset.sh b/data/get_coco_dataset.sh index 529aafd8..4edd2b99 100755 --- a/data/get_coco_dataset.sh +++ b/data/get_coco_dataset.sh @@ -2,13 +2,10 @@ # CREDIT: https://github.com/pjreddie/darknet/tree/master/scripts/get_coco_dataset.sh # Clone COCO API -git clone https://github.com/pdollar/coco -cd coco - -mkdir images -cd images +git clone https://github.com/pdollar/coco && cd coco # Download Images +mkdir images && cd images wget -c https://pjreddie.com/media/files/train2014.zip wget -c https://pjreddie.com/media/files/val2014.zip From a6d69cefe0727bc9d29c2308519a422c69f30739 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 8 Nov 2018 12:26:23 +0100 Subject: [PATCH 0155/2595] updates --- train.py | 25 ++++++++++++------------- utils/datasets.py | 3 ++- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/train.py b/train.py index d64257fb..6c518b99 100644 --- a/train.py +++ b/train.py @@ -7,7 +7,7 @@ from utils.utils import * parser = argparse.ArgumentParser() parser.add_argument('-epochs', type=int, default=100, help='number of epochs') -parser.add_argument('-batch_size', type=int, default=8, help='size of each image batch') +parser.add_argument('-batch_size', type=int, default=16, help='size of each image batch') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='data config file path') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('-img_size', type=int, default=32 * 19, help='size of each image dimension') @@ -24,7 +24,7 @@ torch.manual_seed(0) if cuda: torch.cuda.manual_seed(0) torch.cuda.manual_seed_all(0) - # torch.backends.cudnn.benchmark = True + torch.backends.cudnn.benchmark = False def main(opt): @@ -62,9 +62,8 @@ def main(opt): # p.requires_grad = False # Set optimizer - # optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, model.parameters())) - optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-3, - momentum=.9, weight_decay=5e-4, nesterov=True) + optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, model.parameters())) + # optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-3, momentum=.9, weight_decay=5e-4, nesterov=True) start_epoch = checkpoint['epoch'] + 1 if checkpoint['optimizer'] is not None: @@ -85,8 +84,8 @@ def main(opt): model.to(device).train() # Set optimizer - # optimizer = torch.optim.Adam(model.parameters(), lr=1e-4, weight_decay=5e-4) - optimizer = torch.optim.SGD(model.parameters(), lr=1e-3, momentum=.9, weight_decay=5e-4, nesterov=True) + optimizer = torch.optim.Adam(model.parameters(), lr=1e-4, weight_decay=5e-4) + # optimizer = torch.optim.SGD(model.parameters(), lr=1e-3, momentum=.9, weight_decay=5e-4, nesterov=True) # Set scheduler # scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[54, 61], gamma=0.1) @@ -104,9 +103,9 @@ def main(opt): # Update scheduler (manual) at 0, 54, 61 epochs to 1e-3, 1e-4, 1e-5 if epoch < 50: - lr = 1e-3 - else: lr = 1e-4 + else: + lr = 1e-5 for g in optimizer.param_groups: g['lr'] = lr @@ -128,10 +127,10 @@ def main(opt): loss = model(imgs.to(device), targets, requestPrecision=True) loss.backward() - accumulated_batches = 2 # accumulate gradient for 4 batches before stepping optimizer - if ((i+1) % accumulated_batches == 0) or (i == len(dataloader) - 1): - optimizer.step() - optimizer.zero_grad() + # accumulated_batches = 1 # accumulate gradient for 4 batches before stepping optimizer + # if ((i+1) % accumulated_batches == 0) or (i == len(dataloader) - 1): + optimizer.step() + optimizer.zero_grad() # Compute running epoch-means of tracked metrics ui += 1 diff --git a/utils/datasets.py b/utils/datasets.py index 6b16166d..a356c106 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -100,7 +100,8 @@ class load_images_and_labels(): # for training ia = self.count * self.batch_size ib = min((self.count + 1) * self.batch_size, self.nF) - if self.augment is True: + multi_scale = False + if multi_scale and self.augment: # Multi-Scale YOLO Training height = random.choice(range(10, 20)) * 32 # 320 - 608 pixels else: From c8e4a19879059f2faf8367c2e6fe92d5ca2838f0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 8 Nov 2018 12:27:14 +0100 Subject: [PATCH 0156/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 6c518b99..9d2b1a48 100644 --- a/train.py +++ b/train.py @@ -10,7 +10,7 @@ parser.add_argument('-epochs', type=int, default=100, help='number of epochs') parser.add_argument('-batch_size', type=int, default=16, help='size of each image batch') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='data config file path') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') -parser.add_argument('-img_size', type=int, default=32 * 19, help='size of each image dimension') +parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each image dimension') parser.add_argument('-resume', default=False, help='resume training flag') opt = parser.parse_args() print(opt) From 2463030d6c8d36d8c45770706825b57adf72ae93 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 8 Nov 2018 12:28:19 +0100 Subject: [PATCH 0157/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 9d2b1a48..fbadd933 100644 --- a/train.py +++ b/train.py @@ -24,7 +24,7 @@ torch.manual_seed(0) if cuda: torch.cuda.manual_seed(0) torch.cuda.manual_seed_all(0) - torch.backends.cudnn.benchmark = False + torch.backends.cudnn.benchmark = True def main(opt): From 46a4de77cbba403e15745bb8d38ce69f87976bd1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 8 Nov 2018 12:29:35 +0100 Subject: [PATCH 0158/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index fbadd933..f44590cf 100644 --- a/train.py +++ b/train.py @@ -93,7 +93,7 @@ def main(opt): model_info(model) t0, t1 = time.time(), time.time() mean_recall, mean_precision = 0, 0 - print('%10s' * 16 % ( + print('%11s' * 16 % ( 'Epoch', 'Batch', 'x', 'y', 'w', 'h', 'conf', 'cls', 'total', 'P', 'R', 'nTargets', 'TP', 'FP', 'FN', 'time')) for epoch in range(opt.epochs): epoch += start_epoch @@ -151,7 +151,7 @@ def main(opt): if k.sum() > 0: mean_recall = recall[k].mean() - s = ('%10s%10s' + '%10.3g' * 14) % ( + s = ('%11s%11s' + '%11.3g' * 14) % ( '%g/%g' % (epoch, opt.epochs - 1), '%g/%g' % (i, len(dataloader) - 1), rloss['x'], rloss['y'], rloss['w'], rloss['h'], rloss['conf'], rloss['cls'], rloss['loss'], mean_precision, mean_recall, model.losses['nT'], model.losses['TP'], From 538e5741c6d280bda7a140f597167eecf18d763b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 8 Nov 2018 12:42:39 +0100 Subject: [PATCH 0159/2595] updates --- utils/gcp.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 435ba248..86193404 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -11,7 +11,7 @@ gsutil cp gs://ultralytics/yolov3.pt yolov3/weights python3 detect.py # Test -python3 test.py -img_size 416 -weights_path weights/latest.pt -conf_thres 0.5 +python3 test.py -img_size 416 -weights_path weights/latest.pt -conf_thres 0.2 # Download and Test sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 From 664cbaab09f372d5eb600ff1f69cdbd41483e275 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 9 Nov 2018 16:44:12 +0100 Subject: [PATCH 0160/2595] Adam optimizer --- train.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index f44590cf..d935fb17 100644 --- a/train.py +++ b/train.py @@ -62,8 +62,9 @@ def main(opt): # p.requires_grad = False # Set optimizer - optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, model.parameters())) - # optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-3, momentum=.9, weight_decay=5e-4, nesterov=True) + # optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, model.parameters())) + optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-3, momentum=.9, + weight_decay=5e-4, nesterov=True) start_epoch = checkpoint['epoch'] + 1 if checkpoint['optimizer'] is not None: @@ -84,8 +85,8 @@ def main(opt): model.to(device).train() # Set optimizer - optimizer = torch.optim.Adam(model.parameters(), lr=1e-4, weight_decay=5e-4) - # optimizer = torch.optim.SGD(model.parameters(), lr=1e-3, momentum=.9, weight_decay=5e-4, nesterov=True) + # optimizer = torch.optim.Adam(model.parameters(), lr=1e-4, weight_decay=5e-4) + optimizer = torch.optim.SGD(model.parameters(), lr=1e-3, momentum=.9, weight_decay=5e-4, nesterov=True) # Set scheduler # scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[54, 61], gamma=0.1) From 5177f3e7a0215c20895472f1e57137476ee649cb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 9 Nov 2018 16:48:55 +0100 Subject: [PATCH 0161/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index d935fb17..a1a443dd 100644 --- a/train.py +++ b/train.py @@ -120,7 +120,7 @@ def main(opt): # SGD burn-in if (epoch == 0) & (i <= 1000): - lr = 1e-3 * (i / 1000) ** 4 + lr = 1e-4 * (i / 1000) ** 4 for g in optimizer.param_groups: g['lr'] = lr From b1a27353389f1cc59ba312c43d67d35e96fa4ddb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 9 Nov 2018 16:58:32 +0100 Subject: [PATCH 0162/2595] updates --- train.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/train.py b/train.py index a1a443dd..92a879a1 100644 --- a/train.py +++ b/train.py @@ -63,8 +63,7 @@ def main(opt): # Set optimizer # optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, model.parameters())) - optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-3, momentum=.9, - weight_decay=5e-4, nesterov=True) + optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters())) start_epoch = checkpoint['epoch'] + 1 if checkpoint['optimizer'] is not None: From 4bae1d0f75e348969a1accf2505c22a6617ee0ab Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 9 Nov 2018 17:03:26 +0100 Subject: [PATCH 0163/2595] updates --- train.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 92a879a1..dff2dca0 100644 --- a/train.py +++ b/train.py @@ -63,7 +63,8 @@ def main(opt): # Set optimizer # optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, model.parameters())) - optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters())) + optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters()), + lr=1e-3, momentum=.9, weight_decay=5e-4) start_epoch = checkpoint['epoch'] + 1 if checkpoint['optimizer'] is not None: @@ -85,7 +86,7 @@ def main(opt): # Set optimizer # optimizer = torch.optim.Adam(model.parameters(), lr=1e-4, weight_decay=5e-4) - optimizer = torch.optim.SGD(model.parameters(), lr=1e-3, momentum=.9, weight_decay=5e-4, nesterov=True) + optimizer = torch.optim.SGD(model.parameters(), lr=1e-3, momentum=.9, weight_decay=5e-4) # Set scheduler # scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[54, 61], gamma=0.1) From 98484bbe2f02f18e0311f60c04db4b5dd7cf0e3e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 9 Nov 2018 17:18:37 +0100 Subject: [PATCH 0164/2595] updates --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 3a6f5b13..ab059cfa 100755 --- a/models.py +++ b/models.py @@ -172,8 +172,8 @@ class YOLOLayer(nn.Module): # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) lconf = k * BCEWithLogitsLoss(pred_conf, mask.float()) - lcls = k * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) - # lcls = k * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) + # lcls = (k / 10) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + lcls = k * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) From 966bc16d1a4b4763bf5c7d1f329da47722acf411 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 10 Nov 2018 00:53:53 +0100 Subject: [PATCH 0165/2595] updates --- models.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/models.py b/models.py index ab059cfa..b3c9a197 100755 --- a/models.py +++ b/models.py @@ -170,10 +170,10 @@ class YOLOLayer(nn.Module): lh = k * MSELoss(h[mask], th[mask]) # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) - lconf = k * BCEWithLogitsLoss(pred_conf, mask.float()) + lconf = (k * 10) * BCEWithLogitsLoss(pred_conf, mask.float()) - # lcls = (k / 10) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) - lcls = k * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) + lcls = (k / 10) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + # lcls = k * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) From e04bb75ff1a77dc3d62f06d85d0a98cb9eb024a7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 10 Nov 2018 00:54:55 +0100 Subject: [PATCH 0166/2595] updates --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index b3c9a197..c924aa0b 100755 --- a/models.py +++ b/models.py @@ -139,8 +139,8 @@ class YOLOLayer(nn.Module): # Training if targets is not None: - MSELoss = nn.MSELoss(size_average=True) - BCEWithLogitsLoss = nn.BCEWithLogitsLoss(size_average=True) + MSELoss = nn.MSELoss() + BCEWithLogitsLoss = nn.BCEWithLogitsLoss() CrossEntropyLoss = nn.CrossEntropyLoss() if requestPrecision: From 9f54f638ecd544e6f9ddd0e56e20567aa5413d1d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 10 Nov 2018 19:50:06 +0100 Subject: [PATCH 0167/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4c9a48ef..481915c2 100755 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ # Introduction This directory contains software developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information on Ultralytics projects please visit: -http://www.ultralytics.com +http://www.ultralytics.com. # Description From 34bc12d2ad1e1b9ff8ece97ae771b25886c0ecb0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 11 Nov 2018 18:58:41 +0100 Subject: [PATCH 0168/2595] updates --- utils/utils.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 277b6a70..7d9ae3f0 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -436,11 +436,12 @@ def plot_results(): import matplotlib.pyplot as plt plt.figure(figsize=(16, 8)) s = ['X', 'Y', 'Width', 'Height', 'Objectness', 'Classification', 'Total Loss', 'Precision', 'Recall'] - for f in ('results_orig.txt','results.txt', - ): + for f in ('results.txt',): results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 9, 10]).T for i in range(9): plt.subplot(2, 5, i + 1) plt.plot(results[i, :250], marker='.', label=f) plt.title(s[i]) - plt.legend() + if i == 0: + plt.legend() + From 9dbc3ec1c4ab7b2396742eebf6f9d3f76f5f54d9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 13 Nov 2018 11:20:01 +0000 Subject: [PATCH 0169/2595] updates --- utils/gcp.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 86193404..6037b7f2 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -11,7 +11,7 @@ gsutil cp gs://ultralytics/yolov3.pt yolov3/weights python3 detect.py # Test -python3 test.py -img_size 416 -weights_path weights/latest.pt -conf_thres 0.2 +python3 test.py -img_size 416 -weights_path weights/latest.pt -conf_thres 0.1 # Download and Test sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 @@ -26,3 +26,7 @@ python3 test.py -img_size 416 -weights_path weights/latest.pt -conf_thres 0.5 # Copy latest.pt to bucket gsutil cp yolov3/weights/latest.pt gs://ultralytics + +# Copy latest.pt from bucket +gsutil cp gs://ultralytics/latest.pt yolov3/weights/latest.pt + From 45c55677239a8c65caed83cc0025a84a06b490a5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 14 Nov 2018 15:14:41 +0000 Subject: [PATCH 0170/2595] mAP recorded during training --- test.py | 180 +++++++++++++++++++++++++------------------------ train.py | 19 ++++-- utils/gcp.sh | 2 +- utils/utils.py | 2 +- 4 files changed, 107 insertions(+), 96 deletions(-) diff --git a/test.py b/test.py index 1fe87a77..dbe3eb7b 100644 --- a/test.py +++ b/test.py @@ -11,7 +11,7 @@ parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help parser.add_argument('-weights_path', type=str, default='weights/yolov3.pt', help='path to weights file') parser.add_argument('-class_path', type=str, default='data/coco.names', help='path to class label file') parser.add_argument('-iou_thres', type=float, default=0.5, help='iou threshold required to qualify as detected') -parser.add_argument('-conf_thres', type=float, default=0.5, help='object confidence threshold') +parser.add_argument('-conf_thres', type=float, default=0.3, help='object confidence threshold') parser.add_argument('-nms_thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') parser.add_argument('-n_cpu', type=int, default=0, help='number of cpu threads to use during batch generation') parser.add_argument('-img_size', type=int, default=416, help='size of each image dimension') @@ -21,112 +21,118 @@ print(opt) cuda = torch.cuda.is_available() device = torch.device('cuda:0' if cuda else 'cpu') -# Configure run -data_config = parse_data_config(opt.data_config_path) -num_classes = int(data_config['classes']) -if platform == 'darwin': # MacOS (local) - test_path = data_config['valid'] -else: # linux (cloud, i.e. gcp) - test_path = '../coco/5k.part' -# Initiate model -model = Darknet(opt.cfg, opt.img_size) +def main(opt): + # Configure run + data_config = parse_data_config(opt.data_config_path) + nC = int(data_config['classes']) # number of classes (80 for COCO) + if platform == 'darwin': # MacOS (local) + test_path = data_config['valid'] + else: # linux (cloud, i.e. gcp) + test_path = '../coco/5k.part' -# Load weights -if opt.weights_path.endswith('.weights'): # darknet format - load_weights(model, opt.weights_path) -elif opt.weights_path.endswith('.pt'): # pytorch format - checkpoint = torch.load(opt.weights_path, map_location='cpu') - model.load_state_dict(checkpoint['model']) - del checkpoint + # Initiate model + model = Darknet(opt.cfg, opt.img_size) -model.to(device).eval() + # Load weights + if opt.weights_path.endswith('.weights'): # darknet format + load_weights(model, opt.weights_path) + elif opt.weights_path.endswith('.pt'): # pytorch format + checkpoint = torch.load(opt.weights_path, map_location='cpu') + model.load_state_dict(checkpoint['model']) + del checkpoint -# Get dataloader -# dataset = load_images_with_labels(test_path) -# dataloader = torch.utils.data.DataLoader(dataset, batch_size=opt.batch_size, shuffle=False, num_workers=opt.n_cpu) -dataloader = load_images_and_labels(test_path, batch_size=opt.batch_size, img_size=opt.img_size) + model.to(device).eval() -print('Compute mAP...') + # Get dataloader + # dataset = load_images_with_labels(test_path) + # dataloader = torch.utils.data.DataLoader(dataset, batch_size=opt.batch_size, shuffle=False, num_workers=opt.n_cpu) + dataloader = load_images_and_labels(test_path, batch_size=opt.batch_size, img_size=opt.img_size) -nC = 80 # number of classes -correct = 0 -targets = None -outputs, mAPs, TP, confidence, pred_class, target_class = [], [], [], [], [], [] -AP_accum, AP_accum_count = np.zeros(nC), np.zeros(nC) -for batch_i, (imgs, targets) in enumerate(dataloader): - imgs = imgs.to(device) + print('Compute mAP...') - with torch.no_grad(): - output = model(imgs) - output = non_max_suppression(output, conf_thres=opt.conf_thres, nms_thres=opt.nms_thres) + mAP = 0 + outputs, mAPs, TP, confidence, pred_class, target_class = [], [], [], [], [], [] + AP_accum, AP_accum_count = np.zeros(nC), np.zeros(nC) + for batch_i, (imgs, targets) in enumerate(dataloader): + imgs = imgs.to(device) - # Compute average precision for each sample - for sample_i in range(len(targets)): - correct = [] + with torch.no_grad(): + output = model(imgs) + output = non_max_suppression(output, conf_thres=opt.conf_thres, nms_thres=opt.nms_thres) - # Get labels for sample where width is not zero (dummies) - annotations = targets[sample_i] - # Extract detections - detections = output[sample_i] + # Compute average precision for each sample + for sample_i in range(len(targets)): + correct = [] - if detections is None: - # If there are no detections but there are annotations mask as zero AP - if annotations.size(0) != 0: + # Get labels for sample where width is not zero (dummies) + annotations = targets[sample_i] + # Extract detections + detections = output[sample_i] + + if detections is None: + # If there are no detections but there are annotations mask as zero AP + if annotations.size(0) != 0: + mAPs.append(0) + continue + + # Get detections sorted by decreasing confidence scores + detections = detections[np.argsort(-detections[:, 4])] + + # If no annotations add number of detections as incorrect + if annotations.size(0) == 0: + # correct.extend([0 for _ in range(len(detections))]) mAPs.append(0) - continue + continue + else: + target_cls = annotations[:, 0] - # Get detections sorted by decreasing confidence scores - detections = detections[np.argsort(-detections[:, 4])] + # Extract target boxes as (x1, y1, x2, y2) + target_boxes = xywh2xyxy(annotations[:, 1:5]) + target_boxes *= opt.img_size - # If no annotations add number of detections as incorrect - if annotations.size(0) == 0: - target_cls = [] - # correct.extend([0 for _ in range(len(detections))]) - mAPs.append(0) - continue - else: - target_cls = annotations[:, 0] + detected = [] + for *pred_bbox, conf, obj_conf, obj_pred in detections: - # Extract target boxes as (x1, y1, x2, y2) - target_boxes = xywh2xyxy(annotations[:, 1:5]) - target_boxes *= opt.img_size + pred_bbox = torch.FloatTensor(pred_bbox).view(1, -1) + # Compute iou with target boxes + iou = bbox_iou(pred_bbox, target_boxes) + # Extract index of largest overlap + best_i = np.argmax(iou) + # If overlap exceeds threshold and classification is correct mark as correct + if iou[best_i] > opt.iou_thres and obj_pred == annotations[best_i, 0] and best_i not in detected: + correct.append(1) + detected.append(best_i) + else: + correct.append(0) - detected = [] - for *pred_bbox, conf, obj_conf, obj_pred in detections: + # Compute Average Precision (AP) per class + AP, AP_class = ap_per_class(tp=correct, conf=detections[:, 4], pred_cls=detections[:, 6], + target_cls=target_cls) - pred_bbox = torch.FloatTensor(pred_bbox).view(1, -1) - # Compute iou with target boxes - iou = bbox_iou(pred_bbox, target_boxes) - # Extract index of largest overlap - best_i = np.argmax(iou) - # If overlap exceeds threshold and classification is correct mark as correct - if iou[best_i] > opt.iou_thres and obj_pred == annotations[best_i, 0] and best_i not in detected: - correct.append(1) - detected.append(best_i) - else: - correct.append(0) + # Accumulate AP per class + AP_accum_count += np.bincount(AP_class, minlength=nC) + AP_accum += np.bincount(AP_class, minlength=nC, weights=AP) - # Compute Average Precision (AP) per class - AP, AP_class = ap_per_class(tp=correct, conf=detections[:, 4], pred_cls=detections[:, 6], target_cls=target_cls) + # Compute mean AP for this image + mAP = AP.mean() - # Accumulate AP per class - AP_accum_count += np.bincount(AP_class, minlength=nC) - AP_accum += np.bincount(AP_class, minlength=nC, weights=AP) + # Append image mAP to list + mAPs.append(mAP) - # Compute mean AP for this image - mAP = AP.mean() + # Print image mAP and running mean mAP + print( + '+ Sample [%d/%d] AP: %.4f (%.4f)' % (len(mAPs), len(dataloader) * opt.batch_size, mAP, np.mean(mAPs))) - # Append image mAP to list - mAPs.append(mAP) + # Print mAP per class + classes = load_classes(opt.class_path) # Extracts class labels from file + for i, c in enumerate(classes): + print('%15s: %-.4f' % (c, AP_accum[i] / AP_accum_count[i])) - # Print image mAP and running mean mAP - print('+ Sample [%d/%d] AP: %.4f (%.4f)' % (len(mAPs), len(dataloader) * opt.batch_size, mAP, np.mean(mAPs))) + # Print mAP + print('Mean Average Precision: %.4f' % np.mean(mAPs)) + return mAP -# Print mAP per class -classes = load_classes(opt.class_path) # Extracts class labels from file -for i, c in enumerate(classes): - print('%15s: %-.4f' % (c, AP_accum[i] / AP_accum_count[i])) -# Print mAP -print('Mean Average Precision: %.4f' % np.mean(mAPs)) +if __name__ == '__main__': + mAP = main(opt) diff --git a/train.py b/train.py index dff2dca0..dfe30c8f 100644 --- a/train.py +++ b/train.py @@ -1,5 +1,6 @@ import argparse import time +import test from models import * from utils.datasets import * @@ -103,10 +104,10 @@ def main(opt): # scheduler.step() # Update scheduler (manual) at 0, 54, 61 epochs to 1e-3, 1e-4, 1e-5 - if epoch < 50: - lr = 1e-4 - else: + if epoch > 50: lr = 1e-5 + else: + lr = 1e-4 for g in optimizer.param_groups: g['lr'] = lr @@ -160,10 +161,6 @@ def main(opt): t1 = time.time() print(s) - # Write epoch results - with open('results.txt', 'a') as file: - file.write(s + '\n') - # Update best loss loss_per_target = rloss['loss'] / rloss['nT'] if loss_per_target < best_loss: @@ -184,6 +181,14 @@ def main(opt): if (epoch > 0) & (epoch % 5 == 0): os.system('cp weights/latest.pt weights/backup' + str(epoch) + '.pt') + # Calculate mAP + test.opt.weights_path = 'weights/latest.pt' + mAP = test.main(test.opt) + + # Write epoch results + with open('results.txt', 'a') as file: + file.write(s + '%11.3g' % mAP + '\n') + # Save final model dt = time.time() - t0 print('Finished %g epochs in %.2fs (%.2fs/epoch)' % (epoch, dt, dt / (epoch + 1))) diff --git a/utils/gcp.sh b/utils/gcp.sh index 6037b7f2..691e1257 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -11,7 +11,7 @@ gsutil cp gs://ultralytics/yolov3.pt yolov3/weights python3 detect.py # Test -python3 test.py -img_size 416 -weights_path weights/latest.pt -conf_thres 0.1 +python3 test.py -img_size 416 -weights_path weights/latest.pt -conf_thres 0.5 # Download and Test sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 diff --git a/utils/utils.py b/utils/utils.py index 7d9ae3f0..314b12bf 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -435,7 +435,7 @@ def plot_results(): import numpy as np import matplotlib.pyplot as plt plt.figure(figsize=(16, 8)) - s = ['X', 'Y', 'Width', 'Height', 'Objectness', 'Classification', 'Total Loss', 'Precision', 'Recall'] + s = ['X', 'Y', 'Width', 'Height', 'Objectness', 'Classification', 'Total Loss', 'Precision', 'Recall', 'mAP'] for f in ('results.txt',): results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 9, 10]).T for i in range(9): From a17280ac72a05f27746cf3166b6302abb2d9b4a8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 15 Nov 2018 00:56:03 +0100 Subject: [PATCH 0171/2595] mAP recorded during training --- test.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test.py b/test.py index dbe3eb7b..3a896bfe 100644 --- a/test.py +++ b/test.py @@ -119,10 +119,10 @@ def main(opt): # Append image mAP to list mAPs.append(mAP) + mean_mAP = np.mean(mAPs) # Print image mAP and running mean mAP - print( - '+ Sample [%d/%d] AP: %.4f (%.4f)' % (len(mAPs), len(dataloader) * opt.batch_size, mAP, np.mean(mAPs))) + print('Image %d/%d AP: %.4f (%.4f)' % (len(mAPs), len(dataloader) * opt.batch_size, mAP, mean_mAP)) # Print mAP per class classes = load_classes(opt.class_path) # Extracts class labels from file @@ -130,8 +130,8 @@ def main(opt): print('%15s: %-.4f' % (c, AP_accum[i] / AP_accum_count[i])) # Print mAP - print('Mean Average Precision: %.4f' % np.mean(mAPs)) - return mAP + print('Mean Average Precision: %.4f' % mean_mAP) + return mean_mAP if __name__ == '__main__': From 1ea87c49c4e7ff368dfd31a7db4c4374b9ae7507 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 15 Nov 2018 00:57:15 +0100 Subject: [PATCH 0172/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index dfe30c8f..59d00b19 100644 --- a/train.py +++ b/train.py @@ -105,9 +105,9 @@ def main(opt): # Update scheduler (manual) at 0, 54, 61 epochs to 1e-3, 1e-4, 1e-5 if epoch > 50: - lr = 1e-5 - else: lr = 1e-4 + else: + lr = 1e-3 for g in optimizer.param_groups: g['lr'] = lr From a021f9711076c4eb954762d6292255bb37c56e1a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 15 Nov 2018 01:01:04 +0100 Subject: [PATCH 0173/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 59d00b19..842a56fa 100644 --- a/train.py +++ b/train.py @@ -121,7 +121,7 @@ def main(opt): # SGD burn-in if (epoch == 0) & (i <= 1000): - lr = 1e-4 * (i / 1000) ** 4 + lr = 1e-3 * (i / 1000) ** 4 for g in optimizer.param_groups: g['lr'] = lr From d2c5d7a5fd51458864f42d8a1ceec760ee43ebbd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 16 Nov 2018 20:01:38 +0100 Subject: [PATCH 0174/2595] updates --- models.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index c924aa0b..e174b2bb 100755 --- a/models.py +++ b/models.py @@ -101,6 +101,9 @@ class YOLOLayer(nn.Module): self.anchor_h = self.scaled_anchors[:, 1:2].view((1, nA, 1, 1)) self.weights = class_weights() + self.batch_count = 0 + self.loss_means = torch.zeros(6) + def forward(self, p, targets=None, requestPrecision=False): FT = torch.cuda.FloatTensor if p.is_cuda else torch.FloatTensor @@ -139,6 +142,7 @@ class YOLOLayer(nn.Module): # Training if targets is not None: + self.batch_count += 1 MSELoss = nn.MSELoss() BCEWithLogitsLoss = nn.BCEWithLogitsLoss() CrossEntropyLoss = nn.CrossEntropyLoss() @@ -181,7 +185,15 @@ class YOLOLayer(nn.Module): # lconf += k * BCEWithLogitsLoss(pred_conf[~mask], mask[~mask].float()) # Sum loss components - loss = lx + ly + lw + lh + lconf + lcls + balance_losses_flag = True + if balance_losses_flag: + loss_vec = torch.FloatTensor([lx.data, ly.data, lw.data, lh.data, lconf.data, lcls.data]) + self.loss_means = self.loss_means * 0.99 + loss_vec * 0.01 + k = 1 / self.loss_means.clone() + k /= k.sum() + loss = (lx * k[0] + ly * k[1] + lw * k[2] + lh * k[3] + lconf * k[4] + lcls * k[5]) * loss_vec.sum() + else: + loss = lx + ly + lw + lh + lconf + lcls # Sum False Positives from unassigned anchors i = torch.sigmoid(pred_conf[~mask]) > 0.5 From ed1067bfb51cf9278b907827e2767e376e894ad9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 16 Nov 2018 22:34:44 +0100 Subject: [PATCH 0175/2595] updates --- models.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/models.py b/models.py index e174b2bb..4eb65f37 100755 --- a/models.py +++ b/models.py @@ -101,7 +101,6 @@ class YOLOLayer(nn.Module): self.anchor_h = self.scaled_anchors[:, 1:2].view((1, nA, 1, 1)) self.weights = class_weights() - self.batch_count = 0 self.loss_means = torch.zeros(6) def forward(self, p, targets=None, requestPrecision=False): @@ -170,13 +169,13 @@ class YOLOLayer(nn.Module): if nM > 0: lx = k * MSELoss(x[mask], tx[mask]) ly = k * MSELoss(y[mask], ty[mask]) - lw = k * MSELoss(w[mask], tw[mask]) - lh = k * MSELoss(h[mask], th[mask]) + lw = (k * 0.7) * MSELoss(w[mask], tw[mask]) + lh = (k * 0.7) * MSELoss(h[mask], th[mask]) # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) - lconf = (k * 10) * BCEWithLogitsLoss(pred_conf, mask.float()) + lconf = (k * 5) * BCEWithLogitsLoss(pred_conf, mask.float()) - lcls = (k / 10) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + lcls = (k / 5) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) # lcls = k * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) @@ -185,7 +184,7 @@ class YOLOLayer(nn.Module): # lconf += k * BCEWithLogitsLoss(pred_conf[~mask], mask[~mask].float()) # Sum loss components - balance_losses_flag = True + balance_losses_flag = False if balance_losses_flag: loss_vec = torch.FloatTensor([lx.data, ly.data, lw.data, lh.data, lconf.data, lcls.data]) self.loss_means = self.loss_means * 0.99 + loss_vec * 0.01 From 0bc111f0b423f050db8790caa6f2306bcf0f2567 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 16 Nov 2018 22:35:44 +0100 Subject: [PATCH 0176/2595] updates --- models.py | 1 - 1 file changed, 1 deletion(-) diff --git a/models.py b/models.py index 4eb65f37..418a53db 100755 --- a/models.py +++ b/models.py @@ -141,7 +141,6 @@ class YOLOLayer(nn.Module): # Training if targets is not None: - self.batch_count += 1 MSELoss = nn.MSELoss() BCEWithLogitsLoss = nn.BCEWithLogitsLoss() CrossEntropyLoss = nn.CrossEntropyLoss() From 07f15b68d3250bfca7a2e1e21381e1286de7ad85 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 17 Nov 2018 00:32:28 +0100 Subject: [PATCH 0177/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 418a53db..2712c943 100755 --- a/models.py +++ b/models.py @@ -174,7 +174,7 @@ class YOLOLayer(nn.Module): # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) lconf = (k * 5) * BCEWithLogitsLoss(pred_conf, mask.float()) - lcls = (k / 5) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + lcls = (k / 20) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) # lcls = k * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) From dd7c3d245512d9a600dc1f5390a2b32606ba4034 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 17 Nov 2018 12:51:22 +0100 Subject: [PATCH 0178/2595] updates --- models.py | 24 ++++++++++++------------ utils/utils.py | 13 +++++++------ 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/models.py b/models.py index 2712c943..61c66dc1 100755 --- a/models.py +++ b/models.py @@ -123,16 +123,16 @@ class YOLOLayer(nn.Module): y = torch.sigmoid(p[..., 1]) # Center y # Width and height (yolo method) - w = p[..., 2] # Width - h = p[..., 3] # Height - width = torch.exp(w.data) * self.anchor_w - height = torch.exp(h.data) * self.anchor_h + # w = p[..., 2] # Width + # h = p[..., 3] # Height + # width = torch.exp(w.data) * self.anchor_w + # height = torch.exp(h.data) * self.anchor_h # Width and height (power method) - # w = torch.sigmoid(p[..., 2]) # Width - # h = torch.sigmoid(p[..., 3]) # Height - # width = ((w.data * 2) ** 2) * self.anchor_w - # height = ((h.data * 2) ** 2) * self.anchor_h + w = torch.sigmoid(p[..., 2]) # Width + h = torch.sigmoid(p[..., 3]) # Height + width = ((w.data * 2) ** 2) * self.anchor_w + height = ((h.data * 2) ** 2) * self.anchor_h # Add offset and scale with anchors (in grid space, i.e. 0-13) pred_boxes = FT(bs, self.nA, nG, nG, 4) @@ -168,13 +168,13 @@ class YOLOLayer(nn.Module): if nM > 0: lx = k * MSELoss(x[mask], tx[mask]) ly = k * MSELoss(y[mask], ty[mask]) - lw = (k * 0.7) * MSELoss(w[mask], tw[mask]) - lh = (k * 0.7) * MSELoss(h[mask], th[mask]) + lw = (k * 1) * MSELoss(w[mask], tw[mask]) + lh = (k * 1) * MSELoss(h[mask], th[mask]) # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) - lconf = (k * 5) * BCEWithLogitsLoss(pred_conf, mask.float()) + lconf = (k * 10) * BCEWithLogitsLoss(pred_conf, mask.float()) - lcls = (k / 20) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + lcls = (k / 10) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) # lcls = k * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) diff --git a/utils/utils.py b/utils/utils.py index 314b12bf..55e7e64a 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -259,12 +259,12 @@ def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG ty[b, a, gj, gi] = gy - gj.float() # Width and height (yolo method) - tw[b, a, gj, gi] = torch.log(gw / anchor_wh[a, 0]) - th[b, a, gj, gi] = torch.log(gh / anchor_wh[a, 1]) + # tw[b, a, gj, gi] = torch.log(gw / anchor_wh[a, 0]) + # th[b, a, gj, gi] = torch.log(gh / anchor_wh[a, 1]) # Width and height (power method) - # tw[b, a, gj, gi] = torch.sqrt(gw / anchor_wh[a, 0]) / 2 - # th[b, a, gj, gi] = torch.sqrt(gh / anchor_wh[a, 1]) / 2 + tw[b, a, gj, gi] = torch.sqrt(gw / anchor_wh[a, 0]) / 2 + th[b, a, gj, gi] = torch.sqrt(gh / anchor_wh[a, 1]) / 2 # One-hot encoding of label tcls[b, a, gj, gi, tc] = 1 @@ -436,8 +436,9 @@ def plot_results(): import matplotlib.pyplot as plt plt.figure(figsize=(16, 8)) s = ['X', 'Y', 'Width', 'Height', 'Objectness', 'Classification', 'Total Loss', 'Precision', 'Recall', 'mAP'] - for f in ('results.txt',): - results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 9, 10]).T + for f in ('results.txt', + ): + results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 9, 10]).T # column 16 is mAP for i in range(9): plt.subplot(2, 5, i + 1) plt.plot(results[i, :250], marker='.', label=f) From 1415a798fe214432adc68c90ae323accf2071359 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 17 Nov 2018 12:54:44 +0100 Subject: [PATCH 0179/2595] updates --- models.py | 20 ++++++++++---------- utils/utils.py | 8 ++++---- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/models.py b/models.py index 61c66dc1..b9e3f88d 100755 --- a/models.py +++ b/models.py @@ -123,16 +123,16 @@ class YOLOLayer(nn.Module): y = torch.sigmoid(p[..., 1]) # Center y # Width and height (yolo method) - # w = p[..., 2] # Width - # h = p[..., 3] # Height - # width = torch.exp(w.data) * self.anchor_w - # height = torch.exp(h.data) * self.anchor_h + w = p[..., 2] # Width + h = p[..., 3] # Height + width = torch.exp(w.data) * self.anchor_w + height = torch.exp(h.data) * self.anchor_h # Width and height (power method) - w = torch.sigmoid(p[..., 2]) # Width - h = torch.sigmoid(p[..., 3]) # Height - width = ((w.data * 2) ** 2) * self.anchor_w - height = ((h.data * 2) ** 2) * self.anchor_h + # w = torch.sigmoid(p[..., 2]) # Width + # h = torch.sigmoid(p[..., 3]) # Height + # width = ((w.data * 2) ** 2) * self.anchor_w + # height = ((h.data * 2) ** 2) * self.anchor_h # Add offset and scale with anchors (in grid space, i.e. 0-13) pred_boxes = FT(bs, self.nA, nG, nG, 4) @@ -174,8 +174,8 @@ class YOLOLayer(nn.Module): # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) lconf = (k * 10) * BCEWithLogitsLoss(pred_conf, mask.float()) - lcls = (k / 10) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) - # lcls = k * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) + # lcls = (k / 10) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + lcls = (k * 10) * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) diff --git a/utils/utils.py b/utils/utils.py index 55e7e64a..f62eca34 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -259,12 +259,12 @@ def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG ty[b, a, gj, gi] = gy - gj.float() # Width and height (yolo method) - # tw[b, a, gj, gi] = torch.log(gw / anchor_wh[a, 0]) - # th[b, a, gj, gi] = torch.log(gh / anchor_wh[a, 1]) + tw[b, a, gj, gi] = torch.log(gw / anchor_wh[a, 0]) + th[b, a, gj, gi] = torch.log(gh / anchor_wh[a, 1]) # Width and height (power method) - tw[b, a, gj, gi] = torch.sqrt(gw / anchor_wh[a, 0]) / 2 - th[b, a, gj, gi] = torch.sqrt(gh / anchor_wh[a, 1]) / 2 + # tw[b, a, gj, gi] = torch.sqrt(gw / anchor_wh[a, 0]) / 2 + # th[b, a, gj, gi] = torch.sqrt(gh / anchor_wh[a, 1]) / 2 # One-hot encoding of label tcls[b, a, gj, gi, tc] = 1 From aa895d2a07860b0f3a4bb4e8be9c7fda636e75ce Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 17 Nov 2018 14:37:36 +0100 Subject: [PATCH 0180/2595] updates --- models.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/models.py b/models.py index b9e3f88d..bdf1a882 100755 --- a/models.py +++ b/models.py @@ -168,14 +168,14 @@ class YOLOLayer(nn.Module): if nM > 0: lx = k * MSELoss(x[mask], tx[mask]) ly = k * MSELoss(y[mask], ty[mask]) - lw = (k * 1) * MSELoss(w[mask], tw[mask]) - lh = (k * 1) * MSELoss(h[mask], th[mask]) + lw = k * MSELoss(w[mask], tw[mask]) + lh = k * MSELoss(h[mask], th[mask]) # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) lconf = (k * 10) * BCEWithLogitsLoss(pred_conf, mask.float()) - # lcls = (k / 10) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) - lcls = (k * 10) * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) + lcls = (k / 10) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + # lcls = (k * 10) * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) From 6ab407231d90804d9e0e25b7ce51e2f95b989295 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 19 Nov 2018 12:55:03 +0100 Subject: [PATCH 0181/2595] updates --- models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index bdf1a882..8e175d2e 100755 --- a/models.py +++ b/models.py @@ -173,8 +173,9 @@ class YOLOLayer(nn.Module): # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) lconf = (k * 10) * BCEWithLogitsLoss(pred_conf, mask.float()) + lconf += k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) - lcls = (k / 10) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + lcls = (k / 20) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) # lcls = (k * 10) * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) From e93fbf2338be78bf082e9f33c22db74dc8f2d90d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 19 Nov 2018 13:15:15 +0100 Subject: [PATCH 0182/2595] updates --- models.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/models.py b/models.py index 8e175d2e..33b615bb 100755 --- a/models.py +++ b/models.py @@ -173,9 +173,8 @@ class YOLOLayer(nn.Module): # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) lconf = (k * 10) * BCEWithLogitsLoss(pred_conf, mask.float()) - lconf += k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) - lcls = (k / 20) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + lcls = (k / 1) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) # lcls = (k * 10) * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) From 4eed25dad0a6f4afe889260e2e755afe74fa28ee Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 19 Nov 2018 16:54:00 +0100 Subject: [PATCH 0183/2595] updates --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 33b615bb..01151e25 100755 --- a/models.py +++ b/models.py @@ -172,9 +172,9 @@ class YOLOLayer(nn.Module): lh = k * MSELoss(h[mask], th[mask]) # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) - lconf = (k * 10) * BCEWithLogitsLoss(pred_conf, mask.float()) + lconf = (k * 1) * BCEWithLogitsLoss(pred_conf, mask.float()) - lcls = (k / 1) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + lcls = (k / 10) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) # lcls = (k * 10) * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) From 4e4b67b3c56c20410aa8e05a15cebbe298e1e281 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 21 Nov 2018 18:01:18 +0100 Subject: [PATCH 0184/2595] updates --- detect.py | 4 +--- train.py | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/detect.py b/detect.py index 09b45994..b20859b3 100755 --- a/detect.py +++ b/detect.py @@ -25,7 +25,6 @@ parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each i opt = parser.parse_args() print(opt) - def detect(opt): os.system('rm -rf ' + opt.output_folder) os.makedirs(opt.output_folder, exist_ok=True) @@ -66,8 +65,7 @@ def detect(opt): # Get detections with torch.no_grad(): - chip = torch.from_numpy(img).unsqueeze(0).to(device) - pred = model(chip) + pred = model(torch.from_numpy(img).unsqueeze(0).to(device)) pred = pred[pred[:, :, 4] > opt.conf_thres] if len(pred) > 0: diff --git a/train.py b/train.py index 842a56fa..6b44e284 100644 --- a/train.py +++ b/train.py @@ -1,6 +1,5 @@ import argparse import time -import test from models import * from utils.datasets import * @@ -182,6 +181,7 @@ def main(opt): os.system('cp weights/latest.pt weights/backup' + str(epoch) + '.pt') # Calculate mAP + import test test.opt.weights_path = 'weights/latest.pt' mAP = test.main(test.opt) From f1a94abafac94fa05f76b6fc6fde711964083a8e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 21 Nov 2018 18:25:52 +0100 Subject: [PATCH 0185/2595] updates --- detect.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/detect.py b/detect.py index b20859b3..3c412915 100755 --- a/detect.py +++ b/detect.py @@ -36,6 +36,9 @@ def detect(opt): if weights_path.endswith('.weights'): # saved in darknet format load_weights(model, weights_path) else: # endswith('.pt'), saved in pytorch format + if weights_path == 'weights/yolov3.pt' and not os.path.isfile(weights_path): + os.system('wget https://storage.googleapis.com/ultralytics/yolov3.pt -P weights') + checkpoint = torch.load(weights_path, map_location='cpu') model.load_state_dict(checkpoint['model']) del checkpoint From b0b19b3b94869689dc7c0c0bd832594ea9fa2b92 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 21 Nov 2018 18:42:06 +0100 Subject: [PATCH 0186/2595] updates --- detect.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index 3c412915..90edd2c0 100755 --- a/detect.py +++ b/detect.py @@ -25,7 +25,7 @@ parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each i opt = parser.parse_args() print(opt) -def detect(opt): +def main(opt): os.system('rm -rf ' + opt.output_folder) os.makedirs(opt.output_folder, exist_ok=True) @@ -142,4 +142,4 @@ def detect(opt): if __name__ == '__main__': torch.cuda.empty_cache() - detect(opt) + main(opt) From 7283f52d0c4ddbdca33411a8fcaa1fd7a38c4eb2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 21 Nov 2018 19:10:10 +0100 Subject: [PATCH 0187/2595] updates --- detect.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/detect.py b/detect.py index 90edd2c0..827389bd 100755 --- a/detect.py +++ b/detect.py @@ -7,6 +7,7 @@ from utils.utils import * cuda = torch.cuda.is_available() device = torch.device('cuda:0' if cuda else 'cpu') +f_path = os.path.dirname(os.path.realpath(__file__)) + '/' parser = argparse.ArgumentParser() # Get data configuration @@ -16,8 +17,8 @@ parser.add_argument('-output_folder', type=str, default='output', help='path to parser.add_argument('-plot_flag', type=bool, default=True) parser.add_argument('-txt_out', type=bool, default=False) -parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') -parser.add_argument('-class_path', type=str, default='data/coco.names', help='path to class label file') +parser.add_argument('-cfg', type=str, default=f_path + 'cfg/yolov3.cfg', help='cfg file path') +parser.add_argument('-class_path', type=str, default=f_path + 'data/coco.names', help='path to class label file') parser.add_argument('-conf_thres', type=float, default=0.50, help='object confidence threshold') parser.add_argument('-nms_thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') parser.add_argument('-batch_size', type=int, default=1, help='size of the batches') @@ -25,6 +26,7 @@ parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each i opt = parser.parse_args() print(opt) + def main(opt): os.system('rm -rf ' + opt.output_folder) os.makedirs(opt.output_folder, exist_ok=True) @@ -32,12 +34,12 @@ def main(opt): # Load model model = Darknet(opt.cfg, opt.img_size) - weights_path = 'weights/yolov3.pt' + weights_path = f_path + 'weights/yolov3.pt' if weights_path.endswith('.weights'): # saved in darknet format load_weights(model, weights_path) else: # endswith('.pt'), saved in pytorch format - if weights_path == 'weights/yolov3.pt' and not os.path.isfile(weights_path): - os.system('wget https://storage.googleapis.com/ultralytics/yolov3.pt -P weights') + if weights_path.endswith('weights/yolov3.pt') and not os.path.isfile(weights_path): + os.system('wget https://storage.googleapis.com/ultralytics/yolov3.pt -O ' + weights_path) checkpoint = torch.load(weights_path, map_location='cpu') model.load_state_dict(checkpoint['model']) @@ -63,8 +65,8 @@ def main(opt): imgs = [] # Stores image paths img_detections = [] # Stores detections for each image index prev_time = time.time() - for batch_i, (img_paths, img) in enumerate(dataloader): - print(batch_i, img.shape, end=' ') + for i, (img_paths, img) in enumerate(dataloader): + print('%g/%g' % (i + 1, len(dataloader)), end=' ') # Get detections with torch.no_grad(): @@ -76,7 +78,7 @@ def main(opt): img_detections.extend(detections) imgs.extend(img_paths) - print('Batch %d... (Done %.3f s)' % (batch_i, time.time() - prev_time)) + print('Batch %d... Done. (%.3fs)' % (i, time.time() - prev_time)) prev_time = time.time() # Bounding-box colors From dae9b8f4b5a3274c334e3e2f0bc9730b48a432dc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 21 Nov 2018 19:22:01 +0100 Subject: [PATCH 0188/2595] updates --- detect.py | 2 ++ utils/gcp.sh | 2 +- utils/utils.py | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index 827389bd..4e4f466d 100755 --- a/detect.py +++ b/detect.py @@ -145,3 +145,5 @@ def main(opt): if __name__ == '__main__': torch.cuda.empty_cache() main(opt) + if platform == 'darwin': # MacOS (local) + os.system('open ' + opt.output_folder) diff --git a/utils/gcp.sh b/utils/gcp.sh index 691e1257..88c88eaa 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Start -sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 train.py +sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 train.py -epochs 2 # Resume python3 train.py -resume 1 diff --git a/utils/utils.py b/utils/utils.py index f62eca34..0a4c6f02 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -436,7 +436,7 @@ def plot_results(): import matplotlib.pyplot as plt plt.figure(figsize=(16, 8)) s = ['X', 'Y', 'Width', 'Height', 'Objectness', 'Classification', 'Total Loss', 'Precision', 'Recall', 'mAP'] - for f in ('results.txt', + for f in ('results5.txt','results_new.txt','results3.txt', ): results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 9, 10]).T # column 16 is mAP for i in range(9): From 8ac8d0a38283a55f1ee2fade62394bba4c52845e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 21 Nov 2018 19:22:35 +0100 Subject: [PATCH 0189/2595] updates --- utils/gcp.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 88c88eaa..691e1257 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Start -sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 train.py -epochs 2 +sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 train.py # Resume python3 train.py -resume 1 From a46e500f9ee6110bbefe042ae28e32f7e562dc76 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 21 Nov 2018 19:24:00 +0100 Subject: [PATCH 0190/2595] updates --- detect.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index 4e4f466d..5c1d9fb8 100755 --- a/detect.py +++ b/detect.py @@ -141,9 +141,10 @@ def main(opt): # Save generated image with detections cv2.imwrite(results_img_path.replace('.bmp', '.jpg').replace('.tif', '.jpg'), img) + if platform == 'darwin': # MacOS (local) + os.system('open ' + opt.output_folder) + if __name__ == '__main__': torch.cuda.empty_cache() main(opt) - if platform == 'darwin': # MacOS (local) - os.system('open ' + opt.output_folder) From 809667404f19aedf179e71936f7a9c6e1ef5cf3f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 22 Nov 2018 13:52:22 +0100 Subject: [PATCH 0191/2595] updates --- test.py | 29 +++++++++++++++-------------- train.py | 6 +++--- utils/utils.py | 37 +++++++++++++++++++------------------ 3 files changed, 37 insertions(+), 35 deletions(-) diff --git a/test.py b/test.py index 3a896bfe..d590c61b 100644 --- a/test.py +++ b/test.py @@ -16,7 +16,7 @@ parser.add_argument('-nms_thres', type=float, default=0.45, help='iou threshold parser.add_argument('-n_cpu', type=int, default=0, help='number of cpu threads to use during batch generation') parser.add_argument('-img_size', type=int, default=416, help='size of each image dimension') opt = parser.parse_args() -print(opt) +print(opt, end='\n\n') cuda = torch.cuda.is_available() device = torch.device('cuda:0' if cuda else 'cpu') @@ -49,10 +49,8 @@ def main(opt): # dataloader = torch.utils.data.DataLoader(dataset, batch_size=opt.batch_size, shuffle=False, num_workers=opt.n_cpu) dataloader = load_images_and_labels(test_path, batch_size=opt.batch_size, img_size=opt.img_size) - print('Compute mAP...') - - mAP = 0 - outputs, mAPs, TP, confidence, pred_class, target_class = [], [], [], [], [], [] + print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP')) + outputs, mAPs, mR, mP, TP, confidence, pred_class, target_class = [], [], [], [], [], [], [], [] AP_accum, AP_accum_count = np.zeros(nC), np.zeros(nC) for batch_i, (imgs, targets) in enumerate(dataloader): imgs = imgs.to(device) @@ -107,22 +105,25 @@ def main(opt): correct.append(0) # Compute Average Precision (AP) per class - AP, AP_class = ap_per_class(tp=correct, conf=detections[:, 4], pred_cls=detections[:, 6], - target_cls=target_cls) + AP, AP_class, R, P = ap_per_class(tp=correct, conf=detections[:, 4], pred_cls=detections[:, 6], + target_cls=target_cls) # Accumulate AP per class AP_accum_count += np.bincount(AP_class, minlength=nC) AP_accum += np.bincount(AP_class, minlength=nC, weights=AP) - # Compute mean AP for this image - mAP = AP.mean() + # Compute mean AP across all classes in this image, and append to image list + mAPs.append(AP.mean()) + mR.append(R.mean()) + mP.append(P.mean()) - # Append image mAP to list - mAPs.append(mAP) + # Means of all images mean_mAP = np.mean(mAPs) + mean_R = np.mean(mR) + mean_P = np.mean(mP) # Print image mAP and running mean mAP - print('Image %d/%d AP: %.4f (%.4f)' % (len(mAPs), len(dataloader) * opt.batch_size, mAP, mean_mAP)) + print(('%11s%11s' + '%11.3g' * 3) % (len(mAPs), len(dataloader) * opt.batch_size, mean_P, mean_R, mean_mAP)) # Print mAP per class classes = load_classes(opt.class_path) # Extracts class labels from file @@ -130,8 +131,8 @@ def main(opt): print('%15s: %-.4f' % (c, AP_accum[i] / AP_accum_count[i])) # Print mAP - print('Mean Average Precision: %.4f' % mean_mAP) - return mean_mAP + print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP')) + return mean_mAP, mean_R, mean_P if __name__ == '__main__': diff --git a/train.py b/train.py index 6b44e284..2e862954 100644 --- a/train.py +++ b/train.py @@ -125,7 +125,7 @@ def main(opt): g['lr'] = lr # Compute loss, compute gradient, update parameters - loss = model(imgs.to(device), targets, requestPrecision=True) + loss = model(imgs.to(device), targets, requestPrecision=False) loss.backward() # accumulated_batches = 1 # accumulate gradient for 4 batches before stepping optimizer @@ -183,11 +183,11 @@ def main(opt): # Calculate mAP import test test.opt.weights_path = 'weights/latest.pt' - mAP = test.main(test.opt) + mAP, R, P = test.main(test.opt) # Write epoch results with open('results.txt', 'a') as file: - file.write(s + '%11.3g' % mAP + '\n') + file.write(s + '%11.3g' * 3 % (mAP, P, R) + '\n') # Save final model dt = time.time() - t0 diff --git a/utils/utils.py b/utils/utils.py index 0a4c6f02..d7231fa6 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -14,20 +14,20 @@ def load_classes(path): """ Loads class labels at 'path' """ - fp = open(path, "r") - names = fp.read().split("\n")[:-1] + fp = open(path, 'r') + names = fp.read().split('\n')[:-1] return names def model_info(model): # Plots a line-by-line description of a PyTorch model - nP = sum(x.numel() for x in model.parameters()) # number parameters - nG = sum(x.numel() for x in model.parameters() if x.requires_grad) # number gradients + n_p = sum(x.numel() for x in model.parameters()) # number parameters + n_g = sum(x.numel() for x in model.parameters() if x.requires_grad) # number gradients print('\n%4s %70s %9s %12s %20s %12s %12s' % ('', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) for i, (name, p) in enumerate(model.named_parameters()): name = name.replace('module_list.', '') print('%4g %70s %9s %12g %20s %12g %12g' % ( i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) - print('\n%g layers, %g parameters, %g gradients' % (i + 1, nP, nG)) + print('\nModel Summary: %g layers, %g parameters, %g gradients\n' % (i + 1, n_p, n_g)) def class_weights(): # frequency of each class in coco train2014 @@ -104,7 +104,7 @@ def ap_per_class(tp, conf, pred_cls, target_cls): unique_classes = np.unique(np.concatenate((pred_cls, target_cls), 0)) # Create Precision-Recall curve and compute AP for each class - ap = [] + ap, p, r = [], [], [] for c in unique_classes: i = pred_cls == c n_gt = sum(target_cls == c) # Number of ground truth objects @@ -112,25 +112,27 @@ def ap_per_class(tp, conf, pred_cls, target_cls): if (n_p == 0) and (n_gt == 0): continue - elif (np == 0) and (n_gt > 0): - ap.append(0) - elif (n_p > 0) and (n_gt == 0): + elif (n_p == 0) or (n_gt == 0): ap.append(0) + r.append(0) + p.append(0) else: # Accumulate FPs and TPs - fpa = np.cumsum(1 - tp[i]) - tpa = np.cumsum(tp[i]) + fpc = np.cumsum(1 - tp[i]) + tpc = np.cumsum(tp[i]) # Recall - recall = tpa / (n_gt + 1e-16) + recall_curve = tpc / (n_gt + 1e-16) + r.append(tpc[-1] / (n_gt + 1e-16)) # Precision - precision = tpa / (tpa + fpa) + precision_curve = tpc / (tpc + fpc) + p.append(tpc[-1] / (tpc[-1] + fpc[-1])) # AP from recall-precision curve - ap.append(compute_ap(recall, precision)) + ap.append(compute_ap(recall_curve, precision_curve)) - return np.array(ap), unique_classes.astype('int32') + return np.array(ap), unique_classes.astype('int32'), np.array(r), np.array(p) def compute_ap(recall, precision): @@ -431,12 +433,12 @@ def coco_class_count(path='/Users/glennjocher/downloads/DATA/coco/labels/train20 def plot_results(): - # Plot YOLO training results file "results.txt" + # Plot YOLO training results file 'results.txt' import numpy as np import matplotlib.pyplot as plt plt.figure(figsize=(16, 8)) s = ['X', 'Y', 'Width', 'Height', 'Objectness', 'Classification', 'Total Loss', 'Precision', 'Recall', 'mAP'] - for f in ('results5.txt','results_new.txt','results3.txt', + for f in ('results5.txt', 'results_new.txt', 'results3.txt', ): results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 9, 10]).T # column 16 is mAP for i in range(9): @@ -445,4 +447,3 @@ def plot_results(): plt.title(s[i]) if i == 0: plt.legend() - From db515a4535acf9b6ca07943cf6382fa1470807fe Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 22 Nov 2018 14:14:19 +0100 Subject: [PATCH 0192/2595] updates --- models.py | 2 +- train.py | 31 +++++++++++++++++-------------- utils/utils.py | 2 +- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/models.py b/models.py index 01151e25..f254b9c8 100755 --- a/models.py +++ b/models.py @@ -172,7 +172,7 @@ class YOLOLayer(nn.Module): lh = k * MSELoss(h[mask], th[mask]) # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) - lconf = (k * 1) * BCEWithLogitsLoss(pred_conf, mask.float()) + lconf = (k * 5) * BCEWithLogitsLoss(pred_conf, mask.float()) lcls = (k / 10) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) # lcls = (k * 10) * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) diff --git a/train.py b/train.py index 2e862954..cbd78cb7 100644 --- a/train.py +++ b/train.py @@ -125,7 +125,8 @@ def main(opt): g['lr'] = lr # Compute loss, compute gradient, update parameters - loss = model(imgs.to(device), targets, requestPrecision=False) + precision_per_batch = False + loss = model(imgs.to(device), targets, requestPrecision=precision_per_batch) loss.backward() # accumulated_batches = 1 # accumulate gradient for 4 batches before stepping optimizer @@ -133,24 +134,26 @@ def main(opt): optimizer.step() optimizer.zero_grad() - # Compute running epoch-means of tracked metrics + # Running epoch-means of tracked metrics ui += 1 - metrics += model.losses['metrics'] - TP, FP, FN = metrics for key, val in model.losses.items(): rloss[key] = (rloss[key] * ui + val) / (ui + 1) - # Precision - precision = TP / (TP + FP) - k = (TP + FP) > 0 - if k.sum() > 0: - mean_precision = precision[k].mean() + if precision_per_batch: + TP, FP, FN = metrics + metrics += model.losses['metrics'] - # Recall - recall = TP / (TP + FN) - k = (TP + FN) > 0 - if k.sum() > 0: - mean_recall = recall[k].mean() + # Precision + precision = TP / (TP + FP) + k = (TP + FP) > 0 + if k.sum() > 0: + mean_precision = precision[k].mean() + + # Recall + recall = TP / (TP + FN) + k = (TP + FN) > 0 + if k.sum() > 0: + mean_recall = recall[k].mean() s = ('%11s%11s' + '%11.3g' * 14) % ( '%g/%g' % (epoch, opt.epochs - 1), '%g/%g' % (i, len(dataloader) - 1), rloss['x'], diff --git a/utils/utils.py b/utils/utils.py index d7231fa6..b4933d96 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -438,7 +438,7 @@ def plot_results(): import matplotlib.pyplot as plt plt.figure(figsize=(16, 8)) s = ['X', 'Y', 'Width', 'Height', 'Objectness', 'Classification', 'Total Loss', 'Precision', 'Recall', 'mAP'] - for f in ('results5.txt', 'results_new.txt', 'results3.txt', + for f in ('results_d5.txt', 'results_d10.txt', 'results_new.txt', ): results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 9, 10]).T # column 16 is mAP for i in range(9): From f18f2889902a7131d9b24daf00b43635598d996d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 22 Nov 2018 14:29:50 +0100 Subject: [PATCH 0193/2595] updates --- models.py | 14 +++++++------- utils/utils.py | 3 ++- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/models.py b/models.py index f254b9c8..e851d29c 100755 --- a/models.py +++ b/models.py @@ -194,12 +194,12 @@ class YOLOLayer(nn.Module): loss = lx + ly + lw + lh + lconf + lcls # Sum False Positives from unassigned anchors - i = torch.sigmoid(pred_conf[~mask]) > 0.5 - if i.sum() > 0: - FP_classes = torch.argmax(pred_cls[~mask][i], 1) - FPe = torch.bincount(FP_classes, minlength=self.nC).float().cpu() # extra FPs - else: - FPe = torch.zeros(self.nC) + FPe = torch.zeros(self.nC) + if requestPrecision: + i = torch.sigmoid(pred_conf[~mask]) > 0.5 + if i.sum() > 0: + FP_classes = torch.argmax(pred_cls[~mask][i], 1) + FPe = torch.bincount(FP_classes, minlength=self.nC).float().cpu() # extra FPs return loss, loss.item(), lx.item(), ly.item(), lw.item(), lh.item(), lconf.item(), lcls.item(), \ nT, TP, FP, FPe, FN, TC @@ -254,7 +254,7 @@ class Darknet(nn.Module): output.append(x) layer_outputs.append(x) - if is_training: + if is_training and requestPrecision: self.losses['nT'] /= 3 self.losses['TC'] /= 3 # target category metrics = torch.zeros(3, len(self.losses['FPe'])) # TP, FP, FN diff --git a/utils/utils.py b/utils/utils.py index b4933d96..51ea5913 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -214,7 +214,8 @@ def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG if nTb == 0: continue t = target[b] - FN[b, :nTb] = 1 + if requestPrecision: + FN[b, :nTb] = 1 # Convert to position relative to box TC[b, :nTb], gx, gy, gw, gh = t[:, 0].long(), t[:, 1] * nG, t[:, 2] * nG, t[:, 3] * nG, t[:, 4] * nG From bec94be01a4a0f5a0ae63c00de4ccf1203afc17d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 22 Nov 2018 14:33:01 +0100 Subject: [PATCH 0194/2595] updates --- models.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index e851d29c..1b296061 100755 --- a/models.py +++ b/models.py @@ -254,8 +254,11 @@ class Darknet(nn.Module): output.append(x) layer_outputs.append(x) + self.losses['nT'] /= 3 + self.losses['TP'] = 0 + self.losses['FP'] = 0 + self.losses['FN'] = 0 if is_training and requestPrecision: - self.losses['nT'] /= 3 self.losses['TC'] /= 3 # target category metrics = torch.zeros(3, len(self.losses['FPe'])) # TP, FP, FN From d41f85702d036528342045f4d7e4d0a1a801ec45 Mon Sep 17 00:00:00 2001 From: Nir Ben-Zvi Date: Thu, 22 Nov 2018 15:36:14 +0200 Subject: [PATCH 0195/2595] Fixed NMS bug causing big CPU usage. Note that using 'cross_class_nms' still takes a huge amount of time and should be fixed somehow. --- utils/utils.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 0a4c6f02..8fe216c3 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -285,8 +285,6 @@ def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): - prediction = prediction.cpu() - """ Removes detections with lower object confidence score than 'conf_thres' and performs Non-Maximum Suppression to further filter detections. @@ -302,15 +300,17 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): # cross-class NMS cross_class_nms = False if cross_class_nms: - thresh = 0.85 + # thresh = 0.85 + thresh = nms_thres a = pred.clone() - a = a[np.argsort(-a[:, 4])] # sort best to worst + _, indices = torch.sort(-a[:, 4], 0) # sort best to worst + a = a[indices] radius = 30 # area to search for cross-class ious for i in range(len(a)): if i >= len(a) - 1: break - close = (np.abs(a[i, 0] - a[i + 1:, 0]) < radius) & (np.abs(a[i, 1] - a[i + 1:, 1]) < radius) + close = (torch.abs(a[i, 0] - a[i + 1:, 0]) < radius) & (torch.abs(a[i, 1] - a[i + 1:, 1]) < radius) close = close.nonzero() if len(close) > 0: @@ -324,10 +324,11 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): a = a[mask] pred = a - x, y, w, h = pred[:, 0].numpy(), pred[:, 1].numpy(), pred[:, 2].numpy(), pred[:, 3].numpy() + x, y, w, h = pred[:, 0], pred[:, 1], pred[:, 2], pred[:, 3] a = w * h # area ar = w / (h + 1e-16) # aspect ratio - log_w, log_h, log_a, log_ar = np.log(w), np.log(h), np.log(a), np.log(ar) + + log_w, log_h, log_a, log_ar = torch.log(w), torch.log(h), torch.log(a), torch.log(ar) # n = len(w) # shape_likelihood = np.zeros((n, 60), dtype=np.float32) @@ -338,8 +339,10 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): class_prob, class_pred = torch.max(F.softmax(pred[:, 5:], 1), 1) - v = ((pred[:, 4] > conf_thres) & (class_prob > .3)).numpy() - v = v.nonzero() + v = ((pred[:, 4] > conf_thres) & (class_prob > .3)) + v = v.nonzero().squeeze() + if len(v.shape) == 0: + v = v.unsqueeze(0) pred = pred[v] class_prob = class_prob[v] @@ -363,7 +366,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): # Iterate through all predicted classes unique_labels = detections[:, -1].cpu().unique() if prediction.is_cuda: - unique_labels = unique_labels.cuda() + unique_labels = unique_labels.cuda(prediction.device) nms_style = 'OR' # 'AND' or 'OR' (classical) for c in unique_labels: From 959c67b4eddc79d9cd35cb3fdee7cbab6a4010c8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 22 Nov 2018 14:48:57 +0100 Subject: [PATCH 0196/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 1b296061..f45d65d2 100755 --- a/models.py +++ b/models.py @@ -273,9 +273,9 @@ class Darknet(nn.Module): self.losses['TP'] = metrics[0].sum() self.losses['FP'] = metrics[1].sum() self.losses['FN'] = metrics[2].sum() - self.losses['TC'] = 0 self.losses['metrics'] = metrics + self.losses['TC'] = 0 return sum(output) if is_training else torch.cat(output, 1) From b9d87be3182996a34c08b1bd7444e901ca65b865 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 22 Nov 2018 14:54:52 +0100 Subject: [PATCH 0197/2595] updates --- models.py | 14 +++++++------- train.py | 6 +++--- utils/utils.py | 6 +++--- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/models.py b/models.py index f45d65d2..9e4f3404 100755 --- a/models.py +++ b/models.py @@ -103,7 +103,7 @@ class YOLOLayer(nn.Module): self.loss_means = torch.zeros(6) - def forward(self, p, targets=None, requestPrecision=False): + def forward(self, p, targets=None, batch_report=False): FT = torch.cuda.FloatTensor if p.is_cuda else torch.FloatTensor bs = p.shape[0] # batch size @@ -145,7 +145,7 @@ class YOLOLayer(nn.Module): BCEWithLogitsLoss = nn.BCEWithLogitsLoss() CrossEntropyLoss = nn.CrossEntropyLoss() - if requestPrecision: + if batch_report: gx = self.grid_x[:, :, :nG, :nG] gy = self.grid_y[:, :, :nG, :nG] pred_boxes[..., 0] = x.data + gx - width / 2 @@ -155,7 +155,7 @@ class YOLOLayer(nn.Module): tx, ty, tw, th, mask, tcls, TP, FP, FN, TC = \ build_targets(pred_boxes, pred_conf, pred_cls, targets, self.scaled_anchors, self.nA, self.nC, nG, - requestPrecision) + batch_report) tcls = tcls[mask] if x.is_cuda: tx, ty, tw, th, mask, tcls = tx.cuda(), ty.cuda(), tw.cuda(), th.cuda(), mask.cuda(), tcls.cuda() @@ -195,7 +195,7 @@ class YOLOLayer(nn.Module): # Sum False Positives from unassigned anchors FPe = torch.zeros(self.nC) - if requestPrecision: + if batch_report: i = torch.sigmoid(pred_conf[~mask]) > 0.5 if i.sum() > 0: FP_classes = torch.argmax(pred_cls[~mask][i], 1) @@ -227,7 +227,7 @@ class Darknet(nn.Module): self.img_size = img_size self.loss_names = ['loss', 'x', 'y', 'w', 'h', 'conf', 'cls', 'nT', 'TP', 'FP', 'FPe', 'FN', 'TC'] - def forward(self, x, targets=None, requestPrecision=False): + def forward(self, x, targets=None, batch_report=False): is_training = targets is not None output = [] self.losses = defaultdict(float) @@ -245,7 +245,7 @@ class Darknet(nn.Module): elif module_def['type'] == 'yolo': # Train phase: get loss if is_training: - x, *losses = module[0](x, targets, requestPrecision) + x, *losses = module[0](x, targets, batch_report) for name, loss in zip(self.loss_names, losses): self.losses[name] += loss # Test phase: Get detections @@ -258,7 +258,7 @@ class Darknet(nn.Module): self.losses['TP'] = 0 self.losses['FP'] = 0 self.losses['FN'] = 0 - if is_training and requestPrecision: + if is_training and batch_report: self.losses['TC'] /= 3 # target category metrics = torch.zeros(3, len(self.losses['FPe'])) # TP, FP, FN diff --git a/train.py b/train.py index cbd78cb7..11ec9722 100644 --- a/train.py +++ b/train.py @@ -12,6 +12,7 @@ parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each image dimension') parser.add_argument('-resume', default=False, help='resume training flag') +parser.add_argument('-batch_report', default=False, help='report TP, FP, FN, P and R per batch (slower)') opt = parser.parse_args() print(opt) @@ -125,8 +126,7 @@ def main(opt): g['lr'] = lr # Compute loss, compute gradient, update parameters - precision_per_batch = False - loss = model(imgs.to(device), targets, requestPrecision=precision_per_batch) + loss = model(imgs.to(device), targets, batch_report=opt.batch_report) loss.backward() # accumulated_batches = 1 # accumulate gradient for 4 batches before stepping optimizer @@ -139,7 +139,7 @@ def main(opt): for key, val in model.losses.items(): rloss[key] = (rloss[key] * ui + val) / (ui + 1) - if precision_per_batch: + if opt.batch_report: TP, FP, FN = metrics metrics += model.losses['metrics'] diff --git a/utils/utils.py b/utils/utils.py index 51ea5913..1348ad69 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -192,7 +192,7 @@ def bbox_iou(box1, box2, x1y1x2y2=True): return inter_area / (b1_area + b2_area - inter_area + 1e-16) -def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG, requestPrecision): +def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG, batch_report): """ returns nT, nCorrect, tx, ty, tw, th, tconf, tcls """ @@ -214,7 +214,7 @@ def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG if nTb == 0: continue t = target[b] - if requestPrecision: + if batch_report: FN[b, :nTb] = 1 # Convert to position relative to box @@ -273,7 +273,7 @@ def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG tcls[b, a, gj, gi, tc] = 1 tconf[b, a, gj, gi] = 1 - if requestPrecision: + if batch_report: # predicted classes and confidence tb = torch.cat((gx - gw / 2, gy - gh / 2, gx + gw / 2, gy + gh / 2)).view(4, -1).t() # target boxes pcls = torch.argmax(pred_cls[b, a, gj, gi], 1).cpu() From 154fae4430b62245497769b019f84ab91ec7b57a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 22 Nov 2018 15:04:02 +0100 Subject: [PATCH 0198/2595] updates --- models.py | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/models.py b/models.py index 9e4f3404..0df43951 100755 --- a/models.py +++ b/models.py @@ -254,28 +254,31 @@ class Darknet(nn.Module): output.append(x) layer_outputs.append(x) - self.losses['nT'] /= 3 - self.losses['TP'] = 0 - self.losses['FP'] = 0 - self.losses['FN'] = 0 - if is_training and batch_report: - self.losses['TC'] /= 3 # target category - metrics = torch.zeros(3, len(self.losses['FPe'])) # TP, FP, FN + if is_training: + if batch_report: + self.losses['TC'] /= 3 # target category + metrics = torch.zeros(3, len(self.losses['FPe'])) # TP, FP, FN - ui = np.unique(self.losses['TC'])[1:] - for i in ui: - j = self.losses['TC'] == float(i) - metrics[0, i] = (self.losses['TP'][j] > 0).sum().float() # TP - metrics[1, i] = (self.losses['FP'][j] > 0).sum().float() # FP - metrics[2, i] = (self.losses['FN'][j] == 3).sum().float() # FN - metrics[1] += self.losses['FPe'] + ui = np.unique(self.losses['TC'])[1:] + for i in ui: + j = self.losses['TC'] == float(i) + metrics[0, i] = (self.losses['TP'][j] > 0).sum().float() # TP + metrics[1, i] = (self.losses['FP'][j] > 0).sum().float() # FP + metrics[2, i] = (self.losses['FN'][j] == 3).sum().float() # FN + metrics[1] += self.losses['FPe'] - self.losses['TP'] = metrics[0].sum() - self.losses['FP'] = metrics[1].sum() - self.losses['FN'] = metrics[2].sum() - self.losses['metrics'] = metrics + self.losses['TP'] = metrics[0].sum() + self.losses['FP'] = metrics[1].sum() + self.losses['FN'] = metrics[2].sum() + self.losses['metrics'] = metrics + else: + self.losses['TP'] = 0 + self.losses['FP'] = 0 + self.losses['FN'] = 0 + + self.losses['nT'] /= 3 + self.losses['TC'] = 0 - self.losses['TC'] = 0 return sum(output) if is_training else torch.cat(output, 1) From 57f2b3f6d7cf00f48d379a73a5380051fcbed08c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 22 Nov 2018 16:42:58 +0100 Subject: [PATCH 0199/2595] updates --- test.py | 5 +++-- utils/utils.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/test.py b/test.py index d590c61b..b2c11517 100644 --- a/test.py +++ b/test.py @@ -126,12 +126,13 @@ def main(opt): print(('%11s%11s' + '%11.3g' * 3) % (len(mAPs), len(dataloader) * opt.batch_size, mean_P, mean_R, mean_mAP)) # Print mAP per class + print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP') + '\n\nmAP Per Class:') + classes = load_classes(opt.class_path) # Extracts class labels from file for i, c in enumerate(classes): print('%15s: %-.4f' % (c, AP_accum[i] / AP_accum_count[i])) - # Print mAP - print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP')) + # Return mAP return mean_mAP, mean_R, mean_P diff --git a/utils/utils.py b/utils/utils.py index 860b73ef..b472d4ca 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -300,7 +300,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): # Filter out confidence scores below threshold # Get score and class with highest confidence - # cross-class NMS + # cross-class NMS (experimental) cross_class_nms = False if cross_class_nms: # thresh = 0.85 From 120af70798bad1a055cfeaef36ba33124cb46478 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 22 Nov 2018 17:13:47 +0100 Subject: [PATCH 0200/2595] updates --- models.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/models.py b/models.py index 0df43951..fd404375 100755 --- a/models.py +++ b/models.py @@ -101,7 +101,7 @@ class YOLOLayer(nn.Module): self.anchor_h = self.scaled_anchors[:, 1:2].view((1, nA, 1, 1)) self.weights = class_weights() - self.loss_means = torch.zeros(6) + self.loss_means = torch.ones(6) def forward(self, p, targets=None, batch_report=False): FT = torch.cuda.FloatTensor if p.is_cuda else torch.FloatTensor @@ -113,7 +113,7 @@ class YOLOLayer(nn.Module): if p.is_cuda and not self.grid_x.is_cuda: self.grid_x, self.grid_y = self.grid_x.cuda(), self.grid_y.cuda() self.anchor_w, self.anchor_h = self.anchor_w.cuda(), self.anchor_h.cuda() - self.weights = self.weights.cuda() + self.weights, self.loss_means = self.weights.cuda(), self.loss_means.cuda() # p.view(12, 255, 13, 13) -- > (12, 3, 13, 13, 80) # (bs, anchors, grid, grid, classes + xywh) p = p.view(bs, self.nA, self.bbox_attrs, nG, nG).permute(0, 1, 3, 4, 2).contiguous() # prediction @@ -172,7 +172,7 @@ class YOLOLayer(nn.Module): lh = k * MSELoss(h[mask], th[mask]) # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) - lconf = (k * 5) * BCEWithLogitsLoss(pred_conf, mask.float()) + lconf = (k * 10) * BCEWithLogitsLoss(pred_conf, mask.float()) lcls = (k / 10) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) # lcls = (k * 10) * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) @@ -185,11 +185,11 @@ class YOLOLayer(nn.Module): # Sum loss components balance_losses_flag = False if balance_losses_flag: - loss_vec = torch.FloatTensor([lx.data, ly.data, lw.data, lh.data, lconf.data, lcls.data]) - self.loss_means = self.loss_means * 0.99 + loss_vec * 0.01 k = 1 / self.loss_means.clone() - k /= k.sum() - loss = (lx * k[0] + ly * k[1] + lw * k[2] + lh * k[3] + lconf * k[4] + lcls * k[5]) * loss_vec.sum() + loss = (lx * k[0] + ly * k[1] + lw * k[2] + lh * k[3] + lconf * k[4] + lcls * k[5]) / k.mean() + + self.loss_means = self.loss_means * 0.99 + \ + FT([lx.data, ly.data, lw.data, lh.data, lconf.data, lcls.data]) * 0.01 else: loss = lx + ly + lw + lh + lconf + lcls From 075b629049419f252f3714d8f060e38757f545d0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 22 Nov 2018 17:16:17 +0100 Subject: [PATCH 0201/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index fd404375..1b12bd94 100755 --- a/models.py +++ b/models.py @@ -183,7 +183,7 @@ class YOLOLayer(nn.Module): # lconf += k * BCEWithLogitsLoss(pred_conf[~mask], mask[~mask].float()) # Sum loss components - balance_losses_flag = False + balance_losses_flag = True if balance_losses_flag: k = 1 / self.loss_means.clone() loss = (lx * k[0] + ly * k[1] + lw * k[2] + lh * k[3] + lconf * k[4] + lcls * k[5]) / k.mean() From 7ca924b17216230d0bd45782e18eafdb5973b560 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 22 Nov 2018 17:17:07 +0100 Subject: [PATCH 0202/2595] updates --- models.py | 1 + 1 file changed, 1 insertion(+) diff --git a/models.py b/models.py index 1b12bd94..2c1f1085 100755 --- a/models.py +++ b/models.py @@ -184,6 +184,7 @@ class YOLOLayer(nn.Module): # Sum loss components balance_losses_flag = True + if balance_losses_flag: k = 1 / self.loss_means.clone() loss = (lx * k[0] + ly * k[1] + lw * k[2] + lh * k[3] + lconf * k[4] + lcls * k[5]) / k.mean() From 6f83c321c8ddad212a66822b4d71d5b5014f0230 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 22 Nov 2018 20:02:11 +0100 Subject: [PATCH 0203/2595] updates --- models.py | 1 - test.py | 2 +- train.py | 6 +++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/models.py b/models.py index 2c1f1085..1b12bd94 100755 --- a/models.py +++ b/models.py @@ -184,7 +184,6 @@ class YOLOLayer(nn.Module): # Sum loss components balance_losses_flag = True - if balance_losses_flag: k = 1 / self.loss_means.clone() loss = (lx * k[0] + ly * k[1] + lw * k[2] + lh * k[3] + lconf * k[4] + lcls * k[5]) / k.mean() diff --git a/test.py b/test.py index b2c11517..5b1fc3d9 100644 --- a/test.py +++ b/test.py @@ -4,7 +4,7 @@ from models import * from utils.datasets import * from utils.utils import * -parser = argparse.ArgumentParser() +parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('-batch_size', type=int, default=32, help='size of each image batch') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='path to model config file') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='path to data config file') diff --git a/train.py b/train.py index 11ec9722..e523d2d4 100644 --- a/train.py +++ b/train.py @@ -1,4 +1,5 @@ import argparse +import sys import time from models import * @@ -16,6 +17,10 @@ parser.add_argument('-batch_report', default=False, help='report TP, FP, FN, P a opt = parser.parse_args() print(opt) +# Import test.py to get mAP after each epoch +sys.argv[1:] = [] # delete any command line arguments that might get picked up by test.py +import test # must follow sys.argv[1:] = [] + cuda = torch.cuda.is_available() device = torch.device('cuda:0' if cuda else 'cpu') @@ -184,7 +189,6 @@ def main(opt): os.system('cp weights/latest.pt weights/backup' + str(epoch) + '.pt') # Calculate mAP - import test test.opt.weights_path = 'weights/latest.pt' mAP, R, P = test.main(test.opt) From 887ab29c64598d26fe334d0514678ba85d75e550 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 22 Nov 2018 20:03:09 +0100 Subject: [PATCH 0204/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index e523d2d4..dbfd8749 100644 --- a/train.py +++ b/train.py @@ -18,7 +18,7 @@ opt = parser.parse_args() print(opt) # Import test.py to get mAP after each epoch -sys.argv[1:] = [] # delete any command line arguments that might get picked up by test.py +sys.argv[1:] = [] # delete any train.py command-line arguments before they reach test.py import test # must follow sys.argv[1:] = [] cuda = torch.cuda.is_available() From 6e825acb722f8d9df05a40a0486286dacee016d3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Nov 2018 15:32:41 +0100 Subject: [PATCH 0205/2595] updates --- utils/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index b472d4ca..990cc115 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -22,12 +22,12 @@ def load_classes(path): def model_info(model): # Plots a line-by-line description of a PyTorch model n_p = sum(x.numel() for x in model.parameters()) # number parameters n_g = sum(x.numel() for x in model.parameters() if x.requires_grad) # number gradients - print('\n%4s %70s %9s %12s %20s %12s %12s' % ('', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) + print('\n%5s %50s %9s %12s %20s %12s %12s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) for i, (name, p) in enumerate(model.named_parameters()): name = name.replace('module_list.', '') - print('%4g %70s %9s %12g %20s %12g %12g' % ( + print('%5g %50s %9s %12g %20s %12g %12g' % ( i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) - print('\nModel Summary: %g layers, %g parameters, %g gradients\n' % (i + 1, n_p, n_g)) + print('Model Summary: %g layers, %g parameters, %g gradients\n' % (i + 1, n_p, n_g)) def class_weights(): # frequency of each class in coco train2014 From bf66656b4e8ae59a29c478d69394eb6571dbb2b8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Nov 2018 15:34:49 +0100 Subject: [PATCH 0206/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 990cc115..9ae9b931 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -306,7 +306,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): # thresh = 0.85 thresh = nms_thres a = pred.clone() - _, indices = torch.sort(-a[:, 4], 0) # sort best to worst + _, indices = torch.sort(-a[:, 4], 0) # sort best to worst a = a[indices] radius = 30 # area to search for cross-class ious for i in range(len(a)): From 7b13af707df1f5bafc0e46f0ba251fd94a37e83a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Nov 2018 18:09:47 +0100 Subject: [PATCH 0207/2595] updates --- test.py | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/test.py b/test.py index 5b1fc3d9..89e00a52 100644 --- a/test.py +++ b/test.py @@ -5,7 +5,7 @@ from utils.datasets import * from utils.utils import * parser = argparse.ArgumentParser(prog='test.py') -parser.add_argument('-batch_size', type=int, default=32, help='size of each image batch') +parser.add_argument('-batch_size', type=int, default=64, help='size of each image batch') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='path to model config file') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='path to data config file') parser.add_argument('-weights_path', type=str, default='weights/yolov3.pt', help='path to weights file') @@ -53,41 +53,35 @@ def main(opt): outputs, mAPs, mR, mP, TP, confidence, pred_class, target_class = [], [], [], [], [], [], [], [] AP_accum, AP_accum_count = np.zeros(nC), np.zeros(nC) for batch_i, (imgs, targets) in enumerate(dataloader): - imgs = imgs.to(device) with torch.no_grad(): - output = model(imgs) + output = model(imgs.to(device)) output = non_max_suppression(output, conf_thres=opt.conf_thres, nms_thres=opt.nms_thres) # Compute average precision for each sample - for sample_i in range(len(targets)): + for sample_i, (labels, detections) in enumerate(zip(targets, output)): correct = [] - # Get labels for sample where width is not zero (dummies) - annotations = targets[sample_i] - # Extract detections - detections = output[sample_i] - if detections is None: - # If there are no detections but there are annotations mask as zero AP - if annotations.size(0) != 0: - mAPs.append(0) + # If there are no detections but there are labels mask as zero AP + if labels.size(0) != 0: + mAPs.append(0), mR.append(0), mP.append(0) continue # Get detections sorted by decreasing confidence scores + detections = detections.cpu().numpy() detections = detections[np.argsort(-detections[:, 4])] - # If no annotations add number of detections as incorrect - if annotations.size(0) == 0: + # If no labels add number of detections as incorrect + if labels.size(0) == 0: # correct.extend([0 for _ in range(len(detections))]) - mAPs.append(0) + mAPs.append(0), mR.append(0), mP.append(0) continue else: - target_cls = annotations[:, 0] + target_cls = labels[:, 0] # Extract target boxes as (x1, y1, x2, y2) - target_boxes = xywh2xyxy(annotations[:, 1:5]) - target_boxes *= opt.img_size + target_boxes = xywh2xyxy(labels[:, 1:5]) * opt.img_size detected = [] for *pred_bbox, conf, obj_conf, obj_pred in detections: @@ -98,7 +92,7 @@ def main(opt): # Extract index of largest overlap best_i = np.argmax(iou) # If overlap exceeds threshold and classification is correct mark as correct - if iou[best_i] > opt.iou_thres and obj_pred == annotations[best_i, 0] and best_i not in detected: + if iou[best_i] > opt.iou_thres and obj_pred == labels[best_i, 0] and best_i not in detected: correct.append(1) detected.append(best_i) else: @@ -123,7 +117,7 @@ def main(opt): mean_P = np.mean(mP) # Print image mAP and running mean mAP - print(('%11s%11s' + '%11.3g' * 3) % (len(mAPs), len(dataloader) * opt.batch_size, mean_P, mean_R, mean_mAP)) + print(('%11s%11s' + '%11.3g' * 3) % (len(mAPs), dataloader.nF, mean_P, mean_R, mean_mAP)) # Print mAP per class print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP') + '\n\nmAP Per Class:') From 82124805f8a6fd5b44e4287649bed9abf61ca021 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Nov 2018 18:13:35 +0100 Subject: [PATCH 0208/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 1b12bd94..fd404375 100755 --- a/models.py +++ b/models.py @@ -183,7 +183,7 @@ class YOLOLayer(nn.Module): # lconf += k * BCEWithLogitsLoss(pred_conf[~mask], mask[~mask].float()) # Sum loss components - balance_losses_flag = True + balance_losses_flag = False if balance_losses_flag: k = 1 / self.loss_means.clone() loss = (lx * k[0] + ly * k[1] + lw * k[2] + lh * k[3] + lconf * k[4] + lcls * k[5]) / k.mean() From ab9ee6aa9ad0919761e6e0003b908a3b41218440 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Nov 2018 19:45:39 +0100 Subject: [PATCH 0209/2595] updates --- test.py | 2 +- train.py | 14 +++++++++----- utils/gcp.sh | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/test.py b/test.py index 89e00a52..4d739993 100644 --- a/test.py +++ b/test.py @@ -5,7 +5,7 @@ from utils.datasets import * from utils.utils import * parser = argparse.ArgumentParser(prog='test.py') -parser.add_argument('-batch_size', type=int, default=64, help='size of each image batch') +parser.add_argument('-batch_size', type=int, default=32, help='size of each image batch') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='path to model config file') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='path to data config file') parser.add_argument('-weights_path', type=str, default='weights/yolov3.pt', help='path to weights file') diff --git a/train.py b/train.py index dbfd8749..2f200ac8 100644 --- a/train.py +++ b/train.py @@ -14,6 +14,7 @@ parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file p parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each image dimension') parser.add_argument('-resume', default=False, help='resume training flag') parser.add_argument('-batch_report', default=False, help='report TP, FP, FN, P and R per batch (slower)') +parser.add_argument('-optimizer', default='SGD', help='Optimizer') opt = parser.parse_args() print(opt) @@ -68,9 +69,10 @@ def main(opt): # p.requires_grad = False # Set optimizer - # optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, model.parameters())) - optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters()), - lr=1e-3, momentum=.9, weight_decay=5e-4) + if opt.optimizer is 'Adam': + optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-4, weight_decay=5e-4) + else: + optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-3, momentum=.9, weight_decay=5e-4) start_epoch = checkpoint['epoch'] + 1 if checkpoint['optimizer'] is not None: @@ -91,8 +93,10 @@ def main(opt): model.to(device).train() # Set optimizer - # optimizer = torch.optim.Adam(model.parameters(), lr=1e-4, weight_decay=5e-4) - optimizer = torch.optim.SGD(model.parameters(), lr=1e-3, momentum=.9, weight_decay=5e-4) + if opt.optimizer is 'Adam': + optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-4, weight_decay=5e-4) + else: + optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-3, momentum=.9, weight_decay=5e-4) # Set scheduler # scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[54, 61], gamma=0.1) diff --git a/utils/gcp.sh b/utils/gcp.sh index 691e1257..b041bf46 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -11,7 +11,7 @@ gsutil cp gs://ultralytics/yolov3.pt yolov3/weights python3 detect.py # Test -python3 test.py -img_size 416 -weights_path weights/latest.pt -conf_thres 0.5 +python3 test.py -img_size 416 -weights_path weights/latest.pt # Download and Test sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 From b07ee41867e87aff9847d5f4a4e1de9ac464b529 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 27 Nov 2018 18:14:48 +0100 Subject: [PATCH 0210/2595] updates --- README.md | 2 +- models.py | 18 +++++++++++++++--- train.py | 40 ++++++++++++++++++++++++---------------- 3 files changed, 40 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 481915c2..0c5cd987 100755 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ The https://github.com/ultralytics/yolov3 repo contains inference and training c # Requirements -Python 3.6 or later with the following `pip3 install -U -r requirements.txt` packages: +Python 3.7 or later with the following `pip3 install -U -r requirements.txt` packages: - `numpy` - `torch` diff --git a/models.py b/models.py index fd404375..7f746442 100755 --- a/models.py +++ b/models.py @@ -102,8 +102,9 @@ class YOLOLayer(nn.Module): self.weights = class_weights() self.loss_means = torch.ones(6) + self.tx, self.ty, self.tw, self.th = [], [], [], [] - def forward(self, p, targets=None, batch_report=False): + def forward(self, p, targets=None, batch_report=False, var=None): FT = torch.cuda.FloatTensor if p.is_cuda else torch.FloatTensor bs = p.shape[0] # batch size @@ -171,6 +172,17 @@ class YOLOLayer(nn.Module): lw = k * MSELoss(w[mask], tw[mask]) lh = k * MSELoss(h[mask], th[mask]) + # self.tx.extend(tx[mask].data.numpy()) + # self.ty.extend(ty[mask].data.numpy()) + # self.tw.extend(tw[mask].data.numpy()) + # self.th.extend(th[mask].data.numpy()) + # print([np.mean(self.tx), np.std(self.tx)],[np.mean(self.ty), np.std(self.ty)],[np.mean(self.tw), np.std(self.tw)],[np.mean(self.th), np.std(self.th)]) + # [0.5040668, 0.2885492] [0.51384246, 0.28328574] [-0.4754091, 0.57951087] [-0.25998235, 0.44858757] + # [0.50184494, 0.2858976] [0.51747805, 0.2896323] [0.12962963, 0.6263085] [-0.2722081, 0.61574113] + # [0.5032071, 0.28825334] [0.5063132, 0.2808862] [0.21124361, 0.44760725] [0.35445485, 0.6427766] + # import matplotlib.pyplot as plt + # plt.hist(self.x) + # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) lconf = (k * 10) * BCEWithLogitsLoss(pred_conf, mask.float()) @@ -227,7 +239,7 @@ class Darknet(nn.Module): self.img_size = img_size self.loss_names = ['loss', 'x', 'y', 'w', 'h', 'conf', 'cls', 'nT', 'TP', 'FP', 'FPe', 'FN', 'TC'] - def forward(self, x, targets=None, batch_report=False): + def forward(self, x, targets=None, batch_report=False, var=0): is_training = targets is not None output = [] self.losses = defaultdict(float) @@ -245,7 +257,7 @@ class Darknet(nn.Module): elif module_def['type'] == 'yolo': # Train phase: get loss if is_training: - x, *losses = module[0](x, targets, batch_report) + x, *losses = module[0](x, targets, batch_report, var) for name, loss in zip(self.loss_names, losses): self.losses[name] += loss # Test phase: Get detections diff --git a/train.py b/train.py index 2f200ac8..60fa867d 100644 --- a/train.py +++ b/train.py @@ -14,7 +14,9 @@ parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file p parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each image dimension') parser.add_argument('-resume', default=False, help='resume training flag') parser.add_argument('-batch_report', default=False, help='report TP, FP, FN, P and R per batch (slower)') -parser.add_argument('-optimizer', default='SGD', help='Optimizer') +parser.add_argument('-optimizer', default='SGD', help='optimizer') +parser.add_argument('-freeze_darknet53', default=False, help='freeze darknet53.conv.74 layers for first epoch') +parser.add_argument('-var', type=float, default=0, help='optional test variable') opt = parser.parse_args() print(opt) @@ -51,9 +53,7 @@ def main(opt): # Get dataloader dataloader = load_images_and_labels(train_path, batch_size=opt.batch_size, img_size=opt.img_size, augment=True) - # Reload saved optimizer state - start_epoch = 0 - best_loss = float('inf') + lr0 = 0.001 if opt.resume: checkpoint = torch.load('weights/latest.pt', map_location='cpu') @@ -69,10 +69,7 @@ def main(opt): # p.requires_grad = False # Set optimizer - if opt.optimizer is 'Adam': - optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-4, weight_decay=5e-4) - else: - optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-3, momentum=.9, weight_decay=5e-4) + optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters()), lr=lr0, momentum=.9) start_epoch = checkpoint['epoch'] + 1 if checkpoint['optimizer'] is not None: @@ -82,6 +79,9 @@ def main(opt): del checkpoint # current, saved else: + start_epoch = 0 + best_loss = float('inf') + # Initialize model with darknet53 weights (optional) if not os.path.isfile('weights/darknet53.conv.74'): os.system('wget https://pjreddie.com/media/files/darknet53.conv.74 -P weights') @@ -93,10 +93,7 @@ def main(opt): model.to(device).train() # Set optimizer - if opt.optimizer is 'Adam': - optimizer = torch.optim.Adam(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-4, weight_decay=5e-4) - else: - optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-3, momentum=.9, weight_decay=5e-4) + optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters()), lr=lr0, momentum=.9) # Set scheduler # scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[54, 61], gamma=0.1) @@ -114,12 +111,23 @@ def main(opt): # Update scheduler (manual) at 0, 54, 61 epochs to 1e-3, 1e-4, 1e-5 if epoch > 50: - lr = 1e-4 + lr = lr0 / 10 else: - lr = 1e-3 + lr = lr0 for g in optimizer.param_groups: g['lr'] = lr + # Freeze darknet53.conv.74 layers for first epoch + if opt.freeze_darknet53: + if epoch == 0: + for i, (name, p) in enumerate(model.named_parameters()): + if int(name.split('.')[1]) < 75: # if layer < 75 + p.requires_grad = False + elif epoch == 1: + for i, (name, p) in enumerate(model.named_parameters()): + if int(name.split('.')[1]) < 75: # if layer < 75 + p.requires_grad = True + ui = -1 rloss = defaultdict(float) # running loss metrics = torch.zeros(3, num_classes) @@ -130,12 +138,12 @@ def main(opt): # SGD burn-in if (epoch == 0) & (i <= 1000): - lr = 1e-3 * (i / 1000) ** 4 + lr = lr0 * (i / 1000) ** 4 for g in optimizer.param_groups: g['lr'] = lr # Compute loss, compute gradient, update parameters - loss = model(imgs.to(device), targets, batch_report=opt.batch_report) + loss = model(imgs.to(device), targets, batch_report=opt.batch_report, var=opt.var) loss.backward() # accumulated_batches = 1 # accumulate gradient for 4 batches before stepping optimizer From 5a0575af3a036c15a62925e60b07e9e9590e8ed2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 27 Nov 2018 18:43:46 +0100 Subject: [PATCH 0211/2595] updates --- train.py | 2 +- utils/gcp.sh | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index 60fa867d..1dff7feb 100644 --- a/train.py +++ b/train.py @@ -15,7 +15,7 @@ parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each i parser.add_argument('-resume', default=False, help='resume training flag') parser.add_argument('-batch_report', default=False, help='report TP, FP, FN, P and R per batch (slower)') parser.add_argument('-optimizer', default='SGD', help='optimizer') -parser.add_argument('-freeze_darknet53', default=False, help='freeze darknet53.conv.74 layers for first epoch') +parser.add_argument('-freeze_darknet53', default=True, help='freeze darknet53.conv.74 layers for first epoch') parser.add_argument('-var', type=float, default=0, help='optional test variable') opt = parser.parse_args() print(opt) diff --git a/utils/gcp.sh b/utils/gcp.sh index b041bf46..6d0253cb 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -30,3 +30,14 @@ gsutil cp yolov3/weights/latest.pt gs://ultralytics # Copy latest.pt from bucket gsutil cp gs://ultralytics/latest.pt yolov3/weights/latest.pt +# Testing +sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 +python3 train.py -epochs 1 -var 1 +python3 train.py -epochs 1 -var 2 +python3 train.py -epochs 1 -var 4 +python3 train.py -epochs 1 -var 8 +python3 train.py -epochs 1 -var 16 +python3 train.py -epochs 1 -var 32 +python3 train.py -epochs 1 -var 64 +sudo shutdown + From cc419d88eae39350b05e56c7b3913b353a64cb09 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 28 Nov 2018 10:25:00 +0100 Subject: [PATCH 0212/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 1dff7feb..60fa867d 100644 --- a/train.py +++ b/train.py @@ -15,7 +15,7 @@ parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each i parser.add_argument('-resume', default=False, help='resume training flag') parser.add_argument('-batch_report', default=False, help='report TP, FP, FN, P and R per batch (slower)') parser.add_argument('-optimizer', default='SGD', help='optimizer') -parser.add_argument('-freeze_darknet53', default=True, help='freeze darknet53.conv.74 layers for first epoch') +parser.add_argument('-freeze_darknet53', default=False, help='freeze darknet53.conv.74 layers for first epoch') parser.add_argument('-var', type=float, default=0, help='optional test variable') opt = parser.parse_args() print(opt) From 053566b174052956bc53790c30e688ffabcc189a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 28 Nov 2018 10:27:55 +0100 Subject: [PATCH 0213/2595] updates --- train.py | 1 - 1 file changed, 1 deletion(-) diff --git a/train.py b/train.py index 60fa867d..ec1b90a3 100644 --- a/train.py +++ b/train.py @@ -14,7 +14,6 @@ parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file p parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each image dimension') parser.add_argument('-resume', default=False, help='resume training flag') parser.add_argument('-batch_report', default=False, help='report TP, FP, FN, P and R per batch (slower)') -parser.add_argument('-optimizer', default='SGD', help='optimizer') parser.add_argument('-freeze_darknet53', default=False, help='freeze darknet53.conv.74 layers for first epoch') parser.add_argument('-var', type=float, default=0, help='optional test variable') opt = parser.parse_args() From d5331be0a03bdf14375030d496c10c2981eefb03 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 29 Nov 2018 11:43:19 +0100 Subject: [PATCH 0214/2595] updates --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 7f746442..25f01250 100755 --- a/models.py +++ b/models.py @@ -184,9 +184,9 @@ class YOLOLayer(nn.Module): # plt.hist(self.x) # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) - lconf = (k * 10) * BCEWithLogitsLoss(pred_conf, mask.float()) + lconf = (k * 32) * BCEWithLogitsLoss(pred_conf, mask.float()) - lcls = (k / 10) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) + lcls = (k / 4) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) # lcls = (k * 10) * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) From af0033c9e96a4a8dcc04f8fd737d0ccad3364f10 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 29 Nov 2018 11:59:29 +0100 Subject: [PATCH 0215/2595] updates --- train.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index ec1b90a3..3bd778e3 100644 --- a/train.py +++ b/train.py @@ -58,8 +58,9 @@ def main(opt): model.load_state_dict(checkpoint['model']) if torch.cuda.device_count() > 1: - print('Using ', torch.cuda.device_count(), ' GPUs') - model = nn.DataParallel(model) + raise Exception('Multi-GPU not currently supported: https://github.com/ultralytics/yolov3/issues/21') + # print('Using ', torch.cuda.device_count(), ' GPUs') + # model = nn.DataParallel(model) model.to(device).train() # # Transfer learning (train only YOLO layers) @@ -87,8 +88,9 @@ def main(opt): load_weights(model, 'weights/darknet53.conv.74') if torch.cuda.device_count() > 1: - print('Using ', torch.cuda.device_count(), ' GPUs') - model = nn.DataParallel(model) + raise Exception('Multi-GPU not currently supported: https://github.com/ultralytics/yolov3/issues/21') + # print('Using ', torch.cuda.device_count(), ' GPUs') + # model = nn.DataParallel(model) model.to(device).train() # Set optimizer From bd649f241fa6fe0c3c0945a7720933d0733fe936 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 29 Nov 2018 12:12:48 +0100 Subject: [PATCH 0216/2595] updates --- utils/gcp.sh | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 6d0253cb..7910ec6c 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -32,12 +32,6 @@ gsutil cp gs://ultralytics/latest.pt yolov3/weights/latest.pt # Testing sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 -python3 train.py -epochs 1 -var 1 -python3 train.py -epochs 1 -var 2 -python3 train.py -epochs 1 -var 4 -python3 train.py -epochs 1 -var 8 -python3 train.py -epochs 1 -var 16 -python3 train.py -epochs 1 -var 32 -python3 train.py -epochs 1 -var 64 +python3 train.py -epochs 3 -var 64 sudo shutdown From 35e445c5da3cc167461c7328e744e3f73e622c5c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 29 Nov 2018 22:10:35 +0100 Subject: [PATCH 0217/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 25f01250..d2c263f2 100755 --- a/models.py +++ b/models.py @@ -184,7 +184,7 @@ class YOLOLayer(nn.Module): # plt.hist(self.x) # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) - lconf = (k * 32) * BCEWithLogitsLoss(pred_conf, mask.float()) + lconf = (k * 64) * BCEWithLogitsLoss(pred_conf, mask.float()) lcls = (k / 4) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) # lcls = (k * 10) * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) From 0240ac44f63d80e86fbefca838566c87d9e8e311 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 30 Nov 2018 11:56:38 +0100 Subject: [PATCH 0218/2595] updates --- utils/utils.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 9ae9b931..b1acd0d6 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -442,12 +442,28 @@ def plot_results(): import matplotlib.pyplot as plt plt.figure(figsize=(16, 8)) s = ['X', 'Y', 'Width', 'Height', 'Objectness', 'Classification', 'Total Loss', 'Precision', 'Recall', 'mAP'] - for f in ('results_d5.txt', 'results_d10.txt', 'results_new.txt', + for f in ('results.txt', ): - results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 9, 10]).T # column 16 is mAP - for i in range(9): + results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 17, 18, 16]).T # column 16 is mAP + for i in range(10): plt.subplot(2, 5, i + 1) plt.plot(results[i, :250], marker='.', label=f) plt.title(s[i]) if i == 0: plt.legend() + +# def plot_results(): +# # Plot YOLO training results file 'results.txt' +# import numpy as np +# import matplotlib.pyplot as plt +# plt.figure(figsize=(16, 8)) +# s = ['X', 'Y', 'Width', 'Height', 'Objectness', 'Classification', 'Total Loss', 'Precision', 'Recall', 'mAP'] +# for f in ('results_d5.txt', 'results_d10.txt', 'results_64.txt', +# ): +# results = np.loadtxt(f, usecols=[16]).T # column 16 is mAP +# for i in range(1): +# plt.subplot(2, 5, i + 1) +# plt.plot(results, marker='.', label=f) +# plt.title(s[i]) +# if i == 0: +# plt.legend() \ No newline at end of file From b0c0182062f025d6ea66170c64df13b20ca2888b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 30 Nov 2018 11:57:14 +0100 Subject: [PATCH 0219/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index b1acd0d6..dd261c7d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -452,7 +452,7 @@ def plot_results(): if i == 0: plt.legend() -# def plot_results(): +# def plot_results(): # (OLD FORMAT before October 2018) # # Plot YOLO training results file 'results.txt' # import numpy as np # import matplotlib.pyplot as plt From 448a8f0f4bffdc6f80bbf1645d90fb6422c5f47c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Dec 2018 12:09:40 +0100 Subject: [PATCH 0220/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index d2c263f2..d842b436 100755 --- a/models.py +++ b/models.py @@ -184,7 +184,7 @@ class YOLOLayer(nn.Module): # plt.hist(self.x) # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) - lconf = (k * 64) * BCEWithLogitsLoss(pred_conf, mask.float()) + lconf = (k * 16) * BCEWithLogitsLoss(pred_conf, mask.float()) lcls = (k / 4) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) # lcls = (k * 10) * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) From f05934f2ebdd64299de290e3f103fc8c671eb5ae Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 3 Dec 2018 01:36:03 +0100 Subject: [PATCH 0221/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index d842b436..d2c263f2 100755 --- a/models.py +++ b/models.py @@ -184,7 +184,7 @@ class YOLOLayer(nn.Module): # plt.hist(self.x) # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) - lconf = (k * 16) * BCEWithLogitsLoss(pred_conf, mask.float()) + lconf = (k * 64) * BCEWithLogitsLoss(pred_conf, mask.float()) lcls = (k / 4) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) # lcls = (k * 10) * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) From 4edd41e2e880d45fd2bd62bb3ef07557699d0de9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 3 Dec 2018 14:03:27 +0100 Subject: [PATCH 0222/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0c5cd987..0ddad037 100755 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Python 3.7 or later with the following `pip3 install -U -r requirements.txt` pac # Training -**Start Training:** Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh` and specifying COCO path on line 37 (local) or line 39 (cloud). +**Start Training:** Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh` and specifying COCO path on line 37 (local) or line 39 (cloud). Training runs about 1 hour per COCO epoch on a 1080 Ti. **Resume Training:** Run `train.py -resume 1` to resume training from the most recently saved checkpoint `latest.pt`. From 5843c41dfcd5400a4b084ba9c26680372ecc2747 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 3 Dec 2018 14:05:50 +0100 Subject: [PATCH 0223/2595] add multi_scale support --- models.py | 3 +-- train.py | 11 +++++++---- utils/datasets.py | 6 +++--- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/models.py b/models.py index d2c263f2..1d105709 100755 --- a/models.py +++ b/models.py @@ -184,15 +184,14 @@ class YOLOLayer(nn.Module): # plt.hist(self.x) # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) - lconf = (k * 64) * BCEWithLogitsLoss(pred_conf, mask.float()) lcls = (k / 4) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) # lcls = (k * 10) * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) - # Add confidence loss for background anchors (noobj) # lconf += k * BCEWithLogitsLoss(pred_conf[~mask], mask[~mask].float()) + lconf = (k * 64) * BCEWithLogitsLoss(pred_conf, mask.float()) # Sum loss components balance_losses_flag = False diff --git a/train.py b/train.py index 3bd778e3..84932406 100644 --- a/train.py +++ b/train.py @@ -8,15 +8,18 @@ from utils.utils import * parser = argparse.ArgumentParser() parser.add_argument('-epochs', type=int, default=100, help='number of epochs') -parser.add_argument('-batch_size', type=int, default=16, help='size of each image batch') +parser.add_argument('-batch_size', type=int, default=2, help='size of each image batch') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='data config file path') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') -parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each image dimension') +parser.add_argument('-multi_scale', default=True, help='random image sizes per batch 320 - 608') +parser.add_argument('-img_size', type=int, default=32 * 13, help='pixels') parser.add_argument('-resume', default=False, help='resume training flag') parser.add_argument('-batch_report', default=False, help='report TP, FP, FN, P and R per batch (slower)') parser.add_argument('-freeze_darknet53', default=False, help='freeze darknet53.conv.74 layers for first epoch') parser.add_argument('-var', type=float, default=0, help='optional test variable') opt = parser.parse_args() +if opt.multi_scale: # pass maximum multi_scale size + opt.img_size = 608 print(opt) # Import test.py to get mAP after each epoch @@ -50,7 +53,8 @@ def main(opt): model = Darknet(opt.cfg, opt.img_size) # Get dataloader - dataloader = load_images_and_labels(train_path, batch_size=opt.batch_size, img_size=opt.img_size, augment=True) + dataloader = load_images_and_labels(train_path, batch_size=opt.batch_size, img_size=opt.img_size, + multi_scale=opt.multi_scale, augment=True) lr0 = 0.001 if opt.resume: @@ -217,4 +221,3 @@ def main(opt): if __name__ == '__main__': torch.cuda.empty_cache() main(opt) - torch.cuda.empty_cache() diff --git a/utils/datasets.py b/utils/datasets.py index a356c106..89f3c27e 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -60,7 +60,7 @@ class load_images(): # for inference class load_images_and_labels(): # for training - def __init__(self, path, batch_size=1, img_size=608, augment=False): + def __init__(self, path, batch_size=1, img_size=608, multi_scale=False, augment=False): self.path = path # self.img_files = sorted(glob.glob('%s/*.*' % path)) with open(path, 'r') as file: @@ -79,6 +79,7 @@ class load_images_and_labels(): # for training self.nB = math.ceil(self.nF / batch_size) # number of batches self.batch_size = batch_size self.height = img_size + self.multi_scale = multi_scale self.augment = augment assert self.nB > 0, 'No images found in path %s' % path @@ -100,8 +101,7 @@ class load_images_and_labels(): # for training ia = self.count * self.batch_size ib = min((self.count + 1) * self.batch_size, self.nF) - multi_scale = False - if multi_scale and self.augment: + if self.multi_scale: # Multi-Scale YOLO Training height = random.choice(range(10, 20)) * 32 # 320 - 608 pixels else: From 40b536a4269cb4ec712321153bbfd39aabe96a7c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 3 Dec 2018 14:08:59 +0100 Subject: [PATCH 0224/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 84932406..7548e4e1 100644 --- a/train.py +++ b/train.py @@ -11,7 +11,7 @@ parser.add_argument('-epochs', type=int, default=100, help='number of epochs') parser.add_argument('-batch_size', type=int, default=2, help='size of each image batch') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='data config file path') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') -parser.add_argument('-multi_scale', default=True, help='random image sizes per batch 320 - 608') +parser.add_argument('-multi_scale', default=False, help='random image sizes per batch 320 - 608') parser.add_argument('-img_size', type=int, default=32 * 13, help='pixels') parser.add_argument('-resume', default=False, help='resume training flag') parser.add_argument('-batch_report', default=False, help='report TP, FP, FN, P and R per batch (slower)') From b64620cf755a08c9de08e808689bf6438aff01af Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 3 Dec 2018 14:12:46 +0100 Subject: [PATCH 0225/2595] updates --- train.py | 2 +- utils/utils.py | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index 7548e4e1..fa5dead6 100644 --- a/train.py +++ b/train.py @@ -8,7 +8,7 @@ from utils.utils import * parser = argparse.ArgumentParser() parser.add_argument('-epochs', type=int, default=100, help='number of epochs') -parser.add_argument('-batch_size', type=int, default=2, help='size of each image batch') +parser.add_argument('-batch_size', type=int, default=16, help='size of each image batch') parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='data config file path') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('-multi_scale', default=False, help='random image sizes per batch 320 - 608') diff --git a/utils/utils.py b/utils/utils.py index dd261c7d..c4884f45 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -442,12 +442,13 @@ def plot_results(): import matplotlib.pyplot as plt plt.figure(figsize=(16, 8)) s = ['X', 'Y', 'Width', 'Height', 'Objectness', 'Classification', 'Total Loss', 'Precision', 'Recall', 'mAP'] - for f in ('results.txt', + for f in ('results_64.txt','results_642.txt' ): results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 17, 18, 16]).T # column 16 is mAP + n = results.shape[1] for i in range(10): plt.subplot(2, 5, i + 1) - plt.plot(results[i, :250], marker='.', label=f) + plt.plot(range(1,n), results[i, 1:], marker='.', label=f) plt.title(s[i]) if i == 0: plt.legend() @@ -466,4 +467,4 @@ def plot_results(): # plt.plot(results, marker='.', label=f) # plt.title(s[i]) # if i == 0: -# plt.legend() \ No newline at end of file +# plt.legend() From 43d74fd8407ba5c38baee8ae86dec17f4d6274e8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 3 Dec 2018 15:42:10 +0100 Subject: [PATCH 0226/2595] updates --- utils/gcp.sh | 1 + utils/utils.py | 23 ++++------------------- 2 files changed, 5 insertions(+), 19 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 7910ec6c..f5c2c4d8 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -29,6 +29,7 @@ gsutil cp yolov3/weights/latest.pt gs://ultralytics # Copy latest.pt from bucket gsutil cp gs://ultralytics/latest.pt yolov3/weights/latest.pt +wget https://storage.googleapis.com/ultralytics/latest.pt # Testing sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 diff --git a/utils/utils.py b/utils/utils.py index c4884f45..62d946b5 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -438,33 +438,18 @@ def coco_class_count(path='/Users/glennjocher/downloads/DATA/coco/labels/train20 def plot_results(): # Plot YOLO training results file 'results.txt' + import glob import numpy as np import matplotlib.pyplot as plt plt.figure(figsize=(16, 8)) s = ['X', 'Y', 'Width', 'Height', 'Objectness', 'Classification', 'Total Loss', 'Precision', 'Recall', 'mAP'] - for f in ('results_64.txt','results_642.txt' - ): + files = sorted(glob.glob('results*.txt')) + for f in files: results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 17, 18, 16]).T # column 16 is mAP n = results.shape[1] for i in range(10): plt.subplot(2, 5, i + 1) - plt.plot(range(1,n), results[i, 1:], marker='.', label=f) + plt.plot(range(1, n), results[i, 1:], marker='.', label=f) plt.title(s[i]) if i == 0: plt.legend() - -# def plot_results(): # (OLD FORMAT before October 2018) -# # Plot YOLO training results file 'results.txt' -# import numpy as np -# import matplotlib.pyplot as plt -# plt.figure(figsize=(16, 8)) -# s = ['X', 'Y', 'Width', 'Height', 'Objectness', 'Classification', 'Total Loss', 'Precision', 'Recall', 'mAP'] -# for f in ('results_d5.txt', 'results_d10.txt', 'results_64.txt', -# ): -# results = np.loadtxt(f, usecols=[16]).T # column 16 is mAP -# for i in range(1): -# plt.subplot(2, 5, i + 1) -# plt.plot(results, marker='.', label=f) -# plt.title(s[i]) -# if i == 0: -# plt.legend() From dc704edf1701e18e7cedd09df77bb84e183cc859 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 3 Dec 2018 20:56:54 +0100 Subject: [PATCH 0227/2595] updates --- data/get_coco_dataset.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/data/get_coco_dataset.sh b/data/get_coco_dataset.sh index 4edd2b99..6206de32 100755 --- a/data/get_coco_dataset.sh +++ b/data/get_coco_dataset.sh @@ -24,8 +24,8 @@ tar xzf labels.tgz unzip -q instances_train-val2014.zip # Set Up Image Lists -#paste <(awk "{print \"$PWD\"}" <5k.part) 5k.part | tr -d '\t' > 5k.txt -#paste <(awk "{print \"$PWD\"}" trainvalno5k.txt +paste <(awk "{print \"$PWD\"}" <5k.part) 5k.part | tr -d '\t' > 5k.txt +paste <(awk "{print \"$PWD\"}" trainvalno5k.txt sudo shutdown @@ -34,3 +34,5 @@ sudo shutdown # tar -xvzf train_images.tgz # sudo rm -rf train_images/._* # lastly convert each .tif to a .bmp for faster loading in cv2 + +# /home/glenn_jocher3/coco/images/train2014/COCO_train2014_000000167126.jpg # bad image?? From 10cca39934c14a5cc669b5d1340b9a2ba4f0dc87 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 3 Dec 2018 21:08:45 +0100 Subject: [PATCH 0228/2595] updates --- cfg/coco.data | 4 ++-- train.py | 5 +---- utils/datasets.py | 9 ++------- utils/utils.py | 2 +- 4 files changed, 6 insertions(+), 14 deletions(-) diff --git a/cfg/coco.data b/cfg/coco.data index 785b5e25..d248a4cd 100644 --- a/cfg/coco.data +++ b/cfg/coco.data @@ -1,6 +1,6 @@ classes=80 -train=/Users/glennjocher/Downloads/DATA/coco/trainvalno5k.txt -valid=/Users/glennjocher/Downloads/DATA/coco/5k.txt +train=../coco/trainvalno5k.txt +valid=../coco/5k.txt names=data/coco.names backup=backup/ eval=coco diff --git a/train.py b/train.py index fa5dead6..beb98933 100644 --- a/train.py +++ b/train.py @@ -44,10 +44,7 @@ def main(opt): # Configure run data_config = parse_data_config(opt.data_config_path) num_classes = int(data_config['classes']) - if platform == 'darwin': # MacOS (local) - train_path = data_config['train'] - else: # linux (cloud, i.e. gcp) - train_path = '../coco/trainvalno5k.part' + train_path = '../coco/trainvalno5k.txt' # Initialize model model = Darknet(opt.cfg, opt.img_size) diff --git a/utils/datasets.py b/utils/datasets.py index 89f3c27e..39894862 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -66,12 +66,7 @@ class load_images_and_labels(): # for training with open(path, 'r') as file: self.img_files = file.readlines() - if platform == 'darwin': # MacOS (local) - self.img_files = [path.replace('\n', '').replace('/images', '/Users/glennjocher/Downloads/data/coco/images') - for path in self.img_files] - else: # linux (gcp cloud) - self.img_files = [path.replace('\n', '').replace('/images', '../coco/images') for path in self.img_files] - + self.img_files = [path.replace('\n', '') for path in self.img_files] self.label_files = [path.replace('images', 'labels').replace('.png', '.txt').replace('.jpg', '.txt') for path in self.img_files] @@ -287,7 +282,7 @@ def random_affine(img, targets=None, degrees=(-10, 10), translate=(.1, .1), scal return imw -def convert_tif2bmp(p='/Users/glennjocher/Downloads/DATA/xview/val_images_bmp'): +def convert_tif2bmp(p='../xview/val_images_bmp'): import glob import cv2 files = sorted(glob.glob('%s/*.tif' % p)) diff --git a/utils/utils.py b/utils/utils.py index 62d946b5..6fcf5fac 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -424,7 +424,7 @@ def strip_optimizer_from_checkpoint(filename='weights/best.pt'): torch.save(a, filename.replace('.pt', '_lite.pt')) -def coco_class_count(path='/Users/glennjocher/downloads/DATA/coco/labels/train2014/'): +def coco_class_count(path='../coco/labels/train2014/'): import glob nC = 80 # number classes From fd6619d77371d76425e644ee02932be0bd71069b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 3 Dec 2018 22:33:25 +0100 Subject: [PATCH 0229/2595] updates --- train.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index beb98933..93ac9c96 100644 --- a/train.py +++ b/train.py @@ -35,7 +35,8 @@ torch.manual_seed(0) if cuda: torch.cuda.manual_seed(0) torch.cuda.manual_seed_all(0) - torch.backends.cudnn.benchmark = True + if not opt.multi_scale: + torch.backends.cudnn.benchmark = True def main(opt): From be8603b2dd955ebbdd6328207436ed3acac34293 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 4 Dec 2018 19:17:03 +0100 Subject: [PATCH 0230/2595] updates --- detect.py | 6 +++--- test.py | 6 +++--- utils/gcp.sh | 3 +++ 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/detect.py b/detect.py index 5c1d9fb8..7953f30e 100755 --- a/detect.py +++ b/detect.py @@ -35,11 +35,11 @@ def main(opt): model = Darknet(opt.cfg, opt.img_size) weights_path = f_path + 'weights/yolov3.pt' - if weights_path.endswith('.weights'): # saved in darknet format - load_weights(model, weights_path) - else: # endswith('.pt'), saved in pytorch format + if weights_path.endswith('.pt'): # pytorch format if weights_path.endswith('weights/yolov3.pt') and not os.path.isfile(weights_path): os.system('wget https://storage.googleapis.com/ultralytics/yolov3.pt -O ' + weights_path) + else: # darknet format + load_weights(model, weights_path) checkpoint = torch.load(weights_path, map_location='cpu') model.load_state_dict(checkpoint['model']) diff --git a/test.py b/test.py index 4d739993..59e725ca 100644 --- a/test.py +++ b/test.py @@ -35,12 +35,12 @@ def main(opt): model = Darknet(opt.cfg, opt.img_size) # Load weights - if opt.weights_path.endswith('.weights'): # darknet format - load_weights(model, opt.weights_path) - elif opt.weights_path.endswith('.pt'): # pytorch format + if opt.weights_path.endswith('.pt'): # pytorch format checkpoint = torch.load(opt.weights_path, map_location='cpu') model.load_state_dict(checkpoint['model']) del checkpoint + else: # darknet format + load_weights(model, opt.weights_path) model.to(device).eval() diff --git a/utils/gcp.sh b/utils/gcp.sh index f5c2c4d8..3e27c169 100644 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -13,6 +13,9 @@ python3 detect.py # Test python3 test.py -img_size 416 -weights_path weights/latest.pt +# Test Darknet +python3 test.py -img_size 416 -weights_path ../darknet/backup/yolov3.backup + # Download and Test sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 wget https://pjreddie.com/media/files/yolov3.weights -P weights From 45ee668fd70be84b6eeafd36762c933a53abad0b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 4 Dec 2018 19:20:09 +0100 Subject: [PATCH 0231/2595] updates --- test.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/test.py b/test.py index 59e725ca..f65d373c 100644 --- a/test.py +++ b/test.py @@ -26,10 +26,7 @@ def main(opt): # Configure run data_config = parse_data_config(opt.data_config_path) nC = int(data_config['classes']) # number of classes (80 for COCO) - if platform == 'darwin': # MacOS (local) - test_path = data_config['valid'] - else: # linux (cloud, i.e. gcp) - test_path = '../coco/5k.part' + test_path = data_config['valid'] # Initiate model model = Darknet(opt.cfg, opt.img_size) From 5a566454f5efc4ce424c84826358b5de602d7aad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20Garc=C3=ADa?= Date: Wed, 5 Dec 2018 11:55:27 +0100 Subject: [PATCH 0232/2595] Extract seed and cuda initialization utils --- detect.py | 6 ++++-- test.py | 11 ++++++++--- train.py | 20 ++++++++++---------- utils/torch_utils.py | 23 +++++++++++++++++++++++ utils/utils.py | 8 ++++++++ 5 files changed, 53 insertions(+), 15 deletions(-) create mode 100644 utils/torch_utils.py diff --git a/detect.py b/detect.py index 7953f30e..cc2ef727 100755 --- a/detect.py +++ b/detect.py @@ -5,8 +5,6 @@ from models import * from utils.datasets import * from utils.utils import * -cuda = torch.cuda.is_available() -device = torch.device('cuda:0' if cuda else 'cpu') f_path = os.path.dirname(os.path.realpath(__file__)) + '/' parser = argparse.ArgumentParser() @@ -28,6 +26,10 @@ print(opt) def main(opt): + + device = torch_utils.select_device() + print("Using device: \"{}\"".format(device)) + os.system('rm -rf ' + opt.output_folder) os.makedirs(opt.output_folder, exist_ok=True) diff --git a/test.py b/test.py index f65d373c..c0cf476b 100644 --- a/test.py +++ b/test.py @@ -4,6 +4,8 @@ from models import * from utils.datasets import * from utils.utils import * +from utils import torch_utils + parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('-batch_size', type=int, default=32, help='size of each image batch') parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='path to model config file') @@ -18,11 +20,11 @@ parser.add_argument('-img_size', type=int, default=416, help='size of each image opt = parser.parse_args() print(opt, end='\n\n') -cuda = torch.cuda.is_available() -device = torch.device('cuda:0' if cuda else 'cpu') - def main(opt): + device = torch_utils.select_device() + print("Using device: \"{}\"".format(device)) + # Configure run data_config = parse_data_config(opt.data_config_path) nC = int(data_config['classes']) # number of classes (80 for COCO) @@ -128,4 +130,7 @@ def main(opt): if __name__ == '__main__': + + init_seeds() + mAP = main(opt) diff --git a/train.py b/train.py index 93ac9c96..103d6f03 100644 --- a/train.py +++ b/train.py @@ -6,6 +6,8 @@ from models import * from utils.datasets import * from utils.utils import * +from utils import torch_utils + parser = argparse.ArgumentParser() parser.add_argument('-epochs', type=int, default=100, help='number of epochs') parser.add_argument('-batch_size', type=int, default=16, help='size of each image batch') @@ -26,20 +28,15 @@ print(opt) sys.argv[1:] = [] # delete any train.py command-line arguments before they reach test.py import test # must follow sys.argv[1:] = [] -cuda = torch.cuda.is_available() -device = torch.device('cuda:0' if cuda else 'cpu') -random.seed(0) -np.random.seed(0) -torch.manual_seed(0) -if cuda: - torch.cuda.manual_seed(0) - torch.cuda.manual_seed_all(0) +def main(opt): + + device = torch_utils.select_device() + print("Using device: \"{}\"".format(device)) + if not opt.multi_scale: torch.backends.cudnn.benchmark = True - -def main(opt): os.makedirs('weights', exist_ok=True) # Configure run @@ -217,5 +214,8 @@ def main(opt): if __name__ == '__main__': + + init_seeds() + torch.cuda.empty_cache() main(opt) diff --git a/utils/torch_utils.py b/utils/torch_utils.py new file mode 100644 index 00000000..58bf5ff4 --- /dev/null +++ b/utils/torch_utils.py @@ -0,0 +1,23 @@ +import torch + + +def check_cuda(): + return torch.cuda.is_available() + + +CUDA_AVAILABLE = check_cuda() + + +def init_seeds(seed=0): + torch.manual_seed(seed) + if CUDA_AVAILABLE: + torch.cuda.manual_seed(seed) + torch.cuda.manual_seed_all(seed) + + +def select_device(force_cpu=False): + if force_cpu: + device = torch.device('cpu') + else: + device = torch.device('cuda:0' if CUDA_AVAILABLE else 'cpu') + return device diff --git a/utils/utils.py b/utils/utils.py index 6fcf5fac..12d161bd 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -5,11 +5,19 @@ import numpy as np import torch import torch.nn.functional as F +from utils import torch_utils + # Set printoptions torch.set_printoptions(linewidth=1320, precision=5, profile='long') np.set_printoptions(linewidth=320, formatter={'float_kind': '{:11.5g}'.format}) # format short g, %precision=5 +def init_seeds(seed=0): + random.seed(seed) + np.random.seed(seed) + torch_utils.init_seeds(seed=seed) + + def load_classes(path): """ Loads class labels at 'path' From c807c16b7909ad6885f57f35bab678b3f3bc35f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20Garc=C3=ADa?= Date: Wed, 5 Dec 2018 14:31:08 +0100 Subject: [PATCH 0233/2595] Fix argument parser bad practice Keep parsing inside __main__ block and call methods with arguments Add double -- for long argument names (- reserved for shortcuts) --- README.md | 2 +- detect.py | 111 +++++++++++++++++++++++++++++++-------------------- test.py | 81 +++++++++++++++++++++++-------------- train.py | 93 +++++++++++++++++++++++++++--------------- utils/gcp.sh | 14 +++---- 5 files changed, 188 insertions(+), 113 deletions(-) mode change 100644 => 100755 utils/gcp.sh diff --git a/README.md b/README.md index 0ddad037..cbb37de9 100755 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ Checkpoints are saved in `/checkpoints` directory. Run `detect.py` to apply trai Run `test.py` to validate the official YOLOv3 weights `checkpoints/yolov3.weights` against the 5000 validation images. You should obtain a mAP of .581 using this repo (https://github.com/ultralytics/yolov3), compared to .579 as reported in darknet (https://arxiv.org/abs/1804.02767). -Run `test.py -weights_path checkpoints/latest.pt` to validate against the latest training checkpoint. +Run `test.py --weights checkpoints/latest.pt` to validate against the latest training checkpoint. # Contact diff --git a/detect.py b/detect.py index cc2ef727..a104e8a3 100755 --- a/detect.py +++ b/detect.py @@ -5,45 +5,39 @@ from models import * from utils.datasets import * from utils.utils import * -f_path = os.path.dirname(os.path.realpath(__file__)) + '/' - -parser = argparse.ArgumentParser() -# Get data configuration - -parser.add_argument('-image_folder', type=str, default='data/samples', help='path to images') -parser.add_argument('-output_folder', type=str, default='output', help='path to outputs') -parser.add_argument('-plot_flag', type=bool, default=True) -parser.add_argument('-txt_out', type=bool, default=False) - -parser.add_argument('-cfg', type=str, default=f_path + 'cfg/yolov3.cfg', help='cfg file path') -parser.add_argument('-class_path', type=str, default=f_path + 'data/coco.names', help='path to class label file') -parser.add_argument('-conf_thres', type=float, default=0.50, help='object confidence threshold') -parser.add_argument('-nms_thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') -parser.add_argument('-batch_size', type=int, default=1, help='size of the batches') -parser.add_argument('-img_size', type=int, default=32 * 13, help='size of each image dimension') -opt = parser.parse_args() -print(opt) +from utils import torch_utils -def main(opt): +def detect( + net_config_path, + images_path, + weights_file_path='weights/yolov3.pt', + output='output', + batch_size=16, + img_size=416, + conf_thres=0.3, + nms_thres=0.45, + save_txt=False, + save_images=False, + class_path='data/coco.names', +): device = torch_utils.select_device() print("Using device: \"{}\"".format(device)) - os.system('rm -rf ' + opt.output_folder) - os.makedirs(opt.output_folder, exist_ok=True) + os.system('rm -rf ' + output) + os.makedirs(output, exist_ok=True) # Load model - model = Darknet(opt.cfg, opt.img_size) + model = Darknet(net_config_path, img_size) - weights_path = f_path + 'weights/yolov3.pt' - if weights_path.endswith('.pt'): # pytorch format - if weights_path.endswith('weights/yolov3.pt') and not os.path.isfile(weights_path): - os.system('wget https://storage.googleapis.com/ultralytics/yolov3.pt -O ' + weights_path) + if weights_file_path.endswith('.pt'): # pytorch format + if weights_file_path.endswith('weights/yolov3.pt') and not os.path.isfile(weights_file_path): + os.system('wget https://storage.googleapis.com/ultralytics/yolov3.pt -O ' + weights_file_path) else: # darknet format - load_weights(model, weights_path) + load_weights(model, weights_file_path) - checkpoint = torch.load(weights_path, map_location='cpu') + checkpoint = torch.load(weights_file_path, map_location='cpu') model.load_state_dict(checkpoint['model']) del checkpoint @@ -61,8 +55,8 @@ def main(opt): model.to(device).eval() # Set Dataloader - classes = load_classes(opt.class_path) # Extracts class labels from file - dataloader = load_images(opt.image_folder, batch_size=opt.batch_size, img_size=opt.img_size) + classes = load_classes(class_path) # Extracts class labels from file + dataloader = load_images(images_path, batch_size=batch_size, img_size=img_size) imgs = [] # Stores image paths img_detections = [] # Stores detections for each image index @@ -73,10 +67,10 @@ def main(opt): # Get detections with torch.no_grad(): pred = model(torch.from_numpy(img).unsqueeze(0).to(device)) - pred = pred[pred[:, :, 4] > opt.conf_thres] + pred = pred[pred[:, :, 4] > conf_thres] if len(pred) > 0: - detections = non_max_suppression(pred.unsqueeze(0), opt.conf_thres, opt.nms_thres) + detections = non_max_suppression(pred.unsqueeze(0), conf_thres, nms_thres) img_detections.extend(detections) imgs.extend(img_paths) @@ -93,15 +87,15 @@ def main(opt): for img_i, (path, detections) in enumerate(zip(imgs, img_detections)): print("image %g: '%s'" % (img_i, path)) - if opt.plot_flag: + if save_images: img = cv2.imread(path) # The amount of padding that was added - pad_x = max(img.shape[0] - img.shape[1], 0) * (opt.img_size / max(img.shape)) - pad_y = max(img.shape[1] - img.shape[0], 0) * (opt.img_size / max(img.shape)) + pad_x = max(img.shape[0] - img.shape[1], 0) * (img_size / max(img.shape)) + pad_y = max(img.shape[1] - img.shape[0], 0) * (img_size / max(img.shape)) # Image height and width after padding is removed - unpad_h = opt.img_size - pad_y - unpad_w = opt.img_size - pad_x + unpad_h = img_size - pad_y + unpad_w = img_size - pad_x # Draw bounding boxes and labels of detections if detections is not None: @@ -109,7 +103,7 @@ def main(opt): bbox_colors = random.sample(color_list, len(unique_classes)) # write results to .txt file - results_img_path = os.path.join(opt.output_folder, path.split('/')[-1]) + results_img_path = os.path.join(output, path.split('/')[-1]) results_txt_path = results_img_path + '.txt' if os.path.isfile(results_txt_path): os.remove(results_txt_path) @@ -129,24 +123,55 @@ def main(opt): x1, y1, x2, y2 = max(x1, 0), max(y1, 0), max(x2, 0), max(y2, 0) # write to file - if opt.txt_out: + if save_txt: with open(results_txt_path, 'a') as file: file.write(('%g %g %g %g %g %g \n') % (x1, y1, x2, y2, cls_pred, cls_conf * conf)) - if opt.plot_flag: + if save_images: # Add the bbox to the plot label = '%s %.2f' % (classes[int(cls_pred)], conf) color = bbox_colors[int(np.where(unique_classes == int(cls_pred))[0])] plot_one_box([x1, y1, x2, y2], img, label=label, color=color) - if opt.plot_flag: + if save_images: # Save generated image with detections cv2.imwrite(results_img_path.replace('.bmp', '.jpg').replace('.tif', '.jpg'), img) if platform == 'darwin': # MacOS (local) - os.system('open ' + opt.output_folder) + os.system('open ' + output) if __name__ == '__main__': + parser = argparse.ArgumentParser() + # Get data configuration + + parser.add_argument('--image-folder', type=str, default='data/samples', help='path to images') + parser.add_argument('--output-folder', type=str, default='output', help='path to outputs') + parser.add_argument('--plot-flag', type=bool, default=True) + parser.add_argument('--txt-out', type=bool, default=False) + + parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') + parser.add_argument('--class-path', type=str, default='data/coco.names', help='path to class label file') + parser.add_argument('--conf-thres', type=float, default=0.50, help='object confidence threshold') + parser.add_argument('--nms-thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') + parser.add_argument('--batch-size', type=int, default=1, help='size of the batches') + parser.add_argument('--img-size', type=int, default=32 * 13, help='size of each image dimension') + opt = parser.parse_args() + print(opt) + torch.cuda.empty_cache() - main(opt) + + init_seeds() + + detect( + opt.cfg, + opt.image_folder, + output=opt.output_folder, + batch_size=opt.batch_size, + img_size=opt.img_size, + conf_thres=opt.conf_thres, + nms_thres=opt.nms_thres, + save_txt=opt.txt_out, + save_images=opt.plot_flag, + class_path=opt.class_path, + ) diff --git a/test.py b/test.py index c0cf476b..4630a0ee 100644 --- a/test.py +++ b/test.py @@ -6,47 +6,44 @@ from utils.utils import * from utils import torch_utils -parser = argparse.ArgumentParser(prog='test.py') -parser.add_argument('-batch_size', type=int, default=32, help='size of each image batch') -parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='path to model config file') -parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='path to data config file') -parser.add_argument('-weights_path', type=str, default='weights/yolov3.pt', help='path to weights file') -parser.add_argument('-class_path', type=str, default='data/coco.names', help='path to class label file') -parser.add_argument('-iou_thres', type=float, default=0.5, help='iou threshold required to qualify as detected') -parser.add_argument('-conf_thres', type=float, default=0.3, help='object confidence threshold') -parser.add_argument('-nms_thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') -parser.add_argument('-n_cpu', type=int, default=0, help='number of cpu threads to use during batch generation') -parser.add_argument('-img_size', type=int, default=416, help='size of each image dimension') -opt = parser.parse_args() -print(opt, end='\n\n') - -def main(opt): +def test( + net_config_path, + data_config_path, + weights_file_path, + class_path=None, + batch_size=16, + img_size=416, + iou_thres=0.5, + conf_thres=0.3, + nms_thres=0.45, + n_cpus=0, +): device = torch_utils.select_device() print("Using device: \"{}\"".format(device)) # Configure run - data_config = parse_data_config(opt.data_config_path) + data_config = parse_data_config(data_config_path) nC = int(data_config['classes']) # number of classes (80 for COCO) test_path = data_config['valid'] # Initiate model - model = Darknet(opt.cfg, opt.img_size) + model = Darknet(net_config_path, img_size) # Load weights - if opt.weights_path.endswith('.pt'): # pytorch format - checkpoint = torch.load(opt.weights_path, map_location='cpu') + if weights_file_path.endswith('.pt'): # pytorch format + checkpoint = torch.load(weights_file_path, map_location='cpu') model.load_state_dict(checkpoint['model']) del checkpoint else: # darknet format - load_weights(model, opt.weights_path) + load_weights(model, weights_file_path) model.to(device).eval() # Get dataloader # dataset = load_images_with_labels(test_path) - # dataloader = torch.utils.data.DataLoader(dataset, batch_size=opt.batch_size, shuffle=False, num_workers=opt.n_cpu) - dataloader = load_images_and_labels(test_path, batch_size=opt.batch_size, img_size=opt.img_size) + # dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, shuffle=False, num_workers=n_cpus) + dataloader = load_images_and_labels(test_path, batch_size=batch_size, img_size=img_size) print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP')) outputs, mAPs, mR, mP, TP, confidence, pred_class, target_class = [], [], [], [], [], [], [], [] @@ -55,7 +52,7 @@ def main(opt): with torch.no_grad(): output = model(imgs.to(device)) - output = non_max_suppression(output, conf_thres=opt.conf_thres, nms_thres=opt.nms_thres) + output = non_max_suppression(output, conf_thres=conf_thres, nms_thres=nms_thres) # Compute average precision for each sample for sample_i, (labels, detections) in enumerate(zip(targets, output)): @@ -80,7 +77,7 @@ def main(opt): target_cls = labels[:, 0] # Extract target boxes as (x1, y1, x2, y2) - target_boxes = xywh2xyxy(labels[:, 1:5]) * opt.img_size + target_boxes = xywh2xyxy(labels[:, 1:5]) * img_size detected = [] for *pred_bbox, conf, obj_conf, obj_pred in detections: @@ -91,7 +88,7 @@ def main(opt): # Extract index of largest overlap best_i = np.argmax(iou) # If overlap exceeds threshold and classification is correct mark as correct - if iou[best_i] > opt.iou_thres and obj_pred == labels[best_i, 0] and best_i not in detected: + if iou[best_i] > iou_thres and obj_pred == labels[best_i, 0] and best_i not in detected: correct.append(1) detected.append(best_i) else: @@ -121,9 +118,10 @@ def main(opt): # Print mAP per class print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP') + '\n\nmAP Per Class:') - classes = load_classes(opt.class_path) # Extracts class labels from file - for i, c in enumerate(classes): - print('%15s: %-.4f' % (c, AP_accum[i] / AP_accum_count[i])) + if class_path: + classes = load_classes(class_path) # Extracts class labels from file + for i, c in enumerate(classes): + print('%15s: %-.4f' % (c, AP_accum[i] / AP_accum_count[i])) # Return mAP return mean_mAP, mean_R, mean_P @@ -131,6 +129,31 @@ def main(opt): if __name__ == '__main__': + parser = argparse.ArgumentParser(prog='test.py') + parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') + parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='path to model config file') + parser.add_argument('--data-config-path', type=str, default='cfg/coco.data', help='path to data config file') + parser.add_argument('--weights', type=str, default='weights/yolov3.pt', help='path to weights file') + parser.add_argument('--class-path', type=str, default='data/coco.names', help='path to class label file') + parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') + parser.add_argument('--conf-thres', type=float, default=0.3, help='object confidence threshold') + parser.add_argument('--nms-thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') + parser.add_argument('--n-cpus', type=int, default=0, help='number of cpu threads to use during batch generation') + parser.add_argument('--img-size', type=int, default=416, help='size of each image dimension') + opt = parser.parse_args() + print(opt, end='\n\n') + init_seeds() - mAP = main(opt) + mAP = test( + opt.cfg, + opt.data_config_path, + opt.weights, + class_path=opt.class_path, + batch_size=opt.batch_size, + img_size=opt.img_size, + iou_thres=opt.iou_thres, + conf_thres=opt.conf_thres, + nms_thres=opt.nms_thres, + n_cpus=opt.n_cpus, + ) diff --git a/train.py b/train.py index 103d6f03..5bc9cf9f 100644 --- a/train.py +++ b/train.py @@ -8,51 +8,48 @@ from utils.utils import * from utils import torch_utils -parser = argparse.ArgumentParser() -parser.add_argument('-epochs', type=int, default=100, help='number of epochs') -parser.add_argument('-batch_size', type=int, default=16, help='size of each image batch') -parser.add_argument('-data_config_path', type=str, default='cfg/coco.data', help='data config file path') -parser.add_argument('-cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') -parser.add_argument('-multi_scale', default=False, help='random image sizes per batch 320 - 608') -parser.add_argument('-img_size', type=int, default=32 * 13, help='pixels') -parser.add_argument('-resume', default=False, help='resume training flag') -parser.add_argument('-batch_report', default=False, help='report TP, FP, FN, P and R per batch (slower)') -parser.add_argument('-freeze_darknet53', default=False, help='freeze darknet53.conv.74 layers for first epoch') -parser.add_argument('-var', type=float, default=0, help='optional test variable') -opt = parser.parse_args() -if opt.multi_scale: # pass maximum multi_scale size - opt.img_size = 608 -print(opt) - # Import test.py to get mAP after each epoch -sys.argv[1:] = [] # delete any train.py command-line arguments before they reach test.py -import test # must follow sys.argv[1:] = [] +import test -def main(opt): +def train( + net_config_path, + data_config_path, + img_size=416, + resume=False, + epochs=100, + batch_size=16, + report=False, + multi_scale=False, + freeze_backbone=True, + var=0, +): device = torch_utils.select_device() print("Using device: \"{}\"".format(device)) - if not opt.multi_scale: + if not multi_scale: torch.backends.cudnn.benchmark = True os.makedirs('weights', exist_ok=True) # Configure run - data_config = parse_data_config(opt.data_config_path) + data_config = parse_data_config(data_config_path) num_classes = int(data_config['classes']) train_path = '../coco/trainvalno5k.txt' # Initialize model - model = Darknet(opt.cfg, opt.img_size) + model = Darknet(net_config_path, img_size) # Get dataloader - dataloader = load_images_and_labels(train_path, batch_size=opt.batch_size, img_size=opt.img_size, - multi_scale=opt.multi_scale, augment=True) + if multi_scale: # pass maximum multi_scale size + img_size = 608 + + dataloader = load_images_and_labels(train_path, batch_size=batch_size, img_size=img_size, + multi_scale=multi_scale, augment=True) lr0 = 0.001 - if opt.resume: + if resume: checkpoint = torch.load('weights/latest.pt', map_location='cpu') model.load_state_dict(checkpoint['model']) @@ -103,7 +100,7 @@ def main(opt): mean_recall, mean_precision = 0, 0 print('%11s' * 16 % ( 'Epoch', 'Batch', 'x', 'y', 'w', 'h', 'conf', 'cls', 'total', 'P', 'R', 'nTargets', 'TP', 'FP', 'FN', 'time')) - for epoch in range(opt.epochs): + for epoch in range(epochs): epoch += start_epoch # Update scheduler (automatic) @@ -118,7 +115,7 @@ def main(opt): g['lr'] = lr # Freeze darknet53.conv.74 layers for first epoch - if opt.freeze_darknet53: + if freeze_backbone is not False: if epoch == 0: for i, (name, p) in enumerate(model.named_parameters()): if int(name.split('.')[1]) < 75: # if layer < 75 @@ -143,7 +140,7 @@ def main(opt): g['lr'] = lr # Compute loss, compute gradient, update parameters - loss = model(imgs.to(device), targets, batch_report=opt.batch_report, var=opt.var) + loss = model(imgs.to(device), targets, batch_report=report, var=var) loss.backward() # accumulated_batches = 1 # accumulate gradient for 4 batches before stepping optimizer @@ -156,7 +153,7 @@ def main(opt): for key, val in model.losses.items(): rloss[key] = (rloss[key] * ui + val) / (ui + 1) - if opt.batch_report: + if report: TP, FP, FN = metrics metrics += model.losses['metrics'] @@ -173,7 +170,7 @@ def main(opt): mean_recall = recall[k].mean() s = ('%11s%11s' + '%11.3g' * 14) % ( - '%g/%g' % (epoch, opt.epochs - 1), '%g/%g' % (i, len(dataloader) - 1), rloss['x'], + '%g/%g' % (epoch, epochs - 1), '%g/%g' % (i, len(dataloader) - 1), rloss['x'], rloss['y'], rloss['w'], rloss['h'], rloss['conf'], rloss['cls'], rloss['loss'], mean_precision, mean_recall, model.losses['nT'], model.losses['TP'], model.losses['FP'], model.losses['FN'], time.time() - t1) @@ -201,8 +198,13 @@ def main(opt): os.system('cp weights/latest.pt weights/backup' + str(epoch) + '.pt') # Calculate mAP - test.opt.weights_path = 'weights/latest.pt' - mAP, R, P = test.main(test.opt) + mAP, R, P = test.test( + net_config_path, + data_config_path, + 'weights/latest.pt', + batch_size=batch_size, + img_size=img_size, + ) # Write epoch results with open('results.txt', 'a') as file: @@ -215,7 +217,32 @@ def main(opt): if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--epochs', type=int, default=100, help='number of epochs') + parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') + parser.add_argument('--data-config-path', type=str, default='cfg/coco.data', help='data config file path') + parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') + parser.add_argument('--multi-scale', default=False, help='random image sizes per batch 320 - 608') + parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') + parser.add_argument('--resume', default=False, help='resume training flag') + parser.add_argument('--report', default=False, help='report TP, FP, FN, P and R per batch (slower)') + parser.add_argument('--freeze-darknet53', default=False, help='freeze darknet53.conv.74 layers for first epoch') + parser.add_argument('--var', type=float, default=0, help='optional test variable') + opt = parser.parse_args() + print(opt, end='\n\n') + init_seeds() torch.cuda.empty_cache() - main(opt) + train( + opt.cfg, + opt.data_config_path, + img_size=opt.img_size, + resume=opt.resume, + epochs=opt.epochs, + batch_size=opt.batch_size, + report=opt.report, + multi_scale=opt.multi_scale, + freeze_backbone=opt.freeze_darknet53, + var=opt.var, + ) diff --git a/utils/gcp.sh b/utils/gcp.sh old mode 100644 new mode 100755 index 3e27c169..130f3249 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -4,28 +4,28 @@ sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 train.py # Resume -python3 train.py -resume 1 +python3 train.py --resume 1 # Detect gsutil cp gs://ultralytics/yolov3.pt yolov3/weights python3 detect.py # Test -python3 test.py -img_size 416 -weights_path weights/latest.pt +python3 test.py --img_size 416 --weights weights/latest.pt # Test Darknet -python3 test.py -img_size 416 -weights_path ../darknet/backup/yolov3.backup +python3 test.py --img_size 416 --weights ../darknet/backup/yolov3.backup # Download and Test sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 wget https://pjreddie.com/media/files/yolov3.weights -P weights -python3 test.py -img_size 416 -weights_path weights/backup5.pt -nms_thres 0.45 +python3 test.py --img_size 416 --weights weights/backup5.pt --nms_thres 0.45 # Download and Resume sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 wget https://storage.googleapis.com/ultralytics/yolov3.pt -O weights/latest.pt -python3 train.py -img_size 416 -batch_size 16 -epochs 1 -resume 1 -python3 test.py -img_size 416 -weights_path weights/latest.pt -conf_thres 0.5 +python3 train.py --img_size 416 --batch_size 16 --epochs 1 --resume 1 +python3 test.py --img_size 416 --weights weights/latest.pt --conf_thres 0.5 # Copy latest.pt to bucket gsutil cp yolov3/weights/latest.pt gs://ultralytics @@ -36,6 +36,6 @@ wget https://storage.googleapis.com/ultralytics/latest.pt # Testing sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 -python3 train.py -epochs 3 -var 64 +python3 train.py --epochs 3 --var 64 sudo shutdown From b1fb6fa33d87d888c3ee9f38b0374a71841710cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20Garc=C3=ADa?= Date: Wed, 5 Dec 2018 14:34:53 +0100 Subject: [PATCH 0234/2595] train.py resume argument as store_true Default is false. If want to resume, call train.py --resume --- README.md | 2 +- train.py | 2 +- utils/gcp.sh | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index cbb37de9..fd529607 100755 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Python 3.7 or later with the following `pip3 install -U -r requirements.txt` pac **Start Training:** Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh` and specifying COCO path on line 37 (local) or line 39 (cloud). Training runs about 1 hour per COCO epoch on a 1080 Ti. -**Resume Training:** Run `train.py -resume 1` to resume training from the most recently saved checkpoint `latest.pt`. +**Resume Training:** Run `train.py --resume` to resume training from the most recently saved checkpoint `latest.pt`. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process about 10-15 epochs/day depending on image size and augmentation (13 epochs/day at 416 pixels with default augmentation). Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (results in progress to 160 epochs, will update). diff --git a/train.py b/train.py index 5bc9cf9f..38f86035 100644 --- a/train.py +++ b/train.py @@ -224,7 +224,7 @@ if __name__ == '__main__': parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('--multi-scale', default=False, help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') - parser.add_argument('--resume', default=False, help='resume training flag') + parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--report', default=False, help='report TP, FP, FN, P and R per batch (slower)') parser.add_argument('--freeze-darknet53', default=False, help='freeze darknet53.conv.74 layers for first epoch') parser.add_argument('--var', type=float, default=0, help='optional test variable') diff --git a/utils/gcp.sh b/utils/gcp.sh index 130f3249..32647259 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -4,7 +4,7 @@ sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 train.py # Resume -python3 train.py --resume 1 +python3 train.py --resume # Detect gsutil cp gs://ultralytics/yolov3.pt yolov3/weights @@ -24,7 +24,7 @@ python3 test.py --img_size 416 --weights weights/backup5.pt --nms_thres 0.45 # Download and Resume sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 wget https://storage.googleapis.com/ultralytics/yolov3.pt -O weights/latest.pt -python3 train.py --img_size 416 --batch_size 16 --epochs 1 --resume 1 +python3 train.py --img_size 416 --batch_size 16 --epochs 1 --resume python3 test.py --img_size 416 --weights weights/latest.pt --conf_thres 0.5 # Copy latest.pt to bucket From 89daa407e5a231d78f35bde36c2bfbef8546cdc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20Garc=C3=ADa?= Date: Wed, 5 Dec 2018 14:40:34 +0100 Subject: [PATCH 0235/2595] train.py report argument as store_true Default is false: python train.py If want the report: python train.py --report --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 38f86035..35f7d52b 100644 --- a/train.py +++ b/train.py @@ -225,7 +225,7 @@ if __name__ == '__main__': parser.add_argument('--multi-scale', default=False, help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') - parser.add_argument('--report', default=False, help='report TP, FP, FN, P and R per batch (slower)') + parser.add_argument('--report', action='store_true', help='report TP, FP, FN, P and R per batch (slower)') parser.add_argument('--freeze-darknet53', default=False, help='freeze darknet53.conv.74 layers for first epoch') parser.add_argument('--var', type=float, default=0, help='optional test variable') opt = parser.parse_args() From 9c0c1f23abc26609d63ce0070929e0ee7e548668 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20Garc=C3=ADa?= Date: Wed, 5 Dec 2018 14:52:40 +0100 Subject: [PATCH 0236/2595] scripts: use data config defined class names Shorten name of --data-config-path argument to --data-config --- detect.py | 10 ++++++---- test.py | 14 +++++--------- train.py | 4 ++-- 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/detect.py b/detect.py index a104e8a3..b1afa028 100755 --- a/detect.py +++ b/detect.py @@ -10,6 +10,7 @@ from utils import torch_utils def detect( net_config_path, + data_config_path, images_path, weights_file_path='weights/yolov3.pt', output='output', @@ -19,7 +20,6 @@ def detect( nms_thres=0.45, save_txt=False, save_images=False, - class_path='data/coco.names', ): device = torch_utils.select_device() @@ -28,6 +28,8 @@ def detect( os.system('rm -rf ' + output) os.makedirs(output, exist_ok=True) + data_config = parse_data_config(data_config_path) + # Load model model = Darknet(net_config_path, img_size) @@ -55,7 +57,7 @@ def detect( model.to(device).eval() # Set Dataloader - classes = load_classes(class_path) # Extracts class labels from file + classes = load_classes(data_config['names']) # Extracts class labels from file dataloader = load_images(images_path, batch_size=batch_size, img_size=img_size) imgs = [] # Stores image paths @@ -151,7 +153,7 @@ if __name__ == '__main__': parser.add_argument('--txt-out', type=bool, default=False) parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') - parser.add_argument('--class-path', type=str, default='data/coco.names', help='path to class label file') + parser.add_argument('--data-config', type=str, default='cfg/coco.data', help='path to data config file') parser.add_argument('--conf-thres', type=float, default=0.50, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') parser.add_argument('--batch-size', type=int, default=1, help='size of the batches') @@ -165,6 +167,7 @@ if __name__ == '__main__': detect( opt.cfg, + opt.data_config, opt.image_folder, output=opt.output_folder, batch_size=opt.batch_size, @@ -173,5 +176,4 @@ if __name__ == '__main__': nms_thres=opt.nms_thres, save_txt=opt.txt_out, save_images=opt.plot_flag, - class_path=opt.class_path, ) diff --git a/test.py b/test.py index 4630a0ee..edcdc9f1 100644 --- a/test.py +++ b/test.py @@ -11,7 +11,6 @@ def test( net_config_path, data_config_path, weights_file_path, - class_path=None, batch_size=16, img_size=416, iou_thres=0.5, @@ -118,10 +117,9 @@ def test( # Print mAP per class print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP') + '\n\nmAP Per Class:') - if class_path: - classes = load_classes(class_path) # Extracts class labels from file - for i, c in enumerate(classes): - print('%15s: %-.4f' % (c, AP_accum[i] / AP_accum_count[i])) + classes = load_classes(data_config['names']) # Extracts class labels from file + for i, c in enumerate(classes): + print('%15s: %-.4f' % (c, AP_accum[i] / AP_accum_count[i])) # Return mAP return mean_mAP, mean_R, mean_P @@ -132,9 +130,8 @@ if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='path to model config file') - parser.add_argument('--data-config-path', type=str, default='cfg/coco.data', help='path to data config file') + parser.add_argument('--data-config', type=str, default='cfg/coco.data', help='path to data config file') parser.add_argument('--weights', type=str, default='weights/yolov3.pt', help='path to weights file') - parser.add_argument('--class-path', type=str, default='data/coco.names', help='path to class label file') parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.3, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') @@ -147,9 +144,8 @@ if __name__ == '__main__': mAP = test( opt.cfg, - opt.data_config_path, + opt.data_config, opt.weights, - class_path=opt.class_path, batch_size=opt.batch_size, img_size=opt.img_size, iou_thres=opt.iou_thres, diff --git a/train.py b/train.py index 35f7d52b..c8d0640d 100644 --- a/train.py +++ b/train.py @@ -220,7 +220,7 @@ if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--epochs', type=int, default=100, help='number of epochs') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') - parser.add_argument('--data-config-path', type=str, default='cfg/coco.data', help='data config file path') + parser.add_argument('--data-config', type=str, default='cfg/coco.data', help='path to data config file') parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('--multi-scale', default=False, help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') @@ -236,7 +236,7 @@ if __name__ == '__main__': torch.cuda.empty_cache() train( opt.cfg, - opt.data_config_path, + opt.data_config, img_size=opt.img_size, resume=opt.resume, epochs=opt.epochs, From 868a11675054334fa1601a96c2cf40e05429c842 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20Garc=C3=ADa?= Date: Wed, 5 Dec 2018 15:27:48 +0100 Subject: [PATCH 0237/2595] train.py remove hardcoded weights/ path for weights. If I want to store my weights in 'weights2' path: python train.py --weights-path weights2 Default is the same: weights --- train.py | 42 ++++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/train.py b/train.py index c8d0640d..5b0ff69a 100644 --- a/train.py +++ b/train.py @@ -11,6 +11,11 @@ from utils import torch_utils # Import test.py to get mAP after each epoch import test +DARKNET_WEIGHTS_FILENAME = 'darknet53.conv.74' +DARKNET_WEIGHTS_URL = 'https://pjreddie.com/media/files/{}'.format( + DARKNET_WEIGHTS_FILENAME +) + def train( net_config_path, @@ -19,6 +24,7 @@ def train( resume=False, epochs=100, batch_size=16, + weights_path='weights', report=False, multi_scale=False, freeze_backbone=True, @@ -31,12 +37,14 @@ def train( if not multi_scale: torch.backends.cudnn.benchmark = True - os.makedirs('weights', exist_ok=True) + os.makedirs(weights_path, exist_ok=True) + latest_weights_file = os.path.join(weights_path, 'latest.pt') + best_weights_file = os.path.join(weights_path, 'best.pt') # Configure run data_config = parse_data_config(data_config_path) num_classes = int(data_config['classes']) - train_path = '../coco/trainvalno5k.txt' + train_path = data_config['train'] # Initialize model model = Darknet(net_config_path, img_size) @@ -50,7 +58,7 @@ def train( lr0 = 0.001 if resume: - checkpoint = torch.load('weights/latest.pt', map_location='cpu') + checkpoint = torch.load(latest_weights_file, map_location='cpu') model.load_state_dict(checkpoint['model']) if torch.cuda.device_count() > 1: @@ -79,9 +87,13 @@ def train( best_loss = float('inf') # Initialize model with darknet53 weights (optional) - if not os.path.isfile('weights/darknet53.conv.74'): - os.system('wget https://pjreddie.com/media/files/darknet53.conv.74 -P weights') - load_weights(model, 'weights/darknet53.conv.74') + def_weight_file = os.path.join(weights_path, DARKNET_WEIGHTS_FILENAME) + if not os.path.isfile(def_weight_file): + os.system('wget {} -P {}'.format( + DARKNET_WEIGHTS_URL, + weights_path)) + assert os.path.isfile(def_weight_file) + load_weights(model, def_weight_file) if torch.cuda.device_count() > 1: raise Exception('Multi-GPU not currently supported: https://github.com/ultralytics/yolov3/issues/21') @@ -187,21 +199,29 @@ def train( 'best_loss': best_loss, 'model': model.state_dict(), 'optimizer': optimizer.state_dict()} - torch.save(checkpoint, 'weights/latest.pt') + torch.save(checkpoint, latest_weights_file) # Save best checkpoint if best_loss == loss_per_target: - os.system('cp weights/latest.pt weights/best.pt') + os.system('cp {} {}'.format( + latest_weights_file, + best_weights_file, + )) # Save backup weights every 5 epochs if (epoch > 0) & (epoch % 5 == 0): - os.system('cp weights/latest.pt weights/backup' + str(epoch) + '.pt') + backup_file_name = 'backup{}.pt'.format(epoch) + backup_file_path = os.path.join(weights_path, backup_file_name) + os.system('cp {} {}'.format( + latest_weights_file, + backup_file_path, + )) # Calculate mAP mAP, R, P = test.test( net_config_path, data_config_path, - 'weights/latest.pt', + latest_weights_file, batch_size=batch_size, img_size=img_size, ) @@ -224,6 +244,7 @@ if __name__ == '__main__': parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('--multi-scale', default=False, help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') + parser.add_argument('--weights-path', type=str, default='weights', help='path to store weights') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--report', action='store_true', help='report TP, FP, FN, P and R per batch (slower)') parser.add_argument('--freeze-darknet53', default=False, help='freeze darknet53.conv.74 layers for first epoch') @@ -241,6 +262,7 @@ if __name__ == '__main__': resume=opt.resume, epochs=opt.epochs, batch_size=opt.batch_size, + weights_path=opt.weights_path, report=opt.report, multi_scale=opt.multi_scale, freeze_backbone=opt.freeze_darknet53, From d03ce45da5e83527c6225fecd0b17d96887fdf6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillermo=20Garc=C3=ADa?= Date: Wed, 5 Dec 2018 15:55:09 +0100 Subject: [PATCH 0238/2595] train.py freeze-darknet53 shortened to freeze and action store_true Traing with freeze: python train.py --freeze Train without freeze: python train.py Note: in the actual version freeze is only for first epoche --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 5b0ff69a..cfe90dea 100644 --- a/train.py +++ b/train.py @@ -247,7 +247,7 @@ if __name__ == '__main__': parser.add_argument('--weights-path', type=str, default='weights', help='path to store weights') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--report', action='store_true', help='report TP, FP, FN, P and R per batch (slower)') - parser.add_argument('--freeze-darknet53', default=False, help='freeze darknet53.conv.74 layers for first epoch') + parser.add_argument('--freeze', action='store_true', help='freeze darknet53.conv.74 layers for first epoche') parser.add_argument('--var', type=float, default=0, help='optional test variable') opt = parser.parse_args() print(opt, end='\n\n') @@ -265,6 +265,6 @@ if __name__ == '__main__': weights_path=opt.weights_path, report=opt.report, multi_scale=opt.multi_scale, - freeze_backbone=opt.freeze_darknet53, + freeze_backbone=opt.freeze, var=opt.var, ) From 27849f2474fa71e174ab0d5bea1c58e869b03b00 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 6 Dec 2018 13:01:49 +0100 Subject: [PATCH 0239/2595] updates --- detect.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index 7953f30e..2f720cd8 100755 --- a/detect.py +++ b/detect.py @@ -38,12 +38,12 @@ def main(opt): if weights_path.endswith('.pt'): # pytorch format if weights_path.endswith('weights/yolov3.pt') and not os.path.isfile(weights_path): os.system('wget https://storage.googleapis.com/ultralytics/yolov3.pt -O ' + weights_path) - else: # darknet format - load_weights(model, weights_path) checkpoint = torch.load(weights_path, map_location='cpu') model.load_state_dict(checkpoint['model']) del checkpoint + else: # darknet format + load_weights(model, weights_path) # current = model.state_dict() # saved = checkpoint['model'] From 3fe395126875db8683d47d38f0fe7d2e452e25c0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 10 Dec 2018 13:19:13 +0100 Subject: [PATCH 0240/2595] updates --- detect.py | 2 -- test.py | 19 +++++++++---------- train.py | 30 +++++++++++++----------------- 3 files changed, 22 insertions(+), 29 deletions(-) diff --git a/detect.py b/detect.py index 0bf70621..66465d5d 100755 --- a/detect.py +++ b/detect.py @@ -21,7 +21,6 @@ def detect( save_txt=False, save_images=False, ): - device = torch_utils.select_device() print("Using device: \"{}\"".format(device)) @@ -150,7 +149,6 @@ if __name__ == '__main__': parser.add_argument('--output-folder', type=str, default='output', help='path to outputs') parser.add_argument('--plot-flag', type=bool, default=True) parser.add_argument('--txt-out', type=bool, default=False) - parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('--data-config', type=str, default='cfg/coco.data', help='path to data config file') parser.add_argument('--conf-thres', type=float, default=0.50, help='object confidence threshold') diff --git a/test.py b/test.py index edcdc9f1..dddf404d 100644 --- a/test.py +++ b/test.py @@ -8,15 +8,15 @@ from utils import torch_utils def test( - net_config_path, - data_config_path, - weights_file_path, - batch_size=16, - img_size=416, - iou_thres=0.5, - conf_thres=0.3, - nms_thres=0.45, - n_cpus=0, + net_config_path, + data_config_path, + weights_file_path, + batch_size=16, + img_size=416, + iou_thres=0.5, + conf_thres=0.3, + nms_thres=0.45, + n_cpus=0, ): device = torch_utils.select_device() print("Using device: \"{}\"".format(device)) @@ -126,7 +126,6 @@ def test( if __name__ == '__main__': - parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='path to model config file') diff --git a/train.py b/train.py index cfe90dea..ef8466c7 100644 --- a/train.py +++ b/train.py @@ -12,25 +12,22 @@ from utils import torch_utils import test DARKNET_WEIGHTS_FILENAME = 'darknet53.conv.74' -DARKNET_WEIGHTS_URL = 'https://pjreddie.com/media/files/{}'.format( - DARKNET_WEIGHTS_FILENAME -) +DARKNET_WEIGHTS_URL = 'https://pjreddie.com/media/files/{}'.format(DARKNET_WEIGHTS_FILENAME) def train( - net_config_path, - data_config_path, - img_size=416, - resume=False, - epochs=100, - batch_size=16, - weights_path='weights', - report=False, - multi_scale=False, - freeze_backbone=True, - var=0, + net_config_path, + data_config_path, + img_size=416, + resume=False, + epochs=100, + batch_size=16, + weights_path='weights', + report=False, + multi_scale=False, + freeze_backbone=True, + var=0, ): - device = torch_utils.select_device() print("Using device: \"{}\"".format(device)) @@ -236,13 +233,12 @@ def train( if __name__ == '__main__': - parser = argparse.ArgumentParser() parser.add_argument('--epochs', type=int, default=100, help='number of epochs') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--data-config', type=str, default='cfg/coco.data', help='path to data config file') parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') - parser.add_argument('--multi-scale', default=False, help='random image sizes per batch 320 - 608') + parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') parser.add_argument('--weights-path', type=str, default='weights', help='path to store weights') parser.add_argument('--resume', action='store_true', help='resume training flag') From 2e5c72321f988a0ee49363a09e503ac9990ecc8c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 11 Dec 2018 19:46:15 +0100 Subject: [PATCH 0241/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fd529607..f34943f5 100755 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Python 3.7 or later with the following `pip3 install -U -r requirements.txt` pac Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process about 10-15 epochs/day depending on image size and augmentation (13 epochs/day at 416 pixels with default augmentation). Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (results in progress to 160 epochs, will update). -![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_training_loss.png "coco training loss") +![Alt](https://user-images.githubusercontent.com/26833433/49822374-3b27bf00-fd7d-11e8-9180-f0ac9fe2fdb4.png "coco training loss") ## Image Augmentation From c8bd1778f266e97202e6b1fdf999e077ec8b1cf8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 11 Dec 2018 19:46:39 +0100 Subject: [PATCH 0242/2595] Delete coco_training_loss.png --- data/coco_training_loss.png | Bin 283324 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 data/coco_training_loss.png diff --git a/data/coco_training_loss.png b/data/coco_training_loss.png deleted file mode 100644 index 9e4b534e11575feb0ebd856be524526e2f9c6425..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 283324 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%0A2C#-d)g6 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%0DE%&{qz1k=?Y=re30$3m{sf?kx-aU=INF*Xn}z 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

40kRE*7 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 z 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 From 4f80ef34643fadfa4e859201d39d2ff7a81ba64d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 11 Dec 2018 19:54:31 +0100 Subject: [PATCH 0243/2595] Update README.md --- README.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f34943f5..e8f25e7e 100755 --- a/README.md +++ b/README.md @@ -19,11 +19,11 @@ Python 3.7 or later with the following `pip3 install -U -r requirements.txt` pac # Training -**Start Training:** Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh` and specifying COCO path on line 37 (local) or line 39 (cloud). Training runs about 1 hour per COCO epoch on a 1080 Ti. +**Start Training:** Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. Training runs about 1 hour per COCO epoch on a 1080 Ti. -**Resume Training:** Run `train.py --resume` to resume training from the most recently saved checkpoint `latest.pt`. +**Resume Training:** Run `train.py --resume` to resume training from the most recently saved checkpoint `weights/latest.pt`. -Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process about 10-15 epochs/day depending on image size and augmentation (13 epochs/day at 416 pixels with default augmentation). Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (results in progress to 160 epochs, will update). +Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process about 10-20 epochs/day depending on image size and augmentation. Loss plots are shown here using default training settings. ![Alt](https://user-images.githubusercontent.com/26833433/49822374-3b27bf00-fd7d-11e8-9180-f0ac9fe2fdb4.png "coco training loss") @@ -45,7 +45,7 @@ HS**V** Intensity | +/- 50% # Inference -Checkpoints are saved in `/checkpoints` directory. Run `detect.py` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder, shown here. Alternatively you can use the official YOLOv3 weights: +Run `detect.py --weights` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder, shown here. Download official YOLOv3 weights: - PyTorch format: https://storage.googleapis.com/ultralytics/yolov3.pt - Darknet format: https://pjreddie.com/media/files/yolov3.weights @@ -56,7 +56,9 @@ Checkpoints are saved in `/checkpoints` directory. Run `detect.py` to apply trai Run `test.py` to validate the official YOLOv3 weights `checkpoints/yolov3.weights` against the 5000 validation images. You should obtain a mAP of .581 using this repo (https://github.com/ultralytics/yolov3), compared to .579 as reported in darknet (https://arxiv.org/abs/1804.02767). -Run `test.py --weights checkpoints/latest.pt` to validate against the latest training checkpoint. +Run `test.py --weights weights/latest.pt` to validate against the latest training + +oint. # Contact From 6c1cd4f3a245edf1e5afd7bdf64b2143ea269078 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 11 Dec 2018 20:18:05 +0100 Subject: [PATCH 0244/2595] Update README.md --- README.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index e8f25e7e..026b1f1a 100755 --- a/README.md +++ b/README.md @@ -52,13 +52,11 @@ Run `detect.py --weights` to apply trained weights to an image, such as `zidane. ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/zidane_result.jpg "inference example") -# Testing +# Validation mAP -Run `test.py` to validate the official YOLOv3 weights `checkpoints/yolov3.weights` against the 5000 validation images. You should obtain a mAP of .581 using this repo (https://github.com/ultralytics/yolov3), compared to .579 as reported in darknet (https://arxiv.org/abs/1804.02767). +Run `test.py` to validate the official YOLOv3 weights `weights/yolov3.weights` against the 5000 validation images. You should obtain a .584 mAP at `--img-size 416`, or .586 at `--img-size 608` using this repo, compared to .579 at 608 x 608 reported in darknet (https://arxiv.org/abs/1804.02767). -Run `test.py --weights weights/latest.pt` to validate against the latest training - -oint. +Run `test.py --weights weights/latest.pt` to validate against the latest training results. Default training settings produce a 0.522 mAP at epoch 62. We are currently exploring how to improve this. # Contact From cb21b7592085ee76185d3dcad10e62563e79c8af Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 11 Dec 2018 20:23:27 +0100 Subject: [PATCH 0245/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 026b1f1a..3ed0a87b 100755 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ HS**V** Intensity | +/- 50% # Inference -Run `detect.py --weights` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder, shown here. Download official YOLOv3 weights: +Run `detect.py` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder, shown here. Download official YOLOv3 weights: - PyTorch format: https://storage.googleapis.com/ultralytics/yolov3.pt - Darknet format: https://pjreddie.com/media/files/yolov3.weights From e28ac3de295b6a31a5786dda8cfc705b221456c3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 11 Dec 2018 20:46:46 +0100 Subject: [PATCH 0246/2595] updates --- detect.py | 4 +++- utils/gcp.sh | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index 66465d5d..2a3295b2 100755 --- a/detect.py +++ b/detect.py @@ -11,8 +11,8 @@ from utils import torch_utils def detect( net_config_path, data_config_path, + weights_file_path, images_path, - weights_file_path='weights/yolov3.pt', output='output', batch_size=16, img_size=416, @@ -151,6 +151,7 @@ if __name__ == '__main__': parser.add_argument('--txt-out', type=bool, default=False) parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('--data-config', type=str, default='cfg/coco.data', help='path to data config file') + parser.add_argument('--weights', type=str, default='weights/yolov3.pt', help='path to weights file') parser.add_argument('--conf-thres', type=float, default=0.50, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') parser.add_argument('--batch-size', type=int, default=1, help='size of the batches') @@ -165,6 +166,7 @@ if __name__ == '__main__': detect( opt.cfg, opt.data_config, + opt.weights, opt.image_folder, output=opt.output_folder, batch_size=opt.batch_size, diff --git a/utils/gcp.sh b/utils/gcp.sh index 32647259..7b55efe9 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Start -sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 train.py +sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 train.py --freeze # Resume python3 train.py --resume From c59193644620886becc9a3cfd7518ad74e6a7986 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 11 Dec 2018 21:49:56 +0100 Subject: [PATCH 0247/2595] updates --- requirements.txt | 3 --- train.py | 7 ++++--- utils/utils.py | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/requirements.txt b/requirements.txt index 2e16f2e3..2d57893b 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,5 @@ # pip3 install -U -r requirements.txt numpy -scipy opencv-python torch matplotlib -tqdm -h5py \ No newline at end of file diff --git a/train.py b/train.py index ef8466c7..e244f495 100644 --- a/train.py +++ b/train.py @@ -107,11 +107,12 @@ def train( model_info(model) t0, t1 = time.time(), time.time() mean_recall, mean_precision = 0, 0 - print('%11s' * 16 % ( - 'Epoch', 'Batch', 'x', 'y', 'w', 'h', 'conf', 'cls', 'total', 'P', 'R', 'nTargets', 'TP', 'FP', 'FN', 'time')) for epoch in range(epochs): epoch += start_epoch + print(('%8s%12s' + '%10s' * 14) % ('Epoch', 'Batch', 'x', 'y', 'w', 'h', 'conf', 'cls', 'total', 'P', 'R', + 'nTargets', 'TP', 'FP', 'FN', 'time')) + # Update scheduler (automatic) # scheduler.step() @@ -178,7 +179,7 @@ def train( if k.sum() > 0: mean_recall = recall[k].mean() - s = ('%11s%11s' + '%11.3g' * 14) % ( + s = ('%8s%12s' + '%10.3g' * 14) % ( '%g/%g' % (epoch, epochs - 1), '%g/%g' % (i, len(dataloader) - 1), rloss['x'], rloss['y'], rloss['w'], rloss['h'], rloss['conf'], rloss['cls'], rloss['loss'], mean_precision, mean_recall, model.losses['nT'], model.losses['TP'], diff --git a/utils/utils.py b/utils/utils.py index 12d161bd..293c5961 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -33,7 +33,7 @@ def model_info(model): # Plots a line-by-line description of a PyTorch model print('\n%5s %50s %9s %12s %20s %12s %12s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) for i, (name, p) in enumerate(model.named_parameters()): name = name.replace('module_list.', '') - print('%5g %50s %9s %12g %20s %12g %12g' % ( + print('%5g %50s %9s %12g %20s %12.3g %12.3g' % ( i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) print('Model Summary: %g layers, %g parameters, %g gradients\n' % (i + 1, n_p, n_g)) From b5a2747a6a7cf5cc80bfcd59d25cebfcf1519b92 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Dec 2018 17:02:37 +0100 Subject: [PATCH 0248/2595] updates --- train.py | 10 +++++----- utils/datasets.py | 11 ++++------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/train.py b/train.py index e244f495..c232cd0e 100644 --- a/train.py +++ b/train.py @@ -111,7 +111,7 @@ def train( epoch += start_epoch print(('%8s%12s' + '%10s' * 14) % ('Epoch', 'Batch', 'x', 'y', 'w', 'h', 'conf', 'cls', 'total', 'P', 'R', - 'nTargets', 'TP', 'FP', 'FN', 'time')) + 'nTargets', 'TP', 'FP', 'FN', 'time')) # Update scheduler (automatic) # scheduler.step() @@ -153,10 +153,10 @@ def train( loss = model(imgs.to(device), targets, batch_report=report, var=var) loss.backward() - # accumulated_batches = 1 # accumulate gradient for 4 batches before stepping optimizer - # if ((i+1) % accumulated_batches == 0) or (i == len(dataloader) - 1): - optimizer.step() - optimizer.zero_grad() + accumulated_batches = 4 # accumulate gradient for 4 batches before optimizing + if ((i + 1) % accumulated_batches == 0) or (i == len(dataloader) - 1): + optimizer.step() + optimizer.zero_grad() # Running epoch-means of tracked metrics ui += 1 diff --git a/utils/datasets.py b/utils/datasets.py index 39894862..940c2adb 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -116,7 +116,7 @@ class load_images_and_labels(): # for training augment_hsv = True if self.augment and augment_hsv: # SV augmentation by 50% - fraction = 0.50 + fraction = 0.25 img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) S = img_hsv[:, :, 1].astype(np.float32) V = img_hsv[:, :, 2].astype(np.float32) @@ -153,7 +153,7 @@ class load_images_and_labels(): # for training # Augment image and labels if self.augment: - img, labels, M = random_affine(img, labels, degrees=(-5, 5), translate=(0.2, 0.2), scale=(0.8, 1.2)) + img, labels, M = random_affine(img, labels, degrees=(-5, 5), translate=(0.05, 0.05), scale=(0.95, 1.05)) plotFlag = False if plotFlag: @@ -211,7 +211,7 @@ def resize_square(img, height=416, color=(0, 0, 0)): # resize a rectangular ima return cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color), ratio, dw // 2, dh // 2 -def random_affine(img, targets=None, degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-3, 3), +def random_affine(img, targets=None, degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-2, 2), borderValue=(127.5, 127.5, 127.5)): # torchvision.transforms.RandomAffine(degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-10, 10)) # https://medium.com/uruvideo/dataset-augmentation-with-random-homographies-a8f4b44830d4 @@ -288,8 +288,5 @@ def convert_tif2bmp(p='../xview/val_images_bmp'): files = sorted(glob.glob('%s/*.tif' % p)) for i, f in enumerate(files): print('%g/%g' % (i + 1, len(files))) - - img = cv2.imread(f) - - cv2.imwrite(f.replace('.tif', '.bmp'), img) + cv2.imwrite(f.replace('.tif', '.bmp'), cv2.imread(f)) os.system('rm -rf ' + f) From 3c95b5c104d906536cdae584f05d062846a62813 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Dec 2018 17:26:46 +0100 Subject: [PATCH 0249/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index c232cd0e..d463a650 100644 --- a/train.py +++ b/train.py @@ -125,7 +125,7 @@ def train( g['lr'] = lr # Freeze darknet53.conv.74 layers for first epoch - if freeze_backbone is not False: + if freeze_backbone: if epoch == 0: for i, (name, p) in enumerate(model.named_parameters()): if int(name.split('.')[1]) < 75: # if layer < 75 From 21ab0c76fddd09635e28cb9c3fa83c14098919c3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Dec 2018 17:27:52 +0100 Subject: [PATCH 0250/2595] updates --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 0d9adfc0..20f49732 100755 --- a/.gitignore +++ b/.gitignore @@ -10,12 +10,13 @@ *.HEIC *.weights *.pt +darknet53.conv.74 !zidane_result.jpg !coco_training_loss.png !coco_augmentation_examples.jpg !data/samples/zidane.jpg -results.txt +results*.txt temp-plot.html # MATLAB GitIgnore ----------------------------------------------------------------------------------------------------- From 900851200e8132c713f6436ae1aa95b470e8abf7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 15 Dec 2018 20:52:35 +0100 Subject: [PATCH 0251/2595] updates --- train.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index d463a650..d67a6296 100644 --- a/train.py +++ b/train.py @@ -153,10 +153,10 @@ def train( loss = model(imgs.to(device), targets, batch_report=report, var=var) loss.backward() - accumulated_batches = 4 # accumulate gradient for 4 batches before optimizing - if ((i + 1) % accumulated_batches == 0) or (i == len(dataloader) - 1): - optimizer.step() - optimizer.zero_grad() + # accumulated_batches = 1 # accumulate gradient for 4 batches before optimizing + # if ((i + 1) % accumulated_batches == 0) or (i == len(dataloader) - 1): + optimizer.step() + optimizer.zero_grad() # Running epoch-means of tracked metrics ui += 1 From b079c1b10c935aa00e37a912fc16a3ca2039c599 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 15 Dec 2018 21:01:14 +0100 Subject: [PATCH 0252/2595] updates --- utils/datasets.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 940c2adb..cfcb19b1 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -116,7 +116,7 @@ class load_images_and_labels(): # for training augment_hsv = True if self.augment and augment_hsv: # SV augmentation by 50% - fraction = 0.25 + fraction = 0.50 img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) S = img_hsv[:, :, 1].astype(np.float32) V = img_hsv[:, :, 2].astype(np.float32) @@ -153,7 +153,7 @@ class load_images_and_labels(): # for training # Augment image and labels if self.augment: - img, labels, M = random_affine(img, labels, degrees=(-5, 5), translate=(0.05, 0.05), scale=(0.95, 1.05)) + img, labels, M = random_affine(img, labels, degrees=(-5, 5), translate=(0.10, 0.10), scale=(0.90, 1.10)) plotFlag = False if plotFlag: From b52a49cf129ca3790d80e03bf53b1ceb5f8d123a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 15 Dec 2018 21:06:39 +0100 Subject: [PATCH 0253/2595] updates --- models.py | 1 + 1 file changed, 1 insertion(+) diff --git a/models.py b/models.py index 1d105709..c754ab8f 100755 --- a/models.py +++ b/models.py @@ -232,6 +232,7 @@ class Darknet(nn.Module): def __init__(self, cfg_path, img_size=416): super(Darknet, self).__init__() + self.module_defs = parse_model_config(cfg_path) self.module_defs[0]['height'] = img_size self.hyperparams, self.module_list = create_modules(self.module_defs) From 18ccd184bfad98d0b0efe83c61ca8b1fa0761b4a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 16 Dec 2018 15:16:19 +0100 Subject: [PATCH 0254/2595] updates --- train.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index d67a6296..52648fbb 100644 --- a/train.py +++ b/train.py @@ -22,6 +22,7 @@ def train( resume=False, epochs=100, batch_size=16, + accumulated_batches=1, weights_path='weights', report=False, multi_scale=False, @@ -153,10 +154,10 @@ def train( loss = model(imgs.to(device), targets, batch_report=report, var=var) loss.backward() - # accumulated_batches = 1 # accumulate gradient for 4 batches before optimizing - # if ((i + 1) % accumulated_batches == 0) or (i == len(dataloader) - 1): - optimizer.step() - optimizer.zero_grad() + # accumulate gradient for x batches before optimizing + if ((i + 1) % accumulated_batches == 0) or (i == len(dataloader) - 1): + optimizer.step() + optimizer.zero_grad() # Running epoch-means of tracked metrics ui += 1 @@ -237,6 +238,7 @@ if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--epochs', type=int, default=100, help='number of epochs') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') + parser.add_argument('--accumulated-batches', type=int, default=1, help='number of batches before optimizer step') parser.add_argument('--data-config', type=str, default='cfg/coco.data', help='path to data config file') parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') @@ -244,7 +246,7 @@ if __name__ == '__main__': parser.add_argument('--weights-path', type=str, default='weights', help='path to store weights') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--report', action='store_true', help='report TP, FP, FN, P and R per batch (slower)') - parser.add_argument('--freeze', action='store_true', help='freeze darknet53.conv.74 layers for first epoche') + parser.add_argument('--freeze', action='store_true', help='freeze darknet53.conv.74 layers for first epoch') parser.add_argument('--var', type=float, default=0, help='optional test variable') opt = parser.parse_args() print(opt, end='\n\n') @@ -259,6 +261,7 @@ if __name__ == '__main__': resume=opt.resume, epochs=opt.epochs, batch_size=opt.batch_size, + accumulated_batches=opt.accumulated_batches, weights_path=opt.weights_path, report=opt.report, multi_scale=opt.multi_scale, From bf23be9965f794f3be95fea3507ec2d4149d40a5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 16 Dec 2018 15:16:52 +0100 Subject: [PATCH 0255/2595] updates --- train.py | 1 - 1 file changed, 1 deletion(-) diff --git a/train.py b/train.py index 52648fbb..0ad9c479 100644 --- a/train.py +++ b/train.py @@ -1,5 +1,4 @@ import argparse -import sys import time from models import * From 96d85ad4ba7aebb725e53f01bf410f155c420c40 Mon Sep 17 00:00:00 2001 From: Josh Veitch-Michaelis Date: Mon, 17 Dec 2018 16:29:33 +0000 Subject: [PATCH 0256/2595] Remove auto-shutdown from get coco script This is presumably for unattended download on cloud systems, but the script should alert the user first. Automatically shutting down a system when you download some data shouldn't be default behaviour. It's also not in the original Darknet script (https://github.com/pjreddie/darknet/blob/master/scripts/get_coco_dataset.sh). Alternatively run `get_coco_dataset.sh && sudo shutdown`. --- data/get_coco_dataset.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/data/get_coco_dataset.sh b/data/get_coco_dataset.sh index 6206de32..e7764f2d 100755 --- a/data/get_coco_dataset.sh +++ b/data/get_coco_dataset.sh @@ -27,8 +27,6 @@ unzip -q instances_train-val2014.zip paste <(awk "{print \"$PWD\"}" <5k.part) 5k.part | tr -d '\t' > 5k.txt paste <(awk "{print \"$PWD\"}" trainvalno5k.txt -sudo shutdown - # get xview training data # wget -O train_images.tgz 'https://d307kc0mrhucc3.cloudfront.net/train_images.tgz?Expires=1530124049&Signature=JrQoxipmsETvb7eQHCfDFUO-QEHJGAayUv0i-ParmS-1hn7hl9D~bzGuHWG82imEbZSLUARTtm0wOJ7EmYMGmG5PtLKz9H5qi6DjoSUuFc13NQ-~6yUhE~NfPaTnehUdUMCa3On2wl1h1ZtRG~0Jq1P-AJbpe~oQxbyBrs1KccaMa7FK4F4oMM6sMnNgoXx8-3O77kYw~uOpTMFmTaQdHln6EztW0Lx17i57kK3ogbSUpXgaUTqjHCRA1dWIl7PY1ngQnLslkLhZqmKcaL-BvWf0ZGjHxCDQBpnUjIlvMu5NasegkwD9Jjc0ClgTxsttSkmbapVqaVC8peR0pO619Q__&Key-Pair-Id=APKAIKGDJB5C3XUL2DXQ' # tar -xvzf train_images.tgz From 682fd61385dcb8f51a65153e1a7254f80514aeff Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 17 Dec 2018 22:43:30 +0100 Subject: [PATCH 0257/2595] updates --- weights/download_yolov3_weights.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/weights/download_yolov3_weights.sh b/weights/download_yolov3_weights.sh index aadcb453..d758cd11 100644 --- a/weights/download_yolov3_weights.sh +++ b/weights/download_yolov3_weights.sh @@ -2,4 +2,5 @@ wget https://pjreddie.com/media/files/darknet53.conv.74 wget https://pjreddie.com/media/files/yolov3.weights +wget https://pjreddie.com/media/files/yolov3-tiny.weights wget https://storage.googleapis.com/ultralytics/yolov3.pt From b48c108ba066bab5726ec5ce5ab39948d2ef8c78 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 17 Dec 2018 22:43:55 +0100 Subject: [PATCH 0258/2595] updates --- cfg/yolov3-spp.cfg | 0 cfg/yolov3-tiny.cfg | 182 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 182 insertions(+) mode change 100755 => 100644 cfg/yolov3-spp.cfg create mode 100644 cfg/yolov3-tiny.cfg diff --git a/cfg/yolov3-spp.cfg b/cfg/yolov3-spp.cfg old mode 100755 new mode 100644 diff --git a/cfg/yolov3-tiny.cfg b/cfg/yolov3-tiny.cfg new file mode 100644 index 00000000..cfca3cfa --- /dev/null +++ b/cfg/yolov3-tiny.cfg @@ -0,0 +1,182 @@ +[net] +# Testing +batch=1 +subdivisions=1 +# Training +# batch=64 +# subdivisions=2 +width=416 +height=416 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=16 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=1 + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +########### + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + + +[yolo] +mask = 3,4,5 +anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 +classes=80 +num=6 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 8 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + +[yolo] +mask = 0,1,2 +anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 +classes=80 +num=6 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 From 62c186da25e4f1a8b9c7cd6fe19c2be67c0b5475 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 19 Dec 2018 23:48:52 +0100 Subject: [PATCH 0259/2595] updates --- utils/utils.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 293c5961..e7bac03d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -365,12 +365,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): continue # From (center x, center y, width, height) to (x1, y1, x2, y2) - box_corner = pred.new(nP, 4) - xy = pred[:, 0:2] - wh = pred[:, 2:4] / 2 - box_corner[:, 0:2] = xy - wh - box_corner[:, 2:4] = xy + wh - pred[:, :4] = box_corner + pred[:, :4] = xywh2xyxy(pred[:, :4]) # Detections ordered as (x1, y1, x2, y2, obj_conf, class_prob, class_pred) detections = torch.cat((pred[:, :5], class_prob.float().unsqueeze(1), class_pred.float().unsqueeze(1)), 1) From 34fb1bb8a9b69c7b13ac5f55e21a992dd136daef Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 20 Dec 2018 22:08:47 +0100 Subject: [PATCH 0260/2595] updates --- test.py | 1 + 1 file changed, 1 insertion(+) diff --git a/test.py b/test.py index dddf404d..51019b5f 100644 --- a/test.py +++ b/test.py @@ -44,6 +44,7 @@ def test( # dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, shuffle=False, num_workers=n_cpus) dataloader = load_images_and_labels(test_path, batch_size=batch_size, img_size=img_size) + mean_mAP, mean_R, mean_P = 0.0, 0.0, 0.0 print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP')) outputs, mAPs, mR, mP, TP, confidence, pred_class, target_class = [], [], [], [], [], [], [], [] AP_accum, AP_accum_count = np.zeros(nC), np.zeros(nC) From bd5b9693bf3c68e05253c019c1222cf48f34bc9f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 22 Dec 2018 12:36:33 +0100 Subject: [PATCH 0261/2595] enable yolov3-tiny inference --- models.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/models.py b/models.py index c754ab8f..31e2b7fd 100755 --- a/models.py +++ b/models.py @@ -32,13 +32,21 @@ def create_modules(module_defs): if module_def['activation'] == 'leaky': modules.add_module('leaky_%d' % i, nn.LeakyReLU(0.1)) + elif module_def['type'] == 'maxpool': + kernel_size = int(module_def['size']) + stride = int(module_def['stride']) + if kernel_size == 2 and stride == 1: + modules.add_module('_debug_padding_%d' % i, nn.ZeroPad2d((0, 1, 0, 1))) + maxpool = nn.MaxPool2d(kernel_size=kernel_size, stride=stride, padding=int((kernel_size - 1) // 2)) + modules.add_module('maxpool_%d' % i, maxpool) + elif module_def['type'] == 'upsample': upsample = nn.Upsample(scale_factor=int(module_def['stride']), mode='nearest') modules.add_module('upsample_%d' % i, upsample) elif module_def['type'] == 'route': layers = [int(x) for x in module_def['layers'].split(',')] - filters = sum([output_filters[layer_i] for layer_i in layers]) + filters = sum([output_filters[i + 1 if i > 0 else i] for i in layers]) modules.add_module('route_%d' % i, EmptyLayer()) elif module_def['type'] == 'shortcut': @@ -54,7 +62,7 @@ def create_modules(module_defs): num_classes = int(module_def['classes']) img_height = int(hyperparams['height']) # Define detection layer - yolo_layer = YOLOLayer(anchors, num_classes, img_height, anchor_idxs) + yolo_layer = YOLOLayer(anchors, num_classes, img_height, anchor_idxs, cfg=hyperparams['cfg']) modules.add_module('yolo_%d' % i, yolo_layer) # Register module list and number of output filters @@ -73,7 +81,7 @@ class EmptyLayer(nn.Module): class YOLOLayer(nn.Module): - def __init__(self, anchors, nC, img_dim, anchor_idxs): + def __init__(self, anchors, nC, img_dim, anchor_idxs, cfg): super(YOLOLayer, self).__init__() anchors = [(a_w, a_h) for a_w, a_h in anchors] # (pixels) @@ -92,6 +100,9 @@ class YOLOLayer(nn.Module): else: stride = 8 + if cfg.endswith('yolov3-tiny.cfg'): + stride *= 2 + # Build anchor grids nG = int(self.img_dim / stride) # number grid points self.grid_x = torch.arange(nG).repeat(nG, 1).view([1, 1, nG, nG]).float() @@ -234,6 +245,7 @@ class Darknet(nn.Module): super(Darknet, self).__init__() self.module_defs = parse_model_config(cfg_path) + self.module_defs[0]['cfg'] = cfg_path self.module_defs[0]['height'] = img_size self.hyperparams, self.module_list = create_modules(self.module_defs) self.img_size = img_size @@ -246,7 +258,7 @@ class Darknet(nn.Module): layer_outputs = [] for i, (module_def, module) in enumerate(zip(self.module_defs, self.module_list)): - if module_def['type'] in ['convolutional', 'upsample']: + if module_def['type'] in ['convolutional', 'upsample', 'maxpool']: x = module(x) elif module_def['type'] == 'route': layer_i = [int(x) for x in module_def['layers'].split(',')] From a0ab4916fd3b47cce7d504b65529f7ec2532f8f0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 22 Dec 2018 12:49:55 +0100 Subject: [PATCH 0262/2595] yolov3-tiny addition --- README.md | 18 +++++++++++++----- weights/download_yolov3_weights.sh | 4 +++- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 3ed0a87b..3bba1c82 100755 --- a/README.md +++ b/README.md @@ -45,13 +45,21 @@ HS**V** Intensity | +/- 50% # Inference -Run `detect.py` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder, shown here. Download official YOLOv3 weights: - -- PyTorch format: https://storage.googleapis.com/ultralytics/yolov3.pt -- Darknet format: https://pjreddie.com/media/files/yolov3.weights - +Run `detect.py` to apply trained weights to an image and visualize results, such as `zidane.jpg` from the `data/samples` folder, shown here. ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/zidane_result.jpg "inference example") +# Pretrained Weights +Download official YOLOv3 weights: + +**Darknet** format: +- https://pjreddie.com/media/files/yolov3.weights +- https://pjreddie.com/media/files/yolov3-tiny.weights + +**PyTorch** format: +- https://storage.googleapis.com/ultralytics/yolov3.pt +- https://storage.googleapis.com/ultralytics/yolov3-tiny.pt + + # Validation mAP Run `test.py` to validate the official YOLOv3 weights `weights/yolov3.weights` against the 5000 validation images. You should obtain a .584 mAP at `--img-size 416`, or .586 at `--img-size 608` using this repo, compared to .579 at 608 x 608 reported in darknet (https://arxiv.org/abs/1804.02767). diff --git a/weights/download_yolov3_weights.sh b/weights/download_yolov3_weights.sh index d758cd11..968dc1dd 100644 --- a/weights/download_yolov3_weights.sh +++ b/weights/download_yolov3_weights.sh @@ -1,6 +1,8 @@ #!/bin/bash -wget https://pjreddie.com/media/files/darknet53.conv.74 wget https://pjreddie.com/media/files/yolov3.weights wget https://pjreddie.com/media/files/yolov3-tiny.weights + +wget https://pjreddie.com/media/files/darknet53.conv.74 + wget https://storage.googleapis.com/ultralytics/yolov3.pt From ffd45ebf0c7eac253eda8bc21a174311bb38ecf4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 22 Dec 2018 12:58:59 +0100 Subject: [PATCH 0263/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3bba1c82..d44821f5 100755 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ Run `detect.py` to apply trained weights to an image and visualize results, such ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/zidane_result.jpg "inference example") # Pretrained Weights + Download official YOLOv3 weights: **Darknet** format: @@ -59,7 +60,6 @@ Download official YOLOv3 weights: - https://storage.googleapis.com/ultralytics/yolov3.pt - https://storage.googleapis.com/ultralytics/yolov3-tiny.pt - # Validation mAP Run `test.py` to validate the official YOLOv3 weights `weights/yolov3.weights` against the 5000 validation images. You should obtain a .584 mAP at `--img-size 416`, or .586 at `--img-size 608` using this repo, compared to .579 at 608 x 608 reported in darknet (https://arxiv.org/abs/1804.02767). From a21c131dd0a0fefa8199f37e84405937a40c7d69 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 22 Dec 2018 13:05:52 +0100 Subject: [PATCH 0264/2595] updates --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d44821f5..1de16083 100755 --- a/README.md +++ b/README.md @@ -46,7 +46,12 @@ HS**V** Intensity | +/- 50% # Inference Run `detect.py` to apply trained weights to an image and visualize results, such as `zidane.jpg` from the `data/samples` folder, shown here. -![Alt](https://github.com/ultralytics/yolov3/blob/master/data/zidane_result.jpg "inference example") + +`detect.py --cfg cfg/yolov3.cfg --weights weights/yolov3.pt` +![Alt](https://github.com/ultralytics/yolov3/blob/master/data/zidane_result.jpg "yolov3 example") + +`detect.py --cfg cfg/yolov3-tiny.cfg --weights weights/yolov3-tiny.pt` +![Alt](https://user-images.githubusercontent.com/26833433/50374155-21427380-05ea-11e9-8d24-f1a4b2bac1ad.jpg "yolov3-tiny example") # Pretrained Weights From 9c3d9dca97a86c0c132213736276fff3bab9657f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 22 Dec 2018 13:09:05 +0100 Subject: [PATCH 0265/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1de16083..6ea0e2e3 100755 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ Download official YOLOv3 weights: Run `test.py` to validate the official YOLOv3 weights `weights/yolov3.weights` against the 5000 validation images. You should obtain a .584 mAP at `--img-size 416`, or .586 at `--img-size 608` using this repo, compared to .579 at 608 x 608 reported in darknet (https://arxiv.org/abs/1804.02767). -Run `test.py --weights weights/latest.pt` to validate against the latest training results. Default training settings produce a 0.522 mAP at epoch 62. We are currently exploring how to improve this. +Run `test.py --weights weights/latest.pt` to validate against the latest training results. **Default training settings produce a 0.522 mAP at epoch 62.** Hyperparameter settings and loss equation changes affect these results significantly, and additional trade studies may be needed to further improve this. # Contact From 47df31a2707602674333e71dbc86f086c00fb173 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 22 Dec 2018 13:20:40 +0100 Subject: [PATCH 0266/2595] updates --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6ea0e2e3..6f4e568b 100755 --- a/README.md +++ b/README.md @@ -47,10 +47,10 @@ HS**V** Intensity | +/- 50% Run `detect.py` to apply trained weights to an image and visualize results, such as `zidane.jpg` from the `data/samples` folder, shown here. -`detect.py --cfg cfg/yolov3.cfg --weights weights/yolov3.pt` +**YOLOv3:** `detect.py --cfg cfg/yolov3.cfg --weights weights/yolov3.pt` ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/zidane_result.jpg "yolov3 example") -`detect.py --cfg cfg/yolov3-tiny.cfg --weights weights/yolov3-tiny.pt` +**YOLOv3-tiny:** `detect.py --cfg cfg/yolov3-tiny.cfg --weights weights/yolov3-tiny.pt` ![Alt](https://user-images.githubusercontent.com/26833433/50374155-21427380-05ea-11e9-8d24-f1a4b2bac1ad.jpg "yolov3-tiny example") # Pretrained Weights From de2d835b91def59c760c6100369950707044d2a9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 22 Dec 2018 13:53:45 +0100 Subject: [PATCH 0267/2595] updates --- weights/download_yolov3_weights.sh | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/weights/download_yolov3_weights.sh b/weights/download_yolov3_weights.sh index 968dc1dd..66c87ca0 100644 --- a/weights/download_yolov3_weights.sh +++ b/weights/download_yolov3_weights.sh @@ -1,8 +1,16 @@ #!/bin/bash -wget https://pjreddie.com/media/files/yolov3.weights -wget https://pjreddie.com/media/files/yolov3-tiny.weights +# make '/weights' directory if it does not exist and cd into it +mkdir -p weights && cd weights -wget https://pjreddie.com/media/files/darknet53.conv.74 +# copy weight files, continue '-c' if partially downloaded +# yolov3 darknet weights +wget -c https://pjreddie.com/media/files/yolov3.weights +wget -c https://pjreddie.com/media/files/yolov3-tiny.weights +# yolov3 pytorch weights wget https://storage.googleapis.com/ultralytics/yolov3.pt +wget https://storage.googleapis.com/ultralytics/yolov3-tiny.pt + +# darknet53 weights (first 75 layers only) +wget https://pjreddie.com/media/files/darknet53.conv.74 From 465f8476609df387fa10756cec923b2cc1829036 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 22 Dec 2018 13:54:02 +0100 Subject: [PATCH 0268/2595] updates --- weights/download_yolov3_weights.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/weights/download_yolov3_weights.sh b/weights/download_yolov3_weights.sh index 66c87ca0..e00cf667 100644 --- a/weights/download_yolov3_weights.sh +++ b/weights/download_yolov3_weights.sh @@ -9,8 +9,8 @@ wget -c https://pjreddie.com/media/files/yolov3.weights wget -c https://pjreddie.com/media/files/yolov3-tiny.weights # yolov3 pytorch weights -wget https://storage.googleapis.com/ultralytics/yolov3.pt -wget https://storage.googleapis.com/ultralytics/yolov3-tiny.pt +wget -c https://storage.googleapis.com/ultralytics/yolov3.pt +wget -c https://storage.googleapis.com/ultralytics/yolov3-tiny.pt # darknet53 weights (first 75 layers only) -wget https://pjreddie.com/media/files/darknet53.conv.74 +wget -c https://pjreddie.com/media/files/darknet53.conv.74 From aa3d1a2bbd44cea4508b1cf8e96814b1e38fdaaf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 22 Dec 2018 14:25:02 +0100 Subject: [PATCH 0269/2595] updates --- weights/download_yolov3_weights.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/weights/download_yolov3_weights.sh b/weights/download_yolov3_weights.sh index e00cf667..cb642358 100644 --- a/weights/download_yolov3_weights.sh +++ b/weights/download_yolov3_weights.sh @@ -7,6 +7,7 @@ mkdir -p weights && cd weights # yolov3 darknet weights wget -c https://pjreddie.com/media/files/yolov3.weights wget -c https://pjreddie.com/media/files/yolov3-tiny.weights +wget -c https://pjreddie.com/media/files/yolov3-spp.weights # yolov3 pytorch weights wget -c https://storage.googleapis.com/ultralytics/yolov3.pt From 69963ff1f5be587ad21fbf5148a7174c68beffaa Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 23 Dec 2018 10:53:47 +0100 Subject: [PATCH 0270/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6f4e568b..517f6d3b 100755 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ - + # Introduction From c50df0d1dba924edf5f107a24e975741695386f5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 23 Dec 2018 12:51:02 +0100 Subject: [PATCH 0271/2595] ONNX export compatability updates --- detect.py | 4 +++- models.py | 50 ++++++++++++++++++++++++-------------------------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/detect.py b/detect.py index 2a3295b2..cfd91665 100755 --- a/detect.py +++ b/detect.py @@ -66,7 +66,9 @@ def detect( # Get detections with torch.no_grad(): - pred = model(torch.from_numpy(img).unsqueeze(0).to(device)) + img = torch.from_numpy(img).unsqueeze(0).to(device) + # pred = torch.onnx._export(model, img, 'weights/model.onnx', verbose=True,); return # ONNX export + pred = model(img) pred = pred[pred[:, :, 4] > conf_thres] if len(pred) > 0: diff --git a/models.py b/models.py index 31e2b7fd..ed7f2ded 100755 --- a/models.py +++ b/models.py @@ -133,6 +133,8 @@ class YOLOLayer(nn.Module): # Get outputs x = torch.sigmoid(p[..., 0]) # Center x y = torch.sigmoid(p[..., 1]) # Center y + p_conf = p[..., 4] # Conf + p_cls = p[..., 5:] # Class # Width and height (yolo method) w = p[..., 2] # Width @@ -146,28 +148,25 @@ class YOLOLayer(nn.Module): # width = ((w.data * 2) ** 2) * self.anchor_w # height = ((h.data * 2) ** 2) * self.anchor_h - # Add offset and scale with anchors (in grid space, i.e. 0-13) - pred_boxes = FT(bs, self.nA, nG, nG, 4) - pred_conf = p[..., 4] # Conf - pred_cls = p[..., 5:] # Class - # Training if targets is not None: MSELoss = nn.MSELoss() BCEWithLogitsLoss = nn.BCEWithLogitsLoss() CrossEntropyLoss = nn.CrossEntropyLoss() + p_boxes = None if batch_report: + # Predictd boxes: add offset and scale with anchors (in grid space, i.e. 0-13) gx = self.grid_x[:, :, :nG, :nG] gy = self.grid_y[:, :, :nG, :nG] - pred_boxes[..., 0] = x.data + gx - width / 2 - pred_boxes[..., 1] = y.data + gy - height / 2 - pred_boxes[..., 2] = x.data + gx + width / 2 - pred_boxes[..., 3] = y.data + gy + height / 2 + p_boxes = torch.stack((x.data + gx - width / 2, + y.data + gy - height / 2, + x.data + gx + width / 2, + y.data + gy + height / 2), 4) # x1y1x2y2 tx, ty, tw, th, mask, tcls, TP, FP, FN, TC = \ - build_targets(pred_boxes, pred_conf, pred_cls, targets, self.scaled_anchors, self.nA, self.nC, nG, - batch_report) + build_targets(p_boxes, p_conf, p_cls, targets, self.scaled_anchors, self.nA, self.nC, nG, batch_report) + tcls = tcls[mask] if x.is_cuda: tx, ty, tw, th, mask, tcls = tx.cuda(), ty.cuda(), tw.cuda(), th.cuda(), mask.cuda(), tcls.cuda() @@ -194,15 +193,15 @@ class YOLOLayer(nn.Module): # import matplotlib.pyplot as plt # plt.hist(self.x) - # lconf = k * BCEWithLogitsLoss(pred_conf[mask], mask[mask].float()) + # lconf = k * BCEWithLogitsLoss(p_conf[mask], mask[mask].float()) - lcls = (k / 4) * CrossEntropyLoss(pred_cls[mask], torch.argmax(tcls, 1)) - # lcls = (k * 10) * BCEWithLogitsLoss(pred_cls[mask], tcls.float()) + lcls = (k / 4) * CrossEntropyLoss(p_cls[mask], torch.argmax(tcls, 1)) + # lcls = (k * 10) * BCEWithLogitsLoss(p_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) - # lconf += k * BCEWithLogitsLoss(pred_conf[~mask], mask[~mask].float()) - lconf = (k * 64) * BCEWithLogitsLoss(pred_conf, mask.float()) + # lconf += k * BCEWithLogitsLoss(p_conf[~mask], mask[~mask].float()) + lconf = (k * 64) * BCEWithLogitsLoss(p_conf, mask.float()) # Sum loss components balance_losses_flag = False @@ -218,24 +217,23 @@ class YOLOLayer(nn.Module): # Sum False Positives from unassigned anchors FPe = torch.zeros(self.nC) if batch_report: - i = torch.sigmoid(pred_conf[~mask]) > 0.5 + i = torch.sigmoid(p_conf[~mask]) > 0.5 if i.sum() > 0: - FP_classes = torch.argmax(pred_cls[~mask][i], 1) + FP_classes = torch.argmax(p_cls[~mask][i], 1) FPe = torch.bincount(FP_classes, minlength=self.nC).float().cpu() # extra FPs return loss, loss.item(), lx.item(), ly.item(), lw.item(), lh.item(), lconf.item(), lcls.item(), \ nT, TP, FP, FPe, FN, TC else: - pred_boxes[..., 0] = x.data + self.grid_x - pred_boxes[..., 1] = y.data + self.grid_y - pred_boxes[..., 2] = width - pred_boxes[..., 3] = height - # If not in training phase return predictions - output = torch.cat((pred_boxes.view(bs, -1, 4) * stride, - torch.sigmoid(pred_conf.view(bs, -1, 1)), pred_cls.view(bs, -1, self.nC)), -1) - return output.data + p_boxes = torch.stack((x + self.grid_x, y + self.grid_y, width, height), 4) # xywh + + # output.shape = [1, 3, 13, 13, 85] + output = torch.cat((p_boxes * stride, torch.sigmoid(p_conf).unsqueeze(4), p_cls), 4) + + # returns shape = [1, 507, 85] + return output.data.view(bs, -1, 5 + self.nC) class Darknet(nn.Module): From fb4383f364241b370b706b116dab37581269c173 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 23 Dec 2018 13:46:47 +0100 Subject: [PATCH 0272/2595] ONNX export compatability updates --- utils/utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/utils.py b/utils/utils.py index e7bac03d..4ae1cc91 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -444,6 +444,7 @@ def plot_results(): import glob import numpy as np import matplotlib.pyplot as plt + # import os; os.system('rm -rf results.txt && wget https://storage.googleapis.com/ultralytics/results_v1_0.txt') plt.figure(figsize=(16, 8)) s = ['X', 'Y', 'Width', 'Height', 'Objectness', 'Classification', 'Total Loss', 'Precision', 'Recall', 'mAP'] files = sorted(glob.glob('results*.txt')) From c4222cc7f714cfe0bd84ef53f154ac2293c31e1b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 23 Dec 2018 13:50:44 +0100 Subject: [PATCH 0273/2595] updates --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 517f6d3b..290c7f46 100755 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ - + # Introduction This directory contains software developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information on Ultralytics projects please visit: -http://www.ultralytics.com. +https://www.ultralytics.com. # Description @@ -73,4 +73,4 @@ Run `test.py --weights weights/latest.pt` to validate against the latest trainin # Contact -For questions or comments please contact Glenn Jocher at glenn.jocher@ultralytics.com or visit us at http://www.ultralytics.com/contact +For questions or comments please contact Glenn Jocher at glenn.jocher@ultralytics.com or visit us at https://contact.ultralytics.com From 38fbc1e3832982c5922046a01060bd8bae2bb30d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 23 Dec 2018 13:54:12 +0100 Subject: [PATCH 0274/2595] updates --- .gitignore | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 20f49732..6389e5cc 100755 --- a/.gitignore +++ b/.gitignore @@ -8,9 +8,6 @@ *.PNG *.TIF *.HEIC -*.weights -*.pt -darknet53.conv.74 !zidane_result.jpg !coco_training_loss.png !coco_augmentation_examples.jpg @@ -24,6 +21,13 @@ temp-plot.html *.mat !targets*.mat +# Neural Network weights ----------------------------------------------------------------------------------------------- +*.weights +*.pt +*.onnx +*.mlmodel +darknet53.conv.74 + # GitHub Python GitIgnore ---------------------------------------------------------------------------------------------- # Byte-compiled / optimized / DLL files __pycache__/ From 5403581e382a27a7b9ee3a5ec96e1f02dbb5a6ff Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 24 Dec 2018 13:11:21 +0100 Subject: [PATCH 0275/2595] updates --- models.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index ed7f2ded..ecbaa341 100755 --- a/models.py +++ b/models.py @@ -41,7 +41,8 @@ def create_modules(module_defs): modules.add_module('maxpool_%d' % i, maxpool) elif module_def['type'] == 'upsample': - upsample = nn.Upsample(scale_factor=int(module_def['stride']), mode='nearest') + # upsample = nn.Upsample(scale_factor=int(module_def['stride']), mode='nearest') # WARNING: deprecated + upsample = Upsample(scale_factor=int(module_def['stride']), mode='nearest') modules.add_module('upsample_%d' % i, upsample) elif module_def['type'] == 'route': @@ -79,6 +80,18 @@ class EmptyLayer(nn.Module): super(EmptyLayer, self).__init__() +class Upsample(torch.nn.Module): + # Custom Upsample layer (nn.Upsample gives deprecated warning message) + + def __init__(self, scale_factor=1, mode='nearest'): + super(Upsample, self).__init__() + self.scale_factor = scale_factor + self.mode = mode + + def forward(self, x): + return torch.nn.functional.interpolate(x, scale_factor=self.scale_factor, mode=self.mode) + + class YOLOLayer(nn.Module): def __init__(self, anchors, nC, img_dim, anchor_idxs, cfg): From b6ff9cad79a2aed1fc0becad61291c4661ebaeb5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 24 Dec 2018 14:33:05 +0100 Subject: [PATCH 0276/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index ecbaa341..6ac63480 100755 --- a/models.py +++ b/models.py @@ -89,7 +89,7 @@ class Upsample(torch.nn.Module): self.mode = mode def forward(self, x): - return torch.nn.functional.interpolate(x, scale_factor=self.scale_factor, mode=self.mode) + return nn.functional.interpolate(x, scale_factor=self.scale_factor, mode=self.mode) class YOLOLayer(nn.Module): From febc55d96a962368cd25bc1745da1df3ebafcf79 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 25 Dec 2018 13:21:02 +0100 Subject: [PATCH 0277/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index cfd91665..61d7969d 100755 --- a/detect.py +++ b/detect.py @@ -67,7 +67,7 @@ def detect( # Get detections with torch.no_grad(): img = torch.from_numpy(img).unsqueeze(0).to(device) - # pred = torch.onnx._export(model, img, 'weights/model.onnx', verbose=True,); return # ONNX export + # pred = torch.onnx._export(model, img, 'weights/model.onnx', verbose=True); return # ONNX export pred = model(img) pred = pred[pred[:, :, 4] > conf_thres] From 647e1c6f5269b6a96a1d70608868d8fa06520768 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 25 Dec 2018 13:24:21 +0100 Subject: [PATCH 0278/2595] ONNX compatibility updates --- models.py | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/models.py b/models.py index 6ac63480..b2191d97 100755 --- a/models.py +++ b/models.py @@ -127,13 +127,12 @@ class YOLOLayer(nn.Module): self.loss_means = torch.ones(6) self.tx, self.ty, self.tw, self.th = [], [], [], [] + self.yolo_layer = anchor_idxs[0] / nA # 2, 1, 0 def forward(self, p, targets=None, batch_report=False, var=None): FT = torch.cuda.FloatTensor if p.is_cuda else torch.FloatTensor - bs = p.shape[0] # batch size nG = p.shape[2] # number of grid points - stride = self.img_dim / nG if p.is_cuda and not self.grid_x.is_cuda: self.grid_x, self.grid_y = self.grid_x.cuda(), self.grid_y.cuda() @@ -143,30 +142,30 @@ class YOLOLayer(nn.Module): # p.view(12, 255, 13, 13) -- > (12, 3, 13, 13, 80) # (bs, anchors, grid, grid, classes + xywh) p = p.view(bs, self.nA, self.bbox_attrs, nG, nG).permute(0, 1, 3, 4, 2).contiguous() # prediction - # Get outputs - x = torch.sigmoid(p[..., 0]) # Center x - y = torch.sigmoid(p[..., 1]) # Center y - p_conf = p[..., 4] # Conf - p_cls = p[..., 5:] # Class - - # Width and height (yolo method) - w = p[..., 2] # Width - h = p[..., 3] # Height - width = torch.exp(w.data) * self.anchor_w - height = torch.exp(h.data) * self.anchor_h - - # Width and height (power method) - # w = torch.sigmoid(p[..., 2]) # Width - # h = torch.sigmoid(p[..., 3]) # Height - # width = ((w.data * 2) ** 2) * self.anchor_w - # height = ((h.data * 2) ** 2) * self.anchor_h - # Training if targets is not None: MSELoss = nn.MSELoss() BCEWithLogitsLoss = nn.BCEWithLogitsLoss() CrossEntropyLoss = nn.CrossEntropyLoss() + # Get outputs + x = torch.sigmoid(p[..., 0]) # Center x + y = torch.sigmoid(p[..., 1]) # Center y + p_conf = p[..., 4] # Conf + p_cls = p[..., 5:] # Class + + # Width and height (yolo method) + w = p[..., 2] # Width + h = p[..., 3] # Height + width = torch.exp(w.data) * self.anchor_w + height = torch.exp(h.data) * self.anchor_h + + # Width and height (power method) + # w = torch.sigmoid(p[..., 2]) # Width + # h = torch.sigmoid(p[..., 3]) # Height + # width = ((w.data * 2) ** 2) * self.anchor_w + # height = ((h.data * 2) ** 2) * self.anchor_h + p_boxes = None if batch_report: # Predictd boxes: add offset and scale with anchors (in grid space, i.e. 0-13) @@ -239,14 +238,15 @@ class YOLOLayer(nn.Module): nT, TP, FP, FPe, FN, TC else: - # If not in training phase return predictions - p_boxes = torch.stack((x + self.grid_x, y + self.grid_y, width, height), 4) # xywh + stride = self.img_dim / nG + p[..., 0] = torch.sigmoid(p[..., 0]) + self.grid_x # x + p[..., 1] = torch.sigmoid(p[..., 1]) + self.grid_y # y + p[..., 2] = torch.exp(p[..., 2]) * self.anchor_w # width + p[..., 3] = torch.exp(p[..., 3]) * self.anchor_h # height + p[..., 4] = torch.sigmoid(p[..., 4]) # p_conf + p[..., :4] *= stride - # output.shape = [1, 3, 13, 13, 85] - output = torch.cat((p_boxes * stride, torch.sigmoid(p_conf).unsqueeze(4), p_cls), 4) - - # returns shape = [1, 507, 85] - return output.data.view(bs, -1, 5 + self.nC) + return p.view(bs, self.nA * nG * nG, 5 + self.nC) class Darknet(nn.Module): From 6940221948682ed55044de317252235750132352 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 26 Dec 2018 12:32:34 +0100 Subject: [PATCH 0279/2595] ONNX compatibility updates --- models.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index b2191d97..943d4d30 100755 --- a/models.py +++ b/models.py @@ -246,6 +246,7 @@ class YOLOLayer(nn.Module): p[..., 4] = torch.sigmoid(p[..., 4]) # p_conf p[..., :4] *= stride + # reshape from [1, 3, 13, 13, 85] to [1, 507, 85] return p.view(bs, self.nA * nG * nG, 5 + self.nC) @@ -263,10 +264,10 @@ class Darknet(nn.Module): self.loss_names = ['loss', 'x', 'y', 'w', 'h', 'conf', 'cls', 'nT', 'TP', 'FP', 'FPe', 'FN', 'TC'] def forward(self, x, targets=None, batch_report=False, var=0): - is_training = targets is not None - output = [] self.losses = defaultdict(float) + is_training = targets is not None layer_outputs = [] + output = [] for i, (module_def, module) in enumerate(zip(self.module_defs, self.module_list)): if module_def['type'] in ['convolutional', 'upsample', 'maxpool']: @@ -314,6 +315,12 @@ class Darknet(nn.Module): self.losses['nT'] /= 3 self.losses['TC'] = 0 + ONNX_export = False + if ONNX_export: + output = output[0].squeeze().transpose(0, 1) + output[5:] = torch.nn.functional.softmax(torch.sigmoid(output[5:]) * output[4:5], dim=0) # SSD-like conf + return output[5:], output[:4] # ONNX scores, boxes + return sum(output) if is_training else torch.cat(output, 1) From 29f2e80950ee12b4e29f59b65c12f96388c8177e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 26 Dec 2018 12:33:34 +0100 Subject: [PATCH 0280/2595] ONNX compatibility updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 943d4d30..a08cd822 100755 --- a/models.py +++ b/models.py @@ -317,7 +317,7 @@ class Darknet(nn.Module): ONNX_export = False if ONNX_export: - output = output[0].squeeze().transpose(0, 1) + output = output[0].squeeze().transpose(0, 1) # first layer reshaped to 85 x 507 output[5:] = torch.nn.functional.softmax(torch.sigmoid(output[5:]) * output[4:5], dim=0) # SSD-like conf return output[5:], output[:4] # ONNX scores, boxes From 8b34fbef330baaaf73edac8579a5b6d27b75dbf3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 26 Dec 2018 15:46:39 +0100 Subject: [PATCH 0281/2595] ONNX compatibility updates --- utils/onnx2coreml.py | 137 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 utils/onnx2coreml.py diff --git a/utils/onnx2coreml.py b/utils/onnx2coreml.py new file mode 100644 index 00000000..3b9af6bd --- /dev/null +++ b/utils/onnx2coreml.py @@ -0,0 +1,137 @@ +import os +from onnx import onnx_pb +from onnx_coreml import convert +import glob + + +# https://github.com/onnx/onnx-coreml +# http://machinethink.net/blog/mobilenet-ssdlite-coreml/ + +def main(): + os.system('rm -rf saved_models && mkdir saved_models') + files = glob.glob('saved_models/*.onnx') + glob.glob('../yolov3/weights/*.onnx') + + for f in files: + # 1. ONNX to CoreML + name = 'saved_models/' + f.split('/')[-1].replace('.onnx', '') + + model_file = open(f, 'rb') + model_proto = onnx_pb.ModelProto() + model_proto.ParseFromString(model_file.read()) + coreml_model = convert(model_proto, image_input_names=['0']) + # coreml_model.save(model_out) + + # 2. Reduce model to FP16, change outputs to DOUBLE and save + import coremltools + + spec = coreml_model.get_spec() + for i in range(2): + spec.description.output[i].type.multiArrayType.dataType = \ + coremltools.proto.FeatureTypes_pb2.ArrayFeatureType.ArrayDataType.Value('DOUBLE') + + spec = coremltools.utils.convert_neural_network_spec_weights_to_fp16(spec) + coreml_model = coremltools.models.MLModel(spec) + + num_classes = 80 + num_anchors = 507 + spec.description.output[0].type.multiArrayType.shape.append(num_classes) + spec.description.output[0].type.multiArrayType.shape.append(num_anchors) + + spec.description.output[1].type.multiArrayType.shape.append(4) + spec.description.output[1].type.multiArrayType.shape.append(num_anchors) + coreml_model.save(name + '.mlmodel') + print(spec.description) + + # 3. Create NMS protobuf + import numpy as np + + nms_spec = coremltools.proto.Model_pb2.Model() + nms_spec.specificationVersion = 3 + + for i in range(2): + decoder_output = coreml_model._spec.description.output[i].SerializeToString() + + nms_spec.description.input.add() + nms_spec.description.input[i].ParseFromString(decoder_output) + + nms_spec.description.output.add() + nms_spec.description.output[i].ParseFromString(decoder_output) + + nms_spec.description.output[0].name = 'confidence' + nms_spec.description.output[1].name = 'coordinates' + + output_sizes = [num_classes, 4] + for i in range(2): + ma_type = nms_spec.description.output[i].type.multiArrayType + ma_type.shapeRange.sizeRanges.add() + ma_type.shapeRange.sizeRanges[0].lowerBound = 0 + ma_type.shapeRange.sizeRanges[0].upperBound = -1 + ma_type.shapeRange.sizeRanges.add() + ma_type.shapeRange.sizeRanges[1].lowerBound = output_sizes[i] + ma_type.shapeRange.sizeRanges[1].upperBound = output_sizes[i] + del ma_type.shape[:] + + nms = nms_spec.nonMaximumSuppression + nms.confidenceInputFeatureName = '133' # 1x507x80 + nms.coordinatesInputFeatureName = '134' # 1x507x4 + nms.confidenceOutputFeatureName = 'confidence' + nms.coordinatesOutputFeatureName = 'coordinates' + nms.iouThresholdInputFeatureName = 'iouThreshold' + nms.confidenceThresholdInputFeatureName = 'confidenceThreshold' + + nms.iouThreshold = 0.6 + nms.confidenceThreshold = 0.4 + nms.pickTop.perClass = True + + labels = np.loadtxt('../yolov3/data/coco.names', dtype=str, delimiter='\n') + nms.stringClassLabels.vector.extend(labels) + + nms_model = coremltools.models.MLModel(nms_spec) + nms_model.save(name + '_nms.mlmodel') + + # 4. Pipeline models togethor + from coremltools.models import datatypes + # from coremltools.models import neural_network + from coremltools.models.pipeline import Pipeline + + input_features = [('image', datatypes.Array(3, 416, 416)), + ('iouThreshold', datatypes.Double()), + ('confidenceThreshold', datatypes.Double())] + + output_features = ['confidence', 'coordinates'] + + pipeline = Pipeline(input_features, output_features) + + # Add 3rd dimension of size 1 (apparently not needed, produces error on compile) + # ssd_output = coreml_model._spec.description.output + # ssd_output[0].type.multiArrayType.shape[:] = [num_classes, num_anchors, 1] + # ssd_output[1].type.multiArrayType.shape[:] = [4, num_anchors, 1] + + # And now we can add the three models, in order: + pipeline.add_model(coreml_model) + pipeline.add_model(nms_model) + + # Correct datatypes + pipeline.spec.description.input[0].ParseFromString(coreml_model._spec.description.input[0].SerializeToString()) + pipeline.spec.description.output[0].ParseFromString(nms_model._spec.description.output[0].SerializeToString()) + pipeline.spec.description.output[1].ParseFromString(nms_model._spec.description.output[1].SerializeToString()) + + # Update metadata + pipeline.spec.description.metadata.versionString = 'yolov3-tiny.pt imported from PyTorch' + pipeline.spec.description.metadata.shortDescription = 'https://github.com/ultralytics/yolov3' + pipeline.spec.description.metadata.author = 'glenn.jocher@ultralytics.com' + pipeline.spec.description.metadata.license = 'https://github.com/ultralytics/yolov3' + + user_defined_metadata = {'classes': ','.join(labels), + 'iou_threshold': str(nms.iouThreshold), + 'confidence_threshold': str(nms.confidenceThreshold)} + pipeline.spec.description.metadata.userDefined.update(user_defined_metadata) + + # Save the model + pipeline.spec.specificationVersion = 3 + final_model = coremltools.models.MLModel(pipeline.spec) + final_model.save((name + '_pipelined.mlmodel')) + + +if __name__ == '__main__': + main() From 4c5f4864fb06e8df8235702564a8b7fd46b97ae1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 26 Dec 2018 15:57:18 +0100 Subject: [PATCH 0282/2595] ONNX compatibility updates --- utils/onnx2coreml.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/utils/onnx2coreml.py b/utils/onnx2coreml.py index 3b9af6bd..40a47bb1 100644 --- a/utils/onnx2coreml.py +++ b/utils/onnx2coreml.py @@ -6,6 +6,8 @@ import glob # https://github.com/onnx/onnx-coreml # http://machinethink.net/blog/mobilenet-ssdlite-coreml/ +# https://github.com/hollance/YOLO-CoreML-MPSNNGraph + def main(): os.system('rm -rf saved_models && mkdir saved_models') From 9a98e806e08393f836df2faa77f3301c45be9022 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 28 Dec 2018 08:48:10 +0100 Subject: [PATCH 0283/2595] ONNX compatibility updates --- README.md | 3 +-- weights/download_yolov3_weights.sh | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 290c7f46..15d2cb14 100755 --- a/README.md +++ b/README.md @@ -62,8 +62,7 @@ Download official YOLOv3 weights: - https://pjreddie.com/media/files/yolov3-tiny.weights **PyTorch** format: -- https://storage.googleapis.com/ultralytics/yolov3.pt -- https://storage.googleapis.com/ultralytics/yolov3-tiny.pt +- https://drive.google.com/drive/u/0/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI # Validation mAP diff --git a/weights/download_yolov3_weights.sh b/weights/download_yolov3_weights.sh index cb642358..1cae8bfa 100644 --- a/weights/download_yolov3_weights.sh +++ b/weights/download_yolov3_weights.sh @@ -10,8 +10,7 @@ wget -c https://pjreddie.com/media/files/yolov3-tiny.weights wget -c https://pjreddie.com/media/files/yolov3-spp.weights # yolov3 pytorch weights -wget -c https://storage.googleapis.com/ultralytics/yolov3.pt -wget -c https://storage.googleapis.com/ultralytics/yolov3-tiny.pt +# download from Google Drive: https://drive.google.com/drive/u/0/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI # darknet53 weights (first 75 layers only) wget -c https://pjreddie.com/media/files/darknet53.conv.74 From b41d6af01b6f442d589cc15007634c5a46d8dfee Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 28 Dec 2018 10:50:08 +0100 Subject: [PATCH 0284/2595] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 15d2cb14..fa0942e8 100755 --- a/README.md +++ b/README.md @@ -48,10 +48,12 @@ HS**V** Intensity | +/- 50% Run `detect.py` to apply trained weights to an image and visualize results, such as `zidane.jpg` from the `data/samples` folder, shown here. **YOLOv3:** `detect.py --cfg cfg/yolov3.cfg --weights weights/yolov3.pt` -![Alt](https://github.com/ultralytics/yolov3/blob/master/data/zidane_result.jpg "yolov3 example") + + **YOLOv3-tiny:** `detect.py --cfg cfg/yolov3-tiny.cfg --weights weights/yolov3-tiny.pt` -![Alt](https://user-images.githubusercontent.com/26833433/50374155-21427380-05ea-11e9-8d24-f1a4b2bac1ad.jpg "yolov3-tiny example") + + # Pretrained Weights From 110bc330231af70c13eccd4aa934360439bd2fa6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 28 Dec 2018 10:50:38 +0100 Subject: [PATCH 0285/2595] Update README.md --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index fa0942e8..d3ff1700 100755 --- a/README.md +++ b/README.md @@ -48,11 +48,9 @@ HS**V** Intensity | +/- 50% Run `detect.py` to apply trained weights to an image and visualize results, such as `zidane.jpg` from the `data/samples` folder, shown here. **YOLOv3:** `detect.py --cfg cfg/yolov3.cfg --weights weights/yolov3.pt` - **YOLOv3-tiny:** `detect.py --cfg cfg/yolov3-tiny.cfg --weights weights/yolov3-tiny.pt` - # Pretrained Weights From ac2adc8be10b276d87ff4576a2880393ed135a1b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 28 Dec 2018 19:17:33 +0100 Subject: [PATCH 0286/2595] Update README.md --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d3ff1700..a0d76990 100755 --- a/README.md +++ b/README.md @@ -23,7 +23,10 @@ Python 3.7 or later with the following `pip3 install -U -r requirements.txt` pac **Resume Training:** Run `train.py --resume` to resume training from the most recently saved checkpoint `weights/latest.pt`. -Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process about 10-20 epochs/day depending on image size and augmentation. Loss plots are shown here using default training settings. +Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. Default training settings produce loss plots below, with **training speed of 0.6 s/batch on a 1080 Ti (15 epochs/day)** or 0.45 s/batch on a 2080 Ti. + +![Alt](https://user-images.githubusercontent.com/26833433/49822374-3b27bf00-fd7d-11e8-9180-f0ac9fe2fdb4.png "coco training loss") + ![Alt](https://user-images.githubusercontent.com/26833433/49822374-3b27bf00-fd7d-11e8-9180-f0ac9fe2fdb4.png "coco training loss") @@ -72,4 +75,4 @@ Run `test.py --weights weights/latest.pt` to validate against the latest trainin # Contact -For questions or comments please contact Glenn Jocher at glenn.jocher@ultralytics.com or visit us at https://contact.ultralytics.com +For questions or comments please contact Glenn Jocher at glenn.jocher@ultralytics.com or visit us at https://contact.ultralytics.com. From 1b629e754c024b5f9073dbcdd8260249e7199d6d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 28 Dec 2018 19:18:15 +0100 Subject: [PATCH 0287/2595] Update README.md --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index a0d76990..e027a368 100755 --- a/README.md +++ b/README.md @@ -24,10 +24,6 @@ Python 3.7 or later with the following `pip3 install -U -r requirements.txt` pac **Resume Training:** Run `train.py --resume` to resume training from the most recently saved checkpoint `weights/latest.pt`. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. Default training settings produce loss plots below, with **training speed of 0.6 s/batch on a 1080 Ti (15 epochs/day)** or 0.45 s/batch on a 2080 Ti. - -![Alt](https://user-images.githubusercontent.com/26833433/49822374-3b27bf00-fd7d-11e8-9180-f0ac9fe2fdb4.png "coco training loss") - - ![Alt](https://user-images.githubusercontent.com/26833433/49822374-3b27bf00-fd7d-11e8-9180-f0ac9fe2fdb4.png "coco training loss") ## Image Augmentation From 7f257d30c5063a4ad59a3ebddb6401f631b039c3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 28 Dec 2018 19:23:35 +0100 Subject: [PATCH 0288/2595] Update README.md --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e027a368..491e26f1 100755 --- a/README.md +++ b/README.md @@ -24,6 +24,7 @@ Python 3.7 or later with the following `pip3 install -U -r requirements.txt` pac **Resume Training:** Run `train.py --resume` to resume training from the most recently saved checkpoint `weights/latest.pt`. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. Default training settings produce loss plots below, with **training speed of 0.6 s/batch on a 1080 Ti (15 epochs/day)** or 0.45 s/batch on a 2080 Ti. + ![Alt](https://user-images.githubusercontent.com/26833433/49822374-3b27bf00-fd7d-11e8-9180-f0ac9fe2fdb4.png "coco training loss") ## Image Augmentation @@ -32,10 +33,10 @@ Each epoch trains on 120,000 images from the train and validate COCO sets, and t Augmentation | Description --- | --- -Translation | +/- 20% (vertical and horizontal) +Translation | +/- 10% (vertical and horizontal) Rotation | +/- 5 degrees -Shear | +/- 3 degrees (vertical and horizontal) -Scale | +/- 20% +Shear | +/- 2 degrees (vertical and horizontal) +Scale | +/- 10% Reflection | 50% probability (horizontal-only) H**S**V Saturation | +/- 50% HS**V** Intensity | +/- 50% @@ -47,7 +48,7 @@ HS**V** Intensity | +/- 50% Run `detect.py` to apply trained weights to an image and visualize results, such as `zidane.jpg` from the `data/samples` folder, shown here. **YOLOv3:** `detect.py --cfg cfg/yolov3.cfg --weights weights/yolov3.pt` - + **YOLOv3-tiny:** `detect.py --cfg cfg/yolov3-tiny.cfg --weights weights/yolov3-tiny.pt` From 53adbc82ae4a3158549eedab6dd2dbb3078c2dd7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 28 Dec 2018 19:24:01 +0100 Subject: [PATCH 0289/2595] Delete zidane_result.jpg --- data/zidane_result.jpg | Bin 159669 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 data/zidane_result.jpg diff --git a/data/zidane_result.jpg b/data/zidane_result.jpg deleted file mode 100644 index 966bd350961772ae2279e540499f6ce2b7a9e88b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159669 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 From 5e58999f507dd87f3ff0a8ec118d90a99ea05526 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 28 Dec 2018 19:52:25 +0100 Subject: [PATCH 0290/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 491e26f1..17634800 100755 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ Reflection | 50% probability (horizontal-only) H**S**V Saturation | +/- 50% HS**V** Intensity | +/- 50% -![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_augmentation_examples.jpg "coco image augmentation") + # Inference From 8ad8a64a0d02ae7d884c958e4f741e59fab64b9b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 28 Dec 2018 19:52:54 +0100 Subject: [PATCH 0291/2595] Delete coco_augmentation_examples.jpg --- data/coco_augmentation_examples.jpg | Bin 395789 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 data/coco_augmentation_examples.jpg diff --git a/data/coco_augmentation_examples.jpg b/data/coco_augmentation_examples.jpg deleted file mode 100644 index 633ffa118be71d566b437c704bb772fb77249b1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 395789 zcmeFZcUV-~cz6KN4PF3l z3FuYugV_Rrx;k(V003fu5RVeT2U~dH1>i9NSO01QfF2&>KiXz^cm4)*1%wdJwfZ%WN@4@Gv0*>+r(|o@8#ttB_Qxm z0De~wI{~mC{wKVD&gavWzvCyo^$Gv)ZGu1$4y1)7_HS5RJo%qnyIR`tTe&(5_&s+M z5ahov0LVc7+@4!G+IX>A+StKdWZ4cHn%P)k*0OB+qU!h6-5%N4!;}L&Y@P*Z=vW0f zT1i^7LFHIw{G|Mx-JET_p0oNnJGppD`N^{Vgkq^JV0>=r>g^@V29Eq+Q*w6u2ipIZ_CJ7bQja`ro_o1^ z=(xH%$+G>E)Bm0**aSdo1pY?OpXNXKBFFll@*fWThXeoNz<)UK9}fJ71ONZyz&|Z3 z8yC==@&)ZC0JjH7XxY1Zxq8~Wy0HrL-v=b*Rn!Uon1^8btIhdW^Trr+%v3y3POue9 z@_rXBAA)NEZW0p&65hhcV*{?-#KXUdhieBQpc#1;@2~P#H}Hmc1)tz5ArUbNDH#Y* zbpyD9hmU`S0RQUMKf~Y!gP#KgH?LCO7JNu}OZzzyn>&@zi-ga_?DA!;)K7 zKOp?&tBBWcBBK(M-X*7`zWf|yD^;d5Cl3A^x9B(&4{3i<_U{oE z_CKQRAB6prt{LDFaOJOpe+85hK0YWZ01HzMCiOA}hNub$tkz>%vqPbp&Hp;+l%K$9GP0|k=d5y& z80~BRy{;yDAVJKaqguAr^MinnH(N9N&X)O9Ru==L?b5eB?X=00>ZVe*s-+BF`cdY*eO1Z7%rMpu1dFKwza#`95v2apE9}8eKw1IB%%Vh{CxGx z!bJIw`oGXP`6$q?y*~#?M2TL>i5mM2^j#=DMrK7`E0ds{ePriS(&;B;#;+u+5S097 zlZEH`O-BG27@V@2mPK2^cIZ%7)#IO!#MDHJi2Hw(`-=ZFx8~q zc4>J1>Ldt0sSd>fNeI%s~O2G>y1Z-V{&ZscPfVSE29?Y1ikFd z6vWOX2o4Cu1QU7W`c$G$XnyGty)*b4^pXAuxof ziu^T^yxb_WdGI@Lxbzg~^rY-9O%z{g(G`v@!2`v-e@^yr=0j!|Nf-%eee@F z#-nlJ!l&y8vQOlja4YO4FKcXWl0)2;?6r7}AL%&`A#zD(mGwH+V~v7eZ-2D5aWs{0 zmpXWyC?;*{A)iS-c0$`;ReN3oyBVHOj&5a!9GE+_SB+M^vCGF)Cyab@+cw53VI9Bfg)G#E zn0e61I95QbwmAx3yE|6y9vS~Fzu!*VXlCcPbF;?0j|lGx z(-1?*|1clQY#02gW#k{>EA{O^~X2bB#Sx!1P=gG>3L}leKRM@6O zB?)S@x@sREuD}xXeQ4wXg1AqlThQ{wi<@N&{A~jVf;A_D3j+reZ|Y0DMp8n{} zD^Rc9s;`(a-WlFo=(FT$f-8P|KVv%A!Sq#}ieDV>c)$^2f?9}ZgkH~bFPP2Z(Rruf z$l+kh{HFWtH4vEebld1UO7=3ZDR(*{-daebm=<9E+|B!IBT;H1cp$0B5N)XzXk9Ii zY+s+^Vdh}p($VNPjlO}o4m%4 z-xI3_TD%Age$nqw(Y`=u><85t3R3xOVB}CE6;}nz?KJ1V$*&e+eb3K&YH%oA+o-aj zEzKF$fH{_Oqc=Z|6MT;R2J5e)&P&<9+cT5x8=^1k;%xt@)Yv}DvJqa{%DdpGTw~O= zM$O2PB&qK_r5*P`24&f|CDQhBP?M)cP4>rYg^gvdK9 zXVFRDU>u-EC&!H9d>y&F);yYM6CoYBSEKsbx2iEh%%)XRzSk#nxu);V_Jcj0Jtt@0 zY_SRVV!^d^CyP5*<5XHsxJA3o{U`^u8) zrj(#)NJ3}TDHr|?0bHg+S6}(rVHa?~as6@=Hk9;E_CKm1=26Ks+VQ~{Mky#!#W~M# zFi_|*UP4YyY_7$NsId0CEga-0Y|Ww}>^PtmB)|^(3d;#6-N7=Usye10F|Fj{}&YPjJ9miM;}dJ>l~Gx`a6y8fiDFISN06ng0wD zi_5*ysIO#0`{aCx=(r^dsXsVXf{MT9w~?8($>53ucy}}wu%!JLk|yy*_>h!S2OX-$&>6V37V3#pV|%`d<9*1#36*Ag1MaIY{!EmC;Rjt0opt?Y9?% z7Axih!F)q(%(rHW{y09C+>4%H{J?{I*iaZ2s0N40(7hlN`w&nH>Jn~#9Y z@2OZ)PNX6e;fRce3e?MJY6C_1JH9I|7P^?-Ot8wS{}`phYE4l-WmC5a9j%iaM}G<} z8+@uMS7mW~Tk3@F6U8(kIG6aK8zvi%Q09>1EgR4X8B+o|cpH6VVMhc(rGPz2E(E3K z%Fs-2^ZKV|CHKOB3FO(rCj6uIAZ+ux)DY1=fjLrJbL!kAZq=3$A}EX zf{!NXYY53Dx-hqVcE;G^h;#@vtD}x}x0?h&AzaC-0T+gfv9)V~bimzj+{aBN_D~m! zm*S7StK#bJ%dSKWzuxjSAJFYjXIf;~*k|?oRq52*_SuYL>j7ls_rDsd@&9U~!iA#| z=yVO%U)wc97OVcgly|z%MNQ44Z~$d7<9)|TB_dW;O3>^|pf12a*Za2?@cO#IG|#g4 zhs(8&yb0(=Re1~!SSU|+Z+38f^OXprc5HPLwgM^zd;D{$e+%J;)Z}R?DjRaV2YHf? zts}_>d7YbB-vFJS;DxvMwQ1C1@9?+TA?;rufo~q;|J_-vY&w(P;O( zq8NI9zr>#6jocL(3d$`A8bSoF{Rfbe=704F{#AE+pXtL8oBHUB>p3v@goHJX_yo|$ z;Hs)W{P(ru|JV`vZwUK;skl#STFfg!FDZo0ue_^unk%dLVc;K~oT}CGHlB<7Lk(4J zLWC|c-LnC?oXvAg*dMK2kNz*M9I@PNZVzNf-T6oTN?RX8LnwIPYTb^}y>r&Phovf{ z?lNF_|E2UpXi^ zPu%puO3h2&=80(szRnPXZ0Nvqlgq9>@kJhspQln4&f7F}BsgFs>MX1MsYSJCj0-)T z1cG^z%iC3uSYlfmWuQi;E*#*uUA`SW>3^Y%k*=twwQVy@yEVQXF&7rMiUV@vhywb@ zppFL-)4};O@bZ(HH)R>Eu1*^)jdRy|j>biWU7k?hag+{w+=2u8gl1h%&5b$}J`dT^ zc*^a`9dO;HTVuBxquC12fLXG`t`0oPVw;<5FeM_e=^QFHVp ziyp)seqGTb#%SsiIuh#&lbJ+0*k`K&StA+pm9k=gt3YO^L#P1+OR9_Hhc!k#F&-5EPOsn@X|0=QQ=A_*IYIa_o4_|3 zx)vgtz=>x=(+v9|%WB{(AE1fI_LADL_W^L>{3;g20r{l43rHOtFtr6=$6L8|bh9J* zwF~HF-`Fw_uW_+XXmE4mVa9I^cX&>l1HZoX^mw+ibZ~(LzF1^lQE3_kT@l;$nSx;; z7`muXaApS0cG?+e-_Az(Xk6CdD3(hX%^X{IE9-zE}dSc;ABqUb=Q-tgt3t`#9h?C1RsfeF-=u zdYCkerT;2Kv}q8k#OhP%`Mf)R(+l2e1h*5y1G{*3&f)-Ycu>0cs=)2_s_Es&eTajf zZ)d0lrFv!tFnHNsaYl;u9#Of)8q}*KxdG|@a_i4CIP{vMd0cnbyRBL1Q9ZiS2B7(|g(d=rhWR2k zruz&V%ieYums>mETXAC@ZRaU`Ohf#{Q=P5t<>vk>-iw|7d*1iNVFZQplS;>ov>592 zQ?Hca1NagX>Z{_*__Qt!f|Xhv5Sg%?pXD$ULyAt`}sp~%J8Z8$H>XJimlUY;?Q%? zLU6|qYYFL3y-o=s^Fu{S(2X9iBy9>79tIbkO^(V)yN3|uG4R+VSyxEhrb4~_={F$7 zJuh1ywX;`w5r}_3hHmBNTYN75j1>smah&knFFS_aR_9dFSkjIQ>AngU zMpXH}#M^W}X(#pxJ%*IAlUB(thsp({E@G;K?kr6_I+3*@MX%x;33oYufon*Ue8PeG zfa!eR)%p(7GpA=8huOhHh+XZAQCjwiEm!o}rdZgQWb49)5*>~<(2l@C5uvZ1J( zSMuQI^a_^r_l4-pi{`cv3Cn<&WuwNBr=l{RCtpD^-n)pC$VmI zlN@wc-hOa3y-r%m0pZA>eX5L2c#WZiZ1Xai6md;nTLjJU>;Y;=`G_TU`Pw2WKYT+*dRU)c!fNk^i zvzF#6@fWUG)*$G&@ybhS&G9e8dC`Uu#4gv`?>}_=S>!7FgRa+vm7rFVXswe3D$kR zl!i1>d?rh{$=5mQTpaLh@6hQrS>zAJDxLj<$^M+*Rxt_(JONRjaW#wWO|IXrBPVKB-Q-(%@zyhb;Jc5BZ(4~L>jyA*Z@x>^HA77r7v1E1|Mhg&_A3UccFBh&WnPr>d&4rfQ6u zf9X~y%boGCa#wm5SZmjgIUSl|>6S_LksJP+VzBZG%Sql6*;+6}N$~JXA91jby!*Mn z0>9MHHOH!ED|%!mo~NNK^>4Yi>8I&PCt(rpM<{&i{pz6`Az5400bQqWkqT@5Rh9K2 z2wNBW)Zm{tvb!p+UD-So_rrmsEpriO8ZpZ5Gok{F=EzrhXOV^(Q^oViJuPENyV!t? zLfrwsr8hEhkhGI`d}LDO*~uQrk`dXSG} zc}`jHgZ|aHkW-(d7?jyVt~`@26F3L@V`;d>oJMO2U_%m>rI{cI>`?S6Y}CKqq`g3#eeH#z6%_ zA!ylA&n{>DxlK775*u_0#vE#p@aI;pU&BbAzTUmvN<_zV`ZK=sD@LPUtvUR@h7HWr z?5eHRz#;`6oNNkxudnDdI8CIxXB$7EdnBH#V zRWP8lTBVMt#lGUYZ1_&zdOJ$Z)I@@QS|by*yI8(cZ$Zi6FvM%npb_vUqad4cxXYDJ z<*9!9!a;G0L_3~s-6|t|jKXR1h}=8c-+DoGyG&N)truqJ_&1iMq!8BD&LWd$TpPw2 zmzG-@9cre6>XF!B(&Zhb%W6D6W|LsJwujF0^-DiJLh~(|nmN;IS4^@j&xT^3h`sWF z&o?|f*B4trY7d5XlSske3`mn13u$6C^jBOv(hKs?38ni9iZdT*lj7@@PY_aZ%ak)g z9TKwdwbevBR2NpQo?TTj>pE6Lrk=K<9Z@OZG8}Cb_~KYy4%6an@5Ihei(32KyYjv? zk7L#IEf1LfShBG)}T0Z&oN= zq+3m1(m*cp98E%CZ}PM|83SlvwLC3US5^9e2Guqw8~2)S7v)BnaWkdSMe0(9{jY-FNHC>aB+|OKOst#QTMA zVAJj*y4_ef?7U&Bp6;U;`Eyq2M|?R(_oIA5LhSOy_wFv*a4=pojz6~o9aqTLk&sa= zUi^W9BTMtP1(?W+LMPg>`vkZT1bKmAsB)VWa(d;l>|N`u=LW}W#nWZzBNBnbJ?UTepxL?4I)R}09CLk=;(1y zuI~*G61~9eWYlxqZCT08S~1mHDIVXSoVAjpYbkNU9-VOiJKG*&hN55d|LH_Kq61Is z(ay`J@F&Q%xb#vb&#&_jZOHnrev7rPO|W{p=JNj4)d*#Rl~1B)x@IqsSyrxvm^ z5e}6qVV@X7woGcbwF~97Qhx6D2_}DgUtoDhrBh{dVq@XPnV#6iZLM$Zcz6#?EUcKN z$lVPYBEFu#fbF&T#`CoF?9D`N33&YqHICqR3f6(&I7l+7M0H*LRaYg^)&JIw2p+Wj zU4UkeYH9cw2e9wnpG}59wMVv}*-zkrY2mQpH*+84GsTXEJd-lqO;{=lX8f8Bq*7m< zWR?5nsFWW*uc*H>kx;cXz!8%pnM5qNL++kg)#o?3Y##Z;95&6hckgiCin>CLIL&cN zneNca>B=W$|B!7{R7YjWO=p3VB0t3f=f+5vE1>^J)e{D=3U;mXWRaOsdc?O8Pt76f z2QKDV&f9eQmdLF~yg9uRC)Ie4xQdrYD=NNM`}`XJhE(t9dTj^B7OTY_gKxxb{g5di zOb9bvmARRDUt&*B#FUgzXk zXhtq}{m^#N9XctHo4Sua)bVVwIKoPY>qqu-Q}(-0)x4_9KIG2~`+J_H9XeYrQ^bhE z$y=9QBlONg@(EJs&69*HL{7JNR(JjkE8O@^2%k?)Mo(F!U&GZ*!wn$J`{W&}@6CBC)(_ti&}^WaW;eedDOU2=wY^ z{IX%=v)h?Gmm0Gq#r<6$3E=lR$Nd?PI+gIhtv98NtaqqXh1t(#OB?FGxcyq|!Det# zpDo(kYMD&id)Y?FVdSCqH?5uO5VI{BJe2|U;ky8%0iU6y;5?B+MQotbmIsY+aodpr&8 zlibH$O9m2W^lNHg?9;Q%Y3J(QDvWu-NX-|4y%iHa6vNOW2St9}HnM$}_EOlyQK;uy z)Q=}&c99H9c<-psv<)&6T0~77i9YoN7Md%N#8yRfls9bl@Ve)xG$fRh5uAAhyol;W zPPRcQ&`NDab}yIoo6ANFGl%BI(@=>&S0MZQw}Y>GtIcqwfE#95vnX6?cImScx7V8F zfQymQUCu@uU*EvP!DM3%`?+}mSNSn-;^P@BPhJn@&nr(J=gs_%yTNq5P10%zP+8Px zEDm}&%xgRD^`4(&xj3{jZiNjWsPDC_5dwYw!Sx@fFLa@M>+|f2CszJ8=_e-?yWGS-1;M3rH zZXUuW2X7h$ve94X2NsN852%sN1S>9(_gd9e1*0VHDXP{;$gnKuy#6um#4x_!j4w2| zO*1q-Tb@Cv=6O2?6-MV@(!ClJKrY>{Ix#wVeuzzJyqW*Xt8{(rWHeQMylQ>Vw>p+{ zVkiHrZ+&oF9>vtbV$?csc)7J9E&J!TD?FJDJ{4DIZ??HJZWX$6c(T8S%^?YFOv*YX z=Q2{dx8i~-S~3OekVI{+6kRAi7_aNJ`xlWK*YAcLN2E&Z9x4=vt1&CANpTK##wmJf z+4jQ+I`BZ<7?xhNU=H79Da*6FU*WLA+|KICz6Tlv;0sP;=P$(Dlp=UF}#R&QpcZF%19Ak@8^IX)mW zn_stEqN~*ZONx*{ug_8IPJ&)ecX6EQ3FkdB!VR`>LC-#MM;`N(TvuyI=d2?oKaFGm z;8S1I+s*`LoIOaWJ+Oy|14Nl*=9Mp>`s6J2Fo&{3O6>eJjmAVTNhfv2E7wQ(_whgQ zW@?INPw#%BnXc=``@Y%fZqVzM$Ng}B^q_j?W98lDJFQk*BJVhg_e=AN%=Qk3cO3Zy z>YJAosCl>6G&$h2KIYwHx+88^sk9&bsSreS`3B}Kf*c3T-~eo@iGK5BXh>hyp?o74 zvH`dBb5nOSFw6OO_&-l3qK^18&P*X3PzDEsm?MTf=&j3dopSeUzNf-4^UYx#jw(r3;I8^A!sG(qtGKGonS*`@pue%dvqdt?JsBUHlG*RwwOHm&{7M zr#xD2xlE&_p9S|g^wq9?%~YZeu3W8s)9E+(=m8z-u^EBip-PwPTt#`ZejvGJdCI_w z=38oRyWg+T`mlVC3f2T0^5*@O^C5x>?KmDpIX)hRJp5iy-0RwZY|838VnPjF7dB<0^v~L%m0Jlnq?s5g z8zkCPLQg(&wuAm=Jmd-$XmvvTv~xd}VW_OeEXL@(HL8BV4$(HfR(Y-R?%9i71;9$- zmf}n(5o;KQJcX8h?I>2kLMYcp(~QDu|C)ChtVrNV;W2yE_cX&8>UT6s%u25C-cXtH zz}thz#evZ`lO~#6g6Tsoughbr!oBmTx(^<(sC(PQyy*9&^^tYsnG_IN>A@!Vn*E~g zk;{CCx2B(B#VoBa>g_=EaLfmx)l|9D=~rrY*gwcjNZ|k+Nf((31@o{d<2}%X2ts-r z8v1x|9Um9>cfwZ5B0A3p!YU8KIAc7 z$ZhZ5Mo*&1)D_|!PwJA2c##T+;obDQdfY50YefuGtZ$P}BWc&@T4Go>#u7%#vm|AP zh(^-PyRzsO2x`=vWj8!S8SY-!#1QIYb+1=kDEP%|G^jbMsY|UY(9u$?^?n_--aj17 z2+_JPNyKq$l=^5@n9-holucj$!&a5CWYpmlbcf6Oir|Hf3 zYOIp@qi5ekk7xM5gv8)dQ_-j8$SAqFM@nOC^sV+!o}zY+M7&XZm{VVia)Bf+xdZL4 zX6lal@I=`H{9}!U)30a+0Zh=G*%TN?b5wGIFCc{K`vj)R7W>cI<#@_9&kxp(PjEnK zLGsyMKOq(B!9F|p+r2qfe{!JE-RKofBERsJ$yc9;yurgP2{@pVG%s)VnPkVS9tj;w zKOm{g;W7uY%8exn#BaOs#t1Eh!k6J)@H4z^>dQbaJO!$MR%J!SyY`>RuUQUAI%ilB zSj4wahN81uit2oI@ntrM4iR~!H)Ng=4^kgZ#xC8QRW8LE$f7c{n}Vnn7gv6rVFnUo z6*$MvHjGDNe>5Uhi>Zyn-266hz_{71;vbv)R|H8i5~ZvVGVt@FUqOmi(Vm6;_dUbo zHcI>kn)#v$*}eSD^bcaN?^Jq(>kZL+c9Iuo;yjPq?`-bho@K&nEBRfJ`_QMWeeaMXy1D$0?%eMU9RV(Z{ z^?Mv}t7@El!LG6e2iTm$7rYOjwjfsmmhZtAxqlV=-a?%H$-ceFP(wSmlg}(XX_VZg zAv!?28y+mdZ><)L><`L>ES(3toBqtA_4eWxo2c!Sl9X;f_@4YxyffBENPcQ6Dejf^ z;%}^+gWTt~c&w!ZeDO~6-gQvEpB&(5Mv0wxGQTwQvzPOsMD`pwU>R2K_pIG^7BA17 zhROLtB;y5`NG^RJ_|#5SVuBx+~Khfde+V^08M$ z+fas0X-sCq6IMI%31X>2e0cqac_c;9-!Ksf`goXovdkhdB!u;#0Z! z@#t&5A(Y6hH_yk4rw==qc>J(b;d3|>;inB(qnnrO@|EX%J9MM=EfSfo zxM!UtZ|cd3jF);{a;`-z?4`|3ceyeU&M=X;xVV|~KImD&uX_5!4RlEj!96wfb{}&G zW3XNpmQeUXw0`vC2^r%eL)Gb$v6#0r#54Uj+JP9SRu>hn+K-w)raO~Aw|<&3HhD4~ z8Tj$(I^BnvHQ>xa$4!L;Z&3C3=DgCRz;cSg;)qwEXy)nCSgLTXC7b5^t3O_G-~Nt7 zq+=eUD$GVWqNd3lX){XCbQ7N_HN4Z{q_>c?>M{$fTMA!_6z_}rGppd%lleO{+hEol zDdta@w`9)jP?KmjXCDyvdzX(BxE@N8`spiCD~kvyXPUg@3*KgodH@t70*UTfZd30n z?P*5uNy6Y*St>o2d{)H z0lI}8Zs|Z29>$jk=C^{zC>9ZP)wCBB+AGadHY*S$%gNRjYN10z&X`Xo!;X=25F3k7 zMaIVj*(}pB>WoEv_yW_8IO1Q8lNYL6qWUR*)EUUYLi=i^xJ(y{yuu+Ry31YZzXUZ9aMY$>Ef3{ZhrN3F7{X6auC43| z3isQ}?B?@`zsEis*RA)|oePUW6>1$h^q7;M!f`8nBKDaV*5i*=9Jjf98 z9`7X16)UR(M!e})V#(6|qnavyLRuGY*l?z| zog<*fTVNjSmU?_^h@6)D(%v&v1=ukXp$Q(?iA8;J;}xj@543?V)XG@SX&mYU4tVba z-h#jkYL}yV0dn$^00hOmy@LJ>|0xQ^kS`sZzm}67uOb#%$u*rS-it`vCb|6zSgokw zm-5*Txb8Sobr71?8K0+CxHTOU5cBPJqJd1#t>=oyebVXf_%b)@&QV5kRF|JljQ0ZO z``Rb;zWw^CDpFl|H-YYQg0*4Ia||!TL(1Y3e}#hD5Ur`4a_$YYvvzmAa@UGC)a|+y zzjBXk6Ow1!BaUgQSdp*_Zoit-n7-z|_hsNxAh7A?q5t45cSQ)~5ykF1lj<0Kp_KZa z`Wj=SnTn&aJ2tbiiGHk46Ygb5VNJIk{k|AZaL2AB5pi~kouf>xHNV)e3!mCGz0L0( zDQzbzn;Os@FFK?*m4=kL#A!&=Bbby3G)&WxtQVO)=gMFtK;A$tAKTAzJI;wPsq^dmnU2FLZo-cbw)^inzCTY4{{MEK=87L3kB4xE-YfxL(rC;C z2hp`NNN){mtF)3_GTN1H=EAJzvH|oxa!xcD;K(eM05Bu{Wah=YLn8bV=O1TI;#v~2 zJXxV(jYtX&M+a{11B&+$qqDmW_Q5jjvokLjt&h7_jI_QJKHQlZDYHzvm_04pL_-De z^E~H!*S~UGEuA$sIkXOh7{BSkM-Yh)p~Zxq^ESbNk5%PNck42fSE=};RNErkjmiSe z4b!SuKfaf;X}{&nA_!*0+$$Ul*#@~F&m@w5C@ZC$Bes+y{b5)`uuDR;dt0w!u8S|W znyefD2s=OmeZVu}1tC!nv~hHoE>=a|rZ-u%2z)V8Up<0>EH%~C92!4HB~lvB>C-PR zmK{qV#w`yBf^^2L1pKpPf=tS5hrW}Q#7<1QR>OuHDC*_L3m)e{q9>^`g-4erQ-2WW zAzVaS3*<(zrS~7JBy4X;oKg>k{4%>+2CZ0cUUnv2;%Bd{8(EK180ZWPR-AoH;a=x% zes4y_Ekq6-`S_JF_QsA|e)IV^xsS0yKF<|;J);9829a(!KzP27C+|)6$aXU~R%wpq zKJNlPr|n|Ntlg#rWTH8JkgkPaMz^T<`s}>sX!8L>bIzX26{uZ$OM4R25SIJr8@LhH zNk;2XJhIA!5;_9v@1fX`$R7cVTMK8}hcfabonYMgmQZIpy(I6P@MQCv`GX*tGSrnI z26UuA#P{h*rKiXrkg|g#g203Kt6dRfU9v?RD%^+Exjqu+Ki8X0nirF590Q>pM5K!C zL#aubU(h%}_58`>I@S&6lCw-cIYYIiI;2vE@-NI26v5A3Uk6%Q%}Wu7)#DmDfAfIN z@7%&_DDHNr_Qma*kMNxeJ+36k2M;ng6@2OpIjYFQlEE>=F9|y{RG(L8x-HT2Ar5#I z63b@E=%$2ekSCh7oZJxDrBXWWidR{2j?0v5$b=&iBi=FZ9(F#yN%7@|esns_5TV(< z*8(R2m7y?F_%xq4gnOqa{6&ew22$JwnirJk-X<>NX|9PK<*k8GiT-GUR-VYY$EnZO zAyP|q!WY89^X}Q2<(PP>lDdyk_`FL*sQc8Hlo+b$-D&-pRhgHSBiZyT@7~1km=B63 z(hGcgIIwji#I`vb^7=+G3kzz6aLW@$vWk3$e?Hmo?ltDdhd6+5@t)Rth<6|iz!jxD zTlPro^OxIhSzEkanYB?G&=Ob741Ic34~ z4P;4tB<(fG>nmPI{On8@gwT=Ztix^`P~JD5Rbbn9`IV<9#O}pU%&h_8v-1hgzI|@y z7e%9TByu^>WGfR1&i8S1MPJ{UMNkTt(m!OquAe{gjsLptYYpO!tW`(7b$Ok#gM=>X z7hY#f9`0z;y)O+JdwGTN9&O}%GqOcjc3#9-G1ps(mbu4xj?RDM2L?lo5l<$AMZYSE z)X$D(NAa9HVRU$g|t_74n<(=BeWQv>ALJkytc~U-YqI7#|U2&oA!y8g& z-#9BtI;QnTas;fqs^ zV7#f7>6v0m0b8U^dVj*$owjcGu?%ELqZcA9X6;S;T|-qe#pC9)tgotxJq7nhemja~ zJX1HCUNGehPOC5rCYz^6&R1j`@`i9uWEnKyrGvHeklr=9Y&Q$f^qic@v-69VPkQDq zGPz(AQ^Y@)6Ty9OMY%0-lpmvAuwZWTYs*MyhcB=D)oR_dwHkT~x)@1!EXwEyO0%uR zvFqF?t6+AAHo!d6OE+sb^_$|i>Y1>->_muQj*Xnr2FImieKlle*e#!|H0r?Et6|4# zAfF*~PQP<3MzVei=AGX_o$G47TiGog|o-qmgAywKK*ZkH3GO|k{l~Qlw)guPt$GOHW`FxTo*nR8qKXxjBaO^fGDeLFTsimp3D5LZ z^bAV5qwcFVeydDa=eqsI@`00OLoC}-8?BUXW}$O_%c1)}PjD8OY8@d8!y)1kUdjFDPxT8=;6|y#+|^)2=tVSd4?mHfs4?4uX;x z6{ve_Qiboh2{ztq#%HXEBSx4+nM)EXv*U#euqSkQM3-!(eN58i`rys`WRHxu`gNj& z%>A=>r_Yn+z%R7wiAe=$_!t{2Qd3F!KNpgJ)#c*1W%kbQz*A8_E`Ic2Kj^!ZV6w!c zUmiM76J6C^j`dVHCW_R!O0uhKrG7^{i3B@p47u3y_!s8(J5xCfa%AJxtJl)?hDjxK z$$qU)LJ`gwjFeRIIE$h5jEjm?p4vPP)T>NXp88@srPa?uTPVo{I67Mm<$Pd$y}Rt_ zBg6~m*Iw`8RI;3j{M`@L9QQg~Ya(+eHii*Ay~9eEadKUn(x0WtQOYy5%DFEj%XbYi zZ){**lv|+EV^}>`<6*>6*|gLU&~coc8o?h~un;8w4gGoPjf>^2;Cz*FUjFOg|7>~A zJZ9$x;lXR^JeKtkG%E|vLnDkvUs9Tveh`>mde`IdGPNpB!S)U2OfLaXzITd#R&u#M zNi+sk^5cHO4N3C+dp;Yo65Bled~!U~+gkQVn*pY4>L@Un=@6|tYEP{EV4VJds<`(nZJ#Yi=?@LD z4Q|oVtx2ifiCZ5%rpb&$NBkWLBDB}yYul4e1osIaoQS%-B8@C;#mY5j<_q^%m{5&v zO~$T#iKBFuIP_`IU=W>I9!q~#Gv<1%7OgI~RV={yDuwZF*dy|n%!qHu8BGZph7H!? zDp_cIf5|<*8O?k$Lu(IqxDb(Dv;^Jlmoapqf-hPJsWCE{g0(f(DH}S~{*?QQ^<am_(^)EgJZg85_%{exy2->JiZZUOnio;IYU+%9$)qDo91S z$ExcsOk!^JB^E_^wmr+>$Pzt=ZI2mGi6Caws-t{Ecxy&umQUxsjRSq^e3d`GWxJVB zTVUEI+3E2>F4+ZoYm-(lHu&nX&?Cls%H1>7!fyc!Nt0FY4*$#i4#K8!8BS}Fz;tDq zXVj}N4&KycPL=416AvvN4$#-~=J^~;u2fFQh%d#{!k%uO=L(t`nVxCheiSd<^PI!F z{A9Z2X8+9+$^6}qm%8=b=cl6WYwwWd`Ak1DKIN5+##BCaOZhk&Q=E}9S0%PSa@=$9 zd~7{JtiD=>J<5{sSVinWD`2U*RO!(R6S=Czes=BJ%I`Ie4OPa*wfoh-#8Wt|d1nj? z&Jv=T+nUVBFaoED8?dyFxO~ynUr+W#bL|98&$_Anzbaq6bTP3?>m3cc>i#82VO%C8 zEg?l#Nh7SMIH;t-h>({<$W?N{JvN*rKacusW8Y&dGW;alfZN`6| zI-~U+b)a=pQy1AwG>lW$?IF%V>v%EQeyXh)pFd=bl{%HSZ%;4P&c1FP?RYIpg^}2! z*!WrtJH8}K;1`T!({PafvN_G8lJZ$}M4&IDg-I(FV9Qi--?@e98(CbNXolpc%Y62R z;E6f#REdw&4(;n?a*ewR92xrT&V3(vR8{Xyi}PGemK*PF{{GH%VcW#gAiCFcV@Ay> z*8t_w<4-rOgz--WXteL(+6q;?;z^45aQ^MX;1ZZVl=hZCnF{&VebptV6qYwDH<*0w|`hOd3Z2$UMHMy_DaAOrBzkpD3^I| z^kcebCitL#e_A7O&)68*|K)SxwpPjM2OAd~&5G2-Q^lt$=De)Wx}Gqh4myJMyV4Xt zW^bjHwCj_eHx7Zmt5Zi$%F3r-{#O;%0sse7fexeeZJ%j@H^*Pf>g$hUTnQr9XKs4n zrS`>>_k@Q@ty-^e+v0#WGp4bsSn+oKiG;p_EkY|BH#L`+v)rj%vrIvoZXVaXG=wsk zV6s8yaJA2!D-oadcm#7N_K~nc9#QHX_lm^dx#=UPpn8g!&fXo{AI(bfSCaL!(s6Wc zFI+>%>&C#Z?X_TX9okDPgBGiOp{j(-X7Mj$BvMdy_ceQA#ty{9lu5 zhiVr(#*uP&AGaY+b!)J%`GBArS6IvyiIQ4AJbd&zs!s(_ogO2+h6zsdMH?m+) z5VlQ1_aClm5r}D{(38(?Sk_1beT$du)*)j26!|5NzxECuFf-@U?U?E&7s_6<-a-|J z;}={yR*ill3>7JM`taTd!&5uz)$n@yW_rSmC`*!EDpTCYoh`^qeJo^1<`Fd*z!7;- zJWc%J@zqo3w<{Dw5iJB3sDVH&qBMIf$+)))4UePmhc}yL2NIZ~1q}6tfL}v~YnTa{ldR?4RZ@*cV&F5ox&Fe~URBmqV)llb{~NtM-|%jNcT>zLEoy!5!K z{{O|=dqy=Cy=|XCR79E}NNRzteJP7ndhAk^RD@jFK1=3&Ix<(v+w)5uHW{7Maxla<(e-oXxb6JX277o z$wmK?4PWf=t#*$SjmB2gqTDz5xHk;>t*E+(4ul!=m-8Q~D{R)Z^ZCf)9t+;tXJBrp zaxUcuas$QQG7@6fg;5hk>na5s7w8V(c+0w8&|jj&xZmyFNV_jti#tBHN=;hCgscTV z?Nu8S1w-e!KyJca6YTwUJCcOB`HJWN0P2k|A&fzK$2Y%Yl%$y3_`*6SGetgRL<5jj z7Tw2>EbSC5F~2;PFIbIjJBWYeK`0~7q|KUkG0{gZ>rG(|Dn|(eWsE;yTuy4}MIjO3 zcsam#q&}Z{7`0ifkd@dZ|A1Mw%}?~z(e-Db4w;_GE5Z0@@}ec?@WK=1^4CTRp#olss0I53ltr}z)hy?%2FEdaRvSxAV9Th_a*Jg24GA`ePgUGfRA z!+u;k{(-CeV~o;YNyt2=rvq5^8r`cFO=@&z^nip85Vk84ef#-%K8VK22%iU0WuE>n zDl}rR;`U%8{`^jxABe)}`NC6`7iC&%&rGIxp#>i4alz8wDKi;O0u!W3=n10Kw`C(^ zTQ$O*Nz*s!VNa=;D$)8aMzv?vcON-(6$dHeURJrzs_CRy0*+#vevx}1&1$xD`Wqbk zZLL+~Y<0?H9w$;*U6wX*kEcR1(g(7*$yI;UCM?^f1BRLnb1kc%SbcW8FQtGkGpZ>6 zX06m1cesERy60dTQe^eZuWza1>*e`eem8 zLWXOS{oR?tvYgX{e$Ue023n6hd-f(QptoYJENy9_%gC6|f%wJdZqrl%Y{_+_ZhJXP zBdMZ{lIB?fa6Ua8krhqteXIuXhABmCz#BPPg^XU8a|{l3`xA&NnM_ge^~htmOyQPpkML7b;p@Wj zN!1c5Za?5*Z^rf>VZEv&QuUpUP?>oW1aaSAzi}Pr; zF21gVXtW=CzzI&mboQj~0{R3M(KG0g?qos#=GzZ0mkAG_G0`kY^tmv#Z%VG8Sc$j1 zYVXx5Gd>TMxVi(^`82Bd8p6ZssjvFYtH_jevX^(h~wbO;7peyYvjHhh`saw@B{sWBnp;;wXhT1_oWnU=ArD%qhhdB}< ziR$ZFb;~REU@;hfVxn0COD3J&g`B?pSa`4`2TMk1KN}J~H&V!GzB`vc#-L-G*-Pqw zUACu0zwTL4cL5iys~No7n&SB5Ev%ek%f>VQQadQKnSoW%BQc?0%!xpA0mJ)~%|%3A zVFhS>xr+jo*Iprg|4@3f$4Q8ss=Zu3bx(Y7GY4H?Ti874OHXcgnyWJY{`}Fvyohx& zxf)zbvj@0(6j#ej#agR|{+I+fAG|F3GEO&SZPiikmDU`XS&;|%-RHU!m~I<0L{2dO zrmBl5oI`4y<&sH;LrY)kDY~j5cyMb@UR?!9xfIboU3R2NE5{7mGj`rx@+|dgd^N@a zVBY#HJx)i6o^x$dhIW68 z^agphfj7u_moW!B2`i0QQFBjIGl2$$pCsLl&C%z7d^4_oAb-MdSdtVH^6OfKmj^j( z)GR4D2Dw%(O*l9KGM{L6j04LW(jF5lQ(1a*#$?2&w}(G@;x!*frw5se?nXXIk#i=S zO`LDGvH#)T6^n4*h3N>RXFnj_Alos{5GPkMtbTkwq^-Q5V?84*z6Yt0=3Z>xkZP%; zFC@J?H`#i#`Z^u-bh1;H%01B#c@zv%?QxZpsD7b+B48@vzi!*^5IyFd{9S3lC2uyB zrM3hD5veI-5=tmI%mc4o2vP{?O&g&n zi;0~dIEh9p2y8y2;}=^mQ4u!|z&BnUntWf7xA{dIpIyq6^x?%kZB|;8T@UTzHHP!X zW_(_NvsEaPoN?Hy-G!^gPA>V64Z+>nwwSIVZPm7e{uZ&cANI5Ngf zWgEBS`yoX7^_VJjlet;9qxx_go$Bq0j`LwY1!~p(6}mhB2;jb&(>Ue)LIGnTd@NNO z_hKop!c=yoDMv63^BAahnwfIBX|!NG9yB6x%wZWWYh)H_+nv;;rA@dqZUOSqpBzHw z7;Yr(dQpS?=*e-S|!E|u35_3S+1*}EoCoDzF5{666wf?b+7$5)I? zQ7^2O9y8T<3ZJuJsyJ^?<-^`rtmzK*ZqL{UxT8}{dTyMf#g~s5hBU;y_FLv%y3G2e z=q`R29QA_bDpi@lV!AKAi@2PYASg^LY?ko1W0FP5X<=3zlb&=?$ zv};oja^ORB@`_l}eVc)08Sn88kZOQWa0RV$42|B3XR1{Uv;@{T@GDE{2i`lN)p1cD z@FLKrSK1DXA5)W*=dFGzBckGyEyUje+NSY-EEsetXQ&jwd3;Fmu2sgBxRLX*^X{jp z#ifFL-9&*<+a;P1UDq|PN=YN8g zbf_!i@--ZKH-S~bx0)er|3%XxJSG1x?_Xj|DW}=KcHEaU;lVQdB_fu(Qi5mU?nyWZ zC>$A&i7kaLb=B>hiU8$%mjW0^aG3x$Xe5;-C z_~f|#7s{ceq8^ac(m|?Q(4VxY$4az|0kZc>2*<3cMoQ#w9^Qy=w757Tqo9Fl_u`58GurPxXj-a_*G^N(SQ(| z(1c?PcJ9s7<(8(`K~%sun3w+mR@khQ!lrGK*TQU2fc^ZbLJDTdr(#-pGxLo^K+DR| zO9U2H4%PP44mk>NJ`HOX@RqCB*{=*S=Un|$nj1r!kR_YGBS(1)v|qhbA2POhS$8i) zJU(zVMzh79kkdC}vi&v!?9W6a=~`Xefg#)$y-}EB*5ff*4W!sc7>DJ42*#ZYewT=& zco&Uzz>BbNhRMozd%v2b8E&;Pa3#mMfrc4^rI=62f+~B~+nDGTR(?BN|B#N=%6#Z- zN|DA{?>ktUYE1S!!F~5{xuE7PbASOG;g{ zWoZCs+y0CQFJdKZ^1MuB)M=9QAG%D+EmimXv3zGM9hc2@%JqfIEB!#d$}S1-5PwC) zd3j_s86b=DgU;GF`v*ED*AughoBN9W4D4xqZpkh-P6r#buH!;!?W2oR?ub|O5{FINk?Ff`(X2<_n>YK7P z_$2jZ@fh@I-C)@LCsZfp7H>{cw`=P@{RaTYqw>(n7e<+$n(`bvswX5Y9cLrw@#Q9{ z0!V{KRYZ2yddHlj5UwtJV>{}y^usd^{uk@kAxc9xmPG;jDI-_l#`SO~yFx}c`4%kr zw3XD0NfqtTV@jF-n~wG zg%DqPpb){i_Of6)Kk>c_k$EN%>lx~?#WT1Yw|reryfZlX5AeM5_!)wUoI?7*%uQ3a zCf%RDrd|E6oA0G~lqiLe1wl9=(73~Gfh2UiP}i_}fHZ0xNf3Mt{*%KvZC@4<8X%2E92X%@(}%uWnNH;0^Yj!b2|ELReoclDDXQ8m$TbgV=$Ee2Z(T;+~!Ccb}89kzu%=hj^}`# z@>)4)y%F+0OpUoc{M~f51Y^4mIA*jovbiu!vdUw8#iPIWg|)l4aQNASd@3 zEO<2L8-_q+WVedy>d92c%pA6nqUM0^EN`&skE%H@MkG{QInm?=HHLj_u+^XOJ3_2#`V)ZB~WRy>#)I zX^*?Qja!!ZX#Dkk&I{EQ7lGW5bOniGh{6*ht4o36-XeGh$i5?wiT%}s78u^=PV->;6SehPV#BW0MQeOF(>QZzoQ=#y@s!KpkOA7iL_bIy#BouwFu{{T zc+XOuYubH$TbDEU)!@hAWd_VT3lFNnsYWqN+AgJh1i7POu*7{=rcxw$JA`ONsE0EJ z!DTEM-NATK8-1_Q>~)1cQS4}~HdQ#$r~|{Sk%?u7ug!2aBb^XW$B0iH}Q`_OEhG-0tu#Q<*Q$&l1c8&TI1q1C*2vGfo z&8L6k_Te|(8v1Nxj+*r6~ z6K5ELMzcU|&41uS;AG2bD`f2^$g}qBhHBP$$=Og<0q&S%6NsI!z?r+An$a}|FDqNvi-O5$VXAkJqkza7GRn50wX9gRn&ud=(1pIbVFh5f;+r!GycbtT0lN zg?v_#fy_4Zh(|h4x4()Z*V9c@HNWgdg>D9=m z`g6!V#8h={6a(ScuG1|_J}OApZ@8RZt(&d8v|`5n*yR@HZEJyzw!XOP4U-77bd#h~ z9OvAugteM%XkfieTpulJST>W5Xgd1`=`%V!PnU0sJQ=o7(@8URk+X~5J_-`|dEv|O z*Su9tWsTQo2r`v3a5sHy7ANAvaEA(qTQCh{w>dkX@*ZLQt-AdtpNqk(@ZFoGwT2JW z!eW8>1-x34nq2f^Ge_QYo}SKSYYFIJ#3S0i#m%_T_bsewn$nE&6B^SV|II+lvz6Wi zZ776S20;qrd!!=OMO0@o_sMMY$N7m{ZZz)~>UXaJLG8HzmU1yC_K_N=@?#SQSZ(ac;RJv9UN zS#uhseEtw{(IOw$`st#a(yn8NNk~p#&b_))7*jY^=dxf*Bnx5>{zdWxt-pv7!oIer zWU>}^dOV$xG1aRfxJoA<@2<;#x4P`l4{As<8&po`{@70`I+*&Dt&ud-Bk60HWSqE9 zkBJgD#{|XP-8rQ~b2(Kaw~ukP1jh_w#f^mcg<(NX+MP;<)dlzlJ^Xf>fPIQBcwo;w zGxy-x!$fU>4$;ANXEt*m?5~iI-+Gc~;Znt{JOg!i99BgU76`+8fFf8aU0NlJyPyty zdGPy+QlwG?a%U8NSmo1*ueIZJ_NmS78Mm!lAYoZJYLG0%eH7qX%TVB7WVAOsX}0>N zs-G&=QjO{1d92kYz6mE*dtW+hFOJwS?HBNbaug7dgFNrv?C+DTd3C4XO<%8{)rS<< z1dFd5l_f>dT!HXKBkOC#9YLqVMMgDh-a$6A(Z;w&u8ucoLBr;-6}Unz0m3gO?U|W} z@NDa~?qtFlhkPTxK7l#DrjL{7`!bzt$`TqnxcONQq&qnzJaDwyM0~NMKLCinjC}>r zGJBIS06*qSX)>|wOO_-obUjdH;;tFN+8*;mE;c_+*bRG^wQifu^j3&)gP3<0!!3Ppc&VU(hQGuSLM z;g#O$MaTWJ+BNFES>PfW)mqzSZTY=rZBCmI7h##EdsVeDk5^ksuC!2gL|-vb=Bu2C z8diDASA%-fGIF0w;9n@G6HTE_pwi~3dgsa^x*q2!BaSWMcVREv&NG5ztaXTXys}T{ zHct*$esx5e&uJiOBRm0L{R>3J`jjiMql~?c)(@3M?)P)XHgW9uk4J#WaDrgtOn6kO zAxcnp+GQ(oPIE>*{_QJE6Z>YJL#FdE?)z>4*fc1LA#kpbIfym9IS^qYQrSMksbZs6 zyNxD&NC0gA)*KGMPe2sc!HS!WJuOuMgNRU)s&%0zQ!jfwz3)=?mNEeDP<8=LE@0Dg%-l__&4KdCJ;0CL#nGfTdx~+@F+}m^(hjgBWT@CecD{ zadg)iN3YCjR22c8)C3!}U)_F&uLnjFp`&*MnY)Jj=`WuOkpoE$avdvqQ-^TkU5;!# zY<7jz1jGBZjy-IAk9-*4NS*`7nwItww*#u^4B#RZz@hpIUC85%49^RikyW+NG%?@Y zl*9;9UCC4Fmd<6N!&)t>xi_qShyu$Ib-CNw?dik99oa@Wh4@z<6={{>_^;Rh@1QzZ+CP9j_Lak#kJDD{KY$BXE*=Rh z;@ezXygFSR+yIbE;$d63Y#V&?YrpFsfF5c_F4ryDGw2s&m)cb(w$7W87zlQN!LmA+ zzMCsj!(her!wrYMP%l-jyqN4^U zg7gI$`PB5B8Lte3d4!u??y}HwNYQ)|c2A$)_c78<;&_ zi~U$HTa2B&qP&b<1>dsCOOr4WmA}OF4?sI?!CmVVps^nh>Z)b88_x3Mzwbo7SA8kP ztJj$DV86`gXw+kzhWar6C7l;`$487bsfG(?LeWB0DruQDS~L1FyzPUsZ8 z<#LOh2)q}l^xMZk?dd*=+6YavTo zW&3|5-c`-HD9YL8(6eB{(FJ;3)?VEL0$P$KQc>L@~9}_xTI(d1%eV>%V;7;gV13LRz_s~N4$A172?UtUe?OAQ)Xm|3PmV~(;5xrv+y7OzD{X;*s{vO z)*6?%*JPnfgl-juoA7vi;oGS|KPyHisaeBt2`{Hzn10!At<#$zy4^ok;@e4-G3(k5 zq*uZRgRgIrk8P&&rpsNNoHOV7$}FXp*jPe8;`BPf`1M^s3m?!B{A#FvRs3~mWo6(Y z4Z#JYY6H#G*AW_Cb=6HfFO5WPMx!BP-MEv9GXcqNK{?xFodiWj{{EQrMB3T>X*ul; zD0$zrn0p1^1PwpCXcu!D&~Ikbu7PRG!G&U}S3e$9@j26RWE@EWhgxq=v<;s{wXWUPIF`0CFKg#%xX#L1*L1u#uk46Joq*LIkS&+m!KP?-WQ?swSxh8sTvX%( z2P&2}OusT2Pcq$^&12cchanht%B@>DpVCNw}*JN@-5416_S`r<~lzX z@(tdu27Z#?UB623EcGdY4^2v(TPM79>7?fezQKLHaMtckzn}K8U^sX9(^WmbK1mH@ z_Evsa`pqaU+(Hc@j@iKQA-hh!qxr>~%3L@#)Mp`40Mp;}!g>vE&2%6@G%zpsw16LD*h@Bp853aVU<|D9E;16tD z8CPW946S-=G_794ceMeUp8FO}gZ&*jH0Rn!VVh(SLzII;`VHBIj&jkfBgpffCliTb zU8EGF)699%=jEzbmIpKRyg+6Y+9dXbUIHI$$Is@-o7Rf^p$eV-h-FqE#zXC|48 z)gE4Z9GeCaOkHO2gU0%PA82h$qU&qwyg^L1k(hV1v^J%Fs7ZE_9%n_EzN=}zgFCjz zZ~WQruO|Xv`y(AI`N_AeWbea3W#`;2;E9dC*<6u71E?!8sH5Yb^)yKQyYvrD_8*E& zW3n99Tmk~eXWNeT=1-X&OC7||pU3w$AT!?NbY9W{H}vN~waqN1Lj(OeogBbSoAQzO znbkS;$BG|O7sXstl*n3MVOAbcGeqxjBk*1BNY#^VkLGjnZ4P^%vBTi0jy9S57KGA- zF#*en(+WSL^jT#)LDdc4zuE<$IQlpP7k{RN4|z0s(!4G0_V%&a^$r_%1xN6m%f?X+xDZ^N9UW~+!;*| z+#46iQsCSDoUcN!JdivoUNt_O7%ZgFp$=WQadHpWZ%)yw@gD)%3~73BTd({ba2x3xa?T_ zZg0CR6`!&~x%eFMAg&&(^OM;Q3Is{(D(wFV&A2dtPBS$-fLNZN?#FEF2%-Xq{G9L| zCTt*>;qe?7VT>gVz77!HL(L5iW^2&cSUbT-+6$+m8|jKjRXk+%-%GI@#KhqniS8iB z;BgjoSA{Pq==UIlI{RC-!eh+*4a98h3m!h@w9hD9E&u+46~$Nsm4Hc!FvkqZvdDVy zLA!NiI4v-*z|8g)W^w6J-6!N0}d`{ zE-4W*2bNy!J8H$4-3Sh#j7A}CGFf}>`GfAa3ZT6PKwiPcgCVS<$zSW;Q&_kH!0{BE zT^AqaX`r*`>Fw1hx24Me4sk|vm9nhB7O@VBTr+6bJA=KmN$^l(@oX4l#3rO;cCe{V zC!f|9mCBy6SoQhJ%HC(sH22Zk)FK#g(=HD8sqWjZ13Em0mZRgs9>r^zF3Nj zxUjKtxjLoWTBv1RDYJ6S1>7lO>C{~i9p^~Tq;qCs3Hgqe^A^7%=iy^zA6c##I{b{8 zA?z+wu<$t~GiGBVz)^o;qBLy06noEu7H%itC%*oT4fE;6uWU5tYy{)Ridr6iS49pK zqx6vZZT0hQ?SOxP%hK=dQ_fD2q#H7+rb zQ2ER8Jzr@&U>CgQGp64;j1j@a|K3nrqoqJ{$aYtkwLhhZi9DjMpjh?B`0Gpd5!ucN z1WSXsg8u>T;Fm=?@@mOQ!3x78B?kwFtR@AUF18@6a;pICCL+UV=HA1Gw^tne{S9?N z(qSPtwYos1ehq9jbk1sI+oIn)2eJ1LuwT~lLuE6&P+abehg7}u9{|5immBGKF#mqC z+WfRRqgrc@XL<0mi4@^tRRt4`yx%8Woy#`vYIfX7U+lQ=f%KMvDdnI@*ht~=`t8FW z2lb{HQtRe8gDy{DOBAL`U2I!GQdm`d?_Z&rVzl=k31(rCL*l(<_Ib z7lYpQ%iZd08Z?i8bKh^PfvbR%SYY8r9nE+lCO{CGv)>^)QHXrqwg--v9kF=B%c8EZ zx_qu#iPVEfeQJ=X(FV%|>^;jvdk|)C*zk5D=jVRr^*=y+(e4uiJoqR~XJ7E=DA6tP z_q#c5-7^iUJEK=Hh#aYT=)=T--MTRFGvceqQn_vgvOs=rR4Up7;j9YLpP5@i{Rxp1#5%+`BoP32?vRr z9aI;BO#2K@U9MFSr{&5AIbDZJ06Qei`*i$>Fz0V&wI;ZTKPvQY6~7a*A>c`Z8X4Rj z^lLLfZjP`bw_vx1#(x%W3f z@Mb1+$UR#<_hhRWO7u)TN=*zcM3WK0dCU=f*|pgr$KT;}@}<5}cjM^OFFifFhG%NW z6q&|}xFz6&?WkM^U?jr8d91$mxGEjyu|k9u-@pIK#S?83_ftS zpPW<6DGtoWwFbJ3S5O^e87)56B9pE=jQ@m=+6@bJ(ZPLz#;6cH5brNa+nfHZ7DlD~ zf}Gj8Y@E|gP13A{8r$4XR~{K$+wn+z;N@>(=>CHiSKK77TFHf*`vz`2*Q0n4s^m~h43YtRG+4n z50ClM>RRBB8?FbaxwI{6J7wbZsTj^n(~R2!uVj4EX$8DpeA1A8FTj~!M_}&jh85}a zr@2c*|S~qxjQoO5b$t zDC@JgCMqAzy5#~lUsMNn4Y*)6)jH~FyBZVSoeNOa&l`IAZmlS0@2|!m-f2o_tC~D)n=n0x`0QhwoOoN|8K`E`mm_5vyhE+ z$w-@7#Pxg8t&5u32s#eaKm~b@Nn}UmTJrftwkKnW zJyvcd>7APMS5n(tCfkoVE@pSGgh-f<%scH^jR(wZKBS&Mrd(c$AW;o&1)Q(LF{= zpJ->WJ1YayUxzC}5~f4CwU0qNK}NdKs6geFe%;$OH0$r1{+OI_YIo865Y38`b*ztE zsOj@!c}Hn9hr0X3aa5`31^Dxrm$PbPr1SLiyZT+j?SG8^F9Q-03>0gCshbi2~M zE?g7uUwXj^wsVKDdBL?wd&wbFumXt8Tx{88s9Qh%#RXqeg*>>f7Rz{2^Q zh+`r&^d|aRG>E!?`vcExpYi0Bs=ut$1*RfCYtW}faI|zf?@Jq^qGZmXZWcD|FYoo@ z&ug0V!pX4z-xyzL5H?RovX{{uxI;^Xi%st+q4;l!gwfmA)v)-(9%Rd#2-fQxM*vd8 z-sgV((Z*HD6AMW^u6o*9=U${U+{3s0UT92Q3a4<~X027ERWu-P>rTqkePZM7 zTqUlIZ>E>mpwPm-FNsJFXbCIQBMq^sFMp+|NZ-?Xpm14m zMVmy{N+pZ9i*=u^xBMF9QL=DJqjDuJU}+g#pVgwx@z?%NU+DOwbHZ_)lH2dGRX(u@&0PazmangcUH{pen>=vG)uCtIW%&PWO`z8)Up;kUr{ml`gCPF%<4V0 zhg|m_=10UC?E61J3<#HvhucQXK;Z^>V;t}-=h6(1$RODec>T;wySKRxQ8g6*Ts7uA zp>c?W3EDDuUh!NzW|e{aZ+Z@(7=V6EJ8r%Y;3`B9oIT!fr6|UmS~NSYWNmH7JBD`3 z3qw9Rd{Za;QpWguiqGHkZZPT(-f_`^1>$?lggB9o8~1;J6!O%AO|MWHF{sP8Qmbv@ z0V0+>njw(Su6i;hb<;IvBhIqzDaFFBUdw3|GTB&vR9=~E($v{|@m4)fIo~6r|)Y0KPcsA%1UwB@=(8>i<&Tx15c0WJT-j9#6ebleOfux;?;ZejF?Wzx7}Teud%BV|l+% zhR~2paFyj|Z0L7wb3cBWV4A4=5gSsK6;$GZsAus)Bfv3x~l0`_j{Njyt^HU zpvB)Do(IqNKmNmePfi{GWPE>vVD0Tdn0fv1cP9zLzOnFT`v-Um?p6I-H-GxPBZ8~) zwd?eApz(AA(sKdW*6780*qedxkNi*m;7#DIG;Z4b2};w>KM$4KZFKaaio3BUQoR3r z9s!-OqHbc)HBp23B^7QFdVl>-;ViJW!giWdb7C*sDm%bKA_((a_z6)>2Kf(IZ>%H; z{563w#huEx`UL%fyWjMY-#5I~ukMd0h+;)UU?(@Bpq5R2o0#*yRU7ovm;3C|N!L}M ziO1ZC|NGFQn5O%Wc`B^^-k-dd)9HAaPlREjMw>a}aOxG65rHee+#sV!>9^9)iaLR% z>%(|T`5sOf=?Smd9NzmCjypDKX?icp|3#FZo&$6ux$^c~i5eHcAZ}l#KKtqNsQr_P zv=L!ZOiBLky==~P_k*?B*5mWOIiZ#^2t`UHogN!bzVClBOs>WwS)Mf^#m`?Ca8B$! zqDp=878SiBHTYqr&R99k)s?qH_a}lfwRiXuK#`L88B-DU zEKJDSzRT#&E|c(b9#@6V4JnJNvtV@XfSklCcedZ+(_;&OKqk&yI3w^_W^USTmN4A? z1&lXo+aPFi@kP1E)j?o0D^DMNJk3Wv7Vmqbe1dj?*7$C9hlXqUct)%CRqXQ{gjSRD zM=2iR9kwP|aDkzianq{lneqv9Sb+E~fqGra{W#E8cc07L zV8Kx>ZTj~N$_<)25>o1Ask;c5^{JDN*WFF~)j6lUx!f;HUTsZi`Qe$6Yj_v9Mm$=f zBOH3oil2fkIiR^CC>!X%U;H16{C|{rnp4%IHprE40Ogn@6daUo4a1ibYgZ?=(-pvt z2U&25PZ77E(WNEt`A%G2J!{vwfwPv~qFTejSoHF~=)|Rj#JSsjD*4;O(PBZx%J?1Bx!c3%`mQ z2b)sur;Foa?gO0}zia{ZqGLpkw^pXu9|6MU_S)VBrg?9#4*zI0guF>Cl*_8ymEsM$ z__5?W?ZM9rd5f#rrue0`r7eK;fY-4sB-2xHFo)@XM1zPN(tPePl;13ywqco3r?{ts zoWJyz8^`e{;2EF&Jh+V_nC~P#^P>tx!74UYo$iAIq4=d!bj!yGBs2m&*u=!k{u~)& zl)5O}yD!x>=4aVlT=3OhgfdafjW=}JWH;Uv0%9L)VRdD2+WGNZuB2)lRPKa=_T1Fh z6!kefRYWg5S0Tcm?{;GV*6)5*Va1WXsuW~flOWMC4BvXcq4VJxsXLEp`a|W>ty}s;@4vh>kD%18@{e5?38NG>7IzYY-1E! zDA*_%RpAL@y4NH-%Vwizm6CUtUl_-j>f`a+t-h!~@2)H(+7SX;GW!7EKLxwm@Dj&bu&6p)Zdh2j+7dcpO*Y?=wnH z$F)||Ejtd5#deHqNPQL;ihkq6lx6tPnZO&hg2u3bVq>v2`g;@i*+k-qVHqPeCl<-N zD~s58^SJwhMyweUtTlp>$B$jF+S7kHZHX1u19#Id%ZK9^G)%r~x3%F7Bq4q2v$Ou$ zf?#ggx-)y}Rw7AoMz_r0#>&g)dFh7Yu}j72{S=yEn6- zZgi3sGF>*~`2tM`W%S=(t1&6oZlE$=)_|4v0|WE+MINYcP?<5ldS@;rWoU!JxA3CN z!DM!aX_TYDq3*E$G_plT7thL+GITHcWnb43W>kgr*W_+ z`Q@mc=GoI7jH!*uP{1oON}Hw3s@e^BP)PeAKWX32Yn?N~48jokKrnGc!TXmzq?N_S27dG&%d#PIKZvGbtf))NHNkAKJIe!hHR*$a@$yf12{UF*;LH`OP88FW zX47S9Iiu#;BHOOeGduS6?1zg!sYa83D-CUeO&q$Ggl$++r!Spx=GRO3Ua`Cu2&mh`bji2!~-xvi_#^u4r-y5hG#)^KAXV=9(Rin50tMgfVVovwL zpHH$R0xFs+d@Vm~MbsT!AJYq*z6s`N&fTucPWTx*M&=hECC9sTY#Arc{w@-MCuS6I zb!C%K(601se3h4gU+XrvB+?lpt>%BRv55{m&||u+C=s7gv#(hFQU+|FO5-(dK{Nf% zEVEx6a+a7g@PL0fE7?#29*O%K^nD9wmX*le=zun`J?hv$AKXjd4^X-l^ZD6DhAk}j zDeRX03iyN-F>2lE+OlPQ9UpV;ZmhsQRbF?$?)DWAp9;u!i(JKPmx;-a=1SU{hBQ?4 zy@@|d!>tpFbTzlUSK1_W>Uss(7*B9&5G@DI8TEJGaBw+7v{U}DsBcPK1+IjXG_vbC z-SL~@bGCvvZzGHrdp!L`>$SSiGD7ELkfVX}8z%r%ntsZZ<{uZA2OJc296A)Y??vK` zuTLJJv^Q77tOU}+U;?dD9B38|a9G2)Yxu1V|5~;&DnLQzXG%%m(lCxhq5rXZA4Io7 zG8=O@Aa)~rA@u4CvNb`w0A+c~|NT?yMnL{<&hq6g?3N&a4cXu28tT^&h6!>GFT_(_ zW0l@7x=Y2;^B?Bwd9?C{hgG+QQ}|&{r^|u_K^(>h=F-zHihsXCz1^BvFK3bs_6!b{ z^BiTkx?}a%KC~pB`L-%UB!BWetDLP5Wjdcx$AG5_<9f8rhmsirmpZoGOQgP_OVmxO zK|AABe{-Y%a{s>r>gb6{CF0y1eeyYv30aNvJZ?>)%|68z5Y*#-KMe3I^SN>9D0Gh- z3yJ`4fi(SaPRmhnLed0WP+e|}dkQcdZ;FXx+%0tNhN-gc#l*E9aZqx3i%`!H9c#ys@v%#BFl*B9IMvx1m!OTqed z{Xp((n(V^o;P5wwl~8r&`3Hb+ET1)oIq)*bw}qew_-$uU!y8aVw%tHrGGOWtQ>C z#VIHKZ`ksyC~qcB)DBzT0q9o;<8C9qtP?=`z89sdZ-F=o$I#ivHV9&fy#vALQ&)D= zTG_}KV>b&XHhWD?UjQQf+hFMl78O9?E;GUN)}pg+sp$9;Xv#mpz(r+4mM9s`GA=?d zG`AYr$+4#bnJrxyXS%8yX5=F)A)kCOM#S`?a~Gd6@}5WQ*Ad3?$|YsVeu$9oQz4h} zF58M$)>2hyD;83=hFlg3A>vx6X!*6}<-t4*Pk9>XaQa=BG()K0NBo~iZu>2B8GY$0 z_l15p7b}s(7?2>qAKFh-VK$W8~3AE)m`h-clB58%KU?@un`U(@bxzKlnu-~#5p zkDn_{_`;Ntp~T|;xq0?f7CdxtDYy)&LFRHJt9ON4VCiAK-S{wM0chJxfh>H*mAkZG z4P9%K+3P3>>T@^~1J-ne<_uylXND0Ah0U%9pxEr1y3PhvRpH1&x5MHB23qqX;u1DD z(=y(f4KQIU6??BaaOn^jREK2pI0^+1U#iZXI=Oz0hyB%Fcc*e}fV5VJdxi@$N}sjA zwn_n=F!yuK8_*!{ZvmqPo1R%2Ci?~U$pv{X`8>4tg)!QHWGeX?u}U1dcnWC`Ejr5M>tTXd>4~7(LS}aT26nd~adzIv||8w&yt(z4B8tGlypCA#;w+0Co(I9^#;$4mQSzzahgxG62{+>Wo* z0?h5$8ndKA4-0|~x4cVOe ztLY0ISfaof-sCap%Eo!TZozcTEghs;Hdm8{+sM zCu|e;Pd}VHbh(9$MDojn-)BvF1h~GFdk1E0NM+{RroHdauSZoQgWbDqi z7xp?`3zcTg_1rpecb(<`)Hk^}Kj;|hAN27~u$eyNrNKr+(s!KmkFO3Ie#2?Q%f(7> z4O7aTSK4@@Jz1aOu7bsxGe-3}Sj z$s-IN^BF&{Xy4iU-&lL^rzQh_+cyY;N)r_6geuYnq(dSWs)BT>LFt6vdk~}up*QIu zy+(TP9i&L_E%Y90fDljKGjnJ5-uK*J&fGtMfnhRvp6^+an)nX zC9bQ{iag=N+#63uGB>6brIX32f{HlT(pjc@tbtCBrIBz7($x7w>E9sE&5mo2VK=pP zxN8DkLT;v?1!CP&^s;z3+1Dkl65^uBjO*@MP^HJbiP2wzwr~d8yA% z@D4hi(@pb}XR<_!XK!KQSh_JyCL~oU{e|e^uP~f0q%1(-1Nt;Jx|Yrrs{S@ryi(5b zZoaMnP2Voq-)T=`<&q&UEU1_@=mOHRdzRiRf3|u>!9_(A<}boPnK^3~nd+ zMz6+g&)^o07NNlYukq;e`R6Y!Pifm18s?hn*ctnn$sE9Wh7fA@u~%Y3jU~08S^W+D zc4hAt{XywoaS%5BDCb9Iy`PhJ=Rfk?EZ$KQuZ`%w;p!qHf^CJ_EhmZ(n{c>6oF)OL)rMedz3R^;$SV&(jh zOczJX&mjU%>5OFa0p_diFyw_Qt(EyW3@!H*GHOd-M6dTs$FMzOq@;d>0V%Sv?h*GY z-Z#&{0ILyu=L#wj=od->H)aRqFI}{VOZi;mhyV+T0uQ405?bYBQmZWfw+hpLV+B`^ zW-`&2kU%Dy9|wFcOV9QHtbfom`$81`xj3$08sMl8vqJp?gl9KZPn22IRj05$^``)^ z7ZH)kUD7b4=6{W23Cj-u%tuy9SySuit1EJ-!znabMiaH1{Q)u_1KaGVa^YbE39jkX z*kevK^eQ95=-GgkwieH)Ji8(}fn$S4Ab1XXx=+_Fn&S5(r|!>(pW`;qUZ#eqj|Gj0 z)3S*yTO-zqt;$Tt{g^ypYPIw!t1St|0Yaki-a^foiAbqS#OJ6kKcbUvd;5ZS<&j-i zpX6ODeK`u-^8OoH=8n(`&eO!S=@i~ncGfRG z?pz2&M(aYvJMi0bdTs@KN~*)HU?SB|1d{Rn83dRM=i6T*%ay&{scuxXx+Qv9Ni`Ex z>=NU2uEh$9u9-Z$=0J1^4smsdeUJAwwZlAZ8S|MLUQ06}*>4M1c7E&6zoi`P_m}5Z z5>l#*pEV}3Z-i3XA6$RXs|o11RLm0MsIKjQXa#s7hGe7Ng(&%`ps5iaMhogteb)?M z$z2l`nrDqQt|pg(PlRoy{ArBHJn-{;wAO(X$~j_lP=+peMQR{|62nQoA2{z1Bx4A2bpnRs1Ptw6p+d=)j_;2lM? zb8IUzDAdd1s&n5hdKgY7Cv`I;Q0P(l{JAWTEqipHU;W|CzJYc&;=NC45}pyK8MDy0 z{^LWH46CT1e*hRCta-%iCrKsj86ELB4<<5B12y?_h<{*Cbk)800TJ9(TL?XG)%qC$ z^jZz#eamo4HgRZRo+DFs9SzdGr9%FZMA&rbEY9EUj>Ick*`fRNb&j2Jy1q( z)WGE5!fz>3j$Yk1L4S7X_m`7jsi>~Mz?U0Q$i&YstDo?jf{w$I5 zG7n6m1{=Ai-~B9c>3#29sW)Pm@p;RXSCw89PCnh*h5OX7Zvin*AhG+n*WlYUl?T0!BA4 zcxdN^S0rRgT2I*B6KBN6hA0QuX)evM>XoL!BxQkV_asD6+jC4!>rr&7zd~VEa7XF2 zv}((u8Yj@sr+a~iVVkVzqIHV|ZK=zZF~JTy8C1#{;)i68zO}=`lW&a8zA}pJGZ~+u zq?fZvFm+f0!1rYvl{AFGw)WV~E3I4+V-3eS9nH?P>l?K)Zpd>4QR?RyQ^)#9DAV?5 z8=p#CqO8fl#~x+iNiFzZz^3}e_61?X;ag<-2Fg=1B5{KV%x%-bwD+r7Xj?Bv^``T_ z`Ny)6xqAk8uW>CffGbiqWN_dw1znq2Qxg+AZoGZ}2iwa@5cKHkKL7>IW_?T<-K)8( zK~H?=%=M)}blCNct+}G`*0ueG?8Is5c73IvS<^z{w< zkM#dQzdQkWlgMLcv5Y(;7YcqhKvUl;hoe%ZDCpUU~BK9H@d2J?vG74w{$e>0_vsD+DE(9=dFr{o39>k-{e5LhDyq;`C-deBA_!u=_pd^>(g}WQkE+oL^(|h!H6)m4 z-Je&6w&Klbvwzi-(oYqSrP#}!V*K{WONiuVj3^{`zWGeKV2-zM6p#I#L0ok(aT1nn-W zk2%)CtDCRIk<66j`H-boZB;f&EJM#!oBKGiU=#$>2|lC!2QcFH3+Z)C!gRo9ZeT@c ziEZEoJNCvD*!d5Ik<+rciNFb(ORA1#d3N^jpuxj-%Mneie3@E(lY{%wc6R^hrY3Fx zsa)>Oz-dO7zbuB-=i8;JlZqsZcyWWe9E>iNN6MIgT1L>2EPb_&(z@~ebeoyEN~%TM zaAVB)i*Im3GwqlpZ-3d@29u2Y0H@(P$AyVnsItY8b!OjPha4l2Vx(lujxmT`7J`o;*91< zQFJRYj|}A5$kDNT^h3q=hhui?GW$0p|GR|E%RKe+0Bt4x$1v&=tIXJkeeD&Z0hy`! z@AlR;j%~V6F)c#+(&HXI?J|YqT}?9!o7?Dbr1<#&VtgLcg$s2>&hCpj`A8L<}@lOFMZ(go+g-xtq!(|!A)Uuqm_8{DC*T4h~ z?Xe~u?&fZZG!)KQ#Mdc1=kqDNkE`*6CAe~rDZ4t;8VdsZvB;Tf0ZL*kZTpw8@CV|w z{kX70Bii-$t;h59S92L0pN;njRaQpBa$wC~GGNud)w}5%Nl6 z-hE%P3O4=ZsKmXd=zEL4Q@!NYm{}ADywTwB9%l@@X$i?aSt6pil$*1)g1#lAac>Bj zN0fS_J=rL8*y*w;*X@s&mB#t>M{(^UyTB)Y#26WLa&DjNElBrcF+@L64E2Kv%x8-K z#lEJ|m3wwB({C!=e#0^=v2U|xsb{0DHSvueTRqdyQK~UZBQT0Dy**g%a;JZx!kP#ejOB zEl<_t#cheqo6Y>#X{eNY6lKW^9d5`Uxz&%ON`3-&}BhEF6SL_Irw^yZwy9v1Z=u1QD=Y zw5{FOiLT7Wl6Hqt21~i8fY&tpqvC|E1K~aP>jIDF4B4Si#oT@`{yGGF+cuEDejEnf za$bZ~c50Sz7DJ*`_s>B&fes_(u5Z#C_jk=b#d_~lu6mdlXO6b;9cvUivmTVtn7)2W zVhn(u&eKB#dgs5H^#c;N>+qSTZi&4o$^WSVn3g-=U;AA&YaA7RGyMPPJ$ zHV^4_Cr#?f`yj?V{i_D1`^Njz#Yc;&UMnuiS4^Dhc?@oJ2~?K7&y=R;s+AdQIvQzs zaTUyh$6+_Xwd08Gv1XAn4`IzZ>KpzV{Nq|1e5!TC5x-i!@!xs__*xS4R`V}LzCUY= z^*S9I{=$(mGP32{isNkjrK2p{ldvFPQUlE*3|ZecP#d0*>&Eo#FSAulf;h>8JDx*g zHDBruL!rL+%>lhfwtmVAMy@dv!;Ot!=&%O?4}|~^SKSebE~(I;n4pRXgXA1t;-=@U z{mZhDb^NRgM8QD<{hDt)#kOec%kfQhMb3@JnwSP~gb%-oTEqL+o%7wd%5%{=rs?XCnp22#t_nk%%e(;&U%A_0OY1muA zt)xv^*5uEP(cf1Cnc|<;moOociU|h&Y6c&2$9M}g&~wY5_GGo&V2ppC-|h2* zYL*qr<|gqb#lRnQq+S8d(E%k9IfwYbP~dbEwD7xoF-``~2n2r6*{7NF-ZT7rju9bV zV{cN%1fzM@k|IC?9v9N2t3yM|`c>vvfrnKzY_1VgG=vW}Y7HI>j?rDgp7?dFFkpCo zDI%LgFegCK3ieq%vh@&jVoE1 zTb(1Fo`kw)v{j-0pK#tcmdP=_n=Bk8LgYkwKCO;v>kh8F6M1&pO`iKjNb{GO)7I|? zj+Zir@An2G-mWKO1f0FpE$wn^gsMXZ2L%nb$B<#OjcDKEc9>^zcOSTe#rp0MN;T-b z$ya@AOUgrwCV_%iuuz-el;(wsVXt{5*OM_3m_!%!se}K(Tie8$v|Nw}nYLM5N~gz+I!hoKEwx z)k#j?+WNkqbHq*TOn$$b%MYn<&CN8@m(9V)vCu=vT-DpZtuH)qN?@1j)2_=hLfrD1 zfbH8?Z#>za41UWHLUeF@d|8=ps<1tMkI2l+yatl%ayzH`3S4JAsPhsx4t}l3Y(XY} zDsoUuN0s!w^vl#mf~wGgXKg+gK`6@Dc=I7c8qQ-F#R%DV<;?_m$ah@c>wKZL<*A#m zWvuT`+0^8d<$x<|TSLstuWbOyL{bIFKXVz%G%u8hqgWrT{^WY_>Kdsd-HNf7Kd?Pb1&ge658Ztkg4jcGTS{#6 zNo$7jF)_JTI_d!MHarHlvlP(006{~Ld=k00z~Cb#QSxC&yFeU=S6&J|=ho*llDkhg z|59Spa0GUoN2Ov&d1~Bwrk3&^+*#3`1w($v)}TDn?kjO$HG&4IG&A}(T-O>VFdtfJ zCx6xbo;3Q5JWc0pV9D$F^g-d1DaFWv&hBXY3en#3qZ6A(^D1_A168jpwtylE2dg6OVKH5jQnyQ8@2eSL^a1m09RNxT%z2rPr>>U@jE6()b}d$A{9M|3u< z8>!KRAWCx)Ig1Sdg^}$W4)<@~uLl|lYFrmP2KHTFm4J%%tb3LyRPK#uOXtVXXXH1IWCUE@T$I&|JgY~syKVjhOj_M| zeTyX2Rz1lrS`uw;6XZPh$=vYP!H6I_$%Dsnt;^Kw;i;iDjAD20NoMSWBrB~3LPeuP z%)8@_Kr+9ne*k=pZIPmTj=|EXd%-)yTyNT(Q>2{`zKO&D!#(IKdAOcVM?IE#k1i8_ z>`Gkr#;nfjfY-z{2Jnqaw7>tWvF1IeK{-_dI74Qz{2Cm~ImvpWl3AiFWpySca`#6a z#~`To$8ZsG-s1kKNv%A^)$6rKb!vJwN04m`yXk8tGX1a;UKdLxHO1QM<@w!(DWKCn zxTfx)0lDDmLtC=4WU#RJRWoJfR`gPkH3ul{ooifpUqwY8znmxL1O^9NfPc{SBnA25 z&EMr11l1-+_MWnl7Bf^(8vM$VouR$a*?ivS>IpTjz0q5k*I)6?r^VEF;ewg7FNIon zp9*di3l)tBhTRHaAGY0Z$?Q{%c}gg$i3vozOV2bh(Pc}j7jY@_SeCcCPi)%v)g?3B zQoMbdL(noahcggvW7bAVcb2JfBx%*TzN78aSlV=aVZsFe`>kIcqjL(V8XvY31*YKi zbNuYA49Apns8+h7#H71@$yA1<_FopMG_1>touFbyMtqsS3=ijGrF6811TXdLrk|zO32rQTQ8o^MThf z`w+aoN+`L-!UbsM+v<|bVHGS^#E0NhcGhRq$l=v$+HXKO9P!qAKCP%Fju}i?bog86z~0(<9ow`zFI&oDR&cj8d9agMhvd7HvucDK?Bt3cI69%TEtXo)6AY!qd{U@Bir{ ziWc&M-Rv!%r7vdWFj!=l(ifo?xAWXIf-c0juH3nnK1jL%(>2C9$;)&F42I5&-QzA9 zZ_W%zdp5T*oJOPp^X3Y9Q#2p^Pu9M;0q$OUAaeRomS<>{n4l+-_8QX55RF>EiX0PagVCyRVx5SQr%|C{>1 za1;v)0XCaNK=&4dd}W$M(TL#HE}BwDaA#5uCISakQ-TWDAyRIyJUjZk{63ez{S>p7 z@Wpm5oJl zCL6LJhA!CfjSZT60{P9tE;s69a+=LwP-QPEW@^{ahu%Idw-sRG+7Pytj`hQ}Iple_ z1^6*Z_E3jnTrIZ-H`NYoFrBTIjxD-_428_bEFCsy-wbGae>KbSia0HCJx=fN%ugqu~NS8lwSLSM@Q3EqaTcTE`82;j#B+z%_msKnQmMYN+P#* zB@}#qyJ4|!Kn|DIxvcb&Su;%}uF=xed>`{GJTQQP5^q1QR~4yQZ6CN>uFRCZuAllN z*WBDJL+y8Dc<1Ai$Sf{IK<^fRX-fVP7I{HJs3sR7qVx1x$Hcu0%NAmo;(C(zJt+*` z5q+1k6pAnI>E=&Oy8+K2(krvY-4|~)rs*DR)zyRqedddm*Z?^A89!ib81<9Xsh&qm zbv9}zkmh~w8jMh)(cq?Nn2YNp@#K_#GVFq-KC#QA8*u$4OX6|gUATMM6#gi*BRV}V z$`4#-rus0nNc$D?`NGuce!&o?4+84=RKQ)##g`;m+iKf32o@f#5g^;WEHd{|b+beK zVF}22DIUih3)9*%9m+V zDl(@i5F0hKi@Y*wJia2Mbz`HFeG?dGZ)7LWLu8;YYyfR;g(}Rv#}^uEpD$ zX6#5EpyVxq<7-1xX1v?#N4Q!!c1m(ifVO$ms=#tyL6k*Pm~K1`zw||t-@%atk_HG9vVWtyC zSUs>ACR!ig*}s{a;W0&G8aS9BH{!|Ia|=yoQ!YM#&)dD%n3A*69zT((a|PqJ6D)#b zbYVl_Weimc0RWJDAD?rUDPf?Xm)=}4Q>#Hpu_B)8M?xP1V3zHE15Sv~?nITl%H}7m zV-VMD>lM=Uu`}?7_CJ<5g=& z-?o8N;+SIZrJmJfQeR5Q!JNILqd@RE{q-D&({F=Omw=%5G~(F~ zZy|h)9*ytb2#oxE`mzP~=*pqtU|;FX>ze5~n5AC!He57AcxEJq} zNPtQU9<`Z~0+re2Mpe^35x>@iV>4<7t<9e%-x%`s^nFo0sV!jk8 z@({@8bMbon-6#Q0X>1R-Wf^uVNlZwDwOLLMqooer7h0X@#H9U*SPQM{+^!xlJyiP# zSTcr|S4*g&$L>cwpZN4GLu#OV_w-ucQe7}@n-Q85?sTSA8uC^zoTh`>IR#L`5HiGk zO6t+q{b0?|`;ERSMPgIvZw3;=QI&+l7X?;*B5M$eZQ^xXGMVR3H z%$r620|Pk+xt9+Z91UgCCqKNgAkBE|=nv%{4(y}n8Xc7M<#A#U`$Vu)b^{!(0l3zF z?mT3}KucARu2!iwA8+UlOjWrPFP%83E#kgKa+L&9ZK;2TRC?!Z&cbRA{7mf zi`_$Ay6^Z0u_Pwkj>n2w^ShUyhM3Yu`ae^eCMu?i_vzC9eAHCPo$3zJ0(FlO0ZTgB zjAxIdwhb2DoJXB&XJ5rK_OQOzU5r!!IN$M9p$MgGm{Dyvbl0%%Wzb|PMsK&kAl##j z=6(II+UY2kDCW#&{XM}Qo&&+QQ_KdfK*#Q?j-eN{&9nUK9!sm8`8 z{mlQxPy#>r52_Evlq%xCH`WDvJ|-*GT=m8~V<3}2M1lIR zWZZkb$f`R;hG@)UUPFYIcjVAS1uQe?!_FsB_pZaGA@+5~9#XNcv^Sof2(qbWdo%a! z&sOp(!BPw4BF`J{2dXe$y>J|RO5iWgZp;+WjP-R*STH#Rb=@Fe;a!*=_&u{7eOB^f z)Z$w__N~JmG~HH8wb4g!@9zs4>3;xzmduj=f^$SFZ0-4E4!EH)+Hp*<@2rr%SMQhT zgt+~czg^}hOZ?p*7}8Qjn%I$Bl_qu20W}ZLogfp|w<={@Kw4m3*_}r;(}_^HzKa=h zyBq)L`qG}>TE27gv=2h+i^F0Pn1az`$cRw_v1dMH*SFDanJ2ULY`!6=QXBh`ZZ< z1c&2Xsd8aY*neh;M*JUMC}+vh??>~1KI(mXEs)vSNPvzx>D&*G5ITJctN+_@rze?Q z0}Rqh>*3pMU<1GM#(gh5dxh6iTiPAhhDkA=+Au18&5R7&J>tbOC^_1fRU5>jU6kL}Z4*H@P9pUr?83GLKG}-b&b`RKd}uti4(lA>cf^L>KxoASU(~VQ zbd|MU_vz9eIp3dOqSuSDa!%fN)&Z6?XY=n1pY~M8-K87ETvbY0$n4;Y(te=k61s0& z7X4rm%r;%CE|o6lY4$jo?yK@|fRnF3z)x$B4%T)1AWN4&{!ibQbab0aLy5-H4xO?m z$VM&A#h~I&II7nlgiC7%e6iHIgw)P-r53fn11=;R1Sn#ACW-9JV0ssrLR@>4n8+dj z)#Vi09cq2;Cb^1lb(jN*8xfpuE8hEWj}@L()rF8XvF^+t6CO;k5J_k2CzePZZ~vsn zokQDqQRdGqK3<CW4aY>lD5RgX|L~7*KU}W$zVF z$N#nCA;obR+8uT_oqs1GB`I%5L(O@(N;D_y3adLvV)g#?EXx%M_Y$l z-#R&s?%XiP-W={rZ(-zG4rKY3s{@o5A`+kRD5CYr96I^Sf*WUd6@D<=sO7D z;XxYDLS=Uj^0b7Rp$kxL0>qYx9bqZq6IUfo-Ycn6QoOHll~hC@ZaJ9E5PI5ff*+GM z1GZn|n)~LxxLMzcJVhYP(B>(}o&Nx6g;HMLaqQ6WSvmg8dZ@?GxZcC`v$Q8Yo4_QvF-3om84AkicQ0{YLF#u{oP#q?cp^r&}RtKxqj{m2`wvY zX7qiQ1ogYB`%1G>zd*6@G%D6)QJzEYAsbtoD`Ar=o{u^z^E-|ZduU`dZ}7qY!&s4& zzqErU+zDEPD)=T~`zqo|cdh7?vhos}L-xv7Dj6<-`E`kML|I?DhP}>~)7=}gxH4KB+mFb$fVL+l zbg;;SxUQ?pdoz+txz3BjY;hwy^KT@M-o))1DHr;UCV`$$*?mE46uvE=tFW(RQ>1Fy z_?tzaoE_7}Of-4QquLH3bFtOYsSDSrTi1 z?SySa`6d6Moqw#X(L?EtDUYhC9^*=0Dx3RaT)nB|^Y&8(uBRWaSIDg(jV7<9J+rb zJ@B%vWe`i+F8MIW9PLmH=<~V>TbB@738j;sXBWH=GS7MG1Mf&?H7A{n!LT-;sZ8+U zntaHnhJ1HxZsnYOeHw^i$X{)|1I`R8oTQJ?vo&gY!;Chqs%K#35~WuqPJb72B*4Tn z^M0dV%Q0k8j?f3S&Cb639Zy#*qw~9I`4!32XK8xejDW%VQ4g%1?J{i#v=?d8bblJ) zv51nbk24A^UU*M*FlU>pKE!Olg=tz=PJzGN9zM!2G~1QnoWD# zU8F_jSxdxwrRCIgC;u82*bQJU5FIWFyhmx-txZ=|(p|lRoi579d`g@NQ9n13Y%+q7 z3_Y`eVI=*@Zme{t>?LmCi4g@CA3IL6b9@Ml6i0l=fN_-_;7K-SA%#<}SSt-Kt3*h=Wqp4M%L4 zH2JMJT>J8XKYq-X|LO~kN6AcQ7g!4~d|t>6VE&#K>(E~+1g1;vr1n~_^P4xg<;_o_ zzNHnUR^+d^{h3||2+-~%lICKrrDpeS-q9*~u)F|Fm!k-`W!lVEz|Z%7iTKsb=?E=C z`(juPvnR<)>tSJ+Z7P1ftgqz^Z4%b0GTI&roD?mt%}10CW_3B4;THdA)-40tSeugk;V(3K;g zu2y;aG86nW4*47lX?Tgz8x{*IA}8m9D&@~;f}SnLx*1ssn(W=_#TU!uHxH+j5t$kMo`4;-wMen(?8P&BVZL!4-sjHMNl6FwsIKGSQXaj}>Hu^Hu!)1-}b z7i|-Wv4vHY?NTha{gQIR*uuEL@&VIrkt#BqE)@OBB#_iPJ{R&v4F zKG#<%5{iAY41e1S#OI+`)awFpn}se%46z+uZ7`eJ9?m zRw4s?^nt$1ZP&?^TtpeRh=CrT1mm7=`~1=rc}+ldRyq60nXNS2=M~pJU+2S}+tP85 z12;KP{AOqock1p9+m?NpABQU0?wR%Q!}{U&C}U&Lwe-f!aAQ(f%}~4UE7$iDHZ^}> zAzl|N5kh>U!Flq=_ZE9M(lVPeU#se!EhrxFpA+j&EeiiS#xwauZ_jr81ioEJb&+gH zXVmer_vr4xL+g6t3if=I9c3Q3PJjGpw^g*c>hr6KvUEw#Wt!%{-A1zh&Os#2HyM%) zjwuO^gC-H!eN&SQY{G>=uh_Gd`_dxW6v4ln^g9b^36FGQ6nQ$N*gwJer_Rzh>jfV6 z$$^V&ywKK1pVVtgHxinopxjx-V?{)p=nM&GYd(xDM`eZS{m!}%5g}9;)CaDxk_C+O z30!-exA4?jP#$ld#=a{4Nh|;mD|Ly%I#01uc;t1FkV*Ulc!9AkUXb>oAJuK4%S@9< zj%W0_+OVS^27Nb2J>EZq)5UhN7F{~Ou1#B1cXc|{te#QIjD|B54=^3@b#coLjnK$5 zuVkc?`q{!d-e`~PuM>XrESOU?qqlS@RFrJHc|Sn*QuV%r@Zq6RCR4?W@8Z!Lw|6{) zZMO1LuHw>EWqWXj(Oh0NQ4Nr~GQaq1!2uah#PbNQH&zWyMigD2>!B-k7>U!Q?@8ui z#Y-EmcSPvvc-sx1cTq7IYf818fz?COcz=Lk-20{m#MH{W

Vw$*fb>i_4*5^jj_&C$FNGINM#32kAc;^~0WX!5c7=!ke7ckgO_2=C`Xq5O^F znqg}C^7qA!I$+fwJ+C)h3KB06A}I16SP0Iw{0FG0DYK>#z{6YDjMbo($rUUikdCB@ zygg+@*% z)N8_SIxUa*wm+ei>51eu#!B!5cvQ$6(9^W<;!C*RFTFA`;unJ_q&&wh>+Ftv`u|)K zBZKHUCB?)|7-P+|f}I8x>_R4{vr!~H_Tw_Mce8!#s%R~7PVsBUQ7SazG0zrNX7Wv~ z!eKz(jtdu$sPjNcfHrfGjbBXw2Z8fMhAJ3aTwf)Ccg+@d!k{;KmBYWa{=o}Bu2;UI z=zFP?e%(2ShsvC7VeB6uPKO}S&B+s6^F61iKxhZbo4e-j0-DOUb%o;bC0P26=uo~#rFMO+4;GV^gUwUj@QD|hsi{vnm66AE8c7sydYu8k0MXB9 z8_seXQR+g$jkm%Ng#L#AAl@bl&|!yN?5}`GvHd{uHj89_AKSZ{B8aua=V6kWw8BVE zNLsF72uBhvQQRQ}D)1)@DS@qqhjx(&Nd@+o&uTj;x?o#W9{u>ZRHjPVjP5$wZf|{D zkCMwNH(Hq|j(RTW_%wJ=caV_cJ;RS@erjoHFOE7Z{pkHB!6dkms*<(gmn&8&-`i6? zE?(roas5LH5y(WXMZgG6kxZ45$gQo1fc{joRF+5F`x>iK7e#^lH=PZFeEr``{}hAP zuips+n_^~D(DrNcooy5tJ(N~k$Sd(>abkRL*k)4j2vgol0>SDRY6sp$Qz!X@1|otD z-F$iJ1q$s?aa&D|K8b$~*%2;rHE~vR?qJGwJMmGWBbG?rpkI09Zi6FdjngAX)9yM` z&&zLt4Y7uE9VAIYqjc=nBS(J#TKMc4-skrr;dtiygP!kY1Otix__Hq)jDEatqgCo^&xfY#xC=7l*kge-FYOw@i+ zIlO5>zu^3fHI_`MJ&gfB&`1WE8J+;5pI31K3XwD3#j`e!T8{@hr29_ zDe7dXmq{>@%eH!#0>US`xLPxG)q+G3o>b!xKGBUTmFP{TZX}` zGHy#5*Xy_IUC^2W6pKe4`G&5m9yDvyzM(5%T+~7g4_95(qcGf8OvH+aH{~-< zU9=UjeR3`0SA&7X%a-q4D)-HuL#ZA~`P5w7-oBg_S#B$pEMK=h_yW{*l>(n2ChQ}| zovtp=lMuIY9QX$SO$|Z}Hd6^G;Krz7ucurqCb0!EN_(5HuV@d` z)~j52EbW`EvZVNtw$AKBaqyP`vN6|F^!uX%yxjnajmu*r{gbwJXAcBYCGgiyce=E1 zO@2(Y`Nza@s$MzGdr~Gc`}=4Zo_79o;r#0Gk5yaFX_{Pr<1Ly#0{w6x%1y=fiB6Ue zCr(!`SY5fLdDV8u9odZie|f_$c(O0C7fL|7{k7zr<7B?#Sxge6u4?YHzn-D;*#VVfi*^Q8RE@j7`( zP3Kr%+1{|QO+@5ym?BaJl~MEd)5+vZhWaRW2Gg_5G3|R+V_mOQ9>EpJnffAm)+;>* zbt9-b3#4JMd3O<`m! z+NBc(PqQe8t~&k<9SbZH`vrbG^gBV&Rf}6$+jsxutaILW^Bly2;uT%_nvh_#)@aXe zpfJn5D$Et*n1*-t;|Q+|2K0eU_5Cm%_o2n{gLw}vO*DhbwMD+Kh9bis0sWN$3Vj4* zJR>fQ%B!3C$+n=9=Q+OXQvI^cjfrc9Cb4GsgG!Za*jRpk2{ri^`916c_FW7{NICA= zEZ{Yr!Q7O5kZbt$U7`uW#}>G($!Dx{b;Vp-q_ey)h)DWYv{&#xrb)aB&q zl6CxI>V#H7$JrIP9LLOiB{mq_Lz!lb1E zSF~HsYa?I+g^E1Z>q>YTM-K?Gx?j)c$VQO%JW(#fq@NOyk8TozH5od>I>RogHEYfH;MCR|@+<4eqS(mI- z{ndxMLB7d%G0|nPx%w1sFNyPcOKoq>lMm)>_5SS@Uf^746q?(6{5;dbftKY_?}Ar# zM=A+1Yx*GB%ZCgziO{xZwyRasz;}&j{6_(A3LG96eJsv@8x>7PF1|G0Di!!{hPTGK zyf(+#y>NMOT;Xp8%ZbA6e%}X^a>Dx_RXtyfU5aQZ4Zx+%o3$8IL(GIgBVj$2XBY>-ciA>QcGafkauC` z6eB}RaEw?kTIMQoZ>mknq}d12 zj7f{FdLMdss0|kz^74p>3S{y`cj!9)oYQ@LbR-Ab-8Euc>(A^~|LDDLCfeIcVw*u7 zw82jU4*~O#)^}{j&6N3tSz#ZY9R;(#M z@7J0yzev4fy!;-~MG-fK9~Yo1G7sy_o)S1;e`Q&qlc*`c{Bh{2VYc1j!Ja3g#U4xR zq0w{WLQOd@Cmk*E2A_q^-wTPc?h83@p??!2EqN#&U=w64XTp}X!NhI3skt*kWn!mj z>zjTluVu$k5?UbXZl~f()w7GCsm%3hYXAEiOv!DX}AT&^eLK z@6-XyHpL2=k};De4}0bPf?JPKB$AULM(p2{rD`2&E{9(VTkIuW{a>@F7Uy~iad4^D zEB)Js>Y9p~L)O|@n>e~7*;B_Bq3&WPacOuYbSj;z=>78F+QhS26qE6y!PoL*lQTZQ z#|u`UhFlAWMKWh6i#!R(luqh7{a4|c`5M)biy{VgFV~^CG~1v7W>+@i z{vMN8PVctFwAINTun|zq210ZOQ>K7?&o1};;1~j!aAzx%{Us+bZV=}zi$M6XqZT;P z19jQ>5Ae4N2RGh?;BFOid|cp(3tO<2#(_fq101jx?BG(QK1CO6|9OhRz?5Mpb%==~UpY9AB(Gqb6kjuO zepxFM32Rm#eL{gD0{~Ov3_q4dR@iQ3r1H&|i^h(}f?0#0zrPzmwFW&f8ob82hv zt`n}dp+$1NKLGOOkfRya6KGQMQ$-pE{O-T* zbN`V)lk+(z$$LD<mOqab^lDbq~PibE?*gouHo3$=cb4w#6M!^z>>p1?8g6?6rjlJwYZNc%sFklP+YZ z+au|;y9p~u-8()Bzg8FAL$*M7B0t5g^oha0Yz&_%)~E5${&V@G&eT z)3s7uB1{ZV-2XH|I23;HW?HP06W!)jFkF!^}u|HhK2h> z?~>VWrZaRKUhC-&pf3sdmI%uin;7(z%D+u1-u^E%&|20 z#EWiYJs`z3A(p~03Y;djG;$`{sDgSV=oLE7qTzyg*HA+-ytV#2qHmy2(X#fxuM$IgbME%oyBTUW99 z0%3cv*G4`x934JGLAGGis(kjO*=st6+Y8UzjV*Sj#kCWLYlh+v6S<>)jkLe8Id7rz zQ(6A}iRke}54G|Z8Ja!al$?m&*;q|9f*Ad5dwWB(GVl_ic}kvnRCh5wt^DITFk706 zu$NpOAodaEP*OaX^QTetc7O!PHuQo1cq%?V775g`O3t-u{2p7*??Kan8>sHOBJE!r zQ`Ayo&J|$cfM>hbp`-m5Un)-B_2ZG%=lU9NLHgC5{ciG(Quh@5H^FO0>{ZONai`8)eA454oBOt~Ba>rN5z{o_|MQ%K1ZIGN zMCI*TfcWQ%6=0FM_li>|=jnR`vK3{ZyJsfFyI>M&i2@T09_oYilR{NLb$0(!oEm*P zPy{l1pHZfU&X_0UWq;er{!&bl0?_|yYxrGOF5L>D^c&me>ng*(KIz(o=XX4v(&L^b zdk4tdH=PPp1V$ZMY%H}$sPrvTKE{Y^lhqCW@t>Q*>bWsK{@kh;l9kyItSeD{6_V>t zaF~pI@0*)G$`NS|7dO+yFhXk(lu(6h4~m*Sq-Z%}4A1=vI0Ns>&{b(b(|;*w4wP!L z_rQ-{+SKHskX%fEA{9gGO?)GJ%eFg>d`_*gglkE@+*ZZ5*?siB~! z^0#*&b1yB@y2XtoU@Gd#_p%STKYK7LHu+cb{)&d#Ev+n`<2}#ru?Ga_x!8*cj=cRrH?>Hzsavnx`;fAaMJglHrkc^2Pi^e?>W$kvWe$jcN10*o@AO4gAga{ct6yvFlyc z!f~TsKpzGWZ*Xa#U5xgz+OP5&?T0d${H*8$$z9KQ)KFlAGrn3xHTs3!1k^fTry|E3 zj4%@R4kM@Eg0`-r{sD^M+%<872feC_qpg=Q7EiUJt%-ULCovTCsH3dJ{1t`pj*sF4 zz(-6N9xNP#e2&*2+>rGpOHh1+XH3*v7aItCG!9X1mfuXsI>STu7)ZSCs26VaLJ zU532joYxy*q$;PzJ7QS$lHpl)!>WjTk}E;*3!5(sM->P`s*+${0018=7j5mzyUH@3 zY-RMu`a6`F%7+Pmr!Ri@)rrKnoki-z?$GbI+r+67T1m#zKk~%!k)CqNoCepFHb+ej zo!JWoL=AU*i+01^_9D%PDN=IpJKR;DsYh&sVnqJt!a?0iE;34N;oI3`%cp=&5}o&3 z)HX|T0GS6a_%41WDkR9%lQ~|U17|A2<`Q|6v#js|`R|Wfi zY`Ry^!?xGrf8JNN^vQnlx?^8RhNl$mhoV~OWUMaRXJBoSW8iWc9CV?Wj88q&cx)(S z=Mo|zYbd=L=gOF#j->PRtyIN}6DlHCQ0}uZ!R;#MZKKeNIaNU1FG)G;J=9bYHUI(q zryD=lpo@KX$;q}lgJut%S5T!HE@P@TB`Wx;a(LH3>=(tbaksySKHbqq8Onc;W%J65 z`|@{)s#M`Gn*M5_jO2i992?aRcoxe*e>uA{(Pk87vMM%r9|})eW3QUOH*5>CM#P7N z*f~XXEk5Lw5h@iRXz@?C^?dgaK!$ms+#lcJ)RTTb_t+Mk=x=N1)Jzze{`gPi4#?of zbM3A$>ad3I=}tFeW%GnP2@z7g*7L<>QFJaY=hlb#ui_ig7pLi(LE8JPs24UaDmofR z##B1Se(qIc`n}Y1GZ~G!dFTzFwL8_d7m1Dq1Lh+95_r3LieiJMLYwI>Uhp)tDWqC` zRW;OHQ?eK@ER6jt5kZ#0EGm_6CgfB($#NcTCGCwuBQuv585X)s1;aU1-TH>1XAHnV zRnzC{-hMoDLjudap-(-V98H>0f>~|J(ut*Ull|vy^G~5GDvh;~c(hTL402y_-vDc@pr3Ee?}5n8Fi z%rwjMnr(7z-*Do0bMn3yD4dOG{nfr;LeQCD5xC6zZ_KX+wCbCam~iuyJQmh~0@I<> zE_dtV0frd18S%suuj`f`ujI(5B;{|OAeO@JJXT>Um+&JVGSyX)*3@Y7{Iw&?e7%2w zumxjUbM*d4$x{V@IKtpy#973KSGe%xPmk(&uQF_Nlyg7>za?K!HW>rDHoPO4ET8Zb zUAAxkyO8eI0SLkzK-O1+nwhYZMoG~8^3xaJ-I|)(4;{-nBMlZ5CVuvwteVk$_h1U~ z+SL8(D~W2DI&|B0&w4R4#w%+VI)4jb3QxjLJ?L!!N4Gwa6`ESFA4}DqDfMB z73BDNBBZ z+%+|+GYp(H=71)9GRQ!hwa*LIv@7}m=E3i993)vMi zC6-#z*3r7&vs=>6ByFpS9h8k?nrKfN2E~gMFmYPdbEh>&Xi(XwuR_oVRlW~5(p2p- zl%*M9F9PQx4Tl_`R6~A{97+TSIJF5fH9B004D2;VC)=FdzHUI4y>MJhRHC57c2#b_EeC@?}e2rBLGtO_1>6&%=wie$cS&B10vdy!Wkmymv5alyr zWF5=XASN~7H5pWsgi^D1vC8A;ys5z*CTY^vp2j>0f8y5dQY;%|^HY{mm6;=in}A8Y zUhJ8!%dI{rv0naA$*4ia!h)h3%fuR;OI5O7{Wy`$2Etb!4tmjf@!^*y!S}plu7&8R zqisgxG#GHQPh6jQEjUgWj~vA1Jej3(ZSn|8KoT-kw0?4y8lM_f$O(>6ud6mWp~yWs z?gl#W2$Y2MOa%V{!s&~^?#A=RSJIn=i4agmtDrSy@I{ zJy^1LTKvc;mcRzr3yOES{*3!|C{;U-d4+yL?AQn^Vi|$7w3vJ!P!L8p7uxkM{=?X& zmua|1K&sL*TZ^_Hru^}_*(lFdImJ+tQE2X0t?kXI@|%UzQzJ?=9i>%_P~Xfj2aAaf zC(nyy3}!{QcpB?UTv>np5A*8(y!>&-=8rV2Hc$DWi`RgO-bZ&L0tE z-Cwp0S!i;#gfm^E(QxBT3**OT3ik&(bFg-69g}#olKSt3GzdDsd7sPqzWq|(cc0~U zKKE^D?cj=#LJ3>^ck?Y8R^4{(_O~jp?`oxYHeOJ4nlNnKe`QR*j~_4*_V2mpn!re% zRDWblA9AQhhg&Mff8({culTcKei~=8bM+{N6fe3oygl|$8!my0 zJNnya3gM@!Yc6q$%s?Z+LclXZT{=0O1x) z1#^?Htb7HQ)70dHb?WAFbup9O?H2%QqVW5RS_fs8UE8{j_T}DA+|Zygf`W zp#7z^y!@1AKHV4^a+!(pLwqkSq*BBxP^H}#lvHvHc-fg6hM9KT#}P0FcfQv{ogm^G zo}3pMv@xG<5^U3nvV)B%^LFS>g=Fj|{9hOjdFG@Qn3}wiE9@)Cb3kN zf>?5oVwGdy115eLH>Wo0i$IN=+B$*-+VNC$^(A{11pa6t5;(A~CZizpG%6pQ#Iuix zx!UrDtv7vjGLNb}_<8h^V#_4Wxn)aB@cd3=T%1j5;2J!<-%KH1f5My|70iP-vC86q zR_l9JWXx2&-2iK0qwTl?uNfl?4DVvvxi(kJ0tlo*DN4Iu%yv7)1?=aWq$m@vRiDR8 zciW1*U75nYGCWV$O`-2!F$e3X%0<>oTkPr4efUab7KGreD9a(wKK$5}uv(`exQN}9 z4v-lKnXD5v*Ka+M@4MJei~iz@jeDmqBHhEVb4SyD=~BKuCC&O92+Q|1DjzCCr*%)5 zyoC&N|Kj@%@pLM3jaF{If@cp_9e-Jos#2QIB*_G#nx=X9MpxDmG4kbK?aw8&x0{!k zWQn*#i&;XMc_QzUeqoWAL%DdpZ1pX?e#-UEcXk1&W`mK${8Gm0oZ7^>6tNuAcAUkF zt5w~c`+@vCbdMENsfVZaS!DPfn5|PGnwjgu=L*cbenD>~lut6pk-MVp;r|=EEdI@U zLGwQvx^OW36rni_OkOxVX*(?4GMLe7*7ak&~ppS%UK|qGypvSnlqW^8dcX3(t1`Ww18oR^6ef98*B z>zG^9K^oqtMvCeXslcDU?zj^zH-i^^Uos3hf20Wa5eoqr-~uhx_fs=JYkbU}q+k1a zz|D~5g2srj_$X|bgh9eB9_FGLwYJQXZx}>CST>=$J%{wAM*FPs(;6EuL04D!qEh)| z$3$y$lfqR=!cmPABigl(QeG)SG292Fz^bu^Cjp0Ujwt|_`R*TgJX@IHYdy`{#BoC^I7b`PF9$&Vuc%dAk zP$VYPHP>H64$@{v@|Hg-v515S4<3@Re^D5Nd>&PlO$ zSXanI*(M}Qbn`kq8FzRY!k4M7@DV4PNaR=&)-}ifrED`~0VHhNE6ng(U2^A#f`;<&Jx{$#mSv z7=tr`xsRw1t~~|tdq0HK%k@^pp|5eavVJo7Hf^N5<%jVaE%ix)i3`%~1PUM0zsi|d z^r@Vev2}fz<6DYObgC+AHvQ(3e+ByKP?iOlh5jZJWdc!EX~aKC`s}YY$C1Dz z#_S~Y3XyM@MXcdk%y52CSJ$)%vReK7yRCc0jU_`c{AQ7#LhG9uuZ-wstD3j$@4G9o zz%Vqr%%Jx9I(J_EG1H3YwEd(-X59SWZ6sY7{;$05-;asjy_1nx6wYY(q={WU^1Rhm zZw#Rc#?`p|!2Y=(*h|Mr*2ldlgk?@$P!`M~$~rTjB==9-=dM`46jv$?iw|tybR75+ zEhI^71nHXhyNH>WPpI>Zm3ngOQR;>DisDaWqviIDYFtvIFX(!hd6y4<`^=jZ)Jtm| zg&Sz5URhfEe9lrg(%v{-Q7AW?M>|M0Sui8g93S{!541mVJ#$2uOKlWN9BYo`Lu?vd z3MK|8Bw^=wB@c zQtEr(w~(dw*cT@S@;Js1&EwX+0_^;)Xx{YSwHiM-lXC8L(s^FCt-$f7k>10 z^zREv-Puhz?u=C_Qac%xs%>Q@bR`0Fr?E_F$;mGks`LpFx|>QvV06;J;gEe-g+ z>bH2lH{!*RpF?l9dR_jvtV;ElH(yeVMt=WPi8}OqUt-=AmV$44bq(3{WPH0mFQE?i zX}132LvOEb92sHzWCG6N50I_Tv#3lAW*1VnDGhTAMq21t zan1>58Y<4IQ=KB(j2knz3}14ntCuE5pRFSTL;mCpS*(*lH|D?l0cSSjs6^b!7pfi< znG4x`{R&rmX9Z`g zyg#zNR#2eF&)7%AeW7sQAJpSkvD`P`<+FgesXXED<&SARmlc@CQVF2EW#=W&b(U%M z+I%}jjC%6Omd@JyfV!hM_1_U;h6uj`Na^81s*;$(upcBo^^OHSa4U-8s5{a5vt9;V zCiCB>sOw>`4vG5I?}BHW?K_kxvD8mYVA&@f7Mm4W!0qda2t#c%Bv z{8jq-8ip+QjwjGHW_e_}H4Fap9%tvC(jHeD)`!H7%WO@DPe9YqdjC}}=3TS2{evAA zTom4xirwW~^=`(n@m<`DtN&3ZKB1U%y;sr=fnkeF{{X7xJS)3^|DN>yimt?(#?`$h zm;C!#H>w=4XDf9N7a-7MxgBD+U#`bHEiipBEqF5tI&|N2_u(Hv`4fE8@p6H~*M4pL zL!cXWz9GXdZeLA?q2N2obGXXH1!b+miJ#pTiM{a+lI25CbdOwlII=Hw`d6@gK;_+* z<8J3y+5W1QMF5`LMS14T&X(p6bxCBe2aKj!kqFdKV|Kq0bC=mf2Hs#PZF*bxh;qeF z;NB~nqRgy`$+-t=(p`*;uJ1CnxCfhYG9!NSh$7d~tVD-OoaMcsnTD80&}}3Z`Ik~u zs==t=pJ{3lA0r^hN?wC=#gX^BC}PUqWRu5Z-mU!zaeZveS?H^Ja{i+?M)38kMSZ1S zz}|@ajI7YfU1tpUDcc!Npwhng7(uC=Q-%vzatuhK~O79|B2>mC_HH!la2$=$n=LBXg1oWMtYH{~k$e@?RSD zM_8Q(Ijp}z$T+`ZJ`Se@S8v2JNu(&q$m*2cacachiq3yN6?^?HQ6>zuVF(X<(R}-k zrPVwBAHX;Dpa!zk=w9))m}!8)4ap@o#sMM5SJX)}khQ zHkKH-H5%*RNBTVuN1q)=Q*;Z!tf76nfvj^OtL2M!On3JfEH?xXGOO$pgH10-NhlGFfq*?<<8u zaBXhmsDF4dD;k`DnWQ*l+$n?ZnnT2|JU8v8b+EEge^BgngsYj-#`DjbB?OO21s zsKP)tXDK1fRkiKTEj~S+} z)P47f zdfvAZAC1eU@su`Kt(LtxnJ(1yW29yDN=si3uDG~JB}(zqaps-@ZM@T+ zoVpZz3bBjZ9dUGccBa=y>dLzzc9V`NaVuRVdh)xhL^n zOZ2j%Pj(6?L5=`FuEwz}Rm{e@Yv^gf{a=dv5&fzENGdq_d2?j1Z=_x;QDikC15(R) zRhbvsW%v6Bg?Gs%%0LwFPV8tWo(VTZ`*qN$YHEp){D8{3W!+F_lkrp7UftkV;}_;P zL~rApG0}42IK9UVehdio3BTpkYR%HROR;WkGPO!iimh&Nkjx|+^}-yi1$Dry&;9}E zld~?tSDgRv#og2Bf_R&rmkTvZd`%9zR0L{qWDBo=?h@iM&;#uYo)W2uqMeF5L3x&y z*jYhyaxYeXf<5)7sdr}(;~`?@+E<_AoykAM{0yW&zbLd#&95tzX@c0y%tNDI3)Bh4 zK0z!yiYiMSogT4FpAyVvX03tfY#;6GHg>1VCthsbTnjX}x^PtX;zV;i)RK;`I+-IQLO8cyVUE~=?#Bj~W47M!4tNLLEd=U>A<7J=qev~y zn+MuqJ9Uz}V&(g((IuOPw#oeN0!F_S?fX8<$oxS(#<5-Lk{nqIv?T&sdIZtitSNF! zU4QB5$MDd0SWxE<(tMQ;vCj_JckXfXwho_sH&##yQMLJN>6f$pty+;~*g+XDB4lZ{ znE4>JKGwOiy+g*o2InRS>j2MHkD1?9w=x^~HFg~5-_M_#)_8HS!z@hxE-G>7>sC`9 zrQZKOxWQ0$U$;=pEF(buZjs zJ;Y9U{=Y9*f1asi#R6f=40;2^J4ItPqlHF%iXxWV| zrr-+%bEiHEhHG2|D8SG`v~D)xsG#Q8NJ_Ts@+|O@AbDU?R4g_o8q^ji)lz zTKo7rTaQ(gg<9>DTbV3LOpRfe&m%7yXAmN>Gj1V<>~6Vb-%rSyqKBV)7Ibaz$P`oF zkGO#MNWV@?de;1_=2A2H9#<2Va^WisT03(u=J*E)!0t*%YVf&(KF=F1)ip1c85z+_ zMPX$@?sbI^^z#dKX8|4f4F{?dIiUHutfpxtb^uW+<&#`e4VCu^qyDPZmj`vS@Ww}p$2OMo1 z6H8V*g9T0lgBLv3RW5)?=bZb&idj{>`qbu}Y*V@Ky3QD-r;P_|75jOdChLI^@`Qry zy}mW;G}{3bwLHqdqySrvg3#?>#6ESzTM zn!?|*35inNRLL5;_V{s!mz+IT>nqmA6=Bn;pfHFj=URTREY^gDp;>T#S~~RC@^wA& zNWnUq^B>mQf^+44JR@F5yFBJh*|rsCqatt-hu6vq?Ory@2Ir=cLKfzXAx}5xWA2_l zL$F4Ndm{%{Y7%-)<`>ou*vN+N0)=-K^7;JoQChvskj}U+AD*zNDXykhoqsq<`v`DX z3Y6gW8^qBCxX;6NTR5+?o^%Yw3k~OU*2-VAxUYQ_I+Tv|ig0?!)(^hV)K0ab%mY#d- z%D>BpY#=Zk>?9+zW3spTBv!Mxr6P~)Bn+FDJJ zUCIE$ED<`D;EUDx)VNaBa-ynyOI()wVBj1Yg70hJvHUujXL{*UeC0_35*>VuvFHc3 zb|kKj1?=_%r)w7Ho*N*!@ax4M2yg2CVodH@QLz zV`f<%Bsw6Dr8?OiF1Z!M3f6fxo0zDUd1zPtHiTks*GdLg8TU%nq%KTiuYi^ztxOb} zeDE8V`jZItKPcMd-)Qq0=*+qob1rp5*o)QUB=cF^n8B8kc9ZIrF#FP4J7ve0f69*W zD)Ck85(G^Z5j6q?WN~11yB>d{hyyi)txuiL!@=w9ak2CRqu!?)8zy#8-EPT{RQ8Fo z2?nT=&Ne9qPes!@s zl&BqQ_@Tz!oMvok0~^2mk>=%~hrcUvzEg{RmLu!#8KK3N#9TRxmkM(`sQ}Pbb_sWd z6+O>aGP9qGWZYVXFXwFv&#u!fugitp`4|lDRqu(mTBRr5;y3LYMRP9E*05?py?FsR z)$@B+iq|}S?oB?bO$-)o@5i}#U7RPETT@TOg3gbr(Q@|gL>w`P^WUl{_&;+Fhd&uz zg*Elq+JPQmIJ|z__%qz9-HMh8du27hixB^jl5YNjd>#8^z=i+l*qYi?&!i?{(aV2a z>+QRQXw6L-4<<3syS{K#k1*-S1fy&7qa^#(YPsK@Uc6dN#{cu>Kk9DZDI^Eh#KyEvNY&!qq{5v7Ei&Xl!* zxPBK_v^{r9#mtLCv&eIvt9eKl>PVQequ-oW1^(7>J_(?EpH47|*9>(? zdva*cFTV<8Aae2af&#!UOIZ4J3sbL&T?mO8sgMzu-j-2Z|8YI>Cr;-9i-Em?^;}d| zWcZ%ep4My!-j!0N@0e0#7(8QNzrnSFbR&n2=C5Y2!XxXgi!;%TT#AFgvLfi@e6>RT z{TsuM`USEqfetgK2TZ%K@O*UnJ~!1slx6T>xy0v=-+8Z|-Ox&Xt&DmDqg-(KIdI%x z&ZMfg%vj5A&DEBR^iIB&W;(tBS$0;q?j%DO&nQ?H!pe{G-n&>JHhc3Y+)I>r&8t$E zyo5?8{<1c^xP3S*#PdPEL6P?>eaTS7R6EbQHm9yl3%zZlPCNk*(hYVFW*{83aQSOd?Xh7zqRoFnI!{|_9H7x z_x2wc&74Tad0o|_UtTub@Slc!heKb3JeSRYGlvSbI! zF%$Ne3MSZnY@aIpmdvNDpu%61>H*`lQa2+0Sn0OEZZYzZeX}WV8aV=AIkXhT`okH^=Cp$qEkS9&W>3T6K;x-`Qrt7?$GZc4c_> z+kz!Il4GQm*IOj-KGoNsv}`&(RCrjPn;^v|Y|kYA?h(!?^l6EIce2O&aj)w>aWyTY zot5IkfEat0FLJAu$w>paCd51Ab_V)A5s|k=uB3e#t>xiqe+uy_v#d5?+sC}y_)FMr z{pXW)@||t9_G4>=r11z>NeRdCl8sdv^W+rz+>FQcowE4Q+z0RqfYXkJ?B4`Cudfgp;BNOhK*ovN(8v*4juYzucO!En zjdxQ8lV+K3*z4|JCE{2lo%UOD%ixejFFKp>^&0Z`%pSgc?&o?yq=IR#D732cR5M<7 zR6{0@J6SWGL{rm9#&_HqH7um1x;rlEmy}%dd3YS0?R>i@h4yKMZ|I!B!Z>PcscTg2 zUi!=k(dY&HQYj7#X8I|^$NA@ix@4c96n?EG6YHtB^YOUpK2v;Jq`6r`yGja>SS*Dx zu3?1z*7&HEg5<{|=zk5-I;l2^En7*uXsk+-^X$Sxg}a=8X|NOUT-Jl4`wuQ#NkfDZ zi60A|ZkNz=a4zMqz~M%So`x*SZ}1p61c${yE8f{C@z(8puX5!-{WYSqC;vUAzRLXH z&ZsOL>uKm`DEW(Y2hyY=;(mN0tzCNOa}jlh%E8T>@Ut@Y8^B)b?`Y z6MGd2*u;-|jC8J{n~}%>ZjafkTt2m)pB^%b`TF5bedUDAes;7H-+L9A1*pmIld>~aUvoYiz&H#|8dfU zE*FzxJh>d?hun4pFY?>ebgP)3qiR*$dmo zDcZqK*WQF@wwXU^S~ITs(|*5_j8%=wN_P1paYC^^@=je)Q4A*8`+DV))1{60q5`}t z#eW|U(Ot2$hZUo-RwrT>n@H8iTA`6c1lYzy;dPeH>u>^-G9fLxHiNu)* z@7={8!XCkTTZy#8WiOSJ9Y3+?2nmjO6^60bhxFRuetj)?u*+ki*_vX$bwXfVyK&Dy z9Vy9ifWI?nN+hv~(o_Fs@y!Sk;?IQ@RtU>}fX^;NQGx^dAlhv=G-W;>-dSNtUv}`% zorUlzbiv%o(XZ&hBiK1)8bLWL3qQ&1QhRfz=IBt8ZkokWxiHgu#qc5dn-jGkkH)Di z0S*%?L==3!O|WIu9qPO&H3M;%K9MQemEpgHq9fq8TC|Abdhmo@0>7`|crx?9V;S8+^|M)dO~|E$6+i1KsvT=zYDgEVZC zSrDQ6#$2^wRwf~-E1fGWP_eGYo#e}ih$D;lED%Th zCzkBCuE9H7rH)}$X~)#i$Q|c2%@pwQR_~&J?e#I8h_oTqDOi4uOWe#B{LEXuVZdh9 zCWZ3-&nIts#d&i<%syv5cE+P@IvxE0tXVYZD_{CjP)%q{8fgh6go0OUvJOV`aRXlH7aWwaMuBx zzLMx??q6@=zFN=kPF*BT(iyFg4`R&W3mD)*koED}Y4o;&r!X3>j^(xFETv3W6*^6wP)&8XJzNr8lXfr zDXNBEVUu_FeK!0UKB70ITodJn{``;N;{r9g>IoKPv6!vTGmT z))wx?kTd}evgc{@@W?{3mR$?&(BjNRuB z9?chQ44>g7j?@q9yJ}!dJys0dZvMKAFZ8wj2OTgv;{gAli)sNs%R{>K5BnPR+>m|qE}h5DPlu>6zZt0Y ze17H{wRj?aHOe#UPG9gM{weKy*(*~;Y=*a`Z_Sr68eXvcc_h}-m3V}0$Ce!%E9Tl@ zN=X3vXs%!Kjg1OMlaCCp1d97|h|ygq^T1yI-{C8>14>U#s~)KzJ^={=tz*MGQ7l=7i(O{FK3}3J zszZg8h&bM};&w-IKw3?yLH12;Qg^rh&n}~406!mVh|Q46@}GylSn=OO9yYFGhY+7< zp%skvLJ}Q|NTlXEwBwX~w|E!RUu>-clq7ob1>?J6q!$wF^)cPX&nKf2?je0&G99j2 z9>_6;03s{i&t6wfG{^U?)L=hg-3RR}@#RU=&}>@D8M`LH-yHw|CTqsGZ%kCRZ=t0n zFGp_wE+4@Qb(U9VLZ5Lmq-<+vFsjO5!Y%ji{H!NAU(L_xYujFO$?)!Yq!idJ-=Zv zWqi69ntDcBg{6{Y2i4j@rmBmNYtbMK5{$QC!^ZLr-3n2QBWzfp4Zmghe`C zdx7;adhi2BcF$Hixcaw3tf%2yt5Nvt?9B5V{QA&6O0i2vwcztiQu6QL(#4y99w~TT zC)6P=S*c@w1WmF@FlVM%crr07fVo`&agUAF^~^$)I(l7W_l&83?Mv!LOz^bmKVDKG zOzgPpO4?mg1d{jRx9}@XuNl4FdoO`ArbyOA8e-q{GXwzyp4MK@c~}!Ctl1bda?Q;Z z?m47EjC``9tQpi)Tr!g~&nB*p%l-jqEbR`xjUq*b_Mff4je5b3_m0Mkxx*q83Uuxf z)2d4%Q(3s>?|)TAjScc7m<_R!i$!}!0x#%yG9f*aPcp`O-*OWkR0o~$xbGq0=jEIR z=!}B$x4N44!8#vk8tGm2Hqkk0+X7#K7nFIgoXENo#cc>`ABU=I z);7WU5gNl931hkC^{7nbHm>>pN~v2FIN`i+fr#x1>S2j{yhaRLmln^wD3V#*f%bh82tzD%6gqb?RQZ{;^|Sn-xKzT{y>Z%i zdbUg%9$y9SZ+W>RBY5$RI!#9WQ~DkRR4w=F%0?w(KAba4;4(61Sydk!`y>BxMxM~K zbcM&2yMzofcEci|w1(NaGX9gNUi^d(O;``FmG zo0BHjgUf5(U7dXx;>Mlhp3UmKrg#&m!F-PDrEg-EpQ$rtTys;%pmh;52?$*nq z4x$%P8otS8N-?awQ6MDcJ)K48KYk;doWn3N&D;LIT9vP3_CX|&x!Fyk@4zH(g~?wE z9kE{Ur^IH4zHZE_VSy^{lNS|#BE%KTky<8+jJ$$Ztd*vb{M31$&+=J;`)u0i^2~bJ zT5s5x_=UThi^Eu>$Ju1g#XPzf#5`~KxiPIQ_Ye}2Ac_e{pdS_dx+G+`?MUrwIOdD9 zPLe^PGPybRtWvP|nax|%qRl{$KmDt2@SpZI_R1u@p8WJb%)au9;UdKMd8`m!b(=>G zrVAS4^qeRJ8o4{m!q~A^So$Y!Z)fpZ5`EZ5L!uyEf1P>*?@qaB(J@lE8Q6^4vSF*I zqyIQCDny<2ZdKQ{5X&RiE>BOj%CLA?LoD#M^3y@qPg4hpiw%)DX_>W`6~lE`k4F0+ zRK3%XZPK$y?X8(`yR{xcWVq7bKjdL?-S?;itK8VS7ilWLJ#Cv_RMYj&%E>RsZu&P{ zxyr@+1pYH#N6s7bSx#`D+E3~x} zt&!O9d#2Sb`Ip+T$A#?N@sW}0XU|Eq;kPW}PeV?&&|$1!|1OVYy?@n?=>gd9iPgIr z5^_FCAl)Q2Z{qQq5+x{HGfaxN_edteOPWwPK7H=a`iWeE)w6t*j|z>`@=I4u z{yQdI^3vLdTv1#k5qlY^Oy0URMclc5alI(1fIilx<5HG<7P7K=qJ(kF$uKjg}BJ4B=GVVtAGt#W|J-1rPWskPqj zw5<)pUj|w_kKRKO%z7U1ie7ALPa^am02mY10UJ=o3WIPb%qZu2Ym4V^sDqw^imNlV z8SVqws}hjGNfwc@NJv@XGU~RZVFB+5f!ihy*G4TTyR#%XaCppHnIx1;2K}|`r=5U+ zt3&Cj=q=yOhG<^=2Ls)MbO-VDO7`q$KT{1AU&UHr za@J7=nR`vI>isO{C|)X~_w@)#WF;$QJv}{c3&0hO4U}7h!~NNjYtyR}WKpSJ<03t0 z5ztdj4Zzl-X-s2TWaLJfD(cOpxFi1Z8~Dijw;AjNYLersJz3_eO6#-l^l^%5BYayu z^d91&;wIilH73z8DueNFo>V=T-#HsHy{29k86{eTh?+(HF49|lcpbKo9)Dup0}jJ7 zRy?EmFIpV_di~9HtnN7jE#+A_exXQYOKM#G=gZqyRNJ9(Y>Eui$^5C zZ!?19mQPmETP7yb5ND+qxpYU1_wq-8li<#;V- z-%G&T^2VATv($ik)&f+ko$Xd)PcWq2VGu_g=+nJM|8RI6Ut=h!L-6^_MX%HHl03lg zVTrFPI!Yw+QtgxdMl%&JdRhM$E@`-~4TB*Z7`X{NKPACl1DCNTL_#K>&;ZMio6yT3 z2pw;rGkq8+Ej^fi)b4BC!LYjkYs?S>y@UjCN4E9_-0wxco8vPHPXI6-JCW2cV$Ec} z>R5ivEwm>;uFURJy>(~e z`|vKM&H2Un)0gTw$L36k3VjZeybm51ddsV|I{r#kCJJsywz(_B= za`G8K&0Vx5f0Xt1?CxRZsY)~8HW>lu#^6xFh5%TXcpYM0`J$>ZJB z){=ZX=Y2`w2-*6^pc^hLYAyiJ8#Useh>=8>Y`{WU@Fr!s-;QyHowo_CK?b75>!puq zeH*49S&1GJNMFF=YoO~$?D|9lezPGybZ^>ra0i}3lk{ehN^7k8Sy50xLk8C;wmu0q zN}EW=EhS6eV~b;5GZ@i%?QYElMd*_=S_#=X2UBN(0X7B)L4+Z)?S2AO6B>n8<=6S? z&?N&{L7_^HA#TaHGOU*_+6%Y%*w}|ILgdazK~2?Qs_Tt~A7yl>KB1S|V4}^2aa0V4 zHny>i><3vfT1BiK3=y&ziLP4(1T^z;$-4kL3?IBciz$Z7qN0`~ygaFQMF}+OqNHVV2si#_s<$hH!0OE!YGpVRv zeqdM-eO-wqfNkEDx)J$;QN(g3yE>A1^La$Y@)r36t@DHhUXQrrr0B5`fYZog+obO- zy<((qt^-<)zBx5HBU@e3ALsdQY#I}5&tt#qENlPh^%k8>_ZJbV&Hsk zCQS$HrtU=I8jP}B2NcfoAVmAw^CS0ZbIAw)i?z25YBTJ@bpy0Wu|jdDP+W>T)UZ;Z z#hv03+&#r9E(MC0;uS?0&VkiZo8y7R5`R8EWku6r#wZ6xwT$rD6Q8I3%4>JPo_by zI?Tr^TcT&L2$YC>JAEtx0PM%zDgdm6#p|9CwMPiffe8$i*K~;$94LEbdBc%F zxaOd=UWZNX`(p|{{p7W3AoJ#Vob78AHB*bQOwi)_xoZ~@q-=<5A$M? zqOeNYoZbSwMoqv67tx$7Iyzb6uEZc2+xdAZv6sK7i9_8M&M_OloDMIh* z)Nbvo=>T2o^e`b8T!NYRUYP(~7IIuarp3sL8E;Wux{=8H!TgQI836~iV3HW6byAWD7nWW{2Kk7 zBB|^>5(Y#0GQ$@_uvAGPt|xNUQp4V~ZXoG18uB=<_3@XlkyO zgPI5!9G(C=KjT9v5o_k32C&3C3XFSG_NE@%go^_x3*U zPE7JDeZ*Xt{{hVXFPHHmZ~IfLcpNvO=6eC}ZtgOow+=bxOYE(wXW1x^bcvMs=hbzbBCS*0;v?#Wg@ESlpczv~Jyg|FGAWv)#5$-OC~IFq3&OqLC>ii4-I z7wT{IJM6dp9+`LKl|Cx<_=6S*`7AP`q3FNhPPS*V()gb*mV1j}IJ_*Tj0xByr%*i2 z41Gs#W}of4!noEu^K?U15`eW-HphB?8BDT8njt8mpvaO9uH69Ajobhaw z>7^Zd3~W!x5adPa-fD-v{S0kK&@|D^QvMym@*O-Yf;)wEU)OvAnoIwWsYYA%9tkN%4BlDYou%BfmYWDktvUYSjm@t&c* zTM{U+xt608;D0tv^&^^QK$bYXz!I095v~{@=@_d6?(Qj)SB{6Pa`k^|F7W^3C;!LL z5qkfzA*&|Ff?<_p(1)4VYljrwB{DKmwz|a5rPN1LV5_8 zVA>VYsAsK+_d_oh7YIZ>g(BF#=UMAoFs-?0DJjVTGk-&gw}DQVE6O{2^`cX>Lns># z9%CuVBcV}Qi0<}5P!9=Ta8QqAKrqDdcyJ|;lH%I_o{6HLOD~=OVIoAC8j9S>Fi8Ja zsocx%Jv!x~ilsNg2?u*3h{H@*Uon@S6|L#1w?r1D5s#sG%Shu~vR%~}{ZL`Na-4$%wQpE!UnPz<@}{NblnU<)13c*d;6G|B5^D>-4@>82BMKViLQ|H6dtENg3a z0DamDdnUD=k=9(RM09$iyUuEZ?1>$rg!`DDcJ$Y){^gyZdqU($PcKMEC zWB}p!E7LOVhA7p+l$f|@G_pcUY_!K_BKI%H+)|NAC)YLJ>Ayxb-d`v<(IKC2!te$$ zSbz!95GIJr&!&_ZGWO|09VWn-T#}Q1`CCNUZ~NZ77y4YKEI^(1&kHj+ObfRi8 zg;z$xO4kNm?=*v8&KqLj3Fs2$T93@6van&|8ZY7uym##efZvu9^AH&smRjXKcysIl8~#V#r6$5dl+Tr7x$?EDR!O_if{AFcMRXh zO&ZUF1u^}SWhRyXx@-Jj24w#SIWOK9zjn+FApvG`(v0Y{=g3`Cbt^kwsVAD!YG?-2 z!j;2#@4pwFzc&2XCds~)WY%=6WC@Nfhg>L3KFA2D9bKL-W7r}L#pfcMV9mm+!X(Kf z=_Oe$CThHb@mls`n8L(4SX#e1x{9$HSQS**#wd5c_~Rddl^w1it7js7Mswhv)L)Iq z#_qG%=BQlwD}72(#0CGbZ_4rAo_!I0&!Wi)_f5Y_&s0?bxf=m()kjml$4ViFAKXLF zCV46GYfjOIRFnP;7uy=cm~A0W%IU4f5RQviIia}$H5(UdzjhF+%fqiyF~$ zsuVaeybG@P)hDiry*>ga6Lb6OI5hhR(TeRSc8S_JL|n~Zr}p^xLx!o=;W@*`paY!$ z5*}}K+dm|*q#kdFfPrKy7r=QIi$6_GbyLBdhzQV786ssXrO;6d^G|`TANPVRAS&JT zNAn8rAf=Lb#>V;wwCW{&NX(Af{;9}?$)a(*8wO`ppsOHq0>bxu=LdWrJAHnxu66p6 zz@?Plx4?Rg5W}|uKYg3j+LK%x02^%fVYSUNJ*Ba!Eux>5^Sz;AbUbZ|xujpzZ|aWv z=udB;ABV3M?@Z6EDW;{Vb#g7AyRt9jUkU=yJ|g=f}_cMRS;DP|H-<~RcI2uI46LC6xL zp^G=SYV6!1eZqYfC?H^qvy5F|oI}()*KDt`tJo-z855~fE`Xy?Juza=SW?JDYKxho zInKeSw6WOr9xN(_@-p=AfV|QgzLpFXwkY*?lsL=mw6LYNoWt=0dFBBNy*^<%jRhJo zQ0&*%8s#RcyW*CaKLa#o6Yq)+)<(^IK)!OeM#QI>)*h66Wpl!yNY{a#1>XI|Uxidk7V{)!9os@(keLx0o;(KRm*q3oKO zs*x~DGI}WPl)Z-glR2#5*6QG{sVKE3xx?ZiQ$~$FP7r|{bl}l!K4_&)+x+8H@v1%M zT|ga|kP~vO0*^$s9$>Y#k|uV=mv-yU=UGFXB)ro;YK0UUVv^5Z;BITmCOyq{{k8ui z=g`W{tHL9+T&7**-rG^TNM-qW(o1k|Eyrrw0;D}iwH4=GqWs*4F47-j7hNYqY);-_ zj+fHUyXL&BS4TN|vNpNWe$@6=(eoc6XUTfB8TT`0b%b zZq3{`cd?d?sxeRwz5nCy5O4e%8^y%YM#oWwrR4Rt1HT$|Dm1b1-lkT2v&7RO;Rap? z4nk*{R?bIug?PVXCx4$#U zJPGcd+|zv)CU>(%>n6>TBxM}kVX{EaHZQLABXi$(0M&Izx|SF*H3Ev|vBx{YZ&_qeb+SYIg=`D)u;15rn%7ncrpA@&o~`54->b{7 zANMtVqdMnY)9p-kv(lTH&W&Q#@B21FCgpxqvUw@{~{V!qSca9WJfi$BZH!2zP8b^Jfq_>_Qm)EN8!ftrE;^AHg5iC^nFxJd} zPR>6p5_w-+U-&S}<@al!`0J-?7nB}$zRg%D z@IEpu(J%?qlmjsAmr2%YzRlk|)(KW}Zflp>ArU&So8FyK7#h(49+EyjY;F-xdXYC+ zUVo)Wf5SzC2Y~zEU4dh=^Q5@AJyi?*Rp$z$I=$2i4?!d-wx13e2ex|t3GKVfey{sj zNJiuwX<)N|ulDAOL8pXOJ{g8V9VSX0zjQ=gCFNT2@=18h=Fhw~i48kfBJbF>N_*#1 zXh_^cFBmRXDJyJTy@Ah74~d=X8mR47FPtp~NTv$R=evTbaMKLzFBH9dK&Dp;Qj_j; z85|yaF882}6*@DTxyv3Bhnn)y@sc=7^9jSWf_ky3gq zg?_8OFy;jRuG97I!s>S|^;wuL30*ce3&Za=e*1Wj^qNa*hl(7&7XDeYRqg&1KJLva z>pp@FCXJ70<*MRw2T3X9)dXI;?j+fE}Z=l`adt|@i#IHcvU z_U5qVZLDDiC!SI%y)MVqymD7|QxZ*LYrb$(`Mc05K@cw z`F%VSi;^oJl6LSxWF}DQCF%`u{zvqaCBM?hp>NTO$C0(KJzw!qXf1BKVu+X zw*}Bn{cd82@uzt^2R+?qO8Pt@mdhGtm>Z2W{I*+ORs#D`L1l#><9=Pf2+ z_#a!zKY?6*0mVJMm_~=8JPv^ZkhY~MtqXmh2Tl~L5Tjqr<~px$nZTDN%12qlc}HcH zF}ryB??p`oPa19?&+d}2hOJKn?tk3IySZV_Fd@P3a{2={V;dX05X5l!P^;w(cF4J5 z-vMDzDEL^F|G&W@98S&YwfgqzUha7*fiIBRsV=NU1W=A!Y7)3gA=+O;3an0 zT!7upcxb3rW&C3_g8Sa~Vel#8OERvT`%Rb;=7pWmsb0P*9%)0_ohQHSHZD7N&V@m? z(zxJ1A}Q@idK@yAFODn(QWZki9Zh9ThF_@cyyY!-QQDfshWpb%yH`prcvQ7Yh^cbe zyLW=RIeEtG+^$>OUU1f)wmkUC*51EDI{aAvcF*7Vh=I1&MG0#sc!@1vSn3M=e9;`!WP=ai)K{Z z!m_8DAI>i6L^8{)3<=vktdD|>P6oCSk_7=|9T;mfqSNZzcFAZqW<05-;2=cW{5YS+ z;M!n$t!@201Lsk&n%!l!H-f=$nI!+!Ba5#9v@G32*BodoQ-PHK1eM@9EM0OD<|Efs zEk2ItR3$oCVE$d7vli4R(0B|q&PgIcuJ7k*IM;whw_=p!Ptw@;_hwil{7zfCOh5E6 z(i}g&DTMRa_)0qWX~BnHhuPprp`P(uWG8Cg%?P(pZXu0Q8_fvwz=OyuW}(9#B5&S;D|d1^rPt{64Tl1pE8tYQ#^e>dHTtc>bob=% zPKASmm4YGp|tDqnu>QEk;vnMD~z&k3ms z0H3D7Ol1ZY2rr$*$ERg%cXFT;i|eKL zIf)l0Vv5iY2d?-;da|dQnwvY!$=JRPE>nBTDRtY~Ab2izmsjg2qFNW&XH`Y`&7{-e z@%&c{)9@&5zAt&pQoUO+25XcrLJ<0RBd>7ek&#y>P=MS4HPtaLLL6>ym9Zl1cZMR|N8_f+L)ouTqBDZN_gJxy3^b=}x(#BvV{uXhn z7CVN$&6XbiSIpU@a0rwt_vaCa_(+{}k|++yo&sY)9h7)r%^1PJTlrMFtzibH9yNQ| zB+5=tg<>CGET9RIx-HTN*KnquRx5%BJfn-ana~iXRBi6&RyFSzf0|~``xp(gVm<&f2Kizfw_^?)QqXIA2wTUw84m^(iGW#N;zT z5}d;c4=HmL^0p~oO;%y8!JHa8z#TO-X@C?LIilK*tbj)$Y~JWyW9Iz`n$=uIslSCL z>tLLi0=*^v+x3t^l#UnSeIUQmrj~xscSVYfLXbBNeyV@sR&L((fi@tlZAOwNKyAa` zx5~ftNS{iAY=_{H>ocM&jBV-t96}u&B}UA{Z~i`eV+H*&#c z`4%Pf{qgaz=St6;y;(~*I@PP-5%6pCZ1}Qc9dmuc#^*HNJ)u9oHf|aOu)?8W5T@li zY4_k)amP$MY<}?=lXo1V%X&ATbyNF=_nAK%8Ti%~t+T)$yS|D z+(m(it9E}PaEG)(egzI5BJ9HH4Vt{feN(ksGD6jkEStbxM{WDboc6NHktz^&`We_$6@nR8+d|soM<*;To5G##zYW0YZE*p+a{d^N3 zpro|k=4X&V7{B}qpHi=I&P4U{M?^x|{=)=oKb?zWv4$mKTw^;ptU;H4<7a>gXsLtX`XYTz+ydyB`Sup!QK-4hO60s&c zvl1YxBH`NrM#Q5;B@z`pDOig6 zQrCauR{rM>LV50cDup1w>1~mxY@WX?S+H9KHBz!W1l423ta>KYboijN%<`|U5`q-( zEr)+z^g?oUnmQpnRJ8pKMz|wwlvD9OKc~vs_tNBZ;kmwFx4UHSby2Hr{Bx=XrIR8F zL+)t_Z6n*JH29r>$JPg!9jxNzb&{Y1vWI|BqmDY>txAP}lS>nCYG=_OBjy37>j@l~ zerNoWOK&X(9`;z7jfW^Dap1^dc}-L7&8?X|su9EmE2phU`_=X-&I#y#S>2_y)jL}W zr}qI7>0D=A7_%CdUVQ!A;-Wy5y?^x;=L7DXij!MN`gp3#h!I9rDcfT&H8pdp55Gl( z=i!5P-y1!U{YJee-u(yoQxa|Y;fYOw)C|3Q;y-{93Wh{ro@ONt(>0oCarhmjaK^?8 z?oLeiz8=ZO(;=&4NjaXUyi=fBC{e@uCgoLpirL_2#_Nyum=qChUo^i{y`@JesHbg% zPVt~BFplXt-ih!h$v$0Oqa;7`ZuBjrT%04 zb6tYh3rG-YOed`kLSSji#nme;15#O)c5N%*yFVv|e>&Tc&%4JQy7I6Gb`%x;V)-Vc zp31GVfg6`&8el?{*mXR9*PpFx^=s{Zh1%=n=FeT#)^%06p9FNTYl}W7jU!96g*us= zhEPPMd=S)GGjrdxfwI<=(8>x9Dk^aPqMwQ~oyQ1Z&@31nByxa&>1|;NEZWU3<#GQX$KD zzwD?w=!!43Uv-9&SRnd2u`1;(Bl}}~Z=zyYeE5*TVm4KK`qpDhJ|A2u)S$6|N?bH_GmhC&H;&y>=bA(a9TJRX4LP_JP z=jZ|D=Jbq}MQvKCNSOcz+meQEi3|cZH&hj=J6aAnBUYU8chIMK5=Z$7Uydfvi2ISk zlZSb-1dXs7O`Yr8f)}Z~Lg}hn)t3o>&xM!tE_Ny)zk0bHZTFyls^SMTm@-JPc>IpWyp%jq3_1_M;>GJQIlb*KXjc5E}HP`(x7eYT#Zg6%U z-)%4qFKTh=ghcsa`on})&(~KODA(J3U~+QD7xAPq!d0B8Hua9_WRsj}ltmd|z^mw)u!Uz1mNszWR{#y2&n8(Qq=O1C!*q zjJLSqdPt+wdrckPCRmOAtSuFy88PSWMuEa!4P<%jRK+mce8mzB6&ZnwBSWS~=io82(#DoQLRXnE+`?@j}|8-=`25e z`9QouxiF$FeuV9|TDLu6au6ha@bkMS`FLlTNT|kEEoq6TrBH3LzrQnhCm_pAQIkM- zF}`-C{>|OXC7+tLZ--}1%Sdf?>eS(gs~JbwnGVR>nBifQ&+8J}#oX`P{BrEcK!-n# zQ{oQ8LYu0^4s33}C8C7D)(a-quH1~Y+fJ;3#uO*Ls}Ed?elbq+op#7yGcJVrA@L4M z{Dz|?W9_BA$u=DyAG?n;L+UgR#RM!Mn<#w4F6*(!<8k(xH!t6*8+12dyb#7)2 zx=6=wRe+U{KX=*YRcQBIM8ZP$>%lA;eQNa=F@Q@(g)Fc(vV{*Jkn#I-!DW1y$OuMV zK=;5L4P(CY6>WKt!qlqEsE%PmwD4pB8sj=R#6PFc$x*fCt2|DAjki?sqNb#G=6mJq zT}|d~L+WSK+q?M;GFCuVma=Baa^ec%H;G=T(j`n|N@SIl2cS-J;5gg36B1FH)Y(b^6S6VKDvXp=Hg z=UCtaPc(t1ja>8z0!kkkZHSM^JACxgMWNwxJM6XW4&70ojLxpB_Shulp{K!vD8@d# zB>VEeXOh85FgtD7|Mf$fEvxq$BS`uOFzrdE%wfoRMLX>{5{oa-u`pwPnSlqFtR8gv z16%6h8?IW)xd3I|xjbHpm!sZsQD)r=Z@kF>4%^5 z;Lk44XAX7sK7y4?S$%0t%kH(Ku>VA+wo|6Dbq_;fPZeJhXSVu;T2Fhi9! z-(UcXoPhbpf12Xgep!vTJ~K{`dT`N9@dz-WCSaB;Rn4zgUMF^kd6WE0RQjT zTYApwh>pHj;c+I4_i|>8USl>_-^DnyeSzZ4B5_!nCfa6cKPgB|BA*s65WW4Nx1rcp z*QD}-#oFb=eoKi7!aOc@W5DL828Ue|J%RG-o`Bn%{AE~Iz^~z4BFmp%7Cc**l!pub zI-eRcxBLakOFm73MRqXzw)!_lJp)~!dwD~rLOPoh$diu^lT^>nGbH=3W$6%qmn95M zMS7)wSP0`^6}|Kto{#xF4s$r^yr;Vxfl-weslo?_F=?xF#2QC*`7qlWj_WydJOjgC zC+{^|+!WHGYU>hG0z79Em+LM(xd7MsPR0D+) zB^|6_@YSiH8qDDw9r^JkU}JnRkRKDhLntqO3f-mx5jTbk+|H)Xc-tO7AX8>^{u~IO zZ$I3htiAU5Xuw-VV_j!y?M@VLdR8L~JY)EuD-6y_n5*}|%$^0dr7ZY@ z4Ut)rzy@UV?KNS-X7FGg1jh{4v&FL zPJ#r6sD0)oWHePitQLa!USWd$!w$}w&pX%6W*l0+p`y9*5rmjElcP*WHogVQrqrB$ zN|Q;S_4S@%7F5U!zNU+?Q4-dy?=~J>EYdP?Owsb0FFL(o|Gjd3#_dvrwNY)uL;4DU zLTEX7@=2TSu6aC4A)2jQ?Fcyu6Io5XvRo*O)_Rwm#Tcan#$m_C`fDOPHvx2D2eYy3 zliW9Z-zLf0WuKI(>v%LzRWU_L(DO0!Xao)mI~|}nt5kt}*%|q9qID+9`^Ni32$$XH zAh0YZDqrqtXhPAI)>oK2q}D9u3FJ9yDXIS&;<9A_+RMq9D1}FhR}&-!oxw3f5`LIP zng4K%tF|{fr%F6xKhNfkd6LDyuRdv&LWnIjK%xXZ`1@z>lP?rZvC+Vl3Y77+hnZHE zlmx-jkop}_g&NL!rDr`8MVEHlev>9g8XAFJAs3f)v0UJf7ybX=LfEJm?kQt>4*QLF}*7QrR-XJsedIgbLlaMP3?%~`6cDEoT`|8fAhGyJYkI%= z3WX~Qfto$tbC!J!1hMyUctNkPyc*}7_?HX?1Qt3Yf@YO4=D>YqMH#?!+PhMJ!Oj<+cN#%YR%jeLvV>91arlkT(t4fb`DTn=^a-b)b zvzdfjg;Tag;Ed`!-oEyC8P@hoikAnQsQJ1jp}3mNWE z*>%2tv_Z4b7&Do3D!=UXhbPuZ$y%$I+=pt~O+Ni_;~6q*i!`Qvs^r%ZRfB^x-^-&G zEk1J_pw2IP)+nyrqz&vzUzgQ1i0D56eUR7O)oRr`N3VE&*_1*i(6gSA^Il0pkjT(b z-=1|CBQV)(%P^+d=Hy9R!psGhz3UOV=1Y=H|KMbyByD_mW%n&eF!sg_!DhT6nEANf z#rq>R4KA*{b~wiS%l2c&@oqqAR1vwP8$U&m=z z->SM|$etj_-B(!V| z3y&+KwgYFZ2Z7t*tsnFo2gM}NAhrY5jWtJ4N7}@TnY%*+_&z37Ncq;~~j@HY^Akf+j!tF$U+s zIi4v=oV;bL+`Dt&L6^jKQk1MEVx|yT_XfLC)zv3uHFX^D;=?QKVyk8k;$S7i?e+>h zx+@b@Z93}gib+8f!yzx>35x5=X~~EVLqgExq||lP^~MH2Uem2n+ogPLcEdNp_M73T z@8pGFD9_vYdrdJo21K-4xml7>g!gSI`ODoQ%-#FoHQfQ*NWoBT8BXS^HdKEQmIX%zJJO6whd*mVgE(?7WPjr6;{@KY1=NCMw@tS#hY;N1o z@Fs>oPE7`P2Yb$Wcw-=YR=PXi+Gaf-;1R%V@@&e@2$H}=ibS-gu)U4KM>5>V?k}}2 z+JCB=LHO$1i7QaX4{2TNaE=|MLkbV>Kqvcfk-qj~{Q>Qcg}*!BB=Zl+p^8rD7~eCe zY>K%t(sO``tS*u*YDp#%AKzbidCPN#xg^AC2znfqB4L6{RJhn;7k;-db`>4niJ305 zXnZ(+`BG`sb7mbc-+g4M%LLb5t438qL&(U!XR9Cy5v2jgbe{Y*TyC5TjEv=@O99u- zUkTXkg?_9l{}_>L*DJd&$q-(RUeKQ+fN}5Ra@9WBf2e+WLi*^k%4g+jbVAivbPH8Y z6ybZEG8O#6FPw~`kftht?fmEuO_0{wos^(c3_bq-kKP?fcF=2N*ETc27&N#r4k6Li zlH9h#@s+aOel^nVIppah&)N7(eY!JQSargEE!A=I?z*7jo#FzwCm|8d8gH%4&dcW= z3XSfRR^v6Gw~0F3%7FzEK|07DI9LzfTvF}Vy`rx9{;Qs$vwC?O!&59WseOn2Ra)>^ zPf`I{2oZ9iUs0ZN`5;>sx~1qYHkGvew?8S5N>G3kAU~hUCwc2P6|&@))@MevB$|_h z?{$npM3|Y)(ZD?OH5IXbi6r;NqQJ7}k>&+3HN4_<8W_!&@n8TDHQ033Da=cqCiD z^yZhd6VwZ+r2JI*;f$~*(^fC_#?fnrr@Endzab6!e+@6XsRck+q-y7Od$J;^pb>OG z589sVXY6gmQU8AkC6LYknL~Ztt6(#8%W6i83B>;a9t2v!p#N6%{ipaN!TF!O!)+l8 zMk)(p4_Kqq6RIQVcji{+3$Fi5Y}<%jFV0ibpQEwc3A5;((KB}h+>&a*CxdK7*%&bs znomwnIt4SdsD#i*{{UB2%bj9yOi8Wnoj5nH`t@VTU%Zr!t{xR6XZbsf&B7r#T;rml z;nd^ADoJs*EvfF&Z@kF>*T|jz(=og{Xh)t*Klx}?J4-Lf&+az%ZsZ;EQ`uWlhy9Yj zpK|Q~uu7gxSKSr#ceyGd1^IW3ovR}X+sqYq9&j~}Uon##BDHjT4Sw%jj{E}{KupU} zQcHqQ+Kp{xVSuM)2$m-g__H885Sg%&i?h?`uXXMe@5aZax1+=hKyzJ>f@pfen0e?Q z@yGv7&sG{K!>T_K=EAwCoZq&s;##GNV%?D2=e*oM%s#p7iPT55Mq>*HG^AD_(}~>C z?&g69AiOL3;2Z73x;4g4u5Tm?TX+CWGwCR4fN(WK;+f*({NF`RdR63~y_h?+JOWca z{~ln$v4f-+s>c#gUuB{a&R+%-0zm2Z1Ka9v$bDtMd?qT6fH4(02Sca_66mN6{$??x zWYG$xT=KX61MsXf6J9 z3Xv;f*9G{-nGn{{9RL@PbFIM_Jg4#_Rd6AiB8X$w8x+w^yddtcZE_&(RXZADYuBPA z*A;yHzcn&%X|62kfg&@6MkmknY_X>bGSPCio_Ckvyddr}lbP))ag_z;OQ84gE2;Co z8M&%6&}z~4ZcmgvmBX`FyAdmEjyfB3|0L`U1T8JOW&T3&DG_7L!{JsrYsYw zEVEPM6=Hvx7#Nu2ZHZ9n5$|<#Z_~h^^5|ym2z00sX_xSnKNrSmfUWb}03o`om{N9G zX@;#caVFo`B_J&ypLV~=9~5`?A<0>~VKn77_Doo14RD%v`ihBbg(5j2?NC~;T0%5s z!vrut`ip$rpwl@60F!AOa_@c-r`6KrcOoju=FR5VUr#w5{8GfMx#jxzFsnx&8`}iN zDE(0=Jmt^jekrfO+4-<`-cjHc1=j9c^Y+FVWzS;AI_V#{YN{I?t6wCAOt^=YaVSTQ zH_4lbrT2z;3G%f51XV!}t!i zM%<8(LZs?>1OgpJs6*$v#Y)X}Y*niU;`RQ~?rAX4ZO|{swL%~12 zl%qQU!JpT0^lN%{Fl4$DRg_!QQf8T}XIsD?U_H;SF7|62!FUbc?ItAcnpX%s|3L~C z10~24EpElw-$mBuxkY58WhiUOpRKl9^-W7LKm^?pTy1M<4gs;Dzh6{W2iFsiO5MfY zT4|}Aotf6!w&wlRw>)nfJ80dyWK^^su=+8^S9c^K2;l0F4>8DFtxpcd3jo}UXd=V6 z_+PUdI+cVOXpGgDsn(l#(<&yD4psHbvu_$WLOffdY!h4xzmGkWI79tO^n4P9BeiuZ z>u%<-UE#uC+!3d`Skj`CncmA9T>*&wTU{;d05wc309O4e`o8g6HcBNv#9;cgS4vAR z@FQMPkSGGTtU|H$z^Ilz!>|UX6#HTHQ_Q$T@OUS=Gz7C~Nqn}KZhddi6a(g(i%J#` z#?BYQh=K>r=zm`wqSv1|_(&v`PA|>LDhi(!Crotdz!KYV8yZdZhX+Q0xS=nmI>oVe zdzyi%*JI?l(&_qM#D7SB+~GdW5rxM@cOZ7bX2E>&z39qz1e8}Uam*36h;L*~mEsX6%VFL`or9We zl28rheRIlQ$fu)>8P zpYXK-GB58wd8b#C+6rJ$I#TA$C-w{Jx_^$8(T9#7p4i$*s-Av1^IxkLy4CaPfSQ`W zYv*?G=2QEkQ+1|YP%3oyz@6p?Gl_UKM4~n_`^J`Wh{!O zSUlyBWM{8=Zk_a|zR6GFYY!$oH6tW`fli@By)RkcTIcy9L;guc))(A;Dlg2gx5mHN z!2F%2*eVKT{Jh)*<=@%dO7#!m(w5vh!IwCdycU9aM|ye|9c6#;Fgywfo+@_gfBRGh zy78mjGV#e7AerhCq0@l3n-9?;)P8Dj9;$*!p`;|H zk@r%I7Xat`h-_1+Zy(KiHadpuzn514z&RoENG`vTPw;+?UZYhEFhMkEC{AH{+h9r{erC8 zkQ3Q~Wkf>sNrc3&muc^(iXMl+7i$EXGH0K_a2X>G#e+~%_O|v)5@|9D#YQcgkG>i5 z2(cOtxHz4wtL>UMQri$9AFjLN3LSvsTRedJo4@w%#D88AubjQL&b9WO3Gy^qD5~g4 zRggf-^NieUqZC#jPKhosmu7C@Ox{i1S_Z>s&a)da`{MN{m1iJf{XM z>G;z5E=BD!H%rX=QYSkkQF#z7yt!Bt}j~=-SteIILlyyG{`{Sza3z@7~p7lG~y(*xgE& z`Jw{t3`zuxDOgE>-=6YLEYB32bj{!)3la1Kpr`1kecQm8GmRDpBH!nRWJcl{v*JB7 zoy~iX{sBlu3ka@qT**+(ahg&RbXKzDxKab`Qx_xwG^??2el_);dBJS@UMv5U!ITQj z?6bVjcyz9d{v&3`HKeCQb&zO#>*AHa9!z;5x43!fL{%r{eN-QoDjse}{lu}Cosx0S z(8|(%k~aT0w=+uCP9xyoHi+YFdcLBQHPgnLz8K3sink78$m#A&K$KSQZ86&bxvCYn z-MKKIT<#{D8`L0Q7Y7+wFD^QX@{HJ~NqDUrNfyPvoJ`|*8$LeXHj0V76T_PUd&P^- z18*%LqGgjATgCMfdS#moLu*hcnF-G8B-B;7JcRYSX#bd@*5S5 z2`E?2n@)qfIRA!_+?PGr`+h{u3|v#K+NdqI|LOJ5QDUy&ZO1V}6CfsiSHfQ0i`I1M z23WZS1Oumrs~#_(|9!5iA)QX&W0c(wT_P;sZA!4Raa-eJlusWTrhM7fjrZqbwI;h| zb8UCX+Q8v=1%YJPnI=Ts8 zdGN72e+~>ctgbrQ@F&7B{u0d?Su0;Z@!j72imec(9)V%owmsLdz8$~F$7)0mOX)dt z<7W>YFG9+8ZmFXe%Wbs=`?}0Mr%>+`U7oCzYZUED9$!*UI+h!2#9wiZaGq0kc}wM_ zdgkUXkrdD7Nm6)^Id_O$cut3eGuMRlWau`NE{{7*XilP2CyKau+=6Mxt)48?$X?bO zT>)(ImfF)5xM$$mdsoCItH)+%BsUn0U)4Jg&%B8AQI;LDKAHpNAV|T6-~0YMsOkpn zb8<$qlPq8Zm*u#j^kMSRuUC^ru{WtTidvh4bi2xscYZeO+%XDxYDY!*^nmgnvm}6 zGy?BqVjJH-NcL7(2#wj+zc2ij!Oryh_G`ss$hSxCd6ja!ztU~q=l&=P{vf3DA_h$K zwt)XB}b zlrCB`kDp5))<(OI2D4?`Ruv+nH9KEd7~kTz60@4FkwULdhux%?$_9t@&{J#mEq5sY zJiNOeEAtXJOe6$jm=gR4&;VUFgSZg!-;fQQEe{Hqtdr~_cvAm;(Z1f}`ZhJvd1Bpl z8*96B`lRhNJcSC(3~tXnG?oTzB*MVo)m+))8JZSvhk)He)ot8q-O@&XFyOHWO_SpJ zmIUSURPYuZ@eUOgWYGIc>9Ez4mD4Eb?q7lrKxhJ{Pz5_u@-HV_NGNKz0Rz7xKb1%X z-rlDEKdilXFkBBD_Pa=wXhHO{5`w7Fdr3qOqIV)%wCKGPoz;S|k9Y1LXE3wO8pk>3`+c70^I)wEsJ|hVdOH2od0AD3z`yPhFnM*o ze)YA(N|Lw~op&?(jCa@dQIK}TWBs*PHj{)vVbxtU5I-&O{PjO28Uy6@to{ea^lWZ` zHlRV+%S{TUu8>u=N$n*djHr9>v!V*Hu+x80Z&FkaBSmJCjOOo*$@Vkt=lx}?1sp|Y z@+_FkEk5+g8E5fo_at8dH)F`fVXRCNJ>JFEv+8Qn&d;_Sj37Uo&Qy$@%L=a#^L(+I z@$t?)n1EePxVU|UF8!3brYk5Ha#qFd@;i+#$CnNXAMv5OMvW?zZ z9I${Aps#NSD|D{Ft@5t4+7qiN34R>+f`G`E-x0JTmUR*gp{nSfF^!#6Msrw8u+9LH zGs5{Ko!apSUboWL@V`@+0kvXke+a&ut&a`IJI>Ktg&40AZltf3*&7>?+5{wQI1$kC zZpPqKpS;g+eKw)$9U_PDKq*~Ukp3Jv26N7ztxRDC9i_msQ z-LfL2(ii&{Y7;-dZ}_NbRdJF55b(l$ZaADRe&Tum0gtvz-qazfrKcP?*QP84$rIOA z=LbY_Kcn}*s>=O){G0uQSGk!j%sZ>@I2`YjA!Ez8_;p?GbsDRX6BCsOt_jJyR>Ax- za`$hrAv~Dji6Q;kx+*<*PBWa;l)HIEU4u3li*hh zVwzKfS%2pL0Jm7)N84Rm$Db&io9x>rk&ak?>n?CFW-b#ifDMHQ-OxD9)Zx4XzmlW4 zd=j`i03S5VABid6TD=8Zg~l-%y|}C4+MwxH_L@<}AtvyH*^XF!)Mx!yQU0L_L}Lzt>YtQNjUZKi`~-7s;RUP_5METUZDy4t+e)J?y>Hypw~`|x$5NM@yVE2tlI zep$&h%dfy${_>BOom}STGK71?$FkhX)GU9=T0^Rw6E9&TuphtaZO*AMC@BUx+ggFk zraQU9_6N|q)Rb6;?VYi(rrk&{y$lm|Y%L{(3dPN^u8hXyZwxl>18~>{B18Ti8hifqiAs-1%{V@5wTd()B7RA zKpwU8O43aP(`X2nz!|3!!ojB$i=X?avEHDPKOsh@p)8)vuaZuVm`TM4MOj(gVLsbJ zaubEam43EN|Hm`Jk}VByt$ucQiyqJW6jL6(&F0zVW4>VS>X?r={|(9{PSd?`kiTSc z;9dk!Dm6EsT@Zf%2RhSyp#BFk!vuoU`D$<|Jja*$zYg8C)q4uQjz?BVpriw^tpxp> z`d<(#&CAFHEh*6y7#3gL$*OXH3|OIf*k|>{D>{yQIbETS%y#puD%d`IbQBsx7(4I; zl`M+Zqos(Kh*&vRTpNY5bJ8-4J|p>Yi72G2LpUqo%#>fd@ydnLwtpkc_x1m@2wOjS zm;kg%%e&8|fR7c(iV{X@MBCfoWD=KtZ3I~*o)}9%Hofj?bulN1>h$dqkK;cA6Wg~Q z$ztNRkgd@`Kr71!-IW|qYwQ;!zP%e$ylQ=)OO^R9dI#k&L5Bs>$zl(Gwt*VkAE8!i z(;v~tWxJ2oY>oX59ZZgw&wAgeF39Oa$95nYzWSn_+4J~nS*AV1$vVGaCzj*8Pqrg^ z{q~d6IQBJ&?RNEqMJ`U$*2g!JJwXoxl}-OZUoa?inc z_#IFCco6|jNwbYxmR&}m${rG3K ziSH+*n4rg5;$*aiPq?+g&KLdn-+??t7gPBG7()Vco>BV>ecS(U5SeQ{Y!r(@*s^~O zOaBI=9}M<&ZJrq^&zjypl}8Sp4H&idF}|hQ1jSfo!oh?vD2TsSxL|%^gTeg!tMk}i` zkfoHpRBKbkBe(XAcgc)u$v^OR&w9nD76I8F8;~$-1gC{Fnq#cAP7b+x_WdTN&2Sc+ z%5<46OgS?e36&~y=DtpqNKWRoEuQg#np~DBJF6*xrQemUL@daEQ``7KW9N_QV+N6N z&^5Fnf9q9$u0T_Tmnls9R`#tAeAL_W7k_DKUN2toyDb{;xINLtoo-SmiJi&P06e*x= zsf8L}bYWvb<5K;JDJsWMWkJ_N1Mj!pn4hZ({$NMc_zfoY55!cay6I_#Z9#NG{~6-- zz~%wABF9Eqr5SL2U-*%_=4VuK;4YZ>>g(y!;y_^J^~YH9Ds=&T2cXnAh@Tj59SPT(|Gj^F;ijJTcnILI(Tj&f=u2RY_4}n@+`; zN1b5_ie%Lax@**C+l?mnFhoqgV9nPxN8pdTbaql6nDDInzU!E(u#DZ-A(9_l4(bx; zhECS}pykUH^otw5`JG#=Cwx?a*yDi0ZW_M%Z6!d|M63=B>i>agC*+wH9WNHJHhWN7 zx4-gzHKvXm+t2A2A3R^HZf8sUZsSshueGX)XZ5G&nSX{hJ9<+wM5G(GsYaK7|DMV# zw|WJo<+IK^+iq}lYFL!a^2SU?Qp-)hC_~rvi19xRg3rCBp?Wy1ogx14RCQ!m1!!xw z|8+oYpcun!E)f*@iEX@V(?-??k!*rp{_76Ic0*KYQ4P<7pp3`42Oqv~^XB-(JWT#~ zmI?h+v+3t@;s-mlyuBJsvuVRcV}EI~2?NxOjN+m;I;c4SZO417C^nL&l0tI5&rbqO z4OA|8K|*wneV368075Nvtk`R$>AElJ02TG)?k_S!9-tj?>D!%f&^ZGkF3#bV+Jmdn zS02Ao>wxM>0LANX)@?#33Fuq?LH}`h!Jq&CN+ouet19~-^j;Y_?}lpr&4B1a&=BAR z%nmny_JBclWa?w|T_GxQ&?Kt)lZG=djk=)2TPvEY9DGS^PhO*h1dEmgq6C*Kt2uI^ z&EUelKA+jx(|ctScKC;76*+>_DO%L)XqdDVpunFxLsH$Lj9!#{2n5b9O(a>YZk8dyvs@ z{(hB^I#n5vjzIl(!_R4`I$Cl4%eA0ejiMaFkdC#Si0IQKY1SO@jr`iK4IAZFA0a~czm4=uepkR0+CMd7gu&j5 zZnTTtGwl2W5$&gbk_xD)!z~)PUu1IY-ss?3{k6&U)bNeH+539nEk~wz0uyS#box5KB(d+S1YIR7dm`~!9J77|#S64< z&n&Tk9A7E8*b6tG(z=N}mMyPugef}y*QTAIc zKRlMq$Uw>9z@nDrq;cqVq||3j1xyWK4v6bcD~zRy5d`P%_s$^@MsnYeVRnZ-J?NOcS$5vQXJIPmYuQi(LRtrNW2g_=UcF|BQ z!AbKEB&b&dxIGi*p+if*oD$BG2PlLeip6|3gjSVmMP$bH#5Owy?F5z!i)m}5=yKON z9J<@7$)9&N=a46+y*3Dt2_!>3?;d8h$o*N6G-R=u#f6=x-T8BDEEqe_5TeQ zAfGN@ML)4{ubnghFnFtJ1$AUwN!eS!`NnDarR)U|k+oegF83^J@WPnY|KWj zJ~KO$_AEFL%?`6Rg}w9~A_p-u^P`jN1N*}of*5ArL#f6~K)nlZ+TZy5duBKa)ka2IOq zM*2t%Kd-yTURoHr*YIRy%wGzy{miolxQ98<8!0MxQv!i9^Z)ZeTn=V4psC#d16}Fw zvc)6SM9V>A5>~1=_+Il3_jxFjbitmE6$bH2i>@xPe)w2gaza-0+fD|E>W$WODVj_a zUvG=rOQ{Z?1d|sDd-blL>O0X6SyB$mg1MKh&dPR=DN{jctLedN_p3rx%MA|3+?kVV z%s;Cg}ci9WL;A}tcDsA1@fpI3m5m!?oZUn5@^BXDfh)oN%WhSzh#(d zVhD>5Qj`_1>`bPFBTV|ONl;VkMFG?uTnSI>Jv6C7J4%`3kY~oUgbVF63c}TIb`Mp z9U9X*Nuy^5hHnSe%ic+#E^lE9k*$(#W?ia@5TcioIc5$eb3IZy1z7he?)Xz_$8V(wh@&gu*jd6U9652Erp zpF0iHg-^E2rq^ew&J^X3mmF#yNqRN=Xt#&wE*;dY_FK@a9vjQXETl zmgz~l#xfS-y_+M{|7GpxW`(G$tt3%?ksz$isxOSDqcKGv63o^d%4#^gSXxnNp~%mw zmiYUKGxo@N?5b`2Bl{$weXq75{2C8~5?tvV04o|${g__5vzT$O#Fp0A>cR8Wnws&| z7P{xfh%6R!tm0Avr0mkaQuc?DY^||OSoV8=D~HjdkE&SwTrtP4N31)`uH(q(Wv^xJ zyXxaHJQzI0sKWG!UeGPu?v_|^;XCl!VG6{0x=gVQ+B{WDQRMl}-fh!hc)4||H!LS>yu#DRmukOrjOjV498hsT05uI+rZcIRY z#qOt6jzdppmv^XILo+$R9m_={@C%}D#n^dX-YP*z&+;UQgn6smNHpAhmA z&1F%zye{c&ieXS=CJ`j>N(@f8$$@+CJ>W%9wJhZ!i-935grmsf+5l*N>dkF*@}9rkW;3N37Pb zsj&KCrD%NSTln91;%v!Nc6H$AHpo3HVN8@oz)QjBddW(kpW}>Tk;3+~S+cj|Qu^dn z6}zgD0>$};Vprrf21@Lff}WYBFBpk=gu7m~eH3^K6YvI;LXot)#|%|KhuKFmWr; zU{Up$-356$o%;35a*+C3oZa=_$5{zF&uHbKJSN<^2J;MAj|BzPfoy)|knas1d$hYj&?OzgR>(je+KZSoaB|vZ>ST7nD`T8JTw!R)~L=avW|LcasCGRG&w32W=Xx zH45L#LJJ8I=?~z^_P0vZGG-ei0*h*4&q-W5s|<@qc^GlS#JxVxUsmoiqj1uE*8Swx zWIH_8=?ATtqfc;i<+iI8?d)*h(BfdwK-fyL3rh9n*ZY+fBk$e-bL1aS)Bm|ZL}$wr zcQo=LA^zKrWJaC3g0%d^x7&Dhxf(0*z|^H4#{P9#PkAq3Bc$Uej-Nj|F!`xv{7~Va zEG^$hMbyY39(P_^)$mDpqk1M{Kw`#RXp64<&-VC!NPXFaHYiw?qV(DAq0pXQl(Uf7 z{Y)PReD+VGKr|miQYFRa1B%qWduQ1V*OSpKjfPWnJwn|-bCyS#0Y5vqj&Db%y`JPO z+tobYtJ75X@OU`s&`<7O(74}v!+}6~$NocyX(l2ZPb4nie?rE`nkSCc-0nW=LFh*M zm4PjpCo3_&T;R{e?;gh7CM9p{2ehW$#~S!2Li!(#6vf(ftAw6LZYR0Bnw<`PLcD}19&9k%+7*JF&N1TU$CgX`c5K?1 zRaoH%O+tp1b6Q%$mEXc)l64>M+Ulco4GfNzMRqnEYLC_^&9u1L{GSfcm1fVJF^3i) zpXhIw`ICDX$$AjIFVaD9Jg|ee*kCHhLW6rIrP&OVu2AyQ`GdFbJZyqyZ7o$3=Ig7g z`eoH|u!@+=J&)i$9Zx+uZS{P`^ZU*C;@GQ4+ICE7l%Q>FEl;tYglja$JLr z?s~5cxx{5gZ1dJ7Y&-mqAMIwcCKV3~w;oK_CCsv%*j<{1Dij?Ouk2N5in*5O4GfF~ zW-`8wRgT=*N!H?zlucSkjp3ckTfDgfryCymUXRM+d!0l+@FST}xA5LKt~GPLbjqo3 z&>3B_aeta?+V=@zF`Cu+9jz^5mp$-XCXjyF(Gzi8%y)tIKDR}j#Fe^99r#xC;7n5`8b(Ul6=8`l6`heWU4|T$9UI=feZ&FRE+5?gQ zYYE+!x><9hRAt^`@cDFg!VNcOqrIH`>6uu_r$9DV92)3bQ_WKa6Ys|t4L3@^dI~GD z)df<0D<)<0HEUyZkF>28Fg-zQ?&z(&unx@QmrYq5-;#*;8t{HaVmW(Ll}IqJ*auje z2Al$lsGTfB_loYD0GluWK&Kx6KsLVD_?ZG`=4!W}&o3ViG?eQT4dxKxXlrcrW-x39 zTG2b57UKu-Yz0FESNss2SXOUCYNLZNM)ek4A=j5V3}%Kfop#3n*hb;vNDnU9>EG&z zbuXJi{Rst)*mRGmHh5xvT%~L4P23Q#%t~VKRuY3oOzm_x zZ(8fd4h;W+`jqR9iDn#nDE?~ea5QCO1p&j2CKvo%4(tQtt-56%L^;wTi;5thtMdU zM$8?7WWGyc{fc!-}QA&XikdQ*eL55#Fj*Z#|A9R@!=QkVpDikZrR+d3O8v#!W&L%xD;@;Tfr8mU! z!G2<%PhikN?QK(9gDX>nnX5W2z$HAm``5Imypf{`{|SfhezE@ZvNK^Kyg#LA&|=zYX2LDw1hozKuybRn1($5p^@<( zK9mlW|3;(>6q9bxgxPa2DjdI#`kEK3M!mxrhM+h~zcI{K6xx5Ldena|H)+MURDCzf zcBlk22V12)Xm#B4Kh{3|>$8UC2tE=t8EO?(YfRVqKvUV^pQ%&#pj~g9rM>btxV4KME?Vk@5Uvr0hbC26#0W>si+^vD zLcbhoX-Mgz&AHPJ%$cW>64a{GFQ*QfVvibDmXyHBZ+x*g-YaclomkOihln4X?bmKo zWyQ_?sn!UcxE82E7EBq}#1_oBmqEEwB7D1t^5SL3hXV;*qHclQh6&00Ad7WZ&z<=2 z#2wvEA-hZ#``)eRE!>D%#u@ZaHrLGw*%D{G7 zNhe=eW(H7CV}ZIdW31xqokpbYyo_^p0SRG2I!zra!Kr9z#D8RGNtI!cjjn7|f%(rC zBH!g&|LFxU*4MXL7;G;6{@9h;b+sl!GDN10zWGimh!{MQfy+vT+SBdOzJ~b|6MOt+T;u&r<-A5HE?`x)bOoa`#U*AAp~?+DuZue`@SW znqj(j;HN0oMbf(!SW@Qfl063V6Rwn=l6Yp*aH>EJba9BHo=Mf)P`ocv23HT)*DiH76GfY3;Y#*&+U#t>6 z1ID}T_l<*3wl-JC0YkNM>U!lfPo7EPx`Sdm4|45m-H!4RUmDY)_I)rW>3 zS5G#?JLloiST(L8k91DlMZHvXOmCa<;(A@~;Jg7;$)e7}uzB#NNUQLK&aY$CW;4WtOl+hQ&JYB^42d#-wHIa=^$p8v);G1b zAoW%KcNFH<=OGGY$07k5XsOvk> zf3N%>$C||dRaA<+5>zu#5gUBs(`-%H>FrPn|*EnK~E>X;+6 z4Z08$1lw_p_-;lW$BZ>cB1Ly!xSv$bI@f4VffX{mKnlgS2G1t1%if7H~7-_>$)vyqLHD zwO7^10byv6QaG7y?*aTMj62{5X9+<-A9~HnjB4vS7aO~}M&cI~uF+D>&PsK2=&Q?9 z(&!o9!8as|OH^?iA(kdTk=Zl%_DBzvdSu-9I&sXiq45zuXTLBnT`=ob=~JgbJx@jw z$oI=Vlelcbn>R?&p7FZN(YV)rO+WhECsGjEj*2j)K&NFHU#}~u=>8$L$jUIzI;rD1wEy- zXtC9PNB_eu76E056+EnhXXEV2m(O}H0ZsdxcG9Poy207pQn*N;-IHhcwS?AwSU0 zX0oz#zNFX+LrClYaMd*snkC&#^X%&%wM0;P32$o#y4>kVOiG+}MKEritB?ra&d)U` z)FOmvcQGudj9P2l*{gWT@uXpe&M@e809K3Db#BM*mGj`da7)dUJ|B0cYw*m%} z`sdeuc}@wQ$8Fi}rEN;D z$;p1wp`?$AyPOx(>7)Z8{o=y;wWhh!H#XeeVpxRYhMh@=9Ti@>#1M^2B;OG^{+7i2 z^WACA?Le^Yf5Jcvwb9qaZn@!3nc6U^g)l5kAe2;k_&~MlU0Cj(Ypw~VQsyr+TRj;n9|zb=F$i3Yk{x0{3?SPx$g;AbW!s&Hr9qQCjML;({hqI7T> z_t&bi>vz0u+>6nH)p`pGe2J2y$!aTQVypG*%5Wl>lbA36d^jLYN4Wk_Dx|01i&BNK}QHCpwU)R1eMc4#gt)>vepYR-9?%qycYg>wW z24@fV=%BSl>erFsax3ov31gGAI~(KKxO5>f?*7@=^r*4t6kzt~{qM0o$OEH*zJDN$ z9wc)Yv2vbND%HquuRHVap|2yUrx;5fcAq^gVT^d?O1t2u!e*ajZUL6$XIEV4H$h9B zNuK_eKz4XF)4W*XQO3`WvW`TC9f20HSt$PureVlCpL&V(m%l zpRhU`+1+$uokNthu|n5pc?_WWPOc9>K<>1m*Pw99Or9^8K5?ll@hA7or6$IBgQQia z`qC6rpz*Cwug&KcICrPF(ohVzMq+HU@Usqw0}UOMwyFuP{3*9#pIFW_c8A~(D?0Sg zT_``l!=i`Gj0{(N&F8g$lhDzs6()(!X4Q|9JSFera8c?AyIWxvs85-y>-qW7p14H9 zjbNBOg#t_Wj(5&(w{2( z?(hb_oyyFYRW`Ug^zTXZglfrVI{h$6T3MC=o~EWdq3XeAZH4Mi{o?J(pO(AgE~BuT zDk+?svw29dAcW3bq*g{-a=EqU%Q(I$-EUQr;KoW#^&eQ6NX;Kd8ZO?tFVX-9Iix&SrBUzB}#2KHwY-SV&LNH&@& zTxYNa{mY@Bz+`#`#-h6WuoVS{v&8{PZewTOkS@S~tC`IX{V;XWqQ{<>zQ6Gfw}r`B zy1;}Xr^g%3gv`h`wM3Ay_ZzkUC$#?U^pR;X(~4zKjj^abnw->IOsqZQ3h=8!(xGLP zT#uEnPE@Hr{~HNo9Y5;pR;a5VZIR7v1g;V#_;Pa7VXwJy&sV{o#znRINf=k#OD@(T zaUS=LcKeoT&h6!$j|k?bGV4p+!kBIgGYYT=kYL$Y8!YN~_v4dpH>qW$ublw+^f5tMXnO7EJxK${o%105ky zmJiiqVzSnSmhth9YgPU5^pW`N7zDgPGE0}IW8UA5Qv4P?R5kBG1KkQJt|;nWq!U9r zC$)STenqH#7tb2aLlPK>fG7wR4)hVAfq#}byrD6-T7vHB%h)*1l-ciEi!B6q5hpd$ zln}_%%JE-%z=YY&jA(40M>1G7KJDSD#*>@E%Df&BXWNlP5BORc@g-HZxvrt*(@=*E zu$WydHd*n_OX%}+L2}yDt>EI+ISA13{T9uyzyHWhOwPu_`aT?3CHNMCuI>(tmF}^4 zrceO(YtQcCM53r;R;=Vvya5#-m+B@-pf|vfq?FCpz5Ol%%qc(Yji9`Xo2)aJB=N<^ z!QtquC63L1O|;wzkTy(TVL%>j--(etmOHo<-{|k-p4<f+*M63ExJw&t6kfikD)I zAnkve@{XD&#Q$k@1lZlV>~mvk7nNbLDyb41)~*cEed)4gzLk`F=-<*>s$B5WX#e`O z)=VdYXn-h<4+=+&kNaNaCgR5X==jJ0mRfjSRqOl#p)%z{{SCtj1Iuv}YJ>95Z9Ywn zAT!Sva$T%-R`R|1EOAQhuQAa7@jQFx5jUWVh0n9rWPY*t)8gNnKFL^z3I+@M__)Ho z9889GEHT1-w}}Rceu9_n(ig{3EEPS0|6|Dc@8bi;@2LMHHHxtzdTlvf5ls}r2Q8)g z@U5qSHGep@`DeBZ19W<7;?4}HL$=k?KJ-tJSzwvM&&0eaRa_3WgxxY=-D!pTA~2g4 zL^NcB>C#RX%3)69*^PJF&VLx6RhOUpE}>`-C`;2}ut1>x#%ZBknu$?v6#KIrLT_l9 z`{-sPj{}m`QEoPD_F+LhZf*Ipd!M{Y5oF*eYr@g8USNr;yT`ZUXsV8qyN#A@&n>Ei znS?edHdp)(To0YLoBIbU$N)>;T>7`}sdp~mhyE=?uPghgn|&Bki7>3YC}#5zbu2+D zTnU&%Z7nF!ATvh!j!k3CA?X9nvlkQ!3YXNn^_S;XvD}wWLqD(Hl=hsz#*h^RpnX3!Y1QvN4(tTkY6^;6#!?`R>B~NS(LY*$+#&wSV@F`|k;kk} zv-FAb_OU#@E@r&=O01$y$t>Sr$W)caTI6;`u}ErtBV?B4wE`J)n5GwxbhBcbX!xoW z!CO)ITy+V$`<)eOr)OMeI~|-euf2t&--RpreqhI~>w99O;o<&LFgAY$Rdu1-sH|=? zPqFfQ>aeWG((TacykNZ-@y6KmFN${EYq+uCnK~~wK0uV;FI#fg^5`%9dXK65Tm-y+ zu+MAMRz?+?$HZ1zSu2mz+k!4I`WE{Wrc1UIslIOR=RyjgQ+^Nu^eP&vK^YrF@}IKI zXWq4K&ju$N2r#A0@mZlc{%rz+sYx1Q&ZVEtLw3Dq7IXajUeVBF%P+z~bZnBU9zM9T zU-bTRrwklxS_z+|tEZ%%vxw(@R?=kf_%$lODX*(#9&Nfu?h*CKuw z@4s5e>B!!fmE|i!zYySifxGZkgy9-fA+!@OQXO(6Sx{OhJWp9kZ?P&T+s7~@?D))~ z7jYqfUmhYgwDOfk?NqX~+)NFB?%@ zs{+nmXiJZ5vmMrcN=GR1hI-~#llVD62gkcg!U>DFp5m7A7u8+_etHV1x--q>ZKk-2 z-m#Qep&FRO4wnm?2WS7ea9LXZEzZOK(xKk9Rmd1Z56*xVvD3y%5^iH~{Mzy7fuo;m;}b#~Z} zf&B2a^`2i!v=+(2FirdrbrBG9_w+F?(rTLXm$nj{3-6B)Q zq0lA&2^6b+s^F`BVMLD6nY2JB;mdk@`#d^q(LX>gbkS^^KRkH>uG+EV>rV7uD>-S( zT8!3-4S)jr1Oo^2t&igCv&ETIiOE@sQkwi5Q! z5l&e>ziH{NQW8k>qEX8b>iP$I*Q7~3p8BMkDENC4OwQ&S&{kCgAnxjny4+%j%C0xKKlYE&629F2>c_ ze;}TJGye-Z0pQA#m_R-~DswSf`q^Wm5*15~PFlYeyp_Fm@o<2Mqs2jtyS?EIBRM>; zwJ9rUdL|`A!CdG+vv|->pNJSqTn-Fjt12BvuVC#(6c=ZiT$Hc&|poesbX{9dmjFyM|1Iad6 ze>=*W>5dotfSzd{&x0d$2OrdruHiHtcn24wIpYo)@dIi*O>8>mldPLH*+(bCtOXK5 z@n|u?H#0e{v|9i~rk#_XG5eBvtVVnL!SW4FXVS36o&w z+klcA5#(yBL&o$(9g;sa>RbBab- zUYq(22^%u|`rDWh0pd;wT(6eWh_QlVP1TWq|3iP-kM-p3=+snuVq>96Pk$(1`N(T>rBa9Xw8r3NoMI5K`b?#t>Ru|#iq5s_{Gu1>y>gHG z63m<;$tm`kQ#Y}j`?}|;L}rW@{6VJ7_S&Mb*?O)pRr0vzRiuJOlbZ9KSW-+7ynwBS zG&H8@>>W)byXLPbL=j*&RDr{;>YJv1$MR!SPT_6Z#sszObTXPTfBrt30R4=>a}V0xE_>RZ-C+Fsp2mKsizZ)Nb3kX|St2idp?zekZ2KSR zyMH$vkv2Yf#)gg_#z-vgg)s+5=;iBQFdu$ZLhk$3W>e+)l}&aON)L*?v;PJ3W`C}t zvkk;}Yx#vx{7mw0reF6)QhC~r)6FMZjfXxK+vJCUkbR@@D5ki}RJrTwb1P5UY5(IB zkK+wrPA#b~@?zOoHoFg;c+D=uuKuG?3$F#T{oZT>LbFVG9hZGbF3!k`_Vn#Oe{N(k zOaBK)to69it#_|;Z;5$usED`!5I(VpV-~N0+SHhyMs-!>G&VQsZp!tPB(+wm1Eekl zjU<^M6+tVZC(e>TOL=XtJvgqcwU(Z+mW6Ct(!RSRRD>L;w>Q^DEp-<|r17k?5e=c5H*oQ41xKp`0$BN8IjCbNsa-PMG$MeRV`S`K@nrsay*7YjotzjPw zs(bE!M~JNWU?7Lt_mk;;$PY1zV=v~$F_o3%RCj4vP0lIGTW6e6$$rw*Y8Pwy?m8Qr zhoWCaEBjQLJ4%_2OYei7V%&DQ`y3k|w)BKNk15C&>2Iaz zedmCFlLBv#3iRXsjq$OsFs2oy?envwct@8Icw=Q=r>VVJf8T~TP5#JY=xun)bE0_O zL^+j5+t+z!6kKo`M7HW={ZY!&V00p-E-!1mF7I>qU`!lFWETyb*~bG{evlHkE)Ii% zLa3h^z|e|66Epw|NAx=H4_yn|&}zFiYMiS_4rh3K0z?IxQG)a>7LvD ziXZAAHDFGhYY-am*no5)yvHuRd-_7nM8NOse-ifH{XJ*E;Iq@Q#|~h&aqIJW^u#)B z0=DFAJ(5@dKtOU6PI_|jUw`xeIM6zMbpe$_Z_7hq$B$;T*2|=43 zf63Z%rQnwX!KHKI7|kCu|AAINvh9dt>BZPtgWaVzh5LNyVk=m*SVRZ_jb;q!`bn4+ zQz&|(!4Wg0daW-kc|pe123A7)I+kP%RIK+0RR8Tc*L>CPKIy9%@uGb_PVwTAx;LSP zMRq4pykvMI;CuPZuJhgI?r~IV*C^{r8q?o5XEdR+?Lbnie`l*2f$vb-+ zi}oyrAX&qqPFbubvltx(Gs*9lUq6hP6`05ZA&o8Rw?Y^8g@y1a&|QbhEXnrc+CiU( zw|hk)Sdy|bVit@=T-9$u+kiZ-Z%SXZro}$9h=YFA{@(1LMVcs^4r{Ub+d@7t&6xW2 z5C=LUjA#S-ZKc=c7!K2uj@Xzy7n3ZMH%oMMhse`Dis)!*doIFuDhTk~j`tO&tm-m%!53OWmxq)ESt(?X6#7g&Uemf|oVwsl`e!c;sZTo97S zQ9F_ib=i2cpA=$_7o8`LBxM6bZpQ&RWg)yTZi5R)SN5DQ-%Wl?cn`{C`e<8zsuL{( z4dSEL-FdgYHybs)9XtO#Xb|Qp)X#s`&?iaORgxz{qkY!T$ise?X0Ef~9$z95LlZV; z=g6%s#)YJU(emI6YMa_#2~EEET(-Ykg6aQBUd&~2YVksGo=K#E!1OU$U?C|vrDDtq za72|J`rAv3cdBjJ$<>$q&eZ&Np##~!59pe5*(+Ukx4qqDl3Fxu5bB~}=rGNO&Zaj< zl^GDhcARxDg_fa({Oi2FQl|woUmfHv#DAq0KAy1&AU4P%{wQ4e^n2k5p)(tXjH$D2 z{nz$Bg$gSC2MSbrhy#M}x@XY4XTX<1{SPD1XbIu^)8j0@b8JIWP!bi%D33RZNwg$| zn5n}C*NYXCIr(zD45?mIZx*aSCnkmurqdGap2MFS8zx+Dwx{Nv%30@XGhp0L#!c%C z0IOQ`cJ`%#zs)?r|H9OA0}vI=eKZ-7+@%V*dC~!N7>gC6f{THoM5lis-fk=BV+C=W zXIF7IR;$q_7f(zc@PKgPW^F)^gs=WTP|hphg%Cx46aHxc5Vu2Uzd2DW9xT73>)BTKIj@z)Q!feyH@ql@M%NO+8swX#Hriilvbwm~ zSjuQe?u|_ht9FFDC|(?BixOUZS#XOB@X|mjmjqWmU;ctd^&mHZE-c9EvFdr)^}oy* z`Oj6u(w?lMZgCy~$TN2vW*@wRwFhQ60nCsED~qkzfSghRgW<+rX7MWc|K|y>Af&nB zqvUX)lKTsa8N(ts5vL@On>*&~;9W*Q)g=2G;KYgk1*NT?LjPZ`_J8Mp2j2Z2G`tAO z+L$nzV4P)mU)<&6*b}6PgEJRpSL2C54~fqNIA-u7GjXurW6$7%z-w!b?g?^AA{6|KONkbI4V`Uu7=zfJRlVgwCT}0SNerTf;VBVt#)tks zyDZ*G^>lB1w*640e!oMMVZa&dbvDluw@D7m(}~I%Qq?x;M>$U$&D9MQ9c5T`ia92e zPn6QSPrXNQZdP0Qx9~1)jUE*ZhSPe4pa|OhdIc1k4@?WnfMioAY?c#`O`XR{j>TF* z#f^doiZ9!eLDoV%icz}ea^Fa|Kt%I@S*H)6*-#{7MN+p*2XIj0M!ridV-r_I-`S7#<|sp06;B0sK;r4 zkmH2Tcu_X&Z!2SUzut=$GTq?2-#R?EhKJinvn>Pm2h3!|Yvw*9XSaUp`w-Z>?8l~* zx#ccqk&14cPn5!W;AqX1NUb@hm0f3j7fhxV9v~fj;(t(&+~NOs*~~u@niI&!6e4HO z{lV9Dh^RXr(OF5`NgGQPGTiy=YqxOhL>ckK?W{TP(Bo0eSo^Fg>wRU?P3AR*rl6z> zl4CYTL+;rMi#yILQqe05iFy8($98G(*A+_?J)T|vi6*&;<}#P{8!cBz8WkmfbKUVk z)rDK9+`3z0#`O1j0!QWg{w$fb8uw}M+tDLwe~d zP}3O&8*Vgsp`9f2UL)#{-!I`MO1~l?5F6$sHS2ByXCN3K`~`I=!NkbK9xFU2b-VDxqZ>p(GI554R>YTaefN2q`u!7Rv75&G&`b}vn;~U1 z2|$3n8t|Li$V?K3oRy!H9qo01VyD|^R|5pH9?kZ^c8?*dKc`d!T87~U6~?|x>no}8 zBLq?qK0{$>n`OQ6#|^$_$6R_wzR}Y?7*giwZg%>lYMUQFzmkm@Ra7rcHBBu5rx;5#qfdN$b%#iBi5BLx=cSym$@zuPR1QXfa3s&lS!`o!dq;*d zeUGaJ>GnUlf-Glxb28{zBzqdzUYh&kbn}<+`+fKc z*!o}}7~Ytp?{3E3130#G-|8pwOf1x2$R&n)_u@|g`94>E6e;{Ei*_H%3iUMhf(T3& zJD4?9=*r!?tl!OMhJWoK7Jk9^qR7t9vMW|M*g>l+oiT5v)ac~pl+$AW)wDe2sAj$x zd4we?U)LK5S?0vx;J ze;{!QjnS7?y23315fVSoI<;dURAubWA1_Ul;EQqaryBO?R%gm?I{Uz~4k@>cHK8F6 z5r43iJYSSWq8$wTv=N3r&LX%72G(i?kE$ifTXQxn-c)+Zj~%P1Ou$kXo>tPLbFkTM z__P5^q1Z*M7DIS-ubU>&aYV7q0alp9bAFVdLLSS6iu~EoV!NJ|WOT5fIdHXp>~S?M z)U|BW?T|0{NWQx?U8>A1>jL(Kejlr6Ha@(jUoU(cUm+UmCx(A+xs zclcH7nEOJ*pWc;*UN=}M5eQ8d&VV7G23fdCLr>bF;sNYZH<47>12Xdh_;@*3e&S^C zbK=1aR__mL=}07H?|4bpX(Pued80g-)m5N}wSk*gsc}k3B3e?-;YDq=h@6A({gM#C zv!9L0XDGAf9TPVhMeDPJ!Jq!z!ozyDOz*y#WTid*;OZBjC1408|06>B^j^LqO)qys zAgoxL8J+dLvSy%{oC$n9w{ErHOFzX+yqz4s8z)@D^$G8t4-JY%g}|N@5xM>O z!o_0%saH_Z|L)4;x2i<<<*b&O#N(|1R0qfv@B|Qv>B@MtPf}gX!BwU`i5`fuV{mo& zIClE=*7A&N@0o!5Tqcv5;rX3Tju;gXh0GQxE3_{6kS;4wwd|Z)xcS4A2?4^4%;qbv zA5e-_je!Jy@r>B+8sxW@x=&6n7C@+D9VwycS$kQ~)`laotH1t{sivXcV;gIW9oN^P z5|chW)=xk6J^SviGO{b%H-}KSEoCAa%<5B5h_Ye{SzkuY!KqtWU{x!(HQ{X$Y~fBd zZf*=`EnUq}^5F_!e;f)^1KD};qs7)Ax8FCynb237*~L;bY&pcf zQe>jY^1cLLQed%hZ9ADr2(=v&6KvxX>-n-}SJY2Je-z?$3 zSt6}&GrY{g?N>A?#hKbfCL78=U-6bh~Aup}bpH8K)|*YHT^PXP|W zbXwt#pVY5~Z77BDpy&ea&z^5*j8jKCd9==fKN5`v#&}{w&s6H<>r|WAF5(8uikq`s z`%4HW-d>?j0cJ5CVr+A)&CdKmJJ;B76>R+cZ5G>Nma+Yn>npMwf;OR>(>ctD>JjnS z9Bfx9X7d65Zi~b%<7u5nS8BCW)^hgNF=Wi=hGI((#M@s1gIc#(cQOLbY(Yt1Zt54O>g=7$)mP|U*->yZLNACoRo|dpY z%*pEh4*rTjQoR+{YS=2ZV_M6I34GUIj+;2-(PuDyE=c}!TQ`(0FmLEhvKdXtZXncH?qQ7#BA+ zKG$cC&sg_Db|4~1;VaK4U%ioyp%pzaq6TWQZ0Nzr&#y;5=mGf-lD_*<@HwTjL5k0v zLux$aLOweqHMJ~fvaM9W=VLBRQ znvaAJDtkm`CI(|(N+cy!#L0p}B~Uq-HGR7y%IU5Yo5p88BZJ>!cQia4+-mq!@A)FZ z0zVdfMLloHd^kE3Mc*z3VvnnjO%z0lzkYMYhbBV_qAuER#V6LCN^rfl5lG6)gm#nT zh08-jD6ii*ktJ;AHOW{Ty-x=z5EK{my}6E?44OQb*jMMKGt;9ZwmhwOoqA45ODh>< zR^zlqo?}f?Kp&QvaqU$SEqA7pKunbuDQs1O>$GDQ#(@cyh@_AjdW3S4k zmF(noVmIhVLaX$F487a@>j@KT9f5jAj@$&!=bAY#qWjvs8}dq}0c0(Fupqek)HmS)YUuvcZ7knJ?#R`4l<0__h3_rr9{ho_#pt0e+g(dX zILFoC_m=Y5{;eK6&lJ?7%-9}eOkJ$oTC|SWMviQ3yN3zOsks$8v(wo1S?zJeBuULw zfSPUFQCTIJ?O`z=g%slo5AO~RLjc~_F3JQXOX6{xL=}@rIe^r z+&kGBmom*VPr^`nmS!e+(Z9WV=us8-eCCgTNU(X#20UA`LF1Y*^0~l8Mh`dKvXG4&q>kqREB^#{wFdgK%sOOLDI|%4(C2CR?bfFk>F8E)jUYx z6d+EZd?3>msA$8+LN7^OS}^xAU>L{!M9-gj#B}ta`jFJ5+9>x9oOD<1p@|bq++CWO z*GyaTCyc4vBSsfm@68@f1+W)6oIlQeE0Px#r^R?ri~QugaXCH;+WQwoT2mijiu5rm2Ug^ z9e%cP5DuL+%&z%87P^xgn>3lFMLQz8yV&BRig8&1-|ry%=vkQ8+|a`4SgA~v#WqU> zx=Z((Q3Yc zG}>!eAurh5nTlei6qRUi{HB*W8mI)th8ZGFD=c!D>|Y+vEjG58%SH4#6kS+viOz-2 zDN1;6ogkr|=>aoX_SS@3^5aFi*A5ZrTCDjLBAHPV?SOGMICFSzLk%TfeA~T(TeQZ8 zyDoO=u|3@|N20IH)KDI&XK)~Q$Ruh}@Z|BeQn!(usc|2DoPc4i&T9?>Dyfq>20yrZ zfb6R2J#(U+5j)QjmYfp@G2Bh<*rZsEj;McZ6IS1j+6#+xAJ@jFr@5Vh%Oi6i8;)RQ`2vBKOn#u}U?%s1MOsImD+@u$$ekp3%bD%|HIX zxirKSj?cu4!4EM7TCu$ohqx~bD{}7Y^cKp3UeI=nZb|Ad-LQ!#j%=2Gp}r`TRV&Q# z5VW@5@Dadc&g!7qHwf|EO-eseO=C(}`PGtByNwfuPkqhIWcfX?8F-TY#CW6i5ktqJxWyO z+D|9q;dvmv$+kgvG8dD!#RjZ6{qCA$Kfga{HN)Y`zGJ}1hw!)@pV?`ww%Yej@ey8* z{W{=5hdUY?DCMxVV}pDsWGLa@l+}51&$CdRAL@doIp_VH#fd(BTsTqv`HlY%xjAP> z)Al!YHXS(SQLPf*jJFaj>8o>Ek=Pl$pu_P7bvDrj!%<|gLMa9mfiG!F4d3| zulA+EFY3Q$YMc)0$=_z-33?fqSbbCCk+CLvdIe3?C^S)F#|}rTlzx-jNPY0&VeD60 zkX=#l{&;nOhC^|1ddsRn`x8TQpTl1dyOrtvEJ8*Yrv?poI61Lb__~=t3Jc!!VflbX zYORiD$k)ImZ?vt(sA`*!wkd-me?)m4s@YKcGIGsnJ9@*F#u3NuI9z9M{(Pl=*`2ej zs;VMPD{|M^*D0>^CBNN0)82dcsCYn6!>mMsJ;k!1DI2tW`pwk->dF4B7sB>-q^?u8v@XtmsKzGZJ^d@V}rh!d$H;vaZ*p{6y`w zud_pa%j$HCQeK?4h`J3Z*WOsJo^}Qg0Lz)x+@T0oqFaAB>i5v}q?l&=uGI(fjN5I2 zY_!WquUH~8-$sWIaxc)e0d;sjpco}9b3Kgts^-^H*+=QycgK3)nk=u|9cEw}0gCL+k+OfP zY=}AhKWFYBLH}7g@*j{SQL@kAV>L+|z{wE{0K2)B&=cKjxnZ;kEHLh2QZvEHhqgSI z|8fY)_3It*%;Acq+b0st)*N7wv?fDun^>maB>XJOs*ttCSQ&K~BtzS|-g_}Rsoy!IT5qzFyh$9pak5?>fC!3i z0PU$`<28_W-!{}s13aHseyFK3fx)$qm^&1e`l_ls`o^3~$IugLMHBKQH89t&T(LaX zxzAP6iwDy;3&_z%>_hb8eL|U^YZtM7Qmsdu&1|bdrS>Z%LI;kF^J<)g*`|Bz6hw9$ z@TOq#_(Zd?QcSV~EXvK1N9EG*i+O<+z}hgnR9m$c@mnkDWcUc1_2`lMpo|o_wE(&g ztZ)o{+u#{|YOnws@(=tBXm^-~4zX;o3oa+2?6C4{p$4oQiVl9{vN|c7zGPxT8axZM z4iXJh8olNUC`qL5qr0snGM&XmtW~x zDsKJ&c({Pp6%o*z;5{Kb^I!+|hDJc!1m1fpa4mCV!r+w+*&qJr?{(lEvN!)UNM?bl zFaQmb$4HKP7~%_Fl+W(#;Lo&TyZ@UL1gm4@*IYV3{{@LVsp%Px^VjP--9Z)&_fBGK z{`f%X0$!D;jyX;ZzgQLKf(Ub7LHop+Q>e!TM+FFTElXbbc5@adA7yYBU1tY@w6W#3 zh|`BaAH#eTyt4`HW@V~@&H~|IP<#>FKF*Onvo&_k{7XDwJmJ02wx1+`eM|;)HSkfu zrP^=9O!?}6!*{WLu6RFz?{LVDKWSI#sy!V(st$}H22X_-r)k~ZnE{-}9J&H8o%DVprz4!})@*}S90{1ak=_VFfKtF{2(`u5<1I|jq1uJA$w=xpV$UAkq zp01&wz5|LQe7e#aB7y2jYRcX@+4hMXL&Rg;LSbh=nezU>-!x$BE+BQX@0nmq;U7}v zw^pFFil;cV+dV>i$q343b~j5N>$KI>=L;_7RUc0AND6+h2T>iBxDTUq(MeuzS^PLy z&t0{->ZV1eVNuR3!XCfV<3+(C*MOzwt+taz{Zo`y@3Ds_em`GxT|uAAx~j;rAK+G> zbp~W7?Q`q*c)$Ry?jhopgUf| zov{Mqr(qz_c6#rm(_|A4$c{~{4>EXkTJkCNOca;FZFK6> zZxQ-yKYi;;$8~^(oesJN98*vfv2#i*>ml9 z02^inz948t?x_BU&!~IH$WM{?x2-d*_QBVhE&9!fRsXwATp93z9`kEE6S4Hx$N#iC z#xP@B=t2`K^pJV*LnhnYQ(LK7UNU~FLT-lXe-|trP*^8$-Lez6hmMa zOOpaUT{|t_!(Nd8*kgOn=)QU2DV}k`*lXbl=DIhsi}v+gd1ifY?XOSxBW5s$&pa~d zDjeUlJKf56n{7=IG`4vE3Hl+R75obtxT!ghSzy~DS9M6|Tj+R=l>>_Ga~ zG-bKkhO~A!!63m85%_SMM5&_ClNA=vk(T%Krek}=6(i($ACye2ee{8vdiSx>jF}p} zLw&-%gDqk)a0u0(Mut@rL&6UtvhPJ99XD)8B}?Q+L{CKQ6Pf+>f_G#g?8p&!aU^c4 z8i}r5!6jt3Q7S|3{LAFnCa8}x>mARX^)h?`M6+}Q5{9<>^nH@+ZpqNsRQyr#>iC#t zFHt~CkT^KltSAe4ao6t!&68Vy-BVM;)6dub7=j^kt{+RCr1HFG&2gNkkpMT%*O^1L zX9!%Uw6`GL;1qa-Xx|mQi0?)g&nk+rhtkyEe!COhVVS*@peVNIaJ)It<(Fvs$9=xu zd+dv`LbGSxe2@J(-EXpY*z_E6pHJ2LiZ8SJuO3Cd+$l-8Q~4CIy#|~RX1C4*BbM8u z!!JH?A6la~i$M*M_OGhFFNhBqmj>?@ABPiXpVUN{)$F{fAj7x^MdT%~Cf-hIeg!`? z{n6w6zLvq-nsd(Lo@`HO#1=$pyYoe5l2j2u*x1NlYfl0G7T!UJQxhhkndh)zeq;ZdO6XF>| zexS*28iqmxTQ%9o0t7I@%R+S#hwck6;~kl@q|Z4GbX>k|LI>Fkj(D5b6ZGhn?g+zY zhGe;Pm3==J4hJ3F^?Q5+#CYMd*WQk>i~38Tg7MGp&;gThGmDqZ{IS&B=4t=cm^D+1EvG z_Swjk4W7ii(g_Vs8qk!elR!sbm@Jb*#6|?nU{?i$9C)>WWTCxojd__ zubEUl>+GsI=rIf@mttV$RvOAcT+W5Kq7f=}Ss^2u$(Vhc?uiE+h|fFo0>>yYzX#$J^eC3)PB;uA!_c&WD_|_ecd|I1dR+ z_PM{@rqishVIJ@vQ}x0`4oz>F0B&^g9>0Mx)1cR15W@UQR~jr;8uVnqv~BAU(7_A< zI$!vMEx99@gTB}kl3IbdK#XdY4H~ujc&K%&pr%LQMb;q zzjFVuoJFLI%Hmw(xRt(*Y+Fx$*LMEG1isCkM;@NpC0?dFE#3M(l4B6i>;GH8DcMi) ze{s5mNaHd_FP0U%tI$w6!r(^N`TcKBO@Q3Y>PE(L9I$0Q)9A~E*3dRd_s^5J_r4zV zD=QPw_M8+yEmvyO)z^JFUHNG55wK>L@nWfLJQ;jw!~;>cmvAg=!&Z*?vot+=>fUXA z?O^GJ>&XIn6wY5zT;S+mP%ST(awYHGr;ELVM<_nPLs&BHo&4BQ?+wRnoqUE{49E9b zvx22i8KoaWTJ(?POSBLdS{QvN?twOsGK`nBqzl(e^!c0MgMf-BkYW_D#{<5QJ#Wyn zzkFx(-h_Hf#DHd)GkwpIU1WGYLb0)q&Nk8CjSI6tCKlApo+H`FNwTmDD+3JNcV$e{ zCby>HK|xwY9d%He6u+-jVbmn&2~V$>Z{f^^omU}jM5A$v$NAvUX>22KkU5T3Ac|D^ z>`wK5&8@Ucf<&tIT;g$WX)s?_L`^`u)wN{MC_AT#{Z(maxd=PM>YN7S{JIq%_0Ki1 z$h$ul7^!P5L#7@|ajD;N;(S?s@|12LOuEN19MC`k{Q1rO1sM)_%RFr=-`$1$mzH>j0OntN5ZnW)PZ`{iON)rN~ z`Ny{ik6^Mv(_7JQKApvMl8v|strRz`o~k|79HDW(a!+Z13wOl6!hL)= z?gG7?gk1~X>2@k&d%XJlblY3lO2Yl653{j{)Ixy79^rfZ)knV?%M%^5_@%89tb%NT zr@0NI_je2WfYSf;`s1;T=$6pyr1hiyNX&&c;yms?y*?v3>gg-eLvcge-;6Np5JDkK zwYFIvZQ$X#3k#vugYv2G&?DW6l@b>#k~JWk=DzT`RO8>*kK|jfAALOin(g-aH_(X> zVJNsn&1DHDMSLimX8K_BifFr!>e2??PZo(XW13h!;tlt5pnH4pG+E`4HvegS)lc#= zfh-lN;!|Xg(R=$9Z{iNN0icfRJ;b1F8F|SfihvU+X4DjJ<}*n5_^^c5>O($y(Qp)0 zzvE6?;NH-V=a`n#=FIu=DDwvXTg%x%fEv&bge8tQW_lk$_V-nxOcyCB+&%85(Xhj4 zq<3fBFA<8lI#O7VIusESJz-~SC77QQzjXoSAj2b5U9V9at$5MPS_Pob5>DcZp{sf- zuB6?flBdh4XLadWHn|U*xoNv;#t!fT%sV1UEjP$4_q1X~QwSXq zGjC_1|C=>S(X-XYDx;IFf`KFM(#wEh$L~oJ{W{Q?l!g=T{5sapes%igES0KR8a*=? zPu$}4diy#!iPzn-+`59&0>G$;o#H~nxob{+)@s3RJD+*>Bm-d28*Xw)Fo6SpYSsH1b zZ+*{mxU&?sWDx^YL$I9J4XxC5U6Se{8kB z-MrwC6!I3P4H)RwkA^uq#u7-U-Rw3wNjcNV7HZ1$J=LxlCg9Ehpr4~Q+}#f42{xJB zs$u0f!~Df_v6>A?+gfzWr?anOlJc+!rK%cvE)DU_31M*#XS^sRigVn_8 z@mumOn6C&a_*WmCcV{H?#>z>wK{%H(yu)2$4ZXYAYK!uugHz6Gd^b}_3BzZ99k4dm zfJfmwEX4^x!IbZ=Tt1%u5>$g!b~)-gmhxtd`vzak7DzXvLKbCj)8G_$7mr1fhkk;N zsy(+5MmOU*=Uxpt1y(?fqi3)BWen|IYEy)<(oOGQ6`7-q3UlR5A_#5RleyB*&n)fk zQg^D9kNuKB2B5mFpD}sM@csKjO*+z}*1ZxQ-DCq9sQ#36`MJR(m84l^0-AMtE5@3` z@g#Z^ZYkz~1s9i)BACO&$sOj2%foSLiWL{^~=y)Sz4ROnwSj)WR#%K^L9_36slX# zP^vJ|yyB8(PB!4Brk$zwJf}D5?RcWoj-Oe@>Vn>0M%RlE<0ifw;cE0=#EMHub<|f= zSf~*H{a>xx!&6qlbieNaMs*_usPr`+EYo3{**HEc%dZD>gi`%znUT@>-R*9Z1=C#$ zTOCT$$Y#=@q}P@D8@|Of(BbTFZ{H0$!8<(`#AWSk6=>}oskdS-%Y?G)>$wGok{!<^ zv1UnaBw6%#>DOcM-IV~q6~X-W+sAdJjKn$8pG=eTNs?f|!80$1I`I#b)O&<1GNPyJ zSCjFE)rn3vq9ohKzh>2Q-#ZPH@+FRd^WU9ihHxjI-0^c8CK0cX7Np|h6?mEMoU&Qe z`{ZFrkBOgO`kv<@DR<{KUH6|%m7bxH46G1OiuG$HrZdQM#$Z$x%tKMz(U}#O#!{uv zdD+@3Mgt}qrGB;{HA|yx$QmnBhjywiISJu(qPNP%U7{+mU&cs}Y&N?SACt*utYt)= z*-Y3O6aQ-94S$7CM7wsWALU1yBS_>pQU#+q5SYAm7)~;r9XyjR)nF>dIJ~Rn+fFXJ zu%cMYI9r65`sevR3g=qv(5b5SXvkS4x+(_mnl+h^iOsc=al2qcih|T{=st`aWOVUf z5fxu%13i|l*rNYaJ(lC*YbR5wTxpVciPl`PD`V)H-jNkn#V)FC&wL7UnyiX_3$c$4 zTjau2*=3X6Ysn5|KbW;?O#05nM(#B8-okAoV?Aamm|)8+c9nI$IEe<>SZ1K|winrt z$K)!50kO)}nbF0$DP|?lW_65WU$)z+Y=7>kL%B5eS2-)j@W@|b^ZJ)j#p~-KlB!{d zXxKf_nHuEb04K@bove%mc&2x4&=X~ClLrP_?r@{aYVZSl?o2K9=1TTSE!?iyvJI*{ zf=@ItDkCPF!O~f=U9N=vpCVG>5kBC!eB{S;OOpq1@yja`w*|Fj+!(STPD_-2eDB?1 zG7$S&Hd&tFg2hMZpv@~~Hnxh>ZBv%kn#Tc`a&B>IcIjw|KsRkY1E)Xunhq*n*j`c( z6woC3?L|i3oX8Ot#Us9UTKKK)5vjZc6&|D8kgw8tnK5(5zT{Sh{?vz@(82u~w;_-} zOW8LH9^%fVKMiX~rLR%8UcYm2V4$O(QzTo2EO@^a*PvHqmw+^f3lJKI zNI^y*E3c%>vT5m@_j|xv!}YJHRvbe{=qHgy5}`l7ff&<7ZxldICMJsGwCRd0F{=W* zx115vIiX$_GVALWYnOUyWx78qn5VhBev0*t_<>HGtQ06*$d9ttx6Xt%X7j^6QuGD_ zN&GXfKjB)|tDSM|hy4+dVPy08zNBdI@w3x%{D@G5&&oB5;DRSR=8s#vSv#|>k`2=b z=8(hJ3oLbV!!5-tas7^&l8l@e$vjuK+mL~Z1(W)BkFX%8ny{lwX9z+EEgvg}+^_iaYp9~N8_sWOzp5VmDDejv-Mi4lx8A7plzaVzX1Os*i@qqG z=%p8U9@{bu`tfB0`6khwzPuL^ucUTIA0M&lB^fxqiR+cs2OFX5>S4c&K{7ieo_?fl z=US&?aWv~egf5Mm5LM9OmOT-R@y5QPt{UsTUINg>;)bF!;2)Vjl)RzbV+6_(9M8T^ zyLw!}9R5M&Nvu(VFO(LXTB1^>ybK`UIas0|;lnxkl~sB>EF0WR&|wE#;BX0an?jvc z!RON$uMzY8ky`{1=pVv;zo(on&u4{C_LbJejIlxz|pkG9UY zhjxloqvvqkGmS^e6vVStQ6CY#10jI@cBn zC(UVClCE>?r8OoTVS9t9C$R#@n3I-LC3#V&goQ9v_ry;mD^Q_LDW{bbr`_QZm$;n+ z6x7hlz3ep69u}^-araD$CSpT$k zGN-y%?Q1G)vK{@hMD7nd&>FK{z6uZ);ImRHeBj~QzGf?C@gAf#8g`{W)Y2>*SK89} z{v{0vx_8+_WnCXd#XCY_J8eX6^z^nlyOuFX)ezE?VTtZBDDyobhb} z3fdS-pIFQ3#z?dq{e#5aj1^OSq}%Onr+H+$v03`oK&-Cm#O8hFskEVG149g_V&sBd zgXJ7g0VWY!W@`*|9VTzc1XYl0VzG*Kx;wS+;T+A4sE@Cl)E?xF$}L0v72ejz0{E2- zCH9=H!}s&ji=qpr_t^O(wwp`%`lFm{k50tN27qswH8lbktR$7}3KX%}g)P|xpZ;$S zef}3@_yT;2L)H>;Rh0@K{Z%j@^YGutirpWffRChLW&IBR^mkUB|~zaVMz%e%WxfE+6EpHqEs{Tp5^7I90=5!k!(?+5((x3exgh=fe5 z6WoI258wR%=1fnD7d*^__Y!|OjbU|Gg>^?Pv`RhBp+3}5BB7=SKVt}v$mAq8Tl`iR z>FSLZSLAb|9ymOn=rD51U0spy?RWpy`vjbgdxp&EuODI02`g63r&VaHqVnPvueGTWAJ0S^$`cEr#3E#(Y^l+qXt=^wlDU89XfLr@S`FWz`#|U zp5yNB{0oHozbdc)z#YHb(c*z99Qf$2rGfAogZ=1HOsu)H;T=QbWt#vipP`MTj-eAK zYTgvHm~@#k&753#OG@M^-r1zStSkYi(l}oZb4!fJPI**}Fw#civ&EitX?=05DimX? zGtt-W+;(7K7xuhgXia^hOwf98dQ^1BZ8NrWT0KZ{=qqJRwgs`>)l~0lU9Sg?=%o_X z`wH@%&r#+cdM>#TL3iA4E!xuOH4?q(mxE-rkYB|{Ba|AQ@-%a!@Q8PRp0)IcR0R5w z!c~8HeMkLz`;DjM1VW7og-L3y6yXDKc&!QRlUNq=Y^#M})mDveTDiTZVH;v0*? z9kh&;b`~K9va1P%GGoe)?qjUtEyXl`K12ZSFkdm|=l)KtG^L}@Y+AK@#H4l@09BgP zokuDQ+aCL5q`N*@>Tgj51GG8&zD<16#XGV6As0D3r$2__FnR z{6~0jZNr_hb(dFKGV>Om`2$bvI6Ru{>3zVZPG{-07{sFWGP0sJJ@b#4{|7cvTHJgI zV#|CHpJ&3pEVhRUpsk4zlXU@Kr%FLKEtvd7Z zie%Q}Mfum3jgOe)a2jY_U1gUOu~Y-FA4I&T4s)E2UrLfbei+ddjKNvVr!D*_hx!Zwb%F%UW&mpQfE}>I%hP$+Y(lIbh~G z>hvFXoydHv9c<5`_bj_xny%)%cJGZqe$N_&M;^{+p8G1CRy(pb9ZY8ArKdlE(*2`F zz1xV0^whXN7~wTFOT-*`*S4Jv@_c~aW7jMYzB2R{z%}>5T-o7{oF4IGA0c^WHHq3N zI?b>S@yK@W=n4w)=q^8E@+>l{_IDTJosT;|7cQzubrMtdyXS`V9`+b*fgV~*e?}8zdj9}x=_iA2kv6j=zQ+N=9zkF)y`E@at4tbds>q0F3 z9G$lrw#FhHA1*S>HT}oX>7XJa7T4P{aib@|VzZ^-{B>PZH9Dr)#j~WEgyQW(?Jv_Q)0ym?E(I@Xqm>&;bf=|8l!1*afXV&$Lb6ByXGrG@gn4bC zjQz!)TT`EoaX5p(=;`ULL(CC%xI_MJ)~1+7&+Pqjr+V!=THM5}??2#gOigy7J`@QL z=6he`AX0oKy^(%3Xy)0&2&NBvmWw3EoSaSx!XWqNH+7zzF@YXKFcVJb{SU+TmL7y2 zI#FK({b%O-X6AYiSLqo=7{2JWZ&Ym*Kc8`MMnSi|yiOz|+NJps?Tv-4*IYj5dxQzI zx^-@Q{TRy_U1VQ% zrs=d|fLYu&*_)Y+7r+yYu3G#&A<`>6l&evUjFc>~=M);V^l`;D1^RnsSDbmR(Fh9r z#;fgf4@054uXJ0MX)l=O2}Lhen06fEC%Ks>sbv6Ow6vy@)!alL(6QnkI?r|XqGNJ= zV>!0IB`GZRf`EXH8I_1BR<%DcTj{1$)|{dzb6!M52axi9tk>uEum)<-`l&~M0*5pi zS8Js0GImiHlz%~kC%&g09@Krg#GL^{RYeDW2?A$GfobUnGw&t_L|c#5OAKO}d~^|q zk*7_t((0LwNuJb?rco>^D+b2}W&C`RCnP~E4r!Zs2limQHfFo4)rM_1rF%tYw9;*7 z*n-RZ4}Uf5Jui@4-3IIgBH^1J69IQZbrJjDUolN_8Mr)e3baz7b+TY>5_j z;dS-|UgQHYei5#F%TX8k8o3it}SkJ$gLqi?bX)DF^CyqU^W1;jHwSnbi_Zl ziMUh*Z<;}>N|eMr8ZaY zW`g$)og*?G%TKRa{~5Dm+v8U|Wd#UHyNok=vaenXSe_pSmk^*&fA;mL+bxzJiI8~q zw;cn#zuq+0Hu5~5bod4hJZ;At;P^cWRf^kHsPp^_dWj3Zq@0cnAPeO;6#B<4=o~1H zdpP?OrnmZW%FU4km-JJ4Rq4k{4z@Z^pBlJp238$**+{dlq?A-5Z%QG@BC+?~IL(iR z{(|}eQl7x1@p4`Ro9z!M_4xEO6gtrts)02k68}o9a9Rsz$VT5^yXC zX~hm>YV4gDW(n7A7lU7zoc=r;aXv#_jdV~~_QQ{xfpZ^oEudIjnr-{%o!}RGL-UDL zvBV<^-ctv-h!+bZ2%psAWvVyPuV2ytJqITe*Est+5tWZx$;=Rcyl}?W)kYFFt(g0D z35KMSZ-4y@+8~6dE!iW;N3y ze#8kdE^5J>9V#o!g}skun^iVJ`~wpN-hQZux%Nlqrt>PU!xTdO@-YVM?(hz9rk`nE zO;>9M1;s~^yIZ1o4`bT4($^3VT{EBpeQn1rTE`OX=sGIl9Qv)lpyvQ7lb`6(P_>$^ zR^M+U_wk8@|4s8$1Iw!Ri0>rKe z|4&&0Jt#iESnat<7@>v#Zu=1RhZ{~L-z3-zP^RA{$<6<9iaK$dw&1yQ!_kkp9L zL$9Kfzjma%Cr)&n`yMRmzPrrZL6^M5n0h`GQ$DW>QM3i;S!!HMVC3Ox zHi3n68J_%#yO)#%XUHJHG|!>oHgj49*BJ9bd6M|eJ}zQVwXGlV=qJ&)Ei46S3uG~~ zPant%>2Hk(4z^EOF8DZsl{%vnBe<4R2DY(&y9OgO1?u1%+qZPQ zuP3u(09gDyUNX8cIEnH0hZqko5FDIzfvgzW130fYERcUdv4hAhFR~dreeSQ22eb2_ z|BJo1j*7C~+lB{GN0d-Xkr)(^Zs`~hX$g^#93`YXq=!b35Ri}>5NTngySt^4?v$

#t0V`48{G(v8r2hKJdF%_1d1|!#Py3rt6!dNODIKjdm5*GW-&3io{*|L6v3%wo8MNbo=ZlPZ+FaUHF;p4>w?hEg z)g>{DUY@6Gg6+Hm$a>2=Ut|}AnmWLBTD(G5AW5n<@O2+Pqh%%5z7ig8@^!fz^yIpIAQZVGLG3akYsIu|x}mkiVmGB_ zD@2WV?({W*frl2f5GZ4d|I8@H$Ky1OAlEZXX+Qe9Aho-u%joMML$P;#FD%o9`n|%X z*cMgwy){AmyAqU9uv+dj)0aOcTy@hX5;jcj7#;hbG&&0-oLh6Yh}!7BAh6s-YZU z{->sX!*LmBTPe?ms%)s_jTaR6zs3GkhSQph1yzW1_*r@8c&tS#Oa-Yq*pKg_EyF4* zuP%p~hR*no*1vMQC)nm~u9g%kzM3MH7ojRMx-Qo-&X+-1NI5lDRr!YHtNPo;GTM(+ z4suk-M}^w#ge%Yaty`CnuMag#IV){|is~^^$7l&b3W|X;b14o=QO~R@QyM_TyG($6 z;);Y2ZfF%%7@_PF?!MPwlNV$S%5p&3DN3r-N%`&Z4TDdw zoifbY<(ovK;R^fuEb|XJlm(mU3c)Hvbwtl91vO`Cmrbd`pFAKVS61J(+ce2=rb zoa?BfihO>`9<~|lDmUI6AySB1eO@Y;wsbXhbddanXRvrJiB-_3>;niy{npD7z@>H1 zkg4TKu3a6Ihz;UByz@bb-b*l(!(~U$h6dB8=pJ#Rll1T?IlyX-+5-U3g=asxiTO$6 zAc%3)HZU^k^_Jhn>1Ux}beJX<*%n-b1U{STDsm?eD6$W-aoY$p-P(FC|JcX0=t!uO z=J?|&b9XxByX|oZ#%kE}Ktl_R8&S8v6;YO4{%uO&YE;)~cJ#_!P*w9cO=ABn!j#*%!~cY?55J^7@1oo9yo%zd0< zQHiAkHk@4?s}Ui--|skHFQO%F&&sdM;$bvAUZFFP`s!saotQkBF1wN}Mr$ze7<#wC zY#>+_MbzQ`dDeTU<+NyQghiYVJ<~`e-=4;5zIo1^+@vLhAp#^s4cbO&9lhSq zSg4QRmu(Wx4lKjHUpM{wRcyRlgsOVJ5nVb>Mkv<1R%>rbe=iQ{Xv74y9$s-Z4KZ5& zU?;0bBLoh;(2Jo~P>*Ga7}B94E7p6%m|93q)h%3Od+K~flfJho_CQpGMDBIy%8Khu z2+p$MGObuw6X@nVmIdXYNZC66P_KEDSQR|;N|{nTsP<%&`Dp8<@u%9{`;rHdwO>+G zTp!j9RBX)(ltm1#{vi0GNE!^?qKt_aYbr33A8Hjks`z;Qk?qJd84D$VGQ{ z{1Ox_ns+PeYA%OB;46jHfVYr$g@;Y<8S6CkB_l>M9@>%>wGw!o=Hlc}>2VP;f=5%K zGJDq=&%B4J6o`Z}@^4B6Xf@9G`%KnZ#ArDfUR zJBH;peHD}A=ziNaO&!yqT1k&INwx}pfhm)U>h}qaR-7_u1P){&8ti_G zTy=9#j*{ufl@6jCsH6`?CF$%FMzb@7{s@amTk&aJo8vp-{P~Uu&9aqEpK{*TwT7*d zfM&X^yhxGmQ{%VXKNN?*FIJ$iT2ds?os`DX=++?A2Bpci5ybx^G}7Qd=A(-xwHSbg z9~GC4Kl)G<%@F(Xk=^X4Q{?lc=R=P@To6};NG?;IX| zdsgl#orv;mV3BXT3O$xA$0>nhQpEg=M~d{`E)UbIV9^{yagFDg!7k*-Toa8URW`?qL)+uM|Ex8h45mEuX z_SV+;HipDOLh$-2iGKTGF}DG-`EBZ%+9x9K5oJ?7l>G%2HbN9sBqLlML-k)!p$Kb} z$~YBYW8B%jO+%;F!=h(Y*up6(@XnNZaPApQP#LC2ckh5drXAXa(_K4;SJ%n! zA~pzkrv&9ad8hkBTRAS3o?qpGkN)eAOW9D;+k(0qYt6VivFGCv;un5 z0d)6TGHenyDTU9KQyHyCPSLoA=%hj0u?ovCYuA=o!Fs5QPdm2}-E~jcA5wCSq?L%X|Ab363IVMeIXJwRG0?xf4 zZMR2_dUy%bhtVM&-BmiTv%=B!`A2#dgD)0?|6{E=O|GWqGttx zK;FUByxQ3uLB#=&-wTE~C49!CAF`$UhU?qWa5b?{R}N|OX&N$f2?BpUr9ae%9| zbki969o#1CTO!KxO+UBqaQ!d^iX()L(h69qIb?ybI76dE8VGbum$tTFI5yBS*u1J+ zj(^9F&VUq<`#llMkIt}1xd<~i+49DhSUS4|@kY|RdA!I=p0^PT*>uN<3FkcaBfe!~ z*n4JOA8<@JvQ}q4wZTe7%pFQGvcu4;a+!=YHCf*(ojZJ&0%7< zo#m-n=xnp=gE+%VhHhpPL0bDZcjfSG+=bVinr?Fa_5k`^p+(EgsfjhW(K=g9rS7f$ zU0VWaDqK+gJWeAu9(sUrw)i6_#HsqG-sTE2%nRwj3<;-hd{_^ zEdSffhS;KE>K?+Z(nTLi6|RS|dKi_1!kZswPQD+Jenzk|o7=QQ*h2)@=-295)$*pU z>UW2ffQQFZ%Pbm{7hq@PEe6O#(>2ehyOBu-uxKESRR3=OmqAH1KKH{BE2k9%-~L5C zt60c7x77&!bM^Fp0{VYlLWuikHxpLTKn`7wbM3*lVE{*6-Wb`+@&~D?UkVlfotKP; zGs`@enB?;PHCs=}0{hcDIcAB@{qARDQ9!~mow+a~6m+nK^h4Y%JY03P=;FNuiISyV zf(D;e7K&e-7^76)#t_8Lq{>4pt3ND>r@nSSza9!YdvtN~WY6hqU$&)tN|n(EhTFZM zqXjywbN94&yP>QRILv@g6yyX*vfgEZO2X`(OF)Pie|or?(pY=GjH$fWT7I4TEMyuR z+ix*f92q$ZyMR6)D)e2aUI}U7WRC~RLXqDUm~aoUK)}rk)$k@WMn3c>qlZVOy!gDx z0}N}}i1=-^=5UianmzZnKYa@xA{*l{11oe=1utsmr@JO8O;1L|dReHO)LyvJ&A&bS zs6~Hjg(KEc;JvTOa2n((lxKROqEJ*b03Ilh&;#gs70ht=igw?oYC*zZ#J!295G9Pg zaPcPfWH*Z2bMcYiRE`JYV(puOYfZ3#_!cYd?ZJ=mVM@VyXtF{n&VebwV1-pdF2rLx z02#%O9IfLESOB7EtuZn%l@ycZNx3*cX!f~9tq41E@Fil=0Z~6}^Vuq+v(sA^nBm^r z-*JA^aL0jxu+wvg^p~J%AhB)Dy1V%Ymqr2t8vGlP@qZ8+|5Jap{ys~}dU*ZMj*SEa z_8WupuLf~Y;Qx4TB`57WQH>^m3RF6{KsXe%Jm4!z<8Dr#0hv*1=pk*H=ez+x$y&=F zq*j_jy7G~qi(K7RT#=QdTDe0iyMkjV_`;)hHkYM~;!fy^#d|E-ZV-6dPx>6-?HEbi zUjLeki+`F`zYH4#qHH1;{Y)sZ1ojTk(jah8AgIuMD`Wmz^t=%UD8F5_Ed5;Krg>*q z={{Qvas8BF*`AW0S5HXrxH;A@E3#QtM*c1jRkRy!o%4t$Cw*hx2C}tb`93}=4TqRYASRlM=C)q~A>#&(g^#M0a3G}*h*aIh8eu2eEjaw%Gzrf8w4gPW+-(7wIGyI(R< z@F+|1R%gY1APl?1fQp$vlgG=SVx(3yIt!)jpdpUIakhLUW@joHX(NXWHv5Xe`@SK7 zA}yJ$GmNZ?3>6jD`#DlTB?w+gGp4S&;$xV%&&y*Z27{7>A=EYbpOtLaIlg^I* zIs>nkA^L2IS}zPOx9qa5LLT(XUnLd;8;qVoFN{2e$q^)s`=dw1Dn^B}H?#+fs2rwR zKYV;8@=dAnNT@^S{9zIc{l-e~XKCyfLCXQ3ldJv^Lev5a*;9GJx`g*?i>1Cx-dSm< ze(3=Ad~Y;010a1c=LoMWWoj2B;~{%NJHHlfpPI5+7+9z$i@$FkRpl$!8%*s=v2ixO zg`da~&hs&``Nznf)RO>6W9Vm5h6QO&=|QKxf>WQe_ux(b@eE89Blu=agEha{@gnt2 z*PKPW%C|~ey(5KF2i3&}@{ovB+7Uj=nzd-%AQm)@Yo5y#I~!wVRPB$cnsz zjDO4mvgMOJ4@&E)gL~X?!N6fef;fdI|E+JXDpFI)OBcdZ6u{(jp7_Qe8fx0BwFt8e zNquBqzH3=CxwcfEg*3`;!&}&iI1mXmK%`n8MV`p1iIb2++j3_hXcuk_>yK5G$=>XW z|Fr81saT&z&TL(7-2I4ZB}VDN(pxG&F*lpXmCNv9ouz@ak&ezHw^^1?1q(wT>j_Nn zmryy`lbn)eeAYU+1PSD31MFCmtJnTcT4ZZr>$^A!AeH)J&lVGQABK&Um4H-yd@c=w zUk?3aZiomBrJ!{|I3*XpR>9>*ojzFugdDX8HuU);_eoTS)9%Qd^FQZjmVqUlSJ9Ig z$V)qlQZsT`TG;H9*e`p~41-%!$oYx&rVR8d>35>yBLFNv0Z;@%@_3lZxis0wBNhx6 z4=!*WCG}E62=GovTC%>}s+C-PdF+jY4A{^EoQo%8~9Y)x~ZuxN2l$42%(j{Nze zoGFHCy&It)nw1&^?W1ahw*2*H$a)W`NZ#6^wQKtKlc%RA&*}QDJ@33F3n{Iv4SjR( z7VA^RrPL~;?Pn08nC^*FiIg9UJa;$3M>ih7aHGN7B?5MyPeg)kH5YS!qFY$9?IPN; z4qBs?XFyWMJ(K221?i$q&Wa_MjsOJc%I5CUNWH z@*vdO+f>(p8^31n>B`Q(1aY%@KRjJU zM{=kH*_|m-O@>92ck~)kEN!-zz~)a75Ae^!I&7b{e}N012s3Fb-?9GHAqkhDQf^4! z8I9xXy(z`viN^xO_8lx$=*^K?+>(SH0Y_HjWS_bVEjMY-pJ9*#ZzJq*8(gRp0iJj* zoAgKvB0#a>KUGIwPgGnsQ|_h<*W2FM7^>c6z62QqKWS}}xVMPayd)v1dF+J*`=s_0 z|5SitC(wyJZo}NTT%t5I_(AeYL(5U_dL|~yAE-(-gHO5^oK37)=NRDvpSRMu@m3;h zHjc9f)efHB0w8~KnTd%St1N(BGKB~*?2HyP@n#Riz=!L9$TL%sFyI@FY*7_UDz zTaSaOYFGt~*vbm*q}JT%9?^CmkkV4Yv^AUnf(kgF|EAss`d7S14)0FnW98of)6D2v z2R3?AYn8wo;oSy1P~?MM+~WYy^+2;g!R~*G#{Fs*caQK-k>4x-?B~B@6m(uYUWeda zf|hep0@!u}PQXXXNF$o+{>9sLIsA|9qrYHr|Lp5uK^nD4<~@sk`A4aa+d2P|0sU>H zaOVIbgMl-Sdf>za61$iOmB{f)wBMg6rP&|aMf$*PY|owKyf+45 z=(WX^rV;s={Wo2-|Bf5?>wj2}E>2i}^+et!Xrjp;;M6LQJ@bcU&lPE*qx-b5?YAN^ z3_!!koIf@E2PMNl{Dj}S;D7Y}|427%1f!1{y$}Gb^!a@yWJtrpLu}^-KY}_k>V&g& z=U^pH>7o`@gb=vbVYQYj>W{r=iUoLEGU2ECUKk){iF*mc2fWf36Um=p)#mEan{D9@b%p2AKwbRh`-3t`Z$1rVx_&yA>p8=-qG&|?w!3hO1P zdL7{D0fsnt>Jr2Z!;Hh=fMW^*(oFb(mjQU|ACcItjKA9dtN(wSe|C^twZNf!bG$Lp z)USRDlYvP&i9ABEb{>kJEhk|N&iJq8Vt&$2@u0 zFi96MmFl9y6Sq{YNkg;K?e3ka8o|zf?kL#pKh8j815g0t1OI&{18(kbYoHzrc1IWx6ata{_9B~yP+_mbo7b_e zm!Ocj6X*$a62LYMZyVT7)*{ZW$!F@d>K&)3E--&>-hUllzi(Urrw{LQ_&l;1fqH=@ zuihIt$v$bAbjITZFn}ePB->A<&wowWImw!;vElU(Tf1IA z`)|%3^l}t~{zrX+zpnd(Fc zVXs`A9R7V};Sz+tuX70k#3mQ4JlTMZdr!+H2=%xOs6;431xkawf$EFDdrC7PK3ud{ zf(_;*0YF51_&;4wmyGj0H=b+HqL_6IpOryM- zI2-?lpy+LBGc6zQ9>l?uS|F}x3sB1F+ZzD&?!R+XknQYjTd}{XuTK=Qv^1O4&WiPu zr82w4Tf>c`AweH)2YyufcPkI__lOxx-QTYyAeQpy#SVaLm~c-{|Gea7|Gd~6ZUd2- zskuKddC1=_cJvb<^ll6PyCq-xU+hTxH-R+GU(fm57W!9z{^>CKKR-Wvhp-P^!Fmnv z6$eEXGdAy*>>Lyn*v==KPGlxo(8UR=$~VqmvHXVY?4~j~qxyFs|)(YkR*eoCHG<5r#9kIyw0n~O&rWY5~7?nKlKihD9>+jQ$ zA90S4ej@f&o+hY${Q<6`$f7V-CDhs!#H!<5gn6@~*w2B${JR=?%ctv~7{#`35CE9ZBtKhT-#20em5U-u07y{xkb>cVfTXhTwE(bsR&= zk0np}%W(#t1N~Y*w^!*+{7L}*2uszp4lgT!qP8ESjZseo#Rc~!0LVsNHsE6+TLhG% zu0?(Z35w<2%d!bC_20Y(^4^FHgWX8lK`pfeZ{+L1_a~FEVIsA^;QqmV+q&t`qp(3g~gbRZ(z0kYjq@1w(uC89rx`6-p46r0y z_F}NXa6-pR&~wXQ-4Luo_@&WJg`(Yij}@_|trOd`elp;eHzh^Seaz$->B$obC^`WE zw7v3rGWhqkh24Mm1&P{_fkwzMv^aE!`IlG9x+f*GPZONi9SaCFu>(hQa{3{TR7C-RgMU6JR!sKKU%>jy!b7`Eyz-|V zt+PJ&@DSC`uiX@{TpkC=0GgXe_z0da3|lwT$5>zMVoHhtE!OIlaJ4Tndzjp47vq@C z-lTGDLbJC3@Q$B97A;0|VwW@S73zK&vfi0|J8TSBhws(a--HiJ>{Vb1zc!$bA%FS| z=jmb$XPb26cwPEYXW^5KUAM%FgV5G&4G{>n`(&)_Mf%)C3-#6&^=F~azwtJ$Rg}3y zw;N{AD(^2rVK6KLNK5ga3jqVWviAZT3Jz@8b2b5nBj@kF$=@6Qsl&XLtwSA}5eI;vjQlxvA zNUwTVke;hUIe{;Cq2c-zfw0((w^pwk5ij=@*UO!k)xn@Z#M-#|=!`uYSsFh2Qrk zRKn(WcvHYno!|4KGm$MYl$6srW+8&SBhLZKrooE1+QJ$G3gLnWL?L?bpX2T?oksoI zJmFPK)HwBtnYjS&Io4u)QL80sE62*JR^zjt-n3kl6uwS)O&5Li?Yx})2W-7^Ae?A- zt$DtNfHGJ8wt_)TF_2@J_dTQ(N+25*H@pP)8{6EJedqdKk+W*Tufg(tg!~c^FB$)p zm%020E86~9_|vcJ|AIjMx2jbB69V;xp76`f$bsOj<0UbS@OKg7K@I8cT>WMViC0xk zn-d+j_Rj}$CUv(DA-l==SKKn4sE|eOp@keq=AKb069gy$g%^UvXD_>2-tK_t4*Tv( zEk}uweN6QA0M|_7KFqh?@=+!_E|C93rk+kq-mc%A!K zYnz5G{FiFEcEe$_t28v<^8Rb39I;F7rQ$u|&UO z99{r%psxtUNX@3tQyH{s1JLJ(x|*5@Y$%BP@6`9 zJE!BBoFgm;R%8T5$vU*;jxJA&-6$=C3>C)8GUoEVCM^}O1{k2y)_z|lP@MVbt7p2q zrj>2ahT4~?iOQtv`RwbI<-{b(c*`myT_nAIjLJajhBcIS;H}AGj#(j+QwgUvD$N#| zARal@*)N1aRaNN{Kf#clJ*F#P{LL1U1efsP?FhfRG< z!EFP{6V!$gp3t5gJ?_eIb;TDv1^}~~M>jPeS)m(^_qB(0Kk!zXR2w^|;iuDY9op+f zhE%YR#oM{!@jjqE0Wfr9g-z*Ej+J(9g+^`PYBntS2aZXeF8HnsfZ$RR)W)S&dp}xFxcXHoh@as{NYIX@_~AXCklLdmTN`F!VL5aVS2}n9H0F5X zZ~`YwsdK0JjFqs-l&I31V288W-WTugdLHXUm#A)%NwgiH0AP3~9qO zYiOU!(G$uj6VXhMul^tucxO+>l2iKg=h?3D*oFhZ;*a(Za-?Bt)A*XUc&3jiRqj@F zs&Z~{u2_I83+%HRt-e;M(CiS25W7x<(&{)wA(liH=t-_?O48zyl@JHl^RJx)(#-IX z^PS8^rcxM*+@p)9eq`4f!lNd9#ODpN$Liy;Jdkt1B#J@2z64RgFo1>99X$Hp?M-$t zU8EG23_sq^t>{@~bT%QE+Y6LSwye38-1H|3ie*4)Pfyt7Q+EK13TSx`F06tvtUy-* z)c^o)WUL3?6N%1I6P|8{Fz^c=xdRGm`@*J9^F{@7Wlz)NakzbbTqGa;%s2Lh1vJbK(a?_6nGj$KrIrznybyC zykR2oR5W{yScNIHyB4>xfjA2lp2eRpl2hZ0&V7E@;=x)VSk!15W4X^3?8p06mg3Ew zAiiOznH9l`-qEKk*G#jf=A ztBo^0ZzjAOm!2&RI8x1MVp~05@8j#J_##D{Lr-6pKQpDT6k1wmJ&ruS1(-bPeYVw% zD-By?&o4nw+@YS4u;3;G!pb`{+7`p4o;;#j@47buf(csxZQU0r%jV)NhG+p3y(zdQ(8S@=NZ8lOaTV65uBT{|r01WT(T9TTV!J*Q7_s+HLxc$~ZIlB0F z^QI%CkYI;|<$93mL(X9@*ghikh@C_+h0iT2HfVr0ymzG%7k9SmTQc1zBXc%o2ydt9j-{8C=slWU+&6WkQ^}b)ksDTDVv*J~^qTPO#2;^5l%#B+_5}zVg$PRNA{w zBuH4jY#%n*F6iCQCu-shilbqQY|VZ9SS#Hj%Ih;(7&`N<)gAxg*{TLySJNkZ0F&Il z^+BwDfnAYtY@{O<2ztkWdkOwdCkR<6p8cA4YW}NTAjDnXKgk>3tTe%BC64Y*F)2>kYy}q7lOc3{q$d@Ea`gXY{3ZXv8 zCONPsr4r|yq%iK?&~+7{`;Sy6L|IwpEi7b2^cik_M!me^JslpgY8C6^GuI&Vs=|v$q zg0IaNIrNxUDil0Tf7?SIx7C+g0tr4cUT|iPEPN9N_z-1IFW0wvV5T(1vRJa!!N#I! zy4Xg>3t*$+ecoklpPYGAbYU$suv%4!_}dy-gZ^y|C|-#BMb^&IGGdctSZ&%Thh}L{ z0tDeny;r%dE&#UI!?&THFY;YwW|=vRb>C$%JRjq3F`}h%_wmsB4!x%DXMzCX&tt+8Kk`||aj1B2a$4J(l$dV!kv@kFfe)+x(Xy!DPw9X3{a>~$ zh$-#Eb(Jf*in-?B;mGPB=;@c|7_<9IKlMLXb=B%GR8m^S@2_1&*C2ec>wGV;Bn>zB zu_+_Q-kS#gSR9Qmjy4aW6X8u(|4LNk!aE#R`r;*s1Mgh+?9|HxPtBpq+uHp<*u-5l zE*f^?veFs9TYQ}DJXT=sh-_nK@cO3xFbp@&VaD6nqIT}Kb5M-oJ449Nbn%ASM~LDm zgJ#pxK?AB;f${q?Q_em_lK0^nIoUwD-V{zPt+A;^-YHF}n0ekagSKO_$;AE~0il~< z2RqhAO4vwNR6s=xSBw2BmFY&Zrd47<%+pm__J}GWG3fcxC?`*y|Be?PM}F25d-iD- zFZ}n29-%zWMQc2~>)Z0Uj20#KC|m>Flj(a2sR|KZ8=BhzUj-ag_rxLr{@28;P<4$m z(^>?X*#mrpMJEN745ne8Papj{gBeFhb|&n#{dl$-YYTS7yMMxFEi_srtCu}B6AF0d z2Jt0wVjorB0P&9cAMd}aax>wbCEzbXbqYPTSecCjNrPCs*pH5oynb7Ed1MIjq#}pW z7AvLOD_mENyKkT+(xqMQ(ko*D6IvkZCs%O}ck9~9z#LRS?<8*@<%gb5NHh?_k{!{E zb{XjHl!yB}S1gI=Osn1U;T(x;Y=VSb3AUVUBK_(-cE0^{_8gL$Bw${ zxO+)`hHb{+RWWjrBNVrw+Ju(&9j zj^ljIn7eKdH-h3Ts!zXaKkDxS+>AJhwJgFFQK$Tq;;Xfv91%&`h4X}#%=(JY=bki~ zD87}ZkG&0;MD-HbSS|IBR=!P*+IsHuSLQGlB|N!WKp6u&Ed;d$+0QY!w^kbdI82dez`+6fMm%7i8?~mn_8}WO5H4O?b(yOKEye)xKvI1`%=(ue88_ zW)(br>i%^iW1qv629DPm+fI)I(k_8rP3o@%-D+j@D=(k zDG=&#&wHBiDF&r&s?wS=XK<{oR~WQ%{r=;SkTt)syMT@1qh^~^s2?S#C=FM9m*5dg ztC`OO=w25(UQD?r8(~6t&)<}oKA{Wn@mBmsNObDEBz9n4Tytwn#zwyE6_HBS06g>2 zPGCWwnQz3oWEX)@SBJzP(UwN3iAhEDbs+}hNZUc62SPL5#@MyGiF)q6jF{-TqO#0V zp2Rb?dG`)?yUn9^FTycMcZp89-%jf|{cBZ;qUENnlA0UaJ3xkC>5K1$i+=k$q#%<;rL+A6MJqUn5S%0A_Ku27t=3z)Lt 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

sWD)z{KbGc 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 Date: Fri, 28 Dec 2018 20:09:06 +0100 Subject: [PATCH 0292/2595] ONNX compatibility updates --- train.py | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/train.py b/train.py index 0ad9c479..9232139d 100644 --- a/train.py +++ b/train.py @@ -31,7 +31,9 @@ def train( device = torch_utils.select_device() print("Using device: \"{}\"".format(device)) - if not multi_scale: + if multi_scale: # pass maximum multi_scale size + img_size = 608 + else: torch.backends.cudnn.benchmark = True os.makedirs(weights_path, exist_ok=True) @@ -47,9 +49,6 @@ def train( model = Darknet(net_config_path, img_size) # Get dataloader - if multi_scale: # pass maximum multi_scale size - img_size = 608 - dataloader = load_images_and_labels(train_path, batch_size=batch_size, img_size=img_size, multi_scale=multi_scale, augment=True) @@ -105,7 +104,7 @@ def train( # scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[54, 61], gamma=0.1) model_info(model) - t0, t1 = time.time(), time.time() + t0 = time.time() mean_recall, mean_precision = 0, 0 for epoch in range(epochs): epoch += start_epoch @@ -183,8 +182,8 @@ def train( '%g/%g' % (epoch, epochs - 1), '%g/%g' % (i, len(dataloader) - 1), rloss['x'], rloss['y'], rloss['w'], rloss['h'], rloss['conf'], rloss['cls'], rloss['loss'], mean_precision, mean_recall, model.losses['nT'], model.losses['TP'], - model.losses['FP'], model.losses['FN'], time.time() - t1) - t1 = time.time() + model.losses['FP'], model.losses['FN'], time.time() - t0) + t0 = time.time() print(s) # Update best loss @@ -228,10 +227,6 @@ def train( with open('results.txt', 'a') as file: file.write(s + '%11.3g' * 3 % (mAP, P, R) + '\n') - # Save final model - dt = time.time() - t0 - print('Finished %g epochs in %.2fs (%.2fs/epoch)' % (epoch, dt, dt / (epoch + 1))) - if __name__ == '__main__': parser = argparse.ArgumentParser() From 16bc3b72c333e57f431f42028c0b41115cba476f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 28 Dec 2018 20:11:10 +0100 Subject: [PATCH 0293/2595] updates --- utils/torch_utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 58bf5ff4..11a09627 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -13,6 +13,7 @@ def init_seeds(seed=0): if CUDA_AVAILABLE: torch.cuda.manual_seed(seed) torch.cuda.manual_seed_all(seed) + # torch.cuda.set_device(0) # OPTIONAL: Set your GPU if multiple available def select_device(force_cpu=False): From d1951c1868ce0cd39821911a387cb6e805b7174a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 28 Dec 2018 20:15:26 +0100 Subject: [PATCH 0294/2595] ONNX compatibility updates --- models.py | 1 + 1 file changed, 1 insertion(+) diff --git a/models.py b/models.py index a08cd822..565cecda 100755 --- a/models.py +++ b/models.py @@ -317,6 +317,7 @@ class Darknet(nn.Module): ONNX_export = False if ONNX_export: + # Produce a single-layer *.onnx model (upsample ops not working in PyTorch 1.0 export yet) output = output[0].squeeze().transpose(0, 1) # first layer reshaped to 85 x 507 output[5:] = torch.nn.functional.softmax(torch.sigmoid(output[5:]) * output[4:5], dim=0) # SSD-like conf return output[5:], output[:4] # ONNX scores, boxes From cc018c73addad97a6dddb378704e46f864a9083b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 28 Dec 2018 21:12:31 +0100 Subject: [PATCH 0295/2595] ONNX compatibility updates --- utils/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 4ae1cc91..cafd1252 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -22,9 +22,9 @@ def load_classes(path): """ Loads class labels at 'path' """ - fp = open(path, 'r') - names = fp.read().split('\n')[:-1] - return names + fp = open('data/coco.names', 'r') + names = fp.read().split('\n') + return list(filter(None, names)) # filter removes empty strings (such as last line) def model_info(model): # Plots a line-by-line description of a PyTorch model From 36a06a1e90686218716399dc10c5155031f4239b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 31 Dec 2018 12:31:38 +0100 Subject: [PATCH 0296/2595] updates --- models.py | 12 ++++++------ utils/onnx2coreml.py | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/models.py b/models.py index 565cecda..6ca97048 100755 --- a/models.py +++ b/models.py @@ -169,12 +169,12 @@ class YOLOLayer(nn.Module): p_boxes = None if batch_report: # Predictd boxes: add offset and scale with anchors (in grid space, i.e. 0-13) - gx = self.grid_x[:, :, :nG, :nG] - gy = self.grid_y[:, :, :nG, :nG] - p_boxes = torch.stack((x.data + gx - width / 2, - y.data + gy - height / 2, - x.data + gx + width / 2, - y.data + gy + height / 2), 4) # x1y1x2y2 + gx = x.data + self.grid_x[:, :, :nG, :nG] + gy = y.data + self.grid_y[:, :, :nG, :nG] + p_boxes = torch.stack((gx - width / 2, + gy - height / 2, + gx + width / 2, + gy + height / 2), 4) # x1y1x2y2 tx, ty, tw, th, mask, tcls, TP, FP, FN, TC = \ build_targets(p_boxes, p_conf, p_cls, targets, self.scaled_anchors, self.nA, self.nC, nG, batch_report) diff --git a/utils/onnx2coreml.py b/utils/onnx2coreml.py index 40a47bb1..e9f8f852 100644 --- a/utils/onnx2coreml.py +++ b/utils/onnx2coreml.py @@ -105,9 +105,9 @@ def main(): pipeline = Pipeline(input_features, output_features) # Add 3rd dimension of size 1 (apparently not needed, produces error on compile) - # ssd_output = coreml_model._spec.description.output - # ssd_output[0].type.multiArrayType.shape[:] = [num_classes, num_anchors, 1] - # ssd_output[1].type.multiArrayType.shape[:] = [4, num_anchors, 1] + ssd_output = coreml_model._spec.description.output + ssd_output[0].type.multiArrayType.shape[:] = [num_classes, num_anchors, 1] + ssd_output[1].type.multiArrayType.shape[:] = [4, num_anchors, 1] # And now we can add the three models, in order: pipeline.add_model(coreml_model) From 17a02ae3e464277ff1aefe26947d62b863ed34bf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 31 Dec 2018 12:33:34 +0100 Subject: [PATCH 0297/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 6ca97048..287f4904 100755 --- a/models.py +++ b/models.py @@ -168,7 +168,7 @@ class YOLOLayer(nn.Module): p_boxes = None if batch_report: - # Predictd boxes: add offset and scale with anchors (in grid space, i.e. 0-13) + # Predicted boxes: add offset and scale with anchors (in grid space, i.e. 0-13) gx = x.data + self.grid_x[:, :, :nG, :nG] gy = y.data + self.grid_y[:, :, :nG, :nG] p_boxes = torch.stack((gx - width / 2, From 0bb3fcb049df6bbfa9db06a21e3882897fcba65b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 31 Dec 2018 12:44:00 +0100 Subject: [PATCH 0298/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 61d7969d..52ff4499 100755 --- a/detect.py +++ b/detect.py @@ -24,7 +24,7 @@ def detect( device = torch_utils.select_device() print("Using device: \"{}\"".format(device)) - os.system('rm -rf ' + output) + # os.system('rm -rf ' + output) os.makedirs(output, exist_ok=True) data_config = parse_data_config(data_config_path) From 7283f26f6fdbd88b1506a50c20a9edddf2ecfa57 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 1 Jan 2019 17:52:45 +0100 Subject: [PATCH 0299/2595] updates --- utils/utils.py | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index cafd1252..260939a5 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -222,8 +222,6 @@ def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG if nTb == 0: continue t = target[b] - if batch_report: - FN[b, :nTb] = 1 # Convert to position relative to box TC[b, :nTb], gx, gy, gw, gh = t[:, 0].long(), t[:, 1] * nG, t[:, 2] * nG, t[:, 3] * nG, t[:, 4] * nG @@ -233,25 +231,25 @@ def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG # iou of targets-anchors (using wh only) box1 = t[:, 3:5] * nG - # box2 = anchor_grid_wh[:, gj, gi] - box2 = anchor_wh.unsqueeze(1).repeat(1, nTb, 1) + box2 = anchor_wh.unsqueeze(1) inter_area = torch.min(box1, box2).prod(2) - iou_anch = inter_area / (gw * gh + box2.prod(2) - inter_area + 1e-16) + iou = inter_area / (gw * gh + box2.prod(2) - inter_area + 1e-16) # Select best iou_pred and anchor - iou_anch_best, a = iou_anch.max(0) # best anchor [0-2] for each target + iou_best, a = iou.max(0) # best anchor [0-2] for each target # Select best unique target-anchor combinations if nTb > 1: - iou_order = np.argsort(-iou_anch_best) # best to worst + iou_order = torch.argsort(-iou_best) # best to worst - # Unique anchor selection (slower but retains original order) - u = torch.cat((gi, gj, a), 0).view(3, -1).numpy() + # Unique anchor selection + u = torch.cat((gi, gj, a), 0).view(3, -1) _, first_unique = np.unique(u[:, iou_order], axis=1, return_index=True) # first unique indices + # _, first_unique = torch.unique(u[:, iou_order], dim=1, return_inverse=True) # different than numpy? i = iou_order[first_unique] # best anchor must share significant commonality (iou) with target - i = i[iou_anch_best[i] > 0.10] + i = i[iou_best[i] > 0.10] if len(i) == 0: continue @@ -259,7 +257,7 @@ def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG if len(t.shape) == 1: t = t.view(1, 5) else: - if iou_anch_best < 0.10: + if iou_best < 0.10: continue i = 0 From b181c61f4bc0cf36452adc55d13c63db88c8d0a1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 2 Jan 2019 16:32:38 +0100 Subject: [PATCH 0300/2595] updates --- detect.py | 3 ++- models.py | 15 +++++++------- utils/utils.py | 56 ++++++++++++++++++++++++-------------------------- 3 files changed, 37 insertions(+), 37 deletions(-) diff --git a/detect.py b/detect.py index 52ff4499..fe839100 100755 --- a/detect.py +++ b/detect.py @@ -24,7 +24,7 @@ def detect( device = torch_utils.select_device() print("Using device: \"{}\"".format(device)) - # os.system('rm -rf ' + output) + os.system('rm -rf ' + output) os.makedirs(output, exist_ok=True) data_config = parse_data_config(data_config_path) @@ -66,6 +66,7 @@ def detect( # Get detections with torch.no_grad(): + # cv2.imwrite('zidane_416.jpg', 255 * img.transpose((1, 2, 0))[:, :, ::-1]) # letterboxed img = torch.from_numpy(img).unsqueeze(0).to(device) # pred = torch.onnx._export(model, img, 'weights/model.onnx', verbose=True); return # ONNX export pred = model(img) diff --git a/models.py b/models.py index 287f4904..9d76946d 100755 --- a/models.py +++ b/models.py @@ -89,7 +89,7 @@ class Upsample(torch.nn.Module): self.mode = mode def forward(self, x): - return nn.functional.interpolate(x, scale_factor=self.scale_factor, mode=self.mode) + return F.interpolate(x, scale_factor=self.scale_factor, mode=self.mode) class YOLOLayer(nn.Module): @@ -120,9 +120,10 @@ class YOLOLayer(nn.Module): nG = int(self.img_dim / stride) # number grid points self.grid_x = torch.arange(nG).repeat(nG, 1).view([1, 1, nG, nG]).float() self.grid_y = torch.arange(nG).repeat(nG, 1).t().view([1, 1, nG, nG]).float() - self.scaled_anchors = torch.FloatTensor([(a_w / stride, a_h / stride) for a_w, a_h in anchors]) - self.anchor_w = self.scaled_anchors[:, 0:1].view((1, nA, 1, 1)) - self.anchor_h = self.scaled_anchors[:, 1:2].view((1, nA, 1, 1)) + self.grid_y = torch.arange(nG).repeat(nG, 1).t().view([1, 1, nG, nG]).float() + self.anchor_wh = torch.FloatTensor([(a_w / stride, a_h / stride) for a_w, a_h in anchors]) # scale anchors + self.anchor_w = self.anchor_wh[:, 0:1].view((1, nA, 1, 1)) + self.anchor_h = self.anchor_wh[:, 1:2].view((1, nA, 1, 1)) self.weights = class_weights() self.loss_means = torch.ones(6) @@ -177,7 +178,7 @@ class YOLOLayer(nn.Module): gy + height / 2), 4) # x1y1x2y2 tx, ty, tw, th, mask, tcls, TP, FP, FN, TC = \ - build_targets(p_boxes, p_conf, p_cls, targets, self.scaled_anchors, self.nA, self.nC, nG, batch_report) + build_targets(p_boxes, p_conf, p_cls, targets, self.anchor_wh, self.nA, self.nC, nG, batch_report) tcls = tcls[mask] if x.is_cuda: @@ -319,8 +320,8 @@ class Darknet(nn.Module): if ONNX_export: # Produce a single-layer *.onnx model (upsample ops not working in PyTorch 1.0 export yet) output = output[0].squeeze().transpose(0, 1) # first layer reshaped to 85 x 507 - output[5:] = torch.nn.functional.softmax(torch.sigmoid(output[5:]) * output[4:5], dim=0) # SSD-like conf - return output[5:], output[:4] # ONNX scores, boxes + output[5:85] = F.softmax(output[5:85], dim=0) * output[4:5] # SSD-like conf + return output[5:85], output[:4] # ONNX scores, boxes return sum(output) if is_training else torch.cat(output, 1) diff --git a/utils/utils.py b/utils/utils.py index 260939a5..0b442799 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -309,8 +309,6 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): # cross-class NMS (experimental) cross_class_nms = False if cross_class_nms: - # thresh = 0.85 - thresh = nms_thres a = pred.clone() _, indices = torch.sort(-a[:, 4], 0) # sort best to worst a = a[indices] @@ -325,7 +323,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): if len(close) > 0: close = close + i + 1 iou = bbox_iou(a[i:i + 1, :4], a[close.squeeze(), :4].reshape(-1, 4), x1y1x2y2=False) - bad = close[iou > thresh] + bad = close[iou > nms_thres] if len(bad) > 0: mask = torch.ones(len(a)).type(torch.ByteTensor) @@ -333,13 +331,12 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): a = a[mask] pred = a - x, y, w, h = pred[:, 0], pred[:, 1], pred[:, 2], pred[:, 3] - a = w * h # area - ar = w / (h + 1e-16) # aspect ratio - - log_w, log_h, log_a, log_ar = torch.log(w), torch.log(h), torch.log(a), torch.log(ar) - + # Experiment: Prior class size rejection + # x, y, w, h = pred[:, 0], pred[:, 1], pred[:, 2], pred[:, 3] + # a = w * h # area + # ar = w / (h + 1e-16) # aspect ratio # n = len(w) + # log_w, log_h, log_a, log_ar = torch.log(w), torch.log(h), torch.log(a), torch.log(ar) # shape_likelihood = np.zeros((n, 60), dtype=np.float32) # x = np.concatenate((log_w.reshape(-1, 1), log_h.reshape(-1, 1)), 1) # from scipy.stats import multivariate_normal @@ -348,7 +345,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): class_prob, class_pred = torch.max(F.softmax(pred[:, 5:], 1), 1) - v = ((pred[:, 4] > conf_thres) & (class_prob > .3)) + v = ((pred[:, 4] > conf_thres) & (class_prob > .3)) # TODO examine arbitrary 0.3 thres here v = v.nonzero().squeeze() if len(v.shape) == 0: v = v.unsqueeze(0) @@ -375,44 +372,43 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): nms_style = 'OR' # 'AND' or 'OR' (classical) for c in unique_labels: # Get the detections with the particular class - detections_class = detections[detections[:, -1] == c] + det_class = detections[detections[:, -1] == c] # Sort the detections by maximum objectness confidence - _, conf_sort_index = torch.sort(detections_class[:, 4], descending=True) - detections_class = detections_class[conf_sort_index] + _, conf_sort_index = torch.sort(det_class[:, 4], descending=True) + det_class = det_class[conf_sort_index] # Perform non-maximum suppression - max_detections = [] + det_max = [] if nms_style == 'OR': # Classical NMS - while detections_class.shape[0]: + while det_class.shape[0]: # Get detection with highest confidence and save as max detection - max_detections.append(detections_class[0].unsqueeze(0)) + det_max.append(det_class[0].unsqueeze(0)) # Stop if we're at the last detection - if len(detections_class) == 1: + if len(det_class) == 1: break # Get the IOUs for all boxes with lower confidence - ious = bbox_iou(max_detections[-1], detections_class[1:]) + ious = bbox_iou(det_max[-1], det_class[1:]) # Remove detections with IoU >= NMS threshold - detections_class = detections_class[1:][ious < nms_thres] + det_class = det_class[1:][ious < nms_thres] - elif nms_style == 'AND': # 'AND'-style NMS, at least two boxes must share commonality to pass, single boxes erased - while detections_class.shape[0]: - if len(detections_class) == 1: + elif nms_style == 'AND': # 'AND'-style NMS: >=2 boxes must share commonality to pass, single boxes erased + while det_class.shape[0]: + if len(det_class) == 1: break - ious = bbox_iou(detections_class[:1], detections_class[1:]) + ious = bbox_iou(det_class[:1], det_class[1:]) if ious.max() > 0.5: - max_detections.append(detections_class[0].unsqueeze(0)) + det_max.append(det_class[0].unsqueeze(0)) # Remove detections with IoU >= NMS threshold - detections_class = detections_class[1:][ious < nms_thres] + det_class = det_class[1:][ious < nms_thres] - if len(max_detections) > 0: - max_detections = torch.cat(max_detections).data + if len(det_max) > 0: + det_max = torch.cat(det_max).data # Add max detections to outputs - output[image_i] = max_detections if output[image_i] is None else torch.cat( - (output[image_i], max_detections)) + output[image_i] = det_max if output[image_i] is None else torch.cat((output[image_i], det_max)) return output @@ -426,6 +422,7 @@ def strip_optimizer_from_checkpoint(filename='weights/best.pt'): def coco_class_count(path='../coco/labels/train2014/'): + # histogram of occurrences per class import glob nC = 80 # number classes @@ -443,6 +440,7 @@ def plot_results(): import numpy as np import matplotlib.pyplot as plt # import os; os.system('rm -rf results.txt && wget https://storage.googleapis.com/ultralytics/results_v1_0.txt') + plt.figure(figsize=(16, 8)) s = ['X', 'Y', 'Width', 'Height', 'Objectness', 'Classification', 'Total Loss', 'Precision', 'Recall', 'mAP'] files = sorted(glob.glob('results*.txt')) From cff2a813155c2514a5fcb8efed70162d17d030e1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 3 Jan 2019 23:41:31 +0100 Subject: [PATCH 0301/2595] updates --- detect.py | 4 ++-- models.py | 43 ++++++++++++++++++++++++++++++------------- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/detect.py b/detect.py index fe839100..2e9ed61d 100755 --- a/detect.py +++ b/detect.py @@ -7,7 +7,6 @@ from utils.utils import * from utils import torch_utils - def detect( net_config_path, data_config_path, @@ -68,7 +67,8 @@ def detect( with torch.no_grad(): # cv2.imwrite('zidane_416.jpg', 255 * img.transpose((1, 2, 0))[:, :, ::-1]) # letterboxed img = torch.from_numpy(img).unsqueeze(0).to(device) - # pred = torch.onnx._export(model, img, 'weights/model.onnx', verbose=True); return # ONNX export + if ONNX_EXPORT: + pred = torch.onnx._export(model, img, 'weights/model.onnx', verbose=True); return # ONNX export pred = model(img) pred = pred[pred[:, :, 4] > conf_thres] diff --git a/models.py b/models.py index 9d76946d..504423a3 100755 --- a/models.py +++ b/models.py @@ -5,6 +5,8 @@ import torch.nn as nn from utils.parse_config import * from utils.utils import * +ONNX_EXPORT = True + def create_modules(module_defs): """ @@ -80,7 +82,7 @@ class EmptyLayer(nn.Module): super(EmptyLayer, self).__init__() -class Upsample(torch.nn.Module): +class Upsample(nn.Module): # Custom Upsample layer (nn.Upsample gives deprecated warning message) def __init__(self, scale_factor=1, mode='nearest'): @@ -120,22 +122,30 @@ class YOLOLayer(nn.Module): nG = int(self.img_dim / stride) # number grid points self.grid_x = torch.arange(nG).repeat(nG, 1).view([1, 1, nG, nG]).float() self.grid_y = torch.arange(nG).repeat(nG, 1).t().view([1, 1, nG, nG]).float() - self.grid_y = torch.arange(nG).repeat(nG, 1).t().view([1, 1, nG, nG]).float() self.anchor_wh = torch.FloatTensor([(a_w / stride, a_h / stride) for a_w, a_h in anchors]) # scale anchors - self.anchor_w = self.anchor_wh[:, 0:1].view((1, nA, 1, 1)) - self.anchor_h = self.anchor_wh[:, 1:2].view((1, nA, 1, 1)) + self.anchor_w = self.anchor_wh[:, 0].view((1, nA, 1, 1)) + self.anchor_h = self.anchor_wh[:, 1].view((1, nA, 1, 1)) self.weights = class_weights() self.loss_means = torch.ones(6) self.tx, self.ty, self.tw, self.th = [], [], [], [] self.yolo_layer = anchor_idxs[0] / nA # 2, 1, 0 + self.stride = stride + + if ONNX_EXPORT: # use fully populated and reshaped tensors + self.anchor_w = self.anchor_w.repeat((1, 1, nG, nG)).view(1, -1, 1) + self.anchor_h = self.anchor_h.repeat((1, 1, nG, nG)).view(1, -1, 1) + self.grid_x = self.grid_x.repeat(1, nA, 1, 1).view(1, -1, 1) + self.grid_y = self.grid_y.repeat(1, nA, 1, 1).view(1, -1, 1) + self.grid_xy = torch.cat((self.grid_x, self.grid_y), 2) + self.anchor_wh = torch.cat((self.anchor_w, self.anchor_h), 2) / nG def forward(self, p, targets=None, batch_report=False, var=None): FT = torch.cuda.FloatTensor if p.is_cuda else torch.FloatTensor bs = p.shape[0] # batch size nG = p.shape[2] # number of grid points - if p.is_cuda and not self.grid_x.is_cuda: + if p.is_cuda and not self.weights.is_cuda: self.grid_x, self.grid_y = self.grid_x.cuda(), self.grid_y.cuda() self.anchor_w, self.anchor_h = self.anchor_w.cuda(), self.anchor_h.cuda() self.weights, self.loss_means = self.weights.cuda(), self.loss_means.cuda() @@ -239,16 +249,25 @@ class YOLOLayer(nn.Module): nT, TP, FP, FPe, FN, TC else: - stride = self.img_dim / nG + if ONNX_EXPORT: + p = p.view(1, -1, 85) + xy = torch.sigmoid(p[..., 0:2]) + self.grid_xy # x, y + width_height = torch.exp(p[..., 2:4]) * self.anchor_wh # width, height + p_conf = torch.sigmoid(p[..., 4:5]) # Conf + ## p_cls = torch.sigmoid(p[..., 5:85]) # Class + p_cls = F.softmax(p[..., 5:85], 2) * p_conf # SSD-like conf + # p_cls = torch.exp(p[..., 5:85]) / torch.exp(p[..., 5:85]).sum(2).unsqueeze(2) #* p_conf # F.softmax() equivalent + return torch.cat((xy / nG, width_height, p_conf, p_cls), 2).squeeze().t() + p[..., 0] = torch.sigmoid(p[..., 0]) + self.grid_x # x p[..., 1] = torch.sigmoid(p[..., 1]) + self.grid_y # y p[..., 2] = torch.exp(p[..., 2]) * self.anchor_w # width p[..., 3] = torch.exp(p[..., 3]) * self.anchor_h # height p[..., 4] = torch.sigmoid(p[..., 4]) # p_conf - p[..., :4] *= stride + p[..., :4] *= self.stride # reshape from [1, 3, 13, 13, 85] to [1, 507, 85] - return p.view(bs, self.nA * nG * nG, 5 + self.nC) + return p.view(bs, -1, 5 + self.nC) class Darknet(nn.Module): @@ -316,12 +335,10 @@ class Darknet(nn.Module): self.losses['nT'] /= 3 self.losses['TC'] = 0 - ONNX_export = False - if ONNX_export: + if ONNX_EXPORT: # Produce a single-layer *.onnx model (upsample ops not working in PyTorch 1.0 export yet) - output = output[0].squeeze().transpose(0, 1) # first layer reshaped to 85 x 507 - output[5:85] = F.softmax(output[5:85], dim=0) * output[4:5] # SSD-like conf - return output[5:85], output[:4] # ONNX scores, boxes + output = output[0] # first layer reshaped to 85 x 507 + return output[5:85].t(), output[:4].t() # ONNX scores, boxes return sum(output) if is_training else torch.cat(output, 1) From 5a7313ca5ab248e46610bc1ac1522458d7f543df Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 3 Jan 2019 23:42:07 +0100 Subject: [PATCH 0302/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 504423a3..fbd85522 100755 --- a/models.py +++ b/models.py @@ -5,7 +5,7 @@ import torch.nn as nn from utils.parse_config import * from utils.utils import * -ONNX_EXPORT = True +ONNX_EXPORT = False def create_modules(module_defs): From d673b6c5f4da2f9647b2f07b5297fd0457e7a5e8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 3 Jan 2019 23:44:51 +0100 Subject: [PATCH 0303/2595] updates --- utils/onnx2coreml.py | 101 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 83 insertions(+), 18 deletions(-) diff --git a/utils/onnx2coreml.py b/utils/onnx2coreml.py index e9f8f852..f6ddecaf 100644 --- a/utils/onnx2coreml.py +++ b/utils/onnx2coreml.py @@ -1,4 +1,5 @@ import os +import onnx from onnx import onnx_pb from onnx_coreml import convert import glob @@ -8,7 +9,6 @@ import glob # http://machinethink.net/blog/mobilenet-ssdlite-coreml/ # https://github.com/hollance/YOLO-CoreML-MPSNNGraph - def main(): os.system('rm -rf saved_models && mkdir saved_models') files = glob.glob('saved_models/*.onnx') + glob.glob('../yolov3/weights/*.onnx') @@ -17,33 +17,65 @@ def main(): # 1. ONNX to CoreML name = 'saved_models/' + f.split('/')[-1].replace('.onnx', '') + # # Load the ONNX model + model = onnx.load(f) + + # Check that the IR is well formed + print(onnx.checker.check_model(model)) + + # Print a human readable representation of the graph + print(onnx.helper.printable_graph(model.graph)) + model_file = open(f, 'rb') model_proto = onnx_pb.ModelProto() model_proto.ParseFromString(model_file.read()) - coreml_model = convert(model_proto, image_input_names=['0']) - # coreml_model.save(model_out) + yolov3_model = convert(model_proto, image_input_names=['0'], preprocessing_args={'image_scale': 1. / 255}) # 2. Reduce model to FP16, change outputs to DOUBLE and save import coremltools - spec = coreml_model.get_spec() + spec = yolov3_model.get_spec() for i in range(2): spec.description.output[i].type.multiArrayType.dataType = \ coremltools.proto.FeatureTypes_pb2.ArrayFeatureType.ArrayDataType.Value('DOUBLE') spec = coremltools.utils.convert_neural_network_spec_weights_to_fp16(spec) - coreml_model = coremltools.models.MLModel(spec) + yolov3_model = coremltools.models.MLModel(spec) num_classes = 80 num_anchors = 507 - spec.description.output[0].type.multiArrayType.shape.append(num_classes) spec.description.output[0].type.multiArrayType.shape.append(num_anchors) + spec.description.output[0].type.multiArrayType.shape.append(num_classes) + # spec.description.output[0].type.multiArrayType.shape.append(1) - spec.description.output[1].type.multiArrayType.shape.append(4) spec.description.output[1].type.multiArrayType.shape.append(num_anchors) - coreml_model.save(name + '.mlmodel') + spec.description.output[1].type.multiArrayType.shape.append(4) + # spec.description.output[1].type.multiArrayType.shape.append(1) + + # rename + # input_mlmodel = input_tensor.replace(":", "__").replace("/", "__") + # class_output_mlmodel = class_output_tensor.replace(":", "__").replace("/", "__") + # bbox_output_mlmodel = bbox_output_tensor.replace(":", "__").replace("/", "__") + # + # for i in range(len(spec.neuralNetwork.layers)): + # if spec.neuralNetwork.layers[i].input[0] == input_mlmodel: + # spec.neuralNetwork.layers[i].input[0] = 'image' + # if spec.neuralNetwork.layers[i].output[0] == class_output_mlmodel: + # spec.neuralNetwork.layers[i].output[0] = 'scores' + # if spec.neuralNetwork.layers[i].output[0] == bbox_output_mlmodel: + # spec.neuralNetwork.layers[i].output[0] = 'boxes' + + spec.neuralNetwork.preprocessing[0].featureName = '0' + + yolov3_model.save(name + '.mlmodel') print(spec.description) + # 2.5. Try to Predict: + from PIL import Image + img = Image.open('../yolov3/data/samples/zidane_416.jpg') + out = yolov3_model.predict({'0': img}) + print(out['141'].shape, out['143'].shape) + # 3. Create NMS protobuf import numpy as np @@ -51,7 +83,7 @@ def main(): nms_spec.specificationVersion = 3 for i in range(2): - decoder_output = coreml_model._spec.description.output[i].SerializeToString() + decoder_output = yolov3_model._spec.description.output[i].SerializeToString() nms_spec.description.input.add() nms_spec.description.input[i].ParseFromString(decoder_output) @@ -74,15 +106,15 @@ def main(): del ma_type.shape[:] nms = nms_spec.nonMaximumSuppression - nms.confidenceInputFeatureName = '133' # 1x507x80 - nms.coordinatesInputFeatureName = '134' # 1x507x4 + nms.confidenceInputFeatureName = '141' # 1x507x80 + nms.coordinatesInputFeatureName = '143' # 1x507x4 nms.confidenceOutputFeatureName = 'confidence' nms.coordinatesOutputFeatureName = 'coordinates' nms.iouThresholdInputFeatureName = 'iouThreshold' nms.confidenceThresholdInputFeatureName = 'confidenceThreshold' nms.iouThreshold = 0.6 - nms.confidenceThreshold = 0.4 + nms.confidenceThreshold = 0.9 nms.pickTop.perClass = True labels = np.loadtxt('../yolov3/data/coco.names', dtype=str, delimiter='\n') @@ -91,12 +123,40 @@ def main(): nms_model = coremltools.models.MLModel(nms_spec) nms_model.save(name + '_nms.mlmodel') + # out_nms = nms_model.predict({ + # '143': out['143'].squeeze().reshape((80, 507)), + # '144': out['144'].squeeze().reshape((4, 507)) + # }) + # print(out_nms['confidence'].shape, out_nms['coordinates'].shape) + + # # # 3.5 Add Softmax model + # from coremltools.models import datatypes + # from coremltools.models import neural_network + # + # input_features = [ + # ("141", datatypes.Array(num_anchors, num_classes, 1)), + # ("143", datatypes.Array(num_anchors, 4, 1)) + # ] + # + # output_features = [ + # ("141", datatypes.Array(num_anchors, num_classes, 1)), + # ("143", datatypes.Array(num_anchors, 4, 1)) + # ] + # + # builder = neural_network.NeuralNetworkBuilder(input_features, output_features) + # builder.add_softmax(name="softmax_pcls", + # dim=(0, 3, 2, 1), + # input_name="scores", + # output_name="permute_scores_output") + # softmax_model = coremltools.models.MLModel(builder.spec) + # softmax_model.save("softmax.mlmodel") + # 4. Pipeline models togethor from coremltools.models import datatypes # from coremltools.models import neural_network from coremltools.models.pipeline import Pipeline - input_features = [('image', datatypes.Array(3, 416, 416)), + input_features = [('0', datatypes.Array(3, 416, 416)), ('iouThreshold', datatypes.Double()), ('confidenceThreshold', datatypes.Double())] @@ -105,16 +165,21 @@ def main(): pipeline = Pipeline(input_features, output_features) # Add 3rd dimension of size 1 (apparently not needed, produces error on compile) - ssd_output = coreml_model._spec.description.output - ssd_output[0].type.multiArrayType.shape[:] = [num_classes, num_anchors, 1] - ssd_output[1].type.multiArrayType.shape[:] = [4, num_anchors, 1] + yolov3_output = yolov3_model._spec.description.output + yolov3_output[0].type.multiArrayType.shape[:] = [num_anchors, num_classes, 1] + yolov3_output[1].type.multiArrayType.shape[:] = [num_anchors, 4, 1] + + nms_input = nms_model._spec.description.input + for i in range(2): + nms_input[i].type.multiArrayType.shape[:] = yolov3_output[i].type.multiArrayType.shape[:] # And now we can add the three models, in order: - pipeline.add_model(coreml_model) + pipeline.add_model(yolov3_model) + pipeline.add_model(nms_model) # Correct datatypes - pipeline.spec.description.input[0].ParseFromString(coreml_model._spec.description.input[0].SerializeToString()) + pipeline.spec.description.input[0].ParseFromString(yolov3_model._spec.description.input[0].SerializeToString()) pipeline.spec.description.output[0].ParseFromString(nms_model._spec.description.output[0].SerializeToString()) pipeline.spec.description.output[1].ParseFromString(nms_model._spec.description.output[1].SerializeToString()) From 178e1a346b1bcde6535d61e7f62d7f42f8d0cdc8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 5 Jan 2019 17:23:17 +0200 Subject: [PATCH 0304/2595] updates --- README.md | 2 +- requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 17634800..19402d4f 100755 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ The https://github.com/ultralytics/yolov3 repo contains inference and training c Python 3.7 or later with the following `pip3 install -U -r requirements.txt` packages: - `numpy` -- `torch` +- `torch >= 1.0.0` - `opencv-python` # Training diff --git a/requirements.txt b/requirements.txt index 2d57893b..eade9a5b 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # pip3 install -U -r requirements.txt numpy opencv-python -torch +torch >= 1.0.0 matplotlib From 6e1ff541c969f7b22f91d45af2f80611432441c8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 6 Jan 2019 14:23:04 +0200 Subject: [PATCH 0305/2595] updates --- models.py | 11 ++++++++--- utils/onnx2coreml.py | 11 ++++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/models.py b/models.py index fbd85522..5e3cd78a 100755 --- a/models.py +++ b/models.py @@ -254,9 +254,14 @@ class YOLOLayer(nn.Module): xy = torch.sigmoid(p[..., 0:2]) + self.grid_xy # x, y width_height = torch.exp(p[..., 2:4]) * self.anchor_wh # width, height p_conf = torch.sigmoid(p[..., 4:5]) # Conf - ## p_cls = torch.sigmoid(p[..., 5:85]) # Class - p_cls = F.softmax(p[..., 5:85], 2) * p_conf # SSD-like conf - # p_cls = torch.exp(p[..., 5:85]) / torch.exp(p[..., 5:85]).sum(2).unsqueeze(2) #* p_conf # F.softmax() equivalent + p_cls = p[..., 5:85] + + # Broadcasting only supported on first dimension in CoreML. See onnx-coreml/_operators.py + # p_cls = F.softmax(p_cls, 2) * p_conf # SSD-like conf + p_cls = torch.exp(p_cls).permute(2, 1, 0) + p_cls = p_cls / p_cls.sum(0).unsqueeze(0) * p_conf.permute(2, 1, 0) # F.softmax() equivalent + p_cls = p_cls.permute(2, 1, 0) + return torch.cat((xy / nG, width_height, p_conf, p_cls), 2).squeeze().t() p[..., 0] = torch.sigmoid(p[..., 0]) + self.grid_x # x diff --git a/utils/onnx2coreml.py b/utils/onnx2coreml.py index f6ddecaf..2e18a763 100644 --- a/utils/onnx2coreml.py +++ b/utils/onnx2coreml.py @@ -68,13 +68,14 @@ def main(): spec.neuralNetwork.preprocessing[0].featureName = '0' yolov3_model.save(name + '.mlmodel') + # yolov3_model.visualize_spec() print(spec.description) # 2.5. Try to Predict: from PIL import Image img = Image.open('../yolov3/data/samples/zidane_416.jpg') - out = yolov3_model.predict({'0': img}) - print(out['141'].shape, out['143'].shape) + out = yolov3_model.predict({'0': img}, useCPUOnly=True) + print(out['148'].shape, out['150'].shape) # 3. Create NMS protobuf import numpy as np @@ -106,15 +107,15 @@ def main(): del ma_type.shape[:] nms = nms_spec.nonMaximumSuppression - nms.confidenceInputFeatureName = '141' # 1x507x80 - nms.coordinatesInputFeatureName = '143' # 1x507x4 + nms.confidenceInputFeatureName = '148' # 1x507x80 + nms.coordinatesInputFeatureName = '150' # 1x507x4 nms.confidenceOutputFeatureName = 'confidence' nms.coordinatesOutputFeatureName = 'coordinates' nms.iouThresholdInputFeatureName = 'iouThreshold' nms.confidenceThresholdInputFeatureName = 'confidenceThreshold' nms.iouThreshold = 0.6 - nms.confidenceThreshold = 0.9 + nms.confidenceThreshold = 0.3 nms.pickTop.perClass = True labels = np.loadtxt('../yolov3/data/coco.names', dtype=str, delimiter='\n') From 8dfa65394296c2c10dcc1cf353be4c264ec29efe Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 6 Jan 2019 15:58:41 +0200 Subject: [PATCH 0306/2595] updates --- utils/datasets.py | 2 ++ utils/onnx2coreml.py | 15 +++++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index cfcb19b1..5ec67a44 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -15,7 +15,9 @@ from utils.utils import xyxy2xywh class load_images(): # for inference def __init__(self, path, batch_size=1, img_size=416): if os.path.isdir(path): + image_format = ['.jpg', '.jpeg', '.png', '.tif'] self.files = sorted(glob.glob('%s/*.*' % path)) + self.files = list(filter(lambda x: os.path.splitext(x)[1].lower() in image_format, self.files)) elif os.path.isfile(path): self.files = [path] diff --git a/utils/onnx2coreml.py b/utils/onnx2coreml.py index 2e18a763..4c00c20a 100644 --- a/utils/onnx2coreml.py +++ b/utils/onnx2coreml.py @@ -42,8 +42,11 @@ def main(): spec = coremltools.utils.convert_neural_network_spec_weights_to_fp16(spec) yolov3_model = coremltools.models.MLModel(spec) + name_out0 = spec.description.output[0].name + name_out1 = spec.description.output[1].name + num_classes = 80 - num_anchors = 507 + num_anchors = 507 # 507 for yolov3-tiny, spec.description.output[0].type.multiArrayType.shape.append(num_anchors) spec.description.output[0].type.multiArrayType.shape.append(num_classes) # spec.description.output[0].type.multiArrayType.shape.append(1) @@ -75,7 +78,7 @@ def main(): from PIL import Image img = Image.open('../yolov3/data/samples/zidane_416.jpg') out = yolov3_model.predict({'0': img}, useCPUOnly=True) - print(out['148'].shape, out['150'].shape) + print(out[name_out0].shape, out[name_out1].shape) # 3. Create NMS protobuf import numpy as np @@ -107,15 +110,15 @@ def main(): del ma_type.shape[:] nms = nms_spec.nonMaximumSuppression - nms.confidenceInputFeatureName = '148' # 1x507x80 - nms.coordinatesInputFeatureName = '150' # 1x507x4 + nms.confidenceInputFeatureName = name_out0 # 1x507x80 + nms.coordinatesInputFeatureName = name_out1 # 1x507x4 nms.confidenceOutputFeatureName = 'confidence' nms.coordinatesOutputFeatureName = 'coordinates' nms.iouThresholdInputFeatureName = 'iouThreshold' nms.confidenceThresholdInputFeatureName = 'confidenceThreshold' - nms.iouThreshold = 0.6 - nms.confidenceThreshold = 0.3 + nms.iouThreshold = 0.4 + nms.confidenceThreshold = 0.5 nms.pickTop.perClass = True labels = np.loadtxt('../yolov3/data/coco.names', dtype=str, delimiter='\n') From 212597fddd47cedd7540a2a7dee66a8e5d9666ba Mon Sep 17 00:00:00 2001 From: Josh Veitch-Michaelis Date: Sun, 6 Jan 2019 20:54:04 +0000 Subject: [PATCH 0307/2595] Fix absolute path in class name loader --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 0b442799..9a7853e3 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -22,7 +22,7 @@ def load_classes(path): """ Loads class labels at 'path' """ - fp = open('data/coco.names', 'r') + fp = open(path, 'r') names = fp.read().split('\n') return list(filter(None, names)) # filter removes empty strings (such as last line) From 558b23bca7ba10e7df05a75db4c5704f75855eae Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 6 Jan 2019 23:57:59 +0100 Subject: [PATCH 0308/2595] updates --- models.py | 2 ++ weights/download_yolov3_weights.sh | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/models.py b/models.py index 5e3cd78a..a80a8578 100755 --- a/models.py +++ b/models.py @@ -354,6 +354,8 @@ def load_weights(self, weights_path, cutoff=-1): if weights_path.endswith('darknet53.conv.74'): cutoff = 75 + elif weights_path.endswith('yolov3-tiny.conv.15'): + cutoff = 16 # Open the weights file fp = open(weights_path, 'rb') diff --git a/weights/download_yolov3_weights.sh b/weights/download_yolov3_weights.sh index 1cae8bfa..5c04d47e 100644 --- a/weights/download_yolov3_weights.sh +++ b/weights/download_yolov3_weights.sh @@ -14,3 +14,8 @@ wget -c https://pjreddie.com/media/files/yolov3-spp.weights # darknet53 weights (first 75 layers only) wget -c https://pjreddie.com/media/files/darknet53.conv.74 + +# yolov3-tiny weights from darknet (first 16 layers only) +# ./darknet partial cfg/yolov3-tiny.cfg yolov3-tiny.weights yolov3-tiny.conv.15 15 +# mv yolov3-tiny.conv.15 ../ + From fcda9a2fa05d17c7dedd1b59898cb82c09ad4094 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 8 Jan 2019 19:34:29 +0100 Subject: [PATCH 0309/2595] updates --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 6389e5cc..926cca79 100755 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,7 @@ temp-plot.html *.onnx *.mlmodel darknet53.conv.74 +yolov3-tiny.conv.15 # GitHub Python GitIgnore ---------------------------------------------------------------------------------------------- # Byte-compiled / optimized / DLL files From acfe4aaf94ec9e46fccd8cb96ea55c9bba89a400 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 8 Jan 2019 19:37:23 +0100 Subject: [PATCH 0310/2595] updates --- detect.py | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/detect.py b/detect.py index 2e9ed61d..3e74c6aa 100755 --- a/detect.py +++ b/detect.py @@ -7,6 +7,7 @@ from utils.utils import * from utils import torch_utils + def detect( net_config_path, data_config_path, @@ -68,7 +69,8 @@ def detect( # cv2.imwrite('zidane_416.jpg', 255 * img.transpose((1, 2, 0))[:, :, ::-1]) # letterboxed img = torch.from_numpy(img).unsqueeze(0).to(device) if ONNX_EXPORT: - pred = torch.onnx._export(model, img, 'weights/model.onnx', verbose=True); return # ONNX export + pred = torch.onnx._export(model, img, 'weights/model.onnx', verbose=True); + return # ONNX export pred = model(img) pred = pred[pred[:, :, 4] > conf_thres] @@ -90,18 +92,17 @@ def detect( for img_i, (path, detections) in enumerate(zip(imgs, img_detections)): print("image %g: '%s'" % (img_i, path)) - if save_images: - img = cv2.imread(path) - - # The amount of padding that was added - pad_x = max(img.shape[0] - img.shape[1], 0) * (img_size / max(img.shape)) - pad_y = max(img.shape[1] - img.shape[0], 0) * (img_size / max(img.shape)) - # Image height and width after padding is removed - unpad_h = img_size - pad_y - unpad_w = img_size - pad_x - # Draw bounding boxes and labels of detections if detections is not None: + img = cv2.imread(path) + + # The amount of padding that was added + pad_x = max(img.shape[0] - img.shape[1], 0) * (img_size / max(img.shape)) + pad_y = max(img.shape[1] - img.shape[0], 0) * (img_size / max(img.shape)) + # Image height and width after padding is removed + unpad_h = img_size - pad_y + unpad_w = img_size - pad_x + unique_classes = detections[:, -1].cpu().unique() bbox_colors = random.sample(color_list, len(unique_classes)) @@ -136,9 +137,9 @@ def detect( color = bbox_colors[int(np.where(unique_classes == int(cls_pred))[0])] plot_one_box([x1, y1, x2, y2], img, label=label, color=color) - if save_images: - # Save generated image with detections - cv2.imwrite(results_img_path.replace('.bmp', '.jpg').replace('.tif', '.jpg'), img) + if save_images: + # Save generated image with detections + cv2.imwrite(results_img_path.replace('.bmp', '.jpg').replace('.tif', '.jpg'), img) if platform == 'darwin': # MacOS (local) os.system('open ' + output) From 646a5737401fe44f1ee1c679707b3a3b09995953 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 9 Jan 2019 11:48:04 +0100 Subject: [PATCH 0311/2595] updates --- models.py | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/models.py b/models.py index a80a8578..c9e12d4e 100755 --- a/models.py +++ b/models.py @@ -5,7 +5,7 @@ import torch.nn as nn from utils.parse_config import * from utils.utils import * -ONNX_EXPORT = False +ONNX_EXPORT = True def create_modules(module_defs): @@ -128,7 +128,6 @@ class YOLOLayer(nn.Module): self.weights = class_weights() self.loss_means = torch.ones(6) - self.tx, self.ty, self.tw, self.th = [], [], [], [] self.yolo_layer = anchor_idxs[0] / nA # 2, 1, 0 self.stride = stride @@ -205,25 +204,11 @@ class YOLOLayer(nn.Module): lw = k * MSELoss(w[mask], tw[mask]) lh = k * MSELoss(h[mask], th[mask]) - # self.tx.extend(tx[mask].data.numpy()) - # self.ty.extend(ty[mask].data.numpy()) - # self.tw.extend(tw[mask].data.numpy()) - # self.th.extend(th[mask].data.numpy()) - # print([np.mean(self.tx), np.std(self.tx)],[np.mean(self.ty), np.std(self.ty)],[np.mean(self.tw), np.std(self.tw)],[np.mean(self.th), np.std(self.th)]) - # [0.5040668, 0.2885492] [0.51384246, 0.28328574] [-0.4754091, 0.57951087] [-0.25998235, 0.44858757] - # [0.50184494, 0.2858976] [0.51747805, 0.2896323] [0.12962963, 0.6263085] [-0.2722081, 0.61574113] - # [0.5032071, 0.28825334] [0.5063132, 0.2808862] [0.21124361, 0.44760725] [0.35445485, 0.6427766] - # import matplotlib.pyplot as plt - # plt.hist(self.x) - - # lconf = k * BCEWithLogitsLoss(p_conf[mask], mask[mask].float()) - lcls = (k / 4) * CrossEntropyLoss(p_cls[mask], torch.argmax(tcls, 1)) # lcls = (k * 10) * BCEWithLogitsLoss(p_cls[mask], tcls.float()) else: lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) - # lconf += k * BCEWithLogitsLoss(p_conf[~mask], mask[~mask].float()) lconf = (k * 64) * BCEWithLogitsLoss(p_conf, mask.float()) # Sum loss components From 88804cad3bc5107676cb614720827dfa05ea47a5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 10 Jan 2019 10:32:39 +0100 Subject: [PATCH 0312/2595] Update models.py --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index c9e12d4e..8090b903 100755 --- a/models.py +++ b/models.py @@ -5,7 +5,7 @@ import torch.nn as nn from utils.parse_config import * from utils.utils import * -ONNX_EXPORT = True +ONNX_EXPORT = False def create_modules(module_defs): From 8b9aae484b5487a71d3b4ecd2c980438898bb59f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 8 Feb 2019 15:13:44 +0100 Subject: [PATCH 0313/2595] updates --- detect.py | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/detect.py b/detect.py index 3e74c6aa..ce1389b2 100755 --- a/detect.py +++ b/detect.py @@ -41,17 +41,6 @@ def detect( else: # darknet format load_weights(model, weights_file_path) - # current = model.state_dict() - # saved = checkpoint['model'] - # # 1. filter out unnecessary keys - # saved = {k: v for k, v in saved.items() if ((k in current) and (current[k].shape == v.shape))} - # # 2. overwrite entries in the existing state dict - # current.update(saved) - # # 3. load the new state dict - # model.load_state_dict(current) - # model.to(device).eval() - # del checkpoint, current, saved - model.to(device).eval() # Set Dataloader @@ -69,7 +58,7 @@ def detect( # cv2.imwrite('zidane_416.jpg', 255 * img.transpose((1, 2, 0))[:, :, ::-1]) # letterboxed img = torch.from_numpy(img).unsqueeze(0).to(device) if ONNX_EXPORT: - pred = torch.onnx._export(model, img, 'weights/model.onnx', verbose=True); + pred = torch.onnx._export(model, img, 'weights/model.onnx', verbose=True) return # ONNX export pred = model(img) pred = pred[pred[:, :, 4] > conf_thres] From 8b88e50f2f7d123b60635e6978657cd0ef704ace Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 8 Feb 2019 16:50:48 +0100 Subject: [PATCH 0314/2595] updates --- detect.py | 14 ++++++-------- models.py | 18 ++++++++++++++---- test.py | 8 ++++---- train.py | 11 +---------- 4 files changed, 25 insertions(+), 26 deletions(-) diff --git a/detect.py b/detect.py index ce1389b2..39ce30f4 100755 --- a/detect.py +++ b/detect.py @@ -11,7 +11,7 @@ from utils import torch_utils def detect( net_config_path, data_config_path, - weights_file_path, + weights_path, images_path, output='output', batch_size=16, @@ -32,14 +32,14 @@ def detect( # Load model model = Darknet(net_config_path, img_size) - if weights_file_path.endswith('.pt'): # pytorch format - if weights_file_path.endswith('weights/yolov3.pt') and not os.path.isfile(weights_file_path): - os.system('wget https://storage.googleapis.com/ultralytics/yolov3.pt -O ' + weights_file_path) - checkpoint = torch.load(weights_file_path, map_location='cpu') + if weights_path.endswith('.pt'): # pytorch format + if weights_path.endswith('weights/yolov3.pt') and not os.path.isfile(weights_path): + os.system('wget https://storage.googleapis.com/ultralytics/yolov3.pt -O ' + weights_path) + checkpoint = torch.load(weights_path, map_location='cpu') model.load_state_dict(checkpoint['model']) del checkpoint else: # darknet format - load_weights(model, weights_file_path) + load_darknet_weights(model, weights_path) model.to(device).eval() @@ -136,8 +136,6 @@ def detect( if __name__ == '__main__': parser = argparse.ArgumentParser() - # Get data configuration - parser.add_argument('--image-folder', type=str, default='data/samples', help='path to images') parser.add_argument('--output-folder', type=str, default='output', help='path to outputs') parser.add_argument('--plot-flag', type=bool, default=True) diff --git a/models.py b/models.py index 8090b903..34c573e3 100755 --- a/models.py +++ b/models.py @@ -1,5 +1,6 @@ from collections import defaultdict +import os import torch.nn as nn from utils.parse_config import * @@ -333,13 +334,22 @@ class Darknet(nn.Module): return sum(output) if is_training else torch.cat(output, 1) -def load_weights(self, weights_path, cutoff=-1): +def load_darknet_weights(self, weights_path, cutoff=-1): # Parses and loads the weights stored in 'weights_path' - # @:param cutoff - save layers between 0 and cutoff (cutoff = -1 -> all are saved) + # cutoff: save layers between 0 and cutoff (if cutoff = -1 all are saved) + weights_file = weights_path.split(os.sep)[-1] - if weights_path.endswith('darknet53.conv.74'): + # Try to download weights if not available locally + if not os.path.isfile(weights_path): + try: + os.system('wget https://pjreddie.com/media/files/' + weights_file + ' -P ' + weights_path) + except: + assert os.path.isfile(weights_path) + + # Establish cutoffs + if weights_file == 'darknet53.conv.74': cutoff = 75 - elif weights_path.endswith('yolov3-tiny.conv.15'): + elif weights_file == 'yolov3-tiny.conv.15': cutoff = 16 # Open the weights file diff --git a/test.py b/test.py index 51019b5f..fafd816d 100644 --- a/test.py +++ b/test.py @@ -10,7 +10,7 @@ from utils import torch_utils def test( net_config_path, data_config_path, - weights_file_path, + weights_path, batch_size=16, img_size=416, iou_thres=0.5, @@ -30,12 +30,12 @@ def test( model = Darknet(net_config_path, img_size) # Load weights - if weights_file_path.endswith('.pt'): # pytorch format - checkpoint = torch.load(weights_file_path, map_location='cpu') + if weights_path.endswith('.pt'): # pytorch format + checkpoint = torch.load(weights_path, map_location='cpu') model.load_state_dict(checkpoint['model']) del checkpoint else: # darknet format - load_weights(model, weights_file_path) + load_darknet_weights(model, weights_path) model.to(device).eval() diff --git a/train.py b/train.py index 9232139d..6ab18406 100644 --- a/train.py +++ b/train.py @@ -10,9 +10,6 @@ from utils import torch_utils # Import test.py to get mAP after each epoch import test -DARKNET_WEIGHTS_FILENAME = 'darknet53.conv.74' -DARKNET_WEIGHTS_URL = 'https://pjreddie.com/media/files/{}'.format(DARKNET_WEIGHTS_FILENAME) - def train( net_config_path, @@ -83,13 +80,7 @@ def train( best_loss = float('inf') # Initialize model with darknet53 weights (optional) - def_weight_file = os.path.join(weights_path, DARKNET_WEIGHTS_FILENAME) - if not os.path.isfile(def_weight_file): - os.system('wget {} -P {}'.format( - DARKNET_WEIGHTS_URL, - weights_path)) - assert os.path.isfile(def_weight_file) - load_weights(model, def_weight_file) + load_darknet_weights(model, os.path.join(weights_path, 'darknet53.conv.74')) if torch.cuda.device_count() > 1: raise Exception('Multi-GPU not currently supported: https://github.com/ultralytics/yolov3/issues/21') From d6abdaf8d06680be19d449efdea549bd0458aa2b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 8 Feb 2019 17:17:48 +0100 Subject: [PATCH 0315/2595] updates --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index eade9a5b..d934964e 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ # pip3 install -U -r requirements.txt +# conda install numpy opencv matplotlib && conda install pytorch torchvision -c pytorch numpy opencv-python torch >= 1.0.0 From c2436d819707f9c1be850580a0ca4cbf53ee4501 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 8 Feb 2019 22:43:05 +0100 Subject: [PATCH 0316/2595] updates --- detect.py | 146 +++++++++++++++++------------------------- models.py | 14 ++-- test.py | 30 ++++----- train.py | 47 ++++++-------- utils/datasets.py | 28 +++----- utils/parse_config.py | 2 +- utils/torch_utils.py | 1 + 7 files changed, 107 insertions(+), 161 deletions(-) diff --git a/detect.py b/detect.py index 39ce30f4..c33a5633 100755 --- a/detect.py +++ b/detect.py @@ -9,53 +9,48 @@ from utils import torch_utils def detect( - net_config_path, - data_config_path, - weights_path, + cfg, + weights, images_path, output='output', - batch_size=16, img_size=416, conf_thres=0.3, nms_thres=0.45, save_txt=False, - save_images=False, + save_images=True, ): device = torch_utils.select_device() - print("Using device: \"{}\"".format(device)) os.system('rm -rf ' + output) os.makedirs(output, exist_ok=True) - data_config = parse_data_config(data_config_path) - # Load model - model = Darknet(net_config_path, img_size) + model = Darknet(cfg, img_size) - if weights_path.endswith('.pt'): # pytorch format - if weights_path.endswith('weights/yolov3.pt') and not os.path.isfile(weights_path): - os.system('wget https://storage.googleapis.com/ultralytics/yolov3.pt -O ' + weights_path) - checkpoint = torch.load(weights_path, map_location='cpu') + if weights.endswith('.pt'): # pytorch format + if weights.endswith('weights/yolov3.pt') and not os.path.isfile(weights): + os.system('wget https://storage.googleapis.com/ultralytics/yolov3.pt -O ' + weights) + checkpoint = torch.load(weights, map_location='cpu') model.load_state_dict(checkpoint['model']) del checkpoint else: # darknet format - load_darknet_weights(model, weights_path) + load_darknet_weights(model, weights) model.to(device).eval() # Set Dataloader - classes = load_classes(data_config['names']) # Extracts class labels from file - dataloader = load_images(images_path, batch_size=batch_size, img_size=img_size) + dataloader = load_images(images_path, img_size=img_size) - imgs = [] # Stores image paths - img_detections = [] # Stores detections for each image index - prev_time = time.time() - for i, (img_paths, img) in enumerate(dataloader): - print('%g/%g' % (i + 1, len(dataloader)), end=' ') + # Classes and colors + classes = load_classes(parse_data_cfg('cfg/coco.data')['names']) # Extracts class labels from file + color_list = [[random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)] for _ in range(len(classes))] + + for i, (path, img, img0) in enumerate(dataloader): + print('image %g/%g: %s' % (i + 1, len(dataloader), path)) + t = time.time() # Get detections with torch.no_grad(): - # cv2.imwrite('zidane_416.jpg', 255 * img.transpose((1, 2, 0))[:, :, ::-1]) # letterboxed img = torch.from_numpy(img).unsqueeze(0).to(device) if ONNX_EXPORT: pred = torch.onnx._export(model, img, 'weights/model.onnx', verbose=True) @@ -64,71 +59,58 @@ def detect( pred = pred[pred[:, :, 4] > conf_thres] if len(pred) > 0: - detections = non_max_suppression(pred.unsqueeze(0), conf_thres, nms_thres) - img_detections.extend(detections) - imgs.extend(img_paths) + detections = non_max_suppression(pred.unsqueeze(0), conf_thres, nms_thres)[0] - print('Batch %d... Done. (%.3fs)' % (i, time.time() - prev_time)) - prev_time = time.time() + # Draw bounding boxes and labels of detections + if detections is not None: + img = img0 - # Bounding-box colors - color_list = [[random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)] for _ in range(len(classes))] + # The amount of padding that was added + pad_x = max(img.shape[0] - img.shape[1], 0) * (img_size / max(img.shape)) + pad_y = max(img.shape[1] - img.shape[0], 0) * (img_size / max(img.shape)) + # Image height and width after padding is removed + unpad_h = img_size - pad_y + unpad_w = img_size - pad_x - if len(img_detections) == 0: - return + unique_classes = detections[:, -1].cpu().unique() + bbox_colors = random.sample(color_list, len(unique_classes)) - # Iterate through images and save plot of detections - for img_i, (path, detections) in enumerate(zip(imgs, img_detections)): - print("image %g: '%s'" % (img_i, path)) + # write results to .txt file + results_img_path = os.path.join(output, path.split('/')[-1]) + results_txt_path = results_img_path + '.txt' + if os.path.isfile(results_txt_path): + os.remove(results_txt_path) - # Draw bounding boxes and labels of detections - if detections is not None: - img = cv2.imread(path) + for i in unique_classes: + n = (detections[:, -1].cpu() == i).sum() + print('%g %ss' % (n, classes[int(i)])) - # The amount of padding that was added - pad_x = max(img.shape[0] - img.shape[1], 0) * (img_size / max(img.shape)) - pad_y = max(img.shape[1] - img.shape[0], 0) * (img_size / max(img.shape)) - # Image height and width after padding is removed - unpad_h = img_size - pad_y - unpad_w = img_size - pad_x + for x1, y1, x2, y2, conf, cls_conf, cls_pred in detections: + # Rescale coordinates to original dimensions + box_h = ((y2 - y1) / unpad_h) * img.shape[0] + box_w = ((x2 - x1) / unpad_w) * img.shape[1] + y1 = (((y1 - pad_y // 2) / unpad_h) * img.shape[0]).round().item() + x1 = (((x1 - pad_x // 2) / unpad_w) * img.shape[1]).round().item() + x2 = (x1 + box_w).round().item() + y2 = (y1 + box_h).round().item() + x1, y1, x2, y2 = max(x1, 0), max(y1, 0), max(x2, 0), max(y2, 0) - unique_classes = detections[:, -1].cpu().unique() - bbox_colors = random.sample(color_list, len(unique_classes)) + # write to file + if save_txt: + with open(results_txt_path, 'a') as file: + file.write(('%g %g %g %g %g %g \n') % (x1, y1, x2, y2, cls_pred, cls_conf * conf)) - # write results to .txt file - results_img_path = os.path.join(output, path.split('/')[-1]) - results_txt_path = results_img_path + '.txt' - if os.path.isfile(results_txt_path): - os.remove(results_txt_path) - - for i in unique_classes: - n = (detections[:, -1].cpu() == i).sum() - print('%g %ss' % (n, classes[int(i)])) - - for x1, y1, x2, y2, conf, cls_conf, cls_pred in detections: - # Rescale coordinates to original dimensions - box_h = ((y2 - y1) / unpad_h) * img.shape[0] - box_w = ((x2 - x1) / unpad_w) * img.shape[1] - y1 = (((y1 - pad_y // 2) / unpad_h) * img.shape[0]).round().item() - x1 = (((x1 - pad_x // 2) / unpad_w) * img.shape[1]).round().item() - x2 = (x1 + box_w).round().item() - y2 = (y1 + box_h).round().item() - x1, y1, x2, y2 = max(x1, 0), max(y1, 0), max(x2, 0), max(y2, 0) - - # write to file - if save_txt: - with open(results_txt_path, 'a') as file: - file.write(('%g %g %g %g %g %g \n') % (x1, y1, x2, y2, cls_pred, cls_conf * conf)) + if save_images: + # Add the bbox to the plot + label = '%s %.2f' % (classes[int(cls_pred)], conf) + color = bbox_colors[int(np.where(unique_classes == int(cls_pred))[0])] + plot_one_box([x1, y1, x2, y2], img, label=label, color=color) if save_images: - # Add the bbox to the plot - label = '%s %.2f' % (classes[int(cls_pred)], conf) - color = bbox_colors[int(np.where(unique_classes == int(cls_pred))[0])] - plot_one_box([x1, y1, x2, y2], img, label=label, color=color) + # Save generated image with detections + cv2.imwrite(results_img_path.replace('.bmp', '.jpg').replace('.tif', '.jpg'), img) - if save_images: - # Save generated image with detections - cv2.imwrite(results_img_path.replace('.bmp', '.jpg').replace('.tif', '.jpg'), img) + print('Done. (%.3fs)\n' % (time.time() - t)) if platform == 'darwin': # MacOS (local) os.system('open ' + output) @@ -138,32 +120,20 @@ if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--image-folder', type=str, default='data/samples', help='path to images') parser.add_argument('--output-folder', type=str, default='output', help='path to outputs') - parser.add_argument('--plot-flag', type=bool, default=True) - parser.add_argument('--txt-out', type=bool, default=False) parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') - parser.add_argument('--data-config', type=str, default='cfg/coco.data', help='path to data config file') parser.add_argument('--weights', type=str, default='weights/yolov3.pt', help='path to weights file') parser.add_argument('--conf-thres', type=float, default=0.50, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') - parser.add_argument('--batch-size', type=int, default=1, help='size of the batches') parser.add_argument('--img-size', type=int, default=32 * 13, help='size of each image dimension') opt = parser.parse_args() print(opt) - torch.cuda.empty_cache() - - init_seeds() - detect( opt.cfg, - opt.data_config, opt.weights, opt.image_folder, output=opt.output_folder, - batch_size=opt.batch_size, img_size=opt.img_size, conf_thres=opt.conf_thres, nms_thres=opt.nms_thres, - save_txt=opt.txt_out, - save_images=opt.plot_flag, ) diff --git a/models.py b/models.py index 34c573e3..29a01eaf 100755 --- a/models.py +++ b/models.py @@ -334,17 +334,17 @@ class Darknet(nn.Module): return sum(output) if is_training else torch.cat(output, 1) -def load_darknet_weights(self, weights_path, cutoff=-1): - # Parses and loads the weights stored in 'weights_path' +def load_darknet_weights(self, weights, cutoff=-1): + # Parses and loads the weights stored in 'weights' # cutoff: save layers between 0 and cutoff (if cutoff = -1 all are saved) - weights_file = weights_path.split(os.sep)[-1] + weights_file = weights.split(os.sep)[-1] # Try to download weights if not available locally - if not os.path.isfile(weights_path): + if not os.path.isfile(weights): try: - os.system('wget https://pjreddie.com/media/files/' + weights_file + ' -P ' + weights_path) + os.system('wget https://pjreddie.com/media/files/' + weights_file + ' -P ' + weights) except: - assert os.path.isfile(weights_path) + assert os.path.isfile(weights) # Establish cutoffs if weights_file == 'darknet53.conv.74': @@ -353,7 +353,7 @@ def load_darknet_weights(self, weights_path, cutoff=-1): cutoff = 16 # Open the weights file - fp = open(weights_path, 'rb') + fp = open(weights, 'rb') header = np.fromfile(fp, dtype=np.int32, count=5) # First five are header values # Needed to write header when saving weights diff --git a/test.py b/test.py index fafd816d..bcb54f99 100644 --- a/test.py +++ b/test.py @@ -8,34 +8,32 @@ from utils import torch_utils def test( - net_config_path, - data_config_path, - weights_path, + cfg, + data_cfg, + weights, batch_size=16, img_size=416, iou_thres=0.5, conf_thres=0.3, nms_thres=0.45, - n_cpus=0, ): device = torch_utils.select_device() - print("Using device: \"{}\"".format(device)) # Configure run - data_config = parse_data_config(data_config_path) - nC = int(data_config['classes']) # number of classes (80 for COCO) - test_path = data_config['valid'] + data_cfg = parse_data_cfg(data_cfg) + nC = int(data_cfg['classes']) # number of classes (80 for COCO) + test_path = data_cfg['valid'] # Initiate model - model = Darknet(net_config_path, img_size) + model = Darknet(cfg, img_size) # Load weights - if weights_path.endswith('.pt'): # pytorch format - checkpoint = torch.load(weights_path, map_location='cpu') + if weights.endswith('.pt'): # pytorch format + checkpoint = torch.load(weights, map_location='cpu') model.load_state_dict(checkpoint['model']) del checkpoint else: # darknet format - load_darknet_weights(model, weights_path) + load_darknet_weights(model, weights) model.to(device).eval() @@ -118,7 +116,7 @@ def test( # Print mAP per class print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP') + '\n\nmAP Per Class:') - classes = load_classes(data_config['names']) # Extracts class labels from file + classes = load_classes(data_cfg['names']) # Extracts class labels from file for i, c in enumerate(classes): print('%15s: %-.4f' % (c, AP_accum[i] / AP_accum_count[i])) @@ -130,12 +128,11 @@ if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='path to model config file') - parser.add_argument('--data-config', type=str, default='cfg/coco.data', help='path to data config file') + parser.add_argument('--data-cfg', type=str, default='cfg/coco.data', help='path to data config file') parser.add_argument('--weights', type=str, default='weights/yolov3.pt', help='path to weights file') parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.3, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') - parser.add_argument('--n-cpus', type=int, default=0, help='number of cpu threads to use during batch generation') parser.add_argument('--img-size', type=int, default=416, help='size of each image dimension') opt = parser.parse_args() print(opt, end='\n\n') @@ -144,12 +141,11 @@ if __name__ == '__main__': mAP = test( opt.cfg, - opt.data_config, + opt.data_cfg, opt.weights, batch_size=opt.batch_size, img_size=opt.img_size, iou_thres=opt.iou_thres, conf_thres=opt.conf_thres, nms_thres=opt.nms_thres, - n_cpus=opt.n_cpus, ) diff --git a/train.py b/train.py index 6ab18406..f517f5b2 100644 --- a/train.py +++ b/train.py @@ -12,38 +12,37 @@ import test def train( - net_config_path, - data_config_path, + cfg, + data_cfg, img_size=416, resume=False, epochs=100, batch_size=16, accumulated_batches=1, - weights_path='weights', + weights='weights', report=False, multi_scale=False, freeze_backbone=True, var=0, ): device = torch_utils.select_device() - print("Using device: \"{}\"".format(device)) if multi_scale: # pass maximum multi_scale size img_size = 608 else: torch.backends.cudnn.benchmark = True - os.makedirs(weights_path, exist_ok=True) - latest_weights_file = os.path.join(weights_path, 'latest.pt') - best_weights_file = os.path.join(weights_path, 'best.pt') + os.makedirs(weights, exist_ok=True) + latest_weights_file = os.path.join(weights, 'latest.pt') + best_weights_file = os.path.join(weights, 'best.pt') # Configure run - data_config = parse_data_config(data_config_path) - num_classes = int(data_config['classes']) - train_path = data_config['train'] + data_cfg = parse_data_cfg(data_cfg) + num_classes = int(data_cfg['classes']) + train_path = data_cfg['train'] # Initialize model - model = Darknet(net_config_path, img_size) + model = Darknet(cfg, img_size) # Get dataloader dataloader = load_images_and_labels(train_path, batch_size=batch_size, img_size=img_size, @@ -80,7 +79,7 @@ def train( best_loss = float('inf') # Initialize model with darknet53 weights (optional) - load_darknet_weights(model, os.path.join(weights_path, 'darknet53.conv.74')) + load_darknet_weights(model, os.path.join(weights, 'darknet53.conv.74')) if torch.cuda.device_count() > 1: raise Exception('Multi-GPU not currently supported: https://github.com/ultralytics/yolov3/issues/21') @@ -191,24 +190,16 @@ def train( # Save best checkpoint if best_loss == loss_per_target: - os.system('cp {} {}'.format( - latest_weights_file, - best_weights_file, - )) + os.system('cp ' + latest_weights_file + ' ' + best_weights_file) # Save backup weights every 5 epochs if (epoch > 0) & (epoch % 5 == 0): - backup_file_name = 'backup{}.pt'.format(epoch) - backup_file_path = os.path.join(weights_path, backup_file_name) - os.system('cp {} {}'.format( - latest_weights_file, - backup_file_path, - )) + os.system('cp ' + latest_weights_file + ' ' + os.path.join(weights, 'backup{}.pt'.format(epoch))) # Calculate mAP mAP, R, P = test.test( - net_config_path, - data_config_path, + cfg, + data_cfg, latest_weights_file, batch_size=batch_size, img_size=img_size, @@ -224,11 +215,11 @@ if __name__ == '__main__': parser.add_argument('--epochs', type=int, default=100, help='number of epochs') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulated-batches', type=int, default=1, help='number of batches before optimizer step') - parser.add_argument('--data-config', type=str, default='cfg/coco.data', help='path to data config file') + parser.add_argument('--data-cfg', type=str, default='cfg/coco.data', help='path to data config file') parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') - parser.add_argument('--weights-path', type=str, default='weights', help='path to store weights') + parser.add_argument('--weights', type=str, default='weights', help='path to store weights') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--report', action='store_true', help='report TP, FP, FN, P and R per batch (slower)') parser.add_argument('--freeze', action='store_true', help='freeze darknet53.conv.74 layers for first epoch') @@ -241,13 +232,13 @@ if __name__ == '__main__': torch.cuda.empty_cache() train( opt.cfg, - opt.data_config, + opt.data_cfg, img_size=opt.img_size, resume=opt.resume, epochs=opt.epochs, batch_size=opt.batch_size, accumulated_batches=opt.accumulated_batches, - weights_path=opt.weights_path, + weights=opt.weights, report=opt.report, multi_scale=opt.multi_scale, freeze_backbone=opt.freeze, diff --git a/utils/datasets.py b/utils/datasets.py index 5ec67a44..b8f52d99 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -13,7 +13,7 @@ from utils.utils import xyxy2xywh class load_images(): # for inference - def __init__(self, path, batch_size=1, img_size=416): + def __init__(self, path, img_size=416): if os.path.isdir(path): image_format = ['.jpg', '.jpeg', '.png', '.tif'] self.files = sorted(glob.glob('%s/*.*' % path)) @@ -22,43 +22,37 @@ class load_images(): # for inference self.files = [path] self.nF = len(self.files) # number of image files - self.nB = math.ceil(self.nF / batch_size) # number of batches - self.batch_size = batch_size self.height = img_size assert self.nF > 0, 'No images found in path %s' % path - # RGB normalization values - # self.rgb_mean = np.array([60.134, 49.697, 40.746], dtype=np.float32).reshape((3, 1, 1)) - # self.rgb_std = np.array([29.99, 24.498, 22.046], dtype=np.float32).reshape((3, 1, 1)) - def __iter__(self): self.count = -1 return self def __next__(self): self.count += 1 - if self.count == self.nB: + if self.count == self.nF: raise StopIteration img_path = self.files[self.count] # Read image - img = cv2.imread(img_path) # BGR + img0 = cv2.imread(img_path) # BGR + assert img0 is not None, 'Failed to load ' + img_path # Padded resize - img, _, _, _ = resize_square(img, height=self.height, color=(127.5, 127.5, 127.5)) + img, _, _, _ = resize_square(img0, height=self.height, color=(127.5, 127.5, 127.5)) # Normalize RGB img = img[:, :, ::-1].transpose(2, 0, 1) img = np.ascontiguousarray(img, dtype=np.float32) - # img -= self.rgb_mean - # img /= self.rgb_std img /= 255.0 - return [img_path], img + # cv2.imwrite(img_path + '.letterbox.jpg', 255 * img.transpose((1, 2, 0))[:, :, ::-1]) # save letterbox image + return img_path, img, img0 def __len__(self): - return self.nB # number of batches + return self.nF # number of files class load_images_and_labels(): # for training @@ -81,10 +75,6 @@ class load_images_and_labels(): # for training assert self.nB > 0, 'No images found in path %s' % path - # RGB normalization values - # self.rgb_mean = np.array([60.134, 49.697, 40.746], dtype=np.float32).reshape((1, 3, 1, 1)) - # self.rgb_std = np.array([29.99, 24.498, 22.046], dtype=np.float32).reshape((1, 3, 1, 1)) - def __iter__(self): self.count = -1 self.shuffled_vector = np.random.permutation(self.nF) if self.augment else np.arange(self.nF) @@ -191,8 +181,6 @@ class load_images_and_labels(): # for training # Normalize img_all = np.stack(img_all)[:, :, :, ::-1].transpose(0, 3, 1, 2) # BGR to RGB and cv2 to pytorch img_all = np.ascontiguousarray(img_all, dtype=np.float32) - # img_all -= self.rgb_mean - # img_all /= self.rgb_std img_all /= 255.0 return torch.from_numpy(img_all), labels_all diff --git a/utils/parse_config.py b/utils/parse_config.py index 9dc03585..dae59196 100644 --- a/utils/parse_config.py +++ b/utils/parse_config.py @@ -20,7 +20,7 @@ def parse_model_config(path): return module_defs -def parse_data_config(path): +def parse_data_cfg(path): """Parses the data configuration file""" options = dict() options['gpus'] = '0,1,2,3' diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 11a09627..19197eac 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -21,4 +21,5 @@ def select_device(force_cpu=False): device = torch.device('cpu') else: device = torch.device('cuda:0' if CUDA_AVAILABLE else 'cpu') + print('Using ' + str(device) + '\n') return device From 334660d58f2ce6189cffd898068d58688ad0cf6e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 8 Feb 2019 22:55:01 +0100 Subject: [PATCH 0317/2595] updates --- detect.py | 6 +++--- utils/datasets.py | 16 +++++++++++++--- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/detect.py b/detect.py index c33a5633..f4ec8afe 100755 --- a/detect.py +++ b/detect.py @@ -46,7 +46,7 @@ def detect( color_list = [[random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)] for _ in range(len(classes))] for i, (path, img, img0) in enumerate(dataloader): - print('image %g/%g: %s' % (i + 1, len(dataloader), path)) + print("%g/%g '%s': " % (i + 1, len(dataloader), path), end='') t = time.time() # Get detections @@ -83,7 +83,7 @@ def detect( for i in unique_classes: n = (detections[:, -1].cpu() == i).sum() - print('%g %ss' % (n, classes[int(i)])) + print('%g %ss' % (n, classes[int(i)]), end=', ') for x1, y1, x2, y2, conf, cls_conf, cls_pred in detections: # Rescale coordinates to original dimensions @@ -110,7 +110,7 @@ def detect( # Save generated image with detections cv2.imwrite(results_img_path.replace('.bmp', '.jpg').replace('.tif', '.jpg'), img) - print('Done. (%.3fs)\n' % (time.time() - t)) + print(' Done. (%.3fs)' % (time.time() - t)) if platform == 'darwin': # MacOS (local) os.system('open ' + output) diff --git a/utils/datasets.py b/utils/datasets.py index b8f52d99..ca8e67cf 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -41,7 +41,7 @@ class load_images(): # for inference assert img0 is not None, 'Failed to load ' + img_path # Padded resize - img, _, _, _ = resize_square(img0, height=self.height, color=(127.5, 127.5, 127.5)) + img, _, _, _ = letterbox(img0, height=self.height, color=(127.5, 127.5, 127.5)) # Normalize RGB img = img[:, :, ::-1].transpose(2, 0, 1) @@ -128,7 +128,7 @@ class load_images_and_labels(): # for training cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) h, w, _ = img.shape - img, ratio, padw, padh = resize_square(img, height=height, color=(127.5, 127.5, 127.5)) + img, ratio, padw, padh = letterbox(img, height=height, color=(127.5, 127.5, 127.5)) # Load labels if os.path.isfile(label_path): @@ -189,7 +189,7 @@ class load_images_and_labels(): # for training return self.nB # number of batches -def resize_square(img, height=416, color=(0, 0, 0)): # resize a rectangular image to a padded square +def letterbox(img, height=416, color=(0, 0, 0)): # resize a rectangular image to a padded square shape = img.shape[:2] # shape = [height, width] ratio = float(height) / max(shape) # ratio = old / new new_shape = [round(shape[0] * ratio), round(shape[1] * ratio)] @@ -200,6 +200,16 @@ def resize_square(img, height=416, color=(0, 0, 0)): # resize a rectangular ima img = cv2.resize(img, (new_shape[1], new_shape[0]), interpolation=cv2.INTER_AREA) # resized, no border return cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color), ratio, dw // 2, dh // 2 +def letterbox_undo(img, height=416, color=(0, 0, 0)): # resize a rectangular image to a padded square + shape = img.shape[:2] # shape = [height, width] + ratio = float(height) / max(shape) # ratio = old / new + new_shape = [round(shape[0] * ratio), round(shape[1] * ratio)] + dw = height - new_shape[1] # width padding + dh = height - new_shape[0] # height padding + top, bottom = dh // 2, dh - (dh // 2) + left, right = dw // 2, dw - (dw // 2) + img = cv2.resize(img, (new_shape[1], new_shape[0]), interpolation=cv2.INTER_AREA) # resized, no border + return cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color), ratio, dw // 2, dh // 2 def random_affine(img, targets=None, degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-2, 2), borderValue=(127.5, 127.5, 127.5)): From e77de1c3c7debf837275d713df6f37e84b6bc605 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 8 Feb 2019 23:03:27 +0100 Subject: [PATCH 0318/2595] updates --- detect.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/detect.py b/detect.py index f4ec8afe..dc2567a3 100755 --- a/detect.py +++ b/detect.py @@ -89,21 +89,21 @@ def detect( # Rescale coordinates to original dimensions box_h = ((y2 - y1) / unpad_h) * img.shape[0] box_w = ((x2 - x1) / unpad_w) * img.shape[1] - y1 = (((y1 - pad_y // 2) / unpad_h) * img.shape[0]).round().item() - x1 = (((x1 - pad_x // 2) / unpad_w) * img.shape[1]).round().item() - x2 = (x1 + box_w).round().item() - y2 = (y1 + box_h).round().item() + y1 = (((y1 - pad_y // 2) / unpad_h) * img.shape[0]).round() + x1 = (((x1 - pad_x // 2) / unpad_w) * img.shape[1]).round() + x2 = (x1 + box_w).round() + y2 = (y1 + box_h).round() x1, y1, x2, y2 = max(x1, 0), max(y1, 0), max(x2, 0), max(y2, 0) # write to file if save_txt: with open(results_txt_path, 'a') as file: - file.write(('%g %g %g %g %g %g \n') % (x1, y1, x2, y2, cls_pred, cls_conf * conf)) + file.write(('%g %g %g %g %g %g\n') % (x1, y1, x2, y2, cls_pred, cls_conf * conf)) if save_images: # Add the bbox to the plot label = '%s %.2f' % (classes[int(cls_pred)], conf) - color = bbox_colors[int(np.where(unique_classes == int(cls_pred))[0])] + color = bbox_colors[list(unique_classes).index(cls_pred)] plot_one_box([x1, y1, x2, y2], img, label=label, color=color) if save_images: From c37fda7d451859e4cad47e80cb1031ae2ac72c4f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 8 Feb 2019 23:08:26 +0100 Subject: [PATCH 0319/2595] updates --- detect.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/detect.py b/detect.py index dc2567a3..24cbfa02 100755 --- a/detect.py +++ b/detect.py @@ -43,7 +43,7 @@ def detect( # Classes and colors classes = load_classes(parse_data_cfg('cfg/coco.data')['names']) # Extracts class labels from file - color_list = [[random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)] for _ in range(len(classes))] + colors = [[random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)] for _ in range(len(classes))] for i, (path, img, img0) in enumerate(dataloader): print("%g/%g '%s': " % (i + 1, len(dataloader), path), end='') @@ -73,7 +73,6 @@ def detect( unpad_w = img_size - pad_x unique_classes = detections[:, -1].cpu().unique() - bbox_colors = random.sample(color_list, len(unique_classes)) # write results to .txt file results_img_path = os.path.join(output, path.split('/')[-1]) @@ -101,10 +100,9 @@ def detect( file.write(('%g %g %g %g %g %g\n') % (x1, y1, x2, y2, cls_pred, cls_conf * conf)) if save_images: - # Add the bbox to the plot + # Add bbox to the image label = '%s %.2f' % (classes[int(cls_pred)], conf) - color = bbox_colors[list(unique_classes).index(cls_pred)] - plot_one_box([x1, y1, x2, y2], img, label=label, color=color) + plot_one_box([x1, y1, x2, y2], img, label=label, color=colors[int(cls_pred)]) if save_images: # Save generated image with detections From 2a009d8d47ee01a314e62ad9330815e9348a9771 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 8 Feb 2019 23:09:58 +0100 Subject: [PATCH 0320/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 24cbfa02..5428328d 100755 --- a/detect.py +++ b/detect.py @@ -106,7 +106,7 @@ def detect( if save_images: # Save generated image with detections - cv2.imwrite(results_img_path.replace('.bmp', '.jpg').replace('.tif', '.jpg'), img) + cv2.imwrite(results_img_path, img) print(' Done. (%.3fs)' % (time.time() - t)) From 8dec0605044597d19182b609b4b02782d3967c50 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 8 Feb 2019 23:15:55 +0100 Subject: [PATCH 0321/2595] updates --- detect.py | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/detect.py b/detect.py index 5428328d..e7070b56 100755 --- a/detect.py +++ b/detect.py @@ -63,6 +63,8 @@ def detect( # Draw bounding boxes and labels of detections if detections is not None: + save_img_path = os.path.join(output, path.split('/')[-1]) + save_txt_path = save_img_path + '.txt' img = img0 # The amount of padding that was added @@ -73,13 +75,6 @@ def detect( unpad_w = img_size - pad_x unique_classes = detections[:, -1].cpu().unique() - - # write results to .txt file - results_img_path = os.path.join(output, path.split('/')[-1]) - results_txt_path = results_img_path + '.txt' - if os.path.isfile(results_txt_path): - os.remove(results_txt_path) - for i in unique_classes: n = (detections[:, -1].cpu() == i).sum() print('%g %ss' % (n, classes[int(i)]), end=', ') @@ -96,7 +91,7 @@ def detect( # write to file if save_txt: - with open(results_txt_path, 'a') as file: + with open(save_txt_path, 'a') as file: file.write(('%g %g %g %g %g %g\n') % (x1, y1, x2, y2, cls_pred, cls_conf * conf)) if save_images: @@ -106,18 +101,17 @@ def detect( if save_images: # Save generated image with detections - cv2.imwrite(results_img_path, img) + cv2.imwrite(save_img_path, img) print(' Done. (%.3fs)' % (time.time() - t)) - if platform == 'darwin': # MacOS (local) + if platform == 'darwin': # MacOS os.system('open ' + output) if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--image-folder', type=str, default='data/samples', help='path to images') - parser.add_argument('--output-folder', type=str, default='output', help='path to outputs') parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('--weights', type=str, default='weights/yolov3.pt', help='path to weights file') parser.add_argument('--conf-thres', type=float, default=0.50, help='object confidence threshold') @@ -130,7 +124,6 @@ if __name__ == '__main__': opt.cfg, opt.weights, opt.image_folder, - output=opt.output_folder, img_size=opt.img_size, conf_thres=opt.conf_thres, nms_thres=opt.nms_thres, From 08f051c1d42c71836b672dfcf7c0c57b4c63859e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 8 Feb 2019 23:20:41 +0100 Subject: [PATCH 0322/2595] updates --- detect.py | 4 +--- test.py | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/detect.py b/detect.py index e7070b56..5fbe3299 100755 --- a/detect.py +++ b/detect.py @@ -30,9 +30,7 @@ def detect( if weights.endswith('.pt'): # pytorch format if weights.endswith('weights/yolov3.pt') and not os.path.isfile(weights): os.system('wget https://storage.googleapis.com/ultralytics/yolov3.pt -O ' + weights) - checkpoint = torch.load(weights, map_location='cpu') - model.load_state_dict(checkpoint['model']) - del checkpoint + model.load_state_dict(torch.load(weights, map_location='cpu')['model']) else: # darknet format load_darknet_weights(model, weights) diff --git a/test.py b/test.py index bcb54f99..8b429660 100644 --- a/test.py +++ b/test.py @@ -29,9 +29,7 @@ def test( # Load weights if weights.endswith('.pt'): # pytorch format - checkpoint = torch.load(weights, map_location='cpu') - model.load_state_dict(checkpoint['model']) - del checkpoint + model.load_state_dict(torch.load(weights, map_location='cpu')['model']) else: # darknet format load_darknet_weights(model, weights) From 30e67cb8b1ba2dc1dbe933d518d0013d4a9f1504 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 8 Feb 2019 23:28:00 +0100 Subject: [PATCH 0323/2595] updates --- detect.py | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/detect.py b/detect.py index 5fbe3299..47d352fc 100755 --- a/detect.py +++ b/detect.py @@ -8,17 +8,8 @@ from utils.utils import * from utils import torch_utils -def detect( - cfg, - weights, - images_path, - output='output', - img_size=416, - conf_thres=0.3, - nms_thres=0.45, - save_txt=False, - save_images=True, -): +def detect(cfg, weights, images, output='output', img_size=416, conf_thres=0.3, nms_thres=0.45, + save_txt=False, save_images=True): device = torch_utils.select_device() os.system('rm -rf ' + output) @@ -37,7 +28,7 @@ def detect( model.to(device).eval() # Set Dataloader - dataloader = load_images(images_path, img_size=img_size) + dataloader = load_images(images, img_size=img_size) # Classes and colors classes = load_classes(parse_data_cfg('cfg/coco.data')['names']) # Extracts class labels from file @@ -109,20 +100,13 @@ def detect( if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument('--image-folder', type=str, default='data/samples', help='path to images') parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('--weights', type=str, default='weights/yolov3.pt', help='path to weights file') + parser.add_argument('--images', type=str, default='data/samples', help='path to images') + parser.add_argument('--img-size', type=int, default=32 * 13, help='size of each image dimension') parser.add_argument('--conf-thres', type=float, default=0.50, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') - parser.add_argument('--img-size', type=int, default=32 * 13, help='size of each image dimension') opt = parser.parse_args() print(opt) - detect( - opt.cfg, - opt.weights, - opt.image_folder, - img_size=opt.img_size, - conf_thres=opt.conf_thres, - nms_thres=opt.nms_thres, - ) + detect(opt.cfg, opt.weights, opt.images, img_size=opt.img_size, conf_thres=opt.conf_thres, nms_thres=opt.nms_thres) From 12c9ac9764e8e6940980a9297c7b05761e30c337 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 9 Feb 2019 15:12:32 +0100 Subject: [PATCH 0324/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 19402d4f..f42be112 100755 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ https://www.ultralytics.com. # Description -The https://github.com/ultralytics/yolov3 repo contains inference and training code for YOLOv3 in PyTorch. Training is done on the COCO dataset by default: https://cocodataset.org/#home. **Credit to Joseph Redmon for YOLO** (https://pjreddie.com/darknet/yolo/) and to **Erik Lindernoren for the PyTorch implementation** this work is based on (https://github.com/eriklindernoren/PyTorch-YOLOv3). +The https://github.com/ultralytics/yolov3 repo contains inference and training code for YOLOv3 in PyTorch. The code works on Linux, MacOS and Windows. Training is done on the COCO dataset by default: https://cocodataset.org/#home. **Credit to Joseph Redmon for YOLO** (https://pjreddie.com/darknet/yolo/) and to **Erik Lindernoren for the PyTorch implementation** this work is based on (https://github.com/eriklindernoren/PyTorch-YOLOv3). # Requirements From 09134026065d7957c88ef7039152ca5e1f31a977 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 9 Feb 2019 15:14:31 +0100 Subject: [PATCH 0325/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f42be112..1f502e2c 100755 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ Download official YOLOv3 weights: - https://pjreddie.com/media/files/yolov3-tiny.weights **PyTorch** format: -- https://drive.google.com/drive/u/0/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI +- https://drive.google.com/drive/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI # Validation mAP From e88798aefdf0beafc48e067863cb6bc9d329c2b5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 9 Feb 2019 18:52:02 +0100 Subject: [PATCH 0326/2595] updates --- weights/download_yolov3_weights.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/weights/download_yolov3_weights.sh b/weights/download_yolov3_weights.sh index 5c04d47e..0568cb87 100644 --- a/weights/download_yolov3_weights.sh +++ b/weights/download_yolov3_weights.sh @@ -3,14 +3,13 @@ # make '/weights' directory if it does not exist and cd into it mkdir -p weights && cd weights -# copy weight files, continue '-c' if partially downloaded -# yolov3 darknet weights +# copy darknet weight files, continue '-c' if partially downloaded wget -c https://pjreddie.com/media/files/yolov3.weights wget -c https://pjreddie.com/media/files/yolov3-tiny.weights wget -c https://pjreddie.com/media/files/yolov3-spp.weights # yolov3 pytorch weights -# download from Google Drive: https://drive.google.com/drive/u/0/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI +# download from Google Drive: https://drive.google.com/drive/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI # darknet53 weights (first 75 layers only) wget -c https://pjreddie.com/media/files/darknet53.conv.74 From a0936a4eac2c4042181e3157f3bd4a05a97c57f6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 9 Feb 2019 19:13:07 +0100 Subject: [PATCH 0327/2595] updates --- detect.py | 2 ++ test.py | 25 +++---------------------- 2 files changed, 5 insertions(+), 22 deletions(-) diff --git a/detect.py b/detect.py index 47d352fc..b682db08 100755 --- a/detect.py +++ b/detect.py @@ -96,6 +96,8 @@ def detect(cfg, weights, images, output='output', img_size=416, conf_thres=0.3, if platform == 'darwin': # MacOS os.system('open ' + output) + os.system('open ' + save_img_path) + if __name__ == '__main__': diff --git a/test.py b/test.py index 8b429660..e93f8b96 100644 --- a/test.py +++ b/test.py @@ -7,16 +7,7 @@ from utils.utils import * from utils import torch_utils -def test( - cfg, - data_cfg, - weights, - batch_size=16, - img_size=416, - iou_thres=0.5, - conf_thres=0.3, - nms_thres=0.45, -): +def test(cfg, data_cfg, weights, batch_size=16, img_size=416, iou_thres=0.5, conf_thres=0.3, nms_thres=0.45): device = torch_utils.select_device() # Configure run @@ -135,15 +126,5 @@ if __name__ == '__main__': opt = parser.parse_args() print(opt, end='\n\n') - init_seeds() - - mAP = test( - opt.cfg, - opt.data_cfg, - opt.weights, - batch_size=opt.batch_size, - img_size=opt.img_size, - iou_thres=opt.iou_thres, - conf_thres=opt.conf_thres, - nms_thres=opt.nms_thres, - ) + mAP = test(opt.cfg, opt.data_cfg, opt.weights, opt.batch_size, opt.img_size, opt.iou_thres, opt.conf_thres, + opt.nms_thres) From a70137401475579961beba548cfb602c8435ce22 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 9 Feb 2019 19:24:51 +0100 Subject: [PATCH 0328/2595] updates --- detect.py | 34 ++++++++++++++-------------------- test.py | 3 +-- train.py | 3 +-- utils/datasets.py | 3 ++- 4 files changed, 18 insertions(+), 25 deletions(-) diff --git a/detect.py b/detect.py index b682db08..fbe156ac 100755 --- a/detect.py +++ b/detect.py @@ -34,7 +34,7 @@ def detect(cfg, weights, images, output='output', img_size=416, conf_thres=0.3, classes = load_classes(parse_data_cfg('cfg/coco.data')['names']) # Extracts class labels from file colors = [[random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)] for _ in range(len(classes))] - for i, (path, img, img0) in enumerate(dataloader): + for i, (path, img, im0) in enumerate(dataloader): print("%g/%g '%s': " % (i + 1, len(dataloader), path), end='') t = time.time() @@ -54,11 +54,10 @@ def detect(cfg, weights, images, output='output', img_size=416, conf_thres=0.3, if detections is not None: save_img_path = os.path.join(output, path.split('/')[-1]) save_txt_path = save_img_path + '.txt' - img = img0 # The amount of padding that was added - pad_x = max(img.shape[0] - img.shape[1], 0) * (img_size / max(img.shape)) - pad_y = max(img.shape[1] - img.shape[0], 0) * (img_size / max(img.shape)) + pad_x = max(im0.shape[0] - im0.shape[1], 0) * (img_size / max(im0.shape)) + pad_y = max(im0.shape[1] - im0.shape[0], 0) * (img_size / max(im0.shape)) # Image height and width after padding is removed unpad_h = img_size - pad_y unpad_w = img_size - pad_x @@ -70,34 +69,29 @@ def detect(cfg, weights, images, output='output', img_size=416, conf_thres=0.3, for x1, y1, x2, y2, conf, cls_conf, cls_pred in detections: # Rescale coordinates to original dimensions - box_h = ((y2 - y1) / unpad_h) * img.shape[0] - box_w = ((x2 - x1) / unpad_w) * img.shape[1] - y1 = (((y1 - pad_y // 2) / unpad_h) * img.shape[0]).round() - x1 = (((x1 - pad_x // 2) / unpad_w) * img.shape[1]).round() + box_h = ((y2 - y1) / unpad_h) * im0.shape[0] + box_w = ((x2 - x1) / unpad_w) * im0.shape[1] + y1 = (((y1 - pad_y // 2) / unpad_h) * im0.shape[0]).round() + x1 = (((x1 - pad_x // 2) / unpad_w) * im0.shape[1]).round() x2 = (x1 + box_w).round() y2 = (y1 + box_h).round() x1, y1, x2, y2 = max(x1, 0), max(y1, 0), max(x2, 0), max(y2, 0) - # write to file - if save_txt: + if save_txt: # Write to file with open(save_txt_path, 'a') as file: - file.write(('%g %g %g %g %g %g\n') % (x1, y1, x2, y2, cls_pred, cls_conf * conf)) + file.write('%g %g %g %g %g %g\n' % (x1, y1, x2, y2, cls_pred, cls_conf * conf)) - if save_images: - # Add bbox to the image + if save_images: # Add bbox to the image label = '%s %.2f' % (classes[int(cls_pred)], conf) - plot_one_box([x1, y1, x2, y2], img, label=label, color=colors[int(cls_pred)]) + plot_one_box([x1, y1, x2, y2], im0, label=label, color=colors[int(cls_pred)]) - if save_images: - # Save generated image with detections - cv2.imwrite(save_img_path, img) + if save_images: # Save generated image with detections + cv2.imwrite(save_img_path, im0) print(' Done. (%.3fs)' % (time.time() - t)) if platform == 'darwin': # MacOS - os.system('open ' + output) - os.system('open ' + save_img_path) - + os.system('open ' + output + '&& open ' + save_img_path) if __name__ == '__main__': diff --git a/test.py b/test.py index e93f8b96..b87288ee 100644 --- a/test.py +++ b/test.py @@ -27,8 +27,7 @@ def test(cfg, data_cfg, weights, batch_size=16, img_size=416, iou_thres=0.5, con model.to(device).eval() # Get dataloader - # dataset = load_images_with_labels(test_path) - # dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, shuffle=False, num_workers=n_cpus) + # dataloader = torch.utils.data.DataLoader(load_images_with_labels(test_path), batch_size=batch_size) # pytorch dataloader = load_images_and_labels(test_path, batch_size=batch_size, img_size=img_size) mean_mAP, mean_R, mean_P = 0.0, 0.0, 0.0 diff --git a/train.py b/train.py index f517f5b2..e9039d42 100644 --- a/train.py +++ b/train.py @@ -45,8 +45,7 @@ def train( model = Darknet(cfg, img_size) # Get dataloader - dataloader = load_images_and_labels(train_path, batch_size=batch_size, img_size=img_size, - multi_scale=multi_scale, augment=True) + dataloader = load_images_and_labels(train_path, batch_size, img_size, multi_scale=multi_scale, augment=True) lr0 = 0.001 if resume: diff --git a/utils/datasets.py b/utils/datasets.py index ca8e67cf..59cd7bc3 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -41,7 +41,8 @@ class load_images(): # for inference assert img0 is not None, 'Failed to load ' + img_path # Padded resize - img, _, _, _ = letterbox(img0, height=self.height, color=(127.5, 127.5, 127.5)) + img, ratio, padw, padh = letterbox(img0, height=self.height, color=(127.5, 127.5, 127.5)) + print(ratio, padw, padh) # Normalize RGB img = img[:, :, ::-1].transpose(2, 0, 1) From be934ba5a5f92087bf729a538ce0f081f06791c3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 9 Feb 2019 19:26:53 +0100 Subject: [PATCH 0329/2595] updates --- train.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/train.py b/train.py index e9039d42..57aabca4 100644 --- a/train.py +++ b/train.py @@ -196,13 +196,7 @@ def train( os.system('cp ' + latest_weights_file + ' ' + os.path.join(weights, 'backup{}.pt'.format(epoch))) # Calculate mAP - mAP, R, P = test.test( - cfg, - data_cfg, - latest_weights_file, - batch_size=batch_size, - img_size=img_size, - ) + mAP, R, P = test.test(cfg, data_cfg, weights=latest_weights_file, batch_size=batch_size, img_size=img_size) # Write epoch results with open('results.txt', 'a') as file: @@ -228,7 +222,6 @@ if __name__ == '__main__': init_seeds() - torch.cuda.empty_cache() train( opt.cfg, opt.data_cfg, From 1cd907c59b93662c252315f40dae2ca694f471fe Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 9 Feb 2019 19:29:19 +0100 Subject: [PATCH 0330/2595] updates --- train.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/train.py b/train.py index 57aabca4..147eb237 100644 --- a/train.py +++ b/train.py @@ -32,9 +32,8 @@ def train( else: torch.backends.cudnn.benchmark = True - os.makedirs(weights, exist_ok=True) - latest_weights_file = os.path.join(weights, 'latest.pt') - best_weights_file = os.path.join(weights, 'best.pt') + latest = os.path.join(weights, 'latest.pt') + best = os.path.join(weights, 'best.pt') # Configure run data_cfg = parse_data_cfg(data_cfg) @@ -49,7 +48,7 @@ def train( lr0 = 0.001 if resume: - checkpoint = torch.load(latest_weights_file, map_location='cpu') + checkpoint = torch.load(latest, map_location='cpu') model.load_state_dict(checkpoint['model']) if torch.cuda.device_count() > 1: @@ -185,18 +184,18 @@ def train( 'best_loss': best_loss, 'model': model.state_dict(), 'optimizer': optimizer.state_dict()} - torch.save(checkpoint, latest_weights_file) + torch.save(checkpoint, latest) # Save best checkpoint if best_loss == loss_per_target: - os.system('cp ' + latest_weights_file + ' ' + best_weights_file) + os.system('cp ' + latest + ' ' + best) # Save backup weights every 5 epochs if (epoch > 0) & (epoch % 5 == 0): - os.system('cp ' + latest_weights_file + ' ' + os.path.join(weights, 'backup{}.pt'.format(epoch))) + os.system('cp ' + latest + ' ' + os.path.join(weights, 'backup{}.pt'.format(epoch))) # Calculate mAP - mAP, R, P = test.test(cfg, data_cfg, weights=latest_weights_file, batch_size=batch_size, img_size=img_size) + mAP, R, P = test.test(cfg, data_cfg, weights=latest, batch_size=batch_size, img_size=img_size) # Write epoch results with open('results.txt', 'a') as file: From f908f845aea513eee45790abbff0b47a3b13eacb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 9 Feb 2019 22:14:07 +0100 Subject: [PATCH 0331/2595] updates --- models.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/models.py b/models.py index 29a01eaf..9e962155 100755 --- a/models.py +++ b/models.py @@ -45,7 +45,7 @@ def create_modules(module_defs): elif module_def['type'] == 'upsample': # upsample = nn.Upsample(scale_factor=int(module_def['stride']), mode='nearest') # WARNING: deprecated - upsample = Upsample(scale_factor=int(module_def['stride']), mode='nearest') + upsample = Upsample(scale_factor=int(module_def['stride'])) modules.add_module('upsample_%d' % i, upsample) elif module_def['type'] == 'route': @@ -131,6 +131,7 @@ class YOLOLayer(nn.Module): self.loss_means = torch.ones(6) self.yolo_layer = anchor_idxs[0] / nA # 2, 1, 0 self.stride = stride + self.nG = nG if ONNX_EXPORT: # use fully populated and reshaped tensors self.anchor_w = self.anchor_w.repeat((1, 1, nG, nG)).view(1, -1, 1) @@ -142,8 +143,8 @@ class YOLOLayer(nn.Module): def forward(self, p, targets=None, batch_report=False, var=None): FT = torch.cuda.FloatTensor if p.is_cuda else torch.FloatTensor - bs = p.shape[0] # batch size - nG = p.shape[2] # number of grid points + bs = 1 if ONNX_EXPORT else p.shape[0] # batch size + nG = self.nG # number of grid points if p.is_cuda and not self.weights.is_cuda: self.grid_x, self.grid_y = self.grid_x.cuda(), self.grid_y.cuda() @@ -285,7 +286,10 @@ class Darknet(nn.Module): x = module(x) elif module_def['type'] == 'route': layer_i = [int(x) for x in module_def['layers'].split(',')] - x = torch.cat([layer_outputs[i] for i in layer_i], 1) + if len(layer_i) == 1: + x = layer_outputs[layer_i[0]] + else: + x = torch.cat([layer_outputs[i] for i in layer_i], 1) elif module_def['type'] == 'shortcut': layer_i = int(module_def['from']) x = layer_outputs[-1] + layer_outputs[layer_i] @@ -328,7 +332,8 @@ class Darknet(nn.Module): if ONNX_EXPORT: # Produce a single-layer *.onnx model (upsample ops not working in PyTorch 1.0 export yet) - output = output[0] # first layer reshaped to 85 x 507 + output = output[1] # first layer reshaped to 85 x 507 + # output = torch.cat(output, 1) return output[5:85].t(), output[:4].t() # ONNX scores, boxes return sum(output) if is_training else torch.cat(output, 1) From 5ec27663e68155261b335679f5f4f62a4a8c6b5d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 9 Feb 2019 22:38:51 +0100 Subject: [PATCH 0332/2595] updates --- models.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/models.py b/models.py index 9e962155..37e466b0 100755 --- a/models.py +++ b/models.py @@ -6,7 +6,7 @@ import torch.nn as nn from utils.parse_config import * from utils.utils import * -ONNX_EXPORT = False +ONNX_EXPORT = True def create_modules(module_defs): @@ -331,9 +331,7 @@ class Darknet(nn.Module): self.losses['TC'] = 0 if ONNX_EXPORT: - # Produce a single-layer *.onnx model (upsample ops not working in PyTorch 1.0 export yet) - output = output[1] # first layer reshaped to 85 x 507 - # output = torch.cat(output, 1) + output = torch.cat(output, 1) # merge the 3 layers 85 x (507, 2028, 8112) to 85 x 10647 return output[5:85].t(), output[:4].t() # ONNX scores, boxes return sum(output) if is_training else torch.cat(output, 1) From d5b17c93ff81eff139e830cfddb66810ffea2452 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 9 Feb 2019 22:39:04 +0100 Subject: [PATCH 0333/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 37e466b0..2b82ce69 100755 --- a/models.py +++ b/models.py @@ -6,7 +6,7 @@ import torch.nn as nn from utils.parse_config import * from utils.utils import * -ONNX_EXPORT = True +ONNX_EXPORT = False def create_modules(module_defs): From 8db03998d34f2268a91cae54eead14f2319b84f4 Mon Sep 17 00:00:00 2001 From: Ttayu Date: Sun, 10 Feb 2019 06:39:32 +0900 Subject: [PATCH 0334/2595] Ignore cfg and data directory. --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 926cca79..d790d41c 100755 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,8 @@ !zidane_result.jpg !coco_training_loss.png !coco_augmentation_examples.jpg -!data/samples/zidane.jpg +cfg/ +data/ results*.txt temp-plot.html From a50782354f4ab24f6177634edc6d620a320a9a66 Mon Sep 17 00:00:00 2001 From: Ttayu Date: Sun, 10 Feb 2019 14:48:50 +0900 Subject: [PATCH 0335/2595] Revert "Ignore cfg and data directory." This reverts commit 8db03998d34f2268a91cae54eead14f2319b84f4. --- .gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index d790d41c..926cca79 100755 --- a/.gitignore +++ b/.gitignore @@ -11,8 +11,7 @@ !zidane_result.jpg !coco_training_loss.png !coco_augmentation_examples.jpg -cfg/ -data/ +!data/samples/zidane.jpg results*.txt temp-plot.html From 045651902caa2074e75a2cc5688d3df8add953c8 Mon Sep 17 00:00:00 2001 From: Ttayu Date: Sun, 10 Feb 2019 15:03:08 +0900 Subject: [PATCH 0336/2595] Ignore cfg and data directory. --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index 926cca79..ce0b6197 100755 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,11 @@ *.PNG *.TIF *.HEIC +*.data +*.cfg +data/* +!cfg/coco.data +!cfg/yolov3*.cfg !zidane_result.jpg !coco_training_loss.png !coco_augmentation_examples.jpg From e057f52780deead1f1d63bfb0b0dd8e2c123d5f4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 10 Feb 2019 20:32:04 +0100 Subject: [PATCH 0337/2595] updates --- detect.py | 10 ++++++---- utils/datasets.py | 23 ++++++----------------- 2 files changed, 12 insertions(+), 21 deletions(-) diff --git a/detect.py b/detect.py index fbe156ac..167dc587 100755 --- a/detect.py +++ b/detect.py @@ -8,6 +8,10 @@ from utils.utils import * from utils import torch_utils +def unletterbox(img0_shape, letterbox_shape): + return None + + def detect(cfg, weights, images, output='output', img_size=416, conf_thres=0.3, nms_thres=0.45, save_txt=False, save_images=True): device = torch_utils.select_device() @@ -69,12 +73,10 @@ def detect(cfg, weights, images, output='output', img_size=416, conf_thres=0.3, for x1, y1, x2, y2, conf, cls_conf, cls_pred in detections: # Rescale coordinates to original dimensions - box_h = ((y2 - y1) / unpad_h) * im0.shape[0] - box_w = ((x2 - x1) / unpad_w) * im0.shape[1] y1 = (((y1 - pad_y // 2) / unpad_h) * im0.shape[0]).round() x1 = (((x1 - pad_x // 2) / unpad_w) * im0.shape[1]).round() - x2 = (x1 + box_w).round() - y2 = (y1 + box_h).round() + y2 = (((y2 - pad_y // 2) / unpad_h) * im0.shape[0]).round() + x2 = (((x2 - pad_x // 2) / unpad_w) * im0.shape[1]).round() x1, y1, x2, y2 = max(x1, 0), max(y1, 0), max(x2, 0), max(y2, 0) if save_txt: # Write to file diff --git a/utils/datasets.py b/utils/datasets.py index 59cd7bc3..00ad081c 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -193,24 +193,13 @@ class load_images_and_labels(): # for training def letterbox(img, height=416, color=(0, 0, 0)): # resize a rectangular image to a padded square shape = img.shape[:2] # shape = [height, width] ratio = float(height) / max(shape) # ratio = old / new - new_shape = [round(shape[0] * ratio), round(shape[1] * ratio)] - dw = height - new_shape[1] # width padding - dh = height - new_shape[0] # height padding - top, bottom = dh // 2, dh - (dh // 2) - left, right = dw // 2, dw - (dw // 2) - img = cv2.resize(img, (new_shape[1], new_shape[0]), interpolation=cv2.INTER_AREA) # resized, no border - return cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color), ratio, dw // 2, dh // 2 + new_shape = (round(shape[1] * ratio), round(shape[0] * ratio)) + padw = (height - new_shape[0]) // 2 # width padding + padh = (height - new_shape[1]) // 2 # height padding + img = cv2.resize(img, new_shape, interpolation=cv2.INTER_AREA) # resized, no border + img = cv2.copyMakeBorder(img, padh, padh, padw, padw, cv2.BORDER_CONSTANT, value=color) # padded square + return img, ratio, padw, padh -def letterbox_undo(img, height=416, color=(0, 0, 0)): # resize a rectangular image to a padded square - shape = img.shape[:2] # shape = [height, width] - ratio = float(height) / max(shape) # ratio = old / new - new_shape = [round(shape[0] * ratio), round(shape[1] * ratio)] - dw = height - new_shape[1] # width padding - dh = height - new_shape[0] # height padding - top, bottom = dh // 2, dh - (dh // 2) - left, right = dw // 2, dw - (dw // 2) - img = cv2.resize(img, (new_shape[1], new_shape[0]), interpolation=cv2.INTER_AREA) # resized, no border - return cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color), ratio, dw // 2, dh // 2 def random_affine(img, targets=None, degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-2, 2), borderValue=(127.5, 127.5, 127.5)): From 9d12a162f898b04eb64f0fb3366eeea7a6bbc8ed Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 10 Feb 2019 21:01:49 +0100 Subject: [PATCH 0338/2595] updates --- detect.py | 23 ++++------------------- utils/utils.py | 18 ++++++++++++++++-- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/detect.py b/detect.py index 167dc587..a707b9e0 100755 --- a/detect.py +++ b/detect.py @@ -8,12 +8,8 @@ from utils.utils import * from utils import torch_utils -def unletterbox(img0_shape, letterbox_shape): - return None - - -def detect(cfg, weights, images, output='output', img_size=416, conf_thres=0.3, nms_thres=0.45, - save_txt=False, save_images=True): +def detect(cfg, weights, images, output='output', img_size=416, conf_thres=0.3, nms_thres=0.45, save_txt=False, + save_images=True): device = torch_utils.select_device() os.system('rm -rf ' + output) @@ -59,12 +55,8 @@ def detect(cfg, weights, images, output='output', img_size=416, conf_thres=0.3, save_img_path = os.path.join(output, path.split('/')[-1]) save_txt_path = save_img_path + '.txt' - # The amount of padding that was added - pad_x = max(im0.shape[0] - im0.shape[1], 0) * (img_size / max(im0.shape)) - pad_y = max(im0.shape[1] - im0.shape[0], 0) * (img_size / max(im0.shape)) - # Image height and width after padding is removed - unpad_h = img_size - pad_y - unpad_w = img_size - pad_x + # Rescale boxes from 416 to true image size + detections[:, :4] = scale_coords(img_size, detections[:, :4], im0.shape) unique_classes = detections[:, -1].cpu().unique() for i in unique_classes: @@ -72,13 +64,6 @@ def detect(cfg, weights, images, output='output', img_size=416, conf_thres=0.3, print('%g %ss' % (n, classes[int(i)]), end=', ') for x1, y1, x2, y2, conf, cls_conf, cls_pred in detections: - # Rescale coordinates to original dimensions - y1 = (((y1 - pad_y // 2) / unpad_h) * im0.shape[0]).round() - x1 = (((x1 - pad_x // 2) / unpad_w) * im0.shape[1]).round() - y2 = (((y2 - pad_y // 2) / unpad_h) * im0.shape[0]).round() - x2 = (((x2 - pad_x // 2) / unpad_w) * im0.shape[1]).round() - x1, y1, x2, y2 = max(x1, 0), max(y1, 0), max(x2, 0), max(y2, 0) - if save_txt: # Write to file with open(save_txt_path, 'a') as file: file.write('%g %g %g %g %g %g\n' % (x1, y1, x2, y2, cls_pred, cls_conf * conf)) diff --git a/utils/utils.py b/utils/utils.py index 9a7853e3..7209c9bf 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -71,7 +71,8 @@ def weights_init_normal(m): torch.nn.init.constant_(m.bias.data, 0.0) -def xyxy2xywh(x): # Convert bounding box format from [x1, y1, x2, y2] to [x, y, w, h] +def xyxy2xywh(x): + # Convert bounding box format from [x1, y1, x2, y2] to [x, y, w, h] y = torch.zeros(x.shape) if x.dtype is torch.float32 else np.zeros(x.shape) y[:, 0] = (x[:, 0] + x[:, 2]) / 2 y[:, 1] = (x[:, 1] + x[:, 3]) / 2 @@ -80,7 +81,8 @@ def xyxy2xywh(x): # Convert bounding box format from [x1, y1, x2, y2] to [x, y, return y -def xywh2xyxy(x): # Convert bounding box format from [x, y, w, h] to [x1, y1, x2, y2] +def xywh2xyxy(x): + # Convert bounding box format from [x, y, w, h] to [x1, y1, x2, y2] y = torch.zeros(x.shape) if x.dtype is torch.float32 else np.zeros(x.shape) y[:, 0] = (x[:, 0] - x[:, 2] / 2) y[:, 1] = (x[:, 1] - x[:, 3] / 2) @@ -89,6 +91,18 @@ def xywh2xyxy(x): # Convert bounding box format from [x, y, w, h] to [x1, y1, x return y +def scale_coords(img_size, coords, img0_shape): + # Rescale x1, y1, x2, y2 from 416 to image size + gain = float(img_size) / max(img0_shape) # gain = old / new + pad_x = (img_size - img0_shape[1] * gain) / 2 # width padding + pad_y = (img_size - img0_shape[0] * gain) / 2 # height padding + coords[:, [0, 2]] -= pad_x + coords[:, [1, 3]] -= pad_y + coords[:, :4] /= gain + coords[:, :4] = torch.round(torch.clamp(coords[:, :4], min=0)) + return coords + + def ap_per_class(tp, conf, pred_cls, target_cls): """ Compute the average precision, given the recall and precision curves. Method originally from https://github.com/rafaelpadilla/Object-Detection-Metrics. From 97909df1a600e0f950aa36cc6c44cedbed2ab3fc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 10 Feb 2019 21:06:22 +0100 Subject: [PATCH 0339/2595] updates --- detect.py | 81 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 48 insertions(+), 33 deletions(-) diff --git a/detect.py b/detect.py index a707b9e0..36727f8f 100755 --- a/detect.py +++ b/detect.py @@ -8,10 +8,18 @@ from utils.utils import * from utils import torch_utils -def detect(cfg, weights, images, output='output', img_size=416, conf_thres=0.3, nms_thres=0.45, save_txt=False, - save_images=True): +def detect( + cfg, + weights, + images, + output='output', + img_size=416, + conf_thres=0.3, + nms_thres=0.45, + save_txt=False, + save_images=True +): device = torch_utils.select_device() - os.system('rm -rf ' + output) os.makedirs(output, exist_ok=True) @@ -39,43 +47,42 @@ def detect(cfg, weights, images, output='output', img_size=416, conf_thres=0.3, t = time.time() # Get detections - with torch.no_grad(): - img = torch.from_numpy(img).unsqueeze(0).to(device) - if ONNX_EXPORT: - pred = torch.onnx._export(model, img, 'weights/model.onnx', verbose=True) - return # ONNX export - pred = model(img) - pred = pred[pred[:, :, 4] > conf_thres] + img = torch.from_numpy(img).unsqueeze(0).to(device) + if ONNX_EXPORT: + pred = torch.onnx._export(model, img, 'weights/model.onnx', verbose=True) + return # ONNX export + pred = model(img) + pred = pred[pred[:, :, 4] > conf_thres] - if len(pred) > 0: - detections = non_max_suppression(pred.unsqueeze(0), conf_thres, nms_thres)[0] + if len(pred) > 0: + detections = non_max_suppression(pred.unsqueeze(0), conf_thres, nms_thres)[0] - # Draw bounding boxes and labels of detections - if detections is not None: - save_img_path = os.path.join(output, path.split('/')[-1]) - save_txt_path = save_img_path + '.txt' + # Draw bounding boxes and labels of detections + if detections is not None: + save_img_path = os.path.join(output, path.split('/')[-1]) + save_txt_path = save_img_path + '.txt' - # Rescale boxes from 416 to true image size - detections[:, :4] = scale_coords(img_size, detections[:, :4], im0.shape) + # Rescale boxes from 416 to true image size + detections[:, :4] = scale_coords(img_size, detections[:, :4], im0.shape) - unique_classes = detections[:, -1].cpu().unique() - for i in unique_classes: - n = (detections[:, -1].cpu() == i).sum() - print('%g %ss' % (n, classes[int(i)]), end=', ') + unique_classes = detections[:, -1].cpu().unique() + for i in unique_classes: + n = (detections[:, -1].cpu() == i).sum() + print('%g %ss' % (n, classes[int(i)]), end=', ') - for x1, y1, x2, y2, conf, cls_conf, cls_pred in detections: - if save_txt: # Write to file - with open(save_txt_path, 'a') as file: - file.write('%g %g %g %g %g %g\n' % (x1, y1, x2, y2, cls_pred, cls_conf * conf)) + for x1, y1, x2, y2, conf, cls_conf, cls_pred in detections: + if save_txt: # Write to file + with open(save_txt_path, 'a') as file: + file.write('%g %g %g %g %g %g\n' % (x1, y1, x2, y2, cls_pred, cls_conf * conf)) - if save_images: # Add bbox to the image - label = '%s %.2f' % (classes[int(cls_pred)], conf) - plot_one_box([x1, y1, x2, y2], im0, label=label, color=colors[int(cls_pred)]) + if save_images: # Add bbox to the image + label = '%s %.2f' % (classes[int(cls_pred)], conf) + plot_one_box([x1, y1, x2, y2], im0, label=label, color=colors[int(cls_pred)]) - if save_images: # Save generated image with detections - cv2.imwrite(save_img_path, im0) + if save_images: # Save generated image with detections + cv2.imwrite(save_img_path, im0) - print(' Done. (%.3fs)' % (time.time() - t)) + print(' Done. (%.3fs)' % (time.time() - t)) if platform == 'darwin': # MacOS os.system('open ' + output + '&& open ' + save_img_path) @@ -92,4 +99,12 @@ if __name__ == '__main__': opt = parser.parse_args() print(opt) - detect(opt.cfg, opt.weights, opt.images, img_size=opt.img_size, conf_thres=opt.conf_thres, nms_thres=opt.nms_thres) + with torch.no_grad(): + detect( + opt.cfg, + opt.weights, + opt.images, + img_size=opt.img_size, + conf_thres=opt.conf_thres, + nms_thres=opt.nms_thres + ) From 51eb173416cd993392d54ba578da7082158bc752 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 10 Feb 2019 21:07:26 +0100 Subject: [PATCH 0340/2595] updates --- test.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/test.py b/test.py index b87288ee..e2709af7 100644 --- a/test.py +++ b/test.py @@ -7,7 +7,16 @@ from utils.utils import * from utils import torch_utils -def test(cfg, data_cfg, weights, batch_size=16, img_size=416, iou_thres=0.5, conf_thres=0.3, nms_thres=0.45): +def test( + cfg, + data_cfg, + weights, + batch_size=16, + img_size=416, + iou_thres=0.5, + conf_thres=0.3, + nms_thres=0.45 +): device = torch_utils.select_device() # Configure run @@ -125,5 +134,13 @@ if __name__ == '__main__': opt = parser.parse_args() print(opt, end='\n\n') - mAP = test(opt.cfg, opt.data_cfg, opt.weights, opt.batch_size, opt.img_size, opt.iou_thres, opt.conf_thres, - opt.nms_thres) + mAP = test( + opt.cfg, + opt.data_cfg, + opt.weights, + opt.batch_size, + opt.img_size, + opt.iou_thres, + opt.conf_thres, + opt.nms_thres + ) From 6f0086103c39e728d7a1f8d94b3dbbcb530d5ad3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 10 Feb 2019 21:10:50 +0100 Subject: [PATCH 0341/2595] updates --- test.py | 27 +++++++++++++-------------- train.py | 3 ++- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/test.py b/test.py index e2709af7..7a3a8441 100644 --- a/test.py +++ b/test.py @@ -44,10 +44,8 @@ def test( outputs, mAPs, mR, mP, TP, confidence, pred_class, target_class = [], [], [], [], [], [], [], [] AP_accum, AP_accum_count = np.zeros(nC), np.zeros(nC) for batch_i, (imgs, targets) in enumerate(dataloader): - - with torch.no_grad(): - output = model(imgs.to(device)) - output = non_max_suppression(output, conf_thres=conf_thres, nms_thres=nms_thres) + output = model(imgs.to(device)) + output = non_max_suppression(output, conf_thres=conf_thres, nms_thres=nms_thres) # Compute average precision for each sample for sample_i, (labels, detections) in enumerate(zip(targets, output)): @@ -134,13 +132,14 @@ if __name__ == '__main__': opt = parser.parse_args() print(opt, end='\n\n') - mAP = test( - opt.cfg, - opt.data_cfg, - opt.weights, - opt.batch_size, - opt.img_size, - opt.iou_thres, - opt.conf_thres, - opt.nms_thres - ) + with torch.no_grad(): + mAP = test( + opt.cfg, + opt.data_cfg, + opt.weights, + opt.batch_size, + opt.img_size, + opt.iou_thres, + opt.conf_thres, + opt.nms_thres + ) diff --git a/train.py b/train.py index 147eb237..5793a322 100644 --- a/train.py +++ b/train.py @@ -195,7 +195,8 @@ def train( os.system('cp ' + latest + ' ' + os.path.join(weights, 'backup{}.pt'.format(epoch))) # Calculate mAP - mAP, R, P = test.test(cfg, data_cfg, weights=latest, batch_size=batch_size, img_size=img_size) + with torch.no_grad(): + mAP, R, P = test.test(cfg, data_cfg, weights=latest, batch_size=batch_size, img_size=img_size) # Write epoch results with open('results.txt', 'a') as file: From c60bad8b10cfe5a573a7816fcec7e863facd8061 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 10 Feb 2019 21:23:58 +0100 Subject: [PATCH 0342/2595] updates --- utils/datasets.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 00ad081c..b0ca0694 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -194,11 +194,13 @@ def letterbox(img, height=416, color=(0, 0, 0)): # resize a rectangular image t shape = img.shape[:2] # shape = [height, width] ratio = float(height) / max(shape) # ratio = old / new new_shape = (round(shape[1] * ratio), round(shape[0] * ratio)) - padw = (height - new_shape[0]) // 2 # width padding - padh = (height - new_shape[1]) // 2 # height padding + dw = (height - new_shape[0]) / 2 # width padding + dh = (height - new_shape[1]) / 2 # height padding + top, bottom = round(dh - 0.1), round(dh + 0.1) + left, right = round(dw - 0.1), round(dw + 0.1) img = cv2.resize(img, new_shape, interpolation=cv2.INTER_AREA) # resized, no border - img = cv2.copyMakeBorder(img, padh, padh, padw, padw, cv2.BORDER_CONSTANT, value=color) # padded square - return img, ratio, padw, padh + img = cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color) # padded square + return img, ratio, dw, dh def random_affine(img, targets=None, degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-2, 2), From 917f9dd24823c1db29a604e1cca282e198fee0f0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 10 Feb 2019 21:28:27 +0100 Subject: [PATCH 0343/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 5793a322..69eb7bf7 100644 --- a/train.py +++ b/train.py @@ -52,7 +52,7 @@ def train( model.load_state_dict(checkpoint['model']) if torch.cuda.device_count() > 1: - raise Exception('Multi-GPU not currently supported: https://github.com/ultralytics/yolov3/issues/21') + raise Exception('Multi-GPU issue: https://github.com/ultralytics/yolov3/issues/21') # print('Using ', torch.cuda.device_count(), ' GPUs') # model = nn.DataParallel(model) model.to(device).train() From 715c4575bf8f17c914ee3172bee5c3585e045f40 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 10 Feb 2019 21:34:15 +0100 Subject: [PATCH 0344/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 69eb7bf7..293ceee1 100644 --- a/train.py +++ b/train.py @@ -111,7 +111,7 @@ def train( for g in optimizer.param_groups: g['lr'] = lr - # Freeze darknet53.conv.74 layers for first epoch + # Freeze darknet53.conv.74 for first epoch if freeze_backbone: if epoch == 0: for i, (name, p) in enumerate(model.named_parameters()): From 62761cffe68e78a050bbadab8b663dd5c4fb54d7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 10 Feb 2019 21:41:57 +0100 Subject: [PATCH 0345/2595] updates --- detect.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/detect.py b/detect.py index 36727f8f..8c8c41e6 100755 --- a/detect.py +++ b/detect.py @@ -38,8 +38,8 @@ def detect( # Set Dataloader dataloader = load_images(images, img_size=img_size) - # Classes and colors - classes = load_classes(parse_data_cfg('cfg/coco.data')['names']) # Extracts class labels from file + # Get classes and colors + classes = load_classes(parse_data_cfg('cfg/coco.data')['names']) colors = [[random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)] for _ in range(len(classes))] for i, (path, img, im0) in enumerate(dataloader): @@ -49,7 +49,7 @@ def detect( # Get detections img = torch.from_numpy(img).unsqueeze(0).to(device) if ONNX_EXPORT: - pred = torch.onnx._export(model, img, 'weights/model.onnx', verbose=True) + torch.onnx._export(model, img, 'weights/model.onnx', verbose=True) return # ONNX export pred = model(img) pred = pred[pred[:, :, 4] > conf_thres] From 22dc8c0ea687de7ab9092466a723f5619f9a6834 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 10 Feb 2019 22:01:53 +0100 Subject: [PATCH 0346/2595] updates --- models.py | 64 ++++++-------------------------------------------- train.py | 36 ++++++---------------------- utils/utils.py | 18 ++------------ 3 files changed, 16 insertions(+), 102 deletions(-) diff --git a/models.py b/models.py index 2b82ce69..b6538fc4 100755 --- a/models.py +++ b/models.py @@ -141,7 +141,7 @@ class YOLOLayer(nn.Module): self.grid_xy = torch.cat((self.grid_x, self.grid_y), 2) self.anchor_wh = torch.cat((self.anchor_w, self.anchor_h), 2) / nG - def forward(self, p, targets=None, batch_report=False, var=None): + def forward(self, p, targets=None, var=None): FT = torch.cuda.FloatTensor if p.is_cuda else torch.FloatTensor bs = 1 if ONNX_EXPORT else p.shape[0] # batch size nG = self.nG # number of grid points @@ -178,18 +178,7 @@ class YOLOLayer(nn.Module): # width = ((w.data * 2) ** 2) * self.anchor_w # height = ((h.data * 2) ** 2) * self.anchor_h - p_boxes = None - if batch_report: - # Predicted boxes: add offset and scale with anchors (in grid space, i.e. 0-13) - gx = x.data + self.grid_x[:, :, :nG, :nG] - gy = y.data + self.grid_y[:, :, :nG, :nG] - p_boxes = torch.stack((gx - width / 2, - gy - height / 2, - gx + width / 2, - gy + height / 2), 4) # x1y1x2y2 - - tx, ty, tw, th, mask, tcls, TP, FP, FN, TC = \ - build_targets(p_boxes, p_conf, p_cls, targets, self.anchor_wh, self.nA, self.nC, nG, batch_report) + tx, ty, tw, th, mask, tcls = build_targets(targets, self.anchor_wh, self.nA, self.nC, nG) tcls = tcls[mask] if x.is_cuda: @@ -214,26 +203,9 @@ class YOLOLayer(nn.Module): lconf = (k * 64) * BCEWithLogitsLoss(p_conf, mask.float()) # Sum loss components - balance_losses_flag = False - if balance_losses_flag: - k = 1 / self.loss_means.clone() - loss = (lx * k[0] + ly * k[1] + lw * k[2] + lh * k[3] + lconf * k[4] + lcls * k[5]) / k.mean() + loss = lx + ly + lw + lh + lconf + lcls - self.loss_means = self.loss_means * 0.99 + \ - FT([lx.data, ly.data, lw.data, lh.data, lconf.data, lcls.data]) * 0.01 - else: - loss = lx + ly + lw + lh + lconf + lcls - - # Sum False Positives from unassigned anchors - FPe = torch.zeros(self.nC) - if batch_report: - i = torch.sigmoid(p_conf[~mask]) > 0.5 - if i.sum() > 0: - FP_classes = torch.argmax(p_cls[~mask][i], 1) - FPe = torch.bincount(FP_classes, minlength=self.nC).float().cpu() # extra FPs - - return loss, loss.item(), lx.item(), ly.item(), lw.item(), lh.item(), lconf.item(), lcls.item(), \ - nT, TP, FP, FPe, FN, TC + return loss, loss.item(), lx.item(), ly.item(), lw.item(), lh.item(), lconf.item(), lcls.item(), nT else: if ONNX_EXPORT: @@ -273,9 +245,9 @@ class Darknet(nn.Module): self.module_defs[0]['height'] = img_size self.hyperparams, self.module_list = create_modules(self.module_defs) self.img_size = img_size - self.loss_names = ['loss', 'x', 'y', 'w', 'h', 'conf', 'cls', 'nT', 'TP', 'FP', 'FPe', 'FN', 'TC'] + self.loss_names = ['loss', 'x', 'y', 'w', 'h', 'conf', 'cls', 'nT'] - def forward(self, x, targets=None, batch_report=False, var=0): + def forward(self, x, targets=None, var=0): self.losses = defaultdict(float) is_training = targets is not None layer_outputs = [] @@ -296,7 +268,7 @@ class Darknet(nn.Module): elif module_def['type'] == 'yolo': # Train phase: get loss if is_training: - x, *losses = module[0](x, targets, batch_report, var) + x, *losses = module[0](x, targets, var) for name, loss in zip(self.loss_names, losses): self.losses[name] += loss # Test phase: Get detections @@ -306,29 +278,7 @@ class Darknet(nn.Module): layer_outputs.append(x) if is_training: - if batch_report: - self.losses['TC'] /= 3 # target category - metrics = torch.zeros(3, len(self.losses['FPe'])) # TP, FP, FN - - ui = np.unique(self.losses['TC'])[1:] - for i in ui: - j = self.losses['TC'] == float(i) - metrics[0, i] = (self.losses['TP'][j] > 0).sum().float() # TP - metrics[1, i] = (self.losses['FP'][j] > 0).sum().float() # FP - metrics[2, i] = (self.losses['FN'][j] == 3).sum().float() # FN - metrics[1] += self.losses['FPe'] - - self.losses['TP'] = metrics[0].sum() - self.losses['FP'] = metrics[1].sum() - self.losses['FN'] = metrics[2].sum() - self.losses['metrics'] = metrics - else: - self.losses['TP'] = 0 - self.losses['FP'] = 0 - self.losses['FN'] = 0 - self.losses['nT'] /= 3 - self.losses['TC'] = 0 if ONNX_EXPORT: output = torch.cat(output, 1) # merge the 3 layers 85 x (507, 2028, 8112) to 85 x 10647 diff --git a/train.py b/train.py index 293ceee1..4364712d 100644 --- a/train.py +++ b/train.py @@ -20,7 +20,6 @@ def train( batch_size=16, accumulated_batches=1, weights='weights', - report=False, multi_scale=False, freeze_backbone=True, var=0, @@ -30,7 +29,7 @@ def train( if multi_scale: # pass maximum multi_scale size img_size = 608 else: - torch.backends.cudnn.benchmark = True + torch.backends.cudnn.benchmark = True # unsuitable for multiscale latest = os.path.join(weights, 'latest.pt') best = os.path.join(weights, 'best.pt') @@ -93,12 +92,11 @@ def train( model_info(model) t0 = time.time() - mean_recall, mean_precision = 0, 0 for epoch in range(epochs): epoch += start_epoch - print(('%8s%12s' + '%10s' * 14) % ('Epoch', 'Batch', 'x', 'y', 'w', 'h', 'conf', 'cls', 'total', 'P', 'R', - 'nTargets', 'TP', 'FP', 'FN', 'time')) + print(('%8s%12s' + '%10s' * 9) % ( + 'Epoch', 'Batch', 'x', 'y', 'w', 'h', 'conf', 'cls', 'total', 'nTargets', 'time')) # Update scheduler (automatic) # scheduler.step() @@ -124,7 +122,6 @@ def train( ui = -1 rloss = defaultdict(float) # running loss - metrics = torch.zeros(3, num_classes) optimizer.zero_grad() for i, (imgs, targets) in enumerate(dataloader): if sum([len(x) for x in targets]) < 1: # if no targets continue @@ -137,7 +134,7 @@ def train( g['lr'] = lr # Compute loss, compute gradient, update parameters - loss = model(imgs.to(device), targets, batch_report=report, var=var) + loss = model(imgs.to(device), targets, var=var) loss.backward() # accumulate gradient for x batches before optimizing @@ -150,27 +147,10 @@ def train( for key, val in model.losses.items(): rloss[key] = (rloss[key] * ui + val) / (ui + 1) - if report: - TP, FP, FN = metrics - metrics += model.losses['metrics'] - - # Precision - precision = TP / (TP + FP) - k = (TP + FP) > 0 - if k.sum() > 0: - mean_precision = precision[k].mean() - - # Recall - recall = TP / (TP + FN) - k = (TP + FN) > 0 - if k.sum() > 0: - mean_recall = recall[k].mean() - - s = ('%8s%12s' + '%10.3g' * 14) % ( + s = ('%8s%12s' + '%10.3g' * 9) % ( '%g/%g' % (epoch, epochs - 1), '%g/%g' % (i, len(dataloader) - 1), rloss['x'], rloss['y'], rloss['w'], rloss['h'], rloss['conf'], rloss['cls'], - rloss['loss'], mean_precision, mean_recall, model.losses['nT'], model.losses['TP'], - model.losses['FP'], model.losses['FN'], time.time() - t0) + rloss['loss'], model.losses['nT'], time.time() - t0) t0 = time.time() print(s) @@ -214,9 +194,8 @@ if __name__ == '__main__': parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') parser.add_argument('--weights', type=str, default='weights', help='path to store weights') parser.add_argument('--resume', action='store_true', help='resume training flag') - parser.add_argument('--report', action='store_true', help='report TP, FP, FN, P and R per batch (slower)') parser.add_argument('--freeze', action='store_true', help='freeze darknet53.conv.74 layers for first epoch') - parser.add_argument('--var', type=float, default=0, help='optional test variable') + parser.add_argument('--var', type=float, default=0, help='test variable') opt = parser.parse_args() print(opt, end='\n\n') @@ -231,7 +210,6 @@ if __name__ == '__main__': batch_size=opt.batch_size, accumulated_batches=opt.accumulated_batches, weights=opt.weights, - report=opt.report, multi_scale=opt.multi_scale, freeze_backbone=opt.freeze, var=opt.var, diff --git a/utils/utils.py b/utils/utils.py index 7209c9bf..3dd2dcd1 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -214,7 +214,7 @@ def bbox_iou(box1, box2, x1y1x2y2=True): return inter_area / (b1_area + b2_area - inter_area + 1e-16) -def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG, batch_report): +def build_targets(target, anchor_wh, nA, nC, nG): """ returns nT, nCorrect, tx, ty, tw, th, tconf, tcls """ @@ -226,9 +226,6 @@ def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG th = torch.zeros(nB, nA, nG, nG) tconf = torch.ByteTensor(nB, nA, nG, nG).fill_(0) tcls = torch.ByteTensor(nB, nA, nG, nG, nC).fill_(0) # nC = number of classes - TP = torch.ByteTensor(nB, max(nT)).fill_(0) - FP = torch.ByteTensor(nB, max(nT)).fill_(0) - FN = torch.ByteTensor(nB, max(nT)).fill_(0) TC = torch.ShortTensor(nB, max(nT)).fill_(-1) # target category for b in range(nB): @@ -293,18 +290,7 @@ def build_targets(pred_boxes, pred_conf, pred_cls, target, anchor_wh, nA, nC, nG tcls[b, a, gj, gi, tc] = 1 tconf[b, a, gj, gi] = 1 - if batch_report: - # predicted classes and confidence - tb = torch.cat((gx - gw / 2, gy - gh / 2, gx + gw / 2, gy + gh / 2)).view(4, -1).t() # target boxes - pcls = torch.argmax(pred_cls[b, a, gj, gi], 1).cpu() - pconf = torch.sigmoid(pred_conf[b, a, gj, gi]).cpu() - iou_pred = bbox_iou(tb, pred_boxes[b, a, gj, gi].cpu()) - - TP[b, i] = (pconf > 0.5) & (iou_pred > 0.5) & (pcls == tc) - FP[b, i] = (pconf > 0.5) & (TP[b, i] == 0) # coordinates or class are wrong - FN[b, i] = pconf <= 0.5 # confidence score is too low (set to zero) - - return tx, ty, tw, th, tconf, tcls, TP, FP, FN, TC + return tx, ty, tw, th, tconf, tcls def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): From ab2ea5a2f90b5775c3006efadb0f97a19ec263bc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 10 Feb 2019 22:02:55 +0100 Subject: [PATCH 0347/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 4364712d..383b5c6c 100644 --- a/train.py +++ b/train.py @@ -96,7 +96,7 @@ def train( epoch += start_epoch print(('%8s%12s' + '%10s' * 9) % ( - 'Epoch', 'Batch', 'x', 'y', 'w', 'h', 'conf', 'cls', 'total', 'nTargets', 'time')) + 'Epoch', 'Batch', 'x', 'y', 'w', 'h', 'conf', 'cls', 'total', 'nTargets', 'time')) # Update scheduler (automatic) # scheduler.step() From 3cd76b2185a65074498218613bc088435f29c45e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 10 Feb 2019 23:27:31 +0100 Subject: [PATCH 0348/2595] updates --- utils/utils.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 3dd2dcd1..01eb6e7f 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -226,7 +226,6 @@ def build_targets(target, anchor_wh, nA, nC, nG): th = torch.zeros(nB, nA, nG, nG) tconf = torch.ByteTensor(nB, nA, nG, nG).fill_(0) tcls = torch.ByteTensor(nB, nA, nG, nG, nC).fill_(0) # nC = number of classes - TC = torch.ShortTensor(nB, max(nT)).fill_(-1) # target category for b in range(nB): nTb = nT[b] # number of targets @@ -235,7 +234,8 @@ def build_targets(target, anchor_wh, nA, nC, nG): t = target[b] # Convert to position relative to box - TC[b, :nTb], gx, gy, gw, gh = t[:, 0].long(), t[:, 1] * nG, t[:, 2] * nG, t[:, 3] * nG, t[:, 4] * nG + gx, gy, gw, gh = t[:, 1] * nG, t[:, 2] * nG, t[:, 3] * nG, t[:, 4] * nG + # Get grid box indices and prevent overflows (i.e. 13.01 on 13 anchors) gi = torch.clamp(gx.long(), min=0, max=nG - 1) gj = torch.clamp(gy.long(), min=0, max=nG - 1) @@ -270,7 +270,6 @@ def build_targets(target, anchor_wh, nA, nC, nG): else: if iou_best < 0.10: continue - i = 0 tc, gx, gy, gw, gh = t[:, 0].long(), t[:, 1] * nG, t[:, 2] * nG, t[:, 3] * nG, t[:, 4] * nG From daed93102c1f5aac791c9313c325f43eab961bad Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 11 Feb 2019 12:26:30 +0100 Subject: [PATCH 0349/2595] updates --- detect.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/detect.py b/detect.py index 8c8c41e6..4e396922 100755 --- a/detect.py +++ b/detect.py @@ -59,8 +59,7 @@ def detect( # Draw bounding boxes and labels of detections if detections is not None: - save_img_path = os.path.join(output, path.split('/')[-1]) - save_txt_path = save_img_path + '.txt' + save_path = os.path.join(output, path.split('/')[-1]) # Rescale boxes from 416 to true image size detections[:, :4] = scale_coords(img_size, detections[:, :4], im0.shape) @@ -70,22 +69,22 @@ def detect( n = (detections[:, -1].cpu() == i).sum() print('%g %ss' % (n, classes[int(i)]), end=', ') - for x1, y1, x2, y2, conf, cls_conf, cls_pred in detections: + for x1, y1, x2, y2, conf, cls_conf, cls in detections: if save_txt: # Write to file - with open(save_txt_path, 'a') as file: - file.write('%g %g %g %g %g %g\n' % (x1, y1, x2, y2, cls_pred, cls_conf * conf)) + with open(save_path + '.txt', 'a') as file: + file.write('%g %g %g %g %g %g\n' % (x1, y1, x2, y2, cls, cls_conf * conf)) if save_images: # Add bbox to the image - label = '%s %.2f' % (classes[int(cls_pred)], conf) - plot_one_box([x1, y1, x2, y2], im0, label=label, color=colors[int(cls_pred)]) + label = '%s %.2f' % (classes[int(cls)], conf) + plot_one_box([x1, y1, x2, y2], im0, label=label, color=colors[int(cls)]) if save_images: # Save generated image with detections - cv2.imwrite(save_img_path, im0) + cv2.imwrite(save_path, im0) - print(' Done. (%.3fs)' % (time.time() - t)) + print(' Done. (%.3fs)' % (time.time() - t)) if platform == 'darwin': # MacOS - os.system('open ' + output + '&& open ' + save_img_path) + os.system('open ' + output + '&& open ' + save_path) if __name__ == '__main__': From 429fd6121c89626383059a55f75152ed133526d2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 11 Feb 2019 12:26:46 +0100 Subject: [PATCH 0350/2595] updates --- utils/datasets.py | 1 - 1 file changed, 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index b0ca0694..65b03f80 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -42,7 +42,6 @@ class load_images(): # for inference # Padded resize img, ratio, padw, padh = letterbox(img0, height=self.height, color=(127.5, 127.5, 127.5)) - print(ratio, padw, padh) # Normalize RGB img = img[:, :, ::-1].transpose(2, 0, 1) From 37b633d205e4a0da8b1ed33f4bf7555cd09d48a4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 11 Feb 2019 12:27:11 +0100 Subject: [PATCH 0351/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 4e396922..9871e6ed 100755 --- a/detect.py +++ b/detect.py @@ -81,7 +81,7 @@ def detect( if save_images: # Save generated image with detections cv2.imwrite(save_path, im0) - print(' Done. (%.3fs)' % (time.time() - t)) + print('Done. (%.3fs)' % (time.time() - t)) if platform == 'darwin': # MacOS os.system('open ' + output + '&& open ' + save_path) From 003daea143a6850e871e712386bc1e8020deb2f3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 11 Feb 2019 12:32:54 +0100 Subject: [PATCH 0352/2595] updates --- detect.py | 3 ++- test.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index 9871e6ed..da63114f 100755 --- a/detect.py +++ b/detect.py @@ -23,9 +23,10 @@ def detect( os.system('rm -rf ' + output) os.makedirs(output, exist_ok=True) - # Load model + # Initialize model model = Darknet(cfg, img_size) + # Load weights if weights.endswith('.pt'): # pytorch format if weights.endswith('weights/yolov3.pt') and not os.path.isfile(weights): os.system('wget https://storage.googleapis.com/ultralytics/yolov3.pt -O ' + weights) diff --git a/test.py b/test.py index 7a3a8441..69c21db1 100644 --- a/test.py +++ b/test.py @@ -24,7 +24,7 @@ def test( nC = int(data_cfg['classes']) # number of classes (80 for COCO) test_path = data_cfg['valid'] - # Initiate model + # Initialize model model = Darknet(cfg, img_size) # Load weights From ebd682b25ce6861f694c2930da84cca0720a8b63 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 11 Feb 2019 12:40:14 +0100 Subject: [PATCH 0353/2595] updates --- utils/datasets.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 65b03f80..95e86fcd 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -24,7 +24,7 @@ class load_images(): # for inference self.nF = len(self.files) # number of image files self.height = img_size - assert self.nF > 0, 'No images found in path %s' % path + assert self.nF > 0, 'No images found in ' + path def __iter__(self): self.count = -1 @@ -41,7 +41,7 @@ class load_images(): # for inference assert img0 is not None, 'Failed to load ' + img_path # Padded resize - img, ratio, padw, padh = letterbox(img0, height=self.height, color=(127.5, 127.5, 127.5)) + img, _, _, _ = letterbox(img0, height=self.height) # Normalize RGB img = img[:, :, ::-1].transpose(2, 0, 1) @@ -58,13 +58,12 @@ class load_images(): # for inference class load_images_and_labels(): # for training def __init__(self, path, batch_size=1, img_size=608, multi_scale=False, augment=False): self.path = path - # self.img_files = sorted(glob.glob('%s/*.*' % path)) with open(path, 'r') as file: self.img_files = file.readlines() self.img_files = [path.replace('\n', '') for path in self.img_files] - self.label_files = [path.replace('images', 'labels').replace('.png', '.txt').replace('.jpg', '.txt') for path in - self.img_files] + self.label_files = [path.replace('images', 'labels').replace('.png', '.txt').replace('.jpg', '.txt') + for path in self.img_files] self.nF = len(self.img_files) # number of image files self.nB = math.ceil(self.nF / batch_size) # number of batches @@ -73,7 +72,7 @@ class load_images_and_labels(): # for training self.multi_scale = multi_scale self.augment = augment - assert self.nB > 0, 'No images found in path %s' % path + assert self.nB > 0, 'No images found in %s' % path def __iter__(self): self.count = -1 @@ -128,7 +127,7 @@ class load_images_and_labels(): # for training cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) h, w, _ = img.shape - img, ratio, padw, padh = letterbox(img, height=height, color=(127.5, 127.5, 127.5)) + img, ratio, padw, padh = letterbox(img, height=height) # Load labels if os.path.isfile(label_path): @@ -189,7 +188,7 @@ class load_images_and_labels(): # for training return self.nB # number of batches -def letterbox(img, height=416, color=(0, 0, 0)): # resize a rectangular image to a padded square +def letterbox(img, height=416, color=(127.5, 127.5, 127.5)): # resize a rectangular image to a padded square shape = img.shape[:2] # shape = [height, width] ratio = float(height) / max(shape) # ratio = old / new new_shape = (round(shape[1] * ratio), round(shape[0] * ratio)) From 1ca352b328d1e62a009b14e78c50569bc9755797 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 11 Feb 2019 12:44:12 +0100 Subject: [PATCH 0354/2595] class labeling corrections --- detect.py | 2 +- test.py | 4 ++-- train.py | 2 +- utils/datasets.py | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/detect.py b/detect.py index da63114f..b71d5d9d 100755 --- a/detect.py +++ b/detect.py @@ -37,7 +37,7 @@ def detect( model.to(device).eval() # Set Dataloader - dataloader = load_images(images, img_size=img_size) + dataloader = LoadImages(images, img_size=img_size) # Get classes and colors classes = load_classes(parse_data_cfg('cfg/coco.data')['names']) diff --git a/test.py b/test.py index 69c21db1..e0d5deb3 100644 --- a/test.py +++ b/test.py @@ -36,8 +36,8 @@ def test( model.to(device).eval() # Get dataloader - # dataloader = torch.utils.data.DataLoader(load_images_with_labels(test_path), batch_size=batch_size) # pytorch - dataloader = load_images_and_labels(test_path, batch_size=batch_size, img_size=img_size) + # dataloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path), batch_size=batch_size) # pytorch + dataloader = LoadImagesAndLabels(test_path, batch_size=batch_size, img_size=img_size) mean_mAP, mean_R, mean_P = 0.0, 0.0, 0.0 print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP')) diff --git a/train.py b/train.py index 383b5c6c..e7290b13 100644 --- a/train.py +++ b/train.py @@ -43,7 +43,7 @@ def train( model = Darknet(cfg, img_size) # Get dataloader - dataloader = load_images_and_labels(train_path, batch_size, img_size, multi_scale=multi_scale, augment=True) + dataloader = LoadImagesAndLabels(train_path, batch_size, img_size, multi_scale=multi_scale, augment=True) lr0 = 0.001 if resume: diff --git a/utils/datasets.py b/utils/datasets.py index 95e86fcd..ef64c4e9 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -12,7 +12,7 @@ import torch from utils.utils import xyxy2xywh -class load_images(): # for inference +class LoadImages: # for inference def __init__(self, path, img_size=416): if os.path.isdir(path): image_format = ['.jpg', '.jpeg', '.png', '.tif'] @@ -55,7 +55,7 @@ class load_images(): # for inference return self.nF # number of files -class load_images_and_labels(): # for training +class LoadImagesAndLabels: # for training def __init__(self, path, batch_size=1, img_size=608, multi_scale=False, augment=False): self.path = path with open(path, 'r') as file: From 786e10a1972c5354d379ba19bd68bdd0d24d0f19 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 11 Feb 2019 13:45:04 +0100 Subject: [PATCH 0355/2595] class labeling corrections --- detect.py | 45 +++++++++++++++++++++++++++------------------ utils/datasets.py | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 18 deletions(-) diff --git a/detect.py b/detect.py index b71d5d9d..ab0a071e 100755 --- a/detect.py +++ b/detect.py @@ -17,7 +17,8 @@ def detect( conf_thres=0.3, nms_thres=0.45, save_txt=False, - save_images=True + save_images=True, + webcam=False ): device = torch_utils.select_device() os.system('rm -rf ' + output) @@ -37,15 +38,20 @@ def detect( model.to(device).eval() # Set Dataloader - dataloader = LoadImages(images, img_size=img_size) + if webcam: + save_images = False + dataloader = LoadWebcam(images, img_size=img_size) + else: + dataloader = LoadImages(images, img_size=img_size) # Get classes and colors classes = load_classes(parse_data_cfg('cfg/coco.data')['names']) colors = [[random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)] for _ in range(len(classes))] for i, (path, img, im0) in enumerate(dataloader): - print("%g/%g '%s': " % (i + 1, len(dataloader), path), end='') t = time.time() + print("%g/%g '%s': " % (i + 1, len(dataloader), path), end='') + save_path = os.path.join(output, path.split('/')[-1]) # Get detections img = torch.from_numpy(img).unsqueeze(0).to(device) @@ -53,45 +59,48 @@ def detect( torch.onnx._export(model, img, 'weights/model.onnx', verbose=True) return # ONNX export pred = model(img) - pred = pred[pred[:, :, 4] > conf_thres] + pred = pred[pred[:, :, 4] > conf_thres] # remove boxes < threshold if len(pred) > 0: + # Run NMS on predictions detections = non_max_suppression(pred.unsqueeze(0), conf_thres, nms_thres)[0] - # Draw bounding boxes and labels of detections - if detections is not None: - save_path = os.path.join(output, path.split('/')[-1]) - # Rescale boxes from 416 to true image size detections[:, :4] = scale_coords(img_size, detections[:, :4], im0.shape) + # Print results to screen unique_classes = detections[:, -1].cpu().unique() for i in unique_classes: n = (detections[:, -1].cpu() == i).sum() print('%g %ss' % (n, classes[int(i)]), end=', ') + # Draw bounding boxes and labels of detections for x1, y1, x2, y2, conf, cls_conf, cls in detections: if save_txt: # Write to file with open(save_path + '.txt', 'a') as file: - file.write('%g %g %g %g %g %g\n' % (x1, y1, x2, y2, cls, cls_conf * conf)) + file.write('%g %g %g %g %g %g\n' % + (x1, y1, x2, y2, cls, cls_conf * conf)) - if save_images: # Add bbox to the image - label = '%s %.2f' % (classes[int(cls)], conf) - plot_one_box([x1, y1, x2, y2], im0, label=label, color=colors[int(cls)]) - - if save_images: # Save generated image with detections - cv2.imwrite(save_path, im0) + # Add bbox to the image + label = '%s %.2f' % (classes[int(cls)], conf) + plot_one_box([x1, y1, x2, y2], im0, label=label, color=colors[int(cls)]) print('Done. (%.3fs)' % (time.time() - t)) - if platform == 'darwin': # MacOS + if save_images: # Save generated image with detections + cv2.imwrite(save_path, im0) + + if webcam: # Show live webcam + cv2.imshow(weights, im0) + + if save_images and (platform == 'darwin'): # MacOS os.system('open ' + output + '&& open ' + save_path) if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') - parser.add_argument('--weights', type=str, default='weights/yolov3.pt', help='path to weights file') + parser.add_argument('--cfg', type=str, default='cfg/yolov3-tiny.cfg', help='cfg file path') + parser.add_argument('--weights', type=str, default='weights/yolov3-tiny.pt', help='path to weights file') parser.add_argument('--images', type=str, default='data/samples', help='path to images') parser.add_argument('--img-size', type=int, default=32 * 13, help='size of each image dimension') parser.add_argument('--conf-thres', type=float, default=0.50, help='object confidence threshold') diff --git a/utils/datasets.py b/utils/datasets.py index ef64c4e9..66428836 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -55,6 +55,42 @@ class LoadImages: # for inference return self.nF # number of files +class LoadWebcam: # for inference + def __init__(self, path, img_size=416): + self.cam = cv2.VideoCapture(0) + self.nF = 9999 # number of image files + self.height = img_size + + def __iter__(self): + self.count = -1 + return self + + def __next__(self): + self.count += 1 + if cv2.waitKey(1) == 27: # esc to quit + cv2.destroyAllWindows() + raise StopIteration + + # Read image + ret_val, img0 = self.cam.read() + assert ret_val, 'Webcam Error' + img_path = 'webcam_%g.jpg' % self.count + img0 = cv2.flip(img0, 1) + + # Padded resize + img, _, _, _ = letterbox(img0, height=self.height) + + # Normalize RGB + img = img[:, :, ::-1].transpose(2, 0, 1) + img = np.ascontiguousarray(img, dtype=np.float32) + img /= 255.0 + + return img_path, img, img0 + + def __len__(self): + return self.nF # number of files + + class LoadImagesAndLabels: # for training def __init__(self, path, batch_size=1, img_size=608, multi_scale=False, augment=False): self.path = path From 6f58e1384a6f2268608af5ae569490eda16c67e4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 11 Feb 2019 13:47:58 +0100 Subject: [PATCH 0356/2595] class labeling corrections --- detect.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index ab0a071e..984615c7 100755 --- a/detect.py +++ b/detect.py @@ -99,8 +99,8 @@ def detect( if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument('--cfg', type=str, default='cfg/yolov3-tiny.cfg', help='cfg file path') - parser.add_argument('--weights', type=str, default='weights/yolov3-tiny.pt', help='path to weights file') + parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') + parser.add_argument('--weights', type=str, default='weights/yolov3.pt', help='path to weights file') parser.add_argument('--images', type=str, default='data/samples', help='path to images') parser.add_argument('--img-size', type=int, default=32 * 13, help='size of each image dimension') parser.add_argument('--conf-thres', type=float, default=0.50, help='object confidence threshold') From 5d76ebcc5bc1c187b6e54bc9d046bc1d2dcc27e1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 11 Feb 2019 14:08:36 +0100 Subject: [PATCH 0357/2595] updates --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index ce0b6197..eb9ba27f 100755 --- a/.gitignore +++ b/.gitignore @@ -19,7 +19,6 @@ data/* !data/samples/zidane.jpg results*.txt -temp-plot.html # MATLAB GitIgnore ----------------------------------------------------------------------------------------------------- *.m~ From d85eafe550bf651a54d2d3038fe1f3078945292c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 11 Feb 2019 14:11:24 +0100 Subject: [PATCH 0358/2595] updates --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 1f502e2c..fa29c045 100755 --- a/README.md +++ b/README.md @@ -45,6 +45,7 @@ HS**V** Intensity | +/- 50% # Inference +## Images Run `detect.py` to apply trained weights to an image and visualize results, such as `zidane.jpg` from the `data/samples` folder, shown here. **YOLOv3:** `detect.py --cfg cfg/yolov3.cfg --weights weights/yolov3.pt` @@ -53,6 +54,10 @@ Run `detect.py` to apply trained weights to an image and visualize results, such **YOLOv3-tiny:** `detect.py --cfg cfg/yolov3-tiny.cfg --weights weights/yolov3-tiny.pt` +## Webcam +Run `detect.py` with `webcam=True` to show a live webcam feed. + + # Pretrained Weights Download official YOLOv3 weights: From 22e963a8b7d6dca9c7e6d5b9b496afcb7dfdb685 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 11 Feb 2019 14:12:13 +0100 Subject: [PATCH 0359/2595] updates --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index fa29c045..6b75418d 100755 --- a/README.md +++ b/README.md @@ -44,9 +44,8 @@ HS**V** Intensity | +/- 50% # Inference - ## Images -Run `detect.py` to apply trained weights to an image and visualize results, such as `zidane.jpg` from the `data/samples` folder, shown here. +Run `detect.py` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder, shown here. **YOLOv3:** `detect.py --cfg cfg/yolov3.cfg --weights weights/yolov3.pt` From 0d1bcae1ef65d8a2243a73ef2f8c83b961894bf1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 11 Feb 2019 14:13:27 +0100 Subject: [PATCH 0360/2595] updates --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6b75418d..2c574dba 100755 --- a/README.md +++ b/README.md @@ -44,8 +44,8 @@ HS**V** Intensity | +/- 50% # Inference -## Images -Run `detect.py` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder, shown here. + +Run `detect.py` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder: **YOLOv3:** `detect.py --cfg cfg/yolov3.cfg --weights weights/yolov3.pt` @@ -54,8 +54,8 @@ Run `detect.py` to apply trained weights to an image, such as `zidane.jpg` from ## Webcam -Run `detect.py` with `webcam=True` to show a live webcam feed. +Run `detect.py` with `webcam=True` to show a live webcam feed. # Pretrained Weights From dea82efa294277c29cb020ee6f7ee1d409ff38b5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 11 Feb 2019 14:19:06 +0100 Subject: [PATCH 0361/2595] updates --- detect.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/detect.py b/detect.py index 984615c7..0868d925 100755 --- a/detect.py +++ b/detect.py @@ -18,7 +18,7 @@ def detect( nms_thres=0.45, save_txt=False, save_images=True, - webcam=False + webcam=True ): device = torch_utils.select_device() os.system('rm -rf ' + output) @@ -85,13 +85,14 @@ def detect( label = '%s %.2f' % (classes[int(cls)], conf) plot_one_box([x1, y1, x2, y2], im0, label=label, color=colors[int(cls)]) - print('Done. (%.3fs)' % (time.time() - t)) + dt = time.time() - t + print('Done. (%.3fs)' % dt) if save_images: # Save generated image with detections cv2.imwrite(save_path, im0) if webcam: # Show live webcam - cv2.imshow(weights, im0) + cv2.imshow(weights + ' - %.2f FPS' % (1 / dt), im0) if save_images and (platform == 'darwin'): # MacOS os.system('open ' + output + '&& open ' + save_path) From be2c70106b42991e27d3c1b42855bbc5f253ab91 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 11 Feb 2019 14:19:35 +0100 Subject: [PATCH 0362/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 0868d925..b7ce566f 100755 --- a/detect.py +++ b/detect.py @@ -18,7 +18,7 @@ def detect( nms_thres=0.45, save_txt=False, save_images=True, - webcam=True + webcam=False ): device = torch_utils.select_device() os.system('rm -rf ' + output) From 585f2e2cc1b46dfc03547c6fac9f88ada7836fba Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 11 Feb 2019 17:25:32 +0100 Subject: [PATCH 0363/2595] updates --- detect.py | 4 ++-- utils/datasets.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/detect.py b/detect.py index b7ce566f..57f149d4 100755 --- a/detect.py +++ b/detect.py @@ -40,7 +40,7 @@ def detect( # Set Dataloader if webcam: save_images = False - dataloader = LoadWebcam(images, img_size=img_size) + dataloader = LoadWebcam(img_size=img_size) else: dataloader = LoadImages(images, img_size=img_size) @@ -50,7 +50,7 @@ def detect( for i, (path, img, im0) in enumerate(dataloader): t = time.time() - print("%g/%g '%s': " % (i + 1, len(dataloader), path), end='') + print("%g/%g '%s': " % (i + 1, len(dataloader), path if not webcam else 'webcam'), end='') save_path = os.path.join(output, path.split('/')[-1]) # Get detections diff --git a/utils/datasets.py b/utils/datasets.py index 66428836..979e07af 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -56,7 +56,7 @@ class LoadImages: # for inference class LoadWebcam: # for inference - def __init__(self, path, img_size=416): + def __init__(self, img_size=416): self.cam = cv2.VideoCapture(0) self.nF = 9999 # number of image files self.height = img_size From e23b1a3d7336cfa876a241b09a8aadfba421fe07 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 11 Feb 2019 18:15:51 +0100 Subject: [PATCH 0364/2595] webcam updates --- detect.py | 13 ++- models.py | 20 ++-- train.py | 5 +- utils/datasets.py | 3 +- utils/onnx2coreml.py | 208 ------------------------------------------ utils/parse_config.py | 7 +- utils/utils.py | 6 +- 7 files changed, 29 insertions(+), 233 deletions(-) delete mode 100644 utils/onnx2coreml.py diff --git a/detect.py b/detect.py index 57f149d4..fb4c8672 100755 --- a/detect.py +++ b/detect.py @@ -50,13 +50,16 @@ def detect( for i, (path, img, im0) in enumerate(dataloader): t = time.time() - print("%g/%g '%s': " % (i + 1, len(dataloader), path if not webcam else 'webcam'), end='') + if webcam: + print('webcam frame %g: ' % (i + 1), end='') + else: + print('image %g/%g %s: ' % (i + 1, len(dataloader), path), end='') save_path = os.path.join(output, path.split('/')[-1]) # Get detections img = torch.from_numpy(img).unsqueeze(0).to(device) if ONNX_EXPORT: - torch.onnx._export(model, img, 'weights/model.onnx', verbose=True) + torch.onnx.export(model, img, 'weights/model.onnx', verbose=True) return # ONNX export pred = model(img) pred = pred[pred[:, :, 4] > conf_thres] # remove boxes < threshold @@ -70,9 +73,9 @@ def detect( # Print results to screen unique_classes = detections[:, -1].cpu().unique() - for i in unique_classes: - n = (detections[:, -1].cpu() == i).sum() - print('%g %ss' % (n, classes[int(i)]), end=', ') + for c in unique_classes: + n = (detections[:, -1].cpu() == c).sum() + print('%g %ss' % (n, classes[int(c)]), end=', ') # Draw bounding boxes and labels of detections for x1, y1, x2, y2, conf, cls_conf, cls in detections: diff --git a/models.py b/models.py index b6538fc4..9e4ca010 100755 --- a/models.py +++ b/models.py @@ -82,6 +82,9 @@ class EmptyLayer(nn.Module): def __init__(self): super(EmptyLayer, self).__init__() + def forward(self, x): + return x + class Upsample(nn.Module): # Custom Upsample layer (nn.Upsample gives deprecated warning message) @@ -121,8 +124,8 @@ class YOLOLayer(nn.Module): # Build anchor grids nG = int(self.img_dim / stride) # number grid points - self.grid_x = torch.arange(nG).repeat(nG, 1).view([1, 1, nG, nG]).float() - self.grid_y = torch.arange(nG).repeat(nG, 1).t().view([1, 1, nG, nG]).float() + self.grid_x = torch.arange(nG).repeat((nG, 1)).view((1, 1, nG, nG)).float() + self.grid_y = torch.arange(nG).repeat((nG, 1)).t().view((1, 1, nG, nG)).float() self.anchor_wh = torch.FloatTensor([(a_w / stride, a_h / stride) for a_w, a_h in anchors]) # scale anchors self.anchor_w = self.anchor_wh[:, 0].view((1, nA, 1, 1)) self.anchor_h = self.anchor_wh[:, 1].view((1, nA, 1, 1)) @@ -169,8 +172,8 @@ class YOLOLayer(nn.Module): # Width and height (yolo method) w = p[..., 2] # Width h = p[..., 3] # Height - width = torch.exp(w.data) * self.anchor_w - height = torch.exp(h.data) * self.anchor_h + # width = torch.exp(w.data) * self.anchor_w + # height = torch.exp(h.data) * self.anchor_h # Width and height (power method) # w = torch.sigmoid(p[..., 2]) # Width @@ -217,8 +220,8 @@ class YOLOLayer(nn.Module): # Broadcasting only supported on first dimension in CoreML. See onnx-coreml/_operators.py # p_cls = F.softmax(p_cls, 2) * p_conf # SSD-like conf - p_cls = torch.exp(p_cls).permute(2, 1, 0) - p_cls = p_cls / p_cls.sum(0).unsqueeze(0) * p_conf.permute(2, 1, 0) # F.softmax() equivalent + p_cls = torch.exp(p_cls).permute((2, 1, 0)) + p_cls = p_cls / p_cls.sum(0).unsqueeze(0) * p_conf.permute((2, 1, 0)) # F.softmax() equivalent p_cls = p_cls.permute(2, 1, 0) return torch.cat((xy / nG, width_height, p_conf, p_cls), 2).squeeze().t() @@ -246,6 +249,7 @@ class Darknet(nn.Module): self.hyperparams, self.module_list = create_modules(self.module_defs) self.img_size = img_size self.loss_names = ['loss', 'x', 'y', 'w', 'h', 'conf', 'cls', 'nT'] + self.losses = [] def forward(self, x, targets=None, var=0): self.losses = defaultdict(float) @@ -296,8 +300,8 @@ def load_darknet_weights(self, weights, cutoff=-1): if not os.path.isfile(weights): try: os.system('wget https://pjreddie.com/media/files/' + weights_file + ' -P ' + weights) - except: - assert os.path.isfile(weights) + except IOError: + print(weights + ' not found') # Establish cutoffs if weights_file == 'darknet53.conv.74': diff --git a/train.py b/train.py index e7290b13..030b808f 100644 --- a/train.py +++ b/train.py @@ -36,7 +36,6 @@ def train( # Configure run data_cfg = parse_data_cfg(data_cfg) - num_classes = int(data_cfg['classes']) train_path = data_cfg['train'] # Initialize model @@ -62,7 +61,7 @@ def train( # p.requires_grad = False # Set optimizer - optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters()), lr=lr0, momentum=.9) + optimizer = torch.optim.SGD(filter(lambda x: x.requires_grad, model.parameters()), lr=lr0, momentum=.9) start_epoch = checkpoint['epoch'] + 1 if checkpoint['optimizer'] is not None: @@ -85,7 +84,7 @@ def train( model.to(device).train() # Set optimizer - optimizer = torch.optim.SGD(filter(lambda p: p.requires_grad, model.parameters()), lr=lr0, momentum=.9) + optimizer = torch.optim.SGD(filter(lambda x: x.requires_grad, model.parameters()), lr=lr0, momentum=.9) # Set scheduler # scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[54, 61], gamma=0.1) diff --git a/utils/datasets.py b/utils/datasets.py index 979e07af..fdd30901 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -58,7 +58,6 @@ class LoadImages: # for inference class LoadWebcam: # for inference def __init__(self, img_size=416): self.cam = cv2.VideoCapture(0) - self.nF = 9999 # number of image files self.height = img_size def __iter__(self): @@ -88,7 +87,7 @@ class LoadWebcam: # for inference return img_path, img, img0 def __len__(self): - return self.nF # number of files + return 0 class LoadImagesAndLabels: # for training diff --git a/utils/onnx2coreml.py b/utils/onnx2coreml.py deleted file mode 100644 index 4c00c20a..00000000 --- a/utils/onnx2coreml.py +++ /dev/null @@ -1,208 +0,0 @@ -import os -import onnx -from onnx import onnx_pb -from onnx_coreml import convert -import glob - - -# https://github.com/onnx/onnx-coreml -# http://machinethink.net/blog/mobilenet-ssdlite-coreml/ -# https://github.com/hollance/YOLO-CoreML-MPSNNGraph - -def main(): - os.system('rm -rf saved_models && mkdir saved_models') - files = glob.glob('saved_models/*.onnx') + glob.glob('../yolov3/weights/*.onnx') - - for f in files: - # 1. ONNX to CoreML - name = 'saved_models/' + f.split('/')[-1].replace('.onnx', '') - - # # Load the ONNX model - model = onnx.load(f) - - # Check that the IR is well formed - print(onnx.checker.check_model(model)) - - # Print a human readable representation of the graph - print(onnx.helper.printable_graph(model.graph)) - - model_file = open(f, 'rb') - model_proto = onnx_pb.ModelProto() - model_proto.ParseFromString(model_file.read()) - yolov3_model = convert(model_proto, image_input_names=['0'], preprocessing_args={'image_scale': 1. / 255}) - - # 2. Reduce model to FP16, change outputs to DOUBLE and save - import coremltools - - spec = yolov3_model.get_spec() - for i in range(2): - spec.description.output[i].type.multiArrayType.dataType = \ - coremltools.proto.FeatureTypes_pb2.ArrayFeatureType.ArrayDataType.Value('DOUBLE') - - spec = coremltools.utils.convert_neural_network_spec_weights_to_fp16(spec) - yolov3_model = coremltools.models.MLModel(spec) - - name_out0 = spec.description.output[0].name - name_out1 = spec.description.output[1].name - - num_classes = 80 - num_anchors = 507 # 507 for yolov3-tiny, - spec.description.output[0].type.multiArrayType.shape.append(num_anchors) - spec.description.output[0].type.multiArrayType.shape.append(num_classes) - # spec.description.output[0].type.multiArrayType.shape.append(1) - - spec.description.output[1].type.multiArrayType.shape.append(num_anchors) - spec.description.output[1].type.multiArrayType.shape.append(4) - # spec.description.output[1].type.multiArrayType.shape.append(1) - - # rename - # input_mlmodel = input_tensor.replace(":", "__").replace("/", "__") - # class_output_mlmodel = class_output_tensor.replace(":", "__").replace("/", "__") - # bbox_output_mlmodel = bbox_output_tensor.replace(":", "__").replace("/", "__") - # - # for i in range(len(spec.neuralNetwork.layers)): - # if spec.neuralNetwork.layers[i].input[0] == input_mlmodel: - # spec.neuralNetwork.layers[i].input[0] = 'image' - # if spec.neuralNetwork.layers[i].output[0] == class_output_mlmodel: - # spec.neuralNetwork.layers[i].output[0] = 'scores' - # if spec.neuralNetwork.layers[i].output[0] == bbox_output_mlmodel: - # spec.neuralNetwork.layers[i].output[0] = 'boxes' - - spec.neuralNetwork.preprocessing[0].featureName = '0' - - yolov3_model.save(name + '.mlmodel') - # yolov3_model.visualize_spec() - print(spec.description) - - # 2.5. Try to Predict: - from PIL import Image - img = Image.open('../yolov3/data/samples/zidane_416.jpg') - out = yolov3_model.predict({'0': img}, useCPUOnly=True) - print(out[name_out0].shape, out[name_out1].shape) - - # 3. Create NMS protobuf - import numpy as np - - nms_spec = coremltools.proto.Model_pb2.Model() - nms_spec.specificationVersion = 3 - - for i in range(2): - decoder_output = yolov3_model._spec.description.output[i].SerializeToString() - - nms_spec.description.input.add() - nms_spec.description.input[i].ParseFromString(decoder_output) - - nms_spec.description.output.add() - nms_spec.description.output[i].ParseFromString(decoder_output) - - nms_spec.description.output[0].name = 'confidence' - nms_spec.description.output[1].name = 'coordinates' - - output_sizes = [num_classes, 4] - for i in range(2): - ma_type = nms_spec.description.output[i].type.multiArrayType - ma_type.shapeRange.sizeRanges.add() - ma_type.shapeRange.sizeRanges[0].lowerBound = 0 - ma_type.shapeRange.sizeRanges[0].upperBound = -1 - ma_type.shapeRange.sizeRanges.add() - ma_type.shapeRange.sizeRanges[1].lowerBound = output_sizes[i] - ma_type.shapeRange.sizeRanges[1].upperBound = output_sizes[i] - del ma_type.shape[:] - - nms = nms_spec.nonMaximumSuppression - nms.confidenceInputFeatureName = name_out0 # 1x507x80 - nms.coordinatesInputFeatureName = name_out1 # 1x507x4 - nms.confidenceOutputFeatureName = 'confidence' - nms.coordinatesOutputFeatureName = 'coordinates' - nms.iouThresholdInputFeatureName = 'iouThreshold' - nms.confidenceThresholdInputFeatureName = 'confidenceThreshold' - - nms.iouThreshold = 0.4 - nms.confidenceThreshold = 0.5 - nms.pickTop.perClass = True - - labels = np.loadtxt('../yolov3/data/coco.names', dtype=str, delimiter='\n') - nms.stringClassLabels.vector.extend(labels) - - nms_model = coremltools.models.MLModel(nms_spec) - nms_model.save(name + '_nms.mlmodel') - - # out_nms = nms_model.predict({ - # '143': out['143'].squeeze().reshape((80, 507)), - # '144': out['144'].squeeze().reshape((4, 507)) - # }) - # print(out_nms['confidence'].shape, out_nms['coordinates'].shape) - - # # # 3.5 Add Softmax model - # from coremltools.models import datatypes - # from coremltools.models import neural_network - # - # input_features = [ - # ("141", datatypes.Array(num_anchors, num_classes, 1)), - # ("143", datatypes.Array(num_anchors, 4, 1)) - # ] - # - # output_features = [ - # ("141", datatypes.Array(num_anchors, num_classes, 1)), - # ("143", datatypes.Array(num_anchors, 4, 1)) - # ] - # - # builder = neural_network.NeuralNetworkBuilder(input_features, output_features) - # builder.add_softmax(name="softmax_pcls", - # dim=(0, 3, 2, 1), - # input_name="scores", - # output_name="permute_scores_output") - # softmax_model = coremltools.models.MLModel(builder.spec) - # softmax_model.save("softmax.mlmodel") - - # 4. Pipeline models togethor - from coremltools.models import datatypes - # from coremltools.models import neural_network - from coremltools.models.pipeline import Pipeline - - input_features = [('0', datatypes.Array(3, 416, 416)), - ('iouThreshold', datatypes.Double()), - ('confidenceThreshold', datatypes.Double())] - - output_features = ['confidence', 'coordinates'] - - pipeline = Pipeline(input_features, output_features) - - # Add 3rd dimension of size 1 (apparently not needed, produces error on compile) - yolov3_output = yolov3_model._spec.description.output - yolov3_output[0].type.multiArrayType.shape[:] = [num_anchors, num_classes, 1] - yolov3_output[1].type.multiArrayType.shape[:] = [num_anchors, 4, 1] - - nms_input = nms_model._spec.description.input - for i in range(2): - nms_input[i].type.multiArrayType.shape[:] = yolov3_output[i].type.multiArrayType.shape[:] - - # And now we can add the three models, in order: - pipeline.add_model(yolov3_model) - - pipeline.add_model(nms_model) - - # Correct datatypes - pipeline.spec.description.input[0].ParseFromString(yolov3_model._spec.description.input[0].SerializeToString()) - pipeline.spec.description.output[0].ParseFromString(nms_model._spec.description.output[0].SerializeToString()) - pipeline.spec.description.output[1].ParseFromString(nms_model._spec.description.output[1].SerializeToString()) - - # Update metadata - pipeline.spec.description.metadata.versionString = 'yolov3-tiny.pt imported from PyTorch' - pipeline.spec.description.metadata.shortDescription = 'https://github.com/ultralytics/yolov3' - pipeline.spec.description.metadata.author = 'glenn.jocher@ultralytics.com' - pipeline.spec.description.metadata.license = 'https://github.com/ultralytics/yolov3' - - user_defined_metadata = {'classes': ','.join(labels), - 'iou_threshold': str(nms.iouThreshold), - 'confidence_threshold': str(nms.confidenceThreshold)} - pipeline.spec.description.metadata.userDefined.update(user_defined_metadata) - - # Save the model - pipeline.spec.specificationVersion = 3 - final_model = coremltools.models.MLModel(pipeline.spec) - final_model.save((name + '_pipelined.mlmodel')) - - -if __name__ == '__main__': - main() diff --git a/utils/parse_config.py b/utils/parse_config.py index dae59196..714bae7a 100644 --- a/utils/parse_config.py +++ b/utils/parse_config.py @@ -1,14 +1,12 @@ - - def parse_model_config(path): """Parses the yolo-v3 layer configuration file and returns module definitions""" file = open(path, 'r') lines = file.read().split('\n') lines = [x for x in lines if x and not x.startswith('#')] - lines = [x.rstrip().lstrip() for x in lines] # get rid of fringe whitespaces + lines = [x.rstrip().lstrip() for x in lines] # get rid of fringe whitespaces module_defs = [] for line in lines: - if line.startswith('['): # This marks the start of a new block + if line.startswith('['): # This marks the start of a new block module_defs.append({}) module_defs[-1]['type'] = line[1:-1].rstrip() if module_defs[-1]['type'] == 'convolutional': @@ -20,6 +18,7 @@ def parse_model_config(path): return module_defs + def parse_data_cfg(path): """Parses the data configuration file""" options = dict() diff --git a/utils/utils.py b/utils/utils.py index 01eb6e7f..45060b3f 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -254,7 +254,7 @@ def build_targets(target, anchor_wh, nA, nC, nG): iou_order = torch.argsort(-iou_best) # best to worst # Unique anchor selection - u = torch.cat((gi, gj, a), 0).view(3, -1) + u = torch.cat((gi, gj, a), 0).view((3, -1)) _, first_unique = np.unique(u[:, iou_order], axis=1, return_index=True) # first unique indices # _, first_unique = torch.unique(u[:, iou_order], dim=1, return_inverse=True) # different than numpy? @@ -340,7 +340,8 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): # x = np.concatenate((log_w.reshape(-1, 1), log_h.reshape(-1, 1)), 1) # from scipy.stats import multivariate_normal # for c in range(60): - # shape_likelihood[:, c] = multivariate_normal.pdf(x, mean=mat['class_mu'][c, :2], cov=mat['class_cov'][c, :2, :2]) + # shape_likelihood[:, c] = + # multivariate_normal.pdf(x, mean=mat['class_mu'][c, :2], cov=mat['class_cov'][c, :2, :2]) class_prob, class_pred = torch.max(F.softmax(pred[:, 5:], 1), 1) @@ -436,7 +437,6 @@ def coco_class_count(path='../coco/labels/train2014/'): def plot_results(): # Plot YOLO training results file 'results.txt' import glob - import numpy as np import matplotlib.pyplot as plt # import os; os.system('rm -rf results.txt && wget https://storage.googleapis.com/ultralytics/results_v1_0.txt') From 742908257a539ca829db2dcc94df995f9d4a9eb6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 11 Feb 2019 18:17:38 +0100 Subject: [PATCH 0365/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index fb4c8672..67721d8d 100755 --- a/detect.py +++ b/detect.py @@ -60,7 +60,7 @@ def detect( img = torch.from_numpy(img).unsqueeze(0).to(device) if ONNX_EXPORT: torch.onnx.export(model, img, 'weights/model.onnx', verbose=True) - return # ONNX export + return pred = model(img) pred = pred[pred[:, :, 4] > conf_thres] # remove boxes < threshold From 9f145d2aa78aee225176e8fa50accde66945c177 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 11 Feb 2019 22:44:25 +0100 Subject: [PATCH 0366/2595] updates --- test.py | 12 ++++++------ train.py | 5 ++--- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/test.py b/test.py index e0d5deb3..3e8eda51 100644 --- a/test.py +++ b/test.py @@ -20,9 +20,9 @@ def test( device = torch_utils.select_device() # Configure run - data_cfg = parse_data_cfg(data_cfg) - nC = int(data_cfg['classes']) # number of classes (80 for COCO) - test_path = data_cfg['valid'] + data_cfg_dict = parse_data_cfg(data_cfg) + nC = int(data_cfg_dict['classes']) # number of classes (80 for COCO) + test_path = data_cfg_dict['valid'] # Initialize model model = Darknet(cfg, img_size) @@ -111,7 +111,7 @@ def test( # Print mAP per class print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP') + '\n\nmAP Per Class:') - classes = load_classes(data_cfg['names']) # Extracts class labels from file + classes = load_classes(data_cfg_dict['names']) # Extracts class labels from file for i, c in enumerate(classes): print('%15s: %-.4f' % (c, AP_accum[i] / AP_accum_count[i])) @@ -122,8 +122,8 @@ def test( if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') - parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='path to model config file') - parser.add_argument('--data-cfg', type=str, default='cfg/coco.data', help='path to data config file') + parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') + parser.add_argument('--data-cfg', type=str, default='cfg/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3.pt', help='path to weights file') parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.3, help='object confidence threshold') diff --git a/train.py b/train.py index 030b808f..0c4c1bc8 100644 --- a/train.py +++ b/train.py @@ -35,8 +35,7 @@ def train( best = os.path.join(weights, 'best.pt') # Configure run - data_cfg = parse_data_cfg(data_cfg) - train_path = data_cfg['train'] + train_path = parse_data_cfg(data_cfg)['train'] # Initialize model model = Darknet(cfg, img_size) @@ -187,8 +186,8 @@ if __name__ == '__main__': parser.add_argument('--epochs', type=int, default=100, help='number of epochs') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulated-batches', type=int, default=1, help='number of batches before optimizer step') - parser.add_argument('--data-cfg', type=str, default='cfg/coco.data', help='path to data config file') parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') + parser.add_argument('--data-cfg', type=str, default='cfg/coco.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') parser.add_argument('--weights', type=str, default='weights', help='path to store weights') From e4e64a9ff694ff179e3a54b4f87ce021e8d413c1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 12 Feb 2019 13:50:43 +0100 Subject: [PATCH 0367/2595] updates --- detect.py | 2 -- test.py | 2 -- train.py | 2 -- 3 files changed, 6 deletions(-) diff --git a/detect.py b/detect.py index 67721d8d..bc735a7b 100755 --- a/detect.py +++ b/detect.py @@ -5,8 +5,6 @@ from models import * from utils.datasets import * from utils.utils import * -from utils import torch_utils - def detect( cfg, diff --git a/test.py b/test.py index 3e8eda51..b6c57f2d 100644 --- a/test.py +++ b/test.py @@ -4,8 +4,6 @@ from models import * from utils.datasets import * from utils.utils import * -from utils import torch_utils - def test( cfg, diff --git a/train.py b/train.py index 0c4c1bc8..37f6b24d 100644 --- a/train.py +++ b/train.py @@ -5,8 +5,6 @@ from models import * from utils.datasets import * from utils.utils import * -from utils import torch_utils - # Import test.py to get mAP after each epoch import test From cc5e9a5a853a2683fcc5ac8d7be09e3f28a71ea0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 12 Feb 2019 16:58:07 +0100 Subject: [PATCH 0368/2595] updates --- detect.py | 1 + models.py | 2 +- utils/datasets.py | 1 - utils/parse_config.py | 2 +- utils/torch_utils.py | 11 ++--------- 5 files changed, 5 insertions(+), 12 deletions(-) mode change 100755 => 100644 detect.py diff --git a/detect.py b/detect.py old mode 100755 new mode 100644 index bc735a7b..ede33bf4 --- a/detect.py +++ b/detect.py @@ -1,5 +1,6 @@ import argparse import time +from sys import platform from models import * from utils.datasets import * diff --git a/models.py b/models.py index 9e4ca010..e83cfdcd 100755 --- a/models.py +++ b/models.py @@ -243,7 +243,7 @@ class Darknet(nn.Module): def __init__(self, cfg_path, img_size=416): super(Darknet, self).__init__() - self.module_defs = parse_model_config(cfg_path) + self.module_defs = parse_model_cfg(cfg_path) self.module_defs[0]['cfg'] = cfg_path self.module_defs[0]['height'] = img_size self.hyperparams, self.module_list = create_modules(self.module_defs) diff --git a/utils/datasets.py b/utils/datasets.py index fdd30901..d934915c 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -2,7 +2,6 @@ import glob import math import os import random -from sys import platform import cv2 import numpy as np diff --git a/utils/parse_config.py b/utils/parse_config.py index 714bae7a..e72d5a79 100644 --- a/utils/parse_config.py +++ b/utils/parse_config.py @@ -1,4 +1,4 @@ -def parse_model_config(path): +def parse_model_cfg(path): """Parses the yolo-v3 layer configuration file and returns module definitions""" file = open(path, 'r') lines = file.read().split('\n') diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 19197eac..48274c8f 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -1,16 +1,9 @@ import torch -def check_cuda(): - return torch.cuda.is_available() - - -CUDA_AVAILABLE = check_cuda() - - def init_seeds(seed=0): torch.manual_seed(seed) - if CUDA_AVAILABLE: + if torch.cuda.is_available(): torch.cuda.manual_seed(seed) torch.cuda.manual_seed_all(seed) # torch.cuda.set_device(0) # OPTIONAL: Set your GPU if multiple available @@ -20,6 +13,6 @@ def select_device(force_cpu=False): if force_cpu: device = torch.device('cpu') else: - device = torch.device('cuda:0' if CUDA_AVAILABLE else 'cpu') + device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') print('Using ' + str(device) + '\n') return device From 9cc5ddd776585cb525a536d35cbc48f4019e7593 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 12 Feb 2019 17:29:13 +0100 Subject: [PATCH 0369/2595] updates --- detect.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index ede33bf4..65d8ffa5 100644 --- a/detect.py +++ b/detect.py @@ -1,3 +1,4 @@ +import shutil import argparse import time from sys import platform @@ -20,8 +21,8 @@ def detect( webcam=False ): device = torch_utils.select_device() - os.system('rm -rf ' + output) - os.makedirs(output, exist_ok=True) + shutil.rmtree(output) # delete output folder + os.makedirs(output) # make new output folder # Initialize model model = Darknet(cfg, img_size) From 7d5878872cc3902023e550f8b97a062d7717c9f1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 12 Feb 2019 17:56:24 +0100 Subject: [PATCH 0370/2595] updates --- detect.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 65d8ffa5..985bb6a5 100644 --- a/detect.py +++ b/detect.py @@ -1,4 +1,5 @@ import shutil +from pathlib import Path import argparse import time from sys import platform @@ -54,7 +55,7 @@ def detect( print('webcam frame %g: ' % (i + 1), end='') else: print('image %g/%g %s: ' % (i + 1, len(dataloader), path), end='') - save_path = os.path.join(output, path.split('/')[-1]) + save_path = str(Path(output) / Path(path).name) # Get detections img = torch.from_numpy(img).unsqueeze(0).to(device) From 9706002b7146e88785748c4d6ef4015f2e1f9535 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 12 Feb 2019 18:05:58 +0100 Subject: [PATCH 0371/2595] optimize imports --- detect.py | 4 ++-- models.py | 2 +- train.py | 4 +--- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/detect.py b/detect.py index 985bb6a5..f6170071 100644 --- a/detect.py +++ b/detect.py @@ -1,7 +1,7 @@ -import shutil -from pathlib import Path import argparse +import shutil import time +from pathlib import Path from sys import platform from models import * diff --git a/models.py b/models.py index e83cfdcd..a8d5e5db 100755 --- a/models.py +++ b/models.py @@ -1,6 +1,6 @@ +import os from collections import defaultdict -import os import torch.nn as nn from utils.parse_config import * diff --git a/train.py b/train.py index 37f6b24d..5dbc9d77 100644 --- a/train.py +++ b/train.py @@ -1,13 +1,11 @@ import argparse import time +import test # Import test.py to get mAP after each epoch from models import * from utils.datasets import * from utils.utils import * -# Import test.py to get mAP after each epoch -import test - def train( cfg, From 0a6306b6cd61db5f18d15ffdd9d4605e887d705f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 12 Feb 2019 18:07:23 +0100 Subject: [PATCH 0372/2595] optimize imports --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index f6170071..577be924 100644 --- a/detect.py +++ b/detect.py @@ -99,7 +99,7 @@ def detect( cv2.imshow(weights + ' - %.2f FPS' % (1 / dt), im0) if save_images and (platform == 'darwin'): # MacOS - os.system('open ' + output + '&& open ' + save_path) + os.system('open ' + output + ' ' + save_path) if __name__ == '__main__': From 2634ff502de36c52451d3e25ca1e9afb954c6ee8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 12 Feb 2019 18:21:06 +0100 Subject: [PATCH 0373/2595] optimize imports --- detect.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index 577be924..d5db8fe2 100644 --- a/detect.py +++ b/detect.py @@ -30,7 +30,7 @@ def detect( # Load weights if weights.endswith('.pt'): # pytorch format - if weights.endswith('weights/yolov3.pt') and not os.path.isfile(weights): + if weights.endswith('yolov3.pt') and not os.path.isfile(weights) and (platform == 'darwin'): os.system('wget https://storage.googleapis.com/ultralytics/yolov3.pt -O ' + weights) model.load_state_dict(torch.load(weights, map_location='cpu')['model']) else: # darknet format @@ -98,7 +98,7 @@ def detect( if webcam: # Show live webcam cv2.imshow(weights + ' - %.2f FPS' % (1 / dt), im0) - if save_images and (platform == 'darwin'): # MacOS + if save_images and (platform == 'darwin'): # linux/macos os.system('open ' + output + ' ' + save_path) From 044602b5457939f863463ed8f1d4a02313ff7743 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 13 Feb 2019 22:45:52 +0200 Subject: [PATCH 0374/2595] Update README.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 2c574dba..216bd419 100755 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ +

# Introduction @@ -9,6 +12,8 @@ https://www.ultralytics.com. The https://github.com/ultralytics/yolov3 repo contains inference and training code for YOLOv3 in PyTorch. The code works on Linux, MacOS and Windows. Training is done on the COCO dataset by default: https://cocodataset.org/#home. **Credit to Joseph Redmon for YOLO** (https://pjreddie.com/darknet/yolo/) and to **Erik Lindernoren for the PyTorch implementation** this work is based on (https://github.com/eriklindernoren/PyTorch-YOLOv3). + + # Requirements Python 3.7 or later with the following `pip3 install -U -r requirements.txt` packages: From c68113cc719dd27bd2991abe1ab6908b9e7ddc91 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 13 Feb 2019 23:01:58 +0200 Subject: [PATCH 0375/2595] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 216bd419..cce9f4e5 100755 --- a/README.md +++ b/README.md @@ -1,8 +1,11 @@ +

+ + # Introduction This directory contains software developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information on Ultralytics projects please visit: From 9b4e9924fb67d7d666d7fc64eb93de4ab341adb7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 13 Feb 2019 23:15:30 +0200 Subject: [PATCH 0376/2595] Update README.md --- README.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index cce9f4e5..919611ac 100755 --- a/README.md +++ b/README.md @@ -1,22 +1,23 @@ - - -

- -

- - + + + + + +
+

+

+ +

# Introduction -This directory contains software developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information on Ultralytics projects please visit: +This directory contains python software and an iOS App developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information on Ultralytics projects please visit: https://www.ultralytics.com. # Description The https://github.com/ultralytics/yolov3 repo contains inference and training code for YOLOv3 in PyTorch. The code works on Linux, MacOS and Windows. Training is done on the COCO dataset by default: https://cocodataset.org/#home. **Credit to Joseph Redmon for YOLO** (https://pjreddie.com/darknet/yolo/) and to **Erik Lindernoren for the PyTorch implementation** this work is based on (https://github.com/eriklindernoren/PyTorch-YOLOv3). - - # Requirements Python 3.7 or later with the following `pip3 install -U -r requirements.txt` packages: From ee4abc8cdf61a6f693bb3782e0bf359cdb143345 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 15 Feb 2019 14:07:55 +0200 Subject: [PATCH 0377/2595] optimize imports --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index a8d5e5db..d6a50eeb 100755 --- a/models.py +++ b/models.py @@ -316,7 +316,7 @@ def load_darknet_weights(self, weights, cutoff=-1): # Needed to write header when saving weights self.header_info = header - self.seen = header[3] + self.seen = header[3] # number of images seen during training weights = np.fromfile(fp, dtype=np.float32) # The rest are weights fp.close() @@ -365,7 +365,7 @@ def load_darknet_weights(self, weights, cutoff=-1): def save_weights(self, path, cutoff=-1): fp = open(path, 'wb') - self.header_info[3] = self.seen + self.header_info[3] = self.seen # number of images seen during training self.header_info.tofile(fp) # Iterate through layers From c828f5459f75aa8dc5e6599989c776dc2ccb72ec Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 16 Feb 2019 14:33:52 +0100 Subject: [PATCH 0378/2595] select GPU0 if multiple available --- train.py | 14 ++++++-------- utils/torch_utils.py | 7 ++++++- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/train.py b/train.py index 5dbc9d77..5f4018c4 100644 --- a/train.py +++ b/train.py @@ -43,11 +43,11 @@ def train( if resume: checkpoint = torch.load(latest, map_location='cpu') + # Load weights to resume from model.load_state_dict(checkpoint['model']) - if torch.cuda.device_count() > 1: - raise Exception('Multi-GPU issue: https://github.com/ultralytics/yolov3/issues/21') - # print('Using ', torch.cuda.device_count(), ' GPUs') - # model = nn.DataParallel(model) + + # if torch.cuda.device_count() > 1: + # model = nn.DataParallel(model) model.to(device).train() # # Transfer learning (train only YOLO layers) @@ -72,10 +72,8 @@ def train( # Initialize model with darknet53 weights (optional) load_darknet_weights(model, os.path.join(weights, 'darknet53.conv.74')) - if torch.cuda.device_count() > 1: - raise Exception('Multi-GPU not currently supported: https://github.com/ultralytics/yolov3/issues/21') - # print('Using ', torch.cuda.device_count(), ' GPUs') - # model = nn.DataParallel(model) + # if torch.cuda.device_count() > 1: + # model = nn.DataParallel(model) model.to(device).train() # Set optimizer diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 48274c8f..cac1abb4 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -6,7 +6,6 @@ def init_seeds(seed=0): if torch.cuda.is_available(): torch.cuda.manual_seed(seed) torch.cuda.manual_seed_all(seed) - # torch.cuda.set_device(0) # OPTIONAL: Set your GPU if multiple available def select_device(force_cpu=False): @@ -14,5 +13,11 @@ def select_device(force_cpu=False): device = torch.device('cpu') else: device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') + + if torch.cuda.device_count() > 1: + print('WARNING Using GPU0 Only. Multi-GPU issue: https://github.com/ultralytics/yolov3/issues/21') + torch.cuda.set_device(0) # OPTIONAL: Set your GPU if multiple available + # print('Using ', torch.cuda.device_count(), ' GPUs') + print('Using ' + str(device) + '\n') return device From 9086caf0bb8b31ec59d64c9c83669d26b20a9b38 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 16 Feb 2019 14:47:16 +0100 Subject: [PATCH 0379/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index d6a50eeb..181950f9 100755 --- a/models.py +++ b/models.py @@ -146,7 +146,7 @@ class YOLOLayer(nn.Module): def forward(self, p, targets=None, var=None): FT = torch.cuda.FloatTensor if p.is_cuda else torch.FloatTensor - bs = 1 if ONNX_EXPORT else p.shape[0] # batch size + bs = p.shape[0] # batch size nG = self.nG # number of grid points if p.is_cuda and not self.weights.is_cuda: From 12a42b9ca6a4d5e123b5b7064ed6b0b8b19eaf9f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 17 Feb 2019 17:30:16 +0100 Subject: [PATCH 0380/2595] updates --- detect.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index d5db8fe2..4a955253 100644 --- a/detect.py +++ b/detect.py @@ -13,7 +13,7 @@ def detect( cfg, weights, images, - output='output', + output='output', # output folder img_size=416, conf_thres=0.3, nms_thres=0.45, @@ -22,7 +22,8 @@ def detect( webcam=False ): device = torch_utils.select_device() - shutil.rmtree(output) # delete output folder + if os.path.exists(output): + shutil.rmtree(output) # delete output folder os.makedirs(output) # make new output folder # Initialize model From 1239e8dca32bd0655aa7ca96b195856d399d9b00 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 17 Feb 2019 17:32:53 +0100 Subject: [PATCH 0381/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 4a955253..611c05a5 100644 --- a/detect.py +++ b/detect.py @@ -31,7 +31,7 @@ def detect( # Load weights if weights.endswith('.pt'): # pytorch format - if weights.endswith('yolov3.pt') and not os.path.isfile(weights) and (platform == 'darwin'): + if weights.endswith('yolov3.pt') and not os.path.exists(weights) and (platform == 'darwin'): os.system('wget https://storage.googleapis.com/ultralytics/yolov3.pt -O ' + weights) model.load_state_dict(torch.load(weights, map_location='cpu')['model']) else: # darknet format From 8646db7c19353c88af78ad0758dc908d83552859 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 17 Feb 2019 17:34:45 +0100 Subject: [PATCH 0382/2595] updates --- detect.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index 611c05a5..90dbe717 100644 --- a/detect.py +++ b/detect.py @@ -31,8 +31,9 @@ def detect( # Load weights if weights.endswith('.pt'): # pytorch format - if weights.endswith('yolov3.pt') and not os.path.exists(weights) and (platform == 'darwin'): - os.system('wget https://storage.googleapis.com/ultralytics/yolov3.pt -O ' + weights) + if weights.endswith('yolov3.pt') and not os.path.exists(weights): + if (platform == 'darwin') or (platform == 'linux'): + os.system('wget https://storage.googleapis.com/ultralytics/yolov3.pt -O ' + weights) model.load_state_dict(torch.load(weights, map_location='cpu')['model']) else: # darknet format load_darknet_weights(model, weights) From e9196355647d957e6a39148d4a20e270ebd2d469 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 17 Feb 2019 18:02:56 +0100 Subject: [PATCH 0383/2595] updates --- models.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/models.py b/models.py index 181950f9..a7ffc4fa 100755 --- a/models.py +++ b/models.py @@ -6,7 +6,7 @@ import torch.nn as nn from utils.parse_config import * from utils.utils import * -ONNX_EXPORT = False +ONNX_EXPORT = True def create_modules(module_defs): @@ -146,7 +146,7 @@ class YOLOLayer(nn.Module): def forward(self, p, targets=None, var=None): FT = torch.cuda.FloatTensor if p.is_cuda else torch.FloatTensor - bs = p.shape[0] # batch size + bs = 1 if ONNX_EXPORT else p.shape[0] # batch size nG = self.nG # number of grid points if p.is_cuda and not self.weights.is_cuda: @@ -299,7 +299,7 @@ def load_darknet_weights(self, weights, cutoff=-1): # Try to download weights if not available locally if not os.path.isfile(weights): try: - os.system('wget https://pjreddie.com/media/files/' + weights_file + ' -P ' + weights) + os.system('wget https://pjreddie.com/media/files/' + weights_file + ' -O ' + weights) except IOError: print(weights + ' not found') From 03685866fd872be647a2f4f97bb745baf1a20837 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 17 Feb 2019 18:04:23 +0100 Subject: [PATCH 0384/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index a7ffc4fa..b42ec36d 100755 --- a/models.py +++ b/models.py @@ -6,7 +6,7 @@ import torch.nn as nn from utils.parse_config import * from utils.utils import * -ONNX_EXPORT = True +ONNX_EXPORT = False def create_modules(module_defs): From 6deda823840d13b9dfc7b04c38dd75be5b2e4ac6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Feb 2019 14:03:39 +0100 Subject: [PATCH 0385/2595] updates --- test.py | 6 +++--- utils/datasets.py | 8 ++++---- utils/utils.py | 7 ++++--- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/test.py b/test.py index b6c57f2d..21c9b461 100644 --- a/test.py +++ b/test.py @@ -103,15 +103,15 @@ def test( mean_R = np.mean(mR) mean_P = np.mean(mP) - # Print image mAP and running mean mAP - print(('%11s%11s' + '%11.3g' * 3) % (len(mAPs), dataloader.nF, mean_P, mean_R, mean_mAP)) + # Print image mAP and running mean mAP + print(('%11s%11s' + '%11.3g' * 3) % (len(mAPs), dataloader.nF, mean_P, mean_R, mean_mAP)) # Print mAP per class print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP') + '\n\nmAP Per Class:') classes = load_classes(data_cfg_dict['names']) # Extracts class labels from file for i, c in enumerate(classes): - print('%15s: %-.4f' % (c, AP_accum[i] / AP_accum_count[i])) + print('%15s: %-.4f' % (c, AP_accum[i] / (AP_accum_count[i] + 1E-16))) # Return mAP return mean_mAP, mean_R, mean_P diff --git a/utils/datasets.py b/utils/datasets.py index d934915c..17ebbfad 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -91,13 +91,13 @@ class LoadWebcam: # for inference class LoadImagesAndLabels: # for training def __init__(self, path, batch_size=1, img_size=608, multi_scale=False, augment=False): - self.path = path with open(path, 'r') as file: self.img_files = file.readlines() + self.img_files = [x.replace('\n', '') for x in self.img_files] + self.img_files = list(filter(lambda x: len(x) > 0, self.img_files)) - self.img_files = [path.replace('\n', '') for path in self.img_files] - self.label_files = [path.replace('images', 'labels').replace('.png', '.txt').replace('.jpg', '.txt') - for path in self.img_files] + self.label_files = [x.replace('images', 'labels').replace('.png', '.txt').replace('.jpg', '.txt') + for x in self.img_files] self.nF = len(self.img_files) # number of image files self.nB = math.ceil(self.nF / batch_size) # number of batches diff --git a/utils/utils.py b/utils/utils.py index 45060b3f..851d98b6 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -438,13 +438,14 @@ def plot_results(): # Plot YOLO training results file 'results.txt' import glob import matplotlib.pyplot as plt + import numpy as np # import os; os.system('rm -rf results.txt && wget https://storage.googleapis.com/ultralytics/results_v1_0.txt') plt.figure(figsize=(16, 8)) - s = ['X', 'Y', 'Width', 'Height', 'Objectness', 'Classification', 'Total Loss', 'Precision', 'Recall', 'mAP'] - files = sorted(glob.glob('results*.txt')) + s = ['X', 'Y', 'Width', 'Height', 'Confidence', 'Classification', 'Total Loss', 'mAP', 'Recall', 'Precision'] + files = sorted(glob.glob('results.txt')) for f in files: - results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 17, 18, 16]).T # column 16 is mAP + results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 11, 12, 13]).T # column 13 is mAP n = results.shape[1] for i in range(10): plt.subplot(2, 5, i + 1) From c535a8699ae544e2eb15aac9848d20962c8df259 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Feb 2019 15:51:35 +0100 Subject: [PATCH 0386/2595] updates --- models.py | 39 +++++++++++++++++++++++---------------- utils/utils.py | 2 +- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/models.py b/models.py index b42ec36d..4ae9cd2a 100755 --- a/models.py +++ b/models.py @@ -145,7 +145,6 @@ class YOLOLayer(nn.Module): self.anchor_wh = torch.cat((self.anchor_w, self.anchor_h), 2) / nG def forward(self, p, targets=None, var=None): - FT = torch.cuda.FloatTensor if p.is_cuda else torch.FloatTensor bs = 1 if ONNX_EXPORT else p.shape[0] # batch size nG = self.nG # number of grid points @@ -154,7 +153,7 @@ class YOLOLayer(nn.Module): self.anchor_w, self.anchor_h = self.anchor_w.cuda(), self.anchor_h.cuda() self.weights, self.loss_means = self.weights.cuda(), self.loss_means.cuda() - # p.view(12, 255, 13, 13) -- > (12, 3, 13, 13, 80) # (bs, anchors, grid, grid, classes + xywh) + # p.view(bs, 255, 13, 13) -- > (bs, 3, 13, 13, 80) # (bs, anchors, grid, grid, classes + xywh) p = p.view(bs, self.nA, self.bbox_attrs, nG, nG).permute(0, 1, 3, 4, 2).contiguous() # prediction # Training @@ -201,6 +200,7 @@ class YOLOLayer(nn.Module): lcls = (k / 4) * CrossEntropyLoss(p_cls[mask], torch.argmax(tcls, 1)) # lcls = (k * 10) * BCEWithLogitsLoss(p_cls[mask], tcls.float()) else: + FT = torch.cuda.FloatTensor if p.is_cuda else torch.FloatTensor lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) lconf = (k * 64) * BCEWithLogitsLoss(p_conf, mask.float()) @@ -212,19 +212,26 @@ class YOLOLayer(nn.Module): else: if ONNX_EXPORT: - p = p.view(1, -1, 85) - xy = torch.sigmoid(p[..., 0:2]) + self.grid_xy # x, y - width_height = torch.exp(p[..., 2:4]) * self.anchor_wh # width, height - p_conf = torch.sigmoid(p[..., 4:5]) # Conf - p_cls = p[..., 5:85] + p = p.view(-1, 85) + xy = torch.sigmoid(p[:, 0:2]) + self.grid_xy[0] # x, y + wh = torch.exp(p[:, 2:4]) * self.anchor_wh[0] # width, height + p_conf = torch.sigmoid(p[:, 4:5]) # Conf + p_cls = F.softmax(p[:, 5:85], 1) * p_conf # SSD-like conf + return torch.cat((xy / nG, wh, p_conf, p_cls), 1) - # Broadcasting only supported on first dimension in CoreML. See onnx-coreml/_operators.py - # p_cls = F.softmax(p_cls, 2) * p_conf # SSD-like conf - p_cls = torch.exp(p_cls).permute((2, 1, 0)) - p_cls = p_cls / p_cls.sum(0).unsqueeze(0) * p_conf.permute((2, 1, 0)) # F.softmax() equivalent - p_cls = p_cls.permute(2, 1, 0) - - return torch.cat((xy / nG, width_height, p_conf, p_cls), 2).squeeze().t() + # p = p.view(1, -1, 85) + # xy = torch.sigmoid(p[..., 0:2]) + self.grid_xy # x, y + # wh = torch.exp(p[..., 2:4]) * self.anchor_wh # width, height + # p_conf = torch.sigmoid(p[..., 4:5]) # Conf + # p_cls = p[..., 5:85] + # + # # Broadcasting only supported on first dimension in CoreML. See onnx-coreml/_operators.py + # # p_cls = F.softmax(p_cls, 2) * p_conf # SSD-like conf + # p_cls = torch.exp(p_cls).permute((2, 1, 0)) + # p_cls = p_cls / p_cls.sum(0).unsqueeze(0) * p_conf.permute((2, 1, 0)) # F.softmax() equivalent + # p_cls = p_cls.permute(2, 1, 0) + # + # return torch.cat((xy / nG, wh, p_conf, p_cls), 2).squeeze().t() p[..., 0] = torch.sigmoid(p[..., 0]) + self.grid_x # x p[..., 1] = torch.sigmoid(p[..., 1]) + self.grid_y # y @@ -285,8 +292,8 @@ class Darknet(nn.Module): self.losses['nT'] /= 3 if ONNX_EXPORT: - output = torch.cat(output, 1) # merge the 3 layers 85 x (507, 2028, 8112) to 85 x 10647 - return output[5:85].t(), output[:4].t() # ONNX scores, boxes + output = torch.cat(output, 0) # merge the 3 layers 85 x (507, 2028, 8112) to 85 x 10647 + return output[:, 5:85], output[:, :4] # ONNX scores, boxes return sum(output) if is_training else torch.cat(output, 1) diff --git a/utils/utils.py b/utils/utils.py index 851d98b6..0b1273e9 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -443,7 +443,7 @@ def plot_results(): plt.figure(figsize=(16, 8)) s = ['X', 'Y', 'Width', 'Height', 'Confidence', 'Classification', 'Total Loss', 'mAP', 'Recall', 'Precision'] - files = sorted(glob.glob('results.txt')) + files = sorted(glob.glob('results*.txt')) for f in files: results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 11, 12, 13]).T # column 13 is mAP n = results.shape[1] From 8de043980ae855dbef78e6bf6b859d05869a8088 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Feb 2019 16:25:57 +0100 Subject: [PATCH 0387/2595] updates --- models.py | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/models.py b/models.py index 4ae9cd2a..535e8ece 100755 --- a/models.py +++ b/models.py @@ -6,7 +6,7 @@ import torch.nn as nn from utils.parse_config import * from utils.utils import * -ONNX_EXPORT = False +ONNX_EXPORT = True def create_modules(module_defs): @@ -212,26 +212,24 @@ class YOLOLayer(nn.Module): else: if ONNX_EXPORT: - p = p.view(-1, 85) - xy = torch.sigmoid(p[:, 0:2]) + self.grid_xy[0] # x, y - wh = torch.exp(p[:, 2:4]) * self.anchor_wh[0] # width, height - p_conf = torch.sigmoid(p[:, 4:5]) # Conf - p_cls = F.softmax(p[:, 5:85], 1) * p_conf # SSD-like conf - return torch.cat((xy / nG, wh, p_conf, p_cls), 1) + # p = p.view(-1, 85) + # xy = torch.sigmoid(p[:, 0:2]) + self.grid_xy[0] # x, y + # wh = torch.exp(p[:, 2:4]) * self.anchor_wh[0] # width, height + # p_conf = torch.sigmoid(p[:, 4:5]) # Conf + # p_cls = F.softmax(p[:, 5:85], 1) * p_conf # SSD-like conf + # return torch.cat((xy / nG, wh, p_conf, p_cls), 1).t() - # p = p.view(1, -1, 85) - # xy = torch.sigmoid(p[..., 0:2]) + self.grid_xy # x, y - # wh = torch.exp(p[..., 2:4]) * self.anchor_wh # width, height - # p_conf = torch.sigmoid(p[..., 4:5]) # Conf - # p_cls = p[..., 5:85] - # - # # Broadcasting only supported on first dimension in CoreML. See onnx-coreml/_operators.py - # # p_cls = F.softmax(p_cls, 2) * p_conf # SSD-like conf - # p_cls = torch.exp(p_cls).permute((2, 1, 0)) - # p_cls = p_cls / p_cls.sum(0).unsqueeze(0) * p_conf.permute((2, 1, 0)) # F.softmax() equivalent - # p_cls = p_cls.permute(2, 1, 0) - # - # return torch.cat((xy / nG, wh, p_conf, p_cls), 2).squeeze().t() + p = p.view(1, -1, 85) + xy = torch.sigmoid(p[..., 0:2]) + self.grid_xy # x, y + wh = torch.exp(p[..., 2:4]) * self.anchor_wh # width, height + p_conf = torch.sigmoid(p[..., 4:5]) # Conf + p_cls = p[..., 5:85] + # Broadcasting only supported on first dimension in CoreML. See onnx-coreml/_operators.py + # p_cls = F.softmax(p_cls, 2) * p_conf # SSD-like conf + p_cls = torch.exp(p_cls).permute((2, 1, 0)) + p_cls = p_cls / p_cls.sum(0).unsqueeze(0) * p_conf.permute((2, 1, 0)) # F.softmax() equivalent + p_cls = p_cls.permute(2, 1, 0) + return torch.cat((xy / nG, wh, p_conf, p_cls), 2).squeeze().t() p[..., 0] = torch.sigmoid(p[..., 0]) + self.grid_x # x p[..., 1] = torch.sigmoid(p[..., 1]) + self.grid_y # y @@ -292,8 +290,8 @@ class Darknet(nn.Module): self.losses['nT'] /= 3 if ONNX_EXPORT: - output = torch.cat(output, 0) # merge the 3 layers 85 x (507, 2028, 8112) to 85 x 10647 - return output[:, 5:85], output[:, :4] # ONNX scores, boxes + output = torch.cat(output, 1) # merge the 3 layers 85 x (507, 2028, 8112) to 85 x 10647 + return output[5:85].t(), output[:4].t() # ONNX scores, boxes return sum(output) if is_training else torch.cat(output, 1) From fa0cbca69a00f5ec02c120e93af0b97e1ec6daf9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Feb 2019 17:47:30 +0100 Subject: [PATCH 0388/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 535e8ece..c8b0ed1a 100755 --- a/models.py +++ b/models.py @@ -6,7 +6,7 @@ import torch.nn as nn from utils.parse_config import * from utils.utils import * -ONNX_EXPORT = True +ONNX_EXPORT = False def create_modules(module_defs): From 6e2cf074a19c34fec8d15f50093c10998fd08d57 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Feb 2019 17:48:35 +0100 Subject: [PATCH 0389/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 0b1273e9..b5666268 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -294,7 +294,7 @@ def build_targets(target, anchor_wh, nA, nC, nG): def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): """ - Removes detections with lower object confidence score than 'conf_thres' and performs + Removes detections with lower object confidence score than 'conf_thres' Non-Maximum Suppression to further filter detections. Returns detections with shape: (x1, y1, x2, y2, object_conf, class_score, class_pred) @@ -369,7 +369,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): if prediction.is_cuda: unique_labels = unique_labels.cuda(prediction.device) - nms_style = 'OR' # 'AND' or 'OR' (classical) + nms_style = 'OR' # 'AND', 'OR' (classical), 'MERGE' (experimental) for c in unique_labels: # Get the detections with the particular class det_class = detections[detections[:, -1] == c] From e4d62de5bc12d1e411adbfe4b76f15d157d77c65 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Feb 2019 18:32:31 +0100 Subject: [PATCH 0390/2595] updates --- models.py | 2 +- utils/utils.py | 56 +++++++++++++++++++++++--------------------------- 2 files changed, 27 insertions(+), 31 deletions(-) diff --git a/models.py b/models.py index c8b0ed1a..e1fe21cb 100755 --- a/models.py +++ b/models.py @@ -146,7 +146,7 @@ class YOLOLayer(nn.Module): def forward(self, p, targets=None, var=None): bs = 1 if ONNX_EXPORT else p.shape[0] # batch size - nG = self.nG # number of grid points + nG = self.nG if ONNX_EXPORT else p.shape[-1] # number of grid points if p.is_cuda and not self.weights.is_cuda: self.grid_x, self.grid_y = self.grid_x.cuda(), self.grid_y.cuda() diff --git a/utils/utils.py b/utils/utils.py index b5666268..262c89c7 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -369,44 +369,40 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): if prediction.is_cuda: unique_labels = unique_labels.cuda(prediction.device) - nms_style = 'OR' # 'AND', 'OR' (classical), 'MERGE' (experimental) + nms_style = 'OR' # 'OR' (default), 'AND', 'MERGE' (experimental) for c in unique_labels: - # Get the detections with the particular class - det_class = detections[detections[:, -1] == c] - # Sort the detections by maximum objectness confidence - _, conf_sort_index = torch.sort(det_class[:, 4], descending=True) - det_class = det_class[conf_sort_index] - # Perform non-maximum suppression + # Get the detections with class c + dc = detections[detections[:, -1] == c] + # Sort the detections by maximum object confidence + _, conf_sort_index = torch.sort(dc[:, 4], descending=True) + dc = dc[conf_sort_index] + + # Non-maximum suppression det_max = [] - - if nms_style == 'OR': # Classical NMS - while det_class.shape[0]: - # Get detection with highest confidence and save as max detection - det_max.append(det_class[0].unsqueeze(0)) - # Stop if we're at the last detection - if len(det_class) == 1: + if nms_style == 'OR': # default + while dc.shape[0]: + det_max.append(dc[:1]) # save highest conf detection + if len(dc) == 1: # Stop if we're at the last detection break - # Get the IOUs for all boxes with lower confidence - ious = bbox_iou(det_max[-1], det_class[1:]) + iou = bbox_iou(det_max[-1], dc[1:]) # iou with other boxes + dc = dc[1:][iou < nms_thres] # remove ious > threshold - # Remove detections with IoU >= NMS threshold - det_class = det_class[1:][ious < nms_thres] + elif nms_style == 'AND': # requires overlap, single boxes erased + while len(dc) > 1: + iou = bbox_iou(dc[:1], dc[1:]) # iou with other boxes + if iou.max() > 0.5: + det_max.append(dc[:1]) + dc = dc[1:][iou < nms_thres] # remove ious > threshold - elif nms_style == 'AND': # 'AND'-style NMS: >=2 boxes must share commonality to pass, single boxes erased - while det_class.shape[0]: - if len(det_class) == 1: + elif nms_style == 'MERGE': # weighted mixture box + while len(dc) > 0: + if len(dc) == 1: # Stop if we're at the last detection + det_max.append(dc[:1]) # save highest conf detection break - - ious = bbox_iou(det_class[:1], det_class[1:]) - - if ious.max() > 0.5: - det_max.append(det_class[0].unsqueeze(0)) - - # Remove detections with IoU >= NMS threshold - det_class = det_class[1:][ious < nms_thres] + iou = bbox_iou(dc[:1], dc[1:]) # iou with other boxes if len(det_max) > 0: - det_max = torch.cat(det_max).data + det_max = torch.cat(det_max) # Add max detections to outputs output[image_i] = det_max if output[image_i] is None else torch.cat((output[image_i], det_max)) From a80b2d1611b6ae3565aedefd354fba63ccca9134 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Feb 2019 19:13:40 +0100 Subject: [PATCH 0391/2595] updates --- utils/utils.py | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 262c89c7..6c21bfea 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -369,7 +369,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): if prediction.is_cuda: unique_labels = unique_labels.cuda(prediction.device) - nms_style = 'OR' # 'OR' (default), 'AND', 'MERGE' (experimental) + nms_style = 'MERGE' # 'OR' (default), 'AND', 'MERGE' (experimental) for c in unique_labels: # Get the detections with class c dc = detections[detections[:, -1] == c] @@ -387,6 +387,12 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): iou = bbox_iou(det_max[-1], dc[1:]) # iou with other boxes dc = dc[1:][iou < nms_thres] # remove ious > threshold + # Image Total P R mAP + # 32 5000 0.633 0.579 0.568 + # 64 5000 0.619 0.579 0.568 + # 96 5000 0.652 0.622 0.613 + # 128 5000 0.651 0.625 0.617 + elif nms_style == 'AND': # requires overlap, single boxes erased while len(dc) > 1: iou = bbox_iou(dc[:1], dc[1:]) # iou with other boxes @@ -396,10 +402,19 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): elif nms_style == 'MERGE': # weighted mixture box while len(dc) > 0: - if len(dc) == 1: # Stop if we're at the last detection - det_max.append(dc[:1]) # save highest conf detection - break - iou = bbox_iou(dc[:1], dc[1:]) # iou with other boxes + iou = bbox_iou(dc[:1], dc[0:]) # iou with other boxes + i = iou > nms_thres + + weights = dc[i, 4:5] * dc[i, 5:6] + dc[0, :4] = (weights * dc[i, :4]).sum(0) / weights.sum() + det_max.append(dc[:1]) + dc = dc[iou < nms_thres] + + # Image Total P R mAP + # 32 5000 0.635 0.581 0.569 + # 64 5000 0.63 0.591 0.578 + # 96 5000 0.66 0.63 0.62 + # 128 5000 0.657 0.631 0.622 if len(det_max) > 0: det_max = torch.cat(det_max) From adea337545ef54b36e1f78d22fd5dd1673b74a57 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Feb 2019 19:17:48 +0100 Subject: [PATCH 0392/2595] updates --- utils/gcp.sh | 3 ++- utils/utils.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 7b55efe9..b0f5c6a9 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -11,7 +11,8 @@ gsutil cp gs://ultralytics/yolov3.pt yolov3/weights python3 detect.py # Test -python3 test.py --img_size 416 --weights weights/latest.pt +sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 +python3 test.py --weights weights/yolov3.weights # Test Darknet python3 test.py --img_size 416 --weights ../darknet/backup/yolov3.backup diff --git a/utils/utils.py b/utils/utils.py index 6c21bfea..59447312 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -392,6 +392,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): # 64 5000 0.619 0.579 0.568 # 96 5000 0.652 0.622 0.613 # 128 5000 0.651 0.625 0.617 + # 5000 5000 0.627 0.593 0.584 elif nms_style == 'AND': # requires overlap, single boxes erased while len(dc) > 1: @@ -405,7 +406,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): iou = bbox_iou(dc[:1], dc[0:]) # iou with other boxes i = iou > nms_thres - weights = dc[i, 4:5] * dc[i, 5:6] + weights = (dc[i, 4:5] * dc[i, 5:6]) ** 0.5 dc[0, :4] = (weights * dc[i, :4]).sum(0) / weights.sum() det_max.append(dc[:1]) dc = dc[iou < nms_thres] From 77ce2cd43f0357e0821d4ae3277bc9de3cf854bc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Feb 2019 19:21:21 +0100 Subject: [PATCH 0393/2595] updates --- utils/utils.py | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 59447312..99eb38be 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -388,10 +388,6 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): dc = dc[1:][iou < nms_thres] # remove ious > threshold # Image Total P R mAP - # 32 5000 0.633 0.579 0.568 - # 64 5000 0.619 0.579 0.568 - # 96 5000 0.652 0.622 0.613 - # 128 5000 0.651 0.625 0.617 # 5000 5000 0.627 0.593 0.584 elif nms_style == 'AND': # requires overlap, single boxes erased @@ -406,16 +402,15 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): iou = bbox_iou(dc[:1], dc[0:]) # iou with other boxes i = iou > nms_thres - weights = (dc[i, 4:5] * dc[i, 5:6]) ** 0.5 + weights = (dc[i, 4:5] * dc[i, 5:6]) ** 2 dc[0, :4] = (weights * dc[i, :4]).sum(0) / weights.sum() det_max.append(dc[:1]) dc = dc[iou < nms_thres] # Image Total P R mAP - # 32 5000 0.635 0.581 0.569 - # 64 5000 0.63 0.591 0.578 - # 96 5000 0.66 0.63 0.62 - # 128 5000 0.657 0.631 0.622 + # 4964 5000 0.632 0.597 0.588 # normal + # 4964 5000 0.632 0.597 0.588 # squared + # 4964 5000 0.631 0.597 0.588 # sqrt if len(det_max) > 0: det_max = torch.cat(det_max) From 5f2d3aa9c34e0c1a4d7b0a823ddd53ba171c433d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Feb 2019 19:24:53 +0100 Subject: [PATCH 0394/2595] updates --- utils/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 99eb38be..4e9fcebb 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -400,12 +400,12 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): elif nms_style == 'MERGE': # weighted mixture box while len(dc) > 0: iou = bbox_iou(dc[:1], dc[0:]) # iou with other boxes - i = iou > nms_thres + i = iou > .3 - weights = (dc[i, 4:5] * dc[i, 5:6]) ** 2 + weights = dc[i, 4:5] * dc[i, 5:6] dc[0, :4] = (weights * dc[i, :4]).sum(0) / weights.sum() det_max.append(dc[:1]) - dc = dc[iou < nms_thres] + dc = dc[iou < .3] # Image Total P R mAP # 4964 5000 0.632 0.597 0.588 # normal From 2ba45e48781ea6e34629060b7ee685a550567099 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Feb 2019 19:27:34 +0100 Subject: [PATCH 0395/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 4e9fcebb..cc1707ea 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -400,12 +400,12 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): elif nms_style == 'MERGE': # weighted mixture box while len(dc) > 0: iou = bbox_iou(dc[:1], dc[0:]) # iou with other boxes - i = iou > .3 + i = iou > .6 weights = dc[i, 4:5] * dc[i, 5:6] dc[0, :4] = (weights * dc[i, :4]).sum(0) / weights.sum() det_max.append(dc[:1]) - dc = dc[iou < .3] + dc = dc[iou < .6] # Image Total P R mAP # 4964 5000 0.632 0.597 0.588 # normal From f788a570099a8019cb8f43d01e9488cf79a4dea8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Feb 2019 19:31:00 +0100 Subject: [PATCH 0396/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index cc1707ea..164dfc9e 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -400,12 +400,12 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): elif nms_style == 'MERGE': # weighted mixture box while len(dc) > 0: iou = bbox_iou(dc[:1], dc[0:]) # iou with other boxes - i = iou > .6 + i = iou > nms_thres weights = dc[i, 4:5] * dc[i, 5:6] dc[0, :4] = (weights * dc[i, :4]).sum(0) / weights.sum() det_max.append(dc[:1]) - dc = dc[iou < .6] + dc = dc[iou < nms_thres] # Image Total P R mAP # 4964 5000 0.632 0.597 0.588 # normal From 2ef92f565158ec92c3d134239a0d3030c23b99a0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Feb 2019 19:44:15 +0100 Subject: [PATCH 0397/2595] updates --- utils/utils.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 164dfc9e..3992b085 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -369,12 +369,12 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): if prediction.is_cuda: unique_labels = unique_labels.cuda(prediction.device) - nms_style = 'MERGE' # 'OR' (default), 'AND', 'MERGE' (experimental) + nms_style = 'OR' # 'OR' (default), 'AND', 'MERGE' (experimental) for c in unique_labels: # Get the detections with class c dc = detections[detections[:, -1] == c] # Sort the detections by maximum object confidence - _, conf_sort_index = torch.sort(dc[:, 4], descending=True) + _, conf_sort_index = torch.sort(dc[:, 4] * dc[:, 5], descending=True) dc = dc[conf_sort_index] # Non-maximum suppression @@ -411,6 +411,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): # 4964 5000 0.632 0.597 0.588 # normal # 4964 5000 0.632 0.597 0.588 # squared # 4964 5000 0.631 0.597 0.588 # sqrt + # normal best_v1_0.pt if len(det_max) > 0: det_max = torch.cat(det_max) From 0f06fbd681b87f432e044c4056c9a29cb7181196 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Feb 2019 19:49:58 +0100 Subject: [PATCH 0398/2595] updates --- utils/utils.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 3992b085..ed568247 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -345,7 +345,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): class_prob, class_pred = torch.max(F.softmax(pred[:, 5:], 1), 1) - v = ((pred[:, 4] > conf_thres) & (class_prob > .3)) # TODO examine arbitrary 0.3 thres here + v = (pred[:, 4] > (conf_thres * class_prob)) # TODO examine arbitrary 0.3 thres here v = v.nonzero().squeeze() if len(v.shape) == 0: v = v.unsqueeze(0) @@ -389,6 +389,8 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): # Image Total P R mAP # 5000 5000 0.627 0.593 0.584 + # 4964 5000 0.629 0.594 0.586 # complete probability sort + elif nms_style == 'AND': # requires overlap, single boxes erased while len(dc) > 1: From bbb750876e007f7bf283d00b7565642746a26f54 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Feb 2019 19:52:38 +0100 Subject: [PATCH 0399/2595] updates --- utils/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index ed568247..f8ac0db6 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -345,7 +345,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): class_prob, class_pred = torch.max(F.softmax(pred[:, 5:], 1), 1) - v = (pred[:, 4] > (conf_thres * class_prob)) # TODO examine arbitrary 0.3 thres here + v = ((pred[:, 4] > conf_thres) & (class_prob > .1)) # TODO examine arbitrary 0.3 thres here v = v.nonzero().squeeze() if len(v.shape) == 0: v = v.unsqueeze(0) @@ -369,7 +369,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): if prediction.is_cuda: unique_labels = unique_labels.cuda(prediction.device) - nms_style = 'OR' # 'OR' (default), 'AND', 'MERGE' (experimental) + nms_style = 'MERGE' # 'OR' (default), 'AND', 'MERGE' (experimental) for c in unique_labels: # Get the detections with class c dc = detections[detections[:, -1] == c] @@ -389,7 +389,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): # Image Total P R mAP # 5000 5000 0.627 0.593 0.584 - # 4964 5000 0.629 0.594 0.586 # complete probability sort + # 4964 5000 0.629 0.594 0.586 # complete probability sort elif nms_style == 'AND': # requires overlap, single boxes erased From d81838e2868af78d997523262f83ec862de2fe90 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Feb 2019 19:53:38 +0100 Subject: [PATCH 0400/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index f8ac0db6..435d3c6d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -345,7 +345,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): class_prob, class_pred = torch.max(F.softmax(pred[:, 5:], 1), 1) - v = ((pred[:, 4] > conf_thres) & (class_prob > .1)) # TODO examine arbitrary 0.3 thres here + v = ((pred[:, 4] > conf_thres) & (class_prob > .4)) # TODO examine arbitrary 0.3 thres here v = v.nonzero().squeeze() if len(v.shape) == 0: v = v.unsqueeze(0) From ce4ee36ca0bbee687dc119b1bddcffa3ef149529 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Feb 2019 19:58:01 +0100 Subject: [PATCH 0401/2595] updates --- utils/utils.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 435d3c6d..b0b438dc 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -345,7 +345,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): class_prob, class_pred = torch.max(F.softmax(pred[:, 5:], 1), 1) - v = ((pred[:, 4] > conf_thres) & (class_prob > .4)) # TODO examine arbitrary 0.3 thres here + v = ((pred[:, 4] > conf_thres) & (class_prob > .4)) # TODO examine arbitrary 0.4 thres here v = v.nonzero().squeeze() if len(v.shape) == 0: v = v.unsqueeze(0) @@ -388,9 +388,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): dc = dc[1:][iou < nms_thres] # remove ious > threshold # Image Total P R mAP - # 5000 5000 0.627 0.593 0.584 - # 4964 5000 0.629 0.594 0.586 # complete probability sort - + # 4964 5000 0.629 0.594 0.586 elif nms_style == 'AND': # requires overlap, single boxes erased while len(dc) > 1: @@ -410,10 +408,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): dc = dc[iou < nms_thres] # Image Total P R mAP - # 4964 5000 0.632 0.597 0.588 # normal - # 4964 5000 0.632 0.597 0.588 # squared - # 4964 5000 0.631 0.597 0.588 # sqrt - # normal best_v1_0.pt + # 4964 5000 0.633 0.598 0.589 # normal if len(det_max) > 0: det_max = torch.cat(det_max) From f16609b48bf52d31357e75961ccf4d29481f8647 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Feb 2019 20:42:59 +0100 Subject: [PATCH 0402/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 21c9b461..02512e5c 100644 --- a/test.py +++ b/test.py @@ -122,7 +122,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='cfg/coco.data', help='coco.data file path') - parser.add_argument('--weights', type=str, default='weights/yolov3.pt', help='path to weights file') + parser.add_argument('--weights', type=str, default='weights/yolov3.weights', help='path to weights file') parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.3, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') From 3157049c60bd6577bcd076cf126ce3ac12fea76e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Feb 2019 15:01:08 +0100 Subject: [PATCH 0403/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 90dbe717..2c34939b 100644 --- a/detect.py +++ b/detect.py @@ -107,7 +107,7 @@ def detect( if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') - parser.add_argument('--weights', type=str, default='weights/yolov3.pt', help='path to weights file') + parser.add_argument('--weights', type=str, default='weights/yolov3.weights', help='path to weights file') parser.add_argument('--images', type=str, default='data/samples', help='path to images') parser.add_argument('--img-size', type=int, default=32 * 13, help='size of each image dimension') parser.add_argument('--conf-thres', type=float, default=0.50, help='object confidence threshold') From 0dd791b7ad03acbe13611df79b9fb1d0baa4ea27 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Feb 2019 16:11:18 +0100 Subject: [PATCH 0404/2595] updates --- models.py | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/models.py b/models.py index e1fe21cb..ff88eef1 100755 --- a/models.py +++ b/models.py @@ -110,7 +110,9 @@ class YOLOLayer(nn.Module): self.nA = nA # number of anchors (3) self.nC = nC # number of classes (80) self.bbox_attrs = 5 + nC - self.img_dim = img_dim # from hyperparams in cfg file, NOT from parser + self.img_dim = img_dim # TODO: from hyperparams in cfg file, NOT from parser. Make dynamic + self.initialized = False + # self.weights = class_weights() if anchor_idxs[0] == (nA * 2): # 6 stride = 32 @@ -124,34 +126,24 @@ class YOLOLayer(nn.Module): # Build anchor grids nG = int(self.img_dim / stride) # number grid points + self.nG = nG + self.stride = stride + self.grid_x = torch.arange(nG).repeat((nG, 1)).view((1, 1, nG, nG)).float() self.grid_y = torch.arange(nG).repeat((nG, 1)).t().view((1, 1, nG, nG)).float() self.anchor_wh = torch.FloatTensor([(a_w / stride, a_h / stride) for a_w, a_h in anchors]) # scale anchors self.anchor_w = self.anchor_wh[:, 0].view((1, nA, 1, 1)) self.anchor_h = self.anchor_wh[:, 1].view((1, nA, 1, 1)) - self.weights = class_weights() - - self.loss_means = torch.ones(6) - self.yolo_layer = anchor_idxs[0] / nA # 2, 1, 0 - self.stride = stride - self.nG = nG - - if ONNX_EXPORT: # use fully populated and reshaped tensors - self.anchor_w = self.anchor_w.repeat((1, 1, nG, nG)).view(1, -1, 1) - self.anchor_h = self.anchor_h.repeat((1, 1, nG, nG)).view(1, -1, 1) - self.grid_x = self.grid_x.repeat(1, nA, 1, 1).view(1, -1, 1) - self.grid_y = self.grid_y.repeat(1, nA, 1, 1).view(1, -1, 1) - self.grid_xy = torch.cat((self.grid_x, self.grid_y), 2) - self.anchor_wh = torch.cat((self.anchor_w, self.anchor_h), 2) / nG def forward(self, p, targets=None, var=None): bs = 1 if ONNX_EXPORT else p.shape[0] # batch size nG = self.nG if ONNX_EXPORT else p.shape[-1] # number of grid points - if p.is_cuda and not self.weights.is_cuda: - self.grid_x, self.grid_y = self.grid_x.cuda(), self.grid_y.cuda() - self.anchor_w, self.anchor_h = self.anchor_w.cuda(), self.anchor_h.cuda() - self.weights, self.loss_means = self.weights.cuda(), self.loss_means.cuda() + if not self.initialized: + self.initialized = True + if p.is_cuda: + self.grid_x, self.grid_y = self.grid_x.cuda(), self.grid_y.cuda() + self.anchor_w, self.anchor_h = self.anchor_w.cuda(), self.anchor_h.cuda() # p.view(bs, 255, 13, 13) -- > (bs, 3, 13, 13, 80) # (bs, anchors, grid, grid, classes + xywh) p = p.view(bs, self.nA, self.bbox_attrs, nG, nG).permute(0, 1, 3, 4, 2).contiguous() # prediction @@ -212,6 +204,13 @@ class YOLOLayer(nn.Module): else: if ONNX_EXPORT: + anchor_w = self.anchor_w.repeat((1, 1, nG, nG)).view(1, -1, 1) + anchor_h = self.anchor_h.repeat((1, 1, nG, nG)).view(1, -1, 1) + grid_x = self.grid_x.repeat(1, self.nA, 1, 1).view(1, -1, 1) + grid_y = self.grid_y.repeat(1, self.nA, 1, 1).view(1, -1, 1) + grid_xy = torch.cat((grid_x, grid_y), 2) + anchor_wh = torch.cat((anchor_w, anchor_h), 2) / nG + # p = p.view(-1, 85) # xy = torch.sigmoid(p[:, 0:2]) + self.grid_xy[0] # x, y # wh = torch.exp(p[:, 2:4]) * self.anchor_wh[0] # width, height @@ -220,8 +219,8 @@ class YOLOLayer(nn.Module): # return torch.cat((xy / nG, wh, p_conf, p_cls), 1).t() p = p.view(1, -1, 85) - xy = torch.sigmoid(p[..., 0:2]) + self.grid_xy # x, y - wh = torch.exp(p[..., 2:4]) * self.anchor_wh # width, height + xy = torch.sigmoid(p[..., 0:2]) + grid_xy # x, y + wh = torch.exp(p[..., 2:4]) * anchor_wh # width, height p_conf = torch.sigmoid(p[..., 4:5]) # Conf p_cls = p[..., 5:85] # Broadcasting only supported on first dimension in CoreML. See onnx-coreml/_operators.py From 9c96e7b6cd9cd1e41b74662158fd6e608705d2d6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Feb 2019 19:00:44 +0100 Subject: [PATCH 0405/2595] updates --- models.py | 118 ++++++++++++++++++++++++------------------------- utils/utils.py | 2 +- 2 files changed, 58 insertions(+), 62 deletions(-) diff --git a/models.py b/models.py index ff88eef1..a8abe99b 100755 --- a/models.py +++ b/models.py @@ -6,7 +6,7 @@ import torch.nn as nn from utils.parse_config import * from utils.utils import * -ONNX_EXPORT = False +ONNX_EXPORT = True def create_modules(module_defs): @@ -16,6 +16,7 @@ def create_modules(module_defs): hyperparams = module_defs.pop(0) output_filters = [int(hyperparams['channels'])] module_list = nn.ModuleList() + yolo_layer_count = 0 for i, module_def in enumerate(module_defs): modules = nn.Sequential() @@ -63,11 +64,12 @@ def create_modules(module_defs): anchors = [float(x) for x in module_def['anchors'].split(',')] anchors = [(anchors[i], anchors[i + 1]) for i in range(0, len(anchors), 2)] anchors = [anchors[i] for i in anchor_idxs] - num_classes = int(module_def['classes']) - img_height = int(hyperparams['height']) + nC = int(module_def['classes']) # number of classes + img_size = int(hyperparams['height']) # Define detection layer - yolo_layer = YOLOLayer(anchors, num_classes, img_height, anchor_idxs, cfg=hyperparams['cfg']) + yolo_layer = YOLOLayer(anchors, nC, img_size, yolo_layer_count, cfg=hyperparams['cfg']) modules.add_module('yolo_%d' % i, yolo_layer) + yolo_layer_count += 1 # Register module list and number of output filters module_list.append(modules) @@ -100,53 +102,40 @@ class Upsample(nn.Module): class YOLOLayer(nn.Module): - def __init__(self, anchors, nC, img_dim, anchor_idxs, cfg): + def __init__(self, anchors, nC, img_size, yolo_layer, cfg): + # TODO: img_size from hyperparams in cfg file, NOT from parser. Make dynamic super(YOLOLayer, self).__init__() - anchors = [(a_w, a_h) for a_w, a_h in anchors] # (pixels) nA = len(anchors) - - self.anchors = anchors + self.anchors = torch.FloatTensor(anchors) self.nA = nA # number of anchors (3) self.nC = nC # number of classes (80) - self.bbox_attrs = 5 + nC - self.img_dim = img_dim # TODO: from hyperparams in cfg file, NOT from parser. Make dynamic - self.initialized = False - # self.weights = class_weights() + self.img_size = 0 + # self.coco_class_weights = coco_class_weights() - if anchor_idxs[0] == (nA * 2): # 6 - stride = 32 - elif anchor_idxs[0] == nA: # 3 - stride = 16 + if ONNX_EXPORT: # grids must be computed in __init__ + stride = [32, 16, 8][yolo_layer] # stride of this layer + if cfg.endswith('yolov3-tiny.cfg'): + stride *= 2 + + self.nG = int(img_size / stride) # number grid points + create_grids(self, img_size, self.nG) + + def forward(self, p, img_size, targets=None, var=None): + if ONNX_EXPORT: + bs, nG = 1, self.nG # batch size, grid size else: - stride = 8 + bs, nG = p.shape[0], p.shape[-1] - if cfg.endswith('yolov3-tiny.cfg'): - stride *= 2 + if self.img_size != img_size: + create_grids(self, img_size, nG) - # Build anchor grids - nG = int(self.img_dim / stride) # number grid points - self.nG = nG - self.stride = stride - - self.grid_x = torch.arange(nG).repeat((nG, 1)).view((1, 1, nG, nG)).float() - self.grid_y = torch.arange(nG).repeat((nG, 1)).t().view((1, 1, nG, nG)).float() - self.anchor_wh = torch.FloatTensor([(a_w / stride, a_h / stride) for a_w, a_h in anchors]) # scale anchors - self.anchor_w = self.anchor_wh[:, 0].view((1, nA, 1, 1)) - self.anchor_h = self.anchor_wh[:, 1].view((1, nA, 1, 1)) - - def forward(self, p, targets=None, var=None): - bs = 1 if ONNX_EXPORT else p.shape[0] # batch size - nG = self.nG if ONNX_EXPORT else p.shape[-1] # number of grid points - - if not self.initialized: - self.initialized = True - if p.is_cuda: - self.grid_x, self.grid_y = self.grid_x.cuda(), self.grid_y.cuda() - self.anchor_w, self.anchor_h = self.anchor_w.cuda(), self.anchor_h.cuda() + if p.is_cuda: + self.grid_xy = self.grid_xy.cuda() + self.anchor_vector = self.anchor_vector.cuda() # p.view(bs, 255, 13, 13) -- > (bs, 3, 13, 13, 80) # (bs, anchors, grid, grid, classes + xywh) - p = p.view(bs, self.nA, self.bbox_attrs, nG, nG).permute(0, 1, 3, 4, 2).contiguous() # prediction + p = p.view(bs, self.nA, self.nC + 5, nG, nG).permute(0, 1, 3, 4, 2).contiguous() # prediction # Training if targets is not None: @@ -172,7 +161,7 @@ class YOLOLayer(nn.Module): # width = ((w.data * 2) ** 2) * self.anchor_w # height = ((h.data * 2) ** 2) * self.anchor_h - tx, ty, tw, th, mask, tcls = build_targets(targets, self.anchor_wh, self.nA, self.nC, nG) + tx, ty, tw, th, mask, tcls = build_targets(targets, self.anchor_vector, self.nA, self.nC, nG) tcls = tcls[mask] if x.is_cuda: @@ -204,12 +193,8 @@ class YOLOLayer(nn.Module): else: if ONNX_EXPORT: - anchor_w = self.anchor_w.repeat((1, 1, nG, nG)).view(1, -1, 1) - anchor_h = self.anchor_h.repeat((1, 1, nG, nG)).view(1, -1, 1) - grid_x = self.grid_x.repeat(1, self.nA, 1, 1).view(1, -1, 1) - grid_y = self.grid_y.repeat(1, self.nA, 1, 1).view(1, -1, 1) - grid_xy = torch.cat((grid_x, grid_y), 2) - anchor_wh = torch.cat((anchor_w, anchor_h), 2) / nG + grid_xy = self.grid_xy.repeat((1, self.nA, 1, 1, 1)).view((1, -1, 2)) + anchor_wh = self.anchor_wh.repeat((1, 1, nG, nG, 1)).view((1, -1, 2)) # p = p.view(-1, 85) # xy = torch.sigmoid(p[:, 0:2]) + self.grid_xy[0] # x, y @@ -230,10 +215,8 @@ class YOLOLayer(nn.Module): p_cls = p_cls.permute(2, 1, 0) return torch.cat((xy / nG, wh, p_conf, p_cls), 2).squeeze().t() - p[..., 0] = torch.sigmoid(p[..., 0]) + self.grid_x # x - p[..., 1] = torch.sigmoid(p[..., 1]) + self.grid_y # y - p[..., 2] = torch.exp(p[..., 2]) * self.anchor_w # width - p[..., 3] = torch.exp(p[..., 3]) * self.anchor_h # height + p[..., 0:2] = torch.sigmoid(p[..., 0:2]) + self.grid_xy # xy + p[..., 2:4] = torch.exp(p[..., 2:4]) * self.anchor_wh # wh p[..., 4] = torch.sigmoid(p[..., 4]) # p_conf p[..., :4] *= self.stride @@ -258,30 +241,30 @@ class Darknet(nn.Module): def forward(self, x, targets=None, var=0): self.losses = defaultdict(float) is_training = targets is not None + img_size = x.shape[-1] layer_outputs = [] output = [] for i, (module_def, module) in enumerate(zip(self.module_defs, self.module_list)): - if module_def['type'] in ['convolutional', 'upsample', 'maxpool']: + mtype = module_def['type'] + if mtype in ['convolutional', 'upsample', 'maxpool']: x = module(x) - elif module_def['type'] == 'route': + elif mtype == 'route': layer_i = [int(x) for x in module_def['layers'].split(',')] if len(layer_i) == 1: x = layer_outputs[layer_i[0]] else: x = torch.cat([layer_outputs[i] for i in layer_i], 1) - elif module_def['type'] == 'shortcut': + elif mtype == 'shortcut': layer_i = int(module_def['from']) x = layer_outputs[-1] + layer_outputs[layer_i] - elif module_def['type'] == 'yolo': - # Train phase: get loss - if is_training: - x, *losses = module[0](x, targets, var) + elif mtype == 'yolo': + if is_training: # get loss + x, *losses = module[0](x, img_size, targets, var) for name, loss in zip(self.loss_names, losses): self.losses[name] += loss - # Test phase: Get detections - else: - x = module(x) + else: # get detections + x = module[0](x, img_size) output.append(x) layer_outputs.append(x) @@ -295,6 +278,19 @@ class Darknet(nn.Module): return sum(output) if is_training else torch.cat(output, 1) +def create_grids(self, img_size, nG): + self.stride = img_size / nG + + # build xy offsets + grid_x = torch.arange(nG).repeat((nG, 1)).view((1, 1, nG, nG)).float() + grid_y = grid_x.permute(0, 1, 3, 2) + self.grid_xy = torch.stack((grid_x, grid_y), 4) + + # build wh gains + self.anchor_vec = self.anchors / self.stride + self.anchor_wh = self.anchor_vec.view(1, self.nA, 1, 1, 2) + + def load_darknet_weights(self, weights, cutoff=-1): # Parses and loads the weights stored in 'weights' # cutoff: save layers between 0 and cutoff (if cutoff = -1 all are saved) diff --git a/utils/utils.py b/utils/utils.py index b0b438dc..a7a61ff1 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -38,7 +38,7 @@ def model_info(model): # Plots a line-by-line description of a PyTorch model print('Model Summary: %g layers, %g parameters, %g gradients\n' % (i + 1, n_p, n_g)) -def class_weights(): # frequency of each class in coco train2014 +def coco_class_weights(): # frequency of each class in coco train2014 weights = 1 / torch.FloatTensor( [187437, 4955, 30920, 6033, 3838, 4332, 3160, 7051, 7677, 9167, 1316, 1372, 833, 6757, 7355, 3302, 3776, 4671, 6769, 5706, 3908, 903, 3686, 3596, 6200, 7920, 8779, 4505, 4272, 1862, 4698, 1962, 4403, 6659, 2402, 2689, From f07dd72a09dd47c652698d3909ccf2590676f9a1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Feb 2019 19:01:31 +0100 Subject: [PATCH 0406/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index a8abe99b..de7aa978 100755 --- a/models.py +++ b/models.py @@ -6,7 +6,7 @@ import torch.nn as nn from utils.parse_config import * from utils.utils import * -ONNX_EXPORT = True +ONNX_EXPORT = False def create_modules(module_defs): From a116dd36f775cb8ca3fd9dad58736abbe3283ba5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Feb 2019 19:18:03 +0100 Subject: [PATCH 0407/2595] updates --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index de7aa978..e83a68d1 100755 --- a/models.py +++ b/models.py @@ -132,7 +132,7 @@ class YOLOLayer(nn.Module): if p.is_cuda: self.grid_xy = self.grid_xy.cuda() - self.anchor_vector = self.anchor_vector.cuda() + self.anchor_vec = self.anchor_vec.cuda() # p.view(bs, 255, 13, 13) -- > (bs, 3, 13, 13, 80) # (bs, anchors, grid, grid, classes + xywh) p = p.view(bs, self.nA, self.nC + 5, nG, nG).permute(0, 1, 3, 4, 2).contiguous() # prediction @@ -161,7 +161,7 @@ class YOLOLayer(nn.Module): # width = ((w.data * 2) ** 2) * self.anchor_w # height = ((h.data * 2) ** 2) * self.anchor_h - tx, ty, tw, th, mask, tcls = build_targets(targets, self.anchor_vector, self.nA, self.nC, nG) + tx, ty, tw, th, mask, tcls = build_targets(targets, self.anchor_vec, self.nA, self.nC, nG) tcls = tcls[mask] if x.is_cuda: From 75225e4d990ffc1e9e944b2a497222ec781f979e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Feb 2019 19:30:56 +0100 Subject: [PATCH 0408/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index e83a68d1..23f48d00 100755 --- a/models.py +++ b/models.py @@ -194,7 +194,7 @@ class YOLOLayer(nn.Module): else: if ONNX_EXPORT: grid_xy = self.grid_xy.repeat((1, self.nA, 1, 1, 1)).view((1, -1, 2)) - anchor_wh = self.anchor_wh.repeat((1, 1, nG, nG, 1)).view((1, -1, 2)) + anchor_wh = self.anchor_wh.repeat((1, 1, nG, nG, 1)).view((1, -1, 2)) / nG # p = p.view(-1, 85) # xy = torch.sigmoid(p[:, 0:2]) + self.grid_xy[0] # x, y From 9df279cdede880a62ebff35024c8f6507addf76d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Feb 2019 19:36:09 +0100 Subject: [PATCH 0409/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index a7a61ff1..3086dc5e 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -219,8 +219,8 @@ def build_targets(target, anchor_wh, nA, nC, nG): returns nT, nCorrect, tx, ty, tw, th, tconf, tcls """ nB = len(target) # number of images in batch - nT = [len(x) for x in target] # torch.argmin(target[:, :, 4], 1) # targets per image - tx = torch.zeros(nB, nA, nG, nG) # batch size (4), number of anchors (3), number of grid points (13) + nT = [len(x) for x in target] + tx = torch.zeros(nB, nA, nG, nG) # batch size, anchors, grid size ty = torch.zeros(nB, nA, nG, nG) tw = torch.zeros(nB, nA, nG, nG) th = torch.zeros(nB, nA, nG, nG) From 15bba5a3451bd5f1e891cf96f9699048e0be1e9d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Feb 2019 19:55:33 +0100 Subject: [PATCH 0410/2595] xy and wh losses respectively merged --- models.py | 38 +++++++++++++++----------------------- train.py | 10 +++++----- utils/utils.py | 28 +++++++++++++--------------- 3 files changed, 33 insertions(+), 43 deletions(-) diff --git a/models.py b/models.py index 23f48d00..6e8b6253 100755 --- a/models.py +++ b/models.py @@ -144,52 +144,44 @@ class YOLOLayer(nn.Module): CrossEntropyLoss = nn.CrossEntropyLoss() # Get outputs - x = torch.sigmoid(p[..., 0]) # Center x - y = torch.sigmoid(p[..., 1]) # Center y + xy = torch.sigmoid(p[..., 0:2]) p_conf = p[..., 4] # Conf p_cls = p[..., 5:] # Class # Width and height (yolo method) - w = p[..., 2] # Width - h = p[..., 3] # Height - # width = torch.exp(w.data) * self.anchor_w - # height = torch.exp(h.data) * self.anchor_h + wh = p[..., 2:4] # wh + # wh_pixels = torch.exp(wh.data) * self.anchor_wh # Width and height (power method) - # w = torch.sigmoid(p[..., 2]) # Width - # h = torch.sigmoid(p[..., 3]) # Height - # width = ((w.data * 2) ** 2) * self.anchor_w - # height = ((h.data * 2) ** 2) * self.anchor_h + # wh = torch.sigmoid(p[..., 2:4]) # wh + # wh_pixels = ((wh.data * 2) ** 2) * self.anchor_wh - tx, ty, tw, th, mask, tcls = build_targets(targets, self.anchor_vec, self.nA, self.nC, nG) + txy, twh, mask, tcls = build_targets(targets, self.anchor_vec, self.nA, self.nC, nG) tcls = tcls[mask] - if x.is_cuda: - tx, ty, tw, th, mask, tcls = tx.cuda(), ty.cuda(), tw.cuda(), th.cuda(), mask.cuda(), tcls.cuda() + if xy.is_cuda: + txy, tw, th, mask, tcls = txy.cuda(), twh.cuda(), mask.cuda(), tcls.cuda() # Compute losses nT = sum([len(x) for x in targets]) # number of targets nM = mask.sum().float() # number of anchors (assigned to targets) - nB = len(targets) # batch size - k = nM / nB + k = nM / bs if nM > 0: - lx = k * MSELoss(x[mask], tx[mask]) - ly = k * MSELoss(y[mask], ty[mask]) - lw = k * MSELoss(w[mask], tw[mask]) - lh = k * MSELoss(h[mask], th[mask]) + lxy = k * MSELoss(xy[mask], txy[mask]) + lwh = k * MSELoss(wh[mask], twh[mask]) lcls = (k / 4) * CrossEntropyLoss(p_cls[mask], torch.argmax(tcls, 1)) # lcls = (k * 10) * BCEWithLogitsLoss(p_cls[mask], tcls.float()) else: FT = torch.cuda.FloatTensor if p.is_cuda else torch.FloatTensor - lx, ly, lw, lh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) + lxy, lwh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]) lconf = (k * 64) * BCEWithLogitsLoss(p_conf, mask.float()) # Sum loss components - loss = lx + ly + lw + lh + lconf + lcls + loss = lxy + lwh + lconf + lcls - return loss, loss.item(), lx.item(), ly.item(), lw.item(), lh.item(), lconf.item(), lcls.item(), nT + return loss, loss.item(), lxy.item(), lwh.item(), lconf.item(), lcls.item(), nT else: if ONNX_EXPORT: @@ -235,7 +227,7 @@ class Darknet(nn.Module): self.module_defs[0]['height'] = img_size self.hyperparams, self.module_list = create_modules(self.module_defs) self.img_size = img_size - self.loss_names = ['loss', 'x', 'y', 'w', 'h', 'conf', 'cls', 'nT'] + self.loss_names = ['loss', 'xy', 'wh', 'conf', 'cls', 'nT'] self.losses = [] def forward(self, x, targets=None, var=0): diff --git a/train.py b/train.py index 5f4018c4..d4919cbc 100644 --- a/train.py +++ b/train.py @@ -87,8 +87,8 @@ def train( for epoch in range(epochs): epoch += start_epoch - print(('%8s%12s' + '%10s' * 9) % ( - 'Epoch', 'Batch', 'x', 'y', 'w', 'h', 'conf', 'cls', 'total', 'nTargets', 'time')) + print(('%8s%12s' + '%10s' * 7) % ( + 'Epoch', 'Batch', 'xy', 'wh', 'conf', 'cls', 'total', 'nTargets', 'time')) # Update scheduler (automatic) # scheduler.step() @@ -139,9 +139,9 @@ def train( for key, val in model.losses.items(): rloss[key] = (rloss[key] * ui + val) / (ui + 1) - s = ('%8s%12s' + '%10.3g' * 9) % ( - '%g/%g' % (epoch, epochs - 1), '%g/%g' % (i, len(dataloader) - 1), rloss['x'], - rloss['y'], rloss['w'], rloss['h'], rloss['conf'], rloss['cls'], + s = ('%8s%12s' + '%10.3g' * 7) % ( + '%g/%g' % (epoch, epochs - 1), '%g/%g' % (i, len(dataloader) - 1), rloss['xy'], + rloss['wh'], rloss['conf'], rloss['cls'], rloss['loss'], model.losses['nT'], time.time() - t0) t0 = time.time() print(s) diff --git a/utils/utils.py b/utils/utils.py index 3086dc5e..56314dfd 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -220,10 +220,8 @@ def build_targets(target, anchor_wh, nA, nC, nG): """ nB = len(target) # number of images in batch nT = [len(x) for x in target] - tx = torch.zeros(nB, nA, nG, nG) # batch size, anchors, grid size - ty = torch.zeros(nB, nA, nG, nG) - tw = torch.zeros(nB, nA, nG, nG) - th = torch.zeros(nB, nA, nG, nG) + txy = torch.zeros(nB, nA, nG, nG, 2) # batch size, anchors, grid size + twh = torch.zeros(nB, nA, nG, nG, 2) tconf = torch.ByteTensor(nB, nA, nG, nG).fill_(0) tcls = torch.ByteTensor(nB, nA, nG, nG, nC).fill_(0) # nC = number of classes @@ -274,22 +272,22 @@ def build_targets(target, anchor_wh, nA, nC, nG): tc, gx, gy, gw, gh = t[:, 0].long(), t[:, 1] * nG, t[:, 2] * nG, t[:, 3] * nG, t[:, 4] * nG # Coordinates - tx[b, a, gj, gi] = gx - gi.float() - ty[b, a, gj, gi] = gy - gj.float() + txy[b, a, gj, gi, 0] = gx - gi.float() + txy[b, a, gj, gi, 1] = gy - gj.float() # Width and height (yolo method) - tw[b, a, gj, gi] = torch.log(gw / anchor_wh[a, 0]) - th[b, a, gj, gi] = torch.log(gh / anchor_wh[a, 1]) + twh[b, a, gj, gi, 0] = torch.log(gw / anchor_wh[a, 0]) + twh[b, a, gj, gi, 1] = torch.log(gh / anchor_wh[a, 1]) # Width and height (power method) - # tw[b, a, gj, gi] = torch.sqrt(gw / anchor_wh[a, 0]) / 2 - # th[b, a, gj, gi] = torch.sqrt(gh / anchor_wh[a, 1]) / 2 + # twh[b, a, gj, gi, 0] = torch.sqrt(gw / anchor_wh[a, 0]) / 2 + # twh[b, a, gj, gi, 1] = torch.sqrt(gh / anchor_wh[a, 1]) / 2 # One-hot encoding of label tcls[b, a, gj, gi, tc] = 1 tconf[b, a, gj, gi] = 1 - return tx, ty, tw, th, tconf, tcls + return txy, twh, tconf, tcls def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): @@ -447,13 +445,13 @@ def plot_results(): # import os; os.system('rm -rf results.txt && wget https://storage.googleapis.com/ultralytics/results_v1_0.txt') plt.figure(figsize=(16, 8)) - s = ['X', 'Y', 'Width', 'Height', 'Confidence', 'Classification', 'Total Loss', 'mAP', 'Recall', 'Precision'] + s = ['XY', 'Width-Height', 'Confidence', 'Classification', 'Total Loss', 'mAP', 'Recall', 'Precision'] files = sorted(glob.glob('results*.txt')) for f in files: - results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 7, 8, 11, 12, 13]).T # column 13 is mAP + results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 11, 12, 13]).T # column 11 is mAP n = results.shape[1] - for i in range(10): - plt.subplot(2, 5, i + 1) + for i in range(8): + plt.subplot(2, 4, i + 1) plt.plot(range(1, n), results[i, 1:], marker='.', label=f) plt.title(s[i]) if i == 0: From 3eb49be2634fb5e6d82f97c8555f322938f68f6e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Feb 2019 20:03:42 +0100 Subject: [PATCH 0411/2595] xy and wh losses respectively merged --- utils/utils.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 56314dfd..e6c1a33d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -269,19 +269,17 @@ def build_targets(target, anchor_wh, nA, nC, nG): if iou_best < 0.10: continue - tc, gx, gy, gw, gh = t[:, 0].long(), t[:, 1] * nG, t[:, 2] * nG, t[:, 3] * nG, t[:, 4] * nG + tc, gx, gy, gwh = t[:, 0].long(), t[:, 1] * nG, t[:, 2] * nG, t[:, 3:5] * nG # Coordinates txy[b, a, gj, gi, 0] = gx - gi.float() txy[b, a, gj, gi, 1] = gy - gj.float() # Width and height (yolo method) - twh[b, a, gj, gi, 0] = torch.log(gw / anchor_wh[a, 0]) - twh[b, a, gj, gi, 1] = torch.log(gh / anchor_wh[a, 1]) + twh[b, a, gj, gi] = torch.log(gwh / anchor_wh[a]) # Width and height (power method) - # twh[b, a, gj, gi, 0] = torch.sqrt(gw / anchor_wh[a, 0]) / 2 - # twh[b, a, gj, gi, 1] = torch.sqrt(gh / anchor_wh[a, 1]) / 2 + # twh[b, a, gj, gi] = torch.sqrt(gwh / anchor_wh[a]) / 2 # One-hot encoding of label tcls[b, a, gj, gi, tc] = 1 From 0772ebf7c9f2cf253b51299215db68a44c1c3671 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Feb 2019 22:19:59 +0100 Subject: [PATCH 0412/2595] xy and wh losses respectively merged --- utils/utils.py | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index e6c1a33d..3a0074b0 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -231,18 +231,16 @@ def build_targets(target, anchor_wh, nA, nC, nG): continue t = target[b] - # Convert to position relative to box - gx, gy, gw, gh = t[:, 1] * nG, t[:, 2] * nG, t[:, 3] * nG, t[:, 4] * nG + gxy, gwh = t[:, 1:3] * nG, t[:, 3:5] * nG # Get grid box indices and prevent overflows (i.e. 13.01 on 13 anchors) - gi = torch.clamp(gx.long(), min=0, max=nG - 1) - gj = torch.clamp(gy.long(), min=0, max=nG - 1) + gi, gj = torch.clamp(gxy.long(), min=0, max=nG - 1).t() # iou of targets-anchors (using wh only) - box1 = t[:, 3:5] * nG + box1 = gwh box2 = anchor_wh.unsqueeze(1) inter_area = torch.min(box1, box2).prod(2) - iou = inter_area / (gw * gh + box2.prod(2) - inter_area + 1e-16) + iou = inter_area / (box1.prod(1) + box2.prod(2) - inter_area + 1e-16) # Select best iou_pred and anchor iou_best, a = iou.max(0) # best anchor [0-2] for each target @@ -269,17 +267,14 @@ def build_targets(target, anchor_wh, nA, nC, nG): if iou_best < 0.10: continue - tc, gx, gy, gwh = t[:, 0].long(), t[:, 1] * nG, t[:, 2] * nG, t[:, 3:5] * nG + tc, gxy, gwh = t[:, 0].long(), t[:, 1:3] * nG, t[:, 3:5] * nG - # Coordinates - txy[b, a, gj, gi, 0] = gx - gi.float() - txy[b, a, gj, gi, 1] = gy - gj.float() + # XY coordinates + txy[b, a, gj, gi] = gxy - gxy.floor() - # Width and height (yolo method) - twh[b, a, gj, gi] = torch.log(gwh / anchor_wh[a]) - - # Width and height (power method) - # twh[b, a, gj, gi] = torch.sqrt(gwh / anchor_wh[a]) / 2 + # Width and height + twh[b, a, gj, gi] = torch.log(gwh / anchor_wh[a]) # yolo method + # twh[b, a, gj, gi] = torch.sqrt(gwh / anchor_wh[a]) / 2 # power method # One-hot encoding of label tcls[b, a, gj, gi, tc] = 1 From 44333ddd9f630cb055fdfe22fc4904a3ca516c1d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Feb 2019 22:49:47 +0100 Subject: [PATCH 0413/2595] updates --- models.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/models.py b/models.py index 6e8b6253..293b66e1 100755 --- a/models.py +++ b/models.py @@ -101,9 +101,7 @@ class Upsample(nn.Module): class YOLOLayer(nn.Module): - def __init__(self, anchors, nC, img_size, yolo_layer, cfg): - # TODO: img_size from hyperparams in cfg file, NOT from parser. Make dynamic super(YOLOLayer, self).__init__() nA = len(anchors) From 315fe6ec14592c88432a00f022377aa42a1a939d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Feb 2019 12:50:40 +0100 Subject: [PATCH 0414/2595] xy and wh losses respectively merged --- models.py | 1 + utils/gcp.sh | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index 293b66e1..3a20fcce 100755 --- a/models.py +++ b/models.py @@ -131,6 +131,7 @@ class YOLOLayer(nn.Module): if p.is_cuda: self.grid_xy = self.grid_xy.cuda() self.anchor_vec = self.anchor_vec.cuda() + self.anchor_wh = self.anchor_wh.cuda() # p.view(bs, 255, 13, 13) -- > (bs, 3, 13, 13, 80) # (bs, anchors, grid, grid, classes + xywh) p = p.view(bs, self.nA, self.nC + 5, nG, nG).permute(0, 1, 3, 4, 2).contiguous() # prediction diff --git a/utils/gcp.sh b/utils/gcp.sh index b0f5c6a9..5700fa26 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Start -sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 train.py --freeze +sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 train.py # Resume python3 train.py --resume From f728bd21d23b9e44f6458d771601370374591225 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Feb 2019 12:52:39 +0100 Subject: [PATCH 0415/2595] updates --- models.py | 1 - 1 file changed, 1 deletion(-) diff --git a/models.py b/models.py index 3a20fcce..8beff489 100755 --- a/models.py +++ b/models.py @@ -130,7 +130,6 @@ class YOLOLayer(nn.Module): if p.is_cuda: self.grid_xy = self.grid_xy.cuda() - self.anchor_vec = self.anchor_vec.cuda() self.anchor_wh = self.anchor_wh.cuda() # p.view(bs, 255, 13, 13) -- > (bs, 3, 13, 13, 80) # (bs, anchors, grid, grid, classes + xywh) From 344bea20ebd655b015e7b1d3eda4aa0b3f29c393 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Feb 2019 12:53:38 +0100 Subject: [PATCH 0416/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 8beff489..92562a7b 100755 --- a/models.py +++ b/models.py @@ -158,7 +158,7 @@ class YOLOLayer(nn.Module): tcls = tcls[mask] if xy.is_cuda: - txy, tw, th, mask, tcls = txy.cuda(), twh.cuda(), mask.cuda(), tcls.cuda() + txy, twth, mask, tcls = txy.cuda(), twh.cuda(), mask.cuda(), tcls.cuda() # Compute losses nT = sum([len(x) for x in targets]) # number of targets From ed37551c38906329d129590117fc073c5e6e8d5a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Feb 2019 12:55:06 +0100 Subject: [PATCH 0417/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 92562a7b..cc61df1d 100755 --- a/models.py +++ b/models.py @@ -158,7 +158,7 @@ class YOLOLayer(nn.Module): tcls = tcls[mask] if xy.is_cuda: - txy, twth, mask, tcls = txy.cuda(), twh.cuda(), mask.cuda(), tcls.cuda() + txy, twh, mask, tcls = txy.cuda(), twh.cuda(), mask.cuda(), tcls.cuda() # Compute losses nT = sum([len(x) for x in targets]) # number of targets From a65a383d3a81dd56a31271936cc8045dfbb4d645 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Feb 2019 13:00:39 +0100 Subject: [PATCH 0418/2595] updates --- train.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/train.py b/train.py index d4919cbc..f725add8 100644 --- a/train.py +++ b/train.py @@ -186,7 +186,6 @@ if __name__ == '__main__': parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') parser.add_argument('--weights', type=str, default='weights', help='path to store weights') parser.add_argument('--resume', action='store_true', help='resume training flag') - parser.add_argument('--freeze', action='store_true', help='freeze darknet53.conv.74 layers for first epoch') parser.add_argument('--var', type=float, default=0, help='test variable') opt = parser.parse_args() print(opt, end='\n\n') @@ -203,6 +202,5 @@ if __name__ == '__main__': accumulated_batches=opt.accumulated_batches, weights=opt.weights, multi_scale=opt.multi_scale, - freeze_backbone=opt.freeze, var=opt.var, ) From ead4af98b084e452f52f7c4c4775920387b74670 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Feb 2019 15:11:55 +0100 Subject: [PATCH 0419/2595] updates --- utils/utils.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 3a0074b0..cf2a17be 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -430,6 +430,17 @@ def coco_class_count(path='../coco/labels/train2014/'): print(i, len(files)) +def coco_only_people(path='../coco/labels/val2014/'): + # find images with only people + import glob + + files = sorted(glob.glob('%s/*.*' % path)) + for i, file in enumerate(files): + labels = np.loadtxt(file, dtype=np.float32).reshape(-1, 5) + if all(labels[:, 0] == 0): + print(labels.shape[0], file) + + def plot_results(): # Plot YOLO training results file 'results.txt' import glob @@ -437,11 +448,11 @@ def plot_results(): import numpy as np # import os; os.system('rm -rf results.txt && wget https://storage.googleapis.com/ultralytics/results_v1_0.txt') - plt.figure(figsize=(16, 8)) - s = ['XY', 'Width-Height', 'Confidence', 'Classification', 'Total Loss', 'mAP', 'Recall', 'Precision'] + plt.figure(figsize=(14, 7)) + s = ['X + Y', 'Width + Height', 'Confidence', 'Classification', 'Total Loss', 'mAP', 'Recall', 'Precision'] files = sorted(glob.glob('results*.txt')) for f in files: - results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 11, 12, 13]).T # column 11 is mAP + results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 9, 10, 11]).T # column 11 is mAP n = results.shape[1] for i in range(8): plt.subplot(2, 4, i + 1) From f8c675dbc023e5b279b20009bc916fa79c93ecac Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Feb 2019 17:44:41 +0100 Subject: [PATCH 0420/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index f725add8..81ab81c5 100644 --- a/train.py +++ b/train.py @@ -163,8 +163,8 @@ def train( os.system('cp ' + latest + ' ' + best) # Save backup weights every 5 epochs - if (epoch > 0) & (epoch % 5 == 0): - os.system('cp ' + latest + ' ' + os.path.join(weights, 'backup{}.pt'.format(epoch))) + # if (epoch > 0) & (epoch % 5 == 0): + # os.system('cp ' + latest + ' ' + os.path.join(weights, 'backup{}.pt'.format(epoch))) # Calculate mAP with torch.no_grad(): From 0b971eddffba1956afe826c7147127483423c3f0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Feb 2019 18:41:31 +0100 Subject: [PATCH 0421/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 81ab81c5..1239fcb5 100644 --- a/train.py +++ b/train.py @@ -162,7 +162,7 @@ def train( if best_loss == loss_per_target: os.system('cp ' + latest + ' ' + best) - # Save backup weights every 5 epochs + # Save backup weights every 5 epochs (optional) # if (epoch > 0) & (epoch % 5 == 0): # os.system('cp ' + latest + ' ' + os.path.join(weights, 'backup{}.pt'.format(epoch))) From a92b6d4d32da1f0a8b911b34b703d3007fc7dcf4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Feb 2019 23:21:42 +0100 Subject: [PATCH 0422/2595] updates --- utils/gcp.sh | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 5700fa26..54bc8ae9 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -1,5 +1,9 @@ #!/usr/bin/env bash +# New VM +sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 +bash yolov3/data/get_coco_dataset.sh + # Start sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 train.py @@ -17,11 +21,6 @@ python3 test.py --weights weights/yolov3.weights # Test Darknet python3 test.py --img_size 416 --weights ../darknet/backup/yolov3.backup -# Download and Test -sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 -wget https://pjreddie.com/media/files/yolov3.weights -P weights -python3 test.py --img_size 416 --weights weights/backup5.pt --nms_thres 0.45 - # Download and Resume sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 wget https://storage.googleapis.com/ultralytics/yolov3.pt -O weights/latest.pt From 58d4826a118b232a74fa722d1ea08e0ab9480155 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Feb 2019 23:52:36 +0100 Subject: [PATCH 0423/2595] updates --- models.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/models.py b/models.py index cc61df1d..204cc990 100755 --- a/models.py +++ b/models.py @@ -135,6 +135,10 @@ class YOLOLayer(nn.Module): # p.view(bs, 255, 13, 13) -- > (bs, 3, 13, 13, 80) # (bs, anchors, grid, grid, classes + xywh) p = p.view(bs, self.nA, self.nC + 5, nG, nG).permute(0, 1, 3, 4, 2).contiguous() # prediction + # Width and height + wh = p[..., 2:4] # yolo method + # wh = torch.sigmoid(p[..., 2:4]) # power method + # Training if targets is not None: MSELoss = nn.MSELoss() @@ -146,14 +150,6 @@ class YOLOLayer(nn.Module): p_conf = p[..., 4] # Conf p_cls = p[..., 5:] # Class - # Width and height (yolo method) - wh = p[..., 2:4] # wh - # wh_pixels = torch.exp(wh.data) * self.anchor_wh - - # Width and height (power method) - # wh = torch.sigmoid(p[..., 2:4]) # wh - # wh_pixels = ((wh.data * 2) ** 2) * self.anchor_wh - txy, twh, mask, tcls = build_targets(targets, self.anchor_vec, self.nA, self.nC, nG) tcls = tcls[mask] @@ -206,7 +202,8 @@ class YOLOLayer(nn.Module): return torch.cat((xy / nG, wh, p_conf, p_cls), 2).squeeze().t() p[..., 0:2] = torch.sigmoid(p[..., 0:2]) + self.grid_xy # xy - p[..., 2:4] = torch.exp(p[..., 2:4]) * self.anchor_wh # wh + p[..., 2:4] = torch.exp(wh) * self.anchor_wh # wh yolo method + # p[..., 2:4] = ((wh * 2) ** 2) * self.anchor_wh # wh power method p[..., 4] = torch.sigmoid(p[..., 4]) # p_conf p[..., :4] *= self.stride From 7a31f4b288c6518a3dfb102daf8eaf7214f25369 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Feb 2019 00:14:16 +0100 Subject: [PATCH 0424/2595] updates --- data/get_coco_dataset.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/data/get_coco_dataset.sh b/data/get_coco_dataset.sh index e7764f2d..625ed414 100755 --- a/data/get_coco_dataset.sh +++ b/data/get_coco_dataset.sh @@ -13,6 +13,9 @@ wget -c https://pjreddie.com/media/files/val2014.zip unzip -q train2014.zip unzip -q val2014.zip +# (optional) Delete zip files +rm -rf *.zip + cd .. # Download COCO Metadata From 646a21a5cd1c23658d0de956fd2fd0bbf4ba7614 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Feb 2019 10:57:55 +0100 Subject: [PATCH 0425/2595] updates --- models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index 204cc990..e6832ab5 100755 --- a/models.py +++ b/models.py @@ -159,7 +159,8 @@ class YOLOLayer(nn.Module): # Compute losses nT = sum([len(x) for x in targets]) # number of targets nM = mask.sum().float() # number of anchors (assigned to targets) - k = nM / bs + k = 1 #nM / bs + if nM > 0: lxy = k * MSELoss(xy[mask], txy[mask]) lwh = k * MSELoss(wh[mask], twh[mask]) From ec308d605e66b586db10754550e0705d79a303d0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Feb 2019 10:59:05 +0100 Subject: [PATCH 0426/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index e6832ab5..2386b222 100755 --- a/models.py +++ b/models.py @@ -159,7 +159,7 @@ class YOLOLayer(nn.Module): # Compute losses nT = sum([len(x) for x in targets]) # number of targets nM = mask.sum().float() # number of anchors (assigned to targets) - k = 1 #nM / bs + k = 1 # nM / bs if nM > 0: lxy = k * MSELoss(xy[mask], txy[mask]) From af853f604c69d8d138efe9a377c0d2e7a0d80cd8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Feb 2019 15:57:18 +0100 Subject: [PATCH 0427/2595] updates --- models.py | 2 +- train.py | 42 +++++++++++++++++++++--------------------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/models.py b/models.py index 2386b222..7a659404 100755 --- a/models.py +++ b/models.py @@ -295,7 +295,7 @@ def load_darknet_weights(self, weights, cutoff=-1): if weights_file == 'darknet53.conv.74': cutoff = 75 elif weights_file == 'yolov3-tiny.conv.15': - cutoff = 16 + cutoff = 15 # Open the weights file fp = open(weights, 'rb') diff --git a/train.py b/train.py index 1239fcb5..2fa057d6 100644 --- a/train.py +++ b/train.py @@ -15,11 +15,13 @@ def train( epochs=100, batch_size=16, accumulated_batches=1, - weights='weights', multi_scale=False, freeze_backbone=True, var=0, ): + weights = 'weights' + os.sep + latest = weights + 'latest.pt' + best = weights + 'best.pt' device = torch_utils.select_device() if multi_scale: # pass maximum multi_scale size @@ -27,9 +29,6 @@ def train( else: torch.backends.cudnn.benchmark = True # unsuitable for multiscale - latest = os.path.join(weights, 'latest.pt') - best = os.path.join(weights, 'best.pt') - # Configure run train_path = parse_data_cfg(data_cfg)['train'] @@ -40,6 +39,7 @@ def train( dataloader = LoadImagesAndLabels(train_path, batch_size, img_size, multi_scale=multi_scale, augment=True) lr0 = 0.001 + cutoff = -1 # backbone reaches to cutoff layer if resume: checkpoint = torch.load(latest, map_location='cpu') @@ -69,8 +69,13 @@ def train( start_epoch = 0 best_loss = float('inf') - # Initialize model with darknet53 weights (optional) - load_darknet_weights(model, os.path.join(weights, 'darknet53.conv.74')) + # Initialize model with backbone (optional) + if cfg.endswith('yolov3.cfg'): + load_darknet_weights(model, weights + 'darknet53.conv.74') + cutoff = 75 + elif cfg.endswith('yolov3-tiny.cfg'): + load_darknet_weights(model, weights + 'yolov3-tiny.conv.15') + cutoff = 15 # if torch.cuda.device_count() > 1: # model = nn.DataParallel(model) @@ -102,15 +107,10 @@ def train( g['lr'] = lr # Freeze darknet53.conv.74 for first epoch - if freeze_backbone: - if epoch == 0: - for i, (name, p) in enumerate(model.named_parameters()): - if int(name.split('.')[1]) < 75: # if layer < 75 - p.requires_grad = False - elif epoch == 1: - for i, (name, p) in enumerate(model.named_parameters()): - if int(name.split('.')[1]) < 75: # if layer < 75 - p.requires_grad = True + if freeze_backbone and (epoch < 2): + for i, (name, p) in enumerate(model.named_parameters()): + if int(name.split('.')[1]) < cutoff: # if layer < 75 + p.requires_grad = False if (epoch == 0) else True ui = -1 rloss = defaultdict(float) # running loss @@ -140,9 +140,11 @@ def train( rloss[key] = (rloss[key] * ui + val) / (ui + 1) s = ('%8s%12s' + '%10.3g' * 7) % ( - '%g/%g' % (epoch, epochs - 1), '%g/%g' % (i, len(dataloader) - 1), rloss['xy'], - rloss['wh'], rloss['conf'], rloss['cls'], - rloss['loss'], model.losses['nT'], time.time() - t0) + '%g/%g' % (epoch, epochs - 1), + '%g/%g' % (i, len(dataloader) - 1), + rloss['xy'], rloss['wh'], rloss['conf'], + rloss['cls'], rloss['loss'], + model.losses['nT'], time.time() - t0) t0 = time.time() print(s) @@ -164,7 +166,7 @@ def train( # Save backup weights every 5 epochs (optional) # if (epoch > 0) & (epoch % 5 == 0): - # os.system('cp ' + latest + ' ' + os.path.join(weights, 'backup{}.pt'.format(epoch))) + # os.system('cp ' + latest + ' ' + weights + 'backup{}.pt'.format(epoch))) # Calculate mAP with torch.no_grad(): @@ -184,7 +186,6 @@ if __name__ == '__main__': parser.add_argument('--data-cfg', type=str, default='cfg/coco.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') - parser.add_argument('--weights', type=str, default='weights', help='path to store weights') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--var', type=float, default=0, help='test variable') opt = parser.parse_args() @@ -200,7 +201,6 @@ if __name__ == '__main__': epochs=opt.epochs, batch_size=opt.batch_size, accumulated_batches=opt.accumulated_batches, - weights=opt.weights, multi_scale=opt.multi_scale, var=opt.var, ) From 46e3343494d38caa183c49ce54ed3fdcd10a0e97 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Feb 2019 16:16:35 +0100 Subject: [PATCH 0428/2595] updates --- models.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/models.py b/models.py index 7a659404..1ecfdc18 100755 --- a/models.py +++ b/models.py @@ -135,9 +135,10 @@ class YOLOLayer(nn.Module): # p.view(bs, 255, 13, 13) -- > (bs, 3, 13, 13, 80) # (bs, anchors, grid, grid, classes + xywh) p = p.view(bs, self.nA, self.nC + 5, nG, nG).permute(0, 1, 3, 4, 2).contiguous() # prediction - # Width and height - wh = p[..., 2:4] # yolo method - # wh = torch.sigmoid(p[..., 2:4]) # power method + # xy, width and height + xy = torch.sigmoid(p[..., 0:2]) + wh = p[..., 2:4] # wh (yolo method) + # wh = torch.sigmoid(p[..., 2:4]) # wh (power method) # Training if targets is not None: @@ -146,7 +147,6 @@ class YOLOLayer(nn.Module): CrossEntropyLoss = nn.CrossEntropyLoss() # Get outputs - xy = torch.sigmoid(p[..., 0:2]) p_conf = p[..., 4] # Conf p_cls = p[..., 5:] # Class @@ -160,7 +160,6 @@ class YOLOLayer(nn.Module): nT = sum([len(x) for x in targets]) # number of targets nM = mask.sum().float() # number of anchors (assigned to targets) k = 1 # nM / bs - if nM > 0: lxy = k * MSELoss(xy[mask], txy[mask]) lwh = k * MSELoss(wh[mask], twh[mask]) @@ -184,14 +183,14 @@ class YOLOLayer(nn.Module): anchor_wh = self.anchor_wh.repeat((1, 1, nG, nG, 1)).view((1, -1, 2)) / nG # p = p.view(-1, 85) - # xy = torch.sigmoid(p[:, 0:2]) + self.grid_xy[0] # x, y - # wh = torch.exp(p[:, 2:4]) * self.anchor_wh[0] # width, height + # xy = xy + self.grid_xy[0] # x, y + # wh = torch.exp(wh) * self.anchor_wh[0] # width, height # p_conf = torch.sigmoid(p[:, 4:5]) # Conf # p_cls = F.softmax(p[:, 5:85], 1) * p_conf # SSD-like conf # return torch.cat((xy / nG, wh, p_conf, p_cls), 1).t() p = p.view(1, -1, 85) - xy = torch.sigmoid(p[..., 0:2]) + grid_xy # x, y + xy = xy + grid_xy # x, y wh = torch.exp(p[..., 2:4]) * anchor_wh # width, height p_conf = torch.sigmoid(p[..., 4:5]) # Conf p_cls = p[..., 5:85] @@ -202,7 +201,7 @@ class YOLOLayer(nn.Module): p_cls = p_cls.permute(2, 1, 0) return torch.cat((xy / nG, wh, p_conf, p_cls), 2).squeeze().t() - p[..., 0:2] = torch.sigmoid(p[..., 0:2]) + self.grid_xy # xy + p[..., 0:2] = xy + self.grid_xy # xy p[..., 2:4] = torch.exp(wh) * self.anchor_wh # wh yolo method # p[..., 2:4] = ((wh * 2) ** 2) * self.anchor_wh # wh power method p[..., 4] = torch.sigmoid(p[..., 4]) # p_conf From 485321ecb1cd5dd26f4f912d7108cea6c674a7b5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Feb 2019 16:18:11 +0100 Subject: [PATCH 0429/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 2fa057d6..f1cd84a6 100644 --- a/train.py +++ b/train.py @@ -16,7 +16,7 @@ def train( batch_size=16, accumulated_batches=1, multi_scale=False, - freeze_backbone=True, + freeze_backbone=False, var=0, ): weights = 'weights' + os.sep @@ -182,7 +182,7 @@ if __name__ == '__main__': parser.add_argument('--epochs', type=int, default=100, help='number of epochs') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulated-batches', type=int, default=1, help='number of batches before optimizer step') - parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') + parser.add_argument('--cfg', type=str, default='cfg/yolov3-tiny.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='cfg/coco.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') From e62736f8a86dac1102335f2737854317d24614bd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Feb 2019 20:16:58 +0100 Subject: [PATCH 0430/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index f1cd84a6..f9414341 100644 --- a/train.py +++ b/train.py @@ -182,7 +182,7 @@ if __name__ == '__main__': parser.add_argument('--epochs', type=int, default=100, help='number of epochs') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulated-batches', type=int, default=1, help='number of batches before optimizer step') - parser.add_argument('--cfg', type=str, default='cfg/yolov3-tiny.cfg', help='cfg file path') + parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='cfg/coco.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') From 3f68a6776a6db865b1828abc88826494f9f59e68 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Feb 2019 20:45:53 +0100 Subject: [PATCH 0431/2595] updates --- utils/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index cf2a17be..fc2d1b4e 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -251,12 +251,13 @@ def build_targets(target, anchor_wh, nA, nC, nG): # Unique anchor selection u = torch.cat((gi, gj, a), 0).view((3, -1)) + # u = torch.stack((gi, gj, a),0) _, first_unique = np.unique(u[:, iou_order], axis=1, return_index=True) # first unique indices # _, first_unique = torch.unique(u[:, iou_order], dim=1, return_inverse=True) # different than numpy? i = iou_order[first_unique] # best anchor must share significant commonality (iou) with target - i = i[iou_best[i] > 0.10] + i = i[iou_best[i] > 0.10] # TODO: arbitrary threshold is problematic if len(i) == 0: continue From 0f3018124f06d0da2c44caec64a315ee4c65d647 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Feb 2019 23:23:03 +0100 Subject: [PATCH 0432/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 2c34939b..aad9ab51 100644 --- a/detect.py +++ b/detect.py @@ -98,7 +98,7 @@ def detect( cv2.imwrite(save_path, im0) if webcam: # Show live webcam - cv2.imshow(weights + ' - %.2f FPS' % (1 / dt), im0) + cv2.imshow(weights, im0) if save_images and (platform == 'darwin'): # linux/macos os.system('open ' + output + ' ' + save_path) From 12e605165e5c1a640a4ad3e3b84c015e742b76c0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 22 Feb 2019 15:05:03 +0100 Subject: [PATCH 0433/2595] updates --- train.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index f9414341..7fcdcefd 100644 --- a/train.py +++ b/train.py @@ -50,10 +50,9 @@ def train( # model = nn.DataParallel(model) model.to(device).train() - # # Transfer learning (train only YOLO layers) + # Transfer learning (train only YOLO layers) # for i, (name, p) in enumerate(model.named_parameters()): - # if p.shape[0] != 650: # not YOLO layer - # p.requires_grad = False + # p.requires_grad = True if (p.shape[0] == 255) else False # Set optimizer optimizer = torch.optim.SGD(filter(lambda x: x.requires_grad, model.parameters()), lr=lr0, momentum=.9) From ac22a717f18f63ea95757decd618a888282f92aa Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 22 Feb 2019 16:15:20 +0100 Subject: [PATCH 0434/2595] updates --- train.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index 7fcdcefd..6a7e6dc6 100644 --- a/train.py +++ b/train.py @@ -40,8 +40,10 @@ def train( lr0 = 0.001 cutoff = -1 # backbone reaches to cutoff layer + start_epoch = 0 + best_loss = float('inf') if resume: - checkpoint = torch.load(latest, map_location='cpu') + checkpoint = torch.load('weights/yolov3.pt', map_location='cpu') # Load weights to resume from model.load_state_dict(checkpoint['model']) @@ -52,7 +54,7 @@ def train( # Transfer learning (train only YOLO layers) # for i, (name, p) in enumerate(model.named_parameters()): - # p.requires_grad = True if (p.shape[0] == 255) else False + # p.requires_grad = True if (p.shape[0] == 255) else False # Set optimizer optimizer = torch.optim.SGD(filter(lambda x: x.requires_grad, model.parameters()), lr=lr0, momentum=.9) @@ -65,9 +67,6 @@ def train( del checkpoint # current, saved else: - start_epoch = 0 - best_loss = float('inf') - # Initialize model with backbone (optional) if cfg.endswith('yolov3.cfg'): load_darknet_weights(model, weights + 'darknet53.conv.74') From 9e60e97a6cfd58fb7e91f256369dcc4ac838f39f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 22 Feb 2019 16:24:30 +0100 Subject: [PATCH 0435/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 6a7e6dc6..aa355c6f 100644 --- a/train.py +++ b/train.py @@ -43,7 +43,7 @@ def train( start_epoch = 0 best_loss = float('inf') if resume: - checkpoint = torch.load('weights/yolov3.pt', map_location='cpu') + checkpoint = torch.load(latest, map_location='cpu') # Load weights to resume from model.load_state_dict(checkpoint['model']) From 8af70386e87c843dfb66f9a8d0798dee474f2ae4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 23 Feb 2019 23:50:23 +0100 Subject: [PATCH 0436/2595] updates --- test.py | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/test.py b/test.py index 02512e5c..c8c95023 100644 --- a/test.py +++ b/test.py @@ -37,7 +37,7 @@ def test( # dataloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path), batch_size=batch_size) # pytorch dataloader = LoadImagesAndLabels(test_path, batch_size=batch_size, img_size=img_size) - mean_mAP, mean_R, mean_P = 0.0, 0.0, 0.0 + mean_mAP, mean_R, mean_P, seen = 0.0, 0.0, 0.0, 0 print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP')) outputs, mAPs, mR, mP, TP, confidence, pred_class, target_class = [], [], [], [], [], [], [], [] AP_accum, AP_accum_count = np.zeros(nC), np.zeros(nC) @@ -47,10 +47,10 @@ def test( # Compute average precision for each sample for sample_i, (labels, detections) in enumerate(zip(targets, output)): - correct = [] + seen += 1 if detections is None: - # If there are no detections but there are labels mask as zero AP + # If there are labels but no detections mark as zero AP if labels.size(0) != 0: mAPs.append(0), mR.append(0), mP.append(0) continue @@ -60,6 +60,7 @@ def test( detections = detections[np.argsort(-detections[:, 4])] # If no labels add number of detections as incorrect + correct = [] if labels.size(0) == 0: # correct.extend([0 for _ in range(len(detections))]) mAPs.append(0), mR.append(0), mP.append(0) @@ -86,7 +87,9 @@ def test( correct.append(0) # Compute Average Precision (AP) per class - AP, AP_class, R, P = ap_per_class(tp=correct, conf=detections[:, 4], pred_cls=detections[:, 6], + AP, AP_class, R, P = ap_per_class(tp=correct, + conf=detections[:, 4], + pred_cls=detections[:, 6], target_cls=target_cls) # Accumulate AP per class @@ -104,7 +107,7 @@ def test( mean_P = np.mean(mP) # Print image mAP and running mean mAP - print(('%11s%11s' + '%11.3g' * 3) % (len(mAPs), dataloader.nF, mean_P, mean_R, mean_mAP)) + print(('%11s%11s' + '%11.3g' * 3) % (seen, dataloader.nF, mean_P, mean_R, mean_mAP)) # Print mAP per class print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP') + '\n\nmAP Per Class:') @@ -141,3 +144,27 @@ if __name__ == '__main__': opt.conf_thres, opt.nms_thres ) + +# Image Total P R mAP # YOLOv3 320 +# 32 5000 0.66 0.597 0.591 +# 64 5000 0.664 0.62 0.604 +# 96 5000 0.653 0.627 0.614 +# 128 5000 0.639 0.623 0.607 +# 160 5000 0.642 0.63 0.616 +# 192 5000 0.651 0.636 0.621 + +# Image Total P R mAP # YOLOv3 416 +# 32 5000 0.635 0.581 0.57 +# 64 5000 0.63 0.591 0.578 +# 96 5000 0.661 0.632 0.622 +# 128 5000 0.659 0.632 0.623 +# 160 5000 0.665 0.64 0.633 +# 192 5000 0.66 0.637 0.63 + +# Image Total P R mAP # YOLOv3 608 +# 32 5000 0.653 0.606 0.591 +# 64 5000 0.653 0.635 0.625 +# 96 5000 0.655 0.642 0.633 +# 128 5000 0.667 0.651 0.642 +# 160 5000 0.663 0.645 0.637 +# 192 5000 0.663 0.643 0.634 From d2cd49f059a580227a9785b33b4cb2d6a29bb632 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 25 Feb 2019 13:47:51 +0100 Subject: [PATCH 0437/2595] updates --- utils/torch_utils.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index cac1abb4..6d10004c 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -3,21 +3,22 @@ import torch def init_seeds(seed=0): torch.manual_seed(seed) - if torch.cuda.is_available(): - torch.cuda.manual_seed(seed) - torch.cuda.manual_seed_all(seed) + torch.cuda.manual_seed(seed) + torch.cuda.manual_seed_all(seed) def select_device(force_cpu=False): if force_cpu: + cuda = False device = torch.device('cpu') else: - device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') + cuda = torch.cuda.is_available() + device = torch.device('cuda:0' if cuda else 'cpu') if torch.cuda.device_count() > 1: - print('WARNING Using GPU0 Only. Multi-GPU issue: https://github.com/ultralytics/yolov3/issues/21') + print('WARNING Using GPU0 Only: https://github.com/ultralytics/yolov3/issues/21') torch.cuda.set_device(0) # OPTIONAL: Set your GPU if multiple available # print('Using ', torch.cuda.device_count(), ' GPUs') - print('Using ' + str(device) + '\n') + print('Using %s\n%s' % (device.type, torch.cuda.get_device_properties(0) if cuda else '')) return device From f5418615337a0a6a66b649db68952a3df70e3dc6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 25 Feb 2019 13:50:01 +0100 Subject: [PATCH 0438/2595] updates --- utils/torch_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 6d10004c..2eb65448 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -20,5 +20,5 @@ def select_device(force_cpu=False): torch.cuda.set_device(0) # OPTIONAL: Set your GPU if multiple available # print('Using ', torch.cuda.device_count(), ' GPUs') - print('Using %s\n%s' % (device.type, torch.cuda.get_device_properties(0) if cuda else '')) + print('Using %s %s\n' % (device.type, torch.cuda.get_device_properties(0) if cuda else '')) return device From 90a20f93e51a1b65da438e1419aece4b97cdf26e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 26 Feb 2019 02:53:11 +0100 Subject: [PATCH 0439/2595] updates --- data/coco.names | 12 +++++------ detect.py | 2 +- test.py | 51 +++++++++++++++++++++++++++++++++++++++++--- train.py | 2 +- utils/datasets.py | 7 +++--- utils/torch_utils.py | 2 +- utils/utils.py | 10 ++++++++- 7 files changed, 70 insertions(+), 16 deletions(-) diff --git a/data/coco.names b/data/coco.names index ca76c80b..941cb4e1 100755 --- a/data/coco.names +++ b/data/coco.names @@ -1,8 +1,8 @@ person bicycle car -motorbike -aeroplane +motorcycle +airplane bus train truck @@ -55,12 +55,12 @@ pizza donut cake chair -sofa -pottedplant +couch +potted plant bed -diningtable +dining table toilet -tvmonitor +tv laptop mouse remote diff --git a/detect.py b/detect.py index aad9ab51..6f706b41 100644 --- a/detect.py +++ b/detect.py @@ -72,7 +72,7 @@ def detect( detections = non_max_suppression(pred.unsqueeze(0), conf_thres, nms_thres)[0] # Rescale boxes from 416 to true image size - detections[:, :4] = scale_coords(img_size, detections[:, :4], im0.shape) + scale_coords(img_size, detections[:, :4], im0.shape).round() # Print results to screen unique_classes = detections[:, -1].cpu().unique() diff --git a/test.py b/test.py index c8c95023..d62f4aaf 100644 --- a/test.py +++ b/test.py @@ -1,4 +1,6 @@ import argparse +import json +from pathlib import Path from models import * from utils.datasets import * @@ -13,7 +15,8 @@ def test( img_size=416, iou_thres=0.5, conf_thres=0.3, - nms_thres=0.45 + nms_thres=0.45, + save_json=False ): device = torch_utils.select_device() @@ -37,16 +40,21 @@ def test( # dataloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path), batch_size=batch_size) # pytorch dataloader = LoadImagesAndLabels(test_path, batch_size=batch_size, img_size=img_size) + # Create JSON + jdict = [] + float3 = lambda x: float(format(x, '.3f')) # print json to 3 decimals + # [{"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], "score": 0.236}, ... + mean_mAP, mean_R, mean_P, seen = 0.0, 0.0, 0.0, 0 print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP')) outputs, mAPs, mR, mP, TP, confidence, pred_class, target_class = [], [], [], [], [], [], [], [] AP_accum, AP_accum_count = np.zeros(nC), np.zeros(nC) - for batch_i, (imgs, targets) in enumerate(dataloader): + for batch_i, (imgs, targets, paths, shapes) in enumerate(dataloader): output = model(imgs.to(device)) output = non_max_suppression(output, conf_thres=conf_thres, nms_thres=nms_thres) # Compute average precision for each sample - for sample_i, (labels, detections) in enumerate(zip(targets, output)): + for si, (labels, detections) in enumerate(zip(targets, output)): seen += 1 if detections is None: @@ -59,6 +67,22 @@ def test( detections = detections.cpu().numpy() detections = detections[np.argsort(-detections[:, 4])] + # Save JSON + if save_json: + # rescale box to original image size, top left origin + sbox = torch.from_numpy(detections[:, :4]).clone() # x1y1x2y2 + scale_coords(img_size, sbox, shapes[si]) + sbox = xyxy2xywh(sbox) + sbox[:, :2] -= sbox[:, 2:] / 2 # origin from center to corner + + for di, d in enumerate(detections): + jdict.append({ # add to json dictionary + 'image_id': int(Path(paths[si]).stem.split('_')[-1]), + 'category_id': darknet2coco_class(int(d[6])), + 'bbox': [float3(x) for x in sbox[di]], + 'score': float3(d[4] * d[5]) + }) + # If no labels add number of detections as incorrect correct = [] if labels.size(0) == 0: @@ -116,6 +140,27 @@ def test( for i, c in enumerate(classes): print('%15s: %-.4f' % (c, AP_accum[i] / (AP_accum_count[i] + 1E-16))) + # Save JSON + if save_json: + imgIds = [int(Path(x).stem.split('_')[-1]) for x in dataloader.img_files] + with open('results.json', 'w') as file: + json.dump(jdict, file) + + from utils.pycocotools.coco import COCO + from utils.pycocotools.cocoeval import COCOeval + + # initialize COCO ground truth api + cocoGt = COCO('../coco/annotations/instances_val2014.json') + + # initialize COCO detections api + cocoDt = cocoGt.loadRes('results.json') + + cocoEval = COCOeval(cocoGt, cocoDt, 'bbox') + cocoEval.params.imgIds = imgIds # [:32] # only evaluate these images + cocoEval.evaluate() + cocoEval.accumulate() + cocoEval.summarize() + # Return mAP return mean_mAP, mean_R, mean_P diff --git a/train.py b/train.py index aa355c6f..86253e54 100644 --- a/train.py +++ b/train.py @@ -113,7 +113,7 @@ def train( ui = -1 rloss = defaultdict(float) # running loss optimizer.zero_grad() - for i, (imgs, targets) in enumerate(dataloader): + for i, (imgs, targets, _, _) in enumerate(dataloader): if sum([len(x) for x in targets]) < 1: # if no targets continue continue diff --git a/utils/datasets.py b/utils/datasets.py index 17ebbfad..e274fab8 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -128,8 +128,7 @@ class LoadImagesAndLabels: # for training # Fixed-Scale YOLO Training height = self.height - img_all = [] - labels_all = [] + img_all, labels_all, img_paths, img_shapes = [], [], [], [] for index, files_index in enumerate(range(ia, ib)): img_path = self.img_files[self.shuffled_vector[files_index]] label_path = self.label_files[self.shuffled_vector[files_index]] @@ -210,13 +209,15 @@ class LoadImagesAndLabels: # for training img_all.append(img) labels_all.append(torch.from_numpy(labels)) + img_paths.append(img_path) + img_shapes.append((h, w)) # Normalize img_all = np.stack(img_all)[:, :, :, ::-1].transpose(0, 3, 1, 2) # BGR to RGB and cv2 to pytorch img_all = np.ascontiguousarray(img_all, dtype=np.float32) img_all /= 255.0 - return torch.from_numpy(img_all), labels_all + return torch.from_numpy(img_all), labels_all, img_paths, img_shapes def __len__(self): return self.nB # number of batches diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 2eb65448..a45be2c1 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -20,5 +20,5 @@ def select_device(force_cpu=False): torch.cuda.set_device(0) # OPTIONAL: Set your GPU if multiple available # print('Using ', torch.cuda.device_count(), ' GPUs') - print('Using %s %s\n' % (device.type, torch.cuda.get_device_properties(0) if cuda else '')) + print('Using %s %s\n' % (device.type, torch.cuda.get_device_properties(0) if cuda else '')) return device diff --git a/utils/utils.py b/utils/utils.py index fc2d1b4e..fa9df88a 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -49,6 +49,14 @@ def coco_class_weights(): # frequency of each class in coco train2014 return weights +def darknet2coco_class(c): # returns the coco class for each darknet class + # https://tech.amikelive.com/node-718/what-object-categories-labels-are-in-coco-dataset/ + a = np.loadtxt('data/coco.names', dtype='str', delimiter='\n') + b = np.loadtxt('data/coco_paper.names', dtype='str', delimiter='\n') + x = [list(a[i] == b).index(True) + 1 for i in range(80)] # darknet to coco + return x[c] + + def plot_one_box(x, img, color=None, label=None, line_thickness=None): # Plots one bounding box on image img tl = line_thickness or round(0.002 * max(img.shape[0:2])) + 1 # line thickness color = color or [random.randint(0, 255) for _ in range(3)] @@ -99,7 +107,7 @@ def scale_coords(img_size, coords, img0_shape): coords[:, [0, 2]] -= pad_x coords[:, [1, 3]] -= pad_y coords[:, :4] /= gain - coords[:, :4] = torch.round(torch.clamp(coords[:, :4], min=0)) + coords[:, :4] = torch.clamp(coords[:, :4], min=0) return coords From 40fe489b80777ca81cc7b0ba899b0041777394c5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 26 Feb 2019 02:55:32 +0100 Subject: [PATCH 0440/2595] updates --- test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index d62f4aaf..8d4f8646 100644 --- a/test.py +++ b/test.py @@ -146,8 +146,8 @@ def test( with open('results.json', 'w') as file: json.dump(jdict, file) - from utils.pycocotools.coco import COCO - from utils.pycocotools.cocoeval import COCOeval + from pycocotools.coco import COCO + from pycocotools.cocoeval import COCOeval # initialize COCO ground truth api cocoGt = COCO('../coco/annotations/instances_val2014.json') From 41ba6dfd6b80fc6550f20da1d8661fa46870d343 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 26 Feb 2019 03:12:04 +0100 Subject: [PATCH 0441/2595] updates --- test.py | 4 +++- utils/gcp.sh | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index 8d4f8646..350a6a1f 100644 --- a/test.py +++ b/test.py @@ -174,6 +174,7 @@ if __name__ == '__main__': parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.3, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') + parser.add_argument('--coco_map', action='store_true', help='use pycocotools mAP') parser.add_argument('--img-size', type=int, default=416, help='size of each image dimension') opt = parser.parse_args() print(opt, end='\n\n') @@ -187,7 +188,8 @@ if __name__ == '__main__': opt.img_size, opt.iou_thres, opt.conf_thres, - opt.nms_thres + opt.nms_thres, + opt.coco_map ) # Image Total P R mAP # YOLOv3 320 diff --git a/utils/gcp.sh b/utils/gcp.sh index 54bc8ae9..342653c1 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -5,7 +5,9 @@ sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 bash yolov3/data/get_coco_dataset.sh # Start -sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 train.py +sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 +sudo rm -rf cocoapi && git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 +cd yolov3 && python3 train.py # Resume python3 train.py --resume From 6814e925b55d8d5074fa9b2741a6a1862457de94 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 26 Feb 2019 03:12:32 +0100 Subject: [PATCH 0442/2595] updates --- test.py | 2 +- utils/gcp.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index 350a6a1f..9c0bae55 100644 --- a/test.py +++ b/test.py @@ -174,7 +174,7 @@ if __name__ == '__main__': parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.3, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') - parser.add_argument('--coco_map', action='store_true', help='use pycocotools mAP') + parser.add_argument('--coco-map', action='store_true', help='use pycocotools mAP') parser.add_argument('--img-size', type=int, default=416, help='size of each image dimension') opt = parser.parse_args() print(opt, end='\n\n') diff --git a/utils/gcp.sh b/utils/gcp.sh index 342653c1..7315c3c2 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -7,7 +7,7 @@ bash yolov3/data/get_coco_dataset.sh # Start sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 sudo rm -rf cocoapi && git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 -cd yolov3 && python3 train.py +cd yolov3 && python3 test.py --coco-map # Resume python3 train.py --resume From e1fa265f02cfd39a9c53c0ee65de64329abb85b7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 26 Feb 2019 03:18:15 +0100 Subject: [PATCH 0443/2595] updates --- .gitignore | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index eb9ba27f..c1282ac9 100755 --- a/.gitignore +++ b/.gitignore @@ -13,10 +13,9 @@ data/* !cfg/coco.data !cfg/yolov3*.cfg -!zidane_result.jpg -!coco_training_loss.png -!coco_augmentation_examples.jpg !data/samples/zidane.jpg +!data/coco.names +!data/coco_paper.names results*.txt From a2b3e18fc16a6943db7b17c52b647a08141218dd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 26 Feb 2019 03:28:21 +0100 Subject: [PATCH 0444/2595] updates --- data/coco_paper.names | 91 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 data/coco_paper.names diff --git a/data/coco_paper.names b/data/coco_paper.names new file mode 100644 index 00000000..5378c6cd --- /dev/null +++ b/data/coco_paper.names @@ -0,0 +1,91 @@ +person +bicycle +car +motorcycle +airplane +bus +train +truck +boat +traffic light +fire hydrant +street sign +stop sign +parking meter +bench +bird +cat +dog +horse +sheep +cow +elephant +bear +zebra +giraffe +hat +backpack +umbrella +shoe +eye glasses +handbag +tie +suitcase +frisbee +skis +snowboard +sports ball +kite +baseball bat +baseball glove +skateboard +surfboard +tennis racket +bottle +plate +wine glass +cup +fork +knife +spoon +bowl +banana +apple +sandwich +orange +broccoli +carrot +hot dog +pizza +donut +cake +chair +couch +potted plant +bed +mirror +dining table +window +desk +toilet +door +tv +laptop +mouse +remote +keyboard +cell phone +microwave +oven +toaster +sink +refrigerator +blender +book +clock +vase +scissors +teddy bear +hair drier +toothbrush +hair brush \ No newline at end of file From 707d6ea965baf7b09f66f3cb9aa84cedd54a6618 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 26 Feb 2019 13:52:03 +0100 Subject: [PATCH 0445/2595] updates --- test.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test.py b/test.py index 9c0bae55..a848369d 100644 --- a/test.py +++ b/test.py @@ -70,16 +70,16 @@ def test( # Save JSON if save_json: # rescale box to original image size, top left origin - sbox = torch.from_numpy(detections[:, :4]).clone() # x1y1x2y2 - scale_coords(img_size, sbox, shapes[si]) - sbox = xyxy2xywh(sbox) - sbox[:, :2] -= sbox[:, 2:] / 2 # origin from center to corner + box = torch.from_numpy(detections[:, :4]).clone() # x1y1x2y2 + scale_coords(img_size, box, shapes[si]) + box = xyxy2xywh(box) + box[:, :2] -= box[:, 2:] / 2 # origin center to corner for di, d in enumerate(detections): jdict.append({ # add to json dictionary 'image_id': int(Path(paths[si]).stem.split('_')[-1]), 'category_id': darknet2coco_class(int(d[6])), - 'bbox': [float3(x) for x in sbox[di]], + 'bbox': [float3(x) for x in box[di]], 'score': float3(d[4] * d[5]) }) @@ -174,7 +174,7 @@ if __name__ == '__main__': parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.3, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') - parser.add_argument('--coco-map', action='store_true', help='use pycocotools mAP') + parser.add_argument('--save-json', action='store_true', help='save a cocoapi-compatible JSON results file') parser.add_argument('--img-size', type=int, default=416, help='size of each image dimension') opt = parser.parse_args() print(opt, end='\n\n') @@ -189,7 +189,7 @@ if __name__ == '__main__': opt.iou_thres, opt.conf_thres, opt.nms_thres, - opt.coco_map + opt.save_json ) # Image Total P R mAP # YOLOv3 320 From cb63ce30ec01e230177717052817a99317f36a99 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 26 Feb 2019 14:57:28 +0100 Subject: [PATCH 0446/2595] updates --- test.py | 27 ++++++++++++--------------- utils/utils.py | 8 ++++++-- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/test.py b/test.py index a848369d..f8739866 100644 --- a/test.py +++ b/test.py @@ -37,18 +37,15 @@ def test( model.to(device).eval() # Get dataloader - # dataloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path), batch_size=batch_size) # pytorch + # dataloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path), batch_size=batch_size) dataloader = LoadImagesAndLabels(test_path, batch_size=batch_size, img_size=img_size) - # Create JSON - jdict = [] - float3 = lambda x: float(format(x, '.3f')) # print json to 3 decimals - # [{"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], "score": 0.236}, ... - mean_mAP, mean_R, mean_P, seen = 0.0, 0.0, 0.0, 0 print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP')) - outputs, mAPs, mR, mP, TP, confidence, pred_class, target_class = [], [], [], [], [], [], [], [] + outputs, mAPs, mR, mP, TP, confidence, pred_class, target_class, jdict = \ + [], [], [], [], [], [], [], [], [] AP_accum, AP_accum_count = np.zeros(nC), np.zeros(nC) + coco91class = coco80_to_coco91_class() for batch_i, (imgs, targets, paths, shapes) in enumerate(dataloader): output = model(imgs.to(device)) output = non_max_suppression(output, conf_thres=conf_thres, nms_thres=nms_thres) @@ -67,18 +64,18 @@ def test( detections = detections.cpu().numpy() detections = detections[np.argsort(-detections[:, 4])] - # Save JSON if save_json: - # rescale box to original image size, top left origin - box = torch.from_numpy(detections[:, :4]).clone() # x1y1x2y2 - scale_coords(img_size, box, shapes[si]) - box = xyxy2xywh(box) - box[:, :2] -= box[:, 2:] / 2 # origin center to corner + # [{"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], "score": 0.236}, ... + box = torch.from_numpy(detections[:, :4]).clone() # xyxy + scale_coords(img_size, box, shapes[si]) # to original shape + box = xyxy2xywh(box) # xywh + box[:, :2] -= box[:, 2:] / 2 # xy center to top-left corner + # add to json dictionary for di, d in enumerate(detections): - jdict.append({ # add to json dictionary + jdict.append({ 'image_id': int(Path(paths[si]).stem.split('_')[-1]), - 'category_id': darknet2coco_class(int(d[6])), + 'category_id': coco91class(int(d[6])), 'bbox': [float3(x) for x in box[di]], 'score': float3(d[4] * d[5]) }) diff --git a/utils/utils.py b/utils/utils.py index fa9df88a..ae52c4da 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -12,6 +12,10 @@ torch.set_printoptions(linewidth=1320, precision=5, profile='long') np.set_printoptions(linewidth=320, formatter={'float_kind': '{:11.5g}'.format}) # format short g, %precision=5 +def float3(x): # format floats to 3 decimals + return float(format(x, '.3f')) + + def init_seeds(seed=0): random.seed(seed) np.random.seed(seed) @@ -49,12 +53,12 @@ def coco_class_weights(): # frequency of each class in coco train2014 return weights -def darknet2coco_class(c): # returns the coco class for each darknet class +def coco80_to_coco91_class(): # returns the coco class for each darknet class # https://tech.amikelive.com/node-718/what-object-categories-labels-are-in-coco-dataset/ a = np.loadtxt('data/coco.names', dtype='str', delimiter='\n') b = np.loadtxt('data/coco_paper.names', dtype='str', delimiter='\n') x = [list(a[i] == b).index(True) + 1 for i in range(80)] # darknet to coco - return x[c] + return x def plot_one_box(x, img, color=None, label=None, line_thickness=None): # Plots one bounding box on image img From 57417e7080f610137121398cca4a9eba8d94cfe2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 26 Feb 2019 15:00:27 +0100 Subject: [PATCH 0447/2595] updates --- test.py | 2 +- utils/gcp.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index f8739866..df5a886b 100644 --- a/test.py +++ b/test.py @@ -75,7 +75,7 @@ def test( for di, d in enumerate(detections): jdict.append({ 'image_id': int(Path(paths[si]).stem.split('_')[-1]), - 'category_id': coco91class(int(d[6])), + 'category_id': coco91class[int(d[6])], 'bbox': [float3(x) for x in box[di]], 'score': float3(d[4] * d[5]) }) diff --git a/utils/gcp.sh b/utils/gcp.sh index 7315c3c2..208871a3 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -7,7 +7,7 @@ bash yolov3/data/get_coco_dataset.sh # Start sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 sudo rm -rf cocoapi && git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 -cd yolov3 && python3 test.py --coco-map +cd yolov3 && python3 test.py --save-json # Resume python3 train.py --resume From 249313be6ce2c58916ad4fc5bce93a0dd10f7997 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 26 Feb 2019 15:11:22 +0100 Subject: [PATCH 0448/2595] updates --- test.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/test.py b/test.py index df5a886b..fa258eef 100644 --- a/test.py +++ b/test.py @@ -146,17 +146,13 @@ def test( from pycocotools.coco import COCO from pycocotools.cocoeval import COCOeval - # initialize COCO ground truth api - cocoGt = COCO('../coco/annotations/instances_val2014.json') - - # initialize COCO detections api - cocoDt = cocoGt.loadRes('results.json') + # https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocoEvalDemo.ipynb + cocoGt = COCO('../coco/annotations/instances_val2014.json') # initialize COCO ground truth api + cocoDt = cocoGt.loadRes('results.json') # initialize COCO detections api cocoEval = COCOeval(cocoGt, cocoDt, 'bbox') cocoEval.params.imgIds = imgIds # [:32] # only evaluate these images - cocoEval.evaluate() - cocoEval.accumulate() - cocoEval.summarize() + cocoEval.evaluate().accumulate().summarize() # Return mAP return mean_mAP, mean_R, mean_P From a6fdc7413b7bedd10bf19248e0838b953c3b3268 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 26 Feb 2019 15:12:21 +0100 Subject: [PATCH 0449/2595] updates --- utils/gcp.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 208871a3..3707f86d 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -3,11 +3,10 @@ # New VM sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 bash yolov3/data/get_coco_dataset.sh +sudo rm -rf cocoapi && git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 # Start -sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 -sudo rm -rf cocoapi && git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 -cd yolov3 && python3 test.py --save-json +python3 train.py # Resume python3 train.py --resume @@ -17,8 +16,9 @@ gsutil cp gs://ultralytics/yolov3.pt yolov3/weights python3 detect.py # Test -sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 -python3 test.py --weights weights/yolov3.weights +sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 +sudo rm -rf cocoapi && git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 +cd yolov3 && python3 test.py --save-json # Test Darknet python3 test.py --img_size 416 --weights ../darknet/backup/yolov3.backup From eb6a4b5b84f177697693a4de4e98ca4c2539cc11 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 26 Feb 2019 15:15:39 +0100 Subject: [PATCH 0450/2595] updates --- test.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test.py b/test.py index fa258eef..163b7092 100644 --- a/test.py +++ b/test.py @@ -152,7 +152,9 @@ def test( cocoEval = COCOeval(cocoGt, cocoDt, 'bbox') cocoEval.params.imgIds = imgIds # [:32] # only evaluate these images - cocoEval.evaluate().accumulate().summarize() + cocoEval.evaluate() + cocoEval.accumulate() + cocoEval.summarize() # Return mAP return mean_mAP, mean_R, mean_P From 9a27339e04fdaa0890c003e9d399c3b0abc44f46 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 Feb 2019 00:04:41 +0100 Subject: [PATCH 0451/2595] updates --- utils/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index ae52c4da..7c4c0c81 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -349,7 +349,8 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): class_prob, class_pred = torch.max(F.softmax(pred[:, 5:], 1), 1) - v = ((pred[:, 4] > conf_thres) & (class_prob > .4)) # TODO examine arbitrary 0.4 thres here + # v = ((pred[:, 4] > conf_thres) & (class_prob > .4)) # TODO examine arbitrary 0.4 thres here + v = pred[:, 4] > conf_thres v = v.nonzero().squeeze() if len(v.shape) == 0: v = v.unsqueeze(0) From 358f34afa8cc2bcc7dbf68135f87aad4fb7c96ea Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 Feb 2019 12:32:25 +0100 Subject: [PATCH 0452/2595] updates --- test.py | 8 +++++--- utils/utils.py | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/test.py b/test.py index 163b7092..a334efcc 100644 --- a/test.py +++ b/test.py @@ -1,5 +1,6 @@ import argparse import json +import time from pathlib import Path from models import * @@ -47,6 +48,7 @@ def test( AP_accum, AP_accum_count = np.zeros(nC), np.zeros(nC) coco91class = coco80_to_coco91_class() for batch_i, (imgs, targets, paths, shapes) in enumerate(dataloader): + t = time.time() output = model(imgs.to(device)) output = non_max_suppression(output, conf_thres=conf_thres, nms_thres=nms_thres) @@ -128,13 +130,13 @@ def test( mean_P = np.mean(mP) # Print image mAP and running mean mAP - print(('%11s%11s' + '%11.3g' * 3) % (seen, dataloader.nF, mean_P, mean_R, mean_mAP)) + print(('%11s%11s' + '%11.3g' * 4 + 's') % + (seen, dataloader.nF, mean_P, mean_R, mean_mAP, time.time() - t)) # Print mAP per class print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP') + '\n\nmAP Per Class:') - classes = load_classes(data_cfg_dict['names']) # Extracts class labels from file - for i, c in enumerate(classes): + for i, c in enumerate(load_classes(data_cfg_dict['names'])): print('%15s: %-.4f' % (c, AP_accum[i] / (AP_accum_count[i] + 1E-16))) # Save JSON diff --git a/utils/utils.py b/utils/utils.py index 7c4c0c81..e4982602 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -374,7 +374,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): if prediction.is_cuda: unique_labels = unique_labels.cuda(prediction.device) - nms_style = 'MERGE' # 'OR' (default), 'AND', 'MERGE' (experimental) + nms_style = 'OR' # 'OR' (default), 'AND', 'MERGE' (experimental) for c in unique_labels: # Get the detections with class c dc = detections[detections[:, -1] == c] From 036e3b3253808f7112ced8969a4703155f6328c1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 Feb 2019 12:51:24 +0100 Subject: [PATCH 0453/2595] updates --- utils/gcp.sh | 2 +- utils/utils.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 3707f86d..93308d61 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -18,7 +18,7 @@ python3 detect.py # Test sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 sudo rm -rf cocoapi && git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 -cd yolov3 && python3 test.py --save-json +cd yolov3 && python3 test.py --save-json --conf-thres 0.005 # Test Darknet python3 test.py --img_size 416 --weights ../darknet/backup/yolov3.backup diff --git a/utils/utils.py b/utils/utils.py index e4982602..69a3541f 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -384,7 +384,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): # Non-maximum suppression det_max = [] - if nms_style == 'OR': # default + if nms_style == 'MERGE': # default while dc.shape[0]: det_max.append(dc[:1]) # save highest conf detection if len(dc) == 1: # Stop if we're at the last detection From 41d55d452b78456138d10ffb59ca6a5fd8b678c9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 Feb 2019 12:52:02 +0100 Subject: [PATCH 0454/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 69a3541f..7c4c0c81 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -374,7 +374,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): if prediction.is_cuda: unique_labels = unique_labels.cuda(prediction.device) - nms_style = 'OR' # 'OR' (default), 'AND', 'MERGE' (experimental) + nms_style = 'MERGE' # 'OR' (default), 'AND', 'MERGE' (experimental) for c in unique_labels: # Get the detections with class c dc = detections[detections[:, -1] == c] @@ -384,7 +384,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): # Non-maximum suppression det_max = [] - if nms_style == 'MERGE': # default + if nms_style == 'OR': # default while dc.shape[0]: det_max.append(dc[:1]) # save highest conf detection if len(dc) == 1: # Stop if we're at the last detection From 324dc6af6e795135ea4e0f32ffb080ca91913977 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 Feb 2019 13:21:39 +0100 Subject: [PATCH 0455/2595] updates --- utils/utils.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 7c4c0c81..1fb30c08 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -53,11 +53,14 @@ def coco_class_weights(): # frequency of each class in coco train2014 return weights -def coco80_to_coco91_class(): # returns the coco class for each darknet class +def coco80_to_coco91_class(): # converts 80-index (val2014) to 91-index (paper) # https://tech.amikelive.com/node-718/what-object-categories-labels-are-in-coco-dataset/ - a = np.loadtxt('data/coco.names', dtype='str', delimiter='\n') - b = np.loadtxt('data/coco_paper.names', dtype='str', delimiter='\n') - x = [list(a[i] == b).index(True) + 1 for i in range(80)] # darknet to coco + # a = np.loadtxt('data/coco.names', dtype='str', delimiter='\n') + # b = np.loadtxt('data/coco_paper.names', dtype='str', delimiter='\n') + # x = [list(a[i] == b).index(True) + 1 for i in range(80)] # darknet to coco + x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 67, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 90] return x From 70339798c5eb20e4798c16e44bd0a13dfd2d704f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 Feb 2019 14:07:04 +0100 Subject: [PATCH 0456/2595] updates --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 919611ac..14ac2b04 100755 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ Python 3.7 or later with the following `pip3 install -U -r requirements.txt` pac Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. Default training settings produce loss plots below, with **training speed of 0.6 s/batch on a 1080 Ti (15 epochs/day)** or 0.45 s/batch on a 2080 Ti. +`from utils import utils; utils.plot_results()` ![Alt](https://user-images.githubusercontent.com/26833433/49822374-3b27bf00-fd7d-11e8-9180-f0ac9fe2fdb4.png "coco training loss") ## Image Augmentation From e094bb14ba8dc46e2fa454fd17cbb6f6818736bb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 Feb 2019 14:19:57 +0100 Subject: [PATCH 0457/2595] updates --- utils/utils.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 1fb30c08..89436639 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -1,6 +1,8 @@ +import glob import random import cv2 +import matplotlib.pyplot as plt import numpy as np import torch import torch.nn.functional as F @@ -428,7 +430,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): def strip_optimizer_from_checkpoint(filename='weights/best.pt'): # Strip optimizer from *.pt files for lighter files (reduced by 2/3 size) - import torch + a = torch.load(filename, map_location='cpu') a['optimizer'] = [] torch.save(a, filename.replace('.pt', '_lite.pt')) @@ -436,7 +438,6 @@ def strip_optimizer_from_checkpoint(filename='weights/best.pt'): def coco_class_count(path='../coco/labels/train2014/'): # histogram of occurrences per class - import glob nC = 80 # number classes x = np.zeros(nC, dtype='int32') @@ -449,7 +450,6 @@ def coco_class_count(path='../coco/labels/train2014/'): def coco_only_people(path='../coco/labels/val2014/'): # find images with only people - import glob files = sorted(glob.glob('%s/*.*' % path)) for i, file in enumerate(files): @@ -460,10 +460,7 @@ def coco_only_people(path='../coco/labels/val2014/'): def plot_results(): # Plot YOLO training results file 'results.txt' - import glob - import matplotlib.pyplot as plt - import numpy as np - # import os; os.system('rm -rf results.txt && wget https://storage.googleapis.com/ultralytics/results_v1_0.txt') + # import os; os.system('rm -rf results.txt && wget https://storage.googleapis.com/ultralytics/results_v1_0.txt' plt.figure(figsize=(14, 7)) s = ['X + Y', 'Width + Height', 'Confidence', 'Classification', 'Total Loss', 'mAP', 'Recall', 'Precision'] From 7b2e442ba26f27b64da99ed97c1a150be59cfeb7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 Feb 2019 14:38:57 +0100 Subject: [PATCH 0458/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 14ac2b04..1703ab1d 100755 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ Python 3.7 or later with the following `pip3 install -U -r requirements.txt` pac Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. Default training settings produce loss plots below, with **training speed of 0.6 s/batch on a 1080 Ti (15 epochs/day)** or 0.45 s/batch on a 2080 Ti. `from utils import utils; utils.plot_results()` -![Alt](https://user-images.githubusercontent.com/26833433/49822374-3b27bf00-fd7d-11e8-9180-f0ac9fe2fdb4.png "coco training loss") +![Alt](https://user-images.githubusercontent.com/26833433/53494085-3251aa00-3a9d-11e9-8af7-8c08cf40d70b.png "train.py results") ## Image Augmentation From bf62d1d67e98171bf75369e3797e3b0073604206 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 Feb 2019 14:40:41 +0100 Subject: [PATCH 0459/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1703ab1d..a25741a7 100755 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Python 3.7 or later with the following `pip3 install -U -r requirements.txt` pac **Resume Training:** Run `train.py --resume` to resume training from the most recently saved checkpoint `weights/latest.pt`. -Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. Default training settings produce loss plots below, with **training speed of 0.6 s/batch on a 1080 Ti (15 epochs/day)** or 0.45 s/batch on a 2080 Ti. +Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. Default training settings produce loss plots below, with **training speed of 0.6 s/batch on a 1080 Ti (18 epochs/day)** or 0.45 s/batch on a 2080 Ti. `from utils import utils; utils.plot_results()` ![Alt](https://user-images.githubusercontent.com/26833433/53494085-3251aa00-3a9d-11e9-8af7-8c08cf40d70b.png "train.py results") From 303eef1d3d04dbaca4ffadb45a9e4491a254f36e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 Feb 2019 14:45:39 +0100 Subject: [PATCH 0460/2595] updates --- utils/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 89436639..afbdfc86 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -460,17 +460,17 @@ def coco_only_people(path='../coco/labels/val2014/'): def plot_results(): # Plot YOLO training results file 'results.txt' - # import os; os.system('rm -rf results.txt && wget https://storage.googleapis.com/ultralytics/results_v1_0.txt' + # import os; os.system('rm -rf results.txt && wget https://storage.googleapis.com/ultralytics/yolov3/results_v1.txt') plt.figure(figsize=(14, 7)) s = ['X + Y', 'Width + Height', 'Confidence', 'Classification', 'Total Loss', 'mAP', 'Recall', 'Precision'] files = sorted(glob.glob('results*.txt')) for f in files: results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 9, 10, 11]).T # column 11 is mAP - n = results.shape[1] + x = range(1, results.shape[1]) for i in range(8): plt.subplot(2, 4, i + 1) - plt.plot(range(1, n), results[i, 1:], marker='.', label=f) + plt.plot(x, results[i, x], marker='.', label=f) plt.title(s[i]) if i == 0: plt.legend() From 55c6efbb39e354630642d59ec9a674b97b06392b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 Feb 2019 14:46:28 +0100 Subject: [PATCH 0461/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index afbdfc86..8d2cf95b 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -460,7 +460,7 @@ def coco_only_people(path='../coco/labels/val2014/'): def plot_results(): # Plot YOLO training results file 'results.txt' - # import os; os.system('rm -rf results.txt && wget https://storage.googleapis.com/ultralytics/yolov3/results_v1.txt') + # import os; os.system('wget https://storage.googleapis.com/ultralytics/yolov3/results_v1.txt') plt.figure(figsize=(14, 7)) s = ['X + Y', 'Width + Height', 'Confidence', 'Classification', 'Total Loss', 'mAP', 'Recall', 'Precision'] From 545f756090e142412e40589c8c30ad58baade744 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 28 Feb 2019 15:40:30 +0100 Subject: [PATCH 0462/2595] updates --- utils/utils.py | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 8d2cf95b..53defd08 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -236,17 +236,17 @@ def build_targets(target, anchor_wh, nA, nC, nG): returns nT, nCorrect, tx, ty, tw, th, tconf, tcls """ nB = len(target) # number of images in batch - nT = [len(x) for x in target] + txy = torch.zeros(nB, nA, nG, nG, 2) # batch size, anchors, grid size twh = torch.zeros(nB, nA, nG, nG, 2) tconf = torch.ByteTensor(nB, nA, nG, nG).fill_(0) tcls = torch.ByteTensor(nB, nA, nG, nG, nC).fill_(0) # nC = number of classes for b in range(nB): - nTb = nT[b] # number of targets + t = target[b] + nTb = len(t) # number of targets if nTb == 0: continue - t = target[b] gxy, gwh = t[:, 1:3] * nG, t[:, 3:5] * nG @@ -267,14 +267,13 @@ def build_targets(target, anchor_wh, nA, nC, nG): iou_order = torch.argsort(-iou_best) # best to worst # Unique anchor selection - u = torch.cat((gi, gj, a), 0).view((3, -1)) - # u = torch.stack((gi, gj, a),0) - _, first_unique = np.unique(u[:, iou_order], axis=1, return_index=True) # first unique indices - # _, first_unique = torch.unique(u[:, iou_order], dim=1, return_inverse=True) # different than numpy? + u = torch.stack((gi, gj, a), 0)[:, iou_order] + # _, first_unique = np.unique(u, axis=1, return_index=True) # first unique indices + first_unique = return_torch_unique_index(u, torch.unique(u, dim=1)) # torch alternative i = iou_order[first_unique] # best anchor must share significant commonality (iou) with target - i = i[iou_best[i] > 0.10] # TODO: arbitrary threshold is problematic + i = i[iou_best[i] > 0.10] # TODO: examine arbitrary threshold if len(i) == 0: continue @@ -428,6 +427,15 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): return output +def return_torch_unique_index(u, uv): + n = uv.shape[1] # number of columns + first_unique = torch.zeros(n, device=u.device).long() + for j in range(n): + first_unique[j] = (uv[:, j:j + 1] == u).all(0).nonzero()[0] + + return first_unique + + def strip_optimizer_from_checkpoint(filename='weights/best.pt'): # Strip optimizer from *.pt files for lighter files (reduced by 2/3 size) From 66211d11472147e1ab322b9207804a4ec239ff1b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 4 Mar 2019 15:41:22 +0100 Subject: [PATCH 0463/2595] updates --- utils/torch_utils.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index a45be2c1..c1629f3a 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -15,10 +15,10 @@ def select_device(force_cpu=False): cuda = torch.cuda.is_available() device = torch.device('cuda:0' if cuda else 'cpu') - if torch.cuda.device_count() > 1: - print('WARNING Using GPU0 Only: https://github.com/ultralytics/yolov3/issues/21') - torch.cuda.set_device(0) # OPTIONAL: Set your GPU if multiple available - # print('Using ', torch.cuda.device_count(), ' GPUs') + # if torch.cuda.device_count() > 1: + # print('WARNING Using GPU0 Only: https://github.com/ultralytics/yolov3/issues/21') + # torch.cuda.set_device(0) # OPTIONAL: Set your GPU if multiple available + # # print('Using ', torch.cuda.device_count(), ' GPUs') print('Using %s %s\n' % (device.type, torch.cuda.get_device_properties(0) if cuda else '')) return device From 65ed0d11222411e69ea02aaf89e42fa994df9f88 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 4 Mar 2019 15:46:25 +0100 Subject: [PATCH 0464/2595] updates --- train.py | 4 ++-- utils/torch_utils.py | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index 86253e54..59ac48bc 100644 --- a/train.py +++ b/train.py @@ -75,8 +75,8 @@ def train( load_darknet_weights(model, weights + 'yolov3-tiny.conv.15') cutoff = 15 - # if torch.cuda.device_count() > 1: - # model = nn.DataParallel(model) + if torch.cuda.device_count() > 1: + model = nn.DataParallel(model) model.to(device).train() # Set optimizer diff --git a/utils/torch_utils.py b/utils/torch_utils.py index c1629f3a..dc7a4e69 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -15,8 +15,9 @@ def select_device(force_cpu=False): cuda = torch.cuda.is_available() device = torch.device('cuda:0' if cuda else 'cpu') - # if torch.cuda.device_count() > 1: - # print('WARNING Using GPU0 Only: https://github.com/ultralytics/yolov3/issues/21') + if torch.cuda.device_count() > 1: + print('Found %g GPUs' % torch.cuda.device_count()) + print('WARNING Using GPU0 Only: https://github.com/ultralytics/yolov3/issues/21') # torch.cuda.set_device(0) # OPTIONAL: Set your GPU if multiple available # # print('Using ', torch.cuda.device_count(), ' GPUs') From 8069fc452a2c8e1b4f41067670d77f7ee6ef0e2b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 4 Mar 2019 15:52:18 +0100 Subject: [PATCH 0465/2595] updates --- models.py | 2 +- utils/utils.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/models.py b/models.py index 1ecfdc18..468f1ba7 100755 --- a/models.py +++ b/models.py @@ -150,7 +150,7 @@ class YOLOLayer(nn.Module): p_conf = p[..., 4] # Conf p_cls = p[..., 5:] # Class - txy, twh, mask, tcls = build_targets(targets, self.anchor_vec, self.nA, self.nC, nG) + txy, twh, mask, tcls = build_targets(targets, self.anchor_vec, self.nA, self.nC, nG.cpu()) tcls = tcls[mask] if xy.is_cuda: diff --git a/utils/utils.py b/utils/utils.py index 53defd08..05c68357 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -231,7 +231,7 @@ def bbox_iou(box1, box2, x1y1x2y2=True): return inter_area / (b1_area + b2_area - inter_area + 1e-16) -def build_targets(target, anchor_wh, nA, nC, nG): +def build_targets(target, anchor_vec, nA, nC, nG): """ returns nT, nCorrect, tx, ty, tw, th, tconf, tcls """ @@ -255,7 +255,7 @@ def build_targets(target, anchor_wh, nA, nC, nG): # iou of targets-anchors (using wh only) box1 = gwh - box2 = anchor_wh.unsqueeze(1) + box2 = anchor_vec.unsqueeze(1) inter_area = torch.min(box1, box2).prod(2) iou = inter_area / (box1.prod(1) + box2.prod(2) - inter_area + 1e-16) @@ -290,8 +290,8 @@ def build_targets(target, anchor_wh, nA, nC, nG): txy[b, a, gj, gi] = gxy - gxy.floor() # Width and height - twh[b, a, gj, gi] = torch.log(gwh / anchor_wh[a]) # yolo method - # twh[b, a, gj, gi] = torch.sqrt(gwh / anchor_wh[a]) / 2 # power method + twh[b, a, gj, gi] = torch.log(gwh / anchor_vec[a]) # yolo method + # twh[b, a, gj, gi] = torch.sqrt(gwh / anchor_vec[a]) / 2 # power method # One-hot encoding of label tcls[b, a, gj, gi, tc] = 1 From 5e0cce771eb26ac85c44b8283835d17ea6c183ee Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 4 Mar 2019 15:52:51 +0100 Subject: [PATCH 0466/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 468f1ba7..1ecfdc18 100755 --- a/models.py +++ b/models.py @@ -150,7 +150,7 @@ class YOLOLayer(nn.Module): p_conf = p[..., 4] # Conf p_cls = p[..., 5:] # Class - txy, twh, mask, tcls = build_targets(targets, self.anchor_vec, self.nA, self.nC, nG.cpu()) + txy, twh, mask, tcls = build_targets(targets, self.anchor_vec, self.nA, self.nC, nG) tcls = tcls[mask] if xy.is_cuda: From 0b3a17362cccf95a92a7e93a0d8fa8bae660802b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 4 Mar 2019 15:56:58 +0100 Subject: [PATCH 0467/2595] updates --- models.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/models.py b/models.py index 1ecfdc18..a323e87e 100755 --- a/models.py +++ b/models.py @@ -150,6 +150,8 @@ class YOLOLayer(nn.Module): p_conf = p[..., 4] # Conf p_cls = p[..., 5:] # Class + print(self.anchor_vec.device, self.anchor_vec, self.nA, self.nC, nG) + txy, twh, mask, tcls = build_targets(targets, self.anchor_vec, self.nA, self.nC, nG) tcls = tcls[mask] From 175e231c55597866575b7673383d2b777e0e12a5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 4 Mar 2019 15:59:11 +0100 Subject: [PATCH 0468/2595] updates --- models.py | 2 -- utils/utils.py | 3 +++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index a323e87e..1ecfdc18 100755 --- a/models.py +++ b/models.py @@ -150,8 +150,6 @@ class YOLOLayer(nn.Module): p_conf = p[..., 4] # Conf p_cls = p[..., 5:] # Class - print(self.anchor_vec.device, self.anchor_vec, self.nA, self.nC, nG) - txy, twh, mask, tcls = build_targets(targets, self.anchor_vec, self.nA, self.nC, nG) tcls = tcls[mask] diff --git a/utils/utils.py b/utils/utils.py index 05c68357..8907b626 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -256,6 +256,9 @@ def build_targets(target, anchor_vec, nA, nC, nG): # iou of targets-anchors (using wh only) box1 = gwh box2 = anchor_vec.unsqueeze(1) + + print(box1.device,box2.device) + inter_area = torch.min(box1, box2).prod(2) iou = inter_area / (box1.prod(1) + box2.prod(2) - inter_area + 1e-16) From 5ca987eaed05f6bef18cc658333dbb0c3e4800aa Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 4 Mar 2019 16:01:23 +0100 Subject: [PATCH 0469/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 8907b626..2e45ddb4 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -243,7 +243,7 @@ def build_targets(target, anchor_vec, nA, nC, nG): tcls = torch.ByteTensor(nB, nA, nG, nG, nC).fill_(0) # nC = number of classes for b in range(nB): - t = target[b] + t = target[b].cpu() nTb = len(t) # number of targets if nTb == 0: continue @@ -257,7 +257,7 @@ def build_targets(target, anchor_vec, nA, nC, nG): box1 = gwh box2 = anchor_vec.unsqueeze(1) - print(box1.device,box2.device) + print(box1.device, box2.device) inter_area = torch.min(box1, box2).prod(2) iou = inter_area / (box1.prod(1) + box2.prod(2) - inter_area + 1e-16) From 5fcdcefec343520dd42988cb6f0f7a75859bea42 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 4 Mar 2019 16:06:13 +0100 Subject: [PATCH 0470/2595] updates --- models.py | 1 + 1 file changed, 1 insertion(+) diff --git a/models.py b/models.py index 1ecfdc18..f3d57e68 100755 --- a/models.py +++ b/models.py @@ -161,6 +161,7 @@ class YOLOLayer(nn.Module): nM = mask.sum().float() # number of anchors (assigned to targets) k = 1 # nM / bs if nM > 0: + print(xy.shape, txy.shape, mask.shape) lxy = k * MSELoss(xy[mask], txy[mask]) lwh = k * MSELoss(wh[mask], twh[mask]) From dc9f2ef6ba7e4907a10a191aea14257587f26ae7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 4 Mar 2019 16:11:37 +0100 Subject: [PATCH 0471/2595] updates --- models.py | 7 +++++-- utils/utils.py | 8 +++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/models.py b/models.py index f3d57e68..8f7f79d6 100755 --- a/models.py +++ b/models.py @@ -150,10 +150,13 @@ class YOLOLayer(nn.Module): p_conf = p[..., 4] # Conf p_cls = p[..., 5:] # Class - txy, twh, mask, tcls = build_targets(targets, self.anchor_vec, self.nA, self.nC, nG) + if p.is_cuda: + txy, twh, mask, tcls = build_targets(targets, self.anchor_vec.cuda(), self.nA, self.nC, nG) + else: + txy, twh, mask, tcls = build_targets(targets, self.anchor_vec, self.nA, self.nC, nG) tcls = tcls[mask] - if xy.is_cuda: + if p.is_cuda: txy, twh, mask, tcls = txy.cuda(), twh.cuda(), mask.cuda(), tcls.cuda() # Compute losses diff --git a/utils/utils.py b/utils/utils.py index 2e45ddb4..e78a3e62 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -242,8 +242,14 @@ def build_targets(target, anchor_vec, nA, nC, nG): tconf = torch.ByteTensor(nB, nA, nG, nG).fill_(0) tcls = torch.ByteTensor(nB, nA, nG, nG, nC).fill_(0) # nC = number of classes + if anchor_vec.is_cuda(): + txy = txy.cuda() + twh = twh.cuda() + tconf = tconf.cuda() + tcls = tcls.cuda() + for b in range(nB): - t = target[b].cpu() + t = target[b] nTb = len(t) # number of targets if nTb == 0: continue From 3f21d5bb2e71fde69b0b288514db80f0e9505e33 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 4 Mar 2019 16:13:31 +0100 Subject: [PATCH 0472/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index e78a3e62..c214fd2d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -242,7 +242,7 @@ def build_targets(target, anchor_vec, nA, nC, nG): tconf = torch.ByteTensor(nB, nA, nG, nG).fill_(0) tcls = torch.ByteTensor(nB, nA, nG, nG, nC).fill_(0) # nC = number of classes - if anchor_vec.is_cuda(): + if anchor_vec.is_cuda: txy = txy.cuda() twh = twh.cuda() tconf = tconf.cuda() From 3bea4da6040189f794f2c6cb41083151f444d61c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 4 Mar 2019 17:34:53 +0100 Subject: [PATCH 0473/2595] updates --- models.py | 6 +----- train.py | 4 ++-- utils/torch_utils.py | 2 +- utils/utils.py | 8 -------- 4 files changed, 4 insertions(+), 16 deletions(-) diff --git a/models.py b/models.py index 8f7f79d6..ded1ae71 100755 --- a/models.py +++ b/models.py @@ -150,10 +150,7 @@ class YOLOLayer(nn.Module): p_conf = p[..., 4] # Conf p_cls = p[..., 5:] # Class - if p.is_cuda: - txy, twh, mask, tcls = build_targets(targets, self.anchor_vec.cuda(), self.nA, self.nC, nG) - else: - txy, twh, mask, tcls = build_targets(targets, self.anchor_vec, self.nA, self.nC, nG) + txy, twh, mask, tcls = build_targets(targets, self.anchor_vec, self.nA, self.nC, nG) tcls = tcls[mask] if p.is_cuda: @@ -164,7 +161,6 @@ class YOLOLayer(nn.Module): nM = mask.sum().float() # number of anchors (assigned to targets) k = 1 # nM / bs if nM > 0: - print(xy.shape, txy.shape, mask.shape) lxy = k * MSELoss(xy[mask], txy[mask]) lwh = k * MSELoss(wh[mask], twh[mask]) diff --git a/train.py b/train.py index 59ac48bc..57b5d44b 100644 --- a/train.py +++ b/train.py @@ -48,8 +48,8 @@ def train( # Load weights to resume from model.load_state_dict(checkpoint['model']) - # if torch.cuda.device_count() > 1: - # model = nn.DataParallel(model) + if torch.cuda.device_count() > 1: + model = nn.DataParallel(model) model.to(device).train() # Transfer learning (train only YOLO layers) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index dc7a4e69..504aeba2 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -17,7 +17,7 @@ def select_device(force_cpu=False): if torch.cuda.device_count() > 1: print('Found %g GPUs' % torch.cuda.device_count()) - print('WARNING Using GPU0 Only: https://github.com/ultralytics/yolov3/issues/21') + print('WARNING Multi-GPU Issue: https://github.com/ultralytics/yolov3/issues/21') # torch.cuda.set_device(0) # OPTIONAL: Set your GPU if multiple available # # print('Using ', torch.cuda.device_count(), ' GPUs') diff --git a/utils/utils.py b/utils/utils.py index c214fd2d..a96467bd 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -242,12 +242,6 @@ def build_targets(target, anchor_vec, nA, nC, nG): tconf = torch.ByteTensor(nB, nA, nG, nG).fill_(0) tcls = torch.ByteTensor(nB, nA, nG, nG, nC).fill_(0) # nC = number of classes - if anchor_vec.is_cuda: - txy = txy.cuda() - twh = twh.cuda() - tconf = tconf.cuda() - tcls = tcls.cuda() - for b in range(nB): t = target[b] nTb = len(t) # number of targets @@ -263,8 +257,6 @@ def build_targets(target, anchor_vec, nA, nC, nG): box1 = gwh box2 = anchor_vec.unsqueeze(1) - print(box1.device, box2.device) - inter_area = torch.min(box1, box2).prod(2) iou = inter_area / (box1.prod(1) + box2.prod(2) - inter_area + 1e-16) From 54b62f5302b781dce7192eee1f8ba4533fe3ef75 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 4 Mar 2019 17:36:41 +0100 Subject: [PATCH 0474/2595] updates --- utils/torch_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 504aeba2..f98da7fb 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -18,7 +18,7 @@ def select_device(force_cpu=False): if torch.cuda.device_count() > 1: print('Found %g GPUs' % torch.cuda.device_count()) print('WARNING Multi-GPU Issue: https://github.com/ultralytics/yolov3/issues/21') - # torch.cuda.set_device(0) # OPTIONAL: Set your GPU if multiple available + torch.cuda.set_device(0) # OPTIONAL: Set your GPU if multiple available # # print('Using ', torch.cuda.device_count(), ' GPUs') print('Using %s %s\n' % (device.type, torch.cuda.get_device_properties(0) if cuda else '')) From e5dc942feef32c6286a5d3d2169e389d74bfbcc4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 4 Mar 2019 17:38:38 +0100 Subject: [PATCH 0475/2595] updates --- train.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index 57b5d44b..099730f3 100644 --- a/train.py +++ b/train.py @@ -48,8 +48,8 @@ def train( # Load weights to resume from model.load_state_dict(checkpoint['model']) - if torch.cuda.device_count() > 1: - model = nn.DataParallel(model) + # if torch.cuda.device_count() > 1: + # model = nn.DataParallel(model) model.to(device).train() # Transfer learning (train only YOLO layers) @@ -75,8 +75,8 @@ def train( load_darknet_weights(model, weights + 'yolov3-tiny.conv.15') cutoff = 15 - if torch.cuda.device_count() > 1: - model = nn.DataParallel(model) + # if torch.cuda.device_count() > 1: + # model = nn.DataParallel(model) model.to(device).train() # Set optimizer From 3e6800fbc9526b0de0959c36bd0b89fbfb823ff6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 5 Mar 2019 16:13:40 +0100 Subject: [PATCH 0476/2595] updates --- utils/datasets.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index e274fab8..3a0d6bd3 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -37,7 +37,7 @@ class LoadImages: # for inference # Read image img0 = cv2.imread(img_path) # BGR - assert img0 is not None, 'Failed to load ' + img_path + assert img0 is not None, 'File Not Found ' + img_path # Padded resize img, _, _, _ = letterbox(img0, height=self.height) @@ -106,7 +106,7 @@ class LoadImagesAndLabels: # for training self.multi_scale = multi_scale self.augment = augment - assert self.nB > 0, 'No images found in %s' % path + assert self.nF > 0, 'No images found in %s' % path def __iter__(self): self.count = -1 @@ -134,8 +134,7 @@ class LoadImagesAndLabels: # for training label_path = self.label_files[self.shuffled_vector[files_index]] img = cv2.imread(img_path) # BGR - if img is None: - continue + assert img is not None, 'File Not Found ' + img_path augment_hsv = True if self.augment and augment_hsv: From 2c2d7bc63b9e446626f305e1a8a9bd6df1746035 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 5 Mar 2019 16:23:33 +0100 Subject: [PATCH 0477/2595] Update README.md --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index a25741a7..a9f21177 100755 --- a/README.md +++ b/README.md @@ -26,6 +26,13 @@ Python 3.7 or later with the following `pip3 install -U -r requirements.txt` pac - `torch >= 1.0.0` - `opencv-python` +# Tutorials + +* [Transfer Learning](https://github.com/ultralytics/yolov3/wiki/Example:-Transfer-Learning) +* [Train Single Image](https://github.com/ultralytics/yolov3/wiki/Example:-Train-Single-Image) +* [Train Single Class](https://github.com/ultralytics/yolov3/wiki/Example:-Train-Single-Class) +* [Train Custom Data](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) + # Training **Start Training:** Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. Training runs about 1 hour per COCO epoch on a 1080 Ti. From a2ad00d6fccbaa3ce3026abef8136fd9f1a607e1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 5 Mar 2019 17:10:34 +0100 Subject: [PATCH 0478/2595] updates --- train.py | 7 ++++--- utils/utils.py | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index 099730f3..e12a0937 100644 --- a/train.py +++ b/train.py @@ -85,8 +85,9 @@ def train( # Set scheduler # scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[54, 61], gamma=0.1) - model_info(model) t0 = time.time() + model_info(model) + n_burnin = min(dataloader.nB / 5, 1000) # number of burn-in batches for epoch in range(epochs): epoch += start_epoch @@ -118,8 +119,8 @@ def train( continue # SGD burn-in - if (epoch == 0) & (i <= 1000): - lr = lr0 * (i / 1000) ** 4 + if (epoch == 0) & (i <= n_burnin): + lr = lr0 * (i / n_burnin) ** 4 for g in optimizer.param_groups: g['lr'] = lr diff --git a/utils/utils.py b/utils/utils.py index a96467bd..ebbea4d3 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -379,7 +379,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): if prediction.is_cuda: unique_labels = unique_labels.cuda(prediction.device) - nms_style = 'MERGE' # 'OR' (default), 'AND', 'MERGE' (experimental) + nms_style = 'OR' # 'OR' (default), 'AND', 'MERGE' (experimental) for c in unique_labels: # Get the detections with class c dc = detections[detections[:, -1] == c] From 6fb14fc903fcea68239541a3de0fca5e6dc036e7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 5 Mar 2019 17:14:40 +0100 Subject: [PATCH 0479/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index e12a0937..3fd6972f 100644 --- a/train.py +++ b/train.py @@ -87,7 +87,7 @@ def train( t0 = time.time() model_info(model) - n_burnin = min(dataloader.nB / 5, 1000) # number of burn-in batches + n_burnin = min(round(dataloader.nB / 5), 1000) # number of burn-in batches for epoch in range(epochs): epoch += start_epoch From 473eb8d0c99fa5a2aa5bfe43332b316761d5e49b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 5 Mar 2019 18:43:51 +0100 Subject: [PATCH 0480/2595] Update models.py --- models.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/models.py b/models.py index ded1ae71..a2db26e9 100755 --- a/models.py +++ b/models.py @@ -265,6 +265,11 @@ class Darknet(nn.Module): return sum(output) if is_training else torch.cat(output, 1) +def get_yolo_layers(model): + a = [module_def['type'] == 'yolo' for module_def in model.module_defs] + return [i for i, x in enumerate(a) if x] # [82, 94, 106] for yolov3 + + def create_grids(self, img_size, nG): self.stride = img_size / nG From ff9d34301934b17f0c5b3589a684068b3db15bef Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 7 Mar 2019 13:28:54 +0100 Subject: [PATCH 0481/2595] Update train.py --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 3fd6972f..a0dd3222 100644 --- a/train.py +++ b/train.py @@ -87,7 +87,7 @@ def train( t0 = time.time() model_info(model) - n_burnin = min(round(dataloader.nB / 5), 1000) # number of burn-in batches + n_burnin = min(round(dataloader.nB / 5 + 1), 1000) # number of burn-in batches for epoch in range(epochs): epoch += start_epoch From bc0f30933a0c905b68dc1f9e88e94ef56c5050ff Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 7 Mar 2019 17:16:38 +0100 Subject: [PATCH 0482/2595] updates --- train.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index a0dd3222..f53ddf60 100644 --- a/train.py +++ b/train.py @@ -85,6 +85,7 @@ def train( # Set scheduler # scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[54, 61], gamma=0.1) + # Start training t0 = time.time() model_info(model) n_burnin = min(round(dataloader.nB / 5 + 1), 1000) # number of burn-in batches @@ -124,11 +125,13 @@ def train( for g in optimizer.param_groups: g['lr'] = lr - # Compute loss, compute gradient, update parameters + # Compute loss loss = model(imgs.to(device), targets, var=var) + + # Compute gradient loss.backward() - # accumulate gradient for x batches before optimizing + # Accumulate gradient for x batches before optimizing if ((i + 1) % accumulated_batches == 0) or (i == len(dataloader) - 1): optimizer.step() optimizer.zero_grad() From c719792d6bc54069f43ec9a23762899432bad95d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 8 Mar 2019 13:14:55 +0100 Subject: [PATCH 0483/2595] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index a9f21177..9c7a1bf5 100755 --- a/README.md +++ b/README.md @@ -11,8 +11,7 @@ # Introduction -This directory contains python software and an iOS App developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information on Ultralytics projects please visit: -https://www.ultralytics.com. +This directory contains python software and an iOS App developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information please visit https://www.ultralytics.com. # Description From c1c09eb3ccf18c74ddf0c4217ab306e0a60c0775 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 10 Mar 2019 15:03:17 +0100 Subject: [PATCH 0484/2595] Update train.py --- train.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index f53ddf60..6b7b6181 100644 --- a/train.py +++ b/train.py @@ -151,9 +151,8 @@ def train( print(s) # Update best loss - loss_per_target = rloss['loss'] / rloss['nT'] - if loss_per_target < best_loss: - best_loss = loss_per_target + if rloss['loss'] < best_loss: + best_loss = rloss['loss'] # Save latest checkpoint checkpoint = {'epoch': epoch, @@ -163,7 +162,7 @@ def train( torch.save(checkpoint, latest) # Save best checkpoint - if best_loss == loss_per_target: + if best_loss == rloss['loss']: os.system('cp ' + latest + ' ' + best) # Save backup weights every 5 epochs (optional) From 003de1917ec6135b70ad08a1ecba0a1c6ea7ca8b Mon Sep 17 00:00:00 2001 From: Daniel Suess Date: Wed, 13 Mar 2019 12:50:13 +1100 Subject: [PATCH 0485/2595] Fix shape-mismatch in ONNX export --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index a2db26e9..3d3acad3 100755 --- a/models.py +++ b/models.py @@ -190,7 +190,7 @@ class YOLOLayer(nn.Module): # return torch.cat((xy / nG, wh, p_conf, p_cls), 1).t() p = p.view(1, -1, 85) - xy = xy + grid_xy # x, y + xy = xy.view(bs, self.nA * nG * nG, 2) + grid_xy # x, y wh = torch.exp(p[..., 2:4]) * anchor_wh # width, height p_conf = torch.sigmoid(p[..., 4:5]) # Conf p_cls = p[..., 5:85] From 10182ca39d1ebc6b1f36994c7c495ae9d38e3fb6 Mon Sep 17 00:00:00 2001 From: Daniel Suess Date: Wed, 13 Mar 2019 12:51:05 +1100 Subject: [PATCH 0486/2595] Get rid of hardcoded values of 85 --- models.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/models.py b/models.py index 3d3acad3..c72c10a4 100755 --- a/models.py +++ b/models.py @@ -189,11 +189,11 @@ class YOLOLayer(nn.Module): # p_cls = F.softmax(p[:, 5:85], 1) * p_conf # SSD-like conf # return torch.cat((xy / nG, wh, p_conf, p_cls), 1).t() - p = p.view(1, -1, 85) + p = p.view(1, -1, 5 + self.nC) xy = xy.view(bs, self.nA * nG * nG, 2) + grid_xy # x, y wh = torch.exp(p[..., 2:4]) * anchor_wh # width, height p_conf = torch.sigmoid(p[..., 4:5]) # Conf - p_cls = p[..., 5:85] + p_cls = p[..., 5:5 + self.nC] # Broadcasting only supported on first dimension in CoreML. See onnx-coreml/_operators.py # p_cls = F.softmax(p_cls, 2) * p_conf # SSD-like conf p_cls = torch.exp(p_cls).permute((2, 1, 0)) @@ -260,7 +260,7 @@ class Darknet(nn.Module): if ONNX_EXPORT: output = torch.cat(output, 1) # merge the 3 layers 85 x (507, 2028, 8112) to 85 x 10647 - return output[5:85].t(), output[:4].t() # ONNX scores, boxes + return output[5:].t(), output[:4].t() # ONNX scores, boxes return sum(output) if is_training else torch.cat(output, 1) From 2df8d7e9f6fd3a3e0233029bf39d4db66807a229 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 15 Mar 2019 20:40:37 +0200 Subject: [PATCH 0487/2595] nms speedup --- utils/utils.py | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index ebbea4d3..8e54f7cb 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -203,19 +203,22 @@ def compute_ap(recall, precision): def bbox_iou(box1, box2, x1y1x2y2=True): + box1 = box1.t() + box2 = box2.t() """ Returns the IoU of two bounding boxes """ if x1y1x2y2: # Get the coordinates of bounding boxes - b1_x1, b1_y1, b1_x2, b1_y2 = box1[:, 0], box1[:, 1], box1[:, 2], box1[:, 3] - b2_x1, b2_y1, b2_x2, b2_y2 = box2[:, 0], box2[:, 1], box2[:, 2], box2[:, 3] + b1_x1, b1_y1, b1_x2, b1_y2 = box1[0], box1[1], box1[2], box1[3] + b2_x1, b2_y1, b2_x2, b2_y2 = box2[0], box2[1], box2[2], box2[3] else: + # x1, y1, w1, h1 = box1 # Transform from center and width to exact coordinates - b1_x1, b1_x2 = box1[:, 0] - box1[:, 2] / 2, box1[:, 0] + box1[:, 2] / 2 - b1_y1, b1_y2 = box1[:, 1] - box1[:, 3] / 2, box1[:, 1] + box1[:, 3] / 2 - b2_x1, b2_x2 = box2[:, 0] - box2[:, 2] / 2, box2[:, 0] + box2[:, 2] / 2 - b2_y1, b2_y2 = box2[:, 1] - box2[:, 3] / 2, box2[:, 1] + box2[:, 3] / 2 + b1_x1, b1_x2 = box1[0] - box1[2] / 2, box1[0] + box1[2] / 2 + b1_y1, b1_y2 = box1[1] - box1[3] / 2, box1[1] + box1[3] / 2 + b2_x1, b2_x2 = box2[0] - box2[2] / 2, box2[0] + box2[2] / 2 + b2_y1, b2_y2 = box2[1] - box2[3] / 2, box2[1] + box2[3] / 2 # get the coordinates of the intersection rectangle inter_rect_x1 = torch.max(b1_x1, b2_x1) @@ -353,8 +356,6 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): # multivariate_normal.pdf(x, mean=mat['class_mu'][c, :2], cov=mat['class_cov'][c, :2, :2]) class_prob, class_pred = torch.max(F.softmax(pred[:, 5:], 1), 1) - - # v = ((pred[:, 4] > conf_thres) & (class_prob > .4)) # TODO examine arbitrary 0.4 thres here v = pred[:, 4] > conf_thres v = v.nonzero().squeeze() if len(v.shape) == 0: @@ -389,13 +390,19 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): # Non-maximum suppression det_max = [] + ind = list(range(len(dc))) if nms_style == 'OR': # default - while dc.shape[0]: - det_max.append(dc[:1]) # save highest conf detection - if len(dc) == 1: # Stop if we're at the last detection - break - iou = bbox_iou(det_max[-1], dc[1:]) # iou with other boxes - dc = dc[1:][iou < nms_thres] # remove ious > threshold + while len(ind): + di = dc[ind[0]:ind[0] + 1] + det_max.append(di) # save highest conf detection + reject = bbox_iou(di, dc[ind]) > nms_thres + [ind.pop(i) for i in reversed(reject.nonzero())] + # while dc.shape[0]: # SLOWER + # det_max.append(dc[:1]) # save highest conf detection + # if len(dc) == 1: # Stop if we're at the last detection + # break + # iou = bbox_iou(dc[:1], dc[1:]) # iou with other boxes + # dc = dc[1:][iou < nms_thres] # remove ious > threshold # Image Total P R mAP # 4964 5000 0.629 0.594 0.586 From 45fac6bff10a7c71e9a3d18475ff5ef7246aad14 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 17 Mar 2019 23:45:39 +0200 Subject: [PATCH 0488/2595] multi_gpu (#135) * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates --- models.py | 149 +++++++++------------------ test.py | 78 +++++++------- train.py | 76 +++++++------- utils/datasets.py | 6 +- utils/gcp.sh | 9 ++ utils/torch_utils.py | 7 +- utils/utils.py | 240 +++++++++++++++++++++---------------------- 7 files changed, 261 insertions(+), 304 deletions(-) diff --git a/models.py b/models.py index c72c10a4..a1988d52 100755 --- a/models.py +++ b/models.py @@ -1,7 +1,4 @@ import os -from collections import defaultdict - -import torch.nn as nn from utils.parse_config import * from utils.utils import * @@ -104,106 +101,63 @@ class YOLOLayer(nn.Module): def __init__(self, anchors, nC, img_size, yolo_layer, cfg): super(YOLOLayer, self).__init__() - nA = len(anchors) self.anchors = torch.FloatTensor(anchors) - self.nA = nA # number of anchors (3) + self.nA = len(anchors) # number of anchors (3) self.nC = nC # number of classes (80) self.img_size = 0 - # self.coco_class_weights = coco_class_weights() - if ONNX_EXPORT: # grids must be computed in __init__ - stride = [32, 16, 8][yolo_layer] # stride of this layer - if cfg.endswith('yolov3-tiny.cfg'): - stride *= 2 + # if ONNX_EXPORT: # grids must be computed in __init__ + stride = [32, 16, 8][yolo_layer] # stride of this layer + if cfg.endswith('yolov3-tiny.cfg'): + stride *= 2 - self.nG = int(img_size / stride) # number grid points - create_grids(self, img_size, self.nG) + nG = int(img_size / stride) # number grid points - def forward(self, p, img_size, targets=None, var=None): + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + create_grids(self, img_size, nG, device) + + def forward(self, p, img_size, var=None): if ONNX_EXPORT: bs, nG = 1, self.nG # batch size, grid size else: bs, nG = p.shape[0], p.shape[-1] if self.img_size != img_size: - create_grids(self, img_size, nG) + create_grids(self, img_size, nG, p.device) - if p.is_cuda: - self.grid_xy = self.grid_xy.cuda() - self.anchor_wh = self.anchor_wh.cuda() - - # p.view(bs, 255, 13, 13) -- > (bs, 3, 13, 13, 80) # (bs, anchors, grid, grid, classes + xywh) + # p.view(bs, 255, 13, 13) -- > (bs, 3, 13, 13, 85) # (bs, anchors, grid, grid, classes + xywh) p = p.view(bs, self.nA, self.nC + 5, nG, nG).permute(0, 1, 3, 4, 2).contiguous() # prediction - # xy, width and height - xy = torch.sigmoid(p[..., 0:2]) - wh = p[..., 2:4] # wh (yolo method) - # wh = torch.sigmoid(p[..., 2:4]) # wh (power method) + if self.training: + return p - # Training - if targets is not None: - MSELoss = nn.MSELoss() - BCEWithLogitsLoss = nn.BCEWithLogitsLoss() - CrossEntropyLoss = nn.CrossEntropyLoss() + elif ONNX_EXPORT: + grid_xy = self.grid_xy.repeat((1, self.nA, 1, 1, 1)).view((1, -1, 2)) + anchor_wh = self.anchor_wh.repeat((1, 1, nG, nG, 1)).view((1, -1, 2)) / nG - # Get outputs - p_conf = p[..., 4] # Conf - p_cls = p[..., 5:] # Class + # p = p.view(-1, 5 + self.nC) + # xy = xy + self.grid_xy[0] # x, y + # wh = torch.exp(wh) * self.anchor_wh[0] # width, height + # p_conf = torch.sigmoid(p[:, 4:5]) # Conf + # p_cls = F.softmax(p[:, 5:], 1) * p_conf # SSD-like conf + # return torch.cat((xy / nG, wh, p_conf, p_cls), 1).t() - txy, twh, mask, tcls = build_targets(targets, self.anchor_vec, self.nA, self.nC, nG) + p = p.view(1, -1, 5 + self.nC) + xy = torch.sigmoid(p[..., 0:2]) + grid_xy # x, y + wh = torch.exp(p[..., 2:4]) * anchor_wh # width, height + p_conf = torch.sigmoid(p[..., 4:5]) # Conf + p_cls = p[..., 5:] + # Broadcasting only supported on first dimension in CoreML. See onnx-coreml/_operators.py + # p_cls = F.softmax(p_cls, 2) * p_conf # SSD-like conf + p_cls = torch.exp(p_cls).permute((2, 1, 0)) + p_cls = p_cls / p_cls.sum(0).unsqueeze(0) * p_conf.permute((2, 1, 0)) # F.softmax() equivalent + p_cls = p_cls.permute(2, 1, 0) + return torch.cat((xy / nG, wh, p_conf, p_cls), 2).squeeze().t() - tcls = tcls[mask] - if p.is_cuda: - txy, twh, mask, tcls = txy.cuda(), twh.cuda(), mask.cuda(), tcls.cuda() - - # Compute losses - nT = sum([len(x) for x in targets]) # number of targets - nM = mask.sum().float() # number of anchors (assigned to targets) - k = 1 # nM / bs - if nM > 0: - lxy = k * MSELoss(xy[mask], txy[mask]) - lwh = k * MSELoss(wh[mask], twh[mask]) - - lcls = (k / 4) * CrossEntropyLoss(p_cls[mask], torch.argmax(tcls, 1)) - # lcls = (k * 10) * BCEWithLogitsLoss(p_cls[mask], tcls.float()) - else: - FT = torch.cuda.FloatTensor if p.is_cuda else torch.FloatTensor - lxy, lwh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]) - - lconf = (k * 64) * BCEWithLogitsLoss(p_conf, mask.float()) - - # Sum loss components - loss = lxy + lwh + lconf + lcls - - return loss, loss.item(), lxy.item(), lwh.item(), lconf.item(), lcls.item(), nT - - else: - if ONNX_EXPORT: - grid_xy = self.grid_xy.repeat((1, self.nA, 1, 1, 1)).view((1, -1, 2)) - anchor_wh = self.anchor_wh.repeat((1, 1, nG, nG, 1)).view((1, -1, 2)) / nG - - # p = p.view(-1, 85) - # xy = xy + self.grid_xy[0] # x, y - # wh = torch.exp(wh) * self.anchor_wh[0] # width, height - # p_conf = torch.sigmoid(p[:, 4:5]) # Conf - # p_cls = F.softmax(p[:, 5:85], 1) * p_conf # SSD-like conf - # return torch.cat((xy / nG, wh, p_conf, p_cls), 1).t() - - p = p.view(1, -1, 5 + self.nC) - xy = xy.view(bs, self.nA * nG * nG, 2) + grid_xy # x, y - wh = torch.exp(p[..., 2:4]) * anchor_wh # width, height - p_conf = torch.sigmoid(p[..., 4:5]) # Conf - p_cls = p[..., 5:5 + self.nC] - # Broadcasting only supported on first dimension in CoreML. See onnx-coreml/_operators.py - # p_cls = F.softmax(p_cls, 2) * p_conf # SSD-like conf - p_cls = torch.exp(p_cls).permute((2, 1, 0)) - p_cls = p_cls / p_cls.sum(0).unsqueeze(0) * p_conf.permute((2, 1, 0)) # F.softmax() equivalent - p_cls = p_cls.permute(2, 1, 0) - return torch.cat((xy / nG, wh, p_conf, p_cls), 2).squeeze().t() - - p[..., 0:2] = xy + self.grid_xy # xy - p[..., 2:4] = torch.exp(wh) * self.anchor_wh # wh yolo method - # p[..., 2:4] = ((wh * 2) ** 2) * self.anchor_wh # wh power method + else: # inference + p[..., 0:2] = torch.sigmoid(p[..., 0:2]) + self.grid_xy # xy + p[..., 2:4] = torch.exp(p[..., 2:4]) * self.anchor_wh # wh yolo method + # p[..., 2:4] = ((torch.sigmoid(p[..., 2:4]) * 2) ** 2) * self.anchor_wh # wh power method p[..., 4] = torch.sigmoid(p[..., 4]) # p_conf p[..., :4] *= self.stride @@ -225,9 +179,7 @@ class Darknet(nn.Module): self.loss_names = ['loss', 'xy', 'wh', 'conf', 'cls', 'nT'] self.losses = [] - def forward(self, x, targets=None, var=0): - self.losses = defaultdict(float) - is_training = targets is not None + def forward(self, x, var=None): img_size = x.shape[-1] layer_outputs = [] output = [] @@ -246,23 +198,15 @@ class Darknet(nn.Module): layer_i = int(module_def['from']) x = layer_outputs[-1] + layer_outputs[layer_i] elif mtype == 'yolo': - if is_training: # get loss - x, *losses = module[0](x, img_size, targets, var) - for name, loss in zip(self.loss_names, losses): - self.losses[name] += loss - else: # get detections - x = module[0](x, img_size) + x = module[0](x, img_size) output.append(x) layer_outputs.append(x) - if is_training: - self.losses['nT'] /= 3 - if ONNX_EXPORT: output = torch.cat(output, 1) # merge the 3 layers 85 x (507, 2028, 8112) to 85 x 10647 return output[5:].t(), output[:4].t() # ONNX scores, boxes - - return sum(output) if is_training else torch.cat(output, 1) + else: + return output if self.training else torch.cat(output, 1) def get_yolo_layers(model): @@ -270,17 +214,18 @@ def get_yolo_layers(model): return [i for i, x in enumerate(a) if x] # [82, 94, 106] for yolov3 -def create_grids(self, img_size, nG): +def create_grids(self, img_size, nG, device): self.stride = img_size / nG # build xy offsets grid_x = torch.arange(nG).repeat((nG, 1)).view((1, 1, nG, nG)).float() grid_y = grid_x.permute(0, 1, 3, 2) - self.grid_xy = torch.stack((grid_x, grid_y), 4) + self.grid_xy = torch.stack((grid_x, grid_y), 4).to(device) # build wh gains - self.anchor_vec = self.anchors / self.stride - self.anchor_wh = self.anchor_vec.view(1, self.nA, 1, 1, 2) + self.anchor_vec = self.anchors.to(device) / self.stride + self.anchor_wh = self.anchor_vec.view(1, self.nA, 1, 1, 2).to(device) + self.nG = torch.FloatTensor([nG]).to(device) def load_darknet_weights(self, weights, cutoff=-1): diff --git a/test.py b/test.py index a334efcc..031baa05 100644 --- a/test.py +++ b/test.py @@ -17,7 +17,8 @@ def test( iou_thres=0.5, conf_thres=0.3, nms_thres=0.45, - save_json=False + save_json=False, + model=None ): device = torch_utils.select_device() @@ -26,14 +27,15 @@ def test( nC = int(data_cfg_dict['classes']) # number of classes (80 for COCO) test_path = data_cfg_dict['valid'] - # Initialize model - model = Darknet(cfg, img_size) + if model is None: + # Initialize model + model = Darknet(cfg, img_size) - # Load weights - if weights.endswith('.pt'): # pytorch format - model.load_state_dict(torch.load(weights, map_location='cpu')['model']) - else: # darknet format - load_darknet_weights(model, weights) + # Load weights + if weights.endswith('.pt'): # pytorch format + model.load_state_dict(torch.load(weights, map_location='cpu')['model']) + else: # darknet format + load_darknet_weights(model, weights) model.to(device).eval() @@ -43,32 +45,31 @@ def test( mean_mAP, mean_R, mean_P, seen = 0.0, 0.0, 0.0, 0 print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP')) - outputs, mAPs, mR, mP, TP, confidence, pred_class, target_class, jdict = \ - [], [], [], [], [], [], [], [], [] + mP, mR, mAPs, TP, jdict = [], [], [], [], [] AP_accum, AP_accum_count = np.zeros(nC), np.zeros(nC) coco91class = coco80_to_coco91_class() - for batch_i, (imgs, targets, paths, shapes) in enumerate(dataloader): + for (imgs, targets, paths, shapes) in dataloader: t = time.time() output = model(imgs.to(device)) output = non_max_suppression(output, conf_thres=conf_thres, nms_thres=nms_thres) # Compute average precision for each sample - for si, (labels, detections) in enumerate(zip(targets, output)): + for si, detections in enumerate(output): + labels = targets[targets[:, 0] == si, 1:] seen += 1 if detections is None: # If there are labels but no detections mark as zero AP - if labels.size(0) != 0: - mAPs.append(0), mR.append(0), mP.append(0) + if len(labels) != 0: + mP.append(0), mR.append(0), mAPs.append(0) continue # Get detections sorted by decreasing confidence scores - detections = detections.cpu().numpy() - detections = detections[np.argsort(-detections[:, 4])] + detections = detections[(-detections[:, 4]).argsort()] if save_json: # [{"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], "score": 0.236}, ... - box = torch.from_numpy(detections[:, :4]).clone() # xyxy + box = detections[:, :4].clone() # xyxy scale_coords(img_size, box, shapes[si]) # to original shape box = xyxy2xywh(box) # xywh box[:, :2] -= box[:, 2:] / 2 # xy center to top-left corner @@ -84,28 +85,24 @@ def test( # If no labels add number of detections as incorrect correct = [] - if labels.size(0) == 0: + if len(labels) == 0: # correct.extend([0 for _ in range(len(detections))]) - mAPs.append(0), mR.append(0), mP.append(0) + mP.append(0), mR.append(0), mAPs.append(0) continue else: + # Extract target boxes as (x1, y1, x2, y2) + target_box = xywh2xyxy(labels[:, 1:5]) * img_size target_cls = labels[:, 0] - # Extract target boxes as (x1, y1, x2, y2) - target_boxes = xywh2xyxy(labels[:, 1:5]) * img_size - detected = [] - for *pred_bbox, conf, obj_conf, obj_pred in detections: + for *pred_box, conf, cls_conf, cls_pred in detections: + # Best iou, index between pred and targets + iou, bi = bbox_iou(pred_box, target_box).max(0) - pred_bbox = torch.FloatTensor(pred_bbox).view(1, -1) - # Compute iou with target boxes - iou = bbox_iou(pred_bbox, target_boxes) - # Extract index of largest overlap - best_i = np.argmax(iou) - # If overlap exceeds threshold and classification is correct mark as correct - if iou[best_i] > iou_thres and obj_pred == labels[best_i, 0] and best_i not in detected: + # If iou > threshold and class is correct mark as correct + if iou > iou_thres and cls_pred == target_cls[bi] and bi not in detected: correct.append(1) - detected.append(best_i) + detected.append(bi) else: correct.append(0) @@ -120,24 +117,24 @@ def test( AP_accum += np.bincount(AP_class, minlength=nC, weights=AP) # Compute mean AP across all classes in this image, and append to image list - mAPs.append(AP.mean()) - mR.append(R.mean()) mP.append(P.mean()) + mR.append(R.mean()) + mAPs.append(AP.mean()) # Means of all images - mean_mAP = np.mean(mAPs) - mean_R = np.mean(mR) mean_P = np.mean(mP) + mean_R = np.mean(mR) + mean_mAP = np.mean(mAPs) # Print image mAP and running mean mAP print(('%11s%11s' + '%11.3g' * 4 + 's') % (seen, dataloader.nF, mean_P, mean_R, mean_mAP, time.time() - t)) # Print mAP per class - print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP') + '\n\nmAP Per Class:') - + print('\nmAP Per Class:') for i, c in enumerate(load_classes(data_cfg_dict['names'])): - print('%15s: %-.4f' % (c, AP_accum[i] / (AP_accum_count[i] + 1E-16))) + if AP_accum_count[i]: + print('%15s: %-.4f' % (c, AP_accum[i] / (AP_accum_count[i]))) # Save JSON if save_json: @@ -159,7 +156,7 @@ def test( cocoEval.summarize() # Return mAP - return mean_mAP, mean_R, mean_P + return mean_P, mean_R, mean_mAP if __name__ == '__main__': @@ -186,8 +183,7 @@ if __name__ == '__main__': opt.iou_thres, opt.conf_thres, opt.nms_thres, - opt.save_json - ) + opt.save_json) # Image Total P R mAP # YOLOv3 320 # 32 5000 0.66 0.597 0.591 diff --git a/train.py b/train.py index 6b7b6181..c8ea97c3 100644 --- a/train.py +++ b/train.py @@ -17,7 +17,6 @@ def train( accumulated_batches=1, multi_scale=False, freeze_backbone=False, - var=0, ): weights = 'weights' + os.sep latest = weights + 'latest.pt' @@ -48,10 +47,6 @@ def train( # Load weights to resume from model.load_state_dict(checkpoint['model']) - # if torch.cuda.device_count() > 1: - # model = nn.DataParallel(model) - model.to(device).train() - # Transfer learning (train only YOLO layers) # for i, (name, p) in enumerate(model.named_parameters()): # p.requires_grad = True if (p.shape[0] == 255) else False @@ -75,13 +70,13 @@ def train( load_darknet_weights(model, weights + 'yolov3-tiny.conv.15') cutoff = 15 - # if torch.cuda.device_count() > 1: - # model = nn.DataParallel(model) - model.to(device).train() - # Set optimizer optimizer = torch.optim.SGD(filter(lambda x: x.requires_grad, model.parameters()), lr=lr0, momentum=.9) + if torch.cuda.device_count() > 1: + model = nn.DataParallel(model) + model.to(device).train() + # Set scheduler # scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[54, 61], gamma=0.1) @@ -90,16 +85,17 @@ def train( model_info(model) n_burnin = min(round(dataloader.nB / 5 + 1), 1000) # number of burn-in batches for epoch in range(epochs): + model.train() epoch += start_epoch - print(('%8s%12s' + '%10s' * 7) % ( + print(('\n%8s%12s' + '%10s' * 7) % ( 'Epoch', 'Batch', 'xy', 'wh', 'conf', 'cls', 'total', 'nTargets', 'time')) # Update scheduler (automatic) # scheduler.step() # Update scheduler (manual) at 0, 54, 61 epochs to 1e-3, 1e-4, 1e-5 - if epoch > 50: + if epoch > 250: lr = lr0 / 10 else: lr = lr0 @@ -113,10 +109,12 @@ def train( p.requires_grad = False if (epoch == 0) else True ui = -1 - rloss = defaultdict(float) # running loss optimizer.zero_grad() + rloss = defaultdict(float) for i, (imgs, targets, _, _) in enumerate(dataloader): - if sum([len(x) for x in targets]) < 1: # if no targets continue + targets = targets.to(device) + nT = targets.shape[0] + if nT == 0: # if no targets continue continue # SGD burn-in @@ -125,8 +123,14 @@ def train( for g in optimizer.param_groups: g['lr'] = lr + # Run model + pred = model(imgs.to(device)) + + # Build targets + target_list = build_targets(model, targets, pred) + # Compute loss - loss = model(imgs.to(device), targets, var=var) + loss, loss_dict = compute_loss(pred, target_list) # Compute gradient loss.backward() @@ -138,49 +142,51 @@ def train( # Running epoch-means of tracked metrics ui += 1 - for key, val in model.losses.items(): + for key, val in loss_dict.items(): rloss[key] = (rloss[key] * ui + val) / (ui + 1) s = ('%8s%12s' + '%10.3g' * 7) % ( '%g/%g' % (epoch, epochs - 1), '%g/%g' % (i, len(dataloader) - 1), rloss['xy'], rloss['wh'], rloss['conf'], - rloss['cls'], rloss['loss'], - model.losses['nT'], time.time() - t0) + rloss['cls'], rloss['total'], + nT, time.time() - t0) t0 = time.time() print(s) # Update best loss - if rloss['loss'] < best_loss: - best_loss = rloss['loss'] + if rloss['total'] < best_loss: + best_loss = rloss['total'] - # Save latest checkpoint - checkpoint = {'epoch': epoch, - 'best_loss': best_loss, - 'model': model.state_dict(), - 'optimizer': optimizer.state_dict()} - torch.save(checkpoint, latest) + save = True # save training results + if save: + # Save latest checkpoint + checkpoint = {'epoch': epoch, + 'best_loss': best_loss, + 'model': model.module.state_dict() if type(model) is nn.DataParallel else model.state_dict(), + 'optimizer': optimizer.state_dict()} + torch.save(checkpoint, latest) - # Save best checkpoint - if best_loss == rloss['loss']: - os.system('cp ' + latest + ' ' + best) + # Save best checkpoint + if best_loss == rloss['total']: + os.system('cp ' + latest + ' ' + best) - # Save backup weights every 5 epochs (optional) - # if (epoch > 0) & (epoch % 5 == 0): - # os.system('cp ' + latest + ' ' + weights + 'backup{}.pt'.format(epoch))) + # Save backup weights every 5 epochs (optional) + if (epoch > 0) & (epoch % 5 == 0): + os.system('cp ' + latest + ' ' + weights + 'backup{}.pt'.format(epoch)) # Calculate mAP with torch.no_grad(): - mAP, R, P = test.test(cfg, data_cfg, weights=latest, batch_size=batch_size, img_size=img_size) + P, R, mAP = test.test(cfg, data_cfg, weights=latest, batch_size=batch_size, img_size=img_size, model=model) # Write epoch results with open('results.txt', 'a') as file: - file.write(s + '%11.3g' * 3 % (mAP, P, R) + '\n') + file.write(s + '%11.3g' * 3 % (P, R, mAP) + '\n') if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument('--epochs', type=int, default=100, help='number of epochs') + parser.add_argument('--epochs', type=int, default=270, help='number of epochs') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulated-batches', type=int, default=1, help='number of batches before optimizer step') parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') @@ -188,7 +194,6 @@ if __name__ == '__main__': parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') - parser.add_argument('--var', type=float, default=0, help='test variable') opt = parser.parse_args() print(opt, end='\n\n') @@ -203,5 +208,4 @@ if __name__ == '__main__': batch_size=opt.batch_size, accumulated_batches=opt.accumulated_batches, multi_scale=opt.multi_scale, - var=opt.var, ) diff --git a/utils/datasets.py b/utils/datasets.py index 3a0d6bd3..05d1f98d 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -206,8 +206,11 @@ class LoadImagesAndLabels: # for training if nL > 0: labels[:, 2] = 1 - labels[:, 2] + if nL > 0: + labels = np.concatenate((np.zeros((nL, 1), dtype='float32') + index, labels), 1) + labels_all.append(labels) + img_all.append(img) - labels_all.append(torch.from_numpy(labels)) img_paths.append(img_path) img_shapes.append((h, w)) @@ -216,6 +219,7 @@ class LoadImagesAndLabels: # for training img_all = np.ascontiguousarray(img_all, dtype=np.float32) img_all /= 255.0 + labels_all = torch.from_numpy(np.concatenate(labels_all, 0)) return torch.from_numpy(img_all), labels_all, img_paths, img_shapes def __len__(self): diff --git a/utils/gcp.sh b/utils/gcp.sh index 93308d61..074579c4 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -4,6 +4,7 @@ sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 bash yolov3/data/get_coco_dataset.sh sudo rm -rf cocoapi && git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 +sudo shutdown # Start python3 train.py @@ -15,6 +16,14 @@ python3 train.py --resume gsutil cp gs://ultralytics/yolov3.pt yolov3/weights python3 detect.py +# Clone branch +sudo rm -rf yolov3 && git clone -b multi_gpu --depth 1 https://github.com/ultralytics/yolov3 +cd yolov3 && python3 train.py --batch-size 104 + +sudo rm -rf yolov3 && git clone -b multigpu --depth 1 https://github.com/alexpolichroniadis/yolov3 +cp coco.data yolov3/cfg +cd yolov3 && python3 train.py --batch-size 104 + # Test sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 sudo rm -rf cocoapi && git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 diff --git a/utils/torch_utils.py b/utils/torch_utils.py index f98da7fb..a4a26fd4 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -16,10 +16,11 @@ def select_device(force_cpu=False): device = torch.device('cuda:0' if cuda else 'cpu') if torch.cuda.device_count() > 1: + device = torch.device('cuda' if cuda else 'cpu') print('Found %g GPUs' % torch.cuda.device_count()) - print('WARNING Multi-GPU Issue: https://github.com/ultralytics/yolov3/issues/21') - torch.cuda.set_device(0) # OPTIONAL: Set your GPU if multiple available - # # print('Using ', torch.cuda.device_count(), ' GPUs') + # print('Multi-GPU Issue: https://github.com/ultralytics/yolov3/issues/21') + # torch.cuda.set_device(0) # OPTIONAL: Set your GPU if multiple available + # print('Using ', torch.cuda.device_count(), ' GPUs') print('Using %s %s\n' % (device.type, torch.cuda.get_device_properties(0) if cuda else '')) return device diff --git a/utils/utils.py b/utils/utils.py index 8e54f7cb..c1a1969a 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -1,10 +1,12 @@ import glob import random +from collections import defaultdict import cv2 import matplotlib.pyplot as plt import numpy as np import torch +import torch.nn as nn import torch.nn.functional as F from utils import torch_utils @@ -25,15 +27,14 @@ def init_seeds(seed=0): def load_classes(path): - """ - Loads class labels at 'path' - """ + # Loads class labels at 'path' fp = open(path, 'r') names = fp.read().split('\n') return list(filter(None, names)) # filter removes empty strings (such as last line) -def model_info(model): # Plots a line-by-line description of a PyTorch model +def model_info(model): + # Plots a line-by-line description of a PyTorch model n_p = sum(x.numel() for x in model.parameters()) # number parameters n_g = sum(x.numel() for x in model.parameters() if x.requires_grad) # number gradients print('\n%5s %50s %9s %12s %20s %12s %12s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) @@ -41,7 +42,7 @@ def model_info(model): # Plots a line-by-line description of a PyTorch model name = name.replace('module_list.', '') print('%5g %50s %9s %12g %20s %12.3g %12.3g' % ( i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) - print('Model Summary: %g layers, %g parameters, %g gradients\n' % (i + 1, n_p, n_g)) + print('Model Summary: %g layers, %g parameters, %g gradients' % (i + 1, n_p, n_g)) def coco_class_weights(): # frequency of each class in coco train2014 @@ -66,7 +67,8 @@ def coco80_to_coco91_class(): # converts 80-index (val2014) to 91-index (paper) return x -def plot_one_box(x, img, color=None, label=None, line_thickness=None): # Plots one bounding box on image img +def plot_one_box(x, img, color=None, label=None, line_thickness=None): + # Plots one bounding box on image img tl = line_thickness or round(0.002 * max(img.shape[0:2])) + 1 # line thickness color = color or [random.randint(0, 255) for _ in range(3)] c1, c2 = (int(x[0]), int(x[1])), (int(x[2]), int(x[3])) @@ -122,7 +124,7 @@ def scale_coords(img_size, coords, img0_shape): def ap_per_class(tp, conf, pred_cls, target_cls): """ Compute the average precision, given the recall and precision curves. - Method originally from https://github.com/rafaelpadilla/Object-Detection-Metrics. + Source: https://github.com/rafaelpadilla/Object-Detection-Metrics. # Arguments tp: True positives (list). conf: Objectness value from 0-1 (list). @@ -176,7 +178,7 @@ def ap_per_class(tp, conf, pred_cls, target_cls): def compute_ap(recall, precision): """ Compute the average precision, given the recall and precision curves. - Code originally from https://github.com/rbgirshick/py-faster-rcnn. + Source: https://github.com/rbgirshick/py-faster-rcnn. # Arguments recall: The recall curve (list). precision: The precision curve (list). @@ -203,105 +205,127 @@ def compute_ap(recall, precision): def bbox_iou(box1, box2, x1y1x2y2=True): - box1 = box1.t() + # Returns the IoU of box1 to box2. box1 is 4, box2 is nx4 box2 = box2.t() - """ - Returns the IoU of two bounding boxes - """ + + # Get the coordinates of bounding boxes if x1y1x2y2: - # Get the coordinates of bounding boxes + # x1, y1, x2, y2 = box1 b1_x1, b1_y1, b1_x2, b1_y2 = box1[0], box1[1], box1[2], box1[3] b2_x1, b2_y1, b2_x2, b2_y2 = box2[0], box2[1], box2[2], box2[3] else: - # x1, y1, w1, h1 = box1 - # Transform from center and width to exact coordinates + # x, y, w, h = box1 b1_x1, b1_x2 = box1[0] - box1[2] / 2, box1[0] + box1[2] / 2 b1_y1, b1_y2 = box1[1] - box1[3] / 2, box1[1] + box1[3] / 2 b2_x1, b2_x2 = box2[0] - box2[2] / 2, box2[0] + box2[2] / 2 b2_y1, b2_y2 = box2[1] - box2[3] / 2, box2[1] + box2[3] / 2 - # get the coordinates of the intersection rectangle - inter_rect_x1 = torch.max(b1_x1, b2_x1) - inter_rect_y1 = torch.max(b1_y1, b2_y1) - inter_rect_x2 = torch.min(b1_x2, b2_x2) - inter_rect_y2 = torch.min(b1_y2, b2_y2) # Intersection area - inter_area = torch.clamp(inter_rect_x2 - inter_rect_x1, 0) * torch.clamp(inter_rect_y2 - inter_rect_y1, 0) + inter_area = (torch.min(b1_x2, b2_x2) - torch.max(b1_x1, b2_x1)).clamp(0) * \ + (torch.min(b1_y2, b2_y2) - torch.max(b1_y1, b2_y1)).clamp(0) + # Union Area - b1_area = (b1_x2 - b1_x1) * (b1_y2 - b1_y1) - b2_area = (b2_x2 - b2_x1) * (b2_y2 - b2_y1) + union_area = ((b1_x2 - b1_x1) * (b1_y2 - b1_y1) + 1e-16) + \ + (b2_x2 - b2_x1) * (b2_y2 - b2_y1) - inter_area - return inter_area / (b1_area + b2_area - inter_area + 1e-16) + return inter_area / union_area # iou -def build_targets(target, anchor_vec, nA, nC, nG): - """ - returns nT, nCorrect, tx, ty, tw, th, tconf, tcls - """ - nB = len(target) # number of images in batch +def wh_iou(box1, box2): + # Returns the IoU of wh1 to wh2. wh1 is 2, wh2 is nx2 + box2 = box2.t() - txy = torch.zeros(nB, nA, nG, nG, 2) # batch size, anchors, grid size - twh = torch.zeros(nB, nA, nG, nG, 2) - tconf = torch.ByteTensor(nB, nA, nG, nG).fill_(0) - tcls = torch.ByteTensor(nB, nA, nG, nG, nC).fill_(0) # nC = number of classes + # w, h = box1 + w1, h1 = box1[0], box1[1] + w2, h2 = box2[0], box2[1] - for b in range(nB): - t = target[b] - nTb = len(t) # number of targets - if nTb == 0: - continue + # Intersection area + inter_area = torch.min(w1, w2) * torch.min(h1, h2) - gxy, gwh = t[:, 1:3] * nG, t[:, 3:5] * nG + # Union Area + union_area = (w1 * h1 + 1e-16) + w2 * h2 - inter_area - # Get grid box indices and prevent overflows (i.e. 13.01 on 13 anchors) - gi, gj = torch.clamp(gxy.long(), min=0, max=nG - 1).t() + return inter_area / union_area # iou - # iou of targets-anchors (using wh only) - box1 = gwh - box2 = anchor_vec.unsqueeze(1) - inter_area = torch.min(box1, box2).prod(2) - iou = inter_area / (box1.prod(1) + box2.prod(2) - inter_area + 1e-16) +def compute_loss(p, targets): # predictions, targets + FT = torch.cuda.FloatTensor if p[0].is_cuda else torch.FloatTensor + loss, lxy, lwh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) + txy, twh, tcls, tconf, indices = targets + MSE = nn.MSELoss() + CE = nn.CrossEntropyLoss() + BCE = nn.BCEWithLogitsLoss() - # Select best iou_pred and anchor - iou_best, a = iou.max(0) # best anchor [0-2] for each target + # Compute losses + # gp = [x.numel() for x in tconf] # grid points + for i, pi0 in enumerate(p): # layer i predictions, i + b, a, gj, gi = indices[i] # image, anchor, gridx, gridy - # Select best unique target-anchor combinations - if nTb > 1: - iou_order = torch.argsort(-iou_best) # best to worst + # Compute losses + k = 1 # nT / bs + if len(b) > 0: + pi = pi0[b, a, gj, gi] # predictions closest to anchors + lxy += k * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy + lwh += k * MSE(pi[..., 2:4], twh[i]) # wh + lcls += (k / 4) * CE(pi[..., 5:], tcls[i]) - # Unique anchor selection - u = torch.stack((gi, gj, a), 0)[:, iou_order] - # _, first_unique = np.unique(u, axis=1, return_index=True) # first unique indices - first_unique = return_torch_unique_index(u, torch.unique(u, dim=1)) # torch alternative + # pos_weight = FT([gp[i] / min(gp) * 4.]) + # BCE = nn.BCEWithLogitsLoss(pos_weight=pos_weight) + lconf += (k * 64) * BCE(pi0[..., 4], tconf[i]) + loss = lxy + lwh + lconf + lcls - i = iou_order[first_unique] - # best anchor must share significant commonality (iou) with target - i = i[iou_best[i] > 0.10] # TODO: examine arbitrary threshold - if len(i) == 0: - continue + # Add to dictionary + d = defaultdict(float) + losses = [loss.item(), lxy.item(), lwh.item(), lconf.item(), lcls.item()] + for name, x in zip(['total', 'xy', 'wh', 'conf', 'cls'], losses): + d[name] = x - a, gj, gi, t = a[i], gj[i], gi[i], t[i] - if len(t.shape) == 1: - t = t.view(1, 5) - else: - if iou_best < 0.10: - continue + return loss, d - tc, gxy, gwh = t[:, 0].long(), t[:, 1:3] * nG, t[:, 3:5] * nG + +def build_targets(model, targets, pred): + # targets = [image, class, x, y, w, h] + if isinstance(model, nn.DataParallel): + model = model.module + yolo_layers = get_yolo_layers(model) + + # anchors = closest_anchor(model, targets) # [layer, anchor, i, j] + txy, twh, tcls, tconf, indices = [], [], [], [], [] + for i, layer in enumerate(yolo_layers): + nG = model.module_list[layer][0].nG # grid size + anchor_vec = model.module_list[layer][0].anchor_vec + + # iou of targets-anchors + gwh = targets[:, 4:6] * nG + iou = [wh_iou(x, gwh) for x in anchor_vec] + iou, a = torch.stack(iou, 0).max(0) # best iou and anchor + + # reject below threshold ious (OPTIONAL) + j = iou > 0.01 + t, a, gwh = targets[j], a[j], gwh[j] + + # Indices + b, c = t[:, 0:2].long().t() # target image, class + gxy = t[:, 2:4] * nG + gi, gj = gxy.long().t() # grid_i, grid_j + indices.append((b, a, gj, gi)) # XY coordinates - txy[b, a, gj, gi] = gxy - gxy.floor() + txy.append(gxy - gxy.floor()) # Width and height - twh[b, a, gj, gi] = torch.log(gwh / anchor_vec[a]) # yolo method - # twh[b, a, gj, gi] = torch.sqrt(gwh / anchor_vec[a]) / 2 # power method + twh.append(torch.log(gwh / anchor_vec[a])) # yolo method + # twh.append(torch.sqrt(gwh / anchor_vec[a]) / 2) # power method - # One-hot encoding of label - tcls[b, a, gj, gi, tc] = 1 - tconf[b, a, gj, gi] = 1 + # Class + tcls.append(c) - return txy, twh, tconf, tcls + # Conf + tci = torch.zeros_like(pred[i][..., 0]) + tci[b, a, gj, gi] = 1 # conf + tconf.append(tci) + + return txy, twh, tcls, tconf, indices def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): @@ -314,34 +338,6 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): output = [None for _ in range(len(prediction))] for image_i, pred in enumerate(prediction): - # Filter out confidence scores below threshold - # Get score and class with highest confidence - - # cross-class NMS (experimental) - cross_class_nms = False - if cross_class_nms: - a = pred.clone() - _, indices = torch.sort(-a[:, 4], 0) # sort best to worst - a = a[indices] - radius = 30 # area to search for cross-class ious - for i in range(len(a)): - if i >= len(a) - 1: - break - - close = (torch.abs(a[i, 0] - a[i + 1:, 0]) < radius) & (torch.abs(a[i, 1] - a[i + 1:, 1]) < radius) - close = close.nonzero() - - if len(close) > 0: - close = close + i + 1 - iou = bbox_iou(a[i:i + 1, :4], a[close.squeeze(), :4].reshape(-1, 4), x1y1x2y2=False) - bad = close[iou > nms_thres] - - if len(bad) > 0: - mask = torch.ones(len(a)).type(torch.ByteTensor) - mask[bad] = 0 - a = a[mask] - pred = a - # Experiment: Prior class size rejection # x, y, w, h = pred[:, 0], pred[:, 1], pred[:, 2], pred[:, 3] # a = w * h # area @@ -355,6 +351,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): # shape_likelihood[:, c] = # multivariate_normal.pdf(x, mean=mat['class_mu'][c, :2], cov=mat['class_cov'][c, :2, :2]) + # Filter out confidence scores below threshold class_prob, class_pred = torch.max(F.softmax(pred[:, 5:], 1), 1) v = pred[:, 4] > conf_thres v = v.nonzero().squeeze() @@ -376,9 +373,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): # Detections ordered as (x1, y1, x2, y2, obj_conf, class_prob, class_pred) detections = torch.cat((pred[:, :5], class_prob.float().unsqueeze(1), class_pred.float().unsqueeze(1)), 1) # Iterate through all predicted classes - unique_labels = detections[:, -1].cpu().unique() - if prediction.is_cuda: - unique_labels = unique_labels.cuda(prediction.device) + unique_labels = detections[:, -1].cpu().unique().to(prediction.device) nms_style = 'OR' # 'OR' (default), 'AND', 'MERGE' (experimental) for c in unique_labels: @@ -393,15 +388,15 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): ind = list(range(len(dc))) if nms_style == 'OR': # default while len(ind): - di = dc[ind[0]:ind[0] + 1] - det_max.append(di) # save highest conf detection - reject = bbox_iou(di, dc[ind]) > nms_thres + j = ind[0] + det_max.append(dc[j:j + 1]) # save highest conf detection + reject = bbox_iou(dc[j], dc[ind]) > nms_thres [ind.pop(i) for i in reversed(reject.nonzero())] - # while dc.shape[0]: # SLOWER + # while dc.shape[0]: # SLOWER METHOD # det_max.append(dc[:1]) # save highest conf detection # if len(dc) == 1: # Stop if we're at the last detection # break - # iou = bbox_iou(dc[:1], dc[1:]) # iou with other boxes + # iou = bbox_iou(dc[0], dc[1:]) # iou with other boxes # dc = dc[1:][iou < nms_thres] # remove ious > threshold # Image Total P R mAP @@ -409,14 +404,14 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): elif nms_style == 'AND': # requires overlap, single boxes erased while len(dc) > 1: - iou = bbox_iou(dc[:1], dc[1:]) # iou with other boxes + iou = bbox_iou(dc[0], dc[1:]) # iou with other boxes if iou.max() > 0.5: det_max.append(dc[:1]) dc = dc[1:][iou < nms_thres] # remove ious > threshold elif nms_style == 'MERGE': # weighted mixture box while len(dc) > 0: - iou = bbox_iou(dc[:1], dc[0:]) # iou with other boxes + iou = bbox_iou(dc[0], dc[0:]) # iou with other boxes i = iou > nms_thres weights = dc[i, 4:5] * dc[i, 5:6] @@ -435,6 +430,11 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): return output +def get_yolo_layers(model): + bool_vec = [x['type'] == 'yolo' for x in model.module_defs] + return [i for i, x in enumerate(bool_vec) if x] # [82, 94, 106] for yolov3 + + def return_torch_unique_index(u, uv): n = uv.shape[1] # number of columns first_unique = torch.zeros(n, device=u.device).long() @@ -446,15 +446,13 @@ def return_torch_unique_index(u, uv): def strip_optimizer_from_checkpoint(filename='weights/best.pt'): # Strip optimizer from *.pt files for lighter files (reduced by 2/3 size) - a = torch.load(filename, map_location='cpu') a['optimizer'] = [] torch.save(a, filename.replace('.pt', '_lite.pt')) def coco_class_count(path='../coco/labels/train2014/'): - # histogram of occurrences per class - + # Histogram of occurrences per class nC = 80 # number classes x = np.zeros(nC, dtype='int32') files = sorted(glob.glob('%s/*.*' % path)) @@ -465,8 +463,7 @@ def coco_class_count(path='../coco/labels/train2014/'): def coco_only_people(path='../coco/labels/val2014/'): - # find images with only people - + # Find images with only people files = sorted(glob.glob('%s/*.*' % path)) for i, file in enumerate(files): labels = np.loadtxt(file, dtype=np.float32).reshape(-1, 5) @@ -474,19 +471,20 @@ def coco_only_people(path='../coco/labels/val2014/'): print(labels.shape[0], file) -def plot_results(): +def plot_results(start=0): # Plot YOLO training results file 'results.txt' - # import os; os.system('wget https://storage.googleapis.com/ultralytics/yolov3/results_v1.txt') + # import os; os.system('wget https://storage.googleapis.com/ultralytics/yolov3/results_v3.txt') + # from utils.utils import *; plot_results() plt.figure(figsize=(14, 7)) - s = ['X + Y', 'Width + Height', 'Confidence', 'Classification', 'Total Loss', 'mAP', 'Recall', 'Precision'] + s = ['X + Y', 'Width + Height', 'Confidence', 'Classification', 'Total Loss', 'Precision', 'Recall', 'mAP'] files = sorted(glob.glob('results*.txt')) for f in files: results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 9, 10, 11]).T # column 11 is mAP x = range(1, results.shape[1]) for i in range(8): plt.subplot(2, 4, i + 1) - plt.plot(x, results[i, x], marker='.', label=f) + plt.plot(results[i, x[start:]], marker='.', label=f) plt.title(s[i]) if i == 0: plt.legend() From f5247b397b50140a712f2a5d70567ff29b754f56 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Mar 2019 00:19:52 +0200 Subject: [PATCH 0489/2595] multi_gpu --- test.py | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/test.py b/test.py index 031baa05..e6c66ed8 100644 --- a/test.py +++ b/test.py @@ -49,6 +49,7 @@ def test( AP_accum, AP_accum_count = np.zeros(nC), np.zeros(nC) coco91class = coco80_to_coco91_class() for (imgs, targets, paths, shapes) in dataloader: + targets = targets.to(device) t = time.time() output = model(imgs.to(device)) output = non_max_suppression(output, conf_thres=conf_thres, nms_thres=nms_thres) @@ -184,27 +185,3 @@ if __name__ == '__main__': opt.conf_thres, opt.nms_thres, opt.save_json) - -# Image Total P R mAP # YOLOv3 320 -# 32 5000 0.66 0.597 0.591 -# 64 5000 0.664 0.62 0.604 -# 96 5000 0.653 0.627 0.614 -# 128 5000 0.639 0.623 0.607 -# 160 5000 0.642 0.63 0.616 -# 192 5000 0.651 0.636 0.621 - -# Image Total P R mAP # YOLOv3 416 -# 32 5000 0.635 0.581 0.57 -# 64 5000 0.63 0.591 0.578 -# 96 5000 0.661 0.632 0.622 -# 128 5000 0.659 0.632 0.623 -# 160 5000 0.665 0.64 0.633 -# 192 5000 0.66 0.637 0.63 - -# Image Total P R mAP # YOLOv3 608 -# 32 5000 0.653 0.606 0.591 -# 64 5000 0.653 0.635 0.625 -# 96 5000 0.655 0.642 0.633 -# 128 5000 0.667 0.651 0.642 -# 160 5000 0.663 0.645 0.637 -# 192 5000 0.663 0.643 0.634 From 7dba5d01718b8f97eb15f9025e976617686bd93d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Mar 2019 00:48:56 +0200 Subject: [PATCH 0490/2595] multi_gpu --- test.py | 8 ++++---- utils/utils.py | 7 ++----- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/test.py b/test.py index e6c66ed8..6ac47f4d 100644 --- a/test.py +++ b/test.py @@ -108,10 +108,10 @@ def test( correct.append(0) # Compute Average Precision (AP) per class - AP, AP_class, R, P = ap_per_class(tp=correct, - conf=detections[:, 4], - pred_cls=detections[:, 6], - target_cls=target_cls) + AP, AP_class, R, P = ap_per_class(tp=np.array(correct), + conf=detections[:, 4].cpu().numpy(), + pred_cls=detections[:, 6].cpu().numpy(), + target_cls=target_cls.cpu().numpy()) # Accumulate AP per class AP_accum_count += np.bincount(AP_class, minlength=nC) diff --git a/utils/utils.py b/utils/utils.py index c1a1969a..37bfd8e9 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -92,7 +92,7 @@ def weights_init_normal(m): def xyxy2xywh(x): # Convert bounding box format from [x1, y1, x2, y2] to [x, y, w, h] - y = torch.zeros(x.shape) if x.dtype is torch.float32 else np.zeros(x.shape) + y = torch.zeros_like(x) if x.dtype is torch.float32 else np.zeros_like(x) y[:, 0] = (x[:, 0] + x[:, 2]) / 2 y[:, 1] = (x[:, 1] + x[:, 3]) / 2 y[:, 2] = x[:, 2] - x[:, 0] @@ -102,7 +102,7 @@ def xyxy2xywh(x): def xywh2xyxy(x): # Convert bounding box format from [x, y, w, h] to [x1, y1, x2, y2] - y = torch.zeros(x.shape) if x.dtype is torch.float32 else np.zeros(x.shape) + y = torch.zeros_like(x) if x.dtype is torch.float32 else np.zeros_like(x) y[:, 0] = (x[:, 0] - x[:, 2] / 2) y[:, 1] = (x[:, 1] - x[:, 3] / 2) y[:, 2] = (x[:, 0] + x[:, 2] / 2) @@ -134,9 +134,6 @@ def ap_per_class(tp, conf, pred_cls, target_cls): The average precision as computed in py-faster-rcnn. """ - # lists/pytorch to numpy - tp, conf, pred_cls, target_cls = np.array(tp), np.array(conf), np.array(pred_cls), np.array(target_cls) - # Sort by objectness i = np.argsort(-conf) tp, conf, pred_cls = tp[i], conf[i], pred_cls[i] From 32f1def48fbd935c061edf4c299205eb646add28 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Mar 2019 00:59:24 +0200 Subject: [PATCH 0491/2595] multi_gpu --- utils/gcp.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 074579c4..5cc27849 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -7,7 +7,9 @@ sudo rm -rf cocoapi && git clone https://github.com/cocodataset/cocoapi && cd co sudo shutdown # Start -python3 train.py +sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 +cp -r weights yolov3 +cd yolov3 && python3 train.py --batch-size 26 # Resume python3 train.py --resume @@ -18,11 +20,11 @@ python3 detect.py # Clone branch sudo rm -rf yolov3 && git clone -b multi_gpu --depth 1 https://github.com/ultralytics/yolov3 -cd yolov3 && python3 train.py --batch-size 104 +cd yolov3 && python3 train.py --batch-size 26 sudo rm -rf yolov3 && git clone -b multigpu --depth 1 https://github.com/alexpolichroniadis/yolov3 cp coco.data yolov3/cfg -cd yolov3 && python3 train.py --batch-size 104 +cd yolov3 && python3 train.py --batch-size 26 # Test sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 From e9a38830015d168ff8eaefb37553d7f9c8973773 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Mar 2019 12:33:31 +0200 Subject: [PATCH 0492/2595] Update README.md --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9c7a1bf5..7cbce2af 100755 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ - + +
v2.2v3.0

@@ -9,6 +10,7 @@

+ # Introduction This directory contains python software and an iOS App developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information please visit https://www.ultralytics.com. @@ -64,10 +66,10 @@ HS**V** Intensity | +/- 50% Run `detect.py` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder: **YOLOv3:** `detect.py --cfg cfg/yolov3.cfg --weights weights/yolov3.pt` - + **YOLOv3-tiny:** `detect.py --cfg cfg/yolov3-tiny.cfg --weights weights/yolov3-tiny.pt` - + ## Webcam From c468294a48be7dc2900ddab0258e0dc7513d981e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Mar 2019 12:45:49 +0200 Subject: [PATCH 0493/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7cbce2af..17420310 100755 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Python 3.7 or later with the following `pip3 install -U -r requirements.txt` pac # Training -**Start Training:** Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. Training runs about 1 hour per COCO epoch on a 1080 Ti. +**Start Training:** Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. **Resume Training:** Run `train.py --resume` to resume training from the most recently saved checkpoint `weights/latest.pt`. From 096d55c1208b4cf0535de446417b533094a3d421 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Mar 2019 12:46:44 +0200 Subject: [PATCH 0494/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 17420310..5ae3e159 100755 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Python 3.7 or later with the following `pip3 install -U -r requirements.txt` pac **Start Training:** Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. -**Resume Training:** Run `train.py --resume` to resume training from the most recently saved checkpoint `weights/latest.pt`. +**Resume Training:** Run `train.py --resume` resumes training from the latest checkpoint `weights/latest.pt`. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. Default training settings produce loss plots below, with **training speed of 0.6 s/batch on a 1080 Ti (18 epochs/day)** or 0.45 s/batch on a 2080 Ti. From 094edb40367a3e5eb6cbbfbfb37b96b24a740b6a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Mar 2019 12:49:18 +0200 Subject: [PATCH 0495/2595] Update README.md --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 5ae3e159..0fe97933 100755 --- a/README.md +++ b/README.md @@ -77,8 +77,6 @@ Run `detect.py` with `webcam=True` to show a live webcam feed. # Pretrained Weights -Download official YOLOv3 weights: - **Darknet** format: - https://pjreddie.com/media/files/yolov3.weights - https://pjreddie.com/media/files/yolov3-tiny.weights From 056eed28332f91c5ca8d0e9a722726a436d9a695 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Mar 2019 10:38:32 +0200 Subject: [PATCH 0496/2595] multi_gpu multi_scale --- detect.py | 2 +- models.py | 6 +----- test.py | 2 +- train.py | 47 +++++++++++++++++++++++++---------------------- utils/datasets.py | 16 ++++------------ 5 files changed, 32 insertions(+), 41 deletions(-) diff --git a/detect.py b/detect.py index 6f706b41..1dbd4076 100644 --- a/detect.py +++ b/detect.py @@ -36,7 +36,7 @@ def detect( os.system('wget https://storage.googleapis.com/ultralytics/yolov3.pt -O ' + weights) model.load_state_dict(torch.load(weights, map_location='cpu')['model']) else: # darknet format - load_darknet_weights(model, weights) + _ = load_darknet_weights(model, weights) model.to(device).eval() diff --git a/models.py b/models.py index a1988d52..38ec55d8 100755 --- a/models.py +++ b/models.py @@ -293,11 +293,7 @@ def load_darknet_weights(self, weights, cutoff=-1): conv_layer.weight.data.copy_(conv_w) ptr += num_w - -""" - @:param path - path of the new weights file - @:param cutoff - save layers between 0 and cutoff (cutoff = -1 -> all are saved) -""" + return cutoff def save_weights(self, path, cutoff=-1): diff --git a/test.py b/test.py index 6ac47f4d..b614eae6 100644 --- a/test.py +++ b/test.py @@ -35,7 +35,7 @@ def test( if weights.endswith('.pt'): # pytorch format model.load_state_dict(torch.load(weights, map_location='cpu')['model']) else: # darknet format - load_darknet_weights(model, weights) + _ = load_darknet_weights(model, weights) model.to(device).eval() diff --git a/train.py b/train.py index c8ea97c3..208c471f 100644 --- a/train.py +++ b/train.py @@ -14,7 +14,7 @@ def train( resume=False, epochs=100, batch_size=16, - accumulated_batches=1, + accumulate=1, multi_scale=False, freeze_backbone=False, ): @@ -35,9 +35,9 @@ def train( model = Darknet(cfg, img_size) # Get dataloader - dataloader = LoadImagesAndLabels(train_path, batch_size, img_size, multi_scale=multi_scale, augment=True) + dataloader = LoadImagesAndLabels(train_path, batch_size, img_size, augment=True) - lr0 = 0.001 + lr0 = 0.001 # initial learning rate cutoff = -1 # backbone reaches to cutoff layer start_epoch = 0 best_loss = float('inf') @@ -64,14 +64,12 @@ def train( else: # Initialize model with backbone (optional) if cfg.endswith('yolov3.cfg'): - load_darknet_weights(model, weights + 'darknet53.conv.74') - cutoff = 75 + cutoff = load_darknet_weights(model, weights + 'darknet53.conv.74') elif cfg.endswith('yolov3-tiny.cfg'): - load_darknet_weights(model, weights + 'yolov3-tiny.conv.15') - cutoff = 15 + cutoff = load_darknet_weights(model, weights + 'yolov3-tiny.conv.15') # Set optimizer - optimizer = torch.optim.SGD(filter(lambda x: x.requires_grad, model.parameters()), lr=lr0, momentum=.9) + optimizer = torch.optim.SGD(model.parameters(), lr=lr0, momentum=.9) if torch.cuda.device_count() > 1: model = nn.DataParallel(model) @@ -94,22 +92,21 @@ def train( # Update scheduler (automatic) # scheduler.step() - # Update scheduler (manual) at 0, 54, 61 epochs to 1e-3, 1e-4, 1e-5 + # Update scheduler (manual) if epoch > 250: lr = lr0 / 10 else: lr = lr0 - for g in optimizer.param_groups: - g['lr'] = lr + for x in optimizer.param_groups: + x['lr'] = lr - # Freeze darknet53.conv.74 for first epoch - if freeze_backbone and (epoch < 2): + # Freeze backbone at epoch 0, unfreeze at epoch 1 + if freeze_backbone and epoch < 2: for i, (name, p) in enumerate(model.named_parameters()): if int(name.split('.')[1]) < cutoff: # if layer < 75 p.requires_grad = False if (epoch == 0) else True ui = -1 - optimizer.zero_grad() rloss = defaultdict(float) for i, (imgs, targets, _, _) in enumerate(dataloader): targets = targets.to(device) @@ -118,10 +115,10 @@ def train( continue # SGD burn-in - if (epoch == 0) & (i <= n_burnin): + if (epoch == 0) and (i <= n_burnin): lr = lr0 * (i / n_burnin) ** 4 - for g in optimizer.param_groups: - g['lr'] = lr + for x in optimizer.param_groups: + x['lr'] = lr # Run model pred = model(imgs.to(device)) @@ -136,7 +133,7 @@ def train( loss.backward() # Accumulate gradient for x batches before optimizing - if ((i + 1) % accumulated_batches == 0) or (i == len(dataloader) - 1): + if (i + 1) % accumulate == 0 or (i + 1) == len(dataloader): optimizer.step() optimizer.zero_grad() @@ -154,11 +151,17 @@ def train( t0 = time.time() print(s) + # Multi-Scale training (320 - 608 pixels) every 10 batches + if multi_scale and (i + 1) % 10 == 0: + dataloader.img_size = random.choice(range(10, 20)) * 32 + print('multi_scale img_size = %g' % dataloader.img_size) + # Update best loss if rloss['total'] < best_loss: best_loss = rloss['total'] - save = True # save training results + # Save training results + save = True if save: # Save latest checkpoint checkpoint = {'epoch': epoch, @@ -172,7 +175,7 @@ def train( os.system('cp ' + latest + ' ' + best) # Save backup weights every 5 epochs (optional) - if (epoch > 0) & (epoch % 5 == 0): + if (epoch > 0) and (epoch % 5 == 0): os.system('cp ' + latest + ' ' + weights + 'backup{}.pt'.format(epoch)) # Calculate mAP @@ -188,7 +191,7 @@ if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--epochs', type=int, default=270, help='number of epochs') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') - parser.add_argument('--accumulated-batches', type=int, default=1, help='number of batches before optimizer step') + parser.add_argument('--accumulate', type=int, default=1, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='cfg/coco.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') @@ -206,6 +209,6 @@ if __name__ == '__main__': resume=opt.resume, epochs=opt.epochs, batch_size=opt.batch_size, - accumulated_batches=opt.accumulated_batches, + accumulate=opt.accumulate, multi_scale=opt.multi_scale, ) diff --git a/utils/datasets.py b/utils/datasets.py index 05d1f98d..40d935d2 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -90,7 +90,7 @@ class LoadWebcam: # for inference class LoadImagesAndLabels: # for training - def __init__(self, path, batch_size=1, img_size=608, multi_scale=False, augment=False): + def __init__(self, path, batch_size=1, img_size=608, augment=False): with open(path, 'r') as file: self.img_files = file.readlines() self.img_files = [x.replace('\n', '') for x in self.img_files] @@ -102,8 +102,7 @@ class LoadImagesAndLabels: # for training self.nF = len(self.img_files) # number of image files self.nB = math.ceil(self.nF / batch_size) # number of batches self.batch_size = batch_size - self.height = img_size - self.multi_scale = multi_scale + self.img_size = img_size self.augment = augment assert self.nF > 0, 'No images found in %s' % path @@ -121,13 +120,6 @@ class LoadImagesAndLabels: # for training ia = self.count * self.batch_size ib = min((self.count + 1) * self.batch_size, self.nF) - if self.multi_scale: - # Multi-Scale YOLO Training - height = random.choice(range(10, 20)) * 32 # 320 - 608 pixels - else: - # Fixed-Scale YOLO Training - height = self.height - img_all, labels_all, img_paths, img_shapes = [], [], [], [] for index, files_index in enumerate(range(ia, ib)): img_path = self.img_files[self.shuffled_vector[files_index]] @@ -159,7 +151,7 @@ class LoadImagesAndLabels: # for training cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) h, w, _ = img.shape - img, ratio, padw, padh = letterbox(img, height=height) + img, ratio, padw, padh = letterbox(img, height=self.img_size) # Load labels if os.path.isfile(label_path): @@ -189,7 +181,7 @@ class LoadImagesAndLabels: # for training nL = len(labels) if nL > 0: # convert xyxy to xywh - labels[:, 1:5] = xyxy2xywh(labels[:, 1:5].copy()) / height + labels[:, 1:5] = xyxy2xywh(labels[:, 1:5].copy()) / self.img_size if self.augment: # random left-right flip From feb5fcb16fe1b198c62503cc67c05c23074963e7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Mar 2019 11:38:01 +0200 Subject: [PATCH 0497/2595] multi_gpu multi_scale --- utils/utils.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 37bfd8e9..8efb6079 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -37,10 +37,10 @@ def model_info(model): # Plots a line-by-line description of a PyTorch model n_p = sum(x.numel() for x in model.parameters()) # number parameters n_g = sum(x.numel() for x in model.parameters() if x.requires_grad) # number gradients - print('\n%5s %50s %9s %12s %20s %12s %12s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) + print('\n%5s %40s %9s %12s %20s %12s %12s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) for i, (name, p) in enumerate(model.named_parameters()): name = name.replace('module_list.', '') - print('%5g %50s %9s %12g %20s %12.3g %12.3g' % ( + print('%5g %40s %9s %12g %20s %12.3g %12.3g' % ( i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) print('Model Summary: %g layers, %g parameters, %g gradients' % (i + 1, n_p, n_g)) @@ -298,8 +298,12 @@ def build_targets(model, targets, pred): iou, a = torch.stack(iou, 0).max(0) # best iou and anchor # reject below threshold ious (OPTIONAL) - j = iou > 0.01 - t, a, gwh = targets[j], a[j], gwh[j] + reject = True + if reject: + j = iou > 0.01 + t, a, gwh = targets[j], a[j], gwh[j] + else: + t = targets # Indices b, c = t[:, 0:2].long().t() # target image, class From 76f555c108fe8cee76a0fa66dae1d17bcff355ce Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Mar 2019 12:34:12 +0200 Subject: [PATCH 0498/2595] multi_gpu multi_scale --- train.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index 208c471f..7e22ec61 100644 --- a/train.py +++ b/train.py @@ -25,6 +25,8 @@ def train( if multi_scale: # pass maximum multi_scale size img_size = 608 + ms_index = -1 + ms_sizes = [320, 352, 384, 416, 448, 480, 512, 544, 576, 608] else: torch.backends.cudnn.benchmark = True # unsuitable for multiscale @@ -153,7 +155,9 @@ def train( # Multi-Scale training (320 - 608 pixels) every 10 batches if multi_scale and (i + 1) % 10 == 0: - dataloader.img_size = random.choice(range(10, 20)) * 32 + ms_index += 1 + dataloader.img_size = ms_sizes[ms_index] + # dataloader.img_size = random.choice(range(10, 20)) * 32 print('multi_scale img_size = %g' % dataloader.img_size) # Update best loss From 00e181a55a4731366c9856800681ba654830b51c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Mar 2019 12:38:35 +0200 Subject: [PATCH 0499/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 8efb6079..12cd7342 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -37,10 +37,10 @@ def model_info(model): # Plots a line-by-line description of a PyTorch model n_p = sum(x.numel() for x in model.parameters()) # number parameters n_g = sum(x.numel() for x in model.parameters() if x.requires_grad) # number gradients - print('\n%5s %40s %9s %12s %20s %12s %12s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) + print('\n%5s %35s %9s %12s %20s %12s %12s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) for i, (name, p) in enumerate(model.named_parameters()): name = name.replace('module_list.', '') - print('%5g %40s %9s %12g %20s %12.3g %12.3g' % ( + print('%5g %35s %9s %12g %20s %12.3g %12.3g' % ( i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) print('Model Summary: %g layers, %g parameters, %g gradients' % (i + 1, n_p, n_g)) From dcdd1ae6b79eefaa7ac1ee9d944d78425f145937 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Mar 2019 15:35:12 +0200 Subject: [PATCH 0500/2595] multi_gpu multi_scale --- models.py | 20 +++++++++----------- train.py | 10 +++------- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/models.py b/models.py index 38ec55d8..4c70baa1 100755 --- a/models.py +++ b/models.py @@ -106,22 +106,19 @@ class YOLOLayer(nn.Module): self.nC = nC # number of classes (80) self.img_size = 0 - # if ONNX_EXPORT: # grids must be computed in __init__ - stride = [32, 16, 8][yolo_layer] # stride of this layer - if cfg.endswith('yolov3-tiny.cfg'): - stride *= 2 + if ONNX_EXPORT: # grids must be computed in __init__ + stride = [32, 16, 8][yolo_layer] # stride of this layer + if cfg.endswith('yolov3-tiny.cfg'): + stride *= 2 - nG = int(img_size / stride) # number grid points - - device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') - create_grids(self, img_size, nG, device) + nG = int(img_size / stride) # number grid points + create_grids(self, img_size, nG) def forward(self, p, img_size, var=None): if ONNX_EXPORT: bs, nG = 1, self.nG # batch size, grid size else: bs, nG = p.shape[0], p.shape[-1] - if self.img_size != img_size: create_grids(self, img_size, nG, p.device) @@ -214,7 +211,8 @@ def get_yolo_layers(model): return [i for i, x in enumerate(a) if x] # [82, 94, 106] for yolov3 -def create_grids(self, img_size, nG, device): +def create_grids(self, img_size, nG, device='cpu'): + self.img_size = img_size self.stride = img_size / nG # build xy offsets @@ -225,7 +223,7 @@ def create_grids(self, img_size, nG, device): # build wh gains self.anchor_vec = self.anchors.to(device) / self.stride self.anchor_wh = self.anchor_vec.view(1, self.nA, 1, 1, 2).to(device) - self.nG = torch.FloatTensor([nG]).to(device) + self.nG = torch.Tensor([nG], device=device) def load_darknet_weights(self, weights, cutoff=-1): diff --git a/train.py b/train.py index 7e22ec61..10f6332f 100644 --- a/train.py +++ b/train.py @@ -23,10 +23,8 @@ def train( best = weights + 'best.pt' device = torch_utils.select_device() - if multi_scale: # pass maximum multi_scale size - img_size = 608 - ms_index = -1 - ms_sizes = [320, 352, 384, 416, 448, 480, 512, 544, 576, 608] + if multi_scale: + img_size = 608 # initiate with maximum multi_scale size else: torch.backends.cudnn.benchmark = True # unsuitable for multiscale @@ -155,9 +153,7 @@ def train( # Multi-Scale training (320 - 608 pixels) every 10 batches if multi_scale and (i + 1) % 10 == 0: - ms_index += 1 - dataloader.img_size = ms_sizes[ms_index] - # dataloader.img_size = random.choice(range(10, 20)) * 32 + dataloader.img_size = random.choice(range(10, 20)) * 32 print('multi_scale img_size = %g' % dataloader.img_size) # Update best loss From 2f1afd2d69a0be48e5413f78dd4275a398871039 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Mar 2019 15:38:53 +0200 Subject: [PATCH 0501/2595] multi_gpu multi_scale --- models.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/models.py b/models.py index 4c70baa1..dd77c471 100755 --- a/models.py +++ b/models.py @@ -223,8 +223,7 @@ def create_grids(self, img_size, nG, device='cpu'): # build wh gains self.anchor_vec = self.anchors.to(device) / self.stride self.anchor_wh = self.anchor_vec.view(1, self.nA, 1, 1, 2).to(device) - self.nG = torch.Tensor([nG], device=device) - + self.nG = torch.FloatTensor([nG]).to(device) def load_darknet_weights(self, weights, cutoff=-1): # Parses and loads the weights stored in 'weights' From 735b1a370b177949927ee6d50644fc9125886277 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Mar 2019 15:43:10 +0200 Subject: [PATCH 0502/2595] multi_gpu multi_scale --- models.py | 4 ++++ train.py | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index dd77c471..18dc2b50 100755 --- a/models.py +++ b/models.py @@ -105,6 +105,9 @@ class YOLOLayer(nn.Module): self.nA = len(anchors) # number of anchors (3) self.nC = nC # number of classes (80) self.img_size = 0 + # self.nG, self.stride, self.grid_xy, self.anchor_vec, self.anchor_wh = \ + # [], [], [], [], [] + create_grids(self, 32, 1) if ONNX_EXPORT: # grids must be computed in __init__ stride = [32, 16, 8][yolo_layer] # stride of this layer @@ -225,6 +228,7 @@ def create_grids(self, img_size, nG, device='cpu'): self.anchor_wh = self.anchor_vec.view(1, self.nA, 1, 1, 2).to(device) self.nG = torch.FloatTensor([nG]).to(device) + def load_darknet_weights(self, weights, cutoff=-1): # Parses and loads the weights stored in 'weights' # cutoff: save layers between 0 and cutoff (if cutoff = -1 all are saved) diff --git a/train.py b/train.py index 10f6332f..5e9ee0e6 100644 --- a/train.py +++ b/train.py @@ -12,7 +12,7 @@ def train( data_cfg, img_size=416, resume=False, - epochs=100, + epochs=270, batch_size=16, accumulate=1, multi_scale=False, From bc989a0147746af7ce6af77da949e106bfe94db3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Mar 2019 15:44:36 +0200 Subject: [PATCH 0503/2595] multi_gpu multi_scale --- models.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/models.py b/models.py index 18dc2b50..21e871e1 100755 --- a/models.py +++ b/models.py @@ -105,9 +105,8 @@ class YOLOLayer(nn.Module): self.nA = len(anchors) # number of anchors (3) self.nC = nC # number of classes (80) self.img_size = 0 - # self.nG, self.stride, self.grid_xy, self.anchor_vec, self.anchor_wh = \ - # [], [], [], [], [] - create_grids(self, 32, 1) + self.nG, self.stride, self.grid_xy, self.anchor_vec, self.anchor_wh = \ + [], [], [], [], [] if ONNX_EXPORT: # grids must be computed in __init__ stride = [32, 16, 8][yolo_layer] # stride of this layer From 973715060d6f2cc23ef5b5c136e049d9374c5c01 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Mar 2019 15:48:52 +0200 Subject: [PATCH 0504/2595] multi_gpu multi_scale --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 21e871e1..ef417603 100755 --- a/models.py +++ b/models.py @@ -105,8 +105,8 @@ class YOLOLayer(nn.Module): self.nA = len(anchors) # number of anchors (3) self.nC = nC # number of classes (80) self.img_size = 0 - self.nG, self.stride, self.grid_xy, self.anchor_vec, self.anchor_wh = \ - [], [], [], [], [] + device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') + create_grids(self, 32, 1, device=device) if ONNX_EXPORT: # grids must be computed in __init__ stride = [32, 16, 8][yolo_layer] # stride of this layer From 613ce1be1aac84c729bb1e77b029df260644cc1c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Mar 2019 15:50:15 +0200 Subject: [PATCH 0505/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 12cd7342..1e5e691f 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -37,10 +37,10 @@ def model_info(model): # Plots a line-by-line description of a PyTorch model n_p = sum(x.numel() for x in model.parameters()) # number parameters n_g = sum(x.numel() for x in model.parameters() if x.requires_grad) # number gradients - print('\n%5s %35s %9s %12s %20s %12s %12s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) + print('\n%5s %38s %9s %12s %20s %12s %12s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) for i, (name, p) in enumerate(model.named_parameters()): name = name.replace('module_list.', '') - print('%5g %35s %9s %12g %20s %12.3g %12.3g' % ( + print('%5g %38s %9s %12g %20s %12.3g %12.3g' % ( i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) print('Model Summary: %g layers, %g parameters, %g gradients' % (i + 1, n_p, n_g)) From 83c6eba700997eb826952e217b069b2779d0d26e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Mar 2019 13:26:46 +0200 Subject: [PATCH 0506/2595] Update README.md --- README.md | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0fe97933..1e26b8ee 100755 --- a/README.md +++ b/README.md @@ -84,11 +84,48 @@ Run `detect.py` with `webcam=True` to show a live webcam feed. **PyTorch** format: - https://drive.google.com/drive/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI -# Validation mAP +# mAP -Run `test.py` to validate the official YOLOv3 weights `weights/yolov3.weights` against the 5000 validation images. You should obtain a .584 mAP at `--img-size 416`, or .586 at `--img-size 608` using this repo, compared to .579 at 608 x 608 reported in darknet (https://arxiv.org/abs/1804.02767). +Run `test.py --save-json --conf-thres 0.005` to test the official YOLOv3 weights `weights/yolov3.weights` against the 5000 validation images. Compare to .579 at 608 x 608 reported in darknet (https://arxiv.org/abs/1804.02767). -Run `test.py --weights weights/latest.pt` to validate against the latest training results. **Default training settings produce a 0.522 mAP at epoch 62.** Hyperparameter settings and loss equation changes affect these results significantly, and additional trade studies may be needed to further improve this. +Run `test.py --weights weights/latest.pt` to validate against the latest training results. Hyperparameter settings and loss equation changes affect these results significantly, and additional trade studies may be needed to further improve this. + +``` bash +sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 +# bash yolov3/data/get_coco_dataset.sh +sudo rm -rf cocoapi && git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 +cd yolov3 && python3 test.py --save-json --conf-thres 0.005 + +... + +Namespace(batch_size=32, cfg='cfg/yolov3.cfg', conf_thres=0.005, data_cfg='cfg/coco.data', img_size=416, iou_thres=0.5, nms_thres=0.45, save_json=True, weights='weights/yolov3.weights') + +loading annotations into memory... +Done (t=4.17s) +creating index... +index created! +Loading and preparing results... +DONE (t=1.75s) +creating index... +index created! +Running per image evaluation... +Evaluate annotation type *bbox* +DONE (t=39.30s). +Accumulating evaluation results... +DONE (t=4.63s). + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.307 + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.545 + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.309 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.140 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.333 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.453 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.266 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.396 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.415 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.222 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.449 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.575 +``` # Contact From a5468acb5433535a244862825fef6023f833ed4f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Mar 2019 13:35:03 +0200 Subject: [PATCH 0507/2595] Update README.md --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index 1e26b8ee..e39122ad 100755 --- a/README.md +++ b/README.md @@ -45,6 +45,21 @@ Each epoch trains on 120,000 images from the train and validate COCO sets, and t `from utils import utils; utils.plot_results()` ![Alt](https://user-images.githubusercontent.com/26833433/53494085-3251aa00-3a9d-11e9-8af7-8c08cf40d70b.png "train.py results") +# Speed + +https://cloud.google.com/deep-learning-vm/ +**Machine type:** n1-highmem-4 (4 vCPUs, 26 GB memory) +**CPU platform:** Intel Skylake +**GPUs:** 1-4 x NVIDIA Tesla P100 +**HDD:** 100 GB SSD + +GPUs | `batch_size` | speed | COCO epoch +--- |---| --- | --- +(P100) | (images) | (s/batch) | (min/epoch) +1 | 24 | 0.84s | 70min +2 | 48 | 1.27s | 53min +4 | 96 | 2.11s | 44min + ## Image Augmentation `datasets.py` applies random OpenCV-powered (https://opencv.org/) augmentation to the input images in accordance with the following specifications. Augmentation is applied **only** during training, not during inference. Bounding boxes are automatically tracked and updated with the images. 416 x 416 examples pictured below. From 7e8fc146e1d610b76d9becaaba6b9b2ba8ba95aa Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Mar 2019 13:35:39 +0200 Subject: [PATCH 0508/2595] Update README.md --- README.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index e39122ad..c5d7f059 100755 --- a/README.md +++ b/README.md @@ -45,21 +45,6 @@ Each epoch trains on 120,000 images from the train and validate COCO sets, and t `from utils import utils; utils.plot_results()` ![Alt](https://user-images.githubusercontent.com/26833433/53494085-3251aa00-3a9d-11e9-8af7-8c08cf40d70b.png "train.py results") -# Speed - -https://cloud.google.com/deep-learning-vm/ -**Machine type:** n1-highmem-4 (4 vCPUs, 26 GB memory) -**CPU platform:** Intel Skylake -**GPUs:** 1-4 x NVIDIA Tesla P100 -**HDD:** 100 GB SSD - -GPUs | `batch_size` | speed | COCO epoch ---- |---| --- | --- -(P100) | (images) | (s/batch) | (min/epoch) -1 | 24 | 0.84s | 70min -2 | 48 | 1.27s | 53min -4 | 96 | 2.11s | 44min - ## Image Augmentation `datasets.py` applies random OpenCV-powered (https://opencv.org/) augmentation to the input images in accordance with the following specifications. Augmentation is applied **only** during training, not during inference. Bounding boxes are automatically tracked and updated with the images. 416 x 416 examples pictured below. @@ -76,6 +61,21 @@ HS**V** Intensity | +/- 50% +## Speed + +https://cloud.google.com/deep-learning-vm/ +**Machine type:** n1-highmem-4 (4 vCPUs, 26 GB memory) +**CPU platform:** Intel Skylake +**GPUs:** 1-4 x NVIDIA Tesla P100 +**HDD:** 100 GB SSD + +GPUs | `batch_size` | speed | COCO epoch +--- |---| --- | --- +(P100) | (images) | (s/batch) | (min/epoch) +1 | 24 | 0.84s | 70min +2 | 48 | 1.27s | 53min +4 | 96 | 2.11s | 44min + # Inference Run `detect.py` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder: From 87cb8e661b8679730ed6ac9c4284d03266170c17 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Mar 2019 14:08:24 +0200 Subject: [PATCH 0509/2595] Update README.md --- README.md | 78 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 40 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index c5d7f059..6e0ca2e5 100755 --- a/README.md +++ b/README.md @@ -92,54 +92,56 @@ Run `detect.py` with `webcam=True` to show a live webcam feed. # Pretrained Weights -**Darknet** format: -- https://pjreddie.com/media/files/yolov3.weights -- https://pjreddie.com/media/files/yolov3-tiny.weights - -**PyTorch** format: -- https://drive.google.com/drive/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI +- Darknet `*.weights` format: https://pjreddie.com/media/files/yolov3.weights +- PyTorch `*.pt` format: https://drive.google.com/drive/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI # mAP -Run `test.py --save-json --conf-thres 0.005` to test the official YOLOv3 weights `weights/yolov3.weights` against the 5000 validation images. Compare to .579 at 608 x 608 reported in darknet (https://arxiv.org/abs/1804.02767). +- Use `test.py --weights weights/yolov3.weights` to test the official YOLOv3 weights. +- Use `test.py --weights weights/latest.pt` to test the latest training results. +- Compare to official darknet results from https://arxiv.org/abs/1804.02767. -Run `test.py --weights weights/latest.pt` to validate against the latest training results. Hyperparameter settings and loss equation changes affect these results significantly, and additional trade studies may be needed to further improve this. + | ultralytics/yolov3 | darknet +--- | ---| --- +YOLOv3-320 | 51.3 | 51.5 +YOLOv3-416 | 54.9 | 55.3 +YOLOv3-608 | 57.9 | 57.9 ``` bash sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 # bash yolov3/data/get_coco_dataset.sh sudo rm -rf cocoapi && git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 -cd yolov3 && python3 test.py --save-json --conf-thres 0.005 +cd yolov3 -... - -Namespace(batch_size=32, cfg='cfg/yolov3.cfg', conf_thres=0.005, data_cfg='cfg/coco.data', img_size=416, iou_thres=0.5, nms_thres=0.45, save_json=True, weights='weights/yolov3.weights') - -loading annotations into memory... -Done (t=4.17s) -creating index... -index created! -Loading and preparing results... -DONE (t=1.75s) -creating index... -index created! -Running per image evaluation... -Evaluate annotation type *bbox* -DONE (t=39.30s). -Accumulating evaluation results... -DONE (t=4.63s). - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.307 - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.545 - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.309 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.140 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.333 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.453 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.266 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.396 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.415 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.222 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.449 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.575 +python3 test.py --save-json --conf-thres 0.001 --img-size 416 +Namespace(batch_size=32, cfg='cfg/yolov3.cfg', conf_thres=0.001, data_cfg='cfg/coco.data', img_size=416, iou_thres=0.5, nms_thres=0.45, save_json=True, weights='weights/yolov3.weights') + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.308 + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.549 + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.310 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.141 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.334 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.454 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.267 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.403 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.428 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.237 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.464 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.585 + +python3 test.py --save-json --conf-thres 0.001 --img-size 608 --batch-size 16 +Namespace(batch_size=16, cfg='cfg/yolov3.cfg', conf_thres=0.001, data_cfg='cfg/coco.data', img_size=608, iou_thres=0.5, nms_thres=0.45, save_json=True, weights='weights/yolov3.weights') + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.328 + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.579 + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.335 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.190 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.357 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.428 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.279 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.429 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.456 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.299 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.483 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.572 ``` # Contact From f8994e89ea1e447b42987fdb98dbc04537ef4dd4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Mar 2019 19:20:54 +0200 Subject: [PATCH 0510/2595] updates --- utils/datasets.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 40d935d2..0a44d327 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -208,8 +208,8 @@ class LoadImagesAndLabels: # for training # Normalize img_all = np.stack(img_all)[:, :, :, ::-1].transpose(0, 3, 1, 2) # BGR to RGB and cv2 to pytorch - img_all = np.ascontiguousarray(img_all, dtype=np.float32) - img_all /= 255.0 + img_all = np.ascontiguousarray(img_all, dtype=np.float32) # int8 to float32 + img_all /= 255.0 # 0 - 255 to 0.0 - 1.0 labels_all = torch.from_numpy(np.concatenate(labels_all, 0)) return torch.from_numpy(img_all), labels_all, img_paths, img_shapes From e7075f2b23a20f52e312c043e876805c6279b576 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Mar 2019 19:30:10 +0200 Subject: [PATCH 0511/2595] updates --- utils/datasets.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 0a44d327..8611835e 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -43,9 +43,9 @@ class LoadImages: # for inference img, _, _, _ = letterbox(img0, height=self.height) # Normalize RGB - img = img[:, :, ::-1].transpose(2, 0, 1) - img = np.ascontiguousarray(img, dtype=np.float32) - img /= 255.0 + img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB + img = np.ascontiguousarray(img, dtype=np.float32) # uint8 to float32 + img /= 255.0 # 0 - 255 to 0.0 - 1.0 # cv2.imwrite(img_path + '.letterbox.jpg', 255 * img.transpose((1, 2, 0))[:, :, ::-1]) # save letterbox image return img_path, img, img0 @@ -79,9 +79,9 @@ class LoadWebcam: # for inference img, _, _, _ = letterbox(img0, height=self.height) # Normalize RGB - img = img[:, :, ::-1].transpose(2, 0, 1) - img = np.ascontiguousarray(img, dtype=np.float32) - img /= 255.0 + img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB + img = np.ascontiguousarray(img, dtype=np.float32) # uint8 to float32 + img /= 255.0 # 0 - 255 to 0.0 - 1.0 return img_path, img, img0 @@ -207,8 +207,8 @@ class LoadImagesAndLabels: # for training img_shapes.append((h, w)) # Normalize - img_all = np.stack(img_all)[:, :, :, ::-1].transpose(0, 3, 1, 2) # BGR to RGB and cv2 to pytorch - img_all = np.ascontiguousarray(img_all, dtype=np.float32) # int8 to float32 + img_all = np.stack(img_all)[:, :, :, ::-1].transpose(0, 3, 1, 2) # list to np.array and BGR to RGB + img_all = np.ascontiguousarray(img_all, dtype=np.float32) # uint8 to float32 img_all /= 255.0 # 0 - 255 to 0.0 - 1.0 labels_all = torch.from_numpy(np.concatenate(labels_all, 0)) From 9885903baf3435d8f3de1a0648d47e17ff05e241 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Mar 2019 20:31:09 +0200 Subject: [PATCH 0512/2595] updates --- utils/datasets.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 8611835e..0cd86dd2 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -73,7 +73,7 @@ class LoadWebcam: # for inference ret_val, img0 = self.cam.read() assert ret_val, 'Webcam Error' img_path = 'webcam_%g.jpg' % self.count - img0 = cv2.flip(img0, 1) + img0 = cv2.flip(img0, 1) # flip left-right # Padded resize img, _, _, _ = letterbox(img0, height=self.height) @@ -155,7 +155,10 @@ class LoadImagesAndLabels: # for training # Load labels if os.path.isfile(label_path): - labels0 = np.loadtxt(label_path, dtype=np.float32).reshape(-1, 5) + # labels0 = np.loadtxt(label_path, dtype=np.float32).reshape(-1, 5) # SLOWER + with open(label_path, 'r') as file: + lines = file.read().splitlines() + labels0 = np.array([x.split() for x in lines], dtype=np.float32) # Normalized xywh to pixel xyxy format labels = labels0.copy() From 327aaebd7c291c1feb0a5a56f3516286e8fbeae2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Mar 2019 22:10:18 +0200 Subject: [PATCH 0513/2595] updates --- train.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index 5e9ee0e6..b791d7e4 100644 --- a/train.py +++ b/train.py @@ -36,6 +36,7 @@ def train( # Get dataloader dataloader = LoadImagesAndLabels(train_path, batch_size, img_size, augment=True) + # dataloader = torch.utils.data.DataLoader(dataloader, batch_size=batch_size, num_workers=0) lr0 = 0.001 # initial learning rate cutoff = -1 # backbone reaches to cutoff layer @@ -81,7 +82,7 @@ def train( # Start training t0 = time.time() model_info(model) - n_burnin = min(round(dataloader.nB / 5 + 1), 1000) # number of burn-in batches + n_burnin = min(round(len(dataloader) / 5 + 1), 1000) # burn-in batches for epoch in range(epochs): model.train() epoch += start_epoch From d1a1ea233ae16ff248b0c37288ed9f0bbbf91ca7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Mar 2019 01:03:29 +0200 Subject: [PATCH 0514/2595] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6e0ca2e5..258e26af 100755 --- a/README.md +++ b/README.md @@ -72,9 +72,9 @@ https://cloud.google.com/deep-learning-vm/ GPUs | `batch_size` | speed | COCO epoch --- |---| --- | --- (P100) | (images) | (s/batch) | (min/epoch) -1 | 24 | 0.84s | 70min -2 | 48 | 1.27s | 53min -4 | 96 | 2.11s | 44min +1 | 16 | 0.54s | 66min +2 | 32 | 0.99s | 61min +4 | 64 | 1.61s | 49min # Inference From ca67e2353bfcb54befd1882f6c0dd76fd9238c17 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Mar 2019 01:57:16 +0200 Subject: [PATCH 0515/2595] updates --- utils/datasets.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 0cd86dd2..6ca270d1 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -92,34 +92,39 @@ class LoadWebcam: # for inference class LoadImagesAndLabels: # for training def __init__(self, path, batch_size=1, img_size=608, augment=False): with open(path, 'r') as file: - self.img_files = file.readlines() - self.img_files = [x.replace('\n', '') for x in self.img_files] + self.img_files = file.read().splitlines() self.img_files = list(filter(lambda x: len(x) > 0, self.img_files)) + self.nF = len(self.img_files) # number of image files + self.nB = math.ceil(self.nF / batch_size) # number of batches + assert self.nF > 0, 'No images found in %s' % path + self.label_files = [x.replace('images', 'labels').replace('.png', '.txt').replace('.jpg', '.txt') for x in self.img_files] - self.nF = len(self.img_files) # number of image files - self.nB = math.ceil(self.nF / batch_size) # number of batches self.batch_size = batch_size self.img_size = img_size self.augment = augment - - assert self.nF > 0, 'No images found in %s' % path + iter(self) def __iter__(self): self.count = -1 self.shuffled_vector = np.random.permutation(self.nF) if self.augment else np.arange(self.nF) return self + def __getitem__(self, index): + return self.load_images(index, index + 1) + def __next__(self): - self.count += 1 - if self.count == self.nB: + self.count += 1 # batches + if self.count >= self.nB: raise StopIteration - ia = self.count * self.batch_size - ib = min((self.count + 1) * self.batch_size, self.nF) + ia = self.count * self.batch_size # start index + ib = min(ia + self.batch_size, self.nF) # end index + return self.load_images(ia, ib) + def load_images(self, ia, ib): img_all, labels_all, img_paths, img_shapes = [], [], [], [] for index, files_index in enumerate(range(ia, ib)): img_path = self.img_files[self.shuffled_vector[files_index]] From 2cd6805063e54fc64f6d10827a8ee3fe23182f27 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Mar 2019 02:28:30 +0200 Subject: [PATCH 0516/2595] updates --- utils/datasets.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 6ca270d1..31fc166b 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -113,7 +113,12 @@ class LoadImagesAndLabels: # for training return self def __getitem__(self, index): - return self.load_images(index, index + 1) + imgs, labels0, img_paths, img_shapes = self.load_images(index, index + 1) + labels0[:,0] = index % self.batch_size + + labels = torch.zeros(100, 6) + labels[:min(len(labels0), 100)] = labels0 # max 100 labels per image + return imgs.squeeze(0), labels, img_paths, img_shapes def __next__(self): self.count += 1 # batches @@ -122,6 +127,7 @@ class LoadImagesAndLabels: # for training ia = self.count * self.batch_size # start index ib = min(ia + self.batch_size, self.nF) # end index + return self.load_images(ia, ib) def load_images(self, ia, ib): From 35396adc9cf3908ac65e0b146ba8e74f7c6fdbaa Mon Sep 17 00:00:00 2001 From: perry0418 <34980036+perry0418@users.noreply.github.com> Date: Thu, 21 Mar 2019 12:02:57 +0800 Subject: [PATCH 0517/2595] Update train.py solve the Multi-GPU --resume Error #138 https://github.com/ultralytics/yolov3/issues/138 --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index b791d7e4..7ec5a46c 100644 --- a/train.py +++ b/train.py @@ -32,7 +32,7 @@ def train( train_path = parse_data_cfg(data_cfg)['train'] # Initialize model - model = Darknet(cfg, img_size) + model = Darknet(cfg, img_size).to(device) # Get dataloader dataloader = LoadImagesAndLabels(train_path, batch_size, img_size, augment=True) @@ -43,7 +43,7 @@ def train( start_epoch = 0 best_loss = float('inf') if resume: - checkpoint = torch.load(latest, map_location='cpu') + checkpoint = torch.load(latest, map_location=device) # Load weights to resume from model.load_state_dict(checkpoint['model']) From d661fba8ae27b2c08b3ccc804099dc75beeadb93 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Mar 2019 11:48:50 +0200 Subject: [PATCH 0518/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index b791d7e4..306a8c64 100644 --- a/train.py +++ b/train.py @@ -70,7 +70,7 @@ def train( cutoff = load_darknet_weights(model, weights + 'yolov3-tiny.conv.15') # Set optimizer - optimizer = torch.optim.SGD(model.parameters(), lr=lr0, momentum=.9) + optimizer = torch.optim.SGD(filter(lambda x: x.requires_grad, model.parameters()), lr=lr0, momentum=.9) if torch.cuda.device_count() > 1: model = nn.DataParallel(model) From 03791babfb3462cba287155d45107124283717c4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Mar 2019 12:08:55 +0200 Subject: [PATCH 0519/2595] Merge branch 'master' of /Users/glennjocher/PycharmProjects/yolov3 with conflicts. --- train.py | 45 +++++++++++++++++++++++---------------------- utils/gcp.sh | 2 +- 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/train.py b/train.py index 27647173..db453b4c 100644 --- a/train.py +++ b/train.py @@ -7,6 +7,7 @@ from utils.datasets import * from utils.utils import * +# @profile def train( cfg, data_cfg, @@ -34,47 +35,39 @@ def train( # Initialize model model = Darknet(cfg, img_size).to(device) + # Optimizer + lr0 = 0.001 # initial learning rate + optimizer = torch.optim.SGD(model.parameters(), lr=lr0, momentum=.9) + # Get dataloader dataloader = LoadImagesAndLabels(train_path, batch_size, img_size, augment=True) - # dataloader = torch.utils.data.DataLoader(dataloader, batch_size=batch_size, num_workers=0) + # from torch.utils.data import DataLoader + # dataloader = DataLoader(dataloader, batch_size=batch_size, num_workers=1) - lr0 = 0.001 # initial learning rate cutoff = -1 # backbone reaches to cutoff layer start_epoch = 0 best_loss = float('inf') - if resume: - checkpoint = torch.load(latest, map_location=device) - - # Load weights to resume from + if resume: # Load previously saved PyTorch model + checkpoint = torch.load(latest, map_location=device) # load checkpoin model.load_state_dict(checkpoint['model']) - - # Transfer learning (train only YOLO layers) - # for i, (name, p) in enumerate(model.named_parameters()): - # p.requires_grad = True if (p.shape[0] == 255) else False - - # Set optimizer - optimizer = torch.optim.SGD(filter(lambda x: x.requires_grad, model.parameters()), lr=lr0, momentum=.9) - start_epoch = checkpoint['epoch'] + 1 if checkpoint['optimizer'] is not None: optimizer.load_state_dict(checkpoint['optimizer']) best_loss = checkpoint['best_loss'] - del checkpoint # current, saved - else: - # Initialize model with backbone (optional) + else: # Initialize model with backbone (optional) if cfg.endswith('yolov3.cfg'): cutoff = load_darknet_weights(model, weights + 'darknet53.conv.74') elif cfg.endswith('yolov3-tiny.cfg'): cutoff = load_darknet_weights(model, weights + 'yolov3-tiny.conv.15') - # Set optimizer - optimizer = torch.optim.SGD(filter(lambda x: x.requires_grad, model.parameters()), lr=lr0, momentum=.9) - if torch.cuda.device_count() > 1: model = nn.DataParallel(model) - model.to(device).train() + + # # Transfer learning (train only YOLO layers) + for i, (name, p) in enumerate(model.named_parameters()): + p.requires_grad = True if (p.shape[0] == 255) else False # Set scheduler # scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[54, 61], gamma=0.1) @@ -110,6 +103,11 @@ def train( ui = -1 rloss = defaultdict(float) for i, (imgs, targets, _, _) in enumerate(dataloader): + + if targets.shape[1] == 100: # multithreaded forced to 100 + targets = targets.view((-1, 6)) + targets = targets[targets[:, 5].nonzero().squeeze()] + targets = targets.to(device) nT = targets.shape[0] if nT == 0: # if no targets continue @@ -157,6 +155,9 @@ def train( dataloader.img_size = random.choice(range(10, 20)) * 32 print('multi_scale img_size = %g' % dataloader.img_size) + if i == 10: + return + # Update best loss if rloss['total'] < best_loss: best_loss = rloss['total'] @@ -191,7 +192,7 @@ def train( if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--epochs', type=int, default=270, help='number of epochs') - parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') + parser.add_argument('--batch-size', type=int, default=2, help='size of each image batch') parser.add_argument('--accumulate', type=int, default=1, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='cfg/coco.data', help='coco.data file path') diff --git a/utils/gcp.sh b/utils/gcp.sh index 5cc27849..6d46f236 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -9,7 +9,7 @@ sudo shutdown # Start sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 cp -r weights yolov3 -cd yolov3 && python3 train.py --batch-size 26 +cd yolov3 && python3 train.py --batch-size 64 --multi_scale # Resume python3 train.py --resume From aecf840701039ff46b16fd352d1dc9a892ec3578 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Mar 2019 12:09:54 +0200 Subject: [PATCH 0520/2595] updates --- train.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/train.py b/train.py index db453b4c..572ff973 100644 --- a/train.py +++ b/train.py @@ -7,7 +7,6 @@ from utils.datasets import * from utils.utils import * -# @profile def train( cfg, data_cfg, @@ -155,9 +154,6 @@ def train( dataloader.img_size = random.choice(range(10, 20)) * 32 print('multi_scale img_size = %g' % dataloader.img_size) - if i == 10: - return - # Update best loss if rloss['total'] < best_loss: best_loss = rloss['total'] @@ -192,7 +188,7 @@ def train( if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--epochs', type=int, default=270, help='number of epochs') - parser.add_argument('--batch-size', type=int, default=2, help='size of each image batch') + parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulate', type=int, default=1, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='cfg/coco.data', help='coco.data file path') From 2856af5036de44188a18928368dbd726b42bbacb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Mar 2019 12:11:08 +0200 Subject: [PATCH 0521/2595] updates --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 572ff973..f37bae87 100644 --- a/train.py +++ b/train.py @@ -64,9 +64,9 @@ def train( if torch.cuda.device_count() > 1: model = nn.DataParallel(model) - # # Transfer learning (train only YOLO layers) - for i, (name, p) in enumerate(model.named_parameters()): - p.requires_grad = True if (p.shape[0] == 255) else False + # Transfer learning (train only YOLO layers) + # for i, (name, p) in enumerate(model.named_parameters()): + # p.requires_grad = True if (p.shape[0] == 255) else False # Set scheduler # scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[54, 61], gamma=0.1) From be38caf2841c1614a850224b4861101a86f24ab3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Mar 2019 12:13:09 +0200 Subject: [PATCH 0522/2595] updates --- train.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index f37bae87..9efbb7f4 100644 --- a/train.py +++ b/train.py @@ -103,11 +103,10 @@ def train( rloss = defaultdict(float) for i, (imgs, targets, _, _) in enumerate(dataloader): - if targets.shape[1] == 100: # multithreaded forced to 100 + if targets.shape[1] == 100: # multithreaded 100-size block targets = targets.view((-1, 6)) targets = targets[targets[:, 5].nonzero().squeeze()] - targets = targets.to(device) nT = targets.shape[0] if nT == 0: # if no targets continue continue @@ -122,7 +121,7 @@ def train( pred = model(imgs.to(device)) # Build targets - target_list = build_targets(model, targets, pred) + target_list = build_targets(model, targets.to(device), pred) # Compute loss loss, loss_dict = compute_loss(pred, target_list) From 56d5b2fcc05e8828821558b493831e789ec1130a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Mar 2019 13:00:24 +0200 Subject: [PATCH 0523/2595] Update README.md --- README.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 258e26af..50de72b3 100755 --- a/README.md +++ b/README.md @@ -80,11 +80,14 @@ GPUs | `batch_size` | speed | COCO epoch Run `detect.py` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder: -**YOLOv3:** `detect.py --cfg cfg/yolov3.cfg --weights weights/yolov3.pt` - +**YOLOv3:** `python3 detect.py --cfg cfg/yolov3.cfg --weights weights/yolov3.pt` + -**YOLOv3-tiny:** `detect.py --cfg cfg/yolov3-tiny.cfg --weights weights/yolov3-tiny.pt` - +**YOLOv3-tiny:** `python3 detect.py --cfg cfg/yolov3-tiny.cfg --weights weights/yolov3-tiny.pt` + + +**YOLOv3-SPP:** `python3 detect.py --cfg cfg/yolov3-spp.cfg --weights weights/yolov3-spp.pt` + ## Webcam From 0bb3cc100a3c05c22f444aab788ad2470895227b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Mar 2019 13:01:07 +0200 Subject: [PATCH 0524/2595] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 50de72b3..ff7d9134 100755 --- a/README.md +++ b/README.md @@ -80,13 +80,13 @@ GPUs | `batch_size` | speed | COCO epoch Run `detect.py` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder: -**YOLOv3:** `python3 detect.py --cfg cfg/yolov3.cfg --weights weights/yolov3.pt` +**YOLOv3:** `python3 detect.py --cfg cfg/yolov3.cfg --weights weights/yolov3.weights` -**YOLOv3-tiny:** `python3 detect.py --cfg cfg/yolov3-tiny.cfg --weights weights/yolov3-tiny.pt` +**YOLOv3-tiny:** `python3 detect.py --cfg cfg/yolov3-tiny.cfg --weights weights/yolov3-tiny.weights` -**YOLOv3-SPP:** `python3 detect.py --cfg cfg/yolov3-spp.cfg --weights weights/yolov3-spp.pt` +**YOLOv3-SPP:** `python3 detect.py --cfg cfg/yolov3-spp.cfg --weights weights/yolov3-spp.weights` ## Webcam From 70fe2204b4250c238be4c32e65f8038a297059cf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Mar 2019 14:48:40 +0200 Subject: [PATCH 0525/2595] multi_thread dataloader --- models.py | 3 --- train.py | 19 ++++++++++++------- utils/datasets.py | 11 ++++++++--- utils/utils.py | 2 +- 4 files changed, 21 insertions(+), 14 deletions(-) diff --git a/models.py b/models.py index ef417603..67e8a83d 100755 --- a/models.py +++ b/models.py @@ -174,9 +174,6 @@ class Darknet(nn.Module): self.module_defs[0]['cfg'] = cfg_path self.module_defs[0]['height'] = img_size self.hyperparams, self.module_list = create_modules(self.module_defs) - self.img_size = img_size - self.loss_names = ['loss', 'xy', 'wh', 'conf', 'cls', 'nT'] - self.losses = [] def forward(self, x, var=None): img_size = x.shape[-1] diff --git a/train.py b/train.py index 9efbb7f4..52f22b3e 100644 --- a/train.py +++ b/train.py @@ -1,6 +1,8 @@ import argparse import time +from torch.utils.data import DataLoader + import test # Import test.py to get mAP after each epoch from models import * from utils.datasets import * @@ -17,6 +19,7 @@ def train( accumulate=1, multi_scale=False, freeze_backbone=False, + num_workers=0 ): weights = 'weights' + os.sep latest = weights + 'latest.pt' @@ -38,10 +41,11 @@ def train( lr0 = 0.001 # initial learning rate optimizer = torch.optim.SGD(model.parameters(), lr=lr0, momentum=.9) - # Get dataloader - dataloader = LoadImagesAndLabels(train_path, batch_size, img_size, augment=True) - # from torch.utils.data import DataLoader - # dataloader = DataLoader(dataloader, batch_size=batch_size, num_workers=1) + # Dataloader + if num_workers > 0: + cv2.setNumThreads(0) # to prevent OpenCV from multithreading + dataset = LoadImagesAndLabels(train_path, img_size=img_size, augment=True) + dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=num_workers) cutoff = -1 # backbone reaches to cutoff layer start_epoch = 0 @@ -102,7 +106,6 @@ def train( ui = -1 rloss = defaultdict(float) for i, (imgs, targets, _, _) in enumerate(dataloader): - if targets.shape[1] == 100: # multithreaded 100-size block targets = targets.view((-1, 6)) targets = targets[targets[:, 5].nonzero().squeeze()] @@ -150,8 +153,8 @@ def train( # Multi-Scale training (320 - 608 pixels) every 10 batches if multi_scale and (i + 1) % 10 == 0: - dataloader.img_size = random.choice(range(10, 20)) * 32 - print('multi_scale img_size = %g' % dataloader.img_size) + dataset.img_size = random.choice(range(10, 20)) * 32 + print('multi_scale img_size = %g' % dataset.img_size) # Update best loss if rloss['total'] < best_loss: @@ -194,6 +197,7 @@ if __name__ == '__main__': parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') + parser.add_argument('--num_workers', type=int, default=0, help='number of Pytorch DataLoader workers') opt = parser.parse_args() print(opt, end='\n\n') @@ -208,4 +212,5 @@ if __name__ == '__main__': batch_size=opt.batch_size, accumulate=opt.accumulate, multi_scale=opt.multi_scale, + num_workers=opt.num_workers ) diff --git a/utils/datasets.py b/utils/datasets.py index 31fc166b..2280c6a1 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -7,7 +7,6 @@ import cv2 import numpy as np import torch -# from torch.utils.data import Dataset from utils.utils import xyxy2xywh @@ -114,10 +113,11 @@ class LoadImagesAndLabels: # for training def __getitem__(self, index): imgs, labels0, img_paths, img_shapes = self.load_images(index, index + 1) - labels0[:,0] = index % self.batch_size + labels0[:, 0] = index % self.batch_size labels = torch.zeros(100, 6) labels[:min(len(labels0), 100)] = labels0 # max 100 labels per image + return imgs.squeeze(0), labels, img_paths, img_shapes def __next__(self): @@ -225,7 +225,12 @@ class LoadImagesAndLabels: # for training img_all = np.ascontiguousarray(img_all, dtype=np.float32) # uint8 to float32 img_all /= 255.0 # 0 - 255 to 0.0 - 1.0 - labels_all = torch.from_numpy(np.concatenate(labels_all, 0)) + if len(labels_all) > 0: + labels_all = np.concatenate(labels_all, 0) + else: + labels_all = np.zeros((1, 6), dtype='float32') + + labels_all = torch.from_numpy(labels_all) return torch.from_numpy(img_all), labels_all, img_paths, img_shapes def __len__(self): diff --git a/utils/utils.py b/utils/utils.py index 1e5e691f..7c3d9929 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -40,7 +40,7 @@ def model_info(model): print('\n%5s %38s %9s %12s %20s %12s %12s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) for i, (name, p) in enumerate(model.named_parameters()): name = name.replace('module_list.', '') - print('%5g %38s %9s %12g %20s %12.3g %12.3g' % ( + print('%5g %40s %9s %12g %20s %10.3g %10.3g' % ( i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) print('Model Summary: %g layers, %g parameters, %g gradients' % (i + 1, n_p, n_g)) From a3067e7978d64c7290868b5685b04d7cda5005e4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Mar 2019 14:57:41 +0200 Subject: [PATCH 0526/2595] multi_thread dataloader --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 52f22b3e..0e8f1e28 100644 --- a/train.py +++ b/train.py @@ -197,7 +197,7 @@ if __name__ == '__main__': parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') - parser.add_argument('--num_workers', type=int, default=0, help='number of Pytorch DataLoader workers') + parser.add_argument('--num_workers', type=int, default=4, help='number of Pytorch DataLoader workers') opt = parser.parse_args() print(opt, end='\n\n') From a024286ec12145c64bf8733f0842386cfce6d953 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Mar 2019 15:05:20 +0200 Subject: [PATCH 0527/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 7c3d9929..de79eac6 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -37,7 +37,7 @@ def model_info(model): # Plots a line-by-line description of a PyTorch model n_p = sum(x.numel() for x in model.parameters()) # number parameters n_g = sum(x.numel() for x in model.parameters() if x.requires_grad) # number gradients - print('\n%5s %38s %9s %12s %20s %12s %12s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) + print('\n%5s %40s %9s %12s %20s %10s %10s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) for i, (name, p) in enumerate(model.named_parameters()): name = name.replace('module_list.', '') print('%5g %40s %9s %12g %20s %10.3g %10.3g' % ( From aa95302880b9787916aa99e5ad9eba947f19073a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Mar 2019 15:15:26 +0200 Subject: [PATCH 0528/2595] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index ff7d9134..5d1261aa 100755 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ HS**V** Intensity | +/- 50% ## Speed https://cloud.google.com/deep-learning-vm/ -**Machine type:** n1-highmem-4 (4 vCPUs, 26 GB memory) +**Machine type:** n1-standard-8 (8 vCPUs, 30 GB memory) **CPU platform:** Intel Skylake **GPUs:** 1-4 x NVIDIA Tesla P100 **HDD:** 100 GB SSD @@ -72,9 +72,9 @@ https://cloud.google.com/deep-learning-vm/ GPUs | `batch_size` | speed | COCO epoch --- |---| --- | --- (P100) | (images) | (s/batch) | (min/epoch) -1 | 16 | 0.54s | 66min -2 | 32 | 0.99s | 61min -4 | 64 | 1.61s | 49min +1 | 16 | 0.39s | 48min +2 | 32 | 0.48s | 29min +4 | 64 | 0.65s | 20min # Inference From d047062074456a5618e1135d54368826892ffc17 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Mar 2019 17:26:31 +0200 Subject: [PATCH 0529/2595] updates --- train.py | 2 +- utils/datasets.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index 0e8f1e28..4f621388 100644 --- a/train.py +++ b/train.py @@ -51,7 +51,7 @@ def train( start_epoch = 0 best_loss = float('inf') if resume: # Load previously saved PyTorch model - checkpoint = torch.load(latest, map_location=device) # load checkpoin + checkpoint = torch.load(latest, map_location=device) # load checkpoint model.load_state_dict(checkpoint['model']) start_epoch = checkpoint['epoch'] + 1 if checkpoint['optimizer'] is not None: diff --git a/utils/datasets.py b/utils/datasets.py index 2280c6a1..655072dc 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -108,7 +108,7 @@ class LoadImagesAndLabels: # for training def __iter__(self): self.count = -1 - self.shuffled_vector = np.random.permutation(self.nF) if self.augment else np.arange(self.nF) + #self.shuffled_vector = np.random.permutation(self.nF) if self.augment else np.arange(self.nF) return self def __getitem__(self, index): @@ -133,8 +133,8 @@ class LoadImagesAndLabels: # for training def load_images(self, ia, ib): img_all, labels_all, img_paths, img_shapes = [], [], [], [] for index, files_index in enumerate(range(ia, ib)): - img_path = self.img_files[self.shuffled_vector[files_index]] - label_path = self.label_files[self.shuffled_vector[files_index]] + img_path = self.img_files[files_index] + label_path = self.label_files[files_index] img = cv2.imread(img_path) # BGR assert img is not None, 'File Not Found ' + img_path From 8ebb4da5ccd8c4cef48058a6d95b93699944a037 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Mar 2019 17:28:26 +0200 Subject: [PATCH 0530/2595] updates --- utils/datasets.py | 1 - 1 file changed, 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 655072dc..90b67e54 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -104,7 +104,6 @@ class LoadImagesAndLabels: # for training self.batch_size = batch_size self.img_size = img_size self.augment = augment - iter(self) def __iter__(self): self.count = -1 From 1e62e9418580daea3297d8b5cc91995b77b8db87 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Mar 2019 18:30:14 +0200 Subject: [PATCH 0531/2595] Update train.py --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 4f621388..41f54eae 100644 --- a/train.py +++ b/train.py @@ -197,7 +197,7 @@ if __name__ == '__main__': parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') - parser.add_argument('--num_workers', type=int, default=4, help='number of Pytorch DataLoader workers') + parser.add_argument('--num_workers', type=int, default=0, help='number of Pytorch DataLoader workers') opt = parser.parse_args() print(opt, end='\n\n') From 6aef4e6a78a86ec93ea2dfb5721d4c373a50cb0d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Mar 2019 22:41:12 +0200 Subject: [PATCH 0532/2595] updates --- test.py | 21 +++-- train.py | 30 ++++--- utils/datasets.py | 195 +++++++++++++++++----------------------------- utils/utils.py | 3 + 4 files changed, 109 insertions(+), 140 deletions(-) diff --git a/test.py b/test.py index b614eae6..a4bba9a3 100644 --- a/test.py +++ b/test.py @@ -3,6 +3,8 @@ import json import time from pathlib import Path +from torch.utils.data import DataLoader + from models import * from utils.datasets import * from utils.utils import * @@ -39,16 +41,21 @@ def test( model.to(device).eval() - # Get dataloader - # dataloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path), batch_size=batch_size) - dataloader = LoadImagesAndLabels(test_path, batch_size=batch_size, img_size=img_size) + # Dataloader + dataset = LoadImagesAndLabels(test_path, img_size=img_size) + dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=0) mean_mAP, mean_R, mean_P, seen = 0.0, 0.0, 0.0, 0 print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP')) mP, mR, mAPs, TP, jdict = [], [], [], [], [] AP_accum, AP_accum_count = np.zeros(nC), np.zeros(nC) coco91class = coco80_to_coco91_class() - for (imgs, targets, paths, shapes) in dataloader: + for imgs, targets, paths, shapes in dataloader: + # Unpad and collate targets + for j, t in enumerate(targets): + t[:, 0] = j + targets = torch.cat([t[t[:, 5].nonzero()] for t in targets], 0).squeeze(1) + targets = targets.to(device) t = time.time() output = model(imgs.to(device)) @@ -71,7 +78,7 @@ def test( if save_json: # [{"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], "score": 0.236}, ... box = detections[:, :4].clone() # xyxy - scale_coords(img_size, box, shapes[si]) # to original shape + scale_coords(img_size, box, (shapes[0][si], shapes[1][si])) # to original shape box = xyxy2xywh(box) # xywh box[:, :2] -= box[:, 2:] / 2 # xy center to top-left corner @@ -129,7 +136,7 @@ def test( # Print image mAP and running mean mAP print(('%11s%11s' + '%11.3g' * 4 + 's') % - (seen, dataloader.nF, mean_P, mean_R, mean_mAP, time.time() - t)) + (seen, len(dataset), mean_P, mean_R, mean_mAP, time.time() - t)) # Print mAP per class print('\nmAP Per Class:') @@ -139,7 +146,7 @@ def test( # Save JSON if save_json: - imgIds = [int(Path(x).stem.split('_')[-1]) for x in dataloader.img_files] + imgIds = [int(Path(x).stem.split('_')[-1]) for x in dataset.img_files] with open('results.json', 'w') as file: json.dump(jdict, file) diff --git a/train.py b/train.py index 4f621388..4406dfca 100644 --- a/train.py +++ b/train.py @@ -42,10 +42,8 @@ def train( optimizer = torch.optim.SGD(model.parameters(), lr=lr0, momentum=.9) # Dataloader - if num_workers > 0: - cv2.setNumThreads(0) # to prevent OpenCV from multithreading dataset = LoadImagesAndLabels(train_path, img_size=img_size, augment=True) - dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=num_workers) + dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=4) cutoff = -1 # backbone reaches to cutoff layer start_epoch = 0 @@ -103,17 +101,28 @@ def train( if int(name.split('.')[1]) < cutoff: # if layer < 75 p.requires_grad = False if (epoch == 0) else True - ui = -1 rloss = defaultdict(float) for i, (imgs, targets, _, _) in enumerate(dataloader): - if targets.shape[1] == 100: # multithreaded 100-size block - targets = targets.view((-1, 6)) - targets = targets[targets[:, 5].nonzero().squeeze()] + # Unpad and collate targets + for j, t in enumerate(targets): + t[:, 0] = j + targets = torch.cat([t[t[:, 5].nonzero()] for t in targets], 0).squeeze(1) - nT = targets.shape[0] + nT = len(targets) if nT == 0: # if no targets continue continue + # Plot images with bounding boxes + plot_images = False + if plot_images: + import matplotlib.pyplot as plt + plt.figure(figsize=(10, 10)) + for ip in range(batch_size): + labels = xywh2xyxy(targets[targets[:, 0] == ip, 2:6]).numpy() * img_size + plt.subplot(3, 3, ip + 1).imshow(imgs[ip].numpy().transpose(1, 2, 0)) + plt.plot(labels[:, [0, 2, 2, 0, 0]].T, labels[:, [1, 1, 3, 3, 1]].T, '.-') + plt.axis('off') + # SGD burn-in if (epoch == 0) and (i <= n_burnin): lr = lr0 * (i / n_burnin) ** 4 @@ -138,9 +147,8 @@ def train( optimizer.zero_grad() # Running epoch-means of tracked metrics - ui += 1 for key, val in loss_dict.items(): - rloss[key] = (rloss[key] * ui + val) / (ui + 1) + rloss[key] = (rloss[key] * i + val) / (i + 1) s = ('%8s%12s' + '%10.3g' * 7) % ( '%g/%g' % (epoch, epochs - 1), @@ -197,7 +205,7 @@ if __name__ == '__main__': parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') - parser.add_argument('--num_workers', type=int, default=4, help='number of Pytorch DataLoader workers') + parser.add_argument('--num_workers', type=int, default=0, help='number of Pytorch DataLoader workers') opt = parser.parse_args() print(opt, end='\n\n') diff --git a/utils/datasets.py b/utils/datasets.py index 90b67e54..6ccefcc3 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -6,6 +6,7 @@ import random import cv2 import numpy as np import torch +from torch.utils.data import Dataset from utils.utils import xyxy2xywh @@ -88,152 +89,102 @@ class LoadWebcam: # for inference return 0 -class LoadImagesAndLabels: # for training - def __init__(self, path, batch_size=1, img_size=608, augment=False): +class LoadImagesAndLabels(Dataset): # for training/testing + def __init__(self, path, img_size=416, augment=False): with open(path, 'r') as file: self.img_files = file.read().splitlines() self.img_files = list(filter(lambda x: len(x) > 0, self.img_files)) - - self.nF = len(self.img_files) # number of image files - self.nB = math.ceil(self.nF / batch_size) # number of batches - assert self.nF > 0, 'No images found in %s' % path - + assert len(self.img_files) > 0, 'No images found in %s' % path + self.img_size = img_size + self.augment = augment self.label_files = [x.replace('images', 'labels').replace('.png', '.txt').replace('.jpg', '.txt') for x in self.img_files] - self.batch_size = batch_size - self.img_size = img_size - self.augment = augment - - def __iter__(self): - self.count = -1 - #self.shuffled_vector = np.random.permutation(self.nF) if self.augment else np.arange(self.nF) - return self + def __len__(self): + return len(self.img_files) def __getitem__(self, index): - imgs, labels0, img_paths, img_shapes = self.load_images(index, index + 1) + img_path = self.img_files[index] + label_path = self.label_files[index] - labels0[:, 0] = index % self.batch_size - labels = torch.zeros(100, 6) - labels[:min(len(labels0), 100)] = labels0 # max 100 labels per image + img = cv2.imread(img_path) # BGR + assert img is not None, 'File Not Found ' + img_path - return imgs.squeeze(0), labels, img_paths, img_shapes + augment_hsv = True + if self.augment and augment_hsv: + # SV augmentation by 50% + fraction = 0.50 + img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) + S = img_hsv[:, :, 1].astype(np.float32) + V = img_hsv[:, :, 2].astype(np.float32) - def __next__(self): - self.count += 1 # batches - if self.count >= self.nB: - raise StopIteration + a = (random.random() * 2 - 1) * fraction + 1 + S *= a + if a > 1: + np.clip(S, a_min=0, a_max=255, out=S) - ia = self.count * self.batch_size # start index - ib = min(ia + self.batch_size, self.nF) # end index + a = (random.random() * 2 - 1) * fraction + 1 + V *= a + if a > 1: + np.clip(V, a_min=0, a_max=255, out=V) - return self.load_images(ia, ib) + img_hsv[:, :, 1] = S.astype(np.uint8) + img_hsv[:, :, 2] = V.astype(np.uint8) + cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) - def load_images(self, ia, ib): - img_all, labels_all, img_paths, img_shapes = [], [], [], [] - for index, files_index in enumerate(range(ia, ib)): - img_path = self.img_files[files_index] - label_path = self.label_files[files_index] + h, w, _ = img.shape + img, ratio, padw, padh = letterbox(img, height=self.img_size) - img = cv2.imread(img_path) # BGR - assert img is not None, 'File Not Found ' + img_path + # Load labels + if os.path.isfile(label_path): + # labels0 = np.loadtxt(label_path, dtype=np.float32).reshape(-1, 5) # SLOWER + with open(label_path, 'r') as file: + lines = file.read().splitlines() + labels0 = np.array([x.split() for x in lines], dtype=np.float32) - augment_hsv = True - if self.augment and augment_hsv: - # SV augmentation by 50% - fraction = 0.50 - img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) - S = img_hsv[:, :, 1].astype(np.float32) - V = img_hsv[:, :, 2].astype(np.float32) + # Normalized xywh to pixel xyxy format + labels = labels0.copy() + labels[:, 1] = ratio * w * (labels0[:, 1] - labels0[:, 3] / 2) + padw + labels[:, 2] = ratio * h * (labels0[:, 2] - labels0[:, 4] / 2) + padh + labels[:, 3] = ratio * w * (labels0[:, 1] + labels0[:, 3] / 2) + padw + labels[:, 4] = ratio * h * (labels0[:, 2] + labels0[:, 4] / 2) + padh + else: + labels = np.array([]) - a = (random.random() * 2 - 1) * fraction + 1 - S *= a - if a > 1: - np.clip(S, a_min=0, a_max=255, out=S) + # Augment image and labels + if self.augment: + img, labels, M = random_affine(img, labels, degrees=(-5, 5), translate=(0.10, 0.10), scale=(0.90, 1.10)) - a = (random.random() * 2 - 1) * fraction + 1 - V *= a - if a > 1: - np.clip(V, a_min=0, a_max=255, out=V) + nL = len(labels) + if nL > 0: + # convert xyxy to xywh + labels[:, 1:5] = xyxy2xywh(labels[:, 1:5].copy()) / self.img_size - img_hsv[:, :, 1] = S.astype(np.uint8) - img_hsv[:, :, 2] = V.astype(np.uint8) - cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) + if self.augment: + # random left-right flip + lr_flip = True + if lr_flip & (random.random() > 0.5): + img = np.fliplr(img) + if nL > 0: + labels[:, 1] = 1 - labels[:, 1] - h, w, _ = img.shape - img, ratio, padw, padh = letterbox(img, height=self.img_size) + # random up-down flip + ud_flip = False + if ud_flip & (random.random() > 0.5): + img = np.flipud(img) + if nL > 0: + labels[:, 2] = 1 - labels[:, 2] - # Load labels - if os.path.isfile(label_path): - # labels0 = np.loadtxt(label_path, dtype=np.float32).reshape(-1, 5) # SLOWER - with open(label_path, 'r') as file: - lines = file.read().splitlines() - labels0 = np.array([x.split() for x in lines], dtype=np.float32) - - # Normalized xywh to pixel xyxy format - labels = labels0.copy() - labels[:, 1] = ratio * w * (labels0[:, 1] - labels0[:, 3] / 2) + padw - labels[:, 2] = ratio * h * (labels0[:, 2] - labels0[:, 4] / 2) + padh - labels[:, 3] = ratio * w * (labels0[:, 1] + labels0[:, 3] / 2) + padw - labels[:, 4] = ratio * h * (labels0[:, 2] + labels0[:, 4] / 2) + padh - else: - labels = np.array([]) - - # Augment image and labels - if self.augment: - img, labels, M = random_affine(img, labels, degrees=(-5, 5), translate=(0.10, 0.10), scale=(0.90, 1.10)) - - plotFlag = False - if plotFlag: - import matplotlib.pyplot as plt - plt.figure(figsize=(10, 10)) if index == 0 else None - plt.subplot(4, 4, index + 1).imshow(img[:, :, ::-1]) - plt.plot(labels[:, [1, 3, 3, 1, 1]].T, labels[:, [2, 2, 4, 4, 2]].T, '.-') - plt.axis('off') - - nL = len(labels) - if nL > 0: - # convert xyxy to xywh - labels[:, 1:5] = xyxy2xywh(labels[:, 1:5].copy()) / self.img_size - - if self.augment: - # random left-right flip - lr_flip = True - if lr_flip & (random.random() > 0.5): - img = np.fliplr(img) - if nL > 0: - labels[:, 1] = 1 - labels[:, 1] - - # random up-down flip - ud_flip = False - if ud_flip & (random.random() > 0.5): - img = np.flipud(img) - if nL > 0: - labels[:, 2] = 1 - labels[:, 2] - - if nL > 0: - labels = np.concatenate((np.zeros((nL, 1), dtype='float32') + index, labels), 1) - labels_all.append(labels) - - img_all.append(img) - img_paths.append(img_path) - img_shapes.append((h, w)) + labels_out = np.zeros((100, 6), dtype=np.float32) + if nL > 0: + labels_out[:nL, 1:] = labels # max 100 labels per image # Normalize - img_all = np.stack(img_all)[:, :, :, ::-1].transpose(0, 3, 1, 2) # list to np.array and BGR to RGB - img_all = np.ascontiguousarray(img_all, dtype=np.float32) # uint8 to float32 - img_all /= 255.0 # 0 - 255 to 0.0 - 1.0 + img = img[:, :, ::-1].transpose(2, 0, 1) # list to np.array and BGR to RGB + img = np.ascontiguousarray(img, dtype=np.float32) # uint8 to float32 + img /= 255.0 # 0 - 255 to 0.0 - 1.0 - if len(labels_all) > 0: - labels_all = np.concatenate(labels_all, 0) - else: - labels_all = np.zeros((1, 6), dtype='float32') - - labels_all = torch.from_numpy(labels_all) - return torch.from_numpy(img_all), labels_all, img_paths, img_shapes - - def __len__(self): - return self.nB # number of batches + return torch.from_numpy(img), torch.from_numpy(labels_out), img_path, (h, w) def letterbox(img, height=416, color=(127.5, 127.5, 127.5)): # resize a rectangular image to a padded square diff --git a/utils/utils.py b/utils/utils.py index de79eac6..1f4e03b0 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -15,6 +15,9 @@ from utils import torch_utils torch.set_printoptions(linewidth=1320, precision=5, profile='long') np.set_printoptions(linewidth=320, formatter={'float_kind': '{:11.5g}'.format}) # format short g, %precision=5 +# Prevent OpenCV from multithreading (to use PyTorch DataLoader) +cv2.setNumThreads(0) + def float3(x): # format floats to 3 decimals return float(format(x, '.3f')) From 176851f83a5bae8976e642afed2fade4d927eea5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Mar 2019 22:49:57 +0200 Subject: [PATCH 0533/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 4406dfca..12638c0a 100644 --- a/train.py +++ b/train.py @@ -43,7 +43,7 @@ def train( # Dataloader dataset = LoadImagesAndLabels(train_path, img_size=img_size, augment=True) - dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=4) + dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=num_workers) cutoff = -1 # backbone reaches to cutoff layer start_epoch = 0 From 20beee0c5b0396bdc1b6601d82e9499e22f91ca0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Mar 2019 22:51:22 +0200 Subject: [PATCH 0534/2595] updates --- train.py | 2 +- utils/gcp.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 12638c0a..c130089c 100644 --- a/train.py +++ b/train.py @@ -205,7 +205,7 @@ if __name__ == '__main__': parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') - parser.add_argument('--num_workers', type=int, default=0, help='number of Pytorch DataLoader workers') + parser.add_argument('--num-workers', type=int, default=0, help='number of Pytorch DataLoader workers') opt = parser.parse_args() print(opt, end='\n\n') diff --git a/utils/gcp.sh b/utils/gcp.sh index 6d46f236..03ac0111 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -9,7 +9,7 @@ sudo shutdown # Start sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 cp -r weights yolov3 -cd yolov3 && python3 train.py --batch-size 64 --multi_scale +cd yolov3 && python3 train.py --batch-size 16 --num-workers 4 # Resume python3 train.py --resume From 943db40f1ad600cdcdc40ff06588cd9c9bf2523f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 22 Mar 2019 00:41:43 +0200 Subject: [PATCH 0535/2595] updates --- test.py | 2 +- train.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index a4bba9a3..5d0ca98a 100644 --- a/test.py +++ b/test.py @@ -43,7 +43,7 @@ def test( # Dataloader dataset = LoadImagesAndLabels(test_path, img_size=img_size) - dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=0) + dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=4) mean_mAP, mean_R, mean_P, seen = 0.0, 0.0, 0.0, 0 print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP')) diff --git a/train.py b/train.py index c130089c..0791c5db 100644 --- a/train.py +++ b/train.py @@ -205,7 +205,7 @@ if __name__ == '__main__': parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') - parser.add_argument('--num-workers', type=int, default=0, help='number of Pytorch DataLoader workers') + parser.add_argument('--num-workers', type=int, default=4, help='number of Pytorch DataLoader workers') opt = parser.parse_args() print(opt, end='\n\n') From 476724be2dec4b2cb26c05595a2a7d85ef9997bd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 22 Mar 2019 12:50:25 +0200 Subject: [PATCH 0536/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 5d0ca98a..a4bba9a3 100644 --- a/test.py +++ b/test.py @@ -43,7 +43,7 @@ def test( # Dataloader dataset = LoadImagesAndLabels(test_path, img_size=img_size) - dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=4) + dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=0) mean_mAP, mean_R, mean_P, seen = 0.0, 0.0, 0.0, 0 print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP')) From cd188dbde67890e49df7163af4b9316c164e9d4b Mon Sep 17 00:00:00 2001 From: WannaSeaU <1473628258@QQ.COM> Date: Fri, 22 Mar 2019 18:59:09 +0800 Subject: [PATCH 0537/2595] Empty label file may cause index error --- utils/datasets.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 6ccefcc3..92b59f5b 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -141,13 +141,16 @@ class LoadImagesAndLabels(Dataset): # for training/testing with open(label_path, 'r') as file: lines = file.read().splitlines() labels0 = np.array([x.split() for x in lines], dtype=np.float32) - - # Normalized xywh to pixel xyxy format - labels = labels0.copy() - labels[:, 1] = ratio * w * (labels0[:, 1] - labels0[:, 3] / 2) + padw - labels[:, 2] = ratio * h * (labels0[:, 2] - labels0[:, 4] / 2) + padh - labels[:, 3] = ratio * w * (labels0[:, 1] + labels0[:, 3] / 2) + padw - labels[:, 4] = ratio * h * (labels0[:, 2] + labels0[:, 4] / 2) + padh + # If label file is empty + if labels0.size is 0: + labels = np.array([]) + else: + # Normalized xywh to pixel xyxy format + labels = labels0.copy() + labels[:, 1] = ratio * w * (labels0[:, 1] - labels0[:, 3] / 2) + padw + labels[:, 2] = ratio * h * (labels0[:, 2] - labels0[:, 4] / 2) + padh + labels[:, 3] = ratio * w * (labels0[:, 1] + labels0[:, 3] / 2) + padw + labels[:, 4] = ratio * h * (labels0[:, 2] + labels0[:, 4] / 2) + padh else: labels = np.array([]) From 3532ee038f06083ca0c615bde54fd3180a45ea4a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 22 Mar 2019 14:52:58 +0200 Subject: [PATCH 0538/2595] Update datasets.py --- utils/datasets.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 92b59f5b..49703a91 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -137,20 +137,20 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Load labels if os.path.isfile(label_path): - # labels0 = np.loadtxt(label_path, dtype=np.float32).reshape(-1, 5) # SLOWER with open(label_path, 'r') as file: lines = file.read().splitlines() - labels0 = np.array([x.split() for x in lines], dtype=np.float32) - # If label file is empty - if labels0.size is 0: + + x = np.array([x.split() for x in lines], dtype=np.float32) + if x.size is 0: + # Empty labels file labels = np.array([]) else: # Normalized xywh to pixel xyxy format - labels = labels0.copy() - labels[:, 1] = ratio * w * (labels0[:, 1] - labels0[:, 3] / 2) + padw - labels[:, 2] = ratio * h * (labels0[:, 2] - labels0[:, 4] / 2) + padh - labels[:, 3] = ratio * w * (labels0[:, 1] + labels0[:, 3] / 2) + padw - labels[:, 4] = ratio * h * (labels0[:, 2] + labels0[:, 4] / 2) + padh + labels = x.copy() + labels[:, 1] = ratio * w * (x[:, 1] - x[:, 3] / 2) + padw + labels[:, 2] = ratio * h * (x[:, 2] - x[:, 4] / 2) + padh + labels[:, 3] = ratio * w * (x[:, 1] + x[:, 3] / 2) + padw + labels[:, 4] = ratio * h * (x[:, 2] + x[:, 4] / 2) + padh else: labels = np.array([]) From 75d8cbdd5f50c18eb85bcb5494d827e0dfc609c0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 22 Mar 2019 14:56:43 +0200 Subject: [PATCH 0539/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 49703a91..285e51f9 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -161,7 +161,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing nL = len(labels) if nL > 0: # convert xyxy to xywh - labels[:, 1:5] = xyxy2xywh(labels[:, 1:5].copy()) / self.img_size + labels[:, 1:5] = xyxy2xywh(labels[:, 1:5]) / self.img_size if self.augment: # random left-right flip From b31f8fb017b288f1bc8bd48f318625dc7bad6956 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 22 Mar 2019 15:08:03 +0200 Subject: [PATCH 0540/2595] updates --- train.py | 8 +++----- utils/gcp.sh | 7 ++++--- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/train.py b/train.py index 0791c5db..da1a07fe 100644 --- a/train.py +++ b/train.py @@ -64,6 +64,7 @@ def train( cutoff = load_darknet_weights(model, weights + 'yolov3-tiny.conv.15') if torch.cuda.device_count() > 1: + print('WARNING: MultiGPU Issue: https://github.com/ultralytics/yolov3/issues/146') model = nn.DataParallel(model) # Transfer learning (train only YOLO layers) @@ -88,10 +89,7 @@ def train( # scheduler.step() # Update scheduler (manual) - if epoch > 250: - lr = lr0 / 10 - else: - lr = lr0 + lr = lr0 / 10 if epoch > 250 else lr0 for x in optimizer.param_groups: x['lr'] = lr @@ -119,7 +117,7 @@ def train( plt.figure(figsize=(10, 10)) for ip in range(batch_size): labels = xywh2xyxy(targets[targets[:, 0] == ip, 2:6]).numpy() * img_size - plt.subplot(3, 3, ip + 1).imshow(imgs[ip].numpy().transpose(1, 2, 0)) + plt.subplot(4, 4, ip + 1).imshow(imgs[ip].numpy().transpose(1, 2, 0)) plt.plot(labels[:, [0, 2, 2, 0, 0]].T, labels[:, [1, 1, 3, 3, 1]].T, '.-') plt.axis('off') diff --git a/utils/gcp.sh b/utils/gcp.sh index 03ac0111..1b58f373 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -9,14 +9,15 @@ sudo shutdown # Start sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 cp -r weights yolov3 -cd yolov3 && python3 train.py --batch-size 16 --num-workers 4 +cd yolov3 && python3 train.py --batch-size 16 --epochs 1 +sudo shutdown # Resume python3 train.py --resume # Detect -gsutil cp gs://ultralytics/yolov3.pt yolov3/weights -python3 detect.py +sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 +cd yolov3 && python3 detect.py # Clone branch sudo rm -rf yolov3 && git clone -b multi_gpu --depth 1 https://github.com/ultralytics/yolov3 From 4114d5e9c9c1540dd0d466f0af3797bfec73c68f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 22 Mar 2019 17:53:06 +0200 Subject: [PATCH 0541/2595] updates --- test.py | 2 +- utils/gcp.sh | 27 +++++++++------------------ 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/test.py b/test.py index a4bba9a3..5d0ca98a 100644 --- a/test.py +++ b/test.py @@ -43,7 +43,7 @@ def test( # Dataloader dataset = LoadImagesAndLabels(test_path, img_size=img_size) - dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=0) + dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=4) mean_mAP, mean_R, mean_P, seen = 0.0, 0.0, 0.0, 0 print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP')) diff --git a/utils/gcp.sh b/utils/gcp.sh index 1b58f373..50274913 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -6,7 +6,7 @@ bash yolov3/data/get_coco_dataset.sh sudo rm -rf cocoapi && git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 sudo shutdown -# Start +# Train sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 cp -r weights yolov3 cd yolov3 && python3 train.py --batch-size 16 --epochs 1 @@ -16,30 +16,21 @@ sudo shutdown python3 train.py --resume # Detect -sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 -cd yolov3 && python3 detect.py +python3 detect.py -# Clone branch +# Clone a branch sudo rm -rf yolov3 && git clone -b multi_gpu --depth 1 https://github.com/ultralytics/yolov3 -cd yolov3 && python3 train.py --batch-size 26 - -sudo rm -rf yolov3 && git clone -b multigpu --depth 1 https://github.com/alexpolichroniadis/yolov3 -cp coco.data yolov3/cfg -cd yolov3 && python3 train.py --batch-size 26 # Test sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 sudo rm -rf cocoapi && git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 cd yolov3 && python3 test.py --save-json --conf-thres 0.005 -# Test Darknet +# Test Darknet training python3 test.py --img_size 416 --weights ../darknet/backup/yolov3.backup -# Download and Resume -sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 +# Download with wget wget https://storage.googleapis.com/ultralytics/yolov3.pt -O weights/latest.pt -python3 train.py --img_size 416 --batch_size 16 --epochs 1 --resume -python3 test.py --img_size 416 --weights weights/latest.pt --conf_thres 0.5 # Copy latest.pt to bucket gsutil cp yolov3/weights/latest.pt gs://ultralytics @@ -48,8 +39,8 @@ gsutil cp yolov3/weights/latest.pt gs://ultralytics gsutil cp gs://ultralytics/latest.pt yolov3/weights/latest.pt wget https://storage.googleapis.com/ultralytics/latest.pt -# Testing -sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 && cd yolov3 -python3 train.py --epochs 3 --var 64 +# Trade Studies +sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 +cp -r weights yolov3 +cd yolov3 && python3 train.py --batch-size 16 --epochs 1 sudo shutdown - From 386835d7ca3e40e1bff9320c59eeb1dc1ec8bca8 Mon Sep 17 00:00:00 2001 From: perry0418 <34980036+perry0418@users.noreply.github.com> Date: Mon, 25 Mar 2019 14:56:38 +0800 Subject: [PATCH 0542/2595] Update train.py solve the multi-gpu training problem. --- train.py | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/train.py b/train.py index da1a07fe..6e461431 100644 --- a/train.py +++ b/train.py @@ -7,6 +7,7 @@ import test # Import test.py to get mAP after each epoch from models import * from utils.datasets import * from utils.utils import * +import torch.distributed as dist def train( @@ -39,11 +40,7 @@ def train( # Optimizer lr0 = 0.001 # initial learning rate - optimizer = torch.optim.SGD(model.parameters(), lr=lr0, momentum=.9) - - # Dataloader - dataset = LoadImagesAndLabels(train_path, img_size=img_size, augment=True) - dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=num_workers) + optimizer = torch.optim.SGD(model.parameters(), lr=lr0, momentum=.9,weight_decay = 0.0005) cutoff = -1 # backbone reaches to cutoff layer start_epoch = 0 @@ -62,10 +59,19 @@ def train( cutoff = load_darknet_weights(model, weights + 'darknet53.conv.74') elif cfg.endswith('yolov3-tiny.cfg'): cutoff = load_darknet_weights(model, weights + 'yolov3-tiny.conv.15') - + + #initialize for distributed training if torch.cuda.device_count() > 1: - print('WARNING: MultiGPU Issue: https://github.com/ultralytics/yolov3/issues/146') - model = nn.DataParallel(model) + dist.init_process_group(backend=opt.dist_backend, init_method=opt.dist_url,world_size=opt.world_size, rank=args.rank) + model = torch.nn.parallel.DistributedDataParallel(model) + + # Dataloader + dataset = LoadImagesAndLabels(train_path, img_size=img_size, augment=True) + if torch.cuda.device_count() > 1: + train_sampler = torch.utils.data.distributed.DistributedSampler(dataset) + else: + train_sampler=None + dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=num_workers,sampler=train_sampler) # Transfer learning (train only YOLO layers) # for i, (name, p) in enumerate(model.named_parameters()): @@ -172,7 +178,7 @@ def train( # Save latest checkpoint checkpoint = {'epoch': epoch, 'best_loss': best_loss, - 'model': model.module.state_dict() if type(model) is nn.DataParallel else model.state_dict(), + 'model': model.module.state_dict() if type(model) is nn.parallel.DistributedDataParallel else model.state_dict(), 'optimizer': optimizer.state_dict()} torch.save(checkpoint, latest) @@ -185,6 +191,8 @@ def train( os.system('cp ' + latest + ' ' + weights + 'backup{}.pt'.format(epoch)) # Calculate mAP + if type(model) is nn.parallel.DistributedDataParallel: + model = model.module with torch.no_grad(): P, R, mAP = test.test(cfg, data_cfg, weights=latest, batch_size=batch_size, img_size=img_size, model=model) @@ -204,6 +212,9 @@ if __name__ == '__main__': parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--num-workers', type=int, default=4, help='number of Pytorch DataLoader workers') + parser.add_argument('--dist-url', default='tcp://224.66.41.62:23456', type=str,help='url used to set up distributed training') + parser.add_argument('--rank', default=-1, type=int,help='node rank for distributed training') + parser.add_argument('--world-size', default=-1, type=int,help='number of nodes for distributed training') opt = parser.parse_args() print(opt, end='\n\n') From 48845081100e834e6e3f89df1873d7a5b6362c91 Mon Sep 17 00:00:00 2001 From: perry0418 <34980036+perry0418@users.noreply.github.com> Date: Mon, 25 Mar 2019 14:59:02 +0800 Subject: [PATCH 0543/2595] Update utils.py solve the multi-gpu training problem --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 1f4e03b0..76b25df2 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -285,7 +285,7 @@ def compute_loss(p, targets): # predictions, targets def build_targets(model, targets, pred): # targets = [image, class, x, y, w, h] - if isinstance(model, nn.DataParallel): + if isinstance(model, nn.parallel.DistributedDataParallel): model = model.module yolo_layers = get_yolo_layers(model) From 5daea5882fc6ecaa78ef6cb7cea078493a78b5ce Mon Sep 17 00:00:00 2001 From: perry0418 <34980036+perry0418@users.noreply.github.com> Date: Mon, 25 Mar 2019 16:13:21 +0800 Subject: [PATCH 0544/2595] Update train.py fix problem of multiple gpu training --- train.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index 6e461431..8bb87ce4 100644 --- a/train.py +++ b/train.py @@ -62,7 +62,7 @@ def train( #initialize for distributed training if torch.cuda.device_count() > 1: - dist.init_process_group(backend=opt.dist_backend, init_method=opt.dist_url,world_size=opt.world_size, rank=args.rank) + dist.init_process_group(backend=opt.dist_backend, init_method=opt.dist_url,world_size=opt.world_size, rank=opt.rank) model = torch.nn.parallel.DistributedDataParallel(model) # Dataloader @@ -215,6 +215,7 @@ if __name__ == '__main__': parser.add_argument('--dist-url', default='tcp://224.66.41.62:23456', type=str,help='url used to set up distributed training') parser.add_argument('--rank', default=-1, type=int,help='node rank for distributed training') parser.add_argument('--world-size', default=-1, type=int,help='number of nodes for distributed training') + parser.add_argument('--dist-backend', default='nccl', type=str,help='distributed backend') opt = parser.parse_args() print(opt, end='\n\n') From 9208a910952af56de13d8633bc6de3e92ef648c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fatih=20Baltac=C4=B1?= Date: Mon, 25 Mar 2019 15:22:05 +0300 Subject: [PATCH 0545/2595] Update train.py --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 8bb87ce4..0d66d674 100644 --- a/train.py +++ b/train.py @@ -212,9 +212,9 @@ if __name__ == '__main__': parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--num-workers', type=int, default=4, help='number of Pytorch DataLoader workers') - parser.add_argument('--dist-url', default='tcp://224.66.41.62:23456', type=str,help='url used to set up distributed training') - parser.add_argument('--rank', default=-1, type=int,help='node rank for distributed training') - parser.add_argument('--world-size', default=-1, type=int,help='number of nodes for distributed training') + parser.add_argument('--dist-url', default='tcp://127.0.0.1:9999', type=str,help='url used to set up distributed training') + parser.add_argument('--rank', default=0, type=int,help='node rank for distributed training') + parser.add_argument('--world-size', default=1, type=int,help='number of nodes for distributed training') parser.add_argument('--dist-backend', default='nccl', type=str,help='distributed backend') opt = parser.parse_args() print(opt, end='\n\n') From cd51e1137b9dc0a5abca260bd41a4a28359db60f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 25 Mar 2019 14:59:38 +0100 Subject: [PATCH 0546/2595] Add collate_fn() to DataLoader (#163) Multi-GPU update with custom collate function to allow variable size target vector per image without needing to pad targets. --- README.md | 24 +++-- detect.py | 22 ++--- requirements.txt | 2 + test.py | 51 ++++++----- train.py | 118 ++++++++++++------------ utils/datasets.py | 139 ++++++++++++++++------------- utils/gcp.sh | 13 ++- utils/utils.py | 41 +++------ weights/download_yolov3_weights.sh | 1 + 9 files changed, 217 insertions(+), 194 deletions(-) diff --git a/README.md b/README.md index 5d1261aa..ea6c356e 100755 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ This directory contains python software and an iOS App developed by Ultralytics # Description -The https://github.com/ultralytics/yolov3 repo contains inference and training code for YOLOv3 in PyTorch. The code works on Linux, MacOS and Windows. Training is done on the COCO dataset by default: https://cocodataset.org/#home. **Credit to Joseph Redmon for YOLO** (https://pjreddie.com/darknet/yolo/) and to **Erik Lindernoren for the PyTorch implementation** this work is based on (https://github.com/eriklindernoren/PyTorch-YOLOv3). +The https://github.com/ultralytics/yolov3 repo contains inference and training code for YOLOv3 in PyTorch. The code works on Linux, MacOS and Windows. Training is done on the COCO dataset by default: https://cocodataset.org/#home. **Credit to Joseph Redmon for YOLO: ** https://pjreddie.com/darknet/yolo/. # Requirements @@ -26,6 +26,7 @@ Python 3.7 or later with the following `pip3 install -U -r requirements.txt` pac - `numpy` - `torch >= 1.0.0` - `opencv-python` +- `tqdm` # Tutorials @@ -64,17 +65,22 @@ HS**V** Intensity | +/- 50% ## Speed https://cloud.google.com/deep-learning-vm/ -**Machine type:** n1-standard-8 (8 vCPUs, 30 GB memory) +**Machine type:** n1-standard-8 (8 vCPUs, 30 GB memory) **CPU platform:** Intel Skylake -**GPUs:** 1-4 x NVIDIA Tesla P100 +**GPUs:** 1-4x P100 ($0.493/hr), 1-8x V100 ($0.803/hr) **HDD:** 100 GB SSD +**Dataset:** COCO train 2014 -GPUs | `batch_size` | speed | COCO epoch ---- |---| --- | --- -(P100) | (images) | (s/batch) | (min/epoch) -1 | 16 | 0.39s | 48min -2 | 32 | 0.48s | 29min -4 | 64 | 0.65s | 20min +GPUs | `batch_size` | batch time | epoch time | epoch cost +--- |---| --- | --- | --- + | (images) | (s/batch) | | +1 P100 | 16 | 0.39s | 48min | $0.39 +2 P100 | 32 | 0.48s | 29min | $0.47 +4 P100 | 64 | 0.65s | 20min | $0.65 +1 V100 | 16 | 0.25s | 31min | $0.41 +2 V100 | 32 | 0.29s | 18min | $0.48 +4 V100 | 64 | 0.41s | 13min | $0.70 +8 V100 | 128 | 0.49s | 7min | $0.80 # Inference diff --git a/detect.py b/detect.py index 1dbd4076..32c41c55 100644 --- a/detect.py +++ b/detect.py @@ -1,7 +1,5 @@ import argparse -import shutil import time -from pathlib import Path from sys import platform from models import * @@ -32,9 +30,9 @@ def detect( # Load weights if weights.endswith('.pt'): # pytorch format if weights.endswith('yolov3.pt') and not os.path.exists(weights): - if (platform == 'darwin') or (platform == 'linux'): + if platform in ('darwin', 'linux'): # linux/macos os.system('wget https://storage.googleapis.com/ultralytics/yolov3.pt -O ' + weights) - model.load_state_dict(torch.load(weights, map_location='cpu')['model']) + model.load_state_dict(torch.load(weights, map_location=device)['model']) else: # darknet format _ = load_darknet_weights(model, weights) @@ -49,15 +47,15 @@ def detect( # Get classes and colors classes = load_classes(parse_data_cfg('cfg/coco.data')['names']) - colors = [[random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)] for _ in range(len(classes))] + colors = [[random.randint(0, 255) for _ in range(3)] for _ in range(len(classes))] for i, (path, img, im0) in enumerate(dataloader): t = time.time() + save_path = str(Path(output) / Path(path).name) if webcam: print('webcam frame %g: ' % (i + 1), end='') else: print('image %g/%g %s: ' % (i + 1, len(dataloader), path), end='') - save_path = str(Path(output) / Path(path).name) # Get detections img = torch.from_numpy(img).unsqueeze(0).to(device) @@ -81,18 +79,16 @@ def detect( print('%g %ss' % (n, classes[int(c)]), end=', ') # Draw bounding boxes and labels of detections - for x1, y1, x2, y2, conf, cls_conf, cls in detections: + for *xyxy, conf, cls_conf, cls in detections: if save_txt: # Write to file with open(save_path + '.txt', 'a') as file: - file.write('%g %g %g %g %g %g\n' % - (x1, y1, x2, y2, cls, cls_conf * conf)) + file.write(('%g ' * 6 + '\n') % (*xyxy, cls, cls_conf * conf)) # Add bbox to the image label = '%s %.2f' % (classes[int(cls)], conf) - plot_one_box([x1, y1, x2, y2], im0, label=label, color=colors[int(cls)]) + plot_one_box(xyxy, im0, label=label, color=colors[int(cls)]) - dt = time.time() - t - print('Done. (%.3fs)' % dt) + print('Done. (%.3fs)' % (time.time() - t)) if save_images: # Save generated image with detections cv2.imwrite(save_path, im0) @@ -100,7 +96,7 @@ def detect( if webcam: # Show live webcam cv2.imshow(weights, im0) - if save_images and (platform == 'darwin'): # linux/macos + if save_images and platform == 'darwin': # macos os.system('open ' + output + ' ' + save_path) diff --git a/requirements.txt b/requirements.txt index d934964e..f7d21d87 100755 --- a/requirements.txt +++ b/requirements.txt @@ -4,3 +4,5 @@ numpy opencv-python torch >= 1.0.0 matplotlib +pycocotools +tqdm diff --git a/test.py b/test.py index 5d0ca98a..c1cc3d2a 100644 --- a/test.py +++ b/test.py @@ -1,7 +1,6 @@ import argparse import json import time -from pathlib import Path from torch.utils.data import DataLoader @@ -24,41 +23,44 @@ def test( ): device = torch_utils.select_device() - # Configure run - data_cfg_dict = parse_data_cfg(data_cfg) - nC = int(data_cfg_dict['classes']) # number of classes (80 for COCO) - test_path = data_cfg_dict['valid'] - if model is None: # Initialize model - model = Darknet(cfg, img_size) + model = Darknet(cfg, img_size).to(device) # Load weights if weights.endswith('.pt'): # pytorch format - model.load_state_dict(torch.load(weights, map_location='cpu')['model']) + model.load_state_dict(torch.load(weights, map_location=device)['model']) else: # darknet format _ = load_darknet_weights(model, weights) - model.to(device).eval() + if torch.cuda.device_count() > 1: + model = nn.DataParallel(model) + + # Configure run + data_cfg = parse_data_cfg(data_cfg) + nC = int(data_cfg['classes']) # number of classes (80 for COCO) + test_path = data_cfg['valid'] # Dataloader dataset = LoadImagesAndLabels(test_path, img_size=img_size) - dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=4) + dataloader = DataLoader(dataset, + batch_size=batch_size, + num_workers=4, + pin_memory=False, + collate_fn=dataset.collate_fn) + model.eval() mean_mAP, mean_R, mean_P, seen = 0.0, 0.0, 0.0, 0 print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP')) mP, mR, mAPs, TP, jdict = [], [], [], [], [] AP_accum, AP_accum_count = np.zeros(nC), np.zeros(nC) coco91class = coco80_to_coco91_class() - for imgs, targets, paths, shapes in dataloader: - # Unpad and collate targets - for j, t in enumerate(targets): - t[:, 0] = j - targets = torch.cat([t[t[:, 5].nonzero()] for t in targets], 0).squeeze(1) - - targets = targets.to(device) + for imgs, targets, paths, shapes in tqdm(dataloader): t = time.time() - output = model(imgs.to(device)) + targets = targets.to(device) + imgs = imgs.to(device) + + output = model(imgs) output = non_max_suppression(output, conf_thres=conf_thres, nms_thres=nms_thres) # Compute average precision for each sample @@ -78,7 +80,7 @@ def test( if save_json: # [{"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], "score": 0.236}, ... box = detections[:, :4].clone() # xyxy - scale_coords(img_size, box, (shapes[0][si], shapes[1][si])) # to original shape + scale_coords(img_size, box, shapes[si]) # to original shape box = xyxy2xywh(box) # xywh box[:, :2] -= box[:, 2:] / 2 # xy center to top-left corner @@ -134,13 +136,13 @@ def test( mean_R = np.mean(mR) mean_mAP = np.mean(mAPs) - # Print image mAP and running mean mAP - print(('%11s%11s' + '%11.3g' * 4 + 's') % - (seen, len(dataset), mean_P, mean_R, mean_mAP, time.time() - t)) + # Print image mAP and running mean mAP + print(('%11s%11s' + '%11.3g' * 4 + 's') % + (seen, len(dataset), mean_P, mean_R, mean_mAP, time.time() - t)) # Print mAP per class print('\nmAP Per Class:') - for i, c in enumerate(load_classes(data_cfg_dict['names'])): + for i, c in enumerate(load_classes(data_cfg['names'])): if AP_accum_count[i]: print('%15s: %-.4f' % (c, AP_accum[i] / (AP_accum_count[i]))) @@ -191,4 +193,5 @@ if __name__ == '__main__': opt.iou_thres, opt.conf_thres, opt.nms_thres, - opt.save_json) + opt.save_json + ) diff --git a/train.py b/train.py index 0d66d674..3e983127 100644 --- a/train.py +++ b/train.py @@ -1,6 +1,7 @@ import argparse import time +import torch.distributed as dist from torch.utils.data import DataLoader import test # Import test.py to get mAP after each epoch @@ -20,7 +21,7 @@ def train( accumulate=1, multi_scale=False, freeze_backbone=False, - num_workers=0 + num_workers=4 ): weights = 'weights' + os.sep latest = weights + 'latest.pt' @@ -40,7 +41,7 @@ def train( # Optimizer lr0 = 0.001 # initial learning rate - optimizer = torch.optim.SGD(model.parameters(), lr=lr0, momentum=.9,weight_decay = 0.0005) + optimizer = torch.optim.SGD(model.parameters(), lr=lr0, momentum=.9, weight_decay=0.0005) cutoff = -1 # backbone reaches to cutoff layer start_epoch = 0 @@ -65,52 +66,55 @@ def train( dist.init_process_group(backend=opt.dist_backend, init_method=opt.dist_url,world_size=opt.world_size, rank=opt.rank) model = torch.nn.parallel.DistributedDataParallel(model) - # Dataloader - dataset = LoadImagesAndLabels(train_path, img_size=img_size, augment=True) - if torch.cuda.device_count() > 1: - train_sampler = torch.utils.data.distributed.DistributedSampler(dataset) - else: - train_sampler=None - dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=num_workers,sampler=train_sampler) - # Transfer learning (train only YOLO layers) # for i, (name, p) in enumerate(model.named_parameters()): # p.requires_grad = True if (p.shape[0] == 255) else False - # Set scheduler - # scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[54, 61], gamma=0.1) + # Set scheduler (reduce lr at epoch 250) + scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[250], gamma=0.1, last_epoch=start_epoch - 1) + + # Dataset + dataset = LoadImagesAndLabels(train_path, img_size=img_size, augment=True) + + # Initialize distributed training + if torch.cuda.device_count() > 1: + dist.init_process_group(backend=opt.backend, init_method=opt.dist_url, world_size=opt.world_size, rank=opt.rank) + model = torch.nn.parallel.DistributedDataParallel(model) + sampler = torch.utils.data.distributed.DistributedSampler(dataset) + else: + sampler = None + + # Dataloader + dataloader = DataLoader(dataset, + batch_size=batch_size, + num_workers=num_workers, + shuffle=True, + pin_memory=False, + collate_fn=dataset.collate_fn, + sampler=sampler) # Start training - t0 = time.time() + nB = len(dataloader) + t = time.time() model_info(model) - n_burnin = min(round(len(dataloader) / 5 + 1), 1000) # burn-in batches - for epoch in range(epochs): + n_burnin = min(round(nB / 5 + 1), 1000) # burn-in batches + for epoch in range(start_epoch, epochs): model.train() - epoch += start_epoch + print(('\n%8s%12s' + '%10s' * 7) % ('Epoch', 'Batch', 'xy', 'wh', 'conf', 'cls', 'total', 'nTargets', 'time')) - print(('\n%8s%12s' + '%10s' * 7) % ( - 'Epoch', 'Batch', 'xy', 'wh', 'conf', 'cls', 'total', 'nTargets', 'time')) - - # Update scheduler (automatic) - # scheduler.step() - - # Update scheduler (manual) - lr = lr0 / 10 if epoch > 250 else lr0 - for x in optimizer.param_groups: - x['lr'] = lr + # Update scheduler + scheduler.step() # Freeze backbone at epoch 0, unfreeze at epoch 1 if freeze_backbone and epoch < 2: - for i, (name, p) in enumerate(model.named_parameters()): + for name, p in model.named_parameters(): if int(name.split('.')[1]) < cutoff: # if layer < 75 - p.requires_grad = False if (epoch == 0) else True + p.requires_grad = False if epoch == 0 else True - rloss = defaultdict(float) + mloss = defaultdict(float) # mean loss for i, (imgs, targets, _, _) in enumerate(dataloader): - # Unpad and collate targets - for j, t in enumerate(targets): - t[:, 0] = j - targets = torch.cat([t[t[:, 5].nonzero()] for t in targets], 0).squeeze(1) + imgs = imgs.to(device) + targets = targets.to(device) nT = len(targets) if nT == 0: # if no targets continue @@ -119,25 +123,26 @@ def train( # Plot images with bounding boxes plot_images = False if plot_images: - import matplotlib.pyplot as plt - plt.figure(figsize=(10, 10)) + fig = plt.figure(figsize=(10, 10)) for ip in range(batch_size): labels = xywh2xyxy(targets[targets[:, 0] == ip, 2:6]).numpy() * img_size plt.subplot(4, 4, ip + 1).imshow(imgs[ip].numpy().transpose(1, 2, 0)) plt.plot(labels[:, [0, 2, 2, 0, 0]].T, labels[:, [1, 1, 3, 3, 1]].T, '.-') plt.axis('off') + fig.tight_layout() + fig.savefig('batch_%g.jpg' % i, dpi=fig.dpi) # SGD burn-in - if (epoch == 0) and (i <= n_burnin): + if epoch == 0 and i <= n_burnin: lr = lr0 * (i / n_burnin) ** 4 for x in optimizer.param_groups: x['lr'] = lr # Run model - pred = model(imgs.to(device)) + pred = model(imgs) # Build targets - target_list = build_targets(model, targets.to(device), pred) + target_list = build_targets(model, targets) # Compute loss loss, loss_dict = compute_loss(pred, target_list) @@ -146,21 +151,19 @@ def train( loss.backward() # Accumulate gradient for x batches before optimizing - if (i + 1) % accumulate == 0 or (i + 1) == len(dataloader): + if (i + 1) % accumulate == 0 or (i + 1) == nB: optimizer.step() optimizer.zero_grad() # Running epoch-means of tracked metrics for key, val in loss_dict.items(): - rloss[key] = (rloss[key] * i + val) / (i + 1) + mloss[key] = (mloss[key] * i + val) / (i + 1) s = ('%8s%12s' + '%10.3g' * 7) % ( - '%g/%g' % (epoch, epochs - 1), - '%g/%g' % (i, len(dataloader) - 1), - rloss['xy'], rloss['wh'], rloss['conf'], - rloss['cls'], rloss['total'], - nT, time.time() - t0) - t0 = time.time() + '%g/%g' % (epoch, epochs - 1), '%g/%g' % (i, nB - 1), + mloss['xy'], mloss['wh'], mloss['conf'], mloss['cls'], + mloss['total'], nT, time.time() - t) + t = time.time() print(s) # Multi-Scale training (320 - 608 pixels) every 10 batches @@ -169,8 +172,8 @@ def train( print('multi_scale img_size = %g' % dataset.img_size) # Update best loss - if rloss['total'] < best_loss: - best_loss = rloss['total'] + if mloss['total'] < best_loss: + best_loss = mloss['total'] # Save training results save = True @@ -178,23 +181,24 @@ def train( # Save latest checkpoint checkpoint = {'epoch': epoch, 'best_loss': best_loss, - 'model': model.module.state_dict() if type(model) is nn.parallel.DistributedDataParallel else model.state_dict(), + 'model': model.module.state_dict() if type( + model) is nn.parallel.DistributedDataParallel else model.state_dict(), 'optimizer': optimizer.state_dict()} torch.save(checkpoint, latest) # Save best checkpoint - if best_loss == rloss['total']: + if best_loss == mloss['total']: os.system('cp ' + latest + ' ' + best) # Save backup weights every 5 epochs (optional) - if (epoch > 0) and (epoch % 5 == 0): - os.system('cp ' + latest + ' ' + weights + 'backup{}.pt'.format(epoch)) + if epoch > 0 and epoch % 5 == 0: + os.system('cp ' + latest + ' ' + weights + 'backup%g.pt' % epoch) # Calculate mAP if type(model) is nn.parallel.DistributedDataParallel: model = model.module with torch.no_grad(): - P, R, mAP = test.test(cfg, data_cfg, weights=latest, batch_size=batch_size, img_size=img_size, model=model) + P, R, mAP = test.test(cfg, data_cfg, weights=latest, batch_size=batch_size, img_size=img_size) # Write epoch results with open('results.txt', 'a') as file: @@ -212,10 +216,10 @@ if __name__ == '__main__': parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--num-workers', type=int, default=4, help='number of Pytorch DataLoader workers') - parser.add_argument('--dist-url', default='tcp://127.0.0.1:9999', type=str,help='url used to set up distributed training') - parser.add_argument('--rank', default=0, type=int,help='node rank for distributed training') - parser.add_argument('--world-size', default=1, type=int,help='number of nodes for distributed training') - parser.add_argument('--dist-backend', default='nccl', type=str,help='distributed backend') + parser.add_argument('--dist-url', default='tcp://127.0.0.1:9999', type=str, help='distributed training init method') + parser.add_argument('--rank', default=0, type=int, help='distributed training node rank') + parser.add_argument('--world-size', default=1, type=int, help='number of nodes for distributed training') + parser.add_argument('--backend', default='nccl', type=str, help='distributed backend') opt = parser.parse_args() print(opt, end='\n\n') diff --git a/utils/datasets.py b/utils/datasets.py index 285e51f9..be127210 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -2,11 +2,14 @@ import glob import math import os import random +import shutil +from pathlib import Path import cv2 import numpy as np import torch from torch.utils.data import Dataset +from tqdm import tqdm from utils.utils import xyxy2xywh @@ -97,7 +100,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing assert len(self.img_files) > 0, 'No images found in %s' % path self.img_size = img_size self.augment = augment - self.label_files = [x.replace('images', 'labels').replace('.png', '.txt').replace('.jpg', '.txt') + self.label_files = [x.replace('images', 'labels').replace('.bmp', '.txt').replace('.jpg', '.txt') for x in self.img_files] def __len__(self): @@ -136,58 +139,61 @@ class LoadImagesAndLabels(Dataset): # for training/testing img, ratio, padw, padh = letterbox(img, height=self.img_size) # Load labels + labels = [] if os.path.isfile(label_path): with open(label_path, 'r') as file: lines = file.read().splitlines() x = np.array([x.split() for x in lines], dtype=np.float32) - if x.size is 0: - # Empty labels file - labels = np.array([]) - else: + if x.size > 0: # Normalized xywh to pixel xyxy format labels = x.copy() labels[:, 1] = ratio * w * (x[:, 1] - x[:, 3] / 2) + padw labels[:, 2] = ratio * h * (x[:, 2] - x[:, 4] / 2) + padh labels[:, 3] = ratio * w * (x[:, 1] + x[:, 3] / 2) + padw labels[:, 4] = ratio * h * (x[:, 2] + x[:, 4] / 2) + padh - else: - labels = np.array([]) # Augment image and labels if self.augment: - img, labels, M = random_affine(img, labels, degrees=(-5, 5), translate=(0.10, 0.10), scale=(0.90, 1.10)) + img, labels = random_affine(img, labels, degrees=(-5, 5), translate=(0.10, 0.10), scale=(0.90, 1.10)) - nL = len(labels) - if nL > 0: + nL = len(labels) # number of labels + if nL: # convert xyxy to xywh labels[:, 1:5] = xyxy2xywh(labels[:, 1:5]) / self.img_size if self.augment: # random left-right flip lr_flip = True - if lr_flip & (random.random() > 0.5): + if lr_flip and random.random() > 0.5: img = np.fliplr(img) - if nL > 0: + if nL: labels[:, 1] = 1 - labels[:, 1] # random up-down flip ud_flip = False - if ud_flip & (random.random() > 0.5): + if ud_flip and random.random() > 0.5: img = np.flipud(img) - if nL > 0: + if nL: labels[:, 2] = 1 - labels[:, 2] - labels_out = np.zeros((100, 6), dtype=np.float32) - if nL > 0: - labels_out[:nL, 1:] = labels # max 100 labels per image + labels_out = torch.zeros((nL, 6)) + if nL: + labels_out[:, 1:] = torch.from_numpy(labels) # Normalize - img = img[:, :, ::-1].transpose(2, 0, 1) # list to np.array and BGR to RGB + img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416 img = np.ascontiguousarray(img, dtype=np.float32) # uint8 to float32 img /= 255.0 # 0 - 255 to 0.0 - 1.0 - return torch.from_numpy(img), torch.from_numpy(labels_out), img_path, (h, w) + return torch.from_numpy(img), labels_out, img_path, (h, w) + + @staticmethod + def collate_fn(batch): + img, label, path, hw = list(zip(*batch)) # transposed + for i, l in enumerate(label): + l[:, 0] = i # add target image index for build_targets() + return torch.stack(img, 0), torch.cat(label, 0), path, hw def letterbox(img, height=416, color=(127.5, 127.5, 127.5)): # resize a rectangular image to a padded square @@ -203,11 +209,13 @@ def letterbox(img, height=416, color=(127.5, 127.5, 127.5)): # resize a rectang return img, ratio, dw, dh -def random_affine(img, targets=None, degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-2, 2), +def random_affine(img, targets=(), degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-2, 2), borderValue=(127.5, 127.5, 127.5)): # torchvision.transforms.RandomAffine(degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-10, 10)) # https://medium.com/uruvideo/dataset-augmentation-with-random-homographies-a8f4b44830d4 + if targets is None: + targets = [] border = 0 # width of added border (optional) height = max(img.shape[0], img.shape[1]) + border * 2 @@ -233,52 +241,61 @@ def random_affine(img, targets=None, degrees=(-10, 10), translate=(.1, .1), scal borderValue=borderValue) # BGR order borderValue # Return warped points also - if targets is not None: - if len(targets) > 0: - n = targets.shape[0] - points = targets[:, 1:5].copy() - area0 = (points[:, 2] - points[:, 0]) * (points[:, 3] - points[:, 1]) + if len(targets) > 0: + n = targets.shape[0] + points = targets[:, 1:5].copy() + area0 = (points[:, 2] - points[:, 0]) * (points[:, 3] - points[:, 1]) - # warp points - xy = np.ones((n * 4, 3)) - xy[:, :2] = points[:, [0, 1, 2, 3, 0, 3, 2, 1]].reshape(n * 4, 2) # x1y1, x2y2, x1y2, x2y1 - xy = (xy @ M.T)[:, :2].reshape(n, 8) + # warp points + xy = np.ones((n * 4, 3)) + xy[:, :2] = points[:, [0, 1, 2, 3, 0, 3, 2, 1]].reshape(n * 4, 2) # x1y1, x2y2, x1y2, x2y1 + xy = (xy @ M.T)[:, :2].reshape(n, 8) - # create new boxes - x = xy[:, [0, 2, 4, 6]] - y = xy[:, [1, 3, 5, 7]] - xy = np.concatenate((x.min(1), y.min(1), x.max(1), y.max(1))).reshape(4, n).T + # create new boxes + x = xy[:, [0, 2, 4, 6]] + y = xy[:, [1, 3, 5, 7]] + xy = np.concatenate((x.min(1), y.min(1), x.max(1), y.max(1))).reshape(4, n).T - # apply angle-based reduction - radians = a * math.pi / 180 - reduction = max(abs(math.sin(radians)), abs(math.cos(radians))) ** 0.5 - x = (xy[:, 2] + xy[:, 0]) / 2 - y = (xy[:, 3] + xy[:, 1]) / 2 - w = (xy[:, 2] - xy[:, 0]) * reduction - h = (xy[:, 3] - xy[:, 1]) * reduction - xy = np.concatenate((x - w / 2, y - h / 2, x + w / 2, y + h / 2)).reshape(4, n).T + # apply angle-based reduction + radians = a * math.pi / 180 + reduction = max(abs(math.sin(radians)), abs(math.cos(radians))) ** 0.5 + x = (xy[:, 2] + xy[:, 0]) / 2 + y = (xy[:, 3] + xy[:, 1]) / 2 + w = (xy[:, 2] - xy[:, 0]) * reduction + h = (xy[:, 3] - xy[:, 1]) * reduction + xy = np.concatenate((x - w / 2, y - h / 2, x + w / 2, y + h / 2)).reshape(4, n).T - # reject warped points outside of image - np.clip(xy, 0, height, out=xy) - w = xy[:, 2] - xy[:, 0] - h = xy[:, 3] - xy[:, 1] - area = w * h - ar = np.maximum(w / (h + 1e-16), h / (w + 1e-16)) - i = (w > 4) & (h > 4) & (area / (area0 + 1e-16) > 0.1) & (ar < 10) + # reject warped points outside of image + np.clip(xy, 0, height, out=xy) + w = xy[:, 2] - xy[:, 0] + h = xy[:, 3] - xy[:, 1] + area = w * h + ar = np.maximum(w / (h + 1e-16), h / (w + 1e-16)) + i = (w > 4) & (h > 4) & (area / (area0 + 1e-16) > 0.1) & (ar < 10) - targets = targets[i] - targets[:, 1:5] = xy[i] + targets = targets[i] + targets[:, 1:5] = xy[i] - return imw, targets, M - else: - return imw + return imw, targets -def convert_tif2bmp(p='../xview/val_images_bmp'): - import glob - import cv2 - files = sorted(glob.glob('%s/*.tif' % p)) - for i, f in enumerate(files): - print('%g/%g' % (i + 1, len(files))) - cv2.imwrite(f.replace('.tif', '.bmp'), cv2.imread(f)) - os.system('rm -rf ' + f) +def convert_images2bmp(): + # cv2.imread() jpg at 230 img/s, *.bmp at 400 img/s + for path in ['../coco/images/val2014/', '../coco/images/train2014/']: + folder = os.sep + Path(path).name + output = path.replace(folder, folder + 'bmp') + if os.path.exists(output): + shutil.rmtree(output) # delete output folder + os.makedirs(output) # make new output folder + + for f in tqdm(glob.glob('%s*.jpg' % path)): + save_name = f.replace('.jpg', '.bmp').replace(folder, folder + 'bmp') + cv2.imwrite(save_name, cv2.imread(f)) + + for label_path in ['../coco/trainvalno5k.txt', '../coco/5k.txt']: + with open(label_path, 'r') as file: + lines = file.read() + lines = lines.replace('2014/', '2014bmp/').replace('.jpg', '.bmp').replace( + '/Users/glennjocher/PycharmProjects/', '../') + with open(label_path.replace('5k', '5k_bmp'), 'w') as file: + file.write(lines) diff --git a/utils/gcp.sh b/utils/gcp.sh index 50274913..a3372631 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -3,13 +3,14 @@ # New VM sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 bash yolov3/data/get_coco_dataset.sh +bash yolov3/weights/download_yolov3_weights.sh sudo rm -rf cocoapi && git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 sudo shutdown # Train sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 cp -r weights yolov3 -cd yolov3 && python3 train.py --batch-size 16 --epochs 1 +cd yolov3 && python3 train.py --batch-size 48 --epochs 1 sudo shutdown # Resume @@ -20,11 +21,17 @@ python3 detect.py # Clone a branch sudo rm -rf yolov3 && git clone -b multi_gpu --depth 1 https://github.com/ultralytics/yolov3 +cp -r weights yolov3 +cd yolov3 && python3 train.py --batch-size 48 --epochs 1 +sudo shutdown + +# Git pull branch +git pull https://github.com/ultralytics/yolov3 multi_gpu # Test sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 sudo rm -rf cocoapi && git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 -cd yolov3 && python3 test.py --save-json --conf-thres 0.005 +cd yolov3 && python3 test.py --save-json --conf-thres 0.001 --img-size 416 # Test Darknet training python3 test.py --img_size 416 --weights ../darknet/backup/yolov3.backup @@ -33,7 +40,7 @@ python3 test.py --img_size 416 --weights ../darknet/backup/yolov3.backup wget https://storage.googleapis.com/ultralytics/yolov3.pt -O weights/latest.pt # Copy latest.pt to bucket -gsutil cp yolov3/weights/latest.pt gs://ultralytics +gsutil cp yolov3/weights/latest1gpu.pt gs://ultralytics # Copy latest.pt from bucket gsutil cp gs://ultralytics/latest.pt yolov3/weights/latest.pt diff --git a/utils/utils.py b/utils/utils.py index 76b25df2..2233f88f 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -95,7 +95,7 @@ def weights_init_normal(m): def xyxy2xywh(x): # Convert bounding box format from [x1, y1, x2, y2] to [x, y, w, h] - y = torch.zeros_like(x) if x.dtype is torch.float32 else np.zeros_like(x) + y = torch.zeros_like(x) if isinstance(x, torch.Tensor) else np.zeros_like(x) y[:, 0] = (x[:, 0] + x[:, 2]) / 2 y[:, 1] = (x[:, 1] + x[:, 3]) / 2 y[:, 2] = x[:, 2] - x[:, 0] @@ -105,7 +105,7 @@ def xyxy2xywh(x): def xywh2xyxy(x): # Convert bounding box format from [x, y, w, h] to [x1, y1, x2, y2] - y = torch.zeros_like(x) if x.dtype is torch.float32 else np.zeros_like(x) + y = torch.zeros_like(x) if isinstance(x, torch.Tensor) else np.zeros_like(x) y[:, 0] = (x[:, 0] - x[:, 2] / 2) y[:, 1] = (x[:, 1] - x[:, 3] / 2) y[:, 2] = (x[:, 0] + x[:, 2] / 2) @@ -251,7 +251,7 @@ def wh_iou(box1, box2): def compute_loss(p, targets): # predictions, targets FT = torch.cuda.FloatTensor if p[0].is_cuda else torch.FloatTensor loss, lxy, lwh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) - txy, twh, tcls, tconf, indices = targets + txy, twh, tcls, indices = targets MSE = nn.MSELoss() CE = nn.CrossEntropyLoss() BCE = nn.BCEWithLogitsLoss() @@ -260,18 +260,21 @@ def compute_loss(p, targets): # predictions, targets # gp = [x.numel() for x in tconf] # grid points for i, pi0 in enumerate(p): # layer i predictions, i b, a, gj, gi = indices[i] # image, anchor, gridx, gridy + tconf = torch.zeros_like(pi0[..., 0]) # conf # Compute losses k = 1 # nT / bs if len(b) > 0: pi = pi0[b, a, gj, gi] # predictions closest to anchors + tconf[b, a, gj, gi] = 1 # conf + lxy += k * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy lwh += k * MSE(pi[..., 2:4], twh[i]) # wh lcls += (k / 4) * CE(pi[..., 5:], tcls[i]) # pos_weight = FT([gp[i] / min(gp) * 4.]) # BCE = nn.BCEWithLogitsLoss(pos_weight=pos_weight) - lconf += (k * 64) * BCE(pi0[..., 4], tconf[i]) + lconf += (k * 64) * BCE(pi0[..., 4], tconf) loss = lxy + lwh + lconf + lcls # Add to dictionary @@ -283,15 +286,13 @@ def compute_loss(p, targets): # predictions, targets return loss, d -def build_targets(model, targets, pred): +def build_targets(model, targets): # targets = [image, class, x, y, w, h] if isinstance(model, nn.parallel.DistributedDataParallel): model = model.module - yolo_layers = get_yolo_layers(model) - # anchors = closest_anchor(model, targets) # [layer, anchor, i, j] - txy, twh, tcls, tconf, indices = [], [], [], [], [] - for i, layer in enumerate(yolo_layers): + txy, twh, tcls, indices = [], [], [], [] + for i, layer in enumerate(get_yolo_layers(model)): nG = model.module_list[layer][0].nG # grid size anchor_vec = model.module_list[layer][0].anchor_vec @@ -324,12 +325,7 @@ def build_targets(model, targets, pred): # Class tcls.append(c) - # Conf - tci = torch.zeros_like(pred[i][..., 0]) - tci[b, a, gj, gi] = 1 # conf - tconf.append(tci) - - return txy, twh, tcls, tconf, indices + return txy, twh, tcls, indices def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): @@ -439,15 +435,6 @@ def get_yolo_layers(model): return [i for i, x in enumerate(bool_vec) if x] # [82, 94, 106] for yolov3 -def return_torch_unique_index(u, uv): - n = uv.shape[1] # number of columns - first_unique = torch.zeros(n, device=u.device).long() - for j in range(n): - first_unique[j] = (uv[:, j:j + 1] == u).all(0).nonzero()[0] - - return first_unique - - def strip_optimizer_from_checkpoint(filename='weights/best.pt'): # Strip optimizer from *.pt files for lighter files (reduced by 2/3 size) a = torch.load(filename, map_location='cpu') @@ -480,10 +467,9 @@ def plot_results(start=0): # import os; os.system('wget https://storage.googleapis.com/ultralytics/yolov3/results_v3.txt') # from utils.utils import *; plot_results() - plt.figure(figsize=(14, 7)) + fig = plt.figure(figsize=(14, 7)) s = ['X + Y', 'Width + Height', 'Confidence', 'Classification', 'Total Loss', 'Precision', 'Recall', 'mAP'] - files = sorted(glob.glob('results*.txt')) - for f in files: + for f in sorted(glob.glob('results*.txt')): results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 9, 10, 11]).T # column 11 is mAP x = range(1, results.shape[1]) for i in range(8): @@ -492,3 +478,4 @@ def plot_results(start=0): plt.title(s[i]) if i == 0: plt.legend() + fig.tight_layout() diff --git a/weights/download_yolov3_weights.sh b/weights/download_yolov3_weights.sh index 0568cb87..fe6213aa 100644 --- a/weights/download_yolov3_weights.sh +++ b/weights/download_yolov3_weights.sh @@ -18,3 +18,4 @@ wget -c https://pjreddie.com/media/files/darknet53.conv.74 # ./darknet partial cfg/yolov3-tiny.cfg yolov3-tiny.weights yolov3-tiny.conv.15 15 # mv yolov3-tiny.conv.15 ../ +cd .. From c7192f64c93e48dd3b3636a0be28432a78a6f7d8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 25 Mar 2019 15:03:13 +0100 Subject: [PATCH 0547/2595] Update train.py --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 3e983127..448f7774 100644 --- a/train.py +++ b/train.py @@ -63,7 +63,7 @@ def train( #initialize for distributed training if torch.cuda.device_count() > 1: - dist.init_process_group(backend=opt.dist_backend, init_method=opt.dist_url,world_size=opt.world_size, rank=opt.rank) + dist.init_process_group(backend=opt.backend, init_method=opt.dist_url,world_size=opt.world_size, rank=opt.rank) model = torch.nn.parallel.DistributedDataParallel(model) # Transfer learning (train only YOLO layers) From 06d264198c472a09be5e4bb2dc9cc9a3a6533a69 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 25 Mar 2019 15:05:35 +0100 Subject: [PATCH 0548/2595] Update train.py --- train.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/train.py b/train.py index 448f7774..5f5410e1 100644 --- a/train.py +++ b/train.py @@ -60,11 +60,6 @@ def train( cutoff = load_darknet_weights(model, weights + 'darknet53.conv.74') elif cfg.endswith('yolov3-tiny.cfg'): cutoff = load_darknet_weights(model, weights + 'yolov3-tiny.conv.15') - - #initialize for distributed training - if torch.cuda.device_count() > 1: - dist.init_process_group(backend=opt.backend, init_method=opt.dist_url,world_size=opt.world_size, rank=opt.rank) - model = torch.nn.parallel.DistributedDataParallel(model) # Transfer learning (train only YOLO layers) # for i, (name, p) in enumerate(model.named_parameters()): From c16b587ac7afa4c5fdee41527aab1419511cd17d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 25 Mar 2019 15:06:22 +0100 Subject: [PATCH 0549/2595] Update train.py --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 5f5410e1..53f08d71 100644 --- a/train.py +++ b/train.py @@ -83,7 +83,7 @@ def train( dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=num_workers, - shuffle=True, + shuffle=False, pin_memory=False, collate_fn=dataset.collate_fn, sampler=sampler) From 8f0caff64039877910fbe7a952910e4010e1e633 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 25 Mar 2019 15:27:09 +0100 Subject: [PATCH 0550/2595] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 36 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 20 +++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..7b4d9efd --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,36 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: bug +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + - OS: [e.g. iOS] + - Version [e.g. 22] + +**Smartphone (please complete the following information):** + - Device: [e.g. iPhoneXS] + - OS: [e.g. iOS8.1] + - Version [e.g. 22] + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..11fc491e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: enhancement +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. From ff06b698ed76d1bb10733ec6de2813f777f2a258 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 25 Mar 2019 15:32:00 +0100 Subject: [PATCH 0551/2595] updates --- train.py | 2 -- weights/download_yolov3_weights.sh | 1 - 2 files changed, 3 deletions(-) diff --git a/train.py b/train.py index 53f08d71..4611405e 100644 --- a/train.py +++ b/train.py @@ -190,8 +190,6 @@ def train( os.system('cp ' + latest + ' ' + weights + 'backup%g.pt' % epoch) # Calculate mAP - if type(model) is nn.parallel.DistributedDataParallel: - model = model.module with torch.no_grad(): P, R, mAP = test.test(cfg, data_cfg, weights=latest, batch_size=batch_size, img_size=img_size) diff --git a/weights/download_yolov3_weights.sh b/weights/download_yolov3_weights.sh index fe6213aa..0568cb87 100644 --- a/weights/download_yolov3_weights.sh +++ b/weights/download_yolov3_weights.sh @@ -18,4 +18,3 @@ wget -c https://pjreddie.com/media/files/darknet53.conv.74 # ./darknet partial cfg/yolov3-tiny.cfg yolov3-tiny.weights yolov3-tiny.conv.15 15 # mv yolov3-tiny.conv.15 ../ -cd .. From f5d398a68d5bee48e9e0681f77033f569089d3be Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 25 Mar 2019 15:33:36 +0100 Subject: [PATCH 0552/2595] updates --- train.py | 1 - 1 file changed, 1 deletion(-) diff --git a/train.py b/train.py index 4611405e..30a07f3e 100644 --- a/train.py +++ b/train.py @@ -8,7 +8,6 @@ import test # Import test.py to get mAP after each epoch from models import * from utils.datasets import * from utils.utils import * -import torch.distributed as dist def train( From bd440fa0c3d10cb7d8a615d75501d1f550978532 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 25 Mar 2019 18:35:39 +0100 Subject: [PATCH 0553/2595] updates --- requirements.txt | 2 +- utils/gcp.sh | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/requirements.txt b/requirements.txt index f7d21d87..aa74abd4 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # pip3 install -U -r requirements.txt -# conda install numpy opencv matplotlib && conda install pytorch torchvision -c pytorch +# conda install numpy opencv matplotlib tqdm && conda install pytorch torchvision -c pytorch numpy opencv-python torch >= 1.0.0 diff --git a/utils/gcp.sh b/utils/gcp.sh index a3372631..184cdde7 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -1,16 +1,16 @@ #!/usr/bin/env bash # New VM -sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 +git clone https://github.com/ultralytics/yolov3 bash yolov3/data/get_coco_dataset.sh -bash yolov3/weights/download_yolov3_weights.sh -sudo rm -rf cocoapi && git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 -sudo shutdown +bash yolov3/weights/download_yolov3_weights.sh && cp -r yolov3/weights weights +git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 +sudo reboot now # Train sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 cp -r weights yolov3 -cd yolov3 && python3 train.py --batch-size 48 --epochs 1 +cd yolov3 && python3 train.py --batch-size 24 --epochs 1 sudo shutdown # Resume @@ -22,7 +22,7 @@ python3 detect.py # Clone a branch sudo rm -rf yolov3 && git clone -b multi_gpu --depth 1 https://github.com/ultralytics/yolov3 cp -r weights yolov3 -cd yolov3 && python3 train.py --batch-size 48 --epochs 1 +cd yolov3 && python3 train.py --batch-size 24 --epochs 1 sudo shutdown # Git pull branch From 5fd702aead39234735beb56fe8882f9fd0e8ef3f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 25 Mar 2019 19:39:14 +0100 Subject: [PATCH 0554/2595] updates --- utils/gcp.sh | 44 ++++++++++++++++++++------------------------ 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 184cdde7..3d398a46 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -1,17 +1,23 @@ #!/usr/bin/env bash # New VM +rm -rf yolov3 weights coco git clone https://github.com/ultralytics/yolov3 +bash yolov3/weights/download_yolov3_weights.sh && cp -r weights yolov3 bash yolov3/data/get_coco_dataset.sh -bash yolov3/weights/download_yolov3_weights.sh && cp -r yolov3/weights weights git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 sudo reboot now -# Train -sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 +# Re-clone +sudo rm -rf yolov3 +git clone https://github.com/ultralytics/yolov3 # master +# git clone -b multi_gpu --depth 1 https://github.com/ultralytics/yolov3 # branch cp -r weights yolov3 -cd yolov3 && python3 train.py --batch-size 24 --epochs 1 -sudo shutdown +cp -r cocoapi/PythonAPI/pycocotools yolov3 +cd yolov3 + +# Train +python3 train.py # Resume python3 train.py --resume @@ -19,32 +25,22 @@ python3 train.py --resume # Detect python3 detect.py -# Clone a branch -sudo rm -rf yolov3 && git clone -b multi_gpu --depth 1 https://github.com/ultralytics/yolov3 -cp -r weights yolov3 -cd yolov3 && python3 train.py --batch-size 24 --epochs 1 -sudo shutdown - -# Git pull branch -git pull https://github.com/ultralytics/yolov3 multi_gpu - # Test -sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 -sudo rm -rf cocoapi && git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 -cd yolov3 && python3 test.py --save-json --conf-thres 0.001 --img-size 416 +python3 detect.py --save-json --conf-thres 0.001 --img-size 416 + +# Git pull +git pull https://github.com/ultralytics/yolov3 # master +git pull https://github.com/ultralytics/yolov3 multi_gpu # branch # Test Darknet training -python3 test.py --img_size 416 --weights ../darknet/backup/yolov3.backup +python3 test.py --weights ../darknet/backup/yolov3.backup -# Download with wget -wget https://storage.googleapis.com/ultralytics/yolov3.pt -O weights/latest.pt - -# Copy latest.pt to bucket +# Copy latest.pt TO bucket gsutil cp yolov3/weights/latest1gpu.pt gs://ultralytics -# Copy latest.pt from bucket +# Copy latest.pt FROM bucket gsutil cp gs://ultralytics/latest.pt yolov3/weights/latest.pt -wget https://storage.googleapis.com/ultralytics/latest.pt +wget https://storage.googleapis.com/ultralytics/latest.pt -O weights/latest.pt # Trade Studies sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 From 47eab968abdb3be99e638c25e4bad8590b62abb7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 26 Mar 2019 18:02:57 +0100 Subject: [PATCH 0555/2595] updates --- utils/utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/utils.py b/utils/utils.py index 2233f88f..f33ac340 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -382,6 +382,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): # Sort the detections by maximum object confidence _, conf_sort_index = torch.sort(dc[:, 4] * dc[:, 5], descending=True) dc = dc[conf_sort_index] + dc = dc[:min(len(dc), 100)] # limit to first 100 boxes: https://github.com/ultralytics/yolov3/issues/117 # Non-maximum suppression det_max = [] From cb67d64a5f83facedef3d4a662703db326dae591 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fatih=20Baltac=C4=B1?= Date: Wed, 27 Mar 2019 17:44:19 +0300 Subject: [PATCH 0556/2595] Update datasets.py (#169) --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index be127210..5128bfe8 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -100,7 +100,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing assert len(self.img_files) > 0, 'No images found in %s' % path self.img_size = img_size self.augment = augment - self.label_files = [x.replace('images', 'labels').replace('.bmp', '.txt').replace('.jpg', '.txt') + self.label_files = [x.replace('images', 'labels').replace('.bmp', '.txt').replace('.jpg', '.txt').replace('.png', '.txt') for x in self.img_files] def __len__(self): From fdc02115b5422027e5b4592f7de9ed392897c164 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 28 Mar 2019 13:46:23 +0100 Subject: [PATCH 0557/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ea6c356e..dfa50321 100755 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ This directory contains python software and an iOS App developed by Ultralytics # Description -The https://github.com/ultralytics/yolov3 repo contains inference and training code for YOLOv3 in PyTorch. The code works on Linux, MacOS and Windows. Training is done on the COCO dataset by default: https://cocodataset.org/#home. **Credit to Joseph Redmon for YOLO: ** https://pjreddie.com/darknet/yolo/. +The https://github.com/ultralytics/yolov3 repo contains inference and training code for YOLOv3 in PyTorch. The code works on Linux, MacOS and Windows. Training is done on the COCO dataset by default: https://cocodataset.org/#home. **Credit to Joseph Redmon for YOLO:** https://pjreddie.com/darknet/yolo/. # Requirements From 1c48376d8d8eaf5ca2f4426d22df52a259b4ea0c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 28 Mar 2019 18:55:13 +0100 Subject: [PATCH 0558/2595] updates --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index c1282ac9..a5574e82 100755 --- a/.gitignore +++ b/.gitignore @@ -10,7 +10,9 @@ *.HEIC *.data *.cfg +*.json data/* +pycocotools/* !cfg/coco.data !cfg/yolov3*.cfg !data/samples/zidane.jpg From c0cacc45a14083dc14cbfef65088a6e6b19aec88 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Mar 2019 18:45:04 +0100 Subject: [PATCH 0559/2595] mAP Update (#176) * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates * updates --- README.md | 97 ++++++++++++++++++++----------- detect.py | 23 +++----- models.py | 4 ++ test.py | 139 ++++++++++++++++++++++++-------------------- train.py | 12 ++-- utils/gcp.sh | 24 +++++--- utils/utils.py | 153 +++++++++++++++++++++++++++---------------------- 7 files changed, 257 insertions(+), 195 deletions(-) diff --git a/README.md b/README.md index dfa50321..e323ea40 100755 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ Python 3.7 or later with the following `pip3 install -U -r requirements.txt` pac # Tutorials +* [GCP Quickstart](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) * [Transfer Learning](https://github.com/ultralytics/yolov3/wiki/Example:-Transfer-Learning) * [Train Single Image](https://github.com/ultralytics/yolov3/wiki/Example:-Train-Single-Image) * [Train Single Class](https://github.com/ultralytics/yolov3/wiki/Example:-Train-Single-Class) @@ -67,13 +68,16 @@ HS**V** Intensity | +/- 50% https://cloud.google.com/deep-learning-vm/ **Machine type:** n1-standard-8 (8 vCPUs, 30 GB memory) **CPU platform:** Intel Skylake -**GPUs:** 1-4x P100 ($0.493/hr), 1-8x V100 ($0.803/hr) +**GPUs:** K80 ($0.198/hr), P4 ($0.279/hr), T4 ($0.353/hr), P100 ($0.493/hr), V100 ($0.803/hr) **HDD:** 100 GB SSD **Dataset:** COCO train 2014 GPUs | `batch_size` | batch time | epoch time | epoch cost --- |---| --- | --- | --- | (images) | (s/batch) | | +1 K80 | 16 | 1.43s | 175min | $0.58 +1 P4 | 8 | 0.51s | 125min | $0.58 +1 T4 | 16 | 0.78s | 94min | $0.55 1 P100 | 16 | 0.39s | 48min | $0.39 2 P100 | 32 | 0.48s | 29min | $0.47 4 P100 | 64 | 0.65s | 20min | $0.65 @@ -108,13 +112,32 @@ Run `detect.py` with `webcam=True` to show a live webcam feed. - Use `test.py --weights weights/yolov3.weights` to test the official YOLOv3 weights. - Use `test.py --weights weights/latest.pt` to test the latest training results. -- Compare to official darknet results from https://arxiv.org/abs/1804.02767. +- Compare to darknet published results https://arxiv.org/abs/1804.02767. - | ultralytics/yolov3 | darknet ---- | ---| --- -YOLOv3-320 | 51.3 | 51.5 -YOLOv3-416 | 54.9 | 55.3 -YOLOv3-608 | 57.9 | 57.9 + + | [ultralytics/yolov3](https://github.com/ultralytics/yolov3) with `pycocotools` | [darknet/yolov3](https://arxiv.org/abs/1804.02767) +--- | --- | --- +YOLOv3-320 | 51.8 | 51.5 +YOLOv3-416 | 55.4 | 55.3 +YOLOv3-608 | 58.2 | 57.9 ``` bash sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 @@ -123,34 +146,42 @@ sudo rm -rf cocoapi && git clone https://github.com/cocodataset/cocoapi && cd co cd yolov3 python3 test.py --save-json --conf-thres 0.001 --img-size 416 -Namespace(batch_size=32, cfg='cfg/yolov3.cfg', conf_thres=0.001, data_cfg='cfg/coco.data', img_size=416, iou_thres=0.5, nms_thres=0.45, save_json=True, weights='weights/yolov3.weights') - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.308 - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.549 - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.310 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.141 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.334 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.454 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.267 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.403 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.428 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.237 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.464 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.585 +Namespace(batch_size=32, cfg='cfg/yolov3.cfg', conf_thres=0.001, data_cfg='cfg/coco.data', img_size=416, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='weights/yolov3.weights') +Using cuda _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', major=7, minor=0, total_memory=16130MB, multi_processor_count=80) + Image Total P R mAP +Calculating mAP: 100%|█████████████████████████████████| 157/157 [08:34<00:00, 2.53s/it] + 5000 5000 0.0896 0.756 0.555 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.312 + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.554 + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.317 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.145 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.343 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.452 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.268 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.411 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.435 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.244 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.477 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.587 python3 test.py --save-json --conf-thres 0.001 --img-size 608 --batch-size 16 -Namespace(batch_size=16, cfg='cfg/yolov3.cfg', conf_thres=0.001, data_cfg='cfg/coco.data', img_size=608, iou_thres=0.5, nms_thres=0.45, save_json=True, weights='weights/yolov3.weights') - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.328 - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.579 - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.335 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.190 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.357 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.428 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.279 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.429 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.456 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.299 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.483 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.572 +Namespace(batch_size=16, cfg='cfg/yolov3.cfg', conf_thres=0.001, data_cfg='cfg/coco.data', img_size=608, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='weights/yolov3.weights') +Using cuda _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', major=7, minor=0, total_memory=16130MB, multi_processor_count=80) + Image Total P R mAP +Calculating mAP: 100%|█████████████████████████████████| 313/313 [08:54<00:00, 1.55s/it] + 5000 5000 0.0966 0.786 0.579 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.331 + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.582 + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.344 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.198 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.362 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.427 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.281 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.437 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.463 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.309 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.494 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.577 ``` # Contact diff --git a/detect.py b/detect.py index 32c41c55..36e2138e 100644 --- a/detect.py +++ b/detect.py @@ -14,7 +14,7 @@ def detect( output='output', # output folder img_size=416, conf_thres=0.3, - nms_thres=0.45, + nms_thres=0.5, save_txt=False, save_images=True, webcam=False @@ -29,9 +29,6 @@ def detect( # Load weights if weights.endswith('.pt'): # pytorch format - if weights.endswith('yolov3.pt') and not os.path.exists(weights): - if platform in ('darwin', 'linux'): # linux/macos - os.system('wget https://storage.googleapis.com/ultralytics/yolov3.pt -O ' + weights) model.load_state_dict(torch.load(weights, map_location=device)['model']) else: # darknet format _ = load_darknet_weights(model, weights) @@ -63,26 +60,22 @@ def detect( torch.onnx.export(model, img, 'weights/model.onnx', verbose=True) return pred = model(img) - pred = pred[pred[:, :, 4] > conf_thres] # remove boxes < threshold - - if len(pred) > 0: - # Run NMS on predictions - detections = non_max_suppression(pred.unsqueeze(0), conf_thres, nms_thres)[0] + detections = non_max_suppression(pred, conf_thres, nms_thres)[0] + if len(detections) > 0: # Rescale boxes from 416 to true image size scale_coords(img_size, detections[:, :4], im0.shape).round() # Print results to screen - unique_classes = detections[:, -1].cpu().unique() - for c in unique_classes: - n = (detections[:, -1].cpu() == c).sum() + for c in detections[:, -1].unique(): + n = (detections[:, -1] == c).sum() print('%g %ss' % (n, classes[int(c)]), end=', ') # Draw bounding boxes and labels of detections for *xyxy, conf, cls_conf, cls in detections: if save_txt: # Write to file with open(save_path + '.txt', 'a') as file: - file.write(('%g ' * 6 + '\n') % (*xyxy, cls, cls_conf * conf)) + file.write(('%g ' * 6 + '\n') % (*xyxy, cls, conf)) # Add bbox to the image label = '%s %.2f' % (classes[int(cls)], conf) @@ -106,8 +99,8 @@ if __name__ == '__main__': parser.add_argument('--weights', type=str, default='weights/yolov3.weights', help='path to weights file') parser.add_argument('--images', type=str, default='data/samples', help='path to images') parser.add_argument('--img-size', type=int, default=32 * 13, help='size of each image dimension') - parser.add_argument('--conf-thres', type=float, default=0.50, help='object confidence threshold') - parser.add_argument('--nms-thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') + parser.add_argument('--conf-thres', type=float, default=0.3, help='object confidence threshold') + parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') opt = parser.parse_args() print(opt) diff --git a/models.py b/models.py index 67e8a83d..0e92c79f 100755 --- a/models.py +++ b/models.py @@ -1,5 +1,7 @@ import os +import torch.nn.functional as F + from utils.parse_config import * from utils.utils import * @@ -158,6 +160,8 @@ class YOLOLayer(nn.Module): p[..., 2:4] = torch.exp(p[..., 2:4]) * self.anchor_wh # wh yolo method # p[..., 2:4] = ((torch.sigmoid(p[..., 2:4]) * 2) ** 2) * self.anchor_wh # wh power method p[..., 4] = torch.sigmoid(p[..., 4]) # p_conf + p[..., 5:] = torch.sigmoid(p[..., 5:]) # p_class + # p[..., 5:] = F.softmax(p[..., 5:], dim=4) # p_class p[..., :4] *= self.stride # reshape from [1, 3, 13, 13, 85] to [1, 507, 85] diff --git a/test.py b/test.py index c1cc3d2a..171159b6 100644 --- a/test.py +++ b/test.py @@ -1,6 +1,5 @@ import argparse import json -import time from torch.utils.data import DataLoader @@ -12,18 +11,18 @@ from utils.utils import * def test( cfg, data_cfg, - weights, + weights=None, batch_size=16, img_size=416, iou_thres=0.5, - conf_thres=0.3, - nms_thres=0.45, + conf_thres=0.1, + nms_thres=0.5, save_json=False, model=None ): - device = torch_utils.select_device() - if model is None: + device = torch_utils.select_device() + # Initialize model model = Darknet(cfg, img_size).to(device) @@ -33,13 +32,16 @@ def test( else: # darknet format _ = load_darknet_weights(model, weights) - if torch.cuda.device_count() > 1: - model = nn.DataParallel(model) + if torch.cuda.device_count() > 1: + model = nn.DataParallel(model) + else: + device = next(model.parameters()).device # Configure run data_cfg = parse_data_cfg(data_cfg) - nC = int(data_cfg['classes']) # number of classes (80 for COCO) test_path = data_cfg['valid'] + if (os.sep + 'coco' + os.sep) in test_path: # COCO dataset probable + save_json = True # use pycocotools # Dataloader dataset = LoadImagesAndLabels(test_path, img_size=img_size) @@ -50,104 +52,111 @@ def test( collate_fn=dataset.collate_fn) model.eval() - mean_mAP, mean_R, mean_P, seen = 0.0, 0.0, 0.0, 0 + seen = 0 print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP')) - mP, mR, mAPs, TP, jdict = [], [], [], [], [] - AP_accum, AP_accum_count = np.zeros(nC), np.zeros(nC) + mP, mR, mAP, mAPj = 0.0, 0.0, 0.0, 0.0 + jdict, tdict, stats, AP, AP_class = [], [], [], [], [] coco91class = coco80_to_coco91_class() - for imgs, targets, paths, shapes in tqdm(dataloader): - t = time.time() + for batch_i, (imgs, targets, paths, shapes) in enumerate(tqdm(dataloader, desc='Calculating mAP')): targets = targets.to(device) imgs = imgs.to(device) output = model(imgs) output = non_max_suppression(output, conf_thres=conf_thres, nms_thres=nms_thres) - # Compute average precision for each sample - for si, detections in enumerate(output): + # Per image + for si, pred in enumerate(output): + image_id = int(Path(paths[si]).stem.split('_')[-1]) labels = targets[targets[:, 0] == si, 1:] seen += 1 - if detections is None: - # If there are labels but no detections mark as zero AP - if len(labels) != 0: - mP.append(0), mR.append(0), mAPs.append(0) + if pred is None: continue - # Get detections sorted by decreasing confidence scores - detections = detections[(-detections[:, 4]).argsort()] - if save_json: + # add to json pred dictionary # [{"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], "score": 0.236}, ... - box = detections[:, :4].clone() # xyxy + box = pred[:, :4].clone() # xyxy scale_coords(img_size, box, shapes[si]) # to original shape box = xyxy2xywh(box) # xywh box[:, :2] -= box[:, 2:] / 2 # xy center to top-left corner - - # add to json dictionary - for di, d in enumerate(detections): + for di, d in enumerate(pred): jdict.append({ - 'image_id': int(Path(paths[si]).stem.split('_')[-1]), + 'image_id': image_id, 'category_id': coco91class[int(d[6])], 'bbox': [float3(x) for x in box[di]], - 'score': float3(d[4] * d[5]) + 'score': float(d[4]) }) + # if len(labels) > 0: + # # add to json targets dictionary + # # [{"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], ... + # box = labels[:, 1:].clone() + # box[:, [0, 2]] *= shapes[si][1] # scale width + # box[:, [1, 3]] *= shapes[si][0] # scale height + # box[:, :2] -= box[:, 2:] / 2 # xy center to top-left corner + # for di, d in enumerate(labels): + # tdict.append({ + # 'segmentation': [[]], + # 'iscrowd': 0, + # 'image_id': image_id, + # 'category_id': coco91class[int(d[0])], + # 'id': seen, + # 'bbox': [float3(x) for x in box[di]], + # 'area': float3(box[di][2:4].prod()) + # }) + # If no labels add number of detections as incorrect correct = [] + detected = [] if len(labels) == 0: # correct.extend([0 for _ in range(len(detections))]) - mP.append(0), mR.append(0), mAPs.append(0) continue else: # Extract target boxes as (x1, y1, x2, y2) target_box = xywh2xyxy(labels[:, 1:5]) * img_size target_cls = labels[:, 0] - detected = [] - for *pred_box, conf, cls_conf, cls_pred in detections: + for *pred_box, conf, cls_conf, cls_pred in pred: + if cls_pred not in target_cls: + correct.append(0) + continue + # Best iou, index between pred and targets iou, bi = bbox_iou(pred_box, target_box).max(0) # If iou > threshold and class is correct mark as correct - if iou > iou_thres and cls_pred == target_cls[bi] and bi not in detected: + if iou > iou_thres and bi not in detected: correct.append(1) detected.append(bi) else: correct.append(0) - # Compute Average Precision (AP) per class - AP, AP_class, R, P = ap_per_class(tp=np.array(correct), - conf=detections[:, 4].cpu().numpy(), - pred_cls=detections[:, 6].cpu().numpy(), - target_cls=target_cls.cpu().numpy()) + # Convert to Numpy + tp = np.array(correct) + conf = pred[:, 4].cpu().numpy() + pred_cls = pred[:, 6].cpu().numpy() + target_cls = target_cls.cpu().numpy() + stats.append((tp, conf, pred_cls, target_cls)) - # Accumulate AP per class - AP_accum_count += np.bincount(AP_class, minlength=nC) - AP_accum += np.bincount(AP_class, minlength=nC, weights=AP) + # Compute means + stats_np = [np.concatenate(x, 0) for x in list(zip(*stats))] + if len(stats_np): + AP, AP_class, R, P = ap_per_class(*stats_np) + mP, mR, mAP = P.mean(), R.mean(), AP.mean() - # Compute mean AP across all classes in this image, and append to image list - mP.append(P.mean()) - mR.append(R.mean()) - mAPs.append(AP.mean()) - - # Means of all images - mean_P = np.mean(mP) - mean_R = np.mean(mR) - mean_mAP = np.mean(mAPs) - - # Print image mAP and running mean mAP - print(('%11s%11s' + '%11.3g' * 4 + 's') % - (seen, len(dataset), mean_P, mean_R, mean_mAP, time.time() - t)) + # Print P, R, mAP + print(('%11s%11s' + '%11.3g' * 3) % (seen, len(dataset), mP, mR, mAP)) # Print mAP per class - print('\nmAP Per Class:') - for i, c in enumerate(load_classes(data_cfg['names'])): - if AP_accum_count[i]: - print('%15s: %-.4f' % (c, AP_accum[i] / (AP_accum_count[i]))) + if len(stats_np): + print('\nmAP Per Class:') + names = load_classes(data_cfg['names']) + for c, a in zip(AP_class, AP): + print('%15s: %-.4f' % (names[c], a)) # Save JSON - if save_json: + if save_json and mAP and len(jdict): imgIds = [int(Path(x).stem.split('_')[-1]) for x in dataset.img_files] with open('results.json', 'w') as file: json.dump(jdict, file) @@ -157,16 +166,20 @@ def test( # https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocoEvalDemo.ipynb cocoGt = COCO('../coco/annotations/instances_val2014.json') # initialize COCO ground truth api - cocoDt = cocoGt.loadRes('results.json') # initialize COCO detections api + cocoDt = cocoGt.loadRes('results.json') # initialize COCO pred api cocoEval = COCOeval(cocoGt, cocoDt, 'bbox') cocoEval.params.imgIds = imgIds # [:32] # only evaluate these images cocoEval.evaluate() cocoEval.accumulate() cocoEval.summarize() + mAP = cocoEval.stats[1] # update mAP to pycocotools mAP + + # F1 score = harmonic mean of precision and recall + # F1 = 2 * (mP * mR) / (mP + mR) # Return mAP - return mean_P, mean_R, mean_mAP + return mP, mR, mAP if __name__ == '__main__': @@ -176,8 +189,8 @@ if __name__ == '__main__': parser.add_argument('--data-cfg', type=str, default='cfg/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3.weights', help='path to weights file') parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') - parser.add_argument('--conf-thres', type=float, default=0.3, help='object confidence threshold') - parser.add_argument('--nms-thres', type=float, default=0.45, help='iou threshold for non-maximum suppression') + parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') + parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') parser.add_argument('--save-json', action='store_true', help='save a cocoapi-compatible JSON results file') parser.add_argument('--img-size', type=int, default=416, help='size of each image dimension') opt = parser.parse_args() diff --git a/train.py b/train.py index 30a07f3e..c714bc27 100644 --- a/train.py +++ b/train.py @@ -40,7 +40,7 @@ def train( # Optimizer lr0 = 0.001 # initial learning rate - optimizer = torch.optim.SGD(model.parameters(), lr=lr0, momentum=.9, weight_decay=0.0005) + optimizer = torch.optim.SGD(model.parameters(), lr=lr0, momentum=0.9, weight_decay=0.0005) cutoff = -1 # backbone reaches to cutoff layer start_epoch = 0 @@ -119,9 +119,9 @@ def train( if plot_images: fig = plt.figure(figsize=(10, 10)) for ip in range(batch_size): - labels = xywh2xyxy(targets[targets[:, 0] == ip, 2:6]).numpy() * img_size + boxes = xywh2xyxy(targets[targets[:, 0] == ip, 2:6]).numpy().T * img_size plt.subplot(4, 4, ip + 1).imshow(imgs[ip].numpy().transpose(1, 2, 0)) - plt.plot(labels[:, [0, 2, 2, 0, 0]].T, labels[:, [1, 1, 3, 3, 1]].T, '.-') + plt.plot(boxes[[0, 2, 2, 0, 0]], boxes[[1, 1, 3, 3, 1]], '.-') plt.axis('off') fig.tight_layout() fig.savefig('batch_%g.jpg' % i, dpi=fig.dpi) @@ -170,7 +170,7 @@ def train( best_loss = mloss['total'] # Save training results - save = True + save = False if save: # Save latest checkpoint checkpoint = {'epoch': epoch, @@ -190,11 +190,11 @@ def train( # Calculate mAP with torch.no_grad(): - P, R, mAP = test.test(cfg, data_cfg, weights=latest, batch_size=batch_size, img_size=img_size) + results = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size, model=model) # Write epoch results with open('results.txt', 'a') as file: - file.write(s + '%11.3g' * 3 % (P, R, mAP) + '\n') + file.write(s + '%11.3g' * 3 % results + '\n') # append P, R, mAP if __name__ == '__main__': diff --git a/utils/gcp.sh b/utils/gcp.sh index 3d398a46..e644ef7e 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -10,8 +10,8 @@ sudo reboot now # Re-clone sudo rm -rf yolov3 -git clone https://github.com/ultralytics/yolov3 # master -# git clone -b multi_gpu --depth 1 https://github.com/ultralytics/yolov3 # branch +# git clone https://github.com/ultralytics/yolov3 # master +git clone -b map_update --depth 1 https://github.com/ultralytics/yolov3 yolov3 # branch cp -r weights yolov3 cp -r cocoapi/PythonAPI/pycocotools yolov3 cd yolov3 @@ -26,11 +26,11 @@ python3 train.py --resume python3 detect.py # Test -python3 detect.py --save-json --conf-thres 0.001 --img-size 416 +python3 test.py --save-json # Git pull git pull https://github.com/ultralytics/yolov3 # master -git pull https://github.com/ultralytics/yolov3 multi_gpu # branch +git pull https://github.com/ultralytics/yolov3 map_update # branch # Test Darknet training python3 test.py --weights ../darknet/backup/yolov3.backup @@ -40,10 +40,16 @@ gsutil cp yolov3/weights/latest1gpu.pt gs://ultralytics # Copy latest.pt FROM bucket gsutil cp gs://ultralytics/latest.pt yolov3/weights/latest.pt -wget https://storage.googleapis.com/ultralytics/latest.pt -O weights/latest.pt +wget https://storage.googleapis.com/ultralytics/yolov3/latest_v1_0.pt -O weights/latest_v1_0.pt +wget https://storage.googleapis.com/ultralytics/yolov3/best_v1_0.pt -O weights/best_v1_0.pt -# Trade Studies -sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 +# Debug/Development +sudo rm -rf yolov3 +# git clone https://github.com/ultralytics/yolov3 # master +git clone -b map_update --depth 1 https://github.com/ultralytics/yolov3 yolov3 # branch cp -r weights yolov3 -cd yolov3 && python3 train.py --batch-size 16 --epochs 1 -sudo shutdown +cp -r cocoapi/PythonAPI/pycocotools yolov3 +cd yolov3 + +#git pull https://github.com/ultralytics/yolov3 map_update # branch +python3 test.py --img-size 320 diff --git a/utils/utils.py b/utils/utils.py index f33ac340..dbc9e82a 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -7,7 +7,6 @@ import matplotlib.pyplot as plt import numpy as np import torch import torch.nn as nn -import torch.nn.functional as F from utils import torch_utils @@ -106,10 +105,10 @@ def xyxy2xywh(x): def xywh2xyxy(x): # Convert bounding box format from [x, y, w, h] to [x1, y1, x2, y2] y = torch.zeros_like(x) if isinstance(x, torch.Tensor) else np.zeros_like(x) - y[:, 0] = (x[:, 0] - x[:, 2] / 2) - y[:, 1] = (x[:, 1] - x[:, 3] / 2) - y[:, 2] = (x[:, 0] + x[:, 2] / 2) - y[:, 3] = (x[:, 1] + x[:, 3] / 2) + y[:, 0] = x[:, 0] - x[:, 2] / 2 + y[:, 1] = x[:, 1] - x[:, 3] / 2 + y[:, 2] = x[:, 0] + x[:, 2] / 2 + y[:, 3] = x[:, 1] + x[:, 3] / 2 return y @@ -142,25 +141,25 @@ def ap_per_class(tp, conf, pred_cls, target_cls): tp, conf, pred_cls = tp[i], conf[i], pred_cls[i] # Find unique classes - unique_classes = np.unique(np.concatenate((pred_cls, target_cls), 0)) + unique_classes = np.unique(target_cls) # Create Precision-Recall curve and compute AP for each class ap, p, r = [], [], [] for c in unique_classes: i = pred_cls == c - n_gt = sum(target_cls == c) # Number of ground truth objects - n_p = sum(i) # Number of predicted objects + n_gt = (target_cls == c).sum() # Number of ground truth objects + n_p = i.sum() # Number of predicted objects - if (n_p == 0) and (n_gt == 0): + if n_p == 0 and n_gt == 0: continue - elif (n_p == 0) or (n_gt == 0): + elif n_p == 0 or n_gt == 0: ap.append(0) r.append(0) p.append(0) else: # Accumulate FPs and TPs - fpc = np.cumsum(1 - tp[i]) - tpc = np.cumsum(tp[i]) + fpc = (1 - tp[i]).cumsum() + tpc = (tp[i]).cumsum() # Recall recall_curve = tpc / (n_gt + 1e-16) @@ -328,15 +327,18 @@ def build_targets(model, targets): return txy, twh, tcls, indices +# @profile def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): """ Removes detections with lower object confidence score than 'conf_thres' Non-Maximum Suppression to further filter detections. Returns detections with shape: - (x1, y1, x2, y2, object_conf, class_score, class_pred) + (x1, y1, x2, y2, object_conf, class_conf, class) """ - output = [None for _ in range(len(prediction))] + min_wh = 2 # (pixels) minimum box width and height + + output = [None] * len(prediction) for image_i, pred in enumerate(prediction): # Experiment: Prior class size rejection # x, y, w, h = pred[:, 0], pred[:, 1], pred[:, 2], pred[:, 3] @@ -352,56 +354,53 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): # multivariate_normal.pdf(x, mean=mat['class_mu'][c, :2], cov=mat['class_cov'][c, :2, :2]) # Filter out confidence scores below threshold - class_prob, class_pred = torch.max(F.softmax(pred[:, 5:], 1), 1) - v = pred[:, 4] > conf_thres - v = v.nonzero().squeeze() - if len(v.shape) == 0: - v = v.unsqueeze(0) + class_conf, class_pred = pred[:, 5:].max(1) + # pred[:, 4] *= class_conf - pred = pred[v] - class_prob = class_prob[v] - class_pred = class_pred[v] + i = (pred[:, 4] > conf_thres) & (pred[:, 2] > min_wh) & (pred[:, 3] > min_wh) + pred = pred[i] # If none are remaining => process next image - nP = pred.shape[0] - if not nP: + if len(pred) == 0: continue - # From (center x, center y, width, height) to (x1, y1, x2, y2) + # Select predicted classes + class_conf = class_conf[i] + class_pred = class_pred[i].unsqueeze(1).float() + + # Box (center x, center y, width, height) to (x1, y1, x2, y2) pred[:, :4] = xywh2xyxy(pred[:, :4]) + pred[:, 4] *= class_conf # improves mAP from 0.549 to 0.551 - # Detections ordered as (x1, y1, x2, y2, obj_conf, class_prob, class_pred) - detections = torch.cat((pred[:, :5], class_prob.float().unsqueeze(1), class_pred.float().unsqueeze(1)), 1) - # Iterate through all predicted classes - unique_labels = detections[:, -1].cpu().unique().to(prediction.device) + # Detections ordered as (x1y1x2y2, obj_conf, class_conf, class_pred) + pred = torch.cat((pred[:, :5], class_conf.unsqueeze(1), class_pred), 1) - nms_style = 'OR' # 'OR' (default), 'AND', 'MERGE' (experimental) - for c in unique_labels: - # Get the detections with class c - dc = detections[detections[:, -1] == c] - # Sort the detections by maximum object confidence - _, conf_sort_index = torch.sort(dc[:, 4] * dc[:, 5], descending=True) - dc = dc[conf_sort_index] + # Get detections sorted by decreasing confidence scores + pred = pred[(-pred[:, 4]).argsort()] + + det_max = [] + nms_style = 'MERGE' # 'OR' (default), 'AND', 'MERGE' (experimental) + for c in pred[:, -1].unique(): + dc = pred[pred[:, -1] == c] # select class c dc = dc[:min(len(dc), 100)] # limit to first 100 boxes: https://github.com/ultralytics/yolov3/issues/117 # Non-maximum suppression - det_max = [] - ind = list(range(len(dc))) if nms_style == 'OR': # default - while len(ind): - j = ind[0] - det_max.append(dc[j:j + 1]) # save highest conf detection - reject = bbox_iou(dc[j], dc[ind]) > nms_thres - [ind.pop(i) for i in reversed(reject.nonzero())] - # while dc.shape[0]: # SLOWER METHOD - # det_max.append(dc[:1]) # save highest conf detection - # if len(dc) == 1: # Stop if we're at the last detection - # break - # iou = bbox_iou(dc[0], dc[1:]) # iou with other boxes - # dc = dc[1:][iou < nms_thres] # remove ious > threshold + # METHOD1 + # ind = list(range(len(dc))) + # while len(ind): + # j = ind[0] + # det_max.append(dc[j:j + 1]) # save highest conf detection + # reject = (bbox_iou(dc[j], dc[ind]) > nms_thres).nonzero() + # [ind.pop(i) for i in reversed(reject)] - # Image Total P R mAP - # 4964 5000 0.629 0.594 0.586 + # METHOD2 + while dc.shape[0]: + det_max.append(dc[:1]) # save highest conf detection + if len(dc) == 1: # Stop if we're at the last detection + break + iou = bbox_iou(dc[0], dc[1:]) # iou with other boxes + dc = dc[1:][iou < nms_thres] # remove ious > threshold elif nms_style == 'AND': # requires overlap, single boxes erased while len(dc) > 1: @@ -411,22 +410,16 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): dc = dc[1:][iou < nms_thres] # remove ious > threshold elif nms_style == 'MERGE': # weighted mixture box - while len(dc) > 0: - iou = bbox_iou(dc[0], dc[0:]) # iou with other boxes - i = iou > nms_thres - - weights = dc[i, 4:5] * dc[i, 5:6] + while len(dc): + i = bbox_iou(dc[0], dc) > nms_thres # iou with other boxes + weights = dc[i, 4:5] dc[0, :4] = (weights * dc[i, :4]).sum(0) / weights.sum() det_max.append(dc[:1]) - dc = dc[iou < nms_thres] + dc = dc[i == 0] - # Image Total P R mAP - # 4964 5000 0.633 0.598 0.589 # normal - - if len(det_max) > 0: - det_max = torch.cat(det_max) - # Add max detections to outputs - output[image_i] = det_max if output[image_i] is None else torch.cat((output[image_i], det_max)) + if len(det_max): + det_max = torch.cat(det_max) # concatenate + output[image_i] = det_max[(-det_max[:, 4]).argsort()] # sort return output @@ -463,20 +456,42 @@ def coco_only_people(path='../coco/labels/val2014/'): print(labels.shape[0], file) -def plot_results(start=0): +def plot_wh_methods(): # from utils.utils import *; plot_wh_methods() + # Compares the two methods for width-height anchor multiplication + # https://github.com/ultralytics/yolov3/issues/168 + x = np.arange(-4.0, 4.0, .1) + ya = np.exp(x) + yb = (torch.sigmoid(torch.from_numpy(x)).numpy() * 2) + + fig = plt.figure(figsize=(6, 3), dpi=150) + plt.plot(x, ya, '.-', label='yolo method') + plt.plot(x, yb ** 2, '.-', label='^2 power method') + plt.plot(x, yb ** 2.5, '.-', label='^2.5 power method') + plt.xlim(left=-4, right=4) + plt.ylim(bottom=0, top=6) + plt.xlabel('input') + plt.ylabel('output') + plt.legend() + fig.tight_layout() + fig.savefig('comparison.jpg', dpi=fig.dpi) + + +def plot_results(start=0): # from utils.utils import *; plot_results() # Plot YOLO training results file 'results.txt' # import os; os.system('wget https://storage.googleapis.com/ultralytics/yolov3/results_v3.txt') - # from utils.utils import *; plot_results() fig = plt.figure(figsize=(14, 7)) s = ['X + Y', 'Width + Height', 'Confidence', 'Classification', 'Total Loss', 'Precision', 'Recall', 'mAP'] for f in sorted(glob.glob('results*.txt')): - results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 9, 10, 11]).T # column 11 is mAP - x = range(1, results.shape[1]) + results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 9, 10, 11, 12]).T # column 11 is mAP + x = range(start, results.shape[1]) for i in range(8): plt.subplot(2, 4, i + 1) - plt.plot(results[i, x[start:]], marker='.', label=f) + plt.plot(x, results[i, x], marker='.', label=f) plt.title(s[i]) if i == 0: plt.legend() + if i == 7: + plt.plot(x, results[i + 1, x], marker='.', label=f) fig.tight_layout() + fig.savefig('results.jpg', dpi=fig.dpi) From 6b828f184e73ea3629d8dc846e11c5a640b19360 Mon Sep 17 00:00:00 2001 From: Gabriel Bianconi Date: Sun, 31 Mar 2019 08:06:49 -0400 Subject: [PATCH 0560/2595] Fix None bug in detect.py (#177) --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 36e2138e..a308cd20 100644 --- a/detect.py +++ b/detect.py @@ -62,7 +62,7 @@ def detect( pred = model(img) detections = non_max_suppression(pred, conf_thres, nms_thres)[0] - if len(detections) > 0: + if detections is not None and len(detections) > 0: # Rescale boxes from 416 to true image size scale_coords(img_size, detections[:, :4], im0.shape).round() From 8901e96a38ee7fc6c832eb97a40c028bb18af763 Mon Sep 17 00:00:00 2001 From: Gabriel Bianconi Date: Sun, 31 Mar 2019 13:11:13 -0400 Subject: [PATCH 0561/2595] Save model by default (#178) * Save model by default * Update train.py --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index c714bc27..da102e4d 100644 --- a/train.py +++ b/train.py @@ -170,7 +170,7 @@ def train( best_loss = mloss['total'] # Save training results - save = False + save = True if save: # Save latest checkpoint checkpoint = {'epoch': epoch, From 09b02d2029ffa57880793c2e593e2b54175307ad Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 31 Mar 2019 19:57:44 +0200 Subject: [PATCH 0562/2595] updates --- utils/datasets.py | 20 +++++++++++--------- utils/utils.py | 16 ++++++++-------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 5128bfe8..b6397fbd 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -100,8 +100,9 @@ class LoadImagesAndLabels(Dataset): # for training/testing assert len(self.img_files) > 0, 'No images found in %s' % path self.img_size = img_size self.augment = augment - self.label_files = [x.replace('images', 'labels').replace('.bmp', '.txt').replace('.jpg', '.txt').replace('.png', '.txt') - for x in self.img_files] + self.label_files = [ + x.replace('images', 'labels').replace('.bmp', '.txt').replace('.jpg', '.txt').replace('.png', '.txt') + for x in self.img_files] def __len__(self): return len(self.img_files) @@ -116,7 +117,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing augment_hsv = True if self.augment and augment_hsv: # SV augmentation by 50% - fraction = 0.50 + fraction = 0.50 # must be < 1.0 img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) S = img_hsv[:, :, 1].astype(np.float32) V = img_hsv[:, :, 2].astype(np.float32) @@ -124,15 +125,15 @@ class LoadImagesAndLabels(Dataset): # for training/testing a = (random.random() * 2 - 1) * fraction + 1 S *= a if a > 1: - np.clip(S, a_min=0, a_max=255, out=S) + np.clip(S, None, 255, out=S) a = (random.random() * 2 - 1) * fraction + 1 V *= a if a > 1: - np.clip(V, a_min=0, a_max=255, out=V) + np.clip(V, None, 255, out=V) - img_hsv[:, :, 1] = S.astype(np.uint8) - img_hsv[:, :, 2] = V.astype(np.uint8) + img_hsv[:, :, 1] = S # .astype(np.uint8) + img_hsv[:, :, 2] = V # .astype(np.uint8) cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) h, w, _ = img.shape @@ -196,7 +197,8 @@ class LoadImagesAndLabels(Dataset): # for training/testing return torch.stack(img, 0), torch.cat(label, 0), path, hw -def letterbox(img, height=416, color=(127.5, 127.5, 127.5)): # resize a rectangular image to a padded square +def letterbox(img, height=416, color=(127.5, 127.5, 127.5)): + # Resize a rectangular image to a padded square shape = img.shape[:2] # shape = [height, width] ratio = float(height) / max(shape) # ratio = old / new new_shape = (round(shape[1] * ratio), round(shape[0] * ratio)) @@ -256,7 +258,7 @@ def random_affine(img, targets=(), degrees=(-10, 10), translate=(.1, .1), scale= y = xy[:, [1, 3, 5, 7]] xy = np.concatenate((x.min(1), y.min(1), x.max(1), y.max(1))).reshape(4, n).T - # apply angle-based reduction + # apply angle-based reduction of bounding boxes radians = a * math.pi / 180 reduction = max(abs(math.sin(radians)), abs(math.cos(radians))) ** 0.5 x = (xy[:, 2] + xy[:, 0]) / 2 diff --git a/utils/utils.py b/utils/utils.py index dbc9e82a..6e70331c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -249,7 +249,7 @@ def wh_iou(box1, box2): def compute_loss(p, targets): # predictions, targets FT = torch.cuda.FloatTensor if p[0].is_cuda else torch.FloatTensor - loss, lxy, lwh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]), FT([0]) + lxy, lwh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]) txy, twh, tcls, indices = targets MSE = nn.MSELoss() CE = nn.CrossEntropyLoss() @@ -267,13 +267,13 @@ def compute_loss(p, targets): # predictions, targets pi = pi0[b, a, gj, gi] # predictions closest to anchors tconf[b, a, gj, gi] = 1 # conf - lxy += k * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy - lwh += k * MSE(pi[..., 2:4], twh[i]) # wh - lcls += (k / 4) * CE(pi[..., 5:], tcls[i]) + lxy += k * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss + lwh += k * MSE(pi[..., 2:4], twh[i]) # wh loss + lcls += (k / 4) * CE(pi[..., 5:], tcls[i]) # class_conf loss # pos_weight = FT([gp[i] / min(gp) * 4.]) # BCE = nn.BCEWithLogitsLoss(pos_weight=pos_weight) - lconf += (k * 64) * BCE(pi0[..., 4], tconf) + lconf += (k * 64) * BCE(pi0[..., 4], tconf) # obj_conf loss loss = lxy + lwh + lconf + lcls # Add to dictionary @@ -300,7 +300,7 @@ def build_targets(model, targets): iou = [wh_iou(x, gwh) for x in anchor_vec] iou, a = torch.stack(iou, 0).max(0) # best iou and anchor - # reject below threshold ious (OPTIONAL) + # reject below threshold ious (OPTIONAL, increases P, lowers R) reject = True if reject: j = iou > 0.01 @@ -309,7 +309,7 @@ def build_targets(model, targets): t = targets # Indices - b, c = t[:, 0:2].long().t() # target image, class + b, c = t[:, :2].long().t() # target image, class gxy = t[:, 2:4] * nG gi, gj = gxy.long().t() # grid_i, grid_j indices.append((b, a, gj, gi)) @@ -370,7 +370,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): # Box (center x, center y, width, height) to (x1, y1, x2, y2) pred[:, :4] = xywh2xyxy(pred[:, :4]) - pred[:, 4] *= class_conf # improves mAP from 0.549 to 0.551 + pred[:, 4] *= class_conf # improves mAP from 0.549 to 0.551 # Detections ordered as (x1y1x2y2, obj_conf, class_conf, class_pred) pred = torch.cat((pred[:, :5], class_conf.unsqueeze(1), class_pred), 1) From b56952d70764b2dc895a6cbc4d7bf5b6cb19c743 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 31 Mar 2019 20:19:15 +0200 Subject: [PATCH 0563/2595] updates --- train.py | 1 + 1 file changed, 1 insertion(+) diff --git a/train.py b/train.py index da102e4d..d0fbd837 100644 --- a/train.py +++ b/train.py @@ -29,6 +29,7 @@ def train( if multi_scale: img_size = 608 # initiate with maximum multi_scale size + num_workers = 0 # bug https://github.com/ultralytics/yolov3/issues/174 else: torch.backends.cudnn.benchmark = True # unsuitable for multiscale From 4f98fbde787852d4b01ec218136138dcae78f14e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 1 Apr 2019 18:42:54 +0200 Subject: [PATCH 0564/2595] updates --- utils/utils.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 6e70331c..13d1a3cd 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -267,9 +267,9 @@ def compute_loss(p, targets): # predictions, targets pi = pi0[b, a, gj, gi] # predictions closest to anchors tconf[b, a, gj, gi] = 1 # conf - lxy += k * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss - lwh += k * MSE(pi[..., 2:4], twh[i]) # wh loss - lcls += (k / 4) * CE(pi[..., 5:], tcls[i]) # class_conf loss + lxy += (k * 16) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss + lwh += (k * 8) * MSE(pi[..., 2:4], twh[i]) # wh loss + lcls += (k * 1) * CE(pi[..., 5:], tcls[i]) # class_conf loss # pos_weight = FT([gp[i] / min(gp) * 4.]) # BCE = nn.BCEWithLogitsLoss(pos_weight=pos_weight) @@ -303,7 +303,7 @@ def build_targets(model, targets): # reject below threshold ious (OPTIONAL, increases P, lowers R) reject = True if reject: - j = iou > 0.01 + j = iou > 0.10 t, a, gwh = targets[j], a[j], gwh[j] else: t = targets From a76e8e3ee8652e473f605975955741246d023206 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 1 Apr 2019 18:43:21 +0200 Subject: [PATCH 0565/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 13d1a3cd..0d810685 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -267,8 +267,8 @@ def compute_loss(p, targets): # predictions, targets pi = pi0[b, a, gj, gi] # predictions closest to anchors tconf[b, a, gj, gi] = 1 # conf - lxy += (k * 16) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss - lwh += (k * 8) * MSE(pi[..., 2:4], twh[i]) # wh loss + lxy += (k * 8) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss + lwh += (k * 4) * MSE(pi[..., 2:4], twh[i]) # wh loss lcls += (k * 1) * CE(pi[..., 5:], tcls[i]) # class_conf loss # pos_weight = FT([gp[i] / min(gp) * 4.]) From bd32517528ccb3d05324fce4376f63e275850ef8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 1 Apr 2019 20:27:11 +0200 Subject: [PATCH 0566/2595] updates --- test.py | 4 ++-- utils/utils.py | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/test.py b/test.py index 171159b6..0a5a877a 100644 --- a/test.py +++ b/test.py @@ -40,8 +40,8 @@ def test( # Configure run data_cfg = parse_data_cfg(data_cfg) test_path = data_cfg['valid'] - if (os.sep + 'coco' + os.sep) in test_path: # COCO dataset probable - save_json = True # use pycocotools + # if (os.sep + 'coco' + os.sep) in test_path: # COCO dataset probable + # save_json = True # use pycocotools # Dataloader dataset = LoadImagesAndLabels(test_path, img_size=img_size) diff --git a/utils/utils.py b/utils/utils.py index 0d810685..d00b89d1 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -477,13 +477,13 @@ def plot_wh_methods(): # from utils.utils import *; plot_wh_methods() def plot_results(start=0): # from utils.utils import *; plot_results() - # Plot YOLO training results file 'results.txt' + # Plot training results files 'results*.txt' # import os; os.system('wget https://storage.googleapis.com/ultralytics/yolov3/results_v3.txt') fig = plt.figure(figsize=(14, 7)) s = ['X + Y', 'Width + Height', 'Confidence', 'Classification', 'Total Loss', 'Precision', 'Recall', 'mAP'] for f in sorted(glob.glob('results*.txt')): - results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 9, 10, 11, 12]).T # column 11 is mAP + results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 9, 10, 11]).T # column 11 is mAP x = range(start, results.shape[1]) for i in range(8): plt.subplot(2, 4, i + 1) @@ -491,7 +491,5 @@ def plot_results(start=0): # from utils.utils import *; plot_results() plt.title(s[i]) if i == 0: plt.legend() - if i == 7: - plt.plot(x, results[i + 1, x], marker='.', label=f) fig.tight_layout() fig.savefig('results.jpg', dpi=fig.dpi) From 01569d15e3997f7672aa952ff4441f183c3b8d49 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 13:43:18 +0200 Subject: [PATCH 0567/2595] updates --- detect.py | 32 +++++++++++++++------- test.py | 55 +++++++++++-------------------------- train.py | 2 +- utils/datasets.py | 69 +++++++++++++++++++++++++++++++++++------------ utils/utils.py | 7 +++-- 5 files changed, 95 insertions(+), 70 deletions(-) diff --git a/detect.py b/detect.py index a308cd20..4461af5b 100644 --- a/detect.py +++ b/detect.py @@ -9,6 +9,7 @@ from utils.utils import * def detect( cfg, + data_cfg, weights, images, output='output', # output folder @@ -36,6 +37,7 @@ def detect( model.to(device).eval() # Set Dataloader + vid_path, vid_writer = None, None if webcam: save_images = False dataloader = LoadWebcam(img_size=img_size) @@ -43,16 +45,12 @@ def detect( dataloader = LoadImages(images, img_size=img_size) # Get classes and colors - classes = load_classes(parse_data_cfg('cfg/coco.data')['names']) + classes = load_classes(parse_data_cfg(data_cfg)['names']) colors = [[random.randint(0, 255) for _ in range(3)] for _ in range(len(classes))] - for i, (path, img, im0) in enumerate(dataloader): + for i, (path, img, im0, vid_cap) in enumerate(dataloader): t = time.time() save_path = str(Path(output) / Path(path).name) - if webcam: - print('webcam frame %g: ' % (i + 1), end='') - else: - print('image %g/%g %s: ' % (i + 1, len(dataloader), path), end='') # Get detections img = torch.from_numpy(img).unsqueeze(0).to(device) @@ -83,12 +81,24 @@ def detect( print('Done. (%.3fs)' % (time.time() - t)) - if save_images: # Save generated image with detections - cv2.imwrite(save_path, im0) - if webcam: # Show live webcam cv2.imshow(weights, im0) + if save_images: # Save generated image with detections + if dataloader.mode == 'video': + if vid_path != save_path: # new video + vid_path = save_path + if isinstance(vid_writer, cv2.VideoWriter): + vid_writer.release() # release previous video writer + width = int(vid_cap.get(cv2.CAP_PROP_FRAME_WIDTH)) + height = int(vid_cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) + fps = vid_cap.get(cv2.CAP_PROP_FPS) + vid_writer = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*'avc1'), fps, (width, height)) + vid_writer.write(im0) + + else: + cv2.imwrite(save_path, im0) + if save_images and platform == 'darwin': # macos os.system('open ' + output + ' ' + save_path) @@ -96,10 +106,11 @@ def detect( if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') + parser.add_argument('--data-cfg', type=str, default='cfg/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3.weights', help='path to weights file') parser.add_argument('--images', type=str, default='data/samples', help='path to images') parser.add_argument('--img-size', type=int, default=32 * 13, help='size of each image dimension') - parser.add_argument('--conf-thres', type=float, default=0.3, help='object confidence threshold') + parser.add_argument('--conf-thres', type=float, default=0.5, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') opt = parser.parse_args() print(opt) @@ -107,6 +118,7 @@ if __name__ == '__main__': with torch.no_grad(): detect( opt.cfg, + opt.data_cfg, opt.weights, opt.images, img_size=opt.img_size, diff --git a/test.py b/test.py index 0a5a877a..4ed93b17 100644 --- a/test.py +++ b/test.py @@ -35,19 +35,19 @@ def test( if torch.cuda.device_count() > 1: model = nn.DataParallel(model) else: - device = next(model.parameters()).device + device = next(model.parameters()).device # get model device # Configure run data_cfg = parse_data_cfg(data_cfg) test_path = data_cfg['valid'] - # if (os.sep + 'coco' + os.sep) in test_path: # COCO dataset probable - # save_json = True # use pycocotools + if (os.sep + 'coco' + os.sep) in test_path: # COCO dataset probable + save_json = True # use pycocotools # Dataloader dataset = LoadImagesAndLabels(test_path, img_size=img_size) dataloader = DataLoader(dataset, batch_size=batch_size, - num_workers=4, + num_workers=0, pin_memory=False, collate_fn=dataset.collate_fn) @@ -66,16 +66,16 @@ def test( # Per image for si, pred in enumerate(output): - image_id = int(Path(paths[si]).stem.split('_')[-1]) labels = targets[targets[:, 0] == si, 1:] + correct, detected, tcls = [], [], [] seen += 1 if pred is None: continue - if save_json: - # add to json pred dictionary + if save_json: # add to json pred dictionary # [{"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], "score": 0.236}, ... + image_id = int(Path(paths[si]).stem.split('_')[-1]) box = pred[:, :4].clone() # xyxy scale_coords(img_size, box, shapes[si]) # to original shape box = xyxy2xywh(box) # xywh @@ -88,42 +88,21 @@ def test( 'score': float(d[4]) }) - # if len(labels) > 0: - # # add to json targets dictionary - # # [{"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], ... - # box = labels[:, 1:].clone() - # box[:, [0, 2]] *= shapes[si][1] # scale width - # box[:, [1, 3]] *= shapes[si][0] # scale height - # box[:, :2] -= box[:, 2:] / 2 # xy center to top-left corner - # for di, d in enumerate(labels): - # tdict.append({ - # 'segmentation': [[]], - # 'iscrowd': 0, - # 'image_id': image_id, - # 'category_id': coco91class[int(d[0])], - # 'id': seen, - # 'bbox': [float3(x) for x in box[di]], - # 'area': float3(box[di][2:4].prod()) - # }) - # If no labels add number of detections as incorrect - correct = [] - detected = [] if len(labels) == 0: - # correct.extend([0 for _ in range(len(detections))]) - continue + correct.extend([0] * len(pred)) else: # Extract target boxes as (x1, y1, x2, y2) - target_box = xywh2xyxy(labels[:, 1:5]) * img_size - target_cls = labels[:, 0] + tbox = xywh2xyxy(labels[:, 1:5]) * img_size + tcls = labels[:, 0].cpu() - for *pred_box, conf, cls_conf, cls_pred in pred: - if cls_pred not in target_cls: + for *pbox, pconf, pcls_conf, pcls in pred: + if pcls not in tcls: correct.append(0) continue # Best iou, index between pred and targets - iou, bi = bbox_iou(pred_box, target_box).max(0) + iou, bi = bbox_iou(pbox, tbox).max(0) # If iou > threshold and class is correct mark as correct if iou > iou_thres and bi not in detected: @@ -132,12 +111,8 @@ def test( else: correct.append(0) - # Convert to Numpy - tp = np.array(correct) - conf = pred[:, 4].cpu().numpy() - pred_cls = pred[:, 6].cpu().numpy() - target_cls = target_cls.cpu().numpy() - stats.append((tp, conf, pred_cls, target_cls)) + # Append Statistics (correct, conf, pcls, tcls) + stats.append((correct, pred[:, 4].cpu(), pred[:, 6].cpu(), tcls)) # Compute means stats_np = [np.concatenate(x, 0) for x in list(zip(*stats))] diff --git a/train.py b/train.py index d0fbd837..58196e65 100644 --- a/train.py +++ b/train.py @@ -119,7 +119,7 @@ def train( plot_images = False if plot_images: fig = plt.figure(figsize=(10, 10)) - for ip in range(batch_size): + for ip in range(len(imgs)): boxes = xywh2xyxy(targets[targets[:, 0] == ip, 2:6]).numpy().T * img_size plt.subplot(4, 4, ip + 1).imshow(imgs[ip].numpy().transpose(1, 2, 0)) plt.plot(boxes[[0, 2, 2, 0, 0]], boxes[[1, 1, 3, 3, 1]], '.-') diff --git a/utils/datasets.py b/utils/datasets.py index b6397fbd..9e808e83 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -16,31 +16,61 @@ from utils.utils import xyxy2xywh class LoadImages: # for inference def __init__(self, path, img_size=416): - if os.path.isdir(path): - image_format = ['.jpg', '.jpeg', '.png', '.tif'] - self.files = sorted(glob.glob('%s/*.*' % path)) - self.files = list(filter(lambda x: os.path.splitext(x)[1].lower() in image_format, self.files)) - elif os.path.isfile(path): - self.files = [path] - - self.nF = len(self.files) # number of image files self.height = img_size + img_formats = ['.jpg', '.jpeg', '.png', '.tif'] + vid_formats = ['.mov', '.avi', '.mp4'] - assert self.nF > 0, 'No images found in ' + path + files = [] + if os.path.isdir(path): + files = sorted(glob.glob('%s/*.*' % path)) + elif os.path.isfile(path): + files = [path] + + # self.files = list(filter(lambda x: os.path.splitext(x)[1].lower() in img_formats, files)) + images = [x for x in files if os.path.splitext(x)[-1].lower() in img_formats] + videos = [x for x in files if os.path.splitext(x)[-1].lower() in vid_formats] + self.files = images + videos + self.nI, self.nV = len(images), len(videos) + self.nF = self.nI + self.nV # number of files + self.video_flag = [False] * self.nI + [True] * self.nV + self.mode = 'images' + if any(videos): + self.new_video(videos[0]) # new video + else: + self.cap = None + assert self.nF > 0, 'No images or videos found in ' + path def __iter__(self): - self.count = -1 + self.count = 0 return self def __next__(self): - self.count += 1 if self.count == self.nF: raise StopIteration - img_path = self.files[self.count] + path = self.files[self.count] - # Read image - img0 = cv2.imread(img_path) # BGR - assert img0 is not None, 'File Not Found ' + img_path + if self.video_flag[self.count]: + self.mode = 'video' + ret_val, img0 = self.cap.read() + if not ret_val: + self.count += 1 + self.cap.release() + if self.count == self.nF: # last video + raise StopIteration + else: + path = self.files[self.count] + self.new_video(path) + ret_val, img0 = self.cap.read() + + self.frame += 1 + print('video %g/%g (%g/%g) %s: ' % (self.count + 1, self.nF, self.frame, self.nframes, path), end='') + + else: + # Read image + self.count += 1 + img0 = cv2.imread(path) # BGR + assert img0 is not None, 'File Not Found ' + path + print('image %g/%g %s: ' % (self.count, self.nF, path), end='') # Padded resize img, _, _, _ = letterbox(img0, height=self.height) @@ -50,8 +80,13 @@ class LoadImages: # for inference img = np.ascontiguousarray(img, dtype=np.float32) # uint8 to float32 img /= 255.0 # 0 - 255 to 0.0 - 1.0 - # cv2.imwrite(img_path + '.letterbox.jpg', 255 * img.transpose((1, 2, 0))[:, :, ::-1]) # save letterbox image - return img_path, img, img0 + # cv2.imwrite(path + '.letterbox.jpg', 255 * img.transpose((1, 2, 0))[:, :, ::-1]) # save letterbox image + return path, img, img0, self.cap + + def new_video(self, path): + self.frame = 0 + self.cap = cv2.VideoCapture(path) + self.nframes = int(self.cap.get(cv2.CAP_PROP_FRAME_COUNT)) def __len__(self): return self.nF # number of files diff --git a/utils/utils.py b/utils/utils.py index d00b89d1..22561c3c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -163,15 +163,18 @@ def ap_per_class(tp, conf, pred_cls, target_cls): # Recall recall_curve = tpc / (n_gt + 1e-16) - r.append(tpc[-1] / (n_gt + 1e-16)) + r.append(recall_curve[-1]) # Precision precision_curve = tpc / (tpc + fpc) - p.append(tpc[-1] / (tpc[-1] + fpc[-1])) + p.append(precision_curve[-1]) # AP from recall-precision curve ap.append(compute_ap(recall_curve, precision_curve)) + # Plot + # plt.plot(recall_curve, precision_curve) + return np.array(ap), unique_classes.astype('int32'), np.array(r), np.array(p) From c9328f663f989ee7da70d7bf82b337d22718e74c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 13:56:54 +0200 Subject: [PATCH 0568/2595] updates --- test.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/test.py b/test.py index 4ed93b17..40f9faf9 100644 --- a/test.py +++ b/test.py @@ -47,7 +47,7 @@ def test( dataset = LoadImagesAndLabels(test_path, img_size=img_size) dataloader = DataLoader(dataset, batch_size=batch_size, - num_workers=0, + num_workers=4, pin_memory=False, collate_fn=dataset.collate_fn) @@ -67,7 +67,8 @@ def test( # Per image for si, pred in enumerate(output): labels = targets[targets[:, 0] == si, 1:] - correct, detected, tcls = [], [], [] + correct, detected = [], [] + tcls = torch.Tensor() seen += 1 if pred is None: @@ -93,8 +94,8 @@ def test( correct.extend([0] * len(pred)) else: # Extract target boxes as (x1, y1, x2, y2) - tbox = xywh2xyxy(labels[:, 1:5]) * img_size - tcls = labels[:, 0].cpu() + tbox = xywh2xyxy(labels[:, 1:5]) * img_size # target boxes + tcls = labels[:, 0] # target classes for *pbox, pconf, pcls_conf, pcls in pred: if pcls not in tcls: @@ -112,7 +113,7 @@ def test( correct.append(0) # Append Statistics (correct, conf, pcls, tcls) - stats.append((correct, pred[:, 4].cpu(), pred[:, 6].cpu(), tcls)) + stats.append((correct, pred[:, 4].cpu(), pred[:, 6].cpu(), tcls.cpu())) # Compute means stats_np = [np.concatenate(x, 0) for x in list(zip(*stats))] From e3781460f83beff133674607794b53b5bfd6d2bc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 14:02:35 +0200 Subject: [PATCH 0569/2595] updates --- test.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test.py b/test.py index 40f9faf9..1d65d993 100644 --- a/test.py +++ b/test.py @@ -89,10 +89,7 @@ def test( 'score': float(d[4]) }) - # If no labels add number of detections as incorrect - if len(labels) == 0: - correct.extend([0] * len(pred)) - else: + if len(labels): # Extract target boxes as (x1, y1, x2, y2) tbox = xywh2xyxy(labels[:, 1:5]) * img_size # target boxes tcls = labels[:, 0] # target classes @@ -111,6 +108,9 @@ def test( detected.append(bi) else: correct.append(0) + else: + # If no labels add number of detections as incorrect + correct.extend([0] * len(pred)) # Append Statistics (correct, conf, pcls, tcls) stats.append((correct, pred[:, 4].cpu(), pred[:, 6].cpu(), tcls.cpu())) From af61da5d41039470721bb918fcb92c364e73966c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 14:07:14 +0200 Subject: [PATCH 0570/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 58196e65..589a9f7b 100644 --- a/train.py +++ b/train.py @@ -185,8 +185,8 @@ def train( if best_loss == mloss['total']: os.system('cp ' + latest + ' ' + best) - # Save backup weights every 5 epochs (optional) - if epoch > 0 and epoch % 5 == 0: + # Save backup weights every 10 epochs (optional) + if epoch > 0 and epoch % 10 == 0: os.system('cp ' + latest + ' ' + weights + 'backup%g.pt' % epoch) # Calculate mAP From 330caefe694e6507d57768996f2a3a36eae73422 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 14:19:53 +0200 Subject: [PATCH 0571/2595] updates --- test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index 1d65d993..84afd03c 100644 --- a/test.py +++ b/test.py @@ -40,8 +40,8 @@ def test( # Configure run data_cfg = parse_data_cfg(data_cfg) test_path = data_cfg['valid'] - if (os.sep + 'coco' + os.sep) in test_path: # COCO dataset probable - save_json = True # use pycocotools + # if (os.sep + 'coco' + os.sep) in test_path: # COCO dataset probable + # save_json = True # use pycocotools # Dataloader dataset = LoadImagesAndLabels(test_path, img_size=img_size) From 748ff9b5b9e30435ca9f80dcc1c7bdfc235c62c5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 14:29:15 +0200 Subject: [PATCH 0572/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 84afd03c..455ae0de 100644 --- a/test.py +++ b/test.py @@ -15,7 +15,7 @@ def test( batch_size=16, img_size=416, iou_thres=0.5, - conf_thres=0.1, + conf_thres=0.01, nms_thres=0.5, save_json=False, model=None From 47400aa066628eed6aa4e1b8f35908ca667030d3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 14:29:35 +0200 Subject: [PATCH 0573/2595] updates --- train.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index 589a9f7b..d8394311 100644 --- a/train.py +++ b/train.py @@ -53,7 +53,7 @@ def train( if checkpoint['optimizer'] is not None: optimizer.load_state_dict(checkpoint['optimizer']) best_loss = checkpoint['best_loss'] - del checkpoint # current, saved + del checkpoint else: # Initialize model with backbone (optional) if cfg.endswith('yolov3.cfg'): @@ -180,6 +180,7 @@ def train( model) is nn.parallel.DistributedDataParallel else model.state_dict(), 'optimizer': optimizer.state_dict()} torch.save(checkpoint, latest) + del checkpoint # Save best checkpoint if best_loss == mloss['total']: From 6ae25fc597dded114beb9727f355b064314e534b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 14:31:35 +0200 Subject: [PATCH 0574/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 455ae0de..136dc112 100644 --- a/test.py +++ b/test.py @@ -47,7 +47,7 @@ def test( dataset = LoadImagesAndLabels(test_path, img_size=img_size) dataloader = DataLoader(dataset, batch_size=batch_size, - num_workers=4, + num_workers=0, pin_memory=False, collate_fn=dataset.collate_fn) From 9b92794e20009794589a251309f8cdd25291e2c3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 14:41:52 +0200 Subject: [PATCH 0575/2595] updates --- test.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index 136dc112..0cfa22e6 100644 --- a/test.py +++ b/test.py @@ -72,6 +72,9 @@ def test( seen += 1 if pred is None: + if len(labels): + tcls = labels[:, 0].cpu() # target classes + stats.append((correct, torch.Tensor(), torch.Tensor(), tcls)) continue if save_json: # add to json pred dictionary @@ -162,8 +165,8 @@ if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='cfg/coco.data', help='coco.data file path') - parser.add_argument('--weights', type=str, default='weights/yolov3.weights', help='path to weights file') + parser.add_argument('--data-cfg', type=str, default='cfg/example_single_class.data', help='coco.data file path') + parser.add_argument('--weights', type=str, default='weights/latesth.pt', help='path to weights file') parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') From a3ab6221cb3d3fac8572200d2667aa202f254c42 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 14:42:29 +0200 Subject: [PATCH 0576/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 0cfa22e6..d0204fc4 100644 --- a/test.py +++ b/test.py @@ -15,7 +15,7 @@ def test( batch_size=16, img_size=416, iou_thres=0.5, - conf_thres=0.01, + conf_thres=0.1, nms_thres=0.5, save_json=False, model=None From 3f82380e12e005bd094ffe4b0c3e8e0decc7569f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 15:09:13 +0200 Subject: [PATCH 0577/2595] updates --- utils/datasets.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 9e808e83..30f37be1 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -26,13 +26,13 @@ class LoadImages: # for inference elif os.path.isfile(path): files = [path] - # self.files = list(filter(lambda x: os.path.splitext(x)[1].lower() in img_formats, files)) images = [x for x in files if os.path.splitext(x)[-1].lower() in img_formats] videos = [x for x in files if os.path.splitext(x)[-1].lower() in vid_formats] + nI, nV = len(images), len(videos) + self.files = images + videos - self.nI, self.nV = len(images), len(videos) - self.nF = self.nI + self.nV # number of files - self.video_flag = [False] * self.nI + [True] * self.nV + self.nF = nI + nV # number of files + self.video_flag = [False] * nI + [True] * nV self.mode = 'images' if any(videos): self.new_video(videos[0]) # new video @@ -50,6 +50,7 @@ class LoadImages: # for inference path = self.files[self.count] if self.video_flag[self.count]: + # Read video self.mode = 'video' ret_val, img0 = self.cap.read() if not ret_val: From 3c233bc0b7d3bb93289b7414a61457de92edb383 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 16:06:15 +0200 Subject: [PATCH 0578/2595] updates --- .gitignore | 16 ++++++++++++---- cfg/coco.data | 6 ------ detect.py | 2 +- test.py | 2 +- train.py | 6 +++--- 5 files changed, 17 insertions(+), 15 deletions(-) delete mode 100644 cfg/coco.data diff --git a/.gitignore b/.gitignore index a5574e82..ce7361ae 100755 --- a/.gitignore +++ b/.gitignore @@ -8,17 +8,25 @@ *.PNG *.TIF *.HEIC +*.mp4 +*.mov +*.MOV +*.avi *.data -*.cfg *.json -data/* -pycocotools/* -!cfg/coco.data + +*.cfg !cfg/yolov3*.cfg + +data/* !data/samples/zidane.jpg !data/coco.names !data/coco_paper.names +!data/coco.data +!data/coco_1cls.data +!data/coco_1img.data +pycocotools/* results*.txt # MATLAB GitIgnore ----------------------------------------------------------------------------------------------------- diff --git a/cfg/coco.data b/cfg/coco.data deleted file mode 100644 index d248a4cd..00000000 --- a/cfg/coco.data +++ /dev/null @@ -1,6 +0,0 @@ -classes=80 -train=../coco/trainvalno5k.txt -valid=../coco/5k.txt -names=data/coco.names -backup=backup/ -eval=coco diff --git a/detect.py b/detect.py index 4461af5b..f9b51a2f 100644 --- a/detect.py +++ b/detect.py @@ -106,7 +106,7 @@ def detect( if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='cfg/coco.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3.weights', help='path to weights file') parser.add_argument('--images', type=str, default='data/samples', help='path to images') parser.add_argument('--img-size', type=int, default=32 * 13, help='size of each image dimension') diff --git a/test.py b/test.py index d0204fc4..4e6d45bb 100644 --- a/test.py +++ b/test.py @@ -165,7 +165,7 @@ if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='cfg/example_single_class.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/latesth.pt', help='path to weights file') parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') diff --git a/train.py b/train.py index d8394311..1a6a98c5 100644 --- a/train.py +++ b/train.py @@ -62,8 +62,8 @@ def train( cutoff = load_darknet_weights(model, weights + 'yolov3-tiny.conv.15') # Transfer learning (train only YOLO layers) - # for i, (name, p) in enumerate(model.named_parameters()): - # p.requires_grad = True if (p.shape[0] == 255) else False + # for (name, p) in model.named_parameters(): + # p.requires_grad = True if p.shape[0] == 255 else False # Set scheduler (reduce lr at epoch 250) scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[250], gamma=0.1, last_epoch=start_epoch - 1) @@ -205,7 +205,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulate', type=int, default=1, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='cfg/coco.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') From 6b05c7750ea7b48d001d61730ef560d56f61fc0e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 16:06:31 +0200 Subject: [PATCH 0579/2595] updates --- data/coco.data | 6 ++++++ data/coco_1cls.data | 6 ++++++ data/coco_1img.data | 6 ++++++ 3 files changed, 18 insertions(+) create mode 100644 data/coco.data create mode 100644 data/coco_1cls.data create mode 100644 data/coco_1img.data diff --git a/data/coco.data b/data/coco.data new file mode 100644 index 00000000..d248a4cd --- /dev/null +++ b/data/coco.data @@ -0,0 +1,6 @@ +classes=80 +train=../coco/trainvalno5k.txt +valid=../coco/5k.txt +names=data/coco.names +backup=backup/ +eval=coco diff --git a/data/coco_1cls.data b/data/coco_1cls.data new file mode 100644 index 00000000..8b390171 --- /dev/null +++ b/data/coco_1cls.data @@ -0,0 +1,6 @@ +classes=80 +train=../coco/coco_1cls.txt +valid=../coco/coco_1cls.txt +names=data/coco.names +backup=backup/ +eval=coco diff --git a/data/coco_1img.data b/data/coco_1img.data new file mode 100644 index 00000000..04142671 --- /dev/null +++ b/data/coco_1img.data @@ -0,0 +1,6 @@ +classes=80 +train=../coco/coco_1img.txt +valid=../coco/coco_1img.txt +names=data/coco.names +backup=backup/ +eval=coco From 09100263e9c761a2bf3f6d9dcbfef8be75d2f121 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 16:12:35 +0200 Subject: [PATCH 0580/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 4e6d45bb..7acaaf5c 100644 --- a/test.py +++ b/test.py @@ -166,7 +166,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') - parser.add_argument('--weights', type=str, default='weights/latesth.pt', help='path to weights file') + parser.add_argument('--weights', type=str, default='weights/yolov3.weights', help='path to weights file') parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') From 658f2a45769c1abda5544abfc00b94d898185301 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 16:15:25 +0200 Subject: [PATCH 0581/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 7acaaf5c..f129e813 100644 --- a/test.py +++ b/test.py @@ -47,7 +47,7 @@ def test( dataset = LoadImagesAndLabels(test_path, img_size=img_size) dataloader = DataLoader(dataset, batch_size=batch_size, - num_workers=0, + num_workers=4, pin_memory=False, collate_fn=dataset.collate_fn) From d526ce0d118fcbbfae3e73d9627183b95ceb2b26 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 16:33:52 +0200 Subject: [PATCH 0582/2595] updates --- train.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 1a6a98c5..b87600d5 100644 --- a/train.py +++ b/train.py @@ -180,15 +180,16 @@ def train( model) is nn.parallel.DistributedDataParallel else model.state_dict(), 'optimizer': optimizer.state_dict()} torch.save(checkpoint, latest) - del checkpoint # Save best checkpoint if best_loss == mloss['total']: - os.system('cp ' + latest + ' ' + best) + torch.save(checkpoint, best) # Save backup weights every 10 epochs (optional) if epoch > 0 and epoch % 10 == 0: - os.system('cp ' + latest + ' ' + weights + 'backup%g.pt' % epoch) + torch.save(checkpoint, weights + 'backup%g.pt' % epoch) + + del checkpoint # Calculate mAP with torch.no_grad(): From 1457f664199ab7784550e7634d74ae8c9d441ce7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 18:04:04 +0200 Subject: [PATCH 0583/2595] updates --- data/coco_1cls.data | 6 ----- data/coco_1img.data | 6 ----- train.py | 58 +++++++++++++++++++++++++++------------------ utils/gcp.sh | 11 +++++---- utils/utils.py | 12 +++++----- 5 files changed, 48 insertions(+), 45 deletions(-) delete mode 100644 data/coco_1cls.data delete mode 100644 data/coco_1img.data diff --git a/data/coco_1cls.data b/data/coco_1cls.data deleted file mode 100644 index 8b390171..00000000 --- a/data/coco_1cls.data +++ /dev/null @@ -1,6 +0,0 @@ -classes=80 -train=../coco/coco_1cls.txt -valid=../coco/coco_1cls.txt -names=data/coco.names -backup=backup/ -eval=coco diff --git a/data/coco_1img.data b/data/coco_1img.data deleted file mode 100644 index 04142671..00000000 --- a/data/coco_1img.data +++ /dev/null @@ -1,6 +0,0 @@ -classes=80 -train=../coco/coco_1img.txt -valid=../coco/coco_1img.txt -names=data/coco.names -backup=backup/ -eval=coco diff --git a/train.py b/train.py index b87600d5..1907400e 100644 --- a/train.py +++ b/train.py @@ -20,7 +20,9 @@ def train( accumulate=1, multi_scale=False, freeze_backbone=False, - num_workers=4 + num_workers=4, + transfer=False # Transfer learning (train only YOLO layers) + ): weights = 'weights' + os.sep latest = weights + 'latest.pt' @@ -46,14 +48,26 @@ def train( cutoff = -1 # backbone reaches to cutoff layer start_epoch = 0 best_loss = float('inf') + yl = get_yolo_layers(model) # yolo layers + nf = int(model.module_defs[yl[0] - 1]['filters']) # yolo layer size (i.e. 255) + if resume: # Load previously saved PyTorch model - checkpoint = torch.load(latest, map_location=device) # load checkpoint - model.load_state_dict(checkpoint['model']) - start_epoch = checkpoint['epoch'] + 1 - if checkpoint['optimizer'] is not None: - optimizer.load_state_dict(checkpoint['optimizer']) - best_loss = checkpoint['best_loss'] - del checkpoint + if transfer: # Transfer learning + chkpt = torch.load(weights + 'yolov3-tiny.pt', map_location=device) + model.load_state_dict( + {k: v for k, v in chkpt['model'].items() if (int(k.split('.')[1]) + 1) not in yl}, strict=False) + for (name, p) in model.named_parameters(): + p.requires_grad = True if p.shape[0] == nf else False + + else: # resume from latest.pt + chkpt = torch.load(latest, map_location=device) # load checkpoint + model.load_state_dict(chkpt['model']) + + start_epoch = chkpt['epoch'] + 1 + if chkpt['optimizer'] is not None: + optimizer.load_state_dict(chkpt['optimizer']) + best_loss = chkpt['best_loss'] + del chkpt else: # Initialize model with backbone (optional) if cfg.endswith('yolov3.cfg'): @@ -61,10 +75,6 @@ def train( elif cfg.endswith('yolov3-tiny.cfg'): cutoff = load_darknet_weights(model, weights + 'yolov3-tiny.conv.15') - # Transfer learning (train only YOLO layers) - # for (name, p) in model.named_parameters(): - # p.requires_grad = True if p.shape[0] == 255 else False - # Set scheduler (reduce lr at epoch 250) scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[250], gamma=0.1, last_epoch=start_epoch - 1) @@ -174,22 +184,22 @@ def train( save = True if save: # Save latest checkpoint - checkpoint = {'epoch': epoch, - 'best_loss': best_loss, - 'model': model.module.state_dict() if type( - model) is nn.parallel.DistributedDataParallel else model.state_dict(), - 'optimizer': optimizer.state_dict()} - torch.save(checkpoint, latest) + chkpt = {'epoch': epoch, + 'best_loss': best_loss, + 'model': model.module.state_dict() if type( + model) is nn.parallel.DistributedDataParallel else model.state_dict(), + 'optimizer': optimizer.state_dict()} + torch.save(chkpt, latest) # Save best checkpoint if best_loss == mloss['total']: - torch.save(checkpoint, best) + torch.save(chkpt, best) - # Save backup weights every 10 epochs (optional) + # Save backup every 10 epochs (optional) if epoch > 0 and epoch % 10 == 0: - torch.save(checkpoint, weights + 'backup%g.pt' % epoch) + torch.save(chkpt, weights + 'backup%g.pt' % epoch) - del checkpoint + del chkpt # Calculate mAP with torch.no_grad(): @@ -210,6 +220,7 @@ if __name__ == '__main__': parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') + parser.add_argument('--transfer', action='store_true', help='transfer learning flag') parser.add_argument('--num-workers', type=int, default=4, help='number of Pytorch DataLoader workers') parser.add_argument('--dist-url', default='tcp://127.0.0.1:9999', type=str, help='distributed training init method') parser.add_argument('--rank', default=0, type=int, help='distributed training node rank') @@ -224,7 +235,8 @@ if __name__ == '__main__': opt.cfg, opt.data_cfg, img_size=opt.img_size, - resume=opt.resume, + resume=True or opt.resume or opt.transfer, + transfer=True or opt.transfer, epochs=opt.epochs, batch_size=opt.batch_size, accumulate=opt.accumulate, diff --git a/utils/gcp.sh b/utils/gcp.sh index e644ef7e..a7f9859e 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -45,11 +45,14 @@ wget https://storage.googleapis.com/ultralytics/yolov3/best_v1_0.pt -O weights/b # Debug/Development sudo rm -rf yolov3 -# git clone https://github.com/ultralytics/yolov3 # master -git clone -b map_update --depth 1 https://github.com/ultralytics/yolov3 yolov3 # branch +git clone https://github.com/ultralytics/yolov3 # master +# git clone -b hyperparameter_search --depth 1 https://github.com/ultralytics/yolov3 hyperparameter_search # branch cp -r weights yolov3 cp -r cocoapi/PythonAPI/pycocotools yolov3 cd yolov3 -#git pull https://github.com/ultralytics/yolov3 map_update # branch -python3 test.py --img-size 320 +git pull https://github.com/ultralytics/yolov3 #hyperparameter_search # branch +python3 train.py --data-cfg data/coco_1cls.data +python3 train.py --data-cfg data/coco_1img.data + + diff --git a/utils/utils.py b/utils/utils.py index 22561c3c..b74aee19 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -295,12 +295,11 @@ def build_targets(model, targets): txy, twh, tcls, indices = [], [], [], [] for i, layer in enumerate(get_yolo_layers(model)): - nG = model.module_list[layer][0].nG # grid size - anchor_vec = model.module_list[layer][0].anchor_vec + layer = model.module_list[layer][0] # iou of targets-anchors - gwh = targets[:, 4:6] * nG - iou = [wh_iou(x, gwh) for x in anchor_vec] + gwh = targets[:, 4:6] * layer.nG + iou = [wh_iou(x, gwh) for x in layer.anchor_vec] iou, a = torch.stack(iou, 0).max(0) # best iou and anchor # reject below threshold ious (OPTIONAL, increases P, lowers R) @@ -313,7 +312,7 @@ def build_targets(model, targets): # Indices b, c = t[:, :2].long().t() # target image, class - gxy = t[:, 2:4] * nG + gxy = t[:, 2:4] * layer.nG gi, gj = gxy.long().t() # grid_i, grid_j indices.append((b, a, gj, gi)) @@ -321,11 +320,12 @@ def build_targets(model, targets): txy.append(gxy - gxy.floor()) # Width and height - twh.append(torch.log(gwh / anchor_vec[a])) # yolo method + twh.append(torch.log(gwh / layer.anchor_vec[a])) # yolo method # twh.append(torch.sqrt(gwh / anchor_vec[a]) / 2) # power method # Class tcls.append(c) + assert c.max() <= layer.nC, 'Target classes exceed model classes' return txy, twh, tcls, indices From 03559eff6e96d80fb3ba03e7190816f7a46cc127 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 18:05:25 +0200 Subject: [PATCH 0584/2595] updates --- cfg/yolov3-1cls.cfg | 788 ++++++++++++++++++++++++++++++++++++++++++++ data/coco_1cls.data | 6 + data/coco_1img.data | 6 + train.py | 4 +- 4 files changed, 802 insertions(+), 2 deletions(-) create mode 100755 cfg/yolov3-1cls.cfg create mode 100644 data/coco_1cls.data create mode 100644 data/coco_1img.data diff --git a/cfg/yolov3-1cls.cfg b/cfg/yolov3-1cls.cfg new file mode 100755 index 00000000..00bad5d0 --- /dev/null +++ b/cfg/yolov3-1cls.cfg @@ -0,0 +1,788 @@ +[net] +# Testing +#batch=1 +#subdivisions=1 +# Training +batch=16 +subdivisions=1 +width=416 +height=416 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +###################### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=18 +activation=linear + + +[yolo] +mask = 6,7,8 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=1 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 61 + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=18 +activation=linear + + +[yolo] +mask = 3,4,5 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=1 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 36 + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=18 +activation=linear + + +[yolo] +mask = 0,1,2 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=1 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 diff --git a/data/coco_1cls.data b/data/coco_1cls.data new file mode 100644 index 00000000..8b390171 --- /dev/null +++ b/data/coco_1cls.data @@ -0,0 +1,6 @@ +classes=80 +train=../coco/coco_1cls.txt +valid=../coco/coco_1cls.txt +names=data/coco.names +backup=backup/ +eval=coco diff --git a/data/coco_1img.data b/data/coco_1img.data new file mode 100644 index 00000000..04142671 --- /dev/null +++ b/data/coco_1img.data @@ -0,0 +1,6 @@ +classes=80 +train=../coco/coco_1img.txt +valid=../coco/coco_1img.txt +names=data/coco.names +backup=backup/ +eval=coco diff --git a/train.py b/train.py index 1907400e..bcbc821b 100644 --- a/train.py +++ b/train.py @@ -235,8 +235,8 @@ if __name__ == '__main__': opt.cfg, opt.data_cfg, img_size=opt.img_size, - resume=True or opt.resume or opt.transfer, - transfer=True or opt.transfer, + resume=opt.resume or opt.transfer, + transfer=opt.transfer, epochs=opt.epochs, batch_size=opt.batch_size, accumulate=opt.accumulate, From 7f220a14cb997674e758acfe87f1a010721f04f9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 18:10:53 +0200 Subject: [PATCH 0585/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index bcbc821b..79dabb92 100644 --- a/train.py +++ b/train.py @@ -53,7 +53,7 @@ def train( if resume: # Load previously saved PyTorch model if transfer: # Transfer learning - chkpt = torch.load(weights + 'yolov3-tiny.pt', map_location=device) + chkpt = torch.load(weights + 'yolov3.pt', map_location=device) model.load_state_dict( {k: v for k, v in chkpt['model'].items() if (int(k.split('.')[1]) + 1) not in yl}, strict=False) for (name, p) in model.named_parameters(): From f527d30ccd3ed9f183acf013f6c98fb0263d3f3c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 18:50:55 +0200 Subject: [PATCH 0586/2595] updates --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 79dabb92..39ad63ad 100644 --- a/train.py +++ b/train.py @@ -70,10 +70,10 @@ def train( del chkpt else: # Initialize model with backbone (optional) - if cfg.endswith('yolov3.cfg'): - cutoff = load_darknet_weights(model, weights + 'darknet53.conv.74') - elif cfg.endswith('yolov3-tiny.cfg'): + if '-tiny.cfg' in cfg: cutoff = load_darknet_weights(model, weights + 'yolov3-tiny.conv.15') + else: + cutoff = load_darknet_weights(model, weights + 'darknet53.conv.74') # Set scheduler (reduce lr at epoch 250) scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[250], gamma=0.1, last_epoch=start_epoch - 1) From 9b32d3cb5d80b098f1588483cab13252cf98aa8d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 19:19:02 +0200 Subject: [PATCH 0587/2595] updates --- train.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/train.py b/train.py index 39ad63ad..76df0a84 100644 --- a/train.py +++ b/train.py @@ -40,6 +40,8 @@ def train( # Initialize model model = Darknet(cfg, img_size).to(device) + # for m in model.modules(): + # weights_init_normal(m) # set weight distributions # Optimizer lr0 = 0.001 # initial learning rate From be10b75eb45bb53aba34615f2cef667ad195204b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 20:21:00 +0200 Subject: [PATCH 0588/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index b74aee19..7509f555 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -321,7 +321,7 @@ def build_targets(model, targets): # Width and height twh.append(torch.log(gwh / layer.anchor_vec[a])) # yolo method - # twh.append(torch.sqrt(gwh / anchor_vec[a]) / 2) # power method + # twh.append(torch.sqrt(gwh / layer.anchor_vec[a]) / 2) # power method # Class tcls.append(c) From c36f1e990b80f5d4e4d9676220a5ee6e369bf094 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Apr 2019 22:54:32 +0200 Subject: [PATCH 0589/2595] updates --- detect.py | 2 +- utils/utils.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/detect.py b/detect.py index f9b51a2f..f5156025 100644 --- a/detect.py +++ b/detect.py @@ -14,7 +14,7 @@ def detect( images, output='output', # output folder img_size=416, - conf_thres=0.3, + conf_thres=0.5, nms_thres=0.5, save_txt=False, save_images=True, diff --git a/utils/utils.py b/utils/utils.py index 7509f555..313cb1e2 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -358,7 +358,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): # Filter out confidence scores below threshold class_conf, class_pred = pred[:, 5:].max(1) - # pred[:, 4] *= class_conf + pred[:, 4] *= class_conf i = (pred[:, 4] > conf_thres) & (pred[:, 2] > min_wh) & (pred[:, 3] > min_wh) pred = pred[i] @@ -373,7 +373,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): # Box (center x, center y, width, height) to (x1, y1, x2, y2) pred[:, :4] = xywh2xyxy(pred[:, :4]) - pred[:, 4] *= class_conf # improves mAP from 0.549 to 0.551 + # pred[:, 4] *= class_conf # improves mAP from 0.549 to 0.551 # Detections ordered as (x1y1x2y2, obj_conf, class_conf, class_pred) pred = torch.cat((pred[:, :5], class_conf.unsqueeze(1), class_pred), 1) @@ -479,7 +479,7 @@ def plot_wh_methods(): # from utils.utils import *; plot_wh_methods() fig.savefig('comparison.jpg', dpi=fig.dpi) -def plot_results(start=0): # from utils.utils import *; plot_results() +def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() # Plot training results files 'results*.txt' # import os; os.system('wget https://storage.googleapis.com/ultralytics/yolov3/results_v3.txt') @@ -487,7 +487,7 @@ def plot_results(start=0): # from utils.utils import *; plot_results() s = ['X + Y', 'Width + Height', 'Confidence', 'Classification', 'Total Loss', 'Precision', 'Recall', 'mAP'] for f in sorted(glob.glob('results*.txt')): results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 9, 10, 11]).T # column 11 is mAP - x = range(start, results.shape[1]) + x = range(start, stop if stop else results.shape[1]) for i in range(8): plt.subplot(2, 4, i + 1) plt.plot(x, results[i, x], marker='.', label=f) From d79a54a4beaf268d445f54939cdc35120f79f360 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 3 Apr 2019 11:07:31 +0200 Subject: [PATCH 0590/2595] updates --- train.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index 76df0a84..f5712b21 100644 --- a/train.py +++ b/train.py @@ -53,12 +53,12 @@ def train( yl = get_yolo_layers(model) # yolo layers nf = int(model.module_defs[yl[0] - 1]['filters']) # yolo layer size (i.e. 255) - if resume: # Load previously saved PyTorch model + if resume: # Load previously saved model if transfer: # Transfer learning chkpt = torch.load(weights + 'yolov3.pt', map_location=device) - model.load_state_dict( - {k: v for k, v in chkpt['model'].items() if (int(k.split('.')[1]) + 1) not in yl}, strict=False) - for (name, p) in model.named_parameters(): + model.load_state_dict({k: v for k, v in chkpt['model'].items() if v.numel() > 1 and v.shape[0] != nf}, + strict=False) + for p in model.parameters(): p.requires_grad = True if p.shape[0] == nf else False else: # resume from latest.pt From 5170cd36b0a6c51e8f93f0aa2fda15f874d625dc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 3 Apr 2019 11:31:31 +0200 Subject: [PATCH 0591/2595] updates --- train.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/train.py b/train.py index f5712b21..5979626c 100644 --- a/train.py +++ b/train.py @@ -40,8 +40,6 @@ def train( # Initialize model model = Darknet(cfg, img_size).to(device) - # for m in model.modules(): - # weights_init_normal(m) # set weight distributions # Optimizer lr0 = 0.001 # initial learning rate @@ -56,7 +54,7 @@ def train( if resume: # Load previously saved model if transfer: # Transfer learning chkpt = torch.load(weights + 'yolov3.pt', map_location=device) - model.load_state_dict({k: v for k, v in chkpt['model'].items() if v.numel() > 1 and v.shape[0] != nf}, + model.load_state_dict({k: v for k, v in chkpt['model'].items() if v.numel() > 1 and v.shape[0] != 255}, strict=False) for p in model.parameters(): p.requires_grad = True if p.shape[0] == nf else False From 1ca0338f8e157bd2fa7a142612faea3480b09cb0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 3 Apr 2019 12:42:40 +0200 Subject: [PATCH 0592/2595] Update README.md --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e323ea40..3b20f76d 100755 --- a/README.md +++ b/README.md @@ -184,6 +184,10 @@ Calculating mAP: 100%|███████████████████ Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.577 ``` +# Citation + +[![DOI](https://zenodo.org/badge/146165888.svg)](https://zenodo.org/badge/latestdoi/146165888) + # Contact -For questions or comments please contact Glenn Jocher at glenn.jocher@ultralytics.com or visit us at https://contact.ultralytics.com. +Issues should be raised directly in the repository. For additional questions or comments please email Glenn Jocher at glenn.jocher@ultralytics.com or visit us at https://contact.ultralytics.com/contact. From 149fcb04a556068b57550d280d8cbf99132deee7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 3 Apr 2019 14:21:41 +0200 Subject: [PATCH 0593/2595] Update README.md --- README.md | 53 ++++++++++++++++++++++++++++------------------------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 3b20f76d..6da13508 100755 --- a/README.md +++ b/README.md @@ -115,13 +115,13 @@ Run `detect.py` with `webcam=True` to show a live webcam feed. - Compare to darknet published results https://arxiv.org/abs/1804.02767. - | [ultralytics/yolov3](https://github.com/ultralytics/yolov3) with `pycocotools` | [darknet/yolov3](https://arxiv.org/abs/1804.02767) + | [ultralytics/yolov3](https://github.com/ultralytics/yolov3) | [darknet/yolov3](https://arxiv.org/abs/1804.02767) --- | --- | --- -YOLOv3-320 | 51.8 | 51.5 -YOLOv3-416 | 55.4 | 55.3 -YOLOv3-608 | 58.2 | 57.9 +`YOLOv3 320` | 51.8 | 51.5 +`YOLOv3 416` | 55.4 | 55.3 +`YOLOv3 608` | 58.2 | 57.9 +`YOLOv3-spp 320` | 52.4 | - +`YOLOv3-spp 416` | 56.5 | - +`YOLOv3-spp 608` | 60.7 | 60.6 ``` bash sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 # bash yolov3/data/get_coco_dataset.sh sudo rm -rf cocoapi && git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 cd yolov3 - -python3 test.py --save-json --conf-thres 0.001 --img-size 416 -Namespace(batch_size=32, cfg='cfg/yolov3.cfg', conf_thres=0.001, data_cfg='cfg/coco.data', img_size=416, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='weights/yolov3.weights') -Using cuda _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', major=7, minor=0, total_memory=16130MB, multi_processor_count=80) - Image Total P R mAP -Calculating mAP: 100%|█████████████████████████████████| 157/157 [08:34<00:00, 2.53s/it] - 5000 5000 0.0896 0.756 0.555 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.312 - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.554 - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.317 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.145 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.343 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.452 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.268 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.411 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.435 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.244 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.477 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.587 python3 test.py --save-json --conf-thres 0.001 --img-size 608 --batch-size 16 Namespace(batch_size=16, cfg='cfg/yolov3.cfg', conf_thres=0.001, data_cfg='cfg/coco.data', img_size=608, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='weights/yolov3.weights') @@ -182,6 +166,25 @@ Calculating mAP: 100%|███████████████████ Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.309 Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.494 Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.577 + +python3 test.py --weights weights/yolov3-spp.weights --cfg cfg/yolov3-spp.cfg --save-json --img-size 608 --batch-size 8 +Namespace(batch_size=8, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data_cfg='data/coco.data', img_size=608, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='weights/yolov3-spp.weights') +Using cuda _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', major=7, minor=0, total_memory=16130MB, multi_processor_count=80) + Image Total P R mAP +Calculating mAP: 100%|█████████████████████████████████| 625/625 [07:01<00:00, 1.56it/s] + 5000 5000 0.12 0.81 0.611 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.366 + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.607 + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.386 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.207 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.391 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.485 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.296 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.464 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.494 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.331 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.517 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.618 ``` # Citation From b9bacf40ee825c33f0f0cb81184a7a100c8108b0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 3 Apr 2019 14:22:32 +0200 Subject: [PATCH 0594/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6da13508..3791107c 100755 --- a/README.md +++ b/README.md @@ -133,7 +133,7 @@ YOLOv3-320 | 52.3 (51.8) | 51.5 YOLOv3-416 | 55.5 (55.4) | 55.3 YOLOv3-608 | 57.9 (58.2) | 57.9 ---> - | [ultralytics/yolov3](https://github.com/ultralytics/yolov3) | [darknet/yolov3](https://arxiv.org/abs/1804.02767) + | [ultralytics/yolov3](https://github.com/ultralytics/yolov3) | [darknet](https://arxiv.org/abs/1804.02767) --- | --- | --- `YOLOv3 320` | 51.8 | 51.5 `YOLOv3 416` | 55.4 | 55.3 From 35d2576cb2448442f83ef5c26f7d4d425fb932ef Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 3 Apr 2019 14:25:31 +0200 Subject: [PATCH 0595/2595] default changed to yolov3-spp --- detect.py | 4 ++-- test.py | 4 ++-- train.py | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/detect.py b/detect.py index f5156025..08126f20 100644 --- a/detect.py +++ b/detect.py @@ -105,9 +105,9 @@ def detect( if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') + parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') - parser.add_argument('--weights', type=str, default='weights/yolov3.weights', help='path to weights file') + parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--images', type=str, default='data/samples', help='path to images') parser.add_argument('--img-size', type=int, default=32 * 13, help='size of each image dimension') parser.add_argument('--conf-thres', type=float, default=0.5, help='object confidence threshold') diff --git a/test.py b/test.py index f129e813..72c5a725 100644 --- a/test.py +++ b/test.py @@ -164,9 +164,9 @@ def test( if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') - parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') + parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') - parser.add_argument('--weights', type=str, default='weights/yolov3.weights', help='path to weights file') + parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') diff --git a/train.py b/train.py index 5979626c..bec1682b 100644 --- a/train.py +++ b/train.py @@ -215,7 +215,7 @@ if __name__ == '__main__': parser.add_argument('--epochs', type=int, default=270, help='number of epochs') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulate', type=int, default=1, help='accumulate gradient x batches before optimizing') - parser.add_argument('--cfg', type=str, default='cfg/yolov3.cfg', help='cfg file path') + parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') From 5b7325bd060c13ef56e05fa2e747a72afb0779aa Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 3 Apr 2019 14:29:28 +0200 Subject: [PATCH 0596/2595] updates --- detect.py | 2 +- train.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index 08126f20..20bf7460 100644 --- a/detect.py +++ b/detect.py @@ -109,7 +109,7 @@ if __name__ == '__main__': parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--images', type=str, default='data/samples', help='path to images') - parser.add_argument('--img-size', type=int, default=32 * 13, help='size of each image dimension') + parser.add_argument('--img-size', type=int, default=416, help='size of each image dimension') parser.add_argument('--conf-thres', type=float, default=0.5, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') opt = parser.parse_args() diff --git a/train.py b/train.py index bec1682b..abd5870f 100644 --- a/train.py +++ b/train.py @@ -218,7 +218,7 @@ if __name__ == '__main__': parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') - parser.add_argument('--img-size', type=int, default=32 * 13, help='pixels') + parser.add_argument('--img-size', type=int, default=416, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') parser.add_argument('--num-workers', type=int, default=4, help='number of Pytorch DataLoader workers') From 0aff657e19e6705ca677a89ccf4ac1cd831a25d7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 3 Apr 2019 14:54:39 +0200 Subject: [PATCH 0597/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index abd5870f..707d1580 100644 --- a/train.py +++ b/train.py @@ -53,7 +53,7 @@ def train( if resume: # Load previously saved model if transfer: # Transfer learning - chkpt = torch.load(weights + 'yolov3.pt', map_location=device) + chkpt = torch.load(weights + 'yolov3-spp.pt', map_location=device) model.load_state_dict({k: v for k, v in chkpt['model'].items() if v.numel() > 1 and v.shape[0] != 255}, strict=False) for p in model.parameters(): @@ -99,9 +99,9 @@ def train( sampler=sampler) # Start training - nB = len(dataloader) t = time.time() model_info(model) + nB = len(dataloader) n_burnin = min(round(nB / 5 + 1), 1000) # burn-in batches for epoch in range(start_epoch, epochs): model.train() From a59caf053a1877eadf794715b9c54f3890ae422b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 3 Apr 2019 15:00:27 +0200 Subject: [PATCH 0598/2595] updates --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index ce7361ae..73fea2c0 100755 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,7 @@ data/* pycocotools/* results*.txt +gcp_test*.sh # MATLAB GitIgnore ----------------------------------------------------------------------------------------------------- *.m~ From efc662351bd996fbda1f26301704862ff3b5227c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 3 Apr 2019 17:24:13 +0200 Subject: [PATCH 0599/2595] updates --- models.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/models.py b/models.py index 0e92c79f..71453c23 100755 --- a/models.py +++ b/models.py @@ -137,17 +137,17 @@ class YOLOLayer(nn.Module): anchor_wh = self.anchor_wh.repeat((1, 1, nG, nG, 1)).view((1, -1, 2)) / nG # p = p.view(-1, 5 + self.nC) - # xy = xy + self.grid_xy[0] # x, y - # wh = torch.exp(wh) * self.anchor_wh[0] # width, height + # xy = torch.sigmoid(p[..., 0:2]) + grid_xy[0] # x, y + # wh = torch.exp(p[..., 2:4]) * anchor_wh[0] # width, height # p_conf = torch.sigmoid(p[:, 4:5]) # Conf - # p_cls = F.softmax(p[:, 5:], 1) * p_conf # SSD-like conf + # p_cls = F.softmax(p[:, 5:85], 1) * p_conf # SSD-like conf # return torch.cat((xy / nG, wh, p_conf, p_cls), 1).t() p = p.view(1, -1, 5 + self.nC) xy = torch.sigmoid(p[..., 0:2]) + grid_xy # x, y wh = torch.exp(p[..., 2:4]) * anchor_wh # width, height p_conf = torch.sigmoid(p[..., 4:5]) # Conf - p_cls = p[..., 5:] + p_cls = p[..., 5:85] # Broadcasting only supported on first dimension in CoreML. See onnx-coreml/_operators.py # p_cls = F.softmax(p_cls, 2) * p_conf # SSD-like conf p_cls = torch.exp(p_cls).permute((2, 1, 0)) @@ -203,8 +203,8 @@ class Darknet(nn.Module): layer_outputs.append(x) if ONNX_EXPORT: - output = torch.cat(output, 1) # merge the 3 layers 85 x (507, 2028, 8112) to 85 x 10647 - return output[5:].t(), output[:4].t() # ONNX scores, boxes + output = torch.cat(output, 1) # cat 3 layers 85 x (507, 2028, 8112) to 85 x 10647 + return output[5:85].t(), output[:4].t() # ONNX scores, boxes else: return output if self.training else torch.cat(output, 1) From 7e82df6edcb69d986557b9b3fa7cfc49989e964f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 4 Apr 2019 17:34:11 +0200 Subject: [PATCH 0600/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3791107c..f5ccd685 100755 --- a/README.md +++ b/README.md @@ -193,4 +193,4 @@ Calculating mAP: 100%|███████████████████ # Contact -Issues should be raised directly in the repository. For additional questions or comments please email Glenn Jocher at glenn.jocher@ultralytics.com or visit us at https://contact.ultralytics.com/contact. +Issues should be raised directly in the repository. For additional questions or comments please email Glenn Jocher at glenn.jocher@ultralytics.com or visit us at https://contact.ultralytics.com. From cb352be02c7d8653bed408f5cc2cdea58145e678 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 5 Apr 2019 15:34:42 +0200 Subject: [PATCH 0601/2595] updates --- detect.py | 2 +- models.py | 23 +++++++++-------- test.py | 69 +++++++++++++++++++++++++++----------------------- train.py | 63 ++++++++++++++++++++++++--------------------- utils/utils.py | 15 +++++++---- 5 files changed, 96 insertions(+), 76 deletions(-) diff --git a/detect.py b/detect.py index 20bf7460..7423d654 100644 --- a/detect.py +++ b/detect.py @@ -57,7 +57,7 @@ def detect( if ONNX_EXPORT: torch.onnx.export(model, img, 'weights/model.onnx', verbose=True) return - pred = model(img) + pred, _ = model(img) detections = non_max_suppression(pred, conf_thres, nms_thres)[0] if detections is not None and len(detections) > 0: diff --git a/models.py b/models.py index 71453c23..2b4358d2 100755 --- a/models.py +++ b/models.py @@ -156,16 +156,16 @@ class YOLOLayer(nn.Module): return torch.cat((xy / nG, wh, p_conf, p_cls), 2).squeeze().t() else: # inference - p[..., 0:2] = torch.sigmoid(p[..., 0:2]) + self.grid_xy # xy - p[..., 2:4] = torch.exp(p[..., 2:4]) * self.anchor_wh # wh yolo method - # p[..., 2:4] = ((torch.sigmoid(p[..., 2:4]) * 2) ** 2) * self.anchor_wh # wh power method - p[..., 4] = torch.sigmoid(p[..., 4]) # p_conf - p[..., 5:] = torch.sigmoid(p[..., 5:]) # p_class - # p[..., 5:] = F.softmax(p[..., 5:], dim=4) # p_class - p[..., :4] *= self.stride + io = p.clone() # inference output + io[..., 0:2] = torch.sigmoid(io[..., 0:2]) + self.grid_xy # xy + io[..., 2:4] = torch.exp(io[..., 2:4]) * self.anchor_wh # wh yolo method + # io[..., 2:4] = ((torch.sigmoid(io[..., 2:4]) * 2) ** 2) * self.anchor_wh # wh power method + io[..., 4:] = torch.sigmoid(io[..., 4:]) # p_conf, p_cls + # io[..., 5:] = F.softmax(io[..., 5:], dim=4) # p_cls + io[..., :4] *= self.stride # reshape from [1, 3, 13, 13, 85] to [1, 507, 85] - return p.view(bs, -1, 5 + self.nC) + return io.view(bs, -1, 5 + self.nC), p class Darknet(nn.Module): @@ -202,11 +202,14 @@ class Darknet(nn.Module): output.append(x) layer_outputs.append(x) - if ONNX_EXPORT: + if self.training: + return output + elif ONNX_EXPORT: output = torch.cat(output, 1) # cat 3 layers 85 x (507, 2028, 8112) to 85 x 10647 return output[5:85].t(), output[:4].t() # ONNX scores, boxes else: - return output if self.training else torch.cat(output, 1) + io, p = list(zip(*output)) # inference output, training output + return torch.cat(io, 1), p def get_yolo_layers(model): diff --git a/test.py b/test.py index 72c5a725..7ba90a3b 100644 --- a/test.py +++ b/test.py @@ -39,32 +39,42 @@ def test( # Configure run data_cfg = parse_data_cfg(data_cfg) - test_path = data_cfg['valid'] - # if (os.sep + 'coco' + os.sep) in test_path: # COCO dataset probable - # save_json = True # use pycocotools + nc = int(data_cfg['classes']) # number of classes + test_path = data_cfg['valid'] # path to test images + names = load_classes(data_cfg['names']) # class names # Dataloader dataset = LoadImagesAndLabels(test_path, img_size=img_size) dataloader = DataLoader(dataset, batch_size=batch_size, - num_workers=4, + num_workers=0, pin_memory=False, collate_fn=dataset.collate_fn) - model.eval() seen = 0 - print('%11s' * 5 % ('Image', 'Total', 'P', 'R', 'mAP')) - mP, mR, mAP, mAPj = 0.0, 0.0, 0.0, 0.0 - jdict, tdict, stats, AP, AP_class = [], [], [], [], [] + model.eval() coco91class = coco80_to_coco91_class() - for batch_i, (imgs, targets, paths, shapes) in enumerate(tqdm(dataloader, desc='Calculating mAP')): + print('%15s' * 7 % ('Class', 'Images', 'Targets', 'P', 'R', 'mAP', 'F1')) + loss, p, r, f1, mp, mr, map, mf1 = 0., 0., 0., 0., 0., 0., 0., 0. + jdict, stats, ap, ap_class = [], [], [], [] + for batch_i, (imgs, targets, paths, shapes) in enumerate(tqdm(dataloader, desc='Computing mAP')): targets = targets.to(device) imgs = imgs.to(device) - output = model(imgs) - output = non_max_suppression(output, conf_thres=conf_thres, nms_thres=nms_thres) + # Run model + inf_out, train_out = model(imgs) # inference and training outputs - # Per image + # Build targets + target_list = build_targets(model, targets) + + # Compute loss + loss_i, _ = compute_loss(train_out, target_list) + loss += loss_i.item() + + # Run NMS + output = non_max_suppression(inf_out, conf_thres=conf_thres, nms_thres=nms_thres) + + # Statistics per image for si, pred in enumerate(output): labels = targets[targets[:, 0] == si, 1:] correct, detected = [], [] @@ -77,7 +87,8 @@ def test( stats.append((correct, torch.Tensor(), torch.Tensor(), tcls)) continue - if save_json: # add to json pred dictionary + # Append to pycocotools JSON dictionary + if save_json: # [{"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], "score": 0.236}, ... image_id = int(Path(paths[si]).stem.split('_')[-1]) box = pred[:, :4].clone() # xyxy @@ -118,24 +129,23 @@ def test( # Append Statistics (correct, conf, pcls, tcls) stats.append((correct, pred[:, 4].cpu(), pred[:, 6].cpu(), tcls.cpu())) - # Compute means + # Compute statistics stats_np = [np.concatenate(x, 0) for x in list(zip(*stats))] + nt = np.bincount(stats_np[3].astype(np.int64), minlength=nc) # number of targets per class if len(stats_np): - AP, AP_class, R, P = ap_per_class(*stats_np) - mP, mR, mAP = P.mean(), R.mean(), AP.mean() + p, r, ap, f1, ap_class = ap_per_class(*stats_np) + mp, mr, map, mf1 = p.mean(), r.mean(), ap.mean(), f1.mean() - # Print P, R, mAP - print(('%11s%11s' + '%11.3g' * 3) % (seen, len(dataset), mP, mR, mAP)) + # Print results + print(('%15s' + '%15.3g' * 6) % ('all', seen, nt.sum(), mp, mr, map, mf1), end='\n\n') - # Print mAP per class - if len(stats_np): - print('\nmAP Per Class:') - names = load_classes(data_cfg['names']) - for c, a in zip(AP_class, AP): - print('%15s: %-.4f' % (names[c], a)) + # Print results per class + if nc > 1 and len(stats_np): + for i, c in enumerate(ap_class): + print(('%15s' + '%15.3g' * 6) % (names[c], seen, nt[c], p[i], r[i], ap[i], f1[i])) # Save JSON - if save_json and mAP and len(jdict): + if save_json and map and len(jdict): imgIds = [int(Path(x).stem.split('_')[-1]) for x in dataset.img_files] with open('results.json', 'w') as file: json.dump(jdict, file) @@ -152,13 +162,10 @@ def test( cocoEval.evaluate() cocoEval.accumulate() cocoEval.summarize() - mAP = cocoEval.stats[1] # update mAP to pycocotools mAP + map = cocoEval.stats[1] # update mAP to pycocotools mAP - # F1 score = harmonic mean of precision and recall - # F1 = 2 * (mP * mR) / (mP + mR) - - # Return mAP - return mP, mR, mAP + # Return results + return mp, mr, map, mf1, loss if __name__ == '__main__': diff --git a/train.py b/train.py index 707d1580..b6dd03ad 100644 --- a/train.py +++ b/train.py @@ -121,8 +121,8 @@ def train( imgs = imgs.to(device) targets = targets.to(device) - nT = len(targets) - if nT == 0: # if no targets continue + nt = len(targets) + if nt == 0: # if no targets continue continue # Plot images with bounding boxes @@ -167,7 +167,7 @@ def train( s = ('%8s%12s' + '%10.3g' * 7) % ( '%g/%g' % (epoch, epochs - 1), '%g/%g' % (i, nB - 1), mloss['xy'], mloss['wh'], mloss['conf'], mloss['cls'], - mloss['total'], nT, time.time() - t) + mloss['total'], nt, time.time() - t) t = time.time() print(s) @@ -176,38 +176,42 @@ def train( dataset.img_size = random.choice(range(10, 20)) * 32 print('multi_scale img_size = %g' % dataset.img_size) - # Update best loss - if mloss['total'] < best_loss: - best_loss = mloss['total'] - - # Save training results - save = True - if save: - # Save latest checkpoint - chkpt = {'epoch': epoch, - 'best_loss': best_loss, - 'model': model.module.state_dict() if type( - model) is nn.parallel.DistributedDataParallel else model.state_dict(), - 'optimizer': optimizer.state_dict()} - torch.save(chkpt, latest) - - # Save best checkpoint - if best_loss == mloss['total']: - torch.save(chkpt, best) - - # Save backup every 10 epochs (optional) - if epoch > 0 and epoch % 10 == 0: - torch.save(chkpt, weights + 'backup%g.pt' % epoch) - - del chkpt - # Calculate mAP with torch.no_grad(): results = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size, model=model) # Write epoch results with open('results.txt', 'a') as file: - file.write(s + '%11.3g' * 3 % results + '\n') # append P, R, mAP + file.write(s + '%11.3g' * 5 % results + '\n') # P, R, mAP, F1, test_loss + + # Update best loss + test_loss = results[4] + if test_loss < best_loss: + best_loss = results[0] + + # Save training results + save = True and not opt.no_save + if save: + # Create checkpoint + chkpt = {'epoch': epoch, + 'best_loss': best_loss, + 'model': model.module.state_dict() if type( + model) is nn.parallel.DistributedDataParallel else model.state_dict(), + 'optimizer': optimizer.state_dict()} + + # Save latest checkpoint + torch.save(chkpt, latest) + + # Save best checkpoint + if best_loss == test_loss: + torch.save(chkpt, best) + + # Save backup every 10 epochs (optional) + if epoch > 0 and epoch % 10 == 0: + torch.save(chkpt, weights + 'backup%g.pt' % epoch) + + # Delete checkpoint + del chkpt if __name__ == '__main__': @@ -226,6 +230,7 @@ if __name__ == '__main__': parser.add_argument('--rank', default=0, type=int, help='distributed training node rank') parser.add_argument('--world-size', default=1, type=int, help='number of nodes for distributed training') parser.add_argument('--backend', default='nccl', type=str, help='distributed backend') + parser.add_argument('--no-save', action='store_false', help='transfer learning flag') opt = parser.parse_args() print(opt, end='\n\n') diff --git a/utils/utils.py b/utils/utils.py index 313cb1e2..213f392a 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -175,7 +175,11 @@ def ap_per_class(tp, conf, pred_cls, target_cls): # Plot # plt.plot(recall_curve, precision_curve) - return np.array(ap), unique_classes.astype('int32'), np.array(r), np.array(p) + # Compute F1 score (harmonic mean of precision and recall) + p, r, ap = np.array(p), np.array(r), np.array(ap) + f1 = 2 * p * r / (p + r + 1e-16) + + return p, r, ap, f1, unique_classes.astype('int32') def compute_ap(recall, precision): @@ -484,12 +488,13 @@ def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() # import os; os.system('wget https://storage.googleapis.com/ultralytics/yolov3/results_v3.txt') fig = plt.figure(figsize=(14, 7)) - s = ['X + Y', 'Width + Height', 'Confidence', 'Classification', 'Total Loss', 'Precision', 'Recall', 'mAP'] + s = ['X + Y', 'Width + Height', 'Confidence', 'Classification', 'Train Loss', 'Precision', 'Recall', 'mAP', 'F1', + 'Test Loss'] for f in sorted(glob.glob('results*.txt')): - results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 9, 10, 11]).T # column 11 is mAP + results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 9, 10, 11, 12, 13]).T x = range(start, stop if stop else results.shape[1]) - for i in range(8): - plt.subplot(2, 4, i + 1) + for i in range(10): + plt.subplot(2, 5, i + 1) plt.plot(x, results[i, x], marker='.', label=f) plt.title(s[i]) if i == 0: From 1f889c575edebfb12d7208a11fa8a5815a2f4f0d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 5 Apr 2019 15:37:16 +0200 Subject: [PATCH 0602/2595] updates --- .gitignore | 3 +-- data/coco_100img.data | 6 ++++++ data/coco_10img.data | 6 ++++++ 3 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 data/coco_100img.data create mode 100644 data/coco_10img.data diff --git a/.gitignore b/.gitignore index 73fea2c0..5978e439 100755 --- a/.gitignore +++ b/.gitignore @@ -23,8 +23,7 @@ data/* !data/coco.names !data/coco_paper.names !data/coco.data -!data/coco_1cls.data -!data/coco_1img.data +!data/coco_1*.data pycocotools/* results*.txt diff --git a/data/coco_100img.data b/data/coco_100img.data new file mode 100644 index 00000000..aa96ad45 --- /dev/null +++ b/data/coco_100img.data @@ -0,0 +1,6 @@ +classes=80 +train=../coco/coco_100img.txt +valid=../coco/coco_100img.txt +names=data/coco.names +backup=backup/ +eval=coco diff --git a/data/coco_10img.data b/data/coco_10img.data new file mode 100644 index 00000000..7b291283 --- /dev/null +++ b/data/coco_10img.data @@ -0,0 +1,6 @@ +classes=80 +train=../coco/coco_10img.txt +valid=../coco/coco_10img.txt +names=data/coco.names +backup=backup/ +eval=coco From fe896c17925397072746f47a5f6a9af0dc6b3b31 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 5 Apr 2019 15:43:41 +0200 Subject: [PATCH 0603/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index b6dd03ad..a62612ce 100644 --- a/train.py +++ b/train.py @@ -190,7 +190,7 @@ def train( best_loss = results[0] # Save training results - save = True and not opt.no_save + save = True and not opt.nosave if save: # Create checkpoint chkpt = {'epoch': epoch, @@ -230,7 +230,7 @@ if __name__ == '__main__': parser.add_argument('--rank', default=0, type=int, help='distributed training node rank') parser.add_argument('--world-size', default=1, type=int, help='number of nodes for distributed training') parser.add_argument('--backend', default='nccl', type=str, help='distributed backend') - parser.add_argument('--no-save', action='store_false', help='transfer learning flag') + parser.add_argument('--nosave', action='store_true', help='do not save training results') opt = parser.parse_args() print(opt, end='\n\n') From 325b1ba4bc6ad104459ea715d357152c7c7b13ee Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 5 Apr 2019 15:51:06 +0200 Subject: [PATCH 0604/2595] updates --- test.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/test.py b/test.py index 7ba90a3b..2bfe6b0e 100644 --- a/test.py +++ b/test.py @@ -54,7 +54,7 @@ def test( seen = 0 model.eval() coco91class = coco80_to_coco91_class() - print('%15s' * 7 % ('Class', 'Images', 'Targets', 'P', 'R', 'mAP', 'F1')) + print(('%20s' + '%10s' * 6) % ('Class', 'Images', 'Targets', 'P', 'R', 'mAP', 'F1')) loss, p, r, f1, mp, mr, map, mf1 = 0., 0., 0., 0., 0., 0., 0., 0. jdict, stats, ap, ap_class = [], [], [], [] for batch_i, (imgs, targets, paths, shapes) in enumerate(tqdm(dataloader, desc='Computing mAP')): @@ -137,12 +137,13 @@ def test( mp, mr, map, mf1 = p.mean(), r.mean(), ap.mean(), f1.mean() # Print results - print(('%15s' + '%15.3g' * 6) % ('all', seen, nt.sum(), mp, mr, map, mf1), end='\n\n') + pf = ('%20s' + '%10.3g' * 6) # print format + print(pf % ('all', seen, nt.sum(), mp, mr, map, mf1), end='\n\n') # Print results per class if nc > 1 and len(stats_np): for i, c in enumerate(ap_class): - print(('%15s' + '%15.3g' * 6) % (names[c], seen, nt[c], p[i], r[i], ap[i], f1[i])) + print(pf % (names[c], seen, nt[c], p[i], r[i], ap[i], f1[i])) # Save JSON if save_json and map and len(jdict): @@ -172,7 +173,7 @@ if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco_10img.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') From 5e79810e69fc8b3be02200d80c1e336cd5c66a66 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 5 Apr 2019 15:54:59 +0200 Subject: [PATCH 0605/2595] updates --- test.py | 2 +- train.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index 2bfe6b0e..89a3ea06 100644 --- a/test.py +++ b/test.py @@ -137,7 +137,7 @@ def test( mp, mr, map, mf1 = p.mean(), r.mean(), ap.mean(), f1.mean() # Print results - pf = ('%20s' + '%10.3g' * 6) # print format + pf = '%20s' + '%10.3g' * 6 # print format print(pf % ('all', seen, nt.sum(), mp, mr, map, mf1), end='\n\n') # Print results per class diff --git a/train.py b/train.py index a62612ce..7ea5b763 100644 --- a/train.py +++ b/train.py @@ -33,7 +33,7 @@ def train( img_size = 608 # initiate with maximum multi_scale size num_workers = 0 # bug https://github.com/ultralytics/yolov3/issues/174 else: - torch.backends.cudnn.benchmark = True # unsuitable for multiscale + pass # torch.backends.cudnn.benchmark = True # unsuitable for multiscale # Configure run train_path = parse_data_cfg(data_cfg)['train'] From 2fab66607c71a31527173e80e92789c93eada0f2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 5 Apr 2019 16:08:18 +0200 Subject: [PATCH 0606/2595] updates --- data/coco_100img.data | 4 ++-- data/coco_10img.data | 4 ++-- data/coco_1cls.data | 6 +++--- data/coco_1img.data | 4 ++-- train.py | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/data/coco_100img.data b/data/coco_100img.data index aa96ad45..716cf7c9 100644 --- a/data/coco_100img.data +++ b/data/coco_100img.data @@ -1,6 +1,6 @@ classes=80 -train=../coco/coco_100img.txt -valid=../coco/coco_100img.txt +train=./data/coco_100img.txt +valid=./data/coco_100img.txt names=data/coco.names backup=backup/ eval=coco diff --git a/data/coco_10img.data b/data/coco_10img.data index 7b291283..ea37a698 100644 --- a/data/coco_10img.data +++ b/data/coco_10img.data @@ -1,6 +1,6 @@ classes=80 -train=../coco/coco_10img.txt -valid=../coco/coco_10img.txt +train=./data/coco_10img.txt +valid=./data/coco_10img.txt names=data/coco.names backup=backup/ eval=coco diff --git a/data/coco_1cls.data b/data/coco_1cls.data index 8b390171..a19e3c0f 100644 --- a/data/coco_1cls.data +++ b/data/coco_1cls.data @@ -1,6 +1,6 @@ -classes=80 -train=../coco/coco_1cls.txt -valid=../coco/coco_1cls.txt +classes=1 +train=./data/coco_1cls.txt +valid=./data/coco_1cls.txt names=data/coco.names backup=backup/ eval=coco diff --git a/data/coco_1img.data b/data/coco_1img.data index 04142671..d97252f2 100644 --- a/data/coco_1img.data +++ b/data/coco_1img.data @@ -1,6 +1,6 @@ classes=80 -train=../coco/coco_1img.txt -valid=../coco/coco_1img.txt +train=./data/coco_1img.txt +valid=./data/coco_1img.txt names=data/coco.names backup=backup/ eval=coco diff --git a/train.py b/train.py index 7ea5b763..a62612ce 100644 --- a/train.py +++ b/train.py @@ -33,7 +33,7 @@ def train( img_size = 608 # initiate with maximum multi_scale size num_workers = 0 # bug https://github.com/ultralytics/yolov3/issues/174 else: - pass # torch.backends.cudnn.benchmark = True # unsuitable for multiscale + torch.backends.cudnn.benchmark = True # unsuitable for multiscale # Configure run train_path = parse_data_cfg(data_cfg)['train'] From 88eab43e5b096f5d3139588fe35c4c7b14cec9c2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 5 Apr 2019 16:08:34 +0200 Subject: [PATCH 0607/2595] updates --- data/coco_1000img.data | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 data/coco_1000img.data diff --git a/data/coco_1000img.data b/data/coco_1000img.data new file mode 100644 index 00000000..958c45c4 --- /dev/null +++ b/data/coco_1000img.data @@ -0,0 +1,6 @@ +classes=80 +train=./data/coco_1000img.txt +valid=./data/coco_1000img.txt +names=data/coco.names +backup=backup/ +eval=coco From 7b001d13c18ac41ca002a5073236335f8d566f29 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 5 Apr 2019 16:09:09 +0200 Subject: [PATCH 0608/2595] updates --- .gitignore | 1 + data/coco_1000img.txt | 1000 +++++++++++++++++++++++++++++++++++++++++ data/coco_100img.txt | 100 +++++ data/coco_10img.txt | 10 + data/coco_1cls.txt | 5 + data/coco_1img.txt | 1 + 6 files changed, 1117 insertions(+) create mode 100644 data/coco_1000img.txt create mode 100644 data/coco_100img.txt create mode 100644 data/coco_10img.txt create mode 100644 data/coco_1cls.txt create mode 100644 data/coco_1img.txt diff --git a/.gitignore b/.gitignore index 5978e439..f690693b 100755 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ data/* !data/coco_paper.names !data/coco.data !data/coco_1*.data +!data/coco_1*.txt pycocotools/* results*.txt diff --git a/data/coco_1000img.txt b/data/coco_1000img.txt new file mode 100644 index 00000000..a6d6143e --- /dev/null +++ b/data/coco_1000img.txt @@ -0,0 +1,1000 @@ +../coco/images/train2014/COCO_train2014_000000000009.jpg +../coco/images/train2014/COCO_train2014_000000000025.jpg +../coco/images/train2014/COCO_train2014_000000000030.jpg +../coco/images/train2014/COCO_train2014_000000000034.jpg +../coco/images/train2014/COCO_train2014_000000000036.jpg +../coco/images/train2014/COCO_train2014_000000000049.jpg +../coco/images/train2014/COCO_train2014_000000000061.jpg +../coco/images/train2014/COCO_train2014_000000000064.jpg +../coco/images/train2014/COCO_train2014_000000000071.jpg +../coco/images/train2014/COCO_train2014_000000000072.jpg +../coco/images/train2014/COCO_train2014_000000000077.jpg +../coco/images/train2014/COCO_train2014_000000000078.jpg +../coco/images/train2014/COCO_train2014_000000000081.jpg +../coco/images/train2014/COCO_train2014_000000000086.jpg +../coco/images/train2014/COCO_train2014_000000000089.jpg +../coco/images/train2014/COCO_train2014_000000000092.jpg +../coco/images/train2014/COCO_train2014_000000000094.jpg +../coco/images/train2014/COCO_train2014_000000000109.jpg +../coco/images/train2014/COCO_train2014_000000000110.jpg +../coco/images/train2014/COCO_train2014_000000000113.jpg +../coco/images/train2014/COCO_train2014_000000000127.jpg +../coco/images/train2014/COCO_train2014_000000000138.jpg +../coco/images/train2014/COCO_train2014_000000000142.jpg +../coco/images/train2014/COCO_train2014_000000000144.jpg +../coco/images/train2014/COCO_train2014_000000000149.jpg +../coco/images/train2014/COCO_train2014_000000000151.jpg +../coco/images/train2014/COCO_train2014_000000000154.jpg +../coco/images/train2014/COCO_train2014_000000000165.jpg +../coco/images/train2014/COCO_train2014_000000000194.jpg +../coco/images/train2014/COCO_train2014_000000000201.jpg +../coco/images/train2014/COCO_train2014_000000000247.jpg +../coco/images/train2014/COCO_train2014_000000000260.jpg +../coco/images/train2014/COCO_train2014_000000000263.jpg +../coco/images/train2014/COCO_train2014_000000000307.jpg +../coco/images/train2014/COCO_train2014_000000000308.jpg +../coco/images/train2014/COCO_train2014_000000000309.jpg +../coco/images/train2014/COCO_train2014_000000000312.jpg +../coco/images/train2014/COCO_train2014_000000000315.jpg +../coco/images/train2014/COCO_train2014_000000000321.jpg +../coco/images/train2014/COCO_train2014_000000000322.jpg +../coco/images/train2014/COCO_train2014_000000000326.jpg +../coco/images/train2014/COCO_train2014_000000000332.jpg +../coco/images/train2014/COCO_train2014_000000000349.jpg +../coco/images/train2014/COCO_train2014_000000000368.jpg +../coco/images/train2014/COCO_train2014_000000000370.jpg +../coco/images/train2014/COCO_train2014_000000000382.jpg +../coco/images/train2014/COCO_train2014_000000000384.jpg +../coco/images/train2014/COCO_train2014_000000000389.jpg +../coco/images/train2014/COCO_train2014_000000000394.jpg +../coco/images/train2014/COCO_train2014_000000000404.jpg +../coco/images/train2014/COCO_train2014_000000000419.jpg +../coco/images/train2014/COCO_train2014_000000000431.jpg +../coco/images/train2014/COCO_train2014_000000000436.jpg +../coco/images/train2014/COCO_train2014_000000000438.jpg +../coco/images/train2014/COCO_train2014_000000000443.jpg +../coco/images/train2014/COCO_train2014_000000000446.jpg +../coco/images/train2014/COCO_train2014_000000000450.jpg +../coco/images/train2014/COCO_train2014_000000000471.jpg +../coco/images/train2014/COCO_train2014_000000000490.jpg +../coco/images/train2014/COCO_train2014_000000000491.jpg +../coco/images/train2014/COCO_train2014_000000000510.jpg +../coco/images/train2014/COCO_train2014_000000000514.jpg +../coco/images/train2014/COCO_train2014_000000000529.jpg +../coco/images/train2014/COCO_train2014_000000000531.jpg +../coco/images/train2014/COCO_train2014_000000000532.jpg +../coco/images/train2014/COCO_train2014_000000000540.jpg +../coco/images/train2014/COCO_train2014_000000000542.jpg +../coco/images/train2014/COCO_train2014_000000000560.jpg +../coco/images/train2014/COCO_train2014_000000000562.jpg +../coco/images/train2014/COCO_train2014_000000000572.jpg +../coco/images/train2014/COCO_train2014_000000000575.jpg +../coco/images/train2014/COCO_train2014_000000000581.jpg +../coco/images/train2014/COCO_train2014_000000000584.jpg +../coco/images/train2014/COCO_train2014_000000000595.jpg +../coco/images/train2014/COCO_train2014_000000000597.jpg +../coco/images/train2014/COCO_train2014_000000000605.jpg +../coco/images/train2014/COCO_train2014_000000000612.jpg +../coco/images/train2014/COCO_train2014_000000000620.jpg +../coco/images/train2014/COCO_train2014_000000000625.jpg +../coco/images/train2014/COCO_train2014_000000000629.jpg +../coco/images/train2014/COCO_train2014_000000000634.jpg +../coco/images/train2014/COCO_train2014_000000000643.jpg +../coco/images/train2014/COCO_train2014_000000000650.jpg +../coco/images/train2014/COCO_train2014_000000000656.jpg +../coco/images/train2014/COCO_train2014_000000000659.jpg +../coco/images/train2014/COCO_train2014_000000000670.jpg +../coco/images/train2014/COCO_train2014_000000000671.jpg +../coco/images/train2014/COCO_train2014_000000000673.jpg +../coco/images/train2014/COCO_train2014_000000000681.jpg +../coco/images/train2014/COCO_train2014_000000000684.jpg +../coco/images/train2014/COCO_train2014_000000000690.jpg +../coco/images/train2014/COCO_train2014_000000000706.jpg +../coco/images/train2014/COCO_train2014_000000000714.jpg +../coco/images/train2014/COCO_train2014_000000000716.jpg +../coco/images/train2014/COCO_train2014_000000000722.jpg +../coco/images/train2014/COCO_train2014_000000000723.jpg +../coco/images/train2014/COCO_train2014_000000000731.jpg +../coco/images/train2014/COCO_train2014_000000000735.jpg +../coco/images/train2014/COCO_train2014_000000000753.jpg +../coco/images/train2014/COCO_train2014_000000000754.jpg +../coco/images/train2014/COCO_train2014_000000000762.jpg +../coco/images/train2014/COCO_train2014_000000000781.jpg +../coco/images/train2014/COCO_train2014_000000000790.jpg +../coco/images/train2014/COCO_train2014_000000000795.jpg +../coco/images/train2014/COCO_train2014_000000000797.jpg +../coco/images/train2014/COCO_train2014_000000000801.jpg +../coco/images/train2014/COCO_train2014_000000000813.jpg +../coco/images/train2014/COCO_train2014_000000000821.jpg +../coco/images/train2014/COCO_train2014_000000000825.jpg +../coco/images/train2014/COCO_train2014_000000000828.jpg +../coco/images/train2014/COCO_train2014_000000000839.jpg +../coco/images/train2014/COCO_train2014_000000000853.jpg +../coco/images/train2014/COCO_train2014_000000000882.jpg +../coco/images/train2014/COCO_train2014_000000000897.jpg +../coco/images/train2014/COCO_train2014_000000000901.jpg +../coco/images/train2014/COCO_train2014_000000000902.jpg +../coco/images/train2014/COCO_train2014_000000000908.jpg +../coco/images/train2014/COCO_train2014_000000000909.jpg +../coco/images/train2014/COCO_train2014_000000000913.jpg +../coco/images/train2014/COCO_train2014_000000000925.jpg +../coco/images/train2014/COCO_train2014_000000000927.jpg +../coco/images/train2014/COCO_train2014_000000000934.jpg +../coco/images/train2014/COCO_train2014_000000000941.jpg +../coco/images/train2014/COCO_train2014_000000000943.jpg +../coco/images/train2014/COCO_train2014_000000000955.jpg +../coco/images/train2014/COCO_train2014_000000000960.jpg +../coco/images/train2014/COCO_train2014_000000000965.jpg +../coco/images/train2014/COCO_train2014_000000000977.jpg +../coco/images/train2014/COCO_train2014_000000000982.jpg +../coco/images/train2014/COCO_train2014_000000000984.jpg +../coco/images/train2014/COCO_train2014_000000000996.jpg +../coco/images/train2014/COCO_train2014_000000001006.jpg +../coco/images/train2014/COCO_train2014_000000001011.jpg +../coco/images/train2014/COCO_train2014_000000001014.jpg +../coco/images/train2014/COCO_train2014_000000001025.jpg +../coco/images/train2014/COCO_train2014_000000001036.jpg +../coco/images/train2014/COCO_train2014_000000001053.jpg +../coco/images/train2014/COCO_train2014_000000001059.jpg +../coco/images/train2014/COCO_train2014_000000001072.jpg +../coco/images/train2014/COCO_train2014_000000001084.jpg +../coco/images/train2014/COCO_train2014_000000001085.jpg +../coco/images/train2014/COCO_train2014_000000001090.jpg +../coco/images/train2014/COCO_train2014_000000001098.jpg +../coco/images/train2014/COCO_train2014_000000001099.jpg +../coco/images/train2014/COCO_train2014_000000001102.jpg +../coco/images/train2014/COCO_train2014_000000001107.jpg +../coco/images/train2014/COCO_train2014_000000001108.jpg +../coco/images/train2014/COCO_train2014_000000001122.jpg +../coco/images/train2014/COCO_train2014_000000001139.jpg +../coco/images/train2014/COCO_train2014_000000001144.jpg +../coco/images/train2014/COCO_train2014_000000001145.jpg +../coco/images/train2014/COCO_train2014_000000001155.jpg +../coco/images/train2014/COCO_train2014_000000001166.jpg +../coco/images/train2014/COCO_train2014_000000001168.jpg +../coco/images/train2014/COCO_train2014_000000001183.jpg +../coco/images/train2014/COCO_train2014_000000001200.jpg +../coco/images/train2014/COCO_train2014_000000001204.jpg +../coco/images/train2014/COCO_train2014_000000001213.jpg +../coco/images/train2014/COCO_train2014_000000001216.jpg +../coco/images/train2014/COCO_train2014_000000001224.jpg +../coco/images/train2014/COCO_train2014_000000001232.jpg +../coco/images/train2014/COCO_train2014_000000001237.jpg +../coco/images/train2014/COCO_train2014_000000001238.jpg +../coco/images/train2014/COCO_train2014_000000001261.jpg +../coco/images/train2014/COCO_train2014_000000001264.jpg +../coco/images/train2014/COCO_train2014_000000001271.jpg +../coco/images/train2014/COCO_train2014_000000001282.jpg +../coco/images/train2014/COCO_train2014_000000001295.jpg +../coco/images/train2014/COCO_train2014_000000001298.jpg +../coco/images/train2014/COCO_train2014_000000001306.jpg +../coco/images/train2014/COCO_train2014_000000001307.jpg +../coco/images/train2014/COCO_train2014_000000001308.jpg +../coco/images/train2014/COCO_train2014_000000001311.jpg +../coco/images/train2014/COCO_train2014_000000001315.jpg +../coco/images/train2014/COCO_train2014_000000001319.jpg +../coco/images/train2014/COCO_train2014_000000001323.jpg +../coco/images/train2014/COCO_train2014_000000001330.jpg +../coco/images/train2014/COCO_train2014_000000001332.jpg +../coco/images/train2014/COCO_train2014_000000001350.jpg +../coco/images/train2014/COCO_train2014_000000001355.jpg +../coco/images/train2014/COCO_train2014_000000001359.jpg +../coco/images/train2014/COCO_train2014_000000001360.jpg +../coco/images/train2014/COCO_train2014_000000001366.jpg +../coco/images/train2014/COCO_train2014_000000001375.jpg +../coco/images/train2014/COCO_train2014_000000001381.jpg +../coco/images/train2014/COCO_train2014_000000001386.jpg +../coco/images/train2014/COCO_train2014_000000001390.jpg +../coco/images/train2014/COCO_train2014_000000001392.jpg +../coco/images/train2014/COCO_train2014_000000001397.jpg +../coco/images/train2014/COCO_train2014_000000001401.jpg +../coco/images/train2014/COCO_train2014_000000001403.jpg +../coco/images/train2014/COCO_train2014_000000001407.jpg +../coco/images/train2014/COCO_train2014_000000001408.jpg +../coco/images/train2014/COCO_train2014_000000001424.jpg +../coco/images/train2014/COCO_train2014_000000001431.jpg +../coco/images/train2014/COCO_train2014_000000001451.jpg +../coco/images/train2014/COCO_train2014_000000001453.jpg +../coco/images/train2014/COCO_train2014_000000001455.jpg +../coco/images/train2014/COCO_train2014_000000001488.jpg +../coco/images/train2014/COCO_train2014_000000001496.jpg +../coco/images/train2014/COCO_train2014_000000001497.jpg +../coco/images/train2014/COCO_train2014_000000001501.jpg +../coco/images/train2014/COCO_train2014_000000001505.jpg +../coco/images/train2014/COCO_train2014_000000001507.jpg +../coco/images/train2014/COCO_train2014_000000001510.jpg +../coco/images/train2014/COCO_train2014_000000001515.jpg +../coco/images/train2014/COCO_train2014_000000001518.jpg +../coco/images/train2014/COCO_train2014_000000001522.jpg +../coco/images/train2014/COCO_train2014_000000001523.jpg +../coco/images/train2014/COCO_train2014_000000001526.jpg +../coco/images/train2014/COCO_train2014_000000001527.jpg +../coco/images/train2014/COCO_train2014_000000001536.jpg +../coco/images/train2014/COCO_train2014_000000001548.jpg +../coco/images/train2014/COCO_train2014_000000001558.jpg +../coco/images/train2014/COCO_train2014_000000001562.jpg +../coco/images/train2014/COCO_train2014_000000001569.jpg +../coco/images/train2014/COCO_train2014_000000001579.jpg +../coco/images/train2014/COCO_train2014_000000001580.jpg +../coco/images/train2014/COCO_train2014_000000001586.jpg +../coco/images/train2014/COCO_train2014_000000001589.jpg +../coco/images/train2014/COCO_train2014_000000001596.jpg +../coco/images/train2014/COCO_train2014_000000001611.jpg +../coco/images/train2014/COCO_train2014_000000001622.jpg +../coco/images/train2014/COCO_train2014_000000001625.jpg +../coco/images/train2014/COCO_train2014_000000001637.jpg +../coco/images/train2014/COCO_train2014_000000001639.jpg +../coco/images/train2014/COCO_train2014_000000001645.jpg +../coco/images/train2014/COCO_train2014_000000001670.jpg +../coco/images/train2014/COCO_train2014_000000001674.jpg +../coco/images/train2014/COCO_train2014_000000001681.jpg +../coco/images/train2014/COCO_train2014_000000001688.jpg +../coco/images/train2014/COCO_train2014_000000001697.jpg +../coco/images/train2014/COCO_train2014_000000001706.jpg +../coco/images/train2014/COCO_train2014_000000001709.jpg +../coco/images/train2014/COCO_train2014_000000001712.jpg +../coco/images/train2014/COCO_train2014_000000001720.jpg +../coco/images/train2014/COCO_train2014_000000001732.jpg +../coco/images/train2014/COCO_train2014_000000001737.jpg +../coco/images/train2014/COCO_train2014_000000001756.jpg +../coco/images/train2014/COCO_train2014_000000001762.jpg +../coco/images/train2014/COCO_train2014_000000001764.jpg +../coco/images/train2014/COCO_train2014_000000001771.jpg +../coco/images/train2014/COCO_train2014_000000001774.jpg +../coco/images/train2014/COCO_train2014_000000001777.jpg +../coco/images/train2014/COCO_train2014_000000001781.jpg +../coco/images/train2014/COCO_train2014_000000001785.jpg +../coco/images/train2014/COCO_train2014_000000001786.jpg +../coco/images/train2014/COCO_train2014_000000001790.jpg +../coco/images/train2014/COCO_train2014_000000001792.jpg +../coco/images/train2014/COCO_train2014_000000001804.jpg +../coco/images/train2014/COCO_train2014_000000001810.jpg +../coco/images/train2014/COCO_train2014_000000001811.jpg +../coco/images/train2014/COCO_train2014_000000001813.jpg +../coco/images/train2014/COCO_train2014_000000001815.jpg +../coco/images/train2014/COCO_train2014_000000001822.jpg +../coco/images/train2014/COCO_train2014_000000001837.jpg +../coco/images/train2014/COCO_train2014_000000001864.jpg +../coco/images/train2014/COCO_train2014_000000001875.jpg +../coco/images/train2014/COCO_train2014_000000001877.jpg +../coco/images/train2014/COCO_train2014_000000001888.jpg +../coco/images/train2014/COCO_train2014_000000001895.jpg +../coco/images/train2014/COCO_train2014_000000001900.jpg +../coco/images/train2014/COCO_train2014_000000001902.jpg +../coco/images/train2014/COCO_train2014_000000001906.jpg +../coco/images/train2014/COCO_train2014_000000001907.jpg +../coco/images/train2014/COCO_train2014_000000001911.jpg +../coco/images/train2014/COCO_train2014_000000001912.jpg +../coco/images/train2014/COCO_train2014_000000001915.jpg +../coco/images/train2014/COCO_train2014_000000001924.jpg +../coco/images/train2014/COCO_train2014_000000001926.jpg +../coco/images/train2014/COCO_train2014_000000001941.jpg +../coco/images/train2014/COCO_train2014_000000001942.jpg +../coco/images/train2014/COCO_train2014_000000001943.jpg +../coco/images/train2014/COCO_train2014_000000001947.jpg +../coco/images/train2014/COCO_train2014_000000001958.jpg +../coco/images/train2014/COCO_train2014_000000001966.jpg +../coco/images/train2014/COCO_train2014_000000001994.jpg +../coco/images/train2014/COCO_train2014_000000001999.jpg +../coco/images/train2014/COCO_train2014_000000002001.jpg +../coco/images/train2014/COCO_train2014_000000002007.jpg +../coco/images/train2014/COCO_train2014_000000002024.jpg +../coco/images/train2014/COCO_train2014_000000002055.jpg +../coco/images/train2014/COCO_train2014_000000002056.jpg +../coco/images/train2014/COCO_train2014_000000002066.jpg +../coco/images/train2014/COCO_train2014_000000002068.jpg +../coco/images/train2014/COCO_train2014_000000002072.jpg +../coco/images/train2014/COCO_train2014_000000002083.jpg +../coco/images/train2014/COCO_train2014_000000002089.jpg +../coco/images/train2014/COCO_train2014_000000002093.jpg +../coco/images/train2014/COCO_train2014_000000002106.jpg +../coco/images/train2014/COCO_train2014_000000002114.jpg +../coco/images/train2014/COCO_train2014_000000002135.jpg +../coco/images/train2014/COCO_train2014_000000002148.jpg +../coco/images/train2014/COCO_train2014_000000002150.jpg +../coco/images/train2014/COCO_train2014_000000002178.jpg +../coco/images/train2014/COCO_train2014_000000002184.jpg +../coco/images/train2014/COCO_train2014_000000002193.jpg +../coco/images/train2014/COCO_train2014_000000002197.jpg +../coco/images/train2014/COCO_train2014_000000002209.jpg +../coco/images/train2014/COCO_train2014_000000002211.jpg +../coco/images/train2014/COCO_train2014_000000002217.jpg +../coco/images/train2014/COCO_train2014_000000002229.jpg +../coco/images/train2014/COCO_train2014_000000002232.jpg +../coco/images/train2014/COCO_train2014_000000002244.jpg +../coco/images/train2014/COCO_train2014_000000002258.jpg +../coco/images/train2014/COCO_train2014_000000002270.jpg +../coco/images/train2014/COCO_train2014_000000002276.jpg +../coco/images/train2014/COCO_train2014_000000002278.jpg +../coco/images/train2014/COCO_train2014_000000002279.jpg +../coco/images/train2014/COCO_train2014_000000002280.jpg +../coco/images/train2014/COCO_train2014_000000002281.jpg +../coco/images/train2014/COCO_train2014_000000002283.jpg +../coco/images/train2014/COCO_train2014_000000002284.jpg +../coco/images/train2014/COCO_train2014_000000002296.jpg +../coco/images/train2014/COCO_train2014_000000002309.jpg +../coco/images/train2014/COCO_train2014_000000002337.jpg +../coco/images/train2014/COCO_train2014_000000002342.jpg +../coco/images/train2014/COCO_train2014_000000002347.jpg +../coco/images/train2014/COCO_train2014_000000002349.jpg +../coco/images/train2014/COCO_train2014_000000002369.jpg +../coco/images/train2014/COCO_train2014_000000002372.jpg +../coco/images/train2014/COCO_train2014_000000002374.jpg +../coco/images/train2014/COCO_train2014_000000002377.jpg +../coco/images/train2014/COCO_train2014_000000002389.jpg +../coco/images/train2014/COCO_train2014_000000002400.jpg +../coco/images/train2014/COCO_train2014_000000002402.jpg +../coco/images/train2014/COCO_train2014_000000002411.jpg +../coco/images/train2014/COCO_train2014_000000002415.jpg +../coco/images/train2014/COCO_train2014_000000002429.jpg +../coco/images/train2014/COCO_train2014_000000002444.jpg +../coco/images/train2014/COCO_train2014_000000002445.jpg +../coco/images/train2014/COCO_train2014_000000002446.jpg +../coco/images/train2014/COCO_train2014_000000002448.jpg +../coco/images/train2014/COCO_train2014_000000002451.jpg +../coco/images/train2014/COCO_train2014_000000002459.jpg +../coco/images/train2014/COCO_train2014_000000002466.jpg +../coco/images/train2014/COCO_train2014_000000002470.jpg +../coco/images/train2014/COCO_train2014_000000002471.jpg +../coco/images/train2014/COCO_train2014_000000002496.jpg +../coco/images/train2014/COCO_train2014_000000002498.jpg +../coco/images/train2014/COCO_train2014_000000002531.jpg +../coco/images/train2014/COCO_train2014_000000002536.jpg +../coco/images/train2014/COCO_train2014_000000002543.jpg +../coco/images/train2014/COCO_train2014_000000002544.jpg +../coco/images/train2014/COCO_train2014_000000002545.jpg +../coco/images/train2014/COCO_train2014_000000002555.jpg +../coco/images/train2014/COCO_train2014_000000002559.jpg +../coco/images/train2014/COCO_train2014_000000002560.jpg +../coco/images/train2014/COCO_train2014_000000002563.jpg +../coco/images/train2014/COCO_train2014_000000002567.jpg +../coco/images/train2014/COCO_train2014_000000002570.jpg +../coco/images/train2014/COCO_train2014_000000002575.jpg +../coco/images/train2014/COCO_train2014_000000002583.jpg +../coco/images/train2014/COCO_train2014_000000002585.jpg +../coco/images/train2014/COCO_train2014_000000002591.jpg +../coco/images/train2014/COCO_train2014_000000002602.jpg +../coco/images/train2014/COCO_train2014_000000002606.jpg +../coco/images/train2014/COCO_train2014_000000002608.jpg +../coco/images/train2014/COCO_train2014_000000002614.jpg +../coco/images/train2014/COCO_train2014_000000002618.jpg +../coco/images/train2014/COCO_train2014_000000002619.jpg +../coco/images/train2014/COCO_train2014_000000002623.jpg +../coco/images/train2014/COCO_train2014_000000002624.jpg +../coco/images/train2014/COCO_train2014_000000002639.jpg +../coco/images/train2014/COCO_train2014_000000002644.jpg +../coco/images/train2014/COCO_train2014_000000002645.jpg +../coco/images/train2014/COCO_train2014_000000002658.jpg +../coco/images/train2014/COCO_train2014_000000002664.jpg +../coco/images/train2014/COCO_train2014_000000002672.jpg +../coco/images/train2014/COCO_train2014_000000002686.jpg +../coco/images/train2014/COCO_train2014_000000002687.jpg +../coco/images/train2014/COCO_train2014_000000002691.jpg +../coco/images/train2014/COCO_train2014_000000002693.jpg +../coco/images/train2014/COCO_train2014_000000002697.jpg +../coco/images/train2014/COCO_train2014_000000002703.jpg +../coco/images/train2014/COCO_train2014_000000002732.jpg +../coco/images/train2014/COCO_train2014_000000002742.jpg +../coco/images/train2014/COCO_train2014_000000002752.jpg +../coco/images/train2014/COCO_train2014_000000002754.jpg +../coco/images/train2014/COCO_train2014_000000002755.jpg +../coco/images/train2014/COCO_train2014_000000002758.jpg +../coco/images/train2014/COCO_train2014_000000002770.jpg +../coco/images/train2014/COCO_train2014_000000002774.jpg +../coco/images/train2014/COCO_train2014_000000002776.jpg +../coco/images/train2014/COCO_train2014_000000002782.jpg +../coco/images/train2014/COCO_train2014_000000002823.jpg +../coco/images/train2014/COCO_train2014_000000002833.jpg +../coco/images/train2014/COCO_train2014_000000002842.jpg +../coco/images/train2014/COCO_train2014_000000002843.jpg +../coco/images/train2014/COCO_train2014_000000002849.jpg +../coco/images/train2014/COCO_train2014_000000002860.jpg +../coco/images/train2014/COCO_train2014_000000002886.jpg +../coco/images/train2014/COCO_train2014_000000002892.jpg +../coco/images/train2014/COCO_train2014_000000002896.jpg +../coco/images/train2014/COCO_train2014_000000002902.jpg +../coco/images/train2014/COCO_train2014_000000002907.jpg +../coco/images/train2014/COCO_train2014_000000002931.jpg +../coco/images/train2014/COCO_train2014_000000002951.jpg +../coco/images/train2014/COCO_train2014_000000002963.jpg +../coco/images/train2014/COCO_train2014_000000002964.jpg +../coco/images/train2014/COCO_train2014_000000002982.jpg +../coco/images/train2014/COCO_train2014_000000002983.jpg +../coco/images/train2014/COCO_train2014_000000002989.jpg +../coco/images/train2014/COCO_train2014_000000002992.jpg +../coco/images/train2014/COCO_train2014_000000002998.jpg +../coco/images/train2014/COCO_train2014_000000003000.jpg +../coco/images/train2014/COCO_train2014_000000003003.jpg +../coco/images/train2014/COCO_train2014_000000003008.jpg +../coco/images/train2014/COCO_train2014_000000003040.jpg +../coco/images/train2014/COCO_train2014_000000003048.jpg +../coco/images/train2014/COCO_train2014_000000003076.jpg +../coco/images/train2014/COCO_train2014_000000003077.jpg +../coco/images/train2014/COCO_train2014_000000003080.jpg +../coco/images/train2014/COCO_train2014_000000003118.jpg +../coco/images/train2014/COCO_train2014_000000003124.jpg +../coco/images/train2014/COCO_train2014_000000003131.jpg +../coco/images/train2014/COCO_train2014_000000003148.jpg +../coco/images/train2014/COCO_train2014_000000003157.jpg +../coco/images/train2014/COCO_train2014_000000003160.jpg +../coco/images/train2014/COCO_train2014_000000003178.jpg +../coco/images/train2014/COCO_train2014_000000003197.jpg +../coco/images/train2014/COCO_train2014_000000003219.jpg +../coco/images/train2014/COCO_train2014_000000003220.jpg +../coco/images/train2014/COCO_train2014_000000003224.jpg +../coco/images/train2014/COCO_train2014_000000003225.jpg +../coco/images/train2014/COCO_train2014_000000003234.jpg +../coco/images/train2014/COCO_train2014_000000003236.jpg +../coco/images/train2014/COCO_train2014_000000003242.jpg +../coco/images/train2014/COCO_train2014_000000003249.jpg +../coco/images/train2014/COCO_train2014_000000003259.jpg +../coco/images/train2014/COCO_train2014_000000003264.jpg +../coco/images/train2014/COCO_train2014_000000003270.jpg +../coco/images/train2014/COCO_train2014_000000003272.jpg +../coco/images/train2014/COCO_train2014_000000003276.jpg +../coco/images/train2014/COCO_train2014_000000003286.jpg +../coco/images/train2014/COCO_train2014_000000003293.jpg +../coco/images/train2014/COCO_train2014_000000003305.jpg +../coco/images/train2014/COCO_train2014_000000003314.jpg +../coco/images/train2014/COCO_train2014_000000003320.jpg +../coco/images/train2014/COCO_train2014_000000003321.jpg +../coco/images/train2014/COCO_train2014_000000003325.jpg +../coco/images/train2014/COCO_train2014_000000003348.jpg +../coco/images/train2014/COCO_train2014_000000003353.jpg +../coco/images/train2014/COCO_train2014_000000003361.jpg +../coco/images/train2014/COCO_train2014_000000003365.jpg +../coco/images/train2014/COCO_train2014_000000003366.jpg +../coco/images/train2014/COCO_train2014_000000003375.jpg +../coco/images/train2014/COCO_train2014_000000003386.jpg +../coco/images/train2014/COCO_train2014_000000003389.jpg +../coco/images/train2014/COCO_train2014_000000003398.jpg +../coco/images/train2014/COCO_train2014_000000003412.jpg +../coco/images/train2014/COCO_train2014_000000003432.jpg +../coco/images/train2014/COCO_train2014_000000003442.jpg +../coco/images/train2014/COCO_train2014_000000003457.jpg +../coco/images/train2014/COCO_train2014_000000003461.jpg +../coco/images/train2014/COCO_train2014_000000003464.jpg +../coco/images/train2014/COCO_train2014_000000003474.jpg +../coco/images/train2014/COCO_train2014_000000003478.jpg +../coco/images/train2014/COCO_train2014_000000003481.jpg +../coco/images/train2014/COCO_train2014_000000003483.jpg +../coco/images/train2014/COCO_train2014_000000003493.jpg +../coco/images/train2014/COCO_train2014_000000003511.jpg +../coco/images/train2014/COCO_train2014_000000003514.jpg +../coco/images/train2014/COCO_train2014_000000003517.jpg +../coco/images/train2014/COCO_train2014_000000003518.jpg +../coco/images/train2014/COCO_train2014_000000003521.jpg +../coco/images/train2014/COCO_train2014_000000003528.jpg +../coco/images/train2014/COCO_train2014_000000003532.jpg +../coco/images/train2014/COCO_train2014_000000003535.jpg +../coco/images/train2014/COCO_train2014_000000003538.jpg +../coco/images/train2014/COCO_train2014_000000003579.jpg +../coco/images/train2014/COCO_train2014_000000003602.jpg +../coco/images/train2014/COCO_train2014_000000003613.jpg +../coco/images/train2014/COCO_train2014_000000003623.jpg +../coco/images/train2014/COCO_train2014_000000003628.jpg +../coco/images/train2014/COCO_train2014_000000003637.jpg +../coco/images/train2014/COCO_train2014_000000003668.jpg +../coco/images/train2014/COCO_train2014_000000003671.jpg +../coco/images/train2014/COCO_train2014_000000003682.jpg +../coco/images/train2014/COCO_train2014_000000003685.jpg +../coco/images/train2014/COCO_train2014_000000003713.jpg +../coco/images/train2014/COCO_train2014_000000003729.jpg +../coco/images/train2014/COCO_train2014_000000003735.jpg +../coco/images/train2014/COCO_train2014_000000003737.jpg +../coco/images/train2014/COCO_train2014_000000003745.jpg +../coco/images/train2014/COCO_train2014_000000003751.jpg +../coco/images/train2014/COCO_train2014_000000003764.jpg +../coco/images/train2014/COCO_train2014_000000003770.jpg +../coco/images/train2014/COCO_train2014_000000003782.jpg +../coco/images/train2014/COCO_train2014_000000003789.jpg +../coco/images/train2014/COCO_train2014_000000003804.jpg +../coco/images/train2014/COCO_train2014_000000003812.jpg +../coco/images/train2014/COCO_train2014_000000003823.jpg +../coco/images/train2014/COCO_train2014_000000003827.jpg +../coco/images/train2014/COCO_train2014_000000003830.jpg +../coco/images/train2014/COCO_train2014_000000003860.jpg +../coco/images/train2014/COCO_train2014_000000003862.jpg +../coco/images/train2014/COCO_train2014_000000003866.jpg +../coco/images/train2014/COCO_train2014_000000003870.jpg +../coco/images/train2014/COCO_train2014_000000003877.jpg +../coco/images/train2014/COCO_train2014_000000003897.jpg +../coco/images/train2014/COCO_train2014_000000003899.jpg +../coco/images/train2014/COCO_train2014_000000003911.jpg +../coco/images/train2014/COCO_train2014_000000003915.jpg +../coco/images/train2014/COCO_train2014_000000003917.jpg +../coco/images/train2014/COCO_train2014_000000003920.jpg +../coco/images/train2014/COCO_train2014_000000003935.jpg +../coco/images/train2014/COCO_train2014_000000003967.jpg +../coco/images/train2014/COCO_train2014_000000003982.jpg +../coco/images/train2014/COCO_train2014_000000003988.jpg +../coco/images/train2014/COCO_train2014_000000003992.jpg +../coco/images/train2014/COCO_train2014_000000003995.jpg +../coco/images/train2014/COCO_train2014_000000003999.jpg +../coco/images/train2014/COCO_train2014_000000004020.jpg +../coco/images/train2014/COCO_train2014_000000004032.jpg +../coco/images/train2014/COCO_train2014_000000004038.jpg +../coco/images/train2014/COCO_train2014_000000004042.jpg +../coco/images/train2014/COCO_train2014_000000004051.jpg +../coco/images/train2014/COCO_train2014_000000004057.jpg +../coco/images/train2014/COCO_train2014_000000004065.jpg +../coco/images/train2014/COCO_train2014_000000004068.jpg +../coco/images/train2014/COCO_train2014_000000004080.jpg +../coco/images/train2014/COCO_train2014_000000004129.jpg +../coco/images/train2014/COCO_train2014_000000004130.jpg +../coco/images/train2014/COCO_train2014_000000004131.jpg +../coco/images/train2014/COCO_train2014_000000004132.jpg +../coco/images/train2014/COCO_train2014_000000004138.jpg +../coco/images/train2014/COCO_train2014_000000004139.jpg +../coco/images/train2014/COCO_train2014_000000004140.jpg +../coco/images/train2014/COCO_train2014_000000004159.jpg +../coco/images/train2014/COCO_train2014_000000004172.jpg +../coco/images/train2014/COCO_train2014_000000004173.jpg +../coco/images/train2014/COCO_train2014_000000004180.jpg +../coco/images/train2014/COCO_train2014_000000004189.jpg +../coco/images/train2014/COCO_train2014_000000004201.jpg +../coco/images/train2014/COCO_train2014_000000004208.jpg +../coco/images/train2014/COCO_train2014_000000004219.jpg +../coco/images/train2014/COCO_train2014_000000004239.jpg +../coco/images/train2014/COCO_train2014_000000004244.jpg +../coco/images/train2014/COCO_train2014_000000004245.jpg +../coco/images/train2014/COCO_train2014_000000004259.jpg +../coco/images/train2014/COCO_train2014_000000004260.jpg +../coco/images/train2014/COCO_train2014_000000004278.jpg +../coco/images/train2014/COCO_train2014_000000004282.jpg +../coco/images/train2014/COCO_train2014_000000004289.jpg +../coco/images/train2014/COCO_train2014_000000004309.jpg +../coco/images/train2014/COCO_train2014_000000004318.jpg +../coco/images/train2014/COCO_train2014_000000004319.jpg +../coco/images/train2014/COCO_train2014_000000004322.jpg +../coco/images/train2014/COCO_train2014_000000004331.jpg +../coco/images/train2014/COCO_train2014_000000004360.jpg +../coco/images/train2014/COCO_train2014_000000004376.jpg +../coco/images/train2014/COCO_train2014_000000004377.jpg +../coco/images/train2014/COCO_train2014_000000004385.jpg +../coco/images/train2014/COCO_train2014_000000004394.jpg +../coco/images/train2014/COCO_train2014_000000004404.jpg +../coco/images/train2014/COCO_train2014_000000004410.jpg +../coco/images/train2014/COCO_train2014_000000004415.jpg +../coco/images/train2014/COCO_train2014_000000004421.jpg +../coco/images/train2014/COCO_train2014_000000004424.jpg +../coco/images/train2014/COCO_train2014_000000004426.jpg +../coco/images/train2014/COCO_train2014_000000004428.jpg +../coco/images/train2014/COCO_train2014_000000004441.jpg +../coco/images/train2014/COCO_train2014_000000004442.jpg +../coco/images/train2014/COCO_train2014_000000004444.jpg +../coco/images/train2014/COCO_train2014_000000004462.jpg +../coco/images/train2014/COCO_train2014_000000004463.jpg +../coco/images/train2014/COCO_train2014_000000004471.jpg +../coco/images/train2014/COCO_train2014_000000004477.jpg +../coco/images/train2014/COCO_train2014_000000004478.jpg +../coco/images/train2014/COCO_train2014_000000004488.jpg +../coco/images/train2014/COCO_train2014_000000004489.jpg +../coco/images/train2014/COCO_train2014_000000004490.jpg +../coco/images/train2014/COCO_train2014_000000004502.jpg +../coco/images/train2014/COCO_train2014_000000004508.jpg +../coco/images/train2014/COCO_train2014_000000004527.jpg +../coco/images/train2014/COCO_train2014_000000004535.jpg +../coco/images/train2014/COCO_train2014_000000004537.jpg +../coco/images/train2014/COCO_train2014_000000004546.jpg +../coco/images/train2014/COCO_train2014_000000004549.jpg +../coco/images/train2014/COCO_train2014_000000004555.jpg +../coco/images/train2014/COCO_train2014_000000004567.jpg +../coco/images/train2014/COCO_train2014_000000004571.jpg +../coco/images/train2014/COCO_train2014_000000004574.jpg +../coco/images/train2014/COCO_train2014_000000004575.jpg +../coco/images/train2014/COCO_train2014_000000004578.jpg +../coco/images/train2014/COCO_train2014_000000004579.jpg +../coco/images/train2014/COCO_train2014_000000004587.jpg +../coco/images/train2014/COCO_train2014_000000004595.jpg +../coco/images/train2014/COCO_train2014_000000004608.jpg +../coco/images/train2014/COCO_train2014_000000004616.jpg +../coco/images/train2014/COCO_train2014_000000004622.jpg +../coco/images/train2014/COCO_train2014_000000004624.jpg +../coco/images/train2014/COCO_train2014_000000004642.jpg +../coco/images/train2014/COCO_train2014_000000004647.jpg +../coco/images/train2014/COCO_train2014_000000004662.jpg +../coco/images/train2014/COCO_train2014_000000004673.jpg +../coco/images/train2014/COCO_train2014_000000004684.jpg +../coco/images/train2014/COCO_train2014_000000004694.jpg +../coco/images/train2014/COCO_train2014_000000004702.jpg +../coco/images/train2014/COCO_train2014_000000004704.jpg +../coco/images/train2014/COCO_train2014_000000004705.jpg +../coco/images/train2014/COCO_train2014_000000004706.jpg +../coco/images/train2014/COCO_train2014_000000004711.jpg +../coco/images/train2014/COCO_train2014_000000004714.jpg +../coco/images/train2014/COCO_train2014_000000004716.jpg +../coco/images/train2014/COCO_train2014_000000004719.jpg +../coco/images/train2014/COCO_train2014_000000004739.jpg +../coco/images/train2014/COCO_train2014_000000004741.jpg +../coco/images/train2014/COCO_train2014_000000004761.jpg +../coco/images/train2014/COCO_train2014_000000004762.jpg +../coco/images/train2014/COCO_train2014_000000004785.jpg +../coco/images/train2014/COCO_train2014_000000004794.jpg +../coco/images/train2014/COCO_train2014_000000004796.jpg +../coco/images/train2014/COCO_train2014_000000004809.jpg +../coco/images/train2014/COCO_train2014_000000004820.jpg +../coco/images/train2014/COCO_train2014_000000004823.jpg +../coco/images/train2014/COCO_train2014_000000004827.jpg +../coco/images/train2014/COCO_train2014_000000004830.jpg +../coco/images/train2014/COCO_train2014_000000004834.jpg +../coco/images/train2014/COCO_train2014_000000004843.jpg +../coco/images/train2014/COCO_train2014_000000004844.jpg +../coco/images/train2014/COCO_train2014_000000004859.jpg +../coco/images/train2014/COCO_train2014_000000004876.jpg +../coco/images/train2014/COCO_train2014_000000004880.jpg +../coco/images/train2014/COCO_train2014_000000004885.jpg +../coco/images/train2014/COCO_train2014_000000004888.jpg +../coco/images/train2014/COCO_train2014_000000004891.jpg +../coco/images/train2014/COCO_train2014_000000004893.jpg +../coco/images/train2014/COCO_train2014_000000004901.jpg +../coco/images/train2014/COCO_train2014_000000004903.jpg +../coco/images/train2014/COCO_train2014_000000004904.jpg +../coco/images/train2014/COCO_train2014_000000004920.jpg +../coco/images/train2014/COCO_train2014_000000004931.jpg +../coco/images/train2014/COCO_train2014_000000004947.jpg +../coco/images/train2014/COCO_train2014_000000004956.jpg +../coco/images/train2014/COCO_train2014_000000004963.jpg +../coco/images/train2014/COCO_train2014_000000004968.jpg +../coco/images/train2014/COCO_train2014_000000004970.jpg +../coco/images/train2014/COCO_train2014_000000004971.jpg +../coco/images/train2014/COCO_train2014_000000004978.jpg +../coco/images/train2014/COCO_train2014_000000004981.jpg +../coco/images/train2014/COCO_train2014_000000004984.jpg +../coco/images/train2014/COCO_train2014_000000004993.jpg +../coco/images/train2014/COCO_train2014_000000005005.jpg +../coco/images/train2014/COCO_train2014_000000005010.jpg +../coco/images/train2014/COCO_train2014_000000005011.jpg +../coco/images/train2014/COCO_train2014_000000005016.jpg +../coco/images/train2014/COCO_train2014_000000005018.jpg +../coco/images/train2014/COCO_train2014_000000005021.jpg +../coco/images/train2014/COCO_train2014_000000005028.jpg +../coco/images/train2014/COCO_train2014_000000005046.jpg +../coco/images/train2014/COCO_train2014_000000005073.jpg +../coco/images/train2014/COCO_train2014_000000005083.jpg +../coco/images/train2014/COCO_train2014_000000005085.jpg +../coco/images/train2014/COCO_train2014_000000005086.jpg +../coco/images/train2014/COCO_train2014_000000005088.jpg +../coco/images/train2014/COCO_train2014_000000005094.jpg +../coco/images/train2014/COCO_train2014_000000005095.jpg +../coco/images/train2014/COCO_train2014_000000005099.jpg +../coco/images/train2014/COCO_train2014_000000005111.jpg +../coco/images/train2014/COCO_train2014_000000005113.jpg +../coco/images/train2014/COCO_train2014_000000005115.jpg +../coco/images/train2014/COCO_train2014_000000005131.jpg +../coco/images/train2014/COCO_train2014_000000005139.jpg +../coco/images/train2014/COCO_train2014_000000005140.jpg +../coco/images/train2014/COCO_train2014_000000005142.jpg +../coco/images/train2014/COCO_train2014_000000005151.jpg +../coco/images/train2014/COCO_train2014_000000005152.jpg +../coco/images/train2014/COCO_train2014_000000005156.jpg +../coco/images/train2014/COCO_train2014_000000005165.jpg +../coco/images/train2014/COCO_train2014_000000005169.jpg +../coco/images/train2014/COCO_train2014_000000005172.jpg +../coco/images/train2014/COCO_train2014_000000005174.jpg +../coco/images/train2014/COCO_train2014_000000005180.jpg +../coco/images/train2014/COCO_train2014_000000005198.jpg +../coco/images/train2014/COCO_train2014_000000005210.jpg +../coco/images/train2014/COCO_train2014_000000005215.jpg +../coco/images/train2014/COCO_train2014_000000005219.jpg +../coco/images/train2014/COCO_train2014_000000005237.jpg +../coco/images/train2014/COCO_train2014_000000005244.jpg +../coco/images/train2014/COCO_train2014_000000005253.jpg +../coco/images/train2014/COCO_train2014_000000005256.jpg +../coco/images/train2014/COCO_train2014_000000005259.jpg +../coco/images/train2014/COCO_train2014_000000005260.jpg +../coco/images/train2014/COCO_train2014_000000005263.jpg +../coco/images/train2014/COCO_train2014_000000005277.jpg +../coco/images/train2014/COCO_train2014_000000005288.jpg +../coco/images/train2014/COCO_train2014_000000005294.jpg +../coco/images/train2014/COCO_train2014_000000005303.jpg +../coco/images/train2014/COCO_train2014_000000005312.jpg +../coco/images/train2014/COCO_train2014_000000005313.jpg +../coco/images/train2014/COCO_train2014_000000005324.jpg +../coco/images/train2014/COCO_train2014_000000005326.jpg +../coco/images/train2014/COCO_train2014_000000005335.jpg +../coco/images/train2014/COCO_train2014_000000005336.jpg +../coco/images/train2014/COCO_train2014_000000005339.jpg +../coco/images/train2014/COCO_train2014_000000005340.jpg +../coco/images/train2014/COCO_train2014_000000005344.jpg +../coco/images/train2014/COCO_train2014_000000005345.jpg +../coco/images/train2014/COCO_train2014_000000005355.jpg +../coco/images/train2014/COCO_train2014_000000005359.jpg +../coco/images/train2014/COCO_train2014_000000005360.jpg +../coco/images/train2014/COCO_train2014_000000005362.jpg +../coco/images/train2014/COCO_train2014_000000005368.jpg +../coco/images/train2014/COCO_train2014_000000005373.jpg +../coco/images/train2014/COCO_train2014_000000005376.jpg +../coco/images/train2014/COCO_train2014_000000005377.jpg +../coco/images/train2014/COCO_train2014_000000005383.jpg +../coco/images/train2014/COCO_train2014_000000005396.jpg +../coco/images/train2014/COCO_train2014_000000005424.jpg +../coco/images/train2014/COCO_train2014_000000005425.jpg +../coco/images/train2014/COCO_train2014_000000005430.jpg +../coco/images/train2014/COCO_train2014_000000005434.jpg +../coco/images/train2014/COCO_train2014_000000005435.jpg +../coco/images/train2014/COCO_train2014_000000005453.jpg +../coco/images/train2014/COCO_train2014_000000005459.jpg +../coco/images/train2014/COCO_train2014_000000005469.jpg +../coco/images/train2014/COCO_train2014_000000005471.jpg +../coco/images/train2014/COCO_train2014_000000005472.jpg +../coco/images/train2014/COCO_train2014_000000005482.jpg +../coco/images/train2014/COCO_train2014_000000005483.jpg +../coco/images/train2014/COCO_train2014_000000005505.jpg +../coco/images/train2014/COCO_train2014_000000005508.jpg +../coco/images/train2014/COCO_train2014_000000005522.jpg +../coco/images/train2014/COCO_train2014_000000005554.jpg +../coco/images/train2014/COCO_train2014_000000005557.jpg +../coco/images/train2014/COCO_train2014_000000005559.jpg +../coco/images/train2014/COCO_train2014_000000005564.jpg +../coco/images/train2014/COCO_train2014_000000005574.jpg +../coco/images/train2014/COCO_train2014_000000005587.jpg +../coco/images/train2014/COCO_train2014_000000005589.jpg +../coco/images/train2014/COCO_train2014_000000005608.jpg +../coco/images/train2014/COCO_train2014_000000005612.jpg +../coco/images/train2014/COCO_train2014_000000005614.jpg +../coco/images/train2014/COCO_train2014_000000005615.jpg +../coco/images/train2014/COCO_train2014_000000005619.jpg +../coco/images/train2014/COCO_train2014_000000005620.jpg +../coco/images/train2014/COCO_train2014_000000005632.jpg +../coco/images/train2014/COCO_train2014_000000005638.jpg +../coco/images/train2014/COCO_train2014_000000005641.jpg +../coco/images/train2014/COCO_train2014_000000005643.jpg +../coco/images/train2014/COCO_train2014_000000005649.jpg +../coco/images/train2014/COCO_train2014_000000005667.jpg +../coco/images/train2014/COCO_train2014_000000005669.jpg +../coco/images/train2014/COCO_train2014_000000005678.jpg +../coco/images/train2014/COCO_train2014_000000005683.jpg +../coco/images/train2014/COCO_train2014_000000005684.jpg +../coco/images/train2014/COCO_train2014_000000005688.jpg +../coco/images/train2014/COCO_train2014_000000005689.jpg +../coco/images/train2014/COCO_train2014_000000005692.jpg +../coco/images/train2014/COCO_train2014_000000005699.jpg +../coco/images/train2014/COCO_train2014_000000005700.jpg +../coco/images/train2014/COCO_train2014_000000005701.jpg +../coco/images/train2014/COCO_train2014_000000005703.jpg +../coco/images/train2014/COCO_train2014_000000005715.jpg +../coco/images/train2014/COCO_train2014_000000005736.jpg +../coco/images/train2014/COCO_train2014_000000005740.jpg +../coco/images/train2014/COCO_train2014_000000005745.jpg +../coco/images/train2014/COCO_train2014_000000005755.jpg +../coco/images/train2014/COCO_train2014_000000005756.jpg +../coco/images/train2014/COCO_train2014_000000005757.jpg +../coco/images/train2014/COCO_train2014_000000005769.jpg +../coco/images/train2014/COCO_train2014_000000005782.jpg +../coco/images/train2014/COCO_train2014_000000005785.jpg +../coco/images/train2014/COCO_train2014_000000005809.jpg +../coco/images/train2014/COCO_train2014_000000005811.jpg +../coco/images/train2014/COCO_train2014_000000005823.jpg +../coco/images/train2014/COCO_train2014_000000005828.jpg +../coco/images/train2014/COCO_train2014_000000005830.jpg +../coco/images/train2014/COCO_train2014_000000005832.jpg +../coco/images/train2014/COCO_train2014_000000005862.jpg +../coco/images/train2014/COCO_train2014_000000005882.jpg +../coco/images/train2014/COCO_train2014_000000005883.jpg +../coco/images/train2014/COCO_train2014_000000005903.jpg +../coco/images/train2014/COCO_train2014_000000005906.jpg +../coco/images/train2014/COCO_train2014_000000005907.jpg +../coco/images/train2014/COCO_train2014_000000005913.jpg +../coco/images/train2014/COCO_train2014_000000005915.jpg +../coco/images/train2014/COCO_train2014_000000005916.jpg +../coco/images/train2014/COCO_train2014_000000005917.jpg +../coco/images/train2014/COCO_train2014_000000005933.jpg +../coco/images/train2014/COCO_train2014_000000005946.jpg +../coco/images/train2014/COCO_train2014_000000005947.jpg +../coco/images/train2014/COCO_train2014_000000005962.jpg +../coco/images/train2014/COCO_train2014_000000005967.jpg +../coco/images/train2014/COCO_train2014_000000005991.jpg +../coco/images/train2014/COCO_train2014_000000005994.jpg +../coco/images/train2014/COCO_train2014_000000006004.jpg +../coco/images/train2014/COCO_train2014_000000006010.jpg +../coco/images/train2014/COCO_train2014_000000006016.jpg +../coco/images/train2014/COCO_train2014_000000006026.jpg +../coco/images/train2014/COCO_train2014_000000006031.jpg +../coco/images/train2014/COCO_train2014_000000006041.jpg +../coco/images/train2014/COCO_train2014_000000006042.jpg +../coco/images/train2014/COCO_train2014_000000006051.jpg +../coco/images/train2014/COCO_train2014_000000006053.jpg +../coco/images/train2014/COCO_train2014_000000006057.jpg +../coco/images/train2014/COCO_train2014_000000006066.jpg +../coco/images/train2014/COCO_train2014_000000006068.jpg +../coco/images/train2014/COCO_train2014_000000006075.jpg +../coco/images/train2014/COCO_train2014_000000006101.jpg +../coco/images/train2014/COCO_train2014_000000006107.jpg +../coco/images/train2014/COCO_train2014_000000006120.jpg +../coco/images/train2014/COCO_train2014_000000006140.jpg +../coco/images/train2014/COCO_train2014_000000006146.jpg +../coco/images/train2014/COCO_train2014_000000006148.jpg +../coco/images/train2014/COCO_train2014_000000006151.jpg +../coco/images/train2014/COCO_train2014_000000006155.jpg +../coco/images/train2014/COCO_train2014_000000006160.jpg +../coco/images/train2014/COCO_train2014_000000006178.jpg +../coco/images/train2014/COCO_train2014_000000006182.jpg +../coco/images/train2014/COCO_train2014_000000006190.jpg +../coco/images/train2014/COCO_train2014_000000006197.jpg +../coco/images/train2014/COCO_train2014_000000006200.jpg +../coco/images/train2014/COCO_train2014_000000006216.jpg +../coco/images/train2014/COCO_train2014_000000006225.jpg +../coco/images/train2014/COCO_train2014_000000006229.jpg +../coco/images/train2014/COCO_train2014_000000006230.jpg +../coco/images/train2014/COCO_train2014_000000006233.jpg +../coco/images/train2014/COCO_train2014_000000006241.jpg +../coco/images/train2014/COCO_train2014_000000006247.jpg +../coco/images/train2014/COCO_train2014_000000006253.jpg +../coco/images/train2014/COCO_train2014_000000006262.jpg +../coco/images/train2014/COCO_train2014_000000006263.jpg +../coco/images/train2014/COCO_train2014_000000006268.jpg +../coco/images/train2014/COCO_train2014_000000006270.jpg +../coco/images/train2014/COCO_train2014_000000006287.jpg +../coco/images/train2014/COCO_train2014_000000006293.jpg +../coco/images/train2014/COCO_train2014_000000006295.jpg +../coco/images/train2014/COCO_train2014_000000006318.jpg +../coco/images/train2014/COCO_train2014_000000006327.jpg +../coco/images/train2014/COCO_train2014_000000006332.jpg +../coco/images/train2014/COCO_train2014_000000006334.jpg +../coco/images/train2014/COCO_train2014_000000006336.jpg +../coco/images/train2014/COCO_train2014_000000006338.jpg +../coco/images/train2014/COCO_train2014_000000006339.jpg +../coco/images/train2014/COCO_train2014_000000006352.jpg +../coco/images/train2014/COCO_train2014_000000006355.jpg +../coco/images/train2014/COCO_train2014_000000006357.jpg +../coco/images/train2014/COCO_train2014_000000006358.jpg +../coco/images/train2014/COCO_train2014_000000006363.jpg +../coco/images/train2014/COCO_train2014_000000006364.jpg +../coco/images/train2014/COCO_train2014_000000006379.jpg +../coco/images/train2014/COCO_train2014_000000006380.jpg +../coco/images/train2014/COCO_train2014_000000006406.jpg +../coco/images/train2014/COCO_train2014_000000006407.jpg +../coco/images/train2014/COCO_train2014_000000006409.jpg +../coco/images/train2014/COCO_train2014_000000006414.jpg +../coco/images/train2014/COCO_train2014_000000006421.jpg +../coco/images/train2014/COCO_train2014_000000006422.jpg +../coco/images/train2014/COCO_train2014_000000006424.jpg +../coco/images/train2014/COCO_train2014_000000006428.jpg +../coco/images/train2014/COCO_train2014_000000006432.jpg +../coco/images/train2014/COCO_train2014_000000006447.jpg +../coco/images/train2014/COCO_train2014_000000006451.jpg +../coco/images/train2014/COCO_train2014_000000006464.jpg +../coco/images/train2014/COCO_train2014_000000006465.jpg +../coco/images/train2014/COCO_train2014_000000006481.jpg +../coco/images/train2014/COCO_train2014_000000006488.jpg +../coco/images/train2014/COCO_train2014_000000006489.jpg +../coco/images/train2014/COCO_train2014_000000006491.jpg +../coco/images/train2014/COCO_train2014_000000006512.jpg +../coco/images/train2014/COCO_train2014_000000006517.jpg +../coco/images/train2014/COCO_train2014_000000006518.jpg +../coco/images/train2014/COCO_train2014_000000006520.jpg +../coco/images/train2014/COCO_train2014_000000006522.jpg +../coco/images/train2014/COCO_train2014_000000006531.jpg +../coco/images/train2014/COCO_train2014_000000006539.jpg +../coco/images/train2014/COCO_train2014_000000006541.jpg +../coco/images/train2014/COCO_train2014_000000006560.jpg +../coco/images/train2014/COCO_train2014_000000006562.jpg +../coco/images/train2014/COCO_train2014_000000006572.jpg +../coco/images/train2014/COCO_train2014_000000006578.jpg +../coco/images/train2014/COCO_train2014_000000006586.jpg +../coco/images/train2014/COCO_train2014_000000006590.jpg +../coco/images/train2014/COCO_train2014_000000006595.jpg +../coco/images/train2014/COCO_train2014_000000006599.jpg +../coco/images/train2014/COCO_train2014_000000006602.jpg +../coco/images/train2014/COCO_train2014_000000006603.jpg +../coco/images/train2014/COCO_train2014_000000006627.jpg +../coco/images/train2014/COCO_train2014_000000006631.jpg +../coco/images/train2014/COCO_train2014_000000006632.jpg +../coco/images/train2014/COCO_train2014_000000006640.jpg +../coco/images/train2014/COCO_train2014_000000006647.jpg +../coco/images/train2014/COCO_train2014_000000006651.jpg +../coco/images/train2014/COCO_train2014_000000006664.jpg +../coco/images/train2014/COCO_train2014_000000006675.jpg +../coco/images/train2014/COCO_train2014_000000006692.jpg +../coco/images/train2014/COCO_train2014_000000006709.jpg +../coco/images/train2014/COCO_train2014_000000006710.jpg +../coco/images/train2014/COCO_train2014_000000006715.jpg +../coco/images/train2014/COCO_train2014_000000006721.jpg +../coco/images/train2014/COCO_train2014_000000006725.jpg +../coco/images/train2014/COCO_train2014_000000006730.jpg +../coco/images/train2014/COCO_train2014_000000006733.jpg +../coco/images/train2014/COCO_train2014_000000006744.jpg +../coco/images/train2014/COCO_train2014_000000006747.jpg +../coco/images/train2014/COCO_train2014_000000006749.jpg +../coco/images/train2014/COCO_train2014_000000006753.jpg +../coco/images/train2014/COCO_train2014_000000006760.jpg +../coco/images/train2014/COCO_train2014_000000006764.jpg +../coco/images/train2014/COCO_train2014_000000006765.jpg +../coco/images/train2014/COCO_train2014_000000006773.jpg +../coco/images/train2014/COCO_train2014_000000006777.jpg +../coco/images/train2014/COCO_train2014_000000006780.jpg +../coco/images/train2014/COCO_train2014_000000006790.jpg +../coco/images/train2014/COCO_train2014_000000006792.jpg +../coco/images/train2014/COCO_train2014_000000006800.jpg +../coco/images/train2014/COCO_train2014_000000006809.jpg +../coco/images/train2014/COCO_train2014_000000006811.jpg +../coco/images/train2014/COCO_train2014_000000006819.jpg +../coco/images/train2014/COCO_train2014_000000006824.jpg +../coco/images/train2014/COCO_train2014_000000006842.jpg +../coco/images/train2014/COCO_train2014_000000006846.jpg +../coco/images/train2014/COCO_train2014_000000006860.jpg +../coco/images/train2014/COCO_train2014_000000006862.jpg +../coco/images/train2014/COCO_train2014_000000006873.jpg +../coco/images/train2014/COCO_train2014_000000006901.jpg +../coco/images/train2014/COCO_train2014_000000006914.jpg +../coco/images/train2014/COCO_train2014_000000006920.jpg +../coco/images/train2014/COCO_train2014_000000006935.jpg +../coco/images/train2014/COCO_train2014_000000006936.jpg +../coco/images/train2014/COCO_train2014_000000006941.jpg +../coco/images/train2014/COCO_train2014_000000006943.jpg +../coco/images/train2014/COCO_train2014_000000006945.jpg +../coco/images/train2014/COCO_train2014_000000006957.jpg +../coco/images/train2014/COCO_train2014_000000006964.jpg +../coco/images/train2014/COCO_train2014_000000006973.jpg +../coco/images/train2014/COCO_train2014_000000006981.jpg +../coco/images/train2014/COCO_train2014_000000006990.jpg +../coco/images/train2014/COCO_train2014_000000006996.jpg +../coco/images/train2014/COCO_train2014_000000006998.jpg +../coco/images/train2014/COCO_train2014_000000007022.jpg +../coco/images/train2014/COCO_train2014_000000007028.jpg +../coco/images/train2014/COCO_train2014_000000007035.jpg +../coco/images/train2014/COCO_train2014_000000007040.jpg +../coco/images/train2014/COCO_train2014_000000007048.jpg +../coco/images/train2014/COCO_train2014_000000007049.jpg +../coco/images/train2014/COCO_train2014_000000007069.jpg +../coco/images/train2014/COCO_train2014_000000007090.jpg +../coco/images/train2014/COCO_train2014_000000007095.jpg +../coco/images/train2014/COCO_train2014_000000007103.jpg +../coco/images/train2014/COCO_train2014_000000007104.jpg +../coco/images/train2014/COCO_train2014_000000007116.jpg +../coco/images/train2014/COCO_train2014_000000007123.jpg +../coco/images/train2014/COCO_train2014_000000007124.jpg +../coco/images/train2014/COCO_train2014_000000007129.jpg +../coco/images/train2014/COCO_train2014_000000007139.jpg +../coco/images/train2014/COCO_train2014_000000007143.jpg +../coco/images/train2014/COCO_train2014_000000007145.jpg +../coco/images/train2014/COCO_train2014_000000007150.jpg +../coco/images/train2014/COCO_train2014_000000007159.jpg +../coco/images/train2014/COCO_train2014_000000007167.jpg +../coco/images/train2014/COCO_train2014_000000007174.jpg +../coco/images/train2014/COCO_train2014_000000007179.jpg +../coco/images/train2014/COCO_train2014_000000007201.jpg +../coco/images/train2014/COCO_train2014_000000007205.jpg +../coco/images/train2014/COCO_train2014_000000007220.jpg +../coco/images/train2014/COCO_train2014_000000007221.jpg +../coco/images/train2014/COCO_train2014_000000007224.jpg +../coco/images/train2014/COCO_train2014_000000007228.jpg +../coco/images/train2014/COCO_train2014_000000007232.jpg +../coco/images/train2014/COCO_train2014_000000007239.jpg +../coco/images/train2014/COCO_train2014_000000007247.jpg +../coco/images/train2014/COCO_train2014_000000007251.jpg +../coco/images/train2014/COCO_train2014_000000007275.jpg +../coco/images/train2014/COCO_train2014_000000007277.jpg +../coco/images/train2014/COCO_train2014_000000007307.jpg +../coco/images/train2014/COCO_train2014_000000007318.jpg +../coco/images/train2014/COCO_train2014_000000007319.jpg +../coco/images/train2014/COCO_train2014_000000007357.jpg +../coco/images/train2014/COCO_train2014_000000007361.jpg +../coco/images/train2014/COCO_train2014_000000007367.jpg +../coco/images/train2014/COCO_train2014_000000007393.jpg +../coco/images/train2014/COCO_train2014_000000007396.jpg +../coco/images/train2014/COCO_train2014_000000007420.jpg +../coco/images/train2014/COCO_train2014_000000007424.jpg +../coco/images/train2014/COCO_train2014_000000007452.jpg +../coco/images/train2014/COCO_train2014_000000007455.jpg +../coco/images/train2014/COCO_train2014_000000007476.jpg +../coco/images/train2014/COCO_train2014_000000007489.jpg +../coco/images/train2014/COCO_train2014_000000007498.jpg +../coco/images/train2014/COCO_train2014_000000007500.jpg +../coco/images/train2014/COCO_train2014_000000007503.jpg +../coco/images/train2014/COCO_train2014_000000007504.jpg +../coco/images/train2014/COCO_train2014_000000007510.jpg +../coco/images/train2014/COCO_train2014_000000007517.jpg +../coco/images/train2014/COCO_train2014_000000007524.jpg +../coco/images/train2014/COCO_train2014_000000007535.jpg +../coco/images/train2014/COCO_train2014_000000007539.jpg +../coco/images/train2014/COCO_train2014_000000007544.jpg +../coco/images/train2014/COCO_train2014_000000007558.jpg +../coco/images/train2014/COCO_train2014_000000007567.jpg +../coco/images/train2014/COCO_train2014_000000007583.jpg +../coco/images/train2014/COCO_train2014_000000007584.jpg +../coco/images/train2014/COCO_train2014_000000007594.jpg +../coco/images/train2014/COCO_train2014_000000007596.jpg +../coco/images/train2014/COCO_train2014_000000007601.jpg +../coco/images/train2014/COCO_train2014_000000007603.jpg diff --git a/data/coco_100img.txt b/data/coco_100img.txt new file mode 100644 index 00000000..a39dc939 --- /dev/null +++ b/data/coco_100img.txt @@ -0,0 +1,100 @@ +../coco/images/train2014/COCO_train2014_000000000009.jpg +../coco/images/train2014/COCO_train2014_000000000025.jpg +../coco/images/train2014/COCO_train2014_000000000030.jpg +../coco/images/train2014/COCO_train2014_000000000034.jpg +../coco/images/train2014/COCO_train2014_000000000036.jpg +../coco/images/train2014/COCO_train2014_000000000049.jpg +../coco/images/train2014/COCO_train2014_000000000061.jpg +../coco/images/train2014/COCO_train2014_000000000064.jpg +../coco/images/train2014/COCO_train2014_000000000071.jpg +../coco/images/train2014/COCO_train2014_000000000072.jpg +../coco/images/train2014/COCO_train2014_000000000077.jpg +../coco/images/train2014/COCO_train2014_000000000078.jpg +../coco/images/train2014/COCO_train2014_000000000081.jpg +../coco/images/train2014/COCO_train2014_000000000086.jpg +../coco/images/train2014/COCO_train2014_000000000089.jpg +../coco/images/train2014/COCO_train2014_000000000092.jpg +../coco/images/train2014/COCO_train2014_000000000094.jpg +../coco/images/train2014/COCO_train2014_000000000109.jpg +../coco/images/train2014/COCO_train2014_000000000110.jpg +../coco/images/train2014/COCO_train2014_000000000113.jpg +../coco/images/train2014/COCO_train2014_000000000127.jpg +../coco/images/train2014/COCO_train2014_000000000138.jpg +../coco/images/train2014/COCO_train2014_000000000142.jpg +../coco/images/train2014/COCO_train2014_000000000144.jpg +../coco/images/train2014/COCO_train2014_000000000149.jpg +../coco/images/train2014/COCO_train2014_000000000151.jpg +../coco/images/train2014/COCO_train2014_000000000154.jpg +../coco/images/train2014/COCO_train2014_000000000165.jpg +../coco/images/train2014/COCO_train2014_000000000194.jpg +../coco/images/train2014/COCO_train2014_000000000201.jpg +../coco/images/train2014/COCO_train2014_000000000247.jpg +../coco/images/train2014/COCO_train2014_000000000260.jpg +../coco/images/train2014/COCO_train2014_000000000263.jpg +../coco/images/train2014/COCO_train2014_000000000307.jpg +../coco/images/train2014/COCO_train2014_000000000308.jpg +../coco/images/train2014/COCO_train2014_000000000309.jpg +../coco/images/train2014/COCO_train2014_000000000312.jpg +../coco/images/train2014/COCO_train2014_000000000315.jpg +../coco/images/train2014/COCO_train2014_000000000321.jpg +../coco/images/train2014/COCO_train2014_000000000322.jpg +../coco/images/train2014/COCO_train2014_000000000326.jpg +../coco/images/train2014/COCO_train2014_000000000332.jpg +../coco/images/train2014/COCO_train2014_000000000349.jpg +../coco/images/train2014/COCO_train2014_000000000368.jpg +../coco/images/train2014/COCO_train2014_000000000370.jpg +../coco/images/train2014/COCO_train2014_000000000382.jpg +../coco/images/train2014/COCO_train2014_000000000384.jpg +../coco/images/train2014/COCO_train2014_000000000389.jpg +../coco/images/train2014/COCO_train2014_000000000394.jpg +../coco/images/train2014/COCO_train2014_000000000404.jpg +../coco/images/train2014/COCO_train2014_000000000419.jpg +../coco/images/train2014/COCO_train2014_000000000431.jpg +../coco/images/train2014/COCO_train2014_000000000436.jpg +../coco/images/train2014/COCO_train2014_000000000438.jpg +../coco/images/train2014/COCO_train2014_000000000443.jpg +../coco/images/train2014/COCO_train2014_000000000446.jpg +../coco/images/train2014/COCO_train2014_000000000450.jpg +../coco/images/train2014/COCO_train2014_000000000471.jpg +../coco/images/train2014/COCO_train2014_000000000490.jpg +../coco/images/train2014/COCO_train2014_000000000491.jpg +../coco/images/train2014/COCO_train2014_000000000510.jpg +../coco/images/train2014/COCO_train2014_000000000514.jpg +../coco/images/train2014/COCO_train2014_000000000529.jpg +../coco/images/train2014/COCO_train2014_000000000531.jpg +../coco/images/train2014/COCO_train2014_000000000532.jpg +../coco/images/train2014/COCO_train2014_000000000540.jpg +../coco/images/train2014/COCO_train2014_000000000542.jpg +../coco/images/train2014/COCO_train2014_000000000560.jpg +../coco/images/train2014/COCO_train2014_000000000562.jpg +../coco/images/train2014/COCO_train2014_000000000572.jpg +../coco/images/train2014/COCO_train2014_000000000575.jpg +../coco/images/train2014/COCO_train2014_000000000581.jpg +../coco/images/train2014/COCO_train2014_000000000584.jpg +../coco/images/train2014/COCO_train2014_000000000595.jpg +../coco/images/train2014/COCO_train2014_000000000597.jpg +../coco/images/train2014/COCO_train2014_000000000605.jpg +../coco/images/train2014/COCO_train2014_000000000612.jpg +../coco/images/train2014/COCO_train2014_000000000620.jpg +../coco/images/train2014/COCO_train2014_000000000625.jpg +../coco/images/train2014/COCO_train2014_000000000629.jpg +../coco/images/train2014/COCO_train2014_000000000634.jpg +../coco/images/train2014/COCO_train2014_000000000643.jpg +../coco/images/train2014/COCO_train2014_000000000650.jpg +../coco/images/train2014/COCO_train2014_000000000656.jpg +../coco/images/train2014/COCO_train2014_000000000659.jpg +../coco/images/train2014/COCO_train2014_000000000670.jpg +../coco/images/train2014/COCO_train2014_000000000671.jpg +../coco/images/train2014/COCO_train2014_000000000673.jpg +../coco/images/train2014/COCO_train2014_000000000681.jpg +../coco/images/train2014/COCO_train2014_000000000684.jpg +../coco/images/train2014/COCO_train2014_000000000690.jpg +../coco/images/train2014/COCO_train2014_000000000706.jpg +../coco/images/train2014/COCO_train2014_000000000714.jpg +../coco/images/train2014/COCO_train2014_000000000716.jpg +../coco/images/train2014/COCO_train2014_000000000722.jpg +../coco/images/train2014/COCO_train2014_000000000723.jpg +../coco/images/train2014/COCO_train2014_000000000731.jpg +../coco/images/train2014/COCO_train2014_000000000735.jpg +../coco/images/train2014/COCO_train2014_000000000753.jpg +../coco/images/train2014/COCO_train2014_000000000754.jpg diff --git a/data/coco_10img.txt b/data/coco_10img.txt new file mode 100644 index 00000000..5378cc27 --- /dev/null +++ b/data/coco_10img.txt @@ -0,0 +1,10 @@ +../coco/images/train2014/COCO_train2014_000000000009.jpg +../coco/images/train2014/COCO_train2014_000000000025.jpg +../coco/images/train2014/COCO_train2014_000000000030.jpg +../coco/images/train2014/COCO_train2014_000000000034.jpg +../coco/images/train2014/COCO_train2014_000000000036.jpg +../coco/images/train2014/COCO_train2014_000000000049.jpg +../coco/images/train2014/COCO_train2014_000000000061.jpg +../coco/images/train2014/COCO_train2014_000000000064.jpg +../coco/images/train2014/COCO_train2014_000000000071.jpg +../coco/images/train2014/COCO_train2014_000000000072.jpg diff --git a/data/coco_1cls.txt b/data/coco_1cls.txt new file mode 100644 index 00000000..aea1ea87 --- /dev/null +++ b/data/coco_1cls.txt @@ -0,0 +1,5 @@ +../coco/images/val2014/COCO_val2014_000000013992.jpg +../coco/images/val2014/COCO_val2014_000000047226.jpg +../coco/images/val2014/COCO_val2014_000000050324.jpg +../coco/images/val2014/COCO_val2014_000000121497.jpg +../coco/images/val2014/COCO_val2014_000000001464.jpg diff --git a/data/coco_1img.txt b/data/coco_1img.txt new file mode 100644 index 00000000..85defa29 --- /dev/null +++ b/data/coco_1img.txt @@ -0,0 +1 @@ +../coco/images/val2014/COCO_val2014_000000581886.jpg From 65eccee4ef12ce0935b22b4d1a0ca2301780f6d9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 5 Apr 2019 16:17:15 +0200 Subject: [PATCH 0609/2595] updates --- train.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index a62612ce..5e527e9f 100644 --- a/train.py +++ b/train.py @@ -76,7 +76,8 @@ def train( cutoff = load_darknet_weights(model, weights + 'darknet53.conv.74') # Set scheduler (reduce lr at epoch 250) - scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[250], gamma=0.1, last_epoch=start_epoch - 1) + scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[218, 245], gamma=0.1, + last_epoch=start_epoch - 1) # Dataset dataset = LoadImagesAndLabels(train_path, img_size=img_size, augment=True) @@ -216,7 +217,7 @@ def train( if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument('--epochs', type=int, default=270, help='number of epochs') + parser.add_argument('--epochs', type=int, default=273, help='number of epochs') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulate', type=int, default=1, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') From 54e43b9ad6a74db8cba8da438c6ae4db3798c63f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 5 Apr 2019 16:19:51 +0200 Subject: [PATCH 0610/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 5e527e9f..83eb7ccc 100644 --- a/train.py +++ b/train.py @@ -15,7 +15,7 @@ def train( data_cfg, img_size=416, resume=False, - epochs=270, + epochs=273, # 500200 batches at bs 64, dataset length 117263 batch_size=16, accumulate=1, multi_scale=False, @@ -75,7 +75,7 @@ def train( else: cutoff = load_darknet_weights(model, weights + 'darknet53.conv.74') - # Set scheduler (reduce lr at epoch 250) + # Set scheduler (reduce lr at epochs 218, 245, i.e. batches 400k, 450k) scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[218, 245], gamma=0.1, last_epoch=start_epoch - 1) From a34a760d0fb78ca29289ff432667af28fc2054ec Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 5 Apr 2019 16:26:42 +0200 Subject: [PATCH 0611/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 83eb7ccc..2d3cf8b2 100644 --- a/train.py +++ b/train.py @@ -188,7 +188,7 @@ def train( # Update best loss test_loss = results[4] if test_loss < best_loss: - best_loss = results[0] + best_loss = test_loss # Save training results save = True and not opt.nosave From 112f061f4e794cc17a91519f91d5672160b5a489 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 6 Apr 2019 16:13:11 +0200 Subject: [PATCH 0612/2595] updates --- utils/gcp.sh | 2 +- utils/utils.py | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index a7f9859e..95efe9fa 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -11,7 +11,7 @@ sudo reboot now # Re-clone sudo rm -rf yolov3 # git clone https://github.com/ultralytics/yolov3 # master -git clone -b map_update --depth 1 https://github.com/ultralytics/yolov3 yolov3 # branch +git clone -b test --depth 1 https://github.com/ultralytics/yolov3 yolov3_test # branch cp -r weights yolov3 cp -r cocoapi/PythonAPI/pycocotools yolov3 cd yolov3 diff --git a/utils/utils.py b/utils/utils.py index 213f392a..5b4e9c76 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -3,6 +3,7 @@ import random from collections import defaultdict import cv2 +import matplotlib import matplotlib.pyplot as plt import numpy as np import torch @@ -10,6 +11,8 @@ import torch.nn as nn from utils import torch_utils +matplotlib.rc('font', **{'family': 'normal', 'size': 11}) + # Set printoptions torch.set_printoptions(linewidth=1320, precision=5, profile='long') np.set_printoptions(linewidth=320, formatter={'float_kind': '{:11.5g}'.format}) # format short g, %precision=5 @@ -286,8 +289,8 @@ def compute_loss(p, targets): # predictions, targets # Add to dictionary d = defaultdict(float) losses = [loss.item(), lxy.item(), lwh.item(), lconf.item(), lcls.item()] - for name, x in zip(['total', 'xy', 'wh', 'conf', 'cls'], losses): - d[name] = x + for k, v in zip(['total', 'xy', 'wh', 'conf', 'cls'], losses): + d[k] = v return loss, d @@ -325,7 +328,7 @@ def build_targets(model, targets): # Width and height twh.append(torch.log(gwh / layer.anchor_vec[a])) # yolo method - # twh.append(torch.sqrt(gwh / layer.anchor_vec[a]) / 2) # power method + # twh.append((gwh / layer.anchor_vec[a]) ** (1 / 3) / 2) # power method # Class tcls.append(c) @@ -468,7 +471,7 @@ def plot_wh_methods(): # from utils.utils import *; plot_wh_methods() # https://github.com/ultralytics/yolov3/issues/168 x = np.arange(-4.0, 4.0, .1) ya = np.exp(x) - yb = (torch.sigmoid(torch.from_numpy(x)).numpy() * 2) + yb = torch.sigmoid(torch.from_numpy(x)).numpy() * 2 fig = plt.figure(figsize=(6, 3), dpi=150) plt.plot(x, ya, '.-', label='yolo method') @@ -495,7 +498,7 @@ def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() x = range(start, stop if stop else results.shape[1]) for i in range(10): plt.subplot(2, 5, i + 1) - plt.plot(x, results[i, x], marker='.', label=f) + plt.plot(x, results[i, x].clip(max=500), marker='.', label=f) plt.title(s[i]) if i == 0: plt.legend() From 7ee48a43b64ed402c6d9b9d336db0f500246a21a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 6 Apr 2019 16:13:35 +0200 Subject: [PATCH 0613/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 2b4358d2..351fccd2 100755 --- a/models.py +++ b/models.py @@ -159,7 +159,7 @@ class YOLOLayer(nn.Module): io = p.clone() # inference output io[..., 0:2] = torch.sigmoid(io[..., 0:2]) + self.grid_xy # xy io[..., 2:4] = torch.exp(io[..., 2:4]) * self.anchor_wh # wh yolo method - # io[..., 2:4] = ((torch.sigmoid(io[..., 2:4]) * 2) ** 2) * self.anchor_wh # wh power method + # io[..., 2:4] = ((torch.sigmoid(io[..., 2:4]) * 2) ** 3) * self.anchor_wh # wh power method io[..., 4:] = torch.sigmoid(io[..., 4:]) # p_conf, p_cls # io[..., 5:] = F.softmax(io[..., 5:], dim=4) # p_cls io[..., :4] *= self.stride From d171596183adbbe1eb03a5cef9e72324262f8178 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 6 Apr 2019 16:14:16 +0200 Subject: [PATCH 0614/2595] updates --- utils/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 5b4e9c76..e0041069 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -278,7 +278,8 @@ def compute_loss(p, targets): # predictions, targets tconf[b, a, gj, gi] = 1 # conf lxy += (k * 8) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss - lwh += (k * 4) * MSE(pi[..., 2:4], twh[i]) # wh loss + lwh += (k * 4) * MSE(torch.sigmoid(pi[..., 2:4]), twh[i]) # wh yolo loss + # lwh += (k * 4) * MSE(torch.sigmoid(pi[..., 2:4]), twh[i]) # wh power loss lcls += (k * 1) * CE(pi[..., 5:], tcls[i]) # class_conf loss # pos_weight = FT([gp[i] / min(gp) * 4.]) From c948629fd34ca851be39b4a3d331746a72868f45 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 6 Apr 2019 16:16:40 +0200 Subject: [PATCH 0615/2595] updates --- utils/gcp.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 95efe9fa..19785dc2 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -30,7 +30,7 @@ python3 test.py --save-json # Git pull git pull https://github.com/ultralytics/yolov3 # master -git pull https://github.com/ultralytics/yolov3 map_update # branch +git pull https://github.com/ultralytics/yolov3 test # branch # Test Darknet training python3 test.py --weights ../darknet/backup/yolov3.backup @@ -46,13 +46,12 @@ wget https://storage.googleapis.com/ultralytics/yolov3/best_v1_0.pt -O weights/b # Debug/Development sudo rm -rf yolov3 git clone https://github.com/ultralytics/yolov3 # master -# git clone -b hyperparameter_search --depth 1 https://github.com/ultralytics/yolov3 hyperparameter_search # branch +# git clone -b test --depth 1 https://github.com/ultralytics/yolov3 yolov3_test # branch cp -r weights yolov3 cp -r cocoapi/PythonAPI/pycocotools yolov3 cd yolov3 -git pull https://github.com/ultralytics/yolov3 #hyperparameter_search # branch -python3 train.py --data-cfg data/coco_1cls.data +git pull https://github.com/ultralytics/yolov3 python3 train.py --data-cfg data/coco_1img.data From 287ad43c58b07c5df4c57234acc4b7a5764a8ac4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 6 Apr 2019 17:06:37 +0200 Subject: [PATCH 0616/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 89a3ea06..3abe8303 100644 --- a/test.py +++ b/test.py @@ -47,7 +47,7 @@ def test( dataset = LoadImagesAndLabels(test_path, img_size=img_size) dataloader = DataLoader(dataset, batch_size=batch_size, - num_workers=0, + num_workers=4, pin_memory=False, collate_fn=dataset.collate_fn) From 1d49e665801a9bf1e42d3a6cfac2f7274e4d0d79 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 6 Apr 2019 20:33:58 +0200 Subject: [PATCH 0617/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 3abe8303..30c6f152 100644 --- a/test.py +++ b/test.py @@ -173,7 +173,7 @@ if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco_10img.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') From 22ae1f7beef431d1478b987deb9727734830ed76 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 8 Apr 2019 14:06:36 +0200 Subject: [PATCH 0618/2595] Update README.md --- README.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f5ccd685..3049d2f5 100755 --- a/README.md +++ b/README.md @@ -2,11 +2,17 @@ v2.2 v3.0 - -

-

- -

+ + + + +
+ +

+ + + +

From 34d083e6e8754764433dccf0ef045aff4dc7ba2e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 8 Apr 2019 14:08:30 +0200 Subject: [PATCH 0619/2595] Update README.md --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 3049d2f5..8ef5c35a 100755 --- a/README.md +++ b/README.md @@ -6,8 +6,6 @@ -
-

From 3825e99ee36bd237d11f702af93a2acba4496c9b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 8 Apr 2019 15:41:14 +0200 Subject: [PATCH 0620/2595] updates --- utils/torch_utils.py | 28 +++++++++++++++------------- utils/utils.py | 2 +- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index a4a26fd4..52c64261 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -8,19 +8,21 @@ def init_seeds(seed=0): def select_device(force_cpu=False): - if force_cpu: - cuda = False - device = torch.device('cpu') - else: - cuda = torch.cuda.is_available() - device = torch.device('cuda:0' if cuda else 'cpu') + cuda = False if force_cpu else torch.cuda.is_available() + device = torch.device('cuda:0' if cuda else 'cpu') - if torch.cuda.device_count() > 1: - device = torch.device('cuda' if cuda else 'cpu') - print('Found %g GPUs' % torch.cuda.device_count()) - # print('Multi-GPU Issue: https://github.com/ultralytics/yolov3/issues/21') - # torch.cuda.set_device(0) # OPTIONAL: Set your GPU if multiple available - # print('Using ', torch.cuda.device_count(), ' GPUs') + if not cuda: + print('Using CPU') + if cuda: + c = 1024 ** 2 # bytes to MB + ng = torch.cuda.device_count() + x = [torch.cuda.get_device_properties(i) for i in range(ng)] + print("Using CUDA device0 _CudaDeviceProperties(name='%s', total_memory=%dMB)" % + (x[0].name, x[0].total_memory / c)) + if ng > 0: + # torch.cuda.set_device(0) # OPTIONAL: Set GPU ID + for i in range(1, ng): + print(" device%g _CudaDeviceProperties(name='%s', total_memory=%dMB)" % + (i, x[i].name, x[i].total_memory / c)) - print('Using %s %s\n' % (device.type, torch.cuda.get_device_properties(0) if cuda else '')) return device diff --git a/utils/utils.py b/utils/utils.py index e0041069..4e597fdd 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -11,7 +11,7 @@ import torch.nn as nn from utils import torch_utils -matplotlib.rc('font', **{'family': 'normal', 'size': 11}) +matplotlib.rc('font', **{'family': 'normal', 'size': 12}) # Set printoptions torch.set_printoptions(linewidth=1320, precision=5, profile='long') From e19b0effb201c50a4cf307b0044b0cdb099230a6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 8 Apr 2019 23:45:52 +0200 Subject: [PATCH 0621/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 2d3cf8b2..50b418cf 100644 --- a/train.py +++ b/train.py @@ -53,7 +53,7 @@ def train( if resume: # Load previously saved model if transfer: # Transfer learning - chkpt = torch.load(weights + 'yolov3-spp.pt', map_location=device) + chkpt = torch.load(weights + 'yolov3.pt', map_location=device) model.load_state_dict({k: v for k, v in chkpt['model'].items() if v.numel() > 1 and v.shape[0] != 255}, strict=False) for p in model.parameters(): From 11366774e2a821dfcc281ee800b68141d989344f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 9 Apr 2019 11:05:45 +0200 Subject: [PATCH 0622/2595] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8ef5c35a..dc7dac59 100755 --- a/README.md +++ b/README.md @@ -48,8 +48,10 @@ Python 3.7 or later with the following `pip3 install -U -r requirements.txt` pac Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. Default training settings produce loss plots below, with **training speed of 0.6 s/batch on a 1080 Ti (18 epochs/day)** or 0.45 s/batch on a 2080 Ti. +Here we see training results from `coco_1img.data`, `coco_10img.data` and `coco_100img.data`, 3 example files available in the `data/` folder, which train and test on the first 1, 10 and 100 images of the coco2014 trainval dataset. + `from utils import utils; utils.plot_results()` -![Alt](https://user-images.githubusercontent.com/26833433/53494085-3251aa00-3a9d-11e9-8af7-8c08cf40d70b.png "train.py results") +![results](https://user-images.githubusercontent.com/26833433/55669383-df76c980-5876-11e9-9806-691bd507ee17.jpg) ## Image Augmentation From 05881d07304629112bb67bec8c0095d4f21356f5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 9 Apr 2019 11:38:16 +0200 Subject: [PATCH 0623/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 4e597fdd..7b7e5108 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -11,7 +11,7 @@ import torch.nn as nn from utils import torch_utils -matplotlib.rc('font', **{'family': 'normal', 'size': 12}) +matplotlib.rc('font', **{'size': 12}) # Set printoptions torch.set_printoptions(linewidth=1320, precision=5, profile='long') @@ -278,7 +278,7 @@ def compute_loss(p, targets): # predictions, targets tconf[b, a, gj, gi] = 1 # conf lxy += (k * 8) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss - lwh += (k * 4) * MSE(torch.sigmoid(pi[..., 2:4]), twh[i]) # wh yolo loss + lwh += (k * 4) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss # lwh += (k * 4) * MSE(torch.sigmoid(pi[..., 2:4]), twh[i]) # wh power loss lcls += (k * 1) * CE(pi[..., 5:], tcls[i]) # class_conf loss From 26b115c306d31563b66333ad1f6253e5ec5f687c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 9 Apr 2019 12:24:01 +0200 Subject: [PATCH 0624/2595] updates --- test.py | 4 ++++ train.py | 14 ++++---------- utils/utils.py | 15 +++++++++++++++ 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/test.py b/test.py index 30c6f152..98a53e34 100644 --- a/test.py +++ b/test.py @@ -61,6 +61,10 @@ def test( targets = targets.to(device) imgs = imgs.to(device) + # Plot images with bounding boxes + if batch_i == 0 and not os.path.exists('test_batch0.jpg'): + plot_images(imgs=imgs, targets=targets, fname='test_batch0.jpg') + # Run model inf_out, train_out = model(imgs) # inference and training outputs diff --git a/train.py b/train.py index 50b418cf..58792870 100644 --- a/train.py +++ b/train.py @@ -104,6 +104,8 @@ def train( model_info(model) nB = len(dataloader) n_burnin = min(round(nB / 5 + 1), 1000) # burn-in batches + os.remove('train_batch0.jpg') if os.path.exists('train_batch0.jpg') else None + os.remove('test_batch0.jpg') if os.path.exists('test_batch0.jpg') else None for epoch in range(start_epoch, epochs): model.train() print(('\n%8s%12s' + '%10s' * 7) % ('Epoch', 'Batch', 'xy', 'wh', 'conf', 'cls', 'total', 'nTargets', 'time')) @@ -127,16 +129,8 @@ def train( continue # Plot images with bounding boxes - plot_images = False - if plot_images: - fig = plt.figure(figsize=(10, 10)) - for ip in range(len(imgs)): - boxes = xywh2xyxy(targets[targets[:, 0] == ip, 2:6]).numpy().T * img_size - plt.subplot(4, 4, ip + 1).imshow(imgs[ip].numpy().transpose(1, 2, 0)) - plt.plot(boxes[[0, 2, 2, 0, 0]], boxes[[1, 1, 3, 3, 1]], '.-') - plt.axis('off') - fig.tight_layout() - fig.savefig('batch_%g.jpg' % i, dpi=fig.dpi) + if epoch == 0 and i == 0: + plot_images(imgs=imgs, targets=targets, fname='train_batch0.jpg') # SGD burn-in if epoch == 0 and i <= n_burnin: diff --git a/utils/utils.py b/utils/utils.py index 7b7e5108..b55680a2 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -487,6 +487,21 @@ def plot_wh_methods(): # from utils.utils import *; plot_wh_methods() fig.savefig('comparison.jpg', dpi=fig.dpi) +def plot_images(imgs, targets, fname='images.jpg'): + fig = plt.figure(figsize=(10, 10)) + img_size = imgs.shape[3] + bs = imgs.shape[0] # batch size + sp = np.ceil(bs ** 0.5) # subplots + + for i in range(bs): + boxes = xywh2xyxy(targets[targets[:, 0] == i, 2:6]).numpy().T * img_size + plt.subplot(sp, sp, i + 1).imshow(imgs[i].numpy().transpose(1, 2, 0)) + plt.plot(boxes[[0, 2, 2, 0, 0]], boxes[[1, 1, 3, 3, 1]], '.-') + plt.axis('off') + fig.tight_layout() + fig.savefig(fname, dpi=fig.dpi) + + def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() # Plot training results files 'results*.txt' # import os; os.system('wget https://storage.googleapis.com/ultralytics/yolov3/results_v3.txt') From 4b7eb0aec9d1de901c294d9667105b65e80cb21f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 9 Apr 2019 12:24:32 +0200 Subject: [PATCH 0625/2595] updates --- utils/utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/utils.py b/utils/utils.py index b55680a2..44cfd126 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -488,6 +488,7 @@ def plot_wh_methods(): # from utils.utils import *; plot_wh_methods() def plot_images(imgs, targets, fname='images.jpg'): + # Plots training images overlaid with targets fig = plt.figure(figsize=(10, 10)) img_size = imgs.shape[3] bs = imgs.shape[0] # batch size From 2e74f4be417cf667c2b81bdbd61df5d9f1b7f59e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 9 Apr 2019 12:32:26 +0200 Subject: [PATCH 0626/2595] updates --- utils/utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/utils.py b/utils/utils.py index 44cfd126..a6c15c6d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -501,6 +501,7 @@ def plot_images(imgs, targets, fname='images.jpg'): plt.axis('off') fig.tight_layout() fig.savefig(fname, dpi=fig.dpi) + plt.close() def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() From 3e85a4191a9f7b63081a74761d0b6987d284aea9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 9 Apr 2019 13:19:17 +0200 Subject: [PATCH 0627/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index a6c15c6d..e13d095b 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -496,7 +496,7 @@ def plot_images(imgs, targets, fname='images.jpg'): for i in range(bs): boxes = xywh2xyxy(targets[targets[:, 0] == i, 2:6]).numpy().T * img_size - plt.subplot(sp, sp, i + 1).imshow(imgs[i].numpy().transpose(1, 2, 0)) + plt.subplot(sp, sp, i + 1).imshow(imgs[i].cpu().numpy().transpose(1, 2, 0)) plt.plot(boxes[[0, 2, 2, 0, 0]], boxes[[1, 1, 3, 3, 1]], '.-') plt.axis('off') fig.tight_layout() From d8cbf9b7a7b129d4cf8530213d9006458e9ab700 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 9 Apr 2019 13:21:39 +0200 Subject: [PATCH 0628/2595] updates --- utils/utils.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index e13d095b..be5f8f99 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -489,14 +489,17 @@ def plot_wh_methods(): # from utils.utils import *; plot_wh_methods() def plot_images(imgs, targets, fname='images.jpg'): # Plots training images overlaid with targets + imgs = imgs.cpu().numpy() + targets = targets.cpu().numpy() + fig = plt.figure(figsize=(10, 10)) img_size = imgs.shape[3] bs = imgs.shape[0] # batch size sp = np.ceil(bs ** 0.5) # subplots for i in range(bs): - boxes = xywh2xyxy(targets[targets[:, 0] == i, 2:6]).numpy().T * img_size - plt.subplot(sp, sp, i + 1).imshow(imgs[i].cpu().numpy().transpose(1, 2, 0)) + boxes = xywh2xyxy(targets[targets[:, 0] == i, 2:6]).T * img_size + plt.subplot(sp, sp, i + 1).imshow(imgs[i].transpose(1, 2, 0)) plt.plot(boxes[[0, 2, 2, 0, 0]], boxes[[1, 1, 3, 3, 1]], '.-') plt.axis('off') fig.tight_layout() From 2ca4c9aaecf49b4411a654990762e220962777e6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 9 Apr 2019 13:39:17 +0200 Subject: [PATCH 0629/2595] updates --- utils/utils.py | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index be5f8f99..e501442b 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -72,20 +72,6 @@ def coco80_to_coco91_class(): # converts 80-index (val2014) to 91-index (paper) return x -def plot_one_box(x, img, color=None, label=None, line_thickness=None): - # Plots one bounding box on image img - tl = line_thickness or round(0.002 * max(img.shape[0:2])) + 1 # line thickness - color = color or [random.randint(0, 255) for _ in range(3)] - c1, c2 = (int(x[0]), int(x[1])), (int(x[2]), int(x[3])) - cv2.rectangle(img, c1, c2, color, thickness=tl) - if label: - tf = max(tl - 1, 1) # font thickness - t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, thickness=tf)[0] - c2 = c1[0] + t_size[0], c1[1] - t_size[1] - 3 - cv2.rectangle(img, c1, c2, color, -1) # filled - cv2.putText(img, label, (c1[0], c1[1] - 2), 0, tl / 3, [225, 255, 255], thickness=tf, lineType=cv2.LINE_AA) - - def weights_init_normal(m): classname = m.__class__.__name__ if classname.find('Conv') != -1: @@ -467,6 +453,22 @@ def coco_only_people(path='../coco/labels/val2014/'): print(labels.shape[0], file) +# Plotting functions --------------------------------------------------------------------------------------------------- + +def plot_one_box(x, img, color=None, label=None, line_thickness=None): + # Plots one bounding box on image img + tl = line_thickness or round(0.002 * max(img.shape[0:2])) + 1 # line thickness + color = color or [random.randint(0, 255) for _ in range(3)] + c1, c2 = (int(x[0]), int(x[1])), (int(x[2]), int(x[3])) + cv2.rectangle(img, c1, c2, color, thickness=tl) + if label: + tf = max(tl - 1, 1) # font thickness + t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, thickness=tf)[0] + c2 = c1[0] + t_size[0], c1[1] - t_size[1] - 3 + cv2.rectangle(img, c1, c2, color, -1) # filled + cv2.putText(img, label, (c1[0], c1[1] - 2), 0, tl / 3, [225, 255, 255], thickness=tf, lineType=cv2.LINE_AA) + + def plot_wh_methods(): # from utils.utils import *; plot_wh_methods() # Compares the two methods for width-height anchor multiplication # https://github.com/ultralytics/yolov3/issues/168 @@ -484,7 +486,7 @@ def plot_wh_methods(): # from utils.utils import *; plot_wh_methods() plt.ylabel('output') plt.legend() fig.tight_layout() - fig.savefig('comparison.jpg', dpi=fig.dpi) + fig.savefig('comparison.png', dpi=300) def plot_images(imgs, targets, fname='images.jpg'): @@ -503,7 +505,7 @@ def plot_images(imgs, targets, fname='images.jpg'): plt.plot(boxes[[0, 2, 2, 0, 0]], boxes[[1, 1, 3, 3, 1]], '.-') plt.axis('off') fig.tight_layout() - fig.savefig(fname, dpi=fig.dpi) + fig.savefig(fname, dpi=300) plt.close() @@ -524,4 +526,4 @@ def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() if i == 0: plt.legend() fig.tight_layout() - fig.savefig('results.jpg', dpi=fig.dpi) + fig.savefig('results.png', dpi=300) From 7709e8aa721fa2286bcadc30e945a66500c279bb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 9 Apr 2019 16:28:14 +0200 Subject: [PATCH 0630/2595] updates --- utils/utils.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index e501442b..f98917a4 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -319,13 +319,14 @@ def build_targets(model, targets): # Class tcls.append(c) - assert c.max() <= layer.nC, 'Target classes exceed model classes' + if c.shape[0]: + assert c.max() <= layer.nC, 'Target classes exceed model classes' return txy, twh, tcls, indices # @profile -def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.4): +def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): """ Removes detections with lower object confidence score than 'conf_thres' Non-Maximum Suppression to further filter detections. From bfc77ec88ffc7c7739c9439feea35e81233f8bfc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 10 Apr 2019 13:51:33 +0200 Subject: [PATCH 0631/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dc7dac59..6e9f5913 100755 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ Python 3.7 or later with the following `pip3 install -U -r requirements.txt` pac **Resume Training:** Run `train.py --resume` resumes training from the latest checkpoint `weights/latest.pt`. -Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. Default training settings produce loss plots below, with **training speed of 0.6 s/batch on a 1080 Ti (18 epochs/day)** or 0.45 s/batch on a 2080 Ti. +Each epoch trains on 117,263 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. Default training settings produce loss plots below, with **training speed of 0.6 s/batch on a 1080 Ti (18 epochs/day)** or 0.45 s/batch on a 2080 Ti. Here we see training results from `coco_1img.data`, `coco_10img.data` and `coco_100img.data`, 3 example files available in the `data/` folder, which train and test on the first 1, 10 and 100 images of the coco2014 trainval dataset. From d65d64bb7e28b640582febf0b65fb41804e28156 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 10 Apr 2019 16:17:08 +0200 Subject: [PATCH 0632/2595] updates --- test.py | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/test.py b/test.py index 98a53e34..0e04be8e 100644 --- a/test.py +++ b/test.py @@ -81,14 +81,13 @@ def test( # Statistics per image for si, pred in enumerate(output): labels = targets[targets[:, 0] == si, 1:] - correct, detected = [], [] - tcls = torch.Tensor() + nl = len(labels) + tcls = labels[:, 0].tolist() if nl else [] # target class seen += 1 if pred is None: - if len(labels): - tcls = labels[:, 0].cpu() # target classes - stats.append((correct, torch.Tensor(), torch.Tensor(), tcls)) + if nl: + stats.append(([], torch.Tensor(), torch.Tensor(), tcls)) continue # Append to pycocotools JSON dictionary @@ -107,14 +106,21 @@ def test( 'score': float(d[4]) }) - if len(labels): - # Extract target boxes as (x1, y1, x2, y2) + # Assign all predictions as incorrect + correct = [0] * len(pred) + if nl: + detected = [] tbox = xywh2xyxy(labels[:, 1:5]) * img_size # target boxes - tcls = labels[:, 0] # target classes - for *pbox, pconf, pcls_conf, pcls in pred: - if pcls not in tcls: - correct.append(0) + # Search for correct predictions + for i, (*pbox, pconf, pcls_conf, pcls) in enumerate(pred): + + # Break if all targets already located in image + if len(detected) == nl: + break + + # Continue if predicted class not among image classes + if pcls.item() not in tcls: continue # Best iou, index between pred and targets @@ -122,16 +128,11 @@ def test( # If iou > threshold and class is correct mark as correct if iou > iou_thres and bi not in detected: - correct.append(1) + correct[i] = 1 detected.append(bi) - else: - correct.append(0) - else: - # If no labels add number of detections as incorrect - correct.extend([0] * len(pred)) - # Append Statistics (correct, conf, pcls, tcls) - stats.append((correct, pred[:, 4].cpu(), pred[:, 6].cpu(), tcls.cpu())) + # Append statistics (correct, conf, pcls, tcls) + stats.append((correct, pred[:, 4].cpu(), pred[:, 6].cpu(), tcls)) # Compute statistics stats_np = [np.concatenate(x, 0) for x in list(zip(*stats))] @@ -177,7 +178,7 @@ if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco_10img.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') From a6a40e0592cc13de368646ca60eb3b3ed306d99e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 10 Apr 2019 16:23:10 +0200 Subject: [PATCH 0633/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 0e04be8e..25ce611e 100644 --- a/test.py +++ b/test.py @@ -178,7 +178,7 @@ if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco_10img.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') From f0b4f9f4fb7af71076cc91c48cdf2c9043395ad8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 10 Apr 2019 16:39:15 +0200 Subject: [PATCH 0634/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 30f37be1..ae30dbb9 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -122,7 +122,7 @@ class LoadWebcam: # for inference img = np.ascontiguousarray(img, dtype=np.float32) # uint8 to float32 img /= 255.0 # 0 - 255 to 0.0 - 1.0 - return img_path, img, img0 + return img_path, img, img0, None def __len__(self): return 0 From 9c7dc10b7fecee46e1c54e517c7722faedb93a15 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 10 Apr 2019 16:51:58 +0200 Subject: [PATCH 0635/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index f98917a4..dbe53a1d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -314,8 +314,8 @@ def build_targets(model, targets): txy.append(gxy - gxy.floor()) # Width and height - twh.append(torch.log(gwh / layer.anchor_vec[a])) # yolo method - # twh.append((gwh / layer.anchor_vec[a]) ** (1 / 3) / 2) # power method + twh.append(torch.log(gwh / layer.anchor_vec[a])) # wh yolo method + # twh.append((gwh / layer.anchor_vec[a]) ** (1 / 3) / 2) # wh power method # Class tcls.append(c) From 835f97522875adb94b51aa6229aa1661e5373b87 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 11 Apr 2019 12:21:33 +0200 Subject: [PATCH 0636/2595] updates --- utils/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index dbe53a1d..23a9cff6 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -519,7 +519,8 @@ def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() 'Test Loss'] for f in sorted(glob.glob('results*.txt')): results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 9, 10, 11, 12, 13]).T - x = range(start, stop if stop else results.shape[1]) + n = results.shape[1] # number of rows + x = range(start, min(stop, n) if stop else n) for i in range(10): plt.subplot(2, 5, i + 1) plt.plot(x, results[i, x].clip(max=500), marker='.', label=f) From cbd5347cc393a0176c6b027e42f9ba3f44bd9ada Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 11 Apr 2019 12:41:07 +0200 Subject: [PATCH 0637/2595] updates --- models.py | 1 + train.py | 3 +-- utils/utils.py | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/models.py b/models.py index 351fccd2..2d88c47d 100755 --- a/models.py +++ b/models.py @@ -178,6 +178,7 @@ class Darknet(nn.Module): self.module_defs[0]['cfg'] = cfg_path self.module_defs[0]['height'] = img_size self.hyperparams, self.module_list = create_modules(self.module_defs) + self.yolo_layers = get_yolo_layers(self) def forward(self, x, var=None): img_size = x.shape[-1] diff --git a/train.py b/train.py index 58792870..c00ad68c 100644 --- a/train.py +++ b/train.py @@ -48,8 +48,7 @@ def train( cutoff = -1 # backbone reaches to cutoff layer start_epoch = 0 best_loss = float('inf') - yl = get_yolo_layers(model) # yolo layers - nf = int(model.module_defs[yl[0] - 1]['filters']) # yolo layer size (i.e. 255) + nf = int(model.module_defs[model.yolo_layers[0] - 1]['filters']) # yolo layer size (i.e. 255) if resume: # Load previously saved model if transfer: # Transfer learning diff --git a/utils/utils.py b/utils/utils.py index 23a9cff6..65d3adec 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -288,8 +288,8 @@ def build_targets(model, targets): model = model.module txy, twh, tcls, indices = [], [], [], [] - for i, layer in enumerate(get_yolo_layers(model)): - layer = model.module_list[layer][0] + for i in model.yolo_layers: + layer = model.module_list[i][0] # iou of targets-anchors gwh = targets[:, 4:6] * layer.nG @@ -523,7 +523,7 @@ def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() x = range(start, min(stop, n) if stop else n) for i in range(10): plt.subplot(2, 5, i + 1) - plt.plot(x, results[i, x].clip(max=500), marker='.', label=f) + plt.plot(x, results[i, x].clip(max=500), marker='.', label=f.replace('.txt','')) plt.title(s[i]) if i == 0: plt.legend() From e6e6fb6f5727aea4586fdeb9797e5d6521c0422f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 11 Apr 2019 12:47:35 +0200 Subject: [PATCH 0638/2595] updates --- test.py | 2 +- utils/gcp.sh | 5 +++-- utils/utils.py | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/test.py b/test.py index 25ce611e..efb260aa 100644 --- a/test.py +++ b/test.py @@ -176,7 +176,7 @@ def test( if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') - parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') + parser.add_argument('--batch-size', type=int, default=3, help='size of each image batch') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') diff --git a/utils/gcp.sh b/utils/gcp.sh index 19785dc2..3aed2db7 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -10,8 +10,8 @@ sudo reboot now # Re-clone sudo rm -rf yolov3 -# git clone https://github.com/ultralytics/yolov3 # master -git clone -b test --depth 1 https://github.com/ultralytics/yolov3 yolov3_test # branch +git clone https://github.com/ultralytics/yolov3 # master +# git clone -b test --depth 1 https://github.com/ultralytics/yolov3 yolov3_test # branch cp -r weights yolov3 cp -r cocoapi/PythonAPI/pycocotools yolov3 cd yolov3 @@ -50,6 +50,7 @@ git clone https://github.com/ultralytics/yolov3 # master cp -r weights yolov3 cp -r cocoapi/PythonAPI/pycocotools yolov3 cd yolov3 +python3 test.py --save-json git pull https://github.com/ultralytics/yolov3 python3 train.py --data-cfg data/coco_1img.data diff --git a/utils/utils.py b/utils/utils.py index 65d3adec..91ac10cf 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -284,7 +284,7 @@ def compute_loss(p, targets): # predictions, targets def build_targets(model, targets): # targets = [image, class, x, y, w, h] - if isinstance(model, nn.parallel.DistributedDataParallel): + if type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel): model = model.module txy, twh, tcls, indices = [], [], [], [] @@ -523,7 +523,7 @@ def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() x = range(start, min(stop, n) if stop else n) for i in range(10): plt.subplot(2, 5, i + 1) - plt.plot(x, results[i, x].clip(max=500), marker='.', label=f.replace('.txt','')) + plt.plot(x, results[i, x].clip(max=500), marker='.', label=f.replace('.txt', '')) plt.title(s[i]) if i == 0: plt.legend() From 53b98922167ce03cf7f35d474d0c58dda236b5fc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 11 Apr 2019 12:47:58 +0200 Subject: [PATCH 0639/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index efb260aa..25ce611e 100644 --- a/test.py +++ b/test.py @@ -176,7 +176,7 @@ def test( if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') - parser.add_argument('--batch-size', type=int, default=3, help='size of each image batch') + parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') From c9a55a269b7dacb6c13bb167b10676b1798dea34 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 11 Apr 2019 15:29:31 +0200 Subject: [PATCH 0640/2595] updates --- utils/utils.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 91ac10cf..fa24b07f 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -256,10 +256,11 @@ def compute_loss(p, targets): # predictions, targets for i, pi0 in enumerate(p): # layer i predictions, i b, a, gj, gi = indices[i] # image, anchor, gridx, gridy tconf = torch.zeros_like(pi0[..., 0]) # conf + nt = len(b) # number of targets # Compute losses - k = 1 # nT / bs - if len(b) > 0: + k = 1 # nt / bs + if nt: pi = pi0[b, a, gj, gi] # predictions closest to anchors tconf[b, a, gj, gi] = 1 # conf From d5db50df8ea3a5fab183821509dcfe1849b8c889 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 11 Apr 2019 18:26:52 +0200 Subject: [PATCH 0641/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 25ce611e..5536eab0 100644 --- a/test.py +++ b/test.py @@ -171,7 +171,7 @@ def test( map = cocoEval.stats[1] # update mAP to pycocotools mAP # Return results - return mp, mr, map, mf1, loss + return mp, mr, map, mf1, loss / len(dataloader) if __name__ == '__main__': From bce3dd03e82ec0c5c182643e6a047b219251fa03 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 12 Apr 2019 14:00:16 +0200 Subject: [PATCH 0642/2595] updates --- models.py | 2 +- train.py | 3 +-- utils/utils.py | 9 ++++++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/models.py b/models.py index 2d88c47d..d36640a0 100755 --- a/models.py +++ b/models.py @@ -33,7 +33,7 @@ def create_modules(module_defs): if bn: modules.add_module('batch_norm_%d' % i, nn.BatchNorm2d(filters)) if module_def['activation'] == 'leaky': - modules.add_module('leaky_%d' % i, nn.LeakyReLU(0.1)) + modules.add_module('leaky_%d' % i, nn.LeakyReLU(0.1, inplace=True)) elif module_def['type'] == 'maxpool': kernel_size = int(module_def['size']) diff --git a/train.py b/train.py index c00ad68c..720e0b1e 100644 --- a/train.py +++ b/train.py @@ -49,7 +49,6 @@ def train( start_epoch = 0 best_loss = float('inf') nf = int(model.module_defs[model.yolo_layers[0] - 1]['filters']) # yolo layer size (i.e. 255) - if resume: # Load previously saved model if transfer: # Transfer learning chkpt = torch.load(weights + 'yolov3.pt', map_location=device) @@ -74,7 +73,7 @@ def train( else: cutoff = load_darknet_weights(model, weights + 'darknet53.conv.74') - # Set scheduler (reduce lr at epochs 218, 245, i.e. batches 400k, 450k) + # Scheduler (reduce lr at epochs 218, 245, i.e. batches 400k, 450k) scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[218, 245], gamma=0.1, last_epoch=start_epoch - 1) diff --git a/utils/utils.py b/utils/utils.py index fa24b07f..bfdddeef 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -326,7 +326,6 @@ def build_targets(model, targets): return txy, twh, tcls, indices -# @profile def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): """ Removes detections with lower object confidence score than 'conf_thres' @@ -383,6 +382,11 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): dc = pred[pred[:, -1] == c] # select class c dc = dc[:min(len(dc), 100)] # limit to first 100 boxes: https://github.com/ultralytics/yolov3/issues/117 + # No NMS required if only 1 prediction + if len(dc) == 1: + det_max.append(dc) + continue + # Non-maximum suppression if nms_style == 'OR': # default # METHOD1 @@ -410,6 +414,9 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): elif nms_style == 'MERGE': # weighted mixture box while len(dc): + if len(dc) == 1: + det_max.append(dc) + break i = bbox_iou(dc[0], dc) > nms_thres # iou with other boxes weights = dc[i, 4:5] dc[0, :4] = (weights * dc[i, :4]).sum(0) / weights.sum() From 24f86b008ade3f9e8240b61d558b8aea73f776ed Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 12 Apr 2019 14:24:51 +0200 Subject: [PATCH 0643/2595] Update README.md --- README.md | 53 +++++++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 6e9f5913..6042076a 100755 --- a/README.md +++ b/README.md @@ -149,36 +149,36 @@ YOLOv3-608 | 57.9 (58.2) | 57.9 `YOLOv3-spp 608` | 60.7 | 60.6 ``` bash -sudo rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3 +git clone https://github.com/ultralytics/yolov3 # bash yolov3/data/get_coco_dataset.sh -sudo rm -rf cocoapi && git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 +git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 cd yolov3 -python3 test.py --save-json --conf-thres 0.001 --img-size 608 --batch-size 16 -Namespace(batch_size=16, cfg='cfg/yolov3.cfg', conf_thres=0.001, data_cfg='cfg/coco.data', img_size=608, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='weights/yolov3.weights') -Using cuda _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', major=7, minor=0, total_memory=16130MB, multi_processor_count=80) - Image Total P R mAP -Calculating mAP: 100%|█████████████████████████████████| 313/313 [08:54<00:00, 1.55s/it] - 5000 5000 0.0966 0.786 0.579 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.331 - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.582 - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.344 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.198 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.362 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.427 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.281 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.437 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.463 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.309 +python3 test.py --save-json --img-size 416 +Namespace(batch_size=32, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data_cfg='data/coco.data', img_size=416, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='weights/yolov3-spp.weights') +Using CUDA device0 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', total_memory=16130MB) + Class Images Targets P R mAP F1 +Calculating mAP: 100%|█████████████████████████████████████████| 157/157 [05:59<00:00, 1.71s/it] + all 5e+03 3.58e+04 0.109 0.773 0.57 0.186 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.335 + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.565 + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.349 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.151 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.360 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.493 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.280 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.432 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.458 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.255 Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.494 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.577 - -python3 test.py --weights weights/yolov3-spp.weights --cfg cfg/yolov3-spp.cfg --save-json --img-size 608 --batch-size 8 -Namespace(batch_size=8, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data_cfg='data/coco.data', img_size=608, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='weights/yolov3-spp.weights') -Using cuda _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', major=7, minor=0, total_memory=16130MB, multi_processor_count=80) - Image Total P R mAP -Calculating mAP: 100%|█████████████████████████████████| 625/625 [07:01<00:00, 1.56it/s] - 5000 5000 0.12 0.81 0.611 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.620 + +python3 test.py --save-json --img-size 608 --batch-size 16 +Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data_cfg='data/coco.data', img_size=608, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='weights/yolov3-spp.weights') +Using CUDA device0 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', total_memory=16130MB) + Class Images Targets P R mAP F1 +Computing mAP: 100%|█████████████████████████████████████████| 313/313 [06:11<00:00, 1.01it/s] + all 5e+03 3.58e+04 0.12 0.81 0.611 0.203 Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.366 Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.607 Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.386 @@ -191,6 +191,7 @@ Calculating mAP: 100%|███████████████████ Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.331 Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.517 Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.618 + ``` # Citation From 5ea92e7ee2ad73fe891e0586ac9bf5b0c35f84e1 Mon Sep 17 00:00:00 2001 From: IlyaOvodov <34230114+IlyaOvodov@users.noreply.github.com> Date: Fri, 12 Apr 2019 15:55:26 +0300 Subject: [PATCH 0644/2595] FIX: trainig fails if targets list is empty (#198) * FIX: trainig fails if targets list is empty * Update utils.py --- utils/utils.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index bfdddeef..cb2ea0ff 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -288,22 +288,23 @@ def build_targets(model, targets): if type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel): model = model.module + nt = len(targets) txy, twh, tcls, indices = [], [], [], [] for i in model.yolo_layers: layer = model.module_list[i][0] # iou of targets-anchors + t, a = targets, [] gwh = targets[:, 4:6] * layer.nG - iou = [wh_iou(x, gwh) for x in layer.anchor_vec] - iou, a = torch.stack(iou, 0).max(0) # best iou and anchor + if nt: + iou = [wh_iou(x, gwh) for x in layer.anchor_vec] + iou, a = torch.stack(iou, 0).max(0) # best iou and anchor - # reject below threshold ious (OPTIONAL, increases P, lowers R) - reject = True - if reject: - j = iou > 0.10 - t, a, gwh = targets[j], a[j], gwh[j] - else: - t = targets + # reject below threshold ious (OPTIONAL, increases P, lowers R) + reject = True + if reject: + j = iou > 0.10 + t, a, gwh = targets[j], a[j], gwh[j] # Indices b, c = t[:, :2].long().t() # target image, class @@ -320,7 +321,7 @@ def build_targets(model, targets): # Class tcls.append(c) - if c.shape[0]: + if nt: assert c.max() <= layer.nC, 'Target classes exceed model classes' return txy, twh, tcls, indices From 50df252c4b21540b5e878ced79f8d7959ced51d4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 12 Apr 2019 14:58:19 +0200 Subject: [PATCH 0645/2595] updates --- train.py | 5 ++--- utils/utils.py | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index 720e0b1e..06878e6c 100644 --- a/train.py +++ b/train.py @@ -121,10 +121,9 @@ def train( for i, (imgs, targets, _, _) in enumerate(dataloader): imgs = imgs.to(device) targets = targets.to(device) - nt = len(targets) - if nt == 0: # if no targets continue - continue + # if nt == 0: # if no targets continue + # continue # Plot images with bounding boxes if epoch == 0 and i == 0: diff --git a/utils/utils.py b/utils/utils.py index cb2ea0ff..d060b9c1 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -321,7 +321,7 @@ def build_targets(model, targets): # Class tcls.append(c) - if nt: + if c.shape[0]: assert c.max() <= layer.nC, 'Target classes exceed model classes' return txy, twh, tcls, indices From 95696d24c0474d58d0684188dfaa4bccb69c19be Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 12 Apr 2019 17:19:00 +0200 Subject: [PATCH 0646/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index d060b9c1..d2b07461 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -532,7 +532,7 @@ def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() x = range(start, min(stop, n) if stop else n) for i in range(10): plt.subplot(2, 5, i + 1) - plt.plot(x, results[i, x].clip(max=500), marker='.', label=f.replace('.txt', '')) + plt.plot(x, results[i, x].clip(max=None), marker='.', label=f.replace('.txt', '')) plt.title(s[i]) if i == 0: plt.legend() From f299d83f40bf264aed02257b87b82ba59b52b7ab Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 13 Apr 2019 16:02:45 +0200 Subject: [PATCH 0647/2595] updates --- train.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index 06878e6c..f4ce729c 100644 --- a/train.py +++ b/train.py @@ -97,6 +97,12 @@ def train( collate_fn=dataset.collate_fn, sampler=sampler) + # Mixed precision training https://github.com/NVIDIA/apex + mixed_precision = False + if mixed_precision: + from apex import amp + model, optimizer = amp.initialize(model, optimizer, opt_level='01') + # Start training t = time.time() model_info(model) @@ -145,7 +151,11 @@ def train( loss, loss_dict = compute_loss(pred, target_list) # Compute gradient - loss.backward() + if mixed_precision: + with amp.scale_loss(loss, optimizer) as scaled_loss: + scaled_loss.backward() + else: + loss.backward() # Accumulate gradient for x batches before optimizing if (i + 1) % accumulate == 0 or (i + 1) == nB: From 95f3d8e04356a7880c3b858c5c1608a6167f6e2b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 13 Apr 2019 20:11:08 +0200 Subject: [PATCH 0648/2595] updates --- utils/utils.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index d2b07461..54f248ff 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -352,11 +352,12 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): # shape_likelihood[:, c] = # multivariate_normal.pdf(x, mean=mat['class_mu'][c, :2], cov=mat['class_cov'][c, :2, :2]) - # Filter out confidence scores below threshold + # Multiply conf by class conf to get combined confidence class_conf, class_pred = pred[:, 5:].max(1) pred[:, 4] *= class_conf - i = (pred[:, 4] > conf_thres) & (pred[:, 2] > min_wh) & (pred[:, 3] > min_wh) + # Select only suitable predictions + i = (pred[:, 4] > conf_thres) & (pred[:, 2:4] > min_wh).all(1) & (torch.isnan(pred).any(1) == 0) pred = pred[i] # If none are remaining => process next image @@ -532,7 +533,7 @@ def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() x = range(start, min(stop, n) if stop else n) for i in range(10): plt.subplot(2, 5, i + 1) - plt.plot(x, results[i, x].clip(max=None), marker='.', label=f.replace('.txt', '')) + plt.plot(x, results[i, x], marker='.', label=f.replace('.txt', '')) plt.title(s[i]) if i == 0: plt.legend() From 947ee02115a1e9426dbdb631ddab885c49ae4f28 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 13 Apr 2019 20:32:29 +0200 Subject: [PATCH 0649/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index f4ce729c..76dba513 100644 --- a/train.py +++ b/train.py @@ -51,7 +51,7 @@ def train( nf = int(model.module_defs[model.yolo_layers[0] - 1]['filters']) # yolo layer size (i.e. 255) if resume: # Load previously saved model if transfer: # Transfer learning - chkpt = torch.load(weights + 'yolov3.pt', map_location=device) + chkpt = torch.load(weights + 'yolov3-spp.pt', map_location=device) model.load_state_dict({k: v for k, v in chkpt['model'].items() if v.numel() > 1 and v.shape[0] != 255}, strict=False) for p in model.parameters(): @@ -227,7 +227,7 @@ if __name__ == '__main__': parser.add_argument('--img-size', type=int, default=416, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') - parser.add_argument('--num-workers', type=int, default=4, help='number of Pytorch DataLoader workers') + parser.add_argument('--num-workers', type=int, default=0, help='number of Pytorch DataLoader workers') parser.add_argument('--dist-url', default='tcp://127.0.0.1:9999', type=str, help='distributed training init method') parser.add_argument('--rank', default=0, type=int, help='distributed training node rank') parser.add_argument('--world-size', default=1, type=int, help='number of nodes for distributed training') From aeca7f72c49c749584f5491ce8299abf39f58847 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 13 Apr 2019 20:38:00 +0200 Subject: [PATCH 0650/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 54f248ff..6b7949cf 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -265,7 +265,7 @@ def compute_loss(p, targets): # predictions, targets tconf[b, a, gj, gi] = 1 # conf lxy += (k * 8) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss - lwh += (k * 4) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss + lwh += (k * 1) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss # lwh += (k * 4) * MSE(torch.sigmoid(pi[..., 2:4]), twh[i]) # wh power loss lcls += (k * 1) * CE(pi[..., 5:], tcls[i]) # class_conf loss From 52464f5a0698abe87e25f4576ca8501750d23372 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 13 Apr 2019 20:40:49 +0200 Subject: [PATCH 0651/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 76dba513..bb1498da 100644 --- a/train.py +++ b/train.py @@ -227,7 +227,7 @@ if __name__ == '__main__': parser.add_argument('--img-size', type=int, default=416, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') - parser.add_argument('--num-workers', type=int, default=0, help='number of Pytorch DataLoader workers') + parser.add_argument('--num-workers', type=int, default=4, help='number of Pytorch DataLoader workers') parser.add_argument('--dist-url', default='tcp://127.0.0.1:9999', type=str, help='distributed training init method') parser.add_argument('--rank', default=0, type=int, help='distributed training node rank') parser.add_argument('--world-size', default=1, type=int, help='number of nodes for distributed training') From 09949cdafa88fd0d7fa85f776fa5b7ebf8bc6dbb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 14 Apr 2019 16:00:04 +0200 Subject: [PATCH 0652/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index bb1498da..ba134bc4 100644 --- a/train.py +++ b/train.py @@ -101,7 +101,7 @@ def train( mixed_precision = False if mixed_precision: from apex import amp - model, optimizer = amp.initialize(model, optimizer, opt_level='01') + model, optimizer = amp.initialize(model, optimizer, opt_level='O1') # Start training t = time.time() From 3c6b168a0a3b799962bb06586e4c84e507af5c85 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 14 Apr 2019 23:22:35 +0200 Subject: [PATCH 0653/2595] updates --- test.py | 2 +- train.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index 5536eab0..222f829a 100644 --- a/test.py +++ b/test.py @@ -15,7 +15,7 @@ def test( batch_size=16, img_size=416, iou_thres=0.5, - conf_thres=0.1, + conf_thres=0.001, nms_thres=0.5, save_json=False, model=None diff --git a/train.py b/train.py index ba134bc4..94e5e1e7 100644 --- a/train.py +++ b/train.py @@ -180,7 +180,7 @@ def train( # Calculate mAP with torch.no_grad(): - results = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size, model=model) + results = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size, model=model, conf_thres=0.1) # Write epoch results with open('results.txt', 'a') as file: From 1191dee71b0ef507bf4d95d2acfcc89555fb630c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Apr 2019 13:55:52 +0200 Subject: [PATCH 0654/2595] updates --- train.py | 15 +++++++-------- utils/utils.py | 11 ++--------- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/train.py b/train.py index 94e5e1e7..4dca56bc 100644 --- a/train.py +++ b/train.py @@ -123,7 +123,7 @@ def train( if int(name.split('.')[1]) < cutoff: # if layer < 75 p.requires_grad = False if epoch == 0 else True - mloss = defaultdict(float) # mean loss + mloss = torch.zeros(5).to(device) # mean losses for i, (imgs, targets, _, _) in enumerate(dataloader): imgs = imgs.to(device) targets = targets.to(device) @@ -148,7 +148,7 @@ def train( target_list = build_targets(model, targets) # Compute loss - loss, loss_dict = compute_loss(pred, target_list) + loss, loss_items = compute_loss(pred, target_list) # Compute gradient if mixed_precision: @@ -162,14 +162,13 @@ def train( optimizer.step() optimizer.zero_grad() - # Running epoch-means of tracked metrics - for key, val in loss_dict.items(): - mloss[key] = (mloss[key] * i + val) / (i + 1) + # Update running mean of tracked metrics + mloss = (mloss * i + loss_items) / (i + 1) + # Print batch results s = ('%8s%12s' + '%10.3g' * 7) % ( - '%g/%g' % (epoch, epochs - 1), '%g/%g' % (i, nB - 1), - mloss['xy'], mloss['wh'], mloss['conf'], mloss['cls'], - mloss['total'], nt, time.time() - t) + '%g/%g' % (epoch, epochs - 1), + '%g/%g' % (i, nB - 1), *mloss, nt, time.time() - t) t = time.time() print(s) diff --git a/utils/utils.py b/utils/utils.py index 6b7949cf..165a0f4b 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -1,6 +1,5 @@ import glob import random -from collections import defaultdict import cv2 import matplotlib @@ -244,7 +243,7 @@ def wh_iou(box1, box2): def compute_loss(p, targets): # predictions, targets - FT = torch.cuda.FloatTensor if p[0].is_cuda else torch.FloatTensor + FT = torch.cuda.Tensor if p[0].is_cuda else torch.Tensor lxy, lwh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]) txy, twh, tcls, indices = targets MSE = nn.MSELoss() @@ -274,13 +273,7 @@ def compute_loss(p, targets): # predictions, targets lconf += (k * 64) * BCE(pi0[..., 4], tconf) # obj_conf loss loss = lxy + lwh + lconf + lcls - # Add to dictionary - d = defaultdict(float) - losses = [loss.item(), lxy.item(), lwh.item(), lconf.item(), lcls.item()] - for k, v in zip(['total', 'xy', 'wh', 'conf', 'cls'], losses): - d[k] = v - - return loss, d + return loss, torch.cat((lxy, lwh, lconf, lcls, loss)).detach() def build_targets(model, targets): From 76bf9fceed0d16726bac0407fd2fb40cbb18a1cd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Apr 2019 13:57:07 +0200 Subject: [PATCH 0655/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 165a0f4b..7a584026 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -243,7 +243,7 @@ def wh_iou(box1, box2): def compute_loss(p, targets): # predictions, targets - FT = torch.cuda.Tensor if p[0].is_cuda else torch.Tensor + FT = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor lxy, lwh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]) txy, twh, tcls, indices = targets MSE = nn.MSELoss() From 00cc02ba915b79e9fe8a200f880a7d5bee78c998 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Apr 2019 13:58:48 +0200 Subject: [PATCH 0656/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 7a584026..4dd3c10f 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -265,7 +265,7 @@ def compute_loss(p, targets): # predictions, targets lxy += (k * 8) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss lwh += (k * 1) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss - # lwh += (k * 4) * MSE(torch.sigmoid(pi[..., 2:4]), twh[i]) # wh power loss + # lwh += (k * 1) * MSE(torch.sigmoid(pi[..., 2:4]), twh[i]) # wh power loss lcls += (k * 1) * CE(pi[..., 5:], tcls[i]) # class_conf loss # pos_weight = FT([gp[i] / min(gp) * 4.]) From d5c3853593a3e33d8847862e9aa9784a1f56083a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Apr 2019 14:45:43 +0200 Subject: [PATCH 0657/2595] Update README.md --- README.md | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 6042076a..163b2199 100755 --- a/README.md +++ b/README.md @@ -1,20 +1,31 @@ - - - + +
v2.2v3.0 - - - -

+

+ + + + - - -

+ + +
+ +
+ +
+ + + + + + + # Introduction This directory contains python software and an iOS App developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information please visit https://www.ultralytics.com. From 0ce635fb53eee4e781e409277738b7f486ac7d54 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Apr 2019 14:46:16 +0200 Subject: [PATCH 0658/2595] Update README.md --- README.md | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/README.md b/README.md index 163b2199..7a149011 100755 --- a/README.md +++ b/README.md @@ -16,16 +16,6 @@ - - - - - - - - - - # Introduction This directory contains python software and an iOS App developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information please visit https://www.ultralytics.com. From a06abce40bf30cf07df3fcb790355c29aa9777aa Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Apr 2019 18:19:45 +0200 Subject: [PATCH 0659/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 4dca56bc..dbf2231d 100644 --- a/train.py +++ b/train.py @@ -92,7 +92,7 @@ def train( dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=num_workers, - shuffle=False, + shuffle=True, pin_memory=False, collate_fn=dataset.collate_fn, sampler=sampler) From e3f0b0248cb17401dcc4bf15d1e3b481f7502157 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Apr 2019 18:48:18 +0200 Subject: [PATCH 0660/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index dbf2231d..4dca56bc 100644 --- a/train.py +++ b/train.py @@ -92,7 +92,7 @@ def train( dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=num_workers, - shuffle=True, + shuffle=False, pin_memory=False, collate_fn=dataset.collate_fn, sampler=sampler) From 54ebb2e5930db8d81a30430190d75a4044874471 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Apr 2019 19:25:36 +0200 Subject: [PATCH 0661/2595] pin_memory=True --- test.py | 2 +- train.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index 222f829a..686a8f5d 100644 --- a/test.py +++ b/test.py @@ -48,7 +48,7 @@ def test( dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=4, - pin_memory=False, + pin_memory=True, collate_fn=dataset.collate_fn) seen = 0 diff --git a/train.py b/train.py index 4dca56bc..5bce4adc 100644 --- a/train.py +++ b/train.py @@ -93,7 +93,7 @@ def train( batch_size=batch_size, num_workers=num_workers, shuffle=False, - pin_memory=False, + pin_memory=True, collate_fn=dataset.collate_fn, sampler=sampler) From b5ec9cb128a1f3f9717ebb46b71d5733d22952fb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 16 Apr 2019 12:49:34 +0200 Subject: [PATCH 0662/2595] updates --- utils/gcp.sh | 15 ++++++++++++--- utils/utils.py | 22 +++++++++++----------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 3aed2db7..13f9c685 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -50,9 +50,18 @@ git clone https://github.com/ultralytics/yolov3 # master cp -r weights yolov3 cp -r cocoapi/PythonAPI/pycocotools yolov3 cd yolov3 -python3 test.py --save-json -git pull https://github.com/ultralytics/yolov3 -python3 train.py --data-cfg data/coco_1img.data +mv ../utils.py utils + +rm results*.txt # WARNING: removes existing results +python3 train.py --nosave --data data/coco_1img.data && mv results.txt resultsn_1img.txt +python3 train.py --nosave --data data/coco_10img.data && mv results.txt resultsn_10img.txt +python3 train.py --nosave --data data/coco_100img.data && mv results.txt resultsn_100img.txt +python3 train.py --nosave --data data/coco_100img.data --transfer && mv results.txt resultsn_100imgTL.txt +# python3 train.py --nosave --data data/coco_1000img.data && mv results.txt results_1000img.txt +python3 -c "from utils import utils; utils.plot_results()" +gsutil cp results*.txt gs://ultralytics +gsutil cp results.png gs://ultralytics +sudo shutdown diff --git a/utils/utils.py b/utils/utils.py index 4dd3c10f..27b0d631 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -243,9 +243,10 @@ def wh_iou(box1, box2): def compute_loss(p, targets): # predictions, targets - FT = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor - lxy, lwh, lcls, lconf = FT([0]), FT([0]), FT([0]), FT([0]) + ft = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor + lxy, lwh, lcls, lconf = ft([0]), ft([0]), ft([0]), ft([0]) txy, twh, tcls, indices = targets + bs = p[0].shape[0] # batch size MSE = nn.MSELoss() CE = nn.CrossEntropyLoss() BCE = nn.BCEWithLogitsLoss() @@ -255,22 +256,21 @@ def compute_loss(p, targets): # predictions, targets for i, pi0 in enumerate(p): # layer i predictions, i b, a, gj, gi = indices[i] # image, anchor, gridx, gridy tconf = torch.zeros_like(pi0[..., 0]) # conf - nt = len(b) # number of targets # Compute losses - k = 1 # nt / bs - if nt: + k = 8.4875 * bs + if len(b): # number of targets pi = pi0[b, a, gj, gi] # predictions closest to anchors tconf[b, a, gj, gi] = 1 # conf - lxy += (k * 8) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss - lwh += (k * 1) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss - # lwh += (k * 1) * MSE(torch.sigmoid(pi[..., 2:4]), twh[i]) # wh power loss - lcls += (k * 1) * CE(pi[..., 5:], tcls[i]) # class_conf loss + lxy += (k * 0.07934) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss + lwh += (k * 0.01561) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss + # lwh += (k * 0.01561) * MSE(torch.sigmoid(pi[..., 2:4]), twh[i]) # wh power loss + lcls += (k * 0.02094) * CE(pi[..., 5:], tcls[i]) # class_conf loss - # pos_weight = FT([gp[i] / min(gp) * 4.]) + # pos_weight = ft([gp[i] / min(gp) * 4.]) # BCE = nn.BCEWithLogitsLoss(pos_weight=pos_weight) - lconf += (k * 64) * BCE(pi0[..., 4], tconf) # obj_conf loss + lconf += (k * 0.8841) * BCE(pi0[..., 4], tconf) # obj_conf loss loss = lxy + lwh + lconf + lcls return loss, torch.cat((lxy, lwh, lconf, lcls, loss)).detach() From a8fb235647e8b5923a718ccc5845fba5f2edb64d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 16 Apr 2019 12:55:23 +0200 Subject: [PATCH 0663/2595] updates --- utils/utils.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 27b0d631..d4f5c300 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -263,14 +263,14 @@ def compute_loss(p, targets): # predictions, targets pi = pi0[b, a, gj, gi] # predictions closest to anchors tconf[b, a, gj, gi] = 1 # conf - lxy += (k * 0.07934) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss - lwh += (k * 0.01561) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss - # lwh += (k * 0.01561) * MSE(torch.sigmoid(pi[..., 2:4]), twh[i]) # wh power loss - lcls += (k * 0.02094) * CE(pi[..., 5:], tcls[i]) # class_conf loss + lxy += (k * 0.07997) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss + lwh += (k * 0.007867) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss + # lwh += (k * 0.007867) * MSE(torch.sigmoid(pi[..., 2:4]), twh[i]) # wh power loss + lcls += (k * 0.02111) * CE(pi[..., 5:], tcls[i]) # class_conf loss # pos_weight = ft([gp[i] / min(gp) * 4.]) # BCE = nn.BCEWithLogitsLoss(pos_weight=pos_weight) - lconf += (k * 0.8841) * BCE(pi0[..., 4], tconf) # obj_conf loss + lconf += (k * 0.8911) * BCE(pi0[..., 4], tconf) # obj_conf loss loss = lxy + lwh + lconf + lcls return loss, torch.cat((lxy, lwh, lconf, lcls, loss)).detach() From 100f443722876d9f6a3f0fc830cba4704f3aeacf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 16 Apr 2019 13:03:24 +0200 Subject: [PATCH 0664/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index d4f5c300..0f839b7a 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -246,19 +246,19 @@ def compute_loss(p, targets): # predictions, targets ft = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor lxy, lwh, lcls, lconf = ft([0]), ft([0]), ft([0]), ft([0]) txy, twh, tcls, indices = targets - bs = p[0].shape[0] # batch size MSE = nn.MSELoss() CE = nn.CrossEntropyLoss() BCE = nn.BCEWithLogitsLoss() # Compute losses + # bs = p[0].shape[0] # batch size # gp = [x.numel() for x in tconf] # grid points for i, pi0 in enumerate(p): # layer i predictions, i b, a, gj, gi = indices[i] # image, anchor, gridx, gridy tconf = torch.zeros_like(pi0[..., 0]) # conf # Compute losses - k = 8.4875 * bs + k = 135.8 if len(b): # number of targets pi = pi0[b, a, gj, gi] # predictions closest to anchors tconf[b, a, gj, gi] = 1 # conf From a70c9f87a960d2e04405be85af95169fd3984e4f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 16 Apr 2019 13:17:48 +0200 Subject: [PATCH 0665/2595] updates --- utils/utils.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 0f839b7a..a3795e64 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -251,26 +251,26 @@ def compute_loss(p, targets): # predictions, targets BCE = nn.BCEWithLogitsLoss() # Compute losses - # bs = p[0].shape[0] # batch size + bs = p[0].shape[0] # batch size # gp = [x.numel() for x in tconf] # grid points for i, pi0 in enumerate(p): # layer i predictions, i b, a, gj, gi = indices[i] # image, anchor, gridx, gridy tconf = torch.zeros_like(pi0[..., 0]) # conf # Compute losses - k = 135.8 + k = 8.4875 * bs if len(b): # number of targets pi = pi0[b, a, gj, gi] # predictions closest to anchors tconf[b, a, gj, gi] = 1 # conf - lxy += (k * 0.07997) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss - lwh += (k * 0.007867) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss - # lwh += (k * 0.007867) * MSE(torch.sigmoid(pi[..., 2:4]), twh[i]) # wh power loss - lcls += (k * 0.02111) * CE(pi[..., 5:], tcls[i]) # class_conf loss + lxy += (k * 0.079756) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss + lwh += (k * 0.010461) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss + # lwh += (k * 0.010461) * MSE(torch.sigmoid(pi[..., 2:4]), twh[i]) # wh power loss + lcls += (k * 0.02105) * CE(pi[..., 5:], tcls[i]) # class_conf loss # pos_weight = ft([gp[i] / min(gp) * 4.]) # BCE = nn.BCEWithLogitsLoss(pos_weight=pos_weight) - lconf += (k * 0.8911) * BCE(pi0[..., 4], tconf) # obj_conf loss + lconf += (k * 0.88873) * BCE(pi0[..., 4], tconf) # obj_conf loss loss = lxy + lwh + lconf + lcls return loss, torch.cat((lxy, lwh, lconf, lcls, loss)).detach() From d4b80b82c30dfb7b249fe8f80a5a9f11acf1ba14 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 16 Apr 2019 14:01:55 +0200 Subject: [PATCH 0666/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7a149011..b6afbd99 100755 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ Each epoch trains on 117,263 images from the train and validate COCO sets, and t Here we see training results from `coco_1img.data`, `coco_10img.data` and `coco_100img.data`, 3 example files available in the `data/` folder, which train and test on the first 1, 10 and 100 images of the coco2014 trainval dataset. `from utils import utils; utils.plot_results()` -![results](https://user-images.githubusercontent.com/26833433/55669383-df76c980-5876-11e9-9806-691bd507ee17.jpg) +![results](https://user-images.githubusercontent.com/26833433/56207787-ec9e7000-604f-11e9-94dd-e1fcc374270f.png) ## Image Augmentation From ddc3c82c91a92a4e3121c416653d63daea80c6af Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 16 Apr 2019 22:29:00 +0200 Subject: [PATCH 0667/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b6afbd99..dd1b2fcf 100755 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ Python 3.7 or later with the following `pip3 install -U -r requirements.txt` pac **Resume Training:** Run `train.py --resume` resumes training from the latest checkpoint `weights/latest.pt`. -Each epoch trains on 117,263 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. Default training settings produce loss plots below, with **training speed of 0.6 s/batch on a 1080 Ti (18 epochs/day)** or 0.45 s/batch on a 2080 Ti. +Each epoch trains on 117,263 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. Default training settings produce loss plots below, with **training speed of 0.25 s/batch on a V100 GPU (almost 50 COCO epochs/day)**. Here we see training results from `coco_1img.data`, `coco_10img.data` and `coco_100img.data`, 3 example files available in the `data/` folder, which train and test on the first 1, 10 and 100 images of the coco2014 trainval dataset. From 2c3d461392114e3af07eda0110c833ffb7b78905 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 16 Apr 2019 23:27:31 +0200 Subject: [PATCH 0668/2595] updates --- data/coco_100val.data | 6 +++ data/coco_100val.txt | 100 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 data/coco_100val.data create mode 100644 data/coco_100val.txt diff --git a/data/coco_100val.data b/data/coco_100val.data new file mode 100644 index 00000000..3925a627 --- /dev/null +++ b/data/coco_100val.data @@ -0,0 +1,6 @@ +classes=80 +train=./data/coco_100img.txt +valid=./data/coco_100val.txt +names=data/coco.names +backup=backup/ +eval=coco diff --git a/data/coco_100val.txt b/data/coco_100val.txt new file mode 100644 index 00000000..b623ed01 --- /dev/null +++ b/data/coco_100val.txt @@ -0,0 +1,100 @@ +../coco/images/val2014/COCO_val2014_000000000164.jpg +../coco/images/val2014/COCO_val2014_000000000192.jpg +../coco/images/val2014/COCO_val2014_000000000283.jpg +../coco/images/val2014/COCO_val2014_000000000397.jpg +../coco/images/val2014/COCO_val2014_000000000589.jpg +../coco/images/val2014/COCO_val2014_000000000599.jpg +../coco/images/val2014/COCO_val2014_000000000711.jpg +../coco/images/val2014/COCO_val2014_000000000757.jpg +../coco/images/val2014/COCO_val2014_000000000764.jpg +../coco/images/val2014/COCO_val2014_000000000872.jpg +../coco/images/val2014/COCO_val2014_000000001063.jpg +../coco/images/val2014/COCO_val2014_000000001554.jpg +../coco/images/val2014/COCO_val2014_000000001667.jpg +../coco/images/val2014/COCO_val2014_000000001700.jpg +../coco/images/val2014/COCO_val2014_000000001869.jpg +../coco/images/val2014/COCO_val2014_000000002124.jpg +../coco/images/val2014/COCO_val2014_000000002261.jpg +../coco/images/val2014/COCO_val2014_000000002621.jpg +../coco/images/val2014/COCO_val2014_000000002684.jpg +../coco/images/val2014/COCO_val2014_000000002764.jpg +../coco/images/val2014/COCO_val2014_000000002894.jpg +../coco/images/val2014/COCO_val2014_000000002972.jpg +../coco/images/val2014/COCO_val2014_000000003035.jpg +../coco/images/val2014/COCO_val2014_000000003084.jpg +../coco/images/val2014/COCO_val2014_000000003103.jpg +../coco/images/val2014/COCO_val2014_000000003109.jpg +../coco/images/val2014/COCO_val2014_000000003134.jpg +../coco/images/val2014/COCO_val2014_000000003209.jpg +../coco/images/val2014/COCO_val2014_000000003244.jpg +../coco/images/val2014/COCO_val2014_000000003326.jpg +../coco/images/val2014/COCO_val2014_000000003337.jpg +../coco/images/val2014/COCO_val2014_000000003661.jpg +../coco/images/val2014/COCO_val2014_000000003711.jpg +../coco/images/val2014/COCO_val2014_000000003779.jpg +../coco/images/val2014/COCO_val2014_000000003865.jpg +../coco/images/val2014/COCO_val2014_000000004079.jpg +../coco/images/val2014/COCO_val2014_000000004092.jpg +../coco/images/val2014/COCO_val2014_000000004283.jpg +../coco/images/val2014/COCO_val2014_000000004296.jpg +../coco/images/val2014/COCO_val2014_000000004392.jpg +../coco/images/val2014/COCO_val2014_000000004742.jpg +../coco/images/val2014/COCO_val2014_000000004754.jpg +../coco/images/val2014/COCO_val2014_000000004764.jpg +../coco/images/val2014/COCO_val2014_000000005038.jpg +../coco/images/val2014/COCO_val2014_000000005060.jpg +../coco/images/val2014/COCO_val2014_000000005124.jpg +../coco/images/val2014/COCO_val2014_000000005178.jpg +../coco/images/val2014/COCO_val2014_000000005205.jpg +../coco/images/val2014/COCO_val2014_000000005443.jpg +../coco/images/val2014/COCO_val2014_000000005652.jpg +../coco/images/val2014/COCO_val2014_000000005723.jpg +../coco/images/val2014/COCO_val2014_000000005804.jpg +../coco/images/val2014/COCO_val2014_000000006074.jpg +../coco/images/val2014/COCO_val2014_000000006091.jpg +../coco/images/val2014/COCO_val2014_000000006153.jpg +../coco/images/val2014/COCO_val2014_000000006213.jpg +../coco/images/val2014/COCO_val2014_000000006497.jpg +../coco/images/val2014/COCO_val2014_000000006789.jpg +../coco/images/val2014/COCO_val2014_000000006847.jpg +../coco/images/val2014/COCO_val2014_000000007241.jpg +../coco/images/val2014/COCO_val2014_000000007256.jpg +../coco/images/val2014/COCO_val2014_000000007281.jpg +../coco/images/val2014/COCO_val2014_000000007795.jpg +../coco/images/val2014/COCO_val2014_000000007867.jpg +../coco/images/val2014/COCO_val2014_000000007873.jpg +../coco/images/val2014/COCO_val2014_000000007899.jpg +../coco/images/val2014/COCO_val2014_000000008010.jpg +../coco/images/val2014/COCO_val2014_000000008179.jpg +../coco/images/val2014/COCO_val2014_000000008190.jpg +../coco/images/val2014/COCO_val2014_000000008204.jpg +../coco/images/val2014/COCO_val2014_000000008350.jpg +../coco/images/val2014/COCO_val2014_000000008493.jpg +../coco/images/val2014/COCO_val2014_000000008853.jpg +../coco/images/val2014/COCO_val2014_000000009105.jpg +../coco/images/val2014/COCO_val2014_000000009156.jpg +../coco/images/val2014/COCO_val2014_000000009217.jpg +../coco/images/val2014/COCO_val2014_000000009270.jpg +../coco/images/val2014/COCO_val2014_000000009286.jpg +../coco/images/val2014/COCO_val2014_000000009548.jpg +../coco/images/val2014/COCO_val2014_000000009553.jpg +../coco/images/val2014/COCO_val2014_000000009727.jpg +../coco/images/val2014/COCO_val2014_000000009908.jpg +../coco/images/val2014/COCO_val2014_000000010114.jpg +../coco/images/val2014/COCO_val2014_000000010249.jpg +../coco/images/val2014/COCO_val2014_000000010395.jpg +../coco/images/val2014/COCO_val2014_000000010400.jpg +../coco/images/val2014/COCO_val2014_000000010463.jpg +../coco/images/val2014/COCO_val2014_000000010613.jpg +../coco/images/val2014/COCO_val2014_000000010764.jpg +../coco/images/val2014/COCO_val2014_000000010779.jpg +../coco/images/val2014/COCO_val2014_000000010928.jpg +../coco/images/val2014/COCO_val2014_000000011099.jpg +../coco/images/val2014/COCO_val2014_000000011181.jpg +../coco/images/val2014/COCO_val2014_000000011184.jpg +../coco/images/val2014/COCO_val2014_000000011197.jpg +../coco/images/val2014/COCO_val2014_000000011320.jpg +../coco/images/val2014/COCO_val2014_000000011721.jpg +../coco/images/val2014/COCO_val2014_000000011813.jpg +../coco/images/val2014/COCO_val2014_000000012014.jpg +../coco/images/val2014/COCO_val2014_000000012047.jpg From f2e12f62668525bc60170b2cb5a81eac024033d0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 16 Apr 2019 23:47:25 +0200 Subject: [PATCH 0669/2595] updates --- data/coco_100val.data | 6 --- data/coco_100val.txt | 100 ------------------------------------------ train.py | 2 +- 3 files changed, 1 insertion(+), 107 deletions(-) delete mode 100644 data/coco_100val.data delete mode 100644 data/coco_100val.txt diff --git a/data/coco_100val.data b/data/coco_100val.data deleted file mode 100644 index 3925a627..00000000 --- a/data/coco_100val.data +++ /dev/null @@ -1,6 +0,0 @@ -classes=80 -train=./data/coco_100img.txt -valid=./data/coco_100val.txt -names=data/coco.names -backup=backup/ -eval=coco diff --git a/data/coco_100val.txt b/data/coco_100val.txt deleted file mode 100644 index b623ed01..00000000 --- a/data/coco_100val.txt +++ /dev/null @@ -1,100 +0,0 @@ -../coco/images/val2014/COCO_val2014_000000000164.jpg -../coco/images/val2014/COCO_val2014_000000000192.jpg -../coco/images/val2014/COCO_val2014_000000000283.jpg -../coco/images/val2014/COCO_val2014_000000000397.jpg -../coco/images/val2014/COCO_val2014_000000000589.jpg -../coco/images/val2014/COCO_val2014_000000000599.jpg -../coco/images/val2014/COCO_val2014_000000000711.jpg -../coco/images/val2014/COCO_val2014_000000000757.jpg -../coco/images/val2014/COCO_val2014_000000000764.jpg -../coco/images/val2014/COCO_val2014_000000000872.jpg -../coco/images/val2014/COCO_val2014_000000001063.jpg -../coco/images/val2014/COCO_val2014_000000001554.jpg -../coco/images/val2014/COCO_val2014_000000001667.jpg -../coco/images/val2014/COCO_val2014_000000001700.jpg -../coco/images/val2014/COCO_val2014_000000001869.jpg -../coco/images/val2014/COCO_val2014_000000002124.jpg -../coco/images/val2014/COCO_val2014_000000002261.jpg -../coco/images/val2014/COCO_val2014_000000002621.jpg -../coco/images/val2014/COCO_val2014_000000002684.jpg -../coco/images/val2014/COCO_val2014_000000002764.jpg -../coco/images/val2014/COCO_val2014_000000002894.jpg -../coco/images/val2014/COCO_val2014_000000002972.jpg -../coco/images/val2014/COCO_val2014_000000003035.jpg -../coco/images/val2014/COCO_val2014_000000003084.jpg -../coco/images/val2014/COCO_val2014_000000003103.jpg -../coco/images/val2014/COCO_val2014_000000003109.jpg -../coco/images/val2014/COCO_val2014_000000003134.jpg -../coco/images/val2014/COCO_val2014_000000003209.jpg -../coco/images/val2014/COCO_val2014_000000003244.jpg -../coco/images/val2014/COCO_val2014_000000003326.jpg -../coco/images/val2014/COCO_val2014_000000003337.jpg -../coco/images/val2014/COCO_val2014_000000003661.jpg -../coco/images/val2014/COCO_val2014_000000003711.jpg -../coco/images/val2014/COCO_val2014_000000003779.jpg -../coco/images/val2014/COCO_val2014_000000003865.jpg -../coco/images/val2014/COCO_val2014_000000004079.jpg -../coco/images/val2014/COCO_val2014_000000004092.jpg -../coco/images/val2014/COCO_val2014_000000004283.jpg -../coco/images/val2014/COCO_val2014_000000004296.jpg -../coco/images/val2014/COCO_val2014_000000004392.jpg -../coco/images/val2014/COCO_val2014_000000004742.jpg -../coco/images/val2014/COCO_val2014_000000004754.jpg -../coco/images/val2014/COCO_val2014_000000004764.jpg -../coco/images/val2014/COCO_val2014_000000005038.jpg -../coco/images/val2014/COCO_val2014_000000005060.jpg -../coco/images/val2014/COCO_val2014_000000005124.jpg -../coco/images/val2014/COCO_val2014_000000005178.jpg -../coco/images/val2014/COCO_val2014_000000005205.jpg -../coco/images/val2014/COCO_val2014_000000005443.jpg -../coco/images/val2014/COCO_val2014_000000005652.jpg -../coco/images/val2014/COCO_val2014_000000005723.jpg -../coco/images/val2014/COCO_val2014_000000005804.jpg -../coco/images/val2014/COCO_val2014_000000006074.jpg -../coco/images/val2014/COCO_val2014_000000006091.jpg -../coco/images/val2014/COCO_val2014_000000006153.jpg -../coco/images/val2014/COCO_val2014_000000006213.jpg -../coco/images/val2014/COCO_val2014_000000006497.jpg -../coco/images/val2014/COCO_val2014_000000006789.jpg -../coco/images/val2014/COCO_val2014_000000006847.jpg -../coco/images/val2014/COCO_val2014_000000007241.jpg -../coco/images/val2014/COCO_val2014_000000007256.jpg -../coco/images/val2014/COCO_val2014_000000007281.jpg -../coco/images/val2014/COCO_val2014_000000007795.jpg -../coco/images/val2014/COCO_val2014_000000007867.jpg -../coco/images/val2014/COCO_val2014_000000007873.jpg -../coco/images/val2014/COCO_val2014_000000007899.jpg -../coco/images/val2014/COCO_val2014_000000008010.jpg -../coco/images/val2014/COCO_val2014_000000008179.jpg -../coco/images/val2014/COCO_val2014_000000008190.jpg -../coco/images/val2014/COCO_val2014_000000008204.jpg -../coco/images/val2014/COCO_val2014_000000008350.jpg -../coco/images/val2014/COCO_val2014_000000008493.jpg -../coco/images/val2014/COCO_val2014_000000008853.jpg -../coco/images/val2014/COCO_val2014_000000009105.jpg -../coco/images/val2014/COCO_val2014_000000009156.jpg -../coco/images/val2014/COCO_val2014_000000009217.jpg -../coco/images/val2014/COCO_val2014_000000009270.jpg -../coco/images/val2014/COCO_val2014_000000009286.jpg -../coco/images/val2014/COCO_val2014_000000009548.jpg -../coco/images/val2014/COCO_val2014_000000009553.jpg -../coco/images/val2014/COCO_val2014_000000009727.jpg -../coco/images/val2014/COCO_val2014_000000009908.jpg -../coco/images/val2014/COCO_val2014_000000010114.jpg -../coco/images/val2014/COCO_val2014_000000010249.jpg -../coco/images/val2014/COCO_val2014_000000010395.jpg -../coco/images/val2014/COCO_val2014_000000010400.jpg -../coco/images/val2014/COCO_val2014_000000010463.jpg -../coco/images/val2014/COCO_val2014_000000010613.jpg -../coco/images/val2014/COCO_val2014_000000010764.jpg -../coco/images/val2014/COCO_val2014_000000010779.jpg -../coco/images/val2014/COCO_val2014_000000010928.jpg -../coco/images/val2014/COCO_val2014_000000011099.jpg -../coco/images/val2014/COCO_val2014_000000011181.jpg -../coco/images/val2014/COCO_val2014_000000011184.jpg -../coco/images/val2014/COCO_val2014_000000011197.jpg -../coco/images/val2014/COCO_val2014_000000011320.jpg -../coco/images/val2014/COCO_val2014_000000011721.jpg -../coco/images/val2014/COCO_val2014_000000011813.jpg -../coco/images/val2014/COCO_val2014_000000012014.jpg -../coco/images/val2014/COCO_val2014_000000012047.jpg diff --git a/train.py b/train.py index 5bce4adc..0b3eb4e4 100644 --- a/train.py +++ b/train.py @@ -92,7 +92,7 @@ def train( dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=num_workers, - shuffle=False, + shuffle=True, pin_memory=True, collate_fn=dataset.collate_fn, sampler=sampler) From 6204d83f3a2562028e685a4c5a419c65eddc8a48 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 16 Apr 2019 23:57:43 +0200 Subject: [PATCH 0670/2595] updates --- .gitignore | 4 +- data/coco_500img.txt | 500 ++++++++++++++++++++++++++++++++++++++++++ data/coco_500val.data | 6 + data/coco_500val.txt | 500 ++++++++++++++++++++++++++++++++++++++++++ utils/gcp.sh | 11 +- 5 files changed, 1014 insertions(+), 7 deletions(-) create mode 100644 data/coco_500img.txt create mode 100644 data/coco_500val.data create mode 100644 data/coco_500val.txt diff --git a/.gitignore b/.gitignore index f690693b..850fc59f 100755 --- a/.gitignore +++ b/.gitignore @@ -23,8 +23,8 @@ data/* !data/coco.names !data/coco_paper.names !data/coco.data -!data/coco_1*.data -!data/coco_1*.txt +!data/coco_*.data +!data/coco_*.txt pycocotools/* results*.txt diff --git a/data/coco_500img.txt b/data/coco_500img.txt new file mode 100644 index 00000000..5d578ab2 --- /dev/null +++ b/data/coco_500img.txt @@ -0,0 +1,500 @@ +../coco/images/train2014/COCO_train2014_000000000009.jpg +../coco/images/train2014/COCO_train2014_000000000025.jpg +../coco/images/train2014/COCO_train2014_000000000030.jpg +../coco/images/train2014/COCO_train2014_000000000034.jpg +../coco/images/train2014/COCO_train2014_000000000036.jpg +../coco/images/train2014/COCO_train2014_000000000049.jpg +../coco/images/train2014/COCO_train2014_000000000061.jpg +../coco/images/train2014/COCO_train2014_000000000064.jpg +../coco/images/train2014/COCO_train2014_000000000071.jpg +../coco/images/train2014/COCO_train2014_000000000072.jpg +../coco/images/train2014/COCO_train2014_000000000077.jpg +../coco/images/train2014/COCO_train2014_000000000078.jpg +../coco/images/train2014/COCO_train2014_000000000081.jpg +../coco/images/train2014/COCO_train2014_000000000086.jpg +../coco/images/train2014/COCO_train2014_000000000089.jpg +../coco/images/train2014/COCO_train2014_000000000092.jpg +../coco/images/train2014/COCO_train2014_000000000094.jpg +../coco/images/train2014/COCO_train2014_000000000109.jpg +../coco/images/train2014/COCO_train2014_000000000110.jpg +../coco/images/train2014/COCO_train2014_000000000113.jpg +../coco/images/train2014/COCO_train2014_000000000127.jpg +../coco/images/train2014/COCO_train2014_000000000138.jpg +../coco/images/train2014/COCO_train2014_000000000142.jpg +../coco/images/train2014/COCO_train2014_000000000144.jpg +../coco/images/train2014/COCO_train2014_000000000149.jpg +../coco/images/train2014/COCO_train2014_000000000151.jpg +../coco/images/train2014/COCO_train2014_000000000154.jpg +../coco/images/train2014/COCO_train2014_000000000165.jpg +../coco/images/train2014/COCO_train2014_000000000194.jpg +../coco/images/train2014/COCO_train2014_000000000201.jpg +../coco/images/train2014/COCO_train2014_000000000247.jpg +../coco/images/train2014/COCO_train2014_000000000260.jpg +../coco/images/train2014/COCO_train2014_000000000263.jpg +../coco/images/train2014/COCO_train2014_000000000307.jpg +../coco/images/train2014/COCO_train2014_000000000308.jpg +../coco/images/train2014/COCO_train2014_000000000309.jpg +../coco/images/train2014/COCO_train2014_000000000312.jpg +../coco/images/train2014/COCO_train2014_000000000315.jpg +../coco/images/train2014/COCO_train2014_000000000321.jpg +../coco/images/train2014/COCO_train2014_000000000322.jpg +../coco/images/train2014/COCO_train2014_000000000326.jpg +../coco/images/train2014/COCO_train2014_000000000332.jpg +../coco/images/train2014/COCO_train2014_000000000349.jpg +../coco/images/train2014/COCO_train2014_000000000368.jpg +../coco/images/train2014/COCO_train2014_000000000370.jpg +../coco/images/train2014/COCO_train2014_000000000382.jpg +../coco/images/train2014/COCO_train2014_000000000384.jpg +../coco/images/train2014/COCO_train2014_000000000389.jpg +../coco/images/train2014/COCO_train2014_000000000394.jpg +../coco/images/train2014/COCO_train2014_000000000404.jpg +../coco/images/train2014/COCO_train2014_000000000419.jpg +../coco/images/train2014/COCO_train2014_000000000431.jpg +../coco/images/train2014/COCO_train2014_000000000436.jpg +../coco/images/train2014/COCO_train2014_000000000438.jpg +../coco/images/train2014/COCO_train2014_000000000443.jpg +../coco/images/train2014/COCO_train2014_000000000446.jpg +../coco/images/train2014/COCO_train2014_000000000450.jpg +../coco/images/train2014/COCO_train2014_000000000471.jpg +../coco/images/train2014/COCO_train2014_000000000490.jpg +../coco/images/train2014/COCO_train2014_000000000491.jpg +../coco/images/train2014/COCO_train2014_000000000510.jpg +../coco/images/train2014/COCO_train2014_000000000514.jpg +../coco/images/train2014/COCO_train2014_000000000529.jpg +../coco/images/train2014/COCO_train2014_000000000531.jpg +../coco/images/train2014/COCO_train2014_000000000532.jpg +../coco/images/train2014/COCO_train2014_000000000540.jpg +../coco/images/train2014/COCO_train2014_000000000542.jpg +../coco/images/train2014/COCO_train2014_000000000560.jpg +../coco/images/train2014/COCO_train2014_000000000562.jpg +../coco/images/train2014/COCO_train2014_000000000572.jpg +../coco/images/train2014/COCO_train2014_000000000575.jpg +../coco/images/train2014/COCO_train2014_000000000581.jpg +../coco/images/train2014/COCO_train2014_000000000584.jpg +../coco/images/train2014/COCO_train2014_000000000595.jpg +../coco/images/train2014/COCO_train2014_000000000597.jpg +../coco/images/train2014/COCO_train2014_000000000605.jpg +../coco/images/train2014/COCO_train2014_000000000612.jpg +../coco/images/train2014/COCO_train2014_000000000620.jpg +../coco/images/train2014/COCO_train2014_000000000625.jpg +../coco/images/train2014/COCO_train2014_000000000629.jpg +../coco/images/train2014/COCO_train2014_000000000634.jpg +../coco/images/train2014/COCO_train2014_000000000643.jpg +../coco/images/train2014/COCO_train2014_000000000650.jpg +../coco/images/train2014/COCO_train2014_000000000656.jpg +../coco/images/train2014/COCO_train2014_000000000659.jpg +../coco/images/train2014/COCO_train2014_000000000670.jpg +../coco/images/train2014/COCO_train2014_000000000671.jpg +../coco/images/train2014/COCO_train2014_000000000673.jpg +../coco/images/train2014/COCO_train2014_000000000681.jpg +../coco/images/train2014/COCO_train2014_000000000684.jpg +../coco/images/train2014/COCO_train2014_000000000690.jpg +../coco/images/train2014/COCO_train2014_000000000706.jpg +../coco/images/train2014/COCO_train2014_000000000714.jpg +../coco/images/train2014/COCO_train2014_000000000716.jpg +../coco/images/train2014/COCO_train2014_000000000722.jpg +../coco/images/train2014/COCO_train2014_000000000723.jpg +../coco/images/train2014/COCO_train2014_000000000731.jpg +../coco/images/train2014/COCO_train2014_000000000735.jpg +../coco/images/train2014/COCO_train2014_000000000753.jpg +../coco/images/train2014/COCO_train2014_000000000754.jpg +../coco/images/train2014/COCO_train2014_000000000762.jpg +../coco/images/train2014/COCO_train2014_000000000781.jpg +../coco/images/train2014/COCO_train2014_000000000790.jpg +../coco/images/train2014/COCO_train2014_000000000795.jpg +../coco/images/train2014/COCO_train2014_000000000797.jpg +../coco/images/train2014/COCO_train2014_000000000801.jpg +../coco/images/train2014/COCO_train2014_000000000813.jpg +../coco/images/train2014/COCO_train2014_000000000821.jpg +../coco/images/train2014/COCO_train2014_000000000825.jpg +../coco/images/train2014/COCO_train2014_000000000828.jpg +../coco/images/train2014/COCO_train2014_000000000839.jpg +../coco/images/train2014/COCO_train2014_000000000853.jpg +../coco/images/train2014/COCO_train2014_000000000882.jpg +../coco/images/train2014/COCO_train2014_000000000897.jpg +../coco/images/train2014/COCO_train2014_000000000901.jpg +../coco/images/train2014/COCO_train2014_000000000902.jpg +../coco/images/train2014/COCO_train2014_000000000908.jpg +../coco/images/train2014/COCO_train2014_000000000909.jpg +../coco/images/train2014/COCO_train2014_000000000913.jpg +../coco/images/train2014/COCO_train2014_000000000925.jpg +../coco/images/train2014/COCO_train2014_000000000927.jpg +../coco/images/train2014/COCO_train2014_000000000934.jpg +../coco/images/train2014/COCO_train2014_000000000941.jpg +../coco/images/train2014/COCO_train2014_000000000943.jpg +../coco/images/train2014/COCO_train2014_000000000955.jpg +../coco/images/train2014/COCO_train2014_000000000960.jpg +../coco/images/train2014/COCO_train2014_000000000965.jpg +../coco/images/train2014/COCO_train2014_000000000977.jpg +../coco/images/train2014/COCO_train2014_000000000982.jpg +../coco/images/train2014/COCO_train2014_000000000984.jpg +../coco/images/train2014/COCO_train2014_000000000996.jpg +../coco/images/train2014/COCO_train2014_000000001006.jpg +../coco/images/train2014/COCO_train2014_000000001011.jpg +../coco/images/train2014/COCO_train2014_000000001014.jpg +../coco/images/train2014/COCO_train2014_000000001025.jpg +../coco/images/train2014/COCO_train2014_000000001036.jpg +../coco/images/train2014/COCO_train2014_000000001053.jpg +../coco/images/train2014/COCO_train2014_000000001059.jpg +../coco/images/train2014/COCO_train2014_000000001072.jpg +../coco/images/train2014/COCO_train2014_000000001084.jpg +../coco/images/train2014/COCO_train2014_000000001085.jpg +../coco/images/train2014/COCO_train2014_000000001090.jpg +../coco/images/train2014/COCO_train2014_000000001098.jpg +../coco/images/train2014/COCO_train2014_000000001099.jpg +../coco/images/train2014/COCO_train2014_000000001102.jpg +../coco/images/train2014/COCO_train2014_000000001107.jpg +../coco/images/train2014/COCO_train2014_000000001108.jpg +../coco/images/train2014/COCO_train2014_000000001122.jpg +../coco/images/train2014/COCO_train2014_000000001139.jpg +../coco/images/train2014/COCO_train2014_000000001144.jpg +../coco/images/train2014/COCO_train2014_000000001145.jpg +../coco/images/train2014/COCO_train2014_000000001155.jpg +../coco/images/train2014/COCO_train2014_000000001166.jpg +../coco/images/train2014/COCO_train2014_000000001168.jpg +../coco/images/train2014/COCO_train2014_000000001183.jpg +../coco/images/train2014/COCO_train2014_000000001200.jpg +../coco/images/train2014/COCO_train2014_000000001204.jpg +../coco/images/train2014/COCO_train2014_000000001213.jpg +../coco/images/train2014/COCO_train2014_000000001216.jpg +../coco/images/train2014/COCO_train2014_000000001224.jpg +../coco/images/train2014/COCO_train2014_000000001232.jpg +../coco/images/train2014/COCO_train2014_000000001237.jpg +../coco/images/train2014/COCO_train2014_000000001238.jpg +../coco/images/train2014/COCO_train2014_000000001261.jpg +../coco/images/train2014/COCO_train2014_000000001264.jpg +../coco/images/train2014/COCO_train2014_000000001271.jpg +../coco/images/train2014/COCO_train2014_000000001282.jpg +../coco/images/train2014/COCO_train2014_000000001295.jpg +../coco/images/train2014/COCO_train2014_000000001298.jpg +../coco/images/train2014/COCO_train2014_000000001306.jpg +../coco/images/train2014/COCO_train2014_000000001307.jpg +../coco/images/train2014/COCO_train2014_000000001308.jpg +../coco/images/train2014/COCO_train2014_000000001311.jpg +../coco/images/train2014/COCO_train2014_000000001315.jpg +../coco/images/train2014/COCO_train2014_000000001319.jpg +../coco/images/train2014/COCO_train2014_000000001323.jpg +../coco/images/train2014/COCO_train2014_000000001330.jpg +../coco/images/train2014/COCO_train2014_000000001332.jpg +../coco/images/train2014/COCO_train2014_000000001350.jpg +../coco/images/train2014/COCO_train2014_000000001355.jpg +../coco/images/train2014/COCO_train2014_000000001359.jpg +../coco/images/train2014/COCO_train2014_000000001360.jpg +../coco/images/train2014/COCO_train2014_000000001366.jpg +../coco/images/train2014/COCO_train2014_000000001375.jpg +../coco/images/train2014/COCO_train2014_000000001381.jpg +../coco/images/train2014/COCO_train2014_000000001386.jpg +../coco/images/train2014/COCO_train2014_000000001390.jpg +../coco/images/train2014/COCO_train2014_000000001392.jpg +../coco/images/train2014/COCO_train2014_000000001397.jpg +../coco/images/train2014/COCO_train2014_000000001401.jpg +../coco/images/train2014/COCO_train2014_000000001403.jpg +../coco/images/train2014/COCO_train2014_000000001407.jpg +../coco/images/train2014/COCO_train2014_000000001408.jpg +../coco/images/train2014/COCO_train2014_000000001424.jpg +../coco/images/train2014/COCO_train2014_000000001431.jpg +../coco/images/train2014/COCO_train2014_000000001451.jpg +../coco/images/train2014/COCO_train2014_000000001453.jpg +../coco/images/train2014/COCO_train2014_000000001455.jpg +../coco/images/train2014/COCO_train2014_000000001488.jpg +../coco/images/train2014/COCO_train2014_000000001496.jpg +../coco/images/train2014/COCO_train2014_000000001497.jpg +../coco/images/train2014/COCO_train2014_000000001501.jpg +../coco/images/train2014/COCO_train2014_000000001505.jpg +../coco/images/train2014/COCO_train2014_000000001507.jpg +../coco/images/train2014/COCO_train2014_000000001510.jpg +../coco/images/train2014/COCO_train2014_000000001515.jpg +../coco/images/train2014/COCO_train2014_000000001518.jpg +../coco/images/train2014/COCO_train2014_000000001522.jpg +../coco/images/train2014/COCO_train2014_000000001523.jpg +../coco/images/train2014/COCO_train2014_000000001526.jpg +../coco/images/train2014/COCO_train2014_000000001527.jpg +../coco/images/train2014/COCO_train2014_000000001536.jpg +../coco/images/train2014/COCO_train2014_000000001548.jpg +../coco/images/train2014/COCO_train2014_000000001558.jpg +../coco/images/train2014/COCO_train2014_000000001562.jpg +../coco/images/train2014/COCO_train2014_000000001569.jpg +../coco/images/train2014/COCO_train2014_000000001579.jpg +../coco/images/train2014/COCO_train2014_000000001580.jpg +../coco/images/train2014/COCO_train2014_000000001586.jpg +../coco/images/train2014/COCO_train2014_000000001589.jpg +../coco/images/train2014/COCO_train2014_000000001596.jpg +../coco/images/train2014/COCO_train2014_000000001611.jpg +../coco/images/train2014/COCO_train2014_000000001622.jpg +../coco/images/train2014/COCO_train2014_000000001625.jpg +../coco/images/train2014/COCO_train2014_000000001637.jpg +../coco/images/train2014/COCO_train2014_000000001639.jpg +../coco/images/train2014/COCO_train2014_000000001645.jpg +../coco/images/train2014/COCO_train2014_000000001670.jpg +../coco/images/train2014/COCO_train2014_000000001674.jpg +../coco/images/train2014/COCO_train2014_000000001681.jpg +../coco/images/train2014/COCO_train2014_000000001688.jpg +../coco/images/train2014/COCO_train2014_000000001697.jpg +../coco/images/train2014/COCO_train2014_000000001706.jpg +../coco/images/train2014/COCO_train2014_000000001709.jpg +../coco/images/train2014/COCO_train2014_000000001712.jpg +../coco/images/train2014/COCO_train2014_000000001720.jpg +../coco/images/train2014/COCO_train2014_000000001732.jpg +../coco/images/train2014/COCO_train2014_000000001737.jpg +../coco/images/train2014/COCO_train2014_000000001756.jpg +../coco/images/train2014/COCO_train2014_000000001762.jpg +../coco/images/train2014/COCO_train2014_000000001764.jpg +../coco/images/train2014/COCO_train2014_000000001771.jpg +../coco/images/train2014/COCO_train2014_000000001774.jpg +../coco/images/train2014/COCO_train2014_000000001777.jpg +../coco/images/train2014/COCO_train2014_000000001781.jpg +../coco/images/train2014/COCO_train2014_000000001785.jpg +../coco/images/train2014/COCO_train2014_000000001786.jpg +../coco/images/train2014/COCO_train2014_000000001790.jpg +../coco/images/train2014/COCO_train2014_000000001792.jpg +../coco/images/train2014/COCO_train2014_000000001804.jpg +../coco/images/train2014/COCO_train2014_000000001810.jpg +../coco/images/train2014/COCO_train2014_000000001811.jpg +../coco/images/train2014/COCO_train2014_000000001813.jpg +../coco/images/train2014/COCO_train2014_000000001815.jpg +../coco/images/train2014/COCO_train2014_000000001822.jpg +../coco/images/train2014/COCO_train2014_000000001837.jpg +../coco/images/train2014/COCO_train2014_000000001864.jpg +../coco/images/train2014/COCO_train2014_000000001875.jpg +../coco/images/train2014/COCO_train2014_000000001877.jpg +../coco/images/train2014/COCO_train2014_000000001888.jpg +../coco/images/train2014/COCO_train2014_000000001895.jpg +../coco/images/train2014/COCO_train2014_000000001900.jpg +../coco/images/train2014/COCO_train2014_000000001902.jpg +../coco/images/train2014/COCO_train2014_000000001906.jpg +../coco/images/train2014/COCO_train2014_000000001907.jpg +../coco/images/train2014/COCO_train2014_000000001911.jpg +../coco/images/train2014/COCO_train2014_000000001912.jpg +../coco/images/train2014/COCO_train2014_000000001915.jpg +../coco/images/train2014/COCO_train2014_000000001924.jpg +../coco/images/train2014/COCO_train2014_000000001926.jpg +../coco/images/train2014/COCO_train2014_000000001941.jpg +../coco/images/train2014/COCO_train2014_000000001942.jpg +../coco/images/train2014/COCO_train2014_000000001943.jpg +../coco/images/train2014/COCO_train2014_000000001947.jpg +../coco/images/train2014/COCO_train2014_000000001958.jpg +../coco/images/train2014/COCO_train2014_000000001966.jpg +../coco/images/train2014/COCO_train2014_000000001994.jpg +../coco/images/train2014/COCO_train2014_000000001999.jpg +../coco/images/train2014/COCO_train2014_000000002001.jpg +../coco/images/train2014/COCO_train2014_000000002007.jpg +../coco/images/train2014/COCO_train2014_000000002024.jpg +../coco/images/train2014/COCO_train2014_000000002055.jpg +../coco/images/train2014/COCO_train2014_000000002056.jpg +../coco/images/train2014/COCO_train2014_000000002066.jpg +../coco/images/train2014/COCO_train2014_000000002068.jpg +../coco/images/train2014/COCO_train2014_000000002072.jpg +../coco/images/train2014/COCO_train2014_000000002083.jpg +../coco/images/train2014/COCO_train2014_000000002089.jpg +../coco/images/train2014/COCO_train2014_000000002093.jpg +../coco/images/train2014/COCO_train2014_000000002106.jpg +../coco/images/train2014/COCO_train2014_000000002114.jpg +../coco/images/train2014/COCO_train2014_000000002135.jpg +../coco/images/train2014/COCO_train2014_000000002148.jpg +../coco/images/train2014/COCO_train2014_000000002150.jpg +../coco/images/train2014/COCO_train2014_000000002178.jpg +../coco/images/train2014/COCO_train2014_000000002184.jpg +../coco/images/train2014/COCO_train2014_000000002193.jpg +../coco/images/train2014/COCO_train2014_000000002197.jpg +../coco/images/train2014/COCO_train2014_000000002209.jpg +../coco/images/train2014/COCO_train2014_000000002211.jpg +../coco/images/train2014/COCO_train2014_000000002217.jpg +../coco/images/train2014/COCO_train2014_000000002229.jpg +../coco/images/train2014/COCO_train2014_000000002232.jpg +../coco/images/train2014/COCO_train2014_000000002244.jpg +../coco/images/train2014/COCO_train2014_000000002258.jpg +../coco/images/train2014/COCO_train2014_000000002270.jpg +../coco/images/train2014/COCO_train2014_000000002276.jpg +../coco/images/train2014/COCO_train2014_000000002278.jpg +../coco/images/train2014/COCO_train2014_000000002279.jpg +../coco/images/train2014/COCO_train2014_000000002280.jpg +../coco/images/train2014/COCO_train2014_000000002281.jpg +../coco/images/train2014/COCO_train2014_000000002283.jpg +../coco/images/train2014/COCO_train2014_000000002284.jpg +../coco/images/train2014/COCO_train2014_000000002296.jpg +../coco/images/train2014/COCO_train2014_000000002309.jpg +../coco/images/train2014/COCO_train2014_000000002337.jpg +../coco/images/train2014/COCO_train2014_000000002342.jpg +../coco/images/train2014/COCO_train2014_000000002347.jpg +../coco/images/train2014/COCO_train2014_000000002349.jpg +../coco/images/train2014/COCO_train2014_000000002369.jpg +../coco/images/train2014/COCO_train2014_000000002372.jpg +../coco/images/train2014/COCO_train2014_000000002374.jpg +../coco/images/train2014/COCO_train2014_000000002377.jpg +../coco/images/train2014/COCO_train2014_000000002389.jpg +../coco/images/train2014/COCO_train2014_000000002400.jpg +../coco/images/train2014/COCO_train2014_000000002402.jpg +../coco/images/train2014/COCO_train2014_000000002411.jpg +../coco/images/train2014/COCO_train2014_000000002415.jpg +../coco/images/train2014/COCO_train2014_000000002429.jpg +../coco/images/train2014/COCO_train2014_000000002444.jpg +../coco/images/train2014/COCO_train2014_000000002445.jpg +../coco/images/train2014/COCO_train2014_000000002446.jpg +../coco/images/train2014/COCO_train2014_000000002448.jpg +../coco/images/train2014/COCO_train2014_000000002451.jpg +../coco/images/train2014/COCO_train2014_000000002459.jpg +../coco/images/train2014/COCO_train2014_000000002466.jpg +../coco/images/train2014/COCO_train2014_000000002470.jpg +../coco/images/train2014/COCO_train2014_000000002471.jpg +../coco/images/train2014/COCO_train2014_000000002496.jpg +../coco/images/train2014/COCO_train2014_000000002498.jpg +../coco/images/train2014/COCO_train2014_000000002531.jpg +../coco/images/train2014/COCO_train2014_000000002536.jpg +../coco/images/train2014/COCO_train2014_000000002543.jpg +../coco/images/train2014/COCO_train2014_000000002544.jpg +../coco/images/train2014/COCO_train2014_000000002545.jpg +../coco/images/train2014/COCO_train2014_000000002555.jpg +../coco/images/train2014/COCO_train2014_000000002559.jpg +../coco/images/train2014/COCO_train2014_000000002560.jpg +../coco/images/train2014/COCO_train2014_000000002563.jpg +../coco/images/train2014/COCO_train2014_000000002567.jpg +../coco/images/train2014/COCO_train2014_000000002570.jpg +../coco/images/train2014/COCO_train2014_000000002575.jpg +../coco/images/train2014/COCO_train2014_000000002583.jpg +../coco/images/train2014/COCO_train2014_000000002585.jpg +../coco/images/train2014/COCO_train2014_000000002591.jpg +../coco/images/train2014/COCO_train2014_000000002602.jpg +../coco/images/train2014/COCO_train2014_000000002606.jpg +../coco/images/train2014/COCO_train2014_000000002608.jpg +../coco/images/train2014/COCO_train2014_000000002614.jpg +../coco/images/train2014/COCO_train2014_000000002618.jpg +../coco/images/train2014/COCO_train2014_000000002619.jpg +../coco/images/train2014/COCO_train2014_000000002623.jpg +../coco/images/train2014/COCO_train2014_000000002624.jpg +../coco/images/train2014/COCO_train2014_000000002639.jpg +../coco/images/train2014/COCO_train2014_000000002644.jpg +../coco/images/train2014/COCO_train2014_000000002645.jpg +../coco/images/train2014/COCO_train2014_000000002658.jpg +../coco/images/train2014/COCO_train2014_000000002664.jpg +../coco/images/train2014/COCO_train2014_000000002672.jpg +../coco/images/train2014/COCO_train2014_000000002686.jpg +../coco/images/train2014/COCO_train2014_000000002687.jpg +../coco/images/train2014/COCO_train2014_000000002691.jpg +../coco/images/train2014/COCO_train2014_000000002693.jpg +../coco/images/train2014/COCO_train2014_000000002697.jpg +../coco/images/train2014/COCO_train2014_000000002703.jpg +../coco/images/train2014/COCO_train2014_000000002732.jpg +../coco/images/train2014/COCO_train2014_000000002742.jpg +../coco/images/train2014/COCO_train2014_000000002752.jpg +../coco/images/train2014/COCO_train2014_000000002754.jpg +../coco/images/train2014/COCO_train2014_000000002755.jpg +../coco/images/train2014/COCO_train2014_000000002758.jpg +../coco/images/train2014/COCO_train2014_000000002770.jpg +../coco/images/train2014/COCO_train2014_000000002774.jpg +../coco/images/train2014/COCO_train2014_000000002776.jpg +../coco/images/train2014/COCO_train2014_000000002782.jpg +../coco/images/train2014/COCO_train2014_000000002823.jpg +../coco/images/train2014/COCO_train2014_000000002833.jpg +../coco/images/train2014/COCO_train2014_000000002842.jpg +../coco/images/train2014/COCO_train2014_000000002843.jpg +../coco/images/train2014/COCO_train2014_000000002849.jpg +../coco/images/train2014/COCO_train2014_000000002860.jpg +../coco/images/train2014/COCO_train2014_000000002886.jpg +../coco/images/train2014/COCO_train2014_000000002892.jpg +../coco/images/train2014/COCO_train2014_000000002896.jpg +../coco/images/train2014/COCO_train2014_000000002902.jpg +../coco/images/train2014/COCO_train2014_000000002907.jpg +../coco/images/train2014/COCO_train2014_000000002931.jpg +../coco/images/train2014/COCO_train2014_000000002951.jpg +../coco/images/train2014/COCO_train2014_000000002963.jpg +../coco/images/train2014/COCO_train2014_000000002964.jpg +../coco/images/train2014/COCO_train2014_000000002982.jpg +../coco/images/train2014/COCO_train2014_000000002983.jpg +../coco/images/train2014/COCO_train2014_000000002989.jpg +../coco/images/train2014/COCO_train2014_000000002992.jpg +../coco/images/train2014/COCO_train2014_000000002998.jpg +../coco/images/train2014/COCO_train2014_000000003000.jpg +../coco/images/train2014/COCO_train2014_000000003003.jpg +../coco/images/train2014/COCO_train2014_000000003008.jpg +../coco/images/train2014/COCO_train2014_000000003040.jpg +../coco/images/train2014/COCO_train2014_000000003048.jpg +../coco/images/train2014/COCO_train2014_000000003076.jpg +../coco/images/train2014/COCO_train2014_000000003077.jpg +../coco/images/train2014/COCO_train2014_000000003080.jpg +../coco/images/train2014/COCO_train2014_000000003118.jpg +../coco/images/train2014/COCO_train2014_000000003124.jpg +../coco/images/train2014/COCO_train2014_000000003131.jpg +../coco/images/train2014/COCO_train2014_000000003148.jpg +../coco/images/train2014/COCO_train2014_000000003157.jpg +../coco/images/train2014/COCO_train2014_000000003160.jpg +../coco/images/train2014/COCO_train2014_000000003178.jpg +../coco/images/train2014/COCO_train2014_000000003197.jpg +../coco/images/train2014/COCO_train2014_000000003219.jpg +../coco/images/train2014/COCO_train2014_000000003220.jpg +../coco/images/train2014/COCO_train2014_000000003224.jpg +../coco/images/train2014/COCO_train2014_000000003225.jpg +../coco/images/train2014/COCO_train2014_000000003234.jpg +../coco/images/train2014/COCO_train2014_000000003236.jpg +../coco/images/train2014/COCO_train2014_000000003242.jpg +../coco/images/train2014/COCO_train2014_000000003249.jpg +../coco/images/train2014/COCO_train2014_000000003259.jpg +../coco/images/train2014/COCO_train2014_000000003264.jpg +../coco/images/train2014/COCO_train2014_000000003270.jpg +../coco/images/train2014/COCO_train2014_000000003272.jpg +../coco/images/train2014/COCO_train2014_000000003276.jpg +../coco/images/train2014/COCO_train2014_000000003286.jpg +../coco/images/train2014/COCO_train2014_000000003293.jpg +../coco/images/train2014/COCO_train2014_000000003305.jpg +../coco/images/train2014/COCO_train2014_000000003314.jpg +../coco/images/train2014/COCO_train2014_000000003320.jpg +../coco/images/train2014/COCO_train2014_000000003321.jpg +../coco/images/train2014/COCO_train2014_000000003325.jpg +../coco/images/train2014/COCO_train2014_000000003348.jpg +../coco/images/train2014/COCO_train2014_000000003353.jpg +../coco/images/train2014/COCO_train2014_000000003361.jpg +../coco/images/train2014/COCO_train2014_000000003365.jpg +../coco/images/train2014/COCO_train2014_000000003366.jpg +../coco/images/train2014/COCO_train2014_000000003375.jpg +../coco/images/train2014/COCO_train2014_000000003386.jpg +../coco/images/train2014/COCO_train2014_000000003389.jpg +../coco/images/train2014/COCO_train2014_000000003398.jpg +../coco/images/train2014/COCO_train2014_000000003412.jpg +../coco/images/train2014/COCO_train2014_000000003432.jpg +../coco/images/train2014/COCO_train2014_000000003442.jpg +../coco/images/train2014/COCO_train2014_000000003457.jpg +../coco/images/train2014/COCO_train2014_000000003461.jpg +../coco/images/train2014/COCO_train2014_000000003464.jpg +../coco/images/train2014/COCO_train2014_000000003474.jpg +../coco/images/train2014/COCO_train2014_000000003478.jpg +../coco/images/train2014/COCO_train2014_000000003481.jpg +../coco/images/train2014/COCO_train2014_000000003483.jpg +../coco/images/train2014/COCO_train2014_000000003493.jpg +../coco/images/train2014/COCO_train2014_000000003511.jpg +../coco/images/train2014/COCO_train2014_000000003514.jpg +../coco/images/train2014/COCO_train2014_000000003517.jpg +../coco/images/train2014/COCO_train2014_000000003518.jpg +../coco/images/train2014/COCO_train2014_000000003521.jpg +../coco/images/train2014/COCO_train2014_000000003528.jpg +../coco/images/train2014/COCO_train2014_000000003532.jpg +../coco/images/train2014/COCO_train2014_000000003535.jpg +../coco/images/train2014/COCO_train2014_000000003538.jpg +../coco/images/train2014/COCO_train2014_000000003579.jpg +../coco/images/train2014/COCO_train2014_000000003602.jpg +../coco/images/train2014/COCO_train2014_000000003613.jpg +../coco/images/train2014/COCO_train2014_000000003623.jpg +../coco/images/train2014/COCO_train2014_000000003628.jpg +../coco/images/train2014/COCO_train2014_000000003637.jpg +../coco/images/train2014/COCO_train2014_000000003668.jpg +../coco/images/train2014/COCO_train2014_000000003671.jpg +../coco/images/train2014/COCO_train2014_000000003682.jpg +../coco/images/train2014/COCO_train2014_000000003685.jpg +../coco/images/train2014/COCO_train2014_000000003713.jpg +../coco/images/train2014/COCO_train2014_000000003729.jpg +../coco/images/train2014/COCO_train2014_000000003735.jpg +../coco/images/train2014/COCO_train2014_000000003737.jpg +../coco/images/train2014/COCO_train2014_000000003745.jpg +../coco/images/train2014/COCO_train2014_000000003751.jpg +../coco/images/train2014/COCO_train2014_000000003764.jpg +../coco/images/train2014/COCO_train2014_000000003770.jpg +../coco/images/train2014/COCO_train2014_000000003782.jpg +../coco/images/train2014/COCO_train2014_000000003789.jpg +../coco/images/train2014/COCO_train2014_000000003804.jpg +../coco/images/train2014/COCO_train2014_000000003812.jpg +../coco/images/train2014/COCO_train2014_000000003823.jpg +../coco/images/train2014/COCO_train2014_000000003827.jpg +../coco/images/train2014/COCO_train2014_000000003830.jpg +../coco/images/train2014/COCO_train2014_000000003860.jpg +../coco/images/train2014/COCO_train2014_000000003862.jpg +../coco/images/train2014/COCO_train2014_000000003866.jpg +../coco/images/train2014/COCO_train2014_000000003870.jpg +../coco/images/train2014/COCO_train2014_000000003877.jpg diff --git a/data/coco_500val.data b/data/coco_500val.data new file mode 100644 index 00000000..4edf9ed3 --- /dev/null +++ b/data/coco_500val.data @@ -0,0 +1,6 @@ +classes=80 +train=./data/coco_500img.txt +valid=./data/coco_500val.txt +names=data/coco.names +backup=backup/ +eval=coco diff --git a/data/coco_500val.txt b/data/coco_500val.txt new file mode 100644 index 00000000..443fb5fc --- /dev/null +++ b/data/coco_500val.txt @@ -0,0 +1,500 @@ +../coco/images/val2014/COCO_val2014_000000000164.jpg +../coco/images/val2014/COCO_val2014_000000000192.jpg +../coco/images/val2014/COCO_val2014_000000000283.jpg +../coco/images/val2014/COCO_val2014_000000000397.jpg +../coco/images/val2014/COCO_val2014_000000000589.jpg +../coco/images/val2014/COCO_val2014_000000000599.jpg +../coco/images/val2014/COCO_val2014_000000000711.jpg +../coco/images/val2014/COCO_val2014_000000000757.jpg +../coco/images/val2014/COCO_val2014_000000000764.jpg +../coco/images/val2014/COCO_val2014_000000000872.jpg +../coco/images/val2014/COCO_val2014_000000001063.jpg +../coco/images/val2014/COCO_val2014_000000001554.jpg +../coco/images/val2014/COCO_val2014_000000001667.jpg +../coco/images/val2014/COCO_val2014_000000001700.jpg +../coco/images/val2014/COCO_val2014_000000001869.jpg +../coco/images/val2014/COCO_val2014_000000002124.jpg +../coco/images/val2014/COCO_val2014_000000002261.jpg +../coco/images/val2014/COCO_val2014_000000002621.jpg +../coco/images/val2014/COCO_val2014_000000002684.jpg +../coco/images/val2014/COCO_val2014_000000002764.jpg +../coco/images/val2014/COCO_val2014_000000002894.jpg +../coco/images/val2014/COCO_val2014_000000002972.jpg +../coco/images/val2014/COCO_val2014_000000003035.jpg +../coco/images/val2014/COCO_val2014_000000003084.jpg +../coco/images/val2014/COCO_val2014_000000003103.jpg +../coco/images/val2014/COCO_val2014_000000003109.jpg +../coco/images/val2014/COCO_val2014_000000003134.jpg +../coco/images/val2014/COCO_val2014_000000003209.jpg +../coco/images/val2014/COCO_val2014_000000003244.jpg +../coco/images/val2014/COCO_val2014_000000003326.jpg +../coco/images/val2014/COCO_val2014_000000003337.jpg +../coco/images/val2014/COCO_val2014_000000003661.jpg +../coco/images/val2014/COCO_val2014_000000003711.jpg +../coco/images/val2014/COCO_val2014_000000003779.jpg +../coco/images/val2014/COCO_val2014_000000003865.jpg +../coco/images/val2014/COCO_val2014_000000004079.jpg +../coco/images/val2014/COCO_val2014_000000004092.jpg +../coco/images/val2014/COCO_val2014_000000004283.jpg +../coco/images/val2014/COCO_val2014_000000004296.jpg +../coco/images/val2014/COCO_val2014_000000004392.jpg +../coco/images/val2014/COCO_val2014_000000004742.jpg +../coco/images/val2014/COCO_val2014_000000004754.jpg +../coco/images/val2014/COCO_val2014_000000004764.jpg +../coco/images/val2014/COCO_val2014_000000005038.jpg +../coco/images/val2014/COCO_val2014_000000005060.jpg +../coco/images/val2014/COCO_val2014_000000005124.jpg +../coco/images/val2014/COCO_val2014_000000005178.jpg +../coco/images/val2014/COCO_val2014_000000005205.jpg +../coco/images/val2014/COCO_val2014_000000005443.jpg +../coco/images/val2014/COCO_val2014_000000005652.jpg +../coco/images/val2014/COCO_val2014_000000005723.jpg +../coco/images/val2014/COCO_val2014_000000005804.jpg +../coco/images/val2014/COCO_val2014_000000006074.jpg +../coco/images/val2014/COCO_val2014_000000006091.jpg +../coco/images/val2014/COCO_val2014_000000006153.jpg +../coco/images/val2014/COCO_val2014_000000006213.jpg +../coco/images/val2014/COCO_val2014_000000006497.jpg +../coco/images/val2014/COCO_val2014_000000006789.jpg +../coco/images/val2014/COCO_val2014_000000006847.jpg +../coco/images/val2014/COCO_val2014_000000007241.jpg +../coco/images/val2014/COCO_val2014_000000007256.jpg +../coco/images/val2014/COCO_val2014_000000007281.jpg +../coco/images/val2014/COCO_val2014_000000007795.jpg +../coco/images/val2014/COCO_val2014_000000007867.jpg +../coco/images/val2014/COCO_val2014_000000007873.jpg +../coco/images/val2014/COCO_val2014_000000007899.jpg +../coco/images/val2014/COCO_val2014_000000008010.jpg +../coco/images/val2014/COCO_val2014_000000008179.jpg +../coco/images/val2014/COCO_val2014_000000008190.jpg +../coco/images/val2014/COCO_val2014_000000008204.jpg +../coco/images/val2014/COCO_val2014_000000008350.jpg +../coco/images/val2014/COCO_val2014_000000008493.jpg +../coco/images/val2014/COCO_val2014_000000008853.jpg +../coco/images/val2014/COCO_val2014_000000009105.jpg +../coco/images/val2014/COCO_val2014_000000009156.jpg +../coco/images/val2014/COCO_val2014_000000009217.jpg +../coco/images/val2014/COCO_val2014_000000009270.jpg +../coco/images/val2014/COCO_val2014_000000009286.jpg +../coco/images/val2014/COCO_val2014_000000009548.jpg +../coco/images/val2014/COCO_val2014_000000009553.jpg +../coco/images/val2014/COCO_val2014_000000009727.jpg +../coco/images/val2014/COCO_val2014_000000009908.jpg +../coco/images/val2014/COCO_val2014_000000010114.jpg +../coco/images/val2014/COCO_val2014_000000010249.jpg +../coco/images/val2014/COCO_val2014_000000010395.jpg +../coco/images/val2014/COCO_val2014_000000010400.jpg +../coco/images/val2014/COCO_val2014_000000010463.jpg +../coco/images/val2014/COCO_val2014_000000010613.jpg +../coco/images/val2014/COCO_val2014_000000010764.jpg +../coco/images/val2014/COCO_val2014_000000010779.jpg +../coco/images/val2014/COCO_val2014_000000010928.jpg +../coco/images/val2014/COCO_val2014_000000011099.jpg +../coco/images/val2014/COCO_val2014_000000011181.jpg +../coco/images/val2014/COCO_val2014_000000011184.jpg +../coco/images/val2014/COCO_val2014_000000011197.jpg +../coco/images/val2014/COCO_val2014_000000011320.jpg +../coco/images/val2014/COCO_val2014_000000011721.jpg +../coco/images/val2014/COCO_val2014_000000011813.jpg +../coco/images/val2014/COCO_val2014_000000012014.jpg +../coco/images/val2014/COCO_val2014_000000012047.jpg +../coco/images/val2014/COCO_val2014_000000012085.jpg +../coco/images/val2014/COCO_val2014_000000012115.jpg +../coco/images/val2014/COCO_val2014_000000012166.jpg +../coco/images/val2014/COCO_val2014_000000012230.jpg +../coco/images/val2014/COCO_val2014_000000012370.jpg +../coco/images/val2014/COCO_val2014_000000012375.jpg +../coco/images/val2014/COCO_val2014_000000012448.jpg +../coco/images/val2014/COCO_val2014_000000012543.jpg +../coco/images/val2014/COCO_val2014_000000012744.jpg +../coco/images/val2014/COCO_val2014_000000012897.jpg +../coco/images/val2014/COCO_val2014_000000012966.jpg +../coco/images/val2014/COCO_val2014_000000012993.jpg +../coco/images/val2014/COCO_val2014_000000013004.jpg +../coco/images/val2014/COCO_val2014_000000013333.jpg +../coco/images/val2014/COCO_val2014_000000013357.jpg +../coco/images/val2014/COCO_val2014_000000013774.jpg +../coco/images/val2014/COCO_val2014_000000014029.jpg +../coco/images/val2014/COCO_val2014_000000014056.jpg +../coco/images/val2014/COCO_val2014_000000014108.jpg +../coco/images/val2014/COCO_val2014_000000014135.jpg +../coco/images/val2014/COCO_val2014_000000014226.jpg +../coco/images/val2014/COCO_val2014_000000014306.jpg +../coco/images/val2014/COCO_val2014_000000014591.jpg +../coco/images/val2014/COCO_val2014_000000014629.jpg +../coco/images/val2014/COCO_val2014_000000014756.jpg +../coco/images/val2014/COCO_val2014_000000014874.jpg +../coco/images/val2014/COCO_val2014_000000014990.jpg +../coco/images/val2014/COCO_val2014_000000015386.jpg +../coco/images/val2014/COCO_val2014_000000015559.jpg +../coco/images/val2014/COCO_val2014_000000015599.jpg +../coco/images/val2014/COCO_val2014_000000015709.jpg +../coco/images/val2014/COCO_val2014_000000015735.jpg +../coco/images/val2014/COCO_val2014_000000015751.jpg +../coco/images/val2014/COCO_val2014_000000015883.jpg +../coco/images/val2014/COCO_val2014_000000015953.jpg +../coco/images/val2014/COCO_val2014_000000015956.jpg +../coco/images/val2014/COCO_val2014_000000015968.jpg +../coco/images/val2014/COCO_val2014_000000015987.jpg +../coco/images/val2014/COCO_val2014_000000016030.jpg +../coco/images/val2014/COCO_val2014_000000016076.jpg +../coco/images/val2014/COCO_val2014_000000016228.jpg +../coco/images/val2014/COCO_val2014_000000016241.jpg +../coco/images/val2014/COCO_val2014_000000016257.jpg +../coco/images/val2014/COCO_val2014_000000016327.jpg +../coco/images/val2014/COCO_val2014_000000016410.jpg +../coco/images/val2014/COCO_val2014_000000016574.jpg +../coco/images/val2014/COCO_val2014_000000016716.jpg +../coco/images/val2014/COCO_val2014_000000016928.jpg +../coco/images/val2014/COCO_val2014_000000016995.jpg +../coco/images/val2014/COCO_val2014_000000017235.jpg +../coco/images/val2014/COCO_val2014_000000017379.jpg +../coco/images/val2014/COCO_val2014_000000017667.jpg +../coco/images/val2014/COCO_val2014_000000017755.jpg +../coco/images/val2014/COCO_val2014_000000018295.jpg +../coco/images/val2014/COCO_val2014_000000018358.jpg +../coco/images/val2014/COCO_val2014_000000018476.jpg +../coco/images/val2014/COCO_val2014_000000018750.jpg +../coco/images/val2014/COCO_val2014_000000018783.jpg +../coco/images/val2014/COCO_val2014_000000019025.jpg +../coco/images/val2014/COCO_val2014_000000019042.jpg +../coco/images/val2014/COCO_val2014_000000019129.jpg +../coco/images/val2014/COCO_val2014_000000019176.jpg +../coco/images/val2014/COCO_val2014_000000019491.jpg +../coco/images/val2014/COCO_val2014_000000019890.jpg +../coco/images/val2014/COCO_val2014_000000019923.jpg +../coco/images/val2014/COCO_val2014_000000020001.jpg +../coco/images/val2014/COCO_val2014_000000020038.jpg +../coco/images/val2014/COCO_val2014_000000020175.jpg +../coco/images/val2014/COCO_val2014_000000020268.jpg +../coco/images/val2014/COCO_val2014_000000020273.jpg +../coco/images/val2014/COCO_val2014_000000020349.jpg +../coco/images/val2014/COCO_val2014_000000020553.jpg +../coco/images/val2014/COCO_val2014_000000020788.jpg +../coco/images/val2014/COCO_val2014_000000020912.jpg +../coco/images/val2014/COCO_val2014_000000020947.jpg +../coco/images/val2014/COCO_val2014_000000020972.jpg +../coco/images/val2014/COCO_val2014_000000021161.jpg +../coco/images/val2014/COCO_val2014_000000021483.jpg +../coco/images/val2014/COCO_val2014_000000021588.jpg +../coco/images/val2014/COCO_val2014_000000021639.jpg +../coco/images/val2014/COCO_val2014_000000021644.jpg +../coco/images/val2014/COCO_val2014_000000021645.jpg +../coco/images/val2014/COCO_val2014_000000021671.jpg +../coco/images/val2014/COCO_val2014_000000021746.jpg +../coco/images/val2014/COCO_val2014_000000021839.jpg +../coco/images/val2014/COCO_val2014_000000022002.jpg +../coco/images/val2014/COCO_val2014_000000022129.jpg +../coco/images/val2014/COCO_val2014_000000022191.jpg +../coco/images/val2014/COCO_val2014_000000022215.jpg +../coco/images/val2014/COCO_val2014_000000022341.jpg +../coco/images/val2014/COCO_val2014_000000022492.jpg +../coco/images/val2014/COCO_val2014_000000022563.jpg +../coco/images/val2014/COCO_val2014_000000022660.jpg +../coco/images/val2014/COCO_val2014_000000022705.jpg +../coco/images/val2014/COCO_val2014_000000023017.jpg +../coco/images/val2014/COCO_val2014_000000023309.jpg +../coco/images/val2014/COCO_val2014_000000023411.jpg +../coco/images/val2014/COCO_val2014_000000023754.jpg +../coco/images/val2014/COCO_val2014_000000023802.jpg +../coco/images/val2014/COCO_val2014_000000023981.jpg +../coco/images/val2014/COCO_val2014_000000023995.jpg +../coco/images/val2014/COCO_val2014_000000024112.jpg +../coco/images/val2014/COCO_val2014_000000024247.jpg +../coco/images/val2014/COCO_val2014_000000024396.jpg +../coco/images/val2014/COCO_val2014_000000024776.jpg +../coco/images/val2014/COCO_val2014_000000024924.jpg +../coco/images/val2014/COCO_val2014_000000025096.jpg +../coco/images/val2014/COCO_val2014_000000025191.jpg +../coco/images/val2014/COCO_val2014_000000025252.jpg +../coco/images/val2014/COCO_val2014_000000025293.jpg +../coco/images/val2014/COCO_val2014_000000025360.jpg +../coco/images/val2014/COCO_val2014_000000025595.jpg +../coco/images/val2014/COCO_val2014_000000025685.jpg +../coco/images/val2014/COCO_val2014_000000025807.jpg +../coco/images/val2014/COCO_val2014_000000025864.jpg +../coco/images/val2014/COCO_val2014_000000025989.jpg +../coco/images/val2014/COCO_val2014_000000026026.jpg +../coco/images/val2014/COCO_val2014_000000026430.jpg +../coco/images/val2014/COCO_val2014_000000026432.jpg +../coco/images/val2014/COCO_val2014_000000026534.jpg +../coco/images/val2014/COCO_val2014_000000026560.jpg +../coco/images/val2014/COCO_val2014_000000026564.jpg +../coco/images/val2014/COCO_val2014_000000026671.jpg +../coco/images/val2014/COCO_val2014_000000026690.jpg +../coco/images/val2014/COCO_val2014_000000026734.jpg +../coco/images/val2014/COCO_val2014_000000026799.jpg +../coco/images/val2014/COCO_val2014_000000026907.jpg +../coco/images/val2014/COCO_val2014_000000026908.jpg +../coco/images/val2014/COCO_val2014_000000026946.jpg +../coco/images/val2014/COCO_val2014_000000027530.jpg +../coco/images/val2014/COCO_val2014_000000027610.jpg +../coco/images/val2014/COCO_val2014_000000027620.jpg +../coco/images/val2014/COCO_val2014_000000027787.jpg +../coco/images/val2014/COCO_val2014_000000027789.jpg +../coco/images/val2014/COCO_val2014_000000027874.jpg +../coco/images/val2014/COCO_val2014_000000027946.jpg +../coco/images/val2014/COCO_val2014_000000027975.jpg +../coco/images/val2014/COCO_val2014_000000028022.jpg +../coco/images/val2014/COCO_val2014_000000028039.jpg +../coco/images/val2014/COCO_val2014_000000028273.jpg +../coco/images/val2014/COCO_val2014_000000028540.jpg +../coco/images/val2014/COCO_val2014_000000028702.jpg +../coco/images/val2014/COCO_val2014_000000028820.jpg +../coco/images/val2014/COCO_val2014_000000028874.jpg +../coco/images/val2014/COCO_val2014_000000029019.jpg +../coco/images/val2014/COCO_val2014_000000029030.jpg +../coco/images/val2014/COCO_val2014_000000029170.jpg +../coco/images/val2014/COCO_val2014_000000029308.jpg +../coco/images/val2014/COCO_val2014_000000029393.jpg +../coco/images/val2014/COCO_val2014_000000029524.jpg +../coco/images/val2014/COCO_val2014_000000029577.jpg +../coco/images/val2014/COCO_val2014_000000029648.jpg +../coco/images/val2014/COCO_val2014_000000029656.jpg +../coco/images/val2014/COCO_val2014_000000029697.jpg +../coco/images/val2014/COCO_val2014_000000029709.jpg +../coco/images/val2014/COCO_val2014_000000029719.jpg +../coco/images/val2014/COCO_val2014_000000030034.jpg +../coco/images/val2014/COCO_val2014_000000030062.jpg +../coco/images/val2014/COCO_val2014_000000030383.jpg +../coco/images/val2014/COCO_val2014_000000030470.jpg +../coco/images/val2014/COCO_val2014_000000030548.jpg +../coco/images/val2014/COCO_val2014_000000030668.jpg +../coco/images/val2014/COCO_val2014_000000030793.jpg +../coco/images/val2014/COCO_val2014_000000030843.jpg +../coco/images/val2014/COCO_val2014_000000030998.jpg +../coco/images/val2014/COCO_val2014_000000031151.jpg +../coco/images/val2014/COCO_val2014_000000031164.jpg +../coco/images/val2014/COCO_val2014_000000031176.jpg +../coco/images/val2014/COCO_val2014_000000031247.jpg +../coco/images/val2014/COCO_val2014_000000031392.jpg +../coco/images/val2014/COCO_val2014_000000031521.jpg +../coco/images/val2014/COCO_val2014_000000031542.jpg +../coco/images/val2014/COCO_val2014_000000031817.jpg +../coco/images/val2014/COCO_val2014_000000032081.jpg +../coco/images/val2014/COCO_val2014_000000032193.jpg +../coco/images/val2014/COCO_val2014_000000032331.jpg +../coco/images/val2014/COCO_val2014_000000032464.jpg +../coco/images/val2014/COCO_val2014_000000032510.jpg +../coco/images/val2014/COCO_val2014_000000032524.jpg +../coco/images/val2014/COCO_val2014_000000032625.jpg +../coco/images/val2014/COCO_val2014_000000032677.jpg +../coco/images/val2014/COCO_val2014_000000032715.jpg +../coco/images/val2014/COCO_val2014_000000032947.jpg +../coco/images/val2014/COCO_val2014_000000032964.jpg +../coco/images/val2014/COCO_val2014_000000033006.jpg +../coco/images/val2014/COCO_val2014_000000033055.jpg +../coco/images/val2014/COCO_val2014_000000033158.jpg +../coco/images/val2014/COCO_val2014_000000033243.jpg +../coco/images/val2014/COCO_val2014_000000033345.jpg +../coco/images/val2014/COCO_val2014_000000033499.jpg +../coco/images/val2014/COCO_val2014_000000033561.jpg +../coco/images/val2014/COCO_val2014_000000033830.jpg +../coco/images/val2014/COCO_val2014_000000033835.jpg +../coco/images/val2014/COCO_val2014_000000033924.jpg +../coco/images/val2014/COCO_val2014_000000034056.jpg +../coco/images/val2014/COCO_val2014_000000034114.jpg +../coco/images/val2014/COCO_val2014_000000034137.jpg +../coco/images/val2014/COCO_val2014_000000034183.jpg +../coco/images/val2014/COCO_val2014_000000034193.jpg +../coco/images/val2014/COCO_val2014_000000034299.jpg +../coco/images/val2014/COCO_val2014_000000034452.jpg +../coco/images/val2014/COCO_val2014_000000034689.jpg +../coco/images/val2014/COCO_val2014_000000034877.jpg +../coco/images/val2014/COCO_val2014_000000034892.jpg +../coco/images/val2014/COCO_val2014_000000034930.jpg +../coco/images/val2014/COCO_val2014_000000035012.jpg +../coco/images/val2014/COCO_val2014_000000035222.jpg +../coco/images/val2014/COCO_val2014_000000035326.jpg +../coco/images/val2014/COCO_val2014_000000035368.jpg +../coco/images/val2014/COCO_val2014_000000035474.jpg +../coco/images/val2014/COCO_val2014_000000035498.jpg +../coco/images/val2014/COCO_val2014_000000035738.jpg +../coco/images/val2014/COCO_val2014_000000035826.jpg +../coco/images/val2014/COCO_val2014_000000035940.jpg +../coco/images/val2014/COCO_val2014_000000035966.jpg +../coco/images/val2014/COCO_val2014_000000036049.jpg +../coco/images/val2014/COCO_val2014_000000036252.jpg +../coco/images/val2014/COCO_val2014_000000036508.jpg +../coco/images/val2014/COCO_val2014_000000036522.jpg +../coco/images/val2014/COCO_val2014_000000036539.jpg +../coco/images/val2014/COCO_val2014_000000036563.jpg +../coco/images/val2014/COCO_val2014_000000037038.jpg +../coco/images/val2014/COCO_val2014_000000037629.jpg +../coco/images/val2014/COCO_val2014_000000037675.jpg +../coco/images/val2014/COCO_val2014_000000037846.jpg +../coco/images/val2014/COCO_val2014_000000037865.jpg +../coco/images/val2014/COCO_val2014_000000037907.jpg +../coco/images/val2014/COCO_val2014_000000037988.jpg +../coco/images/val2014/COCO_val2014_000000038031.jpg +../coco/images/val2014/COCO_val2014_000000038190.jpg +../coco/images/val2014/COCO_val2014_000000038252.jpg +../coco/images/val2014/COCO_val2014_000000038296.jpg +../coco/images/val2014/COCO_val2014_000000038465.jpg +../coco/images/val2014/COCO_val2014_000000038488.jpg +../coco/images/val2014/COCO_val2014_000000038531.jpg +../coco/images/val2014/COCO_val2014_000000038539.jpg +../coco/images/val2014/COCO_val2014_000000038645.jpg +../coco/images/val2014/COCO_val2014_000000038685.jpg +../coco/images/val2014/COCO_val2014_000000038825.jpg +../coco/images/val2014/COCO_val2014_000000039322.jpg +../coco/images/val2014/COCO_val2014_000000039480.jpg +../coco/images/val2014/COCO_val2014_000000039697.jpg +../coco/images/val2014/COCO_val2014_000000039731.jpg +../coco/images/val2014/COCO_val2014_000000039743.jpg +../coco/images/val2014/COCO_val2014_000000039785.jpg +../coco/images/val2014/COCO_val2014_000000039961.jpg +../coco/images/val2014/COCO_val2014_000000040426.jpg +../coco/images/val2014/COCO_val2014_000000040485.jpg +../coco/images/val2014/COCO_val2014_000000040681.jpg +../coco/images/val2014/COCO_val2014_000000040686.jpg +../coco/images/val2014/COCO_val2014_000000040886.jpg +../coco/images/val2014/COCO_val2014_000000041119.jpg +../coco/images/val2014/COCO_val2014_000000041147.jpg +../coco/images/val2014/COCO_val2014_000000041322.jpg +../coco/images/val2014/COCO_val2014_000000041373.jpg +../coco/images/val2014/COCO_val2014_000000041550.jpg +../coco/images/val2014/COCO_val2014_000000041635.jpg +../coco/images/val2014/COCO_val2014_000000041867.jpg +../coco/images/val2014/COCO_val2014_000000041872.jpg +../coco/images/val2014/COCO_val2014_000000041924.jpg +../coco/images/val2014/COCO_val2014_000000042137.jpg +../coco/images/val2014/COCO_val2014_000000042279.jpg +../coco/images/val2014/COCO_val2014_000000042492.jpg +../coco/images/val2014/COCO_val2014_000000042576.jpg +../coco/images/val2014/COCO_val2014_000000042661.jpg +../coco/images/val2014/COCO_val2014_000000042743.jpg +../coco/images/val2014/COCO_val2014_000000042805.jpg +../coco/images/val2014/COCO_val2014_000000042837.jpg +../coco/images/val2014/COCO_val2014_000000043165.jpg +../coco/images/val2014/COCO_val2014_000000043218.jpg +../coco/images/val2014/COCO_val2014_000000043261.jpg +../coco/images/val2014/COCO_val2014_000000043404.jpg +../coco/images/val2014/COCO_val2014_000000043542.jpg +../coco/images/val2014/COCO_val2014_000000043605.jpg +../coco/images/val2014/COCO_val2014_000000043614.jpg +../coco/images/val2014/COCO_val2014_000000043673.jpg +../coco/images/val2014/COCO_val2014_000000043816.jpg +../coco/images/val2014/COCO_val2014_000000043850.jpg +../coco/images/val2014/COCO_val2014_000000044220.jpg +../coco/images/val2014/COCO_val2014_000000044269.jpg +../coco/images/val2014/COCO_val2014_000000044309.jpg +../coco/images/val2014/COCO_val2014_000000044478.jpg +../coco/images/val2014/COCO_val2014_000000044536.jpg +../coco/images/val2014/COCO_val2014_000000044559.jpg +../coco/images/val2014/COCO_val2014_000000044575.jpg +../coco/images/val2014/COCO_val2014_000000044612.jpg +../coco/images/val2014/COCO_val2014_000000044677.jpg +../coco/images/val2014/COCO_val2014_000000044699.jpg +../coco/images/val2014/COCO_val2014_000000044823.jpg +../coco/images/val2014/COCO_val2014_000000044989.jpg +../coco/images/val2014/COCO_val2014_000000045094.jpg +../coco/images/val2014/COCO_val2014_000000045176.jpg +../coco/images/val2014/COCO_val2014_000000045197.jpg +../coco/images/val2014/COCO_val2014_000000045367.jpg +../coco/images/val2014/COCO_val2014_000000045392.jpg +../coco/images/val2014/COCO_val2014_000000045433.jpg +../coco/images/val2014/COCO_val2014_000000045463.jpg +../coco/images/val2014/COCO_val2014_000000045550.jpg +../coco/images/val2014/COCO_val2014_000000045574.jpg +../coco/images/val2014/COCO_val2014_000000045627.jpg +../coco/images/val2014/COCO_val2014_000000045685.jpg +../coco/images/val2014/COCO_val2014_000000045728.jpg +../coco/images/val2014/COCO_val2014_000000046252.jpg +../coco/images/val2014/COCO_val2014_000000046269.jpg +../coco/images/val2014/COCO_val2014_000000046329.jpg +../coco/images/val2014/COCO_val2014_000000046805.jpg +../coco/images/val2014/COCO_val2014_000000046869.jpg +../coco/images/val2014/COCO_val2014_000000046919.jpg +../coco/images/val2014/COCO_val2014_000000046924.jpg +../coco/images/val2014/COCO_val2014_000000047008.jpg +../coco/images/val2014/COCO_val2014_000000047131.jpg +../coco/images/val2014/COCO_val2014_000000047226.jpg +../coco/images/val2014/COCO_val2014_000000047263.jpg +../coco/images/val2014/COCO_val2014_000000047395.jpg +../coco/images/val2014/COCO_val2014_000000047552.jpg +../coco/images/val2014/COCO_val2014_000000047570.jpg +../coco/images/val2014/COCO_val2014_000000047720.jpg +../coco/images/val2014/COCO_val2014_000000047775.jpg +../coco/images/val2014/COCO_val2014_000000047886.jpg +../coco/images/val2014/COCO_val2014_000000048504.jpg +../coco/images/val2014/COCO_val2014_000000048564.jpg +../coco/images/val2014/COCO_val2014_000000048668.jpg +../coco/images/val2014/COCO_val2014_000000048731.jpg +../coco/images/val2014/COCO_val2014_000000048739.jpg +../coco/images/val2014/COCO_val2014_000000048791.jpg +../coco/images/val2014/COCO_val2014_000000048840.jpg +../coco/images/val2014/COCO_val2014_000000048905.jpg +../coco/images/val2014/COCO_val2014_000000048910.jpg +../coco/images/val2014/COCO_val2014_000000048924.jpg +../coco/images/val2014/COCO_val2014_000000048956.jpg +../coco/images/val2014/COCO_val2014_000000049075.jpg +../coco/images/val2014/COCO_val2014_000000049236.jpg +../coco/images/val2014/COCO_val2014_000000049676.jpg +../coco/images/val2014/COCO_val2014_000000049881.jpg +../coco/images/val2014/COCO_val2014_000000049985.jpg +../coco/images/val2014/COCO_val2014_000000050100.jpg +../coco/images/val2014/COCO_val2014_000000050145.jpg +../coco/images/val2014/COCO_val2014_000000050177.jpg +../coco/images/val2014/COCO_val2014_000000050324.jpg +../coco/images/val2014/COCO_val2014_000000050331.jpg +../coco/images/val2014/COCO_val2014_000000050481.jpg +../coco/images/val2014/COCO_val2014_000000050485.jpg +../coco/images/val2014/COCO_val2014_000000050493.jpg +../coco/images/val2014/COCO_val2014_000000050746.jpg +../coco/images/val2014/COCO_val2014_000000050844.jpg +../coco/images/val2014/COCO_val2014_000000050896.jpg +../coco/images/val2014/COCO_val2014_000000051249.jpg +../coco/images/val2014/COCO_val2014_000000051250.jpg +../coco/images/val2014/COCO_val2014_000000051289.jpg +../coco/images/val2014/COCO_val2014_000000051314.jpg +../coco/images/val2014/COCO_val2014_000000051339.jpg +../coco/images/val2014/COCO_val2014_000000051461.jpg +../coco/images/val2014/COCO_val2014_000000051476.jpg +../coco/images/val2014/COCO_val2014_000000052005.jpg +../coco/images/val2014/COCO_val2014_000000052020.jpg +../coco/images/val2014/COCO_val2014_000000052290.jpg +../coco/images/val2014/COCO_val2014_000000052314.jpg +../coco/images/val2014/COCO_val2014_000000052425.jpg +../coco/images/val2014/COCO_val2014_000000052575.jpg +../coco/images/val2014/COCO_val2014_000000052871.jpg +../coco/images/val2014/COCO_val2014_000000052982.jpg +../coco/images/val2014/COCO_val2014_000000053139.jpg +../coco/images/val2014/COCO_val2014_000000053183.jpg +../coco/images/val2014/COCO_val2014_000000053263.jpg +../coco/images/val2014/COCO_val2014_000000053491.jpg +../coco/images/val2014/COCO_val2014_000000053503.jpg +../coco/images/val2014/COCO_val2014_000000053580.jpg +../coco/images/val2014/COCO_val2014_000000053616.jpg +../coco/images/val2014/COCO_val2014_000000053907.jpg +../coco/images/val2014/COCO_val2014_000000053949.jpg +../coco/images/val2014/COCO_val2014_000000054301.jpg +../coco/images/val2014/COCO_val2014_000000054334.jpg +../coco/images/val2014/COCO_val2014_000000054490.jpg +../coco/images/val2014/COCO_val2014_000000054527.jpg +../coco/images/val2014/COCO_val2014_000000054533.jpg +../coco/images/val2014/COCO_val2014_000000054603.jpg +../coco/images/val2014/COCO_val2014_000000054643.jpg +../coco/images/val2014/COCO_val2014_000000054679.jpg +../coco/images/val2014/COCO_val2014_000000054723.jpg +../coco/images/val2014/COCO_val2014_000000054959.jpg +../coco/images/val2014/COCO_val2014_000000055167.jpg +../coco/images/val2014/COCO_val2014_000000056137.jpg +../coco/images/val2014/COCO_val2014_000000056326.jpg +../coco/images/val2014/COCO_val2014_000000056541.jpg +../coco/images/val2014/COCO_val2014_000000056562.jpg +../coco/images/val2014/COCO_val2014_000000056624.jpg +../coco/images/val2014/COCO_val2014_000000056633.jpg +../coco/images/val2014/COCO_val2014_000000056724.jpg +../coco/images/val2014/COCO_val2014_000000056739.jpg +../coco/images/val2014/COCO_val2014_000000057027.jpg +../coco/images/val2014/COCO_val2014_000000057091.jpg +../coco/images/val2014/COCO_val2014_000000057095.jpg +../coco/images/val2014/COCO_val2014_000000057100.jpg +../coco/images/val2014/COCO_val2014_000000057149.jpg +../coco/images/val2014/COCO_val2014_000000057238.jpg +../coco/images/val2014/COCO_val2014_000000057359.jpg +../coco/images/val2014/COCO_val2014_000000057454.jpg +../coco/images/val2014/COCO_val2014_000000058001.jpg +../coco/images/val2014/COCO_val2014_000000058157.jpg +../coco/images/val2014/COCO_val2014_000000058223.jpg diff --git a/utils/gcp.sh b/utils/gcp.sh index 13f9c685..054ad228 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -50,14 +50,15 @@ git clone https://github.com/ultralytics/yolov3 # master cp -r weights yolov3 cp -r cocoapi/PythonAPI/pycocotools yolov3 cd yolov3 +python3 train.py --nosave --data data/coco_100val.data -mv ../utils.py utils +#mv ../utils.py utils rm results*.txt # WARNING: removes existing results -python3 train.py --nosave --data data/coco_1img.data && mv results.txt resultsn_1img.txt -python3 train.py --nosave --data data/coco_10img.data && mv results.txt resultsn_10img.txt -python3 train.py --nosave --data data/coco_100img.data && mv results.txt resultsn_100img.txt -python3 train.py --nosave --data data/coco_100img.data --transfer && mv results.txt resultsn_100imgTL.txt +python3 train.py --nosave --data data/coco_1img.data && mv results.txt results3_1img.txt +python3 train.py --nosave --data data/coco_10img.data && mv results.txt results3_10img.txt +python3 train.py --nosave --data data/coco_100img.data && mv results.txt results3_100img.txt +python3 train.py --nosave --data data/coco_100img.data --transfer && mv results.txt results3_100imgTL.txt # python3 train.py --nosave --data data/coco_1000img.data && mv results.txt results_1000img.txt python3 -c "from utils import utils; utils.plot_results()" gsutil cp results*.txt gs://ultralytics From 9990e72e6d7425ec4a0160c5f2b013d7d83726d8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 00:02:24 +0200 Subject: [PATCH 0671/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 0b3eb4e4..5bce4adc 100644 --- a/train.py +++ b/train.py @@ -92,7 +92,7 @@ def train( dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=num_workers, - shuffle=True, + shuffle=False, pin_memory=True, collate_fn=dataset.collate_fn, sampler=sampler) From f5d343b9a6f6225e5b2b26a064555c4789f12bf4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 02:15:45 +0200 Subject: [PATCH 0672/2595] updates --- data/coco_1000val.data | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 data/coco_1000val.data diff --git a/data/coco_1000val.data b/data/coco_1000val.data new file mode 100644 index 00000000..1f27bc0d --- /dev/null +++ b/data/coco_1000val.data @@ -0,0 +1,6 @@ +classes=80 +train=./data/coco_1000img.txt +valid=./data/coco_500val.txt +names=data/coco.names +backup=backup/ +eval=coco From 447a3d923d87ca5aba63d6dbdb403b8f154e2652 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 12:42:10 +0200 Subject: [PATCH 0673/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 5bce4adc..0b3eb4e4 100644 --- a/train.py +++ b/train.py @@ -92,7 +92,7 @@ def train( dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=num_workers, - shuffle=False, + shuffle=True, pin_memory=True, collate_fn=dataset.collate_fn, sampler=sampler) From 6d226285693ef23a09df53004ec02db592b4000b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 13:25:17 +0200 Subject: [PATCH 0674/2595] updates --- data/coco_16img.txt | 16 ++++++++++++++++ data/coco_32img.txt | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 data/coco_16img.txt create mode 100644 data/coco_32img.txt diff --git a/data/coco_16img.txt b/data/coco_16img.txt new file mode 100644 index 00000000..03d84a27 --- /dev/null +++ b/data/coco_16img.txt @@ -0,0 +1,16 @@ +../coco/images/train2014/COCO_train2014_000000000009.jpg +../coco/images/train2014/COCO_train2014_000000000025.jpg +../coco/images/train2014/COCO_train2014_000000000030.jpg +../coco/images/train2014/COCO_train2014_000000000034.jpg +../coco/images/train2014/COCO_train2014_000000000036.jpg +../coco/images/train2014/COCO_train2014_000000000049.jpg +../coco/images/train2014/COCO_train2014_000000000061.jpg +../coco/images/train2014/COCO_train2014_000000000064.jpg +../coco/images/train2014/COCO_train2014_000000000071.jpg +../coco/images/train2014/COCO_train2014_000000000072.jpg +../coco/images/train2014/COCO_train2014_000000000077.jpg +../coco/images/train2014/COCO_train2014_000000000078.jpg +../coco/images/train2014/COCO_train2014_000000000081.jpg +../coco/images/train2014/COCO_train2014_000000000086.jpg +../coco/images/train2014/COCO_train2014_000000000089.jpg +../coco/images/train2014/COCO_train2014_000000000092.jpg diff --git a/data/coco_32img.txt b/data/coco_32img.txt new file mode 100644 index 00000000..75b86be8 --- /dev/null +++ b/data/coco_32img.txt @@ -0,0 +1,32 @@ +../coco/images/train2014/COCO_train2014_000000000009.jpg +../coco/images/train2014/COCO_train2014_000000000025.jpg +../coco/images/train2014/COCO_train2014_000000000030.jpg +../coco/images/train2014/COCO_train2014_000000000034.jpg +../coco/images/train2014/COCO_train2014_000000000036.jpg +../coco/images/train2014/COCO_train2014_000000000049.jpg +../coco/images/train2014/COCO_train2014_000000000061.jpg +../coco/images/train2014/COCO_train2014_000000000064.jpg +../coco/images/train2014/COCO_train2014_000000000071.jpg +../coco/images/train2014/COCO_train2014_000000000072.jpg +../coco/images/train2014/COCO_train2014_000000000077.jpg +../coco/images/train2014/COCO_train2014_000000000078.jpg +../coco/images/train2014/COCO_train2014_000000000081.jpg +../coco/images/train2014/COCO_train2014_000000000086.jpg +../coco/images/train2014/COCO_train2014_000000000089.jpg +../coco/images/train2014/COCO_train2014_000000000092.jpg +../coco/images/train2014/COCO_train2014_000000000094.jpg +../coco/images/train2014/COCO_train2014_000000000109.jpg +../coco/images/train2014/COCO_train2014_000000000110.jpg +../coco/images/train2014/COCO_train2014_000000000113.jpg +../coco/images/train2014/COCO_train2014_000000000127.jpg +../coco/images/train2014/COCO_train2014_000000000138.jpg +../coco/images/train2014/COCO_train2014_000000000142.jpg +../coco/images/train2014/COCO_train2014_000000000144.jpg +../coco/images/train2014/COCO_train2014_000000000149.jpg +../coco/images/train2014/COCO_train2014_000000000151.jpg +../coco/images/train2014/COCO_train2014_000000000154.jpg +../coco/images/train2014/COCO_train2014_000000000165.jpg +../coco/images/train2014/COCO_train2014_000000000194.jpg +../coco/images/train2014/COCO_train2014_000000000201.jpg +../coco/images/train2014/COCO_train2014_000000000247.jpg +../coco/images/train2014/COCO_train2014_000000000260.jpg From 628d7e5081c691c21a798aa52a7e8238c44210de Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 13:26:41 +0200 Subject: [PATCH 0675/2595] updates --- data/coco_16img.data | 6 ++++++ data/coco_32img.data | 6 ++++++ 2 files changed, 12 insertions(+) create mode 100644 data/coco_16img.data create mode 100644 data/coco_32img.data diff --git a/data/coco_16img.data b/data/coco_16img.data new file mode 100644 index 00000000..2843a884 --- /dev/null +++ b/data/coco_16img.data @@ -0,0 +1,6 @@ +classes=80 +train=./data/coco_16img.txt +valid=./data/coco_16img.txt +names=data/coco.names +backup=backup/ +eval=coco diff --git a/data/coco_32img.data b/data/coco_32img.data new file mode 100644 index 00000000..8fceee7f --- /dev/null +++ b/data/coco_32img.data @@ -0,0 +1,6 @@ +classes=80 +train=./data/coco_32img.txt +valid=./data/coco_32img.txt +names=data/coco.names +backup=backup/ +eval=coco From 582becc4bf6ea31618daf4a40260f3c009c96701 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 13:30:28 +0200 Subject: [PATCH 0676/2595] updates --- train.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 0b3eb4e4..5ea0aa16 100644 --- a/train.py +++ b/train.py @@ -178,8 +178,11 @@ def train( print('multi_scale img_size = %g' % dataset.img_size) # Calculate mAP - with torch.no_grad(): - results = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size, model=model, conf_thres=0.1) + if opt.nosave and epochs < 10: + results = (0, 0, 0, 0, 0) + else: + with torch.no_grad(): + results = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size, model=model, conf_thres=0.1) # Write epoch results with open('results.txt', 'a') as file: From b04ea48153b86acec8785690fe7192ad848f62a5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 13:34:17 +0200 Subject: [PATCH 0677/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 5ea0aa16..99f3f840 100644 --- a/train.py +++ b/train.py @@ -178,7 +178,7 @@ def train( print('multi_scale img_size = %g' % dataset.img_size) # Calculate mAP - if opt.nosave and epochs < 10: + if opt.nosave and epoch < 10: results = (0, 0, 0, 0, 0) else: with torch.no_grad(): From 9c5524ba82f9ab84bcfec4614b254262eb760b16 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 14:57:39 +0200 Subject: [PATCH 0678/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index a3795e64..26a450f5 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -520,7 +520,7 @@ def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() fig = plt.figure(figsize=(14, 7)) s = ['X + Y', 'Width + Height', 'Confidence', 'Classification', 'Train Loss', 'Precision', 'Recall', 'mAP', 'F1', 'Test Loss'] - for f in sorted(glob.glob('results*.txt')): + for f in sorted(glob.glob('results*.txt') + glob.glob('../../Downloads/results*.txt')): results = np.loadtxt(f, usecols=[2, 3, 4, 5, 6, 9, 10, 11, 12, 13]).T n = results.shape[1] # number of rows x = range(start, min(stop, n) if stop else n) From 0b8a28e3dd2da29cf541740956b75fae0c6995ce Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 15:52:51 +0200 Subject: [PATCH 0679/2595] updates --- test.py | 5 +---- train.py | 46 +++++++++++++++++++++++++++++++--------------- utils/gcp.sh | 11 ++++++++--- utils/utils.py | 22 ++++++++++++---------- 4 files changed, 52 insertions(+), 32 deletions(-) diff --git a/test.py b/test.py index 686a8f5d..6e4d4654 100644 --- a/test.py +++ b/test.py @@ -68,11 +68,8 @@ def test( # Run model inf_out, train_out = model(imgs) # inference and training outputs - # Build targets - target_list = build_targets(model, targets) - # Compute loss - loss_i, _ = compute_loss(train_out, target_list) + loss_i, _ = compute_loss(train_out, targets, model) loss += loss_i.item() # Run NMS diff --git a/train.py b/train.py index 99f3f840..ebe257ac 100644 --- a/train.py +++ b/train.py @@ -2,6 +2,7 @@ import argparse import time import torch.distributed as dist +import torch.optim as optim from torch.utils.data import DataLoader import test # Import test.py to get mAP after each epoch @@ -41,9 +42,21 @@ def train( # Initialize model model = Darknet(cfg, img_size).to(device) + # Initialize hyperparameters + hyp = {'k': 8.4875, # loss multiple + 'xy': 0.079756, # xy loss fraction + 'wh': 0.010461, # wh loss fraction + 'cls': 0.02105, # cls loss fraction + 'conf': 0.88873, # conf loss fraction + 'iou_t': 0.1, # iou target-anchor training threshold + 'lr0': 0.001, # initial learning rate + 'lrf': -2., # final learning rate = lr0 * (10 ** lrf) + 'momentum': 0.9, # SGD momentum + 'weight_decay': 0.0005, # optimizer weight decay + } + # Optimizer - lr0 = 0.001 # initial learning rate - optimizer = torch.optim.SGD(model.parameters(), lr=lr0, momentum=0.9, weight_decay=0.0005) + optimizer = optim.SGD(model.parameters(), lr=hyp['lr0'], momentum=hyp['momentum'], weight_decay=hyp['weight_decay']) cutoff = -1 # backbone reaches to cutoff layer start_epoch = 0 @@ -74,8 +87,11 @@ def train( cutoff = load_darknet_weights(model, weights + 'darknet53.conv.74') # Scheduler (reduce lr at epochs 218, 245, i.e. batches 400k, 450k) - scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=[218, 245], gamma=0.1, - last_epoch=start_epoch - 1) + # lf = lambda x: 1 - x / epochs # linear ramp to zero + # lf = lambda x: 10 ** (-2 * x / epochs) # exp ramp to lr0 * 1e-2 + # lf = lambda x: 1 - 10 ** (-2 * (1 - x / epochs)) # inv exp ramp to lr0 * 1e-2 + # scheduler = optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lf, last_epoch=start_epoch - 1) + scheduler = optim.lr_scheduler.MultiStepLR(optimizer, milestones=[218, 245], gamma=0.1, last_epoch=start_epoch - 1) # Dataset dataset = LoadImagesAndLabels(train_path, img_size=img_size, augment=True) @@ -105,9 +121,10 @@ def train( # Start training t = time.time() + model.hyp = hyp # attach hyperparameters to model model_info(model) - nB = len(dataloader) - n_burnin = min(round(nB / 5 + 1), 1000) # burn-in batches + nb = len(dataloader) + n_burnin = min(round(nb / 5 + 1), 1000) # burn-in batches os.remove('train_batch0.jpg') if os.path.exists('train_batch0.jpg') else None os.remove('test_batch0.jpg') if os.path.exists('test_batch0.jpg') else None for epoch in range(start_epoch, epochs): @@ -123,7 +140,7 @@ def train( if int(name.split('.')[1]) < cutoff: # if layer < 75 p.requires_grad = False if epoch == 0 else True - mloss = torch.zeros(5).to(device) # mean losses + mloss = torch.zeros(5).to(device) # mean losses for i, (imgs, targets, _, _) in enumerate(dataloader): imgs = imgs.to(device) targets = targets.to(device) @@ -137,18 +154,15 @@ def train( # SGD burn-in if epoch == 0 and i <= n_burnin: - lr = lr0 * (i / n_burnin) ** 4 + lr = hyp['lr0'] * (i / n_burnin) ** 4 for x in optimizer.param_groups: x['lr'] = lr # Run model pred = model(imgs) - # Build targets - target_list = build_targets(model, targets) - # Compute loss - loss, loss_items = compute_loss(pred, target_list) + loss, loss_items = compute_loss(pred, targets, model) # Compute gradient if mixed_precision: @@ -158,7 +172,7 @@ def train( loss.backward() # Accumulate gradient for x batches before optimizing - if (i + 1) % accumulate == 0 or (i + 1) == nB: + if (i + 1) % accumulate == 0 or (i + 1) == nb: optimizer.step() optimizer.zero_grad() @@ -168,7 +182,7 @@ def train( # Print batch results s = ('%8s%12s' + '%10.3g' * 7) % ( '%g/%g' % (epoch, epochs - 1), - '%g/%g' % (i, nB - 1), *mloss, nt, time.time() - t) + '%g/%g' % (i, nb - 1), *mloss, nt, time.time() - t) t = time.time() print(s) @@ -182,7 +196,8 @@ def train( results = (0, 0, 0, 0, 0) else: with torch.no_grad(): - results = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size, model=model, conf_thres=0.1) + results = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size, model=model, + conf_thres=0.1) # Write epoch results with open('results.txt', 'a') as file: @@ -235,6 +250,7 @@ if __name__ == '__main__': parser.add_argument('--world-size', default=1, type=int, help='number of nodes for distributed training') parser.add_argument('--backend', default='nccl', type=str, help='distributed backend') parser.add_argument('--nosave', action='store_true', help='do not save training results') + parser.add_argument('--var', default=0, type=int, help='debug variable') opt = parser.parse_args() print(opt, end='\n\n') diff --git a/utils/gcp.sh b/utils/gcp.sh index 054ad228..88a76cf5 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -50,14 +50,19 @@ git clone https://github.com/ultralytics/yolov3 # master cp -r weights yolov3 cp -r cocoapi/PythonAPI/pycocotools yolov3 cd yolov3 -python3 train.py --nosave --data data/coco_100val.data +python3 train.py --nosave --data data/coco_32img.data --var 4 && mv results.txt results_t2.txt +python3 train.py --nosave --data data/coco_32img.data --var 5 && mv results.txt results_t3.txt +python3 -c "from utils import utils; utils.plot_results()" +gsutil cp results*.txt gs://ultralytics +gsutil cp results.png gs://ultralytics +sudo shutdown -#mv ../utils.py utils +mv ../train.py . rm results*.txt # WARNING: removes existing results python3 train.py --nosave --data data/coco_1img.data && mv results.txt results3_1img.txt python3 train.py --nosave --data data/coco_10img.data && mv results.txt results3_10img.txt -python3 train.py --nosave --data data/coco_100img.data && mv results.txt results3_100img.txt +python3 train.py --nosave --data data/coco_100img.data && mv results.txt results4_100img.txt python3 train.py --nosave --data data/coco_100img.data --transfer && mv results.txt results3_100imgTL.txt # python3 train.py --nosave --data data/coco_1000img.data && mv results.txt results_1000img.txt python3 -c "from utils import utils; utils.plot_results()" diff --git a/utils/utils.py b/utils/utils.py index 26a450f5..ecccf7cc 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -242,35 +242,37 @@ def wh_iou(box1, box2): return inter_area / union_area # iou -def compute_loss(p, targets): # predictions, targets +def compute_loss(p, targets, model): # predictions, targets, model ft = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor lxy, lwh, lcls, lconf = ft([0]), ft([0]), ft([0]), ft([0]) - txy, twh, tcls, indices = targets + txy, twh, tcls, indices = build_targets(model, targets) + + # Define criteria MSE = nn.MSELoss() CE = nn.CrossEntropyLoss() BCE = nn.BCEWithLogitsLoss() # Compute losses + h = model.hyp # hyperparameters bs = p[0].shape[0] # batch size - # gp = [x.numel() for x in tconf] # grid points + k = h['k'] * bs # loss gain for i, pi0 in enumerate(p): # layer i predictions, i b, a, gj, gi = indices[i] # image, anchor, gridx, gridy tconf = torch.zeros_like(pi0[..., 0]) # conf # Compute losses - k = 8.4875 * bs if len(b): # number of targets pi = pi0[b, a, gj, gi] # predictions closest to anchors tconf[b, a, gj, gi] = 1 # conf + # pi[..., 2:4] = torch.sigmoid(pi[..., 2:4]) # wh power loss (uncomment) - lxy += (k * 0.079756) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss - lwh += (k * 0.010461) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss - # lwh += (k * 0.010461) * MSE(torch.sigmoid(pi[..., 2:4]), twh[i]) # wh power loss - lcls += (k * 0.02105) * CE(pi[..., 5:], tcls[i]) # class_conf loss + lxy += (k * h['xy']) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss + lwh += (k * h['wh']) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss + lcls += (k * h['cls']) * CE(pi[..., 5:], tcls[i]) # class_conf loss # pos_weight = ft([gp[i] / min(gp) * 4.]) # BCE = nn.BCEWithLogitsLoss(pos_weight=pos_weight) - lconf += (k * 0.88873) * BCE(pi0[..., 4], tconf) # obj_conf loss + lconf += (k * h['conf']) * BCE(pi0[..., 4], tconf) # obj_conf loss loss = lxy + lwh + lconf + lcls return loss, torch.cat((lxy, lwh, lconf, lcls, loss)).detach() @@ -296,7 +298,7 @@ def build_targets(model, targets): # reject below threshold ious (OPTIONAL, increases P, lowers R) reject = True if reject: - j = iou > 0.10 + j = iou > model.hyp['iou_t'] # hyperparameter t, a, gwh = targets[j], a[j], gwh[j] # Indices From a95e47533adcaed9002b5f12ba5312258096e2aa Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 16:11:26 +0200 Subject: [PATCH 0680/2595] updates --- test.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index 6e4d4654..4f70d297 100644 --- a/test.py +++ b/test.py @@ -69,8 +69,9 @@ def test( inf_out, train_out = model(imgs) # inference and training outputs # Compute loss - loss_i, _ = compute_loss(train_out, targets, model) - loss += loss_i.item() + if hasattr(model, 'hyp'): # if model has loss hyperparameters + loss_i, _ = compute_loss(train_out, targets, model) + loss += loss_i.item() # Run NMS output = non_max_suppression(inf_out, conf_thres=conf_thres, nms_thres=nms_thres) From 5f04b93b42f2650858797a88e4b423793bf53985 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 16:15:08 +0200 Subject: [PATCH 0681/2595] updates --- train.py | 48 ++++++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/train.py b/train.py index ebe257ac..edbb1186 100644 --- a/train.py +++ b/train.py @@ -10,6 +10,19 @@ from models import * from utils.datasets import * from utils.utils import * +# Initialize hyperparameters +hyp = {'k': 8.4875, # loss multiple + 'xy': 0.079756, # xy loss fraction + 'wh': 0.010461, # wh loss fraction + 'cls': 0.02105, # cls loss fraction + 'conf': 0.88873, # conf loss fraction + 'iou_t': 0.1, # iou target-anchor training threshold + 'lr0': 0.001, # initial learning rate + 'lrf': -2., # final learning rate = lr0 * (10 ** lrf) + 'momentum': 0.9, # SGD momentum + 'weight_decay': 0.0005, # optimizer weight decay + } + def train( cfg, @@ -42,19 +55,6 @@ def train( # Initialize model model = Darknet(cfg, img_size).to(device) - # Initialize hyperparameters - hyp = {'k': 8.4875, # loss multiple - 'xy': 0.079756, # xy loss fraction - 'wh': 0.010461, # wh loss fraction - 'cls': 0.02105, # cls loss fraction - 'conf': 0.88873, # conf loss fraction - 'iou_t': 0.1, # iou target-anchor training threshold - 'lr0': 0.001, # initial learning rate - 'lrf': -2., # final learning rate = lr0 * (10 ** lrf) - 'momentum': 0.9, # SGD momentum - 'weight_decay': 0.0005, # optimizer weight decay - } - # Optimizer optimizer = optim.SGD(model.parameters(), lr=hyp['lr0'], momentum=hyp['momentum'], weight_decay=hyp['weight_decay']) @@ -93,6 +93,12 @@ def train( # scheduler = optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lf, last_epoch=start_epoch - 1) scheduler = optim.lr_scheduler.MultiStepLR(optimizer, milestones=[218, 245], gamma=0.1, last_epoch=start_epoch - 1) + # y = [] + # for epoch in range(epochs): + # scheduler.step() + # y.append(optimizer.param_groups[0]['lr']) + # plt.plot(y) + # Dataset dataset = LoadImagesAndLabels(train_path, img_size=img_size, augment=True) @@ -124,6 +130,7 @@ def train( model.hyp = hyp # attach hyperparameters to model model_info(model) nb = len(dataloader) + results = (0, 0, 0, 0, 0) # P, R, mAP, F1, test_loss n_burnin = min(round(nb / 5 + 1), 1000) # burn-in batches os.remove('train_batch0.jpg') if os.path.exists('train_batch0.jpg') else None os.remove('test_batch0.jpg') if os.path.exists('test_batch0.jpg') else None @@ -192,12 +199,8 @@ def train( print('multi_scale img_size = %g' % dataset.img_size) # Calculate mAP - if opt.nosave and epoch < 10: - results = (0, 0, 0, 0, 0) - else: - with torch.no_grad(): - results = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size, model=model, - conf_thres=0.1) + if not opt.nosave or epoch > 10: # skip testing first 10 epochs if opt.nosave + results = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size, model=model, conf_thres=0.1) # Write epoch results with open('results.txt', 'a') as file: @@ -232,6 +235,8 @@ def train( # Delete checkpoint del chkpt + return results + if __name__ == '__main__': parser = argparse.ArgumentParser() @@ -239,7 +244,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulate', type=int, default=1, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco_1img.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=416, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') @@ -255,8 +260,7 @@ if __name__ == '__main__': print(opt, end='\n\n') init_seeds() - - train( + results = train( opt.cfg, opt.data_cfg, img_size=opt.img_size, From f380c7abd2737262ac5d96a7eaf89d1e1b7ed50d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 17:27:51 +0200 Subject: [PATCH 0682/2595] updates --- train.py | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 57 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index edbb1186..0c93eba0 100644 --- a/train.py +++ b/train.py @@ -36,8 +36,8 @@ def train( freeze_backbone=False, num_workers=4, transfer=False # Transfer learning (train only YOLO layers) - ): + init_seeds() weights = 'weights' + os.sep latest = weights + 'latest.pt' best = weights + 'best.pt' @@ -199,7 +199,8 @@ def train( print('multi_scale img_size = %g' % dataset.img_size) # Calculate mAP - if not opt.nosave or epoch > 10: # skip testing first 10 epochs if opt.nosave + opt.notest = opt.notest or (opt.nosave and epoch < 10) # skip testing first 10 epochs if opt.nosave + if not opt.notest or epoch == epochs - 1: # always test final epoch results = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size, model=model, conf_thres=0.1) # Write epoch results @@ -255,11 +256,13 @@ if __name__ == '__main__': parser.add_argument('--world-size', default=1, type=int, help='number of nodes for distributed training') parser.add_argument('--backend', default='nccl', type=str, help='distributed backend') parser.add_argument('--nosave', action='store_true', help='do not save training results') + parser.add_argument('--notest', action='store_true', help='only test final epoch') + parser.add_argument('--evolve', action='store_true', help='run hyperparameter evolution') parser.add_argument('--var', default=0, type=int, help='debug variable') opt = parser.parse_args() print(opt, end='\n\n') - init_seeds() + # Train results = train( opt.cfg, opt.data_cfg, @@ -272,3 +275,54 @@ if __name__ == '__main__': multi_scale=opt.multi_scale, num_workers=opt.num_workers ) + + # Evolve hyperparameters (optional) + if opt.evolve: + opt.notest = True # save time by only testing final epoch + best_fitness = results[2] # use mAP for fitness + + gen = 30 # generations to evolve + for _ in range(gen): + + # Mutate hyperparameters + old_hyp = hyp.copy() + init_seeds(int(time.time())) + for k in hyp.keys(): + x = (np.random.randn(1) * 0.3 + 1) ** 1.1 # plt.hist(x.ravel(), 100) + hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma + + # Normalize loss components (sum to 1) + lcf = ['xy', 'wh', 'cls', 'conf'] + s = sum([v for k, v in hyp.items() if k in lcf]) + for k in lcf: + hyp[k] /= s + + # Determine mutation fitness + results = train( + opt.cfg, + opt.data_cfg, + img_size=opt.img_size, + resume=opt.resume or opt.transfer, + transfer=opt.transfer, + epochs=opt.epochs, + batch_size=opt.batch_size, + accumulate=opt.accumulate, + multi_scale=opt.multi_scale, + num_workers=opt.num_workers + ) + mutation_fitness = results[2] + + # Write mutation results + sr = '%11.3g' * 5 % results # results string (P, R, mAP, F1, test_loss) + sh = '%11.4g' * len(hyp) % tuple(hyp.values()) # hyp string + print('Evolved hyperparams: %s\nEvolved fitness: %s\n' % (sh, sr)) + with open('evolve.txt', 'a') as f: + f.write(sr + sh + '\n') + + # Update hyperparameters if fitness improved + if mutation_fitness > best_fitness: + # Fitness improved! + print('Fitness improved!') + best_fitness = mutation_fitness + else: + hyp = old_hyp.copy() # reset hyp to From fb88cb060909661f490cdeb1095eef7ed6a79edf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 17:29:23 +0200 Subject: [PATCH 0683/2595] updates --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 0c93eba0..f3f54803 100644 --- a/train.py +++ b/train.py @@ -89,9 +89,9 @@ def train( # Scheduler (reduce lr at epochs 218, 245, i.e. batches 400k, 450k) # lf = lambda x: 1 - x / epochs # linear ramp to zero # lf = lambda x: 10 ** (-2 * x / epochs) # exp ramp to lr0 * 1e-2 - # lf = lambda x: 1 - 10 ** (-2 * (1 - x / epochs)) # inv exp ramp to lr0 * 1e-2 - # scheduler = optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lf, last_epoch=start_epoch - 1) - scheduler = optim.lr_scheduler.MultiStepLR(optimizer, milestones=[218, 245], gamma=0.1, last_epoch=start_epoch - 1) + lf = lambda x: 1 - 10 ** (-2 * (1 - x / epochs)) # inv exp ramp to lr0 * 1e-2 + scheduler = optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lf, last_epoch=start_epoch - 1) + # scheduler = optim.lr_scheduler.MultiStepLR(optimizer, milestones=[218, 245], gamma=0.1, last_epoch=start_epoch - 1) # y = [] # for epoch in range(epochs): From 5d467c8ac4b7cceea7d2370153e084e9d01fa1cd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 17:31:40 +0200 Subject: [PATCH 0684/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index f3f54803..df26a531 100644 --- a/train.py +++ b/train.py @@ -245,7 +245,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulate', type=int, default=1, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco_1img.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=416, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') From c2809622c1143eb9a67d97aba0b3214b20816c64 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 17:35:00 +0200 Subject: [PATCH 0685/2595] updates --- train.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index df26a531..b5410b46 100644 --- a/train.py +++ b/train.py @@ -201,7 +201,9 @@ def train( # Calculate mAP opt.notest = opt.notest or (opt.nosave and epoch < 10) # skip testing first 10 epochs if opt.nosave if not opt.notest or epoch == epochs - 1: # always test final epoch - results = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size, model=model, conf_thres=0.1) + with torch.no_grad(): + results = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size, model=model, + conf_thres=0.1) # Write epoch results with open('results.txt', 'a') as file: From 4107315afe8cb7d35f5ee1c132967e70792619b1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 17:41:05 +0200 Subject: [PATCH 0686/2595] updates --- train.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/train.py b/train.py index b5410b46..c0c0aacf 100644 --- a/train.py +++ b/train.py @@ -199,8 +199,7 @@ def train( print('multi_scale img_size = %g' % dataset.img_size) # Calculate mAP - opt.notest = opt.notest or (opt.nosave and epoch < 10) # skip testing first 10 epochs if opt.nosave - if not opt.notest or epoch == epochs - 1: # always test final epoch + if not (opt.notest or (opt.nosave and epoch < 2)) or epoch == epochs - 1: # always test final epoch with torch.no_grad(): results = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size, model=model, conf_thres=0.1) From bf966d177f6d4d7b6e571b95847c8a6e95a78452 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 17:42:17 +0200 Subject: [PATCH 0687/2595] updates --- train.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index c0c0aacf..ba001eb3 100644 --- a/train.py +++ b/train.py @@ -113,7 +113,7 @@ def train( # Dataloader dataloader = DataLoader(dataset, batch_size=batch_size, - num_workers=num_workers, + num_workers=0, shuffle=True, pin_memory=True, collate_fn=dataset.collate_fn, @@ -198,8 +198,8 @@ def train( dataset.img_size = random.choice(range(10, 20)) * 32 print('multi_scale img_size = %g' % dataset.img_size) - # Calculate mAP - if not (opt.notest or (opt.nosave and epoch < 2)) or epoch == epochs - 1: # always test final epoch + # Calculate mAP (always test final epoch, skip first 5 if opt.nosave) + if not (opt.notest or (opt.nosave and epoch < 5)) or epoch == epochs - 1: with torch.no_grad(): results = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size, model=model, conf_thres=0.1) @@ -246,7 +246,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulate', type=int, default=1, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco_1img.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=416, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') From 663e06f4f90b350d109afd9fedfa58fda2e55d5f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 17:49:00 +0200 Subject: [PATCH 0688/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index ba001eb3..f487c7f3 100644 --- a/train.py +++ b/train.py @@ -316,7 +316,7 @@ if __name__ == '__main__': # Write mutation results sr = '%11.3g' * 5 % results # results string (P, R, mAP, F1, test_loss) sh = '%11.4g' * len(hyp) % tuple(hyp.values()) # hyp string - print('Evolved hyperparams: %s\nEvolved fitness: %s\n' % (sh, sr)) + print('Evolved hyperparams: %s\nEvolved fitness: %s' % (sh, sr)) with open('evolve.txt', 'a') as f: f.write(sr + sh + '\n') From 46c55ac3bd9793127481a63220c99653ee529f42 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 17:51:39 +0200 Subject: [PATCH 0689/2595] updates --- train.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index f487c7f3..d81de382 100644 --- a/train.py +++ b/train.py @@ -263,6 +263,10 @@ if __name__ == '__main__': opt = parser.parse_args() print(opt, end='\n\n') + if opt.evolve: + opt.notest = True # save time by only testing final epoch + opt.nosave = True # do not save checkpoints + # Train results = train( opt.cfg, @@ -279,7 +283,6 @@ if __name__ == '__main__': # Evolve hyperparameters (optional) if opt.evolve: - opt.notest = True # save time by only testing final epoch best_fitness = results[2] # use mAP for fitness gen = 30 # generations to evolve From ddab3802eb96f648ed432f59fb94f542fbf03530 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 17:59:01 +0200 Subject: [PATCH 0690/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index d81de382..8002c671 100644 --- a/train.py +++ b/train.py @@ -113,7 +113,7 @@ def train( # Dataloader dataloader = DataLoader(dataset, batch_size=batch_size, - num_workers=0, + num_workers=opt.num_workers, shuffle=True, pin_memory=True, collate_fn=dataset.collate_fn, @@ -246,7 +246,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulate', type=int, default=1, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco_1img.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=416, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') From 27ca52c9eecbb6e85d212d24a5ef6f2d61398137 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 18:22:40 +0200 Subject: [PATCH 0691/2595] updates --- train.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/train.py b/train.py index 8002c671..13268620 100644 --- a/train.py +++ b/train.py @@ -285,6 +285,13 @@ if __name__ == '__main__': if opt.evolve: best_fitness = results[2] # use mAP for fitness + # Write mutation results + sr = '%11.3g' * 5 % results # results string (P, R, mAP, F1, test_loss) + sh = '%11.4g' * len(hyp) % tuple(hyp.values()) # hyp string + print('Evolved hyperparams: %s\nEvolved fitness: %s' % (sh, sr)) + with open('evolve.txt', 'a') as f: + f.write(sr + sh + '\n') + gen = 30 # generations to evolve for _ in range(gen): From 7787090165e5473ab8dae2a89e2ac51178c4bae3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 18:33:16 +0200 Subject: [PATCH 0692/2595] updates --- train.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index 13268620..bbfb55f5 100644 --- a/train.py +++ b/train.py @@ -113,7 +113,7 @@ def train( # Dataloader dataloader = DataLoader(dataset, batch_size=batch_size, - num_workers=opt.num_workers, + num_workers=0, shuffle=True, pin_memory=True, collate_fn=dataset.collate_fn, @@ -170,6 +170,9 @@ def train( # Compute loss loss, loss_items = compute_loss(pred, targets, model) + if torch.isnan(loss): + print('WARNING: nan loss detected, ending training') + return results # Compute gradient if mixed_precision: From 5fe0346176235520ba42a1271235e30ca1f9d7ba Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 18:40:12 +0200 Subject: [PATCH 0693/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index bbfb55f5..6bd361bb 100644 --- a/train.py +++ b/train.py @@ -113,7 +113,7 @@ def train( # Dataloader dataloader = DataLoader(dataset, batch_size=batch_size, - num_workers=0, + num_workers=opt.num_workers, shuffle=True, pin_memory=True, collate_fn=dataset.collate_fn, From 319c0988cc0145aebfc2ff38cc45c89f5b2f17a7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 18:48:08 +0200 Subject: [PATCH 0694/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 6bd361bb..7ff15b7d 100644 --- a/train.py +++ b/train.py @@ -300,7 +300,7 @@ if __name__ == '__main__': # Mutate hyperparameters old_hyp = hyp.copy() - init_seeds(int(time.time())) + init_seeds(seed=int(time.time())) for k in hyp.keys(): x = (np.random.randn(1) * 0.3 + 1) ** 1.1 # plt.hist(x.ravel(), 100) hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma From 2ed0de9785d502c8c4b75035e27f899ce9d18b29 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 19:04:01 +0200 Subject: [PATCH 0695/2595] updates --- train.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/train.py b/train.py index 7ff15b7d..8c386687 100644 --- a/train.py +++ b/train.py @@ -305,6 +305,11 @@ if __name__ == '__main__': x = (np.random.randn(1) * 0.3 + 1) ** 1.1 # plt.hist(x.ravel(), 100) hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma + # Apply limits + hyp['iou_t'] = np.clip(hyp['iou_t'], 0, 0.90) + hyp['momentum'] = np.clip(hyp['momentum'], 0, 0.98) + hyp['weight_decay'] = np.clip(hyp['weight_decay'], 0, 0.01) + # Normalize loss components (sum to 1) lcf = ['xy', 'wh', 'cls', 'conf'] s = sum([v for k, v in hyp.items() if k in lcf]) From 5f21139623049edeb9c356eddba026464a0bec69 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 17 Apr 2019 19:06:15 +0200 Subject: [PATCH 0696/2595] updates --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 8c386687..d6364fc0 100644 --- a/train.py +++ b/train.py @@ -302,13 +302,13 @@ if __name__ == '__main__': old_hyp = hyp.copy() init_seeds(seed=int(time.time())) for k in hyp.keys(): - x = (np.random.randn(1) * 0.3 + 1) ** 1.1 # plt.hist(x.ravel(), 100) + x = (np.random.randn(1) * 0.2 + 1) ** 1.1 # plt.hist(x.ravel(), 100) hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma # Apply limits hyp['iou_t'] = np.clip(hyp['iou_t'], 0, 0.90) - hyp['momentum'] = np.clip(hyp['momentum'], 0, 0.98) - hyp['weight_decay'] = np.clip(hyp['weight_decay'], 0, 0.01) + hyp['momentum'] = 0.9 # np.clip(hyp['momentum'], 0, 0.98) + hyp['weight_decay'] = 0.0005 # np.clip(hyp['weight_decay'], 0, 0.01) # Normalize loss components (sum to 1) lcf = ['xy', 'wh', 'cls', 'conf'] From 9a440cfa159613870b43b84c62e7dd5cef3e9a85 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 02:13:04 +0200 Subject: [PATCH 0697/2595] updates --- utils/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index ecccf7cc..77469cd2 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -280,6 +280,7 @@ def compute_loss(p, targets, model): # predictions, targets, model def build_targets(model, targets): # targets = [image, class, x, y, w, h] + iou_thres = model.hyp['iou_t'] # hyperparameter if type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel): model = model.module @@ -298,7 +299,7 @@ def build_targets(model, targets): # reject below threshold ious (OPTIONAL, increases P, lowers R) reject = True if reject: - j = iou > model.hyp['iou_t'] # hyperparameter + j = iou > iou_thres t, a, gwh = targets[j], a[j], gwh[j] # Indices From 8831913f10628e800e67ab2831f0ded4887cb690 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 12:21:39 +0200 Subject: [PATCH 0698/2595] updates --- train.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index d6364fc0..25f88de6 100644 --- a/train.py +++ b/train.py @@ -301,14 +301,15 @@ if __name__ == '__main__': # Mutate hyperparameters old_hyp = hyp.copy() init_seeds(seed=int(time.time())) - for k in hyp.keys(): - x = (np.random.randn(1) * 0.2 + 1) ** 1.1 # plt.hist(x.ravel(), 100) + s = [.3, .3, .3, .3, .3, .3, .3, .3, .05, .3] + for i, k in enumerate(hyp.keys()): + x = (np.random.randn(1) * s[i] + 1) ** 1.1 # plt.hist(x.ravel(), 100) hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma # Apply limits hyp['iou_t'] = np.clip(hyp['iou_t'], 0, 0.90) - hyp['momentum'] = 0.9 # np.clip(hyp['momentum'], 0, 0.98) - hyp['weight_decay'] = 0.0005 # np.clip(hyp['weight_decay'], 0, 0.01) + hyp['momentum'] = np.clip(hyp['momentum'], 0.7, 0.98) + hyp['weight_decay'] = np.clip(hyp['weight_decay'], 0, 0.01) # Normalize loss components (sum to 1) lcf = ['xy', 'wh', 'cls', 'conf'] @@ -345,3 +346,13 @@ if __name__ == '__main__': best_fitness = mutation_fitness else: hyp = old_hyp.copy() # reset hyp to + + +import numpy as np +import matplotlib.pyplot as plt +a = np.loadtxt('evolve.txt') +x = a[:,3] +fig = plt.figure(figsize=(14, 7)) +for i in range(1,10): + plt.subplot(2,5,i) + plt.plot(x,a[:,i+5],'.') From f4dc0d84e4c320480273ddeb6ad768db47b0a254 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 12:27:28 +0200 Subject: [PATCH 0699/2595] updates --- train.py | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/train.py b/train.py index 25f88de6..82cd3642 100644 --- a/train.py +++ b/train.py @@ -11,14 +11,14 @@ from utils.datasets import * from utils.utils import * # Initialize hyperparameters -hyp = {'k': 8.4875, # loss multiple - 'xy': 0.079756, # xy loss fraction - 'wh': 0.010461, # wh loss fraction - 'cls': 0.02105, # cls loss fraction - 'conf': 0.88873, # conf loss fraction - 'iou_t': 0.1, # iou target-anchor training threshold - 'lr0': 0.001, # initial learning rate - 'lrf': -2., # final learning rate = lr0 * (10 ** lrf) +hyp = {'k': 6.927, # loss multiple + 'xy': 0.07556, # xy loss fraction + 'wh': 0.008074, # wh loss fraction + 'cls': 0.01113, # cls loss fraction + 'conf': 0.9052, # conf loss fraction + 'iou_t': 0.06154, # iou target-anchor training threshold + 'lr0': 0.001136, # initial learning rate + 'lrf': -2.52, # final learning rate = lr0 * (10 ** lrf) 'momentum': 0.9, # SGD momentum 'weight_decay': 0.0005, # optimizer weight decay } @@ -89,7 +89,7 @@ def train( # Scheduler (reduce lr at epochs 218, 245, i.e. batches 400k, 450k) # lf = lambda x: 1 - x / epochs # linear ramp to zero # lf = lambda x: 10 ** (-2 * x / epochs) # exp ramp to lr0 * 1e-2 - lf = lambda x: 1 - 10 ** (-2 * (1 - x / epochs)) # inv exp ramp to lr0 * 1e-2 + lf = lambda x: 1 - 10 ** (hyp['lrf'] * (1 - x / epochs)) # inv exp ramp to lr0 * 1e-2 scheduler = optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lf, last_epoch=start_epoch - 1) # scheduler = optim.lr_scheduler.MultiStepLR(optimizer, milestones=[218, 245], gamma=0.1, last_epoch=start_epoch - 1) @@ -347,12 +347,13 @@ if __name__ == '__main__': else: hyp = old_hyp.copy() # reset hyp to - -import numpy as np -import matplotlib.pyplot as plt -a = np.loadtxt('evolve.txt') -x = a[:,3] -fig = plt.figure(figsize=(14, 7)) -for i in range(1,10): - plt.subplot(2,5,i) - plt.plot(x,a[:,i+5],'.') + # # Plot results + # import numpy as np + # import matplotlib.pyplot as plt + # + # a = np.loadtxt('evolve.txt') + # x = a[:, 3] + # fig = plt.figure(figsize=(14, 7)) + # for i in range(1, 10): + # plt.subplot(2, 5, i) + # plt.plot(x, a[:, i + 5], '.') From 2089e4f4c84be7105df44caa2005e821adf980a4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 14:33:32 +0200 Subject: [PATCH 0700/2595] updates --- utils/datasets.py | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index ae30dbb9..35f7c702 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -154,22 +154,17 @@ class LoadImagesAndLabels(Dataset): # for training/testing if self.augment and augment_hsv: # SV augmentation by 50% fraction = 0.50 # must be < 1.0 - img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) - S = img_hsv[:, :, 1].astype(np.float32) - V = img_hsv[:, :, 2].astype(np.float32) + img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # hue, sat, val + S = img_hsv[:, :, 1].astype(np.float32) # saturation + V = img_hsv[:, :, 2].astype(np.float32) # value a = (random.random() * 2 - 1) * fraction + 1 + b = (random.random() * 2 - 1) * fraction + 1 S *= a - if a > 1: - np.clip(S, None, 255, out=S) + V *= b - a = (random.random() * 2 - 1) * fraction + 1 - V *= a - if a > 1: - np.clip(V, None, 255, out=V) - - img_hsv[:, :, 1] = S # .astype(np.uint8) - img_hsv[:, :, 2] = V # .astype(np.uint8) + img_hsv[:, :, 1] = S if a < 1 else S.clip(None, 255) + img_hsv[:, :, 2] = V if b < 1 else V.clip(None, 255) cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) h, w, _ = img.shape From 286257c5aca89e2e91cc0d3a9ec1de9b599805ab Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 14:47:05 +0200 Subject: [PATCH 0701/2595] updates --- utils/datasets.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 35f7c702..ff1a0a11 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -131,15 +131,20 @@ class LoadWebcam: # for inference class LoadImagesAndLabels(Dataset): # for training/testing def __init__(self, path, img_size=416, augment=False): with open(path, 'r') as file: - self.img_files = file.read().splitlines() - self.img_files = list(filter(lambda x: len(x) > 0, self.img_files)) - assert len(self.img_files) > 0, 'No images found in %s' % path + img_files = file.read().splitlines() + self.img_files = list(filter(lambda x: len(x) > 0, img_files)) + + n = len(self.img_files) + assert n > 0, 'No images found in %s' % path self.img_size = img_size self.augment = augment self.label_files = [ x.replace('images', 'labels').replace('.bmp', '.txt').replace('.jpg', '.txt').replace('.png', '.txt') for x in self.img_files] + if n < 200: # preload all images into memory if possible + self.imgs = (cv2.imread(img_files[i]) for i in range(n)) + def __len__(self): return len(self.img_files) @@ -147,7 +152,10 @@ class LoadImagesAndLabels(Dataset): # for training/testing img_path = self.img_files[index] label_path = self.label_files[index] - img = cv2.imread(img_path) # BGR + if hasattr(self, 'imgs'): + img = self.imgs[index] # BGR + else: + img = cv2.imread(img_path) # BGR assert img is not None, 'File Not Found ' + img_path augment_hsv = True From c5e58b64843c9b94ce30bb2477c463431e64e67b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 14:48:14 +0200 Subject: [PATCH 0702/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index ff1a0a11..ab681f4e 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -143,7 +143,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing for x in self.img_files] if n < 200: # preload all images into memory if possible - self.imgs = (cv2.imread(img_files[i]) for i in range(n)) + self.imgs = [cv2.imread(img_files[i]) for i in range(n)] def __len__(self): return len(self.img_files) From b177d01695f334c9fe294fbf01c21737a1f1c580 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 15:01:58 +0200 Subject: [PATCH 0703/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 82cd3642..ce2be533 100644 --- a/train.py +++ b/train.py @@ -301,14 +301,14 @@ if __name__ == '__main__': # Mutate hyperparameters old_hyp = hyp.copy() init_seeds(seed=int(time.time())) - s = [.3, .3, .3, .3, .3, .3, .3, .3, .05, .3] + s = [.3, .3, .3, .3, .3, .3, .3, .3, .03, .3] for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 1.1 # plt.hist(x.ravel(), 100) hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma # Apply limits hyp['iou_t'] = np.clip(hyp['iou_t'], 0, 0.90) - hyp['momentum'] = np.clip(hyp['momentum'], 0.7, 0.98) + hyp['momentum'] = np.clip(hyp['momentum'], 0.8, 0.95) hyp['weight_decay'] = np.clip(hyp['weight_decay'], 0, 0.01) # Normalize loss components (sum to 1) From 48f6529fd1ffe9b281eca099344cdb96bb1c5403 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 15:17:31 +0200 Subject: [PATCH 0704/2595] updates --- train.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/train.py b/train.py index ce2be533..6f143853 100644 --- a/train.py +++ b/train.py @@ -243,6 +243,17 @@ def train( return results +def print_mutation(hyp, results): + # Write mutation results + sl = '%11s' * len(hyp) % tuple(hyp.keys()) # hyperparam keys + sr = '%11.3g' * len(results) % results # results (P, R, mAP, F1, test_loss) + sh = '%11.4g' * len(hyp) % tuple(hyp.values()) # hyperparam values + print('\n%s\n%s\nEvolved fitness: %s\n' % (sl, sh, sr)) + + with open('evolve.txt', 'a') as f: + f.write(sr + sh + '\n') + + if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--epochs', type=int, default=273, help='number of epochs') @@ -289,11 +300,7 @@ if __name__ == '__main__': best_fitness = results[2] # use mAP for fitness # Write mutation results - sr = '%11.3g' * 5 % results # results string (P, R, mAP, F1, test_loss) - sh = '%11.4g' * len(hyp) % tuple(hyp.values()) # hyp string - print('Evolved hyperparams: %s\nEvolved fitness: %s' % (sh, sr)) - with open('evolve.txt', 'a') as f: - f.write(sr + sh + '\n') + print_mutation(hyp, results) gen = 30 # generations to evolve for _ in range(gen): @@ -333,11 +340,7 @@ if __name__ == '__main__': mutation_fitness = results[2] # Write mutation results - sr = '%11.3g' * 5 % results # results string (P, R, mAP, F1, test_loss) - sh = '%11.4g' * len(hyp) % tuple(hyp.values()) # hyp string - print('Evolved hyperparams: %s\nEvolved fitness: %s' % (sh, sr)) - with open('evolve.txt', 'a') as f: - f.write(sr + sh + '\n') + print_mutation(hyp, results) # Update hyperparameters if fitness improved if mutation_fitness > best_fitness: From ee410481a08a2aee67b57c288627a8d2d3fa599a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 15:18:09 +0200 Subject: [PATCH 0705/2595] updates --- train.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/train.py b/train.py index 6f143853..9551db3c 100644 --- a/train.py +++ b/train.py @@ -245,13 +245,12 @@ def train( def print_mutation(hyp, results): # Write mutation results - sl = '%11s' * len(hyp) % tuple(hyp.keys()) # hyperparam keys - sr = '%11.3g' * len(results) % results # results (P, R, mAP, F1, test_loss) - sh = '%11.4g' * len(hyp) % tuple(hyp.values()) # hyperparam values - print('\n%s\n%s\nEvolved fitness: %s\n' % (sl, sh, sr)) - + a = '%11s' * len(hyp) % tuple(hyp.keys()) # hyperparam keys + b = '%11.3g' * len(results) % results # results (P, R, mAP, F1, test_loss) + c = '%11.4g' * len(hyp) % tuple(hyp.values()) # hyperparam values + print('\n%s\n%s\nEvolved fitness: %s\n' % (a, b, c)) with open('evolve.txt', 'a') as f: - f.write(sr + sh + '\n') + f.write(a + b + '\n') if __name__ == '__main__': From 8fcfb6ac3af96c087aafc4d75a6e31253456fe97 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 15:24:58 +0200 Subject: [PATCH 0706/2595] updates --- train.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/train.py b/train.py index 9551db3c..2099dd60 100644 --- a/train.py +++ b/train.py @@ -93,11 +93,11 @@ def train( scheduler = optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lf, last_epoch=start_epoch - 1) # scheduler = optim.lr_scheduler.MultiStepLR(optimizer, milestones=[218, 245], gamma=0.1, last_epoch=start_epoch - 1) - # y = [] - # for epoch in range(epochs): - # scheduler.step() - # y.append(optimizer.param_groups[0]['lr']) - # plt.plot(y) + y = [] + for _ in range(epochs): + scheduler.step() + y.append(optimizer.param_groups[0]['lr']) + plt.plot(y) # Dataset dataset = LoadImagesAndLabels(train_path, img_size=img_size, augment=True) @@ -246,11 +246,11 @@ def train( def print_mutation(hyp, results): # Write mutation results a = '%11s' * len(hyp) % tuple(hyp.keys()) # hyperparam keys - b = '%11.3g' * len(results) % results # results (P, R, mAP, F1, test_loss) - c = '%11.4g' * len(hyp) % tuple(hyp.values()) # hyperparam values + b = '%11.4g' * len(hyp) % tuple(hyp.values()) # hyperparam values + c = '%11.3g' * len(results) % results # results (P, R, mAP, F1, test_loss) print('\n%s\n%s\nEvolved fitness: %s\n' % (a, b, c)) with open('evolve.txt', 'a') as f: - f.write(a + b + '\n') + f.write(c + a + '\n') if __name__ == '__main__': From 25bf9e36114bfad9aa2a4d1ab90941e7970aa906 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 15:31:03 +0200 Subject: [PATCH 0707/2595] updates --- train.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index 2099dd60..3a70f195 100644 --- a/train.py +++ b/train.py @@ -93,11 +93,12 @@ def train( scheduler = optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lf, last_epoch=start_epoch - 1) # scheduler = optim.lr_scheduler.MultiStepLR(optimizer, milestones=[218, 245], gamma=0.1, last_epoch=start_epoch - 1) - y = [] - for _ in range(epochs): - scheduler.step() - y.append(optimizer.param_groups[0]['lr']) - plt.plot(y) + # Plot lr schedule + # y = [] + # for _ in range(epochs): + # scheduler.step() + # y.append(optimizer.param_groups[0]['lr']) + # plt.plot(y) # Dataset dataset = LoadImagesAndLabels(train_path, img_size=img_size, augment=True) From a4f2ad1660bd23ca2a27a1b9d9b0e774babb5e7b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 15:39:05 +0200 Subject: [PATCH 0708/2595] updates --- train.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index 3a70f195..99d5ad37 100644 --- a/train.py +++ b/train.py @@ -10,7 +10,7 @@ from models import * from utils.datasets import * from utils.utils import * -# Initialize hyperparameters +# Hyperparameters hyp = {'k': 6.927, # loss multiple 'xy': 0.07556, # xy loss fraction 'wh': 0.008074, # wh loss fraction @@ -34,7 +34,6 @@ def train( accumulate=1, multi_scale=False, freeze_backbone=False, - num_workers=4, transfer=False # Transfer learning (train only YOLO layers) ): init_seeds() @@ -45,7 +44,7 @@ def train( if multi_scale: img_size = 608 # initiate with maximum multi_scale size - num_workers = 0 # bug https://github.com/ultralytics/yolov3/issues/174 + opt.num_workers = 0 # bug https://github.com/ultralytics/yolov3/issues/174 else: torch.backends.cudnn.benchmark = True # unsuitable for multiscale @@ -292,7 +291,6 @@ if __name__ == '__main__': batch_size=opt.batch_size, accumulate=opt.accumulate, multi_scale=opt.multi_scale, - num_workers=opt.num_workers ) # Evolve hyperparameters (optional) @@ -335,7 +333,6 @@ if __name__ == '__main__': batch_size=opt.batch_size, accumulate=opt.accumulate, multi_scale=opt.multi_scale, - num_workers=opt.num_workers ) mutation_fitness = results[2] From c711719280443ecffc9b90d7f66c8a730982f8b0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 15:56:31 +0200 Subject: [PATCH 0709/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 99d5ad37..6c4bffec 100644 --- a/train.py +++ b/train.py @@ -250,7 +250,7 @@ def print_mutation(hyp, results): c = '%11.3g' * len(results) % results # results (P, R, mAP, F1, test_loss) print('\n%s\n%s\nEvolved fitness: %s\n' % (a, b, c)) with open('evolve.txt', 'a') as f: - f.write(c + a + '\n') + f.write(c + b + '\n') if __name__ == '__main__': @@ -306,7 +306,7 @@ if __name__ == '__main__': # Mutate hyperparameters old_hyp = hyp.copy() init_seeds(seed=int(time.time())) - s = [.3, .3, .3, .3, .3, .3, .3, .3, .03, .3] + s = [.2, .2, .2, .2, .2, .2, .2, .2, .02, .2] for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 1.1 # plt.hist(x.ravel(), 100) hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma From b7c5eb1503b26572b740658668dd520dc5e2c070 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 16:07:47 +0200 Subject: [PATCH 0710/2595] updates --- utils/gcp.sh | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 88a76cf5..e9d72597 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -43,6 +43,17 @@ gsutil cp gs://ultralytics/latest.pt yolov3/weights/latest.pt wget https://storage.googleapis.com/ultralytics/yolov3/latest_v1_0.pt -O weights/latest_v1_0.pt wget https://storage.googleapis.com/ultralytics/yolov3/best_v1_0.pt -O weights/best_v1_0.pt +# Reproduce tutorials +rm results*.txt # WARNING: removes existing results +python3 train.py --nosave --data data/coco_1img.data && mv results.txt results3_1img.txt +python3 train.py --nosave --data data/coco_10img.data && mv results.txt results3_10img.txt +python3 train.py --nosave --data data/coco_100img.data && mv results.txt results4_100img.txt +python3 train.py --nosave --data data/coco_100img.data --transfer && mv results.txt results3_100imgTL.txt +python3 -c "from utils import utils; utils.plot_results()" +gsutil cp results*.txt gs://ultralytics +gsutil cp results.png gs://ultralytics +sudo shutdown + # Debug/Development sudo rm -rf yolov3 git clone https://github.com/ultralytics/yolov3 # master @@ -50,24 +61,8 @@ git clone https://github.com/ultralytics/yolov3 # master cp -r weights yolov3 cp -r cocoapi/PythonAPI/pycocotools yolov3 cd yolov3 -python3 train.py --nosave --data data/coco_32img.data --var 4 && mv results.txt results_t2.txt -python3 train.py --nosave --data data/coco_32img.data --var 5 && mv results.txt results_t3.txt -python3 -c "from utils import utils; utils.plot_results()" -gsutil cp results*.txt gs://ultralytics -gsutil cp results.png gs://ultralytics -sudo shutdown - -mv ../train.py . - -rm results*.txt # WARNING: removes existing results -python3 train.py --nosave --data data/coco_1img.data && mv results.txt results3_1img.txt -python3 train.py --nosave --data data/coco_10img.data && mv results.txt results3_10img.txt -python3 train.py --nosave --data data/coco_100img.data && mv results.txt results4_100img.txt -python3 train.py --nosave --data data/coco_100img.data --transfer && mv results.txt results3_100imgTL.txt -# python3 train.py --nosave --data data/coco_1000img.data && mv results.txt results_1000img.txt -python3 -c "from utils import utils; utils.plot_results()" -gsutil cp results*.txt gs://ultralytics -gsutil cp results.png gs://ultralytics -sudo shutdown +python3 train.py --evolve --data data/coco_100img.data --batch-size 8 --epochs 100 + + From c68093ee7d1c38bc74d68fd982c4861f05f56499 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 16:17:44 +0200 Subject: [PATCH 0711/2595] updates --- train.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/train.py b/train.py index 6c4bffec..3ca70760 100644 --- a/train.py +++ b/train.py @@ -11,16 +11,16 @@ from utils.datasets import * from utils.utils import * # Hyperparameters -hyp = {'k': 6.927, # loss multiple - 'xy': 0.07556, # xy loss fraction - 'wh': 0.008074, # wh loss fraction - 'cls': 0.01113, # cls loss fraction - 'conf': 0.9052, # conf loss fraction - 'iou_t': 0.06154, # iou target-anchor training threshold - 'lr0': 0.001136, # initial learning rate - 'lrf': -2.52, # final learning rate = lr0 * (10 ** lrf) - 'momentum': 0.9, # SGD momentum - 'weight_decay': 0.0005, # optimizer weight decay +hyp = {'k': 7.104, # loss multiple + 'xy': 0.0928, # xy loss fraction + 'wh': 0.007779, # wh loss fraction + 'cls': 0.01283, # cls loss fraction + 'conf': 0.8866, # conf loss fraction + 'iou_t': 0.06478, # iou target-anchor training threshold + 'lr0': 0.001132, # initial learning rate + 'lrf': -2.607, # final learning rate = lr0 * (10 ** lrf) + 'momentum': 0.9016, # SGD momentum + 'weight_decay': 0.000531, # optimizer weight decay } From 05ec8b3b9d505829429ed56658be172517c6b5be Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 16:45:38 +0200 Subject: [PATCH 0712/2595] updates --- train.py | 1 + 1 file changed, 1 insertion(+) diff --git a/train.py b/train.py index 3ca70760..4d2b5c15 100644 --- a/train.py +++ b/train.py @@ -120,6 +120,7 @@ def train( sampler=sampler) # Mixed precision training https://github.com/NVIDIA/apex + # install help: https://github.com/NVIDIA/apex/issues/259 mixed_precision = False if mixed_precision: from apex import amp From d822276cdba6ad10b725cd4fc9dd99b2a39e4db6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 16:48:09 +0200 Subject: [PATCH 0713/2595] updates --- train.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/train.py b/train.py index 4d2b5c15..7c0a47f0 100644 --- a/train.py +++ b/train.py @@ -11,16 +11,16 @@ from utils.datasets import * from utils.utils import * # Hyperparameters -hyp = {'k': 7.104, # loss multiple - 'xy': 0.0928, # xy loss fraction - 'wh': 0.007779, # wh loss fraction - 'cls': 0.01283, # cls loss fraction - 'conf': 0.8866, # conf loss fraction - 'iou_t': 0.06478, # iou target-anchor training threshold - 'lr0': 0.001132, # initial learning rate - 'lrf': -2.607, # final learning rate = lr0 * (10 ** lrf) - 'momentum': 0.9016, # SGD momentum - 'weight_decay': 0.000531, # optimizer weight decay +hyp = {'k': 8.481, # loss multiple + 'xy': 0.09538, # xy loss fraction + 'wh': 0.007906, # wh loss fraction + 'cls': 0.01151, # cls loss fraction + 'conf': 0.8852, # conf loss fraction + 'iou_t': 0.06687, # iou target-anchor training threshold + 'lr0': 0.001297, # initial learning rate + 'lrf': -2.333, # final learning rate = lr0 * (10 ** lrf) + 'momentum': 0.8926, # SGD momentum + 'weight_decay': 0.000639, # optimizer weight decay } From 31dc2e2be50aa44f541327c7c8bd4c7ddf4503bc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 17:06:09 +0200 Subject: [PATCH 0714/2595] updates --- utils/gcp.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index e9d72597..1d647acd 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -61,7 +61,9 @@ git clone https://github.com/ultralytics/yolov3 # master cp -r weights yolov3 cp -r cocoapi/PythonAPI/pycocotools yolov3 cd yolov3 -python3 train.py --evolve --data data/coco_100img.data --batch-size 8 --epochs 100 +python3 train.py --evolve --data data/coco_100img.data --batch-size 8 --epochs 100 --num-workers 2 +gsutil cp evolve.txt gs://ultralytics +sudo shutdown From 023baa5aa2390f20258858114afc88b6487bd9b5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 17:07:41 +0200 Subject: [PATCH 0715/2595] updates --- train.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/train.py b/train.py index 7c0a47f0..5ab7aecc 100644 --- a/train.py +++ b/train.py @@ -11,16 +11,16 @@ from utils.datasets import * from utils.utils import * # Hyperparameters -hyp = {'k': 8.481, # loss multiple - 'xy': 0.09538, # xy loss fraction - 'wh': 0.007906, # wh loss fraction - 'cls': 0.01151, # cls loss fraction - 'conf': 0.8852, # conf loss fraction - 'iou_t': 0.06687, # iou target-anchor training threshold - 'lr0': 0.001297, # initial learning rate - 'lrf': -2.333, # final learning rate = lr0 * (10 ** lrf) - 'momentum': 0.8926, # SGD momentum - 'weight_decay': 0.000639, # optimizer weight decay +hyp = {'k': 10.11, # loss multiple + 'xy': 0.1509, # xy loss fraction + 'wh': 0.008077, # wh loss fraction + 'cls': 0.01082, # cls loss fraction + 'conf': 0.8302, # conf loss fraction + 'iou_t': 0.05892, # iou target-anchor training threshold + 'lr0': 0.001475, # initial learning rate + 'lrf': -3.371, # final learning rate = lr0 * (10 ** lrf) + 'momentum': 0.8733, # SGD momentum + 'weight_decay': 0.0006636, # optimizer weight decay } From 1d7ccb758011b62048eb03a8331f00daeb79c650 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 19:17:08 +0200 Subject: [PATCH 0716/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index d36640a0..fad1eb09 100755 --- a/models.py +++ b/models.py @@ -243,7 +243,7 @@ def load_darknet_weights(self, weights, cutoff=-1): try: os.system('wget https://pjreddie.com/media/files/' + weights_file + ' -O ' + weights) except IOError: - print(weights + ' not found') + print(weights + ' not found. Try https://drive.google.com/drive/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI') # Establish cutoffs if weights_file == 'darknet53.conv.74': From 97c488f8ef9b41b62180e47b84ed3ce4b87ba9d4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 19:18:28 +0200 Subject: [PATCH 0717/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index fad1eb09..ce4fad46 100755 --- a/models.py +++ b/models.py @@ -243,7 +243,7 @@ def load_darknet_weights(self, weights, cutoff=-1): try: os.system('wget https://pjreddie.com/media/files/' + weights_file + ' -O ' + weights) except IOError: - print(weights + ' not found. Try https://drive.google.com/drive/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI') + print(weights + ' not found.\nTry https://drive.google.com/drive/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI') # Establish cutoffs if weights_file == 'darknet53.conv.74': From 02d6b2f9c5a5fcdb62619364b53b11494372e42d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 19:25:41 +0200 Subject: [PATCH 0718/2595] updates --- train.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/train.py b/train.py index 5ab7aecc..a3899767 100644 --- a/train.py +++ b/train.py @@ -11,16 +11,16 @@ from utils.datasets import * from utils.utils import * # Hyperparameters -hyp = {'k': 10.11, # loss multiple - 'xy': 0.1509, # xy loss fraction - 'wh': 0.008077, # wh loss fraction - 'cls': 0.01082, # cls loss fraction - 'conf': 0.8302, # conf loss fraction - 'iou_t': 0.05892, # iou target-anchor training threshold - 'lr0': 0.001475, # initial learning rate - 'lrf': -3.371, # final learning rate = lr0 * (10 ** lrf) - 'momentum': 0.8733, # SGD momentum - 'weight_decay': 0.0006636, # optimizer weight decay +hyp = {'k': 7.789, # loss multiple + 'xy': 0.1966, # xy loss fraction + 'wh': 0.01144, # wh loss fraction + 'cls': 0.01746, # cls loss fraction + 'conf': 0.7745, # conf loss fraction + 'iou_t': 0.05732, # iou target-anchor training threshold + 'lr0': 0.001467, # initial learning rate + 'lrf': -3.904, # final learning rate = lr0 * (10 ** lrf) + 'momentum': 0.9008, # SGD momentum + 'weight_decay': 0.0007289, # optimizer weight decay } From 40221894c2ec00ab0299c6d6a48a870286a18d86 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 21:18:54 +0200 Subject: [PATCH 0719/2595] updates --- test.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/test.py b/test.py index 4f70d297..d85c5162 100644 --- a/test.py +++ b/test.py @@ -133,18 +133,29 @@ def test( stats.append((correct, pred[:, 4].cpu(), pred[:, 6].cpu(), tcls)) # Compute statistics - stats_np = [np.concatenate(x, 0) for x in list(zip(*stats))] - nt = np.bincount(stats_np[3].astype(np.int64), minlength=nc) # number of targets per class - if len(stats_np): - p, r, ap, f1, ap_class = ap_per_class(*stats_np) + stats = [np.concatenate(x, 0) for x in list(zip(*stats))] # to numpy + nt = np.bincount(stats[3].astype(np.int64), minlength=nc) # number of targets per class + if len(stats): + p, r, ap, f1, ap_class = ap_per_class(*stats) mp, mr, map, mf1 = p.mean(), r.mean(), ap.mean(), f1.mean() + if any(r > 1): + chkpt = {'epoch': -1, + 'best_loss': None, + 'model': model.module.state_dict() if type( + model) is nn.parallel.DistributedDataParallel else model.state_dict(), + 'optimizer': None} + + # Save problem checkpoint + torch.save(chkpt, 'recall_issue.pt') + del chkpt + # Print results pf = '%20s' + '%10.3g' * 6 # print format print(pf % ('all', seen, nt.sum(), mp, mr, map, mf1), end='\n\n') # Print results per class - if nc > 1 and len(stats_np): + if nc > 1 and len(stats): for i, c in enumerate(ap_class): print(pf % (names[c], seen, nt[c], p[i], r[i], ap[i], f1[i])) From 03dd0b82ea1386297cec3f36c6266286741148d1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 21:42:21 +0200 Subject: [PATCH 0720/2595] updates --- train.py | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/train.py b/train.py index a3899767..fd0eef3e 100644 --- a/train.py +++ b/train.py @@ -11,19 +11,18 @@ from utils.datasets import * from utils.utils import * # Hyperparameters -hyp = {'k': 7.789, # loss multiple - 'xy': 0.1966, # xy loss fraction - 'wh': 0.01144, # wh loss fraction - 'cls': 0.01746, # cls loss fraction - 'conf': 0.7745, # conf loss fraction - 'iou_t': 0.05732, # iou target-anchor training threshold - 'lr0': 0.001467, # initial learning rate - 'lrf': -3.904, # final learning rate = lr0 * (10 ** lrf) - 'momentum': 0.9008, # SGD momentum - 'weight_decay': 0.0007289, # optimizer weight decay +hyp = {'k': 8.4875, # loss multiple + 'xy': 0.079756, # xy loss fraction + 'wh': 0.010461, # wh loss fraction + 'cls': 0.02105, # cls loss fraction + 'conf': 0.88873, # conf loss fraction + 'iou_t': 0.10, # iou target-anchor training threshold + 'lr0': 0.001, # initial learning rate + 'lrf': -4, # final learning rate = lr0 * (10 ** lrf) + 'momentum': 0.9, # SGD momentum + 'weight_decay': 0.0005, # optimizer weight decay } - def train( cfg, data_cfg, @@ -93,11 +92,11 @@ def train( # scheduler = optim.lr_scheduler.MultiStepLR(optimizer, milestones=[218, 245], gamma=0.1, last_epoch=start_epoch - 1) # Plot lr schedule - # y = [] - # for _ in range(epochs): - # scheduler.step() - # y.append(optimizer.param_groups[0]['lr']) - # plt.plot(y) + y = [] + for _ in range(epochs): + scheduler.step() + y.append(optimizer.param_groups[0]['lr']) + plt.plot(y) # Dataset dataset = LoadImagesAndLabels(train_path, img_size=img_size, augment=True) From cf5bbc97ee1900c7dee7b8e8977b56ef05201a50 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 21:44:57 +0200 Subject: [PATCH 0721/2595] updates --- train.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/train.py b/train.py index fd0eef3e..5877ac39 100644 --- a/train.py +++ b/train.py @@ -23,6 +23,7 @@ hyp = {'k': 8.4875, # loss multiple 'weight_decay': 0.0005, # optimizer weight decay } + def train( cfg, data_cfg, @@ -91,12 +92,12 @@ def train( scheduler = optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lf, last_epoch=start_epoch - 1) # scheduler = optim.lr_scheduler.MultiStepLR(optimizer, milestones=[218, 245], gamma=0.1, last_epoch=start_epoch - 1) - # Plot lr schedule - y = [] - for _ in range(epochs): - scheduler.step() - y.append(optimizer.param_groups[0]['lr']) - plt.plot(y) + # # Plot lr schedule + # y = [] + # for _ in range(epochs): + # scheduler.step() + # y.append(optimizer.param_groups[0]['lr']) + # plt.plot(y) # Dataset dataset = LoadImagesAndLabels(train_path, img_size=img_size, augment=True) From 9b6347ac6c24870ea85218a6735ac0414bccbd00 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 21:56:50 +0200 Subject: [PATCH 0722/2595] updates --- train.py | 13 ++++++++----- utils/datasets.py | 11 +++++------ 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/train.py b/train.py index 5877ac39..c12b16e8 100644 --- a/train.py +++ b/train.py @@ -18,7 +18,7 @@ hyp = {'k': 8.4875, # loss multiple 'conf': 0.88873, # conf loss fraction 'iou_t': 0.10, # iou target-anchor training threshold 'lr0': 0.001, # initial learning rate - 'lrf': -4, # final learning rate = lr0 * (10 ** lrf) + 'lrf': -5, # final learning rate = lr0 * (10 ** lrf) 'momentum': 0.9, # SGD momentum 'weight_decay': 0.0005, # optimizer weight decay } @@ -88,11 +88,14 @@ def train( # Scheduler (reduce lr at epochs 218, 245, i.e. batches 400k, 450k) # lf = lambda x: 1 - x / epochs # linear ramp to zero # lf = lambda x: 10 ** (-2 * x / epochs) # exp ramp to lr0 * 1e-2 - lf = lambda x: 1 - 10 ** (hyp['lrf'] * (1 - x / epochs)) # inv exp ramp to lr0 * 1e-2 - scheduler = optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lf, last_epoch=start_epoch - 1) - # scheduler = optim.lr_scheduler.MultiStepLR(optimizer, milestones=[218, 245], gamma=0.1, last_epoch=start_epoch - 1) + # lf = lambda x: 1 - 10 ** (hyp['lrf'] * (1 - x / epochs)) # inv exp ramp to lr0 * 1e-2 + # scheduler = optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lf, last_epoch=start_epoch - 1) + scheduler = optim.lr_scheduler.MultiStepLR(optimizer, + milestones=[218, 245], + gamma=0.1, + last_epoch=start_epoch - 1) - # # Plot lr schedule + # Plot lr schedule # y = [] # for _ in range(epochs): # scheduler.step() diff --git a/utils/datasets.py b/utils/datasets.py index ab681f4e..5b92f103 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -142,8 +142,8 @@ class LoadImagesAndLabels(Dataset): # for training/testing x.replace('images', 'labels').replace('.bmp', '.txt').replace('.jpg', '.txt').replace('.png', '.txt') for x in self.img_files] - if n < 200: # preload all images into memory if possible - self.imgs = [cv2.imread(img_files[i]) for i in range(n)] + # if n < 200: # preload all images into memory if possible + # self.imgs = [cv2.imread(img_files[i]) for i in range(n)] def __len__(self): return len(self.img_files) @@ -152,10 +152,9 @@ class LoadImagesAndLabels(Dataset): # for training/testing img_path = self.img_files[index] label_path = self.label_files[index] - if hasattr(self, 'imgs'): - img = self.imgs[index] # BGR - else: - img = cv2.imread(img_path) # BGR + # if hasattr(self, 'imgs'): + # img = self.imgs[index] # BGR + img = cv2.imread(img_path) # BGR assert img is not None, 'File Not Found ' + img_path augment_hsv = True From cc50757d95b0e720fa6a47b05b8655955046bb89 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 22:31:05 +0200 Subject: [PATCH 0723/2595] updates --- utils/utils.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 77469cd2..183b9562 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -520,7 +520,8 @@ def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() # Plot training results files 'results*.txt' # import os; os.system('wget https://storage.googleapis.com/ultralytics/yolov3/results_v3.txt') - fig = plt.figure(figsize=(14, 7)) + fig, ax = plt.subplots(2, 5, figsize=(14, 7)) + ax = ax.ravel() s = ['X + Y', 'Width + Height', 'Confidence', 'Classification', 'Train Loss', 'Precision', 'Recall', 'mAP', 'F1', 'Test Loss'] for f in sorted(glob.glob('results*.txt') + glob.glob('../../Downloads/results*.txt')): @@ -528,10 +529,8 @@ def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() n = results.shape[1] # number of rows x = range(start, min(stop, n) if stop else n) for i in range(10): - plt.subplot(2, 5, i + 1) - plt.plot(x, results[i, x], marker='.', label=f.replace('.txt', '')) - plt.title(s[i]) - if i == 0: - plt.legend() + ax[i].plot(x, results[i, x], marker='.', label=f.replace('.txt', '')) + ax[i].set_title(s[i]) + ax[0].legend() fig.tight_layout() fig.savefig('results.png', dpi=300) From b5bfc30759414104c3e301590f463318740aafe8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 22:40:32 +0200 Subject: [PATCH 0724/2595] updates --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index dd1b2fcf..abe0400f 100755 --- a/README.md +++ b/README.md @@ -43,9 +43,9 @@ Python 3.7 or later with the following `pip3 install -U -r requirements.txt` pac # Training -**Start Training:** Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. +**Start Training:** `python3 train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. -**Resume Training:** Run `train.py --resume` resumes training from the latest checkpoint `weights/latest.pt`. +**Resume Training:** `python3 train.py --resume` to resume training from `weights/latest.pt`. Each epoch trains on 117,263 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. Default training settings produce loss plots below, with **training speed of 0.25 s/batch on a V100 GPU (almost 50 COCO epochs/day)**. From 0d770e14df0f16524164f8f67955ddeaa3bb4822 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 22:55:50 +0200 Subject: [PATCH 0725/2595] updates --- test.py | 17 +++-------------- utils/gcp.sh | 2 +- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/test.py b/test.py index d85c5162..d4b75d62 100644 --- a/test.py +++ b/test.py @@ -125,7 +125,7 @@ def test( iou, bi = bbox_iou(pbox, tbox).max(0) # If iou > threshold and class is correct mark as correct - if iou > iou_thres and bi not in detected: + if iou > iou_thres and bi not in detected: # and pcls == tcls[bi] correct[i] = 1 detected.append(bi) @@ -139,17 +139,6 @@ def test( p, r, ap, f1, ap_class = ap_per_class(*stats) mp, mr, map, mf1 = p.mean(), r.mean(), ap.mean(), f1.mean() - if any(r > 1): - chkpt = {'epoch': -1, - 'best_loss': None, - 'model': model.module.state_dict() if type( - model) is nn.parallel.DistributedDataParallel else model.state_dict(), - 'optimizer': None} - - # Save problem checkpoint - torch.save(chkpt, 'recall_issue.pt') - del chkpt - # Print results pf = '%20s' + '%10.3g' * 6 # print format print(pf % ('all', seen, nt.sum(), mp, mr, map, mf1), end='\n\n') @@ -187,8 +176,8 @@ if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') - parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') + parser.add_argument('--data-cfg', type=str, default='data/coco_100img.data', help='coco.data file path') + parser.add_argument('--weights', type=str, default='weights/recall_issue.pt', help='path to weights file') parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') diff --git a/utils/gcp.sh b/utils/gcp.sh index 1d647acd..060e13b7 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -61,7 +61,7 @@ git clone https://github.com/ultralytics/yolov3 # master cp -r weights yolov3 cp -r cocoapi/PythonAPI/pycocotools yolov3 cd yolov3 -python3 train.py --evolve --data data/coco_100img.data --batch-size 8 --epochs 100 --num-workers 2 +python3 train.py --evolve --data data/coco_100img.data --num-workers 2 gsutil cp evolve.txt gs://ultralytics sudo shutdown From df3211ba4c12e11808c6fae05bf4887f084bb72b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 23:02:54 +0200 Subject: [PATCH 0726/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index d4b75d62..03785953 100644 --- a/test.py +++ b/test.py @@ -125,7 +125,7 @@ def test( iou, bi = bbox_iou(pbox, tbox).max(0) # If iou > threshold and class is correct mark as correct - if iou > iou_thres and bi not in detected: # and pcls == tcls[bi] + if iou > iou_thres and bi not in detected and pcls == tcls[bi]: correct[i] = 1 detected.append(bi) From fad618b82107ec9ac47b5481681aff7a06339799 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 23:05:19 +0200 Subject: [PATCH 0727/2595] updates --- test.py | 4 ++-- {utils => weights}/gcp.sh | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename {utils => weights}/gcp.sh (100%) diff --git a/test.py b/test.py index 03785953..3e058036 100644 --- a/test.py +++ b/test.py @@ -176,8 +176,8 @@ if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco_100img.data', help='coco.data file path') - parser.add_argument('--weights', type=str, default='weights/recall_issue.pt', help='path to weights file') + parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') + parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') diff --git a/utils/gcp.sh b/weights/gcp.sh similarity index 100% rename from utils/gcp.sh rename to weights/gcp.sh From 8b707c43c8a9ceefa51cf7c2d6c55e8de4dbbf49 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 23:17:51 +0200 Subject: [PATCH 0728/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 3e058036..e78d6be1 100644 --- a/test.py +++ b/test.py @@ -125,7 +125,7 @@ def test( iou, bi = bbox_iou(pbox, tbox).max(0) # If iou > threshold and class is correct mark as correct - if iou > iou_thres and bi not in detected and pcls == tcls[bi]: + if iou > iou_thres and bi not in detected: # and pcls == tcls[bi]: correct[i] = 1 detected.append(bi) From 2643af18b25705030f2a5ec4be283609f1820aec Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Apr 2019 23:42:37 +0200 Subject: [PATCH 0729/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index c12b16e8..7b4aa43e 100644 --- a/train.py +++ b/train.py @@ -304,7 +304,7 @@ if __name__ == '__main__': # Write mutation results print_mutation(hyp, results) - gen = 30 # generations to evolve + gen = 50 # generations to evolve for _ in range(gen): # Mutate hyperparameters From 6525c76f9c4db66a941765589e0bdd9a27faed23 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 19 Apr 2019 12:37:38 +0200 Subject: [PATCH 0730/2595] hyperparameter updates --- train.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/train.py b/train.py index 7b4aa43e..421e256a 100644 --- a/train.py +++ b/train.py @@ -11,16 +11,18 @@ from utils.datasets import * from utils.utils import * # Hyperparameters -hyp = {'k': 8.4875, # loss multiple - 'xy': 0.079756, # xy loss fraction - 'wh': 0.010461, # wh loss fraction - 'cls': 0.02105, # cls loss fraction - 'conf': 0.88873, # conf loss fraction - 'iou_t': 0.10, # iou target-anchor training threshold - 'lr0': 0.001, # initial learning rate - 'lrf': -5, # final learning rate = lr0 * (10 ** lrf) - 'momentum': 0.9, # SGD momentum - 'weight_decay': 0.0005, # optimizer weight decay +# 0.852 0.94 0.924 0.883 1.33 # results +# 8.52 0.06833 0.01524 0.01509 0.9013 0.1003 0.001325 -3.853 0.8948 0.0004053 # hyp +hyp = {'k': 8.52, # loss multiple + 'xy': 0.06833, # xy loss fraction + 'wh': 0.01524, # wh loss fraction + 'cls': 0.01509, # cls loss fraction + 'conf': 0.9013, # conf loss fraction + 'iou_t': 0.1003, # iou target-anchor training threshold + 'lr0': 0.001325, # initial learning rate + 'lrf': -3.853, # final learning rate = lr0 * (10 ** lrf) + 'momentum': 0.8948, # SGD momentum + 'weight_decay': 0.0004053, # optimizer weight decay } From 5962510b231eda1e7513ea00e8f7df309f949f88 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 19 Apr 2019 13:18:47 +0200 Subject: [PATCH 0731/2595] hyperparameter updates --- train.py | 3 +-- weights/gcp.sh | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/train.py b/train.py index 421e256a..7d28e0e9 100644 --- a/train.py +++ b/train.py @@ -11,8 +11,7 @@ from utils.datasets import * from utils.utils import * # Hyperparameters -# 0.852 0.94 0.924 0.883 1.33 # results -# 8.52 0.06833 0.01524 0.01509 0.9013 0.1003 0.001325 -3.853 0.8948 0.0004053 # hyp +# 0.852 0.94 0.924 0.883 1.33 8.52 0.06833 0.01524 0.01509 0.9013 0.1003 0.001325 -3.853 0.8948 0.0004053 # hyp hyp = {'k': 8.52, # loss multiple 'xy': 0.06833, # xy loss fraction 'wh': 0.01524, # wh loss fraction diff --git a/weights/gcp.sh b/weights/gcp.sh index 060e13b7..d231a4f4 100755 --- a/weights/gcp.sh +++ b/weights/gcp.sh @@ -9,7 +9,7 @@ git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make sudo reboot now # Re-clone -sudo rm -rf yolov3 +rm -rf yolov3 git clone https://github.com/ultralytics/yolov3 # master # git clone -b test --depth 1 https://github.com/ultralytics/yolov3 yolov3_test # branch cp -r weights yolov3 @@ -54,17 +54,27 @@ gsutil cp results*.txt gs://ultralytics gsutil cp results.png gs://ultralytics sudo shutdown +# Unit tests +rm -rf yolov3 +git clone https://github.com/ultralytics/yolov3 # master +cp -r weights yolov3 && cd yolov3 +python3 detecty.py # detect +python3 test.py --data data/coco_32img.data # test +python3 train.py --data data/coco_32img.data --epochs 3 --nosave # train + # Debug/Development -sudo rm -rf yolov3 +rm -rf yolov3 git clone https://github.com/ultralytics/yolov3 # master # git clone -b test --depth 1 https://github.com/ultralytics/yolov3 yolov3_test # branch -cp -r weights yolov3 cp -r cocoapi/PythonAPI/pycocotools yolov3 -cd yolov3 -python3 train.py --evolve --data data/coco_100img.data --num-workers 2 +cp -r weights yolov3 && cd yolov3 +python3 train.py --nosave --data data/coco_100img.data --num-workers 2 gsutil cp evolve.txt gs://ultralytics sudo shutdown +gsutil cp results*.txt gs://ultralytics +sudo shutdown now + From b4fa1d90d05cf8cd6b44aa9f0be5cce7c8cfa789 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 19 Apr 2019 13:24:49 +0200 Subject: [PATCH 0732/2595] hyperparameter updates --- weights/gcp.sh | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/weights/gcp.sh b/weights/gcp.sh index d231a4f4..fe5a0b1c 100755 --- a/weights/gcp.sh +++ b/weights/gcp.sh @@ -58,9 +58,9 @@ sudo shutdown rm -rf yolov3 git clone https://github.com/ultralytics/yolov3 # master cp -r weights yolov3 && cd yolov3 -python3 detecty.py # detect +python3 detect.py # detect python3 test.py --data data/coco_32img.data # test -python3 train.py --data data/coco_32img.data --epochs 3 --nosave # train +python3 train.py --data data/coco_32img.data --epochs 5 --nosave # train # Debug/Development rm -rf yolov3 @@ -68,13 +68,6 @@ git clone https://github.com/ultralytics/yolov3 # master # git clone -b test --depth 1 https://github.com/ultralytics/yolov3 yolov3_test # branch cp -r cocoapi/PythonAPI/pycocotools yolov3 cp -r weights yolov3 && cd yolov3 -python3 train.py --nosave --data data/coco_100img.data --num-workers 2 +python3 train.py --evolve --data data/coco_100img.data --num-workers 2 --epochs 30 gsutil cp evolve.txt gs://ultralytics sudo shutdown - - - - -gsutil cp results*.txt gs://ultralytics -sudo shutdown now - From f9d25f6d24bc1c014f52c48455aef022798eb1ac Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 19 Apr 2019 20:41:18 +0200 Subject: [PATCH 0733/2595] hyperparameter updates --- detect.py | 16 +++++++++++++++ models.py | 46 ++++++++++++++++++++++---------------------- utils/torch_utils.py | 29 ++++++++++++++++++++++++++++ utils/utils.py | 12 ++++++------ 4 files changed, 74 insertions(+), 29 deletions(-) diff --git a/detect.py b/detect.py index 7423d654..dc2a3dd3 100644 --- a/detect.py +++ b/detect.py @@ -34,6 +34,22 @@ def detect( else: # darknet format _ = load_darknet_weights(model, weights) + # Fuse batchnorm + fuse = True + if fuse: + fused_list = nn.ModuleList() + for a in list(model.children())[0]: + for i, b in enumerate(a): + if isinstance(b, nn.modules.batchnorm.BatchNorm2d): + # fuse this bn layer with the previous conv2d layer + conv = a[i - 1] + fused = torch_utils.fuse_conv_and_bn(conv, b) + a = nn.Sequential(fused, *list(a.children())[i + 1:]) + break + fused_list.append(a) + model.module_list = fused_list + #model_info(model) # yolov3-spp reduced from 225 to 152 layers + model.to(device).eval() # Set Dataloader diff --git a/models.py b/models.py index ce4fad46..77abdd9b 100755 --- a/models.py +++ b/models.py @@ -63,10 +63,10 @@ def create_modules(module_defs): anchors = [float(x) for x in module_def['anchors'].split(',')] anchors = [(anchors[i], anchors[i + 1]) for i in range(0, len(anchors), 2)] anchors = [anchors[i] for i in anchor_idxs] - nC = int(module_def['classes']) # number of classes + nc = int(module_def['classes']) # number of classes img_size = int(hyperparams['height']) # Define detection layer - yolo_layer = YOLOLayer(anchors, nC, img_size, yolo_layer_count, cfg=hyperparams['cfg']) + yolo_layer = YOLOLayer(anchors, nc, img_size, yolo_layer_count, cfg=hyperparams['cfg']) modules.add_module('yolo_%d' % i, yolo_layer) yolo_layer_count += 1 @@ -100,12 +100,12 @@ class Upsample(nn.Module): class YOLOLayer(nn.Module): - def __init__(self, anchors, nC, img_size, yolo_layer, cfg): + def __init__(self, anchors, nc, img_size, yolo_layer, cfg): super(YOLOLayer, self).__init__() self.anchors = torch.FloatTensor(anchors) - self.nA = len(anchors) # number of anchors (3) - self.nC = nC # number of classes (80) + self.na = len(anchors) # number of anchors (3) + self.nc = nc # number of classes (80) self.img_size = 0 device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') create_grids(self, 32, 1, device=device) @@ -115,35 +115,35 @@ class YOLOLayer(nn.Module): if cfg.endswith('yolov3-tiny.cfg'): stride *= 2 - nG = int(img_size / stride) # number grid points - create_grids(self, img_size, nG) + ng = int(img_size / stride) # number grid points + create_grids(self, img_size, ng) def forward(self, p, img_size, var=None): if ONNX_EXPORT: - bs, nG = 1, self.nG # batch size, grid size + bs, ng = 1, self.ng # batch size, grid size else: - bs, nG = p.shape[0], p.shape[-1] + bs, ng = p.shape[0], p.shape[-1] if self.img_size != img_size: - create_grids(self, img_size, nG, p.device) + create_grids(self, img_size, ng, p.device) # p.view(bs, 255, 13, 13) -- > (bs, 3, 13, 13, 85) # (bs, anchors, grid, grid, classes + xywh) - p = p.view(bs, self.nA, self.nC + 5, nG, nG).permute(0, 1, 3, 4, 2).contiguous() # prediction + p = p.view(bs, self.na, self.nc + 5, ng, ng).permute(0, 1, 3, 4, 2).contiguous() # prediction if self.training: return p elif ONNX_EXPORT: - grid_xy = self.grid_xy.repeat((1, self.nA, 1, 1, 1)).view((1, -1, 2)) - anchor_wh = self.anchor_wh.repeat((1, 1, nG, nG, 1)).view((1, -1, 2)) / nG + grid_xy = self.grid_xy.repeat((1, self.na, 1, 1, 1)).view((1, -1, 2)) + anchor_wh = self.anchor_wh.repeat((1, 1, ng, ng, 1)).view((1, -1, 2)) / ng - # p = p.view(-1, 5 + self.nC) + # p = p.view(-1, 5 + self.nc) # xy = torch.sigmoid(p[..., 0:2]) + grid_xy[0] # x, y # wh = torch.exp(p[..., 2:4]) * anchor_wh[0] # width, height # p_conf = torch.sigmoid(p[:, 4:5]) # Conf # p_cls = F.softmax(p[:, 5:85], 1) * p_conf # SSD-like conf - # return torch.cat((xy / nG, wh, p_conf, p_cls), 1).t() + # return torch.cat((xy / ng, wh, p_conf, p_cls), 1).t() - p = p.view(1, -1, 5 + self.nC) + p = p.view(1, -1, 5 + self.nc) xy = torch.sigmoid(p[..., 0:2]) + grid_xy # x, y wh = torch.exp(p[..., 2:4]) * anchor_wh # width, height p_conf = torch.sigmoid(p[..., 4:5]) # Conf @@ -153,7 +153,7 @@ class YOLOLayer(nn.Module): p_cls = torch.exp(p_cls).permute((2, 1, 0)) p_cls = p_cls / p_cls.sum(0).unsqueeze(0) * p_conf.permute((2, 1, 0)) # F.softmax() equivalent p_cls = p_cls.permute(2, 1, 0) - return torch.cat((xy / nG, wh, p_conf, p_cls), 2).squeeze().t() + return torch.cat((xy / ng, wh, p_conf, p_cls), 2).squeeze().t() else: # inference io = p.clone() # inference output @@ -165,7 +165,7 @@ class YOLOLayer(nn.Module): io[..., :4] *= self.stride # reshape from [1, 3, 13, 13, 85] to [1, 507, 85] - return io.view(bs, -1, 5 + self.nC), p + return io.view(bs, -1, 5 + self.nc), p class Darknet(nn.Module): @@ -218,19 +218,19 @@ def get_yolo_layers(model): return [i for i, x in enumerate(a) if x] # [82, 94, 106] for yolov3 -def create_grids(self, img_size, nG, device='cpu'): +def create_grids(self, img_size, ng, device='cpu'): self.img_size = img_size - self.stride = img_size / nG + self.stride = img_size / ng # build xy offsets - grid_x = torch.arange(nG).repeat((nG, 1)).view((1, 1, nG, nG)).float() + grid_x = torch.arange(ng).repeat((ng, 1)).view((1, 1, ng, ng)).float() grid_y = grid_x.permute(0, 1, 3, 2) self.grid_xy = torch.stack((grid_x, grid_y), 4).to(device) # build wh gains self.anchor_vec = self.anchors.to(device) / self.stride - self.anchor_wh = self.anchor_vec.view(1, self.nA, 1, 1, 2).to(device) - self.nG = torch.FloatTensor([nG]).to(device) + self.anchor_wh = self.anchor_vec.view(1, self.na, 1, 1, 2).to(device) + self.ng = torch.FloatTensor([ng]).to(device) def load_darknet_weights(self, weights, cutoff=-1): diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 52c64261..406d5ac7 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -26,3 +26,32 @@ def select_device(force_cpu=False): (i, x[i].name, x[i].total_memory / c)) return device + + +def fuse_conv_and_bn(conv, bn): + # https://tehnokv.com/posts/fusing-batchnorm-and-conv/ + with torch.no_grad(): + # init + fusedconv = torch.nn.Conv2d( + conv.in_channels, + conv.out_channels, + kernel_size=conv.kernel_size, + stride=conv.stride, + padding=conv.padding, + bias=True + ) + + # prepare filters + w_conv = conv.weight.clone().view(conv.out_channels, -1) + w_bn = torch.diag(bn.weight.div(torch.sqrt(bn.eps + bn.running_var))) + fusedconv.weight.copy_(torch.mm(w_bn, w_conv).view(fusedconv.weight.size())) + + # prepare spatial bias + if conv.bias is not None: + b_conv = conv.bias + else: + b_conv = torch.zeros(conv.weight.size(0)) + b_bn = bn.bias - bn.weight.mul(bn.running_mean).div(torch.sqrt(bn.running_var + bn.eps)) + fusedconv.bias.copy_(b_conv + b_bn) + + return fusedconv diff --git a/utils/utils.py b/utils/utils.py index 183b9562..c78dcc50 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -291,7 +291,7 @@ def build_targets(model, targets): # iou of targets-anchors t, a = targets, [] - gwh = targets[:, 4:6] * layer.nG + gwh = targets[:, 4:6] * layer.ng if nt: iou = [wh_iou(x, gwh) for x in layer.anchor_vec] iou, a = torch.stack(iou, 0).max(0) # best iou and anchor @@ -304,7 +304,7 @@ def build_targets(model, targets): # Indices b, c = t[:, :2].long().t() # target image, class - gxy = t[:, 2:4] * layer.nG + gxy = t[:, 2:4] * layer.ng gi, gj = gxy.long().t() # grid_i, grid_j indices.append((b, a, gj, gi)) @@ -318,7 +318,7 @@ def build_targets(model, targets): # Class tcls.append(c) if c.shape[0]: - assert c.max() <= layer.nC, 'Target classes exceed model classes' + assert c.max() <= layer.nc, 'Target classes exceed model classes' return txy, twh, tcls, indices @@ -442,12 +442,12 @@ def strip_optimizer_from_checkpoint(filename='weights/best.pt'): def coco_class_count(path='../coco/labels/train2014/'): # Histogram of occurrences per class - nC = 80 # number classes - x = np.zeros(nC, dtype='int32') + nc = 80 # number classes + x = np.zeros(nc, dtype='int32') files = sorted(glob.glob('%s/*.*' % path)) for i, file in enumerate(files): labels = np.loadtxt(file, dtype=np.float32).reshape(-1, 5) - x += np.bincount(labels[:, 0].astype('int32'), minlength=nC) + x += np.bincount(labels[:, 0].astype('int32'), minlength=nc) print(i, len(files)) From 4a4668224ba66a2e7a21445e42481e3d44111832 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 20 Apr 2019 22:46:23 +0200 Subject: [PATCH 0734/2595] Fuse Conv2d + BatchNorm2d --- detect.py | 17 ++--------------- models.py | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/detect.py b/detect.py index dc2a3dd3..f82c4bc7 100644 --- a/detect.py +++ b/detect.py @@ -34,21 +34,8 @@ def detect( else: # darknet format _ = load_darknet_weights(model, weights) - # Fuse batchnorm - fuse = True - if fuse: - fused_list = nn.ModuleList() - for a in list(model.children())[0]: - for i, b in enumerate(a): - if isinstance(b, nn.modules.batchnorm.BatchNorm2d): - # fuse this bn layer with the previous conv2d layer - conv = a[i - 1] - fused = torch_utils.fuse_conv_and_bn(conv, b) - a = nn.Sequential(fused, *list(a.children())[i + 1:]) - break - fused_list.append(a) - model.module_list = fused_list - #model_info(model) # yolov3-spp reduced from 225 to 152 layers + # Fuse Conv2d + BatchNorm2d layers + model.fuse() model.to(device).eval() diff --git a/models.py b/models.py index 77abdd9b..e5091b9a 100755 --- a/models.py +++ b/models.py @@ -212,6 +212,21 @@ class Darknet(nn.Module): io, p = list(zip(*output)) # inference output, training output return torch.cat(io, 1), p + def fuse(self): + # Fuse Conv2d + BatchNorm2d layers throughout model + fused_list = nn.ModuleList() + for a in list(self.children())[0]: + for i, b in enumerate(a): + if isinstance(b, nn.modules.batchnorm.BatchNorm2d): + # fuse this bn layer with the previous conv2d layer + conv = a[i - 1] + fused = torch_utils.fuse_conv_and_bn(conv, b) + a = nn.Sequential(fused, *list(a.children())[i + 1:]) + break + fused_list.append(a) + self.module_list = fused_list + # model_info(self) # yolov3-spp reduced from 225 to 152 layers + def get_yolo_layers(model): a = [module_def['type'] == 'yolo' for module_def in model.module_defs] From 14e451962036515076b17b5bc01e89282f62b681 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 21 Apr 2019 20:30:11 +0200 Subject: [PATCH 0735/2595] updates --- detect.py | 8 +++++--- models.py | 14 ++++++++------ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/detect.py b/detect.py index f82c4bc7..918c87c4 100644 --- a/detect.py +++ b/detect.py @@ -55,11 +55,13 @@ def detect( t = time.time() save_path = str(Path(output) / Path(path).name) + if ONNX_EXPORT: + img = torch.zeros((1, 3, 416, 416)) + torch.onnx.export(model, img, 'weights/export.onnx', verbose=True) + return + # Get detections img = torch.from_numpy(img).unsqueeze(0).to(device) - if ONNX_EXPORT: - torch.onnx.export(model, img, 'weights/model.onnx', verbose=True) - return pred, _ = model(img) detections = non_max_suppression(pred, conf_thres, nms_thres)[0] diff --git a/models.py b/models.py index e5091b9a..5c73f02d 100755 --- a/models.py +++ b/models.py @@ -5,7 +5,7 @@ import torch.nn.functional as F from utils.parse_config import * from utils.utils import * -ONNX_EXPORT = False +ONNX_EXPORT = True def create_modules(module_defs): @@ -234,18 +234,20 @@ def get_yolo_layers(model): def create_grids(self, img_size, ng, device='cpu'): + nx, ny = ng, ng # x and y grid size self.img_size = img_size - self.stride = img_size / ng + self.stride = img_size / nx # build xy offsets - grid_x = torch.arange(ng).repeat((ng, 1)).view((1, 1, ng, ng)).float() - grid_y = grid_x.permute(0, 1, 3, 2) - self.grid_xy = torch.stack((grid_x, grid_y), 4).to(device) + yv, xv = torch.meshgrid([torch.arange(nx), torch.arange(ny)]) + self.grid_xy = torch.stack((xv, yv), 2).to(device).float().view((1, 1, nx, ny, 2)) # build wh gains self.anchor_vec = self.anchors.to(device) / self.stride self.anchor_wh = self.anchor_vec.view(1, self.na, 1, 1, 2).to(device) - self.ng = torch.FloatTensor([ng]).to(device) + self.ng = torch.Tensor([ng]).to(device) + self.nx = nx + self.ny = ny def load_darknet_weights(self, weights, cutoff=-1): From 2bfea0c980d563e085c0de0d1c2aa79d83f8765f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 21 Apr 2019 20:35:11 +0200 Subject: [PATCH 0736/2595] updates --- test.py | 2 +- train.py | 47 +++++++++++++++++++++++++++++------------------ utils/datasets.py | 22 ++++++++++++++++++++-- utils/utils.py | 10 +++++----- 4 files changed, 55 insertions(+), 26 deletions(-) diff --git a/test.py b/test.py index e78d6be1..f218e7e9 100644 --- a/test.py +++ b/test.py @@ -93,7 +93,7 @@ def test( # [{"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], "score": 0.236}, ... image_id = int(Path(paths[si]).stem.split('_')[-1]) box = pred[:, :4].clone() # xyxy - scale_coords(img_size, box, shapes[si]) # to original shape + scale_coords(imgs[si].shape, box, shapes[si]) # to original shape box = xyxy2xywh(box) # xywh box[:, :2] -= box[:, 2:] / 2 # xy center to top-left corner for di, d in enumerate(pred): diff --git a/train.py b/train.py index 7d28e0e9..1bf730d8 100644 --- a/train.py +++ b/train.py @@ -11,20 +11,34 @@ from utils.datasets import * from utils.utils import * # Hyperparameters -# 0.852 0.94 0.924 0.883 1.33 8.52 0.06833 0.01524 0.01509 0.9013 0.1003 0.001325 -3.853 0.8948 0.0004053 # hyp -hyp = {'k': 8.52, # loss multiple - 'xy': 0.06833, # xy loss fraction - 'wh': 0.01524, # wh loss fraction - 'cls': 0.01509, # cls loss fraction - 'conf': 0.9013, # conf loss fraction - 'iou_t': 0.1003, # iou target-anchor training threshold - 'lr0': 0.001325, # initial learning rate - 'lrf': -3.853, # final learning rate = lr0 * (10 ** lrf) - 'momentum': 0.8948, # SGD momentum - 'weight_decay': 0.0004053, # optimizer weight decay +# 0.861 0.956 0.936 0.897 1.51 10.39 0.1367 0.01057 0.01181 0.8409 0.1287 0.001028 -3.441 0.9127 0.0004841 +hyp = {'k': 10.39, # loss multiple + 'xy': 0.1367, # xy loss fraction + 'wh': 0.01057, # wh loss fraction + 'cls': 0.01181, # cls loss fraction + 'conf': 0.8409, # conf loss fraction + 'iou_t': 0.1287, # iou target-anchor training threshold + 'lr0': 0.001028, # initial learning rate + 'lrf': -3.441, # final learning rate = lr0 * (10 ** lrf) + 'momentum': 0.9127, # SGD momentum + 'weight_decay': 0.0004841, # optimizer weight decay } +# 0.856 0.95 0.935 0.887 1.3 8.488 0.1081 0.01351 0.01351 0.8649 0.1 0.001 -3 0.9 0.0005 +# hyp = {'k': 8.4875, # loss multiple +# 'xy': 0.108108, # xy loss fraction +# 'wh': 0.013514, # wh loss fraction +# 'cls': 0.013514, # cls loss fraction +# 'conf': 0.86486, # conf loss fraction +# 'iou_t': 0.1, # iou target-anchor training threshold +# 'lr0': 0.001, # initial learning rate +# 'lrf': -3., # final learning rate = lr0 * (10 ** lrf) +# 'momentum': 0.9, # SGD momentum +# 'weight_decay': 0.0005, # optimizer weight decay +# } + + def train( cfg, data_cfg, @@ -89,12 +103,9 @@ def train( # Scheduler (reduce lr at epochs 218, 245, i.e. batches 400k, 450k) # lf = lambda x: 1 - x / epochs # linear ramp to zero # lf = lambda x: 10 ** (-2 * x / epochs) # exp ramp to lr0 * 1e-2 - # lf = lambda x: 1 - 10 ** (hyp['lrf'] * (1 - x / epochs)) # inv exp ramp to lr0 * 1e-2 - # scheduler = optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lf, last_epoch=start_epoch - 1) - scheduler = optim.lr_scheduler.MultiStepLR(optimizer, - milestones=[218, 245], - gamma=0.1, - last_epoch=start_epoch - 1) + lf = lambda x: 1 - 10 ** (hyp['lrf'] * (1 - x / epochs)) # inv exp ramp to lr0 * 1e-2 + scheduler = optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lf, last_epoch=start_epoch - 1) + # scheduler = optim.lr_scheduler.MultiStepLR(optimizer,milestones=[218, 245],gamma=0.1,last_epoch=start_epoch - 1) # Plot lr schedule # y = [] @@ -311,7 +322,7 @@ if __name__ == '__main__': # Mutate hyperparameters old_hyp = hyp.copy() init_seeds(seed=int(time.time())) - s = [.2, .2, .2, .2, .2, .2, .2, .2, .02, .2] + s = [.2, .2, .2, .2, .2, .3, .2, .2, .02, .3] for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 1.1 # plt.hist(x.ravel(), 100) hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma diff --git a/utils/datasets.py b/utils/datasets.py index 5b92f103..174dc6c7 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -74,7 +74,7 @@ class LoadImages: # for inference print('image %g/%g %s: ' % (self.count, self.nF, path), end='') # Padded resize - img, _, _, _ = letterbox(img0, height=self.height) + img, _, _, _ = letterbox_rect(img0, height=self.height) # Normalize RGB img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB @@ -239,9 +239,11 @@ def letterbox(img, height=416, color=(127.5, 127.5, 127.5)): # Resize a rectangular image to a padded square shape = img.shape[:2] # shape = [height, width] ratio = float(height) / max(shape) # ratio = old / new - new_shape = (round(shape[1] * ratio), round(shape[0] * ratio)) + new_shape = (round(shape[1] * ratio), round(shape[0] * ratio)) # new_shape = [width, height] + dw = (height - new_shape[0]) / 2 # width padding dh = (height - new_shape[1]) / 2 # height padding + top, bottom = round(dh - 0.1), round(dh + 0.1) left, right = round(dw - 0.1), round(dw + 0.1) img = cv2.resize(img, new_shape, interpolation=cv2.INTER_AREA) # resized, no border @@ -249,6 +251,22 @@ def letterbox(img, height=416, color=(127.5, 127.5, 127.5)): return img, ratio, dw, dh +def letterbox_rect(img, height=416, color=(127.5, 127.5, 127.5)): + # Resize a rectangular image to a 32 pixel multiple rectangle + shape = img.shape[:2] # shape = [height, width] + ratio = float(height) / max(shape) # ratio = old / new + new_shape = (round(shape[1] * ratio), round(shape[0] * ratio)) # new_shape = [width, height] + + dw = np.mod(height - new_shape[0], 32) / 2 # width padding + dh = np.mod(height - new_shape[1], 32) / 2 # height padding + + top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1)) + left, right = int(round(dw - 0.1)), int(round(dw + 0.1)) + img = cv2.resize(img, new_shape, interpolation=cv2.INTER_AREA) # resized, no border + img = cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color) # padded square + return img, ratio, dw, dh + + def random_affine(img, targets=(), degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-2, 2), borderValue=(127.5, 127.5, 127.5)): # torchvision.transforms.RandomAffine(degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-10, 10)) diff --git a/utils/utils.py b/utils/utils.py index c78dcc50..bd348b9a 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -100,11 +100,11 @@ def xywh2xyxy(x): return y -def scale_coords(img_size, coords, img0_shape): - # Rescale x1, y1, x2, y2 from 416 to image size - gain = float(img_size) / max(img0_shape) # gain = old / new - pad_x = (img_size - img0_shape[1] * gain) / 2 # width padding - pad_y = (img_size - img0_shape[0] * gain) / 2 # height padding +def scale_coords(img1_shape, coords, img0_shape): + # Rescale coords1 (xyxy) from img1_shape to img0_shape + gain = max(img1_shape[1:3]) / max(img0_shape[:2]) # gain = old / new + pad_x = (img1_shape[2] - img0_shape[1] * gain) / 2 # width padding + pad_y = (img1_shape[1] - img0_shape[0] * gain) / 2 # height padding coords[:, [0, 2]] -= pad_x coords[:, [1, 3]] -= pad_y coords[:, :4] /= gain From a6dc4347a36301b5c12d176c0a97a8831eb34b94 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 21 Apr 2019 20:36:04 +0200 Subject: [PATCH 0737/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 5c73f02d..bc9c7d0e 100755 --- a/models.py +++ b/models.py @@ -5,7 +5,7 @@ import torch.nn.functional as F from utils.parse_config import * from utils.utils import * -ONNX_EXPORT = True +ONNX_EXPORT = False def create_modules(module_defs): From cfe354064cd599ae6ea902ffaa4dbd106d3a40fb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 21 Apr 2019 21:07:01 +0200 Subject: [PATCH 0738/2595] updates --- models.py | 29 ++++++++++++++--------------- test.py | 2 +- utils/utils.py | 8 ++++---- 3 files changed, 19 insertions(+), 20 deletions(-) diff --git a/models.py b/models.py index bc9c7d0e..87b02cc5 100755 --- a/models.py +++ b/models.py @@ -64,7 +64,7 @@ def create_modules(module_defs): anchors = [(anchors[i], anchors[i + 1]) for i in range(0, len(anchors), 2)] anchors = [anchors[i] for i in anchor_idxs] nc = int(module_def['classes']) # number of classes - img_size = int(hyperparams['height']) + img_size = hyperparams['height'] # Define detection layer yolo_layer = YOLOLayer(anchors, nc, img_size, yolo_layer_count, cfg=hyperparams['cfg']) modules.add_module('yolo_%d' % i, yolo_layer) @@ -103,38 +103,37 @@ class YOLOLayer(nn.Module): def __init__(self, anchors, nc, img_size, yolo_layer, cfg): super(YOLOLayer, self).__init__() - self.anchors = torch.FloatTensor(anchors) + self.anchors = torch.Tensor(anchors) self.na = len(anchors) # number of anchors (3) self.nc = nc # number of classes (80) self.img_size = 0 - device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') - create_grids(self, 32, 1, device=device) if ONNX_EXPORT: # grids must be computed in __init__ stride = [32, 16, 8][yolo_layer] # stride of this layer if cfg.endswith('yolov3-tiny.cfg'): stride *= 2 - ng = int(img_size / stride) # number grid points - create_grids(self, img_size, ng) + ng = (int(img_size[0] / stride), int(img_size[1] / stride)) # number grid points + create_grids(self, max(img_size), ng) def forward(self, p, img_size, var=None): if ONNX_EXPORT: - bs, ng = 1, self.ng # batch size, grid size + bs = 1 # batch size else: - bs, ng = p.shape[0], p.shape[-1] + bs, nx, ny = p.shape[0], p.shape[-2], p.shape[-1] if self.img_size != img_size: - create_grids(self, img_size, ng, p.device) + create_grids(self, img_size, (nx, ny), p.device) # p.view(bs, 255, 13, 13) -- > (bs, 3, 13, 13, 85) # (bs, anchors, grid, grid, classes + xywh) - p = p.view(bs, self.na, self.nc + 5, ng, ng).permute(0, 1, 3, 4, 2).contiguous() # prediction + p = p.view(bs, self.na, self.nc + 5, self.nx, self.ny).permute(0, 1, 3, 4, 2).contiguous() # prediction if self.training: return p elif ONNX_EXPORT: + ngu = self.ng.view((1, 1, 2)) grid_xy = self.grid_xy.repeat((1, self.na, 1, 1, 1)).view((1, -1, 2)) - anchor_wh = self.anchor_wh.repeat((1, 1, ng, ng, 1)).view((1, -1, 2)) / ng + anchor_wh = self.anchor_wh.repeat((1, 1, self.nx, self.ny, 1)).view((1, -1, 2)) / self.nx # p = p.view(-1, 5 + self.nc) # xy = torch.sigmoid(p[..., 0:2]) + grid_xy[0] # x, y @@ -153,7 +152,7 @@ class YOLOLayer(nn.Module): p_cls = torch.exp(p_cls).permute((2, 1, 0)) p_cls = p_cls / p_cls.sum(0).unsqueeze(0) * p_conf.permute((2, 1, 0)) # F.softmax() equivalent p_cls = p_cls.permute(2, 1, 0) - return torch.cat((xy / ng, wh, p_conf, p_cls), 2).squeeze().t() + return torch.cat((xy / self.nx, wh, p_conf, p_cls), 2).squeeze().t() else: # inference io = p.clone() # inference output @@ -234,9 +233,9 @@ def get_yolo_layers(model): def create_grids(self, img_size, ng, device='cpu'): - nx, ny = ng, ng # x and y grid size + nx, ny = ng # x and y grid size self.img_size = img_size - self.stride = img_size / nx + self.stride = img_size / max(ng) # build xy offsets yv, xv = torch.meshgrid([torch.arange(nx), torch.arange(ny)]) @@ -245,7 +244,7 @@ def create_grids(self, img_size, ng, device='cpu'): # build wh gains self.anchor_vec = self.anchors.to(device) / self.stride self.anchor_wh = self.anchor_vec.view(1, self.na, 1, 1, 2).to(device) - self.ng = torch.Tensor([ng]).to(device) + self.ng = torch.Tensor(ng).to(device) self.nx = nx self.ny = ny diff --git a/test.py b/test.py index f218e7e9..e78d6be1 100644 --- a/test.py +++ b/test.py @@ -93,7 +93,7 @@ def test( # [{"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], "score": 0.236}, ... image_id = int(Path(paths[si]).stem.split('_')[-1]) box = pred[:, :4].clone() # xyxy - scale_coords(imgs[si].shape, box, shapes[si]) # to original shape + scale_coords(img_size, box, shapes[si]) # to original shape box = xyxy2xywh(box) # xywh box[:, :2] -= box[:, 2:] / 2 # xy center to top-left corner for di, d in enumerate(pred): diff --git a/utils/utils.py b/utils/utils.py index bd348b9a..e25f1983 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -102,13 +102,13 @@ def xywh2xyxy(x): def scale_coords(img1_shape, coords, img0_shape): # Rescale coords1 (xyxy) from img1_shape to img0_shape - gain = max(img1_shape[1:3]) / max(img0_shape[:2]) # gain = old / new - pad_x = (img1_shape[2] - img0_shape[1] * gain) / 2 # width padding - pad_y = (img1_shape[1] - img0_shape[0] * gain) / 2 # height padding + gain = img1_shape / max(img0_shape[:2]) # gain = old / new + pad_x = np.mod(img1_shape - img0_shape[1] * gain, 32) / 2 # width padding + pad_y = np.mod(img1_shape - img0_shape[0] * gain, 32) / 2 # height padding coords[:, [0, 2]] -= pad_x coords[:, [1, 3]] -= pad_y coords[:, :4] /= gain - coords[:, :4] = torch.clamp(coords[:, :4], min=0) + coords[:, :4] = coords[:, :4].clamp(min=0) return coords From 37799efa0b83adb1e18a1bb4519d48182e900190 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 21 Apr 2019 23:49:10 +0200 Subject: [PATCH 0739/2595] updates --- models.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/models.py b/models.py index 87b02cc5..497d7f00 100755 --- a/models.py +++ b/models.py @@ -131,16 +131,17 @@ class YOLOLayer(nn.Module): return p elif ONNX_EXPORT: - ngu = self.ng.view((1, 1, 2)) + # Constants CAN NOT BE BROADCAST, ensure correct shape! + ngu = self.ng.repeat((1, self.na * self.nx * self.ny, 1)) grid_xy = self.grid_xy.repeat((1, self.na, 1, 1, 1)).view((1, -1, 2)) - anchor_wh = self.anchor_wh.repeat((1, 1, self.nx, self.ny, 1)).view((1, -1, 2)) / self.nx + anchor_wh = self.anchor_wh.repeat((1, 1, self.nx, self.ny, 1)).view((1, -1, 2)) / ngu # p = p.view(-1, 5 + self.nc) # xy = torch.sigmoid(p[..., 0:2]) + grid_xy[0] # x, y # wh = torch.exp(p[..., 2:4]) * anchor_wh[0] # width, height # p_conf = torch.sigmoid(p[:, 4:5]) # Conf # p_cls = F.softmax(p[:, 5:85], 1) * p_conf # SSD-like conf - # return torch.cat((xy / ng, wh, p_conf, p_cls), 1).t() + # return torch.cat((xy / ngu[0], wh, p_conf, p_cls), 1).t() p = p.view(1, -1, 5 + self.nc) xy = torch.sigmoid(p[..., 0:2]) + grid_xy # x, y @@ -152,7 +153,7 @@ class YOLOLayer(nn.Module): p_cls = torch.exp(p_cls).permute((2, 1, 0)) p_cls = p_cls / p_cls.sum(0).unsqueeze(0) * p_conf.permute((2, 1, 0)) # F.softmax() equivalent p_cls = p_cls.permute(2, 1, 0) - return torch.cat((xy / self.nx, wh, p_conf, p_cls), 2).squeeze().t() + return torch.cat((xy / ngu, wh, p_conf, p_cls), 2).squeeze().t() else: # inference io = p.clone() # inference output From 0bac735cc62eae68bf1f09ad572c062a8f382cdd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 22 Apr 2019 12:51:20 +0200 Subject: [PATCH 0740/2595] updates --- models.py | 5 +++-- utils/datasets.py | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 497d7f00..87ff3e71 100755 --- a/models.py +++ b/models.py @@ -106,7 +106,8 @@ class YOLOLayer(nn.Module): self.anchors = torch.Tensor(anchors) self.na = len(anchors) # number of anchors (3) self.nc = nc # number of classes (80) - self.img_size = 0 + self.nx = 0 # initialize number of x gridpoints + self.ny = 0 # initialize number of y gridpoints if ONNX_EXPORT: # grids must be computed in __init__ stride = [32, 16, 8][yolo_layer] # stride of this layer @@ -121,7 +122,7 @@ class YOLOLayer(nn.Module): bs = 1 # batch size else: bs, nx, ny = p.shape[0], p.shape[-2], p.shape[-1] - if self.img_size != img_size: + if (self.nx, self.ny) != (nx, ny): create_grids(self, img_size, (nx, ny), p.device) # p.view(bs, 255, 13, 13) -- > (bs, 3, 13, 13, 85) # (bs, anchors, grid, grid, classes + xywh) diff --git a/utils/datasets.py b/utils/datasets.py index 174dc6c7..2ebed801 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -75,6 +75,7 @@ class LoadImages: # for inference # Padded resize img, _, _, _ = letterbox_rect(img0, height=self.height) + print('%gx%g ' % img.shape[:2], end='') # print image size # Normalize RGB img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB From cf2caaad4119ee2304a28cb583a0bc17bd2ffd79 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 22 Apr 2019 14:31:23 +0200 Subject: [PATCH 0741/2595] updates --- detect.py | 2 +- models.py | 14 +++++++------- utils/datasets.py | 2 +- utils/utils.py | 6 ++++-- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/detect.py b/detect.py index 918c87c4..7d696221 100644 --- a/detect.py +++ b/detect.py @@ -67,7 +67,7 @@ def detect( if detections is not None and len(detections) > 0: # Rescale boxes from 416 to true image size - scale_coords(img_size, detections[:, :4], im0.shape).round() + detections[:, :4] = scale_coords(img_size, detections[:, :4], im0.shape).round() # Print results to screen for c in detections[:, -1].unique(): diff --git a/models.py b/models.py index 87ff3e71..07aa8d47 100755 --- a/models.py +++ b/models.py @@ -121,12 +121,12 @@ class YOLOLayer(nn.Module): if ONNX_EXPORT: bs = 1 # batch size else: - bs, nx, ny = p.shape[0], p.shape[-2], p.shape[-1] - if (self.nx, self.ny) != (nx, ny): - create_grids(self, img_size, (nx, ny), p.device) + bs, ny, nx = p.shape[0], p.shape[-2], p.shape[-1] + if (self.ny, self.nx) != (ny, nx): + create_grids(self, img_size, (ny, nx), p.device) # p.view(bs, 255, 13, 13) -- > (bs, 3, 13, 13, 85) # (bs, anchors, grid, grid, classes + xywh) - p = p.view(bs, self.na, self.nc + 5, self.nx, self.ny).permute(0, 1, 3, 4, 2).contiguous() # prediction + p = p.view(bs, self.na, self.nc + 5, self.ny, self.nx).permute(0, 1, 3, 4, 2).contiguous() # prediction if self.training: return p @@ -235,13 +235,13 @@ def get_yolo_layers(model): def create_grids(self, img_size, ng, device='cpu'): - nx, ny = ng # x and y grid size + ny, nx = ng # x and y grid size self.img_size = img_size self.stride = img_size / max(ng) # build xy offsets - yv, xv = torch.meshgrid([torch.arange(nx), torch.arange(ny)]) - self.grid_xy = torch.stack((xv, yv), 2).to(device).float().view((1, 1, nx, ny, 2)) + yv, xv = torch.meshgrid([torch.arange(ny), torch.arange(nx)]) + self.grid_xy = torch.stack((xv, yv), 2).to(device).float().view((1, 1, ny, nx, 2)) # build wh gains self.anchor_vec = self.anchors.to(device) / self.stride diff --git a/utils/datasets.py b/utils/datasets.py index 2ebed801..e1f71667 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -74,7 +74,7 @@ class LoadImages: # for inference print('image %g/%g %s: ' % (self.count, self.nF, path), end='') # Padded resize - img, _, _, _ = letterbox_rect(img0, height=self.height) + img, _, _, _ = letterbox(img0, height=self.height) print('%gx%g ' % img.shape[:2], end='') # print image size # Normalize RGB diff --git a/utils/utils.py b/utils/utils.py index e25f1983..4ce682a2 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -103,8 +103,10 @@ def xywh2xyxy(x): def scale_coords(img1_shape, coords, img0_shape): # Rescale coords1 (xyxy) from img1_shape to img0_shape gain = img1_shape / max(img0_shape[:2]) # gain = old / new - pad_x = np.mod(img1_shape - img0_shape[1] * gain, 32) / 2 # width padding - pad_y = np.mod(img1_shape - img0_shape[0] * gain, 32) / 2 # height padding + # pad_x = np.mod(img1_shape - img0_shape[1] * gain, 32) / 2 # width padding + # pad_y = np.mod(img1_shape - img0_shape[0] * gain, 32) / 2 # height padding + pad_x = (img1_shape - img0_shape[1] * gain) / 2 # width padding + pad_y = (img1_shape - img0_shape[0] * gain) / 2 # height padding coords[:, [0, 2]] -= pad_x coords[:, [1, 3]] -= pad_y coords[:, :4] /= gain From e5d11c68ac92c25ff9ee09d25ee4c54274b717d1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 22 Apr 2019 14:59:39 +0200 Subject: [PATCH 0742/2595] updates --- detect.py | 12 ++++++------ models.py | 2 +- test.py | 2 +- utils/datasets.py | 2 +- utils/utils.py | 10 +++------- 5 files changed, 12 insertions(+), 16 deletions(-) diff --git a/detect.py b/detect.py index 7d696221..29151bbd 100644 --- a/detect.py +++ b/detect.py @@ -63,19 +63,19 @@ def detect( # Get detections img = torch.from_numpy(img).unsqueeze(0).to(device) pred, _ = model(img) - detections = non_max_suppression(pred, conf_thres, nms_thres)[0] + det = non_max_suppression(pred, conf_thres, nms_thres)[0] - if detections is not None and len(detections) > 0: + if det is not None and len(det) > 0: # Rescale boxes from 416 to true image size - detections[:, :4] = scale_coords(img_size, detections[:, :4], im0.shape).round() + det[:, :4] = scale_coords(img.shape, det[:, :4], im0.shape).round() # Print results to screen - for c in detections[:, -1].unique(): - n = (detections[:, -1] == c).sum() + for c in det[:, -1].unique(): + n = (det[:, -1] == c).sum() print('%g %ss' % (n, classes[int(c)]), end=', ') # Draw bounding boxes and labels of detections - for *xyxy, conf, cls_conf, cls in detections: + for *xyxy, conf, cls_conf, cls in det: if save_txt: # Write to file with open(save_path + '.txt', 'a') as file: file.write(('%g ' * 6 + '\n') % (*xyxy, cls, conf)) diff --git a/models.py b/models.py index 07aa8d47..877e6439 100755 --- a/models.py +++ b/models.py @@ -182,7 +182,7 @@ class Darknet(nn.Module): self.yolo_layers = get_yolo_layers(self) def forward(self, x, var=None): - img_size = x.shape[-1] + img_size = max(x.shape[-2:]) layer_outputs = [] output = [] diff --git a/test.py b/test.py index e78d6be1..f218e7e9 100644 --- a/test.py +++ b/test.py @@ -93,7 +93,7 @@ def test( # [{"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], "score": 0.236}, ... image_id = int(Path(paths[si]).stem.split('_')[-1]) box = pred[:, :4].clone() # xyxy - scale_coords(img_size, box, shapes[si]) # to original shape + scale_coords(imgs[si].shape, box, shapes[si]) # to original shape box = xyxy2xywh(box) # xywh box[:, :2] -= box[:, 2:] / 2 # xy center to top-left corner for di, d in enumerate(pred): diff --git a/utils/datasets.py b/utils/datasets.py index e1f71667..2ebed801 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -74,7 +74,7 @@ class LoadImages: # for inference print('image %g/%g %s: ' % (self.count, self.nF, path), end='') # Padded resize - img, _, _, _ = letterbox(img0, height=self.height) + img, _, _, _ = letterbox_rect(img0, height=self.height) print('%gx%g ' % img.shape[:2], end='') # print image size # Normalize RGB diff --git a/utils/utils.py b/utils/utils.py index 4ce682a2..f1c0ea8d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -102,13 +102,9 @@ def xywh2xyxy(x): def scale_coords(img1_shape, coords, img0_shape): # Rescale coords1 (xyxy) from img1_shape to img0_shape - gain = img1_shape / max(img0_shape[:2]) # gain = old / new - # pad_x = np.mod(img1_shape - img0_shape[1] * gain, 32) / 2 # width padding - # pad_y = np.mod(img1_shape - img0_shape[0] * gain, 32) / 2 # height padding - pad_x = (img1_shape - img0_shape[1] * gain) / 2 # width padding - pad_y = (img1_shape - img0_shape[0] * gain) / 2 # height padding - coords[:, [0, 2]] -= pad_x - coords[:, [1, 3]] -= pad_y + gain = max(img1_shape) / max(img0_shape) # gain = old / new + coords[:, [0, 2]] -= (img1_shape[3] - img0_shape[1] * gain) / 2 # x padding + coords[:, [1, 3]] -= (img1_shape[2] - img0_shape[0] * gain) / 2 # y padding coords[:, :4] /= gain coords[:, :4] = coords[:, :4].clamp(min=0) return coords From 23cd4ecfa7a0844ff2fb4bf748ce188458bd774c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 22 Apr 2019 16:17:01 +0200 Subject: [PATCH 0743/2595] updates --- utils/datasets.py | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 2ebed801..d5cbbc38 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -74,7 +74,7 @@ class LoadImages: # for inference print('image %g/%g %s: ' % (self.count, self.nF, path), end='') # Padded resize - img, _, _, _ = letterbox_rect(img0, height=self.height) + img, _, _, _ = letterbox(img0, height=self.height) print('%gx%g ' % img.shape[:2], end='') # print image size # Normalize RGB @@ -176,7 +176,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) h, w, _ = img.shape - img, ratio, padw, padh = letterbox(img, height=self.img_size) + img, ratio, padw, padh = letterbox(img, height=self.img_size, mode='square') # Load labels labels = [] @@ -236,30 +236,19 @@ class LoadImagesAndLabels(Dataset): # for training/testing return torch.stack(img, 0), torch.cat(label, 0), path, hw -def letterbox(img, height=416, color=(127.5, 127.5, 127.5)): - # Resize a rectangular image to a padded square - shape = img.shape[:2] # shape = [height, width] - ratio = float(height) / max(shape) # ratio = old / new - new_shape = (round(shape[1] * ratio), round(shape[0] * ratio)) # new_shape = [width, height] - - dw = (height - new_shape[0]) / 2 # width padding - dh = (height - new_shape[1]) / 2 # height padding - - top, bottom = round(dh - 0.1), round(dh + 0.1) - left, right = round(dw - 0.1), round(dw + 0.1) - img = cv2.resize(img, new_shape, interpolation=cv2.INTER_AREA) # resized, no border - img = cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color) # padded square - return img, ratio, dw, dh - - -def letterbox_rect(img, height=416, color=(127.5, 127.5, 127.5)): +def letterbox(img, height=416, color=(127.5, 127.5, 127.5), mode='rect'): # Resize a rectangular image to a 32 pixel multiple rectangle shape = img.shape[:2] # shape = [height, width] ratio = float(height) / max(shape) # ratio = old / new new_shape = (round(shape[1] * ratio), round(shape[0] * ratio)) # new_shape = [width, height] - dw = np.mod(height - new_shape[0], 32) / 2 # width padding - dh = np.mod(height - new_shape[1], 32) / 2 # height padding + # Select padding https://github.com/ultralytics/yolov3/issues/232 + if mode is 'rect': # rectangle + dw = np.mod(height - new_shape[0], 32) / 2 # width padding + dh = np.mod(height - new_shape[1], 32) / 2 # height padding + else: # square + dw = (height - new_shape[0]) / 2 # width padding + dh = (height - new_shape[1]) / 2 # height padding top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1)) left, right = int(round(dw - 0.1)), int(round(dw + 0.1)) From ab8d8cbc939e68fe336b5f44f7d31ae911a2fef6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 22 Apr 2019 16:21:21 +0200 Subject: [PATCH 0744/2595] updates --- detect.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/detect.py b/detect.py index 29151bbd..3a8c6f14 100644 --- a/detect.py +++ b/detect.py @@ -26,7 +26,11 @@ def detect( os.makedirs(output) # make new output folder # Initialize model - model = Darknet(cfg, img_size) + if ONNX_EXPORT: + s = (416, 416) # onnx model image size + model = Darknet(cfg, s) + else: + model = Darknet(cfg, img_size) # Load weights if weights.endswith('.pt'): # pytorch format @@ -37,8 +41,14 @@ def detect( # Fuse Conv2d + BatchNorm2d layers model.fuse() + # Eval mode model.to(device).eval() + if ONNX_EXPORT: + img = torch.zeros((1, 3, s[0], s[1])) + torch.onnx.export(model, img, 'weights/export.onnx', verbose=True) + return + # Set Dataloader vid_path, vid_writer = None, None if webcam: @@ -55,11 +65,6 @@ def detect( t = time.time() save_path = str(Path(output) / Path(path).name) - if ONNX_EXPORT: - img = torch.zeros((1, 3, 416, 416)) - torch.onnx.export(model, img, 'weights/export.onnx', verbose=True) - return - # Get detections img = torch.from_numpy(img).unsqueeze(0).to(device) pred, _ = model(img) From 5f6986195890baa87cac18e340d1a256b18f92df Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 22 Apr 2019 16:52:14 +0200 Subject: [PATCH 0745/2595] updates --- detect.py | 2 +- utils/utils.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/detect.py b/detect.py index 3a8c6f14..86682329 100644 --- a/detect.py +++ b/detect.py @@ -72,7 +72,7 @@ def detect( if det is not None and len(det) > 0: # Rescale boxes from 416 to true image size - det[:, :4] = scale_coords(img.shape, det[:, :4], im0.shape).round() + det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round() # Print results to screen for c in det[:, -1].unique(): diff --git a/utils/utils.py b/utils/utils.py index f1c0ea8d..d5917dc6 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -103,8 +103,8 @@ def xywh2xyxy(x): def scale_coords(img1_shape, coords, img0_shape): # Rescale coords1 (xyxy) from img1_shape to img0_shape gain = max(img1_shape) / max(img0_shape) # gain = old / new - coords[:, [0, 2]] -= (img1_shape[3] - img0_shape[1] * gain) / 2 # x padding - coords[:, [1, 3]] -= (img1_shape[2] - img0_shape[0] * gain) / 2 # y padding + coords[:, [0, 2]] -= (img1_shape[1] - img0_shape[1] * gain) / 2 # x padding + coords[:, [1, 3]] -= (img1_shape[0] - img0_shape[0] * gain) / 2 # y padding coords[:, :4] /= gain coords[:, :4] = coords[:, :4].clamp(min=0) return coords From eb4acecbb55368f898fab8f52709db5534bdb098 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 22 Apr 2019 16:53:42 +0200 Subject: [PATCH 0746/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index f218e7e9..7d9f8822 100644 --- a/test.py +++ b/test.py @@ -93,7 +93,7 @@ def test( # [{"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], "score": 0.236}, ... image_id = int(Path(paths[si]).stem.split('_')[-1]) box = pred[:, :4].clone() # xyxy - scale_coords(imgs[si].shape, box, shapes[si]) # to original shape + scale_coords(imgs[si].shape[1:], box, shapes[si]) # to original shape box = xyxy2xywh(box) # xywh box[:, :2] -= box[:, 2:] / 2 # xy center to top-left corner for di, d in enumerate(pred): From 334c7c94cf1611ac3e3f6f80541b5dcdefa1412c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 22 Apr 2019 23:27:31 +0200 Subject: [PATCH 0747/2595] updates --- train.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index 1bf730d8..3c74bdfe 100644 --- a/train.py +++ b/train.py @@ -121,9 +121,7 @@ def train( if torch.cuda.device_count() > 1: dist.init_process_group(backend=opt.backend, init_method=opt.dist_url, world_size=opt.world_size, rank=opt.rank) model = torch.nn.parallel.DistributedDataParallel(model) - sampler = torch.utils.data.distributed.DistributedSampler(dataset) - else: - sampler = None + # sampler = torch.utils.data.distributed.DistributedSampler(dataset) # Dataloader dataloader = DataLoader(dataset, @@ -131,8 +129,7 @@ def train( num_workers=opt.num_workers, shuffle=True, pin_memory=True, - collate_fn=dataset.collate_fn, - sampler=sampler) + collate_fn=dataset.collate_fn) # Mixed precision training https://github.com/NVIDIA/apex # install help: https://github.com/NVIDIA/apex/issues/259 From 85a4cf004237fae25fe833ae58fb13c599c06852 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 23 Apr 2019 16:48:47 +0200 Subject: [PATCH 0748/2595] updates --- models.py | 88 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 57 insertions(+), 31 deletions(-) diff --git a/models.py b/models.py index 877e6439..3968b726 100755 --- a/models.py +++ b/models.py @@ -172,15 +172,19 @@ class YOLOLayer(nn.Module): class Darknet(nn.Module): """YOLOv3 object detection model""" - def __init__(self, cfg_path, img_size=416): + def __init__(self, cfg, img_size=(416, 416)): super(Darknet, self).__init__() - self.module_defs = parse_model_cfg(cfg_path) - self.module_defs[0]['cfg'] = cfg_path + self.module_defs = parse_model_cfg(cfg) + self.module_defs[0]['cfg'] = cfg self.module_defs[0]['height'] = img_size self.hyperparams, self.module_list = create_modules(self.module_defs) self.yolo_layers = get_yolo_layers(self) + # Needed to write header when saving weights + self.header_info = np.zeros(5, dtype=np.int32) # First five are header values + self.seen = self.header_info[3] # number of images seen during training + def forward(self, x, var=None): img_size = max(x.shape[-2:]) layer_outputs = [] @@ -270,15 +274,14 @@ def load_darknet_weights(self, weights, cutoff=-1): cutoff = 15 # Open the weights file - fp = open(weights, 'rb') - header = np.fromfile(fp, dtype=np.int32, count=5) # First five are header values + with open(weights, 'rb') as f: + header = np.fromfile(f, dtype=np.int32, count=5) # First five are header values - # Needed to write header when saving weights - self.header_info = header + # Needed to write header when saving weights + self.header_info = header - self.seen = header[3] # number of images seen during training - weights = np.fromfile(fp, dtype=np.float32) # The rest are weights - fp.close() + self.seen = header[3] # number of images seen during training + weights = np.fromfile(f, dtype=np.float32) # The rest are weights ptr = 0 for i, (module_def, module) in enumerate(zip(self.module_defs[:cutoff], self.module_list[:cutoff])): @@ -319,26 +322,49 @@ def load_darknet_weights(self, weights, cutoff=-1): return cutoff -def save_weights(self, path, cutoff=-1): - fp = open(path, 'wb') - self.header_info[3] = self.seen # number of images seen during training - self.header_info.tofile(fp) +def save_weights(self, path='model.weights', cutoff=-1): + # Converts a PyTorch model to Darket format (*.pt to *.weights) + # Note: Does not work if model.fuse() is applied + with open(path, 'wb') as f: + self.header_info[3] = self.seen # number of images seen during training + self.header_info.tofile(f) - # Iterate through layers - for i, (module_def, module) in enumerate(zip(self.module_defs[:cutoff], self.module_list[:cutoff])): - if module_def['type'] == 'convolutional': - conv_layer = module[0] - # If batch norm, load bn first - if module_def['batch_normalize']: - bn_layer = module[1] - bn_layer.bias.data.cpu().numpy().tofile(fp) - bn_layer.weight.data.cpu().numpy().tofile(fp) - bn_layer.running_mean.data.cpu().numpy().tofile(fp) - bn_layer.running_var.data.cpu().numpy().tofile(fp) - # Load conv bias - else: - conv_layer.bias.data.cpu().numpy().tofile(fp) - # Load conv weights - conv_layer.weight.data.cpu().numpy().tofile(fp) + # Iterate through layers + for i, (module_def, module) in enumerate(zip(self.module_defs[:cutoff], self.module_list[:cutoff])): + if module_def['type'] == 'convolutional': + conv_layer = module[0] + # If batch norm, load bn first + if module_def['batch_normalize']: + bn_layer = module[1] + bn_layer.bias.data.cpu().numpy().tofile(f) + bn_layer.weight.data.cpu().numpy().tofile(f) + bn_layer.running_mean.data.cpu().numpy().tofile(f) + bn_layer.running_var.data.cpu().numpy().tofile(f) + # Load conv bias + else: + conv_layer.bias.data.cpu().numpy().tofile(f) + # Load conv weights + conv_layer.weight.data.cpu().numpy().tofile(f) - fp.close() + +def convert(cfg='cfg/yolov3-spp.cfg', weights='weights/yolov3-spp.weights'): + # Converts between PyTorch and Darknet format per extension (i.e. *.weights convert to *.pt and vice versa) + # from models import *; convert('cfg/yolov3-spp.cfg', 'weights/yolov3-spp.weights') + + # Initialize model + model = Darknet(cfg) + + # Load weights and save + if weights.endswith('.pt'): # if PyTorch format + model.load_state_dict(torch.load(weights, map_location='cpu')['model']) + save_weights(model, path='converted.weights', cutoff=-1) + print("Success: converted '%s' to 'converted.weights'" % weights) + + elif weights.endswith('.weights'): # darknet format + _ = load_darknet_weights(model, weights) + chkpt = {'epoch': -1, 'best_loss': None, 'model': model.state_dict(), 'optimizer': None} + torch.save(chkpt, 'converted.pt') + print("Success: converted '%s' to 'converted.pt'" % weights) + + else: + print('Error: extension not supported.') From 50e5a4fe5c1598d5039af2eb4df3ef67002ecb91 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 23 Apr 2019 17:04:46 +0200 Subject: [PATCH 0749/2595] Update README.md --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index abe0400f..25f30979 100755 --- a/README.md +++ b/README.md @@ -195,6 +195,20 @@ Computing mAP: 100%|████████████████████ ``` +# Conversion to/from Darknet + +```bash +git clone https://github.com/ultralytics/yolov3 && cd yolov3 + +# convert darknet cfg/weights to pytorch model +python3 -c "from models import *; convert('cfg/yolov3-spp.cfg', 'weights/yolov3-spp.weights')" +Success: converted 'weights/yolov3-spp.weights' to 'converted.pt' + +# convert cfg/pytorch model to darknet weights +python3 -c "from models import *; convert('cfg/yolov3-spp.cfg', 'weights/yolov3-spp.pt')" +Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' +``` + # Citation [![DOI](https://zenodo.org/badge/146165888.svg)](https://zenodo.org/badge/latestdoi/146165888) From 5e9274f0bb0e0dfc5b9dbbff7c8328f7b5de929f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 23 Apr 2019 17:05:42 +0200 Subject: [PATCH 0750/2595] Update README.md --- README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 25f30979..69f7d8df 100755 --- a/README.md +++ b/README.md @@ -115,6 +115,20 @@ Run `detect.py` with `webcam=True` to show a live webcam feed. - Darknet `*.weights` format: https://pjreddie.com/media/files/yolov3.weights - PyTorch `*.pt` format: https://drive.google.com/drive/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI +## Darknet Conversion + +```bash +git clone https://github.com/ultralytics/yolov3 && cd yolov3 + +# convert darknet cfg/weights to pytorch model +python3 -c "from models import *; convert('cfg/yolov3-spp.cfg', 'weights/yolov3-spp.weights')" +Success: converted 'weights/yolov3-spp.weights' to 'converted.pt' + +# convert cfg/pytorch model to darknet weights +python3 -c "from models import *; convert('cfg/yolov3-spp.cfg', 'weights/yolov3-spp.pt')" +Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' +``` + # mAP - Use `test.py --weights weights/yolov3.weights` to test the official YOLOv3 weights. @@ -195,20 +209,6 @@ Computing mAP: 100%|████████████████████ ``` -# Conversion to/from Darknet - -```bash -git clone https://github.com/ultralytics/yolov3 && cd yolov3 - -# convert darknet cfg/weights to pytorch model -python3 -c "from models import *; convert('cfg/yolov3-spp.cfg', 'weights/yolov3-spp.weights')" -Success: converted 'weights/yolov3-spp.weights' to 'converted.pt' - -# convert cfg/pytorch model to darknet weights -python3 -c "from models import *; convert('cfg/yolov3-spp.cfg', 'weights/yolov3-spp.pt')" -Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' -``` - # Citation [![DOI](https://zenodo.org/badge/146165888.svg)](https://zenodo.org/badge/latestdoi/146165888) From 8d653ede3aa85889ccaf7476281c7954a2a657be Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 23 Apr 2019 18:36:43 +0200 Subject: [PATCH 0751/2595] updates --- utils/datasets.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index d5cbbc38..30efeb11 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -131,8 +131,8 @@ class LoadWebcam: # for inference class LoadImagesAndLabels(Dataset): # for training/testing def __init__(self, path, img_size=416, augment=False): - with open(path, 'r') as file: - img_files = file.read().splitlines() + with open(path, 'r') as f: + img_files = f.read().splitlines() self.img_files = list(filter(lambda x: len(x) > 0, img_files)) n = len(self.img_files) @@ -143,6 +143,18 @@ class LoadImagesAndLabels(Dataset): # for training/testing x.replace('images', 'labels').replace('.bmp', '.txt').replace('.jpg', '.txt').replace('.png', '.txt') for x in self.img_files] + # sort dataset by aspect ratio for rectangular training + self.rectangle = False + if self.rectangle: + from PIL import Image + + s = np.array([Image.open(f).size for f in tqdm(self.img_files, desc='Reading image shapes')]) + ar = s[:, 1] / s[:, 0] # aspect ratio + i = ar.argsort() + self.img_files = [self.img_files[i] for i in i] + self.label_files = [self.label_files[i] for i in i] + self.ar = ar[i] + # if n < 200: # preload all images into memory if possible # self.imgs = [cv2.imread(img_files[i]) for i in range(n)] @@ -246,7 +258,7 @@ def letterbox(img, height=416, color=(127.5, 127.5, 127.5), mode='rect'): if mode is 'rect': # rectangle dw = np.mod(height - new_shape[0], 32) / 2 # width padding dh = np.mod(height - new_shape[1], 32) / 2 # height padding - else: # square + elif mode is 'square': # square dw = (height - new_shape[0]) / 2 # width padding dh = (height - new_shape[1]) / 2 # height padding From e2b554ca129c0ddd1ab3f6a1adef55095f1cc2de Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 23 Apr 2019 18:53:36 +0200 Subject: [PATCH 0752/2595] updates --- {weights => utils}/gcp.sh | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) rename {weights => utils}/gcp.sh (87%) diff --git a/weights/gcp.sh b/utils/gcp.sh similarity index 87% rename from weights/gcp.sh rename to utils/gcp.sh index fe5a0b1c..60fda54b 100755 --- a/weights/gcp.sh +++ b/utils/gcp.sh @@ -54,13 +54,22 @@ gsutil cp results*.txt gs://ultralytics gsutil cp results.png gs://ultralytics sudo shutdown +# Reproduce mAP +cp -r cocoapi/PythonAPI/pycocotools yolov3 +cp -r weights yolov3 && cd yolov3 +python3 test.py --save-json --img-size 608 --batch-size 16 +python3 test.py --save-json --img-size 416 +python3 test.py --save-json --img-size 320 +sudo shutdown + # Unit tests rm -rf yolov3 git clone https://github.com/ultralytics/yolov3 # master +cp -r cocoapi/PythonAPI/pycocotools yolov3 cp -r weights yolov3 && cd yolov3 python3 detect.py # detect python3 test.py --data data/coco_32img.data # test -python3 train.py --data data/coco_32img.data --epochs 5 --nosave # train +python3 train.py --data data/coco_32img.data --epochs 50 --nosave # train # Debug/Development rm -rf yolov3 @@ -71,3 +80,6 @@ cp -r weights yolov3 && cd yolov3 python3 train.py --evolve --data data/coco_100img.data --num-workers 2 --epochs 30 gsutil cp evolve.txt gs://ultralytics sudo shutdown + + + From 87a450c933eefb7021318d4556e258de8dafdab1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 23 Apr 2019 18:54:27 +0200 Subject: [PATCH 0753/2595] updates --- utils/gcp.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 60fda54b..3b986a94 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -12,8 +12,8 @@ sudo reboot now rm -rf yolov3 git clone https://github.com/ultralytics/yolov3 # master # git clone -b test --depth 1 https://github.com/ultralytics/yolov3 yolov3_test # branch -cp -r weights yolov3 cp -r cocoapi/PythonAPI/pycocotools yolov3 +cp -r weights yolov3 cd yolov3 # Train @@ -55,8 +55,6 @@ gsutil cp results.png gs://ultralytics sudo shutdown # Reproduce mAP -cp -r cocoapi/PythonAPI/pycocotools yolov3 -cp -r weights yolov3 && cd yolov3 python3 test.py --save-json --img-size 608 --batch-size 16 python3 test.py --save-json --img-size 416 python3 test.py --save-json --img-size 320 From 1771ffb1cf293ef176ac6ef2ddb7af7ca672c0e7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 24 Apr 2019 12:58:14 +0200 Subject: [PATCH 0754/2595] updates --- train.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/train.py b/train.py index 3c74bdfe..ea1a6034 100644 --- a/train.py +++ b/train.py @@ -100,19 +100,23 @@ def train( else: cutoff = load_darknet_weights(model, weights + 'darknet53.conv.74') - # Scheduler (reduce lr at epochs 218, 245, i.e. batches 400k, 450k) + # Scheduler https://github.com/ultralytics/yolov3/issues/238 # lf = lambda x: 1 - x / epochs # linear ramp to zero - # lf = lambda x: 10 ** (-2 * x / epochs) # exp ramp to lr0 * 1e-2 - lf = lambda x: 1 - 10 ** (hyp['lrf'] * (1 - x / epochs)) # inv exp ramp to lr0 * 1e-2 + # lf = lambda x: 10 ** (hyp['lrf'] * x / epochs) # exp ramp to lr0 * hyp['lrf'] + lf = lambda x: 1 - 10 ** (hyp['lrf'] * (1 - x / epochs)) # inv exp ramp to lr0 * hyp['lrf'] scheduler = optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lf, last_epoch=start_epoch - 1) - # scheduler = optim.lr_scheduler.MultiStepLR(optimizer,milestones=[218, 245],gamma=0.1,last_epoch=start_epoch - 1) + # scheduler = optim.lr_scheduler.MultiStepLR(optimizer, milestones=[218, 245], gamma=0.1, last_epoch=start_epoch - 1) - # Plot lr schedule + # # Plot lr schedule # y = [] # for _ in range(epochs): # scheduler.step() # y.append(optimizer.param_groups[0]['lr']) - # plt.plot(y) + # plt.plot(y, label='LambdaLR') + # plt.xlabel('epoch') + # plt.xlabel('LR') + # plt.tight_layout() + # plt.savefig('LR.png', dpi=300) # Dataset dataset = LoadImagesAndLabels(train_path, img_size=img_size, augment=True) @@ -165,8 +169,6 @@ def train( imgs = imgs.to(device) targets = targets.to(device) nt = len(targets) - # if nt == 0: # if no targets continue - # continue # Plot images with bounding boxes if epoch == 0 and i == 0: From bd2378fad1578e7d7722ad846458ad7a2bb43442 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 24 Apr 2019 13:30:24 +0200 Subject: [PATCH 0755/2595] updates --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index ea1a6034..f4477cf8 100644 --- a/train.py +++ b/train.py @@ -102,10 +102,10 @@ def train( # Scheduler https://github.com/ultralytics/yolov3/issues/238 # lf = lambda x: 1 - x / epochs # linear ramp to zero - # lf = lambda x: 10 ** (hyp['lrf'] * x / epochs) # exp ramp to lr0 * hyp['lrf'] - lf = lambda x: 1 - 10 ** (hyp['lrf'] * (1 - x / epochs)) # inv exp ramp to lr0 * hyp['lrf'] + # lf = lambda x: 10 ** (hyp['lrf'] * x / epochs) # exp ramp + lf = lambda x: 1 - 10 ** (hyp['lrf'] * (1 - x / epochs)) # inverse exp ramp scheduler = optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lf, last_epoch=start_epoch - 1) - # scheduler = optim.lr_scheduler.MultiStepLR(optimizer, milestones=[218, 245], gamma=0.1, last_epoch=start_epoch - 1) + # scheduler = optim.lr_scheduler.MultiStepLR(optimizer, milestones=[218, 245], gamma=0.1, last_epoch=start_epoch-1) # # Plot lr schedule # y = [] From 3a375f71329e1e487f9aa228e6ed1211df54e1ac Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 24 Apr 2019 14:09:15 +0200 Subject: [PATCH 0756/2595] updates --- train.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/train.py b/train.py index f4477cf8..af10b5f8 100644 --- a/train.py +++ b/train.py @@ -326,15 +326,16 @@ if __name__ == '__main__': x = (np.random.randn(1) * s[i] + 1) ** 1.1 # plt.hist(x.ravel(), 100) hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma - # Apply limits - hyp['iou_t'] = np.clip(hyp['iou_t'], 0, 0.90) - hyp['momentum'] = np.clip(hyp['momentum'], 0.8, 0.95) - hyp['weight_decay'] = np.clip(hyp['weight_decay'], 0, 0.01) + # Clip to limits + keys = ['iou_t', 'momentum', 'weight_decay'] + limits = [(0, 0.90), (0.80, 0.95), (0, 0.01)] + for k, v in zip(keys, limits): + hyp[k] = np.clip(hyp[k], v[0], v[1]) # Normalize loss components (sum to 1) - lcf = ['xy', 'wh', 'cls', 'conf'] - s = sum([v for k, v in hyp.items() if k in lcf]) - for k in lcf: + keys = ['xy', 'wh', 'cls', 'conf'] + s = sum([v for k, v in hyp.items() if k in keys]) + for k in keys: hyp[k] /= s # Determine mutation fitness From 55aaf9a21ee71735b8bf1f36b387cd90cd61d3d8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 24 Apr 2019 14:19:43 +0200 Subject: [PATCH 0757/2595] updates --- utils/gcp.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 3b986a94..b3740ef1 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -11,7 +11,7 @@ sudo reboot now # Re-clone rm -rf yolov3 git clone https://github.com/ultralytics/yolov3 # master -# git clone -b test --depth 1 https://github.com/ultralytics/yolov3 yolov3_test # branch +# git clone -b test --depth 1 https://github.com/ultralytics/yolov3 test # branch cp -r cocoapi/PythonAPI/pycocotools yolov3 cp -r weights yolov3 cd yolov3 From 20bb5f0a6a72eead188b91021bab0c58df70671c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 24 Apr 2019 16:39:56 +0200 Subject: [PATCH 0758/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index d5917dc6..2e46fbbe 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -351,7 +351,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): pred[:, 4] *= class_conf # Select only suitable predictions - i = (pred[:, 4] > conf_thres) & (pred[:, 2:4] > min_wh).all(1) & (torch.isnan(pred).any(1) == 0) + i = (pred[:, 4] > conf_thres) & (pred[:, 2:4] > min_wh).all(1) & torch.isfinite(pred).all(1) pred = pred[i] # If none are remaining => process next image From aa2df1eda70b816da0eb96462e73d58bd95e875c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 24 Apr 2019 17:02:52 +0200 Subject: [PATCH 0759/2595] updates --- utils/gcp.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index b3740ef1..477264f2 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -6,7 +6,7 @@ git clone https://github.com/ultralytics/yolov3 bash yolov3/weights/download_yolov3_weights.sh && cp -r weights yolov3 bash yolov3/data/get_coco_dataset.sh git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 -sudo reboot now +sudo shutdown # Re-clone rm -rf yolov3 @@ -67,7 +67,7 @@ cp -r cocoapi/PythonAPI/pycocotools yolov3 cp -r weights yolov3 && cd yolov3 python3 detect.py # detect python3 test.py --data data/coco_32img.data # test -python3 train.py --data data/coco_32img.data --epochs 50 --nosave # train +python3 train.py --data data/coco_32img.data --epochs 4 --nosave # train # Debug/Development rm -rf yolov3 From fbf0014cd6053695de7c732c42c7748293fb776f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 24 Apr 2019 17:13:36 +0200 Subject: [PATCH 0760/2595] updates --- utils/utils.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 2e46fbbe..3e400ff7 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -376,12 +376,12 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): nms_style = 'MERGE' # 'OR' (default), 'AND', 'MERGE' (experimental) for c in pred[:, -1].unique(): dc = pred[pred[:, -1] == c] # select class c - dc = dc[:min(len(dc), 100)] # limit to first 100 boxes: https://github.com/ultralytics/yolov3/issues/117 - - # No NMS required if only 1 prediction - if len(dc) == 1: - det_max.append(dc) + n = len(dc) + if n == 1: + det_max.append(dc) # No NMS required if only 1 prediction continue + elif n > 100: + dc = dc[:100] # limit to first 100 boxes: https://github.com/ultralytics/yolov3/issues/117 # Non-maximum suppression if nms_style == 'OR': # default From 387bdb010db8b0669df227cd118f4d54d4a8862f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 24 Apr 2019 19:56:04 +0200 Subject: [PATCH 0761/2595] updates --- utils/datasets.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 30efeb11..1dc1b7b8 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -277,7 +277,8 @@ def random_affine(img, targets=(), degrees=(-10, 10), translate=(.1, .1), scale= if targets is None: targets = [] border = 0 # width of added border (optional) - height = max(img.shape[0], img.shape[1]) + border * 2 + height = img.shape[0] + border * 2 + width = img.shape[1] + border * 2 # Rotation and Scale R = np.eye(3) @@ -297,7 +298,7 @@ def random_affine(img, targets=(), degrees=(-10, 10), translate=(.1, .1), scale= S[1, 0] = math.tan((random.random() * (shear[1] - shear[0]) + shear[0]) * math.pi / 180) # y shear (deg) M = S @ T @ R # Combined rotation matrix. ORDER IS IMPORTANT HERE!! - imw = cv2.warpPerspective(img, M, dsize=(height, height), flags=cv2.INTER_LINEAR, + imw = cv2.warpPerspective(img, M, dsize=(width, height), flags=cv2.INTER_LINEAR, borderValue=borderValue) # BGR order borderValue # Return warped points also @@ -326,7 +327,8 @@ def random_affine(img, targets=(), degrees=(-10, 10), translate=(.1, .1), scale= xy = np.concatenate((x - w / 2, y - h / 2, x + w / 2, y + h / 2)).reshape(4, n).T # reject warped points outside of image - np.clip(xy, 0, height, out=xy) + xy[:, [0, 2]] = xy[:, [0, 2]].clip(0, width) + xy[:, [1, 3]] = xy[:, [1, 3]].clip(0, height) w = xy[:, 2] - xy[:, 0] h = xy[:, 3] - xy[:, 1] area = w * h From 9c0cde69d5bf76fc0b1dee3aaf3df7aeb51fab5c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 24 Apr 2019 21:02:23 +0200 Subject: [PATCH 0762/2595] updates --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 850fc59f..a2f3b133 100755 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ data/* !data/samples/zidane.jpg +!data/samples/bus.jpg !data/coco.names !data/coco_paper.names !data/coco.data From 83793ffb2bce62d554a58307978644de578e3a35 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 24 Apr 2019 21:23:54 +0200 Subject: [PATCH 0763/2595] updates --- test.py | 2 +- train.py | 4 +-- utils/datasets.py | 68 ++++++++++++++++++++++++++++++++++------------- 3 files changed, 52 insertions(+), 22 deletions(-) diff --git a/test.py b/test.py index 7d9f8822..ec9d717d 100644 --- a/test.py +++ b/test.py @@ -44,7 +44,7 @@ def test( names = load_classes(data_cfg['names']) # class names # Dataloader - dataset = LoadImagesAndLabels(test_path, img_size=img_size) + dataset = LoadImagesAndLabels(test_path, img_size, batch_size) dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=4, diff --git a/train.py b/train.py index af10b5f8..3a2bae2c 100644 --- a/train.py +++ b/train.py @@ -119,7 +119,7 @@ def train( # plt.savefig('LR.png', dpi=300) # Dataset - dataset = LoadImagesAndLabels(train_path, img_size=img_size, augment=True) + dataset = LoadImagesAndLabels(train_path, img_size, batch_size, augment=True) # Initialize distributed training if torch.cuda.device_count() > 1: @@ -131,7 +131,7 @@ def train( dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=opt.num_workers, - shuffle=True, + shuffle=False, pin_memory=True, collate_fn=dataset.collate_fn) diff --git a/utils/datasets.py b/utils/datasets.py index 1dc1b7b8..5fa6e182 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -74,7 +74,7 @@ class LoadImages: # for inference print('image %g/%g %s: ' % (self.count, self.nF, path), end='') # Padded resize - img, _, _, _ = letterbox(img0, height=self.height) + img, _, _, _ = letterbox(img0, new_shape=self.height) print('%gx%g ' % img.shape[:2], end='') # print image size # Normalize RGB @@ -116,7 +116,7 @@ class LoadWebcam: # for inference img0 = cv2.flip(img0, 1) # flip left-right # Padded resize - img, _, _, _ = letterbox(img0, height=self.height) + img, _, _, _ = letterbox(img0, new_shape=self.height) # Normalize RGB img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB @@ -130,7 +130,7 @@ class LoadWebcam: # for inference class LoadImagesAndLabels(Dataset): # for training/testing - def __init__(self, path, img_size=416, augment=False): + def __init__(self, path, img_size=416, batch_size=16, augment=False): with open(path, 'r') as f: img_files = f.read().splitlines() self.img_files = list(filter(lambda x: len(x) > 0, img_files)) @@ -143,17 +143,35 @@ class LoadImagesAndLabels(Dataset): # for training/testing x.replace('images', 'labels').replace('.bmp', '.txt').replace('.jpg', '.txt').replace('.png', '.txt') for x in self.img_files] - # sort dataset by aspect ratio for rectangular training - self.rectangle = False - if self.rectangle: + # Rectangular Training https://github.com/ultralytics/yolov3/issues/232 + self.train_rectangular = True + if self.train_rectangular: + bi = np.floor(np.arange(n) / batch_size).astype(np.int) # batch index + nb = bi[-1] # number of batches from PIL import Image + # Read image aspect ratios s = np.array([Image.open(f).size for f in tqdm(self.img_files, desc='Reading image shapes')]) ar = s[:, 1] / s[:, 0] # aspect ratio + + # Sort by aspect ratio i = ar.argsort() + ar = ar[i] self.img_files = [self.img_files[i] for i in i] self.label_files = [self.label_files[i] for i in i] - self.ar = ar[i] + + # Set training image shapes + shapes = [[1, 1]] * nb + for i in range(nb): + ari = ar[bi == i] + mini, maxi = ari.min(), ari.max() + if maxi < 1: + shapes[i] = [maxi, 1] + elif mini > 1: + shapes[i] = [1, 1 / mini] + + self.batch_shapes = np.ceil(np.array(shapes) * img_size / 32.).astype(np.int) * 32 + self.batch = bi # batch index of image # if n < 200: # preload all images into memory if possible # self.imgs = [cv2.imread(img_files[i]) for i in range(n)] @@ -187,8 +205,13 @@ class LoadImagesAndLabels(Dataset): # for training/testing img_hsv[:, :, 2] = V if b < 1 else V.clip(None, 255) cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) + # Letterbox h, w, _ = img.shape - img, ratio, padw, padh = letterbox(img, height=self.img_size, mode='square') + if self.train_rectangular: + new_shape = self.batch_shapes[self.batch[index]] + img, ratio, padw, padh = letterbox(img, new_shape=new_shape, mode='rect') + else: + img, ratio, padw, padh = letterbox(img, new_shape=self.img_size, mode='square') # Load labels labels = [] @@ -248,23 +271,30 @@ class LoadImagesAndLabels(Dataset): # for training/testing return torch.stack(img, 0), torch.cat(label, 0), path, hw -def letterbox(img, height=416, color=(127.5, 127.5, 127.5), mode='rect'): +def letterbox(img, new_shape=416, color=(127.5, 127.5, 127.5), mode='auto'): # Resize a rectangular image to a 32 pixel multiple rectangle - shape = img.shape[:2] # shape = [height, width] - ratio = float(height) / max(shape) # ratio = old / new - new_shape = (round(shape[1] * ratio), round(shape[0] * ratio)) # new_shape = [width, height] + # https://github.com/ultralytics/yolov3/issues/232 + shape = img.shape[:2] # current shape [height, width] + if isinstance(new_shape, int): + ratio = float(new_shape) / max(shape) + else: + ratio = max(new_shape) / max(shape) # ratio = new / old + new_unpad = (int(round(shape[1] * ratio)), int(round(shape[0] * ratio))) - # Select padding https://github.com/ultralytics/yolov3/issues/232 - if mode is 'rect': # rectangle - dw = np.mod(height - new_shape[0], 32) / 2 # width padding - dh = np.mod(height - new_shape[1], 32) / 2 # height padding + # Compute padding https://github.com/ultralytics/yolov3/issues/232 + if mode is 'auto': # minimum rectangle + dw = np.mod(new_shape - new_unpad[0], 32) / 2 # width padding + dh = np.mod(new_shape - new_unpad[1], 32) / 2 # height padding elif mode is 'square': # square - dw = (height - new_shape[0]) / 2 # width padding - dh = (height - new_shape[1]) / 2 # height padding + dw = (new_shape - new_unpad[0]) / 2 # width padding + dh = (new_shape - new_unpad[1]) / 2 # height padding + elif mode is 'rect': # square + dw = (new_shape[1] - new_unpad[0]) / 2 # width padding + dh = (new_shape[0] - new_unpad[1]) / 2 # height padding top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1)) left, right = int(round(dw - 0.1)), int(round(dw + 0.1)) - img = cv2.resize(img, new_shape, interpolation=cv2.INTER_AREA) # resized, no border + img = cv2.resize(img, new_unpad, interpolation=cv2.INTER_AREA) # resized, no border img = cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color) # padded square return img, ratio, dw, dh From fa0acebe2a9943614bb830fdb90de9bffc733e7b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 24 Apr 2019 21:28:11 +0200 Subject: [PATCH 0764/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 5fa6e182..6882f49b 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -144,7 +144,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing for x in self.img_files] # Rectangular Training https://github.com/ultralytics/yolov3/issues/232 - self.train_rectangular = True + self.train_rectangular = False if self.train_rectangular: bi = np.floor(np.arange(n) / batch_size).astype(np.int) # batch index nb = bi[-1] # number of batches From 3e71b8d48bb47e01342523dc8477c4370fc388cf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 24 Apr 2019 21:37:32 +0200 Subject: [PATCH 0765/2595] updates --- utils/datasets.py | 7 ++++--- utils/gcp.sh | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 6882f49b..33d89a68 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -144,14 +144,15 @@ class LoadImagesAndLabels(Dataset): # for training/testing for x in self.img_files] # Rectangular Training https://github.com/ultralytics/yolov3/issues/232 - self.train_rectangular = False + self.train_rectangular = True if self.train_rectangular: bi = np.floor(np.arange(n) / batch_size).astype(np.int) # batch index - nb = bi[-1] # number of batches + nb = bi[-1] + 1 # number of batches from PIL import Image # Read image aspect ratios - s = np.array([Image.open(f).size for f in tqdm(self.img_files, desc='Reading image shapes')]) + iter = tqdm(self.img_files, desc='Reading image shapes') if n > 100 else self.img_files + s = np.array([Image.open(f).size for f in iter]) ar = s[:, 1] / s[:, 0] # aspect ratio # Sort by aspect ratio diff --git a/utils/gcp.sh b/utils/gcp.sh index 477264f2..a5ca261b 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -64,7 +64,7 @@ sudo shutdown rm -rf yolov3 git clone https://github.com/ultralytics/yolov3 # master cp -r cocoapi/PythonAPI/pycocotools yolov3 -cp -r weights yolov3 && cd yolov3 +cp -r weights yolov3 && cd yolov3 python3 detect.py # detect python3 test.py --data data/coco_32img.data # test python3 train.py --data data/coco_32img.data --epochs 4 --nosave # train From 365d38bc0cbe33ca29c4ec97f4dfe85a867cba4f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 24 Apr 2019 21:41:18 +0200 Subject: [PATCH 0766/2595] updates --- train.py | 4 ++-- utils/gcp.sh | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index 3a2bae2c..aaa8851e 100644 --- a/train.py +++ b/train.py @@ -131,7 +131,7 @@ def train( dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=opt.num_workers, - shuffle=False, + shuffle=False, # disable rectangular training if True pin_memory=True, collate_fn=dataset.collate_fn) @@ -274,7 +274,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulate', type=int, default=1, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco_32img.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=416, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') diff --git a/utils/gcp.sh b/utils/gcp.sh index a5ca261b..af9de6ee 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -65,9 +65,9 @@ rm -rf yolov3 git clone https://github.com/ultralytics/yolov3 # master cp -r cocoapi/PythonAPI/pycocotools yolov3 cp -r weights yolov3 && cd yolov3 -python3 detect.py # detect -python3 test.py --data data/coco_32img.data # test -python3 train.py --data data/coco_32img.data --epochs 4 --nosave # train +python3 detect.py # detect 2 persons, 1 tie +python3 test.py --data data/coco_32img.data # test mAP = 0.78 +python3 train.py --data data/coco_32img.data --epochs 4 --nosave # train 4 epochs # Debug/Development rm -rf yolov3 From 3bb38215ddc9e27899d17ffd78572eac93af87f2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 24 Apr 2019 21:48:32 +0200 Subject: [PATCH 0767/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 33d89a68..eef26b9f 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -144,7 +144,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing for x in self.img_files] # Rectangular Training https://github.com/ultralytics/yolov3/issues/232 - self.train_rectangular = True + self.train_rectangular = False if self.train_rectangular: bi = np.floor(np.arange(n) / batch_size).astype(np.int) # batch index nb = bi[-1] + 1 # number of batches From c89982d1348edf3794e6539d9d72b82bada0a470 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 24 Apr 2019 22:10:24 +0200 Subject: [PATCH 0768/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index aaa8851e..e01cb1ac 100644 --- a/train.py +++ b/train.py @@ -274,7 +274,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulate', type=int, default=1, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco_32img.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=416, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') From 324f86023546d95f39f81a427bcdfe6aacae065a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 25 Apr 2019 20:50:37 +0200 Subject: [PATCH 0769/2595] updates --- models.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/models.py b/models.py index 3968b726..dc008ada 100755 --- a/models.py +++ b/models.py @@ -114,16 +114,17 @@ class YOLOLayer(nn.Module): if cfg.endswith('yolov3-tiny.cfg'): stride *= 2 - ng = (int(img_size[0] / stride), int(img_size[1] / stride)) # number grid points - create_grids(self, max(img_size), ng) + nx = int(img_size[1] / stride) # number x grid points + ny = int(img_size[0] / stride) # number y grid points + create_grids(self, max(img_size), (nx, ny)) def forward(self, p, img_size, var=None): if ONNX_EXPORT: bs = 1 # batch size else: bs, ny, nx = p.shape[0], p.shape[-2], p.shape[-1] - if (self.ny, self.nx) != (ny, nx): - create_grids(self, img_size, (ny, nx), p.device) + if (self.nx, self.ny) != (nx, ny): + create_grids(self, img_size, (nx, ny), p.device) # p.view(bs, 255, 13, 13) -- > (bs, 3, 13, 13, 85) # (bs, anchors, grid, grid, classes + xywh) p = p.view(bs, self.na, self.nc + 5, self.ny, self.nx).permute(0, 1, 3, 4, 2).contiguous() # prediction @@ -238,8 +239,8 @@ def get_yolo_layers(model): return [i for i, x in enumerate(a) if x] # [82, 94, 106] for yolov3 -def create_grids(self, img_size, ng, device='cpu'): - ny, nx = ng # x and y grid size +def create_grids(self, img_size=416, ng=(13, 13), device='cpu'): + nx, ny = ng # x and y grid size self.img_size = img_size self.stride = img_size / max(ng) From cf54fa74684bd6ee7d369971ae938474d469e3aa Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 25 Apr 2019 22:47:31 +0200 Subject: [PATCH 0770/2595] updates --- utils/datasets.py | 4 +++- utils/utils.py | 11 ++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index eef26b9f..c1b31817 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -236,7 +236,9 @@ class LoadImagesAndLabels(Dataset): # for training/testing nL = len(labels) # number of labels if nL: # convert xyxy to xywh - labels[:, 1:5] = xyxy2xywh(labels[:, 1:5]) / self.img_size + labels[:, 1:5] = xyxy2xywh(labels[:, 1:5]) + labels[:, [2, 4]] /= img.shape[0] # height + labels[:, [1, 3]] /= img.shape[1] # width if self.augment: # random left-right flip diff --git a/utils/utils.py b/utils/utils.py index 3e400ff7..2eb8fcb2 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -500,13 +500,14 @@ def plot_images(imgs, targets, fname='images.jpg'): targets = targets.cpu().numpy() fig = plt.figure(figsize=(10, 10)) - img_size = imgs.shape[3] - bs = imgs.shape[0] # batch size - sp = np.ceil(bs ** 0.5) # subplots + bs, _, h, w = imgs.shape # batch size, _, height, width + ns = np.ceil(bs ** 0.5) # number of subplots for i in range(bs): - boxes = xywh2xyxy(targets[targets[:, 0] == i, 2:6]).T * img_size - plt.subplot(sp, sp, i + 1).imshow(imgs[i].transpose(1, 2, 0)) + boxes = xywh2xyxy(targets[targets[:, 0] == i, 2:6]).T + boxes[[0, 2]] *= w + boxes[[1, 3]] *= h + plt.subplot(ns, ns, i + 1).imshow(imgs[i].transpose(1, 2, 0)) plt.plot(boxes[[0, 2, 2, 0, 0]], boxes[[1, 1, 3, 3, 1]], '.-') plt.axis('off') fig.tight_layout() From 9752e9c42c9147761e122037702e744396dd49f8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 26 Apr 2019 12:00:49 +0200 Subject: [PATCH 0771/2595] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 69f7d8df..324a10c8 100755 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ +# Introduction + +This directory contains PyTorch YOLOv3 software and an iOS App developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information please visit https://www.ultralytics.com. +
@@ -16,10 +20,6 @@
-# Introduction - -This directory contains python software and an iOS App developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information please visit https://www.ultralytics.com. - # Description The https://github.com/ultralytics/yolov3 repo contains inference and training code for YOLOv3 in PyTorch. The code works on Linux, MacOS and Windows. Training is done on the COCO dataset by default: https://cocodataset.org/#home. **Credit to Joseph Redmon for YOLO:** https://pjreddie.com/darknet/yolo/. From ac31f91fc196fec24fc1b650eaff1819dd532b05 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 26 Apr 2019 12:01:43 +0200 Subject: [PATCH 0772/2595] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 324a10c8..818777c1 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,3 @@ -# Introduction - -This directory contains PyTorch YOLOv3 software and an iOS App developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information please visit https://www.ultralytics.com. -
@@ -20,6 +16,10 @@ This directory contains PyTorch YOLOv3 software and an iOS App developed by Ultr
+# Introduction + +This directory contains PyTorch YOLOv3 software and an iOS App developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information please visit https://www.ultralytics.com. + # Description The https://github.com/ultralytics/yolov3 repo contains inference and training code for YOLOv3 in PyTorch. The code works on Linux, MacOS and Windows. Training is done on the COCO dataset by default: https://cocodataset.org/#home. **Credit to Joseph Redmon for YOLO:** https://pjreddie.com/darknet/yolo/. From 444adb405a8efdece2e001b1a086ae08c94edb4f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 26 Apr 2019 12:09:43 +0200 Subject: [PATCH 0773/2595] updates --- data/samples/bus.jpg | Bin 0 -> 487438 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/samples/bus.jpg diff --git a/data/samples/bus.jpg b/data/samples/bus.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b43e311165c785f000eb7493ff8fb662d06a3f83 GIT binary patch literal 487438 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

L*Ns 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±R>MFOp7JM4pD#r*Z9T}X!IUIE8D;^=LFcP@ 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

wcVd9TWT)t}<5p825`(7@t>InCF68vSmf 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

v4oLeD|uyN41evsX-b8Td)J^9v_hclwJ# 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 z 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
|11H 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 tP=2vWpJ7Z Date: Fri, 26 Apr 2019 12:14:35 +0200 Subject: [PATCH 0774/2595] updates --- detect.py | 1 + 1 file changed, 1 insertion(+) diff --git a/detect.py b/detect.py index 86682329..6d89ab82 100644 --- a/detect.py +++ b/detect.py @@ -111,6 +111,7 @@ def detect( if save_images and platform == 'darwin': # macos os.system('open ' + output + ' ' + save_path) + print('Results saved to %s' % os.getcwd() + os.sep + output) if __name__ == '__main__': From 674feb91f29d6c0a26412a0d2d94aae3da36e080 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 26 Apr 2019 12:16:33 +0200 Subject: [PATCH 0775/2595] updates --- detect.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index 6d89ab82..2576d786 100644 --- a/detect.py +++ b/detect.py @@ -109,9 +109,10 @@ def detect( else: cv2.imwrite(save_path, im0) - if save_images and platform == 'darwin': # macos - os.system('open ' + output + ' ' + save_path) + if save_images: print('Results saved to %s' % os.getcwd() + os.sep + output) + if platform == 'darwin': # macos + os.system('open ' + output + ' ' + save_path) if __name__ == '__main__': From c5ec86082d99a9618abab6ad20ebae51bad2ea01 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 26 Apr 2019 12:24:18 +0200 Subject: [PATCH 0776/2595] updates --- utils/datasets.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/utils/datasets.py b/utils/datasets.py index c1b31817..4c949c78 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -237,6 +237,8 @@ class LoadImagesAndLabels(Dataset): # for training/testing if nL: # convert xyxy to xywh labels[:, 1:5] = xyxy2xywh(labels[:, 1:5]) + + # Normalize coordinates 0 - 1 labels[:, [2, 4]] /= img.shape[0] # height labels[:, [1, 3]] /= img.shape[1] # width From 7691e2e0f8804652b5dcaa06d669af8577d88286 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 26 Apr 2019 13:28:00 +0200 Subject: [PATCH 0777/2595] updates --- utils/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 2eb8fcb2..3e66439f 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -255,7 +255,7 @@ def compute_loss(p, targets, model): # predictions, targets, model bs = p[0].shape[0] # batch size k = h['k'] * bs # loss gain for i, pi0 in enumerate(p): # layer i predictions, i - b, a, gj, gi = indices[i] # image, anchor, gridx, gridy + b, a, gj, gi = indices[i] # image, anchor, gridy, gridx tconf = torch.zeros_like(pi0[..., 0]) # conf # Compute losses @@ -302,8 +302,8 @@ def build_targets(model, targets): # Indices b, c = t[:, :2].long().t() # target image, class - gxy = t[:, 2:4] * layer.ng - gi, gj = gxy.long().t() # grid_i, grid_j + gxy = t[:, 2:4] * layer.ng # grid x, y + gi, gj = gxy.long().t() # grid x, y indices indices.append((b, a, gj, gi)) # XY coordinates From 75f08c1cd1dc603576a5233efd1c25cd51d38de0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 26 Apr 2019 13:56:44 +0200 Subject: [PATCH 0778/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index e01cb1ac..98d69538 100644 --- a/train.py +++ b/train.py @@ -232,7 +232,7 @@ def train( best_loss = test_loss # Save training results - save = True and not opt.nosave + save = (not opt.nosave) or (epoch == epochs - 1) if save: # Create checkpoint chkpt = {'epoch': epoch, @@ -279,7 +279,7 @@ if __name__ == '__main__': parser.add_argument('--img-size', type=int, default=416, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') - parser.add_argument('--num-workers', type=int, default=4, help='number of Pytorch DataLoader workers') + parser.add_argument('--num-workers', type=int, default=2, help='number of Pytorch DataLoader workers') parser.add_argument('--dist-url', default='tcp://127.0.0.1:9999', type=str, help='distributed training init method') parser.add_argument('--rank', default=0, type=int, help='distributed training node rank') parser.add_argument('--world-size', default=1, type=int, help='number of nodes for distributed training') From 3b134e3a8412c9d35e9faa9e9a8f16ccbba43853 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 26 Apr 2019 14:14:28 +0200 Subject: [PATCH 0779/2595] updates --- test.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/test.py b/test.py index ec9d717d..b260714e 100644 --- a/test.py +++ b/test.py @@ -60,6 +60,7 @@ def test( for batch_i, (imgs, targets, paths, shapes) in enumerate(tqdm(dataloader, desc='Computing mAP')): targets = targets.to(device) imgs = imgs.to(device) + _, _, height, width = imgs.shape # batch size, channels, height, width # Plot images with bounding boxes if batch_i == 0 and not os.path.exists('test_batch0.jpg'): @@ -108,7 +109,12 @@ def test( correct = [0] * len(pred) if nl: detected = [] - tbox = xywh2xyxy(labels[:, 1:5]) * img_size # target boxes + tcls_tensor = labels[:, 0] + + # target boxes + tbox = xywh2xyxy(labels[:, 1:5]) + tbox[[0, 2]] *= width + tbox[[1, 3]] *= height # Search for correct predictions for i, (*pbox, pconf, pcls_conf, pcls) in enumerate(pred): From 0bed0a9a0e0c56925d7fd7222c41175647a9918e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 26 Apr 2019 14:17:04 +0200 Subject: [PATCH 0780/2595] updates --- test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index b260714e..c9516953 100644 --- a/test.py +++ b/test.py @@ -113,8 +113,8 @@ def test( # target boxes tbox = xywh2xyxy(labels[:, 1:5]) - tbox[[0, 2]] *= width - tbox[[1, 3]] *= height + tbox[:, [0, 2]] *= width + tbox[:, [1, 3]] *= height # Search for correct predictions for i, (*pbox, pconf, pcls_conf, pcls) in enumerate(pred): From 5263608d12a059ee59c6598b8de8249309663285 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 26 Apr 2019 14:49:40 +0200 Subject: [PATCH 0781/2595] updates --- train.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index 98d69538..f30ba066 100644 --- a/train.py +++ b/train.py @@ -143,7 +143,7 @@ def train( model, optimizer = amp.initialize(model, optimizer, opt_level='O1') # Start training - t = time.time() + t, t0 = time.time(), time.time() model.hyp = hyp # attach hyperparameters to model model_info(model) nb = len(dataloader) @@ -255,6 +255,8 @@ def train( # Delete checkpoint del chkpt + dt = (time.time() - t0) / 3600 + print('%g epochs completed in %.3f hours.' % (epoch - start_epoch, dt)) return results From 96ea6a87cbc7a91fd6e7b98ce627e682c4226f93 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 26 Apr 2019 23:10:20 +0200 Subject: [PATCH 0782/2595] updates --- test.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/test.py b/test.py index c9516953..fe1a4128 100644 --- a/test.py +++ b/test.py @@ -124,16 +124,17 @@ def test( break # Continue if predicted class not among image classes - if pcls.item() not in tcls: + m = (pcls == tcls_tensor).nonzero().view(-1) # matches + if not any(m): continue # Best iou, index between pred and targets - iou, bi = bbox_iou(pbox, tbox).max(0) + iou, bi = bbox_iou(pbox, tbox[m]).max(0) # If iou > threshold and class is correct mark as correct - if iou > iou_thres and bi not in detected: # and pcls == tcls[bi]: + if iou > iou_thres and m[bi] not in detected: # and pcls == tcls[bi]: correct[i] = 1 - detected.append(bi) + detected.append(m[bi]) # Append statistics (correct, conf, pcls, tcls) stats.append((correct, pred[:, 4].cpu(), pred[:, 6].cpu(), tcls)) From 84ebb5d143006cce60e13a141715e717634a3618 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 26 Apr 2019 23:25:00 +0200 Subject: [PATCH 0783/2595] updates --- test.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/test.py b/test.py index fe1a4128..c9516953 100644 --- a/test.py +++ b/test.py @@ -124,17 +124,16 @@ def test( break # Continue if predicted class not among image classes - m = (pcls == tcls_tensor).nonzero().view(-1) # matches - if not any(m): + if pcls.item() not in tcls: continue # Best iou, index between pred and targets - iou, bi = bbox_iou(pbox, tbox[m]).max(0) + iou, bi = bbox_iou(pbox, tbox).max(0) # If iou > threshold and class is correct mark as correct - if iou > iou_thres and m[bi] not in detected: # and pcls == tcls[bi]: + if iou > iou_thres and bi not in detected: # and pcls == tcls[bi]: correct[i] = 1 - detected.append(m[bi]) + detected.append(bi) # Append statistics (correct, conf, pcls, tcls) stats.append((correct, pred[:, 4].cpu(), pred[:, 6].cpu(), tcls)) From e1850bf2342934ad85d129c26bf8023215c4aa03 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 26 Apr 2019 23:33:13 +0200 Subject: [PATCH 0784/2595] updates --- test.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/test.py b/test.py index c9516953..df06fe29 100644 --- a/test.py +++ b/test.py @@ -128,12 +128,13 @@ def test( continue # Best iou, index between pred and targets - iou, bi = bbox_iou(pbox, tbox).max(0) + m = (pcls == tcls_tensor).nonzero().view(-1) + iou, bi = bbox_iou(pbox, tbox[m]).max(0) # If iou > threshold and class is correct mark as correct - if iou > iou_thres and bi not in detected: # and pcls == tcls[bi]: + if iou > iou_thres and m[bi] not in detected: # and pcls == tcls[bi]: correct[i] = 1 - detected.append(bi) + detected.append(m[bi]) # Append statistics (correct, conf, pcls, tcls) stats.append((correct, pred[:, 4].cpu(), pred[:, 6].cpu(), tcls)) From 76c45f4ed97301d3fbddb489a55f466fe6b104c5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 27 Apr 2019 00:18:05 +0200 Subject: [PATCH 0785/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index df06fe29..7882be24 100644 --- a/test.py +++ b/test.py @@ -181,7 +181,7 @@ def test( if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') - parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') + parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') From 55077b27701c7d6a34ccc956d74f67e57e87415a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 27 Apr 2019 17:44:26 +0200 Subject: [PATCH 0786/2595] updates --- train.py | 1 + utils/datasets.py | 18 ++++++++++++++---- utils/utils.py | 11 ++++++++++- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index f30ba066..1b34f62c 100644 --- a/train.py +++ b/train.py @@ -145,6 +145,7 @@ def train( # Start training t, t0 = time.time(), time.time() model.hyp = hyp # attach hyperparameters to model + model.class_weights = labels_to_class_weights(dataset.labels).to(device) # attach class weights model_info(model) nb = len(dataloader) results = (0, 0, 0, 0, 0) # P, R, mAP, F1, test_loss diff --git a/utils/datasets.py b/utils/datasets.py index 4c949c78..2ccd5d43 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -174,9 +174,20 @@ class LoadImagesAndLabels(Dataset): # for training/testing self.batch_shapes = np.ceil(np.array(shapes) * img_size / 32.).astype(np.int) * 32 self.batch = bi # batch index of image + # Preload images # if n < 200: # preload all images into memory if possible # self.imgs = [cv2.imread(img_files[i]) for i in range(n)] + # Preload labels (required for weighted CE training) + self.labels = [np.array([])] * n + iter = tqdm(self.label_files, desc='Reading labels') if n > 5000 else self.label_files + for i, file in enumerate(iter): + try: + with open(file, 'r') as f: + self.labels[i] = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) + except: # missing label file + pass + def __len__(self): return len(self.img_files) @@ -217,10 +228,9 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Load labels labels = [] if os.path.isfile(label_path): - with open(label_path, 'r') as file: - lines = file.read().splitlines() - - x = np.array([x.split() for x in lines], dtype=np.float32) + # with open(label_path, 'r') as f: + # x = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) + x = self.labels[index] if x.size > 0: # Normalized xywh to pixel xyxy format labels = x.copy() diff --git a/utils/utils.py b/utils/utils.py index 3e66439f..b961cbe6 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -49,6 +49,15 @@ def model_info(model): print('Model Summary: %g layers, %g parameters, %g gradients' % (i + 1, n_p, n_g)) +def labels_to_class_weights(labels): + # Get class weights (inverse frequency) from training labels + labels = np.concatenate(labels, 0) # labels.shape = (866643, 5) for COCO + classes = labels[:, 0].astype(np.int) + weights = 1 / (np.bincount(classes) + 1e-6) # number of targets per class + weights /= weights.sum() + return torch.Tensor(weights) + + def coco_class_weights(): # frequency of each class in coco train2014 weights = 1 / torch.FloatTensor( [187437, 4955, 30920, 6033, 3838, 4332, 3160, 7051, 7677, 9167, 1316, 1372, 833, 6757, 7355, 3302, 3776, 4671, @@ -247,7 +256,7 @@ def compute_loss(p, targets, model): # predictions, targets, model # Define criteria MSE = nn.MSELoss() - CE = nn.CrossEntropyLoss() + CE = nn.CrossEntropyLoss(weight=model.class_weights) BCE = nn.BCEWithLogitsLoss() # Compute losses From 8f1becd55c03860707700baae96c069edfecac68 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 27 Apr 2019 17:49:22 +0200 Subject: [PATCH 0787/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index b961cbe6..7ef5a0c0 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -53,7 +53,7 @@ def labels_to_class_weights(labels): # Get class weights (inverse frequency) from training labels labels = np.concatenate(labels, 0) # labels.shape = (866643, 5) for COCO classes = labels[:, 0].astype(np.int) - weights = 1 / (np.bincount(classes) + 1e-6) # number of targets per class + weights = 1 / (np.bincount(classes, minlength=classes.max() + 1) + 1e-6) # number of targets per class weights /= weights.sum() return torch.Tensor(weights) From d25190e15b364bef802b3a9a92459462e8cee88a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 27 Apr 2019 17:51:59 +0200 Subject: [PATCH 0788/2595] updates --- train.py | 6 ++++-- utils/utils.py | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index 1b34f62c..aa42f780 100644 --- a/train.py +++ b/train.py @@ -64,7 +64,9 @@ def train( torch.backends.cudnn.benchmark = True # unsuitable for multiscale # Configure run - train_path = parse_data_cfg(data_cfg)['train'] + data_cfg = parse_data_cfg(data_cfg) + train_path = data_cfg['train'] + nc = data_cfg['classes'] # number of classes # Initialize model model = Darknet(cfg, img_size).to(device) @@ -145,7 +147,7 @@ def train( # Start training t, t0 = time.time(), time.time() model.hyp = hyp # attach hyperparameters to model - model.class_weights = labels_to_class_weights(dataset.labels).to(device) # attach class weights + model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights model_info(model) nb = len(dataloader) results = (0, 0, 0, 0, 0) # P, R, mAP, F1, test_loss diff --git a/utils/utils.py b/utils/utils.py index 7ef5a0c0..a27cad38 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -49,11 +49,11 @@ def model_info(model): print('Model Summary: %g layers, %g parameters, %g gradients' % (i + 1, n_p, n_g)) -def labels_to_class_weights(labels): +def labels_to_class_weights(labels, nc=80): # Get class weights (inverse frequency) from training labels labels = np.concatenate(labels, 0) # labels.shape = (866643, 5) for COCO classes = labels[:, 0].astype(np.int) - weights = 1 / (np.bincount(classes, minlength=classes.max() + 1) + 1e-6) # number of targets per class + weights = 1 / (np.bincount(classes, minlength=nc) + 1e-6) # number of targets per class weights /= weights.sum() return torch.Tensor(weights) From 469dede6d12be9ad252b7c033f6d926fab146e92 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 27 Apr 2019 17:52:43 +0200 Subject: [PATCH 0789/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index aa42f780..8c8e5b15 100644 --- a/train.py +++ b/train.py @@ -66,7 +66,7 @@ def train( # Configure run data_cfg = parse_data_cfg(data_cfg) train_path = data_cfg['train'] - nc = data_cfg['classes'] # number of classes + nc = int(data_cfg['classes']) # number of classes # Initialize model model = Darknet(cfg, img_size).to(device) From a9108a296b2be5d882e2555d27559e4e30894e81 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 27 Apr 2019 17:57:07 +0200 Subject: [PATCH 0790/2595] updates --- train.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/train.py b/train.py index 8c8e5b15..bc2a3e3b 100644 --- a/train.py +++ b/train.py @@ -64,9 +64,9 @@ def train( torch.backends.cudnn.benchmark = True # unsuitable for multiscale # Configure run - data_cfg = parse_data_cfg(data_cfg) - train_path = data_cfg['train'] - nc = int(data_cfg['classes']) # number of classes + data_dict = parse_data_cfg(data_cfg) + train_path = data_dict['train'] + nc = int(data_dict['classes']) # number of classes # Initialize model model = Darknet(cfg, img_size).to(device) @@ -276,12 +276,12 @@ def print_mutation(hyp, results): if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--epochs', type=int, default=273, help='number of epochs') - parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') + parser.add_argument('--batch-size', type=int, default=4, help='size of each image batch') parser.add_argument('--accumulate', type=int, default=1, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco_10img.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') - parser.add_argument('--img-size', type=int, default=416, help='pixels') + parser.add_argument('--img-size', type=int, default=320, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') parser.add_argument('--num-workers', type=int, default=2, help='number of Pytorch DataLoader workers') From acaab77b7abf423fb7727dc8bc704a12f47d39e3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 27 Apr 2019 17:58:16 +0200 Subject: [PATCH 0791/2595] updates --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index bc2a3e3b..80798c0d 100644 --- a/train.py +++ b/train.py @@ -276,12 +276,12 @@ def print_mutation(hyp, results): if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--epochs', type=int, default=273, help='number of epochs') - parser.add_argument('--batch-size', type=int, default=4, help='size of each image batch') + parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulate', type=int, default=1, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco_10img.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') - parser.add_argument('--img-size', type=int, default=320, help='pixels') + parser.add_argument('--img-size', type=int, default=416, help='pixels') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') parser.add_argument('--num-workers', type=int, default=2, help='number of Pytorch DataLoader workers') From 1e3fb6566c189145a8a833b185b20fae06481ca9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 27 Apr 2019 18:15:27 +0200 Subject: [PATCH 0792/2595] updates --- utils/utils.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index a27cad38..59fe1a8c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -53,7 +53,10 @@ def labels_to_class_weights(labels, nc=80): # Get class weights (inverse frequency) from training labels labels = np.concatenate(labels, 0) # labels.shape = (866643, 5) for COCO classes = labels[:, 0].astype(np.int) - weights = 1 / (np.bincount(classes, minlength=nc) + 1e-6) # number of targets per class + n = np.bincount(classes, minlength=nc) + weights = np.zeros(nc) + i = n.nonzero() + weights[i] = 1 / n[i] # number of targets per class weights /= weights.sum() return torch.Tensor(weights) From ccfd44c2f87d60a5281372fc2c32318262bb1e62 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 27 Apr 2019 18:36:19 +0200 Subject: [PATCH 0793/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 59fe1a8c..2fb8c75d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -259,7 +259,7 @@ def compute_loss(p, targets, model): # predictions, targets, model # Define criteria MSE = nn.MSELoss() - CE = nn.CrossEntropyLoss(weight=model.class_weights) + CE = nn.CrossEntropyLoss() # (weight=model.class_weights) BCE = nn.BCEWithLogitsLoss() # Compute losses From 7652365b2833700d6d0495f25367f4ee4b05eb60 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 27 Apr 2019 21:38:20 +0200 Subject: [PATCH 0794/2595] updates --- utils/datasets.py | 2 +- utils/utils.py | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 2ccd5d43..9450fbc6 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -180,7 +180,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Preload labels (required for weighted CE training) self.labels = [np.array([])] * n - iter = tqdm(self.label_files, desc='Reading labels') if n > 5000 else self.label_files + iter = tqdm(self.label_files, desc='Reading labels') if n > 1000 else self.label_files for i, file in enumerate(iter): try: with open(file, 'r') as f: diff --git a/utils/utils.py b/utils/utils.py index 2fb8c75d..ad0ca47d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -52,12 +52,11 @@ def model_info(model): def labels_to_class_weights(labels, nc=80): # Get class weights (inverse frequency) from training labels labels = np.concatenate(labels, 0) # labels.shape = (866643, 5) for COCO - classes = labels[:, 0].astype(np.int) - n = np.bincount(classes, minlength=nc) - weights = np.zeros(nc) - i = n.nonzero() - weights[i] = 1 / n[i] # number of targets per class - weights /= weights.sum() + classes = labels[:, 0].astype(np.int) # labels = [class xywh] + weights = np.bincount(classes, minlength=nc) # occurences per class + weights[weights == 0] = 1 # replace empty bins with 1 + weights = 1 / weights # number of targets per class + weights /= weights.sum() # normalize return torch.Tensor(weights) @@ -527,7 +526,7 @@ def plot_images(imgs, targets, fname='images.jpg'): plt.close() -def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() +def plot_results(start=1, stop=0): # from utils.utils import *; plot_results() # Plot training results files 'results*.txt' # import os; os.system('wget https://storage.googleapis.com/ultralytics/yolov3/results_v3.txt') @@ -542,6 +541,6 @@ def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() for i in range(10): ax[i].plot(x, results[i, x], marker='.', label=f.replace('.txt', '')) ax[i].set_title(s[i]) - ax[0].legend() fig.tight_layout() + ax[4].legend() fig.savefig('results.png', dpi=300) From cbe01ddeb1b28e3771f1fa6729589dfdb2567c1d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 28 Apr 2019 23:16:21 +0200 Subject: [PATCH 0795/2595] updates --- detect.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/detect.py b/detect.py index 2576d786..ce1ec7c2 100644 --- a/detect.py +++ b/detect.py @@ -94,21 +94,22 @@ def detect( if webcam: # Show live webcam cv2.imshow(weights, im0) - if save_images: # Save generated image with detections - if dataloader.mode == 'video': + if save_images: # Save image with detections + if dataloader.mode == 'images': + cv2.imwrite(save_path, im0) + else: if vid_path != save_path: # new video vid_path = save_path if isinstance(vid_writer, cv2.VideoWriter): vid_writer.release() # release previous video writer + + codec = int(vid_cap.get(cv2.CAP_PROP_FOURCC)) + fps = vid_cap.get(cv2.CAP_PROP_FPS) width = int(vid_cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height = int(vid_cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) - fps = vid_cap.get(cv2.CAP_PROP_FPS) - vid_writer = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*'avc1'), fps, (width, height)) + vid_writer = cv2.VideoWriter(save_path, codec, fps, (width, height)) vid_writer.write(im0) - else: - cv2.imwrite(save_path, im0) - if save_images: print('Results saved to %s' % os.getcwd() + os.sep + output) if platform == 'darwin': # macos From b1604be04c65793268c5287e178c440e8628db6b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 29 Apr 2019 17:49:09 +0200 Subject: [PATCH 0796/2595] updates --- detect.py | 6 +++--- test.py | 2 +- train.py | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/detect.py b/detect.py index ce1ec7c2..c10f8d8c 100644 --- a/detect.py +++ b/detect.py @@ -11,7 +11,7 @@ def detect( cfg, data_cfg, weights, - images, + images='data/samples', # input folder output='output', # output folder img_size=416, conf_thres=0.5, @@ -122,7 +122,7 @@ if __name__ == '__main__': parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--images', type=str, default='data/samples', help='path to images') - parser.add_argument('--img-size', type=int, default=416, help='size of each image dimension') + parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.5, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') opt = parser.parse_args() @@ -133,7 +133,7 @@ if __name__ == '__main__': opt.cfg, opt.data_cfg, opt.weights, - opt.images, + images=opt.images, img_size=opt.img_size, conf_thres=opt.conf_thres, nms_thres=opt.nms_thres diff --git a/test.py b/test.py index 7882be24..fe6392bc 100644 --- a/test.py +++ b/test.py @@ -189,7 +189,7 @@ if __name__ == '__main__': parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') parser.add_argument('--save-json', action='store_true', help='save a cocoapi-compatible JSON results file') - parser.add_argument('--img-size', type=int, default=416, help='size of each image dimension') + parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') opt = parser.parse_args() print(opt, end='\n\n') diff --git a/train.py b/train.py index 80798c0d..5c0bf823 100644 --- a/train.py +++ b/train.py @@ -281,7 +281,7 @@ if __name__ == '__main__': parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') - parser.add_argument('--img-size', type=int, default=416, help='pixels') + parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') parser.add_argument('--num-workers', type=int, default=2, help='number of Pytorch DataLoader workers') From 94f954eba04726082640d5f7343a12266e042eb1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 29 Apr 2019 17:57:51 +0200 Subject: [PATCH 0797/2595] updates --- detect.py | 1 + utils/datasets.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index c10f8d8c..7510b138 100644 --- a/detect.py +++ b/detect.py @@ -75,6 +75,7 @@ def detect( det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round() # Print results to screen + print('%gx%g ' % img.shape[2:], end='') # print image size for c in det[:, -1].unique(): n = (det[:, -1] == c).sum() print('%g %ss' % (n, classes[int(c)]), end=', ') diff --git a/utils/datasets.py b/utils/datasets.py index 9450fbc6..6b406916 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -75,7 +75,6 @@ class LoadImages: # for inference # Padded resize img, _, _, _ = letterbox(img0, new_shape=self.height) - print('%gx%g ' % img.shape[:2], end='') # print image size # Normalize RGB img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB @@ -114,6 +113,7 @@ class LoadWebcam: # for inference assert ret_val, 'Webcam Error' img_path = 'webcam_%g.jpg' % self.count img0 = cv2.flip(img0, 1) # flip left-right + print('webcam %g: ' % self.count, end='') # Padded resize img, _, _, _ = letterbox(img0, new_shape=self.height) @@ -144,7 +144,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing for x in self.img_files] # Rectangular Training https://github.com/ultralytics/yolov3/issues/232 - self.train_rectangular = False + self.train_rectangular = True if self.train_rectangular: bi = np.floor(np.arange(n) / batch_size).astype(np.int) # batch index nb = bi[-1] + 1 # number of batches From 587522ec56298b6c51d748457fbe372768eafc34 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 29 Apr 2019 17:58:18 +0200 Subject: [PATCH 0798/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 6b406916..490687ab 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -144,7 +144,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing for x in self.img_files] # Rectangular Training https://github.com/ultralytics/yolov3/issues/232 - self.train_rectangular = True + self.train_rectangular = False if self.train_rectangular: bi = np.floor(np.arange(n) / batch_size).astype(np.int) # batch index nb = bi[-1] + 1 # number of batches From 7e6e1897ac5514ab0e2ae3e3357da8a9c744cfed Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 29 Apr 2019 18:02:31 +0200 Subject: [PATCH 0799/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 7510b138..30d708e4 100644 --- a/detect.py +++ b/detect.py @@ -27,7 +27,7 @@ def detect( # Initialize model if ONNX_EXPORT: - s = (416, 416) # onnx model image size + s = (416, 416) # onnx model image size (height, width) model = Darknet(cfg, s) else: model = Darknet(cfg, img_size) From ae41d5855a2150e9c394a0e0fb5f0abebc9e5635 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 2 May 2019 15:47:27 +0200 Subject: [PATCH 0800/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 490687ab..7561b629 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -179,7 +179,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing # self.imgs = [cv2.imread(img_files[i]) for i in range(n)] # Preload labels (required for weighted CE training) - self.labels = [np.array([])] * n + self.labels = [np.zeros((0, 5))] * n iter = tqdm(self.label_files, desc='Reading labels') if n > 1000 else self.label_files for i, file in enumerate(iter): try: From b901441e767b6e5686f66cc0d87444984f4d21c1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 2 May 2019 23:56:58 +0200 Subject: [PATCH 0801/2595] updates --- utils/utils.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/utils/utils.py b/utils/utils.py index ad0ca47d..b0047217 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -430,6 +430,17 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): det_max.append(dc[:1]) dc = dc[i == 0] + elif nms_style == 'SOFT': # soft-NMS https://arxiv.org/abs/1704.04503 + sigma = nms_thres # soft-nms sigma parameter + while len(dc): + if len(dc) == 1: + det_max.append(dc) + break + det_max.append(dc[:1]) + iou = bbox_iou(dc[0], dc[1:]) # iou with other boxes + dc = dc[1:] + dc[:, 4] *= torch.exp(-iou ** 2 / sigma) # decay confidences + if len(det_max): det_max = torch.cat(det_max) # concatenate output[image_i] = det_max[(-det_max[:, 4]).argsort()] # sort From 3c55d63a9d6058404b04f22e2347ec31ddc5ecc5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 3 May 2019 00:26:26 +0200 Subject: [PATCH 0802/2595] updates --- utils/gcp.sh | 2 +- utils/utils.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index af9de6ee..ad90d3aa 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -55,7 +55,7 @@ gsutil cp results.png gs://ultralytics sudo shutdown # Reproduce mAP -python3 test.py --save-json --img-size 608 --batch-size 16 +python3 test.py --save-json --img-size 608 python3 test.py --save-json --img-size 416 python3 test.py --save-json --img-size 320 sudo shutdown diff --git a/utils/utils.py b/utils/utils.py index b0047217..d00b8aa4 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -431,7 +431,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): dc = dc[i == 0] elif nms_style == 'SOFT': # soft-NMS https://arxiv.org/abs/1704.04503 - sigma = nms_thres # soft-nms sigma parameter + sigma = 0.5 # soft-nms sigma parameter while len(dc): if len(dc) == 1: det_max.append(dc) From 6316171f3351aa33235b0f9cda71da88dcfc5275 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 3 May 2019 18:14:16 +0200 Subject: [PATCH 0803/2595] updates --- test.py | 2 +- train.py | 2 +- utils/torch_utils.py | 1 + utils/utils.py | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/test.py b/test.py index fe6392bc..bdbb258e 100644 --- a/test.py +++ b/test.py @@ -191,7 +191,7 @@ if __name__ == '__main__': parser.add_argument('--save-json', action='store_true', help='save a cocoapi-compatible JSON results file') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') opt = parser.parse_args() - print(opt, end='\n\n') + print(opt) with torch.no_grad(): mAP = test( diff --git a/train.py b/train.py index 5c0bf823..9d90c86f 100644 --- a/train.py +++ b/train.py @@ -294,7 +294,7 @@ if __name__ == '__main__': parser.add_argument('--evolve', action='store_true', help='run hyperparameter evolution') parser.add_argument('--var', default=0, type=int, help='debug variable') opt = parser.parse_args() - print(opt, end='\n\n') + print(opt) if opt.evolve: opt.notest = True # save time by only testing final epoch diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 406d5ac7..fc8e2c43 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -25,6 +25,7 @@ def select_device(force_cpu=False): print(" device%g _CudaDeviceProperties(name='%s', total_memory=%dMB)" % (i, x[i].name, x[i].total_memory / c)) + print('') # skip a line return device diff --git a/utils/utils.py b/utils/utils.py index d00b8aa4..156da436 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -41,7 +41,7 @@ def model_info(model): # Plots a line-by-line description of a PyTorch model n_p = sum(x.numel() for x in model.parameters()) # number parameters n_g = sum(x.numel() for x in model.parameters() if x.requires_grad) # number gradients - print('\n%5s %40s %9s %12s %20s %10s %10s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) + print('%5s %40s %9s %12s %20s %10s %10s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) for i, (name, p) in enumerate(model.named_parameters()): name = name.replace('module_list.', '') print('%5g %40s %9s %12g %20s %10.3g %10.3g' % ( From 09ee7b6f115d96a377558492e05f7ef703d1c390 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 3 May 2019 20:50:44 +0200 Subject: [PATCH 0804/2595] updates --- models.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/models.py b/models.py index dc008ada..33176bb9 100755 --- a/models.py +++ b/models.py @@ -165,6 +165,8 @@ class YOLOLayer(nn.Module): io[..., 4:] = torch.sigmoid(io[..., 4:]) # p_conf, p_cls # io[..., 5:] = F.softmax(io[..., 5:], dim=4) # p_cls io[..., :4] *= self.stride + if self.nc == 1: # single-class model https://github.com/ultralytics/yolov3/issues/235 + io[..., 5] = 1 # reshape from [1, 3, 13, 13, 85] to [1, 507, 85] return io.view(bs, -1, 5 + self.nc), p From dd2d713484c2b907604f906595fa7f72e4d8c82e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 3 May 2019 20:51:30 +0200 Subject: [PATCH 0805/2595] updates --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 33176bb9..7bf737a3 100755 --- a/models.py +++ b/models.py @@ -165,8 +165,8 @@ class YOLOLayer(nn.Module): io[..., 4:] = torch.sigmoid(io[..., 4:]) # p_conf, p_cls # io[..., 5:] = F.softmax(io[..., 5:], dim=4) # p_cls io[..., :4] *= self.stride - if self.nc == 1: # single-class model https://github.com/ultralytics/yolov3/issues/235 - io[..., 5] = 1 + if self.nc == 1: + io[..., 5] = 1 # single-class model https://github.com/ultralytics/yolov3/issues/235 # reshape from [1, 3, 13, 13, 85] to [1, 507, 85] return io.view(bs, -1, 5 + self.nc), p From 7d857cda957ee1230eeb6c7ffcd61447e486960f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 5 May 2019 13:21:37 +0200 Subject: [PATCH 0806/2595] updates --- utils/datasets.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 7561b629..14708550 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -130,7 +130,7 @@ class LoadWebcam: # for inference class LoadImagesAndLabels(Dataset): # for training/testing - def __init__(self, path, img_size=416, batch_size=16, augment=False): + def __init__(self, path, img_size=416, batch_size=16, augment=False, rect=True): with open(path, 'r') as f: img_files = f.read().splitlines() self.img_files = list(filter(lambda x: len(x) > 0, img_files)) @@ -144,8 +144,8 @@ class LoadImagesAndLabels(Dataset): # for training/testing for x in self.img_files] # Rectangular Training https://github.com/ultralytics/yolov3/issues/232 - self.train_rectangular = False - if self.train_rectangular: + self.pad_rectangular = rect + if self.pad_rectangular: bi = np.floor(np.arange(n) / batch_size).astype(np.int) # batch index nb = bi[-1] + 1 # number of batches from PIL import Image @@ -185,8 +185,8 @@ class LoadImagesAndLabels(Dataset): # for training/testing try: with open(file, 'r') as f: self.labels[i] = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) - except: # missing label file - pass + except: + pass # missing label file def __len__(self): return len(self.img_files) @@ -195,7 +195,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing img_path = self.img_files[index] label_path = self.label_files[index] - # if hasattr(self, 'imgs'): + # if hasattr(self, 'imgs'): # preloaded # img = self.imgs[index] # BGR img = cv2.imread(img_path) # BGR assert img is not None, 'File Not Found ' + img_path @@ -219,7 +219,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Letterbox h, w, _ = img.shape - if self.train_rectangular: + if self.pad_rectangular: new_shape = self.batch_shapes[self.batch[index]] img, ratio, padw, padh = letterbox(img, new_shape=new_shape, mode='rect') else: From a8f443518f8895824c4f528195f568ed2d2bdd8e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 5 May 2019 13:44:12 +0200 Subject: [PATCH 0807/2595] updates --- utils/utils.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 156da436..6a33e5f2 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -37,16 +37,17 @@ def load_classes(path): return list(filter(None, names)) # filter removes empty strings (such as last line) -def model_info(model): +def model_info(model, report='summary'): # Plots a line-by-line description of a PyTorch model n_p = sum(x.numel() for x in model.parameters()) # number parameters n_g = sum(x.numel() for x in model.parameters() if x.requires_grad) # number gradients - print('%5s %40s %9s %12s %20s %10s %10s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) - for i, (name, p) in enumerate(model.named_parameters()): - name = name.replace('module_list.', '') - print('%5g %40s %9s %12g %20s %10.3g %10.3g' % ( - i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) - print('Model Summary: %g layers, %g parameters, %g gradients' % (i + 1, n_p, n_g)) + if report is 'full': + print('%5s %40s %9s %12s %20s %10s %10s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) + for i, (name, p) in enumerate(model.named_parameters()): + name = name.replace('module_list.', '') + print('%5g %40s %9s %12g %20s %10.3g %10.3g' % + (i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) + print('Model Summary: %g layers, %g parameters, %g gradients' % (len(list(model.parameters())), n_p, n_g)) def labels_to_class_weights(labels, nc=80): @@ -61,12 +62,12 @@ def labels_to_class_weights(labels, nc=80): def coco_class_weights(): # frequency of each class in coco train2014 - weights = 1 / torch.FloatTensor( - [187437, 4955, 30920, 6033, 3838, 4332, 3160, 7051, 7677, 9167, 1316, 1372, 833, 6757, 7355, 3302, 3776, 4671, + n = [187437, 4955, 30920, 6033, 3838, 4332, 3160, 7051, 7677, 9167, 1316, 1372, 833, 6757, 7355, 3302, 3776, 4671, 6769, 5706, 3908, 903, 3686, 3596, 6200, 7920, 8779, 4505, 4272, 1862, 4698, 1962, 4403, 6659, 2402, 2689, 4012, 4175, 3411, 17048, 5637, 14553, 3923, 5539, 4289, 10084, 7018, 4314, 3099, 4638, 4939, 5543, 2038, 4004, 5053, 4578, 27292, 4113, 5931, 2905, 11174, 2873, 4036, 3415, 1517, 4122, 1980, 4464, 1190, 2302, 156, 3933, - 1877, 17630, 4337, 4624, 1075, 3468, 135, 1380]) + 1877, 17630, 4337, 4624, 1075, 3468, 135, 1380] + weights = 1 / torch.Tensor(n) weights /= weights.sum() return weights From 4156e83319ea0a3c0324c82daa00894986c14381 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 5 May 2019 14:13:05 +0200 Subject: [PATCH 0808/2595] updates --- .gitignore | 4 + data/5k.shapes | 5000 ++ data/trainvalno5k.shapes | 117263 ++++++++++++++++++++++++++++++++++++ utils/datasets.py | 13 +- 4 files changed, 122276 insertions(+), 4 deletions(-) create mode 100644 data/5k.shapes create mode 100644 data/trainvalno5k.shapes diff --git a/.gitignore b/.gitignore index a2f3b133..2aea6eef 100755 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,10 @@ data/* !data/coco.data !data/coco_*.data !data/coco_*.txt +!data/coco_*.txt +!data/trainvalno5k.shapes +!data/5k.shapes + pycocotools/* results*.txt diff --git a/data/5k.shapes b/data/5k.shapes new file mode 100644 index 00000000..d4d57b67 --- /dev/null +++ b/data/5k.shapes @@ -0,0 +1,5000 @@ +640 480 +640 480 +428 640 +640 480 +640 480 +640 407 +640 480 +640 427 +500 343 +621 640 +480 640 +640 427 +424 640 +640 480 +640 424 +640 480 +640 427 +500 375 +640 480 +640 479 +427 640 +640 480 +640 425 +640 480 +400 338 +480 640 +640 428 +640 640 +640 338 +640 480 +640 427 +640 384 +480 640 +640 480 +640 426 +425 640 +512 640 +640 415 +640 480 +640 319 +640 426 +640 427 +640 364 +640 480 +480 640 +558 640 +640 528 +612 612 +481 640 +640 427 +640 360 +457 640 +640 427 +480 640 +459 640 +640 425 +640 521 +640 424 +640 513 +480 640 +640 346 +640 361 +640 427 +500 332 +640 427 +640 427 +640 443 +500 333 +640 427 +640 480 +640 430 +640 428 +640 337 +640 640 +640 480 +480 640 +424 640 +640 640 +500 331 +640 427 +500 375 +640 480 +480 640 +426 640 +500 476 +427 640 +640 446 +640 427 +640 424 +532 640 +640 572 +640 320 +640 424 +500 375 +640 427 +500 395 +480 640 +333 500 +640 360 +640 319 +640 480 +640 427 +640 425 +640 480 +640 428 +640 480 +427 640 +480 640 +640 480 +640 426 +640 427 +500 333 +375 500 +640 480 +640 457 +640 480 +640 425 +612 612 +640 480 +640 427 +640 480 +640 426 +640 640 +640 451 +500 500 +427 640 +640 478 +640 480 +640 480 +640 427 +640 427 +640 481 +640 427 +427 640 +480 640 +640 480 +513 640 +640 408 +640 426 +379 640 +640 440 +640 425 +424 640 +640 427 +480 640 +640 359 +640 427 +427 640 +512 640 +461 640 +478 640 +640 480 +427 640 +640 427 +493 640 +500 347 +500 403 +640 525 +640 478 +640 371 +640 406 +640 480 +333 500 +640 480 +500 334 +531 640 +640 480 +500 375 +640 480 +640 480 +479 640 +500 375 +426 640 +500 375 +640 404 +640 425 +640 427 +640 480 +500 333 +640 480 +640 480 +500 375 +480 640 +640 425 +480 640 +640 457 +640 480 +640 640 +640 414 +500 375 +480 640 +426 640 +640 427 +482 640 +333 500 +500 362 +640 427 +640 427 +640 478 +640 480 +640 424 +640 480 +480 640 +640 480 +612 612 +480 640 +375 500 +640 480 +480 640 +400 515 +640 524 +640 480 +500 426 +640 426 +426 640 +640 428 +640 427 +640 427 +612 612 +640 427 +640 426 +640 426 +480 640 +427 640 +640 427 +640 626 +500 375 +640 427 +459 640 +500 413 +640 426 +640 480 +640 278 +640 480 +640 480 +640 426 +640 480 +480 640 +640 383 +640 480 +640 480 +481 640 +480 640 +640 480 +619 640 +640 483 +640 480 +640 368 +500 375 +459 640 +480 640 +427 640 +426 640 +640 480 +500 375 +640 424 +375 500 +640 427 +427 640 +427 640 +640 480 +640 427 +640 426 +333 640 +360 640 +640 383 +427 640 +640 390 +640 640 +500 378 +426 640 +640 322 +334 640 +375 500 +640 480 +426 640 +640 426 +500 375 +426 640 +612 612 +458 640 +480 640 +427 640 +640 419 +500 375 +427 640 +345 500 +500 333 +640 480 +640 480 +640 480 +640 550 +640 480 +480 640 +427 640 +640 480 +480 640 +500 375 +612 612 +375 500 +640 480 +640 427 +640 360 +480 640 +600 550 +639 640 +425 640 +640 480 +612 612 +576 640 +500 375 +512 640 +640 360 +640 480 +640 426 +640 426 +612 612 +640 480 +640 427 +427 640 +640 451 +640 480 +640 480 +640 415 +426 640 +640 426 +640 448 +640 480 +500 375 +640 480 +480 640 +640 427 +640 407 +640 528 +640 519 +640 431 +478 640 +640 427 +640 427 +500 500 +640 427 +640 427 +640 413 +640 478 +500 375 +640 424 +640 480 +640 388 +640 480 +500 375 +640 428 +426 640 +473 640 +480 640 +640 347 +640 478 +640 480 +500 379 +640 426 +640 437 +640 427 +640 427 +640 480 +480 640 +426 640 +425 500 +500 333 +500 500 +640 480 +640 428 +640 480 +640 396 +500 480 +640 427 +640 418 +640 480 +640 426 +333 500 +640 426 +640 480 +640 480 +640 424 +472 640 +425 640 +640 401 +640 624 +612 612 +640 426 +640 428 +640 425 +640 480 +500 374 +640 480 +480 640 +427 640 +640 301 +640 480 +640 480 +480 640 +480 640 +500 375 +640 480 +640 480 +640 427 +640 512 +640 373 +480 640 +500 333 +480 640 +640 427 +500 372 +640 480 +640 480 +375 500 +640 360 +640 428 +612 612 +640 480 +480 640 +640 427 +427 640 +500 375 +640 360 +480 640 +640 480 +480 640 +640 480 +480 640 +640 425 +480 640 +640 470 +491 640 +640 426 +612 612 +640 480 +640 428 +480 320 +640 427 +640 480 +640 480 +640 427 +640 480 +640 362 +640 415 +334 500 +640 640 +640 554 +640 427 +640 427 +640 480 +640 426 +640 365 +640 574 +465 640 +424 640 +640 480 +640 427 +425 640 +640 428 +426 640 +640 480 +640 480 +478 640 +640 480 +640 425 +480 640 +640 428 +480 640 +640 427 +480 640 +640 428 +640 426 +345 415 +640 427 +640 480 +640 419 +640 478 +456 640 +640 427 +640 193 +640 360 +500 375 +640 480 +640 458 +480 640 +612 612 +640 478 +640 480 +480 640 +640 426 +640 427 +480 640 +640 481 +640 427 +375 500 +500 375 +640 427 +640 425 +640 360 +500 343 +640 427 +640 480 +640 391 +634 640 +640 425 +500 429 +333 500 +426 640 +640 480 +640 428 +640 547 +375 500 +432 354 +640 480 +640 480 +500 334 +640 480 +375 500 +640 480 +640 427 +360 640 +640 480 +640 426 +640 480 +640 427 +640 483 +640 480 +640 480 +640 425 +450 303 +640 480 +640 334 +640 425 +401 640 +640 427 +500 375 +640 424 +640 338 +640 561 +266 640 +640 428 +640 459 +375 500 +400 300 +640 480 +640 480 +640 427 +480 640 +375 500 +640 480 +640 480 +640 480 +480 640 +424 640 +480 640 +426 640 +640 429 +640 480 +424 640 +640 480 +640 480 +640 426 +640 307 +500 375 +640 390 +640 480 +465 640 +640 480 +640 480 +480 640 +640 424 +480 640 +640 360 +640 480 +640 427 +640 439 +640 427 +640 453 +640 480 +480 640 +640 433 +640 480 +640 478 +640 480 +500 436 +426 640 +640 360 +612 612 +640 480 +612 612 +640 425 +430 640 +640 480 +480 640 +500 500 +640 263 +640 480 +640 427 +640 478 +640 418 +640 378 +640 427 +640 512 +512 640 +640 505 +481 640 +640 426 +480 640 +500 375 +640 426 +640 478 +640 425 +370 500 +500 333 +640 427 +383 640 +640 427 +640 480 +500 375 +500 375 +478 640 +500 379 +427 640 +640 480 +480 640 +438 640 +640 480 +375 500 +431 640 +500 281 +500 311 +500 400 +640 427 +640 427 +640 480 +640 426 +640 480 +427 640 +478 640 +480 640 +640 428 +640 478 +640 480 +640 480 +640 483 +428 500 +640 428 +640 427 +640 426 +640 425 +640 427 +500 375 +640 480 +640 480 +640 640 +640 457 +640 428 +640 480 +480 640 +640 480 +640 499 +480 640 +640 480 +640 359 +500 333 +480 640 +427 640 +375 500 +640 480 +480 640 +640 480 +480 640 +640 480 +640 480 +640 360 +640 360 +640 480 +640 438 +426 640 +480 640 +640 480 +375 500 +640 480 +640 480 +500 333 +640 640 +479 640 +640 360 +640 427 +640 245 +640 480 +612 612 +640 601 +640 454 +640 427 +640 480 +448 336 +640 480 +640 604 +640 480 +500 333 +640 480 +640 427 +640 480 +500 333 +640 480 +480 640 +640 424 +640 424 +640 480 +500 332 +480 640 +640 427 +480 640 +640 403 +609 640 +640 480 +640 480 +412 500 +640 425 +640 428 +640 427 +500 336 +640 474 +640 480 +640 428 +500 375 +640 480 +640 480 +640 366 +480 640 +640 481 +640 480 +375 500 +640 480 +480 640 +640 424 +640 425 +344 500 +500 375 +640 480 +640 487 +640 389 +640 427 +500 375 +640 426 +640 426 +500 375 +640 447 +504 640 +426 640 +640 480 +640 480 +480 640 +640 428 +640 427 +640 427 +640 480 +640 425 +640 427 +640 429 +357 500 +640 480 +640 480 +447 640 +500 357 +479 640 +640 483 +480 640 +640 425 +426 640 +640 426 +640 428 +427 640 +639 640 +640 427 +640 355 +640 480 +640 414 +360 640 +640 427 +640 480 +424 640 +640 413 +500 338 +640 423 +480 640 +338 500 +640 439 +640 425 +640 428 +265 500 +640 427 +640 595 +640 480 +640 400 +639 640 +640 640 +500 400 +500 375 +640 434 +640 480 +480 640 +640 480 +640 400 +500 375 +640 427 +640 430 +640 480 +640 480 +640 640 +640 480 +640 590 +640 480 +640 426 +500 326 +640 427 +640 480 +600 400 +640 392 +640 480 +640 480 +640 360 +640 480 +640 425 +612 612 +240 320 +480 640 +480 640 +500 375 +640 427 +640 480 +375 500 +640 427 +640 429 +500 375 +428 640 +500 487 +640 480 +640 427 +640 533 +640 640 +640 480 +500 326 +640 480 +640 427 +640 480 +426 640 +640 480 +640 480 +480 640 +640 491 +640 427 +500 333 +500 375 +472 640 +506 640 +640 425 +500 375 +640 426 +432 640 +640 426 +333 500 +500 357 +640 461 +375 500 +640 438 +640 427 +500 332 +640 375 +640 480 +500 333 +640 480 +612 612 +640 427 +640 428 +640 480 +640 423 +640 480 +640 426 +640 426 +640 548 +640 480 +640 427 +427 640 +640 427 +640 428 +640 478 +640 480 +457 640 +640 459 +640 480 +640 435 +400 267 +640 480 +611 640 +640 480 +640 427 +640 480 +640 480 +640 429 +640 427 +640 480 +500 333 +480 640 +480 640 +427 640 +427 640 +480 640 +640 384 +640 427 +426 640 +640 360 +640 573 +578 640 +640 480 +640 426 +480 640 +640 429 +640 480 +640 426 +480 640 +334 500 +640 427 +640 347 +640 481 +640 427 +640 480 +427 640 +640 480 +640 480 +640 480 +640 480 +500 400 +640 480 +640 426 +640 425 +425 640 +427 640 +640 480 +425 640 +480 640 +640 484 +480 640 +640 426 +640 427 +640 425 +640 640 +640 480 +426 640 +640 429 +480 640 +640 427 +480 640 +640 427 +640 480 +426 640 +640 480 +640 426 +640 425 +426 640 +640 470 +640 480 +640 360 +640 480 +640 480 +640 480 +500 281 +640 480 +640 427 +640 427 +640 427 +640 423 +640 425 +640 427 +500 333 +480 640 +457 640 +640 427 +640 480 +425 640 +600 448 +640 425 +640 480 +640 480 +480 640 +640 425 +640 426 +640 427 +640 361 +640 480 +500 375 +640 487 +480 640 +500 375 +640 426 +500 375 +500 396 +500 332 +375 500 +640 400 +640 480 +480 640 +640 424 +640 480 +427 640 +368 640 +640 425 +640 428 +612 612 +480 640 +640 282 +640 428 +500 342 +640 440 +500 334 +640 426 +500 333 +640 427 +640 428 +500 333 +640 640 +500 374 +640 426 +640 425 +429 640 +640 433 +480 640 +640 490 +500 400 +640 480 +640 360 +640 480 +612 612 +640 393 +640 480 +480 640 +480 640 +640 426 +428 640 +640 456 +640 470 +420 266 +640 426 +480 640 +640 427 +640 640 +640 426 +506 640 +640 478 +640 425 +640 480 +640 480 +640 480 +640 512 +500 475 +612 612 +640 640 +480 640 +640 427 +640 427 +640 460 +613 640 +480 640 +480 640 +640 314 +640 480 +480 640 +640 424 +640 427 +640 480 +640 480 +458 640 +640 427 +640 443 +640 428 +640 427 +424 640 +640 427 +426 640 +640 457 +427 640 +640 427 +640 480 +480 640 +640 480 +335 500 +480 640 +640 425 +640 360 +429 640 +640 425 +640 427 +640 394 +491 640 +640 480 +640 480 +429 640 +640 484 +640 458 +333 500 +640 480 +480 640 +388 640 +640 425 +640 480 +640 427 +640 427 +640 480 +500 333 +640 428 +640 480 +640 479 +640 513 +425 640 +500 334 +375 500 +427 640 +480 640 +640 549 +640 480 +640 480 +640 428 +358 500 +640 428 +480 640 +480 640 +640 403 +640 361 +640 424 +640 359 +408 408 +640 374 +283 500 +640 427 +640 321 +640 424 +640 480 +500 357 +640 480 +640 426 +427 640 +640 480 +640 427 +640 416 +640 426 +640 480 +426 640 +640 480 +640 480 +375 500 +640 284 +640 424 +640 480 +640 480 +640 480 +640 366 +640 526 +480 640 +480 640 +460 640 +640 480 +640 302 +640 428 +640 428 +640 359 +612 612 +500 281 +640 427 +640 427 +640 480 +640 480 +640 427 +640 427 +478 640 +500 333 +640 360 +640 429 +640 480 +366 640 +424 640 +640 359 +500 338 +640 427 +640 427 +640 354 +640 480 +640 424 +478 640 +640 360 +427 640 +427 640 +428 640 +427 640 +640 423 +640 388 +431 640 +491 640 +640 426 +640 428 +640 427 +640 480 +640 360 +640 428 +427 640 +333 500 +640 480 +431 640 +640 426 +640 426 +640 427 +640 423 +425 640 +480 640 +640 480 +396 640 +640 480 +640 427 +640 504 +640 426 +480 640 +375 500 +427 640 +428 640 +640 480 +640 360 +640 424 +640 428 +479 640 +640 360 +426 640 +427 640 +640 512 +640 426 +640 520 +480 640 +500 333 +500 352 +640 473 +426 640 +640 427 +640 427 +640 480 +500 375 +640 427 +640 412 +640 480 +500 333 +640 404 +640 426 +500 375 +509 640 +640 480 +640 371 +500 375 +640 480 +640 436 +640 298 +640 480 +640 480 +640 427 +640 425 +640 428 +640 480 +640 426 +640 427 +640 539 +640 480 +427 640 +425 640 +640 360 +640 480 +640 480 +640 427 +612 612 +640 427 +480 640 +640 349 +375 500 +640 480 +640 441 +379 640 +500 375 +640 480 +640 426 +612 612 +640 427 +480 640 +613 449 +640 640 +640 549 +640 424 +640 480 +500 332 +500 333 +640 352 +640 427 +480 640 +640 480 +640 480 +640 480 +612 612 +426 640 +640 353 +426 640 +640 428 +640 488 +427 640 +640 480 +385 640 +375 500 +424 640 +500 333 +640 476 +640 479 +386 640 +640 480 +486 500 +640 360 +640 427 +640 480 +640 478 +640 480 +640 480 +640 480 +640 480 +500 399 +500 375 +640 427 +640 426 +640 501 +374 500 +640 480 +640 427 +640 427 +457 640 +457 640 +427 640 +640 427 +640 427 +500 375 +427 640 +640 480 +640 416 +640 464 +500 375 +640 480 +640 480 +640 480 +640 480 +640 423 +480 640 +640 427 +640 360 +640 360 +428 640 +503 640 +640 428 +640 427 +640 427 +500 333 +426 640 +429 640 +427 640 +640 400 +500 332 +480 640 +500 266 +500 357 +360 640 +640 427 +427 640 +640 480 +640 425 +612 612 +424 640 +640 427 +427 640 +640 426 +640 640 +640 480 +640 428 +500 375 +612 612 +500 333 +640 426 +640 480 +500 333 +640 428 +640 428 +480 640 +640 512 +640 365 +375 500 +640 427 +640 229 +640 480 +640 480 +640 480 +640 440 +640 428 +640 427 +480 640 +428 640 +500 375 +640 422 +640 427 +480 640 +480 640 +640 427 +500 375 +640 427 +587 640 +640 427 +500 400 +640 492 +500 375 +640 360 +427 640 +480 640 +640 478 +640 427 +480 640 +640 480 +640 425 +640 480 +640 427 +640 427 +640 427 +640 383 +640 364 +640 480 +640 349 +480 640 +640 426 +640 480 +335 500 +640 480 +640 480 +640 427 +640 480 +640 480 +478 640 +640 426 +640 426 +640 427 +640 480 +640 426 +427 640 +426 640 +640 480 +640 436 +426 640 +427 640 +425 640 +640 427 +640 406 +640 480 +612 612 +640 426 +425 640 +480 640 +480 640 +640 493 +375 500 +640 422 +640 426 +361 640 +640 427 +640 427 +640 504 +640 428 +640 480 +640 510 +640 480 +640 514 +640 424 +640 480 +480 640 +640 427 +640 480 +640 426 +640 480 +640 427 +640 432 +427 640 +640 439 +640 512 +640 480 +488 364 +427 640 +640 349 +375 500 +640 426 +640 427 +480 640 +500 332 +640 480 +640 424 +640 480 +333 500 +500 351 +640 480 +640 480 +640 480 +640 428 +640 428 +427 640 +640 427 +640 480 +426 640 +640 425 +640 512 +640 480 +478 640 +640 480 +640 501 +640 427 +460 500 +500 322 +640 480 +640 480 +480 640 +640 480 +500 333 +640 424 +640 424 +612 612 +640 426 +640 480 +640 480 +640 500 +427 640 +640 427 +500 375 +640 480 +500 354 +400 302 +480 640 +640 427 +512 640 +387 640 +640 457 +426 640 +640 427 +640 480 +640 427 +480 640 +640 427 +480 640 +640 480 +640 426 +640 640 +426 640 +425 640 +640 436 +640 358 +640 426 +640 480 +612 612 +480 640 +640 480 +640 355 +500 333 +573 640 +640 360 +640 426 +640 480 +640 480 +640 426 +640 480 +426 640 +640 480 +640 427 +640 427 +640 427 +640 426 +612 612 +480 640 +640 425 +640 480 +500 355 +640 380 +640 427 +353 500 +640 427 +427 640 +640 426 +640 480 +640 427 +640 418 +478 640 +640 425 +500 399 +640 480 +640 427 +600 402 +500 330 +640 425 +640 428 +640 427 +480 640 +509 640 +640 429 +458 640 +480 640 +640 425 +640 427 +640 427 +640 425 +640 427 +612 612 +500 381 +640 426 +427 640 +640 480 +640 478 +640 480 +640 480 +640 480 +640 480 +427 640 +480 640 +640 640 +640 361 +480 640 +640 480 +640 427 +640 408 +640 480 +640 480 +480 640 +480 640 +640 572 +640 440 +640 480 +500 346 +640 636 +500 334 +640 498 +640 426 +424 640 +640 480 +426 640 +500 333 +480 640 +353 480 +500 375 +640 373 +640 426 +480 640 +640 424 +640 480 +640 425 +500 335 +500 333 +640 478 +640 451 +480 640 +640 427 +383 640 +474 640 +640 360 +640 427 +426 640 +640 427 +500 431 +640 427 +640 480 +500 375 +640 480 +640 480 +640 480 +640 480 +640 480 +640 426 +640 480 +640 425 +518 640 +640 424 +640 430 +480 640 +640 425 +500 375 +375 500 +500 375 +480 320 +640 426 +640 480 +375 500 +500 375 +478 640 +612 612 +640 437 +640 425 +640 424 +640 480 +640 574 +640 427 +500 333 +399 640 +640 480 +427 640 +640 462 +480 640 +640 426 +640 429 +640 360 +640 458 +640 427 +640 603 +640 480 +640 384 +427 640 +375 500 +513 640 +640 496 +640 478 +640 480 +640 480 +500 375 +640 426 +480 640 +640 480 +640 426 +640 427 +640 478 +640 640 +640 427 +640 608 +640 480 +639 640 +427 640 +640 343 +640 479 +640 640 +427 640 +640 398 +480 640 +640 432 +426 640 +500 375 +480 640 +640 480 +640 480 +480 640 +640 480 +500 375 +640 425 +640 480 +500 335 +500 375 +591 640 +640 427 +640 428 +427 640 +426 640 +640 425 +600 420 +423 640 +640 478 +500 404 +640 426 +552 346 +640 431 +640 229 +640 427 +640 480 +640 480 +500 375 +500 316 +439 500 +480 640 +640 427 +427 640 +480 640 +640 424 +640 480 +640 480 +640 480 +429 640 +640 427 +640 426 +640 480 +426 640 +640 480 +640 438 +640 427 +640 480 +640 429 +425 640 +500 375 +500 375 +640 480 +480 640 +640 424 +500 375 +640 480 +426 640 +640 451 +640 480 +640 480 +640 575 +480 640 +640 451 +640 425 +640 401 +640 457 +424 640 +640 480 +332 500 +323 640 +640 480 +640 480 +480 640 +640 289 +640 480 +640 426 +640 457 +640 480 +640 426 +640 480 +640 444 +640 480 +480 640 +427 640 +640 480 +640 480 +640 471 +480 640 +640 427 +525 525 +375 500 +640 348 +500 334 +640 480 +500 375 +425 640 +640 425 +640 427 +640 480 +640 427 +640 428 +500 391 +640 480 +640 427 +640 427 +640 480 +640 359 +640 640 +500 333 +640 426 +640 442 +612 612 +640 427 +457 640 +640 427 +640 512 +640 614 +640 361 +640 480 +500 375 +640 428 +640 480 +500 391 +640 425 +500 375 +640 428 +640 425 +612 612 +640 480 +640 628 +640 528 +640 425 +640 480 +640 480 +640 478 +480 640 +427 640 +427 640 +640 451 +427 640 +640 480 +640 427 +640 480 +640 480 +640 427 +640 424 +640 480 +640 455 +640 480 +640 428 +336 500 +640 480 +480 640 +500 383 +459 640 +640 427 +640 456 +375 500 +640 480 +500 375 +500 281 +640 425 +480 640 +640 424 +640 361 +507 640 +334 500 +640 480 +500 400 +640 427 +640 426 +640 426 +640 319 +480 640 +420 640 +640 427 +480 640 +640 427 +427 640 +500 375 +640 640 +640 480 +320 480 +640 361 +500 400 +640 427 +500 376 +429 640 +500 381 +640 427 +640 426 +640 563 +640 480 +640 480 +640 429 +640 512 +640 480 +500 375 +640 480 +640 426 +424 640 +480 640 +544 640 +612 612 +640 480 +640 427 +500 333 +640 427 +640 480 +500 357 +339 500 +640 425 +640 406 +640 480 +500 370 +640 480 +640 484 +640 316 +640 480 +640 426 +480 640 +425 640 +640 427 +480 640 +640 480 +640 425 +480 640 +640 321 +640 436 +480 640 +640 480 +640 426 +640 480 +640 507 +640 480 +640 469 +500 333 +640 426 +640 480 +640 478 +640 426 +640 427 +640 425 +640 453 +640 427 +427 640 +480 360 +640 427 +500 332 +640 427 +375 500 +640 480 +500 334 +600 402 +640 480 +500 375 +480 640 +320 240 +640 427 +640 480 +640 480 +480 640 +640 427 +640 480 +640 427 +500 375 +640 427 +640 480 +477 640 +612 612 +640 481 +640 488 +480 640 +640 427 +640 480 +500 375 +640 425 +640 480 +640 455 +640 480 +500 332 +640 480 +500 375 +640 427 +640 427 +640 480 +640 480 +640 282 +335 500 +500 375 +640 427 +640 480 +640 480 +640 480 +640 480 +427 640 +333 500 +640 426 +640 351 +640 425 +478 640 +400 346 +500 393 +500 375 +640 511 +500 375 +480 640 +640 427 +640 426 +640 426 +640 480 +427 640 +640 427 +640 427 +640 640 +640 480 +640 427 +640 427 +640 340 +428 640 +640 233 +640 524 +385 289 +640 427 +640 640 +640 435 +360 450 +338 450 +640 351 +457 640 +500 375 +640 427 +640 427 +640 363 +640 426 +640 480 +640 444 +640 638 +640 383 +385 308 +375 500 +426 640 +640 550 +480 640 +448 336 +640 426 +640 427 +480 640 +640 420 +640 640 +640 523 +640 383 +500 377 +640 427 +375 500 +640 232 +427 640 +478 640 +640 424 +481 640 +640 427 +640 480 +500 332 +640 426 +640 480 +427 640 +500 337 +640 476 +640 480 +640 480 +428 640 +640 480 +500 375 +640 313 +640 426 +640 425 +640 480 +640 426 +375 500 +426 640 +640 480 +500 333 +500 375 +612 612 +500 227 +640 478 +640 428 +640 427 +640 425 +428 640 +500 375 +640 427 +500 333 +640 480 +480 640 +480 640 +640 425 +640 428 +640 480 +640 480 +480 640 +640 428 +640 428 +640 480 +640 427 +480 640 +640 480 +640 427 +496 640 +480 640 +640 583 +480 640 +640 332 +427 640 +480 640 +640 480 +640 426 +473 640 +299 300 +640 360 +640 427 +640 480 +640 466 +640 480 +426 640 +500 333 +640 480 +457 640 +480 640 +640 480 +480 640 +640 480 +640 480 +640 479 +640 640 +640 480 +640 457 +640 426 +640 426 +640 361 +480 640 +640 640 +640 424 +640 384 +500 410 +640 426 +500 375 +500 375 +640 480 +426 640 +500 334 +640 480 +500 371 +640 428 +640 427 +640 427 +640 480 +640 480 +640 480 +640 425 +640 480 +500 375 +640 480 +561 640 +500 333 +640 480 +427 640 +640 427 +640 427 +640 426 +640 480 +500 375 +640 480 +640 427 +639 640 +375 500 +424 640 +640 514 +375 500 +640 427 +640 479 +335 500 +640 472 +500 375 +500 375 +427 640 +500 375 +612 612 +640 478 +418 640 +640 318 +640 294 +640 462 +480 640 +500 375 +640 461 +640 393 +640 480 +640 360 +375 500 +480 640 +640 480 +640 427 +640 455 +640 325 +640 480 +640 480 +430 640 +480 640 +500 375 +640 342 +640 480 +640 426 +458 640 +500 375 +413 640 +640 427 +640 393 +640 409 +640 414 +640 480 +640 426 +640 425 +640 480 +640 480 +640 494 +640 427 +480 640 +640 481 +375 500 +640 427 +640 427 +427 640 +500 333 +640 484 +640 480 +612 612 +480 640 +480 640 +640 426 +640 427 +640 480 +640 368 +407 640 +480 640 +334 500 +500 375 +375 500 +640 428 +424 640 +640 425 +640 427 +640 425 +480 640 +480 640 +640 424 +480 640 +640 426 +386 640 +640 480 +640 640 +640 640 +480 640 +640 427 +640 428 +500 332 +640 478 +640 427 +375 500 +640 480 +640 480 +500 375 +640 480 +640 470 +480 640 +480 640 +640 427 +440 330 +640 480 +640 366 +640 359 +500 340 +640 480 +640 479 +500 333 +430 430 +553 371 +500 375 +640 513 +640 426 +640 511 +375 500 +429 640 +640 427 +274 500 +640 424 +640 480 +640 428 +500 375 +640 458 +640 480 +640 221 +428 640 +480 640 +640 425 +500 375 +425 640 +267 400 +640 427 +640 427 +640 424 +480 640 +640 480 +640 480 +480 640 +640 428 +426 640 +500 375 +640 480 +480 640 +500 334 +640 454 +584 640 +480 384 +640 427 +640 480 +480 640 +640 425 +480 640 +640 480 +640 612 +500 333 +333 500 +640 480 +640 427 +640 480 +480 640 +640 425 +640 480 +640 427 +640 480 +640 436 +640 426 +640 480 +600 402 +640 451 +427 640 +640 422 +640 427 +640 424 +640 480 +640 640 +640 480 +512 640 +640 480 +500 334 +480 640 +640 427 +640 427 +500 375 +480 640 +640 480 +640 512 +640 320 +640 427 +640 427 +612 612 +640 480 +375 500 +427 640 +429 640 +428 640 +640 480 +640 427 +480 640 +640 395 +640 454 +478 640 +640 431 +640 480 +428 640 +640 338 +500 333 +426 640 +640 427 +426 640 +640 427 +418 640 +640 425 +480 640 +640 425 +640 426 +640 360 +120 120 +500 335 +640 426 +640 426 +640 480 +638 640 +640 427 +480 640 +480 640 +500 375 +427 640 +640 503 +640 428 +640 308 +640 480 +640 480 +640 480 +480 640 +533 640 +640 481 +500 333 +500 375 +640 426 +640 425 +640 467 +640 480 +640 426 +427 640 +640 428 +640 480 +640 480 +640 480 +640 363 +375 500 +427 640 +640 425 +426 640 +480 640 +426 640 +640 480 +640 430 +640 300 +640 427 +375 500 +640 428 +375 500 +455 310 +640 427 +500 459 +640 481 +478 640 +640 480 +480 640 +640 480 +500 375 +640 480 +640 426 +640 480 +640 427 +640 480 +640 457 +425 640 +640 480 +640 406 +640 480 +480 640 +500 375 +500 388 +640 480 +448 640 +640 480 +434 640 +640 426 +500 333 +500 326 +640 480 +640 480 +640 480 +640 425 +640 480 +640 427 +640 426 +640 361 +640 480 +640 519 +500 375 +640 480 +500 375 +382 500 +640 480 +640 480 +640 428 +640 480 +612 612 +333 500 +640 512 +612 612 +612 612 +500 375 +640 480 +640 480 +640 349 +413 500 +640 480 +640 425 +640 390 +640 426 +640 359 +335 500 +640 640 +426 640 +640 468 +640 513 +640 465 +640 480 +500 375 +456 640 +480 640 +640 480 +640 480 +426 640 +500 250 +503 640 +500 375 +640 311 +640 460 +480 640 +640 480 +512 640 +480 640 +427 640 +534 640 +480 640 +480 640 +640 425 +480 640 +617 640 +640 427 +640 480 +478 640 +640 480 +640 305 +500 375 +640 425 +640 428 +640 480 +500 281 +480 640 +512 640 +480 360 +640 466 +480 640 +612 612 +640 480 +640 480 +333 500 +640 427 +640 480 +427 640 +640 480 +640 640 +640 480 +640 427 +640 474 +375 500 +640 480 +600 402 +640 480 +640 480 +640 427 +640 480 +500 375 +640 480 +500 375 +635 514 +448 640 +640 435 +428 640 +426 640 +612 612 +500 411 +640 480 +381 500 +640 480 +427 640 +480 640 +640 429 +640 480 +375 500 +640 480 +640 428 +480 640 +480 640 +640 512 +425 640 +478 640 +500 375 +500 375 +403 403 +427 640 +640 360 +480 640 +500 333 +640 360 +640 480 +640 426 +375 500 +500 348 +640 423 +375 500 +640 307 +428 640 +640 480 +640 480 +640 480 +640 418 +375 500 +640 427 +428 640 +640 427 +640 361 +500 375 +640 427 +640 480 +640 427 +425 640 +640 292 +640 360 +640 480 +500 375 +640 480 +500 485 +640 424 +640 480 +640 480 +640 428 +480 640 +640 436 +640 480 +428 640 +640 424 +457 640 +500 332 +640 480 +429 640 +640 429 +428 640 +640 429 +640 426 +640 640 +640 426 +480 640 +640 467 +640 427 +640 480 +500 333 +640 427 +500 338 +640 480 +326 500 +640 465 +640 480 +640 480 +640 423 +640 428 +500 333 +457 640 +375 500 +640 427 +640 425 +640 480 +640 427 +640 428 +500 462 +640 347 +640 400 +480 640 +640 427 +640 427 +640 480 +375 500 +640 475 +403 303 +428 640 +640 480 +640 293 +640 427 +427 640 +640 450 +640 480 +480 640 +640 480 +640 427 +612 612 +640 360 +500 357 +480 640 +640 480 +640 443 +481 640 +640 480 +640 428 +427 640 +640 427 +612 612 +480 640 +425 640 +333 500 +640 427 +640 480 +640 427 +640 424 +640 427 +640 480 +500 400 +500 332 +640 480 +500 375 +500 400 +500 375 +427 640 +443 640 +427 640 +480 640 +640 427 +640 478 +640 480 +640 480 +640 427 +640 425 +640 425 +640 480 +640 408 +480 640 +640 480 +640 480 +612 612 +500 333 +640 420 +480 640 +640 355 +640 480 +640 424 +500 375 +640 480 +640 320 +640 427 +640 480 +427 640 +320 240 +500 333 +389 640 +640 457 +480 640 +427 640 +500 375 +428 640 +640 427 +427 640 +640 425 +640 427 +640 427 +640 408 +640 512 +640 426 +640 426 +640 471 +640 428 +500 375 +640 429 +640 480 +640 480 +500 375 +640 489 +640 425 +640 427 +640 365 +640 480 +479 640 +500 375 +640 427 +640 427 +640 424 +640 480 +640 480 +640 640 +640 460 +640 640 +500 375 +480 640 +426 640 +500 375 +640 524 +640 480 +484 640 +339 329 +640 424 +640 478 +640 432 +640 427 +500 375 +640 426 +473 640 +640 624 +429 640 +480 640 +640 400 +472 640 +506 640 +480 640 +300 500 +375 500 +640 480 +612 612 +640 426 +426 640 +640 480 +640 480 +640 480 +640 427 +379 640 +332 500 +500 333 +640 480 +640 359 +640 333 +640 428 +500 333 +640 480 +640 426 +640 427 +640 368 +640 640 +500 332 +640 428 +640 480 +640 480 +480 640 +640 640 +640 505 +640 400 +480 640 +640 359 +640 480 +640 427 +640 640 +640 427 +640 480 +447 640 +640 480 +500 375 +427 640 +427 640 +426 640 +640 480 +640 360 +500 334 +612 612 +640 480 +640 427 +640 493 +390 500 +427 640 +640 425 +500 303 +640 480 +612 612 +429 640 +640 466 +427 640 +640 480 +640 480 +640 457 +640 427 +617 640 +640 429 +639 640 +640 427 +640 486 +640 271 +480 640 +500 375 +640 427 +480 640 +640 425 +427 640 +640 427 +640 479 +512 640 +434 640 +640 480 +640 480 +478 640 +640 427 +480 640 +640 431 +640 480 +640 427 +612 612 +427 640 +640 427 +640 428 +500 375 +500 375 +640 427 +640 480 +640 427 +500 344 +640 480 +640 480 +640 360 +461 640 +640 428 +427 640 +640 480 +640 366 +375 500 +499 500 +640 425 +640 427 +640 427 +640 425 +500 384 +640 427 +640 480 +640 640 +480 640 +484 640 +640 480 +640 424 +640 427 +426 640 +427 640 +640 424 +640 480 +640 480 +640 480 +613 640 +640 493 +640 427 +480 640 +480 640 +640 426 +640 425 +500 375 +640 480 +500 375 +640 480 +640 478 +480 640 +640 480 +640 480 +480 640 +480 640 +640 480 +640 427 +640 480 +640 458 +640 480 +640 480 +500 333 +640 425 +640 480 +640 427 +500 375 +480 640 +585 640 +480 640 +500 375 +480 640 +427 640 +500 375 +640 640 +500 375 +640 426 +500 375 +640 480 +640 329 +640 427 +427 640 +640 480 +640 286 +640 427 +640 593 +441 640 +640 640 +640 480 +500 367 +480 640 +417 640 +500 375 +640 480 +426 640 +640 454 +427 640 +586 640 +640 480 +427 640 +640 384 +640 427 +640 480 +427 640 +640 450 +640 480 +539 640 +640 427 +429 640 +500 333 +640 503 +640 427 +480 640 +500 333 +394 500 +640 427 +424 640 +640 480 +640 480 +640 426 +640 425 +500 336 +480 640 +612 612 +429 640 +640 478 +640 511 +500 333 +640 427 +640 480 +480 640 +375 500 +640 443 +640 468 +640 427 +480 640 +544 640 +640 424 +640 480 +500 344 +480 640 +640 428 +640 480 +611 640 +640 434 +640 360 +640 471 +640 343 +640 426 +640 497 +640 480 +427 640 +640 480 +640 477 +640 480 +640 480 +640 424 +375 500 +640 427 +640 480 +480 640 +640 424 +640 480 +500 375 +500 334 +640 425 +640 399 +640 425 +640 416 +640 360 +640 480 +640 480 +640 427 +640 480 +640 426 +500 333 +480 640 +640 309 +640 480 +500 379 +428 640 +640 480 +640 478 +640 326 +640 300 +640 480 +640 480 +640 480 +500 350 +640 448 +480 640 +427 640 +500 375 +640 480 +481 640 +640 427 +640 412 +640 427 +640 427 +640 480 +640 427 +500 375 +333 500 +640 427 +640 426 +640 360 +500 439 +640 426 +640 441 +640 427 +640 480 +427 640 +427 640 +500 333 +427 640 +640 480 +640 567 +640 360 +640 373 +640 425 +320 240 +640 480 +427 640 +640 480 +640 427 +480 640 +500 375 +640 424 +425 640 +640 478 +640 480 +427 640 +640 399 +558 640 +426 640 +640 427 +359 640 +640 480 +500 375 +640 480 +640 447 +640 512 +640 480 +640 480 +612 612 +612 612 +640 588 +640 480 +640 427 +640 439 +640 480 +426 640 +640 480 +480 640 +427 640 +640 424 +500 319 +375 500 +640 427 +640 427 +640 480 +640 478 +640 480 +480 640 +640 480 +640 428 +480 640 +640 426 +375 500 +640 478 +279 430 +512 640 +640 267 +640 640 +640 427 +640 457 +427 640 +640 317 +640 481 +480 640 +500 400 +640 480 +480 640 +640 426 +640 427 +375 500 +640 429 +640 480 +375 500 +640 427 +500 375 +640 428 +500 333 +479 640 +333 500 +640 427 +612 612 +640 480 +480 640 +640 640 +640 511 +640 480 +640 480 +640 428 +428 640 +640 480 +640 427 +640 479 +640 458 +640 480 +640 428 +640 427 +640 427 +500 500 +640 427 +640 481 +640 425 +640 638 +640 449 +426 640 +640 480 +640 427 +640 428 +500 281 +640 428 +640 428 +640 480 +500 375 +500 333 +640 427 +500 375 +500 375 +640 427 +640 428 +428 640 +640 427 +640 404 +480 640 +500 333 +640 429 +640 480 +480 640 +427 640 +640 480 +640 426 +454 640 +413 640 +500 375 +640 427 +640 480 +375 500 +640 480 +640 427 +640 480 +640 444 +640 480 +480 640 +640 236 +480 640 +640 428 +640 428 +640 363 +640 480 +640 427 +640 480 +640 480 +395 640 +640 337 +640 427 +640 427 +640 426 +640 414 +640 425 +640 368 +640 427 +500 315 +640 480 +555 640 +500 333 +640 427 +500 334 +485 640 +640 428 +640 480 +640 428 +640 428 +433 640 +640 426 +640 427 +510 640 +640 480 +480 640 +640 480 +640 480 +640 480 +640 470 +640 427 +640 480 +640 426 +640 522 +640 426 +640 426 +640 427 +425 640 +640 483 +640 427 +640 388 +426 640 +424 640 +360 640 +640 428 +640 480 +640 360 +640 515 +640 512 +640 452 +480 640 +427 640 +640 480 +640 480 +640 480 +640 480 +503 640 +480 640 +640 428 +500 331 +427 640 +640 427 +640 480 +640 428 +612 612 +640 480 +640 428 +426 640 +640 538 +500 337 +640 423 +640 480 +640 480 +427 640 +640 480 +500 375 +640 480 +640 480 +640 480 +640 480 +612 612 +640 406 +640 592 +500 330 +640 480 +640 480 +631 640 +500 375 +427 640 +640 480 +640 428 +640 430 +500 332 +640 480 +640 361 +460 640 +640 512 +425 640 +480 640 +640 480 +640 480 +640 480 +500 370 +640 425 +640 360 +640 263 +640 427 +640 427 +640 640 +640 427 +428 640 +640 427 +480 640 +612 612 +333 500 +640 427 +480 640 +640 640 +612 612 +640 480 +640 480 +640 428 +375 500 +640 456 +640 521 +640 427 +640 480 +427 640 +500 343 +640 640 +480 640 +640 480 +480 640 +640 480 +640 480 +481 640 +640 480 +427 369 +640 480 +426 640 +640 480 +500 375 +640 481 +480 640 +600 450 +500 375 +640 480 +640 427 +435 500 +640 427 +640 480 +423 640 +640 480 +640 427 +500 338 +480 640 +640 420 +500 333 +640 425 +640 427 +500 374 +640 480 +640 427 +500 333 +612 612 +640 480 +640 447 +240 320 +640 480 +640 480 +640 427 +640 427 +640 480 +427 640 +640 427 +500 375 +640 505 +640 457 +640 428 +640 480 +337 500 +640 542 +483 640 +640 360 +640 380 +640 428 +424 640 +427 640 +612 612 +500 471 +640 480 +512 640 +640 429 +640 428 +640 640 +640 426 +612 612 +640 427 +500 375 +640 447 +427 640 +640 640 +402 640 +640 480 +640 478 +500 375 +640 285 +506 640 +640 480 +640 425 +640 480 +640 563 +500 375 +640 427 +640 427 +480 640 +640 480 +480 640 +425 640 +500 375 +640 389 +640 480 +640 417 +640 270 +640 427 +500 333 +640 480 +640 480 +568 640 +640 427 +640 480 +640 360 +500 400 +640 425 +640 457 +426 640 +640 480 +640 428 +640 426 +640 426 +640 426 +640 427 +640 617 +500 333 +640 427 +640 426 +500 333 +640 427 +640 480 +640 480 +640 480 +640 426 +428 640 +640 480 +640 428 +640 403 +640 427 +459 500 +640 428 +500 334 +640 480 +640 468 +640 426 +640 477 +510 640 +375 500 +484 640 +640 552 +375 500 +500 375 +640 427 +640 480 +640 426 +480 640 +640 425 +640 437 +640 428 +640 480 +640 480 +640 480 +640 429 +640 427 +640 480 +333 500 +640 398 +612 612 +640 428 +640 427 +508 640 +429 640 +640 427 +500 333 +480 640 +640 480 +640 425 +640 427 +640 480 +427 640 +640 425 +480 640 +544 640 +640 640 +428 640 +640 427 +640 450 +640 425 +375 500 +640 482 +640 426 +519 640 +640 480 +500 375 +640 428 +500 375 +640 360 +640 427 +640 480 +500 375 +375 500 +640 425 +640 362 +401 500 +640 480 +640 427 +640 426 +640 480 +427 640 +640 512 +640 424 +640 480 +480 640 +427 640 +640 428 +640 428 +640 478 +480 640 +640 427 +640 480 +334 500 +640 480 +640 427 +640 241 +480 640 +640 427 +640 427 +640 480 +640 424 +640 548 +427 640 +425 640 +427 640 +640 426 +640 432 +427 640 +640 530 +283 424 +640 480 +640 480 +640 553 +640 442 +373 500 +482 640 +640 480 +640 480 +375 500 +640 360 +640 427 +640 480 +640 427 +640 480 +640 480 +640 427 +427 640 +369 500 +500 375 +640 480 +480 640 +424 640 +640 360 +640 427 +640 479 +480 640 +429 640 +640 480 +640 428 +640 480 +454 640 +428 640 +427 640 +480 640 +428 640 +640 360 +640 480 +426 640 +526 640 +480 640 +640 480 +640 480 +500 333 +640 428 +640 480 +640 640 +640 480 +640 480 +500 375 +640 480 +640 452 +640 473 +640 626 +481 640 +500 375 +640 480 +412 640 +640 427 +500 375 +640 478 +457 640 +640 427 +640 480 +640 427 +640 480 +640 403 +640 561 +500 375 +640 424 +640 480 +640 427 +427 640 +640 480 +425 640 +612 612 +640 427 +500 500 +640 480 +640 427 +640 480 +640 424 +640 480 +640 320 +640 480 +640 425 +375 500 +640 428 +640 427 +640 427 +640 478 +480 640 +640 480 +640 426 +640 427 +612 612 +640 480 +640 480 +500 333 +640 427 +427 640 +640 480 +427 640 +640 478 +640 428 +480 640 +640 425 +478 640 +640 480 +640 426 +480 640 +500 456 +640 428 +640 428 +640 426 +500 375 +640 428 +640 425 +640 360 +640 427 +426 640 +500 486 +640 480 +640 427 +513 640 +480 640 +476 640 +625 426 +640 360 +640 640 +640 427 +640 427 +457 640 +500 375 +640 425 +640 426 +612 612 +428 640 +500 333 +640 427 +470 640 +500 333 +341 500 +640 480 +640 480 +640 427 +640 480 +640 432 +640 426 +640 480 +427 640 +640 480 +640 480 +494 640 +640 424 +375 500 +640 427 +502 640 +434 640 +612 612 +500 375 +640 480 +640 480 +640 480 +375 500 +640 429 +640 480 +640 427 +500 375 +375 500 +640 486 +500 375 +640 427 +640 427 +640 400 +640 480 +424 640 +640 640 +478 640 +640 478 +500 311 +640 400 +640 480 +640 427 +612 612 +640 480 +640 429 +640 427 +480 640 +640 480 +500 375 +640 640 +640 479 +500 375 +640 480 +640 480 +640 427 +640 480 +640 436 +640 480 +640 480 +640 480 +640 480 +375 500 +332 500 +480 640 +640 427 +428 640 +640 480 +640 481 +640 480 +640 428 +640 277 +478 640 +640 396 +427 640 +640 480 +640 426 +640 480 +385 289 +484 640 +612 612 +640 480 +426 640 +640 425 +640 427 +640 427 +640 426 +640 427 +488 640 +346 500 +640 427 +640 480 +640 480 +335 500 +500 333 +640 428 +427 640 +426 640 +640 554 +427 640 +640 426 +640 427 +640 448 +640 480 +640 480 +640 480 +640 480 +640 480 +640 425 +640 480 +640 424 +480 640 +640 425 +480 640 +640 473 +427 640 +640 425 +480 640 +640 457 +640 428 +640 427 +480 640 +640 427 +640 461 +640 425 +500 374 +640 426 +490 640 +640 427 +480 640 +500 375 +640 427 +500 400 +640 480 +640 480 +640 511 +640 480 +640 480 +640 480 +640 427 +640 455 +640 480 +640 604 +640 425 +640 480 +640 427 +640 361 +480 640 +500 373 +640 480 +640 427 +612 612 +640 399 +640 640 +640 640 +480 640 +640 426 +640 427 +317 500 +500 375 +480 640 +640 480 +333 500 +640 480 +640 428 +640 480 +640 480 +640 360 +640 480 +640 488 +640 424 +480 640 +639 640 +640 429 +640 480 +286 409 +640 480 +640 430 +480 640 +604 640 +375 500 +640 425 +500 335 +500 375 +640 480 +640 480 +640 636 +500 191 +640 426 +640 640 +640 480 +640 427 +640 322 +640 425 +640 426 +478 640 +640 480 +500 375 +480 640 +640 427 +640 480 +612 612 +333 500 +640 428 +640 640 +640 425 +612 612 +640 360 +640 424 +640 480 +480 640 +640 400 +640 427 +500 333 +640 480 +500 375 +640 480 +640 475 +600 400 +640 426 +480 640 +480 640 +427 640 +640 427 +500 375 +427 640 +640 356 +500 333 +426 640 +640 480 +640 311 +640 480 +640 480 +640 427 +375 500 +640 360 +640 427 +640 480 +640 427 +640 480 +500 381 +333 500 +500 485 +640 480 +640 480 +640 428 +480 640 +640 427 +640 480 +640 480 +640 427 +446 640 +496 500 +500 375 +640 640 +640 427 +640 424 +640 480 +640 480 +640 473 +413 500 +640 442 +640 427 +500 332 +640 480 +640 513 +640 480 +640 554 +640 480 +640 464 +640 480 +640 427 +640 494 +612 612 +312 504 +640 480 +480 640 +640 396 +334 500 +640 480 +500 375 +640 427 +640 480 +375 500 +640 480 +640 454 +640 427 +640 444 +640 426 +375 500 +428 640 +500 375 +640 428 +293 448 +640 478 +424 640 +640 480 +640 431 +640 640 +640 424 +640 480 +425 640 +640 427 +640 424 +640 480 +500 375 +640 426 +640 480 +427 640 +500 287 +336 500 +640 426 +640 428 +640 480 +500 375 +640 425 +640 402 +640 480 +640 480 +640 480 +640 427 +640 427 +533 640 +640 480 +640 427 +426 640 +640 608 +640 427 +426 640 +640 427 +500 333 +600 400 +640 480 +399 500 +640 480 +375 500 +478 640 +640 425 +640 480 +640 425 +480 640 +640 480 +640 516 +500 375 +640 426 +409 500 +429 640 +640 424 +332 500 +500 400 +640 433 +640 581 +640 425 +492 640 +480 640 +303 640 +428 640 +640 427 +640 427 +640 427 +640 427 +640 427 +640 427 +640 458 +640 480 +500 281 +640 427 +427 640 +640 557 +591 640 +640 379 +640 426 +480 640 +640 427 +480 640 +375 500 +640 491 +640 480 +480 640 +640 480 +640 480 +640 427 +640 427 +427 640 +612 612 +500 298 +640 427 +640 480 +640 480 +640 428 +640 418 +540 640 +640 488 +640 480 +640 399 +640 427 +640 426 +640 512 +640 428 +640 428 +640 480 +360 640 +640 428 +480 640 +500 376 +375 500 +629 489 +640 580 +640 480 +640 335 +394 500 +640 480 +640 480 +640 480 +640 428 +640 480 +640 538 +480 640 +640 428 +640 427 +640 480 +640 427 +640 480 +480 640 +640 427 +485 640 +478 640 +640 428 +640 428 +640 427 +640 376 +640 423 +426 640 +640 425 +640 427 +640 427 +427 640 +640 425 +612 612 +500 375 +478 640 +500 334 +480 640 +640 480 +640 480 +640 418 +500 375 +640 427 +640 424 +640 480 +640 480 +392 500 +640 427 +500 500 +640 640 +640 483 +640 424 +640 426 +640 480 +360 640 +480 640 +640 429 +640 489 +640 427 +427 640 +640 374 +640 426 +480 640 +500 375 +427 640 +640 485 +640 427 +640 427 +640 480 +640 341 +640 480 +500 375 +640 427 +640 480 +631 640 +640 428 +480 640 +425 640 +640 427 +480 640 +640 480 +424 640 +640 360 +640 480 +500 375 +640 427 +427 640 +640 425 +414 500 +480 640 +640 426 +334 500 +375 500 +640 428 +640 478 +480 640 +640 425 +480 640 +426 640 +640 425 +640 480 +640 441 +512 640 +612 612 +430 640 +640 569 +480 640 +640 427 +640 426 +333 500 +640 480 +640 427 +640 480 +640 600 +640 427 +480 640 +640 427 +640 426 +640 458 +640 431 +640 427 +640 426 +426 640 +640 640 +640 480 +640 426 +640 426 +500 345 +500 375 +640 480 +500 333 +640 480 +640 640 +640 559 +640 427 +640 427 +500 333 +640 480 +640 480 +593 640 +500 447 +640 483 +640 427 +480 640 +500 371 +640 320 +640 480 +640 428 +640 480 +640 427 +640 425 +429 640 +640 266 +640 470 +640 360 +427 640 +430 640 +640 426 +426 640 +640 426 +640 450 +480 640 +427 640 +640 480 +500 333 +427 640 +640 427 +425 640 +640 480 +612 612 +640 427 +512 640 +640 480 +640 427 +640 480 +640 367 +439 640 +428 640 +640 360 +480 640 +427 640 +640 538 +640 480 +640 428 +640 425 +640 428 +640 408 +640 453 +640 440 +640 428 +612 612 +640 427 +640 640 +640 480 +640 428 +640 480 +427 640 +640 424 +640 427 +500 375 +426 640 +500 334 +480 640 +640 427 +480 640 +424 640 +640 427 +479 640 +480 640 +640 426 +480 640 +500 375 +500 356 +331 500 +500 334 +500 281 +426 640 +365 480 +480 640 +640 480 +500 366 +640 469 +640 427 +606 640 +640 607 +429 640 +354 500 +640 480 +640 426 +640 424 +640 479 +417 500 +640 480 +639 640 +640 427 +640 426 +640 640 +640 480 +480 640 +640 480 +332 500 +640 428 +640 428 +500 375 +640 480 +640 427 +640 425 +480 640 +480 640 +640 480 +640 427 +500 334 +480 640 +640 480 +640 513 +480 640 +640 427 +640 427 +500 375 +480 640 +427 640 +640 427 +480 640 +640 480 +640 480 +500 375 +640 427 +500 375 +500 375 +478 640 +480 640 +426 640 +612 612 +640 427 +640 521 +640 480 +640 427 +640 424 +259 500 +640 480 +640 480 +640 480 +640 429 +500 412 +640 426 +332 500 +480 640 +640 480 +640 426 +640 457 +640 480 +640 480 +640 207 +480 640 +480 640 +480 640 +640 468 +640 458 +457 640 +640 427 +640 480 +640 480 +511 640 +480 640 +500 490 +640 471 +640 480 +435 500 +640 428 +500 375 +640 437 +640 480 +640 427 +427 640 +640 480 +640 480 +500 333 +640 480 +640 427 +640 480 +640 426 +418 640 +640 480 +640 480 +480 640 +640 425 +640 424 +640 405 +640 427 +640 428 +640 480 +427 640 +427 640 +640 540 +640 496 +480 640 +640 427 +640 428 +429 640 +640 447 +500 375 +427 640 +640 480 +423 640 +640 480 +640 480 +639 640 +640 426 +426 640 +640 481 +425 640 +469 640 +426 640 +427 640 +640 360 +500 375 +640 480 +480 640 +640 389 +640 480 +640 433 +640 427 +640 421 +640 427 +640 425 +640 478 +500 375 +640 425 +640 427 +427 640 +288 352 +500 375 +427 640 +640 480 +500 375 +640 478 +640 427 +640 480 +426 640 +528 640 +640 429 +640 427 +640 478 +480 640 +640 426 +500 375 +427 640 +480 640 +449 640 +640 480 +640 480 +640 426 +640 480 +453 640 +640 480 +500 332 +640 475 +640 428 +640 480 +640 505 +480 640 +500 375 +500 375 +640 427 +640 426 +640 480 +428 640 +640 554 +480 640 +500 363 +480 204 +640 427 +480 640 +612 612 +640 425 +640 480 +427 640 +640 480 +356 500 +500 375 +640 480 +500 497 +429 640 +640 480 +480 640 +500 375 +640 427 +427 640 +640 466 +640 436 +640 480 +427 640 +480 640 +394 640 +393 640 +500 191 +640 457 +640 550 +640 411 +488 640 +640 320 +640 480 +621 640 +640 428 +425 640 +500 333 +640 480 +640 425 +640 427 +640 401 +640 480 +500 375 +374 640 +640 427 +640 480 +640 427 +640 446 +640 480 +640 427 +640 480 +427 640 +640 425 +640 480 +339 500 +640 391 +500 375 +640 427 +480 640 +640 283 +640 640 +640 428 +338 500 +640 427 +640 640 +426 640 +640 480 +640 480 +640 404 +640 480 +640 427 +640 427 +640 426 +640 480 +640 425 +500 334 +640 424 +640 426 +640 361 +640 360 +640 480 +640 427 +640 480 +640 428 +640 596 +640 426 +640 480 +500 355 +456 640 +640 425 +640 480 +640 427 +640 480 +530 640 +640 425 +375 500 +475 640 +640 481 +640 426 +640 425 +425 640 +640 428 +640 387 +480 640 +640 427 +640 427 +640 576 +640 427 +640 480 +640 480 +359 640 +640 480 +500 400 +500 374 +480 640 +480 640 +640 389 +640 456 +427 640 +640 480 +640 427 +612 612 +500 375 +640 427 +640 480 +640 640 +640 480 +500 339 +640 480 +640 427 +640 427 +500 243 +640 459 +426 640 +425 640 +640 360 +511 640 +640 414 +640 480 +640 426 +640 361 +640 253 +640 428 +640 459 +640 480 +480 360 +640 547 +500 376 +640 480 +640 480 +426 640 +480 640 +428 640 +640 428 +640 480 +480 640 +640 426 +640 426 +640 427 +640 360 +640 425 +640 427 +640 427 +640 477 +481 640 +500 333 +640 424 +640 480 +640 427 +408 500 +640 379 +480 640 +640 480 +640 509 +372 500 +640 414 +500 500 +640 428 +640 426 +500 375 +480 640 +612 612 +640 426 +640 480 +640 427 +640 480 +640 480 +640 480 +426 640 +500 375 +640 480 +640 388 +427 640 +640 430 +640 480 +640 427 +500 375 +640 424 +640 478 +425 640 +640 480 +612 612 +335 500 +640 428 +480 640 +640 480 +481 640 +640 425 +640 436 +640 512 +640 640 +640 424 +640 480 +427 640 +640 480 +640 480 +640 480 +640 469 +640 428 +640 427 +640 480 +640 479 +640 480 +640 285 +424 640 +480 640 +640 360 +640 480 +612 612 +640 480 +500 375 +428 640 +640 480 +640 427 +640 424 +427 640 +640 480 +640 480 +500 376 +640 425 +640 480 +640 426 +478 640 +500 375 +500 426 +640 480 +478 640 +427 640 +640 427 +640 480 +480 384 +428 640 +640 638 +500 375 +640 427 +640 400 +640 415 +500 334 +640 480 +480 640 +480 640 +640 480 +640 427 +500 375 +640 480 +500 375 +640 428 +640 480 +640 360 +500 375 +428 640 +640 360 +640 480 +427 640 +640 400 +640 429 +640 480 +640 480 +640 416 +426 640 +640 480 +640 383 +426 640 +640 428 +640 480 +640 478 +640 480 +640 480 +503 640 +333 500 +640 574 +480 640 +500 375 +640 480 +375 500 +480 640 +640 480 +375 500 +640 480 +640 639 +640 427 +428 640 +640 429 +480 640 +640 512 +640 427 +428 640 +480 640 +640 639 +640 427 +640 480 +640 400 +424 640 +640 424 +500 419 +640 480 +427 640 +640 477 +640 425 +640 419 +500 375 +640 480 +500 374 +640 480 +426 640 +425 640 +640 426 +640 427 +500 333 +375 500 +480 640 +640 426 +640 427 +640 427 +640 521 +640 427 +640 427 +640 427 +500 333 +640 393 +469 640 +427 640 +640 427 +480 640 +640 480 +500 375 +640 427 +640 427 +427 640 +640 480 +612 612 +640 428 +640 480 +500 375 +640 480 +640 640 +418 640 +640 457 +640 480 +375 500 +640 480 +640 480 +640 480 +426 640 +480 640 +480 640 +480 640 +480 640 +480 640 +640 427 +640 498 +640 480 +500 371 +640 480 +556 640 +490 350 +640 427 +640 443 +480 640 +416 640 +640 384 +640 321 +480 640 +480 640 +640 425 +640 480 +640 496 +513 640 +640 478 +640 480 +640 480 diff --git a/data/trainvalno5k.shapes b/data/trainvalno5k.shapes new file mode 100644 index 00000000..855a0700 --- /dev/null +++ b/data/trainvalno5k.shapes @@ -0,0 +1,117263 @@ +640 480 +640 426 +640 428 +640 425 +481 640 +381 500 +640 488 +480 640 +640 426 +427 640 +500 375 +612 612 +640 425 +512 640 +640 480 +640 427 +640 427 +640 416 +640 480 +416 640 +640 481 +640 573 +480 640 +640 480 +640 428 +480 640 +427 640 +640 536 +640 480 +640 428 +640 424 +500 333 +591 640 +640 480 +640 426 +600 600 +640 427 +640 427 +640 480 +640 481 +640 427 +640 480 +640 480 +480 640 +480 640 +640 480 +446 640 +640 480 +640 611 +426 640 +640 480 +640 389 +427 640 +640 480 +640 480 +480 640 +640 480 +640 427 +500 495 +500 313 +640 480 +360 640 +427 640 +640 480 +640 480 +640 425 +640 484 +460 312 +423 640 +427 640 +640 513 +473 500 +640 426 +640 480 +640 248 +640 480 +640 480 +480 640 +640 446 +640 427 +427 640 +500 375 +640 427 +640 472 +640 425 +640 427 +640 427 +640 481 +480 640 +612 612 +640 480 +428 640 +500 333 +640 480 +640 457 +359 640 +640 480 +640 361 +426 640 +429 640 +640 427 +612 612 +640 422 +500 332 +640 360 +640 360 +640 393 +512 640 +640 480 +640 431 +640 575 +640 480 +640 427 +640 427 +460 640 +640 427 +612 612 +327 500 +640 512 +392 500 +612 612 +640 480 +500 375 +640 360 +480 640 +427 640 +640 480 +640 369 +480 640 +480 640 +480 640 +427 640 +640 480 +640 480 +640 427 +612 612 +640 419 +640 427 +640 428 +640 480 +640 480 +443 640 +640 532 +640 480 +424 640 +640 424 +640 453 +640 424 +427 640 +640 480 +640 480 +500 332 +500 274 +640 359 +640 480 +480 640 +480 640 +480 640 +640 435 +640 427 +640 463 +640 522 +640 335 +640 480 +640 480 +640 492 +426 640 +480 640 +640 428 +500 333 +480 640 +640 426 +640 482 +480 640 +518 600 +640 480 +480 640 +640 419 +640 498 +640 480 +427 640 +612 612 +500 374 +640 428 +640 463 +640 480 +640 480 +480 640 +640 427 +354 500 +640 480 +428 640 +640 428 +640 480 +640 428 +640 428 +600 464 +500 375 +640 427 +612 612 +424 640 +427 640 +427 640 +612 612 +640 480 +640 425 +640 480 +500 375 +640 480 +480 640 +640 480 +640 480 +640 427 +640 480 +500 337 +500 335 +640 258 +640 480 +640 425 +640 562 +500 419 +640 427 +333 500 +482 500 +640 427 +640 427 +612 612 +640 480 +640 480 +500 333 +640 640 +500 375 +640 518 +640 480 +640 425 +640 426 +640 494 +640 427 +640 480 +480 640 +500 375 +640 427 +640 424 +640 480 +640 480 +640 480 +640 278 +458 640 +640 430 +640 480 +500 500 +640 640 +375 500 +564 640 +640 480 +500 353 +640 413 +473 640 +640 480 +640 427 +500 375 +640 233 +550 640 +500 333 +640 427 +640 332 +640 425 +640 426 +640 544 +640 480 +640 453 +640 640 +480 252 +500 375 +640 480 +640 480 +640 480 +640 429 +640 426 +640 480 +640 480 +480 640 +640 425 +375 500 +640 480 +640 427 +640 428 +640 462 +640 480 +428 640 +640 427 +480 640 +427 640 +501 640 +482 640 +640 427 +500 333 +640 480 +500 299 +640 463 +640 480 +640 427 +640 480 +640 480 +640 480 +640 480 +375 500 +426 640 +500 333 +640 345 +640 480 +640 580 +640 480 +428 640 +640 427 +333 500 +640 480 +640 480 +640 626 +640 428 +640 427 +640 480 +640 427 +400 500 +640 427 +500 375 +640 478 +640 480 +640 480 +640 427 +640 427 +640 427 +640 480 +500 500 +640 427 +640 360 +637 640 +481 640 +427 640 +640 426 +427 640 +640 427 +640 428 +480 640 +640 454 +609 609 +425 640 +426 640 +424 640 +427 640 +640 480 +640 427 +332 500 +640 478 +427 640 +427 640 +427 640 +640 480 +640 427 +640 480 +640 427 +640 427 +427 640 +640 376 +640 443 +640 480 +640 429 +640 480 +640 428 +640 640 +640 323 +640 480 +320 240 +640 480 +511 640 +640 408 +640 480 +500 375 +640 480 +500 297 +549 640 +500 358 +536 640 +480 640 +640 480 +640 383 +640 427 +640 480 +640 428 +640 480 +640 480 +640 482 +640 426 +640 427 +640 427 +425 640 +500 492 +640 512 +426 640 +640 383 +612 612 +640 427 +640 423 +427 640 +640 463 +480 640 +640 426 +640 427 +640 512 +480 640 +640 427 +455 640 +424 640 +533 640 +640 519 +640 421 +500 375 +640 427 +640 427 +640 443 +640 459 +640 480 +640 480 +427 640 +434 640 +500 335 +640 368 +612 612 +640 427 +640 479 +640 427 +640 480 +640 429 +640 480 +482 640 +512 640 +640 448 +640 408 +640 480 +640 480 +640 480 +612 612 +640 426 +500 392 +640 427 +640 480 +640 426 +640 640 +640 512 +640 427 +427 640 +612 612 +640 427 +640 480 +640 505 +427 640 +427 640 +640 480 +500 316 +640 482 +362 500 +500 500 +640 569 +640 638 +640 427 +480 640 +427 640 +640 427 +640 480 +640 480 +640 480 +640 425 +480 640 +500 443 +640 480 +640 427 +640 480 +640 480 +640 480 +640 427 +640 480 +640 480 +640 427 +500 333 +400 500 +480 640 +640 480 +516 640 +640 480 +500 333 +640 409 +350 233 +640 374 +640 401 +386 500 +640 480 +640 425 +640 426 +640 480 +640 480 +640 480 +640 426 +640 480 +640 480 +640 480 +640 428 +640 554 +427 640 +640 426 +483 640 +640 480 +640 480 +640 429 +425 640 +640 133 +333 500 +640 424 +480 640 +640 480 +640 480 +640 480 +458 640 +428 640 +640 361 +370 640 +360 480 +640 386 +640 426 +640 480 +640 480 +640 427 +640 427 +640 480 +500 375 +640 427 +640 572 +640 481 +640 414 +612 612 +640 480 +640 457 +640 480 +640 480 +500 375 +428 640 +480 640 +640 480 +640 427 +640 480 +640 480 +640 428 +640 424 +640 376 +640 480 +640 480 +640 640 +640 478 +480 640 +640 480 +438 640 +480 640 +429 640 +640 438 +640 427 +640 427 +640 480 +640 480 +425 640 +640 506 +640 426 +640 480 +640 427 +427 640 +640 481 +640 480 +500 334 +640 426 +375 500 +640 480 +640 425 +640 425 +500 331 +640 512 +480 640 +640 480 +640 480 +640 427 +640 480 +640 480 +640 480 +640 480 +640 480 +640 360 +640 640 +640 458 +640 480 +640 507 +640 480 +640 480 +526 640 +427 640 +640 480 +640 480 +429 640 +640 480 +427 640 +500 375 +640 428 +640 640 +640 480 +640 415 +640 480 +640 480 +612 612 +427 640 +640 480 +640 480 +478 640 +640 480 +640 565 +480 640 +374 500 +500 331 +640 427 +424 640 +640 350 +640 424 +612 612 +640 427 +640 427 +640 427 +612 612 +640 472 +500 375 +640 480 +640 480 +480 640 +640 480 +640 426 +640 480 +375 500 +640 438 +640 480 +640 494 +640 426 +428 640 +640 480 +500 366 +640 480 +500 375 +640 480 +640 519 +640 426 +640 480 +480 640 +640 480 +640 425 +640 425 +640 478 +640 424 +480 640 +478 640 +640 480 +640 427 +640 444 +480 640 +640 481 +640 480 +640 385 +640 480 +427 640 +640 480 +640 360 +640 480 +640 569 +640 480 +640 426 +640 474 +425 640 +640 347 +375 500 +640 425 +640 640 +640 467 +640 427 +427 640 +427 640 +640 480 +640 413 +640 480 +640 425 +640 371 +585 640 +640 480 +400 317 +640 432 +640 427 +640 480 +640 480 +640 346 +640 427 +640 426 +640 471 +500 333 +640 438 +640 426 +640 480 +333 500 +640 480 +640 426 +640 480 +500 333 +640 427 +480 640 +500 375 +640 480 +640 427 +438 640 +640 427 +640 480 +640 482 +640 568 +640 640 +640 480 +500 375 +640 427 +640 425 +640 426 +640 428 +640 480 +612 612 +640 480 +640 427 +640 480 +640 426 +640 427 +640 361 +612 612 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +640 469 +396 500 +640 427 +640 480 +500 375 +640 425 +600 400 +640 427 +480 640 +375 500 +425 640 +427 640 +640 480 +640 427 +480 640 +640 361 +640 473 +480 640 +640 480 +640 433 +427 640 +640 467 +640 429 +640 431 +640 427 +640 478 +640 480 +500 333 +425 640 +640 425 +612 612 +640 427 +640 482 +500 363 +378 500 +640 480 +640 426 +640 427 +640 424 +640 427 +640 439 +640 427 +340 640 +640 480 +640 428 +640 427 +640 480 +419 640 +616 640 +640 423 +640 459 +500 467 +640 427 +640 640 +640 361 +640 640 +640 427 +640 438 +426 640 +620 640 +500 364 +640 480 +640 427 +640 443 +457 640 +640 478 +640 417 +640 640 +640 383 +640 390 +640 427 +640 426 +640 413 +640 480 +640 480 +500 369 +640 457 +640 480 +640 427 +375 500 +500 377 +640 480 +640 427 +427 640 +500 491 +640 480 +640 480 +612 612 +640 425 +640 428 +640 480 +640 503 +640 425 +500 333 +480 640 +480 640 +640 480 +500 333 +486 640 +640 427 +640 428 +375 500 +375 500 +640 425 +640 512 +640 427 +640 427 +480 640 +491 640 +640 427 +640 428 +640 427 +640 480 +427 640 +640 463 +427 640 +640 427 +333 500 +480 640 +640 480 +612 612 +480 640 +480 640 +640 426 +640 427 +640 427 +640 433 +640 480 +500 332 +612 612 +640 480 +640 480 +640 476 +640 388 +427 640 +640 353 +640 426 +428 640 +640 457 +640 424 +640 427 +475 500 +426 640 +640 640 +640 480 +640 480 +640 480 +500 471 +640 480 +640 480 +640 481 +480 640 +640 480 +428 640 +443 640 +640 426 +427 640 +640 427 +500 375 +425 640 +640 359 +640 406 +640 427 +500 328 +640 480 +640 426 +640 238 +640 429 +640 480 +640 473 +640 424 +640 383 +640 480 +480 640 +640 480 +640 426 +640 426 +640 322 +414 330 +640 425 +500 346 +640 226 +478 640 +612 612 +556 640 +500 333 +333 500 +640 426 +640 427 +640 427 +640 379 +426 640 +640 427 +427 640 +640 428 +640 480 +428 640 +500 375 +333 500 +640 427 +640 428 +640 426 +480 640 +640 427 +281 500 +500 375 +640 480 +476 640 +640 480 +612 612 +640 506 +640 427 +640 434 +640 480 +640 480 +480 640 +500 375 +640 426 +335 500 +375 500 +640 480 +429 640 +375 500 +640 442 +640 480 +480 640 +640 388 +640 427 +640 480 +640 427 +640 404 +427 640 +482 640 +640 424 +640 418 +500 498 +640 202 +640 426 +640 428 +640 495 +640 422 +640 428 +480 640 +640 427 +640 480 +640 480 +375 500 +640 441 +640 463 +640 480 +480 640 +424 640 +427 640 +640 425 +640 426 +400 500 +500 375 +640 427 +640 420 +640 469 +640 455 +640 480 +640 427 +640 480 +640 509 +480 640 +640 426 +640 418 +640 480 +640 427 +640 480 +640 503 +640 480 +640 426 +640 481 +640 427 +480 640 +640 427 +500 375 +640 480 +640 480 +640 360 +640 426 +480 640 +640 428 +640 480 +640 640 +326 500 +373 500 +425 640 +519 640 +500 375 +500 375 +640 478 +640 478 +500 375 +640 480 +640 472 +508 503 +640 427 +640 480 +512 640 +640 562 +500 375 +480 640 +640 480 +427 640 +640 411 +640 520 +640 480 +640 428 +431 500 +640 426 +424 640 +640 480 +640 480 +500 334 +640 427 +640 309 +480 640 +427 640 +640 442 +480 640 +640 428 +640 410 +640 428 +640 480 +480 640 +640 427 +385 640 +427 640 +480 640 +488 640 +480 640 +500 339 +640 454 +612 612 +640 353 +380 472 +480 640 +640 448 +640 449 +640 640 +375 500 +640 480 +427 640 +480 640 +500 375 +640 435 +640 480 +640 480 +591 400 +640 427 +640 425 +640 424 +424 640 +640 427 +640 411 +640 427 +640 480 +640 427 +426 640 +500 375 +640 501 +640 428 +426 640 +640 480 +640 480 +640 427 +479 640 +640 427 +640 424 +500 375 +427 640 +427 640 +640 480 +500 375 +500 375 +640 461 +424 640 +640 640 +640 426 +640 480 +427 640 +640 480 +640 426 +640 425 +640 346 +480 640 +640 378 +478 640 +640 425 +426 640 +640 419 +640 480 +640 480 +640 480 +640 417 +640 427 +427 640 +640 427 +502 640 +480 640 +640 343 +640 480 +640 637 +500 376 +640 393 +490 490 +500 375 +640 426 +427 640 +480 640 +500 435 +640 453 +640 427 +428 640 +640 480 +427 640 +640 422 +640 480 +640 480 +640 480 +640 428 +640 426 +640 480 +500 333 +424 640 +640 480 +640 430 +480 640 +640 481 +640 480 +480 640 +640 489 +470 313 +431 640 +640 360 +640 427 +500 371 +640 426 +640 480 +480 640 +427 640 +640 480 +425 640 +640 480 +640 480 +640 480 +640 427 +640 492 +500 375 +582 640 +640 427 +500 332 +428 640 +320 640 +640 480 +426 640 +425 640 +500 375 +320 480 +640 425 +640 425 +640 427 +640 424 +640 480 +597 398 +640 425 +640 431 +640 426 +612 612 +640 425 +640 427 +640 358 +640 427 +640 480 +640 429 +640 425 +640 427 +500 335 +500 251 +428 640 +640 356 +640 425 +640 427 +640 480 +640 427 +640 360 +640 415 +640 480 +604 453 +480 640 +500 287 +334 500 +640 428 +640 427 +640 480 +640 480 +375 500 +640 428 +480 640 +640 427 +640 425 +640 427 +640 480 +480 640 +500 375 +640 425 +480 640 +640 426 +640 480 +640 427 +640 480 +640 426 +640 458 +481 640 +640 480 +427 640 +640 427 +640 429 +425 640 +640 480 +640 480 +640 433 +500 410 +640 424 +640 480 +500 375 +500 333 +640 480 +640 428 +500 404 +640 427 +640 427 +640 425 +500 375 +640 425 +640 461 +640 480 +640 427 +427 640 +612 612 +640 427 +640 480 +333 500 +428 640 +640 426 +612 612 +640 391 +640 480 +351 490 +640 360 +640 480 +640 480 +640 480 +480 640 +480 640 +640 448 +640 427 +500 375 +640 480 +640 480 +640 480 +640 484 +640 425 +640 284 +640 480 +640 480 +442 500 +640 381 +640 480 +465 640 +429 640 +640 480 +500 334 +640 427 +423 640 +612 640 +640 480 +640 480 +500 332 +640 469 +426 640 +640 456 +640 425 +375 500 +640 273 +640 480 +333 500 +379 640 +422 640 +640 427 +332 500 +640 427 +500 375 +500 375 +640 427 +640 426 +500 375 +640 400 +640 360 +640 425 +500 400 +640 633 +480 640 +640 426 +640 480 +640 480 +640 426 +427 640 +640 469 +640 425 +640 480 +640 424 +500 500 +640 360 +640 436 +640 427 +316 640 +640 427 +640 427 +470 351 +640 480 +640 480 +640 502 +640 443 +500 333 +640 480 +640 480 +640 427 +640 360 +640 480 +375 500 +475 640 +640 427 +640 427 +640 427 +640 427 +640 426 +640 427 +640 468 +333 500 +427 640 +640 400 +640 427 +480 640 +640 480 +480 640 +478 640 +640 427 +640 480 +478 640 +640 424 +640 426 +640 416 +640 453 +640 480 +500 420 +640 480 +640 480 +640 426 +375 500 +500 349 +640 416 +640 427 +500 375 +427 640 +640 426 +640 480 +375 500 +640 426 +640 425 +612 612 +640 480 +640 480 +500 186 +640 480 +480 640 +640 427 +640 640 +478 640 +640 427 +480 639 +500 327 +640 428 +426 640 +640 360 +433 640 +427 640 +640 475 +478 640 +640 480 +640 470 +640 480 +500 334 +640 427 +640 427 +491 640 +640 480 +640 478 +623 640 +640 480 +491 640 +500 333 +640 426 +640 427 +640 427 +640 424 +640 423 +640 430 +500 333 +640 480 +640 354 +500 334 +640 479 +640 427 +640 360 +640 428 +375 500 +640 480 +640 480 +640 424 +640 427 +480 640 +640 480 +480 640 +640 424 +640 480 +640 480 +500 376 +640 357 +640 427 +640 426 +612 612 +640 425 +612 612 +640 480 +640 427 +640 512 +425 640 +640 640 +640 449 +640 480 +333 500 +500 443 +640 431 +640 425 +500 391 +640 458 +480 640 +471 640 +640 480 +640 479 +640 426 +640 426 +500 375 +640 480 +612 612 +640 480 +480 640 +500 371 +429 640 +426 640 +465 335 +640 384 +426 640 +473 500 +640 426 +640 433 +480 640 +640 480 +640 480 +640 442 +640 480 +640 437 +640 640 +427 640 +640 480 +640 426 +640 427 +640 423 +480 640 +640 448 +640 480 +640 426 +640 360 +640 480 +427 640 +640 427 +640 479 +640 480 +500 352 +640 478 +427 640 +640 480 +640 427 +640 482 +474 640 +640 480 +640 425 +640 367 +480 320 +640 480 +640 480 +640 427 +640 480 +640 425 +500 375 +500 195 +480 640 +432 500 +500 386 +640 427 +640 468 +427 640 +589 640 +640 480 +640 480 +480 640 +425 640 +640 427 +640 429 +640 425 +500 333 +640 427 +640 360 +426 640 +640 480 +640 480 +640 427 +640 354 +640 428 +640 480 +480 640 +612 612 +640 424 +424 640 +640 426 +500 289 +480 640 +612 612 +500 333 +640 360 +640 426 +500 375 +640 480 +427 640 +640 640 +640 427 +640 480 +640 428 +521 640 +640 480 +640 480 +640 427 +640 365 +640 510 +640 427 +480 640 +640 427 +640 360 +640 425 +640 480 +640 427 +640 487 +456 640 +640 480 +640 448 +640 425 +640 427 +427 640 +640 376 +640 427 +640 427 +640 426 +640 480 +640 427 +500 375 +612 612 +500 334 +640 480 +333 500 +640 640 +516 640 +500 375 +500 375 +375 500 +500 329 +612 612 +640 640 +480 640 +426 640 +500 375 +500 332 +640 480 +640 435 +640 427 +640 480 +640 426 +426 640 +640 428 +640 480 +334 500 +427 640 +640 428 +500 375 +489 640 +640 426 +612 612 +480 640 +480 640 +349 640 +640 480 +640 426 +478 640 +640 332 +640 544 +640 474 +396 312 +640 425 +640 480 +640 425 +640 480 +640 383 +513 640 +640 427 +500 375 +424 640 +375 500 +427 640 +640 480 +444 640 +500 375 +640 480 +640 480 +640 480 +480 640 +375 500 +640 427 +640 427 +640 480 +500 375 +425 640 +480 640 +640 428 +640 426 +480 640 +640 427 +480 640 +640 426 +424 640 +426 640 +640 427 +640 425 +333 500 +640 426 +640 427 +640 427 +480 640 +427 640 +640 368 +427 640 +640 480 +640 512 +640 480 +640 553 +640 480 +640 640 +640 360 +359 640 +344 500 +640 480 +640 640 +640 416 +375 500 +612 612 +640 427 +612 612 +640 398 +612 612 +640 480 +640 510 +612 612 +640 480 +640 480 +640 480 +640 427 +640 403 +427 640 +640 427 +480 640 +640 480 +427 640 +500 500 +426 640 +496 640 +375 500 +640 480 +640 480 +640 427 +640 424 +640 427 +640 480 +500 333 +640 480 +640 480 +640 427 +374 500 +457 640 +640 428 +640 427 +334 500 +335 500 +640 480 +640 480 +640 428 +332 500 +640 480 +640 480 +640 480 +500 375 +640 433 +640 427 +640 478 +640 507 +640 480 +640 480 +640 428 +640 480 +640 186 +333 500 +640 427 +640 480 +640 478 +640 421 +640 282 +375 500 +640 480 +480 640 +640 480 +640 480 +640 480 +480 640 +640 427 +640 427 +480 229 +640 426 +640 427 +451 640 +640 480 +500 375 +640 427 +491 500 +415 640 +427 640 +640 427 +375 500 +640 480 +640 427 +640 424 +640 427 +640 426 +640 427 +640 427 +640 425 +640 634 +640 360 +500 375 +640 480 +640 424 +640 426 +640 427 +640 483 +500 333 +634 640 +432 640 +640 480 +640 480 +427 640 +426 640 +640 427 +640 480 +375 500 +640 386 +640 425 +640 428 +640 428 +640 480 +640 426 +427 640 +640 428 +603 640 +640 427 +500 332 +480 640 +342 500 +640 496 +640 480 +612 612 +427 640 +500 448 +414 640 +459 640 +434 640 +640 473 +640 480 +640 480 +640 480 +500 375 +478 640 +640 480 +640 480 +640 480 +640 428 +450 640 +640 427 +640 511 +375 500 +500 375 +640 427 +640 640 +335 500 +640 359 +640 480 +640 480 +640 428 +640 425 +480 640 +426 640 +640 480 +640 565 +640 427 +640 480 +640 426 +640 381 +512 640 +484 640 +640 426 +640 640 +640 480 +481 640 +427 640 +640 596 +640 480 +640 428 +640 429 +640 427 +512 640 +480 640 +427 640 +375 500 +612 612 +640 480 +640 427 +640 360 +612 612 +478 640 +640 419 +640 429 +640 426 +640 480 +640 427 +640 451 +640 480 +480 640 +640 465 +640 480 +425 640 +436 640 +478 640 +640 426 +640 554 +640 480 +640 480 +500 391 +640 426 +640 427 +640 431 +427 640 +640 425 +640 426 +640 411 +480 640 +640 425 +465 640 +640 467 +640 427 +640 480 +510 640 +480 640 +640 422 +640 427 +640 388 +640 480 +640 480 +458 640 +640 480 +480 640 +640 480 +233 247 +640 480 +428 640 +640 427 +640 360 +424 640 +640 478 +640 380 +640 360 +640 425 +500 280 +480 640 +640 426 +640 426 +640 480 +640 480 +640 463 +640 352 +640 480 +427 640 +612 612 +640 426 +480 360 +640 480 +500 375 +640 425 +640 480 +427 640 +500 334 +500 377 +640 425 +500 392 +425 640 +500 334 +333 500 +640 480 +640 480 +640 408 +427 338 +502 640 +500 375 +640 427 +640 640 +640 414 +640 512 +640 427 +640 428 +640 409 +500 375 +500 375 +640 426 +640 478 +640 427 +640 480 +640 480 +640 403 +640 461 +640 503 +640 425 +640 425 +640 457 +425 640 +427 640 +375 500 +333 500 +480 640 +640 480 +640 426 +640 480 +640 448 +640 427 +640 427 +375 500 +640 427 +500 375 +640 427 +640 427 +640 480 +640 427 +428 640 +640 426 +640 480 +300 169 +512 640 +640 480 +640 426 +640 428 +640 480 +640 323 +640 427 +480 640 +640 427 +640 427 +500 400 +428 640 +640 360 +640 480 +427 640 +475 640 +640 480 +333 500 +612 612 +640 480 +640 351 +640 562 +640 480 +640 427 +480 640 +612 612 +640 309 +640 427 +640 480 +480 640 +640 480 +424 640 +640 480 +640 427 +640 425 +640 480 +640 480 +640 480 +478 640 +478 640 +612 612 +640 426 +640 480 +556 640 +500 375 +640 425 +640 480 +480 640 +375 500 +640 427 +480 640 +426 640 +640 427 +640 426 +640 480 +480 640 +640 427 +480 640 +375 500 +640 472 +480 640 +640 427 +640 427 +640 480 +360 270 +640 480 +500 333 +333 500 +640 375 +640 360 +640 480 +427 640 +480 640 +640 428 +480 640 +427 640 +640 512 +640 480 +640 383 +640 369 +640 428 +640 345 +640 424 +612 612 +413 640 +640 442 +500 281 +500 481 +640 480 +480 640 +640 361 +500 332 +500 375 +500 375 +640 427 +500 375 +640 480 +640 429 +640 480 +500 375 +640 407 +640 427 +640 480 +640 480 +640 360 +640 426 +640 480 +500 333 +640 480 +640 425 +640 480 +640 479 +640 386 +383 640 +472 314 +480 640 +640 513 +640 516 +640 428 +500 375 +640 480 +640 480 +640 425 +480 640 +480 640 +591 640 +640 425 +640 480 +500 375 +640 427 +356 480 +640 360 +640 428 +500 333 +480 640 +640 360 +640 480 +640 457 +500 333 +640 427 +300 201 +360 640 +640 640 +640 478 +500 332 +640 480 +640 427 +640 640 +480 640 +640 427 +640 640 +640 480 +640 480 +640 427 +500 375 +640 480 +640 444 +640 427 +640 427 +640 410 +500 375 +619 640 +640 429 +500 277 +399 640 +427 640 +640 421 +640 428 +640 429 +480 640 +480 640 +320 240 +640 427 +640 427 +640 427 +640 426 +640 606 +480 640 +640 451 +640 427 +640 428 +640 360 +640 484 +500 500 +640 482 +640 427 +640 480 +640 424 +640 427 +480 640 +426 640 +640 480 +412 640 +640 480 +640 427 +640 406 +640 480 +500 375 +640 506 +640 480 +640 480 +640 415 +480 640 +640 480 +419 640 +429 640 +640 453 +640 427 +480 640 +500 333 +640 427 +640 480 +640 480 +640 428 +480 640 +640 411 +640 360 +640 429 +500 375 +640 480 +640 427 +640 640 +612 612 +640 480 +612 612 +640 481 +640 496 +376 640 +640 480 +640 431 +640 480 +640 426 +424 640 +500 486 +640 480 +640 480 +640 426 +500 325 +640 458 +640 383 +480 640 +640 369 +640 480 +640 424 +480 640 +500 333 +640 459 +424 640 +612 612 +461 640 +480 640 +375 500 +375 500 +640 423 +640 427 +640 480 +640 428 +640 388 +427 640 +640 480 +333 500 +640 423 +640 427 +640 388 +640 480 +500 375 +640 427 +500 333 +427 640 +640 427 +640 320 +640 429 +640 292 +640 424 +640 480 +640 428 +480 640 +640 408 +640 480 +640 407 +640 419 +640 426 +500 500 +375 500 +640 427 +480 640 +640 427 +640 480 +640 480 +640 161 +640 426 +500 455 +640 427 +640 480 +640 385 +640 479 +640 424 +500 375 +640 480 +640 480 +640 480 +640 480 +640 359 +640 429 +640 472 +480 640 +640 480 +500 332 +640 427 +640 625 +640 480 +640 416 +480 640 +640 385 +366 500 +426 640 +478 640 +431 640 +640 427 +640 427 +375 500 +640 427 +480 640 +640 427 +640 476 +308 233 +480 640 +640 480 +500 376 +640 427 +612 612 +500 376 +640 427 +640 427 +640 480 +640 406 +425 640 +640 480 +640 363 +640 480 +640 424 +640 426 +279 640 +480 640 +640 428 +640 427 +640 383 +640 427 +428 640 +640 425 +640 512 +640 417 +631 640 +640 427 +427 640 +480 640 +640 427 +443 448 +441 640 +640 429 +612 612 +612 612 +640 429 +640 421 +361 640 +640 425 +491 640 +640 480 +321 479 +640 427 +640 447 +429 640 +640 480 +640 480 +640 480 +426 640 +454 640 +640 361 +427 640 +640 480 +426 640 +640 423 +480 640 +612 612 +640 425 +640 520 +640 594 +640 404 +640 427 +640 480 +640 424 +640 427 +640 427 +480 640 +640 396 +640 426 +640 428 +640 585 +640 426 +427 640 +334 500 +480 640 +480 640 +640 427 +500 375 +427 640 +640 424 +375 500 +640 424 +480 640 +350 233 +424 640 +640 427 +640 640 +640 424 +640 427 +640 428 +350 450 +640 480 +640 429 +640 428 +385 500 +640 429 +640 471 +640 480 +500 375 +640 362 +640 427 +612 612 +640 341 +640 427 +640 439 +500 375 +500 333 +500 397 +480 640 +427 640 +375 500 +640 427 +640 480 +640 480 +640 480 +426 640 +640 480 +375 500 +640 480 +640 480 +480 640 +427 640 +640 441 +427 640 +640 512 +500 375 +640 427 +640 428 +640 640 +640 360 +480 640 +500 355 +640 480 +640 480 +480 640 +640 480 +640 327 +640 427 +640 427 +500 375 +566 640 +422 640 +500 312 +640 480 +640 480 +427 640 +480 640 +500 487 +427 640 +427 640 +478 640 +640 426 +640 427 +640 427 +335 500 +500 333 +640 480 +640 428 +640 463 +640 480 +640 427 +640 424 +640 480 +640 480 +640 524 +480 640 +640 480 +612 612 +427 640 +640 427 +640 480 +500 359 +640 425 +640 427 +640 379 +640 480 +640 480 +395 640 +640 427 +640 424 +640 480 +640 480 +612 612 +356 500 +640 359 +640 480 +640 411 +480 640 +640 479 +480 640 +640 427 +480 640 +640 426 +640 427 +640 480 +210 640 +640 597 +640 528 +640 427 +640 431 +640 427 +480 640 +640 480 +480 640 +640 480 +640 569 +480 640 +640 428 +640 480 +500 500 +500 375 +640 426 +640 480 +304 640 +480 640 +640 480 +640 640 +375 500 +500 314 +512 640 +444 640 +426 640 +289 350 +640 435 +640 480 +640 625 +427 640 +500 375 +640 354 +480 640 +640 599 +640 424 +480 640 +500 332 +640 428 +500 335 +640 480 +640 324 +640 480 +640 427 +640 359 +640 480 +640 494 +640 464 +640 494 +640 428 +640 358 +640 427 +640 326 +423 640 +500 375 +640 480 +440 640 +640 426 +361 640 +426 640 +640 480 +480 640 +640 426 +427 640 +640 480 +640 486 +640 611 +640 480 +640 425 +590 397 +612 612 +640 427 +477 358 +500 311 +480 640 +640 480 +640 425 +500 144 +640 427 +640 436 +425 640 +334 500 +640 512 +640 427 +480 640 +640 480 +640 480 +424 640 +640 431 +640 490 +335 479 +500 333 +480 640 +480 640 +426 640 +640 424 +640 528 +640 359 +640 480 +480 640 +640 480 +640 480 +480 640 +500 331 +480 640 +640 428 +640 511 +640 427 +480 640 +500 335 +480 640 +425 640 +426 640 +640 375 +425 640 +408 500 +640 425 +500 375 +640 424 +500 375 +640 480 +427 640 +640 485 +640 480 +427 640 +640 480 +640 283 +593 640 +425 640 +640 427 +480 640 +640 413 +480 640 +640 428 +640 541 +480 640 +640 425 +640 406 +480 640 +480 640 +640 480 +600 600 +640 431 +640 425 +640 426 +500 354 +640 428 +500 328 +640 480 +640 427 +640 426 +394 500 +640 429 +640 425 +480 640 +500 485 +640 480 +640 480 +480 640 +500 375 +640 480 +464 640 +640 427 +640 480 +427 640 +612 612 +411 600 +640 480 +640 427 +427 640 +640 428 +500 376 +640 425 +640 482 +640 427 +640 480 +640 480 +640 480 +640 480 +480 640 +415 600 +640 595 +640 480 +640 425 +640 428 +640 427 +478 640 +424 640 +640 427 +640 314 +640 441 +640 387 +640 640 +640 427 +330 500 +427 640 +480 640 +427 640 +500 333 +480 640 +640 480 +640 426 +480 640 +640 537 +640 481 +640 426 +527 640 +480 640 +640 360 +413 640 +640 427 +640 480 +640 640 +640 480 +640 479 +640 414 +640 480 +640 489 +427 640 +496 640 +640 428 +620 450 +640 639 +500 333 +640 480 +640 431 +640 480 +375 500 +479 640 +426 640 +640 480 +640 480 +640 426 +500 375 +489 640 +500 334 +427 640 +612 612 +640 425 +640 360 +640 425 +640 427 +640 480 +640 478 +640 480 +480 640 +640 478 +500 332 +640 429 +359 640 +640 429 +640 480 +480 640 +640 480 +640 480 +640 360 +451 640 +640 428 +480 640 +640 480 +640 480 +640 424 +640 427 +640 426 +640 480 +361 500 +640 480 +640 501 +625 330 +427 640 +640 424 +640 425 +640 424 +640 426 +640 454 +428 640 +640 427 +612 612 +640 480 +333 500 +612 612 +500 329 +335 500 +640 428 +640 480 +640 480 +640 426 +640 480 +640 426 +480 640 +640 391 +640 409 +640 426 +500 375 +640 640 +640 472 +427 640 +480 640 +640 640 +640 480 +640 480 +480 640 +640 480 +640 427 +500 281 +480 640 +640 428 +429 640 +500 375 +640 501 +500 375 +480 640 +480 640 +419 640 +640 480 +640 427 +375 500 +640 480 +427 640 +500 375 +640 513 +640 480 +640 480 +424 640 +640 314 +640 360 +500 375 +500 375 +478 640 +612 612 +480 640 +640 480 +480 640 +427 640 +640 426 +640 640 +612 612 +424 640 +500 333 +640 480 +426 640 +640 480 +640 480 +640 480 +640 427 +480 640 +500 333 +640 427 +640 424 +640 409 +640 541 +640 489 +640 480 +359 500 +640 427 +640 480 +640 425 +640 413 +479 640 +428 640 +640 480 +640 480 +640 427 +432 500 +640 480 +640 480 +640 429 +500 392 +640 374 +640 424 +640 480 +640 450 +640 496 +500 375 +427 640 +480 640 +480 640 +640 424 +640 480 +478 640 +640 426 +640 360 +427 640 +500 269 +474 640 +500 375 +375 500 +640 480 +500 375 +640 557 +640 361 +500 375 +640 427 +640 427 +640 480 +360 640 +427 640 +612 612 +640 427 +640 426 +375 500 +640 560 +640 332 +612 612 +640 477 +480 640 +640 480 +435 640 +375 500 +640 428 +640 398 +640 428 +375 500 +640 426 +640 428 +640 480 +551 640 +640 480 +640 480 +480 640 +640 480 +480 640 +480 640 +640 480 +640 427 +640 426 +500 381 +640 480 +640 480 +480 640 +640 425 +640 427 +427 640 +500 346 +427 640 +640 276 +640 480 +480 640 +640 480 +640 508 +344 640 +640 480 +640 401 +640 427 +349 640 +640 480 +575 575 +480 640 +640 480 +640 427 +640 424 +500 375 +333 500 +640 480 +640 409 +640 480 +480 640 +640 478 +378 500 +640 480 +521 640 +500 335 +640 426 +433 640 +640 449 +640 480 +640 480 +640 596 +500 375 +480 640 +640 426 +640 428 +640 480 +640 439 +640 427 +458 640 +640 426 +640 480 +640 428 +407 500 +500 375 +640 507 +640 480 +640 480 +640 480 +640 427 +480 640 +640 480 +640 427 +333 500 +378 640 +612 612 +640 640 +427 640 +640 426 +336 500 +640 480 +375 500 +640 427 +640 426 +640 571 +640 427 +640 426 +640 480 +640 427 +480 640 +375 500 +640 480 +640 480 +480 640 +640 441 +333 500 +640 338 +478 640 +379 500 +640 480 +640 500 +503 640 +640 360 +554 640 +427 640 +640 427 +500 500 +500 344 +640 426 +640 427 +640 517 +640 480 +640 428 +500 400 +640 424 +480 640 +640 424 +640 480 +640 426 +347 500 +359 500 +427 640 +640 426 +429 640 +640 426 +640 360 +640 427 +640 427 +640 480 +640 280 +640 414 +640 640 +500 375 +428 640 +429 500 +640 480 +640 480 +640 427 +640 426 +640 480 +640 480 +425 640 +640 309 +640 419 +421 640 +640 480 +428 640 +333 500 +640 426 +480 640 +640 480 +426 640 +640 500 +640 480 +640 427 +427 640 +480 640 +640 480 +640 391 +264 500 +500 375 +640 427 +640 427 +640 398 +640 480 +640 480 +640 425 +500 375 +499 640 +640 360 +500 375 +640 480 +426 640 +640 480 +504 640 +640 480 +500 375 +640 427 +640 480 +480 640 +640 429 +335 500 +478 640 +640 427 +640 480 +640 480 +640 427 +640 480 +640 427 +640 427 +500 375 +500 400 +640 480 +500 333 +500 375 +480 640 +427 640 +640 451 +640 336 +500 395 +640 301 +640 426 +500 375 +404 640 +640 480 +640 640 +640 427 +500 335 +640 458 +426 640 +612 612 +640 575 +638 640 +640 424 +640 478 +640 480 +640 480 +425 640 +428 640 +612 612 +427 640 +500 336 +640 424 +640 508 +640 551 +300 176 +640 426 +640 480 +612 612 +640 478 +640 427 +640 428 +640 480 +640 449 +640 438 +640 427 +500 375 +640 424 +578 640 +640 480 +640 279 +640 480 +640 480 +640 427 +640 427 +426 640 +640 427 +640 429 +427 640 +640 480 +640 480 +640 544 +480 640 +640 480 +640 482 +640 193 +640 480 +640 538 +640 480 +418 339 +640 480 +640 427 +480 640 +640 427 +640 427 +640 427 +640 436 +612 612 +640 427 +640 480 +480 640 +640 427 +426 640 +640 426 +500 375 +640 426 +427 640 +640 428 +500 333 +640 480 +640 480 +640 480 +640 426 +612 612 +640 426 +640 426 +640 427 +640 426 +407 640 +640 480 +640 480 +640 428 +427 640 +480 640 +640 467 +640 481 +640 480 +360 640 +640 497 +640 480 +612 612 +640 427 +640 427 +640 497 +640 480 +640 640 +640 480 +375 500 +640 427 +640 480 +640 460 +640 427 +640 413 +640 427 +640 424 +480 640 +480 640 +500 384 +500 375 +480 640 +640 428 +640 480 +500 375 +500 375 +640 427 +500 375 +640 480 +640 427 +480 640 +640 427 +640 480 +640 467 +640 427 +640 359 +640 360 +640 427 +640 480 +326 500 +640 471 +494 640 +640 411 +640 480 +640 373 +640 425 +480 640 +640 480 +640 427 +640 365 +421 640 +640 427 +640 480 +612 612 +333 500 +640 427 +500 333 +360 640 +640 480 +640 480 +640 359 +640 387 +640 453 +612 612 +640 360 +640 586 +500 375 +640 480 +640 428 +640 426 +640 480 +640 480 +640 428 +375 500 +462 640 +640 427 +567 640 +596 440 +449 640 +640 480 +480 640 +640 483 +640 426 +457 640 +512 640 +427 640 +640 438 +471 640 +640 480 +425 640 +640 427 +480 640 +640 427 +640 480 +640 480 +333 500 +480 640 +640 480 +640 480 +500 375 +640 427 +640 480 +640 417 +427 640 +500 375 +375 500 +640 429 +640 480 +640 480 +640 640 +640 480 +640 480 +480 640 +640 427 +640 309 +640 480 +480 640 +640 424 +426 640 +640 425 +640 481 +500 375 +640 427 +612 612 +640 480 +240 180 +640 478 +640 426 +640 427 +348 500 +640 640 +640 589 +640 480 +500 375 +640 427 +640 444 +640 350 +480 640 +640 427 +640 480 +427 640 +612 612 +480 640 +640 480 +640 480 +640 428 +640 427 +480 640 +640 425 +640 428 +640 426 +640 424 +640 480 +500 375 +640 480 +640 427 +640 427 +427 640 +375 500 +334 500 +640 480 +640 424 +500 346 +640 427 +640 429 +640 434 +640 428 +500 375 +640 426 +500 439 +640 427 +375 500 +640 480 +426 640 +640 554 +640 478 +640 427 +458 640 +640 480 +600 593 +413 640 +640 432 +640 480 +640 427 +640 481 +486 640 +640 427 +500 420 +640 427 +640 480 +329 640 +500 375 +612 612 +427 640 +640 427 +500 353 +640 364 +640 435 +640 480 +640 426 +640 479 +500 375 +640 480 +640 549 +640 480 +640 425 +640 463 +640 478 +640 459 +640 512 +640 428 +480 640 +640 425 +480 640 +640 480 +640 427 +500 490 +513 640 +640 426 +640 428 +640 426 +640 439 +425 640 +612 612 +640 480 +480 640 +640 480 +640 480 +640 427 +640 478 +640 428 +640 425 +640 480 +640 427 +640 428 +500 332 +480 640 +640 419 +640 480 +640 480 +640 430 +640 480 +375 500 +640 358 +367 640 +640 427 +640 480 +640 425 +640 427 +480 640 +640 427 +640 427 +640 439 +640 424 +640 480 +500 334 +640 427 +612 612 +480 640 +500 333 +640 427 +640 480 +357 500 +640 427 +484 640 +500 375 +426 640 +640 480 +640 478 +640 480 +640 480 +500 375 +640 480 +640 428 +426 640 +606 640 +482 640 +640 426 +640 480 +434 640 +426 640 +640 426 +375 500 +640 426 +640 361 +480 640 +640 400 +500 375 +484 640 +640 412 +640 427 +640 433 +612 612 +448 302 +640 480 +480 640 +640 440 +314 500 +640 392 +640 480 +474 640 +480 640 +640 574 +640 425 +640 427 +640 457 +640 425 +640 428 +640 480 +640 480 +640 479 +640 427 +500 375 +640 539 +480 640 +640 480 +480 640 +428 640 +480 640 +640 480 +640 480 +640 480 +640 480 +480 640 +480 640 +500 375 +640 480 +640 480 +640 429 +640 424 +500 375 +383 640 +640 480 +500 335 +640 480 +500 375 +384 640 +612 612 +640 480 +640 480 +640 480 +640 480 +419 640 +640 512 +400 300 +639 640 +640 427 +640 480 +424 640 +427 640 +640 480 +480 640 +426 640 +640 427 +640 427 +640 623 +640 521 +375 500 +640 426 +640 426 +640 427 +640 426 +500 306 +500 423 +640 428 +640 431 +640 427 +640 427 +640 634 +640 480 +640 378 +500 375 +640 427 +640 427 +500 370 +427 640 +640 427 +640 429 +640 427 +640 480 +640 424 +640 426 +640 480 +640 480 +426 640 +640 428 +640 480 +640 415 +640 427 +640 427 +640 480 +480 640 +640 427 +640 478 +480 640 +640 427 +500 333 +640 427 +640 486 +428 640 +640 424 +640 426 +640 480 +640 426 +640 480 +640 480 +419 500 +640 360 +427 640 +640 427 +640 422 +640 480 +640 480 +500 334 +425 640 +512 640 +640 427 +640 480 +480 640 +426 640 +640 480 +640 480 +500 375 +393 640 +640 425 +640 583 +640 500 +640 480 +535 640 +640 480 +640 480 +512 640 +426 640 +640 426 +375 500 +480 640 +640 480 +427 640 +640 427 +431 640 +640 427 +640 427 +375 500 +640 427 +640 429 +640 457 +640 383 +640 428 +640 521 +640 480 +640 427 +428 640 +640 427 +480 640 +640 424 +640 480 +640 640 +640 361 +640 427 +640 480 +500 377 +640 360 +640 428 +640 512 +640 424 +480 640 +640 480 +640 426 +640 427 +640 465 +640 480 +424 640 +640 427 +640 360 +640 611 +453 640 +427 640 +640 426 +375 500 +640 480 +640 426 +480 640 +612 612 +640 429 +375 500 +640 359 +640 640 +427 640 +500 333 +480 640 +612 612 +375 500 +274 500 +640 478 +640 428 +337 500 +640 454 +426 640 +320 240 +480 640 +486 466 +640 480 +575 432 +640 480 +640 574 +500 375 +469 640 +500 332 +333 500 +426 640 +640 480 +640 426 +640 427 +640 360 +640 427 +640 480 +500 375 +640 427 +500 358 +640 457 +428 640 +529 640 +512 640 +500 333 +640 383 +640 480 +640 457 +512 640 +640 427 +640 480 +640 423 +640 480 +640 427 +518 640 +480 640 +333 500 +640 428 +640 480 +640 426 +640 360 +480 640 +640 640 +500 375 +640 481 +480 640 +640 480 +640 427 +640 480 +640 413 +640 480 +428 640 +640 480 +640 428 +480 640 +494 640 +640 360 +640 480 +480 640 +424 640 +614 640 +500 300 +640 480 +640 599 +640 480 +640 427 +640 426 +640 463 +427 640 +640 480 +640 426 +640 427 +462 640 +640 480 +640 478 +640 426 +500 246 +427 640 +640 428 +640 360 +412 500 +640 425 +500 375 +500 375 +640 426 +640 480 +640 443 +640 480 +640 427 +640 427 +640 429 +640 361 +640 427 +426 640 +640 480 +636 640 +500 375 +640 427 +640 425 +640 435 +640 428 +640 428 +640 427 +480 640 +640 427 +640 480 +640 427 +640 501 +640 517 +640 480 +626 640 +640 359 +640 425 +640 429 +640 480 +640 423 +640 480 +640 424 +477 640 +640 427 +640 427 +640 480 +640 480 +640 425 +640 427 +500 373 +500 375 +640 480 +640 428 +640 633 +640 480 +640 427 +640 457 +640 480 +640 543 +640 480 +640 496 +640 287 +640 480 +480 640 +640 480 +640 480 +640 639 +640 446 +640 480 +500 375 +640 480 +640 480 +640 480 +500 375 +640 480 +640 427 +640 425 +640 428 +640 426 +640 480 +640 431 +640 427 +640 480 +640 440 +640 480 +640 480 +480 640 +640 480 +427 640 +640 489 +425 640 +640 427 +640 480 +640 480 +640 455 +640 359 +500 375 +480 640 +640 419 +480 640 +427 640 +640 480 +640 425 +640 425 +640 480 +336 500 +640 329 +640 480 +640 427 +640 480 +478 640 +612 612 +480 640 +501 640 +640 426 +427 640 +500 375 +640 427 +500 358 +425 640 +640 480 +640 480 +500 375 +640 412 +640 430 +567 640 +375 500 +476 640 +640 426 +612 612 +500 400 +426 640 +479 640 +480 640 +640 480 +480 640 +500 298 +640 480 +640 478 +640 480 +640 576 +426 640 +478 640 +640 640 +500 375 +640 483 +640 640 +424 640 +480 640 +480 640 +640 425 +640 427 +640 480 +640 480 +442 640 +500 375 +640 427 +640 480 +640 480 +640 480 +427 640 +640 426 +400 312 +640 480 +500 375 +480 640 +640 478 +640 426 +480 640 +640 480 +640 480 +640 480 +500 375 +426 640 +612 612 +640 478 +640 640 +335 500 +640 427 +640 426 +426 640 +640 427 +333 500 +640 449 +375 500 +640 480 +640 480 +427 640 +640 428 +640 480 +640 480 +640 480 +612 612 +359 640 +640 478 +640 427 +640 425 +640 426 +428 640 +640 388 +640 480 +480 640 +480 640 +640 427 +640 427 +640 480 +480 640 +640 427 +427 640 +640 311 +640 475 +500 333 +427 640 +640 429 +480 640 +426 640 +640 454 +640 480 +640 426 +571 640 +640 480 +427 640 +640 640 +640 480 +428 640 +640 448 +480 640 +640 428 +640 480 +640 480 +640 427 +480 640 +480 640 +500 375 +640 427 +640 480 +640 464 +500 485 +640 424 +640 480 +640 491 +480 640 +500 404 +640 640 +480 640 +640 427 +640 427 +480 640 +640 480 +640 480 +560 560 +480 640 +640 360 +640 457 +640 480 +612 612 +640 640 +612 612 +640 109 +500 245 +640 427 +640 425 +640 424 +640 480 +612 612 +640 400 +640 427 +500 333 +640 427 +640 424 +426 640 +640 397 +479 640 +640 425 +640 480 +428 640 +640 491 +427 640 +640 480 +492 500 +640 480 +606 640 +640 480 +640 482 +640 427 +333 500 +640 425 +640 424 +375 500 +640 427 +640 360 +640 480 +640 432 +640 457 +640 480 +640 480 +640 547 +640 455 +640 427 +640 479 +640 423 +612 612 +640 427 +500 375 +640 480 +640 427 +640 426 +500 500 +640 428 +640 427 +640 426 +640 425 +480 640 +640 426 +640 427 +640 427 +640 461 +428 640 +640 425 +640 427 +640 429 +640 480 +640 427 +500 281 +407 640 +383 640 +418 640 +500 332 +337 500 +640 547 +500 395 +640 480 +640 361 +612 612 +640 554 +640 427 +466 640 +612 612 +500 369 +640 427 +640 480 +640 480 +640 427 +500 375 +640 480 +640 426 +640 480 +500 375 +640 478 +640 480 +480 640 +579 640 +125 166 +640 426 +640 428 +556 640 +480 640 +634 640 +640 429 +640 480 +640 480 +640 424 +503 640 +480 640 +640 427 +640 360 +640 427 +640 480 +640 480 +640 480 +500 375 +640 427 +600 400 +640 409 +640 427 +640 512 +640 480 +375 500 +640 427 +640 480 +640 427 +640 426 +640 427 +409 640 +640 640 +640 428 +640 480 +640 480 +640 427 +500 333 +480 640 +427 640 +640 640 +425 640 +403 640 +640 427 +612 612 +360 270 +640 427 +640 480 +640 429 +640 427 +425 640 +640 425 +640 480 +576 640 +640 427 +480 360 +458 500 +640 478 +480 640 +640 479 +640 427 +640 480 +640 425 +640 504 +500 295 +375 500 +640 427 +640 399 +500 375 +640 425 +354 500 +640 427 +640 429 +640 479 +640 484 +480 640 +640 427 +500 375 +481 640 +640 407 +480 640 +432 640 +640 480 +500 375 +640 480 +640 514 +640 480 +640 428 +375 500 +640 480 +640 427 +640 480 +640 426 +640 480 +503 640 +640 427 +640 381 +640 480 +375 500 +500 348 +600 600 +640 427 +500 375 +640 426 +500 375 +640 427 +426 640 +640 480 +640 427 +640 428 +640 440 +640 360 +427 640 +640 426 +375 500 +480 640 +427 640 +640 427 +640 353 +500 355 +331 500 +640 480 +427 640 +640 426 +640 444 +492 640 +640 480 +640 421 +640 480 +480 640 +640 480 +640 428 +640 427 +500 333 +640 480 +640 426 +480 640 +480 640 +640 491 +328 500 +640 638 +640 480 +640 474 +640 426 +640 427 +434 640 +427 640 +375 500 +640 480 +640 427 +457 640 +640 426 +375 500 +640 426 +427 640 +640 426 +640 480 +640 426 +640 426 +640 428 +640 480 +640 427 +640 436 +640 426 +480 640 +640 480 +640 480 +640 427 +500 332 +640 401 +500 375 +640 427 +640 428 +517 640 +500 333 +640 480 +640 425 +500 375 +480 640 +640 480 +425 640 +640 426 +640 424 +640 640 +310 640 +640 425 +640 518 +500 375 +612 612 +640 480 +480 640 +640 424 +640 427 +640 480 +428 640 +500 375 +640 427 +640 480 +640 425 +480 640 +480 640 +640 427 +640 427 +640 428 +480 640 +640 480 +640 480 +309 500 +640 480 +640 457 +640 480 +640 480 +640 480 +640 424 +640 480 +640 633 +425 640 +612 612 +640 427 +500 375 +480 640 +640 504 +640 455 +640 480 +324 500 +640 480 +640 426 +640 427 +500 332 +640 408 +640 480 +640 480 +640 427 +640 427 +500 375 +640 480 +640 428 +640 426 +612 612 +640 414 +640 518 +640 359 +640 424 +480 640 +640 480 +500 334 +640 463 +640 412 +500 332 +640 426 +640 427 +640 480 +640 480 +426 640 +500 400 +480 640 +500 375 +448 299 +426 640 +427 640 +500 418 +640 480 +640 427 +640 426 +640 480 +334 500 +640 427 +640 478 +500 333 +500 375 +640 427 +640 435 +640 480 +500 332 +500 379 +640 425 +640 480 +640 480 +640 484 +512 640 +640 480 +480 640 +375 500 +640 426 +640 379 +640 484 +640 426 +640 427 +640 426 +480 640 +333 500 +640 461 +426 640 +640 480 +640 425 +427 640 +500 441 +427 640 +333 500 +640 223 +612 612 +640 480 +500 332 +640 480 +427 640 +640 480 +640 426 +480 640 +612 612 +480 640 +640 428 +640 480 +640 425 +640 480 +640 427 +640 480 +640 426 +640 480 +640 427 +640 496 +640 480 +640 471 +500 375 +640 480 +640 427 +640 480 +427 640 +640 427 +640 427 +640 427 +549 640 +640 640 +640 480 +640 329 +640 480 +640 427 +640 471 +640 480 +640 425 +500 375 +640 483 +375 500 +640 480 +640 427 +640 480 +640 425 +480 640 +640 426 +640 360 +480 640 +640 427 +427 640 +640 383 +640 427 +428 640 +640 427 +600 400 +640 506 +640 640 +640 477 +640 384 +500 333 +640 480 +419 640 +640 480 +640 480 +640 361 +612 612 +480 640 +640 425 +640 359 +634 640 +640 427 +640 427 +500 326 +427 640 +640 426 +375 500 +640 480 +640 480 +640 640 +480 640 +640 480 +640 633 +640 480 +480 640 +640 480 +640 480 +640 480 +640 360 +500 375 +480 640 +640 480 +640 640 +625 640 +640 481 +640 425 +640 425 +565 640 +480 640 +640 427 +426 640 +461 640 +640 480 +640 480 +448 500 +426 640 +375 500 +427 640 +500 375 +640 483 +640 359 +640 475 +640 480 +640 279 +640 480 +480 640 +640 424 +333 500 +612 612 +500 375 +500 358 +640 428 +640 480 +640 480 +640 425 +640 480 +467 640 +640 480 +640 457 +480 640 +640 611 +500 281 +612 612 +640 427 +640 421 +640 480 +480 640 +426 640 +640 640 +640 480 +640 431 +640 480 +640 426 +640 480 +500 500 +640 426 +500 376 +640 360 +410 270 +640 427 +426 640 +470 640 +640 480 +640 444 +332 500 +640 480 +507 640 +480 640 +640 424 +640 480 +427 640 +640 480 +640 480 +500 335 +640 480 +640 427 +640 508 +640 433 +640 466 +499 500 +640 640 +480 640 +640 264 +537 640 +640 480 +640 425 +482 640 +640 533 +640 394 +480 640 +640 359 +640 427 +500 332 +480 640 +640 426 +640 558 +640 425 +640 427 +640 427 +427 640 +427 640 +500 376 +640 428 +640 640 +640 480 +425 640 +640 424 +640 394 +375 500 +640 426 +640 425 +640 480 +640 427 +500 375 +640 318 +640 480 +640 427 +640 427 +640 427 +640 640 +640 424 +640 457 +500 332 +640 480 +640 457 +640 480 +640 432 +640 480 +640 480 +640 480 +612 612 +500 333 +640 480 +640 461 +428 640 +476 500 +640 480 +500 350 +427 640 +640 427 +640 480 +426 640 +480 640 +427 640 +640 480 +640 480 +640 427 +640 480 +640 392 +640 512 +426 640 +500 376 +640 425 +640 426 +640 480 +640 427 +640 480 +640 360 +640 481 +640 460 +640 427 +640 428 +640 427 +640 427 +640 480 +640 480 +640 427 +500 414 +400 300 +478 640 +640 521 +640 426 +640 425 +640 443 +640 427 +448 640 +500 375 +480 640 +640 427 +500 332 +424 640 +480 640 +640 406 +640 426 +359 640 +500 333 +480 640 +640 480 +640 483 +640 426 +640 426 +640 426 +640 424 +640 541 +640 426 +640 480 +500 375 +500 375 +427 640 +640 420 +640 480 +640 427 +612 612 +427 640 +332 500 +640 427 +640 480 +640 516 +640 480 +483 640 +426 640 +640 427 +640 428 +511 640 +640 480 +640 480 +425 640 +640 426 +640 427 +500 375 +500 376 +640 480 +480 640 +640 480 +640 480 +640 480 +640 427 +640 480 +640 480 +426 640 +640 480 +640 425 +612 612 +640 427 +640 427 +640 427 +640 480 +480 640 +426 640 +427 640 +640 427 +500 375 +640 360 +480 640 +640 428 +493 640 +640 480 +478 640 +640 425 +500 375 +640 426 +375 500 +640 480 +501 640 +640 427 +640 361 +640 640 +640 544 +640 425 +640 428 +500 375 +640 425 +427 640 +333 500 +640 428 +640 427 +640 480 +500 332 +640 478 +640 480 +464 640 +500 375 +640 427 +640 427 +480 640 +640 161 +640 480 +640 640 +640 480 +640 427 +640 480 +640 480 +640 480 +640 480 +612 612 +500 375 +640 427 +640 458 +640 425 +640 409 +640 509 +640 460 +640 427 +640 412 +418 500 +640 221 +640 480 +640 427 +428 640 +640 427 +640 549 +500 375 +640 291 +640 426 +480 640 +640 428 +640 425 +640 428 +640 427 +500 375 +640 425 +640 480 +640 480 +480 640 +640 346 +375 500 +423 640 +640 480 +596 640 +640 427 +640 427 +593 640 +640 493 +640 479 +640 480 +640 479 +500 375 +640 426 +300 400 +640 480 +500 375 +640 424 +480 640 +640 429 +456 640 +375 500 +640 426 +504 640 +640 480 +640 456 +640 492 +500 375 +640 471 +480 640 +480 640 +640 359 +640 480 +640 427 +426 640 +375 500 +640 480 +500 382 +640 480 +427 640 +640 480 +427 640 +640 480 +640 429 +640 480 +640 480 +640 424 +640 480 +640 480 +640 428 +500 334 +640 480 +640 480 +480 640 +640 507 +640 478 +640 460 +640 426 +640 403 +480 640 +640 427 +640 427 +427 640 +640 427 +640 416 +427 640 +300 225 +640 423 +332 500 +640 458 +500 357 +640 480 +612 612 +640 383 +640 350 +640 480 +309 640 +640 480 +640 426 +640 511 +459 640 +549 640 +640 428 +640 480 +640 480 +426 640 +640 384 +640 425 +640 444 +640 426 +640 480 +640 480 +480 640 +640 480 +640 480 +640 427 +640 427 +640 416 +640 479 +500 375 +640 480 +640 480 +640 480 +640 360 +640 402 +481 640 +640 480 +334 500 +640 480 +640 480 +640 480 +640 427 +640 360 +640 427 +480 640 +612 612 +640 427 +640 428 +640 427 +550 640 +612 612 +640 427 +375 500 +500 333 +500 375 +480 640 +640 427 +640 428 +640 480 +427 640 +640 426 +640 480 +478 640 +480 640 +640 480 +640 480 +640 428 +640 480 +640 480 +640 512 +640 480 +500 375 +640 427 +640 428 +480 640 +640 428 +576 384 +640 480 +640 480 +640 480 +423 640 +640 380 +640 436 +334 500 +427 640 +640 427 +640 480 +426 640 +480 640 +640 453 +375 500 +640 426 +408 640 +640 428 +640 424 +427 640 +640 484 +598 415 +640 425 +640 427 +640 480 +640 430 +640 427 +640 480 +640 480 +500 375 +640 428 +640 427 +426 640 +640 438 +450 640 +640 389 +482 640 +480 640 +640 442 +640 448 +500 334 +640 640 +640 421 +500 333 +628 640 +500 392 +640 480 +500 375 +500 333 +426 640 +640 425 +640 427 +640 427 +640 427 +500 375 +628 640 +640 480 +333 500 +640 480 +500 313 +640 427 +640 480 +640 426 +640 480 +640 424 +640 393 +640 426 +640 480 +640 427 +612 612 +500 375 +500 333 +500 375 +480 640 +640 427 +427 640 +480 640 +640 427 +500 250 +640 426 +640 480 +640 480 +640 427 +440 640 +426 640 +480 640 +640 480 +425 283 +640 401 +640 480 +640 427 +640 423 +425 640 +493 640 +640 430 +640 427 +640 406 +375 500 +640 504 +612 612 +500 375 +640 480 +640 458 +640 365 +640 428 +375 500 +640 480 +500 375 +640 480 +428 640 +640 408 +640 480 +500 375 +640 480 +606 400 +640 425 +428 640 +480 640 +640 480 +427 640 +640 426 +640 424 +375 500 +640 425 +640 486 +640 427 +500 430 +640 640 +640 640 +640 480 +640 543 +640 480 +640 480 +640 427 +640 427 +640 640 +640 427 +640 426 +640 541 +640 461 +640 427 +640 480 +640 427 +640 612 +612 612 +640 536 +427 640 +640 427 +640 459 +427 640 +640 418 +500 375 +358 640 +333 500 +427 640 +640 427 +640 427 +410 423 +427 640 +640 425 +640 360 +640 479 +640 480 +640 425 +640 427 +640 426 +640 427 +554 640 +640 414 +640 480 +640 480 +431 640 +640 480 +480 640 +640 446 +427 640 +640 373 +612 612 +640 480 +640 360 +409 640 +427 640 +640 480 +640 480 +426 640 +640 480 +640 412 +640 380 +640 426 +332 500 +640 426 +425 640 +500 375 +640 480 +500 333 +640 358 +640 427 +640 427 +427 640 +480 640 +612 612 +500 281 +640 427 +640 365 +500 375 +640 480 +640 480 +426 640 +471 640 +640 426 +640 480 +480 640 +500 375 +480 640 +480 640 +640 427 +640 427 +480 640 +640 426 +640 427 +640 480 +640 480 +640 428 +640 480 +640 480 +425 640 +640 494 +640 427 +640 480 +640 480 +640 480 +640 427 +640 426 +640 480 +640 426 +426 640 +640 480 +640 360 +480 640 +640 440 +640 480 +640 425 +500 375 +640 427 +457 640 +640 478 +640 427 +640 427 +640 427 +640 480 +553 640 +426 640 +640 433 +425 640 +640 472 +427 640 +427 640 +640 424 +640 427 +500 400 +640 456 +640 427 +500 332 +640 640 +428 640 +426 640 +480 640 +612 612 +640 427 +640 427 +606 640 +640 575 +640 426 +640 480 +640 480 +640 426 +640 480 +640 426 +640 480 +640 423 +640 480 +640 427 +640 480 +640 480 +352 500 +640 480 +640 360 +640 479 +640 413 +290 438 +427 640 +640 480 +375 500 +425 640 +640 480 +640 514 +640 360 +640 426 +480 640 +640 640 +640 370 +640 480 +500 434 +500 375 +427 640 +480 640 +640 427 +640 549 +640 426 +640 426 +640 427 +640 455 +640 424 +500 375 +427 640 +640 480 +640 425 +600 600 +426 640 +640 519 +640 480 +640 427 +640 480 +334 500 +640 355 +640 427 +500 334 +429 640 +640 480 +640 480 +500 375 +640 426 +331 500 +640 449 +500 375 +640 426 +640 424 +640 480 +640 427 +640 480 +640 460 +640 629 +428 640 +640 480 +640 448 +480 640 +500 332 +640 425 +428 640 +461 640 +640 480 +500 375 +640 423 +640 368 +332 500 +480 640 +640 432 +640 640 +640 427 +612 612 +333 500 +640 480 +640 480 +385 500 +500 281 +512 640 +640 526 +640 429 +480 640 +500 375 +640 426 +480 640 +480 640 +607 640 +640 479 +427 640 +640 431 +640 480 +640 480 +640 425 +640 480 +640 426 +640 480 +640 426 +640 480 +640 640 +640 426 +480 640 +427 640 +640 480 +640 427 +640 480 +640 480 +640 424 +640 480 +640 424 +640 480 +640 427 +640 364 +640 480 +640 427 +640 456 +640 427 +281 500 +480 640 +320 212 +480 640 +640 429 +640 428 +640 364 +640 418 +640 427 +640 478 +640 439 +640 426 +640 426 +640 427 +640 480 +500 446 +640 480 +640 480 +640 427 +478 640 +640 426 +640 386 +640 433 +375 500 +640 480 +500 333 +640 424 +480 640 +500 375 +640 480 +429 640 +500 375 +500 358 +640 480 +640 458 +480 640 +640 444 +640 481 +640 480 +487 500 +640 480 +480 640 +355 500 +640 360 +425 640 +333 500 +640 480 +375 500 +640 427 +640 426 +640 563 +500 371 +640 454 +640 425 +640 426 +640 427 +640 480 +500 334 +428 640 +640 481 +640 480 +640 480 +500 396 +640 440 +426 640 +438 640 +427 640 +456 640 +640 427 +640 480 +640 480 +640 427 +640 448 +500 332 +640 424 +640 480 +533 640 +375 500 +640 480 +640 439 +428 640 +612 612 +500 375 +640 480 +640 480 +480 640 +500 398 +640 437 +640 481 +640 480 +640 480 +640 480 +640 427 +458 640 +458 640 +640 427 +640 386 +500 375 +640 480 +480 640 +640 427 +640 480 +640 500 +640 437 +640 463 +427 640 +640 640 +612 612 +640 427 +612 612 +612 612 +640 428 +640 425 +640 463 +355 500 +640 480 +500 279 +640 424 +500 375 +640 425 +500 320 +640 410 +640 480 +640 427 +640 427 +640 480 +292 500 +640 427 +640 426 +480 640 +500 375 +500 333 +640 480 +640 427 +640 427 +500 375 +640 427 +500 307 +640 360 +640 428 +640 480 +640 359 +640 423 +640 424 +640 480 +640 480 +640 424 +640 427 +640 449 +640 383 +640 640 +640 426 +640 517 +426 640 +500 333 +426 640 +640 478 +640 426 +640 478 +443 640 +640 425 +426 640 +427 640 +480 640 +375 500 +640 480 +640 427 +375 500 +640 165 +480 640 +640 427 +640 480 +640 427 +640 480 +640 379 +640 425 +640 480 +640 389 +640 427 +640 427 +396 640 +375 500 +441 640 +640 480 +640 480 +640 480 +640 478 +289 500 +640 480 +640 435 +640 426 +640 480 +640 288 +500 333 +600 451 +640 480 +480 640 +640 480 +500 375 +640 640 +640 480 +640 427 +425 640 +640 427 +640 427 +600 252 +640 424 +640 640 +640 426 +640 427 +640 426 +500 440 +424 640 +480 640 +640 480 +424 640 +640 480 +640 427 +640 480 +640 427 +640 480 +436 640 +640 427 +512 640 +640 181 +640 426 +427 640 +500 375 +612 612 +640 512 +640 496 +640 427 +640 388 +640 480 +427 640 +500 375 +640 428 +640 481 +640 632 +640 480 +640 480 +640 512 +481 640 +640 480 +640 425 +427 640 +640 428 +480 320 +333 500 +640 427 +640 480 +640 428 +425 640 +480 640 +640 408 +640 480 +640 427 +337 640 +500 375 +500 333 +500 375 +640 480 +640 413 +640 424 +640 480 +640 426 +640 588 +480 640 +500 333 +427 640 +640 425 +500 375 +500 281 +480 245 +373 299 +640 480 +427 640 +640 427 +640 431 +640 425 +500 375 +603 640 +479 640 +612 612 +640 427 +640 488 +640 480 +640 333 +640 428 +457 640 +640 480 +640 427 +640 480 +500 375 +427 640 +500 375 +469 640 +640 429 +480 640 +640 425 +427 640 +640 424 +640 482 +640 427 +640 423 +640 480 +426 640 +335 500 +640 559 +640 428 +479 640 +640 480 +640 426 +640 480 +640 480 +640 426 +640 468 +480 640 +375 500 +640 480 +640 480 +480 640 +640 427 +640 427 +375 500 +640 326 +640 480 +480 640 +640 480 +521 640 +640 480 +640 426 +640 480 +640 476 +612 612 +500 375 +428 640 +640 480 +640 424 +480 640 +640 427 +640 428 +640 425 +640 427 +500 375 +640 424 +640 481 +640 480 +640 427 +640 423 +640 425 +534 640 +640 480 +393 640 +640 425 +640 480 +640 480 +480 640 +640 419 +640 458 +640 483 +640 426 +500 375 +640 361 +640 480 +640 430 +640 426 +640 426 +640 480 +500 375 +640 480 +640 480 +427 640 +500 333 +427 640 +640 476 +640 426 +640 480 +640 429 +640 426 +640 433 +479 640 +640 427 +400 640 +427 640 +640 480 +640 428 +640 427 +480 640 +500 375 +640 421 +640 427 +500 315 +500 333 +640 427 +500 375 +480 640 +640 426 +612 612 +640 425 +333 500 +500 336 +640 424 +612 612 +640 426 +640 480 +427 640 +640 360 +640 427 +640 427 +427 640 +640 275 +419 640 +640 480 +500 375 +640 428 +500 333 +480 640 +640 480 +427 640 +640 480 +369 640 +640 414 +640 480 +640 427 +375 500 +454 640 +560 640 +640 427 +640 480 +640 425 +640 457 +640 479 +480 640 +424 640 +640 425 +640 428 +640 480 +480 640 +640 426 +640 480 +640 427 +427 640 +640 427 +459 640 +640 480 +640 425 +375 500 +640 466 +640 480 +500 347 +640 426 +640 448 +458 640 +375 500 +436 640 +640 360 +391 640 +460 500 +640 427 +500 375 +640 480 +500 375 +500 332 +317 500 +639 640 +512 640 +640 427 +428 640 +473 640 +480 640 +427 640 +640 427 +640 480 +640 478 +426 640 +480 640 +640 434 +640 479 +640 480 +640 480 +500 341 +640 480 +640 480 +500 375 +640 427 +640 425 +395 640 +640 480 +640 375 +640 480 +640 428 +640 560 +640 640 +640 480 +500 333 +640 395 +640 448 +510 640 +640 424 +500 334 +640 515 +480 640 +640 480 +500 375 +405 640 +640 416 +640 513 +640 466 +471 640 +640 398 +640 480 +450 338 +640 433 +640 427 +640 480 +640 428 +640 486 +640 478 +640 427 +640 438 +427 640 +640 427 +640 480 +500 470 +480 640 +428 640 +400 640 +640 375 +500 375 +333 500 +640 424 +640 427 +640 427 +640 480 +500 375 +640 400 +640 443 +500 376 +640 527 +640 480 +480 640 +500 333 +640 480 +640 426 +640 358 +480 640 +640 436 +640 480 +500 333 +610 427 +640 480 +425 640 +375 500 +640 427 +640 640 +640 511 +640 426 +612 612 +640 478 +640 480 +640 422 +640 428 +640 480 +448 336 +500 375 +640 480 +640 473 +640 478 +640 427 +427 640 +500 375 +640 480 +640 426 +375 500 +640 480 +424 640 +480 640 +640 425 +640 480 +640 480 +640 426 +640 427 +500 375 +640 384 +640 480 +640 522 +640 428 +640 360 +640 549 +640 427 +640 427 +480 640 +640 421 +500 331 +640 480 +500 315 +640 480 +640 427 +480 640 +640 493 +640 480 +640 359 +480 640 +640 427 +427 640 +640 361 +640 480 +640 480 +500 327 +640 427 +640 453 +426 640 +480 640 +640 427 +370 500 +640 536 +500 403 +640 480 +150 200 +640 640 +448 600 +481 640 +640 427 +480 640 +427 640 +640 320 +500 301 +640 427 +480 640 +612 612 +640 480 +640 428 +640 427 +640 458 +375 500 +640 427 +640 480 +500 333 +640 429 +480 640 +640 478 +640 480 +640 480 +640 480 +640 480 +480 640 +500 375 +640 427 +640 427 +640 426 +640 425 +640 427 +640 640 +500 375 +612 612 +500 375 +480 640 +640 428 +425 251 +640 206 +640 424 +480 640 +640 473 +420 169 +640 480 +640 427 +640 480 +640 429 +640 452 +481 640 +427 640 +621 640 +425 640 +427 640 +640 399 +640 467 +640 456 +640 428 +427 640 +640 480 +640 427 +500 375 +640 425 +640 330 +640 640 +640 427 +640 480 +640 442 +640 480 +386 500 +640 426 +612 612 +640 511 +640 428 +640 426 +500 375 +640 383 +640 427 +427 640 +464 500 +640 427 +640 512 +633 640 +640 218 +500 375 +640 427 +640 480 +500 375 +640 606 +640 480 +640 457 +640 429 +640 481 +500 397 +640 480 +640 423 +480 640 +640 480 +640 426 +640 427 +428 640 +480 640 +500 339 +500 375 +480 640 +640 426 +640 480 +640 466 +427 640 +500 269 +640 429 +640 427 +426 640 +429 640 +640 480 +640 424 +640 427 +640 432 +640 480 +640 426 +640 481 +480 640 +640 426 +640 480 +640 480 +500 333 +426 640 +500 333 +640 480 +375 500 +480 640 +640 427 +427 640 +640 427 +640 480 +640 512 +640 484 +612 612 +640 480 +407 640 +640 554 +640 427 +640 429 +640 480 +640 425 +612 612 +640 425 +640 478 +603 640 +480 640 +640 418 +500 375 +640 385 +480 640 +640 480 +500 375 +640 478 +640 480 +428 640 +480 640 +336 500 +480 640 +640 428 +500 375 +640 629 +640 459 +640 425 +480 640 +640 480 +640 461 +640 480 +640 480 +640 480 +640 480 +500 375 +500 375 +408 500 +480 640 +640 528 +640 480 +640 428 +480 640 +640 617 +425 640 +500 376 +500 424 +500 333 +333 500 +640 426 +640 449 +640 427 +640 427 +640 480 +640 481 +640 480 +640 480 +640 480 +640 480 +640 480 +500 333 +640 359 +480 640 +447 640 +451 640 +640 640 +640 376 +479 640 +640 427 +640 427 +500 333 +640 426 +500 375 +640 480 +334 500 +427 640 +640 427 +640 480 +640 420 +612 612 +640 426 +640 480 +640 609 +612 612 +640 480 +640 466 +403 640 +500 336 +640 425 +360 265 +640 480 +640 480 +640 480 +640 476 +640 480 +500 375 +640 480 +640 480 +640 425 +480 640 +640 480 +640 478 +640 480 +640 480 +640 480 +427 640 +500 375 +640 480 +640 426 +640 424 +640 427 +640 472 +640 480 +281 500 +500 333 +640 429 +640 480 +640 434 +500 375 +640 427 +640 640 +640 364 +640 480 +500 500 +640 439 +500 371 +640 640 +424 640 +500 395 +640 480 +427 640 +640 357 +640 480 +640 424 +640 480 +359 640 +640 512 +640 426 +640 480 +640 573 +640 480 +640 427 +426 640 +640 360 +640 426 +640 480 +640 480 +640 425 +640 428 +612 612 +612 612 +640 400 +480 640 +640 480 +427 640 +640 480 +640 627 +640 516 +640 427 +640 427 +640 480 +640 424 +640 427 +500 333 +640 480 +500 375 +500 333 +612 612 +640 480 +480 640 +500 375 +640 480 +640 427 +640 419 +500 375 +640 425 +640 480 +480 640 +640 428 +640 464 +612 612 +640 480 +640 427 +640 480 +489 640 +640 480 +640 459 +427 640 +640 376 +640 427 +640 480 +640 512 +640 427 +640 392 +342 500 +640 480 +640 480 +640 426 +640 480 +640 425 +640 478 +640 480 +640 351 +333 500 +640 427 +640 480 +604 640 +640 480 +512 640 +640 481 +640 480 +500 485 +457 640 +640 480 +640 427 +640 427 +640 427 +640 480 +640 426 +480 640 +480 640 +640 480 +640 480 +480 640 +480 320 +640 334 +500 375 +640 427 +640 480 +423 640 +640 453 +480 640 +586 640 +640 480 +500 329 +640 480 +375 500 +640 476 +500 311 +640 458 +427 640 +452 640 +500 373 +640 640 +333 500 +612 612 +640 480 +640 428 +640 427 +500 333 +640 426 +426 640 +640 425 +426 640 +640 427 +421 640 +640 640 +500 336 +640 480 +335 500 +640 480 +333 500 +640 428 +406 640 +640 462 +640 480 +640 480 +640 428 +640 427 +640 427 +640 480 +321 640 +612 612 +612 612 +500 375 +480 640 +640 480 +640 425 +612 612 +480 640 +640 427 +390 640 +426 640 +640 427 +640 480 +500 375 +640 480 +640 402 +500 375 +480 640 +640 480 +640 427 +640 480 +640 429 +640 427 +640 425 +640 480 +640 428 +371 640 +640 486 +640 480 +640 480 +427 640 +640 428 +480 640 +500 375 +640 480 +640 420 +480 640 +640 427 +640 428 +500 375 +612 612 +640 480 +439 640 +640 474 +640 428 +435 580 +640 640 +480 640 +333 500 +640 480 +427 640 +333 500 +640 480 +640 426 +480 640 +640 306 +640 427 +640 359 +480 640 +424 640 +480 640 +640 427 +640 427 +640 427 +640 480 +640 480 +424 640 +640 480 +640 492 +640 425 +500 375 +486 640 +640 501 +427 640 +500 375 +427 640 +640 427 +446 500 +455 640 +640 426 +640 480 +361 640 +500 334 +427 640 +640 461 +640 427 +640 480 +640 427 +640 480 +500 500 +640 323 +640 428 +640 480 +640 480 +640 340 +640 428 +640 488 +447 500 +500 355 +480 640 +480 360 +480 640 +359 640 +480 640 +640 422 +640 480 +640 433 +640 496 +640 480 +640 425 +425 640 +640 394 +640 427 +640 480 +640 426 +640 480 +640 427 +640 428 +500 400 +480 640 +640 401 +353 500 +640 426 +338 500 +640 427 +480 640 +480 640 +640 426 +428 640 +480 640 +500 333 +640 484 +357 500 +640 480 +640 480 +640 480 +640 426 +375 500 +334 500 +640 480 +427 640 +640 427 +640 360 +640 480 +640 480 +640 480 +640 427 +426 640 +640 512 +640 428 +640 432 +640 426 +640 426 +640 480 +640 427 +426 640 +425 392 +640 476 +640 480 +640 427 +500 375 +375 500 +500 375 +640 426 +500 382 +640 480 +640 640 +480 640 +640 480 +603 640 +640 425 +320 240 +480 640 +480 640 +375 500 +640 471 +427 640 +500 335 +640 480 +640 480 +640 640 +427 640 +640 426 +640 427 +426 640 +640 481 +640 401 +500 375 +482 640 +640 480 +352 288 +640 512 +500 485 +640 498 +640 422 +640 480 +427 640 +427 640 +426 640 +374 500 +500 332 +640 493 +375 500 +640 480 +429 640 +640 470 +640 480 +640 623 +640 361 +500 383 +640 480 +640 425 +640 427 +640 426 +640 359 +424 640 +640 480 +640 480 +640 427 +640 423 +480 640 +640 427 +640 428 +640 427 +438 640 +640 426 +640 480 +640 480 +640 427 +640 427 +500 333 +640 480 +640 480 +640 480 +640 427 +480 640 +640 428 +640 427 +640 427 +640 427 +640 427 +640 427 +640 426 +640 427 +640 425 +640 480 +640 480 +640 427 +640 426 +424 640 +500 375 +640 427 +640 375 +566 640 +640 480 +640 425 +427 640 +640 480 +612 612 +640 480 +640 480 +640 480 +640 427 +424 640 +640 480 +640 480 +640 480 +640 480 +612 612 +427 640 +640 480 +640 640 +480 640 +640 480 +640 480 +640 415 +612 612 +640 425 +640 439 +640 480 +640 512 +640 428 +640 480 +640 427 +640 542 +640 480 +640 461 +640 480 +427 640 +640 480 +426 640 +478 640 +500 375 +332 500 +640 480 +640 427 +640 480 +640 426 +640 575 +640 480 +640 387 +640 426 +640 480 +612 612 +640 428 +351 500 +640 427 +480 640 +640 424 +640 360 +480 640 +480 640 +640 417 +500 380 +640 480 +480 640 +480 640 +640 427 +612 612 +640 480 +500 333 +640 465 +640 426 +640 426 +310 500 +640 480 +640 431 +480 640 +640 480 +500 375 +640 480 +338 409 +640 416 +640 414 +640 427 +640 426 +640 424 +369 640 +640 640 +640 427 +640 427 +640 480 +640 480 +640 427 +640 496 +612 612 +427 640 +427 640 +427 640 +640 394 +640 404 +640 424 +480 640 +640 427 +427 640 +610 406 +640 427 +301 290 +640 427 +640 462 +640 428 +480 640 +640 480 +612 612 +640 480 +640 480 +612 612 +640 480 +500 375 +333 500 +640 427 +640 458 +640 480 +500 335 +640 480 +427 640 +640 480 +333 500 +588 640 +640 478 +480 640 +640 427 +640 427 +427 640 +640 429 +640 480 +640 426 +500 333 +640 480 +640 427 +640 480 +640 480 +640 428 +425 640 +375 500 +640 480 +640 359 +640 480 +640 471 +640 480 +640 427 +640 480 +640 640 +480 640 +640 424 +640 489 +640 494 +480 640 +375 500 +640 427 +480 640 +362 640 +500 375 +480 640 +427 640 +640 480 +640 427 +479 640 +500 375 +426 640 +640 425 +640 428 +640 428 +640 427 +640 426 +640 480 +640 428 +480 640 +640 480 +640 480 +480 640 +640 201 +640 480 +480 640 +640 480 +640 434 +500 375 +640 429 +423 640 +427 640 +640 480 +640 425 +640 409 +640 480 +640 480 +640 433 +640 430 +480 640 +640 435 +640 426 +640 480 +640 360 +500 375 +640 427 +640 461 +640 426 +640 480 +640 480 +640 359 +500 334 +640 480 +640 480 +640 512 +640 343 +640 483 +640 336 +640 426 +640 480 +640 427 +640 424 +640 466 +500 332 +612 612 +640 361 +500 305 +640 465 +640 480 +492 500 +640 480 +640 473 +640 409 +640 480 +640 428 +640 427 +640 486 +465 640 +640 425 +640 496 +640 513 +640 348 +500 500 +640 512 +478 640 +640 480 +640 427 +413 640 +640 419 +640 426 +500 375 +640 428 +640 349 +427 640 +640 430 +640 480 +374 500 +640 481 +500 375 +640 480 +640 427 +640 427 +640 426 +640 426 +640 409 +640 480 +640 480 +500 382 +480 640 +640 425 +640 480 +640 428 +640 480 +480 640 +640 427 +500 333 +640 480 +640 480 +428 640 +640 383 +640 480 +640 600 +640 424 +500 375 +480 640 +640 429 +500 334 +500 375 +640 359 +640 430 +480 640 +640 459 +640 427 +640 294 +375 500 +480 640 +640 481 +640 427 +612 612 +640 425 +640 428 +500 346 +640 427 +640 427 +640 480 +640 480 +640 426 +375 500 +480 640 +427 640 +640 426 +500 333 +375 500 +424 640 +640 429 +640 427 +424 640 +640 425 +640 480 +640 380 +640 419 +640 480 +640 359 +640 464 +640 428 +640 427 +640 427 +481 640 +640 414 +500 373 +640 427 +640 426 +418 640 +640 426 +416 640 +640 480 +640 427 +640 462 +640 480 +640 481 +640 360 +640 359 +427 640 +640 426 +426 640 +640 427 +640 425 +640 482 +481 640 +612 612 +640 424 +524 640 +640 427 +640 427 +640 480 +480 640 +640 439 +640 341 +360 640 +640 429 +640 480 +500 375 +480 640 +640 427 +640 379 +640 424 +480 320 +427 640 +640 360 +640 427 +640 480 +427 640 +640 480 +640 480 +479 640 +640 480 +640 427 +428 640 +640 426 +429 640 +640 425 +640 427 +478 640 +640 480 +640 427 +480 640 +640 530 +640 427 +480 640 +480 640 +640 480 +640 480 +640 426 +425 640 +640 427 +640 480 +640 427 +640 480 +480 640 +640 429 +600 400 +640 428 +426 640 +640 480 +640 480 +427 640 +427 640 +462 640 +360 270 +364 500 +640 640 +612 612 +640 480 +640 480 +480 498 +500 382 +640 427 +612 612 +640 422 +640 426 +500 333 +640 427 +640 561 +640 480 +431 640 +640 480 +640 480 +480 640 +480 640 +640 480 +640 480 +640 432 +640 480 +500 375 +640 480 +640 483 +480 640 +480 640 +480 640 +640 185 +640 424 +640 480 +500 375 +640 480 +480 640 +640 426 +640 427 +427 640 +640 426 +500 476 +426 640 +480 640 +500 273 +480 640 +640 429 +427 640 +500 300 +500 400 +498 640 +640 480 +640 480 +640 480 +640 640 +640 480 +640 426 +375 500 +640 480 +640 425 +427 640 +640 480 +375 500 +640 427 +500 334 +640 429 +427 640 +480 640 +640 427 +640 428 +375 500 +526 640 +500 375 +640 480 +640 480 +640 423 +612 612 +640 452 +640 496 +500 375 +500 375 +383 640 +500 375 +640 427 +612 612 +640 480 +640 480 +612 612 +479 640 +640 430 +640 266 +424 640 +640 480 +640 480 +375 500 +500 333 +565 640 +640 480 +427 640 +500 375 +640 480 +425 640 +640 480 +640 480 +640 427 +640 480 +640 443 +500 583 +640 359 +480 640 +640 479 +640 480 +612 612 +640 427 +478 640 +640 480 +427 640 +640 427 +640 427 +640 427 +640 427 +640 489 +640 640 +640 480 +640 454 +640 360 +500 375 +640 427 +640 360 +640 523 +478 640 +425 640 +640 427 +423 500 +640 427 +425 283 +480 640 +640 376 +500 375 +426 640 +428 640 +640 480 +640 400 +640 427 +640 427 +640 431 +424 640 +640 480 +640 640 +500 333 +490 640 +640 480 +373 640 +640 480 +500 375 +640 426 +640 480 +640 480 +640 480 +640 426 +640 471 +640 426 +640 427 +640 427 +375 500 +640 427 +640 426 +426 640 +640 478 +640 480 +640 397 +480 640 +640 424 +640 428 +427 640 +480 640 +480 640 +640 480 +640 427 +640 480 +640 360 +640 512 +640 436 +640 428 +640 477 +434 640 +640 480 +500 375 +640 348 +640 480 +640 480 +640 480 +500 375 +427 640 +640 426 +424 640 +640 511 +640 433 +640 512 +640 411 +640 427 +640 480 +640 427 +640 427 +640 444 +640 480 +640 480 +640 427 +334 500 +640 354 +640 480 +500 332 +640 480 +640 427 +330 450 +640 427 +427 640 +640 480 +450 394 +480 640 +640 480 +361 640 +640 430 +640 480 +640 469 +640 480 +640 424 +640 429 +640 640 +640 478 +500 446 +375 500 +426 640 +612 612 +491 640 +500 333 +640 480 +640 484 +500 333 +640 480 +640 480 +640 393 +640 480 +640 480 +640 480 +500 375 +500 333 +640 480 +640 480 +500 429 +500 375 +640 480 +384 500 +425 640 +640 427 +640 428 +640 480 +640 480 +640 427 +640 480 +640 480 +640 480 +640 426 +480 640 +428 640 +428 640 +612 612 +427 640 +640 480 +640 428 +427 640 +427 640 +640 439 +640 426 +480 640 +426 640 +640 427 +640 478 +640 426 +640 428 +640 480 +640 427 +640 436 +640 480 +640 383 +640 512 +612 612 +500 334 +640 428 +640 363 +640 426 +640 426 +640 480 +640 427 +640 425 +640 458 +640 480 +640 358 +640 480 +500 333 +640 447 +640 320 +384 640 +640 427 +500 640 +640 428 +640 427 +383 640 +427 640 +427 640 +640 480 +640 363 +640 393 +494 640 +500 331 +640 427 +612 612 +640 480 +640 434 +640 480 +640 427 +500 375 +640 427 +500 375 +640 480 +640 424 +640 480 +640 427 +640 427 +640 483 +640 480 +640 480 +480 640 +640 426 +500 333 +480 640 +640 480 +640 480 +428 640 +500 335 +612 612 +640 480 +559 640 +640 481 +500 375 +431 640 +640 480 +640 425 +640 427 +500 333 +479 640 +640 480 +640 427 +640 480 +640 427 +640 480 +640 425 +640 412 +640 452 +640 480 +640 427 +640 640 +480 640 +640 473 +480 640 +375 500 +640 480 +640 480 +640 480 +640 426 +640 480 +500 335 +640 480 +640 427 +480 640 +451 640 +640 427 +480 640 +640 480 +640 425 +640 426 +640 427 +429 640 +640 429 +426 640 +640 424 +640 480 +640 480 +640 424 +640 452 +640 427 +640 480 +640 480 +640 427 +640 480 +425 640 +640 360 +427 640 +640 425 +640 427 +640 427 +640 344 +640 433 +359 640 +427 640 +500 333 +480 640 +448 640 +640 427 +640 427 +640 426 +640 438 +640 480 +480 640 +640 426 +640 361 +640 500 +640 428 +640 478 +640 480 +500 333 +427 640 +640 428 +640 360 +640 427 +478 640 +332 500 +640 480 +640 427 +640 480 +480 640 +640 427 +498 640 +640 466 +640 474 +333 500 +640 480 +426 640 +640 628 +500 334 +640 427 +640 427 +640 480 +640 427 +640 425 +421 210 +500 333 +640 427 +640 392 +640 428 +640 480 +640 480 +640 480 +640 426 +387 387 +640 493 +640 463 +426 640 +640 480 +480 640 +640 640 +640 426 +640 640 +500 419 +409 640 +640 480 +480 640 +640 480 +640 481 +640 428 +640 426 +640 480 +640 480 +640 516 +375 500 +500 375 +500 375 +480 640 +640 391 +640 480 +480 640 +640 427 +640 480 +427 640 +526 640 +640 425 +640 480 +640 436 +640 508 +612 612 +500 375 +500 333 +640 429 +480 318 +480 640 +480 640 +640 427 +640 428 +640 467 +500 375 +640 428 +427 640 +640 449 +323 500 +640 437 +480 640 +640 480 +640 478 +480 640 +500 336 +640 480 +425 640 +612 612 +478 640 +612 612 +426 640 +640 604 +640 483 +640 478 +640 431 +640 481 +640 480 +425 640 +640 424 +557 640 +480 640 +640 456 +640 480 +640 424 +480 640 +480 640 +640 427 +320 240 +640 428 +640 640 +640 259 +640 360 +640 427 +640 494 +640 480 +427 640 +427 640 +360 360 +480 640 +640 480 +640 480 +640 463 +640 480 +427 640 +640 425 +640 424 +640 480 +640 640 +640 428 +640 425 +640 425 +640 480 +640 480 +640 480 +640 424 +640 440 +640 480 +640 480 +640 426 +500 393 +640 480 +640 480 +480 640 +640 430 +480 640 +500 335 +500 333 +481 640 +500 375 +640 427 +640 564 +640 480 +426 640 +640 426 +640 480 +463 640 +640 480 +640 480 +612 612 +500 375 +640 427 +640 496 +640 427 +478 640 +640 427 +640 427 +375 500 +640 427 +500 375 +359 640 +640 351 +640 421 +480 640 +640 426 +640 427 +640 428 +640 639 +640 480 +640 378 +480 640 +640 424 +640 427 +480 640 +480 640 +500 373 +427 640 +640 480 +640 480 +500 375 +640 480 +640 432 +640 506 +640 427 +640 480 +480 640 +640 480 +480 640 +640 480 +640 487 +640 481 +480 640 +640 427 +640 426 +640 524 +500 333 +426 640 +640 480 +450 640 +640 528 +640 532 +640 463 +640 416 +640 480 +640 480 +640 468 +335 500 +640 480 +375 500 +614 640 +640 427 +640 479 +640 452 +640 427 +500 375 +640 427 +500 417 +640 481 +375 500 +640 480 +640 480 +640 480 +640 427 +506 640 +640 426 +640 480 +640 428 +480 640 +640 480 +640 480 +640 480 +640 427 +500 392 +640 504 +640 427 +480 640 +640 427 +640 428 +480 640 +640 426 +640 481 +640 434 +640 480 +375 500 +640 480 +640 480 +480 640 +640 451 +640 426 +640 480 +640 480 +640 640 +446 640 +640 426 +640 360 +500 333 +500 394 +640 426 +427 640 +640 427 +640 640 +640 480 +640 427 +640 480 +640 513 +426 640 +500 333 +640 480 +640 480 +480 640 +640 426 +480 640 +500 333 +333 500 +640 480 +640 426 +640 427 +640 428 +480 640 +640 426 +640 480 +640 479 +500 368 +415 640 +426 640 +640 426 +526 640 +640 480 +640 480 +500 302 +425 640 +426 640 +640 480 +458 640 +374 500 +630 640 +640 425 +640 480 +427 640 +640 427 +640 480 +640 480 +480 640 +640 480 +640 480 +640 427 +640 480 +640 480 +426 640 +640 424 +534 640 +428 640 +640 427 +500 375 +640 425 +640 496 +640 360 +640 480 +640 428 +640 480 +640 478 +424 640 +640 497 +640 427 +640 480 +640 564 +640 428 +480 640 +640 468 +500 333 +500 333 +640 428 +640 427 +441 640 +427 640 +500 375 +640 481 +640 480 +640 427 +486 640 +640 480 +640 428 +640 426 +612 612 +640 480 +640 427 +640 480 +427 640 +640 418 +332 500 +640 425 +640 480 +640 394 +640 480 +500 374 +500 500 +612 612 +427 640 +425 640 +427 640 +640 480 +640 480 +640 444 +612 612 +640 427 +640 430 +640 426 +500 333 +640 480 +640 426 +612 612 +478 640 +640 426 +394 500 +451 500 +425 640 +640 427 +426 640 +640 424 +424 640 +480 640 +480 640 +640 480 +640 428 +640 504 +640 424 +640 554 +640 480 +428 640 +500 375 +609 640 +640 439 +640 360 +640 561 +480 640 +478 640 +500 375 +481 640 +640 483 +421 640 +640 427 +518 640 +480 640 +640 480 +640 466 +640 394 +426 640 +480 640 +640 491 +640 426 +640 480 +500 375 +427 640 +640 440 +500 375 +480 640 +640 480 +640 502 +427 640 +511 640 +612 612 +640 439 +640 428 +640 426 +640 427 +425 640 +640 427 +469 640 +640 427 +480 640 +480 640 +640 426 +500 333 +640 404 +447 500 +640 427 +640 421 +500 334 +512 640 +640 427 +426 640 +640 480 +640 457 +427 640 +440 640 +427 640 +640 480 +426 640 +640 427 +640 426 +500 375 +500 500 +640 429 +640 427 +640 413 +375 500 +640 427 +480 640 +640 639 +640 480 +500 375 +640 480 +426 640 +427 640 +427 640 +640 427 +334 500 +640 428 +640 427 +640 480 +640 426 +427 640 +640 427 +500 375 +640 360 +640 427 +427 640 +500 375 +429 640 +640 480 +500 333 +640 425 +480 640 +612 612 +640 480 +640 480 +640 514 +402 640 +640 416 +500 333 +640 427 +640 424 +640 480 +640 427 +640 427 +640 427 +640 480 +500 375 +640 427 +640 480 +500 366 +360 480 +640 426 +640 444 +499 640 +612 612 +480 640 +465 640 +640 480 +480 640 +640 427 +360 480 +640 427 +426 640 +640 427 +640 474 +478 640 +375 500 +640 480 +500 398 +425 640 +500 332 +640 427 +500 331 +640 426 +500 373 +640 480 +640 480 +640 424 +480 360 +426 640 +500 333 +640 478 +426 640 +640 427 +640 427 +480 640 +640 640 +640 480 +640 428 +500 478 +427 640 +640 453 +640 480 +500 375 +612 612 +640 640 +640 427 +640 427 +640 427 +427 640 +640 482 +500 333 +640 369 +640 361 +424 640 +288 216 +640 424 +640 428 +400 500 +640 480 +640 427 +640 396 +640 429 +500 365 +375 500 +426 640 +443 640 +640 427 +640 480 +612 612 +427 640 +640 429 +640 428 +640 215 +396 640 +437 640 +640 426 +440 640 +640 480 +640 480 +640 480 +333 500 +500 332 +640 398 +640 480 +500 375 +480 640 +640 426 +640 480 +640 480 +640 428 +640 480 +640 424 +640 427 +640 480 +640 426 +500 333 +612 612 +640 480 +428 640 +427 640 +640 480 +238 640 +480 640 +640 428 +640 480 +398 500 +640 428 +634 640 +640 481 +480 640 +500 332 +640 230 +500 375 +640 480 +640 480 +640 480 +500 346 +640 427 +640 354 +640 480 +640 428 +500 332 +640 480 +640 427 +640 428 +612 612 +640 480 +480 640 +640 427 +640 466 +640 429 +640 426 +479 640 +640 504 +640 336 +415 640 +640 427 +640 428 +640 480 +640 427 +382 640 +640 480 +640 480 +332 500 +640 480 +640 428 +640 426 +640 427 +334 500 +640 473 +640 427 +640 480 +425 640 +640 425 +640 426 +640 383 +500 375 +640 480 +500 375 +469 640 +500 281 +640 480 +640 480 +640 425 +640 478 +640 464 +640 480 +640 428 +480 640 +640 539 +640 428 +640 427 +640 427 +480 640 +640 480 +640 480 +640 480 +480 640 +640 428 +640 427 +640 480 +640 427 +425 640 +500 346 +480 640 +500 293 +466 640 +427 640 +640 480 +640 427 +500 334 +640 640 +500 333 +480 640 +640 480 +444 500 +640 429 +500 333 +640 640 +438 640 +436 640 +480 640 +640 382 +640 480 +640 570 +480 640 +640 480 +612 612 +428 640 +640 480 +640 444 +640 480 +640 360 +640 391 +480 640 +640 426 +640 480 +640 480 +640 480 +640 425 +612 612 +375 500 +640 480 +640 480 +500 375 +500 333 +640 480 +500 375 +427 640 +640 480 +640 426 +640 400 +640 429 +640 428 +640 426 +500 375 +480 640 +400 500 +640 429 +480 640 +480 320 +640 360 +612 612 +640 360 +640 426 +640 426 +427 640 +640 425 +424 640 +640 427 +640 427 +640 426 +612 612 +427 640 +640 425 +640 480 +640 428 +640 425 +640 427 +640 427 +640 351 +640 427 +500 335 +381 500 +425 640 +640 358 +640 424 +500 375 +640 483 +640 480 +478 640 +353 640 +640 427 +640 360 +612 612 +612 612 +640 427 +640 480 +426 640 +640 427 +640 426 +480 640 +640 480 +640 427 +640 360 +640 480 +500 334 +640 480 +640 480 +640 441 +640 425 +640 512 +640 376 +640 360 +640 480 +500 454 +500 375 +640 480 +480 640 +445 640 +640 429 +640 425 +425 640 +640 425 +640 480 +500 357 +612 612 +480 640 +640 434 +640 427 +640 401 +332 500 +640 426 +640 427 +640 478 +500 334 +640 478 +640 480 +640 469 +640 426 +640 424 +640 480 +640 480 +640 480 +640 423 +640 427 +640 427 +640 480 +500 375 +640 428 +375 500 +640 427 +640 480 +640 480 +640 480 +473 615 +640 478 +640 480 +442 287 +480 640 +640 423 +640 427 +500 375 +640 480 +640 480 +640 480 +640 480 +640 436 +640 425 +500 375 +485 640 +640 427 +612 612 +480 640 +640 521 +612 612 +640 393 +640 456 +640 480 +500 375 +640 429 +640 480 +640 425 +640 480 +640 429 +640 427 +500 354 +480 640 +640 480 +640 420 +640 480 +480 640 +640 480 +500 375 +500 375 +375 500 +640 480 +640 475 +426 640 +640 426 +640 427 +640 480 +500 332 +640 427 +640 360 +480 640 +480 640 +640 428 +640 418 +476 640 +640 440 +375 500 +640 478 +640 432 +460 613 +640 480 +408 640 +640 424 +640 480 +407 500 +427 640 +640 427 +640 424 +640 640 +640 480 +640 486 +612 612 +640 403 +640 480 +640 425 +640 426 +640 402 +512 640 +640 640 +360 640 +427 640 +640 375 +640 480 +635 640 +640 480 +640 428 +640 421 +437 640 +640 426 +640 480 +500 356 +480 640 +640 480 +640 427 +640 427 +640 426 +640 480 +640 469 +640 426 +640 271 +640 389 +640 462 +640 464 +640 480 +640 434 +640 480 +640 480 +375 500 +640 152 +480 640 +640 640 +640 436 +480 640 +500 375 +453 640 +500 334 +426 640 +427 640 +375 500 +640 423 +640 427 +640 332 +640 427 +640 480 +640 426 +427 640 +426 640 +500 375 +640 428 +640 480 +449 640 +640 427 +640 411 +640 428 +640 428 +640 427 +501 640 +427 640 +500 375 +556 640 +640 480 +640 470 +612 612 +640 427 +427 640 +640 427 +466 640 +640 424 +640 425 +512 640 +640 480 +640 370 +640 480 +640 427 +640 480 +640 427 +480 640 +640 426 +640 426 +480 640 +640 480 +640 480 +375 500 +640 457 +640 427 +640 426 +427 640 +640 480 +640 480 +640 344 +640 528 +500 375 +640 485 +375 500 +640 413 +640 427 +640 480 +500 333 +640 427 +335 500 +580 440 +640 427 +640 480 +500 318 +640 427 +480 640 +640 429 +640 410 +456 640 +640 427 +640 480 +395 640 +426 640 +427 640 +427 640 +640 426 +427 640 +427 640 +640 427 +640 428 +640 427 +268 402 +640 462 +612 612 +640 480 +640 480 +640 383 +640 427 +640 409 +640 427 +640 427 +640 479 +640 427 +427 640 +640 480 +428 640 +640 427 +640 480 +427 640 +500 400 +426 640 +640 317 +640 480 +480 640 +500 375 +640 427 +480 640 +640 480 +480 640 +640 480 +640 483 +500 426 +612 612 +428 640 +640 426 +640 429 +490 488 +500 375 +640 480 +640 424 +640 480 +640 427 +640 427 +640 408 +640 403 +640 426 +640 556 +640 480 +612 612 +480 640 +480 640 +426 640 +480 640 +640 427 +375 500 +640 424 +640 427 +500 375 +480 640 +640 425 +640 480 +640 418 +640 428 +640 480 +640 479 +640 468 +539 640 +640 480 +491 500 +640 357 +427 640 +640 480 +480 640 +640 480 +426 640 +640 429 +480 640 +426 640 +640 427 +640 375 +500 499 +640 427 +480 640 +426 640 +500 333 +640 286 +640 480 +302 640 +427 640 +640 425 +500 333 +429 640 +640 483 +640 391 +640 355 +640 360 +480 640 +500 334 +640 467 +500 375 +640 480 +640 360 +640 428 +500 332 +640 427 +640 427 +640 426 +480 640 +465 640 +640 426 +640 423 +640 426 +640 480 +500 375 +640 640 +500 375 +500 375 +640 426 +640 418 +424 640 +478 640 +640 427 +640 429 +640 480 +640 476 +480 640 +640 511 +640 427 +427 640 +500 351 +640 427 +640 480 +640 480 +640 480 +480 640 +640 480 +640 374 +640 592 +640 480 +640 427 +375 500 +487 363 +640 461 +640 427 +640 425 +500 375 +640 480 +314 375 +640 427 +375 500 +640 480 +640 360 +639 640 +640 512 +640 453 +640 427 +640 480 +640 448 +375 500 +640 480 +426 640 +640 480 +500 375 +640 426 +640 480 +640 446 +640 383 +480 640 +640 457 +427 640 +640 464 +480 640 +640 480 +640 540 +640 426 +640 480 +640 480 +480 640 +640 428 +480 640 +612 612 +640 425 +480 360 +333 500 +640 440 +426 640 +612 612 +480 640 +640 427 +516 640 +640 480 +367 640 +480 640 +640 426 +480 640 +640 480 +640 480 +640 459 +640 480 +640 374 +640 459 +640 427 +480 640 +500 281 +640 427 +505 640 +640 480 +480 640 +640 480 +640 480 +421 640 +478 640 +640 428 +640 480 +640 480 +640 480 +640 436 +500 333 +640 500 +400 600 +640 427 +640 428 +375 500 +427 640 +596 640 +425 640 +640 427 +500 375 +500 220 +640 388 +480 640 +640 427 +640 360 +640 480 +640 640 +640 480 +640 610 +640 480 +425 640 +427 640 +640 512 +640 440 +640 480 +500 375 +500 249 +427 640 +640 480 +640 427 +424 640 +640 484 +482 640 +600 400 +640 423 +428 640 +640 427 +640 480 +480 542 +640 471 +640 640 +640 424 +640 427 +640 480 +640 425 +548 640 +640 455 +640 360 +429 640 +640 480 +333 500 +640 480 +488 640 +480 640 +640 444 +640 480 +640 481 +640 480 +427 640 +640 427 +425 640 +640 480 +612 612 +375 500 +640 483 +427 640 +500 335 +640 480 +640 426 +640 480 +377 500 +640 496 +640 427 +640 425 +640 426 +640 360 +640 427 +500 422 +640 426 +640 480 +640 480 +640 360 +500 375 +480 640 +480 640 +480 640 +612 612 +374 500 +500 357 +640 338 +640 428 +640 480 +640 360 +640 238 +640 427 +640 481 +640 359 +640 427 +400 261 +640 434 +500 333 +640 427 +640 480 +500 400 +640 481 +640 427 +640 429 +375 500 +640 640 +332 500 +640 434 +640 426 +640 426 +478 640 +640 466 +640 427 +480 640 +427 640 +640 427 +640 427 +640 415 +640 427 +480 640 +640 480 +500 457 +640 480 +496 500 +500 375 +471 486 +500 375 +640 480 +480 640 +640 480 +640 480 +500 333 +427 640 +480 640 +396 640 +500 375 +363 500 +640 480 +480 640 +640 480 +500 330 +612 612 +580 640 +640 480 +640 640 +640 360 +640 478 +640 411 +500 333 +500 331 +640 480 +640 480 +427 640 +640 427 +500 375 +640 427 +500 374 +480 640 +640 427 +640 480 +640 427 +500 296 +640 480 +640 480 +335 500 +500 375 +427 640 +640 480 +640 632 +500 375 +640 551 +640 427 +640 480 +640 365 +640 425 +640 524 +640 480 +640 427 +640 426 +424 640 +640 427 +640 427 +427 640 +426 640 +640 351 +640 480 +640 480 +640 427 +427 640 +640 425 +640 512 +424 640 +640 488 +640 426 +640 480 +640 493 +480 640 +640 428 +425 640 +640 480 +640 480 +640 426 +640 427 +640 426 +500 375 +640 427 +640 426 +500 375 +640 480 +640 360 +500 375 +600 448 +640 428 +500 375 +429 640 +640 426 +640 424 +640 631 +640 427 +612 612 +640 384 +640 480 +640 361 +640 480 +427 640 +640 428 +640 427 +500 217 +640 503 +500 265 +640 427 +640 480 +500 375 +640 427 +500 333 +512 640 +640 320 +500 375 +480 640 +418 640 +640 480 +500 375 +500 400 +640 413 +640 426 +640 285 +480 640 +480 360 +640 425 +640 640 +612 612 +480 640 +640 640 +640 457 +640 427 +500 375 +640 424 +500 332 +599 640 +640 427 +398 640 +640 427 +640 360 +640 425 +480 640 +640 426 +640 480 +640 480 +640 428 +640 416 +640 425 +640 480 +640 480 +640 356 +486 640 +640 427 +640 414 +640 425 +640 480 +640 481 +640 464 +425 640 +427 640 +640 430 +640 445 +640 423 +480 640 +640 396 +433 640 +640 480 +640 480 +640 480 +640 427 +640 457 +376 500 +640 427 +640 480 +640 428 +640 360 +640 427 +640 480 +640 480 +640 447 +640 427 +424 640 +640 425 +640 425 +600 600 +511 640 +640 469 +640 480 +640 427 +480 640 +640 427 +640 480 +640 480 +640 427 +640 360 +640 480 +480 640 +612 612 +333 500 +640 347 +640 480 +500 333 +640 424 +640 480 +640 360 +640 480 +640 640 +480 640 +640 427 +640 480 +640 512 +612 612 +439 640 +640 425 +424 640 +500 334 +500 376 +475 640 +640 426 +640 479 +461 640 +640 431 +640 427 +480 640 +640 480 +427 640 +640 426 +640 478 +640 428 +640 480 +500 323 +480 640 +640 480 +480 640 +375 500 +640 480 +640 480 +640 480 +612 612 +640 427 +640 283 +640 427 +500 375 +640 480 +640 427 +480 640 +427 640 +640 427 +478 640 +512 640 +640 426 +640 640 +640 427 +640 480 +640 427 +480 640 +427 640 +640 427 +640 429 +427 640 +640 480 +640 423 +640 427 +500 375 +640 425 +640 480 +640 503 +500 375 +480 640 +640 426 +640 480 +640 550 +640 447 +640 428 +640 427 +480 640 +500 358 +640 427 +640 514 +500 334 +640 480 +640 359 +640 480 +480 640 +500 353 +427 640 +640 427 +480 640 +640 427 +640 480 +375 500 +491 640 +640 425 +640 480 +612 612 +640 427 +640 427 +332 500 +640 427 +640 428 +500 309 +612 612 +640 249 +480 640 +640 480 +358 640 +640 480 +478 640 +480 640 +640 425 +427 640 +640 512 +640 425 +640 480 +640 426 +612 612 +427 640 +427 640 +640 480 +480 640 +427 640 +640 384 +424 640 +428 640 +480 640 +480 640 +640 480 +640 427 +640 593 +640 480 +640 617 +640 360 +640 480 +640 438 +640 425 +640 422 +480 640 +500 375 +640 426 +640 427 +640 427 +640 480 +640 431 +640 425 +640 427 +640 427 +640 428 +640 424 +640 503 +640 480 +640 425 +640 427 +426 640 +428 640 +640 426 +640 361 +426 640 +375 500 +640 480 +500 375 +640 361 +640 640 +630 640 +480 640 +640 480 +480 640 +640 480 +640 427 +640 480 +530 640 +640 480 +640 428 +640 427 +500 325 +480 640 +433 640 +640 427 +640 452 +640 480 +640 480 +640 427 +640 480 +640 480 +640 480 +480 640 +640 480 +640 424 +640 426 +427 640 +640 480 +640 426 +640 414 +375 500 +640 428 +640 427 +480 640 +640 640 +640 480 +640 427 +640 427 +640 427 +500 375 +640 427 +640 480 +480 640 +500 390 +640 427 +617 640 +640 480 +640 480 +427 640 +500 375 +640 427 +640 454 +480 640 +640 427 +640 424 +640 426 +640 425 +500 333 +640 480 +640 268 +640 404 +480 640 +640 424 +640 427 +640 429 +640 361 +600 400 +640 426 +500 351 +640 480 +640 480 +640 424 +640 360 +427 640 +640 449 +640 480 +640 480 +640 427 +375 500 +640 427 +640 359 +640 471 +640 480 +500 327 +640 427 +427 640 +427 640 +612 612 +640 480 +640 429 +427 640 +427 640 +640 426 +640 426 +640 424 +480 640 +500 375 +428 640 +480 640 +640 599 +333 500 +640 427 +640 360 +612 612 +640 480 +640 594 +640 480 +480 640 +640 426 +640 427 +640 480 +500 376 +480 640 +500 375 +426 640 +640 426 +640 480 +640 360 +600 450 +612 612 +486 640 +640 480 +512 640 +427 640 +640 480 +480 640 +640 426 +489 640 +640 480 +475 355 +480 640 +375 500 +480 640 +426 640 +480 640 +640 361 +536 640 +500 375 +480 640 +375 500 +640 427 +640 640 +640 421 +500 473 +640 428 +369 640 +640 480 +375 500 +500 375 +640 480 +640 480 +640 480 +640 422 +640 425 +640 480 +640 480 +480 640 +640 427 +640 427 +640 425 +426 640 +640 427 +500 312 +640 263 +480 640 +640 480 +640 640 +375 500 +640 463 +640 480 +640 456 +640 480 +500 375 +640 425 +427 640 +640 426 +500 329 +640 480 +500 375 +640 427 +640 480 +640 427 +640 547 +640 426 +480 640 +640 427 +640 418 +640 328 +480 640 +640 480 +640 427 +500 255 +640 427 +480 640 +480 640 +640 409 +640 480 +428 640 +375 500 +500 333 +640 480 +606 640 +640 480 +640 434 +640 464 +640 429 +640 427 +480 640 +640 426 +640 369 +640 426 +640 366 +640 426 +640 480 +375 500 +500 375 +640 480 +640 426 +640 480 +640 480 +640 420 +395 640 +612 612 +640 480 +640 426 +480 640 +640 427 +500 375 +460 640 +640 412 +640 427 +640 480 +473 600 +640 640 +612 612 +640 480 +640 404 +640 480 +640 480 +640 526 +500 363 +640 414 +640 400 +640 427 +640 427 +640 427 +640 480 +640 480 +640 427 +640 515 +498 640 +640 472 +640 480 +480 640 +640 415 +333 500 +640 480 +640 461 +640 426 +640 406 +640 512 +428 640 +640 427 +640 480 +640 480 +640 628 +640 427 +427 640 +426 640 +640 427 +640 427 +640 480 +640 424 +554 640 +480 640 +640 415 +640 426 +480 640 +500 334 +500 375 +640 427 +640 466 +640 427 +640 428 +427 640 +640 428 +640 427 +640 480 +640 480 +640 360 +640 426 +640 480 +500 333 +500 356 +640 360 +640 480 +640 427 +480 640 +640 480 +640 592 +612 612 +640 480 +640 479 +640 466 +640 429 +640 480 +612 612 +640 512 +479 640 +640 480 +640 480 +640 480 +640 427 +640 480 +500 349 +640 523 +640 480 +640 480 +640 483 +640 428 +399 500 +500 375 +640 427 +640 381 +640 480 +640 427 +640 426 +640 393 +640 426 +565 640 +480 640 +640 426 +480 640 +480 640 +454 640 +573 640 +640 480 +640 427 +480 640 +640 427 +640 480 +497 500 +640 427 +640 360 +500 375 +640 427 +640 425 +480 640 +640 428 +426 640 +500 491 +480 640 +374 500 +640 480 +640 425 +360 480 +640 480 +612 612 +640 480 +640 349 +375 500 +640 425 +640 360 +640 427 +640 427 +428 640 +640 480 +425 640 +375 500 +640 359 +640 480 +500 375 +427 640 +640 429 +640 480 +640 480 +640 480 +640 470 +434 640 +500 375 +640 425 +640 305 +640 427 +640 480 +426 640 +360 640 +640 480 +375 500 +480 640 +478 640 +640 480 +595 640 +640 428 +640 480 +480 640 +640 480 +500 281 +640 480 +500 333 +640 427 +640 428 +500 191 +409 640 +640 480 +425 640 +640 512 +640 480 +640 426 +640 427 +640 424 +640 427 +640 427 +640 480 +640 480 +640 476 +640 536 +640 480 +640 480 +640 480 +500 375 +640 427 +640 480 +500 500 +640 480 +640 340 +640 480 +640 480 +426 640 +640 473 +500 333 +640 480 +640 470 +640 427 +640 502 +640 426 +640 298 +640 480 +480 640 +640 480 +640 480 +640 480 +640 426 +612 612 +500 375 +640 429 +500 338 +500 375 +640 480 +500 375 +492 640 +640 427 +640 429 +640 599 +640 480 +338 450 +640 480 +640 480 +640 359 +500 366 +640 424 +428 640 +640 480 +640 427 +640 480 +500 333 +500 375 +640 425 +480 640 +426 640 +640 346 +640 480 +640 480 +640 480 +612 612 +428 640 +640 427 +399 640 +356 500 +427 640 +640 480 +640 480 +640 480 +640 640 +640 480 +640 441 +640 480 +500 375 +480 640 +612 612 +500 375 +640 441 +640 427 +640 427 +640 427 +427 640 +640 424 +480 640 +640 427 +500 392 +640 427 +427 640 +640 512 +640 480 +486 640 +640 480 +640 453 +640 425 +640 480 +640 428 +479 640 +640 480 +640 480 +375 500 +480 640 +640 427 +490 640 +480 640 +640 424 +427 640 +640 426 +640 426 +333 500 +375 500 +427 640 +640 424 +480 640 +500 333 +640 426 +640 480 +640 471 +632 640 +640 480 +640 421 +640 480 +640 352 +640 427 +480 640 +640 426 +640 480 +640 459 +640 480 +640 427 +427 640 +640 480 +640 443 +640 428 +640 480 +640 480 +485 640 +427 640 +640 427 +640 424 +640 640 +640 480 +640 427 +640 427 +640 406 +640 493 +640 480 +612 612 +500 375 +640 466 +640 422 +640 434 +640 428 +640 427 +640 427 +640 480 +640 425 +454 640 +640 338 +640 427 +500 334 +640 363 +640 426 +457 640 +640 427 +640 478 +428 640 +500 375 +640 480 +360 640 +640 427 +640 427 +480 640 +640 480 +640 424 +640 360 +640 414 +640 437 +640 480 +640 428 +500 375 +480 640 +480 640 +427 640 +448 300 +486 640 +500 375 +500 400 +640 449 +640 415 +427 640 +640 428 +640 480 +640 480 +427 640 +500 333 +500 341 +500 375 +500 375 +640 480 +640 427 +640 512 +640 427 +480 640 +640 480 +500 334 +640 427 +640 424 +640 426 +640 427 +480 640 +480 640 +640 426 +640 427 +640 480 +640 429 +480 640 +640 480 +640 427 +612 612 +500 333 +640 427 +612 612 +500 375 +640 427 +426 640 +640 428 +640 480 +550 640 +500 375 +334 500 +427 640 +640 480 +640 480 +463 640 +367 500 +640 427 +640 438 +500 331 +612 612 +640 480 +500 291 +600 400 +640 427 +427 640 +640 480 +640 480 +375 500 +640 428 +640 427 +500 176 +640 427 +640 425 +640 597 +640 427 +640 480 +480 640 +640 640 +640 480 +425 640 +500 375 +456 640 +640 427 +640 426 +640 519 +640 411 +375 500 +640 427 +428 640 +428 640 +640 463 +640 561 +640 361 +427 640 +640 480 +640 426 +640 480 +522 640 +640 512 +640 480 +640 480 +640 508 +640 480 +640 427 +439 640 +640 360 +640 499 +640 479 +640 480 +640 640 +640 427 +640 480 +640 427 +425 640 +375 500 +500 357 +500 375 +418 640 +640 425 +386 500 +640 426 +640 480 +640 438 +640 480 +640 429 +640 480 +500 332 +427 640 +640 424 +293 500 +425 640 +612 612 +640 546 +640 481 +640 433 +612 612 +640 480 +640 489 +640 480 +480 640 +640 480 +428 640 +328 480 +640 423 +640 426 +480 640 +640 480 +470 640 +640 425 +640 480 +640 480 +612 612 +640 480 +448 500 +575 640 +640 425 +640 480 +427 640 +640 480 +640 480 +640 480 +345 640 +640 427 +500 331 +427 640 +640 427 +640 480 +640 640 +640 478 +478 640 +640 426 +640 480 +640 480 +640 427 +640 480 +640 427 +640 640 +640 480 +640 425 +427 640 +500 375 +480 640 +500 375 +500 375 +629 640 +640 480 +640 426 +640 480 +640 427 +640 426 +480 640 +640 425 +500 375 +640 480 +640 480 +480 640 +640 426 +640 425 +640 427 +426 640 +480 640 +424 640 +640 406 +640 272 +640 480 +640 480 +424 640 +427 640 +640 480 +440 640 +375 500 +640 426 +429 640 +383 640 +640 480 +612 612 +640 426 +640 480 +640 428 +640 480 +640 480 +640 425 +640 480 +428 640 +427 640 +640 480 +640 480 +640 480 +640 427 +640 425 +640 424 +640 480 +640 430 +640 480 +640 359 +640 480 +499 500 +640 480 +640 480 +640 478 +640 360 +640 427 +640 512 +640 415 +640 480 +640 480 +612 612 +640 214 +640 426 +640 481 +640 427 +459 640 +640 427 +480 640 +480 640 +640 480 +430 640 +640 480 +640 426 +640 480 +478 640 +640 423 +640 480 +640 480 +506 640 +640 480 +640 427 +383 640 +640 425 +640 427 +500 375 +335 500 +640 480 +199 640 +640 428 +640 428 +640 480 +640 480 +480 640 +640 425 +500 375 +640 426 +500 500 +640 480 +640 427 +640 480 +640 572 +640 427 +640 424 +640 438 +500 500 +640 427 +640 423 +640 480 +640 220 +640 428 +480 640 +640 480 +640 429 +375 500 +333 500 +640 480 +640 400 +640 426 +640 429 +640 480 +640 480 +640 426 +640 428 +500 375 +640 480 +427 640 +480 640 +375 500 +500 357 +480 640 +352 640 +640 473 +640 480 +640 480 +640 427 +640 454 +640 427 +640 529 +640 480 +640 427 +640 640 +640 480 +640 352 +640 320 +640 543 +640 558 +640 480 +640 426 +640 426 +500 375 +480 640 +640 480 +640 480 +500 375 +640 427 +640 424 +500 333 +640 478 +640 427 +640 480 +640 428 +640 480 +640 428 +640 427 +500 375 +640 480 +640 425 +480 640 +435 640 +640 428 +640 379 +640 480 +640 272 +427 640 +640 426 +640 424 +640 428 +500 375 +640 480 +640 428 +640 410 +640 480 +640 426 +341 500 +640 427 +640 427 +424 640 +640 595 +640 480 +640 427 +640 425 +640 324 +640 427 +640 425 +640 480 +480 640 +480 640 +500 500 +640 427 +640 413 +640 427 +640 426 +640 428 +640 480 +640 444 +448 336 +640 426 +445 500 +500 375 +480 640 +640 427 +640 493 +500 334 +338 500 +480 640 +480 640 +640 480 +640 480 +640 640 +640 390 +640 480 +640 398 +640 504 +640 480 +640 534 +480 640 +640 480 +640 480 +640 480 +640 480 +640 427 +425 640 +375 500 +640 426 +640 430 +640 597 +500 375 +640 480 +640 474 +640 640 +500 333 +640 426 +640 428 +640 480 +640 436 +640 458 +480 640 +480 640 +426 640 +428 640 +500 345 +640 360 +640 360 +640 480 +375 500 +640 427 +500 333 +480 640 +640 480 +425 640 +640 478 +558 640 +640 410 +640 425 +428 640 +640 426 +480 640 +640 427 +471 640 +640 469 +640 427 +640 480 +640 480 +640 480 +375 500 +429 640 +640 480 +369 336 +640 443 +480 640 +640 478 +333 500 +640 428 +640 481 +640 427 +640 480 +640 428 +640 480 +640 482 +375 500 +640 512 +640 480 +640 480 +640 426 +640 640 +640 480 +640 438 +640 480 +640 427 +531 640 +480 640 +640 478 +640 425 +640 425 +640 427 +640 426 +640 431 +612 612 +411 640 +500 375 +640 427 +640 498 +640 480 +640 420 +500 376 +427 640 +640 425 +431 640 +521 640 +640 428 +480 640 +375 500 +640 427 +640 480 +640 427 +500 375 +480 640 +541 640 +640 480 +640 432 +500 364 +640 480 +500 333 +504 378 +523 640 +640 489 +640 360 +640 480 +480 640 +640 427 +640 427 +480 640 +640 427 +640 427 +500 333 +640 480 +640 427 +640 400 +640 426 +640 480 +640 425 +425 640 +640 480 +427 640 +640 541 +640 491 +640 426 +480 640 +480 640 +564 640 +640 478 +424 640 +335 500 +500 377 +640 426 +640 428 +640 430 +640 478 +640 429 +640 427 +332 500 +361 640 +640 457 +640 480 +640 427 +640 427 +640 361 +640 480 +640 480 +640 427 +480 640 +640 428 +640 424 +640 426 +480 640 +426 640 +640 426 +640 592 +640 480 +640 480 +640 480 +480 640 +640 423 +640 480 +640 480 +383 640 +500 375 +640 489 +640 480 +500 375 +640 480 +500 333 +480 640 +640 363 +427 640 +640 480 +640 426 +640 479 +427 640 +640 435 +333 500 +640 426 +640 427 +640 478 +640 441 +640 480 +480 640 +640 427 +427 640 +640 640 +500 376 +427 640 +640 426 +640 426 +640 424 +640 459 +640 457 +640 437 +640 480 +640 480 +640 399 +640 480 +480 640 +640 480 +640 480 +640 393 +375 500 +427 640 +640 480 +640 427 +640 480 +640 427 +500 375 +480 640 +480 640 +640 425 +500 387 +640 429 +640 480 +478 640 +480 640 +640 426 +500 333 +500 375 +640 480 +640 429 +640 480 +426 640 +427 640 +480 640 +500 332 +640 480 +480 640 +640 426 +640 432 +486 640 +428 640 +640 429 +640 459 +393 640 +640 425 +427 640 +640 428 +548 640 +640 411 +489 500 +640 427 +640 414 +640 427 +480 640 +500 344 +480 640 +640 503 +428 640 +500 375 +500 375 +640 444 +640 427 +500 375 +640 424 +456 640 +612 612 +375 500 +427 640 +500 333 +640 480 +640 480 +640 480 +640 480 +640 425 +640 512 +582 640 +480 640 +640 480 +640 515 +500 369 +640 428 +640 480 +478 640 +640 427 +500 332 +577 640 +500 375 +444 640 +640 453 +640 360 +640 633 +640 383 +640 480 +640 427 +640 406 +500 357 +480 640 +640 424 +640 480 +640 480 +579 640 +640 480 +640 480 +640 427 +450 338 +640 480 +640 356 +514 640 +425 567 +640 480 +600 400 +427 640 +640 431 +640 480 +640 426 +640 480 +640 426 +612 612 +640 480 +480 640 +468 640 +640 480 +640 443 +640 427 +425 640 +640 519 +480 640 +333 500 +427 640 +640 427 +428 640 +640 425 +640 425 +640 480 +640 480 +640 480 +500 375 +640 425 +480 640 +640 491 +640 486 +480 640 +500 375 +640 427 +640 428 +640 308 +640 365 +479 640 +500 333 +512 640 +640 480 +640 480 +640 480 +640 361 +640 427 +640 480 +554 640 +500 332 +640 427 +640 425 +640 512 +640 480 +500 375 +375 500 +640 448 +640 426 +305 480 +612 612 +375 500 +640 452 +640 425 +640 480 +640 427 +640 428 +640 426 +500 332 +640 425 +640 360 +612 612 +480 640 +640 429 +428 640 +500 375 +640 413 +640 480 +640 427 +500 375 +476 640 +640 480 +640 480 +640 427 +640 480 +345 500 +500 375 +480 640 +640 427 +640 427 +640 360 +392 640 +500 375 +640 427 +574 640 +640 428 +640 427 +640 438 +500 375 +640 424 +480 640 +640 427 +640 427 +500 375 +640 427 +640 425 +640 425 +480 640 +640 477 +640 480 +640 424 +640 494 +640 424 +333 500 +453 640 +500 375 +610 407 +612 612 +640 428 +426 640 +375 500 +640 480 +640 427 +425 640 +640 427 +640 640 +449 401 +640 426 +427 640 +640 429 +640 428 +600 400 +640 640 +640 464 +500 375 +640 427 +640 427 +640 480 +640 360 +480 640 +640 425 +525 525 +426 640 +640 427 +500 375 +640 427 +640 427 +425 640 +480 640 +640 573 +630 450 +640 480 +612 612 +640 480 +480 640 +640 506 +640 425 +640 405 +360 640 +640 480 +640 622 +640 425 +375 500 +640 427 +612 612 +640 457 +568 640 +640 480 +640 427 +640 426 +480 640 +427 640 +640 427 +640 428 +640 400 +640 480 +480 640 +640 428 +480 640 +480 640 +480 640 +599 640 +640 480 +640 480 +640 426 +640 478 +640 480 +640 427 +640 425 +375 500 +640 480 +375 500 +607 640 +375 500 +640 480 +640 434 +638 640 +493 500 +640 480 +640 506 +640 427 +640 427 +463 640 +640 360 +640 427 +640 619 +640 484 +375 500 +640 480 +538 640 +500 333 +640 429 +500 375 +500 488 +640 428 +640 427 +438 640 +640 480 +640 393 +640 427 +640 480 +500 330 +640 572 +500 366 +640 480 +640 425 +640 424 +640 478 +500 381 +640 427 +640 480 +640 399 +640 499 +640 426 +640 402 +375 500 +479 640 +500 335 +640 428 +640 428 +500 375 +640 480 +500 341 +640 483 +640 361 +424 640 +640 480 +640 427 +640 483 +640 427 +640 424 +640 480 +640 424 +480 640 +640 640 +427 640 +400 300 +640 480 +375 500 +640 480 +640 429 +500 332 +323 486 +640 480 +640 273 +640 427 +640 466 +640 506 +640 463 +640 480 +640 480 +640 640 +427 640 +640 480 +426 640 +640 480 +640 456 +480 640 +640 480 +640 480 +500 376 +500 375 +640 480 +480 640 +640 383 +640 480 +640 480 +420 640 +640 480 +640 427 +374 500 +640 471 +612 612 +640 480 +640 427 +640 480 +500 375 +640 480 +640 480 +640 427 +640 452 +640 402 +640 352 +640 427 +500 375 +640 480 +375 500 +640 640 +640 464 +427 640 +500 296 +376 500 +640 544 +480 640 +640 480 +500 332 +640 426 +640 426 +640 463 +640 426 +640 466 +640 480 +371 500 +500 640 +500 375 +333 500 +640 480 +500 333 +240 193 +480 640 +426 640 +640 424 +640 480 +640 480 +480 640 +571 640 +480 640 +640 640 +640 480 +375 500 +640 427 +428 640 +640 472 +640 428 +640 480 +377 500 +480 640 +640 426 +500 333 +480 640 +640 360 +640 478 +431 640 +536 640 +640 426 +640 424 +612 612 +480 640 +427 640 +640 480 +640 480 +640 427 +427 640 +425 640 +640 427 +500 375 +436 640 +640 427 +640 437 +333 500 +480 640 +612 612 +559 640 +640 427 +640 426 +640 480 +640 400 +640 406 +640 358 +640 424 +500 315 +640 426 +640 480 +640 427 +640 480 +640 424 +427 640 +398 500 +640 480 +500 313 +640 360 +640 480 +640 360 +640 480 +640 427 +640 426 +480 640 +640 456 +500 346 +500 475 +640 427 +640 427 +640 414 +428 640 +640 428 +428 640 +500 332 +426 640 +640 427 +480 640 +640 480 +640 480 +500 375 +500 375 +640 307 +640 480 +480 640 +640 472 +640 426 +426 640 +640 428 +427 640 +480 640 +480 640 +340 500 +640 480 +640 428 +640 502 +640 480 +640 457 +640 552 +640 359 +640 428 +500 375 +640 480 +480 640 +500 310 +524 640 +640 427 +640 427 +640 480 +500 375 +478 640 +640 480 +426 640 +640 433 +375 500 +640 616 +640 428 +640 480 +640 480 +500 334 +427 640 +640 429 +640 427 +640 480 +640 480 +640 480 +640 427 +640 480 +573 640 +427 640 +640 480 +640 427 +500 375 +640 480 +500 373 +478 640 +640 429 +371 500 +480 640 +640 440 +640 425 +640 480 +500 375 +427 640 +500 332 +427 640 +640 480 +334 500 +640 427 +640 427 +640 480 +428 640 +375 500 +640 427 +640 383 +427 640 +500 333 +640 427 +500 375 +427 640 +640 480 +640 425 +640 427 +640 427 +640 427 +640 358 +500 375 +640 427 +640 480 +640 480 +478 640 +480 640 +640 360 +640 480 +640 427 +480 640 +333 500 +640 427 +640 512 +640 480 +500 334 +480 640 +640 427 +583 640 +480 640 +640 480 +640 426 +640 427 +640 512 +480 640 +640 427 +640 480 +640 625 +462 640 +640 480 +640 480 +640 339 +640 427 +500 341 +640 427 +640 462 +500 375 +640 427 +500 375 +375 500 +640 427 +640 478 +640 480 +435 640 +640 426 +640 427 +427 640 +640 448 +640 426 +500 375 +640 426 +640 480 +640 427 +375 500 +640 427 +500 375 +488 640 +640 480 +640 426 +640 640 +480 640 +320 240 +640 483 +640 426 +640 489 +640 426 +640 359 +473 500 +640 480 +640 433 +612 612 +640 428 +640 457 +500 375 +413 500 +640 474 +640 458 +427 640 +375 500 +421 640 +640 427 +476 640 +568 640 +640 426 +640 425 +424 640 +500 324 +640 480 +640 427 +640 426 +500 375 +426 640 +640 480 +640 427 +375 500 +640 426 +640 640 +640 425 +640 480 +640 480 +640 480 +640 427 +612 612 +640 413 +640 480 +500 333 +640 498 +640 427 +302 500 +640 354 +424 640 +427 640 +480 640 +640 492 +428 640 +640 496 +640 428 +612 612 +480 640 +640 483 +640 480 +640 480 +640 480 +640 479 +640 427 +640 425 +640 426 +640 428 +500 375 +640 429 +640 429 +500 375 +480 640 +390 293 +480 640 +640 425 +444 640 +640 640 +500 375 +640 480 +640 427 +640 427 +500 499 +500 334 +640 480 +414 640 +500 375 +640 478 +486 640 +640 480 +478 640 +640 359 +640 480 +480 640 +640 480 +640 427 +640 480 +640 640 +500 500 +414 310 +640 428 +600 469 +640 459 +500 375 +640 480 +449 600 +640 427 +640 480 +480 640 +640 428 +640 426 +640 480 +426 640 +640 480 +640 424 +640 433 +640 480 +640 480 +640 434 +375 500 +640 480 +500 334 +640 428 +640 427 +427 640 +640 480 +640 480 +640 427 +640 427 +640 480 +640 480 +500 363 +640 480 +640 480 +480 640 +640 480 +640 480 +640 480 +480 640 +640 480 +480 640 +640 480 +640 427 +500 281 +640 427 +426 640 +478 640 +640 480 +640 480 +640 427 +640 427 +573 640 +640 297 +500 333 +640 428 +640 480 +640 640 +480 640 +640 494 +640 427 +640 480 +428 640 +640 427 +427 640 +640 480 +500 375 +640 427 +500 372 +432 640 +640 426 +427 640 +640 427 +429 640 +640 393 +478 640 +640 426 +640 426 +500 332 +499 500 +640 484 +640 640 +640 424 +375 500 +500 375 +640 428 +640 426 +427 640 +500 333 +640 426 +612 612 +640 480 +640 427 +640 360 +640 480 +640 480 +539 640 +615 310 +480 640 +640 640 +640 453 +427 640 +640 513 +640 427 +640 480 +640 480 +640 403 +612 612 +500 375 +640 480 +640 427 +640 640 +640 480 +640 427 +480 640 +640 480 +640 480 +640 483 +640 480 +640 427 +500 375 +640 480 +640 490 +612 612 +612 612 +500 375 +640 478 +480 640 +480 640 +640 480 +640 480 +426 640 +640 478 +640 480 +640 425 +640 512 +426 640 +640 383 +640 427 +640 480 +458 640 +640 510 +480 640 +640 478 +640 426 +640 480 +640 427 +640 480 +640 412 +640 480 +640 428 +640 480 +640 426 +640 480 +500 375 +640 392 +640 427 +640 427 +480 640 +600 400 +640 426 +640 479 +640 425 +640 480 +640 480 +486 640 +426 640 +640 427 +640 426 +640 425 +640 360 +640 426 +427 640 +334 500 +500 375 +640 427 +640 427 +640 480 +581 640 +640 480 +640 480 +480 640 +640 427 +640 480 +640 427 +640 425 +640 480 +480 640 +640 427 +640 422 +640 426 +640 480 +480 640 +640 480 +640 480 +640 427 +640 360 +640 480 +640 427 +426 640 +542 640 +640 480 +640 482 +640 428 +480 640 +640 424 +375 500 +480 640 +427 640 +640 480 +640 480 +640 427 +640 427 +640 427 +427 640 +500 375 +480 640 +640 480 +375 500 +640 427 +640 480 +640 495 +640 409 +640 427 +640 480 +640 425 +640 361 +375 500 +480 640 +480 640 +500 500 +640 361 +480 640 +500 332 +640 427 +500 375 +480 640 +640 388 +500 375 +640 366 +640 480 +426 640 +640 428 +640 427 +640 428 +424 640 +500 375 +612 612 +640 480 +640 512 +640 427 +640 428 +480 640 +640 425 +640 480 +640 434 +640 451 +500 334 +640 430 +500 375 +640 480 +640 516 +640 480 +427 640 +480 640 +640 480 +640 425 +640 480 +640 480 +640 427 +640 427 +640 427 +640 480 +640 480 +640 381 +640 480 +640 401 +500 335 +640 361 +640 425 +429 640 +480 640 +512 640 +427 640 +640 640 +480 640 +500 375 +640 427 +480 640 +640 480 +640 429 +375 500 +640 506 +428 640 +640 427 +640 480 +640 577 +500 375 +640 559 +640 360 +480 640 +640 427 +612 612 +640 428 +640 512 +480 640 +640 424 +511 640 +500 375 +480 640 +640 429 +640 480 +640 640 +500 375 +640 426 +640 427 +640 481 +640 396 +640 426 +640 480 +500 375 +500 333 +480 640 +454 640 +333 500 +640 480 +640 447 +640 480 +640 427 +640 480 +640 480 +640 427 +640 200 +500 375 +640 480 +640 480 +640 427 +640 425 +640 427 +640 478 +426 640 +640 427 +357 500 +640 424 +640 480 +640 425 +640 426 +640 426 +640 480 +500 375 +480 640 +640 414 +500 346 +640 427 +478 640 +640 349 +640 427 +640 427 +640 638 +640 427 +512 640 +640 378 +640 425 +640 425 +500 375 +375 500 +640 425 +640 427 +640 480 +640 395 +640 348 +640 480 +640 480 +427 640 +500 375 +640 426 +500 340 +375 500 +640 480 +640 480 +640 480 +426 640 +480 640 +326 640 +640 427 +640 483 +640 424 +640 515 +640 425 +640 391 +480 640 +640 360 +640 427 +612 612 +640 424 +465 640 +480 640 +640 426 +494 500 +640 478 +640 427 +640 427 +640 427 +480 640 +640 558 +640 480 +500 334 +640 429 +640 480 +640 426 +640 506 +640 480 +640 640 +640 480 +640 480 +500 375 +640 427 +640 426 +640 426 +612 612 +640 428 +640 480 +640 480 +640 426 +427 640 +640 428 +640 427 +640 427 +640 480 +640 427 +640 480 +640 427 +612 612 +640 480 +640 480 +425 640 +640 427 +640 424 +640 427 +480 640 +640 480 +640 425 +500 332 +640 427 +640 640 +375 500 +427 640 +500 375 +640 480 +640 427 +500 334 +427 640 +424 640 +427 640 +640 339 +640 480 +640 427 +500 333 +481 640 +200 150 +640 480 +425 640 +640 480 +428 640 +640 480 +640 512 +600 400 +640 428 +640 480 +640 359 +428 640 +612 612 +640 480 +640 425 +640 480 +500 334 +429 640 +640 425 +640 427 +419 640 +640 480 +426 640 +612 612 +640 427 +640 427 +640 458 +375 500 +428 640 +500 375 +640 427 +480 640 +640 480 +480 640 +640 480 +500 375 +640 427 +480 640 +640 457 +500 333 +640 480 +640 483 +640 294 +640 427 +375 500 +640 480 +640 426 +640 427 +640 427 +640 426 +640 208 +640 424 +290 640 +640 480 +640 480 +640 480 +400 600 +640 424 +640 426 +640 480 +426 640 +640 426 +640 480 +427 640 +427 640 +640 480 +480 640 +640 441 +366 640 +640 427 +640 426 +500 375 +480 640 +375 500 +640 449 +640 480 +640 427 +457 640 +640 428 +480 640 +430 640 +480 640 +600 450 +640 453 +640 480 +640 238 +640 480 +640 428 +640 424 +500 375 +640 185 +640 427 +335 500 +640 478 +640 427 +427 640 +500 333 +640 480 +428 640 +640 480 +640 427 +386 640 +640 457 +640 480 +640 433 +640 429 +640 427 +640 480 +640 478 +640 480 +612 612 +640 428 +640 323 +640 439 +640 480 +640 493 +640 480 +427 640 +640 427 +640 455 +640 480 +640 425 +640 427 +375 500 +500 333 +640 480 +640 480 +640 480 +427 640 +480 640 +640 436 +375 500 +427 640 +640 427 +426 640 +457 640 +640 359 +640 480 +640 583 +640 424 +500 375 +441 640 +640 425 +640 426 +640 360 +427 640 +640 441 +640 426 +640 480 +640 427 +612 612 +640 425 +640 425 +640 427 +640 427 +640 480 +360 237 +375 500 +480 640 +524 640 +640 408 +427 640 +612 612 +640 480 +428 640 +640 480 +640 480 +640 426 +500 357 +500 364 +500 375 +640 423 +640 480 +640 427 +612 612 +640 484 +640 423 +544 640 +640 427 +640 480 +500 375 +500 500 +425 640 +426 640 +500 333 +480 640 +640 427 +402 640 +640 424 +341 280 +640 427 +640 512 +640 480 +640 491 +480 640 +640 480 +500 375 +640 480 +640 400 +500 333 +426 640 +640 427 +640 480 +500 375 +500 400 +500 375 +375 500 +640 479 +640 406 +640 514 +427 640 +640 222 +500 375 +459 640 +480 640 +640 425 +500 375 +640 427 +640 539 +640 425 +640 448 +640 427 +426 640 +500 323 +640 327 +427 640 +359 640 +640 428 +640 426 +640 425 +425 640 +424 640 +500 379 +427 640 +640 427 +375 500 +640 480 +640 480 +640 468 +640 480 +427 640 +640 480 +640 480 +640 426 +640 428 +640 426 +640 426 +640 480 +640 480 +640 403 +332 500 +500 333 +426 640 +640 458 +480 640 +500 375 +446 640 +640 480 +640 480 +640 384 +500 375 +640 426 +640 478 +500 375 +640 479 +500 375 +500 311 +640 543 +640 427 +500 375 +640 412 +480 640 +480 640 +375 500 +640 427 +640 427 +480 640 +640 426 +640 424 +480 640 +640 451 +640 427 +640 640 +640 448 +640 480 +640 480 +640 427 +640 427 +640 512 +640 480 +480 640 +640 481 +640 417 +640 425 +500 375 +640 563 +640 427 +640 426 +640 427 +640 427 +640 459 +640 459 +640 480 +640 438 +429 640 +640 545 +640 426 +612 612 +640 480 +640 428 +640 424 +640 427 +635 640 +640 417 +640 427 +480 360 +500 375 +500 375 +640 417 +640 360 +427 640 +500 375 +480 640 +640 389 +640 480 +640 480 +640 443 +640 427 +640 427 +640 427 +640 442 +512 640 +640 480 +494 640 +640 427 +612 612 +640 427 +612 612 +500 500 +640 427 +640 427 +640 427 +640 424 +480 640 +640 429 +640 356 +640 442 +640 458 +640 434 +640 427 +640 427 +480 640 +488 640 +640 480 +640 452 +427 640 +640 428 +640 425 +500 375 +427 640 +640 426 +640 480 +428 640 +483 640 +640 480 +640 429 +640 428 +640 480 +640 412 +640 427 +500 375 +427 640 +500 473 +640 640 +640 480 +640 427 +640 480 +640 429 +640 427 +426 640 +424 640 +640 400 +640 479 +640 490 +640 480 +480 640 +640 480 +500 333 +640 457 +640 427 +640 480 +428 640 +640 480 +640 425 +500 375 +640 279 +500 228 +640 480 +640 480 +640 480 +500 500 +640 456 +640 536 +500 375 +640 427 +640 478 +426 640 +480 640 +480 640 +500 400 +640 480 +480 640 +640 351 +640 480 +640 480 +640 427 +640 427 +640 480 +612 612 +640 360 +640 360 +640 332 +640 480 +500 349 +500 333 +640 386 +382 500 +500 375 +480 640 +614 640 +640 418 +500 375 +640 428 +640 640 +640 359 +640 480 +640 464 +541 640 +500 375 +640 426 +640 480 +640 427 +640 613 +500 349 +640 425 +500 375 +640 480 +480 640 +630 640 +640 427 +640 480 +640 480 +640 480 +500 375 +400 600 +500 375 +640 457 +640 461 +640 480 +640 480 +640 337 +512 640 +640 425 +427 640 +640 443 +640 640 +612 612 +500 375 +640 480 +640 425 +640 480 +640 428 +427 640 +640 512 +375 500 +480 640 +640 480 +640 524 +640 640 +640 480 +640 428 +640 480 +428 640 +640 363 +640 480 +640 445 +428 640 +640 480 +640 257 +640 281 +640 426 +426 640 +640 480 +640 425 +500 375 +640 426 +427 640 +375 500 +640 427 +640 359 +640 423 +640 427 +640 426 +640 480 +480 640 +640 480 +640 483 +640 480 +640 427 +640 427 +640 425 +640 359 +640 429 +604 640 +640 427 +500 500 +640 360 +640 480 +640 456 +640 485 +500 290 +640 480 +640 480 +480 640 +640 480 +640 426 +640 489 +478 640 +640 427 +640 427 +640 480 +640 480 +484 640 +640 480 +433 640 +640 480 +612 612 +640 480 +640 480 +480 640 +480 500 +426 640 +640 457 +640 425 +427 640 +640 480 +426 640 +487 640 +640 425 +421 640 +500 328 +375 500 +640 480 +335 500 +640 427 +640 427 +640 571 +376 500 +612 612 +500 500 +640 243 +640 479 +640 480 +533 640 +333 500 +640 639 +425 640 +640 516 +640 427 +480 640 +612 612 +640 426 +640 480 +480 640 +427 640 +640 428 +500 314 +640 480 +640 427 +427 640 +640 480 +500 309 +640 480 +480 640 +640 479 +640 427 +640 480 +640 480 +600 450 +640 428 +640 480 +480 640 +640 426 +640 480 +640 480 +640 427 +640 388 +428 640 +426 640 +500 375 +640 427 +640 480 +640 396 +640 480 +640 480 +640 426 +640 427 +640 427 +640 480 +640 480 +640 400 +640 427 +640 277 +500 333 +640 480 +640 424 +640 480 +640 480 +640 379 +640 480 +479 640 +375 500 +640 427 +498 640 +640 427 +480 640 +480 640 +640 427 +640 480 +427 640 +480 640 +640 480 +640 316 +640 427 +500 375 +640 427 +640 427 +458 640 +500 333 +500 499 +620 441 +640 425 +640 480 +640 448 +500 331 +528 640 +640 425 +480 640 +640 427 +193 225 +640 381 +640 427 +640 427 +640 430 +640 482 +640 469 +640 386 +640 425 +427 640 +640 480 +640 640 +640 480 +640 481 +425 640 +375 500 +640 427 +500 332 +640 427 +640 480 +640 480 +640 393 +427 640 +480 640 +640 427 +640 427 +480 640 +640 480 +640 502 +640 425 +500 375 +500 205 +502 640 +426 640 +640 480 +640 480 +640 428 +640 480 +640 427 +640 480 +640 428 +499 500 +500 373 +480 640 +480 640 +640 427 +640 480 +640 480 +640 427 +640 426 +640 640 +640 424 +640 427 +500 335 +640 480 +640 360 +640 480 +640 428 +640 483 +640 427 +640 557 +640 426 +640 478 +426 640 +640 480 +640 427 +427 640 +640 480 +480 640 +640 423 +640 459 +427 640 +500 333 +640 427 +500 375 +640 399 +612 612 +640 480 +640 480 +640 480 +500 375 +640 480 +500 310 +640 480 +640 425 +500 269 +612 612 +640 360 +640 480 +640 419 +640 427 +500 332 +640 480 +375 500 +500 357 +480 640 +640 427 +152 205 +640 426 +500 375 +640 424 +427 640 +640 427 +640 427 +480 640 +640 427 +640 480 +640 442 +480 640 +427 640 +500 333 +632 640 +500 337 +640 428 +375 500 +436 640 +640 428 +500 333 +640 480 +480 640 +640 480 +640 480 +640 360 +640 480 +640 466 +480 640 +640 427 +360 480 +640 480 +640 427 +500 348 +480 640 +640 426 +457 640 +640 427 +640 480 +640 480 +480 640 +640 426 +640 427 +360 640 +640 606 +612 612 +640 480 +640 480 +442 640 +640 427 +427 640 +640 428 +640 480 +640 480 +640 457 +612 612 +640 427 +500 375 +640 512 +640 480 +500 375 +640 428 +426 640 +640 480 +640 480 +640 480 +640 480 +640 480 +480 640 +640 459 +640 426 +480 640 +640 425 +550 365 +640 359 +640 480 +640 480 +640 480 +640 427 +640 427 +640 425 +640 415 +464 640 +424 640 +640 480 +428 640 +640 353 +640 426 +640 427 +640 461 +640 378 +640 427 +640 254 +640 424 +640 424 +380 640 +427 640 +640 427 +640 427 +500 333 +640 480 +640 430 +427 640 +640 480 +612 612 +334 500 +640 427 +640 433 +640 480 +500 375 +640 427 +640 313 +478 640 +640 481 +480 640 +640 427 +529 640 +640 480 +640 480 +478 640 +640 448 +640 640 +640 427 +640 496 +640 480 +640 428 +640 480 +640 391 +640 427 +640 590 +500 167 +640 505 +427 640 +640 480 +640 480 +612 612 +640 329 +640 425 +612 612 +640 478 +640 360 +427 640 +640 465 +640 634 +640 636 +640 429 +427 640 +640 427 +640 480 +640 427 +480 640 +640 427 +640 480 +640 480 +357 500 +492 640 +640 360 +612 612 +640 480 +427 640 +427 640 +480 640 +640 429 +500 375 +500 375 +600 445 +500 314 +640 480 +640 428 +500 374 +640 426 +480 640 +640 482 +640 425 +640 480 +640 430 +546 640 +640 427 +640 480 +640 480 +640 480 +640 480 +415 500 +640 473 +640 480 +500 352 +640 428 +612 612 +640 477 +640 480 +640 480 +503 640 +480 640 +640 427 +480 640 +500 375 +640 480 +564 640 +424 640 +427 640 +640 426 +640 500 +640 480 +640 321 +612 612 +640 480 +640 360 +640 537 +640 428 +500 375 +640 427 +500 332 +376 500 +631 640 +373 500 +427 640 +640 427 +640 425 +640 427 +428 640 +500 375 +500 332 +640 480 +640 480 +640 424 +333 500 +640 424 +640 471 +640 478 +500 333 +640 414 +640 427 +640 480 +426 640 +640 427 +427 640 +427 640 +640 424 +640 480 +640 320 +640 480 +640 477 +427 640 +640 427 +640 457 +640 640 +612 612 +480 640 +500 332 +640 384 +427 640 +640 427 +640 433 +640 395 +640 480 +350 400 +500 375 +426 640 +640 427 +600 487 +500 375 +427 640 +427 640 +640 270 +640 480 +480 640 +375 500 +500 375 +640 479 +640 480 +375 500 +640 480 +640 354 +509 640 +480 640 +640 434 +487 640 +640 427 +480 640 +640 426 +640 428 +500 333 +640 427 +640 425 +500 375 +500 375 +640 427 +640 429 +640 458 +480 640 +477 640 +640 428 +640 427 +480 640 +640 427 +640 427 +640 480 +640 359 +640 391 +480 640 +640 425 +427 640 +640 640 +640 425 +640 616 +640 480 +360 640 +640 480 +640 480 +500 375 +427 640 +498 640 +640 432 +457 640 +640 480 +640 480 +640 427 +640 361 +640 380 +640 480 +640 479 +640 480 +640 494 +640 427 +640 428 +480 640 +427 640 +640 427 +640 427 +640 480 +640 480 +500 375 +640 425 +640 486 +640 480 +640 427 +640 467 +640 480 +426 640 +640 427 +640 401 +640 427 +640 429 +426 640 +640 480 +640 480 +480 640 +640 427 +640 413 +640 303 +640 427 +640 480 +640 441 +500 375 +334 500 +640 424 +640 426 +640 480 +640 426 +640 360 +427 640 +427 640 +500 371 +640 472 +640 314 +600 480 +427 640 +500 375 +480 640 +445 500 +640 480 +612 612 +482 294 +427 640 +640 427 +427 640 +640 425 +360 640 +640 480 +426 640 +539 640 +480 640 +500 375 +640 480 +493 640 +640 426 +426 640 +640 512 +640 364 +640 622 +500 375 +616 640 +640 425 +375 500 +640 359 +640 480 +640 480 +640 480 +640 426 +427 640 +640 449 +640 512 +640 425 +640 427 +640 425 +480 640 +480 640 +640 480 +640 480 +640 640 +640 438 +640 428 +640 346 +640 513 +480 640 +363 640 +424 640 +640 480 +640 480 +640 452 +640 512 +640 425 +500 375 +640 427 +640 427 +640 427 +640 427 +480 640 +640 451 +640 424 +640 478 +640 408 +640 427 +426 640 +640 348 +640 427 +640 360 +640 480 +640 469 +640 480 +640 480 +640 360 +500 375 +612 612 +500 375 +427 640 +640 425 +482 640 +640 480 +640 216 +640 480 +480 640 +640 427 +480 640 +640 478 +640 427 +640 426 +640 480 +640 480 +640 617 +640 427 +640 425 +640 466 +640 480 +640 480 +612 612 +427 640 +612 612 +640 383 +640 480 +426 640 +640 480 +500 375 +640 486 +640 640 +425 640 +612 612 +640 427 +640 438 +640 427 +640 426 +640 427 +480 640 +480 640 +427 640 +480 640 +640 480 +640 427 +612 612 +640 413 +640 480 +480 640 +500 486 +427 640 +640 427 +640 428 +640 426 +640 360 +640 427 +640 434 +418 640 +640 459 +640 481 +640 480 +612 612 +640 480 +640 480 +535 640 +640 480 +640 359 +480 640 +640 427 +640 404 +426 640 +640 480 +640 427 +640 478 +428 640 +640 427 +640 428 +640 427 +428 640 +640 568 +640 425 +428 640 +640 427 +640 480 +428 640 +640 426 +480 640 +500 375 +640 427 +640 480 +640 480 +640 424 +500 375 +640 512 +640 480 +480 640 +472 500 +448 640 +640 480 +640 427 +640 426 +640 427 +640 533 +640 480 +640 512 +640 480 +640 382 +640 424 +640 428 +500 375 +640 426 +640 428 +640 480 +640 427 +640 360 +480 640 +427 640 +640 480 +640 480 +640 426 +640 403 +640 480 +640 426 +640 480 +500 375 +640 372 +640 480 +640 480 +640 480 +500 375 +640 480 +361 500 +500 375 +640 480 +640 427 +640 428 +640 427 +640 480 +426 640 +640 480 +640 427 +640 424 +640 493 +640 426 +500 333 +640 448 +605 640 +500 333 +640 480 +500 500 +640 427 +426 640 +640 625 +640 419 +640 480 +640 478 +640 427 +640 427 +640 480 +640 427 +640 360 +640 427 +640 427 +443 460 +640 480 +500 333 +479 640 +640 381 +500 375 +640 480 +640 480 +360 640 +640 409 +427 640 +640 480 +640 480 +640 426 +640 425 +640 480 +640 480 +640 480 +425 640 +480 640 +640 427 +640 427 +640 480 +640 478 +640 426 +375 500 +640 427 +424 640 +640 427 +612 612 +640 253 +427 640 +425 640 +640 601 +500 366 +360 640 +425 640 +612 612 +640 425 +640 536 +424 640 +500 341 +500 339 +427 640 +640 427 +640 361 +640 480 +640 480 +290 359 +640 482 +427 640 +640 427 +640 427 +427 640 +640 480 +451 640 +640 480 +640 427 +640 427 +640 480 +480 640 +640 512 +640 480 +426 640 +640 360 +640 427 +500 375 +640 480 +612 612 +640 480 +640 400 +640 383 +640 480 +640 640 +500 333 +500 375 +375 500 +640 480 +640 481 +612 612 +640 304 +640 480 +640 480 +480 640 +640 480 +640 427 +500 383 +640 480 +500 383 +640 477 +612 612 +640 480 +426 640 +640 425 +640 480 +612 612 +480 640 +375 500 +640 480 +612 612 +640 428 +500 375 +640 454 +640 480 +640 457 +640 481 +640 359 +612 612 +427 640 +375 500 +375 500 +640 425 +640 404 +612 612 +427 640 +500 334 +640 383 +640 480 +400 300 +640 479 +457 640 +640 432 +333 500 +640 480 +640 480 +427 640 +375 500 +480 640 +640 427 +640 427 +640 425 +640 428 +500 375 +640 427 +469 640 +640 480 +640 480 +640 480 +427 640 +375 500 +333 500 +609 640 +640 427 +640 480 +612 612 +640 506 +373 500 +480 640 +640 480 +640 512 +500 380 +640 480 +612 612 +612 612 +640 427 +640 391 +640 469 +640 481 +640 434 +640 427 +640 480 +375 500 +640 427 +640 325 +640 595 +640 538 +640 512 +640 427 +640 480 +450 300 +640 427 +640 427 +500 375 +640 426 +640 426 +640 480 +640 424 +640 427 +640 482 +640 480 +640 427 +640 513 +640 427 +480 640 +480 640 +427 640 +370 640 +640 480 +640 426 +640 480 +640 427 +480 640 +640 427 +640 425 +640 427 +640 480 +612 612 +335 500 +640 412 +480 640 +480 640 +439 640 +500 382 +640 616 +640 480 +427 640 +640 427 +640 427 +500 189 +438 640 +480 640 +640 426 +640 480 +640 480 +640 427 +500 375 +500 333 +530 640 +640 424 +480 640 +426 640 +426 640 +640 428 +640 426 +640 425 +375 500 +640 424 +500 333 +427 640 +427 640 +435 640 +640 483 +640 315 +640 427 +427 640 +640 360 +640 512 +640 383 +375 500 +478 640 +640 340 +640 426 +640 428 +640 427 +640 480 +250 312 +640 480 +640 427 +640 431 +640 425 +640 426 +640 428 +640 490 +500 375 +640 427 +640 480 +480 640 +640 427 +427 640 +640 427 +480 640 +612 612 +512 640 +640 428 +500 357 +640 480 +640 480 +640 427 +427 640 +640 427 +640 427 +640 427 +640 425 +640 480 +640 480 +612 612 +640 480 +428 640 +500 375 +640 537 +500 333 +640 480 +383 640 +500 375 +370 277 +640 427 +640 404 +640 451 +640 483 +500 375 +640 426 +480 640 +640 427 +480 640 +375 500 +640 427 +640 480 +640 425 +640 366 +428 640 +640 452 +640 426 +425 640 +640 361 +640 381 +640 428 +500 375 +640 360 +426 640 +500 334 +640 427 +500 375 +640 424 +640 427 +500 375 +640 428 +375 500 +640 424 +480 640 +480 640 +375 500 +640 427 +640 480 +640 475 +427 640 +640 423 +640 427 +640 480 +480 640 +640 423 +354 640 +600 450 +480 640 +612 612 +640 427 +375 500 +640 421 +640 408 +480 640 +480 640 +500 375 +640 427 +640 480 +640 360 +640 480 +640 480 +640 640 +640 480 +378 640 +480 640 +375 500 +640 426 +640 423 +375 500 +640 426 +640 425 +500 375 +480 640 +360 640 +640 425 +422 640 +640 427 +640 480 +481 640 +427 640 +640 427 +640 214 +640 426 +500 281 +640 485 +640 425 +640 425 +640 480 +500 375 +640 427 +375 500 +640 480 +640 427 +427 640 +640 513 +640 480 +382 500 +640 428 +640 480 +640 480 +640 564 +640 427 +483 640 +500 321 +640 480 +500 333 +500 347 +480 640 +333 500 +640 427 +640 426 +612 612 +640 427 +640 480 +478 640 +640 427 +640 479 +640 478 +640 427 +640 427 +640 425 +640 457 +333 500 +632 640 +480 640 +640 428 +500 334 +640 363 +452 640 +640 480 +427 640 +640 425 +640 480 +500 486 +640 480 +426 640 +640 381 +426 640 +640 428 +640 481 +640 453 +375 500 +500 338 +640 427 +640 424 +640 480 +640 640 +640 480 +500 375 +640 326 +640 446 +640 427 +376 342 +640 427 +640 512 +500 375 +640 427 +480 640 +640 426 +640 426 +426 640 +640 427 +640 426 +640 427 +640 427 +640 360 +597 640 +640 427 +640 427 +640 480 +640 353 +640 447 +640 427 +368 500 +480 640 +640 425 +640 480 +500 332 +640 480 +640 480 +333 500 +640 426 +640 426 +640 426 +640 480 +500 375 +640 480 +640 427 +404 500 +640 480 +500 375 +640 400 +640 446 +640 233 +480 640 +427 640 +500 375 +640 425 +640 436 +640 480 +320 240 +640 480 +640 451 +640 405 +593 395 +427 640 +640 379 +640 480 +640 427 +432 640 +640 425 +640 427 +640 428 +640 480 +480 640 +500 375 +640 450 +640 480 +428 640 +426 640 +640 419 +375 500 +640 480 +640 427 +640 480 +640 456 +640 436 +500 500 +427 640 +640 427 +334 500 +640 566 +612 612 +640 445 +500 375 +480 640 +640 424 +640 480 +640 434 +640 427 +500 375 +640 480 +480 640 +500 333 +480 640 +640 425 +640 480 +640 480 +334 500 +640 480 +428 640 +640 480 +640 427 +480 320 +480 640 +640 355 +640 411 +500 375 +640 425 +461 615 +640 486 +480 640 +640 427 +640 480 +640 427 +640 373 +500 341 +640 427 +640 480 +640 427 +424 640 +640 480 +640 425 +640 480 +640 208 +640 543 +640 434 +640 480 +428 640 +500 375 +640 480 +640 480 +640 466 +500 375 +640 480 +500 384 +640 426 +640 427 +640 424 +640 480 +640 480 +500 500 +640 427 +480 640 +640 428 +640 427 +640 481 +500 439 +640 458 +640 426 +500 375 +640 425 +640 437 +640 469 +640 426 +640 427 +480 640 +640 480 +640 425 +640 427 +640 481 +640 428 +640 480 +640 426 +612 612 +640 480 +500 476 +500 416 +640 427 +640 450 +424 640 +640 480 +640 428 +640 426 +425 640 +640 479 +640 480 +640 427 +640 427 +426 640 +360 640 +640 425 +519 640 +640 427 +640 441 +640 640 +468 640 +375 500 +500 375 +640 397 +640 480 +427 640 +500 375 +427 640 +500 375 +640 449 +640 215 +640 480 +640 479 +640 480 +640 480 +640 509 +500 375 +427 640 +640 425 +640 428 +640 480 +640 480 +640 480 +640 638 +640 480 +640 480 +640 480 +640 348 +640 454 +640 430 +640 480 +427 640 +640 425 +640 480 +640 400 +426 640 +640 457 +640 427 +398 500 +640 480 +640 480 +427 640 +640 427 +480 640 +640 428 +640 480 +640 427 +640 427 +640 480 +500 313 +640 427 +332 500 +480 640 +640 480 +424 640 +640 480 +480 640 +480 640 +427 640 +423 640 +640 427 +428 640 +640 479 +640 480 +459 640 +640 480 +640 427 +640 480 +500 375 +640 426 +640 480 +640 427 +640 423 +640 480 +640 640 +426 640 +640 427 +500 375 +500 333 +640 428 +640 480 +640 426 +375 500 +640 427 +640 360 +640 481 +640 426 +500 431 +640 427 +640 480 +640 424 +640 399 +640 426 +640 452 +427 640 +334 500 +333 500 +314 500 +640 326 +349 640 +640 407 +526 640 +640 426 +434 640 +640 427 +426 640 +500 333 +640 425 +640 480 +640 480 +640 427 +640 436 +640 360 +482 484 +500 375 +640 480 +427 640 +500 375 +640 426 +500 334 +640 588 +427 640 +640 480 +640 425 +640 426 +640 480 +358 373 +344 500 +640 427 +561 640 +500 375 +426 640 +427 640 +640 480 +522 640 +640 480 +500 359 +640 640 +640 480 +640 480 +640 480 +475 640 +500 376 +640 427 +640 480 +640 411 +640 480 +640 486 +500 368 +500 375 +640 392 +640 429 +478 640 +640 480 +334 500 +640 428 +640 432 +612 612 +640 427 +640 480 +383 640 +640 480 +640 480 +539 640 +427 640 +640 480 +480 640 +640 424 +640 426 +640 426 +480 640 +500 375 +480 640 +640 360 +640 426 +640 426 +640 426 +640 427 +640 424 +640 383 +430 500 +640 480 +600 450 +500 375 +640 480 +640 427 +640 640 +640 426 +640 480 +640 480 +500 333 +426 640 +333 500 +640 480 +640 426 +500 332 +480 640 +640 480 +640 480 +426 640 +640 480 +500 375 +480 640 +500 208 +640 478 +612 612 +640 631 +640 480 +500 364 +640 640 +640 305 +449 640 +640 409 +640 426 +640 480 +640 480 +640 427 +640 427 +640 422 +426 640 +640 480 +640 428 +481 640 +500 375 +640 337 +640 480 +500 374 +640 480 +640 416 +500 375 +640 427 +640 427 +480 640 +427 640 +640 436 +640 480 +428 640 +426 640 +640 446 +640 592 +640 480 +640 360 +640 427 +640 480 +375 500 +640 427 +375 500 +333 500 +640 428 +427 640 +640 480 +500 375 +640 360 +600 400 +480 640 +500 331 +640 475 +640 427 +500 375 +640 427 +640 425 +426 640 +640 381 +640 427 +243 360 +480 640 +500 400 +640 480 +640 480 +640 359 +640 427 +640 426 +640 640 +640 427 +640 425 +640 454 +640 425 +640 427 +640 480 +439 640 +640 480 +640 480 +640 480 +639 640 +640 333 +640 480 +427 640 +640 480 +640 435 +640 480 +640 480 +640 478 +640 480 +640 445 +500 334 +640 480 +640 428 +640 427 +640 427 +500 375 +640 425 +640 429 +640 480 +640 427 +472 640 +640 480 +640 360 +640 424 +640 361 +640 480 +640 431 +640 426 +640 428 +640 480 +500 333 +640 427 +640 425 +640 425 +640 480 +486 640 +426 640 +640 480 +500 375 +480 640 +640 480 +427 640 +640 479 +640 409 +640 480 +640 480 +640 427 +640 480 +640 427 +427 640 +500 375 +480 640 +427 640 +500 375 +640 480 +640 481 +500 357 +640 480 +375 500 +640 425 +640 480 +480 640 +640 480 +640 457 +640 480 +424 640 +640 383 +640 480 +640 492 +640 480 +640 480 +427 640 +480 640 +640 427 +428 640 +640 427 +640 480 +640 480 +640 427 +612 612 +640 480 +640 425 +640 427 +427 640 +480 640 +640 480 +500 375 +500 366 +640 480 +640 484 +500 375 +640 427 +640 480 +640 420 +500 333 +640 480 +640 385 +640 426 +640 427 +500 325 +640 500 +427 640 +640 426 +640 480 +500 376 +640 480 +500 375 +640 427 +555 640 +640 427 +640 404 +480 640 +640 480 +427 640 +541 640 +640 359 +640 427 +427 640 +640 427 +640 426 +640 427 +600 600 +640 424 +640 427 +640 424 +640 480 +480 640 +640 480 +640 495 +500 375 +640 479 +500 376 +640 489 +333 500 +490 640 +500 375 +640 628 +640 427 +640 427 +640 433 +640 427 +640 424 +640 480 +416 500 +640 569 +428 640 +480 640 +480 640 +427 640 +640 450 +427 640 +500 375 +640 427 +500 375 +640 480 +640 427 +640 434 +640 424 +640 426 +640 425 +640 480 +440 640 +640 480 +640 425 +640 480 +500 375 +640 480 +640 480 +640 480 +480 640 +500 426 +640 480 +640 480 +640 480 +640 484 +480 640 +640 471 +426 640 +427 640 +640 427 +500 375 +640 480 +640 426 +640 479 +640 427 +481 640 +640 428 +480 640 +640 480 +640 427 +640 640 +640 428 +500 333 +640 427 +640 424 +333 500 +640 424 +640 478 +640 480 +640 427 +480 640 +640 428 +640 480 +640 480 +331 500 +426 640 +640 424 +640 427 +640 360 +640 424 +427 640 +640 480 +480 640 +640 427 +640 360 +640 393 +640 428 +640 427 +640 424 +333 500 +480 640 +640 424 +640 640 +640 426 +640 429 +640 426 +640 599 +640 480 +480 640 +640 480 +640 408 +375 500 +640 430 +425 640 +640 426 +375 500 +427 640 +640 480 +640 427 +426 640 +640 396 +480 640 +640 360 +640 599 +640 479 +640 425 +480 640 +640 480 +640 480 +640 427 +640 427 +640 427 +425 500 +480 640 +640 448 +383 640 +640 480 +427 640 +640 480 +425 640 +640 477 +640 427 +333 500 +640 480 +500 375 +500 333 +640 427 +640 534 +640 480 +640 426 +640 480 +640 426 +640 480 +500 377 +640 480 +480 640 +640 480 +640 429 +640 426 +480 640 +640 478 +640 360 +500 333 +640 480 +640 428 +425 640 +640 480 +640 480 +500 375 +612 612 +500 333 +640 480 +640 479 +640 376 +640 480 +640 508 +640 425 +640 427 +500 467 +500 375 +294 500 +640 640 +640 480 +433 640 +480 640 +640 640 +500 351 +640 427 +640 427 +640 334 +640 428 +429 640 +457 640 +640 480 +500 436 +500 356 +640 425 +612 612 +500 493 +305 640 +640 480 +640 480 +640 480 +640 427 +640 427 +510 640 +424 640 +470 300 +640 480 +640 466 +640 480 +640 480 +640 360 +640 427 +408 640 +480 320 +640 427 +640 480 +500 375 +495 640 +500 379 +426 640 +640 480 +640 426 +640 513 +500 375 +479 640 +640 480 +500 375 +640 478 +480 640 +500 375 +640 480 +640 429 +500 375 +427 640 +640 427 +640 426 +640 425 +640 609 +640 360 +594 447 +640 443 +640 427 +500 375 +640 480 +640 426 +500 375 +640 480 +612 612 +500 375 +640 481 +640 360 +480 640 +640 478 +631 640 +640 427 +640 480 +640 477 +640 480 +640 480 +429 640 +500 375 +640 571 +640 640 +640 480 +640 427 +640 426 +640 524 +640 480 +640 427 +640 394 +612 612 +640 421 +640 426 +480 640 +640 480 +640 640 +457 640 +640 427 +640 248 +427 640 +640 480 +640 426 +427 640 +500 400 +500 375 +640 480 +500 376 +640 506 +640 480 +512 640 +640 480 +640 427 +640 480 +640 427 +480 640 +427 640 +640 425 +500 379 +640 361 +426 640 +500 375 +640 480 +478 640 +640 427 +484 640 +640 427 +500 375 +455 640 +480 640 +500 335 +640 396 +326 500 +640 427 +640 426 +640 425 +549 640 +640 480 +640 426 +640 480 +427 640 +640 424 +640 480 +425 640 +480 640 +640 329 +640 480 +480 640 +500 384 +400 400 +640 480 +640 424 +640 386 +640 360 +640 427 +640 480 +640 427 +640 480 +640 426 +640 480 +480 640 +427 640 +500 375 +640 540 +640 428 +640 425 +640 427 +640 480 +333 500 +563 640 +640 640 +626 526 +640 428 +640 480 +640 427 +640 360 +500 331 +427 640 +640 423 +640 483 +426 640 +640 480 +640 480 +640 480 +427 640 +640 427 +640 640 +500 375 +640 360 +518 640 +426 640 +640 458 +640 427 +640 427 +640 480 +640 593 +640 522 +375 500 +481 640 +640 480 +640 480 +640 403 +427 640 +480 640 +423 640 +426 640 +640 490 +500 375 +640 425 +640 480 +480 640 +640 360 +640 173 +640 480 +640 480 +480 640 +615 640 +640 426 +640 427 +480 640 +480 640 +640 480 +640 512 +640 380 +640 640 +500 400 +500 375 +640 480 +640 426 +640 427 +640 432 +402 500 +640 480 +480 640 +640 480 +597 640 +640 292 +640 426 +640 480 +640 480 +480 640 +640 431 +612 612 +640 427 +640 478 +640 480 +546 640 +640 427 +500 375 +478 640 +640 481 +640 439 +640 426 +640 486 +427 640 +640 427 +427 640 +500 375 +500 375 +640 505 +640 235 +640 428 +640 425 +640 427 +640 480 +478 640 +640 426 +640 427 +640 480 +640 478 +480 640 +512 640 +612 612 +640 427 +480 640 +500 333 +640 424 +375 500 +640 587 +379 335 +640 480 +640 414 +640 426 +400 500 +613 640 +640 480 +427 640 +640 356 +640 480 +480 640 +640 480 +640 480 +640 480 +640 427 +640 640 +640 425 +491 500 +640 478 +480 640 +489 500 +500 375 +640 480 +380 640 +334 500 +429 480 +640 417 +640 427 +640 480 +640 429 +640 426 +461 640 +425 640 +640 480 +640 480 +640 427 +640 427 +448 640 +640 480 +640 427 +640 480 +480 640 +640 429 +427 640 +640 427 +612 612 +640 427 +640 427 +427 640 +500 375 +640 478 +640 429 +582 640 +640 480 +453 640 +640 426 +640 431 +640 427 +640 478 +612 612 +500 410 +360 640 +640 425 +427 640 +640 426 +640 427 +561 640 +640 427 +640 426 +640 427 +640 427 +640 428 +640 480 +640 427 +640 427 +538 640 +573 640 +500 364 +640 426 +467 500 +640 451 +640 427 +640 424 +432 324 +640 428 +640 480 +640 427 +640 437 +334 500 +640 576 +640 430 +640 480 +640 555 +500 375 +500 375 +640 480 +425 640 +500 357 +640 427 +640 427 +640 480 +640 427 +640 427 +427 640 +461 640 +640 480 +425 640 +500 335 +640 480 +375 500 +500 400 +640 427 +640 427 +640 480 +427 640 +640 480 +640 427 +640 480 +448 299 +500 375 +640 426 +640 427 +480 640 +480 640 +640 401 +375 500 +640 480 +640 427 +612 612 +640 484 +640 480 +640 427 +426 640 +480 640 +480 640 +640 429 +640 426 +640 427 +640 480 +640 427 +480 640 +640 480 +426 640 +640 427 +640 480 +640 320 +500 375 +640 640 +427 640 +640 480 +423 640 +640 480 +640 414 +640 506 +480 640 +480 640 +640 367 +640 351 +300 400 +640 322 +640 428 +500 382 +640 428 +640 480 +640 481 +640 427 +425 640 +640 425 +514 640 +640 480 +500 368 +640 360 +640 466 +640 503 +640 427 +500 282 +640 427 +640 427 +640 396 +480 640 +480 640 +640 425 +428 640 +500 333 +640 480 +500 333 +640 427 +640 480 +612 612 +480 640 +640 478 +640 480 +640 428 +640 427 +332 500 +640 427 +480 640 +640 426 +480 640 +640 480 +640 428 +640 429 +640 282 +640 493 +640 389 +375 500 +640 428 +640 427 +500 375 +480 640 +640 480 +640 480 +640 426 +640 400 +640 640 +375 500 +640 480 +428 640 +414 500 +640 544 +640 640 +640 427 +640 427 +480 640 +427 640 +640 480 +484 640 +375 500 +427 640 +640 360 +640 480 +619 640 +640 480 +480 640 +640 640 +640 429 +427 640 +640 480 +640 424 +640 480 +640 428 +425 640 +500 326 +640 427 +428 640 +640 589 +640 426 +480 640 +640 480 +500 500 +500 375 +480 640 +480 640 +500 332 +640 427 +640 428 +640 480 +500 375 +640 446 +640 480 +640 480 +427 640 +640 480 +640 403 +590 590 +500 346 +640 426 +640 428 +640 480 +500 375 +489 640 +400 500 +640 428 +640 359 +640 480 +480 640 +640 424 +424 640 +640 427 +426 640 +640 480 +640 427 +640 478 +640 480 +478 640 +500 374 +427 640 +640 424 +640 480 +640 427 +640 480 +612 612 +640 396 +640 427 +500 375 +640 546 +640 408 +640 480 +640 426 +500 334 +640 428 +640 480 +640 489 +480 640 +480 640 +640 480 +640 480 +640 427 +500 336 +640 427 +500 375 +480 640 +640 427 +640 428 +500 376 +640 480 +500 336 +640 480 +640 426 +500 334 +480 360 +640 480 +640 402 +424 640 +480 640 +640 480 +640 480 +612 612 +640 518 +640 484 +427 640 +612 612 +640 480 +480 640 +485 500 +375 500 +565 640 +426 640 +375 500 +640 603 +640 480 +427 640 +640 517 +625 640 +640 388 +480 640 +500 332 +512 640 +640 427 +612 612 +630 640 +640 601 +640 480 +640 506 +480 640 +640 426 +640 427 +640 480 +640 427 +428 640 +640 427 +333 500 +500 333 +640 480 +500 375 +640 480 +640 480 +640 480 +640 429 +500 333 +640 427 +640 427 +640 478 +640 458 +640 480 +500 335 +427 640 +397 567 +640 480 +480 640 +640 427 +640 427 +640 480 +429 640 +640 425 +640 640 +640 428 +640 480 +500 332 +640 383 +480 640 +612 612 +480 640 +640 426 +640 480 +445 640 +640 427 +500 375 +640 427 +640 329 +640 480 +640 480 +640 492 +640 427 +640 480 +640 454 +640 360 +640 427 +425 640 +640 480 +640 242 +480 640 +640 425 +640 480 +640 461 +640 480 +640 423 +640 480 +640 480 +640 631 +640 582 +480 640 +500 375 +640 480 +640 480 +640 428 +640 429 +640 480 +640 425 +640 480 +640 480 +640 480 +640 480 +368 500 +640 401 +640 480 +427 640 +640 480 +640 428 +640 457 +640 425 +480 640 +640 480 +500 333 +640 480 +640 427 +640 481 +640 427 +480 640 +640 480 +500 335 +500 329 +427 640 +640 427 +640 427 +640 427 +640 480 +640 457 +500 375 +640 428 +431 640 +640 423 +640 640 +640 524 +428 640 +640 426 +640 428 +640 426 +640 425 +375 500 +500 175 +500 500 +448 640 +640 429 +612 612 +640 480 +640 427 +640 480 +640 480 +640 384 +640 514 +640 480 +640 427 +640 427 +403 604 +640 512 +640 480 +612 612 +500 331 +640 427 +640 259 +500 375 +500 375 +640 480 +640 427 +640 426 +640 480 +640 299 +640 425 +640 427 +640 512 +479 640 +500 333 +640 427 +640 512 +640 373 +480 640 +500 375 +640 427 +640 424 +500 375 +640 429 +425 640 +480 640 +399 640 +640 480 +640 482 +500 322 +640 480 +640 480 +640 508 +640 424 +640 480 +640 489 +480 640 +640 427 +640 458 +640 466 +640 480 +500 375 +640 424 +500 387 +640 480 +427 640 +640 495 +426 640 +640 480 +640 480 +480 640 +640 408 +480 640 +480 640 +640 480 +426 640 +640 480 +640 424 +640 427 +640 478 +640 478 +640 474 +375 500 +640 480 +640 427 +640 480 +448 336 +500 345 +460 500 +640 480 +640 480 +360 640 +640 386 +640 344 +428 640 +480 640 +500 412 +640 427 +640 480 +640 480 +500 332 +640 427 +640 572 +640 480 +640 387 +500 333 +445 640 +480 640 +640 423 +500 366 +640 359 +480 640 +640 426 +612 612 +500 375 +480 640 +640 480 +640 361 +640 480 +640 431 +640 427 +640 426 +640 427 +480 640 +640 230 +640 361 +640 480 +640 483 +640 480 +500 375 +480 640 +640 458 +640 640 +640 480 +640 426 +480 360 +640 427 +640 480 +640 482 +640 425 +640 410 +640 480 +640 458 +640 370 +640 426 +640 480 +500 375 +640 480 +424 640 +500 333 +640 427 +500 375 +494 640 +640 427 +480 640 +640 480 +640 427 +640 400 +333 500 +375 500 +500 333 +480 640 +640 427 +640 426 +640 480 +500 333 +640 480 +473 640 +640 480 +480 640 +600 400 +640 480 +640 403 +480 640 +480 640 +500 375 +500 375 +480 640 +500 375 +579 640 +640 426 +480 640 +640 404 +640 480 +640 480 +640 426 +640 426 +640 512 +640 480 +640 427 +500 333 +427 640 +640 427 +640 360 +426 640 +640 480 +640 480 +425 640 +591 640 +500 500 +640 427 +428 640 +640 380 +640 480 +640 480 +640 480 +640 426 +640 171 +500 375 +458 640 +640 426 +500 448 +640 424 +640 427 +612 612 +500 384 +333 500 +640 480 +640 360 +519 640 +640 427 +500 375 +500 375 +640 480 +425 640 +640 512 +640 549 +640 400 +640 480 +480 640 +640 640 +464 640 +640 426 +640 353 +480 640 +640 427 +640 463 +500 375 +480 640 +500 375 +474 640 +640 428 +480 384 +640 480 +640 480 +640 439 +508 640 +612 612 +640 427 +640 480 +640 402 +640 338 +640 361 +500 374 +640 427 +640 480 +640 416 +452 500 +612 612 +640 640 +375 500 +480 640 +640 480 +640 428 +500 344 +640 427 +640 480 +640 427 +640 427 +640 424 +640 480 +640 425 +640 471 +640 480 +640 431 +640 427 +640 480 +640 512 +640 480 +640 480 +640 427 +640 480 +425 640 +640 427 +640 441 +640 480 +480 640 +640 427 +640 360 +500 375 +640 425 +481 640 +640 421 +640 480 +450 640 +640 454 +640 425 +427 640 +640 360 +640 480 +640 480 +640 427 +640 480 +640 480 +640 427 +640 480 +427 640 +424 640 +640 480 +640 461 +500 154 +480 640 +375 500 +640 427 +640 480 +581 640 +426 640 +640 480 +512 640 +425 640 +640 428 +500 332 +640 427 +640 427 +640 478 +640 433 +640 463 +640 444 +640 360 +640 480 +480 640 +640 429 +640 426 +640 480 +334 500 +640 425 +640 434 +640 640 +640 640 +640 359 +640 480 +640 427 +640 424 +640 482 +640 480 +500 324 +640 428 +640 371 +640 427 +360 640 +640 480 +427 640 +640 427 +640 173 +640 480 +640 426 +640 487 +375 500 +640 480 +500 334 +500 375 +334 500 +640 426 +640 480 +640 480 +480 640 +640 480 +480 640 +640 426 +640 480 +640 483 +640 427 +385 640 +640 478 +640 480 +640 427 +640 359 +640 480 +640 427 +640 480 +640 480 +640 640 +640 480 +640 425 +603 640 +640 512 +640 480 +640 424 +640 640 +640 427 +640 482 +500 332 +640 401 +640 480 +640 426 +640 480 +640 425 +335 246 +640 480 +240 363 +480 640 +500 375 +640 480 +500 375 +640 426 +640 428 +640 427 +375 500 +640 421 +480 640 +500 375 +604 453 +640 427 +640 478 +400 600 +480 640 +640 640 +612 612 +640 427 +228 500 +640 462 +640 487 +272 480 +640 480 +480 640 +640 427 +427 640 +435 640 +375 500 +640 480 +640 427 +640 452 +640 428 +427 640 +500 231 +375 500 +640 480 +563 640 +640 479 +426 640 +640 360 +428 640 +640 608 +640 361 +640 480 +640 427 +640 480 +480 640 +375 500 +640 640 +640 426 +640 353 +640 480 +491 500 +640 424 +640 470 +640 337 +640 468 +640 480 +640 432 +640 502 +640 360 +640 480 +456 640 +499 640 +640 480 +425 640 +640 399 +640 480 +425 640 +640 480 +640 426 +500 319 +640 427 +500 335 +426 640 +640 478 +375 500 +426 640 +640 478 +468 298 +640 640 +612 612 +640 421 +500 375 +426 640 +640 640 +500 338 +428 640 +500 333 +480 640 +329 497 +640 640 +500 500 +640 431 +505 640 +640 425 +500 375 +480 640 +480 640 +612 612 +379 640 +640 425 +640 479 +640 427 +640 480 +637 640 +500 336 +500 375 +640 425 +640 426 +640 306 +640 514 +640 640 +333 500 +640 427 +480 640 +612 612 +640 480 +640 480 +421 640 +640 480 +429 640 +640 480 +612 612 +640 480 +640 480 +640 425 +516 640 +480 640 +480 640 +640 427 +640 426 +640 480 +640 426 +640 428 +640 480 +640 425 +480 640 +640 480 +480 440 +500 394 +426 640 +612 612 +500 375 +500 334 +500 394 +640 427 +640 480 +640 480 +640 480 +640 427 +640 428 +500 375 +640 480 +427 640 +640 478 +375 500 +640 426 +389 640 +640 480 +480 640 +640 427 +500 334 +426 640 +500 375 +640 427 +640 426 +640 406 +640 480 +640 478 +640 401 +428 640 +640 424 +375 500 +640 427 +640 480 +640 427 +426 640 +640 427 +480 640 +640 427 +640 633 +375 500 +640 429 +640 426 +640 518 +640 480 +640 427 +640 426 +640 426 +640 480 +500 366 +375 500 +480 640 +640 591 +640 480 +640 427 +640 426 +459 500 +500 335 +640 427 +640 364 +640 427 +640 578 +640 459 +480 640 +640 480 +467 352 +500 500 +640 480 +640 426 +640 360 +640 480 +640 480 +640 429 +480 640 +640 311 +480 640 +563 422 +640 474 +640 360 +640 427 +640 426 +640 480 +500 375 +640 417 +640 427 +480 640 +640 480 +154 205 +500 375 +640 480 +640 427 +640 418 +480 640 +640 530 +375 500 +431 640 +500 375 +640 480 +500 334 +640 416 +640 353 +427 640 +429 640 +640 480 +640 480 +640 480 +480 640 +640 480 +500 334 +640 427 +478 640 +640 427 +500 375 +500 332 +640 480 +640 480 +640 480 +640 427 +640 427 +640 480 +640 480 +640 480 +640 480 +612 612 +640 379 +640 427 +333 500 +640 453 +640 426 +640 425 +375 500 +640 480 +640 427 +480 640 +640 427 +640 437 +478 640 +424 640 +480 640 +480 640 +478 640 +427 640 +640 583 +480 640 +640 424 +480 640 +375 500 +640 428 +640 426 +640 427 +375 500 +640 428 +427 640 +480 640 +640 427 +623 640 +640 480 +640 480 +640 480 +500 333 +640 425 +480 640 +463 640 +480 640 +640 426 +500 333 +640 427 +640 480 +612 612 +478 640 +640 427 +640 480 +640 480 +424 640 +640 478 +640 427 +640 480 +612 612 +640 480 +427 640 +640 428 +500 375 +334 500 +426 640 +333 500 +640 459 +640 427 +640 427 +640 427 +640 428 +480 640 +640 480 +500 333 +427 640 +500 333 +640 427 +500 375 +427 640 +558 640 +500 375 +373 500 +640 480 +640 480 +640 480 +500 249 +480 640 +500 367 +640 427 +640 480 +640 480 +640 427 +480 640 +640 480 +480 640 +604 453 +640 429 +512 640 +640 360 +640 339 +631 640 +425 640 +640 427 +640 480 +640 425 +640 480 +640 480 +427 640 +612 612 +480 640 +640 408 +470 640 +640 426 +500 281 +640 480 +640 428 +640 426 +375 500 +640 426 +375 500 +640 427 +640 427 +427 640 +640 480 +427 640 +640 427 +640 480 +640 338 +640 480 +640 602 +640 428 +480 640 +640 427 +500 329 +424 640 +375 500 +640 480 +640 406 +480 640 +500 375 +640 427 +512 640 +471 640 +640 424 +480 640 +640 443 +640 360 +640 427 +640 480 +480 640 +640 480 +500 434 +431 640 +640 427 +640 480 +480 360 +500 300 +640 426 +432 640 +640 480 +640 424 +640 480 +427 640 +427 640 +640 425 +640 427 +640 480 +640 427 +640 428 +432 288 +640 426 +500 332 +640 471 +640 348 +480 640 +480 640 +640 480 +320 240 +612 612 +640 427 +500 375 +333 500 +640 427 +640 480 +479 640 +640 480 +500 343 +640 622 +640 427 +640 426 +273 500 +480 640 +640 424 +480 640 +375 640 +612 612 +500 375 +640 480 +640 573 +480 640 +640 427 +640 480 +640 480 +640 426 +640 458 +640 426 +375 500 +500 375 +640 401 +640 480 +422 640 +640 426 +500 336 +640 412 +640 427 +640 480 +428 640 +427 640 +320 240 +427 640 +640 480 +640 480 +640 478 +640 480 +640 427 +500 375 +612 612 +479 640 +640 454 +640 427 +640 480 +640 427 +640 480 +500 375 +640 480 +500 375 +303 500 +640 427 +612 612 +486 640 +480 640 +640 428 +640 426 +480 640 +383 640 +640 480 +480 640 +640 424 +640 428 +640 409 +640 427 +640 480 +640 428 +500 500 +640 427 +556 640 +427 640 +640 480 +320 240 +640 640 +500 332 +640 480 +640 427 +612 612 +640 480 +640 480 +480 640 +456 640 +612 612 +640 400 +640 426 +640 410 +640 360 +439 640 +640 480 +612 612 +640 426 +640 480 +441 640 +500 310 +640 427 +640 427 +640 468 +640 427 +500 375 +640 480 +640 480 +427 640 +612 612 +480 640 +480 640 +640 427 +640 480 +640 427 +500 375 +640 480 +640 480 +640 427 +640 480 +480 640 +500 375 +640 427 +640 480 +612 612 +500 335 +640 428 +640 427 +640 425 +640 360 +640 480 +640 427 +640 480 +640 424 +640 480 +640 427 +640 427 +640 428 +640 426 +640 423 +640 468 +640 483 +640 616 +640 480 +640 427 +427 640 +640 480 +640 427 +640 427 +640 480 +640 490 +448 336 +480 640 +480 640 +333 500 +640 431 +640 591 +640 480 +640 427 +500 490 +640 480 +640 427 +640 442 +640 480 +640 480 +640 428 +640 427 +640 480 +640 427 +640 427 +640 427 +640 482 +640 361 +640 426 +640 397 +624 640 +640 427 +640 426 +640 480 +640 480 +500 375 +640 480 +514 640 +500 333 +640 480 +640 406 +328 500 +640 480 +500 356 +640 428 +640 480 +640 426 +640 427 +640 427 +640 464 +640 427 +640 480 +500 333 +640 480 +640 480 +640 480 +640 480 +375 207 +640 427 +640 480 +640 366 +458 640 +640 427 +640 426 +640 480 +481 640 +640 480 +640 425 +640 471 +500 333 +640 426 +500 375 +640 478 +640 427 +612 612 +640 484 +500 331 +500 284 +526 640 +426 640 +640 480 +640 426 +640 427 +640 427 +640 376 +640 480 +386 500 +640 425 +640 425 +374 500 +640 416 +640 499 +480 640 +640 427 +457 640 +640 480 +579 640 +640 511 +640 480 +640 428 +500 354 +500 375 +640 480 +426 640 +640 394 +640 426 +520 373 +480 640 +640 480 +480 640 +640 480 +640 480 +500 346 +640 480 +593 640 +640 480 +344 500 +640 393 +500 375 +480 640 +640 480 +500 458 +640 425 +480 640 +640 426 +640 480 +500 375 +438 640 +640 480 +640 427 +500 333 +612 612 +640 480 +500 408 +640 427 +640 480 +427 640 +640 427 +640 480 +640 427 +640 457 +640 427 +640 405 +480 640 +640 480 +640 426 +640 426 +500 343 +500 401 +427 640 +574 640 +640 480 +335 500 +500 375 +640 480 +640 480 +640 427 +640 480 +640 427 +640 564 +640 542 +500 500 +640 409 +480 640 +612 612 +428 640 +640 426 +640 480 +640 427 +640 424 +640 633 +640 480 +640 426 +640 480 +640 361 +640 426 +640 266 +640 424 +500 307 +640 480 +425 640 +500 368 +568 640 +640 453 +640 427 +640 503 +500 375 +640 374 +640 359 +640 427 +640 448 +426 640 +640 480 +400 500 +500 333 +640 427 +640 426 +640 427 +640 601 +640 427 +640 513 +640 480 +640 425 +427 640 +640 480 +640 426 +500 375 +640 427 +427 640 +640 480 +500 425 +500 340 +640 427 +640 480 +640 359 +640 478 +640 480 +427 640 +640 360 +640 376 +640 460 +640 406 +640 480 +640 427 +612 612 +500 375 +419 640 +640 588 +640 428 +480 640 +375 500 +640 427 +640 480 +640 480 +640 423 +640 480 +640 480 +640 513 +640 640 +640 361 +640 498 +640 426 +640 480 +640 427 +500 375 +640 427 +270 360 +457 640 +426 640 +386 640 +501 640 +479 640 +640 634 +640 426 +640 480 +521 640 +640 426 +428 640 +640 426 +500 375 +640 427 +640 360 +427 640 +640 480 +640 427 +431 259 +640 426 +640 604 +600 386 +393 500 +640 426 +640 478 +640 425 +612 612 +332 500 +639 640 +500 640 +640 448 +500 333 +500 333 +640 480 +640 427 +640 427 +500 349 +640 435 +640 424 +640 512 +500 333 +640 426 +640 480 +640 480 +480 640 +500 449 +640 480 +640 480 +640 427 +640 481 +480 640 +500 375 +640 425 +640 478 +500 330 +640 554 +640 479 +640 480 +640 480 +640 348 +640 427 +640 480 +640 480 +640 427 +640 425 +624 640 +640 480 +640 424 +531 640 +640 381 +640 480 +640 428 +640 427 +640 437 +393 500 +374 500 +640 480 +640 443 +640 480 +640 480 +640 428 +640 428 +640 443 +500 334 +640 427 +500 346 +640 430 +640 427 +640 427 +500 375 +640 354 +480 640 +640 428 +640 480 +360 640 +640 480 +426 640 +640 391 +640 478 +640 512 +640 480 +500 375 +276 410 +500 375 +480 640 +478 640 +427 640 +640 422 +640 425 +640 480 +640 426 +640 480 +640 480 +640 426 +640 520 +640 426 +640 480 +640 488 +612 612 +333 500 +640 480 +500 375 +640 427 +281 500 +640 426 +640 480 +413 500 +640 427 +640 480 +640 480 +640 427 +640 428 +503 640 +640 427 +640 359 +640 480 +640 425 +640 425 +640 427 +428 640 +640 480 +640 182 +640 427 +500 375 +479 640 +612 612 +480 640 +640 480 +640 480 +600 400 +640 427 +640 386 +640 480 +640 480 +375 500 +640 480 +640 480 +427 640 +640 427 +640 480 +640 396 +480 640 +640 480 +640 427 +480 640 +480 640 +640 360 +500 375 +640 543 +640 427 +640 465 +640 426 +360 640 +640 369 +640 480 +640 428 +640 480 +640 475 +403 500 +480 640 +640 410 +500 333 +480 640 +640 480 +640 427 +426 640 +640 480 +424 640 +640 336 +480 640 +640 427 +500 333 +480 640 +500 390 +640 442 +612 612 +640 541 +612 612 +401 500 +612 612 +640 427 +640 428 +640 426 +640 427 +640 425 +640 480 +375 500 +640 427 +640 427 +640 480 +640 418 +640 425 +427 640 +426 640 +640 480 +640 425 +375 500 +640 427 +640 427 +640 360 +500 400 +640 427 +640 480 +640 427 +426 640 +361 640 +640 427 +640 480 +640 480 +427 640 +640 480 +375 500 +480 640 +640 425 +640 480 +500 375 +640 480 +640 427 +640 427 +426 640 +640 426 +640 480 +640 427 +480 640 +640 427 +424 640 +640 428 +480 640 +480 640 +457 640 +640 480 +480 640 +500 334 +640 480 +426 640 +640 452 +500 333 +640 544 +640 428 +423 640 +640 427 +640 428 +480 640 +640 427 +640 480 +612 612 +640 427 +480 640 +500 375 +640 427 +640 428 +425 640 +391 640 +397 640 +640 480 +640 425 +640 480 +427 640 +640 480 +425 640 +640 480 +375 500 +500 335 +640 416 +640 427 +640 495 +640 427 +640 428 +500 375 +640 427 +640 425 +640 333 +480 640 +500 333 +425 640 +640 428 +640 640 +640 424 +640 427 +500 640 +640 427 +640 426 +640 427 +640 478 +640 457 +640 425 +640 480 +640 480 +500 331 +494 640 +640 480 +640 428 +375 500 +428 640 +500 281 +640 480 +640 426 +640 425 +640 427 +640 478 +640 414 +640 427 +449 640 +640 426 +479 640 +640 519 +640 479 +640 427 +480 640 +500 333 +640 427 +494 500 +640 427 +640 480 +640 552 +500 375 +480 640 +640 504 +640 480 +480 640 +569 640 +500 333 +640 480 +640 435 +640 480 +500 375 +640 427 +640 480 +500 375 +480 640 +640 480 +640 640 +398 640 +640 427 +640 424 +640 425 +341 500 +640 359 +640 422 +640 491 +640 503 +640 429 +640 480 +414 640 +640 480 +640 529 +640 480 +640 513 +640 478 +640 427 +375 500 +640 480 +640 480 +480 360 +640 640 +375 500 +640 480 +640 480 +480 640 +640 608 +640 480 +640 427 +640 480 +640 359 +640 480 +500 375 +500 375 +640 427 +640 480 +500 375 +640 426 +500 500 +640 532 +640 480 +612 612 +640 532 +612 612 +426 640 +500 332 +500 375 +640 480 +640 450 +458 640 +640 291 +640 427 +640 480 +640 429 +500 333 +640 480 +640 360 +640 427 +640 426 +640 480 +640 480 +480 640 +640 425 +480 640 +500 375 +476 640 +500 328 +640 480 +640 458 +640 480 +640 427 +640 360 +640 424 +640 411 +457 640 +640 558 +572 640 +427 640 +640 427 +427 640 +640 349 +640 480 +427 640 +640 427 +640 428 +640 360 +428 640 +640 360 +480 640 +640 425 +640 508 +640 640 +640 426 +640 491 +640 480 +612 612 +480 640 +640 427 +640 480 +640 426 +640 480 +500 463 +640 480 +640 480 +640 480 +640 419 +640 479 +640 480 +640 480 +500 375 +640 381 +640 425 +640 428 +480 640 +450 286 +640 480 +640 427 +600 450 +640 480 +640 428 +640 480 +640 480 +640 426 +640 427 +500 375 +640 480 +500 375 +500 375 +640 425 +640 308 +640 424 +480 640 +478 640 +427 640 +375 500 +640 428 +500 375 +434 640 +640 480 +640 480 +500 293 +640 427 +640 488 +640 427 +640 427 +640 427 +480 640 +640 426 +480 640 +640 424 +640 427 +424 640 +640 480 +640 480 +640 480 +494 640 +427 640 +640 348 +356 500 +640 480 +375 500 +431 640 +500 365 +640 428 +612 612 +640 489 +640 480 +480 640 +640 480 +640 424 +640 428 +640 480 +640 479 +640 427 +640 427 +480 640 +500 325 +640 427 +640 432 +640 427 +640 444 +427 640 +640 427 +425 640 +480 640 +640 433 +480 640 +640 409 +640 480 +640 427 +375 500 +333 500 +640 468 +480 640 +640 480 +640 471 +640 463 +640 429 +640 480 +640 402 +640 478 +472 640 +100 144 +640 428 +640 425 +640 481 +640 386 +640 480 +640 480 +640 427 +640 463 +480 640 +425 640 +500 333 +640 427 +640 480 +640 480 +640 424 +500 375 +640 482 +640 427 +640 427 +640 544 +640 427 +640 611 +480 640 +612 612 +640 480 +640 480 +640 480 +444 640 +640 427 +640 479 +253 640 +480 640 +640 480 +612 612 +640 478 +640 480 +640 427 +427 640 +640 480 +640 480 +427 640 +640 488 +520 640 +612 612 +640 427 +640 426 +640 480 +480 640 +640 407 +640 480 +640 480 +500 375 +480 640 +399 640 +640 480 +427 640 +640 384 +360 640 +457 640 +640 334 +640 426 +428 640 +640 425 +640 480 +640 427 +640 426 +396 640 +480 640 +640 427 +640 480 +640 480 +480 640 +640 480 +640 426 +640 417 +640 480 +640 513 +640 427 +640 426 +640 480 +640 485 +640 480 +640 360 +457 640 +640 427 +640 405 +640 360 +640 480 +640 199 +640 480 +640 428 +640 480 +640 426 +482 640 +640 433 +640 480 +640 640 +640 427 +640 480 +640 408 +548 640 +640 426 +480 640 +480 640 +612 612 +640 427 +640 640 +640 481 +360 640 +640 457 +640 480 +640 426 +640 426 +640 426 +426 640 +500 335 +640 461 +640 427 +640 480 +640 427 +630 640 +640 424 +640 215 +640 429 +640 429 +640 480 +640 480 +640 427 +640 478 +480 640 +640 479 +640 480 +640 426 +640 480 +640 427 +640 480 +640 480 +640 426 +640 480 +640 427 +640 428 +480 640 +612 612 +480 640 +424 640 +640 427 +612 612 +500 500 +640 427 +640 427 +500 375 +640 480 +427 640 +640 427 +500 375 +480 640 +640 480 +640 480 +426 640 +640 480 +640 480 +518 640 +640 462 +427 640 +640 427 +500 333 +500 375 +640 480 +427 640 +480 640 +640 480 +481 640 +640 480 +640 480 +500 375 +425 640 +480 640 +426 640 +427 640 +320 240 +640 427 +640 480 +640 480 +640 425 +640 480 +478 640 +640 427 +640 426 +640 456 +640 480 +480 640 +480 640 +640 640 +334 500 +640 428 +640 449 +500 375 +640 394 +640 480 +500 257 +426 640 +640 426 +427 640 +640 479 +640 427 +426 640 +640 506 +478 640 +480 640 +640 480 +500 333 +640 425 +640 480 +640 424 +400 500 +640 428 +375 500 +427 640 +640 315 +640 480 +334 500 +480 640 +480 640 +480 640 +640 480 +640 427 +640 480 +640 428 +296 640 +640 426 +500 333 +500 472 +431 640 +461 640 +640 480 +500 403 +640 427 +640 428 +640 480 +426 640 +500 375 +480 640 +500 375 +500 375 +640 427 +640 285 +640 428 +480 640 +640 427 +480 640 +640 427 +640 428 +640 427 +640 480 +640 427 +640 427 +333 500 +500 375 +512 640 +640 426 +640 480 +640 427 +612 612 +500 375 +640 427 +425 640 +640 443 +480 640 +640 487 +428 640 +332 500 +640 360 +640 482 +640 480 +640 426 +480 640 +640 427 +640 368 +640 480 +427 640 +425 640 +640 480 +500 335 +500 333 +424 640 +640 428 +454 640 +640 640 +640 480 +640 480 +640 427 +640 480 +640 427 +334 500 +640 579 +480 640 +640 383 +640 428 +640 480 +640 478 +640 426 +640 444 +640 569 +464 640 +631 640 +640 480 +640 428 +640 427 +640 480 +640 360 +640 480 +612 612 +426 640 +640 480 +427 640 +640 427 +640 480 +640 480 +640 480 +640 640 +426 640 +429 600 +500 375 +640 480 +500 375 +480 640 +640 480 +640 427 +640 480 +612 612 +640 481 +640 323 +640 429 +612 612 +640 480 +640 425 +640 360 +500 332 +640 480 +640 426 +500 375 +640 640 +480 640 +640 480 +640 480 +640 428 +640 480 +640 429 +640 640 +640 514 +333 500 +640 480 +516 640 +640 427 +640 422 +640 427 +640 427 +640 427 +480 640 +612 612 +640 480 +363 500 +500 375 +500 374 +429 640 +640 425 +427 640 +640 480 +640 480 +640 425 +640 480 +640 596 +640 429 +640 480 +640 473 +640 341 +640 427 +480 640 +600 591 +640 480 +500 375 +500 357 +480 359 +338 500 +640 486 +640 426 +640 480 +540 477 +471 640 +640 427 +500 311 +500 326 +427 640 +640 480 +640 480 +510 640 +640 480 +500 375 +640 314 +640 426 +500 332 +640 426 +640 480 +640 480 +640 396 +344 500 +480 640 +640 526 +640 480 +639 640 +612 612 +640 461 +500 375 +640 427 +640 426 +640 425 +640 428 +640 564 +640 428 +500 375 +640 416 +640 438 +640 480 +640 480 +640 480 +478 640 +480 640 +427 640 +640 424 +339 500 +640 467 +640 480 +640 480 +640 428 +428 640 +640 426 +400 600 +500 222 +640 640 +640 429 +640 360 +640 480 +640 427 +500 375 +480 640 +383 640 +640 424 +500 375 +640 426 +640 480 +640 426 +640 445 +512 640 +640 395 +640 424 +640 482 +640 427 +640 512 +640 480 +640 424 +640 426 +640 480 +640 480 +640 425 +480 640 +427 640 +640 427 +500 375 +640 445 +640 501 +640 426 +640 480 +612 612 +640 427 +375 500 +640 480 +640 427 +640 427 +640 424 +334 500 +500 333 +500 357 +640 480 +640 429 +640 427 +640 480 +580 377 +640 499 +426 640 +640 609 +640 480 +640 333 +479 640 +541 640 +640 496 +640 359 +640 427 +612 612 +640 473 +375 500 +640 427 +427 640 +480 640 +612 612 +480 640 +640 393 +500 332 +424 640 +500 414 +640 473 +640 253 +500 473 +640 426 +640 416 +640 427 +414 640 +640 427 +640 427 +640 427 +640 480 +640 480 +640 480 +640 427 +612 612 +640 480 +640 427 +640 480 +640 480 +640 324 +480 640 +640 361 +640 424 +320 240 +640 427 +480 640 +640 425 +640 550 +640 640 +640 480 +640 429 +640 480 +640 491 +640 426 +640 368 +384 640 +640 427 +480 640 +640 427 +640 426 +428 640 +640 480 +427 640 +640 384 +640 448 +640 444 +640 320 +640 427 +640 427 +612 612 +640 480 +480 640 +640 427 +425 640 +640 480 +640 373 +640 425 +500 375 +640 480 +617 640 +640 427 +640 640 +640 480 +364 640 +442 500 +640 480 +500 377 +640 486 +640 550 +640 426 +640 427 +640 491 +640 380 +640 425 +640 411 +480 640 +640 427 +640 480 +640 383 +640 461 +640 416 +640 426 +640 427 +427 640 +640 480 +433 640 +480 640 +612 612 +480 640 +640 427 +500 331 +500 375 +640 427 +640 480 +480 640 +480 640 +640 480 +640 427 +640 360 +500 336 +640 427 +640 407 +640 438 +640 427 +427 640 +481 640 +480 640 +640 480 +640 480 +320 240 +640 424 +640 508 +640 399 +480 640 +640 320 +640 480 +480 640 +294 196 +640 464 +427 640 +334 640 +480 640 +640 480 +500 375 +640 428 +640 426 +640 427 +500 335 +640 426 +640 640 +426 640 +640 428 +640 388 +480 640 +640 320 +480 640 +640 480 +640 480 +640 428 +333 500 +500 375 +640 424 +480 640 +569 640 +640 278 +500 375 +480 640 +640 424 +640 480 +640 427 +640 428 +640 360 +640 426 +456 640 +640 426 +640 426 +427 640 +427 640 +640 427 +640 480 +640 427 +510 640 +640 480 +640 475 +640 480 +640 417 +640 480 +640 480 +640 427 +640 426 +640 427 +426 640 +640 480 +640 427 +640 398 +640 480 +640 462 +333 500 +640 475 +375 500 +480 640 +500 341 +640 285 +640 480 +480 640 +640 427 +480 640 +426 640 +640 427 +640 640 +640 425 +640 426 +640 480 +480 640 +333 500 +640 383 +375 500 +640 480 +640 636 +427 640 +480 640 +640 480 +500 399 +500 332 +640 304 +640 480 +427 640 +640 480 +640 480 +512 640 +427 640 +500 391 +500 422 +433 640 +334 500 +640 640 +640 425 +424 640 +640 427 +640 400 +375 500 +640 427 +640 640 +640 424 +427 640 +529 640 +640 480 +640 393 +640 427 +640 480 +500 374 +500 333 +640 480 +425 640 +612 612 +640 480 +480 640 +480 640 +480 640 +480 640 +500 375 +500 153 +500 333 +640 426 +640 483 +640 480 +640 480 +640 427 +640 480 +640 427 +640 427 +640 438 +640 428 +634 640 +640 343 +640 529 +640 425 +640 426 +500 247 +640 425 +640 496 +480 640 +500 332 +640 478 +500 375 +480 640 +640 480 +640 427 +640 366 +640 438 +437 500 +389 540 +640 428 +640 480 +640 480 +360 640 +640 427 +478 640 +640 480 +500 334 +640 480 +640 427 +581 640 +640 480 +427 640 +640 400 +640 425 +640 480 +640 480 +640 443 +640 480 +640 427 +640 456 +640 427 +640 427 +640 484 +478 640 +640 480 +480 640 +640 480 +500 375 +640 430 +640 482 +640 427 +640 480 +640 426 +427 640 +427 640 +640 359 +640 480 +640 426 +640 399 +640 427 +445 640 +333 500 +640 425 +640 425 +480 640 +500 335 +424 640 +640 480 +480 640 +427 640 +500 334 +640 426 +640 480 +640 480 +640 480 +640 472 +490 367 +500 335 +640 480 +640 418 +612 612 +640 508 +640 480 +640 427 +640 360 +500 379 +640 427 +640 480 +640 427 +640 480 +640 424 +500 433 +480 640 +480 640 +640 480 +640 480 +640 426 +480 640 +640 428 +500 375 +640 144 +640 480 +640 425 +585 329 +483 640 +640 502 +640 425 +640 360 +640 480 +500 333 +640 480 +640 484 +640 383 +480 640 +640 480 +640 480 +640 424 +640 480 +640 427 +612 612 +383 640 +640 429 +640 485 +640 427 +500 276 +640 539 +640 480 +640 427 +640 478 +640 491 +480 640 +640 427 +640 480 +640 426 +640 425 +640 427 +640 480 +640 424 +480 640 +612 612 +640 426 +640 425 +640 359 +480 640 +640 368 +500 333 +480 640 +500 500 +640 480 +640 480 +640 425 +640 480 +640 456 +640 427 +640 480 +640 425 +640 427 +500 500 +484 640 +640 480 +447 640 +640 427 +525 640 +640 426 +640 480 +353 500 +500 375 +640 480 +640 359 +640 480 +640 396 +640 463 +640 480 +640 495 +640 427 +611 640 +480 640 +426 640 +640 446 +480 640 +427 640 +612 612 +640 480 +427 640 +640 423 +457 640 +640 423 +640 427 +640 480 +427 640 +640 480 +480 640 +640 427 +542 588 +640 425 +480 640 +428 640 +640 425 +640 427 +634 640 +640 480 +480 640 +640 426 +583 640 +640 480 +427 640 +640 480 +640 526 +500 321 +511 640 +640 480 +640 480 +640 480 +640 478 +640 425 +640 480 +640 428 +640 426 +426 640 +640 424 +427 640 +640 425 +640 426 +640 480 +640 425 +546 366 +640 427 +500 375 +640 427 +351 500 +640 425 +500 375 +640 427 +640 480 +480 640 +640 360 +640 480 +500 375 +480 640 +640 427 +427 640 +488 500 +369 640 +640 405 +500 375 +640 640 +640 427 +481 640 +360 640 +640 425 +640 427 +640 428 +480 640 +640 480 +484 640 +640 429 +500 400 +335 500 +640 428 +640 429 +500 333 +500 341 +428 640 +640 427 +640 427 +640 605 +640 640 +640 425 +640 360 +640 480 +427 640 +640 480 +480 640 +600 448 +640 480 +320 480 +424 640 +640 427 +427 640 +640 480 +429 640 +640 373 +427 640 +640 480 +426 640 +500 338 +640 490 +612 612 +640 426 +640 427 +640 428 +480 640 +480 640 +640 428 +640 427 +640 533 +640 553 +640 480 +427 640 +640 480 +640 426 +500 441 +480 640 +640 427 +640 480 +640 353 +640 308 +640 423 +480 640 +640 427 +640 427 +640 480 +400 300 +500 375 +500 347 +400 300 +640 480 +612 612 +640 486 +640 426 +640 433 +640 483 +612 612 +500 375 +640 480 +426 640 +640 425 +640 425 +640 425 +640 360 +640 480 +409 640 +640 480 +640 427 +640 480 +640 480 +636 636 +640 419 +640 452 +640 427 +640 480 +640 480 +640 479 +427 640 +640 427 +640 427 +640 406 +425 640 +333 500 +427 640 +640 427 +480 640 +500 375 +500 375 +391 500 +640 404 +640 480 +640 427 +640 480 +640 427 +640 360 +640 428 +640 426 +500 333 +640 480 +612 612 +428 640 +640 427 +480 640 +500 299 +640 457 +640 640 +640 427 +640 426 +640 439 +500 375 +640 391 +640 426 +640 426 +500 333 +375 500 +640 426 +640 424 +424 640 +640 427 +500 192 +426 640 +640 480 +640 480 +640 480 +640 438 +505 640 +640 405 +640 426 +427 640 +640 487 +500 375 +427 640 +640 427 +640 480 +640 480 +640 480 +640 480 +479 640 +428 640 +480 640 +640 427 +640 360 +640 427 +640 321 +640 480 +640 427 +640 480 +426 640 +640 456 +640 427 +640 373 +640 480 +640 480 +640 480 +640 426 +640 427 +640 382 +640 458 +640 484 +640 480 +640 478 +640 427 +640 362 +319 500 +640 480 +640 193 +640 480 +640 366 +640 480 +427 640 +640 430 +640 478 +429 640 +500 333 +612 612 +640 480 +640 427 +375 500 +640 427 +640 378 +640 173 +500 375 +640 480 +374 500 +462 640 +500 375 +640 480 +640 426 +448 640 +436 640 +640 480 +640 427 +640 338 +640 480 +427 640 +640 511 +640 480 +640 480 +640 427 +640 427 +480 640 +640 427 +500 333 +640 424 +427 640 +500 375 +427 640 +640 480 +640 480 +640 428 +640 427 +640 505 +498 640 +640 426 +640 480 +640 480 +640 480 +640 468 +640 480 +640 562 +640 424 +430 640 +640 480 +640 428 +640 480 +427 640 +428 640 +427 640 +480 640 +424 640 +640 427 +640 480 +640 425 +480 640 +500 375 +640 480 +480 640 +500 500 +333 500 +640 480 +600 450 +640 360 +500 375 +424 640 +331 500 +640 480 +426 640 +640 478 +612 612 +640 424 +640 480 +640 427 +426 640 +640 359 +640 424 +640 427 +640 427 +640 427 +480 640 +640 375 +360 640 +320 480 +640 508 +640 427 +640 480 +599 640 +640 480 +640 480 +640 480 +640 429 +500 375 +640 480 +640 427 +640 480 +428 640 +640 480 +480 640 +426 640 +640 427 +640 456 +640 480 +640 480 +478 640 +427 640 +500 496 +428 640 +640 427 +640 425 +334 500 +481 640 +640 427 +640 426 +640 480 +471 500 +640 506 +640 424 +480 640 +640 427 +640 444 +426 640 +640 480 +640 480 +640 428 +640 431 +640 431 +640 480 +500 333 +640 427 +427 640 +640 512 +640 480 +512 640 +640 359 +640 640 +640 428 +640 426 +640 640 +500 375 +640 519 +480 640 +640 375 +427 640 +640 215 +640 429 +360 640 +640 480 +640 425 +434 640 +640 480 +640 480 +640 429 +640 427 +612 612 +640 426 +640 423 +480 640 +640 558 +640 427 +640 429 +640 427 +480 640 +640 480 +640 480 +419 640 +640 426 +640 480 +640 427 +640 480 +284 500 +640 346 +640 400 +640 480 +640 425 +612 612 +640 480 +640 360 +640 480 +425 640 +640 427 +640 426 +500 375 +640 412 +640 480 +573 640 +640 427 +612 612 +640 423 +480 640 +640 360 +426 640 +640 480 +383 640 +640 427 +480 640 +640 480 +640 480 +500 376 +640 426 +480 640 +640 556 +640 427 +428 640 +640 428 +427 640 +375 500 +640 360 +500 375 +375 500 +640 481 +640 480 +640 480 +500 375 +640 480 +640 480 +640 640 +454 640 +640 477 +640 421 +480 640 +640 427 +640 480 +500 333 +640 426 +640 480 +640 425 +640 426 +640 424 +640 579 +640 383 +640 640 +640 485 +640 426 +427 640 +640 479 +344 500 +640 480 +640 480 +427 640 +640 478 +600 450 +640 428 +640 427 +640 426 +427 640 +640 427 +640 480 +640 480 +480 640 +480 640 +640 480 +500 375 +427 640 +450 338 +500 375 +640 480 +640 448 +500 330 +640 428 +500 375 +640 480 +612 612 +457 640 +386 640 +480 640 +640 480 +480 640 +640 427 +640 492 +450 640 +480 640 +427 640 +478 640 +640 480 +640 424 +500 375 +612 612 +480 640 +480 640 +640 427 +640 640 +640 427 +480 640 +333 500 +480 640 +640 480 +640 426 +480 640 +500 375 +640 383 +640 480 +640 427 +640 506 +640 427 +640 511 +453 640 +640 428 +640 480 +640 439 +640 640 +640 426 +640 418 +453 640 +568 640 +386 500 +479 640 +640 428 +640 426 +480 640 +640 268 +640 427 +640 431 +640 439 +640 480 +480 640 +640 360 +640 427 +500 333 +428 640 +640 480 +612 612 +640 503 +640 427 +640 478 +425 640 +425 640 +480 640 +640 480 +430 640 +427 640 +640 427 +640 393 +640 480 +640 480 +333 500 +399 500 +640 480 +480 640 +640 480 +640 360 +640 480 +640 427 +480 360 +640 296 +640 428 +640 427 +640 480 +640 558 +640 426 +640 563 +640 480 +640 425 +640 424 +640 480 +640 480 +640 427 +640 427 +402 402 +640 428 +640 429 +640 462 +640 427 +640 480 +480 640 +640 226 +640 480 +493 640 +573 640 +424 640 +640 408 +375 500 +500 375 +640 640 +640 427 +640 480 +424 640 +640 427 +640 480 +640 423 +640 427 +640 480 +640 426 +500 366 +640 480 +517 640 +480 640 +640 427 +640 458 +480 640 +640 412 +640 497 +640 480 +500 338 +640 480 +640 425 +640 459 +375 500 +640 480 +640 412 +500 375 +640 640 +640 427 +640 480 +640 480 +640 640 +427 640 +640 425 +640 428 +640 480 +500 375 +640 427 +500 333 +314 500 +640 478 +640 480 +640 480 +640 427 +442 640 +480 640 +428 640 +500 375 +500 383 +640 480 +480 640 +640 427 +640 426 +640 400 +640 424 +640 325 +384 500 +640 480 +640 480 +640 426 +375 500 +640 428 +500 376 +478 640 +640 480 +640 424 +480 640 +640 480 +480 640 +501 640 +640 425 +640 480 +640 480 +500 333 +640 480 +500 400 +640 342 +640 480 +500 375 +640 273 +640 277 +500 335 +640 480 +500 375 +427 640 +640 328 +500 263 +375 500 +640 425 +640 480 +480 640 +640 480 +640 426 +424 640 +500 332 +640 480 +500 375 +318 500 +484 640 +640 486 +640 480 +640 429 +500 375 +640 425 +640 400 +640 480 +500 333 +640 640 +640 480 +640 480 +640 426 +467 371 +333 500 +640 480 +640 480 +640 389 +640 427 +640 425 +640 426 +349 640 +480 640 +640 424 +500 333 +640 427 +640 481 +640 426 +500 375 +640 518 +494 389 +640 480 +640 480 +640 513 +640 426 +500 393 +500 188 +640 427 +640 427 +500 375 +427 640 +332 500 +480 640 +640 470 +640 480 +640 288 +640 480 +640 480 +640 480 +640 425 +640 480 +640 480 +640 427 +640 480 +640 480 +640 480 +640 427 +480 640 +640 323 +640 480 +561 640 +640 480 +640 427 +640 427 +500 467 +640 427 +375 500 +480 640 +640 480 +428 640 +640 480 +640 480 +640 480 +500 375 +640 427 +640 428 +478 640 +640 426 +640 428 +640 360 +442 640 +478 640 +500 332 +640 426 +640 480 +500 375 +640 427 +495 640 +640 425 +640 427 +640 466 +640 479 +640 469 +640 551 +640 480 +640 480 +640 425 +640 427 +640 424 +640 480 +640 417 +640 480 +640 483 +640 480 +335 500 +640 640 +640 427 +640 480 +425 640 +640 427 +448 336 +425 640 +480 640 +640 400 +640 480 +640 509 +640 427 +500 294 +429 640 +640 360 +640 481 +640 426 +480 640 +640 428 +640 425 +640 426 +396 640 +500 335 +640 480 +640 425 +640 480 +480 640 +407 640 +500 375 +640 426 +640 480 +500 376 +640 427 +483 485 +426 640 +640 425 +640 480 +427 640 +640 640 +640 426 +612 612 +640 480 +640 427 +424 640 +640 427 +486 417 +640 480 +640 571 +427 640 +640 480 +640 480 +640 427 +640 480 +640 453 +640 426 +640 480 +640 480 +640 425 +640 493 +640 480 +426 640 +480 640 +640 480 +500 376 +640 427 +640 503 +334 500 +612 612 +500 333 +500 375 +375 500 +612 612 +640 480 +640 427 +500 333 +427 640 +480 640 +375 500 +640 427 +640 427 +521 315 +427 640 +427 640 +640 480 +500 375 +500 375 +640 387 +640 306 +640 426 +640 427 +640 458 +640 454 +640 480 +640 427 +640 427 +640 383 +500 375 +640 480 +640 427 +640 427 +500 375 +640 480 +640 480 +640 480 +640 427 +500 375 +640 480 +640 427 +640 260 +480 640 +640 427 +640 427 +500 333 +640 480 +480 640 +640 427 +427 640 +427 640 +640 427 +500 333 +480 640 +333 500 +427 640 +640 426 +640 390 +640 480 +400 301 +640 480 +500 339 +239 180 +640 425 +428 640 +640 426 +640 640 +640 478 +612 612 +640 465 +640 426 +427 640 +640 524 +640 436 +640 315 +640 427 +640 428 +500 333 +640 427 +500 374 +500 333 +640 427 +392 640 +640 446 +340 640 +640 480 +640 427 +480 640 +612 612 +359 640 +427 640 +426 640 +640 427 +427 640 +640 480 +375 500 +640 442 +640 480 +500 337 +640 480 +427 640 +375 500 +640 480 +640 427 +500 375 +332 500 +462 640 +426 640 +333 500 +640 480 +640 485 +640 428 +375 500 +640 640 +640 360 +640 424 +640 428 +640 411 +640 480 +640 425 +640 427 +640 426 +640 427 +640 480 +500 281 +640 429 +480 640 +425 640 +640 424 +427 640 +640 427 +640 479 +152 100 +640 480 +640 454 +640 428 +640 480 +426 640 +640 623 +640 480 +640 480 +640 640 +640 480 +640 359 +500 333 +640 480 +427 640 +426 640 +500 375 +480 640 +640 480 +333 500 +640 425 +612 612 +426 640 +640 480 +640 391 +480 640 +640 480 +640 427 +640 428 +640 480 +500 375 +640 427 +640 480 +640 634 +640 482 +640 426 +640 427 +640 480 +480 640 +640 480 +411 640 +640 512 +640 640 +556 640 +640 480 +427 640 +640 419 +640 433 +640 400 +640 427 +640 360 +640 426 +480 640 +480 640 +419 640 +640 528 +375 500 +640 480 +640 480 +640 480 +640 480 +640 427 +500 375 +427 640 +426 640 +425 640 +479 640 +480 640 +640 368 +640 427 +640 480 +424 640 +640 480 +640 408 +640 424 +466 640 +640 425 +480 640 +480 640 +640 458 +640 428 +500 375 +640 479 +500 375 +640 480 +200 300 +640 480 +433 640 +480 640 +500 421 +640 361 +640 480 +640 480 +500 375 +480 640 +640 480 +640 487 +640 427 +640 426 +640 429 +480 640 +640 640 +427 640 +427 640 +640 480 +500 375 +500 313 +640 424 +640 480 +640 424 +640 371 +640 425 +640 303 +640 427 +547 640 +640 429 +335 500 +640 480 +640 480 +500 333 +640 594 +640 427 +500 375 +458 640 +640 153 +480 640 +640 480 +640 408 +640 427 +500 375 +640 426 +640 427 +640 640 +640 427 +640 480 +640 609 +640 464 +640 425 +612 612 +640 480 +640 426 +426 640 +640 458 +640 480 +640 480 +640 416 +640 427 +640 480 +640 427 +640 426 +640 429 +612 612 +640 427 +640 403 +640 480 +640 431 +427 640 +640 480 +640 480 +640 427 +480 640 +480 640 +612 612 +640 427 +640 425 +480 640 +500 333 +640 480 +623 515 +375 500 +640 425 +459 640 +640 513 +356 373 +640 428 +640 427 +389 640 +640 408 +640 480 +640 517 +427 640 +640 426 +480 640 +640 404 +640 480 +427 640 +640 632 +500 375 +480 640 +640 415 +334 500 +375 500 +480 640 +640 480 +640 480 +491 640 +640 425 +480 640 +640 410 +612 612 +640 480 +480 640 +480 640 +640 427 +640 480 +640 452 +431 640 +640 428 +251 500 +640 426 +640 502 +640 427 +640 453 +640 480 +640 426 +640 451 +640 480 +640 428 +640 480 +640 480 +640 409 +493 640 +640 480 +500 334 +640 424 +640 518 +640 426 +598 640 +640 427 +640 427 +640 426 +640 427 +640 424 +375 500 +425 500 +640 418 +500 375 +640 480 +640 428 +480 640 +640 426 +500 335 +513 640 +375 500 +597 400 +640 427 +640 480 +640 480 +640 606 +640 380 +640 427 +640 480 +640 426 +640 618 +428 640 +640 425 +480 272 +429 640 +427 640 +640 404 +640 427 +375 500 +500 375 +640 426 +480 640 +480 640 +640 481 +612 612 +640 427 +640 480 +640 478 +640 480 +640 480 +426 640 +640 427 +640 424 +640 428 +640 480 +640 522 +480 640 +640 480 +375 500 +480 640 +640 425 +640 427 +640 383 +640 480 +600 600 +640 427 +640 480 +640 480 +620 413 +640 480 +640 417 +544 640 +515 640 +427 640 +640 480 +640 480 +640 424 +375 500 +640 480 +640 499 +500 332 +383 640 +500 375 +640 480 +640 427 +428 640 +640 481 +640 428 +640 640 +500 375 +640 359 +640 461 +640 426 +640 426 +427 640 +640 480 +640 480 +640 426 +640 480 +448 277 +640 428 +640 393 +500 324 +640 432 +640 480 +479 640 +640 425 +500 375 +640 428 +480 640 +427 640 +640 427 +427 640 +640 484 +640 427 +612 612 +480 640 +500 375 +640 481 +480 640 +480 640 +640 425 +480 640 +604 453 +440 300 +640 477 +640 426 +640 427 +640 480 +640 480 +426 640 +478 640 +640 640 +640 640 +612 612 +640 480 +640 480 +640 427 +532 640 +480 640 +500 332 +612 612 +640 427 +640 480 +640 480 +640 480 +640 480 +640 480 +375 500 +640 640 +640 423 +640 509 +640 396 +640 428 +480 640 +640 480 +426 640 +500 375 +640 480 +640 427 +500 400 +640 427 +640 414 +640 427 +334 500 +640 426 +640 427 +427 640 +427 640 +500 332 +640 480 +360 640 +640 428 +640 426 +480 640 +640 427 +640 427 +422 640 +640 360 +400 500 +480 640 +640 427 +375 500 +335 500 +640 361 +331 500 +640 480 +640 480 +640 480 +640 536 +640 640 +428 640 +640 427 +640 480 +500 333 +640 427 +640 385 +480 640 +640 428 +500 375 +640 425 +427 640 +480 640 +480 640 +640 427 +640 427 +640 480 +640 427 +640 427 +640 480 +462 640 +640 480 +640 480 +640 640 +426 640 +640 427 +640 425 +428 640 +640 427 +640 424 +640 427 +500 375 +479 640 +640 425 +640 428 +500 375 +640 426 +640 480 +427 640 +500 333 +640 480 +425 640 +640 410 +640 480 +640 425 +480 640 +640 480 +640 427 +640 453 +640 426 +640 480 +640 483 +640 427 +640 427 +640 450 +612 612 +640 478 +478 640 +425 640 +640 424 +640 427 +640 427 +640 480 +375 500 +500 439 +640 359 +640 426 +640 480 +480 640 +640 427 +640 480 +640 480 +500 375 +640 480 +640 427 +640 480 +640 426 +433 640 +640 427 +640 463 +640 425 +640 425 +640 426 +640 424 +640 426 +640 429 +640 427 +500 333 +640 480 +640 480 +640 480 +640 427 +480 640 +480 640 +480 485 +640 427 +640 427 +640 428 +480 640 +371 500 +500 375 +640 427 +500 375 +375 500 +500 375 +640 428 +500 375 +640 480 +640 626 +640 360 +640 564 +640 424 +640 480 +375 500 +640 428 +640 427 +640 426 +479 640 +640 512 +640 480 +488 640 +334 500 +640 427 +480 640 +640 499 +480 640 +640 480 +640 627 +640 425 +640 480 +426 640 +640 424 +640 480 +640 427 +640 427 +640 569 +640 480 +640 426 +480 640 +640 480 +481 640 +428 640 +640 427 +640 427 +640 422 +640 429 +480 360 +640 480 +640 480 +640 376 +640 346 +428 640 +640 427 +640 427 +640 360 +640 458 +427 640 +640 479 +500 375 +640 480 +400 300 +500 375 +480 640 +640 427 +428 640 +640 640 +480 640 +640 640 +640 480 +640 471 +640 455 +640 427 +640 480 +640 425 +424 640 +640 361 +640 419 +640 480 +376 500 +640 480 +640 436 +500 375 +480 640 +640 480 +640 481 +640 254 +640 427 +640 427 +640 426 +640 453 +480 640 +640 427 +428 640 +427 640 +640 299 +469 640 +640 480 +640 480 +616 640 +640 480 +500 375 +375 500 +612 612 +332 500 +640 394 +612 612 +640 427 +640 428 +640 426 +640 480 +500 375 +640 427 +480 640 +640 480 +480 640 +640 456 +427 640 +640 480 +559 600 +375 500 +500 375 +640 480 +640 427 +640 480 +480 640 +500 333 +640 184 +427 640 +500 375 +640 480 +640 464 +640 481 +640 326 +426 640 +640 426 +640 427 +500 375 +640 352 +640 480 +640 479 +615 640 +640 425 +640 427 +640 363 +640 480 +640 437 +640 480 +480 319 +600 600 +640 453 +500 332 +640 424 +640 490 +640 480 +356 500 +640 480 +500 333 +375 500 +640 427 +640 480 +640 429 +640 428 +640 425 +640 489 +333 500 +640 439 +480 640 +640 426 +612 612 +391 640 +640 480 +640 427 +281 640 +640 424 +480 640 +640 359 +640 427 +640 480 +480 640 +640 480 +500 375 +640 427 +640 427 +640 427 +640 427 +640 480 +640 480 +640 427 +612 612 +427 640 +640 480 +480 640 +640 480 +640 480 +640 427 +500 375 +427 640 +480 640 +640 428 +640 480 +640 480 +640 457 +640 360 +640 480 +500 337 +640 464 +427 640 +640 424 +640 400 +500 333 +640 427 +500 332 +640 480 +480 640 +640 427 +640 427 +525 350 +640 351 +640 425 +640 480 +640 480 +640 426 +328 500 +575 640 +640 259 +640 426 +640 401 +500 375 +440 500 +640 427 +640 354 +480 640 +640 480 +640 480 +640 480 +640 415 +600 327 +457 640 +500 333 +480 640 +612 612 +640 640 +640 480 +640 424 +425 640 +640 408 +640 431 +640 424 +640 427 +500 500 +425 640 +500 375 +640 410 +640 428 +640 480 +480 640 +640 480 +479 640 +640 480 +500 375 +424 640 +640 480 +640 426 +640 428 +640 425 +640 427 +640 575 +640 438 +640 480 +480 640 +612 612 +640 426 +640 427 +640 443 +640 376 +500 375 +427 640 +612 612 +427 640 +426 640 +640 480 +640 480 +383 640 +640 482 +640 480 +640 480 +640 425 +640 424 +424 640 +640 640 +640 428 +640 531 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +640 478 +640 483 +640 430 +640 480 +560 640 +426 640 +640 427 +400 500 +500 388 +640 476 +640 427 +640 427 +640 427 +640 424 +480 640 +612 612 +538 360 +480 640 +640 428 +604 402 +375 500 +640 480 +500 375 +500 375 +476 640 +640 495 +640 640 +402 640 +640 478 +640 480 +640 427 +475 640 +640 480 +640 480 +640 428 +600 450 +640 433 +426 640 +480 640 +640 480 +640 427 +640 625 +640 480 +640 427 +480 640 +457 640 +640 480 +640 480 +612 612 +640 425 +480 640 +640 427 +640 550 +640 426 +640 427 +640 640 +640 480 +640 480 +640 427 +360 328 +640 424 +315 484 +500 375 +640 427 +640 438 +640 426 +640 466 +425 640 +640 427 +640 427 +640 426 +640 480 +640 480 +640 427 +500 467 +640 401 +640 426 +640 480 +375 500 +640 481 +360 640 +546 640 +640 480 +480 640 +640 480 +640 427 +640 428 +640 506 +448 336 +640 425 +612 612 +428 640 +480 640 +480 640 +481 640 +640 480 +640 427 +640 477 +640 480 +612 612 +500 500 +640 426 +640 478 +640 427 +500 342 +426 640 +375 500 +640 427 +416 640 +640 446 +640 480 +640 480 +640 424 +640 427 +640 480 +640 427 +418 640 +640 426 +640 426 +427 640 +640 480 +640 481 +640 480 +375 500 +640 480 +640 480 +640 480 +640 480 +640 428 +640 392 +426 640 +640 480 +640 480 +640 427 +640 383 +640 529 +640 482 +640 427 +640 427 +640 457 +427 640 +480 640 +640 411 +640 480 +640 480 +640 360 +640 427 +640 480 +640 426 +640 401 +640 360 +640 480 +480 640 +427 640 +640 480 +640 428 +640 480 +596 640 +500 333 +640 480 +640 496 +409 500 +640 495 +455 341 +500 332 +427 640 +640 427 +640 427 +375 500 +640 429 +640 480 +640 427 +640 480 +640 480 +640 478 +426 640 +640 360 +640 384 +640 423 +640 427 +640 480 +434 640 +640 426 +640 427 +640 427 +640 427 +640 427 +640 480 +640 396 +640 480 +640 426 +640 480 +424 640 +640 479 +640 425 +480 640 +640 480 +640 480 +640 515 +640 480 +480 640 +640 428 +640 480 +640 426 +640 426 +480 640 +480 640 +640 480 +640 480 +640 424 +480 640 +640 426 +640 448 +640 425 +427 640 +375 500 +640 480 +480 640 +500 281 +480 640 +640 452 +360 640 +640 243 +640 480 +640 480 +640 514 +640 446 +640 428 +640 480 +457 640 +424 640 +480 640 +500 375 +612 612 +640 453 +640 427 +480 640 +640 453 +513 640 +640 426 +640 480 +640 427 +500 375 +640 480 +424 640 +500 375 +640 480 +640 426 +640 480 +640 400 +480 640 +424 640 +500 375 +640 512 +640 480 +640 425 +640 480 +500 375 +500 375 +428 640 +640 488 +640 480 +640 425 +500 375 +500 375 +640 624 +640 429 +500 500 +640 429 +640 480 +413 640 +480 640 +427 640 +427 640 +480 640 +640 347 +640 516 +427 640 +427 640 +500 375 +640 480 +426 640 +436 640 +640 428 +640 426 +640 427 +640 480 +333 500 +640 426 +480 640 +640 427 +640 480 +480 640 +480 640 +500 375 +427 640 +640 427 +510 640 +480 640 +419 637 +427 640 +352 288 +480 640 +640 524 +480 640 +367 500 +640 480 +640 480 +640 426 +480 640 +640 480 +519 640 +640 427 +640 329 +640 427 +640 383 +640 480 +480 640 +640 427 +640 429 +480 640 +400 500 +640 426 +640 427 +500 333 +480 640 +299 500 +640 480 +640 480 +640 480 +334 500 +640 480 +640 480 +640 434 +500 375 +479 640 +640 427 +640 360 +640 409 +427 640 +640 510 +427 640 +640 479 +640 212 +480 640 +640 480 +640 427 +640 478 +396 500 +640 387 +640 640 +640 477 +640 417 +640 439 +640 427 +640 425 +640 438 +450 600 +640 424 +640 427 +640 361 +640 480 +640 427 +640 512 +640 480 +640 480 +640 471 +500 311 +640 426 +640 426 +640 480 +640 428 +500 375 +480 640 +640 471 +640 480 +640 428 +640 427 +640 451 +480 640 +427 640 +388 640 +640 314 +640 427 +500 400 +500 334 +640 426 +640 427 +640 480 +640 424 +427 640 +640 471 +640 480 +640 431 +640 427 +640 427 +514 640 +500 271 +329 640 +640 480 +500 332 +640 425 +480 640 +500 375 +640 428 +640 426 +640 425 +640 480 +640 412 +640 431 +640 443 +640 481 +500 333 +640 425 +640 384 +427 640 +640 427 +427 640 +500 375 +640 480 +640 427 +640 360 +480 640 +640 480 +500 233 +480 640 +640 426 +449 640 +640 396 +640 426 +566 640 +640 427 +640 529 +612 612 +640 409 +640 426 +480 640 +640 480 +640 428 +500 375 +500 375 +640 512 +640 427 +640 480 +425 640 +640 426 +612 612 +398 640 +640 363 +640 469 +460 640 +640 482 +500 332 +640 425 +640 426 +640 426 +427 640 +640 480 +640 480 +640 427 +640 446 +640 424 +427 640 +640 480 +640 480 +640 427 +640 425 +424 640 +640 427 +640 480 +640 480 +640 400 +640 480 +480 640 +640 288 +480 640 +375 500 +640 480 +500 399 +640 480 +500 375 +480 640 +426 640 +640 480 +640 480 +640 480 +640 427 +640 544 +640 429 +500 365 +640 480 +640 426 +640 428 +640 480 +640 429 +483 640 +640 427 +640 426 +640 480 +640 513 +500 375 +500 396 +381 640 +640 480 +500 375 +640 480 +427 640 +640 426 +640 427 +640 458 +640 360 +640 426 +466 640 +640 480 +480 640 +427 640 +640 427 +640 425 +640 480 +640 428 +500 461 +119 184 +640 427 +640 426 +640 480 +492 500 +640 480 +427 640 +640 360 +640 480 +640 480 +640 640 +375 500 +640 427 +640 423 +568 320 +640 480 +640 480 +640 389 +480 640 +407 640 +640 480 +640 471 +640 445 +480 640 +335 500 +480 640 +640 480 +640 480 +640 428 +640 400 +640 480 +640 480 +640 361 +640 640 +500 375 +427 640 +640 480 +640 424 +640 426 +640 479 +480 640 +640 480 +500 377 +500 362 +500 375 +640 480 +500 333 +640 427 +640 480 +640 427 +640 480 +500 374 +640 361 +640 480 +640 427 +570 640 +640 425 +640 480 +640 480 +640 480 +480 640 +500 334 +640 480 +480 640 +480 640 +500 375 +480 640 +640 640 +640 480 +640 275 +640 480 +500 375 +640 480 +398 640 +640 427 +640 413 +640 509 +640 435 +640 426 +640 361 +427 640 +640 427 +640 480 +429 640 +640 480 +640 533 +500 375 +480 640 +640 425 +640 480 +640 470 +640 423 +640 480 +640 480 +427 640 +640 480 +333 500 +640 427 +640 427 +640 424 +640 480 +428 640 +640 480 +640 429 +640 427 +375 500 +640 427 +640 427 +480 640 +640 329 +640 480 +640 425 +480 640 +640 354 +640 427 +640 480 +640 480 +640 480 +500 375 +640 480 +426 640 +427 640 +640 480 +500 400 +480 640 +427 640 +640 427 +640 369 +600 640 +480 640 +612 612 +640 424 +478 640 +640 427 +640 426 +640 480 +480 640 +640 269 +640 640 +480 640 +420 640 +640 480 +480 640 +427 640 +640 427 +640 499 +480 640 +640 427 +640 478 +512 640 +640 427 +612 612 +640 407 +640 426 +555 640 +640 428 +427 640 +640 427 +640 480 +640 480 +640 426 +640 480 +640 480 +640 335 +640 425 +480 640 +640 428 +640 489 +640 458 +612 612 +460 640 +500 333 +332 500 +480 640 +640 427 +640 426 +640 480 +500 375 +640 425 +640 427 +612 612 +640 480 +640 480 +568 640 +640 427 +375 500 +500 345 +640 427 +640 480 +640 480 +640 426 +480 640 +427 640 +500 375 +500 375 +640 480 +640 287 +640 427 +640 480 +640 427 +500 333 +640 427 +640 480 +480 640 +640 426 +640 480 +640 426 +425 640 +480 640 +512 640 +640 425 +640 427 +426 640 +640 427 +640 480 +478 640 +480 640 +427 640 +500 400 +640 480 +640 509 +640 399 +500 333 +640 640 +640 425 +640 360 +640 480 +640 419 +500 375 +504 640 +640 480 +640 480 +640 480 +640 480 +500 375 +500 333 +640 427 +640 480 +640 424 +640 424 +640 427 +600 600 +640 480 +500 375 +500 332 +427 640 +640 448 +640 426 +500 375 +640 480 +640 462 +640 429 +640 480 +640 480 +425 640 +500 333 +500 375 +427 640 +640 480 +640 480 +640 428 +612 612 +640 480 +640 408 +600 459 +640 480 +427 640 +640 480 +640 480 +640 427 +426 640 +640 424 +640 516 +640 425 +489 640 +640 439 +640 391 +640 426 +640 480 +640 427 +640 427 +480 640 +480 640 +640 472 +640 480 +640 480 +640 384 +640 479 +612 612 +640 426 +480 640 +500 272 +640 427 +640 471 +360 640 +640 427 +640 480 +640 480 +640 424 +640 498 +431 640 +640 426 +640 427 +640 478 +640 426 +426 640 +640 480 +640 480 +500 375 +427 640 +640 346 +640 383 +640 333 +640 480 +500 317 +462 640 +427 640 +640 457 +640 404 +640 425 +640 360 +480 640 +640 427 +640 427 +425 640 +640 425 +640 427 +480 640 +640 427 +640 354 +427 640 +640 382 +640 480 +640 436 +350 500 +640 429 +640 427 +375 500 +612 612 +640 480 +500 333 +383 640 +500 334 +640 480 +494 640 +640 426 +640 427 +427 640 +640 480 +640 444 +640 424 +640 426 +640 480 +640 480 +427 640 +500 411 +427 640 +640 426 +640 427 +640 427 +640 480 +640 424 +640 424 +425 640 +629 640 +640 480 +640 427 +640 427 +640 480 +640 427 +427 640 +640 391 +640 480 +500 368 +500 340 +640 512 +640 427 +426 640 +426 640 +640 426 +640 448 +640 480 +640 588 +612 612 +640 480 +500 269 +492 640 +640 427 +640 478 +640 509 +480 640 +640 480 +640 360 +640 480 +640 427 +640 429 +640 513 +640 480 +640 425 +640 488 +640 345 +640 461 +500 375 +640 480 +500 375 +480 640 +500 345 +640 480 +640 415 +640 428 +640 480 +480 640 +640 559 +640 360 +640 480 +640 426 +427 640 +640 427 +500 297 +427 640 +448 640 +640 427 +640 425 +640 480 +640 480 +384 640 +426 640 +640 504 +640 427 +481 640 +480 640 +640 456 +640 480 +640 479 +480 640 +612 612 +640 427 +640 418 +640 360 +427 640 +640 426 +640 427 +640 480 +500 333 +375 500 +500 334 +480 360 +480 640 +640 480 +640 480 +640 348 +375 500 +640 426 +426 640 +640 425 +640 426 +500 375 +500 375 +640 427 +640 480 +640 426 +427 640 +640 502 +480 640 +640 360 +640 313 +640 427 +640 478 +427 640 +461 640 +480 640 +640 407 +550 640 +640 480 +480 640 +640 481 +640 427 +612 612 +550 275 +640 430 +640 480 +480 640 +640 427 +640 480 +640 427 +640 480 +640 427 +640 384 +640 427 +640 480 +640 427 +640 449 +375 500 +640 359 +396 640 +640 428 +640 428 +400 600 +640 425 +427 640 +640 480 +640 480 +640 481 +428 640 +640 359 +612 612 +640 438 +640 358 +640 394 +640 480 +640 480 +640 399 +427 640 +500 333 +640 427 +640 427 +640 480 +640 561 +640 428 +640 361 +640 587 +640 480 +640 480 +640 480 +640 427 +400 500 +500 375 +500 309 +640 403 +640 480 +381 640 +640 427 +481 640 +640 480 +640 427 +640 311 +480 640 +640 424 +640 480 +612 612 +640 480 +640 480 +640 494 +640 574 +640 426 +469 640 +640 480 +640 480 +425 640 +640 481 +640 480 +640 359 +640 472 +640 476 +640 360 +375 500 +640 409 +422 640 +640 383 +640 359 +640 437 +640 480 +640 350 +640 480 +640 427 +640 401 +640 480 +500 377 +640 426 +612 612 +500 333 +640 425 +480 640 +640 369 +640 427 +333 500 +427 640 +427 640 +640 427 +416 640 +640 424 +640 427 +640 463 +427 640 +640 480 +640 480 +640 480 +640 480 +640 426 +640 480 +640 457 +500 335 +640 364 +640 428 +640 427 +640 424 +640 427 +640 425 +640 425 +640 609 +480 640 +640 426 +640 426 +640 480 +640 480 +640 480 +640 480 +500 375 +640 480 +640 391 +479 640 +427 640 +640 427 +461 640 +640 425 +500 375 +500 400 +640 427 +640 502 +480 640 +500 397 +640 480 +427 640 +500 334 +402 640 +640 427 +640 427 +640 480 +640 427 +640 425 +640 609 +640 480 +640 427 +640 567 +640 424 +640 427 +640 427 +640 428 +640 480 +640 480 +479 640 +640 480 +425 640 +640 553 +640 480 +640 480 +640 480 +640 425 +640 480 +640 448 +420 640 +480 640 +480 640 +480 640 +427 640 +640 502 +500 375 +360 640 +427 640 +500 491 +640 427 +640 426 +640 427 +640 428 +640 480 +500 375 +640 480 +480 640 +640 427 +640 427 +640 427 +428 640 +428 640 +640 480 +640 480 +640 480 +640 448 +640 390 +640 478 +427 640 +500 333 +450 600 +640 391 +600 399 +480 640 +640 361 +500 380 +640 494 +640 451 +640 427 +427 640 +640 480 +640 480 +640 360 +640 593 +500 375 +640 434 +480 640 +640 480 +427 640 +425 640 +640 640 +640 418 +640 399 +640 427 +612 612 +640 427 +640 480 +640 491 +427 640 +427 640 +640 480 +640 640 +640 519 +640 427 +375 500 +478 640 +336 500 +480 640 +500 421 +480 640 +640 421 +640 426 +500 335 +640 426 +640 480 +640 427 +640 480 +510 640 +640 427 +640 273 +640 428 +640 426 +640 480 +640 480 +463 640 +640 424 +425 640 +500 375 +427 640 +480 480 +640 424 +640 427 +640 480 +500 375 +640 427 +640 428 +640 446 +640 427 +500 375 +375 500 +500 375 +427 640 +640 640 +480 640 +640 428 +640 480 +640 427 +640 425 +334 500 +640 361 +612 612 +640 427 +341 500 +612 612 +640 428 +640 360 +640 360 +640 480 +640 370 +640 475 +640 479 +640 427 +456 640 +640 427 +428 640 +640 480 +640 492 +640 558 +640 480 +427 640 +640 496 +480 640 +500 375 +640 425 +480 640 +640 426 +640 464 +640 480 +640 480 +500 328 +640 640 +640 640 +640 429 +640 426 +640 427 +640 426 +640 410 +640 457 +640 426 +480 640 +640 480 +640 480 +640 480 +640 480 +640 427 +424 640 +640 428 +500 375 +428 640 +337 500 +640 426 +334 500 +640 480 +640 289 +640 425 +500 375 +427 640 +640 480 +360 640 +333 500 +640 480 +640 574 +640 427 +640 480 +640 427 +426 640 +640 427 +640 426 +640 480 +640 427 +375 500 +500 375 +640 480 +640 335 +640 444 +640 212 +640 480 +546 640 +640 480 +640 359 +640 426 +500 375 +640 426 +640 480 +500 400 +640 480 +640 480 +425 640 +478 640 +480 422 +425 640 +481 640 +400 600 +640 480 +640 480 +640 480 +480 640 +612 612 +462 640 +439 640 +480 640 +612 612 +426 640 +500 394 +640 428 +640 444 +640 427 +640 427 +640 428 +640 380 +640 480 +640 480 +640 438 +612 612 +640 427 +444 500 +640 360 +640 423 +640 640 +427 640 +640 480 +640 480 +640 480 +480 640 +640 426 +640 480 +640 426 +640 427 +640 456 +640 426 +375 500 +640 438 +640 459 +640 366 +640 480 +640 480 +640 480 +428 640 +640 480 +640 345 +640 429 +480 640 +480 640 +500 332 +640 425 +418 640 +640 233 +640 480 +375 500 +640 480 +427 640 +640 428 +640 480 +424 640 +332 500 +640 443 +640 480 +640 427 +640 463 +600 400 +640 425 +640 427 +640 480 +640 480 +640 428 +500 375 +640 480 +640 459 +640 427 +640 480 +640 480 +480 640 +427 640 +640 381 +426 640 +427 640 +500 400 +640 425 +480 640 +424 640 +640 427 +640 480 +640 480 +612 612 +640 427 +640 359 +333 500 +426 640 +640 427 +640 480 +640 480 +640 480 +640 426 +640 480 +426 640 +500 375 +640 427 +500 318 +500 375 +640 481 +640 360 +640 427 +426 640 +500 375 +640 427 +640 480 +500 334 +640 480 +640 427 +480 640 +640 427 +640 429 +640 426 +640 426 +640 373 +640 426 +640 426 +640 457 +640 512 +640 480 +478 640 +640 480 +640 383 +426 640 +640 481 +640 427 +500 375 +640 426 +640 480 +425 640 +640 428 +478 640 +427 640 +640 287 +640 426 +640 480 +640 427 +419 640 +640 640 +640 427 +640 480 +640 480 +500 333 +640 426 +480 640 +600 596 +640 428 +640 475 +640 360 +640 480 +640 427 +640 480 +640 478 +640 415 +640 480 +480 640 +640 457 +500 375 +429 640 +427 640 +640 619 +640 427 +640 225 +640 426 +426 640 +640 534 +640 427 +640 480 +640 444 +640 480 +640 480 +640 478 +640 313 +640 426 +640 426 +640 410 +640 424 +640 480 +480 640 +500 333 +640 480 +640 384 +500 341 +640 480 +500 500 +640 427 +640 480 +500 400 +480 640 +640 429 +427 640 +500 281 +640 480 +640 439 +640 480 +640 428 +640 480 +640 425 +500 375 +640 416 +640 480 +640 426 +640 480 +640 512 +640 366 +612 612 +344 500 +640 320 +640 533 +500 375 +640 480 +640 480 +500 334 +480 640 +640 427 +500 376 +640 480 +480 640 +640 424 +500 500 +480 640 +480 640 +640 401 +640 480 +500 499 +480 640 +640 480 +640 427 +640 480 +400 500 +640 424 +640 424 +640 480 +427 640 +640 427 +640 425 +500 375 +640 428 +640 414 +640 426 +640 426 +640 428 +427 640 +640 480 +612 612 +640 480 +640 480 +640 457 +500 335 +480 640 +640 427 +500 375 +480 640 +640 427 +640 480 +640 480 +483 640 +480 640 +640 427 +640 455 +640 480 +480 320 +640 480 +434 640 +640 425 +436 640 +396 640 +500 375 +640 478 +640 426 +640 480 +640 480 +640 427 +427 640 +640 427 +640 480 +640 426 +500 375 +500 500 +640 412 +640 342 +480 640 +640 426 +333 500 +640 458 +640 480 +500 500 +640 360 +640 480 +640 640 +512 640 +612 612 +640 427 +640 427 +636 640 +612 612 +640 480 +640 480 +640 480 +640 389 +640 542 +640 480 +640 430 +640 425 +500 333 +640 640 +640 427 +425 640 +427 640 +640 480 +333 500 +640 426 +640 426 +640 512 +640 480 +360 640 +640 427 +333 357 +500 375 +478 640 +640 478 +640 427 +640 428 +640 427 +640 413 +457 640 +612 612 +480 640 +640 483 +640 480 +640 480 +640 360 +480 640 +427 640 +640 480 +640 511 +640 480 +640 480 +300 400 +640 360 +375 500 +640 424 +640 480 +640 480 +640 574 +427 640 +640 478 +640 480 +534 640 +480 640 +640 480 +640 425 +372 500 +640 480 +640 425 +640 425 +640 384 +640 480 +497 500 +640 426 +427 640 +640 429 +640 480 +640 427 +640 428 +640 480 +484 640 +640 449 +459 640 +640 480 +640 601 +612 612 +640 480 +335 500 +427 640 +640 411 +500 332 +640 360 +480 640 +640 427 +426 640 +447 500 +640 424 +640 427 +640 346 +640 480 +640 360 +640 480 +428 640 +500 299 +640 427 +640 457 +640 427 +478 500 +427 640 +640 427 +640 449 +640 466 +640 480 +427 640 +640 480 +640 480 +640 480 +640 558 +640 480 +500 334 +640 444 +640 480 +361 640 +480 640 +640 473 +600 600 +640 496 +500 357 +480 640 +640 480 +500 330 +375 500 +640 427 +500 375 +541 640 +480 640 +640 480 +640 416 +640 480 +640 425 +640 426 +500 376 +640 427 +427 640 +478 640 +640 427 +425 640 +640 427 +640 425 +640 426 +640 360 +425 640 +375 500 +640 480 +640 427 +427 640 +640 443 +322 365 +638 512 +640 424 +640 478 +639 640 +640 480 +500 333 +640 427 +640 433 +640 502 +640 614 +640 480 +640 480 +480 640 +640 480 +640 480 +640 480 +375 500 +640 426 +640 299 +333 500 +640 427 +500 333 +640 480 +427 640 +431 640 +500 333 +640 480 +640 480 +640 434 +640 484 +640 458 +640 296 +640 427 +427 640 +640 480 +336 500 +472 640 +500 332 +640 427 +500 375 +640 480 +480 640 +480 640 +500 386 +612 612 +640 213 +640 426 +334 500 +640 471 +640 360 +640 586 +640 427 +640 424 +640 413 +640 427 +640 427 +612 612 +640 480 +640 427 +331 500 +640 428 +500 336 +500 375 +640 560 +640 480 +612 612 +640 480 +640 427 +500 375 +427 640 +640 480 +640 480 +640 366 +640 425 +640 427 +640 480 +426 640 +640 480 +640 640 +640 480 +640 425 +640 480 +500 333 +640 427 +640 480 +640 478 +478 640 +640 428 +640 480 +500 375 +640 501 +500 375 +427 640 +640 481 +640 426 +640 480 +426 640 +480 640 +435 640 +427 640 +640 427 +640 427 +640 480 +240 320 +640 428 +640 640 +640 509 +640 480 +640 480 +500 394 +375 500 +428 640 +640 480 +640 426 +640 480 +500 333 +428 640 +375 500 +431 640 +640 480 +640 427 +590 640 +500 465 +466 640 +600 600 +433 640 +500 332 +434 640 +640 640 +640 480 +640 425 +480 640 +480 640 +640 480 +640 480 +640 480 +640 301 +640 480 +640 478 +640 360 +640 425 +500 376 +640 427 +640 432 +640 427 +460 390 +500 375 +640 426 +480 640 +640 426 +640 426 +640 427 +426 640 +500 375 +640 426 +640 480 +640 427 +640 263 +480 640 +640 480 +640 425 +500 333 +640 480 +640 427 +640 427 +480 640 +640 480 +640 449 +500 327 +640 480 +500 350 +640 480 +640 320 +480 640 +400 500 +612 612 +425 640 +372 500 +375 500 +500 334 +640 427 +427 640 +640 480 +480 640 +640 427 +500 375 +478 640 +465 500 +640 428 +336 500 +480 640 +410 640 +416 500 +640 453 +500 375 +640 480 +500 375 +360 640 +640 401 +640 640 +640 480 +640 427 +640 480 +640 426 +332 500 +640 361 +640 480 +427 640 +640 426 +640 505 +640 588 +640 427 +640 409 +500 333 +500 375 +500 376 +640 415 +640 480 +640 480 +640 426 +640 480 +640 427 +640 399 +600 366 +640 360 +640 457 +640 480 +640 427 +640 427 +640 428 +480 640 +640 521 +500 333 +640 480 +500 325 +581 640 +640 480 +640 426 +500 333 +480 640 +640 428 +640 426 +427 640 +640 427 +640 427 +459 640 +375 500 +480 640 +640 427 +640 427 +640 451 +612 612 +640 480 +640 427 +427 640 +612 612 +640 427 +429 640 +640 480 +480 640 +640 480 +640 428 +480 640 +500 295 +640 424 +640 428 +500 375 +480 640 +428 640 +480 640 +640 427 +375 500 +500 333 +612 612 +640 480 +640 463 +500 333 +640 427 +462 640 +640 480 +640 480 +640 433 +640 618 +640 480 +425 640 +500 375 +640 214 +640 480 +640 480 +640 480 +640 480 +640 480 +500 356 +375 500 +640 480 +640 427 +480 353 +640 640 +500 375 +640 480 +640 424 +640 427 +640 426 +640 426 +640 640 +640 427 +640 427 +500 375 +640 434 +640 427 +640 427 +500 375 +500 333 +640 425 +420 640 +427 640 +640 428 +640 480 +640 480 +640 360 +374 500 +640 428 +375 500 +640 408 +500 375 +433 640 +612 612 +640 480 +640 480 +426 640 +427 640 +640 487 +480 640 +423 640 +640 480 +640 427 +640 480 +335 640 +640 426 +640 440 +640 480 +427 640 +640 480 +427 640 +640 480 +640 427 +500 375 +427 640 +640 427 +640 540 +640 426 +640 427 +500 377 +427 640 +640 480 +640 425 +500 332 +640 571 +640 428 +480 640 +640 428 +478 640 +640 569 +640 480 +428 640 +640 424 +640 480 +640 427 +640 514 +640 485 +640 409 +427 640 +640 427 +640 427 +429 640 +389 640 +640 480 +640 427 +359 640 +640 425 +640 426 +640 427 +640 373 +640 426 +640 427 +640 427 +486 640 +640 480 +427 640 +639 640 +500 375 +500 373 +640 480 +426 640 +640 366 +640 338 +333 500 +500 338 +427 640 +640 479 +500 375 +640 480 +640 519 +640 427 +320 240 +640 427 +612 612 +640 341 +428 640 +480 640 +640 466 +640 473 +640 313 +480 640 +640 640 +640 476 +640 480 +640 427 +640 480 +375 500 +427 640 +640 426 +640 480 +640 480 +444 640 +426 640 +427 640 +380 640 +640 480 +640 480 +640 339 +640 427 +640 573 +640 480 +480 640 +640 427 +640 480 +640 428 +640 426 +500 497 +640 428 +640 475 +640 361 +640 426 +256 217 +640 480 +640 480 +640 480 +427 640 +640 480 +500 375 +640 424 +500 341 +640 480 +453 640 +640 444 +500 400 +480 640 +500 333 +480 640 +640 427 +640 478 +640 424 +640 424 +640 427 +500 332 +427 640 +500 375 +500 334 +361 500 +640 430 +640 427 +500 375 +640 479 +428 640 +640 479 +427 640 +428 640 +640 425 +640 480 +640 424 +514 640 +480 640 +640 428 +640 480 +640 479 +640 426 +640 427 +640 424 +500 375 +360 640 +640 479 +427 640 +640 490 +500 375 +480 640 +500 333 +640 423 +640 426 +480 640 +640 480 +640 415 +640 431 +480 640 +640 423 +640 480 +428 640 +500 375 +640 396 +640 427 +640 427 +500 375 +640 480 +640 427 +640 499 +480 640 +480 640 +640 427 +640 470 +640 425 +500 333 +500 335 +640 410 +160 120 +640 428 +478 640 +640 436 +612 612 +640 480 +500 375 +640 425 +427 640 +400 453 +437 640 +480 640 +612 612 +500 281 +640 480 +425 640 +480 640 +640 344 +640 480 +640 428 +479 640 +640 428 +480 640 +500 375 +640 428 +640 427 +640 426 +640 480 +500 438 +427 640 +640 480 +640 480 +480 640 +640 362 +640 427 +640 480 +320 500 +640 393 +500 375 +453 640 +427 640 +640 503 +640 429 +640 425 +424 640 +426 640 +640 480 +640 480 +640 480 +640 426 +640 480 +426 640 +640 290 +640 480 +480 360 +640 480 +517 640 +480 640 +640 480 +480 640 +500 335 +450 338 +427 640 +640 480 +640 480 +640 480 +640 426 +640 480 +640 600 +431 640 +640 480 +428 640 +435 640 +640 427 +640 640 +640 425 +640 480 +640 426 +640 480 +640 426 +500 375 +640 480 +500 471 +640 480 +640 426 +640 426 +480 640 +640 431 +640 480 +640 429 +425 640 +640 342 +640 427 +640 480 +612 612 +640 428 +500 333 +252 252 +459 640 +640 427 +640 480 +389 640 +640 480 +640 427 +375 500 +640 425 +640 360 +489 640 +640 447 +500 334 +640 424 +480 640 +500 375 +640 425 +640 480 +427 640 +640 427 +640 480 +360 356 +500 375 +640 480 +640 427 +457 640 +500 375 +640 480 +479 640 +480 640 +640 427 +640 427 +640 478 +640 427 +640 480 +640 360 +640 480 +640 324 +640 427 +480 640 +640 427 +640 360 +640 429 +640 480 +331 500 +427 640 +640 458 +640 463 +640 427 +427 640 +640 480 +640 480 +640 427 +640 480 +442 640 +640 480 +640 426 +426 640 +640 429 +429 640 +640 426 +425 640 +640 480 +640 427 +640 440 +424 640 +640 426 +500 327 +640 480 +640 426 +640 480 +640 427 +480 640 +640 426 +640 480 +640 514 +500 384 +624 640 +457 640 +500 375 +640 486 +640 427 +640 480 +640 433 +426 640 +640 480 +640 411 +500 375 +640 360 +427 640 +640 427 +480 640 +640 288 +360 640 +640 427 +480 272 +640 480 +640 428 +640 480 +640 448 +640 640 +640 426 +640 427 +384 512 +640 427 +640 480 +640 426 +480 640 +480 640 +500 400 +500 335 +640 426 +640 480 +640 453 +480 640 +320 240 +640 480 +640 425 +640 480 +640 428 +375 500 +640 427 +640 458 +640 427 +640 320 +500 375 +500 407 +640 427 +389 640 +500 375 +640 483 +640 630 +480 640 +480 640 +640 480 +433 640 +480 640 +640 428 +640 412 +500 313 +640 427 +612 612 +480 640 +640 480 +480 640 +640 426 +640 426 +500 344 +640 361 +500 333 +640 480 +640 357 +640 427 +640 426 +640 429 +640 428 +640 426 +480 640 +640 263 +640 480 +640 480 +640 480 +640 486 +316 640 +480 640 +640 427 +640 480 +612 612 +640 523 +427 640 +480 640 +416 500 +640 428 +640 427 +576 576 +640 427 +640 480 +640 425 +640 427 +640 529 +640 428 +640 427 +500 332 +640 636 +640 480 +640 427 +640 426 +640 480 +640 480 +640 480 +640 480 +640 428 +640 427 +640 346 +640 480 +640 496 +640 480 +640 480 +480 640 +500 375 +640 506 +640 480 +426 640 +640 362 +480 640 +550 375 +640 428 +480 640 +640 428 +640 480 +640 428 +612 612 +375 500 +640 480 +640 429 +640 640 +640 457 +640 480 +640 360 +640 481 +640 458 +640 416 +480 640 +640 480 +640 400 +640 427 +640 453 +640 427 +640 359 +612 612 +480 640 +640 480 +640 427 +640 480 +640 428 +640 426 +480 640 +640 425 +640 428 +640 480 +640 480 +640 480 +640 480 +640 427 +640 480 +640 393 +640 426 +640 480 +500 495 +640 428 +640 426 +640 426 +480 640 +640 480 +480 640 +434 640 +578 433 +480 640 +640 427 +640 480 +500 433 +612 612 +640 427 +427 640 +428 640 +640 424 +480 640 +427 640 +478 640 +640 376 +332 500 +480 640 +640 389 +640 427 +640 427 +612 612 +640 480 +428 640 +640 478 +448 640 +427 640 +640 444 +500 375 +500 333 +500 375 +640 425 +480 640 +640 426 +640 427 +640 480 +640 480 +640 480 +500 332 +427 640 +640 480 +640 480 +640 480 +640 425 +640 480 +640 427 +640 480 +500 375 +640 426 +640 427 +640 427 +500 375 +640 428 +640 426 +640 428 +640 480 +640 426 +640 427 +640 360 +640 480 +640 479 +500 334 +334 500 +480 640 +640 464 +640 426 +500 375 +640 427 +500 375 +640 480 +480 640 +640 408 +640 408 +640 427 +640 424 +640 427 +640 427 +640 427 +640 425 +500 283 +480 640 +640 426 +518 640 +640 480 +640 559 +640 428 +640 480 +640 480 +640 480 +640 427 +640 426 +427 640 +333 500 +640 427 +640 480 +500 375 +640 480 +427 640 +640 458 +427 640 +640 480 +640 480 +480 640 +640 427 +640 427 +640 427 +640 480 +480 360 +640 427 +427 640 +640 428 +640 427 +375 500 +427 640 +640 427 +480 640 +424 640 +500 332 +500 375 +350 500 +640 427 +640 454 +480 640 +640 425 +640 533 +640 425 +500 375 +640 426 +640 503 +379 640 +640 377 +500 333 +480 640 +640 477 +480 640 +640 480 +640 480 +480 640 +640 426 +640 549 +640 480 +640 427 +500 375 +640 426 +640 361 +640 419 +428 640 +640 418 +612 612 +427 640 +640 427 +640 419 +500 236 +640 480 +640 480 +640 640 +640 425 +478 640 +500 452 +640 426 +640 426 +640 363 +640 360 +640 438 +478 640 +640 355 +640 427 +640 427 +500 375 +640 427 +640 480 +480 640 +640 457 +494 373 +640 511 +640 480 +500 333 +640 480 +500 375 +640 427 +383 640 +500 333 +640 383 +640 360 +640 428 +640 427 +640 427 +640 426 +612 612 +640 428 +640 426 +500 335 +375 500 +640 419 +415 640 +263 350 +640 480 +640 426 +375 500 +640 427 +640 427 +640 480 +500 375 +640 480 +500 333 +640 480 +640 480 +426 640 +640 480 +640 480 +375 500 +640 359 +640 427 +640 428 +640 480 +500 497 +427 640 +640 512 +427 500 +441 331 +640 458 +640 360 +640 425 +602 640 +640 425 +640 480 +640 427 +640 425 +480 640 +337 500 +640 480 +640 480 +640 459 +640 426 +640 480 +640 480 +640 640 +600 600 +480 640 +333 500 +640 426 +640 450 +333 500 +640 426 +640 427 +640 480 +640 480 +640 406 +480 640 +640 427 +640 418 +500 333 +640 427 +425 640 +640 480 +500 334 +640 480 +640 480 +640 480 +640 480 +640 629 +500 375 +427 640 +640 426 +640 480 +640 481 +640 396 +640 429 +640 483 +427 640 +640 427 +640 427 +640 457 +640 427 +612 612 +640 480 +640 480 +640 480 +640 480 +640 480 +474 640 +446 500 +500 375 +640 480 +640 465 +640 478 +640 448 +640 427 +500 375 +490 326 +640 427 +426 640 +640 428 +640 400 +640 345 +640 425 +640 480 +640 427 +640 480 +640 468 +500 375 +429 640 +640 427 +640 425 +640 584 +424 640 +640 403 +640 425 +640 426 +640 427 +640 480 +640 559 +640 221 +640 480 +640 426 +640 480 +612 612 +427 640 +640 480 +500 298 +426 640 +480 360 +480 640 +640 427 +640 480 +640 426 +640 361 +640 480 +640 366 +640 480 +500 375 +500 375 +478 640 +640 427 +640 428 +480 640 +640 428 +640 427 +640 426 +640 480 +640 425 +640 480 +640 480 +500 375 +640 480 +640 639 +640 559 +500 331 +394 640 +426 640 +640 480 +640 480 +640 480 +640 427 +428 640 +640 427 +640 393 +640 426 +640 424 +469 279 +427 640 +640 335 +640 430 +428 640 +500 640 +426 640 +398 640 +427 640 +640 427 +640 427 +640 427 +457 640 +425 640 +640 434 +500 411 +500 375 +640 480 +640 476 +640 480 +640 575 +640 427 +640 480 +425 640 +640 395 +640 451 +640 513 +640 480 +640 427 +481 640 +480 640 +640 427 +640 480 +480 640 +640 480 +640 427 +640 424 +640 480 +315 482 +640 426 +640 426 +640 480 +640 480 +640 480 +640 426 +453 640 +383 640 +600 450 +640 463 +640 480 +640 474 +640 480 +640 478 +500 375 +640 427 +612 612 +612 612 +640 383 +640 640 +640 480 +500 342 +500 333 +640 428 +640 480 +427 640 +640 427 +640 448 +434 640 +480 640 +640 427 +640 480 +640 480 +500 333 +640 587 +640 424 +448 640 +640 428 +640 406 +640 458 +600 400 +640 426 +500 375 +640 426 +425 640 +640 391 +500 375 +432 288 +334 500 +640 480 +500 380 +640 480 +500 333 +640 480 +375 500 +640 427 +640 429 +427 640 +500 396 +640 480 +640 480 +500 334 +640 339 +480 640 +640 265 +640 480 +640 480 +640 480 +500 375 +640 480 +479 640 +640 598 +640 427 +640 383 +494 640 +640 427 +500 333 +640 360 +427 640 +640 480 +640 481 +333 500 +480 640 +500 400 +640 372 +480 640 +480 640 +640 512 +640 480 +632 640 +640 480 +453 640 +640 480 +640 480 +361 640 +612 612 +640 427 +500 339 +640 480 +500 376 +500 375 +640 480 +640 363 +640 566 +640 425 +640 480 +500 400 +640 433 +640 427 +480 640 +640 427 +640 427 +640 427 +640 427 +640 353 +471 640 +358 640 +640 427 +640 480 +480 640 +640 480 +640 480 +640 427 +640 480 +640 480 +640 426 +640 480 +640 424 +612 612 +480 640 +640 468 +640 467 +513 640 +640 483 +640 428 +612 612 +427 640 +612 612 +500 333 +500 332 +640 480 +640 427 +444 640 +640 428 +640 487 +481 640 +426 319 +640 424 +333 500 +640 445 +640 427 +640 427 +640 640 +640 478 +500 333 +640 427 +426 640 +640 427 +478 640 +640 480 +518 640 +640 360 +640 480 +640 427 +427 640 +334 500 +640 426 +640 399 +480 640 +375 500 +640 523 +375 500 +338 500 +640 640 +480 640 +640 480 +640 427 +458 640 +640 328 +480 640 +480 640 +640 513 +640 427 +640 405 +640 480 +640 480 +640 426 +640 361 +640 424 +640 443 +640 480 +640 442 +640 359 +640 480 +640 480 +640 480 +640 427 +640 480 +640 437 +427 640 +640 427 +640 480 +640 480 +640 480 +640 480 +640 426 +640 480 +640 425 +480 640 +640 480 +640 426 +640 425 +480 640 +640 426 +640 362 +480 640 +500 330 +640 433 +640 480 +480 640 +640 590 +640 254 +640 426 +640 427 +640 433 +640 429 +640 480 +460 345 +480 640 +640 427 +640 426 +640 480 +500 333 +427 640 +500 332 +480 640 +640 480 +640 640 +500 375 +640 425 +424 640 +500 333 +273 448 +640 631 +451 640 +417 640 +640 427 +640 428 +500 375 +640 459 +479 640 +640 428 +640 396 +500 375 +640 427 +640 427 +640 359 +640 424 +640 427 +640 427 +640 480 +640 228 +640 424 +640 427 +500 333 +500 375 +640 480 +613 640 +600 450 +640 480 +478 640 +640 360 +375 500 +322 471 +640 640 +500 375 +640 428 +632 640 +480 640 +500 498 +453 604 +640 480 +640 359 +500 375 +640 482 +640 478 +640 494 +640 427 +640 480 +427 640 +640 480 +525 640 +480 640 +640 480 +640 429 +640 425 +640 424 +640 480 +640 426 +500 333 +330 500 +640 425 +640 516 +640 427 +500 375 +605 640 +640 427 +640 427 +640 480 +612 612 +375 500 +640 480 +640 427 +640 563 +425 640 +640 427 +640 479 +640 480 +480 640 +640 478 +640 589 +640 427 +640 427 +482 640 +411 640 +640 238 +640 427 +640 427 +427 640 +640 427 +333 500 +640 427 +480 640 +500 375 +640 266 +640 480 +640 549 +421 500 +426 640 +375 500 +333 500 +640 340 +640 443 +640 631 +408 640 +640 552 +640 360 +427 640 +640 480 +480 640 +500 400 +640 254 +489 640 +500 333 +480 640 +640 383 +640 513 +640 428 +640 480 +640 426 +640 480 +640 483 +612 612 +640 389 +640 374 +640 480 +500 375 +640 360 +640 427 +640 480 +640 334 +480 640 +640 383 +418 640 +500 376 +640 623 +612 612 +640 426 +500 375 +423 640 +640 427 +640 480 +640 480 +640 480 +480 640 +640 426 +357 340 +427 640 +640 436 +640 426 +640 427 +469 640 +500 375 +640 453 +640 480 +500 375 +500 375 +375 500 +640 480 +640 512 +500 375 +359 640 +640 480 +320 265 +640 480 +640 480 +640 427 +480 640 +640 432 +640 480 +500 375 +640 430 +500 375 +640 444 +640 427 +640 425 +640 360 +511 640 +640 427 +480 640 +424 640 +512 640 +640 426 +640 427 +640 427 +640 640 +640 360 +640 371 +640 427 +640 480 +640 480 +426 640 +640 471 +640 426 +554 640 +640 385 +640 424 +478 640 +640 480 +500 375 +640 428 +640 478 +640 427 +500 333 +425 640 +640 480 +640 348 +640 473 +640 480 +477 640 +480 640 +640 271 +640 341 +640 456 +640 427 +427 640 +640 640 +640 429 +480 640 +640 427 +640 478 +368 500 +640 480 +640 426 +640 480 +640 478 +640 481 +500 375 +640 427 +640 480 +500 333 +640 399 +640 426 +640 478 +640 480 +375 500 +640 425 +640 454 +640 421 +640 480 +640 427 +640 640 +438 640 +435 640 +640 480 +640 320 +640 506 +640 480 +640 480 +640 640 +640 426 +383 640 +438 640 +612 612 +513 640 +640 424 +640 425 +640 359 +480 640 +640 427 +640 480 +640 480 +640 480 +640 480 +640 480 +480 640 +640 427 +640 427 +500 334 +640 480 +480 640 +640 451 +640 480 +640 480 +465 640 +640 320 +640 429 +640 456 +640 425 +640 426 +640 446 +500 375 +458 380 +640 355 +640 480 +640 480 +640 426 +276 640 +480 640 +640 480 +640 508 +640 386 +640 482 +413 500 +640 453 +640 640 +640 479 +640 480 +640 427 +640 300 +428 640 +640 428 +480 640 +333 500 +640 427 +640 409 +640 428 +480 640 +480 640 +640 422 +412 640 +640 441 +640 425 +427 640 +640 480 +480 640 +640 426 +480 640 +640 480 +500 341 +640 427 +640 360 +640 360 +427 640 +640 428 +640 428 +640 480 +640 425 +640 480 +640 480 +640 427 +400 300 +640 467 +500 333 +504 378 +640 457 +480 640 +640 373 +500 375 +426 640 +640 480 +640 428 +500 333 +640 427 +530 640 +640 480 +640 480 +640 427 +640 480 +640 427 +640 427 +640 480 +480 640 +383 640 +456 640 +480 640 +640 425 +640 426 +640 424 +640 480 +640 425 +640 480 +640 427 +480 640 +640 480 +640 360 +640 480 +480 640 +640 640 +300 450 +640 427 +640 425 +640 400 +640 427 +445 640 +640 480 +640 427 +640 480 +428 640 +640 296 +500 312 +640 400 +640 420 +640 381 +640 480 +375 500 +640 426 +640 426 +640 457 +500 334 +640 480 +640 480 +428 640 +640 466 +480 640 +480 640 +480 640 +640 486 +612 612 +640 480 +480 640 +640 427 +640 427 +640 425 +640 467 +640 426 +480 640 +480 640 +640 480 +640 480 +640 281 +612 612 +333 500 +500 333 +640 427 +640 480 +640 512 +640 480 +480 640 +640 480 +640 427 +640 427 +640 427 +427 640 +614 640 +640 480 +480 640 +640 427 +480 640 +640 480 +254 336 +640 360 +640 455 +640 424 +640 480 +640 480 +640 426 +375 500 +480 640 +427 640 +500 375 +640 424 +640 473 +640 457 +640 359 +500 334 +391 640 +640 428 +480 640 +640 426 +640 427 +640 347 +640 427 +640 436 +640 480 +640 481 +472 640 +500 375 +640 427 +640 424 +336 640 +640 480 +640 353 +640 411 +640 454 +600 450 +640 361 +640 480 +640 640 +640 426 +480 640 +640 480 +500 417 +640 427 +428 640 +640 480 +640 427 +640 427 +480 640 +375 500 +480 640 +640 360 +640 633 +640 427 +640 480 +640 283 +640 434 +360 640 +640 458 +640 480 +640 480 +480 640 +640 480 +640 480 +640 586 +640 640 +640 425 +375 500 +640 427 +640 436 +640 425 +640 360 +640 406 +640 427 +640 492 +640 427 +640 426 +640 424 +500 333 +640 426 +480 640 +640 427 +640 426 +640 431 +427 640 +375 500 +640 360 +640 427 +480 640 +425 640 +640 444 +640 427 +427 640 +591 640 +640 480 +640 427 +640 416 +640 480 +640 427 +640 426 +640 427 +640 440 +640 477 +640 480 +640 359 +640 311 +640 427 +640 326 +640 427 +640 480 +640 310 +640 480 +362 640 +640 480 +470 640 +480 640 +640 449 +640 481 +484 640 +332 500 +569 640 +427 640 +375 500 +612 612 +640 424 +640 467 +485 500 +612 612 +640 480 +500 332 +427 640 +640 425 +640 426 +480 640 +640 480 +640 480 +478 640 +640 480 +640 427 +640 424 +640 428 +640 426 +640 426 +640 427 +640 428 +324 640 +640 449 +500 375 +500 375 +500 281 +506 640 +427 640 +640 480 +640 480 +640 480 +427 640 +612 612 +640 489 +640 480 +480 640 +640 427 +640 424 +500 375 +640 480 +640 480 +612 612 +640 480 +640 480 +426 640 +640 361 +640 427 +640 424 +427 640 +640 428 +640 438 +640 426 +640 480 +640 427 +640 378 +640 427 +640 573 +640 427 +640 480 +640 480 +640 429 +500 333 +640 480 +640 427 +640 428 +640 426 +640 480 +425 640 +640 428 +375 500 +640 425 +640 426 +640 480 +640 480 +640 480 +375 500 +640 480 +640 427 +640 480 +500 375 +500 359 +428 640 +640 362 +640 425 +640 424 +427 640 +640 480 +640 480 +419 500 +370 640 +333 500 +640 427 +500 375 +612 612 +640 432 +640 415 +500 375 +480 640 +612 612 +640 480 +500 400 +640 427 +500 331 +500 375 +500 375 +640 480 +640 558 +640 480 +480 640 +640 480 +478 640 +480 640 +640 480 +640 427 +480 640 +640 480 +480 640 +333 426 +640 431 +500 375 +640 478 +480 640 +640 640 +640 480 +480 640 +640 418 +640 427 +640 480 +640 424 +640 444 +640 480 +526 640 +640 480 +640 480 +640 429 +640 429 +500 375 +424 640 +640 396 +640 318 +640 428 +428 640 +640 480 +433 640 +640 480 +640 427 +500 375 +640 386 +640 427 +640 427 +640 480 +640 480 +640 442 +500 332 +640 428 +360 640 +640 427 +612 612 +480 640 +640 424 +640 480 +425 640 +640 425 +640 480 +640 608 +640 428 +333 500 +427 640 +640 432 +640 480 +640 369 +640 602 +427 640 +640 427 +640 433 +640 426 +478 640 +500 333 +640 360 +640 427 +640 480 +640 351 +640 488 +640 480 +640 424 +640 427 +640 506 +453 604 +640 427 +358 500 +640 480 +500 333 +640 363 +640 640 +640 425 +480 640 +640 480 +640 480 +640 480 +640 428 +640 427 +640 433 +640 466 +640 480 +512 384 +640 411 +640 480 +483 500 +640 480 +640 427 +640 480 +640 480 +640 480 +640 483 +480 640 +640 457 +426 640 +640 480 +500 311 +640 480 +640 426 +500 333 +640 400 +480 640 +640 428 +640 427 +640 426 +640 426 +640 428 +500 333 +640 425 +640 480 +640 425 +480 640 +640 424 +500 375 +612 612 +640 480 +640 480 +427 640 +640 555 +482 640 +640 427 +640 480 +640 478 +640 427 +640 428 +640 519 +640 428 +500 333 +640 360 +640 483 +640 242 +640 480 +500 281 +500 375 +640 429 +500 375 +427 640 +640 424 +640 480 +640 427 +640 480 +640 427 +500 375 +480 640 +640 426 +640 425 +427 640 +640 480 +640 426 +500 409 +640 427 +640 425 +480 640 +500 436 +480 640 +478 640 +500 400 +640 480 +640 427 +640 428 +640 480 +640 425 +640 426 +500 375 +640 480 +640 485 +640 469 +640 426 +612 612 +640 483 +375 500 +640 426 +640 427 +500 375 +640 532 +640 429 +500 375 +640 640 +640 436 +640 427 +640 480 +375 500 +640 427 +640 426 +640 425 +426 640 +427 640 +640 428 +640 480 +640 427 +612 612 +640 479 +480 640 +640 480 +640 427 +480 640 +375 500 +375 500 +640 427 +424 640 +640 427 +640 570 +469 341 +640 480 +640 427 +480 640 +640 427 +640 427 +426 640 +640 427 +640 485 +640 453 +640 427 +427 640 +640 360 +640 480 +427 640 +640 480 +640 480 +640 429 +640 478 +640 480 +480 640 +500 337 +640 480 +640 493 +640 427 +640 424 +640 425 +640 425 +640 427 +480 640 +640 549 +639 640 +500 375 +640 480 +640 399 +640 424 +640 401 +640 429 +640 428 +640 360 +640 427 +521 640 +427 640 +640 342 +425 640 +640 427 +640 480 +640 480 +640 480 +500 375 +426 640 +500 358 +640 514 +640 480 +640 427 +640 640 +640 444 +480 640 +500 335 +640 408 +640 634 +640 427 +640 427 +640 480 +640 427 +640 426 +640 477 +375 500 +640 427 +463 640 +640 480 +418 640 +640 480 +640 480 +640 480 +640 480 +640 425 +427 640 +480 640 +640 433 +640 428 +498 640 +640 427 +640 480 +427 640 +352 500 +640 480 +424 640 +612 612 +640 433 +640 480 +640 480 +640 558 +640 425 +640 428 +640 360 +426 640 +500 286 +640 480 +640 359 +511 640 +640 516 +267 400 +475 500 +494 500 +640 264 +640 427 +640 428 +480 640 +480 640 +640 360 +480 640 +640 423 +640 480 +640 468 +500 325 +500 411 +500 375 +480 640 +640 427 +640 427 +427 640 +640 608 +640 359 +480 640 +640 480 +640 425 +640 426 +640 427 +640 423 +640 428 +640 480 +640 480 +375 500 +640 427 +640 425 +640 504 +640 427 +640 480 +640 354 +445 400 +640 409 +640 427 +400 300 +640 480 +640 427 +463 640 +640 461 +640 479 +640 425 +640 480 +640 429 +500 333 +640 428 +375 500 +612 612 +640 427 +436 640 +480 640 +500 375 +640 480 +640 526 +640 480 +448 500 +480 640 +640 422 +640 480 +640 640 +640 480 +426 640 +500 375 +480 640 +640 480 +640 424 +640 427 +640 457 +640 429 +640 427 +450 600 +425 640 +640 640 +640 229 +640 579 +640 425 +640 426 +640 480 +466 640 +640 427 +640 480 +640 424 +480 640 +640 427 +427 640 +480 319 +640 429 +480 640 +480 640 +333 500 +500 375 +534 640 +640 480 +640 427 +640 427 +640 425 +424 640 +480 640 +640 425 +640 480 +640 428 +480 640 +480 640 +640 426 +360 640 +500 375 +640 428 +640 426 +500 375 +640 480 +375 500 +375 500 +640 372 +640 480 +425 640 +640 480 +612 612 +640 640 +640 480 +500 375 +640 427 +640 506 +640 480 +640 328 +640 480 +640 401 +640 483 +640 428 +433 500 +640 371 +640 427 +640 480 +640 457 +425 640 +640 480 +481 640 +640 480 +640 480 +640 480 +640 424 +427 640 +640 618 +640 640 +500 239 +612 612 +640 421 +640 430 +640 428 +640 567 +500 375 +640 480 +612 612 +640 425 +640 426 +427 640 +640 480 +640 427 +640 348 +640 480 +512 640 +480 640 +480 640 +480 640 +640 427 +640 480 +640 480 +640 426 +427 640 +640 425 +640 512 +640 424 +640 480 +640 480 +640 480 +640 444 +425 640 +640 411 +427 640 +375 500 +640 404 +640 480 +640 480 +574 640 +500 375 +640 427 +640 480 +612 612 +500 375 +640 480 +640 457 +640 480 +640 428 +500 375 +640 480 +375 500 +640 427 +425 640 +640 368 +640 460 +640 480 +640 425 +486 640 +640 458 +426 640 +640 427 +600 400 +640 479 +500 375 +640 427 +640 480 +640 427 +640 480 +640 427 +500 375 +640 429 +612 612 +500 333 +640 480 +640 480 +400 500 +640 480 +480 640 +500 375 +180 240 +434 640 +427 640 +640 480 +640 429 +640 427 +256 640 +640 480 +640 428 +500 375 +640 395 +640 469 +500 375 +640 640 +640 428 +427 640 +640 480 +427 640 +640 427 +640 426 +426 640 +640 426 +640 480 +640 424 +640 443 +640 425 +375 500 +597 640 +640 427 +640 427 +480 640 +640 480 +480 640 +640 427 +640 480 +640 427 +640 325 +640 483 +640 480 +640 480 +640 440 +640 480 +433 500 +640 427 +640 480 +478 640 +640 426 +640 480 +640 480 +640 427 +640 424 +640 386 +640 427 +640 360 +480 640 +640 438 +500 332 +640 428 +640 480 +640 427 +640 394 +640 480 +640 237 +640 426 +612 612 +480 640 +640 427 +640 480 +410 640 +640 427 +640 480 +480 640 +500 333 +640 512 +640 480 +640 427 +480 640 +640 480 +427 640 +640 480 +480 640 +640 531 +334 500 +640 379 +480 640 +427 640 +480 640 +480 640 +640 480 +427 640 +640 384 +612 612 +640 426 +640 448 +500 337 +640 480 +640 480 +500 375 +640 480 +375 500 +640 384 +640 480 +480 640 +640 480 +640 480 +500 281 +640 519 +376 500 +640 480 +640 427 +480 640 +425 640 +640 480 +640 425 +640 426 +612 612 +640 480 +461 640 +640 425 +640 434 +640 424 +640 427 +480 640 +640 640 +640 494 +640 427 +447 640 +640 479 +640 480 +640 428 +640 426 +640 640 +480 360 +480 640 +640 360 +640 480 +426 640 +640 435 +640 480 +640 480 +640 383 +640 425 +640 480 +416 640 +640 424 +428 640 +640 481 +640 418 +500 364 +424 500 +640 360 +480 640 +640 426 +640 427 +640 422 +453 640 +428 640 +612 612 +640 480 +426 640 +600 600 +640 428 +640 480 +640 360 +640 425 +640 480 +428 640 +480 640 +360 640 +375 500 +427 640 +640 480 +640 480 +640 514 +640 480 +425 640 +640 376 +640 431 +640 427 +375 500 +640 480 +375 500 +640 480 +480 640 +427 640 +640 480 +332 500 +457 640 +640 544 +640 433 +640 513 +480 640 +640 480 +425 640 +640 480 +512 640 +500 332 +640 480 +640 425 +640 480 +640 426 +427 640 +596 446 +640 359 +640 427 +640 480 +640 480 +640 480 +480 640 +640 457 +640 480 +428 640 +640 640 +500 335 +333 500 +612 612 +640 427 +640 426 +640 480 +640 427 +500 333 +640 480 +480 640 +640 428 +480 640 +640 480 +426 640 +640 458 +375 500 +480 640 +640 427 +427 640 +425 640 +480 640 +500 376 +640 427 +500 370 +448 500 +458 640 +640 480 +640 426 +640 637 +640 480 +640 480 +512 640 +500 375 +640 427 +640 434 +500 332 +640 403 +640 480 +640 480 +640 427 +640 427 +640 426 +640 480 +427 640 +513 640 +640 424 +640 480 +640 426 +640 428 +640 480 +500 333 +640 480 +640 360 +640 480 +640 427 +640 343 +640 480 +500 377 +500 375 +425 640 +640 413 +454 640 +640 426 +375 500 +640 480 +480 640 +640 523 +640 428 +500 333 +640 427 +640 481 +640 420 +500 375 +480 640 +422 640 +640 427 +640 432 +640 265 +466 640 +608 640 +427 640 +480 640 +640 426 +640 427 +640 360 +640 427 +480 640 +640 480 +640 426 +640 427 +640 420 +640 427 +612 612 +375 500 +423 640 +414 500 +480 640 +480 640 +640 427 +640 427 +640 425 +640 429 +612 612 +457 640 +640 640 +600 640 +640 480 +426 640 +640 427 +500 332 +428 640 +640 463 +640 426 +640 480 +480 640 +640 480 +640 461 +640 441 +496 640 +640 508 +640 428 +427 640 +640 480 +640 480 +612 612 +640 480 +448 640 +500 333 +426 640 +640 480 +426 640 +480 640 +640 480 +500 335 +231 500 +432 640 +640 427 +480 640 +640 427 +480 640 +640 441 +640 480 +375 500 +640 427 +640 426 +640 480 +640 423 +427 640 +640 480 +640 425 +640 429 +559 640 +640 519 +478 640 +640 480 +480 640 +640 512 +640 480 +640 427 +640 404 +427 640 +640 480 +640 480 +640 427 +640 480 +500 375 +640 484 +480 640 +640 614 +480 640 +640 427 +425 640 +640 426 +640 426 +640 458 +640 480 +640 458 +640 426 +480 640 +640 480 +500 338 +640 480 +640 427 +640 428 +612 612 +480 640 +640 426 +375 500 +480 640 +640 427 +640 425 +516 640 +500 420 +640 424 +640 427 +640 633 +612 612 +479 640 +640 427 +640 424 +640 427 +480 640 +500 375 +480 640 +612 612 +640 482 +640 480 +543 640 +480 640 +640 427 +640 480 +640 480 +640 425 +640 501 +640 480 +640 454 +640 427 +640 425 +473 640 +640 425 +480 640 +612 612 +428 640 +640 506 +640 480 +640 579 +480 640 +640 425 +640 427 +640 458 +640 423 +640 478 +640 480 +640 426 +612 612 +640 517 +303 500 +427 640 +640 400 +426 640 +640 480 +500 375 +640 434 +640 428 +640 480 +640 427 +500 333 +640 480 +640 427 +480 640 +640 480 +478 640 +640 424 +612 612 +500 333 +640 480 +640 480 +640 483 +514 640 +426 640 +640 480 +640 480 +480 640 +640 360 +500 375 +640 480 +426 640 +640 428 +640 461 +640 483 +640 471 +640 428 +427 640 +640 480 +426 640 +480 640 +375 500 +401 640 +640 514 +500 333 +640 424 +640 480 +640 502 +640 480 +640 372 +640 477 +640 426 +640 426 +480 640 +640 427 +500 375 +480 640 +640 478 +640 480 +427 640 +640 427 +612 612 +640 426 +500 333 +480 640 +500 333 +425 640 +640 427 +480 640 +640 480 +437 640 +640 360 +640 416 +640 427 +500 308 +640 427 +640 480 +375 500 +640 480 +640 360 +426 640 +427 640 +640 426 +640 383 +425 640 +640 480 +640 427 +640 421 +640 480 +640 428 +640 478 +640 503 +640 458 +427 640 +500 375 +640 480 +640 480 +640 427 +640 495 +480 640 +467 607 +640 425 +428 640 +640 448 +480 640 +640 361 +640 480 +640 426 +500 375 +640 389 +640 480 +480 640 +640 451 +500 375 +480 640 +640 428 +640 480 +500 375 +640 478 +426 640 +640 480 +640 480 +640 526 +500 364 +640 427 +383 500 +640 480 +500 355 +500 375 +640 481 +500 400 +640 480 +612 612 +640 360 +640 480 +640 426 +479 640 +640 480 +612 612 +375 500 +640 486 +500 375 +640 498 +640 427 +500 375 +640 427 +480 640 +640 480 +640 428 +612 612 +640 427 +500 375 +640 475 +640 425 +640 523 +480 640 +427 640 +640 480 +640 480 +640 480 +640 427 +480 640 +640 506 +640 427 +640 480 +640 528 +640 480 +640 480 +426 640 +640 425 +640 426 +640 427 +640 278 +500 335 +500 281 +427 640 +375 500 +427 640 +640 438 +640 427 +480 640 +640 360 +640 480 +640 480 +640 389 +375 500 +640 427 +640 427 +423 640 +640 480 +612 612 +427 640 +388 640 +640 425 +480 640 +640 480 +425 640 +500 375 +427 640 +425 640 +640 480 +640 448 +640 480 +375 500 +640 480 +640 640 +427 640 +375 500 +478 640 +424 640 +480 640 +426 640 +478 640 +640 480 +334 500 +640 426 +640 426 +640 425 +480 640 +640 360 +640 480 +640 428 +640 480 +640 424 +640 424 +640 427 +640 439 +640 426 +500 375 +640 425 +640 480 +480 640 +640 426 +640 427 +500 333 +640 480 +640 300 +640 404 +510 340 +640 427 +640 478 +480 640 +640 426 +640 483 +640 424 +640 319 +640 321 +500 333 +640 408 +640 427 +640 434 +640 457 +640 427 +640 426 +375 500 +500 333 +640 427 +640 478 +640 480 +480 640 +640 426 +640 427 +640 413 +640 480 +640 433 +428 640 +640 476 +387 518 +640 364 +640 480 +640 474 +640 480 +500 293 +480 640 +640 426 +500 500 +640 457 +346 500 +640 480 +480 640 +480 640 +500 334 +480 640 +640 478 +640 480 +640 427 +640 480 +640 470 +640 441 +375 500 +418 500 +640 427 +480 640 +425 640 +432 432 +640 425 +500 361 +640 388 +375 500 +640 425 +640 426 +457 640 +499 500 +640 480 +427 640 +640 361 +640 428 +484 640 +640 425 +640 480 +640 476 +640 480 +640 480 +640 427 +375 500 +583 640 +640 480 +480 640 +375 500 +612 612 +480 640 +500 327 +480 640 +640 427 +612 612 +426 640 +514 640 +480 640 +640 427 +640 400 +640 427 +640 305 +640 480 +640 480 +640 427 +466 640 +640 480 +640 480 +640 427 +369 500 +640 480 +640 425 +640 481 +427 640 +640 479 +440 640 +478 640 +640 329 +428 640 +640 464 +640 427 +640 457 +640 508 +640 480 +640 391 +500 375 +640 478 +640 431 +375 500 +480 640 +640 594 +428 640 +640 446 +500 332 +480 640 +411 500 +640 427 +640 485 +640 480 +640 401 +640 425 +640 359 +640 640 +640 480 +640 427 +424 640 +640 480 +640 426 +640 480 +640 480 +500 375 +640 480 +640 428 +375 500 +425 640 +640 480 +640 485 +640 480 +425 640 +480 640 +640 428 +640 480 +640 434 +640 427 +640 480 +640 508 +640 480 +640 425 +640 427 +342 500 +640 426 +612 612 +428 640 +640 427 +500 375 +612 612 +640 427 +426 640 +375 500 +480 640 +640 463 +640 480 +281 500 +375 500 +500 375 +640 427 +375 500 +640 480 +640 427 +640 359 +640 425 +640 480 +480 640 +640 406 +640 426 +640 620 +640 480 +500 375 +640 427 +500 375 +480 640 +640 480 +640 362 +491 640 +480 640 +640 383 +640 480 +500 375 +640 426 +640 480 +640 480 +640 480 +640 426 +640 428 +640 480 +426 640 +427 640 +640 423 +640 427 +500 375 +640 476 +500 375 +640 480 +427 640 +640 480 +640 480 +612 612 +640 427 +640 426 +640 512 +333 500 +640 458 +640 478 +427 640 +640 427 +640 480 +640 480 +640 427 +640 382 +640 480 +500 313 +375 500 +640 480 +640 457 +640 428 +640 481 +427 640 +640 428 +640 363 +427 640 +640 425 +640 426 +425 640 +640 427 +640 425 +640 427 +640 480 +640 481 +423 640 +640 563 +640 427 +640 480 +612 612 +640 426 +640 480 +296 446 +500 333 +640 480 +640 425 +640 480 +640 480 +500 333 +618 640 +640 480 +640 427 +500 375 +500 333 +480 640 +423 640 +428 640 +426 640 +500 334 +640 480 +640 480 +640 424 +640 469 +640 439 +427 640 +640 427 +426 640 +640 480 +480 640 +640 480 +500 333 +640 426 +640 480 +500 281 +640 427 +640 481 +640 480 +640 427 +640 640 +640 427 +640 472 +640 480 +480 640 +640 480 +640 544 +640 489 +480 640 +500 429 +640 428 +500 333 +480 640 +640 326 +480 640 +500 375 +640 480 +640 413 +640 480 +640 480 +640 426 +640 426 +640 480 +640 480 +612 612 +640 426 +640 478 +640 480 +640 447 +426 640 +640 427 +480 342 +640 426 +500 335 +332 500 +435 640 +640 501 +640 427 +366 640 +640 328 +500 376 +500 333 +640 517 +640 360 +640 480 +640 427 +640 480 +640 426 +640 398 +640 426 +640 425 +640 640 +427 640 +640 427 +437 640 +640 431 +640 427 +640 490 +640 427 +640 428 +640 480 +640 480 +640 433 +500 375 +640 480 +640 480 +640 480 +640 427 +640 347 +640 480 +640 480 +640 379 +353 640 +640 360 +451 640 +640 400 +640 428 +375 500 +640 457 +612 612 +640 480 +427 640 +480 640 +640 480 +640 480 +640 428 +640 425 +480 640 +426 640 +640 427 +500 334 +640 281 +640 480 +400 500 +428 640 +640 427 +482 640 +640 428 +640 427 +640 480 +640 480 +640 434 +500 334 +500 333 +640 427 +427 640 +640 426 +640 385 +640 480 +480 640 +480 640 +640 604 +640 426 +640 454 +640 480 +640 480 +640 569 +640 427 +640 425 +640 480 +640 439 +640 480 +640 480 +480 640 +640 480 +640 480 +640 480 +500 364 +640 426 +640 480 +425 640 +640 640 +480 640 +480 640 +640 480 +474 640 +640 427 +640 396 +498 500 +640 480 +500 375 +440 500 +427 640 +640 480 +500 349 +428 640 +640 427 +640 427 +640 427 +640 461 +640 486 +640 480 +480 640 +640 473 +640 427 +640 425 +640 360 +640 428 +640 426 +640 478 +640 326 +640 399 +640 480 +640 400 +640 427 +640 312 +640 640 +633 640 +580 580 +640 500 +640 427 +640 480 +640 427 +640 480 +500 333 +640 498 +468 640 +375 500 +430 640 +640 480 +480 640 +640 425 +480 640 +383 640 +500 333 +640 426 +468 640 +640 480 +640 480 +500 375 +640 480 +413 640 +640 383 +640 480 +500 375 +500 333 +426 640 +640 486 +500 375 +427 640 +640 480 +640 324 +640 480 +375 500 +480 640 +375 500 +612 612 +500 375 +612 612 +640 541 +640 481 +427 640 +640 480 +640 480 +480 640 +640 480 +612 612 +427 640 +640 480 +640 427 +640 426 +529 640 +500 375 +640 416 +640 480 +567 640 +640 554 +640 478 +640 427 +359 640 +640 383 +640 512 +640 427 +500 332 +508 640 +640 424 +640 278 +375 500 +480 640 +640 481 +640 480 +459 640 +450 600 +640 480 +548 640 +640 640 +640 480 +425 640 +640 425 +640 427 +640 480 +640 426 +640 480 +640 399 +640 480 +640 427 +640 456 +640 480 +640 480 +640 480 +458 640 +640 428 +640 480 +500 375 +640 478 +640 480 +640 418 +640 480 +640 427 +640 589 +640 400 +480 640 +375 500 +500 332 +640 480 +640 423 +640 427 +640 480 +640 426 +640 480 +640 480 +428 640 +640 480 +640 480 +640 427 +640 426 +640 480 +500 375 +480 640 +640 480 +640 515 +426 640 +640 427 +612 612 +640 480 +500 357 +480 640 +640 480 +640 359 +427 640 +426 640 +640 427 +640 427 +640 480 +640 427 +500 375 +640 422 +480 640 +640 427 +480 640 +640 480 +350 500 +640 425 +640 480 +480 640 +640 480 +640 427 +640 427 +640 461 +640 426 +640 502 +612 612 +640 480 +640 480 +640 424 +500 375 +640 433 +640 480 +640 480 +640 480 +640 425 +480 640 +427 640 +640 423 +640 480 +640 427 +640 480 +640 427 +640 480 +640 324 +640 478 +480 640 +640 480 +640 480 +640 640 +640 427 +640 480 +640 480 +320 500 +640 424 +500 375 +480 640 +480 640 +640 480 +480 640 +640 480 +640 359 +480 640 +640 427 +427 640 +180 240 +500 333 +640 516 +500 348 +253 130 +375 500 +640 279 +640 427 +640 427 +640 480 +500 375 +427 640 +640 424 +640 426 +500 375 +375 500 +640 427 +640 423 +640 427 +427 640 +640 478 +640 480 +640 427 +500 334 +640 480 +640 480 +500 333 +450 338 +640 584 +627 640 +640 480 +480 640 +640 480 +640 481 +640 480 +426 640 +640 425 +640 553 +640 480 +612 612 +500 334 +500 375 +640 480 +640 434 +640 480 +640 428 +640 480 +444 640 +640 480 +640 480 +612 612 +500 375 +640 427 +426 640 +640 427 +387 640 +423 640 +640 360 +640 480 +640 480 +500 375 +640 480 +640 427 +640 480 +640 528 +640 479 +640 480 +563 640 +640 478 +640 480 +500 286 +500 415 +640 533 +640 544 +640 427 +480 640 +640 427 +640 426 +640 426 +500 500 +640 480 +640 480 +480 640 +640 426 +426 640 +500 397 +551 640 +640 427 +640 502 +640 401 +500 333 +640 427 +640 480 +354 640 +640 449 +500 333 +640 418 +408 640 +431 640 +640 480 +640 480 +612 612 +448 336 +640 480 +640 444 +400 600 +640 427 +640 480 +427 640 +612 612 +640 425 +640 427 +640 359 +640 512 +375 500 +426 640 +640 425 +640 426 +640 426 +640 417 +640 427 +640 480 +612 612 +640 489 +640 425 +500 336 +427 640 +640 480 +430 318 +640 480 +640 426 +429 640 +640 426 +427 640 +640 360 +640 480 +640 427 +640 427 +640 480 +640 480 +640 368 +640 427 +640 426 +640 480 +640 411 +640 482 +640 480 +640 477 +480 640 +640 480 +640 480 +640 480 +500 500 +443 640 +640 426 +640 425 +640 480 +640 480 +427 640 +640 480 +403 640 +533 640 +640 425 +640 632 +612 612 +500 332 +335 500 +640 480 +550 550 +640 480 +640 480 +500 375 +640 480 +375 500 +427 640 +640 424 +640 427 +640 425 +640 427 +640 458 +426 640 +640 478 +640 426 +640 359 +500 401 +640 360 +640 438 +640 425 +480 640 +480 640 +640 480 +640 429 +480 640 +480 640 +500 333 +480 640 +640 459 +640 427 +640 426 +500 333 +413 640 +530 530 +640 428 +640 480 +480 640 +640 480 +640 480 +640 449 +640 426 +586 640 +640 480 +359 640 +428 640 +500 335 +640 426 +640 640 +640 426 +640 426 +640 426 +640 480 +640 634 +640 427 +640 480 +640 480 +500 375 +500 333 +640 480 +426 640 +640 441 +640 501 +500 474 +640 480 +640 427 +640 427 +478 640 +424 640 +500 375 +640 426 +640 427 +640 480 +480 640 +462 640 +640 480 +500 333 +240 320 +590 397 +640 480 +640 400 +640 428 +640 480 +500 375 +640 427 +640 480 +640 396 +640 480 +480 640 +500 375 +640 480 +640 427 +333 500 +640 458 +453 640 +640 427 +640 427 +640 427 +480 640 +640 427 +500 375 +640 367 +427 640 +640 512 +640 426 +640 478 +640 480 +640 352 +410 640 +500 375 +640 425 +500 375 +424 640 +640 425 +480 640 +462 557 +640 480 +640 480 +640 427 +500 375 +640 470 +500 375 +375 500 +500 375 +427 640 +480 640 +480 640 +480 640 +640 360 +640 420 +640 427 +430 640 +383 640 +640 431 +332 500 +640 485 +500 333 +500 331 +375 500 +640 480 +640 426 +640 480 +640 640 +640 427 +427 640 +640 480 +640 480 +640 428 +480 640 +640 480 +640 427 +640 427 +480 640 +640 427 +640 480 +480 640 +640 480 +640 480 +478 640 +640 427 +640 480 +640 427 +427 640 +640 480 +480 640 +500 332 +640 480 +426 640 +640 480 +640 441 +640 427 +640 480 +478 640 +640 480 +640 480 +640 418 +640 427 +500 332 +480 640 +640 248 +640 480 +425 640 +480 640 +640 383 +320 427 +640 480 +480 640 +640 639 +640 480 +427 640 +481 640 +640 533 +640 426 +640 427 +612 612 +500 333 +640 480 +640 465 +536 640 +500 375 +640 427 +640 426 +427 640 +640 426 +640 427 +375 500 +640 213 +640 512 +640 480 +427 640 +640 425 +640 480 +640 480 +406 640 +640 426 +640 640 +640 480 +640 480 +640 480 +393 640 +640 427 +640 427 +500 375 +640 428 +640 428 +640 359 +640 487 +640 478 +640 640 +500 332 +640 427 +640 480 +640 261 +375 500 +640 426 +640 428 +640 405 +500 375 +331 500 +480 640 +640 480 +640 427 +640 480 +640 480 +640 427 +640 402 +500 375 +640 427 +478 640 +640 640 +375 500 +640 427 +640 424 +640 480 +640 426 +640 425 +480 640 +640 426 +640 424 +640 427 +640 427 +375 500 +640 427 +640 427 +640 480 +488 640 +640 430 +480 640 +640 480 +640 480 +640 427 +640 480 +640 294 +640 480 +640 480 +640 427 +640 427 +640 427 +640 427 +500 375 +500 375 +640 480 +640 480 +640 427 +640 480 +640 480 +640 508 +500 499 +640 431 +640 424 +375 500 +338 480 +640 427 +640 427 +640 479 +612 612 +440 640 +640 425 +500 291 +426 640 +640 480 +480 640 +426 640 +640 426 +640 427 +640 424 +281 446 +500 319 +640 427 +640 381 +640 427 +640 360 +520 347 +640 427 +640 425 +640 428 +640 427 +640 318 +332 500 +640 480 +640 428 +640 360 +640 479 +401 500 +640 480 +640 427 +640 480 +640 418 +640 453 +480 640 +360 640 +500 375 +640 426 +640 480 +640 480 +640 457 +480 640 +640 427 +283 500 +640 480 +640 514 +640 480 +640 427 +426 640 +500 375 +640 427 +500 375 +500 331 +497 640 +637 640 +640 428 +640 480 +640 479 +640 478 +640 480 +640 480 +500 333 +640 426 +640 427 +640 353 +640 360 +640 427 +640 427 +640 427 +640 478 +640 480 +640 424 +640 480 +480 640 +640 502 +640 480 +478 640 +478 640 +640 426 +424 640 +640 428 +425 352 +640 480 +640 418 +640 418 +640 480 +425 640 +640 428 +612 612 +640 380 +640 427 +640 480 +640 480 +375 500 +640 480 +640 425 +640 519 +500 375 +500 333 +640 480 +640 480 +640 480 +640 598 +500 332 +640 427 +640 484 +640 470 +640 383 +500 375 +640 428 +640 479 +640 480 +374 500 +612 612 +640 428 +425 640 +640 391 +640 480 +640 503 +640 480 +427 640 +640 445 +640 480 +640 362 +640 424 +500 335 +480 640 +426 640 +640 473 +517 640 +427 640 +640 401 +640 480 +640 480 +640 386 +500 500 +612 612 +640 427 +640 549 +640 640 +640 480 +640 480 +640 465 +640 361 +500 375 +500 334 +640 428 +640 480 +480 640 +640 426 +460 640 +418 640 +640 427 +612 612 +640 491 +427 640 +640 480 +640 427 +640 480 +500 375 +640 480 +640 480 +640 480 +640 427 +427 640 +612 612 +640 538 +480 640 +640 424 +640 359 +426 640 +640 360 +450 287 +640 531 +500 375 +640 425 +640 480 +640 427 +612 612 +640 480 +375 500 +500 332 +640 480 +640 424 +360 640 +500 300 +640 640 +480 640 +640 360 +640 480 +640 480 +539 640 +427 640 +640 480 +640 393 +427 640 +640 314 +640 427 +500 375 +640 480 +640 480 +640 480 +640 480 +640 480 +640 427 +500 400 +640 480 +640 454 +640 425 +500 377 +500 375 +640 403 +640 469 +640 344 +640 480 +640 415 +320 480 +500 375 +426 640 +640 480 +640 440 +640 428 +640 480 +451 640 +425 640 +640 480 +640 480 +480 640 +640 360 +480 640 +640 480 +480 640 +640 427 +640 480 +640 640 +640 427 +428 640 +640 588 +640 427 +640 355 +500 277 +640 427 +612 612 +640 480 +500 375 +640 455 +640 428 +640 415 +500 375 +640 426 +640 427 +500 357 +426 640 +400 500 +640 480 +500 375 +424 640 +640 480 +640 480 +640 360 +640 480 +640 427 +239 640 +640 480 +640 480 +640 428 +640 426 +640 480 +500 333 +640 427 +640 436 +478 640 +640 478 +640 427 +640 466 +640 408 +640 428 +640 310 +583 640 +640 480 +640 447 +640 480 +640 429 +640 427 +640 426 +640 427 +500 375 +500 375 +640 478 +480 640 +640 640 +500 332 +458 640 +640 427 +500 324 +640 427 +640 427 +640 426 +640 428 +640 427 +640 640 +640 480 +640 476 +640 480 +640 435 +640 419 +640 428 +357 500 +640 360 +640 427 +640 427 +500 333 +640 480 +640 480 +640 480 +426 640 +640 480 +640 380 +640 478 +640 390 +640 480 +612 612 +480 640 +640 426 +640 533 +640 426 +640 424 +429 640 +512 640 +640 480 +480 640 +640 427 +480 640 +427 640 +640 426 +640 480 +427 640 +640 480 +640 480 +480 640 +640 425 +640 427 +640 427 +640 429 +640 427 +480 640 +640 429 +640 480 +640 480 +640 480 +640 427 +640 480 +640 480 +640 427 +640 480 +640 480 +500 333 +640 480 +640 427 +517 640 +640 480 +500 375 +640 427 +640 626 +640 427 +500 375 +500 333 +640 480 +640 427 +500 375 +640 480 +640 480 +640 429 +500 375 +480 640 +640 480 +640 640 +640 480 +640 360 +640 427 +640 427 +640 403 +640 480 +426 640 +640 426 +640 480 +640 428 +640 640 +543 640 +500 500 +640 427 +421 640 +640 428 +612 612 +640 427 +640 427 +640 438 +500 334 +500 375 +640 427 +426 640 +640 640 +423 640 +612 612 +640 280 +640 480 +640 426 +640 463 +640 480 +500 333 +478 640 +640 480 +640 424 +480 640 +640 480 +500 375 +640 480 +640 427 +640 427 +640 426 +640 427 +640 480 +640 480 +426 640 +640 424 +640 428 +500 375 +460 640 +500 333 +640 426 +640 425 +640 640 +640 480 +640 480 +640 426 +500 333 +427 640 +640 480 +612 612 +640 480 +640 484 +480 640 +480 640 +500 332 +640 509 +436 500 +640 427 +640 480 +500 336 +480 640 +360 640 +480 640 +640 480 +640 480 +500 333 +640 427 +640 426 +640 452 +640 427 +424 640 +427 640 +640 480 +640 427 +335 500 +375 500 +313 500 +500 309 +640 480 +640 613 +367 640 +640 494 +640 480 +640 489 +612 612 +640 425 +640 404 +480 640 +480 640 +640 601 +375 500 +640 441 +379 640 +640 426 +640 427 +640 480 +480 640 +640 427 +640 426 +640 427 +640 480 +375 500 +500 333 +500 375 +640 480 +480 640 +640 480 +72 51 +640 427 +480 640 +640 480 +640 480 +640 424 +640 360 +640 433 +481 640 +640 480 +640 640 +640 431 +640 426 +640 426 +640 480 +640 427 +640 480 +640 480 +479 640 +640 480 +640 496 +640 428 +640 427 +640 480 +640 480 +425 640 +640 427 +640 427 +640 422 +640 480 +500 375 +640 426 +640 480 +640 427 +640 480 +640 480 +640 529 +640 480 +640 428 +640 443 +480 640 +640 636 +640 378 +640 480 +383 500 +640 472 +640 427 +456 640 +640 427 +640 426 +640 427 +640 389 +378 500 +640 459 +640 427 +500 375 +331 500 +640 416 +640 640 +500 375 +640 480 +480 640 +455 640 +640 480 +500 375 +640 359 +433 640 +640 480 +640 480 +480 640 +427 640 +640 348 +640 479 +640 640 +640 478 +640 480 +320 240 +427 640 +640 427 +640 427 +640 426 +640 433 +640 480 +640 480 +360 480 +640 434 +480 640 +427 640 +640 465 +640 359 +480 640 +640 480 +640 480 +640 480 +640 480 +640 480 +640 389 +375 500 +640 451 +640 468 +640 474 +640 428 +600 450 +640 480 +612 612 +640 359 +500 333 +608 640 +424 640 +333 500 +640 481 +480 640 +428 500 +640 427 +640 458 +640 480 +640 426 +485 640 +500 375 +640 427 +640 427 +640 480 +640 480 +427 640 +640 480 +640 426 +640 424 +640 480 +640 480 +414 640 +500 500 +480 640 +457 640 +427 640 +500 498 +640 427 +387 500 +480 640 +640 428 +640 480 +480 640 +640 480 +640 482 +480 640 +640 427 +640 480 +640 426 +428 640 +500 332 +640 480 +576 494 +640 480 +640 480 +640 427 +640 426 +640 474 +640 482 +640 480 +427 640 +300 480 +640 360 +640 427 +612 612 +640 441 +640 480 +640 480 +640 478 +640 426 +640 480 +640 399 +403 640 +640 640 +500 375 +640 480 +640 427 +640 480 +640 427 +640 427 +640 394 +640 360 +640 428 +500 328 +612 612 +640 425 +277 500 +480 640 +640 508 +640 524 +427 640 +612 612 +640 427 +640 419 +372 500 +640 478 +640 427 +425 640 +640 480 +500 375 +480 640 +640 480 +480 640 +640 480 +640 426 +480 640 +640 427 +427 640 +500 375 +640 450 +640 480 +500 375 +612 612 +500 375 +480 640 +480 640 +480 640 +640 480 +480 640 +640 271 +480 640 +500 333 +640 480 +481 640 +427 640 +640 360 +640 427 +640 236 +640 480 +640 431 +480 640 +375 500 +640 426 +640 424 +640 480 +640 480 +441 640 +640 427 +427 640 +640 480 +500 375 +640 427 +480 640 +640 360 +640 480 +427 640 +640 427 +640 480 +640 427 +500 333 +480 640 +375 500 +433 500 +640 480 +640 480 +500 370 +640 360 +640 389 +436 640 +640 480 +640 480 +640 426 +427 640 +640 640 +576 384 +640 480 +500 415 +500 500 +640 480 +500 402 +640 480 +640 427 +333 500 +640 426 +500 375 +640 425 +440 500 +640 427 +640 480 +427 640 +640 426 +640 480 +333 500 +640 474 +640 480 +478 640 +480 640 +640 478 +640 427 +630 640 +500 375 +640 480 +640 458 +640 425 +640 480 +500 336 +332 500 +640 436 +640 480 +480 640 +640 512 +434 500 +640 426 +640 480 +478 640 +640 479 +640 483 +640 437 +640 436 +640 427 +640 425 +640 483 +480 640 +500 375 +640 428 +500 334 +359 473 +640 427 +640 288 +640 480 +640 480 +640 480 +480 640 +640 480 +500 375 +640 480 +640 480 +600 450 +500 335 +480 640 +640 480 +500 400 +640 480 +480 640 +500 333 +612 612 +640 480 +500 359 +375 500 +640 480 +640 413 +640 480 +640 480 +424 640 +640 494 +640 427 +640 480 +640 423 +640 426 +640 480 +640 480 +500 375 +480 640 +640 427 +640 480 +640 480 +640 427 +640 383 +425 640 +480 640 +640 427 +640 470 +640 427 +423 640 +480 640 +640 424 +500 336 +333 500 +640 480 +640 424 +640 427 +640 428 +500 375 +478 640 +640 512 +640 506 +640 480 +375 500 +640 396 +640 427 +640 428 +480 640 +333 500 +640 427 +500 333 +483 640 +640 480 +500 332 +640 426 +369 500 +640 396 +640 480 +640 427 +424 640 +640 424 +640 480 +427 640 +640 480 +458 640 +640 480 +480 640 +640 378 +640 601 +640 480 +640 480 +640 427 +640 480 +640 480 +320 240 +640 506 +640 426 +640 484 +427 640 +375 500 +640 426 +500 375 +640 480 +640 443 +640 428 +427 640 +504 337 +640 296 +375 500 +500 375 +480 640 +640 480 +296 442 +432 345 +375 500 +640 427 +478 640 +640 478 +640 494 +500 333 +640 480 +500 400 +427 640 +406 640 +425 640 +640 424 +640 427 +640 427 +640 458 +640 480 +612 612 +640 480 +500 375 +640 427 +640 480 +549 640 +500 281 +640 640 +500 333 +312 400 +500 375 +640 522 +500 375 +640 478 +640 427 +640 626 +640 480 +620 486 +640 422 +640 480 +506 640 +640 425 +640 480 +640 427 +640 425 +640 360 +640 512 +500 375 +640 480 +640 428 +640 370 +612 612 +640 480 +375 500 +640 605 +500 334 +640 480 +640 480 +640 481 +426 640 +500 375 +624 415 +640 400 +427 640 +481 500 +640 361 +425 640 +640 429 +640 360 +640 499 +640 480 +427 640 +640 424 +480 640 +640 427 +640 440 +500 375 +640 480 +640 480 +480 640 +640 521 +640 427 +471 500 +427 640 +640 479 +640 480 +500 375 +640 428 +640 480 +640 428 +500 333 +480 640 +640 480 +640 480 +640 480 +640 480 +640 480 +640 426 +500 334 +640 427 +427 640 +640 480 +640 480 +515 640 +480 640 +640 480 +572 640 +640 480 +640 480 +640 425 +640 480 +640 480 +640 360 +500 332 +640 360 +480 640 +480 640 +640 427 +640 480 +640 426 +640 480 +427 640 +427 640 +640 479 +640 640 +500 375 +640 457 +640 479 +640 376 +427 640 +640 426 +640 524 +392 640 +640 425 +640 429 +640 480 +640 426 +640 480 +640 512 +640 427 +500 375 +640 480 +640 480 +480 640 +480 640 +640 427 +640 480 +640 480 +426 640 +640 427 +640 494 +640 480 +375 500 +640 300 +640 480 +640 452 +640 480 +640 578 +640 427 +640 442 +640 480 +640 424 +480 640 +494 500 +233 350 +640 423 +640 640 +640 360 +427 640 +480 640 +640 427 +428 640 +640 427 +640 427 +640 480 +640 480 +500 444 +480 640 +640 480 +640 518 +427 640 +500 333 +640 480 +640 427 +480 640 +640 427 +640 480 +640 425 +640 427 +640 402 +640 427 +640 480 +640 425 +640 630 +429 640 +640 480 +640 640 +640 480 +480 640 +500 333 +640 346 +489 640 +640 427 +640 426 +640 144 +640 424 +640 480 +640 417 +640 480 +640 640 +640 426 +426 640 +640 480 +640 414 +300 357 +640 480 +640 427 +383 640 +480 640 +480 640 +375 500 +640 427 +500 375 +640 427 +429 640 +512 640 +640 473 +427 640 +640 426 +640 427 +640 241 +640 428 +640 478 +640 425 +456 640 +500 375 +640 480 +640 273 +500 375 +640 426 +500 375 +425 640 +500 375 +640 427 +612 612 +640 480 +422 640 +640 427 +427 640 +480 640 +500 375 +529 640 +640 501 +640 480 +640 424 +640 427 +640 530 +375 500 +640 427 +500 333 +640 428 +640 360 +640 480 +612 612 +500 500 +640 427 +640 480 +640 424 +480 640 +425 640 +640 480 +375 500 +500 375 +640 424 +600 464 +500 333 +500 500 +640 466 +640 427 +640 480 +640 348 +609 640 +640 480 +640 408 +640 480 +427 640 +640 480 +640 480 +640 416 +500 375 +640 569 +326 220 +419 640 +640 480 +375 500 +375 500 +640 427 +640 461 +480 640 +640 481 +427 640 +640 427 +640 480 +640 480 +640 427 +640 480 +480 640 +640 478 +640 427 +640 480 +375 500 +640 427 +500 375 +493 640 +500 375 +427 640 +640 480 +431 640 +640 480 +640 427 +640 428 +428 640 +640 360 +415 640 +640 480 +332 500 +640 427 +640 428 +640 444 +640 480 +428 640 +500 359 +640 427 +640 480 +640 480 +425 640 +375 500 +160 120 +500 481 +506 640 +640 427 +640 480 +640 448 +640 480 +612 612 +640 480 +640 427 +640 480 +640 428 +640 434 +640 480 +500 375 +640 480 +491 640 +640 425 +640 480 +640 474 +640 427 +640 283 +640 360 +640 427 +640 359 +640 360 +427 640 +640 480 +640 480 +480 640 +640 428 +640 426 +427 640 +640 427 +640 427 +640 463 +480 640 +640 433 +640 587 +640 425 +640 640 +640 427 +640 424 +640 427 +640 426 +640 480 +640 427 +500 339 +640 427 +640 427 +640 480 +480 640 +640 480 +640 480 +480 640 +640 480 +640 427 +640 426 +640 427 +640 427 +640 360 +640 480 +640 480 +480 640 +640 480 +375 500 +640 426 +640 439 +480 640 +500 375 +427 640 +640 427 +640 427 +512 640 +640 425 +640 494 +424 640 +480 640 +640 427 +640 480 +352 288 +640 360 +640 428 +427 640 +375 500 +640 427 +640 361 +297 500 +640 360 +480 640 +640 480 +612 612 +640 473 +640 519 +640 480 +640 425 +427 640 +640 480 +500 333 +480 640 +640 427 +640 484 +640 480 +640 483 +427 640 +427 640 +640 480 +640 480 +640 556 +500 331 +640 426 +480 640 +640 427 +480 640 +640 429 +500 375 +500 375 +640 425 +426 640 +640 480 +480 640 +484 640 +640 253 +640 431 +640 428 +640 427 +427 640 +398 640 +640 429 +640 360 +612 612 +480 640 +640 480 +640 640 +375 500 +640 472 +640 458 +640 640 +640 427 +640 428 +640 621 +500 334 +640 424 +640 480 +640 480 +640 426 +640 427 +427 640 +640 483 +640 428 +640 424 +516 640 +538 480 +427 640 +640 480 +640 480 +640 640 +406 640 +240 320 +500 375 +640 360 +612 612 +476 640 +640 427 +640 530 +640 426 +500 375 +640 396 +640 480 +480 640 +640 494 +640 508 +640 480 +640 640 +640 426 +432 640 +443 640 +640 427 +640 432 +640 480 +640 427 +427 640 +500 375 +612 612 +640 426 +640 480 +640 361 +331 500 +640 425 +640 480 +640 427 +480 640 +640 480 +640 427 +640 425 +640 428 +640 360 +500 374 +480 640 +427 640 +426 640 +640 427 +640 427 +640 463 +500 333 +640 426 +500 337 +373 640 +640 491 +427 640 +612 612 +640 423 +640 480 +640 480 +640 573 +640 464 +640 427 +640 480 +640 480 +350 375 +640 623 +612 612 +640 480 +640 479 +640 360 +315 315 +640 481 +640 427 +640 480 +480 640 +640 426 +640 425 +640 428 +640 427 +640 480 +640 478 +640 427 +375 500 +640 398 +640 427 +640 426 +427 640 +640 425 +640 362 +640 480 +500 375 +396 500 +500 375 +640 425 +376 500 +640 480 +426 640 +500 333 +383 640 +640 425 +640 425 +426 640 +640 480 +640 360 +640 489 +640 480 +612 612 +480 640 +640 479 +500 334 +640 480 +332 500 +332 500 +480 640 +375 500 +640 480 +640 480 +640 428 +500 166 +448 500 +640 480 +640 382 +640 360 +640 480 +452 640 +480 640 +640 480 +640 427 +640 427 +640 404 +640 480 +480 640 +640 480 +488 640 +640 480 +640 426 +640 427 +640 480 +434 640 +500 333 +480 640 +500 375 +640 480 +640 480 +640 426 +640 425 +334 500 +640 429 +640 361 +640 427 +320 640 +640 480 +480 640 +640 512 +640 472 +500 375 +640 480 +640 640 +640 425 +640 640 +427 640 +640 560 +494 640 +480 640 +640 427 +500 375 +427 640 +513 640 +640 427 +300 400 +427 640 +453 640 +428 640 +335 500 +640 480 +640 426 +640 480 +480 640 +478 640 +612 612 +640 480 +640 480 +640 481 +640 480 +640 427 +375 500 +640 631 +640 405 +480 640 +500 375 +640 480 +427 640 +640 480 +500 333 +640 425 +480 640 +640 427 +570 570 +640 480 +640 480 +640 480 +640 427 +612 612 +640 402 +398 600 +640 427 +448 312 +640 427 +640 427 +640 427 +640 427 +640 478 +640 481 +640 538 +500 333 +509 640 +640 480 +640 480 +640 640 +480 640 +640 427 +640 480 +640 480 +640 427 +375 500 +640 480 +640 425 +612 612 +636 640 +480 640 +640 427 +428 640 +428 640 +640 480 +640 426 +640 480 +640 480 +426 640 +492 500 +640 498 +640 480 +640 425 +640 425 +640 425 +640 427 +640 432 +500 333 +353 640 +500 375 +500 375 +480 640 +640 360 +438 640 +640 480 +640 426 +576 576 +638 640 +640 466 +361 500 +640 427 +640 456 +640 390 +640 585 +375 500 +640 480 +640 480 +640 401 +640 480 +500 401 +640 480 +640 480 +424 640 +640 480 +480 640 +640 414 +483 640 +480 640 +500 333 +640 480 +640 393 +427 640 +480 640 +640 414 +480 640 +500 332 +640 640 +640 395 +640 222 +640 427 +640 427 +427 640 +640 480 +640 427 +640 480 +640 429 +500 375 +500 333 +480 640 +500 470 +640 363 +335 500 +340 455 +639 640 +640 480 +458 640 +316 500 +640 480 +500 375 +640 480 +640 512 +640 480 +640 480 +480 640 +427 640 +389 500 +640 480 +375 500 +480 640 +640 480 +640 426 +640 359 +639 640 +640 480 +500 375 +612 612 +375 500 +640 480 +640 378 +640 428 +640 480 +640 478 +640 461 +480 640 +424 640 +640 480 +640 480 +500 333 +640 320 +612 612 +500 333 +640 480 +420 640 +500 375 +640 480 +640 480 +640 480 +640 425 +640 428 +640 427 +640 451 +640 424 +640 516 +640 500 +640 480 +620 413 +640 426 +640 480 +480 640 +333 500 +498 640 +500 334 +640 480 +640 480 +640 480 +640 480 +500 359 +480 640 +640 427 +425 640 +640 483 +640 428 +640 480 +480 640 +640 427 +640 426 +640 425 +640 427 +640 480 +640 427 +640 450 +640 480 +473 640 +640 400 +640 485 +480 640 +640 427 +640 426 +640 402 +640 480 +482 640 +480 640 +480 640 +427 640 +500 375 +480 640 +640 426 +640 640 +608 379 +640 480 +640 427 +640 480 +640 480 +640 480 +640 480 +640 480 +500 374 +427 640 +640 425 +640 427 +640 427 +500 333 +500 302 +427 640 +480 640 +640 458 +640 480 +480 640 +480 640 +427 640 +640 480 +640 480 +640 421 +640 427 +640 480 +640 480 +640 427 +427 640 +640 480 +427 640 +640 480 +332 500 +640 425 +640 428 +640 427 +640 448 +640 427 +427 640 +640 428 +640 480 +640 510 +640 426 +500 375 +640 502 +427 640 +640 439 +427 640 +640 480 +480 640 +640 427 +480 640 +640 480 +640 513 +640 426 +640 427 +640 425 +640 426 +640 427 +480 640 +640 425 +640 427 +640 486 +424 640 +640 480 +500 380 +640 427 +427 640 +640 171 +428 640 +374 500 +640 427 +426 640 +500 375 +640 427 +640 480 +640 427 +500 375 +640 640 +500 469 +640 480 +480 640 +480 640 +640 383 +640 480 +604 640 +640 477 +640 480 +640 480 +640 480 +500 364 +430 640 +640 424 +640 480 +640 426 +640 428 +640 425 +612 612 +640 480 +640 426 +588 640 +640 426 +500 375 +640 480 +640 427 +640 427 +640 480 +427 640 +200 150 +640 480 +640 429 +640 429 +471 500 +426 640 +350 467 +640 425 +428 640 +428 640 +500 375 +426 640 +640 480 +480 640 +640 426 +428 640 +640 429 +640 480 +500 375 +640 424 +640 457 +427 640 +480 640 +640 424 +612 612 +427 640 +640 480 +640 480 +640 424 +640 480 +360 640 +427 640 +480 640 +640 640 +640 427 +640 480 +640 427 +640 424 +640 479 +640 470 +640 390 +427 640 +610 407 +426 640 +640 359 +375 500 +640 426 +640 478 +638 640 +640 427 +640 480 +640 429 +640 339 +640 415 +640 480 +640 478 +480 640 +453 640 +429 640 +427 640 +640 427 +640 528 +640 498 +640 480 +640 360 +640 480 +480 640 +640 480 +640 474 +640 480 +640 427 +640 479 +640 480 +500 375 +640 480 +640 480 +640 426 +640 480 +480 640 +500 375 +640 406 +640 480 +640 428 +640 640 +640 480 +480 640 +640 480 +631 600 +640 480 +425 640 +426 640 +427 640 +640 480 +640 480 +480 640 +640 480 +640 427 +640 457 +500 333 +640 427 +640 480 +640 480 +640 416 +640 427 +426 640 +640 427 +640 409 +469 500 +480 640 +640 427 +640 427 +640 428 +640 480 +640 427 +500 375 +500 375 +640 480 +640 575 +640 512 +640 480 +428 640 +640 480 +640 480 +427 640 +640 426 +427 640 +640 480 +640 403 +640 480 +640 458 +500 333 +500 356 +640 302 +375 500 +640 242 +640 480 +640 426 +640 427 +640 415 +640 513 +640 427 +500 402 +640 480 +427 640 +640 424 +480 640 +375 500 +640 427 +500 281 +640 445 +640 425 +357 520 +160 120 +640 480 +640 504 +466 640 +640 428 +640 480 +622 622 +640 427 +640 480 +640 426 +640 480 +640 451 +640 480 +612 612 +640 480 +640 427 +640 427 +501 359 +612 612 +640 437 +640 480 +640 426 +640 425 +640 427 +640 480 +334 500 +500 335 +640 425 +640 480 +500 333 +640 428 +640 427 +640 480 +640 444 +480 640 +640 426 +640 480 +640 425 +512 384 +640 640 +526 640 +640 427 +640 438 +424 640 +640 424 +383 640 +640 331 +640 480 +640 428 +640 462 +640 476 +427 640 +640 480 +640 360 +500 349 +640 480 +640 480 +640 427 +172 227 +640 427 +500 500 +640 426 +640 480 +640 478 +640 485 +445 640 +483 640 +375 500 +640 480 +640 427 +640 480 +640 349 +640 480 +640 426 +500 334 +612 612 +640 427 +427 640 +640 480 +640 427 +480 640 +500 334 +480 640 +427 640 +640 361 +640 480 +640 426 +427 640 +640 480 +640 427 +640 426 +640 360 +640 480 +640 480 +379 640 +640 481 +640 427 +640 480 +640 480 +640 334 +640 416 +640 640 +640 640 +480 640 +427 640 +640 427 +640 427 +426 640 +640 359 +640 426 +640 427 +640 376 +500 332 +640 427 +640 424 +640 427 +640 480 +640 427 +640 480 +480 640 +500 375 +425 640 +480 640 +427 640 +640 441 +640 427 +640 427 +640 331 +640 411 +640 427 +500 375 +640 480 +640 426 +640 639 +640 480 +640 427 +640 461 +480 640 +640 480 +640 480 +454 640 +427 640 +640 427 +640 413 +480 640 +612 612 +500 375 +640 480 +640 337 +640 480 +640 480 +480 640 +640 544 +640 425 +426 640 +480 640 +640 415 +235 314 +640 481 +640 408 +426 640 +640 424 +640 427 +500 493 +640 427 +640 383 +500 346 +640 370 +640 480 +500 331 +640 359 +640 480 +502 640 +480 640 +640 336 +640 480 +640 480 +478 640 +480 640 +640 480 +640 383 +640 480 +640 480 +425 640 +480 640 +640 427 +640 426 +640 480 +640 480 +640 426 +612 612 +640 426 +640 426 +333 500 +640 427 +500 375 +640 494 +640 426 +333 500 +640 443 +640 483 +426 640 +640 480 +640 480 +640 480 +640 480 +640 427 +640 325 +500 375 +640 427 +500 375 +500 375 +640 428 +640 396 +640 460 +500 335 +640 480 +640 482 +640 480 +426 640 +640 416 +640 480 +640 480 +500 375 +480 640 +426 640 +640 480 +640 512 +478 640 +640 428 +480 640 +640 480 +480 640 +640 361 +480 640 +640 360 +457 640 +640 429 +640 480 +480 640 +614 640 +640 447 +640 480 +480 640 +480 640 +640 429 +640 480 +640 480 +376 500 +189 500 +500 333 +640 425 +426 640 +640 407 +640 426 +640 427 +426 640 +640 427 +500 331 +640 426 +428 640 +500 332 +640 480 +640 425 +640 425 +640 480 +427 640 +640 425 +640 512 +640 628 +500 332 +640 427 +640 480 +536 640 +640 427 +640 427 +640 426 +640 640 +640 360 +612 612 +640 480 +640 640 +640 426 +640 427 +480 640 +640 426 +640 427 +640 480 +640 438 +640 590 +640 480 +640 480 +331 500 +640 427 +640 640 +640 427 +500 375 +500 375 +640 480 +480 640 +640 480 +550 640 +500 500 +640 480 +640 427 +359 640 +640 480 +375 500 +640 427 +500 336 +640 512 +640 418 +640 427 +500 281 +640 360 +375 500 +640 428 +427 640 +419 640 +640 360 +640 480 +640 427 +640 426 +640 426 +640 480 +640 640 +640 426 +640 480 +640 480 +640 480 +640 530 +480 640 +367 640 +640 480 +640 236 +500 375 +480 640 +640 427 +640 427 +640 414 +640 289 +500 376 +640 480 +640 480 +640 428 +640 427 +640 480 +640 428 +500 334 +640 360 +427 640 +640 480 +500 333 +640 480 +375 500 +375 500 +640 480 +640 360 +500 375 +640 386 +640 480 +640 480 +640 480 +640 512 +640 480 +426 640 +600 453 +640 427 +640 480 +640 480 +500 375 +478 640 +640 480 +640 480 +612 612 +500 500 +640 429 +500 482 +640 480 +480 640 +500 333 +335 500 +640 356 +640 480 +640 508 +640 360 +640 427 +640 427 +512 640 +640 427 +480 640 +429 640 +427 640 +640 427 +425 640 +640 480 +640 426 +640 640 +478 640 +640 428 +428 640 +640 480 +640 427 +640 480 +612 612 +640 480 +640 480 +500 375 +427 640 +480 640 +427 640 +640 424 +500 283 +640 433 +640 329 +640 288 +612 612 +640 489 +640 427 +425 640 +640 278 +500 377 +480 640 +640 480 +640 578 +640 479 +640 425 +640 626 +640 455 +640 427 +640 448 +640 443 +640 640 +621 640 +480 640 +640 428 +375 500 +482 640 +427 640 +480 640 +500 375 +612 612 +640 427 +480 640 +640 427 +480 640 +640 427 +640 480 +640 501 +473 640 +375 500 +480 640 +480 640 +640 427 +428 640 +640 480 +500 309 +640 424 +640 426 +640 425 +480 640 +640 446 +480 640 +640 427 +640 480 +640 480 +427 640 +480 640 +445 500 +640 480 +640 329 +375 500 +640 480 +500 333 +640 427 +500 375 +640 480 +640 480 +427 640 +400 500 +640 480 +640 480 +427 640 +612 612 +640 480 +427 640 +640 480 +400 300 +640 480 +640 480 +640 426 +426 640 +640 496 +500 333 +640 428 +640 426 +383 640 +500 478 +640 480 +640 480 +586 640 +480 640 +640 427 +480 640 +427 640 +640 360 +375 500 +640 480 +640 426 +640 480 +320 240 +640 427 +640 428 +640 427 +640 510 +333 500 +612 612 +640 359 +640 424 +427 640 +640 427 +500 375 +427 640 +640 480 +640 480 +340 500 +640 413 +640 425 +500 375 +478 640 +640 443 +640 480 +500 188 +640 427 +640 361 +640 419 +640 427 +427 640 +640 480 +500 375 +480 640 +640 480 +427 640 +640 478 +640 480 +612 612 +500 375 +640 427 +640 426 +640 427 +513 640 +291 449 +640 480 +640 480 +640 527 +640 426 +640 426 +500 333 +427 640 +640 427 +640 640 +640 480 +640 640 +640 427 +640 400 +427 640 +640 428 +640 480 +480 640 +640 427 +640 426 +640 418 +640 480 +361 640 +640 427 +640 429 +640 424 +480 640 +640 426 +480 640 +630 450 +640 569 +640 480 +427 640 +640 427 +480 640 +612 612 +640 425 +640 426 +500 375 +500 333 +359 640 +444 640 +500 375 +640 480 +640 512 +640 480 +640 382 +332 500 +640 429 +640 480 +640 480 +640 480 +640 480 +640 480 +375 500 +640 586 +640 427 +332 500 +358 500 +500 374 +640 411 +375 500 +640 428 +640 427 +640 427 +480 640 +640 480 +427 640 +427 640 +500 333 +640 480 +640 426 +360 640 +640 427 +640 296 +480 640 +640 450 +425 640 +333 500 +427 640 +427 640 +640 426 +640 428 +480 640 +546 366 +480 640 +640 428 +640 425 +640 480 +640 401 +480 382 +640 480 +640 480 +500 375 +640 480 +612 612 +640 427 +500 500 +640 426 +480 640 +480 640 +640 488 +480 640 +640 389 +612 612 +640 427 +640 425 +375 500 +427 640 +640 430 +640 480 +334 500 +640 480 +640 479 +640 427 +640 427 +640 480 +640 480 +640 412 +640 418 +427 640 +640 478 +640 425 +640 324 +500 335 +640 480 +640 428 +640 480 +500 333 +480 640 +640 453 +640 364 +426 640 +640 480 +640 427 +640 480 +429 640 +500 334 +640 480 +640 466 +480 640 +480 640 +383 640 +640 425 +640 480 +640 429 +612 612 +640 454 +640 487 +480 640 +640 427 +640 480 +375 500 +478 640 +480 640 +640 480 +640 480 +640 480 +640 480 +480 640 +640 471 +454 640 +640 427 +640 427 +640 640 +640 524 +640 480 +640 480 +640 480 +640 513 +640 427 +640 417 +284 640 +500 375 +640 383 +640 427 +640 480 +640 480 +612 612 +640 427 +478 640 +640 480 +640 633 +640 469 +640 480 +640 427 +640 426 +640 480 +426 640 +640 480 +375 500 +640 288 +640 458 +640 508 +480 640 +640 428 +427 640 +640 480 +640 480 +640 480 +480 640 +640 480 +424 640 +640 428 +640 426 +640 360 +640 426 +500 375 +384 640 +640 427 +480 640 +640 478 +640 427 +500 353 +500 334 +640 480 +640 480 +508 640 +427 640 +640 427 +500 333 +640 480 +586 640 +640 481 +500 375 +640 451 +640 480 +640 640 +640 509 +425 640 +640 211 +640 480 +640 480 +375 500 +500 333 +640 476 +640 405 +500 375 +640 480 +600 450 +640 426 +640 424 +500 333 +640 480 +640 640 +640 480 +640 483 +640 427 +640 480 +640 238 +640 360 +640 425 +500 330 +640 480 +640 400 +454 500 +640 480 +480 640 +640 539 +640 457 +441 600 +500 333 +500 375 +640 458 +640 480 +640 426 +640 498 +640 480 +612 612 +508 640 +640 428 +480 640 +480 640 +640 433 +426 640 +640 425 +640 459 +438 640 +640 427 +480 640 +640 426 +640 425 +640 426 +613 640 +640 480 +640 427 +640 426 +640 427 +640 427 +640 425 +640 427 +500 375 +480 640 +470 352 +640 480 +480 640 +480 640 +640 480 +640 428 +640 480 +640 425 +640 478 +480 640 +640 391 +640 426 +640 426 +618 640 +640 427 +640 512 +640 427 +480 640 +640 480 +427 640 +640 480 +640 480 +640 427 +640 470 +500 382 +640 424 +456 640 +640 480 +640 480 +640 427 +640 426 +480 640 +640 427 +640 480 +500 375 +640 480 +640 427 +640 427 +640 480 +426 640 +640 480 +384 640 +612 612 +640 340 +424 640 +500 430 +640 286 +480 640 +427 640 +500 334 +640 480 +480 640 +640 494 +640 480 +640 480 +640 424 +375 500 +370 500 +640 480 +640 427 +462 640 +484 640 +640 427 +640 480 +424 640 +640 480 +550 413 +480 640 +480 640 +640 499 +424 640 +640 400 +640 449 +640 640 +375 500 +640 427 +640 427 +640 427 +640 443 +500 375 +640 426 +640 427 +640 446 +483 640 +448 640 +640 529 +500 333 +612 612 +640 427 +640 426 +640 429 +500 332 +640 515 +480 640 +640 427 +640 418 +640 423 +640 480 +640 427 +640 428 +640 427 +640 428 +640 401 +640 427 +480 640 +480 640 +640 482 +480 640 +640 480 +640 427 +427 640 +640 550 +640 427 +426 640 +640 425 +640 426 +640 480 +640 253 +640 426 +640 427 +480 640 +445 640 +640 404 +640 491 +480 640 +640 424 +640 425 +640 437 +426 640 +612 612 +494 640 +500 375 +640 425 +640 480 +426 640 +612 612 +640 480 +640 480 +640 453 +546 366 +640 426 +640 480 +640 427 +640 359 +640 480 +640 480 +640 427 +500 500 +640 426 +640 624 +500 375 +428 640 +640 427 +640 418 +640 540 +640 480 +500 333 +640 480 +640 427 +500 334 +640 426 +640 480 +500 332 +640 426 +640 426 +640 432 +640 411 +640 480 +640 459 +640 521 +640 427 +640 427 +427 640 +353 640 +500 333 +640 427 +612 612 +640 505 +640 480 +640 549 +478 640 +640 480 +640 427 +640 427 +640 480 +640 428 +640 427 +479 640 +640 427 +640 427 +300 255 +500 375 +640 427 +367 500 +640 430 +393 640 +640 480 +640 458 +640 480 +640 363 +640 423 +640 428 +640 288 +640 427 +399 500 +640 479 +640 543 +612 612 +512 640 +640 429 +480 640 +360 239 +640 428 +500 375 +500 375 +640 425 +513 640 +640 409 +640 480 +480 640 +640 104 +640 428 +640 427 +427 640 +640 466 +640 427 +640 430 +640 480 +640 426 +640 427 +640 427 +426 640 +640 427 +640 480 +640 480 +500 375 +640 480 +455 640 +640 480 +640 480 +640 427 +640 480 +500 333 +500 375 +612 612 +640 480 +333 500 +500 333 +500 375 +640 427 +428 640 +640 376 +640 480 +640 480 +640 480 +500 377 +640 506 +479 640 +500 333 +600 296 +500 375 +640 428 +576 640 +640 480 +640 425 +640 425 +480 640 +425 640 +640 480 +500 375 +640 360 +500 375 +640 583 +500 375 +500 375 +480 640 +480 640 +480 640 +640 480 +640 428 +640 480 +640 403 +640 480 +640 480 +640 451 +640 480 +640 480 +640 429 +640 451 +640 480 +640 427 +500 375 +427 640 +640 425 +500 333 +640 480 +427 640 +640 427 +640 425 +640 480 +640 456 +408 391 +640 480 +477 640 +640 427 +512 640 +480 640 +640 429 +640 425 +640 480 +640 480 +640 407 +640 545 +640 480 +640 480 +640 480 +500 375 +333 500 +640 428 +500 333 +640 378 +427 640 +640 428 +375 500 +640 486 +640 640 +640 480 +640 424 +480 640 +640 427 +426 640 +640 480 +640 362 +426 640 +640 426 +640 480 +612 612 +640 426 +640 480 +640 426 +640 480 +425 640 +640 426 +421 640 +427 640 +480 640 +640 480 +427 640 +334 500 +480 640 +640 427 +640 429 +500 333 +640 480 +500 334 +326 500 +640 480 +640 480 +478 640 +480 640 +500 375 +640 512 +640 423 +640 427 +640 640 +640 480 +640 425 +640 480 +640 480 +640 480 +640 427 +640 252 +640 427 +640 480 +428 640 +500 374 +640 480 +500 375 +375 500 +640 480 +500 375 +640 360 +640 426 +640 640 +480 640 +427 640 +480 640 +640 479 +640 431 +640 373 +428 640 +640 433 +640 480 +640 480 +640 480 +640 427 +640 480 +484 640 +640 429 +480 640 +375 500 +427 640 +640 480 +640 480 +500 375 +288 352 +371 640 +640 480 +425 640 +640 625 +640 359 +640 478 +640 480 +640 480 +640 480 +640 405 +640 427 +640 478 +640 480 +640 480 +640 480 +500 331 +640 425 +640 479 +640 427 +427 640 +640 427 +640 480 +640 564 +500 375 +640 480 +480 384 +576 413 +427 640 +640 428 +612 612 +425 640 +500 333 +640 426 +427 640 +640 480 +640 480 +480 640 +640 426 +500 407 +640 394 +600 450 +500 375 +500 375 +500 332 +469 640 +500 375 +640 427 +640 427 +640 427 +640 480 +640 425 +640 603 +640 480 +640 463 +612 612 +640 427 +426 640 +427 640 +640 480 +640 426 +640 480 +640 480 +640 480 +640 427 +640 427 +600 450 +640 480 +640 425 +500 375 +640 318 +436 640 +640 640 +640 427 +480 640 +640 461 +427 640 +427 640 +375 500 +426 640 +640 480 +640 480 +480 640 +480 640 +640 480 +308 462 +480 640 +640 427 +640 480 +640 427 +640 404 +360 500 +640 427 +640 426 +640 490 +480 640 +400 300 +640 444 +578 640 +640 435 +640 640 +427 640 +356 500 +640 426 +640 431 +500 375 +640 480 +640 480 +640 480 +640 506 +375 500 +640 480 +416 640 +461 640 +640 426 +640 476 +480 640 +640 425 +640 427 +500 375 +640 427 +640 427 +640 429 +640 425 +640 480 +640 480 +640 502 +640 427 +480 640 +640 480 +480 361 +640 480 +640 423 +640 560 +640 429 +500 146 +640 478 +365 640 +640 480 +427 640 +640 480 +640 482 +500 375 +640 480 +640 427 +427 640 +480 640 +640 404 +640 427 +500 375 +420 640 +325 500 +640 428 +640 263 +360 270 +640 427 +428 640 +640 427 +640 480 +426 640 +640 469 +640 428 +640 640 +500 375 +640 425 +427 640 +640 386 +640 445 +640 480 +640 480 +479 500 +640 480 +640 427 +640 640 +640 480 +640 478 +640 424 +480 640 +346 500 +500 280 +640 426 +480 640 +640 480 +640 427 +640 480 +640 480 +500 377 +399 640 +500 375 +640 480 +640 429 +478 640 +500 375 +480 640 +640 484 +480 640 +640 480 +640 400 +640 516 +612 612 +640 485 +426 640 +480 640 +640 416 +410 640 +640 428 +598 393 +640 407 +425 640 +640 428 +439 640 +640 411 +640 368 +640 429 +427 640 +640 433 +640 480 +500 375 +500 474 +640 426 +640 426 +640 424 +640 601 +640 427 +640 320 +640 426 +640 427 +500 333 +640 426 +640 350 +640 480 +640 428 +640 427 +640 480 +640 483 +375 500 +426 640 +640 480 +640 480 +640 398 +640 427 +640 481 +640 480 +480 640 +640 494 +640 371 +640 481 +640 480 +640 480 +640 326 +640 427 +324 182 +595 608 +640 427 +640 480 +500 334 +640 512 +480 640 +640 480 +612 612 +640 426 +640 428 +612 612 +640 480 +500 375 +500 443 +640 388 +640 480 +640 427 +640 480 +640 496 +640 457 +480 566 +480 640 +640 442 +480 640 +640 463 +640 426 +640 391 +486 640 +427 640 +640 427 +640 409 +640 427 +640 426 +640 480 +500 327 +640 427 +640 427 +528 640 +640 480 +640 423 +640 427 +640 480 +640 480 +640 536 +640 427 +640 480 +640 427 +480 640 +640 425 +640 481 +640 480 +640 427 +640 640 +640 427 +640 426 +480 640 +640 480 +640 450 +500 375 +640 427 +640 480 +640 479 +431 640 +480 640 +640 480 +640 540 +427 640 +400 205 +640 480 +640 432 +640 480 +640 427 +640 409 +640 427 +427 640 +500 375 +640 424 +640 480 +500 375 +428 640 +640 480 +640 427 +640 383 +640 419 +640 480 +640 426 +500 375 +640 427 +640 426 +640 467 +640 361 +640 480 +480 640 +640 427 +640 480 +640 480 +480 640 +500 375 +500 500 +640 480 +640 400 +425 640 +640 427 +640 425 +640 360 +640 427 +640 490 +640 480 +432 640 +500 375 +640 479 +640 414 +424 640 +640 500 +612 612 +640 480 +640 623 +327 640 +375 500 +640 429 +640 426 +640 221 +480 640 +640 480 +640 428 +640 480 +500 281 +640 360 +640 426 +640 439 +640 427 +640 360 +480 640 +400 300 +640 596 +640 427 +640 428 +360 640 +640 457 +640 438 +500 427 +640 640 +500 375 +375 500 +640 426 +426 640 +640 480 +640 388 +640 426 +640 480 +640 480 +640 427 +640 428 +640 423 +640 436 +500 372 +640 480 +640 480 +640 366 +500 333 +640 480 +640 428 +500 484 +425 640 +640 480 +427 640 +500 332 +480 640 +640 427 +441 640 +523 640 +480 640 +500 381 +427 640 +640 405 +640 360 +500 375 +427 640 +640 427 +640 427 +408 500 +640 479 +333 500 +640 480 +640 427 +640 444 +640 480 +640 640 +640 425 +375 500 +500 375 +640 431 +640 427 +640 430 +426 640 +432 288 +640 359 +640 429 +480 640 +640 427 +512 640 +500 375 +427 640 +640 425 +612 612 +500 471 +612 612 +427 640 +480 640 +640 427 +640 480 +640 427 +640 480 +640 480 +640 480 +500 375 +640 282 +358 500 +375 500 +640 427 +640 427 +640 480 +640 480 +640 427 +427 640 +640 422 +640 428 +640 427 +500 375 +640 426 +640 400 +640 427 +433 640 +375 500 +375 500 +640 427 +640 480 +427 640 +519 640 +640 361 +640 480 +640 427 +426 640 +461 640 +640 480 +640 427 +640 425 +425 640 +500 375 +640 400 +640 480 +640 400 +640 480 +500 375 +640 479 +480 640 +640 480 +640 427 +640 414 +334 500 +640 480 +640 480 +640 427 +479 319 +640 480 +640 480 +427 640 +640 427 +640 639 +640 527 +459 640 +640 437 +640 394 +640 419 +640 427 +640 427 +640 427 +640 477 +640 427 +640 479 +500 333 +640 426 +640 333 +640 425 +500 400 +640 480 +640 480 +640 480 +640 424 +640 380 +640 465 +372 480 +640 427 +640 480 +480 640 +640 427 +640 480 +640 427 +640 360 +640 361 +640 479 +500 199 +426 640 +640 427 +640 426 +500 375 +640 480 +640 427 +500 347 +640 480 +640 480 +640 480 +480 360 +427 640 +480 640 +640 427 +640 427 +640 482 +640 480 +640 426 +480 640 +640 427 +640 480 +640 480 +612 612 +640 446 +640 425 +640 480 +640 480 +640 426 +426 640 +640 427 +640 427 +426 640 +640 427 +458 640 +640 480 +500 428 +640 384 +640 425 +500 375 +480 640 +600 450 +512 640 +640 427 +640 512 +365 640 +640 429 +640 557 +640 499 +500 375 +500 375 +640 451 +333 500 +640 480 +640 468 +427 640 +484 640 +640 480 +640 480 +640 408 +640 427 +640 424 +640 480 +500 339 +427 640 +640 480 +640 426 +640 480 +640 396 +640 480 +640 427 +640 427 +640 481 +427 640 +612 612 +640 480 +640 427 +640 480 +640 427 +640 425 +427 640 +612 612 +640 427 +500 375 +480 640 +640 428 +640 480 +640 480 +640 426 +480 640 +640 427 +500 375 +330 500 +640 480 +640 480 +612 612 +640 427 +640 425 +164 500 +480 640 +640 428 +500 375 +640 480 +640 480 +640 425 +640 480 +457 640 +640 631 +640 480 +640 462 +640 480 +640 480 +612 612 +459 640 +640 480 +640 480 +640 551 +640 480 +640 386 +640 618 +640 428 +640 480 +640 428 +540 540 +640 480 +640 493 +640 482 +640 360 +500 333 +500 500 +640 480 +478 640 +640 427 +640 541 +500 375 +640 480 +640 480 +640 427 +640 480 +640 480 +640 510 +416 500 +640 480 +640 640 +640 427 +478 640 +640 480 +640 480 +640 429 +640 480 +522 640 +640 477 +500 377 +375 500 +640 427 +640 433 +427 640 +640 303 +500 285 +480 640 +640 480 +640 480 +640 427 +180 500 +500 375 +640 480 +640 268 +480 640 +640 427 +640 426 +640 426 +640 480 +640 426 +480 640 +640 480 +640 480 +640 480 +480 640 +640 424 +478 640 +480 640 +640 428 +640 426 +640 425 +500 313 +640 398 +640 480 +480 640 +500 333 +640 457 +429 640 +640 427 +640 480 +426 640 +480 640 +640 480 +640 480 +640 424 +486 640 +640 428 +640 512 +640 427 +640 366 +427 640 +640 427 +640 444 +500 375 +421 640 +427 640 +640 426 +428 640 +480 640 +426 640 +500 375 +375 500 +640 480 +640 479 +640 425 +640 480 +375 500 +500 375 +640 480 +640 425 +640 428 +640 427 +494 640 +640 480 +640 480 +640 426 +640 451 +640 457 +426 640 +640 480 +612 612 +640 478 +640 480 +640 427 +286 640 +640 457 +640 432 +480 640 +500 333 +640 358 +640 428 +640 427 +640 427 +640 474 +640 426 +640 426 +480 640 +640 427 +640 432 +640 426 +480 640 +640 480 +640 426 +640 494 +480 640 +640 429 +640 427 +375 500 +640 419 +342 640 +640 421 +640 426 +612 612 +640 480 +375 500 +500 500 +640 360 +640 469 +640 480 +425 640 +640 427 +612 612 +640 392 +640 427 +640 480 +640 480 +640 428 +640 480 +640 426 +640 464 +640 427 +500 400 +640 369 +480 640 +640 427 +640 480 +640 480 +640 438 +640 428 +640 426 +600 600 +640 427 +640 512 +640 480 +333 500 +640 454 +640 480 +480 640 +640 423 +640 427 +640 431 +640 480 +500 375 +640 463 +640 426 +612 612 +640 360 +640 424 +640 480 +640 480 +640 426 +571 640 +377 640 +480 640 +640 480 +640 498 +480 640 +640 427 +640 426 +500 376 +640 478 +640 480 +500 375 +640 480 +640 426 +500 334 +480 640 +640 480 +640 480 +640 427 +640 425 +640 480 +480 640 +426 640 +640 563 +640 480 +480 640 +500 335 +640 480 +427 640 +480 640 +640 480 +427 640 +640 426 +640 426 +640 424 +480 640 +427 640 +500 333 +640 480 +500 375 +640 480 +640 480 +500 373 +640 417 +480 640 +640 453 +640 429 +640 360 +640 427 +640 427 +640 480 +480 640 +640 427 +640 480 +480 640 +640 404 +640 480 +640 427 +375 500 +640 427 +640 425 +640 426 +640 427 +640 329 +640 426 +333 500 +640 427 +640 426 +640 454 +640 480 +427 640 +640 374 +640 369 +640 427 +640 433 +640 427 +612 612 +640 480 +640 424 +640 480 +426 640 +640 480 +640 480 +640 434 +428 640 +480 640 +640 523 +500 400 +640 640 +640 427 +640 361 +640 432 +336 500 +500 375 +640 427 +640 480 +640 424 +640 425 +427 640 +640 480 +480 360 +482 640 +640 480 +480 640 +640 426 +640 427 +500 375 +640 480 +640 427 +612 612 +640 480 +640 425 +640 480 +363 500 +640 480 +640 480 +640 480 +640 480 +500 375 +640 490 +640 480 +640 426 +640 424 +640 427 +640 427 +640 480 +640 480 +375 500 +640 413 +640 462 +480 640 +427 640 +427 640 +572 640 +640 480 +640 289 +640 427 +640 427 +640 478 +427 640 +427 640 +640 427 +375 500 +375 500 +500 332 +640 402 +640 429 +500 337 +640 480 +640 480 +640 480 +640 480 +640 425 +640 480 +640 427 +640 457 +640 427 +500 400 +640 480 +640 480 +427 640 +640 581 +640 480 +640 480 +640 427 +640 427 +500 375 +640 480 +612 612 +640 428 +463 640 +640 436 +640 480 +500 375 +500 375 +512 640 +640 462 +640 636 +640 480 +640 474 +480 640 +640 428 +640 480 +480 640 +333 500 +640 512 +612 612 +500 333 +640 427 +640 494 +640 426 +640 427 +640 480 +640 429 +640 480 +500 334 +500 488 +378 500 +430 628 +640 429 +640 639 +640 455 +640 480 +640 427 +480 640 +640 426 +640 480 +567 378 +612 612 +640 480 +427 640 +640 427 +640 427 +640 480 +640 427 +640 480 +367 500 +640 480 +612 612 +360 240 +500 375 +589 640 +640 480 +640 425 +640 427 +425 640 +640 360 +640 427 +640 491 +640 424 +640 480 +427 640 +640 480 +640 480 +640 480 +333 500 +640 480 +426 640 +480 640 +640 427 +640 409 +640 369 +640 471 +500 407 +425 640 +375 500 +338 450 +640 429 +640 423 +640 480 +640 480 +640 480 +200 150 +640 428 +427 640 +640 480 +500 377 +640 480 +640 433 +640 478 +640 426 +640 238 +478 640 +640 480 +640 480 +640 427 +640 421 +640 480 +640 427 +640 379 +640 427 +640 426 +640 480 +500 375 +428 640 +640 480 +640 427 +640 384 +480 640 +537 640 +612 612 +427 640 +640 437 +640 480 +640 480 +480 640 +640 427 +500 379 +640 480 +640 426 +640 478 +640 427 +640 480 +435 640 +428 640 +375 500 +640 427 +500 375 +457 640 +640 427 +640 426 +640 480 +640 428 +640 426 +480 640 +640 427 +640 427 +640 480 +640 427 +640 480 +640 640 +640 480 +640 480 +427 640 +640 480 +640 427 +640 480 +640 480 +640 429 +500 375 +640 480 +436 640 +640 401 +640 306 +640 480 +640 426 +640 461 +640 429 +640 480 +500 375 +427 640 +640 384 +640 480 +500 375 +640 425 +640 427 +640 640 +640 480 +640 640 +480 640 +640 640 +480 640 +640 443 +516 640 +640 426 +480 640 +427 640 +640 480 +640 298 +425 640 +640 480 +640 480 +424 640 +640 480 +640 427 +480 640 +640 569 +375 500 +344 640 +383 640 +640 415 +640 480 +640 480 +640 480 +500 333 +640 426 +426 640 +480 640 +375 500 +640 480 +640 256 +640 427 +640 480 +500 375 +640 480 +640 480 +640 427 +640 480 +640 427 +500 375 +640 361 +640 360 +480 640 +640 424 +500 375 +640 480 +640 480 +640 424 +640 427 +640 483 +640 510 +640 480 +640 410 +640 427 +480 640 +640 350 +427 640 +640 427 +640 360 +640 480 +640 484 +640 480 +640 427 +333 500 +640 427 +640 508 +640 428 +640 480 +426 640 +640 427 +640 640 +640 480 +640 480 +640 480 +640 478 +426 640 +640 428 +640 427 +640 480 +640 640 +640 428 +463 640 +640 425 +640 480 +640 272 +640 429 +640 425 +427 640 +640 481 +640 480 +640 427 +612 612 +640 427 +448 640 +640 427 +631 640 +640 480 +640 427 +640 405 +640 524 +500 334 +640 425 +640 445 +640 427 +479 640 +480 640 +498 640 +640 514 +640 478 +640 480 +640 480 +640 480 +640 640 +640 428 +640 480 +640 480 +640 444 +640 428 +640 424 +640 428 +640 427 +640 426 +640 435 +640 426 +640 488 +480 640 +427 640 +640 458 +640 427 +490 500 +640 480 +360 640 +500 375 +512 640 +640 480 +333 500 +640 427 +640 427 +640 480 +500 335 +640 424 +640 427 +640 427 +478 640 +500 375 +640 425 +640 425 +640 459 +640 428 +640 480 +500 325 +612 612 +640 480 +375 500 +640 480 +640 480 +640 427 +640 480 +334 500 +640 480 +640 426 +628 640 +640 640 +480 640 +427 640 +640 431 +640 433 +640 480 +505 640 +480 640 +500 375 +500 333 +640 480 +640 480 +640 480 +500 412 +640 418 +640 427 +500 349 +640 427 +375 500 +640 480 +640 480 +427 640 +640 348 +359 640 +640 427 +640 429 +500 400 +500 333 +427 640 +500 281 +612 612 +612 612 +640 480 +500 333 +427 640 +640 425 +427 640 +500 374 +425 640 +640 459 +640 424 +640 424 +640 439 +500 325 +427 640 +588 640 +428 640 +500 279 +640 480 +426 640 +500 375 +640 429 +480 360 +500 333 +612 612 +640 350 +333 500 +612 612 +640 478 +640 512 +499 640 +612 612 +640 480 +612 612 +480 640 +640 480 +640 426 +640 480 +640 426 +490 640 +480 640 +426 640 +640 426 +640 427 +500 344 +376 500 +640 436 +640 480 +640 480 +427 640 +640 640 +612 612 +640 479 +640 361 +480 640 +640 478 +361 500 +640 607 +640 480 +640 427 +640 480 +500 468 +640 480 +480 640 +640 478 +640 427 +612 612 +640 480 +640 479 +640 480 +640 458 +640 425 +427 640 +640 479 +612 612 +640 427 +500 375 +640 480 +640 426 +640 480 +500 333 +640 480 +640 360 +640 640 +480 640 +427 640 +480 640 +640 425 +640 359 +640 480 +640 426 +425 640 +480 640 +640 427 +500 375 +640 480 +500 375 +338 500 +640 449 +640 427 +500 375 +427 640 +640 427 +640 480 +426 640 +640 419 +640 640 +640 428 +640 480 +640 424 +640 480 +612 612 +512 640 +640 480 +500 334 +375 500 +640 392 +640 434 +480 640 +640 426 +640 441 +640 427 +640 426 +640 509 +640 320 +640 427 +332 500 +612 612 +612 612 +640 427 +640 465 +376 500 +640 427 +480 640 +640 505 +640 427 +331 500 +426 640 +640 593 +640 426 +576 640 +640 480 +640 401 +640 428 +640 480 +500 327 +480 640 +612 612 +480 640 +640 461 +425 640 +480 640 +640 452 +480 640 +640 427 +640 480 +640 426 +375 500 +375 500 +640 427 +500 330 +640 480 +640 480 +640 480 +640 425 +375 500 +640 480 +500 333 +640 359 +640 427 +480 640 +500 390 +640 479 +500 376 +628 640 +426 640 +640 480 +640 480 +640 453 +640 480 +500 317 +640 480 +500 282 +640 426 +640 516 +640 425 +640 426 +640 461 +640 480 +640 424 +640 480 +640 427 +640 480 +480 640 +640 480 +640 434 +640 427 +640 427 +640 494 +500 281 +480 640 +640 399 +640 480 +400 640 +640 427 +426 640 +612 612 +640 480 +640 480 +640 427 +640 446 +480 640 +640 427 +640 640 +210 139 +612 612 +640 427 +640 425 +640 427 +640 480 +500 333 +640 480 +640 426 +426 640 +500 333 +480 640 +640 480 +640 425 +640 426 +640 480 +640 480 +640 424 +640 360 +640 478 +640 480 +640 426 +640 480 +640 426 +426 640 +640 480 +427 640 +480 640 +612 612 +640 512 +500 375 +640 480 +640 426 +640 480 +427 640 +427 640 +422 562 +500 334 +640 413 +525 640 +640 480 +640 427 +640 480 +640 480 +640 480 +375 500 +640 427 +640 480 +640 480 +640 640 +640 364 +640 426 +473 640 +480 640 +640 480 +480 640 +640 425 +640 480 +640 428 +640 480 +375 500 +640 427 +640 427 +640 527 +640 480 +314 470 +500 399 +640 496 +480 640 +480 640 +500 500 +640 480 +426 640 +640 427 +480 640 +640 480 +640 426 +640 425 +284 423 +640 640 +640 427 +640 414 +480 640 +612 612 +640 468 +333 500 +500 392 +640 480 +480 640 +640 480 +640 480 +640 480 +640 463 +640 413 +427 640 +640 427 +640 480 +640 640 +480 640 +500 333 +640 428 +640 480 +640 480 +640 480 +640 480 +640 431 +500 302 +640 428 +480 640 +500 332 +640 494 +500 333 +480 640 +640 426 +427 640 +640 463 +640 425 +500 392 +640 480 +500 332 +640 480 +640 426 +375 500 +640 480 +640 480 +640 480 +427 640 +640 480 +500 375 +500 375 +500 379 +640 576 +640 370 +640 481 +640 408 +640 458 +629 640 +640 480 +500 375 +640 434 +425 640 +429 640 +480 640 +640 427 +640 512 +640 480 +640 480 +640 428 +500 265 +375 500 +427 640 +640 481 +500 500 +500 334 +640 480 +640 577 +424 640 +640 427 +500 332 +640 427 +639 640 +428 640 +505 640 +569 640 +640 426 +640 427 +480 640 +500 375 +640 426 +640 485 +480 640 +500 400 +640 480 +640 480 +640 427 +640 426 +471 640 +427 640 +640 530 +333 500 +640 426 +500 351 +640 425 +640 427 +500 375 +640 427 +640 427 +427 640 +640 426 +640 426 +426 640 +640 480 +465 640 +333 500 +640 480 +640 480 +500 375 +640 480 +394 640 +640 427 +640 360 +480 640 +500 333 +640 640 +640 427 +626 640 +640 425 +640 480 +640 480 +640 385 +427 640 +640 426 +640 516 +640 480 +640 443 +640 427 +640 480 +640 425 +640 428 +640 480 +484 640 +375 500 +427 640 +640 427 +640 400 +574 640 +640 478 +487 200 +640 426 +640 512 +640 480 +640 299 +640 389 +640 320 +640 427 +480 640 +640 426 +612 612 +480 640 +640 400 +640 412 +425 640 +640 424 +640 476 +640 480 +478 640 +640 478 +640 425 +640 426 +612 612 +640 424 +640 480 +640 411 +640 512 +426 640 +640 480 +640 427 +640 428 +500 377 +427 640 +640 480 +640 449 +612 612 +640 514 +640 539 +500 281 +640 427 +640 480 +640 425 +640 480 +640 480 +640 480 +640 480 +500 375 +640 426 +640 480 +640 426 +640 480 +500 333 +640 400 +640 433 +640 480 +640 478 +640 425 +640 429 +640 480 +640 329 +640 480 +640 428 +640 427 +640 427 +500 375 +480 640 +640 480 +640 640 +480 640 +520 640 +640 514 +640 480 +640 427 +640 480 +500 375 +640 383 +500 375 +640 495 +465 640 +640 427 +480 640 +640 480 +612 612 +333 500 +480 640 +500 375 +640 480 +400 300 +500 375 +640 427 +640 427 +640 359 +612 612 +640 373 +612 612 +424 640 +640 425 +640 444 +640 480 +640 478 +640 427 +500 332 +640 480 +640 427 +640 427 +640 639 +640 480 +480 640 +640 427 +500 375 +471 640 +640 427 +500 375 +640 426 +640 426 +500 371 +640 480 +500 375 +640 428 +358 243 +640 498 +640 424 +640 480 +500 375 +640 480 +640 424 +500 341 +640 480 +640 480 +640 480 +640 432 +500 375 +640 426 +640 458 +640 480 +640 427 +640 480 +640 414 +640 480 +416 640 +640 458 +480 640 +612 612 +427 640 +640 403 +640 480 +640 512 +640 481 +640 427 +640 480 +375 500 +640 427 +640 480 +640 427 +612 612 +500 375 +500 375 +469 640 +640 480 +640 500 +640 428 +640 486 +426 640 +402 600 +640 449 +640 427 +500 375 +427 640 +640 427 +640 500 +640 427 +640 480 +500 437 +504 438 +640 479 +480 640 +500 375 +640 480 +640 640 +480 640 +640 400 +640 480 +640 426 +640 480 +640 427 +500 337 +640 427 +640 426 +635 640 +640 337 +640 416 +640 480 +555 640 +640 480 +640 480 +640 400 +640 439 +640 428 +480 640 +640 427 +640 640 +419 500 +640 426 +500 332 +500 375 +640 426 +640 426 +640 427 +640 512 +500 375 +640 427 +462 640 +427 640 +500 334 +409 640 +500 375 +640 406 +640 425 +500 375 +640 480 +612 612 +640 426 +428 640 +640 480 +640 426 +640 480 +640 427 +640 427 +424 640 +640 426 +640 480 +533 640 +640 529 +640 480 +480 640 +640 428 +640 480 +500 333 +640 426 +500 395 +640 528 +426 640 +480 640 +500 400 +640 427 +500 357 +640 480 +640 427 +612 612 +640 478 +480 640 +640 424 +640 427 +640 480 +480 640 +640 480 +424 640 +640 427 +640 152 +640 427 +480 640 +640 445 +640 427 +640 427 +640 524 +640 480 +478 640 +640 480 +640 480 +375 500 +640 427 +640 427 +640 481 +640 427 +525 350 +640 427 +640 497 +640 480 +640 426 +640 457 +428 640 +640 427 +640 427 +640 426 +640 360 +640 426 +640 480 +640 358 +640 479 +480 640 +344 640 +476 640 +640 383 +574 361 +640 480 +388 640 +640 355 +427 640 +640 480 +640 480 +568 320 +640 480 +640 426 +640 489 +481 640 +640 427 +640 497 +640 388 +640 424 +640 480 +333 500 +640 480 +640 378 +480 640 +640 427 +612 612 +375 500 +640 367 +500 386 +640 473 +640 427 +640 480 +640 344 +427 640 +480 640 +640 480 +500 500 +500 375 +640 425 +640 480 +640 428 +640 427 +468 640 +640 361 +480 640 +640 480 +640 480 +640 425 +500 374 +480 640 +640 427 +640 481 +500 500 +640 426 +480 360 +640 480 +640 514 +612 612 +427 640 +640 426 +640 480 +427 640 +640 480 +640 480 +640 480 +640 428 +480 640 +500 333 +640 426 +640 426 +640 480 +640 480 +640 480 +640 440 +640 426 +640 480 +640 480 +640 480 +640 409 +640 425 +640 427 +640 422 +640 331 +426 640 +640 427 +640 480 +640 479 +640 427 +640 480 +640 512 +640 512 +640 427 +640 478 +480 640 +640 480 +479 640 +640 424 +640 432 +428 640 +640 427 +426 640 +640 426 +480 640 +640 480 +640 480 +640 480 +640 491 +640 480 +640 427 +500 481 +640 480 +480 640 +640 426 +640 385 +640 427 +427 640 +500 375 +480 640 +640 427 +480 640 +640 480 +640 480 +640 480 +640 427 +640 425 +640 480 +500 375 +431 640 +532 640 +640 428 +500 375 +640 620 +640 445 +424 640 +640 480 +640 428 +500 375 +640 425 +640 480 +640 427 +640 426 +640 427 +640 514 +640 480 +640 477 +640 426 +640 469 +640 427 +640 480 +640 427 +640 480 +640 480 +640 480 +640 423 +640 326 +500 333 +531 640 +612 612 +640 480 +640 427 +640 480 +640 426 +640 458 +480 640 +640 480 +480 640 +640 427 +640 498 +640 480 +640 366 +480 640 +640 429 +640 424 +640 481 +446 640 +427 640 +640 427 +640 396 +640 427 +640 480 +640 480 +640 426 +489 640 +343 500 +480 640 +400 267 +500 333 +427 640 +375 500 +640 428 +640 480 +427 640 +640 640 +335 500 +640 480 +640 480 +640 360 +640 567 +427 640 +500 469 +515 640 +425 640 +640 496 +640 480 +640 360 +640 480 +480 640 +640 457 +640 480 +500 333 +640 428 +500 362 +640 448 +640 457 +319 500 +427 640 +640 480 +640 427 +375 500 +640 360 +500 333 +426 640 +480 640 +640 480 +640 480 +640 478 +427 640 +500 334 +612 612 +640 427 +612 612 +424 640 +500 332 +640 480 +427 640 +424 640 +640 425 +640 427 +640 494 +500 335 +480 640 +640 480 +427 640 +512 640 +469 640 +640 427 +640 426 +480 640 +640 428 +640 426 +640 480 +367 500 +640 480 +404 640 +640 480 +640 480 +640 496 +640 480 +480 640 +640 480 +640 480 +640 541 +480 640 +640 512 +640 640 +480 640 +640 428 +500 333 +382 640 +333 500 +480 640 +640 426 +400 289 +640 480 +640 427 +480 640 +640 480 +640 423 +640 425 +640 427 +640 424 +640 480 +640 427 +640 569 +640 448 +500 375 +640 427 +640 425 +640 404 +500 331 +480 640 +640 480 +480 640 +640 480 +640 427 +630 640 +480 640 +500 384 +640 427 +640 485 +640 616 +640 480 +640 426 +427 640 +640 480 +640 639 +640 480 +640 480 +375 500 +640 427 +640 427 +375 500 +640 480 +640 427 +640 480 +640 510 +480 640 +480 640 +471 640 +640 480 +640 427 +612 612 +480 640 +640 502 +640 425 +480 640 +640 480 +640 480 +640 471 +480 640 +640 451 +500 640 +640 480 +640 421 +640 426 +640 496 +640 480 +500 335 +429 640 +500 363 +640 433 +640 426 +640 425 +480 640 +640 480 +426 640 +640 329 +640 480 +640 424 +640 429 +480 640 +640 428 +612 612 +640 385 +480 640 +640 424 +640 360 +640 426 +640 427 +640 480 +640 427 +546 640 +640 438 +500 298 +500 375 +500 400 +480 640 +640 427 +640 426 +640 408 +473 640 +427 640 +640 428 +640 480 +640 427 +640 425 +640 449 +480 640 +427 640 +612 612 +333 500 +500 295 +640 640 +640 480 +480 640 +500 333 +640 482 +335 500 +640 427 +640 480 +640 432 +425 640 +640 428 +640 427 +640 424 +640 429 +640 479 +480 640 +640 480 +640 480 +279 500 +640 430 +640 429 +640 400 +640 426 +640 552 +640 423 +640 427 +640 427 +640 480 +640 480 +640 426 +640 428 +640 480 +640 480 +600 450 +480 640 +427 640 +480 640 +427 640 +427 640 +640 480 +640 427 +640 480 +480 640 +567 377 +427 640 +480 640 +640 509 +640 428 +640 360 +640 480 +500 375 +640 425 +640 400 +640 640 +640 427 +640 359 +412 640 +449 640 +375 500 +640 427 +640 426 +640 427 +500 335 +640 427 +640 640 +640 480 +640 428 +480 640 +640 424 +640 426 +640 480 +480 640 +640 360 +500 375 +564 640 +640 426 +640 426 +640 443 +612 612 +360 640 +437 640 +640 428 +640 480 +640 480 +640 429 +640 512 +640 480 +640 427 +550 640 +427 640 +640 429 +479 640 +640 480 +640 426 +640 426 +640 427 +640 480 +612 612 +640 427 +500 335 +640 480 +640 427 +500 333 +480 640 +640 425 +640 480 +640 433 +346 500 +640 480 +612 612 +640 480 +640 480 +640 426 +640 512 +640 427 +640 441 +487 640 +640 480 +480 640 +640 480 +426 640 +612 612 +640 486 +375 500 +428 640 +640 640 +640 480 +640 427 +640 482 +640 501 +640 480 +640 427 +427 640 +640 428 +640 480 +640 360 +640 427 +427 640 +640 427 +640 480 +640 480 +640 457 +640 428 +640 428 +612 612 +640 425 +640 498 +640 427 +640 474 +428 640 +640 503 +640 427 +640 479 +379 640 +640 427 +612 612 +640 480 +480 640 +640 427 +640 427 +443 640 +612 612 +426 640 +640 640 +640 343 +512 640 +500 375 +480 640 +640 480 +640 457 +640 427 +640 480 +427 640 +640 354 +500 375 +404 265 +425 640 +640 480 +546 640 +427 640 +640 480 +640 400 +448 336 +375 500 +427 640 +640 422 +500 333 +640 480 +640 480 +640 427 +640 425 +396 640 +500 375 +640 426 +640 450 +640 427 +640 480 +640 480 +480 640 +640 425 +500 375 +640 511 +640 427 +639 640 +640 480 +640 427 +360 640 +640 425 +640 427 +640 480 +375 500 +640 426 +640 540 +640 340 +640 480 +375 500 +640 427 +640 480 +640 480 +480 640 +640 427 +480 640 +640 548 +640 578 +500 281 +500 333 +500 400 +640 354 +640 480 +640 640 +640 425 +480 640 +640 480 +640 387 +640 480 +640 498 +333 500 +375 500 +640 426 +411 640 +640 383 +480 640 +640 480 +640 360 +640 483 +640 426 +640 426 +612 612 +640 480 +480 640 +640 463 +640 480 +640 512 +640 480 +427 640 +640 480 +480 640 +500 375 +480 640 +640 427 +640 480 +500 375 +640 427 +640 427 +426 640 +400 300 +640 480 +333 500 +466 640 +640 427 +480 640 +640 433 +640 427 +500 375 +480 640 +640 480 +640 427 +640 489 +640 427 +500 375 +640 480 +640 480 +478 640 +500 375 +640 426 +480 640 +640 550 +640 480 +640 427 +640 426 +612 612 +640 480 +640 427 +480 640 +640 486 +640 450 +640 480 +332 500 +427 640 +640 428 +640 539 +640 427 +640 480 +640 459 +640 425 +640 480 +612 612 +640 480 +640 427 +428 640 +640 480 +640 464 +426 640 +640 480 +640 359 +333 467 +640 398 +640 427 +640 429 +500 334 +640 480 +443 640 +427 640 +640 369 +640 426 +640 423 +640 427 +640 479 +640 480 +427 640 +640 427 +640 472 +640 480 +450 640 +640 453 +640 425 +640 360 +500 375 +640 425 +428 640 +400 300 +640 480 +375 500 +640 424 +640 427 +640 428 +640 479 +640 427 +640 480 +500 375 +640 425 +640 480 +640 486 +640 480 +640 480 +640 505 +480 640 +640 480 +640 442 +640 480 +428 640 +640 428 +640 505 +500 500 +428 640 +640 423 +640 425 +640 480 +640 427 +640 425 +640 480 +640 480 +500 375 +500 375 +640 480 +338 500 +640 400 +640 434 +640 425 +500 333 +612 612 +640 426 +500 375 +500 375 +640 425 +640 424 +427 640 +500 286 +640 460 +500 375 +640 454 +640 480 +500 375 +640 480 +640 426 +640 374 +479 640 +640 480 +640 480 +640 512 +640 480 +640 427 +640 360 +640 427 +376 500 +640 427 +640 424 +483 640 +640 480 +500 400 +480 640 +640 478 +500 375 +429 640 +425 640 +427 640 +640 480 +640 479 +332 500 +503 640 +640 427 +640 427 +640 480 +500 333 +640 480 +427 640 +500 333 +480 640 +640 479 +407 640 +640 427 +500 375 +640 427 +375 500 +480 640 +456 640 +612 612 +500 341 +552 640 +500 375 +640 427 +640 513 +640 581 +480 640 +640 427 +640 481 +333 500 +640 480 +640 481 +427 640 +640 426 +350 263 +500 375 +640 480 +500 375 +640 424 +553 640 +640 427 +640 426 +427 640 +640 423 +640 427 +640 433 +426 640 +640 427 +428 640 +640 513 +640 480 +640 427 +424 640 +640 425 +640 426 +640 480 +640 426 +640 394 +640 426 +640 480 +640 427 +640 426 +426 640 +634 640 +640 517 +427 640 +640 466 +375 500 +500 354 +500 375 +427 640 +640 425 +240 320 +427 640 +640 429 +640 426 +640 428 +640 394 +640 498 +640 480 +640 480 +427 640 +640 480 +640 425 +640 427 +427 640 +640 480 +640 427 +640 428 +640 480 +375 500 +640 428 +640 480 +640 448 +612 612 +640 562 +338 640 +500 371 +500 333 +640 426 +640 480 +500 333 +640 480 +640 480 +640 480 +480 640 +640 429 +640 428 +640 413 +640 483 +427 640 +333 500 +500 337 +640 427 +640 427 +640 451 +640 480 +500 341 +640 428 +640 428 +640 480 +640 480 +640 480 +640 428 +375 500 +640 427 +375 500 +640 640 +640 480 +640 426 +640 480 +360 270 +480 640 +640 480 +640 480 +640 478 +640 480 +500 333 +480 640 +640 408 +640 480 +457 640 +427 640 +624 640 +500 333 +640 409 +640 480 +640 429 +478 640 +375 500 +375 500 +640 429 +640 640 +640 429 +640 424 +640 427 +640 480 +640 426 +640 451 +640 426 +640 427 +640 424 +640 480 +640 480 +469 640 +640 480 +640 480 +640 425 +432 640 +427 640 +434 500 +640 427 +640 427 +427 640 +480 640 +427 640 +500 375 +640 427 +426 640 +640 426 +640 427 +640 473 +427 640 +640 480 +427 640 +640 480 +480 640 +500 325 +640 384 +640 480 +640 427 +500 324 +427 640 +640 424 +640 480 +640 480 +480 640 +427 640 +426 640 +640 480 +500 375 +640 427 +428 640 +640 295 +640 478 +640 480 +427 640 +640 428 +482 640 +418 640 +640 480 +480 640 +480 640 +640 427 +640 480 +612 612 +639 640 +640 480 +375 500 +640 480 +640 427 +640 480 +524 640 +640 427 +425 640 +640 427 +427 640 +640 426 +640 427 +640 361 +640 480 +640 480 +640 424 +640 480 +640 480 +640 426 +640 480 +640 428 +500 377 +423 640 +480 640 +640 464 +640 426 +640 496 +500 375 +640 508 +640 426 +427 640 +500 326 +424 640 +640 480 +640 426 +640 383 +580 329 +334 500 +500 333 +640 424 +640 346 +640 472 +640 537 +640 640 +375 500 +427 640 +640 480 +640 424 +640 480 +427 640 +640 480 +480 640 +612 612 +500 375 +480 640 +640 427 +640 426 +640 480 +500 375 +375 500 +640 427 +640 360 +640 384 +640 480 +480 640 +640 614 +612 612 +500 375 +438 500 +640 480 +640 427 +640 480 +375 500 +640 271 +428 640 +640 521 +640 426 +640 480 +640 426 +640 480 +640 481 +612 612 +640 427 +640 426 +500 281 +429 640 +640 486 +375 500 +640 480 +640 480 +427 640 +640 480 +640 428 +375 500 +640 478 +612 612 +640 480 +640 480 +500 330 +375 500 +427 640 +640 428 +480 640 +640 428 +640 398 +480 640 +446 640 +640 480 +375 500 +640 481 +640 427 +640 398 +478 640 +476 640 +640 427 +640 480 +640 428 +640 427 +640 480 +640 479 +640 480 +427 640 +640 426 +500 375 +500 375 +640 428 +480 640 +640 425 +640 543 +412 640 +500 375 +640 404 +480 640 +500 375 +640 524 +640 426 +640 480 +500 375 +640 427 +480 640 +428 640 +500 333 +640 480 +612 612 +640 427 +427 640 +514 640 +640 434 +640 424 +640 359 +480 640 +640 480 +640 483 +500 375 +640 480 +640 425 +612 612 +640 480 +640 429 +480 640 +640 427 +640 512 +640 401 +612 612 +500 375 +640 512 +640 480 +500 375 +552 640 +640 480 +640 480 +640 519 +521 640 +640 480 +640 427 +500 375 +640 480 +640 426 +640 426 +640 427 +500 375 +427 640 +640 429 +640 546 +427 640 +500 335 +640 480 +640 480 +640 428 +640 481 +640 407 +427 640 +640 480 +500 353 +427 640 +640 426 +480 640 +640 480 +640 378 +640 480 +640 311 +640 359 +640 426 +329 500 +640 480 +640 480 +640 427 +640 425 +500 332 +600 600 +400 542 +640 425 +640 512 +640 480 +427 640 +640 427 +500 375 +640 480 +480 640 +427 640 +500 375 +640 631 +640 480 +640 361 +500 375 +640 427 +640 428 +640 424 +480 640 +640 428 +640 480 +640 480 +480 640 +640 427 +640 480 +500 375 +513 640 +478 640 +500 382 +640 425 +640 609 +474 640 +500 373 +640 427 +640 377 +425 640 +640 480 +475 640 +640 479 +640 427 +613 640 +480 640 +640 480 +480 640 +640 378 +640 360 +449 640 +360 640 +640 479 +640 480 +480 640 +640 440 +640 640 +640 360 +500 375 +640 427 +640 427 +640 480 +640 360 +612 612 +500 375 +480 640 +640 427 +640 427 +640 575 +640 480 +640 480 +480 640 +640 426 +640 480 +282 500 +640 480 +640 429 +640 315 +640 480 +640 479 +640 480 +500 500 +640 418 +640 425 +640 640 +640 428 +640 480 +640 427 +640 426 +640 427 +411 640 +480 640 +640 480 +500 375 +640 480 +640 528 +640 426 +500 358 +612 612 +640 478 +640 425 +640 522 +640 428 +640 426 +640 428 +640 484 +427 640 +640 426 +457 640 +320 213 +640 427 +480 640 +640 425 +640 480 +640 480 +640 459 +428 640 +612 612 +640 480 +640 480 +640 427 +640 427 +516 640 +640 383 +640 640 +640 425 +500 333 +480 640 +640 427 +427 640 +640 584 +375 500 +426 640 +640 504 +640 480 +640 414 +640 427 +640 502 +500 364 +640 480 +461 640 +640 440 +375 500 +640 480 +640 476 +512 640 +640 439 +640 359 +640 480 +640 425 +640 427 +640 640 +500 334 +375 500 +333 500 +500 332 +640 428 +640 426 +640 428 +427 640 +640 480 +640 427 +428 640 +612 612 +640 426 +640 480 +640 427 +640 391 +640 512 +640 427 +640 480 +500 333 +640 427 +463 640 +500 331 +640 480 +640 592 +640 462 +640 480 +640 428 +640 480 +640 361 +333 500 +480 640 +640 427 +480 640 +640 427 +640 480 +549 640 +399 640 +640 426 +640 333 +640 463 +298 500 +480 640 +640 426 +640 427 +640 413 +640 442 +640 428 +640 427 +426 640 +640 424 +640 522 +483 640 +640 428 +640 480 +480 640 +640 428 +640 480 +640 428 +427 640 +427 640 +640 491 +640 480 +640 428 +640 480 +480 640 +480 640 +640 428 +640 427 +500 375 +640 480 +500 375 +640 463 +640 386 +640 480 +500 375 +640 427 +640 480 +309 640 +640 480 +640 426 +419 640 +480 640 +612 612 +500 375 +640 480 +480 640 +500 375 +373 640 +640 480 +640 426 +128 160 +640 427 +500 375 +480 640 +500 400 +427 640 +640 400 +539 445 +640 427 +640 424 +428 640 +480 640 +640 425 +500 375 +479 640 +640 427 +640 427 +480 640 +640 478 +640 429 +640 374 +640 480 +500 500 +640 427 +640 440 +640 480 +612 612 +439 640 +640 457 +612 612 +640 481 +427 640 +640 480 +640 427 +640 480 +640 426 +477 640 +640 458 +640 426 +500 375 +640 428 +640 480 +375 500 +500 334 +640 480 +640 480 +640 489 +428 640 +640 480 +500 375 +640 427 +640 480 +640 426 +640 512 +640 480 +640 293 +401 640 +640 480 +359 500 +323 500 +427 640 +480 640 +640 424 +640 427 +500 375 +640 409 +480 640 +640 424 +640 480 +500 281 +640 427 +640 480 +640 426 +375 500 +640 480 +640 480 +612 612 +640 533 +416 350 +640 480 +640 427 +375 500 +640 427 +640 640 +640 480 +640 428 +640 412 +640 480 +640 480 +640 480 +640 427 +640 359 +612 612 +640 427 +491 500 +640 427 +427 640 +287 432 +426 640 +334 500 +320 240 +359 500 +500 375 +640 427 +640 339 +640 480 +432 288 +496 640 +500 335 +640 426 +427 640 +517 640 +640 529 +640 425 +640 383 +640 480 +390 640 +640 427 +333 500 +640 480 +640 462 +640 427 +640 480 +640 433 +480 640 +640 436 +425 640 +500 400 +640 479 +640 427 +640 428 +640 427 +640 480 +576 401 +640 480 +640 480 +640 426 +640 480 +375 500 +640 426 +478 640 +640 480 +640 426 +640 427 +640 480 +425 640 +640 480 +269 640 +480 640 +500 375 +640 480 +480 640 +640 421 +640 452 +426 640 +459 500 +640 427 +640 428 +640 427 +640 426 +640 480 +480 640 +640 427 +640 433 +640 480 +427 640 +640 472 +640 427 +640 480 +640 331 +480 640 +640 427 +640 416 +509 640 +500 375 +640 480 +640 480 +640 426 +640 428 +640 480 +640 425 +640 448 +640 480 +640 428 +480 640 +640 474 +640 428 +400 500 +640 480 +500 281 +480 640 +480 640 +640 443 +640 533 +640 427 +640 424 +480 640 +640 640 +500 375 +640 351 +640 428 +500 376 +640 427 +421 640 +640 480 +640 480 +640 360 +640 427 +640 427 +640 451 +640 428 +640 480 +640 369 +640 640 +640 480 +433 640 +640 433 +640 427 +640 424 +480 640 +427 640 +640 428 +640 427 +480 640 +640 480 +640 360 +640 480 +640 480 +500 375 +640 480 +640 480 +612 612 +640 426 +640 427 +640 480 +456 640 +640 427 +640 420 +480 640 +640 427 +640 457 +640 508 +640 457 +640 427 +640 427 +640 427 +640 429 +640 539 +640 488 +640 480 +427 640 +640 424 +640 543 +521 640 +640 480 +500 375 +640 364 +444 640 +640 427 +640 461 +480 640 +640 427 +479 640 +420 640 +640 505 +375 500 +640 450 +640 427 +640 333 +640 480 +640 427 +640 425 +640 426 +640 428 +640 427 +640 427 +471 640 +480 640 +640 640 +424 640 +500 334 +640 544 +640 386 +640 427 +427 640 +640 391 +640 480 +640 536 +425 640 +640 480 +377 500 +358 500 +480 640 +640 427 +640 480 +427 640 +500 303 +640 480 +640 426 +640 640 +640 398 +640 433 +640 428 +640 480 +450 350 +640 457 +451 640 +640 576 +640 427 +427 640 +640 523 +640 429 +428 640 +640 425 +480 640 +640 410 +479 640 +640 480 +640 427 +500 333 +459 640 +640 427 +640 360 +513 640 +427 640 +640 406 +640 603 +500 331 +640 427 +409 500 +640 427 +640 480 +640 427 +480 640 +478 640 +640 480 +612 612 +480 640 +640 427 +640 480 +500 332 +375 500 +600 600 +640 427 +480 640 +612 612 +500 331 +480 640 +640 480 +640 480 +640 427 +640 458 +640 429 +640 428 +640 427 +640 543 +640 480 +500 325 +500 318 +640 426 +640 480 +640 640 +480 640 +332 500 +640 427 +480 640 +640 427 +375 640 +640 480 +375 500 +427 640 +480 640 +640 480 +640 427 +427 640 +640 428 +640 424 +640 480 +640 468 +640 427 +640 480 +640 480 +640 463 +640 513 +640 427 +640 480 +640 425 +640 400 +640 427 +640 425 +640 480 +640 476 +640 480 +640 428 +640 428 +500 375 +500 334 +640 480 +640 480 +500 357 +426 640 +640 480 +640 480 +427 640 +427 640 +480 640 +480 640 +497 500 +480 640 +479 640 +640 428 +640 426 +640 640 +640 426 +640 427 +500 375 +640 452 +640 427 +500 347 +640 426 +612 612 +640 480 +421 640 +640 427 +640 432 +640 480 +640 427 +500 375 +612 612 +640 427 +364 500 +402 600 +640 439 +478 640 +640 478 +375 500 +640 480 +640 427 +640 480 +640 480 +640 427 +640 426 +640 480 +640 427 +640 427 +640 393 +480 640 +612 612 +332 500 +426 640 +640 427 +395 640 +640 480 +640 480 +480 640 +640 480 +640 426 +480 640 +640 214 +640 496 +640 426 +419 640 +500 333 +500 400 +640 478 +640 318 +500 500 +640 426 +612 612 +640 480 +640 428 +640 427 +640 360 +640 424 +640 456 +567 640 +640 480 +466 640 +500 345 +640 480 +427 640 +640 480 +500 333 +343 500 +640 480 +640 480 +640 480 +640 640 +478 640 +375 500 +640 480 +640 421 +640 426 +640 480 +640 480 +640 480 +640 320 +640 428 +640 480 +640 449 +640 360 +640 480 +640 426 +640 456 +640 427 +640 426 +640 480 +640 360 +500 375 +640 427 +360 640 +640 427 +640 426 +640 478 +640 398 +640 425 +640 430 +462 640 +619 640 +640 379 +640 425 +480 640 +640 428 +640 427 +426 640 +427 640 +333 500 +427 640 +640 394 +640 426 +640 480 +640 383 +640 267 +500 417 +604 403 +427 640 +478 640 +640 400 +640 480 +500 334 +640 533 +640 427 +640 480 +640 427 +640 480 +640 408 +640 426 +640 480 +640 425 +640 428 +640 427 +480 640 +640 495 +188 285 +640 429 +640 480 +427 640 +640 431 +612 612 +640 424 +640 427 +640 426 +500 333 +640 459 +341 500 +640 426 +500 375 +480 273 +640 480 +640 425 +425 640 +640 480 +640 426 +640 480 +425 640 +427 640 +640 427 +480 640 +640 480 +480 640 +480 640 +244 183 +480 640 +640 428 +500 375 +500 375 +640 427 +480 640 +640 384 +640 344 +640 523 +640 427 +427 640 +640 480 +500 356 +480 640 +332 500 +640 640 +612 612 +500 375 +640 426 +574 640 +479 640 +640 491 +427 640 +640 480 +500 333 +640 622 +640 427 +512 640 +640 480 +640 425 +480 640 +640 425 +640 466 +500 375 +640 427 +640 437 +640 480 +375 500 +425 640 +640 480 +640 594 +478 640 +375 500 +640 480 +640 425 +640 424 +427 640 +640 400 +640 480 +480 640 +500 452 +640 480 +427 640 +612 612 +427 640 +333 500 +640 427 +425 640 +640 480 +640 425 +640 427 +500 407 +640 429 +640 480 +500 375 +640 480 +640 427 +500 375 +381 640 +640 483 +427 640 +427 640 +640 419 +640 519 +640 427 +640 401 +612 612 +640 279 +640 480 +640 399 +500 375 +640 458 +640 481 +640 427 +349 614 +640 480 +481 640 +428 640 +640 480 +480 640 +480 640 +459 640 +640 427 +640 478 +640 427 +640 426 +640 425 +640 360 +640 480 +428 640 +480 640 +640 480 +640 426 +640 478 +640 427 +640 480 +640 453 +427 640 +640 640 +640 426 +428 640 +640 444 +640 480 +640 427 +640 480 +640 321 +640 360 +640 480 +640 359 +480 640 +640 480 +404 640 +640 429 +640 480 +500 375 +640 430 +640 480 +640 417 +640 480 +640 448 +469 640 +640 480 +425 640 +333 500 +640 481 +640 480 +640 427 +640 423 +428 640 +640 430 +640 464 +640 427 +640 480 +640 535 +424 640 +640 512 +640 480 +640 427 +500 375 +640 480 +500 375 +640 480 +640 449 +640 480 +500 375 +640 427 +640 427 +427 640 +640 480 +640 426 +640 436 +640 413 +465 640 +640 480 +640 426 +425 640 +640 428 +428 640 +640 359 +640 398 +640 480 +640 480 +640 497 +640 426 +640 328 +500 375 +482 640 +480 640 +339 500 +501 640 +640 427 +640 433 +640 428 +640 480 +500 335 +640 428 +640 344 +640 480 +500 375 +640 427 +640 426 +480 640 +640 425 +640 427 +640 427 +640 359 +640 480 +473 640 +481 640 +576 640 +640 640 +600 464 +640 424 +640 427 +640 426 +640 480 +481 640 +500 461 +640 278 +480 640 +500 345 +640 427 +640 480 +612 612 +640 345 +480 640 +427 640 +640 480 +640 480 +640 480 +640 427 +640 426 +640 383 +410 500 +500 375 +640 480 +640 640 +333 500 +640 480 +640 427 +640 480 +640 640 +640 425 +640 427 +480 640 +640 427 +500 374 +612 612 +333 500 +640 569 +640 427 +640 430 +640 428 +500 375 +640 480 +375 500 +640 427 +640 480 +480 640 +640 427 +640 480 +640 490 +278 500 +640 480 +542 640 +640 480 +640 480 +333 500 +640 427 +640 427 +640 470 +640 400 +640 419 +480 640 +640 426 +500 375 +640 480 +640 480 +427 640 +640 426 +640 480 +512 640 +640 480 +424 640 +640 341 +640 480 +640 360 +480 640 +640 480 +640 427 +375 500 +640 427 +426 640 +640 427 +480 640 +640 427 +500 357 +427 640 +640 426 +640 444 +480 640 +640 426 +640 478 +640 480 +640 365 +640 517 +480 640 +640 480 +640 426 +333 500 +640 427 +640 480 +463 640 +640 480 +640 427 +640 429 +640 378 +424 640 +640 480 +427 640 +640 453 +640 480 +426 640 +640 427 +640 428 +640 424 +640 480 +427 640 +640 480 +640 480 +500 375 +640 427 +640 480 +640 468 +442 640 +640 480 +480 640 +600 400 +640 427 +640 480 +640 480 +640 427 +640 427 +640 451 +640 426 +640 426 +640 449 +427 640 +640 511 +391 640 +640 496 +500 375 +640 480 +640 480 +640 427 +640 640 +500 381 +640 425 +640 427 +640 480 +640 480 +640 480 +480 640 +500 142 +640 480 +426 640 +457 640 +618 640 +640 480 +424 640 +640 348 +640 360 +640 480 +429 640 +640 480 +429 640 +480 640 +640 424 +640 428 +640 480 +512 640 +640 428 +640 480 +640 427 +478 640 +640 471 +640 429 +640 640 +640 427 +500 375 +640 359 +640 425 +640 480 +640 444 +640 425 +640 480 +640 398 +640 640 +640 426 +640 480 +640 427 +500 333 +640 425 +640 424 +500 375 +640 506 +500 333 +640 425 +480 640 +640 428 +480 640 +640 425 +640 427 +375 500 +640 620 +640 480 +640 446 +640 427 +640 456 +422 640 +461 640 +425 640 +640 480 +427 640 +640 214 +612 612 +640 360 +480 640 +500 333 +640 480 +640 470 +640 427 +640 427 +612 612 +640 480 +640 480 +640 480 +640 480 +640 480 +640 427 +640 480 +640 480 +640 425 +640 480 +612 612 +426 640 +640 480 +375 500 +497 640 +397 640 +640 480 +357 500 +640 480 +480 640 +640 427 +640 480 +640 433 +500 375 +640 480 +640 427 +640 482 +640 427 +640 427 +640 480 +500 333 +640 419 +640 558 +640 478 +640 426 +640 449 +640 480 +500 375 +333 500 +640 384 +500 332 +480 640 +640 425 +640 426 +640 398 +640 430 +640 369 +640 427 +432 640 +640 480 +640 360 +500 375 +640 426 +640 427 +500 291 +640 640 +640 426 +500 375 +640 426 +500 375 +640 424 +640 640 +640 480 +640 427 +640 480 +640 427 +456 640 +640 480 +480 640 +640 387 +640 491 +640 478 +640 426 +640 427 +640 508 +640 564 +428 640 +640 480 +640 480 +500 401 +425 640 +640 360 +640 427 +640 573 +480 640 +640 480 +640 427 +640 360 +480 640 +640 427 +500 375 +640 480 +640 480 +640 426 +640 480 +612 612 +640 480 +343 640 +640 427 +640 423 +640 358 +640 423 +546 640 +640 480 +640 428 +640 427 +640 373 +640 427 +425 640 +640 562 +612 612 +500 333 +432 640 +640 408 +640 426 +640 480 +500 333 +611 425 +427 640 +640 640 +500 332 +500 375 +640 425 +640 478 +640 427 +640 480 +640 480 +360 640 +640 303 +640 480 +640 427 +640 361 +447 400 +428 500 +640 427 +500 252 +640 480 +640 427 +640 640 +500 375 +640 440 +427 640 +452 640 +640 480 +640 480 +480 640 +640 614 +640 427 +500 375 +640 480 +640 480 +640 400 +640 480 +500 330 +640 480 +427 640 +640 600 +640 426 +640 479 +640 553 +500 375 +512 640 +640 427 +427 640 +500 400 +640 426 +500 333 +424 640 +393 500 +640 427 +640 400 +640 480 +640 480 +353 500 +640 425 +640 294 +500 334 +640 490 +640 424 +500 375 +512 640 +500 383 +375 500 +412 640 +640 424 +500 378 +640 480 +640 427 +500 333 +640 440 +500 347 +480 640 +640 480 +640 426 +426 640 +640 480 +640 426 +640 360 +640 427 +640 480 +640 480 +640 457 +480 640 +640 427 +640 428 +640 426 +640 425 +640 427 +375 500 +640 348 +640 427 +640 427 +427 640 +428 640 +640 363 +640 427 +640 360 +428 640 +640 504 +426 640 +640 427 +333 500 +640 426 +640 427 +640 426 +640 480 +500 437 +220 186 +640 480 +640 640 +640 480 +640 406 +480 640 +500 357 +640 480 +640 424 +373 640 +464 640 +640 478 +427 640 +640 480 +612 612 +640 429 +640 480 +640 426 +640 480 +500 400 +500 335 +640 427 +360 640 +426 640 +480 640 +480 640 +429 640 +640 427 +380 324 +462 640 +480 640 +480 640 +640 426 +640 427 +640 480 +640 426 +640 424 +640 490 +640 499 +640 480 +640 427 +457 640 +500 329 +640 480 +480 640 +640 385 +640 480 +640 241 +640 480 +480 640 +640 426 +640 479 +333 500 +640 640 +500 323 +500 340 +640 412 +640 426 +640 426 +640 481 +640 424 +640 480 +640 437 +640 425 +512 640 +640 480 +640 426 +640 408 +640 376 +640 480 +640 480 +640 427 +425 640 +640 478 +640 426 +427 640 +375 500 +500 375 +640 480 +480 640 +640 427 +375 500 +500 334 +640 427 +640 382 +640 425 +640 480 +640 480 +640 480 +640 458 +640 427 +640 480 +427 640 +640 640 +640 480 +640 480 +426 640 +640 427 +505 640 +640 480 +640 360 +428 640 +640 426 +640 427 +480 640 +640 425 +640 479 +640 480 +640 513 +426 640 +427 640 +239 360 +480 640 +640 363 +500 428 +640 427 +640 491 +640 512 +640 426 +500 286 +640 427 +612 612 +640 384 +513 640 +500 375 +427 640 +640 426 +428 640 +640 480 +640 424 +640 428 +640 429 +640 360 +640 426 +457 640 +640 480 +333 500 +343 500 +480 640 +640 307 +640 480 +640 371 +375 500 +640 427 +640 427 +640 427 +640 428 +500 307 +303 640 +640 426 +500 333 +640 426 +640 427 +640 593 +480 640 +640 360 +640 480 +640 427 +426 640 +640 480 +500 375 +500 375 +480 640 +640 480 +640 364 +640 480 +375 500 +640 480 +640 427 +640 427 +640 427 +374 500 +457 640 +500 333 +375 500 +640 426 +640 480 +640 425 +640 428 +640 428 +427 640 +640 460 +373 640 +428 640 +427 640 +640 480 +427 640 +640 360 +640 433 +640 480 +640 426 +640 427 +640 480 +640 428 +640 426 +640 480 +557 640 +640 424 +568 640 +640 480 +640 480 +375 500 +640 425 +480 640 +640 480 +640 480 +440 470 +640 360 +500 375 +428 640 +640 427 +640 480 +640 427 +480 640 +390 640 +640 480 +640 427 +640 478 +426 640 +640 480 +458 640 +427 640 +427 640 +479 640 +375 500 +640 427 +425 640 +640 428 +427 640 +640 480 +640 483 +640 480 +640 383 +640 480 +480 640 +640 425 +426 640 +443 640 +640 429 +426 640 +640 480 +640 480 +640 480 +640 427 +480 640 +640 480 +640 640 +640 480 +436 640 +640 480 +500 333 +640 480 +640 426 +640 429 +500 375 +640 426 +429 640 +640 434 +640 491 +640 426 +480 640 +500 375 +640 480 +375 500 +640 428 +640 480 +480 640 +640 476 +640 427 +640 425 +500 375 +612 612 +500 167 +640 480 +640 426 +640 584 +640 480 +480 640 +464 640 +640 480 +480 640 +395 640 +640 582 +500 375 +640 480 +427 640 +640 480 +640 480 +640 480 +500 342 +640 427 +640 480 +500 282 +417 500 +500 375 +443 640 +480 640 +640 475 +640 640 +640 427 +427 640 +480 640 +640 427 +500 375 +429 640 +640 480 +640 480 +640 427 +640 480 +640 480 +640 480 +640 480 +640 427 +640 480 +640 424 +640 480 +640 427 +640 427 +640 480 +640 512 +425 640 +640 401 +640 428 +640 428 +640 480 +640 427 +640 423 +612 612 +500 333 +640 421 +640 427 +640 480 +640 480 +500 375 +640 478 +640 480 +427 640 +640 427 +640 478 +478 640 +640 427 +640 427 +428 640 +612 612 +640 426 +640 433 +480 640 +640 480 +360 640 +375 500 +612 612 +640 414 +640 360 +426 640 +521 640 +640 479 +640 427 +427 640 +640 408 +640 480 +640 480 +640 427 +640 428 +640 360 +640 446 +640 480 +640 400 +640 427 +640 480 +640 458 +640 424 +640 427 +426 640 +500 358 +640 426 +640 425 +500 375 +640 427 +640 414 +640 426 +427 640 +640 502 +640 480 +500 500 +640 231 +640 427 +640 480 +640 523 +427 640 +426 640 +640 480 +640 427 +640 427 +480 640 +640 413 +640 480 +640 427 +640 428 +500 333 +480 640 +640 426 +640 480 +480 640 +361 640 +375 500 +640 426 +640 480 +427 640 +480 640 +425 640 +480 640 +375 500 +640 480 +500 197 +500 375 +640 457 +640 424 +640 480 +640 425 +640 361 +640 480 +640 421 +497 640 +612 612 +640 429 +480 640 +640 480 +640 480 +640 480 +640 480 +640 247 +640 480 +427 640 +640 421 +640 427 +427 640 +612 612 +640 427 +400 500 +500 333 +640 480 +640 427 +640 480 +640 427 +500 375 +480 640 +640 427 +640 427 +360 640 +500 375 +640 480 +640 480 +640 427 +640 480 +640 512 +640 426 +640 425 +640 359 +640 425 +640 425 +640 480 +480 640 +640 480 +426 640 +640 426 +640 432 +640 455 +640 425 +640 640 +640 426 +640 440 +480 640 +640 425 +509 640 +640 480 +640 480 +640 480 +640 426 +640 427 +640 480 +640 424 +500 331 +427 640 +480 640 +426 640 +640 360 +640 153 +612 612 +640 361 +604 640 +640 452 +640 411 +478 640 +640 480 +612 612 +500 400 +640 480 +640 480 +640 427 +640 480 +640 427 +480 640 +426 640 +640 427 +640 427 +612 612 +500 469 +640 428 +640 480 +640 426 +640 480 +640 480 +640 448 +640 425 +640 480 +375 500 +640 426 +612 612 +438 640 +383 640 +480 640 +640 478 +599 363 +612 612 +480 640 +640 424 +640 427 +640 480 +640 360 +500 400 +640 401 +640 480 +640 473 +640 427 +640 480 +640 427 +640 480 +640 428 +640 480 +640 480 +640 480 +640 480 +640 427 +480 640 +640 427 +640 480 +640 427 +640 320 +640 434 +500 375 +500 375 +640 427 +480 640 +500 375 +640 427 +640 425 +640 426 +640 480 +640 427 +640 480 +640 424 +425 640 +640 480 +640 427 +640 539 +640 480 +640 429 +640 480 +640 483 +640 426 +640 480 +640 428 +383 640 +500 374 +640 480 +640 281 +640 425 +640 427 +640 480 +640 428 +640 427 +500 375 +640 426 +640 413 +427 640 +500 448 +640 426 +499 640 +640 426 +480 640 +640 426 +640 428 +640 361 +427 640 +500 333 +480 640 +640 160 +640 503 +640 480 +640 427 +640 361 +640 480 +500 475 +481 640 +640 480 +431 640 +640 427 +500 375 +640 427 +427 640 +640 480 +640 427 +640 480 +427 640 +480 640 +500 375 +640 396 +640 480 +428 640 +640 427 +452 640 +612 612 +500 332 +427 640 +640 427 +640 480 +488 640 +640 427 +640 426 +535 640 +640 480 +480 640 +640 426 +640 576 +640 360 +626 640 +500 375 +427 640 +427 640 +640 480 +640 480 +640 426 +640 480 +480 640 +640 480 +426 640 +480 640 +640 322 +640 427 +375 500 +640 425 +480 640 +500 242 +427 640 +428 640 +334 500 +640 461 +640 480 +640 480 +640 428 +640 480 +640 586 +468 640 +640 427 +640 480 +640 480 +640 549 +480 640 +640 427 +480 640 +612 612 +640 480 +640 427 +640 427 +640 551 +480 640 +640 480 +640 480 +640 427 +375 500 +640 427 +640 360 +480 640 +478 640 +500 332 +640 480 +427 640 +428 640 +481 640 +612 612 +375 500 +640 480 +500 375 +640 480 +512 640 +640 427 +640 425 +422 640 +500 375 +480 640 +640 424 +640 427 +480 640 +640 480 +640 480 +427 640 +640 480 +480 640 +612 612 +640 480 +640 427 +427 640 +500 375 +640 468 +640 426 +427 640 +427 640 +640 427 +427 640 +480 640 +640 480 +640 480 +480 640 +640 480 +640 497 +640 426 +640 640 +640 480 +640 480 +640 425 +375 500 +640 427 +500 375 +500 333 +640 508 +640 480 +500 400 +640 427 +640 480 +480 640 +640 427 +480 640 +640 480 +383 640 +640 439 +640 480 +640 427 +640 480 +500 338 +375 500 +640 640 +640 480 +640 426 +480 640 +367 640 +626 640 +480 640 +640 426 +336 640 +640 376 +480 640 +640 559 +500 400 +640 427 +640 427 +640 426 +640 425 +640 480 +640 480 +640 429 +477 640 +640 480 +640 438 +375 500 +640 480 +500 333 +612 612 +640 360 +480 640 +640 480 +493 640 +640 427 +640 363 +640 481 +480 640 +375 500 +640 429 +478 640 +640 480 +640 427 +640 372 +640 427 +640 427 +480 640 +640 427 +459 640 +500 335 +640 428 +640 480 +640 639 +640 432 +500 375 +500 333 +500 333 +500 400 +640 426 +640 480 +640 640 +640 478 +640 480 +640 426 +640 360 +640 480 +640 426 +640 428 +640 480 +640 536 +500 604 +640 480 +480 640 +500 375 +500 375 +500 332 +640 339 +612 612 +640 480 +640 480 +640 458 +427 640 +480 640 +640 424 +640 426 +480 640 +435 500 +428 640 +640 480 +500 345 +425 640 +640 480 +427 640 +429 640 +612 612 +640 427 +480 640 +612 612 +610 411 +640 427 +640 381 +333 500 +480 640 +640 393 +640 427 +640 522 +640 562 +640 480 +500 375 +640 427 +612 612 +375 500 +640 426 +425 640 +480 640 +612 612 +424 640 +640 512 +500 375 +427 640 +426 640 +612 612 +640 480 +640 480 +280 500 +500 333 +640 480 +640 427 +640 427 +640 548 +640 480 +640 428 +640 442 +640 628 +640 431 +640 427 +483 640 +640 480 +500 280 +640 480 +480 640 +457 640 +640 480 +640 480 +640 400 +500 375 +420 640 +640 428 +640 424 +500 332 +500 289 +428 640 +432 640 +640 480 +640 404 +640 480 +380 500 +500 375 +640 427 +640 520 +640 480 +640 480 +640 423 +500 333 +640 480 +640 427 +640 476 +640 426 +500 333 +640 424 +640 480 +500 375 +480 640 +640 426 +375 500 +457 640 +640 432 +640 480 +640 488 +640 508 +640 312 +640 368 +640 426 +640 379 +640 426 +640 426 +500 333 +640 480 +640 478 +640 639 +640 425 +640 478 +427 640 +640 480 +640 506 +640 480 +500 335 +640 425 +500 379 +640 427 +500 375 +476 640 +640 426 +500 375 +640 427 +500 335 +426 640 +640 627 +640 480 +640 480 +640 480 +640 425 +640 480 +428 640 +360 640 +640 480 +640 428 +500 375 +640 427 +640 480 +640 493 +640 480 +427 640 +640 426 +500 254 +590 443 +640 480 +360 640 +640 480 +640 408 +640 480 +480 640 +640 480 +425 640 +640 449 +425 640 +640 640 +640 480 +635 640 +640 427 +640 360 +640 480 +640 383 +640 480 +375 500 +640 427 +640 427 +640 427 +640 426 +640 360 +640 424 +640 427 +640 640 +480 640 +640 480 +640 428 +640 427 +640 480 +640 480 +640 480 +640 427 +480 640 +640 512 +640 294 +640 428 +480 640 +640 640 +640 424 +640 426 +640 426 +640 480 +640 480 +640 480 +640 480 +640 451 +551 640 +612 612 +427 640 +500 375 +640 426 +640 426 +640 426 +493 500 +428 640 +640 480 +640 427 +480 640 +640 480 +480 640 +640 480 +480 640 +640 427 +640 480 +640 426 +640 428 +640 480 +640 480 +640 360 +640 480 +640 428 +640 427 +640 480 +640 428 +640 424 +480 640 +640 425 +640 425 +640 480 +640 478 +640 480 +640 480 +640 480 +612 612 +480 640 +640 398 +500 375 +427 640 +480 640 +640 548 +640 426 +640 504 +480 640 +640 427 +640 478 +427 640 +640 427 +640 429 +500 333 +286 427 +612 612 +500 375 +563 640 +454 289 +429 640 +640 427 +427 640 +640 640 +500 375 +426 640 +500 281 +640 387 +640 428 +640 427 +640 426 +480 640 +480 640 +640 480 +640 425 +640 425 +640 480 +429 640 +640 426 +528 640 +640 428 +640 426 +500 335 +640 512 +500 375 +640 480 +640 428 +640 230 +640 428 +640 457 +333 500 +500 321 +640 480 +640 427 +640 480 +612 612 +480 640 +640 481 +640 427 +480 640 +640 427 +640 481 +488 500 +640 427 +640 403 +640 433 +640 480 +640 427 +480 640 +640 427 +426 640 +640 480 +640 480 +210 126 +640 480 +640 410 +428 640 +375 500 +500 335 +375 500 +640 480 +500 375 +640 427 +640 480 +500 333 +640 427 +480 640 +429 640 +640 480 +480 640 +480 329 +500 333 +500 375 +640 480 +360 480 +640 416 +640 480 +480 640 +640 400 +461 640 +500 333 +640 396 +424 640 +500 375 +640 425 +612 612 +640 427 +640 448 +640 241 +640 426 +500 350 +640 427 +427 640 +640 424 +500 375 +640 492 +640 425 +640 434 +640 425 +216 301 +640 428 +640 480 +500 371 +500 333 +640 428 +481 640 +480 640 +640 480 +640 322 +640 427 +640 478 +427 640 +640 427 +640 480 +439 640 +640 427 +640 480 +480 640 +640 426 +500 333 +640 427 +640 429 +640 427 +640 480 +500 375 +640 427 +640 497 +480 640 +640 463 +480 640 +356 500 +500 375 +640 428 +480 640 +500 289 +640 427 +640 480 +640 436 +427 640 +640 480 +640 640 +640 418 +480 640 +640 426 +375 500 +640 480 +640 427 +640 427 +480 640 +640 480 +640 320 +480 640 +640 426 +640 428 +640 480 +640 426 +640 426 +640 457 +640 427 +640 427 +640 457 +480 640 +448 298 +640 480 +640 426 +640 483 +640 480 +458 640 +640 480 +333 500 +640 403 +640 480 +640 427 +640 360 +640 569 +360 640 +612 612 +640 480 +640 478 +640 424 +640 427 +640 427 +640 359 +640 480 +640 548 +612 612 +375 500 +333 500 +640 429 +640 480 +640 480 +480 640 +428 640 +640 426 +640 399 +640 480 +640 427 +517 388 +640 429 +640 427 +640 480 +640 424 +640 426 +640 425 +480 640 +640 480 +640 360 +640 427 +640 425 +425 640 +640 480 +640 414 +480 640 +640 480 +640 480 +640 427 +640 480 +612 612 +612 612 +500 375 +426 640 +640 426 +640 480 +640 394 +640 427 +612 612 +426 640 +640 428 +640 480 +375 500 +640 480 +640 352 +500 332 +640 480 +443 640 +640 427 +640 424 +446 640 +640 368 +640 640 +480 640 +531 640 +640 480 +478 640 +640 426 +640 427 +640 480 +333 500 +500 391 +612 612 +640 428 +457 640 +640 427 +500 375 +640 428 +500 500 +640 480 +640 427 +640 457 +426 640 +640 480 +640 427 +640 480 +480 640 +480 640 +640 588 +640 480 +612 612 +427 640 +640 425 +640 480 +500 375 +640 514 +640 480 +480 640 +640 427 +640 427 +640 360 +640 479 +500 329 +640 516 +640 424 +640 480 +640 604 +480 640 +640 480 +480 640 +640 427 +500 375 +500 333 +323 500 +640 480 +640 480 +640 427 +640 428 +640 258 +640 480 +640 480 +640 480 +640 472 +640 426 +640 426 +500 375 +640 425 +480 640 +494 640 +640 426 +640 480 +500 375 +388 640 +640 480 +640 480 +640 427 +640 427 +427 640 +512 640 +640 427 +365 500 +494 640 +640 259 +640 427 +640 400 +640 480 +425 640 +612 612 +640 480 +640 427 +640 480 +640 427 +480 640 +640 427 +640 480 +640 400 +640 640 +640 428 +640 480 +640 428 +640 480 +640 491 +426 640 +640 427 +640 480 +480 640 +640 427 +640 480 +640 427 +480 640 +427 640 +427 640 +640 427 +500 375 +640 480 +480 640 +481 640 +640 359 +640 480 +612 612 +640 427 +640 480 +500 333 +640 427 +428 640 +640 361 +640 402 +640 427 +500 375 +427 640 +640 427 +640 428 +640 480 +640 396 +500 375 +640 417 +640 411 +640 426 +640 427 +640 480 +500 375 +640 427 +640 427 +427 640 +640 427 +640 480 +427 640 +427 640 +640 480 +640 424 +640 338 +640 480 +480 640 +640 428 +640 480 +640 426 +640 426 +500 475 +640 427 +640 468 +640 427 +480 640 +640 480 +640 424 +640 427 +516 387 +426 640 +628 406 +640 427 +478 640 +640 364 +500 333 +480 640 +640 427 +640 358 +640 359 +519 640 +429 640 +640 457 +640 457 +640 427 +375 500 +640 418 +640 427 +640 394 +427 640 +500 375 +640 425 +561 640 +480 640 +640 348 +640 428 +500 363 +640 427 +513 640 +640 424 +500 281 +640 360 +427 640 +640 360 +640 480 +640 426 +500 500 +640 428 +640 498 +640 342 +640 483 +480 640 +640 480 +640 427 +612 612 +612 612 +612 612 +640 480 +640 640 +640 480 +640 425 +480 640 +640 424 +640 480 +480 640 +640 480 +640 425 +500 333 +640 425 +500 380 +640 480 +426 640 +640 426 +640 413 +640 427 +480 640 +449 640 +640 427 +588 640 +640 480 +640 431 +640 426 +640 480 +427 640 +500 362 +640 480 +500 375 +500 345 +427 640 +640 462 +640 428 +640 427 +640 514 +640 480 +640 426 +640 480 +495 500 +427 640 +640 480 +640 427 +314 640 +640 426 +376 500 +480 640 +640 426 +428 640 +480 640 +640 419 +325 500 +640 427 +640 427 +640 480 +352 640 +500 375 +375 500 +500 332 +640 480 +640 533 +500 335 +640 604 +500 375 +480 640 +640 477 +640 426 +500 375 +640 427 +426 640 +640 481 +640 427 +640 425 +640 480 +612 612 +640 427 +640 480 +512 640 +458 640 +429 640 +640 429 +640 427 +640 478 +640 427 +500 246 +640 480 +640 327 +640 427 +640 425 +640 427 +612 612 +640 252 +640 480 +640 480 +640 427 +640 198 +640 491 +640 480 +640 480 +640 480 +640 480 +640 428 +480 640 +640 434 +640 427 +427 640 +640 427 +500 373 +640 457 +640 360 +640 426 +427 640 +635 640 +612 612 +640 480 +640 426 +640 427 +500 333 +500 375 +450 337 +640 427 +640 368 +640 427 +640 480 +640 424 +640 480 +640 567 +500 375 +600 604 +613 640 +640 427 +640 427 +640 471 +640 480 +478 640 +587 640 +640 427 +538 640 +612 612 +640 480 +375 500 +458 640 +427 640 +640 398 +500 375 +640 256 +640 425 +480 640 +640 311 +640 427 +500 279 +640 480 +612 612 +364 500 +375 500 +500 375 +640 480 +640 480 +640 428 +640 640 +456 640 +399 640 +612 612 +640 480 +500 330 +480 640 +640 396 +640 480 +427 640 +640 456 +640 426 +612 612 +500 375 +500 357 +640 480 +450 298 +500 397 +640 480 +640 427 +640 427 +640 480 +640 480 +640 480 +640 621 +500 375 +640 480 +500 331 +640 414 +640 480 +640 359 +640 480 +633 640 +640 480 +640 480 +640 428 +640 396 +480 640 +500 375 +494 500 +640 480 +640 510 +640 520 +640 480 +640 425 +640 427 +426 640 +387 500 +640 480 +640 424 +640 480 +500 332 +640 480 +640 421 +640 425 +640 424 +640 427 +640 480 +640 428 +640 427 +640 480 +640 424 +640 426 +640 360 +640 480 +640 480 +640 427 +640 425 +640 479 +500 334 +491 640 +480 640 +640 480 +640 473 +500 465 +375 500 +640 427 +640 427 +640 426 +640 480 +640 480 +500 329 +640 424 +500 487 +480 640 +640 480 +500 375 +640 480 +559 640 +640 463 +640 425 +428 640 +640 427 +500 382 +640 480 +640 523 +640 541 +640 480 +371 640 +640 426 +640 418 +640 401 +480 640 +425 640 +640 559 +500 490 +640 480 +428 640 +640 427 +640 427 +640 640 +640 427 +640 360 +480 640 +640 427 +341 500 +640 480 +426 640 +333 500 +640 480 +640 427 +480 640 +640 441 +640 426 +640 427 +640 480 +334 500 +640 424 +640 449 +640 419 +640 425 +640 427 +366 500 +322 500 +480 640 +448 640 +500 429 +640 425 +640 480 +640 480 +427 640 +478 640 +640 331 +480 640 +375 500 +640 480 +640 529 +640 426 +640 480 +640 480 +375 500 +425 640 +640 427 +640 480 +461 640 +640 428 +640 479 +640 427 +424 640 +640 427 +640 480 +500 359 +480 640 +640 427 +640 427 +480 640 +640 480 +640 458 +640 394 +640 425 +612 612 +500 375 +640 640 +480 640 +427 640 +640 408 +612 612 +640 427 +480 640 +640 426 +640 480 +640 593 +558 640 +640 481 +640 480 +640 426 +640 424 +640 480 +640 480 +500 375 +640 480 +500 424 +176 144 +640 427 +640 480 +640 480 +640 480 +640 426 +640 480 +480 640 +333 240 +427 640 +640 426 +640 480 +640 476 +640 480 +640 426 +640 427 +621 640 +640 480 +640 480 +640 426 +640 427 +640 480 +500 333 +375 500 +480 640 +640 480 +640 427 +640 427 +500 500 +640 423 +640 425 +640 480 +640 480 +640 427 +640 427 +640 425 +612 612 +640 426 +640 480 +640 425 +640 427 +640 640 +640 480 +500 375 +640 426 +500 271 +480 640 +500 375 +640 482 +640 427 +480 640 +640 427 +640 427 +640 480 +640 414 +640 427 +640 398 +640 480 +640 433 +640 426 +640 427 +480 360 +640 427 +640 480 +640 480 +480 640 +640 464 +612 612 +480 640 +640 480 +640 426 +640 480 +640 480 +640 480 +640 482 +500 386 +640 480 +500 377 +640 480 +640 427 +640 480 +640 480 +480 640 +424 640 +640 480 +640 427 +500 333 +640 424 +480 640 +500 333 +640 480 +640 400 +427 640 +640 427 +500 335 +640 416 +428 640 +640 427 +640 427 +500 333 +640 228 +640 426 +500 337 +480 640 +640 480 +640 424 +480 640 +500 409 +640 640 +640 640 +478 640 +411 500 +640 426 +640 427 +640 471 +640 480 +640 426 +640 403 +640 427 +640 428 +640 480 +640 480 +443 640 +640 548 +640 480 +640 480 +640 480 +480 640 +640 427 +480 640 +480 640 +640 298 +640 480 +480 640 +640 429 +640 458 +640 480 +640 427 +480 640 +640 480 +640 488 +499 640 +375 500 +640 480 +640 476 +640 427 +640 480 +640 456 +640 480 +500 375 +640 640 +500 375 +640 480 +357 500 +640 522 +480 640 +332 500 +480 640 +640 480 +640 427 +500 375 +426 640 +640 426 +640 427 +640 480 +500 375 +480 640 +640 428 +640 480 +480 640 +480 640 +640 428 +640 480 +500 379 +640 480 +427 640 +500 344 +640 424 +640 640 +427 640 +640 427 +500 375 +640 354 +426 640 +640 480 +640 427 +640 427 +640 480 +640 480 +640 480 +480 640 +375 500 +599 640 +640 440 +640 640 +427 640 +640 441 +448 336 +500 375 +500 375 +640 480 +500 332 +640 480 +640 457 +336 448 +500 281 +480 640 +640 480 +427 640 +640 433 +396 640 +500 500 +480 640 +640 480 +640 480 +640 425 +480 640 +640 425 +640 427 +500 375 +640 480 +640 360 +480 640 +500 375 +512 640 +640 418 +500 431 +500 332 +640 400 +640 458 +640 425 +500 333 +640 360 +480 640 +640 394 +640 360 +500 375 +640 480 +640 359 +640 426 +640 425 +500 333 +640 512 +640 428 +427 640 +640 480 +480 640 +640 480 +494 640 +427 640 +480 640 +640 479 +640 427 +640 640 +640 427 +640 480 +480 640 +640 427 +640 480 +640 428 +426 640 +640 424 +640 480 +640 427 +640 426 +640 425 +640 360 +640 427 +640 480 +640 478 +640 425 +480 640 +426 640 +640 434 +500 375 +640 427 +427 640 +640 387 +640 424 +480 640 +494 640 +640 399 +640 465 +501 640 +640 480 +640 427 +594 640 +500 375 +640 414 +640 480 +640 479 +640 360 +640 480 +480 640 +480 640 +375 500 +480 640 +640 361 +424 640 +640 425 +640 424 +640 427 +640 427 +640 480 +380 500 +640 428 +640 480 +640 480 +640 479 +640 361 +640 480 +640 480 +640 415 +429 640 +640 427 +640 480 +500 375 +640 424 +500 373 +500 375 +431 640 +480 640 +428 640 +640 416 +640 424 +640 420 +640 424 +457 640 +480 640 +640 476 +500 319 +640 427 +640 480 +640 480 +640 480 +424 640 +640 427 +640 586 +640 480 +640 413 +375 500 +640 427 +640 424 +500 375 +640 480 +640 480 +428 640 +375 500 +288 432 +640 479 +640 427 +640 479 +640 464 +640 401 +480 640 +640 480 +427 640 +640 424 +640 451 +628 640 +640 425 +640 426 +500 375 +500 333 +482 640 +479 640 +427 640 +640 480 +640 427 +640 428 +640 427 +500 375 +640 480 +640 427 +500 375 +640 480 +640 480 +640 419 +428 640 +500 375 +640 640 +640 499 +640 427 +640 426 +640 408 +640 427 +640 425 +640 640 +640 427 +640 425 +404 500 +640 425 +640 425 +480 640 +640 480 +640 427 +640 480 +640 640 +640 480 +500 375 +640 618 +519 640 +480 640 +480 640 +640 480 +500 332 +426 640 +333 500 +640 480 +640 427 +640 480 +640 480 +500 311 +640 480 +640 480 +640 427 +640 480 +640 426 +640 480 +484 640 +480 640 +640 384 +424 640 +427 640 +640 480 +640 433 +640 575 +640 640 +640 419 +500 376 +640 427 +640 480 +333 500 +640 480 +640 427 +480 640 +480 640 +500 326 +640 480 +640 480 +640 453 +462 640 +640 353 +640 424 +640 424 +640 480 +640 427 +640 360 +640 368 +640 480 +640 427 +640 480 +640 427 +640 427 +640 434 +640 428 +640 427 +427 640 +500 400 +427 640 +640 431 +400 239 +640 426 +640 427 +480 640 +640 557 +480 640 +640 480 +640 424 +427 640 +640 427 +425 640 +640 360 +640 358 +640 480 +640 480 +640 425 +500 333 +524 640 +375 500 +640 427 +500 333 +640 440 +640 533 +640 427 +640 480 +640 426 +633 640 +640 502 +640 480 +640 428 +640 359 +640 425 +640 480 +640 480 +480 640 +640 480 +640 480 +640 520 +640 480 +480 640 +640 426 +640 480 +478 640 +640 414 +640 480 +478 640 +640 480 +640 488 +480 640 +375 500 +640 424 +640 427 +640 480 +640 480 +427 640 +427 640 +640 480 +427 640 +512 640 +640 480 +424 640 +500 252 +640 427 +640 425 +428 640 +640 427 +427 640 +425 640 +375 500 +640 480 +640 428 +640 640 +640 480 +480 640 +500 337 +640 427 +640 480 +640 383 +640 427 +500 375 +500 333 +640 480 +500 375 +494 640 +640 480 +640 512 +640 425 +500 375 +500 332 +640 427 +640 480 +612 612 +640 640 +640 480 +640 427 +640 427 +480 640 +640 480 +640 427 +500 375 +640 480 +640 480 +640 480 +640 427 +480 640 +333 500 +640 480 +640 480 +428 640 +640 427 +640 427 +480 640 +640 461 +500 375 +640 480 +640 363 +640 427 +640 574 +640 426 +640 480 +375 500 +640 480 +640 360 +640 395 +600 402 +640 480 +640 360 +500 500 +640 428 +640 425 +640 480 +640 480 +640 480 +480 640 +640 426 +640 480 +640 482 +640 361 +640 480 +480 640 +640 434 +640 425 +480 640 +640 427 +640 425 +640 428 +500 375 +640 425 +500 332 +640 480 +500 375 +640 431 +640 425 +640 427 +640 480 +640 485 +640 480 +512 640 +480 640 +500 375 +640 427 +640 425 +462 640 +640 425 +500 334 +640 480 +375 500 +549 640 +640 351 +500 375 +640 480 +480 319 +640 360 +640 427 +480 640 +640 480 +640 427 +640 426 +640 427 +640 439 +640 329 +640 480 +640 426 +500 500 +427 640 +640 480 +640 480 +640 480 +640 428 +640 424 +640 480 +480 640 +640 426 +640 480 +640 427 +368 640 +640 456 +640 480 +427 640 +640 480 +640 458 +640 427 +480 640 +429 640 +640 435 +640 480 +640 428 +640 425 +640 403 +640 514 +640 424 +640 512 +500 375 +640 512 +640 462 +640 427 +480 640 +640 480 +640 426 +640 504 +429 640 +426 640 +612 612 +500 333 +640 426 +640 422 +640 269 +640 427 +640 480 +640 425 +640 400 +427 640 +640 426 +640 480 +640 478 +480 640 +640 480 +640 486 +640 427 +458 640 +640 425 +640 503 +332 500 +426 640 +432 305 +480 640 +640 480 +640 480 +640 428 +375 500 +500 333 +426 640 +500 376 +640 428 +500 213 +640 479 +640 429 +598 640 +640 373 +473 640 +640 480 +640 640 +612 612 +640 480 +640 480 +640 480 +640 427 +640 427 +402 640 +640 480 +640 425 +640 427 +640 378 +640 428 +640 427 +640 361 +500 333 +640 427 +640 427 +480 640 +427 640 +640 426 +480 640 +640 450 +612 612 +640 553 +640 480 +640 425 +640 439 +640 428 +640 428 +640 430 +500 352 +640 418 +479 640 +640 427 +640 639 +640 480 +640 427 +640 427 +640 480 +612 612 +640 480 +427 640 +427 640 +640 316 +640 428 +500 375 +640 480 +640 424 +640 427 +500 333 +428 640 +500 334 +640 480 +500 375 +640 426 +500 331 +640 480 +640 458 +640 478 +612 612 +640 480 +427 640 +427 640 +640 426 +427 640 +612 612 +477 640 +640 428 +640 427 +640 427 +640 427 +640 448 +640 427 +640 427 +512 640 +640 426 +640 480 +640 493 +640 427 +640 427 +500 333 +640 283 +640 360 +640 457 +303 500 +500 333 +640 513 +500 375 +640 425 +640 304 +612 612 +640 480 +640 424 +500 375 +333 500 +640 480 +640 426 +480 640 +500 375 +500 381 +640 480 +640 480 +640 570 +500 375 +640 427 +480 640 +640 480 +640 480 +640 480 +640 480 +640 427 +500 375 +640 427 +640 426 +640 480 +480 640 +480 640 +640 411 +640 426 +640 427 +640 480 +480 640 +640 427 +500 291 +350 500 +640 360 +467 640 +429 640 +640 441 +427 640 +500 216 +640 480 +480 640 +640 480 +640 467 +640 480 +480 640 +311 640 +640 480 +640 427 +640 480 +640 480 +500 334 +640 427 +640 426 +640 458 +480 640 +640 479 +640 424 +513 640 +640 480 +640 360 +640 480 +318 480 +640 427 +612 612 +640 425 +640 400 +640 427 +640 480 +480 640 +500 331 +357 500 +640 480 +480 640 +640 480 +640 443 +640 480 +640 426 +640 480 +500 367 +640 433 +480 640 +640 480 +640 427 +640 427 +500 333 +640 479 +640 480 +640 428 +425 640 +640 367 +375 500 +500 366 +480 640 +640 480 +640 481 +480 640 +640 427 +427 640 +427 640 +640 510 +640 481 +375 500 +640 480 +359 640 +640 264 +640 426 +480 640 +640 480 +640 458 +500 416 +640 429 +640 426 +640 480 +640 425 +640 480 +640 480 +640 480 +640 383 +160 144 +640 427 +640 425 +640 428 +427 640 +640 480 +640 426 +640 427 +500 333 +333 500 +640 427 +425 640 +640 461 +640 428 +640 427 +640 321 +640 405 +427 640 +375 500 +640 480 +640 427 +640 426 +640 480 +640 427 +480 640 +640 432 +640 427 +640 361 +640 428 +640 480 +640 528 +480 640 +640 424 +640 426 +640 320 +640 336 +640 429 +427 640 +640 425 +500 375 +500 332 +640 427 +500 375 +640 427 +640 426 +640 305 +640 427 +500 375 +640 480 +301 500 +640 480 +640 416 +500 334 +640 480 +640 480 +640 425 +640 480 +425 640 +640 426 +378 500 +640 434 +375 500 +640 480 +640 480 +640 427 +640 478 +640 573 +481 640 +640 480 +427 640 +640 427 +460 500 +640 480 +640 480 +428 640 +640 478 +640 480 +640 480 +640 401 +500 500 +500 375 +640 424 +500 333 +640 426 +500 500 +640 379 +457 640 +640 466 +640 480 +500 333 +640 427 +427 640 +640 478 +640 426 +640 640 +640 426 +640 425 +640 427 +426 640 +525 640 +640 271 +612 612 +480 640 +640 480 +640 480 +640 360 +640 427 +640 480 +640 480 +375 500 +640 480 +640 480 +640 480 +640 434 +480 640 +640 427 +640 359 +500 375 +640 480 +640 480 +640 480 +640 480 +500 375 +640 480 +640 480 +427 640 +480 640 +640 396 +383 640 +220 222 +640 427 +480 640 +640 480 +640 326 +640 521 +640 427 +640 480 +640 426 +640 478 +640 480 +640 427 +640 427 +640 533 +360 640 +640 480 +640 480 +640 443 +500 375 +640 306 +480 640 +500 332 +640 426 +640 479 +640 488 +640 427 +480 640 +640 400 +640 400 +640 480 +640 640 +427 640 +640 427 +640 480 +425 640 +640 480 +640 425 +640 427 +440 640 +640 427 +640 425 +640 640 +640 425 +640 480 +640 426 +513 640 +640 427 +640 581 +640 360 +640 480 +640 427 +425 640 +500 332 +640 480 +640 480 +640 428 +640 426 +640 480 +640 556 +640 428 +640 480 +640 427 +640 480 +427 640 +426 640 +640 463 +640 433 +424 640 +640 427 +640 480 +500 333 +640 426 +500 344 +640 480 +640 427 +640 427 +640 427 +333 500 +640 480 +640 427 +640 480 +640 414 +375 500 +444 640 +500 333 +640 253 +640 462 +427 640 +640 480 +640 480 +427 640 +640 480 +500 350 +640 427 +640 427 +640 510 +478 640 +640 503 +640 480 +640 360 +640 424 +612 612 +376 640 +480 640 +640 427 +500 375 +425 640 +500 333 +333 500 +640 480 +640 480 +500 375 +640 480 +640 427 +640 480 +500 324 +427 640 +624 640 +640 480 +640 428 +640 480 +500 358 +640 418 +640 427 +640 427 +640 427 +612 612 +640 427 +640 427 +490 640 +428 640 +600 600 +640 424 +640 506 +480 640 +480 640 +640 478 +640 478 +640 386 +640 425 +478 640 +640 427 +640 480 +640 480 +375 500 +640 480 +427 640 +640 427 +640 427 +640 426 +640 427 +640 480 +500 375 +427 640 +640 426 +640 480 +427 640 +640 427 +640 437 +427 640 +640 480 +374 500 +500 375 +640 428 +640 480 +480 640 +640 640 +424 640 +500 238 +640 426 +500 375 +640 427 +640 480 +640 425 +500 500 +542 640 +640 480 +500 333 +433 640 +480 640 +500 280 +640 427 +500 330 +427 640 +640 426 +640 427 +481 640 +640 426 +640 409 +640 480 +640 428 +640 425 +427 640 +425 640 +640 480 +480 640 +640 383 +640 480 +427 640 +640 480 +480 640 +640 426 +575 434 +640 424 +640 427 +480 640 +478 640 +640 480 +640 360 +604 640 +640 361 +426 640 +640 427 +427 640 +640 480 +480 640 +375 500 +640 361 +446 640 +427 640 +640 426 +473 640 +426 640 +480 640 +640 451 +640 418 +640 427 +500 322 +640 480 +417 640 +640 427 +640 425 +500 374 +640 466 +640 480 +640 372 +640 471 +640 480 +480 640 +640 453 +640 344 +640 427 +640 603 +500 375 +640 480 +640 640 +480 640 +640 427 +640 480 +640 383 +640 480 +500 333 +640 480 +480 640 +438 640 +640 480 +640 480 +612 612 +375 500 +640 484 +500 314 +640 468 +428 640 +640 482 +640 429 +500 500 +480 640 +640 480 +640 424 +640 480 +640 426 +640 480 +640 424 +640 424 +640 427 +640 427 +429 640 +640 425 +427 640 +640 427 +640 478 +640 640 +500 375 +640 427 +480 640 +640 338 +640 427 +640 427 +640 480 +640 480 +640 427 +640 428 +640 493 +421 640 +640 427 +426 640 +640 513 +640 360 +640 480 +640 480 +640 480 +426 640 +512 640 +640 512 +640 426 +640 480 +426 640 +640 428 +640 427 +480 640 +640 464 +640 480 +640 478 +640 480 +640 480 +612 612 +640 640 +500 375 +500 375 +640 480 +640 461 +640 501 +338 450 +640 427 +640 425 +640 379 +640 427 +640 428 +640 384 +640 480 +640 427 +639 640 +640 427 +428 640 +640 482 +500 333 +640 427 +640 361 +629 640 +500 333 +640 427 +500 375 +480 640 +427 640 +640 521 +413 640 +640 428 +480 640 +640 480 +475 640 +640 426 +500 331 +640 373 +640 438 +427 640 +640 429 +640 480 +640 480 +500 493 +640 427 +640 478 +341 595 +480 640 +500 375 +640 480 +500 500 +480 640 +640 480 +640 480 +428 640 +640 426 +640 480 +640 478 +640 427 +480 640 +375 500 +480 640 +640 480 +640 480 +640 480 +481 640 +640 373 +640 480 +640 480 +612 612 +640 480 +500 426 +640 424 +500 407 +480 640 +640 426 +640 480 +640 475 +640 439 +640 480 +640 418 +640 481 +640 426 +640 480 +334 500 +640 384 +500 375 +423 640 +512 640 +500 334 +640 417 +612 612 +640 480 +640 432 +640 427 +640 386 +428 640 +640 480 +640 480 +640 480 +640 478 +640 480 +640 480 +640 426 +640 426 +480 640 +500 332 +640 427 +640 480 +427 640 +640 429 +612 612 +423 640 +640 360 +640 480 +640 480 +480 640 +640 425 +640 428 +480 640 +640 426 +640 480 +640 480 +640 480 +640 480 +500 375 +640 480 +334 500 +395 640 +640 480 +640 480 +500 375 +640 480 +500 375 +640 480 +640 480 +640 480 +640 483 +640 480 +640 480 +428 640 +450 391 +424 640 +478 640 +640 480 +500 375 +426 640 +640 464 +640 429 +640 427 +640 433 +640 427 +500 375 +640 480 +480 640 +427 640 +640 604 +640 474 +640 640 +640 427 +640 480 +640 427 +640 427 +480 640 +640 427 +427 640 +640 480 +640 480 +480 640 +640 360 +640 640 +640 480 +640 427 +640 428 +640 427 +640 424 +640 361 +640 480 +640 480 +640 434 +612 612 +500 375 +640 426 +640 427 +640 480 +640 427 +640 360 +640 640 +500 375 +640 427 +640 480 +640 480 +640 481 +640 427 +640 474 +640 427 +640 471 +480 640 +612 612 +640 427 +500 333 +640 426 +640 428 +480 640 +640 480 +565 640 +640 427 +480 640 +640 424 +640 481 +428 640 +640 480 +640 427 +640 480 +640 400 +640 480 +425 640 +640 480 +640 480 +333 500 +640 427 +640 480 +612 612 +640 427 +480 640 +640 480 +640 480 +434 640 +640 480 +640 414 +640 480 +640 480 +480 640 +500 359 +396 640 +480 640 +579 640 +640 480 +423 640 +640 640 +640 361 +640 428 +640 478 +640 480 +397 640 +640 341 +480 640 +640 427 +640 480 +640 480 +480 640 +640 480 +500 375 +640 426 +640 480 +500 332 +640 480 +640 480 +640 431 +640 427 +640 480 +640 427 +640 428 +516 640 +640 426 +640 484 +640 360 +480 640 +640 426 +640 457 +361 640 +640 461 +601 640 +640 509 +640 427 +640 426 +425 640 +640 480 +612 612 +640 427 +640 426 +640 480 +640 526 +427 640 +640 426 +600 600 +640 427 +640 480 +640 425 +423 640 +640 480 +500 375 +529 640 +459 640 +333 500 +640 480 +640 320 +640 429 +640 351 +433 640 +500 375 +640 480 +640 480 +640 480 +640 427 +500 375 +640 480 +640 480 +640 427 +640 480 +640 480 +640 640 +426 640 +427 640 +640 480 +640 480 +640 347 +640 428 +640 360 +427 640 +640 427 +640 480 +424 640 +640 480 +640 640 +612 612 +480 640 +640 480 +428 640 +640 480 +426 640 +640 430 +640 427 +439 640 +500 375 +640 425 +489 640 +640 427 +500 333 +640 480 +640 428 +640 427 +640 512 +640 351 +640 424 +500 328 +640 427 +640 427 +500 334 +640 480 +640 480 +640 405 +500 397 +640 427 +640 403 +640 428 +640 422 +640 480 +640 396 +426 640 +640 499 +640 476 +640 427 +640 439 +599 348 +640 638 +640 386 +640 480 +640 427 +428 640 +426 640 +640 480 +640 449 +640 427 +640 480 +612 612 +640 425 +640 427 +640 480 +640 503 +427 640 +640 426 +612 612 +640 426 +497 640 +612 612 +640 359 +640 428 +426 640 +640 427 +640 480 +500 316 +500 375 +640 425 +640 480 +333 500 +640 480 +640 480 +640 480 +640 426 +427 640 +640 474 +640 480 +542 640 +640 480 +640 427 +640 426 +457 640 +640 488 +480 640 +427 640 +640 433 +640 512 +640 481 +640 427 +480 640 +640 427 +640 478 +480 640 +500 334 +640 464 +612 612 +640 480 +640 480 +427 640 +640 469 +640 478 +640 427 +640 480 +640 480 +480 640 +480 640 +640 336 +640 426 +640 424 +640 475 +640 480 +427 640 +640 423 +428 640 +640 428 +640 427 +640 427 +640 480 +640 480 +640 396 +640 427 +500 333 +640 427 +640 480 +640 427 +640 360 +612 612 +480 640 +640 448 +423 640 +640 564 +640 480 +640 348 +480 640 +493 640 +426 640 +612 612 +500 375 +640 408 +640 539 +640 427 +640 360 +500 375 +640 480 +333 500 +640 480 +400 500 +640 480 +640 480 +640 438 +640 428 +640 434 +640 427 +640 400 +640 480 +375 500 +640 359 +640 640 +640 427 +640 425 +640 359 +640 480 +640 512 +640 483 +640 427 +640 480 +640 480 +640 480 +640 635 +427 640 +640 424 +640 640 +480 640 +426 640 +640 480 +640 427 +640 426 +471 640 +640 480 +480 640 +640 427 +640 433 +640 360 +500 375 +640 574 +612 612 +640 480 +640 522 +640 523 +480 640 +640 427 +640 480 +640 426 +480 640 +640 426 +425 640 +640 480 +640 424 +480 640 +640 640 +640 480 +640 480 +640 429 +507 640 +640 480 +640 480 +426 640 +500 415 +640 480 +640 480 +480 640 +640 449 +640 480 +640 427 +427 640 +480 640 +640 417 +612 612 +500 375 +375 500 +640 396 +500 343 +640 388 +428 640 +480 640 +480 640 +640 287 +480 640 +426 640 +640 427 +640 395 +480 640 +480 640 +481 640 +640 480 +640 480 +640 448 +640 427 +640 480 +500 354 +640 331 +384 512 +640 458 +640 408 +640 480 +640 429 +640 480 +640 526 +640 424 +640 480 +640 499 +640 640 +640 454 +640 427 +640 480 +500 334 +640 271 +640 424 +640 424 +368 640 +478 640 +640 630 +427 640 +640 427 +333 500 +640 424 +640 480 +640 426 +512 640 +640 480 +640 339 +640 395 +640 387 +640 428 +424 640 +640 480 +640 568 +640 425 +500 375 +640 480 +500 375 +640 480 +500 375 +640 480 +640 370 +480 640 +425 640 +640 427 +640 508 +640 278 +640 480 +375 500 +500 375 +640 480 +426 640 +640 480 +640 425 +480 640 +640 426 +640 358 +640 480 +510 640 +361 640 +640 427 +640 480 +640 427 +500 375 +426 640 +640 480 +640 421 +640 473 +640 480 +640 453 +640 431 +640 427 +640 427 +426 640 +576 285 +640 480 +427 640 +640 425 +640 427 +640 640 +640 427 +640 427 +640 359 +640 421 +640 425 +476 640 +640 480 +500 288 +356 500 +640 415 +640 480 +640 426 +640 480 +640 421 +640 522 +640 413 +612 612 +612 612 +640 480 +480 640 +427 640 +640 480 +427 640 +640 478 +640 400 +640 480 +640 480 +640 436 +640 480 +640 587 +500 333 +640 350 +640 480 +640 424 +640 426 +640 438 +428 640 +640 480 +640 425 +640 474 +640 480 +403 640 +500 325 +500 375 +500 375 +640 480 +427 640 +464 640 +640 480 +640 423 +480 640 +640 428 +339 500 +640 480 +500 375 +640 360 +500 333 +640 480 +640 427 +424 640 +640 480 +640 363 +640 459 +640 428 +640 427 +480 640 +640 361 +640 480 +640 418 +640 480 +640 427 +640 427 +375 500 +640 427 +640 480 +640 427 +500 306 +640 427 +640 480 +640 400 +640 427 +640 426 +640 425 +381 500 +500 375 +640 480 +640 480 +640 360 +500 332 +612 612 +640 424 +640 426 +640 480 +448 640 +640 362 +640 415 +500 375 +640 427 +484 640 +640 480 +500 375 +640 427 +493 640 +640 426 +640 429 +640 480 +402 640 +640 480 +640 480 +375 500 +640 426 +640 480 +640 442 +480 640 +640 480 +640 427 +480 640 +640 480 +500 378 +640 424 +640 480 +640 480 +640 480 +640 480 +640 426 +640 480 +640 361 +640 426 +640 359 +640 510 +640 427 +640 461 +640 427 +640 427 +480 640 +332 500 +288 432 +500 375 +640 478 +500 375 +500 375 +612 612 +640 427 +640 427 +426 640 +640 480 +480 640 +640 480 +333 500 +640 424 +480 640 +640 538 +640 420 +500 375 +640 427 +408 306 +480 640 +640 451 +640 480 +640 480 +640 426 +640 383 +640 429 +480 640 +640 480 +640 427 +640 429 +640 341 +383 640 +640 478 +640 480 +500 375 +640 314 +640 480 +640 430 +612 612 +640 427 +640 480 +333 500 +640 429 +640 640 +616 640 +640 480 +478 640 +375 500 +480 640 +500 375 +480 640 +427 640 +640 424 +427 640 +640 425 +640 427 +640 360 +427 640 +480 640 +640 404 +500 352 +640 360 +640 427 +500 399 +640 400 +640 480 +640 426 +640 426 +640 428 +640 480 +480 640 +640 429 +640 480 +640 480 +640 427 +640 480 +640 425 +640 480 +640 428 +523 640 +640 480 +500 375 +640 480 +640 640 +640 420 +640 423 +640 590 +640 427 +640 425 +640 327 +480 640 +640 428 +500 335 +640 425 +480 640 +400 640 +640 427 +640 480 +427 640 +640 426 +640 481 +640 426 +640 427 +500 375 +640 480 +640 427 +428 640 +615 615 +426 640 +480 640 +640 495 +640 480 +480 640 +640 439 +640 480 +640 480 +640 478 +480 388 +640 427 +640 359 +500 375 +640 480 +457 640 +480 640 +377 500 +600 314 +640 478 +640 480 +427 640 +480 640 +640 427 +640 454 +480 640 +640 480 +640 427 +640 414 +500 320 +640 480 +478 640 +640 480 +640 480 +640 640 +389 640 +640 480 +640 480 +640 501 +640 424 +640 480 +640 480 +640 323 +640 408 +640 480 +640 480 +640 425 +640 309 +640 427 +640 480 +640 480 +333 500 +359 640 +640 427 +640 427 +640 427 +640 424 +640 427 +640 480 +640 427 +640 427 +640 426 +640 480 +640 427 +640 427 +640 427 +640 480 +640 426 +431 640 +335 500 +427 640 +640 640 +640 391 +640 480 +640 480 +640 427 +640 427 +640 480 +640 427 +500 333 +640 502 +640 426 +640 427 +426 640 +640 480 +640 480 +640 480 +640 427 +394 640 +478 640 +623 640 +640 480 +640 427 +375 500 +427 640 +375 500 +640 512 +427 640 +480 640 +425 640 +480 640 +640 596 +640 545 +640 480 +640 480 +427 640 +480 640 +640 480 +640 522 +640 480 +375 500 +316 640 +500 396 +415 640 +640 503 +640 480 +640 360 +640 428 +640 426 +300 225 +427 640 +640 400 +500 334 +480 640 +640 480 +640 432 +500 375 +640 480 +500 332 +397 640 +612 612 +428 640 +454 640 +500 399 +640 480 +640 480 +640 279 +640 425 +500 375 +427 640 +640 425 +480 640 +383 640 +640 427 +500 375 +640 426 +640 480 +640 480 +640 480 +640 370 +500 333 +640 512 +640 480 +375 500 +640 480 +640 425 +640 427 +640 480 +500 335 +640 427 +640 480 +640 480 +500 375 +539 640 +640 480 +424 500 +640 427 +640 359 +640 427 +640 424 +640 426 +640 205 +640 424 +480 640 +640 480 +500 332 +640 480 +500 375 +640 427 +640 425 +640 445 +370 500 +640 480 +500 402 +640 427 +640 429 +612 612 +426 640 +500 373 +640 464 +640 480 +427 640 +640 480 +640 426 +640 479 +500 375 +640 426 +640 428 +640 480 +640 428 +640 427 +497 640 +640 480 +480 640 +640 426 +640 480 +425 640 +640 427 +426 640 +640 480 +640 480 +640 480 +640 480 +640 484 +427 640 +640 427 +640 427 +640 584 +612 612 +640 458 +640 427 +428 640 +500 375 +640 480 +427 640 +640 401 +619 640 +640 480 +640 512 +640 480 +424 640 +426 640 +640 478 +640 425 +640 347 +640 480 +640 359 +480 640 +640 428 +640 425 +375 500 +640 480 +640 424 +640 502 +375 500 +640 335 +415 500 +500 375 +640 424 +640 427 +640 480 +500 500 +500 375 +640 427 +640 427 +427 640 +640 480 +640 364 +640 640 +500 322 +480 640 +480 640 +427 640 +500 375 +375 500 +640 480 +640 490 +640 360 +640 480 +640 427 +500 376 +640 480 +373 500 +640 426 +640 480 +640 480 +500 375 +640 398 +640 480 +640 424 +640 480 +640 480 +427 640 +360 640 +640 480 +640 427 +640 480 +640 480 +612 612 +640 449 +426 640 +640 480 +480 640 +640 408 +480 640 +500 375 +640 383 +375 500 +640 425 +480 640 +428 640 +640 427 +500 330 +640 421 +640 427 +581 640 +640 426 +426 640 +640 427 +640 427 +640 388 +640 425 +640 428 +640 640 +640 427 +640 480 +640 480 +427 640 +640 428 +640 427 +640 480 +480 640 +414 640 +640 480 +480 640 +640 480 +640 427 +480 640 +428 640 +427 640 +640 449 +640 426 +640 480 +640 429 +640 467 +640 480 +640 480 +427 640 +640 427 +500 375 +640 478 +640 480 +640 385 +640 359 +360 640 +640 572 +640 480 +640 480 +427 640 +640 425 +640 466 +640 427 +640 640 +640 379 +500 315 +640 422 +640 480 +427 640 +640 424 +640 477 +640 480 +640 446 +375 500 +640 448 +640 360 +480 640 +640 478 +480 640 +640 480 +640 503 +500 375 +640 430 +613 635 +640 424 +640 427 +640 640 +640 427 +640 427 +427 640 +478 640 +409 640 +480 640 +640 480 +640 478 +458 640 +640 478 +640 480 +480 640 +640 423 +640 480 +480 640 +640 480 +640 360 +640 425 +640 360 +640 427 +427 640 +640 512 +640 480 +640 270 +640 360 +359 640 +500 375 +640 427 +500 375 +427 640 +480 640 +640 344 +640 480 +640 480 +640 640 +640 480 +640 640 +640 480 +640 360 +640 428 +640 427 +640 480 +640 427 +360 640 +640 426 +640 468 +640 402 +640 426 +640 425 +640 480 +640 480 +640 424 +640 425 +640 480 +640 579 +640 427 +640 480 +640 480 +640 427 +640 427 +640 480 +640 427 +640 480 +375 500 +640 426 +640 480 +640 480 +640 427 +291 500 +640 426 +640 480 +428 640 +640 426 +640 480 +427 640 +640 480 +480 640 +640 480 +480 640 +640 531 +640 480 +526 640 +640 427 +640 458 +480 640 +640 251 +480 640 +426 640 +640 427 +640 571 +640 427 +640 482 +640 480 +640 480 +427 640 +640 427 +640 571 +640 480 +640 427 +427 640 +640 417 +640 480 +640 480 +448 640 +640 427 +640 480 +631 640 +500 375 +640 425 +539 640 +609 640 +500 375 +478 640 +640 478 +500 375 +640 427 +427 640 +640 478 +640 438 +500 330 +640 426 +375 500 +375 500 +640 154 +480 640 +450 350 +640 480 +640 480 +640 426 +640 391 +640 425 +640 482 +640 480 +500 260 +434 500 +612 612 +500 334 +640 429 +480 640 +640 427 +500 375 +640 480 +640 480 +640 427 +640 480 +640 434 +500 335 +427 640 +640 410 +435 640 +500 375 +640 526 +640 400 +640 480 +640 480 +640 427 +640 411 +640 480 +480 640 +640 502 +640 480 +640 480 +500 375 +500 375 +357 500 +337 500 +640 480 +480 272 +640 478 +640 480 +640 480 +640 480 +428 640 +512 640 +640 428 +427 640 +640 427 +427 640 +640 427 +425 640 +640 428 +640 480 +544 640 +426 640 +640 427 +640 360 +500 375 +640 480 +480 249 +640 432 +640 424 +640 427 +640 480 +640 480 +640 426 +640 360 +640 480 +640 427 +640 427 +640 489 +366 500 +640 426 +640 427 +427 640 +640 426 +640 427 +640 425 +640 427 +500 332 +640 427 +640 480 +640 427 +240 360 +425 640 +640 480 +640 426 +640 427 +640 502 +640 480 +640 457 +640 480 +500 316 +480 640 +640 429 +640 480 +640 480 +640 480 +480 640 +640 461 +640 427 +640 512 +375 500 +429 640 +480 640 +640 414 +640 428 +427 640 +480 640 +518 640 +640 427 +640 480 +425 640 +640 427 +640 359 +640 480 +640 595 +640 480 +640 427 +640 480 +640 501 +500 375 +640 427 +640 415 +450 300 +640 480 +399 640 +640 269 +593 640 +640 480 +640 431 +640 428 +480 640 +480 640 +640 428 +640 426 +480 640 +636 640 +640 428 +426 640 +640 427 +640 427 +640 426 +640 360 +640 480 +500 332 +640 426 +640 427 +640 480 +500 375 +575 344 +640 426 +640 425 +612 612 +500 375 +640 480 +640 425 +640 480 +640 430 +425 640 +427 640 +429 640 +428 640 +640 480 +640 433 +426 640 +640 427 +640 640 +640 427 +640 480 +427 640 +500 375 +640 640 +640 427 +640 427 +640 480 +640 426 +640 479 +640 454 +480 640 +640 427 +640 480 +480 640 +640 480 +640 558 +640 478 +640 480 +480 640 +428 640 +375 500 +640 480 +500 375 +427 640 +424 640 +640 226 +640 480 +640 480 +640 427 +500 375 +480 640 +500 333 +640 427 +500 375 +612 612 +640 426 +426 640 +640 426 +640 360 +640 480 +640 427 +640 365 +500 375 +640 427 +640 427 +426 640 +640 480 +375 500 +640 480 +640 431 +640 480 +451 640 +640 480 +640 480 +640 480 +640 589 +640 425 +640 427 +575 640 +427 640 +640 427 +640 480 +480 640 +640 427 +640 478 +640 480 +640 426 +640 480 +640 429 +500 333 +427 640 +640 480 +426 640 +393 500 +640 426 +640 480 +640 428 +640 427 +500 374 +640 480 +640 393 +500 375 +640 480 +640 396 +640 480 +350 500 +640 497 +640 457 +640 360 +640 480 +640 480 +500 375 +640 480 +588 640 +640 480 +612 612 +640 480 +500 390 +640 503 +640 427 +640 425 +640 321 +640 427 +640 480 +640 360 +640 425 +640 435 +640 450 +640 428 +640 427 +375 500 +640 480 +640 427 +640 480 +500 443 +516 640 +640 427 +640 640 +640 480 +341 640 +640 499 +500 375 +640 640 +640 427 +640 402 +500 375 +428 640 +640 427 +426 640 +426 640 +500 333 +640 480 +640 409 +500 280 +640 427 +480 640 +640 427 +640 427 +640 412 +640 480 +640 480 +640 427 +640 428 +640 427 +427 640 +500 333 +500 338 +640 427 +640 480 +640 480 +640 478 +640 480 +640 480 +333 500 +427 640 +640 425 +640 439 +640 427 +640 480 +640 377 +640 480 +640 480 +640 480 +640 426 +640 429 +640 425 +640 480 +474 640 +640 426 +640 480 +640 425 +640 484 +640 480 +424 640 +500 375 +425 640 +480 640 +640 431 +640 427 +640 426 +640 480 +500 333 +610 390 +480 640 +640 428 +640 427 +640 428 +480 640 +640 480 +640 490 +511 640 +640 426 +500 375 +480 640 +640 640 +640 420 +427 640 +427 640 +640 480 +640 421 +640 480 +640 468 +500 333 +640 480 +640 424 +427 640 +640 424 +640 426 +640 428 +640 287 +480 640 +612 612 +640 480 +500 334 +449 640 +640 480 +640 428 +640 426 +640 433 +640 329 +604 453 +480 640 +640 427 +500 375 +640 360 +633 640 +500 332 +640 480 +640 478 +640 426 +640 425 +640 420 +640 634 +500 333 +375 500 +640 426 +640 507 +640 427 +640 480 +640 480 +640 427 +500 333 +640 526 +640 426 +480 640 +640 480 +640 426 +463 640 +640 427 +640 480 +640 491 +640 397 +640 493 +640 431 +480 640 +640 453 +414 640 +480 640 +640 480 +640 428 +375 500 +640 480 +640 428 +640 480 +640 457 +640 425 +640 426 +640 427 +640 441 +640 427 +640 426 +500 432 +640 427 +640 480 +500 375 +640 427 +411 640 +640 427 +640 480 +427 640 +544 640 +612 612 +426 640 +640 427 +640 434 +640 427 +640 444 +640 424 +640 481 +640 427 +500 375 +480 640 +500 376 +519 640 +640 425 +640 427 +464 640 +640 480 +612 612 +427 640 +480 640 +640 478 +640 480 +500 333 +640 480 +640 425 +640 480 +600 409 +640 480 +640 426 +640 480 +640 479 +640 500 +640 425 +640 426 +427 640 +640 480 +640 480 +424 640 +640 396 +640 427 +640 428 +640 480 +640 421 +426 640 +640 429 +480 640 +640 480 +640 480 +640 411 +427 640 +640 480 +640 478 +640 480 +640 424 +640 479 +426 640 +640 519 +640 480 +375 500 +640 480 +640 480 +640 426 +640 484 +500 374 +500 333 +463 500 +640 429 +640 427 +640 427 +640 427 +500 333 +640 427 +640 480 +480 640 +640 480 +612 612 +447 640 +640 480 +640 480 +427 640 +470 640 +640 478 +640 478 +640 480 +640 480 +640 480 +640 427 +640 554 +427 640 +509 640 +640 428 +640 426 +500 279 +640 480 +640 480 +478 640 +640 427 +640 480 +640 414 +640 480 +480 640 +640 479 +640 427 +612 612 +427 640 +640 427 +640 481 +640 427 +500 375 +375 500 +640 480 +640 480 +640 429 +640 359 +640 336 +640 427 +640 427 +640 426 +640 480 +480 319 +640 480 +640 480 +640 427 +480 640 +426 640 +500 333 +612 612 +640 360 +500 300 +550 640 +640 400 +640 360 +500 333 +427 640 +640 428 +593 640 +640 480 +640 444 +640 424 +640 488 +640 478 +480 640 +640 427 +640 426 +640 460 +640 511 +640 356 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +640 427 +640 480 +640 425 +600 400 +640 427 +374 500 +480 640 +640 427 +640 427 +640 475 +425 640 +640 480 +640 434 +640 640 +640 480 +640 319 +640 425 +640 303 +640 468 +612 612 +640 427 +640 427 +640 480 +514 640 +640 427 +500 375 +640 427 +640 480 +640 439 +640 427 +640 480 +640 429 +482 640 +478 640 +550 367 +640 480 +640 427 +640 427 +463 640 +640 480 +640 427 +640 427 +640 427 +640 478 +640 430 +640 427 +640 468 +640 480 +333 500 +640 427 +640 427 +640 425 +640 436 +640 427 +640 579 +640 513 +640 480 +640 480 +500 333 +480 640 +500 375 +375 500 +500 333 +640 426 +375 500 +640 480 +500 349 +640 427 +640 426 +640 480 +640 460 +612 612 +480 640 +612 612 +480 640 +640 424 +612 612 +640 406 +500 333 +480 640 +640 480 +640 427 +640 480 +640 394 +640 480 +640 451 +640 427 +640 426 +480 640 +640 400 +640 480 +640 426 +640 425 +428 640 +640 509 +640 480 +480 640 +480 640 +640 480 +640 427 +640 424 +640 400 +356 500 +480 640 +640 427 +640 426 +640 423 +640 360 +640 480 +640 431 +311 640 +640 478 +640 480 +640 480 +333 500 +640 480 +640 478 +640 478 +640 640 +427 640 +500 335 +480 640 +640 480 +640 480 +375 500 +640 425 +640 426 +640 426 +640 427 +640 427 +640 480 +640 480 +640 428 +640 480 +640 425 +640 480 +500 453 +640 427 +612 612 +375 500 +480 640 +480 640 +468 640 +640 480 +640 457 +428 640 +427 640 +640 480 +640 480 +640 427 +640 431 +640 480 +500 375 +500 332 +476 640 +640 481 +640 427 +640 480 +602 640 +640 480 +640 480 +481 640 +375 500 +640 427 +640 480 +610 640 +428 640 +640 425 +640 426 +640 480 +640 480 +612 612 +640 480 +640 290 +640 480 +640 426 +480 640 +640 424 +426 640 +640 480 +500 399 +640 480 +640 480 +423 640 +500 375 +640 424 +360 640 +640 480 +640 430 +500 375 +640 426 +640 424 +500 333 +640 427 +640 427 +640 396 +640 441 +480 640 +480 640 +640 407 +640 453 +640 480 +640 594 +427 640 +640 427 +640 478 +480 321 +640 480 +640 426 +612 612 +640 640 +640 389 +640 480 +640 511 +640 480 +640 480 +640 480 +480 640 +612 612 +640 360 +640 427 +640 427 +640 426 +640 427 +612 612 +501 640 +640 534 +358 500 +640 480 +640 493 +640 480 +640 427 +640 480 +427 640 +612 612 +640 429 +640 480 +478 640 +612 612 +640 484 +640 480 +640 427 +427 640 +428 640 +640 428 +640 480 +640 640 +455 640 +640 409 +640 480 +640 480 +500 332 +640 427 +400 500 +640 480 +640 426 +640 640 +500 369 +480 640 +640 424 +640 428 +480 640 +640 480 +427 640 +640 480 +640 480 +640 480 +640 427 +425 640 +640 495 +366 640 +640 427 +640 427 +640 427 +640 360 +640 429 +640 427 +640 427 +640 427 +640 480 +423 640 +640 480 +640 480 +640 422 +612 612 +640 480 +640 427 +640 484 +500 377 +640 449 +500 375 +500 333 +640 460 +427 640 +640 426 +640 432 +640 494 +640 426 +333 500 +640 427 +612 612 +640 480 +427 640 +640 360 +640 480 +500 314 +426 640 +640 480 +640 377 +640 480 +450 338 +640 428 +500 375 +640 426 +640 480 +640 510 +640 480 +640 480 +640 480 +640 479 +640 427 +640 480 +500 332 +640 512 +640 480 +640 426 +640 428 +640 480 +640 427 +640 576 +480 640 +640 480 +640 623 +640 480 +640 427 +500 274 +640 480 +426 640 +640 480 +640 480 +640 360 +640 360 +640 254 +427 640 +640 414 +640 423 +640 478 +640 438 +480 640 +640 480 +640 427 +640 480 +428 640 +480 640 +640 428 +428 640 +375 500 +500 338 +640 478 +640 473 +480 640 +640 425 +424 640 +500 500 +640 480 +640 480 +640 427 +480 640 +480 640 +640 425 +640 487 +500 375 +480 640 +640 427 +640 480 +640 480 +640 428 +480 640 +427 640 +640 480 +500 313 +640 427 +640 480 +640 427 +640 427 +426 640 +640 424 +375 500 +480 640 +640 480 +640 427 +500 334 +640 427 +640 427 +640 480 +612 612 +359 640 +640 480 +640 446 +640 427 +640 361 +640 427 +640 427 +612 612 +640 360 +480 640 +640 427 +640 480 +640 428 +640 427 +500 375 +640 426 +640 474 +612 612 +500 375 +640 480 +640 480 +500 375 +480 640 +640 396 +640 510 +640 426 +640 426 +500 333 +640 446 +480 640 +640 480 +640 426 +500 375 +640 480 +400 500 +500 332 +640 427 +612 612 +500 333 +640 431 +640 480 +500 375 +375 500 +430 640 +480 640 +640 480 +640 480 +500 459 +640 428 +443 640 +640 427 +480 640 +640 640 +427 640 +640 428 +640 425 +640 427 +640 427 +480 640 +640 360 +640 480 +457 640 +640 480 +500 375 +640 480 +427 640 +640 427 +640 480 +640 480 +480 640 +640 480 +640 427 +500 400 +640 427 +640 480 +640 425 +640 507 +640 382 +640 427 +640 426 +500 383 +640 347 +426 640 +640 426 +320 240 +640 426 +640 426 +640 421 +640 425 +375 500 +480 640 +640 426 +500 375 +500 333 +427 640 +458 640 +640 534 +375 500 +640 429 +640 480 +640 360 +640 480 +640 457 +500 333 +640 426 +640 427 +480 640 +640 426 +500 333 +640 376 +640 480 +640 480 +640 316 +640 440 +640 381 +640 427 +640 428 +640 480 +640 427 +609 640 +500 375 +640 426 +500 402 +640 427 +240 360 +640 480 +500 334 +640 425 +640 478 +640 638 +640 427 +500 375 +640 480 +640 425 +480 640 +640 425 +640 480 +612 612 +640 480 +640 427 +640 480 +640 480 +640 427 +640 427 +500 400 +480 640 +480 640 +640 314 +640 425 +640 427 +640 480 +500 332 +640 480 +640 427 +480 640 +640 425 +410 640 +640 427 +640 342 +640 480 +600 600 +640 427 +640 360 +640 640 +640 480 +500 336 +640 480 +640 425 +640 427 +640 428 +640 238 +640 427 +640 429 +480 640 +640 428 +640 453 +640 426 +640 428 +640 426 +640 424 +640 426 +640 403 +375 500 +478 640 +640 480 +640 480 +640 427 +640 480 +500 375 +500 400 +333 500 +500 281 +500 333 +427 640 +426 640 +480 640 +274 640 +640 480 +500 383 +640 427 +640 480 +640 383 +500 375 +500 333 +640 480 +640 433 +640 360 +500 333 +640 480 +640 427 +640 424 +500 375 +640 480 +427 640 +418 640 +640 480 +478 640 +640 553 +640 426 +640 424 +640 360 +640 480 +359 640 +427 640 +640 480 +480 640 +331 500 +427 640 +640 427 +640 480 +375 500 +500 375 +640 480 +500 375 +640 427 +640 424 +612 612 +500 332 +640 480 +640 426 +640 426 +500 345 +640 427 +640 425 +640 427 +375 500 +598 640 +640 480 +356 500 +640 480 +640 426 +640 478 +208 160 +500 481 +640 426 +640 426 +640 426 +640 480 +640 424 +480 640 +640 427 +500 294 +640 427 +640 427 +640 436 +640 402 +640 457 +640 480 +640 428 +640 428 +398 640 +426 640 +640 426 +428 640 +426 640 +500 333 +640 427 +640 480 +428 640 +480 640 +640 427 +640 427 +456 640 +501 640 +640 408 +640 480 +640 424 +640 480 +480 640 +640 480 +640 427 +480 640 +640 480 +500 408 +640 429 +480 640 +640 640 +612 612 +640 380 +640 426 +435 640 +640 503 +612 612 +640 480 +640 425 +640 480 +640 480 +640 480 +640 427 +640 426 +640 480 +443 500 +640 480 +640 480 +640 480 +480 640 +640 421 +640 640 +640 427 +640 426 +500 452 +500 333 +640 448 +640 480 +480 640 +640 427 +480 640 +640 480 +427 640 +478 640 +640 427 +640 422 +640 480 +640 424 +640 204 +640 480 +333 500 +480 640 +640 480 +640 425 +640 480 +640 437 +640 480 +462 640 +428 640 +640 480 +500 313 +500 476 +640 428 +640 489 +640 524 +640 426 +640 426 +500 375 +640 302 +640 510 +640 426 +640 360 +640 424 +640 432 +426 640 +488 640 +640 427 +640 376 +450 350 +640 480 +640 480 +500 319 +640 480 +640 359 +375 500 +640 480 +640 480 +640 427 +640 427 +333 500 +640 427 +640 406 +375 500 +427 640 +640 400 +565 584 +640 480 +640 640 +640 427 +335 500 +500 375 +640 448 +640 479 +640 480 +375 500 +640 494 +447 333 +640 457 +334 500 +640 640 +612 612 +640 528 +425 640 +500 375 +480 640 +640 480 +640 640 +640 424 +427 640 +480 640 +640 427 +640 639 +640 480 +640 480 +500 375 +480 640 +427 640 +640 428 +640 426 +640 427 +640 426 +640 424 +480 640 +640 480 +500 333 +383 640 +600 457 +640 216 +640 480 +500 375 +640 480 +640 427 +640 425 +640 480 +427 640 +640 427 +368 640 +640 480 +640 463 +640 425 +640 480 +640 426 +500 364 +640 427 +480 640 +640 483 +600 450 +636 640 +640 480 +640 640 +640 427 +480 640 +375 500 +640 480 +640 427 +640 439 +487 500 +640 425 +640 480 +640 480 +640 480 +640 480 +640 480 +640 356 +480 640 +640 480 +640 360 +640 427 +640 480 +500 333 +500 332 +640 427 +640 427 +640 480 +640 424 +480 640 +640 480 +640 427 +640 480 +640 427 +640 480 +480 640 +640 480 +640 480 +640 425 +433 640 +499 640 +640 480 +640 480 +640 480 +479 640 +640 427 +640 478 +640 429 +500 334 +640 480 +480 640 +640 480 +640 400 +640 427 +640 427 +480 640 +500 375 +640 357 +640 384 +480 640 +640 480 +612 612 +640 427 +640 360 +640 424 +480 640 +500 375 +375 500 +640 480 +480 640 +500 332 +640 640 +640 451 +640 427 +640 480 +640 480 +640 511 +500 357 +640 303 +480 640 +640 480 +500 375 +640 480 +640 390 +564 640 +424 640 +426 640 +640 423 +500 333 +480 640 +640 427 +359 640 +480 640 +640 411 +640 428 +500 375 +640 459 +640 480 +640 480 +640 480 +500 375 +640 427 +640 360 +480 640 +480 640 +640 480 +640 480 +640 427 +640 640 +612 612 +640 427 +425 640 +640 344 +640 427 +640 480 +480 640 +640 478 +640 480 +640 480 +640 429 +375 500 +640 431 +640 426 +480 640 +640 394 +640 427 +640 480 +640 480 +640 536 +640 426 +427 640 +500 404 +500 400 +500 375 +640 427 +640 478 +480 640 +640 479 +640 360 +640 480 +640 427 +612 612 +640 427 +500 375 +640 427 +640 420 +640 427 +640 480 +640 427 +640 425 +640 482 +494 289 +640 425 +640 640 +640 520 +427 640 +640 160 +640 470 +640 480 +640 480 +640 480 +500 375 +640 480 +500 375 +640 401 +500 375 +612 612 +640 360 +640 480 +640 480 +375 500 +640 434 +640 480 +640 480 +640 557 +640 640 +424 640 +427 640 +640 428 +640 411 +427 640 +480 640 +640 427 +640 480 +640 481 +640 480 +640 480 +640 426 +640 480 +640 526 +640 489 +500 375 +640 480 +640 480 +640 426 +640 480 +640 429 +612 612 +427 640 +640 444 +640 480 +640 480 +500 333 +640 396 +400 372 +640 480 +480 640 +640 480 +640 426 +640 480 +640 480 +640 360 +424 640 +427 640 +500 333 +426 640 +500 375 +640 406 +640 429 +640 427 +604 640 +424 640 +640 480 +500 375 +500 375 +640 546 +480 640 +640 406 +375 500 +640 427 +640 480 +640 425 +640 427 +500 375 +357 500 +640 480 +640 480 +640 425 +375 500 +500 400 +640 360 +640 480 +640 423 +640 423 +480 640 +640 480 +600 510 +434 640 +640 427 +640 435 +640 427 +640 480 +640 424 +640 427 +500 375 +640 480 +640 428 +640 427 +612 612 +640 480 +640 434 +640 480 +511 640 +640 427 +333 500 +640 413 +640 640 +640 360 +640 480 +640 427 +640 480 +640 480 +640 426 +640 480 +640 480 +640 425 +640 429 +240 160 +640 480 +612 612 +640 426 +640 360 +480 640 +640 480 +537 640 +640 480 +480 640 +640 426 +640 457 +640 427 +640 516 +640 427 +640 640 +640 480 +640 480 +640 427 +640 427 +640 453 +480 640 +640 428 +480 640 +640 363 +640 480 +541 640 +640 480 +612 612 +326 500 +500 400 +640 640 +640 480 +500 375 +640 427 +640 426 +500 375 +640 424 +375 500 +257 362 +480 640 +480 640 +640 480 +640 360 +640 480 +500 375 +640 420 +640 427 +640 298 +640 480 +640 401 +640 475 +640 427 +640 480 +640 426 +640 427 +610 640 +640 498 +480 640 +640 480 +408 640 +640 427 +500 500 +640 427 +640 480 +480 640 +640 640 +640 640 +500 375 +375 500 +640 480 +500 333 +640 480 +427 640 +640 411 +640 426 +640 426 +640 480 +640 480 +500 346 +640 427 +640 376 +640 360 +640 425 +480 640 +427 640 +500 438 +480 640 +640 426 +640 480 +640 292 +640 428 +640 480 +333 500 +500 462 +480 640 +640 451 +640 427 +468 640 +640 429 +640 480 +500 500 +640 480 +640 427 +427 640 +640 427 +640 427 +640 480 +640 480 +375 500 +640 480 +640 427 +640 340 +640 427 +480 640 +375 500 +500 423 +640 425 +640 554 +500 375 +480 640 +640 505 +640 199 +640 426 +640 427 +640 480 +640 480 +333 500 +640 411 +640 427 +640 480 +500 375 +640 424 +426 640 +480 640 +640 424 +640 480 +640 426 +640 320 +640 425 +500 333 +480 640 +640 480 +375 500 +640 480 +500 400 +343 640 +427 640 +640 480 +640 469 +640 480 +480 640 +640 339 +640 427 +640 427 +513 640 +640 394 +640 416 +640 234 +640 480 +640 427 +640 428 +640 426 +500 375 +500 334 +427 640 +640 480 +640 427 +640 480 +428 640 +500 333 +427 640 +492 500 +640 480 +423 640 +406 640 +640 480 +640 362 +480 640 +640 480 +640 426 +640 480 +640 444 +480 640 +513 342 +412 640 +427 640 +640 480 +640 359 +612 612 +640 480 +640 480 +480 360 +640 425 +640 480 +640 480 +640 598 +640 480 +480 640 +640 480 +640 426 +640 480 +500 374 +640 457 +640 426 +500 333 +500 377 +375 500 +500 375 +640 492 +640 311 +427 640 +640 427 +640 426 +633 640 +640 483 +640 386 +640 427 +640 453 +375 500 +640 320 +640 424 +640 427 +338 500 +640 427 +640 480 +640 480 +640 384 +640 480 +640 426 +375 500 +426 640 +640 480 +640 480 +640 427 +640 427 +640 428 +640 480 +640 426 +640 640 +640 426 +640 480 +640 480 +640 480 +500 345 +640 480 +640 341 +553 640 +480 640 +480 640 +320 240 +500 375 +500 375 +640 482 +640 427 +640 450 +640 480 +640 480 +478 640 +612 612 +640 425 +426 640 +623 640 +640 426 +640 480 +640 451 +640 336 +640 480 +427 640 +640 427 +640 480 +640 480 +640 427 +640 640 +640 512 +640 468 +640 480 +640 480 +640 480 +500 333 +480 640 +480 640 +425 640 +612 612 +640 480 +416 640 +640 457 +640 640 +427 640 +640 428 +480 640 +433 640 +640 425 +640 428 +640 428 +640 373 +500 375 +640 640 +606 640 +457 640 +640 480 +640 480 +640 480 +640 359 +640 512 +640 427 +480 640 +640 476 +640 360 +640 428 +480 640 +640 480 +640 503 +640 427 +640 427 +640 427 +640 488 +500 362 +640 482 +500 375 +640 581 +640 427 +612 612 +640 480 +621 640 +640 480 +640 427 +512 640 +640 425 +640 479 +480 640 +640 640 +640 427 +375 500 +640 480 +427 640 +426 640 +640 427 +640 480 +640 427 +640 424 +500 281 +640 260 +640 457 +480 640 +640 421 +640 480 +481 640 +500 375 +640 640 +428 640 +500 333 +640 427 +480 640 +640 426 +427 640 +500 375 +427 640 +432 288 +640 426 +640 480 +640 427 +375 500 +640 480 +640 425 +640 480 +640 453 +479 640 +640 479 +640 427 +640 352 +640 394 +480 640 +640 640 +640 480 +640 417 +640 494 +640 427 +640 479 +500 375 +640 480 +640 480 +640 426 +426 640 +640 427 +640 480 +640 424 +480 640 +479 640 +640 480 +640 629 +640 478 +640 480 +640 427 +640 430 +640 480 +640 480 +640 480 +640 427 +480 640 +640 480 +480 640 +427 640 +640 420 +640 425 +501 640 +546 640 +640 486 +640 480 +612 612 +640 235 +640 480 +640 429 +640 480 +428 640 +640 480 +640 480 +640 428 +612 612 +404 640 +640 480 +640 427 +640 408 +480 640 +427 640 +500 375 +537 427 +640 426 +360 480 +640 425 +640 480 +640 426 +640 428 +333 500 +334 500 +640 427 +360 480 +640 318 +480 640 +480 640 +640 429 +640 480 +500 243 +500 375 +480 640 +480 640 +640 480 +640 480 +640 456 +640 427 +480 500 +640 426 +640 480 +640 512 +479 640 +640 480 +640 482 +500 333 +640 429 +640 460 +640 428 +640 425 +640 640 +612 612 +640 480 +640 427 +640 427 +500 375 +640 480 +640 427 +427 640 +640 480 +640 480 +640 480 +640 427 +500 499 +640 505 +640 423 +640 480 +640 424 +640 482 +640 427 +640 480 +640 424 +640 427 +480 640 +640 480 +640 541 +480 640 +480 640 +375 500 +428 640 +427 640 +640 480 +500 376 +512 640 +375 500 +640 427 +210 168 +480 640 +640 481 +640 480 +640 427 +370 640 +640 390 +640 412 +640 480 +640 426 +640 425 +375 500 +500 375 +640 428 +640 640 +408 640 +640 427 +640 428 +640 480 +640 427 +500 375 +640 640 +640 427 +640 480 +640 480 +640 426 +499 500 +640 426 +500 332 +640 480 +640 427 +640 480 +640 360 +640 478 +341 500 +640 471 +640 480 +640 427 +615 346 +640 640 +640 480 +640 480 +640 358 +640 425 +640 480 +640 630 +640 427 +640 480 +640 427 +500 335 +531 640 +640 473 +640 427 +640 480 +500 375 +640 480 +640 480 +509 640 +640 431 +640 424 +640 480 +640 480 +640 480 +426 640 +500 375 +480 640 +500 327 +640 480 +500 375 +640 425 +427 640 +414 640 +639 480 +634 640 +612 612 +640 480 +640 480 +640 427 +640 480 +480 640 +640 423 +480 640 +640 426 +640 428 +640 480 +640 480 +640 459 +640 480 +427 640 +480 640 +640 427 +480 640 +640 427 +640 480 +640 480 +640 480 +640 640 +375 500 +640 480 +640 427 +640 480 +640 425 +612 612 +427 640 +483 640 +640 426 +640 419 +640 480 +428 640 +500 400 +640 480 +640 348 +427 640 +640 361 +426 640 +640 436 +333 500 +152 228 +612 612 +462 640 +640 478 +640 480 +640 480 +640 401 +640 427 +640 427 +640 427 +427 640 +640 640 +500 375 +407 640 +640 427 +343 336 +640 480 +500 352 +640 480 +640 428 +640 480 +640 427 +640 425 +354 640 +640 429 +333 500 +298 450 +640 420 +640 480 +427 640 +640 425 +640 427 +480 640 +480 640 +500 331 +500 334 +640 480 +375 500 +640 480 +640 428 +612 612 +640 640 +640 424 +640 480 +640 480 +421 640 +640 480 +390 640 +640 480 +439 640 +640 427 +427 640 +640 480 +500 247 +500 333 +480 640 +640 368 +640 428 +426 640 +480 640 +640 426 +640 403 +640 427 +640 427 +640 480 +640 428 +321 500 +500 333 +640 480 +640 480 +640 480 +413 640 +640 427 +640 427 +334 500 +467 640 +500 375 +480 640 +480 640 +433 640 +500 375 +480 640 +640 424 +640 480 +640 480 +640 480 +375 500 +640 480 +640 428 +640 480 +640 426 +386 640 +640 429 +375 500 +640 426 +640 426 +427 640 +640 480 +640 349 +640 480 +640 480 +640 424 +375 500 +640 374 +640 480 +334 500 +640 480 +640 451 +480 640 +640 430 +640 427 +500 375 +478 640 +520 373 +640 478 +640 427 +612 612 +640 441 +480 640 +640 427 +640 426 +480 640 +640 429 +480 640 +612 612 +640 480 +640 427 +640 426 +480 640 +640 525 +375 500 +640 480 +640 411 +640 428 +640 428 +640 427 +640 427 +535 640 +375 500 +640 427 +640 428 +640 426 +480 640 +640 480 +612 612 +484 500 +640 426 +640 425 +640 427 +500 371 +500 320 +640 427 +480 640 +640 480 +640 424 +640 480 +640 427 +640 301 +500 333 +640 424 +640 480 +427 640 +612 612 +332 500 +640 439 +500 415 +427 640 +640 513 +640 427 +640 426 +640 480 +324 640 +640 480 +640 480 +375 500 +640 427 +640 480 +640 480 +612 612 +640 543 +640 480 +480 640 +640 446 +640 480 +640 480 +473 640 +640 421 +640 427 +640 425 +640 427 +640 427 +640 465 +640 395 +640 446 +640 405 +640 425 +640 375 +640 425 +640 327 +640 480 +427 640 +640 480 +640 427 +500 375 +640 480 +640 480 +428 640 +640 426 +640 480 +640 427 +640 514 +500 335 +640 445 +640 360 +375 500 +640 480 +640 480 +640 480 +640 425 +432 640 +640 425 +640 512 +640 424 +640 427 +640 427 +640 480 +640 480 +640 427 +640 426 +480 640 +640 480 +640 480 +478 640 +640 480 +640 480 +500 333 +500 375 +640 427 +640 426 +500 373 +486 640 +640 496 +640 480 +640 480 +640 480 +640 426 +640 428 +640 427 +640 425 +480 640 +500 375 +640 394 +640 427 +640 428 +640 480 +478 640 +640 480 +640 480 +480 640 +640 474 +640 406 +640 640 +375 500 +640 428 +640 480 +640 480 +500 333 +640 427 +478 640 +640 427 +640 480 +500 375 +234 500 +640 198 +500 375 +640 480 +640 444 +500 375 +480 640 +640 427 +640 640 +640 449 +640 426 +640 480 +500 375 +356 500 +427 640 +375 500 +487 640 +640 427 +640 640 +640 427 +640 436 +640 427 +640 427 +640 421 +640 360 +426 640 +640 430 +640 377 +640 480 +640 480 +640 480 +500 375 +640 480 +640 426 +640 426 +640 481 +640 480 +640 427 +640 444 +640 480 +640 480 +366 640 +500 332 +640 426 +640 480 +478 640 +480 640 +640 426 +427 640 +640 640 +640 427 +480 640 +640 424 +640 430 +612 612 +427 640 +640 640 +612 612 +640 427 +640 480 +480 640 +640 480 +640 427 +640 480 +640 424 +640 480 +640 480 +640 480 +640 480 +425 640 +640 514 +640 427 +640 480 +640 480 +640 426 +500 375 +480 640 +640 425 +500 375 +640 480 +640 480 +480 640 +427 640 +640 480 +500 375 +640 551 +640 427 +640 480 +640 456 +640 480 +335 500 +500 375 +427 640 +480 640 +640 427 +500 375 +640 480 +640 480 +480 640 +500 341 +443 640 +640 395 +640 173 +480 640 +640 448 +640 427 +548 640 +640 480 +640 480 +426 640 +480 640 +480 640 +500 331 +640 427 +640 480 +447 640 +640 480 +640 350 +640 484 +500 338 +640 480 +480 640 +640 425 +500 375 +640 483 +640 359 +640 426 +335 500 +640 426 +640 480 +480 640 +640 427 +640 478 +640 428 +640 480 +640 503 +480 640 +480 640 +640 481 +640 480 +640 238 +640 480 +640 427 +500 274 +640 622 +640 480 +640 427 +375 500 +640 480 +497 640 +640 640 +640 452 +640 426 +500 401 +640 473 +640 424 +640 424 +500 333 +480 640 +640 475 +640 480 +500 400 +640 427 +640 480 +500 347 +640 426 +640 422 +640 480 +640 427 +640 427 +640 425 +433 640 +640 524 +640 453 +640 480 +640 429 +640 480 +500 374 +500 375 +640 427 +426 640 +640 428 +640 428 +640 351 +640 459 +640 480 +640 480 +640 454 +477 640 +500 334 +375 500 +640 426 +640 427 +640 480 +426 640 +640 427 +640 480 +425 640 +640 480 +500 375 +476 640 +640 426 +640 427 +640 480 +640 480 +640 480 +640 468 +640 640 +640 480 +640 426 +640 425 +559 640 +640 398 +640 640 +640 427 +612 612 +640 480 +480 640 +640 480 +612 612 +640 480 +500 332 +640 359 +640 427 +360 640 +640 640 +423 640 +500 334 +640 427 +427 640 +640 427 +640 480 +640 480 +427 640 +480 640 +640 442 +640 480 +640 480 +640 426 +612 612 +640 426 +427 640 +640 470 +427 640 +419 640 +480 640 +640 427 +500 375 +485 640 +640 480 +640 453 +640 480 +640 478 +640 427 +640 480 +640 480 +612 612 +640 480 +425 640 +640 428 +640 427 +640 480 +640 456 +576 640 +640 427 +640 427 +640 480 +640 425 +640 439 +419 640 +480 640 +375 500 +480 640 +640 427 +427 640 +480 360 +500 330 +640 360 +569 640 +640 428 +640 485 +640 496 +640 427 +640 424 +640 594 +640 427 +640 480 +480 640 +640 480 +500 375 +427 640 +640 640 +500 388 +640 428 +640 426 +640 436 +427 640 +500 375 +375 500 +640 480 +640 427 +640 427 +640 480 +500 333 +640 457 +640 426 +640 425 +480 640 +380 640 +640 327 +500 335 +640 480 +640 427 +640 480 +640 425 +434 640 +640 480 +640 480 +640 427 +450 339 +478 640 +480 640 +640 480 +482 640 +640 424 +640 426 +640 512 +612 612 +640 478 +640 480 +640 427 +640 427 +640 427 +640 480 +612 612 +640 480 +500 333 +434 500 +640 446 +640 482 +640 480 +640 480 +640 478 +500 375 +640 427 +640 427 +500 334 +425 640 +640 427 +640 427 +478 640 +640 461 +640 477 +640 425 +640 427 +500 400 +640 389 +640 426 +424 640 +640 480 +640 361 +640 478 +333 500 +640 608 +640 480 +640 480 +375 500 +640 311 +640 427 +640 427 +640 393 +640 480 +500 333 +640 639 +640 376 +640 414 +490 640 +485 640 +640 344 +640 480 +640 427 +640 466 +640 427 +480 640 +640 613 +640 480 +640 426 +640 429 +640 259 +500 333 +612 612 +640 640 +480 640 +640 480 +640 480 +640 427 +640 458 +480 640 +423 640 +500 375 +640 480 +640 480 +500 333 +480 640 +640 480 +443 640 +640 428 +640 427 +400 640 +640 480 +640 427 +500 500 +640 480 +500 333 +600 600 +640 427 +640 320 +480 640 +640 480 +640 406 +427 640 +640 427 +640 419 +640 480 +640 427 +640 429 +640 640 +640 427 +500 477 +640 480 +640 480 +640 480 +612 612 +640 429 +480 640 +640 480 +640 458 +640 426 +500 440 +640 360 +500 334 +640 480 +640 427 +640 480 +640 427 +640 428 +500 375 +640 427 +640 426 +332 500 +427 640 +427 640 +500 375 +640 427 +640 480 +640 518 +640 480 +640 427 +480 640 +640 640 +640 425 +640 427 +481 640 +640 359 +640 480 +640 360 +640 428 +640 480 +640 419 +640 480 +640 480 +640 480 +640 480 +640 426 +640 424 +640 321 +640 478 +640 482 +500 375 +640 480 +640 480 +506 640 +640 480 +640 469 +640 377 +640 359 +640 480 +500 335 +640 478 +640 427 +640 287 +640 480 +375 500 +640 480 +428 640 +456 640 +480 640 +640 493 +640 481 +480 640 +640 480 +640 428 +375 500 +640 480 +640 371 +640 427 +500 375 +427 640 +640 480 +500 375 +640 337 +468 640 +426 640 +640 484 +480 640 +640 427 +640 425 +500 424 +640 480 +640 427 +640 427 +640 427 +640 480 +640 610 +640 480 +640 480 +640 426 +463 640 +640 429 +640 427 +640 522 +640 480 +640 428 +640 480 +480 640 +640 427 +424 640 +480 640 +640 457 +500 367 +640 448 +496 640 +500 375 +480 640 +640 425 +640 425 +640 480 +500 334 +640 369 +427 640 +640 480 +375 500 +640 480 +640 480 +640 411 +333 500 +640 512 +640 427 +640 474 +640 480 +640 427 +640 478 +427 640 +640 358 +640 640 +640 472 +567 378 +640 404 +640 427 +480 640 +640 428 +640 427 +640 480 +427 640 +640 433 +640 638 +480 640 +640 470 +640 591 +640 427 +640 427 +612 612 +550 365 +640 640 +527 640 +640 427 +640 480 +640 480 +640 480 +640 640 +640 459 +480 640 +480 640 +640 427 +640 480 +640 480 +640 480 +640 427 +427 640 +640 427 +333 500 +640 480 +640 426 +640 426 +640 427 +426 640 +640 228 +612 612 +640 426 +612 612 +640 426 +640 640 +640 523 +480 640 +479 640 +640 428 +640 480 +500 375 +640 414 +500 375 +640 480 +480 640 +414 278 +424 640 +640 480 +480 640 +500 375 +612 612 +640 544 +427 640 +640 427 +640 480 +500 331 +640 429 +640 427 +640 480 +640 426 +640 426 +640 480 +640 480 +366 640 +640 427 +640 480 +640 480 +427 640 +640 589 +500 375 +640 426 +640 568 +640 395 +640 427 +640 426 +640 480 +640 480 +640 480 +640 360 +640 561 +640 480 +640 427 +640 480 +640 480 +500 375 +427 640 +425 640 +640 459 +523 640 +488 640 +478 640 +640 426 +500 333 +480 640 +612 612 +640 425 +480 640 +640 425 +640 427 +500 375 +640 552 +640 480 +434 640 +500 334 +500 375 +515 640 +640 480 +425 640 +640 198 +640 426 +640 427 +640 440 +640 427 +640 427 +500 375 +640 402 +500 500 +640 480 +640 346 +500 333 +640 458 +480 640 +640 480 +640 426 +500 375 +640 480 +427 640 +640 425 +480 640 +500 441 +640 480 +428 640 +640 480 +612 612 +640 480 +640 427 +640 501 +500 375 +640 480 +640 427 +441 640 +424 640 +427 640 +640 427 +640 480 +480 320 +500 379 +552 640 +640 426 +640 346 +640 427 +640 512 +480 640 +640 512 +612 612 +640 480 +500 375 +640 640 +375 500 +640 426 +640 359 +612 612 +612 612 +640 428 +640 480 +640 427 +640 428 +640 428 +640 263 +375 500 +640 427 +252 360 +640 425 +640 424 +500 331 +640 480 +500 331 +640 480 +640 480 +480 640 +640 428 +427 640 +640 427 +417 500 +640 480 +426 640 +640 427 +383 640 +480 640 +640 480 +640 512 +640 431 +612 612 +450 600 +640 426 +640 502 +640 480 +640 457 +640 427 +640 424 +640 480 +640 480 +640 427 +378 640 +612 612 +640 426 +640 480 +418 640 +640 426 +333 500 +640 480 +640 480 +640 432 +500 375 +500 347 +640 427 +640 451 +640 480 +640 480 +640 266 +640 426 +640 360 +500 374 +427 640 +640 427 +480 640 +640 431 +500 333 +640 480 +375 500 +640 480 +640 482 +640 480 +640 426 +640 478 +640 480 +640 424 +640 480 +640 427 +640 480 +425 640 +640 427 +640 480 +640 480 +640 424 +480 640 +640 427 +640 480 +426 640 +640 426 +640 480 +640 427 +480 640 +480 640 +480 640 +640 478 +640 480 +640 480 +640 480 +640 480 +640 480 +640 426 +640 480 +500 333 +640 427 +640 427 +500 333 +640 427 +480 640 +480 640 +640 480 +428 640 +640 480 +500 334 +640 347 +640 442 +640 480 +640 480 +640 427 +640 411 +425 640 +640 427 +480 640 +640 427 +640 480 +640 480 +500 387 +640 480 +480 640 +500 332 +453 500 +480 640 +640 480 +640 427 +500 334 +640 427 +500 500 +640 480 +500 375 +640 428 +640 640 +640 424 +500 376 +427 640 +640 427 +640 427 +640 427 +640 480 +640 480 +500 375 +640 422 +640 486 +640 428 +500 322 +500 375 +640 480 +640 513 +427 640 +640 425 +640 480 +640 450 +640 427 +640 480 +640 480 +640 480 +500 332 +640 421 +640 480 +640 426 +640 427 +640 424 +640 428 +640 480 +640 480 +640 480 +427 640 +640 640 +640 480 +640 359 +640 448 +374 500 +425 640 +259 194 +640 428 +640 427 +640 534 +640 480 +640 480 +640 346 +500 375 +425 640 +426 640 +640 480 +640 480 +640 480 +400 640 +640 480 +640 427 +640 427 +419 640 +640 427 +640 614 +500 375 +640 457 +640 428 +640 427 +500 375 +640 483 +500 375 +640 426 +640 388 +640 426 +640 480 +500 341 +640 427 +640 480 +640 425 +500 375 +640 480 +640 427 +640 355 +640 480 +427 640 +500 375 +640 480 +500 400 +401 640 +640 480 +640 426 +640 427 +640 427 +640 551 +640 480 +640 428 +428 640 +427 640 +640 427 +640 480 +426 640 +459 640 +480 640 +640 480 +640 424 +640 480 +333 500 +482 640 +640 480 +640 480 +640 480 +640 360 +640 426 +512 640 +427 640 +375 500 +375 500 +640 480 +640 427 +640 599 +640 454 +456 640 +332 500 +640 426 +640 436 +426 640 +640 480 +480 640 +640 480 +612 612 +640 480 +427 640 +500 334 +640 480 +640 480 +640 480 +640 480 +640 445 +500 375 +640 427 +640 480 +500 375 +640 445 +443 640 +480 640 +640 428 +640 427 +640 426 +512 640 +640 427 +640 374 +500 332 +375 500 +640 480 +640 480 +500 383 +640 427 +500 333 +500 375 +640 535 +640 426 +640 480 +640 425 +640 480 +420 640 +427 640 +480 640 +640 426 +426 640 +500 375 +640 480 +500 333 +480 640 +640 480 +425 640 +640 480 +640 480 +640 422 +640 425 +640 480 +612 612 +500 333 +640 639 +640 429 +500 375 +427 640 +453 640 +500 261 +500 333 +640 478 +425 640 +612 612 +428 640 +640 426 +480 640 +640 331 +640 510 +500 333 +640 427 +640 427 +640 480 +640 376 +640 478 +500 375 +640 427 +640 409 +481 640 +431 640 +640 480 +640 480 +640 480 +426 640 +640 436 +640 534 +640 385 +640 426 +640 480 +367 415 +375 500 +640 430 +640 480 +640 446 +640 480 +640 438 +640 428 +640 480 +500 375 +640 427 +640 361 +640 427 +640 468 +640 480 +427 640 +640 480 +640 425 +604 402 +640 426 +374 500 +640 318 +470 640 +640 359 +640 427 +640 540 +640 427 +457 640 +640 480 +640 360 +640 478 +640 480 +640 426 +450 600 +500 442 +640 640 +640 445 +640 480 +640 425 +640 514 +640 478 +426 640 +640 424 +640 425 +360 640 +640 306 +640 512 +640 480 +500 375 +478 640 +640 441 +396 500 +640 375 +594 445 +640 427 +640 480 +640 425 +640 480 +640 427 +640 426 +640 480 +640 426 +640 426 +640 427 +500 375 +480 640 +640 359 +612 612 +640 480 +640 480 +640 480 +500 310 +612 612 +500 471 +640 427 +640 427 +640 372 +640 427 +640 412 +481 640 +640 293 +500 334 +640 424 +500 375 +480 640 +640 512 +480 640 +612 612 +640 468 +640 424 +333 500 +612 612 +424 640 +500 375 +640 480 +500 333 +425 640 +640 426 +640 480 +480 640 +640 427 +480 640 +640 427 +640 480 +640 384 +640 439 +480 640 +426 640 +612 612 +640 303 +640 480 +640 384 +640 480 +640 427 +500 375 +640 480 +640 427 +640 480 +640 491 +640 430 +640 480 +379 640 +640 480 +480 640 +500 375 +640 530 +640 427 +640 456 +515 640 +640 480 +500 334 +640 480 +640 437 +640 480 +480 640 +640 480 +356 500 +640 478 +640 427 +640 427 +428 640 +480 640 +480 640 +480 640 +640 480 +640 425 +640 408 +640 309 +640 226 +359 640 +480 640 +640 427 +640 471 +480 640 +500 375 +640 426 +640 425 +640 498 +640 360 +480 640 +437 500 +640 427 +375 500 +500 344 +480 640 +640 473 +640 426 +640 480 +640 431 +640 273 +640 427 +640 427 +640 427 +500 375 +640 480 +480 640 +640 427 +640 427 +640 639 +500 375 +526 640 +469 640 +500 345 +640 480 +612 612 +480 640 +480 640 +640 534 +320 320 +333 500 +336 500 +640 426 +640 441 +640 612 +640 425 +500 375 +640 480 +640 480 +471 640 +480 640 +500 375 +640 480 +640 480 +640 480 +640 480 +640 480 +341 640 +640 480 +480 640 +480 640 +640 426 +640 448 +612 612 +353 500 +480 640 +499 640 +640 373 +640 393 +640 444 +640 427 +640 360 +500 348 +500 375 +640 480 +640 640 +640 480 +640 480 +500 375 +441 640 +493 640 +640 427 +640 480 +500 333 +640 481 +640 372 +640 453 +640 427 +640 480 +500 357 +640 427 +640 480 +640 327 +612 612 +424 640 +640 359 +640 472 +640 428 +640 480 +640 320 +425 640 +640 480 +612 612 +480 640 +480 640 +375 500 +480 640 +427 640 +640 427 +425 319 +640 480 +640 427 +640 425 +640 480 +640 425 +640 425 +640 427 +640 427 +500 334 +640 426 +640 427 +640 480 +640 480 +640 444 +480 640 +640 554 +640 480 +612 612 +640 428 +500 375 +640 480 +640 427 +640 428 +500 354 +427 640 +500 333 +414 640 +480 640 +640 488 +640 480 +594 640 +612 612 +640 361 +640 480 +467 640 +640 526 +640 480 +500 491 +640 480 +400 640 +640 569 +480 640 +640 426 +640 480 +640 427 +480 640 +640 480 +500 375 +640 426 +427 640 +640 427 +500 375 +640 480 +480 640 +640 426 +375 500 +640 480 +640 369 +640 428 +426 640 +480 640 +640 426 +640 480 +480 640 +425 640 +640 425 +427 640 +640 435 +640 507 +640 480 +500 333 +640 426 +640 473 +612 612 +640 427 +640 427 +500 375 +640 640 +375 500 +640 480 +640 428 +427 640 +639 640 +480 640 +640 423 +640 391 +640 480 +640 480 +640 389 +478 640 +640 427 +612 612 +463 640 +640 480 +480 640 +427 640 +640 480 +480 640 +481 640 +640 640 +500 338 +640 480 +640 480 +640 360 +500 375 +640 480 +500 375 +640 426 +640 479 +500 375 +640 493 +640 486 +481 640 +486 381 +500 375 +640 428 +427 640 +640 456 +497 640 +426 640 +640 427 +500 375 +640 429 +640 456 +640 360 +640 478 +428 640 +480 640 +640 480 +500 483 +640 426 +381 640 +640 480 +640 443 +640 480 +640 428 +640 424 +640 480 +640 407 +640 426 +640 480 +480 640 +640 480 +640 428 +640 359 +426 640 +640 427 +640 480 +640 428 +427 640 +640 481 +375 500 +573 640 +500 333 +640 428 +640 476 +612 612 +640 480 +640 480 +500 375 +426 640 +375 500 +640 480 +640 480 +640 359 +480 640 +637 640 +640 423 +640 394 +640 480 +500 375 +612 612 +640 360 +640 426 +640 427 +640 640 +640 480 +332 500 +640 427 +640 480 +333 500 +640 426 +640 541 +640 427 +640 640 +640 480 +640 426 +450 338 +640 428 +640 428 +640 354 +640 524 +480 640 +480 640 +640 480 +640 424 +500 332 +640 426 +640 480 +500 375 +480 640 +640 351 +640 480 +640 480 +531 640 +480 640 +375 500 +640 427 +427 640 +612 612 +427 640 +640 441 +640 480 +638 640 +640 426 +488 640 +424 640 +500 400 +640 426 +640 427 +480 640 +333 500 +640 579 +640 427 +640 320 +360 640 +640 427 +640 480 +640 480 +500 332 +640 427 +480 640 +640 467 +635 640 +640 427 +497 640 +640 480 +427 640 +640 428 +424 640 +640 480 +427 640 +478 640 +480 640 +640 424 +427 640 +640 480 +640 480 +640 426 +427 640 +500 375 +640 432 +640 479 +640 360 +640 427 +640 424 +640 480 +640 480 +478 640 +427 640 +640 480 +428 640 +500 375 +640 427 +375 500 +640 429 +640 427 +640 426 +427 640 +640 620 +375 500 +438 351 +640 427 +575 640 +640 480 +640 428 +640 480 +640 480 +640 480 +640 480 +480 640 +500 342 +429 640 +480 640 +640 394 +640 480 +640 298 +427 640 +500 378 +640 511 +500 333 +640 480 +334 500 +640 480 +640 423 +640 426 +640 427 +640 480 +640 388 +640 444 +640 531 +453 640 +500 375 +640 234 +500 333 +426 640 +640 428 +640 480 +640 428 +480 640 +640 472 +480 640 +375 500 +640 480 +480 640 +500 332 +640 427 +640 398 +640 425 +640 478 +640 427 +427 640 +480 640 +500 334 +640 480 +612 612 +640 480 +640 427 +427 640 +427 640 +333 500 +640 480 +640 480 +500 375 +640 480 +333 500 +640 480 +375 500 +640 625 +500 333 +500 375 +500 375 +480 640 +640 480 +500 333 +640 371 +640 481 +480 640 +480 640 +640 480 +427 640 +427 640 +640 427 +612 612 +500 330 +430 500 +500 333 +640 480 +640 425 +480 640 +640 480 +640 405 +640 425 +640 427 +640 427 +640 467 +640 478 +427 640 +640 480 +333 500 +640 426 +500 375 +640 549 +480 640 +640 427 +640 427 +640 480 +640 480 +640 426 +640 640 +640 480 +427 640 +500 375 +480 640 +640 500 +640 425 +640 320 +480 640 +500 376 +640 480 +479 640 +640 504 +480 640 +480 640 +500 375 +640 640 +640 425 +640 480 +640 428 +426 640 +640 427 +640 480 +640 424 +640 480 +640 640 +640 360 +640 480 +640 640 +500 375 +500 384 +640 426 +500 334 +640 480 +640 480 +640 427 +400 300 +480 640 +640 427 +612 612 +640 429 +640 424 +640 557 +640 427 +427 640 +640 440 +640 480 +640 321 +640 427 +500 375 +640 426 +500 375 +480 640 +640 391 +500 375 +640 480 +480 640 +640 425 +640 427 +429 640 +640 427 +640 425 +640 428 +500 374 +640 425 +640 425 +640 477 +640 427 +375 500 +640 480 +640 457 +640 383 +480 640 +425 640 +426 640 +640 480 +427 640 +640 466 +640 427 +640 428 +640 542 +480 640 +640 480 +640 480 +640 480 +640 640 +480 640 +640 479 +480 640 +340 505 +500 500 +640 454 +500 375 +640 427 +480 640 +640 480 +480 640 +640 427 +333 500 +640 480 +408 640 +640 480 +640 427 +640 480 +480 640 +225 300 +640 424 +480 640 +375 500 +640 480 +640 426 +640 480 +427 640 +500 375 +640 463 +640 433 +427 640 +612 612 +612 612 +640 425 +640 480 +640 480 +640 512 +640 353 +500 375 +640 480 +500 375 +640 427 +480 640 +480 640 +640 480 +500 375 +640 640 +500 375 +640 481 +500 375 +424 640 +640 480 +640 480 +480 640 +640 396 +637 419 +640 480 +640 480 +640 427 +612 612 +427 640 +428 640 +331 500 +640 478 +640 429 +640 360 +500 375 +640 428 +640 480 +640 480 +453 500 +640 427 +640 425 +480 640 +385 308 +640 479 +612 612 +424 640 +640 423 +640 480 +640 427 +640 640 +640 428 +640 480 +640 427 +640 427 +640 359 +480 640 +640 480 +612 612 +640 428 +640 427 +640 480 +640 397 +500 375 +640 480 +640 480 +640 427 +500 332 +640 480 +640 431 +640 480 +640 480 +640 486 +500 375 +400 300 +480 640 +640 480 +640 427 +640 427 +640 427 +640 427 +640 480 +285 500 +480 640 +500 333 +640 416 +640 427 +640 427 +458 640 +640 480 +640 427 +500 375 +480 343 +500 500 +428 640 +640 491 +640 426 +640 480 +640 424 +480 640 +640 624 +612 612 +640 480 +640 480 +640 427 +640 480 +640 640 +500 314 +640 359 +640 457 +640 427 +480 640 +472 640 +600 600 +640 427 +640 421 +640 427 +640 480 +612 612 +500 333 +640 427 +640 480 +640 480 +640 640 +640 480 +640 480 +640 538 +640 414 +427 640 +640 480 +640 480 +640 427 +640 427 +640 492 +640 360 +640 457 +640 480 +640 427 +640 480 +500 342 +480 640 +424 640 +640 480 +640 480 +640 426 +640 640 +640 480 +480 640 +640 480 +640 425 +427 640 +500 375 +427 640 +427 640 +500 375 +640 480 +640 426 +480 640 +427 640 +640 424 +500 333 +640 517 +427 640 +529 640 +640 427 +440 640 +480 640 +480 640 +640 426 +640 427 +612 612 +640 480 +640 478 +640 480 +640 426 +640 295 +640 480 +640 480 +500 334 +500 375 +640 423 +480 640 +640 480 +480 640 +640 513 +640 427 +640 481 +640 393 +640 480 +427 640 +640 424 +427 640 +640 451 +640 383 +640 425 +427 640 +640 480 +480 640 +640 427 +500 333 +427 640 +640 463 +640 428 +640 480 +640 426 +640 449 +640 427 +428 640 +640 480 +333 500 +427 640 +640 426 +640 426 +640 427 +640 424 +640 427 +402 600 +640 482 +640 427 +500 333 +640 480 +640 480 +640 426 +640 457 +640 480 +640 423 +640 480 +640 426 +427 640 +640 480 +500 333 +640 426 +500 375 +640 480 +640 360 +427 640 +640 480 +500 375 +640 259 +640 480 +640 480 +360 640 +480 640 +483 640 +640 480 +640 465 +640 480 +640 480 +424 640 +500 335 +640 360 +640 429 +640 457 +360 640 +640 480 +640 427 +640 426 +640 428 +426 640 +466 640 +640 425 +500 375 +640 426 +640 426 +333 500 +640 455 +640 425 +640 494 +500 332 +640 428 +640 480 +640 480 +612 612 +640 427 +612 612 +383 640 +640 480 +640 427 +334 500 +640 640 +500 335 +640 480 +480 640 +640 480 +640 480 +640 427 +612 612 +640 418 +375 500 +640 480 +640 480 +640 480 +425 640 +640 480 +640 480 +500 333 +640 480 +640 480 +480 640 +640 480 +640 426 +640 478 +640 428 +500 333 +640 631 +640 480 +375 500 +640 426 +578 640 +640 473 +640 415 +427 640 +427 640 +479 640 +640 480 +426 640 +612 612 +500 375 +640 480 +640 489 +640 412 +640 480 +383 640 +640 360 +427 640 +500 333 +640 427 +640 480 +426 640 +640 425 +640 509 +640 383 +640 480 +640 427 +640 480 +640 427 +640 480 +640 480 +480 640 +449 640 +640 426 +500 333 +640 427 +640 360 +480 640 +640 425 +400 500 +640 427 +640 480 +640 428 +640 431 +640 480 +500 400 +640 480 +640 480 +640 480 +640 480 +640 426 +640 361 +480 640 +480 640 +640 480 +640 480 +640 469 +500 333 +500 332 +640 480 +346 640 +640 491 +427 640 +640 480 +640 435 +640 426 +640 427 +640 427 +500 375 +426 640 +480 640 +480 640 +329 500 +640 478 +213 320 +427 640 +640 426 +640 480 +640 426 +500 375 +640 425 +640 639 +309 640 +640 427 +640 640 +500 336 +640 640 +640 480 +640 480 +333 500 +640 480 +431 640 +640 480 +640 480 +480 640 +640 426 +640 427 +500 298 +640 426 +640 480 +375 500 +640 631 +640 427 +640 480 +640 480 +640 428 +634 354 +500 375 +428 640 +640 640 +640 480 +640 480 +640 513 +640 425 +640 426 +640 411 +640 478 +640 480 +640 426 +640 480 +640 480 +333 500 +500 284 +375 500 +640 383 +640 427 +640 353 +640 426 +500 380 +640 480 +640 480 +640 427 +640 429 +480 640 +640 427 +500 334 +213 320 +500 333 +640 640 +612 612 +480 640 +640 480 +640 290 +640 427 +640 640 +480 640 +640 480 +640 427 +469 640 +427 640 +500 451 +640 480 +500 366 +640 428 +640 427 +640 480 +612 612 +640 480 +500 375 +399 640 +500 332 +640 327 +500 396 +640 433 +640 427 +427 640 +640 480 +427 640 +427 640 +640 427 +480 640 +640 427 +640 480 +426 640 +480 640 +640 323 +640 457 +640 426 +640 478 +640 446 +426 640 +428 640 +640 480 +427 640 +640 432 +640 359 +640 482 +640 425 +314 188 +355 640 +640 427 +500 355 +500 338 +640 480 +429 640 +500 332 +640 360 +500 281 +640 427 +500 282 +640 428 +500 379 +640 480 +640 427 +640 426 +335 500 +640 456 +640 396 +640 424 +640 480 +640 427 +484 640 +427 640 +640 480 +640 428 +640 428 +640 432 +612 612 +332 500 +640 427 +480 640 +640 480 +366 500 +480 640 +640 508 +640 424 +640 425 +640 425 +480 640 +480 640 +500 375 +640 549 +640 427 +640 424 +500 375 +640 480 +640 470 +640 480 +640 480 +480 640 +640 427 +478 640 +640 360 +427 640 +640 440 +426 640 +640 426 +500 333 +612 612 +640 480 +503 640 +640 427 +480 640 +640 449 +500 479 +640 480 +480 640 +640 427 +640 426 +640 427 +640 425 +640 415 +640 427 +640 427 +640 428 +486 640 +640 486 +640 419 +640 424 +640 480 +640 369 +500 375 +427 640 +640 424 +500 347 +640 615 +640 480 +500 375 +500 375 +640 480 +640 480 +640 480 +427 640 +640 428 +500 333 +640 416 +500 375 +419 640 +640 425 +640 480 +480 640 +480 640 +424 640 +427 640 +640 426 +480 640 +640 480 +480 640 +640 425 +640 360 +640 427 +640 424 +640 480 +640 427 +640 480 +640 427 +640 480 +640 425 +640 428 +640 480 +640 480 +640 478 +640 480 +640 428 +612 612 +640 636 +500 333 +480 640 +640 437 +428 640 +612 612 +640 459 +640 480 +640 480 +640 480 +427 640 +640 480 +640 507 +640 480 +640 427 +640 427 +640 427 +640 480 +640 457 +640 480 +500 375 +640 383 +500 332 +640 480 +375 500 +640 427 +426 640 +640 480 +640 427 +640 480 +640 427 +375 500 +640 480 +480 640 +478 640 +375 500 +480 640 +500 375 +640 480 +427 640 +640 480 +640 427 +334 500 +500 375 +640 361 +511 640 +500 334 +640 480 +640 480 +640 640 +640 480 +500 375 +640 480 +640 480 +640 426 +640 425 +640 524 +479 640 +640 480 +640 480 +640 427 +480 640 +640 480 +640 428 +500 375 +606 640 +480 640 +640 426 +500 392 +640 451 +640 485 +427 640 +640 428 +640 457 +640 424 +640 480 +640 427 +493 640 +640 398 +500 333 +427 640 +640 427 +640 432 +640 480 +640 480 +640 427 +640 361 +640 425 +500 375 +640 438 +432 288 +612 612 +640 480 +500 376 +480 640 +640 479 +400 640 +640 426 +500 377 +375 500 +640 424 +443 640 +640 480 +640 427 +427 640 +480 640 +626 640 +640 550 +500 335 +550 640 +640 428 +452 640 +500 350 +499 500 +640 427 +569 640 +640 480 +640 425 +500 334 +640 420 +640 427 +640 441 +640 480 +500 500 +640 480 +640 598 +333 500 +480 640 +427 640 +640 480 +640 480 +612 612 +500 335 +640 480 +640 640 +600 450 +427 640 +640 400 +507 640 +640 480 +500 375 +500 332 +640 480 +510 640 +640 480 +640 429 +480 640 +500 333 +640 427 +640 346 +281 500 +640 480 +427 640 +640 454 +640 439 +375 500 +640 427 +448 336 +640 533 +640 424 +480 640 +640 480 +640 427 +640 425 +326 640 +640 532 +640 480 +640 480 +640 480 +640 383 +480 640 +640 480 +640 427 +640 427 +640 480 +480 640 +640 384 +480 640 +640 456 +500 375 +640 480 +640 428 +427 640 +640 541 +500 333 +640 436 +640 482 +640 427 +640 537 +640 426 +480 356 +640 427 +640 480 +640 427 +640 480 +480 640 +640 424 +640 427 +640 480 +640 427 +640 360 +500 375 +640 427 +560 600 +640 427 +533 640 +477 640 +640 424 +640 458 +640 427 +480 640 +640 428 +640 427 +399 500 +640 640 +480 640 +478 640 +640 480 +640 480 +640 427 +612 612 +480 640 +640 470 +640 425 +640 431 +425 640 +640 427 +640 427 +640 463 +427 640 +640 480 +640 427 +640 438 +480 640 +640 427 +640 462 +640 442 +640 480 +429 640 +640 427 +640 480 +500 375 +612 612 +640 640 +640 387 +427 640 +640 320 +640 427 +640 480 +640 427 +480 640 +640 429 +480 640 +480 640 +335 500 +640 425 +640 425 +500 375 +640 480 +640 640 +427 640 +640 480 +640 480 +640 480 +453 640 +640 478 +640 425 +500 379 +640 427 +640 480 +500 346 +640 547 +427 640 +399 600 +640 480 +640 327 +640 427 +640 427 +640 427 +640 427 +640 480 +640 427 +640 283 +640 480 +640 480 +435 640 +424 640 +600 400 +640 427 +640 354 +640 556 +612 612 +480 640 +640 480 +640 511 +640 480 +480 640 +640 428 +640 271 +640 480 +640 480 +640 425 +640 383 +428 640 +640 480 +480 640 +640 427 +315 352 +640 480 +426 640 +480 640 +640 427 +640 401 +640 480 +640 480 +640 426 +640 427 +640 427 +640 480 +640 480 +640 480 +640 480 +640 424 +640 513 +459 640 +427 640 +640 640 +640 427 +640 478 +640 416 +640 427 +480 640 +640 423 +480 640 +640 466 +640 544 +640 437 +375 500 +640 492 +375 500 +640 424 +640 370 +640 513 +640 429 +427 640 +640 427 +426 640 +428 640 +640 426 +640 640 +500 384 +627 640 +640 427 +640 427 +640 427 +428 640 +640 512 +640 480 +640 427 +640 480 +500 376 +640 428 +640 384 +480 640 +640 478 +640 480 +640 427 +426 640 +563 640 +640 480 +640 430 +500 333 +640 633 +640 426 +426 640 +640 427 +480 640 +640 638 +640 400 +640 480 +640 480 +640 427 +640 424 +640 427 +640 427 +640 480 +480 640 +640 450 +612 612 +640 483 +640 480 +640 480 +640 427 +450 412 +480 640 +640 443 +640 480 +640 480 +640 434 +640 425 +640 427 +640 360 +640 427 +480 640 +640 378 +640 480 +480 640 +640 480 +640 480 +640 426 +640 480 +640 384 +640 427 +640 480 +640 427 +640 480 +640 360 +640 532 +640 360 +640 556 +640 427 +640 480 +528 640 +640 480 +500 333 +640 427 +426 640 +640 425 +640 428 +425 640 +640 480 +617 640 +418 500 +640 480 +427 640 +640 457 +427 640 +640 480 +374 500 +500 400 +640 480 +484 640 +640 480 +640 431 +640 426 +640 428 +500 375 +640 480 +640 429 +640 427 +640 427 +640 427 +640 427 +480 640 +436 640 +500 333 +479 640 +640 480 +612 612 +640 480 +640 427 +480 640 +640 427 +500 481 +640 451 +640 336 +640 335 +640 480 +500 375 +640 427 +640 480 +640 428 +640 428 +640 501 +640 427 +640 480 +480 640 +427 640 +640 427 +640 480 +640 427 +640 395 +426 640 +427 640 +640 480 +640 426 +640 480 +480 640 +640 426 +640 383 +640 480 +609 640 +640 387 +448 336 +640 457 +640 426 +375 500 +423 640 +480 640 +500 334 +375 500 +640 353 +640 480 +375 500 +640 405 +500 333 +640 480 +427 640 +506 373 +500 375 +640 480 +500 375 +640 480 +640 413 +640 426 +640 427 +640 480 +640 427 +640 480 +640 437 +640 350 +480 640 +640 426 +640 513 +640 425 +480 640 +500 375 +640 426 +640 493 +640 425 +480 640 +500 493 +640 427 +640 480 +483 640 +640 480 +640 480 +500 375 +480 640 +640 378 +500 335 +500 360 +640 543 +640 480 +333 500 +640 480 +640 428 +640 480 +333 500 +640 427 +640 367 +640 427 +640 480 +640 480 +640 480 +640 458 +426 640 +640 480 +480 640 +640 480 +640 480 +640 427 +640 436 +640 451 +500 375 +640 480 +640 427 +640 480 +640 394 +640 480 +500 332 +640 439 +480 640 +500 400 +640 519 +640 480 +640 478 +640 456 +640 428 +640 480 +427 640 +500 375 +250 640 +640 480 +480 640 +640 512 +640 480 +288 352 +428 640 +480 640 +375 500 +640 480 +640 424 +640 480 +640 462 +640 480 +640 428 +640 481 +500 375 +640 480 +640 477 +640 427 +496 640 +513 640 +640 427 +640 371 +640 428 +383 640 +640 480 +375 500 +427 640 +640 427 +480 640 +427 640 +640 480 +640 481 +640 480 +640 425 +640 480 +640 458 +640 427 +640 480 +640 480 +640 480 +640 405 +640 480 +640 428 +320 240 +640 480 +479 640 +640 480 +640 480 +640 428 +480 640 +640 427 +460 640 +612 612 +640 439 +640 480 +612 612 +480 640 +640 425 +640 427 +640 480 +640 480 +500 375 +427 640 +380 285 +375 500 +640 427 +640 480 +640 426 +640 427 +640 480 +640 480 +640 490 +500 329 +612 612 +640 480 +425 640 +483 640 +500 333 +640 427 +640 427 +640 480 +640 479 +640 427 +480 640 +612 612 +433 640 +640 428 +479 640 +520 480 +427 640 +640 517 +640 428 +604 640 +500 375 +640 480 +500 333 +640 480 +427 640 +640 480 +640 478 +375 500 +640 427 +640 427 +425 640 +427 640 +426 640 +428 640 +640 427 +640 444 +436 640 +480 640 +551 640 +640 478 +500 327 +640 480 +480 640 +480 640 +640 427 +640 480 +500 377 +326 500 +640 480 +480 640 +640 424 +427 640 +640 480 +640 480 +424 640 +640 480 +640 427 +640 640 +640 429 +640 480 +480 640 +427 640 +640 427 +640 480 +640 480 +480 640 +640 359 +423 640 +640 427 +640 429 +640 480 +640 480 +500 375 +640 427 +453 640 +640 480 +640 427 +640 480 +500 375 +480 640 +640 577 +500 375 +500 332 +640 427 +640 480 +640 480 +426 640 +640 480 +622 640 +640 516 +426 640 +427 640 +640 428 +480 640 +640 359 +640 429 +640 426 +640 573 +480 640 +640 428 +640 360 +288 384 +480 640 +427 640 +500 375 +427 640 +640 480 +640 426 +640 427 +640 480 +500 333 +640 427 +640 480 +640 424 +640 424 +424 640 +640 426 +640 529 +640 424 +640 427 +640 480 +500 479 +500 332 +612 612 +427 640 +500 375 +640 480 +640 480 +375 500 +600 450 +640 480 +375 500 +480 640 +640 480 +500 375 +640 366 +640 640 +334 500 +640 426 +375 500 +640 480 +640 360 +500 375 +640 425 +482 640 +375 500 +640 480 +481 640 +640 424 +640 426 +640 480 +375 500 +427 640 +640 478 +640 594 +640 480 +640 372 +640 493 +375 500 +640 480 +640 480 +427 640 +640 480 +480 640 +450 469 +640 427 +640 480 +640 480 +640 480 +568 640 +480 640 +480 640 +480 640 +368 640 +640 429 +640 427 +500 333 +612 612 +640 480 +640 429 +500 375 +640 427 +640 428 +640 427 +640 425 +500 335 +500 375 +500 332 +640 425 +500 478 +640 427 +640 427 +427 640 +640 428 +480 640 +428 640 +640 480 +640 596 +640 427 +640 480 +640 427 +640 480 +640 480 +480 640 +640 418 +640 480 +382 500 +640 423 +500 425 +500 375 +640 425 +640 521 +640 427 +360 640 +640 480 +640 427 +640 484 +640 426 +640 481 +640 424 +426 640 +480 640 +427 640 +640 480 +500 343 +640 471 +623 640 +480 640 +640 480 +431 640 +640 503 +640 480 +640 349 +640 426 +640 480 +640 424 +427 640 +640 480 +640 427 +640 499 +640 480 +500 375 +640 480 +640 458 +333 500 +640 384 +640 426 +640 427 +640 512 +640 480 +640 480 +480 640 +640 428 +640 483 +640 425 +640 427 +640 480 +427 640 +640 480 +640 468 +500 336 +480 640 +640 425 +480 640 +640 509 +640 427 +640 428 +640 528 +640 480 +640 480 +480 640 +640 512 +500 375 +640 480 +640 480 +640 480 +480 640 +500 375 +480 640 +480 640 +640 480 +640 320 +640 425 +333 500 +612 612 +403 500 +640 414 +640 480 +640 427 +480 640 +640 428 +640 428 +640 426 +327 293 +640 579 +640 640 +500 333 +640 427 +480 640 +427 640 +640 478 +640 480 +640 426 +640 480 +427 640 +388 640 +640 480 +568 640 +640 424 +640 415 +500 375 +500 375 +640 427 +640 426 +320 500 +400 300 +492 640 +427 640 +640 427 +427 640 +640 480 +500 337 +480 640 +428 640 +480 640 +640 480 +480 640 +640 428 +640 461 +640 480 +640 480 +640 496 +427 640 +640 480 +500 321 +640 480 +640 427 +360 640 +480 640 +640 448 +640 480 +640 438 +640 427 +333 500 +640 427 +500 430 +640 425 +640 480 +640 457 +640 424 +640 480 +640 427 +640 480 +640 428 +640 484 +640 383 +520 363 +640 480 +500 375 +612 612 +640 427 +500 333 +500 311 +480 640 +640 480 +612 612 +500 375 +640 426 +640 480 +480 640 +375 500 +419 640 +640 454 +375 500 +640 426 +640 426 +480 640 +640 427 +640 480 +640 360 +640 512 +480 484 +640 456 +640 426 +640 480 +480 640 +640 483 +640 427 +640 425 +640 480 +640 480 +640 383 +640 480 +640 480 +640 426 +640 480 +640 427 +640 427 +480 640 +424 640 +640 480 +640 480 +640 480 +640 480 +640 426 +640 509 +640 640 +640 426 +480 640 +640 426 +480 640 +640 480 +640 428 +640 428 +480 640 +640 427 +640 480 +640 427 +640 429 +424 640 +640 480 +640 480 +640 427 +640 480 +429 640 +640 539 +640 479 +451 640 +640 480 +640 427 +640 480 +640 480 +640 465 +640 358 +640 428 +640 427 +500 391 +640 629 +331 500 +640 424 +500 333 +408 640 +640 480 +640 424 +640 410 +612 612 +500 375 +500 375 +480 640 +427 640 +480 640 +640 480 +640 427 +500 375 +640 480 +534 640 +640 424 +640 480 +640 480 +640 320 +427 640 +640 480 +500 375 +640 428 +480 640 +500 375 +320 240 +427 640 +334 500 +500 330 +517 640 +640 480 +640 480 +640 480 +640 426 +500 375 +640 425 +640 495 +640 480 +640 480 +640 525 +640 428 +500 375 +640 484 +640 481 +640 480 +640 433 +500 370 +640 427 +640 427 +640 431 +640 429 +500 416 +640 524 +465 640 +640 480 +480 640 +416 500 +612 612 +495 640 +480 640 +640 427 +478 640 +448 287 +612 612 +480 640 +640 480 +640 478 +640 425 +640 426 +640 424 +500 375 +640 480 +446 640 +600 450 +640 398 +428 640 +640 480 +640 480 +428 640 +428 640 +640 426 +640 427 +640 480 +640 480 +480 640 +500 375 +640 434 +640 427 +640 480 +640 427 +500 375 +640 480 +640 480 +483 640 +427 640 +427 640 +640 480 +640 439 +505 640 +375 500 +461 640 +480 640 +640 480 +640 480 +480 640 +480 640 +375 500 +640 480 +640 512 +640 424 +500 375 +500 375 +359 640 +640 462 +640 427 +640 427 +640 426 +379 500 +451 640 +419 640 +640 427 +640 480 +500 205 +500 333 +640 480 +480 640 +640 427 +375 500 +640 480 +640 427 +640 480 +640 425 +500 375 +640 431 +640 484 +640 427 +480 640 +640 427 +471 640 +640 480 +640 488 +640 480 +425 640 +640 427 +362 480 +640 481 +428 640 +480 640 +640 480 +456 640 +640 358 +500 333 +640 427 +640 516 +640 480 +375 500 +640 427 +388 640 +640 427 +640 424 +480 640 +640 570 +640 427 +500 333 +640 427 +640 427 +426 640 +640 480 +640 480 +640 640 +640 480 +334 500 +640 426 +500 375 +640 424 +640 425 +640 480 +500 336 +640 468 +640 349 +640 480 +640 421 +480 640 +375 500 +640 480 +612 612 +640 428 +640 480 +640 478 +640 427 +640 427 +480 640 +640 426 +640 383 +480 640 +640 491 +640 426 +640 480 +640 480 +500 333 +427 640 +640 481 +640 427 +640 426 +640 428 +640 419 +640 548 +640 480 +640 431 +640 631 +375 500 +640 426 +481 640 +640 427 +640 426 +333 500 +640 428 +532 500 +375 500 +640 314 +480 640 +640 480 +640 480 +500 341 +640 425 +640 480 +640 478 +640 427 +500 326 +640 427 +640 480 +640 478 +640 427 +640 447 +541 640 +640 427 +640 427 +640 416 +640 426 +640 427 +640 470 +480 640 +640 425 +640 480 +640 463 +640 427 +480 640 +612 612 +640 480 +640 480 +500 375 +480 640 +640 480 +640 427 +640 427 +500 333 +478 640 +640 425 +426 640 +640 458 +640 360 +640 425 +332 500 +640 425 +640 427 +480 287 +480 640 +480 640 +640 480 +500 376 +500 335 +500 420 +640 480 +640 425 +640 426 +515 640 +640 427 +500 500 +640 426 +481 640 +375 500 +500 375 +640 278 +640 428 +640 403 +640 426 +640 445 +640 492 +427 640 +480 640 +640 426 +640 480 +640 480 +640 581 +640 360 +640 427 +640 477 +612 612 +500 333 +640 426 +640 480 +640 480 +640 480 +500 375 +425 640 +480 640 +640 480 +550 367 +480 640 +640 480 +640 427 +640 425 +640 425 +640 425 +640 480 +640 427 +640 360 +640 419 +480 640 +640 427 +640 424 +640 480 +640 379 +640 413 +640 425 +640 427 +612 612 +424 640 +640 425 +640 411 +640 427 +640 426 +480 640 +480 640 +640 480 +640 426 +640 640 +640 424 +640 480 +640 426 +640 447 +427 640 +377 500 +537 381 +640 427 +500 462 +640 386 +500 332 +640 425 +640 513 +640 441 +640 434 +640 427 +612 612 +640 427 +640 446 +640 424 +640 426 +640 422 +640 538 +640 426 +640 480 +640 640 +640 427 +640 427 +640 426 +640 428 +419 640 +640 427 +637 640 +640 427 +500 500 +640 445 +500 375 +640 456 +640 427 +640 480 +640 480 +500 375 +488 432 +457 640 +500 334 +640 426 +640 427 +640 428 +640 480 +640 480 +640 427 +640 427 +640 480 +640 478 +640 478 +324 487 +640 480 +640 427 +333 500 +640 424 +640 480 +426 640 +428 640 +457 640 +640 483 +640 429 +478 640 +640 427 +640 480 +640 480 +640 480 +500 375 +480 640 +640 480 +480 640 +640 442 +412 640 +640 427 +640 405 +640 425 +640 491 +612 612 +500 333 +640 427 +640 480 +427 640 +500 276 +640 457 +640 480 +480 640 +640 427 +640 480 +640 480 +640 427 +640 428 +500 333 +427 640 +640 480 +640 480 +640 480 +640 359 +640 427 +640 532 +640 428 +640 426 +640 427 +375 500 +640 480 +640 427 +425 640 +640 446 +500 349 +640 427 +640 470 +640 421 +640 427 +640 426 +640 428 +640 480 +640 426 +640 480 +640 427 +640 425 +640 426 +640 425 +291 461 +640 480 +640 435 +480 640 +640 426 +640 425 +500 375 +480 640 +640 381 +500 375 +640 480 +335 500 +640 427 +333 500 +601 640 +640 428 +640 426 +480 640 +640 477 +640 240 +640 427 +640 424 +640 429 +480 640 +500 402 +480 640 +640 480 +480 640 +640 214 +640 427 +375 500 +640 480 +426 640 +640 480 +640 427 +500 242 +500 375 +640 569 +427 640 +500 333 +489 640 +500 375 +611 640 +640 438 +480 640 +529 640 +640 426 +640 480 +480 640 +500 333 +640 480 +640 454 +640 478 +500 376 +500 500 +500 415 +640 413 +515 640 +427 640 +640 427 +480 640 +468 640 +640 480 +500 359 +640 480 +640 480 +640 490 +640 427 +640 480 +640 480 +640 427 +375 500 +640 480 +427 640 +640 480 +640 480 +427 640 +333 500 +640 426 +640 425 +640 427 +640 480 +640 517 +375 500 +480 640 +640 360 +640 425 +640 426 +640 433 +640 480 +640 426 +612 612 +640 426 +640 427 +480 640 +640 427 +640 474 +640 426 +640 481 +500 374 +480 640 +640 427 +427 640 +500 336 +640 473 +640 383 +640 423 +640 480 +640 428 +500 375 +536 640 +640 427 +640 480 +640 427 +612 612 +640 480 +640 427 +640 480 +500 375 +640 461 +640 360 +425 640 +640 480 +426 640 +640 450 +640 428 +333 500 +640 427 +640 396 +640 477 +640 428 +640 480 +640 635 +640 480 +640 480 +640 480 +640 401 +640 480 +640 427 +640 426 +640 427 +640 427 +640 428 +581 640 +640 427 +427 640 +640 428 +640 480 +640 480 +640 478 +480 640 +640 480 +640 427 +640 427 +612 612 +640 576 +424 640 +612 612 +500 375 +640 480 +640 381 +640 434 +500 437 +640 456 +640 425 +640 427 +427 640 +640 429 +640 480 +640 478 +448 640 +640 480 +640 428 +640 480 +480 640 +640 425 +640 427 +640 429 +640 418 +640 360 +556 640 +269 451 +450 338 +328 500 +333 500 +480 640 +640 428 +640 380 +640 480 +640 428 +640 525 +640 427 +640 427 +640 480 +480 640 +640 479 +640 426 +640 425 +480 640 +640 426 +640 480 +612 612 +548 640 +612 612 +640 480 +640 411 +640 426 +640 480 +640 427 +640 438 +640 478 +640 427 +640 428 +640 427 +640 419 +509 640 +640 334 +640 427 +640 480 +640 426 +640 427 +480 640 +640 426 +513 640 +500 374 +640 501 +640 346 +640 360 +640 480 +500 400 +500 388 +640 480 +480 640 +500 375 +640 427 +500 400 +640 424 +491 500 +640 428 +640 480 +640 427 +426 640 +427 640 +640 451 +375 500 +640 480 +500 333 +367 490 +500 375 +640 427 +480 640 +640 480 +640 427 +640 480 +500 399 +640 480 +640 470 +640 427 +375 500 +640 426 +640 482 +640 480 +640 417 +462 640 +640 428 +640 480 +640 427 +612 612 +640 640 +640 362 +480 640 +640 427 +640 480 +640 426 +640 427 +640 428 +640 426 +640 480 +500 375 +640 480 +640 441 +640 451 +640 478 +640 480 +640 384 +427 640 +640 480 +500 459 +640 370 +426 640 +640 445 +640 480 +640 553 +640 383 +640 428 +640 427 +640 424 +427 640 +640 480 +640 427 +640 360 +640 428 +612 612 +640 480 +640 480 +640 425 +427 640 +640 426 +500 273 +640 427 +480 640 +500 332 +640 480 +640 480 +640 427 +429 640 +640 480 +640 424 +333 500 +640 427 +640 431 +500 375 +640 427 +478 640 +424 640 +396 640 +640 425 +640 480 +425 640 +640 480 +640 427 +640 426 +640 427 +500 422 +640 455 +640 427 +479 640 +418 500 +333 500 +640 480 +640 480 +640 426 +640 426 +640 425 +500 334 +480 640 +502 640 +500 375 +640 551 +640 361 +500 333 +424 640 +640 360 +640 427 +640 427 +341 500 +375 500 +640 512 +640 424 +640 427 +427 640 +640 480 +640 427 +640 424 +640 480 +640 480 +640 480 +640 426 +441 640 +640 480 +640 480 +640 420 +640 427 +640 427 +480 640 +640 426 +640 427 +640 379 +640 508 +640 480 +480 640 +640 358 +640 480 +640 478 +400 600 +427 640 +375 500 +640 439 +640 427 +640 426 +640 425 +640 480 +640 480 +640 480 +478 640 +640 480 +640 480 +480 640 +440 640 +640 229 +640 425 +640 428 +640 480 +612 612 +640 426 +480 640 +640 457 +640 480 +640 426 +640 427 +640 426 +640 400 +640 631 +640 427 +538 640 +640 480 +640 426 +640 427 +640 427 +640 480 +640 426 +640 480 +325 500 +640 427 +640 287 +480 360 +500 500 +640 482 +612 612 +640 425 +640 480 +640 426 +640 427 +640 480 +428 640 +640 424 +500 375 +480 640 +612 612 +480 640 +640 480 +640 427 +480 640 +410 500 +480 640 +640 360 +640 427 +640 401 +640 427 +640 426 +640 421 +500 375 +640 424 +640 427 +427 640 +640 480 +640 426 +429 640 +640 480 +375 500 +640 478 +427 640 +640 480 +480 640 +640 480 +640 480 +640 426 +375 500 +640 422 +640 426 +500 375 +640 480 +640 480 +640 480 +640 428 +513 640 +640 427 +640 424 +640 480 +640 480 +640 640 +640 512 +640 480 +640 506 +500 375 +500 375 +480 640 +640 480 +480 640 +500 329 +640 495 +369 500 +605 640 +500 375 +425 640 +640 480 +480 640 +640 428 +500 375 +640 427 +640 427 +640 427 +640 480 +640 608 +640 360 +640 480 +640 480 +640 480 +640 480 +640 444 +640 427 +640 421 +640 442 +427 640 +612 612 +640 480 +640 360 +480 640 +375 500 +480 640 +640 426 +640 498 +640 480 +640 427 +640 426 +640 480 +500 377 +160 120 +640 428 +500 333 +640 410 +480 640 +640 425 +640 426 +640 424 +640 426 +465 640 +640 480 +640 427 +500 375 +480 640 +640 480 +640 428 +640 480 +500 334 +640 426 +640 427 +640 480 +500 333 +640 429 +426 640 +640 426 +500 375 +500 281 +640 639 +500 313 +278 240 +640 427 +640 480 +640 440 +640 480 +640 480 +640 480 +426 640 +640 480 +640 426 +480 640 +640 427 +480 640 +426 640 +640 360 +640 479 +640 424 +640 427 +431 640 +640 427 +640 258 +640 480 +640 426 +480 640 +640 427 +640 480 +640 480 +426 640 +428 640 +640 480 +640 383 +640 425 +640 426 +640 480 +640 480 +425 640 +640 499 +480 640 +640 426 +640 379 +480 640 +640 427 +640 427 +640 427 +640 427 +640 444 +640 480 +500 500 +640 480 +640 480 +640 480 +640 480 +427 640 +640 593 +500 333 +640 427 +640 480 +640 427 +640 608 +612 612 +640 480 +640 480 +480 640 +640 480 +640 480 +240 360 +640 427 +640 480 +640 411 +640 428 +427 640 +333 500 +640 480 +500 375 +500 425 +640 480 +640 480 +612 612 +427 640 +500 453 +640 426 +640 480 +640 427 +640 479 +640 480 +640 351 +640 480 +640 420 +640 428 +640 427 +500 375 +640 446 +640 480 +640 424 +420 640 +429 640 +640 448 +640 426 +500 321 +375 500 +640 480 +640 470 +640 427 +375 500 +640 480 +500 375 +640 461 +360 640 +640 427 +428 640 +640 480 +640 374 +640 480 +640 427 +640 427 +640 427 +500 375 +640 432 +640 480 +247 500 +640 145 +640 427 +480 640 +640 427 +640 429 +640 568 +500 334 +500 375 +640 500 +640 480 +640 512 +640 480 +612 612 +640 426 +640 426 +640 427 +640 394 +640 480 +480 640 +480 640 +640 427 +640 406 +480 640 +640 426 +640 511 +640 428 +500 333 +500 363 +640 427 +640 427 +488 640 +640 480 +640 427 +640 427 +640 511 +500 375 +427 640 +640 427 +640 464 +640 480 +425 640 +640 464 +427 640 +640 480 +480 640 +640 480 +640 480 +640 480 +640 480 +640 425 +500 375 +640 418 +640 427 +480 640 +273 500 +312 462 +640 396 +640 428 +427 640 +250 333 +640 424 +511 640 +640 425 +640 428 +500 375 +640 480 +375 500 +500 375 +640 444 +640 480 +640 427 +396 640 +400 300 +640 480 +640 512 +582 640 +640 480 +640 480 +640 427 +500 375 +640 425 +427 640 +640 428 +640 480 +500 375 +640 509 +640 427 +640 425 +597 640 +612 612 +640 561 +640 480 +640 480 +640 405 +612 612 +480 640 +640 480 +480 640 +640 480 +640 425 +640 427 +500 375 +640 371 +640 478 +640 569 +500 375 +640 419 +640 426 +640 480 +424 640 +480 640 +640 419 +640 579 +640 512 +640 360 +612 612 +640 427 +640 426 +500 318 +640 480 +480 640 +500 385 +640 480 +640 480 +640 512 +640 480 +640 480 +640 539 +480 640 +640 640 +640 480 +640 360 +640 427 +500 375 +600 400 +427 640 +640 480 +640 480 +640 401 +640 427 +640 427 +640 480 +481 640 +306 500 +640 426 +640 433 +640 449 +640 480 +640 480 +581 640 +640 480 +640 478 +612 612 +560 640 +480 640 +640 480 +427 640 +640 480 +640 400 +375 500 +640 427 +640 480 +640 374 +334 500 +612 612 +500 334 +640 544 +640 480 +640 480 +640 471 +640 400 +612 612 +640 427 +640 479 +640 480 +500 375 +640 480 +612 612 +640 533 +640 427 +640 423 +356 500 +640 480 +500 371 +640 480 +640 480 +640 426 +640 427 +640 425 +640 425 +640 480 +640 480 +640 480 +640 424 +370 640 +640 425 +375 500 +640 145 +640 361 +500 332 +500 375 +640 335 +640 397 +640 521 +500 363 +479 640 +500 375 +640 480 +500 345 +640 480 +640 480 +640 480 +500 364 +640 427 +612 612 +480 640 +640 427 +640 483 +640 480 +640 427 +500 360 +640 427 +640 469 +480 640 +640 480 +640 427 +640 480 +640 427 +640 426 +480 640 +640 480 +640 404 +640 405 +640 426 +640 427 +640 228 +500 375 +426 640 +640 423 +640 428 +640 427 +640 361 +640 480 +433 640 +464 640 +640 480 +640 424 +433 500 +640 480 +640 428 +640 480 +640 473 +640 480 +500 331 +640 480 +640 360 +640 480 +640 480 +640 427 +375 500 +442 640 +450 600 +640 427 +480 640 +500 386 +640 480 +640 424 +640 457 +640 480 +427 640 +427 640 +363 640 +640 480 +640 426 +640 448 +481 640 +427 640 +480 640 +640 480 +640 427 +640 480 +640 425 +640 427 +500 375 +640 480 +640 425 +640 427 +500 375 +640 480 +480 640 +500 333 +640 427 +480 640 +640 480 +450 200 +640 480 +640 427 +480 640 +640 480 +427 640 +480 640 +640 459 +426 640 +640 427 +500 344 +640 427 +640 360 +500 333 +500 375 +640 523 +640 480 +640 424 +640 480 +640 439 +427 640 +640 480 +640 427 +432 308 +640 480 +640 480 +427 640 +499 640 +612 612 +640 480 +640 427 +640 480 +640 480 +426 640 +640 480 +640 426 +640 480 +427 640 +500 375 +640 427 +480 640 +640 458 +640 434 +500 375 +640 427 +640 429 +640 480 +640 480 +640 480 +640 428 +640 480 +640 427 +640 430 +622 640 +409 640 +640 480 +640 640 +640 423 +640 360 +640 430 +640 427 +640 563 +640 427 +640 423 +480 640 +640 480 +478 640 +612 612 +427 640 +640 427 +640 320 +640 427 +500 375 +640 427 +427 640 +640 478 +640 425 +500 375 +640 427 +640 478 +640 427 +375 500 +480 640 +480 640 +640 480 +640 640 +427 640 +640 480 +428 640 +640 405 +640 426 +640 480 +640 427 +640 491 +640 427 +640 480 +612 612 +640 427 +480 640 +640 427 +640 480 +640 427 +480 640 +376 500 +640 480 +640 480 +640 480 +480 640 +640 360 +640 480 +640 480 +427 640 +500 375 +640 466 +640 569 +640 385 +427 640 +640 428 +640 439 +500 350 +375 500 +500 375 +500 375 +625 640 +640 480 +500 332 +640 480 +333 500 +480 640 +640 427 +640 427 +640 426 +480 640 +481 640 +500 438 +480 640 +640 359 +640 418 +426 640 +500 375 +480 640 +480 640 +640 427 +640 480 +640 427 +463 500 +640 425 +426 640 +640 427 +288 216 +640 480 +640 480 +640 640 +640 427 +500 334 +640 480 +640 480 +640 480 +640 480 +640 408 +483 640 +640 428 +640 402 +640 425 +336 500 +640 426 +428 640 +640 330 +480 640 +640 425 +480 640 +640 426 +478 640 +640 449 +640 427 +500 334 +640 478 +500 375 +290 379 +640 427 +640 480 +640 480 +640 480 +640 369 +640 427 +500 321 +426 640 +640 427 +640 480 +640 480 +640 428 +500 375 +424 640 +612 612 +640 427 +500 266 +640 400 +480 640 +640 640 +640 480 +640 480 +500 375 +534 640 +640 427 +640 480 +427 640 +640 427 +640 480 +640 427 +640 360 +425 640 +480 640 +640 480 +640 480 +640 428 +427 640 +425 640 +433 640 +640 480 +640 480 +640 451 +375 500 +640 407 +640 480 +640 480 +416 640 +640 427 +480 640 +640 383 +640 614 +640 554 +500 333 +459 640 +640 427 +640 428 +640 428 +373 640 +625 640 +640 480 +640 480 +500 375 +500 375 +640 480 +528 640 +640 427 +640 480 +375 500 +640 426 +640 427 +640 427 +419 640 +640 427 +640 480 +640 480 +640 396 +640 480 +500 374 +640 428 +640 373 +640 202 +640 480 +640 425 +640 427 +640 424 +640 360 +640 427 +640 480 +640 480 +640 480 +640 427 +500 332 +640 480 +640 480 +480 640 +640 480 +640 480 +640 558 +640 480 +640 480 +426 640 +640 427 +612 612 +640 359 +480 640 +640 424 +640 480 +480 640 +612 612 +640 480 +640 480 +640 480 +500 333 +500 375 +640 425 +640 428 +640 439 +640 427 +640 360 +383 640 +640 427 +640 480 +640 322 +480 360 +426 640 +640 428 +480 640 +597 640 +640 428 +480 640 +640 446 +640 427 +640 480 +480 640 +640 527 +640 427 +640 480 +640 426 +604 640 +360 640 +360 640 +640 425 +640 480 +640 640 +640 388 +480 640 +640 427 +640 426 +500 375 +503 640 +640 427 +640 426 +640 480 +640 427 +640 499 +640 480 +640 428 +640 480 +640 425 +640 427 +640 427 +612 612 +480 640 +480 640 +640 427 +640 427 +490 640 +640 454 +640 480 +640 424 +640 428 +640 480 +640 480 +640 431 +640 478 +640 431 +427 640 +640 426 +640 360 +640 480 +640 480 +640 480 +640 480 +640 460 +490 640 +640 427 +640 480 +640 428 +640 480 +454 640 +640 403 +426 640 +640 320 +640 427 +640 393 +640 427 +612 612 +640 480 +640 480 +500 375 +620 463 +427 640 +612 612 +640 480 +640 640 +427 640 +480 640 +500 375 +446 335 +409 307 +640 426 +640 495 +640 480 +640 427 +640 480 +640 218 +640 425 +512 640 +640 480 +480 640 +489 640 +432 324 +640 424 +428 640 +640 427 +640 427 +640 427 +640 427 +500 347 +427 640 +640 427 +640 427 +640 426 +640 568 +463 640 +480 640 +640 271 +500 324 +480 640 +640 480 +640 375 +640 457 +480 640 +640 427 +640 500 +500 500 +640 480 +640 427 +640 428 +640 480 +640 427 +640 482 +640 480 +480 640 +333 500 +640 424 +427 640 +478 640 +640 424 +427 640 +640 424 +640 480 +457 640 +452 640 +640 425 +500 400 +500 375 +640 442 +225 300 +500 333 +639 640 +640 640 +640 478 +640 480 +640 480 +375 500 +629 640 +500 357 +640 427 +640 383 +500 375 +450 640 +640 426 +640 423 +426 640 +640 426 +426 640 +640 480 +640 480 +640 436 +500 375 +640 427 +640 480 +640 427 +640 480 +640 480 +640 480 +480 640 +480 640 +375 500 +480 640 +640 480 +640 433 +640 427 +433 640 +640 429 +640 480 +640 427 +500 333 +514 640 +640 480 +640 490 +640 427 +640 296 +457 640 +640 518 +640 480 +640 480 +350 232 +612 612 +640 425 +640 427 +640 480 +640 480 +640 383 +500 335 +640 424 +640 427 +640 480 +640 426 +431 640 +500 377 +640 512 +640 427 +426 640 +640 425 +640 480 +640 426 +640 427 +640 480 +500 333 +427 640 +640 429 +640 346 +640 427 +640 427 +640 427 +640 481 +640 480 +496 640 +427 640 +640 484 +639 640 +500 375 +640 427 +427 640 +640 480 +425 640 +640 284 +500 422 +640 512 +480 640 +375 500 +640 533 +640 426 +480 640 +640 413 +640 359 +640 513 +480 640 +640 366 +640 490 +640 480 +501 640 +640 424 +640 427 +640 425 +640 427 +500 308 +640 427 +500 333 +640 480 +640 427 +640 480 +640 480 +640 427 +640 428 +640 427 +640 480 +480 640 +640 427 +375 500 +640 432 +640 480 +640 427 +428 640 +640 427 +640 430 +640 480 +375 500 +640 480 +480 640 +640 640 +427 640 +640 480 +500 381 +406 640 +640 441 +333 500 +640 546 +640 480 +640 480 +500 375 +640 535 +640 426 +640 503 +640 434 +640 480 +546 366 +600 400 +640 429 +640 481 +640 480 +333 500 +640 427 +427 640 +427 640 +480 640 +640 439 +500 375 +553 640 +640 480 +639 640 +640 425 +640 480 +640 427 +640 480 +640 427 +500 333 +640 424 +512 640 +640 426 +640 359 +436 640 +640 428 +640 428 +640 426 +426 640 +480 640 +640 427 +640 427 +612 612 +640 380 +640 427 +640 427 +480 640 +640 480 +612 612 +427 640 +272 480 +640 166 +612 612 +427 640 +640 426 +640 480 +419 640 +640 426 +640 480 +640 427 +640 451 +640 427 +640 427 +640 427 +427 640 +500 375 +640 343 +640 428 +500 375 +640 427 +640 489 +640 373 +640 435 +500 375 +460 640 +640 428 +640 428 +640 411 +640 400 +288 432 +640 427 +640 480 +500 375 +640 426 +640 480 +333 500 +640 427 +500 331 +640 461 +480 640 +500 332 +640 330 +640 533 +427 640 +411 500 +492 640 +640 480 +500 419 +640 427 +359 640 +640 422 +213 318 +640 359 +640 480 +640 427 +500 500 +375 500 +640 480 +640 426 +640 428 +640 360 +640 402 +640 457 +500 364 +640 479 +640 480 +640 478 +457 640 +640 480 +640 480 +640 427 +640 428 +640 425 +500 375 +640 457 +640 478 +500 333 +357 500 +640 428 +418 500 +640 427 +480 640 +500 375 +640 426 +426 640 +640 458 +500 375 +500 375 +640 426 +640 398 +640 427 +640 427 +640 427 +426 640 +640 427 +640 480 +640 427 +640 360 +640 426 +640 480 +640 425 +640 426 +640 428 +640 360 +363 640 +640 480 +640 480 +640 480 +500 377 +428 640 +480 640 +640 481 +640 427 +428 640 +480 640 +640 427 +640 426 +480 640 +427 640 +640 466 +640 425 +640 423 +640 429 +640 480 +500 375 +424 640 +500 333 +500 333 +640 424 +612 612 +480 640 +425 640 +427 640 +640 344 +640 426 +640 427 +640 480 +640 480 +480 640 +640 480 +640 427 +640 480 +640 426 +640 427 +640 480 +640 484 +640 407 +640 448 +640 427 +640 427 +640 360 +640 427 +640 448 +640 480 +640 480 +640 480 +425 640 +640 480 +640 427 +640 425 +500 334 +640 426 +480 640 +640 480 +640 480 +640 427 +428 640 +640 428 +640 512 +429 640 +640 360 +640 480 +480 640 +640 480 +640 480 +640 480 +640 283 +640 479 +640 427 +640 425 +500 333 +640 369 +500 376 +640 480 +333 500 +612 612 +427 640 +480 640 +399 500 +640 480 +640 480 +640 348 +640 480 +640 480 +640 456 +427 640 +281 500 +480 640 +640 429 +640 478 +640 427 +640 453 +640 432 +622 640 +640 480 +640 425 +640 428 +640 427 +640 426 +640 480 +640 544 +640 427 +619 640 +480 640 +480 640 +640 480 +640 427 +640 640 +640 419 +370 640 +640 480 +375 500 +640 337 +448 336 +640 432 +500 333 +640 432 +500 375 +640 429 +500 349 +640 433 +640 480 +640 640 +640 480 +500 375 +640 480 +424 640 +640 508 +640 480 +640 480 +480 640 +640 480 +640 640 +640 480 +636 640 +640 480 +640 424 +640 327 +332 500 +480 640 +427 640 +640 425 +640 343 +640 480 +640 480 +640 428 +640 480 +375 500 +424 640 +511 640 +640 480 +640 480 +640 480 +500 375 +640 427 +480 640 +500 375 +640 464 +640 202 +640 426 +500 375 +640 480 +428 640 +640 478 +640 480 +395 500 +640 480 +500 375 +640 480 +479 640 +436 640 +480 640 +500 333 +640 430 +500 376 +640 480 +427 640 +640 428 +640 480 +640 480 +640 480 +333 500 +427 640 +640 426 +640 480 +640 480 +640 480 +640 427 +436 500 +640 453 +640 427 +640 427 +449 640 +534 640 +640 480 +426 640 +480 549 +640 320 +600 322 +467 500 +640 480 +640 480 +500 400 +640 423 +640 427 +640 480 +500 375 +500 302 +500 332 +640 480 +612 612 +640 432 +640 480 +640 427 +500 335 +360 640 +640 480 +640 428 +640 480 +427 640 +640 427 +640 511 +640 474 +500 375 +640 425 +640 427 +425 640 +640 428 +640 480 +640 426 +640 427 +640 360 +640 427 +500 391 +596 640 +640 427 +573 640 +640 480 +640 387 +640 427 +640 480 +640 427 +640 425 +640 372 +640 480 +375 500 +480 640 +426 640 +640 480 +640 480 +500 375 +640 426 +480 640 +333 500 +500 375 +640 428 +640 427 +640 480 +640 360 +427 640 +640 425 +640 427 +640 383 +500 375 +411 500 +640 434 +500 375 +640 427 +640 419 +640 428 +640 480 +640 480 +500 375 +480 640 +640 427 +640 509 +640 480 +640 421 +399 600 +640 480 +640 427 +640 429 +640 427 +500 375 +640 427 +640 427 +480 640 +640 426 +640 480 +375 500 +640 426 +640 413 +480 640 +333 500 +480 640 +640 415 +334 500 +431 640 +640 427 +640 426 +469 640 +640 480 +375 500 +612 612 +640 427 +640 478 +500 375 +640 443 +640 184 +640 406 +413 640 +640 427 +500 376 +640 427 +424 640 +373 500 +640 469 +640 427 +640 640 +480 640 +640 640 +640 478 +640 480 +640 426 +500 444 +640 426 +480 640 +640 427 +614 640 +640 426 +427 640 +600 464 +640 427 +464 640 +500 375 +640 427 +640 480 +449 640 +640 480 +480 640 +640 480 +640 480 +480 640 +640 408 +533 640 +640 426 +427 640 +640 396 +428 640 +640 480 +640 480 +640 480 +500 500 +335 500 +640 480 +427 640 +640 365 +427 640 +640 360 +508 640 +640 539 +640 428 +640 427 +500 375 +612 612 +640 424 +640 491 +640 425 +640 427 +640 480 +600 450 +359 640 +480 640 +640 480 +640 480 +640 480 +500 375 +390 500 +480 640 +480 640 +640 367 +640 480 +640 389 +426 640 +640 480 +480 640 +427 640 +470 308 +640 427 +640 427 +640 315 +640 480 +500 332 +640 480 +480 640 +500 333 +640 425 +480 640 +480 640 +640 480 +500 409 +640 427 +640 419 +480 640 +640 426 +640 427 +640 364 +500 375 +640 480 +480 640 +500 439 +500 333 +500 307 +640 480 +480 640 +427 640 +640 408 +640 475 +640 427 +640 428 +640 427 +640 408 +480 640 +500 375 +500 281 +640 428 +640 469 +480 640 +500 399 +612 612 +612 612 +612 612 +640 426 +500 335 +640 356 +375 500 +640 480 +426 640 +640 427 +640 426 +640 427 +480 640 +640 639 +500 375 +480 640 +612 612 +640 480 +640 448 +640 428 +640 480 +640 427 +543 640 +500 375 +640 427 +640 426 +640 359 +426 640 +478 640 +480 640 +640 428 +640 427 +640 426 +640 427 +640 427 +640 480 +500 340 +480 640 +640 480 +640 427 +640 480 +427 640 +640 480 +640 425 +640 427 +640 482 +500 333 +500 368 +640 427 +425 640 +640 480 +500 375 +640 428 +640 480 +640 423 +640 558 +250 234 +640 427 +478 640 +640 426 +640 427 +640 427 +426 640 +640 480 +428 640 +640 480 +640 480 +640 480 +640 399 +640 427 +640 439 +640 264 +500 375 +612 612 +640 427 +500 350 +427 640 +334 500 +500 332 +500 281 +325 500 +500 318 +480 640 +640 480 +375 500 +640 426 +640 614 +500 400 +487 640 +640 427 +640 427 +640 513 +478 640 +640 480 +500 375 +500 343 +500 375 +640 425 +640 417 +500 375 +640 427 +640 427 +640 427 +640 441 +640 426 +640 427 +640 480 +640 427 +640 383 +640 425 +635 640 +640 480 +640 355 +480 640 +640 427 +500 375 +640 480 +640 429 +640 480 +640 427 +640 480 +640 480 +640 427 +482 500 +480 640 +478 640 +640 426 +640 480 +640 424 +640 480 +630 640 +640 480 +640 480 +335 500 +480 640 +640 427 +640 480 +640 433 +640 423 +640 480 +640 480 +375 500 +640 480 +640 457 +480 640 +640 480 +640 480 +640 427 +500 375 +504 640 +640 480 +512 640 +471 640 +426 640 +319 480 +640 480 +500 371 +640 480 +640 480 +640 480 +500 375 +378 500 +427 640 +640 483 +640 541 +640 426 +640 381 +500 375 +640 423 +640 359 +640 631 +640 480 +400 600 +371 500 +640 480 +500 371 +640 480 +640 427 +478 640 +640 427 +380 500 +427 640 +500 375 +640 427 +600 600 +427 640 +640 427 +640 427 +356 500 +640 513 +482 640 +375 500 +640 480 +640 320 +612 612 +640 480 +640 640 +640 424 +480 640 +640 427 +427 640 +640 494 +639 640 +640 360 +478 640 +640 360 +640 426 +640 427 +640 427 +640 480 +640 439 +640 480 +640 427 +640 480 +640 360 +640 480 +640 480 +640 251 +640 433 +640 466 +640 480 +480 640 +640 480 +640 444 +427 640 +640 424 +480 640 +640 424 +640 458 +640 427 +424 640 +640 426 +480 640 +640 640 +473 305 +640 427 +461 640 +640 427 +478 640 +640 463 +640 480 +640 427 +640 425 +640 480 +640 360 +640 583 +500 344 +640 426 +640 425 +640 480 +413 640 +640 478 +427 640 +640 480 +424 640 +640 425 +480 640 +640 394 +640 427 +496 640 +427 640 +500 375 +640 426 +480 640 +640 429 +612 612 +640 416 +640 283 +480 640 +375 500 +427 640 +640 426 +640 424 +640 593 +640 427 +640 453 +640 429 +266 640 +640 426 +640 427 +640 499 +640 428 +640 425 +612 612 +480 640 +500 375 +375 500 +500 384 +500 333 +640 427 +640 458 +640 428 +640 467 +640 478 +640 427 +640 429 +640 426 +500 375 +640 480 +640 396 +640 512 +334 500 +480 640 +480 640 +640 427 +640 359 +640 480 +426 640 +375 500 +640 480 +640 480 +500 375 +640 434 +640 427 +640 425 +640 480 +640 457 +426 640 +375 500 +640 480 +640 344 +640 480 +640 455 +500 400 +640 427 +480 640 +640 480 +640 426 +375 500 +640 542 +500 332 +480 640 +640 427 +640 427 +426 640 +640 512 +640 500 +640 431 +640 609 +640 480 +640 478 +640 427 +640 640 +640 427 +640 427 +640 480 +640 424 +640 480 +640 480 +640 480 +480 640 +640 480 +383 640 +640 427 +640 480 +640 427 +640 480 +640 427 +640 480 +640 480 +640 480 +478 640 +640 480 +640 480 +640 427 +640 480 +640 428 +640 480 +640 427 +244 500 +426 640 +513 640 +640 480 +640 480 +640 427 +640 480 +640 480 +428 640 +640 368 +500 341 +640 426 +612 612 +640 428 +640 479 +640 427 +480 640 +640 480 +640 424 +480 640 +640 480 +640 429 +640 427 +640 427 +640 426 +640 480 +640 427 +500 375 +500 328 +640 480 +500 333 +640 427 +640 480 +640 392 +427 640 +640 640 +640 429 +480 640 +640 337 +306 500 +640 426 +427 640 +640 480 +640 427 +640 427 +500 381 +375 500 +640 472 +640 480 +500 375 +640 424 +640 480 +500 375 +480 640 +640 427 +640 480 +640 480 +500 383 +640 480 +480 640 +640 399 +612 612 +640 480 +500 375 +640 427 +500 375 +640 427 +640 427 +480 640 +640 480 +427 640 +640 427 +640 427 +346 500 +640 480 +500 400 +640 360 +478 640 +640 413 +375 500 +640 427 +640 424 +640 426 +640 425 +480 640 +478 640 +410 500 +640 640 +640 480 +500 345 +427 640 +640 419 +640 480 +640 406 +500 375 +640 528 +426 640 +359 640 +640 427 +640 428 +480 640 +500 333 +640 369 +400 535 +489 640 +480 640 +640 480 +640 480 +500 375 +640 480 +456 640 +500 375 +640 480 +640 428 +427 640 +640 425 +480 640 +640 427 +640 420 +333 500 +640 427 +428 640 +640 480 +480 640 +640 450 +640 384 +640 480 +425 640 +480 640 +500 351 +640 480 +640 562 +640 428 +640 480 +500 372 +423 640 +640 426 +640 480 +480 640 +640 426 +640 403 +640 480 +640 480 +640 480 +500 434 +427 640 +480 640 +640 424 +640 480 +480 640 +640 428 +547 640 +500 335 +640 360 +640 400 +640 427 +448 640 +500 376 +500 375 +640 481 +640 480 +640 426 +640 480 +640 478 +640 480 +640 423 +500 375 +640 200 +640 480 +600 450 +640 399 +640 480 +640 426 +640 480 +640 480 +640 480 +640 358 +480 640 +640 426 +640 428 +480 640 +640 640 +461 640 +640 480 +640 480 +640 480 +639 640 +428 640 +612 612 +640 404 +640 427 +640 427 +612 612 +640 427 +640 480 +449 640 +480 640 +640 428 +640 480 +333 500 +640 480 +500 385 +640 426 +500 375 +640 480 +640 427 +640 425 +640 427 +640 480 +640 426 +640 480 +640 480 +640 481 +640 480 +640 480 +640 428 +640 427 +427 640 +480 640 +425 640 +333 500 +640 503 +480 640 +640 427 +640 388 +640 426 +538 640 +500 375 +427 640 +640 424 +500 391 +640 231 +640 427 +640 480 +640 480 +612 612 +640 480 +426 640 +640 425 +640 478 +640 427 +640 427 +640 547 +640 360 +612 612 +640 480 +500 334 +431 500 +374 500 +640 428 +640 400 +633 640 +333 500 +640 462 +566 640 +640 359 +500 332 +425 640 +375 500 +640 425 +500 335 +640 480 +612 612 +640 425 +640 426 +487 640 +500 375 +640 424 +640 427 +640 480 +500 334 +640 427 +500 341 +640 480 +640 399 +480 640 +375 500 +480 640 +640 428 +500 334 +640 480 +640 427 +457 640 +500 375 +640 409 +375 500 +640 480 +640 480 +500 375 +375 500 +427 640 +480 640 +640 475 +640 480 +640 425 +500 375 +640 360 +500 332 +640 450 +640 480 +640 426 +500 375 +640 480 +640 480 +640 425 +640 425 +426 640 +640 425 +640 480 +640 384 +640 427 +640 427 +640 253 +640 425 +394 640 +640 426 +640 426 +640 480 +640 427 +427 640 +426 640 +640 467 +640 480 +640 458 +500 500 +640 480 +500 375 +640 427 +480 640 +640 480 +640 480 +640 421 +640 480 +640 542 +640 480 +640 430 +640 469 +640 360 +640 480 +640 355 +640 480 +612 612 +640 480 +500 334 +640 427 +432 640 +640 416 +640 360 +468 640 +640 527 +640 570 +640 428 +480 640 +640 480 +640 427 +480 640 +640 426 +640 480 +500 375 +640 360 +424 640 +478 640 +640 428 +640 427 +240 320 +427 640 +375 500 +500 375 +566 640 +640 480 +640 427 +500 335 +640 427 +500 375 +640 612 +640 480 +426 640 +640 480 +640 385 +640 424 +640 427 +640 478 +640 426 +427 640 +500 375 +640 480 +640 480 +640 258 +640 429 +640 427 +640 480 +640 480 +640 480 +640 425 +500 333 +640 480 +640 501 +640 640 +612 612 +640 424 +500 375 +640 454 +500 375 +640 388 +427 640 +425 640 +500 375 +376 500 +640 425 +640 480 +500 375 +500 357 +640 480 +640 378 +500 375 +640 431 +640 427 +640 450 +612 612 +640 427 +640 427 +640 427 +612 612 +640 480 +567 476 +480 640 +424 640 +640 428 +640 480 +640 427 +640 480 +640 426 +640 427 +640 480 +640 480 +640 480 +640 427 +480 640 +640 427 +640 480 +400 538 +640 427 +500 375 +428 640 +640 384 +640 426 +480 640 +640 488 +427 640 +640 480 +640 427 +640 424 +427 640 +640 480 +480 640 +612 612 +640 480 +480 640 +427 640 +640 466 +640 480 +640 480 +461 640 +640 480 +640 480 +500 254 +640 425 +500 375 +480 640 +480 640 +640 405 +612 612 +480 640 +514 640 +640 480 +640 480 +640 480 +400 300 +640 509 +640 424 +426 640 +640 480 +640 512 +428 640 +480 640 +612 612 +401 500 +640 478 +640 480 +640 427 +640 427 +500 375 +640 480 +640 425 +457 640 +640 427 +640 395 +480 640 +640 427 +640 478 +640 480 +640 455 +640 536 +425 640 +640 480 +640 427 +427 640 +417 500 +500 333 +480 640 +640 427 +640 360 +640 427 +427 640 +640 363 +640 480 +612 612 +640 614 +640 480 +479 640 +334 640 +640 425 +480 640 +429 640 +640 480 +640 427 +640 480 +480 640 +480 640 +500 412 +471 600 +500 333 +640 480 +640 425 +640 389 +640 339 +640 428 +640 640 +500 335 +640 426 +640 426 +425 640 +427 640 +425 640 +640 428 +427 640 +640 480 +640 427 +427 640 +640 282 +480 640 +500 281 +333 500 +458 640 +640 426 +426 640 +640 427 +640 425 +427 640 +640 480 +480 640 +640 485 +640 480 +480 640 +640 426 +427 640 +480 640 +500 326 +640 427 +640 480 +362 500 +640 480 +640 427 +332 500 +602 640 +640 480 +640 480 +480 640 +640 480 +640 427 +640 425 +640 480 +640 480 +480 640 +413 478 +640 640 +640 446 +640 249 +640 458 +640 453 +426 640 +640 563 +640 640 +640 480 +640 427 +425 640 +640 426 +480 640 +640 480 +640 565 +640 640 +640 480 +640 427 +640 427 +426 640 +640 427 +480 640 +640 427 +640 480 +500 375 +612 612 +433 640 +512 640 +640 427 +640 424 +640 480 +500 332 +640 480 +640 480 +500 375 +500 333 +640 427 +640 480 +640 480 +480 640 +500 333 +640 421 +640 480 +640 427 +640 480 +640 424 +640 480 +612 612 +640 480 +640 480 +368 640 +640 480 +640 480 +640 480 +640 480 +640 480 +500 375 +640 428 +640 342 +500 375 +480 640 +640 427 +640 427 +640 424 +640 457 +500 375 +401 640 +480 640 +640 640 +640 478 +640 419 +500 391 +640 481 +640 427 +640 427 +640 480 +640 480 +480 640 +500 274 +640 446 +640 480 +480 640 +480 640 +640 640 +612 612 +640 445 +640 480 +500 334 +640 480 +640 427 +640 427 +640 426 +640 428 +640 425 +500 321 +640 427 +640 480 +640 426 +500 333 +640 480 +608 640 +640 424 +640 426 +226 135 +640 361 +640 427 +640 480 +480 640 +640 480 +612 612 +640 591 +640 417 +390 640 +432 640 +640 397 +481 640 +640 427 +511 640 +640 427 +640 426 +500 335 +640 512 +640 480 +426 640 +640 480 +375 500 +640 480 +640 426 +640 425 +640 427 +640 379 +640 480 +333 500 +480 640 +640 480 +640 360 +640 428 +640 560 +640 359 +640 428 +640 427 +640 640 +640 427 +480 640 +480 640 +334 500 +640 427 +640 428 +640 427 +640 509 +640 480 +640 480 +527 640 +509 640 +640 427 +612 612 +640 480 +640 424 +640 480 +640 480 +640 540 +640 427 +640 368 +640 427 +500 438 +427 640 +640 427 +640 426 +640 427 +612 612 +640 480 +480 640 +640 427 +640 480 +640 480 +480 640 +427 640 +500 333 +640 480 +360 640 +640 480 +640 290 +500 333 +427 640 +640 429 +640 616 +640 428 +640 427 +640 480 +640 465 +640 427 +640 427 +479 640 +500 375 +481 640 +640 480 +640 480 +500 286 +640 480 +500 375 +500 375 +640 480 +640 640 +640 424 +427 640 +640 359 +640 480 +427 640 +640 428 +612 612 +333 500 +640 427 +333 500 +640 480 +612 612 +500 337 +500 375 +480 640 +427 640 +640 476 +640 481 +640 427 +500 375 +640 480 +427 640 +640 480 +640 478 +640 425 +500 332 +640 640 +640 480 +640 425 +640 480 +640 409 +459 640 +478 640 +427 640 +640 480 +640 468 +640 480 +640 427 +500 449 +640 400 +640 360 +333 500 +480 640 +640 480 +640 480 +426 640 +640 415 +305 400 +640 480 +640 419 +640 480 +640 427 +640 425 +300 400 +470 353 +640 521 +612 612 +640 480 +640 512 +480 640 +640 640 +640 480 +500 366 +640 480 +333 500 +640 427 +640 480 +640 427 +427 640 +366 500 +640 427 +640 427 +640 480 +640 426 +640 480 +640 480 +640 480 +640 424 +500 375 +640 427 +640 463 +640 512 +640 480 +375 500 +400 400 +640 426 +640 481 +640 480 +336 248 +640 480 +480 640 +640 274 +640 480 +333 500 +480 640 +640 480 +640 427 +640 400 +640 427 +480 640 +427 640 +428 640 +500 333 +401 640 +480 640 +640 424 +640 480 +375 500 +379 640 +640 480 +480 640 +640 478 +375 500 +640 427 +360 640 +429 640 +500 333 +640 427 +480 640 +640 480 +640 415 +640 293 +620 640 +480 640 +375 500 +640 426 +640 360 +640 481 +640 427 +496 640 +360 640 +640 480 +640 427 +480 640 +640 480 +512 640 +476 640 +480 640 +494 640 +375 500 +640 360 +640 426 +640 428 +640 480 +640 425 +640 426 +640 374 +640 427 +640 480 +640 479 +640 426 +640 427 +640 427 +480 640 +446 640 +640 426 +640 480 +640 427 +640 385 +640 480 +640 488 +640 480 +427 640 +427 640 +640 426 +640 480 +389 500 +640 480 +640 480 +640 480 +425 640 +480 640 +300 225 +640 515 +640 426 +640 480 +640 505 +347 491 +640 385 +640 427 +500 335 +640 426 +640 427 +428 640 +640 452 +428 640 +640 427 +640 427 +427 640 +640 424 +640 480 +480 640 +640 427 +480 640 +640 480 +640 480 +640 427 +640 427 +640 425 +640 426 +640 426 +494 640 +427 640 +640 380 +640 480 +640 480 +427 640 +427 640 +333 500 +640 427 +480 640 +500 334 +640 640 +640 361 +426 640 +640 480 +640 480 +640 480 +640 425 +640 428 +640 480 +640 480 +640 480 +640 426 +640 479 +457 640 +640 424 +500 332 +334 500 +375 500 +640 478 +500 333 +640 480 +500 400 +640 428 +640 480 +427 640 +500 375 +500 334 +500 291 +640 480 +640 480 +640 480 +640 427 +640 510 +640 480 +640 480 +428 640 +480 640 +500 375 +640 480 +640 512 +640 275 +640 512 +640 424 +612 612 +426 640 +640 481 +375 500 +640 457 +640 427 +619 640 +640 427 +640 480 +500 375 +640 398 +640 480 +427 640 +500 375 +480 640 +427 640 +500 375 +640 426 +640 427 +480 640 +500 375 +640 413 +640 424 +480 640 +640 426 +640 480 +500 400 +521 640 +427 640 +640 462 +640 480 +640 480 +427 640 +500 347 +640 427 +640 427 +597 400 +640 426 +640 427 +640 480 +640 480 +640 431 +640 419 +640 479 +640 428 +480 640 +640 427 +640 428 +426 640 +640 311 +480 640 +640 427 +640 513 +640 424 +500 358 +480 640 +640 480 +300 426 +640 480 +377 640 +480 640 +427 640 +640 427 +640 425 +640 320 +640 480 +640 360 +427 640 +640 403 +640 425 +480 640 +640 426 +480 640 +428 640 +426 640 +640 427 +459 640 +369 500 +480 640 +640 480 +480 640 +480 640 +500 281 +640 425 +640 468 +640 440 +640 427 +640 534 +640 478 +640 482 +640 426 +500 375 +424 640 +640 331 +640 480 +541 640 +640 268 +640 427 +640 425 +513 640 +640 426 +640 527 +500 333 +640 427 +498 640 +612 612 +339 500 +640 427 +500 391 +480 640 +427 640 +500 333 +427 640 +640 480 +480 640 +640 422 +349 500 +480 640 +333 500 +640 425 +424 640 +640 427 +500 339 +640 425 +640 460 +478 640 +640 468 +640 427 +640 434 +640 427 +640 427 +640 426 +500 375 +640 427 +500 375 +640 388 +640 426 +375 500 +640 426 +640 426 +640 425 +426 640 +640 424 +387 500 +640 480 +427 640 +640 427 +640 427 +640 427 +640 480 +480 640 +425 640 +640 480 +640 640 +640 424 +612 612 +500 333 +500 375 +640 501 +640 480 +640 577 +640 480 +500 375 +425 640 +500 500 +640 426 +640 427 +640 426 +640 480 +640 428 +500 370 +640 360 +500 399 +500 333 +349 500 +640 427 +640 427 +480 640 +640 480 +640 263 +640 480 +447 640 +640 427 +640 317 +640 480 +428 640 +640 426 +480 640 +640 427 +640 480 +375 500 +640 512 +640 430 +480 640 +480 640 +480 640 +500 500 +500 287 +640 480 +640 426 +427 640 +426 640 +640 480 +640 427 +640 427 +375 500 +546 640 +320 240 +425 640 +500 335 +640 425 +640 367 +640 480 +640 427 +640 480 +478 640 +640 427 +640 391 +640 429 +640 480 +640 427 +640 384 +427 640 +640 360 +640 495 +640 478 +640 427 +640 480 +500 218 +640 480 +500 333 +640 480 +640 480 +427 640 +640 480 +640 426 +375 500 +640 427 +640 427 +640 428 +640 618 +480 640 +640 427 +640 427 +554 640 +640 427 +640 427 +640 480 +640 499 +640 427 +640 420 +640 480 +640 480 +425 640 +500 332 +640 480 +640 423 +408 640 +640 480 +529 640 +640 426 +640 480 +500 375 +640 427 +640 508 +500 375 +427 640 +640 480 +640 427 +612 612 +480 640 +640 251 +480 640 +612 612 +500 375 +426 640 +640 480 +480 640 +536 640 +640 480 +640 425 +640 467 +640 480 +438 640 +448 290 +480 640 +640 480 +640 426 +640 480 +640 480 +512 640 +630 630 +640 383 +426 640 +640 404 +500 333 +500 375 +500 327 +429 640 +640 480 +640 469 +640 426 +640 537 +640 359 +640 640 +640 480 +480 640 +640 427 +500 375 +444 640 +640 480 +640 427 +640 480 +640 480 +427 640 +480 640 +640 399 +480 640 +640 434 +640 480 +640 480 +640 480 +640 480 +640 480 +640 428 +640 427 +640 427 +640 480 +640 394 +640 482 +461 640 +640 480 +640 427 +640 469 +640 424 +640 480 +640 448 +640 262 +480 640 +425 640 +640 360 +500 375 +640 480 +640 480 +480 640 +640 429 +640 480 +640 480 +640 426 +640 565 +640 480 +480 640 +427 640 +640 426 +512 640 +500 375 +500 375 +500 333 +500 375 +429 640 +640 427 +480 640 +640 320 +500 500 +640 480 +640 427 +424 640 +640 480 +640 403 +640 425 +500 375 +500 334 +640 480 +640 615 +640 480 +640 426 +640 480 +640 427 +640 480 +375 500 +640 480 +640 385 +640 368 +640 427 +492 500 +640 480 +640 480 +640 442 +640 404 +640 480 +640 400 +427 640 +640 427 +640 480 +612 612 +427 640 +640 436 +330 500 +640 428 +640 480 +640 480 +640 436 +640 494 +640 360 +320 240 +640 427 +480 640 +640 427 +640 480 +640 480 +640 480 +375 500 +640 500 +640 640 +640 480 +640 426 +640 536 +640 398 +427 640 +640 427 +640 480 +640 426 +640 427 +640 480 +480 640 +427 640 +500 375 +640 404 +500 357 +480 640 +640 427 +640 480 +429 640 +640 480 +640 429 +640 426 +640 429 +427 640 +427 640 +640 473 +480 640 +333 500 +426 640 +480 640 +640 480 +640 480 +640 426 +640 480 +480 360 +500 321 +640 428 +640 427 +640 480 +640 480 +500 375 +427 640 +640 503 +427 640 +640 427 +424 640 +610 405 +640 426 +426 640 +640 474 +640 428 +480 640 +640 403 +640 480 +640 428 +640 427 +640 480 +527 640 +449 640 +640 426 +480 640 +640 430 +500 500 +640 480 +640 427 +640 445 +640 440 +640 478 +500 375 +640 427 +640 539 +640 479 +512 640 +640 480 +640 480 +500 375 +640 480 +500 375 +640 428 +640 478 +500 334 +424 640 +640 424 +640 423 +640 427 +375 500 +640 480 +640 427 +640 427 +427 640 +640 480 +640 427 +640 360 +640 427 +640 427 +428 640 +640 480 +640 428 +640 480 +500 333 +640 480 +425 640 +640 551 +640 511 +427 640 +640 425 +640 480 +612 612 +375 500 +490 367 +398 640 +640 480 +640 504 +640 480 +640 480 +518 640 +640 480 +640 427 +640 413 +640 394 +640 427 +640 427 +640 428 +448 336 +480 640 +500 332 +640 426 +427 640 +424 640 +480 640 +640 426 +478 640 +640 480 +640 360 +436 640 +500 375 +640 544 +427 640 +640 640 +425 640 +640 428 +640 428 +425 640 +480 640 +640 425 +640 425 +426 640 +640 427 +480 640 +640 427 +427 640 +435 640 +480 640 +500 379 +640 640 +640 427 +640 427 +640 480 +640 480 +480 640 +640 480 +640 326 +640 427 +640 480 +500 333 +640 425 +453 640 +480 640 +640 428 +640 428 +441 640 +426 640 +640 480 +640 486 +640 427 +500 375 +500 375 +640 428 +640 494 +324 432 +640 427 +640 428 +480 640 +320 480 +640 480 +640 422 +640 427 +640 405 +640 480 +432 640 +640 427 +640 480 +640 426 +640 475 +458 640 +640 427 +612 612 +640 360 +507 480 +640 427 +480 640 +640 480 +640 480 +640 360 +640 428 +427 640 +500 375 +427 640 +640 427 +640 478 +640 480 +640 480 +417 640 +640 424 +640 427 +640 480 +640 426 +640 512 +640 480 +640 480 +640 427 +480 361 +640 427 +480 640 +640 484 +375 500 +427 640 +480 640 +500 375 +416 640 +640 408 +640 609 +612 612 +640 480 +640 360 +500 499 +640 480 +640 427 +640 427 +640 426 +480 640 +500 375 +640 529 +500 375 +640 480 +640 480 +640 425 +640 480 +500 375 +640 470 +640 426 +500 375 +640 480 +640 426 +640 432 +640 424 +640 316 +640 429 +640 463 +640 480 +458 640 +640 480 +640 427 +640 480 +640 427 +640 425 +612 612 +480 640 +375 500 +640 480 +640 483 +427 640 +640 480 +640 512 +499 374 +233 640 +640 312 +640 480 +640 457 +640 445 +500 375 +640 425 +640 427 +427 640 +640 427 +640 427 +480 640 +640 480 +500 375 +640 480 +427 640 +640 480 +640 428 +640 480 +480 640 +640 640 +640 513 +640 422 +500 325 +426 640 +640 480 +480 640 +500 346 +375 500 +640 480 +640 424 +500 375 +640 456 +640 456 +640 436 +640 426 +640 480 +640 428 +640 437 +300 225 +429 640 +640 480 +640 480 +640 480 +375 500 +640 424 +640 480 +640 480 +640 427 +638 479 +640 316 +500 333 +640 481 +640 427 +640 480 +640 427 +480 640 +640 427 +640 480 +500 332 +640 427 +640 480 +640 431 +584 430 +640 361 +640 640 +500 333 +640 364 +640 480 +480 640 +640 480 +560 640 +640 480 +640 428 +427 640 +443 640 +640 428 +480 640 +640 427 +480 640 +640 427 +640 512 +425 640 +480 640 +480 640 +362 640 +640 379 +640 480 +640 407 +640 480 +640 480 +480 640 +640 480 +427 640 +640 428 +640 427 +375 500 +500 375 +640 480 +640 640 +500 336 +640 480 +361 640 +640 424 +160 120 +333 500 +640 427 +540 455 +640 426 +640 425 +640 425 +640 428 +333 500 +640 419 +640 425 +640 428 +640 480 +500 375 +640 420 +500 375 +480 640 +640 480 +640 424 +640 480 +640 322 +640 478 +640 427 +640 480 +480 640 +640 429 +640 453 +480 640 +500 337 +240 320 +480 640 +640 480 +640 428 +640 427 +640 428 +640 480 +637 640 +640 480 +640 640 +640 480 +640 482 +500 321 +500 375 +640 480 +640 480 +500 333 +426 640 +480 640 +640 427 +480 640 +640 427 +640 427 +640 427 +500 297 +640 423 +500 333 +640 427 +640 480 +500 375 +640 480 +500 364 +640 427 +640 480 +480 640 +500 376 +640 427 +500 375 +640 398 +640 480 +640 427 +640 480 +428 640 +640 413 +640 640 +640 427 +640 427 +640 480 +480 640 +480 640 +640 427 +640 428 +640 427 +480 640 +640 480 +640 448 +640 480 +640 428 +640 391 +640 419 +640 426 +640 480 +640 429 +640 426 +640 480 +640 480 +640 528 +640 426 +640 480 +640 424 +427 640 +480 640 +640 480 +500 333 +500 375 +640 480 +480 360 +500 375 +640 510 +480 640 +640 480 +640 480 +640 627 +640 427 +640 480 +640 427 +640 427 +427 640 +480 640 +640 427 +419 640 +426 640 +640 424 +640 480 +640 625 +640 426 +487 500 +640 427 +427 640 +640 480 +500 375 +640 429 +425 640 +640 286 +375 500 +640 429 +640 480 +480 640 +500 375 +612 612 +640 480 +424 640 +640 427 +640 427 +640 382 +640 446 +640 427 +640 427 +640 472 +428 640 +640 427 +640 427 +500 333 +508 640 +500 375 +500 375 +612 612 +427 640 +640 425 +640 425 +640 480 +640 478 +640 427 +640 428 +427 640 +640 480 +480 640 +426 640 +600 393 +640 360 +480 640 +640 361 +640 427 +500 467 +425 640 +640 480 +640 427 +500 333 +500 333 +640 480 +640 359 +640 427 +595 428 +640 427 +490 500 +640 427 +640 360 +640 429 +612 612 +640 377 +640 454 +640 480 +428 640 +640 640 +640 427 +640 480 +640 384 +640 429 +500 375 +427 640 +640 427 +640 480 +640 480 +640 480 +640 480 +500 375 +640 480 +640 427 +640 480 +640 480 +640 428 +500 375 +640 424 +640 419 +333 500 +640 425 +612 612 +640 480 +640 427 +640 426 +640 427 +640 455 +640 427 +480 640 +640 476 +640 480 +640 448 +426 640 +427 640 +640 427 +640 480 +640 427 +428 640 +640 426 +640 426 +500 333 +640 427 +640 408 +640 558 +640 480 +500 375 +640 640 +640 482 +640 426 +383 640 +500 281 +480 640 +375 500 +640 427 +640 425 +640 455 +494 640 +640 373 +640 427 +640 427 +640 425 +480 640 +640 480 +640 427 +640 428 +640 480 +500 298 +640 427 +640 409 +640 426 +640 480 +640 314 +640 424 +640 427 +640 427 +640 512 +640 489 +500 333 +480 640 +640 298 +500 375 +612 612 +640 249 +640 360 +454 640 +640 427 +640 640 +640 480 +500 375 +640 481 +640 480 +640 426 +640 453 +640 427 +480 640 +640 427 +480 640 +640 388 +640 480 +640 480 +500 316 +640 480 +640 480 +425 640 +640 480 +500 375 +640 480 +640 427 +480 640 +631 640 +640 480 +640 426 +640 476 +640 427 +640 359 +640 549 +426 640 +640 480 +481 640 +640 389 +640 420 +640 640 +640 427 +619 640 +640 530 +547 640 +640 425 +640 456 +640 480 +640 429 +640 360 +640 480 +640 426 +640 480 +500 375 +640 476 +640 480 +496 640 +640 360 +640 401 +402 640 +640 428 +640 427 +640 480 +640 427 +640 424 +640 480 +640 428 +640 480 +640 427 +640 426 +640 480 +480 640 +640 480 +480 640 +640 427 +640 427 +640 468 +640 427 +640 427 +480 640 +500 375 +612 612 +640 374 +640 433 +640 426 +640 640 +640 478 +458 640 +640 360 +333 500 +640 480 +640 480 +612 612 +640 480 +428 640 +480 640 +480 640 +640 480 +612 612 +640 610 +640 309 +640 640 +640 428 +640 427 +640 427 +480 640 +500 375 +640 427 +640 480 +640 480 +478 640 +500 333 +640 427 +640 427 +640 479 +640 480 +640 480 +500 375 +640 480 +640 425 +640 480 +640 480 +500 375 +640 480 +640 480 +640 480 +526 640 +512 640 +500 406 +500 222 +640 480 +640 427 +640 463 +640 426 +480 640 +500 247 +500 375 +640 480 +640 429 +640 426 +500 333 +640 423 +640 430 +640 427 +640 427 +640 480 +500 375 +640 426 +500 375 +640 424 +640 427 +612 612 +640 480 +427 640 +640 428 +426 640 +640 640 +609 640 +640 480 +480 640 +640 428 +500 332 +640 360 +483 640 +478 640 +640 327 +640 480 +640 359 +640 427 +640 438 +427 640 +640 478 +640 426 +640 480 +480 640 +640 480 +640 480 +427 640 +640 427 +640 413 +640 480 +640 427 +333 500 +640 480 +426 640 +640 480 +640 424 +640 427 +640 480 +640 480 +640 264 +640 368 +640 426 +375 500 +494 640 +490 500 +640 478 +500 335 +640 480 +480 640 +500 333 +346 500 +640 480 +640 415 +640 480 +640 426 +487 640 +500 375 +500 333 +640 371 +640 426 +640 438 +640 480 +640 427 +428 640 +427 640 +439 640 +640 434 +640 480 +500 335 +640 480 +500 333 +640 427 +640 480 +640 427 +427 640 +640 480 +640 478 +424 640 +640 480 +640 328 +640 427 +640 452 +640 360 +500 375 +640 480 +429 640 +640 446 +640 640 +640 426 +640 427 +480 640 +640 364 +640 480 +429 500 +640 480 +500 375 +427 640 +480 640 +471 640 +336 500 +480 640 +640 427 +480 640 +480 640 +496 400 +640 427 +640 158 +640 480 +640 480 +640 480 +640 606 +640 480 +640 427 +640 480 +640 480 +640 429 +640 424 +640 480 +375 500 +500 375 +375 500 +463 640 +530 353 +480 640 +480 640 +427 640 +402 640 +640 480 +500 333 +640 480 +640 427 +640 428 +640 502 +640 480 +591 640 +640 480 +500 375 +486 640 +426 640 +640 480 +427 640 +640 480 +427 640 +640 480 +640 428 +640 427 +640 480 +640 478 +640 480 +640 427 +640 426 +640 480 +640 427 +640 426 +640 424 +427 640 +640 563 +640 427 +640 480 +640 480 +640 471 +640 425 +640 427 +375 500 +640 384 +640 429 +640 480 +428 640 +640 404 +333 500 +640 427 +640 417 +640 480 +612 612 +375 500 +640 480 +612 612 +480 640 +640 427 +640 426 +640 480 +640 480 +480 640 +424 640 +640 427 +640 480 +640 427 +640 394 +640 428 +500 375 +640 640 +640 425 +500 500 +469 640 +375 500 +640 432 +480 640 +425 640 +457 640 +612 612 +427 640 +640 473 +640 478 +375 500 +640 426 +640 360 +640 426 +427 640 +425 640 +640 426 +480 640 +640 428 +640 426 +462 500 +375 500 +640 480 +640 429 +640 432 +640 427 +346 640 +500 333 +640 427 +640 625 +640 418 +640 425 +611 640 +640 512 +640 480 +640 428 +480 640 +640 411 +640 442 +640 480 +640 480 +480 640 +640 480 +640 435 +640 434 +640 424 +480 640 +640 481 +640 437 +640 480 +640 427 +640 426 +640 506 +640 480 +640 480 +640 361 +640 427 +640 480 +640 480 +640 423 +640 427 +640 480 +640 640 +640 427 +640 640 +480 640 +427 640 +640 349 +640 427 +500 353 +640 427 +640 480 +637 637 +427 640 +480 640 +640 480 +640 427 +519 389 +640 480 +640 480 +640 388 +480 640 +640 480 +380 640 +500 375 +349 640 +640 429 +480 640 +640 480 +640 480 +640 427 +496 640 +640 479 +427 640 +612 612 +640 360 +375 500 +500 342 +375 500 +640 427 +550 365 +640 428 +640 480 +640 428 +333 500 +427 640 +640 480 +640 449 +640 480 +640 480 +640 480 +640 480 +612 612 +640 426 +428 640 +640 480 +640 427 +427 640 +640 352 +411 640 +480 640 +640 480 +640 427 +640 480 +323 500 +480 640 +640 623 +612 612 +640 427 +500 375 +640 360 +640 480 +640 427 +640 427 +640 427 +500 333 +442 338 +640 426 +640 493 +480 640 +500 366 +333 500 +640 427 +640 431 +640 427 +480 640 +640 480 +481 640 +333 500 +640 447 +426 640 +480 640 +426 640 +612 612 +640 427 +640 427 +640 427 +640 389 +640 522 +640 480 +640 480 +612 612 +375 500 +640 427 +534 640 +640 480 +640 479 +398 640 +640 480 +640 480 +640 489 +640 480 +640 360 +640 483 +640 533 +640 425 +426 640 +500 334 +640 480 +640 373 +422 640 +500 374 +640 407 +640 383 +640 511 +480 640 +640 427 +320 240 +424 640 +640 489 +424 640 +640 427 +640 478 +640 480 +480 640 +640 398 +428 640 +640 426 +433 640 +640 360 +555 640 +480 640 +640 427 +640 428 +640 426 +640 480 +480 640 +500 375 +417 431 +500 375 +427 640 +480 640 +500 375 +640 428 +427 640 +640 427 +480 640 +640 427 +500 375 +490 640 +612 612 +423 640 +500 333 +375 500 +640 480 +640 480 +426 640 +426 640 +480 640 +640 427 +480 640 +640 480 +640 480 +640 424 +640 480 +640 463 +640 427 +640 291 +640 480 +640 427 +640 395 +640 480 +640 457 +360 640 +640 427 +415 640 +640 427 +640 435 +500 375 +640 480 +640 427 +427 640 +640 425 +640 440 +333 500 +640 480 +640 372 +500 338 +640 426 +640 480 +640 480 +640 360 +423 640 +427 640 +640 522 +333 500 +640 428 +640 498 +500 500 +422 640 +640 480 +480 640 +640 480 +640 512 +640 480 +640 480 +500 375 +500 332 +640 427 +429 640 +375 500 +640 480 +360 500 +640 480 +640 426 +640 426 +640 330 +500 333 +640 478 +640 480 +640 429 +640 480 +640 463 +410 640 +427 640 +640 480 +640 383 +460 640 +640 480 +640 480 +640 474 +640 426 +612 612 +640 480 +640 480 +500 496 +426 640 +640 467 +640 360 +427 640 +640 426 +480 640 +640 640 +480 640 +640 427 +323 500 +478 640 +640 427 +500 383 +640 425 +640 426 +424 640 +640 480 +640 426 +360 640 +312 640 +640 323 +479 640 +640 428 +500 375 +640 480 +640 480 +640 480 +427 640 +480 640 +640 359 +640 480 +640 465 +426 640 +640 480 +640 480 +640 480 +362 500 +640 467 +500 375 +640 480 +480 640 +640 427 +640 426 +640 480 +640 436 +640 480 +424 640 +640 428 +571 640 +640 427 +640 480 +640 482 +320 240 +640 398 +500 333 +500 333 +427 640 +500 375 +480 640 +427 640 +640 480 +376 640 +567 640 +480 640 +640 480 +640 426 +640 480 +640 479 +640 480 +427 640 +466 640 +640 480 +640 484 +640 482 +640 480 +640 480 +640 428 +427 640 +640 480 +640 511 +640 429 +640 425 +427 640 +640 427 +500 375 +640 427 +427 640 +427 640 +640 480 +500 375 +479 640 +640 427 +427 640 +500 500 +487 640 +640 459 +640 427 +640 480 +640 480 +640 480 +640 427 +473 640 +640 360 +426 640 +640 480 +640 409 +427 640 +640 359 +640 423 +500 300 +500 375 +640 427 +640 423 +640 425 +456 640 +640 328 +427 640 +640 480 +640 426 +427 640 +640 427 +500 375 +640 480 +500 375 +640 483 +399 500 +640 480 +640 427 +640 427 +640 427 +500 334 +640 480 +400 500 +427 640 +346 500 +640 313 +640 427 +640 360 +480 640 +640 478 +640 427 +640 427 +480 640 +640 480 +640 541 +500 322 +427 640 +640 379 +518 640 +640 426 +426 640 +640 425 +480 640 +640 428 +640 360 +640 426 +640 474 +480 640 +640 480 +640 480 +640 480 +500 375 +383 640 +480 640 +640 480 +640 414 +640 512 +640 427 +427 640 +500 333 +480 640 +640 425 +640 427 +600 453 +640 480 +640 425 +640 360 +640 480 +500 375 +640 360 +500 332 +640 442 +640 426 +500 331 +640 427 +640 435 +427 640 +640 427 +500 494 +640 420 +640 427 +640 427 +640 427 +500 472 +640 480 +500 375 +431 640 +500 333 +640 396 +640 428 +640 480 +500 375 +640 480 +500 465 +640 425 +640 424 +640 623 +640 430 +480 640 +640 480 +333 500 +640 480 +500 457 +640 479 +640 427 +640 427 +640 427 +500 252 +640 424 +427 640 +640 427 +640 480 +640 485 +640 426 +640 427 +640 433 +500 333 +480 640 +640 480 +428 640 +640 427 +640 427 +640 478 +500 457 +500 334 +640 480 +640 427 +349 640 +640 448 +380 500 +480 640 +640 437 +640 427 +544 640 +640 427 +427 640 +425 640 +612 612 +500 400 +640 480 +480 640 +375 500 +640 480 +640 640 +640 480 +500 375 +640 426 +640 424 +640 617 +500 377 +429 640 +640 479 +500 375 +640 429 +512 640 +426 640 +640 427 +640 427 +640 424 +640 480 +640 480 +640 442 +640 480 +640 491 +640 494 +640 480 +612 612 +467 500 +612 612 +640 534 +640 494 +640 409 +640 478 +480 640 +500 375 +427 640 +640 480 +500 348 +640 425 +640 480 +507 640 +640 480 +640 401 +640 480 +640 360 +633 640 +640 427 +500 333 +640 425 +428 285 +500 332 +640 429 +519 640 +640 480 +640 458 +640 480 +640 480 +334 500 +640 427 +480 640 +640 426 +640 426 +480 640 +640 428 +426 640 +480 640 +640 361 +640 480 +480 640 +612 612 +500 270 +640 419 +357 500 +640 427 +640 401 +512 640 +640 426 +612 612 +443 640 +427 640 +480 640 +640 480 +375 500 +427 640 +500 375 +458 640 +640 427 +640 457 +428 640 +640 479 +640 308 +500 332 +640 428 +427 640 +640 480 +640 427 +500 375 +500 375 +612 612 +640 426 +480 640 +361 640 +640 425 +640 480 +375 500 +427 640 +640 426 +640 425 +480 640 +640 558 +640 480 +640 434 +640 428 +640 398 +640 421 +640 480 +640 640 +640 428 +480 640 +640 427 +640 480 +640 427 +612 612 +640 426 +640 424 +573 640 +640 426 +640 427 +500 375 +640 480 +242 350 +640 426 +427 640 +480 640 +467 640 +640 427 +480 640 +640 480 +640 480 +640 427 +640 499 +480 640 +640 427 +640 480 +640 427 +391 640 +640 425 +640 426 +500 332 +480 640 +612 612 +480 640 +640 480 +439 640 +480 640 +478 640 +433 640 +640 480 +480 640 +640 194 +640 480 +640 480 +640 480 +640 640 +480 640 +640 619 +640 427 +640 480 +640 480 +640 426 +612 612 +640 428 +640 484 +427 640 +640 480 +500 374 +425 640 +640 425 +640 427 +428 640 +640 640 +640 427 +509 640 +333 500 +500 375 +325 485 +513 640 +640 425 +640 426 +500 375 +640 480 +640 428 +460 640 +640 480 +480 640 +640 480 +640 421 +640 427 +640 480 +480 640 +480 640 +640 262 +640 480 +640 480 +640 424 +640 427 +507 640 +640 427 +640 531 +427 640 +640 480 +640 480 +640 427 +500 375 +640 464 +522 640 +640 427 +500 332 +425 640 +640 427 +640 473 +640 398 +640 480 +640 428 +640 359 +640 480 +480 640 +640 426 +480 640 +333 500 +640 424 +480 640 +612 612 +500 375 +426 640 +640 427 +640 426 +480 640 +640 428 +640 425 +480 640 +487 640 +541 640 +512 640 +640 427 +424 640 +500 375 +640 446 +480 640 +480 640 +640 425 +428 640 +640 427 +640 389 +480 640 +640 320 +480 640 +480 640 +459 640 +640 469 +640 286 +640 427 +640 480 +640 549 +640 360 +375 500 +612 612 +640 484 +640 427 +640 427 +640 417 +640 480 +640 508 +483 640 +640 640 +612 612 +640 480 +427 640 +640 427 +500 375 +500 400 +480 640 +640 480 +640 640 +640 480 +640 640 +640 320 +480 640 +640 427 +640 480 +640 480 +640 480 +375 500 +640 427 +427 640 +640 428 +640 480 +640 389 +640 480 +640 428 +640 480 +500 375 +640 425 +640 429 +640 427 +640 480 +640 513 +640 344 +640 480 +429 640 +480 640 +500 394 +500 375 +500 354 +426 640 +500 343 +640 428 +640 427 +640 480 +640 423 +150 200 +640 426 +640 360 +640 480 +481 500 +300 225 +640 426 +480 640 +640 423 +500 375 +480 640 +427 640 +640 360 +600 473 +640 480 +640 427 +640 427 +640 427 +640 480 +640 464 +375 500 +427 640 +427 640 +640 400 +480 640 +640 427 +500 332 +480 640 +640 497 +427 640 +427 640 +640 425 +360 640 +633 640 +591 640 +480 360 +640 427 +640 427 +640 439 +427 640 +640 481 +480 640 +480 640 +427 640 +640 427 +500 400 +478 640 +500 375 +640 479 +640 427 +640 427 +640 513 +640 360 +640 427 +640 512 +640 427 +640 427 +640 480 +640 427 +640 480 +334 500 +640 480 +415 640 +427 640 +640 427 +640 480 +640 640 +500 332 +640 427 +480 640 +640 411 +640 480 +640 419 +500 333 +640 480 +426 640 +482 640 +640 480 +640 480 +640 427 +478 640 +375 500 +640 427 +500 375 +640 425 +59 72 +640 428 +405 500 +640 427 +500 330 +427 640 +427 640 +400 500 +640 480 +375 500 +438 640 +640 480 +500 362 +426 640 +480 640 +480 640 +640 426 +640 480 +640 480 +427 640 +640 480 +640 425 +640 447 +640 360 +640 480 +640 428 +500 399 +500 332 +640 427 +640 480 +357 500 +640 444 +640 426 +456 640 +480 640 +640 335 +478 640 +640 427 +640 480 +640 425 +640 461 +500 375 +640 480 +427 640 +480 640 +499 500 +640 480 +640 427 +640 424 +640 426 +640 429 +500 480 +640 426 +480 640 +640 427 +640 427 +500 375 +480 640 +326 246 +640 416 +640 427 +640 391 +640 427 +640 427 +640 426 +640 423 +500 375 +640 640 +640 480 +640 426 +640 427 +640 480 +640 427 +640 427 +640 426 +428 640 +480 640 +640 427 +640 427 +375 500 +426 640 +480 640 +640 360 +640 457 +640 480 +640 480 +640 427 +640 480 +640 480 +640 480 +480 640 +480 640 +612 612 +428 640 +640 480 +640 425 +639 640 +480 640 +640 486 +427 640 +640 481 +640 426 +640 400 +640 480 +427 640 +551 640 +640 426 +640 480 +640 480 +640 480 +640 480 +375 500 +640 480 +640 428 +479 640 +640 513 +604 402 +519 640 +640 401 +640 360 +640 425 +500 333 +425 640 +640 425 +640 480 +640 419 +500 375 +640 640 +640 427 +640 427 +640 480 +640 414 +612 612 +480 640 +480 640 +478 640 +480 640 +640 480 +500 375 +640 640 +640 428 +640 426 +640 480 +640 463 +640 480 +640 428 +640 427 +640 480 +500 333 +500 377 +640 480 +640 454 +640 347 +500 331 +640 427 +640 427 +640 480 +500 375 +640 405 +432 640 +640 427 +500 400 +640 480 +640 480 +640 602 +192 640 +640 480 +640 484 +480 640 +640 427 +500 334 +640 480 +640 480 +375 500 +640 429 +640 347 +640 426 +640 480 +640 480 +640 427 +640 449 +640 427 +640 427 +480 640 +427 640 +640 466 +612 612 +480 640 +640 427 +640 426 +640 424 +640 429 +424 640 +640 425 +640 449 +640 426 +427 640 +640 480 +640 427 +640 480 +640 534 +640 480 +480 640 +480 640 +640 318 +640 426 +640 427 +640 493 +640 427 +640 480 +640 480 +640 380 +640 480 +480 640 +640 480 +640 396 +640 480 +640 427 +640 480 +462 371 +640 461 +640 427 +485 640 +500 640 +368 640 +480 640 +640 427 +640 480 +508 640 +640 424 +293 500 +500 375 +429 640 +640 426 +640 480 +640 480 +640 480 +640 481 +640 360 +640 427 +335 500 +640 479 +640 480 +640 427 +640 427 +640 416 +499 640 +640 480 +480 640 +640 425 +640 480 +640 480 +640 425 +640 426 +640 306 +480 640 +480 640 +413 640 +640 268 +375 500 +640 427 +640 480 +500 375 +640 284 +640 480 +480 640 +640 427 +480 640 +406 640 +640 480 +500 375 +480 640 +640 467 +480 640 +426 640 +640 427 +640 427 +427 640 +640 480 +500 333 +331 500 +480 640 +478 640 +423 640 +361 640 +640 480 +640 429 +640 640 +506 640 +640 500 +640 427 +500 333 +480 640 +612 612 +429 640 +375 500 +640 480 +427 640 +640 427 +640 428 +640 427 +500 375 +640 506 +383 640 +640 426 +640 428 +640 480 +640 427 +500 333 +640 480 +356 640 +426 640 +612 612 +640 512 +640 424 +640 480 +640 480 +640 480 +640 480 +640 426 +478 640 +640 424 +426 640 +425 640 +640 428 +500 375 +333 500 +500 333 +612 612 +425 640 +640 480 +640 429 +640 426 +640 426 +640 480 +640 480 +640 427 +640 425 +640 360 +500 333 +480 640 +640 474 +480 640 +640 428 +640 483 +446 597 +640 413 +500 375 +480 640 +640 427 +500 333 +640 427 +640 368 +500 375 +640 368 +640 640 +465 640 +428 640 +640 428 +640 383 +500 375 +640 427 +640 403 +640 480 +640 466 +333 500 +640 480 +640 426 +480 640 +640 426 +640 426 +640 480 +640 480 +640 478 +640 422 +640 480 +640 426 +640 480 +480 640 +640 480 +640 427 +640 427 +427 640 +612 612 +612 612 +640 427 +640 406 +548 640 +640 427 +640 512 +428 640 +500 333 +500 376 +640 419 +640 400 +424 640 +500 375 +612 612 +640 480 +640 426 +640 456 +640 425 +640 480 +640 480 +428 640 +427 640 +453 640 +640 427 +640 480 +612 612 +640 480 +427 640 +640 480 +360 640 +500 375 +333 500 +640 426 +640 278 +500 334 +640 427 +510 640 +640 424 +500 368 +640 478 +640 480 +640 383 +375 500 +480 640 +640 480 +640 480 +640 480 +500 375 +640 427 +640 425 +427 640 +480 640 +640 455 +640 434 +640 427 +521 640 +640 425 +426 640 +480 640 +640 427 +640 429 +640 480 +640 427 +640 428 +640 480 +640 427 +480 640 +640 480 +640 480 +426 640 +508 640 +448 500 +428 640 +640 427 +640 425 +640 480 +612 612 +640 426 +612 612 +640 427 +640 480 +640 480 +480 640 +500 219 +640 480 +640 374 +426 640 +414 640 +640 427 +640 427 +640 538 +640 426 +480 640 +426 640 +640 480 +640 480 +640 480 +480 640 +640 431 +500 333 +640 427 +428 640 +640 427 +640 425 +500 402 +640 425 +640 480 +640 480 +426 640 +640 480 +384 640 +521 617 +478 640 +428 640 +640 427 +640 480 +640 480 +640 426 +640 480 +640 214 +640 609 +640 427 +640 480 +612 612 +640 398 +480 640 +640 480 +640 426 +640 426 +427 640 +428 640 +640 480 +640 480 +640 480 +427 640 +500 375 +375 500 +640 480 +480 640 +500 375 +640 640 +640 480 +480 640 +375 500 +640 594 +480 640 +500 369 +640 427 +640 480 +640 426 +500 375 +427 640 +640 395 +640 424 +640 427 +640 428 +480 640 +640 480 +480 640 +375 500 +640 427 +640 427 +640 482 +427 640 +429 640 +500 375 +334 500 +640 567 +640 236 +612 612 +640 474 +640 480 +640 443 +640 480 +427 640 +640 429 +424 640 +640 389 +640 426 +640 427 +428 640 +640 480 +492 640 +500 336 +297 500 +640 424 +640 480 +640 427 +351 494 +426 640 +640 426 +500 375 +640 427 +640 428 +640 480 +640 423 +494 640 +375 500 +425 640 +306 408 +640 360 +640 480 +640 640 +500 380 +500 375 +640 480 +640 478 +500 375 +640 426 +638 640 +640 480 +333 500 +480 640 +640 427 +500 375 +500 283 +640 481 +640 426 +500 394 +640 427 +640 480 +268 400 +640 473 +640 408 +640 480 +640 427 +427 640 +640 427 +640 266 +332 500 +640 427 +640 425 +426 640 +500 337 +640 427 +568 320 +556 640 +640 480 +500 333 +500 375 +640 482 +288 432 +640 427 +640 480 +640 480 +500 375 +640 458 +640 427 +640 480 +640 480 +360 640 +640 480 +640 427 +640 426 +640 428 +640 480 +427 640 +480 640 +427 640 +333 500 +480 640 +640 427 +428 640 +480 640 +427 640 +424 640 +500 331 +500 414 +480 640 +500 346 +360 640 +640 480 +640 421 +640 425 +640 480 +480 640 +426 640 +480 640 +640 425 +481 640 +640 427 +500 334 +640 429 +500 333 +480 640 +375 500 +640 480 +640 427 +640 404 +480 640 +640 336 +640 480 +640 427 +424 640 +640 428 +640 426 +640 359 +640 424 +640 360 +640 426 +640 427 +640 480 +480 640 +640 480 +640 480 +640 427 +640 360 +640 427 +640 427 +640 480 +640 427 +426 640 +640 640 +500 404 +640 480 +640 480 +640 427 +640 427 +640 480 +640 427 +640 640 +640 413 +450 600 +640 427 +333 500 +240 320 +640 433 +640 480 +640 480 +480 640 +640 424 +425 640 +456 640 +500 375 +640 427 +484 640 +640 548 +640 480 +319 212 +640 480 +425 640 +400 600 +640 480 +640 387 +640 427 +396 640 +640 480 +640 480 +480 640 +640 480 +500 375 +640 480 +425 640 +640 152 +480 640 +467 640 +640 428 +309 500 +334 500 +640 457 +480 640 +640 480 +428 640 +640 427 +640 448 +640 428 +640 512 +500 375 +640 427 +640 480 +640 480 +640 480 +640 426 +640 427 +640 489 +375 500 +640 488 +640 427 +640 427 +640 427 +640 480 +640 480 +640 480 +500 375 +500 335 +640 480 +640 480 +480 640 +640 349 +480 640 +480 640 +640 428 +480 640 +640 329 +511 640 +640 427 +640 480 +640 480 +640 480 +480 640 +640 480 +500 375 +640 427 +640 491 +477 640 +640 426 +640 480 +640 480 +500 331 +427 640 +512 640 +640 426 +640 289 +500 333 +640 640 +640 427 +640 480 +640 429 +640 431 +640 427 +640 426 +640 480 +640 427 +640 426 +640 480 +640 480 +640 480 +500 375 +640 480 +480 640 +640 427 +640 427 +640 610 +640 427 +480 640 +500 358 +640 429 +640 480 +480 640 +426 640 +640 426 +427 640 +640 640 +640 426 +640 425 +500 334 +640 480 +640 216 +425 640 +640 427 +640 416 +375 500 +640 480 +640 512 +481 640 +640 480 +640 415 +480 640 +640 360 +640 426 +480 640 +640 424 +640 427 +375 500 +432 640 +640 480 +640 349 +640 424 +500 333 +428 640 +480 640 +640 461 +640 422 +640 429 +640 480 +640 480 +640 480 +640 640 +640 480 +640 454 +640 371 +481 640 +640 640 +640 480 +640 480 +640 425 +640 640 +640 452 +640 315 +640 427 +640 368 +612 612 +500 375 +640 457 +640 579 +640 427 +427 640 +600 367 +640 480 +628 640 +640 360 +640 480 +640 427 +480 640 +479 640 +640 234 +640 420 +500 375 +640 480 +640 427 +640 480 +640 480 +640 427 +612 612 +500 400 +500 333 +640 480 +427 640 +640 427 +334 640 +612 612 +640 480 +640 427 +612 612 +640 480 +489 640 +427 640 +640 428 +640 427 +640 509 +640 480 +500 102 +427 640 +640 428 +640 480 +640 360 +588 640 +423 640 +640 507 +375 500 +375 500 +612 612 +640 428 +427 640 +500 375 +640 480 +640 480 +640 480 +640 427 +640 427 +640 383 +640 428 +640 480 +640 425 +640 426 +640 472 +640 400 +639 640 +500 333 +500 375 +375 500 +500 333 +640 480 +640 426 +640 424 +427 640 +640 427 +640 425 +640 480 +640 427 +500 375 +640 409 +500 375 +640 423 +640 424 +640 425 +640 470 +640 480 +640 480 +612 612 +640 640 +640 480 +640 426 +640 427 +612 612 +640 480 +426 640 +640 401 +640 253 +640 427 +640 427 +427 640 +640 480 +640 427 +640 480 +640 588 +640 495 +640 429 +640 427 +640 480 +640 427 +491 500 +480 640 +640 406 +640 480 +640 425 +427 640 +640 425 +640 427 +427 640 +640 427 +500 333 +640 427 +500 375 +640 349 +426 640 +640 480 +375 500 +640 480 +426 640 +640 360 +640 425 +640 484 +426 640 +333 500 +640 480 +640 480 +640 427 +640 361 +640 480 +640 425 +640 379 +640 480 +640 480 +423 640 +323 500 +640 377 +640 427 +640 480 +640 424 +640 360 +640 480 +640 474 +640 480 +640 489 +640 480 +500 331 +480 640 +584 640 +333 500 +640 427 +640 429 +640 427 +640 480 +640 480 +640 427 +480 640 +426 640 +640 450 +640 480 +640 425 +640 427 +640 480 +640 427 +640 480 +640 480 +480 640 +478 640 +640 427 +640 480 +640 427 +480 640 +640 480 +640 480 +640 427 +478 640 +427 640 +640 427 +427 640 +640 375 +500 375 +640 427 +640 427 +591 640 +640 480 +640 480 +480 640 +640 480 +640 480 +480 640 +640 480 +640 381 +640 480 +500 393 +640 480 +424 640 +640 480 +640 480 +429 640 +640 427 +640 480 +500 375 +428 640 +314 500 +640 427 +640 480 +480 640 +550 473 +640 457 +640 480 +640 480 +480 640 +640 426 +640 480 +366 640 +640 378 +457 640 +640 503 +640 427 +427 640 +640 480 +510 640 +640 420 +640 625 +375 500 +500 375 +640 480 +640 480 +640 427 +427 640 +640 458 +640 481 +427 640 +427 640 +640 480 +640 427 +612 612 +640 425 +640 360 +640 480 +640 391 +612 612 +640 427 +640 427 +640 480 +640 480 +640 480 +640 427 +640 289 +480 640 +263 350 +640 479 +640 426 +480 640 +640 480 +640 640 +480 640 +640 427 +640 480 +537 403 +427 640 +427 640 +480 640 +438 640 +640 427 +500 375 +640 480 +429 640 +480 640 +500 338 +640 424 +500 375 +640 438 +640 424 +640 303 +612 612 +640 480 +480 640 +640 425 +640 640 +640 480 +513 640 +500 332 +640 427 +500 486 +640 444 +640 424 +427 640 +640 480 +480 640 +640 427 +640 427 +640 480 +640 427 +640 480 +640 431 +640 426 +640 480 +640 429 +375 500 +480 640 +640 480 +640 427 +640 427 +640 444 +480 640 +640 480 +240 320 +640 480 +500 308 +640 478 +640 427 +640 480 +640 480 +640 425 +640 601 +500 333 +640 480 +500 375 +640 427 +640 425 +640 427 +480 640 +640 427 +640 426 +500 333 +640 480 +640 425 +500 400 +640 479 +640 427 +640 425 +640 424 +640 480 +375 500 +500 375 +333 500 +640 467 +640 480 +640 428 +424 640 +640 480 +640 640 +640 469 +640 428 +640 427 +375 500 +640 640 +500 375 +640 427 +500 334 +334 500 +640 424 +427 640 +426 640 +480 640 +640 416 +640 427 +500 375 +640 480 +640 480 +640 382 +640 480 +500 472 +640 426 +640 426 +640 427 +640 426 +375 500 +508 640 +640 418 +333 500 +640 480 +640 480 +640 401 +480 640 +426 640 +640 478 +480 640 +640 428 +375 500 +427 640 +640 427 +640 536 +640 409 +640 413 +640 425 +478 640 +640 396 +640 480 +640 360 +640 480 +640 427 +480 640 +640 425 +640 425 +640 480 +640 424 +640 484 +640 429 +640 427 +480 640 +500 375 +500 333 +500 375 +500 375 +480 640 +500 333 +427 640 +500 311 +427 640 +480 640 +640 480 +640 480 +640 427 +428 640 +640 424 +640 427 +640 480 +333 500 +640 407 +640 428 +640 334 +480 640 +640 427 +615 461 +428 640 +427 640 +640 426 +480 640 +640 424 +500 332 +640 320 +640 425 +583 640 +500 375 +640 480 +624 640 +640 217 +640 400 +360 270 +500 375 +640 426 +640 430 +640 480 +285 640 +640 480 +640 480 +640 427 +444 640 +480 640 +640 403 +640 427 +640 427 +640 461 +640 427 +640 511 +640 480 +640 320 +427 640 +480 640 +640 427 +640 333 +640 457 +640 441 +640 480 +614 640 +480 640 +333 500 +352 288 +640 457 +640 480 +640 480 +509 503 +425 640 +640 425 +427 640 +640 391 +640 427 +640 480 +480 640 +640 400 +640 482 +375 500 +640 427 +640 511 +480 640 +500 327 +640 427 +640 360 +640 480 +640 480 +478 640 +640 428 +640 480 +640 424 +640 480 +460 640 +480 640 +375 500 +640 434 +640 480 +480 640 +640 426 +640 427 +640 427 +375 500 +640 480 +640 450 +640 428 +640 480 +500 358 +640 424 +640 480 +500 375 +640 480 +480 640 +640 480 +480 640 +640 424 +640 480 +480 640 +640 427 +375 500 +640 451 +640 480 +640 427 +427 640 +480 640 +426 640 +640 359 +640 403 +640 480 +640 480 +436 640 +640 480 +640 426 +640 480 +640 480 +640 480 +640 433 +640 427 +640 480 +480 640 +640 480 +640 480 +640 480 +640 536 +640 480 +500 326 +640 605 +427 640 +640 427 +429 640 +640 480 +640 360 +425 640 +500 333 +427 640 +640 434 +640 427 +426 640 +640 427 +480 640 +640 426 +240 320 +640 424 +640 551 +434 640 +640 424 +375 500 +640 426 +640 427 +500 375 +427 640 +640 356 +640 480 +480 640 +640 480 +375 500 +640 480 +640 427 +640 427 +480 640 +640 424 +640 422 +640 427 +640 480 +640 480 +428 640 +480 640 +480 640 +425 640 +480 640 +478 640 +500 354 +480 640 +640 426 +500 375 +500 333 +480 640 +640 480 +427 640 +640 427 +500 375 +640 481 +640 530 +640 480 +480 640 +495 500 +640 480 +640 503 +426 500 +479 640 +480 640 +640 556 +640 480 +488 286 +640 427 +640 480 +640 480 +461 640 +500 341 +640 416 +500 375 +640 418 +640 480 +457 640 +334 500 +640 427 +500 332 +640 480 +500 500 +640 480 +640 480 +640 354 +640 426 +640 428 +612 612 +640 428 +612 612 +640 480 +640 480 +640 480 +640 427 +640 480 +640 480 +640 427 +640 480 +500 375 +375 500 +640 480 +375 500 +640 480 +500 375 +640 477 +640 425 +640 430 +640 430 +640 426 +640 480 +500 400 +640 478 +640 427 +640 427 +427 640 +640 460 +640 427 +612 612 +640 424 +640 480 +570 640 +640 241 +640 426 +640 480 +640 480 +640 480 +427 640 +640 427 +500 375 +626 640 +640 427 +640 509 +640 480 +382 640 +640 427 +640 640 +480 640 +640 480 +500 375 +500 354 +640 480 +640 425 +640 427 +612 612 +640 427 +640 427 +640 359 +640 427 +640 480 +480 640 +612 612 +480 640 +640 480 +640 480 +500 376 +640 444 +640 426 +501 640 +640 480 +640 480 +500 375 +640 427 +612 612 +443 640 +400 500 +478 640 +640 424 +600 400 +447 640 +466 640 +640 480 +640 386 +640 426 +640 427 +480 640 +640 360 +640 480 +640 427 +500 333 +479 640 +640 590 +427 640 +640 425 +500 324 +640 480 +640 326 +500 375 +426 640 +330 500 +480 640 +640 480 +640 480 +500 375 +612 612 +382 640 +640 427 +426 640 +640 480 +640 480 +640 640 +640 427 +640 360 +500 375 +640 427 +640 480 +428 640 +640 480 +640 419 +640 425 +500 375 +640 481 +640 426 +640 480 +500 432 +640 427 +640 480 +640 427 +480 640 +640 425 +500 400 +480 640 +640 480 +640 480 +640 480 +640 480 +640 427 +640 427 +640 377 +425 640 +612 612 +640 427 +640 463 +640 640 +488 500 +640 456 +640 530 +480 640 +640 427 +500 291 +640 426 +640 427 +640 480 +480 640 +640 427 +640 480 +640 480 +640 427 +480 640 +640 360 +334 500 +640 428 +640 427 +640 427 +357 500 +500 400 +640 427 +640 427 +640 480 +375 500 +640 444 +500 333 +426 640 +427 640 +640 428 +640 427 +500 375 +640 425 +640 480 +640 427 +640 424 +500 492 +500 375 +640 480 +640 427 +640 480 +640 504 +500 375 +640 424 +640 386 +640 480 +480 640 +640 422 +640 480 +640 426 +500 335 +640 427 +335 500 +523 640 +640 426 +640 420 +360 270 +423 640 +640 427 +640 420 +500 375 +428 640 +500 335 +640 428 +640 480 +640 426 +640 480 +500 375 +427 640 +426 640 +640 368 +500 333 +640 360 +640 480 +427 640 +427 640 +640 360 +640 410 +480 640 +640 427 +640 330 +334 500 +640 427 +640 640 +500 349 +500 332 +640 430 +500 375 +640 480 +640 490 +640 480 +640 428 +640 428 +640 480 +640 480 +332 500 +640 379 +640 427 +478 640 +640 427 +640 427 +640 480 +640 640 +640 406 +481 640 +640 502 +640 480 +640 478 +640 425 +500 375 +640 480 +640 426 +640 390 +640 480 +640 480 +375 500 +640 427 +480 640 +640 480 +427 640 +640 426 +612 612 +640 480 +640 284 +500 375 +480 640 +640 483 +640 481 +640 427 +500 375 +573 598 +640 428 +640 291 +500 339 +426 640 +500 332 +640 425 +457 640 +612 612 +640 400 +640 427 +375 500 +500 334 +640 427 +640 361 +640 400 +640 631 +640 320 +640 480 +480 640 +640 480 +640 480 +640 427 +500 375 +500 483 +640 480 +500 377 +640 480 +500 333 +640 491 +640 508 +640 426 +500 333 +640 480 +640 480 +640 468 +640 360 +640 427 +640 443 +629 640 +640 282 +640 383 +640 478 +640 427 +640 480 +500 375 +640 427 +640 480 +495 640 +333 500 +640 424 +640 429 +640 430 +640 480 +640 480 +640 480 +491 640 +640 424 +640 428 +640 427 +640 480 +640 482 +640 441 +500 375 +500 375 +500 375 +640 458 +640 427 +640 427 +640 480 +640 424 +426 640 +393 640 +640 426 +640 424 +640 229 +640 480 +323 640 +640 478 +500 375 +612 612 +640 383 +640 360 +333 500 +427 640 +640 427 +640 257 +500 333 +640 480 +640 427 +640 424 +640 458 +640 480 +640 427 +640 427 +640 480 +640 517 +640 360 +500 375 +427 640 +640 480 +500 375 +640 480 +335 500 +600 450 +500 333 +431 640 +640 480 +640 427 +640 478 +640 426 +640 521 +640 428 +640 480 +640 479 +640 640 +640 480 +640 427 +500 375 +640 480 +640 480 +640 480 +500 357 +640 586 +640 480 +500 333 +500 349 +480 640 +500 333 +640 478 +467 640 +426 640 +640 480 +424 640 +500 500 +640 426 +640 480 +478 640 +640 360 +640 480 +428 640 +640 428 +640 428 +640 574 +640 480 +480 640 +640 480 +640 427 +640 480 +640 480 +640 480 +640 427 +500 375 +640 427 +500 375 +640 480 +640 471 +500 375 +602 640 +500 375 +480 640 +640 480 +640 427 +640 427 +427 640 +640 427 +640 428 +640 427 +640 438 +640 480 +480 640 +640 400 +500 375 +480 640 +450 481 +425 640 +640 480 +428 640 +500 375 +640 424 +640 427 +570 640 +640 480 +640 427 +640 523 +450 600 +640 427 +528 604 +640 439 +610 423 +500 499 +427 640 +640 425 +640 427 +640 480 +426 640 +640 480 +640 425 +640 360 +480 640 +640 427 +640 426 +480 640 +640 443 +640 484 +640 480 +640 480 +500 333 +500 375 +480 640 +500 374 +640 423 +500 375 +640 361 +640 415 +500 375 +431 640 +435 640 +640 424 +640 360 +612 407 +640 427 +426 640 +640 640 +640 480 +478 640 +640 517 +640 480 +402 600 +296 444 +640 427 +480 640 +640 428 +427 640 +480 360 +500 255 +640 383 +640 426 +480 640 +500 334 +500 375 +500 335 +480 640 +640 480 +500 333 +640 480 +640 397 +640 428 +480 364 +640 427 +640 428 +640 360 +640 480 +640 426 +640 427 +427 640 +640 480 +640 428 +640 484 +640 425 +254 192 +640 484 +640 500 +640 480 +640 480 +640 424 +640 480 +640 480 +640 428 +429 640 +480 640 +428 640 +449 640 +640 424 +612 612 +640 527 +612 612 +500 375 +336 500 +640 480 +640 427 +640 427 +640 428 +500 333 +640 427 +480 640 +640 509 +640 457 +640 427 +640 427 +640 425 +640 480 +640 480 +500 334 +500 375 +640 427 +640 428 +427 640 +640 480 +612 612 +500 333 +640 544 +640 480 +640 427 +640 427 +604 453 +375 500 +640 360 +640 480 +640 480 +640 427 +640 427 +597 640 +640 428 +640 359 +640 427 +427 640 +459 640 +526 640 +640 424 +427 640 +640 513 +359 500 +640 437 +640 481 +640 480 +500 375 +640 427 +640 480 +640 480 +640 425 +640 512 +640 449 +500 333 +640 480 +640 424 +457 640 +640 427 +640 427 +640 480 +640 427 +500 333 +500 334 +640 472 +500 333 +640 478 +640 480 +333 640 +640 480 +500 375 +640 427 +640 427 +640 480 +480 640 +640 480 +640 426 +640 429 +508 640 +640 359 +480 640 +640 427 +640 480 +640 427 +500 375 +640 480 +427 640 +640 427 +640 480 +640 480 +640 428 +640 478 +375 500 +640 378 +640 429 +640 480 +500 333 +500 500 +443 450 +640 418 +640 480 +640 427 +640 427 +480 640 +640 424 +640 426 +583 640 +500 317 +500 239 +640 480 +640 427 +640 427 +640 480 +500 500 +480 640 +427 640 +640 428 +612 612 +640 480 +640 427 +363 500 +640 480 +480 640 +640 480 +640 427 +640 360 +375 500 +640 480 +480 640 +480 640 +640 329 +303 640 +640 479 +640 427 +640 426 +640 425 +480 640 +481 640 +322 640 +375 500 +480 640 +640 640 +640 321 +480 640 +500 375 +612 612 +640 480 +640 426 +640 427 +640 446 +500 375 +640 428 +480 640 +640 424 +640 427 +640 480 +640 640 +556 640 +640 443 +449 640 +640 425 +640 427 +500 375 +640 480 +500 400 +424 640 +640 480 +640 480 +640 425 +640 428 +640 427 +480 640 +640 427 +640 424 +640 480 +640 513 +640 428 +427 640 +640 479 +640 483 +640 480 +640 427 +500 375 +640 480 +640 431 +640 426 +500 375 +640 425 +333 500 +640 480 +640 480 +640 480 +640 383 +640 360 +480 640 +640 425 +427 640 +427 640 +480 640 +640 480 +640 480 +612 612 +480 640 +640 454 +640 480 +500 319 +500 485 +426 640 +640 480 +640 392 +640 426 +612 612 +500 383 +427 640 +640 427 +640 431 +640 427 +640 452 +500 335 +640 449 +640 429 +640 480 +640 453 +640 426 +640 473 +640 473 +640 480 +640 480 +640 419 +375 500 +640 427 +640 427 +640 427 +426 640 +640 360 +640 569 +640 480 +640 427 +425 640 +640 427 +500 207 +480 640 +500 375 +640 427 +640 376 +640 480 +640 456 +612 612 +500 332 +640 480 +640 480 +640 462 +640 427 +640 427 +427 640 +640 480 +640 480 +400 500 +500 375 +640 350 +640 640 +439 640 +640 480 +640 480 +640 480 +640 480 +569 640 +640 356 +640 437 +640 427 +640 428 +426 640 +640 376 +640 308 +640 469 +640 373 +640 480 +640 480 +500 375 +640 427 +640 423 +640 480 +640 413 +480 640 +612 612 +640 480 +480 640 +427 640 +640 427 +640 430 +480 640 +640 471 +640 480 +640 426 +640 480 +436 640 +640 426 +612 612 +425 640 +640 480 +640 427 +640 417 +640 426 +640 480 +512 640 +640 427 +575 575 +640 174 +640 441 +640 504 +640 480 +640 480 +480 640 +416 640 +333 500 +640 436 +640 480 +640 480 +640 427 +640 480 +640 480 +640 475 +640 423 +640 480 +640 478 +640 401 +640 425 +640 414 +640 478 +500 405 +500 375 +640 439 +640 426 +640 480 +640 456 +500 375 +640 480 +500 375 +640 428 +640 204 +640 427 +640 426 +640 480 +640 426 +624 640 +640 640 +640 193 +500 375 +640 428 +427 640 +486 640 +640 360 +640 242 +640 424 +640 360 +640 480 +640 479 +500 377 +640 606 +640 482 +640 425 +640 480 +604 453 +480 397 +427 640 +640 480 +500 448 +320 240 +500 500 +640 210 +640 424 +500 341 +640 480 +480 360 +500 218 +640 338 +500 470 +640 490 +640 479 +425 640 +640 480 +640 427 +640 478 +640 492 +640 480 +500 333 +500 375 +480 640 +640 480 +640 427 +640 515 +640 480 +640 480 +444 595 +640 344 +376 500 +640 427 +640 427 +640 429 +640 428 +640 480 +640 480 +640 427 +640 480 +640 427 +640 428 +336 500 +640 426 +640 577 +480 640 +640 426 +500 331 +640 427 +640 480 +500 375 +640 514 +640 640 +640 480 +630 640 +640 480 +480 640 +612 612 +640 480 +392 218 +640 427 +640 427 +640 425 +640 310 +640 480 +640 480 +640 427 +640 427 +640 425 +640 427 +640 427 +640 426 +640 425 +480 640 +500 375 +500 375 +640 427 +640 480 +640 425 +400 640 +640 423 +640 480 +640 480 +427 640 +640 427 +640 468 +640 424 +640 359 +150 225 +640 385 +640 625 +640 480 +640 480 +640 425 +640 640 +375 500 +640 480 +500 317 +640 427 +640 457 +375 500 +640 480 +640 426 +640 427 +640 351 +640 480 +640 640 +640 480 +480 640 +640 432 +500 167 +480 640 +640 428 +640 429 +427 640 +500 340 +425 640 +500 396 +240 320 +640 427 +640 428 +640 480 +640 480 +640 400 +640 480 +640 427 +640 480 +360 640 +640 424 +375 500 +612 612 +640 533 +640 428 +481 640 +500 500 +640 429 +500 335 +500 375 +500 375 +640 426 +640 427 +640 426 +640 480 +640 427 +333 500 +640 480 +486 640 +427 640 +640 637 +640 480 +500 500 +640 426 +640 428 +427 640 +640 640 +640 427 +480 640 +640 484 +640 426 +640 427 +640 320 +640 305 +640 480 +640 480 +426 640 +640 438 +640 480 +640 480 +640 427 +640 478 +640 481 +375 500 +612 612 +640 177 +500 427 +480 640 +500 333 +426 640 +480 640 +640 574 +640 461 +640 512 +640 428 +640 480 +500 333 +640 509 +640 427 +640 480 +640 528 +425 640 +612 612 +640 427 +640 455 +640 430 +640 375 +640 427 +640 480 +640 480 +500 375 +640 426 +500 332 +640 427 +640 640 +640 509 +640 529 +640 480 +640 415 +640 425 +640 427 +640 480 +640 480 +640 480 +640 640 +427 640 +640 427 +427 640 +480 640 +640 426 +333 500 +640 454 +640 427 +640 480 +640 640 +640 480 +640 429 +424 640 +640 581 +640 331 +500 375 +640 480 +640 427 +640 403 +640 480 +640 426 +640 480 +640 348 +640 298 +640 480 +640 160 +500 385 +425 640 +640 480 +640 480 +433 640 +640 551 +424 640 +640 462 +480 640 +640 424 +500 375 +640 583 +640 427 +427 640 +640 425 +640 521 +640 480 +640 480 +425 640 +640 426 +333 500 +640 424 +480 640 +426 640 +249 640 +640 427 +500 375 +374 500 +612 612 +640 427 +640 480 +308 500 +640 480 +640 466 +640 480 +500 375 +640 480 +640 427 +612 612 +640 480 +640 426 +640 416 +480 640 +500 333 +640 380 +427 640 +640 480 +640 383 +500 335 +500 375 +500 500 +640 441 +346 500 +480 640 +612 612 +640 427 +640 425 +426 640 +640 427 +640 427 +640 427 +640 480 +640 480 +640 478 +640 427 +640 480 +612 612 +640 428 +640 429 +640 480 +500 375 +640 480 +480 272 +640 480 +640 480 +640 560 +500 319 +480 640 +640 427 +640 426 +500 375 +427 640 +640 427 +640 427 +640 425 +500 375 +640 480 +640 480 +426 640 +640 439 +640 480 +640 292 +480 640 +500 347 +480 640 +640 427 +640 480 +480 640 +640 427 +640 478 +640 512 +640 480 +640 480 +500 340 +425 640 +640 480 +640 478 +512 640 +500 375 +640 426 +426 640 +640 480 +640 424 +333 500 +640 328 +480 640 +640 480 +640 480 +447 500 +640 427 +640 371 +480 640 +427 640 +640 480 +500 375 +640 480 +640 211 +640 427 +375 500 +480 360 +640 424 +480 640 +480 640 +480 640 +480 640 +500 500 +612 612 +545 640 +640 480 +427 640 +640 480 +498 640 +500 333 +640 466 +640 416 +640 480 +612 612 +480 640 +322 500 +640 399 +500 375 +640 480 +640 457 +640 480 +640 426 +640 425 +640 480 +640 480 +500 375 +640 427 +375 500 +640 480 +640 480 +640 481 +640 425 +640 421 +426 640 +640 427 +427 640 +612 612 +640 426 +640 360 +640 470 +640 640 +640 427 +640 360 +500 333 +640 430 +640 480 +500 334 +640 425 +640 427 +640 480 +640 429 +614 640 +640 427 +640 338 +640 480 +640 480 +640 427 +640 480 +478 640 +640 481 +514 640 +640 480 +640 426 +640 422 +640 480 +640 348 +640 480 +640 480 +640 426 +640 480 +640 480 +640 427 +500 375 +500 330 +640 427 +640 479 +480 640 +640 480 +612 612 +640 427 +640 427 +361 431 +640 493 +640 480 +612 612 +388 500 +640 425 +427 640 +640 504 +640 428 +640 480 +640 424 +640 425 +640 426 +480 640 +612 612 +640 424 +640 426 +640 480 +640 427 +640 506 +640 425 +401 640 +640 427 +640 482 +640 437 +640 480 +500 328 +640 480 +640 480 +478 640 +500 375 +480 640 +640 360 +640 480 +426 640 +640 437 +640 424 +427 640 +640 518 +640 426 +500 387 +640 480 +640 640 +640 380 +640 480 +640 480 +333 500 +480 640 +640 376 +640 407 +640 493 +640 407 +640 480 +389 640 +640 480 +480 640 +611 640 +640 480 +500 375 +500 332 +640 348 +640 440 +640 480 +640 480 +335 500 +640 480 +500 375 +427 640 +451 640 +494 640 +640 361 +426 640 +640 281 +640 480 +426 640 +640 481 +640 508 +640 411 +609 640 +480 640 +456 640 +612 612 +640 480 +640 640 +375 500 +640 427 +500 333 +640 425 +640 480 +500 375 +500 375 +640 536 +500 375 +640 480 +640 599 +640 426 +500 283 +640 480 +429 640 +640 360 +640 386 +426 640 +640 426 +640 640 +640 425 +640 426 +640 480 +640 427 +369 500 +640 427 +640 480 +640 480 +640 480 +425 640 +427 640 +640 501 +480 640 +640 427 +375 500 +640 480 +640 428 +640 427 +511 640 +480 640 +640 427 +581 345 +640 468 +640 480 +640 579 +640 424 +426 640 +427 640 +640 427 +640 388 +640 480 +640 480 +640 425 +640 428 +333 500 +427 640 +640 426 +500 375 +640 419 +640 480 +640 480 +640 428 +640 640 +640 480 +500 375 +427 640 +640 360 +500 375 +640 426 +640 427 +427 640 +360 640 +640 480 +500 400 +640 426 +640 512 +640 518 +500 406 +640 480 +480 640 +640 478 +640 454 +375 500 +640 480 +480 640 +640 427 +640 360 +500 333 +640 480 +640 427 +426 640 +500 375 +426 640 +375 500 +640 480 +640 427 +640 480 +428 640 +640 418 +640 480 +640 480 +640 428 +640 427 +640 426 +640 480 +640 449 +640 427 +427 640 +425 640 +640 480 +640 479 +640 480 +640 427 +480 640 +640 427 +333 500 +640 480 +426 640 +640 428 +640 478 +500 375 +427 640 +444 640 +640 480 +640 480 +640 427 +640 466 +426 319 +373 640 +640 421 +640 448 +421 640 +640 427 +640 480 +640 445 +480 640 +396 640 +640 480 +640 480 +640 476 +480 640 +640 426 +612 612 +640 394 +640 480 +640 480 +640 480 +500 402 +640 427 +640 428 +640 427 +640 480 +640 480 +640 360 +480 640 +640 480 +504 378 +512 640 +640 480 +640 427 +640 215 +425 640 +500 375 +640 597 +640 427 +612 612 +500 374 +480 640 +640 427 +640 480 +483 640 +480 640 +640 480 +500 329 +500 375 +500 438 +640 425 +567 640 +640 480 +640 480 +375 500 +427 640 +640 480 +500 375 +375 500 +640 480 +640 480 +500 393 +461 640 +640 427 +500 375 +640 499 +500 375 +640 427 +480 640 +350 450 +640 427 +640 640 +640 427 +640 512 +480 640 +400 257 +500 333 +640 356 +640 360 +526 640 +500 333 +640 427 +391 640 +379 640 +640 425 +640 480 +500 375 +640 501 +500 335 +640 480 +500 281 +640 640 +480 640 +480 640 +500 351 +640 427 +480 640 +480 640 +640 480 +640 480 +500 375 +371 500 +640 480 +427 640 +640 424 +640 427 +500 381 +500 297 +640 480 +480 640 +640 436 +480 640 +640 518 +480 640 +640 321 +640 428 +640 480 +640 553 +500 500 +480 640 +493 640 +500 233 +640 427 +640 480 +640 480 +640 458 +500 375 +640 480 +500 332 +375 500 +640 480 +640 427 +640 480 +640 480 +640 268 +427 640 +640 480 +427 640 +640 427 +500 333 +640 457 +640 480 +640 480 +612 612 +640 480 +640 427 +500 370 +640 427 +640 427 +640 480 +640 480 +640 480 +500 375 +640 478 +640 480 +640 480 +478 640 +640 425 +640 463 +640 480 +612 612 +640 360 +640 427 +640 480 +600 600 +640 480 +375 500 +640 480 +640 454 +500 400 +480 640 +640 480 +398 640 +640 427 +640 427 +640 443 +640 480 +640 427 +640 480 +640 429 +640 478 +640 360 +384 640 +414 640 +264 640 +640 359 +640 425 +427 640 +333 500 +612 612 +640 360 +640 480 +500 334 +424 640 +529 640 +640 228 +640 480 +640 480 +640 360 +640 426 +640 480 +640 360 +640 427 +640 359 +640 426 +640 428 +640 309 +640 427 +612 612 +640 478 +640 425 +500 333 +640 426 +640 477 +640 581 +500 375 +640 409 +640 427 +640 480 +428 640 +640 480 +640 480 +480 640 +640 449 +640 480 +640 427 +612 612 +500 375 +640 419 +640 420 +640 478 +640 417 +424 640 +640 425 +640 293 +426 640 +640 480 +640 428 +640 427 +480 640 +500 375 +640 480 +640 480 +640 480 +640 480 +411 640 +640 425 +339 500 +500 375 +640 480 +640 326 +640 480 +640 427 +640 480 +640 427 +640 478 +640 427 +640 427 +640 480 +640 425 +480 640 +640 480 +640 478 +640 427 +640 221 +640 478 +640 428 +612 612 +427 640 +640 426 +640 480 +500 430 +640 401 +640 480 +640 427 +500 300 +640 427 +640 427 +640 480 +640 413 +500 375 +640 478 +612 612 +640 478 +640 480 +640 427 +640 480 +640 427 +640 439 +500 334 +640 480 +640 427 +640 480 +640 424 +457 640 +640 426 +480 640 +640 433 +480 640 +640 480 +432 640 +640 414 +640 480 +500 344 +640 480 +612 612 +427 640 +612 612 +640 425 +640 361 +640 480 +640 394 +500 375 +640 425 +640 478 +640 427 +375 500 +640 593 +381 640 +640 426 +640 424 +500 281 +640 513 +640 480 +333 500 +500 395 +480 475 +480 640 +640 480 +480 640 +428 640 +612 612 +429 640 +640 480 +640 449 +640 430 +500 375 +640 482 +360 640 +478 640 +640 480 +423 640 +427 640 +640 480 +640 478 +640 383 +480 640 +500 375 +480 640 +375 500 +640 480 +640 480 +640 480 +640 480 +480 640 +640 480 +640 564 +640 480 +187 140 +640 427 +500 459 +428 640 +640 428 +375 500 +640 480 +640 504 +640 424 +500 400 +583 640 +640 427 +640 480 +612 612 +640 489 +612 612 +640 480 +469 640 +463 640 +640 480 +640 480 +640 550 +500 407 +500 210 +640 480 +640 640 +640 478 +612 612 +480 640 +500 333 +640 480 +640 429 +640 480 +427 640 +500 333 +640 480 +640 480 +640 424 +640 360 +321 640 +424 640 +640 450 +640 426 +640 471 +640 427 +640 425 +640 426 +640 425 +498 640 +640 427 +612 612 +640 480 +500 167 +640 424 +640 427 +427 640 +640 480 +640 470 +640 427 +640 480 +539 640 +640 480 +640 480 +500 337 +640 480 +500 332 +332 500 +375 500 +640 480 +590 640 +640 507 +480 640 +640 480 +640 480 +640 427 +500 333 +640 472 +640 427 +395 500 +640 427 +640 425 +640 427 +640 480 +640 427 +640 480 +640 425 +640 640 +427 640 +640 360 +640 348 +612 612 +640 426 +640 425 +640 480 +500 335 +640 433 +640 480 +517 640 +480 640 +427 640 +425 640 +480 640 +640 427 +640 480 +480 640 +640 427 +640 480 +640 425 +640 480 +640 427 +640 480 +640 419 +640 483 +640 425 +426 640 +480 640 +640 338 +640 438 +426 640 +640 640 +640 426 +640 486 +640 483 +500 375 +640 496 +640 480 +640 480 +640 389 +500 333 +640 571 +640 338 +493 500 +640 360 +640 383 +500 375 +640 360 +500 375 +427 640 +427 640 +500 333 +427 640 +640 456 +640 427 +640 428 +480 640 +640 360 +500 429 +640 480 +640 427 +640 427 +335 500 +640 425 +640 478 +640 640 +500 334 +640 480 +640 480 +640 423 +640 480 +640 427 +480 640 +500 375 +640 480 +640 426 +640 427 +640 480 +481 640 +640 425 +640 480 +427 640 +640 430 +640 427 +427 640 +612 612 +640 458 +640 480 +640 480 +640 427 +640 578 +375 500 +640 480 +640 640 +425 640 +500 375 +640 427 +640 480 +640 478 +640 480 +500 375 +640 427 +500 360 +500 375 +640 480 +640 424 +640 480 +417 556 +640 427 +640 480 +612 612 +640 480 +640 480 +480 480 +640 425 +402 640 +640 480 +425 640 +640 425 +333 500 +640 428 +426 640 +427 640 +640 427 +640 480 +640 478 +375 500 +333 500 +500 333 +640 480 +519 640 +500 334 +500 375 +478 640 +640 458 +480 640 +500 376 +480 640 +640 427 +640 426 +427 640 +500 389 +480 640 +640 480 +640 480 +640 480 +500 346 +461 640 +427 640 +640 480 +375 500 +640 493 +640 480 +640 427 +640 480 +640 480 +640 425 +427 640 +640 480 +500 375 +500 332 +640 427 +640 427 +640 480 +612 612 +500 338 +640 450 +640 427 +640 443 +610 493 +640 427 +480 640 +640 480 +481 640 +640 472 +640 436 +640 426 +455 640 +480 640 +640 480 +640 480 +640 480 +640 480 +500 375 +640 426 +640 480 +640 480 +480 640 +640 640 +640 427 +640 427 +640 480 +489 500 +640 480 +640 427 +640 640 +640 640 +640 464 +478 640 +640 367 +640 320 +640 427 +640 427 +427 640 +640 427 +640 504 +640 322 +640 585 +640 480 +640 468 +500 336 +640 323 +612 612 +640 427 +640 426 +640 480 +640 360 +426 640 +640 377 +480 640 +640 425 +640 427 +640 424 +640 422 +482 640 +640 480 +640 425 +640 478 +640 479 +427 640 +478 640 +640 429 +640 594 +640 360 +428 640 +640 523 +640 396 +640 424 +640 480 +640 359 +640 428 +640 511 +640 561 +640 320 +404 640 +500 375 +333 500 +640 383 +640 457 +480 640 +640 360 +640 429 +640 480 +640 480 +426 640 +426 500 +500 333 +426 640 +480 640 +480 640 +640 427 +640 360 +451 640 +604 453 +500 335 +457 640 +640 427 +640 425 +500 333 +500 328 +612 612 +640 427 +480 640 +640 480 +500 253 +640 425 +480 640 +640 457 +480 640 +640 427 +427 640 +640 494 +640 421 +640 426 +640 480 +640 480 +640 424 +500 332 +640 427 +640 427 +500 332 +448 500 +640 425 +500 375 +640 428 +640 480 +640 480 +640 361 +500 375 +640 435 +640 427 +375 500 +640 640 +500 339 +400 267 +640 432 +640 480 +480 640 +640 480 +427 640 +640 427 +640 480 +640 480 +640 427 +640 251 +640 404 +640 426 +640 427 +640 427 +640 320 +375 500 +640 248 +640 480 +640 428 +428 640 +581 604 +640 426 +640 480 +640 426 +640 480 +640 427 +640 480 +612 612 +480 640 +640 480 +640 388 +640 480 +640 424 +500 375 +640 427 +500 375 +612 612 +640 480 +612 612 +500 375 +640 480 +427 640 +640 640 +640 480 +500 375 +640 427 +427 640 +500 383 +640 428 +640 480 +500 469 +426 640 +640 491 +640 429 +640 480 +640 480 +640 512 +500 400 +640 428 +640 480 +500 332 +480 640 +500 333 +640 483 +480 640 +640 480 +375 500 +640 480 +640 480 +500 334 +640 480 +254 500 +640 480 +640 426 +480 640 +640 601 +640 480 +640 360 +640 427 +424 640 +640 480 +640 427 +425 640 +480 640 +612 612 +640 424 +640 480 +640 361 +640 480 +640 427 +426 640 +640 426 +640 427 +640 427 +480 640 +640 480 +640 480 +640 425 +640 480 +640 427 +640 480 +500 375 +480 360 +480 640 +640 428 +640 480 +429 640 +640 428 +640 480 +640 424 +500 461 +424 640 +640 411 +427 640 +640 320 +640 480 +640 480 +640 480 +640 428 +640 480 +429 640 +640 480 +640 427 +640 427 +640 420 +640 480 +640 480 +640 480 +640 484 +640 512 +500 334 +640 463 +640 427 +640 427 +640 418 +500 238 +500 375 +640 480 +640 481 +640 427 +640 480 +427 640 +640 454 +429 640 +640 427 +640 480 +500 347 +640 480 +640 480 +320 240 +640 480 +500 375 +640 480 +640 427 +333 500 +612 612 +612 612 +640 438 +640 427 +640 482 +480 640 +612 612 +612 612 +640 480 +480 640 +640 507 +640 480 +640 426 +640 480 +480 640 +640 427 +640 415 +640 427 +640 480 +500 376 +541 640 +640 426 +500 375 +500 375 +480 640 +640 512 +640 480 +640 427 +640 426 +612 612 +640 480 +640 480 +640 480 +480 640 +453 604 +640 426 +332 500 +430 640 +480 640 +426 640 +500 400 +640 480 +640 434 +500 372 +640 480 +427 640 +640 480 +640 462 +500 333 +640 480 +640 424 +640 480 +640 369 +500 375 +640 478 +383 640 +640 480 +640 480 +640 480 +640 427 +480 640 +640 406 +640 480 +640 359 +640 427 +640 481 +429 500 +640 427 +640 360 +640 429 +640 480 +427 640 +640 480 +640 429 +640 480 +640 480 +640 480 +640 427 +426 640 +640 360 +640 428 +640 471 +640 428 +640 480 +425 640 +500 333 +640 480 +427 640 +640 402 +640 480 +640 426 +500 375 +640 427 +640 359 +640 453 +640 427 +480 640 +640 423 +480 640 +640 480 +640 427 +640 480 +500 375 +500 375 +640 426 +640 480 +640 480 +640 427 +428 640 +500 453 +640 428 +640 427 +640 480 +640 439 +480 640 +500 333 +640 479 +640 480 +640 640 +500 375 +640 427 +640 360 +500 375 +480 640 +640 480 +480 640 +640 427 +640 425 +640 427 +640 480 +640 428 +640 360 +480 640 +640 441 +375 500 +640 441 +640 640 +480 640 +640 428 +640 259 +640 466 +640 425 +500 380 +640 482 +640 359 +427 640 +640 480 +427 640 +427 640 +640 427 +640 480 +640 426 +444 640 +480 640 +640 480 +480 640 +480 640 +480 640 +640 480 +500 320 +612 612 +640 427 +640 427 +640 427 +640 344 +640 425 +640 387 +478 640 +640 426 +640 427 +640 480 +640 428 +640 426 +500 333 +640 480 +640 480 +425 640 +640 480 +384 640 +640 360 +375 500 +500 400 +640 480 +640 490 +640 480 +640 427 +640 427 +480 640 +640 263 +612 612 +375 500 +500 400 +640 427 +640 480 +640 426 +640 424 +640 590 +640 427 +640 427 +640 480 +640 427 +640 480 +500 334 +431 640 +640 480 +480 640 +640 430 +640 480 +640 480 +640 480 +640 427 +425 640 +640 427 +640 401 +640 429 +480 640 +640 480 +640 507 +500 332 +640 427 +640 427 +486 500 +640 480 +640 480 +375 500 +640 425 +640 481 +640 504 +640 480 +427 640 +640 427 +219 500 +640 427 +480 640 +612 612 +639 640 +640 640 +640 423 +500 375 +640 426 +500 375 +480 640 +640 426 +640 426 +620 640 +640 427 +640 426 +612 612 +640 480 +500 358 +640 426 +640 426 +640 427 +640 479 +640 480 +640 279 +640 480 +424 640 +640 426 +640 480 +500 500 +640 427 +640 432 +640 427 +426 640 +430 640 +425 640 +640 424 +640 480 +640 480 +426 640 +640 480 +640 480 +427 640 +640 480 +427 640 +640 415 +640 427 +640 480 +640 377 +333 500 +640 427 +640 427 +640 480 +375 500 +640 457 +500 375 +500 375 +640 425 +424 640 +427 640 +640 444 +640 486 +480 640 +640 426 +640 480 +480 640 +640 426 +640 425 +640 412 +480 640 +640 480 +427 640 +640 426 +480 640 +640 480 +640 480 +640 480 +427 640 +500 393 +427 640 +480 640 +500 375 +640 589 +640 427 +640 359 +640 480 +640 426 +500 375 +640 480 +423 640 +375 500 +640 427 +640 480 +640 427 +640 427 +640 441 +427 640 +426 640 +640 424 +511 640 +640 428 +427 640 +500 375 +500 331 +500 488 +640 427 +640 480 +640 510 +640 426 +640 480 +640 425 +640 429 +640 427 +359 640 +640 425 +640 383 +375 500 +330 500 +640 480 +640 427 +500 375 +640 426 +500 333 +640 386 +640 427 +400 300 +500 375 +500 375 +640 482 +640 360 +640 480 +640 421 +640 480 +480 640 +525 640 +640 244 +640 480 +482 640 +640 294 +640 480 +640 480 +375 500 +496 640 +640 525 +478 640 +640 480 +640 480 +486 640 +640 426 +640 480 +640 480 +480 640 +640 480 +640 480 +640 480 +640 427 +500 321 +427 640 +427 640 +640 480 +254 336 +640 427 +640 480 +640 640 +400 284 +640 480 +640 541 +640 590 +480 640 +425 640 +640 427 +640 457 +425 640 +640 480 +640 427 +640 425 +640 505 +640 559 +640 426 +640 480 +640 425 +640 427 +500 375 +480 640 +640 427 +479 640 +480 640 +640 478 +640 480 +500 333 +640 480 +640 427 +640 426 +640 511 +640 428 +640 480 +640 426 +480 640 +333 500 +640 480 +640 426 +640 426 +640 427 +458 640 +640 400 +424 640 +640 480 +640 318 +640 427 +360 640 +640 480 +640 480 +640 480 +640 480 +612 612 +640 389 +640 457 +640 480 +500 334 +640 480 +425 640 +640 480 +640 401 +640 480 +640 399 +640 427 +500 274 +213 320 +480 640 +333 500 +640 480 +512 640 +640 427 +640 480 +640 480 +640 427 +640 426 +640 480 +640 379 +640 480 +425 640 +427 640 +640 480 +640 640 +500 333 +354 500 +640 480 +426 640 +640 480 +503 640 +640 480 +427 640 +640 480 +500 375 +640 478 +500 375 +640 480 +427 640 +640 425 +640 427 +640 426 +500 332 +516 640 +428 640 +640 480 +401 131 +640 443 +480 640 +360 640 +480 640 +500 375 +640 474 +503 640 +640 480 +640 427 +640 480 +640 480 +640 427 +640 480 +640 456 +640 427 +640 597 +640 450 +640 383 +640 426 +640 428 +640 427 +480 640 +640 480 +640 440 +640 426 +640 457 +640 480 +480 640 +640 429 +640 426 +500 332 +640 360 +640 478 +480 640 +640 427 +640 480 +500 375 +640 480 +640 478 +640 480 +640 427 +500 375 +640 428 +480 640 +426 640 +640 304 +640 480 +640 427 +612 612 +640 480 +640 480 +640 512 +375 500 +640 427 +500 334 +500 374 +333 500 +612 612 +640 400 +640 284 +640 480 +425 640 +640 486 +640 426 +480 640 +640 427 +640 480 +640 480 +426 640 +640 381 +640 426 +640 481 +640 480 +500 351 +427 640 +500 375 +640 427 +640 427 +640 480 +640 480 +640 480 +500 427 +640 425 +640 427 +640 427 +640 480 +600 400 +359 500 +500 375 +640 480 +640 489 +500 375 +529 640 +500 375 +640 480 +480 640 +640 480 +480 640 +640 444 +427 640 +640 425 +640 426 +612 612 +640 480 +500 357 +418 640 +427 640 +427 640 +500 382 +640 480 +426 640 +375 500 +640 478 +640 478 +500 333 +640 493 +500 333 +357 500 +603 640 +480 640 +640 427 +640 427 +612 612 +640 480 +640 453 +500 334 +640 480 +500 375 +640 480 +640 480 +640 426 +640 480 +640 424 +500 335 +480 640 +640 480 +480 640 +480 640 +640 424 +640 427 +480 640 +500 333 +640 427 +500 375 +640 480 +500 375 +640 427 +640 480 +640 427 +500 375 +427 640 +640 471 +640 480 +640 480 +640 579 +640 427 +480 640 +612 612 +373 640 +640 427 +610 391 +640 253 +640 429 +640 426 +640 425 +640 538 +427 640 +480 640 +640 428 +640 424 +640 427 +640 480 +640 349 +480 640 +640 478 +640 351 +640 384 +400 600 +500 375 +640 522 +640 480 +640 518 +640 427 +333 500 +640 391 +480 640 +467 640 +612 612 +640 426 +500 375 +516 640 +480 640 +333 500 +640 480 +364 468 +500 399 +427 640 +500 400 +640 464 +640 480 +640 429 +341 640 +425 640 +375 500 +640 432 +640 334 +640 427 +480 640 +640 480 +500 375 +451 640 +640 480 +640 480 +640 480 +640 427 +640 470 +640 426 +640 430 +640 482 +640 427 +500 375 +640 360 +500 375 +500 375 +640 462 +612 612 +640 480 +640 425 +426 640 +500 334 +640 427 +436 640 +640 480 +500 375 +640 427 +500 363 +640 457 +500 334 +500 429 +480 640 +640 428 +640 427 +640 427 +500 332 +640 319 +500 336 +640 481 +432 500 +500 333 +640 360 +640 427 +461 640 +640 480 +500 326 +640 425 +480 640 +640 427 +640 427 +640 431 +640 427 +640 539 +640 487 +427 640 +640 526 +640 427 +640 427 +612 612 +442 500 +640 480 +640 495 +480 640 +424 640 +480 640 +640 459 +640 480 +640 426 +640 427 +640 425 +640 480 +640 427 +640 458 +640 427 +640 362 +640 428 +640 451 +640 423 +480 640 +640 428 +640 480 +640 480 +480 640 +640 480 +640 421 +640 427 +480 640 +480 640 +640 480 +640 428 +480 640 +640 427 +640 480 +640 427 +640 427 +640 427 +427 640 +640 427 +500 375 +640 427 +640 427 +640 426 +439 603 +640 445 +640 480 +640 426 +560 640 +480 640 +640 316 +640 480 +427 640 +480 640 +640 480 +640 427 +431 640 +375 500 +640 480 +640 480 +640 427 +640 428 +640 427 +640 443 +620 367 +640 427 +640 480 +640 427 +640 581 +640 480 +640 480 +640 480 +640 640 +500 375 +640 494 +480 640 +640 480 +640 425 +640 480 +640 480 +554 640 +640 480 +425 640 +478 640 +500 375 +640 480 +640 480 +640 427 +480 640 +640 480 +427 640 +526 640 +500 375 +416 640 +640 427 +640 480 +332 500 +640 424 +427 640 +640 448 +640 640 +640 427 +640 427 +640 480 +640 426 +640 480 +500 375 +480 640 +640 427 +500 375 +640 480 +518 640 +640 480 +640 435 +500 375 +500 375 +639 640 +463 640 +500 324 +500 375 +480 640 +480 640 +640 396 +640 426 +383 640 +640 351 +640 427 +500 493 +640 480 +640 480 +500 375 +640 427 +640 429 +640 480 +640 480 +480 640 +640 452 +500 384 +375 500 +500 334 +640 428 +427 640 +640 480 +640 480 +640 640 +640 480 +640 427 +640 424 +640 427 +640 463 +640 480 +640 480 +640 421 +640 428 +640 427 +478 640 +640 480 +640 427 +500 375 +640 480 +640 427 +640 427 +426 640 +640 480 +640 480 +640 480 +640 480 +640 433 +640 480 +640 425 +640 480 +375 500 +640 428 +640 427 +640 430 +480 640 +480 640 +640 480 +640 398 +640 428 +640 480 +640 478 +426 640 +451 451 +640 480 +640 434 +339 500 +640 511 +640 415 +640 640 +480 640 +374 500 +427 640 +640 427 +640 561 +640 478 +640 427 +640 480 +500 375 +413 640 +640 521 +443 640 +425 640 +375 500 +500 375 +640 480 +640 480 +640 426 +640 426 +427 640 +640 478 +640 480 +612 612 +428 640 +640 480 +602 640 +448 640 +319 500 +500 375 +480 640 +480 640 +640 146 +640 427 +640 427 +640 427 +640 512 +480 640 +295 640 +640 427 +640 475 +640 426 +640 480 +640 360 +640 480 +426 640 +480 640 +640 480 +500 375 +640 427 +640 426 +640 480 +640 427 +640 480 +361 640 +640 480 +640 480 +333 500 +442 640 +640 480 +640 480 +640 427 +640 480 +500 375 +640 449 +500 375 +640 378 +500 376 +480 640 +640 460 +500 375 +640 480 +500 375 +428 640 +427 640 +640 360 +640 427 +640 479 +640 427 +640 480 +500 375 +640 452 +640 405 +640 481 +640 495 +640 427 +640 480 +396 640 +640 360 +640 427 +640 480 +480 640 +640 427 +640 427 +640 480 +640 331 +640 480 +640 432 +500 375 +640 480 +640 480 +640 480 +500 375 +640 427 +640 480 +640 433 +480 640 +640 425 +480 640 +640 480 +480 640 +640 428 +640 480 +571 640 +640 480 +640 480 +500 375 +640 490 +640 424 +640 459 +500 375 +640 360 +612 612 +640 480 +640 426 +640 476 +640 428 +500 375 +640 480 +640 480 +478 640 +640 512 +640 480 +640 418 +640 481 +640 562 +604 403 +640 426 +640 425 +425 640 +640 590 +640 425 +640 414 +500 333 +640 480 +640 428 +640 427 +640 480 +426 640 +479 640 +480 640 +640 480 +640 640 +640 426 +640 516 +500 375 +480 640 +500 375 +640 427 +640 486 +500 375 +500 334 +400 500 +640 428 +640 412 +640 427 +612 612 +640 456 +640 502 +640 424 +640 426 +461 640 +640 480 +480 640 +640 480 +640 601 +640 427 +640 480 +640 360 +640 603 +640 417 +640 480 +640 503 +640 427 +640 480 +640 427 +640 487 +640 441 +640 427 +612 612 +500 375 +427 640 +500 311 +640 426 +640 459 +640 513 +640 426 +500 375 +426 640 +640 480 +427 640 +640 405 +427 640 +640 446 +640 480 +480 640 +640 427 +640 359 +640 424 +486 500 +375 500 +640 480 +640 427 +640 425 +640 406 +640 428 +480 640 +640 481 +640 539 +480 640 +375 500 +500 332 +640 480 +640 428 +640 426 +500 500 +500 333 +640 262 +500 375 +480 640 +480 640 +541 640 +480 640 +640 640 +640 427 +375 500 +640 640 +640 459 +640 480 +640 487 +500 375 +640 429 +424 640 +640 640 +500 372 +640 480 +404 640 +640 480 +480 640 +640 480 +640 427 +640 427 +424 640 +640 426 +640 428 +640 428 +640 480 +640 426 +500 375 +458 640 +640 480 +640 480 +360 640 +480 640 +640 569 +640 480 +640 480 +640 426 +640 427 +640 425 +480 640 +640 455 +640 427 +640 427 +640 480 +640 358 +612 612 +428 640 +640 480 +425 640 +640 427 +640 427 +640 427 +500 332 +640 480 +480 640 +500 375 +640 427 +640 480 +600 450 +640 480 +427 640 +640 352 +640 480 +640 480 +640 480 +480 640 +640 480 +640 427 +640 480 +640 425 +500 333 +427 640 +360 640 +640 552 +480 640 +480 640 +500 375 +640 486 +640 480 +640 360 +307 461 +640 480 +640 427 +426 640 +500 436 +480 640 +500 333 +640 480 +480 640 +640 640 +334 500 +333 500 +425 640 +640 354 +500 375 +640 480 +640 480 +640 480 +480 640 +500 375 +640 508 +640 376 +640 480 +640 480 +640 480 +612 612 +612 612 +423 640 +389 640 +640 640 +500 334 +500 375 +640 480 +332 500 +640 480 +500 333 +490 640 +640 425 +600 449 +640 391 +387 600 +640 360 +425 640 +640 360 +640 480 +640 277 +640 480 +640 428 +640 411 +480 640 +500 375 +640 480 +640 426 +640 427 +640 480 +640 427 +640 427 +480 640 +640 640 +640 640 +640 480 +500 334 +391 640 +640 415 +640 480 +480 640 +640 427 +480 640 +640 480 +389 500 +640 427 +640 396 +640 427 +640 480 +640 480 +640 480 +640 303 +640 480 +640 436 +640 429 +457 640 +640 427 +500 375 +640 427 +640 480 +640 425 +640 480 +640 489 +640 419 +640 569 +640 480 +424 640 +640 427 +640 416 +640 418 +640 371 +640 428 +500 413 +640 427 +640 480 +480 640 +640 561 +640 423 +500 375 +640 480 +640 360 +640 480 +529 640 +640 425 +480 640 +428 640 +640 480 +640 409 +359 640 +427 640 +374 436 +640 428 +640 360 +640 426 +500 375 +640 480 +640 360 +640 427 +480 640 +640 425 +640 480 +500 333 +426 640 +640 427 +640 480 +640 428 +480 640 +480 640 +433 640 +640 428 +640 483 +640 401 +640 428 +480 640 +427 640 +640 298 +427 640 +640 480 +480 640 +427 640 +480 640 +500 332 +640 480 +640 480 +640 480 +640 466 +640 425 +640 480 +640 427 +640 445 +640 427 +484 500 +640 320 +640 480 +612 612 +427 640 +640 480 +640 425 +612 612 +640 426 +640 427 +504 640 +500 375 +425 640 +640 424 +427 640 +640 480 +640 427 +640 427 +640 346 +640 480 +640 427 +640 480 +640 371 +640 426 +640 480 +500 493 +640 480 +640 480 +640 427 +640 480 +640 360 +612 612 +640 418 +640 480 +640 427 +435 640 +640 425 +500 375 +500 375 +429 640 +339 500 +640 426 +640 427 +640 428 +640 427 +375 500 +640 360 +640 384 +640 428 +640 371 +640 424 +640 426 +612 612 +640 480 +500 357 +500 375 +612 612 +640 480 +640 427 +500 333 +640 640 +427 640 +640 267 +640 480 +640 382 +426 640 +640 481 +640 481 +480 640 +490 640 +425 640 +612 612 +640 480 +640 480 +640 427 +480 640 +640 480 +640 427 +640 480 +612 612 +640 426 +424 640 +640 480 +640 427 +640 427 +640 427 +640 426 +500 375 +640 480 +640 401 +375 500 +640 426 +640 480 +640 414 +332 500 +640 436 +640 480 +640 480 +640 480 +480 640 +500 375 +500 235 +640 480 +500 375 +640 476 +480 640 +640 506 +640 427 +640 429 +375 500 +640 480 +375 500 +425 640 +440 640 +640 427 +640 428 +640 480 +640 425 +640 360 +640 480 +640 480 +640 480 +538 640 +427 640 +640 480 +640 480 +640 303 +640 468 +640 426 +640 576 +640 382 +640 476 +640 640 +640 427 +500 375 +640 428 +500 375 +640 480 +640 480 +640 480 +640 480 +500 375 +640 480 +480 640 +480 640 +640 503 +640 430 +640 480 +640 426 +428 640 +428 640 +640 427 +640 351 +640 438 +480 640 +640 640 +640 360 +640 578 +640 480 +640 427 +640 426 +640 427 +480 640 +640 427 +480 640 +640 437 +500 379 +500 374 +640 480 +640 429 +640 428 +640 427 +640 427 +640 480 +480 640 +478 640 +640 480 +427 640 +640 298 +640 480 +640 480 +640 426 +640 480 +640 361 +424 640 +640 480 +640 419 +640 481 +480 640 +640 426 +640 428 +480 640 +480 640 +640 480 +427 640 +640 425 +640 480 +640 427 +640 424 +500 375 +640 427 +640 427 +427 640 +480 640 +640 427 +640 427 +640 428 +640 428 +640 427 +640 425 +500 333 +640 480 +640 427 +640 480 +640 478 +640 426 +500 375 +640 427 +640 498 +640 364 +500 375 +640 427 +640 480 +640 429 +480 640 +480 640 +640 424 +640 478 +640 427 +375 500 +388 500 +640 427 +640 426 +640 383 +640 426 +640 480 +640 396 +640 353 +640 425 +640 374 +640 427 +640 480 +640 480 +640 480 +480 640 +493 640 +640 480 +640 427 +480 640 +640 433 +640 480 +640 425 +640 427 +612 612 +640 495 +480 640 +640 480 +640 480 +640 478 +264 640 +640 427 +436 640 +640 425 +640 428 +640 480 +640 480 +427 640 +425 640 +427 640 +640 344 +500 375 +600 450 +640 480 +640 426 +480 640 +640 458 +640 640 +640 457 +640 426 +640 428 +640 442 +640 480 +640 480 +640 428 +640 480 +640 480 +426 640 +427 640 +640 640 +640 480 +640 640 +640 427 +640 411 +640 507 +640 480 +640 480 +640 425 +612 612 +500 346 +640 640 +640 424 +500 332 +612 612 +640 480 +480 640 +640 480 +500 375 +333 500 +640 427 +640 480 +640 501 +640 359 +640 427 +425 640 +640 432 +640 481 +640 426 +640 480 +640 480 +640 480 +480 640 +640 426 +640 482 +480 640 +640 428 +640 480 +640 428 +640 428 +500 375 +640 578 +640 428 +500 333 +640 480 +640 428 +640 480 +640 410 +640 427 +500 333 +640 426 +640 480 +640 361 +612 612 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +640 487 +640 426 +640 381 +640 428 +640 427 +360 480 +640 361 +480 640 +500 333 +640 478 +428 640 +640 360 +640 427 +640 480 +500 375 +480 640 +375 500 +500 318 +613 640 +427 640 +640 427 +640 480 +480 640 +500 388 +180 240 +640 444 +640 480 +640 426 +500 375 +509 640 +640 426 +640 564 +640 427 +269 640 +640 480 +638 356 +640 480 +458 640 +500 375 +640 480 +480 361 +640 480 +500 375 +640 427 +500 375 +640 360 +640 428 +640 409 +640 427 +640 360 +640 427 +640 640 +640 480 +640 427 +640 412 +306 408 +427 640 +640 425 +640 480 +640 480 +414 640 +640 427 +428 640 +640 304 +640 480 +640 427 +640 425 +640 640 +480 640 +640 480 +640 427 +458 640 +640 480 +480 640 +640 480 +640 427 +640 480 +480 640 +640 428 +480 640 +500 375 +640 429 +640 588 +640 481 +640 418 +434 640 +640 422 +640 427 +640 480 +640 491 +640 426 +640 427 +640 480 +640 480 +500 375 +640 427 +640 510 +478 640 +500 375 +640 456 +640 427 +480 640 +480 640 +640 480 +640 481 +640 501 +427 640 +640 480 +375 500 +640 416 +500 375 +500 375 +640 480 +480 640 +375 500 +640 439 +458 640 +640 399 +500 282 +640 480 +640 427 +640 427 +428 640 +640 480 +640 480 +500 375 +640 426 +425 640 +640 480 +640 480 +640 480 +640 427 +640 427 +640 480 +424 640 +640 437 +640 427 +500 375 +426 640 +640 424 +417 640 +640 480 +640 480 +480 640 +640 480 +640 427 +640 536 +567 640 +640 425 +640 480 +640 457 +640 640 +640 478 +640 360 +640 427 +640 480 +640 427 +333 500 +640 434 +640 425 +640 424 +480 640 +612 612 +640 425 +640 480 +640 438 +495 500 +426 640 +640 427 +429 640 +640 558 +640 428 +640 480 +500 188 +480 640 +640 360 +612 612 +640 425 +640 424 +640 428 +640 480 +640 428 +500 244 +500 375 +500 375 +640 425 +478 640 +640 428 +640 480 +640 427 +500 375 +426 640 +640 480 +640 457 +640 480 +640 320 +640 383 +640 359 +640 436 +640 426 +640 427 +640 361 +640 428 +640 480 +640 424 +640 475 +640 414 +480 640 +360 640 +480 640 +640 480 +612 612 +640 427 +338 450 +640 427 +464 640 +640 421 +640 480 +640 428 +640 427 +500 375 +640 480 +640 427 +640 480 +640 427 +640 480 +500 375 +480 640 +640 426 +640 425 +538 640 +640 480 +640 480 +640 480 +640 480 +478 640 +640 478 +640 427 +640 480 +640 480 +500 375 +640 427 +480 640 +640 480 +427 640 +640 480 +640 509 +640 480 +640 471 +640 480 +612 612 +337 500 +640 480 +427 640 +513 640 +640 480 +474 640 +640 428 +480 640 +325 500 +640 480 +640 426 +640 481 +409 640 +640 360 +640 311 +640 426 +413 640 +640 424 +640 480 +639 640 +640 427 +640 480 +383 500 +427 640 +335 500 +640 427 +640 426 +640 427 +640 480 +640 425 +640 427 +640 427 +640 480 +640 433 +480 640 +640 416 +640 366 +640 427 +640 480 +640 391 +333 500 +640 436 +640 425 +640 428 +640 480 +542 640 +431 640 +640 427 +640 480 +334 500 +640 480 +640 425 +423 640 +425 640 +494 640 +480 640 +640 427 +640 427 +500 375 +550 412 +640 518 +640 429 +640 427 +640 480 +640 481 +640 480 +640 480 +640 477 +640 427 +640 427 +640 487 +640 426 +640 480 +512 384 +640 516 +640 435 +457 640 +480 640 +640 427 +376 500 +413 500 +640 431 +480 640 +427 640 +640 433 +640 480 +640 484 +640 428 +640 359 +640 426 +500 375 +500 375 +500 400 +480 640 +480 640 +450 338 +427 640 +500 333 +640 480 +640 361 +640 480 +427 640 +640 424 +640 425 +375 500 +419 500 +640 427 +500 375 +640 427 +463 640 +640 480 +640 434 +500 333 +500 375 +500 375 +640 427 +480 640 +640 480 +640 480 +640 427 +640 480 +480 640 +640 480 +498 640 +612 612 +640 427 +640 480 +359 640 +500 333 +426 640 +640 480 +424 640 +375 500 +640 493 +500 333 +640 480 +427 640 +640 429 +640 480 +480 640 +640 480 +640 360 +640 460 +640 427 +640 480 +500 334 +640 457 +640 401 +500 381 +640 427 +640 411 +640 424 +640 427 +500 357 +404 640 +463 640 +640 428 +640 427 +640 480 +426 640 +640 426 +426 640 +640 481 +640 427 +640 481 +640 427 +640 427 +480 640 +427 640 +333 500 +640 480 +640 480 +640 428 +425 640 +427 640 +640 480 +640 480 +427 640 +640 426 +640 480 +480 640 +640 426 +503 640 +480 640 +640 480 +333 500 +640 480 +640 426 +640 480 +640 428 +640 480 +480 640 +640 426 +640 427 +640 480 +388 640 +640 374 +640 427 +480 640 +427 640 +500 375 +640 429 +640 585 +640 427 +500 383 +640 427 +640 394 +640 426 +640 480 +333 500 +426 640 +640 480 +427 640 +640 422 +640 480 +640 426 +640 425 +428 640 +640 427 +640 427 +640 425 +640 427 +640 480 +640 348 +640 480 +640 427 +640 480 +345 500 +640 384 +640 480 +640 427 +480 640 +640 427 +640 426 +640 480 +480 640 +332 500 +640 427 +640 480 +640 480 +640 543 +640 429 +640 415 +640 640 +500 377 +500 375 +640 426 +640 480 +640 519 +640 480 +640 361 +427 640 +640 480 +640 429 +640 427 +640 634 +480 640 +479 640 +427 640 +500 375 +500 452 +500 375 +640 431 +640 429 +640 427 +640 426 +640 424 +160 120 +427 640 +640 480 +640 480 +640 424 +427 640 +640 480 +640 417 +640 480 +500 333 +273 500 +640 640 +500 334 +386 336 +640 450 +640 426 +640 480 +427 640 +640 480 +640 480 +625 640 +640 427 +157 160 +480 640 +640 480 +500 367 +640 359 +500 375 +640 428 +500 375 +500 319 +375 500 +640 427 +640 426 +480 640 +640 480 +640 480 +640 427 +640 473 +640 425 +640 394 +383 640 +640 426 +640 427 +640 427 +640 428 +640 427 +640 480 +640 570 +480 640 +500 333 +640 457 +640 422 +640 480 +640 480 +640 640 +640 383 +640 427 +640 425 +640 256 +426 640 +640 427 +640 478 +640 427 +500 375 +640 424 +640 480 +640 478 +500 375 +640 427 +640 427 +640 427 +640 479 +500 334 +375 500 +640 425 +428 640 +640 425 +640 640 +640 428 +434 500 +640 429 +640 503 +640 424 +640 427 +640 480 +640 440 +640 480 +427 640 +640 480 +612 612 +640 425 +640 400 +640 428 +640 480 +640 427 +427 640 +640 446 +640 464 +640 480 +333 500 +640 361 +640 480 +640 480 +427 640 +640 428 +612 612 +426 640 +640 427 +640 480 +500 412 +495 640 +640 426 +427 640 +640 424 +640 427 +640 480 +480 640 +640 480 +413 500 +640 426 +386 640 +640 480 +640 487 +640 480 +480 640 +600 400 +640 480 +500 375 +640 513 +640 426 +640 322 +500 375 +640 480 +427 640 +428 640 +640 480 +640 425 +454 640 +640 424 +427 640 +640 359 +480 640 +640 509 +640 428 +640 480 +480 640 +640 480 +640 480 +640 426 +640 427 +640 480 +640 426 +640 480 +640 479 +640 493 +640 480 +480 640 +640 480 +500 375 +640 427 +640 318 +640 480 +640 480 +640 425 +640 480 +640 533 +640 427 +640 480 +640 426 +640 427 +640 427 +400 600 +640 373 +640 426 +640 424 +640 557 +640 427 +640 427 +640 427 +640 427 +640 413 +426 640 +640 480 +540 640 +640 480 +640 427 +427 640 +640 454 +640 480 +640 480 +480 640 +640 480 +640 481 +640 440 +500 375 +640 480 +640 480 +640 480 +427 640 +376 500 +640 480 +640 480 +640 523 +640 427 +640 640 +640 480 +640 480 +500 333 +640 336 +606 640 +640 427 +612 612 +640 480 +640 480 +640 480 +640 480 +427 640 +425 640 +640 480 +640 480 +502 640 +612 612 +640 480 +640 485 +640 313 +480 640 +640 427 +640 427 +640 429 +640 427 +640 513 +640 480 +640 480 +640 426 +640 480 +640 480 +480 640 +640 426 +640 480 +640 480 +640 427 +640 480 +523 640 +640 426 +375 500 +426 640 +640 425 +640 425 +427 640 +640 480 +640 427 +640 480 +429 640 +640 427 +500 378 +639 640 +640 427 +640 480 +478 640 +640 480 +640 426 +500 375 +640 426 +411 640 +640 480 +640 480 +640 480 +640 427 +640 424 +640 371 +640 478 +640 480 +640 425 +640 480 +375 500 +424 640 +500 500 +640 427 +640 480 +640 426 +640 426 +640 480 +500 375 +640 424 +640 427 +640 427 +429 640 +640 378 +498 640 +640 408 +640 480 +480 640 +427 640 +640 427 +640 480 +640 480 +500 375 +500 351 +640 188 +640 486 +640 428 +640 427 +640 424 +640 364 +640 364 +640 384 +500 356 +640 431 +640 427 +640 480 +640 426 +500 375 +500 375 +640 429 +640 425 +640 448 +640 480 +640 480 +640 483 +640 427 +500 375 +375 500 +480 640 +640 354 +640 427 +640 426 +500 375 +640 427 +640 480 +640 480 +640 480 +500 371 +612 612 +640 480 +640 554 +640 549 +640 480 +500 375 +640 360 +640 427 +640 427 +640 480 +500 340 +500 333 +375 500 +640 480 +375 500 +640 394 +640 480 +640 480 +640 427 +640 640 +459 640 +640 480 +640 360 +427 640 +640 224 +480 640 +640 427 +640 428 +500 375 +640 429 +640 480 +640 427 +582 640 +640 480 +640 428 +640 451 +354 640 +426 640 +640 512 +640 480 +640 640 +425 640 +480 640 +640 427 +640 447 +640 480 +500 334 +480 640 +480 640 +640 428 +500 375 +500 375 +640 428 +640 428 +640 480 +640 480 +640 428 +571 640 +500 375 +640 481 +427 640 +500 375 +640 480 +640 480 +640 426 +453 640 +500 335 +640 426 +568 320 +640 429 +640 427 +640 480 +640 480 +640 449 +500 375 +640 424 +500 375 +480 640 +640 319 +640 480 +427 640 +640 427 +480 640 +640 428 +640 428 +640 480 +640 427 +640 478 +427 640 +500 402 +424 640 +640 427 +640 427 +640 480 +640 426 +480 640 +427 640 +640 480 +640 480 +640 480 +480 640 +640 480 +500 286 +427 640 +375 500 +640 427 +640 427 +640 480 +480 640 +500 332 +500 375 +640 427 +640 480 +640 482 +640 456 +640 427 +640 399 +640 480 +640 423 +338 500 +424 640 +640 480 +640 427 +427 640 +640 428 +640 480 +640 640 +640 428 +500 332 +640 480 +640 427 +640 427 +640 424 +640 423 +500 375 +640 480 +640 427 +640 480 +640 360 +480 640 +640 429 +640 478 +500 375 +597 400 +640 426 +465 500 +640 425 +640 480 +640 427 +640 480 +640 480 +429 640 +462 640 +447 640 +640 426 +640 423 +640 426 +640 347 +640 427 +500 375 +640 480 +640 427 +640 426 +640 480 +500 332 +360 640 +427 640 +370 640 +640 426 +640 480 +640 480 +640 427 +640 478 +640 427 +640 427 +427 640 +640 514 +640 426 +622 640 +640 519 +479 640 +500 375 +640 597 +640 429 +640 396 +640 427 +589 640 +640 480 +640 427 +640 480 +640 424 +500 484 +500 375 +640 510 +640 427 +640 470 +480 640 +640 413 +612 612 +640 480 +640 480 +500 333 +427 640 +375 500 +612 612 +640 480 +640 480 +640 480 +426 640 +640 427 +640 428 +640 480 +612 612 +640 429 +456 640 +640 480 +640 484 +480 360 +640 420 +483 640 +640 427 +640 427 +640 427 +640 407 +512 640 +640 480 +480 640 +640 351 +640 480 +640 381 +427 640 +500 375 +640 427 +640 436 +640 480 +480 640 +640 480 +480 640 +640 408 +640 473 +375 500 +640 427 +640 427 +500 375 +640 426 +640 434 +640 425 +640 427 +512 640 +640 426 +612 612 +612 612 +640 480 +640 480 +375 500 +640 428 +640 480 +480 640 +426 640 +640 428 +480 640 +640 427 +640 480 +500 231 +640 427 +427 640 +640 571 +375 500 +417 640 +525 640 +500 375 +640 480 +640 480 +500 333 +360 640 +640 416 +427 640 +640 480 +640 427 +640 427 +640 427 +640 426 +640 427 +640 480 +500 375 +640 480 +500 375 +640 354 +480 640 +480 417 +612 612 +640 480 +640 427 +640 427 +500 375 +480 640 +640 640 +640 427 +640 480 +640 485 +640 366 +427 640 +500 375 +640 425 +640 480 +640 427 +640 480 +640 427 +500 398 +500 375 +640 429 +500 375 +640 427 +640 640 +480 640 +480 640 +640 427 +640 480 +640 427 +640 421 +409 307 +400 500 +640 428 +640 427 +480 640 +500 373 +500 309 +640 480 +500 375 +640 427 +640 480 +640 638 +500 375 +480 640 +640 480 +640 480 +640 454 +640 425 +640 360 +427 640 +640 427 +478 640 +640 481 +480 640 +500 375 +427 640 +500 375 +427 640 +500 348 +428 640 +640 480 +424 640 +640 480 +500 332 +376 500 +500 375 +640 480 +640 480 +640 480 +553 640 +640 515 +640 427 +500 375 +640 427 +640 427 +480 640 +640 427 +640 427 +640 359 +640 512 +640 425 +640 480 +481 640 +612 612 +640 480 +500 333 +640 427 +640 427 +480 640 +640 427 +640 480 +500 336 +640 425 +640 481 +344 640 +339 500 +407 640 +640 427 +640 480 +640 480 +426 640 +640 480 +640 480 +640 427 +333 500 +640 386 +640 480 +640 423 +333 500 +640 480 +640 427 +640 427 +640 481 +640 480 +500 375 +640 480 +640 426 +480 640 +640 427 +640 360 +640 480 +640 457 +640 376 +500 375 +612 612 +640 480 +640 427 +448 336 +640 427 +640 427 +640 480 +386 500 +640 470 +640 480 +427 640 +640 415 +424 640 +640 426 +640 425 +640 427 +640 480 +640 427 +375 500 +640 480 +640 427 +640 428 +640 427 +640 480 +640 480 +425 640 +600 400 +640 428 +427 640 +640 427 +640 501 +640 431 +500 375 +640 426 +640 427 +640 365 +640 425 +499 371 +640 426 +480 640 +481 640 +640 426 +640 427 +640 360 +640 480 +640 489 +500 500 +640 640 +640 428 +640 548 +480 640 +469 500 +640 428 +640 425 +640 426 +640 480 +640 427 +640 424 +640 468 +640 428 +640 427 +640 378 +640 430 +640 427 +640 480 +426 640 +640 427 +640 469 +497 640 +480 640 +640 480 +640 283 +410 640 +640 426 +640 481 +640 358 +640 480 +640 480 +640 439 +640 480 +640 480 +425 640 +640 340 +500 375 +640 379 +640 480 +640 475 +480 640 +640 514 +480 640 +640 427 +640 425 +640 480 +640 454 +640 428 +640 428 +500 375 +640 480 +640 424 +500 332 +640 427 +500 375 +640 427 +500 375 +640 576 +607 640 +640 480 +640 427 +640 480 +640 480 +427 640 +640 427 +640 480 +427 640 +500 333 +425 640 +600 466 +640 427 +640 540 +640 427 +640 461 +640 480 +640 480 +640 424 +640 480 +640 480 +640 480 +427 640 +500 375 +640 480 +640 446 +640 391 +480 640 +500 375 +640 420 +640 429 +426 640 +469 640 +640 640 +640 426 +640 480 +640 480 +640 427 +640 442 +380 640 +640 480 +500 375 +428 640 +640 415 +418 500 +640 425 +480 640 +640 531 +427 640 +640 473 +320 240 +640 457 +640 480 +640 423 +500 375 +375 500 +500 375 +640 427 +640 427 +327 500 +640 360 +500 332 +427 640 +385 500 +640 512 +500 417 +640 427 +640 480 +640 480 +480 640 +640 427 +640 426 +640 480 +211 500 +612 612 +480 640 +640 573 +640 427 +640 438 +640 360 +427 640 +500 333 +500 375 +480 640 +480 640 +640 480 +612 612 +640 360 +640 427 +640 425 +612 612 +640 480 +640 480 +427 640 +628 442 +480 640 +612 612 +640 480 +640 427 +640 478 +480 640 +480 640 +498 640 +500 375 +640 443 +640 427 +640 427 +640 428 +339 500 +480 640 +640 427 +449 640 +500 378 +640 427 +640 395 +470 640 +640 480 +380 330 +640 458 +640 400 +506 640 +640 554 +480 640 +640 427 +333 500 +640 426 +640 427 +640 480 +640 427 +640 480 +640 480 +500 276 +612 612 +612 612 +500 375 +500 500 +640 480 +640 480 +500 370 +640 640 +500 375 +640 480 +640 462 +640 480 +640 564 +640 480 +640 427 +640 427 +500 333 +640 396 +640 427 +500 375 +640 426 +535 640 +640 480 +640 427 +640 400 +448 640 +640 480 +480 640 +334 500 +510 640 +480 640 +500 375 +640 427 +480 640 +640 480 +640 640 +480 640 +448 336 +640 361 +640 426 +480 640 +375 500 +640 480 +500 335 +640 360 +640 489 +480 640 +640 424 +640 480 +500 375 +640 480 +480 640 +500 339 +640 427 +424 640 +500 335 +640 480 +640 412 +640 366 +429 640 +426 640 +640 436 +640 350 +427 640 +640 427 +640 426 +640 480 +640 496 +640 426 +612 612 +640 480 +640 480 +426 640 +640 229 +640 640 +640 480 +640 442 +480 640 +480 640 +640 479 +500 332 +612 612 +640 425 +640 427 +500 333 +426 640 +500 373 +640 435 +640 427 +640 427 +376 500 +500 335 +640 480 +468 640 +640 426 +640 424 +640 419 +640 427 +640 428 +640 428 +500 333 +640 545 +640 360 +640 383 +640 634 +640 360 +640 427 +490 469 +640 425 +640 640 +640 480 +640 480 +640 427 +480 640 +640 424 +428 640 +424 640 +640 427 +640 480 +480 640 +640 480 +640 427 +440 500 +640 427 +426 640 +480 640 +640 428 +640 480 +500 411 +427 640 +640 480 +480 640 +176 384 +427 640 +425 640 +427 640 +640 427 +640 480 +480 640 +640 480 +478 640 +375 500 +640 480 +612 612 +479 500 +480 640 +500 367 +640 640 +640 512 +612 612 +500 500 +334 500 +640 425 +640 480 +640 480 +640 427 +640 425 +640 480 +600 400 +500 332 +612 612 +640 393 +640 480 +640 480 +424 640 +640 480 +640 640 +640 427 +640 435 +640 480 +640 427 +333 500 +512 640 +640 524 +640 480 +640 480 +640 478 +640 426 +375 500 +640 427 +426 640 +426 640 +480 640 +640 427 +640 426 +640 480 +640 425 +640 427 +640 480 +640 425 +640 427 +640 320 +640 426 +480 640 +424 640 +640 427 +640 480 +640 480 +500 333 +640 518 +640 480 +640 359 +640 426 +612 612 +640 427 +428 640 +640 427 +640 480 +427 640 +640 427 +426 640 +640 427 +640 480 +640 428 +640 480 +612 612 +640 523 +640 383 +640 427 +640 480 +640 427 +640 480 +640 480 +480 640 +480 640 +640 427 +640 426 +640 480 +640 432 +500 375 +640 427 +640 423 +640 480 +640 480 +500 375 +640 480 +640 480 +500 357 +640 427 +428 640 +640 426 +428 640 +480 640 +640 426 +612 612 +640 440 +480 640 +480 640 +640 480 +640 359 +500 375 +332 500 +640 427 +640 480 +640 400 +500 333 +340 500 +640 427 +640 448 +640 510 +640 427 +640 480 +429 640 +640 352 +640 436 +424 640 +450 600 +428 640 +640 480 +640 479 +640 427 +640 640 +480 640 +640 279 +640 423 +640 427 +640 425 +640 640 +640 427 +640 427 +427 640 +640 480 +512 480 +640 426 +427 640 +640 427 +640 480 +640 631 +640 425 +333 500 +378 500 +480 272 +640 480 +480 640 +640 443 +640 427 +427 640 +640 426 +640 480 +640 424 +640 506 +640 406 +480 640 +640 388 +640 424 +640 480 +640 407 +425 640 +640 388 +640 480 +640 494 +640 426 +640 480 +500 336 +426 640 +640 427 +640 426 +640 468 +427 640 +424 640 +500 333 +640 407 +612 612 +640 425 +500 333 +640 457 +640 480 +500 375 +480 640 +640 426 +640 480 +426 640 +640 423 +640 480 +640 427 +640 426 +640 480 +640 480 +640 480 +640 480 +640 412 +640 426 +612 612 +640 427 +426 640 +640 480 +640 376 +640 480 +640 404 +640 482 +640 427 +427 640 +640 426 +640 431 +640 425 +480 640 +382 500 +640 428 +375 500 +640 359 +640 427 +640 426 +640 485 +640 392 +640 332 +480 640 +640 425 +333 500 +640 426 +640 457 +500 340 +640 480 +500 326 +375 500 +640 396 +480 640 +333 500 +640 427 +640 480 +640 480 +640 427 +640 429 +640 427 +640 476 +428 640 +640 480 +427 640 +640 495 +640 480 +500 334 +640 508 +640 480 +640 457 +640 427 +640 480 +500 375 +425 640 +640 290 +500 330 +466 640 +500 375 +640 480 +640 480 +640 600 +640 640 +480 640 +640 426 +640 427 +640 427 +427 640 +640 473 +640 428 +640 480 +640 480 +640 480 +640 480 +640 427 +640 427 +500 375 +640 427 +426 640 +640 422 +640 480 +640 480 +640 425 +640 426 +640 427 +480 640 +640 426 +640 427 +335 500 +640 427 +640 480 +396 640 +640 480 +640 427 +425 640 +480 640 +640 494 +640 427 +640 480 +500 375 +480 640 +640 478 +514 640 +640 433 +640 480 +400 500 +640 426 +640 426 +480 640 +640 427 +500 333 +640 360 +640 478 +480 640 +640 427 +479 640 +478 640 +612 612 +512 640 +640 480 +640 427 +500 335 +640 480 +640 360 +640 496 +375 500 +386 640 +640 428 +640 441 +640 480 +640 427 +480 640 +640 427 +640 428 +428 640 +425 640 +640 549 +480 640 +640 480 +640 480 +640 391 +640 480 +640 480 +480 640 +640 427 +640 480 +640 480 +640 512 +500 317 +478 640 +640 428 +640 427 +640 480 +640 480 +640 427 +640 436 +640 503 +640 426 +640 480 +640 426 +640 311 +640 427 +640 640 +640 425 +640 478 +480 640 +480 640 +640 427 +640 480 +640 480 +640 428 +640 504 +427 640 +640 478 +640 480 +640 559 +640 437 +612 612 +640 424 +640 480 +480 640 +640 459 +640 424 +640 426 +640 480 +640 426 +640 480 +640 480 +640 480 +640 480 +500 335 +640 480 +640 426 +640 427 +427 640 +640 427 +640 426 +480 640 +640 480 +640 480 +640 423 +640 424 +640 480 +640 427 +640 480 +640 480 +348 640 +375 500 +461 640 +427 640 +612 612 +640 457 +640 426 +640 506 +414 640 +640 417 +640 423 +640 478 +640 426 +500 375 +640 481 +640 428 +640 428 +600 600 +640 429 +500 375 +640 480 +640 501 +640 480 +640 479 +640 480 +640 480 +640 480 +480 640 +538 360 +500 375 +640 480 +480 640 +640 512 +424 640 +640 425 +640 425 +640 480 +640 424 +500 375 +640 480 +640 360 +427 640 +448 299 +640 392 +426 640 +640 427 +640 445 +612 612 +500 333 +640 518 +640 320 +640 428 +480 640 +640 428 +640 428 +640 480 +640 427 +375 500 +640 480 +500 438 +478 640 +500 375 +320 240 +640 480 +640 480 +640 326 +640 480 +640 480 +640 491 +423 640 +640 427 +640 428 +640 480 +640 428 +640 480 +480 640 +640 398 +640 480 +612 612 +640 480 +640 425 +640 437 +426 640 +640 480 +640 431 +640 427 +427 640 +500 375 +375 500 +486 640 +480 640 +640 427 +426 640 +425 640 +478 640 +333 500 +500 332 +640 480 +640 640 +640 480 +500 448 +427 640 +500 372 +640 426 +480 360 +640 426 +427 640 +426 640 +427 640 +466 640 +640 403 +333 500 +640 449 +329 469 +640 342 +640 478 +640 474 +640 480 +425 640 +640 399 +640 426 +640 480 +500 334 +612 612 +482 640 +425 640 +640 640 +640 486 +333 500 +640 208 +612 612 +640 480 +427 640 +427 640 +640 480 +425 640 +640 427 +500 334 +640 427 +640 380 +500 281 +640 425 +640 425 +640 425 +640 480 +478 640 +333 500 +640 427 +640 427 +640 480 +428 640 +640 427 +640 480 +480 640 +640 427 +640 480 +640 480 +640 503 +427 640 +612 612 +640 427 +640 480 +640 565 +612 612 +640 640 +500 377 +640 428 +640 424 +500 375 +500 375 +480 640 +640 427 +369 500 +640 441 +640 425 +640 480 +640 480 +640 480 +500 333 +500 375 +640 480 +424 640 +500 333 +640 502 +640 480 +640 480 +500 334 +640 480 +640 480 +501 640 +640 480 +640 480 +478 640 +640 428 +612 612 +480 640 +592 640 +640 480 +640 480 +640 427 +640 480 +640 480 +427 640 +640 547 +640 480 +640 480 +640 439 +640 480 +640 427 +481 640 +494 378 +640 405 +640 480 +640 399 +519 640 +640 480 +640 360 +640 480 +640 427 +640 427 +640 483 +379 500 +640 480 +640 427 +640 426 +640 429 +640 426 +383 640 +640 480 +640 601 +640 455 +640 480 +375 500 +640 427 +640 427 +640 426 +427 640 +640 427 +640 426 +640 426 +500 375 +640 480 +480 640 +480 640 +427 640 +427 640 +480 640 +480 640 +640 426 +640 480 +500 375 +425 640 +480 640 +375 500 +640 480 +640 425 +640 425 +640 516 +640 463 +640 361 +640 402 +427 640 +512 640 +361 640 +424 640 +427 640 +640 640 +480 640 +640 457 +373 500 +640 426 +640 480 +640 478 +640 479 +640 427 +427 640 +640 480 +500 375 +480 640 +640 427 +640 480 +640 480 +640 480 +640 425 +640 427 +640 480 +640 419 +427 640 +640 427 +640 427 +640 480 +480 640 +640 425 +640 640 +640 480 +640 400 +333 500 +427 640 +640 480 +612 612 +640 427 +640 513 +640 428 +397 500 +640 427 +640 480 +426 640 +428 640 +480 640 +333 500 +640 426 +500 333 +500 335 +448 640 +500 375 +480 640 +640 456 +640 427 +640 457 +500 375 +640 406 +640 427 +480 640 +500 377 +500 375 +640 431 +640 359 +640 640 +640 428 +427 640 +640 480 +426 640 +640 427 +480 640 +500 333 +640 480 +640 426 +640 496 +532 640 +640 450 +640 427 +640 480 +480 640 +640 428 +640 258 +640 383 +640 460 +640 480 +640 480 +375 500 +640 263 +500 375 +612 612 +640 308 +640 427 +484 640 +640 424 +500 375 +640 427 +330 500 +640 360 +640 427 +480 640 +640 424 +640 480 +500 329 +640 480 +640 354 +640 480 +640 480 +343 230 +640 451 +427 640 +640 427 +500 429 +640 480 +640 427 +640 454 +640 426 +427 640 +525 640 +640 463 +200 133 +640 480 +426 640 +640 534 +640 494 +500 400 +500 375 +612 612 +480 640 +640 480 +640 569 +621 600 +640 480 +640 426 +640 480 +640 640 +640 427 +500 375 +640 480 +640 423 +500 375 +640 424 +426 640 +333 500 +640 294 +476 640 +545 640 +426 640 +480 640 +441 640 +640 480 +640 427 +640 427 +486 640 +640 426 +640 427 +171 500 +375 500 +425 640 +640 427 +640 426 +640 426 +427 640 +640 480 +640 360 +640 640 +640 427 +332 500 +500 375 +320 240 +640 480 +640 416 +640 428 +640 488 +640 426 +640 426 +640 480 +629 640 +361 640 +640 428 +640 480 +640 427 +640 360 +640 475 +500 375 +640 480 +640 548 +500 375 +427 640 +640 479 +480 640 +478 640 +480 640 +640 480 +640 438 +468 640 +640 340 +640 480 +640 480 +640 427 +640 480 +640 427 +500 375 +640 427 +640 424 +640 480 +478 640 +480 640 +640 427 +640 529 +500 375 +640 426 +640 426 +640 480 +612 612 +640 359 +480 640 +640 360 +640 427 +425 640 +640 427 +424 640 +640 480 +640 422 +640 443 +640 427 +640 428 +640 640 +640 480 +640 424 +640 480 +640 480 +640 480 +500 375 +640 480 +500 375 +640 426 +640 333 +455 480 +480 640 +407 640 +500 334 +640 480 +427 640 +500 333 +500 375 +480 640 +640 423 +500 393 +480 640 +640 427 +333 500 +640 360 +418 640 +640 536 +640 428 +640 452 +640 384 +500 332 +490 640 +640 426 +640 425 +640 496 +640 428 +640 429 +640 300 +640 427 +481 640 +640 480 +640 427 +612 612 +341 500 +612 612 +640 299 +640 536 +640 480 +427 640 +640 360 +427 640 +640 427 +500 375 +500 333 +640 480 +424 640 +640 427 +640 427 +640 480 +426 640 +640 480 +640 427 +640 480 +500 375 +640 426 +640 480 +640 480 +640 424 +480 640 +640 427 +640 640 +640 427 +426 640 +640 480 +640 480 +640 640 +640 480 +640 486 +375 500 +640 480 +375 500 +480 640 +640 479 +640 427 +480 640 +640 425 +640 424 +500 295 +427 640 +427 640 +640 480 +640 426 +430 640 +640 427 +375 500 +640 360 +640 480 +427 640 +640 480 +375 500 +640 427 +640 359 +640 480 +500 333 +426 640 +640 427 +637 640 +640 425 +480 640 +427 640 +640 424 +640 479 +640 427 +457 640 +640 427 +480 640 +640 480 +640 427 +500 337 +427 640 +640 360 +500 375 +640 640 +480 640 +640 428 +428 640 +500 375 +480 640 +640 480 +640 480 +640 480 +640 484 +426 640 +480 640 +480 640 +500 375 +640 480 +387 640 +640 427 +640 425 +427 640 +640 427 +375 500 +640 480 +640 480 +427 640 +500 366 +640 480 +640 480 +640 472 +640 416 +640 426 +427 640 +640 480 +478 640 +640 425 +640 428 +428 640 +640 480 +493 640 +640 480 +640 424 +500 333 +640 427 +640 427 +640 480 +640 427 +640 470 +640 427 +375 500 +640 427 +500 499 +640 480 +640 427 +640 427 +480 640 +640 436 +640 375 +640 640 +640 404 +333 500 +500 361 +640 480 +640 424 +640 480 +640 480 +640 444 +640 426 +480 640 +470 640 +640 427 +640 427 +480 640 +640 428 +640 425 +640 427 +640 426 +640 480 +640 480 +640 480 +480 640 +600 450 +640 378 +640 427 +640 480 +640 424 +640 480 +640 425 +427 640 +553 640 +640 428 +640 480 +640 428 +442 640 +500 375 +415 500 +640 640 +640 426 +500 378 +640 427 +640 480 +640 479 +640 427 +380 640 +640 480 +640 480 +500 375 +500 311 +469 640 +640 421 +640 480 +640 480 +640 427 +640 476 +640 480 +640 480 +480 640 +640 480 +640 480 +412 500 +640 426 +640 640 +640 427 +640 425 +640 368 +640 626 +640 484 +612 612 +640 514 +640 640 +640 468 +500 314 +458 640 +480 640 +640 457 +640 480 +640 480 +640 427 +640 480 +479 640 +640 480 +640 512 +334 500 +500 500 +640 426 +375 500 +427 640 +332 500 +640 426 +640 480 +640 480 +426 640 +640 427 +612 612 +640 480 +640 410 +640 480 +640 427 +640 480 +500 375 +640 426 +480 640 +457 640 +640 427 +427 640 +640 480 +640 427 +640 480 +640 426 +640 428 +333 500 +640 478 +640 426 +640 427 +640 480 +640 480 +450 500 +640 427 +640 427 +640 428 +381 640 +500 375 +375 500 +640 426 +640 519 +480 640 +640 588 +375 500 +640 480 +640 480 +500 442 +480 640 +640 480 +500 429 +640 429 +640 427 +640 425 +640 480 +500 375 +640 427 +480 640 +640 480 +480 640 +640 480 +640 437 +640 480 +640 312 +640 427 +500 332 +640 480 +429 640 +640 426 +640 556 +480 640 +640 427 +640 427 +480 640 +640 486 +640 480 +640 480 +640 480 +640 480 +300 403 +493 500 +640 480 +640 414 +640 375 +333 500 +500 333 +630 420 +640 414 +375 500 +640 427 +640 427 +640 457 +640 361 +640 427 +500 333 +640 425 +640 480 +426 640 +640 429 +640 480 +640 426 +640 427 +640 480 +640 426 +640 360 +640 480 +612 612 +640 429 +425 640 +612 612 +480 640 +640 478 +413 640 +640 478 +480 640 +640 427 +640 360 +480 640 +500 332 +640 480 +640 480 +640 471 +640 478 +427 640 +404 640 +640 480 +375 500 +359 640 +640 425 +480 640 +640 458 +640 426 +427 640 +640 427 +500 395 +640 427 +640 425 +640 427 +640 428 +375 500 +375 500 +500 375 +425 640 +640 480 +612 612 +640 489 +640 426 +640 426 +640 479 +640 464 +640 480 +640 532 +640 480 +640 322 +640 427 +500 323 +640 427 +500 375 +427 640 +640 640 +426 640 +612 612 +500 332 +480 640 +423 640 +640 480 +640 384 +640 429 +640 512 +500 375 +480 640 +640 532 +640 425 +640 480 +640 428 +425 640 +427 640 +500 338 +640 420 +640 480 +640 427 +640 427 +640 427 +640 426 +640 480 +640 480 +375 500 +640 426 +424 640 +640 480 +640 428 +640 352 +640 480 +426 640 +500 333 +640 425 +640 480 +640 426 +640 480 +640 513 +640 426 +640 394 +640 480 +640 480 +640 434 +500 341 +418 640 +640 426 +640 480 +640 480 +640 480 +500 375 +426 640 +500 375 +640 446 +640 480 +640 426 +640 427 +640 426 +640 480 +640 463 +640 480 +427 640 +640 426 +640 498 +213 140 +640 427 +375 500 +640 426 +500 375 +332 500 +427 640 +640 427 +640 426 +640 480 +640 480 +426 640 +640 425 +640 480 +480 640 +640 489 +640 480 +640 480 +478 640 +640 426 +640 563 +640 478 +640 480 +640 480 +640 427 +500 334 +640 478 +500 375 +640 443 +427 640 +353 500 +640 511 +640 427 +612 612 +480 640 +600 400 +500 375 +581 575 +640 427 +640 424 +640 359 +640 483 +500 375 +480 640 +640 480 +640 426 +640 427 +500 375 +500 375 +640 456 +640 480 +640 480 +640 428 +640 480 +640 480 +427 640 +640 480 +500 352 +640 427 +445 640 +500 332 +640 494 +640 484 +598 640 +640 480 +640 480 +640 427 +640 427 +500 333 +640 640 +427 640 +480 640 +640 457 +640 427 +480 640 +640 514 +640 471 +640 478 +427 640 +640 422 +640 480 +640 421 +612 612 +640 478 +500 375 +640 522 +640 424 +480 640 +640 480 +640 480 +602 640 +640 428 +640 376 +640 320 +612 612 +640 482 +640 480 +427 640 +640 480 +640 426 +640 480 +640 480 +640 536 +640 426 +640 480 +450 640 +640 427 +324 432 +640 505 +640 480 +500 500 +640 640 +640 425 +480 640 +640 480 +427 640 +640 497 +640 360 +640 480 +640 480 +640 480 +640 427 +500 373 +640 428 +640 426 +500 375 +640 423 +640 616 +640 428 +640 502 +640 488 +414 640 +640 479 +478 640 +620 640 +640 427 +640 360 +640 427 +500 344 +640 480 +640 480 +640 480 +428 640 +444 640 +640 429 +500 375 +422 640 +360 640 +500 332 +640 480 +615 310 +640 427 +640 480 +612 612 +640 425 +427 640 +640 427 +375 500 +426 640 +612 612 +640 640 +500 333 +640 426 +500 375 +640 426 +640 539 +640 480 +640 481 +640 427 +640 603 +640 426 +640 457 +500 375 +640 448 +640 369 +640 480 +500 333 +375 500 +640 480 +427 640 +640 441 +640 301 +332 500 +640 480 +640 426 +640 480 +250 188 +573 640 +500 375 +640 427 +640 327 +640 496 +359 500 +640 427 +640 480 +640 360 +640 530 +640 427 +640 426 +640 498 +480 640 +640 480 +480 640 +500 334 +640 427 +640 406 +480 640 +640 480 +640 469 +640 480 +640 480 +640 433 +640 480 +640 439 +460 345 +640 426 +640 480 +640 360 +640 480 +640 480 +405 640 +640 427 +480 640 +427 640 +640 480 +640 480 +640 425 +480 640 +640 427 +612 612 +640 480 +612 612 +640 429 +640 478 +500 333 +640 480 +640 366 +640 360 +480 640 +480 640 +500 333 +640 480 +640 483 +640 480 +640 480 +640 483 +500 500 +500 375 +640 463 +612 612 +640 480 +500 375 +355 500 +640 472 +640 480 +425 640 +604 640 +640 383 +427 640 +640 427 +640 427 +640 425 +640 410 +640 480 +640 429 +640 480 +640 480 +640 508 +640 426 +640 360 +500 375 +612 612 +370 500 +640 320 +426 640 +640 480 +480 640 +426 640 +480 640 +640 427 +640 426 +612 612 +640 338 +640 425 +640 480 +480 640 +375 500 +640 480 +640 512 +427 640 +500 375 +640 427 +640 428 +640 425 +640 476 +426 640 +480 640 +480 640 +480 640 +494 640 +480 640 +609 640 +640 368 +640 427 +640 433 +640 480 +375 500 +510 510 +640 425 +640 480 +375 500 +640 480 +640 640 +640 424 +640 427 +640 429 +640 480 +480 640 +640 480 +500 375 +640 480 +611 640 +500 332 +640 427 +421 640 +640 480 +640 427 +640 478 +612 612 +612 612 +640 480 +375 500 +640 480 +640 480 +500 270 +640 480 +612 612 +500 250 +500 375 +640 364 +640 480 +640 427 +480 640 +640 427 +640 426 +500 342 +640 427 +500 330 +640 480 +640 426 +640 427 +400 500 +640 479 +296 640 +620 640 +640 480 +480 640 +640 427 +480 640 +640 480 +640 427 +640 480 +640 428 +640 427 +612 612 +640 480 +640 480 +640 480 +400 312 +640 480 +640 427 +426 255 +612 612 +640 428 +640 430 +320 240 +640 425 +640 480 +425 640 +640 428 +640 433 +640 427 +357 500 +640 459 +640 427 +640 480 +640 491 +500 375 +640 427 +510 640 +640 486 +640 480 +640 424 +640 478 +480 640 +428 640 +326 500 +640 480 +500 324 +640 427 +640 640 +640 495 +640 426 +500 375 +426 640 +640 480 +640 514 +640 427 +500 375 +427 640 +640 428 +640 359 +640 480 +640 482 +640 480 +640 387 +424 640 +640 480 +474 640 +612 612 +500 375 +160 120 +640 399 +500 333 +425 640 +640 427 +480 640 +362 500 +640 427 +640 480 +480 640 +480 640 +518 640 +425 640 +500 333 +640 480 +640 480 +427 500 +500 375 +640 435 +500 375 +640 427 +640 512 +640 427 +418 640 +640 434 +500 376 +640 480 +640 426 +500 333 +500 340 +427 640 +640 427 +375 500 +640 427 +640 427 +500 207 +427 640 +640 480 +640 360 +480 640 +640 427 +512 640 +500 333 +480 640 +640 429 +640 532 +640 420 +640 480 +500 437 +383 640 +640 426 +640 480 +480 319 +640 480 +424 640 +427 640 +640 480 +640 480 +426 640 +426 640 +640 447 +640 424 +480 640 +640 427 +640 480 +640 480 +640 426 +640 427 +504 640 +640 480 +640 433 +640 426 +640 427 +500 333 +480 640 +640 478 +640 428 +640 427 +640 427 +500 333 +640 426 +640 432 +500 375 +500 375 +640 480 +344 500 +375 500 +480 640 +500 375 +426 640 +640 167 +500 333 +640 407 +640 424 +640 426 +640 512 +640 427 +640 480 +599 419 +640 427 +640 480 +640 427 +640 480 +640 480 +640 425 +640 480 +640 494 +640 448 +640 480 +426 640 +640 480 +640 480 +454 640 +640 427 +640 480 +640 427 +426 640 +640 427 +640 426 +640 426 +640 426 +640 480 +640 360 +640 427 +640 427 +640 427 +480 640 +640 427 +640 480 +640 366 +500 375 +640 427 +480 640 +640 427 +500 375 +640 427 +640 427 +640 428 +500 375 +640 289 +640 480 +480 640 +427 640 +480 640 +640 480 +640 640 +472 640 +427 640 +612 612 +480 640 +640 427 +640 427 +425 640 +640 426 +640 360 +640 354 +480 640 +640 424 +480 640 +640 392 +640 228 +640 424 +640 480 +640 480 +500 281 +640 480 +640 427 +640 278 +376 500 +375 500 +640 432 +640 357 +425 640 +480 640 +500 337 +500 375 +500 375 +640 480 +640 480 +640 427 +640 427 +333 500 +640 480 +480 640 +640 360 +591 640 +640 360 +640 480 +480 640 +640 480 +640 427 +500 375 +640 480 +427 640 +640 427 +640 640 +500 366 +640 480 +512 640 +359 640 +320 640 +640 360 +480 640 +480 640 +640 619 +640 426 +500 400 +640 427 +640 427 +333 500 +640 424 +480 640 +425 640 +640 361 +452 500 +404 500 +640 640 +425 640 +640 406 +436 291 +640 480 +640 426 +640 427 +425 640 +429 640 +500 375 +640 426 +500 375 +480 640 +640 427 +640 512 +640 426 +640 426 +640 427 +640 480 +324 500 +640 480 +640 428 +640 480 +640 397 +375 500 +640 480 +640 400 +640 360 +640 426 +640 427 +640 427 +640 427 +500 330 +480 640 +640 576 +640 428 +500 331 +640 427 +500 278 +480 640 +640 640 +490 640 +640 383 +612 612 +480 640 +332 500 +640 480 +640 480 +640 427 +478 640 +426 640 +640 507 +480 640 +480 640 +480 640 +640 424 +640 252 +640 411 +640 427 +640 427 +463 640 +640 480 +640 427 +640 429 +331 500 +640 480 +640 427 +500 332 +500 375 +352 288 +500 375 +491 640 +479 640 +612 612 +480 640 +640 427 +403 456 +600 399 +375 500 +640 424 +640 480 +612 612 +640 480 +640 427 +640 482 +462 640 +480 640 +427 640 +640 427 +640 429 +640 425 +640 427 +640 468 +640 427 +640 480 +640 490 +640 480 +640 427 +640 480 +640 640 +640 480 +612 612 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +427 640 +640 427 +538 360 +640 480 +640 426 +500 370 +640 425 +640 480 +640 425 +428 640 +640 480 +640 428 +500 375 +428 640 +640 427 +640 460 +640 480 +512 640 +640 426 +640 427 +640 424 +500 375 +640 516 +640 424 +640 428 +500 332 +640 427 +461 307 +640 426 +640 379 +640 480 +640 420 +640 480 +480 640 +480 640 +640 638 +640 259 +640 480 +426 640 +640 427 +640 480 +640 480 +640 427 +640 426 +375 500 +640 427 +640 421 +426 640 +640 424 +640 426 +640 427 +480 640 +375 500 +640 429 +640 583 +640 480 +500 375 +640 640 +426 640 +640 480 +284 640 +240 166 +640 428 +640 426 +640 480 +640 596 +640 425 +640 640 +640 427 +640 408 +640 360 +500 375 +427 640 +480 640 +640 480 +640 423 +640 428 +640 360 +640 585 +640 426 +640 425 +354 500 +640 480 +640 424 +640 435 +640 480 +500 375 +640 427 +640 480 +427 640 +425 640 +375 500 +640 450 +640 426 +640 640 +480 640 +360 640 +640 426 +640 428 +640 427 +427 640 +640 480 +500 375 +640 426 +600 375 +640 331 +640 434 +640 428 +427 640 +500 335 +640 426 +640 480 +640 392 +640 427 +640 480 +640 640 +612 612 +640 360 +375 500 +612 612 +640 480 +640 480 +640 480 +636 479 +640 433 +640 480 +397 464 +480 640 +640 426 +640 429 +640 480 +427 640 +640 428 +444 640 +640 480 +640 359 +480 640 +640 425 +500 375 +640 378 +640 428 +427 640 +640 334 +640 428 +640 426 +640 480 +640 495 +640 473 +640 384 +427 640 +640 405 +478 640 +640 425 +480 640 +640 426 +500 366 +640 426 +640 427 +480 640 +500 332 +640 480 +640 399 +640 427 +640 424 +640 480 +640 502 +640 502 +640 480 +640 480 +640 451 +640 426 +375 500 +640 427 +640 423 +422 640 +500 335 +640 480 +640 480 +427 640 +640 404 +640 427 +640 427 +640 427 +640 480 +640 480 +480 640 +640 426 +640 393 +457 640 +640 426 +480 640 +500 500 +640 427 +640 480 +500 375 +640 480 +500 375 +640 426 +640 480 +500 375 +351 500 +379 500 +640 428 +640 427 +640 419 +500 454 +363 640 +640 427 +640 427 +420 640 +640 427 +426 640 +500 375 +427 640 +640 427 +640 448 +443 640 +512 640 +640 427 +640 480 +640 515 +640 432 +640 428 +640 480 +375 500 +640 338 +500 500 +515 640 +640 480 +640 449 +640 427 +640 532 +500 640 +640 374 +640 427 +640 614 +640 480 +640 480 +480 640 +640 480 +427 640 +640 451 +640 424 +640 480 +640 426 +640 425 +640 480 +458 640 +480 640 +640 427 +480 640 +288 352 +640 427 +640 463 +640 427 +640 480 +640 425 +393 640 +480 640 +640 427 +425 640 +640 427 +512 640 +640 425 +640 480 +640 256 +640 478 +500 375 +640 559 +612 612 +444 640 +640 427 +480 640 +640 360 +640 488 +640 452 +640 426 +427 640 +487 291 +439 640 +640 515 +640 480 +640 480 +640 480 +612 612 +478 640 +640 480 +480 640 +633 640 +500 333 +640 425 +640 480 +480 640 +640 480 +640 480 +312 640 +640 479 +640 427 +427 640 +640 480 +500 375 +640 480 +640 427 +640 480 +480 640 +640 474 +640 427 +640 426 +386 640 +640 383 +450 640 +500 332 +640 479 +480 640 +640 480 +449 640 +640 480 +640 388 +640 429 +640 480 +375 500 +640 480 +640 480 +640 427 +640 425 +640 480 +640 383 +640 427 +640 425 +612 612 +640 480 +640 616 +500 375 +400 600 +500 454 +640 369 +445 640 +640 426 +486 640 +640 447 +640 480 +480 640 +640 480 +613 640 +640 427 +467 640 +640 480 +640 426 +640 364 +640 424 +399 600 +640 480 +500 333 +640 427 +640 426 +480 640 +480 640 +389 640 +640 480 +640 480 +640 426 +375 500 +640 480 +640 480 +640 480 +640 480 +640 427 +640 426 +640 427 +640 426 +640 427 +640 426 +640 480 +640 429 +640 480 +428 640 +640 443 +640 426 +640 501 +640 339 +640 640 +640 480 +640 429 +519 640 +640 480 +375 500 +640 427 +640 426 +640 480 +640 636 +640 426 +500 375 +500 375 +640 480 +500 375 +640 426 +640 428 +640 436 +612 612 +640 471 +640 423 +640 429 +640 425 +425 640 +640 480 +640 424 +640 504 +640 480 +480 640 +640 480 +640 428 +640 480 +640 639 +640 480 +480 640 +500 375 +640 360 +333 500 +640 411 +640 481 +640 393 +430 640 +640 427 +500 500 +640 427 +640 543 +640 480 +640 427 +640 480 +500 284 +640 480 +640 438 +640 480 +612 612 +612 612 +427 640 +480 640 +640 480 +480 640 +426 640 +500 333 +640 427 +640 480 +500 375 +640 480 +640 482 +640 427 +500 375 +640 427 +640 427 +640 360 +640 478 +640 427 +640 480 +640 480 +500 375 +500 333 +500 375 +461 640 +640 480 +640 427 +640 426 +640 480 +640 480 +640 480 +640 490 +500 308 +640 359 +640 406 +500 334 +480 640 +640 478 +640 428 +500 404 +640 427 +612 612 +480 640 +640 480 +640 480 +640 427 +640 640 +640 427 +640 427 +640 473 +640 480 +640 480 +640 480 +501 640 +640 640 +640 424 +640 521 +480 640 +480 640 +640 428 +480 640 +640 480 +640 428 +640 480 +640 383 +479 640 +640 425 +640 427 +640 480 +640 480 +640 480 +640 505 +640 480 +500 333 +640 480 +640 480 +500 375 +640 480 +640 449 +640 480 +375 500 +640 428 +500 375 +500 333 +640 480 +640 424 +640 428 +640 427 +640 427 +612 612 +640 543 +640 446 +640 505 +500 375 +480 640 +640 400 +640 427 +640 480 +640 426 +479 640 +640 480 +640 320 +428 640 +640 448 +480 640 +612 612 +640 480 +640 424 +640 477 +427 640 +341 500 +480 640 +428 640 +640 427 +427 640 +640 427 +640 480 +640 480 +640 427 +640 428 +480 640 +640 427 +640 480 +640 426 +425 640 +640 480 +640 480 +640 462 +500 375 +594 555 +640 427 +640 480 +640 480 +640 447 +612 612 +640 480 +640 480 +640 427 +640 480 +500 375 +640 454 +427 640 +640 426 +640 480 +640 640 +287 432 +640 427 +640 640 +640 427 +640 426 +500 400 +640 427 +640 480 +640 427 +500 334 +612 612 +640 480 +640 480 +500 375 +640 480 +427 640 +500 333 +612 612 +640 429 +640 480 +480 640 +640 427 +640 480 +640 427 +500 375 +640 480 +375 500 +500 375 +551 640 +640 427 +640 429 +640 428 +640 360 +640 478 +640 480 +308 500 +640 478 +640 388 +640 480 +640 426 +640 423 +500 375 +640 429 +427 640 +640 389 +640 480 +640 427 +640 333 +640 428 +500 346 +640 480 +640 425 +640 438 +640 480 +640 480 +640 428 +640 481 +483 640 +427 640 +640 428 +640 426 +640 480 +480 640 +640 427 +640 480 +320 240 +640 425 +500 333 +640 506 +640 428 +640 425 +480 360 +640 427 +408 640 +612 612 +480 640 +640 359 +491 280 +640 480 +640 637 +480 640 +640 424 +640 480 +640 481 +640 480 +640 480 +640 480 +640 480 +480 640 +439 640 +640 480 +640 428 +517 640 +640 427 +640 457 +500 375 +640 484 +480 640 +640 480 +640 480 +640 418 +640 601 +600 400 +640 427 +640 480 +480 640 +640 480 +500 375 +426 640 +640 480 +639 640 +480 640 +480 640 +640 314 +480 640 +500 361 +640 473 +500 377 +612 612 +640 403 +640 426 +512 640 +640 640 +640 429 +640 480 +640 428 +640 480 +640 480 +640 480 +480 640 +500 500 +500 333 +640 428 +640 452 +480 640 +640 479 +518 640 +500 500 +640 427 +479 640 +640 481 +640 480 +612 612 +484 480 +319 640 +480 640 +480 640 +629 640 +478 640 +381 500 +640 427 +640 480 +640 480 +640 427 +640 463 +428 640 +427 640 +480 640 +640 480 +500 375 +640 427 +640 419 +640 480 +640 313 +480 640 +445 640 +640 480 +640 427 +375 500 +640 480 +640 512 +480 640 +640 427 +640 480 +640 427 +640 427 +640 536 +375 500 +640 428 +640 480 +640 360 +640 425 +640 480 +640 427 +640 427 +640 427 +350 500 +480 640 +500 374 +640 478 +640 480 +640 429 +640 478 +640 467 +500 332 +480 640 +500 375 +640 478 +427 640 +640 427 +427 640 +375 500 +640 424 +640 480 +428 640 +640 480 +640 613 +480 640 +640 444 +640 383 +640 480 +640 427 +640 480 +640 495 +640 426 +640 415 +640 480 +640 427 +480 640 +640 449 +640 426 +640 264 +640 427 +640 427 +509 640 +640 427 +640 480 +494 640 +480 640 +634 640 +640 427 +640 480 +640 516 +640 480 +640 428 +640 486 +640 428 +640 480 +640 401 +500 375 +640 480 +640 426 +500 334 +640 480 +620 640 +640 480 +314 500 +360 640 +640 427 +500 376 +500 333 +640 480 +640 480 +426 640 +640 414 +640 427 +480 640 +640 480 +640 480 +640 480 +500 375 +640 427 +640 480 +612 612 +640 480 +427 640 +640 425 +640 427 +640 464 +640 480 +640 427 +640 427 +612 612 +640 481 +640 480 +640 479 +640 425 +640 427 +640 266 +427 640 +640 305 +480 640 +640 427 +427 640 +455 640 +640 425 +480 640 +640 480 +375 500 +428 640 +480 640 +640 355 +375 500 +640 427 +640 204 +640 640 +640 480 +640 427 +640 457 +427 640 +640 425 +500 375 +640 426 +640 427 +640 480 +571 640 +640 480 +640 628 +480 640 +427 640 +640 425 +427 640 +500 375 +426 640 +500 332 +640 480 +640 427 +640 427 +640 427 +332 500 +457 640 +640 429 +640 427 +427 640 +496 500 +640 383 +640 422 +640 480 +640 427 +640 347 +393 500 +480 640 +640 637 +640 424 +500 375 +640 480 +640 480 +640 427 +640 425 +640 480 +640 427 +640 480 +640 427 +640 432 +640 480 +640 428 +427 640 +500 375 +640 480 +640 425 +640 465 +640 480 +640 324 +640 480 +640 427 +640 462 +640 426 +640 360 +640 427 +640 426 +424 640 +640 428 +500 334 +640 425 +640 213 +640 480 +333 500 +640 359 +640 480 +640 427 +612 612 +480 640 +480 640 +640 480 +640 427 +500 381 +500 342 +640 449 +640 480 +640 430 +640 480 +640 427 +640 480 +427 640 +427 640 +640 427 +640 480 +640 399 +640 457 +640 480 +640 480 +640 427 +640 337 +640 427 +426 640 +640 428 +640 363 +640 480 +640 430 +640 481 +640 429 +640 480 +640 433 +640 428 +478 640 +640 427 +480 640 +612 612 +480 360 +640 480 +375 500 +640 427 +640 426 +640 266 +640 426 +498 640 +640 480 +480 640 +640 427 +640 427 +640 480 +480 640 +612 612 +640 624 +640 427 +640 398 +640 426 +640 480 +360 640 +640 478 +640 427 +640 427 +500 375 +640 526 +640 362 +640 480 +640 424 +640 480 +426 640 +480 640 +640 426 +640 426 +640 461 +640 480 +375 500 +640 426 +640 426 +640 425 +480 640 +640 427 +640 430 +640 478 +640 480 +350 500 +375 500 +640 427 +457 640 +640 480 +375 500 +640 640 +640 584 +640 480 +640 480 +500 349 +612 612 +500 375 +640 428 +640 480 +500 333 +500 400 +640 513 +640 427 +640 427 +480 640 +640 478 +457 640 +640 427 +500 281 +640 368 +640 480 +640 427 +640 427 +500 406 +500 375 +360 270 +640 422 +480 640 +640 427 +640 561 +640 478 +640 427 +640 480 +500 333 +640 427 +640 427 +640 480 +640 427 +640 485 +400 640 +427 640 +640 480 +428 640 +640 273 +600 402 +480 640 +640 518 +640 427 +640 480 +640 427 +640 427 +640 427 +640 480 +640 640 +640 426 +354 500 +640 480 +640 415 +480 640 +640 480 +640 418 +640 428 +640 480 +640 425 +335 500 +640 480 +640 636 +640 429 +427 640 +640 480 +427 640 +640 427 +612 612 +640 480 +640 480 +500 392 +640 430 +256 448 +640 327 +640 512 +480 640 +640 446 +640 480 +427 640 +500 457 +640 427 +640 427 +500 375 +640 426 +480 640 +640 640 +640 457 +640 482 +375 500 +480 640 +640 476 +640 480 +640 360 +480 640 +427 640 +640 480 +640 427 +640 427 +640 480 +375 500 +500 375 +426 640 +480 640 +640 321 +640 489 +425 640 +182 273 +640 427 +640 427 +640 436 +640 457 +640 426 +561 640 +425 640 +640 427 +640 427 +640 427 +640 451 +427 640 +640 480 +640 480 +612 612 +640 427 +425 640 +640 427 +640 480 +426 640 +375 500 +500 375 +640 426 +640 379 +427 640 +480 640 +640 425 +640 426 +500 493 +640 341 +640 428 +425 640 +640 480 +640 574 +640 480 +480 640 +640 427 +640 480 +640 478 +640 421 +400 640 +640 425 +424 640 +480 640 +640 426 +640 541 +424 640 +640 480 +640 478 +640 427 +426 640 +640 480 +427 640 +500 375 +500 375 +500 326 +468 640 +430 640 +640 480 +640 640 +640 480 +640 361 +428 640 +500 333 +480 640 +640 480 +640 429 +506 640 +640 391 +328 500 +612 612 +426 640 +640 565 +640 480 +640 455 +640 371 +640 426 +640 427 +454 640 +421 640 +640 427 +457 640 +640 321 +640 442 +640 424 +427 640 +640 427 +494 640 +400 239 +640 426 +640 480 +640 480 +480 640 +640 480 +480 640 +471 640 +480 640 +640 497 +640 480 +640 480 +424 640 +640 426 +640 425 +612 612 +500 250 +640 416 +640 480 +640 427 +427 640 +427 640 +640 298 +640 426 +480 640 +640 361 +640 480 +640 360 +640 427 +612 612 +640 426 +480 640 +640 424 +640 411 +640 480 +640 480 +640 426 +640 533 +640 480 +480 640 +640 427 +426 640 +319 235 +640 424 +480 640 +640 353 +500 348 +640 427 +426 640 +375 500 +640 480 +640 426 +640 466 +640 480 +480 640 +640 480 +640 427 +640 480 +480 640 +485 404 +524 640 +500 375 +640 480 +480 640 +640 480 +640 429 +480 640 +640 426 +640 480 +640 359 +640 444 +640 278 +640 469 +640 480 +640 425 +423 640 +612 612 +425 640 +426 640 +640 423 +640 480 +480 640 +640 427 +640 426 +600 450 +640 480 +640 427 +640 427 +640 480 +640 427 +640 427 +640 480 +640 428 +640 480 +640 480 +500 308 +640 478 +640 480 +640 427 +640 427 +640 427 +480 640 +480 640 +640 513 +500 336 +417 640 +375 500 +640 426 +640 454 +375 500 +640 427 +640 318 +640 427 +640 427 +375 500 +640 480 +640 358 +640 427 +640 426 +469 640 +640 427 +480 640 +480 640 +640 480 +640 426 +500 375 +640 427 +480 640 +640 427 +640 360 +500 375 +640 427 +640 480 +640 426 +500 333 +500 375 +480 640 +640 480 +640 480 +473 640 +640 566 +640 476 +427 640 +640 425 +640 490 +480 640 +359 640 +640 480 +500 375 +640 425 +640 427 +444 640 +640 427 +640 480 +640 480 +640 480 +332 500 +640 408 +480 640 +640 480 +640 640 +480 640 +640 480 +640 640 +500 372 +640 428 +607 640 +640 426 +480 640 +640 427 +640 458 +640 426 +500 375 +640 424 +612 612 +640 425 +640 480 +500 370 +640 480 +640 423 +640 427 +640 425 +640 428 +640 428 +640 427 +640 626 +500 267 +640 480 +640 480 +640 478 +332 500 +612 612 +640 428 +640 480 +640 453 +640 480 +640 223 +640 478 +640 427 +640 427 +640 480 +640 422 +640 361 +640 480 +427 640 +486 640 +427 640 +640 427 +612 612 +426 640 +640 427 +411 640 +500 375 +640 427 +640 360 +640 428 +640 428 +640 425 +471 640 +462 640 +640 480 +640 451 +640 427 +640 427 +320 240 +640 512 +427 640 +533 640 +640 427 +480 640 +640 426 +640 425 +427 640 +500 375 +640 425 +640 480 +640 438 +640 425 +498 438 +640 427 +640 423 +640 360 +640 480 +640 480 +500 375 +640 426 +480 640 +640 426 +500 400 +500 479 +612 612 +640 570 +480 640 +640 480 +640 427 +423 640 +640 480 +427 640 +640 480 +640 424 +640 426 +427 640 +640 480 +480 640 +640 480 +640 640 +480 640 +427 640 +640 427 +312 500 +640 480 +640 428 +640 427 +500 375 +638 640 +428 640 +375 500 +640 480 +640 425 +640 420 +505 640 +375 500 +500 296 +480 640 +640 480 +480 640 +612 612 +640 428 +640 471 +640 480 +640 463 +640 427 +640 425 +640 360 +640 360 +427 640 +640 640 +478 640 +640 426 +480 640 +500 375 +480 640 +425 640 +640 640 +640 564 +640 428 +500 375 +640 428 +640 427 +640 480 +640 512 +640 425 +640 452 +640 427 +640 491 +640 483 +480 640 +640 480 +427 640 +640 480 +640 425 +640 480 +427 640 +640 640 +640 428 +425 640 +640 480 +427 640 +429 640 +532 640 +480 640 +640 501 +640 480 +361 640 +450 372 +640 427 +640 480 +640 480 +640 480 +640 441 +480 640 +500 381 +428 640 +640 443 +640 482 +640 427 +640 512 +500 332 +640 480 +403 640 +640 426 +640 453 +480 640 +640 424 +410 500 +640 477 +480 640 +640 426 +500 372 +500 375 +640 360 +485 640 +640 480 +500 375 +640 608 +640 133 +640 428 +640 480 +520 373 +640 427 +480 640 +332 640 +640 427 +612 612 +640 480 +500 429 +640 480 +640 428 +500 375 +640 539 +640 469 +427 640 +640 427 +640 428 +427 640 +480 640 +640 427 +640 480 +640 426 +480 640 +640 480 +640 427 +640 427 +640 480 +640 428 +640 457 +640 480 +640 427 +534 640 +427 640 +640 446 +480 640 +640 425 +427 640 +480 640 +640 361 +500 375 +640 480 +640 480 +480 640 +640 431 +640 480 +426 640 +640 428 +480 640 +640 424 +500 375 +640 427 +640 480 +640 480 +500 375 +640 427 +640 470 +366 500 +333 500 +640 427 +500 375 +320 640 +640 426 +640 509 +612 612 +640 478 +640 426 +640 640 +640 480 +640 320 +448 600 +500 338 +427 640 +640 480 +426 640 +640 481 +640 480 +427 640 +612 612 +480 640 +480 640 +480 640 +425 640 +640 480 +640 480 +640 427 +640 427 +640 427 +640 480 +640 480 +640 480 +640 557 +480 640 +640 425 +640 427 +482 640 +500 375 +568 640 +640 424 +480 319 +640 480 +640 480 +640 480 +640 427 +640 415 +500 375 +500 328 +640 425 +640 431 +319 500 +612 612 +640 640 +640 640 +375 500 +480 640 +640 442 +333 500 +640 429 +640 428 +640 427 +330 500 +500 375 +640 480 +640 512 +612 612 +500 375 +640 427 +640 515 +441 640 +640 480 +493 600 +640 478 +331 500 +500 361 +640 428 +500 375 +640 428 +640 429 +640 427 +640 425 +480 640 +480 640 +480 640 +480 640 +640 426 +640 480 +478 640 +427 640 +375 500 +640 427 +640 475 +500 375 +640 419 +513 640 +480 640 +640 480 +640 428 +348 500 +640 480 +640 480 +640 480 +640 427 +420 500 +640 427 +238 640 +480 640 +640 480 +480 640 +483 640 +640 480 +640 480 +330 640 +485 640 +640 480 +640 429 +640 426 +640 480 +612 612 +640 394 +427 640 +640 457 +333 500 +428 640 +640 426 +640 480 +375 500 +640 446 +640 512 +427 640 +640 428 +640 328 +640 480 +612 612 +640 427 +471 450 +640 480 +480 640 +640 480 +640 480 +640 427 +640 448 +500 409 +640 432 +640 400 +640 427 +640 426 +640 480 +640 480 +640 480 +640 480 +480 640 +640 480 +500 333 +500 375 +427 640 +640 360 +427 640 +500 375 +640 427 +640 460 +640 360 +640 480 +640 480 +640 591 +427 640 +640 480 +640 424 +612 612 +640 431 +640 478 +427 640 +640 427 +640 480 +640 480 +638 640 +479 640 +640 480 +640 480 +640 456 +640 480 +427 640 +640 426 +500 335 +480 640 +640 396 +512 512 +640 427 +480 640 +640 424 +500 375 +500 333 +424 640 +480 640 +640 473 +640 482 +281 486 +480 640 +424 640 +426 640 +640 427 +640 436 +640 480 +500 375 +640 447 +640 427 +640 448 +640 427 +640 427 +640 480 +600 359 +640 148 +640 434 +640 480 +612 612 +500 500 +500 333 +640 426 +426 640 +640 480 +640 428 +640 494 +640 426 +425 640 +640 480 +640 456 +500 375 +427 640 +640 427 +640 480 +640 363 +542 640 +457 640 +640 360 +480 640 +640 478 +500 375 +640 424 +640 488 +480 640 +640 427 +500 375 +640 243 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +532 640 +640 318 +640 480 +640 427 +640 426 +300 225 +480 640 +640 480 +640 429 +640 379 +424 640 +359 640 +640 478 +427 640 +480 640 +640 425 +640 424 +640 480 +332 500 +640 480 +480 640 +640 480 +480 640 +640 427 +426 640 +640 425 +640 479 +640 480 +640 480 +640 428 +640 428 +380 500 +640 480 +640 383 +640 480 +640 427 +500 375 +480 640 +640 427 +500 400 +640 480 +640 427 +640 467 +640 480 +500 375 +480 640 +640 429 +500 375 +640 390 +480 640 +640 480 +600 450 +612 612 +480 640 +468 640 +640 427 +640 480 +640 427 +500 375 +640 480 +640 480 +640 426 +640 480 +640 427 +640 427 +640 480 +500 333 +640 427 +427 640 +640 480 +640 480 +604 640 +478 640 +500 376 +640 441 +640 403 +640 480 +640 404 +427 640 +640 394 +640 427 +640 480 +640 640 +640 480 +611 640 +612 612 +478 640 +640 480 +480 640 +612 612 +640 351 +640 513 +640 521 +640 360 +427 640 +500 375 +640 540 +480 640 +500 375 +423 640 +640 448 +500 375 +640 640 +500 303 +640 426 +640 384 +640 480 +640 429 +640 480 +424 640 +640 480 +640 480 +640 431 +640 480 +640 480 +640 426 +640 427 +640 480 +640 427 +640 440 +480 640 +500 352 +640 428 +640 481 +500 500 +640 480 +640 480 +511 640 +640 480 +640 425 +640 353 +640 424 +640 427 +588 640 +640 426 +640 392 +334 500 +496 500 +640 480 +480 640 +640 480 +443 640 +640 439 +640 640 +480 640 +305 500 +640 428 +640 480 +640 426 +640 480 +427 640 +640 427 +426 640 +640 426 +612 612 +480 640 +640 426 +640 457 +640 480 +640 580 +640 360 +640 428 +640 427 +640 480 +500 479 +434 640 +640 425 +531 640 +640 480 +640 426 +640 480 +640 391 +640 426 +640 480 +640 472 +640 376 +640 427 +640 480 +512 640 +500 389 +640 427 +640 427 +500 375 +500 375 +640 425 +640 480 +640 458 +640 478 +640 427 +480 640 +640 480 +640 427 +427 640 +640 425 +510 640 +487 640 +480 640 +640 480 +332 500 +427 640 +480 640 +640 451 +480 640 +375 500 +424 640 +640 480 +640 427 +474 334 +640 480 +480 640 +640 336 +640 480 +640 428 +426 640 +640 480 +640 428 +475 640 +640 480 +640 480 +640 426 +426 640 +640 427 +640 427 +640 387 +428 640 +500 407 +640 427 +363 249 +640 509 +428 640 +640 427 +500 375 +640 468 +640 427 +426 640 +640 480 +500 339 +500 375 +427 640 +500 333 +469 640 +640 393 +640 334 +640 491 +640 468 +500 332 +500 325 +640 480 +640 423 +640 480 +500 333 +640 425 +511 640 +640 425 +640 440 +428 640 +640 480 +640 428 +640 480 +640 426 +640 480 +640 480 +640 427 +289 640 +640 427 +640 480 +555 640 +640 480 +640 460 +640 401 +426 640 +640 480 +640 426 +428 640 +640 361 +612 612 +640 467 +640 427 +640 480 +640 480 +640 373 +640 428 +640 427 +640 425 +428 640 +640 427 +333 500 +640 427 +640 426 +514 640 +640 427 +640 428 +640 428 +640 426 +640 426 +335 500 +640 480 +500 375 +480 640 +640 427 +640 480 +640 480 +640 480 +640 480 +640 426 +640 480 +640 480 +583 640 +480 640 +640 426 +640 359 +640 480 +426 640 +480 640 +500 375 +640 486 +640 427 +375 500 +640 426 +640 480 +640 480 +640 486 +640 467 +640 459 +640 428 +427 640 +500 333 +640 427 +640 480 +640 484 +500 375 +640 454 +640 480 +640 480 +513 640 +640 427 +640 480 +375 500 +500 375 +500 333 +500 281 +640 427 +640 480 +480 640 +640 640 +640 426 +480 640 +640 480 +640 427 +480 640 +640 480 +640 427 +640 426 +640 470 +640 427 +500 335 +500 333 +640 427 +433 640 +640 428 +360 288 +640 427 +640 424 +480 640 +640 426 +640 426 +500 375 +640 426 +640 428 +640 436 +640 426 +480 640 +373 500 +612 612 +500 313 +640 480 +640 426 +640 426 +640 486 +640 480 +640 480 +640 426 +500 375 +640 427 +480 640 +640 427 +480 640 +640 478 +640 428 +640 427 +640 425 +500 375 +640 480 +500 375 +640 426 +385 640 +500 385 +495 640 +640 426 +640 480 +640 480 +640 457 +640 480 +640 480 +640 480 +640 426 +375 500 +269 448 +359 500 +500 375 +640 640 +640 426 +640 360 +500 333 +500 375 +640 535 +375 500 +640 429 +640 427 +640 480 +428 640 +640 480 +640 424 +424 640 +640 400 +417 640 +640 428 +409 640 +378 640 +480 640 +612 612 +640 541 +407 640 +640 480 +640 480 +640 640 +480 640 +640 447 +640 424 +640 480 +640 480 +500 331 +640 478 +427 640 +333 500 +640 427 +500 335 +640 480 +640 480 +427 640 +640 427 +536 640 +500 375 +640 430 +500 375 +640 438 +640 480 +512 640 +382 471 +640 430 +640 478 +640 508 +500 375 +640 424 +640 480 +640 480 +428 640 +640 480 +640 427 +640 480 +335 500 +640 364 +612 612 +640 427 +375 500 +640 480 +640 360 +640 480 +640 360 +500 334 +429 640 +640 480 +600 600 +640 479 +640 513 +480 640 +640 428 +640 460 +640 480 +640 480 +640 456 +640 480 +640 467 +640 427 +640 427 +640 480 +640 480 +480 640 +640 512 +640 480 +640 426 +546 640 +640 425 +640 360 +333 500 +640 480 +481 640 +640 427 +640 427 +640 480 +640 480 +640 336 +445 640 +640 427 +640 426 +640 198 +640 449 +640 425 +640 480 +640 480 +480 640 +640 427 +427 640 +599 391 +640 425 +640 480 +640 283 +500 375 +480 640 +640 406 +424 640 +640 421 +640 480 +640 426 +640 480 +640 480 +640 427 +640 480 +640 480 +425 640 +640 427 +640 480 +635 640 +500 335 +427 640 +640 480 +342 500 +480 640 +640 480 +333 500 +640 480 +640 480 +640 480 +480 640 +500 367 +427 640 +640 425 +480 640 +640 406 +640 519 +640 480 +640 425 +500 375 +640 318 +640 360 +638 640 +640 452 +640 480 +500 375 +500 333 +333 500 +640 427 +640 427 +640 427 +640 426 +640 481 +640 480 +536 640 +640 482 +640 426 +640 427 +427 640 +640 486 +640 480 +640 427 +640 427 +640 480 +480 640 +640 360 +480 640 +640 392 +640 427 +423 640 +640 427 +640 457 +640 360 +500 357 +640 480 +640 480 +640 480 +640 452 +480 640 +640 426 +640 427 +640 480 +640 425 +487 640 +640 428 +640 427 +640 426 +640 515 +500 375 +480 640 +640 640 +640 480 +480 640 +640 403 +640 243 +383 640 +480 640 +640 561 +500 410 +640 640 +640 480 +640 480 +612 612 +640 427 +640 480 +640 480 +537 640 +640 480 +500 333 +583 437 +500 319 +366 640 +640 480 +640 424 +640 426 +640 424 +500 321 +640 432 +640 480 +640 480 +640 427 +383 640 +427 640 +640 427 +516 640 +640 487 +640 398 +500 375 +640 478 +640 360 +612 612 +426 640 +640 480 +640 480 +640 427 +640 427 +427 640 +640 425 +500 333 +640 427 +640 640 +640 495 +640 480 +478 640 +640 480 +640 480 +500 375 +640 480 +640 424 +640 424 +500 408 +640 556 +480 640 +640 429 +480 640 +640 480 +640 478 +640 594 +640 427 +640 531 +640 429 +640 413 +640 478 +480 640 +480 640 +640 425 +640 485 +478 640 +478 640 +640 480 +640 453 +640 426 +426 640 +640 480 +640 425 +640 474 +640 480 +640 480 +640 480 +600 401 +640 440 +640 480 +640 480 +426 640 +480 640 +480 640 +640 427 +479 640 +427 640 +640 480 +640 480 +313 500 +500 375 +500 375 +640 425 +480 640 +640 480 +333 500 +640 433 +480 640 +500 371 +640 428 +640 480 +640 480 +640 480 +640 401 +640 480 +640 480 +640 640 +640 480 +640 429 +612 612 +640 427 +640 480 +640 427 +492 500 +640 480 +320 240 +470 350 +640 428 +640 512 +640 427 +640 403 +640 480 +640 480 +640 425 +640 427 +500 325 +640 480 +640 427 +640 425 +500 375 +500 332 +640 427 +500 375 +640 521 +429 640 +550 640 +640 426 +640 480 +640 476 +427 640 +640 480 +521 640 +480 640 +640 359 +640 427 +500 500 +640 427 +427 640 +640 425 +500 375 +500 334 +640 478 +500 281 +640 428 +640 426 +640 440 +640 480 +640 480 +640 426 +640 427 +640 480 +640 427 +640 480 +640 427 +375 500 +500 375 +640 427 +457 640 +640 480 +640 480 +640 480 +500 375 +640 480 +640 480 +383 500 +427 640 +640 427 +640 424 +427 640 +425 500 +427 640 +478 640 +640 427 +640 480 +612 612 +640 480 +640 427 +640 480 +640 420 +500 375 +640 214 +612 612 +375 500 +640 482 +640 427 +640 427 +640 466 +480 640 +640 480 +425 640 +480 640 +375 500 +640 480 +500 333 +640 480 +640 480 +640 438 +640 427 +640 394 +480 360 +640 431 +640 480 +456 640 +500 375 +640 480 +427 640 +559 640 +500 375 +640 478 +640 427 +640 480 +640 359 +640 480 +640 429 +480 640 +333 500 +640 428 +640 424 +640 428 +640 480 +640 512 +640 426 +640 425 +500 375 +640 480 +640 427 +463 640 +640 524 +640 427 +640 427 +640 426 +640 480 +612 612 +640 425 +480 640 +640 480 +640 480 +640 480 +640 430 +640 480 +640 480 +500 357 +640 480 +640 366 +375 500 +500 333 +480 640 +480 640 +640 424 +640 426 +640 210 +500 375 +640 427 +640 480 +640 480 +426 640 +427 640 +640 480 +480 640 +640 480 +640 427 +480 640 +640 480 +375 500 +425 640 +480 640 +640 427 +427 640 +640 480 +480 640 +640 480 +480 640 +480 640 +334 500 +640 506 +428 640 +640 426 +569 640 +640 431 +612 612 +640 480 +427 640 +375 500 +480 640 +640 640 +500 375 +640 427 +640 527 +640 426 +640 480 +640 480 +640 619 +640 427 +335 500 +640 427 +640 427 +640 500 +640 427 +640 478 +500 333 +640 427 +428 640 +640 480 +640 478 +500 500 +424 640 +640 444 +428 640 +640 480 +431 640 +640 369 +612 612 +427 640 +640 480 +640 428 +422 640 +640 424 +480 640 +640 427 +427 640 +425 640 +480 640 +640 480 +640 427 +640 453 +427 640 +640 480 +640 424 +640 480 +640 427 +640 427 +375 500 +640 428 +640 480 +640 480 +640 427 +640 426 +640 480 +640 480 +640 427 +640 428 +640 480 +500 375 +480 640 +640 480 +480 640 +500 324 +480 640 +640 426 +640 480 +640 425 +500 334 +328 500 +640 480 +640 478 +364 640 +640 427 +640 480 +640 426 +640 427 +640 640 +640 480 +457 640 +640 480 +640 425 +500 480 +640 427 +640 480 +640 360 +640 480 +480 640 +375 500 +640 424 +640 471 +640 480 +640 480 +480 640 +500 375 +640 480 +640 480 +640 427 +426 640 +428 640 +640 640 +640 421 +640 427 +640 429 +640 480 +640 480 +427 640 +640 428 +640 427 +640 480 +640 360 +640 480 +500 333 +640 428 +640 566 +480 640 +640 427 +468 640 +612 612 +500 333 +500 375 +640 480 +640 455 +640 483 +640 427 +640 480 +640 424 +640 383 +640 480 +640 427 +640 480 +480 640 +640 480 +500 237 +640 480 +640 491 +427 640 +326 500 +640 361 +640 512 +612 612 +500 333 +640 480 +427 640 +426 640 +640 485 +640 427 +640 480 +640 480 +640 480 +640 511 +640 480 +480 640 +640 523 +640 454 +640 360 +500 375 +500 375 +500 414 +500 375 +613 640 +640 420 +480 640 +640 480 +640 427 +640 442 +512 640 +640 426 +640 360 +500 375 +500 375 +640 427 +640 424 +640 428 +640 425 +640 427 +640 480 +640 360 +640 428 +640 426 +640 426 +427 640 +640 478 +640 640 +640 480 +640 426 +640 428 +500 322 +640 480 +640 428 +333 500 +425 640 +640 480 +640 513 +500 376 +480 640 +480 640 +500 333 +545 640 +425 640 +640 427 +479 640 +455 640 +405 640 +640 565 +640 480 +640 427 +640 480 +640 480 +640 454 +640 293 +640 476 +640 480 +640 480 +399 600 +640 425 +640 427 +640 427 +427 640 +500 333 +640 480 +640 427 +612 612 +640 422 +500 333 +640 463 +500 357 +640 480 +640 427 +640 427 +612 612 +428 640 +640 480 +640 426 +640 480 +640 480 +426 640 +640 480 +640 480 +480 640 +424 640 +480 640 +480 640 +640 426 +640 480 +640 480 +640 427 +640 480 +640 480 +480 640 +640 480 +424 640 +640 427 +640 427 +612 612 +640 480 +480 640 +640 480 +640 424 +640 514 +640 379 +640 428 +500 375 +640 427 +640 427 +500 375 +500 333 +640 480 +299 640 +640 425 +640 480 +640 510 +500 375 +426 640 +640 480 +640 480 +522 640 +640 480 +480 640 +640 427 +640 427 +500 344 +640 428 +640 480 +500 375 +352 288 +640 424 +427 640 +640 480 +479 640 +640 428 +640 427 +640 478 +612 612 +480 300 +640 427 +480 640 +640 237 +640 427 +640 461 +640 622 +480 640 +500 375 +640 502 +640 378 +640 480 +500 409 +640 224 +640 478 +640 394 +424 640 +640 480 +333 500 +640 395 +640 416 +479 640 +500 375 +640 640 +640 480 +640 403 +640 416 +480 640 +386 640 +332 500 +457 640 +640 480 +640 426 +640 427 +640 451 +640 480 +640 427 +640 480 +640 427 +478 640 +480 640 +640 427 +640 428 +640 480 +640 425 +640 480 +425 640 +640 427 +640 424 +640 426 +640 424 +640 284 +427 640 +640 427 +500 375 +427 640 +480 640 +640 427 +640 463 +640 446 +480 640 +640 317 +425 640 +594 640 +427 640 +480 640 +480 640 +640 427 +427 640 +640 640 +640 432 +640 480 +640 426 +640 427 +640 480 +640 480 +640 427 +640 430 +640 480 +561 640 +640 427 +640 478 +424 640 +426 640 +640 418 +640 427 +457 640 +640 480 +480 640 +500 375 +480 640 +640 478 +425 640 +640 533 +640 424 +640 427 +640 427 +640 359 +640 480 +612 612 +500 376 +640 480 +640 426 +335 500 +640 480 +640 426 +640 480 +640 640 +640 480 +640 427 +640 480 +640 480 +640 480 +427 640 +640 359 +467 640 +640 428 +640 480 +640 418 +640 480 +640 480 +640 480 +640 425 +640 427 +640 478 +640 480 +640 427 +640 427 +640 480 +640 414 +640 360 +427 640 +500 330 +640 480 +500 335 +640 480 +427 640 +640 439 +640 480 +640 478 +640 427 +500 375 +640 426 +640 427 +375 500 +640 427 +640 480 +640 480 +640 596 +640 400 +640 425 +480 640 +640 448 +640 429 +640 426 +500 304 +640 507 +640 427 +500 332 +640 426 +640 480 +427 640 +500 378 +640 426 +375 500 +480 640 +500 417 +640 480 +640 427 +640 481 +640 426 +640 426 +500 387 +286 417 +640 480 +640 424 +500 403 +640 480 +640 411 +500 332 +500 334 +640 427 +612 612 +640 395 +640 480 +500 335 +640 480 +640 480 +640 433 +640 427 +428 640 +640 640 +640 428 +500 375 +640 417 +427 640 +480 640 +640 360 +640 480 +640 427 +407 640 +640 480 +640 425 +640 480 +640 418 +640 428 +500 371 +640 426 +500 480 +498 500 +640 424 +640 426 +640 426 +640 427 +480 640 +640 480 +500 333 +640 480 +640 457 +426 640 +408 640 +640 428 +640 480 +426 640 +552 640 +640 425 +640 480 +500 375 +640 477 +640 488 +504 640 +312 480 +457 640 +640 480 +640 480 +640 425 +640 474 +640 480 +640 428 +456 640 +500 400 +612 612 +640 480 +640 439 +640 480 +640 427 +640 480 +640 477 +640 480 +640 425 +640 360 +480 640 +640 480 +640 480 +640 425 +640 480 +640 480 +431 640 +480 640 +640 426 +480 640 +428 640 +426 640 +461 640 +640 480 +337 500 +360 640 +640 480 +500 332 +480 640 +500 333 +464 640 +640 480 +640 480 +640 480 +640 428 +640 427 +640 360 +640 425 +480 640 +500 375 +500 414 +612 612 +640 480 +427 640 +640 366 +640 427 +427 640 +640 427 +640 480 +640 480 +640 427 +640 426 +640 480 +500 375 +549 640 +640 480 +429 640 +500 640 +640 480 +640 480 +500 375 +500 334 +640 480 +640 480 +640 444 +640 324 +640 480 +480 640 +640 427 +480 640 +640 426 +640 361 +338 500 +640 427 +640 480 +640 480 +480 640 +427 640 +530 640 +441 640 +500 375 +640 428 +640 512 +500 375 +640 480 +480 640 +428 640 +332 500 +640 427 +640 480 +640 425 +640 429 +640 431 +640 480 +640 427 +640 396 +425 640 +640 480 +640 427 +500 376 +375 500 +500 333 +640 480 +640 360 +500 375 +500 389 +640 480 +640 344 +480 640 +428 640 +640 480 +640 427 +480 640 +640 427 +640 547 +375 500 +612 612 +481 640 +640 480 +612 612 +640 480 +640 427 +426 640 +400 500 +640 427 +640 480 +640 419 +640 513 +640 480 +427 640 +640 426 +640 427 +500 333 +427 640 +640 424 +640 399 +640 480 +640 425 +640 364 +640 640 +640 427 +640 457 +640 629 +640 426 +427 640 +640 426 +500 375 +640 424 +427 640 +640 427 +640 428 +640 480 +640 480 +640 324 +500 375 +640 480 +640 427 +500 281 +640 427 +640 441 +640 427 +640 480 +500 300 +480 640 +350 500 +424 640 +534 640 +640 427 +640 427 +640 428 +640 426 +640 480 +480 640 +500 317 +640 427 +500 375 +640 480 +640 427 +640 480 +640 480 +640 480 +640 427 +480 640 +640 501 +640 478 +640 480 +640 424 +640 459 +500 375 +640 427 +480 640 +640 426 +640 481 +500 476 +333 500 +640 480 +640 490 +640 428 +640 568 +640 480 +640 512 +640 453 +640 480 +428 640 +640 480 +640 480 +640 480 +480 640 +640 624 +640 427 +640 438 +640 480 +640 400 +500 333 +640 480 +427 640 +640 426 +428 640 +640 480 +640 480 +640 480 +640 427 +640 480 +500 375 +612 612 +640 427 +640 480 +640 426 +640 449 +427 640 +640 427 +333 500 +640 427 +480 640 +500 375 +434 640 +640 463 +640 426 +480 640 +640 288 +640 425 +640 426 +640 480 +640 427 +640 425 +640 469 +359 640 +480 640 +640 480 +362 500 +427 640 +640 480 +640 426 +427 640 +640 425 +427 640 +640 480 +375 500 +640 468 +640 480 +500 375 +640 427 +500 410 +640 427 +500 374 +640 426 +640 480 +612 612 +480 360 +500 414 +640 480 +500 333 +640 426 +640 427 +640 425 +640 480 +640 480 +640 427 +640 425 +500 375 +640 473 +427 640 +640 426 +640 427 +640 396 +640 427 +640 488 +500 341 +612 612 +640 360 +640 425 +640 480 +426 640 +640 403 +640 427 +640 427 +640 428 +640 427 +332 500 +500 375 +480 640 +640 480 +480 640 +640 426 +640 427 +640 360 +427 640 +612 612 +640 480 +640 424 +640 416 +640 480 +640 480 +640 480 +500 375 +500 333 +640 427 +640 427 +427 640 +500 375 +640 480 +480 640 +508 640 +612 612 +500 375 +640 419 +429 640 +640 427 +500 375 +640 480 +500 332 +640 480 +640 426 +469 640 +427 640 +427 640 +640 480 +408 640 +480 640 +500 500 +425 640 +512 640 +640 455 +640 425 +640 480 +640 425 +640 364 +640 480 +427 640 +640 416 +640 480 +640 296 +640 427 +640 426 +640 480 +640 480 +640 480 +640 427 +640 480 +500 309 +640 465 +640 513 +640 426 +640 480 +640 556 +640 480 +426 640 +427 640 +640 640 +640 427 +640 427 +480 640 +480 640 +640 427 +425 640 +640 640 +427 640 +640 426 +640 429 +640 480 +640 481 +510 640 +640 480 +640 480 +604 453 +424 640 +640 427 +480 640 +640 480 +640 427 +640 427 +640 426 +640 480 +640 480 +375 500 +640 480 +640 426 +500 281 +640 480 +500 332 +640 480 +638 640 +640 457 +544 640 +612 612 +640 427 +612 612 +371 500 +640 324 +640 480 +640 427 +427 640 +365 500 +640 427 +483 640 +640 427 +500 500 +640 284 +640 479 +640 426 +640 427 +640 480 +359 640 +640 480 +469 640 +640 640 +640 428 +480 640 +640 426 +640 345 +640 422 +640 427 +427 640 +640 480 +640 425 +640 480 +640 480 +455 640 +640 480 +640 480 +640 480 +640 480 +333 500 +640 427 +640 480 +640 480 +500 375 +427 640 +640 480 +640 429 +480 640 +640 480 +640 369 +500 378 +640 619 +640 480 +427 640 +426 640 +640 426 +640 489 +640 307 +640 640 +640 424 +640 480 +500 404 +640 428 +426 640 +478 640 +640 426 +426 640 +500 357 +640 427 +480 640 +427 640 +640 333 +500 332 +592 576 +640 480 +640 480 +640 427 +640 339 +640 358 +500 375 +640 480 +480 640 +427 640 +427 640 +500 294 +640 286 +500 375 +500 375 +640 427 +640 264 +640 426 +640 427 +640 391 +433 640 +640 474 +426 640 +640 640 +640 423 +640 480 +500 333 +332 500 +640 428 +640 427 +427 640 +640 487 +640 427 +640 427 +500 377 +640 480 +640 478 +640 470 +500 362 +640 480 +640 507 +640 456 +640 427 +640 427 +333 640 +640 427 +640 397 +640 470 +640 480 +480 640 +640 427 +640 427 +428 640 +640 427 +640 402 +612 612 +640 427 +640 360 +500 375 +640 427 +640 427 +640 640 +640 480 +640 427 +480 640 +640 640 +497 640 +640 480 +612 612 +640 425 +500 348 +640 427 +333 500 +640 480 +640 428 +427 640 +640 428 +378 500 +640 360 +640 480 +640 426 +500 345 +477 640 +640 480 +640 480 +640 480 +640 480 +640 425 +640 427 +640 429 +640 428 +620 319 +427 640 +500 332 +500 375 +640 509 +640 426 +640 480 +640 457 +640 480 +640 424 +473 640 +432 324 +640 428 +640 469 +640 343 +640 427 +333 500 +640 474 +640 427 +640 480 +544 640 +640 480 +333 500 +500 375 +640 427 +500 454 +640 426 +640 640 +340 500 +616 640 +640 427 +380 500 +640 427 +640 427 +500 400 +640 425 +640 480 +640 399 +640 317 +640 480 +500 375 +640 480 +500 500 +500 375 +640 424 +640 480 +640 480 +640 427 +640 427 +640 480 +640 480 +640 453 +405 336 +640 395 +640 426 +640 480 +640 480 +640 482 +640 431 +480 640 +640 480 +427 640 +640 320 +478 640 +640 418 +500 375 +427 640 +424 640 +640 424 +640 482 +640 426 +375 500 +640 338 +425 640 +640 294 +640 426 +500 333 +640 427 +640 428 +640 480 +612 612 +640 480 +429 640 +640 355 +640 435 +376 500 +640 478 +640 480 +640 425 +640 480 +427 640 +480 640 +640 480 +640 428 +640 427 +640 427 +640 429 +400 300 +640 303 +500 500 +333 500 +640 438 +640 480 +480 640 +457 640 +640 426 +640 490 +640 427 +640 428 +640 425 +640 429 +640 462 +640 480 +478 640 +500 367 +640 428 +425 640 +640 480 +640 480 +500 375 +480 640 +320 240 +640 478 +640 480 +640 480 +500 500 +640 425 +640 480 +640 425 +640 427 +640 480 +640 480 +480 640 +640 428 +640 426 +427 640 +640 480 +640 480 +480 640 +500 375 +640 425 +427 640 +427 640 +640 427 +640 459 +500 335 +640 427 +427 640 +640 480 +500 333 +640 360 +429 640 +424 640 +640 480 +640 426 +640 464 +640 414 +480 640 +640 462 +640 640 +640 413 +640 480 +640 480 +640 432 +640 480 +640 480 +427 640 +640 480 +500 481 +640 427 +612 612 +640 479 +300 400 +612 612 +640 424 +600 428 +640 480 +467 276 +640 427 +640 428 +640 360 +427 640 +530 640 +640 392 +640 480 +640 480 +640 427 +460 500 +640 426 +640 427 +640 480 +500 500 +612 612 +640 480 +640 427 +640 427 +500 375 +579 640 +640 427 +480 640 +480 640 +480 640 +640 480 +500 375 +427 640 +640 427 +640 427 +360 640 +640 480 +640 427 +500 499 +640 501 +480 640 +640 410 +478 640 +500 375 +457 640 +640 480 +335 500 +612 612 +640 427 +640 480 +640 480 +364 640 +640 237 +640 400 +640 480 +500 375 +354 640 +640 427 +480 640 +375 500 +640 427 +640 427 +480 640 +612 612 +640 480 +640 427 +480 640 +640 425 +526 640 +480 640 +640 473 +500 375 +640 426 +640 471 +500 335 +640 426 +640 433 +480 640 +640 489 +640 340 +404 640 +640 428 +640 428 +640 427 +503 640 +426 640 +640 428 +640 360 +500 375 +640 427 +640 427 +640 427 +480 640 +640 433 +640 423 +640 480 +640 424 +640 480 +500 331 +640 480 +640 426 +640 454 +640 425 +640 427 +640 300 +466 640 +480 640 +500 375 +374 500 +640 640 +640 480 +640 480 +320 240 +640 508 +640 428 +500 375 +500 375 +640 480 +640 426 +640 480 +640 425 +478 640 +640 506 +640 426 +640 427 +480 640 +480 640 +640 427 +640 427 +640 428 +640 426 +640 426 +500 375 +640 480 +640 426 +640 425 +640 427 +612 612 +640 480 +640 441 +640 424 +640 425 +480 360 +640 417 +640 426 +640 427 +640 512 +640 426 +640 480 +640 480 +460 500 +640 520 +640 361 +640 512 +426 640 +640 427 +427 640 +500 375 +640 428 +480 640 +640 480 +640 480 +480 640 +612 612 +640 480 +332 500 +180 240 +329 500 +640 427 +427 640 +640 473 +640 480 +640 558 +375 500 +640 505 +480 640 +640 424 +375 500 +500 377 +640 480 +640 405 +640 480 +480 640 +640 427 +640 423 +480 640 +640 233 +335 500 +330 640 +500 334 +640 427 +640 588 +500 375 +426 640 +640 425 +640 480 +480 640 +640 480 +480 640 +640 480 +640 427 +640 480 +612 612 +612 612 +640 428 +427 640 +640 427 +640 480 +640 427 +640 237 +436 640 +640 424 +640 428 +427 640 +612 612 +490 640 +640 480 +480 640 +480 640 +640 558 +500 335 +640 417 +640 480 +640 427 +640 360 +640 425 +640 370 +640 481 +640 480 +640 480 +640 480 +374 500 +640 454 +640 480 +640 425 +640 426 +640 448 +640 426 +640 640 +500 429 +640 427 +431 640 +480 640 +512 640 +300 450 +640 483 +480 640 +425 640 +640 427 +640 412 +640 359 +640 556 +640 339 +640 480 +640 430 +640 421 +640 429 +640 480 +428 640 +640 428 +640 394 +480 640 +640 514 +411 640 +640 427 +640 428 +640 427 +640 429 +640 480 +640 430 +640 480 +500 332 +640 427 +640 480 +640 424 +500 263 +640 527 +640 480 +439 640 +480 640 +640 480 +640 480 +640 478 +640 480 +640 429 +640 427 +640 480 +640 411 +640 426 +640 480 +640 480 +480 640 +429 640 +640 480 +640 427 +427 640 +463 640 +640 427 +640 480 +640 480 +427 640 +431 640 +338 450 +640 427 +640 480 +640 480 +640 480 +640 480 +640 427 +640 480 +640 603 +640 480 +640 480 +640 512 +640 427 +427 640 +612 612 +640 480 +640 480 +333 500 +640 480 +640 424 +480 640 +500 375 +640 480 +640 480 +333 500 +640 429 +640 480 +640 480 +640 547 +396 640 +640 427 +640 480 +640 427 +640 424 +640 427 +500 375 +640 640 +640 427 +480 640 +640 429 +640 480 +640 424 +640 413 +640 478 +640 426 +640 426 +427 640 +332 500 +640 425 +640 427 +640 305 +425 640 +640 584 +640 480 +640 480 +640 425 +480 640 +480 640 +640 480 +500 375 +612 612 +640 427 +640 431 +500 375 +315 640 +427 640 +500 375 +640 480 +515 640 +640 480 +640 480 +500 333 +450 390 +640 427 +640 480 +640 480 +480 640 +640 427 +640 480 +640 480 +480 640 +480 640 +500 305 +627 640 +640 480 +640 569 +640 480 +375 500 +640 427 +640 427 +427 640 +640 589 +640 428 +640 439 +640 427 +480 640 +480 640 +640 427 +640 427 +640 480 +500 326 +640 426 +640 426 +640 480 +424 640 +640 618 +612 612 +640 427 +640 426 +500 500 +640 624 +426 640 +612 612 +579 326 +640 480 +640 480 +640 383 +627 640 +640 421 +479 500 +506 640 +640 480 +640 281 +640 427 +427 640 +500 375 +640 445 +640 427 +640 480 +640 480 +640 480 +640 471 +500 500 +640 360 +500 400 +640 480 +640 449 +452 640 +640 480 +640 424 +640 480 +427 640 +640 480 +640 427 +640 426 +640 461 +480 640 +640 480 +480 640 +636 640 +640 480 +500 375 +375 500 +640 428 +480 640 +640 421 +640 427 +480 640 +640 429 +640 425 +640 427 +640 471 +427 640 +431 640 +640 427 +640 431 +640 480 +640 480 +640 480 +640 480 +640 510 +640 480 +640 480 +640 512 +640 480 +501 640 +640 427 +640 427 +640 640 +640 480 +640 360 +640 426 +640 480 +427 640 +375 500 +640 640 +640 480 +640 427 +640 428 +640 427 +640 480 +640 426 +640 480 +427 640 +640 426 +500 325 +402 640 +640 432 +640 480 +480 640 +640 438 +640 512 +500 333 +500 333 +640 540 +640 426 +640 427 +640 480 +500 341 +500 375 +640 428 +301 640 +640 512 +640 480 +426 640 +350 467 +375 500 +640 360 +427 640 +640 360 +640 480 +640 480 +640 426 +480 640 +640 480 +640 441 +640 426 +375 500 +640 435 +640 427 +640 480 +500 375 +428 640 +453 500 +640 427 +640 480 +640 406 +494 640 +640 360 +640 480 +640 480 +640 427 +640 426 +489 640 +640 480 +500 375 +640 478 +640 427 +640 427 +640 429 +427 640 +640 427 +640 425 +640 463 +640 360 +640 480 +640 427 +640 480 +375 500 +640 427 +640 431 +640 480 +640 376 +640 640 +427 640 +640 426 +640 487 +640 428 +426 640 +640 480 +458 640 +640 427 +640 427 +640 629 +480 640 +640 513 +428 640 +425 640 +512 640 +640 480 +640 480 +640 427 +640 480 +640 480 +480 640 +640 428 +506 640 +640 480 +500 335 +640 480 +500 375 +640 426 +640 427 +480 640 +640 427 +640 477 +640 480 +640 427 +640 406 +480 640 +638 425 +640 426 +640 480 +480 640 +640 427 +640 640 +640 423 +640 457 +640 512 +640 427 +426 640 +640 480 +500 338 +640 520 +640 424 +640 398 +640 563 +640 428 +640 464 +640 401 +640 427 +354 640 +552 640 +500 375 +640 427 +640 512 +640 428 +500 375 +640 429 +500 435 +640 425 +600 400 +480 640 +640 427 +427 640 +120 160 +640 426 +500 375 +480 640 +428 640 +640 427 +640 480 +640 480 +640 480 +640 512 +640 480 +640 480 +512 640 +640 428 +640 427 +640 454 +640 480 +640 427 +486 640 +640 488 +500 375 +480 640 +346 640 +640 428 +640 376 +640 427 +640 539 +640 427 +640 371 +640 427 +612 612 +640 480 +640 480 +640 480 +612 612 +640 429 +640 512 +428 640 +500 192 +640 360 +640 449 +640 480 +640 480 +427 640 +640 620 +383 640 +336 447 +640 427 +480 640 +640 423 +640 427 +640 480 +640 427 +427 640 +640 351 +640 363 +640 444 +456 640 +427 640 +640 640 +640 610 +425 640 +612 612 +640 504 +333 500 +640 320 +640 426 +640 480 +640 423 +640 424 +640 480 +640 480 +640 480 +464 640 +640 427 +640 480 +640 360 +427 640 +640 480 +640 427 +500 375 +640 426 +640 427 +640 480 +640 427 +534 640 +480 640 +409 500 +640 480 +640 480 +640 427 +500 359 +640 480 +640 480 +640 480 +612 612 +640 428 +640 480 +640 496 +500 320 +640 525 +427 640 +640 480 +375 500 +640 480 +500 375 +500 375 +640 427 +500 375 +640 428 +480 640 +478 640 +640 427 +640 427 +640 632 +500 339 +416 640 +640 428 +640 428 +640 427 +640 428 +640 480 +640 479 +639 640 +480 640 +640 424 +640 480 +640 426 +500 333 +640 427 +640 480 +375 500 +640 352 +640 480 +640 425 +640 424 +640 480 +640 428 +640 426 +250 150 +640 481 +500 332 +385 640 +640 480 +500 332 +612 612 +640 480 +375 500 +640 419 +424 640 +640 426 +424 640 +640 480 +426 640 +640 480 +640 426 +500 357 +640 480 +640 480 +640 480 +612 612 +640 480 +640 480 +612 612 +640 480 +640 429 +427 640 +340 640 +500 333 +640 480 +640 480 +453 640 +640 428 +640 478 +480 640 +640 480 +375 500 +640 480 +640 480 +640 480 +640 457 +640 424 +640 425 +640 480 +640 480 +640 436 +640 414 +427 640 +500 400 +480 640 +640 500 +640 341 +640 428 +500 399 +427 640 +640 480 +640 480 +640 480 +640 481 +519 640 +640 426 +500 221 +640 631 +500 425 +640 427 +640 480 +640 480 +480 640 +640 460 +640 479 +640 427 +427 640 +640 429 +375 500 +640 480 +640 480 +640 427 +640 426 +480 360 +495 500 +640 432 +640 480 +566 640 +426 640 +640 478 +640 427 +640 428 +640 480 +640 480 +480 640 +375 500 +614 640 +640 480 +640 480 +640 404 +480 640 +640 427 +333 500 +640 480 +640 425 +428 640 +427 640 +500 500 +500 374 +640 526 +640 384 +640 427 +640 480 +640 480 +640 480 +375 500 +640 480 +640 426 +640 421 +428 640 +443 567 +640 480 +640 425 +640 480 +640 509 +640 360 +480 640 +640 480 +640 426 +640 427 +446 640 +640 427 +640 480 +640 428 +640 480 +599 400 +640 425 +427 640 +427 640 +640 427 +640 480 +640 427 +536 640 +500 333 +640 427 +427 640 +375 500 +640 480 +427 640 +640 478 +640 353 +500 375 +640 480 +640 480 +640 480 +640 427 +500 369 +640 480 +480 360 +488 640 +640 480 +640 480 +640 429 +500 334 +640 427 +640 427 +640 480 +426 640 +640 480 +640 346 +640 544 +375 500 +478 640 +640 480 +640 429 +640 541 +640 426 +427 640 +640 427 +500 333 +640 426 +375 500 +454 640 +640 480 +640 427 +640 427 +640 435 +427 640 +640 428 +640 480 +628 484 +640 510 +375 500 +640 433 +640 480 +640 395 +500 375 +640 426 +640 427 +640 478 +612 612 +480 640 +640 480 +640 480 +480 640 +500 375 +640 427 +427 640 +640 360 +480 640 +640 480 +640 432 +640 480 +640 480 +640 426 +640 480 +640 480 +500 332 +640 480 +640 424 +417 500 +640 480 +640 503 +640 480 +640 628 +640 426 +640 480 +480 640 +640 501 +640 480 +640 480 +640 598 +640 480 +640 480 +640 427 +640 428 +640 428 +640 481 +480 640 +640 427 +500 375 +640 640 +640 428 +640 480 +640 480 +640 522 +427 640 +480 640 +640 635 +640 480 +640 480 +640 480 +640 488 +426 640 +640 480 +481 640 +640 425 +640 426 +640 426 +429 640 +281 500 +640 427 +426 640 +480 640 +640 428 +640 480 +640 427 +328 500 +419 304 +480 640 +425 640 +640 640 +640 404 +640 480 +640 480 +640 426 +469 500 +393 640 +480 320 +640 426 +640 640 +427 640 +640 426 +427 640 +640 425 +640 427 +500 335 +640 458 +640 446 +640 359 +424 640 +640 480 +480 640 +640 480 +640 512 +640 319 +640 360 +640 427 +640 480 +427 640 +640 478 +604 640 +480 640 +640 427 +640 523 +640 478 +640 506 +500 375 +640 557 +427 640 +640 478 +640 480 +478 640 +480 640 +640 427 +640 427 +480 640 +477 640 +640 439 +640 623 +640 428 +427 640 +640 481 +640 356 +426 640 +640 426 +500 333 +640 429 +640 490 +640 427 +640 427 +640 527 +480 640 +427 640 +640 426 +640 426 +640 480 +640 463 +500 375 +640 474 +640 427 +500 333 +640 480 +640 480 +612 612 +427 640 +640 427 +640 433 +427 640 +640 416 +427 640 +640 480 +427 640 +640 480 +640 427 +640 427 +640 478 +640 480 +640 360 +640 480 +500 333 +640 427 +640 426 +600 640 +640 427 +640 426 +640 425 +640 480 +457 640 +428 640 +640 573 +640 392 +640 371 +480 640 +600 400 +640 480 +640 428 +640 480 +500 375 +640 480 +640 480 +640 425 +640 480 +640 480 +640 425 +640 425 +640 480 +640 480 +640 480 +640 480 +640 480 +375 500 +500 375 +375 500 +640 480 +568 320 +640 426 +640 428 +640 427 +640 428 +640 383 +640 487 +640 427 +375 500 +640 482 +640 427 +375 500 +640 480 +399 640 +640 427 +200 315 +480 640 +427 640 +427 640 +478 640 +500 410 +640 401 +375 500 +409 640 +640 424 +640 431 +640 426 +612 612 +362 500 +640 427 +640 427 +640 480 +640 360 +480 640 +640 427 +374 500 +640 478 +375 500 +640 480 +640 480 +428 640 +427 640 +500 375 +640 427 +360 640 +640 424 +640 425 +640 480 +427 640 +427 640 +500 400 +425 640 +500 357 +640 480 +640 499 +640 480 +480 640 +460 300 +640 480 +332 500 +640 427 +568 320 +640 424 +500 333 +640 461 +640 480 +427 640 +640 480 +640 429 +640 480 +500 375 +424 640 +640 480 +640 427 +500 333 +612 612 +500 352 +640 438 +500 375 +424 640 +480 640 +400 300 +640 480 +640 478 +640 583 +500 375 +400 300 +640 427 +425 640 +640 428 +640 480 +640 427 +612 612 +640 427 +640 480 +640 480 +640 428 +640 426 +640 424 +640 425 +383 640 +640 481 +640 640 +640 376 +640 480 +500 334 +640 436 +640 427 +427 640 +640 480 +640 480 +427 640 +640 556 +450 640 +426 640 +640 425 +640 480 +640 480 +640 480 +640 480 +640 480 +256 192 +640 427 +640 474 +640 480 +640 480 +640 480 +640 480 +640 296 +443 500 +640 427 +640 480 +640 547 +483 640 +494 640 +480 640 +640 480 +640 480 +640 428 +640 458 +561 640 +640 427 +640 483 +480 640 +640 479 +640 480 +640 480 +640 481 +640 427 +640 425 +640 427 +640 512 +640 348 +640 640 +640 425 +640 427 +480 640 +640 427 +640 427 +640 480 +503 640 +640 424 +640 427 +640 427 +480 640 +640 426 +640 480 +500 375 +640 427 +640 427 +640 474 +300 450 +640 480 +640 424 +640 480 +335 500 +640 427 +640 399 +640 512 +259 500 +500 347 +640 480 +640 480 +500 480 +640 427 +640 383 +640 424 +640 480 +640 427 +640 284 +640 427 +640 427 +640 376 +334 500 +640 480 +640 480 +640 425 +500 375 +640 427 +640 480 +640 396 +640 480 +375 500 +640 480 +500 332 +640 427 +640 480 +640 480 +500 375 +640 425 +520 368 +640 427 +640 427 +640 428 +612 612 +494 640 +640 442 +640 480 +640 425 +434 640 +457 640 +426 640 +500 375 +640 480 +640 427 +640 489 +480 640 +640 428 +640 586 +640 480 +640 480 +640 480 +640 360 +612 612 +640 480 +640 427 +640 480 +640 427 +640 613 +480 640 +640 394 +640 427 +640 427 +640 427 +640 433 +640 425 +500 375 +480 640 +537 640 +427 640 +640 383 +480 640 +640 414 +427 640 +480 640 +480 640 +640 480 +640 480 +426 640 +640 427 +375 500 +427 640 +480 640 +640 426 +640 480 +640 480 +640 426 +640 480 +375 500 +604 453 +375 500 +640 480 +640 480 +640 437 +500 333 +640 480 +640 480 +480 640 +333 500 +640 368 +640 640 +427 640 +640 425 +488 640 +500 334 +427 640 +640 485 +640 480 +488 640 +640 424 +480 640 +640 478 +640 427 +640 431 +481 640 +640 480 +640 426 +392 640 +500 440 +640 478 +426 640 +640 429 +612 612 +640 426 +640 427 +640 480 +500 375 +640 480 +640 428 +640 427 +486 640 +640 478 +640 426 +431 640 +640 425 +375 500 +640 427 +478 640 +640 427 +640 429 +640 480 +480 640 +640 511 +640 427 +500 400 +640 480 +640 361 +500 375 +333 500 +428 640 +640 411 +428 640 +640 347 +640 480 +640 427 +640 426 +640 480 +640 480 +640 534 +640 429 +480 640 +640 426 +640 480 +640 480 +640 480 +640 428 +640 298 +640 428 +640 428 +640 427 +640 480 +640 480 +500 376 +640 480 +640 480 +448 298 +640 329 +640 427 +640 401 +478 640 +481 640 +387 500 +640 480 +640 427 +368 500 +480 640 +640 480 +500 408 +427 640 +480 640 +640 426 +640 427 +640 480 +640 427 +480 640 +640 423 +640 320 +500 332 +375 500 +480 640 +640 427 +640 515 +640 480 +480 640 +433 640 +500 375 +640 426 +640 451 +427 640 +612 612 +640 480 +640 482 +425 640 +640 480 +640 360 +640 478 +640 480 +631 640 +500 333 +640 401 +640 480 +561 640 +640 428 +640 478 +640 480 +640 427 +640 480 +255 600 +500 375 +640 512 +500 500 +640 480 +640 640 +640 463 +640 425 +427 640 +640 426 +427 640 +640 473 +640 480 +612 612 +640 518 +480 640 +640 478 +500 375 +640 480 +480 640 +640 425 +640 359 +500 319 +480 480 +427 640 +480 640 +640 407 +427 640 +640 480 +640 640 +386 500 +640 300 +600 600 +426 640 +640 480 +480 640 +640 427 +640 480 +640 480 +640 427 +640 480 +427 640 +640 427 +640 426 +640 425 +500 375 +640 470 +640 427 +640 413 +409 640 +612 612 +640 480 +500 375 +640 424 +640 480 +640 480 +640 480 +640 480 +640 480 +640 404 +640 427 +640 480 +640 481 +480 640 +500 375 +640 434 +500 333 +294 400 +640 427 +640 474 +500 337 +333 500 +640 428 +640 427 +640 425 +500 500 +427 640 +640 457 +640 425 +640 480 +480 640 +640 480 +640 457 +640 474 +640 480 +640 424 +640 428 +640 480 +640 425 +361 640 +457 640 +640 427 +612 612 +640 480 +640 427 +640 427 +640 427 +640 480 +640 427 +500 333 +640 427 +424 640 +500 375 +640 512 +427 640 +500 333 +500 359 +640 427 +640 428 +640 480 +428 640 +640 372 +480 640 +427 640 +640 480 +640 427 +457 640 +500 333 +343 500 +640 425 +640 480 +640 480 +480 640 +500 334 +640 480 +480 640 +640 480 +640 427 +640 427 +640 480 +640 426 +640 427 +500 375 +480 640 +640 427 +640 480 +640 640 +640 360 +640 634 +640 427 +640 430 +640 427 +472 640 +640 640 +428 640 +612 612 +640 360 +338 500 +640 480 +320 212 +500 375 +500 333 +640 480 +640 426 +640 530 +427 640 +523 640 +640 384 +426 640 +425 640 +480 640 +640 480 +500 332 +640 524 +480 640 +640 480 +500 375 +640 419 +640 480 +640 478 +640 426 +640 480 +640 427 +640 480 +640 426 +640 428 +333 500 +640 480 +640 427 +500 333 +426 640 +640 426 +363 640 +640 349 +640 426 +500 375 +640 608 +375 500 +640 480 +640 426 +500 375 +640 428 +640 457 +480 640 +612 612 +640 480 +490 640 +640 461 +640 480 +640 480 +640 470 +426 640 +508 640 +480 640 +640 427 +640 480 +395 500 +640 480 +640 480 +640 480 +640 427 +640 480 +640 546 +640 480 +359 500 +640 428 +640 457 +640 427 +627 640 +480 640 +427 640 +640 427 +640 480 +640 482 +640 480 +640 427 +427 640 +640 640 +640 480 +500 331 +640 480 +640 427 +359 640 +480 640 +640 427 +640 425 +640 480 +640 425 +500 332 +640 364 +640 427 +500 375 +500 375 +640 427 +640 428 +461 640 +640 480 +640 480 +500 375 +427 640 +640 427 +640 466 +512 512 +347 500 +640 480 +480 640 +500 302 +640 480 +640 425 +640 428 +640 418 +640 480 +640 426 +640 480 +640 480 +500 478 +640 440 +500 375 +500 375 +612 612 +427 640 +640 427 +600 450 +640 480 +483 640 +640 480 +640 480 +640 427 +424 640 +426 640 +465 640 +640 480 +640 431 +640 427 +640 561 +640 413 +427 640 +640 427 +480 640 +612 612 +640 480 +457 640 +640 360 +640 480 +612 612 +480 640 +640 427 +612 612 +640 427 +640 426 +640 480 +640 429 +640 427 +640 480 +640 480 +640 426 +640 444 +640 424 +640 370 +640 480 +427 640 +640 480 +431 356 +640 424 +640 480 +426 640 +640 427 +640 427 +640 478 +640 428 +375 500 +500 315 +425 640 +640 480 +640 480 +640 480 +480 640 +640 478 +478 500 +640 480 +640 480 +426 640 +640 480 +640 419 +640 430 +361 640 +640 428 +500 332 +640 480 +427 640 +640 427 +500 375 +640 424 +640 425 +640 430 +500 375 +640 425 +640 480 +480 640 +500 333 +427 640 +427 640 +449 640 +431 640 +386 640 +640 480 +640 428 +640 480 +500 333 +456 640 +478 640 +428 640 +640 483 +640 427 +640 428 +480 640 +640 480 +480 640 +640 478 +640 480 +640 426 +427 640 +640 427 +640 213 +640 640 +612 612 +640 425 +500 414 +427 640 +640 480 +640 361 +500 333 +523 640 +480 640 +640 480 +612 612 +640 425 +612 612 +640 400 +480 640 +640 479 +500 400 +640 426 +640 401 +478 640 +428 640 +640 423 +640 425 +640 480 +640 480 +612 612 +640 480 +426 640 +480 640 +640 373 +640 480 +640 296 +500 375 +500 375 +640 480 +640 387 +427 640 +500 375 +453 640 +640 426 +640 480 +640 426 +426 640 +480 640 +500 374 +480 640 +640 427 +640 427 +640 427 +565 640 +640 431 +640 427 +640 480 +500 375 +640 325 +640 427 +500 500 +486 640 +640 480 +500 333 +500 375 +640 406 +640 427 +640 426 +640 480 +640 480 +480 640 +640 480 +640 427 +640 480 +375 500 +640 480 +500 375 +426 640 +333 500 +640 427 +612 612 +395 640 +640 373 +640 360 +640 480 +640 480 +640 480 +640 424 +500 375 +612 612 +640 424 +640 425 +640 480 +640 480 +640 427 +640 426 +640 480 +640 478 +491 500 +640 480 +480 640 +640 378 +366 500 +640 427 +640 428 +640 454 +640 512 +500 357 +480 640 +480 640 +457 640 +333 500 +640 480 +500 310 +640 480 +500 559 +428 640 +640 427 +500 375 +640 463 +640 425 +640 480 +375 500 +337 640 +640 480 +640 480 +640 480 +640 199 +371 500 +640 480 +640 476 +640 480 +428 640 +640 427 +640 428 +423 640 +640 480 +640 427 +640 427 +640 480 +500 375 +640 427 +240 320 +640 427 +640 398 +427 640 +423 640 +612 612 +500 375 +640 427 +640 480 +427 640 +640 440 +500 375 +480 640 +500 376 +640 427 +427 640 +480 640 +500 375 +500 307 +640 480 +428 640 +612 612 +640 480 +640 425 +384 288 +640 348 +640 427 +640 480 +640 480 +640 480 +480 640 +427 640 +640 427 +640 428 +640 480 +640 480 +640 511 +500 364 +640 359 +500 332 +500 375 +640 429 +640 480 +640 480 +640 427 +640 427 +500 345 +640 480 +640 427 +640 427 +640 478 +640 480 +500 500 +640 427 +640 427 +640 480 +640 512 +640 427 +640 480 +640 480 +640 427 +383 640 +640 426 +640 427 +640 480 +427 640 +500 375 +640 480 +375 500 +480 640 +427 640 +640 425 +640 640 +640 463 +338 500 +640 487 +640 480 +500 375 +640 474 +640 480 +640 412 +640 367 +640 427 +640 427 +375 500 +640 426 +640 427 +364 500 +640 439 +353 500 +640 480 +640 476 +640 640 +640 480 +640 425 +333 500 +640 425 +640 424 +640 360 +500 368 +640 426 +640 427 +640 480 +500 375 +640 461 +640 457 +640 321 +480 640 +640 427 +640 427 +640 427 +640 480 +271 640 +375 500 +640 427 +640 427 +360 640 +480 640 +640 418 +480 640 +480 640 +640 427 +375 500 +480 640 +640 480 +640 572 +640 428 +640 640 +640 427 +640 480 +640 478 +633 640 +640 425 +640 427 +640 422 +640 480 +640 451 +640 480 +640 427 +640 480 +478 640 +640 427 +640 640 +640 427 +640 480 +500 375 +640 428 +480 640 +640 443 +640 427 +640 427 +431 640 +640 425 +400 500 +640 426 +640 640 +640 480 +640 480 +375 500 +640 401 +640 483 +640 480 +640 427 +640 459 +640 481 +640 480 +640 259 +640 428 +500 375 +640 418 +480 640 +427 640 +640 546 +612 612 +320 240 +640 427 +640 360 +500 477 +500 375 +427 640 +640 428 +640 426 +640 427 +640 438 +640 480 +640 480 +640 428 +500 356 +478 640 +640 426 +640 428 +640 427 +480 640 +424 640 +612 612 +640 426 +640 429 +427 640 +640 360 +640 480 +640 591 +640 428 +640 495 +480 640 +640 480 +480 640 +640 480 +640 640 +640 346 +640 427 +640 427 +640 480 +640 480 +480 640 +640 427 +640 376 +640 424 +640 480 +500 375 +640 427 +640 480 +427 640 +640 428 +640 425 +500 309 +494 500 +640 480 +640 475 +500 375 +375 500 +640 427 +640 480 +640 480 +640 359 +640 512 +488 640 +640 426 +640 426 +420 640 +480 640 +640 427 +640 428 +415 500 +500 375 +500 273 +427 640 +640 480 +640 427 +640 427 +640 428 +640 426 +480 640 +640 427 +640 470 +640 427 +640 522 +640 427 +640 480 +640 428 +640 427 +500 375 +640 480 +500 333 +640 480 +347 500 +480 640 +640 428 +640 480 +500 375 +640 428 +500 334 +640 478 +640 428 +640 480 +640 479 +348 500 +500 375 +640 480 +500 339 +640 481 +640 640 +600 450 +426 640 +480 640 +640 427 +500 375 +640 424 +640 427 +640 478 +640 480 +480 640 +640 426 +640 427 +480 640 +640 434 +640 480 +480 640 +500 375 +640 480 +640 480 +427 640 +640 428 +424 640 +640 480 +640 480 +640 426 +640 427 +500 333 +640 480 +640 442 +640 388 +500 375 +640 480 +640 432 +333 500 +640 480 +640 427 +640 408 +377 500 +640 425 +640 381 +640 509 +640 480 +426 640 +640 371 +640 480 +640 424 +640 503 +640 212 +640 426 +640 480 +512 640 +500 400 +480 640 +500 375 +640 425 +640 427 +640 360 +640 426 +360 640 +431 640 +640 443 +640 480 +640 493 +480 640 +640 566 +640 427 +640 421 +640 480 +640 427 +640 425 +480 640 +640 480 +622 640 +640 427 +324 432 +640 427 +640 427 +640 480 +640 425 +640 480 +640 319 +640 427 +427 640 +640 480 +640 480 +612 612 +640 428 +612 612 +456 640 +500 375 +500 325 +480 640 +480 640 +480 640 +500 375 +612 612 +500 375 +640 480 +480 640 +640 408 +640 427 +640 408 +640 426 +640 427 +640 427 +480 320 +640 284 +640 427 +556 640 +640 427 +640 480 +640 400 +640 421 +500 375 +640 427 +640 480 +640 427 +640 480 +640 481 +561 640 +640 480 +640 468 +640 480 +640 425 +640 425 +500 375 +640 480 +426 640 +640 480 +640 427 +640 511 +640 565 +640 480 +375 500 +640 640 +429 640 +500 375 +480 640 +500 375 +480 640 +640 360 +640 480 +640 427 +500 333 +567 378 +480 640 +480 640 +427 640 +640 360 +500 400 +500 375 +640 428 +600 400 +640 427 +640 480 +640 480 +640 427 +500 375 +480 640 +375 500 +640 424 +640 640 +640 427 +375 500 +640 426 +500 375 +513 640 +640 429 +640 401 +540 407 +480 640 +640 426 +640 426 +640 480 +362 500 +640 480 +640 412 +640 425 +500 375 +640 480 +640 426 +426 640 +494 500 +500 375 +640 480 +640 480 +640 512 +480 640 +640 432 +375 500 +640 480 +478 640 +640 480 +640 459 +640 480 +426 640 +426 640 +640 512 +640 299 +640 427 +424 640 +480 640 +640 427 +640 427 +478 640 +640 480 +640 480 +640 480 +640 480 +500 375 +640 429 +640 480 +640 427 +640 426 +640 427 +640 426 +640 467 +640 426 +480 640 +640 458 +640 428 +640 480 +640 427 +424 640 +640 480 +480 640 +640 427 +640 480 +640 494 +427 640 +640 480 +640 432 +450 337 +640 427 +640 427 +480 640 +640 441 +480 640 +640 428 +640 425 +640 433 +384 512 +500 375 +640 427 +640 584 +500 333 +424 640 +427 640 +640 426 +480 640 +640 480 +444 640 +640 408 +427 640 +640 353 +640 480 +640 480 +640 428 +640 359 +480 640 +428 640 +500 400 +343 500 +640 480 +640 478 +640 427 +480 640 +500 375 +640 427 +480 316 +640 424 +425 640 +640 480 +640 480 +500 333 +640 480 +640 427 +626 640 +640 426 +640 480 +640 480 +427 640 +428 640 +423 640 +500 375 +500 307 +434 640 +480 640 +425 640 +320 240 +500 333 +640 427 +500 375 +480 640 +558 234 +640 515 +640 611 +480 640 +640 425 +427 640 +427 640 +640 427 +640 479 +640 480 +426 640 +428 640 +333 500 +640 430 +427 640 +640 480 +429 640 +425 640 +500 375 +640 488 +640 425 +640 406 +640 457 +640 480 +640 427 +640 480 +640 427 +640 480 +500 394 +640 464 +640 599 +427 640 +640 480 +640 513 +427 640 +640 480 +640 427 +640 479 +640 359 +640 429 +500 333 +500 333 +500 333 +640 427 +640 424 +640 426 +640 428 +640 427 +500 375 +500 375 +500 375 +640 480 +640 427 +640 478 +640 360 +640 427 +454 604 +500 375 +640 427 +640 427 +500 375 +640 360 +640 457 +640 420 +640 480 +640 427 +640 427 +640 480 +640 432 +640 480 +480 640 +640 427 +427 640 +640 480 +426 640 +640 480 +640 480 +640 480 +640 480 +428 640 +640 425 +480 640 +640 429 +640 480 +640 179 +640 480 +640 360 +640 463 +640 427 +480 640 +640 480 +640 459 +480 640 +640 426 +500 375 +425 640 +640 606 +500 375 +500 375 +640 354 +451 640 +414 640 +640 480 +500 281 +500 375 +640 427 +640 405 +640 512 +640 480 +612 612 +640 480 +447 640 +640 427 +640 480 +640 529 +640 317 +480 640 +234 500 +640 480 +480 640 +500 333 +481 640 +460 640 +640 480 +640 360 +500 375 +375 500 +640 480 +640 425 +640 480 +640 426 +476 640 +640 512 +427 640 +500 375 +478 640 +228 296 +640 480 +500 375 +406 640 +427 640 +603 640 +640 428 +640 480 +640 268 +426 640 +640 480 +425 640 +640 409 +427 640 +360 640 +361 640 +640 427 +437 640 +384 568 +500 332 +640 421 +640 360 +640 480 +640 427 +640 480 +428 640 +640 383 +507 619 +427 640 +480 640 +640 426 +480 640 +640 426 +640 480 +640 480 +640 423 +640 424 +640 428 +640 448 +640 427 +640 391 +480 640 +640 425 +640 480 +640 427 +500 335 +480 640 +500 334 +612 612 +427 640 +640 427 +500 355 +640 480 +512 640 +640 532 +640 427 +424 640 +640 453 +640 427 +640 480 +640 428 +640 424 +640 480 +640 480 +640 480 +500 375 +640 480 +480 640 +640 480 +640 428 +500 375 +640 428 +640 391 +480 640 +640 480 +640 480 +500 333 +640 554 +640 480 +640 480 +480 640 +640 427 +480 640 +640 461 +640 480 +640 427 +640 479 +640 427 +640 427 +640 480 +640 427 +640 427 +480 640 +480 640 +500 332 +500 375 +640 480 +640 429 +640 480 +640 427 +640 427 +482 640 +640 426 +500 375 +640 428 +640 426 +640 427 +640 427 +640 301 +640 480 +640 426 +640 428 +640 364 +500 375 +640 426 +640 426 +640 480 +640 424 +640 480 +480 640 +640 353 +640 429 +480 640 +640 480 +427 640 +426 640 +640 427 +640 427 +635 640 +640 480 +426 640 +640 480 +640 480 +640 426 +640 427 +640 426 +640 184 +500 333 +500 475 +640 408 +425 640 +500 375 +640 406 +640 471 +640 426 +640 411 +480 640 +333 500 +640 427 +640 480 +427 640 +640 428 +640 370 +640 414 +640 429 +640 438 +640 426 +480 640 +640 480 +640 427 +640 480 +640 426 +480 640 +640 427 +388 500 +640 425 +333 500 +640 428 +640 480 +640 424 +640 427 +640 424 +500 375 +640 480 +640 426 +640 427 +640 480 +640 640 +500 334 +640 425 +335 500 +640 516 +640 384 +640 425 +640 427 +640 427 +640 428 +640 480 +640 404 +500 375 +640 480 +480 640 +500 334 +640 319 +640 428 +640 480 +640 480 +640 359 +640 480 +640 425 +640 425 +612 612 +640 428 +640 480 +640 424 +500 375 +500 332 +640 426 +640 360 +640 425 +480 640 +640 427 +493 640 +425 640 +640 640 +500 375 +471 640 +640 480 +400 382 +640 427 +640 379 +640 424 +480 640 +640 480 +640 427 +640 428 +426 640 +640 425 +640 427 +640 432 +612 612 +500 375 +640 425 +640 480 +427 640 +640 427 +640 428 +640 480 +640 640 +500 375 +427 640 +640 524 +640 270 +640 424 +640 480 +500 333 +640 427 +640 318 +640 480 +612 612 +640 427 +480 640 +450 338 +343 500 +640 480 +428 640 +500 346 +640 465 +640 459 +480 640 +640 426 +640 427 +640 360 +640 458 +480 640 +640 404 +640 427 +475 389 +640 480 +500 375 +640 360 +427 640 +640 478 +640 427 +640 480 +640 480 +640 409 +500 375 +640 480 +640 480 +640 480 +489 640 +640 427 +640 480 +640 427 +640 480 +640 480 +640 529 +480 640 +640 360 +640 480 +480 640 +640 480 +640 480 +640 428 +640 425 +423 640 +500 281 +640 480 +640 480 +640 428 +640 428 +500 375 +640 378 +640 480 +640 371 +640 480 +640 480 +640 426 +640 480 +640 448 +640 427 +640 501 +480 640 +333 500 +640 480 +640 425 +640 480 +640 429 +640 480 +373 640 +426 640 +640 480 +640 427 +640 480 +640 424 +640 371 +612 612 +500 375 +640 457 +640 480 +640 427 +640 427 +640 480 +640 427 +640 429 +640 427 +375 500 +640 389 +333 500 +500 375 +500 375 +480 640 +612 612 +640 480 +500 375 +640 426 +640 426 +500 333 +640 480 +425 640 +427 640 +626 640 +640 428 +500 375 +640 495 +500 375 +640 424 +640 480 +640 480 +375 500 +640 533 +640 425 +640 424 +640 480 +640 399 +640 427 +640 426 +640 428 +640 425 +480 640 +500 375 +640 426 +640 480 +640 360 +640 427 +480 640 +480 640 +640 432 +500 471 +640 400 +640 427 +500 375 +640 425 +375 500 +640 480 +640 480 +640 496 +323 500 +584 640 +480 640 +640 424 +640 428 +480 640 +640 425 +478 640 +500 334 +480 640 +640 456 +640 458 +640 480 +480 640 +640 425 +480 640 +640 480 +640 424 +480 640 +640 640 +640 480 +640 480 +640 428 +500 375 +640 457 +375 500 +427 640 +640 427 +427 640 +282 500 +371 500 +150 200 +480 640 +640 480 +500 372 +640 480 +640 430 +640 480 +640 480 +640 480 +480 640 +640 427 +640 427 +500 375 +640 427 +425 640 +512 640 +640 427 +640 426 +640 218 +640 427 +640 427 +640 427 +640 427 +640 480 +640 382 +640 480 +484 289 +640 480 +640 461 +427 640 +640 480 +640 428 +375 500 +640 427 +427 640 +500 332 +640 427 +500 430 +640 439 +351 640 +427 640 +426 640 +333 500 +428 640 +640 480 +640 480 +427 640 +640 480 +500 375 +427 640 +640 480 +640 270 +640 473 +426 640 +640 427 +640 480 +640 480 +480 640 +640 480 +640 480 +352 500 +640 480 +480 640 +612 612 +640 427 +640 431 +640 329 +640 427 +640 426 +640 480 +640 480 +640 478 +640 427 +428 640 +394 406 +640 480 +640 480 +640 480 +640 359 +637 640 +640 482 +480 640 +480 640 +640 439 +427 640 +487 500 +640 480 +640 480 +640 426 +480 640 +640 341 +427 640 +427 640 +640 418 +640 374 +640 427 +640 480 +640 480 +640 433 +498 640 +640 427 +640 494 +500 333 +640 427 +480 640 +640 426 +640 426 +640 411 +511 640 +640 427 +640 426 +640 479 +640 427 +426 640 +500 375 +640 428 +375 500 +480 640 +640 482 +500 375 +640 427 +640 497 +600 400 +640 480 +640 385 +640 480 +640 640 +640 480 +640 426 +375 500 +640 429 +500 334 +375 500 +640 427 +640 427 +640 426 +640 424 +480 640 +571 640 +640 535 +640 428 +427 640 +640 480 +640 425 +640 480 +640 425 +640 480 +640 427 +640 424 +640 427 +640 480 +640 480 +640 400 +640 428 +640 425 +480 640 +640 480 +640 376 +640 440 +640 428 +375 500 +640 626 +640 427 +487 496 +500 483 +375 500 +640 359 +640 427 +640 480 +427 640 +640 480 +640 480 +640 427 +640 480 +640 429 +640 427 +640 480 +546 366 +500 375 +439 640 +640 425 +640 400 +480 640 +640 480 +425 640 +640 480 +427 640 +640 480 +500 375 +640 427 +640 427 +640 426 +426 640 +428 640 +640 473 +360 640 +640 480 +640 480 +420 640 +640 480 +640 427 +450 600 +427 640 +640 496 +640 480 +640 432 +577 640 +640 480 +640 514 +640 427 +375 500 +333 500 +640 480 +375 500 +640 427 +500 333 +640 444 +427 640 +640 426 +640 478 +427 640 +640 403 +500 500 +640 480 +640 426 +427 640 +500 334 +640 428 +425 640 +500 375 +640 480 +493 640 +640 640 +512 640 +640 427 +640 480 +612 612 +640 390 +640 424 +640 480 +640 427 +640 480 +640 513 +499 640 +640 359 +640 480 +640 427 +427 640 +640 425 +640 427 +640 427 +640 480 +640 427 +640 480 +640 373 +640 480 +640 480 +640 427 +640 427 +427 640 +640 360 +427 640 +640 424 +612 612 +640 425 +359 640 +427 640 +480 640 +640 426 +640 427 +640 427 +640 427 +640 460 +640 480 +612 612 +640 480 +512 640 +333 500 +640 480 +500 349 +427 640 +640 480 +640 424 +640 448 +480 640 +640 426 +480 640 +640 480 +640 426 +640 427 +640 427 +640 480 +640 427 +480 640 +480 640 +500 333 +479 640 +640 479 +640 550 +640 426 +640 480 +640 426 +640 478 +500 375 +640 424 +640 427 +640 425 +428 640 +640 427 +640 480 +640 426 +640 424 +640 480 +480 640 +640 427 +640 427 +640 426 +480 640 +640 480 +550 366 +640 427 +500 333 +640 480 +288 432 +640 480 +360 640 +640 429 +480 640 +640 427 +640 566 +427 640 +640 480 +500 375 +640 425 +640 640 +640 512 +428 640 +333 500 +500 500 +500 375 +640 425 +640 480 +640 480 +640 427 +640 461 +500 375 +600 450 +640 480 +640 480 +640 427 +500 375 +640 426 +295 175 +427 640 +640 425 +640 427 +640 480 +640 425 +640 427 +640 480 +640 457 +640 419 +640 443 +500 332 +500 375 +500 375 +612 612 +640 457 +612 612 +375 500 +640 427 +640 473 +640 513 +640 426 +612 612 +640 480 +600 600 +640 480 +640 425 +612 612 +640 427 +500 333 +640 428 +640 484 +640 480 +480 640 +640 360 +326 500 +500 401 +480 640 +640 468 +480 640 +640 480 +640 366 +640 480 +426 640 +640 425 +640 425 +427 640 +328 640 +500 298 +500 288 +480 640 +640 427 +425 640 +640 480 +640 480 +640 480 +500 375 +640 424 +640 427 +640 427 +640 426 +478 640 +640 480 +500 375 +480 640 +480 640 +640 428 +640 480 +480 640 +640 478 +640 416 +640 480 +640 360 +640 427 +640 427 +640 480 +639 640 +500 375 +640 457 +640 427 +375 500 +640 480 +480 640 +640 480 +640 481 +480 640 +511 640 +426 640 +640 640 +500 333 +640 480 +640 425 +632 640 +480 640 +640 480 +640 426 +383 640 +640 428 +640 428 +500 375 +400 500 +640 427 +612 612 +640 427 +640 483 +640 480 +640 489 +640 640 +640 480 +640 480 +640 480 +640 480 +640 426 +640 360 +480 640 +449 640 +375 500 +640 425 +640 457 +640 480 +640 427 +640 480 +640 377 +640 480 +640 427 +640 480 +420 640 +451 299 +640 478 +500 375 +640 426 +640 480 +640 361 +480 640 +640 481 +640 427 +640 480 +488 640 +640 427 +640 427 +640 400 +640 509 +423 640 +640 458 +640 480 +427 640 +640 480 +640 360 +640 480 +640 480 +640 426 +640 426 +640 480 +427 640 +483 500 +640 480 +640 427 +480 640 +480 640 +640 426 +400 300 +640 514 +500 328 +640 478 +640 480 +640 427 +640 480 +640 425 +375 500 +640 524 +640 376 +640 397 +640 427 +640 587 +640 480 +500 375 +640 373 +640 480 +640 481 +640 425 +640 443 +640 366 +640 426 +426 640 +424 640 +640 427 +426 640 +640 480 +640 426 +640 480 +640 480 +467 500 +424 640 +640 483 +640 478 +640 480 +640 424 +500 481 +640 426 +325 500 +500 333 +640 481 +480 640 +640 434 +480 384 +640 480 +640 480 +612 612 +640 427 +640 480 +640 425 +640 480 +640 480 +478 640 +640 252 +479 640 +640 480 +335 500 +375 500 +640 426 +427 640 +402 640 +640 640 +500 376 +480 640 +640 480 +640 409 +640 427 +640 481 +640 480 +640 360 +640 480 +500 334 +640 427 +480 640 +640 478 +480 640 +368 500 +640 425 +640 480 +375 500 +640 360 +640 480 +640 427 +640 480 +480 640 +426 640 +640 426 +640 427 +640 480 +640 622 +640 514 +480 360 +640 427 +640 428 +640 421 +640 380 +333 500 +640 480 +640 480 +640 480 +427 640 +640 360 +640 330 +640 425 +640 384 +640 480 +640 480 +640 429 +640 480 +640 480 +425 640 +427 640 +640 424 +640 480 +640 425 +640 480 +640 480 +640 454 +640 427 +500 374 +640 426 +640 480 +500 333 +640 458 +500 375 +640 427 +640 640 +640 427 +640 444 +640 426 +640 480 +640 480 +640 480 +427 640 +640 450 +461 640 +640 406 +612 612 +480 640 +640 480 +640 480 +640 634 +640 427 +640 480 +480 640 +640 424 +640 478 +552 640 +640 426 +640 480 +500 333 +640 426 +480 640 +499 640 +640 428 +374 500 +640 480 +640 480 +375 500 +480 640 +640 425 +640 478 +640 533 +640 427 +640 427 +480 640 +640 480 +457 500 +640 480 +500 375 +640 384 +500 375 +640 480 +640 480 +640 514 +640 427 +480 640 +640 480 +640 428 +640 424 +500 375 +375 500 +427 640 +640 427 +575 457 +640 426 +640 598 +640 427 +640 426 +640 478 +640 316 +640 481 +512 640 +494 640 +640 432 +413 550 +452 640 +500 333 +640 427 +640 480 +640 425 +640 480 +640 377 +480 640 +427 640 +640 426 +640 428 +419 500 +640 427 +480 640 +288 432 +426 640 +640 424 +640 427 +640 427 +640 426 +640 480 +640 480 +640 427 +427 640 +640 427 +500 375 +612 612 +427 640 +640 480 +640 313 +426 640 +640 426 +500 375 +480 640 +427 640 +640 480 +499 640 +500 333 +640 360 +500 375 +640 389 +612 612 +480 640 +640 478 +640 480 +640 427 +640 512 +640 424 +640 480 +427 640 +640 427 +417 640 +640 480 +640 640 +640 533 +640 480 +640 360 +426 640 +480 640 +640 480 +427 640 +426 640 +480 640 +640 480 +640 397 +640 511 +480 640 +426 640 +640 480 +640 427 +640 427 +640 480 +426 640 +427 640 +640 427 +640 427 +427 640 +442 500 +427 640 +640 427 +563 640 +500 375 +640 427 +612 612 +640 361 +640 479 +500 499 +640 424 +640 426 +640 433 +640 428 +640 441 +640 491 +640 639 +612 612 +500 333 +640 480 +640 424 +333 500 +375 500 +640 480 +640 427 +640 595 +640 554 +640 480 +640 427 +640 480 +640 543 +640 428 +640 426 +640 369 +494 640 +640 427 +640 425 +480 640 +425 640 +640 427 +640 427 +480 640 +500 334 +480 360 +612 612 +400 241 +640 480 +640 480 +640 427 +640 480 +333 640 +640 480 +640 426 +640 426 +640 480 +640 480 +640 439 +640 421 +640 426 +480 640 +500 357 +360 640 +427 640 +478 640 +480 640 +640 360 +512 640 +640 480 +640 480 +427 640 +500 375 +640 480 +426 640 +640 495 +584 640 +640 480 +640 427 +640 480 +640 361 +640 480 +423 564 +500 375 +640 425 +500 375 +612 612 +640 605 +640 427 +640 426 +640 480 +640 480 +640 427 +640 427 +640 428 +640 374 +640 426 +640 479 +640 478 +640 359 +480 640 +640 428 +640 425 +640 380 +480 640 +640 427 +640 480 +640 480 +640 480 +640 400 +640 425 +307 500 +640 376 +640 428 +640 427 +640 480 +640 480 +427 640 +640 480 +640 480 +500 375 +640 426 +375 500 +640 486 +500 341 +640 426 +640 498 +640 426 +426 640 +640 426 +640 427 +550 541 +640 480 +640 360 +640 427 +480 640 +640 480 +500 375 +640 426 +375 500 +480 640 +500 375 +452 640 +640 428 +640 478 +640 541 +375 500 +426 640 +640 480 +331 500 +640 427 +640 427 +640 425 +640 480 +640 427 +640 480 +640 265 +624 640 +640 480 +333 500 +640 480 +640 480 +640 425 +424 500 +640 427 +640 480 +640 426 +640 480 +640 426 +640 480 +640 432 +640 480 +640 519 +640 428 +640 543 +500 430 +640 480 +640 480 +640 427 +640 427 +640 480 +640 480 +640 425 +640 480 +406 640 +640 427 +640 480 +640 427 +640 480 +640 426 +640 360 +640 427 +640 480 +500 333 +640 480 +640 426 +640 480 +640 427 +640 427 +500 358 +640 480 +640 464 +500 333 +640 480 +549 640 +640 480 +367 500 +640 427 +640 423 +640 444 +640 428 +640 480 +500 500 +640 480 +640 480 +640 426 +640 428 +427 640 +480 640 +575 408 +500 375 +500 333 +640 427 +640 414 +640 296 +640 427 +480 640 +640 480 +640 431 +640 425 +640 480 +427 640 +448 640 +640 481 +428 640 +640 480 +640 480 +640 480 +640 427 +612 612 +429 640 +500 377 +640 480 +480 640 +640 423 +640 480 +640 427 +640 427 +427 640 +640 428 +640 428 +640 480 +640 427 +480 640 +640 427 +383 640 +640 360 +640 480 +640 397 +640 425 +427 640 +375 500 +500 375 +640 441 +640 427 +640 480 +427 640 +640 427 +480 640 +640 515 +640 404 +640 426 +640 480 +481 640 +640 427 +500 375 +640 428 +640 480 +640 480 +640 458 +640 424 +640 474 +400 467 +431 640 +640 305 +427 640 +425 640 +480 640 +640 427 +640 447 +640 480 +640 427 +640 427 +500 332 +640 480 +480 640 +480 640 +640 432 +640 427 +640 424 +640 480 +500 375 +640 426 +610 635 +640 426 +500 332 +480 640 +500 333 +640 512 +500 375 +640 427 +427 640 +640 427 +640 640 +640 427 +640 426 +480 640 +640 480 +612 612 +640 480 +424 640 +640 427 +500 375 +480 640 +640 480 +640 428 +640 427 +640 510 +480 640 +640 480 +640 427 +640 427 +429 640 +640 480 +640 444 +427 640 +640 640 +640 480 +640 427 +640 512 +375 500 +640 480 +640 480 +612 612 +423 640 +425 640 +640 359 +428 640 +343 640 +424 640 +640 427 +461 640 +640 640 +640 480 +640 515 +640 425 +640 427 +640 615 +640 480 +427 640 +640 426 +640 480 +640 429 +612 612 +640 430 +640 425 +640 480 +500 375 +640 480 +426 640 +640 480 +640 427 +640 427 +640 428 +427 640 +525 525 +640 480 +640 480 +640 480 +640 513 +640 383 +612 612 +620 640 +640 360 +500 375 +640 428 +640 640 +640 427 +640 427 +640 427 +333 500 +640 207 +640 615 +640 395 +480 640 +640 563 +612 612 +640 392 +640 480 +640 478 +640 427 +622 640 +640 427 +640 480 +640 480 +640 480 +500 375 +640 482 +640 478 +640 427 +480 640 +640 426 +332 500 +640 480 +640 480 +640 457 +640 480 +640 480 +368 640 +500 375 +612 612 +640 442 +640 480 +640 480 +427 640 +640 427 +612 612 +480 640 +375 500 +375 500 +640 360 +640 398 +640 409 +640 427 +427 640 +640 428 +514 640 +640 512 +640 480 +640 480 +500 329 +640 480 +640 476 +640 426 +500 375 +640 480 +500 375 +480 640 +500 375 +584 640 +640 480 +640 429 +640 425 +500 332 +640 424 +500 334 +640 427 +640 427 +640 344 +495 500 +640 427 +640 458 +640 533 +500 385 +640 480 +640 426 +640 639 +428 640 +640 427 +357 500 +640 425 +640 480 +640 480 +640 480 +640 361 +500 333 +480 640 +200 240 +427 640 +640 427 +640 481 +640 481 +640 480 +640 480 +640 381 +425 640 +640 428 +640 480 +640 426 +640 427 +640 480 +640 428 +640 414 +640 542 +640 480 +640 480 +640 480 +478 640 +640 410 +500 348 +640 480 +500 375 +640 425 +427 640 +640 427 +640 480 +640 427 +500 375 +640 428 +640 480 +640 480 +480 640 +428 640 +640 640 +640 426 +500 375 +640 429 +612 612 +640 456 +640 480 +396 640 +640 429 +640 480 +640 480 +612 612 +640 480 +640 427 +640 548 +640 532 +640 424 +640 640 +640 453 +640 427 +640 243 +612 612 +640 467 +640 425 +640 408 +333 500 +640 480 +640 480 +332 500 +333 500 +640 480 +640 480 +640 480 +640 480 +640 481 +500 375 +640 431 +640 427 +640 360 +500 358 +640 430 +640 613 +640 480 +640 427 +640 427 +640 480 +640 480 +640 480 +640 420 +640 360 +640 437 +640 527 +640 427 +640 438 +500 375 +461 640 +640 427 +640 427 +427 640 +427 640 +640 480 +426 640 +640 350 +426 640 +640 427 +500 333 +640 480 +640 461 +640 480 +640 427 +640 480 +640 426 +640 480 +640 379 +427 640 +640 461 +640 480 +640 426 +640 480 +640 480 +640 427 +640 359 +640 427 +480 640 +640 516 +640 432 +640 480 +640 480 +640 258 +500 375 +640 403 +500 375 +480 640 +640 433 +640 360 +640 349 +478 640 +640 427 +480 640 +640 480 +563 640 +445 640 +640 437 +640 428 +640 360 +640 480 +640 480 +424 640 +640 513 +640 480 +450 350 +640 427 +640 427 +640 398 +480 640 +400 300 +640 483 +640 428 +175 230 +427 640 +640 480 +640 428 +480 480 +640 513 +640 426 +427 640 +640 457 +427 640 +640 360 +640 360 +427 640 +480 640 +640 433 +640 426 +640 480 +640 383 +640 424 +500 375 +500 375 +604 452 +640 427 +500 375 +333 500 +640 318 +640 480 +640 427 +480 640 +640 640 +640 428 +640 427 +500 375 +640 425 +427 640 +640 431 +480 640 +463 640 +640 429 +428 640 +640 480 +640 640 +640 480 +612 612 +640 414 +640 427 +427 640 +485 640 +360 640 +461 500 +482 640 +640 480 +428 640 +479 640 +640 396 +640 426 +640 433 +640 390 +445 418 +640 427 +500 375 +511 640 +640 480 +640 480 +640 426 +640 427 +375 500 +500 375 +427 640 +640 480 +640 427 +640 480 +640 427 +640 427 +640 480 +640 420 +425 640 +333 500 +640 457 +640 427 +640 426 +640 513 +480 640 +480 640 +478 640 +640 427 +500 335 +640 426 +640 489 +640 480 +618 394 +640 480 +332 500 +640 508 +640 427 +640 480 +640 480 +640 427 +640 480 +425 640 +612 612 +640 421 +640 426 +480 640 +640 480 +640 480 +640 425 +640 237 +427 640 +640 360 +640 428 +640 480 +640 427 +426 640 +640 480 +480 640 +480 640 +640 427 +429 640 +640 424 +427 640 +640 480 +427 640 +640 479 +640 492 +479 640 +640 480 +640 427 +640 427 +500 375 +640 427 +640 480 +500 375 +640 640 +500 375 +426 640 +582 640 +640 480 +333 500 +427 640 +640 617 +500 375 +640 480 +480 640 +640 480 +334 500 +640 480 +640 426 +480 640 +500 333 +480 640 +356 640 +500 333 +426 640 +640 480 +640 425 +640 480 +640 640 +376 500 +640 480 +640 480 +360 640 +480 640 +640 480 +640 480 +640 368 +640 478 +640 426 +640 480 +500 375 +428 640 +640 480 +640 480 +480 640 +483 640 +500 375 +500 333 +424 640 +427 640 +640 480 +640 480 +640 428 +640 480 +480 640 +477 500 +480 640 +427 640 +640 436 +640 480 +640 480 +640 480 +500 332 +500 333 +480 640 +640 480 +640 428 +640 640 +640 620 +480 640 +640 427 +500 247 +640 480 +640 360 +633 640 +640 480 +640 426 +640 427 +640 320 +640 480 +640 480 +480 640 +640 480 +333 500 +433 500 +518 640 +640 424 +612 612 +500 375 +640 400 +640 480 +640 480 +640 415 +480 640 +640 427 +427 640 +640 480 +497 640 +640 480 +427 640 +612 612 +640 427 +640 513 +640 425 +640 625 +640 480 +640 425 +500 296 +640 426 +640 427 +478 640 +640 427 +500 375 +640 640 +640 480 +425 640 +640 428 +640 480 +427 640 +640 427 +640 428 +640 480 +640 427 +640 420 +426 640 +640 426 +640 480 +426 640 +640 427 +640 427 +612 612 +640 360 +640 281 +500 375 +640 379 +640 429 +500 378 +427 640 +640 427 +640 392 +500 375 +479 640 +500 375 +640 480 +608 640 +474 640 +640 480 +640 427 +500 375 +640 429 +640 480 +640 515 +640 480 +640 640 +640 480 +640 426 +640 442 +427 640 +480 640 +640 427 +640 426 +427 640 +500 374 +640 425 +640 425 +640 427 +640 480 +423 640 +640 480 +640 581 +640 427 +426 640 +640 491 +640 425 +612 612 +640 427 +640 426 +640 480 +500 375 +640 640 +640 424 +640 427 +500 375 +640 427 +640 427 +640 480 +640 480 +640 480 +640 426 +500 281 +500 375 +640 427 +640 480 +480 360 +640 410 +640 403 +478 640 +480 640 +640 478 +457 640 +640 427 +375 500 +334 500 +500 332 +640 394 +640 371 +640 426 +640 426 +425 640 +640 480 +640 480 +427 640 +640 427 +640 462 +640 191 +480 640 +640 480 +640 394 +640 438 +640 360 +640 640 +431 640 +640 427 +500 375 +640 398 +640 426 +427 640 +640 428 +383 640 +640 427 +640 424 +640 480 +426 640 +500 375 +480 640 +640 428 +640 427 +500 375 +640 425 +640 480 +375 500 +640 480 +640 428 +640 427 +640 419 +479 640 +427 640 +640 427 +480 640 +640 480 +455 500 +640 432 +640 478 +640 426 +426 640 +640 502 +640 427 +640 480 +640 331 +640 528 +640 480 +480 640 +640 427 +480 640 +640 399 +640 427 +640 424 +640 386 +640 480 +640 427 +413 640 +500 375 +640 480 +640 480 +480 640 +375 500 +640 427 +640 512 +640 480 +427 640 +640 425 +640 424 +640 426 +640 429 +640 428 +640 427 +640 480 +480 640 +640 424 +640 427 +480 640 +640 304 +612 612 +640 427 +640 346 +427 640 +640 427 +640 480 +272 408 +640 480 +480 360 +357 500 +612 612 +640 480 +640 427 +427 640 +375 500 +640 363 +500 375 +640 480 +640 480 +640 480 +400 500 +375 500 +640 479 +640 429 +640 366 +480 640 +480 640 +640 425 +640 401 +478 640 +375 500 +640 427 +640 458 +640 512 +640 480 +612 612 +640 498 +640 480 +480 640 +640 427 +640 480 +640 480 +480 640 +640 478 +427 640 +640 480 +480 640 +500 375 +640 480 +640 480 +640 480 +640 425 +640 427 +478 640 +640 361 +640 635 +500 375 +640 516 +427 640 +640 480 +640 368 +612 612 +640 427 +640 421 +427 640 +640 426 +375 500 +480 640 +640 460 +640 448 +640 303 +640 616 +500 281 +640 480 +640 426 +640 369 +640 429 +640 427 +640 640 +375 500 +640 480 +640 508 +640 427 +640 412 +500 375 +640 480 +640 480 +640 512 +375 500 +640 480 +640 427 +640 480 +640 458 +500 375 +640 457 +640 427 +351 500 +640 428 +640 480 +640 376 +500 333 +500 375 +612 612 +640 480 +640 427 +640 427 +640 426 +479 640 +600 400 +640 640 +640 428 +500 335 +574 640 +640 480 +372 558 +640 427 +640 408 +427 640 +640 471 +640 524 +640 360 +640 480 +640 424 +500 389 +640 480 +640 425 +480 640 +640 424 +640 361 +640 512 +640 480 +640 427 +640 463 +640 480 +640 426 +612 612 +500 375 +375 500 +640 360 +640 612 +640 480 +640 416 +640 408 +640 427 +640 606 +640 539 +640 480 +425 640 +640 425 +640 480 +332 500 +375 500 +375 500 +640 427 +375 500 +640 427 +640 425 +640 427 +640 427 +500 460 +640 480 +427 640 +640 428 +640 480 +500 375 +640 480 +640 265 +640 457 +640 480 +640 480 +640 512 +640 393 +640 428 +426 640 +500 375 +640 427 +640 480 +500 375 +640 429 +640 427 +480 640 +640 459 +612 612 +574 640 +640 480 +415 500 +400 597 +500 333 +640 427 +640 360 +640 480 +500 376 +640 480 +480 640 +427 640 +640 426 +640 426 +640 360 +640 427 +640 480 +640 427 +640 480 +640 480 +612 612 +640 480 +426 640 +640 480 +428 640 +360 640 +640 480 +428 640 +500 375 +640 480 +640 480 +640 424 +499 500 +612 612 +640 480 +640 487 +640 382 +640 430 +640 427 +640 427 +640 427 +640 426 +480 640 +640 425 +480 640 +640 437 +427 640 +640 426 +640 508 +534 640 +640 480 +375 500 +480 640 +640 480 +640 427 +612 612 +640 457 +640 427 +192 564 +500 335 +640 480 +640 480 +640 456 +453 640 +478 640 +640 640 +640 427 +640 485 +640 480 +333 500 +640 427 +640 358 +640 480 +640 426 +640 425 +470 640 +640 480 +640 426 +640 480 +640 427 +500 375 +500 416 +640 427 +640 429 +315 210 +640 480 +640 512 +480 640 +480 640 +500 500 +454 500 +478 640 +640 480 +640 426 +640 480 +640 429 +500 371 +640 410 +640 427 +640 448 +640 426 +640 453 +640 468 +640 425 +511 640 +640 480 +480 640 +427 640 +640 480 +478 640 +450 640 +500 401 +640 480 +640 383 +500 380 +640 425 +375 500 +640 427 +640 582 +640 480 +480 640 +500 375 +640 480 +640 480 +500 375 +534 640 +640 480 +640 417 +640 427 +640 480 +640 480 +640 427 +350 215 +640 426 +427 640 +640 427 +640 480 +500 328 +612 612 +640 426 +640 480 +640 480 +473 640 +435 640 +640 253 +427 640 +475 640 +640 368 +612 612 +640 478 +640 428 +640 426 +427 640 +612 612 +320 240 +427 640 +640 427 +640 480 +640 427 +500 333 +640 480 +640 426 +640 480 +426 640 +427 640 +640 360 +640 427 +640 516 +640 478 +426 640 +500 375 +640 481 +480 640 +640 427 +375 500 +640 427 +500 336 +640 400 +640 434 +640 480 +427 640 +333 500 +425 640 +480 640 +640 480 +640 427 +500 375 +480 360 +640 427 +640 425 +500 333 +640 383 +640 480 +640 427 +320 286 +640 480 +427 640 +640 426 +640 480 +480 640 +640 424 +640 241 +640 480 +600 450 +640 444 +375 500 +512 640 +640 427 +480 640 +640 480 +640 424 +640 405 +479 640 +640 497 +640 388 +640 401 +640 444 +640 427 +640 480 +640 426 +500 375 +640 427 +398 224 +640 480 +640 426 +640 409 +429 640 +640 482 +640 480 +640 427 +640 480 +426 640 +423 640 +425 640 +640 480 +612 612 +640 480 +427 640 +640 513 +640 424 +480 640 +640 367 +640 480 +640 577 +640 427 +640 480 +427 640 +383 640 +480 640 +427 640 +640 427 +640 425 +640 427 +612 612 +640 480 +500 332 +500 333 +480 640 +640 480 +640 480 +640 480 +427 640 +640 425 +428 640 +375 500 +431 640 +451 640 +640 480 +480 640 +640 480 +640 427 +640 424 +640 424 +640 480 +640 428 +480 640 +500 375 +640 427 +500 375 +640 427 +612 612 +640 428 +640 480 +640 480 +640 640 +612 612 +640 469 +640 426 +640 480 +640 427 +500 375 +640 427 +640 480 +427 640 +500 343 +600 407 +640 425 +640 480 +426 640 +640 457 +480 640 +640 427 +500 375 +428 640 +640 427 +640 427 +368 500 +640 441 +640 480 +640 480 +640 427 +640 480 +640 458 +427 640 +500 419 +640 425 +640 480 +640 334 +640 428 +480 640 +640 304 +640 361 +480 640 +427 640 +480 640 +640 540 +640 428 +640 480 +480 640 +427 640 +640 426 +612 612 +640 480 +640 570 +427 640 +334 500 +640 480 +640 459 +640 480 +375 500 +640 427 +640 425 +640 424 +500 375 +640 480 +500 333 +480 640 +640 498 +396 640 +640 431 +640 400 +640 480 +640 427 +640 426 +427 640 +640 480 +640 427 +640 480 +500 335 +640 480 +640 480 +500 358 +640 480 +640 425 +640 579 +425 640 +500 375 +640 428 +325 640 +640 480 +640 425 +480 640 +375 500 +640 426 +640 480 +640 359 +375 500 +320 240 +640 386 +640 480 +640 480 +640 480 +600 399 +375 500 +640 428 +640 481 +640 480 +640 480 +640 480 +640 427 +640 480 +640 283 +427 640 +424 640 +640 480 +480 640 +640 640 +640 359 +640 480 +640 400 +500 333 +640 518 +640 480 +640 458 +640 487 +640 360 +640 480 +480 640 +640 427 +640 420 +424 640 +640 563 +500 357 +640 480 +640 426 +640 470 +640 426 +480 640 +640 427 +640 447 +428 640 +640 480 +640 425 +640 480 +427 640 +430 640 +640 383 +640 429 +640 480 +640 316 +640 426 +640 480 +500 375 +480 640 +640 427 +640 447 +640 426 +640 425 +640 427 +640 509 +640 427 +480 640 +640 359 +480 640 +640 480 +640 480 +640 478 +640 426 +335 500 +501 640 +640 640 +500 417 +640 478 +640 480 +500 444 +640 360 +640 480 +480 640 +640 480 +640 427 +640 427 +500 473 +640 381 +640 480 +640 427 +640 425 +480 640 +640 481 +640 480 +640 480 +480 640 +500 376 +640 480 +640 427 +640 427 +640 480 +334 500 +640 366 +640 220 +428 640 +640 640 +640 426 +640 640 +640 480 +640 503 +640 480 +640 480 +640 427 +640 427 +512 384 +640 428 +640 480 +500 393 +640 480 +500 375 +640 480 +640 480 +640 426 +427 640 +480 640 +640 427 +640 480 +375 500 +427 640 +640 427 +640 422 +640 427 +640 446 +612 612 +480 640 +640 427 +480 640 +480 640 +426 640 +488 500 +480 640 +640 463 +640 480 +500 333 +612 612 +640 480 +640 427 +640 426 +640 480 +640 480 +500 375 +640 427 +640 371 +640 427 +640 427 +640 480 +640 480 +640 360 +640 421 +640 358 +640 360 +500 332 +640 480 +640 425 +640 424 +640 629 +428 640 +640 427 +640 569 +398 640 +640 424 +640 425 +640 427 +500 375 +640 425 +640 480 +640 427 +640 424 +375 500 +640 480 +640 480 +365 500 +640 250 +427 640 +500 375 +612 612 +417 600 +500 375 +640 480 +640 348 +640 427 +640 423 +612 612 +640 427 +515 640 +640 461 +640 427 +375 500 +640 494 +640 480 +640 426 +427 640 +500 375 +640 480 +640 427 +640 427 +500 333 +640 427 +640 480 +640 427 +640 640 +427 640 +480 640 +463 640 +427 640 +509 640 +427 640 +640 427 +640 480 +640 480 +640 480 +640 427 +612 612 +640 480 +640 480 +640 480 +540 403 +640 442 +640 425 +640 427 +640 427 +640 384 +640 481 +640 480 +640 309 +640 480 +640 480 +640 388 +640 480 +640 480 +640 480 +640 360 +640 640 +500 375 +640 427 +640 480 +640 480 +640 427 +640 480 +426 640 +640 425 +640 480 +640 424 +432 591 +640 439 +640 431 +425 640 +427 640 +640 480 +556 640 +640 428 +640 480 +640 427 +640 480 +640 480 +500 375 +640 427 +640 427 +480 640 +640 428 +640 359 +640 480 +640 480 +480 384 +640 571 +640 429 +640 427 +640 415 +640 424 +640 427 +640 480 +640 480 +640 427 +333 500 +480 640 +640 426 +500 375 +640 428 +480 640 +605 640 +640 427 +640 480 +640 360 +383 640 +640 427 +640 480 +462 640 +640 480 +427 640 +480 640 +640 427 +640 425 +285 309 +386 640 +500 375 +640 480 +640 446 +640 480 +640 480 +412 640 +640 480 +480 640 +640 473 +640 427 +427 640 +640 480 +480 640 +427 640 +333 500 +640 457 +640 424 +450 607 +640 427 +640 480 +640 480 +640 427 +640 480 +640 574 +640 427 +436 640 +640 384 +640 480 +640 428 +640 480 +640 332 +640 480 +640 589 +500 375 +640 427 +640 480 +640 414 +427 640 +640 503 +640 360 +375 500 +360 238 +425 640 +480 640 +426 640 +640 479 +480 640 +612 612 +361 640 +640 457 +640 480 +427 640 +640 427 +640 387 +640 431 +640 566 +640 480 +480 640 +359 640 +500 375 +500 332 +375 500 +640 480 +640 427 +480 640 +640 428 +480 640 +640 427 +375 500 +480 640 +612 612 +640 480 +640 426 +375 500 +427 640 +553 640 +640 480 +640 569 +640 427 +640 426 +640 480 +640 478 +640 480 +640 512 +500 375 +640 406 +640 427 +640 480 +640 427 +640 408 +500 333 +584 640 +480 640 +640 480 +640 480 +427 640 +480 640 +375 500 +640 426 +480 640 +640 563 +640 297 +640 476 +396 576 +640 425 +640 480 +640 480 +640 480 +640 427 +640 427 +640 426 +640 400 +500 375 +640 480 +640 427 +640 427 +640 427 +514 640 +427 640 +640 427 +640 480 +480 640 +640 636 +640 480 +640 541 +640 360 +640 353 +424 640 +640 427 +480 640 +640 427 +480 640 +324 319 +640 426 +480 640 +640 427 +640 427 +375 500 +640 480 +478 640 +640 451 +640 480 +500 375 +429 640 +334 500 +480 640 +416 640 +640 427 +640 478 +640 479 +640 480 +640 480 +640 480 +640 384 +640 416 +640 457 +640 424 +428 640 +640 427 +640 433 +640 480 +491 640 +640 426 +500 333 +640 427 +640 427 +640 480 +640 464 +500 382 +640 433 +640 428 +640 427 +384 640 +640 424 +640 480 +333 500 +426 640 +427 640 +640 427 +640 360 +640 484 +640 480 +500 375 +425 640 +427 640 +640 427 +640 480 +640 530 +640 428 +500 500 +469 640 +640 428 +480 640 +640 427 +480 640 +640 489 +375 500 +640 425 +640 480 +640 457 +640 428 +463 640 +500 375 +640 449 +640 480 +640 427 +640 426 +480 640 +640 429 +640 427 +640 480 +640 480 +640 429 +640 543 +500 374 +480 640 +640 427 +500 375 +640 427 +640 360 +640 480 +500 375 +612 612 +640 426 +640 427 +480 640 +640 469 +487 500 +640 426 +640 425 +640 425 +255 640 +640 480 +482 500 +640 361 +640 427 +640 424 +521 640 +640 480 +375 500 +640 640 +375 500 +431 640 +640 480 +640 458 +640 480 +640 427 +640 480 +427 640 +378 640 +640 427 +640 480 +640 640 +640 428 +640 427 +640 480 +640 480 +640 480 +463 640 +640 426 +640 427 +640 426 +640 640 +640 480 +640 480 +480 640 +612 612 +640 379 +427 640 +640 480 +640 424 +640 240 +640 480 +640 480 +640 480 +341 640 +425 640 +612 612 +480 640 +480 640 +640 428 +640 480 +640 480 +640 427 +640 427 +640 420 +480 640 +640 427 +427 640 +640 480 +640 428 +640 427 +500 375 +256 192 +640 417 +480 640 +612 612 +375 500 +640 480 +640 458 +375 500 +640 425 +500 375 +640 518 +478 640 +640 480 +640 361 +480 640 +427 640 +480 640 +640 427 +425 640 +640 427 +500 375 +640 427 +640 344 +480 640 +640 480 +500 375 +640 401 +480 640 +450 350 +443 640 +427 640 +640 366 +640 429 +640 480 +640 426 +640 453 +500 375 +640 480 +640 427 +640 427 +640 478 +500 325 +640 360 +640 480 +640 480 +640 427 +640 425 +500 469 +640 388 +640 480 +640 471 +473 640 +640 480 +428 640 +640 481 +640 480 +640 426 +640 425 +500 333 +500 375 +640 427 +640 480 +640 431 +640 533 +640 428 +480 640 +640 465 +480 640 +640 480 +341 500 +567 567 +640 427 +640 640 +640 425 +480 640 +375 500 +640 458 +597 640 +640 441 +500 387 +400 366 +640 426 +427 640 +612 612 +640 371 +500 375 +640 468 +480 640 +640 480 +640 426 +640 425 +640 353 +427 640 +640 480 +640 480 +640 426 +640 424 +640 428 +333 500 +640 480 +640 593 +640 425 +375 500 +640 478 +500 375 +640 424 +480 640 +640 424 +480 640 +640 311 +640 480 +640 480 +640 426 +640 428 +493 640 +640 480 +640 427 +640 480 +383 640 +500 375 +640 480 +640 427 +640 480 +640 478 +640 508 +640 427 +480 319 +500 375 +640 480 +640 426 +500 375 +640 480 +500 375 +640 426 +640 480 +480 640 +640 480 +480 640 +640 480 +640 447 +480 640 +640 633 +640 427 +640 427 +640 480 +640 504 +471 640 +640 288 +480 640 +427 640 +497 640 +640 480 +640 480 +640 480 +391 500 +640 427 +640 480 +640 480 +377 500 +375 500 +640 480 +640 427 +640 480 +500 375 +640 480 +640 478 +428 640 +640 428 +640 470 +480 640 +640 480 +640 427 +640 480 +640 427 +640 426 +640 480 +640 428 +640 425 +640 428 +640 427 +375 500 +640 425 +640 427 +640 515 +438 640 +640 480 +640 480 +426 640 +640 483 +640 425 +640 427 +640 478 +640 427 +640 427 +640 427 +640 510 +640 427 +500 375 +640 425 +612 612 +640 514 +640 453 +500 330 +480 640 +640 508 +640 427 +640 426 +640 480 +640 480 +640 479 +640 480 +640 480 +375 500 +640 427 +612 612 +441 640 +640 427 +640 480 +640 427 +500 375 +640 461 +640 360 +500 332 +426 640 +500 373 +480 640 +500 333 +500 331 +640 480 +640 360 +612 612 +640 480 +480 640 +640 457 +640 425 +640 427 +640 427 +375 500 +512 640 +375 500 +640 426 +640 478 +640 640 +640 480 +640 480 +500 375 +640 427 +500 375 +640 427 +640 480 +640 527 +480 640 +640 480 +427 640 +500 376 +612 612 +640 425 +334 500 +640 480 +640 480 +500 375 +640 458 +463 547 +480 640 +640 512 +640 480 +640 426 +640 424 +500 333 +640 481 +640 640 +612 612 +640 480 +640 360 +640 415 +640 426 +481 640 +640 434 +375 500 +452 640 +640 353 +640 480 +500 337 +640 480 +640 426 +480 640 +500 336 +640 401 +640 426 +640 558 +640 425 +640 424 +640 480 +640 428 +425 640 +640 427 +640 427 +640 425 +640 408 +640 427 +500 333 +640 480 +640 540 +640 480 +640 480 +640 480 +640 427 +640 397 +640 390 +640 640 +640 427 +640 395 +640 364 +640 480 +640 426 +500 333 +426 640 +640 480 +640 294 +640 427 +640 498 +640 424 +640 425 +500 375 +640 426 +640 421 +375 500 +364 640 +640 427 +640 428 +640 480 +480 640 +480 640 +640 480 +640 480 +640 429 +640 480 +640 480 +427 640 +640 427 +640 425 +640 428 +331 640 +640 480 +427 640 +640 426 +640 480 +530 640 +500 332 +640 339 +640 428 +500 433 +450 640 +429 640 +640 480 +640 480 +640 480 +640 425 +428 640 +640 427 +558 640 +640 480 +640 480 +640 427 +640 485 +500 375 +640 573 +640 640 +640 440 +500 343 +480 640 +640 480 +500 320 +480 640 +612 612 +640 473 +428 285 +640 427 +640 423 +480 640 +640 427 +640 640 +640 426 +640 375 +640 427 +500 332 +640 480 +640 640 +220 293 +640 537 +480 640 +200 305 +640 427 +640 492 +335 500 +640 353 +640 428 +500 375 +640 480 +640 427 +500 375 +640 428 +640 427 +640 480 +640 480 +640 360 +640 480 +640 480 +640 427 +429 640 +640 438 +640 426 +427 640 +640 480 +500 375 +640 480 +480 640 +640 427 +612 612 +640 410 +480 640 +427 640 +428 640 +640 480 +640 480 +640 480 +480 640 +464 640 +425 640 +640 419 +375 500 +500 375 +640 359 +500 333 +427 640 +640 446 +640 480 +640 353 +428 640 +640 425 +500 500 +480 640 +640 480 +640 478 +640 480 +640 424 +640 360 +480 640 +409 640 +640 427 +426 640 +640 428 +640 424 +640 425 +489 640 +375 500 +640 448 +640 427 +462 640 +640 425 +640 426 +640 480 +426 640 +640 480 +640 480 +640 427 +640 427 +480 640 +427 640 +480 640 +327 482 +427 640 +500 400 +640 396 +500 375 +375 500 +640 427 +640 428 +500 375 +640 427 +333 500 +640 427 +640 426 +640 428 +500 375 +479 640 +503 640 +640 489 +640 480 +640 379 +640 426 +640 480 +640 480 +480 640 +500 334 +640 480 +427 640 +500 375 +480 640 +640 426 +640 436 +640 480 +500 332 +500 375 +640 480 +612 612 +427 640 +500 375 +640 448 +640 480 +640 427 +640 438 +640 594 +640 480 +640 536 +640 427 +480 640 +640 480 +621 640 +640 480 +640 425 +640 464 +640 480 +481 640 +640 427 +480 640 +500 375 +640 427 +640 480 +640 480 +612 612 +640 480 +425 640 +640 427 +500 333 +640 480 +493 640 +448 336 +640 427 +640 480 +500 371 +427 640 +640 480 +640 424 +640 480 +640 427 +640 480 +625 640 +480 640 +640 427 +640 427 +640 425 +500 331 +640 553 +640 388 +640 480 +480 640 +640 426 +480 640 +640 427 +426 640 +480 640 +425 640 +640 427 +480 640 +640 428 +299 500 +640 480 +640 480 +640 424 +512 640 +640 427 +640 428 +478 640 +612 612 +640 456 +480 640 +640 426 +640 427 +640 455 +640 429 +640 430 +640 480 +640 360 +426 640 +640 480 +240 320 +375 500 +426 640 +500 333 +640 373 +640 434 +480 640 +480 640 +640 423 +640 427 +640 427 +500 334 +480 640 +640 478 +640 439 +500 419 +480 640 +640 480 +640 426 +500 375 +640 640 +640 548 +421 640 +640 428 +500 375 +640 427 +640 455 +463 640 +640 480 +500 331 +640 426 +500 333 +640 478 +640 428 +640 480 +480 640 +480 640 +640 480 +640 480 +640 480 +426 640 +640 441 +640 469 +640 480 +640 426 +640 480 +640 426 +640 454 +640 425 +640 480 +640 480 +640 427 +640 480 +640 480 +640 368 +640 480 +640 464 +640 428 +640 480 +640 428 +640 480 +640 480 +640 428 +640 480 +480 640 +480 640 +640 428 +640 428 +612 612 +640 427 +640 480 +500 336 +640 427 +480 640 +500 375 +480 640 +640 480 +400 500 +640 427 +640 474 +453 640 +640 303 +640 480 +640 514 +640 427 +640 568 +480 640 +640 359 +640 457 +640 480 +640 360 +640 427 +640 466 +640 339 +426 640 +640 478 +640 359 +640 427 +640 425 +480 640 +480 640 +640 480 +480 640 +640 482 +640 480 +640 360 +640 531 +640 480 +492 640 +640 483 +640 419 +363 640 +640 478 +640 426 +640 480 +480 640 +640 427 +640 480 +500 375 +640 426 +640 480 +427 640 +640 434 +640 428 +480 640 +640 428 +640 480 +500 375 +640 426 +640 480 +640 424 +357 500 +640 480 +375 500 +640 425 +374 500 +640 480 +640 360 +375 500 +640 427 +640 480 +500 334 +640 480 +640 427 +640 501 +427 640 +640 427 +640 427 +640 480 +640 427 +640 427 +480 640 +640 427 +640 427 +640 427 +640 480 +640 480 +500 333 +640 480 +640 428 +640 480 +640 310 +427 640 +640 512 +361 640 +640 427 +425 640 +417 640 +640 457 +640 424 +640 640 +612 612 +640 426 +480 640 +640 427 +640 424 +640 425 +500 334 +640 480 +480 640 +480 640 +375 500 +500 276 +640 360 +640 480 +640 480 +480 640 +640 480 +640 480 +640 444 +480 640 +640 429 +640 479 +640 400 +640 480 +425 640 +640 427 +480 640 +640 480 +640 425 +640 480 +480 640 +500 375 +446 640 +640 480 +640 374 +375 500 +640 427 +352 288 +371 500 +640 426 +640 427 +640 400 +500 333 +480 640 +640 418 +500 333 +375 500 +500 375 +640 487 +640 427 +474 640 +600 397 +640 480 +640 480 +640 151 +640 480 +640 480 +612 612 +480 320 +500 333 +640 480 +480 640 +549 640 +500 343 +375 500 +640 426 +480 640 +640 427 +476 640 +640 427 +640 426 +640 459 +640 423 +426 640 +640 424 +640 480 +640 429 +640 478 +640 424 +640 428 +480 640 +640 429 +480 640 +480 640 +640 408 +640 480 +640 480 +640 427 +640 425 +640 512 +640 426 +640 478 +612 612 +640 498 +640 480 +640 426 +494 640 +640 480 +480 640 +640 481 +640 508 +640 393 +640 386 +640 480 +480 640 +640 480 +640 458 +640 480 +640 427 +500 375 +500 375 +640 480 +320 240 +640 401 +640 390 +463 640 +640 478 +427 640 +640 480 +500 375 +640 480 +640 428 +480 640 +640 428 +640 424 +640 428 +640 426 +640 480 +640 480 +480 640 +640 480 +480 640 +640 501 +640 424 +640 480 +640 427 +640 426 +375 500 +640 414 +640 468 +640 427 +640 428 +640 480 +640 426 +640 480 +640 480 +398 640 +640 443 +640 425 +612 612 +640 425 +640 480 +375 500 +640 424 +480 298 +346 407 +640 428 +600 441 +500 375 +427 640 +640 425 +640 480 +500 375 +480 640 +480 640 +640 480 +640 426 +640 480 +640 480 +480 640 +500 333 +427 640 +500 356 +640 480 +640 480 +640 427 +426 640 +640 427 +427 640 +640 189 +640 427 +640 427 +640 480 +480 640 +612 612 +640 446 +640 425 +640 425 +480 360 +640 428 +640 428 +640 426 +333 500 +640 425 +500 308 +640 426 +480 640 +612 612 +640 425 +480 640 +640 427 +640 469 +612 612 +612 612 +640 416 +426 640 +500 332 +480 640 +500 338 +375 500 +360 640 +640 427 +640 428 +640 427 +640 428 +640 427 +500 332 +640 426 +640 425 +500 375 +640 427 +640 427 +640 425 +640 480 +427 640 +640 360 +373 496 +640 427 +640 607 +375 500 +640 480 +427 640 +640 480 +640 427 +526 640 +426 640 +333 500 +640 428 +478 500 +425 640 +640 428 +350 325 +640 458 +640 480 +640 427 +640 324 +640 480 +640 426 +640 427 +640 425 +500 320 +426 640 +427 640 +640 427 +640 426 +640 480 +640 477 +480 640 +640 429 +640 480 +640 484 +360 500 +375 500 +640 427 +640 581 +384 500 +640 427 +640 424 +496 640 +640 342 +500 375 +640 480 +427 640 +640 480 +500 332 +640 469 +451 500 +640 426 +500 374 +640 480 +640 360 +640 360 +480 640 +640 418 +427 640 +480 640 +640 480 +640 360 +640 377 +480 640 +640 427 +640 458 +640 424 +640 425 +480 640 +640 480 +640 426 +640 443 +640 480 +575 640 +500 375 +640 640 +640 402 +640 427 +640 480 +612 612 +640 396 +352 288 +480 640 +640 480 +640 431 +640 427 +640 359 +640 427 +640 480 +640 539 +500 333 +545 640 +640 428 +500 375 +640 640 +426 640 +640 624 +500 382 +640 480 +640 427 +640 428 +375 500 +640 359 +640 431 +640 491 +640 426 +500 333 +640 479 +566 640 +640 359 +333 500 +640 640 +640 480 +640 480 +425 640 +612 612 +480 640 +640 480 +640 478 +640 478 +480 640 +640 360 +640 458 +640 428 +500 371 +640 426 +500 375 +640 426 +640 480 +640 428 +640 426 +640 485 +640 426 +426 640 +640 427 +640 426 +375 500 +640 480 +480 640 +640 361 +640 512 +640 480 +426 640 +640 427 +640 640 +640 480 +385 500 +640 480 +640 480 +640 480 +640 480 +640 480 +640 425 +500 473 +500 374 +640 480 +640 426 +500 330 +640 445 +640 480 +640 449 +512 640 +479 640 +640 480 +500 375 +640 480 +640 425 +640 480 +640 427 +480 640 +640 478 +640 480 +500 375 +427 640 +512 640 +640 428 +640 480 +640 424 +457 640 +640 480 +375 500 +427 640 +640 426 +500 375 +640 480 +640 427 +640 480 +500 375 +640 424 +640 426 +640 427 +640 360 +640 408 +424 640 +612 612 +640 426 +640 522 +640 427 +640 425 +640 428 +640 427 +500 375 +640 480 +640 480 +640 480 +640 408 +640 480 +640 480 +640 348 +640 427 +640 480 +640 480 +500 332 +500 332 +383 640 +640 464 +640 426 +640 480 +640 480 +640 480 +640 480 +640 430 +640 426 +640 480 +640 480 +640 427 +427 640 +640 427 +640 360 +344 500 +640 427 +640 512 +640 426 +427 640 +640 360 +640 427 +640 480 +640 383 +640 480 +640 453 +640 428 +297 500 +640 480 +500 640 +640 480 +363 484 +427 640 +500 335 +640 425 +640 424 +480 640 +640 480 +640 586 +612 612 +640 480 +640 427 +640 480 +480 640 +375 500 +500 375 +640 424 +640 480 +640 426 +356 640 +640 427 +640 480 +480 640 +640 480 +480 640 +640 480 +640 480 +424 640 +640 415 +500 375 +478 640 +640 426 +480 640 +640 427 +480 640 +500 344 +640 493 +480 640 +640 582 +640 427 +640 480 +640 426 +500 375 +500 331 +480 640 +500 375 +640 398 +640 480 +640 480 +640 427 +640 508 +640 433 +640 480 +640 425 +640 480 +640 427 +640 554 +500 375 +640 480 +640 515 +338 500 +640 574 +426 640 +427 640 +500 375 +640 425 +640 428 +500 333 +640 425 +500 375 +640 480 +640 427 +578 640 +640 478 +640 480 +640 336 +500 335 +640 360 +333 500 +500 333 +480 640 +640 480 +500 375 +320 213 +640 480 +640 480 +485 640 +640 480 +428 640 +500 333 +427 640 +640 427 +640 480 +640 360 +612 612 +640 424 +640 480 +640 469 +640 480 +640 427 +640 480 +640 640 +335 500 +640 426 +640 480 +640 427 +423 640 +640 427 +640 480 +640 427 +612 612 +640 396 +640 427 +480 640 +640 480 +640 409 +640 427 +640 480 +612 612 +640 480 +640 480 +640 375 +640 459 +480 640 +640 458 +640 480 +427 640 +640 378 +640 480 +640 427 +480 640 +320 500 +640 428 +500 375 +640 543 +640 441 +431 640 +640 399 +640 480 +640 582 +640 431 +640 417 +427 640 +640 427 +640 480 +640 480 +640 480 +640 428 +640 360 +640 426 +640 427 +640 480 +640 459 +480 640 +640 556 +480 640 +640 294 +500 375 +640 308 +640 480 +640 425 +500 310 +332 500 +640 480 +640 480 +480 640 +640 429 +640 480 +500 375 +335 500 +640 310 +640 427 +640 526 +640 427 +640 426 +640 454 +500 375 +640 566 +640 481 +640 480 +226 640 +640 480 +640 360 +500 333 +640 328 +640 425 +480 640 +640 427 +640 480 +640 480 +640 427 +640 480 +640 480 +640 480 +640 640 +640 426 +640 424 +640 480 +640 480 +640 482 +467 640 +640 457 +640 480 +480 640 +640 480 +600 399 +640 364 +640 428 +640 427 +640 428 +500 375 +500 375 +640 453 +640 427 +640 359 +426 640 +640 480 +640 480 +375 500 +640 427 +480 640 +640 480 +640 427 +640 190 +640 482 +640 428 +640 427 +640 428 +425 640 +500 375 +640 360 +640 424 +640 427 +640 456 +640 480 +640 480 +640 480 +640 480 +640 480 +375 500 +640 425 +640 427 +640 438 +640 446 +640 427 +612 612 +475 500 +480 640 +407 640 +640 481 +640 427 +424 640 +640 480 +640 480 +640 480 +426 640 +640 427 +640 480 +640 425 +640 480 +480 640 +640 429 +500 375 +640 480 +612 612 +640 427 +500 375 +500 400 +640 216 +640 480 +640 480 +628 640 +640 453 +427 640 +640 428 +640 427 +612 612 +640 427 +640 480 +480 640 +640 425 +640 480 +612 612 +640 487 +640 425 +640 428 +640 266 +640 361 +640 480 +480 640 +640 428 +640 426 +640 640 +281 640 +640 454 +612 612 +640 478 +640 426 +424 640 +478 640 +480 640 +640 473 +500 375 +375 500 +640 424 +375 500 +612 612 +612 612 +640 480 +640 360 +640 431 +640 480 +640 393 +478 640 +500 301 +375 500 +640 426 +640 427 +640 480 +640 480 +375 500 +640 424 +480 640 +640 480 +640 427 +640 480 +640 427 +426 640 +480 640 +480 640 +640 480 +640 478 +640 426 +478 640 +640 428 +640 427 +480 640 +480 640 +404 640 +543 640 +425 640 +640 360 +640 480 +640 464 +612 612 +500 400 +640 607 +478 640 +640 427 +640 426 +640 479 +640 480 +640 480 +640 480 +640 428 +640 425 +640 359 +640 426 +640 359 +640 359 +640 462 +480 640 +640 640 +640 425 +640 400 +640 480 +640 428 +640 480 +640 478 +640 426 +480 640 +640 480 +640 576 +375 500 +426 640 +640 509 +427 640 +640 480 +640 480 +640 427 +500 375 +480 640 +640 406 +640 427 +593 640 +427 640 +612 612 +640 426 +375 500 +640 480 +512 640 +612 640 +640 316 +500 375 +640 427 +427 640 +500 333 +333 500 +500 375 +640 413 +375 500 +480 640 +640 480 +568 320 +500 375 +640 480 +640 421 +640 480 +427 640 +500 375 +427 640 +428 640 +320 240 +500 368 +640 480 +480 640 +640 428 +425 640 +640 480 +640 480 +640 640 +427 640 +640 480 +640 480 +640 427 +640 427 +480 640 +640 480 +480 640 +500 375 +640 480 +640 427 +570 640 +612 612 +640 513 +640 480 +640 480 +640 427 +640 480 +640 427 +640 360 +640 427 +640 426 +640 480 +640 422 +640 425 +612 612 +457 640 +500 334 +640 512 +640 338 +640 425 +480 640 +640 480 +640 476 +480 640 +612 612 +640 480 +640 319 +500 333 +360 302 +640 482 +427 640 +640 427 +640 426 +482 640 +480 640 +427 640 +428 640 +640 427 +640 428 +401 640 +640 398 +640 512 +640 458 +426 640 +640 501 +640 427 +357 500 +450 640 +480 640 +640 481 +264 400 +640 480 +640 480 +375 500 +640 429 +640 360 +640 427 +640 427 +640 480 +479 640 +640 425 +640 427 +640 480 +640 480 +640 427 +480 640 +426 640 +500 313 +500 375 +640 640 +640 429 +640 480 +500 333 +457 640 +352 500 +640 480 +640 480 +640 427 +400 500 +640 480 +500 375 +480 640 +480 640 +378 640 +209 500 +640 480 +640 427 +640 480 +640 480 +640 480 +640 480 +640 433 +640 428 +426 640 +640 480 +640 457 +640 422 +640 475 +640 480 +640 427 +640 512 +640 427 +640 480 +640 429 +640 429 +640 427 +640 480 +640 480 +426 640 +640 428 +640 413 +640 480 +640 480 +640 427 +427 640 +640 426 +640 632 +640 427 +640 359 +480 640 +640 426 +640 427 +500 333 +640 427 +640 510 +640 479 +640 428 +500 333 +480 640 +612 612 +640 427 +640 433 +640 424 +500 333 +640 427 +640 426 +640 457 +640 427 +426 640 +500 375 +640 480 +640 480 +640 435 +640 480 +640 360 +478 640 +640 427 +640 480 +612 612 +426 640 +640 426 +640 425 +640 427 +480 640 +640 361 +640 480 +640 426 +640 453 +640 480 +480 640 +640 480 +480 640 +480 640 +425 640 +640 428 +640 427 +640 425 +640 428 +500 318 +640 399 +500 375 +631 640 +640 427 +640 480 +480 640 +480 640 +640 480 +427 640 +640 480 +640 451 +640 480 +500 375 +512 640 +640 480 +500 500 +640 448 +480 640 +640 383 +480 640 +500 414 +640 480 +500 375 +640 427 +500 375 +425 640 +640 510 +500 421 +640 427 +640 480 +480 640 +480 640 +400 500 +640 427 +640 426 +640 427 +500 375 +640 428 +438 640 +500 333 +640 428 +640 480 +480 640 +375 500 +640 480 +480 640 +640 429 +640 480 +640 429 +640 480 +640 480 +640 427 +480 640 +640 480 +640 618 +421 640 +640 383 +600 450 +528 360 +640 427 +640 480 +640 425 +427 640 +427 640 +640 428 +640 480 +640 481 +439 640 +640 427 +427 640 +480 640 +457 640 +640 342 +480 640 +640 427 +500 375 +480 640 +640 426 +640 424 +640 427 +510 640 +281 500 +640 481 +640 480 +375 500 +640 480 +640 383 +640 480 +612 612 +425 640 +640 480 +640 427 +640 425 +500 347 +640 427 +500 375 +640 480 +640 427 +483 640 +640 480 +640 480 +640 425 +640 480 +500 379 +480 640 +640 466 +640 483 +640 480 +640 640 +640 640 +640 480 +324 640 +640 422 +640 427 +550 400 +640 480 +640 416 +640 480 +640 520 +640 426 +500 332 +428 640 +640 480 +640 424 +640 427 +640 480 +640 480 +640 480 +640 427 +640 480 +640 462 +640 427 +427 640 +640 427 +500 400 +500 332 +640 357 +640 427 +640 480 +640 427 +640 424 +640 440 +500 375 +640 428 +640 480 +640 378 +640 411 +640 480 +640 480 +640 427 +640 411 +640 480 +640 480 +640 459 +640 480 +640 480 +480 640 +640 480 +640 480 +640 427 +640 480 +640 426 +640 480 +427 640 +640 427 +427 640 +640 512 +379 640 +640 480 +640 428 +427 640 +427 640 +640 430 +436 640 +640 427 +500 375 +640 480 +500 375 +640 480 +640 480 +500 333 +640 424 +640 427 +500 375 +640 426 +640 381 +640 480 +640 406 +333 500 +640 480 +500 333 +418 640 +425 640 +640 360 +640 425 +640 640 +640 480 +640 427 +500 175 +640 427 +640 423 +640 480 +640 400 +640 224 +640 400 +640 474 +480 640 +640 389 +640 392 +640 433 +500 375 +640 480 +640 429 +432 640 +640 480 +640 428 +500 333 +640 427 +640 480 +480 640 +640 480 +424 640 +640 480 +640 442 +500 375 +640 480 +640 427 +500 334 +480 640 +500 354 +612 612 +333 500 +640 427 +640 554 +480 640 +640 479 +640 480 +427 640 +640 480 +461 640 +640 427 +640 513 +640 458 +640 480 +480 640 +375 500 +640 517 +640 480 +480 640 +640 426 +427 640 +640 480 +500 375 +640 509 +640 480 +640 477 +426 640 +640 427 +640 482 +640 427 +500 333 +424 640 +640 480 +640 480 +480 640 +640 480 +361 640 +426 640 +640 427 +640 427 +640 480 +500 499 +640 544 +640 640 +640 478 +612 612 +400 500 +640 480 +640 421 +640 480 +640 426 +640 337 +640 427 +640 429 +500 334 +640 484 +640 480 +425 640 +411 640 +480 640 +640 428 +640 427 +640 460 +640 427 +446 500 +370 500 +500 375 +500 377 +480 640 +640 429 +640 458 +640 480 +480 640 +640 371 +640 480 +480 640 +500 375 +640 426 +640 640 +640 512 +640 480 +640 424 +640 428 +480 640 +500 375 +640 480 +500 375 +444 500 +454 640 +500 375 +640 360 +640 480 +500 375 +640 480 +640 640 +640 322 +640 426 +640 479 +220 155 +375 500 +640 457 +640 427 +640 480 +640 427 +500 375 +640 640 +479 640 +640 428 +428 640 +640 434 +375 500 +640 480 +640 399 +616 640 +640 480 +480 640 +640 640 +427 640 +640 427 +480 640 +640 427 +640 480 +640 625 +500 375 +640 425 +640 426 +640 432 +640 480 +640 427 +509 640 +546 640 +640 428 +640 480 +640 426 +640 428 +640 426 +640 470 +640 480 +640 495 +640 338 +640 428 +500 326 +480 640 +427 640 +480 640 +640 363 +640 439 +375 500 +640 544 +500 375 +424 640 +511 640 +640 427 +427 640 +640 427 +640 478 +640 397 +640 480 +478 640 +480 640 +480 360 +500 333 +640 427 +425 640 +427 640 +511 640 +640 480 +375 500 +640 480 +478 640 +640 427 +640 427 +427 640 +640 480 +375 500 +480 640 +640 427 +640 455 +640 426 +640 427 +599 640 +480 640 +640 312 +640 427 +640 427 +427 640 +427 640 +604 453 +640 427 +640 480 +427 640 +500 375 +640 427 +500 335 +427 640 +500 333 +640 427 +640 426 +500 375 +640 463 +427 640 +640 428 +640 429 +640 427 +640 426 +640 426 +640 480 +640 480 +385 640 +640 439 +640 480 +500 375 +640 480 +427 640 +640 480 +640 435 +493 640 +640 480 +640 480 +640 480 +640 427 +640 427 +467 640 +640 426 +384 576 +500 375 +640 480 +640 453 +640 239 +600 387 +640 426 +482 640 +640 426 +640 428 +640 480 +640 427 +640 427 +500 375 +546 640 +480 640 +640 480 +426 640 +640 480 +640 480 +640 427 +640 480 +640 428 +543 640 +640 480 +500 375 +640 480 +640 423 +640 480 +640 626 +640 428 +480 640 +640 480 +640 425 +640 429 +479 640 +427 640 +480 640 +640 426 +563 640 +640 480 +333 500 +480 640 +640 427 +526 640 +640 424 +640 640 +640 480 +429 640 +500 309 +640 427 +640 427 +640 151 +640 428 +640 480 +640 480 +640 427 +640 351 +640 424 +640 426 +483 640 +640 360 +500 356 +640 480 +640 360 +640 427 +500 333 +640 424 +640 427 +640 480 +640 432 +640 480 +612 612 +640 413 +640 427 +640 480 +640 427 +427 640 +640 427 +640 427 +640 480 +375 500 +424 640 +640 425 +640 425 +640 480 +480 640 +500 383 +640 480 +640 480 +429 640 +480 640 +500 375 +640 480 +500 360 +640 479 +640 427 +480 640 +640 429 +375 500 +500 375 +640 400 +640 480 +640 478 +640 455 +640 427 +489 640 +640 343 +640 480 +332 500 +640 640 +640 427 +480 640 +640 480 +480 640 +640 427 +640 480 +500 375 +427 640 +640 428 +640 568 +640 426 +640 425 +640 480 +612 612 +640 512 +640 425 +480 640 +640 480 +640 425 +640 427 +640 427 +500 375 +640 480 +640 446 +640 548 +640 480 +317 500 +640 426 +640 529 +640 426 +640 429 +640 475 +556 640 +458 640 +640 480 +338 500 +640 480 +640 427 +500 500 +640 427 +333 500 +426 640 +640 640 +500 375 +480 640 +640 640 +640 427 +640 438 +640 640 +640 538 +640 425 +640 480 +375 500 +640 426 +640 427 +640 476 +640 400 +640 480 +480 640 +640 427 +425 640 +640 428 +640 390 +640 450 +640 426 +640 480 +500 375 +640 429 +640 429 +500 375 +640 427 +640 480 +500 500 +640 482 +640 428 +640 444 +640 480 +428 640 +480 640 +640 501 +640 480 +640 351 +640 480 +480 640 +429 640 +612 612 +640 480 +640 426 +640 480 +640 427 +640 480 +640 428 +500 375 +640 480 +640 480 +640 425 +413 640 +640 478 +500 500 +640 480 +640 481 +577 640 +480 640 +500 500 +640 480 +640 640 +640 480 +640 454 +640 363 +640 480 +640 368 +640 480 +640 480 +640 479 +640 409 +640 480 +426 640 +480 640 +640 425 +480 640 +427 640 +640 476 +640 425 +477 323 +480 640 +480 640 +640 480 +640 480 +640 480 +640 479 +640 425 +480 640 +640 480 +640 427 +640 426 +640 480 +640 480 +428 640 +640 480 +640 427 +640 480 +640 432 +426 640 +424 640 +500 375 +184 200 +640 425 +640 480 +640 480 +640 427 +640 426 +480 360 +640 480 +640 480 +640 480 +640 449 +426 640 +640 427 +640 480 +640 480 +640 400 +640 427 +425 640 +640 427 +640 480 +640 480 +640 426 +333 500 +640 428 +640 480 +428 640 +500 375 +480 640 +612 612 +450 338 +480 640 +640 425 +640 411 +457 640 +640 480 +640 427 +640 424 +480 640 +500 375 +426 640 +427 640 +480 640 +640 480 +480 640 +640 439 +640 480 +640 427 +425 640 +640 390 +640 640 +428 640 +640 480 +640 478 +375 500 +600 450 +640 480 +500 422 +640 480 +640 480 +640 431 +640 480 +473 640 +529 640 +640 427 +640 480 +550 400 +640 480 +612 612 +500 375 +426 640 +380 640 +375 500 +640 480 +640 429 +640 427 +640 427 +500 376 +383 640 +640 426 +640 480 +640 480 +427 640 +640 480 +500 375 +612 612 +640 480 +480 640 +640 416 +640 480 +480 640 +640 427 +500 400 +640 480 +640 427 +500 375 +640 640 +500 375 +623 640 +375 500 +640 359 +480 640 +640 480 +480 640 +480 640 +640 427 +640 428 +640 640 +640 512 +375 500 +640 480 +640 426 +640 428 +480 360 +489 640 +500 333 +480 640 +640 428 +375 500 +442 330 +640 428 +640 480 +612 612 +360 640 +500 375 +640 497 +640 427 +640 359 +640 427 +500 375 +640 512 +320 238 +425 640 +640 480 +640 480 +640 426 +640 427 +640 444 +612 612 +375 500 +478 640 +640 555 +640 426 +480 640 +640 480 +640 480 +640 426 +640 480 +640 426 +640 427 +640 426 +640 419 +640 427 +480 640 +427 640 +640 480 +640 480 +640 427 +640 480 +640 427 +480 640 +640 480 +640 360 +480 640 +500 375 +504 379 +473 500 +500 375 +480 640 +640 427 +427 640 +640 427 +448 296 +640 424 +640 480 +640 427 +640 384 +640 425 +640 424 +639 640 +640 426 +640 427 +640 480 +294 500 +640 427 +640 427 +640 457 +426 640 +640 512 +640 480 +640 480 +640 467 +640 423 +500 232 +640 480 +361 640 +433 640 +640 427 +446 640 +640 427 +640 480 +640 427 +640 480 +640 480 +612 612 +435 640 +640 478 +426 640 +640 425 +640 424 +640 427 +640 480 +640 426 +640 446 +640 480 +640 428 +352 500 +480 640 +500 375 +406 640 +640 480 +456 640 +640 427 +640 427 +480 640 +640 480 +640 480 +640 480 +640 480 +640 427 +640 359 +480 640 +640 465 +362 640 +640 480 +640 426 +640 640 +640 426 +640 480 +426 640 +640 480 +640 424 +480 640 +640 480 +640 480 +453 640 +534 640 +427 640 +381 640 +640 427 +640 478 +640 574 +427 640 +500 406 +640 154 +481 640 +612 612 +640 361 +640 480 +640 426 +640 353 +480 640 +640 480 +640 428 +640 480 +640 427 +480 640 +640 480 +640 419 +640 481 +640 427 +500 375 +500 375 +612 612 +640 426 +640 480 +480 640 +374 500 +640 454 +457 640 +640 451 +640 480 +640 427 +640 480 +640 380 +413 640 +320 240 +640 427 +640 424 +500 333 +600 410 +333 500 +480 640 +640 427 +640 480 +640 405 +640 427 +640 480 +427 640 +640 480 +640 428 +480 640 +640 478 +640 441 +480 640 +640 480 +429 640 +640 427 +500 500 +640 427 +450 640 +426 640 +640 273 +640 430 +640 503 +612 612 +640 428 +640 428 +640 427 +640 427 +640 480 +640 453 +640 640 +640 480 +480 640 +640 480 +640 480 +640 424 +426 640 +640 499 +640 480 +640 427 +640 485 +640 428 +640 480 +640 480 +640 427 +640 480 +480 480 +424 640 +640 480 +480 640 +500 400 +640 425 +500 333 +640 427 +640 480 +640 427 +640 435 +480 640 +500 333 +500 375 +612 612 +640 427 +640 480 +640 419 +500 333 +640 480 +640 427 +640 603 +640 427 +640 429 +640 405 +640 427 +640 427 +640 480 +500 400 +480 640 +500 333 +640 425 +640 435 +333 500 +640 426 +640 476 +480 640 +640 427 +634 401 +425 640 +640 427 +481 640 +640 480 +375 500 +640 427 +640 421 +640 425 +640 426 +640 426 +640 480 +640 480 +640 427 +419 640 +500 333 +640 480 +500 333 +640 480 +480 464 +640 427 +480 640 +640 539 +640 426 +640 480 +640 425 +500 332 +427 640 +429 640 +640 429 +640 424 +640 427 +640 480 +500 375 +640 429 +640 426 +427 640 +500 374 +640 426 +480 640 +375 500 +640 480 +375 500 +480 640 +389 640 +640 425 +427 640 +612 612 +640 480 +640 427 +640 480 +640 427 +640 340 +612 612 +640 427 +640 429 +640 451 +640 481 +640 512 +500 497 +480 640 +640 472 +640 480 +640 480 +640 480 +640 427 +640 480 +640 458 +640 425 +640 427 +640 444 +640 480 +425 640 +640 440 +640 425 +640 480 +478 640 +640 360 +640 480 +640 480 +640 640 +426 640 +640 427 +640 457 +427 640 +640 480 +640 480 +480 640 +640 480 +480 640 +480 640 +480 640 +640 426 +640 426 +640 480 +500 332 +500 375 +500 334 +640 463 +480 640 +640 425 +482 640 +501 640 +640 403 +640 433 +640 457 +640 427 +640 427 +640 480 +500 373 +640 488 +640 478 +640 480 +640 480 +454 640 +328 500 +640 494 +640 480 +640 426 +640 441 +640 427 +428 640 +478 640 +640 471 +480 640 +425 640 +640 426 +640 425 +640 480 +640 360 +375 500 +640 480 +640 480 +640 640 +640 512 +427 640 +640 427 +640 640 +500 375 +600 600 +640 426 +640 449 +478 640 +640 427 +480 640 +375 500 +480 640 +640 480 +640 426 +640 480 +640 480 +612 612 +640 480 +542 640 +425 640 +537 640 +500 375 +640 426 +640 427 +389 500 +640 359 +640 426 +640 425 +640 427 +640 424 +500 375 +640 402 +640 480 +306 640 +640 426 +640 424 +533 640 +640 423 +640 427 +640 480 +640 427 +640 427 +427 640 +640 428 +500 415 +640 427 +500 437 +640 428 +360 500 +640 480 +612 612 +480 640 +640 425 +640 427 +612 612 +426 640 +452 500 +640 503 +424 640 +612 612 +640 480 +500 333 +640 426 +414 640 +640 414 +640 396 +640 480 +640 480 +640 480 +640 480 +640 604 +640 427 +500 362 +640 426 +640 480 +333 500 +427 640 +480 640 +640 414 +640 480 +640 424 +640 427 +640 427 +640 480 +640 400 +640 640 +612 612 +612 612 +422 640 +426 640 +640 426 +500 375 +640 425 +640 428 +640 416 +640 480 +640 480 +427 640 +640 480 +640 640 +640 427 +640 364 +640 427 +431 500 +480 640 +640 480 +427 640 +640 462 +640 518 +427 640 +640 479 +640 426 +640 480 +640 486 +640 427 +640 360 +640 426 +612 612 +640 480 +640 427 +640 480 +640 427 +640 281 +640 353 +640 480 +640 640 +640 427 +640 480 +426 640 +523 640 +640 640 +640 427 +426 640 +640 428 +640 480 +640 427 +640 448 +640 427 +640 427 +640 444 +500 375 +480 640 +480 640 +640 425 +640 480 +427 640 +410 500 +429 640 +640 427 +640 640 +333 500 +640 433 +640 480 +640 424 +427 640 +640 426 +640 480 +640 425 +500 334 +640 480 +640 427 +500 400 +640 480 +640 427 +640 480 +640 426 +640 427 +640 427 +640 524 +640 426 +500 375 +640 610 +640 425 +427 640 +426 640 +640 553 +427 640 +640 425 +640 480 +427 640 +640 427 +640 427 +640 427 +640 359 +500 209 +640 480 +403 640 +612 612 +631 640 +640 426 +426 640 +640 394 +428 640 +425 640 +640 480 +640 476 +375 500 +640 479 +480 640 +612 612 +640 509 +500 335 +480 640 +640 427 +640 425 +640 457 +480 640 +640 480 +500 337 +640 635 +640 480 +640 427 +640 480 +640 427 +640 640 +640 640 +640 480 +421 640 +640 427 +480 640 +612 612 +640 480 +640 426 +426 640 +640 478 +640 339 +640 480 +500 377 +640 425 +612 612 +427 640 +640 427 +640 428 +640 481 +640 480 +500 467 +640 426 +478 640 +478 640 +640 426 +329 500 +640 468 +428 640 +480 640 +640 427 +640 360 +427 640 +500 333 +480 640 +640 556 +500 375 +640 480 +640 427 +500 332 +500 400 +427 640 +640 427 +612 612 +640 480 +500 334 +640 451 +640 425 +640 426 +427 640 +640 406 +480 640 +640 480 +640 503 +640 480 +640 480 +640 429 +500 375 +427 640 +640 480 +640 426 +612 612 +640 426 +640 480 +500 375 +640 429 +640 360 +480 640 +640 480 +640 428 +640 480 +500 375 +640 480 +640 424 +500 375 +640 424 +640 427 +480 640 +640 480 +640 427 +500 375 +640 480 +640 480 +640 480 +640 480 +640 480 +640 435 +480 640 +640 428 +640 480 +640 478 +640 427 +640 480 +500 336 +640 480 +640 480 +640 480 +640 428 +500 375 +489 640 +640 426 +500 375 +640 480 +640 428 +640 427 +248 640 +640 480 +640 427 +640 322 +640 512 +640 480 +426 640 +640 425 +640 480 +640 427 +640 449 +640 509 +640 480 +640 480 +519 640 +480 640 +427 640 +640 457 +640 480 +640 480 +500 375 +425 640 +640 457 +640 426 +426 640 +480 640 +640 425 +640 427 +334 500 +500 375 +640 471 +500 375 +640 480 +500 305 +436 640 +640 428 +640 480 +640 426 +640 480 +640 426 +640 480 +427 640 +612 612 +502 640 +480 640 +640 480 +480 640 +640 478 +640 420 +640 458 +500 375 +478 640 +427 640 +640 427 +640 427 +640 458 +640 566 +640 555 +640 480 +640 480 +640 416 +640 404 +603 452 +480 640 +640 361 +640 396 +640 480 +640 479 +640 480 +425 640 +640 427 +500 390 +640 640 +640 480 +318 480 +640 360 +500 375 +512 640 +427 640 +480 640 +480 640 +640 480 +640 427 +478 640 +640 478 +640 640 +640 423 +640 480 +318 640 +640 480 +640 421 +640 480 +640 427 +640 480 +480 640 +500 283 +425 640 +320 240 +640 450 +640 480 +640 426 +480 640 +640 427 +640 427 +640 496 +640 426 +640 426 +640 480 +640 427 +640 499 +640 427 +425 640 +428 640 +640 480 +356 500 +640 427 +640 480 +640 479 +640 439 +640 360 +640 480 +500 500 +640 423 +640 479 +640 427 +640 439 +640 480 +640 427 +640 427 +640 457 +640 428 +640 320 +500 375 +640 480 +426 640 +640 480 +424 640 +480 640 +640 480 +640 480 +640 480 +640 427 +640 480 +640 640 +427 640 +500 375 +640 426 +640 427 +640 480 +640 383 +640 427 +640 427 +640 129 +640 480 +640 427 +640 427 +640 299 +640 437 +640 480 +640 428 +640 476 +332 500 +640 476 +500 335 +300 225 +640 359 +500 375 +640 427 +640 427 +640 480 +640 426 +640 428 +331 640 +427 640 +355 500 +640 406 +500 375 +640 480 +480 640 +640 425 +640 480 +500 375 +427 640 +612 612 +480 640 +480 640 +640 480 +500 375 +640 423 +425 640 +640 480 +500 337 +640 480 +612 612 +640 426 +500 375 +480 640 +640 480 +500 333 +640 480 +500 375 +500 375 +640 480 +640 480 +640 426 +500 377 +640 426 +640 480 +500 333 +640 480 +428 640 +640 637 +289 640 +500 375 +640 569 +640 427 +640 362 +640 540 +640 429 +640 402 +640 480 +480 640 +640 427 +425 640 +640 400 +640 640 +640 449 +375 500 +427 640 +353 500 +640 427 +640 640 +424 640 +640 480 +500 450 +640 501 +640 505 +640 480 +640 427 +640 427 +640 480 +500 286 +427 640 +640 404 +640 480 +375 500 +375 500 +640 249 +640 430 +640 488 +640 434 +640 480 +640 480 +640 480 +640 480 +640 480 +640 438 +640 481 +640 214 +640 427 +640 427 +612 612 +640 480 +640 480 +640 480 +640 424 +348 640 +500 338 +360 640 +640 480 +640 480 +479 640 +640 480 +640 384 +640 498 +640 478 +640 480 +424 640 +640 499 +375 500 +375 500 +640 424 +333 500 +640 553 +640 397 +640 480 +583 640 +424 640 +640 480 +640 427 +640 480 +640 360 +612 612 +640 480 +612 612 +500 333 +640 425 +640 480 +640 363 +640 480 +640 480 +640 404 +640 480 +500 335 +640 427 +640 362 +640 427 +427 640 +478 640 +500 291 +476 640 +424 640 +425 640 +500 333 +640 488 +640 501 +480 640 +640 480 +640 480 +640 480 +335 500 +640 480 +382 640 +640 358 +640 373 +640 427 +640 480 +640 481 +640 480 +640 424 +500 335 +640 480 +462 640 +480 640 +640 480 +480 640 +500 333 +480 640 +640 527 +480 640 +427 640 +640 480 +640 426 +375 500 +640 425 +640 427 +640 480 +640 640 +640 480 +640 427 +333 500 +480 640 +640 480 +640 480 +640 427 +640 428 +457 640 +492 640 +640 483 +347 500 +640 449 +480 640 +640 428 +500 375 +640 436 +640 427 +640 383 +640 426 +640 426 +640 458 +640 426 +640 429 +640 427 +640 640 +640 478 +640 428 +640 600 +383 640 +640 480 +480 640 +500 436 +640 480 +612 612 +640 480 +500 375 +640 427 +640 425 +640 428 +500 375 +640 480 +640 427 +640 480 +640 480 +640 427 +485 640 +500 333 +500 333 +640 480 +612 612 +640 610 +640 427 +480 640 +428 640 +640 480 +640 480 +640 480 +333 500 +640 426 +640 427 +640 435 +640 427 +500 313 +640 480 +640 427 +537 640 +640 427 +640 480 +640 317 +426 640 +480 640 +354 400 +640 353 +640 480 +640 427 +270 640 +640 480 +640 480 +640 480 +500 333 +640 428 +640 480 +640 457 +640 480 +640 360 +500 375 +500 385 +640 480 +640 480 +428 640 +480 640 +333 500 +510 640 +640 359 +480 640 +640 448 +640 359 +640 480 +640 427 +640 480 +640 480 +640 427 +640 428 +640 480 +640 426 +480 640 +640 427 +640 428 +640 480 +640 480 +640 424 +463 640 +640 480 +427 640 +640 478 +410 640 +334 500 +640 428 +480 640 +640 426 +640 640 +480 640 +396 640 +640 480 +640 427 +640 480 +500 334 +640 429 +500 301 +640 478 +640 478 +500 375 +640 427 +640 480 +336 448 +514 640 +640 480 +480 640 +640 415 +478 640 +640 426 +480 640 +640 480 +640 480 +640 480 +426 640 +428 640 +427 640 +640 451 +640 466 +480 360 +488 640 +640 360 +426 640 +640 396 +640 480 +523 640 +640 480 +500 375 +640 427 +426 640 +640 480 +500 334 +640 480 +500 375 +640 480 +640 480 +331 500 +640 468 +640 427 +640 480 +640 427 +640 427 +640 427 +441 640 +640 480 +640 419 +500 375 +640 536 +442 640 +640 480 +612 612 +640 427 +500 375 +640 480 +500 333 +640 480 +375 500 +500 332 +640 427 +640 427 +640 427 +480 640 +480 636 +426 640 +640 426 +640 480 +427 640 +406 640 +640 427 +640 480 +640 427 +478 640 +640 427 +500 500 +462 640 +519 640 +640 383 +640 444 +500 333 +514 640 +640 424 +360 221 +480 640 +450 338 +518 640 +477 640 +640 427 +640 480 +640 480 +612 612 +640 427 +640 480 +500 375 +640 427 +640 480 +640 436 +640 480 +428 640 +427 640 +427 640 +640 427 +480 640 +640 368 +640 428 +640 480 +640 327 +640 640 +500 371 +640 480 +640 427 +500 375 +640 529 +640 427 +640 427 +640 479 +640 425 +640 427 +427 640 +640 640 +480 640 +640 480 +427 640 +500 375 +640 480 +640 426 +640 480 +640 424 +640 428 +478 640 +640 480 +428 640 +640 427 +640 480 +427 640 +640 399 +640 427 +428 640 +640 544 +640 480 +640 427 +640 480 +640 480 +640 535 +640 426 +500 375 +500 375 +640 427 +640 480 +640 425 +500 375 +536 640 +640 427 +500 333 +480 640 +640 491 +640 427 +640 429 +640 333 +640 480 +500 375 +640 480 +640 359 +640 420 +640 360 +640 480 +500 349 +640 427 +375 500 +640 146 +640 426 +640 480 +640 480 +500 367 +640 480 +480 640 +640 426 +640 480 +640 425 +640 425 +640 426 +640 419 +425 640 +427 640 +640 426 +640 480 +640 427 +640 480 +640 424 +339 500 +640 428 +640 480 +640 480 +640 483 +640 328 +600 401 +500 375 +500 375 +300 225 +640 480 +640 427 +500 375 +612 612 +640 480 +640 480 +640 426 +640 640 +640 480 +640 428 +500 375 +640 640 +640 465 +640 640 +640 427 +500 375 +640 473 +500 378 +640 481 +640 424 +640 480 +612 612 +425 640 +427 640 +640 480 +640 427 +640 480 +375 500 +640 512 +640 427 +426 640 +640 425 +428 640 +400 500 +383 640 +640 427 +500 374 +500 373 +500 365 +640 480 +600 399 +640 480 +640 426 +640 360 +640 427 +500 375 +640 425 +640 427 +640 640 +640 480 +640 426 +640 406 +640 408 +480 640 +425 640 +640 480 +640 480 +427 640 +500 350 +480 640 +640 427 +480 640 +428 640 +640 360 +640 341 +640 425 +640 523 +640 480 +427 640 +640 427 +425 640 +640 425 +500 333 +640 425 +500 333 +640 461 +500 375 +640 427 +512 640 +640 426 +635 591 +640 433 +640 427 +640 480 +427 640 +640 446 +640 480 +640 427 +640 360 +640 425 +420 640 +429 640 +624 624 +500 375 +640 480 +640 480 +570 640 +640 640 +640 427 +640 441 +425 640 +375 500 +640 366 +480 640 +640 403 +360 640 +640 381 +640 360 +640 480 +640 480 +640 427 +640 480 +640 433 +640 480 +425 640 +439 640 +480 640 +488 640 +500 375 +640 480 +640 466 +427 640 +640 302 +640 480 +640 480 +640 351 +640 480 +640 480 +333 500 +640 427 +299 409 +640 480 +500 333 +500 375 +640 473 +426 640 +640 425 +640 428 +640 427 +640 427 +426 640 +640 477 +640 480 +339 500 +640 449 +426 640 +612 612 +480 640 +640 478 +612 612 +640 426 +613 640 +640 480 +640 480 +640 361 +640 383 +640 410 +640 480 +640 427 +640 563 +425 640 +640 480 +640 480 +480 640 +640 480 +500 348 +640 427 +500 376 +640 488 +640 480 +480 640 +640 427 +640 427 +350 263 +640 428 +640 367 +500 332 +640 428 +480 640 +480 640 +640 480 +640 425 +640 480 +480 640 +500 375 +359 640 +640 480 +500 375 +640 567 +640 360 +500 375 +640 477 +426 640 +640 480 +640 427 +640 425 +500 392 +640 480 +640 482 +640 500 +640 480 +333 500 +640 427 +500 357 +640 424 +640 426 +480 640 +640 480 +640 426 +640 450 +640 360 +480 640 +480 640 +640 427 +640 393 +640 448 +640 480 +640 480 +480 640 +640 480 +427 640 +640 424 +640 557 +640 360 +640 480 +640 405 +640 480 +640 481 +500 495 +640 428 +640 428 +450 338 +640 408 +640 470 +640 480 +425 640 +640 480 +640 428 +640 480 +480 640 +500 334 +500 375 +640 488 +612 612 +640 379 +640 427 +640 480 +640 613 +489 640 +500 500 +480 640 +640 419 +476 640 +367 640 +640 480 +425 640 +640 427 +640 427 +640 480 +640 427 +640 426 +640 389 +500 332 +640 405 +640 480 +640 480 +500 377 +640 493 +640 480 +640 397 +480 640 +640 427 +640 426 +480 640 +640 360 +622 640 +640 426 +640 427 +640 427 +640 426 +544 640 +640 480 +640 427 +500 377 +640 427 +640 640 +640 480 +640 427 +640 480 +640 464 +612 612 +640 480 +640 522 +640 426 +640 427 +425 640 +500 375 +480 640 +640 377 +640 522 +568 320 +423 640 +500 375 +424 283 +428 640 +425 640 +640 479 +640 480 +640 420 +640 428 +640 480 +480 640 +612 612 +500 333 +640 640 +511 640 +640 429 +640 427 +640 640 +640 425 +640 360 +640 480 +630 640 +640 480 +640 428 +500 375 +640 431 +640 426 +612 612 +568 320 +427 640 +640 426 +640 426 +640 569 +339 500 +480 640 +640 480 +427 640 +640 426 +435 640 +640 536 +640 391 +640 480 +427 640 +640 480 +640 640 +640 427 +480 640 +640 490 +640 613 +640 427 +640 480 +640 427 +640 410 +640 428 +640 428 +640 444 +640 429 +640 480 +500 374 +640 426 +480 640 +640 427 +640 359 +427 640 +640 480 +640 427 +640 473 +500 375 +640 360 +500 375 +474 640 +427 640 +480 640 +640 480 +640 480 +640 480 +405 640 +640 428 +640 360 +414 640 +640 425 +640 269 +640 480 +640 480 +640 426 +640 480 +640 426 +640 400 +640 480 +640 480 +427 640 +640 480 +640 480 +640 480 +640 494 +640 411 +640 480 +375 500 +640 480 +640 461 +640 429 +640 480 +500 500 +500 333 +500 375 +640 427 +640 480 +640 480 +640 421 +640 426 +428 640 +640 481 +640 426 +640 480 +640 427 +627 640 +428 640 +640 414 +640 638 +500 375 +428 640 +161 240 +374 500 +480 640 +640 486 +500 375 +480 640 +640 141 +480 640 +640 424 +612 612 +500 333 +480 640 +428 640 +501 640 +480 640 +640 431 +500 334 +640 426 +640 427 +500 500 +640 480 +640 426 +447 640 +500 375 +640 478 +640 573 +640 427 +640 480 +640 419 +500 375 +640 480 +640 480 +543 640 +612 612 +640 480 +500 334 +500 334 +640 427 +640 427 +640 590 +612 612 +480 360 +640 541 +640 495 +640 480 +480 640 +640 425 +500 375 +640 427 +640 428 +640 480 +633 640 +376 500 +478 640 +640 425 +640 480 +640 480 +640 426 +375 500 +640 427 +640 427 +480 640 +375 500 +640 443 +640 425 +640 640 +375 500 +640 521 +640 521 +500 375 +500 375 +640 406 +640 427 +640 427 +640 429 +640 480 +640 480 +427 640 +640 429 +480 640 +640 428 +640 393 +640 480 +640 606 +612 612 +480 640 +500 333 +480 640 +480 640 +334 500 +640 427 +480 640 +640 427 +640 401 +426 640 +500 332 +640 428 +640 480 +500 327 +640 480 +640 480 +612 612 +375 500 +640 427 +640 426 +640 480 +427 640 +640 427 +640 427 +640 480 +640 518 +640 480 +500 464 +375 500 +640 480 +640 480 +500 500 +564 640 +500 375 +427 640 +427 640 +640 427 +640 480 +640 376 +640 480 +640 480 +500 375 +500 336 +640 433 +640 480 +640 425 +425 640 +640 480 +427 640 +640 480 +640 480 +640 359 +640 480 +480 640 +612 612 +640 427 +640 427 +640 480 +640 426 +640 425 +640 480 +640 480 +382 640 +640 427 +640 480 +375 500 +640 480 +640 411 +350 500 +640 640 +640 426 +640 429 +426 640 +640 480 +640 425 +640 480 +500 269 +640 412 +640 427 +640 427 +493 500 +640 428 +640 480 +640 427 +500 461 +640 427 +500 333 +640 480 +640 480 +426 640 +640 427 +640 480 +640 480 +640 427 +498 640 +640 457 +640 436 +640 640 +640 480 +500 375 +640 427 +640 480 +500 375 +500 334 +640 427 +640 299 +480 640 +428 640 +640 426 +382 640 +427 640 +640 428 +640 640 +640 427 +640 426 +320 480 +640 424 +640 346 +500 375 +640 480 +640 480 +640 427 +640 431 +424 284 +640 480 +640 500 +640 480 +640 400 +427 640 +427 640 +426 640 +640 428 +640 480 +480 640 +500 333 +488 640 +640 426 +333 500 +640 469 +640 480 +500 333 +640 638 +500 375 +640 426 +640 427 +640 360 +350 500 +480 640 +375 500 +480 640 +640 480 +640 602 +640 427 +640 480 +640 480 +640 402 +640 427 +640 392 +612 612 +640 480 +640 480 +598 397 +640 480 +640 480 +332 500 +640 480 +640 480 +640 425 +426 640 +640 480 +640 480 +640 480 +640 427 +640 480 +640 480 +500 487 +640 480 +500 375 +640 427 +480 640 +640 478 +500 375 +640 480 +640 478 +427 640 +640 480 +640 473 +640 478 +480 640 +427 640 +640 480 +640 576 +640 427 +640 424 +640 407 +301 388 +331 500 +375 500 +640 480 +640 424 +640 400 +640 480 +640 427 +640 427 +640 426 +500 375 +640 481 +510 640 +640 480 +640 427 +640 427 +500 363 +500 333 +640 349 +640 401 +375 500 +571 640 +640 428 +500 400 +640 478 +640 480 +640 480 +640 483 +640 426 +640 480 +640 457 +640 425 +480 640 +612 612 +640 444 +500 416 +480 640 +640 486 +640 427 +640 480 +480 640 +640 480 +479 640 +448 640 +640 428 +640 480 +500 333 +640 480 +640 426 +640 480 +640 426 +640 480 +450 300 +640 459 +500 334 +640 424 +500 375 +640 429 +640 426 +640 442 +333 500 +640 480 +500 369 +640 480 +640 427 +640 480 +640 480 +480 640 +500 400 +640 480 +640 427 +640 428 +640 426 +640 457 +640 331 +640 427 +640 425 +640 480 +640 480 +640 480 +640 425 +340 500 +640 480 +640 624 +427 640 +640 430 +640 360 +640 480 +326 500 +640 426 +640 427 +640 427 +640 451 +640 427 +640 512 +640 361 +640 480 +640 299 +375 500 +427 640 +384 640 +640 480 +640 480 +375 500 +640 480 +500 332 +640 428 +640 410 +480 640 +640 427 +640 427 +640 480 +640 426 +640 427 +640 380 +428 640 +500 375 +500 333 +640 427 +480 640 +426 640 +640 427 +640 424 +640 426 +640 314 +640 424 +640 439 +640 399 +640 480 +428 640 +480 640 +427 640 +640 480 +500 375 +640 426 +640 427 +640 429 +500 454 +640 480 +640 480 +640 480 +390 640 +320 239 +640 425 +640 427 +640 426 +640 429 +451 500 +480 640 +480 640 +375 500 +413 640 +640 444 +480 640 +640 256 +640 480 +431 640 +640 480 +640 426 +640 480 +335 500 +640 423 +640 374 +427 640 +427 640 +640 355 +480 640 +480 640 +640 426 +640 427 +640 427 +640 480 +480 360 +640 480 +640 488 +500 375 +425 640 +640 480 +480 640 +640 425 +640 360 +640 480 +640 640 +640 470 +640 427 +500 375 +500 333 +640 480 +640 430 +500 375 +480 640 +500 286 +640 417 +612 612 +480 640 +640 427 +640 480 +498 640 +545 640 +640 353 +428 640 +427 640 +640 423 +500 375 +640 466 +640 561 +640 480 +640 480 +513 640 +640 480 +438 608 +640 480 +640 479 +527 640 +375 500 +479 640 +480 640 +640 576 +500 334 +640 421 +640 427 +375 500 +640 427 +333 500 +480 640 +640 427 +640 480 +640 427 +640 480 +640 426 +640 480 +640 427 +640 426 +640 432 +640 426 +640 480 +480 640 +427 640 +640 480 +640 480 +600 600 +360 480 +640 480 +640 427 +640 428 +608 640 +640 424 +640 480 +640 429 +555 640 +640 428 +640 427 +500 375 +478 640 +640 480 +640 481 +640 480 +640 480 +335 500 +500 447 +640 509 +640 457 +640 425 +640 480 +640 480 +640 428 +640 480 +640 425 +500 334 +640 427 +640 426 +380 500 +640 425 +640 480 +480 640 +640 480 +640 498 +640 480 +640 480 +493 640 +640 426 +640 480 +612 612 +500 375 +640 480 +640 426 +640 433 +640 480 +640 480 +640 480 +640 427 +640 360 +500 375 +640 428 +480 640 +640 480 +548 640 +640 426 +640 480 +640 480 +640 481 +640 476 +480 640 +500 333 +640 360 +640 480 +640 429 +640 426 +640 480 +612 612 +500 375 +481 640 +480 640 +375 500 +640 427 +640 510 +500 375 +640 458 +480 640 +640 480 +640 427 +600 600 +480 640 +640 429 +233 311 +551 640 +640 640 +640 428 +640 481 +640 480 +478 640 +500 333 +640 427 +438 640 +640 424 +640 420 +640 480 +640 480 +426 640 +640 478 +480 640 +425 640 +640 366 +500 385 +640 360 +640 480 +480 640 +550 378 +640 480 +640 428 +640 480 +640 424 +640 480 +480 640 +428 640 +427 640 +640 480 +640 480 +640 449 +500 467 +640 480 +640 480 +500 333 +640 480 +640 428 +640 480 +640 426 +480 640 +640 480 +640 479 +640 428 +640 427 +640 620 +640 480 +480 640 +640 480 +632 640 +640 427 +640 480 +640 426 +426 640 +640 480 +640 428 +469 640 +375 500 +640 480 +640 427 +640 480 +640 425 +375 500 +640 521 +333 500 +640 480 +640 360 +640 480 +500 375 +500 375 +640 426 +640 480 +640 426 +640 480 +427 640 +640 480 +500 347 +640 480 +640 427 +640 425 +375 500 +640 480 +480 640 +500 488 +375 500 +640 441 +500 333 +640 424 +480 640 +333 500 +629 640 +640 618 +478 640 +500 375 +640 480 +612 612 +640 360 +480 640 +500 375 +640 431 +640 427 +640 427 +640 612 +448 336 +640 427 +640 427 +640 408 +640 427 +640 427 +640 428 +640 480 +640 428 +640 480 +640 459 +640 360 +425 640 +480 640 +424 640 +500 375 +640 480 +333 500 +640 480 +640 397 +480 640 +640 480 +640 480 +640 425 +427 640 +640 427 +357 500 +640 480 +480 640 +480 640 +500 375 +500 375 +640 640 +640 429 +640 426 +640 480 +640 480 +427 640 +640 360 +640 480 +640 434 +640 427 +538 640 +640 428 +640 480 +640 480 +640 480 +480 640 +640 427 +500 474 +406 640 +423 640 +640 480 +640 423 +640 480 +640 427 +640 430 +500 383 +455 640 +600 400 +640 428 +640 480 +500 429 +640 426 +640 480 +426 640 +640 457 +640 390 +500 321 +640 480 +640 391 +479 640 +640 427 +640 429 +500 375 +640 480 +640 480 +640 640 +640 492 +640 480 +640 424 +640 360 +375 500 +500 239 +640 480 +375 500 +640 387 +480 640 +640 406 +640 427 +640 441 +640 409 +640 480 +640 480 +640 480 +424 640 +640 360 +640 427 +500 335 +500 375 +640 480 +640 480 +640 491 +640 428 +640 426 +640 256 +640 476 +640 403 +427 640 +640 480 +640 480 +427 640 +500 374 +427 640 +500 375 +438 640 +640 425 +478 640 +640 463 +640 346 +445 640 +620 413 +640 427 +500 375 +524 640 +640 478 +640 480 +640 480 +612 612 +640 480 +640 480 +640 428 +500 333 +640 569 +640 480 +640 480 +480 640 +407 640 +640 426 +612 612 +640 427 +415 640 +488 640 +640 480 +640 480 +640 480 +640 360 +640 502 +640 640 +640 480 +640 427 +640 438 +640 480 +428 640 +640 480 +640 640 +640 480 +640 536 +596 391 +640 427 +411 640 +640 427 +427 640 +640 480 +500 375 +640 300 +640 480 +500 333 +612 612 +640 480 +425 640 +500 334 +500 375 +640 480 +640 480 +640 359 +426 640 +500 375 +640 424 +640 427 +640 427 +640 426 +640 480 +640 480 +640 480 +640 424 +500 375 +640 427 +640 480 +640 480 +640 480 +640 480 +640 480 +640 432 +640 427 +640 427 +640 480 +640 170 +500 364 +640 480 +640 480 +459 500 +333 500 +640 426 +480 640 +640 427 +640 427 +640 424 +640 480 +640 427 +640 427 +394 640 +640 427 +640 480 +640 427 +640 457 +640 513 +500 375 +640 480 +640 480 +424 640 +640 426 +640 429 +500 375 +640 428 +640 485 +480 640 +640 428 +500 375 +332 500 +640 400 +640 448 +500 375 +640 480 +640 427 +480 640 +640 420 +518 640 +640 426 +500 335 +640 480 +640 427 +500 375 +333 500 +640 480 +640 569 +480 640 +640 427 +640 433 +640 426 +320 400 +640 480 +640 427 +640 429 +640 480 +640 478 +640 480 +640 480 +640 480 +640 480 +472 640 +640 451 +640 425 +640 452 +612 612 +500 329 +640 480 +480 640 +640 480 +640 480 +640 478 +640 427 +334 500 +640 426 +428 640 +640 428 +640 427 +640 429 +640 434 +640 640 +640 480 +640 424 +640 427 +448 640 +480 640 +480 640 +480 640 +640 480 +500 370 +427 640 +640 424 +640 480 +569 640 +259 387 +640 480 +640 426 +640 425 +500 420 +640 427 +640 428 +640 427 +640 457 +640 359 +640 360 +389 500 +640 428 +640 427 +421 640 +640 480 +640 401 +480 640 +640 426 +360 640 +480 640 +480 640 +640 480 +640 480 +640 480 +375 500 +640 480 +479 640 +640 533 +640 428 +640 480 +640 426 +640 509 +426 640 +480 640 +640 480 +640 480 +640 427 +426 640 +640 425 +640 427 +500 375 +640 480 +423 640 +640 427 +640 428 +479 640 +480 640 +640 423 +426 640 +500 374 +428 640 +640 424 +640 428 +640 424 +640 480 +612 612 +500 333 +640 640 +500 345 +480 640 +640 464 +640 426 +640 480 +640 427 +640 374 +427 640 +640 428 +640 360 +640 640 +640 428 +640 481 +640 360 +640 480 +609 530 +428 640 +640 480 +640 427 +640 425 +640 480 +640 427 +480 640 +640 426 +640 389 +500 375 +640 427 +427 640 +640 480 +640 480 +332 500 +336 500 +640 427 +640 480 +640 316 +640 483 +425 640 +399 640 +640 480 +480 640 +640 640 +480 640 +640 427 +640 428 +640 423 +160 120 +640 480 +640 360 +640 480 +640 427 +500 421 +480 640 +425 640 +640 594 +640 480 +640 512 +500 243 +640 480 +500 375 +640 480 +640 427 +480 640 +640 426 +640 424 +639 640 +518 640 +640 479 +426 640 +640 430 +640 427 +640 466 +640 480 +640 480 +640 427 +427 640 +612 612 +480 640 +640 474 +500 375 +640 480 +640 480 +640 375 +640 473 +350 262 +640 427 +432 640 +472 640 +640 478 +640 427 +640 436 +640 427 +640 480 +640 428 +500 375 +427 640 +640 360 +427 640 +604 640 +640 480 +480 640 +640 427 +640 640 +478 640 +640 480 +640 426 +640 484 +640 427 +640 431 +640 477 +500 375 +640 480 +500 333 +500 375 +640 414 +480 640 +426 640 +427 640 +640 480 +500 333 +640 480 +500 333 +640 427 +640 480 +640 357 +428 640 +640 427 +640 480 +427 640 +640 427 +640 573 +640 427 +500 375 +490 500 +640 319 +640 480 +478 640 +640 469 +640 480 +500 313 +640 480 +480 640 +500 375 +640 218 +480 640 +640 426 +640 427 +640 427 +640 480 +480 640 +640 479 +640 428 +640 480 +480 640 +640 499 +427 640 +457 640 +640 361 +500 375 +640 417 +500 324 +640 480 +640 480 +640 427 +640 427 +640 425 +640 480 +364 500 +640 480 +640 640 +640 427 +640 425 +279 640 +480 640 +640 451 +640 331 +640 427 +478 640 +503 640 +640 480 +640 485 +426 640 +335 500 +640 479 +640 480 +640 480 +640 494 +640 474 +640 480 +640 359 +640 425 +480 640 +480 640 +640 526 +640 482 +640 480 +640 480 +640 427 +458 640 +640 404 +500 375 +640 427 +640 480 +500 356 +640 426 +640 480 +640 426 +500 375 +640 417 +640 435 +640 495 +640 427 +500 333 +640 480 +283 640 +640 480 +425 640 +640 425 +640 427 +640 398 +640 480 +640 480 +640 480 +640 424 +375 500 +500 341 +640 480 +480 640 +640 480 +640 427 +640 360 +640 426 +640 427 +640 360 +640 413 +640 480 +640 437 +640 480 +427 640 +513 640 +640 480 +640 480 +640 480 +640 425 +640 427 +404 342 +640 490 +640 426 +426 640 +392 640 +612 612 +333 500 +640 427 +640 429 +640 427 +640 480 +640 480 +640 424 +500 500 +480 640 +426 640 +640 425 +480 640 +640 427 +640 480 +480 640 +640 640 +640 480 +640 408 +500 334 +640 425 +480 640 +640 640 +448 640 +480 640 +500 375 +640 427 +640 427 +640 427 +640 480 +500 375 +640 480 +640 480 +640 427 +640 427 +640 425 +640 426 +640 425 +480 640 +640 480 +640 428 +640 480 +612 612 +523 640 +640 427 +612 612 +640 427 +500 332 +640 510 +640 424 +640 427 +480 640 +612 612 +480 640 +500 369 +427 640 +640 424 +640 427 +640 384 +427 640 +640 427 +640 480 +640 424 +640 480 +640 480 +500 333 +500 333 +640 480 +347 500 +500 375 +426 640 +500 375 +640 480 +476 376 +500 345 +375 500 +640 480 +480 640 +383 588 +640 427 +640 480 +452 640 +640 427 +640 480 +640 427 +640 480 +480 640 +640 480 +640 480 +427 640 +640 480 +640 480 +640 427 +640 564 +427 640 +426 640 +427 640 +640 392 +427 640 +640 425 +640 427 +640 427 +640 384 +640 427 +426 640 +640 427 +640 427 +640 584 +612 612 +480 640 +640 427 +640 480 +640 418 +453 640 +640 427 +640 480 +500 375 +427 640 +640 480 +640 360 +640 427 +640 427 +612 612 +640 427 +463 640 +500 375 +640 427 +640 480 +640 427 +640 359 +640 426 +480 640 +640 480 +640 480 +640 427 +464 640 +640 426 +640 427 +640 427 +640 424 +640 303 +640 419 +640 480 +640 480 +640 425 +500 375 +640 481 +640 476 +640 301 +480 640 +500 376 +640 480 +640 428 +640 428 +640 427 +640 480 +640 426 +383 640 +427 640 +640 426 +640 463 +500 375 +640 480 +480 640 +500 318 +640 583 +480 640 +640 427 +480 640 +427 640 +640 427 +640 425 +640 480 +500 375 +640 480 +480 640 +640 426 +640 360 +640 512 +640 428 +640 480 +500 375 +640 360 +640 480 +640 427 +340 500 +500 333 +427 640 +640 480 +640 480 +640 480 +427 640 +480 640 +640 396 +600 393 +640 427 +612 612 +480 640 +640 427 +640 480 +640 448 +640 427 +640 480 +640 478 +640 428 +640 188 +640 428 +500 426 +640 427 +480 640 +640 480 +640 426 +640 457 +640 480 +480 640 +640 481 +480 640 +640 427 +640 503 +640 427 +640 449 +640 480 +640 480 +640 469 +500 389 +640 426 +500 375 +640 427 +426 640 +480 640 +640 383 +640 425 +565 640 +640 480 +640 559 +640 480 +460 640 +640 480 +640 480 +640 480 +480 640 +640 428 +640 480 +640 427 +500 248 +357 500 +640 480 +640 480 +333 500 +480 360 +500 333 +640 564 +640 426 +480 640 +640 480 +640 480 +640 427 +640 426 +640 480 +426 640 +640 427 +425 640 +640 438 +640 427 +640 480 +640 480 +640 480 +480 640 +438 640 +426 640 +640 426 +640 411 +640 363 +500 375 +640 400 +640 509 +500 489 +640 427 +640 480 +500 333 +640 360 +500 332 +640 480 +640 396 +640 426 +640 480 +640 427 +640 427 +640 480 +500 375 +640 361 +640 427 +612 612 +213 640 +640 427 +427 640 +640 480 +640 480 +640 427 +375 500 +375 500 +640 480 +485 640 +640 388 +640 480 +500 375 +480 640 +480 640 +640 427 +640 427 +500 333 +612 612 +640 480 +640 427 +500 400 +640 426 +640 419 +640 426 +359 640 +500 332 +640 426 +640 480 +640 429 +640 360 +640 427 +640 426 +426 640 +427 640 +640 480 +640 480 +335 500 +640 486 +480 640 +427 640 +480 640 +640 424 +640 480 +640 480 +640 480 +640 548 +425 640 +640 480 +500 375 +640 426 +640 426 +640 426 +480 640 +640 426 +375 500 +640 427 +640 462 +640 451 +640 480 +640 480 +640 425 +612 612 +640 427 +640 426 +427 640 +640 426 +640 427 +640 610 +640 480 +480 640 +640 426 +640 480 +640 426 +480 640 +640 427 +640 477 +640 480 +640 480 +500 338 +640 458 +640 480 +640 359 +120 160 +640 481 +500 375 +426 640 +427 640 +500 400 +500 335 +640 427 +500 334 +640 425 +640 480 +640 480 +500 375 +640 480 +640 424 +400 500 +375 500 +480 640 +515 640 +480 640 +480 640 +640 480 +640 480 +640 480 +640 480 +640 480 +375 500 +480 640 +640 479 +200 189 +457 640 +640 480 +640 439 +500 322 +500 375 +480 640 +640 480 +640 480 +640 480 +427 640 +640 427 +640 480 +427 640 +500 324 +640 480 +640 480 +434 640 +640 265 +640 480 +640 425 +427 640 +640 427 +640 480 +640 480 +640 573 +640 480 +375 500 +640 428 +500 375 +640 480 +640 427 +473 640 +640 428 +480 640 +640 426 +640 306 +640 478 +640 427 +640 427 +427 640 +640 424 +512 640 +640 427 +579 640 +449 640 +427 640 +640 468 +640 480 +640 480 +640 425 +480 640 +640 480 +640 427 +640 640 +375 500 +640 428 +640 427 +640 480 +640 361 +640 480 +500 370 +640 428 +427 640 +640 480 +375 500 +640 480 +640 427 +640 478 +640 480 +640 427 +640 480 +640 425 +500 335 +640 493 +500 375 +640 426 +500 333 +640 480 +461 640 +500 375 +640 480 +640 480 +640 480 +640 480 +612 612 +640 480 +640 424 +640 427 +640 480 +500 375 +640 324 +640 429 +427 640 +528 363 +500 333 +640 512 +480 640 +640 480 +500 375 +640 480 +480 640 +640 480 +480 640 +640 480 +640 427 +640 450 +640 424 +640 480 +482 640 +640 480 +480 640 +640 427 +338 450 +640 425 +640 544 +640 427 +640 428 +640 480 +640 478 +500 375 +640 480 +640 427 +640 480 +640 480 +500 375 +480 640 +640 428 +640 479 +480 640 +375 500 +500 388 +480 640 +640 480 +640 427 +640 360 +640 480 +640 424 +640 396 +640 427 +120 160 +640 457 +640 480 +458 640 +640 425 +640 480 +640 480 +640 360 +640 480 +480 640 +480 640 +640 434 +640 480 +480 640 +640 429 +640 427 +464 500 +640 543 +640 428 +640 411 +640 427 +640 360 +640 528 +640 443 +640 480 +640 480 +640 424 +640 410 +500 333 +512 640 +500 346 +640 480 +640 480 +428 640 +640 429 +640 427 +640 480 +640 439 +500 375 +640 426 +640 480 +640 480 +640 427 +500 423 +640 427 +640 427 +640 424 +640 480 +640 360 +500 333 +640 480 +640 427 +640 384 +425 640 +640 480 +640 480 +640 481 +640 426 +426 640 +480 640 +427 640 +640 427 +478 640 +640 341 +640 395 +640 480 +500 333 +640 427 +500 436 +640 360 +480 640 +500 428 +640 427 +640 560 +640 427 +640 480 +640 481 +640 427 +640 481 +612 612 +427 640 +640 480 +640 394 +640 360 +640 427 +427 640 +640 480 +360 640 +375 500 +640 429 +640 426 +640 480 +640 360 +480 640 +640 383 +640 427 +640 480 +427 640 +640 427 +480 640 +640 480 +480 640 +425 640 +640 480 +612 612 +640 453 +640 425 +426 640 +640 480 +640 480 +640 361 +640 427 +640 480 +640 480 +428 640 +640 480 +640 640 +425 640 +640 428 +640 478 +640 426 +500 333 +500 488 +640 285 +500 326 +640 360 +640 480 +640 428 +640 480 +428 640 +640 524 +640 488 +640 480 +612 612 +450 338 +640 428 +640 426 +526 640 +640 428 +483 640 +640 480 +640 426 +640 427 +640 480 +640 480 +640 480 +640 427 +640 480 +640 480 +640 427 +640 427 +640 571 +640 427 +640 480 +640 427 +640 480 +640 425 +375 500 +640 428 +609 407 +333 500 +640 427 +500 333 +640 640 +433 640 +640 480 +640 392 +640 360 +640 480 +427 640 +480 268 +640 480 +500 281 +600 450 +500 393 +640 480 +478 640 +640 426 +640 413 +640 480 +640 427 +640 425 +640 480 +640 480 +640 427 +443 640 +640 480 +424 640 +640 427 +640 426 +640 632 +640 397 +500 375 +640 426 +640 480 +640 480 +640 428 +500 332 +640 427 +640 427 +640 480 +640 399 +414 640 +612 612 +640 424 +433 640 +640 418 +428 640 +480 640 +426 640 +375 500 +480 640 +640 426 +334 500 +640 480 +481 640 +640 500 +320 240 +640 427 +500 333 +500 333 +427 640 +640 480 +640 480 +640 427 +336 500 +480 640 +640 480 +640 425 +640 480 +500 375 +640 427 +457 640 +640 441 +640 427 +640 481 +640 426 +640 480 +640 427 +612 612 +478 640 +640 427 +500 333 +640 480 +640 428 +640 428 +640 460 +640 480 +500 333 +480 640 +640 633 +640 640 +457 640 +480 640 +500 466 +500 375 +640 425 +500 375 +500 375 +427 640 +640 512 +500 333 +640 427 +640 428 +640 480 +640 426 +640 480 +426 640 +640 427 +640 426 +640 427 +500 282 +640 428 +425 640 +479 640 +640 427 +427 640 +424 640 +448 640 +640 480 +640 480 +640 430 +344 500 +500 375 +640 330 +640 427 +640 445 +640 480 +481 640 +640 480 +640 426 +640 427 +640 427 +640 431 +640 427 +640 425 +640 425 +640 480 +640 493 +500 375 +575 640 +640 480 +640 426 +640 426 +640 428 +640 480 +640 401 +480 640 +640 480 +640 640 +612 612 +427 640 +640 489 +446 640 +480 640 +640 480 +427 640 +640 427 +428 640 +640 478 +379 500 +640 428 +640 429 +640 475 +640 428 +375 500 +490 500 +640 480 +640 426 +425 640 +480 640 +426 640 +595 640 +640 480 +640 480 +500 333 +640 480 +640 424 +640 480 +640 478 +480 640 +640 480 +640 480 +640 428 +640 419 +640 480 +640 468 +640 480 +640 428 +640 427 +480 640 +640 480 +640 478 +640 426 +640 425 +640 640 +480 640 +640 480 +640 427 +424 640 +640 427 +640 472 +640 480 +640 426 +640 480 +480 640 +640 640 +480 640 +425 640 +640 480 +640 431 +640 428 +640 439 +425 640 +480 640 +640 480 +640 601 +640 428 +612 612 +640 480 +640 425 +640 480 +640 424 +508 640 +640 426 +640 499 +640 480 +640 480 +640 480 +640 334 +612 612 +427 640 +640 427 +640 426 +444 640 +640 428 +640 428 +500 342 +640 356 +640 427 +640 480 +640 480 +640 427 +640 480 +612 612 +375 500 +640 480 +640 480 +450 640 +640 427 +640 277 +640 480 +640 620 +426 640 +480 640 +640 480 +541 640 +500 361 +640 480 +640 427 +425 640 +640 427 +332 500 +640 244 +640 480 +640 480 +640 426 +480 640 +640 362 +640 424 +489 640 +640 452 +640 513 +640 512 +640 427 +640 480 +640 480 +640 429 +640 427 +640 427 +640 424 +640 427 +479 640 +640 480 +640 480 +500 375 +612 612 +480 640 +480 640 +640 480 +500 325 +640 480 +640 427 +640 425 +425 640 +640 480 +612 612 +640 425 +640 432 +640 427 +640 427 +479 640 +428 640 +500 334 +640 480 +640 480 +427 640 +480 640 +640 427 +426 640 +640 428 +640 430 +500 375 +640 480 +640 480 +640 427 +612 612 +229 123 +640 426 +500 380 +640 480 +640 360 +481 640 +640 451 +457 640 +640 480 +375 500 +500 334 +640 428 +500 375 +640 430 +640 480 +640 427 +640 480 +640 634 +612 612 +480 640 +426 640 +500 333 +640 480 +640 480 +640 426 +640 480 +500 375 +480 640 +375 500 +640 480 +480 640 +640 458 +640 426 +424 640 +426 640 +640 424 +612 612 +640 427 +640 424 +640 427 +497 640 +640 427 +640 480 +640 446 +640 443 +640 427 +640 640 +500 333 +640 360 +640 426 +333 500 +640 426 +640 427 +612 612 +500 375 +612 612 +640 427 +480 640 +500 333 +640 480 +640 480 +640 421 +640 480 +640 480 +640 480 +500 375 +640 427 +500 375 +640 350 +611 640 +478 640 +332 500 +500 316 +640 480 +640 510 +640 427 +640 480 +640 427 +640 486 +340 470 +480 640 +480 640 +427 640 +640 426 +640 590 +640 480 +640 480 +640 428 +640 427 +500 375 +427 640 +640 458 +640 583 +500 375 +640 480 +500 375 +640 400 +640 425 +640 480 +500 333 +640 408 +640 427 +427 640 +339 500 +275 183 +375 500 +640 478 +640 478 +425 640 +384 640 +640 478 +640 425 +500 345 +640 427 +640 427 +480 640 +500 375 +640 428 +640 418 +640 480 +640 480 +426 640 +640 480 +426 640 +640 640 +391 640 +500 375 +640 480 +640 424 +640 478 +519 640 +551 640 +500 375 +640 480 +612 612 +640 426 +480 640 +500 334 +640 480 +640 640 +402 500 +640 480 +612 612 +500 333 +500 286 +432 640 +640 362 +640 480 +640 480 +640 427 +640 428 +640 426 +640 427 +500 332 +640 428 +426 640 +612 612 +333 500 +640 427 +640 640 +640 480 +640 480 +500 375 +640 457 +500 334 +640 427 +500 500 +640 424 +480 640 +480 640 +640 358 +640 480 +640 480 +500 375 +640 480 +500 447 +311 500 +480 640 +640 359 +640 480 +640 228 +640 480 +640 469 +640 480 +500 375 +427 640 +640 360 +640 427 +640 475 +640 480 +640 480 +640 481 +500 375 +640 440 +640 640 +500 375 +428 640 +640 427 +640 480 +640 425 +640 500 +640 427 +640 427 +640 446 +500 375 +640 480 +424 640 +640 480 +500 353 +640 360 +640 433 +424 640 +640 427 +480 640 +640 480 +596 640 +480 640 +640 480 +640 480 +640 427 +640 480 +478 640 +640 360 +640 457 +640 429 +285 340 +640 426 +640 440 +446 640 +640 480 +640 480 +640 426 +480 640 +640 640 +640 480 +640 427 +640 480 +480 640 +640 428 +375 500 +640 480 +640 423 +500 375 +640 480 +640 478 +476 640 +640 480 +640 640 +640 443 +480 640 +640 513 +640 480 +500 325 +640 480 +358 640 +423 640 +640 360 +640 395 +599 640 +640 425 +640 480 +640 607 +640 480 +640 480 +480 640 +427 640 +634 640 +640 480 +500 400 +640 425 +640 428 +640 480 +640 480 +640 480 +640 425 +640 383 +640 360 +640 480 +640 480 +640 425 +640 480 +600 376 +640 427 +480 640 +640 424 +612 612 +640 426 +640 425 +640 480 +480 640 +640 425 +500 408 +640 424 +500 284 +640 481 +640 427 +640 428 +640 478 +640 480 +640 480 +640 427 +480 640 +427 640 +640 480 +428 640 +500 283 +640 441 +640 426 +640 418 +640 427 +480 640 +640 426 +640 426 +640 480 +640 442 +640 427 +640 426 +640 419 +640 480 +640 478 +640 476 +640 427 +640 426 +399 640 +640 361 +640 426 +640 427 +427 640 +640 459 +640 480 +640 360 +333 500 +428 640 +640 480 +640 441 +428 640 +480 640 +640 480 +427 640 +640 480 +640 426 +333 500 +640 480 +640 526 +640 480 +486 640 +423 640 +640 361 +427 640 +640 480 +640 480 +640 425 +640 428 +640 428 +640 480 +640 427 +480 640 +379 279 +480 640 +640 506 +640 480 +640 513 +640 458 +333 500 +640 429 +640 360 +640 427 +500 375 +640 480 +500 332 +612 612 +640 480 +640 476 +640 374 +500 394 +640 480 +427 640 +640 427 +640 425 +430 640 +425 640 +640 410 +429 640 +640 424 +480 640 +640 427 +640 425 +640 640 +640 360 +640 427 +640 490 +500 375 +333 500 +640 517 +640 480 +640 427 +500 350 +400 500 +640 480 +500 338 +640 433 +640 388 +426 640 +640 348 +640 480 +640 492 +640 481 +640 318 +640 427 +427 640 +640 425 +640 480 +640 513 +500 332 +480 640 +640 640 +640 480 +640 444 +640 616 +640 480 +500 333 +500 408 +500 411 +640 480 +640 360 +480 640 +640 427 +640 433 +640 427 +640 426 +479 640 +480 640 +480 640 +426 640 +640 430 +640 427 +480 640 +640 426 +640 369 +640 480 +375 500 +640 480 +640 425 +504 640 +640 480 +640 480 +640 426 +640 430 +640 480 +500 400 +640 427 +640 480 +640 427 +640 489 +640 360 +427 640 +640 480 +640 480 +640 480 +350 219 +640 480 +640 413 +640 480 +640 401 +425 640 +640 425 +640 480 +640 427 +640 414 +640 424 +640 480 +425 640 +640 285 +640 480 +640 322 +640 427 +640 427 +640 427 +640 428 +640 457 +640 480 +500 391 +640 404 +640 611 +640 390 +513 640 +640 360 +640 496 +640 480 +640 427 +640 427 +640 480 +500 234 +640 425 +640 360 +424 640 +640 512 +640 427 +640 426 +640 427 +640 480 +500 374 +640 428 +640 526 +640 428 +640 480 +426 640 +640 427 +611 640 +640 383 +640 457 +640 427 +640 382 +640 427 +640 426 +640 480 +640 477 +375 500 +478 640 +640 480 +640 480 +500 400 +640 461 +640 480 +640 417 +640 425 +427 640 +640 439 +480 640 +640 640 +427 640 +612 612 +464 640 +640 427 +480 640 +640 360 +640 480 +640 428 +640 425 +640 543 +640 426 +640 423 +640 426 +640 319 +500 375 +640 427 +432 500 +375 500 +640 441 +426 640 +640 406 +640 426 +640 480 +480 640 +640 480 +640 424 +640 428 +640 427 +640 461 +426 640 +500 375 +640 480 +640 428 +640 480 +500 375 +640 426 +640 640 +480 640 +640 427 +375 500 +500 333 +640 480 +375 500 +480 640 +500 334 +640 480 +640 427 +640 424 +640 426 +640 628 +640 491 +640 426 +640 427 +480 640 +640 480 +640 425 +640 424 +640 427 +640 427 +640 480 +640 513 +640 426 +640 480 +640 427 +640 461 +640 425 +640 598 +640 361 +640 480 +640 427 +500 317 +640 480 +640 519 +640 480 +640 427 +500 375 +640 480 +425 640 +640 427 +426 640 +480 640 +480 640 +640 427 +640 427 +457 640 +640 359 +640 355 +640 480 +640 427 +426 640 +640 427 +427 640 +640 428 +640 426 +500 334 +425 640 +640 480 +640 480 +640 480 +500 334 +500 344 +640 640 +640 480 +640 480 +640 423 +640 480 +333 500 +640 426 +640 427 +500 375 +480 640 +640 508 +640 480 +500 375 +600 600 +640 480 +385 500 +434 640 +640 480 +480 640 +426 640 +640 427 +640 512 +512 640 +640 427 +427 640 +640 474 +640 426 +480 640 +640 426 +500 375 +427 640 +475 640 +640 360 +640 480 +640 427 +640 479 +375 500 +640 427 +640 457 +394 500 +640 422 +500 375 +640 480 +640 480 +427 640 +640 427 +640 498 +640 480 +480 640 +640 374 +640 480 +500 412 +500 335 +640 439 +640 516 +640 427 +640 426 +402 500 +500 364 +500 333 +640 480 +438 640 +425 640 +493 500 +480 640 +640 426 +640 640 +640 349 +640 480 +427 640 +640 480 +640 512 +400 400 +375 500 +640 427 +640 424 +500 375 +640 426 +640 429 +640 427 +640 426 +480 640 +500 375 +640 428 +640 480 +427 640 +640 428 +640 480 +640 427 +640 480 +500 372 +640 480 +640 480 +640 480 +640 360 +640 480 +640 480 +640 427 +640 426 +640 480 +640 640 +640 424 +640 480 +640 427 +640 169 +427 640 +640 478 +640 427 +462 308 +426 640 +640 361 +640 427 +500 232 +640 427 +640 457 +640 427 +500 375 +640 427 +640 426 +640 494 +427 640 +640 314 +640 480 +640 427 +473 640 +640 480 +640 480 +640 427 +640 369 +640 301 +640 427 +424 640 +640 481 +640 480 +640 427 +640 478 +640 480 +640 426 +640 427 +640 427 +640 480 +640 360 +480 640 +640 439 +640 480 +640 454 +640 401 +640 458 +640 480 +640 480 +640 414 +640 480 +640 496 +640 424 +640 480 +640 480 +387 500 +640 480 +640 379 +640 457 +425 640 +640 426 +640 424 +120 120 +640 427 +640 597 +640 480 +640 458 +640 426 +640 427 +640 427 +480 640 +640 426 +500 333 +640 427 +640 380 +427 640 +500 333 +480 640 +640 428 +640 428 +640 360 +640 429 +500 387 +371 500 +425 640 +640 480 +640 479 +640 480 +640 480 +640 427 +640 480 +640 478 +457 640 +640 429 +359 640 +500 375 +640 425 +500 375 +640 427 +359 240 +426 640 +612 612 +640 480 +612 612 +640 427 +640 478 +375 500 +480 640 +640 426 +479 640 +640 429 +640 384 +640 434 +500 332 +640 489 +640 427 +426 640 +640 466 +412 640 +478 640 +319 500 +640 427 +612 612 +640 418 +640 427 +640 426 +333 500 +500 375 +640 280 +612 612 +640 639 +640 480 +640 360 +640 456 +640 427 +426 640 +640 428 +501 640 +426 640 +640 428 +640 480 +640 478 +500 375 +640 360 +375 500 +640 388 +357 500 +640 480 +480 640 +496 640 +640 427 +612 612 +480 640 +508 337 +480 640 +640 368 +640 420 +300 500 +640 427 +612 612 +640 480 +500 375 +500 375 +412 317 +640 427 +640 425 +640 428 +480 640 +640 429 +380 640 +500 375 +640 425 +480 640 +640 480 +640 423 +640 480 +333 500 +411 640 +426 640 +436 640 +640 501 +640 427 +500 375 +640 512 +640 480 +640 506 +640 426 +640 427 +589 640 +480 640 +640 426 +500 375 +640 427 +640 426 +428 640 +640 480 +640 474 +500 333 +640 480 +480 640 +640 398 +640 425 +640 454 +640 480 +479 640 +640 427 +640 425 +612 612 +640 480 +500 375 +640 421 +640 514 +612 612 +640 480 +640 425 +500 468 +640 427 +480 640 +640 480 +640 480 +640 339 +424 640 +290 595 +480 640 +640 427 +480 640 +640 427 +500 332 +426 640 +640 425 +500 282 +480 640 +500 375 +640 514 +640 480 +640 426 +640 480 +640 480 +375 500 +640 427 +640 480 +640 426 +640 427 +500 375 +511 640 +640 427 +427 640 +640 480 +640 480 +446 552 +640 427 +640 426 +640 427 +640 427 +500 375 +640 480 +357 500 +640 479 +480 640 +640 428 +640 480 +480 640 +640 480 +640 480 +640 467 +640 480 +640 480 +640 426 +500 375 +513 640 +640 480 +640 480 +375 500 +640 427 +640 448 +640 480 +640 480 +480 640 +640 480 +640 427 +640 457 +640 425 +427 640 +480 640 +640 425 +640 427 +640 480 +640 640 +640 400 +612 612 +640 428 +425 640 +500 332 +640 426 +640 480 +640 480 +640 535 +640 427 +500 375 +640 480 +640 480 +480 640 +640 480 +640 480 +640 427 +425 640 +480 640 +640 480 +640 516 +640 427 +640 480 +640 418 +501 640 +640 480 +375 500 +640 424 +375 500 +480 640 +640 412 +640 426 +640 480 +640 467 +640 640 +640 480 +640 428 +640 480 +375 500 +640 431 +425 640 +478 640 +640 483 +640 480 +640 480 +640 360 +640 480 +427 640 +640 480 +500 375 +640 426 +500 334 +640 400 +334 500 +640 427 +640 428 +640 480 +640 427 +500 375 +640 480 +640 426 +640 480 +500 373 +401 500 +427 640 +640 458 +640 427 +640 427 +640 428 +640 427 +640 427 +612 612 +640 480 +500 176 +640 480 +480 640 +640 480 +565 425 +640 427 +640 480 +640 427 +386 640 +500 375 +500 375 +640 579 +640 457 +640 640 +640 442 +612 612 +640 480 +480 640 +640 480 +640 425 +640 427 +500 334 +427 640 +640 427 +480 640 +640 427 +640 480 +500 375 +640 480 +640 480 +640 362 +500 188 +640 480 +375 500 +640 480 +640 480 +640 427 +640 505 +640 480 +640 426 +427 640 +640 426 +640 480 +500 375 +640 427 +640 640 +640 424 +640 480 +640 480 +612 612 +640 427 +332 500 +640 437 +640 427 +640 427 +640 360 +480 640 +500 375 +640 427 +640 569 +640 440 +640 427 +500 375 +640 391 +640 426 +640 388 +640 427 +640 480 +640 428 +640 533 +640 426 +640 411 +640 480 +640 478 +640 425 +640 427 +480 640 +640 480 +426 640 +640 427 +640 425 +375 500 +640 567 +640 424 +640 335 +500 368 +640 480 +500 365 +640 373 +640 480 +500 375 +401 479 +427 640 +500 375 +640 428 +640 480 +640 480 +640 480 +500 500 +640 383 +640 427 +640 425 +640 480 +640 480 +640 480 +640 376 +480 640 +640 359 +640 427 +640 506 +640 513 +480 640 +640 427 +640 480 +640 428 +480 640 +640 573 +500 244 +640 480 +640 484 +640 480 +640 428 +640 478 +640 386 +426 640 +640 480 +640 480 +640 427 +499 640 +640 480 +640 480 +640 480 +468 640 +640 426 +640 426 +427 640 +428 640 +640 476 +640 480 +640 481 +640 353 +640 409 +640 640 +640 426 +640 431 +640 480 +640 453 +640 427 +640 480 +640 480 +480 640 +640 486 +640 427 +640 341 +640 396 +640 427 +427 640 +427 640 +640 427 +424 640 +500 333 +640 480 +640 426 +640 570 +470 640 +500 261 +640 394 +640 478 +640 427 +640 427 +640 427 +640 428 +480 640 +640 426 +640 480 +640 425 +375 500 +640 533 +640 480 +426 640 +626 640 +500 333 +375 500 +640 427 +640 480 +640 427 +640 427 +640 453 +375 500 +480 640 +640 427 +635 640 +427 640 +640 480 +640 392 +640 640 +427 640 +500 375 +640 427 +640 480 +640 426 +640 425 +640 640 +640 480 +640 480 +480 640 +375 500 +500 344 +612 612 +640 428 +640 480 +640 443 +640 427 +640 480 +427 640 +427 640 +640 480 +427 640 +428 640 +640 360 +640 411 +500 374 +640 489 +612 612 +640 480 +640 427 +640 480 +640 480 +640 478 +480 640 +640 424 +640 499 +640 366 +640 480 +640 426 +640 427 +419 640 +640 480 +640 480 +640 427 +480 640 +500 333 +640 262 +640 507 +640 480 +478 640 +500 357 +640 480 +480 640 +640 480 +500 359 +615 459 +426 640 +612 612 +640 427 +640 480 +640 425 +640 480 +640 440 +640 426 +427 640 +640 480 +640 640 +500 375 +640 427 +332 500 +640 360 +640 465 +640 538 +640 480 +640 426 +640 480 +640 480 +500 333 +640 466 +375 500 +480 640 +480 640 +443 640 +500 334 +640 480 +640 350 +640 427 +500 375 +539 640 +640 427 +640 480 +427 640 +640 427 +640 281 +476 640 +640 480 +640 480 +640 444 +640 480 +640 480 +640 427 +424 640 +640 427 +640 545 +425 640 +640 427 +640 480 +640 476 +640 360 +425 640 +640 299 +640 480 +640 480 +640 427 +429 640 +500 333 +427 640 +640 458 +426 640 +640 480 +640 480 +427 640 +427 640 +640 480 +640 479 +444 640 +640 427 +640 427 +480 640 +640 373 +640 640 +640 427 +640 506 +640 424 +640 480 +500 378 +640 480 +640 426 +480 640 +428 640 +425 640 +640 480 +640 480 +640 438 +500 375 +419 640 +640 473 +640 480 +640 426 +640 334 +640 385 +427 640 +640 337 +640 640 +640 426 +358 640 +640 427 +640 411 +480 640 +640 480 +640 425 +640 427 +640 480 +640 289 +640 454 +640 512 +640 427 +640 342 +640 429 +640 640 +640 480 +640 480 +640 427 +640 480 +640 480 +640 425 +640 480 +500 333 +500 406 +427 640 +375 500 +427 640 +640 480 +640 427 +640 478 +640 426 +640 427 +640 425 +428 640 +500 375 +640 428 +640 480 +327 500 +480 640 +640 426 +640 428 +640 426 +640 480 +640 480 +431 640 +531 640 +480 640 +480 640 +640 424 +640 402 +640 427 +640 480 +640 400 +640 480 +640 426 +427 640 +640 426 +640 449 +640 427 +500 333 +375 500 +500 375 +639 640 +480 640 +640 480 +640 499 +640 480 +476 640 +427 640 +640 480 +500 375 +640 426 +640 480 +640 427 +437 640 +640 427 +640 526 +640 428 +640 480 +640 425 +640 480 +640 427 +640 382 +640 427 +640 425 +478 640 +640 427 +640 488 +640 427 +640 360 +640 427 +640 478 +217 289 +640 480 +640 427 +640 425 +640 480 +640 455 +640 480 +640 480 +375 500 +440 640 +640 292 +512 640 +409 640 +640 480 +500 333 +640 480 +640 480 +640 480 +640 428 +488 640 +640 427 +640 428 +640 424 +418 640 +640 509 +427 640 +333 500 +480 640 +640 376 +612 612 +427 640 +426 640 +640 424 +640 480 +640 480 +640 427 +426 640 +447 640 +640 480 +480 640 +500 281 +429 640 +480 640 +640 480 +640 427 +640 427 +480 640 +640 480 +640 480 +500 333 +500 375 +640 478 +427 640 +640 471 +640 640 +427 640 +640 427 +640 478 +640 480 +640 430 +640 426 +640 395 +480 640 +640 425 +294 196 +640 427 +640 480 +500 263 +500 319 +640 480 +640 428 +640 602 +640 426 +425 640 +500 375 +500 400 +480 640 +465 640 +640 428 +427 640 +333 500 +640 480 +640 480 +640 426 +640 498 +480 640 +640 480 +640 480 +640 480 +640 480 +425 640 +640 480 +640 425 +426 640 +612 612 +640 476 +500 375 +480 640 +640 427 +427 640 +640 480 +640 480 +640 480 +428 640 +480 640 +640 426 +640 480 +640 480 +434 640 +480 640 +640 394 +640 478 +480 640 +500 375 +425 640 +640 480 +640 480 +479 640 +500 400 +480 640 +640 480 +612 612 +640 360 +375 500 +480 640 +640 480 +640 427 +427 640 +500 375 +375 500 +426 640 +640 480 +500 375 +640 480 +640 427 +480 640 +300 196 +193 272 +500 333 +500 375 +332 640 +640 480 +640 400 +425 640 +640 427 +500 333 +417 500 +640 415 +640 480 +166 221 +640 426 +640 427 +640 480 +480 640 +640 480 +424 640 +500 366 +640 427 +500 334 +425 640 +640 480 +500 375 +640 427 +640 480 +640 427 +640 425 +640 534 +387 640 +457 640 +480 640 +640 640 +640 426 +640 446 +640 393 +640 453 +640 433 +640 480 +500 357 +500 430 +640 428 +640 427 +427 640 +640 382 +640 408 +640 512 +640 480 +375 500 +640 429 +640 480 +640 480 +480 640 +640 427 +640 480 +640 458 +427 640 +500 375 +500 375 +640 427 +640 480 +594 640 +640 480 +480 640 +640 471 +640 480 +640 427 +640 361 +640 427 +640 427 +640 640 +480 640 +640 480 +640 480 +500 327 +640 427 +640 483 +375 500 +500 323 +640 480 +640 428 +353 378 +640 480 +640 480 +427 640 +640 480 +640 427 +410 500 +480 640 +640 480 +640 428 +640 429 +640 427 +640 478 +612 612 +640 427 +640 463 +640 480 +640 480 +640 427 +428 640 +640 480 +480 640 +640 421 +640 480 +640 427 +480 640 +500 400 +640 481 +640 548 +480 640 +375 500 +612 612 +640 427 +500 333 +640 427 +640 478 +500 375 +640 480 +640 360 +500 375 +640 430 +500 344 +500 375 +427 640 +640 428 +500 337 +640 360 +427 640 +640 424 +500 375 +640 480 +640 433 +500 327 +427 640 +480 640 +480 640 +640 480 +640 220 +640 486 +640 428 +640 480 +365 640 +427 640 +480 640 +640 480 +640 512 +480 640 +424 640 +640 480 +500 375 +500 375 +640 433 +640 426 +640 425 +480 640 +640 480 +640 453 +640 480 +640 638 +426 640 +375 500 +640 426 +640 360 +640 424 +640 480 +624 640 +640 480 +427 640 +335 500 +427 640 +640 480 +640 424 +378 500 +640 350 +449 640 +427 640 +640 426 +426 640 +427 640 +640 637 +375 500 +502 640 +640 426 +640 376 +425 640 +424 640 +640 480 +612 612 +640 427 +500 333 +640 480 +480 640 +640 480 +613 640 +375 500 +640 480 +640 428 +640 426 +640 480 +640 466 +640 435 +640 309 +640 425 +640 425 +640 428 +500 335 +427 640 +480 640 +466 640 +480 640 +640 480 +428 640 +640 434 +640 434 +640 426 +375 500 +480 640 +640 428 +640 480 +640 427 +640 480 +640 426 +640 463 +426 640 +640 441 +640 480 +427 640 +500 394 +482 640 +640 466 +426 640 +532 640 +640 428 +480 640 +640 426 +640 412 +500 375 +500 375 +640 426 +386 640 +640 480 +640 480 +640 426 +640 426 +640 480 +500 352 +640 640 +640 480 +480 640 +640 425 +640 640 +640 427 +640 433 +427 640 +427 640 +640 480 +640 480 +500 375 +500 375 +640 428 +500 345 +426 640 +640 480 +640 480 +640 427 +640 419 +640 480 +640 425 +500 375 +640 480 +640 480 +482 640 +640 427 +640 424 +640 470 +500 333 +640 427 +640 430 +640 480 +640 480 +640 480 +640 425 +640 424 +556 640 +640 479 +640 480 +640 427 +640 480 +500 375 +640 480 +640 429 +378 640 +640 426 +480 640 +612 612 +333 500 +640 411 +640 353 +612 612 +640 480 +640 425 +640 366 +480 640 +640 427 +640 480 +640 480 +427 640 +640 428 +457 640 +640 480 +640 424 +478 640 +640 480 +640 480 +640 425 +640 424 +640 479 +640 480 +640 360 +640 640 +421 640 +427 640 +640 481 +640 480 +427 640 +427 640 +640 480 +640 427 +640 427 +640 428 +500 375 +640 428 +640 480 +612 612 +500 375 +427 640 +500 375 +640 480 +640 427 +640 480 +480 640 +640 432 +640 427 +640 425 +640 480 +427 640 +640 361 +640 427 +640 425 +480 640 +478 640 +640 425 +480 640 +427 640 +427 640 +640 427 +487 640 +427 640 +480 640 +640 525 +428 500 +640 439 +500 375 +375 500 +458 640 +640 480 +640 423 +640 480 +640 480 +640 593 +640 480 +640 618 +640 392 +600 410 +640 427 +500 281 +640 480 +640 490 +640 480 +333 500 +640 640 +360 640 +427 640 +428 640 +401 600 +640 396 +640 480 +480 640 +640 480 +640 453 +640 438 +500 397 +517 640 +640 426 +640 426 +640 631 +480 640 +480 640 +640 480 +640 454 +480 640 +480 640 +512 640 +640 427 +640 480 +500 375 +588 640 +640 480 +640 480 +640 427 +640 480 +640 640 +411 640 +480 640 +640 480 +640 425 +426 640 +640 428 +612 612 +640 427 +426 640 +427 640 +640 428 +640 426 +640 425 +640 425 +500 381 +640 480 +640 392 +543 640 +480 640 +480 640 +550 245 +640 480 +640 480 +640 478 +334 640 +640 376 +640 427 +640 430 +500 326 +640 426 +500 375 +333 500 +527 640 +364 640 +640 480 +640 433 +640 427 +457 640 +640 480 +640 480 +640 506 +640 523 +640 425 +640 480 +640 480 +640 391 +640 221 +427 640 +355 500 +640 433 +640 480 +640 425 +640 377 +640 480 +640 425 +640 425 +640 427 +427 640 +640 427 +640 402 +640 457 +500 375 +640 426 +640 518 +640 640 +640 383 +640 427 +427 640 +500 375 +640 480 +428 640 +428 640 +640 480 +357 500 +640 480 +500 375 +640 515 +640 480 +640 360 +640 480 +500 333 +640 480 +240 360 +640 480 +640 443 +640 504 +640 480 +640 480 +465 640 +421 640 +640 480 +640 480 +640 480 +471 640 +640 480 +640 431 +640 425 +500 319 +640 411 +500 375 +640 426 +640 469 +640 427 +640 480 +640 480 +640 426 +500 333 +640 480 +640 366 +500 375 +640 480 +640 383 +640 480 +250 167 +640 427 +640 480 +640 424 +480 640 +500 375 +640 480 +640 480 +640 426 +640 427 +640 427 +640 404 +640 426 +427 640 +426 640 +640 359 +500 375 +640 429 +640 427 +640 480 +640 480 +328 500 +640 405 +478 640 +640 427 +500 333 +640 554 +449 640 +640 426 +640 480 +640 425 +640 480 +640 427 +640 426 +612 612 +640 320 +428 640 +462 640 +640 349 +640 427 +640 426 +640 427 +640 427 +359 640 +640 481 +640 429 +640 427 +427 640 +640 480 +640 359 +640 432 +640 427 +427 640 +640 426 +480 480 +640 426 +549 640 +640 427 +640 546 +640 489 +640 426 +500 335 +421 640 +640 427 +640 478 +640 425 +640 361 +640 639 +640 360 +423 640 +640 425 +612 612 +478 640 +640 426 +480 640 +640 426 +640 331 +480 640 +481 640 +640 480 +427 640 +591 640 +640 480 +640 427 +640 426 +640 478 +449 640 +640 480 +480 640 +640 480 +640 427 +640 480 +500 375 +500 400 +463 640 +427 640 +427 640 +640 434 +640 431 +333 500 +640 427 +640 425 +426 640 +429 640 +640 427 +375 500 +640 480 +500 375 +375 500 +640 425 +640 425 +500 335 +640 426 +612 612 +640 425 +640 480 +640 219 +640 427 +640 428 +640 427 +426 640 +640 480 +640 427 +640 427 +640 454 +612 612 +640 480 +480 640 +640 425 +640 480 +500 375 +640 427 +640 426 +640 383 +640 480 +500 375 +640 427 +500 269 +640 480 +452 500 +428 640 +640 427 +427 640 +640 480 +430 640 +640 480 +640 427 +640 471 +640 634 +500 375 +373 500 +640 480 +427 640 +640 427 +424 640 +640 480 +425 640 +640 425 +424 640 +640 360 +500 334 +635 640 +640 428 +500 375 +640 426 +640 436 +500 375 +640 360 +640 480 +640 427 +640 480 +427 640 +378 640 +640 594 +640 480 +640 433 +480 640 +427 640 +640 640 +640 480 +640 480 +501 640 +640 320 +640 480 +640 426 +640 406 +640 480 +640 640 +502 640 +375 500 +640 480 +640 427 +375 500 +640 427 +480 640 +640 453 +408 640 +640 423 +500 375 +640 427 +480 640 +640 423 +375 500 +640 480 +425 640 +640 480 +640 480 +640 480 +640 416 +640 426 +640 427 +640 480 +640 428 +640 427 +640 444 +640 480 +640 428 +426 640 +640 426 +480 640 +480 640 +640 455 +640 400 +480 640 +425 640 +478 640 +640 640 +427 640 +640 468 +500 500 +500 375 +640 480 +640 480 +640 480 +640 427 +640 480 +640 426 +500 500 +640 480 +500 334 +640 426 +640 427 +640 480 +640 427 +640 480 +426 640 +640 301 +640 428 +640 427 +500 222 +480 640 +427 640 +500 335 +360 270 +640 452 +640 361 +640 480 +480 640 +640 429 +640 434 +640 463 +640 427 +428 640 +640 427 +426 640 +640 472 +640 480 +640 438 +640 443 +612 612 +478 640 +426 640 +429 640 +640 425 +640 480 +640 480 +640 640 +426 640 +640 427 +640 424 +640 424 +640 424 +612 612 +640 480 +480 640 +400 500 +480 640 +640 480 +640 480 +640 427 +640 597 +640 416 +640 480 +640 480 +480 640 +480 640 +640 424 +640 428 +640 425 +582 640 +484 640 +566 640 +640 427 +426 640 +427 640 +640 480 +640 468 +640 424 +427 640 +640 425 +480 640 +600 400 +640 480 +640 480 +640 453 +500 339 +480 640 +640 480 +500 403 +500 333 +640 480 +640 480 +640 480 +640 427 +640 510 +640 425 +640 480 +426 640 +640 640 +375 500 +424 640 +640 427 +640 480 +480 640 +429 640 +640 426 +480 640 +640 427 +640 426 +640 480 +640 441 +494 640 +640 360 +425 640 +640 415 +640 427 +640 480 +640 360 +427 640 +500 333 +500 375 +333 500 +640 480 +480 640 +640 506 +640 427 +640 440 +600 450 +612 612 +640 424 +640 425 +640 480 +640 490 +480 640 +640 427 +640 480 +640 480 +640 428 +640 427 +408 640 +640 480 +640 480 +640 480 +480 640 +480 640 +500 375 +640 369 +424 640 +640 406 +500 375 +640 360 +640 519 +640 360 +640 426 +640 480 +640 480 +640 480 +500 375 +640 432 +640 501 +480 640 +640 640 +640 417 +600 450 +640 428 +640 427 +428 640 +374 500 +640 478 +640 425 +640 480 +480 640 +500 418 +333 500 +640 429 +640 428 +596 640 +640 480 +640 480 +640 359 +480 640 +640 427 +640 446 +640 427 +640 480 +500 375 +640 548 +480 640 +640 426 +500 357 +640 480 +500 375 +612 612 +480 640 +640 429 +640 429 +480 640 +426 640 +334 500 +604 640 +640 425 +640 424 +640 457 +640 426 +640 480 +640 551 +392 640 +640 418 +427 640 +640 480 +640 359 +500 375 +640 427 +210 304 +640 426 +356 200 +640 480 +500 375 +480 640 +500 377 +320 240 +427 640 +640 425 +640 513 +500 375 +427 640 +640 499 +640 294 +640 427 +640 443 +640 519 +640 480 +640 361 +640 480 +640 554 +640 426 +640 507 +640 426 +640 427 +640 480 +640 426 +640 480 +640 412 +640 480 +504 336 +640 480 +427 640 +426 640 +640 360 +640 421 +640 428 +640 480 +640 424 +480 640 +640 480 +640 480 +640 426 +640 480 +640 425 +480 640 +640 426 +640 428 +640 524 +640 374 +640 427 +640 428 +427 640 +640 480 +640 427 +640 360 +640 480 +428 640 +480 640 +426 640 +500 375 +640 490 +640 484 +640 445 +640 480 +427 640 +640 425 +500 375 +640 428 +480 640 +640 347 +640 360 +425 640 +640 499 +640 480 +500 375 +640 478 +640 427 +500 375 +427 640 +424 640 +480 640 +640 428 +640 640 +500 335 +640 480 +640 640 +640 427 +640 539 +480 640 +640 427 +489 640 +500 333 +640 424 +427 640 +640 427 +640 427 +480 640 +640 424 +500 335 +640 640 +640 480 +640 480 +427 640 +640 480 +576 475 +640 513 +640 427 +640 513 +480 640 +481 640 +449 640 +640 428 +640 426 +640 480 +640 346 +640 448 +640 480 +640 406 +640 427 +640 427 +640 425 +640 480 +428 640 +640 480 +500 375 +640 470 +640 353 +640 427 +612 612 +640 511 +640 383 +640 640 +640 425 +482 640 +640 426 +480 640 +359 640 +640 427 +640 479 +500 375 +640 480 +640 427 +640 433 +480 640 +640 480 +495 640 +640 424 +640 480 +640 428 +640 415 +640 480 +612 612 +333 500 +640 480 +427 640 +493 640 +480 640 +640 569 +500 375 +640 427 +640 483 +640 473 +640 478 +640 427 +478 640 +640 426 +427 640 +640 427 +640 479 +481 640 +640 312 +480 640 +640 480 +640 426 +640 636 +480 640 +640 480 +480 640 +640 383 +640 428 +640 329 +640 406 +640 428 +378 500 +500 375 +640 371 +428 640 +427 640 +640 359 +640 427 +640 480 +640 424 +640 427 +640 480 +500 346 +640 480 +384 640 +480 640 +640 427 +443 640 +541 640 +640 640 +640 427 +640 480 +640 541 +537 640 +427 640 +640 426 +640 427 +640 480 +444 640 +480 640 +640 480 +480 640 +640 480 +640 480 +640 544 +500 343 +640 480 +640 480 +640 427 +640 640 +640 453 +640 316 +357 500 +496 640 +480 640 +640 421 +640 480 +640 424 +640 426 +640 427 +612 612 +640 427 +640 480 +500 475 +501 640 +612 612 +480 640 +640 480 +640 425 +480 640 +639 640 +640 329 +640 427 +640 480 +640 480 +640 480 +480 640 +640 514 +427 640 +640 480 +500 376 +500 375 +640 425 +640 427 +640 488 +640 428 +640 428 +640 428 +488 500 +640 424 +640 480 +480 640 +640 536 +640 458 +500 400 +640 451 +640 454 +640 640 +640 425 +640 428 +640 426 +640 478 +500 375 +427 640 +640 400 +640 427 +640 480 +480 640 +427 640 +612 612 +640 427 +640 427 +640 480 +612 612 +480 640 +640 427 +640 360 +640 480 +640 425 +610 431 +640 385 +640 426 +640 640 +640 427 +640 452 +640 426 +640 425 +640 425 +640 480 +329 500 +640 480 +500 375 +480 640 +640 428 +640 480 +640 426 +612 612 +640 480 +238 206 +640 427 +640 480 +640 427 +500 375 +640 473 +640 480 +640 480 +640 480 +500 334 +640 426 +427 640 +640 309 +640 428 +333 500 +640 427 +480 640 +462 640 +427 640 +640 426 +640 480 +640 427 +424 640 +640 480 +640 480 +640 425 +640 640 +640 425 +640 480 +429 640 +480 640 +640 426 +475 640 +427 640 +640 480 +500 343 +427 640 +500 335 +640 480 +640 491 +419 640 +640 426 +640 427 +427 640 +480 640 +640 450 +640 480 +500 375 +640 480 +640 427 +465 421 +640 427 +640 480 +500 333 +640 428 +448 500 +640 359 +640 545 +427 640 +640 426 +640 427 +333 500 +640 480 +382 500 +640 480 +640 428 +640 480 +640 418 +640 428 +427 640 +640 480 +500 333 +640 480 +640 480 +640 428 +500 375 +640 388 +640 429 +640 480 +640 427 +640 427 +640 480 +368 640 +500 375 +640 426 +640 413 +431 500 +640 480 +640 480 +375 500 +500 332 +640 480 +640 480 +480 640 +640 426 +640 481 +426 640 +640 427 +640 478 +640 427 +640 425 +640 530 +523 640 +640 426 +640 424 +640 480 +427 640 +640 474 +640 427 +640 425 +640 395 +640 480 +480 640 +640 464 +640 462 +640 480 +640 407 +640 426 +640 480 +640 425 +320 480 +480 640 +429 640 +578 640 +640 569 +640 426 +640 480 +500 333 +640 480 +640 480 +395 500 +640 479 +640 480 +500 370 +361 640 +532 640 +640 480 +500 312 +480 640 +640 640 +640 508 +640 425 +640 480 +427 640 +640 480 +640 480 +640 420 +427 640 +640 480 +375 500 +640 426 +640 427 +640 488 +500 332 +427 640 +640 429 +640 425 +375 500 +640 360 +640 427 +640 480 +500 375 +640 480 +480 640 +612 612 +640 424 +640 424 +640 478 +640 427 +640 480 +640 480 +640 425 +500 375 +640 427 +480 640 +640 426 +640 426 +640 434 +500 333 +400 266 +500 332 +640 428 +640 480 +640 480 +500 328 +640 427 +500 417 +480 640 +500 375 +427 640 +480 640 +480 640 +480 640 +640 426 +640 424 +640 480 +640 640 +375 500 +640 427 +427 640 +640 427 +480 640 +500 252 +458 640 +640 427 +640 480 +640 427 +640 478 +480 640 +426 640 +640 425 +478 640 +427 640 +333 500 +640 425 +427 640 +640 336 +640 427 +375 500 +640 405 +480 640 +640 427 +640 501 +640 456 +640 428 +640 480 +640 473 +333 500 +640 464 +640 428 +427 640 +500 386 +500 375 +612 612 +640 427 +640 464 +457 640 +640 427 +640 429 +640 386 +640 427 +640 441 +500 334 +500 375 +640 480 +640 427 +480 640 +500 332 +640 427 +640 480 +640 480 +640 391 +640 438 +640 484 +500 375 +480 640 +640 420 +500 400 +427 640 +640 503 +640 480 +640 427 +427 640 +640 480 +640 480 +640 427 +640 425 +640 426 +427 640 +640 360 +612 612 +640 425 +640 424 +640 391 +480 640 +640 480 +500 375 +640 480 +640 480 +612 612 +480 640 +334 500 +480 640 +640 480 +640 407 +640 480 +640 361 +640 480 +640 427 +640 563 +640 425 +640 480 +500 281 +640 543 +640 480 +640 428 +640 640 +640 480 +500 375 +640 433 +461 459 +640 363 +640 480 +423 640 +640 360 +640 480 +640 425 +640 480 +640 473 +640 426 +480 640 +640 425 +640 480 +640 429 +500 381 +500 328 +640 427 +426 640 +639 480 +640 436 +640 480 +640 505 +640 480 +374 640 +640 480 +640 427 +640 480 +640 480 +640 480 +640 480 +640 427 +427 640 +640 558 +640 478 +640 427 +640 427 +500 375 +640 480 +640 427 +375 500 +640 426 +640 427 +640 429 +640 432 +640 383 +500 317 +333 500 +640 160 +375 500 +425 640 +480 640 +640 480 +640 425 +640 471 +500 375 +640 427 +640 480 +640 430 +375 500 +640 480 +500 375 +640 480 +640 427 +640 480 +640 204 +640 478 +427 640 +427 640 +640 427 +640 427 +640 397 +288 197 +640 426 +640 427 +640 640 +640 427 +640 480 +427 640 +640 480 +640 480 +640 501 +640 478 +612 612 +640 427 +426 640 +500 375 +640 480 +640 426 +520 640 +640 427 +640 426 +640 480 +640 420 +427 640 +640 480 +640 427 +476 640 +640 427 +427 640 +640 478 +640 448 +500 333 +500 285 +640 427 +494 640 +640 362 +375 500 +600 450 +640 480 +640 417 +500 496 +330 640 +500 375 +500 375 +640 478 +640 480 +640 480 +640 360 +640 426 +640 428 +612 612 +427 640 +640 480 +640 366 +640 480 +640 480 +427 640 +640 480 +480 360 +640 427 +640 457 +640 360 +509 640 +640 480 +500 375 +640 427 +640 425 +640 640 +640 480 +640 529 +640 480 +640 427 +640 480 +640 425 +640 426 +640 426 +500 375 +526 640 +640 426 +335 500 +612 612 +640 454 +383 640 +640 361 +640 427 +474 640 +640 427 +640 428 +500 326 +640 480 +640 424 +640 513 +640 510 +500 375 +500 375 +480 640 +480 640 +640 606 +480 640 +480 640 +640 311 +640 494 +640 425 +427 640 +480 640 +640 428 +640 640 +600 400 +640 457 +640 480 +640 401 +640 421 +640 480 +640 480 +640 436 +500 375 +426 640 +640 429 +640 496 +500 337 +640 480 +342 500 +500 334 +640 428 +640 333 +640 480 +480 640 +408 500 +544 640 +640 480 +640 428 +640 427 +640 414 +640 504 +640 479 +500 375 +480 640 +433 500 +640 480 +640 480 +427 640 +640 480 +640 480 +640 480 +640 426 +536 640 +500 362 +500 375 +640 424 +640 480 +640 480 +640 480 +640 429 +427 640 +640 426 +640 480 +640 543 +640 360 +500 334 +640 360 +640 426 +500 375 +640 374 +500 375 +612 612 +640 426 +427 640 +427 640 +480 640 +640 480 +640 480 +640 480 +640 480 +640 480 +640 427 +423 640 +478 640 +427 640 +375 500 +640 478 +375 500 +500 332 +427 640 +427 640 +640 480 +473 640 +640 480 +640 429 +640 474 +640 480 +640 512 +500 375 +639 640 +561 640 +332 500 +480 640 +640 640 +442 640 +500 448 +640 480 +640 428 +640 480 +640 480 +640 427 +640 427 +640 480 +640 480 +640 424 +425 640 +640 436 +640 427 +640 480 +612 612 +333 500 +640 480 +612 612 +640 426 +459 322 +640 426 +640 427 +426 640 +640 480 +640 426 +640 480 +600 422 +640 480 +612 612 +640 480 +640 394 +640 360 +640 480 +640 427 +500 375 +640 478 +489 640 +640 481 +640 427 +640 337 +640 392 +640 508 +500 421 +480 640 +640 480 +640 344 +640 427 +426 640 +612 612 +640 479 +640 480 +640 557 +476 500 +640 429 +640 424 +640 480 +398 500 +640 425 +640 640 +612 612 +640 480 +640 424 +640 424 +426 640 +640 480 +640 426 +483 640 +640 453 +640 480 +500 251 +427 640 +640 427 +500 375 +640 480 +640 480 +640 424 +640 480 +427 640 +640 427 +640 480 +640 480 +640 480 +640 478 +640 640 +480 640 +506 640 +324 243 +612 612 +500 328 +640 427 +640 480 +428 640 +480 640 +640 480 +640 640 +500 375 +425 640 +640 480 +640 432 +426 640 +640 424 +640 480 +478 640 +640 360 +427 640 +640 480 +640 480 +512 640 +480 640 +481 640 +500 375 +500 333 +640 427 +595 640 +640 480 +480 640 +640 359 +640 480 +640 352 +640 480 +427 640 +640 427 +640 478 +426 640 +640 427 +640 426 +640 317 +428 640 +425 640 +251 480 +463 640 +640 419 +640 480 +640 398 +426 640 +640 480 +427 640 +640 480 +640 480 +480 640 +640 427 +640 427 +640 427 +640 480 +640 427 +333 500 +640 480 +640 480 +640 426 +640 427 +500 371 +500 376 +640 480 +480 640 +640 437 +480 640 +640 480 +426 640 +640 424 +640 359 +640 480 +640 427 +640 421 +640 427 +640 480 +640 514 +600 462 +375 500 +333 500 +500 375 +640 480 +480 640 +500 353 +640 512 +480 640 +640 510 +640 480 +640 428 +640 426 +640 480 +640 428 +480 640 +577 640 +427 640 +640 360 +595 438 +640 480 +427 640 +640 499 +333 500 +640 425 +640 480 +640 480 +612 612 +429 640 +640 480 +640 427 +640 394 +640 425 +640 480 +480 640 +640 480 +640 413 +615 640 +640 427 +640 480 +640 436 +640 427 +427 640 +640 360 +480 640 +640 428 +640 362 +640 480 +640 480 +293 450 +640 428 +640 480 +640 457 +480 640 +640 424 +478 640 +640 480 +480 640 +500 391 +424 640 +640 427 +500 374 +640 480 +500 395 +500 375 +640 427 +640 412 +640 427 +640 427 +640 427 +500 333 +640 427 +640 427 +640 427 +612 612 +480 640 +640 480 +640 480 +640 427 +480 640 +640 425 +425 640 +525 640 +640 427 +640 434 +500 463 +640 427 +427 640 +640 425 +640 480 +480 640 +427 640 +640 480 +500 400 +640 427 +640 480 +427 640 +496 500 +448 336 +426 640 +640 480 +640 480 +640 405 +480 640 +470 640 +640 427 +500 385 +426 640 +640 425 +640 480 +500 375 +640 480 +500 375 +640 426 +640 423 +640 640 +640 464 +640 425 +640 428 +500 477 +298 640 +640 480 +640 425 +640 426 +640 427 +640 480 +500 333 +640 477 +478 640 +372 500 +640 437 +640 426 +640 480 +500 375 +640 427 +500 333 +375 500 +640 480 +640 354 +478 640 +640 464 +640 424 +612 612 +500 375 +640 480 +640 480 +640 571 +640 480 +640 480 +640 480 +640 480 +640 480 +640 424 +640 427 +640 427 +640 627 +640 508 +427 640 +640 476 +640 427 +640 454 +640 502 +612 612 +333 500 +424 640 +573 640 +640 424 +640 480 +640 427 +640 480 +589 640 +640 427 +640 428 +640 472 +640 428 +480 640 +512 640 +640 480 +640 480 +640 427 +640 412 +500 314 +640 480 +480 640 +500 375 +586 640 +333 500 +640 469 +640 425 +640 480 +332 500 +640 480 +640 425 +544 640 +640 458 +500 375 +480 640 +640 480 +640 480 +640 480 +320 240 +640 480 +640 480 +427 640 +500 375 +640 480 +334 500 +640 480 +640 427 +640 497 +500 375 +640 480 +640 426 +640 425 +473 640 +640 426 +640 480 +640 426 +531 640 +640 478 +640 428 +640 429 +480 640 +612 612 +640 368 +375 500 +640 480 +640 480 +640 480 +427 640 +503 640 +640 360 +640 427 +480 640 +640 427 +640 426 +640 480 +480 640 +640 426 +640 429 +640 426 +480 640 +640 427 +640 427 +640 481 +640 427 +640 427 +640 474 +597 640 +640 248 +480 360 +640 480 +640 512 +640 427 +332 500 +640 427 +640 428 +460 640 +640 426 +500 375 +420 640 +640 480 +640 480 +500 375 +481 640 +640 427 +640 427 +640 426 +640 478 +428 640 +500 375 +640 395 +640 426 +640 427 +350 233 +640 427 +386 640 +640 480 +427 640 +640 286 +640 480 +640 419 +340 500 +640 348 +335 500 +640 495 +640 366 +640 427 +640 640 +640 427 +640 425 +640 480 +640 480 +640 480 +640 427 +640 425 +500 333 +640 481 +480 640 +480 640 +427 640 +640 427 +426 640 +640 480 +640 478 +500 332 +640 427 +640 427 +500 281 +640 480 +428 640 +640 480 +280 268 +640 369 +640 427 +640 424 +640 480 +427 640 +428 640 +640 480 +640 427 +500 361 +612 612 +640 480 +480 640 +640 427 +640 478 +640 514 +480 640 +432 288 +640 392 +640 480 +640 480 +612 612 +640 361 +640 480 +333 500 +640 427 +640 427 +640 407 +640 418 +640 512 +640 426 +640 427 +500 332 +640 428 +480 640 +640 480 +640 429 +640 360 +500 375 +640 424 +640 425 +550 365 +383 640 +640 427 +430 640 +500 375 +425 640 +500 375 +500 357 +500 222 +640 427 +640 480 +480 640 +500 375 +640 428 +640 423 +421 640 +640 480 +640 480 +640 427 +640 426 +640 480 +466 640 +427 640 +500 400 +480 640 +500 333 +640 426 +480 640 +640 480 +352 288 +640 480 +640 425 +640 428 +640 426 +640 427 +640 478 +565 640 +640 426 +640 480 +500 374 +640 426 +600 500 +640 480 +640 480 +480 640 +640 480 +586 640 +640 427 +640 491 +640 327 +640 218 +500 332 +500 375 +640 480 +640 580 +638 640 +359 640 +640 360 +516 640 +640 226 +333 500 +640 427 +640 406 +640 427 +640 480 +448 336 +640 427 +520 640 +640 480 +409 500 +375 500 +640 480 +640 483 +480 640 +640 428 +500 375 +640 480 +640 480 +640 428 +400 267 +640 480 +375 500 +640 428 +640 480 +640 424 +640 427 +428 640 +640 425 +424 640 +640 480 +500 496 +333 500 +500 335 +502 640 +640 427 +640 485 +640 480 +427 640 +425 640 +334 500 +640 426 +640 480 +640 347 +640 480 +443 640 +500 335 +640 427 +640 573 +640 444 +500 375 +427 640 +640 427 +500 375 +640 427 +640 426 +426 640 +426 640 +640 480 +640 480 +640 479 +640 427 +640 480 +640 540 +640 427 +427 640 +500 375 +640 480 +500 375 +375 500 +640 480 +640 425 +437 640 +407 482 +478 640 +640 512 +500 375 +640 480 +500 375 +640 427 +640 315 +320 240 +640 371 +640 480 +640 480 +435 640 +640 480 +424 640 +612 612 +480 640 +640 640 +425 640 +640 480 +500 375 +480 304 +640 428 +640 480 +640 480 +640 427 +640 428 +640 453 +523 640 +427 640 +500 375 +640 480 +500 500 +640 425 +640 427 +500 363 +427 640 +640 427 +500 375 +383 640 +427 640 +427 640 +500 375 +640 419 +640 480 +640 427 +360 270 +640 427 +500 388 +640 427 +640 480 +640 480 +640 427 +640 425 +640 427 +640 480 +640 323 +640 426 +500 375 +640 427 +640 424 +600 600 +640 427 +480 640 +640 457 +500 302 +640 480 +640 480 +640 480 +500 375 +457 640 +640 480 +640 360 +640 427 +500 364 +612 612 +500 375 +640 427 +375 500 +480 640 +640 427 +500 375 +640 366 +640 427 +640 480 +640 555 +640 427 +640 427 +640 426 +640 480 +640 480 +640 428 +640 484 +640 491 +500 375 +640 507 +500 375 +640 480 +375 500 +640 480 +640 480 +640 480 +640 364 +640 427 +464 640 +443 640 +640 480 +480 640 +640 363 +480 640 +480 640 +640 395 +427 640 +640 390 +640 427 +500 375 +640 427 +500 333 +612 612 +640 427 +640 480 +640 480 +491 640 +640 480 +640 428 +640 211 +640 427 +640 480 +640 480 +640 464 +640 457 +640 480 +640 428 +640 480 +640 425 +640 426 +640 360 +500 375 +640 480 +500 318 +640 428 +640 480 +375 500 +480 640 +347 500 +612 612 +640 425 +640 480 +640 542 +640 412 +640 427 +500 378 +399 640 +480 640 +640 425 +640 425 +612 612 +640 481 +640 427 +427 640 +640 419 +428 640 +640 427 +640 453 +425 640 +640 479 +640 480 +640 480 +457 640 +512 640 +480 640 +640 443 +640 427 +640 497 +500 333 +427 640 +425 640 +427 640 +480 640 +500 375 +640 400 +468 640 +425 640 +640 478 +332 500 +640 424 +640 424 +640 493 +640 485 +333 500 +640 426 +640 427 +640 425 +640 426 +640 429 +480 640 +612 612 +640 399 +640 480 +640 417 +500 400 +640 421 +640 321 +640 480 +427 640 +427 640 +640 480 +640 480 +640 480 +428 640 +640 425 +640 427 +414 640 +640 480 +640 480 +640 425 +640 424 +640 480 +509 640 +640 425 +500 375 +500 417 +427 640 +640 424 +640 480 +640 480 +480 640 +500 375 +430 640 +640 480 +640 427 +640 480 +640 427 +640 457 +640 425 +427 640 +375 500 +640 476 +640 349 +640 426 +640 488 +333 500 +480 640 +444 640 +640 480 +640 427 +500 375 +640 480 +320 240 +457 640 +640 480 +640 361 +640 425 +640 480 +640 428 +640 427 +640 425 +640 428 +640 427 +640 480 +640 346 +640 480 +559 640 +500 331 +500 375 +359 640 +640 479 +640 480 +480 640 +375 500 +427 640 +640 429 +480 640 +640 480 +640 428 +640 481 +640 531 +375 500 +640 427 +480 640 +640 351 +640 480 +640 360 +480 640 +640 640 +640 425 +640 480 +480 640 +640 427 +500 333 +640 479 +480 640 +640 426 +640 376 +426 640 +640 428 +640 427 +500 333 +640 565 +480 640 +640 480 +640 417 +640 480 +500 375 +500 333 +640 480 +500 396 +317 640 +425 640 +640 427 +480 640 +640 428 +640 480 +640 480 +500 375 +640 426 +640 361 +640 425 +375 500 +640 427 +427 640 +640 427 +427 640 +640 426 +375 500 +437 640 +640 427 +640 425 +640 480 +640 457 +640 480 +640 480 +600 640 +640 424 +640 425 +640 480 +640 425 +640 480 +500 296 +478 640 +640 399 +640 624 +640 426 +640 427 +640 471 +640 427 +450 640 +640 427 +640 383 +500 335 +640 360 +640 359 +640 480 +640 427 +418 640 +640 480 +460 640 +640 482 +480 640 +640 506 +640 480 +480 640 +375 500 +640 481 +427 640 +640 427 +600 400 +500 333 +640 360 +640 480 +480 640 +425 640 +640 480 +640 480 +640 428 +640 355 +480 640 +640 480 +640 480 +640 480 +427 640 +640 427 +500 375 +427 640 +500 375 +640 427 +640 480 +640 427 +500 375 +640 334 +640 427 +640 427 +640 427 +638 640 +500 375 +640 480 +640 428 +437 640 +429 640 +500 476 +640 359 +640 480 +640 447 +640 480 +640 360 +500 495 +500 375 +500 362 +640 480 +333 500 +640 399 +640 218 +640 418 +640 480 +640 445 +640 480 +640 480 +640 459 +640 480 +480 640 +612 612 +480 640 +640 480 +640 481 +640 427 +640 426 +427 640 +640 471 +427 640 +480 640 +640 427 +640 426 +480 640 +640 426 +640 416 +640 480 +640 428 +640 480 +640 480 +640 427 +428 640 +640 640 +612 612 +640 443 +640 480 +640 427 +640 480 +640 480 +334 500 +640 480 +640 425 +500 375 +640 427 +640 427 +640 480 +640 420 +640 426 +640 480 +640 478 +640 426 +612 612 +640 478 +640 539 +640 640 +332 500 +640 480 +480 640 +640 485 +640 480 +500 328 +640 640 +640 361 +640 426 +640 427 +640 480 +640 324 +640 383 +640 480 +511 640 +640 480 +500 285 +500 332 +640 480 +640 459 +480 640 +640 469 +500 375 +640 359 +600 400 +640 426 +640 480 +640 411 +640 480 +438 424 +640 427 +551 640 +640 480 +640 427 +640 408 +640 480 +640 424 +640 512 +640 480 +375 500 +640 427 +612 612 +640 480 +640 528 +479 640 +426 640 +640 480 +640 427 +640 359 +500 333 +640 480 +550 640 +640 480 +640 434 +633 640 +640 425 +427 640 +640 478 +640 480 +640 480 +640 480 +640 516 +640 455 +640 427 +640 480 +640 426 +640 427 +428 640 +640 480 +640 482 +640 259 +640 426 +640 457 +480 640 +427 640 +640 427 +640 480 +640 480 +640 484 +640 497 +640 426 +640 424 +640 480 +640 480 +640 480 +640 360 +482 640 +425 640 +640 361 +640 480 +640 480 +427 640 +640 480 +640 426 +640 480 +640 374 +640 426 +640 328 +640 427 +612 612 +333 500 +640 338 +500 400 +640 427 +640 427 +640 480 +640 426 +640 427 +500 375 +640 425 +640 480 +640 480 +500 375 +427 640 +640 429 +640 427 +640 466 +500 266 +500 400 +640 427 +504 640 +640 480 +480 640 +500 375 +500 375 +500 375 +500 375 +427 640 +640 480 +480 640 +640 480 +640 536 +640 427 +500 375 +640 480 +500 375 +500 375 +640 427 +612 612 +640 481 +640 427 +640 427 +500 375 +640 427 +640 509 +375 500 +640 640 +612 612 +640 480 +640 425 +640 480 +500 375 +640 425 +640 480 +640 426 +640 449 +640 480 +640 608 +640 359 +640 424 +480 640 +640 480 +640 464 +640 387 +408 640 +640 480 +640 427 +640 427 +640 468 +480 640 +375 500 +428 640 +640 480 +480 640 +640 480 +640 480 +375 500 +467 640 +640 425 +640 640 +640 480 +640 480 +640 427 +640 480 +480 640 +640 428 +640 427 +640 427 +640 480 +500 375 +640 428 +612 612 +500 333 +427 640 +640 425 +426 640 +640 480 +640 480 +640 360 +640 480 +500 375 +480 640 +480 640 +427 640 +480 640 +640 427 +640 416 +640 427 +640 424 +640 480 +640 385 +640 428 +640 480 +640 466 +640 425 +640 427 +480 640 +480 640 +480 640 +640 441 +640 480 +332 500 +640 428 +640 480 +427 640 +640 513 +640 427 +612 612 +480 640 +640 640 +640 480 +640 428 +425 640 +640 480 +640 640 +480 640 +640 428 +640 288 +640 427 +640 425 +640 479 +640 427 +640 426 +427 640 +480 640 +320 240 +640 480 +640 426 +500 375 +640 480 +640 423 +640 604 +640 436 +500 281 +640 427 +612 612 +427 640 +640 427 +427 640 +640 428 +640 427 +500 335 +640 428 +480 640 +640 427 +640 427 +640 480 +480 640 +640 427 +500 335 +335 500 +640 480 +640 391 +426 640 +431 431 +640 480 +640 463 +640 425 +640 427 +640 425 +500 332 +424 640 +500 375 +478 640 +640 480 +640 436 +640 480 +480 640 +640 596 +640 640 +640 424 +413 500 +640 477 +426 640 +426 640 +640 640 +640 427 +640 480 +640 428 +640 428 +640 457 +640 426 +640 640 +375 500 +640 473 +640 426 +640 427 +640 427 +640 478 +431 500 +640 429 +640 426 +640 480 +640 427 +427 640 +640 427 +640 427 +640 428 +640 480 +375 500 +640 480 +320 225 +640 480 +640 427 +640 480 +640 427 +426 640 +427 640 +640 404 +638 640 +640 429 +640 427 +640 480 +500 375 +431 640 +640 428 +512 640 +467 640 +427 640 +640 429 +427 640 +478 640 +640 480 +500 333 +640 480 +448 279 +640 427 +640 426 +640 427 +478 640 +640 513 +491 640 +480 640 +640 480 +640 480 +640 480 +640 480 +640 427 +480 640 +500 375 +481 640 +485 500 +640 438 +640 480 +640 480 +500 375 +640 425 +640 480 +640 480 +640 424 +640 427 +500 375 +640 424 +640 426 +640 480 +500 375 +640 428 +640 360 +640 480 +640 428 +640 427 +640 427 +427 640 +640 593 +424 640 +640 480 +640 425 +640 378 +640 480 +640 424 +640 480 +404 640 +500 345 +640 480 +640 480 +640 427 +500 370 +500 332 +500 333 +640 511 +427 640 +640 426 +433 640 +480 640 +640 428 +640 348 +500 375 +500 333 +640 441 +500 358 +640 426 +640 480 +426 640 +427 640 +640 491 +383 640 +333 500 +640 425 +640 482 +639 640 +500 298 +427 640 +375 500 +640 480 +640 480 +375 500 +640 427 +500 375 +640 480 +637 640 +640 640 +640 429 +480 640 +640 480 +640 471 +500 375 +640 417 +480 640 +427 640 +500 375 +640 486 +640 480 +428 640 +640 424 +640 480 +500 365 +500 375 +460 640 +640 426 +427 640 +640 480 +640 399 +640 480 +640 480 +612 612 +640 429 +640 426 +512 640 +640 429 +375 500 +414 640 +480 640 +640 480 +640 360 +640 480 +478 640 +360 640 +640 480 +427 640 +640 424 +375 500 +427 640 +640 375 +500 335 +640 427 +640 480 +640 512 +417 640 +640 427 +640 480 +640 427 +640 427 +640 480 +640 427 +640 424 +500 343 +640 428 +640 474 +640 480 +640 480 +640 418 +640 480 +640 640 +500 334 +433 640 +640 480 +640 480 +443 640 +640 640 +640 427 +640 425 +640 428 +640 383 +640 480 +427 640 +640 384 +480 640 +640 426 +640 429 +640 480 +640 480 +640 480 +640 426 +640 480 +640 428 +640 480 +640 480 +425 640 +640 480 +481 640 +640 427 +640 480 +427 640 +360 640 +640 480 +640 480 +500 375 +425 640 +640 480 +640 480 +640 523 +640 480 +512 640 +427 640 +640 640 +640 640 +640 427 +640 480 +480 640 +480 640 +480 640 +479 640 +480 640 +640 427 +640 427 +427 640 +640 427 +640 427 +640 480 +500 456 +640 429 +640 640 +640 424 +640 447 +375 500 +640 427 +640 458 +640 480 +640 428 +640 424 +640 360 +640 480 +640 361 +363 500 +640 480 +640 480 +640 356 +640 427 +631 640 +640 480 +480 640 +429 640 +640 480 +640 426 +640 427 +640 480 +640 480 +640 427 +479 640 +480 640 +640 427 +640 480 +500 330 +640 427 +515 640 +640 573 +638 640 +640 427 +640 480 +528 512 +640 480 +640 427 +424 640 +640 480 +480 640 +640 480 +640 480 +640 427 +640 428 +500 333 +500 375 +420 640 +640 427 +640 426 +640 480 +500 336 +500 333 +500 375 +640 480 +500 375 +480 640 +640 480 +640 480 +332 500 +640 557 +640 390 +640 480 +428 640 +640 441 +640 427 +640 480 +500 420 +640 427 +640 425 +640 480 +640 428 +640 480 +480 640 +640 456 +640 480 +432 499 +640 478 +425 640 +480 640 +640 568 +612 612 +640 480 +500 375 +640 428 +640 427 +427 640 +612 612 +640 428 +640 486 +640 426 +640 480 +640 427 +640 480 +480 640 +640 359 +457 640 +640 426 +640 428 +428 640 +640 427 +640 480 +375 500 +640 480 +640 640 +640 480 +500 500 +500 375 +500 281 +640 427 +427 640 +640 480 +640 480 +427 640 +640 640 +640 428 +427 640 +480 640 +500 374 +640 480 +500 380 +500 375 +427 640 +375 500 +640 427 +640 425 +612 612 +458 500 +375 500 +640 640 +600 411 +640 480 +427 640 +640 427 +375 500 +500 375 +333 500 +640 428 +640 479 +640 480 +640 426 +640 480 +640 386 +640 480 +640 457 +640 480 +640 428 +500 359 +500 500 +427 640 +640 480 +640 640 +501 640 +640 425 +480 640 +640 480 +640 480 +375 500 +640 458 +640 426 +640 480 +640 427 +640 480 +375 500 +480 640 +329 500 +500 373 +539 640 +640 424 +640 480 +640 476 +521 640 +640 480 +640 480 +640 480 +640 480 +640 480 +480 640 +640 427 +640 418 +640 480 +640 426 +640 480 +480 640 +480 640 +640 480 +427 640 +426 640 +612 612 +640 480 +375 500 +640 480 +640 479 +333 500 +640 480 +500 333 +640 425 +636 636 +640 427 +640 426 +427 640 +500 375 +640 480 +431 640 +640 393 +426 640 +612 612 +640 368 +375 500 +639 640 +640 429 +427 640 +640 370 +359 640 +640 427 +640 398 +500 436 +640 390 +640 469 +427 640 +640 427 +640 429 +500 353 +640 391 +640 429 +500 281 +512 640 +640 426 +612 612 +640 480 +480 640 +640 427 +456 500 +512 640 +427 640 +612 612 +427 640 +612 612 +640 426 +640 359 +427 640 +640 360 +500 375 +640 456 +640 427 +640 427 +640 427 +640 480 +640 241 +429 640 +343 500 +640 480 +640 480 +640 480 +640 427 +640 427 +334 500 +640 425 +640 480 +640 426 +640 480 +640 480 +640 478 +473 640 +640 480 +640 480 +445 500 +640 640 +500 375 +640 426 +453 640 +640 480 +500 281 +640 427 +640 484 +640 426 +640 480 +640 427 +424 640 +425 282 +640 521 +640 495 +640 480 +640 480 +333 500 +640 426 +640 480 +640 640 +640 480 +640 605 +640 400 +457 640 +640 480 +640 480 +500 375 +480 640 +640 480 +427 640 +640 424 +640 423 +640 480 +480 640 +500 160 +640 480 +640 427 +640 478 +640 320 +640 480 +375 500 +640 479 +640 480 +640 429 +640 480 +640 427 +427 640 +427 640 +480 640 +640 213 +640 640 +640 469 +640 457 +640 480 +640 610 +640 425 +500 334 +541 640 +640 480 +428 640 +500 375 +610 640 +640 425 +640 428 +612 612 +640 499 +640 427 +427 640 +375 500 +483 640 +640 480 +640 428 +640 423 +640 480 +640 480 +480 640 +468 640 +500 375 +640 427 +640 480 +240 320 +640 428 +480 640 +640 480 +425 640 +500 375 +500 333 +640 427 +400 300 +640 480 +640 426 +640 254 +375 500 +640 480 +640 427 +464 640 +480 640 +640 427 +640 640 +427 640 +383 640 +640 427 +430 640 +640 378 +640 427 +640 480 +640 444 +640 427 +500 333 +375 500 +640 427 +640 425 +640 428 +640 480 +640 428 +640 390 +500 375 +640 398 +640 480 +640 480 +640 480 +511 640 +640 480 +640 411 +640 360 +640 480 +500 333 +640 428 +640 360 +640 478 +640 480 +640 480 +640 389 +427 640 +376 500 +425 640 +500 375 +500 375 +500 333 +640 478 +640 480 +640 427 +640 480 +640 496 +640 466 +500 500 +640 428 +640 480 +640 480 +640 480 +480 640 +500 375 +640 480 +640 480 +480 640 +640 427 +640 480 +640 480 +640 427 +640 425 +640 640 +640 451 +640 427 +427 640 +500 375 +640 591 +640 536 +640 480 +640 425 +480 640 +480 640 +426 640 +640 427 +427 640 +478 640 +480 640 +640 427 +500 375 +640 480 +640 428 +640 424 +500 334 +500 306 +427 640 +612 612 +333 500 +500 400 +640 427 +480 640 +454 640 +640 436 +480 640 +640 480 +333 500 +640 480 +640 427 +640 427 +427 640 +640 480 +480 640 +427 640 +500 332 +640 415 +640 427 +640 426 +640 479 +428 640 +640 459 +640 480 +640 427 +640 480 +640 426 +640 480 +640 480 +500 375 +640 427 +640 428 +640 480 +640 502 +640 311 +495 640 +640 480 +640 480 +640 358 +640 493 +320 240 +640 406 +640 427 +640 480 +640 478 +640 480 +640 480 +640 501 +640 427 +640 481 +640 426 +640 480 +420 640 +640 480 +480 640 +640 428 +640 480 +459 344 +640 427 +640 449 +640 427 +640 425 +640 480 +480 640 +640 226 +480 640 +640 503 +640 427 +640 425 +639 640 +640 425 +640 427 +640 480 +500 375 +456 640 +500 375 +612 612 +640 472 +612 612 +640 512 +640 426 +640 458 +500 375 +480 640 +427 640 +640 480 +500 332 +640 427 +427 640 +640 439 +640 427 +640 480 +480 640 +640 480 +638 640 +480 640 +640 426 +612 612 +433 640 +640 340 +640 427 +416 640 +640 427 +640 480 +640 480 +640 480 +375 500 +585 640 +480 640 +640 480 +640 427 +464 640 +640 427 +640 640 +640 360 +423 640 +640 427 +640 383 +612 612 +640 427 +640 480 +640 427 +500 331 +524 640 +333 500 +640 480 +640 238 +640 428 +640 427 +500 374 +640 427 +425 640 +427 640 +640 640 +640 427 +478 640 +500 375 +640 480 +499 640 +640 427 +640 640 +640 480 +640 315 +640 480 +500 335 +640 614 +513 640 +640 480 +640 348 +640 480 +500 375 +640 480 +640 473 +500 369 +437 640 +640 360 +640 427 +640 480 +640 427 +480 640 +500 333 +640 429 +640 480 +480 640 +640 480 +640 480 +640 428 +640 410 +375 500 +428 640 +500 334 +640 458 +612 612 +640 426 +300 400 +480 640 +429 640 +640 427 +640 424 +288 307 +640 480 +640 424 +640 426 +500 334 +500 375 +389 500 +640 428 +640 358 +640 426 +480 640 +480 640 +428 640 +375 500 +640 427 +640 427 +640 427 +500 375 +640 534 +640 425 +640 359 +640 427 +409 500 +640 304 +427 640 +640 480 +640 283 +640 427 +480 640 +640 512 +612 612 +640 411 +640 357 +640 425 +640 348 +640 427 +640 427 +640 424 +640 437 +480 640 +480 640 +480 640 +640 480 +640 428 +640 480 +500 333 +640 427 +640 427 +640 427 +640 480 +640 427 +500 333 +427 640 +498 500 +640 480 +640 427 +480 640 +500 384 +427 640 +640 427 +400 500 +640 640 +640 424 +640 463 +300 429 +612 612 +640 477 +640 427 +600 399 +640 480 +640 480 +640 427 +640 426 +640 428 +425 640 +427 640 +640 478 +640 479 +640 427 +640 491 +640 449 +480 640 +480 640 +640 513 +640 427 +640 427 +640 428 +612 612 +375 500 +640 447 +640 449 +640 427 +640 427 +640 480 +640 427 +640 480 +480 640 +640 428 +640 426 +427 640 +640 365 +500 375 +640 480 +640 424 +427 640 +640 426 +640 426 +640 428 +640 426 +478 640 +640 480 +408 640 +640 427 +500 310 +480 640 +640 426 +640 480 +630 640 +427 640 +640 428 +640 427 +640 492 +640 499 +480 640 +640 427 +500 333 +480 640 +427 640 +640 389 +640 480 +425 640 +640 480 +640 436 +640 427 +640 449 +478 640 +480 640 +426 640 +640 434 +640 427 +480 640 +640 640 +500 375 +640 422 +480 640 +375 500 +640 426 +640 480 +640 425 +427 640 +640 480 +640 480 +640 423 +640 640 +640 383 +640 424 +640 480 +480 640 +612 612 +640 480 +640 480 +640 480 +640 427 +480 640 +555 640 +640 480 +375 500 +640 360 +640 427 +640 480 +640 425 +640 427 +640 480 +640 427 +640 427 +500 375 +480 640 +420 640 +500 375 +330 500 +612 612 +612 612 +640 361 +500 333 +640 512 +640 480 +500 375 +640 425 +640 480 +612 612 +640 428 +640 427 +427 640 +427 640 +640 456 +640 426 +640 291 +375 500 +640 427 +640 454 +640 427 +640 426 +612 612 +430 640 +500 333 +640 482 +640 480 +333 500 +426 640 +640 425 +640 427 +640 427 +640 480 +640 478 +427 640 +640 427 +491 640 +640 425 +640 427 +640 480 +500 375 +640 480 +498 640 +640 480 +640 427 +640 480 +488 640 +427 640 +500 332 +480 640 +480 640 +612 612 +640 480 +640 420 +375 500 +640 369 +640 424 +640 480 +426 640 +480 640 +640 480 +640 295 +500 347 +480 640 +640 359 +640 640 +640 480 +640 480 +640 428 +640 425 +640 479 +640 427 +640 429 +640 360 +612 612 +500 333 +640 480 +500 375 +426 640 +598 640 +640 480 +333 500 +640 426 +388 640 +426 640 +640 427 +640 478 +500 351 +640 426 +480 640 +640 430 +500 375 +640 484 +640 423 +640 480 +500 375 +640 480 +500 375 +640 426 +640 416 +500 333 +375 500 +500 361 +640 426 +427 640 +640 427 +640 427 +500 375 +640 424 +612 612 +393 640 +640 427 +375 500 +640 480 +469 640 +640 533 +640 511 +640 426 +457 640 +480 640 +640 387 +500 375 +640 427 +640 482 +640 427 +640 480 +480 640 +375 500 +424 640 +480 640 +426 640 +640 480 +640 425 +640 429 +640 546 +640 480 +468 640 +640 430 +458 640 +640 426 +640 401 +640 427 +640 480 +426 640 +640 427 +640 426 +640 480 +480 640 +640 427 +640 426 +438 640 +640 480 +428 500 +640 480 +640 480 +640 480 +640 480 +640 640 +480 640 +640 400 +500 333 +640 426 +500 375 +427 640 +427 640 +640 480 +640 482 +612 612 +640 480 +640 412 +343 500 +426 640 +425 640 +640 480 +640 427 +640 366 +640 480 +452 640 +333 500 +640 427 +612 612 +640 480 +512 640 +532 640 +640 457 +640 428 +640 428 +640 424 +500 375 +640 427 +429 640 +640 427 +640 427 +640 480 +640 480 +332 500 +640 480 +640 427 +640 209 +480 640 +480 640 +640 427 +640 427 +640 426 +640 480 +640 428 +320 480 +640 415 +426 640 +640 480 +400 640 +478 640 +640 479 +640 480 +640 427 +612 612 +375 500 +640 429 +427 640 +500 309 +500 360 +640 426 +500 375 +612 612 +335 500 +640 480 +640 480 +640 426 +640 480 +640 480 +336 448 +308 500 +330 500 +640 480 +640 424 +640 359 +640 453 +640 416 +273 346 +612 612 +375 500 +640 480 +640 480 +640 425 +300 432 +640 480 +640 428 +500 375 +480 640 +640 480 +500 375 +640 480 +640 458 +480 640 +426 640 +480 640 +640 480 +311 500 +478 640 +640 426 +640 480 +640 480 +480 640 +640 480 +500 375 +640 428 +640 480 +500 332 +640 426 +640 425 +414 500 +500 398 +640 480 +640 427 +640 427 +425 640 +640 432 +640 425 +640 384 +640 427 +640 289 +640 545 +640 480 +500 333 +429 640 +500 500 +640 425 +375 500 +640 480 +640 463 +640 426 +640 426 +640 433 +375 500 +500 375 +612 612 +640 480 +640 480 +640 436 +480 640 +478 640 +500 359 +640 427 +640 426 +478 640 +640 480 +447 640 +365 328 +427 640 +500 274 +480 640 +480 640 +640 425 +500 375 +640 480 +640 480 +438 640 +640 426 +640 436 +480 640 +484 500 +480 640 +640 415 +640 424 +640 480 +640 426 +424 640 +640 480 +456 640 +640 480 +640 480 +500 367 +377 500 +640 429 +480 640 +640 428 +640 480 +427 640 +500 367 +640 360 +333 500 +422 640 +480 640 +640 480 +640 425 +640 425 +640 640 +640 457 +640 427 +640 427 +480 640 +423 640 +454 640 +640 640 +425 640 +500 397 +427 640 +375 500 +500 333 +453 640 +480 640 +640 640 +640 480 +500 375 +480 640 +640 428 +500 375 +333 500 +640 480 +640 434 +427 640 +640 483 +480 640 +640 248 +640 427 +640 426 +640 480 +500 323 +640 480 +640 361 +640 428 +500 375 +640 426 +500 373 +640 427 +512 640 +640 480 +640 480 +480 640 +640 431 +640 404 +640 428 +480 640 +640 381 +428 640 +640 480 +480 640 +612 612 +640 428 +640 394 +640 427 +376 640 +640 426 +640 427 +425 640 +361 640 +427 640 +640 480 +507 640 +612 612 +640 480 +640 480 +500 333 +640 426 +640 450 +426 640 +425 640 +640 480 +640 480 +612 612 +640 427 +480 640 +612 612 +640 480 +640 480 +640 640 +439 640 +640 480 +640 426 +640 480 +640 480 +640 480 +480 640 +640 588 +640 426 +640 480 +480 640 +640 480 +640 480 +352 230 +428 640 +640 480 +640 423 +427 640 +640 512 +640 426 +406 640 +640 480 +640 487 +640 480 +299 500 +640 480 +500 375 +640 480 +640 427 +500 375 +640 480 +640 427 +640 426 +640 428 +640 420 +640 480 +428 640 +427 640 +608 640 +640 423 +480 640 +428 640 +640 478 +640 480 +640 640 +500 335 +500 322 +640 427 +375 500 +640 480 +640 478 +427 640 +640 480 +640 480 +640 528 +438 640 +640 427 +429 640 +640 480 +640 428 +375 500 +480 640 +451 640 +640 456 +640 399 +500 332 +640 427 +427 640 +640 427 +500 375 +640 427 +640 480 +640 427 +640 480 +640 480 +640 480 +640 480 +498 640 +640 427 +640 480 +640 480 +640 480 +640 480 +640 480 +500 375 +640 480 +612 612 +640 427 +640 427 +640 480 +640 361 +640 479 +640 480 +640 444 +640 427 +640 428 +450 500 +640 428 +500 375 +501 640 +500 375 +640 593 +640 427 +640 427 +640 547 +640 480 +612 612 +640 359 +640 480 +640 512 +640 421 +640 437 +500 375 +480 640 +426 640 +640 427 +480 640 +640 427 +612 612 +640 427 +640 480 +640 429 +500 500 +426 640 +640 426 +640 429 +500 375 +640 480 +640 640 +640 406 +640 480 +640 427 +480 640 +640 480 +500 375 +640 444 +640 429 +640 480 +640 400 +640 605 +640 427 +640 480 +335 500 +640 359 +640 338 +640 614 +640 480 +640 390 +487 640 +640 445 +640 427 +640 411 +640 640 +640 427 +640 428 +640 427 +640 426 +640 427 +480 640 +534 640 +480 640 +640 480 +500 333 +500 333 +480 640 +156 640 +640 480 +480 640 +640 640 +640 480 +640 512 +366 604 +375 500 +640 418 +640 419 +640 382 +427 640 +640 480 +640 424 +640 360 +640 480 +640 480 +640 425 +640 480 +480 640 +480 640 +640 480 +528 640 +425 640 +640 424 +375 500 +500 375 +320 240 +480 640 +640 427 +640 427 +332 500 +600 393 +425 640 +480 640 +640 406 +640 423 +640 428 +640 425 +499 640 +469 500 +640 359 +640 626 +640 480 +612 612 +640 480 +640 351 +428 640 +640 305 +480 640 +640 640 +480 640 +640 480 +473 640 +480 640 +640 480 +640 539 +640 427 +640 480 +640 424 +500 320 +480 640 +640 426 +500 333 +427 640 +640 480 +640 428 +330 500 +428 640 +640 480 +640 429 +480 640 +640 427 +640 427 +640 480 +640 480 +640 427 +640 426 +640 427 +640 480 +640 466 +504 640 +640 480 +480 640 +640 426 +640 480 +640 427 +640 480 +480 640 +489 640 +640 426 +640 478 +640 512 +640 480 +246 640 +640 424 +640 480 +640 480 +640 480 +430 640 +640 427 +427 640 +640 434 +640 318 +425 640 +640 480 +640 429 +375 500 +333 500 +640 425 +640 427 +480 640 +640 480 +640 480 +640 216 +640 480 +640 443 +427 640 +480 640 +480 640 +640 480 +640 480 +640 430 +480 640 +500 375 +640 495 +640 427 +640 425 +640 488 +624 640 +640 464 +426 640 +640 480 +640 426 +640 480 +480 640 +640 428 +493 640 +640 428 +612 612 +640 427 +444 640 +640 363 +640 427 +420 640 +480 640 +640 428 +480 640 +500 375 +427 640 +375 500 +640 480 +640 427 +640 480 +640 480 +640 480 +640 433 +640 426 +640 484 +640 480 +425 640 +640 428 +640 436 +640 480 +640 428 +640 480 +640 427 +640 480 +640 427 +427 640 +640 480 +640 480 +500 376 +428 640 +480 640 +640 427 +640 480 +640 480 +640 426 +500 333 +640 445 +638 640 +478 640 +640 427 +640 480 +640 480 +435 640 +640 429 +640 480 +640 427 +438 640 +640 488 +500 400 +640 409 +640 427 +479 640 +500 375 +640 480 +640 448 +640 480 +640 480 +640 480 +640 427 +640 292 +480 640 +480 640 +640 426 +500 332 +480 640 +427 640 +640 480 +480 640 +500 375 +640 480 +433 500 +640 480 +640 480 +500 246 +640 427 +640 427 +456 500 +480 640 +640 480 +640 429 +640 427 +480 640 +640 426 +424 640 +375 500 +500 333 +640 480 +427 640 +640 512 +640 480 +361 500 +375 500 +425 640 +640 425 +612 612 +640 480 +640 425 +640 426 +640 427 +359 500 +640 480 +427 640 +640 428 +427 640 +640 480 +566 640 +480 640 +640 640 +500 375 +500 375 +640 480 +375 500 +640 246 +640 480 +640 480 +427 640 +640 427 +640 427 +640 428 +612 612 +640 429 +640 432 +480 640 +500 378 +640 426 +500 375 +500 333 +640 427 +500 375 +480 640 +640 424 +500 332 +640 481 +640 427 +640 427 +640 456 +640 480 +640 480 +640 434 +640 427 +426 640 +480 640 +640 480 +640 512 +640 640 +640 596 +500 259 +640 428 +640 424 +478 640 +612 612 +504 640 +640 426 +640 428 +640 480 +640 480 +640 480 +640 480 +640 427 +459 640 +640 480 +480 640 +640 480 +427 640 +480 640 +640 480 +640 428 +420 640 +640 480 +640 437 +640 426 +500 333 +640 427 +500 375 +640 427 +640 480 +408 640 +640 428 +640 427 +640 426 +640 480 +640 480 +480 640 +324 500 +640 396 +640 428 +640 480 +640 384 +640 480 +640 480 +640 427 +640 427 +640 472 +640 480 +640 427 +612 612 +640 436 +480 640 +480 640 +640 586 +480 640 +425 640 +640 360 +640 480 +640 480 +640 281 +333 500 +640 480 +500 334 +640 429 +500 333 +640 454 +640 425 +640 480 +640 513 +640 479 +640 583 +640 512 +640 480 +640 360 +640 427 +640 334 +480 640 +640 480 +640 365 +447 640 +500 400 +500 332 +480 640 +426 640 +640 426 +480 640 +640 428 +427 640 +640 419 +318 640 +640 480 +426 640 +640 457 +480 640 +640 427 +640 480 +640 480 +640 428 +640 335 +640 429 +640 457 +640 391 +640 480 +640 428 +640 427 +640 426 +640 521 +427 640 +568 320 +640 427 +640 427 +640 513 +640 480 +500 272 +640 419 +640 480 +640 480 +375 500 +640 425 +640 480 +640 428 +500 375 +427 640 +640 480 +600 448 +640 480 +640 426 +500 375 +640 480 +640 480 +426 640 +640 424 +640 427 +500 375 +640 427 +512 640 +640 480 +640 437 +640 428 +480 640 +640 552 +639 640 +424 640 +640 378 +640 640 +640 417 +480 640 +640 480 +480 640 +640 424 +640 425 +640 427 +640 432 +640 427 +438 640 +500 500 +640 426 +640 441 +640 427 +640 427 +427 640 +640 427 +480 640 +640 359 +612 612 +500 375 +500 332 +612 612 +640 425 +500 375 +640 318 +640 428 +640 427 +500 457 +500 333 +640 480 +360 640 +640 426 +640 427 +640 427 +478 640 +413 640 +640 555 +640 357 +480 640 +612 612 +480 640 +640 427 +500 375 +427 640 +425 640 +640 462 +535 298 +640 427 +640 480 +640 428 +640 480 +427 640 +373 336 +640 480 +640 480 +640 426 +640 427 +640 427 +640 480 +640 427 +500 333 +640 465 +500 396 +500 333 +640 427 +640 426 +427 640 +640 480 +640 428 +480 640 +640 480 +500 375 +640 427 +500 333 +640 282 +640 427 +640 389 +640 544 +640 640 +640 427 +480 640 +500 375 +640 428 +640 459 +299 640 +640 411 +640 610 +612 612 +640 361 +426 640 +640 400 +640 640 +640 426 +640 480 +640 426 +640 480 +500 375 +427 640 +431 640 +640 640 +640 480 +427 640 +480 640 +640 427 +640 376 +640 480 +640 430 +500 335 +640 426 +640 427 +640 360 +338 500 +428 640 +640 429 +426 640 +427 640 +334 500 +427 640 +366 640 +640 427 +640 424 +640 480 +480 640 +640 508 +640 426 +640 457 +640 479 +500 396 +480 640 +640 424 +640 480 +640 470 +640 468 +427 640 +640 427 +640 481 +500 375 +427 640 +640 427 +640 480 +640 361 +640 426 +640 412 +640 480 +640 480 +640 515 +640 413 +640 480 +500 376 +640 360 +640 431 +357 500 +640 478 +478 640 +500 333 +640 428 +457 640 +500 500 +640 428 +640 428 +640 427 +640 427 +500 375 +640 480 +480 640 +640 480 +640 480 +640 480 +640 427 +427 640 +480 640 +494 640 +640 480 +640 480 +640 429 +640 427 +640 425 +640 480 +500 333 +640 480 +427 640 +612 612 +640 480 +640 480 +640 480 +448 336 +640 480 +640 393 +428 640 +640 480 +640 427 +500 404 +640 480 +640 427 +640 427 +640 427 +640 426 +640 428 +640 480 +640 605 +640 480 +640 427 +500 358 +640 480 +480 640 +640 480 +640 319 +500 375 +640 421 +640 427 +640 424 +640 480 +500 375 +424 640 +640 480 +640 480 +640 480 +640 480 +640 604 +640 480 +640 413 +640 427 +375 500 +640 429 +640 480 +640 428 +640 480 +640 427 +427 640 +628 640 +640 480 +500 335 +640 425 +640 427 +612 612 +640 425 +640 360 +320 240 +640 427 +500 377 +612 612 +427 640 +640 480 +640 489 +640 427 +640 424 +640 479 +640 427 +640 480 +478 640 +425 640 +640 424 +500 278 +427 640 +360 640 +640 411 +640 427 +640 480 +640 480 +640 425 +640 480 +640 368 +500 375 +640 480 +640 373 +443 640 +438 640 +640 480 +640 427 +480 640 +375 500 +500 393 +640 480 +640 316 +427 640 +640 428 +640 360 +480 640 +480 640 +640 425 +640 402 +640 480 +640 421 +500 375 +640 348 +427 640 +640 426 +640 427 +640 480 +444 640 +640 480 +640 445 +640 360 +640 480 +477 640 +640 418 +640 369 +428 640 +640 360 +500 375 +640 426 +500 375 +640 480 +640 427 +640 424 +640 438 +640 480 +640 480 +640 458 +359 640 +640 428 +640 427 +640 427 +640 462 +640 427 +640 480 +640 428 +640 480 +640 427 +500 333 +427 640 +424 640 +640 478 +500 375 +640 360 +480 640 +612 612 +640 426 +333 500 +640 640 +640 480 +640 428 +425 640 +640 428 +640 427 +640 464 +480 640 +640 427 +640 480 +640 639 +426 320 +640 426 +478 640 +640 420 +640 640 +640 427 +640 617 +500 375 +640 453 +427 640 +640 425 +640 457 +500 309 +500 375 +640 512 +480 640 +640 480 +426 640 +640 427 +640 480 +640 427 +500 500 +640 509 +640 428 +640 427 +480 640 +541 640 +640 423 +478 640 +640 427 +500 375 +640 427 +428 640 +500 333 +640 428 +640 426 +640 428 +640 480 +640 427 +640 480 +640 480 +428 640 +375 500 +500 375 +556 640 +640 463 +640 480 +500 375 +640 436 +640 427 +640 427 +444 640 +640 425 +640 480 +640 406 +480 640 +612 612 +640 480 +480 640 +640 428 +640 426 +500 333 +640 425 +640 427 +500 375 +640 427 +481 640 +640 427 +500 375 +640 425 +640 425 +640 480 +640 474 +640 480 +640 480 +640 428 +640 427 +640 427 +640 445 +640 480 +375 500 +640 480 +640 480 +466 640 +272 307 +333 500 +640 480 +640 427 +640 424 +640 480 +640 480 +481 640 +640 640 +640 427 +612 612 +640 631 +640 480 +640 427 +428 640 +640 214 +640 418 +640 427 +640 480 +612 612 +473 640 +640 361 +640 269 +375 500 +407 640 +428 640 +640 426 +426 640 +640 480 +640 480 +640 427 +480 640 +640 427 +332 500 +640 425 +640 480 +640 424 +640 427 +640 480 +375 500 +640 427 +500 375 +427 640 +640 445 +640 481 +424 640 +500 375 +500 333 +640 436 +640 480 +480 640 +640 480 +500 366 +375 500 +640 427 +640 381 +640 377 +640 426 +640 427 +640 453 +640 361 +640 426 +501 640 +640 427 +396 640 +612 612 +640 427 +500 331 +640 426 +640 429 +500 375 +640 428 +640 640 +640 480 +640 363 +640 480 +640 480 +426 640 +640 480 +640 427 +640 424 +500 375 +640 380 +640 480 +640 427 +640 425 +640 248 +640 480 +480 640 +480 640 +500 408 +480 640 +500 375 +640 381 +640 480 +426 640 +640 428 +640 426 +640 480 +480 640 +640 480 +640 427 +640 396 +640 480 +640 480 +640 259 +500 375 +580 640 +640 480 +596 640 +427 640 +640 480 +640 411 +333 500 +640 427 +500 375 +640 426 +640 480 +640 480 +640 427 +640 480 +612 612 +640 484 +640 360 +457 640 +500 341 +640 496 +425 640 +640 480 +640 480 +430 640 +500 424 +480 640 +640 427 +640 480 +505 640 +640 480 +512 640 +354 500 +640 427 +500 375 +640 640 +500 375 +640 426 +640 427 +427 640 +333 500 +640 457 +640 480 +427 640 +500 309 +640 427 +427 640 +640 480 +640 359 +640 512 +640 424 +640 480 +640 428 +333 500 +640 480 +480 640 +500 378 +640 427 +426 640 +500 375 +240 320 +240 320 +481 640 +457 640 +640 427 +640 427 +612 612 +640 425 +640 611 +478 640 +640 457 +501 640 +640 427 +640 484 +640 480 +427 640 +500 375 +640 480 +480 640 +480 640 +640 399 +427 640 +640 425 +640 427 +640 480 +640 318 +640 480 +500 375 +640 480 +640 480 +640 480 +640 428 +640 564 +640 426 +640 429 +427 640 +640 457 +640 426 +500 333 +640 480 +640 480 +640 488 +640 480 +500 313 +640 427 +640 480 +640 480 +640 427 +640 480 +500 334 +640 480 +640 471 +640 360 +640 491 +640 478 +640 427 +640 513 +465 640 +506 640 +500 333 +500 490 +480 640 +640 426 +640 369 +500 357 +640 495 +640 428 +640 425 +640 424 +640 460 +513 640 +640 428 +640 480 +640 480 +640 427 +333 500 +640 480 +640 428 +640 466 +640 486 +480 640 +480 640 +500 286 +427 640 +640 348 +403 500 +640 421 +640 480 +640 483 +640 579 +640 427 +640 380 +425 640 +640 480 +640 480 +640 482 +640 436 +640 427 +640 427 +640 478 +427 640 +640 427 +500 351 +640 480 +640 426 +640 426 +640 426 +640 480 +640 480 +640 426 +640 480 +640 427 +640 480 +640 480 +640 480 +640 426 +640 427 +500 333 +640 491 +640 424 +640 480 +427 640 +640 427 +640 480 +640 480 +640 427 +640 480 +640 427 +640 480 +427 640 +640 480 +640 480 +426 640 +640 427 +500 375 +426 640 +480 640 +428 640 +500 500 +640 480 +640 479 +486 640 +640 427 +640 480 +640 480 +640 428 +640 427 +640 426 +640 480 +640 418 +640 480 +640 427 +427 640 +640 480 +375 500 +640 480 +640 427 +640 427 +429 640 +500 375 +640 423 +595 640 +640 360 +640 480 +480 640 +640 473 +427 640 +640 427 +480 640 +480 640 +640 480 +426 640 +640 413 +612 612 +640 480 +480 640 +640 480 +480 640 +500 375 +640 427 +480 640 +640 424 +500 375 +504 351 +640 480 +640 427 +500 375 +640 427 +640 476 +640 426 +640 531 +640 427 +640 480 +640 428 +640 480 +500 354 +480 640 +480 640 +500 375 +640 581 +640 480 +640 404 +500 399 +640 253 +500 333 +640 428 +640 427 +500 333 +640 427 +640 427 +640 640 +640 427 +640 425 +640 427 +640 426 +640 428 +640 480 +640 426 +500 321 +640 457 +427 640 +640 433 +640 425 +640 424 +480 640 +640 480 +640 463 +500 361 +426 640 +640 458 +640 480 +640 480 +336 500 +640 427 +640 480 +612 612 +640 428 +500 375 +640 480 +480 640 +640 427 +640 421 +640 334 +640 480 +640 640 +500 334 +640 424 +640 427 +640 501 +640 480 +640 574 +640 425 +480 640 +500 375 +500 460 +427 640 +500 332 +375 500 +640 640 +640 480 +500 375 +427 640 +640 364 +640 480 +640 428 +640 371 +500 375 +500 375 +640 427 +640 427 +640 480 +640 480 +480 640 +375 500 +640 478 +500 358 +640 429 +640 480 +640 419 +640 425 +494 640 +480 640 +640 448 +640 565 +640 480 +640 360 +427 640 +640 480 +640 480 +640 562 +640 480 +640 428 +640 480 +640 480 +495 640 +480 640 +500 375 +375 500 +482 640 +640 389 +425 640 +640 480 +428 640 +640 480 +428 640 +640 224 +640 435 +640 428 +640 480 +640 427 +500 334 +640 427 +640 427 +427 640 +640 480 +640 426 +640 427 +453 640 +640 481 +500 334 +500 375 +500 375 +426 640 +480 640 +426 640 +457 640 +383 640 +640 480 +612 612 +333 500 +427 640 +640 489 +612 612 +640 413 +640 426 +640 427 +602 640 +640 427 +640 480 +640 480 +640 640 +640 480 +640 427 +640 427 +640 425 +640 427 +612 612 +400 500 +640 427 +640 480 +640 481 +640 480 +640 425 +640 586 +640 428 +640 579 +640 427 +640 425 +427 640 +500 334 +640 428 +375 500 +640 478 +640 480 +640 427 +640 480 +640 480 +640 426 +640 359 +478 640 +640 480 +640 442 +333 500 +640 424 +640 428 +500 332 +640 508 +500 375 +640 427 +640 480 +640 427 +640 475 +425 640 +640 427 +640 436 +460 640 +640 427 +640 360 +640 480 +427 640 +458 640 +640 426 +480 640 +375 500 +640 427 +640 384 +500 333 +640 427 +640 428 +500 333 +640 362 +640 425 +426 640 +640 429 +500 332 +480 640 +640 456 +640 411 +426 640 +640 475 +640 480 +500 333 +500 378 +375 500 +640 480 +640 480 +640 426 +640 444 +640 640 +640 478 +640 426 +640 480 +640 426 +640 480 +425 640 +640 464 +640 478 +480 640 +640 426 +640 426 +640 318 +333 500 +640 328 +500 375 +375 500 +500 331 +640 427 +640 427 +640 480 +612 612 +436 640 +640 480 +640 480 +640 427 +427 640 +375 500 +512 640 +500 350 +640 480 +640 593 +640 425 +375 500 +334 500 +640 480 +640 427 +640 480 +480 640 +480 640 +387 640 +640 427 +640 480 +640 480 +640 427 +612 612 +640 480 +640 458 +500 333 +500 345 +640 408 +640 480 +640 480 +500 375 +457 640 +500 375 +640 364 +640 480 +427 640 +640 426 +333 500 +640 480 +640 480 +458 640 +612 640 +480 640 +640 427 +450 338 +640 428 +640 480 +480 640 +428 640 +640 468 +640 558 +480 640 +612 612 +640 480 +530 640 +640 480 +640 396 +612 612 +640 427 +480 640 +640 423 +640 480 +480 640 +640 529 +500 380 +483 500 +640 427 +500 375 +480 640 +427 640 +480 640 +424 640 +640 427 +640 426 +640 424 +640 480 +640 427 +640 428 +427 640 +640 427 +612 612 +427 640 +640 480 +640 427 +480 640 +640 427 +640 480 +426 640 +427 640 +375 500 +500 376 +427 640 +480 640 +640 427 +428 640 +500 375 +640 480 +640 480 +640 480 +359 640 +640 480 +640 480 +612 612 +535 640 +400 229 +640 480 +640 480 +640 480 +640 427 +612 612 +375 500 +640 480 +336 500 +640 427 +640 480 +640 414 +640 426 +375 500 +640 427 +640 427 +640 480 +428 640 +640 480 +480 640 +640 517 +640 480 +640 480 +500 335 +640 490 +500 333 +352 288 +480 640 +640 425 +640 485 +640 427 +640 480 +640 427 +486 640 +640 427 +640 427 +320 216 +500 375 +445 600 +500 334 +500 339 +612 612 +640 428 +480 640 +640 427 +500 375 +306 640 +640 423 +640 427 +424 640 +640 427 +640 480 +500 333 +612 612 +500 333 +640 360 +640 480 +400 400 +424 640 +640 480 +640 416 +612 612 +640 480 +640 480 +640 479 +640 480 +640 480 +640 426 +640 429 +640 424 +640 427 +640 480 +640 480 +640 480 +612 612 +496 640 +640 480 +426 640 +640 425 +640 480 +640 425 +640 411 +640 640 +360 640 +480 640 +640 480 +640 480 +640 427 +362 640 +640 480 +640 426 +640 426 +500 333 +640 439 +640 511 +640 455 +640 516 +640 427 +612 612 +640 366 +480 640 +640 480 +640 428 +500 375 +640 427 +500 375 +480 640 +640 480 +612 612 +640 451 +640 480 +640 480 +500 375 +640 426 +640 427 +640 480 +640 427 +640 428 +480 640 +385 640 +480 640 +640 480 +640 480 +640 480 +640 480 +640 425 +612 612 +640 640 +640 480 +500 313 +640 480 +640 383 +612 612 +640 479 +640 480 +640 480 +640 457 +500 334 +450 290 +371 640 +640 480 +599 640 +640 453 +640 427 +480 640 +500 375 +640 426 +640 427 +640 477 +640 480 +640 427 +426 640 +640 480 +640 512 +500 375 +640 445 +427 640 +500 401 +480 640 +640 428 +640 480 +640 480 +640 360 +640 454 +640 516 +640 480 +640 479 +640 480 +640 640 +500 400 +640 480 +480 640 +640 480 +640 360 +640 425 +640 426 +359 640 +500 439 +480 640 +640 480 +640 480 +519 640 +491 640 +480 640 +640 479 +640 424 +640 427 +640 360 +640 402 +426 640 +640 480 +481 640 +426 640 +640 425 +427 640 +612 612 +640 480 +640 427 +426 640 +481 640 +480 640 +640 384 +640 426 +612 612 +640 480 +640 361 +640 640 +359 640 +640 480 +640 427 +640 427 +640 472 +500 375 +640 427 +426 640 +640 480 +640 480 +640 480 +640 426 +612 612 +640 428 +640 422 +640 427 +640 427 +640 427 +640 425 +640 428 +640 480 +388 450 +640 427 +640 480 +640 360 +640 427 +500 375 +640 425 +640 426 +640 481 +427 640 +640 484 +640 443 +640 425 +424 640 +478 640 +427 640 +640 438 +500 375 +640 480 +500 375 +500 358 +481 640 +640 428 +480 640 +480 640 +640 480 +425 640 +640 480 +640 329 +640 427 +640 426 +640 480 +640 480 +640 427 +640 483 +640 480 +428 640 +640 425 +500 375 +614 640 +500 334 +640 427 +375 500 +640 640 +500 400 +640 480 +640 447 +640 428 +640 427 +332 500 +480 640 +500 333 +640 520 +500 333 +467 350 +427 640 +640 427 +640 427 +375 500 +640 427 +425 640 +640 426 +640 512 +640 427 +640 429 +640 429 +500 375 +428 640 +500 333 +640 428 +640 426 +640 480 +500 333 +640 480 +478 640 +640 380 +640 481 +640 402 +640 427 +500 375 +500 332 +640 372 +640 318 +640 480 +640 427 +640 478 +640 335 +500 375 +640 426 +640 480 +640 640 +640 480 +480 640 +640 480 +640 480 +375 500 +324 500 +640 432 +640 425 +640 480 +640 360 +640 427 +640 480 +640 428 +427 640 +500 400 +640 480 +640 480 +640 480 +375 500 +621 480 +640 386 +500 500 +640 426 +640 480 +640 480 +500 375 +640 480 +640 398 +640 427 +500 375 +640 494 +480 640 +424 640 +640 480 +640 366 +640 480 +446 640 +640 427 +500 415 +640 427 +331 500 +612 612 +640 427 +640 480 +640 511 +427 640 +640 428 +600 400 +640 424 +640 480 +640 480 +640 427 +640 468 +640 480 +640 427 +640 480 +640 359 +640 418 +640 427 +375 500 +640 480 +640 427 +500 375 +480 640 +640 480 +478 640 +612 612 +640 480 +640 431 +640 427 +480 640 +640 428 +480 640 +464 640 +480 640 +612 612 +500 375 +640 428 +640 480 +640 503 +500 333 +428 640 +640 480 +640 281 +640 428 +422 640 +352 640 +640 480 +640 427 +500 339 +640 432 +640 427 +640 427 +427 640 +640 424 +332 500 +640 427 +612 612 +640 361 +640 427 +480 640 +640 541 +640 434 +640 428 +480 640 +640 480 +640 480 +640 402 +640 480 +640 428 +501 640 +427 640 +426 640 +640 426 +640 426 +444 640 +480 640 +640 480 +612 612 +640 429 +640 445 +640 364 +640 427 +640 426 +640 425 +640 360 +428 640 +500 375 +640 523 +640 480 +640 519 +640 480 +640 426 +640 426 +640 428 +640 480 +480 640 +425 640 +640 640 +640 480 +612 612 +640 480 +640 427 +640 480 +640 427 +427 640 +640 427 +640 427 +375 500 +640 480 +640 427 +404 500 +640 415 +640 480 +640 480 +427 640 +640 428 +500 375 +480 640 +512 640 +640 480 +427 640 +640 366 +481 640 +500 375 +640 480 +640 426 +640 432 +640 480 +640 427 +640 427 +640 426 +640 427 +640 480 +612 612 +640 480 +640 480 +500 375 +640 427 +640 435 +533 640 +480 640 +427 640 +640 427 +640 427 +640 426 +640 426 +640 480 +640 480 +500 375 +640 640 +640 427 +640 482 +640 427 +640 480 +600 450 +427 640 +640 424 +426 640 +640 480 +640 425 +640 480 +463 640 +640 457 +640 400 +640 427 +640 517 +640 426 +640 425 +640 427 +640 480 +427 640 +426 640 +480 640 +640 427 +640 480 +640 512 +640 428 +427 640 +640 467 +426 640 +640 424 +640 640 +426 640 +640 444 +640 427 +640 427 +640 375 +640 428 +480 640 +640 426 +640 500 +640 427 +640 427 +427 640 +640 361 +640 480 +480 640 +500 328 +640 480 +640 480 +426 640 +640 480 +640 478 +640 454 +640 400 +640 480 +640 480 +640 360 +640 480 +640 480 +500 375 +480 640 +640 640 +640 480 +640 480 +640 427 +640 480 +640 480 +640 480 +640 428 +640 640 +640 427 +640 428 +640 393 +640 406 +500 375 +640 491 +473 640 +427 640 +640 480 +640 480 +500 332 +640 425 +640 472 +640 480 +640 428 +375 500 +640 384 +640 480 +640 480 +426 640 +640 427 +375 500 +640 480 +640 480 +640 480 +375 500 +640 427 +640 457 +539 640 +640 639 +500 375 +640 427 +640 428 +640 461 +480 640 +640 427 +500 375 +428 640 +480 640 +240 320 +640 425 +640 479 +612 612 +640 426 +640 480 +640 425 +640 432 +640 480 +640 313 +640 480 +640 640 +640 480 +500 375 +640 429 +640 421 +640 428 +640 480 +428 640 +640 480 +640 488 +640 480 +500 285 +640 359 +640 480 +640 383 +476 640 +480 640 +480 640 +640 344 +480 640 +640 427 +640 383 +480 640 +480 640 +640 480 +441 500 +480 640 +640 480 +640 425 +640 640 +640 480 +640 480 +640 427 +482 482 +640 428 +640 425 +640 428 +480 640 +640 427 +640 360 +640 426 +480 640 +500 339 +500 350 +640 480 +500 334 +640 458 +640 425 +640 480 +481 640 +640 425 +640 480 +640 428 +640 480 +640 480 +640 480 +640 480 +500 375 +640 427 +640 255 +480 640 +640 480 +335 640 +640 427 +640 426 +600 449 +640 480 +640 478 +425 640 +612 612 +640 480 +500 333 +640 427 +640 480 +332 500 +640 301 +481 640 +640 479 +384 640 +640 468 +640 383 +640 480 +291 455 +640 480 +640 427 +640 480 +480 640 +427 640 +640 424 +640 427 +500 375 +640 458 +480 640 +480 640 +640 426 +640 640 +480 640 +448 336 +500 375 +640 425 +640 425 +601 640 +640 480 +640 427 +640 427 +425 640 +500 416 +640 427 +640 541 +640 481 +640 480 +640 409 +640 427 +640 399 +500 375 +640 427 +449 640 +640 427 +640 478 +640 480 +640 425 +640 428 +500 333 +640 598 +500 333 +375 500 +427 640 +640 213 +500 333 +640 480 +640 444 +429 640 +500 375 +640 480 +500 375 +427 640 +640 614 +640 427 +480 640 +640 480 +480 640 +426 640 +640 427 +428 640 +640 426 +640 457 +640 424 +640 480 +640 426 +640 427 +640 426 +423 640 +640 480 +640 427 +640 360 +640 427 +640 480 +436 640 +428 640 +375 500 +640 530 +640 480 +500 375 +640 427 +640 428 +640 480 +640 426 +640 424 +640 480 +514 640 +640 428 +640 427 +640 428 +640 427 +640 413 +612 612 +640 424 +640 480 +640 312 +640 427 +640 427 +640 426 +485 640 +640 360 +427 640 +640 513 +640 427 +640 629 +640 426 +640 427 +640 640 +640 427 +640 480 +640 480 +640 480 +478 640 +640 465 +400 320 +500 375 +640 427 +472 640 +640 480 +480 640 +640 438 +500 375 +350 500 +640 475 +640 480 +640 480 +612 612 +640 442 +360 640 +640 480 +640 481 +640 480 +640 388 +640 480 +640 480 +640 334 +640 401 +640 425 +640 478 +640 412 +640 480 +577 448 +426 640 +406 500 +640 427 +478 640 +480 640 +640 427 +500 374 +427 640 +478 640 +640 480 +640 469 +640 428 +640 480 +640 427 +640 480 +500 375 +640 480 +640 480 +500 400 +640 480 +640 480 +396 640 +640 415 +640 427 +640 480 +640 426 +500 375 +480 640 +640 427 +640 480 +640 360 +640 426 +480 640 +640 427 +640 427 +640 428 +500 333 +640 427 +640 480 +640 425 +427 640 +640 538 +640 480 +424 640 +640 441 +501 640 +640 480 +480 640 +640 474 +640 429 +640 425 +640 378 +640 480 +640 480 +640 430 +640 426 +496 640 +480 640 +500 375 +640 480 +480 640 +480 360 +500 378 +640 480 +480 640 +640 480 +640 613 +640 428 +427 640 +482 640 +500 356 +640 427 +640 640 +480 640 +640 438 +426 640 +640 480 +640 360 +640 360 +640 427 +640 483 +500 375 +640 428 +640 409 +500 334 +640 429 +640 427 +457 640 +640 444 +640 480 +640 427 +640 427 +640 427 +640 383 +425 640 +480 640 +424 640 +500 475 +640 480 +640 427 +640 480 +640 427 +640 427 +640 427 +640 480 +640 427 +640 425 +427 640 +640 480 +480 640 +480 640 +640 427 +500 258 +640 480 +640 480 +640 480 +640 450 +640 480 +640 359 +640 604 +640 427 +500 275 +640 443 +451 640 +640 426 +500 333 +640 427 +640 425 +427 640 +640 309 +640 480 +640 427 +640 435 +427 640 +640 480 +640 361 +640 427 +640 480 +640 479 +640 480 +640 480 +427 640 +640 480 +633 640 +640 480 +640 360 +332 500 +640 478 +427 640 +640 396 +640 427 +640 427 +480 640 +480 640 +458 640 +500 375 +425 640 +640 427 +428 640 +640 424 +480 640 +640 480 +640 480 +640 427 +640 396 +612 612 +306 640 +640 480 +640 480 +640 480 +640 427 +640 480 +361 640 +640 480 +500 333 +640 427 +640 480 +640 427 +426 640 +478 640 +640 480 +640 426 +640 403 +640 579 +640 480 +427 640 +640 425 +640 480 +612 612 +640 425 +500 375 +640 360 +640 480 +640 427 +640 427 +640 480 +640 427 +640 480 +480 640 +426 640 +640 480 +640 480 +640 425 +640 427 +446 640 +640 480 +484 500 +425 640 +640 640 +471 500 +640 480 +640 439 +640 428 +612 612 +600 600 +500 333 +640 480 +640 480 +640 425 +640 480 +640 480 +640 443 +640 485 +640 480 +426 640 +423 640 +640 419 +640 480 +424 640 +640 436 +640 511 +640 449 +640 426 +640 480 +640 480 +480 640 +640 426 +640 480 +640 427 +640 480 +640 403 +640 640 +640 426 +480 640 +500 400 +640 480 +176 144 +500 375 +500 400 +640 426 +500 384 +640 480 +640 480 +506 640 +640 427 +480 640 +640 424 +640 360 +640 427 +640 427 +640 427 +640 427 +640 445 +640 480 +640 474 +640 480 +640 427 +640 480 +427 640 +478 640 +640 480 +640 403 +640 426 +640 480 +640 448 +640 480 +640 640 +640 423 +640 529 +640 427 +640 427 +612 612 +640 480 +640 427 +640 427 +480 640 +640 427 +640 427 +426 640 +640 428 +640 359 +640 427 +640 480 +640 427 +640 360 +640 427 +480 640 +423 640 +500 375 +640 391 +640 480 +480 640 +640 427 +640 427 +640 332 +375 500 +640 425 +640 480 +640 360 +493 640 +331 500 +640 427 +640 480 +480 640 +640 480 +640 425 +640 480 +427 640 +480 640 +640 341 +480 640 +480 640 +376 500 +640 487 +428 640 +640 480 +640 426 +640 449 +480 640 +640 427 +480 640 +640 428 +596 640 +640 396 +640 369 +480 640 +640 480 +640 480 +480 640 +640 427 +500 375 +640 425 +640 480 +640 360 +640 480 +640 480 +640 470 +427 640 +500 272 +612 612 +640 425 +375 500 +500 333 +478 640 +640 428 +612 612 +640 427 +640 480 +471 640 +640 426 +500 375 +500 375 +400 500 +640 576 +640 480 +500 281 +400 640 +500 375 +640 471 +431 640 +375 500 +640 427 +471 500 +640 480 +640 553 +640 480 +427 640 +480 640 +480 640 +375 500 +529 640 +640 423 +360 640 +500 375 +600 450 +500 333 +426 640 +640 436 +640 480 +480 640 +640 424 +640 480 +640 426 +640 480 +427 640 +640 480 +640 427 +640 425 +640 425 +640 480 +640 426 +480 640 +640 478 +640 480 +427 640 +640 500 +640 383 +640 427 +640 480 +640 430 +640 429 +640 480 +640 384 +640 425 +480 640 +428 640 +310 500 +640 478 +640 428 +640 361 +640 427 +640 427 +640 640 +640 456 +500 405 +640 427 +491 640 +480 640 +500 374 +427 640 +333 500 +500 401 +640 478 +480 640 +640 407 +640 425 +428 640 +640 427 +640 360 +479 640 +640 424 +612 612 +640 427 +640 488 +500 375 +499 640 +480 640 +640 480 +640 523 +640 427 +640 360 +640 524 +640 574 +480 640 +640 427 +640 426 +640 427 +640 516 +426 640 +640 480 +480 640 +500 375 +427 640 +500 376 +427 640 +480 640 +640 480 +640 426 +640 523 +640 481 +640 427 +500 375 +640 480 +398 500 +640 640 +640 480 +640 480 +640 426 +424 640 +500 333 +640 427 +640 480 +640 429 +455 640 +640 480 +640 426 +480 640 +640 427 +640 451 +640 424 +640 480 +427 640 +424 640 +640 480 +500 281 +640 427 +426 640 +640 405 +612 612 +427 640 +426 640 +500 333 +640 427 +633 640 +640 480 +640 361 +640 427 +640 427 +480 640 +556 407 +640 480 +640 424 +640 480 +640 477 +637 640 +640 639 +334 500 +640 480 +640 480 +426 640 +480 640 +640 480 +502 640 +640 614 +427 640 +640 480 +640 424 +425 640 +640 512 +480 640 +640 427 +640 479 +640 360 +500 375 +424 640 +640 480 +640 428 +640 389 +640 435 +640 480 +480 640 +640 480 +640 480 +425 282 +426 640 +640 425 +640 424 +640 480 +640 363 +480 640 +640 480 +640 428 +640 499 +640 431 +640 427 +640 427 +640 427 +640 480 +555 640 +640 479 +640 480 +427 640 +640 427 +640 480 +640 428 +640 428 +640 480 +640 427 +640 330 +640 480 +427 640 +427 640 +640 480 +640 480 +500 416 +514 640 +375 500 +640 427 +480 640 +640 427 +640 427 +450 450 +640 424 +423 640 +640 428 +427 640 +640 425 +500 375 +640 447 +640 480 +640 426 +640 424 +640 430 +640 450 +640 425 +640 480 +427 640 +421 500 +512 640 +640 427 +640 480 +482 389 +640 428 +640 480 +397 640 +640 549 +640 428 +375 500 +640 480 +640 640 +640 434 +640 640 +640 433 +640 480 +640 360 +640 480 +640 480 +480 640 +640 428 +640 480 +320 240 +640 428 +427 640 +640 426 +480 640 +640 427 +640 427 +500 368 +640 427 +500 333 +500 333 +640 480 +266 187 +640 424 +425 640 +640 480 +640 480 +640 480 +500 324 +640 478 +626 640 +640 426 +426 640 +640 480 +480 640 +640 427 +640 427 +480 640 +640 480 +480 640 +640 428 +640 480 +640 330 +640 425 +640 360 +478 640 +500 333 +640 428 +480 640 +500 333 +640 480 +500 332 +640 428 +427 640 +640 480 +640 480 +640 427 +640 531 +640 361 +640 480 +640 429 +640 360 +640 512 +640 425 +424 500 +426 640 +640 427 +640 427 +640 473 +419 640 +640 532 +463 640 +640 480 +640 480 +640 427 +640 425 +640 480 +640 497 +640 480 +500 333 +640 480 +500 375 +640 517 +640 398 +612 612 +640 426 +425 640 +640 485 +640 480 +633 640 +640 427 +480 640 +406 610 +429 640 +640 519 +640 426 +427 640 +640 480 +640 425 +425 640 +500 375 +427 640 +500 375 +640 480 +640 427 +640 428 +640 480 +426 640 +640 480 +640 480 +640 479 +640 427 +640 424 +480 640 +500 400 +640 361 +640 480 +478 640 +640 425 +640 427 +480 640 +640 329 +640 446 +640 426 +640 428 +428 640 +612 612 +640 480 +640 480 +640 427 +480 640 +640 457 +587 640 +640 425 +640 427 +500 375 +640 427 +640 427 +640 639 +426 640 +640 480 +640 640 +640 427 +428 640 +640 457 +640 425 +640 427 +640 480 +427 640 +640 426 +640 480 +640 428 +640 478 +640 480 +480 640 +640 457 +478 640 +428 640 +640 487 +500 333 +640 480 +640 454 +368 640 +640 427 +372 640 +640 425 +640 426 +640 426 +640 480 +640 425 +640 480 +500 500 +425 640 +640 442 +500 335 +640 480 +640 427 +640 426 +640 427 +375 500 +500 336 +640 482 +640 396 +640 480 +640 480 +640 360 +352 288 +640 480 +640 480 +640 426 +640 480 +427 640 +640 475 +640 426 +375 500 +640 427 +640 425 +480 640 +640 640 +640 521 +640 427 +640 480 +640 400 +640 480 +375 500 +353 640 +375 500 +600 400 +640 425 +428 640 +640 512 +640 480 +640 478 +480 640 +500 480 +500 333 +480 640 +640 427 +640 640 +640 480 +640 428 +427 640 +600 450 +339 500 +426 640 +480 640 +640 427 +640 427 +640 428 +640 418 +500 332 +640 480 +640 426 +500 375 +640 480 +480 640 +640 426 +640 514 +640 436 +640 480 +622 640 +640 425 +500 500 +427 640 +640 425 +640 427 +480 640 +500 321 +640 480 +480 640 +424 640 +640 419 +640 428 +409 640 +640 478 +640 426 +640 430 +640 360 +480 640 +500 334 +400 500 +480 640 +640 427 +640 428 +640 421 +500 375 +480 640 +640 480 +480 640 +640 272 +640 427 +640 426 +640 480 +640 360 +640 480 +640 480 +640 482 +375 500 +640 425 +640 383 +640 480 +640 480 +640 480 +640 427 +640 480 +640 480 +640 427 +494 330 +640 428 +640 427 +640 428 +640 427 +640 427 +640 470 +640 425 +375 500 +426 640 +385 500 +640 425 +500 375 +640 458 +640 480 +640 214 +480 640 +640 541 +640 427 +480 640 +640 480 +640 427 +640 427 +500 381 +612 612 +640 435 +480 640 +640 503 +640 480 +500 387 +640 479 +640 478 +640 480 +640 480 +640 426 +640 427 +640 428 +640 480 +500 333 +640 480 +640 480 +424 640 +640 480 +640 435 +640 480 +457 640 +612 612 +640 427 +500 375 +640 425 +640 480 +640 517 +640 427 +640 266 +640 360 +476 640 +640 427 +640 413 +640 480 +640 480 +640 427 +480 640 +480 640 +500 303 +640 427 +500 375 +640 389 +480 640 +427 640 +427 640 +640 480 +640 480 +640 480 +640 308 +511 640 +640 523 +640 427 +424 640 +426 640 +640 480 +640 480 +375 500 +500 375 +500 375 +600 400 +512 640 +640 480 +640 480 +640 480 +640 425 +612 612 +640 427 +640 480 +427 640 +500 374 +640 480 +500 375 +640 426 +640 480 +612 612 +640 427 +640 424 +427 640 +480 640 +320 216 +499 640 +415 640 +374 500 +640 427 +640 480 +640 426 +640 360 +480 640 +640 480 +640 427 +341 500 +640 480 +640 480 +428 640 +480 640 +640 480 +640 480 +640 478 +428 640 +640 483 +424 640 +640 480 +640 426 +640 480 +640 359 +516 408 +640 480 +640 480 +480 640 +417 640 +640 478 +500 333 +640 480 +427 640 +640 360 +640 545 +640 480 +640 482 +640 506 +640 480 +640 480 +640 482 +640 480 +640 559 +427 640 +480 640 +480 640 +640 507 +500 335 +640 360 +550 400 +640 427 +640 480 +500 334 +480 640 +640 609 +500 333 +640 480 +640 426 +600 450 +640 480 +640 427 +640 480 +480 640 +640 480 +640 426 +512 640 +640 426 +640 425 +640 480 +480 640 +500 375 +640 381 +640 427 +640 427 +640 509 +640 427 +640 400 +640 480 +640 429 +480 640 +640 480 +640 618 +640 426 +427 640 +640 480 +640 427 +500 335 +603 640 +427 640 +640 480 +640 480 +582 640 +640 427 +500 332 +640 445 +478 640 +640 480 +640 400 +509 640 +612 612 +640 427 +640 425 +640 480 +640 480 +500 256 +640 427 +426 640 +640 426 +500 375 +640 480 +288 352 +640 480 +640 480 +480 640 +640 427 +500 375 +640 480 +480 640 +640 426 +640 427 +640 428 +500 375 +640 427 +640 640 +640 480 +640 427 +640 480 +640 480 +640 348 +640 425 +640 613 +427 640 +640 427 +500 500 +640 427 +480 640 +479 640 +640 639 +600 400 +640 480 +640 427 +320 240 +480 640 +500 375 +640 234 +640 427 +640 427 +640 427 +500 333 +500 375 +640 433 +640 427 +640 424 +640 480 +640 480 +612 612 +470 332 +640 322 +640 480 +640 521 +640 427 +640 427 +500 375 +640 480 +640 427 +640 480 +640 501 +640 424 +460 640 +640 419 +640 480 +640 480 +500 375 +640 427 +640 427 +333 500 +640 426 +375 500 +500 374 +640 512 +500 375 +640 425 +640 480 +480 640 +480 640 +427 640 +500 375 +640 427 +480 640 +640 427 +640 480 +612 612 +640 480 +480 640 +640 555 +457 640 +500 375 +480 640 +640 480 +500 323 +612 612 +640 480 +640 480 +640 406 +640 480 +640 427 +640 429 +640 426 +480 640 +500 332 +640 427 +640 480 +425 640 +426 640 +640 425 +375 500 +458 640 +640 427 +640 427 +640 427 +427 640 +640 445 +640 427 +640 427 +640 457 +500 500 +640 427 +640 427 +640 563 +640 419 +428 640 +500 375 +640 456 +640 480 +640 427 +427 640 +375 500 +640 427 +479 640 +640 426 +640 427 +500 335 +640 427 +640 383 +500 338 +640 426 +427 640 +640 480 +500 375 +426 640 +640 424 +500 332 +640 480 +424 640 +640 480 +421 640 +640 176 +640 480 +640 426 +640 639 +640 480 +480 640 +640 425 +640 480 +640 480 +640 429 +500 375 +612 612 +640 566 +640 427 +640 526 +480 640 +480 640 +427 640 +640 428 +425 640 +640 517 +640 433 +240 320 +640 426 +417 640 +640 428 +640 425 +361 500 +640 523 +640 480 +640 480 +640 478 +640 427 +640 427 +425 640 +500 332 +500 375 +640 427 +426 640 +640 427 +640 425 +500 333 +480 640 +427 640 +500 362 +640 480 +640 533 +640 428 +427 640 +640 480 +361 640 +500 375 +640 480 +640 522 +500 456 +427 640 +500 321 +640 480 +640 427 +640 425 +480 640 +640 480 +640 360 +640 480 +335 500 +480 640 +427 640 +500 375 +500 334 +478 640 +640 427 +640 480 +640 427 +425 640 +640 427 +375 500 +640 480 +640 427 +612 612 +640 429 +640 480 +437 640 +424 640 +480 640 +640 427 +640 426 +640 429 +640 480 +640 419 +426 640 +640 480 +640 428 +640 480 +640 480 +500 375 +640 480 +640 427 +640 457 +640 425 +640 427 +500 375 +640 395 +468 640 +640 407 +640 436 +640 427 +426 640 +640 427 +640 427 +480 640 +640 428 +500 375 +640 427 +640 425 +640 480 +375 500 +427 640 +500 375 +640 480 +612 612 +640 478 +640 426 +500 281 +640 480 +427 640 +425 640 +640 480 +640 425 +480 640 +268 640 +480 640 +640 426 +500 333 +640 427 +618 640 +500 333 +640 426 +640 420 +612 612 +640 575 +640 427 +640 427 +430 640 +427 640 +640 480 +480 640 +333 500 +640 427 +427 640 +640 480 +429 640 +640 319 +375 500 +640 428 +640 429 +640 427 +612 612 +640 480 +415 640 +640 426 +612 612 +640 480 +640 276 +640 640 +427 640 +640 427 +640 480 +640 480 +640 468 +640 426 +480 640 +640 508 +640 233 +443 640 +640 480 +640 480 +500 375 +640 427 +640 468 +640 427 +448 640 +480 640 +459 640 +640 426 +640 428 +640 428 +640 480 +426 640 +640 428 +640 480 +424 640 +640 425 +640 480 +333 500 +500 375 +640 425 +640 480 +640 425 +640 480 +500 335 +640 403 +640 480 +640 480 +640 480 +640 427 +640 425 +640 427 +500 333 +640 427 +640 480 +640 480 +640 480 +640 425 +640 480 +640 480 +640 480 +640 480 +640 428 +425 640 +640 426 +640 427 +640 256 +612 612 +640 427 +640 427 +640 480 +500 375 +480 640 +500 333 +640 567 +640 426 +339 500 +640 423 +640 480 +480 640 +640 533 +480 640 +640 428 +640 427 +640 480 +612 612 +640 480 +640 427 +426 640 +640 426 +640 436 +480 640 +640 427 +640 426 +640 480 +480 640 +640 478 +429 640 +640 427 +323 500 +500 375 +480 640 +500 494 +333 500 +500 375 +640 400 +427 640 +640 428 +240 180 +612 612 +598 640 +376 479 +640 480 +333 500 +427 640 +480 640 +640 458 +640 480 +480 640 +640 480 +480 640 +500 332 +640 310 +640 480 +500 375 +640 640 +640 427 +640 480 +640 427 +640 480 +500 375 +640 428 +427 640 +500 376 +426 640 +480 640 +640 480 +640 427 +640 428 +640 480 +640 439 +400 400 +425 640 +640 640 +640 431 +444 500 +500 333 +640 427 +640 425 +640 427 +559 640 +640 428 +426 640 +640 480 +471 640 +640 429 +640 427 +500 375 +480 640 +640 427 +640 480 +640 480 +640 427 +640 480 +480 640 +640 499 +426 640 +612 612 +500 375 +640 425 +427 640 +640 415 +640 427 +640 513 +640 480 +500 375 +640 434 +640 429 +640 480 +333 500 +640 427 +640 425 +640 480 +640 480 +500 375 +318 500 +480 640 +640 481 +500 375 +500 375 +640 480 +480 640 +500 306 +640 480 +640 480 +640 480 +436 640 +480 640 +640 480 +640 480 +640 426 +427 640 +640 427 +640 428 +500 400 +640 424 +333 500 +486 640 +480 640 +640 428 +640 444 +514 640 +640 406 +640 480 +480 640 +425 640 +640 378 +458 640 +640 426 +640 480 +500 375 +469 640 +480 640 +427 640 +640 480 +640 427 +478 640 +640 427 +334 500 +640 427 +500 443 +427 640 +640 480 +640 425 +502 640 +375 500 +640 427 +500 334 +500 375 +427 640 +480 640 +640 427 +640 429 +443 640 +640 441 +500 333 +449 640 +500 333 +640 424 +270 360 +640 498 +333 500 +480 640 +429 640 +640 478 +640 360 +640 480 +640 437 +480 640 +480 640 +640 640 +640 480 +640 426 +640 480 +640 480 +425 640 +640 480 +427 640 +640 480 +640 427 +640 479 +640 427 +500 500 +640 344 +640 354 +640 480 +427 640 +640 418 +640 427 +640 428 +640 485 +640 426 +500 376 +612 612 +500 375 +500 375 +640 499 +427 640 +480 640 +640 561 +640 429 +640 480 +480 640 +612 612 +500 332 +480 640 +640 427 +375 500 +480 640 +640 373 +480 640 +640 427 +640 418 +640 480 +640 426 +427 640 +640 480 +480 640 +433 640 +640 369 +640 427 +500 335 +640 495 +640 487 +612 612 +359 640 +640 480 +598 640 +500 400 +425 640 +640 427 +640 427 +500 336 +640 298 +640 480 +640 480 +412 640 +640 480 +640 595 +480 640 +375 500 +478 640 +640 480 +480 640 +500 375 +500 305 +500 326 +640 480 +640 383 +612 612 +640 424 +640 427 +640 428 +500 375 +640 512 +640 480 +571 640 +500 375 +500 375 +640 480 +640 427 +640 480 +640 429 +640 427 +428 640 +640 427 +640 427 +640 480 +480 640 +640 426 +640 427 +500 345 +640 480 +436 500 +640 480 +640 496 +640 480 +480 640 +640 426 +640 426 +640 424 +640 390 +640 425 +640 425 +640 427 +640 451 +640 480 +640 425 +640 428 +640 640 +640 480 +640 425 +640 479 +640 427 +640 427 +640 480 +640 480 +500 393 +640 427 +480 640 +640 453 +640 480 +640 480 +640 480 +640 395 +640 427 +640 598 +640 426 +640 427 +640 427 +500 375 +640 480 +640 480 +375 500 +375 500 +640 480 +640 427 +640 640 +640 480 +480 640 +640 480 +640 480 +640 422 +423 640 +640 443 +500 332 +640 480 +640 426 +640 480 +640 640 +480 640 +640 424 +640 427 +640 359 +640 424 +640 428 +640 424 +480 640 +427 640 +640 480 +376 640 +640 427 +640 480 +429 640 +640 443 +640 427 +480 640 +640 425 +480 640 +459 640 +640 361 +640 445 +225 225 +500 329 +640 480 +426 640 +640 480 +640 427 +428 640 +640 480 +640 426 +493 500 +640 480 +224 300 +640 427 +612 612 +640 480 +640 427 +640 426 +640 480 +640 640 +640 427 +640 451 +640 480 +640 425 +480 640 +500 333 +640 424 +640 451 +640 480 +640 427 +640 480 +640 480 +478 640 +400 600 +480 640 +640 480 +425 640 +640 480 +640 426 +346 640 +640 480 +500 270 +640 480 +640 480 +640 426 +640 559 +640 480 +428 640 +640 426 +640 391 +640 392 +612 612 +640 480 +633 640 +500 287 +480 640 +640 480 +640 512 +640 355 +427 640 +640 427 +640 428 +640 426 +640 543 +425 640 +500 333 +498 635 +640 480 +640 480 +640 429 +640 426 +640 428 +640 480 +640 478 +519 640 +640 428 +640 480 +640 426 +500 500 +640 427 +640 352 +360 480 +640 480 +640 240 +500 375 +427 640 +640 480 +500 333 +640 427 +480 640 +500 388 +500 334 +640 426 +640 480 +500 333 +640 480 +480 640 +640 480 +500 375 +640 480 +640 480 +500 375 +640 480 +640 426 +480 640 +640 480 +640 426 +640 376 +500 333 +640 427 +500 387 +333 500 +640 403 +640 480 +600 400 +640 480 +427 640 +384 640 +640 427 +500 329 +640 480 +640 425 +640 424 +640 544 +640 436 +640 426 +640 640 +640 427 +640 478 +640 427 +640 424 +365 640 +500 375 +640 427 +500 375 +640 427 +640 458 +640 480 +480 640 +500 375 +500 335 +480 640 +612 612 +446 640 +640 480 +640 480 +640 476 +600 402 +500 333 +500 334 +500 375 +426 640 +475 640 +500 350 +640 453 +529 640 +640 426 +640 248 +480 640 +554 640 +360 640 +640 427 +480 640 +500 375 +640 480 +640 480 +640 480 +640 427 +640 480 +640 439 +512 640 +500 333 +640 427 +640 428 +640 427 +640 480 +428 640 +500 375 +640 480 +640 480 +500 375 +640 399 +640 427 +640 480 +427 640 +480 640 +640 457 +640 427 +640 411 +640 480 +500 375 +640 480 +500 375 +640 437 +640 480 +640 360 +500 375 +640 479 +640 427 +640 427 +640 480 +332 500 +640 480 +640 480 +640 480 +500 255 +640 480 +427 640 +640 425 +640 427 +500 332 +640 480 +640 424 +640 453 +500 333 +480 640 +612 612 +640 480 +612 612 +528 512 +640 480 +640 480 +640 480 +471 640 +429 640 +640 640 +640 430 +640 425 +411 640 +640 428 +640 425 +640 427 +640 418 +500 375 +427 640 +640 427 +508 640 +640 425 +427 640 +640 360 +640 360 +424 283 +640 421 +640 479 +640 480 +429 640 +640 418 +640 427 +640 427 +375 500 +640 426 +375 500 +640 445 +640 440 +480 640 +640 451 +500 375 +640 510 +640 480 +640 480 +640 466 +640 334 +640 333 +480 640 +640 480 +640 480 +640 427 +640 640 +500 375 +640 480 +640 428 +640 428 +500 375 +640 426 +427 640 +640 426 +640 604 +612 612 +640 428 +640 426 +640 427 +640 428 +640 428 +500 500 +640 480 +478 640 +640 444 +640 426 +640 427 +640 480 +640 428 +480 640 +640 425 +640 494 +375 500 +640 480 +640 425 +359 640 +640 458 +640 426 +640 427 +640 480 +640 425 +333 500 +640 427 +500 320 +333 500 +500 375 +500 375 +500 375 +640 480 +640 640 +480 640 +351 234 +500 333 +500 375 +640 426 +480 640 +480 640 +640 427 +640 489 +640 480 +640 427 +640 480 +640 640 +640 640 +500 334 +640 480 +640 427 +640 427 +640 426 +640 426 +640 427 +640 427 +640 356 +640 480 +538 640 +640 360 +640 427 +640 427 +640 480 +640 427 +480 640 +640 299 +640 425 +640 480 +320 240 +640 426 +480 360 +640 480 +640 426 +640 480 +640 480 +640 427 +500 375 +640 111 +640 427 +480 640 +640 478 +640 448 +612 612 +640 425 +640 426 +640 427 +640 425 +333 500 +425 640 +640 425 +427 640 +500 334 +480 640 +480 640 +640 480 +640 427 +640 281 +640 428 +500 364 +640 480 +640 424 +640 480 +640 428 +640 426 +334 500 +500 375 +427 640 +640 480 +640 424 +442 640 +480 640 +333 500 +500 500 +500 375 +640 480 +631 640 +640 480 +427 640 +640 429 +640 426 +640 428 +480 640 +640 362 +640 480 +640 471 +640 480 +640 480 +640 640 +640 457 +640 425 +427 640 +640 464 +640 427 +640 427 +428 640 +640 480 +640 427 +428 640 +640 480 +640 480 +480 640 +640 439 +640 428 +332 500 +500 363 +640 424 +640 480 +640 427 +500 375 +640 425 +640 427 +427 640 +640 425 +640 480 +640 427 +471 640 +468 500 +640 427 +640 480 +375 500 +640 480 +640 426 +640 314 +640 427 +480 640 +640 427 +500 375 +640 480 +640 424 +640 480 +640 591 +438 640 +640 425 +640 425 +640 480 +427 640 +640 480 +425 640 +640 480 +500 375 +640 480 +640 429 +640 480 +427 640 +500 436 +478 640 +640 480 +500 375 +500 375 +500 333 +500 375 +397 500 +640 360 +500 375 +640 480 +640 427 +480 640 +640 427 +640 480 +640 470 +640 480 +640 428 +640 427 +640 480 +500 375 +427 640 +640 480 +640 458 +640 480 +640 425 +640 390 +640 549 +640 428 +640 480 +640 427 +500 333 +640 427 +426 640 +640 428 +640 428 +640 483 +640 455 +500 333 +426 640 +640 451 +500 301 +640 478 +424 640 +480 640 +640 480 +426 640 +640 364 +492 500 +640 480 +640 478 +640 480 +480 640 +500 375 +480 640 +640 429 +375 500 +640 268 +480 640 +427 640 +640 356 +640 358 +640 481 +640 480 +612 612 +640 424 +640 480 +612 612 +500 333 +326 500 +491 640 +640 491 +640 388 +640 478 +640 425 +640 480 +640 360 +500 375 +640 427 +480 640 +640 428 +640 426 +640 480 +480 640 +612 612 +640 480 +500 375 +640 386 +640 424 +424 640 +640 424 +425 640 +640 427 +640 480 +480 640 +640 427 +640 450 +640 480 +640 480 +640 640 +640 428 +427 640 +640 411 +640 514 +480 640 +480 640 +640 480 +640 426 +480 640 +640 480 +500 376 +425 640 +500 333 +640 427 +640 614 +640 427 +500 375 +640 426 +500 333 +640 480 +375 500 +500 375 +640 426 +317 398 +640 480 +640 512 +640 425 +500 333 +640 480 +640 578 +424 640 +640 480 +500 375 +640 480 +640 480 +480 640 +612 612 +640 425 +640 480 +640 480 +640 428 +640 480 +640 427 +640 426 +612 612 +640 427 +640 361 +640 424 +640 480 +480 640 +640 424 +500 333 +640 425 +640 480 +640 427 +640 434 +640 479 +640 425 +640 488 +640 478 +480 640 +334 500 +640 426 +640 424 +640 427 +427 640 +640 512 +640 419 +640 392 +500 375 +612 612 +640 480 +600 399 +640 427 +640 480 +500 339 +428 640 +640 427 +640 480 +480 640 +640 480 +640 606 +640 480 +640 427 +640 480 +640 427 +640 480 +500 333 +640 427 +500 375 +500 434 +640 404 +427 640 +640 426 +480 640 +640 427 +640 480 +500 358 +500 335 +500 313 +640 425 +500 375 +640 429 +500 375 +480 640 +640 427 +478 640 +640 481 +500 348 +640 427 +640 478 +480 640 +640 408 +632 640 +480 640 +640 355 +640 427 +375 500 +500 351 +640 426 +343 500 +640 480 +500 332 +640 480 +500 375 +500 375 +640 427 +640 428 +480 640 +640 426 +640 427 +640 480 +480 640 +640 480 +640 308 +640 427 +640 426 +640 480 +333 500 +640 426 +640 427 +640 427 +480 640 +640 480 +640 427 +375 500 +640 401 +640 426 +640 480 +500 281 +563 422 +640 426 +640 427 +640 427 +640 427 +640 425 +640 422 +640 427 +640 429 +640 480 +626 640 +480 640 +427 640 +640 480 +640 480 +640 416 +427 640 +640 480 +640 494 +500 333 +500 333 +640 448 +640 425 +480 640 +480 640 +640 480 +640 425 +500 331 +640 480 +640 515 +500 399 +640 428 +500 400 +640 480 +640 426 +640 428 +640 271 +640 480 +500 375 +427 640 +640 427 +640 428 +640 427 +640 470 +640 473 +640 427 +640 360 +333 500 +640 427 +427 640 +640 480 +480 640 +640 427 +500 384 +640 405 +640 480 +640 426 +640 480 +640 360 +640 448 +640 640 +640 425 +640 480 +640 480 +640 480 +640 425 +480 640 +640 489 +306 640 +640 383 +640 389 +480 640 +640 480 +500 327 +480 640 +358 640 +640 426 +640 458 +640 427 +640 428 +640 480 +640 480 +320 240 +640 412 +640 439 +640 427 +640 428 +640 540 +640 480 +640 480 +640 480 +612 612 +640 531 +640 480 +427 640 +640 480 +640 480 +480 640 +640 427 +640 424 +640 402 +332 500 +640 359 +640 427 +427 640 +640 427 +640 433 +640 360 +640 480 +640 480 +426 640 +640 427 +640 426 +480 640 +640 478 +500 375 +480 640 +640 480 +640 424 +640 480 +640 480 +640 427 +640 491 +640 480 +480 640 +400 300 +640 448 +640 480 +640 426 +640 427 +640 423 +640 427 +640 630 +640 480 +640 406 +640 429 +640 480 +640 480 +640 480 +640 479 +612 612 +427 640 +478 640 +640 427 +328 500 +640 360 +640 480 +480 320 +409 640 +640 427 +640 480 +640 426 +640 427 +640 480 +500 333 +640 428 +640 427 +640 480 +640 440 +640 480 +640 459 +640 480 +480 640 +640 480 +640 425 +640 501 +612 612 +640 480 +640 513 +640 480 +640 428 +640 482 +640 480 +640 480 +500 375 +488 500 +640 480 +561 640 +640 480 +500 375 +640 480 +640 480 +640 424 +612 612 +612 612 +640 429 +500 401 +640 427 +640 427 +480 640 +640 426 +480 640 +500 375 +640 480 +640 427 +640 360 +640 427 +640 480 +427 640 +425 640 +427 640 +640 480 +640 428 +640 426 +640 480 +640 480 +640 480 +603 640 +640 553 +640 449 +640 480 +640 427 +456 640 +478 640 +428 640 +640 424 +480 640 +640 428 +640 427 +640 438 +640 427 +500 333 +640 480 +500 334 +640 451 +480 640 +640 428 +500 382 +480 640 +640 480 +500 384 +640 427 +640 478 +640 480 +500 375 +351 500 +640 457 +479 640 +640 600 +518 640 +640 441 +480 640 +480 640 +640 426 +640 480 +480 640 +640 480 +426 640 +480 640 +612 612 +640 480 +640 433 +480 640 +500 375 +640 421 +640 480 +640 480 +640 480 +427 640 +480 640 +640 430 +450 450 +640 496 +640 480 +480 640 +480 640 +500 375 +640 427 +640 427 +640 491 +640 480 +640 480 +640 333 +640 427 +386 640 +500 336 +640 480 +600 357 +180 225 +640 480 +640 479 +500 373 +640 426 +500 334 +576 430 +333 500 +612 612 +332 500 +640 427 +480 640 +640 480 +478 640 +480 640 +640 640 +640 480 +640 533 +640 427 +640 480 +640 396 +640 512 +640 426 +640 480 +612 612 +300 200 +640 480 +640 480 +640 480 +640 480 +524 640 +640 320 +640 428 +640 433 +640 427 +640 480 +640 480 +500 375 +640 512 +500 375 +640 480 +427 640 +640 480 +427 640 +640 427 +428 640 +612 612 +640 427 +375 500 +500 333 +333 500 +640 481 +480 640 +640 424 +640 428 +640 480 +640 428 +426 640 +427 640 +399 500 +640 480 +612 612 +640 480 +640 427 +640 427 +427 640 +640 480 +333 500 +640 441 +640 480 +640 426 +640 640 +480 640 +481 640 +334 500 +640 480 +500 375 +375 500 +480 640 +480 640 +640 427 +640 554 +480 640 +640 403 +640 264 +640 480 +397 500 +640 480 +640 427 +640 427 +640 480 +640 428 +610 640 +640 561 +640 427 +480 640 +640 325 +640 480 +480 640 +480 640 +480 640 +640 480 +640 427 +640 480 +640 480 +640 457 +480 640 +640 640 +375 500 +640 427 +480 640 +500 333 +640 428 +640 425 +480 640 +427 640 +640 425 +640 640 +640 480 +478 640 +640 480 +640 429 +600 400 +500 500 +640 480 +640 481 +640 480 +385 308 +640 480 +640 427 +640 428 +640 640 +640 426 +500 375 +640 421 +375 500 +640 471 +640 404 +640 427 +375 500 +463 640 +553 640 +427 640 +418 500 +640 385 +478 640 +517 640 +640 478 +427 640 +640 400 +612 612 +640 271 +500 342 +640 466 +640 467 +640 480 +640 417 +640 427 +612 612 +513 640 +480 640 +640 511 +426 640 +640 425 +339 500 +640 480 +612 612 +480 640 +429 640 +640 458 +488 640 +612 612 +640 427 +640 571 +500 358 +640 425 +640 480 +640 427 +640 512 +640 425 +427 640 +640 480 +640 426 +505 640 +500 333 +640 426 +426 640 +425 640 +426 640 +500 375 +640 427 +640 427 +640 426 +640 608 +500 375 +454 640 +640 427 +640 360 +600 450 +425 640 +640 427 +640 481 +640 423 +640 426 +640 457 +640 480 +480 640 +640 426 +640 480 +640 425 +640 429 +424 640 +640 438 +500 375 +426 640 +428 640 +640 480 +640 427 +640 480 +480 640 +612 612 +500 379 +640 428 +640 480 +640 480 +295 480 +500 375 +640 398 +640 429 +612 612 +640 427 +480 640 +640 432 +640 480 +486 640 +640 480 +640 640 +425 640 +640 426 +640 436 +640 428 +640 454 +640 360 +612 612 +640 453 +612 612 +500 334 +425 640 +640 426 +640 427 +640 480 +480 640 +640 426 +640 463 +640 427 +640 428 +640 513 +640 480 +640 483 +640 425 +640 426 +640 512 +640 426 +470 500 +640 427 +640 359 +640 429 +640 426 +427 640 +640 480 +640 480 +640 447 +640 427 +462 640 +480 640 +640 480 +475 500 +640 480 +640 428 +612 612 +640 481 +640 480 +640 426 +500 375 +640 428 +640 480 +640 640 +296 352 +640 425 +640 480 +640 508 +640 429 +640 640 +640 428 +578 453 +500 375 +640 428 +640 360 +425 640 +640 480 +640 372 +500 334 +640 553 +640 480 +480 640 +640 551 +640 428 +640 427 +428 640 +640 427 +640 428 +640 427 +482 640 +427 640 +375 500 +640 480 +500 400 +640 427 +640 446 +480 640 +480 640 +640 480 +640 480 +427 640 +427 640 +640 480 +640 427 +640 480 +640 480 +640 484 +640 360 +640 480 +612 612 +640 480 +640 480 +640 426 +640 480 +612 612 +640 426 +640 639 +640 480 +640 428 +640 428 +640 427 +640 428 +640 427 +480 640 +640 427 +640 426 +480 640 +640 427 +640 640 +640 478 +640 480 +640 480 +640 427 +375 500 +612 612 +640 427 +640 520 +640 480 +640 427 +640 480 +427 640 +640 480 +480 640 +640 640 +640 426 +640 480 +427 640 +640 427 +640 436 +640 480 +427 640 +375 500 +640 480 +640 480 +640 480 +640 427 +640 427 +500 332 +640 472 +640 480 +640 427 +300 640 +640 480 +360 640 +427 640 +640 480 +640 416 +429 640 +480 640 +640 348 +640 427 +428 640 +640 425 +640 480 +480 640 +640 480 +480 640 +500 432 +640 428 +640 426 +640 428 +640 427 +640 480 +640 640 +427 640 +640 480 +640 468 +500 372 +629 640 +640 480 +500 333 +480 640 +480 640 +426 640 +640 480 +640 427 +480 640 +640 428 +427 640 +428 640 +332 500 +640 360 +612 612 +640 480 +640 480 +640 445 +640 398 +640 457 +640 426 +427 640 +640 426 +640 480 +640 640 +640 425 +640 480 +640 427 +425 640 +640 427 +640 424 +500 334 +640 442 +612 612 +385 289 +640 480 +428 640 +640 401 +500 375 +640 541 +640 428 +640 427 +500 375 +640 480 +500 375 +640 480 +640 408 +500 375 +300 451 +640 429 +500 375 +640 404 +612 612 +500 375 +640 427 +640 528 +640 480 +640 425 +427 640 +640 428 +434 640 +640 426 +392 640 +640 427 +480 640 +500 333 +640 427 +640 480 +640 360 +500 375 +640 480 +640 424 +640 426 +640 425 +430 640 +640 504 +640 480 +640 489 +640 480 +494 338 +398 640 +640 477 +640 425 +426 640 +640 426 +640 424 +640 563 +348 486 +640 480 +640 480 +480 640 +640 458 +640 480 +480 640 +413 481 +640 427 +640 458 +640 427 +640 428 +640 480 +586 640 +640 480 +640 333 +640 480 +640 469 +640 427 +426 640 +612 612 +500 333 +640 427 +480 640 +500 281 +640 415 +640 426 +640 480 +500 380 +640 428 +612 612 +640 427 +640 480 +640 480 +640 336 +375 500 +480 640 +640 426 +640 427 +640 492 +375 500 +448 621 +480 640 +427 640 +426 640 +500 375 +427 640 +640 427 +640 428 +640 416 +500 375 +640 427 +640 428 +480 640 +640 424 +500 375 +640 480 +640 480 +640 480 +640 480 +640 635 +427 640 +640 427 +640 424 +640 480 +640 428 +500 375 +640 427 +640 426 +640 480 +640 480 +500 500 +640 399 +640 361 +480 640 +640 480 +640 417 +500 332 +640 480 +640 427 +640 426 +426 640 +640 427 +640 480 +640 480 +480 640 +427 640 +598 640 +640 480 +333 500 +640 457 +640 425 +612 612 +427 640 +500 375 +640 480 +640 426 +478 640 +640 426 +640 427 +640 427 +500 321 +500 375 +640 481 +640 426 +640 453 +640 480 +640 427 +640 425 +640 480 +640 396 +640 457 +640 427 +640 480 +640 428 +450 500 +487 500 +427 640 +640 427 +500 375 +640 480 +640 480 +640 429 +640 480 +433 640 +640 427 +426 640 +640 425 +640 479 +640 480 +500 335 +640 469 +640 428 +427 640 +427 640 +500 333 +640 427 +640 480 +500 333 +640 480 +612 612 +640 480 +428 640 +500 375 +375 500 +480 640 +640 480 +640 427 +640 480 +516 640 +640 427 +640 479 +640 427 +612 612 +375 500 +640 428 +640 417 +429 640 +499 640 +640 480 +640 480 +427 640 +640 427 +500 375 +640 480 +640 640 +425 640 +480 640 +640 426 +640 480 +428 640 +600 400 +640 521 +640 426 +640 427 +640 427 +640 425 +500 375 +640 480 +640 425 +640 428 +480 640 +428 640 +640 427 +640 480 +640 480 +640 480 +640 480 +640 480 +640 344 +640 430 +479 640 +640 426 +427 640 +640 457 +640 427 +640 426 +640 478 +640 426 +640 513 +640 426 +640 427 +640 427 +480 640 +640 580 +640 433 +640 433 +640 427 +640 480 +640 425 +612 612 +640 546 +500 281 +640 361 +640 427 +427 640 +500 375 +640 401 +640 480 +500 375 +640 427 +640 424 +640 427 +640 423 +480 640 +640 480 +427 640 +367 500 +640 480 +640 480 +640 428 +425 640 +640 425 +480 640 +640 478 +607 640 +500 333 +500 375 +640 427 +640 480 +640 368 +640 428 +640 480 +640 427 +500 337 +640 480 +491 640 +640 427 +640 477 +500 375 +640 433 +640 480 +640 480 +640 427 +425 640 +640 427 +500 454 +555 640 +640 335 +640 480 +640 427 +640 480 +640 480 +640 480 +500 375 +640 427 +500 375 +640 426 +480 640 +640 480 +426 640 +426 640 +427 640 +640 423 +640 468 +640 427 +640 480 +480 640 +375 500 +640 427 +640 480 +500 375 +640 480 +640 480 +640 512 +427 640 +640 480 +640 480 +480 640 +428 640 +640 480 +337 500 +500 375 +640 480 +640 480 +640 440 +640 427 +640 360 +640 427 +640 640 +600 400 +640 480 +640 425 +461 500 +375 500 +480 640 +640 426 +640 480 +612 612 +640 478 +500 333 +375 500 +640 480 +441 640 +427 640 +640 480 +640 480 +640 493 +640 479 +500 375 +640 427 +640 480 +640 480 +640 480 +640 480 +640 480 +500 375 +640 429 +427 640 +640 480 +640 480 +640 361 +640 427 +358 500 +480 640 +640 427 +500 486 +640 213 +640 428 +640 427 +640 480 +640 427 +640 426 +633 640 +375 500 +640 427 +640 462 +640 428 +640 480 +640 427 +640 429 +640 480 +640 427 +375 500 +640 478 +640 480 +480 640 +640 480 +640 427 +459 640 +598 640 +500 375 +427 640 +640 425 +640 478 +640 426 +375 500 +640 426 +640 425 +640 424 +640 479 +640 480 +640 480 +640 259 +361 640 +427 640 +480 640 +640 548 +640 424 +640 425 +640 426 +640 424 +640 427 +612 612 +640 480 +500 313 +640 480 +640 480 +640 480 +478 640 +640 427 +640 480 +640 489 +640 428 +361 640 +428 640 +640 356 +640 418 +500 334 +612 612 +640 480 +396 500 +640 478 +640 427 +600 400 +426 640 +640 480 +500 375 +476 640 +480 640 +640 427 +480 640 +640 427 +640 426 +640 444 +430 640 +640 427 +500 375 +426 640 +480 640 +640 480 +640 480 +640 480 +640 640 +640 427 +640 480 +640 393 +640 480 +640 546 +640 475 +640 480 +640 427 +500 375 +640 423 +640 427 +640 425 +640 480 +640 360 +457 640 +375 500 +640 427 +425 640 +640 427 +480 640 +427 640 +640 425 +640 480 +640 480 +640 480 +640 480 +640 426 +424 640 +640 425 +640 480 +640 480 +500 334 +427 640 +426 640 +640 427 +480 640 +480 640 +640 457 +640 361 +640 428 +418 640 +428 640 +640 480 +640 397 +640 406 +500 342 +478 640 +640 640 +480 640 +640 480 +640 426 +612 612 +375 500 +640 480 +640 360 +640 457 +640 480 +640 428 +640 428 +640 428 +640 318 +640 427 +307 500 +612 612 +640 427 +640 427 +361 500 +480 640 +640 480 +480 640 +640 426 +640 427 +640 426 +640 424 +640 480 +640 513 +640 480 +640 427 +512 640 +612 612 +427 640 +429 640 +640 479 +640 427 +640 427 +640 431 +500 375 +640 360 +480 640 +427 640 +612 612 +640 480 +640 425 +480 640 +500 333 +511 640 +640 427 +640 454 +640 396 +640 360 +640 480 +640 478 +500 375 +640 480 +640 427 +640 358 +640 480 +640 399 +375 500 +640 512 +640 423 +427 640 +500 338 +480 640 +640 425 +428 640 +388 640 +500 375 +640 427 +500 400 +427 640 +640 426 +640 480 +640 427 +640 427 +640 480 +640 480 +640 640 +640 427 +480 640 +640 480 +612 612 +640 480 +417 640 +640 373 +640 479 +640 436 +640 428 +480 640 +640 428 +473 335 +640 479 +480 640 +640 436 +640 427 +640 524 +478 640 +640 480 +480 640 +500 240 +640 478 +640 309 +640 428 +640 480 +480 640 +640 602 +640 432 +427 640 +592 640 +640 427 +640 480 +361 640 +375 500 +600 399 +500 400 +427 640 +640 427 +640 431 +425 640 +640 425 +466 640 +640 427 +640 427 +640 480 +640 425 +640 433 +500 375 +500 332 +375 500 +640 427 +640 393 +500 375 +640 437 +640 360 +480 640 +640 477 +375 500 +612 612 +640 512 +480 640 +480 640 +480 640 +500 333 +426 640 +500 375 +468 640 +375 500 +640 480 +640 436 +640 480 +640 428 +640 429 +640 480 +500 375 +640 427 +419 640 +640 427 +640 524 +480 640 +427 640 +640 480 +640 480 +640 480 +640 423 +640 427 +427 640 +427 640 +469 500 +640 501 +532 640 +640 640 +640 481 +640 426 +640 361 +500 367 +640 393 +500 375 +640 480 +640 480 +640 480 +640 426 +640 425 +512 640 +640 426 +360 640 +375 500 +480 640 +640 424 +480 640 +480 640 +612 612 +500 375 +640 480 +427 640 +552 640 +640 427 +480 640 +612 612 +480 640 +640 480 +640 427 +640 480 +640 427 +640 426 +640 480 +300 400 +480 640 +500 375 +640 480 +360 480 +500 333 +640 386 +500 296 +640 480 +640 640 +640 428 +640 480 +640 427 +640 480 +640 480 +640 425 +500 334 +640 512 +640 480 +640 640 +640 480 +640 462 +640 428 +500 375 +640 480 +640 480 +408 640 +640 480 +640 428 +640 427 +450 313 +640 426 +640 480 +448 640 +640 357 +612 612 +640 425 +640 480 +640 480 +375 500 +640 480 +639 640 +640 480 +480 640 +500 375 +640 427 +640 427 +640 480 +640 425 +640 427 +640 640 +640 478 +640 480 +640 435 +612 612 +640 482 +640 478 +640 494 +500 383 +640 494 +640 416 +640 585 +500 333 +640 480 +480 640 +343 512 +640 410 +428 640 +640 485 +640 480 +428 640 +640 638 +640 480 +612 612 +640 425 +640 553 +640 426 +640 480 +640 479 +426 640 +640 427 +640 427 +640 453 +500 400 +400 500 +640 426 +640 480 +640 426 +200 145 +427 640 +640 480 +640 480 +640 480 +427 640 +640 427 +458 640 +458 640 +500 319 +640 427 +640 386 +640 480 +640 480 +640 427 +500 375 +640 429 +640 457 +640 425 +512 640 +640 426 +640 426 +351 640 +612 612 +375 500 +640 427 +640 480 +612 612 +480 640 +640 360 +456 640 +547 640 +500 333 +640 427 +640 480 +640 480 +640 427 +640 236 +426 640 +640 427 +640 480 +640 480 +640 427 +640 425 +640 378 +500 375 +640 480 +640 479 +640 469 +640 480 +500 311 +640 529 +375 500 +640 427 +640 480 +640 480 +640 226 +480 640 +640 480 +640 425 +377 500 +640 389 +360 640 +640 422 +640 440 +411 640 +640 458 +640 480 +640 480 +640 427 +640 426 +640 478 +640 426 +640 273 +640 480 +640 439 +640 414 +640 481 +640 428 +640 427 +640 480 +640 480 +640 426 +640 427 +387 500 +640 427 +640 480 +500 375 +640 512 +640 426 +640 480 +640 427 +480 640 +640 326 +500 375 +640 283 +512 640 +640 427 +640 480 +500 403 +640 427 +640 480 +640 381 +500 440 +500 375 +333 500 +427 640 +640 425 +640 480 +480 640 +640 427 +640 480 +640 402 +640 427 +640 480 +640 427 +480 640 +427 640 +640 425 +640 495 +640 453 +640 616 +426 640 +639 640 +470 640 +640 470 +640 426 +500 400 +480 640 +640 427 +640 425 +640 480 +640 480 +431 640 +640 427 +500 375 +640 427 +640 427 +512 640 +480 640 +640 259 +640 429 +512 640 +640 428 +640 427 +640 427 +640 427 +640 427 +640 433 +453 640 +500 375 +640 516 +500 375 +640 640 +640 480 +640 425 +640 407 +640 318 +640 480 +640 480 +480 640 +426 640 +462 640 +375 500 +640 360 +640 400 +640 426 +640 427 +640 458 +640 331 +500 375 +428 640 +640 479 +640 426 +640 427 +640 503 +640 427 +640 480 +619 413 +640 480 +512 640 +412 500 +480 640 +500 375 +640 480 +640 480 +480 640 +640 463 +640 480 +640 426 +480 640 +640 428 +374 640 +640 360 +640 480 +478 640 +424 640 +640 427 +426 640 +500 375 +375 500 +640 457 +640 427 +640 427 +427 640 +640 480 +461 500 +412 500 +640 480 +640 428 +301 500 +640 480 +640 480 +500 281 +500 375 +480 640 +640 426 +640 426 +500 375 +480 640 +457 640 +500 400 +640 425 +640 478 +640 640 +427 640 +512 640 +640 480 +500 375 +640 427 +640 480 +640 425 +612 612 +640 480 +640 427 +375 500 +416 640 +640 499 +500 400 +640 480 +640 480 +640 396 +640 480 +640 425 +640 393 +640 640 +640 480 +640 480 +500 442 +640 427 +640 480 +640 223 +640 480 +640 480 +640 480 +640 480 +640 428 +640 480 +640 379 +480 640 +640 427 +365 500 +640 427 +480 640 +640 428 +640 243 +640 480 +640 480 +500 375 +640 428 +426 640 +480 640 +427 640 +500 500 +478 640 +640 427 +480 640 +427 640 +375 500 +428 640 +640 425 +640 444 +640 426 +640 452 +640 427 +640 462 +500 375 +640 640 +640 480 +429 640 +500 500 +640 480 +640 430 +427 640 +375 500 +640 427 +375 500 +640 426 +640 439 +612 612 +640 436 +640 480 +640 428 +412 640 +640 480 +426 640 +640 454 +640 426 +640 480 +375 500 +640 480 +640 640 +640 480 +640 425 +480 640 +640 426 +640 480 +640 427 +500 375 +375 500 +640 468 +428 640 +428 640 +480 640 +480 640 +425 640 +640 428 +427 640 +640 427 +640 414 +612 612 +640 406 +640 480 +640 480 +640 435 +449 640 +640 427 +640 492 +640 480 +480 640 +640 516 +375 500 +640 480 +315 500 +640 426 +640 428 +500 375 +640 480 +428 640 +425 640 +640 426 +480 640 +640 360 +640 348 +640 479 +479 640 +385 289 +640 480 +640 427 +500 346 +374 500 +640 427 +640 427 +640 480 +640 428 +383 640 +640 480 +640 478 +640 428 +640 480 +428 640 +640 480 +202 360 +640 426 +640 375 +500 356 +640 480 +640 581 +640 427 +640 427 +640 640 +480 640 +640 425 +375 500 +500 375 +427 640 +640 400 +640 480 +640 480 +640 480 +335 500 +480 640 +640 424 +640 361 +640 427 +480 640 +375 500 +640 480 +640 480 +640 480 +500 375 +640 480 +480 640 +640 480 +332 500 +640 480 +640 480 +640 480 +427 640 +640 427 +612 612 +640 480 +640 640 +500 375 +640 480 +640 360 +640 427 +333 500 +640 475 +640 428 +640 426 +640 638 +451 640 +480 640 +640 427 +500 375 +480 640 +480 640 +640 480 +427 640 +640 360 +640 480 +640 355 +640 480 +640 480 +640 426 +640 480 +640 621 +640 480 +612 612 +640 428 +500 375 +640 480 +428 640 +640 480 +640 480 +428 640 +640 405 +500 333 +640 427 +480 640 +640 480 +640 424 +500 353 +640 480 +492 500 +640 480 +425 640 +640 428 +480 640 +640 360 +640 427 +614 409 +640 505 +640 427 +640 424 +500 333 +640 480 +500 375 +500 309 +640 516 +640 480 +640 480 +361 640 +426 640 +640 427 +480 640 +640 480 +640 480 +640 480 +640 480 +500 375 +640 396 +640 476 +612 612 +427 640 +640 480 +500 335 +640 428 +640 429 +640 480 +480 640 +640 480 +640 427 +640 427 +640 480 +640 427 +640 385 +427 640 +640 480 +640 480 +480 640 +640 480 +640 480 +500 375 +640 480 +640 480 +493 640 +640 427 +640 480 +640 425 +640 427 +333 500 +640 428 +480 640 +500 375 +500 375 +639 640 +640 596 +640 426 +640 480 +458 640 +640 631 +640 426 +640 400 +640 474 +640 428 +640 640 +640 424 +640 480 +480 640 +640 480 +640 480 +640 480 +640 480 +480 640 +640 480 +640 427 +640 426 +640 471 +640 426 +500 374 +640 482 +640 426 +640 480 +500 333 +640 426 +426 640 +640 427 +480 640 +640 424 +640 494 +640 478 +640 427 +640 480 +640 437 +640 359 +427 640 +640 480 +640 400 +640 480 +640 480 +425 640 +478 640 +640 420 +640 424 +640 425 +640 360 +640 446 +480 640 +480 640 +640 425 +640 427 +640 427 +640 640 +640 480 +640 450 +480 640 +359 640 +500 375 +426 640 +640 427 +640 480 +640 640 +640 480 +640 427 +640 640 +427 640 +500 333 +640 400 +428 640 +480 640 +640 480 +480 640 +640 480 +640 427 +400 500 +640 435 +640 427 +360 640 +425 640 +640 480 +375 500 +640 468 +640 480 +640 480 +425 640 +640 480 +640 388 +640 425 +640 427 +500 375 +640 427 +500 447 +640 427 +500 333 +640 477 +640 427 +640 426 +640 457 +428 640 +640 426 +500 400 +640 427 +478 640 +640 424 +640 425 +640 480 +427 640 +640 461 +640 427 +640 480 +640 494 +612 612 +640 629 +640 426 +427 640 +640 427 +426 640 +640 425 +640 427 +640 480 +640 425 +500 375 +640 480 +480 640 +640 427 +640 480 +480 640 +640 427 +480 640 +640 428 +640 480 +640 480 +480 640 +500 383 +640 424 +640 505 +640 480 +640 426 +376 500 +640 427 +640 494 +640 427 +375 500 +500 376 +480 640 +640 425 +640 480 +427 640 +640 442 +640 480 +640 427 +480 640 +640 427 +640 426 +480 640 +640 451 +640 480 +640 423 +640 640 +640 480 +427 640 +428 640 +500 375 +640 480 +640 389 +364 640 +640 482 +500 300 +427 640 +500 400 +640 427 +612 612 +640 359 +640 480 +640 480 +640 512 +640 406 +640 480 +640 480 +333 500 +640 565 +640 480 +375 500 +640 484 +334 500 +609 640 +640 480 +480 640 +640 480 +640 393 +640 480 +640 427 +640 480 +612 612 +640 359 +612 612 +640 360 +640 480 +640 423 +500 375 +640 427 +640 640 +341 500 +400 600 +427 640 +640 402 +394 640 +640 480 +480 640 +640 429 +640 432 +480 640 +640 480 +640 358 +640 427 +640 427 +480 640 +640 428 +640 480 +640 411 +640 480 +640 480 +640 425 +640 480 +640 480 +640 457 +427 640 +640 480 +480 640 +640 569 +480 640 +640 480 +640 427 +640 433 +640 426 +640 427 +500 375 +640 426 +427 640 +500 500 +640 640 +612 612 +640 480 +640 480 +640 478 +500 500 +640 427 +640 480 +427 640 +480 640 +640 426 +640 427 +500 332 +640 427 +640 425 +480 640 +640 451 +375 500 +480 640 +536 640 +640 481 +640 480 +427 640 +478 640 +339 500 +640 360 +640 480 +480 640 +480 640 +640 480 +640 480 +480 640 +438 640 +640 640 +640 640 +640 359 +640 480 +640 480 +640 427 +640 421 +640 428 +480 640 +471 640 +640 338 +640 539 +640 424 +409 500 +428 640 +640 480 +640 437 +500 332 +640 480 +640 434 +640 480 +640 480 +427 640 +427 640 +480 640 +640 427 +640 480 +640 427 +640 625 +640 480 +640 480 +640 480 +376 500 +640 426 +480 640 +640 640 +640 427 +640 427 +500 333 +424 640 +640 427 +480 640 +425 640 +640 480 +480 640 +640 427 +427 640 +640 427 +500 331 +500 331 +640 426 +640 480 +500 375 +640 480 +500 489 +640 414 +640 480 +480 640 +427 640 +334 640 +640 426 +478 640 +500 332 +428 640 +640 480 +640 359 +480 640 +500 333 +640 522 +640 427 +640 480 +560 640 +427 640 +640 480 +640 480 +640 480 +640 457 +500 375 +557 640 +427 640 +500 334 +640 480 +640 426 +640 488 +640 473 +640 425 +640 480 +500 417 +640 480 +425 640 +640 480 +640 426 +480 640 +500 334 +427 640 +640 428 +640 480 +479 640 +640 640 +640 480 +640 424 +500 500 +640 425 +640 427 +640 360 +375 500 +500 334 +640 427 +640 427 +500 400 +480 640 +640 480 +640 604 +640 480 +640 427 +500 281 +640 426 +333 500 +500 375 +640 480 +640 516 +640 427 +640 480 +640 480 +640 480 +480 640 +640 480 +640 480 +480 640 +426 640 +640 480 +535 480 +640 419 +640 480 +640 427 +427 640 +640 428 +604 453 +500 375 +640 427 +640 428 +612 612 +640 428 +428 640 +427 640 +480 640 +640 469 +640 427 +640 480 +612 612 +640 426 +375 500 +640 427 +640 427 +640 480 +500 375 +640 425 +640 359 +640 480 +640 480 +612 612 +640 439 +640 427 +425 640 +640 480 +640 426 +640 501 +480 640 +640 480 +612 612 +640 427 +333 500 +500 368 +640 427 +640 480 +640 428 +640 436 +640 480 +612 612 +640 444 +640 480 +640 360 +425 640 +640 428 +334 500 +640 517 +500 375 +640 494 +640 611 +640 480 +640 422 +640 426 +640 429 +478 640 +480 640 +640 480 +375 500 +640 640 +640 480 +427 640 +640 480 +480 640 +561 640 +500 375 +428 640 +640 281 +640 480 +640 428 +640 427 +480 640 +640 480 +425 640 +375 500 +600 469 +640 480 +640 427 +640 426 +640 427 +640 482 +587 640 +640 427 +640 426 +480 640 +640 491 +640 444 +640 426 +424 640 +640 480 +640 384 +426 640 +640 408 +640 425 +640 406 +640 427 +640 351 +640 425 +480 640 +375 500 +426 640 +640 425 +640 427 +339 500 +640 284 +480 640 +640 427 +480 640 +640 480 +640 479 +335 500 +640 478 +640 426 +375 500 +446 640 +640 429 +640 427 +427 640 +640 425 +640 480 +640 511 +427 640 +500 375 +640 425 +426 640 +640 640 +640 480 +480 640 +640 427 +640 448 +375 500 +427 640 +640 427 +640 480 +480 640 +640 531 +480 640 +640 480 +640 427 +640 480 +640 425 +640 480 +640 260 +640 427 +426 640 +640 427 +640 483 +333 500 +640 425 +640 434 +427 640 +500 378 +500 375 +640 383 +500 375 +480 640 +640 480 +428 640 +640 480 +640 428 +640 427 +640 427 +480 640 +640 494 +640 425 +640 480 +640 427 +640 427 +640 480 +640 480 +500 375 +640 480 +640 428 +640 480 +500 358 +500 375 +612 612 +500 333 +640 464 +500 279 +398 500 +640 429 +500 332 +480 640 +600 400 +500 375 +640 480 +480 640 +478 640 +375 500 +500 375 +640 480 +480 640 +381 500 +586 640 +640 390 +500 334 +640 480 +640 480 +640 424 +640 573 +640 512 +500 375 +640 360 +425 640 +640 480 +490 640 +471 640 +500 375 +640 426 +640 640 +640 480 +640 480 +640 427 +640 480 +640 427 +500 332 +640 480 +500 375 +640 480 +640 427 +640 495 +427 640 +640 480 +640 575 +640 398 +434 640 +640 480 +428 640 +427 640 +640 478 +640 426 +640 428 +500 326 +640 441 +640 418 +427 640 +479 640 +640 480 +612 612 +332 500 +375 500 +480 640 +425 640 +640 480 +500 313 +640 427 +640 426 +640 425 +640 480 +640 428 +427 640 +427 640 +640 480 +640 640 +640 427 +640 428 +640 480 +480 640 +640 427 +640 480 +640 416 +640 480 +640 426 +640 480 +427 640 +640 480 +640 480 +427 640 +428 640 +427 640 +480 640 +640 480 +640 480 +480 640 +640 427 +640 480 +640 480 +640 473 +500 375 +640 528 +427 640 +640 427 +640 427 +640 427 +500 333 +500 500 +426 640 +480 640 +500 375 +500 375 +287 500 +612 612 +640 427 +480 640 +640 480 +473 640 +573 640 +640 427 +480 640 +640 361 +500 333 +500 335 +480 640 +640 478 +640 480 +424 640 +640 428 +640 640 +640 480 +612 612 +640 531 +640 480 +640 480 +640 426 +640 435 +640 424 +640 346 +480 640 +640 427 +640 480 +640 427 +375 500 +640 480 +640 480 +640 480 +640 476 +500 320 +640 428 +640 480 +640 427 +612 612 +640 483 +439 640 +640 431 +500 375 +500 375 +640 480 +640 427 +480 640 +640 424 +640 426 +640 480 +640 436 +478 640 +640 427 +640 480 +640 350 +640 427 +640 427 +640 480 +640 480 +478 640 +640 480 +640 480 +480 640 +640 640 +640 425 +480 640 +640 427 +480 640 +480 640 +640 583 +640 427 +640 480 +640 480 +640 360 +640 480 +640 480 +640 480 +640 480 +640 480 +441 640 +640 480 +612 612 +640 480 +431 640 +640 426 +375 500 +640 481 +500 375 +640 480 +599 640 +640 426 +640 427 +500 300 +640 427 +640 480 +640 380 +500 333 +640 443 +426 640 +640 427 +364 500 +640 480 +640 480 +640 426 +427 640 +640 480 +640 480 +640 480 +424 640 +427 640 +640 480 +640 480 +612 612 +640 480 +640 324 +640 449 +640 329 +640 426 +640 360 +640 480 +500 332 +500 375 +640 480 +640 480 +640 480 +375 500 +640 360 +640 504 +560 640 +480 640 +500 327 +640 426 +640 426 +362 500 +427 640 +500 358 +640 428 +640 425 +640 480 +640 427 +640 351 +640 426 +640 428 +640 429 +640 427 +640 503 +640 427 +640 428 +640 480 +640 427 +640 480 +640 361 +640 360 +640 480 +375 500 +480 640 +640 480 +640 427 +640 428 +640 480 +640 480 +640 359 +640 360 +351 500 +434 640 +640 480 +426 640 +640 427 +640 428 +640 480 +640 427 +640 427 +640 429 +640 426 +640 424 +640 254 +387 604 +640 486 +640 480 +640 480 +640 480 +640 480 +640 480 +480 640 +359 640 +640 480 +480 640 +640 480 +427 640 +612 612 +640 321 +500 500 +640 428 +640 427 +640 480 +640 534 +640 479 +500 375 +640 480 +500 429 +640 428 +500 375 +640 640 +640 640 +640 425 +640 419 +514 597 +640 480 +612 612 +640 479 +640 511 +640 425 +640 427 +400 343 +640 428 +640 426 +640 427 +640 480 +640 426 +640 480 +640 640 +640 480 +640 413 +640 387 +640 426 +428 640 +640 480 +640 427 +640 427 +640 426 +640 480 +640 512 +425 640 +640 424 +640 488 +500 332 +640 426 +640 524 +480 640 +640 480 +500 375 +593 640 +640 427 +640 426 +478 640 +640 427 +408 640 +427 640 +640 480 +640 480 +640 428 +640 428 +640 485 +500 375 +640 480 +480 640 +640 427 +480 640 +640 408 +640 480 +500 399 +480 640 +480 640 +640 424 +640 480 +375 500 +500 375 +640 427 +640 480 +640 170 +640 415 +480 640 +640 402 +500 378 +480 640 +480 640 +500 332 +640 511 +640 427 +640 480 +640 427 +640 421 +640 428 +640 424 +640 388 +640 640 +640 480 +640 427 +640 425 +640 457 +640 427 +480 640 +640 427 +500 375 +640 480 +500 375 +640 428 +500 333 +480 640 +640 512 +480 640 +640 480 +427 640 +640 480 +640 480 +500 333 +640 427 +480 640 +640 428 +640 427 +601 640 +640 480 +500 315 +640 480 +640 425 +640 479 +478 640 +640 478 +612 612 +640 480 +427 640 +480 640 +640 396 +614 461 +640 360 +500 375 +640 400 +640 480 +640 468 +640 427 +480 640 +640 426 +640 480 +640 427 +478 640 +480 640 +640 481 +640 480 +500 375 +640 426 +640 329 +640 427 +640 480 +640 427 +640 480 +640 427 +640 427 +480 640 +640 431 +640 512 +640 428 +640 425 +640 480 +508 640 +480 640 +640 427 +480 640 +640 480 +640 425 +640 480 +640 480 +640 428 +640 425 +640 480 +640 427 +640 480 +640 480 +480 640 +640 431 +612 612 +500 333 +559 640 +640 427 +640 480 +640 480 +612 612 +640 480 +480 640 +640 469 +640 396 +640 480 +640 427 +640 480 +640 425 +640 480 +498 640 +640 318 +640 480 +640 480 +500 375 +484 640 +640 427 +640 640 +640 480 +640 427 +640 426 +640 427 +640 346 +640 427 +640 523 +640 428 +400 640 +500 343 +640 480 +640 425 +640 427 +427 640 +428 640 +375 500 +426 640 +640 426 +640 424 +640 462 +640 480 +375 500 +500 375 +640 328 +480 640 +640 359 +640 463 +640 640 +421 640 +640 480 +427 640 +640 564 +640 478 +640 640 +480 640 +640 427 +480 640 +448 299 +640 359 +612 612 +640 427 +640 480 +640 480 +640 427 +640 396 +640 480 +425 640 +640 480 +365 500 +500 375 +427 640 +480 640 +640 480 +300 351 +640 478 +640 480 +640 439 +640 401 +640 427 +640 427 +640 409 +640 512 +450 300 +500 375 +640 480 +480 640 +480 640 +640 427 +640 428 +500 375 +427 640 +500 400 +640 480 +480 640 +480 640 +640 426 +427 640 +640 426 +640 427 +500 375 +612 612 +375 500 +640 427 +640 486 +500 375 +500 332 +640 464 +640 428 +500 332 +640 640 +640 426 +640 481 +480 640 +640 480 +427 640 +500 375 +640 478 +640 480 +640 640 +640 512 +640 480 +640 427 +640 427 +640 480 +640 427 +640 480 +640 425 +500 332 +640 480 +425 640 +446 640 +614 640 +640 480 +640 480 +426 640 +640 428 +500 363 +640 480 +640 480 +640 428 +640 640 +640 480 +640 480 +640 482 +450 600 +640 424 +640 480 +376 500 +640 480 +480 640 +640 480 +640 427 +427 640 +640 480 +640 478 +640 478 +640 480 +640 479 +640 480 +457 640 +375 500 +428 640 +640 261 +640 400 +640 480 +477 640 +428 640 +640 426 +612 612 +480 640 +640 426 +428 640 +640 427 +640 427 +640 480 +500 500 +500 375 +442 640 +640 429 +640 480 +640 480 +480 640 +640 480 +411 411 +375 500 +640 478 +640 427 +640 480 +427 640 +500 375 +640 480 +427 640 +640 427 +640 480 +640 426 +640 463 +640 480 +640 480 +640 480 +427 640 +640 480 +480 640 +640 426 +500 375 +640 427 +640 480 +640 480 +640 434 +425 640 +640 480 +548 640 +333 500 +640 309 +640 480 +640 427 +640 480 +640 359 +640 480 +480 640 +640 360 +640 427 +480 640 +640 427 +640 480 +640 434 +640 480 +500 375 +640 480 +640 318 +640 427 +480 640 +640 427 +480 640 +408 640 +478 640 +500 356 +640 480 +640 428 +640 427 +640 426 +640 427 +640 427 +640 427 +640 480 +640 458 +640 480 +640 480 +427 640 +427 640 +480 640 +640 429 +640 480 +640 480 +640 427 +640 427 +640 480 +375 500 +375 500 +612 612 +640 428 +640 427 +612 612 +640 427 +640 439 +427 640 +640 427 +640 423 +427 640 +500 438 +446 640 +500 356 +640 427 +640 480 +640 480 +640 433 +640 480 +480 640 +640 427 +640 480 +640 426 +640 480 +640 329 +320 240 +640 512 +640 519 +640 427 +640 425 +640 426 +640 435 +640 426 +640 446 +640 480 +375 500 +640 428 +640 513 +640 425 +640 480 +640 423 +640 600 +480 640 +427 640 +480 640 +632 640 +640 480 +640 480 +640 480 +640 425 +427 640 +500 500 +480 640 +640 426 +640 423 +480 640 +427 640 +640 360 +612 612 +640 480 +640 480 +480 640 +640 441 +426 640 +375 500 +640 439 +640 424 +640 428 +640 480 +480 640 +640 453 +640 480 +640 480 +428 640 +640 427 +480 640 +335 500 +375 500 +427 640 +640 425 +500 333 +500 281 +500 375 +640 427 +640 480 +640 385 +640 431 +640 480 +640 480 +640 480 +425 640 +500 331 +640 426 +500 333 +480 640 +640 427 +640 425 +640 639 +640 480 +640 480 +375 500 +333 500 +640 399 +480 640 +640 429 +640 428 +640 478 +640 426 +480 640 +640 558 +640 427 +640 548 +558 640 +640 480 +427 640 +640 360 +640 428 +640 480 +640 428 +640 360 +480 640 +640 480 +640 480 +616 640 +640 427 +500 375 +423 640 +500 375 +375 500 +640 426 +640 428 +640 427 +427 640 +640 476 +640 360 +640 428 +640 426 +640 426 +640 480 +480 640 +500 375 +640 480 +500 400 +480 640 +640 454 +428 640 +640 421 +640 429 +640 480 +640 427 +640 425 +314 640 +640 480 +640 370 +640 427 +632 640 +640 478 +433 640 +640 480 +640 479 +640 427 +427 640 +500 375 +640 430 +333 500 +640 480 +478 640 +640 480 +640 480 +640 428 +612 612 +500 375 +640 400 +640 412 +640 481 +375 500 +333 500 +425 640 +480 640 +640 480 +640 422 +480 640 +432 640 +640 480 +640 359 +640 479 +427 640 +500 384 +640 480 +640 480 +500 400 +640 426 +640 480 +640 404 +640 478 +500 335 +640 480 +640 480 +640 360 +640 457 +640 518 +640 480 +640 381 +427 640 +640 427 +640 425 +640 427 +640 427 +640 427 +500 375 +480 640 +640 480 +640 480 +640 425 +640 425 +640 427 +500 375 +640 428 +640 480 +582 416 +640 388 +640 480 +500 333 +500 333 +640 512 +480 640 +640 425 +640 426 +640 480 +640 640 +640 428 +640 512 +640 426 +640 480 +500 336 +640 480 +427 640 +500 375 +425 640 +603 640 +427 640 +333 500 +612 612 +500 375 +640 480 +640 480 +640 512 +640 639 +640 500 +375 500 +640 426 +640 480 +640 427 +640 426 +640 480 +428 640 +640 480 +640 480 +474 640 +500 375 +480 640 +640 480 +480 640 +640 426 +640 480 +640 426 +640 427 +612 612 +426 640 +640 424 +375 500 +612 612 +640 427 +640 428 +640 427 +428 640 +399 640 +640 480 +421 640 +429 640 +640 406 +500 375 +500 361 +640 480 +640 481 +640 424 +401 500 +640 480 +640 480 +640 194 +640 554 +640 229 +640 462 +427 640 +480 640 +500 334 +500 375 +375 500 +640 516 +640 427 +640 426 +640 480 +640 480 +640 427 +640 359 +427 640 +640 427 +640 420 +425 640 +514 640 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +500 333 +640 453 +478 640 +640 318 +640 480 +640 480 +640 427 +640 480 +640 480 +500 290 +500 375 +640 480 +640 480 +640 427 +640 410 +337 500 +640 426 +640 480 +612 612 +640 480 +640 480 +640 640 +640 480 +421 640 +640 360 +640 427 +500 375 +500 332 +500 375 +640 480 +640 480 +640 480 +640 480 +640 426 +640 427 +500 375 +400 500 +640 427 +399 640 +640 427 +640 427 +640 480 +640 425 +640 431 +500 333 +640 480 +640 571 +640 640 +640 360 +436 640 +480 640 +640 480 +640 480 +480 640 +612 612 +640 553 +480 640 +640 480 +640 426 +479 640 +640 480 +640 480 +500 375 +427 640 +480 640 +640 518 +640 425 +480 640 +640 306 +640 427 +640 424 +640 427 +640 480 +333 500 +640 427 +640 405 +640 329 +457 640 +640 469 +500 375 +425 640 +436 640 +640 480 +494 500 +437 640 +640 480 +640 451 +640 480 +640 427 +500 281 +612 612 +640 480 +640 480 +640 427 +480 640 +640 460 +480 640 +640 427 +640 480 +640 426 +359 640 +500 380 +640 427 +427 640 +640 425 +640 480 +640 480 +640 480 +640 428 +640 424 +640 383 +480 640 +612 612 +640 427 +640 480 +384 640 +640 436 +640 480 +425 640 +479 640 +427 640 +640 478 +482 640 +640 426 +480 640 +640 480 +640 480 +457 640 +640 480 +640 427 +375 500 +517 640 +307 409 +612 612 +640 428 +640 428 +500 333 +640 503 +640 640 +640 616 +640 600 +640 480 +640 427 +640 480 +640 428 +500 375 +640 425 +640 480 +640 428 +640 478 +640 427 +640 421 +640 480 +640 480 +640 480 +500 375 +640 426 +640 423 +640 477 +640 609 +427 640 +427 640 +640 480 +500 311 +375 500 +480 640 +640 427 +640 427 +469 469 +640 480 +640 427 +500 370 +640 454 +640 480 +640 426 +640 427 +426 640 +427 640 +333 500 +426 640 +640 330 +491 500 +424 500 +640 480 +333 500 +413 450 +640 448 +411 640 +640 426 +410 310 +500 332 +640 424 +640 427 +640 640 +500 375 +410 640 +640 480 +380 500 +640 480 +640 480 +480 640 +640 426 +640 480 +478 640 +640 480 +640 429 +500 364 +640 226 +640 148 +480 640 +640 480 +389 640 +640 428 +640 424 +640 471 +480 640 +640 457 +640 513 +640 427 +480 640 +640 419 +316 500 +500 375 +640 427 +640 480 +640 480 +640 480 +428 640 +640 427 +640 427 +640 480 +500 333 +640 480 +500 333 +640 427 +383 500 +640 465 +640 427 +640 427 +500 375 +640 494 +612 612 +640 480 +640 480 +424 640 +640 480 +640 428 +640 480 +640 480 +640 427 +475 640 +640 566 +640 480 +640 427 +500 400 +640 383 +640 427 +612 612 +480 640 +500 400 +612 612 +640 480 +640 453 +480 640 +500 375 +640 427 +640 480 +640 427 +556 640 +480 640 +640 381 +640 480 +640 427 +640 418 +500 375 +500 281 +480 640 +360 640 +640 402 +640 427 +515 640 +500 500 +640 428 +640 427 +640 427 +640 480 +640 480 +618 640 +640 480 +640 480 +640 393 +640 480 +640 426 +640 640 +540 640 +640 640 +640 427 +500 375 +458 640 +640 427 +640 427 +640 481 +500 433 +426 640 +640 480 +640 416 +640 480 +480 640 +640 454 +500 421 +428 640 +640 480 +640 480 +426 640 +640 264 +459 640 +640 426 +640 444 +375 500 +640 467 +640 428 +500 334 +640 480 +427 640 +640 480 +640 478 +640 480 +426 640 +480 640 +375 500 +426 640 +640 480 +427 640 +427 640 +612 612 +640 436 +640 432 +428 640 +640 480 +480 640 +640 428 +640 480 +640 427 +640 480 +640 360 +424 640 +640 359 +640 480 +640 480 +640 427 +640 480 +640 480 +500 375 +500 375 +600 400 +640 480 +375 500 +640 480 +640 512 +480 640 +427 640 +640 480 +388 640 +640 480 +640 480 +640 427 +640 480 +500 375 +441 640 +478 640 +640 427 +425 640 +612 612 +640 428 +640 480 +640 404 +640 480 +640 480 +419 640 +427 640 +640 523 +640 427 +500 375 +640 427 +375 500 +500 381 +640 480 +640 361 +640 480 +640 480 +640 429 +640 480 +640 480 +500 375 +425 640 +612 612 +640 398 +480 640 +480 640 +600 450 +640 309 +500 403 +640 480 +640 480 +427 640 +480 640 +640 541 +640 478 +537 640 +640 427 +480 640 +640 480 +640 426 +640 360 +427 640 +427 640 +640 429 +427 640 +361 640 +640 427 +500 375 +640 340 +640 480 +640 428 +480 640 +640 334 +640 480 +640 273 +640 426 +640 426 +612 612 +500 375 +427 640 +640 480 +640 433 +640 480 +640 342 +640 457 +640 427 +640 480 +640 541 +480 640 +403 500 +480 640 +500 375 +480 640 +633 640 +640 427 +640 426 +640 424 +640 427 +640 480 +640 436 +640 425 +640 480 +480 640 +428 640 +500 375 +640 480 +360 270 +640 428 +640 361 +640 480 +640 480 +640 231 +640 512 +360 640 +640 603 +640 480 +640 428 +426 640 +640 480 +427 640 +640 427 +302 500 +426 640 +640 427 +640 427 +500 333 +640 427 +640 427 +640 426 +640 341 +500 341 +640 428 +480 640 +640 427 +500 447 +640 554 +640 480 +426 640 +640 480 +640 480 +567 470 +480 640 +640 428 +418 640 +480 640 +640 427 +640 480 +640 480 +640 480 +521 640 +640 480 +427 640 +500 334 +640 480 +640 480 +640 426 +640 480 +640 480 +640 477 +640 382 +480 640 +480 640 +640 429 +640 425 +640 427 +640 526 +500 375 +640 426 +640 427 +476 640 +640 480 +640 461 +375 500 +640 426 +640 480 +640 480 +640 294 +640 359 +469 640 +252 640 +640 427 +640 427 +640 480 +427 640 +500 375 +553 640 +640 450 +640 424 +640 480 +500 375 +426 640 +640 428 +427 640 +334 500 +350 640 +640 498 +500 333 +640 480 +640 480 +640 426 +480 640 +240 320 +640 640 +640 480 +640 427 +640 480 +640 531 +500 375 +480 640 +564 640 +640 480 +640 480 +500 473 +640 425 +640 406 +480 640 +640 480 +640 427 +500 375 +640 480 +480 640 +640 480 +360 640 +640 480 +578 640 +480 640 +640 426 +640 478 +640 427 +640 640 +640 480 +640 480 +480 640 +427 640 +640 427 +500 333 +425 640 +503 640 +375 500 +427 640 +640 427 +427 640 +480 640 +640 424 +640 480 +500 375 +640 427 +640 480 +640 479 +433 640 +640 425 +480 640 +458 640 +640 426 +636 478 +479 640 +640 572 +640 462 +640 425 +480 640 +640 480 +640 480 +640 480 +640 426 +640 480 +640 427 +640 480 +640 501 +640 480 +640 444 +640 457 +640 425 +640 427 +640 428 +640 388 +426 640 +640 424 +640 480 +640 386 +640 427 +333 500 +640 480 +480 640 +493 640 +426 640 +480 640 +640 427 +426 640 +640 480 +640 427 +640 511 +640 427 +640 640 +640 480 +458 640 +427 640 +480 640 +640 345 +640 480 +640 426 +480 640 +640 305 +640 480 +640 427 +640 428 +640 480 +640 427 +640 427 +640 427 +498 640 +500 332 +511 640 +478 640 +640 480 +640 480 +427 640 +640 427 +514 640 +424 640 +640 480 +640 425 +500 333 +640 425 +640 480 +500 375 +640 424 +640 360 +640 480 +640 480 +427 640 +640 480 +640 360 +640 480 +430 640 +640 480 +427 640 +640 480 +640 480 +375 500 +474 640 +640 425 +640 480 +640 593 +640 480 +640 425 +480 640 +640 425 +640 427 +500 375 +640 326 +500 375 +640 480 +640 427 +640 480 +612 612 +640 427 +640 458 +500 334 +640 411 +640 358 +500 375 +428 640 +427 640 +612 612 +480 640 +426 640 +526 640 +333 500 +426 640 +640 457 +500 374 +640 392 +612 612 +640 427 +640 393 +640 480 +480 640 +551 640 +612 612 +640 563 +640 427 +640 480 +640 640 +582 640 +640 480 +288 352 +640 427 +640 417 +640 425 +480 640 +500 375 +640 480 +640 470 +640 480 +640 480 +402 500 +640 428 +640 425 +640 428 +640 427 +427 640 +640 480 +640 480 +478 640 +640 480 +480 640 +480 640 +640 428 +640 453 +640 427 +640 427 +640 424 +500 375 +500 375 +427 640 +640 427 +480 640 +640 480 +640 426 +480 640 +400 600 +640 424 +401 401 +640 480 +500 335 +640 480 +640 480 +428 640 +640 480 +640 640 +640 427 +640 480 +640 450 +640 480 +640 480 +640 422 +612 612 +478 640 +640 429 +480 640 +480 640 +640 399 +640 466 +480 640 +640 427 +640 480 +428 640 +480 640 +640 480 +612 612 +480 640 +640 480 +480 640 +640 614 +640 457 +640 457 +640 425 +640 429 +500 375 +640 480 +333 500 +480 640 +634 640 +480 640 +640 359 +640 427 +640 480 +640 428 +500 375 +640 480 +640 426 +640 424 +640 328 +640 428 +375 500 +427 640 +640 427 +428 640 +640 429 +411 640 +427 640 +480 640 +480 640 +640 427 +640 433 +640 361 +333 500 +640 427 +480 640 +640 428 +427 640 +640 427 +640 427 +640 425 +480 640 +640 428 +640 640 +640 480 +640 426 +640 427 +640 480 +640 640 +640 480 +640 480 +612 612 +427 640 +375 500 +500 495 +640 411 +478 640 +612 612 +500 375 +640 480 +640 379 +640 426 +640 480 +480 640 +640 480 +640 479 +426 640 +480 640 +480 640 +640 424 +640 428 +640 425 +640 426 +640 480 +640 425 +427 640 +640 399 +640 423 +640 428 +640 427 +640 480 +640 430 +640 450 +640 480 +480 640 +640 427 +640 457 +640 480 +640 480 +480 640 +640 480 +640 480 +640 426 +640 426 +640 480 +640 421 +640 504 +640 427 +473 640 +640 480 +640 480 +640 480 +640 427 +427 640 +640 423 +500 398 +640 427 +640 427 +640 480 +500 386 +640 426 +640 480 +640 480 +640 428 +427 640 +640 461 +427 640 +640 427 +480 640 +480 640 +500 334 +640 427 +594 640 +488 640 +640 480 +400 604 +640 426 +500 334 +411 640 +640 482 +425 640 +640 359 +640 427 +480 640 +426 640 +640 443 +640 480 +640 445 +427 640 +640 425 +640 464 +427 640 +500 375 +640 480 +640 490 +640 480 +640 509 +640 360 +640 429 +640 639 +425 640 +640 427 +640 429 +640 360 +640 427 +500 375 +640 427 +640 480 +333 500 +640 480 +500 375 +640 480 +640 480 +500 334 +500 382 +557 640 +640 360 +640 427 +427 640 +640 425 +640 480 +640 478 +640 480 +500 461 +640 458 +640 426 +640 387 +640 427 +640 501 +640 480 +500 334 +640 426 +500 333 +640 425 +480 640 +375 500 +480 640 +640 427 +640 480 +640 417 +640 480 +500 375 +640 428 +426 640 +640 456 +640 429 +333 500 +612 612 +500 333 +640 427 +428 640 +331 500 +640 512 +427 640 +640 428 +640 480 +640 509 +640 427 +640 427 +500 333 +427 640 +640 481 +480 640 +480 640 +640 427 +409 640 +640 426 +426 640 +640 428 +640 480 +640 359 +640 427 +500 375 +640 476 +612 612 +425 640 +640 480 +640 480 +640 480 +640 480 +480 640 +640 359 +453 640 +600 422 +203 179 +640 427 +640 426 +640 463 +640 426 +640 425 +480 640 +480 640 +316 425 +640 469 +640 359 +457 640 +640 427 +640 640 +332 500 +640 480 +500 423 +500 500 +640 426 +415 640 +640 428 +640 480 +640 640 +538 640 +640 480 +640 427 +640 480 +500 352 +640 480 +640 436 +500 375 +640 425 +640 457 +400 400 +640 427 +640 427 +480 640 +427 640 +640 480 +486 640 +640 427 +480 640 +640 427 +640 427 +425 640 +640 359 +500 375 +640 480 +640 478 +480 640 +640 480 +640 480 +640 480 +640 298 +640 491 +640 480 +428 640 +640 359 +640 360 +427 640 +428 640 +640 480 +478 640 +478 640 +427 640 +640 480 +640 480 +640 425 +338 500 +500 375 +500 281 +640 480 +480 640 +640 427 +640 513 +428 640 +375 500 +500 375 +612 612 +640 422 +426 640 +425 640 +500 375 +537 640 +640 480 +640 480 +640 480 +427 640 +640 427 +612 612 +640 480 +640 450 +640 457 +640 480 +334 500 +480 640 +640 427 +640 480 +350 350 +427 640 +640 427 +640 427 +500 346 +640 480 +319 500 +336 500 +640 427 +612 612 +640 480 +640 480 +480 640 +527 640 +333 500 +640 512 +500 375 +500 375 +320 240 +640 480 +480 640 +640 480 +480 640 +640 428 +640 480 +480 640 +640 427 +640 423 +640 480 +640 480 +428 640 +640 480 +500 333 +640 480 +427 640 +427 640 +640 480 +640 481 +640 480 +640 427 +640 425 +406 640 +640 164 +640 480 +640 640 +640 428 +500 375 +500 375 +640 408 +640 480 +640 381 +640 425 +480 640 +427 640 +400 500 +640 425 +640 426 +333 500 +426 640 +480 640 +480 640 +640 480 +640 480 +640 425 +640 428 +640 427 +480 640 +640 480 +640 427 +640 424 +640 426 +640 478 +640 427 +426 640 +500 375 +640 480 +640 459 +640 428 +500 375 +640 426 +640 640 +427 640 +640 404 +640 426 +640 425 +360 640 +640 480 +640 426 +640 361 +500 375 +640 480 +640 480 +383 640 +640 427 +500 375 +480 640 +640 480 +640 480 +480 640 +640 428 +640 480 +640 480 +500 343 +640 426 +640 480 +424 640 +640 446 +426 640 +640 480 +600 399 +427 640 +300 225 +480 640 +363 640 +640 480 +640 434 +398 640 +640 426 +640 428 +480 640 +500 334 +425 640 +640 480 +640 427 +640 480 +480 640 +640 480 +640 480 +480 640 +640 428 +640 427 +640 427 +480 640 +640 480 +480 640 +427 640 +640 496 +480 640 +640 512 +640 480 +640 433 +640 427 +640 427 +426 640 +427 640 +352 288 +640 426 +640 427 +500 375 +640 426 +640 480 +640 427 +640 425 +427 640 +640 480 +640 426 +640 480 +500 434 +640 480 +640 426 +426 640 +375 500 +406 500 +427 640 +640 467 +476 640 +421 640 +640 480 +640 427 +500 375 +448 640 +640 480 +640 426 +640 418 +640 480 +500 375 +640 448 +427 640 +480 640 +640 373 +640 426 +640 443 +428 640 +640 466 +640 480 +640 480 +480 640 +640 480 +640 480 +640 480 +640 480 +640 427 +640 480 +640 427 +640 428 +600 450 +640 429 +375 500 +640 428 +426 640 +640 427 +640 512 +640 426 +640 480 +500 318 +640 428 +500 375 +500 376 +640 480 +640 427 +640 428 +448 336 +640 480 +640 480 +640 443 +640 480 +500 333 +500 333 +640 480 +422 640 +640 479 +500 333 +640 479 +640 480 +640 640 +640 425 +480 640 +640 425 +640 480 +441 640 +500 333 +640 570 +500 375 +640 429 +480 640 +640 481 +640 386 +640 437 +640 480 +640 428 +640 480 +640 425 +640 427 +640 320 +500 356 +500 286 +640 426 +427 640 +640 480 +640 480 +427 640 +640 480 +640 427 +628 640 +480 640 +640 427 +426 640 +640 480 +612 612 +640 480 +480 640 +640 639 +480 640 +375 500 +375 500 +640 480 +640 429 +640 426 +500 343 +640 480 +640 425 +426 640 +640 427 +640 480 +426 640 +500 375 +640 425 +640 427 +640 427 +434 296 +640 426 +612 612 +500 375 +640 480 +640 480 +640 426 +480 640 +640 480 +640 427 +640 546 +478 640 +640 480 +640 480 +480 640 +612 612 +640 427 +640 427 +640 480 +640 489 +500 333 +640 440 +640 427 +427 640 +640 426 +640 480 +640 427 +640 639 +640 480 +500 350 +467 640 +640 427 +426 640 +446 640 +640 481 +480 640 +640 426 +640 510 +640 480 +477 640 +640 427 +612 612 +640 480 +640 512 +640 480 +640 429 +640 427 +640 428 +509 640 +429 640 +640 299 +640 480 +640 480 +500 332 +640 480 +500 400 +640 401 +640 480 +640 480 +640 427 +640 480 +640 480 +640 538 +334 500 +480 640 +640 480 +640 424 +500 334 +640 480 +362 640 +640 360 +640 501 +640 457 +640 426 +640 428 +480 640 +640 425 +515 640 +640 480 +640 426 +640 480 +480 640 +640 429 +640 429 +480 640 +640 480 +640 480 +640 480 +500 375 +640 339 +640 372 +500 333 +640 480 +500 375 +427 640 +640 480 +369 520 +640 427 +640 480 +427 640 +500 334 +640 480 +640 480 +500 332 +640 480 +500 375 +640 428 +640 427 +640 480 +640 426 +640 480 +640 460 +640 480 +458 640 +640 480 +640 640 +640 387 +640 480 +640 428 +640 428 +640 480 +640 426 +640 480 +640 425 +640 379 +480 640 +427 640 +640 480 +640 427 +612 612 +640 276 +640 480 +640 426 +640 427 +640 427 +465 640 +640 480 +400 500 +640 476 +640 428 +640 480 +640 446 +640 480 +640 480 +376 500 +640 427 +640 427 +640 426 +500 333 +640 480 +500 375 +640 406 +640 361 +640 478 +612 612 +640 310 +500 496 +640 426 +640 427 +640 359 +640 480 +640 427 +640 480 +480 640 +640 360 +640 425 +604 453 +640 421 +500 354 +500 375 +640 467 +640 480 +500 335 +425 640 +640 427 +640 427 +480 640 +640 413 +640 427 +640 480 +640 518 +640 480 +640 427 +640 336 +640 480 +640 427 +427 640 +640 640 +566 640 +480 640 +500 346 +640 480 +480 640 +480 640 +427 640 +640 425 +426 640 +640 559 +640 480 +500 342 +500 500 +640 448 +640 380 +640 424 +426 640 +640 427 +640 427 +640 427 +640 427 +500 419 +480 640 +480 640 +640 427 +640 480 +640 427 +640 425 +640 427 +640 427 +500 333 +375 500 +640 480 +640 480 +640 434 +640 480 +426 640 +375 500 +612 612 +480 640 +640 427 +640 427 +480 640 +640 426 +640 427 +640 360 +640 480 +640 427 +640 427 +640 480 +600 402 +640 428 +428 640 +640 512 +640 428 +408 500 +640 480 +640 480 +640 427 +500 375 +426 640 +640 640 +480 640 +480 640 +640 360 +640 427 +640 427 +640 426 +640 424 +480 640 +640 433 +360 480 +500 375 +640 479 +640 480 +427 640 +640 480 +640 457 +640 640 +640 490 +500 333 +446 640 +640 480 +640 567 +640 480 +640 404 +640 427 +640 478 +640 426 +500 441 +357 640 +640 429 +640 425 +640 427 +640 427 +612 612 +640 480 +360 640 +640 424 +640 386 +640 480 +640 480 +500 335 +640 480 +640 484 +457 640 +640 436 +480 360 +640 427 +427 640 +500 375 +640 439 +640 427 +479 640 +640 427 +640 512 +354 500 +640 457 +500 375 +418 640 +480 640 +640 480 +427 640 +480 640 +640 360 +480 640 +612 612 +612 612 +375 500 +500 333 +640 428 +500 338 +640 480 +640 480 +640 480 +626 476 +448 640 +375 500 +640 360 +360 360 +640 425 +640 427 +640 426 +640 427 +640 428 +640 480 +480 640 +640 480 +640 427 +480 640 +640 480 +640 479 +640 480 +427 640 +375 500 +640 480 +612 612 +478 640 +640 313 +640 424 +373 640 +480 640 +640 480 +480 640 +640 480 +640 480 +640 427 +640 573 +640 427 +640 480 +640 435 +288 352 +640 480 +640 451 +548 640 +375 500 +640 428 +640 480 +640 476 +383 640 +640 360 +640 478 +640 480 +640 480 +640 426 +612 612 +640 328 +640 480 +480 640 +427 640 +640 403 +400 435 +640 480 +375 500 +640 480 +640 427 +480 640 +640 640 +640 424 +640 428 +480 640 +640 360 +426 640 +612 612 +375 500 +640 480 +640 444 +478 640 +480 640 +500 375 +426 640 +640 425 +640 480 +640 479 +640 429 +640 427 +640 426 +557 640 +640 480 +640 447 +640 480 +426 640 +500 375 +640 427 +640 616 +426 640 +500 332 +640 427 +640 480 +640 480 +428 640 +640 480 +500 405 +480 640 +640 502 +426 640 +640 480 +640 480 +640 424 +640 480 +640 480 +428 640 +640 425 +424 640 +380 285 +640 427 +640 480 +640 427 +427 640 +640 429 +640 480 +640 480 +427 640 +458 640 +537 640 +640 427 +640 640 +408 640 +640 467 +640 598 +375 500 +640 480 +640 480 +229 350 +640 480 +640 426 +480 640 +640 480 +375 500 +640 297 +640 480 +640 483 +640 428 +640 427 +612 612 +500 375 +640 426 +640 480 +640 427 +640 480 +480 640 +640 480 +500 375 +640 482 +640 427 +640 572 +640 516 +640 427 +640 427 +640 481 +640 480 +640 414 +640 427 +640 440 +640 480 +640 480 +500 320 +640 383 +640 354 +480 640 +640 427 +480 640 +640 480 +640 480 +640 480 +640 427 +473 640 +640 359 +640 480 +640 425 +500 334 +553 640 +560 640 +426 640 +640 480 +500 375 +640 480 +480 640 +640 444 +640 480 +640 480 +640 480 +413 640 +640 485 +332 500 +500 273 +375 500 +617 640 +640 480 +640 480 +500 375 +640 427 +500 375 +480 640 +640 425 +425 640 +409 640 +640 426 +640 480 +500 375 +640 480 +500 375 +640 427 +640 480 +334 500 +640 481 +640 445 +360 640 +500 375 +640 427 +640 480 +640 425 +480 640 +640 427 +372 464 +480 640 +640 428 +500 375 +500 375 +640 429 +469 640 +640 426 +500 375 +612 612 +640 427 +640 427 +640 480 +612 612 +640 427 +640 427 +640 361 +500 375 +640 427 +320 240 +640 362 +640 480 +640 428 +640 480 +640 429 +640 426 +640 480 +640 480 +640 480 +640 480 +500 359 +640 480 +480 640 +640 480 +640 480 +426 640 +461 640 +640 427 +427 640 +640 479 +640 480 +640 427 +426 640 +640 427 +333 500 +640 360 +612 612 +480 640 +640 428 +640 480 +640 427 +640 480 +640 429 +640 427 +640 303 +640 480 +500 375 +640 480 +640 424 +640 480 +640 480 +640 622 +640 480 +640 480 +640 480 +640 427 +375 500 +612 612 +332 500 +600 400 +427 640 +640 433 +640 480 +480 640 +350 500 +500 500 +480 640 +480 640 +612 612 +423 640 +640 427 +424 640 +478 640 +640 426 +640 427 +480 640 +422 640 +640 427 +500 333 +640 427 +640 425 +640 480 +500 375 +346 504 +640 480 +640 441 +500 342 +457 640 +640 426 +640 426 +640 480 +640 569 +426 640 +640 427 +640 438 +640 427 +640 429 +640 480 +640 427 +422 640 +503 640 +640 551 +640 573 +640 480 +640 463 +640 427 +426 640 +640 480 +500 334 +640 480 +640 480 +640 480 +427 640 +640 480 +640 446 +424 640 +640 428 +612 612 +612 612 +640 478 +640 428 +640 501 +640 427 +480 640 +640 425 +500 401 +640 427 +640 429 +640 429 +451 640 +640 427 +480 640 +500 333 +333 500 +640 424 +640 427 +500 500 +640 427 +480 640 +640 426 +480 640 +427 640 +612 612 +640 427 +640 480 +500 334 +480 640 +640 426 +640 428 +640 480 +500 375 +640 480 +640 426 +640 425 +424 640 +640 480 +640 425 +640 427 +640 493 +500 367 +375 500 +640 374 +640 480 +333 500 +480 640 +640 430 +640 480 +640 427 +500 375 +500 375 +640 381 +640 427 +640 480 +640 424 +480 640 +640 425 +640 427 +640 466 +640 480 +500 333 +640 480 +640 427 +640 428 +640 510 +640 427 +359 640 +426 640 +335 500 +425 640 +640 479 +480 640 +500 346 +640 427 +640 320 +500 334 +498 640 +500 400 +480 640 +500 375 +640 480 +500 375 +640 427 +640 480 +480 640 +640 480 +640 427 +640 186 +640 427 +640 427 +480 640 +640 426 +640 479 +480 640 +640 480 +640 429 +640 427 +640 427 +500 333 +640 427 +429 640 +640 480 +480 640 +375 500 +640 427 +640 480 +426 640 +385 308 +640 427 +640 480 +500 375 +640 478 +640 427 +640 427 +480 640 +500 375 +640 427 +640 360 +640 480 +640 427 +640 480 +640 427 +640 390 +640 427 +457 640 +500 500 +500 375 +359 640 +500 375 +640 431 +600 400 +640 509 +428 640 +427 640 +427 640 +640 428 +640 425 +612 612 +640 424 +375 500 +335 500 +640 425 +640 480 +500 405 +640 426 +640 480 +640 564 +640 427 +480 640 +408 500 +640 480 +640 640 +640 480 +640 480 +640 513 +640 480 +474 640 +640 427 +500 322 +508 640 +640 439 +425 640 +427 640 +640 480 +500 375 +320 240 +640 480 +332 500 +640 427 +640 426 +480 640 +640 427 +640 427 +640 512 +640 478 +640 480 +640 480 +640 427 +500 375 +640 480 +500 375 +425 640 +640 605 +640 480 +640 538 +640 360 +427 640 +334 500 +480 640 +640 425 +427 640 +640 426 +640 428 +640 640 +640 427 +640 480 +640 478 +640 424 +640 480 +640 425 +469 640 +426 640 +500 288 +640 359 +640 366 +640 427 +640 482 +640 428 +640 263 +640 427 +640 426 +640 479 +640 480 +328 500 +640 480 +480 640 +480 640 +640 427 +612 612 +634 640 +640 426 +478 640 +439 500 +640 426 +640 480 +640 460 +640 640 +346 500 +428 640 +500 375 +640 480 +640 480 +478 640 +640 468 +640 426 +500 333 +480 640 +640 381 +640 426 +640 480 +640 478 +640 426 +640 480 +640 428 +480 640 +640 480 +640 480 +335 500 +640 427 +640 425 +640 480 +640 418 +500 375 +640 640 +640 378 +640 443 +480 640 +480 640 +640 480 +640 480 +640 383 +640 427 +518 640 +640 627 +500 228 +640 426 +640 426 +427 640 +640 480 +612 612 +640 470 +640 480 +600 600 +640 480 +640 425 +640 480 +640 480 +640 480 +500 375 +480 640 +640 480 +640 482 +225 640 +428 640 +439 640 +640 480 +400 300 +489 640 +640 427 +640 204 +640 427 +640 396 +500 333 +640 481 +640 428 +640 428 +640 424 +500 375 +451 298 +640 425 +640 428 +500 375 +640 480 +500 375 +640 426 +474 640 +640 425 +640 424 +364 640 +500 333 +640 606 +427 640 +640 427 +497 640 +457 640 +640 427 +640 427 +640 427 +480 640 +640 480 +640 486 +640 427 +640 426 +640 433 +640 471 +479 640 +640 427 +640 426 +480 640 +640 480 +500 375 +375 500 +640 480 +640 480 +396 500 +500 375 +640 480 +640 480 +480 640 +640 427 +640 360 +429 640 +640 427 +640 427 +640 431 +612 612 +640 480 +640 429 +640 434 +500 333 +500 367 +640 480 +427 640 +427 640 +640 428 +480 640 +500 333 +640 427 +640 480 +640 259 +640 480 +640 428 +640 463 +640 426 +640 427 +375 500 +640 480 +584 640 +500 375 +640 640 +640 427 +640 480 +640 426 +480 640 +640 480 +480 640 +640 480 +426 640 +425 640 +640 426 +640 480 +640 427 +478 640 +640 484 +437 640 +640 427 +640 428 +500 333 +500 375 +640 453 +640 427 +480 640 +640 428 +640 427 +640 500 +480 640 +427 640 +500 375 +640 427 +640 480 +640 427 +500 332 +500 375 +502 640 +640 640 +640 425 +640 360 +640 426 +640 499 +640 359 +640 428 +640 480 +640 480 +640 251 +640 480 +640 427 +640 480 +640 427 +375 500 +480 640 +640 480 +640 480 +517 640 +640 480 +480 640 +612 612 +480 640 +640 424 +640 480 +640 480 +640 421 +427 640 +640 427 +640 480 +640 427 +640 387 +480 640 +640 407 +640 360 +640 439 +640 404 +640 482 +640 480 +427 640 +640 427 +640 480 +375 500 +640 428 +640 480 +640 391 +480 640 +640 480 +640 480 +640 427 +612 612 +640 480 +640 428 +400 325 +458 640 +640 442 +640 428 +427 640 +632 640 +640 622 +640 429 +427 640 +640 480 +427 640 +640 428 +548 411 +640 426 +484 640 +640 426 +640 480 +640 480 +514 640 +500 333 +500 500 +640 627 +424 640 +444 640 +640 426 +640 424 +640 427 +640 480 +640 426 +640 480 +480 640 +640 480 +333 500 +640 480 +640 480 +376 500 +640 426 +427 640 +640 426 +500 375 +429 640 +480 640 +640 480 +640 457 +640 374 +640 480 +640 480 +500 377 +640 373 +640 480 +500 375 +640 360 +640 485 +640 640 +640 480 +640 480 +333 500 +640 426 +640 426 +640 451 +640 480 +640 444 +640 523 +480 640 +480 640 +640 480 +375 500 +458 640 +480 640 +500 375 +640 426 +640 457 +640 480 +375 500 +640 418 +640 427 +640 434 +640 428 +640 425 +640 436 +640 426 +640 319 +640 480 +500 375 +640 427 +640 427 +500 332 +640 427 +375 500 +640 480 +640 495 +640 361 +478 640 +480 640 +640 424 +640 384 +612 612 +640 426 +640 480 +500 500 +640 356 +480 640 +426 640 +640 640 +500 375 +640 360 +640 478 +480 640 +640 480 +425 640 +640 423 +480 640 +480 640 +640 480 +640 427 +640 464 +483 640 +480 640 +640 359 +612 612 +640 531 +640 396 +640 427 +640 480 +640 480 +500 352 +640 480 +640 427 +640 480 +640 541 +640 427 +640 427 +480 640 +640 427 +640 427 +427 640 +640 555 +640 480 +640 426 +640 428 +424 640 +500 333 +640 426 +640 427 +512 640 +640 360 +640 427 +427 640 +500 198 +640 480 +375 500 +480 640 +640 426 +640 480 +640 428 +640 459 +640 427 +640 426 +640 480 +640 391 +640 480 +640 428 +640 480 +640 427 +480 640 +640 427 +640 427 +640 427 +640 478 +640 426 +640 480 +320 240 +480 640 +427 640 +640 480 +640 453 +640 428 +480 640 +480 640 +640 426 +640 478 +640 480 +640 480 +640 432 +640 483 +640 361 +640 427 +480 640 +480 640 +500 374 +640 480 +640 480 +640 359 +640 360 +480 640 +427 640 +430 640 +640 427 +640 408 +480 640 +333 500 +640 480 +428 640 +480 640 +640 427 +425 640 +640 480 +640 480 +375 500 +500 362 +332 500 +375 500 +640 400 +640 454 +435 640 +334 500 +424 640 +640 480 +500 375 +480 640 +640 424 +640 480 +640 427 +640 640 +640 378 +640 427 +640 480 +500 406 +640 360 +640 360 +424 640 +427 640 +640 427 +640 480 +640 427 +640 480 +640 458 +640 425 +640 459 +640 480 +640 480 +640 480 +480 640 +640 426 +640 480 +640 427 +640 426 +640 400 +640 480 +640 480 +640 427 +640 513 +500 361 +639 640 +481 640 +640 427 +640 425 +640 426 +500 308 +640 480 +640 458 +640 428 +612 612 +452 640 +640 426 +480 640 +511 640 +640 426 +640 480 +427 640 +640 480 +500 328 +640 480 +640 480 +383 640 +640 480 +500 330 +640 427 +500 375 +640 427 +500 332 +428 640 +640 502 +640 425 +640 426 +500 375 +640 480 +640 388 +640 427 +427 640 +639 640 +640 640 +640 427 +640 431 +640 480 +640 426 +640 428 +480 640 +640 426 +640 427 +500 375 +640 640 +640 475 +640 412 +640 428 +500 333 +640 480 +640 512 +375 500 +454 640 +500 371 +640 427 +640 425 +640 480 +640 640 +640 640 +640 360 +640 426 +640 426 +640 480 +612 612 +480 640 +640 428 +640 360 +640 480 +375 500 +478 640 +640 427 +640 480 +427 640 +360 640 +600 400 +612 612 +640 480 +640 482 +640 424 +640 480 +640 480 +640 340 +640 426 +640 427 +427 640 +640 427 +640 480 +480 640 +640 428 +495 640 +640 480 +640 480 +480 640 +640 480 +640 480 +480 640 +640 425 +640 427 +640 480 +427 640 +640 428 +640 640 +640 425 +480 640 +640 427 +640 480 +640 427 +640 512 +500 375 +640 427 +640 480 +640 412 +436 640 +640 426 +500 375 +640 428 +640 640 +640 360 +640 427 +640 480 +640 428 +640 427 +500 375 +640 480 +640 427 +640 480 +640 304 +500 375 +427 640 +640 428 +640 480 +640 481 +428 640 +480 640 +640 458 +500 375 +640 480 +640 480 +640 383 +640 425 +500 375 +640 426 +640 480 +640 427 +640 427 +427 640 +640 480 +640 480 +640 480 +640 640 +480 640 +640 426 +640 480 +640 483 +640 360 +640 478 +640 427 +640 424 +612 612 +640 481 +640 480 +640 426 +480 640 +640 426 +480 640 +640 428 +640 480 +375 500 +480 640 +640 480 +500 370 +640 480 +640 427 +500 368 +500 375 +640 543 +427 640 +500 361 +498 640 +640 427 +640 480 +500 356 +640 480 +640 462 +640 480 +480 640 +640 480 +640 480 +385 289 +640 480 +500 333 +478 640 +640 480 +640 383 +640 481 +640 457 +640 443 +640 425 +480 640 +640 480 +640 426 +640 480 +640 428 +480 640 +500 375 +500 375 +640 425 +640 361 +640 427 +640 480 +640 480 +500 400 +640 427 +640 478 +640 427 +640 427 +500 333 +640 421 +500 375 +640 425 +640 423 +480 640 +480 640 +500 375 +640 480 +640 399 +335 500 +640 480 +640 424 +427 640 +640 427 +640 480 +640 425 +335 500 +640 426 +640 426 +640 426 +640 480 +640 384 +640 374 +426 640 +333 500 +500 375 +480 640 +640 337 +640 459 +640 480 +640 358 +640 480 +629 640 +427 640 +640 426 +640 458 +640 640 +563 640 +640 497 +640 480 +480 640 +640 413 +640 426 +500 376 +640 427 +640 640 +426 640 +480 640 +640 480 +640 428 +640 426 +426 640 +480 640 +427 640 +640 480 +429 640 +480 640 +640 512 +427 640 +640 368 +640 480 +640 480 +640 480 +640 480 +640 428 +640 429 +640 426 +612 612 +640 480 +427 640 +480 640 +640 427 +640 360 +640 426 +640 480 +500 346 +640 621 +640 360 +640 480 +640 428 +640 399 +500 375 +640 480 +480 640 +640 475 +500 333 +640 424 +500 400 +640 360 +495 640 +640 484 +640 427 +640 427 +500 334 +640 480 +500 398 +640 449 +640 480 +501 640 +500 334 +640 427 +640 439 +640 427 +640 427 +640 480 +580 640 +640 480 +480 640 +640 360 +428 640 +513 640 +640 427 +640 480 +440 640 +640 427 +562 640 +640 427 +640 480 +500 375 +426 640 +640 427 +640 427 +640 416 +640 425 +640 512 +500 375 +478 640 +521 640 +500 375 +640 433 +640 513 +640 428 +640 383 +640 427 +640 454 +640 427 +640 483 +640 426 +458 640 +640 480 +640 480 +640 428 +612 612 +564 640 +640 480 +500 333 +640 424 +640 426 +509 640 +640 425 +427 640 +640 341 +500 375 +457 640 +480 640 +640 428 +500 334 +640 480 +480 640 +640 429 +640 425 +428 640 +500 333 +480 640 +404 640 +640 480 +640 480 +640 426 +640 502 +640 425 +527 640 +640 425 +640 427 +427 640 +640 428 +425 640 +640 434 +640 480 +640 480 +640 427 +640 424 +640 480 +640 440 +640 439 +640 424 +640 360 +640 427 +640 480 +640 480 +640 424 +478 640 +640 481 +640 426 +640 480 +640 480 +500 496 +640 373 +640 439 +640 310 +640 640 +500 393 +640 428 +640 478 +640 424 +640 480 +640 480 +640 427 +500 334 +640 426 +500 453 +516 640 +640 488 +500 375 +640 424 +640 427 +640 480 +333 500 +640 366 +640 425 +425 640 +500 333 +581 640 +427 640 +480 640 +640 480 +640 363 +612 612 +640 427 +640 480 +640 480 +640 480 +428 640 +640 360 +640 458 +640 400 +640 427 +304 500 +640 480 +500 375 +640 436 +640 425 +427 640 +640 480 +640 427 +640 463 +554 640 +500 344 +375 500 +500 500 +640 480 +500 375 +500 333 +640 433 +640 464 +426 640 +640 512 +480 640 +500 375 +640 554 +640 427 +640 469 +640 480 +640 512 +374 500 +480 640 +263 500 +640 427 +426 640 +609 640 +640 427 +640 360 +640 480 +640 480 +480 640 +640 512 +640 451 +640 480 +640 480 +426 640 +640 480 +640 457 +640 441 +612 612 +577 640 +640 480 +333 500 +640 427 +640 480 +640 425 +512 640 +640 512 +612 612 +640 360 +480 640 +640 480 +424 640 +640 480 +640 428 +640 427 +500 375 +423 640 +640 480 +640 480 +375 500 +640 501 +500 331 +640 425 +612 612 +640 640 +428 640 +500 375 +640 427 +640 441 +500 375 +640 480 +640 481 +425 640 +480 640 +640 425 +640 480 +640 480 +640 480 +480 640 +640 360 +640 480 +432 287 +640 427 +357 500 +640 427 +500 375 +457 640 +640 401 +640 426 +412 200 +427 640 +640 479 +612 612 +375 500 +478 640 +612 612 +640 423 +640 396 +500 333 +640 351 +500 333 +640 428 +500 375 +640 427 +640 434 +500 375 +640 428 +640 427 +346 500 +480 640 +608 640 +640 501 +640 480 +640 480 +640 480 +480 640 +640 392 +375 500 +640 427 +640 427 +480 640 +640 640 +460 640 +640 428 +500 455 +640 425 +640 427 +640 480 +640 480 +640 480 +640 465 +640 428 +500 375 +500 281 +640 427 +640 424 +612 612 +640 429 +500 416 +584 414 +480 640 +640 459 +640 426 +497 640 +425 640 +480 640 +640 427 +640 427 +640 360 +640 480 +426 640 +640 480 +640 427 +640 427 +480 640 +640 338 +640 480 +427 640 +640 424 +427 640 +480 640 +424 640 +480 640 +640 427 +640 480 +640 422 +640 458 +640 427 +640 480 +640 480 +612 612 +640 480 +640 428 +640 480 +640 364 +375 500 +640 640 +640 426 +480 640 +640 480 +640 481 +640 480 +640 480 +640 480 +640 534 +640 480 +640 426 +640 480 +640 480 +500 354 +640 425 +640 426 +427 640 +640 480 +640 480 +640 480 +640 480 +640 425 +478 640 +427 640 +640 573 +479 640 +640 480 +640 480 +640 360 +640 480 +640 441 +480 640 +500 333 +480 640 +480 640 +640 480 +640 427 +640 479 +640 399 +640 425 +640 493 +640 425 +480 640 +480 640 +400 533 +640 589 +640 480 +640 505 +640 426 +500 375 +640 426 +640 425 +375 500 +500 370 +385 289 +640 480 +640 427 +640 427 +640 480 +640 480 +640 480 +416 640 +500 375 +640 360 +640 480 +640 640 +480 640 +640 428 +640 457 +375 500 +640 480 +640 480 +612 612 +640 427 +640 480 +480 640 +640 481 +640 418 +640 415 +500 438 +640 431 +640 480 +640 428 +640 480 +640 480 +335 500 +640 480 +640 480 +640 427 +640 428 +640 478 +500 375 +640 480 +640 480 +640 416 +640 425 +640 427 +500 313 +640 464 +640 428 +640 480 +640 426 +640 486 +640 480 +640 480 +640 427 +276 500 +640 480 +457 640 +640 482 +640 428 +480 640 +500 374 +500 376 +500 332 +640 359 +393 500 +500 332 +458 640 +478 640 +640 478 +640 480 +640 399 +640 428 +436 640 +524 640 +640 480 +450 450 +640 427 +640 427 +640 426 +640 480 +640 480 +640 424 +428 640 +640 424 +450 600 +480 640 +640 320 +640 425 +350 500 +472 640 +640 640 +480 640 +640 514 +640 480 +640 603 +640 583 +568 320 +640 427 +500 400 +480 640 +640 427 +600 400 +612 612 +640 480 +640 480 +424 640 +640 389 +640 426 +480 640 +480 640 +640 480 +640 480 +640 406 +500 334 +640 480 +428 640 +640 438 +640 480 +550 640 +640 426 +500 332 +500 381 +640 424 +308 300 +640 472 +640 480 +375 500 +428 640 +640 427 +640 480 +612 612 +640 428 +427 640 +500 264 +480 640 +640 480 +640 427 +640 439 +500 335 +375 500 +381 500 +500 333 +640 425 +500 375 +640 480 +500 340 +640 480 +640 480 +640 480 +334 500 +640 472 +480 640 +640 425 +427 640 +640 426 +640 459 +640 480 +376 500 +500 375 +500 387 +411 640 +640 426 +427 640 +375 500 +480 640 +432 640 +640 480 +429 640 +500 375 +640 427 +566 640 +640 480 +640 480 +640 480 +500 333 +640 480 +640 480 +640 427 +640 473 +480 640 +640 427 +640 426 +640 640 +640 427 +640 640 +640 425 +640 478 +333 500 +640 480 +640 426 +640 621 +427 640 +640 429 +640 427 +466 640 +480 640 +640 425 +334 500 +427 640 +640 457 +427 640 +375 500 +640 423 +600 400 +640 427 +500 333 +375 500 +612 612 +427 640 +426 640 +640 480 +640 409 +640 480 +341 500 +640 426 +640 420 +383 640 +640 428 +640 480 +640 316 +640 427 +640 480 +640 480 +640 427 +480 640 +640 360 +500 353 +425 640 +640 480 +640 480 +640 427 +640 425 +375 500 +640 480 +640 427 +640 424 +500 332 +500 375 +480 640 +640 479 +640 480 +640 480 +500 375 +640 480 +500 283 +640 427 +500 375 +500 375 +640 360 +480 640 +640 353 +640 458 +433 640 +640 480 +640 480 +480 640 +640 424 +640 480 +378 640 +640 425 +640 414 +480 640 +640 480 +640 427 +612 612 +640 386 +640 360 +640 426 +375 500 +500 333 +500 400 +640 480 +480 640 +433 640 +144 190 +640 407 +640 427 +640 480 +640 480 +640 425 +640 480 +640 480 +640 426 +640 427 +500 333 +640 478 +640 425 +640 427 +500 375 +640 480 +427 640 +640 427 +640 538 +640 468 +500 375 +640 480 +500 375 +427 640 +500 375 +640 478 +426 640 +480 640 +640 425 +640 427 +480 640 +640 427 +640 426 +640 480 +511 640 +640 480 +640 480 +640 480 +640 480 +480 640 +640 427 +480 640 +640 426 +640 427 +640 426 +640 426 +500 375 +640 426 +500 375 +640 480 +640 425 +640 478 +640 427 +375 500 +500 375 +640 426 +385 289 +640 428 +640 427 +333 500 +640 426 +500 375 +334 500 +500 334 +500 375 +394 500 +640 427 +640 427 +640 480 +444 640 +640 480 +640 427 +640 480 +445 590 +640 425 +426 640 +552 640 +480 640 +640 413 +640 451 +640 427 +480 640 +428 640 +480 640 +640 429 +640 443 +640 640 +640 266 +427 640 +425 640 +640 427 +500 375 +500 333 +427 640 +480 640 +415 625 +500 375 +640 493 +640 461 +640 482 +640 434 +480 640 +640 400 +480 640 +500 375 +500 333 +454 342 +500 334 +640 428 +640 622 +640 480 +640 480 +427 640 +640 183 +640 420 +428 640 +640 426 +425 640 +640 427 +640 480 +640 427 +493 640 +640 480 +640 426 +640 480 +640 480 +612 612 +640 503 +640 427 +640 481 +640 480 +640 640 +480 640 +455 640 +640 480 +640 480 +500 375 +640 427 +480 640 +480 640 +640 428 +640 424 +640 426 +640 640 +427 640 +361 640 +427 640 +640 426 +640 427 +612 612 +427 640 +480 640 +375 500 +500 375 +640 427 +640 429 +640 427 +640 481 +640 480 +332 500 +640 421 +640 430 +640 481 +500 375 +640 458 +640 426 +480 640 +640 480 +640 427 +375 500 +640 428 +640 427 +480 640 +640 480 +640 426 +480 640 +640 480 +640 480 +640 468 +640 480 +426 640 +640 427 +636 640 +480 640 +427 640 +640 466 +640 489 +500 375 +500 337 +375 500 +640 426 +640 427 +494 640 +640 427 +640 480 +640 427 +375 500 +500 333 +640 427 +500 375 +640 426 +600 402 +640 480 +360 640 +640 427 +480 640 +640 480 +640 640 +640 426 +424 640 +640 480 +500 375 +640 480 +640 480 +640 480 +427 640 +640 458 +640 463 +480 640 +640 480 +640 480 +640 427 +640 480 +640 424 +427 640 +640 480 +612 612 +640 428 +500 375 +640 427 +426 640 +640 480 +333 500 +523 640 +427 640 +640 427 +511 640 +480 640 +612 612 +612 612 +480 640 +500 375 +480 640 +640 427 +640 427 +640 480 +526 640 +640 360 +333 500 +427 640 +640 628 +640 458 +640 428 +427 640 +500 305 +480 640 +375 500 +640 427 +640 480 +427 640 +640 480 +640 480 +355 500 +640 424 +640 487 +640 427 +375 500 +480 640 +500 375 +612 612 +500 375 +640 480 +640 427 +640 427 +640 429 +500 375 +640 378 +612 612 +426 640 +640 480 +632 640 +500 375 +418 640 +640 499 +640 478 +350 500 +640 427 +640 480 +640 480 +640 480 +640 425 +640 360 +640 480 +640 427 +640 427 +439 640 +473 600 +500 473 +640 408 +640 427 +640 480 +427 640 +640 427 +500 375 +640 640 +640 426 +640 427 +640 428 +500 333 +640 480 +640 427 +612 612 +427 640 +640 480 +640 480 +640 480 +640 425 +480 640 +640 410 +480 640 +640 427 +640 478 +640 427 +612 612 +640 427 +640 425 +640 470 +348 500 +599 640 +640 316 +427 640 +640 480 +640 480 +427 640 +442 640 +320 240 +640 425 +500 375 +427 640 +640 480 +500 500 +479 640 +500 333 +640 480 +426 640 +640 427 +640 640 +640 480 +640 427 +640 427 +640 429 +640 428 +375 500 +640 480 +640 426 +640 426 +640 425 +640 638 +640 429 +640 425 +480 640 +640 478 +640 360 +480 640 +480 640 +640 426 +500 333 +612 612 +480 640 +500 375 +640 427 +332 500 +500 375 +320 480 +640 423 +375 500 +640 425 +500 375 +640 480 +392 640 +640 569 +500 334 +640 425 +500 375 +480 640 +640 480 +640 427 +640 427 +640 480 +480 640 +640 306 +640 424 +500 348 +500 350 +500 332 +424 640 +640 425 +640 480 +428 640 +640 480 +500 286 +640 480 +640 480 +480 640 +640 401 +640 424 +640 427 +480 640 +386 500 +640 414 +640 414 +480 640 +640 489 +640 457 +480 640 +640 427 +640 526 +434 640 +478 640 +640 480 +640 279 +640 427 +425 640 +333 500 +640 360 +640 480 +457 640 +374 500 +500 375 +480 640 +640 435 +640 480 +316 500 +640 427 +333 500 +640 426 +474 640 +640 480 +640 478 +640 426 +640 424 +427 640 +640 480 +640 489 +416 500 +640 478 +640 480 +640 427 +640 427 +452 500 +400 400 +427 640 +336 254 +640 401 +333 500 +640 427 +640 366 +640 458 +480 640 +640 427 +500 375 +640 359 +500 375 +480 640 +480 640 +640 480 +640 424 +640 480 +640 429 +640 532 +640 478 +480 640 +640 426 +640 400 +640 359 +640 427 +640 512 +640 480 +640 427 +640 480 +640 481 +640 426 +640 432 +427 640 +500 375 +427 640 +640 480 +425 640 +480 640 +480 640 +640 430 +640 480 +640 480 +640 427 +600 450 +640 360 +640 480 +640 424 +640 425 +612 612 +640 482 +640 480 +640 429 +640 480 +640 480 +480 640 +640 480 +480 640 +640 427 +640 428 +640 480 +640 428 +640 545 +640 426 +480 640 +640 480 +410 500 +640 427 +640 597 +640 480 +640 427 +640 428 +612 612 +479 640 +640 482 +640 480 +500 375 +640 425 +640 480 +640 480 +640 480 +640 480 +612 612 +428 640 +500 375 +480 640 +640 428 +640 427 +500 375 +640 359 +640 426 +640 480 +640 478 +332 500 +640 480 +427 640 +640 480 +480 640 +640 427 +640 480 +640 480 +640 432 +500 333 +640 480 +480 640 +480 640 +526 640 +640 480 +640 480 +640 440 +500 334 +384 640 +640 354 +375 500 +480 640 +640 418 +640 480 +640 426 +640 427 +640 427 +640 424 +500 375 +480 640 +640 424 +500 398 +640 480 +640 427 +640 480 +640 480 +375 500 +424 640 +640 480 +640 478 +480 640 +427 640 +500 373 +425 640 +640 480 +640 427 +480 640 +484 640 +480 640 +640 426 +640 381 +480 640 +427 640 +640 512 +640 424 +426 640 +640 400 +640 480 +640 442 +640 480 +480 640 +500 375 +425 640 +640 457 +426 640 +640 432 +480 640 +640 480 +640 480 +427 640 +640 425 +375 500 +640 480 +427 640 +640 428 +612 612 +640 361 +640 466 +450 360 +640 624 +500 335 +428 640 +640 427 +480 640 +640 425 +640 427 +640 480 +500 375 +480 640 +640 298 +640 480 +500 449 +640 426 +336 448 +500 375 +640 480 +640 640 +427 640 +640 360 +640 427 +478 640 +640 427 +640 427 +640 476 +544 640 +640 480 +640 478 +426 640 +640 480 +640 426 +428 640 +480 640 +300 400 +640 603 +640 480 +428 640 +383 640 +480 640 +640 480 +640 418 +375 500 +640 439 +500 333 +640 427 +640 491 +640 482 +500 333 +640 428 +640 427 +427 640 +640 480 +639 640 +640 480 +640 473 +640 480 +640 480 +640 544 +640 456 +480 640 +640 384 +640 427 +500 281 +640 480 +640 312 +640 457 +640 427 +640 427 +500 348 +640 480 +427 640 +640 426 +640 425 +640 480 +640 480 +500 375 +480 640 +425 640 +640 588 +640 480 +640 434 +640 427 +367 500 +506 380 +375 500 +640 428 +640 424 +624 640 +425 640 +500 375 +639 640 +600 400 +500 375 +640 480 +400 600 +480 640 +500 375 +640 436 +640 480 +428 640 +640 452 +480 640 +640 428 +612 612 +640 512 +500 384 +375 500 +426 640 +479 640 +640 480 +640 411 +640 480 +640 427 +640 359 +640 478 +640 480 +337 500 +640 416 +427 640 +640 480 +640 480 +612 612 +612 612 +480 640 +375 500 +640 427 +640 480 +640 426 +425 640 +480 640 +640 480 +640 480 +640 427 +640 428 +640 427 +640 480 +480 640 +640 426 +640 501 +640 480 +480 640 +640 480 +549 640 +372 500 +640 480 +640 640 +426 640 +500 375 +640 482 +640 427 +640 426 +333 500 +426 640 +500 334 +640 439 +640 429 +640 480 +480 640 +640 426 +500 375 +333 500 +640 587 +500 375 +640 425 +640 426 +640 425 +640 427 +640 429 +500 375 +427 640 +640 480 +640 361 +427 640 +500 375 +640 480 +640 424 +452 640 +640 480 +640 480 +640 480 +640 480 +640 427 +500 375 +640 480 +433 640 +640 480 +640 480 +547 640 +640 428 +640 427 +640 428 +640 427 +640 545 +480 640 +640 640 +640 476 +640 480 +640 438 +500 424 +480 640 +428 640 +500 332 +457 640 +427 640 +500 375 +640 464 +513 640 +640 480 +640 427 +640 359 +640 426 +640 426 +640 428 +640 480 +640 480 +338 500 +457 640 +640 427 +500 375 +640 426 +500 375 +640 428 +640 480 +612 612 +640 425 +401 288 +640 425 +640 426 +640 425 +500 375 +640 512 +640 428 +513 640 +640 428 +474 640 +640 425 +322 214 +612 612 +640 480 +640 512 +640 480 +426 640 +640 513 +640 640 +640 480 +640 425 +427 640 +640 428 +640 480 +534 640 +640 480 +640 480 +400 640 +425 640 +640 428 +640 427 +640 480 +640 480 +640 428 +640 480 +427 640 +640 360 +640 427 +640 480 +640 480 +640 502 +640 588 +640 480 +640 480 +640 480 +640 427 +480 640 +375 500 +612 612 +640 480 +480 640 +427 640 +427 640 +500 332 +640 427 +500 375 +640 480 +640 427 +640 427 +480 640 +640 424 +640 480 +640 480 +640 480 +640 427 +640 529 +426 640 +640 329 +640 480 +640 480 +330 500 +640 429 +640 453 +640 383 +640 437 +640 457 +640 640 +500 375 +640 539 +640 427 +640 426 +640 425 +375 500 +640 427 +640 480 +500 300 +480 640 +500 335 +640 480 +640 427 +640 480 +640 427 +640 480 +640 480 +640 427 +638 394 +640 480 +640 427 +640 427 +479 640 +493 640 +480 640 +640 465 +500 375 +500 381 +640 478 +498 640 +473 640 +640 425 +640 480 +480 640 +640 428 +640 356 +640 426 +640 480 +640 425 +640 427 +480 640 +640 482 +480 640 +640 427 +640 480 +640 427 +640 426 +640 427 +427 640 +640 413 +640 480 +500 375 +640 424 +640 610 +371 640 +640 361 +500 375 +640 427 +640 480 +640 480 +640 426 +640 425 +500 312 +640 426 +427 640 +640 427 +640 480 +375 500 +640 480 +640 480 +640 427 +640 360 +640 480 +480 640 +640 427 +640 427 +640 427 +425 640 +640 427 +640 480 +640 427 +640 427 +333 500 +640 427 +375 500 +539 640 +640 478 +640 480 +640 427 +493 640 +640 427 +612 612 +334 500 +480 640 +640 558 +640 512 +640 480 +640 426 +640 480 +640 479 +480 640 +500 375 +640 480 +640 480 +640 478 +480 640 +612 612 +640 423 +500 334 +640 425 +640 478 +360 640 +513 640 +640 428 +640 425 +640 427 +427 640 +500 415 +640 427 +640 640 +640 427 +640 473 +500 375 +334 500 +640 480 +640 480 +640 428 +640 480 +640 499 +640 427 +640 450 +640 411 +640 481 +425 640 +427 640 +640 427 +480 640 +576 640 +640 480 +640 480 +500 375 +640 480 +640 429 +500 333 +640 480 +640 480 +480 640 +480 640 +640 424 +640 427 +640 413 +640 291 +500 375 +612 612 +640 425 +640 429 +640 480 +640 426 +640 640 +426 640 +640 480 +640 640 +640 480 +640 425 +640 428 +500 375 +640 480 +427 640 +640 426 +640 480 +640 427 +612 612 +640 427 +640 406 +640 479 +500 333 +640 480 +640 480 +375 500 +640 480 +640 360 +313 500 +480 640 +375 500 +640 480 +640 481 +640 428 +640 428 +480 640 +427 640 +640 360 +500 375 +640 359 +480 640 +361 640 +640 474 +640 427 +500 375 +640 426 +480 640 +640 396 +640 480 +640 480 +640 481 +480 640 +640 425 +640 480 +640 480 +443 640 +427 640 +640 480 +640 480 +640 426 +514 640 +426 640 +612 612 +500 333 +500 458 +640 423 +333 500 +640 458 +640 413 +640 486 +640 427 +500 333 +500 332 +612 612 +640 480 +425 640 +426 640 +640 480 +640 480 +640 513 +640 473 +640 480 +640 480 +640 428 +640 392 +333 500 +640 480 +640 480 +612 612 +640 401 +478 640 +640 427 +640 480 +640 427 +595 640 +500 352 +500 333 +640 426 +640 480 +640 480 +640 494 +640 480 +640 427 +640 480 +640 426 +480 640 +640 360 +640 428 +640 427 +450 600 +500 415 +640 480 +450 640 +640 480 +640 424 +351 640 +500 375 +640 427 +428 640 +640 415 +640 427 +612 612 +640 480 +640 426 +640 480 +640 480 +500 328 +640 480 +478 640 +640 487 +640 360 +480 640 +640 480 +640 424 +478 640 +480 640 +640 425 +427 640 +640 480 +640 480 +300 300 +640 480 +640 427 +427 640 +640 480 +640 426 +530 640 +640 480 +640 427 +640 425 +640 480 +640 427 +640 424 +640 478 +640 396 +480 640 +500 333 +640 480 +640 478 +640 484 +640 480 +640 427 +640 640 +640 428 +480 640 +500 331 +640 528 +426 640 +640 480 +640 478 +640 288 +640 428 +424 640 +256 200 +640 128 +640 425 +640 427 +500 500 +640 480 +333 500 +640 480 +640 480 +640 427 +640 480 +480 640 +640 544 +640 480 +640 339 +349 480 +426 640 +640 480 +336 450 +640 512 +500 400 +640 431 +640 480 +480 640 +640 457 +480 640 +640 428 +640 427 +640 451 +375 500 +640 480 +640 480 +640 425 +640 480 +640 428 +426 640 +427 640 +640 480 +640 480 +451 338 +500 332 +480 640 +500 375 +500 333 +333 500 +640 478 +427 640 +500 446 +640 425 +480 640 +640 427 +520 360 +427 640 +640 480 +356 500 +640 427 +640 427 +333 500 +500 375 +640 480 +640 609 +600 399 +640 485 +640 427 +500 492 +375 500 +640 480 +640 429 +375 500 +480 640 +427 640 +375 500 +640 427 +640 427 +640 480 +640 480 +640 480 +640 428 +640 427 +640 480 +640 426 +549 640 +480 640 +582 640 +640 529 +639 640 +640 428 +640 366 +640 480 +640 427 +640 640 +640 476 +640 480 +640 427 +500 333 +640 427 +640 426 +480 640 +640 427 +640 324 +640 427 +334 500 +640 480 +336 500 +494 367 +640 426 +640 425 +500 375 +634 640 +475 640 +640 480 +500 298 +640 480 +640 601 +640 480 +640 341 +640 485 +640 425 +432 640 +640 513 +640 428 +640 393 +640 425 +500 299 +640 426 +480 640 +480 640 +418 640 +640 480 +640 480 +480 640 +640 424 +640 360 +633 640 +480 640 +375 500 +426 640 +640 427 +480 640 +640 425 +426 640 +640 400 +640 361 +424 640 +640 480 +640 438 +640 480 +500 333 +640 399 +640 428 +319 640 +359 500 +640 360 +640 428 +480 640 +640 451 +640 480 +500 260 +640 480 +640 480 +640 427 +640 480 +640 427 +612 612 +375 500 +480 640 +640 480 +640 480 +480 640 +640 427 +427 640 +480 640 +640 426 +640 427 +640 420 +640 640 +375 500 +390 500 +640 377 +480 640 +640 480 +640 425 +375 500 +488 640 +640 427 +640 427 +500 407 +500 333 +640 426 +640 427 +480 640 +640 428 +640 378 +640 480 +427 640 +348 500 +428 640 +316 500 +640 512 +480 640 +640 480 +640 425 +640 480 +428 640 +500 384 +640 480 +640 360 +427 640 +640 426 +640 451 +640 360 +640 427 +482 640 +640 426 +479 640 +426 640 +640 480 +640 427 +640 361 +640 480 +500 375 +640 480 +500 375 +500 375 +640 426 +640 428 +480 640 +640 480 +425 640 +640 484 +640 453 +640 429 +426 640 +500 375 +480 640 +500 375 +640 312 +500 334 +640 427 +640 427 +640 427 +640 425 +640 616 +640 633 +640 569 +640 427 +640 426 +612 612 +500 375 +480 640 +640 425 +427 640 +640 425 +640 426 +640 427 +640 426 +512 640 +500 400 +480 640 +640 480 +640 457 +500 375 +640 427 +640 428 +640 400 +640 428 +375 500 +640 480 +640 426 +640 512 +640 480 +640 413 +640 480 +500 373 +467 640 +640 480 +640 426 +640 429 +480 640 +480 640 +640 427 +427 640 +463 640 +640 425 +640 383 +640 425 +640 480 +427 640 +640 427 +500 330 +500 333 +640 480 +480 640 +640 424 +640 428 +640 290 +640 480 +480 640 +640 480 +640 369 +640 480 +500 375 +640 480 +464 640 +428 640 +640 484 +640 480 +640 480 +640 427 +464 640 +612 612 +480 640 +640 427 +426 640 +480 640 +640 640 +640 480 +640 480 +640 311 +500 332 +640 454 +640 480 +480 640 +640 427 +480 360 +640 427 +500 375 +640 480 +375 500 +640 480 +640 366 +640 480 +640 558 +535 357 +640 480 +640 480 +427 640 +640 480 +426 640 +640 480 +612 612 +500 375 +480 640 +640 425 +640 480 +480 640 +640 480 +640 480 +427 640 +640 428 +640 174 +427 640 +640 457 +640 524 +640 480 +640 480 +640 480 +640 480 +640 640 +411 640 +640 427 +640 427 +427 640 +640 511 +640 480 +586 430 +480 640 +640 480 +640 480 +640 480 +640 361 +427 640 +640 480 +500 435 +612 612 +207 640 +425 640 +425 640 +640 427 +640 426 +480 640 +640 427 +480 640 +500 333 +640 436 +640 480 +640 427 +640 427 +640 480 +640 480 +640 480 +640 480 +612 612 +640 480 +640 427 +640 480 +452 640 +640 425 +640 475 +640 356 +500 375 +640 425 +427 640 +500 375 +640 427 +500 375 +640 427 +640 512 +640 423 +640 456 +480 640 +640 427 +500 335 +250 306 +416 640 +640 480 +640 515 +500 375 +500 333 +640 424 +427 640 +640 424 +500 375 +640 425 +466 640 +640 469 +640 480 +640 480 +640 480 +457 640 +480 640 +500 640 +427 640 +640 427 +640 480 +640 513 +480 640 +640 480 +640 427 +640 394 +640 360 +640 429 +500 375 +402 640 +640 427 +480 640 +640 427 +640 480 +640 360 +427 640 +500 375 +640 480 +500 375 +640 427 +500 375 +640 480 +640 478 +480 640 +478 640 +500 332 +640 439 +640 480 +640 480 +469 640 +333 500 +640 419 +640 194 +640 480 +640 480 +640 426 +612 612 +640 360 +640 428 +500 375 +640 425 +640 457 +640 480 +640 480 +640 425 +500 375 +600 416 +640 424 +500 375 +640 480 +640 480 +640 428 +640 480 +335 500 +640 640 +427 640 +640 428 +480 640 +500 331 +500 374 +375 500 +640 480 +640 426 +640 480 +640 366 +480 640 +640 427 +640 480 +640 480 +640 425 +640 424 +640 427 +640 428 +640 429 +640 492 +640 427 +640 480 +399 640 +640 480 +640 480 +640 480 +640 361 +640 427 +426 640 +640 425 +640 427 +640 640 +640 480 +640 427 +640 640 +640 426 +640 480 +640 480 +640 480 +500 410 +640 480 +640 427 +500 500 +383 640 +640 480 +640 480 +640 428 +360 439 +480 640 +500 480 +640 427 +422 640 +426 640 +500 375 +640 480 +596 640 +426 640 +640 480 +500 332 +612 612 +640 480 +640 480 +640 480 +640 278 +640 480 +640 426 +640 427 +640 427 +612 612 +311 308 +640 427 +640 429 +640 428 +640 480 +612 612 +500 335 +640 480 +640 427 +640 481 +500 333 +640 480 +640 480 +640 479 +640 480 +450 395 +640 480 +640 479 +640 427 +480 640 +640 480 +640 426 +426 640 +640 360 +427 640 +423 640 +640 480 +437 500 +640 481 +640 426 +640 480 +640 480 +640 427 +640 480 +640 480 +500 332 +640 480 +640 426 +640 480 +640 362 +640 479 +640 480 +640 426 +497 640 +640 427 +640 429 +640 427 +640 541 +480 640 +600 418 +640 480 +500 333 +640 480 +448 299 +640 427 +500 333 +640 480 +375 500 +375 500 +480 640 +640 480 +640 427 +640 480 +478 640 +640 426 +426 640 +427 640 +640 427 +640 427 +480 640 +640 280 +640 425 +375 500 +480 640 +640 447 +425 640 +640 426 +428 640 +640 480 +415 500 +640 640 +640 468 +427 640 +640 480 +640 464 +640 361 +640 480 +640 640 +612 612 +640 444 +640 427 +640 427 +640 427 +500 468 +640 442 +426 640 +640 388 +480 640 +640 480 +427 640 +640 444 +500 333 +427 640 +600 400 +640 427 +640 427 +640 435 +640 360 +640 426 +640 428 +480 640 +640 427 +640 428 +640 354 +640 186 +640 426 +640 430 +500 377 +480 640 +640 428 +640 480 +640 559 +427 640 +500 333 +640 427 +523 640 +640 426 +640 480 +640 480 +500 333 +500 375 +401 500 +375 500 +640 428 +480 640 +305 229 +480 640 +480 640 +640 426 +640 480 +640 409 +640 427 +640 425 +640 428 +375 500 +640 501 +500 375 +640 480 +500 375 +640 480 +640 480 +612 612 +640 425 +427 640 +424 640 +640 480 +640 480 +640 425 +427 640 +512 640 +640 428 +640 429 +640 427 +640 480 +640 427 +612 612 +640 480 +640 474 +612 612 +640 424 +405 640 +640 480 +612 612 +640 480 +640 480 +500 375 +640 616 +640 427 +480 640 +480 640 +500 333 +640 427 +500 375 +480 640 +640 480 +640 426 +640 424 +640 523 +640 427 +443 640 +640 427 +640 424 +640 421 +500 334 +640 640 +640 479 +427 640 +640 434 +401 640 +640 426 +640 428 +612 612 +491 640 +428 640 +480 640 +640 490 +640 480 +480 640 +640 427 +480 640 +500 375 +640 480 +640 481 +500 333 +640 480 +640 457 +419 640 +640 480 +640 427 +426 640 +640 427 +640 429 +500 375 +426 640 +640 401 +640 426 +480 640 +640 359 +374 500 +479 640 +500 333 +640 480 +640 504 +612 612 +640 457 +500 401 +640 429 +640 449 +500 298 +640 426 +500 375 +375 500 +640 412 +640 385 +640 406 +640 478 +640 427 +640 427 +500 375 +640 480 +640 440 +640 480 +640 530 +480 360 +480 640 +640 480 +640 480 +480 640 +640 429 +640 431 +640 481 +640 469 +640 479 +640 480 +481 640 +640 427 +640 480 +426 640 +640 480 +425 640 +480 640 +640 425 +500 375 +628 640 +640 565 +500 375 +330 500 +374 500 +500 333 +640 427 +500 333 +640 440 +640 426 +480 640 +612 612 +428 640 +480 640 +640 428 +575 640 +640 425 +640 427 +500 375 +500 366 +427 640 +500 281 +428 640 +398 640 +640 480 +640 427 +640 428 +640 428 +500 400 +500 373 +500 375 +640 426 +640 425 +640 424 +500 333 +640 418 +425 640 +640 427 +640 480 +640 583 +640 481 +640 349 +480 640 +640 428 +640 427 +640 480 +640 480 +640 640 +640 427 +640 427 +480 640 +640 480 +640 480 +640 463 +499 640 +640 426 +640 302 +427 640 +640 427 +640 480 +640 443 +500 333 +640 480 +511 640 +640 463 +426 640 +500 336 +640 480 +640 382 +640 480 +640 427 +640 513 +428 640 +479 640 +640 360 +640 425 +427 640 +640 427 +640 428 +480 640 +640 480 +640 502 +640 354 +500 375 +486 500 +500 333 +640 426 +480 640 +640 421 +640 427 +640 480 +640 480 +640 512 +640 427 +640 512 +500 333 +640 363 +640 427 +640 427 +402 640 +361 640 +427 640 +640 640 +500 375 +640 427 +500 333 +640 480 +640 594 +640 427 +456 640 +640 480 +640 434 +640 536 +640 427 +640 582 +640 549 +640 428 +640 516 +640 480 +640 480 +640 480 +640 480 +640 348 +640 480 +480 640 +640 425 +480 640 +480 640 +640 427 +640 425 +640 426 +640 427 +480 640 +640 427 +640 360 +427 640 +640 425 +640 480 +640 428 +640 480 +640 339 +427 640 +640 480 +640 480 +640 427 +640 423 +640 427 +640 426 +640 427 +640 428 +411 640 +640 420 +640 480 +488 640 +500 334 +431 640 +640 403 +640 428 +500 375 +500 375 +640 480 +327 500 +500 333 +480 640 +598 640 +500 375 +640 480 +500 375 +640 431 +640 480 +500 375 +640 480 +427 640 +640 480 +640 425 +480 640 +500 375 +640 480 +640 426 +640 480 +640 360 +640 480 +640 456 +500 375 +640 398 +471 640 +481 640 +640 359 +500 381 +640 524 +383 640 +640 427 +640 481 +640 480 +640 480 +428 640 +478 640 +500 329 +640 425 +375 500 +640 480 +640 426 +640 424 +500 455 +480 640 +612 612 +500 312 +640 480 +640 428 +640 480 +512 640 +640 434 +640 640 +478 640 +640 369 +640 480 +511 640 +500 332 +612 612 +640 281 +640 427 +427 640 +640 480 +640 428 +640 425 +640 480 +426 640 +640 640 +640 480 +425 640 +640 434 +640 514 +640 480 +480 640 +640 480 +640 484 +439 640 +640 431 +480 640 +371 500 +426 640 +640 334 +640 353 +427 640 +427 640 +427 640 +640 427 +480 640 +424 640 +426 640 +640 425 +640 480 +333 500 +426 640 +640 429 +640 640 +640 427 +500 375 +640 428 +640 480 +640 480 +427 640 +640 424 +552 640 +640 506 +640 424 +640 427 +640 480 +500 333 +500 375 +640 392 +640 570 +640 424 +640 427 +500 401 +640 427 +478 640 +640 425 +640 480 +640 480 +640 513 +640 480 +425 640 +640 640 +640 427 +640 480 +356 533 +500 375 +640 360 +427 640 +426 640 +640 427 +640 480 +640 480 +640 480 +640 480 +640 425 +640 480 +640 479 +640 425 +600 399 +640 366 +640 443 +500 375 +640 434 +640 428 +640 418 +640 480 +426 640 +513 640 +640 416 +640 428 +640 427 +500 375 +640 480 +519 640 +500 313 +640 480 +345 500 +640 334 +640 402 +640 427 +612 612 +480 640 +640 480 +640 413 +640 427 +640 426 +480 640 +640 426 +640 426 +427 640 +640 480 +612 612 +480 640 +500 375 +640 518 +640 480 +640 359 +500 375 +640 427 +500 375 +640 480 +640 480 +612 612 +640 429 +640 427 +640 427 +640 425 +640 426 +640 427 +640 428 +500 316 +640 480 +640 640 +640 436 +640 427 +480 640 +640 425 +640 480 +640 480 +479 640 +640 480 +640 427 +640 480 +427 640 +640 640 +640 359 +612 612 +640 480 +640 480 +640 480 +640 480 +425 640 +640 444 +640 480 +326 500 +457 640 +640 480 +579 640 +640 360 +640 435 +640 480 +362 500 +640 480 +428 640 +640 458 +375 500 +640 480 +480 640 +529 640 +375 500 +640 534 +640 480 +640 505 +640 428 +500 375 +640 426 +640 427 +500 375 +640 314 +640 480 +304 640 +640 480 +480 640 +468 405 +426 640 +519 640 +640 480 +640 480 +640 427 +640 480 +640 480 +640 426 +640 427 +500 375 +640 292 +640 480 +640 566 +427 640 +640 526 +640 480 +640 427 +427 640 +640 424 +640 427 +640 426 +640 480 +640 427 +640 426 +640 480 +428 640 +640 424 +640 425 +640 483 +429 640 +424 640 +640 426 +612 612 +640 480 +640 480 +640 430 +640 480 +512 640 +467 640 +640 426 +640 427 +500 241 +640 480 +640 480 +481 640 +427 640 +640 480 +640 326 +640 564 +640 640 +480 640 +640 286 +425 640 +480 640 +423 640 +640 424 +640 426 +640 428 +640 427 +640 426 +640 480 +480 640 +640 640 +375 500 +640 628 +640 426 +640 399 +640 428 +640 427 +612 612 +640 477 +640 425 +612 612 +640 480 +640 480 +640 427 +640 480 +640 480 +428 640 +480 640 +640 444 +640 501 +480 640 +500 333 +619 640 +640 427 +640 498 +640 480 +640 480 +426 640 +500 375 +640 426 +640 480 +640 640 +480 640 +640 426 +640 428 +468 640 +640 427 +640 480 +640 427 +375 500 +640 480 +640 427 +640 359 +640 427 +640 425 +640 426 +640 361 +640 480 +640 427 +389 640 +427 640 +640 393 +612 612 +480 640 +427 640 +640 428 +640 491 +428 640 +472 640 +640 427 +640 428 +508 640 +640 427 +433 640 +425 640 +588 640 +500 370 +640 427 +640 428 +640 480 +640 426 +640 448 +640 480 +640 499 +612 612 +640 427 +500 375 +578 640 +500 375 +640 426 +640 427 +640 480 +640 426 +640 640 +500 375 +640 480 +480 640 +480 640 +612 612 +640 427 +428 640 +640 427 +640 640 +480 640 +640 480 +640 480 +640 428 +640 480 +640 640 +640 480 +640 427 +640 640 +640 427 +640 481 +640 479 +320 240 +427 640 +640 427 +332 500 +500 500 +640 427 +640 480 +640 427 +640 480 +640 428 +640 376 +640 480 +333 500 +480 640 +640 428 +640 480 +640 480 +640 427 +480 640 +500 375 +640 480 +640 427 +426 640 +640 426 +640 640 +640 427 +640 494 +640 321 +640 425 +640 427 +500 375 +640 348 +640 238 +640 427 +640 453 +640 433 +640 427 +640 480 +640 480 +500 500 +640 480 +480 640 +640 480 +640 480 +480 640 +640 480 +640 480 +427 640 +640 360 +384 640 +480 640 +640 448 +500 375 +478 640 +375 500 +640 480 +640 480 +640 480 +640 424 +640 480 +640 480 +288 160 +640 468 +640 474 +427 640 +640 480 +640 480 +640 427 +640 468 +640 480 +640 427 +500 244 +640 427 +500 375 +640 222 +640 480 +640 480 +640 480 +640 427 +640 427 +640 480 +640 406 +480 640 +640 425 +640 480 +640 427 +640 429 +500 333 +640 427 +500 375 +640 391 +640 480 +640 480 +640 425 +640 427 +640 480 +480 640 +640 427 +640 480 +640 427 +640 427 +640 493 +640 428 +640 425 +640 480 +480 640 +426 640 +480 640 +480 640 +428 640 +425 640 +500 333 +500 375 +640 427 +640 427 +640 488 +640 480 +640 427 +514 640 +500 451 +640 480 +474 640 +640 425 +640 426 +640 425 +480 640 +640 498 +640 480 +640 480 +640 459 +640 480 +598 640 +640 480 +480 640 +429 640 +640 360 +500 500 +326 640 +640 427 +640 426 +640 427 +640 480 +640 428 +640 427 +640 425 +600 400 +640 619 +640 640 +426 640 +500 374 +640 480 +640 482 +480 640 +480 640 +640 428 +612 612 +640 480 +480 640 +480 640 +640 640 +640 427 +427 640 +640 480 +640 427 +640 480 +500 375 +640 569 +480 640 +640 461 +640 428 +480 640 +640 361 +640 429 +375 500 +640 427 +500 375 +640 384 +640 427 +640 428 +436 640 +600 450 +480 640 +427 640 +484 640 +640 480 +640 427 +427 640 +478 640 +480 640 +640 640 +640 480 +640 423 +500 333 +640 427 +480 640 +480 640 +640 453 +419 640 +426 640 +640 636 +640 480 +640 426 +640 427 +612 612 +640 478 +640 480 +640 427 +500 375 +640 480 +640 424 +427 640 +640 427 +640 486 +482 640 +512 640 +640 400 +427 640 +500 375 +347 500 +640 633 +640 426 +480 640 +500 336 +640 382 +640 484 +500 333 +640 425 +640 427 +640 427 +640 427 +640 427 +640 427 +640 427 +427 640 +640 512 +500 334 +640 427 +640 573 +425 640 +640 427 +480 640 +640 427 +640 480 +400 266 +640 480 +480 640 +640 427 +640 481 +640 480 +500 375 +640 640 +536 640 +640 480 +640 480 +640 480 +640 425 +640 480 +640 427 +270 360 +640 480 +640 480 +640 512 +394 401 +500 342 +320 240 +424 640 +500 333 +640 468 +383 640 +640 427 +425 640 +640 492 +640 425 +640 480 +640 416 +480 640 +640 427 +640 480 +640 453 +640 427 +640 427 +640 426 +640 489 +480 640 +426 640 +549 640 +640 427 +640 478 +640 427 +640 425 +480 640 +480 640 +640 428 +640 427 +640 440 +640 506 +500 375 +612 612 +640 426 +640 480 +640 352 +640 427 +480 640 +640 415 +640 480 +640 413 +640 504 +640 401 +500 375 +612 612 +500 375 +640 426 +427 640 +640 480 +640 359 +427 640 +640 480 +500 276 +500 375 +640 439 +640 427 +500 314 +480 640 +640 622 +640 423 +500 435 +640 432 +640 480 +640 640 +500 403 +375 500 +640 426 +500 375 +640 425 +640 425 +640 427 +640 640 +580 640 +640 313 +640 640 +612 612 +640 386 +640 427 +640 427 +640 480 +612 612 +640 427 +640 480 +640 424 +612 612 +640 517 +426 640 +640 433 +640 418 +640 441 +640 426 +640 425 +480 640 +640 360 +640 310 +640 425 +640 480 +640 425 +500 333 +640 427 +640 428 +480 640 +640 427 +640 428 +640 484 +481 640 +503 480 +640 159 +640 480 +425 640 +480 640 +640 427 +456 640 +640 354 +425 640 +552 640 +640 427 +640 552 +640 480 +640 427 +640 480 +640 426 +640 640 +640 427 +640 480 +640 480 +425 640 +640 480 +640 428 +640 480 +640 480 +640 640 +640 425 +640 415 +640 483 +640 361 +640 427 +640 427 +500 330 +640 425 +640 427 +640 426 +500 333 +640 480 +640 360 +640 427 +640 426 +640 426 +427 640 +425 640 +640 430 +640 480 +426 640 +640 427 +480 640 +612 612 +640 356 +375 500 +425 640 +640 480 +640 428 +640 360 +389 500 +500 375 +427 640 +640 427 +640 428 +640 423 +478 640 +640 427 +640 424 +640 427 +423 640 +334 500 +640 427 +640 427 +640 480 +640 480 +640 360 +640 519 +480 640 +640 390 +640 425 +500 325 +640 421 +478 640 +640 425 +500 375 +640 424 +640 422 +500 375 +640 640 +332 500 +640 426 +640 427 +640 308 +480 640 +457 640 +640 480 +612 612 +640 480 +640 434 +450 420 +640 480 +640 400 +640 428 +640 582 +640 427 +640 386 +500 400 +640 480 +640 427 +640 499 +640 480 +375 500 +640 425 +480 640 +480 640 +500 375 +640 390 +480 640 +640 425 +500 400 +425 640 +500 374 +640 480 +500 333 +640 469 +640 444 +640 428 +418 640 +640 431 +500 281 +640 426 +423 640 +413 640 +500 375 +425 640 +480 640 +640 427 +640 489 +500 325 +640 480 +500 340 +640 359 +640 427 +640 480 +480 640 +480 640 +640 427 +640 387 +480 640 +480 640 +400 280 +640 480 +640 480 +640 480 +331 500 +640 481 +640 454 +640 480 +640 480 +640 426 +640 480 +640 427 +640 360 +640 480 +640 480 +500 345 +640 427 +640 480 +428 640 +500 375 +640 427 +640 426 +640 426 +480 640 +612 612 +640 439 +640 427 +640 599 +640 428 +640 428 +500 375 +640 512 +427 640 +640 360 +640 427 +640 480 +500 375 +500 375 +500 291 +480 640 +480 640 +640 480 +500 375 +612 612 +443 640 +640 561 +640 427 +467 640 +427 640 +640 427 +640 426 +640 424 +480 640 +427 640 +375 500 +640 480 +640 427 +528 640 +640 360 +640 480 +640 427 +333 500 +640 478 +400 640 +500 375 +640 427 +640 481 +640 427 +480 640 +640 426 +640 480 +427 640 +640 480 +640 419 +640 427 +480 640 +640 428 +640 427 +640 534 +640 425 +640 480 +480 640 +640 480 +393 316 +640 445 +640 480 +480 640 +480 640 +427 640 +640 480 +640 417 +425 640 +640 427 +640 426 +500 281 +585 640 +640 480 +500 375 +640 480 +640 480 +640 427 +640 421 +640 427 +587 640 +640 452 +640 427 +640 480 +640 425 +640 640 +640 488 +480 640 +640 359 +640 503 +640 480 +500 332 +640 521 +427 640 +640 428 +640 480 +640 427 +640 480 +375 500 +640 367 +640 480 +640 480 +427 640 +640 480 +640 427 +640 512 +640 480 +500 333 +640 480 +640 427 +640 333 +640 424 +640 480 +640 427 +640 427 +640 480 +640 427 +640 425 +480 640 +500 375 +640 428 +640 427 +640 480 +612 612 +375 500 +500 375 +500 333 +500 375 +640 480 +640 427 +640 480 +500 375 +640 478 +640 426 +640 480 +500 400 +375 500 +640 428 +640 499 +640 360 +640 427 +640 480 +640 480 +640 427 +640 480 +640 485 +427 640 +375 500 +640 456 +640 464 +473 640 +640 359 +640 425 +612 612 +640 427 +444 640 +640 480 +640 428 +640 414 +500 375 +333 500 +500 333 +640 437 +612 612 +333 500 +640 548 +640 480 +640 512 +480 640 +640 428 +640 480 +375 500 +640 429 +333 500 +640 480 +640 438 +379 640 +640 427 +640 426 +479 640 +640 480 +500 375 +640 429 +500 375 +640 480 +640 426 +640 480 +640 480 +640 427 +640 467 +427 640 +640 426 +427 640 +640 434 +480 640 +612 612 +640 425 +640 427 +640 427 +442 640 +500 333 +480 640 +640 480 +640 431 +476 261 +640 427 +640 427 +480 640 +640 427 +480 640 +480 640 +640 640 +500 334 +640 425 +640 427 +427 640 +640 427 +480 640 +500 375 +640 427 +640 480 +478 640 +640 480 +640 466 +478 640 +512 640 +640 418 +640 478 +480 640 +640 427 +640 480 +640 480 +500 375 +500 375 +480 640 +640 480 +640 427 +480 640 +427 640 +375 500 +640 427 +640 480 +640 426 +480 640 +425 640 +640 428 +445 640 +640 427 +640 427 +427 640 +640 522 +500 334 +640 427 +640 360 +640 425 +480 640 +441 640 +640 480 +640 469 +640 427 +427 640 +612 612 +500 375 +400 600 +640 360 +426 640 +640 480 +640 480 +640 480 +640 356 +640 480 +640 480 +640 480 +640 426 +640 360 +640 426 +640 480 +640 480 +600 402 +640 480 +480 640 +385 289 +640 360 +640 480 +640 480 +640 480 +640 426 +640 480 +640 480 +640 426 +427 640 +640 479 +428 640 +480 640 +500 375 +640 406 +334 500 +640 413 +427 640 +375 500 +427 640 +480 640 +640 480 +636 640 +640 426 +500 375 +480 640 +480 640 +640 576 +640 640 +640 426 +612 612 +640 426 +640 429 +640 342 +428 640 +480 640 +480 640 +427 640 +640 480 +640 479 +640 427 +640 425 +500 400 +427 640 +500 375 +640 480 +640 427 +480 640 +640 478 +640 480 +480 640 +427 640 +640 428 +500 375 +640 396 +375 500 +300 500 +640 429 +428 640 +640 426 +480 640 +640 480 +480 640 +640 429 +640 389 +640 427 +640 428 +640 480 +480 640 +480 640 +426 640 +640 480 +640 480 +640 443 +640 480 +480 640 +640 494 +640 425 +427 640 +442 640 +640 424 +640 450 +640 286 +426 640 +480 640 +640 480 +640 480 +640 480 +640 480 +427 640 +640 480 +640 484 +500 375 +500 485 +640 427 +640 480 +640 427 +543 640 +640 427 +640 480 +640 480 +640 427 +500 376 +640 425 +640 480 +640 273 +480 640 +640 427 +640 426 +428 640 +640 360 +640 425 +640 480 +640 429 +500 368 +640 482 +640 480 +427 640 +640 427 +640 480 +640 427 +640 480 +640 479 +640 640 +640 428 +500 375 +640 427 +640 428 +500 333 +480 640 +396 297 +640 479 +640 425 +598 640 +640 582 +640 553 +640 480 +480 640 +640 480 +500 332 +640 425 +640 480 +427 640 +640 480 +500 335 +640 427 +640 480 +427 640 +640 480 +600 400 +427 640 +640 480 +640 426 +640 426 +640 427 +480 640 +480 640 +589 640 +640 480 +640 428 +640 424 +640 427 +428 640 +640 480 +640 454 +424 640 +640 427 +640 425 +640 480 +640 427 +640 427 +480 640 +612 612 +333 500 +640 480 +640 480 +572 640 +640 439 +640 427 +427 640 +640 426 +426 640 +640 480 +640 427 +640 480 +457 640 +640 419 +640 418 +480 640 +425 640 +480 640 +480 640 +500 332 +640 424 +640 396 +640 427 +640 640 +640 480 +640 406 +500 375 +640 512 +640 424 +640 480 +640 480 +640 374 +640 354 +640 427 +640 428 +500 375 +640 480 +480 640 +640 480 +640 480 +500 281 +640 539 +640 625 +426 640 +359 640 +640 427 +640 478 +428 640 +500 333 +375 500 +480 640 +640 426 +500 375 +640 458 +640 457 +640 427 +612 612 +500 375 +640 480 +640 478 +640 480 +640 400 +640 480 +375 500 +640 480 +426 640 +640 640 +612 612 +640 480 +640 424 +480 640 +640 480 +640 427 +640 427 +640 359 +640 427 +640 480 +640 480 +640 424 +640 427 +500 375 +612 612 +640 427 +427 640 +335 500 +640 480 +640 480 +640 427 +428 640 +640 427 +375 500 +500 375 +640 393 +640 546 +640 384 +640 480 +500 375 +333 500 +480 640 +640 428 +640 326 +640 360 +533 640 +640 427 +640 427 +640 422 +640 480 +427 640 +640 478 +640 360 +640 480 +600 398 +480 640 +640 480 +426 640 +640 427 +640 411 +480 640 +640 427 +461 640 +640 427 +480 640 +478 640 +640 480 +640 427 +640 428 +438 500 +426 640 +480 640 +480 640 +500 373 +500 375 +640 508 +640 480 +500 434 +640 480 +640 427 +640 480 +640 427 +426 640 +421 640 +640 383 +427 640 +640 480 +640 428 +500 334 +375 500 +640 480 +640 541 +640 424 +640 478 +426 640 +426 640 +480 640 +640 427 +640 480 +640 422 +640 360 +478 640 +640 476 +504 337 +528 400 +612 612 +500 333 +640 480 +640 480 +427 640 +480 640 +640 427 +480 640 +375 500 +612 612 +640 427 +474 640 +375 500 +640 381 +426 640 +500 375 +640 429 +375 500 +480 640 +640 480 +640 480 +640 480 +640 426 +335 500 +640 480 +640 427 +640 480 +612 612 +640 427 +640 512 +612 612 +640 480 +640 426 +640 427 +640 427 +640 480 +640 427 +425 640 +500 400 +640 636 +640 427 +640 427 +480 640 +640 427 +375 500 +640 413 +640 427 +640 427 +640 426 +640 480 +429 640 +640 480 +640 427 +480 640 +640 480 +640 427 +480 640 +640 427 +500 333 +495 640 +500 406 +640 427 +640 480 +640 480 +480 640 +640 303 +375 500 +612 612 +500 334 +640 528 +640 427 +640 480 +435 640 +640 289 +640 480 +640 480 +427 640 +640 496 +640 427 +612 612 +640 398 +448 640 +640 426 +640 426 +480 640 +640 427 +640 457 +640 427 +640 480 +640 427 +500 375 +333 500 +640 480 +640 295 +640 480 +640 480 +640 427 +500 334 +527 640 +640 558 +640 433 +332 500 +640 425 +500 333 +640 427 +480 640 +500 375 +640 429 +640 480 +640 480 +640 427 +640 480 +500 333 +640 426 +612 612 +500 375 +400 300 +640 428 +612 612 +640 480 +640 480 +640 480 +640 450 +640 427 +640 364 +640 433 +640 427 +640 427 +400 500 +640 428 +640 480 +640 480 +640 480 +640 640 +333 500 +426 640 +420 640 +640 480 +640 427 +640 480 +500 375 +640 478 +640 434 +480 640 +329 500 +640 480 +640 424 +640 426 +612 612 +640 480 +640 480 +640 427 +640 480 +427 640 +640 480 +640 480 +500 385 +427 640 +640 478 +640 376 +640 427 +478 640 +625 505 +640 388 +480 640 +640 433 +640 480 +640 426 +640 427 +640 480 +640 480 +500 295 +640 329 +332 291 +500 375 +640 480 +640 458 +640 426 +424 640 +640 427 +500 375 +500 376 +640 480 +640 246 +480 640 +640 427 +640 427 +640 480 +500 336 +359 640 +428 640 +640 426 +512 640 +640 480 +640 480 +640 450 +480 640 +480 640 +500 375 +640 427 +481 640 +375 500 +333 500 +640 428 +467 640 +500 434 +640 480 +480 640 +640 360 +640 414 +480 640 +480 640 +500 375 +640 427 +480 640 +640 426 +640 468 +500 375 +640 425 +640 426 +640 494 +640 427 +640 480 +640 427 +640 425 +478 640 +478 640 +640 488 +640 480 +640 426 +426 640 +640 427 +640 346 +640 480 +640 408 +640 426 +415 640 +640 480 +640 407 +640 480 +640 427 +640 427 +500 375 +640 480 +640 427 +640 419 +480 640 +640 499 +480 640 +425 640 +612 612 +640 639 +640 427 +640 495 +640 480 +480 640 +640 427 +640 480 +640 425 +427 640 +640 506 +640 480 +640 480 +640 448 +640 399 +640 480 +640 301 +640 481 +500 375 +640 514 +640 374 +640 359 +436 640 +640 427 +640 426 +640 441 +500 400 +428 640 +640 427 +640 480 +640 457 +640 428 +640 480 +640 480 +500 375 +640 427 +612 612 +500 333 +428 640 +640 480 +640 426 +640 427 +640 427 +640 426 +480 640 +640 478 +640 480 +640 480 +600 449 +640 480 +640 431 +640 480 +640 427 +480 640 +640 425 +480 640 +640 480 +426 640 +640 480 +640 480 +640 480 +640 418 +640 426 +640 535 +640 438 +426 640 +640 480 +640 498 +427 640 +640 440 +640 533 +426 640 +640 427 +612 612 +320 240 +640 513 +640 428 +640 480 +480 640 +480 640 +640 299 +500 334 +640 438 +500 375 +341 500 +640 372 +426 640 +640 512 +500 390 +640 480 +512 640 +640 640 +640 360 +375 500 +480 640 +480 640 +640 480 +640 480 +375 500 +607 640 +500 375 +640 445 +640 464 +480 640 +500 343 +640 480 +640 427 +640 427 +640 480 +640 480 +640 480 +640 480 +640 360 +427 640 +425 640 +500 333 +640 480 +640 428 +640 480 +524 640 +640 458 +500 375 +500 375 +561 640 +640 483 +640 457 +640 578 +478 640 +640 425 +640 480 +500 370 +500 375 +333 500 +640 429 +640 427 +500 333 +640 426 +500 375 +640 480 +640 480 +640 427 +480 640 +640 482 +640 480 +480 640 +480 640 +640 480 +640 480 +512 384 +640 426 +375 500 +640 417 +480 640 +640 426 +640 480 +375 500 +640 518 +640 427 +640 427 +640 480 +426 640 +640 427 +640 427 +640 496 +640 370 +640 359 +640 432 +640 480 +612 612 +426 640 +640 359 +383 640 +640 426 +640 426 +478 640 +640 480 +500 374 +427 640 +500 283 +612 612 +640 399 +640 480 +640 480 +640 427 +640 428 +500 375 +640 480 +483 640 +640 480 +385 308 +500 375 +480 640 +640 426 +640 426 +612 612 +332 500 +640 480 +640 426 +640 427 +640 426 +640 480 +640 478 +556 640 +500 375 +478 640 +640 428 +640 480 +425 640 +640 478 +640 480 +640 434 +640 427 +500 480 +640 427 +425 640 +640 429 +640 370 +512 640 +640 480 +640 426 +640 427 +640 427 +640 480 +640 480 +429 640 +640 480 +640 448 +640 480 +640 427 +426 640 +640 480 +640 426 +640 480 +640 426 +458 640 +500 375 +500 376 +640 480 +612 612 +480 640 +424 640 +640 480 +640 639 +640 427 +640 480 +500 333 +500 375 +640 503 +315 500 +333 500 +400 272 +640 480 +640 480 +500 333 +640 478 +640 591 +500 294 +640 426 +640 427 +640 425 +640 457 +480 640 +480 640 +640 427 +640 480 +480 640 +640 428 +640 432 +640 343 +428 640 +640 480 +640 429 +640 360 +640 480 +332 500 +640 480 +640 426 +640 640 +640 425 +640 427 +500 333 +500 375 +640 480 +640 480 +427 640 +640 480 +640 427 +480 640 +375 500 +640 426 +640 398 +640 427 +640 427 +640 427 +640 427 +453 640 +427 640 +640 480 +640 524 +640 427 +640 479 +640 480 +375 500 +640 480 +640 458 +640 522 +640 427 +500 375 +500 333 +500 375 +640 426 +640 480 +640 480 +640 426 +436 640 +500 375 +375 500 +500 375 +640 480 +640 480 +640 480 +500 321 +500 375 +640 426 +640 480 +640 427 +640 480 +426 640 +640 360 +413 640 +640 382 +640 425 +640 480 +640 480 +427 640 +640 383 +640 480 +478 640 +640 480 +427 640 +428 640 +500 333 +640 480 +612 612 +339 500 +640 427 +640 376 +640 360 +640 428 +480 640 +640 426 +640 480 +500 500 +269 480 +629 640 +640 480 +640 480 +612 612 +640 491 +640 480 +640 601 +640 480 +426 640 +640 480 +640 397 +640 426 +424 640 +480 640 +640 526 +640 386 +480 640 +375 500 +640 469 +640 601 +615 310 +640 480 +640 448 +547 640 +480 640 +480 640 +518 640 +640 427 +427 640 +433 640 +640 439 +640 480 +480 640 +612 612 +640 281 +640 480 +640 427 +640 480 +640 427 +640 428 +437 640 +640 428 +640 480 +640 480 +640 424 +500 336 +425 640 +500 308 +640 360 +640 424 +640 425 +446 640 +640 252 +640 483 +640 480 +640 627 +640 428 +500 480 +640 453 +612 612 +640 428 +375 500 +640 480 +640 480 +640 417 +640 378 +640 425 +640 480 +480 640 +640 481 +640 504 +595 640 +640 480 +640 597 +500 375 +640 427 +479 640 +640 512 +640 426 +500 416 +500 375 +640 400 +500 375 +472 640 +500 375 +500 375 +640 480 +480 640 +640 561 +427 640 +640 426 +640 480 +640 427 +480 640 +640 428 +640 480 +640 426 +640 562 +640 428 +500 334 +640 426 +640 427 +640 480 +640 425 +640 491 +500 375 +640 426 +396 640 +480 640 +640 426 +480 640 +640 480 +640 480 +427 640 +640 427 +500 337 +427 640 +457 640 +375 500 +612 612 +480 640 +640 480 +500 375 +612 612 +640 480 +640 427 +640 423 +612 612 +480 640 +378 500 +480 640 +500 238 +640 447 +640 480 +640 427 +640 480 +480 640 +640 480 +640 480 +640 368 +640 424 +640 427 +640 359 +500 375 +640 480 +640 362 +500 398 +640 514 +640 480 +640 480 +500 375 +480 640 +480 640 +478 640 +640 427 +640 427 +480 360 +380 500 +424 640 +640 426 +640 480 +640 320 +640 480 +640 428 +640 426 +335 500 +640 427 +375 500 +640 425 +640 478 +640 427 +426 640 +640 480 +427 640 +543 640 +483 640 +640 480 +640 480 +480 640 +500 375 +640 428 +424 640 +640 480 +427 640 +640 426 +640 434 +427 640 +500 334 +480 640 +640 480 +480 640 +426 640 +640 480 +640 425 +640 427 +640 480 +640 480 +500 272 +640 480 +640 480 +640 480 +428 640 +500 375 +424 640 +375 500 +640 360 +612 612 +640 427 +640 432 +425 640 +640 359 +426 640 +640 427 +640 430 +480 640 +640 427 +640 426 +339 500 +640 479 +640 427 +500 326 +500 333 +464 640 +463 640 +640 426 +640 480 +500 375 +640 427 +640 427 +640 427 +480 640 +640 423 +640 483 +640 479 +640 320 +640 608 +640 427 +640 425 +378 500 +426 640 +640 480 +640 480 +432 640 +640 480 +478 640 +640 415 +640 530 +640 372 +640 424 +640 360 +640 480 +480 640 +640 426 +395 640 +640 359 +640 427 +500 333 +640 480 +480 640 +640 360 +640 480 +500 334 +425 640 +640 480 +640 427 +640 480 +640 425 +500 374 +480 640 +640 429 +640 480 +640 426 +357 640 +496 640 +640 426 +640 425 +640 425 +640 480 +427 640 +640 427 +640 438 +480 640 +640 377 +640 480 +640 428 +640 480 +612 612 +640 527 +640 427 +375 500 +640 424 +640 480 +640 457 +500 334 +640 425 +525 640 +640 428 +333 500 +480 640 +640 419 +480 640 +640 426 +640 480 +640 426 +640 468 +640 480 +480 640 +640 425 +512 640 +640 427 +427 640 +500 375 +515 640 +480 640 +428 640 +331 500 +500 332 +480 640 +640 480 +640 427 +640 427 +640 480 +500 335 +640 480 +640 425 +640 360 +640 480 +625 640 +480 640 +480 640 +478 640 +640 426 +428 640 +640 480 +640 480 +640 396 +500 376 +506 640 +640 514 +500 333 +640 480 +480 640 +612 612 +480 640 +640 480 +425 640 +548 640 +640 427 +640 480 +640 480 +640 427 +640 429 +640 426 +640 427 +640 427 +640 480 +480 640 +640 427 +640 512 +640 480 +640 480 +324 328 +640 361 +640 480 +640 427 +640 428 +640 426 +640 480 +640 359 +640 480 +500 334 +480 640 +640 427 +640 480 +640 480 +640 427 +640 400 +640 561 +640 480 +640 360 +640 425 +640 480 +428 640 +480 640 +460 640 +480 640 +640 428 +334 500 +425 640 +640 428 +640 529 +640 427 +640 606 +305 229 +640 480 +640 361 +333 500 +640 480 +640 490 +640 424 +640 433 +640 425 +427 640 +640 428 +640 424 +558 558 +640 427 +640 480 +640 426 +640 480 +640 563 +375 500 +640 480 +335 500 +640 360 +640 424 +375 500 +573 640 +640 480 +640 480 +640 425 +425 640 +640 360 +640 480 +640 425 +640 480 +480 640 +640 360 +640 480 +640 426 +640 480 +640 427 +640 425 +640 424 +640 480 +426 640 +640 427 +375 500 +500 360 +500 375 +640 427 +500 257 +640 424 +356 500 +640 494 +426 640 +640 480 +412 640 +640 480 +433 640 +640 480 +427 640 +375 500 +500 369 +612 612 +640 480 +427 640 +396 640 +612 612 +640 480 +500 332 +480 640 +640 480 +640 428 +640 426 +640 397 +640 534 +500 375 +640 427 +640 480 +640 480 +480 640 +640 427 +427 640 +640 480 +640 480 +640 480 +640 359 +640 337 +480 640 +308 500 +375 500 +640 578 +640 480 +640 427 +360 640 +480 640 +640 480 +612 612 +640 443 +612 612 +640 480 +640 427 +500 500 +640 391 +478 640 +639 640 +332 500 +332 500 +428 640 +425 640 +640 480 +480 640 +640 480 +500 375 +640 480 +427 640 +640 480 +640 427 +640 428 +640 480 +640 381 +640 427 +612 612 +640 426 +640 427 +640 480 +640 427 +612 612 +248 500 +500 208 +640 544 +640 427 +640 427 +500 358 +640 428 +640 480 +640 427 +640 480 +640 360 +640 425 +500 375 +480 640 +640 427 +640 376 +640 480 +640 424 +640 360 +500 375 +640 427 +640 471 +640 360 +640 475 +640 428 +415 640 +640 334 +640 426 +640 427 +300 400 +640 480 +640 480 +612 612 +640 426 +640 425 +480 640 +640 452 +500 375 +640 476 +600 455 +640 480 +640 640 +640 480 +500 335 +479 640 +640 427 +500 375 +640 426 +428 640 +480 640 +640 480 +640 480 +640 427 +640 424 +640 428 +623 640 +640 425 +640 438 +640 480 +640 427 +640 425 +640 480 +640 640 +640 480 +640 480 +640 329 +591 640 +640 480 +427 640 +612 612 +399 600 +640 364 +640 489 +640 480 +375 500 +640 426 +426 640 +429 640 +427 640 +640 427 +640 427 +640 614 +640 427 +640 312 +640 427 +640 427 +504 640 +427 640 +427 640 +640 589 +426 640 +640 606 +640 427 +427 640 +640 640 +640 480 +640 427 +500 333 +464 640 +640 426 +427 640 +640 480 +640 480 +612 612 +640 480 +500 366 +640 480 +640 425 +640 640 +640 484 +500 375 +640 359 +351 500 +640 480 +640 320 +640 427 +640 473 +640 480 +640 427 +640 411 +500 331 +640 480 +480 640 +640 480 +612 612 +640 427 +640 470 +500 375 +512 640 +640 640 +640 480 +640 480 +640 427 +640 480 +500 375 +640 480 +480 640 +640 425 +640 425 +640 427 +640 464 +500 500 +640 427 +640 480 +640 423 +500 333 +640 311 +640 449 +640 427 +472 500 +640 640 +433 640 +640 383 +640 480 +640 427 +640 425 +427 640 +640 480 +640 480 +640 480 +640 480 +480 640 +640 504 +640 425 +640 478 +640 429 +640 426 +640 480 +426 640 +425 640 +500 375 +640 427 +500 375 +478 640 +500 375 +640 480 +480 640 +640 480 +640 429 +612 612 +428 640 +640 154 +640 427 +375 500 +640 480 +640 480 +640 480 +640 480 +640 427 +640 360 +640 395 +640 480 +640 640 +480 640 +640 480 +640 428 +640 480 +480 640 +640 480 +427 640 +500 478 +640 427 +612 612 +428 640 +640 480 +640 480 +640 456 +640 359 +640 450 +263 640 +640 427 +640 409 +640 480 +640 394 +640 480 +640 524 +640 511 +425 640 +640 427 +640 427 +640 426 +640 425 +427 640 +600 625 +640 427 +640 480 +600 400 +640 428 +640 426 +640 359 +500 335 +426 640 +500 336 +375 500 +640 480 +455 640 +321 500 +500 375 +353 640 +426 640 +450 216 +612 612 +454 640 +480 640 +427 640 +500 375 +500 375 +482 640 +640 480 +640 480 +612 612 +428 640 +640 480 +640 426 +640 480 +428 640 +640 480 +607 640 +640 428 +428 640 +640 480 +640 293 +640 433 +426 640 +640 428 +640 480 +640 411 +640 381 +480 640 +335 500 +450 302 +640 425 +640 480 +480 640 +457 640 +427 640 +480 640 +480 640 +500 375 +640 478 +640 427 +640 480 +640 427 +640 424 +640 360 +640 427 +640 480 +640 419 +640 480 +640 480 +640 494 +640 426 +640 423 +444 640 +640 480 +640 480 +640 480 +640 427 +500 375 +640 459 +640 428 +640 426 +640 481 +480 640 +640 425 +375 500 +515 640 +640 480 +640 480 +427 640 +640 413 +640 480 +640 480 +500 333 +427 640 +640 427 +640 428 +640 465 +480 640 +640 480 +640 428 +640 428 +640 214 +359 640 +640 478 +640 480 +640 320 +336 248 +500 400 +640 427 +640 529 +480 640 +640 427 +480 640 +640 427 +500 334 +481 640 +500 334 +480 640 +640 458 +427 640 +640 424 +640 426 +500 333 +640 523 +640 428 +640 487 +612 612 +500 375 +640 480 +640 517 +333 500 +348 500 +640 448 +640 428 +500 375 +500 375 +500 375 +640 426 +640 480 +640 480 +640 427 +640 414 +640 441 +640 480 +640 530 +640 640 +483 640 +640 480 +640 480 +427 640 +640 424 +640 428 +640 429 +375 500 +640 427 +640 480 +640 480 +640 512 +640 427 +479 640 +640 428 +640 408 +612 612 +640 480 +640 480 +375 500 +640 425 +640 427 +640 480 +480 640 +640 480 +480 640 +427 640 +640 480 +640 432 +640 427 +480 640 +640 480 +480 640 +640 480 +640 480 +640 480 +640 480 +640 480 +640 427 +449 640 +512 640 +427 640 +640 427 +500 375 +640 427 +640 519 +448 640 +640 427 +512 640 +640 391 +640 480 +640 480 +640 428 +424 640 +428 640 +640 427 +640 427 +640 425 +640 428 +447 640 +500 333 +500 334 +480 640 +640 446 +478 640 +640 480 +640 480 +640 425 +640 454 +640 426 +360 640 +500 334 +500 375 +640 427 +640 433 +480 640 +480 640 +640 426 +640 427 +640 359 +640 480 +640 480 +640 640 +500 375 +640 640 +480 640 +640 474 +640 480 +640 480 +640 427 +640 428 +500 375 +480 640 +640 480 +640 398 +427 640 +480 640 +500 375 +514 640 +500 375 +640 480 +640 427 +640 480 +500 375 +640 480 +640 480 +640 427 +480 640 +640 480 +640 425 +640 427 +640 480 +640 480 +640 424 +640 427 +640 438 +640 480 +640 427 +640 428 +424 640 +640 531 +480 640 +640 427 +500 333 +640 425 +640 425 +428 640 +480 640 +640 429 +640 480 +640 480 +375 500 +428 640 +500 375 +640 424 +640 480 +640 428 +425 640 +480 640 +640 425 +426 640 +640 480 +635 640 +500 332 +640 480 +640 480 +640 566 +640 480 +640 419 +426 640 +500 375 +425 640 +640 428 +334 500 +640 546 +519 640 +640 480 +500 375 +640 427 +612 612 +640 479 +614 640 +480 640 +480 640 +640 427 +640 480 +500 375 +640 480 +640 360 +640 480 +213 320 +500 406 +500 445 +480 640 +640 468 +640 427 +427 640 +640 427 +640 480 +500 486 +480 360 +640 428 +640 480 +480 640 +403 640 +640 480 +640 316 +425 640 +480 640 +640 429 +640 426 +640 427 +640 426 +500 375 +427 640 +612 612 +640 480 +640 480 +640 427 +640 418 +428 640 +500 324 +523 640 +640 426 +640 427 +640 427 +480 640 +640 427 +640 426 +500 500 +640 480 +640 427 +640 437 +480 640 +359 640 +640 428 +640 480 +640 424 +500 335 +500 375 +640 424 +427 640 +640 480 +405 640 +640 640 +427 640 +640 480 +333 500 +640 444 +640 426 +640 480 +500 375 +640 344 +640 394 +500 393 +375 500 +500 281 +477 558 +640 480 +640 428 +640 360 +426 640 +640 428 +640 480 +427 640 +640 480 +640 508 +640 427 +640 480 +640 480 +640 480 +640 427 +612 612 +640 428 +332 500 +640 427 +640 480 +428 640 +612 612 +640 425 +640 482 +640 419 +500 375 +640 486 +640 428 +640 428 +640 480 +500 333 +640 478 +360 640 +640 480 +640 428 +500 396 +640 424 +375 500 +640 480 +640 480 +612 612 +640 480 +640 428 +640 427 +640 447 +640 480 +640 640 +500 375 +640 480 +612 612 +640 427 +359 640 +640 424 +500 375 +640 480 +640 427 +640 479 +640 480 +640 428 +368 500 +640 640 +640 451 +544 640 +640 480 +640 439 +640 426 +640 425 +583 640 +640 429 +640 427 +640 480 +640 512 +640 480 +640 480 +640 427 +457 640 +640 429 +500 334 +640 480 +428 640 +428 640 +640 480 +480 640 +500 375 +427 640 +640 427 +406 640 +478 640 +640 480 +640 383 +612 612 +500 333 +640 427 +500 371 +612 612 +640 427 +375 500 +612 612 +468 640 +640 480 +426 640 +640 478 +640 480 +640 478 +640 480 +640 480 +640 411 +500 375 +640 427 +480 640 +640 449 +640 480 +640 480 +488 640 +640 480 +640 427 +480 640 +640 480 +480 640 +424 640 +577 640 +640 382 +480 640 +640 360 +640 480 +333 500 +333 500 +640 370 +640 480 +640 416 +640 480 +350 263 +640 480 +640 480 +640 427 +500 375 +640 516 +640 424 +426 640 +640 363 +480 640 +640 427 +640 426 +640 480 +640 425 +640 427 +640 546 +640 427 +640 427 +640 426 +375 500 +478 640 +640 480 +640 480 +480 640 +640 480 +640 480 +640 480 +640 427 +640 480 +640 480 +640 427 +500 356 +640 428 +640 428 +640 480 +640 427 +287 640 +640 480 +640 427 +640 427 +640 427 +640 427 +640 480 +375 500 +480 640 +480 640 +500 333 +500 240 +640 427 +640 428 +640 480 +500 350 +640 427 +640 480 +427 640 +361 500 +640 480 +426 640 +640 480 +375 500 +640 480 +640 480 +320 240 +640 480 +640 393 +480 640 +640 447 +500 454 +640 480 +640 428 +487 640 +640 480 +375 500 +640 480 +640 429 +640 480 +480 640 +176 144 +480 640 +640 480 +640 496 +474 640 +427 640 +612 612 +427 640 +640 480 +640 396 +640 480 +393 600 +612 612 +640 426 +640 480 +640 428 +640 480 +640 293 +640 287 +640 426 +500 375 +640 427 +480 640 +640 428 +640 427 +480 640 +640 480 +640 427 +333 500 +640 427 +640 480 +640 480 +500 336 +640 480 +640 427 +428 640 +480 640 +640 478 +640 512 +640 480 +640 480 +427 640 +640 480 +640 464 +640 426 +333 500 +500 378 +640 406 +640 427 +640 426 +426 640 +457 640 +640 478 +640 480 +640 480 +428 640 +500 375 +478 640 +500 333 +640 640 +640 426 +640 427 +640 457 +640 480 +640 398 +500 345 +640 480 +640 617 +640 361 +640 427 +640 426 +480 640 +640 640 +640 400 +640 480 +640 480 +640 480 +640 416 +480 640 +316 480 +640 429 +640 480 +640 425 +640 403 +640 425 +640 457 +640 480 +427 640 +333 500 +640 424 +640 427 +640 427 +460 640 +585 640 +640 480 +427 640 +640 479 +640 480 +500 375 +425 640 +640 480 +640 480 +640 480 +500 358 +640 480 +640 427 +640 480 +480 640 +500 375 +640 640 +427 640 +500 375 +640 428 +640 480 +640 344 +500 375 +640 480 +640 425 +640 426 +640 359 +640 469 +640 426 +480 640 +640 426 +500 375 +640 426 +480 640 +427 640 +500 375 +480 640 +640 480 +426 640 +426 640 +480 640 +426 640 +640 640 +508 640 +640 427 +427 640 +428 640 +640 480 +640 640 +480 640 +500 375 +640 480 +640 427 +640 400 +640 427 +640 480 +334 500 +409 640 +500 484 +640 424 +640 360 +612 612 +640 427 +500 327 +640 640 +640 360 +640 424 +640 428 +640 622 +640 480 +500 333 +427 640 +320 240 +640 480 +640 481 +427 640 +640 480 +640 424 +640 480 +640 480 +375 500 +640 425 +640 598 +640 425 +640 427 +612 612 +640 480 +640 215 +375 500 +537 640 +612 612 +640 480 +640 428 +640 427 +640 480 +550 640 +333 500 +640 371 +640 427 +612 612 +640 480 +480 640 +640 426 +640 427 +640 480 +415 640 +640 480 +640 480 +640 480 +640 426 +488 640 +640 428 +640 426 +640 427 +640 426 +480 640 +500 333 +512 640 +480 640 +496 640 +640 478 +618 640 +500 375 +640 480 +640 480 +589 640 +640 480 +640 426 +640 427 +640 512 +640 428 +640 480 +427 640 +640 421 +640 426 +640 611 +640 456 +640 429 +480 640 +640 480 +640 480 +375 500 +427 640 +640 480 +480 640 +640 427 +640 427 +500 375 +500 375 +500 375 +500 335 +640 309 +640 419 +640 459 +640 480 +640 518 +640 480 +640 480 +640 426 +640 480 +480 640 +427 640 +640 428 +640 480 +640 427 +640 489 +612 612 +413 640 +640 427 +640 602 +640 428 +480 640 +640 480 +500 375 +640 480 +640 481 +640 480 +640 427 +640 480 +640 480 +640 480 +640 361 +640 427 +480 640 +640 480 +640 428 +424 640 +588 640 +480 640 +500 333 +439 640 +640 427 +640 505 +640 480 +511 640 +427 640 +480 640 +480 640 +640 427 +612 612 +640 427 +432 640 +500 333 +640 480 +640 427 +640 480 +640 320 +640 427 +640 427 +640 426 +640 480 +500 375 +640 427 +480 640 +640 480 +640 425 +383 640 +612 612 +640 480 +427 640 +640 426 +375 500 +480 640 +612 612 +486 640 +640 462 +640 428 +640 426 +640 427 +427 640 +640 480 +612 612 +512 640 +640 428 +640 480 +640 478 +480 640 +640 407 +640 480 +640 480 +480 640 +428 640 +640 426 +640 428 +640 427 +640 480 +640 427 +640 504 +480 640 +640 427 +500 333 +640 427 +640 425 +640 481 +426 640 +640 427 +640 427 +640 425 +480 640 +480 640 +424 500 +640 427 +500 337 +640 480 +500 333 +427 640 +640 418 +640 354 +640 425 +640 427 +640 503 +640 427 +640 424 +500 333 +640 483 +640 426 +640 426 +640 480 +640 480 +640 426 +500 375 +640 427 +640 480 +480 640 +640 428 +427 640 +640 480 +426 640 +640 480 +640 480 +640 480 +500 375 +640 480 +640 480 +640 428 +640 428 +640 480 +640 480 +640 316 +640 513 +640 424 +480 640 +640 480 +640 428 +638 640 +640 425 +640 480 +640 480 +640 480 +640 427 +640 480 +640 478 +640 480 +640 427 +640 604 +640 361 +640 427 +480 640 +500 375 +640 480 +480 640 +640 427 +480 640 +640 429 +640 427 +640 420 +640 428 +640 427 +640 425 +640 426 +439 640 +640 480 +640 480 +640 427 +640 428 +640 427 +640 346 +640 427 +640 438 +640 427 +640 428 +500 375 +640 480 +640 431 +640 426 +640 480 +640 480 +333 500 +480 640 +640 480 +640 512 +640 340 +354 375 +640 424 +640 480 +640 480 +640 480 +640 425 +640 480 +427 640 +480 640 +500 375 +425 640 +640 480 +374 500 +500 476 +640 640 +640 427 +425 640 +400 302 +640 480 +463 500 +426 640 +640 480 +426 640 +640 427 +640 360 +640 480 +426 640 +640 480 +640 480 +640 427 +500 392 +640 378 +640 480 +640 343 +640 427 +640 426 +640 427 +640 426 +400 500 +500 333 +640 399 +640 512 +640 366 +612 612 +640 426 +640 480 +640 425 +598 640 +640 427 +480 640 +500 375 +508 640 +424 640 +640 427 +640 480 +480 640 +379 500 +640 318 +640 428 +427 640 +640 361 +640 427 +612 612 +640 427 +427 640 +480 640 +427 640 +640 427 +640 493 +640 425 +640 426 +612 612 +640 480 +640 427 +640 531 +500 333 +480 640 +640 425 +500 375 +640 399 +640 489 +640 426 +500 375 +640 427 +640 426 +640 480 +512 640 +427 640 +640 480 +406 640 +480 640 +612 612 +500 375 +640 480 +640 428 +480 640 +640 383 +640 480 +640 454 +640 480 +640 427 +425 640 +375 500 +640 480 +640 426 +640 480 +640 425 +640 427 +424 640 +469 640 +640 480 +640 480 +640 426 +375 500 +640 425 +640 457 +500 334 +640 426 +480 640 +640 480 +640 427 +640 480 +640 629 +480 640 +478 640 +480 640 +640 480 +640 426 +424 640 +640 427 +640 480 +640 480 +640 201 +640 480 +640 420 +640 480 +500 375 +640 478 +640 433 +482 640 +500 375 +640 480 +500 375 +375 500 +640 500 +640 481 +640 432 +640 425 +640 480 +640 480 +640 425 +640 400 +640 480 +640 414 +640 443 +640 425 +500 495 +640 480 +500 375 +640 480 +375 500 +640 427 +415 500 +640 427 +640 427 +500 333 +640 425 +612 612 +640 426 +426 640 +640 424 +500 290 +640 428 +640 357 +480 640 +480 640 +478 640 +640 427 +640 480 +500 333 +640 427 +640 426 +640 428 +640 569 +640 480 +457 640 +612 612 +640 428 +359 640 +640 428 +500 375 +453 640 +640 480 +640 427 +480 640 +640 427 +500 334 +333 500 +640 517 +640 425 +461 640 +490 640 +640 480 +500 375 +640 480 +480 640 +640 480 +480 640 +640 486 +640 480 +500 334 +640 480 +612 612 +640 427 +640 428 +640 310 +640 427 +612 612 +425 640 +427 640 +300 500 +640 438 +332 500 +640 427 +500 316 +427 640 +480 640 +640 480 +500 352 +640 428 +640 412 +640 480 +427 640 +413 640 +500 375 +640 226 +640 496 +640 612 +640 433 +640 464 +640 426 +640 480 +375 500 +502 640 +640 480 +500 375 +640 425 +640 480 +480 640 +640 480 +640 427 +640 480 +480 640 +480 640 +427 640 +640 393 +500 332 +640 360 +332 500 +640 427 +500 332 +640 428 +640 426 +500 375 +478 640 +640 427 +640 640 +640 427 +485 640 +478 640 +612 612 +640 425 +640 457 +545 640 +480 640 +500 375 +640 480 +512 640 +640 427 +333 500 +640 427 +640 480 +640 413 +640 480 +512 640 +640 433 +640 594 +426 640 +640 424 +480 640 +640 544 +640 427 +640 600 +640 480 +480 640 +640 349 +480 640 +334 500 +500 365 +333 500 +640 389 +640 480 +640 480 +640 421 +640 480 +375 500 +480 640 +478 640 +640 480 +640 480 +500 375 +640 425 +640 430 +640 360 +479 640 +480 640 +640 426 +640 480 +425 640 +640 480 +640 480 +640 480 +640 480 +500 335 +640 480 +480 640 +640 363 +486 640 +480 640 +640 427 +500 281 +640 416 +640 427 +480 640 +600 399 +500 350 +454 640 +640 427 +640 480 +640 480 +427 640 +640 480 +640 427 +640 461 +640 513 +640 427 +333 500 +640 427 +640 512 +640 480 +640 480 +612 612 +640 480 +500 333 +362 500 +640 427 +500 375 +500 334 +640 427 +640 425 +480 640 +640 425 +427 640 +640 427 +640 480 +448 640 +640 426 +640 427 +640 427 +480 640 +640 401 +640 427 +640 480 +640 480 +640 425 +640 435 +640 425 +640 427 +375 500 +640 480 +612 612 +640 427 +640 427 +640 480 +427 640 +640 480 +640 480 +427 640 +640 480 +640 427 +640 341 +581 640 +640 480 +480 640 +640 360 +640 409 +332 500 +640 429 +640 427 +433 640 +375 500 +640 480 +640 480 +640 512 +640 480 +640 427 +640 480 +640 427 +640 480 +640 426 +480 640 +640 480 +424 640 +640 428 +481 640 +640 426 +480 640 +640 480 +640 427 +500 375 +640 426 +640 480 +480 640 +640 480 +429 640 +640 480 +440 640 +480 640 +400 300 +640 426 +614 640 +500 455 +640 480 +640 427 +640 427 +640 425 +640 480 +640 480 +640 480 +480 640 +500 426 +500 375 +640 427 +500 335 +500 375 +500 375 +640 536 +640 640 +480 640 +640 426 +640 426 +429 640 +640 426 +640 427 +640 427 +480 640 +640 480 +640 499 +640 427 +483 640 +640 427 +640 477 +640 480 +640 512 +640 234 +640 427 +640 480 +640 480 +640 427 +640 424 +640 424 +480 640 +473 303 +500 375 +332 500 +640 427 +640 415 +478 640 +640 480 +640 425 +640 427 +640 427 +640 480 +500 333 +640 478 +640 422 +640 430 +640 480 +640 480 +500 375 +640 427 +640 480 +640 480 +640 480 +640 480 +640 480 +480 640 +500 375 +360 270 +393 640 +640 428 +478 640 +640 480 +557 640 +640 427 +333 500 +427 640 +317 500 +640 425 +480 640 +640 478 +640 427 +640 427 +640 374 +480 640 +640 480 +640 427 +375 500 +480 640 +427 640 +640 384 +640 480 +640 480 +394 640 +640 480 +640 480 +640 437 +640 427 +430 640 +640 160 +480 640 +427 640 +640 478 +640 354 +640 425 +500 333 +640 427 +427 640 +640 480 +500 375 +500 375 +640 428 +640 427 +640 478 +640 427 +480 640 +640 425 +640 480 +640 424 +640 457 +640 480 +500 333 +500 378 +375 500 +640 448 +500 333 +640 480 +640 423 +640 428 +640 494 +640 480 +480 640 +640 391 +640 479 +480 640 +640 510 +640 427 +425 640 +640 480 +427 640 +480 640 +480 640 +640 381 +640 480 +500 333 +518 640 +478 640 +640 640 +640 426 +640 414 +640 424 +372 500 +480 640 +480 640 +480 640 +640 480 +640 457 +427 640 +640 428 +640 360 +500 500 +612 499 +640 427 +480 640 +640 427 +426 640 +640 425 +640 411 +640 480 +640 480 +640 480 +640 428 +467 640 +640 480 +640 510 +640 427 +640 427 +640 427 +640 480 +640 428 +640 480 +640 426 +500 375 +333 500 +375 500 +640 480 +500 458 +640 640 +480 640 +640 427 +640 359 +640 480 +591 640 +464 640 +640 427 +384 500 +480 640 +480 640 +640 427 +640 427 +640 428 +640 428 +500 375 +378 500 +500 333 +640 480 +640 480 +640 360 +500 331 +640 480 +500 375 +501 640 +640 427 +426 640 +640 427 +640 480 +427 640 +640 404 +640 403 +427 640 +640 480 +640 427 +640 428 +640 480 +640 427 +427 640 +518 640 +463 640 +417 640 +640 640 +394 640 +640 310 +500 375 +426 640 +640 480 +426 640 +640 427 +640 178 +480 640 +640 480 +428 640 +640 480 +640 480 +640 428 +426 640 +640 480 +427 640 +612 612 +640 480 +427 640 +640 480 +640 480 +640 480 +480 640 +640 425 +427 640 +640 360 +640 427 +640 427 +640 427 +640 426 +640 427 +640 425 +640 427 +500 375 +480 640 +486 500 +600 600 +640 480 +640 425 +640 480 +640 436 +640 425 +480 640 +640 480 +640 360 +640 424 +640 426 +640 427 +500 375 +612 612 +640 425 +425 640 +496 640 +640 474 +500 375 +640 480 +640 396 +640 459 +480 640 +640 425 +427 640 +640 480 +480 640 +480 640 +640 427 +640 360 +640 425 +427 640 +500 334 +426 640 +429 640 +533 640 +640 428 +561 640 +334 500 +640 428 +480 320 +640 432 +640 424 +500 375 +640 427 +640 480 +426 640 +424 640 +640 446 +640 480 +640 426 +640 427 +500 333 +640 480 +640 427 +500 375 +480 640 +640 427 +375 500 +480 640 +640 426 +640 428 +640 427 +612 612 +640 428 +427 640 +640 480 +640 480 +448 640 +426 640 +640 425 +640 427 +640 464 +640 640 +425 640 +640 427 +384 500 +480 640 +480 640 +640 427 +500 358 +640 425 +640 480 +425 640 +417 640 +612 612 +640 480 +640 480 +640 480 +480 640 +640 359 +640 485 +640 640 +640 480 +300 225 +640 640 +640 480 +500 332 +640 423 +480 640 +640 480 +640 480 +640 424 +640 427 +640 425 +640 480 +640 427 +640 427 +640 457 +640 480 +427 640 +640 480 +640 419 +427 640 +640 427 +640 480 +640 480 +640 427 +500 360 +480 640 +640 480 +640 480 +640 480 +480 640 +640 427 +640 427 +640 428 +640 427 +640 427 +640 427 +640 330 +640 424 +640 386 +640 427 +640 480 +640 480 +640 480 +480 640 +375 500 +640 398 +640 426 +640 436 +640 426 +640 427 +640 480 +500 375 +640 426 +427 640 +640 426 +640 426 +640 359 +640 480 +640 427 +640 480 +640 428 +640 303 +519 631 +640 480 +640 480 +640 513 +640 360 +612 612 +480 640 +500 371 +640 480 +640 426 +640 427 +640 360 +640 512 +640 422 +640 427 +640 480 +640 480 +640 533 +640 426 +500 347 +397 640 +640 425 +640 480 +640 427 +640 640 +640 480 +640 534 +640 428 +640 480 +500 354 +640 427 +640 480 +640 425 +640 427 +480 640 +333 500 +639 640 +640 413 +640 508 +500 333 +640 427 +640 427 +480 640 +640 480 +640 429 +500 375 +480 640 +623 640 +452 640 +640 431 +480 640 +640 424 +640 427 +603 640 +500 375 +640 428 +640 376 +640 427 +640 427 +640 480 +640 426 +640 427 +480 640 +640 427 +640 426 +640 425 +640 427 +640 426 +640 451 +640 427 +480 640 +428 640 +636 477 +427 640 +640 389 +450 640 +640 480 +640 480 +426 640 +640 480 +640 427 +640 424 +480 640 +640 427 +489 640 +640 525 +640 425 +500 376 +640 427 +640 480 +640 446 +640 480 +640 427 +640 480 +500 375 +640 429 +480 640 +622 640 +640 428 +478 640 +640 426 +640 480 +640 360 +375 500 +500 375 +480 640 +640 480 +640 466 +500 375 +640 329 +541 640 +426 640 +640 640 +640 397 +640 425 +500 336 +640 359 +640 430 +640 427 +640 427 +480 640 +640 360 +640 480 +640 427 +591 640 +480 640 +640 428 +640 480 +428 640 +640 480 +375 500 +640 480 +640 480 +484 500 +612 612 +427 640 +640 383 +500 333 +640 427 +407 640 +640 433 +640 480 +500 375 +500 429 +425 640 +640 425 +612 612 +640 480 +500 375 +640 480 +640 480 +426 640 +500 348 +640 480 +488 500 +640 427 +500 375 +478 640 +640 480 +500 312 +333 500 +640 429 +640 480 +640 429 +640 427 +640 518 +640 474 +640 480 +640 480 +480 360 +640 427 +640 513 +622 640 +640 480 +398 640 +640 427 +640 426 +332 500 +469 640 +640 480 +640 429 +640 427 +640 375 +640 424 +426 640 +640 427 +640 480 +450 338 +480 640 +640 427 +640 640 +640 427 +640 427 +486 365 +427 640 +640 427 +640 480 +500 375 +640 428 +640 427 +640 425 +612 612 +640 423 +640 465 +640 511 +640 427 +640 480 +375 500 +640 424 +640 480 +640 425 +640 359 +500 335 +480 640 +640 480 +640 480 +640 427 +478 640 +640 480 +500 333 +640 640 +640 423 +640 427 +500 375 +640 426 +640 480 +411 640 +640 428 +640 427 +612 612 +640 480 +640 426 +424 640 +640 477 +640 423 +640 480 +640 416 +640 429 +640 481 +480 640 +640 449 +640 480 +640 427 +612 612 +500 333 +640 480 +640 472 +640 640 +640 480 +480 640 +640 426 +640 428 +480 640 +640 426 +480 640 +427 640 +640 480 +640 480 +375 500 +640 480 +360 640 +640 480 +640 486 +640 480 +640 480 +640 480 +425 640 +520 640 +640 426 +640 480 +640 480 +500 281 +500 375 +640 427 +427 640 +535 640 +612 612 +480 640 +360 640 +640 480 +640 480 +395 640 +579 640 +377 500 +640 480 +640 480 +640 427 +640 480 +500 375 +482 640 +427 640 +640 480 +480 640 +480 640 +500 375 +640 480 +400 266 +500 375 +640 480 +640 639 +640 480 +375 500 +480 640 +640 480 +426 640 +480 640 +427 640 +640 427 +426 640 +640 480 +640 289 +640 480 +640 427 +500 434 +640 637 +640 428 +640 480 +640 478 +640 383 +640 427 +440 500 +359 640 +640 480 +640 427 +425 640 +376 500 +427 640 +640 640 +640 356 +640 480 +236 236 +375 500 +640 427 +480 640 +640 480 +427 640 +415 500 +640 427 +640 427 +640 427 +640 466 +500 375 +640 480 +375 500 +480 640 +640 480 +480 640 +640 339 +640 251 +640 426 +427 640 +500 333 +640 459 +640 427 +640 419 +375 500 +426 640 +640 480 +640 480 +640 480 +421 640 +640 427 +333 500 +640 425 +640 425 +640 400 +640 426 +640 480 +500 332 +480 640 +640 480 +640 480 +640 523 +640 480 +640 480 +640 444 +540 640 +472 640 +500 333 +640 531 +640 425 +640 480 +640 478 +500 375 +640 480 +640 440 +640 480 +640 415 +640 455 +640 428 +359 640 +429 640 +640 480 +480 640 +640 480 +640 427 +427 640 +640 480 +512 640 +428 640 +480 640 +640 555 +640 429 +640 427 +359 640 +640 427 +640 427 +640 442 +500 375 +640 434 +428 640 +500 333 +640 426 +640 427 +640 427 +640 480 +640 424 +640 359 +640 590 +480 640 +640 360 +427 640 +512 640 +640 480 +511 640 +640 428 +640 447 +640 480 +640 428 +640 480 +640 480 +422 640 +640 480 +480 640 +500 375 +375 500 +640 425 +640 439 +640 480 +500 375 +375 500 +640 426 +500 338 +640 427 +640 480 +500 400 +640 360 +640 426 +640 640 +612 612 +640 360 +640 360 +500 375 +612 612 +640 427 +640 334 +640 428 +640 427 +640 425 +427 640 +428 640 +585 640 +500 344 +640 360 +426 640 +462 640 +640 427 +480 640 +513 640 +500 375 +500 377 +624 416 +427 640 +508 640 +640 480 +640 639 +640 428 +640 428 +640 428 +640 437 +375 500 +640 427 +640 427 +640 427 +640 360 +640 480 +640 428 +480 640 +640 425 +640 427 +480 640 +480 640 +640 427 +640 428 +425 640 +640 429 +500 375 +640 426 +640 427 +640 491 +640 480 +640 480 +427 640 +640 429 +640 426 +640 426 +640 480 +640 426 +640 392 +640 425 +458 640 +640 424 +640 480 +640 480 +640 480 +640 480 +640 480 +446 640 +640 480 +640 480 +500 333 +640 427 +640 428 +427 640 +477 640 +640 426 +640 496 +640 426 +640 428 +507 640 +640 427 +640 480 +480 640 +480 640 +640 427 +640 480 +334 500 +640 455 +640 431 +640 428 +512 326 +602 640 +640 485 +640 640 +612 612 +640 419 +480 640 +500 333 +333 500 +640 433 +640 480 +640 426 +640 427 +480 640 +427 640 +640 480 +640 427 +500 375 +640 480 +640 480 +640 480 +480 640 +640 480 +640 480 +640 480 +640 480 +640 429 +640 427 +640 427 +640 466 +500 332 +426 640 +480 640 +640 410 +640 480 +640 480 +640 359 +640 480 +424 640 +640 396 +640 427 +640 480 +640 427 +640 480 +480 640 +427 640 +480 640 +640 480 +440 640 +333 500 +640 427 +640 480 +640 427 +426 640 +640 427 +500 500 +640 427 +549 640 +500 300 +480 640 +640 427 +640 424 +640 427 +640 425 +480 640 +640 326 +428 640 +640 434 +480 640 +360 640 +480 640 +500 375 +640 427 +478 640 +640 427 +640 427 +640 640 +640 480 +640 456 +427 640 +640 480 +478 640 +375 500 +435 640 +640 425 +640 471 +640 404 +640 480 +480 640 +427 640 +640 480 +640 427 +640 481 +640 480 +640 480 +640 426 +640 480 +333 500 +640 480 +640 429 +500 333 +640 427 +606 640 +500 333 +640 427 +640 480 +640 428 +375 500 +640 427 +640 427 +640 425 +640 480 +640 480 +640 427 +640 181 +480 640 +640 480 +640 438 +640 480 +640 480 +640 480 +480 640 +640 425 +480 640 +500 333 +640 480 +375 500 +480 640 +359 640 +640 480 +480 640 +640 383 +500 304 +640 427 +640 480 +640 457 +640 428 +640 425 +480 640 +500 333 +480 640 +640 427 +383 640 +640 426 +480 640 +612 612 +640 480 +640 480 +426 640 +640 366 +375 500 +640 360 +640 427 +428 640 +640 427 +640 427 +640 401 +640 425 +640 427 +640 564 +640 481 +640 427 +500 333 +640 480 +383 640 +478 640 +640 640 +500 500 +640 432 +500 375 +427 640 +480 640 +640 424 +640 480 +640 426 +480 640 +640 480 +640 567 +640 429 +640 427 +500 334 +480 640 +640 480 +500 333 +640 480 +427 640 +640 424 +640 480 +640 480 +640 359 +640 421 +428 640 +640 427 +640 426 +640 427 +640 426 +579 640 +640 366 +640 426 +480 640 +640 480 +500 335 +480 640 +480 640 +640 480 +411 640 +427 640 +640 480 +375 500 +527 640 +500 374 +341 500 +500 375 +640 480 +427 640 +640 427 +421 640 +480 640 +640 480 +640 427 +492 500 +640 427 +640 425 +640 427 +640 480 +640 424 +640 424 +640 427 +640 481 +500 332 +640 441 +640 480 +403 640 +500 375 +480 640 +640 427 +432 640 +426 640 +640 428 +640 427 +500 375 +480 640 +640 426 +640 427 +455 640 +487 640 +640 427 +640 427 +428 640 +640 480 +500 500 +640 401 +640 480 +640 480 +640 427 +375 500 +640 464 +640 424 +612 612 +640 426 +640 426 +640 480 +640 426 +640 480 +427 640 +640 425 +612 612 +640 454 +640 427 +640 427 +500 332 +320 240 +453 640 +640 535 +640 539 +427 640 +480 640 +347 640 +480 640 +427 640 +427 640 +409 640 +480 640 +500 346 +427 640 +640 427 +426 640 +640 480 +640 480 +425 640 +500 332 +480 640 +500 375 +426 640 +426 640 +640 480 +640 480 +480 640 +640 427 +428 640 +375 500 +640 426 +500 209 +427 640 +640 427 +480 640 +640 425 +480 640 +436 640 +640 425 +640 438 +640 426 +640 495 +640 424 +500 333 +640 426 +480 640 +428 640 +640 427 +640 499 +640 480 +640 426 +640 480 +500 375 +640 480 +426 640 +640 555 +640 480 +640 483 +640 425 +375 500 +640 480 +500 333 +640 480 +640 426 +630 640 +425 640 +640 421 +480 640 +500 375 +480 640 +500 375 +640 427 +640 427 +640 427 +640 474 +333 500 +640 457 +640 480 +640 417 +442 442 +640 408 +640 427 +640 425 +640 360 +427 640 +476 640 +638 640 +640 425 +500 281 +500 375 +426 640 +640 480 +640 426 +338 500 +640 480 +640 427 +640 428 +640 480 +640 640 +640 427 +640 493 +640 427 +543 640 +640 360 +640 480 +640 480 +612 612 +425 640 +640 434 +640 480 +500 400 +500 325 +500 400 +640 480 +640 511 +640 457 +640 427 +640 480 +429 640 +640 425 +640 454 +640 428 +634 640 +612 612 +640 480 +640 479 +640 480 +640 480 +480 360 +640 427 +640 480 +640 425 +500 335 +513 640 +612 612 +640 527 +640 427 +640 343 +640 426 +612 612 +640 427 +640 480 +640 427 +640 360 +467 640 +640 359 +500 334 +640 480 +640 426 +640 480 +640 428 +640 343 +640 640 +640 424 +640 408 +476 640 +438 640 +479 640 +426 640 +480 640 +409 255 +640 428 +640 480 +640 427 +640 480 +500 333 +640 428 +480 640 +480 640 +640 426 +426 640 +640 426 +640 427 +373 495 +640 416 +480 640 +480 640 +640 425 +500 326 +640 426 +640 480 +500 400 +500 335 +640 480 +640 475 +640 480 +612 612 +640 480 +427 640 +640 427 +640 427 +640 480 +640 427 +428 640 +640 427 +640 640 +640 427 +640 398 +640 505 +640 427 +584 640 +640 480 +640 401 +500 281 +612 612 +500 375 +640 426 +500 375 +500 341 +640 424 +640 390 +500 307 +640 401 +640 424 +500 375 +640 427 +549 640 +640 427 +640 427 +500 375 +640 361 +375 500 +640 427 +424 640 +640 480 +640 213 +438 640 +640 442 +480 640 +640 428 +394 640 +640 424 +640 313 +640 480 +640 480 +640 480 +612 612 +480 640 +486 640 +640 413 +640 427 +625 640 +640 413 +640 512 +640 429 +640 426 +640 429 +640 480 +640 427 +500 333 +640 480 +640 436 +640 414 +500 375 +428 640 +640 425 +640 480 +480 640 +640 424 +480 640 +500 500 +640 480 +640 480 +640 427 +500 403 +640 480 +500 375 +640 480 +640 427 +640 480 +640 480 +640 360 +640 427 +375 500 +640 480 +640 427 +427 640 +640 480 +612 612 +427 640 +426 640 +640 425 +640 480 +640 427 +640 427 +640 426 +500 375 +640 480 +640 480 +640 439 +500 334 +640 480 +640 480 +500 333 +500 375 +500 375 +500 333 +640 427 +640 480 +402 500 +640 444 +640 426 +640 427 +458 640 +640 480 +640 427 +640 480 +640 478 +640 640 +640 480 +640 480 +640 480 +640 427 +640 482 +425 640 +640 427 +640 480 +640 480 +640 427 +640 480 +401 603 +640 640 +640 346 +640 384 +640 427 +640 480 +640 480 +640 510 +640 480 +419 640 +640 428 +640 427 +640 480 +640 480 +425 640 +640 478 +480 640 +640 427 +640 349 +640 640 +640 480 +640 427 +640 588 +640 434 +640 366 +640 480 +640 458 +480 640 +612 612 +480 640 +640 480 +640 427 +640 429 +640 480 +400 224 +640 428 +240 160 +500 385 +640 480 +640 414 +640 501 +640 480 +448 640 +375 500 +640 425 +640 426 +640 470 +640 480 +640 424 +640 480 +640 480 +640 428 +640 480 +640 358 +375 500 +640 480 +483 640 +480 640 +640 427 +640 483 +625 480 +640 480 +640 480 +640 425 +640 480 +640 427 +600 450 +500 336 +640 480 +640 427 +640 479 +640 480 +640 425 +480 640 +640 426 +640 427 +640 480 +640 433 +640 458 +640 436 +500 375 +500 332 +640 480 +427 640 +640 556 +640 428 +640 428 +640 475 +480 640 +375 500 +375 500 +640 428 +640 480 +640 427 +427 640 +640 474 +480 640 +480 640 +640 480 +640 457 +612 612 +500 333 +640 480 +640 480 +640 359 +480 640 +640 428 +375 500 +640 480 +640 440 +427 640 +500 313 +500 333 +640 427 +640 460 +640 426 +640 427 +427 640 +640 427 +640 480 +500 375 +426 640 +640 427 +500 425 +640 480 +480 640 +640 424 +496 640 +640 515 +640 360 +500 374 +640 640 +640 480 +458 640 +500 375 +640 433 +333 500 +640 360 +640 427 +640 427 +425 640 +640 427 +640 480 +640 429 +480 640 +500 422 +425 640 +480 640 +640 421 +640 480 +640 480 +500 375 +500 333 +640 518 +640 479 +640 471 +640 427 +640 480 +427 640 +640 427 +640 382 +500 375 +500 305 +640 350 +640 425 +427 640 +640 479 +640 426 +486 640 +640 512 +640 427 +480 640 +640 480 +640 480 +500 375 +640 480 +640 392 +478 640 +640 309 +612 612 +640 428 +247 500 +640 480 +640 480 +640 521 +640 427 +640 480 +640 480 +518 640 +640 480 +640 426 +500 375 +640 480 +640 480 +427 640 +640 480 +356 640 +600 400 +640 418 +640 480 +516 640 +640 256 +640 396 +640 484 +640 436 +382 500 +612 612 +640 426 +640 400 +480 640 +640 428 +640 422 +425 640 +612 612 +640 392 +640 426 +426 640 +640 428 +640 480 +480 640 +370 251 +640 427 +640 479 +427 640 +640 383 +640 425 +640 427 +640 480 +640 427 +640 425 +640 480 +480 640 +640 426 +640 386 +640 383 +612 612 +640 428 +640 425 +640 480 +428 640 +640 425 +640 480 +640 480 +480 640 +640 480 +640 425 +640 426 +534 640 +640 480 +640 426 +640 428 +500 375 +640 360 +500 333 +640 427 +480 640 +640 360 +500 400 +640 424 +500 330 +640 588 +640 480 +480 640 +640 347 +385 289 +640 480 +640 423 +640 480 +640 480 +640 450 +640 480 +480 640 +425 640 +640 480 +500 332 +640 480 +612 612 +640 457 +640 480 +468 304 +640 427 +425 640 +640 427 +640 480 +480 640 +640 425 +640 480 +640 427 +640 478 +500 500 +640 480 +500 375 +375 500 +640 480 +480 640 +640 425 +640 424 +640 480 +640 415 +640 480 +640 329 +640 425 +437 640 +640 427 +640 427 +480 640 +640 426 +500 375 +640 480 +333 500 +640 426 +640 446 +640 480 +480 640 +500 333 +482 625 +640 480 +480 640 +484 640 +466 640 +640 427 +640 480 +640 427 +640 424 +500 333 +640 480 +640 400 +640 480 +640 427 +480 640 +640 429 +640 480 +640 427 +640 427 +640 425 +480 640 +640 427 +480 640 +375 500 +500 333 +500 317 +640 427 +451 640 +480 640 +640 480 +427 640 +640 428 +640 426 +480 640 +320 240 +640 480 +640 427 +640 426 +640 480 +640 436 +640 429 +640 427 +640 480 +640 410 +500 360 +640 480 +640 480 +640 640 +640 427 +640 543 +428 640 +640 489 +640 570 +500 375 +613 640 +500 431 +640 432 +428 640 +640 479 +640 480 +640 480 +612 612 +640 480 +500 375 +640 480 +500 375 +640 421 +640 426 +640 424 +640 427 +476 640 +612 612 +640 480 +640 428 +640 480 +640 480 +480 640 +640 417 +480 640 +640 425 +640 480 +640 456 +640 480 +448 640 +588 640 +640 425 +500 375 +640 427 +640 480 +427 640 +424 640 +480 640 +640 428 +640 480 +480 640 +640 480 +500 375 +480 360 +480 640 +640 426 +480 640 +640 427 +640 426 +640 422 +427 640 +480 640 +640 427 +500 364 +640 428 +334 500 +375 500 +640 438 +427 640 +640 480 +640 480 +500 333 +640 435 +640 480 +500 333 +640 480 +427 640 +500 333 +640 480 +640 425 +640 480 +640 412 +480 640 +640 480 +464 640 +640 480 +480 640 +640 360 +640 428 +640 355 +640 427 +640 427 +640 480 +500 333 +640 480 +640 480 +500 375 +640 427 +375 500 +546 640 +339 500 +640 427 +640 429 +425 640 +640 427 +640 427 +640 361 +640 427 +640 321 +640 427 +640 426 +640 427 +640 480 +375 500 +640 425 +500 333 +640 480 +640 459 +640 490 +640 427 +640 480 +640 427 +640 425 +375 500 +320 408 +640 457 +500 366 +640 427 +640 512 +480 640 +640 588 +640 625 +427 640 +640 426 +480 640 +425 640 +612 612 +640 419 +640 480 +500 316 +635 640 +500 378 +640 424 +640 426 +640 360 +640 460 +640 480 +640 424 +500 375 +640 480 +640 480 +426 640 +427 640 +640 360 +640 479 +640 427 +640 480 +500 333 +640 426 +640 427 +612 612 +500 333 +640 429 +500 418 +427 640 +640 425 +480 640 +640 480 +640 428 +640 480 +640 480 +427 640 +640 420 +640 427 +640 427 +640 427 +500 357 +480 640 +480 640 +640 482 +500 375 +640 480 +640 433 +464 640 +467 640 +500 332 +500 375 +640 349 +640 427 +640 480 +640 480 +334 500 +375 500 +640 423 +640 480 +640 428 +500 451 +640 428 +640 427 +517 640 +640 426 +640 427 +480 640 +383 640 +480 640 +640 428 +640 426 +640 428 +479 640 +640 360 +335 198 +640 480 +640 426 +640 480 +510 640 +640 426 +612 612 +640 424 +630 640 +640 427 +640 427 +640 427 +640 428 +640 480 +480 640 +472 640 +500 375 +640 480 +425 640 +640 480 +640 428 +378 640 +427 640 +640 480 +375 500 +640 480 +427 640 +281 500 +640 436 +480 640 +375 500 +640 567 +640 427 +640 427 +375 500 +640 424 +640 480 +640 493 +640 360 +640 497 +258 344 +640 480 +640 427 +441 640 +333 500 +360 640 +500 375 +640 480 +427 640 +640 428 +640 427 +640 428 +500 375 +640 427 +500 289 +640 359 +640 301 +640 428 +428 640 +640 480 +473 640 +640 427 +640 426 +480 640 +612 612 +640 479 +640 427 +640 480 +640 480 +429 640 +640 480 +640 480 +500 375 +640 480 +640 480 +640 427 +427 640 +453 640 +500 390 +640 393 +500 375 +500 334 +640 346 +480 640 +640 480 +427 640 +640 427 +640 426 +640 427 +640 428 +640 480 +427 640 +640 480 +640 433 +640 425 +640 427 +640 480 +472 640 +640 480 +640 427 +640 640 +640 480 +639 640 +640 360 +361 640 +640 480 +333 500 +640 427 +640 480 +640 368 +426 640 +640 427 +480 640 +640 359 +427 640 +640 480 +640 408 +640 429 +640 478 +640 480 +640 417 +640 427 +640 426 +500 375 +640 480 +640 427 +640 480 +640 480 +640 409 +640 480 +640 427 +640 427 +480 640 +480 640 +640 480 +640 428 +612 612 +333 500 +640 438 +640 427 +616 640 +500 375 +640 480 +500 339 +640 427 +640 428 +640 480 +640 480 +640 480 +640 427 +640 480 +640 359 +640 428 +640 359 +640 480 +640 381 +640 480 +480 640 +640 360 +640 425 +640 479 +640 425 +640 485 +640 426 +640 427 +628 640 +500 375 +500 375 +640 427 +640 423 +425 640 +480 640 +500 375 +640 428 +458 640 +479 640 +640 480 +480 640 +640 480 +288 640 +640 427 +640 477 +640 427 +480 640 +640 480 +640 480 +640 480 +640 359 +640 428 +640 425 +640 449 +500 375 +640 428 +640 480 +640 481 +500 375 +500 333 +640 424 +640 430 +612 612 +640 424 +640 427 +500 375 +640 427 +640 453 +640 422 +640 424 +640 425 +640 425 +640 427 +480 640 +640 480 +640 359 +480 640 +640 426 +640 480 +640 427 +640 426 +640 427 +640 427 +480 640 +429 640 +408 640 +612 612 +427 640 +640 480 +640 480 +500 318 +640 534 +640 479 +640 406 +640 512 +640 427 +640 427 +640 388 +640 426 +640 478 +640 424 +640 480 +480 640 +640 427 +640 640 +640 480 +500 333 +640 433 +640 427 +640 426 +640 427 +640 480 +640 425 +640 428 +640 426 +425 640 +500 375 +640 480 +640 426 +640 434 +640 480 +640 441 +640 425 +640 425 +480 640 +640 427 +565 640 +427 640 +640 480 +640 480 +640 480 +640 427 +640 479 +427 640 +640 640 +500 337 +500 359 +480 640 +427 640 +640 480 +612 612 +640 427 +640 428 +425 640 +640 427 +480 640 +512 640 +640 513 +640 427 +640 480 +500 375 +640 425 +640 480 +428 640 +500 375 +640 425 +500 399 +427 640 +640 427 +500 333 +640 428 +640 428 +640 480 +640 427 +640 428 +413 500 +640 427 +640 424 +640 429 +640 480 +640 480 +640 478 +640 480 +640 452 +640 480 +500 292 +500 375 +640 480 +640 480 +640 480 +640 480 +640 427 +640 426 +480 640 +640 480 +640 427 +640 427 +640 360 +500 333 +640 477 +436 640 +640 426 +640 427 +640 427 +480 640 +612 612 +640 301 +640 311 +640 480 +427 640 +640 457 +640 427 +640 427 +640 480 +640 331 +500 375 +276 640 +640 424 +500 500 +478 640 +612 612 +640 381 +512 640 +433 640 +640 480 +480 640 +640 480 +480 640 +640 480 +427 640 +640 430 +640 480 +640 480 +640 428 +500 373 +640 428 +640 366 +640 475 +640 480 +427 640 +640 427 +500 375 +500 375 +375 500 +640 427 +427 640 +640 480 +640 480 +300 451 +640 383 +640 427 +500 375 +640 424 +500 375 +400 600 +640 478 +640 480 +375 500 +500 375 +640 480 +640 456 +640 427 +480 640 +480 640 +500 375 +500 415 +640 436 +375 500 +480 640 +427 640 +640 480 +640 428 +524 640 +640 489 +612 612 +480 640 +640 426 +640 426 +640 480 +640 425 +640 427 +640 427 +612 612 +640 445 +640 480 +640 427 +480 640 +640 361 +640 427 +640 454 +640 453 +427 640 +640 459 +500 283 +349 500 +640 480 +640 480 +640 480 +640 480 +640 480 +374 500 +480 640 +640 480 +480 640 +500 332 +500 332 +612 612 +640 426 +640 428 +500 333 +640 480 +640 480 +612 612 +640 427 +500 276 +500 332 +640 480 +640 427 +640 480 +640 480 +480 640 +640 480 +480 640 +640 429 +640 480 +640 512 +480 640 +640 480 +640 450 +640 426 +640 427 +640 480 +426 640 +640 427 +640 427 +640 480 +379 640 +640 425 +640 427 +640 400 +640 480 +640 427 +640 427 +640 480 +640 480 +640 427 +480 640 +640 424 +500 374 +640 480 +640 427 +640 480 +640 402 +640 480 +640 480 +640 640 +640 538 +640 480 +640 426 +640 480 +612 612 +480 640 +480 640 +640 427 +640 512 +640 480 +640 427 +640 439 +640 427 +480 640 +426 640 +612 612 +640 332 +500 375 +640 478 +640 433 +480 640 +450 600 +640 480 +640 480 +604 640 +640 243 +640 480 +424 640 +640 480 +401 640 +500 489 +640 397 +500 375 +500 345 +500 429 +481 640 +640 431 +640 366 +286 176 +640 427 +640 480 +428 640 +480 640 +437 500 +472 640 +640 458 +640 480 +612 612 +640 638 +480 640 +354 640 +640 427 +640 480 +640 480 +640 379 +480 640 +640 480 +478 640 +640 480 +640 428 +640 480 +640 480 +640 480 +640 425 +428 640 +640 428 +640 360 +480 640 +603 640 +640 559 +425 640 +640 480 +640 426 +640 427 +640 480 +640 427 +640 426 +640 480 +640 426 +640 360 +640 427 +640 426 +374 640 +480 640 +428 640 +478 640 +612 612 +640 427 +640 480 +640 486 +640 425 +500 363 +640 427 +640 425 +640 423 +533 640 +640 427 +640 428 +612 612 +444 440 +500 375 +425 640 +400 640 +640 480 +640 480 +640 428 +426 640 +640 480 +640 428 +640 480 +600 400 +425 640 +640 510 +500 333 +500 375 +640 427 +640 427 +640 427 +500 354 +640 480 +301 450 +360 640 +640 427 +512 640 +500 332 +427 640 +640 480 +640 427 +427 640 +640 480 +640 480 +500 375 +640 426 +640 384 +640 480 +500 333 +500 375 +640 480 +500 200 +640 480 +640 511 +640 478 +640 475 +500 375 +500 375 +640 480 +640 366 +640 480 +480 640 +640 423 +447 640 +640 640 +640 426 +640 480 +576 640 +360 640 +640 480 +500 281 +640 444 +640 640 +500 332 +560 175 +500 375 +640 366 +640 640 +640 341 +640 478 +640 428 +640 594 +640 363 +640 427 +640 425 +640 480 +590 640 +481 640 +640 640 +640 425 +640 427 +640 427 +640 427 +640 434 +375 500 +640 406 +640 360 +640 480 +640 480 +427 640 +396 640 +640 426 +640 531 +419 640 +640 426 +640 426 +640 480 +500 375 +640 428 +640 480 +640 480 +640 480 +480 640 +480 640 +444 640 +640 427 +320 240 +640 425 +640 480 +640 480 +425 640 +386 500 +640 480 +640 480 +500 333 +480 640 +422 282 +640 480 +640 443 +347 500 +640 480 +478 640 +480 640 +640 444 +640 640 +640 425 +478 640 +640 427 +640 427 +500 283 +640 480 +640 480 +640 412 +500 417 +427 640 +640 427 +640 323 +640 427 +640 471 +427 640 +640 427 +640 427 +368 500 +640 480 +640 427 +640 450 +640 426 +425 640 +640 427 +500 375 +640 427 +640 426 +640 480 +640 428 +640 360 +640 488 +640 425 +640 480 +398 640 +640 414 +640 399 +640 425 +640 480 +640 439 +427 640 +640 480 +428 640 +550 410 +640 427 +640 480 +640 480 +640 494 +428 640 +640 480 +500 375 +640 566 +640 480 +480 640 +640 478 +640 360 +640 427 +640 480 +480 640 +500 375 +500 333 +640 480 +425 640 +426 640 +640 425 +640 427 +640 279 +640 428 +640 376 +640 425 +640 353 +480 640 +640 464 +640 480 +640 492 +640 480 +640 480 +640 480 +640 480 +640 427 +640 480 +640 426 +640 427 +640 480 +640 427 +640 379 +500 390 +427 640 +640 510 +640 426 +640 480 +427 640 +480 640 +480 640 +640 469 +640 427 +500 375 +640 528 +427 640 +640 427 +640 519 +640 427 +428 640 +640 427 +640 414 +640 513 +640 427 +640 480 +427 640 +640 427 +640 480 +375 500 +500 375 +640 427 +640 428 +500 375 +640 427 +375 500 +640 480 +640 428 +500 333 +640 427 +640 480 +640 427 +640 427 +640 480 +427 640 +640 427 +640 480 +640 426 +500 375 +378 500 +640 565 +640 427 +640 427 +640 427 +640 480 +640 426 +640 452 +500 375 +640 427 +640 427 +640 480 +640 427 +427 640 +640 457 +640 428 +425 640 +640 480 +480 640 +640 383 +500 332 +640 595 +640 480 +640 404 +640 379 +500 498 +480 640 +640 480 +640 480 +375 500 +640 427 +640 427 +640 640 +640 480 +640 427 +640 427 +640 480 +480 640 +640 479 +640 325 +640 480 +427 640 +640 457 +640 428 +640 480 +640 427 +640 428 +640 480 +640 427 +346 500 +640 480 +640 427 +480 640 +480 320 +640 425 +640 474 +375 500 +478 640 +426 640 +640 426 +640 480 +500 400 +640 480 +640 427 +500 375 +640 426 +499 500 +640 426 +640 480 +640 480 +640 480 +640 427 +640 512 +375 500 +640 427 +480 640 +500 365 +640 480 +480 640 +640 426 +640 480 +640 427 +427 640 +480 640 +640 427 +640 480 +640 480 +425 640 +500 375 +500 338 +640 344 +640 427 +640 425 +640 480 +480 640 +427 640 +486 640 +503 640 +640 480 +427 640 +361 640 +640 457 +640 480 +640 427 +426 640 +640 480 +640 473 +640 361 +640 426 +375 500 +500 375 +640 427 +640 427 +640 431 +640 434 +640 480 +500 375 +640 428 +640 480 +371 640 +475 640 +640 476 +640 427 +500 375 +480 640 +640 426 +640 312 +640 480 +640 480 +640 480 +456 640 +640 427 +640 425 +632 640 +640 360 +640 424 +640 426 +403 640 +426 640 +480 640 +640 393 +359 640 +480 640 +612 612 +640 421 +640 425 +640 478 +640 422 +640 396 +500 375 +640 426 +640 427 +640 427 +640 478 +427 640 +500 336 +640 427 +640 640 +640 555 +612 612 +511 640 +428 640 +640 480 +493 640 +640 427 +640 425 +612 612 +478 640 +640 608 +400 308 +480 640 +640 427 +640 480 +640 512 +640 427 +480 640 +640 318 +480 640 +640 437 +500 385 +427 640 +500 374 +500 375 +640 481 +640 428 +640 289 +640 427 +640 427 +640 388 +480 640 +615 640 +640 480 +640 360 +428 640 +500 333 +640 480 +640 359 +355 640 +480 640 +612 612 +480 640 +640 480 +640 428 +640 480 +425 640 +640 425 +640 480 +640 270 +426 640 +640 480 +640 425 +640 408 +428 640 +640 400 +640 426 +622 640 +640 480 +500 375 +640 480 +640 393 +640 360 +640 428 +640 427 +357 500 +480 640 +640 480 +480 640 +400 500 +391 640 +640 480 +640 480 +640 480 +424 640 +640 427 +640 424 +500 339 +640 480 +640 480 +640 428 +427 640 +640 469 +427 640 +640 445 +640 428 +478 640 +375 500 +640 428 +640 425 +640 426 +427 640 +640 480 +640 480 +478 640 +500 375 +640 480 +500 400 +640 426 +640 512 +640 480 +640 457 +640 425 +640 476 +640 427 +500 375 +640 427 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +480 640 +500 375 +640 426 +640 480 +500 375 +640 427 +500 375 +480 640 +640 425 +597 640 +640 480 +640 481 +640 428 +640 512 +640 480 +640 480 +640 480 +427 640 +640 480 +500 334 +640 478 +640 480 +640 444 +480 640 +640 597 +640 427 +640 427 +640 425 +640 478 +640 427 +640 480 +640 427 +451 640 +628 640 +640 640 +500 335 +640 640 +640 318 +640 427 +640 480 +640 480 +640 480 +426 640 +427 640 +500 375 +320 240 +427 640 +640 480 +640 428 +640 429 +427 640 +480 640 +640 427 +640 415 +640 366 +407 500 +640 425 +640 427 +427 640 +480 640 +500 375 +500 360 +478 640 +640 427 +640 510 +640 425 +480 640 +500 334 +640 427 +640 480 +640 427 +333 500 +500 335 +640 427 +375 500 +640 360 +640 427 +640 459 +640 499 +640 473 +480 640 +478 640 +640 438 +640 426 +640 428 +640 441 +640 480 +640 480 +640 526 +640 480 +640 480 +640 480 +640 427 +640 425 +612 612 +398 640 +640 524 +640 478 +427 640 +640 499 +617 640 +640 428 +480 640 +640 423 +500 357 +478 640 +640 360 +640 427 +640 433 +640 425 +545 640 +640 482 +424 640 +640 480 +334 500 +483 640 +427 640 +640 480 +500 333 +500 375 +400 266 +375 500 +640 480 +480 640 +640 428 +500 375 +640 577 +446 640 +640 480 +480 640 +640 480 +640 480 +640 427 +640 426 +362 640 +640 480 +500 375 +500 333 +500 333 +640 426 +640 426 +640 480 +480 640 +640 478 +480 640 +640 427 +500 375 +640 640 +640 480 +640 425 +640 421 +640 427 +640 480 +640 426 +640 426 +640 352 +500 375 +480 640 +640 427 +480 640 +640 427 +426 640 +640 480 +320 400 +640 480 +427 640 +640 358 +640 430 +640 427 +640 426 +500 375 +480 640 +612 612 +480 640 +640 430 +512 512 +640 480 +480 640 +640 427 +640 478 +640 427 +640 427 +640 425 +640 480 +640 425 +640 427 +640 480 +640 427 +500 281 +640 480 +640 480 +428 640 +640 480 +640 480 +425 640 +640 480 +425 640 +480 640 +640 339 +640 427 +427 640 +480 640 +640 425 +427 640 +640 480 +640 423 +442 500 +640 480 +640 427 +480 640 +640 494 +494 500 +480 640 +480 640 +640 480 +640 640 +640 427 +640 480 +640 428 +640 428 +612 612 +480 640 +634 640 +500 333 +500 332 +423 640 +640 427 +480 640 +632 640 +500 323 +640 426 +640 480 +640 480 +640 480 +640 480 +640 480 +640 425 +640 427 +640 432 +332 500 +640 640 +640 478 +640 512 +640 512 +427 640 +500 375 +640 480 +640 480 +640 480 +640 428 +640 480 +640 480 +640 254 +640 480 +500 375 +640 427 +480 640 +640 474 +640 426 +640 480 +640 495 +480 640 +640 480 +640 427 +640 480 +500 333 +640 427 +640 480 +375 500 +640 427 +464 640 +640 480 +480 640 +612 612 +640 421 +640 480 +500 332 +640 480 +640 360 +640 480 +426 640 +500 375 +640 427 +612 612 +640 359 +640 428 +640 360 +640 480 +333 500 +640 360 +640 370 +640 427 +500 372 +640 426 +500 333 +478 640 +500 375 +640 480 +640 368 +500 368 +500 375 +500 332 +640 480 +640 427 +519 640 +640 434 +640 427 +424 640 +640 479 +425 640 +640 478 +640 515 +425 640 +500 375 +600 600 +640 428 +612 612 +640 427 +640 480 +640 466 +640 427 +546 640 +640 480 +640 403 +640 606 +561 640 +427 640 +500 372 +480 640 +477 358 +640 480 +640 428 +640 478 +427 640 +640 355 +640 480 +640 480 +640 512 +427 640 +375 500 +500 332 +480 640 +480 640 +640 473 +612 612 +640 428 +640 427 +640 480 +640 480 +500 400 +640 427 +640 427 +640 426 +640 480 +640 384 +640 427 +428 640 +640 426 +640 480 +640 481 +640 480 +640 480 +640 480 +500 375 +640 329 +333 500 +640 427 +640 348 +640 480 +500 375 +481 481 +640 424 +640 360 +640 427 +640 428 +640 480 +425 640 +640 427 +640 480 +500 375 +426 640 +640 427 +480 640 +500 373 +640 426 +640 480 +640 320 +640 426 +480 640 +426 640 +500 282 +640 417 +640 403 +426 640 +640 480 +640 427 +480 640 +640 425 +511 640 +375 500 +500 335 +640 412 +640 427 +640 427 +500 375 +640 480 +399 640 +640 426 +640 480 +500 375 +480 640 +427 640 +480 640 +360 640 +640 480 +640 427 +612 612 +640 571 +640 427 +640 427 +500 375 +640 429 +640 383 +427 640 +333 500 +640 480 +427 640 +478 640 +500 390 +640 480 +640 480 +640 427 +640 480 +500 328 +480 640 +640 480 +640 426 +456 640 +640 427 +640 427 +640 603 +612 612 +640 427 +480 640 +480 640 +640 480 +640 480 +480 640 +640 443 +640 427 +500 333 +640 427 +640 249 +640 480 +640 426 +640 480 +640 480 +282 454 +640 480 +640 427 +640 480 +427 640 +428 640 +640 425 +567 640 +500 333 +500 375 +640 480 +480 640 +446 640 +500 375 +640 480 +427 640 +427 640 +640 439 +480 640 +640 427 +375 500 +640 480 +640 427 +640 426 +640 426 +480 640 +640 480 +640 480 +612 612 +640 554 +480 640 +640 360 +500 375 +500 375 +640 423 +640 427 +480 640 +640 425 +640 427 +640 426 +640 480 +640 426 +640 427 +640 464 +640 414 +375 500 +482 482 +640 480 +389 640 +478 640 +640 427 +640 361 +640 480 +640 429 +640 427 +640 425 +640 480 +640 480 +640 483 +640 427 +640 427 +500 329 +640 444 +640 428 +640 480 +403 640 +500 333 +640 480 +640 427 +640 269 +640 480 +640 480 +640 360 +640 427 +444 640 +640 428 +640 480 +457 640 +480 640 +612 612 +640 427 +612 612 +333 500 +640 480 +426 640 +640 424 +640 427 +640 418 +500 375 +640 496 +640 457 +640 480 +640 426 +480 640 +640 424 +640 480 +576 640 +640 427 +640 480 +640 399 +480 640 +640 427 +640 480 +500 500 +640 427 +351 500 +640 427 +640 480 +640 640 +640 427 +427 640 +640 373 +500 380 +375 500 +640 480 +425 640 +640 406 +640 427 +640 480 +640 427 +640 427 +500 408 +640 480 +640 480 +640 480 +500 336 +640 480 +480 640 +640 473 +640 428 +640 428 +578 640 +480 640 +640 427 +640 424 +640 427 +404 640 +500 375 +640 400 +500 333 +480 640 +436 640 +409 640 +640 427 +640 523 +640 427 +640 418 +640 480 +640 480 +640 427 +640 426 +500 333 +640 427 +427 640 +640 412 +640 480 +640 427 +478 640 +640 480 +640 427 +332 500 +511 640 +478 640 +640 427 +334 500 +640 427 +640 427 +500 375 +640 480 +640 480 +500 375 +500 400 +640 480 +333 500 +480 640 +640 427 +640 360 +640 480 +640 480 +640 480 +640 388 +427 640 +500 375 +640 426 +640 480 +640 480 +640 480 +612 612 +478 640 +334 500 +640 427 +640 457 +640 480 +640 427 +426 640 +640 425 +500 375 +640 427 +640 416 +426 640 +480 640 +640 425 +640 426 +640 538 +480 640 +640 478 +500 375 +426 640 +480 640 +640 426 +640 428 +640 427 +480 640 +640 427 +500 228 +640 425 +640 480 +500 375 +640 427 +500 375 +640 427 +433 640 +480 640 +480 640 +640 426 +640 427 +612 612 +640 481 +640 480 +453 640 +500 333 +640 361 +640 424 +640 428 +640 478 +640 480 +640 427 +640 480 +425 640 +640 339 +426 640 +640 480 +640 480 +640 427 +500 375 +640 323 +640 640 +640 480 +640 427 +640 450 +320 240 +640 478 +640 640 +640 427 +426 640 +640 480 +640 424 +640 427 +612 612 +640 427 +640 425 +640 480 +640 480 +480 640 +640 480 +640 449 +640 479 +640 426 +480 640 +640 428 +640 478 +456 640 +640 427 +640 480 +428 443 +640 483 +640 423 +640 480 +640 480 +640 480 +640 427 +480 640 +640 424 +640 427 +500 202 +426 640 +640 427 +640 428 +640 480 +375 500 +427 640 +640 480 +460 640 +640 427 +640 427 +640 427 +640 480 +640 426 +640 484 +333 500 +640 427 +333 500 +640 401 +640 480 +640 429 +640 433 +427 640 +500 333 +640 320 +640 427 +640 427 +640 427 +640 415 +500 332 +457 640 +427 640 +640 434 +448 640 +640 480 +640 427 +640 425 +640 480 +640 480 +480 640 +612 612 +480 640 +640 480 +640 512 +640 480 +480 640 +480 640 +500 375 +640 427 +640 480 +480 640 +419 640 +427 640 +640 424 +640 428 +640 425 +640 427 +640 426 +640 426 +473 640 +640 426 +640 420 +640 480 +640 427 +500 290 +612 612 +640 427 +640 480 +426 640 +400 300 +314 500 +500 375 +640 360 +640 480 +640 427 +640 427 +480 640 +640 425 +500 375 +640 480 +640 480 +640 640 +500 375 +640 424 +612 612 +640 426 +640 487 +640 427 +640 480 +640 503 +640 458 +640 484 +640 480 +640 480 +640 427 +640 480 +640 457 +640 480 +427 640 +612 612 +640 526 +500 375 +640 480 +640 480 +400 500 +640 427 +640 480 +640 427 +640 427 +640 426 +640 480 +480 640 +428 640 +480 640 +480 640 +428 640 +640 406 +640 428 +640 491 +428 640 +500 375 +480 640 +480 640 +640 480 +640 427 +480 640 +640 479 +480 640 +640 426 +640 360 +640 360 +640 480 +500 375 +640 480 +640 428 +612 612 +640 425 +375 500 +640 427 +640 457 +640 427 +640 316 +640 480 +500 331 +640 480 +427 640 +480 640 +426 640 +640 425 +640 496 +640 389 +463 640 +640 468 +640 480 +640 480 +444 640 +640 424 +334 500 +500 375 +640 429 +500 332 +480 640 +640 480 +640 427 +640 480 +426 640 +640 386 +640 427 +500 375 +500 375 +640 427 +640 480 +640 427 +640 324 +500 375 +640 425 +640 363 +640 428 +426 640 +640 427 +467 640 +640 427 +640 427 +640 427 +640 230 +640 426 +640 359 +640 428 +640 480 +640 427 +640 427 +640 427 +500 375 +640 427 +612 612 +500 375 +500 375 +640 427 +640 434 +500 375 +640 640 +640 463 +612 612 +480 640 +640 427 +640 480 +640 568 +640 480 +480 640 +426 640 +640 480 +612 612 +640 480 +627 640 +344 500 +640 480 +640 442 +640 428 +640 480 +480 640 +640 480 +640 480 +640 433 +640 512 +427 640 +500 334 +640 254 +640 431 +612 612 +612 612 +640 512 +640 480 +640 424 +640 396 +640 480 +640 480 +480 640 +640 480 +427 640 +640 480 +640 427 +640 480 +640 480 +500 400 +500 375 +640 480 +640 480 +427 640 +640 480 +640 427 +480 640 +427 640 +640 427 +640 480 +640 427 +640 428 +426 640 +500 375 +640 366 +640 480 +640 480 +429 640 +479 320 +640 429 +500 399 +424 640 +538 640 +640 428 +640 431 +427 640 +554 312 +426 640 +640 480 +375 500 +640 427 +640 429 +480 384 +500 400 +333 500 +480 640 +500 484 +640 427 +477 304 +426 640 +640 480 +600 400 +500 500 +640 427 +480 640 +500 333 +500 334 +640 428 +640 486 +640 258 +640 480 +640 480 +519 640 +612 612 +500 333 +640 426 +640 427 +640 640 +640 508 +640 427 +480 640 +426 640 +500 375 +640 427 +500 334 +640 480 +437 640 +640 418 +640 427 +598 640 +378 500 +480 640 +640 593 +640 427 +480 640 +640 480 +333 500 +640 343 +640 420 +480 640 +640 480 +640 427 +333 500 +640 427 +426 640 +640 427 +640 424 +523 640 +480 640 +640 430 +640 480 +640 428 +640 480 +480 640 +640 480 +612 612 +427 640 +640 481 +640 407 +427 640 +640 426 +333 500 +640 480 +640 478 +640 480 +640 439 +640 403 +640 480 +640 480 +640 480 +640 419 +640 427 +640 427 +640 424 +640 382 +640 408 +500 375 +640 640 +640 480 +640 427 +640 428 +395 640 +480 640 +602 640 +640 480 +428 640 +640 400 +427 640 +640 427 +640 424 +640 480 +640 426 +640 480 +500 375 +640 480 +453 640 +640 443 +640 429 +640 360 +640 498 +640 480 +446 640 +640 476 +500 387 +640 640 +590 640 +640 425 +640 480 +427 640 +640 480 +426 640 +640 638 +439 640 +640 640 +437 640 +640 480 +640 640 +640 480 +640 495 +640 427 +500 375 +640 388 +640 480 +640 428 +640 427 +353 640 +427 640 +479 640 +500 334 +640 480 +640 427 +427 640 +512 640 +500 335 +426 640 +640 427 +640 200 +640 427 +640 427 +640 538 +512 640 +640 428 +450 319 +375 500 +640 480 +500 375 +640 480 +640 428 +640 452 +640 480 +640 480 +640 480 +640 640 +640 427 +640 480 +416 640 +640 426 +640 480 +427 640 +500 375 +640 295 +457 640 +640 425 +640 427 +500 500 +640 480 +640 480 +427 640 +375 500 +640 480 +640 434 +640 427 +433 640 +554 640 +640 427 +640 487 +640 428 +500 375 +640 424 +478 640 +640 480 +640 425 +640 427 +500 334 +640 467 +640 426 +640 427 +426 640 +640 427 +427 640 +480 640 +640 426 +409 640 +640 480 +425 640 +640 480 +640 428 +378 640 +427 640 +640 619 +425 640 +640 480 +640 428 +640 480 +640 480 +640 480 +640 429 +640 426 +640 425 +480 640 +640 478 +375 500 +640 436 +640 409 +640 423 +640 426 +640 427 +500 332 +500 375 +640 480 +640 428 +480 640 +640 425 +640 427 +640 480 +640 427 +640 480 +640 480 +640 480 +480 640 +500 337 +500 325 +640 427 +640 426 +640 400 +640 248 +640 427 +640 462 +640 480 +640 427 +640 508 +500 391 +480 640 +640 427 +640 480 +640 427 +427 640 +640 426 +427 640 +640 427 +457 640 +640 480 +640 480 +427 640 +427 640 +500 375 +424 640 +427 640 +640 427 +640 480 +640 480 +480 640 +640 480 +444 640 +640 424 +640 428 +640 460 +640 427 +640 428 +640 512 +640 427 +428 640 +640 427 +640 427 +640 478 +640 424 +640 480 +640 427 +640 339 +612 612 +640 480 +500 375 +480 640 +640 425 +640 427 +640 480 +427 640 +427 640 +640 480 +480 640 +640 480 +500 375 +640 480 +640 424 +640 480 +640 480 +640 480 +480 640 +612 612 +640 428 +427 640 +640 480 +612 612 +640 480 +640 424 +640 480 +640 480 +640 480 +640 480 +480 640 +427 640 +640 427 +640 424 +640 427 +640 427 +480 640 +640 480 +640 480 +640 424 +640 457 +427 640 +500 338 +640 427 +640 427 +356 640 +375 500 +505 640 +640 425 +400 600 +640 427 +426 640 +481 640 +640 480 +640 491 +640 480 +640 480 +640 369 +640 427 +500 333 +333 500 +500 313 +640 482 +640 491 +640 426 +640 426 +640 480 +640 427 +640 504 +640 426 +480 640 +480 640 +640 480 +640 457 +640 427 +640 427 +640 426 +640 427 +640 426 +640 480 +612 612 +640 480 +640 480 +500 332 +640 480 +480 640 +640 480 +640 426 +640 480 +500 305 +640 347 +640 427 +480 640 +500 335 +367 500 +640 427 +640 427 +640 427 +640 480 +640 512 +612 612 +640 427 +568 320 +640 426 +480 640 +480 640 +640 480 +480 640 +427 640 +640 428 +640 360 +348 500 +424 640 +480 640 +640 480 +480 640 +636 640 +427 640 +480 640 +640 427 +640 480 +333 500 +500 375 +640 427 +600 450 +640 480 +640 427 +640 480 +329 640 +640 360 +612 612 +640 480 +500 500 +640 480 +640 457 +640 426 +640 488 +640 479 +480 640 +640 428 +427 640 +640 480 +640 427 +640 480 +640 427 +640 633 +512 640 +480 640 +480 640 +500 332 +640 480 +640 427 +640 480 +500 375 +640 480 +640 480 +640 480 +640 424 +640 427 +426 640 +640 427 +427 640 +471 640 +640 425 +500 398 +640 369 +640 480 +640 480 +640 485 +640 480 +640 480 +640 399 +640 427 +480 640 +500 375 +640 480 +425 640 +640 429 +500 500 +500 332 +640 640 +640 480 +480 640 +640 480 +640 425 +640 379 +480 640 +640 408 +333 500 +640 421 +427 640 +383 640 +640 480 +640 419 +478 640 +640 418 +500 357 +435 480 +640 427 +640 480 +478 640 +640 428 +500 375 +640 427 +640 427 +640 316 +640 428 +640 424 +413 640 +640 438 +640 428 +640 393 +640 428 +375 500 +640 425 +640 423 +640 475 +640 427 +640 427 +376 500 +640 429 +640 480 +640 446 +640 480 +425 640 +640 359 +500 374 +427 640 +480 640 +640 421 +427 640 +640 427 +640 425 +640 640 +640 429 +640 480 +500 333 +640 427 +429 640 +333 500 +480 640 +335 500 +640 427 +480 640 +500 378 +640 629 +640 424 +640 464 +383 640 +640 513 +333 500 +640 480 +375 500 +612 612 +640 425 +640 480 +640 480 +640 360 +612 612 +640 425 +640 480 +640 428 +428 640 +640 478 +399 500 +480 640 +640 427 +640 427 +640 428 +480 640 +640 425 +640 426 +640 480 +381 640 +640 480 +640 480 +427 640 +640 556 +640 480 +480 640 +640 640 +640 429 +500 375 +640 427 +480 640 +640 458 +480 640 +640 427 +500 500 +333 500 +480 640 +500 334 +640 480 +640 428 +640 426 +394 500 +640 427 +480 640 +640 441 +640 484 +480 640 +640 480 +640 480 +640 478 +640 427 +640 478 +428 640 +501 640 +640 400 +512 640 +480 640 +640 291 +640 480 +500 375 +640 480 +429 640 +464 640 +640 480 +640 640 +426 640 +640 407 +480 640 +480 640 +640 426 +640 480 +640 640 +404 640 +500 306 +640 472 +500 377 +640 480 +500 375 +640 439 +500 375 +640 427 +480 640 +500 375 +640 640 +640 473 +481 640 +640 432 +640 480 +425 640 +640 425 +640 360 +640 427 +640 421 +640 427 +640 428 +640 427 +500 333 +640 443 +458 640 +612 612 +640 427 +640 303 +640 480 +480 640 +640 478 +423 640 +640 512 +640 427 +640 480 +640 427 +640 480 +640 360 +640 480 +640 478 +385 308 +640 427 +500 381 +640 427 +480 640 +500 334 +640 480 +500 375 +640 426 +640 426 +640 480 +640 425 +453 640 +640 476 +500 375 +640 425 +640 480 +480 640 +612 612 +333 500 +478 640 +502 640 +500 333 +640 471 +640 480 +427 640 +640 480 +640 480 +640 427 +640 480 +640 400 +500 375 +640 480 +640 480 +500 333 +426 640 +427 640 +429 640 +640 478 +480 640 +432 640 +640 480 +480 640 +428 640 +640 478 +500 305 +500 375 +640 426 +500 334 +640 428 +612 612 +640 480 +640 496 +427 640 +360 640 +640 427 +396 640 +640 425 +640 480 +411 640 +640 425 +640 480 +640 480 +640 480 +640 427 +500 335 +640 480 +426 640 +640 480 +640 427 +500 375 +640 480 +640 461 +640 480 +640 480 +480 640 +640 425 +640 480 +640 427 +500 375 +640 424 +640 480 +480 640 +427 640 +640 480 +640 433 +640 400 +500 333 +640 480 +640 412 +612 612 +640 480 +447 640 +640 425 +640 427 +420 223 +356 640 +500 375 +427 640 +640 428 +427 640 +500 375 +640 427 +640 439 +640 419 +640 400 +500 500 +500 375 +640 403 +500 375 +640 427 +640 480 +640 424 +640 480 +640 514 +640 480 +640 480 +640 480 +640 428 +640 414 +500 333 +640 228 +640 480 +640 360 +640 480 +640 445 +640 493 +640 482 +480 640 +640 427 +640 461 +640 427 +640 428 +640 480 +640 427 +640 430 +640 426 +600 400 +640 427 +640 427 +428 640 +426 640 +640 453 +640 464 +480 640 +480 640 +640 480 +640 480 +640 426 +640 480 +640 416 +640 427 +640 480 +640 403 +640 480 +640 488 +640 425 +480 640 +640 480 +640 425 +600 400 +640 489 +640 266 +640 426 +512 640 +640 427 +640 480 +640 427 +640 480 +375 500 +640 480 +640 515 +640 427 +500 375 +600 399 +640 429 +500 372 +640 480 +640 426 +428 640 +640 427 +640 480 +640 427 +640 401 +500 375 +640 427 +426 640 +427 640 +480 640 +481 640 +429 640 +480 640 +640 427 +640 414 +640 574 +480 640 +640 427 +640 640 +321 500 +640 425 +640 480 +500 375 +640 428 +640 356 +480 640 +335 500 +640 425 +361 640 +640 454 +640 438 +640 480 +480 640 +640 480 +427 640 +500 375 +640 480 +640 480 +640 480 +640 480 +640 461 +640 395 +480 640 +640 360 +640 480 +640 616 +500 333 +474 640 +640 427 +640 480 +640 457 +640 424 +427 640 +640 359 +640 480 +640 480 +640 480 +640 471 +640 480 +427 640 +640 480 +640 427 +640 248 +640 424 +500 332 +640 426 +480 640 +333 500 +640 480 +640 427 +640 359 +378 500 +640 427 +333 500 +640 480 +640 427 +640 480 +480 640 +640 360 +640 480 +500 375 +480 640 +402 600 +640 425 +480 640 +500 326 +640 426 +640 425 +500 375 +375 500 +612 612 +427 640 +500 375 +640 427 +640 480 +375 500 +640 425 +480 640 +640 480 +480 640 +640 427 +470 640 +640 424 +360 500 +640 435 +640 491 +640 480 +640 360 +640 480 +640 486 +640 439 +640 429 +640 640 +480 640 +640 480 +500 335 +365 500 +478 640 +640 427 +500 332 +640 424 +640 480 +640 480 +427 640 +425 640 +640 480 +640 480 +600 363 +640 480 +640 428 +640 480 +640 457 +640 480 +640 427 +333 500 +640 428 +375 500 +640 384 +640 478 +640 480 +640 426 +640 360 +640 453 +427 640 +640 480 +640 426 +640 424 +640 480 +338 500 +640 436 +640 426 +512 640 +500 375 +640 428 +625 425 +640 427 +518 640 +640 480 +500 375 +640 427 +640 480 +640 426 +480 640 +480 640 +640 431 +640 480 +640 480 +640 427 +640 427 +612 612 +640 480 +500 375 +640 427 +640 426 +640 431 +482 500 +640 426 +640 640 +640 203 +640 480 +640 603 +640 640 +500 375 +640 480 +640 427 +640 426 +400 500 +640 480 +640 625 +480 640 +427 640 +640 480 +427 640 +640 360 +640 480 +617 640 +640 425 +640 428 +640 361 +426 640 +640 480 +640 480 +640 425 +640 360 +640 428 +640 420 +640 425 +480 640 +640 427 +640 480 +480 640 +480 640 +626 586 +612 612 +318 500 +428 640 +500 375 +427 640 +640 427 +640 427 +640 426 +640 426 +428 640 +612 612 +500 332 +480 640 +640 426 +411 640 +500 333 +640 480 +500 285 +640 480 +640 426 +640 479 +640 385 +640 480 +638 640 +640 512 +640 480 +480 640 +640 479 +426 640 +640 428 +480 640 +640 480 +640 480 +640 427 +426 640 +500 333 +640 427 +640 480 +640 480 +640 427 +640 608 +640 427 +640 480 +640 427 +480 640 +428 640 +640 428 +640 426 +640 480 +640 480 +640 426 +500 333 +640 444 +426 640 +640 480 +640 424 +500 400 +640 468 +640 429 +640 427 +640 425 +480 640 +529 640 +640 425 +640 427 +640 426 +480 640 +640 427 +640 446 +640 480 +480 640 +427 640 +640 386 +640 480 +500 333 +640 428 +640 480 +640 454 +424 640 +640 428 +640 389 +427 640 +640 480 +640 480 +640 360 +640 480 +480 640 +640 427 +427 640 +640 480 +640 458 +640 480 +640 480 +640 416 +427 640 +640 427 +360 240 +640 480 +500 375 +640 426 +640 480 +640 425 +640 425 +640 427 +480 640 +640 425 +640 553 +427 640 +640 426 +480 640 +640 480 +500 334 +480 640 +640 576 +640 425 +427 640 +640 426 +478 640 +640 476 +428 640 +427 640 +640 339 +427 640 +640 424 +427 640 +640 427 +640 427 +640 362 +524 640 +640 478 +426 640 +640 427 +500 375 +640 480 +640 480 +640 213 +640 427 +640 460 +512 640 +640 480 +640 480 +640 384 +640 443 +640 480 +500 334 +320 240 +640 480 +479 640 +640 480 +612 612 +640 424 +640 455 +300 225 +640 428 +640 428 +640 437 +640 427 +480 640 +640 480 +427 640 +640 426 +640 480 +640 480 +480 640 +640 427 +612 612 +640 428 +640 427 +600 400 +640 427 +480 640 +612 612 +427 640 +499 640 +640 480 +640 153 +640 427 +640 480 +500 375 +500 375 +640 480 +640 427 +500 374 +640 480 +640 483 +640 480 +640 576 +640 448 +640 478 +500 333 +480 640 +640 427 +480 640 +640 303 +480 640 +640 427 +640 480 +500 333 +640 427 +640 426 +640 480 +489 640 +640 427 +640 424 +640 359 +427 640 +500 333 +640 480 +333 500 +480 640 +375 500 +640 426 +640 578 +640 480 +480 640 +416 640 +640 408 +640 480 +500 333 +640 203 +612 612 +612 612 +383 640 +640 338 +640 427 +640 480 +640 441 +640 427 +427 640 +640 480 +640 427 +640 480 +640 426 +640 427 +640 480 +333 500 +640 169 +640 426 +428 640 +500 375 +480 640 +428 640 +500 314 +640 383 +480 640 +640 427 +640 428 +428 640 +640 631 +375 500 +425 640 +640 427 +497 640 +640 366 +640 426 +390 500 +640 427 +500 493 +640 428 +640 427 +640 427 +640 359 +640 480 +640 427 +480 640 +442 640 +426 640 +640 480 +640 425 +427 640 +640 480 +375 500 +500 337 +640 298 +640 366 +640 425 +640 480 +640 428 +640 480 +640 480 +640 480 +640 426 +640 426 +640 480 +640 480 +640 428 +640 480 +640 480 +640 480 +431 640 +640 427 +500 234 +333 500 +640 423 +640 427 +612 612 +334 500 +500 333 +500 333 +640 480 +427 640 +640 480 +500 375 +612 612 +640 456 +640 480 +640 458 +640 426 +511 640 +640 637 +640 480 +640 429 +640 480 +360 270 +640 479 +640 559 +640 405 +468 640 +640 480 +427 640 +426 640 +640 429 +500 250 +500 277 +500 375 +640 427 +640 427 +640 436 +640 480 +388 500 +640 427 +360 640 +500 375 +640 425 +426 640 +438 640 +640 435 +640 502 +640 511 +480 640 +640 480 +640 480 +480 640 +640 427 +640 480 +333 500 +640 482 +640 484 +640 480 +640 480 +640 427 +640 480 +640 480 +441 640 +640 480 +640 480 +640 532 +640 429 +427 640 +480 640 +640 385 +427 640 +640 425 +640 416 +640 426 +640 426 +640 480 +550 539 +640 384 +640 479 +640 480 +500 334 +640 480 +640 425 +500 375 +640 480 +480 640 +480 640 +500 333 +326 640 +640 480 +480 640 +500 375 +512 640 +640 427 +640 426 +448 336 +640 480 +640 424 +480 640 +500 438 +478 640 +640 428 +480 640 +640 424 +640 480 +640 480 +426 640 +640 429 +640 480 +640 458 +640 429 +640 480 +500 375 +640 480 +427 640 +640 427 +640 639 +640 427 +640 480 +640 427 +424 640 +640 425 +640 424 +480 640 +640 479 +640 425 +640 428 +640 426 +421 640 +640 413 +640 480 +640 480 +480 640 +426 640 +224 500 +428 640 +462 462 +640 399 +481 500 +640 418 +449 600 +640 480 +640 427 +500 375 +640 427 +640 479 +640 480 +480 640 +640 394 +640 496 +501 640 +640 427 +640 480 +480 640 +640 427 +640 427 +591 640 +640 427 +612 612 +500 335 +478 640 +458 640 +493 640 +500 375 +430 500 +640 480 +640 480 +640 480 +640 415 +640 480 +640 480 +640 423 +500 333 +640 399 +500 375 +640 480 +640 480 +640 469 +500 210 +640 480 +500 375 +500 375 +640 408 +640 480 +428 640 +350 350 +640 480 +640 480 +640 480 +394 500 +428 640 +640 480 +640 480 +359 640 +640 426 +428 640 +640 427 +640 426 +640 426 +640 480 +640 453 +640 526 +640 480 +640 424 +484 640 +480 640 +640 426 +640 427 +640 427 +400 285 +429 640 +640 453 +427 640 +478 640 +480 640 +640 512 +640 427 +640 480 +500 339 +640 428 +333 500 +480 640 +640 427 +640 480 +612 612 +640 429 +640 427 +500 406 +640 427 +640 360 +427 640 +640 424 +640 427 +640 427 +427 640 +640 480 +480 640 +640 358 +375 500 +640 480 +480 640 +640 406 +424 351 +500 375 +500 333 +640 480 +640 426 +640 529 +640 427 +640 426 +427 640 +640 480 +640 427 +408 640 +361 640 +500 289 +612 612 +640 428 +480 640 +640 470 +500 333 +480 640 +500 375 +640 427 +640 637 +640 361 +500 375 +640 480 +500 460 +640 425 +426 640 +640 480 +427 640 +480 640 +640 426 +427 640 +640 400 +640 640 +266 412 +640 480 +640 360 +376 500 +427 640 +640 640 +640 426 +333 500 +478 640 +640 425 +427 640 +640 426 +480 640 +500 375 +500 334 +640 480 +500 473 +480 640 +640 427 +640 481 +360 480 +480 640 +640 530 +640 504 +640 499 +500 334 +640 427 +478 640 +526 640 +375 500 +640 480 +640 457 +500 332 +500 333 +640 550 +640 438 +640 446 +468 640 +640 408 +640 427 +427 640 +426 640 +640 480 +640 433 +640 366 +640 480 +500 375 +640 427 +640 480 +640 457 +375 500 +640 480 +500 375 +640 480 +640 640 +612 612 +640 425 +640 427 +427 640 +640 480 +480 640 +640 480 +640 419 +640 480 +640 360 +640 480 +640 480 +612 612 +640 421 +480 640 +640 427 +640 480 +427 640 +640 480 +640 240 +500 334 +427 640 +640 480 +375 500 +480 640 +321 500 +640 480 +426 640 +640 428 +220 176 +640 414 +480 640 +640 427 +640 480 +640 426 +640 427 +364 500 +640 480 +640 427 +427 640 +640 480 +640 429 +640 480 +480 640 +640 425 +640 428 +640 425 +640 427 +612 612 +640 427 +640 480 +640 428 +640 480 +640 480 +480 640 +640 640 +480 640 +640 480 +428 640 +480 640 +500 375 +500 500 +640 480 +640 427 +640 480 +640 458 +640 428 +612 612 +500 332 +640 383 +640 427 +640 426 +464 640 +640 480 +640 427 +640 427 +500 346 +640 480 +427 640 +375 500 +640 467 +470 640 +640 427 +500 458 +640 480 +640 480 +500 375 +426 640 +640 426 +327 640 +640 469 +640 428 +640 427 +640 480 +640 480 +640 423 +612 612 +640 427 +412 640 +298 448 +640 427 +640 480 +480 640 +640 480 +640 480 +640 480 +640 481 +640 426 +500 375 +612 612 +640 479 +640 219 +640 419 +480 640 +640 425 +640 427 +640 425 +500 500 +640 448 +640 427 +480 640 +640 480 +640 473 +640 426 +640 427 +500 284 +640 427 +640 458 +640 480 +640 480 +640 453 +500 375 +640 398 +500 375 +640 480 +640 468 +480 640 +640 464 +402 640 +640 480 +640 480 +640 424 +640 480 +500 375 +640 425 +431 640 +640 480 +640 427 +640 338 +640 427 +640 428 +639 428 +612 612 +427 640 +640 427 +500 333 +640 463 +640 425 +640 427 +640 374 +640 480 +640 480 +480 640 +640 427 +640 480 +640 428 +640 480 +640 480 +500 338 +480 640 +451 500 +640 427 +640 480 +427 640 +640 425 +427 640 +480 640 +480 640 +640 478 +640 480 +640 480 +640 427 +429 640 +425 640 +500 375 +640 294 +640 640 +429 640 +640 427 +426 640 +640 423 +480 640 +640 428 +640 424 +640 480 +640 427 +640 480 +500 375 +500 375 +480 640 +500 335 +427 640 +480 640 +640 383 +500 375 +428 640 +640 478 +494 640 +480 640 +392 591 +640 536 +344 500 +480 640 +640 480 +640 480 +500 500 +612 612 +640 504 +640 426 +640 480 +640 427 +640 423 +640 298 +375 500 +396 640 +640 427 +640 480 +640 480 +640 533 +375 500 +640 480 +640 425 +360 640 +640 425 +640 479 +424 640 +640 427 +457 640 +640 428 +640 467 +640 428 +640 427 +480 640 +640 427 +640 427 +640 480 +480 640 +640 480 +640 427 +500 375 +500 375 +640 480 +640 480 +480 640 +640 480 +426 640 +640 359 +640 352 +640 427 +640 480 +640 480 +500 400 +640 424 +640 480 +500 375 +640 480 +640 426 +500 333 +640 425 +640 480 +383 640 +640 428 +640 480 +640 427 +640 427 +640 425 +612 612 +640 480 +640 480 +640 511 +427 640 +640 359 +640 480 +640 480 +426 640 +640 480 +640 480 +640 427 +427 640 +640 480 +640 426 +500 375 +640 434 +480 640 +640 424 +640 480 +640 423 +640 427 +640 480 +612 612 +640 189 +478 640 +640 555 +640 478 +500 333 +500 375 +254 640 +480 640 +500 375 +429 640 +640 480 +640 360 +480 640 +612 612 +480 640 +640 638 +640 309 +640 480 +640 427 +612 612 +640 414 +640 427 +640 480 +500 332 +500 375 +500 489 +640 480 +480 640 +612 612 +640 425 +480 640 +612 612 +590 640 +640 426 +640 360 +640 480 +640 489 +640 425 +484 640 +640 427 +480 640 +640 480 +640 479 +500 299 +640 417 +640 373 +640 427 +612 612 +500 376 +640 427 +640 480 +640 415 +640 480 +480 640 +480 640 +640 480 +640 480 +640 569 +500 375 +640 480 +426 640 +640 426 +640 480 +640 480 +425 640 +640 640 +426 640 +640 480 +427 640 +428 640 +427 640 +640 425 +640 480 +324 500 +640 480 +640 428 +500 333 +640 426 +640 427 +640 480 +449 640 +640 480 +640 426 +480 640 +428 640 +424 640 +500 375 +640 427 +612 612 +640 480 +427 640 +640 480 +640 359 +640 478 +500 401 +640 480 +500 375 +640 480 +480 640 +480 640 +640 427 +640 480 +640 422 +640 484 +640 428 +640 478 +500 452 +640 366 +425 640 +640 427 +500 333 +640 427 +500 375 +640 426 +640 480 +640 427 +480 640 +500 375 +640 427 +640 426 +640 480 +640 427 +640 425 +640 480 +640 480 +640 426 +500 375 +500 400 +640 429 +640 465 +500 375 +640 480 +640 427 +375 500 +640 514 +640 445 +640 427 +640 480 +640 425 +500 400 +640 427 +640 427 +640 378 +640 481 +640 400 +640 480 +640 480 +640 426 +424 640 +640 360 +500 332 +640 384 +640 427 +500 374 +480 640 +640 480 +640 480 +427 640 +640 426 +375 500 +640 480 +640 427 +640 428 +500 375 +640 432 +480 640 +640 480 +480 640 +640 451 +640 480 +640 480 +615 640 +640 480 +640 480 +640 480 +480 640 +640 427 +640 427 +401 640 +640 480 +640 464 +500 375 +640 427 +640 427 +640 426 +640 480 +640 427 +636 640 +640 401 +640 428 +640 480 +500 333 +640 480 +500 333 +640 480 +564 640 +640 480 +480 640 +640 427 +500 375 +500 359 +640 439 +469 640 +640 360 +640 478 +640 480 +640 480 +640 430 +640 480 +640 480 +640 480 +640 420 +500 375 +426 640 +427 640 +333 500 +480 640 +640 384 +640 426 +640 480 +640 443 +640 631 +640 458 +640 480 +500 331 +480 640 +640 426 +519 640 +640 436 +401 640 +480 640 +640 485 +640 414 +640 427 +640 427 +640 426 +640 480 +640 480 +500 375 +640 325 +494 640 +480 640 +441 640 +640 480 +640 511 +640 428 +640 426 +586 640 +640 427 +640 427 +500 281 +640 480 +500 333 +640 428 +640 640 +640 425 +480 640 +500 333 +629 640 +426 640 +640 427 +544 408 +426 640 +640 427 +640 480 +375 500 +424 640 +428 640 +640 480 +431 640 +640 500 +640 480 +640 224 +374 500 +640 426 +500 343 +640 426 +640 480 +640 427 +480 640 +640 427 +480 640 +480 640 +640 480 +640 366 +444 640 +640 640 +640 480 +640 480 +423 640 +640 615 +640 480 +640 513 +427 640 +375 500 +640 429 +640 480 +500 375 +480 640 +500 371 +640 428 +500 333 +480 640 +612 612 +480 640 +427 640 +480 640 +640 427 +640 524 +640 480 +640 403 +640 429 +500 375 +640 480 +640 427 +640 414 +500 375 +640 480 +640 480 +640 480 +640 480 +400 600 +640 428 +427 640 +427 640 +427 640 +480 640 +500 375 +500 375 +375 500 +622 415 +480 640 +428 640 +640 366 +427 640 +480 640 +500 375 +640 480 +640 480 +500 375 +640 426 +640 425 +640 480 +640 480 +640 427 +640 480 +359 640 +427 640 +500 440 +427 640 +640 425 +427 640 +500 375 +640 480 +640 453 +500 375 +640 400 +640 427 +640 480 +480 640 +640 480 +640 435 +640 478 +480 640 +500 333 +640 480 +640 480 +640 480 +640 366 +640 480 +640 481 +640 427 +640 426 +640 480 +480 640 +500 333 +480 640 +640 480 +640 428 +640 218 +640 427 +500 333 +500 334 +640 427 +640 640 +480 640 +427 640 +640 481 +640 478 +640 426 +640 427 +640 425 +640 427 +333 500 +612 612 +640 480 +640 427 +640 491 +640 478 +640 360 +473 640 +612 612 +640 428 +640 427 +640 480 +640 426 +500 375 +500 375 +640 427 +640 480 +427 640 +640 480 +640 426 +350 500 +500 308 +640 608 +640 503 +640 480 +640 480 +500 375 +640 480 +640 480 +500 375 +416 640 +640 427 +612 612 +389 500 +480 640 +640 426 +640 424 +363 485 +640 549 +640 427 +500 337 +640 479 +640 426 +500 375 +640 427 +640 480 +640 426 +490 640 +640 427 +640 480 +640 427 +640 425 +465 640 +640 480 +500 334 +640 424 +640 426 +640 424 +640 479 +375 500 +640 427 +640 480 +428 640 +500 333 +640 480 +640 480 +640 480 +640 361 +640 425 +500 333 +640 480 +640 459 +640 403 +640 480 +640 480 +363 640 +500 374 +640 425 +640 427 +600 399 +640 427 +500 333 +640 469 +640 427 +640 424 +640 446 +640 427 +640 480 +640 480 +640 427 +640 389 +500 351 +640 425 +604 453 +640 427 +428 640 +500 375 +640 428 +500 375 +640 480 +640 421 +640 360 +401 640 +640 425 +640 426 +612 612 +640 480 +640 480 +375 500 +428 640 +640 426 +640 479 +640 427 +361 640 +427 640 +480 640 +640 480 +640 480 +640 459 +500 375 +640 426 +640 480 +426 640 +640 480 +640 480 +640 424 +640 480 +640 614 +640 480 +640 359 +640 427 +480 640 +640 480 +640 480 +640 427 +500 333 +375 500 +481 640 +640 480 +480 640 +500 375 +640 512 +640 480 +455 552 +640 427 +640 480 +640 427 +640 460 +640 480 +640 426 +640 301 +480 640 +478 640 +427 640 +640 441 +640 480 +612 612 +640 430 +640 480 +640 480 +640 480 +640 427 +640 426 +640 528 +640 320 +480 640 +640 564 +640 640 +640 480 +500 375 +431 640 +500 375 +428 640 +500 375 +354 500 +640 383 +480 640 +640 439 +640 480 +640 627 +640 427 +500 338 +480 640 +640 406 +640 480 +561 640 +640 480 +375 500 +640 480 +427 640 +640 480 +640 480 +640 401 +640 480 +640 435 +640 602 +640 480 +640 640 +640 480 +640 427 +500 489 +640 480 +640 424 +640 480 +640 457 +640 480 +640 480 +640 480 +500 375 +640 426 +640 478 +480 640 +427 640 +640 480 +640 480 +640 480 +640 378 +640 480 +640 480 +480 640 +427 640 +640 451 +640 631 +500 338 +640 480 +640 447 +500 333 +640 425 +640 426 +640 480 +428 640 +640 480 +640 479 +426 640 +640 427 +500 415 +438 640 +640 480 +640 468 +640 426 +640 480 +640 432 +640 425 +640 480 +428 640 +640 427 +640 426 +270 500 +640 480 +478 640 +640 467 +640 426 +500 372 +640 426 +480 640 +409 500 +640 480 +640 481 +640 480 +640 425 +640 427 +640 480 +640 480 +612 612 +493 640 +640 416 +640 480 +640 427 +640 427 +640 480 +427 640 +500 375 +640 426 +640 480 +640 480 +640 427 +480 640 +640 640 +640 425 +640 480 +640 480 +480 640 +640 427 +480 640 +480 640 +640 427 +415 640 +640 427 +640 427 +640 427 +640 480 +500 375 +640 425 +640 428 +480 640 +640 427 +640 424 +640 491 +640 424 +333 500 +640 480 +640 425 +640 427 +640 427 +500 375 +640 424 +640 425 +640 427 +640 640 +640 480 +500 375 +425 640 +640 480 +640 425 +500 305 +500 375 +640 480 +640 480 +320 240 +640 387 +640 480 +640 480 +640 480 +612 612 +640 480 +500 375 +272 500 +640 426 +640 512 +640 512 +640 480 +640 428 +480 640 +640 458 +640 360 +640 427 +640 480 +640 426 +640 427 +640 480 +640 427 +500 375 +500 332 +478 640 +640 298 +425 640 +481 640 +640 333 +640 480 +640 480 +640 244 +500 281 +640 376 +640 640 +640 480 +612 612 +640 426 +500 323 +508 640 +427 640 +480 640 +640 427 +640 427 +424 640 +500 334 +640 425 +640 476 +612 612 +433 640 +480 640 +640 480 +640 406 +568 640 +640 427 +346 500 +500 332 +500 333 +640 493 +473 640 +640 480 +640 513 +640 425 +640 427 +640 424 +480 640 +640 428 +640 426 +640 480 +640 427 +640 424 +640 428 +640 426 +640 480 +640 480 +640 427 +500 375 +639 640 +512 640 +612 612 +640 480 +640 480 +480 640 +429 640 +640 546 +640 480 +480 640 +640 424 +424 640 +332 500 +640 459 +640 480 +500 333 +640 425 +427 640 +640 427 +640 480 +640 427 +640 480 +640 480 +472 322 +640 424 +478 640 +640 431 +640 323 +640 427 +500 375 +480 640 +640 401 +480 640 +333 500 +640 480 +633 640 +427 640 +640 640 +640 480 +640 427 +500 411 +640 427 +500 353 +640 480 +640 480 +359 640 +640 427 +426 640 +482 640 +640 427 +427 640 +375 500 +500 375 +640 480 +427 640 +640 428 +640 481 +640 480 +640 427 +640 426 +500 375 +640 427 +428 640 +640 480 +640 480 +375 500 +640 427 +640 408 +500 400 +640 480 +640 449 +375 500 +453 640 +424 640 +640 427 +640 428 +640 480 +640 480 +640 480 +640 426 +640 425 +427 640 +640 459 +640 424 +612 612 +640 480 +640 427 +640 427 +640 427 +640 480 +640 427 +640 457 +640 480 +500 428 +429 640 +640 438 +640 427 +640 480 +426 640 +500 375 +640 384 +500 333 +500 281 +640 426 +640 431 +426 640 +500 375 +481 640 +640 480 +640 480 +640 480 +640 456 +426 640 +640 480 +640 396 +450 338 +495 640 +640 435 +500 408 +404 640 +640 427 +500 375 +476 640 +640 480 +640 427 +640 480 +640 480 +640 393 +640 480 +640 480 +640 480 +375 500 +495 533 +480 640 +480 640 +500 295 +480 640 +612 612 +640 478 +640 426 +612 612 +426 640 +640 480 +640 480 +640 427 +640 428 +640 486 +640 426 +640 481 +640 427 +640 426 +640 427 +640 428 +600 400 +640 409 +640 424 +640 426 +640 367 +640 480 +640 426 +612 612 +480 640 +640 480 +480 640 +640 480 +640 427 +640 427 +426 640 +640 427 +480 640 +640 426 +426 640 +640 427 +640 426 +500 375 +333 500 +612 612 +640 424 +640 480 +640 509 +640 427 +640 427 +500 239 +640 426 +640 427 +379 446 +640 427 +640 426 +640 478 +640 480 +427 640 +640 480 +627 640 +640 480 +500 375 +427 640 +640 478 +640 427 +612 612 +640 640 +500 356 +480 640 +640 427 +514 640 +640 458 +500 335 +640 480 +640 480 +640 516 +640 428 +640 427 +512 640 +333 500 +500 257 +640 360 +640 480 +640 480 +640 480 +375 500 +640 480 +427 640 +500 375 +640 427 +640 480 +480 640 +640 504 +480 640 +640 480 +427 640 +427 640 +640 480 +500 375 +500 333 +640 426 +640 257 +640 433 +500 333 +640 427 +640 360 +640 426 +640 427 +459 640 +640 296 +640 419 +360 640 +640 480 +480 640 +424 640 +375 500 +500 375 +428 640 +640 427 +640 428 +612 612 +480 640 +500 281 +640 349 +640 378 +640 480 +640 439 +427 640 +600 600 +480 640 +500 333 +427 640 +640 427 +640 427 +640 427 +640 453 +640 427 +640 427 +640 480 +640 427 +500 375 +640 480 +640 427 +640 425 +640 389 +640 480 +480 640 +640 480 +640 480 +640 480 +640 427 +640 516 +640 424 +640 480 +640 428 +480 640 +612 612 +640 477 +500 375 +480 640 +640 428 +480 640 +640 427 +375 500 +640 360 +640 480 +640 426 +640 427 +640 425 +640 428 +640 480 +640 426 +500 408 +640 428 +640 480 +425 640 +500 471 +480 640 +640 480 +480 640 +640 480 +640 480 +640 427 +478 640 +640 427 +640 513 +500 365 +640 508 +480 640 +640 480 +425 640 +640 480 +640 640 +640 425 +520 520 +640 424 +640 480 +640 483 +640 424 +480 640 +640 480 +612 612 +640 427 +640 427 +640 468 +640 427 +500 332 +640 480 +640 427 +640 480 +480 640 +640 480 +640 480 +500 422 +640 424 +448 299 +640 480 +480 640 +480 640 +375 500 +500 375 +640 480 +640 427 +640 427 +640 427 +500 332 +640 427 +640 428 +500 375 +640 427 +500 375 +640 478 +640 429 +375 500 +640 640 +427 640 +640 518 +640 428 +640 480 +480 640 +640 480 +480 640 +640 286 +640 466 +424 640 +640 480 +640 480 +424 640 +640 480 +500 332 +640 393 +640 427 +640 394 +640 471 +500 375 +500 390 +500 332 +640 640 +640 318 +640 427 +640 398 +480 640 +640 500 +425 640 +640 354 +640 480 +640 428 +640 478 +427 640 +500 492 +640 471 +640 427 +640 396 +640 427 +640 480 +612 612 +640 480 +500 375 +500 333 +640 427 +480 640 +640 426 +640 425 +640 427 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +480 640 +368 500 +375 500 +375 500 +640 428 +640 427 +640 427 +375 500 +640 480 +640 480 +640 590 +640 425 +482 640 +480 640 +640 424 +375 500 +640 360 +640 480 +480 640 +500 375 +520 640 +640 487 +425 640 +480 640 +640 463 +500 333 +500 375 +374 500 +482 500 +500 500 +640 441 +612 612 +640 480 +640 479 +640 323 +500 334 +526 640 +640 480 +427 640 +640 480 +640 427 +640 480 +640 424 +640 480 +640 444 +426 640 +640 574 +640 293 +640 480 +640 639 +640 427 +500 375 +640 427 +480 640 +640 360 +640 424 +640 480 +640 480 +640 427 +500 375 +480 640 +640 413 +640 428 +640 480 +640 428 +480 640 +640 480 +640 480 +640 428 +640 480 +427 640 +640 427 +480 640 +427 640 +478 640 +427 640 +612 612 +428 640 +640 480 +500 375 +480 640 +640 480 +640 480 +480 640 +640 480 +640 480 +630 379 +425 640 +640 439 +640 480 +480 640 +640 401 +500 500 +640 427 +428 640 +333 500 +640 463 +640 425 +640 433 +640 480 +640 480 +427 640 +428 640 +640 428 +425 640 +640 480 +423 640 +640 426 +500 333 +640 427 +500 375 +640 457 +480 640 +640 427 +426 640 +513 640 +640 426 +500 375 +640 397 +640 360 +426 640 +640 360 +640 427 +640 426 +640 422 +427 640 +640 480 +480 640 +640 478 +640 480 +640 426 +428 640 +640 480 +640 426 +477 640 +640 480 +640 427 +640 233 +640 426 +375 500 +500 333 +640 480 +640 426 +500 334 +500 375 +400 302 +500 332 +375 500 +640 284 +640 433 +500 332 +640 362 +640 480 +640 427 +640 480 +500 375 +640 480 +612 612 +426 640 +640 320 +640 424 +427 640 +640 480 +640 360 +427 640 +426 640 +640 426 +640 424 +640 427 +480 640 +640 480 +550 376 +640 480 +640 427 +640 428 +640 639 +640 640 +640 426 +480 640 +427 640 +640 428 +640 428 +640 480 +427 640 +480 640 +363 544 +640 480 +267 188 +500 375 +500 331 +500 334 +640 480 +640 428 +500 362 +476 640 +640 430 +640 480 +640 480 +640 433 +640 343 +406 500 +640 426 +500 375 +640 426 +640 480 +640 449 +320 240 +640 427 +500 375 +640 324 +640 428 +640 480 +500 452 +427 640 +500 500 +500 333 +640 480 +640 233 +640 427 +640 429 +417 640 +480 640 +450 381 +640 427 +640 421 +500 333 +640 640 +532 640 +456 640 +640 360 +640 480 +640 425 +640 480 +640 480 +640 606 +640 426 +640 426 +640 429 +640 428 +640 480 +480 640 +427 640 +640 480 +337 640 +640 426 +640 470 +640 427 +431 640 +640 640 +640 467 +470 640 +640 640 +480 640 +410 339 +427 640 +640 480 +640 447 +640 428 +480 640 +640 174 +612 612 +640 480 +640 360 +612 612 +640 428 +480 640 +375 500 +640 480 +640 424 +500 375 +600 400 +640 480 +640 426 +480 640 +640 281 +640 480 +500 375 +640 480 +640 400 +640 425 +640 480 +640 427 +640 429 +427 640 +640 446 +640 359 +612 612 +640 426 +427 640 +640 457 +640 427 +480 640 +426 640 +640 480 +576 396 +640 480 +640 427 +500 332 +640 393 +500 370 +640 426 +640 480 +640 427 +640 458 +640 480 +426 640 +500 314 +500 400 +640 426 +640 480 +640 427 +640 480 +600 410 +480 640 +640 480 +640 480 +640 426 +640 480 +500 375 +640 526 +640 427 +425 640 +640 482 +640 448 +640 480 +640 427 +640 480 +640 427 +640 426 +640 480 +500 357 +640 480 +640 360 +500 375 +640 480 +640 480 +640 364 +427 640 +640 427 +334 500 +640 427 +640 480 +500 375 +480 640 +478 640 +640 427 +640 480 +500 334 +640 480 +480 640 +640 425 +640 480 +640 425 +640 438 +640 425 +640 427 +640 480 +640 480 +375 500 +640 510 +450 600 +640 427 +375 500 +640 480 +480 640 +640 427 +640 480 +640 480 +248 640 +480 640 +640 427 +640 431 +640 480 +640 427 +416 640 +640 452 +640 640 +640 427 +640 480 +640 480 +478 640 +640 480 +372 500 +640 428 +640 427 +640 480 +640 480 +640 478 +640 640 +612 612 +500 375 +640 480 +640 478 +640 640 +640 473 +480 640 +640 427 +500 375 +640 480 +640 427 +640 640 +640 471 +640 480 +640 480 +480 640 +640 480 +640 486 +640 480 +640 391 +500 375 +426 640 +500 378 +640 428 +640 480 +640 480 +640 427 +480 640 +640 480 +640 456 +640 428 +500 333 +640 557 +640 457 +426 640 +640 480 +640 427 +640 476 +640 640 +640 491 +500 384 +640 403 +640 640 +640 439 +428 640 +640 480 +361 640 +612 612 +640 480 +481 640 +640 480 +565 640 +640 360 +640 426 +640 428 +640 429 +403 640 +640 480 +640 480 +640 427 +640 428 +640 425 +640 380 +640 426 +480 640 +640 480 +640 426 +640 480 +640 429 +548 640 +640 431 +500 375 +500 375 +640 474 +500 333 +480 640 +640 599 +480 640 +427 640 +640 428 +500 400 +500 375 +426 640 +427 640 +640 331 +480 640 +640 425 +640 480 +640 427 +500 333 +640 286 +500 333 +640 428 +375 500 +640 480 +417 640 +640 427 +640 480 +427 640 +640 480 +427 640 +640 426 +640 490 +640 427 +640 480 +336 448 +640 361 +640 360 +418 640 +480 640 +640 426 +500 375 +640 426 +305 229 +600 640 +426 640 +640 480 +640 480 +640 414 +640 427 +500 375 +500 446 +314 500 +640 480 +640 480 +640 480 +640 622 +480 640 +418 640 +428 640 +640 427 +500 352 +640 480 +640 480 +640 480 +640 359 +640 427 +640 566 +640 428 +640 426 +640 426 +640 425 +427 640 +612 612 +640 566 +640 427 +640 480 +640 480 +640 428 +480 640 +640 480 +640 429 +640 480 +429 640 +612 612 +640 424 +640 371 +495 640 +427 640 +640 640 +640 282 +640 427 +640 426 +500 335 +640 480 +480 640 +480 640 +500 376 +640 480 +425 640 +640 427 +500 333 +640 640 +332 500 +640 427 +640 527 +640 480 +640 426 +640 480 +640 419 +480 640 +640 238 +480 640 +640 480 +640 480 +640 480 +640 425 +640 427 +500 375 +425 640 +640 480 +478 640 +640 488 +640 480 +640 461 +374 500 +640 427 +640 427 +500 333 +612 612 +640 428 +426 640 +640 429 +640 427 +361 640 +428 640 +640 427 +640 427 +640 436 +640 293 +640 418 +640 480 +640 428 +640 480 +612 612 +612 612 +640 480 +426 640 +640 427 +500 375 +480 640 +640 640 +640 480 +427 640 +640 429 +640 427 +640 474 +427 640 +640 427 +640 426 +427 640 +414 640 +478 640 +640 480 +480 640 +640 427 +443 640 +640 480 +640 426 +500 334 +640 427 +640 480 +574 640 +480 640 +512 640 +640 480 +640 480 +640 464 +500 375 +640 428 +375 500 +640 480 +375 500 +640 480 +640 480 +640 434 +480 640 +612 612 +640 480 +640 426 +366 500 +480 640 +500 375 +640 425 +500 333 +640 479 +640 428 +640 480 +640 480 +640 360 +640 480 +640 427 +480 640 +640 480 +640 428 +640 427 +640 457 +481 640 +640 492 +480 640 +500 333 +597 455 +480 640 +354 500 +493 640 +640 480 +640 359 +640 480 +500 375 +640 480 +640 427 +500 375 +428 640 +640 360 +480 640 +640 427 +480 640 +640 480 +640 413 +427 640 +640 414 +640 384 +426 640 +640 389 +425 640 +640 427 +431 640 +640 427 +427 640 +640 427 +640 409 +426 640 +530 640 +640 390 +640 425 +640 427 +640 478 +415 324 +640 434 +427 640 +480 640 +426 640 +536 640 +640 427 +640 395 +640 427 +374 500 +640 426 +640 427 +176 144 +640 640 +640 354 +640 480 +500 343 +427 640 +640 426 +612 612 +640 425 +640 480 +375 500 +427 640 +640 480 +640 479 +640 360 +640 425 +640 425 +500 375 +640 480 +640 426 +640 427 +640 426 +480 640 +480 640 +640 480 +480 640 +640 428 +612 612 +425 640 +640 427 +640 359 +640 480 +640 431 +500 311 +640 480 +640 405 +428 640 +486 640 +640 480 +640 426 +375 500 +640 480 +640 427 +640 426 +427 640 +640 264 +500 375 +640 427 +640 425 +500 332 +640 427 +640 449 +640 399 +640 480 +640 480 +500 322 +639 640 +640 427 +640 480 +640 427 +480 640 +640 480 +640 426 +640 480 +640 360 +640 512 +640 424 +480 640 +640 425 +640 431 +480 640 +500 375 +500 334 +571 640 +480 640 +640 480 +612 612 +427 640 +359 640 +500 336 +640 427 +334 500 +500 375 +360 270 +500 375 +640 427 +640 457 +640 480 +480 640 +500 375 +612 612 +427 640 +388 640 +500 333 +640 480 +500 375 +640 438 +480 640 +480 640 +640 427 +640 480 +640 480 +480 640 +500 333 +640 479 +640 429 +500 375 +640 412 +640 480 +640 421 +640 480 +640 480 +480 640 +640 480 +640 480 +640 359 +640 366 +640 480 +427 640 +640 427 +640 426 +640 480 +480 640 +640 427 +640 378 +640 480 +640 480 +640 480 +640 428 +640 480 +480 640 +434 640 +640 413 +640 480 +640 480 +373 640 +640 428 +640 433 +500 375 +427 640 +640 480 +480 640 +640 503 +640 427 +640 480 +500 333 +640 429 +640 482 +460 640 +512 640 +612 612 +640 426 +640 480 +480 640 +640 278 +640 524 +640 479 +640 430 +640 480 +640 439 +375 500 +426 640 +640 428 +640 427 +480 640 +640 480 +640 480 +640 426 +640 512 +640 427 +640 480 +640 427 +640 424 +640 427 +640 427 +500 375 +640 480 +545 640 +637 640 +427 640 +427 640 +640 480 +426 640 +640 480 +408 640 +500 375 +640 480 +640 480 +480 640 +640 428 +640 640 +428 640 +640 480 +640 427 +640 480 +640 427 +640 483 +478 640 +640 480 +500 375 +612 612 +640 424 +436 640 +640 428 +640 480 +640 427 +612 612 +480 640 +383 640 +640 427 +500 334 +640 449 +640 427 +640 480 +640 427 +500 375 +500 375 +640 480 +640 478 +640 480 +427 640 +640 428 +640 480 +425 640 +640 480 +640 425 +612 612 +480 640 +640 360 +640 403 +427 640 +640 427 +612 612 +640 425 +640 480 +500 418 +640 480 +640 480 +640 351 +640 480 +640 480 +480 640 +500 375 +375 500 +640 480 +469 640 +640 425 +640 480 +640 623 +640 480 +640 427 +640 512 +480 640 +640 445 +359 239 +640 523 +640 427 +334 500 +640 425 +500 375 +640 427 +333 500 +640 359 +478 640 +500 375 +640 528 +640 426 +500 333 +640 480 +640 575 +480 640 +640 429 +640 580 +640 640 +640 480 +640 427 +640 480 +640 475 +640 480 +500 375 +640 480 +480 640 +640 426 +640 424 +640 480 +427 640 +500 362 +478 640 +480 640 +640 480 +640 480 +478 640 +640 414 +640 427 +500 343 +500 297 +640 428 +500 348 +640 480 +220 240 +640 425 +423 640 +640 425 +640 408 +640 411 +640 427 +640 437 +640 360 +640 385 +640 464 +640 480 +524 640 +640 480 +640 427 +500 333 +640 427 +640 431 +640 480 +640 427 +640 480 +640 480 +427 640 +640 438 +640 427 +640 480 +640 480 +480 640 +640 469 +640 428 +640 427 +640 428 +640 428 +426 639 +500 333 +640 480 +480 336 +334 500 +454 640 +500 375 +506 640 +640 640 +640 616 +640 480 +427 640 +640 468 +640 428 +640 423 +640 427 +427 640 +428 640 +400 500 +640 480 +640 427 +640 384 +640 348 +640 619 +357 500 +640 480 +640 428 +640 480 +500 405 +640 427 +441 500 +480 640 +640 480 +488 640 +500 375 +640 427 +432 324 +640 480 +640 503 +499 640 +640 480 +640 424 +612 612 +640 425 +640 427 +427 640 +640 435 +375 500 +495 640 +480 640 +424 640 +640 480 +600 400 +640 428 +640 427 +640 480 +640 480 +640 427 +417 640 +640 388 +640 425 +375 500 +481 640 +640 480 +640 427 +427 640 +500 332 +427 640 +640 504 +640 640 +500 375 +640 480 +640 427 +640 414 +480 640 +640 427 +640 480 +612 612 +640 487 +640 427 +640 429 +640 427 +400 640 +640 480 +640 480 +500 375 +478 640 +640 360 +640 418 +412 456 +640 425 +640 480 +640 427 +640 594 +640 409 +480 640 +640 428 +640 428 +640 480 +612 612 +640 427 +640 453 +640 480 +640 403 +500 400 +640 427 +640 480 +640 480 +640 480 +480 640 +500 375 +427 640 +500 375 +500 380 +612 612 +640 427 +640 400 +427 640 +640 426 +640 361 +640 433 +500 492 +640 427 +640 428 +640 427 +640 427 +640 424 +640 480 +640 457 +500 400 +640 425 +500 333 +640 628 +427 640 +640 427 +640 480 +640 427 +500 375 +640 427 +480 640 +640 426 +448 640 +640 480 +480 640 +640 480 +480 640 +640 480 +329 640 +480 640 +640 513 +640 457 +480 640 +640 360 +640 489 +640 466 +500 375 +640 480 +640 425 +640 427 +640 480 +640 480 +640 427 +427 640 +445 500 +640 549 +640 436 +640 554 +640 480 +480 640 +427 640 +389 640 +640 426 +428 640 +640 427 +640 454 +480 640 +640 640 +480 640 +640 480 +640 583 +640 425 +640 396 +500 375 +500 170 +640 427 +640 424 +640 428 +480 640 +640 480 +500 375 +500 313 +640 426 +640 457 +640 424 +640 427 +480 640 +640 427 +240 180 +640 480 +640 480 +640 427 +640 427 +375 500 +640 480 +329 500 +500 375 +640 478 +640 361 +480 640 +640 427 +640 480 +640 480 +500 375 +640 428 +640 427 +640 487 +640 480 +480 640 +640 427 +640 427 +640 480 +640 480 +500 333 +640 480 +425 640 +640 480 +640 467 +640 427 +640 427 +640 425 +640 480 +640 480 +640 426 +640 425 +480 640 +375 500 +640 373 +640 425 +500 375 +640 480 +500 423 +480 640 +640 426 +612 612 +640 480 +612 612 +375 500 +640 427 +640 640 +640 480 +500 375 +500 375 +375 500 +500 375 +640 454 +640 360 +478 640 +640 429 +575 640 +640 425 +640 424 +640 428 +562 640 +640 379 +240 320 +640 445 +422 640 +512 640 +640 426 +640 480 +429 640 +640 427 +480 640 +640 427 +640 425 +480 640 +480 640 +640 360 +640 427 +640 427 +640 293 +427 640 +640 427 +500 375 +640 426 +640 480 +455 500 +640 428 +640 301 +640 388 +640 427 +425 640 +500 375 +640 480 +640 480 +640 479 +480 640 +427 640 +640 448 +640 482 +453 640 +640 480 +471 640 +480 640 +640 480 +612 612 +640 426 +480 640 +480 640 +640 480 +640 429 +640 480 +640 393 +480 640 +640 429 +480 640 +427 640 +596 640 +640 428 +640 427 +427 640 +640 426 +333 500 +640 425 +640 428 +640 427 +640 480 +640 427 +640 480 +612 612 +640 480 +426 640 +426 640 +640 457 +500 352 +640 427 +612 612 +500 375 +640 428 +480 640 +640 360 +640 424 +640 427 +640 257 +480 640 +640 425 +640 427 +640 426 +500 333 +480 640 +640 480 +640 598 +640 480 +640 361 +480 640 +500 334 +640 453 +640 480 +640 428 +500 375 +640 243 +640 480 +640 427 +640 429 +500 375 +640 425 +640 427 +480 640 +640 428 +640 484 +640 480 +640 480 +640 480 +640 480 +427 640 +640 259 +493 640 +640 443 +640 427 +640 428 +640 480 +500 320 +640 480 +640 427 +500 243 +640 427 +640 427 +640 480 +640 428 +640 427 +500 375 +478 640 +480 640 +640 427 +640 427 +640 427 +427 640 +640 426 +640 480 +640 426 +640 480 +500 333 +500 375 +628 640 +485 640 +427 640 +451 640 +640 427 +612 612 +500 333 +631 640 +640 457 +480 640 +640 427 +640 427 +640 426 +500 400 +625 417 +375 500 +640 480 +480 640 +640 426 +640 430 +640 425 +640 480 +640 413 +640 512 +500 375 +478 640 +640 425 +640 469 +640 427 +640 480 +480 640 +480 640 +639 640 +640 427 +480 640 +375 500 +640 534 +640 495 +500 325 +640 427 +480 640 +500 375 +640 640 +640 427 +640 429 +640 389 +444 265 +640 480 +612 612 +640 480 +289 640 +480 640 +640 480 +640 435 +640 480 +640 530 +640 424 +640 424 +359 640 +640 427 +427 640 +426 640 +640 483 +640 427 +640 480 +640 429 +640 424 +500 375 +480 640 +640 427 +640 480 +640 480 +480 640 +427 640 +640 480 +640 426 +640 429 +640 480 +640 480 +640 428 +640 424 +640 480 +500 375 +500 375 +500 334 +473 640 +640 439 +640 426 +640 480 +333 500 +640 480 +555 640 +500 375 +640 427 +375 500 +478 500 +640 397 +640 480 +640 425 +640 427 +640 640 +640 425 +640 480 +425 640 +640 480 +640 480 +612 612 +480 640 +640 480 +640 428 +640 480 +640 427 +640 419 +439 640 +640 523 +640 370 +640 480 +435 640 +640 427 +375 500 +640 640 +480 640 +640 425 +375 500 +640 480 +640 480 +640 480 +480 640 +500 375 +640 480 +500 400 +640 480 +484 640 +640 423 +640 480 +640 427 +640 480 +640 481 +480 640 +427 640 +500 375 +640 426 +427 640 +612 612 +640 480 +640 640 +480 640 +480 640 +640 425 +500 392 +640 480 +640 427 +640 360 +640 428 +640 453 +480 640 +612 612 +640 480 +500 332 +640 366 +480 640 +480 640 +500 375 +640 480 +640 427 +480 640 +640 480 +480 640 +500 500 +640 427 +640 640 +640 547 +640 480 +640 480 +640 480 +640 426 +640 640 +640 428 +640 428 +640 499 +640 425 +640 480 +425 640 +500 356 +500 386 +640 351 +640 551 +640 423 +640 392 +640 427 +640 427 +640 425 +419 640 +640 426 +375 500 +612 612 +427 640 +640 426 +426 640 +427 640 +640 414 +640 426 +640 430 +505 640 +640 480 +640 425 +640 522 +640 427 +500 375 +640 480 +480 640 +640 424 +640 577 +640 434 +640 427 +640 428 +640 480 +612 612 +640 423 +500 333 +640 426 +427 640 +500 375 +640 436 +640 480 +640 487 +640 427 +480 640 +640 427 +640 480 +500 375 +640 427 +640 426 +612 612 +500 429 +426 640 +640 480 +640 480 +640 480 +640 428 +640 478 +640 427 +640 478 +428 640 +414 640 +600 402 +640 434 +640 480 +640 480 +640 370 +640 483 +640 480 +640 480 +640 427 +506 640 +500 375 +512 640 +426 640 +640 434 +640 281 +640 480 +640 360 +500 240 +640 386 +453 640 +640 425 +640 427 +359 640 +293 409 +500 375 +427 640 +500 375 +427 640 +424 640 +500 332 +640 360 +640 480 +640 427 +640 443 +640 480 +500 375 +427 640 +640 480 +513 640 +640 480 +640 429 +375 500 +595 640 +500 281 +500 375 +431 640 +480 640 +640 480 +640 533 +427 640 +419 640 +640 426 +640 480 +640 513 +640 440 +640 427 +640 428 +640 480 +500 333 +640 424 +480 640 +612 612 +500 375 +640 480 +640 425 +640 640 +640 640 +342 500 +640 424 +640 426 +640 428 +640 428 +480 640 +640 428 +500 375 +640 640 +640 480 +427 640 +640 426 +375 500 +426 640 +640 480 +640 640 +640 468 +480 640 +640 480 +640 480 +500 375 +640 480 +481 640 +640 480 +640 427 +640 427 +640 640 +640 428 +640 601 +640 443 +500 333 +427 640 +640 480 +612 612 +640 594 +375 500 +427 640 +640 478 +640 480 +640 427 +640 480 +640 428 +428 640 +640 457 +640 480 +375 500 +640 427 +428 640 +640 423 +475 435 +640 425 +640 322 +427 640 +529 640 +478 640 +612 612 +428 640 +640 480 +640 480 +640 480 +640 480 +500 375 +333 500 +480 640 +640 478 +240 320 +640 427 +640 427 +426 640 +453 640 +640 480 +375 500 +640 480 +640 480 +495 640 +427 640 +640 427 +500 375 +640 569 +640 427 +640 426 +640 425 +428 640 +640 427 +428 640 +640 360 +640 427 +612 612 +480 640 +500 354 +640 428 +640 426 +500 488 +640 480 +640 480 +640 480 +480 640 +640 360 +640 480 +500 375 +640 480 +640 424 +640 524 +640 480 +427 640 +640 427 +640 424 +296 640 +640 480 +500 375 +640 425 +500 373 +640 427 +338 640 +432 373 +612 612 +640 446 +640 331 +640 426 +640 480 +640 487 +506 640 +640 480 +640 425 +640 427 +640 497 +427 640 +640 476 +640 426 +640 480 +640 426 +640 426 +640 428 +640 492 +640 480 +480 640 +426 640 +480 640 +640 428 +640 478 +529 640 +640 480 +640 428 +640 480 +640 480 +640 428 +427 640 +640 619 +640 426 +480 640 +640 480 +640 396 +640 424 +640 480 +640 427 +640 427 +640 427 +640 426 +640 426 +478 640 +500 375 +640 480 +640 427 +640 391 +480 640 +640 480 +640 427 +443 640 +612 612 +640 529 +640 480 +640 480 +612 612 +640 480 +640 480 +640 308 +428 640 +640 427 +640 480 +640 480 +426 640 +640 455 +478 640 +375 500 +426 640 +427 640 +640 360 +640 480 +640 425 +640 480 +640 423 +640 427 +640 427 +320 240 +480 640 +640 423 +426 640 +640 520 +323 500 +480 640 +640 426 +612 612 +500 374 +640 427 +640 427 +640 360 +640 425 +640 480 +640 425 +640 426 +640 480 +500 375 +640 484 +426 640 +500 375 +640 480 +640 427 +640 430 +640 577 +428 640 +640 480 +425 640 +640 480 +640 428 +427 640 +640 448 +640 414 +640 480 +612 612 +518 640 +640 640 +640 481 +640 350 +640 480 +640 494 +424 640 +500 384 +424 640 +640 480 +500 216 +640 480 +500 375 +640 476 +640 480 +640 428 +640 480 +500 333 +427 640 +270 360 +640 480 +640 339 +640 426 +480 640 +612 612 +500 375 +500 375 +640 636 +640 480 +640 480 +480 640 +640 351 +640 480 +640 427 +640 480 +640 426 +480 640 +383 640 +640 480 +612 612 +640 428 +640 426 +640 511 +640 480 +640 480 +640 480 +427 640 +481 640 +424 640 +428 640 +640 476 +640 480 +375 500 +640 480 +640 459 +458 640 +640 398 +500 375 +478 640 +500 375 +500 500 +640 439 +640 426 +640 480 +640 427 +500 333 +640 366 +640 480 +640 427 +425 640 +640 640 +640 441 +640 427 +612 612 +566 640 +640 479 +640 427 +612 612 +493 640 +480 640 +500 499 +640 543 +640 427 +640 480 +640 427 +640 426 +335 500 +640 425 +640 420 +427 640 +612 612 +640 425 +640 428 +640 427 +501 640 +427 640 +640 480 +640 428 +640 427 +640 429 +427 640 +500 334 +500 332 +640 480 +640 426 +640 512 +640 491 +640 480 +640 401 +640 480 +640 428 +640 480 +424 640 +640 425 +640 426 +427 640 +640 480 +480 640 +640 640 +428 640 +640 429 +375 500 +640 446 +640 480 +427 640 +640 503 +640 345 +612 612 +640 426 +480 640 +640 374 +640 480 +480 640 +640 425 +640 480 +408 640 +640 427 +640 480 +640 433 +427 640 +564 640 +500 375 +500 333 +640 360 +640 639 +640 480 +500 375 +640 426 +640 425 +640 437 +640 427 +640 480 +640 480 +640 480 +500 375 +640 483 +640 424 +640 436 +500 375 +428 640 +500 375 +480 640 +427 640 +424 640 +640 360 +640 480 +480 640 +480 640 +640 480 +640 285 +500 375 +640 366 +640 429 +640 481 +640 480 +427 640 +640 480 +640 427 +640 424 +640 424 +640 427 +480 640 +604 453 +473 640 +640 480 +500 285 +480 640 +640 418 +640 425 +640 480 +529 640 +534 640 +640 339 +500 375 +640 416 +500 375 +640 480 +640 480 +640 425 +640 480 +640 480 +640 457 +640 424 +500 375 +480 640 +640 427 +500 333 +640 480 +640 480 +640 426 +640 457 +640 428 +640 424 +640 427 +640 421 +500 375 +612 612 +640 427 +640 427 +375 500 +640 435 +640 366 +495 640 +612 612 +512 640 +640 427 +500 375 +640 428 +640 480 +640 479 +500 375 +640 360 +334 500 +500 333 +640 471 +612 612 +640 425 +429 640 +427 640 +640 640 +427 640 +640 427 +640 428 +480 640 +640 428 +640 427 +640 316 +457 640 +320 240 +500 375 +612 612 +640 427 +500 393 +640 480 +640 480 +640 427 +640 480 +640 640 +640 441 +484 500 +640 474 +640 427 +640 427 +640 428 +640 458 +640 360 +468 640 +427 640 +640 425 +640 480 +500 333 +640 427 +640 427 +480 640 +640 480 +640 428 +640 428 +640 428 +640 480 +640 286 +480 640 +640 492 +640 480 +640 480 +640 425 +640 427 +270 360 +457 480 +640 480 +640 480 +500 375 +640 430 +640 480 +640 480 +500 333 +640 426 +500 334 +640 428 +640 427 +589 640 +640 426 +640 299 +427 640 +640 387 +640 427 +426 640 +640 427 +640 480 +640 426 +640 480 +640 406 +511 640 +640 448 +428 640 +500 377 +640 426 +480 640 +375 500 +640 427 +640 427 +640 480 +640 480 +640 427 +640 480 +500 513 +480 640 +427 640 +640 359 +640 395 +480 640 +426 640 +640 427 +359 640 +640 478 +640 406 +640 429 +640 480 +640 426 +640 427 +521 640 +400 400 +640 428 +480 640 +640 480 +640 512 +426 640 +478 640 +433 640 +429 640 +500 375 +640 426 +640 422 +640 480 +400 300 +640 426 +500 500 +640 359 +640 427 +640 478 +640 480 +640 427 +640 427 +500 375 +640 427 +500 375 +500 375 +640 358 +458 640 +480 640 +640 426 +640 480 +640 426 +401 640 +480 640 +640 480 +640 480 +500 375 +640 424 +640 480 +640 520 +640 360 +500 375 +640 427 +426 640 +640 427 +640 281 +500 375 +428 640 +640 426 +640 427 +640 480 +640 426 +640 525 +640 559 +640 458 +640 480 +480 640 +640 535 +640 480 +640 480 +640 493 +640 426 +640 427 +480 640 +375 500 +640 480 +640 480 +640 427 +480 640 +640 576 +640 425 +640 480 +427 640 +640 360 +640 433 +640 478 +426 640 +640 433 +640 406 +640 480 +640 427 +640 480 +640 480 +640 427 +500 375 +323 500 +640 427 +640 472 +375 500 +500 343 +640 483 +640 384 +424 640 +640 425 +424 640 +455 190 +640 427 +500 332 +480 640 +427 640 +640 424 +640 427 +640 480 +334 500 +427 640 +427 640 +426 640 +640 478 +640 425 +640 360 +640 427 +640 640 +640 360 +640 427 +640 427 +375 500 +640 471 +480 640 +640 275 +640 480 +640 480 +640 492 +640 376 +640 480 +640 426 +427 640 +640 480 +640 432 +640 469 +640 480 +640 427 +427 640 +375 500 +640 640 +640 428 +375 500 +596 640 +500 375 +500 330 +640 427 +640 480 +640 400 +480 640 +640 480 +640 480 +640 427 +640 480 +640 480 +337 500 +426 640 +640 425 +640 426 +478 640 +401 640 +640 427 +640 427 +480 640 +640 640 +480 640 +640 426 +640 480 +640 466 +480 640 +640 427 +383 640 +640 480 +640 640 +480 640 +640 480 +500 287 +500 375 +640 480 +640 427 +500 375 +640 478 +640 640 +640 416 +640 480 +640 427 +640 426 +324 500 +640 426 +640 428 +640 427 +640 480 +500 375 +640 480 +640 488 +640 335 +640 480 +612 612 +640 480 +640 314 +640 427 +424 640 +500 375 +640 397 +640 480 +500 375 +480 640 +500 375 +640 427 +640 480 +480 640 +500 263 +500 375 +500 375 +640 425 +640 480 +640 427 +375 500 +480 640 +500 333 +383 640 +640 391 +500 458 +640 427 +640 426 +480 640 +480 640 +640 480 +640 446 +500 375 +500 329 +640 480 +640 480 +612 612 +480 640 +431 640 +640 426 +480 640 +500 375 +640 480 +640 480 +640 426 +500 375 +640 480 +640 427 +500 375 +426 640 +640 480 +640 429 +500 375 +500 375 +640 480 +427 640 +480 640 +480 640 +640 481 +640 480 +500 375 +640 480 +332 500 +500 332 +500 500 +640 427 +640 480 +640 480 +333 500 +640 431 +640 424 +500 393 +640 480 +640 427 +640 480 +500 249 +640 512 +640 480 +640 425 +640 400 +640 427 +640 480 +640 480 +640 480 +640 427 +640 428 +427 640 +640 214 +640 640 +640 480 +500 333 +640 480 +640 439 +640 427 +480 640 +640 480 +640 424 +640 424 +640 480 +640 427 +480 640 +640 431 +640 425 +640 414 +480 640 +640 427 +640 428 +640 427 +640 426 +427 640 +480 640 +640 514 +375 500 +333 500 +640 457 +640 501 +640 427 +333 500 +640 360 +640 480 +425 640 +500 319 +640 361 +640 389 +640 325 +640 480 +500 344 +500 333 +397 640 +640 480 +480 640 +333 500 +640 326 +640 428 +640 477 +480 640 +640 426 +320 240 +640 426 +375 500 +640 400 +640 480 +640 338 +612 612 +640 427 +640 480 +640 640 +640 422 +640 428 +640 426 +640 640 +640 389 +640 425 +640 480 +640 480 +640 346 +480 640 +500 333 +640 428 +545 640 +400 500 +640 427 +640 480 +640 326 +480 640 +640 480 +640 425 +640 427 +640 427 +640 428 +333 500 +512 640 +409 640 +640 426 +640 425 +332 500 +640 480 +640 480 +640 361 +640 426 +640 478 +427 640 +360 270 +640 428 +478 640 +480 640 +640 427 +640 480 +480 640 +500 400 +410 555 +640 480 +333 500 +640 427 +640 480 +500 375 +640 480 +640 480 +428 640 +640 376 +640 480 +640 480 +479 640 +500 333 +640 480 +640 480 +428 640 +640 480 +640 478 +500 333 +640 480 +640 360 +640 426 +410 500 +500 375 +640 479 +480 640 +612 612 +640 425 +640 404 +612 612 +374 640 +500 375 +480 640 +427 640 +500 444 +426 640 +428 640 +640 427 +640 425 +640 479 +500 334 +500 375 +640 480 +640 359 +640 427 +480 640 +500 333 +425 640 +640 439 +640 480 +640 483 +480 640 +640 425 +640 481 +478 640 +427 640 +640 480 +500 333 +500 375 +640 640 +425 640 +500 375 +640 427 +500 333 +640 480 +640 426 +640 480 +640 640 +499 640 +480 640 +640 480 +480 640 +640 480 +640 427 +640 428 +640 548 +640 640 +500 375 +640 480 +640 426 +640 427 +500 169 +640 360 +640 480 +640 457 +480 640 +640 582 +640 480 +500 281 +640 425 +500 375 +640 480 +640 480 +640 480 +640 480 +640 480 +640 360 +333 500 +640 480 +457 640 +640 427 +640 407 +640 480 +640 480 +500 375 +500 329 +369 500 +640 480 +640 427 +426 640 +640 496 +640 427 +640 480 +475 405 +640 629 +640 426 +500 375 +640 427 +640 480 +640 335 +640 428 +640 512 +640 425 +612 612 +640 480 +640 480 +500 409 +640 412 +612 612 +640 427 +433 640 +640 427 +640 480 +640 474 +640 581 +500 482 +427 640 +640 427 +640 428 +379 500 +640 480 +482 500 +640 480 +640 480 +640 427 +500 323 +500 375 +426 640 +428 640 +640 480 +640 360 +640 427 +640 480 +640 480 +500 333 +640 640 +640 427 +640 480 +480 640 +640 427 +640 640 +640 417 +640 428 +640 429 +500 375 +500 375 +500 236 +428 640 +640 427 +500 375 +480 640 +640 427 +640 480 +640 480 +640 423 +640 427 +640 480 +640 424 +500 375 +426 640 +640 258 +640 516 +640 480 +640 480 +640 427 +640 480 +640 428 +500 375 +640 480 +640 480 +612 612 +640 426 +640 427 +640 286 +640 359 +500 375 +640 486 +480 640 +640 480 +640 402 +640 480 +427 640 +640 480 +640 486 +612 612 +640 480 +500 281 +333 500 +640 426 +640 480 +393 480 +333 500 +500 375 +640 480 +640 426 +640 411 +640 425 +640 426 +640 480 +640 480 +640 427 +400 500 +500 375 +640 429 +415 640 +640 480 +640 512 +640 425 +500 333 +500 263 +640 427 +480 640 +500 400 +640 611 +427 640 +640 480 +426 640 +375 500 +603 640 +428 640 +640 494 +640 480 +640 320 +640 480 +640 430 +500 333 +640 439 +640 480 +500 374 +640 426 +640 480 +500 250 +640 421 +640 480 +640 426 +480 640 +480 640 +640 455 +500 375 +640 640 +640 427 +375 500 +410 640 +334 500 +640 427 +640 480 +640 360 +480 640 +640 480 +480 640 +640 427 +640 480 +640 426 +500 375 +640 427 +640 426 +640 427 +459 258 +482 640 +640 480 +500 375 +640 480 +640 480 +427 640 +500 375 +640 360 +449 640 +480 640 +640 427 +640 428 +640 480 +640 480 +427 640 +640 427 +640 427 +640 453 +640 480 +480 640 +640 427 +640 427 +640 428 +640 464 +375 500 +480 640 +640 479 +640 473 +500 305 +480 640 +640 478 +640 480 +640 480 +640 480 +640 427 +640 426 +640 478 +426 640 +480 640 +500 333 +640 425 +640 468 +480 640 +333 500 +426 640 +640 478 +640 480 +640 427 +640 428 +640 480 +500 375 +640 429 +640 426 +576 640 +500 333 +640 419 +480 640 +640 480 +478 640 +640 396 +334 500 +640 480 +427 640 +467 640 +500 375 +640 427 +295 244 +640 640 +640 401 +427 640 +480 640 +640 478 +640 438 +640 427 +640 480 +640 448 +640 480 +640 426 +640 480 +500 375 +500 400 +500 332 +640 427 +640 427 +500 350 +640 412 +640 480 +640 524 +500 375 +500 333 +424 640 +640 480 +640 427 +640 480 +640 480 +480 640 +640 457 +426 640 +480 640 +640 480 +283 424 +426 640 +336 640 +640 480 +640 427 +500 342 +640 480 +640 480 +640 427 +640 606 +640 480 +640 478 +480 640 +427 640 +640 480 +640 360 +640 480 +640 427 +640 480 +640 426 +500 332 +375 500 +640 478 +427 640 +640 480 +640 480 +427 640 +640 461 +640 428 +640 429 +500 333 +481 640 +640 426 +640 408 +640 640 +480 640 +640 427 +640 480 +640 480 +640 481 +640 480 +500 375 +480 640 +640 427 +640 427 +640 427 +640 427 +500 375 +640 468 +640 480 +640 426 +640 548 +500 375 +640 425 +640 480 +640 480 +640 427 +640 426 +640 427 +567 640 +640 427 +640 457 +640 427 +600 354 +640 411 +640 620 +640 480 +640 480 +640 424 +469 640 +640 429 +640 480 +426 640 +359 640 +500 312 +640 480 +640 480 +640 427 +640 467 +640 586 +428 640 +640 427 +500 375 +427 640 +500 375 +500 375 +640 359 +640 493 +640 427 +500 375 +640 427 +298 500 +640 427 +640 541 +497 640 +375 500 +640 605 +640 451 +375 500 +500 375 +480 640 +640 480 +640 428 +640 480 +425 640 +640 478 +640 480 +640 483 +458 640 +640 541 +500 332 +500 281 +480 640 +426 640 +640 480 +427 640 +640 480 +640 427 +640 428 +640 480 +640 426 +480 640 +640 334 +640 400 +640 480 +640 426 +375 500 +640 480 +640 427 +640 428 +640 427 +640 480 +480 640 +640 640 +480 640 +480 640 +500 375 +640 480 +612 612 +640 480 +640 426 +512 640 +500 375 +427 640 +640 476 +640 480 +640 511 +640 360 +640 425 +640 480 +480 640 +640 448 +500 375 +640 480 +640 427 +640 425 +428 640 +640 640 +640 428 +521 421 +640 480 +640 640 +427 640 +500 400 +640 427 +500 375 +640 427 +640 457 +640 359 +640 430 +640 480 +500 375 +640 480 +640 427 +640 480 +640 425 +500 375 +528 640 +313 500 +600 400 +640 609 +640 480 +640 404 +640 480 +640 480 +640 424 +640 480 +640 427 +640 401 +500 375 +640 480 +490 640 +612 612 +640 427 +640 640 +640 480 +640 425 +480 640 +631 640 +500 333 +602 415 +640 512 +640 427 +640 480 +640 426 +640 480 +480 640 +640 480 +640 427 +640 403 +640 453 +640 480 +640 427 +640 480 +640 426 +426 640 +612 612 +640 480 +640 480 +640 480 +500 333 +640 640 +639 640 +612 612 +640 464 +640 480 +500 375 +405 500 +640 427 +640 512 +640 427 +480 640 +640 458 +640 428 +640 415 +480 640 +640 480 +427 640 +640 480 +430 500 +500 375 +640 480 +500 376 +640 304 +480 640 +500 375 +640 426 +640 480 +640 425 +480 640 +640 427 +428 640 +500 375 +500 500 +640 480 +640 419 +484 640 +640 480 +640 427 +640 480 +640 427 +640 480 +640 429 +500 319 +427 640 +500 375 +640 480 +358 640 +480 640 +500 375 +427 640 +640 359 +500 333 +448 299 +640 424 +612 612 +612 612 +640 426 +425 640 +344 500 +640 326 +640 513 +640 425 +640 640 +640 480 +640 427 +480 640 +500 336 +640 427 +640 480 +640 480 +640 427 +375 500 +640 429 +375 500 +513 640 +640 544 +640 480 +640 480 +640 432 +480 640 +333 500 +640 383 +500 375 +426 640 +640 480 +640 540 +640 480 +392 500 +480 640 +640 404 +640 640 +427 640 +640 480 +640 411 +640 499 +640 480 +640 480 +640 480 +640 427 +397 500 +427 640 +640 314 +500 360 +480 640 +640 409 +640 480 +640 480 +500 333 +478 640 +500 332 +640 427 +640 396 +640 480 +640 427 +640 427 +640 480 +428 640 +500 375 +640 428 +375 500 +640 504 +640 424 +629 640 +427 640 +500 375 +600 400 +640 425 +640 480 +426 640 +640 406 +640 480 +640 480 +640 480 +640 335 +480 640 +427 640 +500 375 +640 459 +612 612 +500 375 +480 640 +480 640 +640 480 +640 400 +429 640 +640 428 +640 480 +640 432 +640 426 +528 640 +640 426 +500 375 +640 480 +640 430 +640 478 +640 480 +640 427 +640 480 +426 640 +500 375 +640 488 +640 427 +640 407 +425 640 +640 549 +500 375 +612 612 +640 444 +640 426 +640 480 +494 327 +640 428 +640 449 +500 397 +640 479 +640 480 +640 431 +640 360 +509 640 +640 480 +640 480 +512 640 +640 426 +640 509 +612 612 +640 427 +425 640 +640 480 +427 640 +640 480 +640 511 +640 480 +640 480 +640 425 +500 310 +640 480 +612 612 +500 335 +640 480 +640 480 +480 640 +640 480 +500 333 +427 640 +640 480 +459 500 +640 480 +640 480 +640 427 +640 427 +500 375 +640 425 +428 640 +640 639 +500 325 +640 427 +640 506 +640 458 +469 640 +640 484 +500 375 +375 500 +427 640 +425 640 +338 500 +640 427 +480 640 +640 574 +640 480 +640 480 +640 480 +640 426 +640 425 +640 427 +612 612 +480 640 +427 640 +640 480 +640 427 +400 600 +640 427 +640 640 +612 612 +640 427 +480 640 +640 480 +640 480 +640 480 +375 500 +500 338 +426 640 +500 375 +500 333 +640 427 +640 480 +640 427 +640 255 +640 480 +640 401 +640 513 +640 427 +640 640 +375 500 +640 429 +640 425 +500 333 +640 424 +640 480 +640 480 +640 480 +480 640 +375 500 +640 480 +500 333 +500 375 +375 500 +480 640 +640 480 +640 478 +480 640 +640 427 +480 640 +640 480 +640 427 +427 640 +427 640 +640 480 +427 640 +640 427 +500 375 +640 480 +480 640 +640 427 +500 400 +500 333 +640 426 +471 640 +640 480 +640 427 +480 640 +433 640 +590 640 +640 427 +494 500 +328 640 +640 480 +512 400 +612 612 +480 640 +480 640 +640 425 +640 480 +640 480 +425 640 +640 427 +640 424 +640 426 +640 514 +425 640 +640 479 +508 640 +500 333 +640 433 +640 425 +640 480 +640 360 +480 640 +640 429 +640 480 +640 426 +426 640 +640 480 +640 426 +640 480 +427 640 +640 455 +640 480 +500 400 +640 427 +640 480 +640 480 +500 375 +640 554 +334 500 +640 360 +426 640 +500 470 +640 427 +640 480 +480 640 +640 427 +500 334 +427 640 +640 383 +640 426 +640 480 +480 640 +437 640 +640 425 +640 480 +640 480 +640 427 +640 427 +640 480 +612 612 +640 360 +425 640 +426 640 +640 241 +640 480 +640 640 +427 640 +612 612 +640 429 +500 375 +500 375 +500 324 +640 456 +640 427 +640 424 +640 480 +375 500 +640 427 +640 480 +480 640 +640 572 +640 480 +480 640 +640 427 +640 427 +640 427 +640 480 +500 375 +640 480 +375 500 +640 426 +640 426 +375 500 +640 480 +640 401 +640 458 +481 640 +640 480 +640 640 +640 480 +640 480 +640 502 +427 640 +428 640 +427 640 +427 640 +640 427 +359 640 +640 425 +640 427 +457 640 +640 436 +640 434 +640 480 +335 500 +497 500 +425 640 +480 640 +425 640 +640 480 +640 425 +640 311 +640 426 +640 428 +640 640 +640 425 +640 427 +640 480 +640 388 +640 426 +640 481 +640 398 +640 427 +640 427 +640 480 +640 640 +640 428 +640 463 +640 425 +427 640 +500 500 +640 368 +500 331 +500 375 +640 426 +385 500 +500 358 +640 480 +640 480 +640 480 +480 640 +640 427 +500 304 +640 427 +500 333 +640 457 +500 500 +640 360 +432 640 +640 576 +640 480 +640 401 +640 480 +640 360 +640 480 +640 498 +500 333 +640 480 +640 480 +640 427 +640 487 +480 640 +640 428 +359 640 +640 432 +640 480 +640 427 +480 640 +640 480 +640 426 +640 480 +500 333 +476 640 +640 480 +640 424 +427 640 +640 285 +427 640 +472 640 +500 312 +480 640 +640 478 +640 480 +640 480 +640 481 +612 612 +640 480 +612 612 +640 478 +640 480 +360 640 +640 427 +640 427 +640 480 +361 500 +640 428 +640 426 +333 250 +640 640 +458 640 +640 480 +640 427 +640 478 +640 480 +640 427 +640 426 +640 427 +640 480 +640 426 +451 500 +640 512 +640 428 +640 480 +612 612 +480 640 +640 471 +640 428 +500 375 +640 480 +506 640 +640 479 +427 640 +500 375 +640 427 +640 509 +640 480 +612 612 +640 427 +640 480 +640 392 +500 375 +640 640 +640 480 +500 378 +500 375 +500 375 +427 640 +640 427 +640 480 +640 446 +640 504 +640 480 +640 480 +478 640 +640 429 +640 424 +640 439 +640 480 +640 480 +640 427 +640 631 +427 640 +480 640 +640 480 +425 640 +640 426 +640 360 +640 424 +469 640 +640 426 +640 427 +640 425 +500 375 +500 373 +640 405 +640 481 +480 640 +640 480 +500 284 +640 480 +640 427 +640 480 +640 480 +480 640 +640 427 +426 640 +480 640 +640 480 +640 480 +427 640 +640 427 +640 523 +640 427 +640 480 +640 512 +640 427 +500 375 +640 480 +640 427 +480 640 +640 434 +640 399 +500 333 +640 480 +640 426 +640 480 +640 474 +640 493 +640 480 +568 640 +500 334 +640 480 +640 480 +640 459 +500 400 +640 480 +500 333 +640 430 +640 427 +640 478 +640 480 +640 433 +481 640 +640 367 +640 427 +612 612 +500 374 +640 480 +375 500 +550 365 +640 429 +500 333 +480 640 +640 640 +640 480 +640 480 +640 427 +640 480 +383 640 +640 427 +640 301 +427 640 +640 427 +640 425 +300 400 +480 640 +500 333 +518 640 +420 640 +480 640 +428 640 +333 500 +640 360 +500 333 +480 640 +471 640 +640 427 +640 480 +480 640 +640 480 +640 425 +640 480 +640 480 +640 425 +480 640 +640 474 +500 335 +640 480 +640 480 +640 360 +500 375 +640 478 +640 398 +500 375 +640 480 +640 428 +500 375 +500 375 +466 640 +458 640 +640 480 +640 477 +640 489 +375 500 +640 640 +480 640 +612 612 +640 480 +640 427 +640 350 +500 375 +640 480 +298 640 +480 640 +640 427 +480 640 +640 426 +640 480 +640 480 +640 480 +640 480 +640 427 +500 375 +478 640 +640 425 +640 472 +640 409 +375 500 +480 640 +640 425 +400 600 +640 480 +640 480 +480 640 +640 361 +426 640 +427 640 +447 640 +425 640 +640 426 +500 375 +640 427 +640 483 +480 640 +640 480 +640 480 +427 640 +640 480 +640 640 +640 427 +640 480 +640 427 +640 353 +640 640 +640 480 +374 500 +640 426 +384 640 +640 480 +480 640 +375 500 +375 500 +500 375 +640 480 +640 480 +640 428 +640 480 +640 429 +640 457 +640 424 +480 640 +640 480 +480 640 +640 626 +640 427 +640 480 +640 480 +458 640 +480 640 +500 398 +640 428 +640 425 +640 429 +640 427 +427 640 +512 640 +640 640 +640 426 +640 478 +458 640 +640 480 +640 480 +426 640 +640 480 +640 480 +500 281 +640 640 +640 427 +478 640 +640 426 +640 426 +640 458 +640 427 +500 356 +640 429 +473 640 +640 526 +640 480 +500 377 +640 426 +640 480 +640 480 +640 304 +640 480 +640 426 +640 427 +640 434 +426 640 +640 480 +480 640 +640 480 +640 428 +640 480 +500 382 +500 333 +375 500 +640 427 +640 427 +640 427 +640 480 +640 426 +480 640 +640 361 +640 474 +473 640 +427 640 +500 332 +640 427 +640 424 +640 480 +640 480 +343 500 +425 640 +640 480 +500 375 +640 427 +640 427 +500 373 +640 427 +427 640 +640 480 +508 640 +640 480 +640 480 +500 375 +640 426 +640 640 +640 400 +480 640 +547 640 +640 426 +640 427 +517 640 +375 500 +640 426 +640 325 +640 480 +640 426 +640 427 +640 558 +640 640 +640 520 +640 480 +640 480 +640 427 +640 401 +640 426 +640 412 +640 427 +640 425 +640 427 +500 375 +426 640 +491 640 +480 640 +640 428 +480 640 +640 480 +640 294 +480 640 +640 502 +640 427 +640 427 +640 640 +425 640 +640 480 +640 495 +640 426 +416 640 +640 426 +640 427 +640 359 +640 425 +427 640 +640 480 +640 427 +427 640 +612 612 +640 428 +640 361 +640 480 +640 427 +480 640 +640 426 +640 480 +478 640 +640 480 +426 640 +640 480 +640 482 +640 428 +361 640 +427 640 +640 480 +375 500 +640 427 +640 427 +500 329 +480 640 +555 640 +500 400 +516 520 +640 480 +640 427 +640 426 +480 640 +427 640 +640 428 +640 620 +500 375 +640 480 +480 640 +480 640 +427 640 +480 640 +500 375 +640 480 +640 427 +640 480 +480 640 +612 612 +640 480 +427 640 +426 640 +427 640 +426 640 +640 427 +640 450 +480 640 +640 426 +640 426 +597 640 +640 439 +375 500 +640 360 +500 393 +424 640 +640 427 +640 427 +513 640 +424 640 +480 640 +640 427 +640 427 +640 480 +333 500 +640 360 +640 480 +640 480 +640 480 +640 480 +640 427 +640 480 +640 480 +640 425 +640 453 +480 640 +640 426 +640 480 +640 426 +640 481 +480 640 +640 427 +480 640 +640 480 +640 480 +640 480 +457 640 +640 404 +512 640 +640 360 +640 480 +480 640 +640 427 +426 640 +640 513 +640 479 +640 427 +640 480 +640 480 +480 640 +500 391 +640 424 +375 500 +459 640 +640 547 +500 334 +640 359 +480 640 +640 427 +640 425 +626 640 +640 427 +640 423 +640 464 +612 612 +640 425 +640 480 +640 426 +640 480 +500 375 +480 640 +640 480 +640 560 +640 427 +640 422 +612 612 +612 612 +480 640 +625 640 +640 480 +612 612 +640 480 +480 640 +427 640 +333 500 +640 427 +404 640 +640 480 +375 500 +438 640 +500 375 +500 336 +640 427 +640 456 +640 427 +640 426 +640 480 +640 427 +427 640 +640 480 +480 640 +640 428 +425 640 +500 375 +640 481 +640 427 +640 427 +640 195 +500 375 +480 640 +640 425 +640 480 +640 426 +427 640 +514 640 +640 427 +640 480 +640 427 +640 425 +640 427 +500 375 +639 426 +640 504 +640 480 +427 640 +500 375 +640 463 +480 640 +640 427 +640 428 +427 640 +640 480 +500 333 +640 480 +640 480 +500 375 +640 480 +640 426 +640 426 +640 427 +640 480 +640 426 +640 427 +409 640 +640 468 +640 428 +500 332 +640 480 +640 489 +640 480 +640 363 +640 427 +640 478 +640 480 +640 360 +375 500 +640 529 +427 640 +640 427 +640 426 +427 640 +640 480 +640 478 +640 428 +640 480 +640 426 +640 427 +640 480 +396 640 +640 471 +428 640 +600 400 +500 375 +640 480 +640 425 +424 640 +480 640 +640 426 +425 640 +480 640 +500 375 +480 640 +512 640 +640 428 +480 640 +640 426 +640 480 +640 640 +640 499 +640 400 +640 427 +640 427 +500 375 +640 427 +640 480 +640 480 +640 426 +640 480 +500 375 +640 623 +494 640 +640 403 +426 640 +425 640 +640 428 +640 480 +640 427 +640 430 +640 640 +640 480 +480 640 +640 426 +640 514 +428 640 +272 480 +640 428 +640 454 +504 314 +338 500 +500 375 +640 480 +500 375 +640 426 +640 298 +640 480 +500 322 +500 333 +640 436 +640 480 +500 375 +500 375 +612 612 +640 427 +640 433 +428 640 +427 640 +500 333 +640 409 +640 480 +640 480 +480 640 +640 428 +640 427 +480 640 +427 640 +640 429 +636 640 +640 427 +640 428 +640 640 +640 400 +640 480 +640 480 +640 517 +480 640 +640 480 +533 640 +480 640 +640 199 +426 640 +640 480 +640 608 +640 424 +640 371 +480 640 +640 427 +640 368 +500 375 +640 427 +500 334 +640 480 +640 480 +640 480 +640 389 +640 480 +640 480 +640 478 +640 426 +640 480 +640 480 +640 480 +480 640 +500 332 +640 515 +480 640 +640 435 +480 640 +640 426 +375 500 +480 640 +640 480 +425 640 +480 640 +640 480 +640 419 +640 425 +640 480 +480 640 +640 480 +500 333 +476 640 +500 400 +512 640 +640 338 +640 360 +480 640 +640 427 +480 640 +640 427 +640 480 +480 640 +640 480 +640 427 +612 612 +640 478 +427 640 +640 427 +640 426 +640 480 +640 426 +640 508 +640 427 +640 427 +640 480 +640 480 +640 428 +640 426 +480 640 +500 375 +427 640 +640 371 +425 640 +640 427 +640 427 +640 480 +480 640 +613 640 +640 480 +640 480 +500 375 +640 424 +427 640 +640 480 +640 480 +640 480 +640 640 +640 480 +640 479 +640 427 +331 500 +640 359 +640 494 +640 480 +640 640 +640 427 +500 375 +640 480 +640 640 +640 429 +458 640 +640 425 +640 640 +640 465 +640 480 +488 640 +640 480 +640 480 +640 394 +426 640 +640 426 +423 640 +640 480 +427 640 +640 433 +335 500 +640 480 +640 396 +640 373 +640 427 +640 480 +640 426 +640 486 +425 640 +640 428 +500 285 +480 640 +640 480 +640 480 +428 640 +427 640 +640 426 +640 480 +640 389 +500 375 +375 500 +640 426 +480 640 +640 480 +640 474 +480 640 +640 427 +480 640 +640 480 +449 640 +640 432 +640 427 +640 480 +640 468 +427 640 +640 427 +640 458 +640 427 +640 427 +383 640 +640 640 +640 373 +640 427 +640 480 +640 486 +640 480 +480 640 +640 480 +640 480 +640 426 +480 640 +640 427 +640 480 +640 425 +640 480 +500 251 +640 480 +416 640 +640 480 +640 480 +640 640 +640 428 +425 640 +640 480 +640 480 +640 427 +640 480 +640 427 +640 429 +640 426 +640 640 +427 640 +640 427 +640 427 +640 427 +414 640 +500 375 +640 416 +500 332 +640 393 +640 360 +640 480 +500 333 +640 425 +640 427 +640 426 +640 427 +500 375 +640 360 +500 333 +424 640 +640 427 +478 640 +478 640 +429 640 +480 640 +640 425 +500 375 +640 365 +640 480 +480 640 +375 500 +640 426 +640 480 +640 480 +640 427 +640 480 +640 425 +640 480 +640 427 +640 427 +640 480 +640 427 +640 427 +640 480 +640 448 +500 375 +426 640 +480 640 +428 640 +612 612 +640 421 +500 333 +640 491 +640 480 +640 360 +640 397 +640 426 +478 640 +480 640 +640 424 +640 427 +640 427 +640 480 +640 427 +640 427 +640 426 +640 426 +640 426 +640 480 +640 427 +640 480 +640 480 +332 500 +640 428 +480 640 +428 640 +427 640 +640 351 +508 640 +640 427 +640 480 +500 375 +640 480 +640 480 +640 425 +640 420 +640 480 +500 375 +640 480 +640 425 +418 500 +500 375 +640 474 +640 425 +640 427 +640 480 +336 640 +640 427 +640 478 +640 425 +640 503 +333 500 +640 427 +640 480 +640 480 +612 612 +480 640 +640 404 +640 427 +640 503 +640 360 +640 427 +640 480 +640 381 +640 339 +428 640 +427 640 +640 425 +640 480 +640 480 +640 427 +426 640 +640 409 +640 427 +640 519 +360 640 +375 500 +640 427 +640 427 +640 427 +640 508 +640 428 +640 423 +640 427 +640 386 +500 333 +640 366 +480 640 +640 480 +640 427 +640 427 +640 427 +640 509 +500 375 +500 375 +640 418 +375 500 +640 353 +640 426 +640 427 +640 480 +612 612 +640 480 +640 478 +526 640 +387 500 +640 480 +640 427 +640 427 +640 480 +640 427 +640 425 +640 480 +500 376 +640 480 +640 480 +500 316 +640 427 +640 480 +640 480 +427 640 +640 427 +480 640 +640 427 +612 612 +480 640 +640 640 +334 500 +427 640 +500 335 +640 428 +640 426 +640 478 +480 640 +426 640 +640 426 +640 426 +500 334 +640 480 +640 443 +500 375 +640 480 +640 427 +640 479 +640 424 +640 480 +427 640 +640 428 +640 480 +640 480 +640 480 +640 424 +500 281 +640 480 +640 426 +426 640 +500 332 +640 480 +640 424 +480 640 +640 360 +334 500 +333 500 +640 427 +640 480 +640 427 +640 427 +480 640 +640 297 +500 487 +427 640 +640 426 +480 640 +640 480 +554 312 +640 454 +640 361 +640 516 +480 640 +640 640 +500 350 +640 640 +640 425 +640 640 +480 640 +640 480 +640 640 +640 426 +640 480 +640 587 +640 425 +640 480 +427 640 +640 529 +640 429 +640 480 +640 428 +640 427 +640 480 +640 480 +500 339 +500 375 +500 375 +640 427 +640 480 +640 444 +500 335 +640 512 +640 426 +640 480 +500 375 +640 480 +480 640 +640 480 +612 612 +375 500 +480 640 +640 599 +640 480 +640 480 +500 375 +500 332 +640 382 +640 480 +640 480 +427 640 +500 471 +640 426 +640 480 +426 640 +640 427 +640 480 +640 480 +640 427 +640 427 +640 417 +413 622 +480 640 +428 640 +640 426 +640 366 +425 640 +500 375 +500 345 +640 373 +489 500 +640 389 +478 640 +640 494 +427 640 +640 426 +640 480 +444 640 +640 427 +640 426 +427 640 +384 640 +640 426 +459 640 +640 479 +640 572 +640 480 +640 480 +468 640 +640 431 +425 640 +640 428 +640 428 +480 500 +640 427 +427 640 +426 640 +640 427 +429 640 +640 428 +480 640 +640 427 +640 425 +500 375 +401 640 +640 425 +500 331 +640 480 +640 512 +640 361 +640 428 +640 427 +500 375 +427 640 +640 427 +640 480 +480 640 +427 640 +640 425 +640 361 +640 424 +427 640 +640 479 +640 427 +640 425 +640 427 +640 360 +640 424 +640 544 +640 427 +375 500 +640 480 +640 480 +500 375 +640 425 +640 426 +375 500 +640 454 +640 428 +640 360 +480 640 +640 480 +435 640 +500 375 +640 640 +640 479 +640 480 +640 379 +640 480 +478 640 +500 282 +640 480 +640 480 +640 480 +640 427 +640 480 +640 425 +426 640 +513 640 +640 431 +640 425 +640 480 +511 640 +640 429 +640 480 +500 375 +640 480 +640 394 +640 427 +425 640 +640 430 +640 480 +640 425 +640 480 +640 480 +640 457 +640 480 +333 500 +640 480 +640 427 +640 425 +640 428 +379 500 +640 480 +640 484 +427 640 +640 427 +640 418 +640 428 +640 482 +640 483 +500 283 +640 476 +640 480 +144 144 +640 360 +640 480 +480 640 +640 360 +480 640 +640 480 +640 480 +640 426 +426 640 +426 640 +640 480 +640 480 +640 604 +640 445 +640 480 +640 480 +640 313 +640 331 +640 375 +640 480 +612 612 +505 640 +424 640 +640 361 +640 421 +640 400 +640 480 +640 454 +640 427 +500 375 +506 640 +426 640 +500 375 +480 640 +479 322 +640 424 +480 640 +480 640 +640 349 +639 426 +427 640 +500 333 +640 480 +424 640 +425 640 +640 480 +593 391 +640 427 +640 508 +480 640 +640 400 +640 428 +640 360 +640 427 +640 428 +640 480 +640 426 +640 506 +500 357 +640 480 +640 480 +640 428 +640 427 +640 424 +640 428 +640 427 +640 422 +640 480 +640 480 +500 375 +640 425 +640 480 +640 480 +640 537 +640 427 +640 428 +640 428 +640 480 +318 500 +640 480 +480 640 +500 333 +640 427 +500 375 +640 480 +480 640 +500 333 +640 480 +640 427 +640 427 +500 375 +640 426 +640 426 +640 427 +500 348 +640 427 +640 426 +640 546 +640 427 +640 427 +640 480 +640 425 +500 407 +500 300 +640 512 +480 640 +640 480 +500 281 +640 435 +640 426 +640 427 +640 478 +640 383 +375 500 +640 480 +640 424 +480 640 +640 427 +640 480 +640 480 +640 473 +640 475 +600 450 +450 265 +500 457 +341 640 +640 480 +640 425 +640 427 +375 500 +480 640 +543 640 +640 480 +457 640 +640 480 +640 490 +640 478 +427 640 +640 554 +427 640 +427 640 +640 480 +640 454 +640 427 +500 283 +640 480 +640 415 +640 480 +640 486 +640 425 +640 427 +333 500 +473 640 +640 480 +480 640 +640 478 +480 640 +427 640 +640 480 +612 612 +640 480 +500 325 +640 421 +640 480 +640 427 +640 480 +640 427 +640 281 +359 640 +458 640 +640 518 +640 360 +612 612 +640 480 +640 480 +640 480 +640 449 +640 480 +640 480 +640 480 +426 640 +640 427 +500 375 +640 427 +640 426 +640 599 +640 480 +495 640 +640 480 +500 281 +480 640 +427 640 +640 427 +640 427 +640 359 +640 429 +640 480 +640 426 +480 640 +640 430 +640 478 +480 640 +482 640 +640 426 +500 375 +640 319 +500 375 +500 375 +640 480 +500 333 +640 427 +640 480 +640 480 +640 480 +640 480 +612 612 +640 480 +640 360 +640 425 +426 640 +640 480 +640 480 +429 640 +333 500 +640 427 +640 425 +640 480 +640 427 +640 427 +640 480 +640 424 +640 480 +500 341 +500 334 +640 480 +640 480 +640 426 +375 500 +640 427 +500 333 +640 480 +640 480 +338 500 +334 500 +640 427 +456 640 +500 375 +640 426 +426 640 +640 480 +480 640 +480 640 +500 332 +640 426 +640 427 +426 640 +480 640 +640 429 +640 480 +640 384 +640 427 +359 500 +640 384 +500 375 +444 295 +427 640 +640 429 +427 640 +500 374 +480 640 +423 640 +500 375 +640 480 +640 480 +640 360 +640 640 +640 449 +640 427 +640 480 +640 480 +640 360 +640 484 +640 480 +640 480 +640 428 +500 375 +511 640 +372 500 +640 480 +500 333 +640 427 +612 612 +640 400 +640 427 +426 640 +480 640 +640 480 +500 333 +640 427 +640 480 +640 421 +640 480 +425 640 +427 640 +640 428 +640 428 +640 480 +493 500 +640 427 +640 427 +640 480 +640 480 +640 480 +640 538 +640 427 +640 427 +640 478 +640 480 +640 480 +500 357 +640 480 +640 425 +640 426 +640 480 +500 375 +640 404 +375 500 +640 640 +640 426 +640 480 +480 640 +480 640 +640 426 +427 640 +640 480 +480 640 +423 640 +612 612 +640 446 +640 423 +640 480 +476 640 +640 511 +640 427 +640 480 +640 480 +640 480 +480 640 +640 480 +640 566 +427 640 +640 518 +640 427 +426 640 +480 640 +612 612 +480 640 +640 426 +480 640 +520 640 +333 500 +427 640 +640 431 +640 480 +640 427 +640 426 +500 375 +640 480 +640 428 +425 640 +640 427 +640 480 +640 427 +640 569 +640 480 +640 427 +500 334 +500 338 +640 428 +640 481 +640 428 +640 427 +640 427 +640 424 +640 427 +333 500 +640 555 +640 428 +640 427 +640 496 +640 427 +640 480 +640 427 +640 480 +480 640 +640 480 +349 500 +640 480 +640 425 +640 429 +640 480 +612 612 +375 500 +640 410 +640 480 +612 612 +500 375 +640 425 +640 427 +500 375 +500 375 +450 300 +640 480 +640 427 +480 640 +499 500 +480 640 +640 425 +640 379 +640 427 +640 640 +640 426 +480 640 +500 375 +640 480 +480 640 +640 480 +640 457 +612 612 +480 640 +640 415 +640 480 +476 640 +640 427 +333 500 +500 333 +640 480 +640 480 +612 612 +640 426 +513 640 +333 500 +375 500 +640 480 +640 415 +640 424 +529 640 +640 480 +500 375 +640 360 +640 427 +640 428 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +640 360 +383 640 +640 383 +640 419 +500 334 +640 457 +480 640 +400 300 +640 425 +640 480 +640 428 +500 375 +640 427 +640 480 +640 429 +640 425 +640 480 +640 480 +500 333 +500 365 +500 281 +334 500 +640 427 +428 640 +640 426 +640 427 +500 375 +640 426 +640 437 +640 484 +640 426 +640 427 +375 500 +375 500 +429 640 +640 480 +640 428 +640 480 +640 480 +374 500 +640 427 +640 480 +640 428 +587 391 +640 480 +640 480 +640 480 +640 428 +640 360 +500 375 +640 394 +375 500 +640 427 +500 374 +427 640 +640 424 +640 603 +640 480 +640 427 +640 480 +640 462 +500 375 +640 427 +500 356 +640 480 +640 425 +513 640 +640 427 +640 480 +640 478 +480 640 +640 436 +640 427 +640 480 +640 479 +640 480 +640 427 +640 480 +640 428 +640 360 +427 640 +480 640 +512 640 +640 480 +640 480 +640 422 +640 428 +413 640 +640 399 +640 426 +640 428 +333 500 +427 640 +427 640 +640 426 +434 640 +640 409 +640 480 +640 427 +333 500 +640 437 +640 512 +480 640 +480 640 +640 468 +640 427 +500 331 +480 640 +640 480 +640 478 +377 500 +333 500 +480 640 +428 640 +640 480 +640 237 +640 426 +640 480 +640 494 +640 426 +640 360 +640 360 +426 640 +601 601 +500 375 +480 640 +640 480 +446 640 +500 375 +640 480 +640 426 +640 427 +640 427 +500 375 +640 425 +640 427 +479 640 +612 612 +640 427 +640 427 +500 368 +640 313 +500 386 +640 523 +612 612 +480 640 +480 640 +640 453 +640 480 +640 480 +428 640 +480 640 +640 159 +640 426 +640 451 +640 427 +640 480 +426 640 +480 640 +500 333 +426 640 +640 427 +500 333 +427 640 +480 640 +640 427 +480 640 +457 640 +640 425 +640 427 +500 338 +640 480 +427 640 +612 612 +500 334 +640 451 +640 621 +640 461 +500 375 +640 480 +640 425 +640 428 +640 360 +640 519 +640 458 +640 416 +500 375 +500 375 +640 480 +640 425 +640 480 +612 612 +640 480 +428 640 +640 528 +640 427 +640 480 +640 480 +640 456 +640 480 +500 375 +640 427 +640 479 +612 612 +640 360 +500 375 +640 480 +640 480 +640 480 +640 480 +500 375 +640 480 +640 427 +640 480 +500 375 +600 600 +640 359 +640 426 +640 427 +640 456 +500 375 +443 640 +399 500 +640 498 +640 426 +375 500 +640 480 +426 640 +640 427 +640 455 +480 640 +500 375 +500 373 +429 640 +640 480 +640 360 +500 375 +480 640 +640 426 +640 427 +640 480 +331 500 +640 640 +640 429 +640 367 +640 427 +640 428 +500 335 +640 426 +500 375 +427 640 +640 424 +640 428 +640 640 +640 471 +640 479 +640 327 +640 427 +640 480 +640 425 +640 480 +640 427 +480 640 +640 413 +640 427 +640 433 +640 480 +640 480 +418 640 +640 463 +640 589 +427 640 +640 485 +640 426 +640 426 +448 443 +497 500 +640 427 +333 500 +640 428 +640 425 +640 480 +640 480 +640 480 +500 334 +640 480 +640 427 +640 427 +640 480 +640 480 +640 428 +640 480 +640 427 +640 480 +640 425 +640 480 +640 427 +640 480 +640 480 +480 640 +640 426 +640 426 +566 640 +640 425 +640 480 +640 424 +640 426 +640 336 +640 428 +640 427 +640 305 +640 423 +427 640 +480 640 +640 543 +500 334 +640 427 +640 428 +640 480 +500 500 +640 425 +500 289 +640 480 +640 480 +640 427 +640 480 +640 427 +600 400 +500 375 +640 425 +640 457 +640 480 +480 640 +640 427 +429 640 +500 375 +640 429 +640 426 +480 640 +480 640 +640 480 +480 640 +640 480 +640 480 +426 640 +640 426 +640 480 +640 483 +640 480 +640 428 +480 640 +480 640 +640 480 +640 480 +640 480 +640 426 +640 428 +640 480 +640 290 +640 480 +640 480 +640 512 +640 474 +640 427 +375 500 +640 480 +640 523 +640 427 +640 480 +640 480 +640 519 +500 373 +640 480 +640 480 +640 480 +640 439 +640 427 +640 383 +640 370 +480 640 +500 333 +640 427 +500 375 +640 480 +612 612 +640 426 +640 480 +640 428 +640 634 +640 480 +598 640 +640 480 +640 428 +640 469 +640 480 +571 640 +500 376 +640 378 +640 428 +375 500 +640 424 +480 640 +500 335 +640 445 +640 427 +640 480 +640 384 +640 425 +427 640 +640 480 +640 214 +640 427 +640 480 +640 426 +640 480 +640 426 +427 640 +640 480 +480 640 +640 478 +640 424 +454 640 +491 640 +500 318 +640 445 +338 500 +336 500 +640 427 +370 462 +640 480 +640 401 +640 425 +640 313 +640 480 +640 480 +480 640 +480 640 +640 429 +640 480 +640 399 +640 427 +640 480 +426 640 +640 480 +640 465 +500 340 +640 414 +480 640 +640 479 +640 480 +640 360 +640 480 +413 640 +640 414 +500 332 +375 500 +500 375 +640 427 +640 425 +500 336 +512 640 +375 500 +640 427 +425 640 +428 640 +640 480 +640 480 +500 375 +425 640 +640 480 +640 480 +640 480 +427 640 +640 428 +640 359 +332 500 +640 480 +427 640 +640 480 +640 426 +640 424 +640 619 +640 480 +424 640 +640 480 +640 425 +640 480 +640 444 +640 429 +640 426 +480 640 +640 480 +640 567 +427 640 +640 427 +612 612 +425 640 +640 480 +425 640 +640 427 +640 428 +478 640 +640 360 +640 427 +480 640 +500 375 +640 423 +640 480 +614 640 +490 350 +480 640 +640 427 +640 360 +479 640 +427 640 +640 423 +375 500 +640 480 +640 354 +640 480 +640 427 +352 640 +612 612 +500 334 +500 375 +500 421 +640 480 +640 498 +640 480 +640 429 +640 480 +640 427 +640 427 +612 612 +640 480 +500 332 +640 429 +453 640 +640 427 +478 640 +640 478 +640 427 +428 640 +640 508 +612 612 +640 426 +640 428 +640 480 +427 640 +640 426 +612 612 +480 640 +640 481 +500 375 +640 509 diff --git a/utils/datasets.py b/utils/datasets.py index 14708550..caa5b655 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -150,12 +150,17 @@ class LoadImagesAndLabels(Dataset): # for training/testing nb = bi[-1] + 1 # number of batches from PIL import Image - # Read image aspect ratios - iter = tqdm(self.img_files, desc='Reading image shapes') if n > 100 else self.img_files - s = np.array([Image.open(f).size for f in iter]) - ar = s[:, 1] / s[:, 0] # aspect ratio + # Read image shapes + sp = 'data' + os.sep + path.replace('.txt', '.shapes').split(os.sep)[-1] # shapefile path + if os.path.exists(sp): # read existing shapefile + with open(sp, 'r') as f: + s = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) + else: # no shapefile, so read shape using PIL and write shapefile for next time (faster) + s = np.array([Image.open(f).size for f in tqdm(self.img_files, desc='Reading image shapes')]) + np.savetxt(sp, s, fmt='%g') # Sort by aspect ratio + ar = s[:, 1] / s[:, 0] # aspect ratio i = ar.argsort() ar = ar[i] self.img_files = [self.img_files[i] for i in i] From b6c97b1aafa80c337259fd38b002cd4207b4ee72 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 5 May 2019 14:27:10 +0200 Subject: [PATCH 0809/2595] updates --- trainvalno5k.shapes | 117264 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117264 insertions(+) create mode 100644 trainvalno5k.shapes diff --git a/trainvalno5k.shapes b/trainvalno5k.shapes new file mode 100644 index 00000000..00123451 --- /dev/null +++ b/trainvalno5k.shapes @@ -0,0 +1,117264 @@ +640 480 +640 426 +640 428 +640 425 +481 640 +381 500 +640 488 +480 640 +640 426 +427 640 +500 375 +612 612 +640 425 +512 640 +640 480 +640 427 +640 427 +640 416 +640 480 +416 640 +640 481 +640 573 +480 640 +640 480 +640 428 +480 640 +427 640 +640 536 +640 480 +640 428 +640 424 +500 333 +591 640 +640 480 +640 426 +600 600 +640 427 +640 427 +640 480 +640 481 +640 427 +640 480 +640 480 +480 640 +480 640 +640 480 +446 640 +640 480 +640 611 +426 640 +640 480 +640 389 +427 640 +640 480 +640 480 +480 640 +640 480 +640 427 +500 495 +500 313 +640 480 +360 640 +427 640 +640 480 +640 480 +640 425 +640 484 +460 312 +423 640 +427 640 +640 513 +473 500 +640 426 +640 480 +640 248 +640 480 +640 480 +480 640 +640 446 +640 427 +427 640 +500 375 +640 427 +640 472 +640 425 +640 427 +640 427 +640 481 +480 640 +612 612 +640 480 +428 640 +500 333 +640 480 +640 457 +359 640 +640 480 +640 361 +426 640 +429 640 +640 427 +612 612 +640 422 +500 332 +640 360 +640 360 +640 393 +512 640 +640 480 +640 431 +640 575 +640 480 +640 427 +640 427 +460 640 +640 427 +612 612 +327 500 +640 512 +392 500 +612 612 +640 480 +500 375 +640 360 +480 640 +427 640 +640 480 +640 369 +480 640 +480 640 +480 640 +427 640 +640 480 +640 480 +640 427 +612 612 +640 419 +640 427 +640 428 +640 480 +640 480 +443 640 +640 532 +640 480 +424 640 +640 424 +640 453 +640 424 +427 640 +640 480 +640 480 +500 332 +500 274 +640 359 +640 480 +480 640 +480 640 +480 640 +640 435 +640 427 +640 463 +640 522 +640 335 +640 480 +640 480 +640 492 +426 640 +480 640 +640 428 +500 333 +480 640 +640 426 +640 482 +480 640 +518 600 +640 480 +480 640 +640 419 +640 498 +640 480 +427 640 +612 612 +500 374 +640 428 +640 463 +640 480 +640 480 +480 640 +640 427 +354 500 +640 480 +428 640 +640 428 +640 480 +640 428 +640 428 +600 464 +500 375 +640 427 +612 612 +424 640 +427 640 +427 640 +612 612 +640 480 +640 425 +640 480 +500 375 +640 480 +480 640 +640 480 +640 480 +640 427 +640 480 +500 337 +500 335 +640 258 +640 480 +640 425 +640 562 +500 419 +640 427 +333 500 +482 500 +640 427 +640 427 +612 612 +640 480 +640 480 +500 333 +640 640 +500 375 +640 518 +640 480 +640 425 +640 426 +640 494 +640 427 +640 480 +480 640 +500 375 +640 427 +640 424 +640 480 +640 480 +640 480 +640 278 +458 640 +640 430 +640 480 +500 500 +640 640 +375 500 +564 640 +640 480 +500 353 +640 413 +473 640 +640 480 +640 427 +500 375 +640 233 +550 640 +500 333 +640 427 +640 332 +640 425 +640 426 +640 544 +640 480 +640 453 +640 640 +480 252 +500 375 +640 480 +640 480 +640 480 +640 429 +640 426 +640 480 +640 480 +480 640 +640 425 +375 500 +640 480 +640 427 +640 428 +640 462 +640 480 +428 640 +640 427 +480 640 +427 640 +501 640 +482 640 +640 427 +500 333 +640 480 +500 299 +640 463 +640 480 +640 427 +640 480 +640 480 +640 480 +640 480 +375 500 +426 640 +500 333 +640 345 +640 480 +640 580 +640 480 +428 640 +640 427 +333 500 +640 480 +640 480 +640 626 +640 428 +640 427 +640 480 +640 427 +400 500 +640 427 +500 375 +640 478 +640 480 +640 480 +640 427 +640 427 +640 427 +640 480 +500 500 +640 427 +640 360 +637 640 +481 640 +427 640 +640 426 +427 640 +640 427 +640 428 +480 640 +640 454 +609 609 +425 640 +426 640 +424 640 +427 640 +640 480 +640 427 +332 500 +640 478 +427 640 +427 640 +427 640 +640 480 +640 427 +640 480 +640 427 +640 427 +427 640 +640 376 +640 443 +640 480 +640 429 +640 480 +640 428 +640 640 +640 323 +640 480 +320 240 +640 480 +511 640 +640 408 +640 480 +500 375 +640 480 +500 297 +549 640 +500 358 +536 640 +480 640 +640 480 +640 383 +640 427 +640 480 +640 428 +640 480 +640 480 +640 482 +640 426 +640 427 +640 427 +425 640 +500 492 +640 512 +426 640 +640 383 +612 612 +640 427 +640 423 +427 640 +640 463 +480 640 +640 426 +640 427 +640 512 +480 640 +640 427 +455 640 +424 640 +533 640 +640 519 +640 421 +500 375 +640 427 +640 427 +640 443 +640 459 +640 480 +640 480 +427 640 +434 640 +500 335 +640 368 +612 612 +640 427 +640 479 +640 427 +640 480 +640 429 +640 480 +482 640 +512 640 +640 448 +640 408 +640 480 +640 480 +640 480 +612 612 +640 426 +500 392 +640 427 +640 480 +640 426 +640 640 +640 512 +640 427 +427 640 +612 612 +640 427 +640 480 +640 505 +427 640 +427 640 +640 480 +500 316 +640 482 +362 500 +500 500 +640 569 +640 638 +640 427 +480 640 +427 640 +640 427 +640 480 +640 480 +640 480 +640 425 +480 640 +500 443 +640 480 +640 427 +640 480 +640 480 +640 480 +640 427 +640 480 +640 480 +640 427 +500 333 +400 500 +480 640 +640 480 +516 640 +640 480 +500 333 +640 409 +350 233 +640 374 +640 401 +386 500 +640 480 +640 425 +640 426 +640 480 +640 480 +640 480 +640 426 +640 480 +640 480 +640 480 +640 428 +640 554 +427 640 +640 426 +483 640 +640 480 +640 480 +640 429 +425 640 +640 133 +333 500 +640 424 +480 640 +640 480 +640 480 +640 480 +458 640 +428 640 +640 361 +370 640 +360 480 +640 386 +640 426 +640 480 +640 480 +640 427 +640 427 +640 480 +500 375 +640 427 +640 572 +640 481 +640 414 +612 612 +640 480 +640 457 +640 480 +640 480 +500 375 +428 640 +480 640 +640 480 +640 427 +640 480 +640 480 +640 428 +640 424 +640 376 +640 480 +640 480 +640 640 +640 478 +480 640 +640 480 +438 640 +480 640 +429 640 +640 438 +640 427 +640 427 +640 480 +640 480 +425 640 +640 506 +640 426 +640 480 +640 427 +427 640 +640 481 +640 480 +500 334 +640 426 +375 500 +640 480 +640 425 +640 425 +500 331 +640 512 +480 640 +640 480 +640 480 +640 427 +640 480 +640 480 +640 480 +640 480 +640 480 +640 360 +640 640 +640 458 +640 480 +640 507 +640 480 +640 480 +526 640 +427 640 +640 480 +640 480 +429 640 +640 480 +427 640 +500 375 +640 428 +640 640 +640 480 +640 415 +640 480 +640 480 +612 612 +427 640 +640 480 +640 480 +478 640 +640 480 +640 565 +480 640 +374 500 +500 331 +640 427 +424 640 +640 350 +640 424 +612 612 +640 427 +640 427 +640 427 +612 612 +640 472 +500 375 +640 480 +640 480 +480 640 +640 480 +640 426 +640 480 +375 500 +640 438 +640 480 +640 494 +640 426 +428 640 +640 480 +500 366 +640 480 +500 375 +640 480 +640 519 +640 426 +640 480 +480 640 +640 480 +640 425 +640 425 +640 478 +640 424 +480 640 +478 640 +640 480 +640 427 +640 444 +480 640 +640 481 +640 480 +640 385 +640 480 +427 640 +640 480 +640 360 +640 480 +640 569 +640 480 +640 426 +640 474 +425 640 +640 347 +375 500 +640 425 +640 640 +640 467 +640 427 +427 640 +427 640 +640 480 +640 413 +640 480 +640 425 +640 371 +585 640 +640 480 +400 317 +640 432 +640 427 +640 480 +640 480 +640 346 +640 427 +640 426 +640 471 +500 333 +640 438 +640 426 +640 480 +333 500 +640 480 +640 426 +640 480 +500 333 +640 427 +480 640 +500 375 +640 480 +640 427 +438 640 +640 427 +640 480 +640 482 +640 568 +640 640 +640 480 +500 375 +640 427 +640 425 +640 426 +640 428 +640 480 +612 612 +640 480 +640 427 +640 480 +640 426 +640 427 +640 361 +612 612 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +640 469 +396 500 +640 427 +640 480 +500 375 +640 425 +600 400 +640 427 +480 640 +375 500 +425 640 +427 640 +640 480 +640 427 +480 640 +640 361 +640 473 +480 640 +640 480 +640 433 +427 640 +640 467 +640 429 +640 431 +640 427 +640 478 +640 480 +500 333 +425 640 +640 425 +612 612 +640 427 +640 482 +500 363 +378 500 +640 480 +640 426 +640 427 +640 424 +640 427 +640 439 +640 427 +340 640 +640 480 +640 428 +640 427 +640 480 +419 640 +616 640 +640 423 +640 459 +500 467 +640 427 +640 640 +640 361 +640 640 +640 427 +640 438 +426 640 +620 640 +500 364 +640 480 +640 427 +640 443 +457 640 +640 478 +640 417 +640 640 +640 383 +640 390 +640 427 +640 426 +640 413 +640 480 +640 480 +500 369 +640 457 +640 480 +640 427 +375 500 +500 377 +640 480 +640 427 +427 640 +500 491 +640 480 +640 480 +612 612 +640 425 +640 428 +640 480 +640 503 +640 425 +500 333 +480 640 +480 640 +640 480 +500 333 +486 640 +640 427 +640 428 +375 500 +375 500 +640 425 +640 512 +640 427 +640 427 +480 640 +491 640 +640 427 +640 428 +640 427 +640 480 +427 640 +640 463 +427 640 +640 427 +333 500 +480 640 +640 480 +612 612 +480 640 +480 640 +640 426 +640 427 +640 427 +640 433 +640 480 +500 332 +612 612 +640 480 +640 480 +640 476 +640 388 +427 640 +640 353 +640 426 +428 640 +640 457 +640 424 +640 427 +475 500 +426 640 +640 640 +640 480 +640 480 +640 480 +500 471 +640 480 +640 480 +640 481 +480 640 +640 480 +428 640 +443 640 +640 426 +427 640 +640 427 +500 375 +425 640 +640 359 +640 406 +640 427 +500 328 +640 480 +640 426 +640 238 +640 429 +640 480 +640 473 +640 424 +640 383 +640 480 +480 640 +640 480 +640 426 +640 426 +640 322 +414 330 +640 425 +500 346 +640 226 +478 640 +612 612 +556 640 +500 333 +333 500 +640 426 +640 427 +640 427 +640 379 +426 640 +640 427 +427 640 +640 428 +640 480 +428 640 +500 375 +333 500 +640 427 +640 428 +640 426 +480 640 +640 427 +281 500 +500 375 +640 480 +476 640 +640 480 +612 612 +640 506 +640 427 +640 434 +640 480 +640 480 +480 640 +500 375 +640 426 +335 500 +375 500 +640 480 +429 640 +375 500 +640 442 +640 480 +480 640 +640 388 +640 427 +640 480 +640 427 +640 404 +427 640 +482 640 +640 424 +640 418 +500 498 +640 202 +640 426 +640 428 +640 495 +640 422 +640 428 +480 640 +640 427 +640 480 +640 480 +375 500 +640 441 +640 463 +640 480 +480 640 +424 640 +427 640 +640 425 +640 426 +400 500 +500 375 +640 427 +640 420 +640 469 +640 455 +640 480 +640 427 +640 480 +640 509 +480 640 +640 426 +640 418 +640 480 +640 427 +640 480 +640 503 +640 480 +640 426 +640 481 +640 427 +480 640 +640 427 +500 375 +640 480 +640 480 +640 360 +640 426 +480 640 +640 428 +640 480 +640 640 +326 500 +373 500 +425 640 +519 640 +500 375 +500 375 +640 478 +640 478 +500 375 +640 480 +640 472 +508 503 +640 427 +640 480 +512 640 +640 562 +500 375 +480 640 +640 480 +427 640 +640 411 +640 520 +640 480 +640 428 +431 500 +640 426 +424 640 +640 480 +640 480 +500 334 +640 427 +640 309 +480 640 +427 640 +640 442 +480 640 +640 428 +640 410 +640 428 +640 480 +480 640 +640 427 +385 640 +427 640 +480 640 +488 640 +480 640 +500 339 +640 454 +612 612 +640 353 +380 472 +480 640 +640 448 +640 449 +640 640 +375 500 +640 480 +427 640 +480 640 +500 375 +640 435 +640 480 +640 480 +591 400 +640 427 +640 425 +640 424 +424 640 +640 427 +640 411 +640 427 +640 480 +640 427 +426 640 +500 375 +640 501 +640 428 +426 640 +640 480 +640 480 +640 427 +479 640 +640 427 +640 424 +500 375 +427 640 +427 640 +640 480 +500 375 +500 375 +640 461 +424 640 +640 640 +640 426 +640 480 +427 640 +640 480 +640 426 +640 425 +640 346 +480 640 +640 378 +478 640 +640 425 +426 640 +640 419 +640 480 +640 480 +640 480 +640 417 +640 427 +427 640 +640 427 +502 640 +480 640 +640 343 +640 480 +640 637 +500 376 +640 393 +490 490 +500 375 +640 426 +427 640 +480 640 +500 435 +640 453 +640 427 +428 640 +640 480 +427 640 +640 422 +640 480 +640 480 +640 480 +640 428 +640 426 +640 480 +500 333 +424 640 +640 480 +640 430 +480 640 +640 481 +640 480 +480 640 +640 489 +470 313 +431 640 +640 360 +640 427 +500 371 +640 426 +640 480 +480 640 +427 640 +640 480 +425 640 +640 480 +640 480 +640 480 +640 427 +640 492 +500 375 +582 640 +640 427 +500 332 +428 640 +320 640 +640 480 +426 640 +425 640 +500 375 +320 480 +640 425 +640 425 +640 427 +640 424 +640 480 +597 398 +640 425 +640 431 +640 426 +612 612 +640 425 +640 427 +640 358 +640 427 +640 480 +640 429 +640 425 +640 427 +500 335 +500 251 +428 640 +640 356 +640 425 +640 427 +640 480 +640 427 +640 360 +640 415 +640 480 +604 453 +480 640 +500 287 +334 500 +640 428 +640 427 +640 480 +640 480 +375 500 +640 428 +480 640 +640 427 +640 425 +640 427 +640 480 +480 640 +500 375 +640 425 +480 640 +640 426 +640 480 +640 427 +640 480 +640 426 +640 458 +481 640 +640 480 +427 640 +640 427 +640 429 +425 640 +640 480 +640 480 +640 433 +500 410 +640 424 +640 480 +500 375 +500 333 +640 480 +640 428 +500 404 +640 427 +640 427 +640 425 +500 375 +640 425 +640 461 +640 480 +640 427 +427 640 +612 612 +640 427 +640 480 +333 500 +428 640 +640 426 +612 612 +640 391 +640 480 +351 490 +640 360 +640 480 +640 480 +640 480 +480 640 +480 640 +640 448 +640 427 +500 375 +640 480 +640 480 +640 480 +640 484 +640 425 +640 284 +640 480 +640 480 +442 500 +640 381 +640 480 +465 640 +429 640 +640 480 +500 334 +640 427 +423 640 +612 640 +640 480 +640 480 +500 332 +640 469 +426 640 +640 456 +640 425 +375 500 +640 273 +640 480 +333 500 +379 640 +422 640 +640 427 +332 500 +640 427 +500 375 +500 375 +640 427 +640 426 +500 375 +640 400 +640 360 +640 425 +500 400 +640 633 +480 640 +640 426 +640 480 +640 480 +640 426 +427 640 +640 469 +640 425 +640 480 +640 424 +500 500 +640 360 +640 436 +640 427 +316 640 +640 427 +640 427 +470 351 +640 480 +640 480 +640 502 +640 443 +500 333 +640 480 +640 480 +640 427 +640 360 +640 480 +375 500 +475 640 +640 427 +640 427 +640 427 +640 427 +640 426 +640 427 +640 468 +333 500 +427 640 +640 400 +640 427 +480 640 +640 480 +480 640 +478 640 +640 427 +640 480 +478 640 +640 424 +640 426 +640 416 +640 453 +640 480 +500 420 +640 480 +640 480 +640 426 +375 500 +500 349 +640 416 +640 427 +500 375 +427 640 +640 426 +640 480 +375 500 +640 426 +640 425 +612 612 +640 480 +640 480 +500 186 +640 480 +480 640 +640 427 +640 640 +478 640 +640 427 +480 639 +500 327 +640 428 +426 640 +640 360 +433 640 +427 640 +640 475 +478 640 +640 480 +640 470 +640 480 +500 334 +640 427 +640 427 +491 640 +640 480 +640 478 +623 640 +640 480 +491 640 +500 333 +640 426 +640 427 +640 427 +640 424 +640 423 +640 430 +500 333 +640 480 +640 354 +500 334 +640 479 +640 427 +640 360 +640 428 +375 500 +640 480 +640 480 +640 424 +640 427 +480 640 +640 480 +480 640 +640 424 +640 480 +640 480 +500 376 +640 357 +640 427 +640 426 +612 612 +640 425 +612 612 +640 480 +640 427 +640 512 +425 640 +640 640 +640 449 +640 480 +333 500 +500 443 +640 431 +640 425 +500 391 +640 458 +480 640 +471 640 +640 480 +640 479 +640 426 +640 426 +500 375 +640 480 +612 612 +640 480 +480 640 +500 371 +429 640 +426 640 +465 335 +640 384 +426 640 +473 500 +640 426 +640 433 +480 640 +640 480 +640 480 +640 442 +640 480 +640 437 +640 640 +427 640 +640 480 +640 426 +640 427 +640 423 +480 640 +640 448 +640 480 +640 426 +640 360 +640 480 +427 640 +640 427 +640 479 +640 480 +500 352 +640 478 +427 640 +640 480 +640 427 +640 482 +474 640 +640 480 +640 425 +640 367 +480 320 +640 480 +640 480 +640 427 +640 480 +640 425 +500 375 +500 195 +480 640 +432 500 +500 386 +640 427 +640 468 +427 640 +589 640 +640 480 +640 480 +480 640 +425 640 +640 427 +640 429 +640 425 +500 333 +640 427 +640 360 +426 640 +640 480 +640 480 +640 427 +640 354 +640 428 +640 480 +480 640 +612 612 +640 424 +424 640 +640 426 +500 289 +480 640 +612 612 +500 333 +640 360 +640 426 +500 375 +640 480 +427 640 +640 640 +640 427 +640 480 +640 428 +521 640 +640 480 +640 480 +640 427 +640 365 +640 510 +640 427 +480 640 +640 427 +640 360 +640 425 +640 480 +640 427 +640 487 +456 640 +640 480 +640 448 +640 425 +640 427 +427 640 +640 376 +640 427 +640 427 +640 426 +640 480 +640 427 +500 375 +612 612 +500 334 +640 480 +333 500 +640 640 +516 640 +500 375 +500 375 +375 500 +500 329 +612 612 +640 640 +480 640 +426 640 +500 375 +500 332 +640 480 +640 435 +640 427 +640 480 +640 426 +426 640 +640 428 +640 480 +334 500 +427 640 +640 428 +500 375 +489 640 +640 426 +612 612 +480 640 +480 640 +349 640 +640 480 +640 426 +478 640 +640 332 +640 544 +640 474 +396 312 +640 425 +640 480 +640 425 +640 480 +640 383 +513 640 +640 427 +500 375 +424 640 +375 500 +427 640 +640 480 +444 640 +500 375 +640 480 +640 480 +640 480 +480 640 +375 500 +640 427 +640 427 +640 480 +500 375 +425 640 +480 640 +640 428 +640 426 +480 640 +640 427 +480 640 +640 426 +424 640 +426 640 +640 427 +640 425 +333 500 +640 426 +640 427 +640 427 +480 640 +427 640 +640 368 +427 640 +640 480 +640 512 +640 480 +640 553 +640 480 +640 640 +640 360 +359 640 +344 500 +640 480 +640 640 +640 416 +375 500 +612 612 +640 427 +612 612 +640 398 +612 612 +640 480 +640 510 +612 612 +640 480 +640 480 +640 480 +640 427 +640 403 +427 640 +640 427 +480 640 +640 480 +427 640 +500 500 +426 640 +496 640 +375 500 +640 480 +640 480 +640 427 +640 424 +640 427 +640 480 +500 333 +640 480 +640 480 +640 427 +374 500 +457 640 +640 428 +640 427 +334 500 +335 500 +640 480 +640 480 +640 428 +332 500 +640 480 +640 480 +640 480 +500 375 +640 433 +640 427 +640 478 +640 507 +640 480 +640 480 +640 428 +640 480 +640 186 +333 500 +640 427 +640 480 +640 478 +640 421 +640 282 +375 500 +640 480 +480 640 +640 480 +640 480 +640 480 +480 640 +640 427 +640 427 +480 229 +640 426 +640 427 +451 640 +640 480 +500 375 +640 427 +491 500 +415 640 +427 640 +640 427 +375 500 +640 480 +640 427 +640 424 +640 427 +640 426 +640 427 +640 427 +640 425 +640 634 +640 360 +500 375 +640 480 +640 424 +640 426 +640 427 +640 483 +500 333 +634 640 +432 640 +640 480 +640 480 +427 640 +426 640 +640 427 +640 480 +375 500 +640 386 +640 425 +640 428 +640 428 +640 480 +640 426 +427 640 +640 428 +603 640 +640 427 +500 332 +480 640 +342 500 +640 496 +640 480 +612 612 +427 640 +500 448 +414 640 +459 640 +434 640 +640 473 +640 480 +640 480 +640 480 +500 375 +478 640 +640 480 +640 480 +640 480 +640 428 +450 640 +640 427 +640 511 +375 500 +500 375 +640 427 +640 640 +335 500 +640 359 +640 480 +640 480 +640 428 +640 425 +480 640 +426 640 +640 480 +640 565 +640 427 +640 480 +640 426 +640 381 +512 640 +484 640 +640 426 +640 640 +640 480 +481 640 +427 640 +640 596 +640 480 +640 428 +640 429 +640 427 +512 640 +480 640 +427 640 +375 500 +612 612 +640 480 +640 427 +640 360 +612 612 +478 640 +640 419 +640 429 +640 426 +640 480 +640 427 +640 451 +640 480 +480 640 +640 465 +640 480 +425 640 +436 640 +478 640 +640 426 +640 554 +640 480 +640 480 +500 391 +640 426 +640 427 +640 431 +427 640 +640 425 +640 426 +640 411 +480 640 +640 425 +465 640 +640 467 +640 427 +640 480 +510 640 +480 640 +640 422 +640 427 +640 388 +640 480 +640 480 +458 640 +640 480 +480 640 +640 480 +233 247 +640 480 +428 640 +640 427 +640 360 +424 640 +640 478 +640 380 +640 360 +640 425 +500 280 +480 640 +640 426 +640 426 +640 480 +640 480 +640 463 +640 352 +640 480 +427 640 +612 612 +640 426 +480 360 +640 480 +500 375 +640 425 +640 480 +427 640 +500 334 +500 377 +640 425 +500 392 +425 640 +500 334 +333 500 +640 480 +640 480 +640 408 +427 338 +502 640 +500 375 +640 427 +640 640 +640 414 +640 512 +640 427 +640 428 +640 409 +500 375 +500 375 +640 426 +640 478 +640 427 +640 480 +640 480 +640 403 +640 461 +640 503 +640 425 +640 425 +640 457 +425 640 +427 640 +375 500 +333 500 +480 640 +640 480 +640 426 +640 480 +640 448 +640 427 +640 427 +375 500 +640 427 +500 375 +640 427 +640 427 +640 480 +640 427 +428 640 +640 426 +640 480 +300 169 +512 640 +640 480 +640 426 +640 428 +640 480 +640 323 +640 427 +480 640 +640 427 +640 427 +500 400 +428 640 +640 360 +640 480 +427 640 +475 640 +640 480 +333 500 +612 612 +640 480 +640 351 +640 562 +640 480 +640 427 +480 640 +612 612 +640 309 +640 427 +640 480 +480 640 +640 480 +424 640 +640 480 +640 427 +640 425 +640 480 +640 480 +640 480 +478 640 +478 640 +612 612 +640 426 +640 480 +556 640 +500 375 +640 425 +640 480 +480 640 +375 500 +640 427 +480 640 +426 640 +640 427 +640 426 +640 480 +480 640 +640 427 +480 640 +375 500 +640 472 +480 640 +640 427 +640 427 +640 480 +360 270 +640 480 +500 333 +333 500 +640 375 +640 360 +640 480 +427 640 +480 640 +640 428 +480 640 +427 640 +640 512 +640 480 +640 383 +640 369 +640 428 +640 345 +640 424 +612 612 +413 640 +640 442 +500 281 +500 481 +640 480 +480 640 +640 361 +500 332 +500 375 +500 375 +640 427 +500 375 +640 480 +640 429 +640 480 +500 375 +640 407 +640 427 +640 480 +640 480 +640 360 +640 426 +640 480 +500 333 +640 480 +640 425 +640 480 +640 479 +640 386 +383 640 +472 314 +480 640 +640 513 +640 516 +640 428 +500 375 +640 480 +640 480 +640 425 +480 640 +480 640 +591 640 +640 425 +640 480 +500 375 +640 427 +356 480 +640 360 +640 428 +500 333 +480 640 +640 360 +640 480 +640 457 +500 333 +640 427 +300 201 +360 640 +640 640 +640 478 +500 332 +640 480 +640 427 +640 640 +480 640 +640 427 +640 640 +640 480 +640 480 +640 427 +500 375 +640 480 +640 444 +640 427 +640 427 +640 410 +500 375 +619 640 +640 429 +500 277 +399 640 +427 640 +640 421 +640 428 +640 429 +480 640 +480 640 +320 240 +640 427 +640 427 +640 427 +640 426 +640 606 +480 640 +640 451 +640 427 +640 428 +640 360 +640 484 +500 500 +640 482 +640 427 +640 480 +640 424 +640 427 +480 640 +426 640 +640 480 +412 640 +640 480 +640 427 +640 406 +640 480 +500 375 +640 506 +640 480 +640 480 +640 415 +480 640 +640 480 +419 640 +429 640 +640 453 +640 427 +480 640 +500 333 +640 427 +640 480 +640 480 +640 428 +480 640 +640 411 +640 360 +640 429 +500 375 +640 480 +640 427 +640 640 +612 612 +640 480 +612 612 +640 481 +640 496 +376 640 +640 480 +640 431 +640 480 +640 426 +424 640 +500 486 +640 480 +640 480 +640 426 +500 325 +640 458 +640 383 +480 640 +640 369 +640 480 +640 424 +480 640 +500 333 +640 459 +424 640 +612 612 +461 640 +480 640 +375 500 +375 500 +640 423 +640 427 +640 480 +640 428 +640 388 +427 640 +640 480 +333 500 +640 423 +640 427 +640 388 +640 480 +500 375 +640 427 +500 333 +427 640 +640 427 +640 320 +640 429 +640 292 +640 424 +640 480 +640 428 +480 640 +640 408 +640 480 +640 407 +640 419 +640 426 +500 500 +375 500 +640 427 +480 640 +640 427 +640 480 +640 480 +640 161 +640 426 +500 455 +640 427 +640 480 +640 385 +640 479 +640 424 +500 375 +640 480 +640 480 +640 480 +640 480 +640 359 +640 429 +640 472 +480 640 +640 480 +500 332 +640 427 +640 625 +640 480 +640 416 +480 640 +640 385 +366 500 +426 640 +478 640 +431 640 +640 427 +640 427 +375 500 +640 427 +480 640 +640 427 +640 476 +308 233 +480 640 +640 480 +500 376 +640 427 +612 612 +500 376 +640 427 +640 427 +640 480 +640 406 +425 640 +640 480 +640 363 +640 480 +640 424 +640 426 +279 640 +480 640 +640 428 +640 427 +640 383 +640 427 +428 640 +640 425 +640 512 +640 417 +631 640 +640 427 +427 640 +480 640 +640 427 +443 448 +441 640 +640 429 +612 612 +612 612 +640 429 +640 421 +361 640 +640 425 +491 640 +640 480 +321 479 +640 427 +640 447 +429 640 +640 480 +640 480 +640 480 +426 640 +454 640 +640 361 +427 640 +640 480 +426 640 +640 423 +480 640 +612 612 +640 425 +640 520 +640 594 +640 404 +640 427 +640 480 +640 424 +640 427 +640 427 +480 640 +640 396 +640 426 +640 428 +640 585 +640 426 +427 640 +334 500 +480 640 +480 640 +640 427 +500 375 +427 640 +640 424 +375 500 +640 424 +480 640 +350 233 +424 640 +640 427 +640 640 +640 424 +640 427 +640 428 +350 450 +640 480 +640 429 +640 428 +385 500 +640 429 +640 471 +640 480 +500 375 +640 362 +640 427 +612 612 +640 341 +640 427 +640 439 +500 375 +500 333 +500 397 +480 640 +427 640 +375 500 +640 427 +640 480 +640 480 +640 480 +426 640 +640 480 +375 500 +640 480 +640 480 +480 640 +427 640 +640 441 +427 640 +640 512 +500 375 +640 427 +640 428 +640 640 +640 360 +480 640 +500 355 +640 480 +640 480 +480 640 +640 480 +640 327 +640 427 +640 427 +500 375 +566 640 +422 640 +500 312 +640 480 +640 480 +427 640 +480 640 +500 487 +427 640 +427 640 +478 640 +640 426 +640 427 +640 427 +335 500 +500 333 +640 480 +640 428 +640 463 +640 480 +640 427 +640 424 +640 480 +640 480 +640 524 +480 640 +640 480 +612 612 +427 640 +640 427 +640 480 +500 359 +640 425 +640 427 +640 379 +640 480 +640 480 +395 640 +640 427 +640 424 +640 480 +640 480 +612 612 +356 500 +640 359 +640 480 +640 411 +480 640 +640 479 +480 640 +640 427 +480 640 +640 426 +640 427 +640 480 +210 640 +640 597 +640 528 +640 427 +640 431 +640 427 +480 640 +640 480 +480 640 +640 480 +640 569 +480 640 +640 428 +640 480 +500 500 +500 375 +640 426 +640 480 +304 640 +480 640 +640 480 +640 640 +375 500 +500 314 +512 640 +444 640 +426 640 +289 350 +640 435 +640 480 +640 625 +427 640 +500 375 +640 354 +480 640 +640 599 +640 424 +480 640 +500 332 +640 428 +500 335 +640 480 +640 324 +640 480 +640 427 +640 359 +640 480 +640 494 +640 464 +640 494 +640 428 +640 358 +640 427 +640 326 +423 640 +500 375 +640 480 +440 640 +640 426 +361 640 +426 640 +640 480 +480 640 +640 426 +427 640 +640 480 +640 486 +640 611 +640 480 +640 425 +590 397 +612 612 +640 427 +477 358 +500 311 +480 640 +640 480 +640 425 +500 144 +640 427 +640 436 +425 640 +334 500 +640 512 +640 427 +480 640 +640 480 +640 480 +424 640 +640 431 +640 490 +335 479 +500 333 +480 640 +480 640 +426 640 +640 424 +640 528 +640 359 +640 480 +480 640 +640 480 +640 480 +480 640 +500 331 +480 640 +640 428 +640 511 +640 427 +480 640 +500 335 +480 640 +425 640 +426 640 +640 375 +425 640 +408 500 +640 425 +500 375 +640 424 +500 375 +640 480 +427 640 +640 485 +640 480 +427 640 +640 480 +640 283 +593 640 +425 640 +640 427 +480 640 +640 413 +480 640 +640 428 +640 541 +480 640 +640 425 +640 406 +480 640 +480 640 +640 480 +600 600 +640 431 +640 425 +640 426 +500 354 +640 428 +500 328 +640 480 +640 427 +640 426 +394 500 +640 429 +640 425 +480 640 +500 485 +640 480 +640 480 +480 640 +500 375 +640 480 +464 640 +640 427 +640 480 +427 640 +612 612 +411 600 +640 480 +640 427 +427 640 +640 428 +500 376 +640 425 +640 482 +640 427 +640 480 +640 480 +640 480 +640 480 +480 640 +415 600 +640 595 +640 480 +640 425 +640 428 +640 427 +478 640 +424 640 +640 427 +640 314 +640 441 +640 387 +640 640 +640 427 +330 500 +427 640 +480 640 +427 640 +500 333 +480 640 +640 480 +640 426 +480 640 +640 537 +640 481 +640 426 +527 640 +480 640 +640 360 +413 640 +640 427 +640 480 +640 640 +640 480 +640 479 +640 414 +640 480 +640 489 +427 640 +496 640 +640 428 +620 450 +640 639 +500 333 +640 480 +640 431 +640 480 +375 500 +479 640 +426 640 +640 480 +640 480 +640 426 +500 375 +489 640 +500 334 +427 640 +612 612 +640 425 +640 360 +640 425 +640 427 +640 480 +640 478 +640 480 +480 640 +640 478 +500 332 +640 429 +359 640 +640 429 +640 480 +480 640 +640 480 +640 480 +640 360 +451 640 +640 428 +480 640 +640 480 +640 480 +640 424 +640 427 +640 426 +640 480 +361 500 +640 480 +640 501 +625 330 +427 640 +640 424 +640 425 +640 424 +640 426 +640 454 +428 640 +640 427 +612 612 +640 480 +333 500 +612 612 +500 329 +335 500 +640 428 +640 480 +640 480 +640 426 +640 480 +640 426 +480 640 +640 391 +640 409 +640 426 +500 375 +640 640 +640 472 +427 640 +480 640 +640 640 +640 480 +640 480 +480 640 +640 480 +640 427 +500 281 +480 640 +640 428 +429 640 +500 375 +640 501 +500 375 +480 640 +480 640 +419 640 +640 480 +640 427 +375 500 +640 480 +427 640 +500 375 +640 513 +640 480 +640 480 +424 640 +640 314 +640 360 +500 375 +500 375 +478 640 +612 612 +480 640 +640 480 +480 640 +427 640 +640 426 +640 640 +612 612 +424 640 +500 333 +640 480 +426 640 +640 480 +640 480 +640 480 +640 427 +480 640 +500 333 +640 427 +640 424 +640 409 +640 541 +640 489 +640 480 +359 500 +640 427 +640 480 +640 425 +640 413 +479 640 +428 640 +640 480 +640 480 +640 427 +432 500 +640 480 +640 480 +640 429 +500 392 +640 374 +640 424 +640 480 +640 450 +640 496 +500 375 +427 640 +480 640 +480 640 +640 424 +640 480 +478 640 +640 426 +640 360 +427 640 +500 269 +474 640 +500 375 +375 500 +640 480 +500 375 +640 557 +640 361 +500 375 +640 427 +640 427 +640 480 +360 640 +427 640 +612 612 +640 427 +640 426 +375 500 +640 560 +640 332 +612 612 +640 477 +480 640 +640 480 +435 640 +375 500 +640 428 +640 398 +640 428 +375 500 +640 426 +640 428 +640 480 +551 640 +640 480 +640 480 +480 640 +640 480 +480 640 +480 640 +640 480 +640 427 +640 426 +500 381 +640 480 +640 480 +480 640 +640 425 +640 427 +427 640 +500 346 +427 640 +640 276 +640 480 +480 640 +640 480 +640 508 +344 640 +640 480 +640 401 +640 427 +349 640 +640 480 +575 575 +480 640 +640 480 +640 427 +640 424 +500 375 +333 500 +640 480 +640 409 +640 480 +480 640 +640 478 +378 500 +640 480 +521 640 +500 335 +640 426 +433 640 +640 449 +640 480 +640 480 +640 596 +500 375 +480 640 +640 426 +640 428 +640 480 +640 439 +640 427 +458 640 +640 426 +640 480 +640 428 +407 500 +500 375 +640 507 +640 480 +640 480 +640 480 +640 427 +480 640 +640 480 +640 427 +333 500 +378 640 +612 612 +640 640 +427 640 +640 426 +336 500 +640 480 +375 500 +640 427 +640 426 +640 571 +640 427 +640 426 +640 480 +640 427 +480 640 +375 500 +640 480 +640 480 +480 640 +640 441 +333 500 +640 338 +478 640 +379 500 +640 480 +640 500 +503 640 +640 360 +554 640 +427 640 +640 427 +500 500 +500 344 +640 426 +640 427 +640 517 +640 480 +640 428 +500 400 +640 424 +480 640 +640 424 +640 480 +640 426 +347 500 +359 500 +427 640 +640 426 +429 640 +640 426 +640 360 +640 427 +640 427 +640 480 +640 280 +640 414 +640 640 +500 375 +428 640 +429 500 +640 480 +640 480 +640 427 +640 426 +640 480 +640 480 +425 640 +640 309 +640 419 +421 640 +640 480 +428 640 +333 500 +640 426 +480 640 +640 480 +426 640 +640 500 +640 480 +640 427 +427 640 +480 640 +640 480 +640 391 +264 500 +500 375 +640 427 +640 427 +640 398 +640 480 +640 480 +640 425 +500 375 +499 640 +640 360 +500 375 +640 480 +426 640 +640 480 +504 640 +640 480 +500 375 +640 427 +640 480 +480 640 +640 429 +335 500 +478 640 +640 427 +640 480 +640 480 +640 427 +640 480 +640 427 +640 427 +500 375 +500 400 +640 480 +500 333 +500 375 +480 640 +427 640 +640 451 +640 336 +500 395 +640 301 +640 426 +500 375 +404 640 +640 480 +640 640 +640 427 +500 335 +640 458 +426 640 +612 612 +640 575 +638 640 +640 424 +640 478 +640 480 +640 480 +425 640 +428 640 +612 612 +427 640 +500 336 +640 424 +640 508 +640 551 +300 176 +640 426 +640 480 +612 612 +640 478 +640 427 +640 428 +640 480 +640 449 +640 438 +640 427 +500 375 +640 424 +578 640 +640 480 +640 279 +640 480 +640 480 +640 427 +640 427 +426 640 +640 427 +640 429 +427 640 +640 480 +640 480 +640 544 +480 640 +640 480 +640 482 +640 193 +640 480 +640 538 +640 480 +418 339 +640 480 +640 427 +480 640 +640 427 +640 427 +640 427 +640 436 +612 612 +640 427 +640 480 +480 640 +640 427 +426 640 +640 426 +500 375 +640 426 +427 640 +640 428 +500 333 +640 480 +640 480 +640 480 +640 426 +612 612 +640 426 +640 426 +640 427 +640 426 +407 640 +640 480 +640 480 +640 428 +427 640 +480 640 +640 467 +640 481 +640 480 +360 640 +640 497 +640 480 +612 612 +640 427 +640 427 +640 497 +640 480 +640 640 +640 480 +375 500 +640 427 +640 480 +640 460 +640 427 +640 413 +640 427 +640 424 +480 640 +480 640 +500 384 +500 375 +480 640 +640 428 +640 480 +500 375 +500 375 +640 427 +500 375 +640 480 +640 427 +480 640 +640 427 +640 480 +640 467 +640 427 +640 359 +640 360 +640 427 +640 480 +326 500 +640 471 +494 640 +640 411 +640 480 +640 373 +640 425 +480 640 +640 480 +640 427 +640 365 +421 640 +640 427 +640 480 +612 612 +333 500 +640 427 +500 333 +360 640 +640 480 +640 480 +640 359 +640 387 +640 453 +612 612 +640 360 +640 586 +500 375 +640 480 +640 428 +640 426 +640 480 +640 480 +640 428 +375 500 +462 640 +640 427 +567 640 +596 440 +449 640 +640 480 +480 640 +640 483 +640 426 +457 640 +512 640 +427 640 +640 438 +471 640 +640 480 +425 640 +640 427 +480 640 +640 427 +640 480 +640 480 +333 500 +480 640 +640 480 +640 480 +500 375 +640 427 +640 480 +640 417 +427 640 +500 375 +375 500 +640 429 +640 480 +640 480 +640 640 +640 480 +640 480 +480 640 +640 427 +640 309 +640 480 +480 640 +640 424 +426 640 +640 425 +640 481 +500 375 +640 427 +612 612 +640 480 +240 180 +640 478 +640 426 +640 427 +348 500 +640 640 +640 589 +640 480 +500 375 +640 427 +640 444 +640 350 +480 640 +640 427 +640 480 +427 640 +612 612 +480 640 +640 480 +640 480 +640 428 +640 427 +480 640 +640 425 +640 428 +640 426 +640 424 +640 480 +500 375 +640 480 +640 427 +640 427 +427 640 +375 500 +334 500 +640 480 +640 424 +500 346 +640 427 +640 429 +640 434 +640 428 +500 375 +640 426 +500 439 +640 427 +375 500 +640 480 +426 640 +640 554 +640 478 +640 427 +458 640 +640 480 +600 593 +413 640 +640 432 +640 480 +640 427 +640 481 +486 640 +640 427 +500 420 +640 427 +640 480 +329 640 +500 375 +612 612 +427 640 +640 427 +500 353 +640 364 +640 435 +640 480 +640 426 +640 479 +500 375 +640 480 +640 549 +640 480 +640 425 +640 463 +640 478 +640 459 +640 512 +640 428 +480 640 +640 425 +480 640 +640 480 +640 427 +500 490 +513 640 +640 426 +640 428 +640 426 +640 439 +425 640 +612 612 +640 480 +480 640 +640 480 +640 480 +640 427 +640 478 +640 428 +640 425 +640 480 +640 427 +640 428 +500 332 +480 640 +640 419 +640 480 +640 480 +640 430 +640 480 +375 500 +640 358 +367 640 +640 427 +640 480 +640 425 +640 427 +480 640 +640 427 +640 427 +640 439 +640 424 +640 480 +500 334 +640 427 +612 612 +480 640 +500 333 +640 427 +640 480 +357 500 +640 427 +484 640 +500 375 +426 640 +640 480 +640 478 +640 480 +640 480 +500 375 +640 480 +640 428 +426 640 +606 640 +482 640 +640 426 +640 480 +434 640 +426 640 +640 426 +375 500 +640 426 +640 361 +480 640 +640 400 +500 375 +484 640 +640 412 +640 427 +640 433 +612 612 +448 302 +640 480 +480 640 +640 440 +314 500 +640 392 +640 480 +474 640 +480 640 +640 574 +640 425 +640 427 +640 457 +640 425 +640 428 +640 480 +640 480 +640 479 +640 427 +500 375 +640 539 +480 640 +640 480 +480 640 +428 640 +480 640 +640 480 +640 480 +640 480 +640 480 +480 640 +480 640 +500 375 +640 480 +640 480 +640 429 +640 424 +500 375 +383 640 +640 480 +500 335 +640 480 +500 375 +384 640 +612 612 +640 480 +640 480 +640 480 +640 480 +419 640 +640 512 +400 300 +639 640 +640 427 +640 480 +424 640 +427 640 +640 480 +480 640 +426 640 +640 427 +640 427 +640 623 +640 521 +375 500 +640 426 +640 426 +640 427 +640 426 +500 306 +500 423 +640 428 +640 431 +640 427 +640 427 +640 634 +640 480 +640 378 +500 375 +640 427 +640 427 +500 370 +427 640 +640 427 +640 429 +640 427 +640 480 +640 424 +640 426 +640 480 +640 480 +426 640 +640 428 +640 480 +640 415 +640 427 +640 427 +640 480 +480 640 +640 427 +640 478 +480 640 +640 427 +500 333 +640 427 +640 486 +428 640 +640 424 +640 426 +640 480 +640 426 +640 480 +640 480 +419 500 +640 360 +427 640 +640 427 +640 422 +640 480 +640 480 +500 334 +425 640 +512 640 +640 427 +640 480 +480 640 +426 640 +640 480 +640 480 +500 375 +393 640 +640 425 +640 583 +640 500 +640 480 +535 640 +640 480 +640 480 +512 640 +426 640 +640 426 +375 500 +480 640 +640 480 +427 640 +640 427 +431 640 +640 427 +640 427 +375 500 +640 427 +640 429 +640 457 +640 383 +640 428 +640 521 +640 480 +640 427 +428 640 +640 427 +480 640 +640 424 +640 480 +640 640 +640 361 +640 427 +640 480 +500 377 +640 360 +640 428 +640 512 +640 424 +480 640 +640 480 +640 426 +640 427 +640 465 +640 480 +424 640 +640 427 +640 360 +640 611 +453 640 +427 640 +640 426 +375 500 +640 480 +640 426 +480 640 +612 612 +640 429 +375 500 +640 359 +640 640 +427 640 +500 333 +480 640 +612 612 +375 500 +274 500 +640 478 +640 428 +337 500 +640 454 +426 640 +320 240 +480 640 +486 466 +640 480 +575 432 +640 480 +640 574 +500 375 +469 640 +500 332 +333 500 +426 640 +640 480 +640 426 +640 427 +640 360 +640 427 +640 480 +500 375 +640 427 +500 358 +640 457 +428 640 +529 640 +512 640 +500 333 +640 383 +640 480 +640 457 +512 640 +640 427 +640 480 +640 423 +640 480 +640 427 +518 640 +480 640 +333 500 +640 428 +640 480 +640 426 +640 360 +480 640 +640 640 +500 375 +640 481 +480 640 +640 480 +640 427 +640 480 +640 413 +640 480 +428 640 +640 480 +640 428 +480 640 +494 640 +640 360 +640 480 +480 640 +424 640 +614 640 +500 300 +640 480 +640 599 +640 480 +640 427 +640 426 +640 463 +427 640 +640 480 +640 426 +640 427 +462 640 +640 480 +640 478 +640 426 +500 246 +427 640 +640 428 +640 360 +412 500 +640 425 +500 375 +500 375 +640 426 +640 480 +640 443 +640 480 +640 427 +640 427 +640 429 +640 361 +640 427 +426 640 +640 480 +636 640 +500 375 +640 427 +640 425 +640 435 +640 428 +640 428 +640 427 +480 640 +640 427 +640 480 +640 427 +640 501 +640 517 +640 480 +626 640 +640 359 +640 425 +640 429 +640 480 +640 423 +640 480 +640 424 +477 640 +640 427 +640 427 +640 480 +640 480 +640 425 +640 427 +500 373 +500 375 +640 480 +640 428 +640 633 +640 480 +640 427 +640 457 +640 480 +640 543 +640 480 +640 496 +640 287 +640 480 +480 640 +640 480 +640 480 +640 639 +640 446 +640 480 +500 375 +640 480 +640 480 +640 480 +500 375 +640 480 +640 427 +640 425 +640 428 +640 426 +640 480 +640 431 +640 427 +640 480 +640 440 +640 480 +640 480 +480 640 +640 480 +427 640 +640 489 +425 640 +640 427 +640 480 +640 480 +640 455 +640 359 +500 375 +480 640 +640 419 +480 640 +427 640 +640 480 +640 425 +640 425 +640 480 +336 500 +640 329 +640 480 +640 427 +640 480 +478 640 +612 612 +480 640 +501 640 +640 426 +427 640 +500 375 +640 427 +500 358 +425 640 +640 480 +640 480 +500 375 +640 412 +640 430 +567 640 +375 500 +476 640 +640 426 +612 612 +500 400 +426 640 +479 640 +480 640 +640 480 +480 640 +500 298 +640 480 +640 478 +640 480 +640 576 +426 640 +478 640 +640 640 +500 375 +640 483 +640 640 +424 640 +480 640 +480 640 +640 425 +640 427 +640 480 +640 480 +442 640 +500 375 +640 427 +640 480 +640 480 +640 480 +427 640 +640 426 +400 312 +640 480 +500 375 +480 640 +640 478 +640 426 +480 640 +640 480 +640 480 +640 480 +500 375 +426 640 +612 612 +640 478 +640 640 +335 500 +640 427 +640 426 +426 640 +640 427 +333 500 +640 449 +375 500 +640 480 +640 480 +427 640 +640 428 +640 480 +640 480 +640 480 +612 612 +359 640 +640 478 +640 427 +640 425 +640 426 +428 640 +640 388 +640 480 +480 640 +480 640 +640 427 +640 427 +640 480 +480 640 +640 427 +427 640 +640 311 +640 475 +500 333 +427 640 +640 429 +480 640 +426 640 +640 454 +640 480 +640 426 +571 640 +640 480 +427 640 +640 640 +640 480 +428 640 +640 448 +480 640 +640 428 +640 480 +640 480 +640 427 +480 640 +480 640 +500 375 +640 427 +640 480 +640 464 +500 485 +640 424 +640 480 +640 491 +480 640 +500 404 +640 640 +480 640 +640 427 +640 427 +480 640 +640 480 +640 480 +560 560 +480 640 +640 360 +640 457 +640 480 +612 612 +640 640 +612 612 +640 109 +500 245 +640 427 +640 425 +640 424 +640 480 +612 612 +640 400 +640 427 +500 333 +640 427 +640 424 +426 640 +640 397 +479 640 +640 425 +640 480 +428 640 +640 491 +427 640 +640 480 +492 500 +640 480 +606 640 +640 480 +640 482 +640 427 +333 500 +640 425 +640 424 +375 500 +640 427 +640 360 +640 480 +640 432 +640 457 +640 480 +640 480 +640 547 +640 455 +640 427 +640 479 +640 423 +612 612 +640 427 +500 375 +640 480 +640 427 +640 426 +500 500 +640 428 +640 427 +640 426 +640 425 +480 640 +640 426 +640 427 +640 427 +640 461 +428 640 +640 425 +640 427 +640 429 +640 480 +640 427 +500 281 +407 640 +383 640 +418 640 +500 332 +337 500 +640 547 +500 395 +640 480 +640 361 +612 612 +640 554 +640 427 +466 640 +612 612 +500 369 +640 427 +640 480 +640 480 +640 427 +500 375 +640 480 +640 426 +640 480 +500 375 +640 478 +640 480 +480 640 +579 640 +125 166 +640 426 +640 428 +556 640 +480 640 +634 640 +640 429 +640 480 +640 480 +640 424 +503 640 +480 640 +640 427 +640 360 +640 427 +640 480 +640 480 +640 480 +500 375 +640 427 +600 400 +640 409 +640 427 +640 512 +640 480 +375 500 +640 427 +640 480 +640 427 +640 426 +640 427 +409 640 +640 640 +640 428 +640 480 +640 480 +640 427 +500 333 +480 640 +427 640 +640 640 +425 640 +403 640 +640 427 +612 612 +360 270 +640 427 +640 480 +640 429 +640 427 +425 640 +640 425 +640 480 +576 640 +640 427 +480 360 +458 500 +640 478 +480 640 +640 479 +640 427 +640 480 +640 425 +640 504 +500 295 +375 500 +640 427 +640 399 +500 375 +640 425 +354 500 +640 427 +640 429 +640 479 +640 484 +480 640 +640 427 +500 375 +481 640 +640 407 +480 640 +432 640 +640 480 +500 375 +640 480 +640 514 +640 480 +640 428 +375 500 +640 480 +640 427 +640 480 +640 426 +640 480 +503 640 +640 427 +640 381 +640 480 +375 500 +500 348 +600 600 +640 427 +500 375 +640 426 +500 375 +640 427 +426 640 +640 480 +640 427 +640 428 +640 440 +640 360 +427 640 +640 426 +375 500 +480 640 +427 640 +640 427 +640 353 +500 355 +331 500 +640 480 +427 640 +640 426 +640 444 +492 640 +640 480 +640 421 +640 480 +480 640 +640 480 +640 428 +640 427 +500 333 +640 480 +640 426 +480 640 +480 640 +640 491 +328 500 +640 638 +640 480 +640 474 +640 426 +640 427 +434 640 +427 640 +375 500 +640 480 +640 427 +457 640 +640 426 +375 500 +640 426 +427 640 +640 426 +640 480 +640 426 +640 426 +640 428 +640 480 +640 427 +640 436 +640 426 +480 640 +640 480 +640 480 +640 427 +500 332 +640 401 +500 375 +640 427 +640 428 +517 640 +500 333 +640 480 +640 425 +500 375 +480 640 +640 480 +425 640 +640 426 +640 424 +640 640 +310 640 +640 425 +640 518 +500 375 +612 612 +640 480 +480 640 +640 424 +640 427 +640 480 +428 640 +500 375 +640 427 +640 480 +640 425 +480 640 +480 640 +640 427 +640 427 +640 428 +480 640 +640 480 +640 480 +309 500 +640 480 +640 457 +640 480 +640 480 +640 480 +640 424 +640 480 +640 633 +425 640 +612 612 +640 427 +500 375 +480 640 +640 504 +640 455 +640 480 +324 500 +640 480 +640 426 +640 427 +500 332 +640 408 +640 480 +640 480 +640 427 +640 427 +500 375 +640 480 +640 428 +640 426 +612 612 +640 414 +640 518 +640 359 +640 424 +480 640 +640 480 +500 334 +640 463 +640 412 +500 332 +640 426 +640 427 +640 480 +640 480 +426 640 +500 400 +480 640 +500 375 +448 299 +426 640 +427 640 +500 418 +640 480 +640 427 +640 426 +640 480 +334 500 +640 427 +640 478 +500 333 +500 375 +640 427 +640 435 +640 480 +500 332 +500 379 +640 425 +640 480 +640 480 +640 484 +512 640 +640 480 +480 640 +375 500 +640 426 +640 379 +640 484 +640 426 +640 427 +640 426 +480 640 +333 500 +640 461 +426 640 +640 480 +640 425 +427 640 +500 441 +427 640 +333 500 +640 223 +612 612 +640 480 +500 332 +640 480 +427 640 +640 480 +640 426 +480 640 +612 612 +480 640 +640 428 +640 480 +640 425 +640 480 +640 427 +640 480 +640 426 +640 480 +640 427 +640 496 +640 480 +640 471 +500 375 +640 480 +640 427 +640 480 +427 640 +640 427 +640 427 +640 427 +549 640 +640 640 +640 480 +640 329 +640 480 +640 427 +640 471 +640 480 +640 425 +500 375 +640 483 +375 500 +640 480 +640 427 +640 480 +640 425 +480 640 +640 426 +640 360 +480 640 +640 427 +427 640 +640 383 +640 427 +428 640 +640 427 +600 400 +640 506 +640 640 +640 477 +640 384 +500 333 +640 480 +419 640 +640 480 +640 480 +640 361 +612 612 +480 640 +640 425 +640 359 +634 640 +640 427 +640 427 +500 326 +427 640 +640 426 +375 500 +640 480 +640 480 +640 640 +480 640 +640 480 +640 633 +640 480 +480 640 +640 480 +640 480 +640 480 +640 360 +500 375 +480 640 +640 480 +640 640 +625 640 +640 481 +640 425 +640 425 +565 640 +480 640 +640 427 +426 640 +461 640 +640 480 +640 480 +448 500 +426 640 +375 500 +427 640 +500 375 +640 483 +640 359 +640 475 +640 480 +640 279 +640 480 +480 640 +640 424 +333 500 +612 612 +500 375 +500 358 +640 428 +640 480 +640 480 +640 425 +640 480 +467 640 +640 480 +640 457 +480 640 +640 611 +500 281 +612 612 +640 427 +640 421 +640 480 +480 640 +426 640 +640 640 +640 480 +640 431 +640 480 +640 426 +640 480 +500 500 +640 426 +500 376 +640 360 +410 270 +640 427 +426 640 +470 640 +640 480 +640 444 +332 500 +640 480 +507 640 +480 640 +640 424 +640 480 +427 640 +640 480 +640 480 +500 335 +640 480 +640 427 +640 508 +640 433 +640 466 +499 500 +640 640 +480 640 +640 264 +537 640 +640 480 +640 425 +482 640 +640 533 +640 394 +480 640 +640 359 +640 427 +500 332 +480 640 +640 426 +640 558 +640 425 +640 427 +640 427 +427 640 +427 640 +500 376 +640 428 +640 640 +640 480 +425 640 +640 424 +640 394 +375 500 +640 426 +640 425 +640 480 +640 427 +500 375 +640 318 +640 480 +640 427 +640 427 +640 427 +640 640 +640 424 +640 457 +500 332 +640 480 +640 457 +640 480 +640 432 +640 480 +640 480 +640 480 +612 612 +500 333 +640 480 +640 461 +428 640 +476 500 +640 480 +500 350 +427 640 +640 427 +640 480 +426 640 +480 640 +427 640 +640 480 +640 480 +640 427 +640 480 +640 392 +640 512 +426 640 +500 376 +640 425 +640 426 +640 480 +640 427 +640 480 +640 360 +640 481 +640 460 +640 427 +640 428 +640 427 +640 427 +640 480 +640 480 +640 427 +500 414 +400 300 +478 640 +640 521 +640 426 +640 425 +640 443 +640 427 +448 640 +500 375 +480 640 +640 427 +500 332 +424 640 +480 640 +640 406 +640 426 +359 640 +500 333 +480 640 +640 480 +640 483 +640 426 +640 426 +640 426 +640 424 +640 541 +640 426 +640 480 +500 375 +500 375 +427 640 +640 420 +640 480 +640 427 +612 612 +427 640 +332 500 +640 427 +640 480 +640 516 +640 480 +483 640 +426 640 +640 427 +640 428 +511 640 +640 480 +640 480 +425 640 +640 426 +640 427 +500 375 +500 376 +640 480 +480 640 +640 480 +640 480 +640 480 +640 427 +640 480 +640 480 +426 640 +640 480 +640 425 +612 612 +640 427 +640 427 +640 427 +640 480 +480 640 +426 640 +427 640 +640 427 +500 375 +640 360 +480 640 +640 428 +493 640 +640 480 +478 640 +640 425 +500 375 +640 426 +375 500 +640 480 +501 640 +640 427 +640 361 +640 640 +640 544 +640 425 +640 428 +500 375 +640 425 +427 640 +333 500 +640 428 +640 427 +640 480 +500 332 +640 478 +640 480 +464 640 +500 375 +640 427 +640 427 +480 640 +640 161 +640 480 +640 640 +640 480 +640 427 +640 480 +640 480 +640 480 +640 480 +612 612 +500 375 +640 427 +640 458 +640 425 +640 409 +640 509 +640 460 +640 427 +640 412 +418 500 +640 221 +640 480 +640 427 +428 640 +640 427 +640 549 +500 375 +640 291 +640 426 +480 640 +640 428 +640 425 +640 428 +640 427 +500 375 +640 425 +640 480 +640 480 +480 640 +640 346 +375 500 +423 640 +640 480 +596 640 +640 427 +640 427 +593 640 +640 493 +640 479 +640 480 +640 479 +500 375 +640 426 +300 400 +640 480 +500 375 +640 424 +480 640 +640 429 +456 640 +375 500 +640 426 +504 640 +640 480 +640 456 +640 492 +500 375 +640 471 +480 640 +480 640 +640 359 +640 480 +640 427 +426 640 +375 500 +640 480 +500 382 +640 480 +427 640 +640 480 +427 640 +640 480 +640 429 +640 480 +640 480 +640 424 +640 480 +640 480 +640 428 +500 334 +640 480 +640 480 +480 640 +640 507 +640 478 +640 460 +640 426 +640 403 +480 640 +640 427 +640 427 +427 640 +640 427 +640 416 +427 640 +300 225 +640 423 +332 500 +640 458 +500 357 +640 480 +612 612 +640 383 +640 350 +640 480 +309 640 +640 480 +640 426 +640 511 +459 640 +549 640 +640 428 +640 480 +640 480 +426 640 +640 384 +640 425 +640 444 +640 426 +640 480 +640 480 +480 640 +640 480 +640 480 +640 427 +640 427 +640 416 +640 479 +500 375 +640 480 +640 480 +640 480 +640 360 +640 402 +481 640 +640 480 +334 500 +640 480 +640 480 +640 480 +640 427 +640 360 +640 427 +480 640 +612 612 +640 427 +640 428 +640 427 +550 640 +612 612 +640 427 +375 500 +500 333 +500 375 +480 640 +640 427 +640 428 +640 480 +427 640 +640 426 +640 480 +478 640 +480 640 +640 480 +640 480 +640 428 +640 480 +640 480 +640 512 +640 480 +500 375 +640 427 +640 428 +480 640 +640 428 +576 384 +640 480 +640 480 +640 480 +423 640 +640 380 +640 436 +334 500 +427 640 +640 427 +640 480 +426 640 +480 640 +640 453 +375 500 +640 426 +408 640 +640 428 +640 424 +427 640 +640 484 +598 415 +640 425 +640 427 +640 480 +640 430 +640 427 +640 480 +640 480 +500 375 +640 428 +640 427 +426 640 +640 438 +450 640 +640 389 +482 640 +480 640 +640 442 +640 448 +500 334 +640 640 +640 421 +500 333 +628 640 +500 392 +640 480 +500 375 +500 333 +426 640 +640 425 +640 427 +640 427 +640 427 +500 375 +628 640 +640 480 +333 500 +640 480 +500 313 +640 427 +640 480 +640 426 +640 480 +640 424 +640 393 +640 426 +640 480 +640 427 +612 612 +500 375 +500 333 +500 375 +480 640 +640 427 +427 640 +480 640 +640 427 +500 250 +640 426 +640 480 +640 480 +640 427 +440 640 +426 640 +480 640 +640 480 +425 283 +640 401 +640 480 +640 427 +640 423 +425 640 +493 640 +640 430 +640 427 +640 406 +375 500 +640 504 +612 612 +500 375 +640 480 +640 458 +640 365 +640 428 +375 500 +640 480 +500 375 +640 480 +428 640 +640 408 +640 480 +500 375 +640 480 +606 400 +640 425 +428 640 +480 640 +640 480 +427 640 +640 426 +640 424 +375 500 +640 425 +640 486 +640 427 +500 430 +640 640 +640 640 +640 480 +640 543 +640 480 +640 480 +640 427 +640 427 +640 640 +640 427 +640 426 +640 541 +640 461 +640 427 +640 480 +640 427 +640 612 +612 612 +640 536 +427 640 +640 427 +640 459 +427 640 +640 418 +500 375 +358 640 +333 500 +427 640 +640 427 +640 427 +410 423 +427 640 +640 425 +640 360 +640 479 +640 480 +640 425 +640 427 +640 426 +640 427 +554 640 +640 414 +640 480 +640 480 +431 640 +640 480 +480 640 +640 446 +427 640 +640 373 +612 612 +640 480 +640 360 +409 640 +427 640 +640 480 +640 480 +426 640 +640 480 +640 412 +640 380 +640 426 +332 500 +640 426 +425 640 +500 375 +640 480 +500 333 +640 358 +640 427 +640 427 +427 640 +480 640 +612 612 +500 281 +640 427 +640 365 +500 375 +640 480 +640 480 +426 640 +471 640 +640 426 +640 480 +480 640 +500 375 +480 640 +480 640 +640 427 +640 427 +480 640 +640 426 +640 427 +640 480 +640 480 +640 428 +640 480 +640 480 +425 640 +640 494 +640 427 +640 480 +640 480 +640 480 +640 427 +640 426 +640 480 +640 426 +426 640 +640 480 +640 360 +480 640 +640 440 +640 480 +640 425 +500 375 +640 427 +457 640 +640 478 +640 427 +640 427 +640 427 +640 480 +553 640 +426 640 +640 433 +425 640 +640 472 +427 640 +427 640 +640 424 +640 427 +500 400 +640 456 +640 427 +500 332 +640 640 +428 640 +426 640 +480 640 +612 612 +640 427 +640 427 +606 640 +640 575 +640 426 +640 480 +640 480 +640 426 +640 480 +640 426 +640 480 +640 423 +640 480 +640 427 +640 480 +640 480 +352 500 +640 480 +640 360 +640 479 +640 413 +290 438 +427 640 +640 480 +375 500 +425 640 +640 480 +640 514 +640 360 +640 426 +480 640 +640 640 +640 370 +640 480 +500 434 +500 375 +427 640 +480 640 +640 427 +640 549 +640 426 +640 426 +640 427 +640 455 +640 424 +500 375 +427 640 +640 480 +640 425 +600 600 +426 640 +640 519 +640 480 +640 427 +640 480 +334 500 +640 355 +640 427 +500 334 +429 640 +640 480 +640 480 +500 375 +640 426 +331 500 +640 449 +500 375 +640 426 +640 424 +640 480 +640 427 +640 480 +640 460 +640 629 +428 640 +640 480 +640 448 +480 640 +500 332 +640 425 +428 640 +461 640 +640 480 +500 375 +640 423 +640 368 +332 500 +480 640 +640 432 +640 640 +640 427 +612 612 +333 500 +640 480 +640 480 +385 500 +500 281 +512 640 +640 526 +640 429 +480 640 +500 375 +640 426 +480 640 +480 640 +607 640 +640 479 +427 640 +640 431 +640 480 +640 480 +640 425 +640 480 +640 426 +640 480 +640 426 +640 480 +640 640 +640 426 +480 640 +427 640 +640 480 +640 427 +640 480 +640 480 +640 424 +640 480 +640 424 +640 480 +640 427 +640 364 +640 480 +640 427 +640 456 +640 427 +281 500 +480 640 +320 212 +480 640 +640 429 +640 428 +640 364 +640 418 +640 427 +640 478 +640 439 +640 426 +640 426 +640 427 +640 480 +500 446 +640 480 +640 480 +640 427 +478 640 +640 426 +640 386 +640 433 +375 500 +640 480 +500 333 +640 424 +480 640 +500 375 +640 480 +429 640 +500 375 +500 358 +640 480 +640 458 +480 640 +640 444 +640 481 +640 480 +487 500 +640 480 +480 640 +355 500 +640 360 +425 640 +333 500 +640 480 +375 500 +640 427 +640 426 +640 563 +500 371 +640 454 +640 425 +640 426 +640 427 +640 480 +500 334 +428 640 +640 481 +640 480 +640 480 +500 396 +640 440 +426 640 +438 640 +427 640 +456 640 +640 427 +640 480 +640 480 +640 427 +640 448 +500 332 +640 424 +640 480 +533 640 +375 500 +640 480 +640 439 +428 640 +612 612 +500 375 +640 480 +640 480 +480 640 +500 398 +640 437 +640 481 +640 480 +640 480 +640 480 +640 427 +458 640 +458 640 +640 427 +640 386 +500 375 +640 480 +480 640 +640 427 +640 480 +640 500 +640 437 +640 463 +427 640 +640 640 +612 612 +640 427 +612 612 +612 612 +640 428 +640 425 +640 463 +355 500 +640 480 +500 279 +640 424 +500 375 +640 425 +500 320 +640 410 +640 480 +640 427 +640 427 +640 480 +292 500 +640 427 +640 426 +480 640 +500 375 +500 333 +640 480 +640 427 +640 427 +500 375 +640 427 +500 307 +640 360 +640 428 +640 480 +640 359 +640 423 +640 424 +640 480 +640 480 +640 424 +640 427 +640 449 +640 383 +640 640 +640 426 +640 517 +426 640 +500 333 +426 640 +640 478 +640 426 +640 478 +443 640 +640 425 +426 640 +427 640 +480 640 +375 500 +640 480 +640 427 +375 500 +640 165 +480 640 +640 427 +640 480 +640 427 +640 480 +640 379 +640 425 +640 480 +640 389 +640 427 +640 427 +396 640 +375 500 +441 640 +640 480 +640 480 +640 480 +640 478 +289 500 +640 480 +640 435 +640 426 +640 480 +640 288 +500 333 +600 451 +640 480 +480 640 +640 480 +500 375 +640 640 +640 480 +640 427 +425 640 +640 427 +640 427 +600 252 +640 424 +640 640 +640 426 +640 427 +640 426 +500 440 +424 640 +480 640 +640 480 +424 640 +640 480 +640 427 +640 480 +640 427 +640 480 +436 640 +640 427 +512 640 +640 181 +640 426 +427 640 +500 375 +612 612 +640 512 +640 496 +640 427 +640 388 +640 480 +427 640 +500 375 +640 428 +640 481 +640 632 +640 480 +640 480 +640 512 +481 640 +640 480 +640 425 +427 640 +640 428 +480 320 +333 500 +640 427 +640 480 +640 428 +425 640 +480 640 +640 408 +640 480 +640 427 +337 640 +500 375 +500 333 +500 375 +640 480 +640 413 +640 424 +640 480 +640 426 +640 588 +480 640 +500 333 +427 640 +640 425 +500 375 +500 281 +480 245 +373 299 +640 480 +427 640 +640 427 +640 431 +640 425 +500 375 +603 640 +479 640 +612 612 +640 427 +640 488 +640 480 +640 333 +640 428 +457 640 +640 480 +640 427 +640 480 +500 375 +427 640 +500 375 +469 640 +640 429 +480 640 +640 425 +427 640 +640 424 +640 482 +640 427 +640 423 +640 480 +426 640 +335 500 +640 559 +640 428 +479 640 +640 480 +640 426 +640 480 +640 480 +640 426 +640 468 +480 640 +375 500 +640 480 +640 480 +480 640 +640 427 +640 427 +375 500 +640 326 +640 480 +480 640 +640 480 +521 640 +640 480 +640 426 +640 480 +640 476 +612 612 +500 375 +428 640 +640 480 +640 424 +480 640 +640 427 +640 428 +640 425 +640 427 +500 375 +640 424 +640 481 +640 480 +640 427 +640 423 +640 425 +534 640 +640 480 +393 640 +640 425 +640 480 +640 480 +480 640 +640 419 +640 458 +640 483 +640 426 +500 375 +640 361 +640 480 +640 430 +640 426 +640 426 +640 480 +500 375 +640 480 +640 480 +427 640 +500 333 +427 640 +640 476 +640 426 +640 480 +640 429 +640 426 +640 433 +479 640 +640 427 +400 640 +427 640 +640 480 +640 428 +640 427 +480 640 +500 375 +640 421 +640 427 +500 315 +500 333 +640 427 +500 375 +480 640 +640 426 +612 612 +640 425 +333 500 +500 336 +640 424 +612 612 +640 426 +640 480 +427 640 +640 360 +640 427 +640 427 +427 640 +640 275 +419 640 +640 480 +500 375 +640 428 +500 333 +480 640 +640 480 +427 640 +640 480 +369 640 +640 414 +640 480 +640 427 +375 500 +454 640 +560 640 +640 427 +640 480 +640 425 +640 457 +640 479 +480 640 +424 640 +640 425 +640 428 +640 480 +480 640 +640 426 +640 480 +640 427 +427 640 +640 427 +459 640 +640 480 +640 425 +375 500 +640 466 +640 480 +500 347 +640 426 +640 448 +458 640 +375 500 +436 640 +640 360 +391 640 +460 500 +640 427 +500 375 +640 480 +500 375 +500 332 +317 500 +639 640 +512 640 +640 427 +428 640 +473 640 +480 640 +427 640 +640 427 +640 480 +640 478 +426 640 +480 640 +640 434 +640 479 +640 480 +640 480 +500 341 +640 480 +640 480 +500 375 +640 427 +640 425 +395 640 +640 480 +640 375 +640 480 +640 428 +640 560 +640 640 +640 480 +500 333 +640 395 +640 448 +510 640 +640 424 +500 334 +640 515 +480 640 +640 480 +500 375 +405 640 +640 416 +640 513 +640 466 +471 640 +640 398 +640 480 +450 338 +640 433 +640 427 +640 480 +640 428 +640 486 +640 478 +640 427 +640 438 +427 640 +640 427 +640 480 +500 470 +480 640 +428 640 +400 640 +640 375 +500 375 +333 500 +640 424 +640 427 +640 427 +640 480 +500 375 +640 400 +640 443 +500 376 +640 527 +640 480 +480 640 +500 333 +640 480 +640 426 +640 358 +480 640 +640 436 +640 480 +500 333 +610 427 +640 480 +425 640 +375 500 +640 427 +640 640 +640 511 +640 426 +612 612 +640 478 +640 480 +640 422 +640 428 +640 480 +448 336 +500 375 +640 480 +640 473 +640 478 +640 427 +427 640 +500 375 +640 480 +640 426 +375 500 +640 480 +424 640 +480 640 +640 425 +640 480 +640 480 +640 426 +640 427 +500 375 +640 384 +640 480 +640 522 +640 428 +640 360 +640 549 +640 427 +640 427 +480 640 +640 421 +500 331 +640 480 +500 315 +640 480 +640 427 +480 640 +640 493 +640 480 +640 359 +480 640 +640 427 +427 640 +640 361 +640 480 +640 480 +500 327 +640 427 +640 453 +426 640 +480 640 +640 427 +370 500 +640 536 +500 403 +640 480 +150 200 +640 640 +448 600 +481 640 +640 427 +480 640 +427 640 +640 320 +500 301 +640 427 +480 640 +612 612 +640 480 +640 428 +640 427 +640 458 +375 500 +640 427 +640 480 +500 333 +640 429 +480 640 +640 478 +640 480 +640 480 +640 480 +640 480 +480 640 +500 375 +640 427 +640 427 +640 426 +640 425 +640 427 +640 640 +500 375 +612 612 +500 375 +480 640 +640 428 +425 251 +640 206 +640 424 +480 640 +640 473 +420 169 +640 480 +640 427 +640 480 +640 429 +640 452 +481 640 +427 640 +621 640 +425 640 +427 640 +640 399 +640 467 +640 456 +640 428 +427 640 +640 480 +640 427 +500 375 +640 425 +640 330 +640 640 +640 427 +640 480 +640 442 +640 480 +386 500 +640 426 +612 612 +640 511 +640 428 +640 426 +500 375 +640 383 +640 427 +427 640 +464 500 +640 427 +640 512 +633 640 +640 218 +500 375 +640 427 +640 480 +500 375 +640 606 +640 480 +640 457 +640 429 +640 481 +500 397 +640 480 +640 423 +480 640 +640 480 +640 426 +640 427 +428 640 +480 640 +500 339 +500 375 +480 640 +640 426 +640 480 +640 466 +427 640 +500 269 +640 429 +640 427 +426 640 +429 640 +640 480 +640 424 +640 427 +640 432 +640 480 +640 426 +640 481 +480 640 +640 426 +640 480 +640 480 +500 333 +426 640 +500 333 +640 480 +375 500 +480 640 +640 427 +427 640 +640 427 +640 480 +640 512 +640 484 +612 612 +640 480 +407 640 +640 554 +640 427 +640 429 +640 480 +640 425 +612 612 +640 425 +640 478 +603 640 +480 640 +640 418 +500 375 +640 385 +480 640 +640 480 +500 375 +640 478 +640 480 +428 640 +480 640 +336 500 +480 640 +640 428 +500 375 +640 629 +640 459 +640 425 +480 640 +640 480 +640 461 +640 480 +640 480 +640 480 +640 480 +500 375 +500 375 +408 500 +480 640 +640 528 +640 480 +640 428 +480 640 +640 617 +425 640 +500 376 +500 424 +500 333 +333 500 +640 426 +640 449 +640 427 +640 427 +640 480 +640 481 +640 480 +640 480 +640 480 +640 480 +640 480 +500 333 +640 359 +480 640 +447 640 +451 640 +640 640 +640 376 +479 640 +640 427 +640 427 +500 333 +640 426 +500 375 +640 480 +334 500 +427 640 +640 427 +640 480 +640 420 +612 612 +640 426 +640 480 +640 609 +612 612 +640 480 +640 466 +403 640 +500 336 +640 425 +360 265 +640 480 +640 480 +640 480 +640 476 +640 480 +500 375 +640 480 +640 480 +640 425 +480 640 +640 480 +640 478 +640 480 +640 480 +640 480 +427 640 +500 375 +640 480 +640 426 +640 424 +640 427 +640 472 +640 480 +281 500 +500 333 +640 429 +640 480 +640 434 +500 375 +640 427 +640 640 +640 364 +640 480 +500 500 +640 439 +500 371 +640 640 +424 640 +500 395 +640 480 +427 640 +640 357 +640 480 +640 424 +640 480 +359 640 +640 512 +640 426 +640 480 +640 573 +640 480 +640 427 +426 640 +640 360 +640 426 +640 480 +640 480 +640 425 +640 428 +612 612 +612 612 +640 400 +480 640 +640 480 +427 640 +640 480 +640 627 +640 516 +640 427 +640 427 +640 480 +640 424 +640 427 +500 333 +640 480 +500 375 +500 333 +612 612 +640 480 +480 640 +500 375 +640 480 +640 427 +640 419 +500 375 +640 425 +640 480 +480 640 +640 428 +640 464 +612 612 +640 480 +640 427 +640 480 +489 640 +640 480 +640 459 +427 640 +640 376 +640 427 +640 480 +640 512 +640 427 +640 392 +342 500 +640 480 +640 480 +640 426 +640 480 +640 425 +640 478 +640 480 +640 351 +333 500 +640 427 +640 480 +604 640 +640 480 +512 640 +640 481 +640 480 +500 485 +457 640 +640 480 +640 427 +640 427 +640 427 +640 480 +640 426 +480 640 +480 640 +640 480 +640 480 +480 640 +480 320 +640 334 +500 375 +640 427 +640 480 +423 640 +640 453 +480 640 +586 640 +640 480 +500 329 +640 480 +375 500 +640 476 +500 311 +640 458 +427 640 +452 640 +500 373 +640 640 +333 500 +612 612 +640 480 +640 428 +640 427 +500 333 +640 426 +426 640 +640 425 +426 640 +640 427 +421 640 +640 640 +500 336 +640 480 +335 500 +640 480 +333 500 +640 428 +406 640 +640 462 +640 480 +640 480 +640 428 +640 427 +640 427 +640 480 +321 640 +612 612 +612 612 +500 375 +480 640 +640 480 +640 425 +612 612 +480 640 +640 427 +390 640 +426 640 +640 427 +640 480 +500 375 +640 480 +640 402 +500 375 +480 640 +640 480 +640 427 +640 480 +640 429 +640 427 +640 425 +640 480 +640 428 +371 640 +640 486 +640 480 +640 480 +427 640 +640 428 +480 640 +500 375 +640 480 +640 420 +480 640 +640 427 +640 428 +500 375 +612 612 +640 480 +439 640 +640 474 +640 428 +435 580 +640 640 +480 640 +333 500 +640 480 +427 640 +333 500 +640 480 +640 426 +480 640 +640 306 +640 427 +640 359 +480 640 +424 640 +480 640 +640 427 +640 427 +640 427 +640 480 +640 480 +424 640 +640 480 +640 492 +640 425 +500 375 +486 640 +640 501 +427 640 +500 375 +427 640 +640 427 +446 500 +455 640 +640 426 +640 480 +361 640 +500 334 +427 640 +640 461 +640 427 +640 480 +640 427 +640 480 +500 500 +640 323 +640 428 +640 480 +640 480 +640 340 +640 428 +640 488 +447 500 +500 355 +480 640 +480 360 +480 640 +359 640 +480 640 +640 422 +640 480 +640 433 +640 496 +640 480 +640 425 +425 640 +640 394 +640 427 +640 480 +640 426 +640 480 +640 427 +640 428 +500 400 +480 640 +640 401 +353 500 +640 426 +338 500 +640 427 +480 640 +480 640 +640 426 +428 640 +480 640 +500 333 +640 484 +357 500 +640 480 +640 480 +640 480 +640 426 +375 500 +334 500 +640 480 +427 640 +640 427 +640 360 +640 480 +640 480 +640 480 +640 427 +426 640 +640 512 +640 428 +640 432 +640 426 +640 426 +640 480 +640 427 +426 640 +425 392 +640 476 +640 480 +640 427 +500 375 +375 500 +500 375 +640 426 +500 382 +640 480 +640 640 +480 640 +640 480 +603 640 +640 425 +320 240 +480 640 +480 640 +375 500 +640 471 +427 640 +500 335 +640 480 +640 480 +640 640 +427 640 +640 426 +640 427 +426 640 +640 481 +640 401 +500 375 +482 640 +640 480 +352 288 +640 512 +500 485 +640 498 +640 422 +640 480 +427 640 +427 640 +426 640 +374 500 +500 332 +640 493 +375 500 +640 480 +429 640 +640 470 +640 480 +640 623 +640 361 +500 383 +640 480 +640 425 +640 427 +640 426 +640 359 +424 640 +640 480 +640 480 +640 427 +640 423 +480 640 +640 427 +640 428 +640 427 +438 640 +640 426 +640 480 +640 480 +640 427 +640 427 +500 333 +640 480 +640 480 +640 480 +640 427 +480 640 +640 428 +640 427 +640 427 +640 427 +640 427 +640 427 +640 426 +640 427 +640 425 +640 480 +640 480 +640 427 +640 426 +424 640 +500 375 +640 427 +640 375 +566 640 +640 480 +640 425 +427 640 +640 480 +612 612 +640 480 +640 480 +640 480 +640 427 +424 640 +640 480 +640 480 +640 480 +640 480 +612 612 +427 640 +640 480 +640 640 +480 640 +640 480 +640 480 +640 415 +612 612 +640 425 +640 439 +640 480 +640 512 +640 428 +640 480 +640 427 +640 542 +640 480 +640 461 +640 480 +427 640 +640 480 +426 640 +478 640 +500 375 +332 500 +640 480 +640 427 +640 480 +640 426 +640 575 +640 480 +640 387 +640 426 +640 480 +612 612 +640 428 +351 500 +640 427 +480 640 +640 424 +640 360 +480 640 +480 640 +640 417 +500 380 +640 480 +480 640 +480 640 +640 427 +612 612 +640 480 +500 333 +640 465 +640 426 +640 426 +310 500 +640 480 +640 431 +480 640 +640 480 +500 375 +640 480 +338 409 +640 416 +640 414 +640 427 +640 426 +640 424 +369 640 +640 640 +640 427 +640 427 +640 480 +640 480 +640 427 +640 496 +612 612 +427 640 +427 640 +427 640 +640 394 +640 404 +640 424 +480 640 +640 427 +427 640 +610 406 +640 427 +301 290 +640 427 +640 462 +640 428 +480 640 +640 480 +612 612 +640 480 +640 480 +612 612 +640 480 +500 375 +333 500 +640 427 +640 458 +640 480 +500 335 +640 480 +427 640 +640 480 +333 500 +588 640 +640 478 +480 640 +640 427 +640 427 +427 640 +640 429 +640 480 +640 426 +500 333 +640 480 +640 427 +640 480 +640 480 +640 428 +425 640 +375 500 +640 480 +640 359 +640 480 +640 471 +640 480 +640 427 +640 480 +640 640 +480 640 +640 424 +640 489 +640 494 +480 640 +375 500 +640 427 +480 640 +362 640 +500 375 +480 640 +427 640 +640 480 +640 427 +479 640 +500 375 +426 640 +640 425 +640 428 +640 428 +640 427 +640 426 +640 480 +640 428 +480 640 +640 480 +640 480 +480 640 +640 201 +640 480 +480 640 +640 480 +640 434 +500 375 +640 429 +423 640 +427 640 +640 480 +640 425 +640 409 +640 480 +640 480 +640 433 +640 430 +480 640 +640 435 +640 426 +640 480 +640 360 +500 375 +640 427 +640 461 +640 426 +640 480 +640 480 +640 359 +500 334 +640 480 +640 480 +640 512 +640 343 +640 483 +640 336 +640 426 +640 480 +640 427 +640 424 +640 466 +500 332 +612 612 +640 361 +500 305 +640 465 +640 480 +492 500 +640 480 +640 473 +640 409 +640 480 +640 428 +640 427 +640 486 +465 640 +640 425 +640 496 +640 513 +640 348 +500 500 +640 512 +478 640 +640 480 +640 427 +413 640 +640 419 +640 426 +500 375 +640 428 +640 349 +427 640 +640 430 +640 480 +374 500 +640 481 +500 375 +640 480 +640 427 +640 427 +640 426 +640 426 +640 409 +640 480 +640 480 +500 382 +480 640 +640 425 +640 480 +640 428 +640 480 +480 640 +640 427 +500 333 +640 480 +640 480 +428 640 +640 383 +640 480 +640 600 +640 424 +500 375 +480 640 +640 429 +500 334 +500 375 +640 359 +640 430 +480 640 +640 459 +640 427 +640 294 +375 500 +480 640 +640 481 +640 427 +612 612 +640 425 +640 428 +500 346 +640 427 +640 427 +640 480 +640 480 +640 426 +375 500 +480 640 +427 640 +640 426 +500 333 +375 500 +424 640 +640 429 +640 427 +424 640 +640 425 +640 480 +640 380 +640 419 +640 480 +640 359 +640 464 +640 428 +640 427 +640 427 +481 640 +640 414 +500 373 +640 427 +640 426 +418 640 +640 426 +416 640 +640 480 +640 427 +640 462 +640 480 +640 481 +640 360 +640 359 +427 640 +640 426 +426 640 +640 427 +640 425 +640 482 +481 640 +612 612 +640 424 +524 640 +640 427 +640 427 +640 480 +480 640 +640 439 +640 341 +360 640 +640 429 +640 480 +500 375 +480 640 +640 427 +640 379 +640 424 +480 320 +427 640 +640 360 +640 427 +640 480 +427 640 +640 480 +640 480 +479 640 +640 480 +640 427 +428 640 +640 426 +429 640 +640 425 +640 427 +478 640 +640 480 +640 427 +480 640 +640 530 +640 427 +480 640 +480 640 +640 480 +640 480 +640 426 +425 640 +640 427 +640 480 +640 427 +640 480 +480 640 +640 429 +600 400 +640 428 +426 640 +640 480 +640 480 +427 640 +427 640 +462 640 +360 270 +364 500 +640 640 +612 612 +640 480 +640 480 +480 498 +500 382 +640 427 +612 612 +640 422 +640 426 +500 333 +640 427 +640 561 +640 480 +431 640 +640 480 +640 480 +480 640 +480 640 +640 480 +640 480 +640 432 +640 480 +500 375 +640 480 +640 483 +480 640 +480 640 +480 640 +640 185 +640 424 +640 480 +500 375 +640 480 +480 640 +640 426 +640 427 +427 640 +640 426 +500 476 +426 640 +480 640 +500 273 +480 640 +640 429 +427 640 +500 300 +500 400 +498 640 +640 480 +640 480 +640 480 +640 640 +640 480 +640 426 +375 500 +640 480 +640 425 +427 640 +640 480 +375 500 +640 427 +500 334 +640 429 +427 640 +480 640 +640 427 +640 428 +375 500 +526 640 +500 375 +640 480 +640 480 +640 423 +612 612 +640 452 +640 496 +500 375 +500 375 +383 640 +500 375 +640 427 +612 612 +640 480 +640 480 +612 612 +479 640 +640 430 +640 266 +424 640 +640 480 +640 480 +375 500 +500 333 +565 640 +640 480 +427 640 +500 375 +640 480 +425 640 +640 480 +640 480 +640 427 +640 480 +640 443 +500 583 +640 359 +480 640 +640 479 +640 480 +612 612 +640 427 +478 640 +640 480 +427 640 +640 427 +640 427 +640 427 +640 427 +640 489 +640 640 +640 480 +640 454 +640 360 +500 375 +640 427 +640 360 +640 523 +478 640 +425 640 +640 427 +423 500 +640 427 +425 283 +480 640 +640 376 +500 375 +426 640 +428 640 +640 480 +640 400 +640 427 +640 427 +640 431 +424 640 +640 480 +640 640 +500 333 +490 640 +640 480 +373 640 +640 480 +500 375 +640 426 +640 480 +640 480 +640 480 +640 426 +640 471 +640 426 +640 427 +640 427 +375 500 +640 427 +640 426 +426 640 +640 478 +640 480 +640 397 +480 640 +640 424 +640 428 +427 640 +480 640 +480 640 +640 480 +640 427 +640 480 +640 360 +640 512 +640 436 +640 428 +640 477 +434 640 +640 480 +500 375 +640 348 +640 480 +640 480 +640 480 +500 375 +427 640 +640 426 +424 640 +640 511 +640 433 +640 512 +640 411 +640 427 +640 480 +640 427 +640 427 +640 444 +640 480 +640 480 +640 427 +334 500 +640 354 +640 480 +500 332 +640 480 +640 427 +330 450 +640 427 +427 640 +640 480 +450 394 +480 640 +640 480 +361 640 +640 430 +640 480 +640 469 +640 480 +640 424 +640 429 +640 640 +640 478 +500 446 +375 500 +426 640 +612 612 +491 640 +500 333 +640 480 +640 484 +500 333 +640 480 +640 480 +640 393 +640 480 +640 480 +640 480 +500 375 +500 333 +640 480 +640 480 +500 429 +500 375 +640 480 +384 500 +425 640 +640 427 +640 428 +640 480 +640 480 +640 427 +640 480 +640 480 +640 480 +640 426 +480 640 +428 640 +428 640 +612 612 +427 640 +640 480 +640 428 +427 640 +427 640 +640 439 +640 426 +480 640 +426 640 +640 427 +640 478 +640 426 +640 428 +640 480 +640 427 +640 436 +640 480 +640 383 +640 512 +612 612 +500 334 +640 428 +640 363 +640 426 +640 426 +640 480 +640 427 +640 425 +640 458 +640 480 +640 358 +640 480 +500 333 +640 447 +640 320 +384 640 +640 427 +500 640 +640 428 +640 427 +383 640 +427 640 +427 640 +640 480 +640 363 +640 393 +494 640 +500 331 +640 427 +612 612 +640 480 +640 434 +640 480 +640 427 +500 375 +640 427 +500 375 +640 480 +640 424 +640 480 +640 427 +640 427 +640 483 +640 480 +640 480 +480 640 +640 426 +500 333 +480 640 +640 480 +640 480 +428 640 +500 335 +612 612 +640 480 +559 640 +640 481 +500 375 +431 640 +640 480 +640 425 +640 427 +500 333 +479 640 +640 480 +640 427 +640 480 +640 427 +640 480 +640 425 +640 412 +640 452 +640 480 +640 427 +640 640 +480 640 +640 473 +480 640 +375 500 +640 480 +640 480 +640 480 +640 426 +640 480 +500 335 +640 480 +640 427 +480 640 +451 640 +640 427 +480 640 +640 480 +640 425 +640 426 +640 427 +429 640 +640 429 +426 640 +640 424 +640 480 +640 480 +640 424 +640 452 +640 427 +640 480 +640 480 +640 427 +640 480 +425 640 +640 360 +427 640 +640 425 +640 427 +640 427 +640 344 +640 433 +359 640 +427 640 +500 333 +480 640 +448 640 +640 427 +640 427 +640 426 +640 438 +640 480 +480 640 +640 426 +640 361 +640 500 +640 428 +640 478 +640 480 +500 333 +427 640 +640 428 +640 360 +640 427 +478 640 +332 500 +640 480 +640 427 +640 480 +480 640 +640 427 +498 640 +640 466 +640 474 +333 500 +640 480 +426 640 +640 628 +500 334 +640 427 +640 427 +640 480 +640 427 +640 425 +421 210 +500 333 +640 427 +640 392 +640 428 +640 480 +640 480 +640 480 +640 426 +387 387 +640 493 +640 463 +426 640 +640 480 +480 640 +640 640 +640 426 +640 640 +500 419 +409 640 +640 480 +480 640 +640 480 +640 481 +640 428 +640 426 +640 480 +640 480 +640 516 +375 500 +500 375 +500 375 +480 640 +640 391 +640 480 +480 640 +640 427 +640 480 +427 640 +526 640 +640 425 +640 480 +640 436 +640 508 +612 612 +500 375 +500 333 +640 429 +480 318 +480 640 +480 640 +640 427 +640 428 +640 467 +500 375 +640 428 +427 640 +640 449 +323 500 +640 437 +480 640 +640 480 +640 478 +480 640 +500 336 +640 480 +425 640 +612 612 +478 640 +612 612 +426 640 +640 604 +640 483 +640 478 +640 431 +640 481 +640 480 +425 640 +640 424 +557 640 +480 640 +640 456 +640 480 +640 424 +480 640 +480 640 +640 427 +320 240 +640 428 +640 640 +640 259 +640 360 +640 427 +640 494 +640 480 +427 640 +427 640 +360 360 +480 640 +640 480 +640 480 +640 463 +640 480 +427 640 +640 425 +640 424 +640 480 +640 640 +640 428 +640 425 +640 425 +640 480 +640 480 +640 480 +640 424 +640 440 +640 480 +640 480 +640 426 +500 393 +640 480 +640 480 +480 640 +640 430 +480 640 +500 335 +500 333 +481 640 +500 375 +640 427 +640 564 +640 480 +426 640 +640 426 +640 480 +463 640 +640 480 +640 480 +612 612 +500 375 +640 427 +640 496 +640 427 +478 640 +640 427 +640 427 +375 500 +640 427 +500 375 +359 640 +640 351 +640 421 +480 640 +640 426 +640 427 +640 428 +640 639 +640 480 +640 378 +480 640 +640 424 +640 427 +480 640 +480 640 +500 373 +427 640 +640 480 +640 480 +500 375 +640 480 +640 432 +640 506 +640 427 +640 480 +480 640 +640 480 +480 640 +640 480 +640 487 +640 481 +480 640 +640 427 +640 426 +640 524 +500 333 +426 640 +640 480 +450 640 +640 528 +640 532 +640 463 +640 416 +640 480 +640 480 +640 468 +335 500 +640 480 +375 500 +614 640 +640 427 +640 479 +640 452 +640 427 +500 375 +640 427 +500 417 +640 481 +375 500 +640 480 +640 480 +640 480 +640 427 +506 640 +640 426 +640 480 +640 428 +480 640 +640 480 +640 480 +640 480 +640 427 +500 392 +640 504 +640 427 +480 640 +640 427 +640 428 +480 640 +640 426 +640 481 +640 434 +640 480 +375 500 +640 480 +640 480 +480 640 +640 451 +640 426 +640 480 +640 480 +640 640 +446 640 +640 426 +640 360 +500 333 +500 394 +640 426 +427 640 +640 427 +640 640 +640 480 +640 427 +640 480 +640 513 +426 640 +500 333 +640 480 +640 480 +480 640 +640 426 +480 640 +500 333 +333 500 +640 480 +640 426 +640 427 +640 428 +480 640 +640 426 +640 480 +640 479 +500 368 +415 640 +426 640 +640 426 +526 640 +640 480 +640 480 +500 302 +425 640 +426 640 +640 480 +458 640 +374 500 +630 640 +640 425 +640 480 +427 640 +640 427 +640 480 +640 480 +480 640 +640 480 +640 480 +640 427 +640 480 +640 480 +426 640 +640 424 +534 640 +428 640 +640 427 +500 375 +640 425 +640 496 +640 360 +640 480 +640 428 +640 480 +640 478 +424 640 +640 497 +640 427 +640 480 +640 564 +640 428 +480 640 +640 468 +500 333 +500 333 +640 428 +640 427 +441 640 +427 640 +500 375 +640 481 +640 480 +640 427 +486 640 +640 480 +640 428 +640 426 +612 612 +640 480 +640 427 +640 480 +427 640 +640 418 +332 500 +640 425 +640 480 +640 394 +640 480 +500 374 +500 500 +612 612 +427 640 +425 640 +427 640 +640 480 +640 480 +640 444 +612 612 +640 427 +640 430 +640 426 +500 333 +640 480 +640 426 +612 612 +478 640 +640 426 +394 500 +451 500 +425 640 +640 427 +426 640 +640 424 +424 640 +480 640 +480 640 +640 480 +640 428 +640 504 +640 424 +640 554 +640 480 +428 640 +500 375 +609 640 +640 439 +640 360 +640 561 +480 640 +478 640 +500 375 +481 640 +640 483 +421 640 +640 427 +518 640 +480 640 +640 480 +640 466 +640 394 +426 640 +480 640 +640 491 +640 426 +640 480 +500 375 +427 640 +640 440 +500 375 +480 640 +640 480 +640 502 +427 640 +511 640 +612 612 +640 439 +640 428 +640 426 +640 427 +425 640 +640 427 +469 640 +640 427 +480 640 +480 640 +640 426 +500 333 +640 404 +447 500 +640 427 +640 421 +500 334 +512 640 +640 427 +426 640 +640 480 +640 457 +427 640 +440 640 +427 640 +640 480 +426 640 +640 427 +640 426 +500 375 +500 500 +640 429 +640 427 +640 413 +375 500 +640 427 +480 640 +640 639 +640 480 +500 375 +640 480 +426 640 +427 640 +427 640 +640 427 +334 500 +640 428 +640 427 +640 480 +640 426 +427 640 +640 427 +500 375 +640 360 +640 427 +427 640 +500 375 +429 640 +640 480 +500 333 +640 425 +480 640 +612 612 +640 480 +640 480 +640 514 +402 640 +640 416 +500 333 +640 427 +640 424 +640 480 +640 427 +640 427 +640 427 +640 480 +500 375 +640 427 +640 480 +500 366 +360 480 +640 426 +640 444 +499 640 +612 612 +480 640 +465 640 +640 480 +480 640 +640 427 +360 480 +640 427 +426 640 +640 427 +640 474 +478 640 +375 500 +640 480 +500 398 +425 640 +500 332 +640 427 +500 331 +640 426 +500 373 +640 480 +640 480 +640 424 +480 360 +426 640 +500 333 +640 478 +426 640 +640 427 +640 427 +480 640 +640 640 +640 480 +640 428 +500 478 +427 640 +640 453 +640 480 +500 375 +612 612 +640 640 +640 427 +640 427 +640 427 +427 640 +640 482 +500 333 +640 369 +640 361 +424 640 +288 216 +640 424 +640 428 +400 500 +640 480 +640 427 +640 396 +640 429 +500 365 +375 500 +426 640 +443 640 +640 427 +640 480 +612 612 +427 640 +640 429 +640 428 +640 215 +396 640 +437 640 +640 426 +440 640 +640 480 +640 480 +640 480 +333 500 +500 332 +640 398 +640 480 +500 375 +480 640 +640 426 +640 480 +640 480 +640 428 +640 480 +640 424 +640 427 +640 480 +640 426 +500 333 +612 612 +640 480 +428 640 +427 640 +640 480 +238 640 +480 640 +640 428 +640 480 +398 500 +640 428 +634 640 +640 481 +480 640 +500 332 +640 230 +500 375 +640 480 +640 480 +640 480 +500 346 +640 427 +640 354 +640 480 +640 428 +500 332 +640 480 +640 427 +640 428 +612 612 +640 480 +480 640 +640 427 +640 466 +640 429 +640 426 +479 640 +640 504 +640 336 +415 640 +640 427 +640 428 +640 480 +640 427 +382 640 +640 480 +640 480 +332 500 +640 480 +640 428 +640 426 +640 427 +334 500 +640 473 +640 427 +640 480 +425 640 +640 425 +640 426 +640 383 +500 375 +640 480 +500 375 +469 640 +500 281 +640 480 +640 480 +640 425 +640 478 +640 464 +640 480 +640 428 +480 640 +640 539 +640 428 +640 427 +640 427 +480 640 +640 480 +640 480 +640 480 +480 640 +640 428 +640 427 +640 480 +640 427 +425 640 +500 346 +480 640 +500 293 +466 640 +427 640 +640 480 +640 427 +500 334 +640 640 +500 333 +480 640 +640 480 +444 500 +640 429 +500 333 +640 640 +438 640 +436 640 +480 640 +640 382 +640 480 +640 570 +480 640 +640 480 +612 612 +428 640 +640 480 +640 444 +640 480 +640 360 +640 391 +480 640 +640 426 +640 480 +640 480 +640 480 +640 425 +612 612 +375 500 +640 480 +640 480 +500 375 +500 333 +640 480 +500 375 +427 640 +640 480 +640 426 +640 400 +640 429 +640 428 +640 426 +500 375 +480 640 +400 500 +640 429 +480 640 +480 320 +640 360 +612 612 +640 360 +640 426 +640 426 +427 640 +640 425 +424 640 +640 427 +640 427 +640 426 +612 612 +427 640 +640 425 +640 480 +640 428 +640 425 +640 427 +640 427 +640 351 +640 427 +500 335 +381 500 +425 640 +640 358 +640 424 +500 375 +640 483 +640 480 +478 640 +353 640 +640 427 +640 360 +612 612 +612 612 +640 427 +640 480 +426 640 +640 427 +640 426 +480 640 +640 480 +640 427 +640 360 +640 480 +500 334 +640 480 +640 480 +640 441 +640 425 +640 512 +640 376 +640 360 +640 480 +500 454 +500 375 +640 480 +480 640 +445 640 +640 429 +640 425 +425 640 +640 425 +640 480 +500 357 +612 612 +480 640 +640 434 +640 427 +640 401 +332 500 +640 426 +640 427 +640 478 +500 334 +640 478 +640 480 +640 469 +640 426 +640 424 +640 480 +640 480 +640 480 +640 423 +640 427 +640 427 +640 480 +500 375 +640 428 +375 500 +640 427 +640 480 +640 480 +640 480 +473 615 +640 478 +640 480 +442 287 +480 640 +640 423 +640 427 +500 375 +640 480 +640 480 +640 480 +640 480 +640 436 +640 425 +500 375 +485 640 +640 427 +612 612 +480 640 +640 521 +612 612 +640 393 +640 456 +640 480 +500 375 +640 429 +640 480 +640 425 +640 480 +640 429 +640 427 +500 354 +480 640 +640 480 +640 420 +640 480 +480 640 +640 480 +500 375 +500 375 +375 500 +640 480 +640 475 +426 640 +640 426 +640 427 +640 480 +500 332 +640 427 +640 360 +480 640 +480 640 +640 428 +640 418 +476 640 +640 440 +375 500 +640 478 +640 432 +460 613 +640 480 +408 640 +640 424 +640 480 +407 500 +427 640 +640 427 +640 424 +640 640 +640 480 +640 486 +612 612 +640 403 +640 480 +640 425 +640 426 +640 402 +512 640 +640 640 +360 640 +427 640 +640 375 +640 480 +635 640 +640 480 +640 428 +640 421 +437 640 +640 426 +640 480 +500 356 +480 640 +640 480 +640 427 +640 427 +640 426 +640 480 +640 469 +640 426 +640 271 +640 389 +640 462 +640 464 +640 480 +640 434 +640 480 +640 480 +375 500 +640 152 +480 640 +640 640 +640 436 +480 640 +500 375 +453 640 +500 334 +426 640 +427 640 +375 500 +640 423 +640 427 +640 332 +640 427 +640 480 +640 426 +427 640 +426 640 +500 375 +640 428 +640 480 +449 640 +640 427 +640 411 +640 428 +640 428 +640 427 +501 640 +427 640 +500 375 +556 640 +640 480 +640 470 +612 612 +640 427 +427 640 +640 427 +466 640 +640 424 +640 425 +512 640 +640 480 +640 370 +640 480 +640 427 +640 480 +640 427 +480 640 +640 426 +640 426 +480 640 +640 480 +640 480 +375 500 +640 457 +640 427 +640 426 +427 640 +640 480 +640 480 +640 344 +640 528 +500 375 +640 485 +375 500 +640 413 +640 427 +640 480 +500 333 +640 427 +335 500 +580 440 +640 427 +640 480 +500 318 +640 427 +480 640 +640 429 +640 410 +456 640 +640 427 +640 480 +395 640 +426 640 +427 640 +427 640 +640 426 +427 640 +427 640 +640 427 +640 428 +640 427 +268 402 +640 462 +612 612 +640 480 +640 480 +640 383 +640 427 +640 409 +640 427 +640 427 +640 479 +640 427 +427 640 +640 480 +428 640 +640 427 +640 480 +427 640 +500 400 +426 640 +640 317 +640 480 +480 640 +500 375 +640 427 +480 640 +640 480 +480 640 +640 480 +640 483 +500 426 +612 612 +428 640 +640 426 +640 429 +490 488 +500 375 +640 480 +640 424 +640 480 +640 427 +640 427 +640 408 +640 403 +640 426 +640 556 +640 480 +612 612 +480 640 +480 640 +426 640 +480 640 +640 427 +375 500 +640 424 +640 427 +500 375 +480 640 +640 425 +640 480 +640 418 +640 428 +640 480 +640 479 +640 468 +539 640 +640 480 +491 500 +640 357 +427 640 +640 480 +480 640 +640 480 +426 640 +640 429 +480 640 +426 640 +640 427 +640 375 +500 499 +640 427 +480 640 +426 640 +500 333 +640 286 +640 480 +302 640 +427 640 +640 425 +500 333 +429 640 +640 483 +640 391 +640 355 +640 360 +480 640 +500 334 +640 467 +500 375 +640 480 +640 360 +640 428 +500 332 +640 427 +640 427 +640 426 +480 640 +465 640 +640 426 +640 423 +640 426 +640 480 +500 375 +640 640 +500 375 +500 375 +640 426 +640 418 +424 640 +478 640 +640 427 +640 429 +640 480 +640 476 +480 640 +640 511 +640 427 +427 640 +500 351 +640 427 +640 480 +640 480 +640 480 +480 640 +640 480 +640 374 +640 592 +640 480 +640 427 +375 500 +487 363 +640 461 +640 427 +640 425 +500 375 +640 480 +314 375 +640 427 +375 500 +640 480 +640 360 +639 640 +640 512 +640 453 +640 427 +640 480 +640 448 +375 500 +640 480 +426 640 +640 480 +500 375 +640 426 +640 480 +640 446 +640 383 +480 640 +640 457 +427 640 +640 464 +480 640 +640 480 +640 540 +640 426 +640 480 +640 480 +480 640 +640 428 +480 640 +612 612 +640 425 +480 360 +333 500 +640 440 +426 640 +612 612 +480 640 +640 427 +516 640 +640 480 +367 640 +480 640 +640 426 +480 640 +640 480 +640 480 +640 459 +640 480 +640 374 +640 459 +640 427 +480 640 +500 281 +640 427 +505 640 +640 480 +480 640 +640 480 +640 480 +421 640 +478 640 +640 428 +640 480 +640 480 +640 480 +640 436 +500 333 +640 500 +400 600 +640 427 +640 428 +375 500 +427 640 +596 640 +425 640 +640 427 +500 375 +500 220 +640 388 +480 640 +640 427 +640 360 +640 480 +640 640 +640 480 +640 610 +640 480 +425 640 +427 640 +640 512 +640 440 +640 480 +500 375 +500 249 +427 640 +640 480 +640 427 +424 640 +640 484 +482 640 +600 400 +640 423 +428 640 +640 427 +640 480 +480 542 +640 471 +640 640 +640 424 +640 427 +640 480 +640 425 +548 640 +640 455 +640 360 +429 640 +640 480 +333 500 +640 480 +488 640 +480 640 +640 444 +640 480 +640 481 +640 480 +427 640 +640 427 +425 640 +640 480 +612 612 +375 500 +640 483 +427 640 +500 335 +640 480 +640 426 +640 480 +377 500 +640 496 +640 427 +640 425 +640 426 +640 360 +640 427 +500 422 +640 426 +640 480 +640 480 +640 360 +500 375 +480 640 +480 640 +480 640 +612 612 +374 500 +500 357 +640 338 +640 428 +640 480 +640 360 +640 238 +640 427 +640 481 +640 359 +640 427 +400 261 +640 434 +500 333 +640 427 +640 480 +500 400 +640 481 +640 427 +640 429 +375 500 +640 640 +332 500 +640 434 +640 426 +640 426 +478 640 +640 466 +640 427 +480 640 +427 640 +640 427 +640 427 +640 415 +640 427 +480 640 +640 480 +500 457 +640 480 +496 500 +500 375 +471 486 +500 375 +640 480 +480 640 +640 480 +640 480 +500 333 +427 640 +480 640 +396 640 +500 375 +363 500 +640 480 +480 640 +640 480 +500 330 +612 612 +580 640 +640 480 +640 640 +640 360 +640 478 +640 411 +500 333 +500 331 +640 480 +640 480 +427 640 +640 427 +500 375 +640 427 +500 374 +480 640 +640 427 +640 480 +640 427 +500 296 +640 480 +640 480 +335 500 +500 375 +427 640 +640 480 +640 632 +500 375 +640 551 +640 427 +640 480 +640 365 +640 425 +640 524 +640 480 +640 427 +640 426 +424 640 +640 427 +640 427 +427 640 +426 640 +640 351 +640 480 +640 480 +640 427 +427 640 +640 425 +640 512 +424 640 +640 488 +640 426 +640 480 +640 493 +480 640 +640 428 +425 640 +640 480 +640 480 +640 426 +640 427 +640 426 +500 375 +640 427 +640 426 +500 375 +640 480 +640 360 +500 375 +600 448 +640 428 +500 375 +429 640 +640 426 +640 424 +640 631 +640 427 +612 612 +640 384 +640 480 +640 361 +640 480 +427 640 +640 428 +640 427 +500 217 +640 503 +500 265 +640 427 +640 480 +500 375 +640 427 +500 333 +512 640 +640 320 +500 375 +480 640 +418 640 +640 480 +500 375 +500 400 +640 413 +640 426 +640 285 +480 640 +480 360 +640 425 +640 640 +612 612 +480 640 +640 640 +640 457 +640 427 +500 375 +640 424 +500 332 +599 640 +640 427 +398 640 +640 427 +640 360 +640 425 +480 640 +640 426 +640 480 +640 480 +640 428 +640 416 +640 425 +640 480 +640 480 +640 356 +486 640 +640 427 +640 414 +640 425 +640 480 +640 481 +640 464 +425 640 +427 640 +640 430 +640 445 +640 423 +480 640 +640 396 +433 640 +640 480 +640 480 +640 480 +640 427 +640 457 +376 500 +640 427 +640 480 +640 428 +640 360 +640 427 +640 480 +640 480 +640 447 +640 427 +424 640 +640 425 +640 425 +600 600 +511 640 +640 469 +640 480 +640 427 +480 640 +640 427 +640 480 +640 480 +640 427 +640 360 +640 480 +480 640 +612 612 +333 500 +640 347 +640 480 +500 333 +640 424 +640 480 +640 360 +640 480 +640 640 +480 640 +640 427 +640 480 +640 512 +612 612 +439 640 +640 425 +424 640 +500 334 +500 376 +475 640 +640 426 +640 479 +461 640 +640 431 +640 427 +480 640 +640 480 +427 640 +640 426 +640 478 +640 428 +640 480 +500 323 +480 640 +640 480 +480 640 +375 500 +640 480 +640 480 +640 480 +612 612 +640 427 +640 283 +640 427 +500 375 +640 480 +640 427 +480 640 +427 640 +640 427 +478 640 +512 640 +640 426 +640 640 +640 427 +640 480 +640 427 +480 640 +427 640 +640 427 +640 429 +427 640 +640 480 +640 423 +640 427 +500 375 +640 425 +640 480 +640 503 +500 375 +480 640 +640 426 +640 480 +640 550 +640 447 +640 428 +640 427 +480 640 +500 358 +640 427 +640 514 +500 334 +640 480 +640 359 +640 480 +480 640 +500 353 +427 640 +640 427 +480 640 +640 427 +640 480 +375 500 +491 640 +640 425 +640 480 +612 612 +640 427 +640 427 +332 500 +640 427 +640 428 +500 309 +612 612 +640 249 +480 640 +640 480 +358 640 +640 480 +478 640 +480 640 +640 425 +427 640 +640 512 +640 425 +640 480 +640 426 +612 612 +427 640 +427 640 +640 480 +480 640 +427 640 +640 384 +424 640 +428 640 +480 640 +480 640 +640 480 +640 427 +640 593 +640 480 +640 617 +640 360 +640 480 +640 438 +640 425 +640 422 +480 640 +500 375 +640 426 +640 427 +640 427 +640 480 +640 431 +640 425 +640 427 +640 427 +640 428 +640 424 +640 503 +640 480 +640 425 +640 427 +426 640 +428 640 +640 426 +640 361 +426 640 +375 500 +640 480 +500 375 +640 361 +640 640 +630 640 +480 640 +640 480 +480 640 +640 480 +640 427 +640 480 +530 640 +640 480 +640 428 +640 427 +500 325 +480 640 +433 640 +640 427 +640 452 +640 480 +640 480 +640 427 +640 480 +640 480 +640 480 +480 640 +640 480 +640 424 +640 426 +427 640 +640 480 +640 426 +640 414 +375 500 +640 428 +640 427 +480 640 +640 640 +640 480 +640 427 +640 427 +640 427 +500 375 +640 427 +640 480 +480 640 +500 390 +640 427 +617 640 +640 480 +640 480 +427 640 +500 375 +640 427 +640 454 +480 640 +640 427 +640 424 +640 426 +640 425 +500 333 +640 480 +640 268 +640 404 +480 640 +640 424 +640 427 +640 429 +640 361 +600 400 +640 426 +500 351 +640 480 +640 480 +640 424 +640 360 +427 640 +640 449 +640 480 +640 480 +640 427 +375 500 +640 427 +640 359 +640 471 +640 480 +500 327 +640 427 +427 640 +427 640 +612 612 +640 480 +640 429 +427 640 +427 640 +640 426 +640 426 +640 424 +480 640 +500 375 +428 640 +480 640 +640 599 +333 500 +640 427 +640 360 +612 612 +640 480 +640 594 +640 480 +480 640 +640 426 +640 427 +640 480 +500 376 +480 640 +500 375 +426 640 +640 426 +640 480 +640 360 +600 450 +612 612 +486 640 +640 480 +512 640 +427 640 +640 480 +480 640 +640 426 +489 640 +640 480 +475 355 +480 640 +375 500 +480 640 +426 640 +480 640 +640 361 +536 640 +500 375 +480 640 +375 500 +640 427 +640 640 +640 421 +500 473 +640 428 +369 640 +640 480 +375 500 +500 375 +640 480 +640 480 +640 480 +640 422 +640 425 +640 480 +640 480 +480 640 +640 427 +640 427 +640 425 +426 640 +640 427 +500 312 +640 263 +480 640 +640 480 +640 640 +375 500 +640 463 +640 480 +640 456 +640 480 +500 375 +640 425 +427 640 +640 426 +500 329 +640 480 +500 375 +640 427 +640 480 +640 427 +640 547 +640 426 +480 640 +640 427 +640 418 +640 328 +480 640 +640 480 +640 427 +500 255 +640 427 +480 640 +480 640 +640 409 +640 480 +428 640 +375 500 +500 333 +640 480 +606 640 +640 480 +640 434 +640 464 +640 429 +640 427 +480 640 +640 426 +640 369 +640 426 +640 366 +640 426 +640 480 +375 500 +500 375 +640 480 +640 426 +640 480 +640 480 +640 420 +395 640 +612 612 +640 480 +640 426 +480 640 +640 427 +500 375 +460 640 +640 412 +640 427 +640 480 +473 600 +640 640 +612 612 +640 480 +640 404 +640 480 +640 480 +640 526 +500 363 +640 414 +640 400 +640 427 +640 427 +640 427 +640 480 +640 480 +640 427 +640 515 +498 640 +640 472 +640 480 +480 640 +640 415 +333 500 +640 480 +640 461 +640 426 +640 406 +640 512 +428 640 +640 427 +640 480 +640 480 +640 628 +640 427 +427 640 +426 640 +640 427 +640 427 +640 480 +640 424 +554 640 +480 640 +640 415 +640 426 +480 640 +500 334 +500 375 +640 427 +640 466 +640 427 +640 428 +427 640 +640 428 +640 427 +640 480 +640 480 +640 360 +640 426 +640 480 +500 333 +500 356 +640 360 +640 480 +640 427 +480 640 +640 480 +640 592 +612 612 +640 480 +640 479 +640 466 +640 429 +640 480 +612 612 +640 512 +479 640 +640 480 +640 480 +640 480 +640 427 +640 480 +500 349 +640 523 +640 480 +640 480 +640 483 +640 428 +399 500 +500 375 +640 427 +640 381 +640 480 +640 427 +640 426 +640 393 +640 426 +565 640 +480 640 +640 426 +480 640 +480 640 +454 640 +573 640 +640 480 +640 427 +480 640 +640 427 +640 480 +497 500 +640 427 +640 360 +500 375 +640 427 +640 425 +480 640 +640 428 +426 640 +500 491 +480 640 +374 500 +640 480 +640 425 +360 480 +640 480 +612 612 +640 480 +640 349 +375 500 +640 425 +640 360 +640 427 +640 427 +428 640 +640 480 +425 640 +375 500 +640 359 +640 480 +500 375 +427 640 +640 429 +640 480 +640 480 +640 480 +640 470 +434 640 +500 375 +640 425 +640 305 +640 427 +640 480 +426 640 +360 640 +640 480 +375 500 +480 640 +478 640 +640 480 +595 640 +640 428 +640 480 +480 640 +640 480 +500 281 +640 480 +500 333 +640 427 +640 428 +500 191 +409 640 +640 480 +425 640 +640 512 +640 480 +640 426 +640 427 +640 424 +640 427 +640 427 +640 480 +640 480 +640 476 +640 536 +640 480 +640 480 +640 480 +500 375 +640 427 +640 480 +500 500 +640 480 +640 340 +640 480 +640 480 +426 640 +640 473 +500 333 +640 480 +640 470 +640 427 +640 502 +640 426 +640 298 +640 480 +480 640 +640 480 +640 480 +640 480 +640 426 +612 612 +500 375 +640 429 +500 338 +500 375 +640 480 +500 375 +492 640 +640 427 +640 429 +640 599 +640 480 +338 450 +640 480 +640 480 +640 359 +500 366 +640 424 +428 640 +640 480 +640 427 +640 480 +500 333 +500 375 +640 425 +480 640 +426 640 +640 346 +640 480 +640 480 +640 480 +612 612 +428 640 +640 427 +399 640 +356 500 +427 640 +640 480 +640 480 +640 480 +640 640 +640 480 +640 441 +640 480 +500 375 +480 640 +612 612 +500 375 +640 441 +640 427 +640 427 +640 427 +427 640 +640 424 +480 640 +640 427 +500 392 +640 427 +427 640 +640 512 +640 480 +486 640 +640 480 +640 453 +640 425 +640 480 +640 428 +479 640 +640 480 +640 480 +375 500 +480 640 +640 427 +490 640 +480 640 +640 424 +427 640 +640 426 +640 426 +333 500 +375 500 +427 640 +640 424 +480 640 +500 333 +640 426 +640 480 +640 471 +632 640 +640 480 +640 421 +640 480 +640 352 +640 427 +480 640 +640 426 +640 480 +640 459 +640 480 +640 427 +427 640 +640 480 +640 443 +640 428 +640 480 +640 480 +485 640 +427 640 +640 427 +640 424 +640 640 +640 480 +640 427 +640 427 +640 406 +640 493 +640 480 +612 612 +500 375 +640 466 +640 422 +640 434 +640 428 +640 427 +640 427 +640 480 +640 425 +454 640 +640 338 +640 427 +500 334 +640 363 +640 426 +457 640 +640 427 +640 478 +428 640 +500 375 +640 480 +360 640 +640 427 +640 427 +480 640 +640 480 +640 424 +640 360 +640 414 +640 437 +640 480 +640 428 +500 375 +480 640 +480 640 +427 640 +448 300 +486 640 +500 375 +500 400 +640 449 +640 415 +427 640 +640 428 +640 480 +640 480 +427 640 +500 333 +500 341 +500 375 +500 375 +640 480 +640 427 +640 512 +640 427 +480 640 +640 480 +500 334 +640 427 +640 424 +640 426 +640 427 +480 640 +480 640 +640 426 +640 427 +640 480 +640 429 +480 640 +640 480 +640 427 +612 612 +500 333 +640 427 +612 612 +500 375 +640 427 +426 640 +640 428 +640 480 +550 640 +500 375 +334 500 +427 640 +640 480 +640 480 +463 640 +367 500 +640 427 +640 438 +500 331 +612 612 +640 480 +500 291 +600 400 +640 427 +427 640 +640 480 +640 480 +375 500 +640 428 +640 427 +500 176 +640 427 +640 425 +640 597 +640 427 +640 480 +480 640 +640 640 +640 480 +425 640 +500 375 +456 640 +640 427 +640 426 +640 519 +640 411 +375 500 +640 427 +428 640 +428 640 +640 463 +640 561 +640 361 +427 640 +640 480 +640 426 +640 480 +522 640 +640 512 +640 480 +640 480 +640 508 +640 480 +640 427 +439 640 +640 360 +640 499 +640 479 +640 480 +640 640 +640 427 +640 480 +640 427 +425 640 +375 500 +500 357 +500 375 +418 640 +640 425 +386 500 +640 426 +640 480 +640 438 +640 480 +640 429 +640 480 +500 332 +427 640 +640 424 +293 500 +425 640 +612 612 +640 546 +640 481 +640 433 +612 612 +640 480 +640 489 +640 480 +480 640 +640 480 +428 640 +328 480 +640 423 +640 426 +480 640 +640 480 +470 640 +640 425 +640 480 +640 480 +612 612 +640 480 +448 500 +575 640 +640 425 +640 480 +427 640 +640 480 +640 480 +640 480 +345 640 +640 427 +500 331 +427 640 +640 427 +640 480 +640 640 +640 478 +478 640 +640 426 +640 480 +640 480 +640 427 +640 480 +640 427 +640 640 +640 480 +640 425 +427 640 +500 375 +480 640 +500 375 +500 375 +629 640 +640 480 +640 426 +640 480 +640 427 +640 426 +480 640 +640 425 +500 375 +640 480 +640 480 +480 640 +640 426 +640 425 +640 427 +426 640 +480 640 +424 640 +640 406 +640 272 +640 480 +640 480 +424 640 +427 640 +640 480 +440 640 +375 500 +640 426 +429 640 +383 640 +640 480 +612 612 +640 426 +640 480 +640 428 +640 480 +640 480 +640 425 +640 480 +428 640 +427 640 +640 480 +640 480 +640 480 +640 427 +640 425 +640 424 +640 480 +640 430 +640 480 +640 359 +640 480 +499 500 +640 480 +640 480 +640 478 +640 360 +640 427 +640 512 +640 415 +640 480 +640 480 +612 612 +640 214 +640 426 +640 481 +640 427 +459 640 +640 427 +480 640 +480 640 +640 480 +430 640 +640 480 +640 426 +640 480 +478 640 +640 423 +640 480 +640 480 +506 640 +640 480 +640 427 +383 640 +640 425 +640 427 +500 375 +335 500 +640 480 +199 640 +640 428 +640 428 +640 480 +640 480 +480 640 +640 425 +500 375 +640 426 +500 500 +640 480 +640 427 +640 480 +640 572 +640 427 +640 424 +640 438 +500 500 +640 427 +640 423 +640 480 +640 220 +640 428 +480 640 +640 480 +640 429 +375 500 +333 500 +640 480 +640 400 +640 426 +640 429 +640 480 +640 480 +640 426 +640 428 +500 375 +640 480 +427 640 +480 640 +375 500 +500 357 +480 640 +352 640 +640 473 +640 480 +640 480 +640 427 +640 454 +640 427 +640 529 +640 480 +640 427 +640 640 +640 480 +640 352 +640 320 +640 543 +640 558 +640 480 +640 426 +640 426 +500 375 +480 640 +640 480 +640 480 +500 375 +640 427 +640 424 +500 333 +640 478 +640 427 +640 480 +640 428 +640 480 +640 428 +640 427 +500 375 +640 480 +640 425 +480 640 +435 640 +640 428 +640 379 +640 480 +640 272 +427 640 +640 426 +640 424 +640 428 +500 375 +640 480 +640 428 +640 410 +640 480 +640 426 +341 500 +640 427 +640 427 +424 640 +640 595 +640 480 +640 427 +640 425 +640 324 +640 427 +640 425 +640 480 +480 640 +480 640 +500 500 +640 427 +640 413 +640 427 +640 426 +640 428 +640 480 +640 444 +448 336 +640 426 +445 500 +500 375 +480 640 +640 427 +640 493 +500 334 +338 500 +480 640 +480 640 +640 480 +640 480 +640 640 +640 390 +640 480 +640 398 +640 504 +640 480 +640 534 +480 640 +640 480 +640 480 +640 480 +640 480 +640 427 +425 640 +375 500 +640 426 +640 430 +640 597 +500 375 +640 480 +640 474 +640 640 +500 333 +640 426 +640 428 +640 480 +640 436 +640 458 +480 640 +480 640 +426 640 +428 640 +500 345 +640 360 +640 360 +640 480 +375 500 +640 427 +500 333 +480 640 +640 480 +425 640 +640 478 +558 640 +640 410 +640 425 +428 640 +640 426 +480 640 +640 427 +471 640 +640 469 +640 427 +640 480 +640 480 +640 480 +375 500 +429 640 +640 480 +369 336 +640 443 +480 640 +640 478 +333 500 +640 428 +640 481 +640 427 +640 480 +640 428 +640 480 +640 482 +375 500 +640 512 +640 480 +640 480 +640 426 +640 640 +640 480 +640 438 +640 480 +640 427 +531 640 +480 640 +640 478 +640 425 +640 425 +640 427 +640 426 +640 431 +612 612 +411 640 +500 375 +640 427 +640 498 +640 480 +640 420 +500 376 +427 640 +640 425 +431 640 +521 640 +640 428 +480 640 +375 500 +640 427 +640 480 +640 427 +500 375 +480 640 +541 640 +640 480 +640 432 +500 364 +640 480 +500 333 +504 378 +523 640 +640 489 +640 360 +640 480 +480 640 +640 427 +640 427 +480 640 +640 427 +640 427 +500 333 +640 480 +640 427 +640 400 +640 426 +640 480 +640 425 +425 640 +640 480 +427 640 +640 541 +640 491 +640 426 +480 640 +480 640 +564 640 +640 478 +424 640 +335 500 +500 377 +640 426 +640 428 +640 430 +640 478 +640 429 +640 427 +332 500 +361 640 +640 457 +640 480 +640 427 +640 427 +640 361 +640 480 +640 480 +640 427 +480 640 +640 428 +640 424 +640 426 +480 640 +426 640 +640 426 +640 592 +640 480 +640 480 +640 480 +480 640 +640 423 +640 480 +640 480 +383 640 +500 375 +640 489 +640 480 +500 375 +640 480 +500 333 +480 640 +640 363 +427 640 +640 480 +640 426 +640 479 +427 640 +640 435 +333 500 +640 426 +640 427 +640 478 +640 441 +640 480 +480 640 +640 427 +427 640 +640 640 +500 376 +427 640 +640 426 +640 426 +640 424 +640 459 +640 457 +640 437 +640 480 +640 480 +640 399 +640 480 +480 640 +640 480 +640 480 +640 393 +375 500 +427 640 +640 480 +640 427 +640 480 +640 427 +500 375 +480 640 +480 640 +640 425 +500 387 +640 429 +640 480 +478 640 +480 640 +640 426 +500 333 +500 375 +640 480 +640 429 +640 480 +426 640 +427 640 +480 640 +500 332 +640 480 +480 640 +640 426 +640 432 +486 640 +428 640 +640 429 +640 459 +393 640 +640 425 +427 640 +640 428 +548 640 +640 411 +489 500 +640 427 +640 414 +640 427 +480 640 +500 344 +480 640 +640 503 +428 640 +500 375 +500 375 +640 444 +640 427 +500 375 +640 424 +456 640 +612 612 +375 500 +427 640 +500 333 +640 480 +640 480 +640 480 +640 480 +640 425 +640 512 +582 640 +480 640 +640 480 +640 515 +500 369 +640 428 +640 480 +478 640 +640 427 +500 332 +577 640 +500 375 +444 640 +640 453 +640 360 +640 633 +640 383 +640 480 +640 427 +640 406 +500 357 +480 640 +640 424 +640 480 +640 480 +579 640 +640 480 +640 480 +640 427 +450 338 +640 480 +640 356 +514 640 +425 567 +640 480 +600 400 +427 640 +640 431 +640 480 +640 426 +640 480 +640 426 +612 612 +640 480 +480 640 +468 640 +640 480 +640 443 +640 427 +425 640 +640 519 +480 640 +333 500 +427 640 +640 427 +428 640 +640 425 +640 425 +640 480 +640 480 +640 480 +500 375 +640 425 +480 640 +640 491 +640 486 +480 640 +500 375 +640 427 +640 428 +640 308 +640 365 +479 640 +500 333 +512 640 +640 480 +640 480 +640 480 +640 361 +640 427 +640 480 +554 640 +500 332 +640 427 +640 425 +640 512 +640 480 +500 375 +375 500 +640 448 +640 426 +305 480 +612 612 +375 500 +640 452 +640 425 +640 480 +640 427 +640 428 +640 426 +500 332 +640 425 +640 360 +612 612 +480 640 +640 429 +428 640 +500 375 +640 413 +640 480 +640 427 +500 375 +476 640 +640 480 +640 480 +640 427 +640 480 +345 500 +500 375 +480 640 +640 427 +640 427 +640 360 +392 640 +500 375 +640 427 +574 640 +640 428 +640 427 +640 438 +500 375 +640 424 +480 640 +640 427 +640 427 +500 375 +640 427 +640 425 +640 425 +480 640 +640 477 +640 480 +640 424 +640 494 +640 424 +333 500 +453 640 +500 375 +610 407 +612 612 +640 428 +426 640 +375 500 +640 480 +640 427 +425 640 +640 427 +640 640 +449 401 +640 426 +427 640 +640 429 +640 428 +600 400 +640 640 +640 464 +500 375 +640 427 +640 427 +640 480 +640 360 +480 640 +640 425 +525 525 +426 640 +640 427 +500 375 +640 427 +640 427 +425 640 +480 640 +640 573 +630 450 +640 480 +612 612 +640 480 +480 640 +640 506 +640 425 +640 405 +360 640 +640 480 +640 622 +640 425 +375 500 +640 427 +612 612 +640 457 +568 640 +640 480 +640 427 +640 426 +480 640 +427 640 +640 427 +640 428 +640 400 +640 480 +480 640 +640 428 +480 640 +480 640 +480 640 +599 640 +640 480 +640 480 +640 426 +640 478 +640 480 +640 427 +640 425 +375 500 +640 480 +375 500 +607 640 +375 500 +640 480 +640 434 +638 640 +493 500 +640 480 +640 506 +640 427 +640 427 +463 640 +640 360 +640 427 +640 619 +640 484 +375 500 +640 480 +538 640 +500 333 +640 429 +500 375 +500 488 +640 428 +640 427 +438 640 +640 480 +640 393 +640 427 +640 480 +500 330 +640 572 +500 366 +640 480 +640 425 +640 424 +640 478 +500 381 +640 427 +640 480 +640 399 +640 499 +640 426 +640 402 +375 500 +479 640 +500 335 +640 428 +640 428 +500 375 +640 480 +500 341 +640 483 +640 361 +424 640 +640 480 +640 427 +640 483 +640 427 +640 424 +640 480 +640 424 +480 640 +640 640 +427 640 +400 300 +640 480 +375 500 +640 480 +640 429 +500 332 +323 486 +640 480 +640 273 +640 427 +640 466 +640 506 +640 463 +640 480 +640 480 +640 640 +427 640 +640 480 +426 640 +640 480 +640 456 +480 640 +640 480 +640 480 +500 376 +500 375 +640 480 +480 640 +640 383 +640 480 +640 480 +420 640 +640 480 +640 427 +374 500 +640 471 +612 612 +640 480 +640 427 +640 480 +500 375 +640 480 +640 480 +640 427 +640 452 +640 402 +640 352 +640 427 +500 375 +640 480 +375 500 +640 640 +640 464 +427 640 +500 296 +376 500 +640 544 +480 640 +640 480 +500 332 +640 426 +640 426 +640 463 +640 426 +640 466 +640 480 +371 500 +500 640 +500 375 +333 500 +640 480 +500 333 +240 193 +480 640 +426 640 +640 424 +640 480 +640 480 +480 640 +571 640 +480 640 +640 640 +640 480 +375 500 +640 427 +428 640 +640 472 +640 428 +640 480 +377 500 +480 640 +640 426 +500 333 +480 640 +640 360 +640 478 +431 640 +536 640 +640 426 +640 424 +612 612 +480 640 +427 640 +640 480 +640 480 +640 427 +427 640 +425 640 +640 427 +500 375 +436 640 +640 427 +640 437 +333 500 +480 640 +612 612 +559 640 +640 427 +640 426 +640 480 +640 400 +640 406 +640 358 +640 424 +500 315 +640 426 +640 480 +640 427 +640 480 +640 424 +427 640 +398 500 +640 480 +500 313 +640 360 +640 480 +640 360 +640 480 +640 427 +640 426 +480 640 +640 456 +500 346 +500 475 +640 427 +640 427 +640 414 +428 640 +640 428 +428 640 +500 332 +426 640 +640 427 +480 640 +640 480 +640 480 +500 375 +500 375 +640 307 +640 480 +480 640 +640 472 +640 426 +426 640 +640 428 +427 640 +480 640 +480 640 +340 500 +640 480 +640 428 +640 502 +640 480 +640 457 +640 552 +640 359 +640 428 +500 375 +640 480 +480 640 +500 310 +524 640 +640 427 +640 427 +640 480 +500 375 +478 640 +640 480 +426 640 +640 433 +375 500 +640 616 +640 428 +640 480 +640 480 +500 334 +427 640 +640 429 +640 427 +640 480 +640 480 +640 480 +640 427 +640 480 +573 640 +427 640 +640 480 +640 427 +500 375 +640 480 +500 373 +478 640 +640 429 +371 500 +480 640 +640 440 +640 425 +640 480 +500 375 +427 640 +500 332 +427 640 +640 480 +334 500 +640 427 +640 427 +640 480 +428 640 +375 500 +640 427 +640 383 +427 640 +500 333 +640 427 +500 375 +427 640 +640 480 +640 425 +640 427 +640 427 +640 427 +640 358 +500 375 +640 427 +640 480 +640 480 +478 640 +480 640 +640 360 +640 480 +640 427 +480 640 +333 500 +640 427 +640 512 +640 480 +500 334 +480 640 +640 427 +583 640 +480 640 +640 480 +640 426 +640 427 +640 512 +480 640 +640 427 +640 480 +640 625 +462 640 +640 480 +640 480 +640 339 +640 427 +500 341 +640 427 +640 462 +500 375 +640 427 +500 375 +375 500 +640 427 +640 478 +640 480 +435 640 +640 426 +640 427 +427 640 +640 448 +640 426 +500 375 +640 426 +640 480 +640 427 +375 500 +640 427 +500 375 +488 640 +640 480 +640 426 +640 640 +480 640 +320 240 +640 483 +640 426 +640 489 +640 426 +640 359 +473 500 +640 480 +640 433 +612 612 +640 428 +640 457 +500 375 +413 500 +640 474 +640 458 +427 640 +375 500 +421 640 +640 427 +476 640 +568 640 +640 426 +640 425 +424 640 +500 324 +640 480 +640 427 +640 426 +500 375 +426 640 +640 480 +640 427 +375 500 +640 426 +640 640 +640 425 +640 480 +640 480 +640 480 +640 427 +612 612 +640 413 +640 480 +500 333 +640 498 +640 427 +302 500 +640 354 +424 640 +427 640 +480 640 +640 492 +428 640 +640 496 +640 428 +612 612 +480 640 +640 483 +640 480 +640 480 +640 480 +640 479 +640 427 +640 425 +640 426 +640 428 +500 375 +640 429 +640 429 +500 375 +480 640 +390 293 +480 640 +640 425 +444 640 +640 640 +500 375 +640 480 +640 427 +640 427 +500 499 +500 334 +640 480 +414 640 +500 375 +640 478 +486 640 +640 480 +478 640 +640 359 +640 480 +480 640 +640 480 +640 427 +640 480 +640 640 +500 500 +414 310 +640 428 +600 469 +640 459 +500 375 +640 480 +449 600 +640 427 +640 480 +480 640 +640 428 +640 426 +640 480 +426 640 +640 480 +640 424 +640 433 +640 480 +640 480 +640 434 +375 500 +640 480 +500 334 +640 428 +640 427 +427 640 +640 480 +640 480 +640 427 +640 427 +640 480 +640 480 +500 363 +640 480 +640 480 +480 640 +640 480 +640 480 +640 480 +480 640 +640 480 +480 640 +640 480 +640 427 +500 281 +640 427 +426 640 +478 640 +640 480 +640 480 +640 427 +640 427 +573 640 +640 297 +500 333 +640 428 +640 480 +640 640 +480 640 +640 494 +640 427 +640 480 +428 640 +640 427 +427 640 +640 480 +500 375 +640 427 +500 372 +432 640 +640 426 +427 640 +640 427 +429 640 +640 393 +478 640 +640 426 +640 426 +500 332 +499 500 +640 484 +640 640 +640 424 +375 500 +500 375 +640 428 +640 426 +427 640 +500 333 +640 426 +612 612 +640 480 +640 427 +640 360 +640 480 +640 480 +539 640 +615 310 +480 640 +640 640 +640 453 +427 640 +640 513 +640 427 +640 480 +640 480 +640 403 +612 612 +500 375 +640 480 +640 427 +640 640 +640 480 +640 427 +480 640 +640 480 +640 480 +640 483 +640 480 +640 427 +500 375 +640 480 +640 490 +612 612 +612 612 +500 375 +640 478 +480 640 +480 640 +640 480 +640 480 +426 640 +640 478 +640 480 +640 425 +640 512 +426 640 +640 383 +640 427 +640 480 +458 640 +640 510 +480 640 +640 478 +640 426 +640 480 +640 427 +640 480 +640 412 +640 480 +640 428 +640 480 +640 426 +640 480 +500 375 +640 392 +640 427 +640 427 +480 640 +600 400 +640 426 +640 479 +640 425 +640 480 +640 480 +486 640 +426 640 +640 427 +640 426 +640 425 +640 360 +640 426 +427 640 +334 500 +500 375 +640 427 +640 427 +640 480 +581 640 +640 480 +640 480 +480 640 +640 427 +640 480 +640 427 +640 425 +640 480 +480 640 +640 427 +640 422 +640 426 +640 480 +480 640 +640 480 +640 480 +640 427 +640 360 +640 480 +640 427 +426 640 +542 640 +640 480 +640 482 +640 428 +480 640 +640 424 +375 500 +480 640 +427 640 +640 480 +640 480 +640 427 +640 427 +640 427 +427 640 +500 375 +480 640 +640 480 +375 500 +640 427 +640 480 +640 495 +640 409 +640 427 +640 480 +640 425 +640 361 +375 500 +480 640 +480 640 +500 500 +640 361 +480 640 +500 332 +640 427 +500 375 +480 640 +640 388 +500 375 +640 366 +640 480 +426 640 +640 428 +640 427 +640 428 +424 640 +500 375 +612 612 +640 480 +640 512 +640 427 +640 428 +480 640 +640 425 +640 480 +640 434 +640 451 +500 334 +640 430 +500 375 +640 480 +640 516 +640 480 +427 640 +480 640 +640 480 +640 425 +640 480 +640 480 +640 427 +640 427 +640 427 +640 480 +640 480 +640 381 +640 480 +640 401 +500 335 +640 361 +640 425 +429 640 +480 640 +512 640 +427 640 +640 640 +480 640 +500 375 +640 427 +480 640 +640 480 +640 429 +375 500 +640 506 +428 640 +640 427 +640 480 +640 577 +500 375 +640 559 +640 360 +480 640 +640 427 +612 612 +640 428 +640 512 +480 640 +640 424 +511 640 +500 375 +480 640 +640 429 +640 480 +640 640 +500 375 +640 426 +640 427 +640 481 +640 396 +640 426 +640 480 +500 375 +500 333 +480 640 +454 640 +333 500 +640 480 +640 447 +640 480 +640 427 +640 480 +640 480 +640 427 +640 200 +500 375 +640 480 +640 480 +640 427 +640 425 +640 427 +640 478 +426 640 +640 427 +357 500 +640 424 +640 480 +640 425 +640 426 +640 426 +640 480 +500 375 +480 640 +640 414 +500 346 +640 427 +478 640 +640 349 +640 427 +640 427 +640 638 +640 427 +512 640 +640 378 +640 425 +640 425 +500 375 +375 500 +640 425 +640 427 +640 480 +640 395 +640 348 +640 480 +640 480 +427 640 +500 375 +640 426 +500 340 +375 500 +640 480 +640 480 +640 480 +426 640 +480 640 +326 640 +640 427 +640 483 +640 424 +640 515 +640 425 +640 391 +480 640 +640 360 +640 427 +612 612 +640 424 +465 640 +480 640 +640 426 +494 500 +640 478 +640 427 +640 427 +640 427 +480 640 +640 558 +640 480 +500 334 +640 429 +640 480 +640 426 +640 506 +640 480 +640 640 +640 480 +640 480 +500 375 +640 427 +640 426 +640 426 +612 612 +640 428 +640 480 +640 480 +640 426 +427 640 +640 428 +640 427 +640 427 +640 480 +640 427 +640 480 +640 427 +612 612 +640 480 +640 480 +425 640 +640 427 +640 424 +640 427 +480 640 +640 480 +640 425 +500 332 +640 427 +640 640 +375 500 +427 640 +500 375 +640 480 +640 427 +500 334 +427 640 +424 640 +427 640 +640 339 +640 480 +640 427 +500 333 +481 640 +200 150 +640 480 +425 640 +640 480 +428 640 +640 480 +640 512 +600 400 +640 428 +640 480 +640 359 +428 640 +612 612 +640 480 +640 425 +640 480 +500 334 +429 640 +640 425 +640 427 +419 640 +640 480 +426 640 +612 612 +640 427 +640 427 +640 458 +375 500 +428 640 +500 375 +640 427 +480 640 +640 480 +480 640 +640 480 +500 375 +640 427 +480 640 +640 457 +500 333 +640 480 +640 483 +640 294 +640 427 +375 500 +640 480 +640 426 +640 427 +640 427 +640 426 +640 208 +640 424 +290 640 +640 480 +640 480 +640 480 +400 600 +640 424 +640 426 +640 480 +426 640 +640 426 +640 480 +427 640 +427 640 +640 480 +480 640 +640 441 +366 640 +640 427 +640 426 +500 375 +480 640 +375 500 +640 449 +640 480 +640 427 +457 640 +640 428 +480 640 +430 640 +480 640 +600 450 +640 453 +640 480 +640 238 +640 480 +640 428 +640 424 +500 375 +640 185 +640 427 +335 500 +640 478 +640 427 +427 640 +500 333 +640 480 +428 640 +640 480 +640 427 +386 640 +640 457 +640 480 +640 433 +640 429 +640 427 +640 480 +640 478 +640 480 +612 612 +640 428 +640 323 +640 439 +640 480 +640 493 +640 480 +427 640 +640 427 +640 455 +640 480 +640 425 +640 427 +375 500 +500 333 +640 480 +640 480 +640 480 +427 640 +480 640 +640 436 +375 500 +427 640 +640 427 +426 640 +457 640 +640 359 +640 480 +640 583 +640 424 +500 375 +441 640 +640 425 +640 426 +640 360 +427 640 +640 441 +640 426 +640 480 +640 427 +612 612 +640 425 +640 425 +640 427 +640 427 +640 480 +360 237 +375 500 +480 640 +524 640 +640 408 +427 640 +612 612 +640 480 +428 640 +640 480 +640 480 +640 426 +500 357 +500 364 +500 375 +640 423 +640 480 +640 427 +612 612 +640 484 +640 423 +544 640 +640 427 +640 480 +500 375 +500 500 +425 640 +426 640 +500 333 +480 640 +640 427 +402 640 +640 424 +341 280 +640 427 +640 512 +640 480 +640 491 +480 640 +640 480 +500 375 +640 480 +640 400 +500 333 +426 640 +640 427 +640 480 +500 375 +500 400 +500 375 +375 500 +640 479 +640 406 +640 514 +427 640 +640 222 +500 375 +459 640 +480 640 +640 425 +500 375 +640 427 +640 539 +640 425 +640 448 +640 427 +426 640 +500 323 +640 327 +427 640 +359 640 +640 428 +640 426 +640 425 +425 640 +424 640 +500 379 +427 640 +640 427 +375 500 +640 480 +640 480 +640 468 +640 480 +427 640 +640 480 +640 480 +640 426 +640 428 +640 426 +640 426 +640 480 +640 480 +640 403 +332 500 +500 333 +426 640 +640 458 +480 640 +500 375 +446 640 +640 480 +640 480 +640 384 +500 375 +640 426 +640 478 +500 375 +640 479 +500 375 +500 311 +640 543 +640 427 +500 375 +640 412 +480 640 +480 640 +375 500 +640 427 +640 427 +480 640 +640 426 +640 424 +480 640 +640 451 +640 427 +640 640 +640 448 +640 480 +640 480 +640 427 +640 427 +640 512 +640 480 +480 640 +640 481 +640 417 +640 425 +500 375 +640 563 +640 427 +640 426 +640 427 +640 427 +640 459 +640 459 +640 480 +640 438 +429 640 +640 545 +640 426 +612 612 +640 480 +640 428 +640 424 +640 427 +635 640 +640 417 +640 427 +480 360 +500 375 +500 375 +640 417 +640 360 +427 640 +500 375 +480 640 +640 389 +640 480 +640 480 +640 443 +640 427 +640 427 +640 427 +640 442 +512 640 +640 480 +494 640 +640 427 +612 612 +640 427 +612 612 +500 500 +640 427 +640 427 +640 427 +640 424 +480 640 +640 429 +640 356 +640 442 +640 458 +640 434 +640 427 +640 427 +480 640 +488 640 +640 480 +640 452 +427 640 +640 428 +640 425 +500 375 +427 640 +640 426 +640 480 +428 640 +483 640 +640 480 +640 429 +640 428 +640 480 +640 412 +640 427 +500 375 +427 640 +500 473 +640 640 +640 480 +640 427 +640 480 +640 429 +640 427 +426 640 +424 640 +640 400 +640 479 +640 490 +640 480 +480 640 +640 480 +500 333 +640 457 +640 427 +640 480 +428 640 +640 480 +640 425 +500 375 +640 279 +500 228 +640 480 +640 480 +640 480 +500 500 +640 456 +640 536 +500 375 +640 427 +640 478 +426 640 +480 640 +480 640 +500 400 +640 480 +480 640 +640 351 +640 480 +640 480 +640 427 +640 427 +640 480 +612 612 +640 360 +640 360 +640 332 +640 480 +500 349 +500 333 +640 386 +382 500 +500 375 +480 640 +614 640 +640 418 +500 375 +640 428 +640 640 +640 359 +640 480 +640 464 +541 640 +500 375 +640 426 +640 480 +640 427 +640 613 +500 349 +640 425 +500 375 +640 480 +480 640 +630 640 +640 427 +640 480 +640 480 +640 480 +500 375 +400 600 +500 375 +640 457 +640 461 +640 480 +640 480 +640 337 +512 640 +640 425 +427 640 +640 443 +640 640 +612 612 +500 375 +640 480 +640 425 +640 480 +640 428 +427 640 +640 512 +375 500 +480 640 +640 480 +640 524 +640 640 +640 480 +640 428 +640 480 +428 640 +640 363 +640 480 +640 445 +428 640 +640 480 +640 257 +640 281 +640 426 +426 640 +640 480 +640 425 +500 375 +640 426 +427 640 +375 500 +640 427 +640 359 +640 423 +640 427 +640 426 +640 480 +480 640 +640 480 +640 483 +640 480 +640 427 +640 427 +640 425 +640 359 +640 429 +604 640 +640 427 +500 500 +640 360 +640 480 +640 456 +640 485 +500 290 +640 480 +640 480 +480 640 +640 480 +640 426 +640 489 +478 640 +640 427 +640 427 +640 480 +640 480 +484 640 +640 480 +433 640 +640 480 +612 612 +640 480 +640 480 +480 640 +480 500 +426 640 +640 457 +640 425 +427 640 +640 480 +426 640 +487 640 +640 425 +421 640 +500 328 +375 500 +640 480 +335 500 +640 427 +640 427 +640 571 +376 500 +612 612 +500 500 +640 243 +640 479 +640 480 +533 640 +333 500 +640 639 +425 640 +640 516 +640 427 +480 640 +612 612 +640 426 +640 480 +480 640 +427 640 +640 428 +500 314 +640 480 +640 427 +427 640 +640 480 +500 309 +640 480 +480 640 +640 479 +640 427 +640 480 +640 480 +600 450 +640 428 +640 480 +480 640 +640 426 +640 480 +640 480 +640 427 +640 388 +428 640 +426 640 +500 375 +640 427 +640 480 +640 396 +640 480 +640 480 +640 426 +640 427 +640 427 +640 480 +640 480 +640 400 +640 427 +640 277 +500 333 +640 480 +640 424 +640 480 +640 480 +640 379 +640 480 +479 640 +375 500 +640 427 +498 640 +640 427 +480 640 +480 640 +640 427 +640 480 +427 640 +480 640 +640 480 +640 316 +640 427 +500 375 +640 427 +640 427 +458 640 +500 333 +500 499 +620 441 +640 425 +640 480 +640 448 +500 331 +528 640 +640 425 +480 640 +640 427 +193 225 +640 381 +640 427 +640 427 +640 430 +640 482 +640 469 +640 386 +640 425 +427 640 +640 480 +640 640 +640 480 +640 481 +425 640 +375 500 +640 427 +500 332 +640 427 +640 480 +640 480 +640 393 +427 640 +480 640 +640 427 +640 427 +480 640 +640 480 +640 502 +640 425 +500 375 +500 205 +502 640 +426 640 +640 480 +640 480 +640 428 +640 480 +640 427 +640 480 +640 428 +499 500 +500 373 +480 640 +480 640 +640 427 +640 480 +640 480 +640 427 +640 426 +640 640 +640 424 +640 427 +500 335 +640 480 +640 360 +640 480 +640 428 +640 483 +640 427 +640 557 +640 426 +640 478 +426 640 +640 480 +640 427 +427 640 +640 480 +480 640 +640 423 +640 459 +427 640 +500 333 +640 427 +500 375 +640 399 +612 612 +640 480 +640 480 +640 480 +500 375 +640 480 +500 310 +640 480 +640 425 +500 269 +612 612 +640 360 +640 480 +640 419 +640 427 +500 332 +640 480 +375 500 +500 357 +480 640 +640 427 +152 205 +640 426 +500 375 +640 424 +427 640 +640 427 +640 427 +480 640 +640 427 +640 480 +640 442 +480 640 +427 640 +500 333 +632 640 +500 337 +640 428 +375 500 +436 640 +640 428 +500 333 +640 480 +480 640 +640 480 +640 480 +640 360 +640 480 +640 466 +480 640 +640 427 +360 480 +640 480 +640 427 +500 348 +480 640 +640 426 +457 640 +640 427 +640 480 +640 480 +480 640 +640 426 +640 427 +360 640 +640 606 +612 612 +640 480 +640 480 +442 640 +640 427 +427 640 +640 428 +640 480 +640 480 +640 457 +612 612 +640 427 +500 375 +640 512 +640 480 +500 375 +640 428 +426 640 +640 480 +640 480 +640 480 +640 480 +640 480 +480 640 +640 459 +640 426 +480 640 +640 425 +550 365 +640 359 +640 480 +640 480 +640 480 +640 427 +640 427 +640 425 +640 415 +464 640 +424 640 +640 480 +428 640 +640 353 +640 426 +640 427 +640 461 +640 378 +640 427 +640 254 +640 424 +640 424 +380 640 +427 640 +640 427 +640 427 +500 333 +640 480 +640 430 +427 640 +640 480 +612 612 +334 500 +640 427 +640 433 +640 480 +500 375 +640 427 +640 313 +478 640 +640 481 +480 640 +640 427 +529 640 +640 480 +640 480 +478 640 +640 448 +640 640 +640 427 +640 496 +640 480 +640 428 +640 480 +640 391 +640 427 +640 590 +500 167 +640 505 +427 640 +640 480 +640 480 +612 612 +640 329 +640 425 +612 612 +640 478 +640 360 +427 640 +640 465 +640 634 +640 636 +640 429 +427 640 +640 427 +640 480 +640 427 +480 640 +640 427 +640 480 +640 480 +357 500 +492 640 +640 360 +612 612 +640 480 +427 640 +427 640 +480 640 +640 429 +500 375 +500 375 +600 445 +500 314 +640 480 +640 428 +500 374 +640 426 +480 640 +640 482 +640 425 +640 480 +640 430 +546 640 +640 427 +640 480 +640 480 +640 480 +640 480 +415 500 +640 473 +640 480 +500 352 +640 428 +612 612 +640 477 +640 480 +640 480 +503 640 +480 640 +640 427 +480 640 +500 375 +640 480 +564 640 +424 640 +427 640 +640 426 +640 500 +640 480 +640 321 +612 612 +640 480 +640 360 +640 537 +640 428 +500 375 +640 427 +500 332 +376 500 +631 640 +373 500 +427 640 +640 427 +640 425 +640 427 +428 640 +500 375 +500 332 +640 480 +640 480 +640 424 +333 500 +640 424 +640 471 +640 478 +500 333 +640 414 +640 427 +640 480 +426 640 +640 427 +427 640 +427 640 +640 424 +640 480 +640 320 +640 480 +640 477 +427 640 +640 427 +640 457 +640 640 +612 612 +480 640 +500 332 +640 384 +427 640 +640 427 +640 433 +640 395 +640 480 +350 400 +500 375 +426 640 +640 427 +600 487 +500 375 +427 640 +427 640 +640 270 +640 480 +480 640 +375 500 +500 375 +640 479 +640 480 +375 500 +640 480 +640 354 +509 640 +480 640 +640 434 +487 640 +640 427 +480 640 +640 426 +640 428 +500 333 +640 427 +640 425 +500 375 +500 375 +640 427 +640 429 +640 458 +480 640 +477 640 +640 428 +640 427 +480 640 +640 427 +640 427 +640 480 +640 359 +640 391 +480 640 +640 425 +427 640 +640 640 +640 425 +640 616 +640 480 +360 640 +640 480 +640 480 +500 375 +427 640 +498 640 +640 432 +457 640 +640 480 +640 480 +640 427 +640 361 +640 380 +640 480 +640 479 +640 480 +640 494 +640 427 +640 428 +480 640 +427 640 +640 427 +640 427 +640 480 +640 480 +500 375 +640 425 +640 486 +640 480 +640 427 +640 467 +640 480 +426 640 +640 427 +640 401 +640 427 +640 429 +426 640 +640 480 +640 480 +480 640 +640 427 +640 413 +640 303 +640 427 +640 480 +640 441 +500 375 +334 500 +640 424 +640 426 +640 480 +640 426 +640 360 +427 640 +427 640 +500 371 +640 472 +640 314 +600 480 +427 640 +500 375 +480 640 +445 500 +640 480 +612 612 +482 294 +427 640 +640 427 +427 640 +640 425 +360 640 +640 480 +426 640 +539 640 +480 640 +500 375 +640 480 +493 640 +640 426 +426 640 +640 512 +640 364 +640 622 +500 375 +616 640 +640 425 +375 500 +640 359 +640 480 +640 480 +640 480 +640 426 +427 640 +640 449 +640 512 +640 425 +640 427 +640 425 +480 640 +480 640 +640 480 +640 480 +640 640 +640 438 +640 428 +640 346 +640 513 +480 640 +363 640 +424 640 +640 480 +640 480 +640 452 +640 512 +640 425 +500 375 +640 427 +640 427 +640 427 +640 427 +480 640 +640 451 +640 424 +640 478 +640 408 +640 427 +426 640 +640 348 +640 427 +640 360 +640 480 +640 469 +640 480 +640 480 +640 360 +500 375 +612 612 +500 375 +427 640 +640 425 +482 640 +640 480 +640 216 +640 480 +480 640 +640 427 +480 640 +640 478 +640 427 +640 426 +640 480 +640 480 +640 617 +640 427 +640 425 +640 466 +640 480 +640 480 +612 612 +427 640 +612 612 +640 383 +640 480 +426 640 +640 480 +500 375 +640 486 +640 640 +425 640 +612 612 +640 427 +640 438 +640 427 +640 426 +640 427 +480 640 +480 640 +427 640 +480 640 +640 480 +640 427 +612 612 +640 413 +640 480 +480 640 +500 486 +427 640 +640 427 +640 428 +640 426 +640 360 +640 427 +640 434 +418 640 +640 459 +640 481 +640 480 +612 612 +640 480 +640 480 +535 640 +640 480 +640 359 +480 640 +640 427 +640 404 +426 640 +640 480 +640 427 +640 478 +428 640 +640 427 +640 428 +640 427 +428 640 +640 568 +640 425 +428 640 +640 427 +640 480 +428 640 +640 426 +480 640 +500 375 +640 427 +640 480 +640 480 +640 424 +500 375 +640 512 +640 480 +480 640 +472 500 +448 640 +640 480 +640 427 +640 426 +640 427 +640 533 +640 480 +640 512 +640 480 +640 382 +640 424 +640 428 +500 375 +640 426 +640 428 +640 480 +640 427 +640 360 +480 640 +427 640 +640 480 +640 480 +640 426 +640 403 +640 480 +640 426 +640 480 +500 375 +640 372 +640 480 +640 480 +640 480 +500 375 +640 480 +361 500 +500 375 +640 480 +640 427 +640 428 +640 427 +640 480 +426 640 +640 480 +640 427 +640 424 +640 493 +640 426 +500 333 +640 448 +605 640 +500 333 +640 480 +500 500 +640 427 +426 640 +640 625 +640 419 +640 480 +640 478 +640 427 +640 427 +640 480 +640 427 +640 360 +640 427 +640 427 +443 460 +640 480 +500 333 +479 640 +640 381 +500 375 +640 480 +640 480 +360 640 +640 409 +427 640 +640 480 +640 480 +640 426 +640 425 +640 480 +640 480 +640 480 +425 640 +480 640 +640 427 +640 427 +640 480 +640 478 +640 426 +375 500 +640 427 +424 640 +640 427 +612 612 +640 253 +427 640 +425 640 +640 601 +500 366 +360 640 +425 640 +612 612 +640 425 +640 536 +424 640 +500 341 +500 339 +427 640 +640 427 +640 361 +640 480 +640 480 +290 359 +640 482 +427 640 +640 427 +640 427 +427 640 +640 480 +451 640 +640 480 +640 427 +640 427 +640 480 +480 640 +640 512 +640 480 +426 640 +640 360 +640 427 +500 375 +640 480 +612 612 +640 480 +640 400 +640 383 +640 480 +640 640 +500 333 +500 375 +375 500 +640 480 +640 481 +612 612 +640 304 +640 480 +640 480 +480 640 +640 480 +640 427 +500 383 +640 480 +500 383 +640 477 +612 612 +640 480 +426 640 +640 425 +640 480 +612 612 +480 640 +375 500 +640 480 +612 612 +640 428 +500 375 +640 454 +640 480 +640 457 +640 481 +640 359 +612 612 +427 640 +375 500 +375 500 +640 425 +640 404 +612 612 +427 640 +500 334 +640 383 +640 480 +400 300 +640 479 +457 640 +640 432 +333 500 +640 480 +640 480 +427 640 +375 500 +480 640 +640 427 +640 427 +640 425 +640 428 +500 375 +640 427 +469 640 +640 480 +640 480 +640 480 +427 640 +375 500 +333 500 +609 640 +640 427 +640 480 +612 612 +640 506 +373 500 +480 640 +640 480 +640 512 +500 380 +640 480 +612 612 +612 612 +640 427 +640 391 +640 469 +640 481 +640 434 +640 427 +640 480 +375 500 +640 427 +640 325 +640 595 +640 538 +640 512 +640 427 +640 480 +450 300 +640 427 +640 427 +500 375 +640 426 +640 426 +640 480 +640 424 +640 427 +640 482 +640 480 +640 427 +640 513 +640 427 +480 640 +480 640 +427 640 +370 640 +640 480 +640 426 +640 480 +640 427 +480 640 +640 427 +640 425 +640 427 +640 480 +612 612 +335 500 +640 412 +480 640 +480 640 +439 640 +500 382 +640 616 +640 480 +427 640 +640 427 +640 427 +500 189 +438 640 +480 640 +640 426 +640 480 +640 480 +640 427 +500 375 +500 333 +530 640 +640 424 +480 640 +426 640 +426 640 +640 428 +640 426 +640 425 +375 500 +640 424 +500 333 +427 640 +427 640 +435 640 +640 483 +640 315 +640 427 +427 640 +640 360 +640 512 +640 383 +375 500 +478 640 +640 340 +640 426 +640 428 +640 427 +640 480 +250 312 +640 480 +640 427 +640 431 +640 425 +640 426 +640 428 +640 490 +500 375 +640 427 +640 480 +480 640 +640 427 +427 640 +640 427 +480 640 +612 612 +512 640 +640 428 +500 357 +640 480 +640 480 +640 427 +427 640 +640 427 +640 427 +640 427 +640 425 +640 480 +640 480 +612 612 +640 480 +428 640 +500 375 +640 537 +500 333 +640 480 +383 640 +500 375 +370 277 +640 427 +640 404 +640 451 +640 483 +500 375 +640 426 +480 640 +640 427 +480 640 +375 500 +640 427 +640 480 +640 425 +640 366 +428 640 +640 452 +640 426 +425 640 +640 361 +640 381 +640 428 +500 375 +640 360 +426 640 +500 334 +640 427 +500 375 +640 424 +640 427 +500 375 +640 428 +375 500 +640 424 +480 640 +480 640 +375 500 +640 427 +640 480 +640 475 +427 640 +640 423 +640 427 +640 480 +480 640 +640 423 +354 640 +600 450 +480 640 +612 612 +640 427 +375 500 +640 421 +640 408 +480 640 +480 640 +500 375 +640 427 +640 480 +640 360 +640 480 +640 480 +640 640 +640 480 +378 640 +480 640 +375 500 +640 426 +640 423 +375 500 +640 426 +640 425 +500 375 +480 640 +360 640 +640 425 +422 640 +640 427 +640 480 +481 640 +427 640 +640 427 +640 214 +640 426 +500 281 +640 485 +640 425 +640 425 +640 480 +500 375 +640 427 +375 500 +640 480 +640 427 +427 640 +640 513 +640 480 +382 500 +640 428 +640 480 +640 480 +640 564 +640 427 +483 640 +500 321 +640 480 +500 333 +500 347 +480 640 +333 500 +640 427 +640 426 +612 612 +640 427 +640 480 +478 640 +640 427 +640 479 +640 478 +640 427 +640 427 +640 425 +640 457 +333 500 +632 640 +480 640 +640 428 +500 334 +640 363 +452 640 +640 480 +427 640 +640 425 +640 480 +500 486 +640 480 +426 640 +640 381 +426 640 +640 428 +640 481 +640 453 +375 500 +500 338 +640 427 +640 424 +640 480 +640 640 +640 480 +500 375 +640 326 +640 446 +640 427 +376 342 +640 427 +640 512 +500 375 +640 427 +480 640 +640 426 +640 426 +426 640 +640 427 +640 426 +640 427 +640 427 +640 360 +597 640 +640 427 +640 427 +640 480 +640 353 +640 447 +640 427 +368 500 +480 640 +640 425 +640 480 +500 332 +640 480 +640 480 +333 500 +640 426 +640 426 +640 426 +640 480 +500 375 +640 480 +640 427 +404 500 +640 480 +500 375 +640 400 +640 446 +640 233 +480 640 +427 640 +500 375 +640 425 +640 436 +640 480 +320 240 +640 480 +640 451 +640 405 +593 395 +427 640 +640 379 +640 480 +640 427 +432 640 +640 425 +640 427 +640 428 +640 480 +480 640 +500 375 +640 450 +640 480 +428 640 +426 640 +640 419 +375 500 +640 480 +640 427 +640 480 +640 456 +640 436 +500 500 +427 640 +640 427 +334 500 +640 566 +612 612 +640 445 +500 375 +480 640 +640 424 +640 480 +640 434 +640 427 +500 375 +640 480 +480 640 +500 333 +480 640 +640 425 +640 480 +640 480 +334 500 +640 480 +428 640 +640 480 +640 427 +480 320 +480 640 +640 355 +640 411 +500 375 +640 425 +461 615 +640 486 +480 640 +640 427 +640 480 +640 427 +640 373 +500 341 +640 427 +640 480 +640 427 +424 640 +640 480 +640 425 +640 480 +640 208 +640 543 +640 434 +640 480 +428 640 +500 375 +640 480 +640 480 +640 466 +500 375 +640 480 +500 384 +640 426 +640 427 +640 424 +640 480 +640 480 +500 500 +640 427 +480 640 +640 428 +640 427 +640 481 +500 439 +640 458 +640 426 +500 375 +640 425 +640 437 +640 469 +640 426 +640 427 +480 640 +640 480 +640 425 +640 427 +640 481 +640 428 +640 480 +640 426 +612 612 +640 480 +500 476 +500 416 +640 427 +640 450 +424 640 +640 480 +640 428 +640 426 +425 640 +640 479 +640 480 +640 427 +640 427 +426 640 +360 640 +640 425 +519 640 +640 427 +640 441 +640 640 +468 640 +375 500 +500 375 +640 397 +640 480 +427 640 +500 375 +427 640 +500 375 +640 449 +640 215 +640 480 +640 479 +640 480 +640 480 +640 509 +500 375 +427 640 +640 425 +640 428 +640 480 +640 480 +640 480 +640 638 +640 480 +640 480 +640 480 +640 348 +640 454 +640 430 +640 480 +427 640 +640 425 +640 480 +640 400 +426 640 +640 457 +640 427 +398 500 +640 480 +640 480 +427 640 +640 427 +480 640 +640 428 +640 480 +640 427 +640 427 +640 480 +500 313 +640 427 +332 500 +480 640 +640 480 +424 640 +640 480 +480 640 +480 640 +427 640 +423 640 +640 427 +428 640 +640 479 +640 480 +459 640 +640 480 +640 427 +640 480 +500 375 +640 426 +640 480 +640 427 +640 423 +640 480 +640 640 +426 640 +640 427 +500 375 +500 333 +640 428 +640 480 +640 426 +375 500 +640 427 +640 360 +640 481 +640 426 +500 431 +640 427 +640 480 +640 424 +640 399 +640 426 +640 452 +427 640 +334 500 +333 500 +314 500 +640 326 +349 640 +640 407 +526 640 +640 426 +434 640 +640 427 +426 640 +500 333 +640 425 +640 480 +640 480 +640 427 +640 436 +640 360 +482 484 +500 375 +640 480 +427 640 +500 375 +640 426 +500 334 +640 588 +427 640 +640 480 +640 425 +640 426 +640 480 +358 373 +344 500 +640 427 +561 640 +500 375 +426 640 +427 640 +640 480 +522 640 +640 480 +500 359 +640 640 +640 480 +640 480 +640 480 +475 640 +500 376 +640 427 +640 480 +640 411 +640 480 +640 486 +500 368 +500 375 +640 392 +640 429 +478 640 +640 480 +334 500 +640 428 +640 432 +612 612 +640 427 +640 480 +383 640 +640 480 +640 480 +539 640 +427 640 +640 480 +480 640 +640 424 +640 426 +640 426 +480 640 +500 375 +480 640 +640 360 +640 426 +640 426 +640 426 +640 427 +640 424 +640 383 +430 500 +640 480 +600 450 +500 375 +640 480 +640 427 +640 640 +640 426 +640 480 +640 480 +500 333 +426 640 +333 500 +640 480 +640 426 +500 332 +480 640 +640 480 +640 480 +426 640 +640 480 +500 375 +480 640 +500 208 +640 478 +612 612 +640 631 +640 480 +500 364 +640 640 +640 305 +449 640 +640 409 +640 426 +640 480 +640 480 +640 427 +640 427 +640 422 +426 640 +640 480 +640 428 +481 640 +500 375 +640 337 +640 480 +500 374 +640 480 +640 416 +500 375 +640 427 +640 427 +480 640 +427 640 +640 436 +640 480 +428 640 +426 640 +640 446 +640 592 +640 480 +640 360 +640 427 +640 480 +375 500 +640 427 +375 500 +333 500 +640 428 +427 640 +640 480 +500 375 +640 360 +600 400 +480 640 +500 331 +640 475 +640 427 +500 375 +640 427 +640 425 +426 640 +640 381 +640 427 +243 360 +480 640 +500 400 +640 480 +640 480 +640 359 +640 427 +640 426 +640 640 +640 427 +640 425 +640 454 +640 425 +640 427 +640 480 +439 640 +640 480 +640 480 +640 480 +639 640 +640 333 +640 480 +427 640 +640 480 +640 435 +640 480 +640 480 +640 478 +640 480 +640 445 +500 334 +640 480 +640 428 +640 427 +640 427 +500 375 +640 425 +640 429 +640 480 +640 427 +472 640 +640 480 +640 360 +640 424 +640 361 +640 480 +640 431 +640 426 +640 428 +640 480 +500 333 +640 427 +640 425 +640 425 +640 480 +486 640 +426 640 +640 480 +500 375 +480 640 +640 480 +427 640 +640 479 +640 409 +640 480 +640 480 +640 427 +640 480 +640 427 +427 640 +500 375 +480 640 +427 640 +500 375 +640 480 +640 481 +500 357 +640 480 +375 500 +640 425 +640 480 +480 640 +640 480 +640 457 +640 480 +424 640 +640 383 +640 480 +640 492 +640 480 +640 480 +427 640 +480 640 +640 427 +428 640 +640 427 +640 480 +640 480 +640 427 +612 612 +640 480 +640 425 +640 427 +427 640 +480 640 +640 480 +500 375 +500 366 +640 480 +640 484 +500 375 +640 427 +640 480 +640 420 +500 333 +640 480 +640 385 +640 426 +640 427 +500 325 +640 500 +427 640 +640 426 +640 480 +500 376 +640 480 +500 375 +640 427 +555 640 +640 427 +640 404 +480 640 +640 480 +427 640 +541 640 +640 359 +640 427 +427 640 +640 427 +640 426 +640 427 +600 600 +640 424 +640 427 +640 424 +640 480 +480 640 +640 480 +640 495 +500 375 +640 479 +500 376 +640 489 +333 500 +490 640 +500 375 +640 628 +640 427 +640 427 +640 433 +640 427 +640 424 +640 480 +416 500 +640 569 +428 640 +480 640 +480 640 +427 640 +640 450 +427 640 +500 375 +640 427 +500 375 +640 480 +640 427 +640 434 +640 424 +640 426 +640 425 +640 480 +440 640 +640 480 +640 425 +640 480 +500 375 +640 480 +640 480 +640 480 +480 640 +500 426 +640 480 +640 480 +640 480 +640 484 +480 640 +640 471 +426 640 +427 640 +640 427 +500 375 +640 480 +640 426 +640 479 +640 427 +481 640 +640 428 +480 640 +640 480 +640 427 +640 640 +640 428 +500 333 +640 427 +640 424 +333 500 +640 424 +640 478 +640 480 +640 427 +480 640 +640 428 +640 480 +640 480 +331 500 +426 640 +640 424 +640 427 +640 360 +640 424 +427 640 +640 480 +480 640 +640 427 +640 360 +640 393 +640 428 +640 427 +640 424 +333 500 +480 640 +640 424 +640 640 +640 426 +640 429 +640 426 +640 599 +640 480 +480 640 +640 480 +640 408 +375 500 +640 430 +425 640 +640 426 +375 500 +427 640 +640 480 +640 427 +426 640 +640 396 +480 640 +640 360 +640 599 +640 479 +640 425 +480 640 +640 480 +640 480 +640 427 +640 427 +640 427 +425 500 +480 640 +640 448 +383 640 +640 480 +427 640 +640 480 +425 640 +640 477 +640 427 +333 500 +640 480 +500 375 +500 333 +640 427 +640 534 +640 480 +640 426 +640 480 +640 426 +640 480 +500 377 +640 480 +480 640 +640 480 +640 429 +640 426 +480 640 +640 478 +640 360 +500 333 +640 480 +640 428 +425 640 +640 480 +640 480 +500 375 +612 612 +500 333 +640 480 +640 479 +640 376 +640 480 +640 508 +640 425 +640 427 +500 467 +500 375 +294 500 +640 640 +640 480 +433 640 +480 640 +640 640 +500 351 +640 427 +640 427 +640 334 +640 428 +429 640 +457 640 +640 480 +500 436 +500 356 +640 425 +612 612 +500 493 +305 640 +640 480 +640 480 +640 480 +640 427 +640 427 +510 640 +424 640 +470 300 +640 480 +640 466 +640 480 +640 480 +640 360 +640 427 +408 640 +480 320 +640 427 +640 480 +500 375 +495 640 +500 379 +426 640 +640 480 +640 426 +640 513 +500 375 +479 640 +640 480 +500 375 +640 478 +480 640 +500 375 +640 480 +640 429 +500 375 +427 640 +640 427 +640 426 +640 425 +640 609 +640 360 +594 447 +640 443 +640 427 +500 375 +640 480 +640 426 +500 375 +640 480 +612 612 +500 375 +640 481 +640 360 +480 640 +640 478 +631 640 +640 427 +640 480 +640 477 +640 480 +640 480 +429 640 +500 375 +640 571 +640 640 +640 480 +640 427 +640 426 +640 524 +640 480 +640 427 +640 394 +612 612 +640 421 +640 426 +480 640 +640 480 +640 640 +457 640 +640 427 +640 248 +427 640 +640 480 +640 426 +427 640 +500 400 +500 375 +640 480 +500 376 +640 506 +640 480 +512 640 +640 480 +640 427 +640 480 +640 427 +480 640 +427 640 +640 425 +500 379 +640 361 +426 640 +500 375 +640 480 +478 640 +640 427 +484 640 +640 427 +500 375 +455 640 +480 640 +500 335 +640 396 +326 500 +640 427 +640 426 +640 425 +549 640 +640 480 +640 426 +640 480 +427 640 +640 424 +640 480 +425 640 +480 640 +640 329 +640 480 +480 640 +500 384 +400 400 +640 480 +640 424 +640 386 +640 360 +640 427 +640 480 +640 427 +640 480 +640 426 +640 480 +480 640 +427 640 +500 375 +640 540 +640 428 +640 425 +640 427 +640 480 +333 500 +563 640 +640 640 +626 526 +640 428 +640 480 +640 427 +640 360 +500 331 +427 640 +640 423 +640 483 +426 640 +640 480 +640 480 +640 480 +427 640 +640 427 +640 640 +500 375 +640 360 +518 640 +426 640 +640 458 +640 427 +640 427 +640 480 +640 593 +640 522 +375 500 +481 640 +640 480 +640 480 +640 403 +427 640 +480 640 +423 640 +426 640 +640 490 +500 375 +640 425 +640 480 +480 640 +640 360 +640 173 +640 480 +640 480 +480 640 +615 640 +640 426 +640 427 +480 640 +480 640 +640 480 +640 512 +640 380 +640 640 +500 400 +500 375 +640 480 +640 426 +640 427 +640 432 +402 500 +640 480 +480 640 +640 480 +597 640 +640 292 +640 426 +640 480 +640 480 +480 640 +640 431 +612 612 +640 427 +640 478 +640 480 +546 640 +640 427 +500 375 +478 640 +640 481 +640 439 +640 426 +640 486 +427 640 +640 427 +427 640 +500 375 +500 375 +640 505 +640 235 +640 428 +640 425 +640 427 +640 480 +478 640 +640 426 +640 427 +640 480 +640 478 +480 640 +512 640 +612 612 +640 427 +480 640 +500 333 +640 424 +375 500 +640 587 +379 335 +640 480 +640 414 +640 426 +400 500 +613 640 +640 480 +427 640 +640 356 +640 480 +480 640 +640 480 +640 480 +640 480 +640 427 +640 640 +640 425 +491 500 +640 478 +480 640 +489 500 +500 375 +640 480 +380 640 +334 500 +429 480 +640 417 +640 427 +640 480 +640 429 +640 426 +461 640 +425 640 +640 480 +640 480 +640 427 +640 427 +448 640 +640 480 +640 427 +640 480 +480 640 +640 429 +427 640 +640 427 +612 612 +640 427 +640 427 +427 640 +500 375 +640 478 +640 429 +582 640 +640 480 +453 640 +640 426 +640 431 +640 427 +640 478 +612 612 +500 410 +360 640 +640 425 +427 640 +640 426 +640 427 +561 640 +640 427 +640 426 +640 427 +640 427 +640 428 +640 480 +640 427 +640 427 +538 640 +573 640 +500 364 +640 426 +467 500 +640 451 +640 427 +640 424 +432 324 +640 428 +640 480 +640 427 +640 437 +334 500 +640 576 +640 430 +640 480 +640 555 +500 375 +500 375 +640 480 +425 640 +500 357 +640 427 +640 427 +640 480 +640 427 +640 427 +427 640 +461 640 +640 480 +425 640 +500 335 +640 480 +375 500 +500 400 +640 427 +640 427 +640 480 +427 640 +640 480 +640 427 +640 480 +448 299 +500 375 +640 426 +640 427 +480 640 +480 640 +640 401 +375 500 +640 480 +640 427 +612 612 +640 484 +640 480 +640 427 +426 640 +480 640 +480 640 +640 429 +640 426 +640 427 +640 480 +640 427 +480 640 +640 480 +426 640 +640 427 +640 480 +640 320 +500 375 +640 640 +427 640 +640 480 +423 640 +640 480 +640 414 +640 506 +480 640 +480 640 +640 367 +640 351 +300 400 +640 322 +640 428 +500 382 +640 428 +640 480 +640 481 +640 427 +425 640 +640 425 +514 640 +640 480 +500 368 +640 360 +640 466 +640 503 +640 427 +500 282 +640 427 +640 427 +640 396 +480 640 +480 640 +640 425 +428 640 +500 333 +640 480 +500 333 +640 427 +640 480 +612 612 +480 640 +640 478 +640 480 +640 428 +640 427 +332 500 +640 427 +480 640 +640 426 +480 640 +640 480 +640 428 +640 429 +640 282 +640 493 +640 389 +375 500 +640 428 +640 427 +500 375 +480 640 +640 480 +640 480 +640 426 +640 400 +640 640 +375 500 +640 480 +428 640 +414 500 +640 544 +640 640 +640 427 +640 427 +480 640 +427 640 +640 480 +484 640 +375 500 +427 640 +640 360 +640 480 +619 640 +640 480 +480 640 +640 640 +640 429 +427 640 +640 480 +640 424 +640 480 +640 428 +425 640 +500 326 +640 427 +428 640 +640 589 +640 426 +480 640 +640 480 +500 500 +500 375 +480 640 +480 640 +500 332 +640 427 +640 428 +640 480 +500 375 +640 446 +640 480 +640 480 +427 640 +640 480 +640 403 +590 590 +500 346 +640 426 +640 428 +640 480 +500 375 +489 640 +400 500 +640 428 +640 359 +640 480 +480 640 +640 424 +424 640 +640 427 +426 640 +640 480 +640 427 +640 478 +640 480 +478 640 +500 374 +427 640 +640 424 +640 480 +640 427 +640 480 +612 612 +640 396 +640 427 +500 375 +640 546 +640 408 +640 480 +640 426 +500 334 +640 428 +640 480 +640 489 +480 640 +480 640 +640 480 +640 480 +640 427 +500 336 +640 427 +500 375 +480 640 +640 427 +640 428 +500 376 +640 480 +500 336 +640 480 +640 426 +500 334 +480 360 +640 480 +640 402 +424 640 +480 640 +640 480 +640 480 +612 612 +640 518 +640 484 +427 640 +612 612 +640 480 +480 640 +485 500 +375 500 +565 640 +426 640 +375 500 +640 603 +640 480 +427 640 +640 517 +625 640 +640 388 +480 640 +500 332 +512 640 +640 427 +612 612 +630 640 +640 601 +640 480 +640 506 +480 640 +640 426 +640 427 +640 480 +640 427 +428 640 +640 427 +333 500 +500 333 +640 480 +500 375 +640 480 +640 480 +640 480 +640 429 +500 333 +640 427 +640 427 +640 478 +640 458 +640 480 +500 335 +427 640 +397 567 +640 480 +480 640 +640 427 +640 427 +640 480 +429 640 +640 425 +640 640 +640 428 +640 480 +500 332 +640 383 +480 640 +612 612 +480 640 +640 426 +640 480 +445 640 +640 427 +500 375 +640 427 +640 329 +640 480 +640 480 +640 492 +640 427 +640 480 +640 454 +640 360 +640 427 +425 640 +640 480 +640 242 +480 640 +640 425 +640 480 +640 461 +640 480 +640 423 +640 480 +640 480 +640 631 +640 582 +480 640 +500 375 +640 480 +640 480 +640 428 +640 429 +640 480 +640 425 +640 480 +640 480 +640 480 +640 480 +368 500 +640 401 +640 480 +427 640 +640 480 +640 428 +640 457 +640 425 +480 640 +640 480 +500 333 +640 480 +640 427 +640 481 +640 427 +480 640 +640 480 +500 335 +500 329 +427 640 +640 427 +640 427 +640 427 +640 480 +640 457 +500 375 +640 428 +431 640 +640 423 +640 640 +640 524 +428 640 +640 426 +640 428 +640 426 +640 425 +375 500 +500 175 +500 500 +448 640 +640 429 +612 612 +640 480 +640 427 +640 480 +640 480 +640 384 +640 514 +640 480 +640 427 +640 427 +403 604 +640 512 +640 480 +612 612 +500 331 +640 427 +640 259 +500 375 +500 375 +640 480 +640 427 +640 426 +640 480 +640 299 +640 425 +640 427 +640 512 +479 640 +500 333 +640 427 +640 512 +640 373 +480 640 +500 375 +640 427 +640 424 +500 375 +640 429 +425 640 +480 640 +399 640 +640 480 +640 482 +500 322 +640 480 +640 480 +640 508 +640 424 +640 480 +640 489 +480 640 +640 427 +640 458 +640 466 +640 480 +500 375 +640 424 +500 387 +640 480 +427 640 +640 495 +426 640 +640 480 +640 480 +480 640 +640 408 +480 640 +480 640 +640 480 +426 640 +640 480 +640 424 +640 427 +640 478 +640 478 +640 474 +375 500 +640 480 +640 427 +640 480 +448 336 +500 345 +460 500 +640 480 +640 480 +360 640 +640 386 +640 344 +428 640 +480 640 +500 412 +640 427 +640 480 +640 480 +500 332 +640 427 +640 572 +640 480 +640 387 +500 333 +445 640 +480 640 +640 423 +500 366 +640 359 +480 640 +640 426 +612 612 +500 375 +480 640 +640 480 +640 361 +640 480 +640 431 +640 427 +640 426 +640 427 +480 640 +640 230 +640 361 +640 480 +640 483 +640 480 +500 375 +480 640 +640 458 +640 640 +640 480 +640 426 +480 360 +640 427 +640 480 +640 482 +640 425 +640 410 +640 480 +640 458 +640 370 +640 426 +640 480 +500 375 +640 480 +424 640 +500 333 +640 427 +500 375 +494 640 +640 427 +480 640 +640 480 +640 427 +640 400 +333 500 +375 500 +500 333 +480 640 +640 427 +640 426 +640 480 +500 333 +640 480 +473 640 +640 480 +480 640 +600 400 +640 480 +640 403 +480 640 +480 640 +500 375 +500 375 +480 640 +500 375 +579 640 +640 426 +480 640 +640 404 +640 480 +640 480 +640 426 +640 426 +640 512 +640 480 +640 427 +500 333 +427 640 +640 427 +640 360 +426 640 +640 480 +640 480 +425 640 +591 640 +500 500 +640 427 +428 640 +640 380 +640 480 +640 480 +640 480 +640 426 +640 171 +500 375 +458 640 +640 426 +500 448 +640 424 +640 427 +612 612 +500 384 +333 500 +640 480 +640 360 +519 640 +640 427 +500 375 +500 375 +640 480 +425 640 +640 512 +640 549 +640 400 +640 480 +480 640 +640 640 +464 640 +640 426 +640 353 +480 640 +640 427 +640 463 +500 375 +480 640 +500 375 +474 640 +640 428 +480 384 +640 480 +640 480 +640 439 +508 640 +612 612 +640 427 +640 480 +640 402 +640 338 +640 361 +500 374 +640 427 +640 480 +640 416 +452 500 +612 612 +640 640 +375 500 +480 640 +640 480 +640 428 +500 344 +640 427 +640 480 +640 427 +640 427 +640 424 +640 480 +640 425 +640 471 +640 480 +640 431 +640 427 +640 480 +640 512 +640 480 +640 480 +640 427 +640 480 +425 640 +640 427 +640 441 +640 480 +480 640 +640 427 +640 360 +500 375 +640 425 +481 640 +640 421 +640 480 +450 640 +640 454 +640 425 +427 640 +640 360 +640 480 +640 480 +640 427 +640 480 +640 480 +640 427 +640 480 +427 640 +424 640 +640 480 +640 461 +500 154 +480 640 +375 500 +640 427 +640 480 +581 640 +426 640 +640 480 +512 640 +425 640 +640 428 +500 332 +640 427 +640 427 +640 478 +640 433 +640 463 +640 444 +640 360 +640 480 +480 640 +640 429 +640 426 +640 480 +334 500 +640 425 +640 434 +640 640 +640 640 +640 359 +640 480 +640 427 +640 424 +640 482 +640 480 +500 324 +640 428 +640 371 +640 427 +360 640 +640 480 +427 640 +640 427 +640 173 +640 480 +640 426 +640 487 +375 500 +640 480 +500 334 +500 375 +334 500 +640 426 +640 480 +640 480 +480 640 +640 480 +480 640 +640 426 +640 480 +640 483 +640 427 +385 640 +640 478 +640 480 +640 427 +640 359 +640 480 +640 427 +640 480 +640 480 +640 640 +640 480 +640 425 +603 640 +640 512 +640 480 +640 424 +640 640 +640 427 +640 482 +500 332 +640 401 +640 480 +640 426 +640 480 +640 425 +335 246 +640 480 +240 363 +480 640 +500 375 +640 480 +500 375 +640 426 +640 428 +640 427 +375 500 +640 421 +480 640 +500 375 +604 453 +640 427 +640 478 +400 600 +480 640 +640 640 +612 612 +640 427 +228 500 +640 462 +640 487 +272 480 +640 480 +480 640 +640 427 +427 640 +435 640 +375 500 +640 480 +640 427 +640 452 +640 428 +427 640 +500 231 +375 500 +640 480 +563 640 +640 479 +426 640 +640 360 +428 640 +640 608 +640 361 +640 480 +640 427 +640 480 +480 640 +375 500 +640 640 +640 426 +640 353 +640 480 +491 500 +640 424 +640 470 +640 337 +640 468 +640 480 +640 432 +640 502 +640 360 +640 480 +456 640 +499 640 +640 480 +425 640 +640 399 +640 480 +425 640 +640 480 +640 426 +500 319 +640 427 +500 335 +426 640 +640 478 +375 500 +426 640 +640 478 +468 298 +640 640 +612 612 +640 421 +500 375 +426 640 +640 640 +500 338 +428 640 +500 333 +480 640 +329 497 +640 640 +500 500 +640 431 +505 640 +640 425 +500 375 +480 640 +480 640 +612 612 +379 640 +640 425 +640 479 +640 427 +640 480 +637 640 +500 336 +500 375 +640 425 +640 426 +640 306 +640 514 +640 640 +333 500 +640 427 +480 640 +612 612 +640 480 +640 480 +421 640 +640 480 +429 640 +640 480 +612 612 +640 480 +640 480 +640 425 +516 640 +480 640 +480 640 +640 427 +640 426 +640 480 +640 426 +640 428 +640 480 +640 425 +480 640 +640 480 +480 440 +500 394 +426 640 +612 612 +500 375 +500 334 +500 394 +640 427 +640 480 +640 480 +640 480 +640 427 +640 428 +500 375 +640 480 +427 640 +640 478 +375 500 +640 426 +389 640 +640 480 +480 640 +640 427 +500 334 +426 640 +500 375 +640 427 +640 426 +640 406 +640 480 +640 478 +640 401 +428 640 +640 424 +375 500 +640 427 +640 480 +640 427 +426 640 +640 427 +480 640 +640 427 +640 633 +375 500 +640 429 +640 426 +640 518 +640 480 +640 427 +640 426 +640 426 +640 480 +500 366 +375 500 +480 640 +640 591 +640 480 +640 427 +640 426 +459 500 +500 335 +640 427 +640 364 +640 427 +640 578 +640 459 +480 640 +640 480 +467 352 +500 500 +640 480 +640 426 +640 360 +640 480 +640 480 +640 429 +480 640 +640 311 +480 640 +563 422 +640 474 +640 360 +640 427 +640 426 +640 480 +500 375 +640 417 +640 427 +480 640 +640 480 +154 205 +500 375 +640 480 +640 427 +640 418 +480 640 +640 530 +375 500 +431 640 +500 375 +640 480 +500 334 +640 416 +640 353 +427 640 +429 640 +640 480 +640 480 +640 480 +480 640 +640 480 +500 334 +640 427 +478 640 +640 427 +500 375 +500 332 +640 480 +640 480 +640 480 +640 427 +640 427 +640 480 +640 480 +640 480 +640 480 +612 612 +640 379 +640 427 +333 500 +640 453 +640 426 +640 425 +375 500 +640 480 +640 427 +480 640 +640 427 +640 437 +478 640 +424 640 +480 640 +480 640 +478 640 +427 640 +640 583 +480 640 +640 424 +480 640 +375 500 +640 428 +640 426 +640 427 +375 500 +640 428 +427 640 +480 640 +640 427 +623 640 +640 480 +640 480 +640 480 +500 333 +640 425 +480 640 +463 640 +480 640 +640 426 +500 333 +640 427 +640 480 +612 612 +478 640 +640 427 +640 480 +640 480 +424 640 +640 478 +640 427 +640 480 +612 612 +640 480 +427 640 +640 428 +500 375 +334 500 +426 640 +333 500 +640 459 +640 427 +640 427 +640 427 +640 428 +480 640 +640 480 +500 333 +427 640 +500 333 +640 427 +500 375 +427 640 +558 640 +500 375 +373 500 +640 480 +640 480 +640 480 +500 249 +480 640 +500 367 +640 427 +640 480 +640 480 +640 427 +480 640 +640 480 +480 640 +604 453 +640 429 +512 640 +640 360 +640 339 +631 640 +425 640 +640 427 +640 480 +640 425 +640 480 +640 480 +427 640 +612 612 +480 640 +640 408 +470 640 +640 426 +500 281 +640 480 +640 428 +640 426 +375 500 +640 426 +375 500 +640 427 +640 427 +427 640 +640 480 +427 640 +640 427 +640 480 +640 338 +640 480 +640 602 +640 428 +480 640 +640 427 +500 329 +424 640 +375 500 +640 480 +640 406 +480 640 +500 375 +640 427 +512 640 +471 640 +640 424 +480 640 +640 443 +640 360 +640 427 +640 480 +480 640 +640 480 +500 434 +431 640 +640 427 +640 480 +480 360 +500 300 +640 426 +432 640 +640 480 +640 424 +640 480 +427 640 +427 640 +640 425 +640 427 +640 480 +640 427 +640 428 +432 288 +640 426 +500 332 +640 471 +640 348 +480 640 +480 640 +640 480 +320 240 +612 612 +640 427 +500 375 +333 500 +640 427 +640 480 +479 640 +640 480 +500 343 +640 622 +640 427 +640 426 +273 500 +480 640 +640 424 +480 640 +375 640 +612 612 +500 375 +640 480 +640 573 +480 640 +640 427 +640 480 +640 480 +640 426 +640 458 +640 426 +375 500 +500 375 +640 401 +640 480 +422 640 +640 426 +500 336 +640 412 +640 427 +640 480 +428 640 +427 640 +320 240 +427 640 +640 480 +640 480 +640 478 +640 480 +640 427 +500 375 +612 612 +479 640 +640 454 +640 427 +640 480 +640 427 +640 480 +500 375 +640 480 +500 375 +303 500 +640 427 +612 612 +486 640 +480 640 +640 428 +640 426 +480 640 +383 640 +640 480 +480 640 +640 424 +640 428 +640 409 +640 427 +640 480 +640 428 +500 500 +640 427 +556 640 +427 640 +640 480 +320 240 +640 640 +500 332 +640 480 +640 427 +612 612 +640 480 +640 480 +480 640 +456 640 +612 612 +640 400 +640 426 +640 410 +640 360 +439 640 +640 480 +612 612 +640 426 +640 480 +441 640 +500 310 +640 427 +640 427 +640 468 +640 427 +500 375 +640 480 +640 480 +427 640 +612 612 +480 640 +480 640 +640 427 +640 480 +640 427 +500 375 +640 480 +640 480 +640 427 +640 480 +480 640 +500 375 +640 427 +640 480 +612 612 +500 335 +640 428 +640 427 +640 425 +640 360 +640 480 +640 427 +640 480 +640 424 +640 480 +640 427 +640 427 +640 428 +640 426 +640 423 +640 468 +640 483 +640 616 +640 480 +640 427 +427 640 +640 480 +640 427 +640 427 +640 480 +640 490 +448 336 +480 640 +480 640 +333 500 +640 431 +640 591 +640 480 +640 427 +500 490 +640 480 +640 427 +640 442 +640 480 +640 480 +640 428 +640 427 +640 480 +640 427 +640 427 +640 427 +640 482 +640 361 +640 426 +640 397 +624 640 +640 427 +640 426 +640 480 +640 480 +500 375 +640 480 +514 640 +500 333 +640 480 +640 406 +328 500 +640 480 +500 356 +640 428 +640 480 +640 426 +640 427 +640 427 +640 464 +640 427 +640 480 +500 333 +640 480 +640 480 +640 480 +640 480 +375 207 +640 427 +640 480 +640 366 +458 640 +640 427 +640 426 +640 480 +481 640 +640 480 +640 425 +640 471 +500 333 +640 426 +500 375 +640 478 +640 427 +612 612 +640 484 +500 331 +500 284 +526 640 +426 640 +640 480 +640 426 +640 427 +640 427 +640 376 +640 480 +386 500 +640 425 +640 425 +374 500 +640 416 +640 499 +480 640 +640 427 +457 640 +640 480 +579 640 +640 511 +640 480 +640 428 +500 354 +500 375 +640 480 +426 640 +640 394 +640 426 +520 373 +480 640 +640 480 +480 640 +640 480 +640 480 +500 346 +640 480 +593 640 +640 480 +344 500 +640 393 +500 375 +480 640 +640 480 +500 458 +640 425 +480 640 +640 426 +640 480 +500 375 +438 640 +640 480 +640 427 +500 333 +612 612 +640 480 +500 408 +640 427 +640 480 +427 640 +640 427 +640 480 +640 427 +640 457 +640 427 +640 405 +480 640 +640 480 +640 426 +640 426 +500 343 +500 401 +427 640 +574 640 +640 480 +335 500 +500 375 +640 480 +640 480 +640 427 +640 480 +640 427 +640 564 +640 542 +500 500 +640 409 +480 640 +612 612 +428 640 +640 426 +640 480 +640 427 +640 424 +640 633 +640 480 +640 426 +640 480 +640 361 +640 426 +640 266 +640 424 +500 307 +640 480 +425 640 +500 368 +568 640 +640 453 +640 427 +640 503 +500 375 +640 374 +640 359 +640 427 +640 448 +426 640 +640 480 +400 500 +500 333 +640 427 +640 426 +640 427 +640 601 +640 427 +640 513 +640 480 +640 425 +427 640 +640 480 +640 426 +500 375 +640 427 +427 640 +640 480 +500 425 +500 340 +640 427 +640 480 +640 359 +640 478 +640 480 +427 640 +640 360 +640 376 +640 460 +640 406 +640 480 +640 427 +612 612 +500 375 +419 640 +640 588 +640 428 +480 640 +375 500 +640 427 +640 480 +640 480 +640 423 +640 480 +640 480 +640 513 +640 640 +640 361 +640 498 +640 426 +640 480 +640 427 +500 375 +640 427 +270 360 +457 640 +426 640 +386 640 +501 640 +479 640 +640 634 +640 426 +640 480 +521 640 +640 426 +428 640 +640 426 +500 375 +640 427 +640 360 +427 640 +640 480 +640 427 +431 259 +640 426 +640 604 +600 386 +393 500 +640 426 +640 478 +640 425 +612 612 +332 500 +639 640 +500 640 +640 448 +500 333 +500 333 +640 480 +640 427 +640 427 +500 349 +640 435 +640 424 +640 512 +500 333 +640 426 +640 480 +640 480 +480 640 +500 449 +640 480 +640 480 +640 427 +640 481 +480 640 +500 375 +640 425 +640 478 +500 330 +640 554 +640 479 +640 480 +640 480 +640 348 +640 427 +640 480 +640 480 +640 427 +640 425 +624 640 +640 480 +640 424 +531 640 +640 381 +640 480 +640 428 +640 427 +640 437 +393 500 +374 500 +640 480 +640 443 +640 480 +640 480 +640 428 +640 428 +640 443 +500 334 +640 427 +500 346 +640 430 +640 427 +640 427 +500 375 +640 354 +480 640 +640 428 +640 480 +360 640 +640 480 +426 640 +640 391 +640 478 +640 512 +640 480 +500 375 +276 410 +500 375 +480 640 +478 640 +427 640 +640 422 +640 425 +640 480 +640 426 +640 480 +640 480 +640 426 +640 520 +640 426 +640 480 +640 488 +612 612 +333 500 +640 480 +500 375 +640 427 +281 500 +640 426 +640 480 +413 500 +640 427 +640 480 +640 480 +640 427 +640 428 +503 640 +640 427 +640 359 +640 480 +640 425 +640 425 +640 427 +428 640 +640 480 +640 182 +640 427 +500 375 +479 640 +612 612 +480 640 +640 480 +640 480 +600 400 +640 427 +640 386 +640 480 +640 480 +375 500 +640 480 +640 480 +427 640 +640 427 +640 480 +640 396 +480 640 +640 480 +640 427 +480 640 +480 640 +640 360 +500 375 +640 543 +640 427 +640 465 +640 426 +360 640 +640 369 +640 480 +640 428 +640 480 +640 475 +403 500 +480 640 +640 410 +500 333 +480 640 +640 480 +640 427 +426 640 +640 480 +424 640 +640 336 +480 640 +640 427 +500 333 +480 640 +500 390 +640 442 +612 612 +640 541 +612 612 +401 500 +612 612 +640 427 +640 428 +640 426 +640 427 +640 425 +640 480 +375 500 +640 427 +640 427 +640 480 +640 418 +640 425 +427 640 +426 640 +640 480 +640 425 +375 500 +640 427 +640 427 +640 360 +500 400 +640 427 +640 480 +640 427 +426 640 +361 640 +640 427 +640 480 +640 480 +427 640 +640 480 +375 500 +480 640 +640 425 +640 480 +500 375 +640 480 +640 427 +640 427 +426 640 +640 426 +640 480 +640 427 +480 640 +640 427 +424 640 +640 428 +480 640 +480 640 +457 640 +640 480 +480 640 +500 334 +640 480 +426 640 +640 452 +500 333 +640 544 +640 428 +423 640 +640 427 +640 428 +480 640 +640 427 +640 480 +612 612 +640 427 +480 640 +500 375 +640 427 +640 428 +425 640 +391 640 +397 640 +640 480 +640 425 +640 480 +427 640 +640 480 +425 640 +640 480 +375 500 +500 335 +640 416 +640 427 +640 495 +640 427 +640 428 +500 375 +640 427 +640 425 +640 333 +480 640 +500 333 +425 640 +640 428 +640 640 +640 424 +640 427 +500 640 +640 427 +640 426 +640 427 +640 478 +640 457 +640 425 +640 480 +640 480 +500 331 +494 640 +640 480 +640 428 +375 500 +428 640 +500 281 +640 480 +640 426 +640 425 +640 427 +640 478 +640 414 +640 427 +449 640 +640 426 +479 640 +640 519 +640 479 +640 427 +480 640 +500 333 +640 427 +494 500 +640 427 +640 480 +640 552 +500 375 +480 640 +640 504 +640 480 +480 640 +569 640 +500 333 +640 480 +640 435 +640 480 +500 375 +640 427 +640 480 +500 375 +480 640 +640 480 +640 640 +398 640 +640 427 +640 424 +640 425 +341 500 +640 359 +640 422 +640 491 +640 503 +640 429 +640 480 +414 640 +640 480 +640 529 +640 480 +640 513 +640 478 +640 427 +375 500 +640 480 +640 480 +480 360 +640 640 +375 500 +640 480 +640 480 +480 640 +640 608 +640 480 +640 427 +640 480 +640 359 +640 480 +500 375 +500 375 +640 427 +640 480 +500 375 +640 426 +500 500 +640 532 +640 480 +612 612 +640 532 +612 612 +426 640 +500 332 +500 375 +640 480 +640 450 +458 640 +640 291 +640 427 +640 480 +640 429 +500 333 +640 480 +640 360 +640 427 +640 426 +640 480 +640 480 +480 640 +640 425 +480 640 +500 375 +476 640 +500 328 +640 480 +640 458 +640 480 +640 427 +640 360 +640 424 +640 411 +457 640 +640 558 +572 640 +427 640 +640 427 +427 640 +640 349 +640 480 +427 640 +640 427 +640 428 +640 360 +428 640 +640 360 +480 640 +640 425 +640 508 +640 640 +640 426 +640 491 +640 480 +612 612 +480 640 +640 427 +640 480 +640 426 +640 480 +500 463 +640 480 +640 480 +640 480 +640 419 +640 479 +640 480 +640 480 +500 375 +640 381 +640 425 +640 428 +480 640 +450 286 +640 480 +640 427 +600 450 +640 480 +640 428 +640 480 +640 480 +640 426 +640 427 +500 375 +640 480 +500 375 +500 375 +640 425 +640 308 +640 424 +480 640 +478 640 +427 640 +375 500 +640 428 +500 375 +434 640 +640 480 +640 480 +500 293 +640 427 +640 488 +640 427 +640 427 +640 427 +480 640 +640 426 +480 640 +640 424 +640 427 +424 640 +640 480 +640 480 +640 480 +494 640 +427 640 +640 348 +356 500 +640 480 +375 500 +431 640 +500 365 +640 428 +612 612 +640 489 +640 480 +480 640 +640 480 +640 424 +640 428 +640 480 +640 479 +640 427 +640 427 +480 640 +500 325 +640 427 +640 432 +640 427 +640 444 +427 640 +640 427 +425 640 +480 640 +640 433 +480 640 +640 409 +640 480 +640 427 +375 500 +333 500 +640 468 +480 640 +640 480 +640 471 +640 463 +640 429 +640 480 +640 402 +640 478 +472 640 +100 144 +640 428 +640 425 +640 481 +640 386 +640 480 +640 480 +640 427 +640 463 +480 640 +425 640 +500 333 +640 427 +640 480 +640 480 +640 424 +500 375 +640 482 +640 427 +640 427 +640 544 +640 427 +640 611 +480 640 +612 612 +640 480 +640 480 +640 480 +444 640 +640 427 +640 479 +253 640 +480 640 +640 480 +612 612 +640 478 +640 480 +640 427 +427 640 +640 480 +640 480 +427 640 +640 488 +520 640 +612 612 +640 427 +640 426 +640 480 +480 640 +640 407 +640 480 +640 480 +500 375 +480 640 +399 640 +640 480 +427 640 +640 384 +360 640 +457 640 +640 334 +640 426 +428 640 +640 425 +640 480 +640 427 +640 426 +396 640 +480 640 +640 427 +640 480 +640 480 +480 640 +640 480 +640 426 +640 417 +640 480 +640 513 +640 427 +640 426 +640 480 +640 485 +640 480 +640 360 +457 640 +640 427 +640 405 +640 360 +640 480 +640 199 +640 480 +640 428 +640 480 +640 426 +482 640 +640 433 +640 480 +640 640 +640 427 +640 480 +640 408 +548 640 +640 426 +480 640 +480 640 +612 612 +640 427 +640 640 +640 481 +360 640 +640 457 +640 480 +640 426 +640 426 +640 426 +426 640 +500 335 +640 461 +640 427 +640 480 +640 427 +630 640 +640 424 +640 215 +640 429 +640 429 +640 480 +640 480 +640 427 +640 478 +480 640 +640 479 +640 480 +640 426 +640 480 +640 427 +640 480 +640 480 +640 426 +640 480 +640 427 +640 428 +480 640 +612 612 +480 640 +424 640 +640 427 +612 612 +500 500 +640 427 +640 427 +500 375 +640 480 +427 640 +640 427 +500 375 +480 640 +640 480 +640 480 +426 640 +640 480 +640 480 +518 640 +640 462 +427 640 +640 427 +500 333 +500 375 +640 480 +427 640 +480 640 +640 480 +481 640 +640 480 +640 480 +500 375 +425 640 +480 640 +426 640 +427 640 +320 240 +640 427 +640 480 +640 480 +640 425 +640 480 +478 640 +640 427 +640 426 +640 456 +640 480 +480 640 +480 640 +640 640 +334 500 +640 428 +640 449 +500 375 +640 394 +640 480 +500 257 +426 640 +640 426 +427 640 +640 479 +640 427 +426 640 +640 506 +478 640 +480 640 +640 480 +500 333 +640 425 +640 480 +640 424 +400 500 +640 428 +375 500 +427 640 +640 315 +640 480 +334 500 +480 640 +480 640 +480 640 +640 480 +640 427 +640 480 +640 428 +296 640 +640 426 +500 333 +500 472 +431 640 +461 640 +640 480 +500 403 +640 427 +640 428 +640 480 +426 640 +500 375 +480 640 +500 375 +500 375 +640 427 +640 285 +640 428 +480 640 +640 427 +480 640 +640 427 +640 428 +640 427 +640 480 +640 427 +640 427 +333 500 +500 375 +512 640 +640 426 +640 480 +640 427 +612 612 +500 375 +640 427 +425 640 +640 443 +480 640 +640 487 +428 640 +332 500 +640 360 +640 482 +640 480 +640 426 +480 640 +640 427 +640 368 +640 480 +427 640 +425 640 +640 480 +500 335 +500 333 +424 640 +640 428 +454 640 +640 640 +640 480 +640 480 +640 427 +640 480 +640 427 +334 500 +640 579 +480 640 +640 383 +640 428 +640 480 +640 478 +640 426 +640 444 +640 569 +464 640 +631 640 +640 480 +640 428 +640 427 +640 480 +640 360 +640 480 +612 612 +426 640 +640 480 +427 640 +640 427 +640 480 +640 480 +640 480 +640 640 +426 640 +429 600 +500 375 +640 480 +500 375 +480 640 +640 480 +640 427 +640 480 +612 612 +640 481 +640 323 +640 429 +612 612 +640 480 +640 425 +640 360 +500 332 +640 480 +640 426 +500 375 +640 640 +480 640 +640 480 +640 480 +640 428 +640 480 +640 429 +640 640 +640 514 +333 500 +640 480 +516 640 +640 427 +640 422 +640 427 +640 427 +640 427 +480 640 +612 612 +640 480 +363 500 +500 375 +500 374 +429 640 +640 425 +427 640 +640 480 +640 480 +640 425 +640 480 +640 596 +640 429 +640 480 +640 473 +640 341 +640 427 +480 640 +600 591 +640 480 +500 375 +500 357 +480 359 +338 500 +640 486 +640 426 +640 480 +540 477 +471 640 +640 427 +500 311 +500 326 +427 640 +640 480 +640 480 +510 640 +640 480 +500 375 +640 314 +640 426 +500 332 +640 426 +640 480 +640 480 +640 396 +344 500 +480 640 +640 526 +640 480 +639 640 +612 612 +640 461 +500 375 +640 427 +640 426 +640 425 +640 428 +640 564 +640 428 +500 375 +640 416 +640 438 +640 480 +640 480 +640 480 +478 640 +480 640 +427 640 +640 424 +339 500 +640 467 +640 480 +640 480 +640 428 +428 640 +640 426 +400 600 +500 222 +640 640 +640 429 +640 360 +640 480 +640 427 +500 375 +480 640 +383 640 +640 424 +500 375 +640 426 +640 480 +640 426 +640 445 +512 640 +640 395 +640 424 +640 482 +640 427 +640 512 +640 480 +640 424 +640 426 +640 480 +640 480 +640 425 +480 640 +427 640 +640 427 +500 375 +640 445 +640 501 +640 426 +640 480 +612 612 +640 427 +375 500 +640 480 +640 427 +640 427 +640 424 +334 500 +500 333 +500 357 +640 480 +640 429 +640 427 +640 480 +580 377 +640 499 +426 640 +640 609 +640 480 +640 333 +479 640 +541 640 +640 496 +640 359 +640 427 +612 612 +640 473 +375 500 +640 427 +427 640 +480 640 +612 612 +480 640 +640 393 +500 332 +424 640 +500 414 +640 473 +640 253 +500 473 +640 426 +640 416 +640 427 +414 640 +640 427 +640 427 +640 427 +640 480 +640 480 +640 480 +640 427 +612 612 +640 480 +640 427 +640 480 +640 480 +640 324 +480 640 +640 361 +640 424 +320 240 +640 427 +480 640 +640 425 +640 550 +640 640 +640 480 +640 429 +640 480 +640 491 +640 426 +640 368 +384 640 +640 427 +480 640 +640 427 +640 426 +428 640 +640 480 +427 640 +640 384 +640 448 +640 444 +640 320 +640 427 +640 427 +612 612 +640 480 +480 640 +640 427 +425 640 +640 480 +640 373 +640 425 +500 375 +640 480 +617 640 +640 427 +640 640 +640 480 +364 640 +442 500 +640 480 +500 377 +640 486 +640 550 +640 426 +640 427 +640 491 +640 380 +640 425 +640 411 +480 640 +640 427 +640 480 +640 383 +640 461 +640 416 +640 426 +640 427 +427 640 +640 480 +433 640 +480 640 +612 612 +480 640 +640 427 +500 331 +500 375 +640 427 +640 480 +480 640 +480 640 +640 480 +640 427 +640 360 +500 336 +640 427 +640 407 +640 438 +640 427 +427 640 +481 640 +480 640 +640 480 +640 480 +320 240 +640 424 +640 508 +640 399 +480 640 +640 320 +640 480 +480 640 +294 196 +640 464 +427 640 +334 640 +480 640 +640 480 +500 375 +640 428 +640 426 +640 427 +500 335 +640 426 +640 640 +426 640 +640 428 +640 388 +480 640 +640 320 +480 640 +640 480 +640 480 +640 428 +333 500 +500 375 +640 424 +480 640 +569 640 +640 278 +500 375 +480 640 +640 424 +640 480 +640 427 +640 428 +640 360 +640 426 +456 640 +640 426 +640 426 +427 640 +427 640 +640 427 +640 480 +640 427 +510 640 +640 480 +640 475 +640 480 +640 417 +640 480 +640 480 +640 427 +640 426 +640 427 +426 640 +640 480 +640 427 +640 398 +640 480 +640 462 +333 500 +640 475 +375 500 +480 640 +500 341 +640 285 +640 480 +480 640 +640 427 +480 640 +426 640 +640 427 +640 640 +640 425 +640 426 +640 480 +480 640 +333 500 +640 383 +375 500 +640 480 +640 636 +427 640 +480 640 +640 480 +500 399 +500 332 +640 304 +640 480 +427 640 +640 480 +640 480 +512 640 +427 640 +500 391 +500 422 +433 640 +334 500 +640 640 +640 425 +424 640 +640 427 +640 400 +375 500 +640 427 +640 640 +640 424 +427 640 +529 640 +640 480 +640 393 +640 427 +640 480 +500 374 +500 333 +640 480 +425 640 +612 612 +640 480 +480 640 +480 640 +480 640 +480 640 +500 375 +500 153 +500 333 +640 426 +640 483 +640 480 +640 480 +640 427 +640 480 +640 427 +640 427 +640 438 +640 428 +634 640 +640 343 +640 529 +640 425 +640 426 +500 247 +640 425 +640 496 +480 640 +500 332 +640 478 +500 375 +480 640 +640 480 +640 427 +640 366 +640 438 +437 500 +389 540 +640 428 +640 480 +640 480 +360 640 +640 427 +478 640 +640 480 +500 334 +640 480 +640 427 +581 640 +640 480 +427 640 +640 400 +640 425 +640 480 +640 480 +640 443 +640 480 +640 427 +640 456 +640 427 +640 427 +640 484 +478 640 +640 480 +480 640 +640 480 +500 375 +640 430 +640 482 +640 427 +640 480 +640 426 +427 640 +427 640 +640 359 +640 480 +640 426 +640 399 +640 427 +445 640 +333 500 +640 425 +640 425 +480 640 +500 335 +424 640 +640 480 +480 640 +427 640 +500 334 +640 426 +640 480 +640 480 +640 480 +640 472 +490 367 +500 335 +640 480 +640 418 +612 612 +640 508 +640 480 +640 427 +640 360 +500 379 +640 427 +640 480 +640 427 +640 480 +640 424 +500 433 +480 640 +480 640 +640 480 +640 480 +640 426 +480 640 +640 428 +500 375 +640 144 +640 480 +640 425 +585 329 +483 640 +640 502 +640 425 +640 360 +640 480 +500 333 +640 480 +640 484 +640 383 +480 640 +640 480 +640 480 +640 424 +640 480 +640 427 +612 612 +383 640 +640 429 +640 485 +640 427 +500 276 +640 539 +640 480 +640 427 +640 478 +640 491 +480 640 +640 427 +640 480 +640 426 +640 425 +640 427 +640 480 +640 424 +480 640 +612 612 +640 426 +640 425 +640 359 +480 640 +640 368 +500 333 +480 640 +500 500 +640 480 +640 480 +640 425 +640 480 +640 456 +640 427 +640 480 +640 425 +640 427 +500 500 +484 640 +640 480 +447 640 +640 427 +525 640 +640 426 +640 480 +353 500 +500 375 +640 480 +640 359 +640 480 +640 396 +640 463 +640 480 +640 495 +640 427 +611 640 +480 640 +426 640 +640 446 +480 640 +427 640 +612 612 +640 480 +427 640 +640 423 +457 640 +640 423 +640 427 +640 480 +427 640 +640 480 +480 640 +640 427 +542 588 +640 425 +480 640 +428 640 +640 425 +640 427 +634 640 +640 480 +480 640 +640 426 +583 640 +640 480 +427 640 +640 480 +640 526 +500 321 +511 640 +640 480 +640 480 +640 480 +640 478 +640 425 +640 480 +640 428 +640 426 +426 640 +640 424 +427 640 +640 425 +640 426 +640 480 +640 425 +546 366 +640 427 +500 375 +640 427 +351 500 +640 425 +500 375 +640 427 +640 480 +480 640 +640 360 +640 480 +500 375 +480 640 +640 427 +427 640 +488 500 +369 640 +640 405 +500 375 +640 640 +640 427 +481 640 +360 640 +640 425 +640 427 +640 428 +480 640 +640 480 +484 640 +640 429 +500 400 +335 500 +640 428 +640 429 +500 333 +500 341 +428 640 +640 427 +640 427 +640 605 +640 640 +640 425 +640 360 +640 480 +427 640 +640 480 +480 640 +600 448 +640 480 +320 480 +424 640 +640 427 +427 640 +640 480 +429 640 +640 373 +427 640 +640 480 +426 640 +500 338 +640 490 +612 612 +640 426 +640 427 +640 428 +480 640 +480 640 +640 428 +640 427 +640 533 +640 553 +640 480 +427 640 +640 480 +640 426 +500 441 +480 640 +640 427 +640 480 +640 353 +640 308 +640 423 +480 640 +640 427 +640 427 +640 480 +400 300 +500 375 +500 347 +400 300 +640 480 +612 612 +640 486 +640 426 +640 433 +640 483 +612 612 +500 375 +640 480 +426 640 +640 425 +640 425 +640 425 +640 360 +640 480 +409 640 +640 480 +640 427 +640 480 +640 480 +636 636 +640 419 +640 452 +640 427 +640 480 +640 480 +640 479 +427 640 +640 427 +640 427 +640 406 +425 640 +333 500 +427 640 +640 427 +480 640 +500 375 +500 375 +391 500 +640 404 +640 480 +640 427 +640 480 +640 427 +640 360 +640 428 +640 426 +500 333 +640 480 +612 612 +428 640 +640 427 +480 640 +500 299 +640 457 +640 640 +640 427 +640 426 +640 439 +500 375 +640 391 +640 426 +640 426 +500 333 +375 500 +640 426 +640 424 +424 640 +640 427 +500 192 +426 640 +640 480 +640 480 +640 480 +640 438 +505 640 +640 405 +640 426 +427 640 +640 487 +500 375 +427 640 +640 427 +640 480 +640 480 +640 480 +640 480 +479 640 +428 640 +480 640 +640 427 +640 360 +640 427 +640 321 +640 480 +640 427 +640 480 +426 640 +640 456 +640 427 +640 373 +640 480 +640 480 +640 480 +640 426 +640 427 +640 382 +640 458 +640 484 +640 480 +640 478 +640 427 +640 362 +319 500 +640 480 +640 193 +640 480 +640 366 +640 480 +427 640 +640 430 +640 478 +429 640 +500 333 +612 612 +640 480 +640 427 +375 500 +640 427 +640 378 +640 173 +500 375 +640 480 +374 500 +462 640 +500 375 +640 480 +640 426 +448 640 +436 640 +640 480 +640 427 +640 338 +640 480 +427 640 +640 511 +640 480 +640 480 +640 427 +640 427 +480 640 +640 427 +500 333 +640 424 +427 640 +500 375 +427 640 +640 480 +640 480 +640 428 +640 427 +640 505 +498 640 +640 426 +640 480 +640 480 +640 480 +640 468 +640 480 +640 562 +640 424 +430 640 +640 480 +640 428 +640 480 +427 640 +428 640 +427 640 +480 640 +424 640 +640 427 +640 480 +640 425 +480 640 +500 375 +640 480 +480 640 +500 500 +333 500 +640 480 +600 450 +640 360 +500 375 +424 640 +331 500 +640 480 +426 640 +640 478 +612 612 +640 424 +640 480 +640 427 +426 640 +640 359 +640 424 +640 427 +640 427 +640 427 +480 640 +640 375 +360 640 +320 480 +640 508 +640 427 +640 480 +599 640 +640 480 +640 480 +640 480 +640 429 +500 375 +640 480 +640 427 +640 480 +428 640 +640 480 +480 640 +426 640 +640 427 +640 456 +640 480 +640 480 +478 640 +427 640 +500 496 +428 640 +640 427 +640 425 +334 500 +481 640 +640 427 +640 426 +640 480 +471 500 +640 506 +640 424 +480 640 +640 427 +640 444 +426 640 +640 480 +640 480 +640 428 +640 431 +640 431 +640 480 +500 333 +640 427 +427 640 +640 512 +640 480 +512 640 +640 359 +640 640 +640 428 +640 426 +640 640 +500 375 +640 519 +480 640 +640 375 +427 640 +640 215 +640 429 +360 640 +640 480 +640 425 +434 640 +640 480 +640 480 +640 429 +640 427 +612 612 +640 426 +640 423 +480 640 +640 558 +640 427 +640 429 +640 427 +480 640 +640 480 +640 480 +419 640 +640 426 +640 480 +640 427 +640 480 +284 500 +640 346 +640 400 +640 480 +640 425 +612 612 +640 480 +640 360 +640 480 +425 640 +640 427 +640 426 +500 375 +640 412 +640 480 +573 640 +640 427 +612 612 +640 423 +480 640 +640 360 +426 640 +640 480 +383 640 +640 427 +480 640 +640 480 +640 480 +500 376 +640 426 +480 640 +640 556 +640 427 +428 640 +640 428 +427 640 +375 500 +640 360 +500 375 +375 500 +640 481 +640 480 +640 480 +500 375 +640 480 +640 480 +640 640 +454 640 +640 477 +640 421 +480 640 +640 427 +640 480 +500 333 +640 426 +640 480 +640 425 +640 426 +640 424 +640 579 +640 383 +640 640 +640 485 +640 426 +427 640 +640 479 +344 500 +640 480 +640 480 +427 640 +640 478 +600 450 +640 428 +640 427 +640 426 +427 640 +640 427 +640 480 +640 480 +480 640 +480 640 +640 480 +500 375 +427 640 +450 338 +500 375 +640 480 +640 448 +500 330 +640 428 +500 375 +640 480 +612 612 +457 640 +386 640 +480 640 +640 480 +480 640 +640 427 +640 492 +450 640 +480 640 +427 640 +478 640 +640 480 +640 424 +500 375 +612 612 +480 640 +480 640 +640 427 +640 640 +640 427 +480 640 +333 500 +480 640 +640 480 +640 426 +480 640 +500 375 +640 383 +640 480 +640 427 +640 506 +640 427 +640 511 +453 640 +640 428 +640 480 +640 439 +640 640 +640 426 +640 418 +453 640 +568 640 +386 500 +479 640 +640 428 +640 426 +480 640 +640 268 +640 427 +640 431 +640 439 +640 480 +480 640 +640 360 +640 427 +500 333 +428 640 +640 480 +612 612 +640 503 +640 427 +640 478 +425 640 +425 640 +480 640 +640 480 +430 640 +427 640 +640 427 +640 393 +640 480 +640 480 +333 500 +399 500 +640 480 +480 640 +640 480 +640 360 +640 480 +640 427 +480 360 +640 296 +640 428 +640 427 +640 480 +640 558 +640 426 +640 563 +640 480 +640 425 +640 424 +640 480 +640 480 +640 427 +640 427 +402 402 +640 428 +640 429 +640 462 +640 427 +640 480 +480 640 +640 226 +640 480 +493 640 +573 640 +424 640 +640 408 +375 500 +500 375 +640 640 +640 427 +640 480 +424 640 +640 427 +640 480 +640 423 +640 427 +640 480 +640 426 +500 366 +640 480 +517 640 +480 640 +640 427 +640 458 +480 640 +640 412 +640 497 +640 480 +500 338 +640 480 +640 425 +640 459 +375 500 +640 480 +640 412 +500 375 +640 640 +640 427 +640 480 +640 480 +640 640 +427 640 +640 425 +640 428 +640 480 +500 375 +640 427 +500 333 +314 500 +640 478 +640 480 +640 480 +640 427 +442 640 +480 640 +428 640 +500 375 +500 383 +640 480 +480 640 +640 427 +640 426 +640 400 +640 424 +640 325 +384 500 +640 480 +640 480 +640 426 +375 500 +640 428 +500 376 +478 640 +640 480 +640 424 +480 640 +640 480 +480 640 +501 640 +640 425 +640 480 +640 480 +500 333 +640 480 +500 400 +640 342 +640 480 +500 375 +640 273 +640 277 +500 335 +640 480 +500 375 +427 640 +640 328 +500 263 +375 500 +640 425 +640 480 +480 640 +640 480 +640 426 +424 640 +500 332 +640 480 +500 375 +318 500 +484 640 +640 486 +640 480 +640 429 +500 375 +640 425 +640 400 +640 480 +500 333 +640 640 +640 480 +640 480 +640 426 +467 371 +333 500 +640 480 +640 480 +640 389 +640 427 +640 425 +640 426 +349 640 +480 640 +640 424 +500 333 +640 427 +640 481 +640 426 +500 375 +640 518 +494 389 +640 480 +640 480 +640 513 +640 426 +500 393 +500 188 +640 427 +640 427 +500 375 +427 640 +332 500 +480 640 +640 470 +640 480 +640 288 +640 480 +640 480 +640 480 +640 425 +640 480 +640 480 +640 427 +640 480 +640 480 +640 480 +640 427 +480 640 +640 323 +640 480 +561 640 +640 480 +640 427 +640 427 +500 467 +640 427 +375 500 +480 640 +640 480 +428 640 +640 480 +640 480 +640 480 +500 375 +640 427 +640 428 +478 640 +640 426 +640 428 +640 360 +442 640 +478 640 +500 332 +640 426 +640 480 +500 375 +640 427 +495 640 +640 425 +640 427 +640 466 +640 479 +640 469 +640 551 +640 480 +640 480 +640 425 +640 427 +640 424 +640 480 +640 417 +640 480 +640 483 +640 480 +335 500 +640 640 +640 427 +640 480 +425 640 +640 427 +448 336 +425 640 +480 640 +640 400 +640 480 +640 509 +640 427 +500 294 +429 640 +640 360 +640 481 +640 426 +480 640 +640 428 +640 425 +640 426 +396 640 +500 335 +640 480 +640 425 +640 480 +480 640 +407 640 +500 375 +640 426 +640 480 +500 376 +640 427 +483 485 +426 640 +640 425 +640 480 +427 640 +640 640 +640 426 +612 612 +640 480 +640 427 +424 640 +640 427 +486 417 +640 480 +640 571 +427 640 +640 480 +640 480 +640 427 +640 480 +640 453 +640 426 +640 480 +640 480 +640 425 +640 493 +640 480 +426 640 +480 640 +640 480 +500 376 +640 427 +640 503 +334 500 +612 612 +500 333 +500 375 +375 500 +612 612 +640 480 +640 427 +500 333 +427 640 +480 640 +375 500 +640 427 +640 427 +521 315 +427 640 +427 640 +640 480 +500 375 +500 375 +640 387 +640 306 +640 426 +640 427 +640 458 +640 454 +640 480 +640 427 +640 427 +640 383 +500 375 +640 480 +640 427 +640 427 +500 375 +640 480 +640 480 +640 480 +640 427 +500 375 +640 480 +640 427 +640 260 +480 640 +640 427 +640 427 +500 333 +640 480 +480 640 +640 427 +427 640 +427 640 +640 427 +500 333 +480 640 +333 500 +427 640 +640 426 +640 390 +640 480 +400 301 +640 480 +500 339 +239 180 +640 425 +428 640 +640 426 +640 640 +640 478 +612 612 +640 465 +640 426 +427 640 +640 524 +640 436 +640 315 +640 427 +640 428 +500 333 +640 427 +500 374 +500 333 +640 427 +392 640 +640 446 +340 640 +640 480 +640 427 +480 640 +612 612 +359 640 +427 640 +426 640 +640 427 +427 640 +640 480 +375 500 +640 442 +640 480 +500 337 +640 480 +427 640 +375 500 +640 480 +640 427 +500 375 +332 500 +462 640 +426 640 +333 500 +640 480 +640 485 +640 428 +375 500 +640 640 +640 360 +640 424 +640 428 +640 411 +640 480 +640 425 +640 427 +640 426 +640 427 +640 480 +500 281 +640 429 +480 640 +425 640 +640 424 +427 640 +640 427 +640 479 +152 100 +640 480 +640 454 +640 428 +640 480 +426 640 +640 623 +640 480 +640 480 +640 640 +640 480 +640 359 +500 333 +640 480 +427 640 +426 640 +500 375 +480 640 +640 480 +333 500 +640 425 +612 612 +426 640 +640 480 +640 391 +480 640 +640 480 +640 427 +640 428 +640 480 +500 375 +640 427 +640 480 +640 634 +640 482 +640 426 +640 427 +640 480 +480 640 +640 480 +411 640 +640 512 +640 640 +556 640 +640 480 +427 640 +640 419 +640 433 +640 400 +640 427 +640 360 +640 426 +480 640 +480 640 +419 640 +640 528 +375 500 +640 480 +640 480 +640 480 +640 480 +640 427 +500 375 +427 640 +426 640 +425 640 +479 640 +480 640 +640 368 +640 427 +640 480 +424 640 +640 480 +640 408 +640 424 +466 640 +640 425 +480 640 +480 640 +640 458 +640 428 +500 375 +640 479 +500 375 +640 480 +200 300 +640 480 +433 640 +480 640 +500 421 +640 361 +640 480 +640 480 +500 375 +480 640 +640 480 +640 487 +640 427 +640 426 +640 429 +480 640 +640 640 +427 640 +427 640 +640 480 +500 375 +500 313 +640 424 +640 480 +640 424 +640 371 +640 425 +640 303 +640 427 +547 640 +640 429 +335 500 +640 480 +640 480 +500 333 +640 594 +640 427 +500 375 +458 640 +640 153 +480 640 +640 480 +640 408 +640 427 +500 375 +640 426 +640 427 +640 640 +640 427 +640 480 +640 609 +640 464 +640 425 +612 612 +640 480 +640 426 +426 640 +640 458 +640 480 +640 480 +640 416 +640 427 +640 480 +640 427 +640 426 +640 429 +612 612 +640 427 +640 403 +640 480 +640 431 +427 640 +640 480 +640 480 +640 427 +480 640 +480 640 +612 612 +640 427 +640 425 +480 640 +500 333 +640 480 +623 515 +375 500 +640 425 +459 640 +640 513 +356 373 +640 428 +640 427 +389 640 +640 408 +640 480 +640 517 +427 640 +640 426 +480 640 +640 404 +640 480 +427 640 +640 632 +500 375 +480 640 +640 415 +334 500 +375 500 +480 640 +640 480 +640 480 +491 640 +640 425 +480 640 +640 410 +612 612 +640 480 +480 640 +480 640 +640 427 +640 480 +640 452 +431 640 +640 428 +251 500 +640 426 +640 502 +640 427 +640 453 +640 480 +640 426 +640 451 +640 480 +640 428 +640 480 +640 480 +640 409 +493 640 +640 480 +500 334 +640 424 +640 518 +640 426 +598 640 +640 427 +640 427 +640 426 +640 427 +640 424 +375 500 +425 500 +640 418 +500 375 +640 480 +640 428 +480 640 +640 426 +500 335 +513 640 +375 500 +597 400 +640 427 +640 480 +640 480 +640 606 +640 380 +640 427 +640 480 +640 426 +640 618 +428 640 +640 425 +480 272 +429 640 +427 640 +640 404 +640 427 +375 500 +500 375 +640 426 +480 640 +480 640 +640 481 +612 612 +640 427 +640 480 +640 478 +640 480 +640 480 +426 640 +640 427 +640 424 +640 428 +640 480 +640 522 +480 640 +640 480 +375 500 +480 640 +640 425 +640 427 +640 383 +640 480 +600 600 +640 427 +640 480 +640 480 +620 413 +640 480 +640 417 +544 640 +515 640 +427 640 +640 480 +640 480 +640 424 +375 500 +640 480 +640 499 +500 332 +383 640 +500 375 +640 480 +640 427 +428 640 +640 481 +640 428 +640 640 +500 375 +640 359 +640 461 +640 426 +640 426 +427 640 +640 480 +640 480 +640 426 +640 480 +448 277 +640 428 +640 393 +500 324 +640 432 +640 480 +479 640 +640 425 +500 375 +640 428 +480 640 +427 640 +640 427 +427 640 +640 484 +640 427 +612 612 +480 640 +500 375 +640 481 +480 640 +480 640 +640 425 +480 640 +604 453 +440 300 +640 477 +640 426 +640 427 +640 480 +640 480 +426 640 +478 640 +640 640 +640 640 +612 612 +640 480 +640 480 +640 427 +532 640 +480 640 +500 332 +612 612 +640 427 +640 480 +640 480 +640 480 +640 480 +640 480 +375 500 +640 640 +640 423 +640 509 +640 396 +640 428 +480 640 +640 480 +426 640 +500 375 +640 480 +640 427 +500 400 +640 427 +640 414 +640 427 +334 500 +640 426 +640 427 +427 640 +427 640 +500 332 +640 480 +360 640 +640 428 +640 426 +480 640 +640 427 +640 427 +422 640 +640 360 +400 500 +480 640 +640 427 +375 500 +335 500 +640 361 +331 500 +640 480 +640 480 +640 480 +640 536 +640 640 +428 640 +640 427 +640 480 +500 333 +640 427 +640 385 +480 640 +640 428 +500 375 +640 425 +427 640 +480 640 +480 640 +640 427 +640 427 +640 480 +640 427 +640 427 +640 480 +462 640 +640 480 +640 480 +640 640 +426 640 +640 427 +640 425 +428 640 +640 427 +640 424 +640 427 +500 375 +479 640 +640 425 +640 428 +500 375 +640 426 +640 480 +427 640 +500 333 +640 480 +425 640 +640 410 +640 480 +640 425 +480 640 +640 480 +640 427 +640 453 +640 426 +640 480 +640 483 +640 427 +640 427 +640 450 +612 612 +640 478 +478 640 +425 640 +640 424 +640 427 +640 427 +640 480 +375 500 +500 439 +640 359 +640 426 +640 480 +480 640 +640 427 +640 480 +640 480 +500 375 +640 480 +640 427 +640 480 +640 426 +433 640 +640 427 +640 463 +640 425 +640 425 +640 426 +640 424 +640 426 +640 429 +640 427 +500 333 +640 480 +640 480 +640 480 +640 427 +480 640 +480 640 +480 485 +640 427 +640 427 +640 428 +480 640 +371 500 +500 375 +640 427 +500 375 +375 500 +500 375 +640 428 +500 375 +640 480 +640 626 +640 360 +640 564 +640 424 +640 480 +375 500 +640 428 +640 427 +640 426 +479 640 +640 512 +640 480 +488 640 +334 500 +640 427 +480 640 +640 499 +480 640 +640 480 +640 627 +640 425 +640 480 +426 640 +640 424 +640 480 +640 427 +640 427 +640 569 +640 480 +640 426 +480 640 +640 480 +481 640 +428 640 +640 427 +640 427 +640 422 +640 429 +480 360 +640 480 +640 480 +640 376 +640 346 +428 640 +640 427 +640 427 +640 360 +640 458 +427 640 +640 479 +500 375 +640 480 +400 300 +500 375 +480 640 +640 427 +428 640 +640 640 +480 640 +640 640 +640 480 +640 471 +640 455 +640 427 +640 480 +640 425 +424 640 +640 361 +640 419 +640 480 +376 500 +640 480 +640 436 +500 375 +480 640 +640 480 +640 481 +640 254 +640 427 +640 427 +640 426 +640 453 +480 640 +640 427 +428 640 +427 640 +640 299 +469 640 +640 480 +640 480 +616 640 +640 480 +500 375 +375 500 +612 612 +332 500 +640 394 +612 612 +640 427 +640 428 +640 426 +640 480 +500 375 +640 427 +480 640 +640 480 +480 640 +640 456 +427 640 +640 480 +559 600 +375 500 +500 375 +640 480 +640 427 +640 480 +480 640 +500 333 +640 184 +427 640 +500 375 +640 480 +640 464 +640 481 +640 326 +426 640 +640 426 +640 427 +500 375 +640 352 +640 480 +640 479 +615 640 +640 425 +640 427 +640 363 +640 480 +640 437 +640 480 +480 319 +600 600 +640 453 +500 332 +640 424 +640 490 +640 480 +356 500 +640 480 +500 333 +375 500 +640 427 +640 480 +640 429 +640 428 +640 425 +640 489 +333 500 +640 439 +480 640 +640 426 +612 612 +391 640 +640 480 +640 427 +281 640 +640 424 +480 640 +640 359 +640 427 +640 480 +480 640 +640 480 +500 375 +640 427 +640 427 +640 427 +640 427 +640 480 +640 480 +640 427 +612 612 +427 640 +640 480 +480 640 +640 480 +640 480 +640 427 +500 375 +427 640 +480 640 +640 428 +640 480 +640 480 +640 457 +640 360 +640 480 +500 337 +640 464 +427 640 +640 424 +640 400 +500 333 +640 427 +500 332 +640 480 +480 640 +640 427 +640 427 +525 350 +640 351 +640 425 +640 480 +640 480 +640 426 +328 500 +575 640 +640 259 +640 426 +640 401 +500 375 +440 500 +640 427 +640 354 +480 640 +640 480 +640 480 +640 480 +640 415 +600 327 +457 640 +500 333 +480 640 +612 612 +640 640 +640 480 +640 424 +425 640 +640 408 +640 431 +640 424 +640 427 +500 500 +425 640 +500 375 +640 410 +640 428 +640 480 +480 640 +640 480 +479 640 +640 480 +500 375 +424 640 +640 480 +640 426 +640 428 +640 425 +640 427 +640 575 +640 438 +640 480 +480 640 +612 612 +640 426 +640 427 +640 443 +640 376 +500 375 +427 640 +612 612 +427 640 +426 640 +640 480 +640 480 +383 640 +640 482 +640 480 +640 480 +640 425 +640 424 +424 640 +640 640 +640 428 +640 531 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +640 478 +640 483 +640 430 +640 480 +560 640 +426 640 +640 427 +400 500 +500 388 +640 476 +640 427 +640 427 +640 427 +640 424 +480 640 +612 612 +538 360 +480 640 +640 428 +604 402 +375 500 +640 480 +500 375 +500 375 +476 640 +640 495 +640 640 +402 640 +640 478 +640 480 +640 427 +475 640 +640 480 +640 480 +640 428 +600 450 +640 433 +426 640 +480 640 +640 480 +640 427 +640 625 +640 480 +640 427 +480 640 +457 640 +640 480 +640 480 +612 612 +640 425 +480 640 +640 427 +640 550 +640 426 +640 427 +640 640 +640 480 +640 480 +640 427 +360 328 +640 424 +315 484 +500 375 +640 427 +640 438 +640 426 +640 466 +425 640 +640 427 +640 427 +640 426 +640 480 +640 480 +640 427 +500 467 +640 401 +640 426 +640 480 +375 500 +640 481 +360 640 +546 640 +640 480 +480 640 +640 480 +640 427 +640 428 +640 506 +448 336 +640 425 +612 612 +428 640 +480 640 +480 640 +481 640 +640 480 +640 427 +640 477 +640 480 +612 612 +500 500 +640 426 +640 478 +640 427 +500 342 +426 640 +375 500 +640 427 +416 640 +640 446 +640 480 +640 480 +640 424 +640 427 +640 480 +640 427 +418 640 +640 426 +640 426 +427 640 +640 480 +640 481 +640 480 +375 500 +640 480 +640 480 +640 480 +640 480 +640 428 +640 392 +426 640 +640 480 +640 480 +640 427 +640 383 +640 529 +640 482 +640 427 +640 427 +640 457 +427 640 +480 640 +640 411 +640 480 +640 480 +640 360 +640 427 +640 480 +640 426 +640 401 +640 360 +640 480 +480 640 +427 640 +640 480 +640 428 +640 480 +596 640 +500 333 +640 480 +640 496 +409 500 +640 495 +455 341 +500 332 +427 640 +640 427 +640 427 +375 500 +640 429 +640 480 +640 427 +640 480 +640 480 +640 478 +426 640 +640 360 +640 384 +640 423 +640 427 +640 480 +434 640 +640 426 +640 427 +640 427 +640 427 +640 427 +640 480 +640 396 +640 480 +640 426 +640 480 +424 640 +640 479 +640 425 +480 640 +640 480 +640 480 +640 515 +640 480 +480 640 +640 428 +640 480 +640 426 +640 426 +480 640 +480 640 +640 480 +640 480 +640 424 +480 640 +640 426 +640 448 +640 425 +427 640 +375 500 +640 480 +480 640 +500 281 +480 640 +640 452 +360 640 +640 243 +640 480 +640 480 +640 514 +640 446 +640 428 +640 480 +457 640 +424 640 +480 640 +500 375 +612 612 +640 453 +640 427 +480 640 +640 453 +513 640 +640 426 +640 480 +640 427 +500 375 +640 480 +424 640 +500 375 +640 480 +640 426 +640 480 +640 400 +480 640 +424 640 +500 375 +640 512 +640 480 +640 425 +640 480 +500 375 +500 375 +428 640 +640 488 +640 480 +640 425 +500 375 +500 375 +640 624 +640 429 +500 500 +640 429 +640 480 +413 640 +480 640 +427 640 +427 640 +480 640 +640 347 +640 516 +427 640 +427 640 +500 375 +640 480 +426 640 +436 640 +640 428 +640 426 +640 427 +640 480 +333 500 +640 426 +480 640 +640 427 +640 480 +480 640 +480 640 +500 375 +427 640 +640 427 +510 640 +480 640 +419 637 +427 640 +352 288 +480 640 +640 524 +480 640 +367 500 +640 480 +640 480 +640 426 +480 640 +640 480 +519 640 +640 427 +640 329 +640 427 +640 383 +640 480 +480 640 +640 427 +640 429 +480 640 +400 500 +640 426 +640 427 +500 333 +480 640 +299 500 +640 480 +640 480 +640 480 +334 500 +640 480 +640 480 +640 434 +500 375 +479 640 +640 427 +640 360 +640 409 +427 640 +640 510 +427 640 +640 479 +640 212 +480 640 +640 480 +640 427 +640 478 +396 500 +640 387 +640 640 +640 477 +640 417 +640 439 +640 427 +640 425 +640 438 +450 600 +640 424 +640 427 +640 361 +640 480 +640 427 +640 512 +640 480 +640 480 +640 471 +500 311 +640 426 +640 426 +640 480 +640 428 +500 375 +480 640 +640 471 +640 480 +640 428 +640 427 +640 451 +480 640 +427 640 +388 640 +640 314 +640 427 +500 400 +500 334 +640 426 +640 427 +640 480 +640 424 +427 640 +640 471 +640 480 +640 431 +640 427 +640 427 +514 640 +500 271 +329 640 +640 480 +500 332 +640 425 +480 640 +500 375 +640 428 +640 426 +640 425 +640 480 +640 412 +640 431 +640 443 +640 481 +500 333 +640 425 +640 384 +427 640 +640 427 +427 640 +500 375 +640 480 +640 427 +640 360 +480 640 +640 480 +500 233 +480 640 +640 426 +449 640 +640 396 +640 426 +566 640 +640 427 +640 529 +612 612 +640 409 +640 426 +480 640 +640 480 +640 428 +500 375 +500 375 +640 512 +640 427 +640 480 +425 640 +640 426 +612 612 +398 640 +640 363 +640 469 +460 640 +640 482 +500 332 +640 425 +640 426 +640 426 +427 640 +640 480 +640 480 +640 427 +640 446 +640 424 +427 640 +640 480 +640 480 +640 427 +640 425 +424 640 +640 427 +640 480 +640 480 +640 400 +640 480 +480 640 +640 288 +480 640 +375 500 +640 480 +500 399 +640 480 +500 375 +480 640 +426 640 +640 480 +640 480 +640 480 +640 427 +640 544 +640 429 +500 365 +640 480 +640 426 +640 428 +640 480 +640 429 +483 640 +640 427 +640 426 +640 480 +640 513 +500 375 +500 396 +381 640 +640 480 +500 375 +640 480 +427 640 +640 426 +640 427 +640 458 +640 360 +640 426 +466 640 +640 480 +480 640 +427 640 +640 427 +640 425 +640 480 +640 428 +500 461 +119 184 +640 427 +640 426 +640 480 +492 500 +640 480 +427 640 +640 360 +640 480 +640 480 +640 640 +375 500 +640 427 +640 423 +568 320 +640 480 +640 480 +640 389 +480 640 +407 640 +640 480 +640 471 +640 445 +480 640 +335 500 +480 640 +640 480 +640 480 +640 428 +640 400 +640 480 +640 480 +640 361 +640 640 +500 375 +427 640 +640 480 +640 424 +640 426 +640 479 +480 640 +640 480 +500 377 +500 362 +500 375 +640 480 +500 333 +640 427 +640 480 +640 427 +640 480 +500 374 +640 361 +640 480 +640 427 +570 640 +640 425 +640 480 +640 480 +640 480 +480 640 +500 334 +640 480 +480 640 +480 640 +500 375 +480 640 +640 640 +640 480 +640 275 +640 480 +500 375 +640 480 +398 640 +640 427 +640 413 +640 509 +640 435 +640 426 +640 361 +427 640 +640 427 +640 480 +429 640 +640 480 +640 533 +500 375 +480 640 +640 425 +640 480 +640 470 +640 423 +640 480 +640 480 +427 640 +640 480 +333 500 +640 427 +640 427 +640 424 +640 480 +428 640 +640 480 +640 429 +640 427 +375 500 +640 427 +640 427 +480 640 +640 329 +640 480 +640 425 +480 640 +640 354 +640 427 +640 480 +640 480 +640 480 +500 375 +640 480 +426 640 +427 640 +640 480 +500 400 +480 640 +427 640 +640 427 +640 369 +600 640 +480 640 +612 612 +640 424 +478 640 +640 427 +640 426 +640 480 +480 640 +640 269 +640 640 +480 640 +420 640 +640 480 +480 640 +427 640 +640 427 +640 499 +480 640 +640 427 +640 478 +512 640 +640 427 +612 612 +640 407 +640 426 +555 640 +640 428 +427 640 +640 427 +640 480 +640 480 +640 426 +640 480 +640 480 +640 335 +640 425 +480 640 +640 428 +640 489 +640 458 +612 612 +460 640 +500 333 +332 500 +480 640 +640 427 +640 426 +640 480 +500 375 +640 425 +640 427 +612 612 +640 480 +640 480 +568 640 +640 427 +375 500 +500 345 +640 427 +640 480 +640 480 +640 426 +480 640 +427 640 +500 375 +500 375 +640 480 +640 287 +640 427 +640 480 +640 427 +500 333 +640 427 +640 480 +480 640 +640 426 +640 480 +640 426 +425 640 +480 640 +512 640 +640 425 +640 427 +426 640 +640 427 +640 480 +478 640 +480 640 +427 640 +500 400 +640 480 +640 509 +640 399 +500 333 +640 640 +640 425 +640 360 +640 480 +640 419 +500 375 +504 640 +640 480 +640 480 +640 480 +640 480 +500 375 +500 333 +640 427 +640 480 +640 424 +640 424 +640 427 +600 600 +640 480 +500 375 +500 332 +427 640 +640 448 +640 426 +500 375 +640 480 +640 462 +640 429 +640 480 +640 480 +425 640 +500 333 +500 375 +427 640 +640 480 +640 480 +640 428 +612 612 +640 480 +640 408 +600 459 +640 480 +427 640 +640 480 +640 480 +640 427 +426 640 +640 424 +640 516 +640 425 +489 640 +640 439 +640 391 +640 426 +640 480 +640 427 +640 427 +480 640 +480 640 +640 472 +640 480 +640 480 +640 384 +640 479 +612 612 +640 426 +480 640 +500 272 +640 427 +640 471 +360 640 +640 427 +640 480 +640 480 +640 424 +640 498 +431 640 +640 426 +640 427 +640 478 +640 426 +426 640 +640 480 +640 480 +500 375 +427 640 +640 346 +640 383 +640 333 +640 480 +500 317 +462 640 +427 640 +640 457 +640 404 +640 425 +640 360 +480 640 +640 427 +640 427 +425 640 +640 425 +640 427 +480 640 +640 427 +640 354 +427 640 +640 382 +640 480 +640 436 +350 500 +640 429 +640 427 +375 500 +612 612 +640 480 +500 333 +383 640 +500 334 +640 480 +494 640 +640 426 +640 427 +427 640 +640 480 +640 444 +640 424 +640 426 +640 480 +640 480 +427 640 +500 411 +427 640 +640 426 +640 427 +640 427 +640 480 +640 424 +640 424 +425 640 +629 640 +640 480 +640 427 +640 427 +640 480 +640 427 +427 640 +640 391 +640 480 +500 368 +500 340 +640 512 +640 427 +426 640 +426 640 +640 426 +640 448 +640 480 +640 588 +612 612 +640 480 +500 269 +492 640 +640 427 +640 478 +640 509 +480 640 +640 480 +640 360 +640 480 +640 427 +640 429 +640 513 +640 480 +640 425 +640 488 +640 345 +640 461 +500 375 +640 480 +500 375 +480 640 +500 345 +640 480 +640 415 +640 428 +640 480 +480 640 +640 559 +640 360 +640 480 +640 426 +427 640 +640 427 +500 297 +427 640 +448 640 +640 427 +640 425 +640 480 +640 480 +384 640 +426 640 +640 504 +640 427 +481 640 +480 640 +640 456 +640 480 +640 479 +480 640 +612 612 +640 427 +640 418 +640 360 +427 640 +640 426 +640 427 +640 480 +500 333 +375 500 +500 334 +480 360 +480 640 +640 480 +640 480 +640 348 +375 500 +640 426 +426 640 +640 425 +640 426 +500 375 +500 375 +640 427 +640 480 +640 426 +427 640 +640 502 +480 640 +640 360 +640 313 +640 427 +640 478 +427 640 +461 640 +480 640 +640 407 +550 640 +640 480 +480 640 +640 481 +640 427 +612 612 +550 275 +640 430 +640 480 +480 640 +640 427 +640 480 +640 427 +640 480 +640 427 +640 384 +640 427 +640 480 +640 427 +640 449 +375 500 +640 359 +396 640 +640 428 +640 428 +400 600 +640 425 +427 640 +640 480 +640 480 +640 481 +428 640 +640 359 +612 612 +640 438 +640 358 +640 394 +640 480 +640 480 +640 399 +427 640 +500 333 +640 427 +640 427 +640 480 +640 561 +640 428 +640 361 +640 587 +640 480 +640 480 +640 480 +640 427 +400 500 +500 375 +500 309 +640 403 +640 480 +381 640 +640 427 +481 640 +640 480 +640 427 +640 311 +480 640 +640 424 +640 480 +612 612 +640 480 +640 480 +640 494 +640 574 +640 426 +469 640 +640 480 +640 480 +425 640 +640 481 +640 480 +640 359 +640 472 +640 476 +640 360 +375 500 +640 409 +422 640 +640 383 +640 359 +640 437 +640 480 +640 350 +640 480 +640 427 +640 401 +640 480 +500 377 +640 426 +612 612 +500 333 +640 425 +480 640 +640 369 +640 427 +333 500 +427 640 +427 640 +640 427 +416 640 +640 424 +640 427 +640 463 +427 640 +640 480 +640 480 +640 480 +640 480 +640 426 +640 480 +640 457 +500 335 +640 364 +640 428 +640 427 +640 424 +640 427 +640 425 +640 425 +640 609 +480 640 +640 426 +640 426 +640 480 +640 480 +640 480 +640 480 +500 375 +640 480 +640 391 +479 640 +427 640 +640 427 +461 640 +640 425 +500 375 +500 400 +640 427 +640 502 +480 640 +500 397 +640 480 +427 640 +500 334 +402 640 +640 427 +640 427 +640 480 +640 427 +640 425 +640 609 +640 480 +640 427 +640 567 +640 424 +640 427 +640 427 +640 428 +640 480 +640 480 +479 640 +640 480 +425 640 +640 553 +640 480 +640 480 +640 480 +640 425 +640 480 +640 448 +420 640 +480 640 +480 640 +480 640 +427 640 +640 502 +500 375 +360 640 +427 640 +500 491 +640 427 +640 426 +640 427 +640 428 +640 480 +500 375 +640 480 +480 640 +640 427 +640 427 +640 427 +428 640 +428 640 +640 480 +640 480 +640 480 +640 448 +640 390 +640 478 +427 640 +500 333 +450 600 +640 391 +600 399 +480 640 +640 361 +500 380 +640 494 +640 451 +640 427 +427 640 +640 480 +640 480 +640 360 +640 593 +500 375 +640 434 +480 640 +640 480 +427 640 +425 640 +640 640 +640 418 +640 399 +640 427 +612 612 +640 427 +640 480 +640 491 +427 640 +427 640 +640 480 +640 640 +640 519 +640 427 +375 500 +478 640 +336 500 +480 640 +500 421 +480 640 +640 421 +640 426 +500 335 +640 426 +640 480 +640 427 +640 480 +510 640 +640 427 +640 273 +640 428 +640 426 +640 480 +640 480 +463 640 +640 424 +425 640 +500 375 +427 640 +480 480 +640 424 +640 427 +640 480 +500 375 +640 427 +640 428 +640 446 +640 427 +500 375 +375 500 +500 375 +427 640 +640 640 +480 640 +640 428 +640 480 +640 427 +640 425 +334 500 +640 361 +612 612 +640 427 +341 500 +612 612 +640 428 +640 360 +640 360 +640 480 +640 370 +640 475 +640 479 +640 427 +456 640 +640 427 +428 640 +640 480 +640 492 +640 558 +640 480 +427 640 +640 496 +480 640 +500 375 +640 425 +480 640 +640 426 +640 464 +640 480 +640 480 +500 328 +640 640 +640 640 +640 429 +640 426 +640 427 +640 426 +640 410 +640 457 +640 426 +480 640 +640 480 +640 480 +640 480 +640 480 +640 427 +424 640 +640 428 +500 375 +428 640 +337 500 +640 426 +334 500 +640 480 +640 289 +640 425 +500 375 +427 640 +640 480 +360 640 +333 500 +640 480 +640 574 +640 427 +640 480 +640 427 +426 640 +640 427 +640 426 +640 480 +640 427 +375 500 +500 375 +640 480 +640 335 +640 444 +640 212 +640 480 +546 640 +640 480 +640 359 +640 426 +500 375 +640 426 +640 480 +500 400 +640 480 +640 480 +425 640 +478 640 +480 422 +425 640 +481 640 +400 600 +640 480 +640 480 +640 480 +480 640 +612 612 +462 640 +439 640 +480 640 +612 612 +426 640 +500 394 +640 428 +640 444 +640 427 +640 427 +640 428 +640 380 +640 480 +640 480 +640 438 +612 612 +640 427 +444 500 +640 360 +640 423 +640 640 +427 640 +640 480 +640 480 +640 480 +480 640 +640 426 +640 480 +640 426 +640 427 +640 456 +640 426 +375 500 +640 438 +640 459 +640 366 +640 480 +640 480 +640 480 +428 640 +640 480 +640 345 +640 429 +480 640 +480 640 +500 332 +640 425 +418 640 +640 233 +640 480 +375 500 +640 480 +427 640 +640 428 +640 480 +424 640 +332 500 +640 443 +640 480 +640 427 +640 463 +600 400 +640 425 +640 427 +640 480 +640 480 +640 428 +500 375 +640 480 +640 459 +640 427 +640 480 +640 480 +480 640 +427 640 +640 381 +426 640 +427 640 +500 400 +640 425 +480 640 +424 640 +640 427 +640 480 +640 480 +612 612 +640 427 +640 359 +333 500 +426 640 +640 427 +640 480 +640 480 +640 480 +640 426 +640 480 +426 640 +500 375 +640 427 +500 318 +500 375 +640 481 +640 360 +640 427 +426 640 +500 375 +640 427 +640 480 +500 334 +640 480 +640 427 +480 640 +640 427 +640 429 +640 426 +640 426 +640 373 +640 426 +640 426 +640 457 +640 512 +640 480 +478 640 +640 480 +640 383 +426 640 +640 481 +640 427 +500 375 +640 426 +640 480 +425 640 +640 428 +478 640 +427 640 +640 287 +640 426 +640 480 +640 427 +419 640 +640 640 +640 427 +640 480 +640 480 +500 333 +640 426 +480 640 +600 596 +640 428 +640 475 +640 360 +640 480 +640 427 +640 480 +640 478 +640 415 +640 480 +480 640 +640 457 +500 375 +429 640 +427 640 +640 619 +640 427 +640 225 +640 426 +426 640 +640 534 +640 427 +640 480 +640 444 +640 480 +640 480 +640 478 +640 313 +640 426 +640 426 +640 410 +640 424 +640 480 +480 640 +500 333 +640 480 +640 384 +500 341 +640 480 +500 500 +640 427 +640 480 +500 400 +480 640 +640 429 +427 640 +500 281 +640 480 +640 439 +640 480 +640 428 +640 480 +640 425 +500 375 +640 416 +640 480 +640 426 +640 480 +640 512 +640 366 +612 612 +344 500 +640 320 +640 533 +500 375 +640 480 +640 480 +500 334 +480 640 +640 427 +500 376 +640 480 +480 640 +640 424 +500 500 +480 640 +480 640 +640 401 +640 480 +500 499 +480 640 +640 480 +640 427 +640 480 +400 500 +640 424 +640 424 +640 480 +427 640 +640 427 +640 425 +500 375 +640 428 +640 414 +640 426 +640 426 +640 428 +427 640 +640 480 +612 612 +640 480 +640 480 +640 457 +500 335 +480 640 +640 427 +500 375 +480 640 +640 427 +640 480 +640 480 +483 640 +480 640 +640 427 +640 455 +640 480 +480 320 +640 480 +434 640 +640 425 +436 640 +396 640 +500 375 +640 478 +640 426 +640 480 +640 480 +640 427 +427 640 +640 427 +640 480 +640 426 +500 375 +500 500 +640 412 +640 342 +480 640 +640 426 +333 500 +640 458 +640 480 +500 500 +640 360 +640 480 +640 640 +512 640 +612 612 +640 427 +640 427 +636 640 +612 612 +640 480 +640 480 +640 480 +640 389 +640 542 +640 480 +640 430 +640 425 +500 333 +640 640 +640 427 +425 640 +427 640 +640 480 +333 500 +640 426 +640 426 +640 512 +640 480 +360 640 +640 427 +333 357 +500 375 +478 640 +640 478 +640 427 +640 428 +640 427 +640 413 +457 640 +612 612 +480 640 +640 483 +640 480 +640 480 +640 360 +480 640 +427 640 +640 480 +640 511 +640 480 +640 480 +300 400 +640 360 +375 500 +640 424 +640 480 +640 480 +640 574 +427 640 +640 478 +640 480 +534 640 +480 640 +640 480 +640 425 +372 500 +640 480 +640 425 +640 425 +640 384 +640 480 +497 500 +640 426 +427 640 +640 429 +640 480 +640 427 +640 428 +640 480 +484 640 +640 449 +459 640 +640 480 +640 601 +612 612 +640 480 +335 500 +427 640 +640 411 +500 332 +640 360 +480 640 +640 427 +426 640 +447 500 +640 424 +640 427 +640 346 +640 480 +640 360 +640 480 +428 640 +500 299 +640 427 +640 457 +640 427 +478 500 +427 640 +640 427 +640 449 +640 466 +640 480 +427 640 +640 480 +640 480 +640 480 +640 558 +640 480 +500 334 +640 444 +640 480 +361 640 +480 640 +640 473 +600 600 +640 496 +500 357 +480 640 +640 480 +500 330 +375 500 +640 427 +500 375 +541 640 +480 640 +640 480 +640 416 +640 480 +640 425 +640 426 +500 376 +640 427 +427 640 +478 640 +640 427 +425 640 +640 427 +640 425 +640 426 +640 360 +425 640 +375 500 +640 480 +640 427 +427 640 +640 443 +322 365 +638 512 +640 424 +640 478 +639 640 +640 480 +500 333 +640 427 +640 433 +640 502 +640 614 +640 480 +640 480 +480 640 +640 480 +640 480 +640 480 +375 500 +640 426 +640 299 +333 500 +640 427 +500 333 +640 480 +427 640 +431 640 +500 333 +640 480 +640 480 +640 434 +640 484 +640 458 +640 296 +640 427 +427 640 +640 480 +336 500 +472 640 +500 332 +640 427 +500 375 +640 480 +480 640 +480 640 +500 386 +612 612 +640 213 +640 426 +334 500 +640 471 +640 360 +640 586 +640 427 +640 424 +640 413 +640 427 +640 427 +612 612 +640 480 +640 427 +331 500 +640 428 +500 336 +500 375 +640 560 +640 480 +612 612 +640 480 +640 427 +500 375 +427 640 +640 480 +640 480 +640 366 +640 425 +640 427 +640 480 +426 640 +640 480 +640 640 +640 480 +640 425 +640 480 +500 333 +640 427 +640 480 +640 478 +478 640 +640 428 +640 480 +500 375 +640 501 +500 375 +427 640 +640 481 +640 426 +640 480 +426 640 +480 640 +435 640 +427 640 +640 427 +640 427 +640 480 +240 320 +640 428 +640 640 +640 509 +640 480 +640 480 +500 394 +375 500 +428 640 +640 480 +640 426 +640 480 +500 333 +428 640 +375 500 +431 640 +640 480 +640 427 +590 640 +500 465 +466 640 +600 600 +433 640 +500 332 +434 640 +640 640 +640 480 +640 425 +480 640 +480 640 +640 480 +640 480 +640 480 +640 301 +640 480 +640 478 +640 360 +640 425 +500 376 +640 427 +640 432 +640 427 +460 390 +500 375 +640 426 +480 640 +640 426 +640 426 +640 427 +426 640 +500 375 +640 426 +640 480 +640 427 +640 263 +480 640 +640 480 +640 425 +500 333 +640 480 +640 427 +640 427 +480 640 +640 480 +640 449 +500 327 +640 480 +500 350 +640 480 +640 320 +480 640 +400 500 +612 612 +425 640 +372 500 +375 500 +500 334 +640 427 +427 640 +640 480 +480 640 +640 427 +500 375 +478 640 +465 500 +640 428 +336 500 +480 640 +410 640 +416 500 +640 453 +500 375 +640 480 +500 375 +360 640 +640 401 +640 640 +640 480 +640 427 +640 480 +640 426 +332 500 +640 361 +640 480 +427 640 +640 426 +640 505 +640 588 +640 427 +640 409 +500 333 +500 375 +500 376 +640 415 +640 480 +640 480 +640 426 +640 480 +640 427 +640 399 +600 366 +640 360 +640 457 +640 480 +640 427 +640 427 +640 428 +480 640 +640 521 +500 333 +640 480 +500 325 +581 640 +640 480 +640 426 +500 333 +480 640 +640 428 +640 426 +427 640 +640 427 +640 427 +459 640 +375 500 +480 640 +640 427 +640 427 +640 451 +612 612 +640 480 +640 427 +427 640 +612 612 +640 427 +429 640 +640 480 +480 640 +640 480 +640 428 +480 640 +500 295 +640 424 +640 428 +500 375 +480 640 +428 640 +480 640 +640 427 +375 500 +500 333 +612 612 +640 480 +640 463 +500 333 +640 427 +462 640 +640 480 +640 480 +640 433 +640 618 +640 480 +425 640 +500 375 +640 214 +640 480 +640 480 +640 480 +640 480 +640 480 +500 356 +375 500 +640 480 +640 427 +480 353 +640 640 +500 375 +640 480 +640 424 +640 427 +640 426 +640 426 +640 640 +640 427 +640 427 +500 375 +640 434 +640 427 +640 427 +500 375 +500 333 +640 425 +420 640 +427 640 +640 428 +640 480 +640 480 +640 360 +374 500 +640 428 +375 500 +640 408 +500 375 +433 640 +612 612 +640 480 +640 480 +426 640 +427 640 +640 487 +480 640 +423 640 +640 480 +640 427 +640 480 +335 640 +640 426 +640 440 +640 480 +427 640 +640 480 +427 640 +640 480 +640 427 +500 375 +427 640 +640 427 +640 540 +640 426 +640 427 +500 377 +427 640 +640 480 +640 425 +500 332 +640 571 +640 428 +480 640 +640 428 +478 640 +640 569 +640 480 +428 640 +640 424 +640 480 +640 427 +640 514 +640 485 +640 409 +427 640 +640 427 +640 427 +429 640 +389 640 +640 480 +640 427 +359 640 +640 425 +640 426 +640 427 +640 373 +640 426 +640 427 +640 427 +486 640 +640 480 +427 640 +639 640 +500 375 +500 373 +640 480 +426 640 +640 366 +640 338 +333 500 +500 338 +427 640 +640 479 +500 375 +640 480 +640 519 +640 427 +320 240 +640 427 +612 612 +640 341 +428 640 +480 640 +640 466 +640 473 +640 313 +480 640 +640 640 +640 476 +640 480 +640 427 +640 480 +375 500 +427 640 +640 426 +640 480 +640 480 +444 640 +426 640 +427 640 +380 640 +640 480 +640 480 +640 339 +640 427 +640 573 +640 480 +480 640 +640 427 +640 480 +640 428 +640 426 +500 497 +640 428 +640 475 +640 361 +640 426 +256 217 +640 480 +640 480 +640 480 +427 640 +640 480 +500 375 +640 424 +500 341 +640 480 +453 640 +640 444 +500 400 +480 640 +500 333 +480 640 +640 427 +640 478 +640 424 +640 424 +640 427 +500 332 +427 640 +500 375 +500 334 +361 500 +640 430 +640 427 +500 375 +640 479 +428 640 +640 479 +427 640 +428 640 +640 425 +640 480 +640 424 +514 640 +480 640 +640 428 +640 480 +640 479 +640 426 +640 427 +640 424 +500 375 +360 640 +640 479 +427 640 +640 490 +500 375 +480 640 +500 333 +640 423 +640 426 +480 640 +640 480 +640 415 +640 431 +480 640 +640 423 +640 480 +428 640 +500 375 +640 396 +640 427 +640 427 +500 375 +640 480 +640 427 +640 499 +480 640 +480 640 +640 427 +640 470 +640 425 +500 333 +500 335 +640 410 +160 120 +640 428 +478 640 +640 436 +612 612 +640 480 +500 375 +640 425 +427 640 +400 453 +437 640 +480 640 +612 612 +500 281 +640 480 +425 640 +480 640 +640 344 +640 480 +640 428 +479 640 +640 428 +480 640 +500 375 +640 428 +640 427 +640 426 +640 480 +500 438 +427 640 +640 480 +640 480 +480 640 +640 362 +640 427 +640 480 +320 500 +640 393 +500 375 +453 640 +427 640 +640 503 +640 429 +640 425 +424 640 +426 640 +640 480 +640 480 +640 480 +640 426 +640 480 +426 640 +640 290 +640 480 +480 360 +640 480 +517 640 +480 640 +640 480 +480 640 +500 335 +450 338 +427 640 +640 480 +640 480 +640 480 +640 426 +640 480 +640 600 +431 640 +640 480 +428 640 +435 640 +640 427 +640 640 +640 425 +640 480 +640 426 +640 480 +640 426 +500 375 +640 480 +500 471 +640 480 +640 426 +640 426 +480 640 +640 431 +640 480 +640 429 +425 640 +640 342 +640 427 +640 480 +612 612 +640 428 +500 333 +252 252 +459 640 +640 427 +640 480 +389 640 +640 480 +640 427 +375 500 +640 425 +640 360 +489 640 +640 447 +500 334 +640 424 +480 640 +500 375 +640 425 +640 480 +427 640 +640 427 +640 480 +360 356 +500 375 +640 480 +640 427 +457 640 +500 375 +640 480 +479 640 +480 640 +640 427 +640 427 +640 478 +640 427 +640 480 +640 360 +640 480 +640 324 +640 427 +480 640 +640 427 +640 360 +640 429 +640 480 +331 500 +427 640 +640 458 +640 463 +640 427 +427 640 +640 480 +640 480 +640 427 +640 480 +442 640 +640 480 +640 426 +426 640 +640 429 +429 640 +640 426 +425 640 +640 480 +640 427 +640 440 +424 640 +640 426 +500 327 +640 480 +640 426 +640 480 +640 427 +480 640 +640 426 +640 480 +640 514 +500 384 +624 640 +457 640 +500 375 +640 486 +640 427 +640 480 +640 433 +426 640 +640 480 +640 411 +500 375 +640 360 +427 640 +640 427 +480 640 +640 288 +360 640 +640 427 +480 272 +640 480 +640 428 +640 480 +640 448 +640 640 +640 426 +640 427 +384 512 +640 427 +640 480 +640 426 +480 640 +480 640 +500 400 +500 335 +640 426 +640 480 +640 453 +480 640 +320 240 +640 480 +640 425 +640 480 +640 428 +375 500 +640 427 +640 458 +640 427 +640 320 +500 375 +500 407 +640 427 +389 640 +500 375 +640 483 +640 630 +480 640 +480 640 +640 480 +433 640 +480 640 +640 428 +640 412 +500 313 +640 427 +612 612 +480 640 +640 480 +480 640 +640 426 +640 426 +500 344 +640 361 +500 333 +640 480 +640 357 +640 427 +640 426 +640 429 +640 428 +640 426 +480 640 +640 263 +640 480 +640 480 +640 480 +640 486 +316 640 +480 640 +640 427 +640 480 +612 612 +640 523 +427 640 +480 640 +416 500 +640 428 +640 427 +576 576 +640 427 +640 480 +640 425 +640 427 +640 529 +640 428 +640 427 +500 332 +640 636 +640 480 +640 427 +640 426 +640 480 +640 480 +640 480 +640 480 +640 428 +640 427 +640 346 +640 480 +640 496 +640 480 +640 480 +480 640 +500 375 +640 506 +640 480 +426 640 +640 362 +480 640 +550 375 +640 428 +480 640 +640 428 +640 480 +640 428 +612 612 +375 500 +640 480 +640 429 +640 640 +640 457 +640 480 +640 360 +640 481 +640 458 +640 416 +480 640 +640 480 +640 400 +640 427 +640 453 +640 427 +640 359 +612 612 +480 640 +640 480 +640 427 +640 480 +640 428 +640 426 +480 640 +640 425 +640 428 +640 480 +640 480 +640 480 +640 480 +640 427 +640 480 +640 393 +640 426 +640 480 +500 495 +640 428 +640 426 +640 426 +480 640 +640 480 +480 640 +434 640 +578 433 +480 640 +640 427 +640 480 +500 433 +612 612 +640 427 +427 640 +428 640 +640 424 +480 640 +427 640 +478 640 +640 376 +332 500 +480 640 +640 389 +640 427 +640 427 +612 612 +640 480 +428 640 +640 478 +448 640 +427 640 +640 444 +500 375 +500 333 +500 375 +640 425 +480 640 +640 426 +640 427 +640 480 +640 480 +640 480 +500 332 +427 640 +640 480 +640 480 +640 480 +640 425 +640 480 +640 427 +640 480 +500 375 +640 426 +640 427 +640 427 +500 375 +640 428 +640 426 +640 428 +640 480 +640 426 +640 427 +640 360 +640 480 +640 479 +500 334 +334 500 +480 640 +640 464 +640 426 +500 375 +640 427 +500 375 +640 480 +480 640 +640 408 +640 408 +640 427 +640 424 +640 427 +640 427 +640 427 +640 425 +500 283 +480 640 +640 426 +518 640 +640 480 +640 559 +640 428 +640 480 +640 480 +640 480 +640 427 +640 426 +427 640 +333 500 +640 427 +640 480 +500 375 +640 480 +427 640 +640 458 +427 640 +640 480 +640 480 +480 640 +640 427 +640 427 +640 427 +640 480 +480 360 +640 427 +427 640 +640 428 +640 427 +375 500 +427 640 +640 427 +480 640 +424 640 +500 332 +500 375 +350 500 +640 427 +640 454 +480 640 +640 425 +640 533 +640 425 +500 375 +640 426 +640 503 +379 640 +640 377 +500 333 +480 640 +640 477 +480 640 +640 480 +640 480 +480 640 +640 426 +640 549 +640 480 +640 427 +500 375 +640 426 +640 361 +640 419 +428 640 +640 418 +612 612 +427 640 +640 427 +640 419 +500 236 +640 480 +640 480 +640 640 +640 425 +478 640 +500 452 +640 426 +640 426 +640 363 +640 360 +640 438 +478 640 +640 355 +640 427 +640 427 +500 375 +640 427 +640 480 +480 640 +640 457 +494 373 +640 511 +640 480 +500 333 +640 480 +500 375 +640 427 +383 640 +500 333 +640 383 +640 360 +640 428 +640 427 +640 427 +640 426 +612 612 +640 428 +640 426 +500 335 +375 500 +640 419 +415 640 +263 350 +640 480 +640 426 +375 500 +640 427 +640 427 +640 480 +500 375 +640 480 +500 333 +640 480 +640 480 +426 640 +640 480 +640 480 +375 500 +640 359 +640 427 +640 428 +640 480 +500 497 +427 640 +640 512 +427 500 +441 331 +640 458 +640 360 +640 425 +602 640 +640 425 +640 480 +640 427 +640 425 +480 640 +337 500 +640 480 +640 480 +640 459 +640 426 +640 480 +640 480 +640 640 +600 600 +480 640 +333 500 +640 426 +640 450 +333 500 +640 426 +640 427 +640 480 +640 480 +640 406 +480 640 +640 427 +640 418 +500 333 +640 427 +425 640 +640 480 +500 334 +640 480 +640 480 +640 480 +640 480 +640 629 +500 375 +427 640 +640 426 +640 480 +640 481 +640 396 +640 429 +640 483 +427 640 +640 427 +640 427 +640 457 +640 427 +612 612 +640 480 +640 480 +640 480 +640 480 +640 480 +474 640 +446 500 +500 375 +640 480 +640 465 +640 478 +640 448 +640 427 +500 375 +490 326 +640 427 +426 640 +640 428 +640 400 +640 345 +640 425 +640 480 +640 427 +640 480 +640 468 +500 375 +429 640 +640 427 +640 425 +640 584 +424 640 +640 403 +640 425 +640 426 +640 427 +640 480 +640 559 +640 221 +640 480 +640 426 +640 480 +612 612 +427 640 +640 480 +500 298 +426 640 +480 360 +480 640 +640 427 +640 480 +640 426 +640 361 +640 480 +640 366 +640 480 +500 375 +500 375 +478 640 +640 427 +640 428 +480 640 +640 428 +640 427 +640 426 +640 480 +640 425 +640 480 +640 480 +500 375 +640 480 +640 639 +640 559 +500 331 +394 640 +426 640 +640 480 +640 480 +640 480 +640 427 +428 640 +640 427 +640 393 +640 426 +640 424 +469 279 +427 640 +640 335 +640 430 +428 640 +500 640 +426 640 +398 640 +427 640 +640 427 +640 427 +640 427 +457 640 +425 640 +640 434 +500 411 +500 375 +640 480 +640 476 +640 480 +640 575 +640 427 +640 480 +425 640 +640 395 +640 451 +640 513 +640 480 +640 427 +481 640 +480 640 +640 427 +640 480 +480 640 +640 480 +640 427 +640 424 +640 480 +315 482 +640 426 +640 426 +640 480 +640 480 +640 480 +640 426 +453 640 +383 640 +600 450 +640 463 +640 480 +640 474 +640 480 +640 478 +500 375 +640 427 +612 612 +612 612 +640 383 +640 640 +640 480 +500 342 +500 333 +640 428 +640 480 +427 640 +640 427 +640 448 +434 640 +480 640 +640 427 +640 480 +640 480 +500 333 +640 587 +640 424 +448 640 +640 428 +640 406 +640 458 +600 400 +640 426 +500 375 +640 426 +425 640 +640 391 +500 375 +432 288 +334 500 +640 480 +500 380 +640 480 +500 333 +640 480 +375 500 +640 427 +640 429 +427 640 +500 396 +640 480 +640 480 +500 334 +640 339 +480 640 +640 265 +640 480 +640 480 +640 480 +500 375 +640 480 +479 640 +640 598 +640 427 +640 383 +494 640 +640 427 +500 333 +640 360 +427 640 +640 480 +640 481 +333 500 +480 640 +500 400 +640 372 +480 640 +480 640 +640 512 +640 480 +632 640 +640 480 +453 640 +640 480 +640 480 +361 640 +612 612 +640 427 +500 339 +640 480 +500 376 +500 375 +640 480 +640 363 +640 566 +640 425 +640 480 +500 400 +640 433 +640 427 +480 640 +640 427 +640 427 +640 427 +640 427 +640 353 +471 640 +358 640 +640 427 +640 480 +480 640 +640 480 +640 480 +640 427 +640 480 +640 480 +640 426 +640 480 +640 424 +612 612 +480 640 +640 468 +640 467 +513 640 +640 483 +640 428 +612 612 +427 640 +612 612 +500 333 +500 332 +640 480 +640 427 +444 640 +640 428 +640 487 +481 640 +426 319 +640 424 +333 500 +640 445 +640 427 +640 427 +640 640 +640 478 +500 333 +640 427 +426 640 +640 427 +478 640 +640 480 +518 640 +640 360 +640 480 +640 427 +427 640 +334 500 +640 426 +640 399 +480 640 +375 500 +640 523 +375 500 +338 500 +640 640 +480 640 +640 480 +640 427 +458 640 +640 328 +480 640 +480 640 +640 513 +640 427 +640 405 +640 480 +640 480 +640 426 +640 361 +640 424 +640 443 +640 480 +640 442 +640 359 +640 480 +640 480 +640 480 +640 427 +640 480 +640 437 +427 640 +640 427 +640 480 +640 480 +640 480 +640 480 +640 426 +640 480 +640 425 +480 640 +640 480 +640 426 +640 425 +480 640 +640 426 +640 362 +480 640 +500 330 +640 433 +640 480 +480 640 +640 590 +640 254 +640 426 +640 427 +640 433 +640 429 +640 480 +460 345 +480 640 +640 427 +640 426 +640 480 +500 333 +427 640 +500 332 +480 640 +640 480 +640 640 +500 375 +640 425 +424 640 +500 333 +273 448 +640 631 +451 640 +417 640 +640 427 +640 428 +500 375 +640 459 +479 640 +640 428 +640 396 +500 375 +640 427 +640 427 +640 359 +640 424 +640 427 +640 427 +640 480 +640 228 +640 424 +640 427 +500 333 +500 375 +640 480 +613 640 +600 450 +640 480 +478 640 +640 360 +375 500 +322 471 +640 640 +500 375 +640 428 +632 640 +480 640 +500 498 +453 604 +640 480 +640 359 +500 375 +640 482 +640 478 +640 494 +640 427 +640 480 +427 640 +640 480 +525 640 +480 640 +640 480 +640 429 +640 425 +640 424 +640 480 +640 426 +500 333 +330 500 +640 425 +640 516 +640 427 +500 375 +605 640 +640 427 +640 427 +640 480 +612 612 +375 500 +640 480 +640 427 +640 563 +425 640 +640 427 +640 479 +640 480 +480 640 +640 478 +640 589 +640 427 +640 427 +482 640 +411 640 +640 238 +640 427 +640 427 +427 640 +640 427 +333 500 +640 427 +480 640 +500 375 +640 266 +640 480 +640 549 +421 500 +426 640 +375 500 +333 500 +640 340 +640 443 +640 631 +408 640 +640 552 +640 360 +427 640 +640 480 +480 640 +500 400 +640 254 +489 640 +500 333 +480 640 +640 383 +640 513 +640 428 +640 480 +640 426 +640 480 +640 483 +612 612 +640 389 +640 374 +640 480 +500 375 +640 360 +640 427 +640 480 +640 334 +480 640 +640 383 +418 640 +500 376 +640 623 +612 612 +640 426 +500 375 +423 640 +640 427 +640 480 +640 480 +640 480 +480 640 +640 426 +357 340 +427 640 +640 436 +640 426 +640 427 +469 640 +500 375 +640 453 +640 480 +500 375 +500 375 +375 500 +640 480 +640 512 +500 375 +359 640 +640 480 +320 265 +640 480 +640 480 +640 427 +480 640 +640 432 +640 480 +500 375 +640 430 +500 375 +640 444 +640 427 +640 425 +640 360 +511 640 +640 427 +480 640 +424 640 +512 640 +640 426 +640 427 +640 427 +640 640 +640 360 +640 371 +640 427 +640 480 +640 480 +426 640 +640 471 +640 426 +554 640 +640 385 +640 424 +478 640 +640 480 +500 375 +640 428 +640 478 +640 427 +500 333 +425 640 +640 480 +640 348 +640 473 +640 480 +477 640 +480 640 +640 271 +640 341 +640 456 +640 427 +427 640 +640 640 +640 429 +480 640 +640 427 +640 478 +368 500 +640 480 +640 426 +640 480 +640 478 +640 481 +500 375 +640 427 +640 480 +500 333 +640 399 +640 426 +640 478 +640 480 +375 500 +640 425 +640 454 +640 421 +640 480 +640 427 +640 640 +438 640 +435 640 +640 480 +640 320 +640 506 +640 480 +640 480 +640 640 +640 426 +383 640 +438 640 +612 612 +513 640 +640 424 +640 425 +640 359 +480 640 +640 427 +640 480 +640 480 +640 480 +640 480 +640 480 +480 640 +640 427 +640 427 +500 334 +640 480 +480 640 +640 451 +640 480 +640 480 +465 640 +640 320 +640 429 +640 456 +640 425 +640 426 +640 446 +500 375 +458 380 +640 355 +640 480 +640 480 +640 426 +276 640 +480 640 +640 480 +640 508 +640 386 +640 482 +413 500 +640 453 +640 640 +640 479 +640 480 +640 427 +640 300 +428 640 +640 428 +480 640 +333 500 +640 427 +640 409 +640 428 +480 640 +480 640 +640 422 +412 640 +640 441 +640 425 +427 640 +640 480 +480 640 +640 426 +480 640 +640 480 +500 341 +640 427 +640 360 +640 360 +427 640 +640 428 +640 428 +640 480 +640 425 +640 480 +640 480 +640 427 +400 300 +640 467 +500 333 +504 378 +640 457 +480 640 +640 373 +500 375 +426 640 +640 480 +640 428 +500 333 +640 427 +530 640 +640 480 +640 480 +640 427 +640 480 +640 427 +640 427 +640 480 +480 640 +383 640 +456 640 +480 640 +640 425 +640 426 +640 424 +640 480 +640 425 +640 480 +640 427 +480 640 +640 480 +640 360 +640 480 +480 640 +640 640 +300 450 +640 427 +640 425 +640 400 +640 427 +445 640 +640 480 +640 427 +640 480 +428 640 +640 296 +500 312 +640 400 +640 420 +640 381 +640 480 +375 500 +640 426 +640 426 +640 457 +500 334 +640 480 +640 480 +428 640 +640 466 +480 640 +480 640 +480 640 +640 486 +612 612 +640 480 +480 640 +640 427 +640 427 +640 425 +640 467 +640 426 +480 640 +480 640 +640 480 +640 480 +640 281 +612 612 +333 500 +500 333 +640 427 +640 480 +640 512 +640 480 +480 640 +640 480 +640 427 +640 427 +640 427 +427 640 +614 640 +640 480 +480 640 +640 427 +480 640 +640 480 +254 336 +640 360 +640 455 +640 424 +640 480 +640 480 +640 426 +375 500 +480 640 +427 640 +500 375 +640 424 +640 473 +640 457 +640 359 +500 334 +391 640 +640 428 +480 640 +640 426 +640 427 +640 347 +640 427 +640 436 +640 480 +640 481 +472 640 +500 375 +640 427 +640 424 +336 640 +640 480 +640 353 +640 411 +640 454 +600 450 +640 361 +640 480 +640 640 +640 426 +480 640 +640 480 +500 417 +640 427 +428 640 +640 480 +640 427 +640 427 +480 640 +375 500 +480 640 +640 360 +640 633 +640 427 +640 480 +640 283 +640 434 +360 640 +640 458 +640 480 +640 480 +480 640 +640 480 +640 480 +640 586 +640 640 +640 425 +375 500 +640 427 +640 436 +640 425 +640 360 +640 406 +640 427 +640 492 +640 427 +640 426 +640 424 +500 333 +640 426 +480 640 +640 427 +640 426 +640 431 +427 640 +375 500 +640 360 +640 427 +480 640 +425 640 +640 444 +640 427 +427 640 +591 640 +640 480 +640 427 +640 416 +640 480 +640 427 +640 426 +640 427 +640 440 +640 477 +640 480 +640 359 +640 311 +640 427 +640 326 +640 427 +640 480 +640 310 +640 480 +362 640 +640 480 +470 640 +480 640 +640 449 +640 481 +484 640 +332 500 +569 640 +427 640 +375 500 +612 612 +640 424 +640 467 +485 500 +612 612 +640 480 +500 332 +427 640 +640 425 +640 426 +480 640 +640 480 +640 480 +478 640 +640 480 +640 427 +640 424 +640 428 +640 426 +640 426 +640 427 +640 428 +324 640 +640 449 +500 375 +500 375 +500 281 +506 640 +427 640 +640 480 +640 480 +640 480 +427 640 +612 612 +640 489 +640 480 +480 640 +640 427 +640 424 +500 375 +640 480 +640 480 +612 612 +640 480 +640 480 +426 640 +640 361 +640 427 +640 424 +427 640 +640 428 +640 438 +640 426 +640 480 +640 427 +640 378 +640 427 +640 573 +640 427 +640 480 +640 480 +640 429 +500 333 +640 480 +640 427 +640 428 +640 426 +640 480 +425 640 +640 428 +640 396 +375 500 +640 425 +640 426 +640 480 +640 480 +640 480 +375 500 +640 480 +640 427 +640 480 +500 375 +500 359 +428 640 +640 362 +640 425 +640 424 +427 640 +640 480 +640 480 +419 500 +370 640 +333 500 +640 427 +500 375 +612 612 +640 432 +640 415 +500 375 +480 640 +612 612 +640 480 +500 400 +640 427 +500 331 +500 375 +500 375 +640 480 +640 558 +640 480 +480 640 +640 480 +478 640 +480 640 +640 480 +640 427 +480 640 +640 480 +480 640 +333 426 +640 431 +500 375 +640 478 +480 640 +640 640 +640 480 +480 640 +640 418 +640 427 +640 480 +640 424 +640 444 +640 480 +526 640 +640 480 +640 480 +640 429 +640 429 +500 375 +424 640 +640 396 +640 318 +640 428 +428 640 +640 480 +433 640 +640 480 +640 427 +500 375 +640 386 +640 427 +640 427 +640 480 +640 480 +640 442 +500 332 +640 428 +360 640 +640 427 +612 612 +480 640 +640 424 +640 480 +425 640 +640 425 +640 480 +640 608 +640 428 +333 500 +427 640 +640 432 +640 480 +640 369 +640 602 +427 640 +640 427 +640 433 +640 426 +478 640 +500 333 +640 360 +640 427 +640 480 +640 351 +640 488 +640 480 +640 424 +640 427 +640 506 +453 604 +640 427 +358 500 +640 480 +500 333 +640 363 +640 640 +640 425 +480 640 +640 480 +640 480 +640 480 +640 428 +640 427 +640 433 +640 466 +640 480 +512 384 +640 411 +640 480 +483 500 +640 480 +640 427 +640 480 +640 480 +640 480 +640 483 +480 640 +640 457 +426 640 +640 480 +500 311 +640 480 +640 426 +500 333 +640 400 +480 640 +640 428 +640 427 +640 426 +640 426 +640 428 +500 333 +640 425 +640 480 +640 425 +480 640 +640 424 +500 375 +612 612 +640 480 +640 480 +427 640 +640 555 +482 640 +640 427 +640 480 +640 478 +640 427 +640 428 +640 519 +640 428 +500 333 +640 360 +640 483 +640 242 +640 480 +500 281 +500 375 +640 429 +500 375 +427 640 +640 424 +640 480 +640 427 +640 480 +640 427 +500 375 +480 640 +640 426 +640 425 +427 640 +640 480 +640 426 +500 409 +640 427 +640 425 +480 640 +500 436 +480 640 +478 640 +500 400 +640 480 +640 427 +640 428 +640 480 +640 425 +640 426 +500 375 +640 480 +640 485 +640 469 +640 426 +612 612 +640 483 +375 500 +640 426 +640 427 +500 375 +640 532 +640 429 +500 375 +640 640 +640 436 +640 427 +640 480 +375 500 +640 427 +640 426 +640 425 +426 640 +427 640 +640 428 +640 480 +640 427 +612 612 +640 479 +480 640 +640 480 +640 427 +480 640 +375 500 +375 500 +640 427 +424 640 +640 427 +640 570 +469 341 +640 480 +640 427 +480 640 +640 427 +640 427 +426 640 +640 427 +640 485 +640 453 +640 427 +427 640 +640 360 +640 480 +427 640 +640 480 +640 480 +640 429 +640 478 +640 480 +480 640 +500 337 +640 480 +640 493 +640 427 +640 424 +640 425 +640 425 +640 427 +480 640 +640 549 +639 640 +500 375 +640 480 +640 399 +640 424 +640 401 +640 429 +640 428 +640 360 +640 427 +521 640 +427 640 +640 342 +425 640 +640 427 +640 480 +640 480 +640 480 +500 375 +426 640 +500 358 +640 514 +640 480 +640 427 +640 640 +640 444 +480 640 +500 335 +640 408 +640 634 +640 427 +640 427 +640 480 +640 427 +640 426 +640 477 +375 500 +640 427 +463 640 +640 480 +418 640 +640 480 +640 480 +640 480 +640 480 +640 425 +427 640 +480 640 +640 433 +640 428 +498 640 +640 427 +640 480 +427 640 +352 500 +640 480 +424 640 +612 612 +640 433 +640 480 +640 480 +640 558 +640 425 +640 428 +640 360 +426 640 +500 286 +640 480 +640 359 +511 640 +640 516 +267 400 +475 500 +494 500 +640 264 +640 427 +640 428 +480 640 +480 640 +640 360 +480 640 +640 423 +640 480 +640 468 +500 325 +500 411 +500 375 +480 640 +640 427 +640 427 +427 640 +640 608 +640 359 +480 640 +640 480 +640 425 +640 426 +640 427 +640 423 +640 428 +640 480 +640 480 +375 500 +640 427 +640 425 +640 504 +640 427 +640 480 +640 354 +445 400 +640 409 +640 427 +400 300 +640 480 +640 427 +463 640 +640 461 +640 479 +640 425 +640 480 +640 429 +500 333 +640 428 +375 500 +612 612 +640 427 +436 640 +480 640 +500 375 +640 480 +640 526 +640 480 +448 500 +480 640 +640 422 +640 480 +640 640 +640 480 +426 640 +500 375 +480 640 +640 480 +640 424 +640 427 +640 457 +640 429 +640 427 +450 600 +425 640 +640 640 +640 229 +640 579 +640 425 +640 426 +640 480 +466 640 +640 427 +640 480 +640 424 +480 640 +640 427 +427 640 +480 319 +640 429 +480 640 +480 640 +333 500 +500 375 +534 640 +640 480 +640 427 +640 427 +640 425 +424 640 +480 640 +640 425 +640 480 +640 428 +480 640 +480 640 +640 426 +360 640 +500 375 +640 428 +640 426 +500 375 +640 480 +375 500 +375 500 +640 372 +640 480 +425 640 +640 480 +612 612 +640 640 +640 480 +500 375 +640 427 +640 506 +640 480 +640 328 +640 480 +640 401 +640 483 +640 428 +433 500 +640 371 +640 427 +640 480 +640 457 +425 640 +640 480 +481 640 +640 480 +640 480 +640 480 +640 424 +427 640 +640 618 +640 640 +500 239 +612 612 +640 421 +640 430 +640 428 +640 567 +500 375 +640 480 +612 612 +640 425 +640 426 +427 640 +640 480 +640 427 +640 348 +640 480 +512 640 +480 640 +480 640 +480 640 +640 427 +640 480 +640 480 +640 426 +427 640 +640 425 +640 512 +640 424 +640 480 +640 480 +640 480 +640 444 +425 640 +640 411 +427 640 +375 500 +640 404 +640 480 +640 480 +574 640 +500 375 +640 427 +640 480 +612 612 +500 375 +640 480 +640 457 +640 480 +640 428 +500 375 +640 480 +375 500 +640 427 +425 640 +640 368 +640 460 +640 480 +640 425 +486 640 +640 458 +426 640 +640 427 +600 400 +640 479 +500 375 +640 427 +640 480 +640 427 +640 480 +640 427 +500 375 +640 429 +612 612 +500 333 +640 480 +640 480 +400 500 +640 480 +480 640 +500 375 +180 240 +434 640 +427 640 +640 480 +640 429 +640 427 +256 640 +640 480 +640 428 +500 375 +640 395 +640 469 +500 375 +640 640 +640 428 +427 640 +640 480 +427 640 +640 427 +640 426 +426 640 +640 426 +640 480 +640 424 +640 443 +640 425 +375 500 +597 640 +640 427 +640 427 +480 640 +640 480 +480 640 +640 427 +640 480 +640 427 +640 325 +640 483 +640 480 +640 480 +640 440 +640 480 +433 500 +640 427 +640 480 +478 640 +640 426 +640 480 +640 480 +640 427 +640 424 +640 386 +640 427 +640 360 +480 640 +640 438 +500 332 +640 428 +640 480 +640 427 +640 394 +640 480 +640 237 +640 426 +612 612 +480 640 +640 427 +640 480 +410 640 +640 427 +640 480 +480 640 +500 333 +640 512 +640 480 +640 427 +480 640 +640 480 +427 640 +640 480 +480 640 +640 531 +334 500 +640 379 +480 640 +427 640 +480 640 +480 640 +640 480 +427 640 +640 384 +612 612 +640 426 +640 448 +500 337 +640 480 +640 480 +500 375 +640 480 +375 500 +640 384 +640 480 +480 640 +640 480 +640 480 +500 281 +640 519 +376 500 +640 480 +640 427 +480 640 +425 640 +640 480 +640 425 +640 426 +612 612 +640 480 +461 640 +640 425 +640 434 +640 424 +640 427 +480 640 +640 640 +640 494 +640 427 +447 640 +640 479 +640 480 +640 428 +640 426 +640 640 +480 360 +480 640 +640 360 +640 480 +426 640 +640 435 +640 480 +640 480 +640 383 +640 425 +640 480 +416 640 +640 424 +428 640 +640 481 +640 418 +500 364 +424 500 +640 360 +480 640 +640 426 +640 427 +640 422 +453 640 +428 640 +612 612 +640 480 +426 640 +600 600 +640 428 +640 480 +640 360 +640 425 +640 480 +428 640 +480 640 +360 640 +375 500 +427 640 +640 480 +640 480 +640 514 +640 480 +425 640 +640 376 +640 431 +640 427 +375 500 +640 480 +375 500 +640 480 +480 640 +427 640 +640 480 +332 500 +457 640 +640 544 +640 433 +640 513 +480 640 +640 480 +425 640 +640 480 +512 640 +500 332 +640 480 +640 425 +640 480 +640 426 +427 640 +596 446 +640 359 +640 427 +640 480 +640 480 +640 480 +480 640 +640 457 +640 480 +428 640 +640 640 +500 335 +333 500 +612 612 +640 427 +640 426 +640 480 +640 427 +500 333 +640 480 +480 640 +640 428 +480 640 +640 480 +426 640 +640 458 +375 500 +480 640 +640 427 +427 640 +425 640 +480 640 +500 376 +640 427 +500 370 +448 500 +458 640 +640 480 +640 426 +640 637 +640 480 +640 480 +512 640 +500 375 +640 427 +640 434 +500 332 +640 403 +640 480 +640 480 +640 427 +640 427 +640 426 +640 480 +427 640 +513 640 +640 424 +640 480 +640 426 +640 428 +640 480 +500 333 +640 480 +640 360 +640 480 +640 427 +640 343 +640 480 +500 377 +500 375 +425 640 +640 413 +454 640 +640 426 +375 500 +640 480 +480 640 +640 523 +640 428 +500 333 +640 427 +640 481 +640 420 +500 375 +480 640 +422 640 +640 427 +640 432 +640 265 +466 640 +608 640 +427 640 +480 640 +640 426 +640 427 +640 360 +640 427 +480 640 +640 480 +640 426 +640 427 +640 420 +640 427 +612 612 +375 500 +423 640 +414 500 +480 640 +480 640 +640 427 +640 427 +640 425 +640 429 +612 612 +457 640 +640 640 +600 640 +640 480 +426 640 +640 427 +500 332 +428 640 +640 463 +640 426 +640 480 +480 640 +640 480 +640 461 +640 441 +496 640 +640 508 +640 428 +427 640 +640 480 +640 480 +612 612 +640 480 +448 640 +500 333 +426 640 +640 480 +426 640 +480 640 +640 480 +500 335 +231 500 +432 640 +640 427 +480 640 +640 427 +480 640 +640 441 +640 480 +375 500 +640 427 +640 426 +640 480 +640 423 +427 640 +640 480 +640 425 +640 429 +559 640 +640 519 +478 640 +640 480 +480 640 +640 512 +640 480 +640 427 +640 404 +427 640 +640 480 +640 480 +640 427 +640 480 +500 375 +640 484 +480 640 +640 614 +480 640 +640 427 +425 640 +640 426 +640 426 +640 458 +640 480 +640 458 +640 426 +480 640 +640 480 +500 338 +640 480 +640 427 +640 428 +612 612 +480 640 +640 426 +375 500 +480 640 +640 427 +640 425 +516 640 +500 420 +640 424 +640 427 +640 633 +612 612 +479 640 +640 427 +640 424 +640 427 +480 640 +500 375 +480 640 +612 612 +640 482 +640 480 +543 640 +480 640 +640 427 +640 480 +640 480 +640 425 +640 501 +640 480 +640 454 +640 427 +640 425 +473 640 +640 425 +480 640 +612 612 +428 640 +640 506 +640 480 +640 579 +480 640 +640 425 +640 427 +640 458 +640 423 +640 478 +640 480 +640 426 +612 612 +640 517 +303 500 +427 640 +640 400 +426 640 +640 480 +500 375 +640 434 +640 428 +640 480 +640 427 +500 333 +640 480 +640 427 +480 640 +640 480 +478 640 +640 424 +612 612 +500 333 +640 480 +640 480 +640 483 +514 640 +426 640 +640 480 +640 480 +480 640 +640 360 +500 375 +640 480 +426 640 +640 428 +640 461 +640 483 +640 471 +640 428 +427 640 +640 480 +426 640 +480 640 +375 500 +401 640 +640 514 +500 333 +640 424 +640 480 +640 502 +640 480 +640 372 +640 477 +640 426 +640 426 +480 640 +640 427 +500 375 +480 640 +640 478 +640 480 +427 640 +640 427 +612 612 +640 426 +500 333 +480 640 +500 333 +425 640 +640 427 +480 640 +640 480 +437 640 +640 360 +640 416 +640 427 +500 308 +640 427 +640 480 +375 500 +640 480 +640 360 +426 640 +427 640 +640 426 +640 383 +425 640 +640 480 +640 427 +640 421 +640 480 +640 428 +640 478 +640 503 +640 458 +427 640 +500 375 +640 480 +640 480 +640 427 +640 495 +480 640 +467 607 +640 425 +428 640 +640 448 +480 640 +640 361 +640 480 +640 426 +500 375 +640 389 +640 480 +480 640 +640 451 +500 375 +480 640 +640 428 +640 480 +500 375 +640 478 +426 640 +640 480 +640 480 +640 526 +500 364 +640 427 +383 500 +640 480 +500 355 +500 375 +640 481 +500 400 +640 480 +612 612 +640 360 +640 480 +640 426 +479 640 +640 480 +612 612 +375 500 +640 486 +500 375 +640 498 +640 427 +500 375 +640 427 +480 640 +640 480 +640 428 +612 612 +640 427 +500 375 +640 475 +640 425 +640 523 +480 640 +427 640 +640 480 +640 480 +640 480 +640 427 +480 640 +640 506 +640 427 +640 480 +640 528 +640 480 +640 480 +426 640 +640 425 +640 426 +640 427 +640 278 +500 335 +500 281 +427 640 +375 500 +427 640 +640 438 +640 427 +480 640 +640 360 +640 480 +640 480 +640 389 +375 500 +640 427 +640 427 +423 640 +640 480 +612 612 +427 640 +388 640 +640 425 +480 640 +640 480 +425 640 +500 375 +427 640 +425 640 +640 480 +640 448 +640 480 +375 500 +640 480 +640 640 +427 640 +375 500 +478 640 +424 640 +480 640 +426 640 +478 640 +640 480 +334 500 +640 426 +640 426 +640 425 +480 640 +640 360 +640 480 +640 428 +640 480 +640 424 +640 424 +640 427 +640 439 +640 426 +500 375 +640 425 +640 480 +480 640 +640 426 +640 427 +500 333 +640 480 +640 300 +640 404 +510 340 +640 427 +640 478 +480 640 +640 426 +640 483 +640 424 +640 319 +640 321 +500 333 +640 408 +640 427 +640 434 +640 457 +640 427 +640 426 +375 500 +500 333 +640 427 +640 478 +640 480 +480 640 +640 426 +640 427 +640 413 +640 480 +640 433 +428 640 +640 476 +387 518 +640 364 +640 480 +640 474 +640 480 +500 293 +480 640 +640 426 +500 500 +640 457 +346 500 +640 480 +480 640 +480 640 +500 334 +480 640 +640 478 +640 480 +640 427 +640 480 +640 470 +640 441 +375 500 +418 500 +640 427 +480 640 +425 640 +432 432 +640 425 +500 361 +640 388 +375 500 +640 425 +640 426 +457 640 +499 500 +640 480 +427 640 +640 361 +640 428 +484 640 +640 425 +640 480 +640 476 +640 480 +640 480 +640 427 +375 500 +583 640 +640 480 +480 640 +375 500 +612 612 +480 640 +500 327 +480 640 +640 427 +612 612 +426 640 +514 640 +480 640 +640 427 +640 400 +640 427 +640 305 +640 480 +640 480 +640 427 +466 640 +640 480 +640 480 +640 427 +369 500 +640 480 +640 425 +640 481 +427 640 +640 479 +440 640 +478 640 +640 329 +428 640 +640 464 +640 427 +640 457 +640 508 +640 480 +640 391 +500 375 +640 478 +640 431 +375 500 +480 640 +640 594 +428 640 +640 446 +500 332 +480 640 +411 500 +640 427 +640 485 +640 480 +640 401 +640 425 +640 359 +640 640 +640 480 +640 427 +424 640 +640 480 +640 426 +640 480 +640 480 +500 375 +640 480 +640 428 +375 500 +425 640 +640 480 +640 485 +640 480 +425 640 +480 640 +640 428 +640 480 +640 434 +640 427 +640 480 +640 508 +640 480 +640 425 +640 427 +342 500 +640 426 +612 612 +428 640 +640 427 +500 375 +612 612 +640 427 +426 640 +375 500 +480 640 +640 463 +640 480 +281 500 +375 500 +500 375 +640 427 +375 500 +640 480 +640 427 +640 359 +640 425 +640 480 +480 640 +640 406 +640 426 +640 620 +640 480 +500 375 +640 427 +500 375 +480 640 +640 480 +640 362 +491 640 +480 640 +640 383 +640 480 +500 375 +640 426 +640 480 +640 480 +640 480 +640 426 +640 428 +640 480 +426 640 +427 640 +640 423 +640 427 +500 375 +640 476 +500 375 +640 480 +427 640 +640 480 +640 480 +612 612 +640 427 +640 426 +640 512 +333 500 +640 458 +640 478 +427 640 +640 427 +640 480 +640 480 +640 427 +640 382 +640 480 +500 313 +375 500 +640 480 +640 457 +640 428 +640 481 +427 640 +640 428 +640 363 +427 640 +640 425 +640 426 +425 640 +640 427 +640 425 +640 427 +640 480 +640 481 +423 640 +640 563 +640 427 +640 480 +612 612 +640 426 +640 480 +296 446 +500 333 +640 480 +640 425 +640 480 +640 480 +500 333 +618 640 +640 480 +640 427 +500 375 +500 333 +480 640 +423 640 +428 640 +426 640 +500 334 +640 480 +640 480 +640 424 +640 469 +640 439 +427 640 +640 427 +426 640 +640 480 +480 640 +640 480 +500 333 +640 426 +640 480 +500 281 +640 427 +640 481 +640 480 +640 427 +640 640 +640 427 +640 472 +640 480 +480 640 +640 480 +640 544 +640 489 +480 640 +500 429 +640 428 +500 333 +480 640 +640 326 +480 640 +500 375 +640 480 +640 413 +640 480 +640 480 +640 426 +640 426 +640 480 +640 480 +612 612 +640 426 +640 478 +640 480 +640 447 +426 640 +640 427 +480 342 +640 426 +500 335 +332 500 +435 640 +640 501 +640 427 +366 640 +640 328 +500 376 +500 333 +640 517 +640 360 +640 480 +640 427 +640 480 +640 426 +640 398 +640 426 +640 425 +640 640 +427 640 +640 427 +437 640 +640 431 +640 427 +640 490 +640 427 +640 428 +640 480 +640 480 +640 433 +500 375 +640 480 +640 480 +640 480 +640 427 +640 347 +640 480 +640 480 +640 379 +353 640 +640 360 +451 640 +640 400 +640 428 +375 500 +640 457 +612 612 +640 480 +427 640 +480 640 +640 480 +640 480 +640 428 +640 425 +480 640 +426 640 +640 427 +500 334 +640 281 +640 480 +400 500 +428 640 +640 427 +482 640 +640 428 +640 427 +640 480 +640 480 +640 434 +500 334 +500 333 +640 427 +427 640 +640 426 +640 385 +640 480 +480 640 +480 640 +640 604 +640 426 +640 454 +640 480 +640 480 +640 569 +640 427 +640 425 +640 480 +640 439 +640 480 +640 480 +480 640 +640 480 +640 480 +640 480 +500 364 +640 426 +640 480 +425 640 +640 640 +480 640 +480 640 +640 480 +474 640 +640 427 +640 396 +498 500 +640 480 +500 375 +440 500 +427 640 +640 480 +500 349 +428 640 +640 427 +640 427 +640 427 +640 461 +640 486 +640 480 +480 640 +640 473 +640 427 +640 425 +640 360 +640 428 +640 426 +640 478 +640 326 +640 399 +640 480 +640 400 +640 427 +640 312 +640 640 +633 640 +580 580 +640 500 +640 427 +640 480 +640 427 +640 480 +500 333 +640 498 +468 640 +375 500 +430 640 +640 480 +480 640 +640 425 +480 640 +383 640 +500 333 +640 426 +468 640 +640 480 +640 480 +500 375 +640 480 +413 640 +640 383 +640 480 +500 375 +500 333 +426 640 +640 486 +500 375 +427 640 +640 480 +640 324 +640 480 +375 500 +480 640 +375 500 +612 612 +500 375 +612 612 +640 541 +640 481 +427 640 +640 480 +640 480 +480 640 +640 480 +612 612 +427 640 +640 480 +640 427 +640 426 +529 640 +500 375 +640 416 +640 480 +567 640 +640 554 +640 478 +640 427 +359 640 +640 383 +640 512 +640 427 +500 332 +508 640 +640 424 +640 278 +375 500 +480 640 +640 481 +640 480 +459 640 +450 600 +640 480 +548 640 +640 640 +640 480 +425 640 +640 425 +640 427 +640 480 +640 426 +640 480 +640 399 +640 480 +640 427 +640 456 +640 480 +640 480 +640 480 +458 640 +640 428 +640 480 +500 375 +640 478 +640 480 +640 418 +640 480 +640 427 +640 589 +640 400 +480 640 +375 500 +500 332 +640 480 +640 423 +640 427 +640 480 +640 426 +640 480 +640 480 +428 640 +640 480 +640 480 +640 427 +640 426 +640 480 +500 375 +480 640 +640 480 +640 515 +426 640 +640 427 +612 612 +640 480 +500 357 +480 640 +640 480 +640 359 +427 640 +426 640 +640 427 +640 427 +640 480 +640 427 +500 375 +640 422 +480 640 +640 427 +480 640 +640 480 +350 500 +640 425 +640 480 +480 640 +640 480 +640 427 +640 427 +640 461 +640 426 +640 502 +612 612 +640 480 +640 480 +640 424 +500 375 +640 433 +640 480 +640 480 +640 480 +640 425 +480 640 +427 640 +640 423 +640 480 +640 427 +640 480 +640 427 +640 480 +640 324 +640 478 +480 640 +640 480 +640 480 +640 640 +640 427 +640 480 +640 480 +320 500 +640 424 +500 375 +480 640 +480 640 +640 480 +480 640 +640 480 +640 359 +480 640 +640 427 +427 640 +180 240 +500 333 +640 516 +500 348 +253 130 +375 500 +640 279 +640 427 +640 427 +640 480 +500 375 +427 640 +640 424 +640 426 +500 375 +375 500 +640 427 +640 423 +640 427 +427 640 +640 478 +640 480 +640 427 +500 334 +640 480 +640 480 +500 333 +450 338 +640 584 +627 640 +640 480 +480 640 +640 480 +640 481 +640 480 +426 640 +640 425 +640 553 +640 480 +612 612 +500 334 +500 375 +640 480 +640 434 +640 480 +640 428 +640 480 +444 640 +640 480 +640 480 +612 612 +500 375 +640 427 +426 640 +640 427 +387 640 +423 640 +640 360 +640 480 +640 480 +500 375 +640 480 +640 427 +640 480 +640 528 +640 479 +640 480 +563 640 +640 478 +640 480 +500 286 +500 415 +640 533 +640 544 +640 427 +480 640 +640 427 +640 426 +640 426 +500 500 +640 480 +640 480 +480 640 +640 426 +426 640 +500 397 +551 640 +640 427 +640 502 +640 401 +500 333 +640 427 +640 480 +354 640 +640 449 +500 333 +640 418 +408 640 +431 640 +640 480 +640 480 +612 612 +448 336 +640 480 +640 444 +400 600 +640 427 +640 480 +427 640 +612 612 +640 425 +640 427 +640 359 +640 512 +375 500 +426 640 +640 425 +640 426 +640 426 +640 417 +640 427 +640 480 +612 612 +640 489 +640 425 +500 336 +427 640 +640 480 +430 318 +640 480 +640 426 +429 640 +640 426 +427 640 +640 360 +640 480 +640 427 +640 427 +640 480 +640 480 +640 368 +640 427 +640 426 +640 480 +640 411 +640 482 +640 480 +640 477 +480 640 +640 480 +640 480 +640 480 +500 500 +443 640 +640 426 +640 425 +640 480 +640 480 +427 640 +640 480 +403 640 +533 640 +640 425 +640 632 +612 612 +500 332 +335 500 +640 480 +550 550 +640 480 +640 480 +500 375 +640 480 +375 500 +427 640 +640 424 +640 427 +640 425 +640 427 +640 458 +426 640 +640 478 +640 426 +640 359 +500 401 +640 360 +640 438 +640 425 +480 640 +480 640 +640 480 +640 429 +480 640 +480 640 +500 333 +480 640 +640 459 +640 427 +640 426 +500 333 +413 640 +530 530 +640 428 +640 480 +480 640 +640 480 +640 480 +640 449 +640 426 +586 640 +640 480 +359 640 +428 640 +500 335 +640 426 +640 640 +640 426 +640 426 +640 426 +640 480 +640 634 +640 427 +640 480 +640 480 +500 375 +500 333 +640 480 +426 640 +640 441 +640 501 +500 474 +640 480 +640 427 +640 427 +478 640 +424 640 +500 375 +640 426 +640 427 +640 480 +480 640 +462 640 +640 480 +500 333 +240 320 +590 397 +640 480 +640 400 +640 428 +640 480 +500 375 +640 427 +640 480 +640 396 +640 480 +480 640 +500 375 +640 480 +640 427 +333 500 +640 458 +453 640 +640 427 +640 427 +640 427 +480 640 +640 427 +500 375 +640 367 +427 640 +640 512 +640 426 +640 478 +640 480 +640 352 +410 640 +500 375 +640 425 +500 375 +424 640 +640 425 +480 640 +462 557 +640 480 +640 480 +640 427 +500 375 +640 470 +500 375 +375 500 +500 375 +427 640 +480 640 +480 640 +480 640 +640 360 +640 420 +640 427 +430 640 +383 640 +640 431 +332 500 +640 485 +500 333 +500 331 +375 500 +640 480 +640 426 +640 480 +640 640 +640 427 +427 640 +640 480 +640 480 +640 428 +480 640 +640 480 +640 427 +640 427 +480 640 +640 427 +640 480 +480 640 +640 480 +640 480 +478 640 +640 427 +640 480 +640 427 +427 640 +640 480 +480 640 +500 332 +640 480 +426 640 +640 480 +640 441 +640 427 +640 480 +478 640 +640 480 +640 480 +640 418 +640 427 +500 332 +480 640 +640 248 +640 480 +425 640 +480 640 +640 383 +320 427 +640 480 +480 640 +640 639 +640 480 +427 640 +481 640 +640 533 +640 426 +640 427 +612 612 +500 333 +640 480 +640 465 +536 640 +500 375 +640 427 +640 426 +427 640 +640 426 +640 427 +375 500 +640 213 +640 512 +640 480 +427 640 +640 425 +640 480 +640 480 +406 640 +640 426 +640 640 +640 480 +640 480 +640 480 +393 640 +640 427 +640 427 +500 375 +640 428 +640 428 +640 359 +640 487 +640 478 +640 640 +500 332 +640 427 +640 480 +640 261 +375 500 +640 426 +640 428 +640 405 +500 375 +331 500 +480 640 +640 480 +640 427 +640 480 +640 480 +640 427 +640 402 +500 375 +640 427 +478 640 +640 640 +375 500 +640 427 +640 424 +640 480 +640 426 +640 425 +480 640 +640 426 +640 424 +640 427 +640 427 +375 500 +640 427 +640 427 +640 480 +488 640 +640 430 +480 640 +640 480 +640 480 +640 427 +640 480 +640 294 +640 480 +640 480 +640 427 +640 427 +640 427 +640 427 +500 375 +500 375 +640 480 +640 480 +640 427 +640 480 +640 480 +640 508 +500 499 +640 431 +640 424 +375 500 +338 480 +640 427 +640 427 +640 479 +612 612 +440 640 +640 425 +500 291 +426 640 +640 480 +480 640 +426 640 +640 426 +640 427 +640 424 +281 446 +500 319 +640 427 +640 381 +640 427 +640 360 +520 347 +640 427 +640 425 +640 428 +640 427 +640 318 +332 500 +640 480 +640 428 +640 360 +640 479 +401 500 +640 480 +640 427 +640 480 +640 418 +640 453 +480 640 +360 640 +500 375 +640 426 +640 480 +640 480 +640 457 +480 640 +640 427 +283 500 +640 480 +640 514 +640 480 +640 427 +426 640 +500 375 +640 427 +500 375 +500 331 +497 640 +637 640 +640 428 +640 480 +640 479 +640 478 +640 480 +640 480 +500 333 +640 426 +640 427 +640 353 +640 360 +640 427 +640 427 +640 427 +640 478 +640 480 +640 424 +640 480 +480 640 +640 502 +640 480 +478 640 +478 640 +640 426 +424 640 +640 428 +425 352 +640 480 +640 418 +640 418 +640 480 +425 640 +640 428 +612 612 +640 380 +640 427 +640 480 +640 480 +375 500 +640 480 +640 425 +640 519 +500 375 +500 333 +640 480 +640 480 +640 480 +640 598 +500 332 +640 427 +640 484 +640 470 +640 383 +500 375 +640 428 +640 479 +640 480 +374 500 +612 612 +640 428 +425 640 +640 391 +640 480 +640 503 +640 480 +427 640 +640 445 +640 480 +640 362 +640 424 +500 335 +480 640 +426 640 +640 473 +517 640 +427 640 +640 401 +640 480 +640 480 +640 386 +500 500 +612 612 +640 427 +640 549 +640 640 +640 480 +640 480 +640 465 +640 361 +500 375 +500 334 +640 428 +640 480 +480 640 +640 426 +460 640 +418 640 +640 427 +612 612 +640 491 +427 640 +640 480 +640 427 +640 480 +500 375 +640 480 +640 480 +640 480 +640 427 +427 640 +612 612 +640 538 +480 640 +640 424 +640 359 +426 640 +640 360 +450 287 +640 531 +500 375 +640 425 +640 480 +640 427 +612 612 +640 480 +375 500 +500 332 +640 480 +640 424 +360 640 +500 300 +640 640 +480 640 +640 360 +640 480 +640 480 +539 640 +427 640 +640 480 +640 393 +427 640 +640 314 +640 427 +500 375 +640 480 +640 480 +640 480 +640 480 +640 480 +640 427 +500 400 +640 480 +640 454 +640 425 +500 377 +500 375 +640 403 +640 469 +640 344 +640 480 +640 415 +320 480 +500 375 +426 640 +640 480 +640 440 +640 428 +640 480 +451 640 +425 640 +640 480 +640 480 +480 640 +640 360 +480 640 +640 480 +480 640 +640 427 +640 480 +640 640 +640 427 +428 640 +640 588 +640 427 +640 355 +500 277 +640 427 +612 612 +640 480 +500 375 +640 455 +640 428 +640 415 +500 375 +640 426 +640 427 +500 357 +426 640 +400 500 +640 480 +500 375 +424 640 +640 480 +640 480 +640 360 +640 480 +640 427 +239 640 +640 480 +640 480 +640 428 +640 426 +640 480 +500 333 +640 427 +640 436 +478 640 +640 478 +640 427 +640 466 +640 408 +640 428 +640 310 +583 640 +640 480 +640 447 +640 480 +640 429 +640 427 +640 426 +640 427 +500 375 +500 375 +640 478 +480 640 +640 640 +500 332 +458 640 +640 427 +500 324 +640 427 +640 427 +640 426 +640 428 +640 427 +640 640 +640 480 +640 476 +640 480 +640 435 +640 419 +640 428 +357 500 +640 360 +640 427 +640 427 +500 333 +640 480 +640 480 +640 480 +426 640 +640 480 +640 380 +640 478 +640 390 +640 480 +612 612 +480 640 +640 426 +640 533 +640 426 +640 424 +429 640 +512 640 +640 480 +480 640 +640 427 +480 640 +427 640 +640 426 +640 480 +427 640 +640 480 +640 480 +480 640 +640 425 +640 427 +640 427 +640 429 +640 427 +480 640 +640 429 +640 480 +640 480 +640 480 +640 427 +640 480 +640 480 +640 427 +640 480 +640 480 +500 333 +640 480 +640 427 +517 640 +640 480 +500 375 +640 427 +640 626 +640 427 +500 375 +500 333 +640 480 +640 427 +500 375 +640 480 +640 480 +640 429 +500 375 +480 640 +640 480 +640 640 +640 480 +640 360 +640 427 +640 427 +640 403 +640 480 +426 640 +640 426 +640 480 +640 428 +640 640 +543 640 +500 500 +640 427 +421 640 +640 428 +612 612 +640 427 +640 427 +640 438 +500 334 +500 375 +640 427 +426 640 +640 640 +423 640 +612 612 +640 280 +640 480 +640 426 +640 463 +640 480 +500 333 +478 640 +640 480 +640 424 +480 640 +640 480 +500 375 +640 480 +640 427 +640 427 +640 426 +640 427 +640 480 +640 480 +426 640 +640 424 +640 428 +500 375 +460 640 +500 333 +640 426 +640 425 +640 640 +640 480 +640 480 +640 426 +500 333 +427 640 +640 480 +612 612 +640 480 +640 484 +480 640 +480 640 +500 332 +640 509 +436 500 +640 427 +640 480 +500 336 +480 640 +360 640 +480 640 +640 480 +640 480 +500 333 +640 427 +640 426 +640 452 +640 427 +424 640 +427 640 +640 480 +640 427 +335 500 +375 500 +313 500 +500 309 +640 480 +640 613 +367 640 +640 494 +640 480 +640 489 +612 612 +640 425 +640 404 +480 640 +480 640 +640 601 +375 500 +640 441 +379 640 +640 426 +640 427 +640 480 +480 640 +640 427 +640 426 +640 427 +640 480 +375 500 +500 333 +500 375 +640 480 +480 640 +640 480 +72 51 +640 427 +480 640 +640 480 +640 480 +640 424 +640 360 +640 433 +481 640 +640 480 +640 640 +640 431 +640 426 +640 426 +640 480 +640 427 +640 480 +640 480 +479 640 +640 480 +640 496 +640 428 +640 427 +640 480 +640 480 +425 640 +640 427 +640 427 +640 422 +640 480 +500 375 +640 426 +640 480 +640 427 +640 480 +640 480 +640 529 +640 480 +640 428 +640 443 +480 640 +640 636 +640 378 +640 480 +383 500 +640 472 +640 427 +456 640 +640 427 +640 426 +640 427 +640 389 +378 500 +640 459 +640 427 +500 375 +331 500 +640 416 +640 640 +500 375 +640 480 +480 640 +455 640 +640 480 +500 375 +640 359 +433 640 +640 480 +640 480 +480 640 +427 640 +640 348 +640 479 +640 640 +640 478 +640 480 +320 240 +427 640 +640 427 +640 427 +640 426 +640 433 +640 480 +640 480 +360 480 +640 434 +480 640 +427 640 +640 465 +640 359 +480 640 +640 480 +640 480 +640 480 +640 480 +640 480 +640 389 +375 500 +640 451 +640 468 +640 474 +640 428 +600 450 +640 480 +612 612 +640 359 +500 333 +608 640 +424 640 +333 500 +640 481 +480 640 +428 500 +640 427 +640 458 +640 480 +640 426 +485 640 +500 375 +640 427 +640 427 +640 480 +640 480 +427 640 +640 480 +640 426 +640 424 +640 480 +640 480 +414 640 +500 500 +480 640 +457 640 +427 640 +500 498 +640 427 +387 500 +480 640 +640 428 +640 480 +480 640 +640 480 +640 482 +480 640 +640 427 +640 480 +640 426 +428 640 +500 332 +640 480 +576 494 +640 480 +640 480 +640 427 +640 426 +640 474 +640 482 +640 480 +427 640 +300 480 +640 360 +640 427 +612 612 +640 441 +640 480 +640 480 +640 478 +640 426 +640 480 +640 399 +403 640 +640 640 +500 375 +640 480 +640 427 +640 480 +640 427 +640 427 +640 394 +640 360 +640 428 +500 328 +612 612 +640 425 +277 500 +480 640 +640 508 +640 524 +427 640 +612 612 +640 427 +640 419 +372 500 +640 478 +640 427 +425 640 +640 480 +500 375 +480 640 +640 480 +480 640 +640 480 +640 426 +480 640 +640 427 +427 640 +500 375 +640 450 +640 480 +500 375 +612 612 +500 375 +480 640 +480 640 +480 640 +640 480 +480 640 +640 271 +480 640 +500 333 +640 480 +481 640 +427 640 +640 360 +640 427 +640 236 +640 480 +640 431 +480 640 +375 500 +640 426 +640 424 +640 480 +640 480 +441 640 +640 427 +427 640 +640 480 +500 375 +640 427 +480 640 +640 360 +640 480 +427 640 +640 427 +640 480 +640 427 +500 333 +480 640 +375 500 +433 500 +640 480 +640 480 +500 370 +640 360 +640 389 +436 640 +640 480 +640 480 +640 426 +427 640 +640 640 +576 384 +640 480 +500 415 +500 500 +640 480 +500 402 +640 480 +640 427 +333 500 +640 426 +500 375 +640 425 +440 500 +640 427 +640 480 +427 640 +640 426 +640 480 +333 500 +640 474 +640 480 +478 640 +480 640 +640 478 +640 427 +630 640 +500 375 +640 480 +640 458 +640 425 +640 480 +500 336 +332 500 +640 436 +640 480 +480 640 +640 512 +434 500 +640 426 +640 480 +478 640 +640 479 +640 483 +640 437 +640 436 +640 427 +640 425 +640 483 +480 640 +500 375 +640 428 +500 334 +359 473 +640 427 +640 288 +640 480 +640 480 +640 480 +480 640 +640 480 +500 375 +640 480 +640 480 +600 450 +500 335 +480 640 +640 480 +500 400 +640 480 +480 640 +500 333 +612 612 +640 480 +500 359 +375 500 +640 480 +640 413 +640 480 +640 480 +424 640 +640 494 +640 427 +640 480 +640 423 +640 426 +640 480 +640 480 +500 375 +480 640 +640 427 +640 480 +640 480 +640 427 +640 383 +425 640 +480 640 +640 427 +640 470 +640 427 +423 640 +480 640 +640 424 +500 336 +333 500 +640 480 +640 424 +640 427 +640 428 +500 375 +478 640 +640 512 +640 506 +640 480 +375 500 +640 396 +640 427 +640 428 +480 640 +333 500 +640 427 +500 333 +483 640 +640 480 +500 332 +640 426 +369 500 +640 396 +640 480 +640 427 +424 640 +640 424 +640 480 +427 640 +640 480 +458 640 +640 480 +480 640 +640 378 +640 601 +640 480 +640 480 +640 427 +640 480 +640 480 +320 240 +640 506 +640 426 +640 484 +427 640 +375 500 +640 426 +500 375 +640 480 +640 443 +640 428 +427 640 +504 337 +640 296 +375 500 +500 375 +480 640 +640 480 +296 442 +432 345 +375 500 +640 427 +478 640 +640 478 +640 494 +500 333 +640 480 +500 400 +427 640 +406 640 +425 640 +640 424 +640 427 +640 427 +640 458 +640 480 +612 612 +640 480 +500 375 +640 427 +640 480 +549 640 +500 281 +640 640 +500 333 +312 400 +500 375 +640 522 +500 375 +640 478 +640 427 +640 626 +640 480 +620 486 +640 422 +640 480 +506 640 +640 425 +640 480 +640 427 +640 425 +640 360 +640 512 +500 375 +640 480 +640 428 +640 370 +612 612 +640 480 +375 500 +640 605 +500 334 +640 480 +640 480 +640 481 +426 640 +500 375 +624 415 +640 400 +427 640 +481 500 +640 361 +425 640 +640 429 +640 360 +640 499 +640 480 +427 640 +640 424 +480 640 +640 427 +640 440 +500 375 +640 480 +640 480 +480 640 +640 521 +640 427 +471 500 +427 640 +640 479 +640 480 +500 375 +640 428 +640 480 +640 428 +500 333 +480 640 +640 480 +640 480 +640 480 +640 480 +640 480 +640 426 +500 334 +640 427 +427 640 +640 480 +640 480 +515 640 +480 640 +640 480 +572 640 +640 480 +640 480 +640 425 +640 480 +640 480 +640 360 +500 332 +640 360 +480 640 +480 640 +640 427 +640 480 +640 426 +640 480 +427 640 +427 640 +640 479 +640 640 +500 375 +640 457 +640 479 +640 376 +427 640 +640 426 +640 524 +392 640 +640 425 +640 429 +640 480 +640 426 +640 480 +640 512 +640 427 +500 375 +640 480 +640 480 +480 640 +480 640 +640 427 +640 480 +640 480 +426 640 +640 427 +640 494 +640 480 +375 500 +640 300 +640 480 +640 452 +640 480 +640 578 +640 427 +640 442 +640 480 +640 424 +480 640 +494 500 +233 350 +640 423 +640 640 +640 360 +427 640 +480 640 +640 427 +428 640 +640 427 +640 427 +640 480 +640 480 +500 444 +480 640 +640 480 +640 518 +427 640 +500 333 +640 480 +640 427 +480 640 +640 427 +640 480 +640 425 +640 427 +640 402 +640 427 +640 480 +640 425 +640 630 +429 640 +640 480 +640 640 +640 480 +480 640 +500 333 +640 346 +489 640 +640 427 +640 426 +640 144 +640 424 +640 480 +640 417 +640 480 +640 640 +640 426 +426 640 +640 480 +640 414 +300 357 +640 480 +640 427 +383 640 +480 640 +480 640 +375 500 +640 427 +500 375 +640 427 +429 640 +512 640 +640 473 +427 640 +640 426 +640 427 +640 241 +640 428 +640 478 +640 425 +456 640 +500 375 +640 480 +640 273 +500 375 +640 426 +500 375 +425 640 +500 375 +640 427 +612 612 +640 480 +422 640 +640 427 +427 640 +480 640 +500 375 +529 640 +640 501 +640 480 +640 424 +640 427 +640 530 +375 500 +640 427 +500 333 +640 428 +640 360 +640 480 +612 612 +500 500 +640 427 +640 480 +640 424 +480 640 +425 640 +640 480 +375 500 +500 375 +640 424 +600 464 +500 333 +500 500 +640 466 +640 427 +640 480 +640 348 +609 640 +640 480 +640 408 +640 480 +427 640 +640 480 +640 480 +640 416 +500 375 +640 569 +326 220 +419 640 +640 480 +375 500 +375 500 +640 427 +640 461 +480 640 +640 481 +427 640 +640 427 +640 480 +640 480 +640 427 +640 480 +480 640 +640 478 +640 427 +640 480 +375 500 +640 427 +500 375 +493 640 +500 375 +427 640 +640 480 +431 640 +640 480 +640 427 +640 428 +428 640 +640 360 +415 640 +640 480 +332 500 +640 427 +640 428 +640 444 +640 480 +428 640 +500 359 +640 427 +640 480 +640 480 +425 640 +375 500 +160 120 +500 481 +506 640 +640 427 +640 480 +640 448 +640 480 +612 612 +640 480 +640 427 +640 480 +640 428 +640 434 +640 480 +500 375 +640 480 +491 640 +640 425 +640 480 +640 474 +640 427 +640 283 +640 360 +640 427 +640 359 +640 360 +427 640 +640 480 +640 480 +480 640 +640 428 +640 426 +427 640 +640 427 +640 427 +640 463 +480 640 +640 433 +640 587 +640 425 +640 640 +640 427 +640 424 +640 427 +640 426 +640 480 +640 427 +500 339 +640 427 +640 427 +640 480 +480 640 +640 480 +640 480 +480 640 +640 480 +640 427 +640 426 +640 427 +640 427 +640 360 +640 480 +640 480 +480 640 +640 480 +375 500 +640 426 +640 439 +480 640 +500 375 +427 640 +640 427 +640 427 +512 640 +640 425 +640 494 +424 640 +480 640 +640 427 +640 480 +352 288 +640 360 +640 428 +427 640 +375 500 +640 427 +640 361 +297 500 +640 360 +480 640 +640 480 +612 612 +640 473 +640 519 +640 480 +640 425 +427 640 +640 480 +500 333 +480 640 +640 427 +640 484 +640 480 +640 483 +427 640 +427 640 +640 480 +640 480 +640 556 +500 331 +640 426 +480 640 +640 427 +480 640 +640 429 +500 375 +500 375 +640 425 +426 640 +640 480 +480 640 +484 640 +640 253 +640 431 +640 428 +640 427 +427 640 +398 640 +640 429 +640 360 +612 612 +480 640 +640 480 +640 640 +375 500 +640 472 +640 458 +640 640 +640 427 +640 428 +640 621 +500 334 +640 424 +640 480 +640 480 +640 426 +640 427 +427 640 +640 483 +640 428 +640 424 +516 640 +538 480 +427 640 +640 480 +640 480 +640 640 +406 640 +240 320 +500 375 +640 360 +612 612 +476 640 +640 427 +640 530 +640 426 +500 375 +640 396 +640 480 +480 640 +640 494 +640 508 +640 480 +640 640 +640 426 +432 640 +443 640 +640 427 +640 432 +640 480 +640 427 +427 640 +500 375 +612 612 +640 426 +640 480 +640 361 +331 500 +640 425 +640 480 +640 427 +480 640 +640 480 +640 427 +640 425 +640 428 +640 360 +500 374 +480 640 +427 640 +426 640 +640 427 +640 427 +640 463 +500 333 +640 426 +500 337 +373 640 +640 491 +427 640 +612 612 +640 423 +640 480 +640 480 +640 573 +640 464 +640 427 +640 480 +640 480 +350 375 +640 623 +612 612 +640 480 +640 479 +640 360 +315 315 +640 481 +640 427 +640 480 +480 640 +640 426 +640 425 +640 428 +640 427 +640 480 +640 478 +640 427 +375 500 +640 398 +640 427 +640 426 +427 640 +640 425 +640 362 +640 480 +500 375 +396 500 +500 375 +640 425 +376 500 +640 480 +426 640 +500 333 +383 640 +640 425 +640 425 +426 640 +640 480 +640 360 +640 489 +640 480 +612 612 +480 640 +640 479 +500 334 +640 480 +332 500 +332 500 +480 640 +375 500 +640 480 +640 480 +640 428 +500 166 +448 500 +640 480 +640 382 +640 360 +640 480 +452 640 +480 640 +640 480 +640 427 +640 427 +640 404 +640 480 +480 640 +640 480 +488 640 +640 480 +640 426 +640 427 +640 480 +434 640 +500 333 +480 640 +500 375 +640 480 +640 480 +640 426 +640 425 +334 500 +640 429 +640 361 +640 427 +320 640 +640 480 +480 640 +640 512 +640 472 +500 375 +640 480 +640 640 +640 425 +640 640 +427 640 +640 560 +494 640 +480 640 +640 427 +500 375 +427 640 +513 640 +640 427 +300 400 +427 640 +453 640 +428 640 +335 500 +640 480 +640 426 +640 480 +480 640 +478 640 +612 612 +640 480 +640 480 +640 481 +640 480 +640 427 +375 500 +640 631 +640 405 +480 640 +500 375 +640 480 +427 640 +640 480 +500 333 +640 425 +480 640 +640 427 +570 570 +640 480 +640 480 +640 480 +640 427 +612 612 +640 402 +398 600 +640 427 +448 312 +640 427 +640 427 +640 427 +640 427 +640 478 +640 481 +640 538 +500 333 +509 640 +640 480 +640 480 +640 640 +480 640 +640 427 +640 480 +640 480 +640 427 +375 500 +640 480 +640 425 +612 612 +636 640 +480 640 +640 427 +428 640 +428 640 +640 480 +640 426 +640 480 +640 480 +426 640 +492 500 +640 498 +640 480 +640 425 +640 425 +640 425 +640 427 +640 432 +500 333 +353 640 +500 375 +500 375 +480 640 +640 360 +438 640 +640 480 +640 426 +576 576 +638 640 +640 466 +361 500 +640 427 +640 456 +640 390 +640 585 +375 500 +640 480 +640 480 +640 401 +640 480 +500 401 +640 480 +640 480 +424 640 +640 480 +480 640 +640 414 +483 640 +480 640 +500 333 +640 480 +640 393 +427 640 +480 640 +640 414 +480 640 +500 332 +640 640 +640 395 +640 222 +640 427 +640 427 +427 640 +640 480 +640 427 +640 480 +640 429 +500 375 +500 333 +480 640 +500 470 +640 363 +335 500 +340 455 +639 640 +640 480 +458 640 +316 500 +640 480 +500 375 +640 480 +640 512 +640 480 +640 480 +480 640 +427 640 +389 500 +640 480 +375 500 +480 640 +640 480 +640 426 +640 359 +639 640 +640 480 +500 375 +612 612 +375 500 +640 480 +640 378 +640 428 +640 480 +640 478 +640 461 +480 640 +424 640 +640 480 +640 480 +500 333 +640 320 +612 612 +500 333 +640 480 +420 640 +500 375 +640 480 +640 480 +640 480 +640 425 +640 428 +640 427 +640 451 +640 424 +640 516 +640 500 +640 480 +620 413 +640 426 +640 480 +480 640 +333 500 +498 640 +500 334 +640 480 +640 480 +640 480 +640 480 +500 359 +480 640 +640 427 +425 640 +640 483 +640 428 +640 480 +480 640 +640 427 +640 426 +640 425 +640 427 +640 480 +640 427 +640 450 +640 480 +473 640 +640 400 +640 485 +480 640 +640 427 +640 426 +640 402 +640 480 +482 640 +480 640 +480 640 +427 640 +500 375 +480 640 +640 426 +640 640 +608 379 +640 480 +640 427 +640 480 +640 480 +640 480 +640 480 +640 480 +500 374 +427 640 +640 425 +640 427 +640 427 +500 333 +500 302 +427 640 +480 640 +640 458 +640 480 +480 640 +480 640 +427 640 +640 480 +640 480 +640 421 +640 427 +640 480 +640 480 +640 427 +427 640 +640 480 +427 640 +640 480 +332 500 +640 425 +640 428 +640 427 +640 448 +640 427 +427 640 +640 428 +640 480 +640 510 +640 426 +500 375 +640 502 +427 640 +640 439 +427 640 +640 480 +480 640 +640 427 +480 640 +640 480 +640 513 +640 426 +640 427 +640 425 +640 426 +640 427 +480 640 +640 425 +640 427 +640 486 +424 640 +640 480 +500 380 +640 427 +427 640 +640 171 +428 640 +374 500 +640 427 +426 640 +500 375 +640 427 +640 480 +640 427 +500 375 +640 640 +500 469 +640 480 +480 640 +480 640 +640 383 +640 480 +604 640 +640 477 +640 480 +640 480 +640 480 +500 364 +430 640 +640 424 +640 480 +640 426 +640 428 +640 425 +612 612 +640 480 +640 426 +588 640 +640 426 +500 375 +640 480 +640 427 +640 427 +640 480 +427 640 +200 150 +640 480 +640 429 +640 429 +471 500 +426 640 +350 467 +640 425 +428 640 +428 640 +500 375 +426 640 +640 480 +480 640 +640 426 +428 640 +640 429 +640 480 +500 375 +640 424 +640 457 +427 640 +480 640 +640 424 +612 612 +427 640 +640 480 +640 480 +640 424 +640 480 +360 640 +427 640 +480 640 +640 640 +640 427 +640 480 +640 427 +640 424 +640 479 +640 470 +640 390 +427 640 +610 407 +426 640 +640 359 +375 500 +640 426 +640 478 +638 640 +640 427 +640 480 +640 429 +640 339 +640 415 +640 480 +640 478 +480 640 +453 640 +429 640 +427 640 +640 427 +640 528 +640 498 +640 480 +640 360 +640 480 +480 640 +640 480 +640 474 +640 480 +640 427 +640 479 +640 480 +500 375 +640 480 +640 480 +640 426 +640 480 +480 640 +500 375 +640 406 +640 480 +640 428 +640 640 +640 480 +480 640 +640 480 +631 600 +640 480 +425 640 +426 640 +427 640 +640 480 +640 480 +480 640 +640 480 +640 427 +640 457 +500 333 +640 427 +640 480 +640 480 +640 416 +640 427 +426 640 +640 427 +640 409 +469 500 +480 640 +640 427 +640 427 +640 428 +640 480 +640 427 +500 375 +500 375 +640 480 +640 575 +640 512 +640 480 +428 640 +640 480 +640 480 +427 640 +640 426 +427 640 +640 480 +640 403 +640 480 +640 458 +500 333 +500 356 +640 302 +375 500 +640 242 +640 480 +640 426 +640 427 +640 415 +640 513 +640 427 +500 402 +640 480 +427 640 +640 424 +480 640 +375 500 +640 427 +500 281 +640 445 +640 425 +357 520 +160 120 +640 480 +640 504 +466 640 +640 428 +640 480 +622 622 +640 427 +640 480 +640 426 +640 480 +640 451 +640 480 +612 612 +640 480 +640 427 +640 427 +501 359 +612 612 +640 437 +640 480 +640 426 +640 425 +640 427 +640 480 +334 500 +500 335 +640 425 +640 480 +500 333 +640 428 +640 427 +640 480 +640 444 +480 640 +640 426 +640 480 +640 425 +512 384 +640 640 +526 640 +640 427 +640 438 +424 640 +640 424 +383 640 +640 331 +640 480 +640 428 +640 462 +640 476 +427 640 +640 480 +640 360 +500 349 +640 480 +640 480 +640 427 +172 227 +640 427 +500 500 +640 426 +640 480 +640 478 +640 485 +445 640 +483 640 +375 500 +640 480 +640 427 +640 480 +640 349 +640 480 +640 426 +500 334 +612 612 +640 427 +427 640 +640 480 +640 427 +480 640 +500 334 +480 640 +427 640 +640 361 +640 480 +640 426 +427 640 +640 480 +640 427 +640 426 +640 360 +640 480 +640 480 +379 640 +640 481 +640 427 +640 480 +640 480 +640 334 +640 416 +640 640 +640 640 +480 640 +427 640 +640 427 +640 427 +426 640 +640 359 +640 426 +640 427 +640 376 +500 332 +640 427 +640 424 +640 427 +640 480 +640 427 +640 480 +480 640 +500 375 +425 640 +480 640 +427 640 +640 441 +640 427 +640 427 +640 331 +640 411 +640 427 +500 375 +640 480 +640 426 +640 639 +640 480 +640 427 +640 461 +480 640 +640 480 +640 480 +454 640 +427 640 +640 427 +640 413 +480 640 +612 612 +500 375 +640 480 +640 337 +640 480 +640 480 +480 640 +640 544 +640 425 +426 640 +480 640 +640 415 +235 314 +640 481 +640 408 +426 640 +640 424 +640 427 +500 493 +640 427 +640 383 +500 346 +640 370 +640 480 +500 331 +640 359 +640 480 +502 640 +480 640 +640 336 +640 480 +640 480 +478 640 +480 640 +640 480 +640 383 +640 480 +640 480 +425 640 +480 640 +640 427 +640 426 +640 480 +640 480 +640 426 +612 612 +640 426 +640 426 +333 500 +640 427 +500 375 +640 494 +640 426 +333 500 +640 443 +640 483 +426 640 +640 480 +640 480 +640 480 +640 480 +640 427 +640 325 +500 375 +640 427 +500 375 +500 375 +640 428 +640 396 +640 460 +500 335 +640 480 +640 482 +640 480 +426 640 +640 416 +640 480 +640 480 +500 375 +480 640 +426 640 +640 480 +640 512 +478 640 +640 428 +480 640 +640 480 +480 640 +640 361 +480 640 +640 360 +457 640 +640 429 +640 480 +480 640 +614 640 +640 447 +640 480 +480 640 +480 640 +640 429 +640 480 +640 480 +376 500 +189 500 +500 333 +640 425 +426 640 +640 407 +640 426 +640 427 +426 640 +640 427 +500 331 +640 426 +428 640 +500 332 +640 480 +640 425 +640 425 +640 480 +427 640 +640 425 +640 512 +640 628 +500 332 +640 427 +640 480 +536 640 +640 427 +640 427 +640 426 +640 640 +640 360 +612 612 +640 480 +640 640 +640 426 +640 427 +480 640 +640 426 +640 427 +640 480 +640 438 +640 590 +640 480 +640 480 +331 500 +640 427 +640 640 +640 427 +500 375 +500 375 +640 480 +480 640 +640 480 +550 640 +500 500 +640 480 +640 427 +359 640 +640 480 +375 500 +640 427 +500 336 +640 512 +640 418 +640 427 +500 281 +640 360 +375 500 +640 428 +427 640 +419 640 +640 360 +640 480 +640 427 +640 426 +640 426 +640 480 +640 640 +640 426 +640 480 +640 480 +640 480 +640 530 +480 640 +367 640 +640 480 +640 236 +500 375 +480 640 +640 427 +640 427 +640 414 +640 289 +500 376 +640 480 +640 480 +640 428 +640 427 +640 480 +640 428 +500 334 +640 360 +427 640 +640 480 +500 333 +640 480 +375 500 +375 500 +640 480 +640 360 +500 375 +640 386 +640 480 +640 480 +640 480 +640 512 +640 480 +426 640 +600 453 +640 427 +640 480 +640 480 +500 375 +478 640 +640 480 +640 480 +612 612 +500 500 +640 429 +500 482 +640 480 +480 640 +500 333 +335 500 +640 356 +640 480 +640 508 +640 360 +640 427 +640 427 +512 640 +640 427 +480 640 +429 640 +427 640 +640 427 +425 640 +640 480 +640 426 +640 640 +478 640 +640 428 +428 640 +640 480 +640 427 +640 480 +612 612 +640 480 +640 480 +500 375 +427 640 +480 640 +427 640 +640 424 +500 283 +640 433 +640 329 +640 288 +612 612 +640 489 +640 427 +425 640 +640 278 +500 377 +480 640 +640 480 +640 578 +640 479 +640 425 +640 626 +640 455 +640 427 +640 448 +640 443 +640 640 +621 640 +480 640 +640 428 +375 500 +482 640 +427 640 +480 640 +500 375 +612 612 +640 427 +480 640 +640 427 +480 640 +640 427 +640 480 +640 501 +473 640 +375 500 +480 640 +480 640 +640 427 +428 640 +640 480 +500 309 +640 424 +640 426 +640 425 +480 640 +640 446 +480 640 +640 427 +640 480 +640 480 +427 640 +480 640 +445 500 +640 480 +640 329 +375 500 +640 480 +500 333 +640 427 +500 375 +640 480 +640 480 +427 640 +400 500 +640 480 +640 480 +427 640 +612 612 +640 480 +427 640 +640 480 +400 300 +640 480 +640 480 +640 426 +426 640 +640 496 +500 333 +640 428 +640 426 +383 640 +500 478 +640 480 +640 480 +586 640 +480 640 +640 427 +480 640 +427 640 +640 360 +375 500 +640 480 +640 426 +640 480 +320 240 +640 427 +640 428 +640 427 +640 510 +333 500 +612 612 +640 359 +640 424 +427 640 +640 427 +500 375 +427 640 +640 480 +640 480 +340 500 +640 413 +640 425 +500 375 +478 640 +640 443 +640 480 +500 188 +640 427 +640 361 +640 419 +640 427 +427 640 +640 480 +500 375 +480 640 +640 480 +427 640 +640 478 +640 480 +612 612 +500 375 +640 427 +640 426 +640 427 +513 640 +291 449 +640 480 +640 480 +640 527 +640 426 +640 426 +500 333 +427 640 +640 427 +640 640 +640 480 +640 640 +640 427 +640 400 +427 640 +640 428 +640 480 +480 640 +640 427 +640 426 +640 418 +640 480 +361 640 +640 427 +640 429 +640 424 +480 640 +640 426 +480 640 +630 450 +640 569 +640 480 +427 640 +640 427 +480 640 +612 612 +640 425 +640 426 +500 375 +500 333 +359 640 +444 640 +500 375 +640 480 +640 512 +640 480 +640 382 +332 500 +640 429 +640 480 +640 480 +640 480 +640 480 +640 480 +375 500 +640 586 +640 427 +332 500 +358 500 +500 374 +640 411 +375 500 +640 428 +640 427 +640 427 +480 640 +640 480 +427 640 +427 640 +500 333 +640 480 +640 426 +360 640 +640 427 +640 296 +480 640 +640 450 +425 640 +333 500 +427 640 +427 640 +640 426 +640 428 +480 640 +546 366 +480 640 +640 428 +640 425 +640 480 +640 401 +480 382 +640 480 +640 480 +500 375 +640 480 +612 612 +640 427 +500 500 +640 426 +480 640 +480 640 +640 488 +480 640 +640 389 +612 612 +640 427 +640 425 +375 500 +427 640 +640 430 +640 480 +334 500 +640 480 +640 479 +640 427 +640 427 +640 480 +640 480 +640 412 +640 418 +427 640 +640 478 +640 425 +640 324 +500 335 +640 480 +640 428 +640 480 +500 333 +480 640 +640 453 +640 364 +426 640 +640 480 +640 427 +640 480 +429 640 +500 334 +640 480 +640 466 +480 640 +480 640 +383 640 +640 425 +640 480 +640 429 +612 612 +640 454 +640 487 +480 640 +640 427 +640 480 +375 500 +478 640 +480 640 +640 480 +640 480 +640 480 +640 480 +480 640 +640 471 +454 640 +640 427 +640 427 +640 640 +640 524 +640 480 +640 480 +640 480 +640 513 +640 427 +640 417 +284 640 +500 375 +640 383 +640 427 +640 480 +640 480 +612 612 +640 427 +478 640 +640 480 +640 633 +640 469 +640 480 +640 427 +640 426 +640 480 +426 640 +640 480 +375 500 +640 288 +640 458 +640 508 +480 640 +640 428 +427 640 +640 480 +640 480 +640 480 +480 640 +640 480 +424 640 +640 428 +640 426 +640 360 +640 426 +500 375 +384 640 +640 427 +480 640 +640 478 +640 427 +500 353 +500 334 +640 480 +640 480 +508 640 +427 640 +640 427 +500 333 +640 480 +586 640 +640 481 +500 375 +640 451 +640 480 +640 640 +640 509 +425 640 +640 211 +640 480 +640 480 +375 500 +500 333 +640 476 +640 405 +500 375 +640 480 +600 450 +640 426 +640 424 +500 333 +640 480 +640 640 +640 480 +640 483 +640 427 +640 480 +640 238 +640 360 +640 425 +500 330 +640 480 +640 400 +454 500 +640 480 +480 640 +640 539 +640 457 +441 600 +500 333 +500 375 +640 458 +640 480 +640 426 +640 498 +640 480 +612 612 +508 640 +640 428 +480 640 +480 640 +640 433 +426 640 +640 425 +640 459 +438 640 +640 427 +480 640 +640 426 +640 425 +640 426 +613 640 +640 480 +640 427 +640 426 +640 427 +640 427 +640 425 +640 427 +500 375 +480 640 +470 352 +640 480 +480 640 +480 640 +640 480 +640 428 +640 480 +640 425 +640 478 +480 640 +640 391 +640 426 +640 426 +618 640 +640 427 +640 512 +640 427 +480 640 +640 480 +427 640 +640 480 +640 480 +640 427 +640 470 +500 382 +640 424 +456 640 +640 480 +640 480 +640 427 +640 426 +480 640 +640 427 +640 480 +500 375 +640 480 +640 427 +640 427 +640 480 +426 640 +640 480 +384 640 +612 612 +640 340 +424 640 +500 430 +640 286 +480 640 +427 640 +500 334 +640 480 +480 640 +640 494 +640 480 +640 480 +640 424 +375 500 +370 500 +640 480 +640 427 +462 640 +484 640 +640 427 +640 480 +424 640 +640 480 +550 413 +480 640 +480 640 +640 499 +424 640 +640 400 +640 449 +640 640 +375 500 +640 427 +640 427 +640 427 +640 443 +500 375 +640 426 +640 427 +640 446 +483 640 +448 640 +640 529 +500 333 +612 612 +640 427 +640 426 +640 429 +500 332 +640 515 +480 640 +640 427 +640 418 +640 423 +640 480 +640 427 +640 428 +640 427 +640 428 +640 401 +640 427 +480 640 +480 640 +640 482 +480 640 +640 480 +640 427 +427 640 +640 550 +640 427 +426 640 +640 425 +640 426 +640 480 +640 253 +640 426 +640 427 +480 640 +445 640 +640 404 +640 491 +480 640 +640 424 +640 425 +640 437 +426 640 +612 612 +494 640 +500 375 +640 425 +640 480 +426 640 +612 612 +640 480 +640 480 +640 453 +546 366 +640 426 +640 480 +640 427 +640 359 +640 480 +640 480 +640 427 +500 500 +640 426 +640 624 +500 375 +428 640 +640 427 +640 418 +640 540 +640 480 +500 333 +640 480 +640 427 +500 334 +640 426 +640 480 +500 332 +640 426 +640 426 +640 432 +640 411 +640 480 +640 459 +640 521 +640 427 +640 427 +427 640 +353 640 +500 333 +640 427 +612 612 +640 505 +640 480 +640 549 +478 640 +640 480 +640 427 +640 427 +640 480 +640 428 +640 427 +479 640 +640 427 +640 427 +300 255 +500 375 +640 427 +367 500 +640 430 +393 640 +640 480 +640 458 +640 480 +640 363 +640 423 +640 428 +640 288 +640 427 +399 500 +640 479 +640 543 +612 612 +512 640 +640 429 +480 640 +360 239 +640 428 +500 375 +500 375 +640 425 +513 640 +640 409 +640 480 +480 640 +640 104 +640 428 +640 427 +427 640 +640 466 +640 427 +640 430 +640 480 +640 426 +640 427 +640 427 +426 640 +640 427 +640 480 +640 480 +500 375 +640 480 +455 640 +640 480 +640 480 +640 427 +640 480 +500 333 +500 375 +612 612 +640 480 +333 500 +500 333 +500 375 +640 427 +428 640 +640 376 +640 480 +640 480 +640 480 +500 377 +640 506 +479 640 +500 333 +600 296 +500 375 +640 428 +576 640 +640 480 +640 425 +640 425 +480 640 +425 640 +640 480 +500 375 +640 360 +500 375 +640 583 +500 375 +500 375 +480 640 +480 640 +480 640 +640 480 +640 428 +640 480 +640 403 +640 480 +640 480 +640 451 +640 480 +640 480 +640 429 +640 451 +640 480 +640 427 +500 375 +427 640 +640 425 +500 333 +640 480 +427 640 +640 427 +640 425 +640 480 +640 456 +408 391 +640 480 +477 640 +640 427 +512 640 +480 640 +640 429 +640 425 +640 480 +640 480 +640 407 +640 545 +640 480 +640 480 +640 480 +500 375 +333 500 +640 428 +500 333 +640 378 +427 640 +640 428 +375 500 +640 486 +640 640 +640 480 +640 424 +480 640 +640 427 +426 640 +640 480 +640 362 +426 640 +640 426 +640 480 +612 612 +640 426 +640 480 +640 426 +640 480 +425 640 +640 426 +421 640 +427 640 +480 640 +640 480 +427 640 +334 500 +480 640 +640 427 +640 429 +500 333 +640 480 +500 334 +326 500 +640 480 +640 480 +478 640 +480 640 +500 375 +640 512 +640 423 +640 427 +640 640 +640 480 +640 425 +640 480 +640 480 +640 480 +640 427 +640 252 +640 427 +640 480 +428 640 +500 374 +640 480 +500 375 +375 500 +640 480 +500 375 +640 360 +640 426 +640 640 +480 640 +427 640 +480 640 +640 479 +640 431 +640 373 +428 640 +640 433 +640 480 +640 480 +640 480 +640 427 +640 480 +484 640 +640 429 +480 640 +375 500 +427 640 +640 480 +640 480 +500 375 +288 352 +371 640 +640 480 +425 640 +640 625 +640 359 +640 478 +640 480 +640 480 +640 480 +640 405 +640 427 +640 478 +640 480 +640 480 +640 480 +500 331 +640 425 +640 479 +640 427 +427 640 +640 427 +640 480 +640 564 +500 375 +640 480 +480 384 +576 413 +427 640 +640 428 +612 612 +425 640 +500 333 +640 426 +427 640 +640 480 +640 480 +480 640 +640 426 +500 407 +640 394 +600 450 +500 375 +500 375 +500 332 +469 640 +500 375 +640 427 +640 427 +640 427 +640 480 +640 425 +640 603 +640 480 +640 463 +612 612 +640 427 +426 640 +427 640 +640 480 +640 426 +640 480 +640 480 +640 480 +640 427 +640 427 +600 450 +640 480 +640 425 +500 375 +640 318 +436 640 +640 640 +640 427 +480 640 +640 461 +427 640 +427 640 +375 500 +426 640 +640 480 +640 480 +480 640 +480 640 +640 480 +308 462 +480 640 +640 427 +640 480 +640 427 +640 404 +360 500 +640 427 +640 426 +640 490 +480 640 +400 300 +640 444 +578 640 +640 435 +640 640 +427 640 +356 500 +640 426 +640 431 +500 375 +640 480 +640 480 +640 480 +640 506 +375 500 +640 480 +416 640 +461 640 +640 426 +640 476 +480 640 +640 425 +640 427 +500 375 +640 427 +640 427 +640 429 +640 425 +640 480 +640 480 +640 502 +640 427 +480 640 +640 480 +480 361 +640 480 +640 423 +640 560 +640 429 +500 146 +640 478 +365 640 +640 480 +427 640 +640 480 +640 482 +500 375 +640 480 +640 427 +427 640 +480 640 +640 404 +640 427 +500 375 +420 640 +325 500 +640 428 +640 263 +360 270 +640 427 +428 640 +640 427 +640 480 +426 640 +640 469 +640 428 +640 640 +500 375 +640 425 +427 640 +640 386 +640 445 +640 480 +640 480 +479 500 +640 480 +640 427 +640 640 +640 480 +640 478 +640 424 +480 640 +346 500 +500 280 +640 426 +480 640 +640 480 +640 427 +640 480 +640 480 +500 377 +399 640 +500 375 +640 480 +640 429 +478 640 +500 375 +480 640 +640 484 +480 640 +640 480 +640 400 +640 516 +612 612 +640 485 +426 640 +480 640 +640 416 +410 640 +640 428 +598 393 +640 407 +425 640 +640 428 +439 640 +640 411 +640 368 +640 429 +427 640 +640 433 +640 480 +500 375 +500 474 +640 426 +640 426 +640 424 +640 601 +640 427 +640 320 +640 426 +640 427 +500 333 +640 426 +640 350 +640 480 +640 428 +640 427 +640 480 +640 483 +375 500 +426 640 +640 480 +640 480 +640 398 +640 427 +640 481 +640 480 +480 640 +640 494 +640 371 +640 481 +640 480 +640 480 +640 326 +640 427 +324 182 +595 608 +640 427 +640 480 +500 334 +640 512 +480 640 +640 480 +612 612 +640 426 +640 428 +612 612 +640 480 +500 375 +500 443 +640 388 +640 480 +640 427 +640 480 +640 496 +640 457 +480 566 +480 640 +640 442 +480 640 +640 463 +640 426 +640 391 +486 640 +427 640 +640 427 +640 409 +640 427 +640 426 +640 480 +500 327 +640 427 +640 427 +528 640 +640 480 +640 423 +640 427 +640 480 +640 480 +640 536 +640 427 +640 480 +640 427 +480 640 +640 425 +640 481 +640 480 +640 427 +640 640 +640 427 +640 426 +480 640 +640 480 +640 450 +500 375 +640 427 +640 480 +640 479 +431 640 +480 640 +640 480 +640 540 +427 640 +400 205 +640 480 +640 432 +640 480 +640 427 +640 409 +640 427 +427 640 +500 375 +640 424 +640 480 +500 375 +428 640 +640 480 +640 427 +640 383 +640 419 +640 480 +640 426 +500 375 +640 427 +640 426 +640 467 +640 361 +640 480 +480 640 +640 427 +640 480 +640 480 +480 640 +500 375 +500 500 +640 480 +640 400 +425 640 +640 427 +640 425 +640 360 +640 427 +640 490 +640 480 +432 640 +500 375 +640 479 +640 414 +424 640 +640 500 +612 612 +640 480 +640 623 +327 640 +375 500 +640 429 +640 426 +640 221 +480 640 +640 480 +640 428 +640 480 +500 281 +640 360 +640 426 +640 439 +640 427 +640 360 +480 640 +400 300 +640 596 +640 427 +640 428 +360 640 +640 457 +640 438 +500 427 +640 640 +500 375 +375 500 +640 426 +426 640 +640 480 +640 388 +640 426 +640 480 +640 480 +640 427 +640 428 +640 423 +640 436 +500 372 +640 480 +640 480 +640 366 +500 333 +640 480 +640 428 +500 484 +425 640 +640 480 +427 640 +500 332 +480 640 +640 427 +441 640 +523 640 +480 640 +500 381 +427 640 +640 405 +640 360 +500 375 +427 640 +640 427 +640 427 +408 500 +640 479 +333 500 +640 480 +640 427 +640 444 +640 480 +640 640 +640 425 +375 500 +500 375 +640 431 +640 427 +640 430 +426 640 +432 288 +640 359 +640 429 +480 640 +640 427 +512 640 +500 375 +427 640 +640 425 +612 612 +500 471 +612 612 +427 640 +480 640 +640 427 +640 480 +640 427 +640 480 +640 480 +640 480 +500 375 +640 282 +358 500 +375 500 +640 427 +640 427 +640 480 +640 480 +640 427 +427 640 +640 422 +640 428 +640 427 +500 375 +640 426 +640 400 +640 427 +433 640 +375 500 +375 500 +640 427 +640 480 +427 640 +519 640 +640 361 +640 480 +640 427 +426 640 +461 640 +640 480 +640 427 +640 425 +425 640 +500 375 +640 400 +640 480 +640 400 +640 480 +500 375 +640 479 +480 640 +640 480 +640 427 +640 414 +334 500 +640 480 +640 480 +640 427 +479 319 +640 480 +640 480 +427 640 +640 427 +640 639 +640 527 +459 640 +640 437 +640 394 +640 419 +640 427 +640 427 +640 427 +640 477 +640 427 +640 479 +500 333 +640 426 +640 333 +640 425 +500 400 +640 480 +640 480 +640 480 +640 424 +640 380 +640 465 +372 480 +640 427 +640 480 +480 640 +640 427 +640 480 +640 427 +640 360 +640 361 +640 479 +500 199 +426 640 +640 427 +640 426 +500 375 +640 480 +640 427 +500 347 +640 480 +640 480 +640 480 +480 360 +427 640 +480 640 +640 427 +640 427 +640 482 +640 480 +640 426 +480 640 +640 427 +640 480 +640 480 +612 612 +640 446 +640 425 +640 480 +640 480 +640 426 +426 640 +640 427 +640 427 +426 640 +640 427 +458 640 +640 480 +500 428 +640 384 +640 425 +500 375 +480 640 +600 450 +512 640 +640 427 +640 512 +365 640 +640 429 +640 557 +640 499 +500 375 +500 375 +640 451 +333 500 +640 480 +640 468 +427 640 +484 640 +640 480 +640 480 +640 408 +640 427 +640 424 +640 480 +500 339 +427 640 +640 480 +640 426 +640 480 +640 396 +640 480 +640 427 +640 427 +640 481 +427 640 +612 612 +640 480 +640 427 +640 480 +640 427 +640 425 +427 640 +612 612 +640 427 +500 375 +480 640 +640 428 +640 480 +640 480 +640 426 +480 640 +640 427 +500 375 +330 500 +640 480 +640 480 +612 612 +640 427 +640 425 +164 500 +480 640 +640 428 +500 375 +640 480 +640 480 +640 425 +640 480 +457 640 +640 631 +640 480 +640 462 +640 480 +640 480 +612 612 +459 640 +640 480 +640 480 +640 551 +640 480 +640 386 +640 618 +640 428 +640 480 +640 428 +540 540 +640 480 +640 493 +640 482 +640 360 +500 333 +500 500 +640 480 +478 640 +640 427 +640 541 +500 375 +640 480 +640 480 +640 427 +640 480 +640 480 +640 510 +416 500 +640 480 +640 640 +640 427 +478 640 +640 480 +640 480 +640 429 +640 480 +522 640 +640 477 +500 377 +375 500 +640 427 +640 433 +427 640 +640 303 +500 285 +480 640 +640 480 +640 480 +640 427 +180 500 +500 375 +640 480 +640 268 +480 640 +640 427 +640 426 +640 426 +640 480 +640 426 +480 640 +640 480 +640 480 +640 480 +480 640 +640 424 +478 640 +480 640 +640 428 +640 426 +640 425 +500 313 +640 398 +640 480 +480 640 +500 333 +640 457 +429 640 +640 427 +640 480 +426 640 +480 640 +640 480 +640 480 +640 424 +486 640 +640 428 +640 512 +640 427 +640 366 +427 640 +640 427 +640 444 +500 375 +421 640 +427 640 +640 426 +428 640 +480 640 +426 640 +500 375 +375 500 +640 480 +640 479 +640 425 +640 480 +375 500 +500 375 +640 480 +640 425 +640 428 +640 427 +494 640 +640 480 +640 480 +640 426 +640 451 +640 457 +426 640 +640 480 +612 612 +640 478 +640 480 +640 427 +286 640 +640 457 +640 432 +480 640 +500 333 +640 358 +640 428 +640 427 +640 427 +640 474 +640 426 +640 426 +480 640 +640 427 +640 432 +640 426 +480 640 +640 480 +640 426 +640 494 +480 640 +640 429 +640 427 +375 500 +640 419 +342 640 +640 421 +640 426 +612 612 +640 480 +375 500 +500 500 +640 360 +640 469 +640 480 +425 640 +640 427 +612 612 +640 392 +640 427 +640 480 +640 480 +640 428 +640 480 +640 426 +640 464 +640 427 +500 400 +640 369 +480 640 +640 427 +640 480 +640 480 +640 438 +640 428 +640 426 +600 600 +640 427 +640 512 +640 480 +333 500 +640 454 +640 480 +480 640 +640 423 +640 427 +640 431 +640 480 +500 375 +640 463 +640 426 +612 612 +640 360 +640 424 +640 480 +640 480 +640 426 +571 640 +377 640 +480 640 +640 480 +640 498 +480 640 +640 427 +640 426 +500 376 +640 478 +640 480 +500 375 +640 480 +640 426 +500 334 +480 640 +640 480 +640 480 +640 427 +640 425 +640 480 +480 640 +426 640 +640 563 +640 480 +480 640 +500 335 +640 480 +427 640 +480 640 +640 480 +427 640 +640 426 +640 426 +640 424 +480 640 +427 640 +500 333 +640 480 +500 375 +640 480 +640 480 +500 373 +640 417 +480 640 +640 453 +640 429 +640 360 +640 427 +640 427 +640 480 +480 640 +640 427 +640 480 +480 640 +640 404 +640 480 +640 427 +375 500 +640 427 +640 425 +640 426 +640 427 +640 329 +640 426 +333 500 +640 427 +640 426 +640 454 +640 480 +427 640 +640 374 +640 369 +640 427 +640 433 +640 427 +612 612 +640 480 +640 424 +640 480 +426 640 +640 480 +640 480 +640 434 +428 640 +480 640 +640 523 +500 400 +640 640 +640 427 +640 361 +640 432 +336 500 +500 375 +640 427 +640 480 +640 424 +640 425 +427 640 +640 480 +480 360 +482 640 +640 480 +480 640 +640 426 +640 427 +500 375 +640 480 +640 427 +612 612 +640 480 +640 425 +640 480 +363 500 +640 480 +640 480 +640 480 +640 480 +500 375 +640 490 +640 480 +640 426 +640 424 +640 427 +640 427 +640 480 +640 480 +375 500 +640 413 +640 462 +480 640 +427 640 +427 640 +572 640 +640 480 +640 289 +640 427 +640 427 +640 478 +427 640 +427 640 +640 427 +375 500 +375 500 +500 332 +640 402 +640 429 +500 337 +640 480 +640 480 +640 480 +640 480 +640 425 +640 480 +640 427 +640 457 +640 427 +500 400 +640 480 +640 480 +427 640 +640 581 +640 480 +640 480 +640 427 +640 427 +500 375 +640 480 +612 612 +640 428 +463 640 +640 436 +640 480 +500 375 +500 375 +512 640 +640 462 +640 636 +640 480 +640 474 +480 640 +640 428 +640 480 +480 640 +333 500 +640 512 +612 612 +500 333 +640 427 +640 494 +640 426 +640 427 +640 480 +640 429 +640 480 +500 334 +500 488 +378 500 +430 628 +640 429 +640 639 +640 455 +640 480 +640 427 +480 640 +640 426 +640 480 +567 378 +612 612 +640 480 +427 640 +640 427 +640 427 +640 480 +640 427 +640 480 +367 500 +640 480 +612 612 +360 240 +500 375 +589 640 +640 480 +640 425 +640 427 +425 640 +640 360 +640 427 +640 491 +640 424 +640 480 +427 640 +640 480 +640 480 +640 480 +333 500 +640 480 +426 640 +480 640 +640 427 +640 409 +640 369 +640 471 +500 407 +425 640 +375 500 +338 450 +640 429 +640 423 +640 480 +640 480 +640 480 +200 150 +640 428 +427 640 +640 480 +500 377 +640 480 +640 433 +640 478 +640 426 +640 238 +478 640 +640 480 +640 480 +640 427 +640 421 +640 480 +640 427 +640 379 +640 427 +640 426 +640 480 +500 375 +428 640 +640 480 +640 427 +640 384 +480 640 +537 640 +612 612 +427 640 +640 437 +640 480 +640 480 +480 640 +640 427 +500 379 +640 480 +640 426 +640 478 +640 427 +640 480 +435 640 +428 640 +375 500 +640 427 +500 375 +457 640 +640 427 +640 426 +640 480 +640 428 +640 426 +480 640 +640 427 +640 427 +640 480 +640 427 +640 480 +640 640 +640 480 +640 480 +427 640 +640 480 +640 427 +640 480 +640 480 +640 429 +500 375 +640 480 +436 640 +640 401 +640 306 +640 480 +640 426 +640 461 +640 429 +640 480 +500 375 +427 640 +640 384 +640 480 +500 375 +640 425 +640 427 +640 640 +640 480 +640 640 +480 640 +640 640 +480 640 +640 443 +516 640 +640 426 +480 640 +427 640 +640 480 +640 298 +425 640 +640 480 +640 480 +424 640 +640 480 +640 427 +480 640 +640 569 +375 500 +344 640 +383 640 +640 415 +640 480 +640 480 +640 480 +500 333 +640 426 +426 640 +480 640 +375 500 +640 480 +640 256 +640 427 +640 480 +500 375 +640 480 +640 480 +640 427 +640 480 +640 427 +500 375 +640 361 +640 360 +480 640 +640 424 +500 375 +640 480 +640 480 +640 424 +640 427 +640 483 +640 510 +640 480 +640 410 +640 427 +480 640 +640 350 +427 640 +640 427 +640 360 +640 480 +640 484 +640 480 +640 427 +333 500 +640 427 +640 508 +640 428 +640 480 +426 640 +640 427 +640 640 +640 480 +640 480 +640 480 +640 478 +426 640 +640 428 +640 427 +640 480 +640 640 +640 428 +463 640 +640 425 +640 480 +640 272 +640 429 +640 425 +427 640 +640 481 +640 480 +640 427 +612 612 +640 427 +448 640 +640 427 +631 640 +640 480 +640 427 +640 405 +640 524 +500 334 +640 425 +640 445 +640 427 +479 640 +480 640 +498 640 +640 514 +640 478 +640 480 +640 480 +640 480 +640 640 +640 428 +640 480 +640 480 +640 444 +640 428 +640 424 +640 428 +640 427 +640 426 +640 435 +640 426 +640 488 +480 640 +427 640 +640 458 +640 427 +490 500 +640 480 +360 640 +500 375 +512 640 +640 480 +333 500 +640 427 +640 427 +640 480 +500 335 +640 424 +640 427 +640 427 +478 640 +500 375 +640 425 +640 425 +640 459 +640 428 +640 480 +500 325 +612 612 +640 480 +375 500 +640 480 +640 480 +640 427 +640 480 +334 500 +640 480 +640 426 +628 640 +640 640 +480 640 +427 640 +640 431 +640 433 +640 480 +505 640 +480 640 +500 375 +500 333 +640 480 +640 480 +640 480 +500 412 +640 418 +640 427 +500 349 +640 427 +375 500 +640 480 +640 480 +427 640 +640 348 +359 640 +640 427 +640 429 +500 400 +500 333 +427 640 +500 281 +612 612 +612 612 +640 480 +500 333 +427 640 +640 425 +427 640 +500 374 +425 640 +640 459 +640 424 +640 424 +640 439 +500 325 +427 640 +588 640 +428 640 +500 279 +640 480 +426 640 +500 375 +640 429 +480 360 +500 333 +612 612 +640 350 +333 500 +612 612 +640 478 +640 512 +499 640 +612 612 +640 480 +612 612 +480 640 +640 480 +640 426 +640 480 +640 426 +490 640 +480 640 +426 640 +640 426 +640 427 +500 344 +376 500 +640 436 +640 480 +640 480 +427 640 +640 640 +612 612 +640 479 +640 361 +480 640 +640 478 +361 500 +640 607 +640 480 +640 427 +640 480 +500 468 +640 480 +480 640 +640 478 +640 427 +612 612 +640 480 +640 479 +640 480 +640 458 +640 425 +427 640 +640 479 +612 612 +640 427 +500 375 +640 480 +640 426 +640 480 +500 333 +640 480 +640 360 +640 640 +480 640 +427 640 +480 640 +640 425 +640 359 +640 480 +640 426 +425 640 +480 640 +640 427 +500 375 +640 480 +500 375 +338 500 +640 449 +640 427 +500 375 +427 640 +640 427 +640 480 +426 640 +640 419 +640 640 +640 428 +640 480 +640 424 +640 480 +612 612 +512 640 +640 480 +500 334 +375 500 +640 392 +640 434 +480 640 +640 426 +640 441 +640 427 +640 426 +640 509 +640 320 +640 427 +332 500 +612 612 +612 612 +640 427 +640 465 +376 500 +640 427 +480 640 +640 505 +640 427 +331 500 +426 640 +640 593 +640 426 +576 640 +640 480 +640 401 +640 428 +640 480 +500 327 +480 640 +612 612 +480 640 +640 461 +425 640 +480 640 +640 452 +480 640 +640 427 +640 480 +640 426 +375 500 +375 500 +640 427 +500 330 +640 480 +640 480 +640 480 +640 425 +375 500 +640 480 +500 333 +640 359 +640 427 +480 640 +500 390 +640 479 +500 376 +628 640 +426 640 +640 480 +640 480 +640 453 +640 480 +500 317 +640 480 +500 282 +640 426 +640 516 +640 425 +640 426 +640 461 +640 480 +640 424 +640 480 +640 427 +640 480 +480 640 +640 480 +640 434 +640 427 +640 427 +640 494 +500 281 +480 640 +640 399 +640 480 +400 640 +640 427 +426 640 +612 612 +640 480 +640 480 +640 427 +640 446 +480 640 +640 427 +640 640 +210 139 +612 612 +640 427 +640 425 +640 427 +640 480 +500 333 +640 480 +640 426 +426 640 +500 333 +480 640 +640 480 +640 425 +640 426 +640 480 +640 480 +640 424 +640 360 +640 478 +640 480 +640 426 +640 480 +640 426 +426 640 +640 480 +427 640 +480 640 +612 612 +640 512 +500 375 +640 480 +640 426 +640 480 +427 640 +427 640 +422 562 +500 334 +640 413 +525 640 +640 480 +640 427 +640 480 +640 480 +640 480 +375 500 +640 427 +640 480 +640 480 +640 640 +640 364 +640 426 +473 640 +480 640 +640 480 +480 640 +640 425 +640 480 +640 428 +640 480 +375 500 +640 427 +640 427 +640 527 +640 480 +314 470 +500 399 +640 496 +480 640 +480 640 +500 500 +640 480 +426 640 +640 427 +480 640 +640 480 +640 426 +640 425 +284 423 +640 640 +640 427 +640 414 +480 640 +612 612 +640 468 +333 500 +500 392 +640 480 +480 640 +640 480 +640 480 +640 480 +640 463 +640 413 +427 640 +640 427 +640 480 +640 640 +480 640 +500 333 +640 428 +640 480 +640 480 +640 480 +640 480 +640 431 +500 302 +640 428 +480 640 +500 332 +640 494 +500 333 +480 640 +640 426 +427 640 +640 463 +640 425 +500 392 +640 480 +500 332 +640 480 +640 426 +375 500 +640 480 +640 480 +640 480 +427 640 +640 480 +500 375 +500 375 +500 379 +640 576 +640 370 +640 481 +640 408 +640 458 +629 640 +640 480 +500 375 +640 434 +425 640 +429 640 +480 640 +640 427 +640 512 +640 480 +640 480 +640 428 +500 265 +375 500 +427 640 +640 481 +500 500 +500 334 +640 480 +640 577 +424 640 +640 427 +500 332 +640 427 +639 640 +428 640 +505 640 +569 640 +640 426 +640 427 +480 640 +500 375 +640 426 +640 485 +480 640 +500 400 +640 480 +640 480 +640 427 +640 426 +471 640 +427 640 +640 530 +333 500 +640 426 +500 351 +640 425 +640 427 +500 375 +640 427 +640 427 +427 640 +640 426 +640 426 +426 640 +640 480 +465 640 +333 500 +640 480 +640 480 +500 375 +640 480 +394 640 +640 427 +640 360 +480 640 +500 333 +640 640 +640 427 +626 640 +640 425 +640 480 +640 480 +640 385 +427 640 +640 426 +640 516 +640 480 +640 443 +640 427 +640 480 +640 425 +640 428 +640 480 +484 640 +375 500 +427 640 +640 427 +640 400 +574 640 +640 478 +487 200 +640 426 +640 512 +640 480 +640 299 +640 389 +640 320 +640 427 +480 640 +640 426 +612 612 +480 640 +640 400 +640 412 +425 640 +640 424 +640 476 +640 480 +478 640 +640 478 +640 425 +640 426 +612 612 +640 424 +640 480 +640 411 +640 512 +426 640 +640 480 +640 427 +640 428 +500 377 +427 640 +640 480 +640 449 +612 612 +640 514 +640 539 +500 281 +640 427 +640 480 +640 425 +640 480 +640 480 +640 480 +640 480 +500 375 +640 426 +640 480 +640 426 +640 480 +500 333 +640 400 +640 433 +640 480 +640 478 +640 425 +640 429 +640 480 +640 329 +640 480 +640 428 +640 427 +640 427 +500 375 +480 640 +640 480 +640 640 +480 640 +520 640 +640 514 +640 480 +640 427 +640 480 +500 375 +640 383 +500 375 +640 495 +465 640 +640 427 +480 640 +640 480 +612 612 +333 500 +480 640 +500 375 +640 480 +400 300 +500 375 +640 427 +640 427 +640 359 +612 612 +640 373 +612 612 +424 640 +640 425 +640 444 +640 480 +640 478 +640 427 +500 332 +640 480 +640 427 +640 427 +640 639 +640 480 +480 640 +640 427 +500 375 +471 640 +640 427 +500 375 +640 426 +640 426 +500 371 +640 480 +500 375 +640 428 +358 243 +640 498 +640 424 +640 480 +500 375 +640 480 +640 424 +500 341 +640 480 +640 480 +640 480 +640 432 +500 375 +640 426 +640 458 +640 480 +640 427 +640 480 +640 414 +640 480 +416 640 +640 458 +480 640 +612 612 +427 640 +640 403 +640 480 +640 512 +640 481 +640 427 +640 480 +375 500 +640 427 +640 480 +640 427 +612 612 +500 375 +500 375 +469 640 +640 480 +640 500 +640 428 +640 486 +426 640 +402 600 +640 449 +640 427 +500 375 +427 640 +640 427 +640 500 +640 427 +640 480 +500 437 +504 438 +640 479 +480 640 +500 375 +640 480 +640 640 +480 640 +640 400 +640 480 +640 426 +640 480 +640 427 +500 337 +640 427 +640 426 +635 640 +640 337 +640 416 +640 480 +555 640 +640 480 +640 480 +640 400 +640 439 +640 428 +480 640 +640 427 +640 640 +419 500 +640 426 +500 332 +500 375 +640 426 +640 426 +640 427 +640 512 +500 375 +640 427 +462 640 +427 640 +500 334 +409 640 +500 375 +640 406 +640 425 +500 375 +640 480 +612 612 +640 426 +428 640 +640 480 +640 426 +640 480 +640 427 +640 427 +424 640 +640 426 +640 480 +533 640 +640 529 +640 480 +480 640 +640 428 +640 480 +500 333 +640 426 +500 395 +640 528 +426 640 +480 640 +500 400 +640 427 +500 357 +640 480 +640 427 +612 612 +640 478 +480 640 +640 424 +640 427 +640 480 +480 640 +640 480 +424 640 +640 427 +640 152 +640 427 +480 640 +640 445 +640 427 +640 427 +640 524 +640 480 +478 640 +640 480 +640 480 +375 500 +640 427 +640 427 +640 481 +640 427 +525 350 +640 427 +640 497 +640 480 +640 426 +640 457 +428 640 +640 427 +640 427 +640 426 +640 360 +640 426 +640 480 +640 358 +640 479 +480 640 +344 640 +476 640 +640 383 +574 361 +640 480 +388 640 +640 355 +427 640 +640 480 +640 480 +568 320 +640 480 +640 426 +640 489 +481 640 +640 427 +640 497 +640 388 +640 424 +640 480 +333 500 +640 480 +640 378 +480 640 +640 427 +612 612 +375 500 +640 367 +500 386 +640 473 +640 427 +640 480 +640 344 +427 640 +480 640 +640 480 +500 500 +500 375 +640 425 +640 480 +640 428 +640 427 +468 640 +640 361 +480 640 +640 480 +640 480 +640 425 +500 374 +480 640 +640 427 +640 481 +500 500 +640 426 +480 360 +640 480 +640 514 +612 612 +427 640 +640 426 +640 480 +427 640 +640 480 +640 480 +640 480 +640 428 +480 640 +500 333 +640 426 +640 426 +640 480 +640 480 +640 480 +640 440 +640 426 +640 480 +640 480 +640 480 +640 409 +640 425 +640 427 +640 422 +640 331 +426 640 +640 427 +640 480 +640 479 +640 427 +640 480 +640 512 +640 512 +640 427 +640 478 +480 640 +640 480 +479 640 +640 424 +640 432 +428 640 +640 427 +426 640 +640 426 +480 640 +640 480 +640 480 +640 480 +640 491 +640 480 +640 427 +500 481 +640 480 +480 640 +640 426 +640 385 +640 427 +427 640 +500 375 +480 640 +640 427 +480 640 +640 480 +640 480 +640 480 +640 427 +640 425 +640 480 +500 375 +431 640 +532 640 +640 428 +500 375 +640 620 +640 445 +424 640 +640 480 +640 428 +500 375 +640 425 +640 480 +640 427 +640 426 +640 427 +640 514 +640 480 +640 477 +640 426 +640 469 +640 427 +640 480 +640 427 +640 480 +640 480 +640 480 +640 423 +640 326 +500 333 +531 640 +612 612 +640 480 +640 427 +640 480 +640 426 +640 458 +480 640 +640 480 +480 640 +640 427 +640 498 +640 480 +640 366 +480 640 +640 429 +640 424 +640 481 +446 640 +427 640 +640 427 +640 396 +640 427 +640 480 +640 480 +640 426 +489 640 +343 500 +480 640 +400 267 +500 333 +427 640 +375 500 +640 428 +640 480 +427 640 +640 640 +335 500 +640 480 +640 480 +640 360 +640 567 +427 640 +500 469 +515 640 +425 640 +640 496 +640 480 +640 360 +640 480 +480 640 +640 457 +640 480 +500 333 +640 428 +500 362 +640 448 +640 457 +319 500 +427 640 +640 480 +640 427 +375 500 +640 360 +500 333 +426 640 +480 640 +640 480 +640 480 +640 478 +427 640 +500 334 +612 612 +640 427 +612 612 +424 640 +500 332 +640 480 +427 640 +424 640 +640 425 +640 427 +640 494 +500 335 +480 640 +640 480 +427 640 +512 640 +469 640 +640 427 +640 426 +480 640 +640 428 +640 426 +640 480 +367 500 +640 480 +404 640 +640 480 +640 480 +640 496 +640 480 +480 640 +640 480 +640 480 +640 541 +480 640 +640 512 +640 640 +480 640 +640 428 +500 333 +382 640 +333 500 +480 640 +640 426 +400 289 +640 480 +640 427 +480 640 +640 480 +640 423 +640 425 +640 427 +640 424 +640 480 +640 427 +640 569 +640 448 +500 375 +640 427 +640 425 +640 404 +500 331 +480 640 +640 480 +480 640 +640 480 +640 427 +630 640 +480 640 +500 384 +640 427 +640 485 +640 616 +640 480 +640 426 +427 640 +640 480 +640 639 +640 480 +640 480 +375 500 +640 427 +640 427 +375 500 +640 480 +640 427 +640 480 +640 510 +480 640 +480 640 +471 640 +640 480 +640 427 +612 612 +480 640 +640 502 +640 425 +480 640 +640 480 +640 480 +640 471 +480 640 +640 451 +500 640 +640 480 +640 421 +640 426 +640 496 +640 480 +500 335 +429 640 +500 363 +640 433 +640 426 +640 425 +480 640 +640 480 +426 640 +640 329 +640 480 +640 424 +640 429 +480 640 +640 428 +612 612 +640 385 +480 640 +640 424 +640 360 +640 426 +640 427 +640 480 +640 427 +546 640 +640 438 +500 298 +500 375 +500 400 +480 640 +640 427 +640 426 +640 408 +473 640 +427 640 +640 428 +640 480 +640 427 +640 425 +640 449 +480 640 +427 640 +612 612 +333 500 +500 295 +640 640 +640 480 +480 640 +500 333 +640 482 +335 500 +640 427 +640 480 +640 432 +425 640 +640 428 +640 427 +640 424 +640 429 +640 479 +480 640 +640 480 +640 480 +279 500 +640 430 +640 429 +640 400 +640 426 +640 552 +640 423 +640 427 +640 427 +640 480 +640 480 +640 426 +640 428 +640 480 +640 480 +600 450 +480 640 +427 640 +480 640 +427 640 +427 640 +640 480 +640 427 +640 480 +480 640 +567 377 +427 640 +480 640 +640 509 +640 428 +640 360 +640 480 +500 375 +640 425 +640 400 +640 640 +640 427 +640 359 +412 640 +449 640 +375 500 +640 427 +640 426 +640 427 +500 335 +640 427 +640 640 +640 480 +640 428 +480 640 +640 424 +640 426 +640 480 +480 640 +640 360 +500 375 +564 640 +640 426 +640 426 +640 443 +612 612 +360 640 +437 640 +640 428 +640 480 +640 480 +640 429 +640 512 +640 480 +640 427 +550 640 +427 640 +640 429 +479 640 +640 480 +640 426 +640 426 +640 427 +640 480 +612 612 +640 427 +500 335 +640 480 +640 427 +500 333 +480 640 +640 425 +640 480 +640 433 +346 500 +640 480 +612 612 +640 480 +640 480 +640 426 +640 512 +640 427 +640 441 +487 640 +640 480 +480 640 +640 480 +426 640 +612 612 +640 486 +375 500 +428 640 +640 640 +640 480 +640 427 +640 482 +640 501 +640 480 +640 427 +427 640 +640 428 +640 480 +640 360 +640 427 +427 640 +640 427 +640 480 +640 480 +640 457 +640 428 +640 428 +612 612 +640 425 +640 498 +640 427 +640 474 +428 640 +640 503 +640 427 +640 479 +379 640 +640 427 +612 612 +640 480 +480 640 +640 427 +640 427 +443 640 +612 612 +426 640 +640 640 +640 343 +512 640 +500 375 +480 640 +640 480 +640 457 +640 427 +640 480 +427 640 +640 354 +500 375 +404 265 +425 640 +640 480 +546 640 +427 640 +640 480 +640 400 +448 336 +375 500 +427 640 +640 422 +500 333 +640 480 +640 480 +640 427 +640 425 +396 640 +500 375 +640 426 +640 450 +640 427 +640 480 +640 480 +480 640 +640 425 +500 375 +640 511 +640 427 +639 640 +640 480 +640 427 +360 640 +640 425 +640 427 +640 480 +375 500 +640 426 +640 540 +640 340 +640 480 +375 500 +640 427 +640 480 +640 480 +480 640 +640 427 +480 640 +640 548 +640 578 +500 281 +500 333 +500 400 +640 354 +640 480 +640 640 +640 425 +480 640 +640 480 +640 387 +640 480 +640 498 +333 500 +375 500 +640 426 +411 640 +640 383 +480 640 +640 480 +640 360 +640 483 +640 426 +640 426 +612 612 +640 480 +480 640 +640 463 +640 480 +640 512 +640 480 +427 640 +640 480 +480 640 +500 375 +480 640 +640 427 +640 480 +500 375 +640 427 +640 427 +426 640 +400 300 +640 480 +333 500 +466 640 +640 427 +480 640 +640 433 +640 427 +500 375 +480 640 +640 480 +640 427 +640 489 +640 427 +500 375 +640 480 +640 480 +478 640 +500 375 +640 426 +480 640 +640 550 +640 480 +640 427 +640 426 +612 612 +640 480 +640 427 +480 640 +640 486 +640 450 +640 480 +332 500 +427 640 +640 428 +640 539 +640 427 +640 480 +640 459 +640 425 +640 480 +612 612 +640 480 +640 427 +428 640 +640 480 +640 464 +426 640 +640 480 +640 359 +333 467 +640 398 +640 427 +640 429 +500 334 +640 480 +443 640 +427 640 +640 369 +640 426 +640 423 +640 427 +640 479 +640 480 +427 640 +640 427 +640 472 +640 480 +450 640 +640 453 +640 425 +640 360 +500 375 +640 425 +428 640 +400 300 +640 480 +375 500 +640 424 +640 427 +640 428 +640 479 +640 427 +640 480 +500 375 +640 425 +640 480 +640 486 +640 480 +640 480 +640 505 +480 640 +640 480 +640 442 +640 480 +428 640 +640 428 +640 505 +500 500 +428 640 +640 423 +640 425 +640 480 +640 427 +640 425 +640 480 +640 480 +500 375 +500 375 +640 480 +338 500 +640 400 +640 434 +640 425 +500 333 +612 612 +640 426 +500 375 +500 375 +640 425 +640 424 +427 640 +500 286 +640 460 +500 375 +640 454 +640 480 +500 375 +640 480 +640 426 +640 374 +479 640 +640 480 +640 480 +640 512 +640 480 +640 427 +640 360 +640 427 +376 500 +640 427 +640 424 +483 640 +640 480 +500 400 +480 640 +640 478 +500 375 +429 640 +425 640 +427 640 +640 480 +640 479 +332 500 +503 640 +640 427 +640 427 +640 480 +500 333 +640 480 +427 640 +500 333 +480 640 +640 479 +407 640 +640 427 +500 375 +640 427 +375 500 +480 640 +456 640 +612 612 +500 341 +552 640 +500 375 +640 427 +640 513 +640 581 +480 640 +640 427 +640 481 +333 500 +640 480 +640 481 +427 640 +640 426 +350 263 +500 375 +640 480 +500 375 +640 424 +553 640 +640 427 +640 426 +427 640 +640 423 +640 427 +640 433 +426 640 +640 427 +428 640 +640 513 +640 480 +640 427 +424 640 +640 425 +640 426 +640 480 +640 426 +640 394 +640 426 +640 480 +640 427 +640 426 +426 640 +634 640 +640 517 +427 640 +640 466 +375 500 +500 354 +500 375 +427 640 +640 425 +240 320 +427 640 +640 429 +640 426 +640 428 +640 394 +640 498 +640 480 +640 480 +427 640 +640 480 +640 425 +640 427 +427 640 +640 480 +640 427 +640 428 +640 480 +375 500 +640 428 +640 480 +640 448 +612 612 +640 562 +338 640 +500 371 +500 333 +640 426 +640 480 +500 333 +640 480 +640 480 +640 480 +480 640 +640 429 +640 428 +640 413 +640 483 +427 640 +333 500 +500 337 +640 427 +640 427 +640 451 +640 480 +500 341 +640 428 +640 428 +640 480 +640 480 +640 480 +640 428 +375 500 +640 427 +375 500 +640 640 +640 480 +640 426 +640 480 +360 270 +480 640 +640 480 +640 480 +640 478 +640 480 +500 333 +480 640 +640 408 +640 480 +457 640 +427 640 +624 640 +500 333 +640 409 +640 480 +640 429 +478 640 +375 500 +375 500 +640 429 +640 640 +640 429 +640 424 +640 427 +640 480 +640 426 +640 451 +640 426 +640 427 +640 424 +640 480 +640 480 +469 640 +640 480 +640 480 +640 425 +432 640 +427 640 +434 500 +640 427 +640 427 +427 640 +480 640 +427 640 +500 375 +640 427 +426 640 +640 426 +640 427 +640 473 +427 640 +640 480 +427 640 +640 480 +480 640 +500 325 +640 384 +640 480 +640 427 +500 324 +427 640 +640 424 +640 480 +640 480 +480 640 +427 640 +426 640 +640 480 +500 375 +640 427 +428 640 +640 295 +640 478 +640 480 +427 640 +640 428 +482 640 +418 640 +640 480 +480 640 +480 640 +640 427 +640 480 +612 612 +639 640 +640 480 +375 500 +640 480 +640 427 +640 480 +524 640 +640 427 +425 640 +640 427 +427 640 +640 426 +640 427 +640 361 +640 480 +640 480 +640 424 +640 480 +640 480 +640 426 +640 480 +640 428 +500 377 +423 640 +480 640 +640 464 +640 426 +640 496 +500 375 +640 508 +640 426 +427 640 +500 326 +424 640 +640 480 +640 426 +640 383 +580 329 +334 500 +500 333 +640 424 +640 346 +640 472 +640 537 +640 640 +375 500 +427 640 +640 480 +640 424 +640 480 +427 640 +640 480 +480 640 +612 612 +500 375 +480 640 +640 427 +640 426 +640 480 +500 375 +375 500 +640 427 +640 360 +640 384 +640 480 +480 640 +640 614 +612 612 +500 375 +438 500 +640 480 +640 427 +640 480 +375 500 +640 271 +428 640 +640 521 +640 426 +640 480 +640 426 +640 480 +640 481 +612 612 +640 427 +640 426 +500 281 +429 640 +640 486 +375 500 +640 480 +640 480 +427 640 +640 480 +640 428 +375 500 +640 478 +612 612 +640 480 +640 480 +500 330 +375 500 +427 640 +640 428 +480 640 +640 428 +640 398 +480 640 +446 640 +640 480 +375 500 +640 481 +640 427 +640 398 +478 640 +476 640 +640 427 +640 480 +640 428 +640 427 +640 480 +640 479 +640 480 +427 640 +640 426 +500 375 +500 375 +640 428 +480 640 +640 425 +640 543 +412 640 +500 375 +640 404 +480 640 +500 375 +640 524 +640 426 +640 480 +500 375 +640 427 +480 640 +428 640 +500 333 +640 480 +612 612 +640 427 +427 640 +514 640 +640 434 +640 424 +640 359 +480 640 +640 480 +640 483 +500 375 +640 480 +640 425 +612 612 +640 480 +640 429 +480 640 +640 427 +640 512 +640 401 +612 612 +500 375 +640 512 +640 480 +500 375 +552 640 +640 480 +640 480 +640 519 +521 640 +640 480 +640 427 +500 375 +640 480 +640 426 +640 426 +640 427 +500 375 +427 640 +640 429 +640 546 +427 640 +500 335 +640 480 +640 480 +640 428 +640 481 +640 407 +427 640 +640 480 +500 353 +427 640 +640 426 +480 640 +640 480 +640 378 +640 480 +640 311 +640 359 +640 426 +329 500 +640 480 +640 480 +640 427 +640 425 +500 332 +600 600 +400 542 +640 425 +640 512 +640 480 +427 640 +640 427 +500 375 +640 480 +480 640 +427 640 +500 375 +640 631 +640 480 +640 361 +500 375 +640 427 +640 428 +640 424 +480 640 +640 428 +640 480 +640 480 +480 640 +640 427 +640 480 +500 375 +513 640 +478 640 +500 382 +640 425 +640 609 +474 640 +500 373 +640 427 +640 377 +425 640 +640 480 +475 640 +640 479 +640 427 +613 640 +480 640 +640 480 +480 640 +640 378 +640 360 +449 640 +360 640 +640 479 +640 480 +480 640 +640 440 +640 640 +640 360 +500 375 +640 427 +640 427 +640 480 +640 360 +612 612 +500 375 +480 640 +640 427 +640 427 +640 575 +640 480 +640 480 +480 640 +640 426 +640 480 +282 500 +640 480 +640 429 +640 315 +640 480 +640 479 +640 480 +500 500 +640 418 +640 425 +640 640 +640 428 +640 480 +640 427 +640 426 +640 427 +411 640 +480 640 +640 480 +500 375 +640 480 +640 528 +640 426 +500 358 +612 612 +640 478 +640 425 +640 522 +640 428 +640 426 +640 428 +640 484 +427 640 +640 426 +457 640 +320 213 +640 427 +480 640 +640 425 +640 480 +640 480 +640 459 +428 640 +612 612 +640 480 +640 480 +640 427 +640 427 +516 640 +640 383 +640 640 +640 425 +500 333 +480 640 +640 427 +427 640 +640 584 +375 500 +426 640 +640 504 +640 480 +640 414 +640 427 +640 502 +500 364 +640 480 +461 640 +640 440 +375 500 +640 480 +640 476 +512 640 +640 439 +640 359 +640 480 +640 425 +640 427 +640 640 +500 334 +375 500 +333 500 +500 332 +640 428 +640 426 +640 428 +427 640 +640 480 +640 427 +428 640 +612 612 +640 426 +640 480 +640 427 +640 391 +640 512 +640 427 +640 480 +500 333 +640 427 +463 640 +500 331 +640 480 +640 592 +640 462 +640 480 +640 428 +640 480 +640 361 +333 500 +480 640 +640 427 +480 640 +640 427 +640 480 +549 640 +399 640 +640 426 +640 333 +640 463 +298 500 +480 640 +640 426 +640 427 +640 413 +640 442 +640 428 +640 427 +426 640 +640 424 +640 522 +483 640 +640 428 +640 480 +480 640 +640 428 +640 480 +640 428 +427 640 +427 640 +640 491 +640 480 +640 428 +640 480 +480 640 +480 640 +640 428 +640 427 +500 375 +640 480 +500 375 +640 463 +640 386 +640 480 +500 375 +640 427 +640 480 +309 640 +640 480 +640 426 +419 640 +480 640 +612 612 +500 375 +640 480 +480 640 +500 375 +373 640 +640 480 +640 426 +128 160 +640 427 +500 375 +480 640 +500 400 +427 640 +640 400 +539 445 +640 427 +640 424 +428 640 +480 640 +640 425 +500 375 +479 640 +640 427 +640 427 +480 640 +640 478 +640 429 +640 374 +640 480 +500 500 +640 427 +640 440 +640 480 +612 612 +439 640 +640 457 +612 612 +640 481 +427 640 +640 480 +640 427 +640 480 +640 426 +477 640 +640 458 +640 426 +500 375 +640 428 +640 480 +375 500 +500 334 +640 480 +640 480 +640 489 +428 640 +640 480 +500 375 +640 427 +640 480 +640 426 +640 512 +640 480 +640 293 +401 640 +640 480 +359 500 +323 500 +427 640 +480 640 +640 424 +640 427 +500 375 +640 409 +480 640 +640 424 +640 480 +500 281 +640 427 +640 480 +640 426 +375 500 +640 480 +640 480 +612 612 +640 533 +416 350 +640 480 +640 427 +375 500 +640 427 +640 640 +640 480 +640 428 +640 412 +640 480 +640 480 +640 480 +640 427 +640 359 +612 612 +640 427 +491 500 +640 427 +427 640 +287 432 +426 640 +334 500 +320 240 +359 500 +500 375 +640 427 +640 339 +640 480 +432 288 +496 640 +500 335 +640 426 +427 640 +517 640 +640 529 +640 425 +640 383 +640 480 +390 640 +640 427 +333 500 +640 480 +640 462 +640 427 +640 480 +640 433 +480 640 +640 436 +425 640 +500 400 +640 479 +640 427 +640 428 +640 427 +640 480 +576 401 +640 480 +640 480 +640 426 +640 480 +375 500 +640 426 +478 640 +640 480 +640 426 +640 427 +640 480 +425 640 +640 480 +269 640 +480 640 +500 375 +640 480 +480 640 +640 421 +640 452 +426 640 +459 500 +640 427 +640 428 +640 427 +640 426 +640 480 +480 640 +640 427 +640 433 +640 480 +427 640 +640 472 +640 427 +640 480 +640 331 +480 640 +640 427 +640 416 +509 640 +500 375 +640 480 +640 480 +640 426 +640 428 +640 480 +640 425 +640 448 +640 480 +640 428 +480 640 +640 474 +640 428 +400 500 +640 480 +500 281 +480 640 +480 640 +640 443 +640 533 +640 427 +640 424 +480 640 +640 640 +500 375 +640 351 +640 428 +500 376 +640 427 +421 640 +640 480 +640 480 +640 360 +640 427 +640 427 +640 451 +640 428 +640 480 +640 369 +640 640 +640 480 +433 640 +640 433 +640 427 +640 424 +480 640 +427 640 +640 428 +640 427 +480 640 +640 480 +640 360 +640 480 +640 480 +500 375 +640 480 +640 480 +612 612 +640 426 +640 427 +640 480 +456 640 +640 427 +640 420 +480 640 +640 427 +640 457 +640 508 +640 457 +640 427 +640 427 +640 427 +640 429 +640 539 +640 488 +640 480 +427 640 +640 424 +640 543 +521 640 +640 480 +500 375 +640 364 +444 640 +640 427 +640 461 +480 640 +640 427 +479 640 +420 640 +640 505 +375 500 +640 450 +640 427 +640 333 +640 480 +640 427 +640 425 +640 426 +640 428 +640 427 +640 427 +471 640 +480 640 +640 640 +424 640 +500 334 +640 544 +640 386 +640 427 +427 640 +640 391 +640 480 +640 536 +425 640 +640 480 +377 500 +358 500 +480 640 +640 427 +640 480 +427 640 +500 303 +640 480 +640 426 +640 640 +640 398 +640 433 +640 428 +640 480 +450 350 +640 457 +451 640 +640 576 +640 427 +427 640 +640 523 +640 429 +428 640 +640 425 +480 640 +640 410 +479 640 +640 480 +640 427 +500 333 +459 640 +640 427 +640 360 +513 640 +427 640 +640 406 +640 603 +500 331 +640 427 +409 500 +640 427 +640 480 +640 427 +480 640 +478 640 +640 480 +612 612 +480 640 +640 427 +640 480 +500 332 +375 500 +600 600 +640 427 +480 640 +612 612 +500 331 +480 640 +640 480 +640 480 +640 427 +640 458 +640 429 +640 428 +640 427 +640 543 +640 480 +500 325 +500 318 +640 426 +640 480 +640 640 +480 640 +332 500 +640 427 +480 640 +640 427 +375 640 +640 480 +375 500 +427 640 +480 640 +640 480 +640 427 +427 640 +640 428 +640 424 +640 480 +640 468 +640 427 +640 480 +640 480 +640 463 +640 513 +640 427 +640 480 +640 425 +640 400 +640 427 +640 425 +640 480 +640 476 +640 480 +640 428 +640 428 +500 375 +500 334 +640 480 +640 480 +500 357 +426 640 +640 480 +640 480 +427 640 +427 640 +480 640 +480 640 +497 500 +480 640 +479 640 +640 428 +640 426 +640 640 +640 426 +640 427 +500 375 +640 452 +640 427 +500 347 +640 426 +612 612 +640 480 +421 640 +640 427 +640 432 +640 480 +640 427 +500 375 +612 612 +640 427 +364 500 +402 600 +640 439 +478 640 +640 478 +375 500 +640 480 +640 427 +640 480 +640 480 +640 427 +640 426 +640 480 +640 427 +640 427 +640 393 +480 640 +612 612 +332 500 +426 640 +640 427 +395 640 +640 480 +640 480 +480 640 +640 480 +640 426 +480 640 +640 214 +640 496 +640 426 +419 640 +500 333 +500 400 +640 478 +640 318 +500 500 +640 426 +612 612 +640 480 +640 428 +640 427 +640 360 +640 424 +640 456 +567 640 +640 480 +466 640 +500 345 +640 480 +427 640 +640 480 +500 333 +343 500 +640 480 +640 480 +640 480 +640 640 +478 640 +375 500 +640 480 +640 421 +640 426 +640 480 +640 480 +640 480 +640 320 +640 428 +640 480 +640 449 +640 360 +640 480 +640 426 +640 456 +640 427 +640 426 +640 480 +640 360 +500 375 +640 427 +360 640 +640 427 +640 426 +640 478 +640 398 +640 425 +640 430 +462 640 +619 640 +640 379 +640 425 +480 640 +640 428 +640 427 +426 640 +427 640 +333 500 +427 640 +640 394 +640 426 +640 480 +640 383 +640 267 +500 417 +604 403 +427 640 +478 640 +640 400 +640 480 +500 334 +640 533 +640 427 +640 480 +640 427 +640 480 +640 408 +640 426 +640 480 +640 425 +640 428 +640 427 +480 640 +640 495 +188 285 +640 429 +640 480 +427 640 +640 431 +612 612 +640 424 +640 427 +640 426 +500 333 +640 459 +341 500 +640 426 +500 375 +480 273 +640 480 +640 425 +425 640 +640 480 +640 426 +640 480 +425 640 +427 640 +640 427 +480 640 +640 480 +480 640 +480 640 +244 183 +480 640 +640 428 +500 375 +500 375 +640 427 +480 640 +640 384 +640 344 +640 523 +640 427 +427 640 +640 480 +500 356 +480 640 +332 500 +640 640 +612 612 +500 375 +640 426 +574 640 +479 640 +640 491 +427 640 +640 480 +500 333 +640 622 +640 427 +512 640 +640 480 +640 425 +480 640 +640 425 +640 466 +500 375 +640 427 +640 437 +640 480 +375 500 +425 640 +640 480 +640 594 +478 640 +375 500 +640 480 +640 425 +640 424 +427 640 +640 400 +640 480 +480 640 +500 452 +640 480 +427 640 +612 612 +427 640 +333 500 +640 427 +425 640 +640 480 +640 425 +640 427 +500 407 +640 429 +640 480 +500 375 +640 480 +640 427 +500 375 +381 640 +640 483 +427 640 +427 640 +640 419 +640 519 +640 427 +640 401 +612 612 +640 279 +640 480 +640 399 +500 375 +640 458 +640 481 +640 427 +349 614 +640 480 +481 640 +428 640 +640 480 +480 640 +480 640 +459 640 +640 427 +640 478 +640 427 +640 426 +640 425 +640 360 +640 480 +428 640 +480 640 +640 480 +640 426 +640 478 +640 427 +640 480 +640 453 +427 640 +640 640 +640 426 +428 640 +640 444 +640 480 +640 427 +640 480 +640 321 +640 360 +640 480 +640 359 +480 640 +640 480 +404 640 +640 429 +640 480 +500 375 +640 430 +640 480 +640 417 +640 480 +640 448 +469 640 +640 480 +425 640 +333 500 +640 481 +640 480 +640 427 +640 423 +428 640 +640 430 +640 464 +640 427 +640 480 +640 535 +424 640 +640 512 +640 480 +640 427 +500 375 +640 480 +500 375 +640 480 +640 449 +640 480 +500 375 +640 427 +640 427 +427 640 +640 480 +640 426 +640 436 +640 413 +465 640 +640 480 +640 426 +425 640 +640 428 +428 640 +640 359 +640 398 +640 480 +640 480 +640 497 +640 426 +640 328 +500 375 +482 640 +480 640 +339 500 +501 640 +640 427 +640 433 +640 428 +640 480 +500 335 +640 428 +640 344 +640 480 +500 375 +640 427 +640 426 +480 640 +640 425 +640 427 +640 427 +640 359 +640 480 +473 640 +481 640 +576 640 +640 640 +600 464 +640 424 +640 427 +640 426 +640 480 +481 640 +500 461 +640 278 +480 640 +500 345 +640 427 +640 480 +612 612 +640 345 +480 640 +427 640 +640 480 +640 480 +640 480 +640 427 +640 426 +640 383 +410 500 +500 375 +640 480 +640 640 +333 500 +640 480 +640 427 +640 480 +640 640 +640 425 +640 427 +480 640 +640 427 +500 374 +612 612 +333 500 +640 569 +640 427 +640 430 +640 428 +500 375 +640 480 +375 500 +640 427 +640 480 +480 640 +640 427 +640 480 +640 490 +278 500 +640 480 +542 640 +640 480 +640 480 +333 500 +640 427 +640 427 +640 470 +640 400 +640 419 +480 640 +640 426 +500 375 +640 480 +640 480 +427 640 +640 426 +640 480 +512 640 +640 480 +424 640 +640 341 +640 480 +640 360 +480 640 +640 480 +640 427 +375 500 +640 427 +426 640 +640 427 +480 640 +640 427 +500 357 +427 640 +640 426 +640 444 +480 640 +640 426 +640 478 +640 480 +640 365 +640 517 +480 640 +640 480 +640 426 +333 500 +640 427 +640 480 +463 640 +640 480 +640 427 +640 429 +640 378 +424 640 +640 480 +427 640 +640 453 +640 480 +426 640 +640 427 +640 428 +640 424 +640 480 +427 640 +640 480 +640 480 +500 375 +640 427 +640 480 +640 468 +442 640 +640 480 +480 640 +600 400 +640 427 +640 480 +640 480 +640 427 +640 427 +640 451 +640 426 +640 426 +640 449 +427 640 +640 511 +391 640 +640 496 +500 375 +640 480 +640 480 +640 427 +640 640 +500 381 +640 425 +640 427 +640 480 +640 480 +640 480 +480 640 +500 142 +640 480 +426 640 +457 640 +618 640 +640 480 +424 640 +640 348 +640 360 +640 480 +429 640 +640 480 +429 640 +480 640 +640 424 +640 428 +640 480 +512 640 +640 428 +640 480 +640 427 +478 640 +640 471 +640 429 +640 640 +640 427 +500 375 +640 359 +640 425 +640 480 +640 444 +640 425 +640 480 +640 398 +640 640 +640 426 +640 480 +640 427 +500 333 +640 425 +640 424 +500 375 +640 506 +500 333 +640 425 +480 640 +640 428 +480 640 +640 425 +640 427 +375 500 +640 620 +640 480 +640 446 +640 427 +640 456 +422 640 +461 640 +425 640 +640 480 +427 640 +640 214 +612 612 +640 360 +480 640 +500 333 +640 480 +640 470 +640 427 +640 427 +612 612 +640 480 +640 480 +640 480 +640 480 +640 480 +640 427 +640 480 +640 480 +640 425 +640 480 +612 612 +426 640 +640 480 +375 500 +497 640 +397 640 +640 480 +357 500 +640 480 +480 640 +640 427 +640 480 +640 433 +500 375 +640 480 +640 427 +640 482 +640 427 +640 427 +640 480 +500 333 +640 419 +640 558 +640 478 +640 426 +640 449 +640 480 +500 375 +333 500 +640 384 +500 332 +480 640 +640 425 +640 426 +640 398 +640 430 +640 369 +640 427 +432 640 +640 480 +640 360 +500 375 +640 426 +640 427 +500 291 +640 640 +640 426 +500 375 +640 426 +500 375 +640 424 +640 640 +640 480 +640 427 +640 480 +640 427 +456 640 +640 480 +480 640 +640 387 +640 491 +640 478 +640 426 +640 427 +640 508 +640 564 +428 640 +640 480 +640 480 +500 401 +425 640 +640 360 +640 427 +640 573 +480 640 +640 480 +640 427 +640 360 +480 640 +640 427 +500 375 +640 480 +640 480 +640 426 +640 480 +612 612 +640 480 +343 640 +640 427 +640 423 +640 358 +640 423 +546 640 +640 480 +640 428 +640 427 +640 373 +640 427 +425 640 +640 562 +612 612 +500 333 +432 640 +640 408 +640 426 +640 480 +500 333 +611 425 +427 640 +640 640 +500 332 +500 375 +640 425 +640 478 +640 427 +640 480 +640 480 +360 640 +640 303 +640 480 +640 427 +640 361 +447 400 +428 500 +640 427 +500 252 +640 480 +640 427 +640 640 +500 375 +640 440 +427 640 +452 640 +640 480 +640 480 +480 640 +640 614 +640 427 +500 375 +640 480 +640 480 +640 400 +640 480 +500 330 +640 480 +427 640 +640 600 +640 426 +640 479 +640 553 +500 375 +512 640 +640 427 +427 640 +500 400 +640 426 +500 333 +424 640 +393 500 +640 427 +640 400 +640 480 +640 480 +353 500 +640 425 +640 294 +500 334 +640 490 +640 424 +500 375 +512 640 +500 383 +375 500 +412 640 +640 424 +500 378 +640 480 +640 427 +500 333 +640 440 +500 347 +480 640 +640 480 +640 426 +426 640 +640 480 +640 426 +640 360 +640 427 +640 480 +640 480 +640 457 +480 640 +640 427 +640 428 +640 426 +640 425 +640 427 +375 500 +640 348 +640 427 +640 427 +427 640 +428 640 +640 363 +640 427 +640 360 +428 640 +640 504 +426 640 +640 427 +333 500 +640 426 +640 427 +640 426 +640 480 +500 437 +220 186 +640 480 +640 640 +640 480 +640 406 +480 640 +500 357 +640 480 +640 424 +373 640 +464 640 +640 478 +427 640 +640 480 +612 612 +640 429 +640 480 +640 426 +640 480 +500 400 +500 335 +640 427 +360 640 +426 640 +480 640 +480 640 +429 640 +640 427 +380 324 +462 640 +480 640 +480 640 +640 426 +640 427 +640 480 +640 426 +640 424 +640 490 +640 499 +640 480 +640 427 +457 640 +500 329 +640 480 +480 640 +640 385 +640 480 +640 241 +640 480 +480 640 +640 426 +640 479 +333 500 +640 640 +500 323 +500 340 +640 412 +640 426 +640 426 +640 481 +640 424 +640 480 +640 437 +640 425 +512 640 +640 480 +640 426 +640 408 +640 376 +640 480 +640 480 +640 427 +425 640 +640 478 +640 426 +427 640 +375 500 +500 375 +640 480 +480 640 +640 427 +375 500 +500 334 +640 427 +640 382 +640 425 +640 480 +640 480 +640 480 +640 458 +640 427 +640 480 +427 640 +640 640 +640 480 +640 480 +426 640 +640 427 +505 640 +640 480 +640 360 +428 640 +640 426 +640 427 +480 640 +640 425 +640 479 +640 480 +640 513 +426 640 +427 640 +239 360 +480 640 +640 363 +500 428 +640 427 +640 491 +640 512 +640 426 +500 286 +640 427 +612 612 +640 384 +513 640 +500 375 +427 640 +640 426 +428 640 +640 480 +640 424 +640 428 +640 429 +640 360 +640 426 +457 640 +640 480 +333 500 +343 500 +480 640 +640 307 +640 480 +640 371 +375 500 +640 427 +640 427 +640 427 +640 428 +500 307 +303 640 +640 426 +500 333 +640 426 +640 427 +640 593 +480 640 +640 360 +640 480 +640 427 +426 640 +640 480 +500 375 +500 375 +480 640 +640 480 +640 364 +640 480 +375 500 +640 480 +640 427 +640 427 +640 427 +374 500 +457 640 +500 333 +375 500 +640 426 +640 480 +640 425 +640 428 +640 428 +427 640 +640 460 +373 640 +428 640 +427 640 +640 480 +427 640 +640 360 +640 433 +640 480 +640 426 +640 427 +640 480 +640 428 +640 426 +640 480 +557 640 +640 424 +568 640 +640 480 +640 480 +375 500 +640 425 +480 640 +640 480 +640 480 +440 470 +640 360 +500 375 +428 640 +640 427 +640 480 +640 427 +480 640 +390 640 +640 480 +640 427 +640 478 +426 640 +640 480 +458 640 +427 640 +427 640 +479 640 +375 500 +640 427 +425 640 +640 428 +427 640 +640 480 +640 483 +640 480 +640 383 +640 480 +480 640 +640 425 +426 640 +443 640 +640 429 +426 640 +640 480 +640 480 +640 480 +640 427 +480 640 +640 480 +640 640 +640 480 +436 640 +640 480 +500 333 +640 480 +640 426 +640 429 +500 375 +640 426 +429 640 +640 434 +640 491 +640 426 +480 640 +500 375 +640 480 +375 500 +640 428 +640 480 +480 640 +640 476 +640 427 +640 425 +500 375 +612 612 +500 167 +640 480 +640 426 +640 584 +640 480 +480 640 +464 640 +640 480 +480 640 +395 640 +640 582 +500 375 +640 480 +427 640 +640 480 +640 480 +640 480 +500 342 +640 427 +640 480 +500 282 +417 500 +500 375 +443 640 +480 640 +640 475 +640 640 +640 427 +427 640 +480 640 +640 427 +500 375 +429 640 +640 480 +640 480 +640 427 +640 480 +640 480 +640 480 +640 480 +640 427 +640 480 +640 424 +640 480 +640 427 +640 427 +640 480 +640 512 +425 640 +640 401 +640 428 +640 428 +640 480 +640 427 +640 423 +612 612 +500 333 +640 421 +640 427 +640 480 +640 480 +500 375 +640 478 +640 480 +427 640 +640 427 +640 478 +478 640 +640 427 +640 427 +428 640 +612 612 +640 426 +640 433 +480 640 +640 480 +360 640 +375 500 +612 612 +640 414 +640 360 +426 640 +521 640 +640 479 +640 427 +427 640 +640 408 +640 480 +640 480 +640 427 +640 428 +640 360 +640 446 +640 480 +640 400 +640 427 +640 480 +640 458 +640 424 +640 427 +426 640 +500 358 +640 426 +640 425 +500 375 +640 427 +640 414 +640 426 +427 640 +640 502 +640 480 +500 500 +640 231 +640 427 +640 480 +640 523 +427 640 +426 640 +640 480 +640 427 +640 427 +480 640 +640 413 +640 480 +640 427 +640 428 +500 333 +480 640 +640 426 +640 480 +480 640 +361 640 +375 500 +640 426 +640 480 +427 640 +480 640 +425 640 +480 640 +375 500 +640 480 +500 197 +500 375 +640 457 +640 424 +640 480 +640 425 +640 361 +640 480 +640 421 +497 640 +612 612 +640 429 +480 640 +640 480 +640 480 +640 480 +640 480 +640 247 +640 480 +427 640 +640 421 +640 427 +427 640 +612 612 +640 427 +400 500 +500 333 +640 480 +640 427 +640 480 +640 427 +500 375 +480 640 +640 427 +640 427 +360 640 +500 375 +640 480 +640 480 +640 427 +640 480 +640 512 +640 426 +640 425 +640 359 +640 425 +640 425 +640 480 +480 640 +640 480 +426 640 +640 426 +640 432 +640 455 +640 425 +640 640 +640 426 +640 440 +480 640 +640 425 +509 640 +640 480 +640 480 +640 480 +640 426 +640 427 +640 480 +640 424 +500 331 +427 640 +480 640 +426 640 +640 360 +640 153 +612 612 +640 361 +604 640 +640 452 +640 411 +478 640 +640 480 +612 612 +500 400 +640 480 +640 480 +640 427 +640 480 +640 427 +480 640 +426 640 +640 427 +640 427 +612 612 +500 469 +640 428 +640 480 +640 426 +640 480 +640 480 +640 448 +640 425 +640 480 +375 500 +640 426 +612 612 +438 640 +383 640 +480 640 +640 478 +599 363 +612 612 +480 640 +640 424 +640 427 +640 480 +640 360 +500 400 +640 401 +640 480 +640 473 +640 427 +640 480 +640 427 +640 480 +640 428 +640 480 +640 480 +640 480 +640 480 +640 427 +480 640 +640 427 +640 480 +640 427 +640 320 +640 434 +500 375 +500 375 +640 427 +480 640 +500 375 +640 427 +640 425 +640 426 +640 480 +640 427 +640 480 +640 424 +425 640 +640 480 +640 427 +640 539 +640 480 +640 429 +640 480 +640 483 +640 426 +640 480 +640 428 +383 640 +500 374 +640 480 +640 281 +640 425 +640 427 +640 480 +640 428 +640 427 +500 375 +640 426 +640 413 +427 640 +500 448 +640 426 +499 640 +640 426 +480 640 +640 426 +640 428 +640 361 +427 640 +500 333 +480 640 +640 160 +640 503 +640 480 +640 427 +640 361 +640 480 +500 475 +481 640 +640 480 +431 640 +640 427 +500 375 +640 427 +427 640 +640 480 +640 427 +640 480 +427 640 +480 640 +500 375 +640 396 +640 480 +428 640 +640 427 +452 640 +612 612 +500 332 +427 640 +640 427 +640 480 +488 640 +640 427 +640 426 +535 640 +640 480 +480 640 +640 426 +640 576 +640 360 +626 640 +500 375 +427 640 +427 640 +640 480 +640 480 +640 426 +640 480 +480 640 +640 480 +426 640 +480 640 +640 322 +640 427 +375 500 +640 425 +480 640 +500 242 +427 640 +428 640 +334 500 +640 461 +640 480 +640 480 +640 428 +640 480 +640 586 +468 640 +640 427 +640 480 +640 480 +640 549 +480 640 +640 427 +480 640 +612 612 +640 480 +640 427 +640 427 +640 551 +480 640 +640 480 +640 480 +640 427 +375 500 +640 427 +640 360 +480 640 +478 640 +500 332 +640 480 +427 640 +428 640 +481 640 +612 612 +375 500 +640 480 +500 375 +640 480 +512 640 +640 427 +640 425 +422 640 +500 375 +480 640 +640 424 +640 427 +480 640 +640 480 +640 480 +427 640 +640 480 +480 640 +612 612 +640 480 +640 427 +427 640 +500 375 +640 468 +640 426 +427 640 +427 640 +640 427 +427 640 +480 640 +640 480 +640 480 +480 640 +640 480 +640 497 +640 426 +640 640 +640 480 +640 480 +640 425 +375 500 +640 427 +500 375 +500 333 +640 508 +640 480 +500 400 +640 427 +640 480 +480 640 +640 427 +480 640 +640 480 +383 640 +640 439 +640 480 +640 427 +640 480 +500 338 +375 500 +640 640 +640 480 +640 426 +480 640 +367 640 +626 640 +480 640 +640 426 +336 640 +640 376 +480 640 +640 559 +500 400 +640 427 +640 427 +640 426 +640 425 +640 480 +640 480 +640 429 +477 640 +640 480 +640 438 +375 500 +640 480 +500 333 +612 612 +640 360 +480 640 +640 480 +493 640 +640 427 +640 363 +640 481 +480 640 +375 500 +640 429 +478 640 +640 480 +640 427 +640 372 +640 427 +640 427 +480 640 +640 427 +459 640 +500 335 +640 428 +640 480 +640 639 +640 432 +500 375 +500 333 +500 333 +500 400 +640 426 +640 480 +640 640 +640 478 +640 480 +640 426 +640 360 +640 480 +640 426 +640 428 +640 480 +640 536 +500 604 +640 480 +480 640 +500 375 +500 375 +500 332 +640 339 +612 612 +640 480 +640 480 +640 458 +427 640 +480 640 +640 424 +640 426 +480 640 +435 500 +428 640 +640 480 +500 345 +425 640 +640 480 +427 640 +429 640 +612 612 +640 427 +480 640 +612 612 +610 411 +640 427 +640 381 +333 500 +480 640 +640 393 +640 427 +640 522 +640 562 +640 480 +500 375 +640 427 +612 612 +375 500 +640 426 +425 640 +480 640 +612 612 +424 640 +640 512 +500 375 +427 640 +426 640 +612 612 +640 480 +640 480 +280 500 +500 333 +640 480 +640 427 +640 427 +640 548 +640 480 +640 428 +640 442 +640 628 +640 431 +640 427 +483 640 +640 480 +500 280 +640 480 +480 640 +457 640 +640 480 +640 480 +640 400 +500 375 +420 640 +640 428 +640 424 +500 332 +500 289 +428 640 +432 640 +640 480 +640 404 +640 480 +380 500 +500 375 +640 427 +640 520 +640 480 +640 480 +640 423 +500 333 +640 480 +640 427 +640 476 +640 426 +500 333 +640 424 +640 480 +500 375 +480 640 +640 426 +375 500 +457 640 +640 432 +640 480 +640 488 +640 508 +640 312 +640 368 +640 426 +640 379 +640 426 +640 426 +500 333 +640 480 +640 478 +640 639 +640 425 +640 478 +427 640 +640 480 +640 506 +640 480 +500 335 +640 425 +500 379 +640 427 +500 375 +476 640 +640 426 +500 375 +640 427 +500 335 +426 640 +640 627 +640 480 +640 480 +640 480 +640 425 +640 480 +428 640 +360 640 +640 480 +640 428 +500 375 +640 427 +640 480 +640 493 +640 480 +427 640 +640 426 +500 254 +590 443 +640 480 +360 640 +640 480 +640 408 +640 480 +480 640 +640 480 +425 640 +640 449 +425 640 +640 640 +640 480 +635 640 +640 427 +640 360 +640 480 +640 383 +640 480 +375 500 +640 427 +640 427 +640 427 +640 426 +640 360 +640 424 +640 427 +640 640 +480 640 +640 480 +640 428 +640 427 +640 480 +640 480 +640 480 +640 427 +480 640 +640 512 +640 294 +640 428 +480 640 +640 640 +640 424 +640 426 +640 426 +640 480 +640 480 +640 480 +640 480 +640 451 +551 640 +612 612 +427 640 +500 375 +640 426 +640 426 +640 426 +493 500 +428 640 +640 480 +640 427 +480 640 +640 480 +480 640 +640 480 +480 640 +640 427 +640 480 +640 426 +640 428 +640 480 +640 480 +640 360 +640 480 +640 428 +640 427 +640 480 +640 428 +640 424 +480 640 +640 425 +640 425 +640 480 +640 478 +640 480 +640 480 +640 480 +612 612 +480 640 +640 398 +500 375 +427 640 +480 640 +640 548 +640 426 +640 504 +480 640 +640 427 +640 478 +427 640 +640 427 +640 429 +500 333 +286 427 +612 612 +500 375 +563 640 +454 289 +429 640 +640 427 +427 640 +640 640 +500 375 +426 640 +500 281 +640 387 +640 428 +640 427 +640 426 +480 640 +480 640 +640 480 +640 425 +640 425 +640 480 +429 640 +640 426 +528 640 +640 428 +640 426 +500 335 +640 512 +500 375 +640 480 +640 428 +640 230 +640 428 +640 457 +333 500 +500 321 +640 480 +640 427 +640 480 +612 612 +480 640 +640 481 +640 427 +480 640 +640 427 +640 481 +488 500 +640 427 +640 403 +640 433 +640 480 +640 427 +480 640 +640 427 +426 640 +640 480 +640 480 +210 126 +640 480 +640 410 +428 640 +375 500 +500 335 +375 500 +640 480 +500 375 +640 427 +640 480 +500 333 +640 427 +480 640 +429 640 +640 480 +480 640 +480 329 +500 333 +500 375 +640 480 +360 480 +640 416 +640 480 +480 640 +640 400 +461 640 +500 333 +640 396 +424 640 +500 375 +640 425 +612 612 +640 427 +640 448 +640 241 +640 426 +500 350 +640 427 +427 640 +640 424 +500 375 +640 492 +640 425 +640 434 +640 425 +216 301 +640 428 +640 480 +500 371 +500 333 +640 428 +481 640 +480 640 +640 480 +640 322 +640 427 +640 478 +427 640 +640 427 +640 480 +439 640 +640 427 +640 480 +480 640 +640 426 +500 333 +640 427 +640 429 +640 427 +640 480 +500 375 +640 427 +640 497 +480 640 +640 463 +480 640 +356 500 +500 375 +640 428 +480 640 +500 289 +640 427 +640 480 +640 436 +427 640 +640 480 +640 640 +640 418 +480 640 +640 426 +375 500 +640 480 +640 427 +640 427 +480 640 +640 480 +640 320 +480 640 +640 426 +640 428 +640 480 +640 426 +640 426 +640 457 +640 427 +640 427 +640 457 +480 640 +448 298 +640 480 +640 426 +640 483 +640 480 +458 640 +640 480 +333 500 +640 403 +640 480 +640 427 +640 360 +640 569 +360 640 +612 612 +640 480 +640 478 +640 424 +640 427 +640 427 +640 359 +640 480 +640 548 +612 612 +375 500 +333 500 +640 429 +640 480 +640 480 +480 640 +428 640 +640 426 +640 399 +640 480 +640 427 +517 388 +640 429 +640 427 +640 480 +640 424 +640 426 +640 425 +480 640 +640 480 +640 360 +640 427 +640 425 +425 640 +640 480 +640 414 +480 640 +640 480 +640 480 +640 427 +640 480 +612 612 +612 612 +500 375 +426 640 +640 426 +640 480 +640 394 +640 427 +612 612 +426 640 +640 428 +640 480 +375 500 +640 480 +640 352 +500 332 +640 480 +443 640 +640 427 +640 424 +446 640 +640 368 +640 640 +480 640 +531 640 +640 480 +478 640 +640 426 +640 427 +640 480 +333 500 +500 391 +612 612 +640 428 +457 640 +640 427 +500 375 +640 428 +500 500 +640 480 +640 427 +640 457 +426 640 +640 480 +640 427 +640 480 +480 640 +480 640 +640 588 +640 480 +612 612 +427 640 +640 425 +640 480 +500 375 +640 514 +640 480 +480 640 +640 427 +640 427 +640 360 +640 479 +500 329 +640 516 +640 424 +640 480 +640 604 +480 640 +640 480 +480 640 +640 427 +500 375 +500 333 +323 500 +640 480 +640 480 +640 427 +640 428 +640 258 +640 480 +640 480 +640 480 +640 472 +640 426 +640 426 +500 375 +640 425 +480 640 +494 640 +640 426 +640 480 +500 375 +388 640 +640 480 +640 480 +640 427 +640 427 +427 640 +512 640 +640 427 +365 500 +494 640 +640 259 +640 427 +640 400 +640 480 +425 640 +612 612 +640 480 +640 427 +640 480 +640 427 +480 640 +640 427 +640 480 +640 400 +640 640 +640 428 +640 480 +640 428 +640 480 +640 491 +426 640 +640 427 +640 480 +480 640 +640 427 +640 480 +640 427 +480 640 +427 640 +427 640 +640 427 +500 375 +640 480 +480 640 +481 640 +640 359 +640 480 +612 612 +640 427 +640 480 +500 333 +640 427 +428 640 +640 361 +640 402 +640 427 +500 375 +427 640 +640 427 +640 428 +640 480 +640 396 +500 375 +640 417 +640 411 +640 426 +640 427 +640 480 +500 375 +640 427 +640 427 +427 640 +640 427 +640 480 +427 640 +427 640 +640 480 +640 424 +640 338 +640 480 +480 640 +640 428 +640 480 +640 426 +640 426 +500 475 +640 427 +640 468 +640 427 +480 640 +640 480 +640 424 +640 427 +516 387 +426 640 +628 406 +640 427 +478 640 +640 364 +500 333 +480 640 +640 427 +640 358 +640 359 +519 640 +429 640 +640 457 +640 457 +640 427 +375 500 +640 418 +640 427 +640 394 +427 640 +500 375 +640 425 +561 640 +480 640 +640 348 +640 428 +500 363 +640 427 +513 640 +640 424 +500 281 +640 360 +427 640 +640 360 +640 480 +640 426 +500 500 +640 428 +640 498 +640 342 +640 483 +480 640 +640 480 +640 427 +612 612 +612 612 +612 612 +640 480 +640 640 +640 480 +640 425 +480 640 +640 424 +640 480 +480 640 +640 480 +640 425 +500 333 +640 425 +500 380 +640 480 +426 640 +640 426 +640 413 +640 427 +480 640 +449 640 +640 427 +588 640 +640 480 +640 431 +640 426 +640 480 +427 640 +500 362 +640 480 +500 375 +500 345 +427 640 +640 462 +640 428 +640 427 +640 514 +640 480 +640 426 +640 480 +495 500 +427 640 +640 480 +640 427 +314 640 +640 426 +376 500 +480 640 +640 426 +428 640 +480 640 +640 419 +325 500 +640 427 +640 427 +640 480 +352 640 +500 375 +375 500 +500 332 +640 480 +640 533 +500 335 +640 604 +500 375 +480 640 +640 477 +640 426 +500 375 +640 427 +426 640 +640 481 +640 427 +640 425 +640 480 +612 612 +640 427 +640 480 +512 640 +458 640 +429 640 +640 429 +640 427 +640 478 +640 427 +500 246 +640 480 +640 327 +640 427 +640 425 +640 427 +612 612 +640 252 +640 480 +640 480 +640 427 +640 198 +640 491 +640 480 +640 480 +640 480 +640 480 +640 428 +480 640 +640 434 +640 427 +427 640 +640 427 +500 373 +640 457 +640 360 +640 426 +427 640 +635 640 +612 612 +640 480 +640 426 +640 427 +500 333 +500 375 +450 337 +640 427 +640 368 +640 427 +640 480 +640 424 +640 480 +640 567 +500 375 +600 604 +613 640 +640 427 +640 427 +640 471 +640 480 +478 640 +587 640 +640 427 +538 640 +612 612 +640 480 +375 500 +458 640 +427 640 +640 398 +500 375 +640 256 +640 425 +480 640 +640 311 +640 427 +500 279 +640 480 +612 612 +364 500 +375 500 +500 375 +640 480 +640 480 +640 428 +640 640 +456 640 +399 640 +612 612 +640 480 +500 330 +480 640 +640 396 +640 480 +427 640 +640 456 +640 426 +612 612 +500 375 +500 357 +640 480 +450 298 +500 397 +640 480 +640 427 +640 427 +640 480 +640 480 +640 480 +640 621 +500 375 +640 480 +500 331 +640 414 +640 480 +640 359 +640 480 +633 640 +640 480 +640 480 +640 428 +640 396 +480 640 +500 375 +494 500 +640 480 +640 510 +640 520 +640 480 +640 425 +640 427 +426 640 +387 500 +640 480 +640 424 +640 480 +500 332 +640 480 +640 421 +640 425 +640 424 +640 427 +640 480 +640 428 +640 427 +640 480 +640 424 +640 426 +640 360 +640 480 +640 480 +640 427 +640 425 +640 479 +500 334 +491 640 +480 640 +640 480 +640 473 +500 465 +375 500 +640 427 +640 427 +640 426 +640 480 +640 480 +500 329 +640 424 +500 487 +480 640 +640 480 +500 375 +640 480 +559 640 +640 463 +640 425 +428 640 +640 427 +500 382 +640 480 +640 523 +640 541 +640 480 +371 640 +640 426 +640 418 +640 401 +480 640 +425 640 +640 559 +500 490 +640 480 +428 640 +640 427 +640 427 +640 640 +640 427 +640 360 +480 640 +640 427 +341 500 +640 480 +426 640 +333 500 +640 480 +640 427 +480 640 +640 441 +640 426 +640 427 +640 480 +334 500 +640 424 +640 449 +640 419 +640 425 +640 427 +366 500 +322 500 +480 640 +448 640 +500 429 +640 425 +640 480 +640 480 +427 640 +478 640 +640 331 +480 640 +375 500 +640 480 +640 529 +640 426 +640 480 +640 480 +375 500 +425 640 +640 427 +640 480 +461 640 +640 428 +640 479 +640 427 +424 640 +640 427 +640 480 +500 359 +480 640 +640 427 +640 427 +480 640 +640 480 +640 458 +640 394 +640 425 +612 612 +500 375 +640 640 +480 640 +427 640 +640 408 +612 612 +640 427 +480 640 +640 426 +640 480 +640 593 +558 640 +640 481 +640 480 +640 426 +640 424 +640 480 +640 480 +500 375 +640 480 +500 424 +176 144 +640 427 +640 480 +640 480 +640 480 +640 426 +640 480 +480 640 +333 240 +427 640 +640 426 +640 480 +640 476 +640 480 +640 426 +640 427 +621 640 +640 480 +640 480 +640 426 +640 427 +640 480 +500 333 +375 500 +480 640 +640 480 +640 427 +640 427 +500 500 +640 423 +640 425 +640 480 +640 480 +640 427 +640 427 +640 425 +612 612 +640 426 +640 480 +640 425 +640 427 +640 640 +640 480 +500 375 +640 426 +500 271 +480 640 +500 375 +640 482 +640 427 +480 640 +640 427 +640 427 +640 480 +640 414 +640 427 +640 398 +640 480 +640 433 +640 426 +640 427 +480 360 +640 427 +640 480 +640 480 +480 640 +640 464 +612 612 +480 640 +640 480 +640 426 +640 480 +640 480 +640 480 +640 482 +500 386 +640 480 +500 377 +640 480 +640 427 +640 480 +640 480 +480 640 +424 640 +640 480 +640 427 +500 333 +640 424 +480 640 +500 333 +640 480 +640 400 +427 640 +640 427 +500 335 +640 416 +428 640 +640 427 +640 427 +500 333 +640 228 +640 426 +500 337 +480 640 +640 480 +640 424 +480 640 +500 409 +640 640 +640 640 +478 640 +411 500 +640 426 +640 427 +640 471 +640 480 +640 426 +640 403 +640 427 +640 428 +640 480 +640 480 +443 640 +640 548 +640 480 +640 480 +640 480 +480 640 +640 427 +480 640 +480 640 +640 298 +640 480 +480 640 +640 429 +640 458 +640 480 +640 427 +480 640 +640 480 +640 488 +499 640 +375 500 +640 480 +640 476 +640 427 +640 480 +640 456 +640 480 +500 375 +640 640 +500 375 +640 480 +357 500 +640 522 +480 640 +332 500 +480 640 +640 480 +640 427 +500 375 +426 640 +640 426 +640 427 +640 480 +500 375 +480 640 +640 428 +640 480 +480 640 +480 640 +640 428 +640 480 +500 379 +640 480 +427 640 +500 344 +640 424 +640 640 +427 640 +640 427 +500 375 +640 354 +426 640 +640 480 +640 427 +640 427 +640 480 +640 480 +640 480 +480 640 +375 500 +599 640 +640 440 +640 640 +427 640 +640 441 +448 336 +500 375 +500 375 +640 480 +500 332 +640 480 +640 457 +336 448 +500 281 +480 640 +640 480 +427 640 +640 433 +396 640 +500 500 +480 640 +640 480 +640 480 +640 425 +480 640 +640 425 +640 427 +500 375 +640 480 +640 360 +480 640 +500 375 +512 640 +640 418 +500 431 +500 332 +640 400 +640 458 +640 425 +500 333 +640 360 +480 640 +640 394 +640 360 +500 375 +640 480 +640 359 +640 426 +640 425 +500 333 +640 512 +640 428 +427 640 +640 480 +480 640 +640 480 +494 640 +427 640 +480 640 +640 479 +640 427 +640 640 +640 427 +640 480 +480 640 +640 427 +640 480 +640 428 +426 640 +640 424 +640 480 +640 427 +640 426 +640 425 +640 360 +640 427 +640 480 +640 478 +640 425 +480 640 +426 640 +640 434 +500 375 +640 427 +427 640 +640 387 +640 424 +480 640 +494 640 +640 399 +640 465 +501 640 +640 480 +640 427 +594 640 +500 375 +640 414 +640 480 +640 479 +640 360 +640 480 +480 640 +480 640 +375 500 +480 640 +640 361 +424 640 +640 425 +640 424 +640 427 +640 427 +640 480 +380 500 +640 428 +640 480 +640 480 +640 479 +640 361 +640 480 +640 480 +640 415 +429 640 +640 427 +640 480 +500 375 +640 424 +500 373 +500 375 +431 640 +480 640 +428 640 +640 416 +640 424 +640 420 +640 424 +457 640 +480 640 +640 476 +500 319 +640 427 +640 480 +640 480 +640 480 +424 640 +640 427 +640 586 +640 480 +640 413 +375 500 +640 427 +640 424 +500 375 +640 480 +640 480 +428 640 +375 500 +288 432 +640 479 +640 427 +640 479 +640 464 +640 401 +480 640 +640 480 +427 640 +640 424 +640 451 +628 640 +640 425 +640 426 +500 375 +500 333 +482 640 +479 640 +427 640 +640 480 +640 427 +640 428 +640 427 +500 375 +640 480 +640 427 +500 375 +640 480 +640 480 +640 419 +428 640 +500 375 +640 640 +640 499 +640 427 +640 426 +640 408 +640 427 +640 425 +640 640 +640 427 +640 425 +404 500 +640 425 +640 425 +480 640 +640 480 +640 427 +640 480 +640 640 +640 480 +500 375 +640 618 +519 640 +480 640 +480 640 +640 480 +500 332 +426 640 +333 500 +640 480 +640 427 +640 480 +640 480 +500 311 +640 480 +640 480 +640 427 +640 480 +640 426 +640 480 +484 640 +480 640 +640 384 +424 640 +427 640 +640 480 +640 433 +640 575 +640 640 +640 419 +500 376 +640 427 +640 480 +333 500 +640 480 +640 427 +480 640 +480 640 +500 326 +640 480 +640 480 +640 453 +462 640 +640 353 +640 424 +640 424 +640 480 +640 427 +640 360 +640 368 +640 480 +640 427 +640 480 +640 427 +640 427 +640 434 +640 428 +640 427 +427 640 +500 400 +427 640 +640 431 +400 239 +640 426 +640 427 +480 640 +640 557 +480 640 +640 480 +640 424 +427 640 +640 427 +425 640 +640 360 +640 358 +640 480 +640 480 +640 425 +500 333 +524 640 +375 500 +640 427 +500 333 +640 440 +640 533 +640 427 +640 480 +640 426 +633 640 +640 502 +640 480 +640 428 +640 359 +640 425 +640 480 +640 480 +480 640 +640 480 +640 480 +640 520 +640 480 +480 640 +640 426 +640 480 +478 640 +640 414 +640 480 +478 640 +640 480 +640 488 +480 640 +375 500 +640 424 +640 427 +640 480 +640 480 +427 640 +427 640 +640 480 +427 640 +512 640 +640 480 +424 640 +500 252 +640 427 +640 425 +428 640 +640 427 +427 640 +425 640 +375 500 +640 480 +640 428 +640 640 +640 480 +480 640 +500 337 +640 427 +640 480 +640 383 +640 427 +500 375 +500 333 +640 480 +500 375 +494 640 +640 480 +640 512 +640 425 +500 375 +500 332 +640 427 +640 480 +612 612 +640 640 +640 480 +640 427 +640 427 +480 640 +640 480 +640 427 +500 375 +640 480 +640 480 +640 480 +640 427 +480 640 +333 500 +640 480 +640 480 +428 640 +640 427 +640 427 +480 640 +640 461 +500 375 +640 480 +640 363 +640 427 +640 574 +640 426 +640 480 +375 500 +640 480 +640 360 +640 395 +600 402 +640 480 +640 360 +500 500 +640 428 +640 425 +640 480 +640 480 +640 480 +480 640 +640 426 +640 480 +640 482 +640 361 +640 480 +480 640 +640 434 +640 425 +480 640 +640 427 +640 425 +640 428 +500 375 +640 425 +500 332 +640 480 +500 375 +640 431 +640 425 +640 427 +640 480 +640 485 +640 480 +512 640 +480 640 +500 375 +640 427 +640 425 +462 640 +640 425 +500 334 +640 480 +375 500 +549 640 +640 351 +500 375 +640 480 +480 319 +640 360 +640 427 +480 640 +640 480 +640 427 +640 426 +640 427 +640 439 +640 329 +640 480 +640 426 +500 500 +427 640 +640 480 +640 480 +640 480 +640 428 +640 424 +640 480 +480 640 +640 426 +640 480 +640 427 +368 640 +640 456 +640 480 +427 640 +640 480 +640 458 +640 427 +480 640 +429 640 +640 435 +640 480 +640 428 +640 425 +640 403 +640 514 +640 424 +640 512 +500 375 +640 512 +640 462 +640 427 +480 640 +640 480 +640 426 +640 504 +429 640 +426 640 +612 612 +500 333 +640 426 +640 422 +640 269 +640 427 +640 480 +640 425 +640 400 +427 640 +640 426 +640 480 +640 478 +480 640 +640 480 +640 486 +640 427 +458 640 +640 425 +640 503 +332 500 +426 640 +432 305 +480 640 +640 480 +640 480 +640 428 +375 500 +500 333 +426 640 +500 376 +640 428 +500 213 +640 479 +640 429 +598 640 +640 373 +473 640 +640 480 +640 640 +612 612 +640 480 +640 480 +640 480 +640 427 +640 427 +402 640 +640 480 +640 425 +640 427 +640 378 +640 428 +640 427 +640 361 +500 333 +640 427 +640 427 +480 640 +427 640 +640 426 +480 640 +640 450 +612 612 +640 553 +640 480 +640 425 +640 439 +640 428 +640 428 +640 430 +500 352 +640 418 +479 640 +640 427 +640 639 +640 480 +640 427 +640 427 +640 480 +612 612 +640 480 +427 640 +427 640 +640 316 +640 428 +500 375 +640 480 +640 424 +640 427 +500 333 +428 640 +500 334 +640 480 +500 375 +640 426 +500 331 +640 480 +640 458 +640 478 +612 612 +640 480 +427 640 +427 640 +640 426 +427 640 +612 612 +477 640 +640 428 +640 427 +640 427 +640 427 +640 448 +640 427 +640 427 +512 640 +640 426 +640 480 +640 493 +640 427 +640 427 +500 333 +640 283 +640 360 +640 457 +303 500 +500 333 +640 513 +500 375 +640 425 +640 304 +612 612 +640 480 +640 424 +500 375 +333 500 +640 480 +640 426 +480 640 +500 375 +500 381 +640 480 +640 480 +640 570 +500 375 +640 427 +480 640 +640 480 +640 480 +640 480 +640 480 +640 427 +500 375 +640 427 +640 426 +640 480 +480 640 +480 640 +640 411 +640 426 +640 427 +640 480 +480 640 +640 427 +500 291 +350 500 +640 360 +467 640 +429 640 +640 441 +427 640 +500 216 +640 480 +480 640 +640 480 +640 467 +640 480 +480 640 +311 640 +640 480 +640 427 +640 480 +640 480 +500 334 +640 427 +640 426 +640 458 +480 640 +640 479 +640 424 +513 640 +640 480 +640 360 +640 480 +318 480 +640 427 +612 612 +640 425 +640 400 +640 427 +640 480 +480 640 +500 331 +357 500 +640 480 +480 640 +640 480 +640 443 +640 480 +640 426 +640 480 +500 367 +640 433 +480 640 +640 480 +640 427 +640 427 +500 333 +640 479 +640 480 +640 428 +425 640 +640 367 +375 500 +500 366 +480 640 +640 480 +640 481 +480 640 +640 427 +427 640 +427 640 +640 510 +640 481 +375 500 +640 480 +359 640 +640 264 +640 426 +480 640 +640 480 +640 458 +500 416 +640 429 +640 426 +640 480 +640 425 +640 480 +640 480 +640 480 +640 383 +160 144 +640 427 +640 425 +640 428 +427 640 +640 480 +640 426 +640 427 +500 333 +333 500 +640 427 +425 640 +640 461 +640 428 +640 427 +640 321 +640 405 +427 640 +375 500 +640 480 +640 427 +640 426 +640 480 +640 427 +480 640 +640 432 +640 427 +640 361 +640 428 +640 480 +640 528 +480 640 +640 424 +640 426 +640 320 +640 336 +640 429 +427 640 +640 425 +500 375 +500 332 +640 427 +500 375 +640 427 +640 426 +640 305 +640 427 +500 375 +640 480 +301 500 +640 480 +640 416 +500 334 +640 480 +640 480 +640 425 +640 480 +425 640 +640 426 +378 500 +640 434 +375 500 +640 480 +640 480 +640 427 +640 478 +640 573 +481 640 +640 480 +427 640 +640 427 +460 500 +640 480 +640 480 +428 640 +640 478 +640 480 +640 480 +640 401 +500 500 +500 375 +640 424 +500 333 +640 426 +500 500 +640 379 +457 640 +640 466 +640 480 +500 333 +640 427 +427 640 +640 478 +640 426 +640 640 +640 426 +640 425 +640 427 +426 640 +525 640 +640 271 +612 612 +480 640 +640 480 +640 480 +640 360 +640 427 +640 480 +640 480 +375 500 +640 480 +640 480 +640 480 +640 434 +480 640 +640 427 +640 359 +500 375 +640 480 +640 480 +640 480 +640 480 +500 375 +640 480 +640 480 +427 640 +480 640 +640 396 +383 640 +220 222 +640 427 +480 640 +640 480 +640 326 +640 521 +640 427 +640 480 +640 426 +640 478 +640 480 +640 427 +640 427 +640 533 +360 640 +640 480 +640 480 +640 443 +500 375 +640 306 +480 640 +500 332 +640 426 +640 479 +640 488 +640 427 +480 640 +640 400 +640 400 +640 480 +640 640 +427 640 +640 427 +640 480 +425 640 +640 480 +640 425 +640 427 +440 640 +640 427 +640 425 +640 640 +640 425 +640 480 +640 426 +513 640 +640 427 +640 581 +640 360 +640 480 +640 427 +425 640 +500 332 +640 480 +640 480 +640 428 +640 426 +640 480 +640 556 +640 428 +640 480 +640 427 +640 480 +427 640 +426 640 +640 463 +640 433 +424 640 +640 427 +640 480 +500 333 +640 426 +500 344 +640 480 +640 427 +640 427 +640 427 +333 500 +640 480 +640 427 +640 480 +640 414 +375 500 +444 640 +500 333 +640 253 +640 462 +427 640 +640 480 +640 480 +427 640 +640 480 +500 350 +640 427 +640 427 +640 510 +478 640 +640 503 +640 480 +640 360 +640 424 +612 612 +376 640 +480 640 +640 427 +500 375 +425 640 +500 333 +333 500 +640 480 +640 480 +500 375 +640 480 +640 427 +640 480 +500 324 +427 640 +624 640 +640 480 +640 428 +640 480 +500 358 +640 418 +640 427 +640 427 +640 427 +612 612 +640 427 +640 427 +490 640 +428 640 +600 600 +640 424 +640 506 +480 640 +480 640 +640 478 +640 478 +640 386 +640 425 +478 640 +640 427 +640 480 +640 480 +375 500 +640 480 +427 640 +640 427 +640 427 +640 426 +640 427 +640 480 +500 375 +427 640 +640 426 +640 480 +427 640 +640 427 +640 437 +427 640 +640 480 +374 500 +500 375 +640 428 +640 480 +480 640 +640 640 +424 640 +500 238 +640 426 +500 375 +640 427 +640 480 +640 425 +500 500 +542 640 +640 480 +500 333 +433 640 +480 640 +500 280 +640 427 +500 330 +427 640 +640 426 +640 427 +481 640 +640 426 +640 409 +640 480 +640 428 +640 425 +427 640 +425 640 +640 480 +480 640 +640 383 +640 480 +427 640 +640 480 +480 640 +640 426 +575 434 +640 424 +640 427 +480 640 +478 640 +640 480 +640 360 +604 640 +640 361 +426 640 +640 427 +427 640 +640 480 +480 640 +375 500 +640 361 +446 640 +427 640 +640 426 +473 640 +426 640 +480 640 +640 451 +640 418 +640 427 +500 322 +640 480 +417 640 +640 427 +640 425 +500 374 +640 466 +640 480 +640 372 +640 471 +640 480 +480 640 +640 453 +640 344 +640 427 +640 603 +500 375 +640 480 +640 640 +480 640 +640 427 +640 480 +640 383 +640 480 +500 333 +640 480 +480 640 +438 640 +640 480 +640 480 +612 612 +375 500 +640 484 +500 314 +640 468 +428 640 +640 482 +640 429 +500 500 +480 640 +640 480 +640 424 +640 480 +640 426 +640 480 +640 424 +640 424 +640 427 +640 427 +429 640 +640 425 +427 640 +640 427 +640 478 +640 640 +500 375 +640 427 +480 640 +640 338 +640 427 +640 427 +640 480 +640 480 +640 427 +640 428 +640 493 +421 640 +640 427 +426 640 +640 513 +640 360 +640 480 +640 480 +640 480 +426 640 +512 640 +640 512 +640 426 +640 480 +426 640 +640 428 +640 427 +480 640 +640 464 +640 480 +640 478 +640 480 +640 480 +612 612 +640 640 +500 375 +500 375 +640 480 +640 461 +640 501 +338 450 +640 427 +640 425 +640 379 +640 427 +640 428 +640 384 +640 480 +640 427 +639 640 +640 427 +428 640 +640 482 +500 333 +640 427 +640 361 +629 640 +500 333 +640 427 +500 375 +480 640 +427 640 +640 521 +413 640 +640 428 +480 640 +640 480 +475 640 +640 426 +500 331 +640 373 +640 438 +427 640 +640 429 +640 480 +640 480 +500 493 +640 427 +640 478 +341 595 +480 640 +500 375 +640 480 +500 500 +480 640 +640 480 +640 480 +428 640 +640 426 +640 480 +640 478 +640 427 +480 640 +375 500 +480 640 +640 480 +640 480 +640 480 +481 640 +640 373 +640 480 +640 480 +612 612 +640 480 +500 426 +640 424 +500 407 +480 640 +640 426 +640 480 +640 475 +640 439 +640 480 +640 418 +640 481 +640 426 +640 480 +334 500 +640 384 +500 375 +423 640 +512 640 +500 334 +640 417 +612 612 +640 480 +640 432 +640 427 +640 386 +428 640 +640 480 +640 480 +640 480 +640 478 +640 480 +640 480 +640 426 +640 426 +480 640 +500 332 +640 427 +640 480 +427 640 +640 429 +612 612 +423 640 +640 360 +640 480 +640 480 +480 640 +640 425 +640 428 +480 640 +640 426 +640 480 +640 480 +640 480 +640 480 +500 375 +640 480 +334 500 +395 640 +640 480 +640 480 +500 375 +640 480 +500 375 +640 480 +640 480 +640 480 +640 483 +640 480 +640 480 +428 640 +450 391 +424 640 +478 640 +640 480 +500 375 +426 640 +640 464 +640 429 +640 427 +640 433 +640 427 +500 375 +640 480 +480 640 +427 640 +640 604 +640 474 +640 640 +640 427 +640 480 +640 427 +640 427 +480 640 +640 427 +427 640 +640 480 +640 480 +480 640 +640 360 +640 640 +640 480 +640 427 +640 428 +640 427 +640 424 +640 361 +640 480 +640 480 +640 434 +612 612 +500 375 +640 426 +640 427 +640 480 +640 427 +640 360 +640 640 +500 375 +640 427 +640 480 +640 480 +640 481 +640 427 +640 474 +640 427 +640 471 +480 640 +612 612 +640 427 +500 333 +640 426 +640 428 +480 640 +640 480 +565 640 +640 427 +480 640 +640 424 +640 481 +428 640 +640 480 +640 427 +640 480 +640 400 +640 480 +425 640 +640 480 +640 480 +333 500 +640 427 +640 480 +612 612 +640 427 +480 640 +640 480 +640 480 +434 640 +640 480 +640 414 +640 480 +640 480 +480 640 +500 359 +396 640 +480 640 +579 640 +640 480 +423 640 +640 640 +640 361 +640 428 +640 478 +640 480 +397 640 +640 341 +480 640 +640 427 +640 480 +640 480 +480 640 +640 480 +500 375 +640 426 +640 480 +500 332 +640 480 +640 480 +640 431 +640 427 +640 480 +640 427 +640 428 +516 640 +640 426 +640 484 +640 360 +480 640 +640 426 +640 457 +361 640 +640 461 +601 640 +640 509 +640 427 +640 426 +425 640 +640 480 +612 612 +640 427 +640 426 +640 480 +640 526 +427 640 +640 426 +600 600 +640 427 +640 480 +640 425 +423 640 +640 480 +500 375 +529 640 +459 640 +333 500 +640 480 +640 320 +640 429 +640 351 +433 640 +500 375 +640 480 +640 480 +640 480 +640 427 +500 375 +640 480 +640 480 +640 427 +640 480 +640 480 +640 640 +426 640 +427 640 +640 480 +640 480 +640 347 +640 428 +640 360 +427 640 +640 427 +640 480 +424 640 +640 480 +640 640 +612 612 +480 640 +640 480 +428 640 +640 480 +426 640 +640 430 +640 427 +439 640 +500 375 +640 425 +489 640 +640 427 +500 333 +640 480 +640 428 +640 427 +640 512 +640 351 +640 424 +500 328 +640 427 +640 427 +500 334 +640 480 +640 480 +640 405 +500 397 +640 427 +640 403 +640 428 +640 422 +640 480 +640 396 +426 640 +640 499 +640 476 +640 427 +640 439 +599 348 +640 638 +640 386 +640 480 +640 427 +428 640 +426 640 +640 480 +640 449 +640 427 +640 480 +612 612 +640 425 +640 427 +640 480 +640 503 +427 640 +640 426 +612 612 +640 426 +497 640 +612 612 +640 359 +640 428 +426 640 +640 427 +640 480 +500 316 +500 375 +640 425 +640 480 +333 500 +640 480 +640 480 +640 480 +640 426 +427 640 +640 474 +640 480 +542 640 +640 480 +640 427 +640 426 +457 640 +640 488 +480 640 +427 640 +640 433 +640 512 +640 481 +640 427 +480 640 +640 427 +640 478 +480 640 +500 334 +640 464 +612 612 +640 480 +640 480 +427 640 +640 469 +640 478 +640 427 +640 480 +640 480 +480 640 +480 640 +640 336 +640 426 +640 424 +640 475 +640 480 +427 640 +640 423 +428 640 +640 428 +640 427 +640 427 +640 480 +640 480 +640 396 +640 427 +500 333 +640 427 +640 480 +640 427 +640 360 +612 612 +480 640 +640 448 +423 640 +640 564 +640 480 +640 348 +480 640 +493 640 +426 640 +612 612 +500 375 +640 408 +640 539 +640 427 +640 360 +500 375 +640 480 +333 500 +640 480 +400 500 +640 480 +640 480 +640 438 +640 428 +640 434 +640 427 +640 400 +640 480 +375 500 +640 359 +640 640 +640 427 +640 425 +640 359 +640 480 +640 512 +640 483 +640 427 +640 480 +640 480 +640 480 +640 635 +427 640 +640 424 +640 640 +480 640 +426 640 +640 480 +640 427 +640 426 +471 640 +640 480 +480 640 +640 427 +640 433 +640 360 +500 375 +640 574 +612 612 +640 480 +640 522 +640 523 +480 640 +640 427 +640 480 +640 426 +480 640 +640 426 +425 640 +640 480 +640 424 +480 640 +640 640 +640 480 +640 480 +640 429 +507 640 +640 480 +640 480 +426 640 +500 415 +640 480 +640 480 +480 640 +640 449 +640 480 +640 427 +427 640 +480 640 +640 417 +612 612 +500 375 +375 500 +640 396 +500 343 +640 388 +428 640 +480 640 +480 640 +640 287 +480 640 +426 640 +640 427 +640 395 +480 640 +480 640 +481 640 +640 480 +640 480 +640 448 +640 427 +640 480 +500 354 +640 331 +384 512 +640 458 +640 408 +640 480 +640 429 +640 480 +640 526 +640 424 +640 480 +640 499 +640 640 +640 454 +640 427 +640 480 +500 334 +640 271 +640 424 +640 424 +368 640 +478 640 +640 630 +427 640 +640 427 +333 500 +640 424 +640 480 +640 426 +512 640 +640 480 +640 339 +640 395 +640 387 +640 428 +424 640 +640 480 +640 568 +640 425 +500 375 +640 480 +500 375 +640 480 +500 375 +640 480 +640 370 +480 640 +425 640 +640 427 +640 508 +640 278 +640 480 +375 500 +500 375 +640 480 +426 640 +640 480 +640 425 +480 640 +640 426 +640 358 +640 480 +510 640 +361 640 +640 427 +640 480 +640 427 +500 375 +426 640 +640 480 +640 421 +640 473 +640 480 +640 453 +640 431 +640 427 +640 427 +426 640 +576 285 +640 480 +427 640 +640 425 +640 427 +640 640 +640 427 +640 427 +640 359 +640 421 +640 425 +476 640 +640 480 +500 288 +356 500 +640 415 +640 480 +640 426 +640 480 +640 421 +640 522 +640 413 +612 612 +612 612 +640 480 +480 640 +427 640 +640 480 +427 640 +640 478 +640 400 +640 480 +640 480 +640 436 +640 480 +640 587 +500 333 +640 350 +640 480 +640 424 +640 426 +640 438 +428 640 +640 480 +640 425 +640 474 +640 480 +403 640 +500 325 +500 375 +500 375 +640 480 +427 640 +464 640 +640 480 +640 423 +480 640 +640 428 +339 500 +640 480 +500 375 +640 360 +500 333 +640 480 +640 427 +424 640 +640 480 +640 363 +640 459 +640 428 +640 427 +480 640 +640 361 +640 480 +640 418 +640 480 +640 427 +640 427 +375 500 +640 427 +640 480 +640 427 +500 306 +640 427 +640 480 +640 400 +640 427 +640 426 +640 425 +381 500 +500 375 +640 480 +640 480 +640 360 +500 332 +612 612 +640 424 +640 426 +640 480 +448 640 +640 362 +640 415 +500 375 +640 427 +484 640 +640 480 +500 375 +640 427 +493 640 +640 426 +640 429 +640 480 +402 640 +640 480 +640 480 +375 500 +640 426 +640 480 +640 442 +480 640 +640 480 +640 427 +480 640 +640 480 +500 378 +640 424 +640 480 +640 480 +640 480 +640 480 +640 426 +640 480 +640 361 +640 426 +640 359 +640 510 +640 427 +640 461 +640 427 +640 427 +480 640 +332 500 +288 432 +500 375 +640 478 +500 375 +500 375 +612 612 +640 427 +640 427 +426 640 +640 480 +480 640 +640 480 +333 500 +640 424 +480 640 +640 538 +640 420 +500 375 +640 427 +408 306 +480 640 +640 451 +640 480 +640 480 +640 426 +640 383 +640 429 +480 640 +640 480 +640 427 +640 429 +640 341 +383 640 +640 478 +640 480 +500 375 +640 314 +640 480 +640 430 +612 612 +640 427 +640 480 +333 500 +640 429 +640 640 +616 640 +640 480 +478 640 +375 500 +480 640 +500 375 +480 640 +427 640 +640 424 +427 640 +640 425 +640 427 +640 360 +427 640 +480 640 +640 404 +500 352 +640 360 +640 427 +500 399 +640 400 +640 480 +640 426 +640 426 +640 428 +640 480 +480 640 +640 429 +640 480 +640 480 +640 427 +640 480 +640 425 +640 480 +640 428 +523 640 +640 480 +500 375 +640 480 +640 640 +640 420 +640 423 +640 590 +640 427 +640 425 +640 327 +480 640 +640 428 +500 335 +640 425 +480 640 +400 640 +640 427 +640 480 +427 640 +640 426 +640 481 +640 426 +640 427 +500 375 +640 480 +640 427 +428 640 +615 615 +426 640 +480 640 +640 495 +640 480 +480 640 +640 439 +640 480 +640 480 +640 478 +480 388 +640 427 +640 359 +500 375 +640 480 +457 640 +480 640 +377 500 +600 314 +640 478 +640 480 +427 640 +480 640 +640 427 +640 454 +480 640 +640 480 +640 427 +640 414 +500 320 +640 480 +478 640 +640 480 +640 480 +640 640 +389 640 +640 480 +640 480 +640 501 +640 424 +640 480 +640 480 +640 323 +640 408 +640 480 +640 480 +640 425 +640 309 +640 427 +640 480 +640 480 +333 500 +359 640 +640 427 +640 427 +640 427 +640 424 +640 427 +640 480 +640 427 +640 427 +640 426 +640 480 +640 427 +640 427 +640 427 +640 480 +640 426 +431 640 +335 500 +427 640 +640 640 +640 391 +640 480 +640 480 +640 427 +640 427 +640 480 +640 427 +500 333 +640 502 +640 426 +640 427 +426 640 +640 480 +640 480 +640 480 +640 427 +394 640 +478 640 +623 640 +640 480 +640 427 +375 500 +427 640 +375 500 +640 512 +427 640 +480 640 +425 640 +480 640 +640 596 +640 545 +640 480 +640 480 +427 640 +480 640 +640 480 +640 522 +640 480 +375 500 +316 640 +500 396 +415 640 +640 503 +640 480 +640 360 +640 428 +640 426 +300 225 +427 640 +640 400 +500 334 +480 640 +640 480 +640 432 +500 375 +640 480 +500 332 +397 640 +612 612 +428 640 +454 640 +500 399 +640 480 +640 480 +640 279 +640 425 +500 375 +427 640 +640 425 +480 640 +383 640 +640 427 +500 375 +640 426 +640 480 +640 480 +640 480 +640 370 +500 333 +640 512 +640 480 +375 500 +640 480 +640 425 +640 427 +640 480 +500 335 +640 427 +640 480 +640 480 +500 375 +539 640 +640 480 +424 500 +640 427 +640 359 +640 427 +640 424 +640 426 +640 205 +640 424 +480 640 +640 480 +500 332 +640 480 +500 375 +640 427 +640 425 +640 445 +370 500 +640 480 +500 402 +640 427 +640 429 +612 612 +426 640 +500 373 +640 464 +640 480 +427 640 +640 480 +640 426 +640 479 +500 375 +640 426 +640 428 +640 480 +640 428 +640 427 +497 640 +640 480 +480 640 +640 426 +640 480 +425 640 +640 427 +426 640 +640 480 +640 480 +640 480 +640 480 +640 484 +427 640 +640 427 +640 427 +640 584 +612 612 +640 458 +640 427 +428 640 +500 375 +640 480 +427 640 +640 401 +619 640 +640 480 +640 512 +640 480 +424 640 +426 640 +640 478 +640 425 +640 347 +640 480 +640 359 +480 640 +640 428 +640 425 +375 500 +640 480 +640 424 +640 502 +375 500 +640 335 +415 500 +500 375 +640 424 +640 427 +640 480 +500 500 +500 375 +640 427 +640 427 +427 640 +640 480 +640 364 +640 640 +500 322 +480 640 +480 640 +427 640 +500 375 +375 500 +640 480 +640 490 +640 360 +640 480 +640 427 +500 376 +640 480 +373 500 +640 426 +640 480 +640 480 +500 375 +640 398 +640 480 +640 424 +640 480 +640 480 +427 640 +360 640 +640 480 +640 427 +640 480 +640 480 +612 612 +640 449 +426 640 +640 480 +480 640 +640 408 +480 640 +500 375 +640 383 +375 500 +640 425 +480 640 +428 640 +640 427 +500 330 +640 421 +640 427 +581 640 +640 426 +426 640 +640 427 +640 427 +640 388 +640 425 +640 428 +640 640 +640 427 +640 480 +640 480 +427 640 +640 428 +640 427 +640 480 +480 640 +414 640 +640 480 +480 640 +640 480 +640 427 +480 640 +428 640 +427 640 +640 449 +640 426 +640 480 +640 429 +640 467 +640 480 +640 480 +427 640 +640 427 +500 375 +640 478 +640 480 +640 385 +640 359 +360 640 +640 572 +640 480 +640 480 +427 640 +640 425 +640 466 +640 427 +640 640 +640 379 +500 315 +640 422 +640 480 +427 640 +640 424 +640 477 +640 480 +640 446 +375 500 +640 448 +640 360 +480 640 +640 478 +480 640 +640 480 +640 503 +500 375 +640 430 +613 635 +640 424 +640 427 +640 640 +640 427 +640 427 +427 640 +478 640 +409 640 +480 640 +640 480 +640 478 +458 640 +640 478 +640 480 +480 640 +640 423 +640 480 +480 640 +640 480 +640 360 +640 425 +640 360 +640 427 +427 640 +640 512 +640 480 +640 270 +640 360 +359 640 +500 375 +640 427 +500 375 +427 640 +480 640 +640 344 +640 480 +640 480 +640 640 +640 480 +640 640 +640 480 +640 360 +640 428 +640 427 +640 480 +640 427 +360 640 +640 426 +640 468 +640 402 +640 426 +640 425 +640 480 +640 480 +640 424 +640 425 +640 480 +640 579 +640 427 +640 480 +640 480 +640 427 +640 427 +640 480 +640 427 +640 480 +375 500 +640 426 +640 480 +640 480 +640 427 +291 500 +640 426 +640 480 +428 640 +640 426 +640 480 +427 640 +640 480 +480 640 +640 480 +480 640 +640 531 +640 480 +526 640 +640 427 +640 458 +480 640 +640 251 +480 640 +426 640 +640 427 +640 571 +640 427 +640 482 +640 480 +640 480 +427 640 +640 427 +640 571 +640 480 +640 427 +427 640 +640 417 +640 480 +640 480 +448 640 +640 427 +640 480 +631 640 +500 375 +640 425 +539 640 +609 640 +500 375 +478 640 +640 478 +500 375 +640 427 +427 640 +640 478 +640 438 +500 330 +640 426 +375 500 +375 500 +640 154 +480 640 +450 350 +640 480 +640 480 +640 426 +640 391 +640 425 +640 482 +640 480 +500 260 +434 500 +612 612 +500 334 +640 429 +480 640 +640 427 +500 375 +640 480 +640 480 +640 427 +640 480 +640 434 +500 335 +427 640 +640 410 +435 640 +500 375 +640 526 +640 400 +640 480 +640 480 +640 427 +640 411 +640 480 +480 640 +640 502 +640 480 +640 480 +500 375 +500 375 +357 500 +337 500 +640 480 +480 272 +640 478 +640 480 +640 480 +640 480 +428 640 +512 640 +640 428 +427 640 +640 427 +427 640 +640 427 +425 640 +640 428 +640 480 +544 640 +426 640 +640 427 +640 360 +500 375 +640 480 +480 249 +640 432 +640 424 +640 427 +640 480 +640 480 +640 426 +640 360 +640 480 +640 427 +640 427 +640 489 +366 500 +640 426 +640 427 +427 640 +640 426 +640 427 +640 425 +640 427 +500 332 +640 427 +640 480 +640 427 +240 360 +425 640 +640 480 +640 426 +640 427 +640 502 +640 480 +640 457 +640 480 +500 316 +480 640 +640 429 +640 480 +640 480 +640 480 +480 640 +640 461 +640 427 +640 512 +375 500 +429 640 +480 640 +640 414 +640 428 +427 640 +480 640 +518 640 +640 427 +640 480 +425 640 +640 427 +640 359 +640 480 +640 595 +640 480 +640 427 +640 480 +640 501 +500 375 +640 427 +640 415 +450 300 +640 480 +399 640 +640 269 +593 640 +640 480 +640 431 +640 428 +480 640 +480 640 +640 428 +640 426 +480 640 +636 640 +640 428 +426 640 +640 427 +640 427 +640 426 +640 360 +640 480 +500 332 +640 426 +640 427 +640 480 +500 375 +575 344 +640 426 +640 425 +612 612 +500 375 +640 480 +640 425 +640 480 +640 430 +425 640 +427 640 +429 640 +428 640 +640 480 +640 433 +426 640 +640 427 +640 640 +640 427 +640 480 +427 640 +500 375 +640 640 +640 427 +640 427 +640 480 +640 426 +640 479 +640 454 +480 640 +640 427 +640 480 +480 640 +640 480 +640 558 +640 478 +640 480 +480 640 +428 640 +375 500 +640 480 +500 375 +427 640 +424 640 +640 226 +640 480 +640 480 +640 427 +500 375 +480 640 +500 333 +640 427 +500 375 +612 612 +640 426 +426 640 +640 426 +640 360 +640 480 +640 427 +640 365 +500 375 +640 427 +640 427 +426 640 +640 480 +375 500 +640 480 +640 431 +640 480 +451 640 +640 480 +640 480 +640 480 +640 589 +640 425 +640 427 +575 640 +427 640 +640 427 +640 480 +480 640 +640 427 +640 478 +640 480 +640 426 +640 480 +640 429 +500 333 +427 640 +640 480 +426 640 +393 500 +640 426 +640 480 +640 428 +640 427 +500 374 +640 480 +640 393 +500 375 +640 480 +640 396 +640 480 +350 500 +640 497 +640 457 +640 360 +640 480 +640 480 +500 375 +640 480 +588 640 +640 480 +612 612 +640 480 +500 390 +640 503 +640 427 +640 425 +640 321 +640 427 +640 480 +640 360 +640 425 +640 435 +640 450 +640 428 +640 427 +375 500 +640 480 +640 427 +640 480 +500 443 +516 640 +640 427 +640 640 +640 480 +341 640 +640 499 +500 375 +640 640 +640 427 +640 402 +500 375 +428 640 +640 427 +426 640 +426 640 +500 333 +640 480 +640 409 +500 280 +640 427 +480 640 +640 427 +640 427 +640 412 +640 480 +640 480 +640 427 +640 428 +640 427 +427 640 +500 333 +500 338 +640 427 +640 480 +640 480 +640 478 +640 480 +640 480 +333 500 +427 640 +640 425 +640 439 +640 427 +640 480 +640 377 +640 480 +640 480 +640 480 +640 426 +640 429 +640 425 +640 480 +474 640 +640 426 +640 480 +640 425 +640 484 +640 480 +424 640 +500 375 +425 640 +480 640 +640 431 +640 427 +640 426 +640 480 +500 333 +610 390 +480 640 +640 428 +640 427 +640 428 +480 640 +640 480 +640 490 +511 640 +640 426 +500 375 +480 640 +640 640 +640 420 +427 640 +427 640 +640 480 +640 421 +640 480 +640 468 +500 333 +640 480 +640 424 +427 640 +640 424 +640 426 +640 428 +640 287 +480 640 +612 612 +640 480 +500 334 +449 640 +640 480 +640 428 +640 426 +640 433 +640 329 +604 453 +480 640 +640 427 +500 375 +640 360 +633 640 +500 332 +640 480 +640 478 +640 426 +640 425 +640 420 +640 634 +500 333 +375 500 +640 426 +640 507 +640 427 +640 480 +640 480 +640 427 +500 333 +640 526 +640 426 +480 640 +640 480 +640 426 +463 640 +640 427 +640 480 +640 491 +640 397 +640 493 +640 431 +480 640 +640 453 +414 640 +480 640 +640 480 +640 428 +375 500 +640 480 +640 428 +640 480 +640 457 +640 425 +640 426 +640 427 +640 441 +640 427 +640 426 +500 432 +640 427 +640 480 +500 375 +640 427 +411 640 +640 427 +640 480 +427 640 +544 640 +612 612 +426 640 +640 427 +640 434 +640 427 +640 444 +640 424 +640 481 +640 427 +500 375 +480 640 +500 376 +519 640 +640 425 +640 427 +464 640 +640 480 +612 612 +427 640 +480 640 +640 478 +640 480 +500 333 +640 480 +640 425 +640 480 +600 409 +640 480 +640 426 +640 480 +640 479 +640 500 +640 425 +640 426 +427 640 +640 480 +640 480 +424 640 +640 396 +640 427 +640 428 +640 480 +640 421 +426 640 +640 429 +480 640 +640 480 +640 480 +640 411 +427 640 +640 480 +640 478 +640 480 +640 424 +640 479 +426 640 +640 519 +640 480 +375 500 +640 480 +640 480 +640 426 +640 484 +500 374 +500 333 +463 500 +640 429 +640 427 +640 427 +640 427 +500 333 +640 427 +640 480 +480 640 +640 480 +612 612 +447 640 +640 480 +640 480 +427 640 +470 640 +640 478 +640 478 +640 480 +640 480 +640 480 +640 427 +640 554 +427 640 +509 640 +640 428 +640 426 +500 279 +640 480 +640 480 +478 640 +640 427 +640 480 +640 414 +640 480 +480 640 +640 479 +640 427 +612 612 +427 640 +640 427 +640 481 +640 427 +500 375 +375 500 +640 480 +640 480 +640 429 +640 359 +640 336 +640 427 +640 427 +640 426 +640 480 +480 319 +640 480 +640 480 +640 427 +480 640 +426 640 +500 333 +612 612 +640 360 +500 300 +550 640 +640 400 +640 360 +500 333 +427 640 +640 428 +593 640 +640 480 +640 444 +640 424 +640 488 +640 478 +480 640 +640 427 +640 426 +640 460 +640 511 +640 356 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +640 427 +640 480 +640 425 +600 400 +640 427 +374 500 +480 640 +640 427 +640 427 +640 475 +425 640 +640 480 +640 434 +640 640 +640 480 +640 319 +640 425 +640 303 +640 468 +612 612 +640 427 +640 427 +640 480 +514 640 +640 427 +500 375 +640 427 +640 480 +640 439 +640 427 +640 480 +640 429 +482 640 +478 640 +550 367 +640 480 +640 427 +640 427 +463 640 +640 480 +640 427 +640 427 +640 427 +640 478 +640 430 +640 427 +640 468 +640 480 +333 500 +640 427 +640 427 +640 425 +640 436 +640 427 +640 579 +640 513 +640 480 +640 480 +500 333 +480 640 +500 375 +375 500 +500 333 +640 426 +375 500 +640 480 +500 349 +640 427 +640 426 +640 480 +640 460 +612 612 +480 640 +612 612 +480 640 +640 424 +612 612 +640 406 +500 333 +480 640 +640 480 +640 427 +640 480 +640 394 +640 480 +640 451 +640 427 +640 426 +480 640 +640 400 +640 480 +640 426 +640 425 +428 640 +640 509 +640 480 +480 640 +480 640 +640 480 +640 427 +640 424 +640 400 +356 500 +480 640 +640 427 +640 426 +640 423 +640 360 +640 480 +640 431 +311 640 +640 478 +640 480 +640 480 +333 500 +640 480 +640 478 +640 478 +640 640 +427 640 +500 335 +480 640 +640 480 +640 480 +375 500 +640 425 +640 426 +640 426 +640 427 +640 427 +640 480 +640 480 +640 428 +640 480 +640 425 +640 480 +500 453 +640 427 +612 612 +375 500 +480 640 +480 640 +468 640 +640 480 +640 457 +428 640 +427 640 +640 480 +640 480 +640 427 +640 431 +640 480 +500 375 +500 332 +476 640 +640 481 +640 427 +640 480 +602 640 +640 480 +640 480 +481 640 +375 500 +640 427 +640 480 +610 640 +428 640 +640 425 +640 426 +640 480 +640 480 +612 612 +640 480 +640 290 +640 480 +640 426 +480 640 +640 424 +426 640 +640 480 +500 399 +640 480 +640 480 +423 640 +500 375 +640 424 +360 640 +640 480 +640 430 +500 375 +640 426 +640 424 +500 333 +640 427 +640 427 +640 396 +640 441 +480 640 +480 640 +640 407 +640 453 +640 480 +640 594 +427 640 +640 427 +640 478 +480 321 +640 480 +640 426 +612 612 +640 640 +640 389 +640 480 +640 511 +640 480 +640 480 +640 480 +480 640 +612 612 +640 360 +640 427 +640 427 +640 426 +640 427 +612 612 +501 640 +640 534 +358 500 +640 480 +640 493 +640 480 +640 427 +640 480 +427 640 +612 612 +640 429 +640 480 +478 640 +612 612 +640 484 +640 480 +640 427 +427 640 +428 640 +640 428 +640 480 +640 640 +455 640 +640 409 +640 480 +640 480 +500 332 +640 427 +400 500 +640 480 +640 426 +640 640 +500 369 +480 640 +640 424 +640 428 +480 640 +640 480 +427 640 +640 480 +640 480 +640 480 +640 427 +425 640 +640 495 +366 640 +640 427 +640 427 +640 427 +640 360 +640 429 +640 427 +640 427 +640 427 +640 480 +423 640 +640 480 +640 480 +640 422 +612 612 +640 480 +640 427 +640 484 +500 377 +640 449 +500 375 +500 333 +640 460 +427 640 +640 426 +640 432 +640 494 +640 426 +333 500 +640 427 +612 612 +640 480 +427 640 +640 360 +640 480 +500 314 +426 640 +640 480 +640 377 +640 480 +450 338 +640 428 +500 375 +640 426 +640 480 +640 510 +640 480 +640 480 +640 480 +640 479 +640 427 +640 480 +500 332 +640 512 +640 480 +640 426 +640 428 +640 480 +640 427 +640 576 +480 640 +640 480 +640 623 +640 480 +640 427 +500 274 +640 480 +426 640 +640 480 +640 480 +640 360 +640 360 +640 254 +427 640 +640 414 +640 423 +640 478 +640 438 +480 640 +640 480 +640 427 +640 480 +428 640 +480 640 +640 428 +428 640 +375 500 +500 338 +640 478 +640 473 +480 640 +640 425 +424 640 +500 500 +640 480 +640 480 +640 427 +480 640 +480 640 +640 425 +640 487 +500 375 +480 640 +640 427 +640 480 +640 480 +640 428 +480 640 +427 640 +640 480 +500 313 +640 427 +640 480 +640 427 +640 427 +426 640 +640 424 +375 500 +480 640 +640 480 +640 427 +500 334 +640 427 +640 427 +640 480 +612 612 +359 640 +640 480 +640 446 +640 427 +640 361 +640 427 +640 427 +612 612 +640 360 +480 640 +640 427 +640 480 +640 428 +640 427 +500 375 +640 426 +640 474 +612 612 +500 375 +640 480 +640 480 +500 375 +480 640 +640 396 +640 510 +640 426 +640 426 +500 333 +640 446 +480 640 +640 480 +640 426 +500 375 +640 480 +400 500 +500 332 +640 427 +612 612 +500 333 +640 431 +640 480 +500 375 +375 500 +430 640 +480 640 +640 480 +640 480 +500 459 +640 428 +443 640 +640 427 +480 640 +640 640 +427 640 +640 428 +640 425 +640 427 +640 427 +480 640 +640 360 +640 480 +457 640 +640 480 +500 375 +640 480 +427 640 +640 427 +640 480 +640 480 +480 640 +640 480 +640 427 +500 400 +640 427 +640 480 +640 425 +640 507 +640 382 +640 427 +640 426 +500 383 +640 347 +426 640 +640 426 +320 240 +640 426 +640 426 +640 421 +640 425 +375 500 +480 640 +640 426 +500 375 +500 333 +427 640 +458 640 +640 534 +375 500 +640 429 +640 480 +640 360 +640 480 +640 457 +500 333 +640 426 +640 427 +480 640 +640 426 +500 333 +640 376 +640 480 +640 480 +640 316 +640 440 +640 381 +640 427 +640 428 +640 480 +640 427 +609 640 +500 375 +640 426 +500 402 +640 427 +240 360 +640 480 +500 334 +640 425 +640 478 +640 638 +640 427 +500 375 +640 480 +640 425 +480 640 +640 425 +640 480 +612 612 +640 480 +640 427 +640 480 +640 480 +640 427 +640 427 +500 400 +480 640 +480 640 +640 314 +640 425 +640 427 +640 480 +500 332 +640 480 +640 427 +480 640 +640 425 +410 640 +640 427 +640 342 +640 480 +600 600 +640 427 +640 360 +640 640 +640 480 +500 336 +640 480 +640 425 +640 427 +640 428 +640 238 +640 427 +640 429 +480 640 +640 428 +640 453 +640 426 +640 428 +640 426 +640 424 +640 426 +640 403 +375 500 +478 640 +640 480 +640 480 +640 427 +640 480 +500 375 +500 400 +333 500 +500 281 +500 333 +427 640 +426 640 +480 640 +274 640 +640 480 +500 383 +640 427 +640 480 +640 383 +500 375 +500 333 +640 480 +640 433 +640 360 +500 333 +640 480 +640 427 +640 424 +500 375 +640 480 +427 640 +418 640 +640 480 +478 640 +640 553 +640 426 +640 424 +640 360 +640 480 +359 640 +427 640 +640 480 +480 640 +331 500 +427 640 +640 427 +640 480 +375 500 +500 375 +640 480 +500 375 +640 427 +640 424 +612 612 +500 332 +640 480 +640 426 +640 426 +500 345 +640 427 +640 425 +640 427 +375 500 +598 640 +640 480 +356 500 +640 480 +640 426 +640 478 +208 160 +500 481 +640 426 +640 426 +640 426 +640 480 +640 424 +480 640 +640 427 +500 294 +640 427 +640 427 +640 436 +640 402 +640 457 +640 480 +640 428 +640 428 +398 640 +426 640 +640 426 +428 640 +426 640 +500 333 +640 427 +640 480 +428 640 +480 640 +640 427 +640 427 +456 640 +501 640 +640 408 +640 480 +640 424 +640 480 +480 640 +640 480 +640 427 +480 640 +640 480 +500 408 +640 429 +480 640 +640 640 +612 612 +640 380 +640 426 +435 640 +640 503 +612 612 +640 480 +640 425 +640 480 +640 480 +640 480 +640 427 +640 426 +640 480 +443 500 +640 480 +640 480 +640 480 +480 640 +640 421 +640 640 +640 427 +640 426 +500 452 +500 333 +640 448 +640 480 +480 640 +640 427 +480 640 +640 480 +427 640 +478 640 +640 427 +640 422 +640 480 +640 424 +640 204 +640 480 +333 500 +480 640 +640 480 +640 425 +640 480 +640 437 +640 480 +462 640 +428 640 +640 480 +500 313 +500 476 +640 428 +640 489 +640 524 +640 426 +640 426 +500 375 +640 302 +640 510 +640 426 +640 360 +640 424 +640 432 +426 640 +488 640 +640 427 +640 376 +450 350 +640 480 +640 480 +500 319 +640 480 +640 359 +375 500 +640 480 +640 480 +640 427 +640 427 +333 500 +640 427 +640 406 +375 500 +427 640 +640 400 +565 584 +640 480 +640 640 +640 427 +335 500 +500 375 +640 448 +640 479 +640 480 +375 500 +640 494 +447 333 +640 457 +334 500 +640 640 +612 612 +640 528 +425 640 +500 375 +480 640 +640 480 +640 640 +640 424 +427 640 +480 640 +640 427 +640 639 +640 480 +640 480 +500 375 +480 640 +427 640 +640 428 +640 426 +640 427 +640 426 +640 424 +480 640 +640 480 +500 333 +383 640 +600 457 +640 216 +640 480 +500 375 +640 480 +640 427 +640 425 +640 480 +427 640 +640 427 +368 640 +640 480 +640 463 +640 425 +640 480 +640 426 +500 364 +640 427 +480 640 +640 483 +600 450 +636 640 +640 480 +640 640 +640 427 +480 640 +375 500 +640 480 +640 427 +640 439 +487 500 +640 425 +640 480 +640 480 +640 480 +640 480 +640 480 +640 356 +480 640 +640 480 +640 360 +640 427 +640 480 +500 333 +500 332 +640 427 +640 427 +640 480 +640 424 +480 640 +640 480 +640 427 +640 480 +640 427 +640 480 +480 640 +640 480 +640 480 +640 425 +433 640 +499 640 +640 480 +640 480 +640 480 +479 640 +640 427 +640 478 +640 429 +500 334 +640 480 +480 640 +640 480 +640 400 +640 427 +640 427 +480 640 +500 375 +640 357 +640 384 +480 640 +640 480 +612 612 +640 427 +640 360 +640 424 +480 640 +500 375 +375 500 +640 480 +480 640 +500 332 +640 640 +640 451 +640 427 +640 480 +640 480 +640 511 +500 357 +640 303 +480 640 +640 480 +500 375 +640 480 +640 390 +564 640 +424 640 +426 640 +640 423 +500 333 +480 640 +640 427 +359 640 +480 640 +640 411 +640 428 +500 375 +640 459 +640 480 +640 480 +640 480 +500 375 +640 427 +640 360 +480 640 +480 640 +640 480 +640 480 +640 427 +640 640 +612 612 +640 427 +425 640 +640 344 +640 427 +640 480 +480 640 +640 478 +640 480 +640 480 +640 429 +375 500 +640 431 +640 426 +480 640 +640 394 +640 427 +640 480 +640 480 +640 536 +640 426 +427 640 +500 404 +500 400 +500 375 +640 427 +640 478 +480 640 +640 479 +640 360 +640 480 +640 427 +612 612 +640 427 +500 375 +640 427 +640 420 +640 427 +640 480 +640 427 +640 425 +640 482 +494 289 +640 425 +640 640 +640 520 +427 640 +640 160 +640 470 +640 480 +640 480 +640 480 +500 375 +640 480 +500 375 +640 401 +500 375 +612 612 +640 360 +640 480 +640 480 +375 500 +640 434 +640 480 +640 480 +640 557 +640 640 +424 640 +427 640 +640 428 +640 411 +427 640 +480 640 +640 427 +640 480 +640 481 +640 480 +640 480 +640 426 +640 480 +640 526 +640 489 +500 375 +640 480 +640 480 +640 426 +640 480 +640 429 +612 612 +427 640 +640 444 +640 480 +640 480 +500 333 +640 396 +400 372 +640 480 +480 640 +640 480 +640 426 +640 480 +640 480 +640 360 +424 640 +427 640 +500 333 +426 640 +500 375 +640 406 +640 429 +640 427 +604 640 +424 640 +640 480 +500 375 +500 375 +640 546 +480 640 +640 406 +375 500 +640 427 +640 480 +640 425 +640 427 +500 375 +357 500 +640 480 +640 480 +640 425 +375 500 +500 400 +640 360 +640 480 +640 423 +640 423 +480 640 +640 480 +600 510 +434 640 +640 427 +640 435 +640 427 +640 480 +640 424 +640 427 +500 375 +640 480 +640 428 +640 427 +612 612 +640 480 +640 434 +640 480 +511 640 +640 427 +333 500 +640 413 +640 640 +640 360 +640 480 +640 427 +640 480 +640 480 +640 426 +640 480 +640 480 +640 425 +640 429 +240 160 +640 480 +612 612 +640 426 +640 360 +480 640 +640 480 +537 640 +640 480 +480 640 +640 426 +640 457 +640 427 +640 516 +640 427 +640 640 +640 480 +640 480 +640 427 +640 427 +640 453 +480 640 +640 428 +480 640 +640 363 +640 480 +541 640 +640 480 +612 612 +326 500 +500 400 +640 640 +640 480 +500 375 +640 427 +640 426 +500 375 +640 424 +375 500 +257 362 +480 640 +480 640 +640 480 +640 360 +640 480 +500 375 +640 420 +640 427 +640 298 +640 480 +640 401 +640 475 +640 427 +640 480 +640 426 +640 427 +610 640 +640 498 +480 640 +640 480 +408 640 +640 427 +500 500 +640 427 +640 480 +480 640 +640 640 +640 640 +500 375 +375 500 +640 480 +500 333 +640 480 +427 640 +640 411 +640 426 +640 426 +640 480 +640 480 +500 346 +640 427 +640 376 +640 360 +640 425 +480 640 +427 640 +500 438 +480 640 +640 426 +640 480 +640 292 +640 428 +640 480 +333 500 +500 462 +480 640 +640 451 +640 427 +468 640 +640 429 +640 480 +500 500 +640 480 +640 427 +427 640 +640 427 +640 427 +640 480 +640 480 +375 500 +640 480 +640 427 +640 340 +640 427 +480 640 +375 500 +500 423 +640 425 +640 554 +500 375 +480 640 +640 505 +640 199 +640 426 +640 427 +640 480 +640 480 +333 500 +640 411 +640 427 +640 480 +500 375 +640 424 +426 640 +480 640 +640 424 +640 480 +640 426 +640 320 +640 425 +500 333 +480 640 +640 480 +375 500 +640 480 +500 400 +343 640 +427 640 +640 480 +640 469 +640 480 +480 640 +640 339 +640 427 +640 427 +513 640 +640 394 +640 416 +640 234 +640 480 +640 427 +640 428 +640 426 +500 375 +500 334 +427 640 +640 480 +640 427 +640 480 +428 640 +500 333 +427 640 +492 500 +640 480 +423 640 +406 640 +640 480 +640 362 +480 640 +640 480 +640 426 +640 480 +640 444 +480 640 +513 342 +412 640 +427 640 +640 480 +640 359 +612 612 +640 480 +640 480 +480 360 +640 425 +640 480 +640 480 +640 598 +640 480 +480 640 +640 480 +640 426 +640 480 +500 374 +640 457 +640 426 +500 333 +500 377 +375 500 +500 375 +640 492 +640 311 +427 640 +640 427 +640 426 +633 640 +640 483 +640 386 +640 427 +640 453 +375 500 +640 320 +640 424 +640 427 +338 500 +640 427 +640 480 +640 480 +640 384 +640 480 +640 426 +375 500 +426 640 +640 480 +640 480 +640 427 +640 427 +640 428 +640 480 +640 426 +640 640 +640 426 +640 480 +640 480 +640 480 +500 345 +640 480 +640 341 +553 640 +480 640 +480 640 +320 240 +500 375 +500 375 +640 482 +640 427 +640 450 +640 480 +640 480 +478 640 +612 612 +640 425 +426 640 +623 640 +640 426 +640 480 +640 451 +640 336 +640 480 +427 640 +640 427 +640 480 +640 480 +640 427 +640 640 +640 512 +640 468 +640 480 +640 480 +640 480 +500 333 +480 640 +480 640 +425 640 +612 612 +640 480 +416 640 +640 457 +640 640 +427 640 +640 428 +480 640 +433 640 +640 425 +640 428 +640 428 +640 373 +500 375 +640 640 +606 640 +457 640 +640 480 +640 480 +640 480 +640 359 +640 512 +640 427 +480 640 +640 476 +640 360 +640 428 +480 640 +640 480 +640 503 +640 427 +640 427 +640 427 +640 488 +500 362 +640 482 +500 375 +640 581 +640 427 +612 612 +640 480 +621 640 +640 480 +640 427 +512 640 +640 425 +640 479 +480 640 +640 640 +640 427 +375 500 +640 480 +427 640 +426 640 +640 427 +640 480 +640 427 +640 424 +500 281 +640 260 +640 457 +480 640 +640 421 +640 480 +481 640 +500 375 +640 640 +428 640 +500 333 +640 427 +480 640 +640 426 +427 640 +500 375 +427 640 +432 288 +640 426 +640 480 +640 427 +375 500 +640 480 +640 425 +640 480 +640 453 +479 640 +640 479 +640 427 +640 352 +640 394 +480 640 +640 640 +640 480 +640 417 +640 494 +640 427 +640 479 +500 375 +640 480 +640 480 +640 426 +426 640 +640 427 +640 480 +640 424 +480 640 +479 640 +640 480 +640 629 +640 478 +640 480 +640 427 +640 430 +640 480 +640 480 +640 480 +640 427 +480 640 +640 480 +480 640 +427 640 +640 420 +640 425 +501 640 +546 640 +640 486 +640 480 +612 612 +640 235 +640 480 +640 429 +640 480 +428 640 +640 480 +640 480 +640 428 +612 612 +404 640 +640 480 +640 427 +640 408 +480 640 +427 640 +500 375 +537 427 +640 426 +360 480 +640 425 +640 480 +640 426 +640 428 +333 500 +334 500 +640 427 +360 480 +640 318 +480 640 +480 640 +640 429 +640 480 +500 243 +500 375 +480 640 +480 640 +640 480 +640 480 +640 456 +640 427 +480 500 +640 426 +640 480 +640 512 +479 640 +640 480 +640 482 +500 333 +640 429 +640 460 +640 428 +640 425 +640 640 +612 612 +640 480 +640 427 +640 427 +500 375 +640 480 +640 427 +427 640 +640 480 +640 480 +640 480 +640 427 +500 499 +640 505 +640 423 +640 480 +640 424 +640 482 +640 427 +640 480 +640 424 +640 427 +480 640 +640 480 +640 541 +480 640 +480 640 +375 500 +428 640 +427 640 +640 480 +500 376 +512 640 +375 500 +640 427 +210 168 +480 640 +640 481 +640 480 +640 427 +370 640 +640 390 +640 412 +640 480 +640 426 +640 425 +375 500 +500 375 +640 428 +640 640 +408 640 +640 427 +640 428 +640 480 +640 427 +500 375 +640 640 +640 427 +640 480 +640 480 +640 426 +499 500 +640 426 +500 332 +640 480 +640 427 +640 480 +640 360 +640 478 +341 500 +640 471 +640 480 +640 427 +615 346 +640 640 +640 480 +640 480 +640 358 +640 425 +640 480 +640 630 +640 427 +640 480 +640 427 +500 335 +531 640 +640 473 +640 427 +640 480 +500 375 +640 480 +640 480 +509 640 +640 431 +640 424 +640 480 +640 480 +640 480 +426 640 +500 375 +480 640 +500 327 +640 480 +500 375 +640 425 +427 640 +414 640 +639 480 +634 640 +612 612 +640 480 +640 480 +640 427 +640 480 +480 640 +640 423 +480 640 +640 426 +640 428 +640 480 +640 480 +640 459 +640 480 +427 640 +480 640 +640 427 +480 640 +640 427 +640 480 +640 480 +640 480 +640 640 +375 500 +640 480 +640 427 +640 480 +640 425 +612 612 +427 640 +483 640 +640 426 +640 419 +640 480 +428 640 +500 400 +640 480 +640 348 +427 640 +640 361 +426 640 +640 436 +333 500 +152 228 +612 612 +462 640 +640 478 +640 480 +640 480 +640 401 +640 427 +640 427 +640 427 +427 640 +640 640 +500 375 +407 640 +640 427 +343 336 +640 480 +500 352 +640 480 +640 428 +640 480 +640 427 +640 425 +354 640 +640 429 +333 500 +298 450 +640 420 +640 480 +427 640 +640 425 +640 427 +480 640 +480 640 +500 331 +500 334 +640 480 +375 500 +640 480 +640 428 +612 612 +640 640 +640 424 +640 480 +640 480 +421 640 +640 480 +390 640 +640 480 +439 640 +640 427 +427 640 +640 480 +500 247 +500 333 +480 640 +640 368 +640 428 +426 640 +480 640 +640 426 +640 403 +640 427 +640 427 +640 480 +640 428 +321 500 +500 333 +640 480 +640 480 +640 480 +413 640 +640 427 +640 427 +334 500 +467 640 +500 375 +480 640 +480 640 +433 640 +500 375 +480 640 +640 424 +640 480 +640 480 +640 480 +375 500 +640 480 +640 428 +640 480 +640 426 +386 640 +640 429 +375 500 +640 426 +640 426 +427 640 +640 480 +640 349 +640 480 +640 480 +640 424 +375 500 +640 374 +640 480 +334 500 +640 480 +640 451 +480 640 +640 430 +640 427 +500 375 +478 640 +520 373 +640 478 +640 427 +612 612 +640 441 +480 640 +640 427 +640 426 +480 640 +640 429 +480 640 +612 612 +640 480 +640 427 +640 426 +480 640 +640 525 +375 500 +640 480 +640 411 +640 428 +640 428 +640 427 +640 427 +535 640 +375 500 +640 427 +640 428 +640 426 +480 640 +640 480 +612 612 +484 500 +640 426 +640 425 +640 427 +500 371 +500 320 +640 427 +480 640 +640 480 +640 424 +640 480 +640 427 +640 301 +500 333 +640 424 +640 480 +427 640 +612 612 +332 500 +640 439 +500 415 +427 640 +640 513 +640 427 +640 426 +640 480 +324 640 +640 480 +640 480 +375 500 +640 427 +640 480 +640 480 +612 612 +640 543 +640 480 +480 640 +640 446 +640 480 +640 480 +473 640 +640 421 +640 427 +640 425 +640 427 +640 427 +640 465 +640 395 +640 446 +640 405 +640 425 +640 375 +640 425 +640 327 +640 480 +427 640 +640 480 +640 427 +500 375 +640 480 +640 480 +428 640 +640 426 +640 480 +640 427 +640 514 +500 335 +640 445 +640 360 +375 500 +640 480 +640 480 +640 480 +640 425 +432 640 +640 425 +640 512 +640 424 +640 427 +640 427 +640 480 +640 480 +640 427 +640 426 +480 640 +640 480 +640 480 +478 640 +640 480 +640 480 +500 333 +500 375 +640 427 +640 426 +500 373 +486 640 +640 496 +640 480 +640 480 +640 480 +640 426 +640 428 +640 427 +640 425 +480 640 +500 375 +640 394 +640 427 +640 428 +640 480 +478 640 +640 480 +640 480 +480 640 +640 474 +640 406 +640 640 +375 500 +640 428 +640 480 +640 480 +500 333 +640 427 +478 640 +640 427 +640 480 +500 375 +234 500 +640 198 +500 375 +640 480 +640 444 +500 375 +480 640 +640 427 +640 640 +640 449 +640 426 +640 480 +500 375 +356 500 +427 640 +375 500 +487 640 +640 427 +640 640 +640 427 +640 436 +640 427 +640 427 +640 421 +640 360 +426 640 +640 430 +640 377 +640 480 +640 480 +640 480 +500 375 +640 480 +640 426 +640 426 +640 481 +640 480 +640 427 +640 444 +640 480 +640 480 +366 640 +500 332 +640 426 +640 480 +478 640 +480 640 +640 426 +427 640 +640 640 +640 427 +480 640 +640 424 +640 430 +612 612 +427 640 +640 640 +612 612 +640 427 +640 480 +480 640 +640 480 +640 427 +640 480 +640 424 +640 480 +640 480 +640 480 +640 480 +425 640 +640 514 +640 427 +640 480 +640 480 +640 426 +500 375 +480 640 +640 425 +500 375 +640 480 +640 480 +480 640 +427 640 +640 480 +500 375 +640 551 +640 427 +640 480 +640 456 +640 480 +335 500 +500 375 +427 640 +480 640 +640 427 +500 375 +640 480 +640 480 +480 640 +500 341 +443 640 +640 395 +640 173 +480 640 +640 448 +640 427 +548 640 +640 480 +640 480 +426 640 +480 640 +480 640 +500 331 +640 427 +640 480 +447 640 +640 480 +640 350 +640 484 +500 338 +640 480 +480 640 +640 425 +500 375 +640 483 +640 359 +640 426 +335 500 +640 426 +640 480 +480 640 +640 427 +640 478 +640 428 +640 480 +640 503 +480 640 +480 640 +640 481 +640 480 +640 238 +640 480 +640 427 +500 274 +640 622 +640 480 +640 427 +375 500 +640 480 +497 640 +640 640 +640 452 +640 426 +500 401 +640 473 +640 424 +640 424 +500 333 +480 640 +640 475 +640 480 +500 400 +640 427 +640 480 +500 347 +640 426 +640 422 +640 480 +640 427 +640 427 +640 425 +433 640 +640 524 +640 453 +640 480 +640 429 +640 480 +500 374 +500 375 +640 427 +426 640 +640 428 +640 428 +640 351 +640 459 +640 480 +640 480 +640 454 +477 640 +500 334 +375 500 +640 426 +640 427 +640 480 +426 640 +640 427 +640 480 +425 640 +640 480 +500 375 +476 640 +640 426 +640 427 +640 480 +640 480 +640 480 +640 468 +640 640 +640 480 +640 426 +640 425 +559 640 +640 398 +640 640 +640 427 +612 612 +640 480 +480 640 +640 480 +612 612 +640 480 +500 332 +640 359 +640 427 +360 640 +640 640 +423 640 +500 334 +640 427 +427 640 +640 427 +640 480 +640 480 +427 640 +480 640 +640 442 +640 480 +640 480 +640 426 +612 612 +640 426 +427 640 +640 470 +427 640 +419 640 +480 640 +640 427 +500 375 +485 640 +640 480 +640 453 +640 480 +640 478 +640 427 +640 480 +640 480 +612 612 +640 480 +425 640 +640 428 +640 427 +640 480 +640 456 +576 640 +640 427 +640 427 +640 480 +640 425 +640 439 +419 640 +480 640 +375 500 +480 640 +640 427 +427 640 +480 360 +500 330 +640 360 +569 640 +640 428 +640 485 +640 496 +640 427 +640 424 +640 594 +640 427 +640 480 +480 640 +640 480 +500 375 +427 640 +640 640 +500 388 +640 428 +640 426 +640 436 +427 640 +500 375 +375 500 +640 480 +640 427 +640 427 +640 480 +500 333 +640 457 +640 426 +640 425 +480 640 +380 640 +640 327 +500 335 +640 480 +640 427 +640 480 +640 425 +434 640 +640 480 +640 480 +640 427 +450 339 +478 640 +480 640 +640 480 +482 640 +640 424 +640 426 +640 512 +612 612 +640 478 +640 480 +640 427 +640 427 +640 427 +640 480 +612 612 +640 480 +500 333 +434 500 +640 446 +640 482 +640 480 +640 480 +640 478 +500 375 +640 427 +640 427 +500 334 +425 640 +640 427 +640 427 +478 640 +640 461 +640 477 +640 425 +640 427 +500 400 +640 389 +640 426 +424 640 +640 480 +640 361 +640 478 +333 500 +640 608 +640 480 +640 480 +375 500 +640 311 +640 427 +640 427 +640 393 +640 480 +500 333 +640 639 +640 376 +640 414 +490 640 +485 640 +640 344 +640 480 +640 427 +640 466 +640 427 +480 640 +640 613 +640 480 +640 426 +640 429 +640 259 +500 333 +612 612 +640 640 +480 640 +640 480 +640 480 +640 427 +640 458 +480 640 +423 640 +500 375 +640 480 +640 480 +500 333 +480 640 +640 480 +443 640 +640 428 +640 427 +400 640 +640 480 +640 427 +500 500 +640 480 +500 333 +600 600 +640 427 +640 320 +480 640 +640 480 +640 406 +427 640 +640 427 +640 419 +640 480 +640 427 +640 429 +640 640 +640 427 +500 477 +640 480 +640 480 +640 480 +612 612 +640 429 +480 640 +640 480 +640 458 +640 426 +500 440 +640 360 +500 334 +640 480 +640 427 +640 480 +640 427 +640 428 +500 375 +640 427 +640 426 +332 500 +427 640 +427 640 +500 375 +640 427 +640 480 +640 518 +640 480 +640 427 +480 640 +640 640 +640 425 +640 427 +481 640 +640 359 +640 480 +640 360 +640 428 +640 480 +640 419 +640 480 +640 480 +640 480 +640 480 +640 426 +640 424 +640 321 +640 478 +640 482 +500 375 +640 480 +640 480 +506 640 +640 480 +640 469 +640 377 +640 359 +640 480 +500 335 +640 478 +640 427 +640 287 +640 480 +375 500 +640 480 +428 640 +456 640 +480 640 +640 493 +640 481 +480 640 +640 480 +640 428 +375 500 +640 480 +640 371 +640 427 +500 375 +427 640 +640 480 +500 375 +640 337 +468 640 +426 640 +640 484 +480 640 +640 427 +640 425 +500 424 +640 480 +640 427 +640 427 +640 427 +640 480 +640 610 +640 480 +640 480 +640 426 +463 640 +640 429 +640 427 +640 522 +640 480 +640 428 +640 480 +480 640 +640 427 +424 640 +480 640 +640 457 +500 367 +640 448 +496 640 +500 375 +480 640 +640 425 +640 425 +640 480 +500 334 +640 369 +427 640 +640 480 +375 500 +640 480 +640 480 +640 411 +333 500 +640 512 +640 427 +640 474 +640 480 +640 427 +640 478 +427 640 +640 358 +640 640 +640 472 +567 378 +640 404 +640 427 +480 640 +640 428 +640 427 +640 480 +427 640 +640 433 +640 638 +480 640 +640 470 +640 591 +640 427 +640 427 +612 612 +550 365 +640 640 +527 640 +640 427 +640 480 +640 480 +640 480 +640 640 +640 459 +480 640 +480 640 +640 427 +640 480 +640 480 +640 480 +640 427 +427 640 +640 427 +333 500 +640 480 +640 426 +640 426 +640 427 +426 640 +640 228 +612 612 +640 426 +612 612 +640 426 +640 640 +640 523 +480 640 +479 640 +640 428 +640 480 +500 375 +640 414 +500 375 +640 480 +480 640 +414 278 +424 640 +640 480 +480 640 +500 375 +612 612 +640 544 +427 640 +640 427 +640 480 +500 331 +640 429 +640 427 +640 480 +640 426 +640 426 +640 480 +640 480 +366 640 +640 427 +640 480 +640 480 +427 640 +640 589 +500 375 +640 426 +640 568 +640 395 +640 427 +640 426 +640 480 +640 480 +640 480 +640 360 +640 561 +640 480 +640 427 +640 480 +640 480 +500 375 +427 640 +425 640 +640 459 +523 640 +488 640 +478 640 +640 426 +500 333 +480 640 +612 612 +640 425 +480 640 +640 425 +640 427 +500 375 +640 552 +640 480 +434 640 +500 334 +500 375 +515 640 +640 480 +425 640 +640 198 +640 426 +640 427 +640 440 +640 427 +640 427 +500 375 +640 402 +500 500 +640 480 +640 346 +500 333 +640 458 +480 640 +640 480 +640 426 +500 375 +640 480 +427 640 +640 425 +480 640 +500 441 +640 480 +428 640 +640 480 +612 612 +640 480 +640 427 +640 501 +500 375 +640 480 +640 427 +441 640 +424 640 +427 640 +640 427 +640 480 +480 320 +500 379 +552 640 +640 426 +640 346 +640 427 +640 512 +480 640 +640 512 +612 612 +640 480 +500 375 +640 640 +375 500 +640 426 +640 359 +612 612 +612 612 +640 428 +640 480 +640 427 +640 428 +640 428 +640 263 +375 500 +640 427 +252 360 +640 425 +640 424 +500 331 +640 480 +500 331 +640 480 +640 480 +480 640 +640 428 +427 640 +640 427 +417 500 +640 480 +426 640 +640 427 +383 640 +480 640 +640 480 +640 512 +640 431 +612 612 +450 600 +640 426 +640 502 +640 480 +640 457 +640 427 +640 424 +640 480 +640 480 +640 427 +378 640 +612 612 +640 426 +640 480 +418 640 +640 426 +333 500 +640 480 +640 480 +640 432 +500 375 +500 347 +640 427 +640 451 +640 480 +640 480 +640 266 +640 426 +640 360 +500 374 +427 640 +640 427 +480 640 +640 431 +500 333 +640 480 +375 500 +640 480 +640 482 +640 480 +640 426 +640 478 +640 480 +640 424 +640 480 +640 427 +640 480 +425 640 +640 427 +640 480 +640 480 +640 424 +480 640 +640 427 +640 480 +426 640 +640 426 +640 480 +640 427 +480 640 +480 640 +480 640 +640 478 +640 480 +640 480 +640 480 +640 480 +640 480 +640 426 +640 480 +500 333 +640 427 +640 427 +500 333 +640 427 +480 640 +480 640 +640 480 +428 640 +640 480 +500 334 +640 347 +640 442 +640 480 +640 480 +640 427 +640 411 +425 640 +640 427 +480 640 +640 427 +640 480 +640 480 +500 387 +640 480 +480 640 +500 332 +453 500 +480 640 +640 480 +640 427 +500 334 +640 427 +500 500 +640 480 +500 375 +640 428 +640 640 +640 424 +500 376 +427 640 +640 427 +640 427 +640 427 +640 480 +640 480 +500 375 +640 422 +640 486 +640 428 +500 322 +500 375 +640 480 +640 513 +427 640 +640 425 +640 480 +640 450 +640 427 +640 480 +640 480 +640 480 +500 332 +640 421 +640 480 +640 426 +640 427 +640 424 +640 428 +640 480 +640 480 +640 480 +427 640 +640 640 +640 480 +640 359 +640 448 +374 500 +425 640 +259 194 +640 428 +640 427 +640 534 +640 480 +640 480 +640 346 +500 375 +425 640 +426 640 +640 480 +640 480 +640 480 +400 640 +640 480 +640 427 +640 427 +419 640 +640 427 +640 614 +500 375 +640 457 +640 428 +640 427 +500 375 +640 483 +500 375 +640 426 +640 388 +640 426 +640 480 +500 341 +640 427 +640 480 +640 425 +500 375 +640 480 +640 427 +640 355 +640 480 +427 640 +500 375 +640 480 +500 400 +401 640 +640 480 +640 426 +640 427 +640 427 +640 551 +640 480 +640 428 +428 640 +427 640 +640 427 +640 480 +426 640 +459 640 +480 640 +640 480 +640 424 +640 480 +333 500 +482 640 +640 480 +640 480 +640 480 +640 360 +640 426 +512 640 +427 640 +375 500 +375 500 +640 480 +640 427 +640 599 +640 454 +456 640 +332 500 +640 426 +640 436 +426 640 +640 480 +480 640 +640 480 +612 612 +640 480 +427 640 +500 334 +640 480 +640 480 +640 480 +640 480 +640 445 +500 375 +640 427 +640 480 +500 375 +640 445 +443 640 +480 640 +640 428 +640 427 +640 426 +512 640 +640 427 +640 374 +500 332 +375 500 +640 480 +640 480 +500 383 +640 427 +500 333 +500 375 +640 535 +640 426 +640 480 +640 425 +640 480 +420 640 +427 640 +480 640 +640 426 +426 640 +500 375 +640 480 +500 333 +480 640 +640 480 +425 640 +640 480 +640 480 +640 422 +640 425 +640 480 +612 612 +500 333 +640 639 +640 429 +500 375 +427 640 +453 640 +500 261 +500 333 +640 478 +425 640 +612 612 +428 640 +640 426 +480 640 +640 331 +640 510 +500 333 +640 427 +640 427 +640 480 +640 376 +640 478 +500 375 +640 427 +640 409 +481 640 +431 640 +640 480 +640 480 +640 480 +426 640 +640 436 +640 534 +640 385 +640 426 +640 480 +367 415 +375 500 +640 430 +640 480 +640 446 +640 480 +640 438 +640 428 +640 480 +500 375 +640 427 +640 361 +640 427 +640 468 +640 480 +427 640 +640 480 +640 425 +604 402 +640 426 +374 500 +640 318 +470 640 +640 359 +640 427 +640 540 +640 427 +457 640 +640 480 +640 360 +640 478 +640 480 +640 426 +450 600 +500 442 +640 640 +640 445 +640 480 +640 425 +640 514 +640 478 +426 640 +640 424 +640 425 +360 640 +640 306 +640 512 +640 480 +500 375 +478 640 +640 441 +396 500 +640 375 +594 445 +640 427 +640 480 +640 425 +640 480 +640 427 +640 426 +640 480 +640 426 +640 426 +640 427 +500 375 +480 640 +640 359 +612 612 +640 480 +640 480 +640 480 +500 310 +612 612 +500 471 +640 427 +640 427 +640 372 +640 427 +640 412 +481 640 +640 293 +500 334 +640 424 +500 375 +480 640 +640 512 +480 640 +612 612 +640 468 +640 424 +333 500 +612 612 +424 640 +500 375 +640 480 +500 333 +425 640 +640 426 +640 480 +480 640 +640 427 +480 640 +640 427 +640 480 +640 384 +640 439 +480 640 +426 640 +612 612 +640 303 +640 480 +640 384 +640 480 +640 427 +500 375 +640 480 +640 427 +640 480 +640 491 +640 430 +640 480 +379 640 +640 480 +480 640 +500 375 +640 530 +640 427 +640 456 +515 640 +640 480 +500 334 +640 480 +640 437 +640 480 +480 640 +640 480 +356 500 +640 478 +640 427 +640 427 +428 640 +480 640 +480 640 +480 640 +640 480 +640 425 +640 408 +640 309 +640 226 +359 640 +480 640 +640 427 +640 471 +480 640 +500 375 +640 426 +640 425 +640 498 +640 360 +480 640 +437 500 +640 427 +375 500 +500 344 +480 640 +640 473 +640 426 +640 480 +640 431 +640 273 +640 427 +640 427 +640 427 +500 375 +640 480 +480 640 +640 427 +640 427 +640 639 +500 375 +526 640 +469 640 +500 345 +640 480 +612 612 +480 640 +480 640 +640 534 +320 320 +333 500 +336 500 +640 426 +640 441 +640 612 +640 425 +500 375 +640 480 +640 480 +471 640 +480 640 +500 375 +640 480 +640 480 +640 480 +640 480 +640 480 +341 640 +640 480 +480 640 +480 640 +640 426 +640 448 +612 612 +353 500 +480 640 +499 640 +640 373 +640 393 +640 444 +640 427 +640 360 +500 348 +500 375 +640 480 +640 640 +640 480 +640 480 +500 375 +441 640 +493 640 +640 427 +640 480 +500 333 +640 481 +640 372 +640 453 +640 427 +640 480 +500 357 +640 427 +640 480 +640 327 +612 612 +424 640 +640 359 +640 472 +640 428 +640 480 +640 320 +425 640 +640 480 +612 612 +480 640 +480 640 +375 500 +480 640 +427 640 +640 427 +425 319 +640 480 +640 427 +640 425 +640 480 +640 425 +640 425 +640 427 +640 427 +500 334 +640 426 +640 427 +640 480 +640 480 +640 444 +480 640 +640 554 +640 480 +612 612 +640 428 +500 375 +640 480 +640 427 +640 428 +500 354 +427 640 +500 333 +414 640 +480 640 +640 488 +640 480 +594 640 +612 612 +640 361 +640 480 +467 640 +640 526 +640 480 +500 491 +640 480 +400 640 +640 569 +480 640 +640 426 +640 480 +640 427 +480 640 +640 480 +500 375 +640 426 +427 640 +640 427 +500 375 +640 480 +480 640 +640 426 +375 500 +640 480 +640 369 +640 428 +426 640 +480 640 +640 426 +640 480 +480 640 +425 640 +640 425 +427 640 +640 435 +640 507 +640 480 +500 333 +640 426 +640 473 +612 612 +640 427 +640 427 +500 375 +640 640 +375 500 +640 480 +640 428 +427 640 +639 640 +480 640 +640 423 +640 391 +640 480 +640 480 +640 389 +478 640 +640 427 +612 612 +463 640 +640 480 +480 640 +427 640 +640 480 +480 640 +481 640 +640 640 +500 338 +640 480 +640 480 +640 360 +500 375 +640 480 +500 375 +640 426 +640 479 +500 375 +640 493 +640 486 +481 640 +486 381 +500 375 +640 428 +427 640 +640 456 +497 640 +426 640 +640 427 +500 375 +640 429 +640 456 +640 360 +640 478 +428 640 +480 640 +640 480 +500 483 +640 426 +381 640 +640 480 +640 443 +640 480 +640 428 +640 424 +640 480 +640 407 +640 426 +640 480 +480 640 +640 480 +640 428 +640 359 +426 640 +640 427 +640 480 +640 428 +427 640 +640 481 +375 500 +573 640 +500 333 +640 428 +640 476 +612 612 +640 480 +640 480 +500 375 +426 640 +375 500 +640 480 +640 480 +640 359 +480 640 +637 640 +640 423 +640 394 +640 480 +500 375 +612 612 +640 360 +640 426 +640 427 +640 640 +640 480 +332 500 +640 427 +640 480 +333 500 +640 426 +640 541 +640 427 +640 640 +640 480 +640 426 +450 338 +640 428 +640 428 +640 354 +640 524 +480 640 +480 640 +640 480 +640 424 +500 332 +640 426 +640 480 +500 375 +480 640 +640 351 +640 480 +640 480 +531 640 +480 640 +375 500 +640 427 +427 640 +612 612 +427 640 +640 441 +640 480 +638 640 +640 426 +488 640 +424 640 +500 400 +640 426 +640 427 +480 640 +333 500 +640 579 +640 427 +640 320 +360 640 +640 427 +640 480 +640 480 +500 332 +640 427 +480 640 +640 467 +635 640 +640 427 +497 640 +640 480 +427 640 +640 428 +424 640 +640 480 +427 640 +478 640 +480 640 +640 424 +427 640 +640 480 +640 480 +640 426 +427 640 +500 375 +640 432 +640 479 +640 360 +640 427 +640 424 +640 480 +640 480 +478 640 +427 640 +640 480 +428 640 +500 375 +640 427 +375 500 +640 429 +640 427 +640 426 +427 640 +640 620 +375 500 +438 351 +640 427 +575 640 +640 480 +640 428 +640 480 +640 480 +640 480 +640 480 +480 640 +500 342 +429 640 +480 640 +640 394 +640 480 +640 298 +427 640 +500 378 +640 511 +500 333 +640 480 +334 500 +640 480 +640 423 +640 426 +640 427 +640 480 +640 388 +640 444 +640 531 +453 640 +500 375 +640 234 +500 333 +426 640 +640 428 +640 480 +640 428 +480 640 +640 472 +480 640 +375 500 +640 480 +480 640 +500 332 +640 427 +640 398 +640 425 +640 478 +640 427 +427 640 +480 640 +500 334 +640 480 +612 612 +640 480 +640 427 +427 640 +427 640 +333 500 +640 480 +640 480 +500 375 +640 480 +333 500 +640 480 +375 500 +640 625 +500 333 +500 375 +500 375 +480 640 +640 480 +500 333 +640 371 +640 481 +480 640 +480 640 +640 480 +427 640 +427 640 +640 427 +612 612 +500 330 +430 500 +500 333 +640 480 +640 425 +480 640 +640 480 +640 405 +640 425 +640 427 +640 427 +640 467 +640 478 +427 640 +640 480 +333 500 +640 426 +500 375 +640 549 +480 640 +640 427 +640 427 +640 480 +640 480 +640 426 +640 640 +640 480 +427 640 +500 375 +480 640 +640 500 +640 425 +640 320 +480 640 +500 376 +640 480 +479 640 +640 504 +480 640 +480 640 +500 375 +640 640 +640 425 +640 480 +640 428 +426 640 +640 427 +640 480 +640 424 +640 480 +640 640 +640 360 +640 480 +640 640 +500 375 +500 384 +640 426 +500 334 +640 480 +640 480 +640 427 +400 300 +480 640 +640 427 +612 612 +640 429 +640 424 +640 557 +640 427 +427 640 +640 440 +640 480 +640 321 +640 427 +500 375 +640 426 +500 375 +480 640 +640 391 +500 375 +640 480 +480 640 +640 425 +640 427 +429 640 +640 427 +640 425 +640 428 +500 374 +640 425 +640 425 +640 477 +640 427 +375 500 +640 480 +640 457 +640 383 +480 640 +425 640 +426 640 +640 480 +427 640 +640 466 +640 427 +640 428 +640 542 +480 640 +640 480 +640 480 +640 480 +640 640 +480 640 +640 479 +480 640 +340 505 +500 500 +640 454 +500 375 +640 427 +480 640 +640 480 +480 640 +640 427 +333 500 +640 480 +408 640 +640 480 +640 427 +640 480 +480 640 +225 300 +640 424 +480 640 +375 500 +640 480 +640 426 +640 480 +427 640 +500 375 +640 463 +640 433 +427 640 +612 612 +612 612 +640 425 +640 480 +640 480 +640 512 +640 353 +500 375 +640 480 +500 375 +640 427 +480 640 +480 640 +640 480 +500 375 +640 640 +500 375 +640 481 +500 375 +424 640 +640 480 +640 480 +480 640 +640 396 +637 419 +640 480 +640 480 +640 427 +612 612 +427 640 +428 640 +331 500 +640 478 +640 429 +640 360 +500 375 +640 428 +640 480 +640 480 +453 500 +640 427 +640 425 +480 640 +385 308 +640 479 +612 612 +424 640 +640 423 +640 480 +640 427 +640 640 +640 428 +640 480 +640 427 +640 427 +640 359 +480 640 +640 480 +612 612 +640 428 +640 427 +640 480 +640 397 +500 375 +640 480 +640 480 +640 427 +500 332 +640 480 +640 431 +640 480 +640 480 +640 486 +500 375 +400 300 +480 640 +640 480 +640 427 +640 427 +640 427 +640 427 +640 480 +285 500 +480 640 +500 333 +640 416 +640 427 +640 427 +458 640 +640 480 +640 427 +500 375 +480 343 +500 500 +428 640 +640 491 +640 426 +640 480 +640 424 +480 640 +640 624 +612 612 +640 480 +640 480 +640 427 +640 480 +640 640 +500 314 +640 359 +640 457 +640 427 +480 640 +472 640 +600 600 +640 427 +640 421 +640 427 +640 480 +612 612 +500 333 +640 427 +640 480 +640 480 +640 640 +640 480 +640 480 +640 538 +640 414 +427 640 +640 480 +640 480 +640 427 +640 427 +640 492 +640 360 +640 457 +640 480 +640 427 +640 480 +500 342 +480 640 +424 640 +640 480 +640 480 +640 426 +640 640 +640 480 +480 640 +640 480 +640 425 +427 640 +500 375 +427 640 +427 640 +500 375 +640 480 +640 426 +480 640 +427 640 +640 424 +500 333 +640 517 +427 640 +529 640 +640 427 +440 640 +480 640 +480 640 +640 426 +640 427 +612 612 +640 480 +640 478 +640 480 +640 426 +640 295 +640 480 +640 480 +500 334 +500 375 +640 423 +480 640 +640 480 +480 640 +640 513 +640 427 +640 481 +640 393 +640 480 +427 640 +640 424 +427 640 +640 451 +640 383 +640 425 +427 640 +640 480 +480 640 +640 427 +500 333 +427 640 +640 463 +640 428 +640 480 +640 426 +640 449 +640 427 +428 640 +640 480 +333 500 +427 640 +640 426 +640 426 +640 427 +640 424 +640 427 +402 600 +640 482 +640 427 +500 333 +640 480 +640 480 +640 426 +640 457 +640 480 +640 423 +640 480 +640 426 +427 640 +640 480 +500 333 +640 426 +500 375 +640 480 +640 360 +427 640 +640 480 +500 375 +640 259 +640 480 +640 480 +360 640 +480 640 +483 640 +640 480 +640 465 +640 480 +640 480 +424 640 +500 335 +640 360 +640 429 +640 457 +360 640 +640 480 +640 427 +640 426 +640 428 +426 640 +466 640 +640 425 +500 375 +640 426 +640 426 +333 500 +640 455 +640 425 +640 494 +500 332 +640 428 +640 480 +640 480 +612 612 +640 427 +612 612 +383 640 +640 480 +640 427 +334 500 +640 640 +500 335 +640 480 +480 640 +640 480 +640 480 +640 427 +612 612 +640 418 +375 500 +640 480 +640 480 +640 480 +425 640 +640 480 +640 480 +500 333 +640 480 +640 480 +480 640 +640 480 +640 426 +640 478 +640 428 +500 333 +640 631 +640 480 +375 500 +640 426 +578 640 +640 473 +640 415 +427 640 +427 640 +479 640 +640 480 +426 640 +612 612 +500 375 +640 480 +640 489 +640 412 +640 480 +383 640 +640 360 +427 640 +500 333 +640 427 +640 480 +426 640 +640 425 +640 509 +640 383 +640 480 +640 427 +640 480 +640 427 +640 480 +640 480 +480 640 +449 640 +640 426 +500 333 +640 427 +640 360 +480 640 +640 425 +400 500 +640 427 +640 480 +640 428 +640 431 +640 480 +500 400 +640 480 +640 480 +640 480 +640 480 +640 426 +640 361 +480 640 +480 640 +640 480 +640 480 +640 469 +500 333 +500 332 +640 480 +346 640 +640 491 +427 640 +640 480 +640 435 +640 426 +640 427 +640 427 +500 375 +426 640 +480 640 +480 640 +329 500 +640 478 +213 320 +427 640 +640 426 +640 480 +640 426 +500 375 +640 425 +640 639 +309 640 +640 427 +640 640 +500 336 +640 640 +640 480 +640 480 +333 500 +640 480 +431 640 +640 480 +640 480 +480 640 +640 426 +640 427 +500 298 +640 426 +640 480 +375 500 +640 631 +640 427 +640 480 +640 480 +640 428 +634 354 +500 375 +428 640 +640 640 +640 480 +640 480 +640 513 +640 425 +640 426 +640 411 +640 478 +640 480 +640 426 +640 480 +640 480 +333 500 +500 284 +375 500 +640 383 +640 427 +640 353 +640 426 +500 380 +640 480 +640 480 +640 427 +640 429 +480 640 +640 427 +500 334 +213 320 +500 333 +640 640 +612 612 +480 640 +640 480 +640 290 +640 427 +640 640 +480 640 +640 480 +640 427 +469 640 +427 640 +500 451 +640 480 +500 366 +640 428 +640 427 +640 480 +612 612 +640 480 +500 375 +399 640 +500 332 +640 327 +500 396 +640 433 +640 427 +427 640 +640 480 +427 640 +427 640 +640 427 +480 640 +640 427 +640 480 +426 640 +480 640 +640 323 +640 457 +640 426 +640 478 +640 446 +426 640 +428 640 +640 480 +427 640 +640 432 +640 359 +640 482 +640 425 +314 188 +355 640 +640 427 +500 355 +500 338 +640 480 +429 640 +500 332 +640 360 +500 281 +640 427 +500 282 +640 428 +500 379 +640 480 +640 427 +640 426 +335 500 +640 456 +640 396 +640 424 +640 480 +640 427 +484 640 +427 640 +640 480 +640 428 +640 428 +640 432 +612 612 +332 500 +640 427 +480 640 +640 480 +366 500 +480 640 +640 508 +640 424 +640 425 +640 425 +480 640 +480 640 +500 375 +640 549 +640 427 +640 424 +500 375 +640 480 +640 470 +640 480 +640 480 +480 640 +640 427 +478 640 +640 360 +427 640 +640 440 +426 640 +640 426 +500 333 +612 612 +640 480 +503 640 +640 427 +480 640 +640 449 +500 479 +640 480 +480 640 +640 427 +640 426 +640 427 +640 425 +640 415 +640 427 +640 427 +640 428 +486 640 +640 486 +640 419 +640 424 +640 480 +640 369 +500 375 +427 640 +640 424 +500 347 +640 615 +640 480 +500 375 +500 375 +640 480 +640 480 +640 480 +427 640 +640 428 +500 333 +640 416 +500 375 +419 640 +640 425 +640 480 +480 640 +480 640 +424 640 +427 640 +640 426 +480 640 +640 480 +480 640 +640 425 +640 360 +640 427 +640 424 +640 480 +640 427 +640 480 +640 427 +640 480 +640 425 +640 428 +640 480 +640 480 +640 478 +640 480 +640 428 +612 612 +640 636 +500 333 +480 640 +640 437 +428 640 +612 612 +640 459 +640 480 +640 480 +640 480 +427 640 +640 480 +640 507 +640 480 +640 427 +640 427 +640 427 +640 480 +640 457 +640 480 +500 375 +640 383 +500 332 +640 480 +375 500 +640 427 +426 640 +640 480 +640 427 +640 480 +640 427 +375 500 +640 480 +480 640 +478 640 +375 500 +480 640 +500 375 +640 480 +427 640 +640 480 +640 427 +334 500 +500 375 +640 361 +511 640 +500 334 +640 480 +640 480 +640 640 +640 480 +500 375 +640 480 +640 480 +640 426 +640 425 +640 524 +479 640 +640 480 +640 480 +640 427 +480 640 +640 480 +640 428 +500 375 +606 640 +480 640 +640 426 +500 392 +640 451 +640 485 +427 640 +640 428 +640 457 +640 424 +640 480 +640 427 +493 640 +640 398 +500 333 +427 640 +640 427 +640 432 +640 480 +640 480 +640 427 +640 361 +640 425 +500 375 +640 438 +432 288 +612 612 +640 480 +500 376 +480 640 +640 479 +400 640 +640 426 +500 377 +375 500 +640 424 +443 640 +640 480 +640 427 +427 640 +480 640 +626 640 +640 550 +500 335 +550 640 +640 428 +452 640 +500 350 +499 500 +640 427 +569 640 +640 480 +640 425 +500 334 +640 420 +640 427 +640 441 +640 480 +500 500 +640 480 +640 598 +333 500 +480 640 +427 640 +640 480 +640 480 +612 612 +500 335 +640 480 +640 640 +600 450 +427 640 +640 400 +507 640 +640 480 +500 375 +500 332 +640 480 +510 640 +640 480 +640 429 +480 640 +500 333 +640 427 +640 346 +281 500 +640 480 +427 640 +640 454 +640 439 +375 500 +640 427 +448 336 +640 533 +640 424 +480 640 +640 480 +640 427 +640 425 +326 640 +640 532 +640 480 +640 480 +640 480 +640 383 +480 640 +640 480 +640 427 +640 427 +640 480 +480 640 +640 384 +480 640 +640 456 +500 375 +640 480 +640 428 +427 640 +640 541 +500 333 +640 436 +640 482 +640 427 +640 537 +640 426 +480 356 +640 427 +640 480 +640 427 +640 480 +480 640 +640 424 +640 427 +640 480 +640 427 +640 360 +500 375 +640 427 +560 600 +640 427 +533 640 +477 640 +640 424 +640 458 +640 427 +480 640 +640 428 +640 427 +399 500 +640 640 +480 640 +478 640 +640 480 +640 480 +640 427 +612 612 +480 640 +640 470 +640 425 +640 431 +425 640 +640 427 +640 427 +640 463 +427 640 +640 480 +640 427 +640 438 +480 640 +640 427 +640 462 +640 442 +640 480 +429 640 +640 427 +640 480 +500 375 +612 612 +640 640 +640 387 +427 640 +640 320 +640 427 +640 480 +640 427 +480 640 +640 429 +480 640 +480 640 +335 500 +640 425 +640 425 +500 375 +640 480 +640 640 +427 640 +640 480 +640 480 +640 480 +453 640 +640 478 +640 425 +500 379 +640 427 +640 480 +500 346 +640 547 +427 640 +399 600 +640 480 +640 327 +640 427 +640 427 +640 427 +640 427 +640 480 +640 427 +640 283 +640 480 +640 480 +435 640 +424 640 +600 400 +640 427 +640 354 +640 556 +612 612 +480 640 +640 480 +640 511 +640 480 +480 640 +640 428 +640 271 +640 480 +640 480 +640 425 +640 383 +428 640 +640 480 +480 640 +640 427 +315 352 +640 480 +426 640 +480 640 +640 427 +640 401 +640 480 +640 480 +640 426 +640 427 +640 427 +640 480 +640 480 +640 480 +640 480 +640 424 +640 513 +459 640 +427 640 +640 640 +640 427 +640 478 +640 416 +640 427 +480 640 +640 423 +480 640 +640 466 +640 544 +640 437 +375 500 +640 492 +375 500 +640 424 +640 370 +640 513 +640 429 +427 640 +640 427 +426 640 +428 640 +640 426 +640 640 +500 384 +627 640 +640 427 +640 427 +640 427 +428 640 +640 512 +640 480 +640 427 +640 480 +500 376 +640 428 +640 384 +480 640 +640 478 +640 480 +640 427 +426 640 +563 640 +640 480 +640 430 +500 333 +640 633 +640 426 +426 640 +640 427 +480 640 +640 638 +640 400 +640 480 +640 480 +640 427 +640 424 +640 427 +640 427 +640 480 +480 640 +640 450 +612 612 +640 483 +640 480 +640 480 +640 427 +450 412 +480 640 +640 443 +640 480 +640 480 +640 434 +640 425 +640 427 +640 360 +640 427 +480 640 +640 378 +640 480 +480 640 +640 480 +640 480 +640 426 +640 480 +640 384 +640 427 +640 480 +640 427 +640 480 +640 360 +640 532 +640 360 +640 556 +640 427 +640 480 +528 640 +640 480 +500 333 +640 427 +426 640 +640 425 +640 428 +425 640 +640 480 +617 640 +418 500 +640 480 +427 640 +640 457 +427 640 +640 480 +374 500 +500 400 +640 480 +484 640 +640 480 +640 431 +640 426 +640 428 +500 375 +640 480 +640 429 +640 427 +640 427 +640 427 +640 427 +480 640 +436 640 +500 333 +479 640 +640 480 +612 612 +640 480 +640 427 +480 640 +640 427 +500 481 +640 451 +640 336 +640 335 +640 480 +500 375 +640 427 +640 480 +640 428 +640 428 +640 501 +640 427 +640 480 +480 640 +427 640 +640 427 +640 480 +640 427 +640 395 +426 640 +427 640 +640 480 +640 426 +640 480 +480 640 +640 426 +640 383 +640 480 +609 640 +640 387 +448 336 +640 457 +640 426 +375 500 +423 640 +480 640 +500 334 +375 500 +640 353 +640 480 +375 500 +640 405 +500 333 +640 480 +427 640 +506 373 +500 375 +640 480 +500 375 +640 480 +640 413 +640 426 +640 427 +640 480 +640 427 +640 480 +640 437 +640 350 +480 640 +640 426 +640 513 +640 425 +480 640 +500 375 +640 426 +640 493 +640 425 +480 640 +500 493 +640 427 +640 480 +483 640 +640 480 +640 480 +500 375 +480 640 +640 378 +500 335 +500 360 +640 543 +640 480 +333 500 +640 480 +640 428 +640 480 +333 500 +640 427 +640 367 +640 427 +640 480 +640 480 +640 480 +640 458 +426 640 +640 480 +480 640 +640 480 +640 480 +640 427 +640 436 +640 451 +500 375 +640 480 +640 427 +640 480 +640 394 +640 480 +500 332 +640 439 +480 640 +500 400 +640 519 +640 480 +640 478 +640 456 +640 428 +640 480 +427 640 +500 375 +250 640 +640 480 +480 640 +640 512 +640 480 +288 352 +428 640 +480 640 +375 500 +640 480 +640 424 +640 480 +640 462 +640 480 +640 428 +640 481 +500 375 +640 480 +640 477 +640 427 +496 640 +513 640 +640 427 +640 371 +640 428 +383 640 +640 480 +375 500 +427 640 +640 427 +480 640 +427 640 +640 480 +640 481 +640 480 +640 425 +640 480 +640 458 +640 427 +640 480 +640 480 +640 480 +640 405 +640 480 +640 428 +320 240 +640 480 +479 640 +640 480 +640 480 +640 428 +480 640 +640 427 +460 640 +612 612 +640 439 +640 480 +612 612 +480 640 +640 425 +640 427 +640 480 +640 480 +500 375 +427 640 +380 285 +375 500 +640 427 +640 480 +640 426 +640 427 +640 480 +640 480 +640 490 +500 329 +612 612 +640 480 +425 640 +483 640 +500 333 +640 427 +640 427 +640 480 +640 479 +640 427 +480 640 +612 612 +433 640 +640 428 +479 640 +520 480 +427 640 +640 517 +640 428 +604 640 +500 375 +640 480 +500 333 +640 480 +427 640 +640 480 +640 478 +375 500 +640 427 +640 427 +425 640 +427 640 +426 640 +428 640 +640 427 +640 444 +436 640 +480 640 +551 640 +640 478 +500 327 +640 480 +480 640 +480 640 +640 427 +640 480 +500 377 +326 500 +640 480 +480 640 +640 424 +427 640 +640 480 +640 480 +424 640 +640 480 +640 427 +640 640 +640 429 +640 480 +480 640 +427 640 +640 427 +640 480 +640 480 +480 640 +640 359 +423 640 +640 427 +640 429 +640 480 +640 480 +500 375 +640 427 +453 640 +640 480 +640 427 +640 480 +500 375 +480 640 +640 577 +500 375 +500 332 +640 427 +640 480 +640 480 +426 640 +640 480 +622 640 +640 516 +426 640 +427 640 +640 428 +480 640 +640 359 +640 429 +640 426 +640 573 +480 640 +640 428 +640 360 +288 384 +480 640 +427 640 +500 375 +427 640 +640 480 +640 426 +640 427 +640 480 +500 333 +640 427 +640 480 +640 424 +640 424 +424 640 +640 426 +640 529 +640 424 +640 427 +640 480 +500 479 +500 332 +612 612 +427 640 +500 375 +640 480 +640 480 +375 500 +600 450 +640 480 +375 500 +480 640 +640 480 +500 375 +640 366 +640 640 +334 500 +640 426 +375 500 +640 480 +640 360 +500 375 +640 425 +482 640 +375 500 +640 480 +481 640 +640 424 +640 426 +640 480 +375 500 +427 640 +640 478 +640 594 +640 480 +640 372 +640 493 +375 500 +640 480 +640 480 +427 640 +640 480 +480 640 +450 469 +640 427 +640 480 +640 480 +640 480 +568 640 +480 640 +480 640 +480 640 +368 640 +640 429 +640 427 +500 333 +612 612 +640 480 +640 429 +500 375 +640 427 +640 428 +640 427 +640 425 +500 335 +500 375 +500 332 +640 425 +500 478 +640 427 +640 427 +427 640 +640 428 +480 640 +428 640 +640 480 +640 596 +640 427 +640 480 +640 427 +640 480 +640 480 +480 640 +640 418 +640 480 +382 500 +640 423 +500 425 +500 375 +640 425 +640 521 +640 427 +360 640 +640 480 +640 427 +640 484 +640 426 +640 481 +640 424 +426 640 +480 640 +427 640 +640 480 +500 343 +640 471 +623 640 +480 640 +640 480 +431 640 +640 503 +640 480 +640 349 +640 426 +640 480 +640 424 +427 640 +640 480 +640 427 +640 499 +640 480 +500 375 +640 480 +640 458 +333 500 +640 384 +640 426 +640 427 +640 512 +640 480 +640 480 +480 640 +640 428 +640 483 +640 425 +640 427 +640 480 +427 640 +640 480 +640 468 +500 336 +480 640 +640 425 +480 640 +640 509 +640 427 +640 428 +640 528 +640 480 +640 480 +480 640 +640 512 +500 375 +640 480 +640 480 +640 480 +480 640 +500 375 +480 640 +480 640 +640 480 +640 320 +640 425 +333 500 +612 612 +403 500 +640 414 +640 480 +640 427 +480 640 +640 428 +640 428 +640 426 +327 293 +640 579 +640 640 +500 333 +640 427 +480 640 +427 640 +640 478 +640 480 +640 426 +640 480 +427 640 +388 640 +640 480 +568 640 +640 424 +640 415 +500 375 +500 375 +640 427 +640 426 +320 500 +400 300 +492 640 +427 640 +640 427 +427 640 +640 480 +500 337 +480 640 +428 640 +480 640 +640 480 +480 640 +640 428 +640 461 +640 480 +640 480 +640 496 +427 640 +640 480 +500 321 +640 480 +640 427 +360 640 +480 640 +640 448 +640 480 +640 438 +640 427 +333 500 +640 427 +500 430 +640 425 +640 480 +640 457 +640 424 +640 480 +640 427 +640 480 +640 428 +640 484 +640 383 +520 363 +640 480 +500 375 +612 612 +640 427 +500 333 +500 311 +480 640 +640 480 +612 612 +500 375 +640 426 +640 480 +480 640 +375 500 +419 640 +640 454 +375 500 +640 426 +640 426 +480 640 +640 427 +640 480 +640 360 +640 512 +480 484 +640 456 +640 426 +640 480 +480 640 +640 483 +640 427 +640 425 +640 480 +640 480 +640 383 +640 480 +640 480 +640 426 +640 480 +640 427 +640 427 +480 640 +424 640 +640 480 +640 480 +640 480 +640 480 +640 426 +640 509 +640 640 +640 426 +480 640 +640 426 +480 640 +640 480 +640 428 +640 428 +480 640 +640 427 +640 480 +640 427 +640 429 +424 640 +640 480 +640 480 +640 427 +640 480 +429 640 +640 539 +640 479 +451 640 +640 480 +640 427 +640 480 +640 480 +640 465 +640 358 +640 428 +640 427 +500 391 +640 629 +331 500 +640 424 +500 333 +408 640 +640 480 +640 424 +640 410 +612 612 +500 375 +500 375 +480 640 +427 640 +480 640 +640 480 +640 427 +500 375 +640 480 +534 640 +640 424 +640 480 +640 480 +640 320 +427 640 +640 480 +500 375 +640 428 +480 640 +500 375 +320 240 +427 640 +334 500 +500 330 +517 640 +640 480 +640 480 +640 480 +640 426 +500 375 +640 425 +640 495 +640 480 +640 480 +640 525 +640 428 +500 375 +640 484 +640 481 +640 480 +640 433 +500 370 +640 427 +640 427 +640 431 +640 429 +500 416 +640 524 +465 640 +640 480 +480 640 +416 500 +612 612 +495 640 +480 640 +640 427 +478 640 +448 287 +612 612 +480 640 +640 480 +640 478 +640 425 +640 426 +640 424 +500 375 +640 480 +446 640 +600 450 +640 398 +428 640 +640 480 +640 480 +428 640 +428 640 +640 426 +640 427 +640 480 +640 480 +480 640 +500 375 +640 434 +640 427 +640 480 +640 427 +500 375 +640 480 +640 480 +483 640 +427 640 +427 640 +640 480 +640 439 +505 640 +375 500 +461 640 +480 640 +640 480 +640 480 +480 640 +480 640 +375 500 +640 480 +640 512 +640 424 +500 375 +500 375 +359 640 +640 462 +640 427 +640 427 +640 426 +379 500 +451 640 +419 640 +640 427 +640 480 +500 205 +500 333 +640 480 +480 640 +640 427 +375 500 +640 480 +640 427 +640 480 +640 425 +500 375 +640 431 +640 484 +640 427 +480 640 +640 427 +471 640 +640 480 +640 488 +640 480 +425 640 +640 427 +362 480 +640 481 +428 640 +480 640 +640 480 +456 640 +640 358 +500 333 +640 427 +640 516 +640 480 +375 500 +640 427 +388 640 +640 427 +640 424 +480 640 +640 570 +640 427 +500 333 +640 427 +640 427 +426 640 +640 480 +640 480 +640 640 +640 480 +334 500 +640 426 +500 375 +640 424 +640 425 +640 480 +500 336 +640 468 +640 349 +640 480 +640 421 +480 640 +375 500 +640 480 +612 612 +640 428 +640 480 +640 478 +640 427 +640 427 +480 640 +640 426 +640 383 +480 640 +640 491 +640 426 +640 480 +640 480 +500 333 +427 640 +640 481 +640 427 +640 426 +640 428 +640 419 +640 548 +640 480 +640 431 +640 631 +375 500 +640 426 +481 640 +640 427 +640 426 +333 500 +640 428 +532 500 +375 500 +640 314 +480 640 +640 480 +640 480 +500 341 +640 425 +640 480 +640 478 +640 427 +500 326 +640 427 +640 480 +640 478 +640 427 +640 447 +541 640 +640 427 +640 427 +640 416 +640 426 +640 427 +640 470 +480 640 +640 425 +640 480 +640 463 +640 427 +480 640 +612 612 +640 480 +640 480 +500 375 +480 640 +640 480 +640 427 +640 427 +500 333 +478 640 +640 425 +426 640 +640 458 +640 360 +640 425 +332 500 +640 425 +640 427 +480 287 +480 640 +480 640 +640 480 +500 376 +500 335 +500 420 +640 480 +640 425 +640 426 +515 640 +640 427 +500 500 +640 426 +481 640 +375 500 +500 375 +640 278 +640 428 +640 403 +640 426 +640 445 +640 492 +427 640 +480 640 +640 426 +640 480 +640 480 +640 581 +640 360 +640 427 +640 477 +612 612 +500 333 +640 426 +640 480 +640 480 +640 480 +500 375 +425 640 +480 640 +640 480 +550 367 +480 640 +640 480 +640 427 +640 425 +640 425 +640 425 +640 480 +640 427 +640 360 +640 419 +480 640 +640 427 +640 424 +640 480 +640 379 +640 413 +640 425 +640 427 +612 612 +424 640 +640 425 +640 411 +640 427 +640 426 +480 640 +480 640 +640 480 +640 426 +640 640 +640 424 +640 480 +640 426 +640 447 +427 640 +377 500 +537 381 +640 427 +500 462 +640 386 +500 332 +640 425 +640 513 +640 441 +640 434 +640 427 +612 612 +640 427 +640 446 +640 424 +640 426 +640 422 +640 538 +640 426 +640 480 +640 640 +640 427 +640 427 +640 426 +640 428 +419 640 +640 427 +637 640 +640 427 +500 500 +640 445 +500 375 +640 456 +640 427 +640 480 +640 480 +500 375 +488 432 +457 640 +500 334 +640 426 +640 427 +640 428 +640 480 +640 480 +640 427 +640 427 +640 480 +640 478 +640 478 +324 487 +640 480 +640 427 +333 500 +640 424 +640 480 +426 640 +428 640 +457 640 +640 483 +640 429 +478 640 +640 427 +640 480 +640 480 +640 480 +500 375 +480 640 +640 480 +480 640 +640 442 +412 640 +640 427 +640 405 +640 425 +640 491 +612 612 +500 333 +640 427 +640 480 +427 640 +500 276 +640 457 +640 480 +480 640 +640 427 +640 480 +640 480 +640 427 +640 428 +500 333 +427 640 +640 480 +640 480 +640 480 +640 359 +640 427 +640 532 +640 428 +640 426 +640 427 +375 500 +640 480 +640 427 +425 640 +640 446 +500 349 +640 427 +640 470 +640 421 +640 427 +640 426 +640 428 +640 480 +640 426 +640 480 +640 427 +640 425 +640 426 +640 425 +291 461 +640 480 +640 435 +480 640 +640 426 +640 425 +500 375 +480 640 +640 381 +500 375 +640 480 +335 500 +640 427 +333 500 +601 640 +640 428 +640 426 +480 640 +640 477 +640 240 +640 427 +640 424 +640 429 +480 640 +500 402 +480 640 +640 480 +480 640 +640 214 +640 427 +375 500 +640 480 +426 640 +640 480 +640 427 +500 242 +500 375 +640 569 +427 640 +500 333 +489 640 +500 375 +611 640 +640 438 +480 640 +529 640 +640 426 +640 480 +480 640 +500 333 +640 480 +640 454 +640 478 +500 376 +500 500 +500 415 +640 413 +515 640 +427 640 +640 427 +480 640 +468 640 +640 480 +500 359 +640 480 +640 480 +640 490 +640 427 +640 480 +640 480 +640 427 +375 500 +640 480 +427 640 +640 480 +640 480 +427 640 +333 500 +640 426 +640 425 +640 427 +640 480 +640 517 +375 500 +480 640 +640 360 +640 425 +640 426 +640 433 +640 480 +640 426 +612 612 +640 426 +640 427 +480 640 +640 427 +640 474 +640 426 +640 481 +500 374 +480 640 +640 427 +427 640 +500 336 +640 473 +640 383 +640 423 +640 480 +640 428 +500 375 +536 640 +640 427 +640 480 +640 427 +612 612 +640 480 +640 427 +640 480 +500 375 +640 461 +640 360 +425 640 +640 480 +426 640 +640 450 +640 428 +333 500 +640 427 +640 396 +640 477 +640 428 +640 480 +640 635 +640 480 +640 480 +640 480 +640 401 +640 480 +640 427 +640 426 +640 427 +640 427 +640 428 +581 640 +640 427 +427 640 +640 428 +640 480 +640 480 +640 478 +480 640 +640 480 +640 427 +640 427 +612 612 +640 576 +424 640 +612 612 +500 375 +640 480 +640 381 +640 434 +500 437 +640 456 +640 425 +640 427 +427 640 +640 429 +640 480 +640 478 +448 640 +640 480 +640 428 +640 480 +480 640 +640 425 +640 427 +640 429 +640 418 +640 360 +556 640 +269 451 +450 338 +328 500 +333 500 +480 640 +640 428 +640 380 +640 480 +640 428 +640 525 +640 427 +640 427 +640 480 +480 640 +640 479 +640 426 +640 425 +480 640 +640 426 +640 480 +612 612 +548 640 +612 612 +640 480 +640 411 +640 426 +640 480 +640 427 +640 438 +640 478 +640 427 +640 428 +640 427 +640 419 +509 640 +640 334 +640 427 +640 480 +640 426 +640 427 +480 640 +640 426 +513 640 +500 374 +640 501 +640 346 +640 360 +640 480 +500 400 +500 388 +640 480 +480 640 +500 375 +640 427 +500 400 +640 424 +491 500 +640 428 +640 480 +640 427 +426 640 +427 640 +640 451 +375 500 +640 480 +500 333 +367 490 +500 375 +640 427 +480 640 +640 480 +640 427 +640 480 +500 399 +640 480 +640 470 +640 427 +375 500 +640 426 +640 482 +640 480 +640 417 +462 640 +640 428 +640 480 +640 427 +612 612 +640 640 +640 362 +480 640 +640 427 +640 480 +640 426 +640 427 +640 428 +640 426 +640 480 +500 375 +640 480 +640 441 +640 451 +640 478 +640 480 +640 384 +427 640 +640 480 +500 459 +640 370 +426 640 +640 445 +640 480 +640 553 +640 383 +640 428 +640 427 +640 424 +427 640 +640 480 +640 427 +640 360 +640 428 +612 612 +640 480 +640 480 +640 425 +427 640 +640 426 +500 273 +640 427 +480 640 +500 332 +640 480 +640 480 +640 427 +429 640 +640 480 +640 424 +333 500 +640 427 +640 431 +500 375 +640 427 +478 640 +424 640 +396 640 +640 425 +640 480 +425 640 +640 480 +640 427 +640 426 +640 427 +500 422 +640 455 +640 427 +479 640 +418 500 +333 500 +640 480 +640 480 +640 426 +640 426 +640 425 +500 334 +480 640 +502 640 +500 375 +640 551 +640 361 +500 333 +424 640 +640 360 +640 427 +640 427 +341 500 +375 500 +640 512 +640 424 +640 427 +427 640 +640 480 +640 427 +640 424 +640 480 +640 480 +640 480 +640 426 +441 640 +640 480 +640 480 +640 420 +640 427 +640 427 +480 640 +640 426 +640 427 +640 379 +640 508 +640 480 +480 640 +640 358 +640 480 +640 478 +400 600 +427 640 +375 500 +640 439 +640 427 +640 426 +640 425 +640 480 +640 480 +640 480 +478 640 +640 480 +640 480 +480 640 +440 640 +640 229 +640 425 +640 428 +640 480 +612 612 +640 426 +480 640 +640 457 +640 480 +640 426 +640 427 +640 426 +640 400 +640 631 +640 427 +538 640 +640 480 +640 426 +640 427 +640 427 +640 480 +640 426 +640 480 +325 500 +640 427 +640 287 +480 360 +500 500 +640 482 +612 612 +640 425 +640 480 +640 426 +640 427 +640 480 +428 640 +640 424 +500 375 +480 640 +612 612 +480 640 +640 480 +640 427 +480 640 +410 500 +480 640 +640 360 +640 427 +640 401 +640 427 +640 426 +640 421 +500 375 +640 424 +640 427 +427 640 +640 480 +640 426 +429 640 +640 480 +375 500 +640 478 +427 640 +640 480 +480 640 +640 480 +640 480 +640 426 +375 500 +640 422 +640 426 +500 375 +640 480 +640 480 +640 480 +640 428 +513 640 +640 427 +640 424 +640 480 +640 480 +640 640 +640 512 +640 480 +640 506 +500 375 +500 375 +480 640 +640 480 +480 640 +500 329 +640 495 +369 500 +605 640 +500 375 +425 640 +640 480 +480 640 +640 428 +500 375 +640 427 +640 427 +640 427 +640 480 +640 608 +640 360 +640 480 +640 480 +640 480 +640 480 +640 444 +640 427 +640 421 +640 442 +427 640 +612 612 +640 480 +640 360 +480 640 +375 500 +480 640 +640 426 +640 498 +640 480 +640 427 +640 426 +640 480 +500 377 +160 120 +640 428 +500 333 +640 410 +480 640 +640 425 +640 426 +640 424 +640 426 +465 640 +640 480 +640 427 +500 375 +480 640 +640 480 +640 428 +640 480 +500 334 +640 426 +640 427 +640 480 +500 333 +640 429 +426 640 +640 426 +500 375 +500 281 +640 639 +500 313 +278 240 +640 427 +640 480 +640 440 +640 480 +640 480 +640 480 +426 640 +640 480 +640 426 +480 640 +640 427 +480 640 +426 640 +640 360 +640 479 +640 424 +640 427 +431 640 +640 427 +640 258 +640 480 +640 426 +480 640 +640 427 +640 480 +640 480 +426 640 +428 640 +640 480 +640 383 +640 425 +640 426 +640 480 +640 480 +425 640 +640 499 +480 640 +640 426 +640 379 +480 640 +640 427 +640 427 +640 427 +640 427 +640 444 +640 480 +500 500 +640 480 +640 480 +640 480 +640 480 +427 640 +640 593 +500 333 +640 427 +640 480 +640 427 +640 608 +612 612 +640 480 +640 480 +480 640 +640 480 +640 480 +240 360 +640 427 +640 480 +640 411 +640 428 +427 640 +333 500 +640 480 +500 375 +500 425 +640 480 +640 480 +612 612 +427 640 +500 453 +640 426 +640 480 +640 427 +640 479 +640 480 +640 351 +640 480 +640 420 +640 428 +640 427 +500 375 +640 446 +640 480 +640 424 +420 640 +429 640 +640 448 +640 426 +500 321 +375 500 +640 480 +640 470 +640 427 +375 500 +640 480 +500 375 +640 461 +360 640 +640 427 +428 640 +640 480 +640 374 +640 480 +640 427 +640 427 +640 427 +500 375 +640 432 +640 480 +247 500 +640 145 +640 427 +480 640 +640 427 +640 429 +640 568 +500 334 +500 375 +640 500 +640 480 +640 512 +640 480 +612 612 +640 426 +640 426 +640 427 +640 394 +640 480 +480 640 +480 640 +640 427 +640 406 +480 640 +640 426 +640 511 +640 428 +500 333 +500 363 +640 427 +640 427 +488 640 +640 480 +640 427 +640 427 +640 511 +500 375 +427 640 +640 427 +640 464 +640 480 +425 640 +640 464 +427 640 +640 480 +480 640 +640 480 +640 480 +640 480 +640 480 +640 425 +500 375 +640 418 +640 427 +480 640 +273 500 +312 462 +640 396 +640 428 +427 640 +250 333 +640 424 +511 640 +640 425 +640 428 +500 375 +640 480 +375 500 +500 375 +640 444 +640 480 +640 427 +396 640 +400 300 +640 480 +640 512 +582 640 +640 480 +640 480 +640 427 +500 375 +640 425 +427 640 +640 428 +640 480 +500 375 +640 509 +640 427 +640 425 +597 640 +612 612 +640 561 +640 480 +640 480 +640 405 +612 612 +480 640 +640 480 +480 640 +640 480 +640 425 +640 427 +500 375 +640 371 +640 478 +640 569 +500 375 +640 419 +640 426 +640 480 +424 640 +480 640 +640 419 +640 579 +640 512 +640 360 +612 612 +640 427 +640 426 +500 318 +640 480 +480 640 +500 385 +640 480 +640 480 +640 512 +640 480 +640 480 +640 539 +480 640 +640 640 +640 480 +640 360 +640 427 +500 375 +600 400 +427 640 +640 480 +640 480 +640 401 +640 427 +640 427 +640 480 +481 640 +306 500 +640 426 +640 433 +640 449 +640 480 +640 480 +581 640 +640 480 +640 478 +612 612 +560 640 +480 640 +640 480 +427 640 +640 480 +640 400 +375 500 +640 427 +640 480 +640 374 +334 500 +612 612 +500 334 +640 544 +640 480 +640 480 +640 471 +640 400 +612 612 +640 427 +640 479 +640 480 +500 375 +640 480 +612 612 +640 533 +640 427 +640 423 +356 500 +640 480 +500 371 +640 480 +640 480 +640 426 +640 427 +640 425 +640 425 +640 480 +640 480 +640 480 +640 424 +370 640 +640 425 +375 500 +640 145 +640 361 +500 332 +500 375 +640 335 +640 397 +640 521 +500 363 +479 640 +500 375 +640 480 +500 345 +640 480 +640 480 +640 480 +500 364 +640 427 +612 612 +480 640 +640 427 +640 483 +640 480 +640 427 +500 360 +640 427 +640 469 +480 640 +640 480 +640 427 +640 480 +640 427 +640 426 +480 640 +640 480 +640 404 +640 405 +640 426 +640 427 +640 228 +500 375 +426 640 +640 423 +640 428 +640 427 +640 361 +640 480 +433 640 +464 640 +640 480 +640 424 +433 500 +640 480 +640 428 +640 480 +640 473 +640 480 +500 331 +640 480 +640 360 +640 480 +640 480 +640 427 +375 500 +442 640 +450 600 +640 427 +480 640 +500 386 +640 480 +640 424 +640 457 +640 480 +427 640 +427 640 +363 640 +640 480 +640 426 +640 448 +481 640 +427 640 +480 640 +640 480 +640 427 +640 480 +640 425 +640 427 +500 375 +640 480 +640 425 +640 427 +500 375 +640 480 +480 640 +500 333 +640 427 +480 640 +640 480 +450 200 +640 480 +640 427 +480 640 +640 480 +427 640 +480 640 +640 459 +426 640 +640 427 +500 344 +640 427 +640 360 +500 333 +500 375 +640 523 +640 480 +640 424 +640 480 +640 439 +427 640 +640 480 +640 427 +432 308 +640 480 +640 480 +427 640 +499 640 +612 612 +640 480 +640 427 +640 480 +640 480 +426 640 +640 480 +640 426 +640 480 +427 640 +500 375 +640 427 +480 640 +640 458 +640 434 +500 375 +640 427 +640 429 +640 480 +640 480 +640 480 +640 428 +640 480 +640 427 +640 430 +622 640 +409 640 +640 480 +640 640 +640 423 +640 360 +640 430 +640 427 +640 563 +640 427 +640 423 +480 640 +640 480 +478 640 +612 612 +427 640 +640 427 +640 320 +640 427 +500 375 +640 427 +427 640 +640 478 +640 425 +500 375 +640 427 +640 478 +640 427 +375 500 +480 640 +480 640 +640 480 +640 640 +427 640 +640 480 +428 640 +640 405 +640 426 +640 480 +640 427 +640 491 +640 427 +640 480 +612 612 +640 427 +480 640 +640 427 +640 480 +640 427 +480 640 +376 500 +640 480 +640 480 +640 480 +480 640 +640 360 +640 480 +640 480 +427 640 +500 375 +640 466 +640 569 +640 385 +427 640 +640 428 +640 439 +500 350 +375 500 +500 375 +500 375 +625 640 +640 480 +500 332 +640 480 +333 500 +480 640 +640 427 +640 427 +640 426 +480 640 +481 640 +500 438 +480 640 +640 359 +640 418 +426 640 +500 375 +480 640 +480 640 +640 427 +640 480 +640 427 +463 500 +640 425 +426 640 +640 427 +288 216 +640 480 +640 480 +640 640 +640 427 +500 334 +640 480 +640 480 +640 480 +640 480 +640 408 +483 640 +640 428 +640 402 +640 425 +336 500 +640 426 +428 640 +640 330 +480 640 +640 425 +480 640 +640 426 +478 640 +640 449 +640 427 +500 334 +640 478 +500 375 +290 379 +640 427 +640 480 +640 480 +640 480 +640 369 +640 427 +500 321 +426 640 +640 427 +640 480 +640 480 +640 428 +500 375 +424 640 +612 612 +640 427 +500 266 +640 400 +480 640 +640 640 +640 480 +640 480 +500 375 +534 640 +640 427 +640 480 +427 640 +640 427 +640 480 +640 427 +640 360 +425 640 +480 640 +640 480 +640 480 +640 428 +427 640 +425 640 +433 640 +640 480 +640 480 +640 451 +375 500 +640 407 +640 480 +640 480 +416 640 +640 427 +480 640 +640 383 +640 614 +640 554 +500 333 +459 640 +640 427 +640 428 +640 428 +373 640 +625 640 +640 480 +640 480 +500 375 +500 375 +640 480 +528 640 +640 427 +640 480 +375 500 +640 426 +640 427 +640 427 +419 640 +640 427 +640 480 +640 480 +640 396 +640 480 +500 374 +640 428 +640 373 +640 202 +640 480 +640 425 +640 427 +640 424 +640 360 +640 427 +640 480 +640 480 +640 480 +640 427 +500 332 +640 480 +640 480 +480 640 +640 480 +640 480 +640 558 +640 480 +640 480 +426 640 +640 427 +612 612 +640 359 +480 640 +640 424 +640 480 +480 640 +612 612 +640 480 +640 480 +640 480 +500 333 +500 375 +640 425 +640 428 +640 439 +640 427 +640 360 +383 640 +640 427 +640 480 +640 322 +480 360 +426 640 +640 428 +480 640 +597 640 +640 428 +480 640 +640 446 +640 427 +640 480 +480 640 +640 527 +640 427 +640 480 +640 426 +604 640 +360 640 +360 640 +640 425 +640 480 +640 640 +640 388 +480 640 +640 427 +640 426 +500 375 +503 640 +640 427 +640 426 +640 480 +640 427 +640 499 +640 480 +640 428 +640 480 +640 425 +640 427 +640 427 +612 612 +480 640 +480 640 +640 427 +640 427 +490 640 +640 454 +640 480 +640 424 +640 428 +640 480 +640 480 +640 431 +640 478 +640 431 +427 640 +640 426 +640 360 +640 480 +640 480 +640 480 +640 480 +640 460 +490 640 +640 427 +640 480 +640 428 +640 480 +454 640 +640 403 +426 640 +640 320 +640 427 +640 393 +640 427 +612 612 +640 480 +640 480 +500 375 +620 463 +427 640 +612 612 +640 480 +640 640 +427 640 +480 640 +500 375 +446 335 +409 307 +640 426 +640 495 +640 480 +640 427 +640 480 +640 218 +640 425 +512 640 +640 480 +480 640 +489 640 +432 324 +640 424 +428 640 +640 427 +640 427 +640 427 +640 427 +500 347 +427 640 +640 427 +640 427 +640 426 +640 568 +463 640 +480 640 +640 271 +500 324 +480 640 +640 480 +640 375 +640 457 +480 640 +640 427 +640 500 +500 500 +640 480 +640 427 +640 428 +640 480 +640 427 +640 482 +640 480 +480 640 +333 500 +640 424 +427 640 +478 640 +640 424 +427 640 +640 424 +640 480 +457 640 +452 640 +640 425 +500 400 +500 375 +640 442 +225 300 +500 333 +639 640 +640 640 +640 478 +640 480 +640 480 +375 500 +629 640 +500 357 +640 427 +640 383 +500 375 +450 640 +640 426 +640 423 +426 640 +640 426 +426 640 +640 480 +640 480 +640 436 +500 375 +640 427 +640 480 +640 427 +640 480 +640 480 +640 480 +480 640 +480 640 +375 500 +480 640 +640 480 +640 433 +640 427 +433 640 +640 429 +640 480 +640 427 +500 333 +514 640 +640 480 +640 490 +640 427 +640 296 +457 640 +640 518 +640 480 +640 480 +350 232 +612 612 +640 425 +640 427 +640 480 +640 480 +640 383 +500 335 +640 424 +640 427 +640 480 +640 426 +431 640 +500 377 +640 512 +640 427 +426 640 +640 425 +640 480 +640 426 +640 427 +640 480 +500 333 +427 640 +640 429 +640 346 +640 427 +640 427 +640 427 +640 481 +640 480 +496 640 +427 640 +640 484 +639 640 +500 375 +640 427 +427 640 +640 480 +425 640 +640 284 +500 422 +640 512 +480 640 +375 500 +640 533 +640 426 +480 640 +640 413 +640 359 +640 513 +480 640 +640 366 +640 490 +640 480 +501 640 +640 424 +640 427 +640 425 +640 427 +500 308 +640 427 +500 333 +640 480 +640 427 +640 480 +640 480 +640 427 +640 428 +640 427 +640 480 +480 640 +640 427 +375 500 +640 432 +640 480 +640 427 +428 640 +640 427 +640 430 +640 480 +375 500 +640 480 +480 640 +640 640 +427 640 +640 480 +500 381 +406 640 +640 441 +333 500 +640 546 +640 480 +640 480 +500 375 +640 535 +640 426 +640 503 +640 434 +640 480 +546 366 +600 400 +640 429 +640 481 +640 480 +333 500 +640 427 +427 640 +427 640 +480 640 +640 439 +500 375 +553 640 +640 480 +639 640 +640 425 +640 480 +640 427 +640 480 +640 427 +500 333 +640 424 +512 640 +640 426 +640 359 +436 640 +640 428 +640 428 +640 426 +426 640 +480 640 +640 427 +640 427 +612 612 +640 380 +640 427 +640 427 +480 640 +640 480 +612 612 +427 640 +272 480 +640 166 +612 612 +427 640 +640 426 +640 480 +419 640 +640 426 +640 480 +640 427 +640 451 +640 427 +640 427 +640 427 +427 640 +500 375 +640 343 +640 428 +500 375 +640 427 +640 489 +640 373 +640 435 +500 375 +460 640 +640 428 +640 428 +640 411 +640 400 +288 432 +640 427 +640 480 +500 375 +640 426 +640 480 +333 500 +640 427 +500 331 +640 461 +480 640 +500 332 +640 330 +640 533 +427 640 +411 500 +492 640 +640 480 +500 419 +640 427 +359 640 +640 422 +213 318 +640 359 +640 480 +640 427 +500 500 +375 500 +640 480 +640 426 +640 428 +640 360 +640 402 +640 457 +500 364 +640 479 +640 480 +640 478 +457 640 +640 480 +640 480 +640 427 +640 428 +640 425 +500 375 +640 457 +640 478 +500 333 +357 500 +640 428 +418 500 +640 427 +480 640 +500 375 +640 426 +426 640 +640 458 +500 375 +500 375 +640 426 +640 398 +640 427 +640 427 +640 427 +426 640 +640 427 +640 480 +640 427 +640 360 +640 426 +640 480 +640 425 +640 426 +640 428 +640 360 +363 640 +640 480 +640 480 +640 480 +500 377 +428 640 +480 640 +640 481 +640 427 +428 640 +480 640 +640 427 +640 426 +480 640 +427 640 +640 466 +640 425 +640 423 +640 429 +640 480 +500 375 +424 640 +500 333 +500 333 +640 424 +612 612 +480 640 +425 640 +427 640 +640 344 +640 426 +640 427 +640 480 +640 480 +480 640 +640 480 +640 427 +640 480 +640 426 +640 427 +640 480 +640 484 +640 407 +640 448 +640 427 +640 427 +640 360 +640 427 +640 448 +640 480 +640 480 +640 480 +425 640 +640 480 +640 427 +640 425 +500 334 +640 426 +480 640 +640 480 +640 480 +640 427 +428 640 +640 428 +640 512 +429 640 +640 360 +640 480 +480 640 +640 480 +640 480 +640 480 +640 283 +640 479 +640 427 +640 425 +500 333 +640 369 +500 376 +640 480 +333 500 +612 612 +427 640 +480 640 +399 500 +640 480 +640 480 +640 348 +640 480 +640 480 +640 456 +427 640 +281 500 +480 640 +640 429 +640 478 +640 427 +640 453 +640 432 +622 640 +640 480 +640 425 +640 428 +640 427 +640 426 +640 480 +640 544 +640 427 +619 640 +480 640 +480 640 +640 480 +640 427 +640 640 +640 419 +370 640 +640 480 +375 500 +640 337 +448 336 +640 432 +500 333 +640 432 +500 375 +640 429 +500 349 +640 433 +640 480 +640 640 +640 480 +500 375 +640 480 +424 640 +640 508 +640 480 +640 480 +480 640 +640 480 +640 640 +640 480 +636 640 +640 480 +640 424 +640 327 +332 500 +480 640 +427 640 +640 425 +640 343 +640 480 +640 480 +640 428 +640 480 +375 500 +424 640 +511 640 +640 480 +640 480 +640 480 +500 375 +640 427 +480 640 +500 375 +640 464 +640 202 +640 426 +500 375 +640 480 +428 640 +640 478 +640 480 +395 500 +640 480 +500 375 +640 480 +479 640 +436 640 +480 640 +500 333 +640 430 +500 376 +640 480 +427 640 +640 428 +640 480 +640 480 +640 480 +333 500 +427 640 +640 426 +640 480 +640 480 +640 480 +640 427 +436 500 +640 453 +640 427 +640 427 +449 640 +534 640 +640 480 +426 640 +480 549 +640 320 +600 322 +467 500 +640 480 +640 480 +500 400 +640 423 +640 427 +640 480 +500 375 +500 302 +500 332 +640 480 +612 612 +640 432 +640 480 +640 427 +500 335 +360 640 +640 480 +640 428 +640 480 +427 640 +640 427 +640 511 +640 474 +500 375 +640 425 +640 427 +425 640 +640 428 +640 480 +640 426 +640 427 +640 360 +640 427 +500 391 +596 640 +640 427 +573 640 +640 480 +640 387 +640 427 +640 480 +640 427 +640 425 +640 372 +640 480 +375 500 +480 640 +426 640 +640 480 +640 480 +500 375 +640 426 +480 640 +333 500 +500 375 +640 428 +640 427 +640 480 +640 360 +427 640 +640 425 +640 427 +640 383 +500 375 +411 500 +640 434 +500 375 +640 427 +640 419 +640 428 +640 480 +640 480 +500 375 +480 640 +640 427 +640 509 +640 480 +640 421 +399 600 +640 480 +640 427 +640 429 +640 427 +500 375 +640 427 +640 427 +480 640 +640 426 +640 480 +375 500 +640 426 +640 413 +480 640 +333 500 +480 640 +640 415 +334 500 +431 640 +640 427 +640 426 +469 640 +640 480 +375 500 +612 612 +640 427 +640 478 +500 375 +640 443 +640 184 +640 406 +413 640 +640 427 +500 376 +640 427 +424 640 +373 500 +640 469 +640 427 +640 640 +480 640 +640 640 +640 478 +640 480 +640 426 +500 444 +640 426 +480 640 +640 427 +614 640 +640 426 +427 640 +600 464 +640 427 +464 640 +500 375 +640 427 +640 480 +449 640 +640 480 +480 640 +640 480 +640 480 +480 640 +640 408 +533 640 +640 426 +427 640 +640 396 +428 640 +640 480 +640 480 +640 480 +500 500 +335 500 +640 480 +427 640 +640 365 +427 640 +640 360 +508 640 +640 539 +640 428 +640 427 +500 375 +612 612 +640 424 +640 491 +640 425 +640 427 +640 480 +600 450 +359 640 +480 640 +640 480 +640 480 +640 480 +500 375 +390 500 +480 640 +480 640 +640 367 +640 480 +640 389 +426 640 +640 480 +480 640 +427 640 +470 308 +640 427 +640 427 +640 315 +640 480 +500 332 +640 480 +480 640 +500 333 +640 425 +480 640 +480 640 +640 480 +500 409 +640 427 +640 419 +480 640 +640 426 +640 427 +640 364 +500 375 +640 480 +480 640 +500 439 +500 333 +500 307 +640 480 +480 640 +427 640 +640 408 +640 475 +640 427 +640 428 +640 427 +640 408 +480 640 +500 375 +500 281 +640 428 +640 469 +480 640 +500 399 +612 612 +612 612 +612 612 +640 426 +500 335 +640 356 +375 500 +640 480 +426 640 +640 427 +640 426 +640 427 +480 640 +640 639 +500 375 +480 640 +612 612 +640 480 +640 448 +640 428 +640 480 +640 427 +543 640 +500 375 +640 427 +640 426 +640 359 +426 640 +478 640 +480 640 +640 428 +640 427 +640 426 +640 427 +640 427 +640 480 +500 340 +480 640 +640 480 +640 427 +640 480 +427 640 +640 480 +640 425 +640 427 +640 482 +500 333 +500 368 +640 427 +425 640 +640 480 +500 375 +640 428 +640 480 +640 423 +640 558 +250 234 +640 427 +478 640 +640 426 +640 427 +640 427 +426 640 +640 480 +428 640 +640 480 +640 480 +640 480 +640 399 +640 427 +640 439 +640 264 +500 375 +612 612 +640 427 +500 350 +427 640 +334 500 +500 332 +500 281 +325 500 +500 318 +480 640 +640 480 +375 500 +640 426 +640 614 +500 400 +487 640 +640 427 +640 427 +640 513 +478 640 +640 480 +500 375 +500 343 +500 375 +640 425 +640 417 +500 375 +640 427 +640 427 +640 427 +640 441 +640 426 +640 427 +640 480 +640 427 +640 383 +640 425 +635 640 +640 480 +640 355 +480 640 +640 427 +500 375 +640 480 +640 429 +640 480 +640 427 +640 480 +640 480 +640 427 +482 500 +480 640 +478 640 +640 426 +640 480 +640 424 +640 480 +630 640 +640 480 +640 480 +335 500 +480 640 +640 427 +640 480 +640 433 +640 423 +640 480 +640 480 +375 500 +640 480 +640 457 +480 640 +640 480 +640 480 +640 427 +500 375 +504 640 +640 480 +512 640 +471 640 +426 640 +319 480 +640 480 +500 371 +640 480 +640 480 +640 480 +500 375 +378 500 +427 640 +640 483 +640 541 +640 426 +640 381 +500 375 +640 423 +640 359 +640 631 +640 480 +400 600 +371 500 +640 480 +500 371 +640 480 +640 427 +478 640 +640 427 +380 500 +427 640 +500 375 +640 427 +600 600 +427 640 +640 427 +640 427 +356 500 +640 513 +482 640 +375 500 +640 480 +640 320 +612 612 +640 480 +640 640 +640 424 +480 640 +640 427 +427 640 +640 494 +639 640 +640 360 +478 640 +640 360 +640 426 +640 427 +640 427 +640 480 +640 439 +640 480 +640 427 +640 480 +640 360 +640 480 +640 480 +640 251 +640 433 +640 466 +640 480 +480 640 +640 480 +640 444 +427 640 +640 424 +480 640 +640 424 +640 458 +640 427 +424 640 +640 426 +480 640 +640 640 +473 305 +640 427 +461 640 +640 427 +478 640 +640 463 +640 480 +640 427 +640 425 +640 480 +640 360 +640 583 +500 344 +640 426 +640 425 +640 480 +413 640 +640 478 +427 640 +640 480 +424 640 +640 425 +480 640 +640 394 +640 427 +496 640 +427 640 +500 375 +640 426 +480 640 +640 429 +612 612 +640 416 +640 283 +480 640 +375 500 +427 640 +640 426 +640 424 +640 593 +640 427 +640 453 +640 429 +266 640 +640 426 +640 427 +640 499 +640 428 +640 425 +612 612 +480 640 +500 375 +375 500 +500 384 +500 333 +640 427 +640 458 +640 428 +640 467 +640 478 +640 427 +640 429 +640 426 +500 375 +640 480 +640 396 +640 512 +334 500 +480 640 +480 640 +640 427 +640 359 +640 480 +426 640 +375 500 +640 480 +640 480 +500 375 +640 434 +640 427 +640 425 +640 480 +640 457 +426 640 +375 500 +640 480 +640 344 +640 480 +640 455 +500 400 +640 427 +480 640 +640 480 +640 426 +375 500 +640 542 +500 332 +480 640 +640 427 +640 427 +426 640 +640 512 +640 500 +640 431 +640 609 +640 480 +640 478 +640 427 +640 640 +640 427 +640 427 +640 480 +640 424 +640 480 +640 480 +640 480 +480 640 +640 480 +383 640 +640 427 +640 480 +640 427 +640 480 +640 427 +640 480 +640 480 +640 480 +478 640 +640 480 +640 480 +640 427 +640 480 +640 428 +640 480 +640 427 +244 500 +426 640 +513 640 +640 480 +640 480 +640 427 +640 480 +640 480 +428 640 +640 368 +500 341 +640 426 +612 612 +640 428 +640 479 +640 427 +480 640 +640 480 +640 424 +480 640 +640 480 +640 429 +640 427 +640 427 +640 426 +640 480 +640 427 +500 375 +500 328 +640 480 +500 333 +640 427 +640 480 +640 392 +427 640 +640 640 +640 429 +480 640 +640 337 +306 500 +640 426 +427 640 +640 480 +640 427 +640 427 +500 381 +375 500 +640 472 +640 480 +500 375 +640 424 +640 480 +500 375 +480 640 +640 427 +640 480 +640 480 +500 383 +640 480 +480 640 +640 399 +612 612 +640 480 +500 375 +640 427 +500 375 +640 427 +640 427 +480 640 +640 480 +427 640 +640 427 +640 427 +346 500 +640 480 +500 400 +640 360 +478 640 +640 413 +375 500 +640 427 +640 424 +640 426 +640 425 +480 640 +478 640 +410 500 +640 640 +640 480 +500 345 +427 640 +640 419 +640 480 +640 406 +500 375 +640 528 +426 640 +359 640 +640 427 +640 428 +480 640 +500 333 +640 369 +400 535 +489 640 +480 640 +640 480 +640 480 +500 375 +640 480 +456 640 +500 375 +640 480 +640 428 +427 640 +640 425 +480 640 +640 427 +640 420 +333 500 +640 427 +428 640 +640 480 +480 640 +640 450 +640 384 +640 480 +425 640 +480 640 +500 351 +640 480 +640 562 +640 428 +640 480 +500 372 +423 640 +640 426 +640 480 +480 640 +640 426 +640 403 +640 480 +640 480 +640 480 +500 434 +427 640 +480 640 +640 424 +640 480 +480 640 +640 428 +547 640 +500 335 +640 360 +640 400 +640 427 +448 640 +500 376 +500 375 +640 481 +640 480 +640 426 +640 480 +640 478 +640 480 +640 423 +500 375 +640 200 +640 480 +600 450 +640 399 +640 480 +640 426 +640 480 +640 480 +640 480 +640 358 +480 640 +640 426 +640 428 +480 640 +640 640 +461 640 +640 480 +640 480 +640 480 +639 640 +428 640 +612 612 +640 404 +640 427 +640 427 +612 612 +640 427 +640 480 +449 640 +480 640 +640 428 +640 480 +333 500 +640 480 +500 385 +640 426 +500 375 +640 480 +640 427 +640 425 +640 427 +640 480 +640 426 +640 480 +640 480 +640 481 +640 480 +640 480 +640 428 +640 427 +427 640 +480 640 +425 640 +333 500 +640 503 +480 640 +640 427 +640 388 +640 426 +538 640 +500 375 +427 640 +640 424 +500 391 +640 231 +640 427 +640 480 +640 480 +612 612 +640 480 +426 640 +640 425 +640 478 +640 427 +640 427 +640 547 +640 360 +612 612 +640 480 +500 334 +431 500 +374 500 +640 428 +640 400 +633 640 +333 500 +640 462 +566 640 +640 359 +500 332 +425 640 +375 500 +640 425 +500 335 +640 480 +612 612 +640 425 +640 426 +487 640 +500 375 +640 424 +640 427 +640 480 +500 334 +640 427 +500 341 +640 480 +640 399 +480 640 +375 500 +480 640 +640 428 +500 334 +640 480 +640 427 +457 640 +500 375 +640 409 +375 500 +640 480 +640 480 +500 375 +375 500 +427 640 +480 640 +640 475 +640 480 +640 425 +500 375 +640 360 +500 332 +640 450 +640 480 +640 426 +500 375 +640 480 +640 480 +640 425 +640 425 +426 640 +640 425 +640 480 +640 384 +640 427 +640 427 +640 253 +640 425 +394 640 +640 426 +640 426 +640 480 +640 427 +427 640 +426 640 +640 467 +640 480 +640 458 +500 500 +640 480 +500 375 +640 427 +480 640 +640 480 +640 480 +640 421 +640 480 +640 542 +640 480 +640 430 +640 469 +640 360 +640 480 +640 355 +640 480 +612 612 +640 480 +500 334 +640 427 +432 640 +640 416 +640 360 +468 640 +640 527 +640 570 +640 428 +480 640 +640 480 +640 427 +480 640 +640 426 +640 480 +500 375 +640 360 +424 640 +478 640 +640 428 +640 427 +240 320 +427 640 +375 500 +500 375 +566 640 +640 480 +640 427 +500 335 +640 427 +500 375 +640 612 +640 480 +426 640 +640 480 +640 385 +640 424 +640 427 +640 478 +640 426 +427 640 +500 375 +640 480 +640 480 +640 258 +640 429 +640 427 +640 480 +640 480 +640 480 +640 425 +500 333 +640 480 +640 501 +640 640 +612 612 +640 424 +500 375 +640 454 +500 375 +640 388 +427 640 +425 640 +500 375 +376 500 +640 425 +640 480 +500 375 +500 357 +640 480 +640 378 +500 375 +640 431 +640 427 +640 450 +612 612 +640 427 +640 427 +640 427 +612 612 +640 480 +567 476 +480 640 +424 640 +640 428 +640 480 +640 427 +640 480 +640 426 +640 427 +640 480 +640 480 +640 480 +640 427 +480 640 +640 427 +640 480 +400 538 +640 427 +500 375 +428 640 +640 384 +640 426 +480 640 +640 488 +427 640 +640 480 +640 427 +640 424 +427 640 +640 480 +480 640 +612 612 +640 480 +480 640 +427 640 +640 466 +640 480 +640 480 +461 640 +640 480 +640 480 +500 254 +640 425 +500 375 +480 640 +480 640 +640 405 +612 612 +480 640 +514 640 +640 480 +640 480 +640 480 +400 300 +640 509 +640 424 +426 640 +640 480 +640 512 +428 640 +480 640 +612 612 +401 500 +640 478 +640 480 +640 427 +640 427 +500 375 +640 480 +640 425 +457 640 +640 427 +640 395 +480 640 +640 427 +640 478 +640 480 +640 455 +640 536 +425 640 +640 480 +640 427 +427 640 +417 500 +500 333 +480 640 +640 427 +640 360 +640 427 +427 640 +640 363 +640 480 +612 612 +640 614 +640 480 +479 640 +334 640 +640 425 +480 640 +429 640 +640 480 +640 427 +640 480 +480 640 +480 640 +500 412 +471 600 +500 333 +640 480 +640 425 +640 389 +640 339 +640 428 +640 640 +500 335 +640 426 +640 426 +425 640 +427 640 +425 640 +640 428 +427 640 +640 480 +640 427 +427 640 +640 282 +480 640 +500 281 +333 500 +458 640 +640 426 +426 640 +640 427 +640 425 +427 640 +640 480 +480 640 +640 485 +640 480 +480 640 +640 426 +427 640 +480 640 +500 326 +640 427 +640 480 +362 500 +640 480 +640 427 +332 500 +602 640 +640 480 +640 480 +480 640 +640 480 +640 427 +640 425 +640 480 +640 480 +480 640 +413 478 +640 640 +640 446 +640 249 +640 458 +640 453 +426 640 +640 563 +640 640 +640 480 +640 427 +425 640 +640 426 +480 640 +640 480 +640 565 +640 640 +640 480 +640 427 +640 427 +426 640 +640 427 +480 640 +640 427 +640 480 +500 375 +612 612 +433 640 +512 640 +640 427 +640 424 +640 480 +500 332 +640 480 +640 480 +500 375 +500 333 +640 427 +640 480 +640 480 +480 640 +500 333 +640 421 +640 480 +640 427 +640 480 +640 424 +640 480 +612 612 +640 480 +640 480 +368 640 +640 480 +640 480 +640 480 +640 480 +640 480 +500 375 +640 428 +640 342 +500 375 +480 640 +640 427 +640 427 +640 424 +640 457 +500 375 +401 640 +480 640 +640 640 +640 478 +640 419 +500 391 +640 481 +640 427 +640 427 +640 480 +640 480 +480 640 +500 274 +640 446 +640 480 +480 640 +480 640 +640 640 +612 612 +640 445 +640 480 +500 334 +640 480 +640 427 +640 427 +640 426 +640 428 +640 425 +500 321 +640 427 +640 480 +640 426 +500 333 +640 480 +608 640 +640 424 +640 426 +226 135 +640 361 +640 427 +640 480 +480 640 +640 480 +612 612 +640 591 +640 417 +390 640 +432 640 +640 397 +481 640 +640 427 +511 640 +640 427 +640 426 +500 335 +640 512 +640 480 +426 640 +640 480 +375 500 +640 480 +640 426 +640 425 +640 427 +640 379 +640 480 +333 500 +480 640 +640 480 +640 360 +640 428 +640 560 +640 359 +640 428 +640 427 +640 640 +640 427 +480 640 +480 640 +334 500 +640 427 +640 428 +640 427 +640 509 +640 480 +640 480 +527 640 +509 640 +640 427 +612 612 +640 480 +640 424 +640 480 +640 480 +640 540 +640 427 +640 368 +640 427 +500 438 +427 640 +640 427 +640 426 +640 427 +612 612 +640 480 +480 640 +640 427 +640 480 +640 480 +480 640 +427 640 +500 333 +640 480 +360 640 +640 480 +640 290 +500 333 +427 640 +640 429 +640 616 +640 428 +640 427 +640 480 +640 465 +640 427 +640 427 +479 640 +500 375 +481 640 +640 480 +640 480 +500 286 +640 480 +500 375 +500 375 +640 480 +640 640 +640 424 +427 640 +640 359 +640 480 +427 640 +640 428 +612 612 +333 500 +640 427 +333 500 +640 480 +612 612 +500 337 +500 375 +480 640 +427 640 +640 476 +640 481 +640 427 +500 375 +640 480 +427 640 +640 480 +640 478 +640 425 +500 332 +640 640 +640 480 +640 425 +640 480 +640 409 +459 640 +478 640 +427 640 +640 480 +640 468 +640 480 +640 427 +500 449 +640 400 +640 360 +333 500 +480 640 +640 480 +640 480 +426 640 +640 415 +305 400 +640 480 +640 419 +640 480 +640 427 +640 425 +300 400 +470 353 +640 521 +612 612 +640 480 +640 512 +480 640 +640 640 +640 480 +500 366 +640 480 +333 500 +640 427 +640 480 +640 427 +427 640 +366 500 +640 427 +640 427 +640 480 +640 426 +640 480 +640 480 +640 480 +640 424 +500 375 +640 427 +640 463 +640 512 +640 480 +375 500 +400 400 +640 426 +640 481 +640 480 +336 248 +640 480 +480 640 +640 274 +640 480 +333 500 +480 640 +640 480 +640 427 +640 400 +640 427 +480 640 +427 640 +428 640 +500 333 +401 640 +480 640 +640 424 +640 480 +375 500 +379 640 +640 480 +480 640 +640 478 +375 500 +640 427 +360 640 +429 640 +500 333 +640 427 +480 640 +640 480 +640 415 +640 293 +620 640 +480 640 +375 500 +640 426 +640 360 +640 481 +640 427 +496 640 +360 640 +640 480 +640 427 +480 640 +640 480 +512 640 +476 640 +480 640 +494 640 +375 500 +640 360 +640 426 +640 428 +640 480 +640 425 +640 426 +640 374 +640 427 +640 480 +640 479 +640 426 +640 427 +640 427 +480 640 +446 640 +640 426 +640 480 +640 427 +640 385 +640 480 +640 488 +640 480 +427 640 +427 640 +640 426 +640 480 +389 500 +640 480 +640 480 +640 480 +425 640 +480 640 +300 225 +640 515 +640 426 +640 480 +640 505 +347 491 +640 385 +640 427 +500 335 +640 426 +640 427 +428 640 +640 452 +428 640 +640 427 +640 427 +427 640 +640 424 +640 480 +480 640 +640 427 +480 640 +640 480 +640 480 +640 427 +640 427 +640 425 +640 426 +640 426 +494 640 +427 640 +640 380 +640 480 +640 480 +427 640 +427 640 +333 500 +640 427 +480 640 +500 334 +640 640 +640 361 +426 640 +640 480 +640 480 +640 480 +640 425 +640 428 +640 480 +640 480 +640 480 +640 426 +640 479 +457 640 +640 424 +500 332 +334 500 +375 500 +640 478 +500 333 +640 480 +500 400 +640 428 +640 480 +427 640 +500 375 +500 334 +500 291 +640 480 +640 480 +640 480 +640 427 +640 510 +640 480 +640 480 +428 640 +480 640 +500 375 +640 480 +640 512 +640 275 +640 512 +640 424 +612 612 +426 640 +640 481 +375 500 +640 457 +640 427 +619 640 +640 427 +640 480 +500 375 +640 398 +640 480 +427 640 +500 375 +480 640 +427 640 +500 375 +640 426 +640 427 +480 640 +500 375 +640 413 +640 424 +480 640 +640 426 +640 480 +500 400 +521 640 +427 640 +640 462 +640 480 +640 480 +427 640 +500 347 +640 427 +640 427 +597 400 +640 426 +640 427 +640 480 +640 480 +640 431 +640 419 +640 479 +640 428 +480 640 +640 427 +640 428 +426 640 +640 311 +480 640 +640 427 +640 513 +640 424 +500 358 +480 640 +640 480 +300 426 +640 480 +377 640 +480 640 +427 640 +640 427 +640 425 +640 320 +640 480 +640 360 +427 640 +640 403 +640 425 +480 640 +640 426 +480 640 +428 640 +426 640 +640 427 +459 640 +369 500 +480 640 +640 480 +480 640 +480 640 +500 281 +640 425 +640 468 +640 440 +640 427 +640 534 +640 478 +640 482 +640 426 +500 375 +424 640 +640 331 +640 480 +541 640 +640 268 +640 427 +640 425 +513 640 +640 426 +640 527 +500 333 +640 427 +498 640 +612 612 +339 500 +640 427 +500 391 +480 640 +427 640 +500 333 +427 640 +640 480 +480 640 +640 422 +349 500 +480 640 +333 500 +640 425 +424 640 +640 427 +500 339 +640 425 +640 460 +478 640 +640 468 +640 427 +640 434 +640 427 +640 427 +640 426 +500 375 +640 427 +500 375 +640 388 +640 426 +375 500 +640 426 +640 426 +640 425 +426 640 +640 424 +387 500 +640 480 +427 640 +640 427 +640 427 +640 427 +640 480 +480 640 +425 640 +640 480 +640 640 +640 424 +612 612 +500 333 +500 375 +640 501 +640 480 +640 577 +640 480 +500 375 +425 640 +500 500 +640 426 +640 427 +640 426 +640 480 +640 428 +500 370 +640 360 +500 399 +500 333 +349 500 +640 427 +640 427 +480 640 +640 480 +640 263 +640 480 +447 640 +640 427 +640 317 +640 480 +428 640 +640 426 +480 640 +640 427 +640 480 +375 500 +640 512 +640 430 +480 640 +480 640 +480 640 +500 500 +500 287 +640 480 +640 426 +427 640 +426 640 +640 480 +640 427 +640 427 +375 500 +546 640 +320 240 +425 640 +500 335 +640 425 +640 367 +640 480 +640 427 +640 480 +478 640 +640 427 +640 391 +640 429 +640 480 +640 427 +640 384 +427 640 +640 360 +640 495 +640 478 +640 427 +640 480 +500 218 +640 480 +500 333 +640 480 +640 480 +427 640 +640 480 +640 426 +375 500 +640 427 +640 427 +640 428 +640 618 +480 640 +640 427 +640 427 +554 640 +640 427 +640 427 +640 480 +640 499 +640 427 +640 420 +640 480 +640 480 +425 640 +500 332 +640 480 +640 423 +408 640 +640 480 +529 640 +640 426 +640 480 +500 375 +640 427 +640 508 +500 375 +427 640 +640 480 +640 427 +612 612 +480 640 +640 251 +480 640 +612 612 +500 375 +426 640 +640 480 +480 640 +536 640 +640 480 +640 425 +640 467 +640 480 +438 640 +448 290 +480 640 +640 480 +640 426 +640 480 +640 480 +512 640 +630 630 +640 383 +426 640 +640 404 +500 333 +500 375 +500 327 +429 640 +640 480 +640 469 +640 426 +640 537 +640 359 +640 640 +640 480 +480 640 +640 427 +500 375 +444 640 +640 480 +640 427 +640 480 +640 480 +427 640 +480 640 +640 399 +480 640 +640 434 +640 480 +640 480 +640 480 +640 480 +640 480 +640 428 +640 427 +640 427 +640 480 +640 394 +640 482 +461 640 +640 480 +640 427 +640 469 +640 424 +640 480 +640 448 +640 262 +480 640 +425 640 +640 360 +500 375 +640 480 +640 480 +480 640 +640 429 +640 480 +640 480 +640 426 +640 565 +640 480 +480 640 +427 640 +640 426 +512 640 +500 375 +500 375 +500 333 +500 375 +429 640 +640 427 +480 640 +640 320 +500 500 +640 480 +640 427 +424 640 +640 480 +640 403 +640 425 +500 375 +500 334 +640 480 +640 615 +640 480 +640 426 +640 480 +640 427 +640 480 +375 500 +640 480 +640 385 +640 368 +640 427 +492 500 +640 480 +640 480 +640 442 +640 404 +640 480 +640 400 +427 640 +640 427 +640 480 +612 612 +427 640 +640 436 +330 500 +640 428 +640 480 +640 480 +640 436 +640 494 +640 360 +320 240 +640 427 +480 640 +640 427 +640 480 +640 480 +640 480 +375 500 +640 500 +640 640 +640 480 +640 426 +640 536 +640 398 +427 640 +640 427 +640 480 +640 426 +640 427 +640 480 +480 640 +427 640 +500 375 +640 404 +500 357 +480 640 +640 427 +640 480 +429 640 +640 480 +640 429 +640 426 +640 429 +427 640 +427 640 +640 473 +480 640 +333 500 +426 640 +480 640 +640 480 +640 480 +640 426 +640 480 +480 360 +500 321 +640 428 +640 427 +640 480 +640 480 +500 375 +427 640 +640 503 +427 640 +640 427 +424 640 +610 405 +640 426 +426 640 +640 474 +640 428 +480 640 +640 403 +640 480 +640 428 +640 427 +640 480 +527 640 +449 640 +640 426 +480 640 +640 430 +500 500 +640 480 +640 427 +640 445 +640 440 +640 478 +500 375 +640 427 +640 539 +640 479 +512 640 +640 480 +640 480 +500 375 +640 480 +500 375 +640 428 +640 478 +500 334 +424 640 +640 424 +640 423 +640 427 +375 500 +640 480 +640 427 +640 427 +427 640 +640 480 +640 427 +640 360 +640 427 +640 427 +428 640 +640 480 +640 428 +640 480 +500 333 +640 480 +425 640 +640 551 +640 511 +427 640 +640 425 +640 480 +612 612 +375 500 +490 367 +398 640 +640 480 +640 504 +640 480 +640 480 +518 640 +640 480 +640 427 +640 413 +640 394 +640 427 +640 427 +640 428 +448 336 +480 640 +500 332 +640 426 +427 640 +424 640 +480 640 +640 426 +478 640 +640 480 +640 360 +436 640 +500 375 +640 544 +427 640 +640 640 +425 640 +640 428 +640 428 +425 640 +480 640 +640 425 +640 425 +426 640 +640 427 +480 640 +640 427 +427 640 +435 640 +480 640 +500 379 +640 640 +640 427 +640 427 +640 480 +640 480 +480 640 +640 480 +640 326 +640 427 +640 480 +500 333 +640 425 +453 640 +480 640 +640 428 +640 428 +441 640 +426 640 +640 480 +640 486 +640 427 +500 375 +500 375 +640 428 +640 494 +324 432 +640 427 +640 428 +480 640 +320 480 +640 480 +640 422 +640 427 +640 405 +640 480 +432 640 +640 427 +640 480 +640 426 +640 475 +458 640 +640 427 +612 612 +640 360 +507 480 +640 427 +480 640 +640 480 +640 480 +640 360 +640 428 +427 640 +500 375 +427 640 +640 427 +640 478 +640 480 +640 480 +417 640 +640 424 +640 427 +640 480 +640 426 +640 512 +640 480 +640 480 +640 427 +480 361 +640 427 +480 640 +640 484 +375 500 +427 640 +480 640 +500 375 +416 640 +640 408 +640 609 +612 612 +640 480 +640 360 +500 499 +640 480 +640 427 +640 427 +640 426 +480 640 +500 375 +640 529 +500 375 +640 480 +640 480 +640 425 +640 480 +500 375 +640 470 +640 426 +500 375 +640 480 +640 426 +640 432 +640 424 +640 316 +640 429 +640 463 +640 480 +458 640 +640 480 +640 427 +640 480 +640 427 +640 425 +612 612 +480 640 +375 500 +640 480 +640 483 +427 640 +640 480 +640 512 +499 374 +233 640 +640 312 +640 480 +640 457 +640 445 +500 375 +640 425 +640 427 +427 640 +640 427 +640 427 +480 640 +640 480 +500 375 +640 480 +427 640 +640 480 +640 428 +640 480 +480 640 +640 640 +640 513 +640 422 +500 325 +426 640 +640 480 +480 640 +500 346 +375 500 +640 480 +640 424 +500 375 +640 456 +640 456 +640 436 +640 426 +640 480 +640 428 +640 437 +300 225 +429 640 +640 480 +640 480 +640 480 +375 500 +640 424 +640 480 +640 480 +640 427 +638 479 +640 316 +500 333 +640 481 +640 427 +640 480 +640 427 +480 640 +640 427 +640 480 +500 332 +640 427 +640 480 +640 431 +584 430 +640 361 +640 640 +500 333 +640 364 +640 480 +480 640 +640 480 +560 640 +640 480 +640 428 +427 640 +443 640 +640 428 +480 640 +640 427 +480 640 +640 427 +640 512 +425 640 +480 640 +480 640 +362 640 +640 379 +640 480 +640 407 +640 480 +640 480 +480 640 +640 480 +427 640 +640 428 +640 427 +375 500 +500 375 +640 480 +640 640 +500 336 +640 480 +361 640 +640 424 +160 120 +333 500 +640 427 +540 455 +640 426 +640 425 +640 425 +640 428 +333 500 +640 419 +640 425 +640 428 +640 480 +500 375 +640 420 +500 375 +480 640 +640 480 +640 424 +640 480 +640 322 +640 478 +640 427 +640 480 +480 640 +640 429 +640 453 +480 640 +500 337 +240 320 +480 640 +640 480 +640 428 +640 427 +640 428 +640 480 +637 640 +640 480 +640 640 +640 480 +640 482 +500 321 +500 375 +640 480 +640 480 +500 333 +426 640 +480 640 +640 427 +480 640 +640 427 +640 427 +640 427 +500 297 +640 423 +500 333 +640 427 +640 480 +500 375 +640 480 +500 364 +640 427 +640 480 +480 640 +500 376 +640 427 +500 375 +640 398 +640 480 +640 427 +640 480 +428 640 +640 413 +640 640 +640 427 +640 427 +640 480 +480 640 +480 640 +640 427 +640 428 +640 427 +480 640 +640 480 +640 448 +640 480 +640 428 +640 391 +640 419 +640 426 +640 480 +640 429 +640 426 +640 480 +640 480 +640 528 +640 426 +640 480 +640 424 +427 640 +480 640 +640 480 +500 333 +500 375 +640 480 +480 360 +500 375 +640 510 +480 640 +640 480 +640 480 +640 627 +640 427 +640 480 +640 427 +640 427 +427 640 +480 640 +640 427 +419 640 +426 640 +640 424 +640 480 +640 625 +640 426 +487 500 +640 427 +427 640 +640 480 +500 375 +640 429 +425 640 +640 286 +375 500 +640 429 +640 480 +480 640 +500 375 +612 612 +640 480 +424 640 +640 427 +640 427 +640 382 +640 446 +640 427 +640 427 +640 472 +428 640 +640 427 +640 427 +500 333 +508 640 +500 375 +500 375 +612 612 +427 640 +640 425 +640 425 +640 480 +640 478 +640 427 +640 428 +427 640 +640 480 +480 640 +426 640 +600 393 +640 360 +480 640 +640 361 +640 427 +500 467 +425 640 +640 480 +640 427 +500 333 +500 333 +640 480 +640 359 +640 427 +595 428 +640 427 +490 500 +640 427 +640 360 +640 429 +612 612 +640 377 +640 454 +640 480 +428 640 +640 640 +640 427 +640 480 +640 384 +640 429 +500 375 +427 640 +640 427 +640 480 +640 480 +640 480 +640 480 +500 375 +640 480 +640 427 +640 480 +640 480 +640 428 +500 375 +640 424 +640 419 +333 500 +640 425 +612 612 +640 480 +640 427 +640 426 +640 427 +640 455 +640 427 +480 640 +640 476 +640 480 +640 448 +426 640 +427 640 +640 427 +640 480 +640 427 +428 640 +640 426 +640 426 +500 333 +640 427 +640 408 +640 558 +640 480 +500 375 +640 640 +640 482 +640 426 +383 640 +500 281 +480 640 +375 500 +640 427 +640 425 +640 455 +494 640 +640 373 +640 427 +640 427 +640 425 +480 640 +640 480 +640 427 +640 428 +640 480 +500 298 +640 427 +640 409 +640 426 +640 480 +640 314 +640 424 +640 427 +640 427 +640 512 +640 489 +500 333 +480 640 +640 298 +500 375 +612 612 +640 249 +640 360 +454 640 +640 427 +640 640 +640 480 +500 375 +640 481 +640 480 +640 426 +640 453 +640 427 +480 640 +640 427 +480 640 +640 388 +640 480 +640 480 +500 316 +640 480 +640 480 +425 640 +640 480 +500 375 +640 480 +640 427 +480 640 +631 640 +640 480 +640 426 +640 476 +640 427 +640 359 +640 549 +426 640 +640 480 +481 640 +640 389 +640 420 +640 640 +640 427 +619 640 +640 530 +547 640 +640 425 +640 456 +640 480 +640 429 +640 360 +640 480 +640 426 +640 480 +500 375 +640 476 +640 480 +496 640 +640 360 +640 401 +402 640 +640 428 +640 427 +640 480 +640 427 +640 424 +640 480 +640 428 +640 480 +640 427 +640 426 +640 480 +480 640 +640 480 +480 640 +640 427 +640 427 +640 468 +640 427 +640 427 +480 640 +500 375 +612 612 +640 374 +640 433 +640 426 +640 640 +640 478 +458 640 +640 360 +333 500 +640 480 +640 480 +612 612 +640 480 +428 640 +480 640 +480 640 +640 480 +612 612 +640 610 +640 309 +640 640 +640 428 +640 427 +640 427 +480 640 +500 375 +640 427 +640 480 +640 480 +478 640 +500 333 +640 427 +640 427 +640 479 +640 480 +640 480 +500 375 +640 480 +640 425 +640 480 +640 480 +500 375 +640 480 +640 480 +640 480 +526 640 +512 640 +500 406 +500 222 +640 480 +640 427 +640 463 +640 426 +480 640 +500 247 +500 375 +640 480 +640 429 +640 426 +500 333 +640 423 +640 430 +640 427 +640 427 +640 480 +500 375 +640 426 +500 375 +640 424 +640 427 +612 612 +640 480 +427 640 +640 428 +426 640 +640 640 +609 640 +640 480 +480 640 +640 428 +500 332 +640 360 +483 640 +478 640 +640 327 +640 480 +640 359 +640 427 +640 438 +427 640 +640 478 +640 426 +640 480 +480 640 +640 480 +640 480 +427 640 +640 427 +640 413 +640 480 +640 427 +333 500 +640 480 +426 640 +640 480 +640 424 +640 427 +640 480 +640 480 +640 264 +640 368 +640 426 +375 500 +494 640 +490 500 +640 478 +500 335 +640 480 +480 640 +500 333 +346 500 +640 480 +640 415 +640 480 +640 426 +487 640 +500 375 +500 333 +640 371 +640 426 +640 438 +640 480 +640 427 +428 640 +427 640 +439 640 +640 434 +640 480 +500 335 +640 480 +500 333 +640 427 +640 480 +640 427 +427 640 +640 480 +640 478 +424 640 +640 480 +640 328 +640 427 +640 452 +640 360 +500 375 +640 480 +429 640 +640 446 +640 640 +640 426 +640 427 +480 640 +640 364 +640 480 +429 500 +640 480 +500 375 +427 640 +480 640 +471 640 +336 500 +480 640 +640 427 +480 640 +480 640 +496 400 +640 427 +640 158 +640 480 +640 480 +640 480 +640 606 +640 480 +640 427 +640 480 +640 480 +640 429 +640 424 +640 480 +375 500 +500 375 +375 500 +463 640 +530 353 +480 640 +480 640 +427 640 +402 640 +640 480 +500 333 +640 480 +640 427 +640 428 +640 502 +640 480 +591 640 +640 480 +500 375 +486 640 +426 640 +640 480 +427 640 +640 480 +427 640 +640 480 +640 428 +640 427 +640 480 +640 478 +640 480 +640 427 +640 426 +640 480 +640 427 +640 426 +640 424 +427 640 +640 563 +640 427 +640 480 +640 480 +640 471 +640 425 +640 427 +375 500 +640 384 +640 429 +640 480 +428 640 +640 404 +333 500 +640 427 +640 417 +640 480 +612 612 +375 500 +640 480 +612 612 +480 640 +640 427 +640 426 +640 480 +640 480 +480 640 +424 640 +640 427 +640 480 +640 427 +640 394 +640 428 +500 375 +640 640 +640 425 +500 500 +469 640 +375 500 +640 432 +480 640 +425 640 +457 640 +612 612 +427 640 +640 473 +640 478 +375 500 +640 426 +640 360 +640 426 +427 640 +425 640 +640 426 +480 640 +640 428 +640 426 +462 500 +375 500 +640 480 +640 429 +640 432 +640 427 +346 640 +500 333 +640 427 +640 625 +640 418 +640 425 +611 640 +640 512 +640 480 +640 428 +480 640 +640 411 +640 442 +640 480 +640 480 +480 640 +640 480 +640 435 +640 434 +640 424 +480 640 +640 481 +640 437 +640 480 +640 427 +640 426 +640 506 +640 480 +640 480 +640 361 +640 427 +640 480 +640 480 +640 423 +640 427 +640 480 +640 640 +640 427 +640 640 +480 640 +427 640 +640 349 +640 427 +500 353 +640 427 +640 480 +637 637 +427 640 +480 640 +640 480 +640 427 +519 389 +640 480 +640 480 +640 388 +480 640 +640 480 +380 640 +500 375 +349 640 +640 429 +480 640 +640 480 +640 480 +640 427 +496 640 +640 479 +427 640 +612 612 +640 360 +375 500 +500 342 +375 500 +640 427 +550 365 +640 428 +640 480 +640 428 +333 500 +427 640 +640 480 +640 449 +640 480 +640 480 +640 480 +640 480 +612 612 +640 426 +428 640 +640 480 +640 427 +427 640 +640 352 +411 640 +480 640 +640 480 +640 427 +640 480 +323 500 +480 640 +640 623 +612 612 +640 427 +500 375 +640 360 +640 480 +640 427 +640 427 +640 427 +500 333 +442 338 +640 426 +640 493 +480 640 +500 366 +333 500 +640 427 +640 431 +640 427 +480 640 +640 480 +481 640 +333 500 +640 447 +426 640 +480 640 +426 640 +612 612 +640 427 +640 427 +640 427 +640 389 +640 522 +640 480 +640 480 +612 612 +375 500 +640 427 +534 640 +640 480 +640 479 +398 640 +640 480 +640 480 +640 489 +640 480 +640 360 +640 483 +640 533 +640 425 +426 640 +500 334 +640 480 +640 373 +422 640 +500 374 +640 407 +640 383 +640 511 +480 640 +640 427 +320 240 +424 640 +640 489 +424 640 +640 427 +640 478 +640 480 +480 640 +640 398 +428 640 +640 426 +433 640 +640 360 +555 640 +480 640 +640 427 +640 428 +640 426 +640 480 +480 640 +500 375 +417 431 +500 375 +427 640 +480 640 +500 375 +640 428 +427 640 +640 427 +480 640 +640 427 +500 375 +490 640 +612 612 +423 640 +500 333 +375 500 +640 480 +640 480 +426 640 +426 640 +480 640 +640 427 +480 640 +640 480 +640 480 +640 424 +640 480 +640 463 +640 427 +640 291 +640 480 +640 427 +640 395 +640 480 +640 457 +360 640 +640 427 +415 640 +640 427 +640 435 +500 375 +640 480 +640 427 +427 640 +640 425 +640 440 +333 500 +640 480 +640 372 +500 338 +640 426 +640 480 +640 480 +640 360 +423 640 +427 640 +640 522 +333 500 +640 428 +640 498 +500 500 +422 640 +640 480 +480 640 +640 480 +640 512 +640 480 +640 480 +500 375 +500 332 +640 427 +429 640 +375 500 +640 480 +360 500 +640 480 +640 426 +640 426 +640 330 +500 333 +640 478 +640 480 +640 429 +640 480 +640 463 +410 640 +427 640 +640 480 +640 383 +460 640 +640 480 +640 480 +640 474 +640 426 +612 612 +640 480 +640 480 +500 496 +426 640 +640 467 +640 360 +427 640 +640 426 +480 640 +640 640 +480 640 +640 427 +323 500 +478 640 +640 427 +500 383 +640 425 +640 426 +424 640 +640 480 +640 426 +360 640 +312 640 +640 323 +479 640 +640 428 +500 375 +640 480 +640 480 +640 480 +427 640 +480 640 +640 359 +640 480 +640 465 +426 640 +640 480 +640 480 +640 480 +362 500 +640 467 +500 375 +640 480 +480 640 +640 427 +640 426 +640 480 +640 436 +640 480 +424 640 +640 428 +571 640 +640 427 +640 480 +640 482 +320 240 +640 398 +500 333 +500 333 +427 640 +500 375 +480 640 +427 640 +640 480 +376 640 +567 640 +480 640 +640 480 +640 426 +640 480 +640 479 +640 480 +427 640 +466 640 +640 480 +640 484 +640 482 +640 480 +640 480 +640 428 +427 640 +640 480 +640 511 +640 429 +640 425 +427 640 +640 427 +500 375 +640 427 +427 640 +427 640 +640 480 +500 375 +479 640 +640 427 +427 640 +500 500 +487 640 +640 459 +640 427 +640 480 +640 480 +640 480 +640 427 +473 640 +640 360 +426 640 +640 480 +640 409 +427 640 +640 359 +640 423 +500 300 +500 375 +640 427 +640 423 +640 425 +456 640 +640 328 +427 640 +640 480 +640 426 +427 640 +640 427 +500 375 +640 480 +500 375 +640 483 +399 500 +640 480 +640 427 +640 427 +640 427 +500 334 +640 480 +400 500 +427 640 +346 500 +640 313 +640 427 +640 360 +480 640 +640 478 +640 427 +640 427 +480 640 +640 480 +640 541 +500 322 +427 640 +640 379 +518 640 +640 426 +426 640 +640 425 +480 640 +640 428 +640 360 +640 426 +640 474 +480 640 +640 480 +640 480 +640 480 +500 375 +383 640 +480 640 +640 480 +640 414 +640 512 +640 427 +427 640 +500 333 +480 640 +640 425 +640 427 +600 453 +640 480 +640 425 +640 360 +640 480 +500 375 +640 360 +500 332 +640 442 +640 426 +500 331 +640 427 +640 435 +427 640 +640 427 +500 494 +640 420 +640 427 +640 427 +640 427 +500 472 +640 480 +500 375 +431 640 +500 333 +640 396 +640 428 +640 480 +500 375 +640 480 +500 465 +640 425 +640 424 +640 623 +640 430 +480 640 +640 480 +333 500 +640 480 +500 457 +640 479 +640 427 +640 427 +640 427 +500 252 +640 424 +427 640 +640 427 +640 480 +640 485 +640 426 +640 427 +640 433 +500 333 +480 640 +640 480 +428 640 +640 427 +640 427 +640 478 +500 457 +500 334 +640 480 +640 427 +349 640 +640 448 +380 500 +480 640 +640 437 +640 427 +544 640 +640 427 +427 640 +425 640 +612 612 +500 400 +640 480 +480 640 +375 500 +640 480 +640 640 +640 480 +500 375 +640 426 +640 424 +640 617 +500 377 +429 640 +640 479 +500 375 +640 429 +512 640 +426 640 +640 427 +640 427 +640 424 +640 480 +640 480 +640 442 +640 480 +640 491 +640 494 +640 480 +612 612 +467 500 +612 612 +640 534 +640 494 +640 409 +640 478 +480 640 +500 375 +427 640 +640 480 +500 348 +640 425 +640 480 +507 640 +640 480 +640 401 +640 480 +640 360 +633 640 +640 427 +500 333 +640 425 +428 285 +500 332 +640 429 +519 640 +640 480 +640 458 +640 480 +640 480 +334 500 +640 427 +480 640 +640 426 +640 426 +480 640 +640 428 +426 640 +480 640 +640 361 +640 480 +480 640 +612 612 +500 270 +640 419 +357 500 +640 427 +640 401 +512 640 +640 426 +612 612 +443 640 +427 640 +480 640 +640 480 +375 500 +427 640 +500 375 +458 640 +640 427 +640 457 +428 640 +640 479 +640 308 +500 332 +640 428 +427 640 +640 480 +640 427 +500 375 +500 375 +612 612 +640 426 +480 640 +361 640 +640 425 +640 480 +375 500 +427 640 +640 426 +640 425 +480 640 +640 558 +640 480 +640 434 +640 428 +640 398 +640 421 +640 480 +640 640 +640 428 +480 640 +640 427 +640 480 +640 427 +612 612 +640 426 +640 424 +573 640 +640 426 +640 427 +500 375 +640 480 +242 350 +640 426 +427 640 +480 640 +467 640 +640 427 +480 640 +640 480 +640 480 +640 427 +640 499 +480 640 +640 427 +640 480 +640 427 +391 640 +640 425 +640 426 +500 332 +480 640 +612 612 +480 640 +640 480 +439 640 +480 640 +478 640 +433 640 +640 480 +480 640 +640 194 +640 480 +640 480 +640 480 +640 640 +480 640 +640 619 +640 427 +640 480 +640 480 +640 426 +612 612 +640 428 +640 484 +427 640 +640 480 +500 374 +425 640 +640 425 +640 427 +428 640 +640 640 +640 427 +509 640 +333 500 +500 375 +325 485 +513 640 +640 425 +640 426 +500 375 +640 480 +640 428 +460 640 +640 480 +480 640 +640 480 +640 421 +640 427 +640 480 +480 640 +480 640 +640 262 +640 480 +640 480 +640 424 +640 427 +507 640 +640 427 +640 531 +427 640 +640 480 +640 480 +640 427 +500 375 +640 464 +522 640 +640 427 +500 332 +425 640 +640 427 +640 473 +640 398 +640 480 +640 428 +640 359 +640 480 +480 640 +640 426 +480 640 +333 500 +640 424 +480 640 +612 612 +500 375 +426 640 +640 427 +640 426 +480 640 +640 428 +640 425 +480 640 +487 640 +541 640 +512 640 +640 427 +424 640 +500 375 +640 446 +480 640 +480 640 +640 425 +428 640 +640 427 +640 389 +480 640 +640 320 +480 640 +480 640 +459 640 +640 469 +640 286 +640 427 +640 480 +640 549 +640 360 +375 500 +612 612 +640 484 +640 427 +640 427 +640 417 +640 480 +640 508 +483 640 +640 640 +612 612 +640 480 +427 640 +640 427 +500 375 +500 400 +480 640 +640 480 +640 640 +640 480 +640 640 +640 320 +480 640 +640 427 +640 480 +640 480 +640 480 +375 500 +640 427 +427 640 +640 428 +640 480 +640 389 +640 480 +640 428 +640 480 +500 375 +640 425 +640 429 +640 427 +640 480 +640 513 +640 344 +640 480 +429 640 +480 640 +500 394 +500 375 +500 354 +426 640 +500 343 +640 428 +640 427 +640 480 +640 423 +150 200 +640 426 +640 360 +640 480 +481 500 +300 225 +640 426 +480 640 +640 423 +500 375 +480 640 +427 640 +640 360 +600 473 +640 480 +640 427 +640 427 +640 427 +640 480 +640 464 +375 500 +427 640 +427 640 +640 400 +480 640 +640 427 +500 332 +480 640 +640 497 +427 640 +427 640 +640 425 +360 640 +633 640 +591 640 +480 360 +640 427 +640 427 +640 439 +427 640 +640 481 +480 640 +480 640 +427 640 +640 427 +500 400 +478 640 +500 375 +640 479 +640 427 +640 427 +640 513 +640 360 +640 427 +640 512 +640 427 +640 427 +640 480 +640 427 +640 480 +334 500 +640 480 +415 640 +427 640 +640 427 +640 480 +640 640 +500 332 +640 427 +480 640 +640 411 +640 480 +640 419 +500 333 +640 480 +426 640 +482 640 +640 480 +640 480 +640 427 +478 640 +375 500 +640 427 +500 375 +640 425 +59 72 +640 428 +405 500 +640 427 +500 330 +427 640 +427 640 +400 500 +640 480 +375 500 +438 640 +640 480 +500 362 +426 640 +480 640 +480 640 +640 426 +640 480 +640 480 +427 640 +640 480 +640 425 +640 447 +640 360 +640 480 +640 428 +500 399 +500 332 +640 427 +640 480 +357 500 +640 444 +640 426 +456 640 +480 640 +640 335 +478 640 +640 427 +640 480 +640 425 +640 461 +500 375 +640 480 +427 640 +480 640 +499 500 +640 480 +640 427 +640 424 +640 426 +640 429 +500 480 +640 426 +480 640 +640 427 +640 427 +500 375 +480 640 +326 246 +640 416 +640 427 +640 391 +640 427 +640 427 +640 426 +640 423 +500 375 +640 640 +640 480 +640 426 +640 427 +640 480 +640 427 +640 427 +640 426 +428 640 +480 640 +640 427 +640 427 +375 500 +426 640 +480 640 +640 360 +640 457 +640 480 +640 480 +640 427 +640 480 +640 480 +640 480 +480 640 +480 640 +612 612 +428 640 +640 480 +640 425 +639 640 +480 640 +640 486 +427 640 +640 481 +640 426 +640 400 +640 480 +427 640 +551 640 +640 426 +640 480 +640 480 +640 480 +640 480 +375 500 +640 480 +640 428 +479 640 +640 513 +604 402 +519 640 +640 401 +640 360 +640 425 +500 333 +425 640 +640 425 +640 480 +640 419 +500 375 +640 640 +640 427 +640 427 +640 480 +640 414 +612 612 +480 640 +480 640 +478 640 +480 640 +640 480 +500 375 +640 640 +640 428 +640 426 +640 480 +640 463 +640 480 +640 428 +640 427 +640 480 +500 333 +500 377 +640 480 +640 454 +640 347 +500 331 +640 427 +640 427 +640 480 +500 375 +640 405 +432 640 +640 427 +500 400 +640 480 +640 480 +640 602 +192 640 +640 480 +640 484 +480 640 +640 427 +500 334 +640 480 +640 480 +375 500 +640 429 +640 347 +640 426 +640 480 +640 480 +640 427 +640 449 +640 427 +640 427 +480 640 +427 640 +640 466 +612 612 +480 640 +640 427 +640 426 +640 424 +640 429 +424 640 +640 425 +640 449 +640 426 +427 640 +640 480 +640 427 +640 480 +640 534 +640 480 +480 640 +480 640 +640 318 +640 426 +640 427 +640 493 +640 427 +640 480 +640 480 +640 380 +640 480 +480 640 +640 480 +640 396 +640 480 +640 427 +640 480 +462 371 +640 461 +640 427 +485 640 +500 640 +368 640 +480 640 +640 427 +640 480 +508 640 +640 424 +293 500 +500 375 +429 640 +640 426 +640 480 +640 480 +640 480 +640 481 +640 360 +640 427 +335 500 +640 479 +640 480 +640 427 +640 427 +640 416 +499 640 +640 480 +480 640 +640 425 +640 480 +640 480 +640 425 +640 426 +640 306 +480 640 +480 640 +413 640 +640 268 +375 500 +640 427 +640 480 +500 375 +640 284 +640 480 +480 640 +640 427 +480 640 +406 640 +640 480 +500 375 +480 640 +640 467 +480 640 +426 640 +640 427 +640 427 +427 640 +640 480 +500 333 +331 500 +480 640 +478 640 +423 640 +361 640 +640 480 +640 429 +640 640 +506 640 +640 500 +640 427 +500 333 +480 640 +612 612 +429 640 +375 500 +640 480 +427 640 +640 427 +640 428 +640 427 +500 375 +640 506 +383 640 +640 426 +640 428 +640 480 +640 427 +500 333 +640 480 +356 640 +426 640 +612 612 +640 512 +640 424 +640 480 +640 480 +640 480 +640 480 +640 426 +478 640 +640 424 +426 640 +425 640 +640 428 +500 375 +333 500 +500 333 +612 612 +425 640 +640 480 +640 429 +640 426 +640 426 +640 480 +640 480 +640 427 +640 425 +640 360 +500 333 +480 640 +640 474 +480 640 +640 428 +640 483 +446 597 +640 413 +500 375 +480 640 +640 427 +500 333 +640 427 +640 368 +500 375 +640 368 +640 640 +465 640 +428 640 +640 428 +640 383 +500 375 +640 427 +640 403 +640 480 +640 466 +333 500 +640 480 +640 426 +480 640 +640 426 +640 426 +640 480 +640 480 +640 478 +640 422 +640 480 +640 426 +640 480 +480 640 +640 480 +640 427 +640 427 +427 640 +612 612 +612 612 +640 427 +640 406 +548 640 +640 427 +640 512 +428 640 +500 333 +500 376 +640 419 +640 400 +424 640 +500 375 +612 612 +640 480 +640 426 +640 456 +640 425 +640 480 +640 480 +428 640 +427 640 +453 640 +640 427 +640 480 +612 612 +640 480 +427 640 +640 480 +360 640 +500 375 +333 500 +640 426 +640 278 +500 334 +640 427 +510 640 +640 424 +500 368 +640 478 +640 480 +640 383 +375 500 +480 640 +640 480 +640 480 +640 480 +500 375 +640 427 +640 425 +427 640 +480 640 +640 455 +640 434 +640 427 +521 640 +640 425 +426 640 +480 640 +640 427 +640 429 +640 480 +640 427 +640 428 +640 480 +640 427 +480 640 +640 480 +640 480 +426 640 +508 640 +448 500 +428 640 +640 427 +640 425 +640 480 +612 612 +640 426 +612 612 +640 427 +640 480 +640 480 +480 640 +500 219 +640 480 +640 374 +426 640 +414 640 +640 427 +640 427 +640 538 +640 426 +480 640 +426 640 +640 480 +640 480 +640 480 +480 640 +640 431 +500 333 +640 427 +428 640 +640 427 +640 425 +500 402 +640 425 +640 480 +640 480 +426 640 +640 480 +384 640 +521 617 +478 640 +428 640 +640 427 +640 480 +640 480 +640 426 +640 480 +640 214 +640 609 +640 427 +640 480 +612 612 +640 398 +480 640 +640 480 +640 426 +640 426 +427 640 +428 640 +640 480 +640 480 +640 480 +427 640 +500 375 +375 500 +640 480 +480 640 +500 375 +640 640 +640 480 +480 640 +375 500 +640 594 +480 640 +500 369 +640 427 +640 480 +640 426 +500 375 +427 640 +640 395 +640 424 +640 427 +640 428 +480 640 +640 480 +480 640 +375 500 +640 427 +640 427 +640 482 +427 640 +429 640 +500 375 +334 500 +640 567 +640 236 +612 612 +640 474 +640 480 +640 443 +640 480 +427 640 +640 429 +424 640 +640 389 +640 426 +640 427 +428 640 +640 480 +492 640 +500 336 +297 500 +640 424 +640 480 +640 427 +351 494 +426 640 +640 426 +500 375 +640 427 +640 428 +640 480 +640 423 +494 640 +375 500 +425 640 +306 408 +640 360 +640 480 +640 640 +500 380 +500 375 +640 480 +640 478 +500 375 +640 426 +638 640 +640 480 +333 500 +480 640 +640 427 +500 375 +500 283 +640 481 +640 426 +500 394 +640 427 +640 480 +268 400 +640 473 +640 408 +640 480 +640 427 +427 640 +640 427 +640 266 +332 500 +640 427 +640 425 +426 640 +500 337 +640 427 +568 320 +556 640 +640 480 +500 333 +500 375 +640 482 +288 432 +640 427 +640 480 +640 480 +500 375 +640 458 +640 427 +640 480 +640 480 +360 640 +640 480 +640 427 +640 426 +640 428 +640 480 +427 640 +480 640 +427 640 +333 500 +480 640 +640 427 +428 640 +480 640 +427 640 +424 640 +500 331 +500 414 +480 640 +500 346 +360 640 +640 480 +640 421 +640 425 +640 480 +480 640 +426 640 +480 640 +640 425 +481 640 +640 427 +500 334 +640 429 +500 333 +480 640 +375 500 +640 480 +640 427 +640 404 +480 640 +640 336 +640 480 +640 427 +424 640 +640 428 +640 426 +640 359 +640 424 +640 360 +640 426 +640 427 +640 480 +480 640 +640 480 +640 480 +640 427 +640 360 +640 427 +640 427 +640 480 +640 427 +426 640 +640 640 +500 404 +640 480 +640 480 +640 427 +640 427 +640 480 +640 427 +640 640 +640 413 +450 600 +640 427 +333 500 +240 320 +640 433 +640 480 +640 480 +480 640 +640 424 +425 640 +456 640 +500 375 +640 427 +484 640 +640 548 +640 480 +319 212 +640 480 +425 640 +400 600 +640 480 +640 387 +640 427 +396 640 +640 480 +640 480 +480 640 +640 480 +500 375 +640 480 +425 640 +640 152 +480 640 +467 640 +640 428 +309 500 +334 500 +640 457 +480 640 +640 480 +428 640 +640 427 +640 448 +640 428 +640 512 +500 375 +640 427 +640 480 +640 480 +640 480 +640 426 +640 427 +640 489 +375 500 +640 488 +640 427 +640 427 +640 427 +640 480 +640 480 +640 480 +500 375 +500 335 +640 480 +640 480 +480 640 +640 349 +480 640 +480 640 +640 428 +480 640 +640 329 +511 640 +640 427 +640 480 +640 480 +640 480 +480 640 +640 480 +500 375 +640 427 +640 491 +477 640 +640 426 +640 480 +640 480 +500 331 +427 640 +512 640 +640 426 +640 289 +500 333 +640 640 +640 427 +640 480 +640 429 +640 431 +640 427 +640 426 +640 480 +640 427 +640 426 +640 480 +640 480 +640 480 +500 375 +640 480 +480 640 +640 427 +640 427 +640 610 +640 427 +480 640 +500 358 +640 429 +640 480 +480 640 +426 640 +640 426 +427 640 +640 640 +640 426 +640 425 +500 334 +640 480 +640 216 +425 640 +640 427 +640 416 +375 500 +640 480 +640 512 +481 640 +640 480 +640 415 +480 640 +640 360 +640 426 +480 640 +640 424 +640 427 +375 500 +432 640 +640 480 +640 349 +640 424 +500 333 +428 640 +480 640 +640 461 +640 422 +640 429 +640 480 +640 480 +640 480 +640 640 +640 480 +640 454 +640 371 +481 640 +640 640 +640 480 +640 480 +640 425 +640 640 +640 452 +640 315 +640 427 +640 368 +612 612 +500 375 +640 457 +640 579 +640 427 +427 640 +600 367 +640 480 +628 640 +640 360 +640 480 +640 427 +480 640 +479 640 +640 234 +640 420 +500 375 +640 480 +640 427 +640 480 +640 480 +640 427 +612 612 +500 400 +500 333 +640 480 +427 640 +640 427 +334 640 +612 612 +640 480 +640 427 +612 612 +640 480 +489 640 +427 640 +640 428 +640 427 +640 509 +640 480 +500 102 +427 640 +640 428 +640 480 +640 360 +588 640 +423 640 +640 507 +375 500 +375 500 +612 612 +640 428 +427 640 +500 375 +640 480 +640 480 +640 480 +640 427 +640 427 +640 383 +640 428 +640 480 +640 425 +640 426 +640 472 +640 400 +639 640 +500 333 +500 375 +375 500 +500 333 +640 480 +640 426 +640 424 +427 640 +640 427 +640 425 +640 480 +640 427 +500 375 +640 409 +500 375 +640 423 +640 424 +640 425 +640 470 +640 480 +640 480 +612 612 +640 640 +640 480 +640 426 +640 427 +612 612 +640 480 +426 640 +640 401 +640 253 +640 427 +640 427 +427 640 +640 480 +640 427 +640 480 +640 588 +640 495 +640 429 +640 427 +640 480 +640 427 +491 500 +480 640 +640 406 +640 480 +640 425 +427 640 +640 425 +640 427 +427 640 +640 427 +500 333 +640 427 +500 375 +640 349 +426 640 +640 480 +375 500 +640 480 +426 640 +640 360 +640 425 +640 484 +426 640 +333 500 +640 480 +640 480 +640 427 +640 361 +640 480 +640 425 +640 379 +640 480 +640 480 +423 640 +323 500 +640 377 +640 427 +640 480 +640 424 +640 360 +640 480 +640 474 +640 480 +640 489 +640 480 +500 331 +480 640 +584 640 +333 500 +640 427 +640 429 +640 427 +640 480 +640 480 +640 427 +480 640 +426 640 +640 450 +640 480 +640 425 +640 427 +640 480 +640 427 +640 480 +640 480 +480 640 +478 640 +640 427 +640 480 +640 427 +480 640 +640 480 +640 480 +640 427 +478 640 +427 640 +640 427 +427 640 +640 375 +500 375 +640 427 +640 427 +591 640 +640 480 +640 480 +480 640 +640 480 +640 480 +480 640 +640 480 +640 381 +640 480 +500 393 +640 480 +424 640 +640 480 +640 480 +429 640 +640 427 +640 480 +500 375 +428 640 +314 500 +640 427 +640 480 +480 640 +550 473 +640 457 +640 480 +640 480 +480 640 +640 426 +640 480 +366 640 +640 378 +457 640 +640 503 +640 427 +427 640 +640 480 +510 640 +640 420 +640 625 +375 500 +500 375 +640 480 +640 480 +640 427 +427 640 +640 458 +640 481 +427 640 +427 640 +640 480 +640 427 +612 612 +640 425 +640 360 +640 480 +640 391 +612 612 +640 427 +640 427 +640 480 +640 480 +640 480 +640 427 +640 289 +480 640 +263 350 +640 479 +640 426 +480 640 +640 480 +640 640 +480 640 +640 427 +640 480 +537 403 +427 640 +427 640 +480 640 +438 640 +640 427 +500 375 +640 480 +429 640 +480 640 +500 338 +640 424 +500 375 +640 438 +640 424 +640 303 +612 612 +640 480 +480 640 +640 425 +640 640 +640 480 +513 640 +500 332 +640 427 +500 486 +640 444 +640 424 +427 640 +640 480 +480 640 +640 427 +640 427 +640 480 +640 427 +640 480 +640 431 +640 426 +640 480 +640 429 +375 500 +480 640 +640 480 +640 427 +640 427 +640 444 +480 640 +640 480 +240 320 +640 480 +500 308 +640 478 +640 427 +640 480 +640 480 +640 425 +640 601 +500 333 +640 480 +500 375 +640 427 +640 425 +640 427 +480 640 +640 427 +640 426 +500 333 +640 480 +640 425 +500 400 +640 479 +640 427 +640 425 +640 424 +640 480 +375 500 +500 375 +333 500 +640 467 +640 480 +640 428 +424 640 +640 480 +640 640 +640 469 +640 428 +640 427 +375 500 +640 640 +500 375 +640 427 +500 334 +334 500 +640 424 +427 640 +426 640 +480 640 +640 416 +640 427 +500 375 +640 480 +640 480 +640 382 +640 480 +500 472 +640 426 +640 426 +640 427 +640 426 +375 500 +508 640 +640 418 +333 500 +640 480 +640 480 +640 401 +480 640 +426 640 +640 478 +480 640 +640 428 +375 500 +427 640 +640 427 +640 536 +640 409 +640 413 +640 425 +478 640 +640 396 +640 480 +640 360 +640 480 +640 427 +480 640 +640 425 +640 425 +640 480 +640 424 +640 484 +640 429 +640 427 +480 640 +500 375 +500 333 +500 375 +500 375 +480 640 +500 333 +427 640 +500 311 +427 640 +480 640 +640 480 +640 480 +640 427 +428 640 +640 424 +640 427 +640 480 +333 500 +640 407 +640 428 +640 334 +480 640 +640 427 +615 461 +428 640 +427 640 +640 426 +480 640 +640 424 +500 332 +640 320 +640 425 +583 640 +500 375 +640 480 +624 640 +640 217 +640 400 +360 270 +500 375 +640 426 +640 430 +640 480 +285 640 +640 480 +640 480 +640 427 +444 640 +480 640 +640 403 +640 427 +640 427 +640 461 +640 427 +640 511 +640 480 +640 320 +427 640 +480 640 +640 427 +640 333 +640 457 +640 441 +640 480 +614 640 +480 640 +333 500 +352 288 +640 457 +640 480 +640 480 +509 503 +425 640 +640 425 +427 640 +640 391 +640 427 +640 480 +480 640 +640 400 +640 482 +375 500 +640 427 +640 511 +480 640 +500 327 +640 427 +640 360 +640 480 +640 480 +478 640 +640 428 +640 480 +640 424 +640 480 +460 640 +480 640 +375 500 +640 434 +640 480 +480 640 +640 426 +640 427 +640 427 +375 500 +640 480 +640 450 +640 428 +640 480 +500 358 +640 424 +640 480 +500 375 +640 480 +480 640 +640 480 +480 640 +640 424 +640 480 +480 640 +640 427 +375 500 +640 451 +640 480 +640 427 +427 640 +480 640 +426 640 +640 359 +640 403 +640 480 +640 480 +436 640 +640 480 +640 426 +640 480 +640 480 +640 480 +640 433 +640 427 +640 480 +480 640 +640 480 +640 480 +640 480 +640 536 +640 480 +500 326 +640 605 +427 640 +640 427 +429 640 +640 480 +640 360 +425 640 +500 333 +427 640 +640 434 +640 427 +426 640 +640 427 +480 640 +640 426 +240 320 +640 424 +640 551 +434 640 +640 424 +375 500 +640 426 +640 427 +500 375 +427 640 +640 356 +640 480 +480 640 +640 480 +375 500 +640 480 +640 427 +640 427 +480 640 +640 424 +640 422 +640 427 +640 480 +640 480 +428 640 +480 640 +480 640 +425 640 +480 640 +478 640 +500 354 +480 640 +640 426 +500 375 +500 333 +480 640 +640 480 +427 640 +640 427 +500 375 +640 481 +640 530 +640 480 +480 640 +495 500 +640 480 +640 503 +426 500 +479 640 +480 640 +640 556 +640 480 +488 286 +640 427 +640 480 +640 480 +461 640 +500 341 +640 416 +500 375 +640 418 +640 480 +457 640 +334 500 +640 427 +500 332 +640 480 +500 500 +640 480 +640 480 +640 354 +640 426 +640 428 +612 612 +640 428 +612 612 +640 480 +640 480 +640 480 +640 427 +640 480 +640 480 +640 427 +640 480 +500 375 +375 500 +640 480 +375 500 +640 480 +500 375 +640 477 +640 425 +640 430 +640 430 +640 426 +640 480 +500 400 +640 478 +640 427 +640 427 +427 640 +640 460 +640 427 +612 612 +640 424 +640 480 +570 640 +640 241 +640 426 +640 480 +640 480 +640 480 +427 640 +640 427 +500 375 +626 640 +640 427 +640 509 +640 480 +382 640 +640 427 +640 640 +480 640 +640 480 +500 375 +500 354 +640 480 +640 425 +640 427 +612 612 +640 427 +640 427 +640 359 +640 427 +640 480 +480 640 +612 612 +480 640 +640 480 +640 480 +500 376 +640 444 +640 426 +501 640 +640 480 +640 480 +500 375 +640 427 +612 612 +443 640 +400 500 +478 640 +640 424 +600 400 +447 640 +466 640 +640 480 +640 386 +640 426 +640 427 +480 640 +640 360 +640 480 +640 427 +500 333 +479 640 +640 590 +427 640 +640 425 +500 324 +640 480 +640 326 +500 375 +426 640 +330 500 +480 640 +640 480 +640 480 +500 375 +612 612 +382 640 +640 427 +426 640 +640 480 +640 480 +640 640 +640 427 +640 360 +500 375 +640 427 +640 480 +428 640 +640 480 +640 419 +640 425 +500 375 +640 481 +640 426 +640 480 +500 432 +640 427 +640 480 +640 427 +480 640 +640 425 +500 400 +480 640 +640 480 +640 480 +640 480 +640 480 +640 427 +640 427 +640 377 +425 640 +612 612 +640 427 +640 463 +640 640 +488 500 +640 456 +640 530 +480 640 +640 427 +500 291 +640 426 +640 427 +640 480 +480 640 +640 427 +640 480 +640 480 +640 427 +480 640 +640 360 +334 500 +640 428 +640 427 +640 427 +357 500 +500 400 +640 427 +640 427 +640 480 +375 500 +640 444 +500 333 +426 640 +427 640 +640 428 +640 427 +500 375 +640 425 +640 480 +640 427 +640 424 +500 492 +500 375 +640 480 +640 427 +640 480 +640 504 +500 375 +640 424 +640 386 +640 480 +480 640 +640 422 +640 480 +640 426 +500 335 +640 427 +335 500 +523 640 +640 426 +640 420 +360 270 +423 640 +640 427 +640 420 +500 375 +428 640 +500 335 +640 428 +640 480 +640 426 +640 480 +500 375 +427 640 +426 640 +640 368 +500 333 +640 360 +640 480 +427 640 +427 640 +640 360 +640 410 +480 640 +640 427 +640 330 +334 500 +640 427 +640 640 +500 349 +500 332 +640 430 +500 375 +640 480 +640 490 +640 480 +640 428 +640 428 +640 480 +640 480 +332 500 +640 379 +640 427 +478 640 +640 427 +640 427 +640 480 +640 640 +640 406 +481 640 +640 502 +640 480 +640 478 +640 425 +500 375 +640 480 +640 426 +640 390 +640 480 +640 480 +375 500 +640 427 +480 640 +640 480 +427 640 +640 426 +612 612 +640 480 +640 284 +500 375 +480 640 +640 483 +640 481 +640 427 +500 375 +573 598 +640 428 +640 291 +500 339 +426 640 +500 332 +640 425 +457 640 +612 612 +640 400 +640 427 +375 500 +500 334 +640 427 +640 361 +640 400 +640 631 +640 320 +640 480 +480 640 +640 480 +640 480 +640 427 +500 375 +500 483 +640 480 +500 377 +640 480 +500 333 +640 491 +640 508 +640 426 +500 333 +640 480 +640 480 +640 468 +640 360 +640 427 +640 443 +629 640 +640 282 +640 383 +640 478 +640 427 +640 480 +500 375 +640 427 +640 480 +495 640 +333 500 +640 424 +640 429 +640 430 +640 480 +640 480 +640 480 +491 640 +640 424 +640 428 +640 427 +640 480 +640 482 +640 441 +500 375 +500 375 +500 375 +640 458 +640 427 +640 427 +640 480 +640 424 +426 640 +393 640 +640 426 +640 424 +640 229 +640 480 +323 640 +640 478 +500 375 +612 612 +640 383 +640 360 +333 500 +427 640 +640 427 +640 257 +500 333 +640 480 +640 427 +640 424 +640 458 +640 480 +640 427 +640 427 +640 480 +640 517 +640 360 +500 375 +427 640 +640 480 +500 375 +640 480 +335 500 +600 450 +500 333 +431 640 +640 480 +640 427 +640 478 +640 426 +640 521 +640 428 +640 480 +640 479 +640 640 +640 480 +640 427 +500 375 +640 480 +640 480 +640 480 +500 357 +640 586 +640 480 +500 333 +500 349 +480 640 +500 333 +640 478 +467 640 +426 640 +640 480 +424 640 +500 500 +640 426 +640 480 +478 640 +640 360 +640 480 +428 640 +640 428 +640 428 +640 574 +640 480 +480 640 +640 480 +640 427 +640 480 +640 480 +640 480 +640 427 +500 375 +640 427 +500 375 +640 480 +640 471 +500 375 +602 640 +500 375 +480 640 +640 480 +640 427 +640 427 +427 640 +640 427 +640 428 +640 427 +640 438 +640 480 +480 640 +640 400 +500 375 +480 640 +450 481 +425 640 +640 480 +428 640 +500 375 +640 424 +640 427 +570 640 +640 480 +640 427 +640 523 +450 600 +640 427 +528 604 +640 439 +610 423 +500 499 +427 640 +640 425 +640 427 +640 480 +426 640 +640 480 +640 425 +640 360 +480 640 +640 427 +640 426 +480 640 +640 443 +640 484 +640 480 +640 480 +500 333 +500 375 +480 640 +500 374 +640 423 +500 375 +640 361 +640 415 +500 375 +431 640 +435 640 +640 424 +640 360 +612 407 +640 427 +426 640 +640 640 +640 480 +478 640 +640 517 +640 480 +402 600 +296 444 +640 427 +480 640 +640 428 +427 640 +480 360 +500 255 +640 383 +640 426 +480 640 +500 334 +500 375 +500 335 +480 640 +640 480 +500 333 +640 480 +640 397 +640 428 +480 364 +640 427 +640 428 +640 360 +640 480 +640 426 +640 427 +427 640 +640 480 +640 428 +640 484 +640 425 +254 192 +640 484 +640 500 +640 480 +640 480 +640 424 +640 480 +640 480 +640 428 +429 640 +480 640 +428 640 +449 640 +640 424 +612 612 +640 527 +612 612 +500 375 +336 500 +640 480 +640 427 +640 427 +640 428 +500 333 +640 427 +480 640 +640 509 +640 457 +640 427 +640 427 +640 425 +640 480 +640 480 +500 334 +500 375 +640 427 +640 428 +427 640 +640 480 +612 612 +500 333 +640 544 +640 480 +640 427 +640 427 +604 453 +375 500 +640 360 +640 480 +640 480 +640 427 +640 427 +597 640 +640 428 +640 359 +640 427 +427 640 +459 640 +526 640 +640 424 +427 640 +640 513 +359 500 +640 437 +640 481 +640 480 +500 375 +640 427 +640 480 +640 480 +640 425 +640 512 +640 449 +500 333 +640 480 +640 424 +457 640 +640 427 +640 427 +640 480 +640 427 +500 333 +500 334 +640 472 +500 333 +640 478 +640 480 +333 640 +640 480 +500 375 +640 427 +640 427 +640 480 +480 640 +640 480 +640 426 +640 429 +508 640 +640 359 +480 640 +640 427 +640 480 +640 427 +500 375 +640 480 +427 640 +640 427 +640 480 +640 480 +640 428 +640 478 +375 500 +640 378 +640 429 +640 480 +500 333 +500 500 +443 450 +640 418 +640 480 +640 427 +640 427 +480 640 +640 424 +640 426 +583 640 +500 317 +500 239 +640 480 +640 427 +640 427 +640 480 +500 500 +480 640 +427 640 +640 428 +612 612 +640 480 +640 427 +363 500 +640 480 +480 640 +640 480 +640 427 +640 360 +375 500 +640 480 +480 640 +480 640 +640 329 +303 640 +640 479 +640 427 +640 426 +640 425 +480 640 +481 640 +322 640 +375 500 +480 640 +640 640 +640 321 +480 640 +500 375 +612 612 +640 480 +640 426 +640 427 +640 446 +500 375 +640 428 +480 640 +640 424 +640 427 +640 480 +640 640 +556 640 +640 443 +449 640 +640 425 +640 427 +500 375 +640 480 +500 400 +424 640 +640 480 +640 480 +640 425 +640 428 +640 427 +480 640 +640 427 +640 424 +640 480 +640 513 +640 428 +427 640 +640 479 +640 483 +640 480 +640 427 +500 375 +640 480 +640 431 +640 426 +500 375 +640 425 +333 500 +640 480 +640 480 +640 480 +640 383 +640 360 +480 640 +640 425 +427 640 +427 640 +480 640 +640 480 +640 480 +612 612 +480 640 +640 454 +640 480 +500 319 +500 485 +426 640 +640 480 +640 392 +640 426 +612 612 +500 383 +427 640 +640 427 +640 431 +640 427 +640 452 +500 335 +640 449 +640 429 +640 480 +640 453 +640 426 +640 473 +640 473 +640 480 +640 480 +640 419 +375 500 +640 427 +640 427 +640 427 +426 640 +640 360 +640 569 +640 480 +640 427 +425 640 +640 427 +500 207 +480 640 +500 375 +640 427 +640 376 +640 480 +640 456 +612 612 +500 332 +640 480 +640 480 +640 462 +640 427 +640 427 +427 640 +640 480 +640 480 +400 500 +500 375 +640 350 +640 640 +439 640 +640 480 +640 480 +640 480 +640 480 +569 640 +640 356 +640 437 +640 427 +640 428 +426 640 +640 376 +640 308 +640 469 +640 373 +640 480 +640 480 +500 375 +640 427 +640 423 +640 480 +640 413 +480 640 +612 612 +640 480 +480 640 +427 640 +640 427 +640 430 +480 640 +640 471 +640 480 +640 426 +640 480 +436 640 +640 426 +612 612 +425 640 +640 480 +640 427 +640 417 +640 426 +640 480 +512 640 +640 427 +575 575 +640 174 +640 441 +640 504 +640 480 +640 480 +480 640 +416 640 +333 500 +640 436 +640 480 +640 480 +640 427 +640 480 +640 480 +640 475 +640 423 +640 480 +640 478 +640 401 +640 425 +640 414 +640 478 +500 405 +500 375 +640 439 +640 426 +640 480 +640 456 +500 375 +640 480 +500 375 +640 428 +640 204 +640 427 +640 426 +640 480 +640 426 +624 640 +640 640 +640 193 +500 375 +640 428 +427 640 +486 640 +640 360 +640 242 +640 424 +640 360 +640 480 +640 479 +500 377 +640 606 +640 482 +640 425 +640 480 +604 453 +480 397 +427 640 +640 480 +500 448 +320 240 +500 500 +640 210 +640 424 +500 341 +640 480 +480 360 +500 218 +640 338 +500 470 +640 490 +640 479 +425 640 +640 480 +640 427 +640 478 +640 492 +640 480 +500 333 +500 375 +480 640 +640 480 +640 427 +640 515 +640 480 +640 480 +444 595 +640 344 +376 500 +640 427 +640 427 +640 429 +640 428 +640 480 +640 480 +640 427 +640 480 +640 427 +640 428 +336 500 +640 426 +640 577 +480 640 +640 426 +500 331 +640 427 +640 480 +500 375 +640 514 +640 640 +640 480 +630 640 +640 480 +480 640 +612 612 +640 480 +392 218 +640 427 +640 427 +640 425 +640 310 +640 480 +640 480 +640 427 +640 427 +640 425 +640 427 +640 427 +640 426 +640 425 +480 640 +500 375 +500 375 +640 427 +640 480 +640 425 +400 640 +640 423 +640 480 +640 480 +427 640 +640 427 +640 468 +640 424 +640 359 +150 225 +640 385 +640 625 +640 480 +640 480 +640 425 +640 640 +375 500 +640 480 +500 317 +640 427 +640 457 +375 500 +640 480 +640 426 +640 427 +640 351 +640 480 +640 640 +640 480 +480 640 +640 432 +500 167 +480 640 +640 428 +640 429 +427 640 +500 340 +425 640 +500 396 +240 320 +640 427 +640 428 +640 480 +640 480 +640 400 +640 480 +640 427 +640 480 +360 640 +640 424 +375 500 +612 612 +640 533 +640 428 +481 640 +500 500 +640 429 +500 335 +500 375 +500 375 +640 426 +640 427 +640 426 +640 480 +640 427 +333 500 +640 480 +486 640 +427 640 +640 637 +640 480 +500 500 +640 426 +640 428 +427 640 +640 640 +640 427 +480 640 +640 484 +640 426 +640 427 +640 320 +640 305 +640 480 +640 480 +426 640 +640 438 +640 480 +640 480 +640 427 +640 478 +640 481 +375 500 +612 612 +640 177 +500 427 +480 640 +500 333 +426 640 +480 640 +640 574 +640 461 +640 512 +640 428 +640 480 +500 333 +640 509 +640 427 +640 480 +640 528 +425 640 +612 612 +640 427 +640 455 +640 430 +640 375 +640 427 +640 480 +640 480 +500 375 +640 426 +500 332 +640 427 +640 640 +640 509 +640 529 +640 480 +640 415 +640 425 +640 427 +640 480 +640 480 +640 480 +640 640 +427 640 +640 427 +427 640 +480 640 +640 426 +333 500 +640 454 +640 427 +640 480 +640 640 +640 480 +640 429 +424 640 +640 581 +640 331 +500 375 +640 480 +640 427 +640 403 +640 480 +640 426 +640 480 +640 348 +640 298 +640 480 +640 160 +500 385 +425 640 +640 480 +640 480 +433 640 +640 551 +424 640 +640 462 +480 640 +640 424 +500 375 +640 583 +640 427 +427 640 +640 425 +640 521 +640 480 +640 480 +425 640 +640 426 +333 500 +640 424 +480 640 +426 640 +249 640 +640 427 +500 375 +374 500 +612 612 +640 427 +640 480 +308 500 +640 480 +640 466 +640 480 +500 375 +640 480 +640 427 +612 612 +640 480 +640 426 +640 416 +480 640 +500 333 +640 380 +427 640 +640 480 +640 383 +500 335 +500 375 +500 500 +640 441 +346 500 +480 640 +612 612 +640 427 +640 425 +426 640 +640 427 +640 427 +640 427 +640 480 +640 480 +640 478 +640 427 +640 480 +612 612 +640 428 +640 429 +640 480 +500 375 +640 480 +480 272 +640 480 +640 480 +640 560 +500 319 +480 640 +640 427 +640 426 +500 375 +427 640 +640 427 +640 427 +640 425 +500 375 +640 480 +640 480 +426 640 +640 439 +640 480 +640 292 +480 640 +500 347 +480 640 +640 427 +640 480 +480 640 +640 427 +640 478 +640 512 +640 480 +640 480 +500 340 +425 640 +640 480 +640 478 +512 640 +500 375 +640 426 +426 640 +640 480 +640 424 +333 500 +640 328 +480 640 +640 480 +640 480 +447 500 +640 427 +640 371 +480 640 +427 640 +640 480 +500 375 +640 480 +640 211 +640 427 +375 500 +480 360 +640 424 +480 640 +480 640 +480 640 +480 640 +500 500 +612 612 +545 640 +640 480 +427 640 +640 480 +498 640 +500 333 +640 466 +640 416 +640 480 +612 612 +480 640 +322 500 +640 399 +500 375 +640 480 +640 457 +640 480 +640 426 +640 425 +640 480 +640 480 +500 375 +640 427 +375 500 +640 480 +640 480 +640 481 +640 425 +640 421 +426 640 +640 427 +427 640 +612 612 +640 426 +640 360 +640 470 +640 640 +640 427 +640 360 +500 333 +640 430 +640 480 +500 334 +640 425 +640 427 +640 480 +640 429 +614 640 +640 427 +640 338 +640 480 +640 480 +640 427 +640 480 +478 640 +640 481 +514 640 +640 480 +640 426 +640 422 +640 480 +640 348 +640 480 +640 480 +640 426 +640 480 +640 480 +640 427 +500 375 +500 330 +640 427 +640 479 +480 640 +640 480 +612 612 +640 427 +640 427 +361 431 +640 493 +640 480 +612 612 +388 500 +640 425 +427 640 +640 504 +640 428 +640 480 +640 424 +640 425 +640 426 +480 640 +612 612 +640 424 +640 426 +640 480 +640 427 +640 506 +640 425 +401 640 +640 427 +640 482 +640 437 +640 480 +500 328 +640 480 +640 480 +478 640 +500 375 +480 640 +640 360 +640 480 +426 640 +640 437 +640 424 +427 640 +640 518 +640 426 +500 387 +640 480 +640 640 +640 380 +640 480 +640 480 +333 500 +480 640 +640 376 +640 407 +640 493 +640 407 +640 480 +389 640 +640 480 +480 640 +611 640 +640 480 +500 375 +500 332 +640 348 +640 440 +640 480 +640 480 +335 500 +640 480 +500 375 +427 640 +451 640 +494 640 +640 361 +426 640 +640 281 +640 480 +426 640 +640 481 +640 508 +640 411 +609 640 +480 640 +456 640 +612 612 +640 480 +640 640 +375 500 +640 427 +500 333 +640 425 +640 480 +500 375 +500 375 +640 536 +500 375 +640 480 +640 599 +640 426 +500 283 +640 480 +429 640 +640 360 +640 386 +426 640 +640 426 +640 640 +640 425 +640 426 +640 480 +640 427 +369 500 +640 427 +640 480 +640 480 +640 480 +425 640 +427 640 +640 501 +480 640 +640 427 +375 500 +640 480 +640 428 +640 427 +511 640 +480 640 +640 427 +581 345 +640 468 +640 480 +640 579 +640 424 +426 640 +427 640 +640 427 +640 388 +640 480 +640 480 +640 425 +640 428 +333 500 +427 640 +640 426 +500 375 +640 419 +640 480 +640 480 +640 428 +640 640 +640 480 +500 375 +427 640 +640 360 +500 375 +640 426 +640 427 +427 640 +360 640 +640 480 +500 400 +640 426 +640 512 +640 518 +500 406 +640 480 +480 640 +640 478 +640 454 +375 500 +640 480 +480 640 +640 427 +640 360 +500 333 +640 480 +640 427 +426 640 +500 375 +426 640 +375 500 +640 480 +640 427 +640 480 +428 640 +640 418 +640 480 +640 480 +640 428 +640 427 +640 426 +640 480 +640 449 +640 427 +427 640 +425 640 +640 480 +640 479 +640 480 +640 427 +480 640 +640 427 +333 500 +640 480 +426 640 +640 428 +640 478 +500 375 +427 640 +444 640 +640 480 +640 480 +640 427 +640 466 +426 319 +373 640 +640 421 +640 448 +421 640 +640 427 +640 480 +640 445 +480 640 +396 640 +640 480 +640 480 +640 476 +480 640 +640 426 +612 612 +640 394 +640 480 +640 480 +640 480 +500 402 +640 427 +640 428 +640 427 +640 480 +640 480 +640 360 +480 640 +640 480 +504 378 +512 640 +640 480 +640 427 +640 215 +425 640 +500 375 +640 597 +640 427 +612 612 +500 374 +480 640 +640 427 +640 480 +483 640 +480 640 +640 480 +500 329 +500 375 +500 438 +640 425 +567 640 +640 480 +640 480 +375 500 +427 640 +640 480 +500 375 +375 500 +640 480 +640 480 +500 393 +461 640 +640 427 +500 375 +640 499 +500 375 +640 427 +480 640 +350 450 +640 427 +640 640 +640 427 +640 512 +480 640 +400 257 +500 333 +640 356 +640 360 +526 640 +500 333 +640 427 +391 640 +379 640 +640 425 +640 480 +500 375 +640 501 +500 335 +640 480 +500 281 +640 640 +480 640 +480 640 +500 351 +640 427 +480 640 +480 640 +640 480 +640 480 +500 375 +371 500 +640 480 +427 640 +640 424 +640 427 +500 381 +500 297 +640 480 +480 640 +640 436 +480 640 +640 518 +480 640 +640 321 +640 428 +640 480 +640 553 +500 500 +480 640 +493 640 +500 233 +640 427 +640 480 +640 480 +640 458 +500 375 +640 480 +500 332 +375 500 +640 480 +640 427 +640 480 +640 480 +640 268 +427 640 +640 480 +427 640 +640 427 +500 333 +640 457 +640 480 +640 480 +612 612 +640 480 +640 427 +500 370 +640 427 +640 427 +640 480 +640 480 +640 480 +500 375 +640 478 +640 480 +640 480 +478 640 +640 425 +640 463 +640 480 +612 612 +640 360 +640 427 +640 480 +600 600 +640 480 +375 500 +640 480 +640 454 +500 400 +480 640 +640 480 +398 640 +640 427 +640 427 +640 443 +640 480 +640 427 +640 480 +640 429 +640 478 +640 360 +384 640 +414 640 +264 640 +640 359 +640 425 +427 640 +333 500 +612 612 +640 360 +640 480 +500 334 +424 640 +529 640 +640 228 +640 480 +640 480 +640 360 +640 426 +640 480 +640 360 +640 427 +640 359 +640 426 +640 428 +640 309 +640 427 +612 612 +640 478 +640 425 +500 333 +640 426 +640 477 +640 581 +500 375 +640 409 +640 427 +640 480 +428 640 +640 480 +640 480 +480 640 +640 449 +640 480 +640 427 +612 612 +500 375 +640 419 +640 420 +640 478 +640 417 +424 640 +640 425 +640 293 +426 640 +640 480 +640 428 +640 427 +480 640 +500 375 +640 480 +640 480 +640 480 +640 480 +411 640 +640 425 +339 500 +500 375 +640 480 +640 326 +640 480 +640 427 +640 480 +640 427 +640 478 +640 427 +640 427 +640 480 +640 425 +480 640 +640 480 +640 478 +640 427 +640 221 +640 478 +640 428 +612 612 +427 640 +640 426 +640 480 +500 430 +640 401 +640 480 +640 427 +500 300 +640 427 +640 427 +640 480 +640 413 +500 375 +640 478 +612 612 +640 478 +640 480 +640 427 +640 480 +640 427 +640 439 +500 334 +640 480 +640 427 +640 480 +640 424 +457 640 +640 426 +480 640 +640 433 +480 640 +640 480 +432 640 +640 414 +640 480 +500 344 +640 480 +612 612 +427 640 +612 612 +640 425 +640 361 +640 480 +640 394 +500 375 +640 425 +640 478 +640 427 +375 500 +640 593 +381 640 +640 426 +640 424 +500 281 +640 513 +640 480 +333 500 +500 395 +480 475 +480 640 +640 480 +480 640 +428 640 +612 612 +429 640 +640 480 +640 449 +640 430 +500 375 +640 482 +360 640 +478 640 +640 480 +423 640 +427 640 +640 480 +640 478 +640 383 +480 640 +500 375 +480 640 +375 500 +640 480 +640 480 +640 480 +640 480 +480 640 +640 480 +640 564 +640 480 +187 140 +640 427 +500 459 +428 640 +640 428 +375 500 +640 480 +640 504 +640 424 +500 400 +583 640 +640 427 +640 480 +612 612 +640 489 +612 612 +640 480 +469 640 +463 640 +640 480 +640 480 +640 550 +500 407 +500 210 +640 480 +640 640 +640 478 +612 612 +480 640 +500 333 +640 480 +640 429 +640 480 +427 640 +500 333 +640 480 +640 480 +640 424 +640 360 +321 640 +424 640 +640 450 +640 426 +640 471 +640 427 +640 425 +640 426 +640 425 +498 640 +640 427 +612 612 +640 480 +500 167 +640 424 +640 427 +427 640 +640 480 +640 470 +640 427 +640 480 +539 640 +640 480 +640 480 +500 337 +640 480 +500 332 +332 500 +375 500 +640 480 +590 640 +640 507 +480 640 +640 480 +640 480 +640 427 +500 333 +640 472 +640 427 +395 500 +640 427 +640 425 +640 427 +640 480 +640 427 +640 480 +640 425 +640 640 +427 640 +640 360 +640 348 +612 612 +640 426 +640 425 +640 480 +500 335 +640 433 +640 480 +517 640 +480 640 +427 640 +425 640 +480 640 +640 427 +640 480 +480 640 +640 427 +640 480 +640 425 +640 480 +640 427 +640 480 +640 419 +640 483 +640 425 +426 640 +480 640 +640 338 +640 438 +426 640 +640 640 +640 426 +640 486 +640 483 +500 375 +640 496 +640 480 +640 480 +640 389 +500 333 +640 571 +640 338 +493 500 +640 360 +640 383 +500 375 +640 360 +500 375 +427 640 +427 640 +500 333 +427 640 +640 456 +640 427 +640 428 +480 640 +640 360 +500 429 +640 480 +640 427 +640 427 +335 500 +640 425 +640 478 +640 640 +500 334 +640 480 +640 480 +640 423 +640 480 +640 427 +480 640 +500 375 +640 480 +640 426 +640 427 +640 480 +481 640 +640 425 +640 480 +427 640 +640 430 +640 427 +427 640 +612 612 +640 458 +640 480 +640 480 +640 427 +640 578 +375 500 +640 480 +640 640 +425 640 +500 375 +640 427 +640 480 +640 478 +640 480 +500 375 +640 427 +500 360 +500 375 +640 480 +640 424 +640 480 +417 556 +640 427 +640 480 +612 612 +640 480 +640 480 +480 480 +640 425 +402 640 +640 480 +425 640 +640 425 +333 500 +640 428 +426 640 +427 640 +640 427 +640 480 +640 478 +375 500 +333 500 +500 333 +640 480 +519 640 +500 334 +500 375 +478 640 +640 458 +480 640 +500 376 +480 640 +640 427 +640 426 +427 640 +500 389 +480 640 +640 480 +640 480 +640 480 +500 346 +461 640 +427 640 +640 480 +375 500 +640 493 +640 480 +640 427 +640 480 +640 480 +640 425 +427 640 +640 480 +500 375 +500 332 +640 427 +640 427 +640 480 +612 612 +500 338 +640 450 +640 427 +640 443 +610 493 +640 427 +480 640 +640 480 +481 640 +640 472 +640 436 +640 426 +455 640 +480 640 +640 480 +640 480 +640 480 +640 480 +500 375 +640 426 +640 480 +640 480 +480 640 +640 640 +640 427 +640 427 +640 480 +489 500 +640 480 +640 427 +640 640 +640 640 +640 464 +478 640 +640 367 +640 320 +640 427 +640 427 +427 640 +640 427 +640 504 +640 322 +640 585 +640 480 +640 468 +500 336 +640 323 +612 612 +640 427 +640 426 +640 480 +640 360 +426 640 +640 377 +480 640 +640 425 +640 427 +640 424 +640 422 +482 640 +640 480 +640 425 +640 478 +640 479 +427 640 +478 640 +640 429 +640 594 +640 360 +428 640 +640 523 +640 396 +640 424 +640 480 +640 359 +640 428 +640 511 +640 561 +640 320 +404 640 +500 375 +333 500 +640 383 +640 457 +480 640 +640 360 +640 429 +640 480 +640 480 +426 640 +426 500 +500 333 +426 640 +480 640 +480 640 +640 427 +640 360 +451 640 +604 453 +500 335 +457 640 +640 427 +640 425 +500 333 +500 328 +612 612 +640 427 +480 640 +640 480 +500 253 +640 425 +480 640 +640 457 +480 640 +640 427 +427 640 +640 494 +640 421 +640 426 +640 480 +640 480 +640 424 +500 332 +640 427 +640 427 +500 332 +448 500 +640 425 +500 375 +640 428 +640 480 +640 480 +640 361 +500 375 +640 435 +640 427 +375 500 +640 640 +500 339 +400 267 +640 432 +640 480 +480 640 +640 480 +427 640 +640 427 +640 480 +640 480 +640 427 +640 251 +640 404 +640 426 +640 427 +640 427 +640 320 +375 500 +640 248 +640 480 +640 428 +428 640 +581 604 +640 426 +640 480 +640 426 +640 480 +640 427 +640 480 +612 612 +480 640 +640 480 +640 388 +640 480 +640 424 +500 375 +640 427 +500 375 +612 612 +640 480 +612 612 +500 375 +640 480 +427 640 +640 640 +640 480 +500 375 +640 427 +427 640 +500 383 +640 428 +640 480 +500 469 +426 640 +640 491 +640 429 +640 480 +640 480 +640 512 +500 400 +640 428 +640 480 +500 332 +480 640 +500 333 +640 483 +480 640 +640 480 +375 500 +640 480 +640 480 +500 334 +640 480 +254 500 +640 480 +640 426 +480 640 +640 601 +640 480 +640 360 +640 427 +424 640 +640 480 +640 427 +425 640 +480 640 +612 612 +640 424 +640 480 +640 361 +640 480 +640 427 +426 640 +640 426 +640 427 +640 427 +480 640 +640 480 +640 480 +640 425 +640 480 +640 427 +640 480 +500 375 +480 360 +480 640 +640 428 +640 480 +429 640 +640 428 +640 480 +640 424 +500 461 +424 640 +640 411 +427 640 +640 320 +640 480 +640 480 +640 480 +640 428 +640 480 +429 640 +640 480 +640 427 +640 427 +640 420 +640 480 +640 480 +640 480 +640 484 +640 512 +500 334 +640 463 +640 427 +640 427 +640 418 +500 238 +500 375 +640 480 +640 481 +640 427 +640 480 +427 640 +640 454 +429 640 +640 427 +640 480 +500 347 +640 480 +640 480 +320 240 +640 480 +500 375 +640 480 +640 427 +333 500 +612 612 +612 612 +640 438 +640 427 +640 482 +480 640 +612 612 +612 612 +640 480 +480 640 +640 507 +640 480 +640 426 +640 480 +480 640 +640 427 +640 415 +640 427 +640 480 +500 376 +541 640 +640 426 +500 375 +500 375 +480 640 +640 512 +640 480 +640 427 +640 426 +612 612 +640 480 +640 480 +640 480 +480 640 +453 604 +640 426 +332 500 +430 640 +480 640 +426 640 +500 400 +640 480 +640 434 +500 372 +640 480 +427 640 +640 480 +640 462 +500 333 +640 480 +640 424 +640 480 +640 369 +500 375 +640 478 +383 640 +640 480 +640 480 +640 480 +640 427 +480 640 +640 406 +640 480 +640 359 +640 427 +640 481 +429 500 +640 427 +640 360 +640 429 +640 480 +427 640 +640 480 +640 429 +640 480 +640 480 +640 480 +640 427 +426 640 +640 360 +640 428 +640 471 +640 428 +640 480 +425 640 +500 333 +640 480 +427 640 +640 402 +640 480 +640 426 +500 375 +640 427 +640 359 +640 453 +640 427 +480 640 +640 423 +480 640 +640 480 +640 427 +640 480 +500 375 +500 375 +640 426 +640 480 +640 480 +640 427 +428 640 +500 453 +640 428 +640 427 +640 480 +640 439 +480 640 +500 333 +640 479 +640 480 +640 640 +500 375 +640 427 +640 360 +500 375 +480 640 +640 480 +480 640 +640 427 +640 425 +640 427 +640 480 +640 428 +640 360 +480 640 +640 441 +375 500 +640 441 +640 640 +480 640 +640 428 +640 259 +640 466 +640 425 +500 380 +640 482 +640 359 +427 640 +640 480 +427 640 +427 640 +640 427 +640 480 +640 426 +444 640 +480 640 +640 480 +480 640 +480 640 +480 640 +640 480 +500 320 +612 612 +640 427 +640 427 +640 427 +640 344 +640 425 +640 387 +478 640 +640 426 +640 427 +640 480 +640 428 +640 426 +500 333 +640 480 +640 480 +425 640 +640 480 +384 640 +640 360 +375 500 +500 400 +640 480 +640 490 +640 480 +640 427 +640 427 +480 640 +640 263 +612 612 +375 500 +500 400 +640 427 +640 480 +640 426 +640 424 +640 590 +640 427 +640 427 +640 480 +640 427 +640 480 +500 334 +431 640 +640 480 +480 640 +640 430 +640 480 +640 480 +640 480 +640 427 +425 640 +640 427 +640 401 +640 429 +480 640 +640 480 +640 507 +500 332 +640 427 +640 427 +486 500 +640 480 +640 480 +375 500 +640 425 +640 481 +640 504 +640 480 +427 640 +640 427 +219 500 +640 427 +480 640 +612 612 +639 640 +640 640 +640 423 +500 375 +640 426 +500 375 +480 640 +640 426 +640 426 +620 640 +640 427 +640 426 +612 612 +640 480 +500 358 +640 426 +640 426 +640 427 +640 479 +640 480 +640 279 +640 480 +424 640 +640 426 +640 480 +500 500 +640 427 +640 432 +640 427 +426 640 +430 640 +425 640 +640 424 +640 480 +640 480 +426 640 +640 480 +640 480 +427 640 +640 480 +427 640 +640 415 +640 427 +640 480 +640 377 +333 500 +640 427 +640 427 +640 480 +375 500 +640 457 +500 375 +500 375 +640 425 +424 640 +427 640 +640 444 +640 486 +480 640 +640 426 +640 480 +480 640 +640 426 +640 425 +640 412 +480 640 +640 480 +427 640 +640 426 +480 640 +640 480 +640 480 +640 480 +427 640 +500 393 +427 640 +480 640 +500 375 +640 589 +640 427 +640 359 +640 480 +640 426 +500 375 +640 480 +423 640 +375 500 +640 427 +640 480 +640 427 +640 427 +640 441 +427 640 +426 640 +640 424 +511 640 +640 428 +427 640 +500 375 +500 331 +500 488 +640 427 +640 480 +640 510 +640 426 +640 480 +640 425 +640 429 +640 427 +359 640 +640 425 +640 383 +375 500 +330 500 +640 480 +640 427 +500 375 +640 426 +500 333 +640 386 +640 427 +400 300 +500 375 +500 375 +640 482 +640 360 +640 480 +640 421 +640 480 +480 640 +525 640 +640 244 +640 480 +482 640 +640 294 +640 480 +640 480 +375 500 +496 640 +640 525 +478 640 +640 480 +640 480 +486 640 +640 426 +640 480 +640 480 +480 640 +640 480 +640 480 +640 480 +640 427 +500 321 +427 640 +427 640 +640 480 +254 336 +640 427 +640 480 +640 640 +400 284 +640 480 +640 541 +640 590 +480 640 +425 640 +640 427 +640 457 +425 640 +640 480 +640 427 +640 425 +640 505 +640 559 +640 426 +640 480 +640 425 +640 427 +500 375 +480 640 +640 427 +479 640 +480 640 +640 478 +640 480 +500 333 +640 480 +640 427 +640 426 +640 511 +640 428 +640 480 +640 426 +480 640 +333 500 +640 480 +640 426 +640 426 +640 427 +458 640 +640 400 +424 640 +640 480 +640 318 +640 427 +360 640 +640 480 +640 480 +640 480 +640 480 +612 612 +640 389 +640 457 +640 480 +500 334 +640 480 +425 640 +640 480 +640 401 +640 480 +640 399 +640 427 +500 274 +213 320 +480 640 +333 500 +640 480 +512 640 +640 427 +640 480 +640 480 +640 427 +640 426 +640 480 +640 379 +640 480 +425 640 +427 640 +640 480 +640 640 +500 333 +354 500 +640 480 +426 640 +640 480 +503 640 +640 480 +427 640 +640 480 +500 375 +640 478 +500 375 +640 480 +427 640 +640 425 +640 427 +640 426 +500 332 +516 640 +428 640 +640 480 +401 131 +640 443 +480 640 +360 640 +480 640 +500 375 +640 474 +503 640 +640 480 +640 427 +640 480 +640 480 +640 427 +640 480 +640 456 +640 427 +640 597 +640 450 +640 383 +640 426 +640 428 +640 427 +480 640 +640 480 +640 440 +640 426 +640 457 +640 480 +480 640 +640 429 +640 426 +500 332 +640 360 +640 478 +480 640 +640 427 +640 480 +500 375 +640 480 +640 478 +640 480 +640 427 +500 375 +640 428 +480 640 +426 640 +640 304 +640 480 +640 427 +612 612 +640 480 +640 480 +640 512 +375 500 +640 427 +500 334 +500 374 +333 500 +612 612 +640 400 +640 284 +640 480 +425 640 +640 486 +640 426 +480 640 +640 427 +640 480 +640 480 +426 640 +640 381 +640 426 +640 481 +640 480 +500 351 +427 640 +500 375 +640 427 +640 427 +640 480 +640 480 +640 480 +500 427 +640 425 +640 427 +640 427 +640 480 +600 400 +359 500 +500 375 +640 480 +640 489 +500 375 +529 640 +500 375 +640 480 +480 640 +640 480 +480 640 +640 444 +427 640 +640 425 +640 426 +612 612 +640 480 +500 357 +418 640 +427 640 +427 640 +500 382 +640 480 +426 640 +375 500 +640 478 +640 478 +500 333 +640 493 +500 333 +357 500 +603 640 +480 640 +640 427 +640 427 +612 612 +640 480 +640 453 +500 334 +640 480 +500 375 +640 480 +640 480 +640 426 +640 480 +640 424 +500 335 +480 640 +640 480 +480 640 +480 640 +640 424 +640 427 +480 640 +500 333 +640 427 +500 375 +640 480 +500 375 +640 427 +640 480 +640 427 +500 375 +427 640 +640 471 +640 480 +640 480 +640 579 +640 427 +480 640 +612 612 +373 640 +640 427 +610 391 +640 253 +640 429 +640 426 +640 425 +640 538 +427 640 +480 640 +640 428 +640 424 +640 427 +640 480 +640 349 +480 640 +640 478 +640 351 +640 384 +400 600 +500 375 +640 522 +640 480 +640 518 +640 427 +333 500 +640 391 +480 640 +467 640 +612 612 +640 426 +500 375 +516 640 +480 640 +333 500 +640 480 +364 468 +500 399 +427 640 +500 400 +640 464 +640 480 +640 429 +341 640 +425 640 +375 500 +640 432 +640 334 +640 427 +480 640 +640 480 +500 375 +451 640 +640 480 +640 480 +640 480 +640 427 +640 470 +640 426 +640 430 +640 482 +640 427 +500 375 +640 360 +500 375 +500 375 +640 462 +612 612 +640 480 +640 425 +426 640 +500 334 +640 427 +436 640 +640 480 +500 375 +640 427 +500 363 +640 457 +500 334 +500 429 +480 640 +640 428 +640 427 +640 427 +500 332 +640 319 +500 336 +640 481 +432 500 +500 333 +640 360 +640 427 +461 640 +640 480 +500 326 +640 425 +480 640 +640 427 +640 427 +640 431 +640 427 +640 539 +640 487 +427 640 +640 526 +640 427 +640 427 +612 612 +442 500 +640 480 +640 495 +480 640 +424 640 +480 640 +640 459 +640 480 +640 426 +640 427 +640 425 +640 480 +640 427 +640 458 +640 427 +640 362 +640 428 +640 451 +640 423 +480 640 +640 428 +640 480 +640 480 +480 640 +640 480 +640 421 +640 427 +480 640 +480 640 +640 480 +640 428 +480 640 +640 427 +640 480 +640 427 +640 427 +640 427 +427 640 +640 427 +500 375 +640 427 +640 427 +640 426 +439 603 +640 445 +640 480 +640 426 +560 640 +480 640 +640 316 +640 480 +427 640 +480 640 +640 480 +640 427 +431 640 +375 500 +640 480 +640 480 +640 427 +640 428 +640 427 +640 443 +620 367 +640 427 +640 480 +640 427 +640 581 +640 480 +640 480 +640 480 +640 640 +500 375 +640 494 +480 640 +640 480 +640 425 +640 480 +640 480 +554 640 +640 480 +425 640 +478 640 +500 375 +640 480 +640 480 +640 427 +480 640 +640 480 +427 640 +526 640 +500 375 +416 640 +640 427 +640 480 +332 500 +640 424 +427 640 +640 448 +640 640 +640 427 +640 427 +640 480 +640 426 +640 480 +500 375 +480 640 +640 427 +500 375 +640 480 +518 640 +640 480 +640 435 +500 375 +500 375 +639 640 +463 640 +500 324 +500 375 +480 640 +480 640 +640 396 +640 426 +383 640 +640 351 +640 427 +500 493 +640 480 +640 480 +500 375 +640 427 +640 429 +640 480 +640 480 +480 640 +640 452 +500 384 +375 500 +500 334 +640 428 +427 640 +640 480 +640 480 +640 640 +640 480 +640 427 +640 424 +640 427 +640 463 +640 480 +640 480 +640 421 +640 428 +640 427 +478 640 +640 480 +640 427 +500 375 +640 480 +640 427 +640 427 +426 640 +640 480 +640 480 +640 480 +640 480 +640 433 +640 480 +640 425 +640 480 +375 500 +640 428 +640 427 +640 430 +480 640 +480 640 +640 480 +640 398 +640 428 +640 480 +640 478 +426 640 +451 451 +640 480 +640 434 +339 500 +640 511 +640 415 +640 640 +480 640 +374 500 +427 640 +640 427 +640 561 +640 478 +640 427 +640 480 +500 375 +413 640 +640 521 +443 640 +425 640 +375 500 +500 375 +640 480 +640 480 +640 426 +640 426 +427 640 +640 478 +640 480 +612 612 +428 640 +640 480 +602 640 +448 640 +319 500 +500 375 +480 640 +480 640 +640 146 +640 427 +640 427 +640 427 +640 512 +480 640 +295 640 +640 427 +640 475 +640 426 +640 480 +640 360 +640 480 +426 640 +480 640 +640 480 +500 375 +640 427 +640 426 +640 480 +640 427 +640 480 +361 640 +640 480 +640 480 +333 500 +442 640 +640 480 +640 480 +640 427 +640 480 +500 375 +640 449 +500 375 +640 378 +500 376 +480 640 +640 460 +500 375 +640 480 +500 375 +428 640 +427 640 +640 360 +640 427 +640 479 +640 427 +640 480 +500 375 +640 452 +640 405 +640 481 +640 495 +640 427 +640 480 +396 640 +640 360 +640 427 +640 480 +480 640 +640 427 +640 427 +640 480 +640 331 +640 480 +640 432 +500 375 +640 480 +640 480 +640 480 +500 375 +640 427 +640 480 +640 433 +480 640 +640 425 +480 640 +640 480 +480 640 +640 428 +640 480 +571 640 +640 480 +640 480 +500 375 +640 490 +640 424 +640 459 +500 375 +640 360 +612 612 +640 480 +640 426 +640 476 +640 428 +500 375 +640 480 +640 480 +478 640 +640 512 +640 480 +640 418 +640 481 +640 562 +604 403 +640 426 +640 425 +425 640 +640 590 +640 425 +640 414 +500 333 +640 480 +640 428 +640 427 +640 480 +426 640 +479 640 +480 640 +640 480 +640 640 +640 426 +640 516 +500 375 +480 640 +500 375 +640 427 +640 486 +500 375 +500 334 +400 500 +640 428 +640 412 +640 427 +612 612 +640 456 +640 502 +640 424 +640 426 +461 640 +640 480 +480 640 +640 480 +640 601 +640 427 +640 480 +640 360 +640 603 +640 417 +640 480 +640 503 +640 427 +640 480 +640 427 +640 487 +640 441 +640 427 +612 612 +500 375 +427 640 +500 311 +640 426 +640 459 +640 513 +640 426 +500 375 +426 640 +640 480 +427 640 +640 405 +427 640 +640 446 +640 480 +480 640 +640 427 +640 359 +640 424 +486 500 +375 500 +640 480 +640 427 +640 425 +640 406 +640 428 +480 640 +640 481 +640 539 +480 640 +375 500 +500 332 +640 480 +640 428 +640 426 +500 500 +500 333 +640 262 +500 375 +480 640 +480 640 +541 640 +480 640 +640 640 +640 427 +375 500 +640 640 +640 459 +640 480 +640 487 +500 375 +640 429 +424 640 +640 640 +500 372 +640 480 +404 640 +640 480 +480 640 +640 480 +640 427 +640 427 +424 640 +640 426 +640 428 +640 428 +640 480 +640 426 +500 375 +458 640 +640 480 +640 480 +360 640 +480 640 +640 569 +640 480 +640 480 +640 426 +640 427 +640 425 +480 640 +640 455 +640 427 +640 427 +640 480 +640 358 +612 612 +428 640 +640 480 +425 640 +640 427 +640 427 +640 427 +500 332 +640 480 +480 640 +500 375 +640 427 +640 480 +600 450 +640 480 +427 640 +640 352 +640 480 +640 480 +640 480 +480 640 +640 480 +640 427 +640 480 +640 425 +500 333 +427 640 +360 640 +640 552 +480 640 +480 640 +500 375 +640 486 +640 480 +640 360 +307 461 +640 480 +640 427 +426 640 +500 436 +480 640 +500 333 +640 480 +480 640 +640 640 +334 500 +333 500 +425 640 +640 354 +500 375 +640 480 +640 480 +640 480 +480 640 +500 375 +640 508 +640 376 +640 480 +640 480 +640 480 +612 612 +612 612 +423 640 +389 640 +640 640 +500 334 +500 375 +640 480 +332 500 +640 480 +500 333 +490 640 +640 425 +600 449 +640 391 +387 600 +640 360 +425 640 +640 360 +640 480 +640 277 +640 480 +640 428 +640 411 +480 640 +500 375 +640 480 +640 426 +640 427 +640 480 +640 427 +640 427 +480 640 +640 640 +640 640 +640 480 +500 334 +391 640 +640 415 +640 480 +480 640 +640 427 +480 640 +640 480 +389 500 +640 427 +640 396 +640 427 +640 480 +640 480 +640 480 +640 303 +640 480 +640 436 +640 429 +457 640 +640 427 +500 375 +640 427 +640 480 +640 425 +640 480 +640 489 +640 419 +640 569 +640 480 +424 640 +640 427 +640 416 +640 418 +640 371 +640 428 +500 413 +640 427 +640 480 +480 640 +640 561 +640 423 +500 375 +640 480 +640 360 +640 480 +529 640 +640 425 +480 640 +428 640 +640 480 +640 409 +359 640 +427 640 +374 436 +640 428 +640 360 +640 426 +500 375 +640 480 +640 360 +640 427 +480 640 +640 425 +640 480 +500 333 +426 640 +640 427 +640 480 +640 428 +480 640 +480 640 +433 640 +640 428 +640 483 +640 401 +640 428 +480 640 +427 640 +640 298 +427 640 +640 480 +480 640 +427 640 +480 640 +500 332 +640 480 +640 480 +640 480 +640 466 +640 425 +640 480 +640 427 +640 445 +640 427 +484 500 +640 320 +640 480 +612 612 +427 640 +640 480 +640 425 +612 612 +640 426 +640 427 +504 640 +500 375 +425 640 +640 424 +427 640 +640 480 +640 427 +640 427 +640 346 +640 480 +640 427 +640 480 +640 371 +640 426 +640 480 +500 493 +640 480 +640 480 +640 427 +640 480 +640 360 +612 612 +640 418 +640 480 +640 427 +435 640 +640 425 +500 375 +500 375 +429 640 +339 500 +640 426 +640 427 +640 428 +640 427 +375 500 +640 360 +640 384 +640 428 +640 371 +640 424 +640 426 +612 612 +640 480 +500 357 +500 375 +612 612 +640 480 +640 427 +500 333 +640 640 +427 640 +640 267 +640 480 +640 382 +426 640 +640 481 +640 481 +480 640 +490 640 +425 640 +612 612 +640 480 +640 480 +640 427 +480 640 +640 480 +640 427 +640 480 +612 612 +640 426 +424 640 +640 480 +640 427 +640 427 +640 427 +640 426 +500 375 +640 480 +640 401 +375 500 +640 426 +640 480 +640 414 +332 500 +640 436 +640 480 +640 480 +640 480 +480 640 +500 375 +500 235 +640 480 +500 375 +640 476 +480 640 +640 506 +640 427 +640 429 +375 500 +640 480 +375 500 +425 640 +440 640 +640 427 +640 428 +640 480 +640 425 +640 360 +640 480 +640 480 +640 480 +538 640 +427 640 +640 480 +640 480 +640 303 +640 468 +640 426 +640 576 +640 382 +640 476 +640 640 +640 427 +500 375 +640 428 +500 375 +640 480 +640 480 +640 480 +640 480 +500 375 +640 480 +480 640 +480 640 +640 503 +640 430 +640 480 +640 426 +428 640 +428 640 +640 427 +640 351 +640 438 +480 640 +640 640 +640 360 +640 578 +640 480 +640 427 +640 426 +640 427 +480 640 +640 427 +480 640 +640 437 +500 379 +500 374 +640 480 +640 429 +640 428 +640 427 +640 427 +640 480 +480 640 +478 640 +640 480 +427 640 +640 298 +640 480 +640 480 +640 426 +640 480 +640 361 +424 640 +640 480 +640 419 +640 481 +480 640 +640 426 +640 428 +480 640 +480 640 +640 480 +427 640 +640 425 +640 480 +640 427 +640 424 +500 375 +640 427 +640 427 +427 640 +480 640 +640 427 +640 427 +640 428 +640 428 +640 427 +640 425 +500 333 +640 480 +640 427 +640 480 +640 478 +640 426 +500 375 +640 427 +640 498 +640 364 +500 375 +640 427 +640 480 +640 429 +480 640 +480 640 +640 424 +640 478 +640 427 +375 500 +388 500 +640 427 +640 426 +640 383 +640 426 +640 480 +640 396 +640 353 +640 425 +640 374 +640 427 +640 480 +640 480 +640 480 +480 640 +493 640 +640 480 +640 427 +480 640 +640 433 +640 480 +640 425 +640 427 +612 612 +640 495 +480 640 +640 480 +640 480 +640 478 +264 640 +640 427 +436 640 +640 425 +640 428 +640 480 +640 480 +427 640 +425 640 +427 640 +640 344 +500 375 +600 450 +640 480 +640 426 +480 640 +640 458 +640 640 +640 457 +640 426 +640 428 +640 442 +640 480 +640 480 +640 428 +640 480 +640 480 +426 640 +427 640 +640 640 +640 480 +640 640 +640 427 +640 411 +640 507 +640 480 +640 480 +640 425 +612 612 +500 346 +640 640 +640 424 +500 332 +612 612 +640 480 +480 640 +640 480 +500 375 +333 500 +640 427 +640 480 +640 501 +640 359 +640 427 +425 640 +640 432 +640 481 +640 426 +640 480 +640 480 +640 480 +480 640 +640 426 +640 482 +480 640 +640 428 +640 480 +640 428 +640 428 +500 375 +640 578 +640 428 +500 333 +640 480 +640 428 +640 480 +640 410 +640 427 +500 333 +640 426 +640 480 +640 361 +612 612 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +640 487 +640 426 +640 381 +640 428 +640 427 +360 480 +640 361 +480 640 +500 333 +640 478 +428 640 +640 360 +640 427 +640 480 +500 375 +480 640 +375 500 +500 318 +613 640 +427 640 +640 427 +640 480 +480 640 +500 388 +180 240 +640 444 +640 480 +640 426 +500 375 +509 640 +640 426 +640 564 +640 427 +269 640 +640 480 +638 356 +640 480 +458 640 +500 375 +640 480 +480 361 +640 480 +500 375 +640 427 +500 375 +640 360 +640 428 +640 409 +640 427 +640 360 +640 427 +640 640 +640 480 +640 427 +640 412 +306 408 +427 640 +640 425 +640 480 +640 480 +414 640 +640 427 +428 640 +640 304 +640 480 +640 427 +640 425 +640 640 +480 640 +640 480 +640 427 +458 640 +640 480 +480 640 +640 480 +640 427 +640 480 +480 640 +640 428 +480 640 +500 375 +640 429 +640 588 +640 481 +640 418 +434 640 +640 422 +640 427 +640 480 +640 491 +640 426 +640 427 +640 480 +640 480 +500 375 +640 427 +640 510 +478 640 +500 375 +640 456 +640 427 +480 640 +480 640 +640 480 +640 481 +640 501 +427 640 +640 480 +375 500 +640 416 +500 375 +500 375 +640 480 +480 640 +375 500 +640 439 +458 640 +640 399 +500 282 +640 480 +640 427 +640 427 +428 640 +640 480 +640 480 +500 375 +640 426 +425 640 +640 480 +640 480 +640 480 +640 427 +640 427 +640 480 +424 640 +640 437 +640 427 +500 375 +426 640 +640 424 +417 640 +640 480 +640 480 +480 640 +640 480 +640 427 +640 536 +567 640 +640 425 +640 480 +640 457 +640 640 +640 478 +640 360 +640 427 +640 480 +640 427 +333 500 +640 434 +640 425 +640 424 +480 640 +612 612 +640 425 +640 480 +640 438 +495 500 +426 640 +640 427 +429 640 +640 558 +640 428 +640 480 +500 188 +480 640 +640 360 +612 612 +640 425 +640 424 +640 428 +640 480 +640 428 +500 244 +500 375 +500 375 +640 425 +478 640 +640 428 +640 480 +640 427 +500 375 +426 640 +640 480 +640 457 +640 480 +640 320 +640 383 +640 359 +640 436 +640 426 +640 427 +640 361 +640 428 +640 480 +640 424 +640 475 +640 414 +480 640 +360 640 +480 640 +640 480 +612 612 +640 427 +338 450 +640 427 +464 640 +640 421 +640 480 +640 428 +640 427 +500 375 +640 480 +640 427 +640 480 +640 427 +640 480 +500 375 +480 640 +640 426 +640 425 +538 640 +640 480 +640 480 +640 480 +640 480 +478 640 +640 478 +640 427 +640 480 +640 480 +500 375 +640 427 +480 640 +640 480 +427 640 +640 480 +640 509 +640 480 +640 471 +640 480 +612 612 +337 500 +640 480 +427 640 +513 640 +640 480 +474 640 +640 428 +480 640 +325 500 +640 480 +640 426 +640 481 +409 640 +640 360 +640 311 +640 426 +413 640 +640 424 +640 480 +639 640 +640 427 +640 480 +383 500 +427 640 +335 500 +640 427 +640 426 +640 427 +640 480 +640 425 +640 427 +640 427 +640 480 +640 433 +480 640 +640 416 +640 366 +640 427 +640 480 +640 391 +333 500 +640 436 +640 425 +640 428 +640 480 +542 640 +431 640 +640 427 +640 480 +334 500 +640 480 +640 425 +423 640 +425 640 +494 640 +480 640 +640 427 +640 427 +500 375 +550 412 +640 518 +640 429 +640 427 +640 480 +640 481 +640 480 +640 480 +640 477 +640 427 +640 427 +640 487 +640 426 +640 480 +512 384 +640 516 +640 435 +457 640 +480 640 +640 427 +376 500 +413 500 +640 431 +480 640 +427 640 +640 433 +640 480 +640 484 +640 428 +640 359 +640 426 +500 375 +500 375 +500 400 +480 640 +480 640 +450 338 +427 640 +500 333 +640 480 +640 361 +640 480 +427 640 +640 424 +640 425 +375 500 +419 500 +640 427 +500 375 +640 427 +463 640 +640 480 +640 434 +500 333 +500 375 +500 375 +640 427 +480 640 +640 480 +640 480 +640 427 +640 480 +480 640 +640 480 +498 640 +612 612 +640 427 +640 480 +359 640 +500 333 +426 640 +640 480 +424 640 +375 500 +640 493 +500 333 +640 480 +427 640 +640 429 +640 480 +480 640 +640 480 +640 360 +640 460 +640 427 +640 480 +500 334 +640 457 +640 401 +500 381 +640 427 +640 411 +640 424 +640 427 +500 357 +404 640 +463 640 +640 428 +640 427 +640 480 +426 640 +640 426 +426 640 +640 481 +640 427 +640 481 +640 427 +640 427 +480 640 +427 640 +333 500 +640 480 +640 480 +640 428 +425 640 +427 640 +640 480 +640 480 +427 640 +640 426 +640 480 +480 640 +640 426 +503 640 +480 640 +640 480 +333 500 +640 480 +640 426 +640 480 +640 428 +640 480 +480 640 +640 426 +640 427 +640 480 +388 640 +640 374 +640 427 +480 640 +427 640 +500 375 +640 429 +640 585 +640 427 +500 383 +640 427 +640 394 +640 426 +640 480 +333 500 +426 640 +640 480 +427 640 +640 422 +640 480 +640 426 +640 425 +428 640 +640 427 +640 427 +640 425 +640 427 +640 480 +640 348 +640 480 +640 427 +640 480 +345 500 +640 384 +640 480 +640 427 +480 640 +640 427 +640 426 +640 480 +480 640 +332 500 +640 427 +640 480 +640 480 +640 543 +640 429 +640 415 +640 640 +500 377 +500 375 +640 426 +640 480 +640 519 +640 480 +640 361 +427 640 +640 480 +640 429 +640 427 +640 634 +480 640 +479 640 +427 640 +500 375 +500 452 +500 375 +640 431 +640 429 +640 427 +640 426 +640 424 +160 120 +427 640 +640 480 +640 480 +640 424 +427 640 +640 480 +640 417 +640 480 +500 333 +273 500 +640 640 +500 334 +386 336 +640 450 +640 426 +640 480 +427 640 +640 480 +640 480 +625 640 +640 427 +157 160 +480 640 +640 480 +500 367 +640 359 +500 375 +640 428 +500 375 +500 319 +375 500 +640 427 +640 426 +480 640 +640 480 +640 480 +640 427 +640 473 +640 425 +640 394 +383 640 +640 426 +640 427 +640 427 +640 428 +640 427 +640 480 +640 570 +480 640 +500 333 +640 457 +640 422 +640 480 +640 480 +640 640 +640 383 +640 427 +640 425 +640 256 +426 640 +640 427 +640 478 +640 427 +500 375 +640 424 +640 480 +640 478 +500 375 +640 427 +640 427 +640 427 +640 479 +500 334 +375 500 +640 425 +428 640 +640 425 +640 640 +640 428 +434 500 +640 429 +640 503 +640 424 +640 427 +640 480 +640 440 +640 480 +427 640 +640 480 +612 612 +640 425 +640 400 +640 428 +640 480 +640 427 +427 640 +640 446 +640 464 +640 480 +333 500 +640 361 +640 480 +640 480 +427 640 +640 428 +612 612 +426 640 +640 427 +640 480 +500 412 +495 640 +640 426 +427 640 +640 424 +640 427 +640 480 +480 640 +640 480 +413 500 +640 426 +386 640 +640 480 +640 487 +640 480 +480 640 +600 400 +640 480 +500 375 +640 513 +640 426 +640 322 +500 375 +640 480 +427 640 +428 640 +640 480 +640 425 +454 640 +640 424 +427 640 +640 359 +480 640 +640 509 +640 428 +640 480 +480 640 +640 480 +640 480 +640 426 +640 427 +640 480 +640 426 +640 480 +640 479 +640 493 +640 480 +480 640 +640 480 +500 375 +640 427 +640 318 +640 480 +640 480 +640 425 +640 480 +640 533 +640 427 +640 480 +640 426 +640 427 +640 427 +400 600 +640 373 +640 426 +640 424 +640 557 +640 427 +640 427 +640 427 +640 427 +640 413 +426 640 +640 480 +540 640 +640 480 +640 427 +427 640 +640 454 +640 480 +640 480 +480 640 +640 480 +640 481 +640 440 +500 375 +640 480 +640 480 +640 480 +427 640 +376 500 +640 480 +640 480 +640 523 +640 427 +640 640 +640 480 +640 480 +500 333 +640 336 +606 640 +640 427 +612 612 +640 480 +640 480 +640 480 +640 480 +427 640 +425 640 +640 480 +640 480 +502 640 +612 612 +640 480 +640 485 +640 313 +480 640 +640 427 +640 427 +640 429 +640 427 +640 513 +640 480 +640 480 +640 426 +640 480 +640 480 +480 640 +640 426 +640 480 +640 480 +640 427 +640 480 +523 640 +640 426 +375 500 +426 640 +640 425 +640 425 +427 640 +640 480 +640 427 +640 480 +429 640 +640 427 +500 378 +639 640 +640 427 +640 480 +478 640 +640 480 +640 426 +500 375 +640 426 +411 640 +640 480 +640 480 +640 480 +640 427 +640 424 +640 371 +640 478 +640 480 +640 425 +640 480 +375 500 +424 640 +500 500 +640 427 +640 480 +640 426 +640 426 +640 480 +500 375 +640 424 +640 427 +640 427 +429 640 +640 378 +498 640 +640 408 +640 480 +480 640 +427 640 +640 427 +640 480 +640 480 +500 375 +500 351 +640 188 +640 486 +640 428 +640 427 +640 424 +640 364 +640 364 +640 384 +500 356 +640 431 +640 427 +640 480 +640 426 +500 375 +500 375 +640 429 +640 425 +640 448 +640 480 +640 480 +640 483 +640 427 +500 375 +375 500 +480 640 +640 354 +640 427 +640 426 +500 375 +640 427 +640 480 +640 480 +640 480 +500 371 +612 612 +640 480 +640 554 +640 549 +640 480 +500 375 +640 360 +640 427 +640 427 +640 480 +500 340 +500 333 +375 500 +640 480 +375 500 +640 394 +640 480 +640 480 +640 427 +640 640 +459 640 +640 480 +640 360 +427 640 +640 224 +480 640 +640 427 +640 428 +500 375 +640 429 +640 480 +640 427 +582 640 +640 480 +640 428 +640 451 +354 640 +426 640 +640 512 +640 480 +640 640 +425 640 +480 640 +640 427 +640 447 +640 480 +500 334 +480 640 +480 640 +640 428 +500 375 +500 375 +640 428 +640 428 +640 480 +640 480 +640 428 +571 640 +500 375 +640 481 +427 640 +500 375 +640 480 +640 480 +640 426 +453 640 +500 335 +640 426 +568 320 +640 429 +640 427 +640 480 +640 480 +640 449 +500 375 +640 424 +500 375 +480 640 +640 319 +640 480 +427 640 +640 427 +480 640 +640 428 +640 428 +640 480 +640 427 +640 478 +427 640 +500 402 +424 640 +640 427 +640 427 +640 480 +640 426 +480 640 +427 640 +640 480 +640 480 +640 480 +480 640 +640 480 +500 286 +427 640 +375 500 +640 427 +640 427 +640 480 +480 640 +500 332 +500 375 +640 427 +640 480 +640 482 +640 456 +640 427 +640 399 +640 480 +640 423 +338 500 +424 640 +640 480 +640 427 +427 640 +640 428 +640 480 +640 640 +640 428 +500 332 +640 480 +640 427 +640 427 +640 424 +640 423 +500 375 +640 480 +640 427 +640 480 +640 360 +480 640 +640 429 +640 478 +500 375 +597 400 +640 426 +465 500 +640 425 +640 480 +640 427 +640 480 +640 480 +429 640 +462 640 +447 640 +640 426 +640 423 +640 426 +640 347 +640 427 +500 375 +640 480 +640 427 +640 426 +640 480 +500 332 +360 640 +427 640 +370 640 +640 426 +640 480 +640 480 +640 427 +640 478 +640 427 +640 427 +427 640 +640 514 +640 426 +622 640 +640 519 +479 640 +500 375 +640 597 +640 429 +640 396 +640 427 +589 640 +640 480 +640 427 +640 480 +640 424 +500 484 +500 375 +640 510 +640 427 +640 470 +480 640 +640 413 +612 612 +640 480 +640 480 +500 333 +427 640 +375 500 +612 612 +640 480 +640 480 +640 480 +426 640 +640 427 +640 428 +640 480 +612 612 +640 429 +456 640 +640 480 +640 484 +480 360 +640 420 +483 640 +640 427 +640 427 +640 427 +640 407 +512 640 +640 480 +480 640 +640 351 +640 480 +640 381 +427 640 +500 375 +640 427 +640 436 +640 480 +480 640 +640 480 +480 640 +640 408 +640 473 +375 500 +640 427 +640 427 +500 375 +640 426 +640 434 +640 425 +640 427 +512 640 +640 426 +612 612 +612 612 +640 480 +640 480 +375 500 +640 428 +640 480 +480 640 +426 640 +640 428 +480 640 +640 427 +640 480 +500 231 +640 427 +427 640 +640 571 +375 500 +417 640 +525 640 +500 375 +640 480 +640 480 +500 333 +360 640 +640 416 +427 640 +640 480 +640 427 +640 427 +640 427 +640 426 +640 427 +640 480 +500 375 +640 480 +500 375 +640 354 +480 640 +480 417 +612 612 +640 480 +640 427 +640 427 +500 375 +480 640 +640 640 +640 427 +640 480 +640 485 +640 366 +427 640 +500 375 +640 425 +640 480 +640 427 +640 480 +640 427 +500 398 +500 375 +640 429 +500 375 +640 427 +640 640 +480 640 +480 640 +640 427 +640 480 +640 427 +640 421 +409 307 +400 500 +640 428 +640 427 +480 640 +500 373 +500 309 +640 480 +500 375 +640 427 +640 480 +640 638 +500 375 +480 640 +640 480 +640 480 +640 454 +640 425 +640 360 +427 640 +640 427 +478 640 +640 481 +480 640 +500 375 +427 640 +500 375 +427 640 +500 348 +428 640 +640 480 +424 640 +640 480 +500 332 +376 500 +500 375 +640 480 +640 480 +640 480 +553 640 +640 515 +640 427 +500 375 +640 427 +640 427 +480 640 +640 427 +640 427 +640 359 +640 512 +640 425 +640 480 +481 640 +612 612 +640 480 +500 333 +640 427 +640 427 +480 640 +640 427 +640 480 +500 336 +640 425 +640 481 +344 640 +339 500 +407 640 +640 427 +640 480 +640 480 +426 640 +640 480 +640 480 +640 427 +333 500 +640 386 +640 480 +640 423 +333 500 +640 480 +640 427 +640 427 +640 481 +640 480 +500 375 +640 480 +640 426 +480 640 +640 427 +640 360 +640 480 +640 457 +640 376 +500 375 +612 612 +640 480 +640 427 +448 336 +640 427 +640 427 +640 480 +386 500 +640 470 +640 480 +427 640 +640 415 +424 640 +640 426 +640 425 +640 427 +640 480 +640 427 +375 500 +640 480 +640 427 +640 428 +640 427 +640 480 +640 480 +425 640 +600 400 +640 428 +427 640 +640 427 +640 501 +640 431 +500 375 +640 426 +640 427 +640 365 +640 425 +499 371 +640 426 +480 640 +481 640 +640 426 +640 427 +640 360 +640 480 +640 489 +500 500 +640 640 +640 428 +640 548 +480 640 +469 500 +640 428 +640 425 +640 426 +640 480 +640 427 +640 424 +640 468 +640 428 +640 427 +640 378 +640 430 +640 427 +640 480 +426 640 +640 427 +640 469 +497 640 +480 640 +640 480 +640 283 +410 640 +640 426 +640 481 +640 358 +640 480 +640 480 +640 439 +640 480 +640 480 +425 640 +640 340 +500 375 +640 379 +640 480 +640 475 +480 640 +640 514 +480 640 +640 427 +640 425 +640 480 +640 454 +640 428 +640 428 +500 375 +640 480 +640 424 +500 332 +640 427 +500 375 +640 427 +500 375 +640 576 +607 640 +640 480 +640 427 +640 480 +640 480 +427 640 +640 427 +640 480 +427 640 +500 333 +425 640 +600 466 +640 427 +640 540 +640 427 +640 461 +640 480 +640 480 +640 424 +640 480 +640 480 +640 480 +427 640 +500 375 +640 480 +640 446 +640 391 +480 640 +500 375 +640 420 +640 429 +426 640 +469 640 +640 640 +640 426 +640 480 +640 480 +640 427 +640 442 +380 640 +640 480 +500 375 +428 640 +640 415 +418 500 +640 425 +480 640 +640 531 +427 640 +640 473 +320 240 +640 457 +640 480 +640 423 +500 375 +375 500 +500 375 +640 427 +640 427 +327 500 +640 360 +500 332 +427 640 +385 500 +640 512 +500 417 +640 427 +640 480 +640 480 +480 640 +640 427 +640 426 +640 480 +211 500 +612 612 +480 640 +640 573 +640 427 +640 438 +640 360 +427 640 +500 333 +500 375 +480 640 +480 640 +640 480 +612 612 +640 360 +640 427 +640 425 +612 612 +640 480 +640 480 +427 640 +628 442 +480 640 +612 612 +640 480 +640 427 +640 478 +480 640 +480 640 +498 640 +500 375 +640 443 +640 427 +640 427 +640 428 +339 500 +480 640 +640 427 +449 640 +500 378 +640 427 +640 395 +470 640 +640 480 +380 330 +640 458 +640 400 +506 640 +640 554 +480 640 +640 427 +333 500 +640 426 +640 427 +640 480 +640 427 +640 480 +640 480 +500 276 +612 612 +612 612 +500 375 +500 500 +640 480 +640 480 +500 370 +640 640 +500 375 +640 480 +640 462 +640 480 +640 564 +640 480 +640 427 +640 427 +500 333 +640 396 +640 427 +500 375 +640 426 +535 640 +640 480 +640 427 +640 400 +448 640 +640 480 +480 640 +334 500 +510 640 +480 640 +500 375 +640 427 +480 640 +640 480 +640 640 +480 640 +448 336 +640 361 +640 426 +480 640 +375 500 +640 480 +500 335 +640 360 +640 489 +480 640 +640 424 +640 480 +500 375 +640 480 +480 640 +500 339 +640 427 +424 640 +500 335 +640 480 +640 412 +640 366 +429 640 +426 640 +640 436 +640 350 +427 640 +640 427 +640 426 +640 480 +640 496 +640 426 +612 612 +640 480 +640 480 +426 640 +640 229 +640 640 +640 480 +640 442 +480 640 +480 640 +640 479 +500 332 +612 612 +640 425 +640 427 +500 333 +426 640 +500 373 +640 435 +640 427 +640 427 +376 500 +500 335 +640 480 +468 640 +640 426 +640 424 +640 419 +640 427 +640 428 +640 428 +500 333 +640 545 +640 360 +640 383 +640 634 +640 360 +640 427 +490 469 +640 425 +640 640 +640 480 +640 480 +640 427 +480 640 +640 424 +428 640 +424 640 +640 427 +640 480 +480 640 +640 480 +640 427 +440 500 +640 427 +426 640 +480 640 +640 428 +640 480 +500 411 +427 640 +640 480 +480 640 +176 384 +427 640 +425 640 +427 640 +640 427 +640 480 +480 640 +640 480 +478 640 +375 500 +640 480 +612 612 +479 500 +480 640 +500 367 +640 640 +640 512 +612 612 +500 500 +334 500 +640 425 +640 480 +640 480 +640 427 +640 425 +640 480 +600 400 +500 332 +612 612 +640 393 +640 480 +640 480 +424 640 +640 480 +640 640 +640 427 +640 435 +640 480 +640 427 +333 500 +512 640 +640 524 +640 480 +640 480 +640 478 +640 426 +375 500 +640 427 +426 640 +426 640 +480 640 +640 427 +640 426 +640 480 +640 425 +640 427 +640 480 +640 425 +640 427 +640 320 +640 426 +480 640 +424 640 +640 427 +640 480 +640 480 +500 333 +640 518 +640 480 +640 359 +640 426 +612 612 +640 427 +428 640 +640 427 +640 480 +427 640 +640 427 +426 640 +640 427 +640 480 +640 428 +640 480 +612 612 +640 523 +640 383 +640 427 +640 480 +640 427 +640 480 +640 480 +480 640 +480 640 +640 427 +640 426 +640 480 +640 432 +500 375 +640 427 +640 423 +640 480 +640 480 +500 375 +640 480 +640 480 +500 357 +640 427 +428 640 +640 426 +428 640 +480 640 +640 426 +612 612 +640 440 +480 640 +480 640 +640 480 +640 359 +500 375 +332 500 +640 427 +640 480 +640 400 +500 333 +340 500 +640 427 +640 448 +640 510 +640 427 +640 480 +429 640 +640 352 +640 436 +424 640 +450 600 +428 640 +640 480 +640 479 +640 427 +640 640 +480 640 +640 279 +640 423 +640 427 +640 425 +640 640 +640 427 +640 427 +427 640 +640 480 +512 480 +640 426 +427 640 +640 427 +640 480 +640 631 +640 425 +333 500 +378 500 +480 272 +640 480 +480 640 +640 443 +640 427 +427 640 +640 426 +640 480 +640 424 +640 506 +640 406 +480 640 +640 388 +640 424 +640 480 +640 407 +425 640 +640 388 +640 480 +640 494 +640 426 +640 480 +500 336 +426 640 +640 427 +640 426 +640 468 +427 640 +424 640 +500 333 +640 407 +612 612 +640 425 +500 333 +640 457 +640 480 +500 375 +480 640 +640 426 +640 480 +426 640 +640 423 +640 480 +640 427 +640 426 +640 480 +640 480 +640 480 +640 480 +640 412 +640 426 +612 612 +640 427 +426 640 +640 480 +640 376 +640 480 +640 404 +640 482 +640 427 +427 640 +640 426 +640 431 +640 425 +480 640 +382 500 +640 428 +375 500 +640 359 +640 427 +640 426 +640 485 +640 392 +640 332 +480 640 +640 425 +333 500 +640 426 +640 457 +500 340 +640 480 +500 326 +375 500 +640 396 +480 640 +333 500 +640 427 +640 480 +640 480 +640 427 +640 429 +640 427 +640 476 +428 640 +640 480 +427 640 +640 495 +640 480 +500 334 +640 508 +640 480 +640 457 +640 427 +640 480 +500 375 +425 640 +640 290 +500 330 +466 640 +500 375 +640 480 +640 480 +640 600 +640 640 +480 640 +640 426 +640 427 +640 427 +427 640 +640 473 +640 428 +640 480 +640 480 +640 480 +640 480 +640 427 +640 427 +500 375 +640 427 +426 640 +640 422 +640 480 +640 480 +640 425 +640 426 +640 427 +480 640 +640 426 +640 427 +335 500 +640 427 +640 480 +396 640 +640 480 +640 427 +425 640 +480 640 +640 494 +640 427 +640 480 +500 375 +480 640 +640 478 +514 640 +640 433 +640 480 +400 500 +640 426 +640 426 +480 640 +640 427 +500 333 +640 360 +640 478 +480 640 +640 427 +479 640 +478 640 +612 612 +512 640 +640 480 +640 427 +500 335 +640 480 +640 360 +640 496 +375 500 +386 640 +640 428 +640 441 +640 480 +640 427 +480 640 +640 427 +640 428 +428 640 +425 640 +640 549 +480 640 +640 480 +640 480 +640 391 +640 480 +640 480 +480 640 +640 427 +640 480 +640 480 +640 512 +500 317 +478 640 +640 428 +640 427 +640 480 +640 480 +640 427 +640 436 +640 503 +640 426 +640 480 +640 426 +640 311 +640 427 +640 640 +640 425 +640 478 +480 640 +480 640 +640 427 +640 480 +640 480 +640 428 +640 504 +427 640 +640 478 +640 480 +640 559 +640 437 +612 612 +640 424 +640 480 +480 640 +640 459 +640 424 +640 426 +640 480 +640 426 +640 480 +640 480 +640 480 +640 480 +500 335 +640 480 +640 426 +640 427 +427 640 +640 427 +640 426 +480 640 +640 480 +640 480 +640 423 +640 424 +640 480 +640 427 +640 480 +640 480 +348 640 +375 500 +461 640 +427 640 +612 612 +640 457 +640 426 +640 506 +414 640 +640 417 +640 423 +640 478 +640 426 +500 375 +640 481 +640 428 +640 428 +600 600 +640 429 +500 375 +640 480 +640 501 +640 480 +640 479 +640 480 +640 480 +640 480 +480 640 +538 360 +500 375 +640 480 +480 640 +640 512 +424 640 +640 425 +640 425 +640 480 +640 424 +500 375 +640 480 +640 360 +427 640 +448 299 +640 392 +426 640 +640 427 +640 445 +612 612 +500 333 +640 518 +640 320 +640 428 +480 640 +640 428 +640 428 +640 480 +640 427 +375 500 +640 480 +500 438 +478 640 +500 375 +320 240 +640 480 +640 480 +640 326 +640 480 +640 480 +640 491 +423 640 +640 427 +640 428 +640 480 +640 428 +640 480 +480 640 +640 398 +640 480 +612 612 +640 480 +640 425 +640 437 +426 640 +640 480 +640 431 +640 427 +427 640 +500 375 +375 500 +486 640 +480 640 +640 427 +426 640 +425 640 +478 640 +333 500 +500 332 +640 480 +640 640 +640 480 +500 448 +427 640 +500 372 +640 426 +480 360 +640 426 +427 640 +426 640 +427 640 +466 640 +640 403 +333 500 +640 449 +329 469 +640 342 +640 478 +640 474 +640 480 +425 640 +640 399 +640 426 +640 480 +500 334 +612 612 +482 640 +425 640 +640 640 +640 486 +333 500 +640 208 +612 612 +640 480 +427 640 +427 640 +640 480 +425 640 +640 427 +500 334 +640 427 +640 380 +500 281 +640 425 +640 425 +640 425 +640 480 +478 640 +333 500 +640 427 +640 427 +640 480 +428 640 +640 427 +640 480 +480 640 +640 427 +640 480 +640 480 +640 503 +427 640 +612 612 +640 427 +640 480 +640 565 +612 612 +640 640 +500 377 +640 428 +640 424 +500 375 +500 375 +480 640 +640 427 +369 500 +640 441 +640 425 +640 480 +640 480 +640 480 +500 333 +500 375 +640 480 +424 640 +500 333 +640 502 +640 480 +640 480 +500 334 +640 480 +640 480 +501 640 +640 480 +640 480 +478 640 +640 428 +612 612 +480 640 +592 640 +640 480 +640 480 +640 427 +640 480 +640 480 +427 640 +640 547 +640 480 +640 480 +640 439 +640 480 +640 427 +481 640 +494 378 +640 405 +640 480 +640 399 +519 640 +640 480 +640 360 +640 480 +640 427 +640 427 +640 483 +379 500 +640 480 +640 427 +640 426 +640 429 +640 426 +383 640 +640 480 +640 601 +640 455 +640 480 +375 500 +640 427 +640 427 +640 426 +427 640 +640 427 +640 426 +640 426 +500 375 +640 480 +480 640 +480 640 +427 640 +427 640 +480 640 +480 640 +640 426 +640 480 +500 375 +425 640 +480 640 +375 500 +640 480 +640 425 +640 425 +640 516 +640 463 +640 361 +640 402 +427 640 +512 640 +361 640 +424 640 +427 640 +640 640 +480 640 +640 457 +373 500 +640 426 +640 480 +640 478 +640 479 +640 427 +427 640 +640 480 +500 375 +480 640 +640 427 +640 480 +640 480 +640 480 +640 425 +640 427 +640 480 +640 419 +427 640 +640 427 +640 427 +640 480 +480 640 +640 425 +640 640 +640 480 +640 400 +333 500 +427 640 +640 480 +612 612 +640 427 +640 513 +640 428 +397 500 +640 427 +640 480 +426 640 +428 640 +480 640 +333 500 +640 426 +500 333 +500 335 +448 640 +500 375 +480 640 +640 456 +640 427 +640 457 +500 375 +640 406 +640 427 +480 640 +500 377 +500 375 +640 431 +640 359 +640 640 +640 428 +427 640 +640 480 +426 640 +640 427 +480 640 +500 333 +640 480 +640 426 +640 496 +532 640 +640 450 +640 427 +640 480 +480 640 +640 428 +640 258 +640 383 +640 460 +640 480 +640 480 +375 500 +640 263 +500 375 +612 612 +640 308 +640 427 +484 640 +640 424 +500 375 +640 427 +330 500 +640 360 +640 427 +480 640 +640 424 +640 480 +500 329 +640 480 +640 354 +640 480 +640 480 +343 230 +640 451 +427 640 +640 427 +500 429 +640 480 +640 427 +640 454 +640 426 +427 640 +525 640 +640 463 +200 133 +640 480 +426 640 +640 534 +640 494 +500 400 +500 375 +612 612 +480 640 +640 480 +640 569 +621 600 +640 480 +640 426 +640 480 +640 640 +640 427 +500 375 +640 480 +640 423 +500 375 +640 424 +426 640 +333 500 +640 294 +476 640 +545 640 +426 640 +480 640 +441 640 +640 480 +640 427 +640 427 +486 640 +640 426 +640 427 +171 500 +375 500 +425 640 +640 427 +640 426 +640 426 +427 640 +640 480 +640 360 +640 640 +640 427 +332 500 +500 375 +320 240 +640 480 +640 416 +640 428 +640 488 +640 426 +640 426 +640 480 +629 640 +361 640 +640 428 +640 480 +640 427 +640 360 +640 475 +500 375 +640 480 +640 548 +500 375 +427 640 +640 479 +480 640 +478 640 +480 640 +640 480 +640 438 +468 640 +640 340 +640 480 +640 480 +640 427 +640 480 +640 427 +500 375 +640 427 +640 424 +640 480 +478 640 +480 640 +640 427 +640 529 +500 375 +640 426 +640 426 +640 480 +612 612 +640 359 +480 640 +640 360 +640 427 +425 640 +640 427 +424 640 +640 480 +640 422 +640 443 +640 427 +640 428 +640 640 +640 480 +640 424 +640 480 +640 480 +640 480 +500 375 +640 480 +500 375 +640 426 +640 333 +455 480 +480 640 +407 640 +500 334 +640 480 +427 640 +500 333 +500 375 +480 640 +640 423 +500 393 +480 640 +640 427 +333 500 +640 360 +418 640 +640 536 +640 428 +640 452 +640 384 +500 332 +490 640 +640 426 +640 425 +640 496 +640 428 +640 429 +640 300 +640 427 +481 640 +640 480 +640 427 +612 612 +341 500 +612 612 +640 299 +640 536 +640 480 +427 640 +640 360 +427 640 +640 427 +500 375 +500 333 +640 480 +424 640 +640 427 +640 427 +640 480 +426 640 +640 480 +640 427 +640 480 +500 375 +640 426 +640 480 +640 480 +640 424 +480 640 +640 427 +640 640 +640 427 +426 640 +640 480 +640 480 +640 640 +640 480 +640 486 +375 500 +640 480 +375 500 +480 640 +640 479 +640 427 +480 640 +640 425 +640 424 +500 295 +427 640 +427 640 +640 480 +640 426 +430 640 +640 427 +375 500 +640 360 +640 480 +427 640 +640 480 +375 500 +640 427 +640 359 +640 480 +500 333 +426 640 +640 427 +637 640 +640 425 +480 640 +427 640 +640 424 +640 479 +640 427 +457 640 +640 427 +480 640 +640 480 +640 427 +500 337 +427 640 +640 360 +500 375 +640 640 +480 640 +640 428 +428 640 +500 375 +480 640 +640 480 +640 480 +640 480 +640 484 +426 640 +480 640 +480 640 +500 375 +640 480 +387 640 +640 427 +640 425 +427 640 +640 427 +375 500 +640 480 +640 480 +427 640 +500 366 +640 480 +640 480 +640 472 +640 416 +640 426 +427 640 +640 480 +478 640 +640 425 +640 428 +428 640 +640 480 +493 640 +640 480 +640 424 +500 333 +640 427 +640 427 +640 480 +640 427 +640 470 +640 427 +375 500 +640 427 +500 499 +640 480 +640 427 +640 427 +480 640 +640 436 +640 375 +640 640 +640 404 +333 500 +500 361 +640 480 +640 424 +640 480 +640 480 +640 444 +640 426 +480 640 +470 640 +640 427 +640 427 +480 640 +640 428 +640 425 +640 427 +640 426 +640 480 +640 480 +640 480 +480 640 +600 450 +640 378 +640 427 +640 480 +640 424 +640 480 +640 425 +427 640 +553 640 +640 428 +640 480 +640 428 +442 640 +500 375 +415 500 +640 640 +640 426 +500 378 +640 427 +640 480 +640 479 +640 427 +380 640 +640 480 +640 480 +500 375 +500 311 +469 640 +640 421 +640 480 +640 480 +640 427 +640 476 +640 480 +640 480 +480 640 +640 480 +640 480 +412 500 +640 426 +640 640 +640 427 +640 425 +640 368 +640 626 +640 484 +612 612 +640 514 +640 640 +640 468 +500 314 +458 640 +480 640 +640 457 +640 480 +640 480 +640 427 +640 480 +479 640 +640 480 +640 512 +334 500 +500 500 +640 426 +375 500 +427 640 +332 500 +640 426 +640 480 +640 480 +426 640 +640 427 +612 612 +640 480 +640 410 +640 480 +640 427 +640 480 +500 375 +640 426 +480 640 +457 640 +640 427 +427 640 +640 480 +640 427 +640 480 +640 426 +640 428 +333 500 +640 478 +640 426 +640 427 +640 480 +640 480 +450 500 +640 427 +640 427 +640 428 +381 640 +500 375 +375 500 +640 426 +640 519 +480 640 +640 588 +375 500 +640 480 +640 480 +500 442 +480 640 +640 480 +500 429 +640 429 +640 427 +640 425 +640 480 +500 375 +640 427 +480 640 +640 480 +480 640 +640 480 +640 437 +640 480 +640 312 +640 427 +500 332 +640 480 +429 640 +640 426 +640 556 +480 640 +640 427 +640 427 +480 640 +640 486 +640 480 +640 480 +640 480 +640 480 +300 403 +493 500 +640 480 +640 414 +640 375 +333 500 +500 333 +630 420 +640 414 +375 500 +640 427 +640 427 +640 457 +640 361 +640 427 +500 333 +640 425 +640 480 +426 640 +640 429 +640 480 +640 426 +640 427 +640 480 +640 426 +640 360 +640 480 +612 612 +640 429 +425 640 +612 612 +480 640 +640 478 +413 640 +640 478 +480 640 +640 427 +640 360 +480 640 +500 332 +640 480 +640 480 +640 471 +640 478 +427 640 +404 640 +640 480 +375 500 +359 640 +640 425 +480 640 +640 458 +640 426 +427 640 +640 427 +500 395 +640 427 +640 425 +640 427 +640 428 +375 500 +375 500 +500 375 +425 640 +640 480 +612 612 +640 489 +640 426 +640 426 +640 479 +640 464 +640 480 +640 532 +640 480 +640 322 +640 427 +500 323 +640 427 +500 375 +427 640 +640 640 +426 640 +612 612 +500 332 +480 640 +423 640 +640 480 +640 384 +640 429 +640 512 +500 375 +480 640 +640 532 +640 425 +640 480 +640 428 +425 640 +427 640 +500 338 +640 420 +640 480 +640 427 +640 427 +640 427 +640 426 +640 480 +640 480 +375 500 +640 426 +424 640 +640 480 +640 428 +640 352 +640 480 +426 640 +500 333 +640 425 +640 480 +640 426 +640 480 +640 513 +640 426 +640 394 +640 480 +640 480 +640 434 +500 341 +418 640 +640 426 +640 480 +640 480 +640 480 +500 375 +426 640 +500 375 +640 446 +640 480 +640 426 +640 427 +640 426 +640 480 +640 463 +640 480 +427 640 +640 426 +640 498 +213 140 +640 427 +375 500 +640 426 +500 375 +332 500 +427 640 +640 427 +640 426 +640 480 +640 480 +426 640 +640 425 +640 480 +480 640 +640 489 +640 480 +640 480 +478 640 +640 426 +640 563 +640 478 +640 480 +640 480 +640 427 +500 334 +640 478 +500 375 +640 443 +427 640 +353 500 +640 511 +640 427 +612 612 +480 640 +600 400 +500 375 +581 575 +640 427 +640 424 +640 359 +640 483 +500 375 +480 640 +640 480 +640 426 +640 427 +500 375 +500 375 +640 456 +640 480 +640 480 +640 428 +640 480 +640 480 +427 640 +640 480 +500 352 +640 427 +445 640 +500 332 +640 494 +640 484 +598 640 +640 480 +640 480 +640 427 +640 427 +500 333 +640 640 +427 640 +480 640 +640 457 +640 427 +480 640 +640 514 +640 471 +640 478 +427 640 +640 422 +640 480 +640 421 +612 612 +640 478 +500 375 +640 522 +640 424 +480 640 +640 480 +640 480 +602 640 +640 428 +640 376 +640 320 +612 612 +640 482 +640 480 +427 640 +640 480 +640 426 +640 480 +640 480 +640 536 +640 426 +640 480 +450 640 +640 427 +324 432 +640 505 +640 480 +500 500 +640 640 +640 425 +480 640 +640 480 +427 640 +640 497 +640 360 +640 480 +640 480 +640 480 +640 427 +500 373 +640 428 +640 426 +500 375 +640 423 +640 616 +640 428 +640 502 +640 488 +414 640 +640 479 +478 640 +620 640 +640 427 +640 360 +640 427 +500 344 +640 480 +640 480 +640 480 +428 640 +444 640 +640 429 +500 375 +422 640 +360 640 +500 332 +640 480 +615 310 +640 427 +640 480 +612 612 +640 425 +427 640 +640 427 +375 500 +426 640 +612 612 +640 640 +500 333 +640 426 +500 375 +640 426 +640 539 +640 480 +640 481 +640 427 +640 603 +640 426 +640 457 +500 375 +640 448 +640 369 +640 480 +500 333 +375 500 +640 480 +427 640 +640 441 +640 301 +332 500 +640 480 +640 426 +640 480 +250 188 +573 640 +500 375 +640 427 +640 327 +640 496 +359 500 +640 427 +640 480 +640 360 +640 530 +640 427 +640 426 +640 498 +480 640 +640 480 +480 640 +500 334 +640 427 +640 406 +480 640 +640 480 +640 469 +640 480 +640 480 +640 433 +640 480 +640 439 +460 345 +640 426 +640 480 +640 360 +640 480 +640 480 +405 640 +640 427 +480 640 +427 640 +640 480 +640 480 +640 425 +480 640 +640 427 +612 612 +640 480 +612 612 +640 429 +640 478 +500 333 +640 480 +640 366 +640 360 +480 640 +480 640 +500 333 +640 480 +640 483 +640 480 +640 480 +640 483 +500 500 +500 375 +640 463 +612 612 +640 480 +500 375 +355 500 +640 472 +640 480 +425 640 +604 640 +640 383 +427 640 +640 427 +640 427 +640 425 +640 410 +640 480 +640 429 +640 480 +640 480 +640 508 +640 426 +640 360 +500 375 +612 612 +370 500 +640 320 +426 640 +640 480 +480 640 +426 640 +480 640 +640 427 +640 426 +612 612 +640 338 +640 425 +640 480 +480 640 +375 500 +640 480 +640 512 +427 640 +500 375 +640 427 +640 428 +640 425 +640 476 +426 640 +480 640 +480 640 +480 640 +494 640 +480 640 +609 640 +640 368 +640 427 +640 433 +640 480 +375 500 +510 510 +640 425 +640 480 +375 500 +640 480 +640 640 +640 424 +640 427 +640 429 +640 480 +480 640 +640 480 +500 375 +640 480 +611 640 +500 332 +640 427 +421 640 +640 480 +640 427 +640 478 +612 612 +612 612 +640 480 +375 500 +640 480 +640 480 +500 270 +640 480 +612 612 +500 250 +500 375 +640 364 +640 480 +640 427 +480 640 +640 427 +640 426 +500 342 +640 427 +500 330 +640 480 +640 426 +640 427 +400 500 +640 479 +296 640 +620 640 +640 480 +480 640 +640 427 +480 640 +640 480 +640 427 +640 480 +640 428 +640 427 +612 612 +640 480 +640 480 +640 480 +400 312 +640 480 +640 427 +426 255 +612 612 +640 428 +640 430 +320 240 +640 425 +640 480 +425 640 +640 428 +640 433 +640 427 +357 500 +640 459 +640 427 +640 480 +640 491 +500 375 +640 427 +510 640 +640 486 +640 480 +640 424 +640 478 +480 640 +428 640 +326 500 +640 480 +500 324 +640 427 +640 640 +640 495 +640 426 +500 375 +426 640 +640 480 +640 514 +640 427 +500 375 +427 640 +640 428 +640 359 +640 480 +640 482 +640 480 +640 387 +424 640 +640 480 +474 640 +612 612 +500 375 +160 120 +640 399 +500 333 +425 640 +640 427 +480 640 +362 500 +640 427 +640 480 +480 640 +480 640 +518 640 +425 640 +500 333 +640 480 +640 480 +427 500 +500 375 +640 435 +500 375 +640 427 +640 512 +640 427 +418 640 +640 434 +500 376 +640 480 +640 426 +500 333 +500 340 +427 640 +640 427 +375 500 +640 427 +640 427 +500 207 +427 640 +640 480 +640 360 +480 640 +640 427 +512 640 +500 333 +480 640 +640 429 +640 532 +640 420 +640 480 +500 437 +383 640 +640 426 +640 480 +480 319 +640 480 +424 640 +427 640 +640 480 +640 480 +426 640 +426 640 +640 447 +640 424 +480 640 +640 427 +640 480 +640 480 +640 426 +640 427 +504 640 +640 480 +640 433 +640 426 +640 427 +500 333 +480 640 +640 478 +640 428 +640 427 +640 427 +500 333 +640 426 +640 432 +500 375 +500 375 +640 480 +344 500 +375 500 +480 640 +500 375 +426 640 +640 167 +500 333 +640 407 +640 424 +640 426 +640 512 +640 427 +640 480 +599 419 +640 427 +640 480 +640 427 +640 480 +640 480 +640 425 +640 480 +640 494 +640 448 +640 480 +426 640 +640 480 +640 480 +454 640 +640 427 +640 480 +640 427 +426 640 +640 427 +640 426 +640 426 +640 426 +640 480 +640 360 +640 427 +640 427 +640 427 +480 640 +640 427 +640 480 +640 366 +500 375 +640 427 +480 640 +640 427 +500 375 +640 427 +640 427 +640 428 +500 375 +640 289 +640 480 +480 640 +427 640 +480 640 +640 480 +640 640 +472 640 +427 640 +612 612 +480 640 +640 427 +640 427 +425 640 +640 426 +640 360 +640 354 +480 640 +640 424 +480 640 +640 392 +640 228 +640 424 +640 480 +640 480 +500 281 +640 480 +640 427 +640 278 +376 500 +375 500 +640 432 +640 357 +425 640 +480 640 +500 337 +500 375 +500 375 +640 480 +640 480 +640 427 +640 427 +333 500 +640 480 +480 640 +640 360 +591 640 +640 360 +640 480 +480 640 +640 480 +640 427 +500 375 +640 480 +427 640 +640 427 +640 640 +500 366 +640 480 +512 640 +359 640 +320 640 +640 360 +480 640 +480 640 +640 619 +640 426 +500 400 +640 427 +640 427 +333 500 +640 424 +480 640 +425 640 +640 361 +452 500 +404 500 +640 640 +425 640 +640 406 +436 291 +640 480 +640 426 +640 427 +425 640 +429 640 +500 375 +640 426 +500 375 +480 640 +640 427 +640 512 +640 426 +640 426 +640 427 +640 480 +324 500 +640 480 +640 428 +640 480 +640 397 +375 500 +640 480 +640 400 +640 360 +640 426 +640 427 +640 427 +640 427 +500 330 +480 640 +640 576 +640 428 +500 331 +640 427 +500 278 +480 640 +640 640 +490 640 +640 383 +612 612 +480 640 +332 500 +640 480 +640 480 +640 427 +478 640 +426 640 +640 507 +480 640 +480 640 +480 640 +640 424 +640 252 +640 411 +640 427 +640 427 +463 640 +640 480 +640 427 +640 429 +331 500 +640 480 +640 427 +500 332 +500 375 +352 288 +500 375 +491 640 +479 640 +612 612 +480 640 +640 427 +403 456 +600 399 +375 500 +640 424 +640 480 +612 612 +640 480 +640 427 +640 482 +462 640 +480 640 +427 640 +640 427 +640 429 +640 425 +640 427 +640 468 +640 427 +640 480 +640 490 +640 480 +640 427 +640 480 +640 640 +640 480 +612 612 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +427 640 +640 427 +538 360 +640 480 +640 426 +500 370 +640 425 +640 480 +640 425 +428 640 +640 480 +640 428 +500 375 +428 640 +640 427 +640 460 +640 480 +512 640 +640 426 +640 427 +640 424 +500 375 +640 516 +640 424 +640 428 +500 332 +640 427 +461 307 +640 426 +640 379 +640 480 +640 420 +640 480 +480 640 +480 640 +640 638 +640 259 +640 480 +426 640 +640 427 +640 480 +640 480 +640 427 +640 426 +375 500 +640 427 +640 421 +426 640 +640 424 +640 426 +640 427 +480 640 +375 500 +640 429 +640 583 +640 480 +500 375 +640 640 +426 640 +640 480 +284 640 +240 166 +640 428 +640 426 +640 480 +640 596 +640 425 +640 640 +640 427 +640 408 +640 360 +500 375 +427 640 +480 640 +640 480 +640 423 +640 428 +640 360 +640 585 +640 426 +640 425 +354 500 +640 480 +640 424 +640 435 +640 480 +500 375 +640 427 +640 480 +427 640 +425 640 +375 500 +640 450 +640 426 +640 640 +480 640 +360 640 +640 426 +640 428 +640 427 +427 640 +640 480 +500 375 +640 426 +600 375 +640 331 +640 434 +640 428 +427 640 +500 335 +640 426 +640 480 +640 392 +640 427 +640 480 +640 640 +612 612 +640 360 +375 500 +612 612 +640 480 +640 480 +640 480 +636 479 +640 433 +640 480 +397 464 +480 640 +640 426 +640 429 +640 480 +427 640 +640 428 +444 640 +640 480 +640 359 +480 640 +640 425 +500 375 +640 378 +640 428 +427 640 +640 334 +640 428 +640 426 +640 480 +640 495 +640 473 +640 384 +427 640 +640 405 +478 640 +640 425 +480 640 +640 426 +500 366 +640 426 +640 427 +480 640 +500 332 +640 480 +640 399 +640 427 +640 424 +640 480 +640 502 +640 502 +640 480 +640 480 +640 451 +640 426 +375 500 +640 427 +640 423 +422 640 +500 335 +640 480 +640 480 +427 640 +640 404 +640 427 +640 427 +640 427 +640 480 +640 480 +480 640 +640 426 +640 393 +457 640 +640 426 +480 640 +500 500 +640 427 +640 480 +500 375 +640 480 +500 375 +640 426 +640 480 +500 375 +351 500 +379 500 +640 428 +640 427 +640 419 +500 454 +363 640 +640 427 +640 427 +420 640 +640 427 +426 640 +500 375 +427 640 +640 427 +640 448 +443 640 +512 640 +640 427 +640 480 +640 515 +640 432 +640 428 +640 480 +375 500 +640 338 +500 500 +515 640 +640 480 +640 449 +640 427 +640 532 +500 640 +640 374 +640 427 +640 614 +640 480 +640 480 +480 640 +640 480 +427 640 +640 451 +640 424 +640 480 +640 426 +640 425 +640 480 +458 640 +480 640 +640 427 +480 640 +288 352 +640 427 +640 463 +640 427 +640 480 +640 425 +393 640 +480 640 +640 427 +425 640 +640 427 +512 640 +640 425 +640 480 +640 256 +640 478 +500 375 +640 559 +612 612 +444 640 +640 427 +480 640 +640 360 +640 488 +640 452 +640 426 +427 640 +487 291 +439 640 +640 515 +640 480 +640 480 +640 480 +612 612 +478 640 +640 480 +480 640 +633 640 +500 333 +640 425 +640 480 +480 640 +640 480 +640 480 +312 640 +640 479 +640 427 +427 640 +640 480 +500 375 +640 480 +640 427 +640 480 +480 640 +640 474 +640 427 +640 426 +386 640 +640 383 +450 640 +500 332 +640 479 +480 640 +640 480 +449 640 +640 480 +640 388 +640 429 +640 480 +375 500 +640 480 +640 480 +640 427 +640 425 +640 480 +640 383 +640 427 +640 425 +612 612 +640 480 +640 616 +500 375 +400 600 +500 454 +640 369 +445 640 +640 426 +486 640 +640 447 +640 480 +480 640 +640 480 +613 640 +640 427 +467 640 +640 480 +640 426 +640 364 +640 424 +399 600 +640 480 +500 333 +640 427 +640 426 +480 640 +480 640 +389 640 +640 480 +640 480 +640 426 +375 500 +640 480 +640 480 +640 480 +640 480 +640 427 +640 426 +640 427 +640 426 +640 427 +640 426 +640 480 +640 429 +640 480 +428 640 +640 443 +640 426 +640 501 +640 339 +640 640 +640 480 +640 429 +519 640 +640 480 +375 500 +640 427 +640 426 +640 480 +640 636 +640 426 +500 375 +500 375 +640 480 +500 375 +640 426 +640 428 +640 436 +612 612 +640 471 +640 423 +640 429 +640 425 +425 640 +640 480 +640 424 +640 504 +640 480 +480 640 +640 480 +640 428 +640 480 +640 639 +640 480 +480 640 +500 375 +640 360 +333 500 +640 411 +640 481 +640 393 +430 640 +640 427 +500 500 +640 427 +640 543 +640 480 +640 427 +640 480 +500 284 +640 480 +640 438 +640 480 +612 612 +612 612 +427 640 +480 640 +640 480 +480 640 +426 640 +500 333 +640 427 +640 480 +500 375 +640 480 +640 482 +640 427 +500 375 +640 427 +640 427 +640 360 +640 478 +640 427 +640 480 +640 480 +500 375 +500 333 +500 375 +461 640 +640 480 +640 427 +640 426 +640 480 +640 480 +640 480 +640 490 +500 308 +640 359 +640 406 +500 334 +480 640 +640 478 +640 428 +500 404 +640 427 +612 612 +480 640 +640 480 +640 480 +640 427 +640 640 +640 427 +640 427 +640 473 +640 480 +640 480 +640 480 +501 640 +640 640 +640 424 +640 521 +480 640 +480 640 +640 428 +480 640 +640 480 +640 428 +640 480 +640 383 +479 640 +640 425 +640 427 +640 480 +640 480 +640 480 +640 505 +640 480 +500 333 +640 480 +640 480 +500 375 +640 480 +640 449 +640 480 +375 500 +640 428 +500 375 +500 333 +640 480 +640 424 +640 428 +640 427 +640 427 +612 612 +640 543 +640 446 +640 505 +500 375 +480 640 +640 400 +640 427 +640 480 +640 426 +479 640 +640 480 +640 320 +428 640 +640 448 +480 640 +612 612 +640 480 +640 424 +640 477 +427 640 +341 500 +480 640 +428 640 +640 427 +427 640 +640 427 +640 480 +640 480 +640 427 +640 428 +480 640 +640 427 +640 480 +640 426 +425 640 +640 480 +640 480 +640 462 +500 375 +594 555 +640 427 +640 480 +640 480 +640 447 +612 612 +640 480 +640 480 +640 427 +640 480 +500 375 +640 454 +427 640 +640 426 +640 480 +640 640 +287 432 +640 427 +640 640 +640 427 +640 426 +500 400 +640 427 +640 480 +640 427 +500 334 +612 612 +640 480 +640 480 +500 375 +640 480 +427 640 +500 333 +612 612 +640 429 +640 480 +480 640 +640 427 +640 480 +640 427 +500 375 +640 480 +375 500 +500 375 +551 640 +640 427 +640 429 +640 428 +640 360 +640 478 +640 480 +308 500 +640 478 +640 388 +640 480 +640 426 +640 423 +500 375 +640 429 +427 640 +640 389 +640 480 +640 427 +640 333 +640 428 +500 346 +640 480 +640 425 +640 438 +640 480 +640 480 +640 428 +640 481 +483 640 +427 640 +640 428 +640 426 +640 480 +480 640 +640 427 +640 480 +320 240 +640 425 +500 333 +640 506 +640 428 +640 425 +480 360 +640 427 +408 640 +612 612 +480 640 +640 359 +491 280 +640 480 +640 637 +480 640 +640 424 +640 480 +640 481 +640 480 +640 480 +640 480 +640 480 +480 640 +439 640 +640 480 +640 428 +517 640 +640 427 +640 457 +500 375 +640 484 +480 640 +640 480 +640 480 +640 418 +640 601 +600 400 +640 427 +640 480 +480 640 +640 480 +500 375 +426 640 +640 480 +639 640 +480 640 +480 640 +640 314 +480 640 +500 361 +640 473 +500 377 +612 612 +640 403 +640 426 +512 640 +640 640 +640 429 +640 480 +640 428 +640 480 +640 480 +640 480 +480 640 +500 500 +500 333 +640 428 +640 452 +480 640 +640 479 +518 640 +500 500 +640 427 +479 640 +640 481 +640 480 +612 612 +484 480 +319 640 +480 640 +480 640 +629 640 +478 640 +381 500 +640 427 +640 480 +640 480 +640 427 +640 463 +428 640 +427 640 +480 640 +640 480 +500 375 +640 427 +640 419 +640 480 +640 313 +480 640 +445 640 +640 480 +640 427 +375 500 +640 480 +640 512 +480 640 +640 427 +640 480 +640 427 +640 427 +640 536 +375 500 +640 428 +640 480 +640 360 +640 425 +640 480 +640 427 +640 427 +640 427 +350 500 +480 640 +500 374 +640 478 +640 480 +640 429 +640 478 +640 467 +500 332 +480 640 +500 375 +640 478 +427 640 +640 427 +427 640 +375 500 +640 424 +640 480 +428 640 +640 480 +640 613 +480 640 +640 444 +640 383 +640 480 +640 427 +640 480 +640 495 +640 426 +640 415 +640 480 +640 427 +480 640 +640 449 +640 426 +640 264 +640 427 +640 427 +509 640 +640 427 +640 480 +494 640 +480 640 +634 640 +640 427 +640 480 +640 516 +640 480 +640 428 +640 486 +640 428 +640 480 +640 401 +500 375 +640 480 +640 426 +500 334 +640 480 +620 640 +640 480 +314 500 +360 640 +640 427 +500 376 +500 333 +640 480 +640 480 +426 640 +640 414 +640 427 +480 640 +640 480 +640 480 +640 480 +500 375 +640 427 +640 480 +612 612 +640 480 +427 640 +640 425 +640 427 +640 464 +640 480 +640 427 +640 427 +612 612 +640 481 +640 480 +640 479 +640 425 +640 427 +640 266 +427 640 +640 305 +480 640 +640 427 +427 640 +455 640 +640 425 +480 640 +640 480 +375 500 +428 640 +480 640 +640 355 +375 500 +640 427 +640 204 +640 640 +640 480 +640 427 +640 457 +427 640 +640 425 +500 375 +640 426 +640 427 +640 480 +571 640 +640 480 +640 628 +480 640 +427 640 +640 425 +427 640 +500 375 +426 640 +500 332 +640 480 +640 427 +640 427 +640 427 +332 500 +457 640 +640 429 +640 427 +427 640 +496 500 +640 383 +640 422 +640 480 +640 427 +640 347 +393 500 +480 640 +640 637 +640 424 +500 375 +640 480 +640 480 +640 427 +640 425 +640 480 +640 427 +640 480 +640 427 +640 432 +640 480 +640 428 +427 640 +500 375 +640 480 +640 425 +640 465 +640 480 +640 324 +640 480 +640 427 +640 462 +640 426 +640 360 +640 427 +640 426 +424 640 +640 428 +500 334 +640 425 +640 213 +640 480 +333 500 +640 359 +640 480 +640 427 +612 612 +480 640 +480 640 +640 480 +640 427 +500 381 +500 342 +640 449 +640 480 +640 430 +640 480 +640 427 +640 480 +427 640 +427 640 +640 427 +640 480 +640 399 +640 457 +640 480 +640 480 +640 427 +640 337 +640 427 +426 640 +640 428 +640 363 +640 480 +640 430 +640 481 +640 429 +640 480 +640 433 +640 428 +478 640 +640 427 +480 640 +612 612 +480 360 +640 480 +375 500 +640 427 +640 426 +640 266 +640 426 +498 640 +640 480 +480 640 +640 427 +640 427 +640 480 +480 640 +612 612 +640 624 +640 427 +640 398 +640 426 +640 480 +360 640 +640 478 +640 427 +640 427 +500 375 +640 526 +640 362 +640 480 +640 424 +640 480 +426 640 +480 640 +640 426 +640 426 +640 461 +640 480 +375 500 +640 426 +640 426 +640 425 +480 640 +640 427 +640 430 +640 478 +640 480 +350 500 +375 500 +640 427 +457 640 +640 480 +375 500 +640 640 +640 584 +640 480 +640 480 +500 349 +612 612 +500 375 +640 428 +640 480 +500 333 +500 400 +640 513 +640 427 +640 427 +480 640 +640 478 +457 640 +640 427 +500 281 +640 368 +640 480 +640 427 +640 427 +500 406 +500 375 +360 270 +640 422 +480 640 +640 427 +640 561 +640 478 +640 427 +640 480 +500 333 +640 427 +640 427 +640 480 +640 427 +640 485 +400 640 +427 640 +640 480 +428 640 +640 273 +600 402 +480 640 +640 518 +640 427 +640 480 +640 427 +640 427 +640 427 +640 480 +640 640 +640 426 +354 500 +640 480 +640 415 +480 640 +640 480 +640 418 +640 428 +640 480 +640 425 +335 500 +640 480 +640 636 +640 429 +427 640 +640 480 +427 640 +640 427 +612 612 +640 480 +640 480 +500 392 +640 430 +256 448 +640 327 +640 512 +480 640 +640 446 +640 480 +427 640 +500 457 +640 427 +640 427 +500 375 +640 426 +480 640 +640 640 +640 457 +640 482 +375 500 +480 640 +640 476 +640 480 +640 360 +480 640 +427 640 +640 480 +640 427 +640 427 +640 480 +375 500 +500 375 +426 640 +480 640 +640 321 +640 489 +425 640 +182 273 +640 427 +640 427 +640 436 +640 457 +640 426 +561 640 +425 640 +640 427 +640 427 +640 427 +640 451 +427 640 +640 480 +640 480 +612 612 +640 427 +425 640 +640 427 +640 480 +426 640 +375 500 +500 375 +640 426 +640 379 +427 640 +480 640 +640 425 +640 426 +500 493 +640 341 +640 428 +425 640 +640 480 +640 574 +640 480 +480 640 +640 427 +640 480 +640 478 +640 421 +400 640 +640 425 +424 640 +480 640 +640 426 +640 541 +424 640 +640 480 +640 478 +640 427 +426 640 +640 480 +427 640 +500 375 +500 375 +500 326 +468 640 +430 640 +640 480 +640 640 +640 480 +640 361 +428 640 +500 333 +480 640 +640 480 +640 429 +506 640 +640 391 +328 500 +612 612 +426 640 +640 565 +640 480 +640 455 +640 371 +640 426 +640 427 +454 640 +421 640 +640 427 +457 640 +640 321 +640 442 +640 424 +427 640 +640 427 +494 640 +400 239 +640 426 +640 480 +640 480 +480 640 +640 480 +480 640 +471 640 +480 640 +640 497 +640 480 +640 480 +424 640 +640 426 +640 425 +612 612 +500 250 +640 416 +640 480 +640 427 +427 640 +427 640 +640 298 +640 426 +480 640 +640 361 +640 480 +640 360 +640 427 +612 612 +640 426 +480 640 +640 424 +640 411 +640 480 +640 480 +640 426 +640 533 +640 480 +480 640 +640 427 +426 640 +319 235 +640 424 +480 640 +640 353 +500 348 +640 427 +426 640 +375 500 +640 480 +640 426 +640 466 +640 480 +480 640 +640 480 +640 427 +640 480 +480 640 +485 404 +524 640 +500 375 +640 480 +480 640 +640 480 +640 429 +480 640 +640 426 +640 480 +640 359 +640 444 +640 278 +640 469 +640 480 +640 425 +423 640 +612 612 +425 640 +426 640 +640 423 +640 480 +480 640 +640 427 +640 426 +600 450 +640 480 +640 427 +640 427 +640 480 +640 427 +640 427 +640 480 +640 428 +640 480 +640 480 +500 308 +640 478 +640 480 +640 427 +640 427 +640 427 +480 640 +480 640 +640 513 +500 336 +417 640 +375 500 +640 426 +640 454 +375 500 +640 427 +640 318 +640 427 +640 427 +375 500 +640 480 +640 358 +640 427 +640 426 +469 640 +640 427 +480 640 +480 640 +640 480 +640 426 +500 375 +640 427 +480 640 +640 427 +640 360 +500 375 +640 427 +640 480 +640 426 +500 333 +500 375 +480 640 +640 480 +640 480 +473 640 +640 566 +640 476 +427 640 +640 425 +640 490 +480 640 +359 640 +640 480 +500 375 +640 425 +640 427 +444 640 +640 427 +640 480 +640 480 +640 480 +332 500 +640 408 +480 640 +640 480 +640 640 +480 640 +640 480 +640 640 +500 372 +640 428 +607 640 +640 426 +480 640 +640 427 +640 458 +640 426 +500 375 +640 424 +612 612 +640 425 +640 480 +500 370 +640 480 +640 423 +640 427 +640 425 +640 428 +640 428 +640 427 +640 626 +500 267 +640 480 +640 480 +640 478 +332 500 +612 612 +640 428 +640 480 +640 453 +640 480 +640 223 +640 478 +640 427 +640 427 +640 480 +640 422 +640 361 +640 480 +427 640 +486 640 +427 640 +640 427 +612 612 +426 640 +640 427 +411 640 +500 375 +640 427 +640 360 +640 428 +640 428 +640 425 +471 640 +462 640 +640 480 +640 451 +640 427 +640 427 +320 240 +640 512 +427 640 +533 640 +640 427 +480 640 +640 426 +640 425 +427 640 +500 375 +640 425 +640 480 +640 438 +640 425 +498 438 +640 427 +640 423 +640 360 +640 480 +640 480 +500 375 +640 426 +480 640 +640 426 +500 400 +500 479 +612 612 +640 570 +480 640 +640 480 +640 427 +423 640 +640 480 +427 640 +640 480 +640 424 +640 426 +427 640 +640 480 +480 640 +640 480 +640 640 +480 640 +427 640 +640 427 +312 500 +640 480 +640 428 +640 427 +500 375 +638 640 +428 640 +375 500 +640 480 +640 425 +640 420 +505 640 +375 500 +500 296 +480 640 +640 480 +480 640 +612 612 +640 428 +640 471 +640 480 +640 463 +640 427 +640 425 +640 360 +640 360 +427 640 +640 640 +478 640 +640 426 +480 640 +500 375 +480 640 +425 640 +640 640 +640 564 +640 428 +500 375 +640 428 +640 427 +640 480 +640 512 +640 425 +640 452 +640 427 +640 491 +640 483 +480 640 +640 480 +427 640 +640 480 +640 425 +640 480 +427 640 +640 640 +640 428 +425 640 +640 480 +427 640 +429 640 +532 640 +480 640 +640 501 +640 480 +361 640 +450 372 +640 427 +640 480 +640 480 +640 480 +640 441 +480 640 +500 381 +428 640 +640 443 +640 482 +640 427 +640 512 +500 332 +640 480 +403 640 +640 426 +640 453 +480 640 +640 424 +410 500 +640 477 +480 640 +640 426 +500 372 +500 375 +640 360 +485 640 +640 480 +500 375 +640 608 +640 133 +640 428 +640 480 +520 373 +640 427 +480 640 +332 640 +640 427 +612 612 +640 480 +500 429 +640 480 +640 428 +500 375 +640 539 +640 469 +427 640 +640 427 +640 428 +427 640 +480 640 +640 427 +640 480 +640 426 +480 640 +640 480 +640 427 +640 427 +640 480 +640 428 +640 457 +640 480 +640 427 +534 640 +427 640 +640 446 +480 640 +640 425 +427 640 +480 640 +640 361 +500 375 +640 480 +640 480 +480 640 +640 431 +640 480 +426 640 +640 428 +480 640 +640 424 +500 375 +640 427 +640 480 +640 480 +500 375 +640 427 +640 470 +366 500 +333 500 +640 427 +500 375 +320 640 +640 426 +640 509 +612 612 +640 478 +640 426 +640 640 +640 480 +640 320 +448 600 +500 338 +427 640 +640 480 +426 640 +640 481 +640 480 +427 640 +612 612 +480 640 +480 640 +480 640 +425 640 +640 480 +640 480 +640 427 +640 427 +640 427 +640 480 +640 480 +640 480 +640 557 +480 640 +640 425 +640 427 +482 640 +500 375 +568 640 +640 424 +480 319 +640 480 +640 480 +640 480 +640 427 +640 415 +500 375 +500 328 +640 425 +640 431 +319 500 +612 612 +640 640 +640 640 +375 500 +480 640 +640 442 +333 500 +640 429 +640 428 +640 427 +330 500 +500 375 +640 480 +640 512 +612 612 +500 375 +640 427 +640 515 +441 640 +640 480 +493 600 +640 478 +331 500 +500 361 +640 428 +500 375 +640 428 +640 429 +640 427 +640 425 +480 640 +480 640 +480 640 +480 640 +640 426 +640 480 +478 640 +427 640 +375 500 +640 427 +640 475 +500 375 +640 419 +513 640 +480 640 +640 480 +640 428 +348 500 +640 480 +640 480 +640 480 +640 427 +420 500 +640 427 +238 640 +480 640 +640 480 +480 640 +483 640 +640 480 +640 480 +330 640 +485 640 +640 480 +640 429 +640 426 +640 480 +612 612 +640 394 +427 640 +640 457 +333 500 +428 640 +640 426 +640 480 +375 500 +640 446 +640 512 +427 640 +640 428 +640 328 +640 480 +612 612 +640 427 +471 450 +640 480 +480 640 +640 480 +640 480 +640 427 +640 448 +500 409 +640 432 +640 400 +640 427 +640 426 +640 480 +640 480 +640 480 +640 480 +480 640 +640 480 +500 333 +500 375 +427 640 +640 360 +427 640 +500 375 +640 427 +640 460 +640 360 +640 480 +640 480 +640 591 +427 640 +640 480 +640 424 +612 612 +640 431 +640 478 +427 640 +640 427 +640 480 +640 480 +638 640 +479 640 +640 480 +640 480 +640 456 +640 480 +427 640 +640 426 +500 335 +480 640 +640 396 +512 512 +640 427 +480 640 +640 424 +500 375 +500 333 +424 640 +480 640 +640 473 +640 482 +281 486 +480 640 +424 640 +426 640 +640 427 +640 436 +640 480 +500 375 +640 447 +640 427 +640 448 +640 427 +640 427 +640 480 +600 359 +640 148 +640 434 +640 480 +612 612 +500 500 +500 333 +640 426 +426 640 +640 480 +640 428 +640 494 +640 426 +425 640 +640 480 +640 456 +500 375 +427 640 +640 427 +640 480 +640 363 +542 640 +457 640 +640 360 +480 640 +640 478 +500 375 +640 424 +640 488 +480 640 +640 427 +500 375 +640 243 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +532 640 +640 318 +640 480 +640 427 +640 426 +300 225 +480 640 +640 480 +640 429 +640 379 +424 640 +359 640 +640 478 +427 640 +480 640 +640 425 +640 424 +640 480 +332 500 +640 480 +480 640 +640 480 +480 640 +640 427 +426 640 +640 425 +640 479 +640 480 +640 480 +640 428 +640 428 +380 500 +640 480 +640 383 +640 480 +640 427 +500 375 +480 640 +640 427 +500 400 +640 480 +640 427 +640 467 +640 480 +500 375 +480 640 +640 429 +500 375 +640 390 +480 640 +640 480 +600 450 +612 612 +480 640 +468 640 +640 427 +640 480 +640 427 +500 375 +640 480 +640 480 +640 426 +640 480 +640 427 +640 427 +640 480 +500 333 +640 427 +427 640 +640 480 +640 480 +604 640 +478 640 +500 376 +640 441 +640 403 +640 480 +640 404 +427 640 +640 394 +640 427 +640 480 +640 640 +640 480 +611 640 +612 612 +478 640 +640 480 +480 640 +612 612 +640 351 +640 513 +640 521 +640 360 +427 640 +500 375 +640 540 +480 640 +500 375 +423 640 +640 448 +500 375 +640 640 +500 303 +640 426 +640 384 +640 480 +640 429 +640 480 +424 640 +640 480 +640 480 +640 431 +640 480 +640 480 +640 426 +640 427 +640 480 +640 427 +640 440 +480 640 +500 352 +640 428 +640 481 +500 500 +640 480 +640 480 +511 640 +640 480 +640 425 +640 353 +640 424 +640 427 +588 640 +640 426 +640 392 +334 500 +496 500 +640 480 +480 640 +640 480 +443 640 +640 439 +640 640 +480 640 +305 500 +640 428 +640 480 +640 426 +640 480 +427 640 +640 427 +426 640 +640 426 +612 612 +480 640 +640 426 +640 457 +640 480 +640 580 +640 360 +640 428 +640 427 +640 480 +500 479 +434 640 +640 425 +531 640 +640 480 +640 426 +640 480 +640 391 +640 426 +640 480 +640 472 +640 376 +640 427 +640 480 +512 640 +500 389 +640 427 +640 427 +500 375 +500 375 +640 425 +640 480 +640 458 +640 478 +640 427 +480 640 +640 480 +640 427 +427 640 +640 425 +510 640 +487 640 +480 640 +640 480 +332 500 +427 640 +480 640 +640 451 +480 640 +375 500 +424 640 +640 480 +640 427 +474 334 +640 480 +480 640 +640 336 +640 480 +640 428 +426 640 +640 480 +640 428 +475 640 +640 480 +640 480 +640 426 +426 640 +640 427 +640 427 +640 387 +428 640 +500 407 +640 427 +363 249 +640 509 +428 640 +640 427 +500 375 +640 468 +640 427 +426 640 +640 480 +500 339 +500 375 +427 640 +500 333 +469 640 +640 393 +640 334 +640 491 +640 468 +500 332 +500 325 +640 480 +640 423 +640 480 +500 333 +640 425 +511 640 +640 425 +640 440 +428 640 +640 480 +640 428 +640 480 +640 426 +640 480 +640 480 +640 427 +289 640 +640 427 +640 480 +555 640 +640 480 +640 460 +640 401 +426 640 +640 480 +640 426 +428 640 +640 361 +612 612 +640 467 +640 427 +640 480 +640 480 +640 373 +640 428 +640 427 +640 425 +428 640 +640 427 +333 500 +640 427 +640 426 +514 640 +640 427 +640 428 +640 428 +640 426 +640 426 +335 500 +640 480 +500 375 +480 640 +640 427 +640 480 +640 480 +640 480 +640 480 +640 426 +640 480 +640 480 +583 640 +480 640 +640 426 +640 359 +640 480 +426 640 +480 640 +500 375 +640 486 +640 427 +375 500 +640 426 +640 480 +640 480 +640 486 +640 467 +640 459 +640 428 +427 640 +500 333 +640 427 +640 480 +640 484 +500 375 +640 454 +640 480 +640 480 +513 640 +640 427 +640 480 +375 500 +500 375 +500 333 +500 281 +640 427 +640 480 +480 640 +640 640 +640 426 +480 640 +640 480 +640 427 +480 640 +640 480 +640 427 +640 426 +640 470 +640 427 +500 335 +500 333 +640 427 +433 640 +640 428 +360 288 +640 427 +640 424 +480 640 +640 426 +640 426 +500 375 +640 426 +640 428 +640 436 +640 426 +480 640 +373 500 +612 612 +500 313 +640 480 +640 426 +640 426 +640 486 +640 480 +640 480 +640 426 +500 375 +640 427 +480 640 +640 427 +480 640 +640 478 +640 428 +640 427 +640 425 +500 375 +640 480 +500 375 +640 426 +385 640 +500 385 +495 640 +640 426 +640 480 +640 480 +640 457 +640 480 +640 480 +640 480 +640 426 +375 500 +269 448 +359 500 +500 375 +640 640 +640 426 +640 360 +500 333 +500 375 +640 535 +375 500 +640 429 +640 427 +640 480 +428 640 +640 480 +640 424 +424 640 +640 400 +417 640 +640 428 +409 640 +378 640 +480 640 +612 612 +640 541 +407 640 +640 480 +640 480 +640 640 +480 640 +640 447 +640 424 +640 480 +640 480 +500 331 +640 478 +427 640 +333 500 +640 427 +500 335 +640 480 +640 480 +427 640 +640 427 +536 640 +500 375 +640 430 +500 375 +640 438 +640 480 +512 640 +382 471 +640 430 +640 478 +640 508 +500 375 +640 424 +640 480 +640 480 +428 640 +640 480 +640 427 +640 480 +335 500 +640 364 +612 612 +640 427 +375 500 +640 480 +640 360 +640 480 +640 360 +500 334 +429 640 +640 480 +600 600 +640 479 +640 513 +480 640 +640 428 +640 460 +640 480 +640 480 +640 456 +640 480 +640 467 +640 427 +640 427 +640 480 +640 480 +480 640 +640 512 +640 480 +640 426 +546 640 +640 425 +640 360 +333 500 +640 480 +481 640 +640 427 +640 427 +640 480 +640 480 +640 336 +445 640 +640 427 +640 426 +640 198 +640 449 +640 425 +640 480 +640 480 +480 640 +640 427 +427 640 +599 391 +640 425 +640 480 +640 283 +500 375 +480 640 +640 406 +424 640 +640 421 +640 480 +640 426 +640 480 +640 480 +640 427 +640 480 +640 480 +425 640 +640 427 +640 480 +635 640 +500 335 +427 640 +640 480 +342 500 +480 640 +640 480 +333 500 +640 480 +640 480 +640 480 +480 640 +500 367 +427 640 +640 425 +480 640 +640 406 +640 519 +640 480 +640 425 +500 375 +640 318 +640 360 +638 640 +640 452 +640 480 +500 375 +500 333 +333 500 +640 427 +640 427 +640 427 +640 426 +640 481 +640 480 +536 640 +640 482 +640 426 +640 427 +427 640 +640 486 +640 480 +640 427 +640 427 +640 480 +480 640 +640 360 +480 640 +640 392 +640 427 +423 640 +640 427 +640 457 +640 360 +500 357 +640 480 +640 480 +640 480 +640 452 +480 640 +640 426 +640 427 +640 480 +640 425 +487 640 +640 428 +640 427 +640 426 +640 515 +500 375 +480 640 +640 640 +640 480 +480 640 +640 403 +640 243 +383 640 +480 640 +640 561 +500 410 +640 640 +640 480 +640 480 +612 612 +640 427 +640 480 +640 480 +537 640 +640 480 +500 333 +583 437 +500 319 +366 640 +640 480 +640 424 +640 426 +640 424 +500 321 +640 432 +640 480 +640 480 +640 427 +383 640 +427 640 +640 427 +516 640 +640 487 +640 398 +500 375 +640 478 +640 360 +612 612 +426 640 +640 480 +640 480 +640 427 +640 427 +427 640 +640 425 +500 333 +640 427 +640 640 +640 495 +640 480 +478 640 +640 480 +640 480 +500 375 +640 480 +640 424 +640 424 +500 408 +640 556 +480 640 +640 429 +480 640 +640 480 +640 478 +640 594 +640 427 +640 531 +640 429 +640 413 +640 478 +480 640 +480 640 +640 425 +640 485 +478 640 +478 640 +640 480 +640 453 +640 426 +426 640 +640 480 +640 425 +640 474 +640 480 +640 480 +640 480 +600 401 +640 440 +640 480 +640 480 +426 640 +480 640 +480 640 +640 427 +479 640 +427 640 +640 480 +640 480 +313 500 +500 375 +500 375 +640 425 +480 640 +640 480 +333 500 +640 433 +480 640 +500 371 +640 428 +640 480 +640 480 +640 480 +640 401 +640 480 +640 480 +640 640 +640 480 +640 429 +612 612 +640 427 +640 480 +640 427 +492 500 +640 480 +320 240 +470 350 +640 428 +640 512 +640 427 +640 403 +640 480 +640 480 +640 425 +640 427 +500 325 +640 480 +640 427 +640 425 +500 375 +500 332 +640 427 +500 375 +640 521 +429 640 +550 640 +640 426 +640 480 +640 476 +427 640 +640 480 +521 640 +480 640 +640 359 +640 427 +500 500 +640 427 +427 640 +640 425 +500 375 +500 334 +640 478 +500 281 +640 428 +640 426 +640 440 +640 480 +640 480 +640 426 +640 427 +640 480 +640 427 +640 480 +640 427 +375 500 +500 375 +640 427 +457 640 +640 480 +640 480 +640 480 +500 375 +640 480 +640 480 +383 500 +427 640 +640 427 +640 424 +427 640 +425 500 +427 640 +478 640 +640 427 +640 480 +612 612 +640 480 +640 427 +640 480 +640 420 +500 375 +640 214 +612 612 +375 500 +640 482 +640 427 +640 427 +640 466 +480 640 +640 480 +425 640 +480 640 +375 500 +640 480 +500 333 +640 480 +640 480 +640 438 +640 427 +640 394 +480 360 +640 431 +640 480 +456 640 +500 375 +640 480 +427 640 +559 640 +500 375 +640 478 +640 427 +640 480 +640 359 +640 480 +640 429 +480 640 +333 500 +640 428 +640 424 +640 428 +640 480 +640 512 +640 426 +640 425 +500 375 +640 480 +640 427 +463 640 +640 524 +640 427 +640 427 +640 426 +640 480 +612 612 +640 425 +480 640 +640 480 +640 480 +640 480 +640 430 +640 480 +640 480 +500 357 +640 480 +640 366 +375 500 +500 333 +480 640 +480 640 +640 424 +640 426 +640 210 +500 375 +640 427 +640 480 +640 480 +426 640 +427 640 +640 480 +480 640 +640 480 +640 427 +480 640 +640 480 +375 500 +425 640 +480 640 +640 427 +427 640 +640 480 +480 640 +640 480 +480 640 +480 640 +334 500 +640 506 +428 640 +640 426 +569 640 +640 431 +612 612 +640 480 +427 640 +375 500 +480 640 +640 640 +500 375 +640 427 +640 527 +640 426 +640 480 +640 480 +640 619 +640 427 +335 500 +640 427 +640 427 +640 500 +640 427 +640 478 +500 333 +640 427 +428 640 +640 480 +640 478 +500 500 +424 640 +640 444 +428 640 +640 480 +431 640 +640 369 +612 612 +427 640 +640 480 +640 428 +422 640 +640 424 +480 640 +640 427 +427 640 +425 640 +480 640 +640 480 +640 427 +640 453 +427 640 +640 480 +640 424 +640 480 +640 427 +640 427 +375 500 +640 428 +640 480 +640 480 +640 427 +640 426 +640 480 +640 480 +640 427 +640 428 +640 480 +500 375 +480 640 +640 480 +480 640 +500 324 +480 640 +640 426 +640 480 +640 425 +500 334 +328 500 +640 480 +640 478 +364 640 +640 427 +640 480 +640 426 +640 427 +640 640 +640 480 +457 640 +640 480 +640 425 +500 480 +640 427 +640 480 +640 360 +640 480 +480 640 +375 500 +640 424 +640 471 +640 480 +640 480 +480 640 +500 375 +640 480 +640 480 +640 427 +426 640 +428 640 +640 640 +640 421 +640 427 +640 429 +640 480 +640 480 +427 640 +640 428 +640 427 +640 480 +640 360 +640 480 +500 333 +640 428 +640 566 +480 640 +640 427 +468 640 +612 612 +500 333 +500 375 +640 480 +640 455 +640 483 +640 427 +640 480 +640 424 +640 383 +640 480 +640 427 +640 480 +480 640 +640 480 +500 237 +640 480 +640 491 +427 640 +326 500 +640 361 +640 512 +612 612 +500 333 +640 480 +427 640 +426 640 +640 485 +640 427 +640 480 +640 480 +640 480 +640 511 +640 480 +480 640 +640 523 +640 454 +640 360 +500 375 +500 375 +500 414 +500 375 +613 640 +640 420 +480 640 +640 480 +640 427 +640 442 +512 640 +640 426 +640 360 +500 375 +500 375 +640 427 +640 424 +640 428 +640 425 +640 427 +640 480 +640 360 +640 428 +640 426 +640 426 +427 640 +640 478 +640 640 +640 480 +640 426 +640 428 +500 322 +640 480 +640 428 +333 500 +425 640 +640 480 +640 513 +500 376 +480 640 +480 640 +500 333 +545 640 +425 640 +640 427 +479 640 +455 640 +405 640 +640 565 +640 480 +640 427 +640 480 +640 480 +640 454 +640 293 +640 476 +640 480 +640 480 +399 600 +640 425 +640 427 +640 427 +427 640 +500 333 +640 480 +640 427 +612 612 +640 422 +500 333 +640 463 +500 357 +640 480 +640 427 +640 427 +612 612 +428 640 +640 480 +640 426 +640 480 +640 480 +426 640 +640 480 +640 480 +480 640 +424 640 +480 640 +480 640 +640 426 +640 480 +640 480 +640 427 +640 480 +640 480 +480 640 +640 480 +424 640 +640 427 +640 427 +612 612 +640 480 +480 640 +640 480 +640 424 +640 514 +640 379 +640 428 +500 375 +640 427 +640 427 +500 375 +500 333 +640 480 +299 640 +640 425 +640 480 +640 510 +500 375 +426 640 +640 480 +640 480 +522 640 +640 480 +480 640 +640 427 +640 427 +500 344 +640 428 +640 480 +500 375 +352 288 +640 424 +427 640 +640 480 +479 640 +640 428 +640 427 +640 478 +612 612 +480 300 +640 427 +480 640 +640 237 +640 427 +640 461 +640 622 +480 640 +500 375 +640 502 +640 378 +640 480 +500 409 +640 224 +640 478 +640 394 +424 640 +640 480 +333 500 +640 395 +640 416 +479 640 +500 375 +640 640 +640 480 +640 403 +640 416 +480 640 +386 640 +332 500 +457 640 +640 480 +640 426 +640 427 +640 451 +640 480 +640 427 +640 480 +640 427 +478 640 +480 640 +640 427 +640 428 +640 480 +640 425 +640 480 +425 640 +640 427 +640 424 +640 426 +640 424 +640 284 +427 640 +640 427 +500 375 +427 640 +480 640 +640 427 +640 463 +640 446 +480 640 +640 317 +425 640 +594 640 +427 640 +480 640 +480 640 +640 427 +427 640 +640 640 +640 432 +640 480 +640 426 +640 427 +640 480 +640 480 +640 427 +640 430 +640 480 +561 640 +640 427 +640 478 +424 640 +426 640 +640 418 +640 427 +457 640 +640 480 +480 640 +500 375 +480 640 +640 478 +425 640 +640 533 +640 424 +640 427 +640 427 +640 359 +640 480 +612 612 +500 376 +640 480 +640 426 +335 500 +640 480 +640 426 +640 480 +640 640 +640 480 +640 427 +640 480 +640 480 +640 480 +427 640 +640 359 +467 640 +640 428 +640 480 +640 418 +640 480 +640 480 +640 480 +640 425 +640 427 +640 478 +640 480 +640 427 +640 427 +640 480 +640 414 +640 360 +427 640 +500 330 +640 480 +500 335 +640 480 +427 640 +640 439 +640 480 +640 478 +640 427 +500 375 +640 426 +640 427 +375 500 +640 427 +640 480 +640 480 +640 596 +640 400 +640 425 +480 640 +640 448 +640 429 +640 426 +500 304 +640 507 +640 427 +500 332 +640 426 +640 480 +427 640 +500 378 +640 426 +375 500 +480 640 +500 417 +640 480 +640 427 +640 481 +640 426 +640 426 +500 387 +286 417 +640 480 +640 424 +500 403 +640 480 +640 411 +500 332 +500 334 +640 427 +612 612 +640 395 +640 480 +500 335 +640 480 +640 480 +640 433 +640 427 +428 640 +640 640 +640 428 +500 375 +640 417 +427 640 +480 640 +640 360 +640 480 +640 427 +407 640 +640 480 +640 425 +640 480 +640 418 +640 428 +500 371 +640 426 +500 480 +498 500 +640 424 +640 426 +640 426 +640 427 +480 640 +640 480 +500 333 +640 480 +640 457 +426 640 +408 640 +640 428 +640 480 +426 640 +552 640 +640 425 +640 480 +500 375 +640 477 +640 488 +504 640 +312 480 +457 640 +640 480 +640 480 +640 425 +640 474 +640 480 +640 428 +456 640 +500 400 +612 612 +640 480 +640 439 +640 480 +640 427 +640 480 +640 477 +640 480 +640 425 +640 360 +480 640 +640 480 +640 480 +640 425 +640 480 +640 480 +431 640 +480 640 +640 426 +480 640 +428 640 +426 640 +461 640 +640 480 +337 500 +360 640 +640 480 +500 332 +480 640 +500 333 +464 640 +640 480 +640 480 +640 480 +640 428 +640 427 +640 360 +640 425 +480 640 +500 375 +500 414 +612 612 +640 480 +427 640 +640 366 +640 427 +427 640 +640 427 +640 480 +640 480 +640 427 +640 426 +640 480 +500 375 +549 640 +640 480 +429 640 +500 640 +640 480 +640 480 +500 375 +500 334 +640 480 +640 480 +640 444 +640 324 +640 480 +480 640 +640 427 +480 640 +640 426 +640 361 +338 500 +640 427 +640 480 +640 480 +480 640 +427 640 +530 640 +441 640 +500 375 +640 428 +640 512 +500 375 +640 480 +480 640 +428 640 +332 500 +640 427 +640 480 +640 425 +640 429 +640 431 +640 480 +640 427 +640 396 +425 640 +640 480 +640 427 +500 376 +375 500 +500 333 +640 480 +640 360 +500 375 +500 389 +640 480 +640 344 +480 640 +428 640 +640 480 +640 427 +480 640 +640 427 +640 547 +375 500 +612 612 +481 640 +640 480 +612 612 +640 480 +640 427 +426 640 +400 500 +640 427 +640 480 +640 419 +640 513 +640 480 +427 640 +640 426 +640 427 +500 333 +427 640 +640 424 +640 399 +640 480 +640 425 +640 364 +640 640 +640 427 +640 457 +640 629 +640 426 +427 640 +640 426 +500 375 +640 424 +427 640 +640 427 +640 428 +640 480 +640 480 +640 324 +500 375 +640 480 +640 427 +500 281 +640 427 +640 441 +640 427 +640 480 +500 300 +480 640 +350 500 +424 640 +534 640 +640 427 +640 427 +640 428 +640 426 +640 480 +480 640 +500 317 +640 427 +500 375 +640 480 +640 427 +640 480 +640 480 +640 480 +640 427 +480 640 +640 501 +640 478 +640 480 +640 424 +640 459 +500 375 +640 427 +480 640 +640 426 +640 481 +500 476 +333 500 +640 480 +640 490 +640 428 +640 568 +640 480 +640 512 +640 453 +640 480 +428 640 +640 480 +640 480 +640 480 +480 640 +640 624 +640 427 +640 438 +640 480 +640 400 +500 333 +640 480 +427 640 +640 426 +428 640 +640 480 +640 480 +640 480 +640 427 +640 480 +500 375 +612 612 +640 427 +640 480 +640 426 +640 449 +427 640 +640 427 +333 500 +640 427 +480 640 +500 375 +434 640 +640 463 +640 426 +480 640 +640 288 +640 425 +640 426 +640 480 +640 427 +640 425 +640 469 +359 640 +480 640 +640 480 +362 500 +427 640 +640 480 +640 426 +427 640 +640 425 +427 640 +640 480 +375 500 +640 468 +640 480 +500 375 +640 427 +500 410 +640 427 +500 374 +640 426 +640 480 +612 612 +480 360 +500 414 +640 480 +500 333 +640 426 +640 427 +640 425 +640 480 +640 480 +640 427 +640 425 +500 375 +640 473 +427 640 +640 426 +640 427 +640 396 +640 427 +640 488 +500 341 +612 612 +640 360 +640 425 +640 480 +426 640 +640 403 +640 427 +640 427 +640 428 +640 427 +332 500 +500 375 +480 640 +640 480 +480 640 +640 426 +640 427 +640 360 +427 640 +612 612 +640 480 +640 424 +640 416 +640 480 +640 480 +640 480 +500 375 +500 333 +640 427 +640 427 +427 640 +500 375 +640 480 +480 640 +508 640 +612 612 +500 375 +640 419 +429 640 +640 427 +500 375 +640 480 +500 332 +640 480 +640 426 +469 640 +427 640 +427 640 +640 480 +408 640 +480 640 +500 500 +425 640 +512 640 +640 455 +640 425 +640 480 +640 425 +640 364 +640 480 +427 640 +640 416 +640 480 +640 296 +640 427 +640 426 +640 480 +640 480 +640 480 +640 427 +640 480 +500 309 +640 465 +640 513 +640 426 +640 480 +640 556 +640 480 +426 640 +427 640 +640 640 +640 427 +640 427 +480 640 +480 640 +640 427 +425 640 +640 640 +427 640 +640 426 +640 429 +640 480 +640 481 +510 640 +640 480 +640 480 +604 453 +424 640 +640 427 +480 640 +640 480 +640 427 +640 427 +640 426 +640 480 +640 480 +375 500 +640 480 +640 426 +500 281 +640 480 +500 332 +640 480 +638 640 +640 457 +544 640 +612 612 +640 427 +612 612 +371 500 +640 324 +640 480 +640 427 +427 640 +365 500 +640 427 +483 640 +640 427 +500 500 +640 284 +640 479 +640 426 +640 427 +640 480 +359 640 +640 480 +469 640 +640 640 +640 428 +480 640 +640 426 +640 345 +640 422 +640 427 +427 640 +640 480 +640 425 +640 480 +640 480 +455 640 +640 480 +640 480 +640 480 +640 480 +333 500 +640 427 +640 480 +640 480 +500 375 +427 640 +640 480 +640 429 +480 640 +640 480 +640 369 +500 378 +640 619 +640 480 +427 640 +426 640 +640 426 +640 489 +640 307 +640 640 +640 424 +640 480 +500 404 +640 428 +426 640 +478 640 +640 426 +426 640 +500 357 +640 427 +480 640 +427 640 +640 333 +500 332 +592 576 +640 480 +640 480 +640 427 +640 339 +640 358 +500 375 +640 480 +480 640 +427 640 +427 640 +500 294 +640 286 +500 375 +500 375 +640 427 +640 264 +640 426 +640 427 +640 391 +433 640 +640 474 +426 640 +640 640 +640 423 +640 480 +500 333 +332 500 +640 428 +640 427 +427 640 +640 487 +640 427 +640 427 +500 377 +640 480 +640 478 +640 470 +500 362 +640 480 +640 507 +640 456 +640 427 +640 427 +333 640 +640 427 +640 397 +640 470 +640 480 +480 640 +640 427 +640 427 +428 640 +640 427 +640 402 +612 612 +640 427 +640 360 +500 375 +640 427 +640 427 +640 640 +640 480 +640 427 +480 640 +640 640 +497 640 +640 480 +612 612 +640 425 +500 348 +640 427 +333 500 +640 480 +640 428 +427 640 +640 428 +378 500 +640 360 +640 480 +640 426 +500 345 +477 640 +640 480 +640 480 +640 480 +640 480 +640 425 +640 427 +640 429 +640 428 +620 319 +427 640 +500 332 +500 375 +640 509 +640 426 +640 480 +640 457 +640 480 +640 424 +473 640 +432 324 +640 428 +640 469 +640 343 +640 427 +333 500 +640 474 +640 427 +640 480 +544 640 +640 480 +333 500 +500 375 +640 427 +500 454 +640 426 +640 640 +340 500 +616 640 +640 427 +380 500 +640 427 +640 427 +500 400 +640 425 +640 480 +640 399 +640 317 +640 480 +500 375 +640 480 +500 500 +500 375 +640 424 +640 480 +640 480 +640 427 +640 427 +640 480 +640 480 +640 453 +405 336 +640 395 +640 426 +640 480 +640 480 +640 482 +640 431 +480 640 +640 480 +427 640 +640 320 +478 640 +640 418 +500 375 +427 640 +424 640 +640 424 +640 482 +640 426 +375 500 +640 338 +425 640 +640 294 +640 426 +500 333 +640 427 +640 428 +640 480 +612 612 +640 480 +429 640 +640 355 +640 435 +376 500 +640 478 +640 480 +640 425 +640 480 +427 640 +480 640 +640 480 +640 428 +640 427 +640 427 +640 429 +400 300 +640 303 +500 500 +333 500 +640 438 +640 480 +480 640 +457 640 +640 426 +640 490 +640 427 +640 428 +640 425 +640 429 +640 462 +640 480 +478 640 +500 367 +640 428 +425 640 +640 480 +640 480 +500 375 +480 640 +320 240 +640 478 +640 480 +640 480 +500 500 +640 425 +640 480 +640 425 +640 427 +640 480 +640 480 +480 640 +640 428 +640 426 +427 640 +640 480 +640 480 +480 640 +500 375 +640 425 +427 640 +427 640 +640 427 +640 459 +500 335 +640 427 +427 640 +640 480 +500 333 +640 360 +429 640 +424 640 +640 480 +640 426 +640 464 +640 414 +480 640 +640 462 +640 640 +640 413 +640 480 +640 480 +640 432 +640 480 +640 480 +427 640 +640 480 +500 481 +640 427 +612 612 +640 479 +300 400 +612 612 +640 424 +600 428 +640 480 +467 276 +640 427 +640 428 +640 360 +427 640 +530 640 +640 392 +640 480 +640 480 +640 427 +460 500 +640 426 +640 427 +640 480 +500 500 +612 612 +640 480 +640 427 +640 427 +500 375 +579 640 +640 427 +480 640 +480 640 +480 640 +640 480 +500 375 +427 640 +640 427 +640 427 +360 640 +640 480 +640 427 +500 499 +640 501 +480 640 +640 410 +478 640 +500 375 +457 640 +640 480 +335 500 +612 612 +640 427 +640 480 +640 480 +364 640 +640 237 +640 400 +640 480 +500 375 +354 640 +640 427 +480 640 +375 500 +640 427 +640 427 +480 640 +612 612 +640 480 +640 427 +480 640 +640 425 +526 640 +480 640 +640 473 +500 375 +640 426 +640 471 +500 335 +640 426 +640 433 +480 640 +640 489 +640 340 +404 640 +640 428 +640 428 +640 427 +503 640 +426 640 +640 428 +640 360 +500 375 +640 427 +640 427 +640 427 +480 640 +640 433 +640 423 +640 480 +640 424 +640 480 +500 331 +640 480 +640 426 +640 454 +640 425 +640 427 +640 300 +466 640 +480 640 +500 375 +374 500 +640 640 +640 480 +640 480 +320 240 +640 508 +640 428 +500 375 +500 375 +640 480 +640 426 +640 480 +640 425 +478 640 +640 506 +640 426 +640 427 +480 640 +480 640 +640 427 +640 427 +640 428 +640 426 +640 426 +500 375 +640 480 +640 426 +640 425 +640 427 +612 612 +640 480 +640 441 +640 424 +640 425 +480 360 +640 417 +640 426 +640 427 +640 512 +640 426 +640 480 +640 480 +460 500 +640 520 +640 361 +640 512 +426 640 +640 427 +427 640 +500 375 +640 428 +480 640 +640 480 +640 480 +480 640 +612 612 +640 480 +332 500 +180 240 +329 500 +640 427 +427 640 +640 473 +640 480 +640 558 +375 500 +640 505 +480 640 +640 424 +375 500 +500 377 +640 480 +640 405 +640 480 +480 640 +640 427 +640 423 +480 640 +640 233 +335 500 +330 640 +500 334 +640 427 +640 588 +500 375 +426 640 +640 425 +640 480 +480 640 +640 480 +480 640 +640 480 +640 427 +640 480 +612 612 +612 612 +640 428 +427 640 +640 427 +640 480 +640 427 +640 237 +436 640 +640 424 +640 428 +427 640 +612 612 +490 640 +640 480 +480 640 +480 640 +640 558 +500 335 +640 417 +640 480 +640 427 +640 360 +640 425 +640 370 +640 481 +640 480 +640 480 +640 480 +374 500 +640 454 +640 480 +640 425 +640 426 +640 448 +640 426 +640 640 +500 429 +640 427 +431 640 +480 640 +512 640 +300 450 +640 483 +480 640 +425 640 +640 427 +640 412 +640 359 +640 556 +640 339 +640 480 +640 430 +640 421 +640 429 +640 480 +428 640 +640 428 +640 394 +480 640 +640 514 +411 640 +640 427 +640 428 +640 427 +640 429 +640 480 +640 430 +640 480 +500 332 +640 427 +640 480 +640 424 +500 263 +640 527 +640 480 +439 640 +480 640 +640 480 +640 480 +640 478 +640 480 +640 429 +640 427 +640 480 +640 411 +640 426 +640 480 +640 480 +480 640 +429 640 +640 480 +640 427 +427 640 +463 640 +640 427 +640 480 +640 480 +427 640 +431 640 +338 450 +640 427 +640 480 +640 480 +640 480 +640 480 +640 427 +640 480 +640 603 +640 480 +640 480 +640 512 +640 427 +427 640 +612 612 +640 480 +640 480 +333 500 +640 480 +640 424 +480 640 +500 375 +640 480 +640 480 +333 500 +640 429 +640 480 +640 480 +640 547 +396 640 +640 427 +640 480 +640 427 +640 424 +640 427 +500 375 +640 640 +640 427 +480 640 +640 429 +640 480 +640 424 +640 413 +640 478 +640 426 +640 426 +427 640 +332 500 +640 425 +640 427 +640 305 +425 640 +640 584 +640 480 +640 480 +640 425 +480 640 +480 640 +640 480 +500 375 +612 612 +640 427 +640 431 +500 375 +315 640 +427 640 +500 375 +640 480 +515 640 +640 480 +640 480 +500 333 +450 390 +640 427 +640 480 +640 480 +480 640 +640 427 +640 480 +640 480 +480 640 +480 640 +500 305 +627 640 +640 480 +640 569 +640 480 +375 500 +640 427 +640 427 +427 640 +640 589 +640 428 +640 439 +640 427 +480 640 +480 640 +640 427 +640 427 +640 480 +500 326 +640 426 +640 426 +640 480 +424 640 +640 618 +612 612 +640 427 +640 426 +500 500 +640 624 +426 640 +612 612 +579 326 +640 480 +640 480 +640 383 +627 640 +640 421 +479 500 +506 640 +640 480 +640 281 +640 427 +427 640 +500 375 +640 445 +640 427 +640 480 +640 480 +640 480 +640 471 +500 500 +640 360 +500 400 +640 480 +640 449 +452 640 +640 480 +640 424 +640 480 +427 640 +640 480 +640 427 +640 426 +640 461 +480 640 +640 480 +480 640 +636 640 +640 480 +500 375 +375 500 +640 428 +480 640 +640 421 +640 427 +480 640 +640 429 +640 425 +640 427 +640 471 +427 640 +431 640 +640 427 +640 431 +640 480 +640 480 +640 480 +640 480 +640 510 +640 480 +640 480 +640 512 +640 480 +501 640 +640 427 +640 427 +640 640 +640 480 +640 360 +640 426 +640 480 +427 640 +375 500 +640 640 +640 480 +640 427 +640 428 +640 427 +640 480 +640 426 +640 480 +427 640 +640 426 +500 325 +402 640 +640 432 +640 480 +480 640 +640 438 +640 512 +500 333 +500 333 +640 540 +640 426 +640 427 +640 480 +500 341 +500 375 +640 428 +301 640 +640 512 +640 480 +426 640 +350 467 +375 500 +640 360 +427 640 +640 360 +640 480 +640 480 +640 426 +480 640 +640 480 +640 441 +640 426 +375 500 +640 435 +640 427 +640 480 +500 375 +428 640 +453 500 +640 427 +640 480 +640 406 +494 640 +640 360 +640 480 +640 480 +640 427 +640 426 +489 640 +640 480 +500 375 +640 478 +640 427 +640 427 +640 429 +427 640 +640 427 +640 425 +640 463 +640 360 +640 480 +640 427 +640 480 +375 500 +640 427 +640 431 +640 480 +640 376 +640 640 +427 640 +640 426 +640 487 +640 428 +426 640 +640 480 +458 640 +640 427 +640 427 +640 629 +480 640 +640 513 +428 640 +425 640 +512 640 +640 480 +640 480 +640 427 +640 480 +640 480 +480 640 +640 428 +506 640 +640 480 +500 335 +640 480 +500 375 +640 426 +640 427 +480 640 +640 427 +640 477 +640 480 +640 427 +640 406 +480 640 +638 425 +640 426 +640 480 +480 640 +640 427 +640 640 +640 423 +640 457 +640 512 +640 427 +426 640 +640 480 +500 338 +640 520 +640 424 +640 398 +640 563 +640 428 +640 464 +640 401 +640 427 +354 640 +552 640 +500 375 +640 427 +640 512 +640 428 +500 375 +640 429 +500 435 +640 425 +600 400 +480 640 +640 427 +427 640 +120 160 +640 426 +500 375 +480 640 +428 640 +640 427 +640 480 +640 480 +640 480 +640 512 +640 480 +640 480 +512 640 +640 428 +640 427 +640 454 +640 480 +640 427 +486 640 +640 488 +500 375 +480 640 +346 640 +640 428 +640 376 +640 427 +640 539 +640 427 +640 371 +640 427 +612 612 +640 480 +640 480 +640 480 +612 612 +640 429 +640 512 +428 640 +500 192 +640 360 +640 449 +640 480 +640 480 +427 640 +640 620 +383 640 +336 447 +640 427 +480 640 +640 423 +640 427 +640 480 +640 427 +427 640 +640 351 +640 363 +640 444 +456 640 +427 640 +640 640 +640 610 +425 640 +612 612 +640 504 +333 500 +640 320 +640 426 +640 480 +640 423 +640 424 +640 480 +640 480 +640 480 +464 640 +640 427 +640 480 +640 360 +427 640 +640 480 +640 427 +500 375 +640 426 +640 427 +640 480 +640 427 +534 640 +480 640 +409 500 +640 480 +640 480 +640 427 +500 359 +640 480 +640 480 +640 480 +612 612 +640 428 +640 480 +640 496 +500 320 +640 525 +427 640 +640 480 +375 500 +640 480 +500 375 +500 375 +640 427 +500 375 +640 428 +480 640 +478 640 +640 427 +640 427 +640 632 +500 339 +416 640 +640 428 +640 428 +640 427 +640 428 +640 480 +640 479 +639 640 +480 640 +640 424 +640 480 +640 426 +500 333 +640 427 +640 480 +375 500 +640 352 +640 480 +640 425 +640 424 +640 480 +640 428 +640 426 +250 150 +640 481 +500 332 +385 640 +640 480 +500 332 +612 612 +640 480 +375 500 +640 419 +424 640 +640 426 +424 640 +640 480 +426 640 +640 480 +640 426 +500 357 +640 480 +640 480 +640 480 +612 612 +640 480 +640 480 +612 612 +640 480 +640 429 +427 640 +340 640 +500 333 +640 480 +640 480 +453 640 +640 428 +640 478 +480 640 +640 480 +375 500 +640 480 +640 480 +640 480 +640 457 +640 424 +640 425 +640 480 +640 480 +640 436 +640 414 +427 640 +500 400 +480 640 +640 500 +640 341 +640 428 +500 399 +427 640 +640 480 +640 480 +640 480 +640 481 +519 640 +640 426 +500 221 +640 631 +500 425 +640 427 +640 480 +640 480 +480 640 +640 460 +640 479 +640 427 +427 640 +640 429 +375 500 +640 480 +640 480 +640 427 +640 426 +480 360 +495 500 +640 432 +640 480 +566 640 +426 640 +640 478 +640 427 +640 428 +640 480 +640 480 +480 640 +375 500 +614 640 +640 480 +640 480 +640 404 +480 640 +640 427 +333 500 +640 480 +640 425 +428 640 +427 640 +500 500 +500 374 +640 526 +640 384 +640 427 +640 480 +640 480 +640 480 +375 500 +640 480 +640 426 +640 421 +428 640 +443 567 +640 480 +640 425 +640 480 +640 509 +640 360 +480 640 +640 480 +640 426 +640 427 +446 640 +640 427 +640 480 +640 428 +640 480 +599 400 +640 425 +427 640 +427 640 +640 427 +640 480 +640 427 +536 640 +500 333 +640 427 +427 640 +375 500 +640 480 +427 640 +640 478 +640 353 +500 375 +640 480 +640 480 +640 480 +640 427 +500 369 +640 480 +480 360 +488 640 +640 480 +640 480 +640 429 +500 334 +640 427 +640 427 +640 480 +426 640 +640 480 +640 346 +640 544 +375 500 +478 640 +640 480 +640 429 +640 541 +640 426 +427 640 +640 427 +500 333 +640 426 +375 500 +454 640 +640 480 +640 427 +640 427 +640 435 +427 640 +640 428 +640 480 +628 484 +640 510 +375 500 +640 433 +640 480 +640 395 +500 375 +640 426 +640 427 +640 478 +612 612 +480 640 +640 480 +640 480 +480 640 +500 375 +640 427 +427 640 +640 360 +480 640 +640 480 +640 432 +640 480 +640 480 +640 426 +640 480 +640 480 +500 332 +640 480 +640 424 +417 500 +640 480 +640 503 +640 480 +640 628 +640 426 +640 480 +480 640 +640 501 +640 480 +640 480 +640 598 +640 480 +640 480 +640 427 +640 428 +640 428 +640 481 +480 640 +640 427 +500 375 +640 640 +640 428 +640 480 +640 480 +640 522 +427 640 +480 640 +640 635 +640 480 +640 480 +640 480 +640 488 +426 640 +640 480 +481 640 +640 425 +640 426 +640 426 +429 640 +281 500 +640 427 +426 640 +480 640 +640 428 +640 480 +640 427 +328 500 +419 304 +480 640 +425 640 +640 640 +640 404 +640 480 +640 480 +640 426 +469 500 +393 640 +480 320 +640 426 +640 640 +427 640 +640 426 +427 640 +640 425 +640 427 +500 335 +640 458 +640 446 +640 359 +424 640 +640 480 +480 640 +640 480 +640 512 +640 319 +640 360 +640 427 +640 480 +427 640 +640 478 +604 640 +480 640 +640 427 +640 523 +640 478 +640 506 +500 375 +640 557 +427 640 +640 478 +640 480 +478 640 +480 640 +640 427 +640 427 +480 640 +477 640 +640 439 +640 623 +640 428 +427 640 +640 481 +640 356 +426 640 +640 426 +500 333 +640 429 +640 490 +640 427 +640 427 +640 527 +480 640 +427 640 +640 426 +640 426 +640 480 +640 463 +500 375 +640 474 +640 427 +500 333 +640 480 +640 480 +612 612 +427 640 +640 427 +640 433 +427 640 +640 416 +427 640 +640 480 +427 640 +640 480 +640 427 +640 427 +640 478 +640 480 +640 360 +640 480 +500 333 +640 427 +640 426 +600 640 +640 427 +640 426 +640 425 +640 480 +457 640 +428 640 +640 573 +640 392 +640 371 +480 640 +600 400 +640 480 +640 428 +640 480 +500 375 +640 480 +640 480 +640 425 +640 480 +640 480 +640 425 +640 425 +640 480 +640 480 +640 480 +640 480 +640 480 +375 500 +500 375 +375 500 +640 480 +568 320 +640 426 +640 428 +640 427 +640 428 +640 383 +640 487 +640 427 +375 500 +640 482 +640 427 +375 500 +640 480 +399 640 +640 427 +200 315 +480 640 +427 640 +427 640 +478 640 +500 410 +640 401 +375 500 +409 640 +640 424 +640 431 +640 426 +612 612 +362 500 +640 427 +640 427 +640 480 +640 360 +480 640 +640 427 +374 500 +640 478 +375 500 +640 480 +640 480 +428 640 +427 640 +500 375 +640 427 +360 640 +640 424 +640 425 +640 480 +427 640 +427 640 +500 400 +425 640 +500 357 +640 480 +640 499 +640 480 +480 640 +460 300 +640 480 +332 500 +640 427 +568 320 +640 424 +500 333 +640 461 +640 480 +427 640 +640 480 +640 429 +640 480 +500 375 +424 640 +640 480 +640 427 +500 333 +612 612 +500 352 +640 438 +500 375 +424 640 +480 640 +400 300 +640 480 +640 478 +640 583 +500 375 +400 300 +640 427 +425 640 +640 428 +640 480 +640 427 +612 612 +640 427 +640 480 +640 480 +640 428 +640 426 +640 424 +640 425 +383 640 +640 481 +640 640 +640 376 +640 480 +500 334 +640 436 +640 427 +427 640 +640 480 +640 480 +427 640 +640 556 +450 640 +426 640 +640 425 +640 480 +640 480 +640 480 +640 480 +640 480 +256 192 +640 427 +640 474 +640 480 +640 480 +640 480 +640 480 +640 296 +443 500 +640 427 +640 480 +640 547 +483 640 +494 640 +480 640 +640 480 +640 480 +640 428 +640 458 +561 640 +640 427 +640 483 +480 640 +640 479 +640 480 +640 480 +640 481 +640 427 +640 425 +640 427 +640 512 +640 348 +640 640 +640 425 +640 427 +480 640 +640 427 +640 427 +640 480 +503 640 +640 424 +640 427 +640 427 +480 640 +640 426 +640 480 +500 375 +640 427 +640 427 +640 474 +300 450 +640 480 +640 424 +640 480 +335 500 +640 427 +640 399 +640 512 +259 500 +500 347 +640 480 +640 480 +500 480 +640 427 +640 383 +640 424 +640 480 +640 427 +640 284 +640 427 +640 427 +640 376 +334 500 +640 480 +640 480 +640 425 +500 375 +640 427 +640 480 +640 396 +640 480 +375 500 +640 480 +500 332 +640 427 +640 480 +640 480 +500 375 +640 425 +520 368 +640 427 +640 427 +640 428 +612 612 +494 640 +640 442 +640 480 +640 425 +434 640 +457 640 +426 640 +500 375 +640 480 +640 427 +640 489 +480 640 +640 428 +640 586 +640 480 +640 480 +640 480 +640 360 +612 612 +640 480 +640 427 +640 480 +640 427 +640 613 +480 640 +640 394 +640 427 +640 427 +640 427 +640 433 +640 425 +500 375 +480 640 +537 640 +427 640 +640 383 +480 640 +640 414 +427 640 +480 640 +480 640 +640 480 +640 480 +426 640 +640 427 +375 500 +427 640 +480 640 +640 426 +640 480 +640 480 +640 426 +640 480 +375 500 +604 453 +375 500 +640 480 +640 480 +640 437 +500 333 +640 480 +640 480 +480 640 +333 500 +640 368 +640 640 +427 640 +640 425 +488 640 +500 334 +427 640 +640 485 +640 480 +488 640 +640 424 +480 640 +640 478 +640 427 +640 431 +481 640 +640 480 +640 426 +392 640 +500 440 +640 478 +426 640 +640 429 +612 612 +640 426 +640 427 +640 480 +500 375 +640 480 +640 428 +640 427 +486 640 +640 478 +640 426 +431 640 +640 425 +375 500 +640 427 +478 640 +640 427 +640 429 +640 480 +480 640 +640 511 +640 427 +500 400 +640 480 +640 361 +500 375 +333 500 +428 640 +640 411 +428 640 +640 347 +640 480 +640 427 +640 426 +640 480 +640 480 +640 534 +640 429 +480 640 +640 426 +640 480 +640 480 +640 480 +640 428 +640 298 +640 428 +640 428 +640 427 +640 480 +640 480 +500 376 +640 480 +640 480 +448 298 +640 329 +640 427 +640 401 +478 640 +481 640 +387 500 +640 480 +640 427 +368 500 +480 640 +640 480 +500 408 +427 640 +480 640 +640 426 +640 427 +640 480 +640 427 +480 640 +640 423 +640 320 +500 332 +375 500 +480 640 +640 427 +640 515 +640 480 +480 640 +433 640 +500 375 +640 426 +640 451 +427 640 +612 612 +640 480 +640 482 +425 640 +640 480 +640 360 +640 478 +640 480 +631 640 +500 333 +640 401 +640 480 +561 640 +640 428 +640 478 +640 480 +640 427 +640 480 +255 600 +500 375 +640 512 +500 500 +640 480 +640 640 +640 463 +640 425 +427 640 +640 426 +427 640 +640 473 +640 480 +612 612 +640 518 +480 640 +640 478 +500 375 +640 480 +480 640 +640 425 +640 359 +500 319 +480 480 +427 640 +480 640 +640 407 +427 640 +640 480 +640 640 +386 500 +640 300 +600 600 +426 640 +640 480 +480 640 +640 427 +640 480 +640 480 +640 427 +640 480 +427 640 +640 427 +640 426 +640 425 +500 375 +640 470 +640 427 +640 413 +409 640 +612 612 +640 480 +500 375 +640 424 +640 480 +640 480 +640 480 +640 480 +640 480 +640 404 +640 427 +640 480 +640 481 +480 640 +500 375 +640 434 +500 333 +294 400 +640 427 +640 474 +500 337 +333 500 +640 428 +640 427 +640 425 +500 500 +427 640 +640 457 +640 425 +640 480 +480 640 +640 480 +640 457 +640 474 +640 480 +640 424 +640 428 +640 480 +640 425 +361 640 +457 640 +640 427 +612 612 +640 480 +640 427 +640 427 +640 427 +640 480 +640 427 +500 333 +640 427 +424 640 +500 375 +640 512 +427 640 +500 333 +500 359 +640 427 +640 428 +640 480 +428 640 +640 372 +480 640 +427 640 +640 480 +640 427 +457 640 +500 333 +343 500 +640 425 +640 480 +640 480 +480 640 +500 334 +640 480 +480 640 +640 480 +640 427 +640 427 +640 480 +640 426 +640 427 +500 375 +480 640 +640 427 +640 480 +640 640 +640 360 +640 634 +640 427 +640 430 +640 427 +472 640 +640 640 +428 640 +612 612 +640 360 +338 500 +640 480 +320 212 +500 375 +500 333 +640 480 +640 426 +640 530 +427 640 +523 640 +640 384 +426 640 +425 640 +480 640 +640 480 +500 332 +640 524 +480 640 +640 480 +500 375 +640 419 +640 480 +640 478 +640 426 +640 480 +640 427 +640 480 +640 426 +640 428 +333 500 +640 480 +640 427 +500 333 +426 640 +640 426 +363 640 +640 349 +640 426 +500 375 +640 608 +375 500 +640 480 +640 426 +500 375 +640 428 +640 457 +480 640 +612 612 +640 480 +490 640 +640 461 +640 480 +640 480 +640 470 +426 640 +508 640 +480 640 +640 427 +640 480 +395 500 +640 480 +640 480 +640 480 +640 427 +640 480 +640 546 +640 480 +359 500 +640 428 +640 457 +640 427 +627 640 +480 640 +427 640 +640 427 +640 480 +640 482 +640 480 +640 427 +427 640 +640 640 +640 480 +500 331 +640 480 +640 427 +359 640 +480 640 +640 427 +640 425 +640 480 +640 425 +500 332 +640 364 +640 427 +500 375 +500 375 +640 427 +640 428 +461 640 +640 480 +640 480 +500 375 +427 640 +640 427 +640 466 +512 512 +347 500 +640 480 +480 640 +500 302 +640 480 +640 425 +640 428 +640 418 +640 480 +640 426 +640 480 +640 480 +500 478 +640 440 +500 375 +500 375 +612 612 +427 640 +640 427 +600 450 +640 480 +483 640 +640 480 +640 480 +640 427 +424 640 +426 640 +465 640 +640 480 +640 431 +640 427 +640 561 +640 413 +427 640 +640 427 +480 640 +612 612 +640 480 +457 640 +640 360 +640 480 +612 612 +480 640 +640 427 +612 612 +640 427 +640 426 +640 480 +640 429 +640 427 +640 480 +640 480 +640 426 +640 444 +640 424 +640 370 +640 480 +427 640 +640 480 +431 356 +640 424 +640 480 +426 640 +640 427 +640 427 +640 478 +640 428 +375 500 +500 315 +425 640 +640 480 +640 480 +640 480 +480 640 +640 478 +478 500 +640 480 +640 480 +426 640 +640 480 +640 419 +640 430 +361 640 +640 428 +500 332 +640 480 +427 640 +640 427 +500 375 +640 424 +640 425 +640 430 +500 375 +640 425 +640 480 +480 640 +500 333 +427 640 +427 640 +449 640 +431 640 +386 640 +640 480 +640 428 +640 480 +500 333 +456 640 +478 640 +428 640 +640 483 +640 427 +640 428 +480 640 +640 480 +480 640 +640 478 +640 480 +640 426 +427 640 +640 427 +640 213 +640 640 +612 612 +640 425 +500 414 +427 640 +640 480 +640 361 +500 333 +523 640 +480 640 +640 480 +612 612 +640 425 +612 612 +640 400 +480 640 +640 479 +500 400 +640 426 +640 401 +478 640 +428 640 +640 423 +640 425 +640 480 +640 480 +612 612 +640 480 +426 640 +480 640 +640 373 +640 480 +640 296 +500 375 +500 375 +640 480 +640 387 +427 640 +500 375 +453 640 +640 426 +640 480 +640 426 +426 640 +480 640 +500 374 +480 640 +640 427 +640 427 +640 427 +565 640 +640 431 +640 427 +640 480 +500 375 +640 325 +640 427 +500 500 +486 640 +640 480 +500 333 +500 375 +640 406 +640 427 +640 426 +640 480 +640 480 +480 640 +640 480 +640 427 +640 480 +375 500 +640 480 +500 375 +426 640 +333 500 +640 427 +612 612 +395 640 +640 373 +640 360 +640 480 +640 480 +640 480 +640 424 +500 375 +612 612 +640 424 +640 425 +640 480 +640 480 +640 427 +640 426 +640 480 +640 478 +491 500 +640 480 +480 640 +640 378 +366 500 +640 427 +640 428 +640 454 +640 512 +500 357 +480 640 +480 640 +457 640 +333 500 +640 480 +500 310 +640 480 +500 559 +428 640 +640 427 +500 375 +640 463 +640 425 +640 480 +375 500 +337 640 +640 480 +640 480 +640 480 +640 199 +371 500 +640 480 +640 476 +640 480 +428 640 +640 427 +640 428 +423 640 +640 480 +640 427 +640 427 +640 480 +500 375 +640 427 +240 320 +640 427 +640 398 +427 640 +423 640 +612 612 +500 375 +640 427 +640 480 +427 640 +640 440 +500 375 +480 640 +500 376 +640 427 +427 640 +480 640 +500 375 +500 307 +640 480 +428 640 +612 612 +640 480 +640 425 +384 288 +640 348 +640 427 +640 480 +640 480 +640 480 +480 640 +427 640 +640 427 +640 428 +640 480 +640 480 +640 511 +500 364 +640 359 +500 332 +500 375 +640 429 +640 480 +640 480 +640 427 +640 427 +500 345 +640 480 +640 427 +640 427 +640 478 +640 480 +500 500 +640 427 +640 427 +640 480 +640 512 +640 427 +640 480 +640 480 +640 427 +383 640 +640 426 +640 427 +640 480 +427 640 +500 375 +640 480 +375 500 +480 640 +427 640 +640 425 +640 640 +640 463 +338 500 +640 487 +640 480 +500 375 +640 474 +640 480 +640 412 +640 367 +640 427 +640 427 +375 500 +640 426 +640 427 +364 500 +640 439 +353 500 +640 480 +640 476 +640 640 +640 480 +640 425 +333 500 +640 425 +640 424 +640 360 +500 368 +640 426 +640 427 +640 480 +500 375 +640 461 +640 457 +640 321 +480 640 +640 427 +640 427 +640 427 +640 480 +271 640 +375 500 +640 427 +640 427 +360 640 +480 640 +640 418 +480 640 +480 640 +640 427 +375 500 +480 640 +640 480 +640 572 +640 428 +640 640 +640 427 +640 480 +640 478 +633 640 +640 425 +640 427 +640 422 +640 480 +640 451 +640 480 +640 427 +640 480 +478 640 +640 427 +640 640 +640 427 +640 480 +500 375 +640 428 +480 640 +640 443 +640 427 +640 427 +431 640 +640 425 +400 500 +640 426 +640 640 +640 480 +640 480 +375 500 +640 401 +640 483 +640 480 +640 427 +640 459 +640 481 +640 480 +640 259 +640 428 +500 375 +640 418 +480 640 +427 640 +640 546 +612 612 +320 240 +640 427 +640 360 +500 477 +500 375 +427 640 +640 428 +640 426 +640 427 +640 438 +640 480 +640 480 +640 428 +500 356 +478 640 +640 426 +640 428 +640 427 +480 640 +424 640 +612 612 +640 426 +640 429 +427 640 +640 360 +640 480 +640 591 +640 428 +640 495 +480 640 +640 480 +480 640 +640 480 +640 640 +640 346 +640 427 +640 427 +640 480 +640 480 +480 640 +640 427 +640 376 +640 424 +640 480 +500 375 +640 427 +640 480 +427 640 +640 428 +640 425 +500 309 +494 500 +640 480 +640 475 +500 375 +375 500 +640 427 +640 480 +640 480 +640 359 +640 512 +488 640 +640 426 +640 426 +420 640 +480 640 +640 427 +640 428 +415 500 +500 375 +500 273 +427 640 +640 480 +640 427 +640 427 +640 428 +640 426 +480 640 +640 427 +640 470 +640 427 +640 522 +640 427 +640 480 +640 428 +640 427 +500 375 +640 480 +500 333 +640 480 +347 500 +480 640 +640 428 +640 480 +500 375 +640 428 +500 334 +640 478 +640 428 +640 480 +640 479 +348 500 +500 375 +640 480 +500 339 +640 481 +640 640 +600 450 +426 640 +480 640 +640 427 +500 375 +640 424 +640 427 +640 478 +640 480 +480 640 +640 426 +640 427 +480 640 +640 434 +640 480 +480 640 +500 375 +640 480 +640 480 +427 640 +640 428 +424 640 +640 480 +640 480 +640 426 +640 427 +500 333 +640 480 +640 442 +640 388 +500 375 +640 480 +640 432 +333 500 +640 480 +640 427 +640 408 +377 500 +640 425 +640 381 +640 509 +640 480 +426 640 +640 371 +640 480 +640 424 +640 503 +640 212 +640 426 +640 480 +512 640 +500 400 +480 640 +500 375 +640 425 +640 427 +640 360 +640 426 +360 640 +431 640 +640 443 +640 480 +640 493 +480 640 +640 566 +640 427 +640 421 +640 480 +640 427 +640 425 +480 640 +640 480 +622 640 +640 427 +324 432 +640 427 +640 427 +640 480 +640 425 +640 480 +640 319 +640 427 +427 640 +640 480 +640 480 +612 612 +640 428 +612 612 +456 640 +500 375 +500 325 +480 640 +480 640 +480 640 +500 375 +612 612 +500 375 +640 480 +480 640 +640 408 +640 427 +640 408 +640 426 +640 427 +640 427 +480 320 +640 284 +640 427 +556 640 +640 427 +640 480 +640 400 +640 421 +500 375 +640 427 +640 480 +640 427 +640 480 +640 481 +561 640 +640 480 +640 468 +640 480 +640 425 +640 425 +500 375 +640 480 +426 640 +640 480 +640 427 +640 511 +640 565 +640 480 +375 500 +640 640 +429 640 +500 375 +480 640 +500 375 +480 640 +640 360 +640 480 +640 427 +500 333 +567 378 +480 640 +480 640 +427 640 +640 360 +500 400 +500 375 +640 428 +600 400 +640 427 +640 480 +640 480 +640 427 +500 375 +480 640 +375 500 +640 424 +640 640 +640 427 +375 500 +640 426 +500 375 +513 640 +640 429 +640 401 +540 407 +480 640 +640 426 +640 426 +640 480 +362 500 +640 480 +640 412 +640 425 +500 375 +640 480 +640 426 +426 640 +494 500 +500 375 +640 480 +640 480 +640 512 +480 640 +640 432 +375 500 +640 480 +478 640 +640 480 +640 459 +640 480 +426 640 +426 640 +640 512 +640 299 +640 427 +424 640 +480 640 +640 427 +640 427 +478 640 +640 480 +640 480 +640 480 +640 480 +500 375 +640 429 +640 480 +640 427 +640 426 +640 427 +640 426 +640 467 +640 426 +480 640 +640 458 +640 428 +640 480 +640 427 +424 640 +640 480 +480 640 +640 427 +640 480 +640 494 +427 640 +640 480 +640 432 +450 337 +640 427 +640 427 +480 640 +640 441 +480 640 +640 428 +640 425 +640 433 +384 512 +500 375 +640 427 +640 584 +500 333 +424 640 +427 640 +640 426 +480 640 +640 480 +444 640 +640 408 +427 640 +640 353 +640 480 +640 480 +640 428 +640 359 +480 640 +428 640 +500 400 +343 500 +640 480 +640 478 +640 427 +480 640 +500 375 +640 427 +480 316 +640 424 +425 640 +640 480 +640 480 +500 333 +640 480 +640 427 +626 640 +640 426 +640 480 +640 480 +427 640 +428 640 +423 640 +500 375 +500 307 +434 640 +480 640 +425 640 +320 240 +500 333 +640 427 +500 375 +480 640 +558 234 +640 515 +640 611 +480 640 +640 425 +427 640 +427 640 +640 427 +640 479 +640 480 +426 640 +428 640 +333 500 +640 430 +427 640 +640 480 +429 640 +425 640 +500 375 +640 488 +640 425 +640 406 +640 457 +640 480 +640 427 +640 480 +640 427 +640 480 +500 394 +640 464 +640 599 +427 640 +640 480 +640 513 +427 640 +640 480 +640 427 +640 479 +640 359 +640 429 +500 333 +500 333 +500 333 +640 427 +640 424 +640 426 +640 428 +640 427 +500 375 +500 375 +500 375 +640 480 +640 427 +640 478 +640 360 +640 427 +454 604 +500 375 +640 427 +640 427 +500 375 +640 360 +640 457 +640 420 +640 480 +640 427 +640 427 +640 480 +640 432 +640 480 +480 640 +640 427 +427 640 +640 480 +426 640 +640 480 +640 480 +640 480 +640 480 +428 640 +640 425 +480 640 +640 429 +640 480 +640 179 +640 480 +640 360 +640 463 +640 427 +480 640 +640 480 +640 459 +480 640 +640 426 +500 375 +425 640 +640 606 +500 375 +500 375 +640 354 +451 640 +414 640 +640 480 +500 281 +500 375 +640 427 +640 405 +640 512 +640 480 +612 612 +640 480 +447 640 +640 427 +640 480 +640 529 +640 317 +480 640 +234 500 +640 480 +480 640 +500 333 +481 640 +460 640 +640 480 +640 360 +500 375 +375 500 +640 480 +640 425 +640 480 +640 426 +476 640 +640 512 +427 640 +500 375 +478 640 +228 296 +640 480 +500 375 +406 640 +427 640 +603 640 +640 428 +640 480 +640 268 +426 640 +640 480 +425 640 +640 409 +427 640 +360 640 +361 640 +640 427 +437 640 +384 568 +500 332 +640 421 +640 360 +640 480 +640 427 +640 480 +428 640 +640 383 +507 619 +427 640 +480 640 +640 426 +480 640 +640 426 +640 480 +640 480 +640 423 +640 424 +640 428 +640 448 +640 427 +640 391 +480 640 +640 425 +640 480 +640 427 +500 335 +480 640 +500 334 +612 612 +427 640 +640 427 +500 355 +640 480 +512 640 +640 532 +640 427 +424 640 +640 453 +640 427 +640 480 +640 428 +640 424 +640 480 +640 480 +640 480 +500 375 +640 480 +480 640 +640 480 +640 428 +500 375 +640 428 +640 391 +480 640 +640 480 +640 480 +500 333 +640 554 +640 480 +640 480 +480 640 +640 427 +480 640 +640 461 +640 480 +640 427 +640 479 +640 427 +640 427 +640 480 +640 427 +640 427 +480 640 +480 640 +500 332 +500 375 +640 480 +640 429 +640 480 +640 427 +640 427 +482 640 +640 426 +500 375 +640 428 +640 426 +640 427 +640 427 +640 301 +640 480 +640 426 +640 428 +640 364 +500 375 +640 426 +640 426 +640 480 +640 424 +640 480 +480 640 +640 353 +640 429 +480 640 +640 480 +427 640 +426 640 +640 427 +640 427 +635 640 +640 480 +426 640 +640 480 +640 480 +640 426 +640 427 +640 426 +640 184 +500 333 +500 475 +640 408 +425 640 +500 375 +640 406 +640 471 +640 426 +640 411 +480 640 +333 500 +640 427 +640 480 +427 640 +640 428 +640 370 +640 414 +640 429 +640 438 +640 426 +480 640 +640 480 +640 427 +640 480 +640 426 +480 640 +640 427 +388 500 +640 425 +333 500 +640 428 +640 480 +640 424 +640 427 +640 424 +500 375 +640 480 +640 426 +640 427 +640 480 +640 640 +500 334 +640 425 +335 500 +640 516 +640 384 +640 425 +640 427 +640 427 +640 428 +640 480 +640 404 +500 375 +640 480 +480 640 +500 334 +640 319 +640 428 +640 480 +640 480 +640 359 +640 480 +640 425 +640 425 +612 612 +640 428 +640 480 +640 424 +500 375 +500 332 +640 426 +640 360 +640 425 +480 640 +640 427 +493 640 +425 640 +640 640 +500 375 +471 640 +640 480 +400 382 +640 427 +640 379 +640 424 +480 640 +640 480 +640 427 +640 428 +426 640 +640 425 +640 427 +640 432 +612 612 +500 375 +640 425 +640 480 +427 640 +640 427 +640 428 +640 480 +640 640 +500 375 +427 640 +640 524 +640 270 +640 424 +640 480 +500 333 +640 427 +640 318 +640 480 +612 612 +640 427 +480 640 +450 338 +343 500 +640 480 +428 640 +500 346 +640 465 +640 459 +480 640 +640 426 +640 427 +640 360 +640 458 +480 640 +640 404 +640 427 +475 389 +640 480 +500 375 +640 360 +427 640 +640 478 +640 427 +640 480 +640 480 +640 409 +500 375 +640 480 +640 480 +640 480 +489 640 +640 427 +640 480 +640 427 +640 480 +640 480 +640 529 +480 640 +640 360 +640 480 +480 640 +640 480 +640 480 +640 428 +640 425 +423 640 +500 281 +640 480 +640 480 +640 428 +640 428 +500 375 +640 378 +640 480 +640 371 +640 480 +640 480 +640 426 +640 480 +640 448 +640 427 +640 501 +480 640 +333 500 +640 480 +640 425 +640 480 +640 429 +640 480 +373 640 +426 640 +640 480 +640 427 +640 480 +640 424 +640 371 +612 612 +500 375 +640 457 +640 480 +640 427 +640 427 +640 480 +640 427 +640 429 +640 427 +375 500 +640 389 +333 500 +500 375 +500 375 +480 640 +612 612 +640 480 +500 375 +640 426 +640 426 +500 333 +640 480 +425 640 +427 640 +626 640 +640 428 +500 375 +640 495 +500 375 +640 424 +640 480 +640 480 +375 500 +640 533 +640 425 +640 424 +640 480 +640 399 +640 427 +640 426 +640 428 +640 425 +480 640 +500 375 +640 426 +640 480 +640 360 +640 427 +480 640 +480 640 +640 432 +500 471 +640 400 +640 427 +500 375 +640 425 +375 500 +640 480 +640 480 +640 496 +323 500 +584 640 +480 640 +640 424 +640 428 +480 640 +640 425 +478 640 +500 334 +480 640 +640 456 +640 458 +640 480 +480 640 +640 425 +480 640 +640 480 +640 424 +480 640 +640 640 +640 480 +640 480 +640 428 +500 375 +640 457 +375 500 +427 640 +640 427 +427 640 +282 500 +371 500 +150 200 +480 640 +640 480 +500 372 +640 480 +640 430 +640 480 +640 480 +640 480 +480 640 +640 427 +640 427 +500 375 +640 427 +425 640 +512 640 +640 427 +640 426 +640 218 +640 427 +640 427 +640 427 +640 427 +640 480 +640 382 +640 480 +484 289 +640 480 +640 461 +427 640 +640 480 +640 428 +375 500 +640 427 +427 640 +500 332 +640 427 +500 430 +640 439 +351 640 +427 640 +426 640 +333 500 +428 640 +640 480 +640 480 +427 640 +640 480 +500 375 +427 640 +640 480 +640 270 +640 473 +426 640 +640 427 +640 480 +640 480 +480 640 +640 480 +640 480 +352 500 +640 480 +480 640 +612 612 +640 427 +640 431 +640 329 +640 427 +640 426 +640 480 +640 480 +640 478 +640 427 +428 640 +394 406 +640 480 +640 480 +640 480 +640 359 +637 640 +640 482 +480 640 +480 640 +640 439 +427 640 +487 500 +640 480 +640 480 +640 426 +480 640 +640 341 +427 640 +427 640 +640 418 +640 374 +640 427 +640 480 +640 480 +640 433 +498 640 +640 427 +640 494 +500 333 +640 427 +480 640 +640 426 +640 426 +640 411 +511 640 +640 427 +640 426 +640 479 +640 427 +426 640 +500 375 +640 428 +375 500 +480 640 +640 482 +500 375 +640 427 +640 497 +600 400 +640 480 +640 385 +640 480 +640 640 +640 480 +640 426 +375 500 +640 429 +500 334 +375 500 +640 427 +640 427 +640 426 +640 424 +480 640 +571 640 +640 535 +640 428 +427 640 +640 480 +640 425 +640 480 +640 425 +640 480 +640 427 +640 424 +640 427 +640 480 +640 480 +640 400 +640 428 +640 425 +480 640 +640 480 +640 376 +640 440 +640 428 +375 500 +640 626 +640 427 +487 496 +500 483 +375 500 +640 359 +640 427 +640 480 +427 640 +640 480 +640 480 +640 427 +640 480 +640 429 +640 427 +640 480 +546 366 +500 375 +439 640 +640 425 +640 400 +480 640 +640 480 +425 640 +640 480 +427 640 +640 480 +500 375 +640 427 +640 427 +640 426 +426 640 +428 640 +640 473 +360 640 +640 480 +640 480 +420 640 +640 480 +640 427 +450 600 +427 640 +640 496 +640 480 +640 432 +577 640 +640 480 +640 514 +640 427 +375 500 +333 500 +640 480 +375 500 +640 427 +500 333 +640 444 +427 640 +640 426 +640 478 +427 640 +640 403 +500 500 +640 480 +640 426 +427 640 +500 334 +640 428 +425 640 +500 375 +640 480 +493 640 +640 640 +512 640 +640 427 +640 480 +612 612 +640 390 +640 424 +640 480 +640 427 +640 480 +640 513 +499 640 +640 359 +640 480 +640 427 +427 640 +640 425 +640 427 +640 427 +640 480 +640 427 +640 480 +640 373 +640 480 +640 480 +640 427 +640 427 +427 640 +640 360 +427 640 +640 424 +612 612 +640 425 +359 640 +427 640 +480 640 +640 426 +640 427 +640 427 +640 427 +640 460 +640 480 +612 612 +640 480 +512 640 +333 500 +640 480 +500 349 +427 640 +640 480 +640 424 +640 448 +480 640 +640 426 +480 640 +640 480 +640 426 +640 427 +640 427 +640 480 +640 427 +480 640 +480 640 +500 333 +479 640 +640 479 +640 550 +640 426 +640 480 +640 426 +640 478 +500 375 +640 424 +640 427 +640 425 +428 640 +640 427 +640 480 +640 426 +640 424 +640 480 +480 640 +640 427 +640 427 +640 426 +480 640 +640 480 +550 366 +640 427 +500 333 +640 480 +288 432 +640 480 +360 640 +640 429 +480 640 +640 427 +640 566 +427 640 +640 480 +500 375 +640 425 +640 640 +640 512 +428 640 +333 500 +500 500 +500 375 +640 425 +640 480 +640 480 +640 427 +640 461 +500 375 +600 450 +640 480 +640 480 +640 427 +500 375 +640 426 +295 175 +427 640 +640 425 +640 427 +640 480 +640 425 +640 427 +640 480 +640 457 +640 419 +640 443 +500 332 +500 375 +500 375 +612 612 +640 457 +612 612 +375 500 +640 427 +640 473 +640 513 +640 426 +612 612 +640 480 +600 600 +640 480 +640 425 +612 612 +640 427 +500 333 +640 428 +640 484 +640 480 +480 640 +640 360 +326 500 +500 401 +480 640 +640 468 +480 640 +640 480 +640 366 +640 480 +426 640 +640 425 +640 425 +427 640 +328 640 +500 298 +500 288 +480 640 +640 427 +425 640 +640 480 +640 480 +640 480 +500 375 +640 424 +640 427 +640 427 +640 426 +478 640 +640 480 +500 375 +480 640 +480 640 +640 428 +640 480 +480 640 +640 478 +640 416 +640 480 +640 360 +640 427 +640 427 +640 480 +639 640 +500 375 +640 457 +640 427 +375 500 +640 480 +480 640 +640 480 +640 481 +480 640 +511 640 +426 640 +640 640 +500 333 +640 480 +640 425 +632 640 +480 640 +640 480 +640 426 +383 640 +640 428 +640 428 +500 375 +400 500 +640 427 +612 612 +640 427 +640 483 +640 480 +640 489 +640 640 +640 480 +640 480 +640 480 +640 480 +640 426 +640 360 +480 640 +449 640 +375 500 +640 425 +640 457 +640 480 +640 427 +640 480 +640 377 +640 480 +640 427 +640 480 +420 640 +451 299 +640 478 +500 375 +640 426 +640 480 +640 361 +480 640 +640 481 +640 427 +640 480 +488 640 +640 427 +640 427 +640 400 +640 509 +423 640 +640 458 +640 480 +427 640 +640 480 +640 360 +640 480 +640 480 +640 426 +640 426 +640 480 +427 640 +483 500 +640 480 +640 427 +480 640 +480 640 +640 426 +400 300 +640 514 +500 328 +640 478 +640 480 +640 427 +640 480 +640 425 +375 500 +640 524 +640 376 +640 397 +640 427 +640 587 +640 480 +500 375 +640 373 +640 480 +640 481 +640 425 +640 443 +640 366 +640 426 +426 640 +424 640 +640 427 +426 640 +640 480 +640 426 +640 480 +640 480 +467 500 +424 640 +640 483 +640 478 +640 480 +640 424 +500 481 +640 426 +325 500 +500 333 +640 481 +480 640 +640 434 +480 384 +640 480 +640 480 +612 612 +640 427 +640 480 +640 425 +640 480 +640 480 +478 640 +640 252 +479 640 +640 480 +335 500 +375 500 +640 426 +427 640 +402 640 +640 640 +500 376 +480 640 +640 480 +640 409 +640 427 +640 481 +640 480 +640 360 +640 480 +500 334 +640 427 +480 640 +640 478 +480 640 +368 500 +640 425 +640 480 +375 500 +640 360 +640 480 +640 427 +640 480 +480 640 +426 640 +640 426 +640 427 +640 480 +640 622 +640 514 +480 360 +640 427 +640 428 +640 421 +640 380 +333 500 +640 480 +640 480 +640 480 +427 640 +640 360 +640 330 +640 425 +640 384 +640 480 +640 480 +640 429 +640 480 +640 480 +425 640 +427 640 +640 424 +640 480 +640 425 +640 480 +640 480 +640 454 +640 427 +500 374 +640 426 +640 480 +500 333 +640 458 +500 375 +640 427 +640 640 +640 427 +640 444 +640 426 +640 480 +640 480 +640 480 +427 640 +640 450 +461 640 +640 406 +612 612 +480 640 +640 480 +640 480 +640 634 +640 427 +640 480 +480 640 +640 424 +640 478 +552 640 +640 426 +640 480 +500 333 +640 426 +480 640 +499 640 +640 428 +374 500 +640 480 +640 480 +375 500 +480 640 +640 425 +640 478 +640 533 +640 427 +640 427 +480 640 +640 480 +457 500 +640 480 +500 375 +640 384 +500 375 +640 480 +640 480 +640 514 +640 427 +480 640 +640 480 +640 428 +640 424 +500 375 +375 500 +427 640 +640 427 +575 457 +640 426 +640 598 +640 427 +640 426 +640 478 +640 316 +640 481 +512 640 +494 640 +640 432 +413 550 +452 640 +500 333 +640 427 +640 480 +640 425 +640 480 +640 377 +480 640 +427 640 +640 426 +640 428 +419 500 +640 427 +480 640 +288 432 +426 640 +640 424 +640 427 +640 427 +640 426 +640 480 +640 480 +640 427 +427 640 +640 427 +500 375 +612 612 +427 640 +640 480 +640 313 +426 640 +640 426 +500 375 +480 640 +427 640 +640 480 +499 640 +500 333 +640 360 +500 375 +640 389 +612 612 +480 640 +640 478 +640 480 +640 427 +640 512 +640 424 +640 480 +427 640 +640 427 +417 640 +640 480 +640 640 +640 533 +640 480 +640 360 +426 640 +480 640 +640 480 +427 640 +426 640 +480 640 +640 480 +640 397 +640 511 +480 640 +426 640 +640 480 +640 427 +640 427 +640 480 +426 640 +427 640 +640 427 +640 427 +427 640 +442 500 +427 640 +640 427 +563 640 +500 375 +640 427 +612 612 +640 361 +640 479 +500 499 +640 424 +640 426 +640 433 +640 428 +640 441 +640 491 +640 639 +612 612 +500 333 +640 480 +640 424 +333 500 +375 500 +640 480 +640 427 +640 595 +640 554 +640 480 +640 427 +640 480 +640 543 +640 428 +640 426 +640 369 +494 640 +640 427 +640 425 +480 640 +425 640 +640 427 +640 427 +480 640 +500 334 +480 360 +612 612 +400 241 +640 480 +640 480 +640 427 +640 480 +333 640 +640 480 +640 426 +640 426 +640 480 +640 480 +640 439 +640 421 +640 426 +480 640 +500 357 +360 640 +427 640 +478 640 +480 640 +640 360 +512 640 +640 480 +640 480 +427 640 +500 375 +640 480 +426 640 +640 495 +584 640 +640 480 +640 427 +640 480 +640 361 +640 480 +423 564 +500 375 +640 425 +500 375 +612 612 +640 605 +640 427 +640 426 +640 480 +640 480 +640 427 +640 427 +640 428 +640 374 +640 426 +640 479 +640 478 +640 359 +480 640 +640 428 +640 425 +640 380 +480 640 +640 427 +640 480 +640 480 +640 480 +640 400 +640 425 +307 500 +640 376 +640 428 +640 427 +640 480 +640 480 +427 640 +640 480 +640 480 +500 375 +640 426 +375 500 +640 486 +500 341 +640 426 +640 498 +640 426 +426 640 +640 426 +640 427 +550 541 +640 480 +640 360 +640 427 +480 640 +640 480 +500 375 +640 426 +375 500 +480 640 +500 375 +452 640 +640 428 +640 478 +640 541 +375 500 +426 640 +640 480 +331 500 +640 427 +640 427 +640 425 +640 480 +640 427 +640 480 +640 265 +624 640 +640 480 +333 500 +640 480 +640 480 +640 425 +424 500 +640 427 +640 480 +640 426 +640 480 +640 426 +640 480 +640 432 +640 480 +640 519 +640 428 +640 543 +500 430 +640 480 +640 480 +640 427 +640 427 +640 480 +640 480 +640 425 +640 480 +406 640 +640 427 +640 480 +640 427 +640 480 +640 426 +640 360 +640 427 +640 480 +500 333 +640 480 +640 426 +640 480 +640 427 +640 427 +500 358 +640 480 +640 464 +500 333 +640 480 +549 640 +640 480 +367 500 +640 427 +640 423 +640 444 +640 428 +640 480 +500 500 +640 480 +640 480 +640 426 +640 428 +427 640 +480 640 +575 408 +500 375 +500 333 +640 427 +640 414 +640 296 +640 427 +480 640 +640 480 +640 431 +640 425 +640 480 +427 640 +448 640 +640 481 +428 640 +640 480 +640 480 +640 480 +640 427 +612 612 +429 640 +500 377 +640 480 +480 640 +640 423 +640 480 +640 427 +640 427 +427 640 +640 428 +640 428 +640 480 +640 427 +480 640 +640 427 +383 640 +640 360 +640 480 +640 397 +640 425 +427 640 +375 500 +500 375 +640 441 +640 427 +640 480 +427 640 +640 427 +480 640 +640 515 +640 404 +640 426 +640 480 +481 640 +640 427 +500 375 +640 428 +640 480 +640 480 +640 458 +640 424 +640 474 +400 467 +431 640 +640 305 +427 640 +425 640 +480 640 +640 427 +640 447 +640 480 +640 427 +640 427 +500 332 +640 480 +480 640 +480 640 +640 432 +640 427 +640 424 +640 480 +500 375 +640 426 +610 635 +640 426 +500 332 +480 640 +500 333 +640 512 +500 375 +640 427 +427 640 +640 427 +640 640 +640 427 +640 426 +480 640 +640 480 +612 612 +640 480 +424 640 +640 427 +500 375 +480 640 +640 480 +640 428 +640 427 +640 510 +480 640 +640 480 +640 427 +640 427 +429 640 +640 480 +640 444 +427 640 +640 640 +640 480 +640 427 +640 512 +375 500 +640 480 +640 480 +612 612 +423 640 +425 640 +640 359 +428 640 +343 640 +424 640 +640 427 +461 640 +640 640 +640 480 +640 515 +640 425 +640 427 +640 615 +640 480 +427 640 +640 426 +640 480 +640 429 +612 612 +640 430 +640 425 +640 480 +500 375 +640 480 +426 640 +640 480 +640 427 +640 427 +640 428 +427 640 +525 525 +640 480 +640 480 +640 480 +640 513 +640 383 +612 612 +620 640 +640 360 +500 375 +640 428 +640 640 +640 427 +640 427 +640 427 +333 500 +640 207 +640 615 +640 395 +480 640 +640 563 +612 612 +640 392 +640 480 +640 478 +640 427 +622 640 +640 427 +640 480 +640 480 +640 480 +500 375 +640 482 +640 478 +640 427 +480 640 +640 426 +332 500 +640 480 +640 480 +640 457 +640 480 +640 480 +368 640 +500 375 +612 612 +640 442 +640 480 +640 480 +427 640 +640 427 +612 612 +480 640 +375 500 +375 500 +640 360 +640 398 +640 409 +640 427 +427 640 +640 428 +514 640 +640 512 +640 480 +640 480 +500 329 +640 480 +640 476 +640 426 +500 375 +640 480 +500 375 +480 640 +500 375 +584 640 +640 480 +640 429 +640 425 +500 332 +640 424 +500 334 +640 427 +640 427 +640 344 +495 500 +640 427 +640 458 +640 533 +500 385 +640 480 +640 426 +640 639 +428 640 +640 427 +357 500 +640 425 +640 480 +640 480 +640 480 +640 361 +500 333 +480 640 +200 240 +427 640 +640 427 +640 481 +640 481 +640 480 +640 480 +640 381 +425 640 +640 428 +640 480 +640 426 +640 427 +640 480 +640 428 +640 414 +640 542 +640 480 +640 480 +640 480 +478 640 +640 410 +500 348 +640 480 +500 375 +640 425 +427 640 +640 427 +640 480 +640 427 +500 375 +640 428 +640 480 +640 480 +480 640 +428 640 +640 640 +640 426 +500 375 +640 429 +612 612 +640 456 +640 480 +396 640 +640 429 +640 480 +640 480 +612 612 +640 480 +640 427 +640 548 +640 532 +640 424 +640 640 +640 453 +640 427 +640 243 +612 612 +640 467 +640 425 +640 408 +333 500 +640 480 +640 480 +332 500 +333 500 +640 480 +640 480 +640 480 +640 480 +640 481 +500 375 +640 431 +640 427 +640 360 +500 358 +640 430 +640 613 +640 480 +640 427 +640 427 +640 480 +640 480 +640 480 +640 420 +640 360 +640 437 +640 527 +640 427 +640 438 +500 375 +461 640 +640 427 +640 427 +427 640 +427 640 +640 480 +426 640 +640 350 +426 640 +640 427 +500 333 +640 480 +640 461 +640 480 +640 427 +640 480 +640 426 +640 480 +640 379 +427 640 +640 461 +640 480 +640 426 +640 480 +640 480 +640 427 +640 359 +640 427 +480 640 +640 516 +640 432 +640 480 +640 480 +640 258 +500 375 +640 403 +500 375 +480 640 +640 433 +640 360 +640 349 +478 640 +640 427 +480 640 +640 480 +563 640 +445 640 +640 437 +640 428 +640 360 +640 480 +640 480 +424 640 +640 513 +640 480 +450 350 +640 427 +640 427 +640 398 +480 640 +400 300 +640 483 +640 428 +175 230 +427 640 +640 480 +640 428 +480 480 +640 513 +640 426 +427 640 +640 457 +427 640 +640 360 +640 360 +427 640 +480 640 +640 433 +640 426 +640 480 +640 383 +640 424 +500 375 +500 375 +604 452 +640 427 +500 375 +333 500 +640 318 +640 480 +640 427 +480 640 +640 640 +640 428 +640 427 +500 375 +640 425 +427 640 +640 431 +480 640 +463 640 +640 429 +428 640 +640 480 +640 640 +640 480 +612 612 +640 414 +640 427 +427 640 +485 640 +360 640 +461 500 +482 640 +640 480 +428 640 +479 640 +640 396 +640 426 +640 433 +640 390 +445 418 +640 427 +500 375 +511 640 +640 480 +640 480 +640 426 +640 427 +375 500 +500 375 +427 640 +640 480 +640 427 +640 480 +640 427 +640 427 +640 480 +640 420 +425 640 +333 500 +640 457 +640 427 +640 426 +640 513 +480 640 +480 640 +478 640 +640 427 +500 335 +640 426 +640 489 +640 480 +618 394 +640 480 +332 500 +640 508 +640 427 +640 480 +640 480 +640 427 +640 480 +425 640 +612 612 +640 421 +640 426 +480 640 +640 480 +640 480 +640 425 +640 237 +427 640 +640 360 +640 428 +640 480 +640 427 +426 640 +640 480 +480 640 +480 640 +640 427 +429 640 +640 424 +427 640 +640 480 +427 640 +640 479 +640 492 +479 640 +640 480 +640 427 +640 427 +500 375 +640 427 +640 480 +500 375 +640 640 +500 375 +426 640 +582 640 +640 480 +333 500 +427 640 +640 617 +500 375 +640 480 +480 640 +640 480 +334 500 +640 480 +640 426 +480 640 +500 333 +480 640 +356 640 +500 333 +426 640 +640 480 +640 425 +640 480 +640 640 +376 500 +640 480 +640 480 +360 640 +480 640 +640 480 +640 480 +640 368 +640 478 +640 426 +640 480 +500 375 +428 640 +640 480 +640 480 +480 640 +483 640 +500 375 +500 333 +424 640 +427 640 +640 480 +640 480 +640 428 +640 480 +480 640 +477 500 +480 640 +427 640 +640 436 +640 480 +640 480 +640 480 +500 332 +500 333 +480 640 +640 480 +640 428 +640 640 +640 620 +480 640 +640 427 +500 247 +640 480 +640 360 +633 640 +640 480 +640 426 +640 427 +640 320 +640 480 +640 480 +480 640 +640 480 +333 500 +433 500 +518 640 +640 424 +612 612 +500 375 +640 400 +640 480 +640 480 +640 415 +480 640 +640 427 +427 640 +640 480 +497 640 +640 480 +427 640 +612 612 +640 427 +640 513 +640 425 +640 625 +640 480 +640 425 +500 296 +640 426 +640 427 +478 640 +640 427 +500 375 +640 640 +640 480 +425 640 +640 428 +640 480 +427 640 +640 427 +640 428 +640 480 +640 427 +640 420 +426 640 +640 426 +640 480 +426 640 +640 427 +640 427 +612 612 +640 360 +640 281 +500 375 +640 379 +640 429 +500 378 +427 640 +640 427 +640 392 +500 375 +479 640 +500 375 +640 480 +608 640 +474 640 +640 480 +640 427 +500 375 +640 429 +640 480 +640 515 +640 480 +640 640 +640 480 +640 426 +640 442 +427 640 +480 640 +640 427 +640 426 +427 640 +500 374 +640 425 +640 425 +640 427 +640 480 +423 640 +640 480 +640 581 +640 427 +426 640 +640 491 +640 425 +612 612 +640 427 +640 426 +640 480 +500 375 +640 640 +640 424 +640 427 +500 375 +640 427 +640 427 +640 480 +640 480 +640 480 +640 426 +500 281 +500 375 +640 427 +640 480 +480 360 +640 410 +640 403 +478 640 +480 640 +640 478 +457 640 +640 427 +375 500 +334 500 +500 332 +640 394 +640 371 +640 426 +640 426 +425 640 +640 480 +640 480 +427 640 +640 427 +640 462 +640 191 +480 640 +640 480 +640 394 +640 438 +640 360 +640 640 +431 640 +640 427 +500 375 +640 398 +640 426 +427 640 +640 428 +383 640 +640 427 +640 424 +640 480 +426 640 +500 375 +480 640 +640 428 +640 427 +500 375 +640 425 +640 480 +375 500 +640 480 +640 428 +640 427 +640 419 +479 640 +427 640 +640 427 +480 640 +640 480 +455 500 +640 432 +640 478 +640 426 +426 640 +640 502 +640 427 +640 480 +640 331 +640 528 +640 480 +480 640 +640 427 +480 640 +640 399 +640 427 +640 424 +640 386 +640 480 +640 427 +413 640 +500 375 +640 480 +640 480 +480 640 +375 500 +640 427 +640 512 +640 480 +427 640 +640 425 +640 424 +640 426 +640 429 +640 428 +640 427 +640 480 +480 640 +640 424 +640 427 +480 640 +640 304 +612 612 +640 427 +640 346 +427 640 +640 427 +640 480 +272 408 +640 480 +480 360 +357 500 +612 612 +640 480 +640 427 +427 640 +375 500 +640 363 +500 375 +640 480 +640 480 +640 480 +400 500 +375 500 +640 479 +640 429 +640 366 +480 640 +480 640 +640 425 +640 401 +478 640 +375 500 +640 427 +640 458 +640 512 +640 480 +612 612 +640 498 +640 480 +480 640 +640 427 +640 480 +640 480 +480 640 +640 478 +427 640 +640 480 +480 640 +500 375 +640 480 +640 480 +640 480 +640 425 +640 427 +478 640 +640 361 +640 635 +500 375 +640 516 +427 640 +640 480 +640 368 +612 612 +640 427 +640 421 +427 640 +640 426 +375 500 +480 640 +640 460 +640 448 +640 303 +640 616 +500 281 +640 480 +640 426 +640 369 +640 429 +640 427 +640 640 +375 500 +640 480 +640 508 +640 427 +640 412 +500 375 +640 480 +640 480 +640 512 +375 500 +640 480 +640 427 +640 480 +640 458 +500 375 +640 457 +640 427 +351 500 +640 428 +640 480 +640 376 +500 333 +500 375 +612 612 +640 480 +640 427 +640 427 +640 426 +479 640 +600 400 +640 640 +640 428 +500 335 +574 640 +640 480 +372 558 +640 427 +640 408 +427 640 +640 471 +640 524 +640 360 +640 480 +640 424 +500 389 +640 480 +640 425 +480 640 +640 424 +640 361 +640 512 +640 480 +640 427 +640 463 +640 480 +640 426 +612 612 +500 375 +375 500 +640 360 +640 612 +640 480 +640 416 +640 408 +640 427 +640 606 +640 539 +640 480 +425 640 +640 425 +640 480 +332 500 +375 500 +375 500 +640 427 +375 500 +640 427 +640 425 +640 427 +640 427 +500 460 +640 480 +427 640 +640 428 +640 480 +500 375 +640 480 +640 265 +640 457 +640 480 +640 480 +640 512 +640 393 +640 428 +426 640 +500 375 +640 427 +640 480 +500 375 +640 429 +640 427 +480 640 +640 459 +612 612 +574 640 +640 480 +415 500 +400 597 +500 333 +640 427 +640 360 +640 480 +500 376 +640 480 +480 640 +427 640 +640 426 +640 426 +640 360 +640 427 +640 480 +640 427 +640 480 +640 480 +612 612 +640 480 +426 640 +640 480 +428 640 +360 640 +640 480 +428 640 +500 375 +640 480 +640 480 +640 424 +499 500 +612 612 +640 480 +640 487 +640 382 +640 430 +640 427 +640 427 +640 427 +640 426 +480 640 +640 425 +480 640 +640 437 +427 640 +640 426 +640 508 +534 640 +640 480 +375 500 +480 640 +640 480 +640 427 +612 612 +640 457 +640 427 +192 564 +500 335 +640 480 +640 480 +640 456 +453 640 +478 640 +640 640 +640 427 +640 485 +640 480 +333 500 +640 427 +640 358 +640 480 +640 426 +640 425 +470 640 +640 480 +640 426 +640 480 +640 427 +500 375 +500 416 +640 427 +640 429 +315 210 +640 480 +640 512 +480 640 +480 640 +500 500 +454 500 +478 640 +640 480 +640 426 +640 480 +640 429 +500 371 +640 410 +640 427 +640 448 +640 426 +640 453 +640 468 +640 425 +511 640 +640 480 +480 640 +427 640 +640 480 +478 640 +450 640 +500 401 +640 480 +640 383 +500 380 +640 425 +375 500 +640 427 +640 582 +640 480 +480 640 +500 375 +640 480 +640 480 +500 375 +534 640 +640 480 +640 417 +640 427 +640 480 +640 480 +640 427 +350 215 +640 426 +427 640 +640 427 +640 480 +500 328 +612 612 +640 426 +640 480 +640 480 +473 640 +435 640 +640 253 +427 640 +475 640 +640 368 +612 612 +640 478 +640 428 +640 426 +427 640 +612 612 +320 240 +427 640 +640 427 +640 480 +640 427 +500 333 +640 480 +640 426 +640 480 +426 640 +427 640 +640 360 +640 427 +640 516 +640 478 +426 640 +500 375 +640 481 +480 640 +640 427 +375 500 +640 427 +500 336 +640 400 +640 434 +640 480 +427 640 +333 500 +425 640 +480 640 +640 480 +640 427 +500 375 +480 360 +640 427 +640 425 +500 333 +640 383 +640 480 +640 427 +320 286 +640 480 +427 640 +640 426 +640 480 +480 640 +640 424 +640 241 +640 480 +600 450 +640 444 +375 500 +512 640 +640 427 +480 640 +640 480 +640 424 +640 405 +479 640 +640 497 +640 388 +640 401 +640 444 +640 427 +640 480 +640 426 +500 375 +640 427 +398 224 +640 480 +640 426 +640 409 +429 640 +640 482 +640 480 +640 427 +640 480 +426 640 +423 640 +425 640 +640 480 +612 612 +640 480 +427 640 +640 513 +640 424 +480 640 +640 367 +640 480 +640 577 +640 427 +640 480 +427 640 +383 640 +480 640 +427 640 +640 427 +640 425 +640 427 +612 612 +640 480 +500 332 +500 333 +480 640 +640 480 +640 480 +640 480 +427 640 +640 425 +428 640 +375 500 +431 640 +451 640 +640 480 +480 640 +640 480 +640 427 +640 424 +640 424 +640 480 +640 428 +480 640 +500 375 +640 427 +500 375 +640 427 +612 612 +640 428 +640 480 +640 480 +640 640 +612 612 +640 469 +640 426 +640 480 +640 427 +500 375 +640 427 +640 480 +427 640 +500 343 +600 407 +640 425 +640 480 +426 640 +640 457 +480 640 +640 427 +500 375 +428 640 +640 427 +640 427 +368 500 +640 441 +640 480 +640 480 +640 427 +640 480 +640 458 +427 640 +500 419 +640 425 +640 480 +640 334 +640 428 +480 640 +640 304 +640 361 +480 640 +427 640 +480 640 +640 540 +640 428 +640 480 +480 640 +427 640 +640 426 +612 612 +640 480 +640 570 +427 640 +334 500 +640 480 +640 459 +640 480 +375 500 +640 427 +640 425 +640 424 +500 375 +640 480 +500 333 +480 640 +640 498 +396 640 +640 431 +640 400 +640 480 +640 427 +640 426 +427 640 +640 480 +640 427 +640 480 +500 335 +640 480 +640 480 +500 358 +640 480 +640 425 +640 579 +425 640 +500 375 +640 428 +325 640 +640 480 +640 425 +480 640 +375 500 +640 426 +640 480 +640 359 +375 500 +320 240 +640 386 +640 480 +640 480 +640 480 +600 399 +375 500 +640 428 +640 481 +640 480 +640 480 +640 480 +640 427 +640 480 +640 283 +427 640 +424 640 +640 480 +480 640 +640 640 +640 359 +640 480 +640 400 +500 333 +640 518 +640 480 +640 458 +640 487 +640 360 +640 480 +480 640 +640 427 +640 420 +424 640 +640 563 +500 357 +640 480 +640 426 +640 470 +640 426 +480 640 +640 427 +640 447 +428 640 +640 480 +640 425 +640 480 +427 640 +430 640 +640 383 +640 429 +640 480 +640 316 +640 426 +640 480 +500 375 +480 640 +640 427 +640 447 +640 426 +640 425 +640 427 +640 509 +640 427 +480 640 +640 359 +480 640 +640 480 +640 480 +640 478 +640 426 +335 500 +501 640 +640 640 +500 417 +640 478 +640 480 +500 444 +640 360 +640 480 +480 640 +640 480 +640 427 +640 427 +500 473 +640 381 +640 480 +640 427 +640 425 +480 640 +640 481 +640 480 +640 480 +480 640 +500 376 +640 480 +640 427 +640 427 +640 480 +334 500 +640 366 +640 220 +428 640 +640 640 +640 426 +640 640 +640 480 +640 503 +640 480 +640 480 +640 427 +640 427 +512 384 +640 428 +640 480 +500 393 +640 480 +500 375 +640 480 +640 480 +640 426 +427 640 +480 640 +640 427 +640 480 +375 500 +427 640 +640 427 +640 422 +640 427 +640 446 +612 612 +480 640 +640 427 +480 640 +480 640 +426 640 +488 500 +480 640 +640 463 +640 480 +500 333 +612 612 +640 480 +640 427 +640 426 +640 480 +640 480 +500 375 +640 427 +640 371 +640 427 +640 427 +640 480 +640 480 +640 360 +640 421 +640 358 +640 360 +500 332 +640 480 +640 425 +640 424 +640 629 +428 640 +640 427 +640 569 +398 640 +640 424 +640 425 +640 427 +500 375 +640 425 +640 480 +640 427 +640 424 +375 500 +640 480 +640 480 +365 500 +640 250 +427 640 +500 375 +612 612 +417 600 +500 375 +640 480 +640 348 +640 427 +640 423 +612 612 +640 427 +515 640 +640 461 +640 427 +375 500 +640 494 +640 480 +640 426 +427 640 +500 375 +640 480 +640 427 +640 427 +500 333 +640 427 +640 480 +640 427 +640 640 +427 640 +480 640 +463 640 +427 640 +509 640 +427 640 +640 427 +640 480 +640 480 +640 480 +640 427 +612 612 +640 480 +640 480 +640 480 +540 403 +640 442 +640 425 +640 427 +640 427 +640 384 +640 481 +640 480 +640 309 +640 480 +640 480 +640 388 +640 480 +640 480 +640 480 +640 360 +640 640 +500 375 +640 427 +640 480 +640 480 +640 427 +640 480 +426 640 +640 425 +640 480 +640 424 +432 591 +640 439 +640 431 +425 640 +427 640 +640 480 +556 640 +640 428 +640 480 +640 427 +640 480 +640 480 +500 375 +640 427 +640 427 +480 640 +640 428 +640 359 +640 480 +640 480 +480 384 +640 571 +640 429 +640 427 +640 415 +640 424 +640 427 +640 480 +640 480 +640 427 +333 500 +480 640 +640 426 +500 375 +640 428 +480 640 +605 640 +640 427 +640 480 +640 360 +383 640 +640 427 +640 480 +462 640 +640 480 +427 640 +480 640 +640 427 +640 425 +285 309 +386 640 +500 375 +640 480 +640 446 +640 480 +640 480 +412 640 +640 480 +480 640 +640 473 +640 427 +427 640 +640 480 +480 640 +427 640 +333 500 +640 457 +640 424 +450 607 +640 427 +640 480 +640 480 +640 427 +640 480 +640 574 +640 427 +436 640 +640 384 +640 480 +640 428 +640 480 +640 332 +640 480 +640 589 +500 375 +640 427 +640 480 +640 414 +427 640 +640 503 +640 360 +375 500 +360 238 +425 640 +480 640 +426 640 +640 479 +480 640 +612 612 +361 640 +640 457 +640 480 +427 640 +640 427 +640 387 +640 431 +640 566 +640 480 +480 640 +359 640 +500 375 +500 332 +375 500 +640 480 +640 427 +480 640 +640 428 +480 640 +640 427 +375 500 +480 640 +612 612 +640 480 +640 426 +375 500 +427 640 +553 640 +640 480 +640 569 +640 427 +640 426 +640 480 +640 478 +640 480 +640 512 +500 375 +640 406 +640 427 +640 480 +640 427 +640 408 +500 333 +584 640 +480 640 +640 480 +640 480 +427 640 +480 640 +375 500 +640 426 +480 640 +640 563 +640 297 +640 476 +396 576 +640 425 +640 480 +640 480 +640 480 +640 427 +640 427 +640 426 +640 400 +500 375 +640 480 +640 427 +640 427 +640 427 +514 640 +427 640 +640 427 +640 480 +480 640 +640 636 +640 480 +640 541 +640 360 +640 353 +424 640 +640 427 +480 640 +640 427 +480 640 +324 319 +640 426 +480 640 +640 427 +640 427 +375 500 +640 480 +478 640 +640 451 +640 480 +500 375 +429 640 +334 500 +480 640 +416 640 +640 427 +640 478 +640 479 +640 480 +640 480 +640 480 +640 384 +640 416 +640 457 +640 424 +428 640 +640 427 +640 433 +640 480 +491 640 +640 426 +500 333 +640 427 +640 427 +640 480 +640 464 +500 382 +640 433 +640 428 +640 427 +384 640 +640 424 +640 480 +333 500 +426 640 +427 640 +640 427 +640 360 +640 484 +640 480 +500 375 +425 640 +427 640 +640 427 +640 480 +640 530 +640 428 +500 500 +469 640 +640 428 +480 640 +640 427 +480 640 +640 489 +375 500 +640 425 +640 480 +640 457 +640 428 +463 640 +500 375 +640 449 +640 480 +640 427 +640 426 +480 640 +640 429 +640 427 +640 480 +640 480 +640 429 +640 543 +500 374 +480 640 +640 427 +500 375 +640 427 +640 360 +640 480 +500 375 +612 612 +640 426 +640 427 +480 640 +640 469 +487 500 +640 426 +640 425 +640 425 +255 640 +640 480 +482 500 +640 361 +640 427 +640 424 +521 640 +640 480 +375 500 +640 640 +375 500 +431 640 +640 480 +640 458 +640 480 +640 427 +640 480 +427 640 +378 640 +640 427 +640 480 +640 640 +640 428 +640 427 +640 480 +640 480 +640 480 +463 640 +640 426 +640 427 +640 426 +640 640 +640 480 +640 480 +480 640 +612 612 +640 379 +427 640 +640 480 +640 424 +640 240 +640 480 +640 480 +640 480 +341 640 +425 640 +612 612 +480 640 +480 640 +640 428 +640 480 +640 480 +640 427 +640 427 +640 420 +480 640 +640 427 +427 640 +640 480 +640 428 +640 427 +500 375 +256 192 +640 417 +480 640 +612 612 +375 500 +640 480 +640 458 +375 500 +640 425 +500 375 +640 518 +478 640 +640 480 +640 361 +480 640 +427 640 +480 640 +640 427 +425 640 +640 427 +500 375 +640 427 +640 344 +480 640 +640 480 +500 375 +640 401 +480 640 +450 350 +443 640 +427 640 +640 366 +640 429 +640 480 +640 426 +640 453 +500 375 +640 480 +640 427 +640 427 +640 478 +500 325 +640 360 +640 480 +640 480 +640 427 +640 425 +500 469 +640 388 +640 480 +640 471 +473 640 +640 480 +428 640 +640 481 +640 480 +640 426 +640 425 +500 333 +500 375 +640 427 +640 480 +640 431 +640 533 +640 428 +480 640 +640 465 +480 640 +640 480 +341 500 +567 567 +640 427 +640 640 +640 425 +480 640 +375 500 +640 458 +597 640 +640 441 +500 387 +400 366 +640 426 +427 640 +612 612 +640 371 +500 375 +640 468 +480 640 +640 480 +640 426 +640 425 +640 353 +427 640 +640 480 +640 480 +640 426 +640 424 +640 428 +333 500 +640 480 +640 593 +640 425 +375 500 +640 478 +500 375 +640 424 +480 640 +640 424 +480 640 +640 311 +640 480 +640 480 +640 426 +640 428 +493 640 +640 480 +640 427 +640 480 +383 640 +500 375 +640 480 +640 427 +640 480 +640 478 +640 508 +640 427 +480 319 +500 375 +640 480 +640 426 +500 375 +640 480 +500 375 +640 426 +640 480 +480 640 +640 480 +480 640 +640 480 +640 447 +480 640 +640 633 +640 427 +640 427 +640 480 +640 504 +471 640 +640 288 +480 640 +427 640 +497 640 +640 480 +640 480 +640 480 +391 500 +640 427 +640 480 +640 480 +377 500 +375 500 +640 480 +640 427 +640 480 +500 375 +640 480 +640 478 +428 640 +640 428 +640 470 +480 640 +640 480 +640 427 +640 480 +640 427 +640 426 +640 480 +640 428 +640 425 +640 428 +640 427 +375 500 +640 425 +640 427 +640 515 +438 640 +640 480 +640 480 +426 640 +640 483 +640 425 +640 427 +640 478 +640 427 +640 427 +640 427 +640 510 +640 427 +500 375 +640 425 +612 612 +640 514 +640 453 +500 330 +480 640 +640 508 +640 427 +640 426 +640 480 +640 480 +640 479 +640 480 +640 480 +375 500 +640 427 +612 612 +441 640 +640 427 +640 480 +640 427 +500 375 +640 461 +640 360 +500 332 +426 640 +500 373 +480 640 +500 333 +500 331 +640 480 +640 360 +612 612 +640 480 +480 640 +640 457 +640 425 +640 427 +640 427 +375 500 +512 640 +375 500 +640 426 +640 478 +640 640 +640 480 +640 480 +500 375 +640 427 +500 375 +640 427 +640 480 +640 527 +480 640 +640 480 +427 640 +500 376 +612 612 +640 425 +334 500 +640 480 +640 480 +500 375 +640 458 +463 547 +480 640 +640 512 +640 480 +640 426 +640 424 +500 333 +640 481 +640 640 +612 612 +640 480 +640 360 +640 415 +640 426 +481 640 +640 434 +375 500 +452 640 +640 353 +640 480 +500 337 +640 480 +640 426 +480 640 +500 336 +640 401 +640 426 +640 558 +640 425 +640 424 +640 480 +640 428 +425 640 +640 427 +640 427 +640 425 +640 408 +640 427 +500 333 +640 480 +640 540 +640 480 +640 480 +640 480 +640 427 +640 397 +640 390 +640 640 +640 427 +640 395 +640 364 +640 480 +640 426 +500 333 +426 640 +640 480 +640 294 +640 427 +640 498 +640 424 +640 425 +500 375 +640 426 +640 421 +375 500 +364 640 +640 427 +640 428 +640 480 +480 640 +480 640 +640 480 +640 480 +640 429 +640 480 +640 480 +427 640 +640 427 +640 425 +640 428 +331 640 +640 480 +427 640 +640 426 +640 480 +530 640 +500 332 +640 339 +640 428 +500 433 +450 640 +429 640 +640 480 +640 480 +640 480 +640 425 +428 640 +640 427 +558 640 +640 480 +640 480 +640 427 +640 485 +500 375 +640 573 +640 640 +640 440 +500 343 +480 640 +640 480 +500 320 +480 640 +612 612 +640 473 +428 285 +640 427 +640 423 +480 640 +640 427 +640 640 +640 426 +640 375 +640 427 +500 332 +640 480 +640 640 +220 293 +640 537 +480 640 +200 305 +640 427 +640 492 +335 500 +640 353 +640 428 +500 375 +640 480 +640 427 +500 375 +640 428 +640 427 +640 480 +640 480 +640 360 +640 480 +640 480 +640 427 +429 640 +640 438 +640 426 +427 640 +640 480 +500 375 +640 480 +480 640 +640 427 +612 612 +640 410 +480 640 +427 640 +428 640 +640 480 +640 480 +640 480 +480 640 +464 640 +425 640 +640 419 +375 500 +500 375 +640 359 +500 333 +427 640 +640 446 +640 480 +640 353 +428 640 +640 425 +500 500 +480 640 +640 480 +640 478 +640 480 +640 424 +640 360 +480 640 +409 640 +640 427 +426 640 +640 428 +640 424 +640 425 +489 640 +375 500 +640 448 +640 427 +462 640 +640 425 +640 426 +640 480 +426 640 +640 480 +640 480 +640 427 +640 427 +480 640 +427 640 +480 640 +327 482 +427 640 +500 400 +640 396 +500 375 +375 500 +640 427 +640 428 +500 375 +640 427 +333 500 +640 427 +640 426 +640 428 +500 375 +479 640 +503 640 +640 489 +640 480 +640 379 +640 426 +640 480 +640 480 +480 640 +500 334 +640 480 +427 640 +500 375 +480 640 +640 426 +640 436 +640 480 +500 332 +500 375 +640 480 +612 612 +427 640 +500 375 +640 448 +640 480 +640 427 +640 438 +640 594 +640 480 +640 536 +640 427 +480 640 +640 480 +621 640 +640 480 +640 425 +640 464 +640 480 +481 640 +640 427 +480 640 +500 375 +640 427 +640 480 +640 480 +612 612 +640 480 +425 640 +640 427 +500 333 +640 480 +493 640 +448 336 +640 427 +640 480 +500 371 +427 640 +640 480 +640 424 +640 480 +640 427 +640 480 +625 640 +480 640 +640 427 +640 427 +640 425 +500 331 +640 553 +640 388 +640 480 +480 640 +640 426 +480 640 +640 427 +426 640 +480 640 +425 640 +640 427 +480 640 +640 428 +299 500 +640 480 +640 480 +640 424 +512 640 +640 427 +640 428 +478 640 +612 612 +640 456 +480 640 +640 426 +640 427 +640 455 +640 429 +640 430 +640 480 +640 360 +426 640 +640 480 +240 320 +375 500 +426 640 +500 333 +640 373 +640 434 +480 640 +480 640 +640 423 +640 427 +640 427 +500 334 +480 640 +640 478 +640 439 +500 419 +480 640 +640 480 +640 426 +500 375 +640 640 +640 548 +421 640 +640 428 +500 375 +640 427 +640 455 +463 640 +640 480 +500 331 +640 426 +500 333 +640 478 +640 428 +640 480 +480 640 +480 640 +640 480 +640 480 +640 480 +426 640 +640 441 +640 469 +640 480 +640 426 +640 480 +640 426 +640 454 +640 425 +640 480 +640 480 +640 427 +640 480 +640 480 +640 368 +640 480 +640 464 +640 428 +640 480 +640 428 +640 480 +640 480 +640 428 +640 480 +480 640 +480 640 +640 428 +640 428 +612 612 +640 427 +640 480 +500 336 +640 427 +480 640 +500 375 +480 640 +640 480 +400 500 +640 427 +640 474 +453 640 +640 303 +640 480 +640 514 +640 427 +640 568 +480 640 +640 359 +640 457 +640 480 +640 360 +640 427 +640 466 +640 339 +426 640 +640 478 +640 359 +640 427 +640 425 +480 640 +480 640 +640 480 +480 640 +640 482 +640 480 +640 360 +640 531 +640 480 +492 640 +640 483 +640 419 +363 640 +640 478 +640 426 +640 480 +480 640 +640 427 +640 480 +500 375 +640 426 +640 480 +427 640 +640 434 +640 428 +480 640 +640 428 +640 480 +500 375 +640 426 +640 480 +640 424 +357 500 +640 480 +375 500 +640 425 +374 500 +640 480 +640 360 +375 500 +640 427 +640 480 +500 334 +640 480 +640 427 +640 501 +427 640 +640 427 +640 427 +640 480 +640 427 +640 427 +480 640 +640 427 +640 427 +640 427 +640 480 +640 480 +500 333 +640 480 +640 428 +640 480 +640 310 +427 640 +640 512 +361 640 +640 427 +425 640 +417 640 +640 457 +640 424 +640 640 +612 612 +640 426 +480 640 +640 427 +640 424 +640 425 +500 334 +640 480 +480 640 +480 640 +375 500 +500 276 +640 360 +640 480 +640 480 +480 640 +640 480 +640 480 +640 444 +480 640 +640 429 +640 479 +640 400 +640 480 +425 640 +640 427 +480 640 +640 480 +640 425 +640 480 +480 640 +500 375 +446 640 +640 480 +640 374 +375 500 +640 427 +352 288 +371 500 +640 426 +640 427 +640 400 +500 333 +480 640 +640 418 +500 333 +375 500 +500 375 +640 487 +640 427 +474 640 +600 397 +640 480 +640 480 +640 151 +640 480 +640 480 +612 612 +480 320 +500 333 +640 480 +480 640 +549 640 +500 343 +375 500 +640 426 +480 640 +640 427 +476 640 +640 427 +640 426 +640 459 +640 423 +426 640 +640 424 +640 480 +640 429 +640 478 +640 424 +640 428 +480 640 +640 429 +480 640 +480 640 +640 408 +640 480 +640 480 +640 427 +640 425 +640 512 +640 426 +640 478 +612 612 +640 498 +640 480 +640 426 +494 640 +640 480 +480 640 +640 481 +640 508 +640 393 +640 386 +640 480 +480 640 +640 480 +640 458 +640 480 +640 427 +500 375 +500 375 +640 480 +320 240 +640 401 +640 390 +463 640 +640 478 +427 640 +640 480 +500 375 +640 480 +640 428 +480 640 +640 428 +640 424 +640 428 +640 426 +640 480 +640 480 +480 640 +640 480 +480 640 +640 501 +640 424 +640 480 +640 427 +640 426 +375 500 +640 414 +640 468 +640 427 +640 428 +640 480 +640 426 +640 480 +640 480 +398 640 +640 443 +640 425 +612 612 +640 425 +640 480 +375 500 +640 424 +480 298 +346 407 +640 428 +600 441 +500 375 +427 640 +640 425 +640 480 +500 375 +480 640 +480 640 +640 480 +640 426 +640 480 +640 480 +480 640 +500 333 +427 640 +500 356 +640 480 +640 480 +640 427 +426 640 +640 427 +427 640 +640 189 +640 427 +640 427 +640 480 +480 640 +612 612 +640 446 +640 425 +640 425 +480 360 +640 428 +640 428 +640 426 +333 500 +640 425 +500 308 +640 426 +480 640 +612 612 +640 425 +480 640 +640 427 +640 469 +612 612 +612 612 +640 416 +426 640 +500 332 +480 640 +500 338 +375 500 +360 640 +640 427 +640 428 +640 427 +640 428 +640 427 +500 332 +640 426 +640 425 +500 375 +640 427 +640 427 +640 425 +640 480 +427 640 +640 360 +373 496 +640 427 +640 607 +375 500 +640 480 +427 640 +640 480 +640 427 +526 640 +426 640 +333 500 +640 428 +478 500 +425 640 +640 428 +350 325 +640 458 +640 480 +640 427 +640 324 +640 480 +640 426 +640 427 +640 425 +500 320 +426 640 +427 640 +640 427 +640 426 +640 480 +640 477 +480 640 +640 429 +640 480 +640 484 +360 500 +375 500 +640 427 +640 581 +384 500 +640 427 +640 424 +496 640 +640 342 +500 375 +640 480 +427 640 +640 480 +500 332 +640 469 +451 500 +640 426 +500 374 +640 480 +640 360 +640 360 +480 640 +640 418 +427 640 +480 640 +640 480 +640 360 +640 377 +480 640 +640 427 +640 458 +640 424 +640 425 +480 640 +640 480 +640 426 +640 443 +640 480 +575 640 +500 375 +640 640 +640 402 +640 427 +640 480 +612 612 +640 396 +352 288 +480 640 +640 480 +640 431 +640 427 +640 359 +640 427 +640 480 +640 539 +500 333 +545 640 +640 428 +500 375 +640 640 +426 640 +640 624 +500 382 +640 480 +640 427 +640 428 +375 500 +640 359 +640 431 +640 491 +640 426 +500 333 +640 479 +566 640 +640 359 +333 500 +640 640 +640 480 +640 480 +425 640 +612 612 +480 640 +640 480 +640 478 +640 478 +480 640 +640 360 +640 458 +640 428 +500 371 +640 426 +500 375 +640 426 +640 480 +640 428 +640 426 +640 485 +640 426 +426 640 +640 427 +640 426 +375 500 +640 480 +480 640 +640 361 +640 512 +640 480 +426 640 +640 427 +640 640 +640 480 +385 500 +640 480 +640 480 +640 480 +640 480 +640 480 +640 425 +500 473 +500 374 +640 480 +640 426 +500 330 +640 445 +640 480 +640 449 +512 640 +479 640 +640 480 +500 375 +640 480 +640 425 +640 480 +640 427 +480 640 +640 478 +640 480 +500 375 +427 640 +512 640 +640 428 +640 480 +640 424 +457 640 +640 480 +375 500 +427 640 +640 426 +500 375 +640 480 +640 427 +640 480 +500 375 +640 424 +640 426 +640 427 +640 360 +640 408 +424 640 +612 612 +640 426 +640 522 +640 427 +640 425 +640 428 +640 427 +500 375 +640 480 +640 480 +640 480 +640 408 +640 480 +640 480 +640 348 +640 427 +640 480 +640 480 +500 332 +500 332 +383 640 +640 464 +640 426 +640 480 +640 480 +640 480 +640 480 +640 430 +640 426 +640 480 +640 480 +640 427 +427 640 +640 427 +640 360 +344 500 +640 427 +640 512 +640 426 +427 640 +640 360 +640 427 +640 480 +640 383 +640 480 +640 453 +640 428 +297 500 +640 480 +500 640 +640 480 +363 484 +427 640 +500 335 +640 425 +640 424 +480 640 +640 480 +640 586 +612 612 +640 480 +640 427 +640 480 +480 640 +375 500 +500 375 +640 424 +640 480 +640 426 +356 640 +640 427 +640 480 +480 640 +640 480 +480 640 +640 480 +640 480 +424 640 +640 415 +500 375 +478 640 +640 426 +480 640 +640 427 +480 640 +500 344 +640 493 +480 640 +640 582 +640 427 +640 480 +640 426 +500 375 +500 331 +480 640 +500 375 +640 398 +640 480 +640 480 +640 427 +640 508 +640 433 +640 480 +640 425 +640 480 +640 427 +640 554 +500 375 +640 480 +640 515 +338 500 +640 574 +426 640 +427 640 +500 375 +640 425 +640 428 +500 333 +640 425 +500 375 +640 480 +640 427 +578 640 +640 478 +640 480 +640 336 +500 335 +640 360 +333 500 +500 333 +480 640 +640 480 +500 375 +320 213 +640 480 +640 480 +485 640 +640 480 +428 640 +500 333 +427 640 +640 427 +640 480 +640 360 +612 612 +640 424 +640 480 +640 469 +640 480 +640 427 +640 480 +640 640 +335 500 +640 426 +640 480 +640 427 +423 640 +640 427 +640 480 +640 427 +612 612 +640 396 +640 427 +480 640 +640 480 +640 409 +640 427 +640 480 +612 612 +640 480 +640 480 +640 375 +640 459 +480 640 +640 458 +640 480 +427 640 +640 378 +640 480 +640 427 +480 640 +320 500 +640 428 +500 375 +640 543 +640 441 +431 640 +640 399 +640 480 +640 582 +640 431 +640 417 +427 640 +640 427 +640 480 +640 480 +640 480 +640 428 +640 360 +640 426 +640 427 +640 480 +640 459 +480 640 +640 556 +480 640 +640 294 +500 375 +640 308 +640 480 +640 425 +500 310 +332 500 +640 480 +640 480 +480 640 +640 429 +640 480 +500 375 +335 500 +640 310 +640 427 +640 526 +640 427 +640 426 +640 454 +500 375 +640 566 +640 481 +640 480 +226 640 +640 480 +640 360 +500 333 +640 328 +640 425 +480 640 +640 427 +640 480 +640 480 +640 427 +640 480 +640 480 +640 480 +640 640 +640 426 +640 424 +640 480 +640 480 +640 482 +467 640 +640 457 +640 480 +480 640 +640 480 +600 399 +640 364 +640 428 +640 427 +640 428 +500 375 +500 375 +640 453 +640 427 +640 359 +426 640 +640 480 +640 480 +375 500 +640 427 +480 640 +640 480 +640 427 +640 190 +640 482 +640 428 +640 427 +640 428 +425 640 +500 375 +640 360 +640 424 +640 427 +640 456 +640 480 +640 480 +640 480 +640 480 +640 480 +375 500 +640 425 +640 427 +640 438 +640 446 +640 427 +612 612 +475 500 +480 640 +407 640 +640 481 +640 427 +424 640 +640 480 +640 480 +640 480 +426 640 +640 427 +640 480 +640 425 +640 480 +480 640 +640 429 +500 375 +640 480 +612 612 +640 427 +500 375 +500 400 +640 216 +640 480 +640 480 +628 640 +640 453 +427 640 +640 428 +640 427 +612 612 +640 427 +640 480 +480 640 +640 425 +640 480 +612 612 +640 487 +640 425 +640 428 +640 266 +640 361 +640 480 +480 640 +640 428 +640 426 +640 640 +281 640 +640 454 +612 612 +640 478 +640 426 +424 640 +478 640 +480 640 +640 473 +500 375 +375 500 +640 424 +375 500 +612 612 +612 612 +640 480 +640 360 +640 431 +640 480 +640 393 +478 640 +500 301 +375 500 +640 426 +640 427 +640 480 +640 480 +375 500 +640 424 +480 640 +640 480 +640 427 +640 480 +640 427 +426 640 +480 640 +480 640 +640 480 +640 478 +640 426 +478 640 +640 428 +640 427 +480 640 +480 640 +404 640 +543 640 +425 640 +640 360 +640 480 +640 464 +612 612 +500 400 +640 607 +478 640 +640 427 +640 426 +640 479 +640 480 +640 480 +640 480 +640 428 +640 425 +640 359 +640 426 +640 359 +640 359 +640 462 +480 640 +640 640 +640 425 +640 400 +640 480 +640 428 +640 480 +640 478 +640 426 +480 640 +640 480 +640 576 +375 500 +426 640 +640 509 +427 640 +640 480 +640 480 +640 427 +500 375 +480 640 +640 406 +640 427 +593 640 +427 640 +612 612 +640 426 +375 500 +640 480 +512 640 +612 640 +640 316 +500 375 +640 427 +427 640 +500 333 +333 500 +500 375 +640 413 +375 500 +480 640 +640 480 +568 320 +500 375 +640 480 +640 421 +640 480 +427 640 +500 375 +427 640 +428 640 +320 240 +500 368 +640 480 +480 640 +640 428 +425 640 +640 480 +640 480 +640 640 +427 640 +640 480 +640 480 +640 427 +640 427 +480 640 +640 480 +480 640 +500 375 +640 480 +640 427 +570 640 +612 612 +640 513 +640 480 +640 480 +640 427 +640 480 +640 427 +640 360 +640 427 +640 426 +640 480 +640 422 +640 425 +612 612 +457 640 +500 334 +640 512 +640 338 +640 425 +480 640 +640 480 +640 476 +480 640 +612 612 +640 480 +640 319 +500 333 +360 302 +640 482 +427 640 +640 427 +640 426 +482 640 +480 640 +427 640 +428 640 +640 427 +640 428 +401 640 +640 398 +640 512 +640 458 +426 640 +640 501 +640 427 +357 500 +450 640 +480 640 +640 481 +264 400 +640 480 +640 480 +375 500 +640 429 +640 360 +640 427 +640 427 +640 480 +479 640 +640 425 +640 427 +640 480 +640 480 +640 427 +480 640 +426 640 +500 313 +500 375 +640 640 +640 429 +640 480 +500 333 +457 640 +352 500 +640 480 +640 480 +640 427 +400 500 +640 480 +500 375 +480 640 +480 640 +378 640 +209 500 +640 480 +640 427 +640 480 +640 480 +640 480 +640 480 +640 433 +640 428 +426 640 +640 480 +640 457 +640 422 +640 475 +640 480 +640 427 +640 512 +640 427 +640 480 +640 429 +640 429 +640 427 +640 480 +640 480 +426 640 +640 428 +640 413 +640 480 +640 480 +640 427 +427 640 +640 426 +640 632 +640 427 +640 359 +480 640 +640 426 +640 427 +500 333 +640 427 +640 510 +640 479 +640 428 +500 333 +480 640 +612 612 +640 427 +640 433 +640 424 +500 333 +640 427 +640 426 +640 457 +640 427 +426 640 +500 375 +640 480 +640 480 +640 435 +640 480 +640 360 +478 640 +640 427 +640 480 +612 612 +426 640 +640 426 +640 425 +640 427 +480 640 +640 361 +640 480 +640 426 +640 453 +640 480 +480 640 +640 480 +480 640 +480 640 +425 640 +640 428 +640 427 +640 425 +640 428 +500 318 +640 399 +500 375 +631 640 +640 427 +640 480 +480 640 +480 640 +640 480 +427 640 +640 480 +640 451 +640 480 +500 375 +512 640 +640 480 +500 500 +640 448 +480 640 +640 383 +480 640 +500 414 +640 480 +500 375 +640 427 +500 375 +425 640 +640 510 +500 421 +640 427 +640 480 +480 640 +480 640 +400 500 +640 427 +640 426 +640 427 +500 375 +640 428 +438 640 +500 333 +640 428 +640 480 +480 640 +375 500 +640 480 +480 640 +640 429 +640 480 +640 429 +640 480 +640 480 +640 427 +480 640 +640 480 +640 618 +421 640 +640 383 +600 450 +528 360 +640 427 +640 480 +640 425 +427 640 +427 640 +640 428 +640 480 +640 481 +439 640 +640 427 +427 640 +480 640 +457 640 +640 342 +480 640 +640 427 +500 375 +480 640 +640 426 +640 424 +640 427 +510 640 +281 500 +640 481 +640 480 +375 500 +640 480 +640 383 +640 480 +612 612 +425 640 +640 480 +640 427 +640 425 +500 347 +640 427 +500 375 +640 480 +640 427 +483 640 +640 480 +640 480 +640 425 +640 480 +500 379 +480 640 +640 466 +640 483 +640 480 +640 640 +640 640 +640 480 +324 640 +640 422 +640 427 +550 400 +640 480 +640 416 +640 480 +640 520 +640 426 +500 332 +428 640 +640 480 +640 424 +640 427 +640 480 +640 480 +640 480 +640 427 +640 480 +640 462 +640 427 +427 640 +640 427 +500 400 +500 332 +640 357 +640 427 +640 480 +640 427 +640 424 +640 440 +500 375 +640 428 +640 480 +640 378 +640 411 +640 480 +640 480 +640 427 +640 411 +640 480 +640 480 +640 459 +640 480 +640 480 +480 640 +640 480 +640 480 +640 427 +640 480 +640 426 +640 480 +427 640 +640 427 +427 640 +640 512 +379 640 +640 480 +640 428 +427 640 +427 640 +640 430 +436 640 +640 427 +500 375 +640 480 +500 375 +640 480 +640 480 +500 333 +640 424 +640 427 +500 375 +640 426 +640 381 +640 480 +640 406 +333 500 +640 480 +500 333 +418 640 +425 640 +640 360 +640 425 +640 640 +640 480 +640 427 +500 175 +640 427 +640 423 +640 480 +640 400 +640 224 +640 400 +640 474 +480 640 +640 389 +640 392 +640 433 +500 375 +640 480 +640 429 +432 640 +640 480 +640 428 +500 333 +640 427 +640 480 +480 640 +640 480 +424 640 +640 480 +640 442 +500 375 +640 480 +640 427 +500 334 +480 640 +500 354 +612 612 +333 500 +640 427 +640 554 +480 640 +640 479 +640 480 +427 640 +640 480 +461 640 +640 427 +640 513 +640 458 +640 480 +480 640 +375 500 +640 517 +640 480 +480 640 +640 426 +427 640 +640 480 +500 375 +640 509 +640 480 +640 477 +426 640 +640 427 +640 482 +640 427 +500 333 +424 640 +640 480 +640 480 +480 640 +640 480 +361 640 +426 640 +640 427 +640 427 +640 480 +500 499 +640 544 +640 640 +640 478 +612 612 +400 500 +640 480 +640 421 +640 480 +640 426 +640 337 +640 427 +640 429 +500 334 +640 484 +640 480 +425 640 +411 640 +480 640 +640 428 +640 427 +640 460 +640 427 +446 500 +370 500 +500 375 +500 377 +480 640 +640 429 +640 458 +640 480 +480 640 +640 371 +640 480 +480 640 +500 375 +640 426 +640 640 +640 512 +640 480 +640 424 +640 428 +480 640 +500 375 +640 480 +500 375 +444 500 +454 640 +500 375 +640 360 +640 480 +500 375 +640 480 +640 640 +640 322 +640 426 +640 479 +220 155 +375 500 +640 457 +640 427 +640 480 +640 427 +500 375 +640 640 +479 640 +640 428 +428 640 +640 434 +375 500 +640 480 +640 399 +616 640 +640 480 +480 640 +640 640 +427 640 +640 427 +480 640 +640 427 +640 480 +640 625 +500 375 +640 425 +640 426 +640 432 +640 480 +640 427 +509 640 +546 640 +640 428 +640 480 +640 426 +640 428 +640 426 +640 470 +640 480 +640 495 +640 338 +640 428 +500 326 +480 640 +427 640 +480 640 +640 363 +640 439 +375 500 +640 544 +500 375 +424 640 +511 640 +640 427 +427 640 +640 427 +640 478 +640 397 +640 480 +478 640 +480 640 +480 360 +500 333 +640 427 +425 640 +427 640 +511 640 +640 480 +375 500 +640 480 +478 640 +640 427 +640 427 +427 640 +640 480 +375 500 +480 640 +640 427 +640 455 +640 426 +640 427 +599 640 +480 640 +640 312 +640 427 +640 427 +427 640 +427 640 +604 453 +640 427 +640 480 +427 640 +500 375 +640 427 +500 335 +427 640 +500 333 +640 427 +640 426 +500 375 +640 463 +427 640 +640 428 +640 429 +640 427 +640 426 +640 426 +640 480 +640 480 +385 640 +640 439 +640 480 +500 375 +640 480 +427 640 +640 480 +640 435 +493 640 +640 480 +640 480 +640 480 +640 427 +640 427 +467 640 +640 426 +384 576 +500 375 +640 480 +640 453 +640 239 +600 387 +640 426 +482 640 +640 426 +640 428 +640 480 +640 427 +640 427 +500 375 +546 640 +480 640 +640 480 +426 640 +640 480 +640 480 +640 427 +640 480 +640 428 +543 640 +640 480 +500 375 +640 480 +640 423 +640 480 +640 626 +640 428 +480 640 +640 480 +640 425 +640 429 +479 640 +427 640 +480 640 +640 426 +563 640 +640 480 +333 500 +480 640 +640 427 +526 640 +640 424 +640 640 +640 480 +429 640 +500 309 +640 427 +640 427 +640 151 +640 428 +640 480 +640 480 +640 427 +640 351 +640 424 +640 426 +483 640 +640 360 +500 356 +640 480 +640 360 +640 427 +500 333 +640 424 +640 427 +640 480 +640 432 +640 480 +612 612 +640 413 +640 427 +640 480 +640 427 +427 640 +640 427 +640 427 +640 480 +375 500 +424 640 +640 425 +640 425 +640 480 +480 640 +500 383 +640 480 +640 480 +429 640 +480 640 +500 375 +640 480 +500 360 +640 479 +640 427 +480 640 +640 429 +375 500 +500 375 +640 400 +640 480 +640 478 +640 455 +640 427 +489 640 +640 343 +640 480 +332 500 +640 640 +640 427 +480 640 +640 480 +480 640 +640 427 +640 480 +500 375 +427 640 +640 428 +640 568 +640 426 +640 425 +640 480 +612 612 +640 512 +640 425 +480 640 +640 480 +640 425 +640 427 +640 427 +500 375 +640 480 +640 446 +640 548 +640 480 +317 500 +640 426 +640 529 +640 426 +640 429 +640 475 +556 640 +458 640 +640 480 +338 500 +640 480 +640 427 +500 500 +640 427 +333 500 +426 640 +640 640 +500 375 +480 640 +640 640 +640 427 +640 438 +640 640 +640 538 +640 425 +640 480 +375 500 +640 426 +640 427 +640 476 +640 400 +640 480 +480 640 +640 427 +425 640 +640 428 +640 390 +640 450 +640 426 +640 480 +500 375 +640 429 +640 429 +500 375 +640 427 +640 480 +500 500 +640 482 +640 428 +640 444 +640 480 +428 640 +480 640 +640 501 +640 480 +640 351 +640 480 +480 640 +429 640 +612 612 +640 480 +640 426 +640 480 +640 427 +640 480 +640 428 +500 375 +640 480 +640 480 +640 425 +413 640 +640 478 +500 500 +640 480 +640 481 +577 640 +480 640 +500 500 +640 480 +640 640 +640 480 +640 454 +640 363 +640 480 +640 368 +640 480 +640 480 +640 479 +640 409 +640 480 +426 640 +480 640 +640 425 +480 640 +427 640 +640 476 +640 425 +477 323 +480 640 +480 640 +640 480 +640 480 +640 480 +640 479 +640 425 +480 640 +640 480 +640 427 +640 426 +640 480 +640 480 +428 640 +640 480 +640 427 +640 480 +640 432 +426 640 +424 640 +500 375 +184 200 +640 425 +640 480 +640 480 +640 427 +640 426 +480 360 +640 480 +640 480 +640 480 +640 449 +426 640 +640 427 +640 480 +640 480 +640 400 +640 427 +425 640 +640 427 +640 480 +640 480 +640 426 +333 500 +640 428 +640 480 +428 640 +500 375 +480 640 +612 612 +450 338 +480 640 +640 425 +640 411 +457 640 +640 480 +640 427 +640 424 +480 640 +500 375 +426 640 +427 640 +480 640 +640 480 +480 640 +640 439 +640 480 +640 427 +425 640 +640 390 +640 640 +428 640 +640 480 +640 478 +375 500 +600 450 +640 480 +500 422 +640 480 +640 480 +640 431 +640 480 +473 640 +529 640 +640 427 +640 480 +550 400 +640 480 +612 612 +500 375 +426 640 +380 640 +375 500 +640 480 +640 429 +640 427 +640 427 +500 376 +383 640 +640 426 +640 480 +640 480 +427 640 +640 480 +500 375 +612 612 +640 480 +480 640 +640 416 +640 480 +480 640 +640 427 +500 400 +640 480 +640 427 +500 375 +640 640 +500 375 +623 640 +375 500 +640 359 +480 640 +640 480 +480 640 +480 640 +640 427 +640 428 +640 640 +640 512 +375 500 +640 480 +640 426 +640 428 +480 360 +489 640 +500 333 +480 640 +640 428 +375 500 +442 330 +640 428 +640 480 +612 612 +360 640 +500 375 +640 497 +640 427 +640 359 +640 427 +500 375 +640 512 +320 238 +425 640 +640 480 +640 480 +640 426 +640 427 +640 444 +612 612 +375 500 +478 640 +640 555 +640 426 +480 640 +640 480 +640 480 +640 426 +640 480 +640 426 +640 427 +640 426 +640 419 +640 427 +480 640 +427 640 +640 480 +640 480 +640 427 +640 480 +640 427 +480 640 +640 480 +640 360 +480 640 +500 375 +504 379 +473 500 +500 375 +480 640 +640 427 +427 640 +640 427 +448 296 +640 424 +640 480 +640 427 +640 384 +640 425 +640 424 +639 640 +640 426 +640 427 +640 480 +294 500 +640 427 +640 427 +640 457 +426 640 +640 512 +640 480 +640 480 +640 467 +640 423 +500 232 +640 480 +361 640 +433 640 +640 427 +446 640 +640 427 +640 480 +640 427 +640 480 +640 480 +612 612 +435 640 +640 478 +426 640 +640 425 +640 424 +640 427 +640 480 +640 426 +640 446 +640 480 +640 428 +352 500 +480 640 +500 375 +406 640 +640 480 +456 640 +640 427 +640 427 +480 640 +640 480 +640 480 +640 480 +640 480 +640 427 +640 359 +480 640 +640 465 +362 640 +640 480 +640 426 +640 640 +640 426 +640 480 +426 640 +640 480 +640 424 +480 640 +640 480 +640 480 +453 640 +534 640 +427 640 +381 640 +640 427 +640 478 +640 574 +427 640 +500 406 +640 154 +481 640 +612 612 +640 361 +640 480 +640 426 +640 353 +480 640 +640 480 +640 428 +640 480 +640 427 +480 640 +640 480 +640 419 +640 481 +640 427 +500 375 +500 375 +612 612 +640 426 +640 480 +480 640 +374 500 +640 454 +457 640 +640 451 +640 480 +640 427 +640 480 +640 380 +413 640 +320 240 +640 427 +640 424 +500 333 +600 410 +333 500 +480 640 +640 427 +640 480 +640 405 +640 427 +640 480 +427 640 +640 480 +640 428 +480 640 +640 478 +640 441 +480 640 +640 480 +429 640 +640 427 +500 500 +640 427 +450 640 +426 640 +640 273 +640 430 +640 503 +612 612 +640 428 +640 428 +640 427 +640 427 +640 480 +640 453 +640 640 +640 480 +480 640 +640 480 +640 480 +640 424 +426 640 +640 499 +640 480 +640 427 +640 485 +640 428 +640 480 +640 480 +640 427 +640 480 +480 480 +424 640 +640 480 +480 640 +500 400 +640 425 +500 333 +640 427 +640 480 +640 427 +640 435 +480 640 +500 333 +500 375 +612 612 +640 427 +640 480 +640 419 +500 333 +640 480 +640 427 +640 603 +640 427 +640 429 +640 405 +640 427 +640 427 +640 480 +500 400 +480 640 +500 333 +640 425 +640 435 +333 500 +640 426 +640 476 +480 640 +640 427 +634 401 +425 640 +640 427 +481 640 +640 480 +375 500 +640 427 +640 421 +640 425 +640 426 +640 426 +640 480 +640 480 +640 427 +419 640 +500 333 +640 480 +500 333 +640 480 +480 464 +640 427 +480 640 +640 539 +640 426 +640 480 +640 425 +500 332 +427 640 +429 640 +640 429 +640 424 +640 427 +640 480 +500 375 +640 429 +640 426 +427 640 +500 374 +640 426 +480 640 +375 500 +640 480 +375 500 +480 640 +389 640 +640 425 +427 640 +612 612 +640 480 +640 427 +640 480 +640 427 +640 340 +612 612 +640 427 +640 429 +640 451 +640 481 +640 512 +500 497 +480 640 +640 472 +640 480 +640 480 +640 480 +640 427 +640 480 +640 458 +640 425 +640 427 +640 444 +640 480 +425 640 +640 440 +640 425 +640 480 +478 640 +640 360 +640 480 +640 480 +640 640 +426 640 +640 427 +640 457 +427 640 +640 480 +640 480 +480 640 +640 480 +480 640 +480 640 +480 640 +640 426 +640 426 +640 480 +500 332 +500 375 +500 334 +640 463 +480 640 +640 425 +482 640 +501 640 +640 403 +640 433 +640 457 +640 427 +640 427 +640 480 +500 373 +640 488 +640 478 +640 480 +640 480 +454 640 +328 500 +640 494 +640 480 +640 426 +640 441 +640 427 +428 640 +478 640 +640 471 +480 640 +425 640 +640 426 +640 425 +640 480 +640 360 +375 500 +640 480 +640 480 +640 640 +640 512 +427 640 +640 427 +640 640 +500 375 +600 600 +640 426 +640 449 +478 640 +640 427 +480 640 +375 500 +480 640 +640 480 +640 426 +640 480 +640 480 +612 612 +640 480 +542 640 +425 640 +537 640 +500 375 +640 426 +640 427 +389 500 +640 359 +640 426 +640 425 +640 427 +640 424 +500 375 +640 402 +640 480 +306 640 +640 426 +640 424 +533 640 +640 423 +640 427 +640 480 +640 427 +640 427 +427 640 +640 428 +500 415 +640 427 +500 437 +640 428 +360 500 +640 480 +612 612 +480 640 +640 425 +640 427 +612 612 +426 640 +452 500 +640 503 +424 640 +612 612 +640 480 +500 333 +640 426 +414 640 +640 414 +640 396 +640 480 +640 480 +640 480 +640 480 +640 604 +640 427 +500 362 +640 426 +640 480 +333 500 +427 640 +480 640 +640 414 +640 480 +640 424 +640 427 +640 427 +640 480 +640 400 +640 640 +612 612 +612 612 +422 640 +426 640 +640 426 +500 375 +640 425 +640 428 +640 416 +640 480 +640 480 +427 640 +640 480 +640 640 +640 427 +640 364 +640 427 +431 500 +480 640 +640 480 +427 640 +640 462 +640 518 +427 640 +640 479 +640 426 +640 480 +640 486 +640 427 +640 360 +640 426 +612 612 +640 480 +640 427 +640 480 +640 427 +640 281 +640 353 +640 480 +640 640 +640 427 +640 480 +426 640 +523 640 +640 640 +640 427 +426 640 +640 428 +640 480 +640 427 +640 448 +640 427 +640 427 +640 444 +500 375 +480 640 +480 640 +640 425 +640 480 +427 640 +410 500 +429 640 +640 427 +640 640 +333 500 +640 433 +640 480 +640 424 +427 640 +640 426 +640 480 +640 425 +500 334 +640 480 +640 427 +500 400 +640 480 +640 427 +640 480 +640 426 +640 427 +640 427 +640 524 +640 426 +500 375 +640 610 +640 425 +427 640 +426 640 +640 553 +427 640 +640 425 +640 480 +427 640 +640 427 +640 427 +640 427 +640 359 +500 209 +640 480 +403 640 +612 612 +631 640 +640 426 +426 640 +640 394 +428 640 +425 640 +640 480 +640 476 +375 500 +640 479 +480 640 +612 612 +640 509 +500 335 +480 640 +640 427 +640 425 +640 457 +480 640 +640 480 +500 337 +640 635 +640 480 +640 427 +640 480 +640 427 +640 640 +640 640 +640 480 +421 640 +640 427 +480 640 +612 612 +640 480 +640 426 +426 640 +640 478 +640 339 +640 480 +500 377 +640 425 +612 612 +427 640 +640 427 +640 428 +640 481 +640 480 +500 467 +640 426 +478 640 +478 640 +640 426 +329 500 +640 468 +428 640 +480 640 +640 427 +640 360 +427 640 +500 333 +480 640 +640 556 +500 375 +640 480 +640 427 +500 332 +500 400 +427 640 +640 427 +612 612 +640 480 +500 334 +640 451 +640 425 +640 426 +427 640 +640 406 +480 640 +640 480 +640 503 +640 480 +640 480 +640 429 +500 375 +427 640 +640 480 +640 426 +612 612 +640 426 +640 480 +500 375 +640 429 +640 360 +480 640 +640 480 +640 428 +640 480 +500 375 +640 480 +640 424 +500 375 +640 424 +640 427 +480 640 +640 480 +640 427 +500 375 +640 480 +640 480 +640 480 +640 480 +640 480 +640 435 +480 640 +640 428 +640 480 +640 478 +640 427 +640 480 +500 336 +640 480 +640 480 +640 480 +640 428 +500 375 +489 640 +640 426 +500 375 +640 480 +640 428 +640 427 +248 640 +640 480 +640 427 +640 322 +640 512 +640 480 +426 640 +640 425 +640 480 +640 427 +640 449 +640 509 +640 480 +640 480 +519 640 +480 640 +427 640 +640 457 +640 480 +640 480 +500 375 +425 640 +640 457 +640 426 +426 640 +480 640 +640 425 +640 427 +334 500 +500 375 +640 471 +500 375 +640 480 +500 305 +436 640 +640 428 +640 480 +640 426 +640 480 +640 426 +640 480 +427 640 +612 612 +502 640 +480 640 +640 480 +480 640 +640 478 +640 420 +640 458 +500 375 +478 640 +427 640 +640 427 +640 427 +640 458 +640 566 +640 555 +640 480 +640 480 +640 416 +640 404 +603 452 +480 640 +640 361 +640 396 +640 480 +640 479 +640 480 +425 640 +640 427 +500 390 +640 640 +640 480 +318 480 +640 360 +500 375 +512 640 +427 640 +480 640 +480 640 +640 480 +640 427 +478 640 +640 478 +640 640 +640 423 +640 480 +318 640 +640 480 +640 421 +640 480 +640 427 +640 480 +480 640 +500 283 +425 640 +320 240 +640 450 +640 480 +640 426 +480 640 +640 427 +640 427 +640 496 +640 426 +640 426 +640 480 +640 427 +640 499 +640 427 +425 640 +428 640 +640 480 +356 500 +640 427 +640 480 +640 479 +640 439 +640 360 +640 480 +500 500 +640 423 +640 479 +640 427 +640 439 +640 480 +640 427 +640 427 +640 457 +640 428 +640 320 +500 375 +640 480 +426 640 +640 480 +424 640 +480 640 +640 480 +640 480 +640 480 +640 427 +640 480 +640 640 +427 640 +500 375 +640 426 +640 427 +640 480 +640 383 +640 427 +640 427 +640 129 +640 480 +640 427 +640 427 +640 299 +640 437 +640 480 +640 428 +640 476 +332 500 +640 476 +500 335 +300 225 +640 359 +500 375 +640 427 +640 427 +640 480 +640 426 +640 428 +331 640 +427 640 +355 500 +640 406 +500 375 +640 480 +480 640 +640 425 +640 480 +500 375 +427 640 +612 612 +480 640 +480 640 +640 480 +500 375 +640 423 +425 640 +640 480 +500 337 +640 480 +612 612 +640 426 +500 375 +480 640 +640 480 +500 333 +640 480 +500 375 +500 375 +640 480 +640 480 +640 426 +500 377 +640 426 +640 480 +500 333 +640 480 +428 640 +640 637 +289 640 +500 375 +640 569 +640 427 +640 362 +640 540 +640 429 +640 402 +640 480 +480 640 +640 427 +425 640 +640 400 +640 640 +640 449 +375 500 +427 640 +353 500 +640 427 +640 640 +424 640 +640 480 +500 450 +640 501 +640 505 +640 480 +640 427 +640 427 +640 480 +500 286 +427 640 +640 404 +640 480 +375 500 +375 500 +640 249 +640 430 +640 488 +640 434 +640 480 +640 480 +640 480 +640 480 +640 480 +640 438 +640 481 +640 214 +640 427 +640 427 +612 612 +640 480 +640 480 +640 480 +640 424 +348 640 +500 338 +360 640 +640 480 +640 480 +479 640 +640 480 +640 384 +640 498 +640 478 +640 480 +424 640 +640 499 +375 500 +375 500 +640 424 +333 500 +640 553 +640 397 +640 480 +583 640 +424 640 +640 480 +640 427 +640 480 +640 360 +612 612 +640 480 +612 612 +500 333 +640 425 +640 480 +640 363 +640 480 +640 480 +640 404 +640 480 +500 335 +640 427 +640 362 +640 427 +427 640 +478 640 +500 291 +476 640 +424 640 +425 640 +500 333 +640 488 +640 501 +480 640 +640 480 +640 480 +640 480 +335 500 +640 480 +382 640 +640 358 +640 373 +640 427 +640 480 +640 481 +640 480 +640 424 +500 335 +640 480 +462 640 +480 640 +640 480 +480 640 +500 333 +480 640 +640 527 +480 640 +427 640 +640 480 +640 426 +375 500 +640 425 +640 427 +640 480 +640 640 +640 480 +640 427 +333 500 +480 640 +640 480 +640 480 +640 427 +640 428 +457 640 +492 640 +640 483 +347 500 +640 449 +480 640 +640 428 +500 375 +640 436 +640 427 +640 383 +640 426 +640 426 +640 458 +640 426 +640 429 +640 427 +640 640 +640 478 +640 428 +640 600 +383 640 +640 480 +480 640 +500 436 +640 480 +612 612 +640 480 +500 375 +640 427 +640 425 +640 428 +500 375 +640 480 +640 427 +640 480 +640 480 +640 427 +485 640 +500 333 +500 333 +640 480 +612 612 +640 610 +640 427 +480 640 +428 640 +640 480 +640 480 +640 480 +333 500 +640 426 +640 427 +640 435 +640 427 +500 313 +640 480 +640 427 +537 640 +640 427 +640 480 +640 317 +426 640 +480 640 +354 400 +640 353 +640 480 +640 427 +270 640 +640 480 +640 480 +640 480 +500 333 +640 428 +640 480 +640 457 +640 480 +640 360 +500 375 +500 385 +640 480 +640 480 +428 640 +480 640 +333 500 +510 640 +640 359 +480 640 +640 448 +640 359 +640 480 +640 427 +640 480 +640 480 +640 427 +640 428 +640 480 +640 426 +480 640 +640 427 +640 428 +640 480 +640 480 +640 424 +463 640 +640 480 +427 640 +640 478 +410 640 +334 500 +640 428 +480 640 +640 426 +640 640 +480 640 +396 640 +640 480 +640 427 +640 480 +500 334 +640 429 +500 301 +640 478 +640 478 +500 375 +640 427 +640 480 +336 448 +514 640 +640 480 +480 640 +640 415 +478 640 +640 426 +480 640 +640 480 +640 480 +640 480 +426 640 +428 640 +427 640 +640 451 +640 466 +480 360 +488 640 +640 360 +426 640 +640 396 +640 480 +523 640 +640 480 +500 375 +640 427 +426 640 +640 480 +500 334 +640 480 +500 375 +640 480 +640 480 +331 500 +640 468 +640 427 +640 480 +640 427 +640 427 +640 427 +441 640 +640 480 +640 419 +500 375 +640 536 +442 640 +640 480 +612 612 +640 427 +500 375 +640 480 +500 333 +640 480 +375 500 +500 332 +640 427 +640 427 +640 427 +480 640 +480 636 +426 640 +640 426 +640 480 +427 640 +406 640 +640 427 +640 480 +640 427 +478 640 +640 427 +500 500 +462 640 +519 640 +640 383 +640 444 +500 333 +514 640 +640 424 +360 221 +480 640 +450 338 +518 640 +477 640 +640 427 +640 480 +640 480 +612 612 +640 427 +640 480 +500 375 +640 427 +640 480 +640 436 +640 480 +428 640 +427 640 +427 640 +640 427 +480 640 +640 368 +640 428 +640 480 +640 327 +640 640 +500 371 +640 480 +640 427 +500 375 +640 529 +640 427 +640 427 +640 479 +640 425 +640 427 +427 640 +640 640 +480 640 +640 480 +427 640 +500 375 +640 480 +640 426 +640 480 +640 424 +640 428 +478 640 +640 480 +428 640 +640 427 +640 480 +427 640 +640 399 +640 427 +428 640 +640 544 +640 480 +640 427 +640 480 +640 480 +640 535 +640 426 +500 375 +500 375 +640 427 +640 480 +640 425 +500 375 +536 640 +640 427 +500 333 +480 640 +640 491 +640 427 +640 429 +640 333 +640 480 +500 375 +640 480 +640 359 +640 420 +640 360 +640 480 +500 349 +640 427 +375 500 +640 146 +640 426 +640 480 +640 480 +500 367 +640 480 +480 640 +640 426 +640 480 +640 425 +640 425 +640 426 +640 419 +425 640 +427 640 +640 426 +640 480 +640 427 +640 480 +640 424 +339 500 +640 428 +640 480 +640 480 +640 483 +640 328 +600 401 +500 375 +500 375 +300 225 +640 480 +640 427 +500 375 +612 612 +640 480 +640 480 +640 426 +640 640 +640 480 +640 428 +500 375 +640 640 +640 465 +640 640 +640 427 +500 375 +640 473 +500 378 +640 481 +640 424 +640 480 +612 612 +425 640 +427 640 +640 480 +640 427 +640 480 +375 500 +640 512 +640 427 +426 640 +640 425 +428 640 +400 500 +383 640 +640 427 +500 374 +500 373 +500 365 +640 480 +600 399 +640 480 +640 426 +640 360 +640 427 +500 375 +640 425 +640 427 +640 640 +640 480 +640 426 +640 406 +640 408 +480 640 +425 640 +640 480 +640 480 +427 640 +500 350 +480 640 +640 427 +480 640 +428 640 +640 360 +640 341 +640 425 +640 523 +640 480 +427 640 +640 427 +425 640 +640 425 +500 333 +640 425 +500 333 +640 461 +500 375 +640 427 +512 640 +640 426 +635 591 +640 433 +640 427 +640 480 +427 640 +640 446 +640 480 +640 427 +640 360 +640 425 +420 640 +429 640 +624 624 +500 375 +640 480 +640 480 +570 640 +640 640 +640 427 +640 441 +425 640 +375 500 +640 366 +480 640 +640 403 +360 640 +640 381 +640 360 +640 480 +640 480 +640 427 +640 480 +640 433 +640 480 +425 640 +439 640 +480 640 +488 640 +500 375 +640 480 +640 466 +427 640 +640 302 +640 480 +640 480 +640 351 +640 480 +640 480 +333 500 +640 427 +299 409 +640 480 +500 333 +500 375 +640 473 +426 640 +640 425 +640 428 +640 427 +640 427 +426 640 +640 477 +640 480 +339 500 +640 449 +426 640 +612 612 +480 640 +640 478 +612 612 +640 426 +613 640 +640 480 +640 480 +640 361 +640 383 +640 410 +640 480 +640 427 +640 563 +425 640 +640 480 +640 480 +480 640 +640 480 +500 348 +640 427 +500 376 +640 488 +640 480 +480 640 +640 427 +640 427 +350 263 +640 428 +640 367 +500 332 +640 428 +480 640 +480 640 +640 480 +640 425 +640 480 +480 640 +500 375 +359 640 +640 480 +500 375 +640 567 +640 360 +500 375 +640 477 +426 640 +640 480 +640 427 +640 425 +500 392 +640 480 +640 482 +640 500 +640 480 +333 500 +640 427 +500 357 +640 424 +640 426 +480 640 +640 480 +640 426 +640 450 +640 360 +480 640 +480 640 +640 427 +640 393 +640 448 +640 480 +640 480 +480 640 +640 480 +427 640 +640 424 +640 557 +640 360 +640 480 +640 405 +640 480 +640 481 +500 495 +640 428 +640 428 +450 338 +640 408 +640 470 +640 480 +425 640 +640 480 +640 428 +640 480 +480 640 +500 334 +500 375 +640 488 +612 612 +640 379 +640 427 +640 480 +640 613 +489 640 +500 500 +480 640 +640 419 +476 640 +367 640 +640 480 +425 640 +640 427 +640 427 +640 480 +640 427 +640 426 +640 389 +500 332 +640 405 +640 480 +640 480 +500 377 +640 493 +640 480 +640 397 +480 640 +640 427 +640 426 +480 640 +640 360 +622 640 +640 426 +640 427 +640 427 +640 426 +544 640 +640 480 +640 427 +500 377 +640 427 +640 640 +640 480 +640 427 +640 480 +640 464 +612 612 +640 480 +640 522 +640 426 +640 427 +425 640 +500 375 +480 640 +640 377 +640 522 +568 320 +423 640 +500 375 +424 283 +428 640 +425 640 +640 479 +640 480 +640 420 +640 428 +640 480 +480 640 +612 612 +500 333 +640 640 +511 640 +640 429 +640 427 +640 640 +640 425 +640 360 +640 480 +630 640 +640 480 +640 428 +500 375 +640 431 +640 426 +612 612 +568 320 +427 640 +640 426 +640 426 +640 569 +339 500 +480 640 +640 480 +427 640 +640 426 +435 640 +640 536 +640 391 +640 480 +427 640 +640 480 +640 640 +640 427 +480 640 +640 490 +640 613 +640 427 +640 480 +640 427 +640 410 +640 428 +640 428 +640 444 +640 429 +640 480 +500 374 +640 426 +480 640 +640 427 +640 359 +427 640 +640 480 +640 427 +640 473 +500 375 +640 360 +500 375 +474 640 +427 640 +480 640 +640 480 +640 480 +640 480 +405 640 +640 428 +640 360 +414 640 +640 425 +640 269 +640 480 +640 480 +640 426 +640 480 +640 426 +640 400 +640 480 +640 480 +427 640 +640 480 +640 480 +640 480 +640 494 +640 411 +640 480 +375 500 +640 480 +640 461 +640 429 +640 480 +500 500 +500 333 +500 375 +640 427 +640 480 +640 480 +640 421 +640 426 +428 640 +640 481 +640 426 +640 480 +640 427 +627 640 +428 640 +640 414 +640 638 +500 375 +428 640 +161 240 +374 500 +480 640 +640 486 +500 375 +480 640 +640 141 +480 640 +640 424 +612 612 +500 333 +480 640 +428 640 +501 640 +480 640 +640 431 +500 334 +640 426 +640 427 +500 500 +640 480 +640 426 +447 640 +500 375 +640 478 +640 573 +640 427 +640 480 +640 419 +500 375 +640 480 +640 480 +543 640 +612 612 +640 480 +500 334 +500 334 +640 427 +640 427 +640 590 +612 612 +480 360 +640 541 +640 495 +640 480 +480 640 +640 425 +500 375 +640 427 +640 428 +640 480 +633 640 +376 500 +478 640 +640 425 +640 480 +640 480 +640 426 +375 500 +640 427 +640 427 +480 640 +375 500 +640 443 +640 425 +640 640 +375 500 +640 521 +640 521 +500 375 +500 375 +640 406 +640 427 +640 427 +640 429 +640 480 +640 480 +427 640 +640 429 +480 640 +640 428 +640 393 +640 480 +640 606 +612 612 +480 640 +500 333 +480 640 +480 640 +334 500 +640 427 +480 640 +640 427 +640 401 +426 640 +500 332 +640 428 +640 480 +500 327 +640 480 +640 480 +612 612 +375 500 +640 427 +640 426 +640 480 +427 640 +640 427 +640 427 +640 480 +640 518 +640 480 +500 464 +375 500 +640 480 +640 480 +500 500 +564 640 +500 375 +427 640 +427 640 +640 427 +640 480 +640 376 +640 480 +640 480 +500 375 +500 336 +640 433 +640 480 +640 425 +425 640 +640 480 +427 640 +640 480 +640 480 +640 359 +640 480 +480 640 +612 612 +640 427 +640 427 +640 480 +640 426 +640 425 +640 480 +640 480 +382 640 +640 427 +640 480 +375 500 +640 480 +640 411 +350 500 +640 640 +640 426 +640 429 +426 640 +640 480 +640 425 +640 480 +500 269 +640 412 +640 427 +640 427 +493 500 +640 428 +640 480 +640 427 +500 461 +640 427 +500 333 +640 480 +640 480 +426 640 +640 427 +640 480 +640 480 +640 427 +498 640 +640 457 +640 436 +640 640 +640 480 +500 375 +640 427 +640 480 +500 375 +500 334 +640 427 +640 299 +480 640 +428 640 +640 426 +382 640 +427 640 +640 428 +640 640 +640 427 +640 426 +320 480 +640 424 +640 346 +500 375 +640 480 +640 480 +640 427 +640 431 +424 284 +640 480 +640 500 +640 480 +640 400 +427 640 +427 640 +426 640 +640 428 +640 480 +480 640 +500 333 +488 640 +640 426 +333 500 +640 469 +640 480 +500 333 +640 638 +500 375 +640 426 +640 427 +640 360 +350 500 +480 640 +375 500 +480 640 +640 480 +640 602 +640 427 +640 480 +640 480 +640 402 +640 427 +640 392 +612 612 +640 480 +640 480 +598 397 +640 480 +640 480 +332 500 +640 480 +640 480 +640 425 +426 640 +640 480 +640 480 +640 480 +640 427 +640 480 +640 480 +500 487 +640 480 +500 375 +640 427 +480 640 +640 478 +500 375 +640 480 +640 478 +427 640 +640 480 +640 473 +640 478 +480 640 +427 640 +640 480 +640 576 +640 427 +640 424 +640 407 +301 388 +331 500 +375 500 +640 480 +640 424 +640 400 +640 480 +640 427 +640 427 +640 426 +500 375 +640 481 +510 640 +640 480 +640 427 +640 427 +500 363 +500 333 +640 349 +640 401 +375 500 +571 640 +640 428 +500 400 +640 478 +640 480 +640 480 +640 483 +640 426 +640 480 +640 457 +640 425 +480 640 +612 612 +640 444 +500 416 +480 640 +640 486 +640 427 +640 480 +480 640 +640 480 +479 640 +448 640 +640 428 +640 480 +500 333 +640 480 +640 426 +640 480 +640 426 +640 480 +450 300 +640 459 +500 334 +640 424 +500 375 +640 429 +640 426 +640 442 +333 500 +640 480 +500 369 +640 480 +640 427 +640 480 +640 480 +480 640 +500 400 +640 480 +640 427 +640 428 +640 426 +640 457 +640 331 +640 427 +640 425 +640 480 +640 480 +640 480 +640 425 +340 500 +640 480 +640 624 +427 640 +640 430 +640 360 +640 480 +326 500 +640 426 +640 427 +640 427 +640 451 +640 427 +640 512 +640 361 +640 480 +640 299 +375 500 +427 640 +384 640 +640 480 +640 480 +375 500 +640 480 +500 332 +640 428 +640 410 +480 640 +640 427 +640 427 +640 480 +640 426 +640 427 +640 380 +428 640 +500 375 +500 333 +640 427 +480 640 +426 640 +640 427 +640 424 +640 426 +640 314 +640 424 +640 439 +640 399 +640 480 +428 640 +480 640 +427 640 +640 480 +500 375 +640 426 +640 427 +640 429 +500 454 +640 480 +640 480 +640 480 +390 640 +320 239 +640 425 +640 427 +640 426 +640 429 +451 500 +480 640 +480 640 +375 500 +413 640 +640 444 +480 640 +640 256 +640 480 +431 640 +640 480 +640 426 +640 480 +335 500 +640 423 +640 374 +427 640 +427 640 +640 355 +480 640 +480 640 +640 426 +640 427 +640 427 +640 480 +480 360 +640 480 +640 488 +500 375 +425 640 +640 480 +480 640 +640 425 +640 360 +640 480 +640 640 +640 470 +640 427 +500 375 +500 333 +640 480 +640 430 +500 375 +480 640 +500 286 +640 417 +612 612 +480 640 +640 427 +640 480 +498 640 +545 640 +640 353 +428 640 +427 640 +640 423 +500 375 +640 466 +640 561 +640 480 +640 480 +513 640 +640 480 +438 608 +640 480 +640 479 +527 640 +375 500 +479 640 +480 640 +640 576 +500 334 +640 421 +640 427 +375 500 +640 427 +333 500 +480 640 +640 427 +640 480 +640 427 +640 480 +640 426 +640 480 +640 427 +640 426 +640 432 +640 426 +640 480 +480 640 +427 640 +640 480 +640 480 +600 600 +360 480 +640 480 +640 427 +640 428 +608 640 +640 424 +640 480 +640 429 +555 640 +640 428 +640 427 +500 375 +478 640 +640 480 +640 481 +640 480 +640 480 +335 500 +500 447 +640 509 +640 457 +640 425 +640 480 +640 480 +640 428 +640 480 +640 425 +500 334 +640 427 +640 426 +380 500 +640 425 +640 480 +480 640 +640 480 +640 498 +640 480 +640 480 +493 640 +640 426 +640 480 +612 612 +500 375 +640 480 +640 426 +640 433 +640 480 +640 480 +640 480 +640 427 +640 360 +500 375 +640 428 +480 640 +640 480 +548 640 +640 426 +640 480 +640 480 +640 481 +640 476 +480 640 +500 333 +640 360 +640 480 +640 429 +640 426 +640 480 +612 612 +500 375 +481 640 +480 640 +375 500 +640 427 +640 510 +500 375 +640 458 +480 640 +640 480 +640 427 +600 600 +480 640 +640 429 +233 311 +551 640 +640 640 +640 428 +640 481 +640 480 +478 640 +500 333 +640 427 +438 640 +640 424 +640 420 +640 480 +640 480 +426 640 +640 478 +480 640 +425 640 +640 366 +500 385 +640 360 +640 480 +480 640 +550 378 +640 480 +640 428 +640 480 +640 424 +640 480 +480 640 +428 640 +427 640 +640 480 +640 480 +640 449 +500 467 +640 480 +640 480 +500 333 +640 480 +640 428 +640 480 +640 426 +480 640 +640 480 +640 479 +640 428 +640 427 +640 620 +640 480 +480 640 +640 480 +632 640 +640 427 +640 480 +640 426 +426 640 +640 480 +640 428 +469 640 +375 500 +640 480 +640 427 +640 480 +640 425 +375 500 +640 521 +333 500 +640 480 +640 360 +640 480 +500 375 +500 375 +640 426 +640 480 +640 426 +640 480 +427 640 +640 480 +500 347 +640 480 +640 427 +640 425 +375 500 +640 480 +480 640 +500 488 +375 500 +640 441 +500 333 +640 424 +480 640 +333 500 +629 640 +640 618 +478 640 +500 375 +640 480 +612 612 +640 360 +480 640 +500 375 +640 431 +640 427 +640 427 +640 612 +448 336 +640 427 +640 427 +640 408 +640 427 +640 427 +640 428 +640 480 +640 428 +640 480 +640 459 +640 360 +425 640 +480 640 +424 640 +500 375 +640 480 +333 500 +640 480 +640 397 +480 640 +640 480 +640 480 +640 425 +427 640 +640 427 +357 500 +640 480 +480 640 +480 640 +500 375 +500 375 +640 640 +640 429 +640 426 +640 480 +640 480 +427 640 +640 360 +640 480 +640 434 +640 427 +538 640 +640 428 +640 480 +640 480 +640 480 +480 640 +640 427 +500 474 +406 640 +423 640 +640 480 +640 423 +640 480 +640 427 +640 430 +500 383 +455 640 +600 400 +640 428 +640 480 +500 429 +640 426 +640 480 +426 640 +640 457 +640 390 +500 321 +640 480 +640 391 +479 640 +640 427 +640 429 +500 375 +640 480 +640 480 +640 640 +640 492 +640 480 +640 424 +640 360 +375 500 +500 239 +640 480 +375 500 +640 387 +480 640 +640 406 +640 427 +640 441 +640 409 +640 480 +640 480 +640 480 +424 640 +640 360 +640 427 +500 335 +500 375 +640 480 +640 480 +640 491 +640 428 +640 426 +640 256 +640 476 +640 403 +427 640 +640 480 +640 480 +427 640 +500 374 +427 640 +500 375 +438 640 +640 425 +478 640 +640 463 +640 346 +445 640 +620 413 +640 427 +500 375 +524 640 +640 478 +640 480 +640 480 +612 612 +640 480 +640 480 +640 428 +500 333 +640 569 +640 480 +640 480 +480 640 +407 640 +640 426 +612 612 +640 427 +415 640 +488 640 +640 480 +640 480 +640 480 +640 360 +640 502 +640 640 +640 480 +640 427 +640 438 +640 480 +428 640 +640 480 +640 640 +640 480 +640 536 +596 391 +640 427 +411 640 +640 427 +427 640 +640 480 +500 375 +640 300 +640 480 +500 333 +612 612 +640 480 +425 640 +500 334 +500 375 +640 480 +640 480 +640 359 +426 640 +500 375 +640 424 +640 427 +640 427 +640 426 +640 480 +640 480 +640 480 +640 424 +500 375 +640 427 +640 480 +640 480 +640 480 +640 480 +640 480 +640 432 +640 427 +640 427 +640 480 +640 170 +500 364 +640 480 +640 480 +459 500 +333 500 +640 426 +480 640 +640 427 +640 427 +640 424 +640 480 +640 427 +640 427 +394 640 +640 427 +640 480 +640 427 +640 457 +640 513 +500 375 +640 480 +640 480 +424 640 +640 426 +640 429 +500 375 +640 428 +640 485 +480 640 +640 428 +500 375 +332 500 +640 400 +640 448 +500 375 +640 480 +640 427 +480 640 +640 420 +518 640 +640 426 +500 335 +640 480 +640 427 +500 375 +333 500 +640 480 +640 569 +480 640 +640 427 +640 433 +640 426 +320 400 +640 480 +640 427 +640 429 +640 480 +640 478 +640 480 +640 480 +640 480 +640 480 +472 640 +640 451 +640 425 +640 452 +612 612 +500 329 +640 480 +480 640 +640 480 +640 480 +640 478 +640 427 +334 500 +640 426 +428 640 +640 428 +640 427 +640 429 +640 434 +640 640 +640 480 +640 424 +640 427 +448 640 +480 640 +480 640 +480 640 +640 480 +500 370 +427 640 +640 424 +640 480 +569 640 +259 387 +640 480 +640 426 +640 425 +500 420 +640 427 +640 428 +640 427 +640 457 +640 359 +640 360 +389 500 +640 428 +640 427 +421 640 +640 480 +640 401 +480 640 +640 426 +360 640 +480 640 +480 640 +640 480 +640 480 +640 480 +375 500 +640 480 +479 640 +640 533 +640 428 +640 480 +640 426 +640 509 +426 640 +480 640 +640 480 +640 480 +640 427 +426 640 +640 425 +640 427 +500 375 +640 480 +423 640 +640 427 +640 428 +479 640 +480 640 +640 423 +426 640 +500 374 +428 640 +640 424 +640 428 +640 424 +640 480 +612 612 +500 333 +640 640 +500 345 +480 640 +640 464 +640 426 +640 480 +640 427 +640 374 +427 640 +640 428 +640 360 +640 640 +640 428 +640 481 +640 360 +640 480 +609 530 +428 640 +640 480 +640 427 +640 425 +640 480 +640 427 +480 640 +640 426 +640 389 +500 375 +640 427 +427 640 +640 480 +640 480 +332 500 +336 500 +640 427 +640 480 +640 316 +640 483 +425 640 +399 640 +640 480 +480 640 +640 640 +480 640 +640 427 +640 428 +640 423 +160 120 +640 480 +640 360 +640 480 +640 427 +500 421 +480 640 +425 640 +640 594 +640 480 +640 512 +500 243 +640 480 +500 375 +640 480 +640 427 +480 640 +640 426 +640 424 +639 640 +518 640 +640 479 +426 640 +640 430 +640 427 +640 466 +640 480 +640 480 +640 427 +427 640 +612 612 +480 640 +640 474 +500 375 +640 480 +640 480 +640 375 +640 473 +350 262 +640 427 +432 640 +472 640 +640 478 +640 427 +640 436 +640 427 +640 480 +640 428 +500 375 +427 640 +640 360 +427 640 +604 640 +640 480 +480 640 +640 427 +640 640 +478 640 +640 480 +640 426 +640 484 +640 427 +640 431 +640 477 +500 375 +640 480 +500 333 +500 375 +640 414 +480 640 +426 640 +427 640 +640 480 +500 333 +640 480 +500 333 +640 427 +640 480 +640 357 +428 640 +640 427 +640 480 +427 640 +640 427 +640 573 +640 427 +500 375 +490 500 +640 319 +640 480 +478 640 +640 469 +640 480 +500 313 +640 480 +480 640 +500 375 +640 218 +480 640 +640 426 +640 427 +640 427 +640 480 +480 640 +640 479 +640 428 +640 480 +480 640 +640 499 +427 640 +457 640 +640 361 +500 375 +640 417 +500 324 +640 480 +640 480 +640 427 +640 427 +640 425 +640 480 +364 500 +640 480 +640 640 +640 427 +640 425 +279 640 +480 640 +640 451 +640 331 +640 427 +478 640 +503 640 +640 480 +640 485 +426 640 +335 500 +640 479 +640 480 +640 480 +640 494 +640 474 +640 480 +640 359 +640 425 +480 640 +480 640 +640 526 +640 482 +640 480 +640 480 +640 427 +458 640 +640 404 +500 375 +640 427 +640 480 +500 356 +640 426 +640 480 +640 426 +500 375 +640 417 +640 435 +640 495 +640 427 +500 333 +640 480 +283 640 +640 480 +425 640 +640 425 +640 427 +640 398 +640 480 +640 480 +640 480 +640 424 +375 500 +500 341 +640 480 +480 640 +640 480 +640 427 +640 360 +640 426 +640 427 +640 360 +640 413 +640 480 +640 437 +640 480 +427 640 +513 640 +640 480 +640 480 +640 480 +640 425 +640 427 +404 342 +640 490 +640 426 +426 640 +392 640 +612 612 +333 500 +640 427 +640 429 +640 427 +640 480 +640 480 +640 424 +500 500 +480 640 +426 640 +640 425 +480 640 +640 427 +640 480 +480 640 +640 640 +640 480 +640 408 +500 334 +640 425 +480 640 +640 640 +448 640 +480 640 +500 375 +640 427 +640 427 +640 427 +640 480 +500 375 +640 480 +640 480 +640 427 +640 427 +640 425 +640 426 +640 425 +480 640 +640 480 +640 428 +640 480 +612 612 +523 640 +640 427 +612 612 +640 427 +500 332 +640 510 +640 424 +640 427 +480 640 +612 612 +480 640 +500 369 +427 640 +640 424 +640 427 +640 384 +427 640 +640 427 +640 480 +640 424 +640 480 +640 480 +500 333 +500 333 +640 480 +347 500 +500 375 +426 640 +500 375 +640 480 +476 376 +500 345 +375 500 +640 480 +480 640 +383 588 +640 427 +640 480 +452 640 +640 427 +640 480 +640 427 +640 480 +480 640 +640 480 +640 480 +427 640 +640 480 +640 480 +640 427 +640 564 +427 640 +426 640 +427 640 +640 392 +427 640 +640 425 +640 427 +640 427 +640 384 +640 427 +426 640 +640 427 +640 427 +640 584 +612 612 +480 640 +640 427 +640 480 +640 418 +453 640 +640 427 +640 480 +500 375 +427 640 +640 480 +640 360 +640 427 +640 427 +612 612 +640 427 +463 640 +500 375 +640 427 +640 480 +640 427 +640 359 +640 426 +480 640 +640 480 +640 480 +640 427 +464 640 +640 426 +640 427 +640 427 +640 424 +640 303 +640 419 +640 480 +640 480 +640 425 +500 375 +640 481 +640 476 +640 301 +480 640 +500 376 +640 480 +640 428 +640 428 +640 427 +640 480 +640 426 +383 640 +427 640 +640 426 +640 463 +500 375 +640 480 +480 640 +500 318 +640 583 +480 640 +640 427 +480 640 +427 640 +640 427 +640 425 +640 480 +500 375 +640 480 +480 640 +640 426 +640 360 +640 512 +640 428 +640 480 +500 375 +640 360 +640 480 +640 427 +340 500 +500 333 +427 640 +640 480 +640 480 +640 480 +427 640 +480 640 +640 396 +600 393 +640 427 +612 612 +480 640 +640 427 +640 480 +640 448 +640 427 +640 480 +640 478 +640 428 +640 188 +640 428 +500 426 +640 427 +480 640 +640 480 +640 426 +640 457 +640 480 +480 640 +640 481 +480 640 +640 427 +640 503 +640 427 +640 449 +640 480 +640 480 +640 469 +500 389 +640 426 +500 375 +640 427 +426 640 +480 640 +640 383 +640 425 +565 640 +640 480 +640 559 +640 480 +460 640 +640 480 +640 480 +640 480 +480 640 +640 428 +640 480 +640 427 +500 248 +357 500 +640 480 +640 480 +333 500 +480 360 +500 333 +640 564 +640 426 +480 640 +640 480 +640 480 +640 427 +640 426 +640 480 +426 640 +640 427 +425 640 +640 438 +640 427 +640 480 +640 480 +640 480 +480 640 +438 640 +426 640 +640 426 +640 411 +640 363 +500 375 +640 400 +640 509 +500 489 +640 427 +640 480 +500 333 +640 360 +500 332 +640 480 +640 396 +640 426 +640 480 +640 427 +640 427 +640 480 +500 375 +640 361 +640 427 +612 612 +213 640 +640 427 +427 640 +640 480 +640 480 +640 427 +375 500 +375 500 +640 480 +485 640 +640 388 +640 480 +500 375 +480 640 +480 640 +640 427 +640 427 +500 333 +612 612 +640 480 +640 427 +500 400 +640 426 +640 419 +640 426 +359 640 +500 332 +640 426 +640 480 +640 429 +640 360 +640 427 +640 426 +426 640 +427 640 +640 480 +640 480 +335 500 +640 486 +480 640 +427 640 +480 640 +640 424 +640 480 +640 480 +640 480 +640 548 +425 640 +640 480 +500 375 +640 426 +640 426 +640 426 +480 640 +640 426 +375 500 +640 427 +640 462 +640 451 +640 480 +640 480 +640 425 +612 612 +640 427 +640 426 +427 640 +640 426 +640 427 +640 610 +640 480 +480 640 +640 426 +640 480 +640 426 +480 640 +640 427 +640 477 +640 480 +640 480 +500 338 +640 458 +640 480 +640 359 +120 160 +640 481 +500 375 +426 640 +427 640 +500 400 +500 335 +640 427 +500 334 +640 425 +640 480 +640 480 +500 375 +640 480 +640 424 +400 500 +375 500 +480 640 +515 640 +480 640 +480 640 +640 480 +640 480 +640 480 +640 480 +640 480 +375 500 +480 640 +640 479 +200 189 +457 640 +640 480 +640 439 +500 322 +500 375 +480 640 +640 480 +640 480 +640 480 +427 640 +640 427 +640 480 +427 640 +500 324 +640 480 +640 480 +434 640 +640 265 +640 480 +640 425 +427 640 +640 427 +640 480 +640 480 +640 573 +640 480 +375 500 +640 428 +500 375 +640 480 +640 427 +473 640 +640 428 +480 640 +640 426 +640 306 +640 478 +640 427 +640 427 +427 640 +640 424 +512 640 +640 427 +579 640 +449 640 +427 640 +640 468 +640 480 +640 480 +640 425 +480 640 +640 480 +640 427 +640 640 +375 500 +640 428 +640 427 +640 480 +640 361 +640 480 +500 370 +640 428 +427 640 +640 480 +375 500 +640 480 +640 427 +640 478 +640 480 +640 427 +640 480 +640 425 +500 335 +640 493 +500 375 +640 426 +500 333 +640 480 +461 640 +500 375 +640 480 +640 480 +640 480 +640 480 +612 612 +640 480 +640 424 +640 427 +640 480 +500 375 +640 324 +640 429 +427 640 +528 363 +500 333 +640 512 +480 640 +640 480 +500 375 +640 480 +480 640 +640 480 +480 640 +640 480 +640 427 +640 450 +640 424 +640 480 +482 640 +640 480 +480 640 +640 427 +338 450 +640 425 +640 544 +640 427 +640 428 +640 480 +640 478 +500 375 +640 480 +640 427 +640 480 +640 480 +500 375 +480 640 +640 428 +640 479 +480 640 +375 500 +500 388 +480 640 +640 480 +640 427 +640 360 +640 480 +640 424 +640 396 +640 427 +120 160 +640 457 +640 480 +458 640 +640 425 +640 480 +640 480 +640 360 +640 480 +480 640 +480 640 +640 434 +640 480 +480 640 +640 429 +640 427 +464 500 +640 543 +640 428 +640 411 +640 427 +640 360 +640 528 +640 443 +640 480 +640 480 +640 424 +640 410 +500 333 +512 640 +500 346 +640 480 +640 480 +428 640 +640 429 +640 427 +640 480 +640 439 +500 375 +640 426 +640 480 +640 480 +640 427 +500 423 +640 427 +640 427 +640 424 +640 480 +640 360 +500 333 +640 480 +640 427 +640 384 +425 640 +640 480 +640 480 +640 481 +640 426 +426 640 +480 640 +427 640 +640 427 +478 640 +640 341 +640 395 +640 480 +500 333 +640 427 +500 436 +640 360 +480 640 +500 428 +640 427 +640 560 +640 427 +640 480 +640 481 +640 427 +640 481 +612 612 +427 640 +640 480 +640 394 +640 360 +640 427 +427 640 +640 480 +360 640 +375 500 +640 429 +640 426 +640 480 +640 360 +480 640 +640 383 +640 427 +640 480 +427 640 +640 427 +480 640 +640 480 +480 640 +425 640 +640 480 +612 612 +640 453 +640 425 +426 640 +640 480 +640 480 +640 361 +640 427 +640 480 +640 480 +428 640 +640 480 +640 640 +425 640 +640 428 +640 478 +640 426 +500 333 +500 488 +640 285 +500 326 +640 360 +640 480 +640 428 +640 480 +428 640 +640 524 +640 488 +640 480 +612 612 +450 338 +640 428 +640 426 +526 640 +640 428 +483 640 +640 480 +640 426 +640 427 +640 480 +640 480 +640 480 +640 427 +640 480 +640 480 +640 427 +640 427 +640 571 +640 427 +640 480 +640 427 +640 480 +640 425 +375 500 +640 428 +609 407 +333 500 +640 427 +500 333 +640 640 +433 640 +640 480 +640 392 +640 360 +640 480 +427 640 +480 268 +640 480 +500 281 +600 450 +500 393 +640 480 +478 640 +640 426 +640 413 +640 480 +640 427 +640 425 +640 480 +640 480 +640 427 +443 640 +640 480 +424 640 +640 427 +640 426 +640 632 +640 397 +500 375 +640 426 +640 480 +640 480 +640 428 +500 332 +640 427 +640 427 +640 480 +640 399 +414 640 +612 612 +640 424 +433 640 +640 418 +428 640 +480 640 +426 640 +375 500 +480 640 +640 426 +334 500 +640 480 +481 640 +640 500 +320 240 +640 427 +500 333 +500 333 +427 640 +640 480 +640 480 +640 427 +336 500 +480 640 +640 480 +640 425 +640 480 +500 375 +640 427 +457 640 +640 441 +640 427 +640 481 +640 426 +640 480 +640 427 +612 612 +478 640 +640 427 +500 333 +640 480 +640 428 +640 428 +640 460 +640 480 +500 333 +480 640 +640 633 +640 640 +457 640 +480 640 +500 466 +500 375 +640 425 +500 375 +500 375 +427 640 +640 512 +500 333 +640 427 +640 428 +640 480 +640 426 +640 480 +426 640 +640 427 +640 426 +640 427 +500 282 +640 428 +425 640 +479 640 +640 427 +427 640 +424 640 +448 640 +640 480 +640 480 +640 430 +344 500 +500 375 +640 330 +640 427 +640 445 +640 480 +481 640 +640 480 +640 426 +640 427 +640 427 +640 431 +640 427 +640 425 +640 425 +640 480 +640 493 +500 375 +575 640 +640 480 +640 426 +640 426 +640 428 +640 480 +640 401 +480 640 +640 480 +640 640 +612 612 +427 640 +640 489 +446 640 +480 640 +640 480 +427 640 +640 427 +428 640 +640 478 +379 500 +640 428 +640 429 +640 475 +640 428 +375 500 +490 500 +640 480 +640 426 +425 640 +480 640 +426 640 +595 640 +640 480 +640 480 +500 333 +640 480 +640 424 +640 480 +640 478 +480 640 +640 480 +640 480 +640 428 +640 419 +640 480 +640 468 +640 480 +640 428 +640 427 +480 640 +640 480 +640 478 +640 426 +640 425 +640 640 +480 640 +640 480 +640 427 +424 640 +640 427 +640 472 +640 480 +640 426 +640 480 +480 640 +640 640 +480 640 +425 640 +640 480 +640 431 +640 428 +640 439 +425 640 +480 640 +640 480 +640 601 +640 428 +612 612 +640 480 +640 425 +640 480 +640 424 +508 640 +640 426 +640 499 +640 480 +640 480 +640 480 +640 334 +612 612 +427 640 +640 427 +640 426 +444 640 +640 428 +640 428 +500 342 +640 356 +640 427 +640 480 +640 480 +640 427 +640 480 +612 612 +375 500 +640 480 +640 480 +450 640 +640 427 +640 277 +640 480 +640 620 +426 640 +480 640 +640 480 +541 640 +500 361 +640 480 +640 427 +425 640 +640 427 +332 500 +640 244 +640 480 +640 480 +640 426 +480 640 +640 362 +640 424 +489 640 +640 452 +640 513 +640 512 +640 427 +640 480 +640 480 +640 429 +640 427 +640 427 +640 424 +640 427 +479 640 +640 480 +640 480 +500 375 +612 612 +480 640 +480 640 +640 480 +500 325 +640 480 +640 427 +640 425 +425 640 +640 480 +612 612 +640 425 +640 432 +640 427 +640 427 +479 640 +428 640 +500 334 +640 480 +640 480 +427 640 +480 640 +640 427 +426 640 +640 428 +640 430 +500 375 +640 480 +640 480 +640 427 +612 612 +229 123 +640 426 +500 380 +640 480 +640 360 +481 640 +640 451 +457 640 +640 480 +375 500 +500 334 +640 428 +500 375 +640 430 +640 480 +640 427 +640 480 +640 634 +612 612 +480 640 +426 640 +500 333 +640 480 +640 480 +640 426 +640 480 +500 375 +480 640 +375 500 +640 480 +480 640 +640 458 +640 426 +424 640 +426 640 +640 424 +612 612 +640 427 +640 424 +640 427 +497 640 +640 427 +640 480 +640 446 +640 443 +640 427 +640 640 +500 333 +640 360 +640 426 +333 500 +640 426 +640 427 +612 612 +500 375 +612 612 +640 427 +480 640 +500 333 +640 480 +640 480 +640 421 +640 480 +640 480 +640 480 +500 375 +640 427 +500 375 +640 350 +611 640 +478 640 +332 500 +500 316 +640 480 +640 510 +640 427 +640 480 +640 427 +640 486 +340 470 +480 640 +480 640 +427 640 +640 426 +640 590 +640 480 +640 480 +640 428 +640 427 +500 375 +427 640 +640 458 +640 583 +500 375 +640 480 +500 375 +640 400 +640 425 +640 480 +500 333 +640 408 +640 427 +427 640 +339 500 +275 183 +375 500 +640 478 +640 478 +425 640 +384 640 +640 478 +640 425 +500 345 +640 427 +640 427 +480 640 +500 375 +640 428 +640 418 +640 480 +640 480 +426 640 +640 480 +426 640 +640 640 +391 640 +500 375 +640 480 +640 424 +640 478 +519 640 +551 640 +500 375 +640 480 +612 612 +640 426 +480 640 +500 334 +640 480 +640 640 +402 500 +640 480 +612 612 +500 333 +500 286 +432 640 +640 362 +640 480 +640 480 +640 427 +640 428 +640 426 +640 427 +500 332 +640 428 +426 640 +612 612 +333 500 +640 427 +640 640 +640 480 +640 480 +500 375 +640 457 +500 334 +640 427 +500 500 +640 424 +480 640 +480 640 +640 358 +640 480 +640 480 +500 375 +640 480 +500 447 +311 500 +480 640 +640 359 +640 480 +640 228 +640 480 +640 469 +640 480 +500 375 +427 640 +640 360 +640 427 +640 475 +640 480 +640 480 +640 481 +500 375 +640 440 +640 640 +500 375 +428 640 +640 427 +640 480 +640 425 +640 500 +640 427 +640 427 +640 446 +500 375 +640 480 +424 640 +640 480 +500 353 +640 360 +640 433 +424 640 +640 427 +480 640 +640 480 +596 640 +480 640 +640 480 +640 480 +640 427 +640 480 +478 640 +640 360 +640 457 +640 429 +285 340 +640 426 +640 440 +446 640 +640 480 +640 480 +640 426 +480 640 +640 640 +640 480 +640 427 +640 480 +480 640 +640 428 +375 500 +640 480 +640 423 +500 375 +640 480 +640 478 +476 640 +640 480 +640 640 +640 443 +480 640 +640 513 +640 480 +500 325 +640 480 +358 640 +423 640 +640 360 +640 395 +599 640 +640 425 +640 480 +640 607 +640 480 +640 480 +480 640 +427 640 +634 640 +640 480 +500 400 +640 425 +640 428 +640 480 +640 480 +640 480 +640 425 +640 383 +640 360 +640 480 +640 480 +640 425 +640 480 +600 376 +640 427 +480 640 +640 424 +612 612 +640 426 +640 425 +640 480 +480 640 +640 425 +500 408 +640 424 +500 284 +640 481 +640 427 +640 428 +640 478 +640 480 +640 480 +640 427 +480 640 +427 640 +640 480 +428 640 +500 283 +640 441 +640 426 +640 418 +640 427 +480 640 +640 426 +640 426 +640 480 +640 442 +640 427 +640 426 +640 419 +640 480 +640 478 +640 476 +640 427 +640 426 +399 640 +640 361 +640 426 +640 427 +427 640 +640 459 +640 480 +640 360 +333 500 +428 640 +640 480 +640 441 +428 640 +480 640 +640 480 +427 640 +640 480 +640 426 +333 500 +640 480 +640 526 +640 480 +486 640 +423 640 +640 361 +427 640 +640 480 +640 480 +640 425 +640 428 +640 428 +640 480 +640 427 +480 640 +379 279 +480 640 +640 506 +640 480 +640 513 +640 458 +333 500 +640 429 +640 360 +640 427 +500 375 +640 480 +500 332 +612 612 +640 480 +640 476 +640 374 +500 394 +640 480 +427 640 +640 427 +640 425 +430 640 +425 640 +640 410 +429 640 +640 424 +480 640 +640 427 +640 425 +640 640 +640 360 +640 427 +640 490 +500 375 +333 500 +640 517 +640 480 +640 427 +500 350 +400 500 +640 480 +500 338 +640 433 +640 388 +426 640 +640 348 +640 480 +640 492 +640 481 +640 318 +640 427 +427 640 +640 425 +640 480 +640 513 +500 332 +480 640 +640 640 +640 480 +640 444 +640 616 +640 480 +500 333 +500 408 +500 411 +640 480 +640 360 +480 640 +640 427 +640 433 +640 427 +640 426 +479 640 +480 640 +480 640 +426 640 +640 430 +640 427 +480 640 +640 426 +640 369 +640 480 +375 500 +640 480 +640 425 +504 640 +640 480 +640 480 +640 426 +640 430 +640 480 +500 400 +640 427 +640 480 +640 427 +640 489 +640 360 +427 640 +640 480 +640 480 +640 480 +350 219 +640 480 +640 413 +640 480 +640 401 +425 640 +640 425 +640 480 +640 427 +640 414 +640 424 +640 480 +425 640 +640 285 +640 480 +640 322 +640 427 +640 427 +640 427 +640 428 +640 457 +640 480 +500 391 +640 404 +640 611 +640 390 +513 640 +640 360 +640 496 +640 480 +640 427 +640 427 +640 480 +500 234 +640 425 +640 360 +424 640 +640 512 +640 427 +640 426 +640 427 +640 480 +500 374 +640 428 +640 526 +640 428 +640 480 +426 640 +640 427 +611 640 +640 383 +640 457 +640 427 +640 382 +640 427 +640 426 +640 480 +640 477 +375 500 +478 640 +640 480 +640 480 +500 400 +640 461 +640 480 +640 417 +640 425 +427 640 +640 439 +480 640 +640 640 +427 640 +612 612 +464 640 +640 427 +480 640 +640 360 +640 480 +640 428 +640 425 +640 543 +640 426 +640 423 +640 426 +640 319 +500 375 +640 427 +432 500 +375 500 +640 441 +426 640 +640 406 +640 426 +640 480 +480 640 +640 480 +640 424 +640 428 +640 427 +640 461 +426 640 +500 375 +640 480 +640 428 +640 480 +500 375 +640 426 +640 640 +480 640 +640 427 +375 500 +500 333 +640 480 +375 500 +480 640 +500 334 +640 480 +640 427 +640 424 +640 426 +640 628 +640 491 +640 426 +640 427 +480 640 +640 480 +640 425 +640 424 +640 427 +640 427 +640 480 +640 513 +640 426 +640 480 +640 427 +640 461 +640 425 +640 598 +640 361 +640 480 +640 427 +500 317 +640 480 +640 519 +640 480 +640 427 +500 375 +640 480 +425 640 +640 427 +426 640 +480 640 +480 640 +640 427 +640 427 +457 640 +640 359 +640 355 +640 480 +640 427 +426 640 +640 427 +427 640 +640 428 +640 426 +500 334 +425 640 +640 480 +640 480 +640 480 +500 334 +500 344 +640 640 +640 480 +640 480 +640 423 +640 480 +333 500 +640 426 +640 427 +500 375 +480 640 +640 508 +640 480 +500 375 +600 600 +640 480 +385 500 +434 640 +640 480 +480 640 +426 640 +640 427 +640 512 +512 640 +640 427 +427 640 +640 474 +640 426 +480 640 +640 426 +500 375 +427 640 +475 640 +640 360 +640 480 +640 427 +640 479 +375 500 +640 427 +640 457 +394 500 +640 422 +500 375 +640 480 +640 480 +427 640 +640 427 +640 498 +640 480 +480 640 +640 374 +640 480 +500 412 +500 335 +640 439 +640 516 +640 427 +640 426 +402 500 +500 364 +500 333 +640 480 +438 640 +425 640 +493 500 +480 640 +640 426 +640 640 +640 349 +640 480 +427 640 +640 480 +640 512 +400 400 +375 500 +640 427 +640 424 +500 375 +640 426 +640 429 +640 427 +640 426 +480 640 +500 375 +640 428 +640 480 +427 640 +640 428 +640 480 +640 427 +640 480 +500 372 +640 480 +640 480 +640 480 +640 360 +640 480 +640 480 +640 427 +640 426 +640 480 +640 640 +640 424 +640 480 +640 427 +640 169 +427 640 +640 478 +640 427 +462 308 +426 640 +640 361 +640 427 +500 232 +640 427 +640 457 +640 427 +500 375 +640 427 +640 426 +640 494 +427 640 +640 314 +640 480 +640 427 +473 640 +640 480 +640 480 +640 427 +640 369 +640 301 +640 427 +424 640 +640 481 +640 480 +640 427 +640 478 +640 480 +640 426 +640 427 +640 427 +640 480 +640 360 +480 640 +640 439 +640 480 +640 454 +640 401 +640 458 +640 480 +640 480 +640 414 +640 480 +640 496 +640 424 +640 480 +640 480 +387 500 +640 480 +640 379 +640 457 +425 640 +640 426 +640 424 +120 120 +640 427 +640 597 +640 480 +640 458 +640 426 +640 427 +640 427 +480 640 +640 426 +500 333 +640 427 +640 380 +427 640 +500 333 +480 640 +640 428 +640 428 +640 360 +640 429 +500 387 +371 500 +425 640 +640 480 +640 479 +640 480 +640 480 +640 427 +640 480 +640 478 +457 640 +640 429 +359 640 +500 375 +640 425 +500 375 +640 427 +359 240 +426 640 +612 612 +640 480 +612 612 +640 427 +640 478 +375 500 +480 640 +640 426 +479 640 +640 429 +640 384 +640 434 +500 332 +640 489 +640 427 +426 640 +640 466 +412 640 +478 640 +319 500 +640 427 +612 612 +640 418 +640 427 +640 426 +333 500 +500 375 +640 280 +612 612 +640 639 +640 480 +640 360 +640 456 +640 427 +426 640 +640 428 +501 640 +426 640 +640 428 +640 480 +640 478 +500 375 +640 360 +375 500 +640 388 +357 500 +640 480 +480 640 +496 640 +640 427 +612 612 +480 640 +508 337 +480 640 +640 368 +640 420 +300 500 +640 427 +612 612 +640 480 +500 375 +500 375 +412 317 +640 427 +640 425 +640 428 +480 640 +640 429 +380 640 +500 375 +640 425 +480 640 +640 480 +640 423 +640 480 +333 500 +411 640 +426 640 +436 640 +640 501 +640 427 +500 375 +640 512 +640 480 +640 506 +640 426 +640 427 +589 640 +480 640 +640 426 +500 375 +640 427 +640 426 +428 640 +640 480 +640 474 +500 333 +640 480 +480 640 +640 398 +640 425 +640 454 +640 480 +479 640 +640 427 +640 425 +612 612 +640 480 +500 375 +640 421 +640 514 +612 612 +640 480 +640 425 +500 468 +640 427 +480 640 +640 480 +640 480 +640 339 +424 640 +290 595 +480 640 +640 427 +480 640 +640 427 +500 332 +426 640 +640 425 +500 282 +480 640 +500 375 +640 514 +640 480 +640 426 +640 480 +640 480 +375 500 +640 427 +640 480 +640 426 +640 427 +500 375 +511 640 +640 427 +427 640 +640 480 +640 480 +446 552 +640 427 +640 426 +640 427 +640 427 +500 375 +640 480 +357 500 +640 479 +480 640 +640 428 +640 480 +480 640 +640 480 +640 480 +640 467 +640 480 +640 480 +640 426 +500 375 +513 640 +640 480 +640 480 +375 500 +640 427 +640 448 +640 480 +640 480 +480 640 +640 480 +640 427 +640 457 +640 425 +427 640 +480 640 +640 425 +640 427 +640 480 +640 640 +640 400 +612 612 +640 428 +425 640 +500 332 +640 426 +640 480 +640 480 +640 535 +640 427 +500 375 +640 480 +640 480 +480 640 +640 480 +640 480 +640 427 +425 640 +480 640 +640 480 +640 516 +640 427 +640 480 +640 418 +501 640 +640 480 +375 500 +640 424 +375 500 +480 640 +640 412 +640 426 +640 480 +640 467 +640 640 +640 480 +640 428 +640 480 +375 500 +640 431 +425 640 +478 640 +640 483 +640 480 +640 480 +640 360 +640 480 +427 640 +640 480 +500 375 +640 426 +500 334 +640 400 +334 500 +640 427 +640 428 +640 480 +640 427 +500 375 +640 480 +640 426 +640 480 +500 373 +401 500 +427 640 +640 458 +640 427 +640 427 +640 428 +640 427 +640 427 +612 612 +640 480 +500 176 +640 480 +480 640 +640 480 +565 425 +640 427 +640 480 +640 427 +386 640 +500 375 +500 375 +640 579 +640 457 +640 640 +640 442 +612 612 +640 480 +480 640 +640 480 +640 425 +640 427 +500 334 +427 640 +640 427 +480 640 +640 427 +640 480 +500 375 +640 480 +640 480 +640 362 +500 188 +640 480 +375 500 +640 480 +640 480 +640 427 +640 505 +640 480 +640 426 +427 640 +640 426 +640 480 +500 375 +640 427 +640 640 +640 424 +640 480 +640 480 +612 612 +640 427 +332 500 +640 437 +640 427 +640 427 +640 360 +480 640 +500 375 +640 427 +640 569 +640 440 +640 427 +500 375 +640 391 +640 426 +640 388 +640 427 +640 480 +640 428 +640 533 +640 426 +640 411 +640 480 +640 478 +640 425 +640 427 +480 640 +640 480 +426 640 +640 427 +640 425 +375 500 +640 567 +640 424 +640 335 +500 368 +640 480 +500 365 +640 373 +640 480 +500 375 +401 479 +427 640 +500 375 +640 428 +640 480 +640 480 +640 480 +500 500 +640 383 +640 427 +640 425 +640 480 +640 480 +640 480 +640 376 +480 640 +640 359 +640 427 +640 506 +640 513 +480 640 +640 427 +640 480 +640 428 +480 640 +640 573 +500 244 +640 480 +640 484 +640 480 +640 428 +640 478 +640 386 +426 640 +640 480 +640 480 +640 427 +499 640 +640 480 +640 480 +640 480 +468 640 +640 426 +640 426 +427 640 +428 640 +640 476 +640 480 +640 481 +640 353 +640 409 +640 640 +640 426 +640 431 +640 480 +640 453 +640 427 +640 480 +640 480 +480 640 +640 486 +640 427 +640 341 +640 396 +640 427 +427 640 +427 640 +640 427 +424 640 +500 333 +640 480 +640 426 +640 570 +470 640 +500 261 +640 394 +640 478 +640 427 +640 427 +640 427 +640 428 +480 640 +640 426 +640 480 +640 425 +375 500 +640 533 +640 480 +426 640 +626 640 +500 333 +375 500 +640 427 +640 480 +640 427 +640 427 +640 453 +375 500 +480 640 +640 427 +635 640 +427 640 +640 480 +640 392 +640 640 +427 640 +500 375 +640 427 +640 480 +640 426 +640 425 +640 640 +640 480 +640 480 +480 640 +375 500 +500 344 +612 612 +640 428 +640 480 +640 443 +640 427 +640 480 +427 640 +427 640 +640 480 +427 640 +428 640 +640 360 +640 411 +500 374 +640 489 +612 612 +640 480 +640 427 +640 480 +640 480 +640 478 +480 640 +640 424 +640 499 +640 366 +640 480 +640 426 +640 427 +419 640 +640 480 +640 480 +640 427 +480 640 +500 333 +640 262 +640 507 +640 480 +478 640 +500 357 +640 480 +480 640 +640 480 +500 359 +615 459 +426 640 +612 612 +640 427 +640 480 +640 425 +640 480 +640 440 +640 426 +427 640 +640 480 +640 640 +500 375 +640 427 +332 500 +640 360 +640 465 +640 538 +640 480 +640 426 +640 480 +640 480 +500 333 +640 466 +375 500 +480 640 +480 640 +443 640 +500 334 +640 480 +640 350 +640 427 +500 375 +539 640 +640 427 +640 480 +427 640 +640 427 +640 281 +476 640 +640 480 +640 480 +640 444 +640 480 +640 480 +640 427 +424 640 +640 427 +640 545 +425 640 +640 427 +640 480 +640 476 +640 360 +425 640 +640 299 +640 480 +640 480 +640 427 +429 640 +500 333 +427 640 +640 458 +426 640 +640 480 +640 480 +427 640 +427 640 +640 480 +640 479 +444 640 +640 427 +640 427 +480 640 +640 373 +640 640 +640 427 +640 506 +640 424 +640 480 +500 378 +640 480 +640 426 +480 640 +428 640 +425 640 +640 480 +640 480 +640 438 +500 375 +419 640 +640 473 +640 480 +640 426 +640 334 +640 385 +427 640 +640 337 +640 640 +640 426 +358 640 +640 427 +640 411 +480 640 +640 480 +640 425 +640 427 +640 480 +640 289 +640 454 +640 512 +640 427 +640 342 +640 429 +640 640 +640 480 +640 480 +640 427 +640 480 +640 480 +640 425 +640 480 +500 333 +500 406 +427 640 +375 500 +427 640 +640 480 +640 427 +640 478 +640 426 +640 427 +640 425 +428 640 +500 375 +640 428 +640 480 +327 500 +480 640 +640 426 +640 428 +640 426 +640 480 +640 480 +431 640 +531 640 +480 640 +480 640 +640 424 +640 402 +640 427 +640 480 +640 400 +640 480 +640 426 +427 640 +640 426 +640 449 +640 427 +500 333 +375 500 +500 375 +639 640 +480 640 +640 480 +640 499 +640 480 +476 640 +427 640 +640 480 +500 375 +640 426 +640 480 +640 427 +437 640 +640 427 +640 526 +640 428 +640 480 +640 425 +640 480 +640 427 +640 382 +640 427 +640 425 +478 640 +640 427 +640 488 +640 427 +640 360 +640 427 +640 478 +217 289 +640 480 +640 427 +640 425 +640 480 +640 455 +640 480 +640 480 +375 500 +440 640 +640 292 +512 640 +409 640 +640 480 +500 333 +640 480 +640 480 +640 480 +640 428 +488 640 +640 427 +640 428 +640 424 +418 640 +640 509 +427 640 +333 500 +480 640 +640 376 +612 612 +427 640 +426 640 +640 424 +640 480 +640 480 +640 427 +426 640 +447 640 +640 480 +480 640 +500 281 +429 640 +480 640 +640 480 +640 427 +640 427 +480 640 +640 480 +640 480 +500 333 +500 375 +640 478 +427 640 +640 471 +640 640 +427 640 +640 427 +640 478 +640 480 +640 430 +640 426 +640 395 +480 640 +640 425 +294 196 +640 427 +640 480 +500 263 +500 319 +640 480 +640 428 +640 602 +640 426 +425 640 +500 375 +500 400 +480 640 +465 640 +640 428 +427 640 +333 500 +640 480 +640 480 +640 426 +640 498 +480 640 +640 480 +640 480 +640 480 +640 480 +425 640 +640 480 +640 425 +426 640 +612 612 +640 476 +500 375 +480 640 +640 427 +427 640 +640 480 +640 480 +640 480 +428 640 +480 640 +640 426 +640 480 +640 480 +434 640 +480 640 +640 394 +640 478 +480 640 +500 375 +425 640 +640 480 +640 480 +479 640 +500 400 +480 640 +640 480 +612 612 +640 360 +375 500 +480 640 +640 480 +640 427 +427 640 +500 375 +375 500 +426 640 +640 480 +500 375 +640 480 +640 427 +480 640 +300 196 +193 272 +500 333 +500 375 +332 640 +640 480 +640 400 +425 640 +640 427 +500 333 +417 500 +640 415 +640 480 +166 221 +640 426 +640 427 +640 480 +480 640 +640 480 +424 640 +500 366 +640 427 +500 334 +425 640 +640 480 +500 375 +640 427 +640 480 +640 427 +640 425 +640 534 +387 640 +457 640 +480 640 +640 640 +640 426 +640 446 +640 393 +640 453 +640 433 +640 480 +500 357 +500 430 +640 428 +640 427 +427 640 +640 382 +640 408 +640 512 +640 480 +375 500 +640 429 +640 480 +640 480 +480 640 +640 427 +640 480 +640 458 +427 640 +500 375 +500 375 +640 427 +640 480 +594 640 +640 480 +480 640 +640 471 +640 480 +640 427 +640 361 +640 427 +640 427 +640 640 +480 640 +640 480 +640 480 +500 327 +640 427 +640 483 +375 500 +500 323 +640 480 +640 428 +353 378 +640 480 +640 480 +427 640 +640 480 +640 427 +410 500 +480 640 +640 480 +640 428 +640 429 +640 427 +640 478 +612 612 +640 427 +640 463 +640 480 +640 480 +640 427 +428 640 +640 480 +480 640 +640 421 +640 480 +640 427 +480 640 +500 400 +640 481 +640 548 +480 640 +375 500 +612 612 +640 427 +500 333 +640 427 +640 478 +500 375 +640 480 +640 360 +500 375 +640 430 +500 344 +500 375 +427 640 +640 428 +500 337 +640 360 +427 640 +640 424 +500 375 +640 480 +640 433 +500 327 +427 640 +480 640 +480 640 +640 480 +640 220 +640 486 +640 428 +640 480 +365 640 +427 640 +480 640 +640 480 +640 512 +480 640 +424 640 +640 480 +500 375 +500 375 +640 433 +640 426 +640 425 +480 640 +640 480 +640 453 +640 480 +640 638 +426 640 +375 500 +640 426 +640 360 +640 424 +640 480 +624 640 +640 480 +427 640 +335 500 +427 640 +640 480 +640 424 +378 500 +640 350 +449 640 +427 640 +640 426 +426 640 +427 640 +640 637 +375 500 +502 640 +640 426 +640 376 +425 640 +424 640 +640 480 +612 612 +640 427 +500 333 +640 480 +480 640 +640 480 +613 640 +375 500 +640 480 +640 428 +640 426 +640 480 +640 466 +640 435 +640 309 +640 425 +640 425 +640 428 +500 335 +427 640 +480 640 +466 640 +480 640 +640 480 +428 640 +640 434 +640 434 +640 426 +375 500 +480 640 +640 428 +640 480 +640 427 +640 480 +640 426 +640 463 +426 640 +640 441 +640 480 +427 640 +500 394 +482 640 +640 466 +426 640 +532 640 +640 428 +480 640 +640 426 +640 412 +500 375 +500 375 +640 426 +386 640 +640 480 +640 480 +640 426 +640 426 +640 480 +500 352 +640 640 +640 480 +480 640 +640 425 +640 640 +640 427 +640 433 +427 640 +427 640 +640 480 +640 480 +500 375 +500 375 +640 428 +500 345 +426 640 +640 480 +640 480 +640 427 +640 419 +640 480 +640 425 +500 375 +640 480 +640 480 +482 640 +640 427 +640 424 +640 470 +500 333 +640 427 +640 430 +640 480 +640 480 +640 480 +640 425 +640 424 +556 640 +640 479 +640 480 +640 427 +640 480 +500 375 +640 480 +640 429 +378 640 +640 426 +480 640 +612 612 +333 500 +640 411 +640 353 +612 612 +640 480 +640 425 +640 366 +480 640 +640 427 +640 480 +640 480 +427 640 +640 428 +457 640 +640 480 +640 424 +478 640 +640 480 +640 480 +640 425 +640 424 +640 479 +640 480 +640 360 +640 640 +421 640 +427 640 +640 481 +640 480 +427 640 +427 640 +640 480 +640 427 +640 427 +640 428 +500 375 +640 428 +640 480 +612 612 +500 375 +427 640 +500 375 +640 480 +640 427 +640 480 +480 640 +640 432 +640 427 +640 425 +640 480 +427 640 +640 361 +640 427 +640 425 +480 640 +478 640 +640 425 +480 640 +427 640 +427 640 +640 427 +487 640 +427 640 +480 640 +640 525 +428 500 +640 439 +500 375 +375 500 +458 640 +640 480 +640 423 +640 480 +640 480 +640 593 +640 480 +640 618 +640 392 +600 410 +640 427 +500 281 +640 480 +640 490 +640 480 +333 500 +640 640 +360 640 +427 640 +428 640 +401 600 +640 396 +640 480 +480 640 +640 480 +640 453 +640 438 +500 397 +517 640 +640 426 +640 426 +640 631 +480 640 +480 640 +640 480 +640 454 +480 640 +480 640 +512 640 +640 427 +640 480 +500 375 +588 640 +640 480 +640 480 +640 427 +640 480 +640 640 +411 640 +480 640 +640 480 +640 425 +426 640 +640 428 +612 612 +640 427 +426 640 +427 640 +640 428 +640 426 +640 425 +640 425 +500 381 +640 480 +640 392 +543 640 +480 640 +480 640 +550 245 +640 480 +640 480 +640 478 +334 640 +640 376 +640 427 +640 430 +500 326 +640 426 +500 375 +333 500 +527 640 +364 640 +640 480 +640 433 +640 427 +457 640 +640 480 +640 480 +640 506 +640 523 +640 425 +640 480 +640 480 +640 391 +640 221 +427 640 +355 500 +640 433 +640 480 +640 425 +640 377 +640 480 +640 425 +640 425 +640 427 +427 640 +640 427 +640 402 +640 457 +500 375 +640 426 +640 518 +640 640 +640 383 +640 427 +427 640 +500 375 +640 480 +428 640 +428 640 +640 480 +357 500 +640 480 +500 375 +640 515 +640 480 +640 360 +640 480 +500 333 +640 480 +240 360 +640 480 +640 443 +640 504 +640 480 +640 480 +465 640 +421 640 +640 480 +640 480 +640 480 +471 640 +640 480 +640 431 +640 425 +500 319 +640 411 +500 375 +640 426 +640 469 +640 427 +640 480 +640 480 +640 426 +500 333 +640 480 +640 366 +500 375 +640 480 +640 383 +640 480 +250 167 +640 427 +640 480 +640 424 +480 640 +500 375 +640 480 +640 480 +640 426 +640 427 +640 427 +640 404 +640 426 +427 640 +426 640 +640 359 +500 375 +640 429 +640 427 +640 480 +640 480 +328 500 +640 405 +478 640 +640 427 +500 333 +640 554 +449 640 +640 426 +640 480 +640 425 +640 480 +640 427 +640 426 +612 612 +640 320 +428 640 +462 640 +640 349 +640 427 +640 426 +640 427 +640 427 +359 640 +640 481 +640 429 +640 427 +427 640 +640 480 +640 359 +640 432 +640 427 +427 640 +640 426 +480 480 +640 426 +549 640 +640 427 +640 546 +640 489 +640 426 +500 335 +421 640 +640 427 +640 478 +640 425 +640 361 +640 639 +640 360 +423 640 +640 425 +612 612 +478 640 +640 426 +480 640 +640 426 +640 331 +480 640 +481 640 +640 480 +427 640 +591 640 +640 480 +640 427 +640 426 +640 478 +449 640 +640 480 +480 640 +640 480 +640 427 +640 480 +500 375 +500 400 +463 640 +427 640 +427 640 +640 434 +640 431 +333 500 +640 427 +640 425 +426 640 +429 640 +640 427 +375 500 +640 480 +500 375 +375 500 +640 425 +640 425 +500 335 +640 426 +612 612 +640 425 +640 480 +640 219 +640 427 +640 428 +640 427 +426 640 +640 480 +640 427 +640 427 +640 454 +612 612 +640 480 +480 640 +640 425 +640 480 +500 375 +640 427 +640 426 +640 383 +640 480 +500 375 +640 427 +500 269 +640 480 +452 500 +428 640 +640 427 +427 640 +640 480 +430 640 +640 480 +640 427 +640 471 +640 634 +500 375 +373 500 +640 480 +427 640 +640 427 +424 640 +640 480 +425 640 +640 425 +424 640 +640 360 +500 334 +635 640 +640 428 +500 375 +640 426 +640 436 +500 375 +640 360 +640 480 +640 427 +640 480 +427 640 +378 640 +640 594 +640 480 +640 433 +480 640 +427 640 +640 640 +640 480 +640 480 +501 640 +640 320 +640 480 +640 426 +640 406 +640 480 +640 640 +502 640 +375 500 +640 480 +640 427 +375 500 +640 427 +480 640 +640 453 +408 640 +640 423 +500 375 +640 427 +480 640 +640 423 +375 500 +640 480 +425 640 +640 480 +640 480 +640 480 +640 416 +640 426 +640 427 +640 480 +640 428 +640 427 +640 444 +640 480 +640 428 +426 640 +640 426 +480 640 +480 640 +640 455 +640 400 +480 640 +425 640 +478 640 +640 640 +427 640 +640 468 +500 500 +500 375 +640 480 +640 480 +640 480 +640 427 +640 480 +640 426 +500 500 +640 480 +500 334 +640 426 +640 427 +640 480 +640 427 +640 480 +426 640 +640 301 +640 428 +640 427 +500 222 +480 640 +427 640 +500 335 +360 270 +640 452 +640 361 +640 480 +480 640 +640 429 +640 434 +640 463 +640 427 +428 640 +640 427 +426 640 +640 472 +640 480 +640 438 +640 443 +612 612 +478 640 +426 640 +429 640 +640 425 +640 480 +640 480 +640 640 +426 640 +640 427 +640 424 +640 424 +640 424 +612 612 +640 480 +480 640 +400 500 +480 640 +640 480 +640 480 +640 427 +640 597 +640 416 +640 480 +640 480 +480 640 +480 640 +640 424 +640 428 +640 425 +582 640 +484 640 +566 640 +640 427 +426 640 +427 640 +640 480 +640 468 +640 424 +427 640 +640 425 +480 640 +600 400 +640 480 +640 480 +640 453 +500 339 +480 640 +640 480 +500 403 +500 333 +640 480 +640 480 +640 480 +640 427 +640 510 +640 425 +640 480 +426 640 +640 640 +375 500 +424 640 +640 427 +640 480 +480 640 +429 640 +640 426 +480 640 +640 427 +640 426 +640 480 +640 441 +494 640 +640 360 +425 640 +640 415 +640 427 +640 480 +640 360 +427 640 +500 333 +500 375 +333 500 +640 480 +480 640 +640 506 +640 427 +640 440 +600 450 +612 612 +640 424 +640 425 +640 480 +640 490 +480 640 +640 427 +640 480 +640 480 +640 428 +640 427 +408 640 +640 480 +640 480 +640 480 +480 640 +480 640 +500 375 +640 369 +424 640 +640 406 +500 375 +640 360 +640 519 +640 360 +640 426 +640 480 +640 480 +640 480 +500 375 +640 432 +640 501 +480 640 +640 640 +640 417 +600 450 +640 428 +640 427 +428 640 +374 500 +640 478 +640 425 +640 480 +480 640 +500 418 +333 500 +640 429 +640 428 +596 640 +640 480 +640 480 +640 359 +480 640 +640 427 +640 446 +640 427 +640 480 +500 375 +640 548 +480 640 +640 426 +500 357 +640 480 +500 375 +612 612 +480 640 +640 429 +640 429 +480 640 +426 640 +334 500 +604 640 +640 425 +640 424 +640 457 +640 426 +640 480 +640 551 +392 640 +640 418 +427 640 +640 480 +640 359 +500 375 +640 427 +210 304 +640 426 +356 200 +640 480 +500 375 +480 640 +500 377 +320 240 +427 640 +640 425 +640 513 +500 375 +427 640 +640 499 +640 294 +640 427 +640 443 +640 519 +640 480 +640 361 +640 480 +640 554 +640 426 +640 507 +640 426 +640 427 +640 480 +640 426 +640 480 +640 412 +640 480 +504 336 +640 480 +427 640 +426 640 +640 360 +640 421 +640 428 +640 480 +640 424 +480 640 +640 480 +640 480 +640 426 +640 480 +640 425 +480 640 +640 426 +640 428 +640 524 +640 374 +640 427 +640 428 +427 640 +640 480 +640 427 +640 360 +640 480 +428 640 +480 640 +426 640 +500 375 +640 490 +640 484 +640 445 +640 480 +427 640 +640 425 +500 375 +640 428 +480 640 +640 347 +640 360 +425 640 +640 499 +640 480 +500 375 +640 478 +640 427 +500 375 +427 640 +424 640 +480 640 +640 428 +640 640 +500 335 +640 480 +640 640 +640 427 +640 539 +480 640 +640 427 +489 640 +500 333 +640 424 +427 640 +640 427 +640 427 +480 640 +640 424 +500 335 +640 640 +640 480 +640 480 +427 640 +640 480 +576 475 +640 513 +640 427 +640 513 +480 640 +481 640 +449 640 +640 428 +640 426 +640 480 +640 346 +640 448 +640 480 +640 406 +640 427 +640 427 +640 425 +640 480 +428 640 +640 480 +500 375 +640 470 +640 353 +640 427 +612 612 +640 511 +640 383 +640 640 +640 425 +482 640 +640 426 +480 640 +359 640 +640 427 +640 479 +500 375 +640 480 +640 427 +640 433 +480 640 +640 480 +495 640 +640 424 +640 480 +640 428 +640 415 +640 480 +612 612 +333 500 +640 480 +427 640 +493 640 +480 640 +640 569 +500 375 +640 427 +640 483 +640 473 +640 478 +640 427 +478 640 +640 426 +427 640 +640 427 +640 479 +481 640 +640 312 +480 640 +640 480 +640 426 +640 636 +480 640 +640 480 +480 640 +640 383 +640 428 +640 329 +640 406 +640 428 +378 500 +500 375 +640 371 +428 640 +427 640 +640 359 +640 427 +640 480 +640 424 +640 427 +640 480 +500 346 +640 480 +384 640 +480 640 +640 427 +443 640 +541 640 +640 640 +640 427 +640 480 +640 541 +537 640 +427 640 +640 426 +640 427 +640 480 +444 640 +480 640 +640 480 +480 640 +640 480 +640 480 +640 544 +500 343 +640 480 +640 480 +640 427 +640 640 +640 453 +640 316 +357 500 +496 640 +480 640 +640 421 +640 480 +640 424 +640 426 +640 427 +612 612 +640 427 +640 480 +500 475 +501 640 +612 612 +480 640 +640 480 +640 425 +480 640 +639 640 +640 329 +640 427 +640 480 +640 480 +640 480 +480 640 +640 514 +427 640 +640 480 +500 376 +500 375 +640 425 +640 427 +640 488 +640 428 +640 428 +640 428 +488 500 +640 424 +640 480 +480 640 +640 536 +640 458 +500 400 +640 451 +640 454 +640 640 +640 425 +640 428 +640 426 +640 478 +500 375 +427 640 +640 400 +640 427 +640 480 +480 640 +427 640 +612 612 +640 427 +640 427 +640 480 +612 612 +480 640 +640 427 +640 360 +640 480 +640 425 +610 431 +640 385 +640 426 +640 640 +640 427 +640 452 +640 426 +640 425 +640 425 +640 480 +329 500 +640 480 +500 375 +480 640 +640 428 +640 480 +640 426 +612 612 +640 480 +238 206 +640 427 +640 480 +640 427 +500 375 +640 473 +640 480 +640 480 +640 480 +500 334 +640 426 +427 640 +640 309 +640 428 +333 500 +640 427 +480 640 +462 640 +427 640 +640 426 +640 480 +640 427 +424 640 +640 480 +640 480 +640 425 +640 640 +640 425 +640 480 +429 640 +480 640 +640 426 +475 640 +427 640 +640 480 +500 343 +427 640 +500 335 +640 480 +640 491 +419 640 +640 426 +640 427 +427 640 +480 640 +640 450 +640 480 +500 375 +640 480 +640 427 +465 421 +640 427 +640 480 +500 333 +640 428 +448 500 +640 359 +640 545 +427 640 +640 426 +640 427 +333 500 +640 480 +382 500 +640 480 +640 428 +640 480 +640 418 +640 428 +427 640 +640 480 +500 333 +640 480 +640 480 +640 428 +500 375 +640 388 +640 429 +640 480 +640 427 +640 427 +640 480 +368 640 +500 375 +640 426 +640 413 +431 500 +640 480 +640 480 +375 500 +500 332 +640 480 +640 480 +480 640 +640 426 +640 481 +426 640 +640 427 +640 478 +640 427 +640 425 +640 530 +523 640 +640 426 +640 424 +640 480 +427 640 +640 474 +640 427 +640 425 +640 395 +640 480 +480 640 +640 464 +640 462 +640 480 +640 407 +640 426 +640 480 +640 425 +320 480 +480 640 +429 640 +578 640 +640 569 +640 426 +640 480 +500 333 +640 480 +640 480 +395 500 +640 479 +640 480 +500 370 +361 640 +532 640 +640 480 +500 312 +480 640 +640 640 +640 508 +640 425 +640 480 +427 640 +640 480 +640 480 +640 420 +427 640 +640 480 +375 500 +640 426 +640 427 +640 488 +500 332 +427 640 +640 429 +640 425 +375 500 +640 360 +640 427 +640 480 +500 375 +640 480 +480 640 +612 612 +640 424 +640 424 +640 478 +640 427 +640 480 +640 480 +640 425 +500 375 +640 427 +480 640 +640 426 +640 426 +640 434 +500 333 +400 266 +500 332 +640 428 +640 480 +640 480 +500 328 +640 427 +500 417 +480 640 +500 375 +427 640 +480 640 +480 640 +480 640 +640 426 +640 424 +640 480 +640 640 +375 500 +640 427 +427 640 +640 427 +480 640 +500 252 +458 640 +640 427 +640 480 +640 427 +640 478 +480 640 +426 640 +640 425 +478 640 +427 640 +333 500 +640 425 +427 640 +640 336 +640 427 +375 500 +640 405 +480 640 +640 427 +640 501 +640 456 +640 428 +640 480 +640 473 +333 500 +640 464 +640 428 +427 640 +500 386 +500 375 +612 612 +640 427 +640 464 +457 640 +640 427 +640 429 +640 386 +640 427 +640 441 +500 334 +500 375 +640 480 +640 427 +480 640 +500 332 +640 427 +640 480 +640 480 +640 391 +640 438 +640 484 +500 375 +480 640 +640 420 +500 400 +427 640 +640 503 +640 480 +640 427 +427 640 +640 480 +640 480 +640 427 +640 425 +640 426 +427 640 +640 360 +612 612 +640 425 +640 424 +640 391 +480 640 +640 480 +500 375 +640 480 +640 480 +612 612 +480 640 +334 500 +480 640 +640 480 +640 407 +640 480 +640 361 +640 480 +640 427 +640 563 +640 425 +640 480 +500 281 +640 543 +640 480 +640 428 +640 640 +640 480 +500 375 +640 433 +461 459 +640 363 +640 480 +423 640 +640 360 +640 480 +640 425 +640 480 +640 473 +640 426 +480 640 +640 425 +640 480 +640 429 +500 381 +500 328 +640 427 +426 640 +639 480 +640 436 +640 480 +640 505 +640 480 +374 640 +640 480 +640 427 +640 480 +640 480 +640 480 +640 480 +640 427 +427 640 +640 558 +640 478 +640 427 +640 427 +500 375 +640 480 +640 427 +375 500 +640 426 +640 427 +640 429 +640 432 +640 383 +500 317 +333 500 +640 160 +375 500 +425 640 +480 640 +640 480 +640 425 +640 471 +500 375 +640 427 +640 480 +640 430 +375 500 +640 480 +500 375 +640 480 +640 427 +640 480 +640 204 +640 478 +427 640 +427 640 +640 427 +640 427 +640 397 +288 197 +640 426 +640 427 +640 640 +640 427 +640 480 +427 640 +640 480 +640 480 +640 501 +640 478 +612 612 +640 427 +426 640 +500 375 +640 480 +640 426 +520 640 +640 427 +640 426 +640 480 +640 420 +427 640 +640 480 +640 427 +476 640 +640 427 +427 640 +640 478 +640 448 +500 333 +500 285 +640 427 +494 640 +640 362 +375 500 +600 450 +640 480 +640 417 +500 496 +330 640 +500 375 +500 375 +640 478 +640 480 +640 480 +640 360 +640 426 +640 428 +612 612 +427 640 +640 480 +640 366 +640 480 +640 480 +427 640 +640 480 +480 360 +640 427 +640 457 +640 360 +509 640 +640 480 +500 375 +640 427 +640 425 +640 640 +640 480 +640 529 +640 480 +640 427 +640 480 +640 425 +640 426 +640 426 +500 375 +526 640 +640 426 +335 500 +612 612 +640 454 +383 640 +640 361 +640 427 +474 640 +640 427 +640 428 +500 326 +640 480 +640 424 +640 513 +640 510 +500 375 +500 375 +480 640 +480 640 +640 606 +480 640 +480 640 +640 311 +640 494 +640 425 +427 640 +480 640 +640 428 +640 640 +600 400 +640 457 +640 480 +640 401 +640 421 +640 480 +640 480 +640 436 +500 375 +426 640 +640 429 +640 496 +500 337 +640 480 +342 500 +500 334 +640 428 +640 333 +640 480 +480 640 +408 500 +544 640 +640 480 +640 428 +640 427 +640 414 +640 504 +640 479 +500 375 +480 640 +433 500 +640 480 +640 480 +427 640 +640 480 +640 480 +640 480 +640 426 +536 640 +500 362 +500 375 +640 424 +640 480 +640 480 +640 480 +640 429 +427 640 +640 426 +640 480 +640 543 +640 360 +500 334 +640 360 +640 426 +500 375 +640 374 +500 375 +612 612 +640 426 +427 640 +427 640 +480 640 +640 480 +640 480 +640 480 +640 480 +640 480 +640 427 +423 640 +478 640 +427 640 +375 500 +640 478 +375 500 +500 332 +427 640 +427 640 +640 480 +473 640 +640 480 +640 429 +640 474 +640 480 +640 512 +500 375 +639 640 +561 640 +332 500 +480 640 +640 640 +442 640 +500 448 +640 480 +640 428 +640 480 +640 480 +640 427 +640 427 +640 480 +640 480 +640 424 +425 640 +640 436 +640 427 +640 480 +612 612 +333 500 +640 480 +612 612 +640 426 +459 322 +640 426 +640 427 +426 640 +640 480 +640 426 +640 480 +600 422 +640 480 +612 612 +640 480 +640 394 +640 360 +640 480 +640 427 +500 375 +640 478 +489 640 +640 481 +640 427 +640 337 +640 392 +640 508 +500 421 +480 640 +640 480 +640 344 +640 427 +426 640 +612 612 +640 479 +640 480 +640 557 +476 500 +640 429 +640 424 +640 480 +398 500 +640 425 +640 640 +612 612 +640 480 +640 424 +640 424 +426 640 +640 480 +640 426 +483 640 +640 453 +640 480 +500 251 +427 640 +640 427 +500 375 +640 480 +640 480 +640 424 +640 480 +427 640 +640 427 +640 480 +640 480 +640 480 +640 478 +640 640 +480 640 +506 640 +324 243 +612 612 +500 328 +640 427 +640 480 +428 640 +480 640 +640 480 +640 640 +500 375 +425 640 +640 480 +640 432 +426 640 +640 424 +640 480 +478 640 +640 360 +427 640 +640 480 +640 480 +512 640 +480 640 +481 640 +500 375 +500 333 +640 427 +595 640 +640 480 +480 640 +640 359 +640 480 +640 352 +640 480 +427 640 +640 427 +640 478 +426 640 +640 427 +640 426 +640 317 +428 640 +425 640 +251 480 +463 640 +640 419 +640 480 +640 398 +426 640 +640 480 +427 640 +640 480 +640 480 +480 640 +640 427 +640 427 +640 427 +640 480 +640 427 +333 500 +640 480 +640 480 +640 426 +640 427 +500 371 +500 376 +640 480 +480 640 +640 437 +480 640 +640 480 +426 640 +640 424 +640 359 +640 480 +640 427 +640 421 +640 427 +640 480 +640 514 +600 462 +375 500 +333 500 +500 375 +640 480 +480 640 +500 353 +640 512 +480 640 +640 510 +640 480 +640 428 +640 426 +640 480 +640 428 +480 640 +577 640 +427 640 +640 360 +595 438 +640 480 +427 640 +640 499 +333 500 +640 425 +640 480 +640 480 +612 612 +429 640 +640 480 +640 427 +640 394 +640 425 +640 480 +480 640 +640 480 +640 413 +615 640 +640 427 +640 480 +640 436 +640 427 +427 640 +640 360 +480 640 +640 428 +640 362 +640 480 +640 480 +293 450 +640 428 +640 480 +640 457 +480 640 +640 424 +478 640 +640 480 +480 640 +500 391 +424 640 +640 427 +500 374 +640 480 +500 395 +500 375 +640 427 +640 412 +640 427 +640 427 +640 427 +500 333 +640 427 +640 427 +640 427 +612 612 +480 640 +640 480 +640 480 +640 427 +480 640 +640 425 +425 640 +525 640 +640 427 +640 434 +500 463 +640 427 +427 640 +640 425 +640 480 +480 640 +427 640 +640 480 +500 400 +640 427 +640 480 +427 640 +496 500 +448 336 +426 640 +640 480 +640 480 +640 405 +480 640 +470 640 +640 427 +500 385 +426 640 +640 425 +640 480 +500 375 +640 480 +500 375 +640 426 +640 423 +640 640 +640 464 +640 425 +640 428 +500 477 +298 640 +640 480 +640 425 +640 426 +640 427 +640 480 +500 333 +640 477 +478 640 +372 500 +640 437 +640 426 +640 480 +500 375 +640 427 +500 333 +375 500 +640 480 +640 354 +478 640 +640 464 +640 424 +612 612 +500 375 +640 480 +640 480 +640 571 +640 480 +640 480 +640 480 +640 480 +640 480 +640 424 +640 427 +640 427 +640 627 +640 508 +427 640 +640 476 +640 427 +640 454 +640 502 +612 612 +333 500 +424 640 +573 640 +640 424 +640 480 +640 427 +640 480 +589 640 +640 427 +640 428 +640 472 +640 428 +480 640 +512 640 +640 480 +640 480 +640 427 +640 412 +500 314 +640 480 +480 640 +500 375 +586 640 +333 500 +640 469 +640 425 +640 480 +332 500 +640 480 +640 425 +544 640 +640 458 +500 375 +480 640 +640 480 +640 480 +640 480 +320 240 +640 480 +640 480 +427 640 +500 375 +640 480 +334 500 +640 480 +640 427 +640 497 +500 375 +640 480 +640 426 +640 425 +473 640 +640 426 +640 480 +640 426 +531 640 +640 478 +640 428 +640 429 +480 640 +612 612 +640 368 +375 500 +640 480 +640 480 +640 480 +427 640 +503 640 +640 360 +640 427 +480 640 +640 427 +640 426 +640 480 +480 640 +640 426 +640 429 +640 426 +480 640 +640 427 +640 427 +640 481 +640 427 +640 427 +640 474 +597 640 +640 248 +480 360 +640 480 +640 512 +640 427 +332 500 +640 427 +640 428 +460 640 +640 426 +500 375 +420 640 +640 480 +640 480 +500 375 +481 640 +640 427 +640 427 +640 426 +640 478 +428 640 +500 375 +640 395 +640 426 +640 427 +350 233 +640 427 +386 640 +640 480 +427 640 +640 286 +640 480 +640 419 +340 500 +640 348 +335 500 +640 495 +640 366 +640 427 +640 640 +640 427 +640 425 +640 480 +640 480 +640 480 +640 427 +640 425 +500 333 +640 481 +480 640 +480 640 +427 640 +640 427 +426 640 +640 480 +640 478 +500 332 +640 427 +640 427 +500 281 +640 480 +428 640 +640 480 +280 268 +640 369 +640 427 +640 424 +640 480 +427 640 +428 640 +640 480 +640 427 +500 361 +612 612 +640 480 +480 640 +640 427 +640 478 +640 514 +480 640 +432 288 +640 392 +640 480 +640 480 +612 612 +640 361 +640 480 +333 500 +640 427 +640 427 +640 407 +640 418 +640 512 +640 426 +640 427 +500 332 +640 428 +480 640 +640 480 +640 429 +640 360 +500 375 +640 424 +640 425 +550 365 +383 640 +640 427 +430 640 +500 375 +425 640 +500 375 +500 357 +500 222 +640 427 +640 480 +480 640 +500 375 +640 428 +640 423 +421 640 +640 480 +640 480 +640 427 +640 426 +640 480 +466 640 +427 640 +500 400 +480 640 +500 333 +640 426 +480 640 +640 480 +352 288 +640 480 +640 425 +640 428 +640 426 +640 427 +640 478 +565 640 +640 426 +640 480 +500 374 +640 426 +600 500 +640 480 +640 480 +480 640 +640 480 +586 640 +640 427 +640 491 +640 327 +640 218 +500 332 +500 375 +640 480 +640 580 +638 640 +359 640 +640 360 +516 640 +640 226 +333 500 +640 427 +640 406 +640 427 +640 480 +448 336 +640 427 +520 640 +640 480 +409 500 +375 500 +640 480 +640 483 +480 640 +640 428 +500 375 +640 480 +640 480 +640 428 +400 267 +640 480 +375 500 +640 428 +640 480 +640 424 +640 427 +428 640 +640 425 +424 640 +640 480 +500 496 +333 500 +500 335 +502 640 +640 427 +640 485 +640 480 +427 640 +425 640 +334 500 +640 426 +640 480 +640 347 +640 480 +443 640 +500 335 +640 427 +640 573 +640 444 +500 375 +427 640 +640 427 +500 375 +640 427 +640 426 +426 640 +426 640 +640 480 +640 480 +640 479 +640 427 +640 480 +640 540 +640 427 +427 640 +500 375 +640 480 +500 375 +375 500 +640 480 +640 425 +437 640 +407 482 +478 640 +640 512 +500 375 +640 480 +500 375 +640 427 +640 315 +320 240 +640 371 +640 480 +640 480 +435 640 +640 480 +424 640 +612 612 +480 640 +640 640 +425 640 +640 480 +500 375 +480 304 +640 428 +640 480 +640 480 +640 427 +640 428 +640 453 +523 640 +427 640 +500 375 +640 480 +500 500 +640 425 +640 427 +500 363 +427 640 +640 427 +500 375 +383 640 +427 640 +427 640 +500 375 +640 419 +640 480 +640 427 +360 270 +640 427 +500 388 +640 427 +640 480 +640 480 +640 427 +640 425 +640 427 +640 480 +640 323 +640 426 +500 375 +640 427 +640 424 +600 600 +640 427 +480 640 +640 457 +500 302 +640 480 +640 480 +640 480 +500 375 +457 640 +640 480 +640 360 +640 427 +500 364 +612 612 +500 375 +640 427 +375 500 +480 640 +640 427 +500 375 +640 366 +640 427 +640 480 +640 555 +640 427 +640 427 +640 426 +640 480 +640 480 +640 428 +640 484 +640 491 +500 375 +640 507 +500 375 +640 480 +375 500 +640 480 +640 480 +640 480 +640 364 +640 427 +464 640 +443 640 +640 480 +480 640 +640 363 +480 640 +480 640 +640 395 +427 640 +640 390 +640 427 +500 375 +640 427 +500 333 +612 612 +640 427 +640 480 +640 480 +491 640 +640 480 +640 428 +640 211 +640 427 +640 480 +640 480 +640 464 +640 457 +640 480 +640 428 +640 480 +640 425 +640 426 +640 360 +500 375 +640 480 +500 318 +640 428 +640 480 +375 500 +480 640 +347 500 +612 612 +640 425 +640 480 +640 542 +640 412 +640 427 +500 378 +399 640 +480 640 +640 425 +640 425 +612 612 +640 481 +640 427 +427 640 +640 419 +428 640 +640 427 +640 453 +425 640 +640 479 +640 480 +640 480 +457 640 +512 640 +480 640 +640 443 +640 427 +640 497 +500 333 +427 640 +425 640 +427 640 +480 640 +500 375 +640 400 +468 640 +425 640 +640 478 +332 500 +640 424 +640 424 +640 493 +640 485 +333 500 +640 426 +640 427 +640 425 +640 426 +640 429 +480 640 +612 612 +640 399 +640 480 +640 417 +500 400 +640 421 +640 321 +640 480 +427 640 +427 640 +640 480 +640 480 +640 480 +428 640 +640 425 +640 427 +414 640 +640 480 +640 480 +640 425 +640 424 +640 480 +509 640 +640 425 +500 375 +500 417 +427 640 +640 424 +640 480 +640 480 +480 640 +500 375 +430 640 +640 480 +640 427 +640 480 +640 427 +640 457 +640 425 +427 640 +375 500 +640 476 +640 349 +640 426 +640 488 +333 500 +480 640 +444 640 +640 480 +640 427 +500 375 +640 480 +320 240 +457 640 +640 480 +640 361 +640 425 +640 480 +640 428 +640 427 +640 425 +640 428 +640 427 +640 480 +640 346 +640 480 +559 640 +500 331 +500 375 +359 640 +640 479 +640 480 +480 640 +375 500 +427 640 +640 429 +480 640 +640 480 +640 428 +640 481 +640 531 +375 500 +640 427 +480 640 +640 351 +640 480 +640 360 +480 640 +640 640 +640 425 +640 480 +480 640 +640 427 +500 333 +640 479 +480 640 +640 426 +640 376 +426 640 +640 428 +640 427 +500 333 +640 565 +480 640 +640 480 +640 417 +640 480 +500 375 +500 333 +640 480 +500 396 +317 640 +425 640 +640 427 +480 640 +640 428 +640 480 +640 480 +500 375 +640 426 +640 361 +640 425 +375 500 +640 427 +427 640 +640 427 +427 640 +640 426 +375 500 +437 640 +640 427 +640 425 +640 480 +640 457 +640 480 +640 480 +600 640 +640 424 +640 425 +640 480 +640 425 +640 480 +500 296 +478 640 +640 399 +640 624 +640 426 +640 427 +640 471 +640 427 +450 640 +640 427 +640 383 +500 335 +640 360 +640 359 +640 480 +640 427 +418 640 +640 480 +460 640 +640 482 +480 640 +640 506 +640 480 +480 640 +375 500 +640 481 +427 640 +640 427 +600 400 +500 333 +640 360 +640 480 +480 640 +425 640 +640 480 +640 480 +640 428 +640 355 +480 640 +640 480 +640 480 +640 480 +427 640 +640 427 +500 375 +427 640 +500 375 +640 427 +640 480 +640 427 +500 375 +640 334 +640 427 +640 427 +640 427 +638 640 +500 375 +640 480 +640 428 +437 640 +429 640 +500 476 +640 359 +640 480 +640 447 +640 480 +640 360 +500 495 +500 375 +500 362 +640 480 +333 500 +640 399 +640 218 +640 418 +640 480 +640 445 +640 480 +640 480 +640 459 +640 480 +480 640 +612 612 +480 640 +640 480 +640 481 +640 427 +640 426 +427 640 +640 471 +427 640 +480 640 +640 427 +640 426 +480 640 +640 426 +640 416 +640 480 +640 428 +640 480 +640 480 +640 427 +428 640 +640 640 +612 612 +640 443 +640 480 +640 427 +640 480 +640 480 +334 500 +640 480 +640 425 +500 375 +640 427 +640 427 +640 480 +640 420 +640 426 +640 480 +640 478 +640 426 +612 612 +640 478 +640 539 +640 640 +332 500 +640 480 +480 640 +640 485 +640 480 +500 328 +640 640 +640 361 +640 426 +640 427 +640 480 +640 324 +640 383 +640 480 +511 640 +640 480 +500 285 +500 332 +640 480 +640 459 +480 640 +640 469 +500 375 +640 359 +600 400 +640 426 +640 480 +640 411 +640 480 +438 424 +640 427 +551 640 +640 480 +640 427 +640 408 +640 480 +640 424 +640 512 +640 480 +375 500 +640 427 +612 612 +640 480 +640 528 +479 640 +426 640 +640 480 +640 427 +640 359 +500 333 +640 480 +550 640 +640 480 +640 434 +633 640 +640 425 +427 640 +640 478 +640 480 +640 480 +640 480 +640 516 +640 455 +640 427 +640 480 +640 426 +640 427 +428 640 +640 480 +640 482 +640 259 +640 426 +640 457 +480 640 +427 640 +640 427 +640 480 +640 480 +640 484 +640 497 +640 426 +640 424 +640 480 +640 480 +640 480 +640 360 +482 640 +425 640 +640 361 +640 480 +640 480 +427 640 +640 480 +640 426 +640 480 +640 374 +640 426 +640 328 +640 427 +612 612 +333 500 +640 338 +500 400 +640 427 +640 427 +640 480 +640 426 +640 427 +500 375 +640 425 +640 480 +640 480 +500 375 +427 640 +640 429 +640 427 +640 466 +500 266 +500 400 +640 427 +504 640 +640 480 +480 640 +500 375 +500 375 +500 375 +500 375 +427 640 +640 480 +480 640 +640 480 +640 536 +640 427 +500 375 +640 480 +500 375 +500 375 +640 427 +612 612 +640 481 +640 427 +640 427 +500 375 +640 427 +640 509 +375 500 +640 640 +612 612 +640 480 +640 425 +640 480 +500 375 +640 425 +640 480 +640 426 +640 449 +640 480 +640 608 +640 359 +640 424 +480 640 +640 480 +640 464 +640 387 +408 640 +640 480 +640 427 +640 427 +640 468 +480 640 +375 500 +428 640 +640 480 +480 640 +640 480 +640 480 +375 500 +467 640 +640 425 +640 640 +640 480 +640 480 +640 427 +640 480 +480 640 +640 428 +640 427 +640 427 +640 480 +500 375 +640 428 +612 612 +500 333 +427 640 +640 425 +426 640 +640 480 +640 480 +640 360 +640 480 +500 375 +480 640 +480 640 +427 640 +480 640 +640 427 +640 416 +640 427 +640 424 +640 480 +640 385 +640 428 +640 480 +640 466 +640 425 +640 427 +480 640 +480 640 +480 640 +640 441 +640 480 +332 500 +640 428 +640 480 +427 640 +640 513 +640 427 +612 612 +480 640 +640 640 +640 480 +640 428 +425 640 +640 480 +640 640 +480 640 +640 428 +640 288 +640 427 +640 425 +640 479 +640 427 +640 426 +427 640 +480 640 +320 240 +640 480 +640 426 +500 375 +640 480 +640 423 +640 604 +640 436 +500 281 +640 427 +612 612 +427 640 +640 427 +427 640 +640 428 +640 427 +500 335 +640 428 +480 640 +640 427 +640 427 +640 480 +480 640 +640 427 +500 335 +335 500 +640 480 +640 391 +426 640 +431 431 +640 480 +640 463 +640 425 +640 427 +640 425 +500 332 +424 640 +500 375 +478 640 +640 480 +640 436 +640 480 +480 640 +640 596 +640 640 +640 424 +413 500 +640 477 +426 640 +426 640 +640 640 +640 427 +640 480 +640 428 +640 428 +640 457 +640 426 +640 640 +375 500 +640 473 +640 426 +640 427 +640 427 +640 478 +431 500 +640 429 +640 426 +640 480 +640 427 +427 640 +640 427 +640 427 +640 428 +640 480 +375 500 +640 480 +320 225 +640 480 +640 427 +640 480 +640 427 +426 640 +427 640 +640 404 +638 640 +640 429 +640 427 +640 480 +500 375 +431 640 +640 428 +512 640 +467 640 +427 640 +640 429 +427 640 +478 640 +640 480 +500 333 +640 480 +448 279 +640 427 +640 426 +640 427 +478 640 +640 513 +491 640 +480 640 +640 480 +640 480 +640 480 +640 480 +640 427 +480 640 +500 375 +481 640 +485 500 +640 438 +640 480 +640 480 +500 375 +640 425 +640 480 +640 480 +640 424 +640 427 +500 375 +640 424 +640 426 +640 480 +500 375 +640 428 +640 360 +640 480 +640 428 +640 427 +640 427 +427 640 +640 593 +424 640 +640 480 +640 425 +640 378 +640 480 +640 424 +640 480 +404 640 +500 345 +640 480 +640 480 +640 427 +500 370 +500 332 +500 333 +640 511 +427 640 +640 426 +433 640 +480 640 +640 428 +640 348 +500 375 +500 333 +640 441 +500 358 +640 426 +640 480 +426 640 +427 640 +640 491 +383 640 +333 500 +640 425 +640 482 +639 640 +500 298 +427 640 +375 500 +640 480 +640 480 +375 500 +640 427 +500 375 +640 480 +637 640 +640 640 +640 429 +480 640 +640 480 +640 471 +500 375 +640 417 +480 640 +427 640 +500 375 +640 486 +640 480 +428 640 +640 424 +640 480 +500 365 +500 375 +460 640 +640 426 +427 640 +640 480 +640 399 +640 480 +640 480 +612 612 +640 429 +640 426 +512 640 +640 429 +375 500 +414 640 +480 640 +640 480 +640 360 +640 480 +478 640 +360 640 +640 480 +427 640 +640 424 +375 500 +427 640 +640 375 +500 335 +640 427 +640 480 +640 512 +417 640 +640 427 +640 480 +640 427 +640 427 +640 480 +640 427 +640 424 +500 343 +640 428 +640 474 +640 480 +640 480 +640 418 +640 480 +640 640 +500 334 +433 640 +640 480 +640 480 +443 640 +640 640 +640 427 +640 425 +640 428 +640 383 +640 480 +427 640 +640 384 +480 640 +640 426 +640 429 +640 480 +640 480 +640 480 +640 426 +640 480 +640 428 +640 480 +640 480 +425 640 +640 480 +481 640 +640 427 +640 480 +427 640 +360 640 +640 480 +640 480 +500 375 +425 640 +640 480 +640 480 +640 523 +640 480 +512 640 +427 640 +640 640 +640 640 +640 427 +640 480 +480 640 +480 640 +480 640 +479 640 +480 640 +640 427 +640 427 +427 640 +640 427 +640 427 +640 480 +500 456 +640 429 +640 640 +640 424 +640 447 +375 500 +640 427 +640 458 +640 480 +640 428 +640 424 +640 360 +640 480 +640 361 +363 500 +640 480 +640 480 +640 356 +640 427 +631 640 +640 480 +480 640 +429 640 +640 480 +640 426 +640 427 +640 480 +640 480 +640 427 +479 640 +480 640 +640 427 +640 480 +500 330 +640 427 +515 640 +640 573 +638 640 +640 427 +640 480 +528 512 +640 480 +640 427 +424 640 +640 480 +480 640 +640 480 +640 480 +640 427 +640 428 +500 333 +500 375 +420 640 +640 427 +640 426 +640 480 +500 336 +500 333 +500 375 +640 480 +500 375 +480 640 +640 480 +640 480 +332 500 +640 557 +640 390 +640 480 +428 640 +640 441 +640 427 +640 480 +500 420 +640 427 +640 425 +640 480 +640 428 +640 480 +480 640 +640 456 +640 480 +432 499 +640 478 +425 640 +480 640 +640 568 +612 612 +640 480 +500 375 +640 428 +640 427 +427 640 +612 612 +640 428 +640 486 +640 426 +640 480 +640 427 +640 480 +480 640 +640 359 +457 640 +640 426 +640 428 +428 640 +640 427 +640 480 +375 500 +640 480 +640 640 +640 480 +500 500 +500 375 +500 281 +640 427 +427 640 +640 480 +640 480 +427 640 +640 640 +640 428 +427 640 +480 640 +500 374 +640 480 +500 380 +500 375 +427 640 +375 500 +640 427 +640 425 +612 612 +458 500 +375 500 +640 640 +600 411 +640 480 +427 640 +640 427 +375 500 +500 375 +333 500 +640 428 +640 479 +640 480 +640 426 +640 480 +640 386 +640 480 +640 457 +640 480 +640 428 +500 359 +500 500 +427 640 +640 480 +640 640 +501 640 +640 425 +480 640 +640 480 +640 480 +375 500 +640 458 +640 426 +640 480 +640 427 +640 480 +375 500 +480 640 +329 500 +500 373 +539 640 +640 424 +640 480 +640 476 +521 640 +640 480 +640 480 +640 480 +640 480 +640 480 +480 640 +640 427 +640 418 +640 480 +640 426 +640 480 +480 640 +480 640 +640 480 +427 640 +426 640 +612 612 +640 480 +375 500 +640 480 +640 479 +333 500 +640 480 +500 333 +640 425 +636 636 +640 427 +640 426 +427 640 +500 375 +640 480 +431 640 +640 393 +426 640 +612 612 +640 368 +375 500 +639 640 +640 429 +427 640 +640 370 +359 640 +640 427 +640 398 +500 436 +640 390 +640 469 +427 640 +640 427 +640 429 +500 353 +640 391 +640 429 +500 281 +512 640 +640 426 +612 612 +640 480 +480 640 +640 427 +456 500 +512 640 +427 640 +612 612 +427 640 +612 612 +640 426 +640 359 +427 640 +640 360 +500 375 +640 456 +640 427 +640 427 +640 427 +640 480 +640 241 +429 640 +343 500 +640 480 +640 480 +640 480 +640 427 +640 427 +334 500 +640 425 +640 480 +640 426 +640 480 +640 480 +640 478 +473 640 +640 480 +640 480 +445 500 +640 640 +500 375 +640 426 +453 640 +640 480 +500 281 +640 427 +640 484 +640 426 +640 480 +640 427 +424 640 +425 282 +640 521 +640 495 +640 480 +640 480 +333 500 +640 426 +640 480 +640 640 +640 480 +640 605 +640 400 +457 640 +640 480 +640 480 +500 375 +480 640 +640 480 +427 640 +640 424 +640 423 +640 480 +480 640 +500 160 +640 480 +640 427 +640 478 +640 320 +640 480 +375 500 +640 479 +640 480 +640 429 +640 480 +640 427 +427 640 +427 640 +480 640 +640 213 +640 640 +640 469 +640 457 +640 480 +640 610 +640 425 +500 334 +541 640 +640 480 +428 640 +500 375 +610 640 +640 425 +640 428 +612 612 +640 499 +640 427 +427 640 +375 500 +483 640 +640 480 +640 428 +640 423 +640 480 +640 480 +480 640 +468 640 +500 375 +640 427 +640 480 +240 320 +640 428 +480 640 +640 480 +425 640 +500 375 +500 333 +640 427 +400 300 +640 480 +640 426 +640 254 +375 500 +640 480 +640 427 +464 640 +480 640 +640 427 +640 640 +427 640 +383 640 +640 427 +430 640 +640 378 +640 427 +640 480 +640 444 +640 427 +500 333 +375 500 +640 427 +640 425 +640 428 +640 480 +640 428 +640 390 +500 375 +640 398 +640 480 +640 480 +640 480 +511 640 +640 480 +640 411 +640 360 +640 480 +500 333 +640 428 +640 360 +640 478 +640 480 +640 480 +640 389 +427 640 +376 500 +425 640 +500 375 +500 375 +500 333 +640 478 +640 480 +640 427 +640 480 +640 496 +640 466 +500 500 +640 428 +640 480 +640 480 +640 480 +480 640 +500 375 +640 480 +640 480 +480 640 +640 427 +640 480 +640 480 +640 427 +640 425 +640 640 +640 451 +640 427 +427 640 +500 375 +640 591 +640 536 +640 480 +640 425 +480 640 +480 640 +426 640 +640 427 +427 640 +478 640 +480 640 +640 427 +500 375 +640 480 +640 428 +640 424 +500 334 +500 306 +427 640 +612 612 +333 500 +500 400 +640 427 +480 640 +454 640 +640 436 +480 640 +640 480 +333 500 +640 480 +640 427 +640 427 +427 640 +640 480 +480 640 +427 640 +500 332 +640 415 +640 427 +640 426 +640 479 +428 640 +640 459 +640 480 +640 427 +640 480 +640 426 +640 480 +640 480 +500 375 +640 427 +640 428 +640 480 +640 502 +640 311 +495 640 +640 480 +640 480 +640 358 +640 493 +320 240 +640 406 +640 427 +640 480 +640 478 +640 480 +640 480 +640 501 +640 427 +640 481 +640 426 +640 480 +420 640 +640 480 +480 640 +640 428 +640 480 +459 344 +640 427 +640 449 +640 427 +640 425 +640 480 +480 640 +640 226 +480 640 +640 503 +640 427 +640 425 +639 640 +640 425 +640 427 +640 480 +500 375 +456 640 +500 375 +612 612 +640 472 +612 612 +640 512 +640 426 +640 458 +500 375 +480 640 +427 640 +640 480 +500 332 +640 427 +427 640 +640 439 +640 427 +640 480 +480 640 +640 480 +638 640 +480 640 +640 426 +612 612 +433 640 +640 340 +640 427 +416 640 +640 427 +640 480 +640 480 +640 480 +375 500 +585 640 +480 640 +640 480 +640 427 +464 640 +640 427 +640 640 +640 360 +423 640 +640 427 +640 383 +612 612 +640 427 +640 480 +640 427 +500 331 +524 640 +333 500 +640 480 +640 238 +640 428 +640 427 +500 374 +640 427 +425 640 +427 640 +640 640 +640 427 +478 640 +500 375 +640 480 +499 640 +640 427 +640 640 +640 480 +640 315 +640 480 +500 335 +640 614 +513 640 +640 480 +640 348 +640 480 +500 375 +640 480 +640 473 +500 369 +437 640 +640 360 +640 427 +640 480 +640 427 +480 640 +500 333 +640 429 +640 480 +480 640 +640 480 +640 480 +640 428 +640 410 +375 500 +428 640 +500 334 +640 458 +612 612 +640 426 +300 400 +480 640 +429 640 +640 427 +640 424 +288 307 +640 480 +640 424 +640 426 +500 334 +500 375 +389 500 +640 428 +640 358 +640 426 +480 640 +480 640 +428 640 +375 500 +640 427 +640 427 +640 427 +500 375 +640 534 +640 425 +640 359 +640 427 +409 500 +640 304 +427 640 +640 480 +640 283 +640 427 +480 640 +640 512 +612 612 +640 411 +640 357 +640 425 +640 348 +640 427 +640 427 +640 424 +640 437 +480 640 +480 640 +480 640 +640 480 +640 428 +640 480 +500 333 +640 427 +640 427 +640 427 +640 480 +640 427 +500 333 +427 640 +498 500 +640 480 +640 427 +480 640 +500 384 +427 640 +640 427 +400 500 +640 640 +640 424 +640 463 +300 429 +612 612 +640 477 +640 427 +600 399 +640 480 +640 480 +640 427 +640 426 +640 428 +425 640 +427 640 +640 478 +640 479 +640 427 +640 491 +640 449 +480 640 +480 640 +640 513 +640 427 +640 427 +640 428 +612 612 +375 500 +640 447 +640 449 +640 427 +640 427 +640 480 +640 427 +640 480 +480 640 +640 428 +640 426 +427 640 +640 365 +500 375 +640 480 +640 424 +427 640 +640 426 +640 426 +640 428 +640 426 +478 640 +640 480 +408 640 +640 427 +500 310 +480 640 +640 426 +640 480 +630 640 +427 640 +640 428 +640 427 +640 492 +640 499 +480 640 +640 427 +500 333 +480 640 +427 640 +640 389 +640 480 +425 640 +640 480 +640 436 +640 427 +640 449 +478 640 +480 640 +426 640 +640 434 +640 427 +480 640 +640 640 +500 375 +640 422 +480 640 +375 500 +640 426 +640 480 +640 425 +427 640 +640 480 +640 480 +640 423 +640 640 +640 383 +640 424 +640 480 +480 640 +612 612 +640 480 +640 480 +640 480 +640 427 +480 640 +555 640 +640 480 +375 500 +640 360 +640 427 +640 480 +640 425 +640 427 +640 480 +640 427 +640 427 +500 375 +480 640 +420 640 +500 375 +330 500 +612 612 +612 612 +640 361 +500 333 +640 512 +640 480 +500 375 +640 425 +640 480 +612 612 +640 428 +640 427 +427 640 +427 640 +640 456 +640 426 +640 291 +375 500 +640 427 +640 454 +640 427 +640 426 +612 612 +430 640 +500 333 +640 482 +640 480 +333 500 +426 640 +640 425 +640 427 +640 427 +640 480 +640 478 +427 640 +640 427 +491 640 +640 425 +640 427 +640 480 +500 375 +640 480 +498 640 +640 480 +640 427 +640 480 +488 640 +427 640 +500 332 +480 640 +480 640 +612 612 +640 480 +640 420 +375 500 +640 369 +640 424 +640 480 +426 640 +480 640 +640 480 +640 295 +500 347 +480 640 +640 359 +640 640 +640 480 +640 480 +640 428 +640 425 +640 479 +640 427 +640 429 +640 360 +612 612 +500 333 +640 480 +500 375 +426 640 +598 640 +640 480 +333 500 +640 426 +388 640 +426 640 +640 427 +640 478 +500 351 +640 426 +480 640 +640 430 +500 375 +640 484 +640 423 +640 480 +500 375 +640 480 +500 375 +640 426 +640 416 +500 333 +375 500 +500 361 +640 426 +427 640 +640 427 +640 427 +500 375 +640 424 +612 612 +393 640 +640 427 +375 500 +640 480 +469 640 +640 533 +640 511 +640 426 +457 640 +480 640 +640 387 +500 375 +640 427 +640 482 +640 427 +640 480 +480 640 +375 500 +424 640 +480 640 +426 640 +640 480 +640 425 +640 429 +640 546 +640 480 +468 640 +640 430 +458 640 +640 426 +640 401 +640 427 +640 480 +426 640 +640 427 +640 426 +640 480 +480 640 +640 427 +640 426 +438 640 +640 480 +428 500 +640 480 +640 480 +640 480 +640 480 +640 640 +480 640 +640 400 +500 333 +640 426 +500 375 +427 640 +427 640 +640 480 +640 482 +612 612 +640 480 +640 412 +343 500 +426 640 +425 640 +640 480 +640 427 +640 366 +640 480 +452 640 +333 500 +640 427 +612 612 +640 480 +512 640 +532 640 +640 457 +640 428 +640 428 +640 424 +500 375 +640 427 +429 640 +640 427 +640 427 +640 480 +640 480 +332 500 +640 480 +640 427 +640 209 +480 640 +480 640 +640 427 +640 427 +640 426 +640 480 +640 428 +320 480 +640 415 +426 640 +640 480 +400 640 +478 640 +640 479 +640 480 +640 427 +612 612 +375 500 +640 429 +427 640 +500 309 +500 360 +640 426 +500 375 +612 612 +335 500 +640 480 +640 480 +640 426 +640 480 +640 480 +336 448 +308 500 +330 500 +640 480 +640 424 +640 359 +640 453 +640 416 +273 346 +612 612 +375 500 +640 480 +640 480 +640 425 +300 432 +640 480 +640 428 +500 375 +480 640 +640 480 +500 375 +640 480 +640 458 +480 640 +426 640 +480 640 +640 480 +311 500 +478 640 +640 426 +640 480 +640 480 +480 640 +640 480 +500 375 +640 428 +640 480 +500 332 +640 426 +640 425 +414 500 +500 398 +640 480 +640 427 +640 427 +425 640 +640 432 +640 425 +640 384 +640 427 +640 289 +640 545 +640 480 +500 333 +429 640 +500 500 +640 425 +375 500 +640 480 +640 463 +640 426 +640 426 +640 433 +375 500 +500 375 +612 612 +640 480 +640 480 +640 436 +480 640 +478 640 +500 359 +640 427 +640 426 +478 640 +640 480 +447 640 +365 328 +427 640 +500 274 +480 640 +480 640 +640 425 +500 375 +640 480 +640 480 +438 640 +640 426 +640 436 +480 640 +484 500 +480 640 +640 415 +640 424 +640 480 +640 426 +424 640 +640 480 +456 640 +640 480 +640 480 +500 367 +377 500 +640 429 +480 640 +640 428 +640 480 +427 640 +500 367 +640 360 +333 500 +422 640 +480 640 +640 480 +640 425 +640 425 +640 640 +640 457 +640 427 +640 427 +480 640 +423 640 +454 640 +640 640 +425 640 +500 397 +427 640 +375 500 +500 333 +453 640 +480 640 +640 640 +640 480 +500 375 +480 640 +640 428 +500 375 +333 500 +640 480 +640 434 +427 640 +640 483 +480 640 +640 248 +640 427 +640 426 +640 480 +500 323 +640 480 +640 361 +640 428 +500 375 +640 426 +500 373 +640 427 +512 640 +640 480 +640 480 +480 640 +640 431 +640 404 +640 428 +480 640 +640 381 +428 640 +640 480 +480 640 +612 612 +640 428 +640 394 +640 427 +376 640 +640 426 +640 427 +425 640 +361 640 +427 640 +640 480 +507 640 +612 612 +640 480 +640 480 +500 333 +640 426 +640 450 +426 640 +425 640 +640 480 +640 480 +612 612 +640 427 +480 640 +612 612 +640 480 +640 480 +640 640 +439 640 +640 480 +640 426 +640 480 +640 480 +640 480 +480 640 +640 588 +640 426 +640 480 +480 640 +640 480 +640 480 +352 230 +428 640 +640 480 +640 423 +427 640 +640 512 +640 426 +406 640 +640 480 +640 487 +640 480 +299 500 +640 480 +500 375 +640 480 +640 427 +500 375 +640 480 +640 427 +640 426 +640 428 +640 420 +640 480 +428 640 +427 640 +608 640 +640 423 +480 640 +428 640 +640 478 +640 480 +640 640 +500 335 +500 322 +640 427 +375 500 +640 480 +640 478 +427 640 +640 480 +640 480 +640 528 +438 640 +640 427 +429 640 +640 480 +640 428 +375 500 +480 640 +451 640 +640 456 +640 399 +500 332 +640 427 +427 640 +640 427 +500 375 +640 427 +640 480 +640 427 +640 480 +640 480 +640 480 +640 480 +498 640 +640 427 +640 480 +640 480 +640 480 +640 480 +640 480 +500 375 +640 480 +612 612 +640 427 +640 427 +640 480 +640 361 +640 479 +640 480 +640 444 +640 427 +640 428 +450 500 +640 428 +500 375 +501 640 +500 375 +640 593 +640 427 +640 427 +640 547 +640 480 +612 612 +640 359 +640 480 +640 512 +640 421 +640 437 +500 375 +480 640 +426 640 +640 427 +480 640 +640 427 +612 612 +640 427 +640 480 +640 429 +500 500 +426 640 +640 426 +640 429 +500 375 +640 480 +640 640 +640 406 +640 480 +640 427 +480 640 +640 480 +500 375 +640 444 +640 429 +640 480 +640 400 +640 605 +640 427 +640 480 +335 500 +640 359 +640 338 +640 614 +640 480 +640 390 +487 640 +640 445 +640 427 +640 411 +640 640 +640 427 +640 428 +640 427 +640 426 +640 427 +480 640 +534 640 +480 640 +640 480 +500 333 +500 333 +480 640 +156 640 +640 480 +480 640 +640 640 +640 480 +640 512 +366 604 +375 500 +640 418 +640 419 +640 382 +427 640 +640 480 +640 424 +640 360 +640 480 +640 480 +640 425 +640 480 +480 640 +480 640 +640 480 +528 640 +425 640 +640 424 +375 500 +500 375 +320 240 +480 640 +640 427 +640 427 +332 500 +600 393 +425 640 +480 640 +640 406 +640 423 +640 428 +640 425 +499 640 +469 500 +640 359 +640 626 +640 480 +612 612 +640 480 +640 351 +428 640 +640 305 +480 640 +640 640 +480 640 +640 480 +473 640 +480 640 +640 480 +640 539 +640 427 +640 480 +640 424 +500 320 +480 640 +640 426 +500 333 +427 640 +640 480 +640 428 +330 500 +428 640 +640 480 +640 429 +480 640 +640 427 +640 427 +640 480 +640 480 +640 427 +640 426 +640 427 +640 480 +640 466 +504 640 +640 480 +480 640 +640 426 +640 480 +640 427 +640 480 +480 640 +489 640 +640 426 +640 478 +640 512 +640 480 +246 640 +640 424 +640 480 +640 480 +640 480 +430 640 +640 427 +427 640 +640 434 +640 318 +425 640 +640 480 +640 429 +375 500 +333 500 +640 425 +640 427 +480 640 +640 480 +640 480 +640 216 +640 480 +640 443 +427 640 +480 640 +480 640 +640 480 +640 480 +640 430 +480 640 +500 375 +640 495 +640 427 +640 425 +640 488 +624 640 +640 464 +426 640 +640 480 +640 426 +640 480 +480 640 +640 428 +493 640 +640 428 +612 612 +640 427 +444 640 +640 363 +640 427 +420 640 +480 640 +640 428 +480 640 +500 375 +427 640 +375 500 +640 480 +640 427 +640 480 +640 480 +640 480 +640 433 +640 426 +640 484 +640 480 +425 640 +640 428 +640 436 +640 480 +640 428 +640 480 +640 427 +640 480 +640 427 +427 640 +640 480 +640 480 +500 376 +428 640 +480 640 +640 427 +640 480 +640 480 +640 426 +500 333 +640 445 +638 640 +478 640 +640 427 +640 480 +640 480 +435 640 +640 429 +640 480 +640 427 +438 640 +640 488 +500 400 +640 409 +640 427 +479 640 +500 375 +640 480 +640 448 +640 480 +640 480 +640 480 +640 427 +640 292 +480 640 +480 640 +640 426 +500 332 +480 640 +427 640 +640 480 +480 640 +500 375 +640 480 +433 500 +640 480 +640 480 +500 246 +640 427 +640 427 +456 500 +480 640 +640 480 +640 429 +640 427 +480 640 +640 426 +424 640 +375 500 +500 333 +640 480 +427 640 +640 512 +640 480 +361 500 +375 500 +425 640 +640 425 +612 612 +640 480 +640 425 +640 426 +640 427 +359 500 +640 480 +427 640 +640 428 +427 640 +640 480 +566 640 +480 640 +640 640 +500 375 +500 375 +640 480 +375 500 +640 246 +640 480 +640 480 +427 640 +640 427 +640 427 +640 428 +612 612 +640 429 +640 432 +480 640 +500 378 +640 426 +500 375 +500 333 +640 427 +500 375 +480 640 +640 424 +500 332 +640 481 +640 427 +640 427 +640 456 +640 480 +640 480 +640 434 +640 427 +426 640 +480 640 +640 480 +640 512 +640 640 +640 596 +500 259 +640 428 +640 424 +478 640 +612 612 +504 640 +640 426 +640 428 +640 480 +640 480 +640 480 +640 480 +640 427 +459 640 +640 480 +480 640 +640 480 +427 640 +480 640 +640 480 +640 428 +420 640 +640 480 +640 437 +640 426 +500 333 +640 427 +500 375 +640 427 +640 480 +408 640 +640 428 +640 427 +640 426 +640 480 +640 480 +480 640 +324 500 +640 396 +640 428 +640 480 +640 384 +640 480 +640 480 +640 427 +640 427 +640 472 +640 480 +640 427 +612 612 +640 436 +480 640 +480 640 +640 586 +480 640 +425 640 +640 360 +640 480 +640 480 +640 281 +333 500 +640 480 +500 334 +640 429 +500 333 +640 454 +640 425 +640 480 +640 513 +640 479 +640 583 +640 512 +640 480 +640 360 +640 427 +640 334 +480 640 +640 480 +640 365 +447 640 +500 400 +500 332 +480 640 +426 640 +640 426 +480 640 +640 428 +427 640 +640 419 +318 640 +640 480 +426 640 +640 457 +480 640 +640 427 +640 480 +640 480 +640 428 +640 335 +640 429 +640 457 +640 391 +640 480 +640 428 +640 427 +640 426 +640 521 +427 640 +568 320 +640 427 +640 427 +640 513 +640 480 +500 272 +640 419 +640 480 +640 480 +375 500 +640 425 +640 480 +640 428 +500 375 +427 640 +640 480 +600 448 +640 480 +640 426 +500 375 +640 480 +640 480 +426 640 +640 424 +640 427 +500 375 +640 427 +512 640 +640 480 +640 437 +640 428 +480 640 +640 552 +639 640 +424 640 +640 378 +640 640 +640 417 +480 640 +640 480 +480 640 +640 424 +640 425 +640 427 +640 432 +640 427 +438 640 +500 500 +640 426 +640 441 +640 427 +640 427 +427 640 +640 427 +480 640 +640 359 +612 612 +500 375 +500 332 +612 612 +640 425 +500 375 +640 318 +640 428 +640 427 +500 457 +500 333 +640 480 +360 640 +640 426 +640 427 +640 427 +478 640 +413 640 +640 555 +640 357 +480 640 +612 612 +480 640 +640 427 +500 375 +427 640 +425 640 +640 462 +535 298 +640 427 +640 480 +640 428 +640 480 +427 640 +373 336 +640 480 +640 480 +640 426 +640 427 +640 427 +640 480 +640 427 +500 333 +640 465 +500 396 +500 333 +640 427 +640 426 +427 640 +640 480 +640 428 +480 640 +640 480 +500 375 +640 427 +500 333 +640 282 +640 427 +640 389 +640 544 +640 640 +640 427 +480 640 +500 375 +640 428 +640 459 +299 640 +640 411 +640 610 +612 612 +640 361 +426 640 +640 400 +640 640 +640 426 +640 480 +640 426 +640 480 +500 375 +427 640 +431 640 +640 640 +640 480 +427 640 +480 640 +640 427 +640 376 +640 480 +640 430 +500 335 +640 426 +640 427 +640 360 +338 500 +428 640 +640 429 +426 640 +427 640 +334 500 +427 640 +366 640 +640 427 +640 424 +640 480 +480 640 +640 508 +640 426 +640 457 +640 479 +500 396 +480 640 +640 424 +640 480 +640 470 +640 468 +427 640 +640 427 +640 481 +500 375 +427 640 +640 427 +640 480 +640 361 +640 426 +640 412 +640 480 +640 480 +640 515 +640 413 +640 480 +500 376 +640 360 +640 431 +357 500 +640 478 +478 640 +500 333 +640 428 +457 640 +500 500 +640 428 +640 428 +640 427 +640 427 +500 375 +640 480 +480 640 +640 480 +640 480 +640 480 +640 427 +427 640 +480 640 +494 640 +640 480 +640 480 +640 429 +640 427 +640 425 +640 480 +500 333 +640 480 +427 640 +612 612 +640 480 +640 480 +640 480 +448 336 +640 480 +640 393 +428 640 +640 480 +640 427 +500 404 +640 480 +640 427 +640 427 +640 427 +640 426 +640 428 +640 480 +640 605 +640 480 +640 427 +500 358 +640 480 +480 640 +640 480 +640 319 +500 375 +640 421 +640 427 +640 424 +640 480 +500 375 +424 640 +640 480 +640 480 +640 480 +640 480 +640 604 +640 480 +640 413 +640 427 +375 500 +640 429 +640 480 +640 428 +640 480 +640 427 +427 640 +628 640 +640 480 +500 335 +640 425 +640 427 +612 612 +640 425 +640 360 +320 240 +640 427 +500 377 +612 612 +427 640 +640 480 +640 489 +640 427 +640 424 +640 479 +640 427 +640 480 +478 640 +425 640 +640 424 +500 278 +427 640 +360 640 +640 411 +640 427 +640 480 +640 480 +640 425 +640 480 +640 368 +500 375 +640 480 +640 373 +443 640 +438 640 +640 480 +640 427 +480 640 +375 500 +500 393 +640 480 +640 316 +427 640 +640 428 +640 360 +480 640 +480 640 +640 425 +640 402 +640 480 +640 421 +500 375 +640 348 +427 640 +640 426 +640 427 +640 480 +444 640 +640 480 +640 445 +640 360 +640 480 +477 640 +640 418 +640 369 +428 640 +640 360 +500 375 +640 426 +500 375 +640 480 +640 427 +640 424 +640 438 +640 480 +640 480 +640 458 +359 640 +640 428 +640 427 +640 427 +640 462 +640 427 +640 480 +640 428 +640 480 +640 427 +500 333 +427 640 +424 640 +640 478 +500 375 +640 360 +480 640 +612 612 +640 426 +333 500 +640 640 +640 480 +640 428 +425 640 +640 428 +640 427 +640 464 +480 640 +640 427 +640 480 +640 639 +426 320 +640 426 +478 640 +640 420 +640 640 +640 427 +640 617 +500 375 +640 453 +427 640 +640 425 +640 457 +500 309 +500 375 +640 512 +480 640 +640 480 +426 640 +640 427 +640 480 +640 427 +500 500 +640 509 +640 428 +640 427 +480 640 +541 640 +640 423 +478 640 +640 427 +500 375 +640 427 +428 640 +500 333 +640 428 +640 426 +640 428 +640 480 +640 427 +640 480 +640 480 +428 640 +375 500 +500 375 +556 640 +640 463 +640 480 +500 375 +640 436 +640 427 +640 427 +444 640 +640 425 +640 480 +640 406 +480 640 +612 612 +640 480 +480 640 +640 428 +640 426 +500 333 +640 425 +640 427 +500 375 +640 427 +481 640 +640 427 +500 375 +640 425 +640 425 +640 480 +640 474 +640 480 +640 480 +640 428 +640 427 +640 427 +640 445 +640 480 +375 500 +640 480 +640 480 +466 640 +272 307 +333 500 +640 480 +640 427 +640 424 +640 480 +640 480 +481 640 +640 640 +640 427 +612 612 +640 631 +640 480 +640 427 +428 640 +640 214 +640 418 +640 427 +640 480 +612 612 +473 640 +640 361 +640 269 +375 500 +407 640 +428 640 +640 426 +426 640 +640 480 +640 480 +640 427 +480 640 +640 427 +332 500 +640 425 +640 480 +640 424 +640 427 +640 480 +375 500 +640 427 +500 375 +427 640 +640 445 +640 481 +424 640 +500 375 +500 333 +640 436 +640 480 +480 640 +640 480 +500 366 +375 500 +640 427 +640 381 +640 377 +640 426 +640 427 +640 453 +640 361 +640 426 +501 640 +640 427 +396 640 +612 612 +640 427 +500 331 +640 426 +640 429 +500 375 +640 428 +640 640 +640 480 +640 363 +640 480 +640 480 +426 640 +640 480 +640 427 +640 424 +500 375 +640 380 +640 480 +640 427 +640 425 +640 248 +640 480 +480 640 +480 640 +500 408 +480 640 +500 375 +640 381 +640 480 +426 640 +640 428 +640 426 +640 480 +480 640 +640 480 +640 427 +640 396 +640 480 +640 480 +640 259 +500 375 +580 640 +640 480 +596 640 +427 640 +640 480 +640 411 +333 500 +640 427 +500 375 +640 426 +640 480 +640 480 +640 427 +640 480 +612 612 +640 484 +640 360 +457 640 +500 341 +640 496 +425 640 +640 480 +640 480 +430 640 +500 424 +480 640 +640 427 +640 480 +505 640 +640 480 +512 640 +354 500 +640 427 +500 375 +640 640 +500 375 +640 426 +640 427 +427 640 +333 500 +640 457 +640 480 +427 640 +500 309 +640 427 +427 640 +640 480 +640 359 +640 512 +640 424 +640 480 +640 428 +333 500 +640 480 +480 640 +500 378 +640 427 +426 640 +500 375 +240 320 +240 320 +481 640 +457 640 +640 427 +640 427 +612 612 +640 425 +640 611 +478 640 +640 457 +501 640 +640 427 +640 484 +640 480 +427 640 +500 375 +640 480 +480 640 +480 640 +640 399 +427 640 +640 425 +640 427 +640 480 +640 318 +640 480 +500 375 +640 480 +640 480 +640 480 +640 428 +640 564 +640 426 +640 429 +427 640 +640 457 +640 426 +500 333 +640 480 +640 480 +640 488 +640 480 +500 313 +640 427 +640 480 +640 480 +640 427 +640 480 +500 334 +640 480 +640 471 +640 360 +640 491 +640 478 +640 427 +640 513 +465 640 +506 640 +500 333 +500 490 +480 640 +640 426 +640 369 +500 357 +640 495 +640 428 +640 425 +640 424 +640 460 +513 640 +640 428 +640 480 +640 480 +640 427 +333 500 +640 480 +640 428 +640 466 +640 486 +480 640 +480 640 +500 286 +427 640 +640 348 +403 500 +640 421 +640 480 +640 483 +640 579 +640 427 +640 380 +425 640 +640 480 +640 480 +640 482 +640 436 +640 427 +640 427 +640 478 +427 640 +640 427 +500 351 +640 480 +640 426 +640 426 +640 426 +640 480 +640 480 +640 426 +640 480 +640 427 +640 480 +640 480 +640 480 +640 426 +640 427 +500 333 +640 491 +640 424 +640 480 +427 640 +640 427 +640 480 +640 480 +640 427 +640 480 +640 427 +640 480 +427 640 +640 480 +640 480 +426 640 +640 427 +500 375 +426 640 +480 640 +428 640 +500 500 +640 480 +640 479 +486 640 +640 427 +640 480 +640 480 +640 428 +640 427 +640 426 +640 480 +640 418 +640 480 +640 427 +427 640 +640 480 +375 500 +640 480 +640 427 +640 427 +429 640 +500 375 +640 423 +595 640 +640 360 +640 480 +480 640 +640 473 +427 640 +640 427 +480 640 +480 640 +640 480 +426 640 +640 413 +612 612 +640 480 +480 640 +640 480 +480 640 +500 375 +640 427 +480 640 +640 424 +500 375 +504 351 +640 480 +640 427 +500 375 +640 427 +640 476 +640 426 +640 531 +640 427 +640 480 +640 428 +640 480 +500 354 +480 640 +480 640 +500 375 +640 581 +640 480 +640 404 +500 399 +640 253 +500 333 +640 428 +640 427 +500 333 +640 427 +640 427 +640 640 +640 427 +640 425 +640 427 +640 426 +640 428 +640 480 +640 426 +500 321 +640 457 +427 640 +640 433 +640 425 +640 424 +480 640 +640 480 +640 463 +500 361 +426 640 +640 458 +640 480 +640 480 +336 500 +640 427 +640 480 +612 612 +640 428 +500 375 +640 480 +480 640 +640 427 +640 421 +640 334 +640 480 +640 640 +500 334 +640 424 +640 427 +640 501 +640 480 +640 574 +640 425 +480 640 +500 375 +500 460 +427 640 +500 332 +375 500 +640 640 +640 480 +500 375 +427 640 +640 364 +640 480 +640 428 +640 371 +500 375 +500 375 +640 427 +640 427 +640 480 +640 480 +480 640 +375 500 +640 478 +500 358 +640 429 +640 480 +640 419 +640 425 +494 640 +480 640 +640 448 +640 565 +640 480 +640 360 +427 640 +640 480 +640 480 +640 562 +640 480 +640 428 +640 480 +640 480 +495 640 +480 640 +500 375 +375 500 +482 640 +640 389 +425 640 +640 480 +428 640 +640 480 +428 640 +640 224 +640 435 +640 428 +640 480 +640 427 +500 334 +640 427 +640 427 +427 640 +640 480 +640 426 +640 427 +453 640 +640 481 +500 334 +500 375 +500 375 +426 640 +480 640 +426 640 +457 640 +383 640 +640 480 +612 612 +333 500 +427 640 +640 489 +612 612 +640 413 +640 426 +640 427 +602 640 +640 427 +640 480 +640 480 +640 640 +640 480 +640 427 +640 427 +640 425 +640 427 +612 612 +400 500 +640 427 +640 480 +640 481 +640 480 +640 425 +640 586 +640 428 +640 579 +640 427 +640 425 +427 640 +500 334 +640 428 +375 500 +640 478 +640 480 +640 427 +640 480 +640 480 +640 426 +640 359 +478 640 +640 480 +640 442 +333 500 +640 424 +640 428 +500 332 +640 508 +500 375 +640 427 +640 480 +640 427 +640 475 +425 640 +640 427 +640 436 +460 640 +640 427 +640 360 +640 480 +427 640 +458 640 +640 426 +480 640 +375 500 +640 427 +640 384 +500 333 +640 427 +640 428 +500 333 +640 362 +640 425 +426 640 +640 429 +500 332 +480 640 +640 456 +640 411 +426 640 +640 475 +640 480 +500 333 +500 378 +375 500 +640 480 +640 480 +640 426 +640 444 +640 640 +640 478 +640 426 +640 480 +640 426 +640 480 +425 640 +640 464 +640 478 +480 640 +640 426 +640 426 +640 318 +333 500 +640 328 +500 375 +375 500 +500 331 +640 427 +640 427 +640 480 +612 612 +436 640 +640 480 +640 480 +640 427 +427 640 +375 500 +512 640 +500 350 +640 480 +640 593 +640 425 +375 500 +334 500 +640 480 +640 427 +640 480 +480 640 +480 640 +387 640 +640 427 +640 480 +640 480 +640 427 +612 612 +640 480 +640 458 +500 333 +500 345 +640 408 +640 480 +640 480 +500 375 +457 640 +500 375 +640 364 +640 480 +427 640 +640 426 +333 500 +640 480 +640 480 +458 640 +612 640 +480 640 +640 427 +450 338 +640 428 +640 480 +480 640 +428 640 +640 468 +640 558 +480 640 +612 612 +640 480 +530 640 +640 480 +640 396 +612 612 +640 427 +480 640 +640 423 +640 480 +480 640 +640 529 +500 380 +483 500 +640 427 +500 375 +480 640 +427 640 +480 640 +424 640 +640 427 +640 426 +640 424 +640 480 +640 427 +640 428 +427 640 +640 427 +612 612 +427 640 +640 480 +640 427 +480 640 +640 427 +640 480 +426 640 +427 640 +375 500 +500 376 +427 640 +480 640 +640 427 +428 640 +500 375 +640 480 +640 480 +640 480 +359 640 +640 480 +640 480 +612 612 +535 640 +400 229 +640 480 +640 480 +640 480 +640 427 +612 612 +375 500 +640 480 +336 500 +640 427 +640 480 +640 414 +640 426 +375 500 +640 427 +640 427 +640 480 +428 640 +640 480 +480 640 +640 517 +640 480 +640 480 +500 335 +640 490 +500 333 +352 288 +480 640 +640 425 +640 485 +640 427 +640 480 +640 427 +486 640 +640 427 +640 427 +320 216 +500 375 +445 600 +500 334 +500 339 +612 612 +640 428 +480 640 +640 427 +500 375 +306 640 +640 423 +640 427 +424 640 +640 427 +640 480 +500 333 +612 612 +500 333 +640 360 +640 480 +400 400 +424 640 +640 480 +640 416 +612 612 +640 480 +640 480 +640 479 +640 480 +640 480 +640 426 +640 429 +640 424 +640 427 +640 480 +640 480 +640 480 +612 612 +496 640 +640 480 +426 640 +640 425 +640 480 +640 425 +640 411 +640 640 +360 640 +480 640 +640 480 +640 480 +640 427 +362 640 +640 480 +640 426 +640 426 +500 333 +640 439 +640 511 +640 455 +640 516 +640 427 +612 612 +640 366 +480 640 +640 480 +640 428 +500 375 +640 427 +500 375 +480 640 +640 480 +612 612 +640 451 +640 480 +640 480 +500 375 +640 426 +640 427 +640 480 +640 427 +640 428 +480 640 +385 640 +480 640 +640 480 +640 480 +640 480 +640 480 +640 425 +612 612 +640 640 +640 480 +500 313 +640 480 +640 383 +612 612 +640 479 +640 480 +640 480 +640 457 +500 334 +450 290 +371 640 +640 480 +599 640 +640 453 +640 427 +480 640 +500 375 +640 426 +640 427 +640 477 +640 480 +640 427 +426 640 +640 480 +640 512 +500 375 +640 445 +427 640 +500 401 +480 640 +640 428 +640 480 +640 480 +640 360 +640 454 +640 516 +640 480 +640 479 +640 480 +640 640 +500 400 +640 480 +480 640 +640 480 +640 360 +640 425 +640 426 +359 640 +500 439 +480 640 +640 480 +640 480 +519 640 +491 640 +480 640 +640 479 +640 424 +640 427 +640 360 +640 402 +426 640 +640 480 +481 640 +426 640 +640 425 +427 640 +612 612 +640 480 +640 427 +426 640 +481 640 +480 640 +640 384 +640 426 +612 612 +640 480 +640 361 +640 640 +359 640 +640 480 +640 427 +640 427 +640 472 +500 375 +640 427 +426 640 +640 480 +640 480 +640 480 +640 426 +612 612 +640 428 +640 422 +640 427 +640 427 +640 427 +640 425 +640 428 +640 480 +388 450 +640 427 +640 480 +640 360 +640 427 +500 375 +640 425 +640 426 +640 481 +427 640 +640 484 +640 443 +640 425 +424 640 +478 640 +427 640 +640 438 +500 375 +640 480 +500 375 +500 358 +481 640 +640 428 +480 640 +480 640 +640 480 +425 640 +640 480 +640 329 +640 427 +640 426 +640 480 +640 480 +640 427 +640 483 +640 480 +428 640 +640 425 +500 375 +614 640 +500 334 +640 427 +375 500 +640 640 +500 400 +640 480 +640 447 +640 428 +640 427 +332 500 +480 640 +500 333 +640 520 +500 333 +467 350 +427 640 +640 427 +640 427 +375 500 +640 427 +425 640 +640 426 +640 512 +640 427 +640 429 +640 429 +500 375 +428 640 +500 333 +640 428 +640 426 +640 480 +500 333 +640 480 +478 640 +640 380 +640 481 +640 402 +640 427 +500 375 +500 332 +640 372 +640 318 +640 480 +640 427 +640 478 +640 335 +500 375 +640 426 +640 480 +640 640 +640 480 +480 640 +640 480 +640 480 +375 500 +324 500 +640 432 +640 425 +640 480 +640 360 +640 427 +640 480 +640 428 +427 640 +500 400 +640 480 +640 480 +640 480 +375 500 +621 480 +640 386 +500 500 +640 426 +640 480 +640 480 +500 375 +640 480 +640 398 +640 427 +500 375 +640 494 +480 640 +424 640 +640 480 +640 366 +640 480 +446 640 +640 427 +500 415 +640 427 +331 500 +612 612 +640 427 +640 480 +640 511 +427 640 +640 428 +600 400 +640 424 +640 480 +640 480 +640 427 +640 468 +640 480 +640 427 +640 480 +640 359 +640 418 +640 427 +375 500 +640 480 +640 427 +500 375 +480 640 +640 480 +478 640 +612 612 +640 480 +640 431 +640 427 +480 640 +640 428 +480 640 +464 640 +480 640 +612 612 +500 375 +640 428 +640 480 +640 503 +500 333 +428 640 +640 480 +640 281 +640 428 +422 640 +352 640 +640 480 +640 427 +500 339 +640 432 +640 427 +640 427 +427 640 +640 424 +332 500 +640 427 +612 612 +640 361 +640 427 +480 640 +640 541 +640 434 +640 428 +480 640 +640 480 +640 480 +640 402 +640 480 +640 428 +501 640 +427 640 +426 640 +640 426 +640 426 +444 640 +480 640 +640 480 +612 612 +640 429 +640 445 +640 364 +640 427 +640 426 +640 425 +640 360 +428 640 +500 375 +640 523 +640 480 +640 519 +640 480 +640 426 +640 426 +640 428 +640 480 +480 640 +425 640 +640 640 +640 480 +612 612 +640 480 +640 427 +640 480 +640 427 +427 640 +640 427 +640 427 +375 500 +640 480 +640 427 +404 500 +640 415 +640 480 +640 480 +427 640 +640 428 +500 375 +480 640 +512 640 +640 480 +427 640 +640 366 +481 640 +500 375 +640 480 +640 426 +640 432 +640 480 +640 427 +640 427 +640 426 +640 427 +640 480 +612 612 +640 480 +640 480 +500 375 +640 427 +640 435 +533 640 +480 640 +427 640 +640 427 +640 427 +640 426 +640 426 +640 480 +640 480 +500 375 +640 640 +640 427 +640 482 +640 427 +640 480 +600 450 +427 640 +640 424 +426 640 +640 480 +640 425 +640 480 +463 640 +640 457 +640 400 +640 427 +640 517 +640 426 +640 425 +640 427 +640 480 +427 640 +426 640 +480 640 +640 427 +640 480 +640 512 +640 428 +427 640 +640 467 +426 640 +640 424 +640 640 +426 640 +640 444 +640 427 +640 427 +640 375 +640 428 +480 640 +640 426 +640 500 +640 427 +640 427 +427 640 +640 361 +640 480 +480 640 +500 328 +640 480 +640 480 +426 640 +640 480 +640 478 +640 454 +640 400 +640 480 +640 480 +640 360 +640 480 +640 480 +500 375 +480 640 +640 640 +640 480 +640 480 +640 427 +640 480 +640 480 +640 480 +640 428 +640 640 +640 427 +640 428 +640 393 +640 406 +500 375 +640 491 +473 640 +427 640 +640 480 +640 480 +500 332 +640 425 +640 472 +640 480 +640 428 +375 500 +640 384 +640 480 +640 480 +426 640 +640 427 +375 500 +640 480 +640 480 +640 480 +375 500 +640 427 +640 457 +539 640 +640 639 +500 375 +640 427 +640 428 +640 461 +480 640 +640 427 +500 375 +428 640 +480 640 +240 320 +640 425 +640 479 +612 612 +640 426 +640 480 +640 425 +640 432 +640 480 +640 313 +640 480 +640 640 +640 480 +500 375 +640 429 +640 421 +640 428 +640 480 +428 640 +640 480 +640 488 +640 480 +500 285 +640 359 +640 480 +640 383 +476 640 +480 640 +480 640 +640 344 +480 640 +640 427 +640 383 +480 640 +480 640 +640 480 +441 500 +480 640 +640 480 +640 425 +640 640 +640 480 +640 480 +640 427 +482 482 +640 428 +640 425 +640 428 +480 640 +640 427 +640 360 +640 426 +480 640 +500 339 +500 350 +640 480 +500 334 +640 458 +640 425 +640 480 +481 640 +640 425 +640 480 +640 428 +640 480 +640 480 +640 480 +640 480 +500 375 +640 427 +640 255 +480 640 +640 480 +335 640 +640 427 +640 426 +600 449 +640 480 +640 478 +425 640 +612 612 +640 480 +500 333 +640 427 +640 480 +332 500 +640 301 +481 640 +640 479 +384 640 +640 468 +640 383 +640 480 +291 455 +640 480 +640 427 +640 480 +480 640 +427 640 +640 424 +640 427 +500 375 +640 458 +480 640 +480 640 +640 426 +640 640 +480 640 +448 336 +500 375 +640 425 +640 425 +601 640 +640 480 +640 427 +640 427 +425 640 +500 416 +640 427 +640 541 +640 481 +640 480 +640 409 +640 427 +640 399 +500 375 +640 427 +449 640 +640 427 +640 478 +640 480 +640 425 +640 428 +500 333 +640 598 +500 333 +375 500 +427 640 +640 213 +500 333 +640 480 +640 444 +429 640 +500 375 +640 480 +500 375 +427 640 +640 614 +640 427 +480 640 +640 480 +480 640 +426 640 +640 427 +428 640 +640 426 +640 457 +640 424 +640 480 +640 426 +640 427 +640 426 +423 640 +640 480 +640 427 +640 360 +640 427 +640 480 +436 640 +428 640 +375 500 +640 530 +640 480 +500 375 +640 427 +640 428 +640 480 +640 426 +640 424 +640 480 +514 640 +640 428 +640 427 +640 428 +640 427 +640 413 +612 612 +640 424 +640 480 +640 312 +640 427 +640 427 +640 426 +485 640 +640 360 +427 640 +640 513 +640 427 +640 629 +640 426 +640 427 +640 640 +640 427 +640 480 +640 480 +640 480 +478 640 +640 465 +400 320 +500 375 +640 427 +472 640 +640 480 +480 640 +640 438 +500 375 +350 500 +640 475 +640 480 +640 480 +612 612 +640 442 +360 640 +640 480 +640 481 +640 480 +640 388 +640 480 +640 480 +640 334 +640 401 +640 425 +640 478 +640 412 +640 480 +577 448 +426 640 +406 500 +640 427 +478 640 +480 640 +640 427 +500 374 +427 640 +478 640 +640 480 +640 469 +640 428 +640 480 +640 427 +640 480 +500 375 +640 480 +640 480 +500 400 +640 480 +640 480 +396 640 +640 415 +640 427 +640 480 +640 426 +500 375 +480 640 +640 427 +640 480 +640 360 +640 426 +480 640 +640 427 +640 427 +640 428 +500 333 +640 427 +640 480 +640 425 +427 640 +640 538 +640 480 +424 640 +640 441 +501 640 +640 480 +480 640 +640 474 +640 429 +640 425 +640 378 +640 480 +640 480 +640 430 +640 426 +496 640 +480 640 +500 375 +640 480 +480 640 +480 360 +500 378 +640 480 +480 640 +640 480 +640 613 +640 428 +427 640 +482 640 +500 356 +640 427 +640 640 +480 640 +640 438 +426 640 +640 480 +640 360 +640 360 +640 427 +640 483 +500 375 +640 428 +640 409 +500 334 +640 429 +640 427 +457 640 +640 444 +640 480 +640 427 +640 427 +640 427 +640 383 +425 640 +480 640 +424 640 +500 475 +640 480 +640 427 +640 480 +640 427 +640 427 +640 427 +640 480 +640 427 +640 425 +427 640 +640 480 +480 640 +480 640 +640 427 +500 258 +640 480 +640 480 +640 480 +640 450 +640 480 +640 359 +640 604 +640 427 +500 275 +640 443 +451 640 +640 426 +500 333 +640 427 +640 425 +427 640 +640 309 +640 480 +640 427 +640 435 +427 640 +640 480 +640 361 +640 427 +640 480 +640 479 +640 480 +640 480 +427 640 +640 480 +633 640 +640 480 +640 360 +332 500 +640 478 +427 640 +640 396 +640 427 +640 427 +480 640 +480 640 +458 640 +500 375 +425 640 +640 427 +428 640 +640 424 +480 640 +640 480 +640 480 +640 427 +640 396 +612 612 +306 640 +640 480 +640 480 +640 480 +640 427 +640 480 +361 640 +640 480 +500 333 +640 427 +640 480 +640 427 +426 640 +478 640 +640 480 +640 426 +640 403 +640 579 +640 480 +427 640 +640 425 +640 480 +612 612 +640 425 +500 375 +640 360 +640 480 +640 427 +640 427 +640 480 +640 427 +640 480 +480 640 +426 640 +640 480 +640 480 +640 425 +640 427 +446 640 +640 480 +484 500 +425 640 +640 640 +471 500 +640 480 +640 439 +640 428 +612 612 +600 600 +500 333 +640 480 +640 480 +640 425 +640 480 +640 480 +640 443 +640 485 +640 480 +426 640 +423 640 +640 419 +640 480 +424 640 +640 436 +640 511 +640 449 +640 426 +640 480 +640 480 +480 640 +640 426 +640 480 +640 427 +640 480 +640 403 +640 640 +640 426 +480 640 +500 400 +640 480 +176 144 +500 375 +500 400 +640 426 +500 384 +640 480 +640 480 +506 640 +640 427 +480 640 +640 424 +640 360 +640 427 +640 427 +640 427 +640 427 +640 445 +640 480 +640 474 +640 480 +640 427 +640 480 +427 640 +478 640 +640 480 +640 403 +640 426 +640 480 +640 448 +640 480 +640 640 +640 423 +640 529 +640 427 +640 427 +612 612 +640 480 +640 427 +640 427 +480 640 +640 427 +640 427 +426 640 +640 428 +640 359 +640 427 +640 480 +640 427 +640 360 +640 427 +480 640 +423 640 +500 375 +640 391 +640 480 +480 640 +640 427 +640 427 +640 332 +375 500 +640 425 +640 480 +640 360 +493 640 +331 500 +640 427 +640 480 +480 640 +640 480 +640 425 +640 480 +427 640 +480 640 +640 341 +480 640 +480 640 +376 500 +640 487 +428 640 +640 480 +640 426 +640 449 +480 640 +640 427 +480 640 +640 428 +596 640 +640 396 +640 369 +480 640 +640 480 +640 480 +480 640 +640 427 +500 375 +640 425 +640 480 +640 360 +640 480 +640 480 +640 470 +427 640 +500 272 +612 612 +640 425 +375 500 +500 333 +478 640 +640 428 +612 612 +640 427 +640 480 +471 640 +640 426 +500 375 +500 375 +400 500 +640 576 +640 480 +500 281 +400 640 +500 375 +640 471 +431 640 +375 500 +640 427 +471 500 +640 480 +640 553 +640 480 +427 640 +480 640 +480 640 +375 500 +529 640 +640 423 +360 640 +500 375 +600 450 +500 333 +426 640 +640 436 +640 480 +480 640 +640 424 +640 480 +640 426 +640 480 +427 640 +640 480 +640 427 +640 425 +640 425 +640 480 +640 426 +480 640 +640 478 +640 480 +427 640 +640 500 +640 383 +640 427 +640 480 +640 430 +640 429 +640 480 +640 384 +640 425 +480 640 +428 640 +310 500 +640 478 +640 428 +640 361 +640 427 +640 427 +640 640 +640 456 +500 405 +640 427 +491 640 +480 640 +500 374 +427 640 +333 500 +500 401 +640 478 +480 640 +640 407 +640 425 +428 640 +640 427 +640 360 +479 640 +640 424 +612 612 +640 427 +640 488 +500 375 +499 640 +480 640 +640 480 +640 523 +640 427 +640 360 +640 524 +640 574 +480 640 +640 427 +640 426 +640 427 +640 516 +426 640 +640 480 +480 640 +500 375 +427 640 +500 376 +427 640 +480 640 +640 480 +640 426 +640 523 +640 481 +640 427 +500 375 +640 480 +398 500 +640 640 +640 480 +640 480 +640 426 +424 640 +500 333 +640 427 +640 480 +640 429 +455 640 +640 480 +640 426 +480 640 +640 427 +640 451 +640 424 +640 480 +427 640 +424 640 +640 480 +500 281 +640 427 +426 640 +640 405 +612 612 +427 640 +426 640 +500 333 +640 427 +633 640 +640 480 +640 361 +640 427 +640 427 +480 640 +556 407 +640 480 +640 424 +640 480 +640 477 +637 640 +640 639 +334 500 +640 480 +640 480 +426 640 +480 640 +640 480 +502 640 +640 614 +427 640 +640 480 +640 424 +425 640 +640 512 +480 640 +640 427 +640 479 +640 360 +500 375 +424 640 +640 480 +640 428 +640 389 +640 435 +640 480 +480 640 +640 480 +640 480 +425 282 +426 640 +640 425 +640 424 +640 480 +640 363 +480 640 +640 480 +640 428 +640 499 +640 431 +640 427 +640 427 +640 427 +640 480 +555 640 +640 479 +640 480 +427 640 +640 427 +640 480 +640 428 +640 428 +640 480 +640 427 +640 330 +640 480 +427 640 +427 640 +640 480 +640 480 +500 416 +514 640 +375 500 +640 427 +480 640 +640 427 +640 427 +450 450 +640 424 +423 640 +640 428 +427 640 +640 425 +500 375 +640 447 +640 480 +640 426 +640 424 +640 430 +640 450 +640 425 +640 480 +427 640 +421 500 +512 640 +640 427 +640 480 +482 389 +640 428 +640 480 +397 640 +640 549 +640 428 +375 500 +640 480 +640 640 +640 434 +640 640 +640 433 +640 480 +640 360 +640 480 +640 480 +480 640 +640 428 +640 480 +320 240 +640 428 +427 640 +640 426 +480 640 +640 427 +640 427 +500 368 +640 427 +500 333 +500 333 +640 480 +266 187 +640 424 +425 640 +640 480 +640 480 +640 480 +500 324 +640 478 +626 640 +640 426 +426 640 +640 480 +480 640 +640 427 +640 427 +480 640 +640 480 +480 640 +640 428 +640 480 +640 330 +640 425 +640 360 +478 640 +500 333 +640 428 +480 640 +500 333 +640 480 +500 332 +640 428 +427 640 +640 480 +640 480 +640 427 +640 531 +640 361 +640 480 +640 429 +640 360 +640 512 +640 425 +424 500 +426 640 +640 427 +640 427 +640 473 +419 640 +640 532 +463 640 +640 480 +640 480 +640 427 +640 425 +640 480 +640 497 +640 480 +500 333 +640 480 +500 375 +640 517 +640 398 +612 612 +640 426 +425 640 +640 485 +640 480 +633 640 +640 427 +480 640 +406 610 +429 640 +640 519 +640 426 +427 640 +640 480 +640 425 +425 640 +500 375 +427 640 +500 375 +640 480 +640 427 +640 428 +640 480 +426 640 +640 480 +640 480 +640 479 +640 427 +640 424 +480 640 +500 400 +640 361 +640 480 +478 640 +640 425 +640 427 +480 640 +640 329 +640 446 +640 426 +640 428 +428 640 +612 612 +640 480 +640 480 +640 427 +480 640 +640 457 +587 640 +640 425 +640 427 +500 375 +640 427 +640 427 +640 639 +426 640 +640 480 +640 640 +640 427 +428 640 +640 457 +640 425 +640 427 +640 480 +427 640 +640 426 +640 480 +640 428 +640 478 +640 480 +480 640 +640 457 +478 640 +428 640 +640 487 +500 333 +640 480 +640 454 +368 640 +640 427 +372 640 +640 425 +640 426 +640 426 +640 480 +640 425 +640 480 +500 500 +425 640 +640 442 +500 335 +640 480 +640 427 +640 426 +640 427 +375 500 +500 336 +640 482 +640 396 +640 480 +640 480 +640 360 +352 288 +640 480 +640 480 +640 426 +640 480 +427 640 +640 475 +640 426 +375 500 +640 427 +640 425 +480 640 +640 640 +640 521 +640 427 +640 480 +640 400 +640 480 +375 500 +353 640 +375 500 +600 400 +640 425 +428 640 +640 512 +640 480 +640 478 +480 640 +500 480 +500 333 +480 640 +640 427 +640 640 +640 480 +640 428 +427 640 +600 450 +339 500 +426 640 +480 640 +640 427 +640 427 +640 428 +640 418 +500 332 +640 480 +640 426 +500 375 +640 480 +480 640 +640 426 +640 514 +640 436 +640 480 +622 640 +640 425 +500 500 +427 640 +640 425 +640 427 +480 640 +500 321 +640 480 +480 640 +424 640 +640 419 +640 428 +409 640 +640 478 +640 426 +640 430 +640 360 +480 640 +500 334 +400 500 +480 640 +640 427 +640 428 +640 421 +500 375 +480 640 +640 480 +480 640 +640 272 +640 427 +640 426 +640 480 +640 360 +640 480 +640 480 +640 482 +375 500 +640 425 +640 383 +640 480 +640 480 +640 480 +640 427 +640 480 +640 480 +640 427 +494 330 +640 428 +640 427 +640 428 +640 427 +640 427 +640 470 +640 425 +375 500 +426 640 +385 500 +640 425 +500 375 +640 458 +640 480 +640 214 +480 640 +640 541 +640 427 +480 640 +640 480 +640 427 +640 427 +500 381 +612 612 +640 435 +480 640 +640 503 +640 480 +500 387 +640 479 +640 478 +640 480 +640 480 +640 426 +640 427 +640 428 +640 480 +500 333 +640 480 +640 480 +424 640 +640 480 +640 435 +640 480 +457 640 +612 612 +640 427 +500 375 +640 425 +640 480 +640 517 +640 427 +640 266 +640 360 +476 640 +640 427 +640 413 +640 480 +640 480 +640 427 +480 640 +480 640 +500 303 +640 427 +500 375 +640 389 +480 640 +427 640 +427 640 +640 480 +640 480 +640 480 +640 308 +511 640 +640 523 +640 427 +424 640 +426 640 +640 480 +640 480 +375 500 +500 375 +500 375 +600 400 +512 640 +640 480 +640 480 +640 480 +640 425 +612 612 +640 427 +640 480 +427 640 +500 374 +640 480 +500 375 +640 426 +640 480 +612 612 +640 427 +640 424 +427 640 +480 640 +320 216 +499 640 +415 640 +374 500 +640 427 +640 480 +640 426 +640 360 +480 640 +640 480 +640 427 +341 500 +640 480 +640 480 +428 640 +480 640 +640 480 +640 480 +640 478 +428 640 +640 483 +424 640 +640 480 +640 426 +640 480 +640 359 +516 408 +640 480 +640 480 +480 640 +417 640 +640 478 +500 333 +640 480 +427 640 +640 360 +640 545 +640 480 +640 482 +640 506 +640 480 +640 480 +640 482 +640 480 +640 559 +427 640 +480 640 +480 640 +640 507 +500 335 +640 360 +550 400 +640 427 +640 480 +500 334 +480 640 +640 609 +500 333 +640 480 +640 426 +600 450 +640 480 +640 427 +640 480 +480 640 +640 480 +640 426 +512 640 +640 426 +640 425 +640 480 +480 640 +500 375 +640 381 +640 427 +640 427 +640 509 +640 427 +640 400 +640 480 +640 429 +480 640 +640 480 +640 618 +640 426 +427 640 +640 480 +640 427 +500 335 +603 640 +427 640 +640 480 +640 480 +582 640 +640 427 +500 332 +640 445 +478 640 +640 480 +640 400 +509 640 +612 612 +640 427 +640 425 +640 480 +640 480 +500 256 +640 427 +426 640 +640 426 +500 375 +640 480 +288 352 +640 480 +640 480 +480 640 +640 427 +500 375 +640 480 +480 640 +640 426 +640 427 +640 428 +500 375 +640 427 +640 640 +640 480 +640 427 +640 480 +640 480 +640 348 +640 425 +640 613 +427 640 +640 427 +500 500 +640 427 +480 640 +479 640 +640 639 +600 400 +640 480 +640 427 +320 240 +480 640 +500 375 +640 234 +640 427 +640 427 +640 427 +500 333 +500 375 +640 433 +640 427 +640 424 +640 480 +640 480 +612 612 +470 332 +640 322 +640 480 +640 521 +640 427 +640 427 +500 375 +640 480 +640 427 +640 480 +640 501 +640 424 +460 640 +640 419 +640 480 +640 480 +500 375 +640 427 +640 427 +333 500 +640 426 +375 500 +500 374 +640 512 +500 375 +640 425 +640 480 +480 640 +480 640 +427 640 +500 375 +640 427 +480 640 +640 427 +640 480 +612 612 +640 480 +480 640 +640 555 +457 640 +500 375 +480 640 +640 480 +500 323 +612 612 +640 480 +640 480 +640 406 +640 480 +640 427 +640 429 +640 426 +480 640 +500 332 +640 427 +640 480 +425 640 +426 640 +640 425 +375 500 +458 640 +640 427 +640 427 +640 427 +427 640 +640 445 +640 427 +640 427 +640 457 +500 500 +640 427 +640 427 +640 563 +640 419 +428 640 +500 375 +640 456 +640 480 +640 427 +427 640 +375 500 +640 427 +479 640 +640 426 +640 427 +500 335 +640 427 +640 383 +500 338 +640 426 +427 640 +640 480 +500 375 +426 640 +640 424 +500 332 +640 480 +424 640 +640 480 +421 640 +640 176 +640 480 +640 426 +640 639 +640 480 +480 640 +640 425 +640 480 +640 480 +640 429 +500 375 +612 612 +640 566 +640 427 +640 526 +480 640 +480 640 +427 640 +640 428 +425 640 +640 517 +640 433 +240 320 +640 426 +417 640 +640 428 +640 425 +361 500 +640 523 +640 480 +640 480 +640 478 +640 427 +640 427 +425 640 +500 332 +500 375 +640 427 +426 640 +640 427 +640 425 +500 333 +480 640 +427 640 +500 362 +640 480 +640 533 +640 428 +427 640 +640 480 +361 640 +500 375 +640 480 +640 522 +500 456 +427 640 +500 321 +640 480 +640 427 +640 425 +480 640 +640 480 +640 360 +640 480 +335 500 +480 640 +427 640 +500 375 +500 334 +478 640 +640 427 +640 480 +640 427 +425 640 +640 427 +375 500 +640 480 +640 427 +612 612 +640 429 +640 480 +437 640 +424 640 +480 640 +640 427 +640 426 +640 429 +640 480 +640 419 +426 640 +640 480 +640 428 +640 480 +640 480 +500 375 +640 480 +640 427 +640 457 +640 425 +640 427 +500 375 +640 395 +468 640 +640 407 +640 436 +640 427 +426 640 +640 427 +640 427 +480 640 +640 428 +500 375 +640 427 +640 425 +640 480 +375 500 +427 640 +500 375 +640 480 +612 612 +640 478 +640 426 +500 281 +640 480 +427 640 +425 640 +640 480 +640 425 +480 640 +268 640 +480 640 +640 426 +500 333 +640 427 +618 640 +500 333 +640 426 +640 420 +612 612 +640 575 +640 427 +640 427 +430 640 +427 640 +640 480 +480 640 +333 500 +640 427 +427 640 +640 480 +429 640 +640 319 +375 500 +640 428 +640 429 +640 427 +612 612 +640 480 +415 640 +640 426 +612 612 +640 480 +640 276 +640 640 +427 640 +640 427 +640 480 +640 480 +640 468 +640 426 +480 640 +640 508 +640 233 +443 640 +640 480 +640 480 +500 375 +640 427 +640 468 +640 427 +448 640 +480 640 +459 640 +640 426 +640 428 +640 428 +640 480 +426 640 +640 428 +640 480 +424 640 +640 425 +640 480 +333 500 +500 375 +640 425 +640 480 +640 425 +640 480 +500 335 +640 403 +640 480 +640 480 +640 480 +640 427 +640 425 +640 427 +500 333 +640 427 +640 480 +640 480 +640 480 +640 425 +640 480 +640 480 +640 480 +640 480 +640 428 +425 640 +640 426 +640 427 +640 256 +612 612 +640 427 +640 427 +640 480 +500 375 +480 640 +500 333 +640 567 +640 426 +339 500 +640 423 +640 480 +480 640 +640 533 +480 640 +640 428 +640 427 +640 480 +612 612 +640 480 +640 427 +426 640 +640 426 +640 436 +480 640 +640 427 +640 426 +640 480 +480 640 +640 478 +429 640 +640 427 +323 500 +500 375 +480 640 +500 494 +333 500 +500 375 +640 400 +427 640 +640 428 +240 180 +612 612 +598 640 +376 479 +640 480 +333 500 +427 640 +480 640 +640 458 +640 480 +480 640 +640 480 +480 640 +500 332 +640 310 +640 480 +500 375 +640 640 +640 427 +640 480 +640 427 +640 480 +500 375 +640 428 +427 640 +500 376 +426 640 +480 640 +640 480 +640 427 +640 428 +640 480 +640 439 +400 400 +425 640 +640 640 +640 431 +444 500 +500 333 +640 427 +640 425 +640 427 +559 640 +640 428 +426 640 +640 480 +471 640 +640 429 +640 427 +500 375 +480 640 +640 427 +640 480 +640 480 +640 427 +640 480 +480 640 +640 499 +426 640 +612 612 +500 375 +640 425 +427 640 +640 415 +640 427 +640 513 +640 480 +500 375 +640 434 +640 429 +640 480 +333 500 +640 427 +640 425 +640 480 +640 480 +500 375 +318 500 +480 640 +640 481 +500 375 +500 375 +640 480 +480 640 +500 306 +640 480 +640 480 +640 480 +436 640 +480 640 +640 480 +640 480 +640 426 +427 640 +640 427 +640 428 +500 400 +640 424 +333 500 +486 640 +480 640 +640 428 +640 444 +514 640 +640 406 +640 480 +480 640 +425 640 +640 378 +458 640 +640 426 +640 480 +500 375 +469 640 +480 640 +427 640 +640 480 +640 427 +478 640 +640 427 +334 500 +640 427 +500 443 +427 640 +640 480 +640 425 +502 640 +375 500 +640 427 +500 334 +500 375 +427 640 +480 640 +640 427 +640 429 +443 640 +640 441 +500 333 +449 640 +500 333 +640 424 +270 360 +640 498 +333 500 +480 640 +429 640 +640 478 +640 360 +640 480 +640 437 +480 640 +480 640 +640 640 +640 480 +640 426 +640 480 +640 480 +425 640 +640 480 +427 640 +640 480 +640 427 +640 479 +640 427 +500 500 +640 344 +640 354 +640 480 +427 640 +640 418 +640 427 +640 428 +640 485 +640 426 +500 376 +612 612 +500 375 +500 375 +640 499 +427 640 +480 640 +640 561 +640 429 +640 480 +480 640 +612 612 +500 332 +480 640 +640 427 +375 500 +480 640 +640 373 +480 640 +640 427 +640 418 +640 480 +640 426 +427 640 +640 480 +480 640 +433 640 +640 369 +640 427 +500 335 +640 495 +640 487 +612 612 +359 640 +640 480 +598 640 +500 400 +425 640 +640 427 +640 427 +500 336 +640 298 +640 480 +640 480 +412 640 +640 480 +640 595 +480 640 +375 500 +478 640 +640 480 +480 640 +500 375 +500 305 +500 326 +640 480 +640 383 +612 612 +640 424 +640 427 +640 428 +500 375 +640 512 +640 480 +571 640 +500 375 +500 375 +640 480 +640 427 +640 480 +640 429 +640 427 +428 640 +640 427 +640 427 +640 480 +480 640 +640 426 +640 427 +500 345 +640 480 +436 500 +640 480 +640 496 +640 480 +480 640 +640 426 +640 426 +640 424 +640 390 +640 425 +640 425 +640 427 +640 451 +640 480 +640 425 +640 428 +640 640 +640 480 +640 425 +640 479 +640 427 +640 427 +640 480 +640 480 +500 393 +640 427 +480 640 +640 453 +640 480 +640 480 +640 480 +640 395 +640 427 +640 598 +640 426 +640 427 +640 427 +500 375 +640 480 +640 480 +375 500 +375 500 +640 480 +640 427 +640 640 +640 480 +480 640 +640 480 +640 480 +640 422 +423 640 +640 443 +500 332 +640 480 +640 426 +640 480 +640 640 +480 640 +640 424 +640 427 +640 359 +640 424 +640 428 +640 424 +480 640 +427 640 +640 480 +376 640 +640 427 +640 480 +429 640 +640 443 +640 427 +480 640 +640 425 +480 640 +459 640 +640 361 +640 445 +225 225 +500 329 +640 480 +426 640 +640 480 +640 427 +428 640 +640 480 +640 426 +493 500 +640 480 +224 300 +640 427 +612 612 +640 480 +640 427 +640 426 +640 480 +640 640 +640 427 +640 451 +640 480 +640 425 +480 640 +500 333 +640 424 +640 451 +640 480 +640 427 +640 480 +640 480 +478 640 +400 600 +480 640 +640 480 +425 640 +640 480 +640 426 +346 640 +640 480 +500 270 +640 480 +640 480 +640 426 +640 559 +640 480 +428 640 +640 426 +640 391 +640 392 +612 612 +640 480 +633 640 +500 287 +480 640 +640 480 +640 512 +640 355 +427 640 +640 427 +640 428 +640 426 +640 543 +425 640 +500 333 +498 635 +640 480 +640 480 +640 429 +640 426 +640 428 +640 480 +640 478 +519 640 +640 428 +640 480 +640 426 +500 500 +640 427 +640 352 +360 480 +640 480 +640 240 +500 375 +427 640 +640 480 +500 333 +640 427 +480 640 +500 388 +500 334 +640 426 +640 480 +500 333 +640 480 +480 640 +640 480 +500 375 +640 480 +640 480 +500 375 +640 480 +640 426 +480 640 +640 480 +640 426 +640 376 +500 333 +640 427 +500 387 +333 500 +640 403 +640 480 +600 400 +640 480 +427 640 +384 640 +640 427 +500 329 +640 480 +640 425 +640 424 +640 544 +640 436 +640 426 +640 640 +640 427 +640 478 +640 427 +640 424 +365 640 +500 375 +640 427 +500 375 +640 427 +640 458 +640 480 +480 640 +500 375 +500 335 +480 640 +612 612 +446 640 +640 480 +640 480 +640 476 +600 402 +500 333 +500 334 +500 375 +426 640 +475 640 +500 350 +640 453 +529 640 +640 426 +640 248 +480 640 +554 640 +360 640 +640 427 +480 640 +500 375 +640 480 +640 480 +640 480 +640 427 +640 480 +640 439 +512 640 +500 333 +640 427 +640 428 +640 427 +640 480 +428 640 +500 375 +640 480 +640 480 +500 375 +640 399 +640 427 +640 480 +427 640 +480 640 +640 457 +640 427 +640 411 +640 480 +500 375 +640 480 +500 375 +640 437 +640 480 +640 360 +500 375 +640 479 +640 427 +640 427 +640 480 +332 500 +640 480 +640 480 +640 480 +500 255 +640 480 +427 640 +640 425 +640 427 +500 332 +640 480 +640 424 +640 453 +500 333 +480 640 +612 612 +640 480 +612 612 +528 512 +640 480 +640 480 +640 480 +471 640 +429 640 +640 640 +640 430 +640 425 +411 640 +640 428 +640 425 +640 427 +640 418 +500 375 +427 640 +640 427 +508 640 +640 425 +427 640 +640 360 +640 360 +424 283 +640 421 +640 479 +640 480 +429 640 +640 418 +640 427 +640 427 +375 500 +640 426 +375 500 +640 445 +640 440 +480 640 +640 451 +500 375 +640 510 +640 480 +640 480 +640 466 +640 334 +640 333 +480 640 +640 480 +640 480 +640 427 +640 640 +500 375 +640 480 +640 428 +640 428 +500 375 +640 426 +427 640 +640 426 +640 604 +612 612 +640 428 +640 426 +640 427 +640 428 +640 428 +500 500 +640 480 +478 640 +640 444 +640 426 +640 427 +640 480 +640 428 +480 640 +640 425 +640 494 +375 500 +640 480 +640 425 +359 640 +640 458 +640 426 +640 427 +640 480 +640 425 +333 500 +640 427 +500 320 +333 500 +500 375 +500 375 +500 375 +640 480 +640 640 +480 640 +351 234 +500 333 +500 375 +640 426 +480 640 +480 640 +640 427 +640 489 +640 480 +640 427 +640 480 +640 640 +640 640 +500 334 +640 480 +640 427 +640 427 +640 426 +640 426 +640 427 +640 427 +640 356 +640 480 +538 640 +640 360 +640 427 +640 427 +640 480 +640 427 +480 640 +640 299 +640 425 +640 480 +320 240 +640 426 +480 360 +640 480 +640 426 +640 480 +640 480 +640 427 +500 375 +640 111 +640 427 +480 640 +640 478 +640 448 +612 612 +640 425 +640 426 +640 427 +640 425 +333 500 +425 640 +640 425 +427 640 +500 334 +480 640 +480 640 +640 480 +640 427 +640 281 +640 428 +500 364 +640 480 +640 424 +640 480 +640 428 +640 426 +334 500 +500 375 +427 640 +640 480 +640 424 +442 640 +480 640 +333 500 +500 500 +500 375 +640 480 +631 640 +640 480 +427 640 +640 429 +640 426 +640 428 +480 640 +640 362 +640 480 +640 471 +640 480 +640 480 +640 640 +640 457 +640 425 +427 640 +640 464 +640 427 +640 427 +428 640 +640 480 +640 427 +428 640 +640 480 +640 480 +480 640 +640 439 +640 428 +332 500 +500 363 +640 424 +640 480 +640 427 +500 375 +640 425 +640 427 +427 640 +640 425 +640 480 +640 427 +471 640 +468 500 +640 427 +640 480 +375 500 +640 480 +640 426 +640 314 +640 427 +480 640 +640 427 +500 375 +640 480 +640 424 +640 480 +640 591 +438 640 +640 425 +640 425 +640 480 +427 640 +640 480 +425 640 +640 480 +500 375 +640 480 +640 429 +640 480 +427 640 +500 436 +478 640 +640 480 +500 375 +500 375 +500 333 +500 375 +397 500 +640 360 +500 375 +640 480 +640 427 +480 640 +640 427 +640 480 +640 470 +640 480 +640 428 +640 427 +640 480 +500 375 +427 640 +640 480 +640 458 +640 480 +640 425 +640 390 +640 549 +640 428 +640 480 +640 427 +500 333 +640 427 +426 640 +640 428 +640 428 +640 483 +640 455 +500 333 +426 640 +640 451 +500 301 +640 478 +424 640 +480 640 +640 480 +426 640 +640 364 +492 500 +640 480 +640 478 +640 480 +480 640 +500 375 +480 640 +640 429 +375 500 +640 268 +480 640 +427 640 +640 356 +640 358 +640 481 +640 480 +612 612 +640 424 +640 480 +612 612 +500 333 +326 500 +491 640 +640 491 +640 388 +640 478 +640 425 +640 480 +640 360 +500 375 +640 427 +480 640 +640 428 +640 426 +640 480 +480 640 +612 612 +640 480 +500 375 +640 386 +640 424 +424 640 +640 424 +425 640 +640 427 +640 480 +480 640 +640 427 +640 450 +640 480 +640 480 +640 640 +640 428 +427 640 +640 411 +640 514 +480 640 +480 640 +640 480 +640 426 +480 640 +640 480 +500 376 +425 640 +500 333 +640 427 +640 614 +640 427 +500 375 +640 426 +500 333 +640 480 +375 500 +500 375 +640 426 +317 398 +640 480 +640 512 +640 425 +500 333 +640 480 +640 578 +424 640 +640 480 +500 375 +640 480 +640 480 +480 640 +612 612 +640 425 +640 480 +640 480 +640 428 +640 480 +640 427 +640 426 +612 612 +640 427 +640 361 +640 424 +640 480 +480 640 +640 424 +500 333 +640 425 +640 480 +640 427 +640 434 +640 479 +640 425 +640 488 +640 478 +480 640 +334 500 +640 426 +640 424 +640 427 +427 640 +640 512 +640 419 +640 392 +500 375 +612 612 +640 480 +600 399 +640 427 +640 480 +500 339 +428 640 +640 427 +640 480 +480 640 +640 480 +640 606 +640 480 +640 427 +640 480 +640 427 +640 480 +500 333 +640 427 +500 375 +500 434 +640 404 +427 640 +640 426 +480 640 +640 427 +640 480 +500 358 +500 335 +500 313 +640 425 +500 375 +640 429 +500 375 +480 640 +640 427 +478 640 +640 481 +500 348 +640 427 +640 478 +480 640 +640 408 +632 640 +480 640 +640 355 +640 427 +375 500 +500 351 +640 426 +343 500 +640 480 +500 332 +640 480 +500 375 +500 375 +640 427 +640 428 +480 640 +640 426 +640 427 +640 480 +480 640 +640 480 +640 308 +640 427 +640 426 +640 480 +333 500 +640 426 +640 427 +640 427 +480 640 +640 480 +640 427 +375 500 +640 401 +640 426 +640 480 +500 281 +563 422 +640 426 +640 427 +640 427 +640 427 +640 425 +640 422 +640 427 +640 429 +640 480 +626 640 +480 640 +427 640 +640 480 +640 480 +640 416 +427 640 +640 480 +640 494 +500 333 +500 333 +640 448 +640 425 +480 640 +480 640 +640 480 +640 425 +500 331 +640 480 +640 515 +500 399 +640 428 +500 400 +640 480 +640 426 +640 428 +640 271 +640 480 +500 375 +427 640 +640 427 +640 428 +640 427 +640 470 +640 473 +640 427 +640 360 +333 500 +640 427 +427 640 +640 480 +480 640 +640 427 +500 384 +640 405 +640 480 +640 426 +640 480 +640 360 +640 448 +640 640 +640 425 +640 480 +640 480 +640 480 +640 425 +480 640 +640 489 +306 640 +640 383 +640 389 +480 640 +640 480 +500 327 +480 640 +358 640 +640 426 +640 458 +640 427 +640 428 +640 480 +640 480 +320 240 +640 412 +640 439 +640 427 +640 428 +640 540 +640 480 +640 480 +640 480 +612 612 +640 531 +640 480 +427 640 +640 480 +640 480 +480 640 +640 427 +640 424 +640 402 +332 500 +640 359 +640 427 +427 640 +640 427 +640 433 +640 360 +640 480 +640 480 +426 640 +640 427 +640 426 +480 640 +640 478 +500 375 +480 640 +640 480 +640 424 +640 480 +640 480 +640 427 +640 491 +640 480 +480 640 +400 300 +640 448 +640 480 +640 426 +640 427 +640 423 +640 427 +640 630 +640 480 +640 406 +640 429 +640 480 +640 480 +640 480 +640 479 +612 612 +427 640 +478 640 +640 427 +328 500 +640 360 +640 480 +480 320 +409 640 +640 427 +640 480 +640 426 +640 427 +640 480 +500 333 +640 428 +640 427 +640 480 +640 440 +640 480 +640 459 +640 480 +480 640 +640 480 +640 425 +640 501 +612 612 +640 480 +640 513 +640 480 +640 428 +640 482 +640 480 +640 480 +500 375 +488 500 +640 480 +561 640 +640 480 +500 375 +640 480 +640 480 +640 424 +612 612 +612 612 +640 429 +500 401 +640 427 +640 427 +480 640 +640 426 +480 640 +500 375 +640 480 +640 427 +640 360 +640 427 +640 480 +427 640 +425 640 +427 640 +640 480 +640 428 +640 426 +640 480 +640 480 +640 480 +603 640 +640 553 +640 449 +640 480 +640 427 +456 640 +478 640 +428 640 +640 424 +480 640 +640 428 +640 427 +640 438 +640 427 +500 333 +640 480 +500 334 +640 451 +480 640 +640 428 +500 382 +480 640 +640 480 +500 384 +640 427 +640 478 +640 480 +500 375 +351 500 +640 457 +479 640 +640 600 +518 640 +640 441 +480 640 +480 640 +640 426 +640 480 +480 640 +640 480 +426 640 +480 640 +612 612 +640 480 +640 433 +480 640 +500 375 +640 421 +640 480 +640 480 +640 480 +427 640 +480 640 +640 430 +450 450 +640 496 +640 480 +480 640 +480 640 +500 375 +640 427 +640 427 +640 491 +640 480 +640 480 +640 333 +640 427 +386 640 +500 336 +640 480 +600 357 +180 225 +640 480 +640 479 +500 373 +640 426 +500 334 +576 430 +333 500 +612 612 +332 500 +640 427 +480 640 +640 480 +478 640 +480 640 +640 640 +640 480 +640 533 +640 427 +640 480 +640 396 +640 512 +640 426 +640 480 +612 612 +300 200 +640 480 +640 480 +640 480 +640 480 +524 640 +640 320 +640 428 +640 433 +640 427 +640 480 +640 480 +500 375 +640 512 +500 375 +640 480 +427 640 +640 480 +427 640 +640 427 +428 640 +612 612 +640 427 +375 500 +500 333 +333 500 +640 481 +480 640 +640 424 +640 428 +640 480 +640 428 +426 640 +427 640 +399 500 +640 480 +612 612 +640 480 +640 427 +640 427 +427 640 +640 480 +333 500 +640 441 +640 480 +640 426 +640 640 +480 640 +481 640 +334 500 +640 480 +500 375 +375 500 +480 640 +480 640 +640 427 +640 554 +480 640 +640 403 +640 264 +640 480 +397 500 +640 480 +640 427 +640 427 +640 480 +640 428 +610 640 +640 561 +640 427 +480 640 +640 325 +640 480 +480 640 +480 640 +480 640 +640 480 +640 427 +640 480 +640 480 +640 457 +480 640 +640 640 +375 500 +640 427 +480 640 +500 333 +640 428 +640 425 +480 640 +427 640 +640 425 +640 640 +640 480 +478 640 +640 480 +640 429 +600 400 +500 500 +640 480 +640 481 +640 480 +385 308 +640 480 +640 427 +640 428 +640 640 +640 426 +500 375 +640 421 +375 500 +640 471 +640 404 +640 427 +375 500 +463 640 +553 640 +427 640 +418 500 +640 385 +478 640 +517 640 +640 478 +427 640 +640 400 +612 612 +640 271 +500 342 +640 466 +640 467 +640 480 +640 417 +640 427 +612 612 +513 640 +480 640 +640 511 +426 640 +640 425 +339 500 +640 480 +612 612 +480 640 +429 640 +640 458 +488 640 +612 612 +640 427 +640 571 +500 358 +640 425 +640 480 +640 427 +640 512 +640 425 +427 640 +640 480 +640 426 +505 640 +500 333 +640 426 +426 640 +425 640 +426 640 +500 375 +640 427 +640 427 +640 426 +640 608 +500 375 +454 640 +640 427 +640 360 +600 450 +425 640 +640 427 +640 481 +640 423 +640 426 +640 457 +640 480 +480 640 +640 426 +640 480 +640 425 +640 429 +424 640 +640 438 +500 375 +426 640 +428 640 +640 480 +640 427 +640 480 +480 640 +612 612 +500 379 +640 428 +640 480 +640 480 +295 480 +500 375 +640 398 +640 429 +612 612 +640 427 +480 640 +640 432 +640 480 +486 640 +640 480 +640 640 +425 640 +640 426 +640 436 +640 428 +640 454 +640 360 +612 612 +640 453 +612 612 +500 334 +425 640 +640 426 +640 427 +640 480 +480 640 +640 426 +640 463 +640 427 +640 428 +640 513 +640 480 +640 483 +640 425 +640 426 +640 512 +640 426 +470 500 +640 427 +640 359 +640 429 +640 426 +427 640 +640 480 +640 480 +640 447 +640 427 +462 640 +480 640 +640 480 +475 500 +640 480 +640 428 +612 612 +640 481 +640 480 +640 426 +500 375 +640 428 +640 480 +640 640 +296 352 +640 425 +640 480 +640 508 +640 429 +640 640 +640 428 +578 453 +500 375 +640 428 +640 360 +425 640 +640 480 +640 372 +500 334 +640 553 +640 480 +480 640 +640 551 +640 428 +640 427 +428 640 +640 427 +640 428 +640 427 +482 640 +427 640 +375 500 +640 480 +500 400 +640 427 +640 446 +480 640 +480 640 +640 480 +640 480 +427 640 +427 640 +640 480 +640 427 +640 480 +640 480 +640 484 +640 360 +640 480 +612 612 +640 480 +640 480 +640 426 +640 480 +612 612 +640 426 +640 639 +640 480 +640 428 +640 428 +640 427 +640 428 +640 427 +480 640 +640 427 +640 426 +480 640 +640 427 +640 640 +640 478 +640 480 +640 480 +640 427 +375 500 +612 612 +640 427 +640 520 +640 480 +640 427 +640 480 +427 640 +640 480 +480 640 +640 640 +640 426 +640 480 +427 640 +640 427 +640 436 +640 480 +427 640 +375 500 +640 480 +640 480 +640 480 +640 427 +640 427 +500 332 +640 472 +640 480 +640 427 +300 640 +640 480 +360 640 +427 640 +640 480 +640 416 +429 640 +480 640 +640 348 +640 427 +428 640 +640 425 +640 480 +480 640 +640 480 +480 640 +500 432 +640 428 +640 426 +640 428 +640 427 +640 480 +640 640 +427 640 +640 480 +640 468 +500 372 +629 640 +640 480 +500 333 +480 640 +480 640 +426 640 +640 480 +640 427 +480 640 +640 428 +427 640 +428 640 +332 500 +640 360 +612 612 +640 480 +640 480 +640 445 +640 398 +640 457 +640 426 +427 640 +640 426 +640 480 +640 640 +640 425 +640 480 +640 427 +425 640 +640 427 +640 424 +500 334 +640 442 +612 612 +385 289 +640 480 +428 640 +640 401 +500 375 +640 541 +640 428 +640 427 +500 375 +640 480 +500 375 +640 480 +640 408 +500 375 +300 451 +640 429 +500 375 +640 404 +612 612 +500 375 +640 427 +640 528 +640 480 +640 425 +427 640 +640 428 +434 640 +640 426 +392 640 +640 427 +480 640 +500 333 +640 427 +640 480 +640 360 +500 375 +640 480 +640 424 +640 426 +640 425 +430 640 +640 504 +640 480 +640 489 +640 480 +494 338 +398 640 +640 477 +640 425 +426 640 +640 426 +640 424 +640 563 +348 486 +640 480 +640 480 +480 640 +640 458 +640 480 +480 640 +413 481 +640 427 +640 458 +640 427 +640 428 +640 480 +586 640 +640 480 +640 333 +640 480 +640 469 +640 427 +426 640 +612 612 +500 333 +640 427 +480 640 +500 281 +640 415 +640 426 +640 480 +500 380 +640 428 +612 612 +640 427 +640 480 +640 480 +640 336 +375 500 +480 640 +640 426 +640 427 +640 492 +375 500 +448 621 +480 640 +427 640 +426 640 +500 375 +427 640 +640 427 +640 428 +640 416 +500 375 +640 427 +640 428 +480 640 +640 424 +500 375 +640 480 +640 480 +640 480 +640 480 +640 635 +427 640 +640 427 +640 424 +640 480 +640 428 +500 375 +640 427 +640 426 +640 480 +640 480 +500 500 +640 399 +640 361 +480 640 +640 480 +640 417 +500 332 +640 480 +640 427 +640 426 +426 640 +640 427 +640 480 +640 480 +480 640 +427 640 +598 640 +640 480 +333 500 +640 457 +640 425 +612 612 +427 640 +500 375 +640 480 +640 426 +478 640 +640 426 +640 427 +640 427 +500 321 +500 375 +640 481 +640 426 +640 453 +640 480 +640 427 +640 425 +640 480 +640 396 +640 457 +640 427 +640 480 +640 428 +450 500 +487 500 +427 640 +640 427 +500 375 +640 480 +640 480 +640 429 +640 480 +433 640 +640 427 +426 640 +640 425 +640 479 +640 480 +500 335 +640 469 +640 428 +427 640 +427 640 +500 333 +640 427 +640 480 +500 333 +640 480 +612 612 +640 480 +428 640 +500 375 +375 500 +480 640 +640 480 +640 427 +640 480 +516 640 +640 427 +640 479 +640 427 +612 612 +375 500 +640 428 +640 417 +429 640 +499 640 +640 480 +640 480 +427 640 +640 427 +500 375 +640 480 +640 640 +425 640 +480 640 +640 426 +640 480 +428 640 +600 400 +640 521 +640 426 +640 427 +640 427 +640 425 +500 375 +640 480 +640 425 +640 428 +480 640 +428 640 +640 427 +640 480 +640 480 +640 480 +640 480 +640 480 +640 344 +640 430 +479 640 +640 426 +427 640 +640 457 +640 427 +640 426 +640 478 +640 426 +640 513 +640 426 +640 427 +640 427 +480 640 +640 580 +640 433 +640 433 +640 427 +640 480 +640 425 +612 612 +640 546 +500 281 +640 361 +640 427 +427 640 +500 375 +640 401 +640 480 +500 375 +640 427 +640 424 +640 427 +640 423 +480 640 +640 480 +427 640 +367 500 +640 480 +640 480 +640 428 +425 640 +640 425 +480 640 +640 478 +607 640 +500 333 +500 375 +640 427 +640 480 +640 368 +640 428 +640 480 +640 427 +500 337 +640 480 +491 640 +640 427 +640 477 +500 375 +640 433 +640 480 +640 480 +640 427 +425 640 +640 427 +500 454 +555 640 +640 335 +640 480 +640 427 +640 480 +640 480 +640 480 +500 375 +640 427 +500 375 +640 426 +480 640 +640 480 +426 640 +426 640 +427 640 +640 423 +640 468 +640 427 +640 480 +480 640 +375 500 +640 427 +640 480 +500 375 +640 480 +640 480 +640 512 +427 640 +640 480 +640 480 +480 640 +428 640 +640 480 +337 500 +500 375 +640 480 +640 480 +640 440 +640 427 +640 360 +640 427 +640 640 +600 400 +640 480 +640 425 +461 500 +375 500 +480 640 +640 426 +640 480 +612 612 +640 478 +500 333 +375 500 +640 480 +441 640 +427 640 +640 480 +640 480 +640 493 +640 479 +500 375 +640 427 +640 480 +640 480 +640 480 +640 480 +640 480 +500 375 +640 429 +427 640 +640 480 +640 480 +640 361 +640 427 +358 500 +480 640 +640 427 +500 486 +640 213 +640 428 +640 427 +640 480 +640 427 +640 426 +633 640 +375 500 +640 427 +640 462 +640 428 +640 480 +640 427 +640 429 +640 480 +640 427 +375 500 +640 478 +640 480 +480 640 +640 480 +640 427 +459 640 +598 640 +500 375 +427 640 +640 425 +640 478 +640 426 +375 500 +640 426 +640 425 +640 424 +640 479 +640 480 +640 480 +640 259 +361 640 +427 640 +480 640 +640 548 +640 424 +640 425 +640 426 +640 424 +640 427 +612 612 +640 480 +500 313 +640 480 +640 480 +640 480 +478 640 +640 427 +640 480 +640 489 +640 428 +361 640 +428 640 +640 356 +640 418 +500 334 +612 612 +640 480 +396 500 +640 478 +640 427 +600 400 +426 640 +640 480 +500 375 +476 640 +480 640 +640 427 +480 640 +640 427 +640 426 +640 444 +430 640 +640 427 +500 375 +426 640 +480 640 +640 480 +640 480 +640 480 +640 640 +640 427 +640 480 +640 393 +640 480 +640 546 +640 475 +640 480 +640 427 +500 375 +640 423 +640 427 +640 425 +640 480 +640 360 +457 640 +375 500 +640 427 +425 640 +640 427 +480 640 +427 640 +640 425 +640 480 +640 480 +640 480 +640 480 +640 426 +424 640 +640 425 +640 480 +640 480 +500 334 +427 640 +426 640 +640 427 +480 640 +480 640 +640 457 +640 361 +640 428 +418 640 +428 640 +640 480 +640 397 +640 406 +500 342 +478 640 +640 640 +480 640 +640 480 +640 426 +612 612 +375 500 +640 480 +640 360 +640 457 +640 480 +640 428 +640 428 +640 428 +640 318 +640 427 +307 500 +612 612 +640 427 +640 427 +361 500 +480 640 +640 480 +480 640 +640 426 +640 427 +640 426 +640 424 +640 480 +640 513 +640 480 +640 427 +512 640 +612 612 +427 640 +429 640 +640 479 +640 427 +640 427 +640 431 +500 375 +640 360 +480 640 +427 640 +612 612 +640 480 +640 425 +480 640 +500 333 +511 640 +640 427 +640 454 +640 396 +640 360 +640 480 +640 478 +500 375 +640 480 +640 427 +640 358 +640 480 +640 399 +375 500 +640 512 +640 423 +427 640 +500 338 +480 640 +640 425 +428 640 +388 640 +500 375 +640 427 +500 400 +427 640 +640 426 +640 480 +640 427 +640 427 +640 480 +640 480 +640 640 +640 427 +480 640 +640 480 +612 612 +640 480 +417 640 +640 373 +640 479 +640 436 +640 428 +480 640 +640 428 +473 335 +640 479 +480 640 +640 436 +640 427 +640 524 +478 640 +640 480 +480 640 +500 240 +640 478 +640 309 +640 428 +640 480 +480 640 +640 602 +640 432 +427 640 +592 640 +640 427 +640 480 +361 640 +375 500 +600 399 +500 400 +427 640 +640 427 +640 431 +425 640 +640 425 +466 640 +640 427 +640 427 +640 480 +640 425 +640 433 +500 375 +500 332 +375 500 +640 427 +640 393 +500 375 +640 437 +640 360 +480 640 +640 477 +375 500 +612 612 +640 512 +480 640 +480 640 +480 640 +500 333 +426 640 +500 375 +468 640 +375 500 +640 480 +640 436 +640 480 +640 428 +640 429 +640 480 +500 375 +640 427 +419 640 +640 427 +640 524 +480 640 +427 640 +640 480 +640 480 +640 480 +640 423 +640 427 +427 640 +427 640 +469 500 +640 501 +532 640 +640 640 +640 481 +640 426 +640 361 +500 367 +640 393 +500 375 +640 480 +640 480 +640 480 +640 426 +640 425 +512 640 +640 426 +360 640 +375 500 +480 640 +640 424 +480 640 +480 640 +612 612 +500 375 +640 480 +427 640 +552 640 +640 427 +480 640 +612 612 +480 640 +640 480 +640 427 +640 480 +640 427 +640 426 +640 480 +300 400 +480 640 +500 375 +640 480 +360 480 +500 333 +640 386 +500 296 +640 480 +640 640 +640 428 +640 480 +640 427 +640 480 +640 480 +640 425 +500 334 +640 512 +640 480 +640 640 +640 480 +640 462 +640 428 +500 375 +640 480 +640 480 +408 640 +640 480 +640 428 +640 427 +450 313 +640 426 +640 480 +448 640 +640 357 +612 612 +640 425 +640 480 +640 480 +375 500 +640 480 +639 640 +640 480 +480 640 +500 375 +640 427 +640 427 +640 480 +640 425 +640 427 +640 640 +640 478 +640 480 +640 435 +612 612 +640 482 +640 478 +640 494 +500 383 +640 494 +640 416 +640 585 +500 333 +640 480 +480 640 +343 512 +640 410 +428 640 +640 485 +640 480 +428 640 +640 638 +640 480 +612 612 +640 425 +640 553 +640 426 +640 480 +640 479 +426 640 +640 427 +640 427 +640 453 +500 400 +400 500 +640 426 +640 480 +640 426 +200 145 +427 640 +640 480 +640 480 +640 480 +427 640 +640 427 +458 640 +458 640 +500 319 +640 427 +640 386 +640 480 +640 480 +640 427 +500 375 +640 429 +640 457 +640 425 +512 640 +640 426 +640 426 +351 640 +612 612 +375 500 +640 427 +640 480 +612 612 +480 640 +640 360 +456 640 +547 640 +500 333 +640 427 +640 480 +640 480 +640 427 +640 236 +426 640 +640 427 +640 480 +640 480 +640 427 +640 425 +640 378 +500 375 +640 480 +640 479 +640 469 +640 480 +500 311 +640 529 +375 500 +640 427 +640 480 +640 480 +640 226 +480 640 +640 480 +640 425 +377 500 +640 389 +360 640 +640 422 +640 440 +411 640 +640 458 +640 480 +640 480 +640 427 +640 426 +640 478 +640 426 +640 273 +640 480 +640 439 +640 414 +640 481 +640 428 +640 427 +640 480 +640 480 +640 426 +640 427 +387 500 +640 427 +640 480 +500 375 +640 512 +640 426 +640 480 +640 427 +480 640 +640 326 +500 375 +640 283 +512 640 +640 427 +640 480 +500 403 +640 427 +640 480 +640 381 +500 440 +500 375 +333 500 +427 640 +640 425 +640 480 +480 640 +640 427 +640 480 +640 402 +640 427 +640 480 +640 427 +480 640 +427 640 +640 425 +640 495 +640 453 +640 616 +426 640 +639 640 +470 640 +640 470 +640 426 +500 400 +480 640 +640 427 +640 425 +640 480 +640 480 +431 640 +640 427 +500 375 +640 427 +640 427 +512 640 +480 640 +640 259 +640 429 +512 640 +640 428 +640 427 +640 427 +640 427 +640 427 +640 433 +453 640 +500 375 +640 516 +500 375 +640 640 +640 480 +640 425 +640 407 +640 318 +640 480 +640 480 +480 640 +426 640 +462 640 +375 500 +640 360 +640 400 +640 426 +640 427 +640 458 +640 331 +500 375 +428 640 +640 479 +640 426 +640 427 +640 503 +640 427 +640 480 +619 413 +640 480 +512 640 +412 500 +480 640 +500 375 +640 480 +640 480 +480 640 +640 463 +640 480 +640 426 +480 640 +640 428 +374 640 +640 360 +640 480 +478 640 +424 640 +640 427 +426 640 +500 375 +375 500 +640 457 +640 427 +640 427 +427 640 +640 480 +461 500 +412 500 +640 480 +640 428 +301 500 +640 480 +640 480 +500 281 +500 375 +480 640 +640 426 +640 426 +500 375 +480 640 +457 640 +500 400 +640 425 +640 478 +640 640 +427 640 +512 640 +640 480 +500 375 +640 427 +640 480 +640 425 +612 612 +640 480 +640 427 +375 500 +416 640 +640 499 +500 400 +640 480 +640 480 +640 396 +640 480 +640 425 +640 393 +640 640 +640 480 +640 480 +500 442 +640 427 +640 480 +640 223 +640 480 +640 480 +640 480 +640 480 +640 428 +640 480 +640 379 +480 640 +640 427 +365 500 +640 427 +480 640 +640 428 +640 243 +640 480 +640 480 +500 375 +640 428 +426 640 +480 640 +427 640 +500 500 +478 640 +640 427 +480 640 +427 640 +375 500 +428 640 +640 425 +640 444 +640 426 +640 452 +640 427 +640 462 +500 375 +640 640 +640 480 +429 640 +500 500 +640 480 +640 430 +427 640 +375 500 +640 427 +375 500 +640 426 +640 439 +612 612 +640 436 +640 480 +640 428 +412 640 +640 480 +426 640 +640 454 +640 426 +640 480 +375 500 +640 480 +640 640 +640 480 +640 425 +480 640 +640 426 +640 480 +640 427 +500 375 +375 500 +640 468 +428 640 +428 640 +480 640 +480 640 +425 640 +640 428 +427 640 +640 427 +640 414 +612 612 +640 406 +640 480 +640 480 +640 435 +449 640 +640 427 +640 492 +640 480 +480 640 +640 516 +375 500 +640 480 +315 500 +640 426 +640 428 +500 375 +640 480 +428 640 +425 640 +640 426 +480 640 +640 360 +640 348 +640 479 +479 640 +385 289 +640 480 +640 427 +500 346 +374 500 +640 427 +640 427 +640 480 +640 428 +383 640 +640 480 +640 478 +640 428 +640 480 +428 640 +640 480 +202 360 +640 426 +640 375 +500 356 +640 480 +640 581 +640 427 +640 427 +640 640 +480 640 +640 425 +375 500 +500 375 +427 640 +640 400 +640 480 +640 480 +640 480 +335 500 +480 640 +640 424 +640 361 +640 427 +480 640 +375 500 +640 480 +640 480 +640 480 +500 375 +640 480 +480 640 +640 480 +332 500 +640 480 +640 480 +640 480 +427 640 +640 427 +612 612 +640 480 +640 640 +500 375 +640 480 +640 360 +640 427 +333 500 +640 475 +640 428 +640 426 +640 638 +451 640 +480 640 +640 427 +500 375 +480 640 +480 640 +640 480 +427 640 +640 360 +640 480 +640 355 +640 480 +640 480 +640 426 +640 480 +640 621 +640 480 +612 612 +640 428 +500 375 +640 480 +428 640 +640 480 +640 480 +428 640 +640 405 +500 333 +640 427 +480 640 +640 480 +640 424 +500 353 +640 480 +492 500 +640 480 +425 640 +640 428 +480 640 +640 360 +640 427 +614 409 +640 505 +640 427 +640 424 +500 333 +640 480 +500 375 +500 309 +640 516 +640 480 +640 480 +361 640 +426 640 +640 427 +480 640 +640 480 +640 480 +640 480 +640 480 +500 375 +640 396 +640 476 +612 612 +427 640 +640 480 +500 335 +640 428 +640 429 +640 480 +480 640 +640 480 +640 427 +640 427 +640 480 +640 427 +640 385 +427 640 +640 480 +640 480 +480 640 +640 480 +640 480 +500 375 +640 480 +640 480 +493 640 +640 427 +640 480 +640 425 +640 427 +333 500 +640 428 +480 640 +500 375 +500 375 +639 640 +640 596 +640 426 +640 480 +458 640 +640 631 +640 426 +640 400 +640 474 +640 428 +640 640 +640 424 +640 480 +480 640 +640 480 +640 480 +640 480 +640 480 +480 640 +640 480 +640 427 +640 426 +640 471 +640 426 +500 374 +640 482 +640 426 +640 480 +500 333 +640 426 +426 640 +640 427 +480 640 +640 424 +640 494 +640 478 +640 427 +640 480 +640 437 +640 359 +427 640 +640 480 +640 400 +640 480 +640 480 +425 640 +478 640 +640 420 +640 424 +640 425 +640 360 +640 446 +480 640 +480 640 +640 425 +640 427 +640 427 +640 640 +640 480 +640 450 +480 640 +359 640 +500 375 +426 640 +640 427 +640 480 +640 640 +640 480 +640 427 +640 640 +427 640 +500 333 +640 400 +428 640 +480 640 +640 480 +480 640 +640 480 +640 427 +400 500 +640 435 +640 427 +360 640 +425 640 +640 480 +375 500 +640 468 +640 480 +640 480 +425 640 +640 480 +640 388 +640 425 +640 427 +500 375 +640 427 +500 447 +640 427 +500 333 +640 477 +640 427 +640 426 +640 457 +428 640 +640 426 +500 400 +640 427 +478 640 +640 424 +640 425 +640 480 +427 640 +640 461 +640 427 +640 480 +640 494 +612 612 +640 629 +640 426 +427 640 +640 427 +426 640 +640 425 +640 427 +640 480 +640 425 +500 375 +640 480 +480 640 +640 427 +640 480 +480 640 +640 427 +480 640 +640 428 +640 480 +640 480 +480 640 +500 383 +640 424 +640 505 +640 480 +640 426 +376 500 +640 427 +640 494 +640 427 +375 500 +500 376 +480 640 +640 425 +640 480 +427 640 +640 442 +640 480 +640 427 +480 640 +640 427 +640 426 +480 640 +640 451 +640 480 +640 423 +640 640 +640 480 +427 640 +428 640 +500 375 +640 480 +640 389 +364 640 +640 482 +500 300 +427 640 +500 400 +640 427 +612 612 +640 359 +640 480 +640 480 +640 512 +640 406 +640 480 +640 480 +333 500 +640 565 +640 480 +375 500 +640 484 +334 500 +609 640 +640 480 +480 640 +640 480 +640 393 +640 480 +640 427 +640 480 +612 612 +640 359 +612 612 +640 360 +640 480 +640 423 +500 375 +640 427 +640 640 +341 500 +400 600 +427 640 +640 402 +394 640 +640 480 +480 640 +640 429 +640 432 +480 640 +640 480 +640 358 +640 427 +640 427 +480 640 +640 428 +640 480 +640 411 +640 480 +640 480 +640 425 +640 480 +640 480 +640 457 +427 640 +640 480 +480 640 +640 569 +480 640 +640 480 +640 427 +640 433 +640 426 +640 427 +500 375 +640 426 +427 640 +500 500 +640 640 +612 612 +640 480 +640 480 +640 478 +500 500 +640 427 +640 480 +427 640 +480 640 +640 426 +640 427 +500 332 +640 427 +640 425 +480 640 +640 451 +375 500 +480 640 +536 640 +640 481 +640 480 +427 640 +478 640 +339 500 +640 360 +640 480 +480 640 +480 640 +640 480 +640 480 +480 640 +438 640 +640 640 +640 640 +640 359 +640 480 +640 480 +640 427 +640 421 +640 428 +480 640 +471 640 +640 338 +640 539 +640 424 +409 500 +428 640 +640 480 +640 437 +500 332 +640 480 +640 434 +640 480 +640 480 +427 640 +427 640 +480 640 +640 427 +640 480 +640 427 +640 625 +640 480 +640 480 +640 480 +376 500 +640 426 +480 640 +640 640 +640 427 +640 427 +500 333 +424 640 +640 427 +480 640 +425 640 +640 480 +480 640 +640 427 +427 640 +640 427 +500 331 +500 331 +640 426 +640 480 +500 375 +640 480 +500 489 +640 414 +640 480 +480 640 +427 640 +334 640 +640 426 +478 640 +500 332 +428 640 +640 480 +640 359 +480 640 +500 333 +640 522 +640 427 +640 480 +560 640 +427 640 +640 480 +640 480 +640 480 +640 457 +500 375 +557 640 +427 640 +500 334 +640 480 +640 426 +640 488 +640 473 +640 425 +640 480 +500 417 +640 480 +425 640 +640 480 +640 426 +480 640 +500 334 +427 640 +640 428 +640 480 +479 640 +640 640 +640 480 +640 424 +500 500 +640 425 +640 427 +640 360 +375 500 +500 334 +640 427 +640 427 +500 400 +480 640 +640 480 +640 604 +640 480 +640 427 +500 281 +640 426 +333 500 +500 375 +640 480 +640 516 +640 427 +640 480 +640 480 +640 480 +480 640 +640 480 +640 480 +480 640 +426 640 +640 480 +535 480 +640 419 +640 480 +640 427 +427 640 +640 428 +604 453 +500 375 +640 427 +640 428 +612 612 +640 428 +428 640 +427 640 +480 640 +640 469 +640 427 +640 480 +612 612 +640 426 +375 500 +640 427 +640 427 +640 480 +500 375 +640 425 +640 359 +640 480 +640 480 +612 612 +640 439 +640 427 +425 640 +640 480 +640 426 +640 501 +480 640 +640 480 +612 612 +640 427 +333 500 +500 368 +640 427 +640 480 +640 428 +640 436 +640 480 +612 612 +640 444 +640 480 +640 360 +425 640 +640 428 +334 500 +640 517 +500 375 +640 494 +640 611 +640 480 +640 422 +640 426 +640 429 +478 640 +480 640 +640 480 +375 500 +640 640 +640 480 +427 640 +640 480 +480 640 +561 640 +500 375 +428 640 +640 281 +640 480 +640 428 +640 427 +480 640 +640 480 +425 640 +375 500 +600 469 +640 480 +640 427 +640 426 +640 427 +640 482 +587 640 +640 427 +640 426 +480 640 +640 491 +640 444 +640 426 +424 640 +640 480 +640 384 +426 640 +640 408 +640 425 +640 406 +640 427 +640 351 +640 425 +480 640 +375 500 +426 640 +640 425 +640 427 +339 500 +640 284 +480 640 +640 427 +480 640 +640 480 +640 479 +335 500 +640 478 +640 426 +375 500 +446 640 +640 429 +640 427 +427 640 +640 425 +640 480 +640 511 +427 640 +500 375 +640 425 +426 640 +640 640 +640 480 +480 640 +640 427 +640 448 +375 500 +427 640 +640 427 +640 480 +480 640 +640 531 +480 640 +640 480 +640 427 +640 480 +640 425 +640 480 +640 260 +640 427 +426 640 +640 427 +640 483 +333 500 +640 425 +640 434 +427 640 +500 378 +500 375 +640 383 +500 375 +480 640 +640 480 +428 640 +640 480 +640 428 +640 427 +640 427 +480 640 +640 494 +640 425 +640 480 +640 427 +640 427 +640 480 +640 480 +500 375 +640 480 +640 428 +640 480 +500 358 +500 375 +612 612 +500 333 +640 464 +500 279 +398 500 +640 429 +500 332 +480 640 +600 400 +500 375 +640 480 +480 640 +478 640 +375 500 +500 375 +640 480 +480 640 +381 500 +586 640 +640 390 +500 334 +640 480 +640 480 +640 424 +640 573 +640 512 +500 375 +640 360 +425 640 +640 480 +490 640 +471 640 +500 375 +640 426 +640 640 +640 480 +640 480 +640 427 +640 480 +640 427 +500 332 +640 480 +500 375 +640 480 +640 427 +640 495 +427 640 +640 480 +640 575 +640 398 +434 640 +640 480 +428 640 +427 640 +640 478 +640 426 +640 428 +500 326 +640 441 +640 418 +427 640 +479 640 +640 480 +612 612 +332 500 +375 500 +480 640 +425 640 +640 480 +500 313 +640 427 +640 426 +640 425 +640 480 +640 428 +427 640 +427 640 +640 480 +640 640 +640 427 +640 428 +640 480 +480 640 +640 427 +640 480 +640 416 +640 480 +640 426 +640 480 +427 640 +640 480 +640 480 +427 640 +428 640 +427 640 +480 640 +640 480 +640 480 +480 640 +640 427 +640 480 +640 480 +640 473 +500 375 +640 528 +427 640 +640 427 +640 427 +640 427 +500 333 +500 500 +426 640 +480 640 +500 375 +500 375 +287 500 +612 612 +640 427 +480 640 +640 480 +473 640 +573 640 +640 427 +480 640 +640 361 +500 333 +500 335 +480 640 +640 478 +640 480 +424 640 +640 428 +640 640 +640 480 +612 612 +640 531 +640 480 +640 480 +640 426 +640 435 +640 424 +640 346 +480 640 +640 427 +640 480 +640 427 +375 500 +640 480 +640 480 +640 480 +640 476 +500 320 +640 428 +640 480 +640 427 +612 612 +640 483 +439 640 +640 431 +500 375 +500 375 +640 480 +640 427 +480 640 +640 424 +640 426 +640 480 +640 436 +478 640 +640 427 +640 480 +640 350 +640 427 +640 427 +640 480 +640 480 +478 640 +640 480 +640 480 +480 640 +640 640 +640 425 +480 640 +640 427 +480 640 +480 640 +640 583 +640 427 +640 480 +640 480 +640 360 +640 480 +640 480 +640 480 +640 480 +640 480 +441 640 +640 480 +612 612 +640 480 +431 640 +640 426 +375 500 +640 481 +500 375 +640 480 +599 640 +640 426 +640 427 +500 300 +640 427 +640 480 +640 380 +500 333 +640 443 +426 640 +640 427 +364 500 +640 480 +640 480 +640 426 +427 640 +640 480 +640 480 +640 480 +424 640 +427 640 +640 480 +640 480 +612 612 +640 480 +640 324 +640 449 +640 329 +640 426 +640 360 +640 480 +500 332 +500 375 +640 480 +640 480 +640 480 +375 500 +640 360 +640 504 +560 640 +480 640 +500 327 +640 426 +640 426 +362 500 +427 640 +500 358 +640 428 +640 425 +640 480 +640 427 +640 351 +640 426 +640 428 +640 429 +640 427 +640 503 +640 427 +640 428 +640 480 +640 427 +640 480 +640 361 +640 360 +640 480 +375 500 +480 640 +640 480 +640 427 +640 428 +640 480 +640 480 +640 359 +640 360 +351 500 +434 640 +640 480 +426 640 +640 427 +640 428 +640 480 +640 427 +640 427 +640 429 +640 426 +640 424 +640 254 +387 604 +640 486 +640 480 +640 480 +640 480 +640 480 +640 480 +480 640 +359 640 +640 480 +480 640 +640 480 +427 640 +612 612 +640 321 +500 500 +640 428 +640 427 +640 480 +640 534 +640 479 +500 375 +640 480 +500 429 +640 428 +500 375 +640 640 +640 640 +640 425 +640 419 +514 597 +640 480 +612 612 +640 479 +640 511 +640 425 +640 427 +400 343 +640 428 +640 426 +640 427 +640 480 +640 426 +640 480 +640 640 +640 480 +640 413 +640 387 +640 426 +428 640 +640 480 +640 427 +640 427 +640 426 +640 480 +640 512 +425 640 +640 424 +640 488 +500 332 +640 426 +640 524 +480 640 +640 480 +500 375 +593 640 +640 427 +640 426 +478 640 +640 427 +408 640 +427 640 +640 480 +640 480 +640 428 +640 428 +640 485 +500 375 +640 480 +480 640 +640 427 +480 640 +640 408 +640 480 +500 399 +480 640 +480 640 +640 424 +640 480 +375 500 +500 375 +640 427 +640 480 +640 170 +640 415 +480 640 +640 402 +500 378 +480 640 +480 640 +500 332 +640 511 +640 427 +640 480 +640 427 +640 421 +640 428 +640 424 +640 388 +640 640 +640 480 +640 427 +640 425 +640 457 +640 427 +480 640 +640 427 +500 375 +640 480 +500 375 +640 428 +500 333 +480 640 +640 512 +480 640 +640 480 +427 640 +640 480 +640 480 +500 333 +640 427 +480 640 +640 428 +640 427 +601 640 +640 480 +500 315 +640 480 +640 425 +640 479 +478 640 +640 478 +612 612 +640 480 +427 640 +480 640 +640 396 +614 461 +640 360 +500 375 +640 400 +640 480 +640 468 +640 427 +480 640 +640 426 +640 480 +640 427 +478 640 +480 640 +640 481 +640 480 +500 375 +640 426 +640 329 +640 427 +640 480 +640 427 +640 480 +640 427 +640 427 +480 640 +640 431 +640 512 +640 428 +640 425 +640 480 +508 640 +480 640 +640 427 +480 640 +640 480 +640 425 +640 480 +640 480 +640 428 +640 425 +640 480 +640 427 +640 480 +640 480 +480 640 +640 431 +612 612 +500 333 +559 640 +640 427 +640 480 +640 480 +612 612 +640 480 +480 640 +640 469 +640 396 +640 480 +640 427 +640 480 +640 425 +640 480 +498 640 +640 318 +640 480 +640 480 +500 375 +484 640 +640 427 +640 640 +640 480 +640 427 +640 426 +640 427 +640 346 +640 427 +640 523 +640 428 +400 640 +500 343 +640 480 +640 425 +640 427 +427 640 +428 640 +375 500 +426 640 +640 426 +640 424 +640 462 +640 480 +375 500 +500 375 +640 328 +480 640 +640 359 +640 463 +640 640 +421 640 +640 480 +427 640 +640 564 +640 478 +640 640 +480 640 +640 427 +480 640 +448 299 +640 359 +612 612 +640 427 +640 480 +640 480 +640 427 +640 396 +640 480 +425 640 +640 480 +365 500 +500 375 +427 640 +480 640 +640 480 +300 351 +640 478 +640 480 +640 439 +640 401 +640 427 +640 427 +640 409 +640 512 +450 300 +500 375 +640 480 +480 640 +480 640 +640 427 +640 428 +500 375 +427 640 +500 400 +640 480 +480 640 +480 640 +640 426 +427 640 +640 426 +640 427 +500 375 +612 612 +375 500 +640 427 +640 486 +500 375 +500 332 +640 464 +640 428 +500 332 +640 640 +640 426 +640 481 +480 640 +640 480 +427 640 +500 375 +640 478 +640 480 +640 640 +640 512 +640 480 +640 427 +640 427 +640 480 +640 427 +640 480 +640 425 +500 332 +640 480 +425 640 +446 640 +614 640 +640 480 +640 480 +426 640 +640 428 +500 363 +640 480 +640 480 +640 428 +640 640 +640 480 +640 480 +640 482 +450 600 +640 424 +640 480 +376 500 +640 480 +480 640 +640 480 +640 427 +427 640 +640 480 +640 478 +640 478 +640 480 +640 479 +640 480 +457 640 +375 500 +428 640 +640 261 +640 400 +640 480 +477 640 +428 640 +640 426 +612 612 +480 640 +640 426 +428 640 +640 427 +640 427 +640 480 +500 500 +500 375 +442 640 +640 429 +640 480 +640 480 +480 640 +640 480 +411 411 +375 500 +640 478 +640 427 +640 480 +427 640 +500 375 +640 480 +427 640 +640 427 +640 480 +640 426 +640 463 +640 480 +640 480 +640 480 +427 640 +640 480 +480 640 +640 426 +500 375 +640 427 +640 480 +640 480 +640 434 +425 640 +640 480 +548 640 +333 500 +640 309 +640 480 +640 427 +640 480 +640 359 +640 480 +480 640 +640 360 +640 427 +480 640 +640 427 +640 480 +640 434 +640 480 +500 375 +640 480 +640 318 +640 427 +480 640 +640 427 +480 640 +408 640 +478 640 +500 356 +640 480 +640 428 +640 427 +640 426 +640 427 +640 427 +640 427 +640 480 +640 458 +640 480 +640 480 +427 640 +427 640 +480 640 +640 429 +640 480 +640 480 +640 427 +640 427 +640 480 +375 500 +375 500 +612 612 +640 428 +640 427 +612 612 +640 427 +640 439 +427 640 +640 427 +640 423 +427 640 +500 438 +446 640 +500 356 +640 427 +640 480 +640 480 +640 433 +640 480 +480 640 +640 427 +640 480 +640 426 +640 480 +640 329 +320 240 +640 512 +640 519 +640 427 +640 425 +640 426 +640 435 +640 426 +640 446 +640 480 +375 500 +640 428 +640 513 +640 425 +640 480 +640 423 +640 600 +480 640 +427 640 +480 640 +632 640 +640 480 +640 480 +640 480 +640 425 +427 640 +500 500 +480 640 +640 426 +640 423 +480 640 +427 640 +640 360 +612 612 +640 480 +640 480 +480 640 +640 441 +426 640 +375 500 +640 439 +640 424 +640 428 +640 480 +480 640 +640 453 +640 480 +640 480 +428 640 +640 427 +480 640 +335 500 +375 500 +427 640 +640 425 +500 333 +500 281 +500 375 +640 427 +640 480 +640 385 +640 431 +640 480 +640 480 +640 480 +425 640 +500 331 +640 426 +500 333 +480 640 +640 427 +640 425 +640 639 +640 480 +640 480 +375 500 +333 500 +640 399 +480 640 +640 429 +640 428 +640 478 +640 426 +480 640 +640 558 +640 427 +640 548 +558 640 +640 480 +427 640 +640 360 +640 428 +640 480 +640 428 +640 360 +480 640 +640 480 +640 480 +616 640 +640 427 +500 375 +423 640 +500 375 +375 500 +640 426 +640 428 +640 427 +427 640 +640 476 +640 360 +640 428 +640 426 +640 426 +640 480 +480 640 +500 375 +640 480 +500 400 +480 640 +640 454 +428 640 +640 421 +640 429 +640 480 +640 427 +640 425 +314 640 +640 480 +640 370 +640 427 +632 640 +640 478 +433 640 +640 480 +640 479 +640 427 +427 640 +500 375 +640 430 +333 500 +640 480 +478 640 +640 480 +640 480 +640 428 +612 612 +500 375 +640 400 +640 412 +640 481 +375 500 +333 500 +425 640 +480 640 +640 480 +640 422 +480 640 +432 640 +640 480 +640 359 +640 479 +427 640 +500 384 +640 480 +640 480 +500 400 +640 426 +640 480 +640 404 +640 478 +500 335 +640 480 +640 480 +640 360 +640 457 +640 518 +640 480 +640 381 +427 640 +640 427 +640 425 +640 427 +640 427 +640 427 +500 375 +480 640 +640 480 +640 480 +640 425 +640 425 +640 427 +500 375 +640 428 +640 480 +582 416 +640 388 +640 480 +500 333 +500 333 +640 512 +480 640 +640 425 +640 426 +640 480 +640 640 +640 428 +640 512 +640 426 +640 480 +500 336 +640 480 +427 640 +500 375 +425 640 +603 640 +427 640 +333 500 +612 612 +500 375 +640 480 +640 480 +640 512 +640 639 +640 500 +375 500 +640 426 +640 480 +640 427 +640 426 +640 480 +428 640 +640 480 +640 480 +474 640 +500 375 +480 640 +640 480 +480 640 +640 426 +640 480 +640 426 +640 427 +612 612 +426 640 +640 424 +375 500 +612 612 +640 427 +640 428 +640 427 +428 640 +399 640 +640 480 +421 640 +429 640 +640 406 +500 375 +500 361 +640 480 +640 481 +640 424 +401 500 +640 480 +640 480 +640 194 +640 554 +640 229 +640 462 +427 640 +480 640 +500 334 +500 375 +375 500 +640 516 +640 427 +640 426 +640 480 +640 480 +640 427 +640 359 +427 640 +640 427 +640 420 +425 640 +514 640 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +500 333 +640 453 +478 640 +640 318 +640 480 +640 480 +640 427 +640 480 +640 480 +500 290 +500 375 +640 480 +640 480 +640 427 +640 410 +337 500 +640 426 +640 480 +612 612 +640 480 +640 480 +640 640 +640 480 +421 640 +640 360 +640 427 +500 375 +500 332 +500 375 +640 480 +640 480 +640 480 +640 480 +640 426 +640 427 +500 375 +400 500 +640 427 +399 640 +640 427 +640 427 +640 480 +640 425 +640 431 +500 333 +640 480 +640 571 +640 640 +640 360 +436 640 +480 640 +640 480 +640 480 +480 640 +612 612 +640 553 +480 640 +640 480 +640 426 +479 640 +640 480 +640 480 +500 375 +427 640 +480 640 +640 518 +640 425 +480 640 +640 306 +640 427 +640 424 +640 427 +640 480 +333 500 +640 427 +640 405 +640 329 +457 640 +640 469 +500 375 +425 640 +436 640 +640 480 +494 500 +437 640 +640 480 +640 451 +640 480 +640 427 +500 281 +612 612 +640 480 +640 480 +640 427 +480 640 +640 460 +480 640 +640 427 +640 480 +640 426 +359 640 +500 380 +640 427 +427 640 +640 425 +640 480 +640 480 +640 480 +640 428 +640 424 +640 383 +480 640 +612 612 +640 427 +640 480 +384 640 +640 436 +640 480 +425 640 +479 640 +427 640 +640 478 +482 640 +640 426 +480 640 +640 480 +640 480 +457 640 +640 480 +640 427 +375 500 +517 640 +307 409 +612 612 +640 428 +640 428 +500 333 +640 503 +640 640 +640 616 +640 600 +640 480 +640 427 +640 480 +640 428 +500 375 +640 425 +640 480 +640 428 +640 478 +640 427 +640 421 +640 480 +640 480 +640 480 +500 375 +640 426 +640 423 +640 477 +640 609 +427 640 +427 640 +640 480 +500 311 +375 500 +480 640 +640 427 +640 427 +469 469 +640 480 +640 427 +500 370 +640 454 +640 480 +640 426 +640 427 +426 640 +427 640 +333 500 +426 640 +640 330 +491 500 +424 500 +640 480 +333 500 +413 450 +640 448 +411 640 +640 426 +410 310 +500 332 +640 424 +640 427 +640 640 +500 375 +410 640 +640 480 +380 500 +640 480 +640 480 +480 640 +640 426 +640 480 +478 640 +640 480 +640 429 +500 364 +640 226 +640 148 +480 640 +640 480 +389 640 +640 428 +640 424 +640 471 +480 640 +640 457 +640 513 +640 427 +480 640 +640 419 +316 500 +500 375 +640 427 +640 480 +640 480 +640 480 +428 640 +640 427 +640 427 +640 480 +500 333 +640 480 +500 333 +640 427 +383 500 +640 465 +640 427 +640 427 +500 375 +640 494 +612 612 +640 480 +640 480 +424 640 +640 480 +640 428 +640 480 +640 480 +640 427 +475 640 +640 566 +640 480 +640 427 +500 400 +640 383 +640 427 +612 612 +480 640 +500 400 +612 612 +640 480 +640 453 +480 640 +500 375 +640 427 +640 480 +640 427 +556 640 +480 640 +640 381 +640 480 +640 427 +640 418 +500 375 +500 281 +480 640 +360 640 +640 402 +640 427 +515 640 +500 500 +640 428 +640 427 +640 427 +640 480 +640 480 +618 640 +640 480 +640 480 +640 393 +640 480 +640 426 +640 640 +540 640 +640 640 +640 427 +500 375 +458 640 +640 427 +640 427 +640 481 +500 433 +426 640 +640 480 +640 416 +640 480 +480 640 +640 454 +500 421 +428 640 +640 480 +640 480 +426 640 +640 264 +459 640 +640 426 +640 444 +375 500 +640 467 +640 428 +500 334 +640 480 +427 640 +640 480 +640 478 +640 480 +426 640 +480 640 +375 500 +426 640 +640 480 +427 640 +427 640 +612 612 +640 436 +640 432 +428 640 +640 480 +480 640 +640 428 +640 480 +640 427 +640 480 +640 360 +424 640 +640 359 +640 480 +640 480 +640 427 +640 480 +640 480 +500 375 +500 375 +600 400 +640 480 +375 500 +640 480 +640 512 +480 640 +427 640 +640 480 +388 640 +640 480 +640 480 +640 427 +640 480 +500 375 +441 640 +478 640 +640 427 +425 640 +612 612 +640 428 +640 480 +640 404 +640 480 +640 480 +419 640 +427 640 +640 523 +640 427 +500 375 +640 427 +375 500 +500 381 +640 480 +640 361 +640 480 +640 480 +640 429 +640 480 +640 480 +500 375 +425 640 +612 612 +640 398 +480 640 +480 640 +600 450 +640 309 +500 403 +640 480 +640 480 +427 640 +480 640 +640 541 +640 478 +537 640 +640 427 +480 640 +640 480 +640 426 +640 360 +427 640 +427 640 +640 429 +427 640 +361 640 +640 427 +500 375 +640 340 +640 480 +640 428 +480 640 +640 334 +640 480 +640 273 +640 426 +640 426 +612 612 +500 375 +427 640 +640 480 +640 433 +640 480 +640 342 +640 457 +640 427 +640 480 +640 541 +480 640 +403 500 +480 640 +500 375 +480 640 +633 640 +640 427 +640 426 +640 424 +640 427 +640 480 +640 436 +640 425 +640 480 +480 640 +428 640 +500 375 +640 480 +360 270 +640 428 +640 361 +640 480 +640 480 +640 231 +640 512 +360 640 +640 603 +640 480 +640 428 +426 640 +640 480 +427 640 +640 427 +302 500 +426 640 +640 427 +640 427 +500 333 +640 427 +640 427 +640 426 +640 341 +500 341 +640 428 +480 640 +640 427 +500 447 +640 554 +640 480 +426 640 +640 480 +640 480 +567 470 +480 640 +640 428 +418 640 +480 640 +640 427 +640 480 +640 480 +640 480 +521 640 +640 480 +427 640 +500 334 +640 480 +640 480 +640 426 +640 480 +640 480 +640 477 +640 382 +480 640 +480 640 +640 429 +640 425 +640 427 +640 526 +500 375 +640 426 +640 427 +476 640 +640 480 +640 461 +375 500 +640 426 +640 480 +640 480 +640 294 +640 359 +469 640 +252 640 +640 427 +640 427 +640 480 +427 640 +500 375 +553 640 +640 450 +640 424 +640 480 +500 375 +426 640 +640 428 +427 640 +334 500 +350 640 +640 498 +500 333 +640 480 +640 480 +640 426 +480 640 +240 320 +640 640 +640 480 +640 427 +640 480 +640 531 +500 375 +480 640 +564 640 +640 480 +640 480 +500 473 +640 425 +640 406 +480 640 +640 480 +640 427 +500 375 +640 480 +480 640 +640 480 +360 640 +640 480 +578 640 +480 640 +640 426 +640 478 +640 427 +640 640 +640 480 +640 480 +480 640 +427 640 +640 427 +500 333 +425 640 +503 640 +375 500 +427 640 +640 427 +427 640 +480 640 +640 424 +640 480 +500 375 +640 427 +640 480 +640 479 +433 640 +640 425 +480 640 +458 640 +640 426 +636 478 +479 640 +640 572 +640 462 +640 425 +480 640 +640 480 +640 480 +640 480 +640 426 +640 480 +640 427 +640 480 +640 501 +640 480 +640 444 +640 457 +640 425 +640 427 +640 428 +640 388 +426 640 +640 424 +640 480 +640 386 +640 427 +333 500 +640 480 +480 640 +493 640 +426 640 +480 640 +640 427 +426 640 +640 480 +640 427 +640 511 +640 427 +640 640 +640 480 +458 640 +427 640 +480 640 +640 345 +640 480 +640 426 +480 640 +640 305 +640 480 +640 427 +640 428 +640 480 +640 427 +640 427 +640 427 +498 640 +500 332 +511 640 +478 640 +640 480 +640 480 +427 640 +640 427 +514 640 +424 640 +640 480 +640 425 +500 333 +640 425 +640 480 +500 375 +640 424 +640 360 +640 480 +640 480 +427 640 +640 480 +640 360 +640 480 +430 640 +640 480 +427 640 +640 480 +640 480 +375 500 +474 640 +640 425 +640 480 +640 593 +640 480 +640 425 +480 640 +640 425 +640 427 +500 375 +640 326 +500 375 +640 480 +640 427 +640 480 +612 612 +640 427 +640 458 +500 334 +640 411 +640 358 +500 375 +428 640 +427 640 +612 612 +480 640 +426 640 +526 640 +333 500 +426 640 +640 457 +500 374 +640 392 +612 612 +640 427 +640 393 +640 480 +480 640 +551 640 +612 612 +640 563 +640 427 +640 480 +640 640 +582 640 +640 480 +288 352 +640 427 +640 417 +640 425 +480 640 +500 375 +640 480 +640 470 +640 480 +640 480 +402 500 +640 428 +640 425 +640 428 +640 427 +427 640 +640 480 +640 480 +478 640 +640 480 +480 640 +480 640 +640 428 +640 453 +640 427 +640 427 +640 424 +500 375 +500 375 +427 640 +640 427 +480 640 +640 480 +640 426 +480 640 +400 600 +640 424 +401 401 +640 480 +500 335 +640 480 +640 480 +428 640 +640 480 +640 640 +640 427 +640 480 +640 450 +640 480 +640 480 +640 422 +612 612 +478 640 +640 429 +480 640 +480 640 +640 399 +640 466 +480 640 +640 427 +640 480 +428 640 +480 640 +640 480 +612 612 +480 640 +640 480 +480 640 +640 614 +640 457 +640 457 +640 425 +640 429 +500 375 +640 480 +333 500 +480 640 +634 640 +480 640 +640 359 +640 427 +640 480 +640 428 +500 375 +640 480 +640 426 +640 424 +640 328 +640 428 +375 500 +427 640 +640 427 +428 640 +640 429 +411 640 +427 640 +480 640 +480 640 +640 427 +640 433 +640 361 +333 500 +640 427 +480 640 +640 428 +427 640 +640 427 +640 427 +640 425 +480 640 +640 428 +640 640 +640 480 +640 426 +640 427 +640 480 +640 640 +640 480 +640 480 +612 612 +427 640 +375 500 +500 495 +640 411 +478 640 +612 612 +500 375 +640 480 +640 379 +640 426 +640 480 +480 640 +640 480 +640 479 +426 640 +480 640 +480 640 +640 424 +640 428 +640 425 +640 426 +640 480 +640 425 +427 640 +640 399 +640 423 +640 428 +640 427 +640 480 +640 430 +640 450 +640 480 +480 640 +640 427 +640 457 +640 480 +640 480 +480 640 +640 480 +640 480 +640 426 +640 426 +640 480 +640 421 +640 504 +640 427 +473 640 +640 480 +640 480 +640 480 +640 427 +427 640 +640 423 +500 398 +640 427 +640 427 +640 480 +500 386 +640 426 +640 480 +640 480 +640 428 +427 640 +640 461 +427 640 +640 427 +480 640 +480 640 +500 334 +640 427 +594 640 +488 640 +640 480 +400 604 +640 426 +500 334 +411 640 +640 482 +425 640 +640 359 +640 427 +480 640 +426 640 +640 443 +640 480 +640 445 +427 640 +640 425 +640 464 +427 640 +500 375 +640 480 +640 490 +640 480 +640 509 +640 360 +640 429 +640 639 +425 640 +640 427 +640 429 +640 360 +640 427 +500 375 +640 427 +640 480 +333 500 +640 480 +500 375 +640 480 +640 480 +500 334 +500 382 +557 640 +640 360 +640 427 +427 640 +640 425 +640 480 +640 478 +640 480 +500 461 +640 458 +640 426 +640 387 +640 427 +640 501 +640 480 +500 334 +640 426 +500 333 +640 425 +480 640 +375 500 +480 640 +640 427 +640 480 +640 417 +640 480 +500 375 +640 428 +426 640 +640 456 +640 429 +333 500 +612 612 +500 333 +640 427 +428 640 +331 500 +640 512 +427 640 +640 428 +640 480 +640 509 +640 427 +640 427 +500 333 +427 640 +640 481 +480 640 +480 640 +640 427 +409 640 +640 426 +426 640 +640 428 +640 480 +640 359 +640 427 +500 375 +640 476 +612 612 +425 640 +640 480 +640 480 +640 480 +640 480 +480 640 +640 359 +453 640 +600 422 +203 179 +640 427 +640 426 +640 463 +640 426 +640 425 +480 640 +480 640 +316 425 +640 469 +640 359 +457 640 +640 427 +640 640 +332 500 +640 480 +500 423 +500 500 +640 426 +415 640 +640 428 +640 480 +640 640 +538 640 +640 480 +640 427 +640 480 +500 352 +640 480 +640 436 +500 375 +640 425 +640 457 +400 400 +640 427 +640 427 +480 640 +427 640 +640 480 +486 640 +640 427 +480 640 +640 427 +640 427 +425 640 +640 359 +500 375 +640 480 +640 478 +480 640 +640 480 +640 480 +640 480 +640 298 +640 491 +640 480 +428 640 +640 359 +640 360 +427 640 +428 640 +640 480 +478 640 +478 640 +427 640 +640 480 +640 480 +640 425 +338 500 +500 375 +500 281 +640 480 +480 640 +640 427 +640 513 +428 640 +375 500 +500 375 +612 612 +640 422 +426 640 +425 640 +500 375 +537 640 +640 480 +640 480 +640 480 +427 640 +640 427 +612 612 +640 480 +640 450 +640 457 +640 480 +334 500 +480 640 +640 427 +640 480 +350 350 +427 640 +640 427 +640 427 +500 346 +640 480 +319 500 +336 500 +640 427 +612 612 +640 480 +640 480 +480 640 +527 640 +333 500 +640 512 +500 375 +500 375 +320 240 +640 480 +480 640 +640 480 +480 640 +640 428 +640 480 +480 640 +640 427 +640 423 +640 480 +640 480 +428 640 +640 480 +500 333 +640 480 +427 640 +427 640 +640 480 +640 481 +640 480 +640 427 +640 425 +406 640 +640 164 +640 480 +640 640 +640 428 +500 375 +500 375 +640 408 +640 480 +640 381 +640 425 +480 640 +427 640 +400 500 +640 425 +640 426 +333 500 +426 640 +480 640 +480 640 +640 480 +640 480 +640 425 +640 428 +640 427 +480 640 +640 480 +640 427 +640 424 +640 426 +640 478 +640 427 +426 640 +500 375 +640 480 +640 459 +640 428 +500 375 +640 426 +640 640 +427 640 +640 404 +640 426 +640 425 +360 640 +640 480 +640 426 +640 361 +500 375 +640 480 +640 480 +383 640 +640 427 +500 375 +480 640 +640 480 +640 480 +480 640 +640 428 +640 480 +640 480 +500 343 +640 426 +640 480 +424 640 +640 446 +426 640 +640 480 +600 399 +427 640 +300 225 +480 640 +363 640 +640 480 +640 434 +398 640 +640 426 +640 428 +480 640 +500 334 +425 640 +640 480 +640 427 +640 480 +480 640 +640 480 +640 480 +480 640 +640 428 +640 427 +640 427 +480 640 +640 480 +480 640 +427 640 +640 496 +480 640 +640 512 +640 480 +640 433 +640 427 +640 427 +426 640 +427 640 +352 288 +640 426 +640 427 +500 375 +640 426 +640 480 +640 427 +640 425 +427 640 +640 480 +640 426 +640 480 +500 434 +640 480 +640 426 +426 640 +375 500 +406 500 +427 640 +640 467 +476 640 +421 640 +640 480 +640 427 +500 375 +448 640 +640 480 +640 426 +640 418 +640 480 +500 375 +640 448 +427 640 +480 640 +640 373 +640 426 +640 443 +428 640 +640 466 +640 480 +640 480 +480 640 +640 480 +640 480 +640 480 +640 480 +640 427 +640 480 +640 427 +640 428 +600 450 +640 429 +375 500 +640 428 +426 640 +640 427 +640 512 +640 426 +640 480 +500 318 +640 428 +500 375 +500 376 +640 480 +640 427 +640 428 +448 336 +640 480 +640 480 +640 443 +640 480 +500 333 +500 333 +640 480 +422 640 +640 479 +500 333 +640 479 +640 480 +640 640 +640 425 +480 640 +640 425 +640 480 +441 640 +500 333 +640 570 +500 375 +640 429 +480 640 +640 481 +640 386 +640 437 +640 480 +640 428 +640 480 +640 425 +640 427 +640 320 +500 356 +500 286 +640 426 +427 640 +640 480 +640 480 +427 640 +640 480 +640 427 +628 640 +480 640 +640 427 +426 640 +640 480 +612 612 +640 480 +480 640 +640 639 +480 640 +375 500 +375 500 +640 480 +640 429 +640 426 +500 343 +640 480 +640 425 +426 640 +640 427 +640 480 +426 640 +500 375 +640 425 +640 427 +640 427 +434 296 +640 426 +612 612 +500 375 +640 480 +640 480 +640 426 +480 640 +640 480 +640 427 +640 546 +478 640 +640 480 +640 480 +480 640 +612 612 +640 427 +640 427 +640 480 +640 489 +500 333 +640 440 +640 427 +427 640 +640 426 +640 480 +640 427 +640 639 +640 480 +500 350 +467 640 +640 427 +426 640 +446 640 +640 481 +480 640 +640 426 +640 510 +640 480 +477 640 +640 427 +612 612 +640 480 +640 512 +640 480 +640 429 +640 427 +640 428 +509 640 +429 640 +640 299 +640 480 +640 480 +500 332 +640 480 +500 400 +640 401 +640 480 +640 480 +640 427 +640 480 +640 480 +640 538 +334 500 +480 640 +640 480 +640 424 +500 334 +640 480 +362 640 +640 360 +640 501 +640 457 +640 426 +640 428 +480 640 +640 425 +515 640 +640 480 +640 426 +640 480 +480 640 +640 429 +640 429 +480 640 +640 480 +640 480 +640 480 +500 375 +640 339 +640 372 +500 333 +640 480 +500 375 +427 640 +640 480 +369 520 +640 427 +640 480 +427 640 +500 334 +640 480 +640 480 +500 332 +640 480 +500 375 +640 428 +640 427 +640 480 +640 426 +640 480 +640 460 +640 480 +458 640 +640 480 +640 640 +640 387 +640 480 +640 428 +640 428 +640 480 +640 426 +640 480 +640 425 +640 379 +480 640 +427 640 +640 480 +640 427 +612 612 +640 276 +640 480 +640 426 +640 427 +640 427 +465 640 +640 480 +400 500 +640 476 +640 428 +640 480 +640 446 +640 480 +640 480 +376 500 +640 427 +640 427 +640 426 +500 333 +640 480 +500 375 +640 406 +640 361 +640 478 +612 612 +640 310 +500 496 +640 426 +640 427 +640 359 +640 480 +640 427 +640 480 +480 640 +640 360 +640 425 +604 453 +640 421 +500 354 +500 375 +640 467 +640 480 +500 335 +425 640 +640 427 +640 427 +480 640 +640 413 +640 427 +640 480 +640 518 +640 480 +640 427 +640 336 +640 480 +640 427 +427 640 +640 640 +566 640 +480 640 +500 346 +640 480 +480 640 +480 640 +427 640 +640 425 +426 640 +640 559 +640 480 +500 342 +500 500 +640 448 +640 380 +640 424 +426 640 +640 427 +640 427 +640 427 +640 427 +500 419 +480 640 +480 640 +640 427 +640 480 +640 427 +640 425 +640 427 +640 427 +500 333 +375 500 +640 480 +640 480 +640 434 +640 480 +426 640 +375 500 +612 612 +480 640 +640 427 +640 427 +480 640 +640 426 +640 427 +640 360 +640 480 +640 427 +640 427 +640 480 +600 402 +640 428 +428 640 +640 512 +640 428 +408 500 +640 480 +640 480 +640 427 +500 375 +426 640 +640 640 +480 640 +480 640 +640 360 +640 427 +640 427 +640 426 +640 424 +480 640 +640 433 +360 480 +500 375 +640 479 +640 480 +427 640 +640 480 +640 457 +640 640 +640 490 +500 333 +446 640 +640 480 +640 567 +640 480 +640 404 +640 427 +640 478 +640 426 +500 441 +357 640 +640 429 +640 425 +640 427 +640 427 +612 612 +640 480 +360 640 +640 424 +640 386 +640 480 +640 480 +500 335 +640 480 +640 484 +457 640 +640 436 +480 360 +640 427 +427 640 +500 375 +640 439 +640 427 +479 640 +640 427 +640 512 +354 500 +640 457 +500 375 +418 640 +480 640 +640 480 +427 640 +480 640 +640 360 +480 640 +612 612 +612 612 +375 500 +500 333 +640 428 +500 338 +640 480 +640 480 +640 480 +626 476 +448 640 +375 500 +640 360 +360 360 +640 425 +640 427 +640 426 +640 427 +640 428 +640 480 +480 640 +640 480 +640 427 +480 640 +640 480 +640 479 +640 480 +427 640 +375 500 +640 480 +612 612 +478 640 +640 313 +640 424 +373 640 +480 640 +640 480 +480 640 +640 480 +640 480 +640 427 +640 573 +640 427 +640 480 +640 435 +288 352 +640 480 +640 451 +548 640 +375 500 +640 428 +640 480 +640 476 +383 640 +640 360 +640 478 +640 480 +640 480 +640 426 +612 612 +640 328 +640 480 +480 640 +427 640 +640 403 +400 435 +640 480 +375 500 +640 480 +640 427 +480 640 +640 640 +640 424 +640 428 +480 640 +640 360 +426 640 +612 612 +375 500 +640 480 +640 444 +478 640 +480 640 +500 375 +426 640 +640 425 +640 480 +640 479 +640 429 +640 427 +640 426 +557 640 +640 480 +640 447 +640 480 +426 640 +500 375 +640 427 +640 616 +426 640 +500 332 +640 427 +640 480 +640 480 +428 640 +640 480 +500 405 +480 640 +640 502 +426 640 +640 480 +640 480 +640 424 +640 480 +640 480 +428 640 +640 425 +424 640 +380 285 +640 427 +640 480 +640 427 +427 640 +640 429 +640 480 +640 480 +427 640 +458 640 +537 640 +640 427 +640 640 +408 640 +640 467 +640 598 +375 500 +640 480 +640 480 +229 350 +640 480 +640 426 +480 640 +640 480 +375 500 +640 297 +640 480 +640 483 +640 428 +640 427 +612 612 +500 375 +640 426 +640 480 +640 427 +640 480 +480 640 +640 480 +500 375 +640 482 +640 427 +640 572 +640 516 +640 427 +640 427 +640 481 +640 480 +640 414 +640 427 +640 440 +640 480 +640 480 +500 320 +640 383 +640 354 +480 640 +640 427 +480 640 +640 480 +640 480 +640 480 +640 427 +473 640 +640 359 +640 480 +640 425 +500 334 +553 640 +560 640 +426 640 +640 480 +500 375 +640 480 +480 640 +640 444 +640 480 +640 480 +640 480 +413 640 +640 485 +332 500 +500 273 +375 500 +617 640 +640 480 +640 480 +500 375 +640 427 +500 375 +480 640 +640 425 +425 640 +409 640 +640 426 +640 480 +500 375 +640 480 +500 375 +640 427 +640 480 +334 500 +640 481 +640 445 +360 640 +500 375 +640 427 +640 480 +640 425 +480 640 +640 427 +372 464 +480 640 +640 428 +500 375 +500 375 +640 429 +469 640 +640 426 +500 375 +612 612 +640 427 +640 427 +640 480 +612 612 +640 427 +640 427 +640 361 +500 375 +640 427 +320 240 +640 362 +640 480 +640 428 +640 480 +640 429 +640 426 +640 480 +640 480 +640 480 +640 480 +500 359 +640 480 +480 640 +640 480 +640 480 +426 640 +461 640 +640 427 +427 640 +640 479 +640 480 +640 427 +426 640 +640 427 +333 500 +640 360 +612 612 +480 640 +640 428 +640 480 +640 427 +640 480 +640 429 +640 427 +640 303 +640 480 +500 375 +640 480 +640 424 +640 480 +640 480 +640 622 +640 480 +640 480 +640 480 +640 427 +375 500 +612 612 +332 500 +600 400 +427 640 +640 433 +640 480 +480 640 +350 500 +500 500 +480 640 +480 640 +612 612 +423 640 +640 427 +424 640 +478 640 +640 426 +640 427 +480 640 +422 640 +640 427 +500 333 +640 427 +640 425 +640 480 +500 375 +346 504 +640 480 +640 441 +500 342 +457 640 +640 426 +640 426 +640 480 +640 569 +426 640 +640 427 +640 438 +640 427 +640 429 +640 480 +640 427 +422 640 +503 640 +640 551 +640 573 +640 480 +640 463 +640 427 +426 640 +640 480 +500 334 +640 480 +640 480 +640 480 +427 640 +640 480 +640 446 +424 640 +640 428 +612 612 +612 612 +640 478 +640 428 +640 501 +640 427 +480 640 +640 425 +500 401 +640 427 +640 429 +640 429 +451 640 +640 427 +480 640 +500 333 +333 500 +640 424 +640 427 +500 500 +640 427 +480 640 +640 426 +480 640 +427 640 +612 612 +640 427 +640 480 +500 334 +480 640 +640 426 +640 428 +640 480 +500 375 +640 480 +640 426 +640 425 +424 640 +640 480 +640 425 +640 427 +640 493 +500 367 +375 500 +640 374 +640 480 +333 500 +480 640 +640 430 +640 480 +640 427 +500 375 +500 375 +640 381 +640 427 +640 480 +640 424 +480 640 +640 425 +640 427 +640 466 +640 480 +500 333 +640 480 +640 427 +640 428 +640 510 +640 427 +359 640 +426 640 +335 500 +425 640 +640 479 +480 640 +500 346 +640 427 +640 320 +500 334 +498 640 +500 400 +480 640 +500 375 +640 480 +500 375 +640 427 +640 480 +480 640 +640 480 +640 427 +640 186 +640 427 +640 427 +480 640 +640 426 +640 479 +480 640 +640 480 +640 429 +640 427 +640 427 +500 333 +640 427 +429 640 +640 480 +480 640 +375 500 +640 427 +640 480 +426 640 +385 308 +640 427 +640 480 +500 375 +640 478 +640 427 +640 427 +480 640 +500 375 +640 427 +640 360 +640 480 +640 427 +640 480 +640 427 +640 390 +640 427 +457 640 +500 500 +500 375 +359 640 +500 375 +640 431 +600 400 +640 509 +428 640 +427 640 +427 640 +640 428 +640 425 +612 612 +640 424 +375 500 +335 500 +640 425 +640 480 +500 405 +640 426 +640 480 +640 564 +640 427 +480 640 +408 500 +640 480 +640 640 +640 480 +640 480 +640 513 +640 480 +474 640 +640 427 +500 322 +508 640 +640 439 +425 640 +427 640 +640 480 +500 375 +320 240 +640 480 +332 500 +640 427 +640 426 +480 640 +640 427 +640 427 +640 512 +640 478 +640 480 +640 480 +640 427 +500 375 +640 480 +500 375 +425 640 +640 605 +640 480 +640 538 +640 360 +427 640 +334 500 +480 640 +640 425 +427 640 +640 426 +640 428 +640 640 +640 427 +640 480 +640 478 +640 424 +640 480 +640 425 +469 640 +426 640 +500 288 +640 359 +640 366 +640 427 +640 482 +640 428 +640 263 +640 427 +640 426 +640 479 +640 480 +328 500 +640 480 +480 640 +480 640 +640 427 +612 612 +634 640 +640 426 +478 640 +439 500 +640 426 +640 480 +640 460 +640 640 +346 500 +428 640 +500 375 +640 480 +640 480 +478 640 +640 468 +640 426 +500 333 +480 640 +640 381 +640 426 +640 480 +640 478 +640 426 +640 480 +640 428 +480 640 +640 480 +640 480 +335 500 +640 427 +640 425 +640 480 +640 418 +500 375 +640 640 +640 378 +640 443 +480 640 +480 640 +640 480 +640 480 +640 383 +640 427 +518 640 +640 627 +500 228 +640 426 +640 426 +427 640 +640 480 +612 612 +640 470 +640 480 +600 600 +640 480 +640 425 +640 480 +640 480 +640 480 +500 375 +480 640 +640 480 +640 482 +225 640 +428 640 +439 640 +640 480 +400 300 +489 640 +640 427 +640 204 +640 427 +640 396 +500 333 +640 481 +640 428 +640 428 +640 424 +500 375 +451 298 +640 425 +640 428 +500 375 +640 480 +500 375 +640 426 +474 640 +640 425 +640 424 +364 640 +500 333 +640 606 +427 640 +640 427 +497 640 +457 640 +640 427 +640 427 +640 427 +480 640 +640 480 +640 486 +640 427 +640 426 +640 433 +640 471 +479 640 +640 427 +640 426 +480 640 +640 480 +500 375 +375 500 +640 480 +640 480 +396 500 +500 375 +640 480 +640 480 +480 640 +640 427 +640 360 +429 640 +640 427 +640 427 +640 431 +612 612 +640 480 +640 429 +640 434 +500 333 +500 367 +640 480 +427 640 +427 640 +640 428 +480 640 +500 333 +640 427 +640 480 +640 259 +640 480 +640 428 +640 463 +640 426 +640 427 +375 500 +640 480 +584 640 +500 375 +640 640 +640 427 +640 480 +640 426 +480 640 +640 480 +480 640 +640 480 +426 640 +425 640 +640 426 +640 480 +640 427 +478 640 +640 484 +437 640 +640 427 +640 428 +500 333 +500 375 +640 453 +640 427 +480 640 +640 428 +640 427 +640 500 +480 640 +427 640 +500 375 +640 427 +640 480 +640 427 +500 332 +500 375 +502 640 +640 640 +640 425 +640 360 +640 426 +640 499 +640 359 +640 428 +640 480 +640 480 +640 251 +640 480 +640 427 +640 480 +640 427 +375 500 +480 640 +640 480 +640 480 +517 640 +640 480 +480 640 +612 612 +480 640 +640 424 +640 480 +640 480 +640 421 +427 640 +640 427 +640 480 +640 427 +640 387 +480 640 +640 407 +640 360 +640 439 +640 404 +640 482 +640 480 +427 640 +640 427 +640 480 +375 500 +640 428 +640 480 +640 391 +480 640 +640 480 +640 480 +640 427 +612 612 +640 480 +640 428 +400 325 +458 640 +640 442 +640 428 +427 640 +632 640 +640 622 +640 429 +427 640 +640 480 +427 640 +640 428 +548 411 +640 426 +484 640 +640 426 +640 480 +640 480 +514 640 +500 333 +500 500 +640 627 +424 640 +444 640 +640 426 +640 424 +640 427 +640 480 +640 426 +640 480 +480 640 +640 480 +333 500 +640 480 +640 480 +376 500 +640 426 +427 640 +640 426 +500 375 +429 640 +480 640 +640 480 +640 457 +640 374 +640 480 +640 480 +500 377 +640 373 +640 480 +500 375 +640 360 +640 485 +640 640 +640 480 +640 480 +333 500 +640 426 +640 426 +640 451 +640 480 +640 444 +640 523 +480 640 +480 640 +640 480 +375 500 +458 640 +480 640 +500 375 +640 426 +640 457 +640 480 +375 500 +640 418 +640 427 +640 434 +640 428 +640 425 +640 436 +640 426 +640 319 +640 480 +500 375 +640 427 +640 427 +500 332 +640 427 +375 500 +640 480 +640 495 +640 361 +478 640 +480 640 +640 424 +640 384 +612 612 +640 426 +640 480 +500 500 +640 356 +480 640 +426 640 +640 640 +500 375 +640 360 +640 478 +480 640 +640 480 +425 640 +640 423 +480 640 +480 640 +640 480 +640 427 +640 464 +483 640 +480 640 +640 359 +612 612 +640 531 +640 396 +640 427 +640 480 +640 480 +500 352 +640 480 +640 427 +640 480 +640 541 +640 427 +640 427 +480 640 +640 427 +640 427 +427 640 +640 555 +640 480 +640 426 +640 428 +424 640 +500 333 +640 426 +640 427 +512 640 +640 360 +640 427 +427 640 +500 198 +640 480 +375 500 +480 640 +640 426 +640 480 +640 428 +640 459 +640 427 +640 426 +640 480 +640 391 +640 480 +640 428 +640 480 +640 427 +480 640 +640 427 +640 427 +640 427 +640 478 +640 426 +640 480 +320 240 +480 640 +427 640 +640 480 +640 453 +640 428 +480 640 +480 640 +640 426 +640 478 +640 480 +640 480 +640 432 +640 483 +640 361 +640 427 +480 640 +480 640 +500 374 +640 480 +640 480 +640 359 +640 360 +480 640 +427 640 +430 640 +640 427 +640 408 +480 640 +333 500 +640 480 +428 640 +480 640 +640 427 +425 640 +640 480 +640 480 +375 500 +500 362 +332 500 +375 500 +640 400 +640 454 +435 640 +334 500 +424 640 +640 480 +500 375 +480 640 +640 424 +640 480 +640 427 +640 640 +640 378 +640 427 +640 480 +500 406 +640 360 +640 360 +424 640 +427 640 +640 427 +640 480 +640 427 +640 480 +640 458 +640 425 +640 459 +640 480 +640 480 +640 480 +480 640 +640 426 +640 480 +640 427 +640 426 +640 400 +640 480 +640 480 +640 427 +640 513 +500 361 +639 640 +481 640 +640 427 +640 425 +640 426 +500 308 +640 480 +640 458 +640 428 +612 612 +452 640 +640 426 +480 640 +511 640 +640 426 +640 480 +427 640 +640 480 +500 328 +640 480 +640 480 +383 640 +640 480 +500 330 +640 427 +500 375 +640 427 +500 332 +428 640 +640 502 +640 425 +640 426 +500 375 +640 480 +640 388 +640 427 +427 640 +639 640 +640 640 +640 427 +640 431 +640 480 +640 426 +640 428 +480 640 +640 426 +640 427 +500 375 +640 640 +640 475 +640 412 +640 428 +500 333 +640 480 +640 512 +375 500 +454 640 +500 371 +640 427 +640 425 +640 480 +640 640 +640 640 +640 360 +640 426 +640 426 +640 480 +612 612 +480 640 +640 428 +640 360 +640 480 +375 500 +478 640 +640 427 +640 480 +427 640 +360 640 +600 400 +612 612 +640 480 +640 482 +640 424 +640 480 +640 480 +640 340 +640 426 +640 427 +427 640 +640 427 +640 480 +480 640 +640 428 +495 640 +640 480 +640 480 +480 640 +640 480 +640 480 +480 640 +640 425 +640 427 +640 480 +427 640 +640 428 +640 640 +640 425 +480 640 +640 427 +640 480 +640 427 +640 512 +500 375 +640 427 +640 480 +640 412 +436 640 +640 426 +500 375 +640 428 +640 640 +640 360 +640 427 +640 480 +640 428 +640 427 +500 375 +640 480 +640 427 +640 480 +640 304 +500 375 +427 640 +640 428 +640 480 +640 481 +428 640 +480 640 +640 458 +500 375 +640 480 +640 480 +640 383 +640 425 +500 375 +640 426 +640 480 +640 427 +640 427 +427 640 +640 480 +640 480 +640 480 +640 640 +480 640 +640 426 +640 480 +640 483 +640 360 +640 478 +640 427 +640 424 +612 612 +640 481 +640 480 +640 426 +480 640 +640 426 +480 640 +640 428 +640 480 +375 500 +480 640 +640 480 +500 370 +640 480 +640 427 +500 368 +500 375 +640 543 +427 640 +500 361 +498 640 +640 427 +640 480 +500 356 +640 480 +640 462 +640 480 +480 640 +640 480 +640 480 +385 289 +640 480 +500 333 +478 640 +640 480 +640 383 +640 481 +640 457 +640 443 +640 425 +480 640 +640 480 +640 426 +640 480 +640 428 +480 640 +500 375 +500 375 +640 425 +640 361 +640 427 +640 480 +640 480 +500 400 +640 427 +640 478 +640 427 +640 427 +500 333 +640 421 +500 375 +640 425 +640 423 +480 640 +480 640 +500 375 +640 480 +640 399 +335 500 +640 480 +640 424 +427 640 +640 427 +640 480 +640 425 +335 500 +640 426 +640 426 +640 426 +640 480 +640 384 +640 374 +426 640 +333 500 +500 375 +480 640 +640 337 +640 459 +640 480 +640 358 +640 480 +629 640 +427 640 +640 426 +640 458 +640 640 +563 640 +640 497 +640 480 +480 640 +640 413 +640 426 +500 376 +640 427 +640 640 +426 640 +480 640 +640 480 +640 428 +640 426 +426 640 +480 640 +427 640 +640 480 +429 640 +480 640 +640 512 +427 640 +640 368 +640 480 +640 480 +640 480 +640 480 +640 428 +640 429 +640 426 +612 612 +640 480 +427 640 +480 640 +640 427 +640 360 +640 426 +640 480 +500 346 +640 621 +640 360 +640 480 +640 428 +640 399 +500 375 +640 480 +480 640 +640 475 +500 333 +640 424 +500 400 +640 360 +495 640 +640 484 +640 427 +640 427 +500 334 +640 480 +500 398 +640 449 +640 480 +501 640 +500 334 +640 427 +640 439 +640 427 +640 427 +640 480 +580 640 +640 480 +480 640 +640 360 +428 640 +513 640 +640 427 +640 480 +440 640 +640 427 +562 640 +640 427 +640 480 +500 375 +426 640 +640 427 +640 427 +640 416 +640 425 +640 512 +500 375 +478 640 +521 640 +500 375 +640 433 +640 513 +640 428 +640 383 +640 427 +640 454 +640 427 +640 483 +640 426 +458 640 +640 480 +640 480 +640 428 +612 612 +564 640 +640 480 +500 333 +640 424 +640 426 +509 640 +640 425 +427 640 +640 341 +500 375 +457 640 +480 640 +640 428 +500 334 +640 480 +480 640 +640 429 +640 425 +428 640 +500 333 +480 640 +404 640 +640 480 +640 480 +640 426 +640 502 +640 425 +527 640 +640 425 +640 427 +427 640 +640 428 +425 640 +640 434 +640 480 +640 480 +640 427 +640 424 +640 480 +640 440 +640 439 +640 424 +640 360 +640 427 +640 480 +640 480 +640 424 +478 640 +640 481 +640 426 +640 480 +640 480 +500 496 +640 373 +640 439 +640 310 +640 640 +500 393 +640 428 +640 478 +640 424 +640 480 +640 480 +640 427 +500 334 +640 426 +500 453 +516 640 +640 488 +500 375 +640 424 +640 427 +640 480 +333 500 +640 366 +640 425 +425 640 +500 333 +581 640 +427 640 +480 640 +640 480 +640 363 +612 612 +640 427 +640 480 +640 480 +640 480 +428 640 +640 360 +640 458 +640 400 +640 427 +304 500 +640 480 +500 375 +640 436 +640 425 +427 640 +640 480 +640 427 +640 463 +554 640 +500 344 +375 500 +500 500 +640 480 +500 375 +500 333 +640 433 +640 464 +426 640 +640 512 +480 640 +500 375 +640 554 +640 427 +640 469 +640 480 +640 512 +374 500 +480 640 +263 500 +640 427 +426 640 +609 640 +640 427 +640 360 +640 480 +640 480 +480 640 +640 512 +640 451 +640 480 +640 480 +426 640 +640 480 +640 457 +640 441 +612 612 +577 640 +640 480 +333 500 +640 427 +640 480 +640 425 +512 640 +640 512 +612 612 +640 360 +480 640 +640 480 +424 640 +640 480 +640 428 +640 427 +500 375 +423 640 +640 480 +640 480 +375 500 +640 501 +500 331 +640 425 +612 612 +640 640 +428 640 +500 375 +640 427 +640 441 +500 375 +640 480 +640 481 +425 640 +480 640 +640 425 +640 480 +640 480 +640 480 +480 640 +640 360 +640 480 +432 287 +640 427 +357 500 +640 427 +500 375 +457 640 +640 401 +640 426 +412 200 +427 640 +640 479 +612 612 +375 500 +478 640 +612 612 +640 423 +640 396 +500 333 +640 351 +500 333 +640 428 +500 375 +640 427 +640 434 +500 375 +640 428 +640 427 +346 500 +480 640 +608 640 +640 501 +640 480 +640 480 +640 480 +480 640 +640 392 +375 500 +640 427 +640 427 +480 640 +640 640 +460 640 +640 428 +500 455 +640 425 +640 427 +640 480 +640 480 +640 480 +640 465 +640 428 +500 375 +500 281 +640 427 +640 424 +612 612 +640 429 +500 416 +584 414 +480 640 +640 459 +640 426 +497 640 +425 640 +480 640 +640 427 +640 427 +640 360 +640 480 +426 640 +640 480 +640 427 +640 427 +480 640 +640 338 +640 480 +427 640 +640 424 +427 640 +480 640 +424 640 +480 640 +640 427 +640 480 +640 422 +640 458 +640 427 +640 480 +640 480 +612 612 +640 480 +640 428 +640 480 +640 364 +375 500 +640 640 +640 426 +480 640 +640 480 +640 481 +640 480 +640 480 +640 480 +640 534 +640 480 +640 426 +640 480 +640 480 +500 354 +640 425 +640 426 +427 640 +640 480 +640 480 +640 480 +640 480 +640 425 +478 640 +427 640 +640 573 +479 640 +640 480 +640 480 +640 360 +640 480 +640 441 +480 640 +500 333 +480 640 +480 640 +640 480 +640 427 +640 479 +640 399 +640 425 +640 493 +640 425 +480 640 +480 640 +400 533 +640 589 +640 480 +640 505 +640 426 +500 375 +640 426 +640 425 +375 500 +500 370 +385 289 +640 480 +640 427 +640 427 +640 480 +640 480 +640 480 +416 640 +500 375 +640 360 +640 480 +640 640 +480 640 +640 428 +640 457 +375 500 +640 480 +640 480 +612 612 +640 427 +640 480 +480 640 +640 481 +640 418 +640 415 +500 438 +640 431 +640 480 +640 428 +640 480 +640 480 +335 500 +640 480 +640 480 +640 427 +640 428 +640 478 +500 375 +640 480 +640 480 +640 416 +640 425 +640 427 +500 313 +640 464 +640 428 +640 480 +640 426 +640 486 +640 480 +640 480 +640 427 +276 500 +640 480 +457 640 +640 482 +640 428 +480 640 +500 374 +500 376 +500 332 +640 359 +393 500 +500 332 +458 640 +478 640 +640 478 +640 480 +640 399 +640 428 +436 640 +524 640 +640 480 +450 450 +640 427 +640 427 +640 426 +640 480 +640 480 +640 424 +428 640 +640 424 +450 600 +480 640 +640 320 +640 425 +350 500 +472 640 +640 640 +480 640 +640 514 +640 480 +640 603 +640 583 +568 320 +640 427 +500 400 +480 640 +640 427 +600 400 +612 612 +640 480 +640 480 +424 640 +640 389 +640 426 +480 640 +480 640 +640 480 +640 480 +640 406 +500 334 +640 480 +428 640 +640 438 +640 480 +550 640 +640 426 +500 332 +500 381 +640 424 +308 300 +640 472 +640 480 +375 500 +428 640 +640 427 +640 480 +612 612 +640 428 +427 640 +500 264 +480 640 +640 480 +640 427 +640 439 +500 335 +375 500 +381 500 +500 333 +640 425 +500 375 +640 480 +500 340 +640 480 +640 480 +640 480 +334 500 +640 472 +480 640 +640 425 +427 640 +640 426 +640 459 +640 480 +376 500 +500 375 +500 387 +411 640 +640 426 +427 640 +375 500 +480 640 +432 640 +640 480 +429 640 +500 375 +640 427 +566 640 +640 480 +640 480 +640 480 +500 333 +640 480 +640 480 +640 427 +640 473 +480 640 +640 427 +640 426 +640 640 +640 427 +640 640 +640 425 +640 478 +333 500 +640 480 +640 426 +640 621 +427 640 +640 429 +640 427 +466 640 +480 640 +640 425 +334 500 +427 640 +640 457 +427 640 +375 500 +640 423 +600 400 +640 427 +500 333 +375 500 +612 612 +427 640 +426 640 +640 480 +640 409 +640 480 +341 500 +640 426 +640 420 +383 640 +640 428 +640 480 +640 316 +640 427 +640 480 +640 480 +640 427 +480 640 +640 360 +500 353 +425 640 +640 480 +640 480 +640 427 +640 425 +375 500 +640 480 +640 427 +640 424 +500 332 +500 375 +480 640 +640 479 +640 480 +640 480 +500 375 +640 480 +500 283 +640 427 +500 375 +500 375 +640 360 +480 640 +640 353 +640 458 +433 640 +640 480 +640 480 +480 640 +640 424 +640 480 +378 640 +640 425 +640 414 +480 640 +640 480 +640 427 +612 612 +640 386 +640 360 +640 426 +375 500 +500 333 +500 400 +640 480 +480 640 +433 640 +144 190 +640 407 +640 427 +640 480 +640 480 +640 425 +640 480 +640 480 +640 426 +640 427 +500 333 +640 478 +640 425 +640 427 +500 375 +640 480 +427 640 +640 427 +640 538 +640 468 +500 375 +640 480 +500 375 +427 640 +500 375 +640 478 +426 640 +480 640 +640 425 +640 427 +480 640 +640 427 +640 426 +640 480 +511 640 +640 480 +640 480 +640 480 +640 480 +480 640 +640 427 +480 640 +640 426 +640 427 +640 426 +640 426 +500 375 +640 426 +500 375 +640 480 +640 425 +640 478 +640 427 +375 500 +500 375 +640 426 +385 289 +640 428 +640 427 +333 500 +640 426 +500 375 +334 500 +500 334 +500 375 +394 500 +640 427 +640 427 +640 480 +444 640 +640 480 +640 427 +640 480 +445 590 +640 425 +426 640 +552 640 +480 640 +640 413 +640 451 +640 427 +480 640 +428 640 +480 640 +640 429 +640 443 +640 640 +640 266 +427 640 +425 640 +640 427 +500 375 +500 333 +427 640 +480 640 +415 625 +500 375 +640 493 +640 461 +640 482 +640 434 +480 640 +640 400 +480 640 +500 375 +500 333 +454 342 +500 334 +640 428 +640 622 +640 480 +640 480 +427 640 +640 183 +640 420 +428 640 +640 426 +425 640 +640 427 +640 480 +640 427 +493 640 +640 480 +640 426 +640 480 +640 480 +612 612 +640 503 +640 427 +640 481 +640 480 +640 640 +480 640 +455 640 +640 480 +640 480 +500 375 +640 427 +480 640 +480 640 +640 428 +640 424 +640 426 +640 640 +427 640 +361 640 +427 640 +640 426 +640 427 +612 612 +427 640 +480 640 +375 500 +500 375 +640 427 +640 429 +640 427 +640 481 +640 480 +332 500 +640 421 +640 430 +640 481 +500 375 +640 458 +640 426 +480 640 +640 480 +640 427 +375 500 +640 428 +640 427 +480 640 +640 480 +640 426 +480 640 +640 480 +640 480 +640 468 +640 480 +426 640 +640 427 +636 640 +480 640 +427 640 +640 466 +640 489 +500 375 +500 337 +375 500 +640 426 +640 427 +494 640 +640 427 +640 480 +640 427 +375 500 +500 333 +640 427 +500 375 +640 426 +600 402 +640 480 +360 640 +640 427 +480 640 +640 480 +640 640 +640 426 +424 640 +640 480 +500 375 +640 480 +640 480 +640 480 +427 640 +640 458 +640 463 +480 640 +640 480 +640 480 +640 427 +640 480 +640 424 +427 640 +640 480 +612 612 +640 428 +500 375 +640 427 +426 640 +640 480 +333 500 +523 640 +427 640 +640 427 +511 640 +480 640 +612 612 +612 612 +480 640 +500 375 +480 640 +640 427 +640 427 +640 480 +526 640 +640 360 +333 500 +427 640 +640 628 +640 458 +640 428 +427 640 +500 305 +480 640 +375 500 +640 427 +640 480 +427 640 +640 480 +640 480 +355 500 +640 424 +640 487 +640 427 +375 500 +480 640 +500 375 +612 612 +500 375 +640 480 +640 427 +640 427 +640 429 +500 375 +640 378 +612 612 +426 640 +640 480 +632 640 +500 375 +418 640 +640 499 +640 478 +350 500 +640 427 +640 480 +640 480 +640 480 +640 425 +640 360 +640 480 +640 427 +640 427 +439 640 +473 600 +500 473 +640 408 +640 427 +640 480 +427 640 +640 427 +500 375 +640 640 +640 426 +640 427 +640 428 +500 333 +640 480 +640 427 +612 612 +427 640 +640 480 +640 480 +640 480 +640 425 +480 640 +640 410 +480 640 +640 427 +640 478 +640 427 +612 612 +640 427 +640 425 +640 470 +348 500 +599 640 +640 316 +427 640 +640 480 +640 480 +427 640 +442 640 +320 240 +640 425 +500 375 +427 640 +640 480 +500 500 +479 640 +500 333 +640 480 +426 640 +640 427 +640 640 +640 480 +640 427 +640 427 +640 429 +640 428 +375 500 +640 480 +640 426 +640 426 +640 425 +640 638 +640 429 +640 425 +480 640 +640 478 +640 360 +480 640 +480 640 +640 426 +500 333 +612 612 +480 640 +500 375 +640 427 +332 500 +500 375 +320 480 +640 423 +375 500 +640 425 +500 375 +640 480 +392 640 +640 569 +500 334 +640 425 +500 375 +480 640 +640 480 +640 427 +640 427 +640 480 +480 640 +640 306 +640 424 +500 348 +500 350 +500 332 +424 640 +640 425 +640 480 +428 640 +640 480 +500 286 +640 480 +640 480 +480 640 +640 401 +640 424 +640 427 +480 640 +386 500 +640 414 +640 414 +480 640 +640 489 +640 457 +480 640 +640 427 +640 526 +434 640 +478 640 +640 480 +640 279 +640 427 +425 640 +333 500 +640 360 +640 480 +457 640 +374 500 +500 375 +480 640 +640 435 +640 480 +316 500 +640 427 +333 500 +640 426 +474 640 +640 480 +640 478 +640 426 +640 424 +427 640 +640 480 +640 489 +416 500 +640 478 +640 480 +640 427 +640 427 +452 500 +400 400 +427 640 +336 254 +640 401 +333 500 +640 427 +640 366 +640 458 +480 640 +640 427 +500 375 +640 359 +500 375 +480 640 +480 640 +640 480 +640 424 +640 480 +640 429 +640 532 +640 478 +480 640 +640 426 +640 400 +640 359 +640 427 +640 512 +640 480 +640 427 +640 480 +640 481 +640 426 +640 432 +427 640 +500 375 +427 640 +640 480 +425 640 +480 640 +480 640 +640 430 +640 480 +640 480 +640 427 +600 450 +640 360 +640 480 +640 424 +640 425 +612 612 +640 482 +640 480 +640 429 +640 480 +640 480 +480 640 +640 480 +480 640 +640 427 +640 428 +640 480 +640 428 +640 545 +640 426 +480 640 +640 480 +410 500 +640 427 +640 597 +640 480 +640 427 +640 428 +612 612 +479 640 +640 482 +640 480 +500 375 +640 425 +640 480 +640 480 +640 480 +640 480 +612 612 +428 640 +500 375 +480 640 +640 428 +640 427 +500 375 +640 359 +640 426 +640 480 +640 478 +332 500 +640 480 +427 640 +640 480 +480 640 +640 427 +640 480 +640 480 +640 432 +500 333 +640 480 +480 640 +480 640 +526 640 +640 480 +640 480 +640 440 +500 334 +384 640 +640 354 +375 500 +480 640 +640 418 +640 480 +640 426 +640 427 +640 427 +640 424 +500 375 +480 640 +640 424 +500 398 +640 480 +640 427 +640 480 +640 480 +375 500 +424 640 +640 480 +640 478 +480 640 +427 640 +500 373 +425 640 +640 480 +640 427 +480 640 +484 640 +480 640 +640 426 +640 381 +480 640 +427 640 +640 512 +640 424 +426 640 +640 400 +640 480 +640 442 +640 480 +480 640 +500 375 +425 640 +640 457 +426 640 +640 432 +480 640 +640 480 +640 480 +427 640 +640 425 +375 500 +640 480 +427 640 +640 428 +612 612 +640 361 +640 466 +450 360 +640 624 +500 335 +428 640 +640 427 +480 640 +640 425 +640 427 +640 480 +500 375 +480 640 +640 298 +640 480 +500 449 +640 426 +336 448 +500 375 +640 480 +640 640 +427 640 +640 360 +640 427 +478 640 +640 427 +640 427 +640 476 +544 640 +640 480 +640 478 +426 640 +640 480 +640 426 +428 640 +480 640 +300 400 +640 603 +640 480 +428 640 +383 640 +480 640 +640 480 +640 418 +375 500 +640 439 +500 333 +640 427 +640 491 +640 482 +500 333 +640 428 +640 427 +427 640 +640 480 +639 640 +640 480 +640 473 +640 480 +640 480 +640 544 +640 456 +480 640 +640 384 +640 427 +500 281 +640 480 +640 312 +640 457 +640 427 +640 427 +500 348 +640 480 +427 640 +640 426 +640 425 +640 480 +640 480 +500 375 +480 640 +425 640 +640 588 +640 480 +640 434 +640 427 +367 500 +506 380 +375 500 +640 428 +640 424 +624 640 +425 640 +500 375 +639 640 +600 400 +500 375 +640 480 +400 600 +480 640 +500 375 +640 436 +640 480 +428 640 +640 452 +480 640 +640 428 +612 612 +640 512 +500 384 +375 500 +426 640 +479 640 +640 480 +640 411 +640 480 +640 427 +640 359 +640 478 +640 480 +337 500 +640 416 +427 640 +640 480 +640 480 +612 612 +612 612 +480 640 +375 500 +640 427 +640 480 +640 426 +425 640 +480 640 +640 480 +640 480 +640 427 +640 428 +640 427 +640 480 +480 640 +640 426 +640 501 +640 480 +480 640 +640 480 +549 640 +372 500 +640 480 +640 640 +426 640 +500 375 +640 482 +640 427 +640 426 +333 500 +426 640 +500 334 +640 439 +640 429 +640 480 +480 640 +640 426 +500 375 +333 500 +640 587 +500 375 +640 425 +640 426 +640 425 +640 427 +640 429 +500 375 +427 640 +640 480 +640 361 +427 640 +500 375 +640 480 +640 424 +452 640 +640 480 +640 480 +640 480 +640 480 +640 427 +500 375 +640 480 +433 640 +640 480 +640 480 +547 640 +640 428 +640 427 +640 428 +640 427 +640 545 +480 640 +640 640 +640 476 +640 480 +640 438 +500 424 +480 640 +428 640 +500 332 +457 640 +427 640 +500 375 +640 464 +513 640 +640 480 +640 427 +640 359 +640 426 +640 426 +640 428 +640 480 +640 480 +338 500 +457 640 +640 427 +500 375 +640 426 +500 375 +640 428 +640 480 +612 612 +640 425 +401 288 +640 425 +640 426 +640 425 +500 375 +640 512 +640 428 +513 640 +640 428 +474 640 +640 425 +322 214 +612 612 +640 480 +640 512 +640 480 +426 640 +640 513 +640 640 +640 480 +640 425 +427 640 +640 428 +640 480 +534 640 +640 480 +640 480 +400 640 +425 640 +640 428 +640 427 +640 480 +640 480 +640 428 +640 480 +427 640 +640 360 +640 427 +640 480 +640 480 +640 502 +640 588 +640 480 +640 480 +640 480 +640 427 +480 640 +375 500 +612 612 +640 480 +480 640 +427 640 +427 640 +500 332 +640 427 +500 375 +640 480 +640 427 +640 427 +480 640 +640 424 +640 480 +640 480 +640 480 +640 427 +640 529 +426 640 +640 329 +640 480 +640 480 +330 500 +640 429 +640 453 +640 383 +640 437 +640 457 +640 640 +500 375 +640 539 +640 427 +640 426 +640 425 +375 500 +640 427 +640 480 +500 300 +480 640 +500 335 +640 480 +640 427 +640 480 +640 427 +640 480 +640 480 +640 427 +638 394 +640 480 +640 427 +640 427 +479 640 +493 640 +480 640 +640 465 +500 375 +500 381 +640 478 +498 640 +473 640 +640 425 +640 480 +480 640 +640 428 +640 356 +640 426 +640 480 +640 425 +640 427 +480 640 +640 482 +480 640 +640 427 +640 480 +640 427 +640 426 +640 427 +427 640 +640 413 +640 480 +500 375 +640 424 +640 610 +371 640 +640 361 +500 375 +640 427 +640 480 +640 480 +640 426 +640 425 +500 312 +640 426 +427 640 +640 427 +640 480 +375 500 +640 480 +640 480 +640 427 +640 360 +640 480 +480 640 +640 427 +640 427 +640 427 +425 640 +640 427 +640 480 +640 427 +640 427 +333 500 +640 427 +375 500 +539 640 +640 478 +640 480 +640 427 +493 640 +640 427 +612 612 +334 500 +480 640 +640 558 +640 512 +640 480 +640 426 +640 480 +640 479 +480 640 +500 375 +640 480 +640 480 +640 478 +480 640 +612 612 +640 423 +500 334 +640 425 +640 478 +360 640 +513 640 +640 428 +640 425 +640 427 +427 640 +500 415 +640 427 +640 640 +640 427 +640 473 +500 375 +334 500 +640 480 +640 480 +640 428 +640 480 +640 499 +640 427 +640 450 +640 411 +640 481 +425 640 +427 640 +640 427 +480 640 +576 640 +640 480 +640 480 +500 375 +640 480 +640 429 +500 333 +640 480 +640 480 +480 640 +480 640 +640 424 +640 427 +640 413 +640 291 +500 375 +612 612 +640 425 +640 429 +640 480 +640 426 +640 640 +426 640 +640 480 +640 640 +640 480 +640 425 +640 428 +500 375 +640 480 +427 640 +640 426 +640 480 +640 427 +612 612 +640 427 +640 406 +640 479 +500 333 +640 480 +640 480 +375 500 +640 480 +640 360 +313 500 +480 640 +375 500 +640 480 +640 481 +640 428 +640 428 +480 640 +427 640 +640 360 +500 375 +640 359 +480 640 +361 640 +640 474 +640 427 +500 375 +640 426 +480 640 +640 396 +640 480 +640 480 +640 481 +480 640 +640 425 +640 480 +640 480 +443 640 +427 640 +640 480 +640 480 +640 426 +514 640 +426 640 +612 612 +500 333 +500 458 +640 423 +333 500 +640 458 +640 413 +640 486 +640 427 +500 333 +500 332 +612 612 +640 480 +425 640 +426 640 +640 480 +640 480 +640 513 +640 473 +640 480 +640 480 +640 428 +640 392 +333 500 +640 480 +640 480 +612 612 +640 401 +478 640 +640 427 +640 480 +640 427 +595 640 +500 352 +500 333 +640 426 +640 480 +640 480 +640 494 +640 480 +640 427 +640 480 +640 426 +480 640 +640 360 +640 428 +640 427 +450 600 +500 415 +640 480 +450 640 +640 480 +640 424 +351 640 +500 375 +640 427 +428 640 +640 415 +640 427 +612 612 +640 480 +640 426 +640 480 +640 480 +500 328 +640 480 +478 640 +640 487 +640 360 +480 640 +640 480 +640 424 +478 640 +480 640 +640 425 +427 640 +640 480 +640 480 +300 300 +640 480 +640 427 +427 640 +640 480 +640 426 +530 640 +640 480 +640 427 +640 425 +640 480 +640 427 +640 424 +640 478 +640 396 +480 640 +500 333 +640 480 +640 478 +640 484 +640 480 +640 427 +640 640 +640 428 +480 640 +500 331 +640 528 +426 640 +640 480 +640 478 +640 288 +640 428 +424 640 +256 200 +640 128 +640 425 +640 427 +500 500 +640 480 +333 500 +640 480 +640 480 +640 427 +640 480 +480 640 +640 544 +640 480 +640 339 +349 480 +426 640 +640 480 +336 450 +640 512 +500 400 +640 431 +640 480 +480 640 +640 457 +480 640 +640 428 +640 427 +640 451 +375 500 +640 480 +640 480 +640 425 +640 480 +640 428 +426 640 +427 640 +640 480 +640 480 +451 338 +500 332 +480 640 +500 375 +500 333 +333 500 +640 478 +427 640 +500 446 +640 425 +480 640 +640 427 +520 360 +427 640 +640 480 +356 500 +640 427 +640 427 +333 500 +500 375 +640 480 +640 609 +600 399 +640 485 +640 427 +500 492 +375 500 +640 480 +640 429 +375 500 +480 640 +427 640 +375 500 +640 427 +640 427 +640 480 +640 480 +640 480 +640 428 +640 427 +640 480 +640 426 +549 640 +480 640 +582 640 +640 529 +639 640 +640 428 +640 366 +640 480 +640 427 +640 640 +640 476 +640 480 +640 427 +500 333 +640 427 +640 426 +480 640 +640 427 +640 324 +640 427 +334 500 +640 480 +336 500 +494 367 +640 426 +640 425 +500 375 +634 640 +475 640 +640 480 +500 298 +640 480 +640 601 +640 480 +640 341 +640 485 +640 425 +432 640 +640 513 +640 428 +640 393 +640 425 +500 299 +640 426 +480 640 +480 640 +418 640 +640 480 +640 480 +480 640 +640 424 +640 360 +633 640 +480 640 +375 500 +426 640 +640 427 +480 640 +640 425 +426 640 +640 400 +640 361 +424 640 +640 480 +640 438 +640 480 +500 333 +640 399 +640 428 +319 640 +359 500 +640 360 +640 428 +480 640 +640 451 +640 480 +500 260 +640 480 +640 480 +640 427 +640 480 +640 427 +612 612 +375 500 +480 640 +640 480 +640 480 +480 640 +640 427 +427 640 +480 640 +640 426 +640 427 +640 420 +640 640 +375 500 +390 500 +640 377 +480 640 +640 480 +640 425 +375 500 +488 640 +640 427 +640 427 +500 407 +500 333 +640 426 +640 427 +480 640 +640 428 +640 378 +640 480 +427 640 +348 500 +428 640 +316 500 +640 512 +480 640 +640 480 +640 425 +640 480 +428 640 +500 384 +640 480 +640 360 +427 640 +640 426 +640 451 +640 360 +640 427 +482 640 +640 426 +479 640 +426 640 +640 480 +640 427 +640 361 +640 480 +500 375 +640 480 +500 375 +500 375 +640 426 +640 428 +480 640 +640 480 +425 640 +640 484 +640 453 +640 429 +426 640 +500 375 +480 640 +500 375 +640 312 +500 334 +640 427 +640 427 +640 427 +640 425 +640 616 +640 633 +640 569 +640 427 +640 426 +612 612 +500 375 +480 640 +640 425 +427 640 +640 425 +640 426 +640 427 +640 426 +512 640 +500 400 +480 640 +640 480 +640 457 +500 375 +640 427 +640 428 +640 400 +640 428 +375 500 +640 480 +640 426 +640 512 +640 480 +640 413 +640 480 +500 373 +467 640 +640 480 +640 426 +640 429 +480 640 +480 640 +640 427 +427 640 +463 640 +640 425 +640 383 +640 425 +640 480 +427 640 +640 427 +500 330 +500 333 +640 480 +480 640 +640 424 +640 428 +640 290 +640 480 +480 640 +640 480 +640 369 +640 480 +500 375 +640 480 +464 640 +428 640 +640 484 +640 480 +640 480 +640 427 +464 640 +612 612 +480 640 +640 427 +426 640 +480 640 +640 640 +640 480 +640 480 +640 311 +500 332 +640 454 +640 480 +480 640 +640 427 +480 360 +640 427 +500 375 +640 480 +375 500 +640 480 +640 366 +640 480 +640 558 +535 357 +640 480 +640 480 +427 640 +640 480 +426 640 +640 480 +612 612 +500 375 +480 640 +640 425 +640 480 +480 640 +640 480 +640 480 +427 640 +640 428 +640 174 +427 640 +640 457 +640 524 +640 480 +640 480 +640 480 +640 480 +640 640 +411 640 +640 427 +640 427 +427 640 +640 511 +640 480 +586 430 +480 640 +640 480 +640 480 +640 480 +640 361 +427 640 +640 480 +500 435 +612 612 +207 640 +425 640 +425 640 +640 427 +640 426 +480 640 +640 427 +480 640 +500 333 +640 436 +640 480 +640 427 +640 427 +640 480 +640 480 +640 480 +640 480 +612 612 +640 480 +640 427 +640 480 +452 640 +640 425 +640 475 +640 356 +500 375 +640 425 +427 640 +500 375 +640 427 +500 375 +640 427 +640 512 +640 423 +640 456 +480 640 +640 427 +500 335 +250 306 +416 640 +640 480 +640 515 +500 375 +500 333 +640 424 +427 640 +640 424 +500 375 +640 425 +466 640 +640 469 +640 480 +640 480 +640 480 +457 640 +480 640 +500 640 +427 640 +640 427 +640 480 +640 513 +480 640 +640 480 +640 427 +640 394 +640 360 +640 429 +500 375 +402 640 +640 427 +480 640 +640 427 +640 480 +640 360 +427 640 +500 375 +640 480 +500 375 +640 427 +500 375 +640 480 +640 478 +480 640 +478 640 +500 332 +640 439 +640 480 +640 480 +469 640 +333 500 +640 419 +640 194 +640 480 +640 480 +640 426 +612 612 +640 360 +640 428 +500 375 +640 425 +640 457 +640 480 +640 480 +640 425 +500 375 +600 416 +640 424 +500 375 +640 480 +640 480 +640 428 +640 480 +335 500 +640 640 +427 640 +640 428 +480 640 +500 331 +500 374 +375 500 +640 480 +640 426 +640 480 +640 366 +480 640 +640 427 +640 480 +640 480 +640 425 +640 424 +640 427 +640 428 +640 429 +640 492 +640 427 +640 480 +399 640 +640 480 +640 480 +640 480 +640 361 +640 427 +426 640 +640 425 +640 427 +640 640 +640 480 +640 427 +640 640 +640 426 +640 480 +640 480 +640 480 +500 410 +640 480 +640 427 +500 500 +383 640 +640 480 +640 480 +640 428 +360 439 +480 640 +500 480 +640 427 +422 640 +426 640 +500 375 +640 480 +596 640 +426 640 +640 480 +500 332 +612 612 +640 480 +640 480 +640 480 +640 278 +640 480 +640 426 +640 427 +640 427 +612 612 +311 308 +640 427 +640 429 +640 428 +640 480 +612 612 +500 335 +640 480 +640 427 +640 481 +500 333 +640 480 +640 480 +640 479 +640 480 +450 395 +640 480 +640 479 +640 427 +480 640 +640 480 +640 426 +426 640 +640 360 +427 640 +423 640 +640 480 +437 500 +640 481 +640 426 +640 480 +640 480 +640 427 +640 480 +640 480 +500 332 +640 480 +640 426 +640 480 +640 362 +640 479 +640 480 +640 426 +497 640 +640 427 +640 429 +640 427 +640 541 +480 640 +600 418 +640 480 +500 333 +640 480 +448 299 +640 427 +500 333 +640 480 +375 500 +375 500 +480 640 +640 480 +640 427 +640 480 +478 640 +640 426 +426 640 +427 640 +640 427 +640 427 +480 640 +640 280 +640 425 +375 500 +480 640 +640 447 +425 640 +640 426 +428 640 +640 480 +415 500 +640 640 +640 468 +427 640 +640 480 +640 464 +640 361 +640 480 +640 640 +612 612 +640 444 +640 427 +640 427 +640 427 +500 468 +640 442 +426 640 +640 388 +480 640 +640 480 +427 640 +640 444 +500 333 +427 640 +600 400 +640 427 +640 427 +640 435 +640 360 +640 426 +640 428 +480 640 +640 427 +640 428 +640 354 +640 186 +640 426 +640 430 +500 377 +480 640 +640 428 +640 480 +640 559 +427 640 +500 333 +640 427 +523 640 +640 426 +640 480 +640 480 +500 333 +500 375 +401 500 +375 500 +640 428 +480 640 +305 229 +480 640 +480 640 +640 426 +640 480 +640 409 +640 427 +640 425 +640 428 +375 500 +640 501 +500 375 +640 480 +500 375 +640 480 +640 480 +612 612 +640 425 +427 640 +424 640 +640 480 +640 480 +640 425 +427 640 +512 640 +640 428 +640 429 +640 427 +640 480 +640 427 +612 612 +640 480 +640 474 +612 612 +640 424 +405 640 +640 480 +612 612 +640 480 +640 480 +500 375 +640 616 +640 427 +480 640 +480 640 +500 333 +640 427 +500 375 +480 640 +640 480 +640 426 +640 424 +640 523 +640 427 +443 640 +640 427 +640 424 +640 421 +500 334 +640 640 +640 479 +427 640 +640 434 +401 640 +640 426 +640 428 +612 612 +491 640 +428 640 +480 640 +640 490 +640 480 +480 640 +640 427 +480 640 +500 375 +640 480 +640 481 +500 333 +640 480 +640 457 +419 640 +640 480 +640 427 +426 640 +640 427 +640 429 +500 375 +426 640 +640 401 +640 426 +480 640 +640 359 +374 500 +479 640 +500 333 +640 480 +640 504 +612 612 +640 457 +500 401 +640 429 +640 449 +500 298 +640 426 +500 375 +375 500 +640 412 +640 385 +640 406 +640 478 +640 427 +640 427 +500 375 +640 480 +640 440 +640 480 +640 530 +480 360 +480 640 +640 480 +640 480 +480 640 +640 429 +640 431 +640 481 +640 469 +640 479 +640 480 +481 640 +640 427 +640 480 +426 640 +640 480 +425 640 +480 640 +640 425 +500 375 +628 640 +640 565 +500 375 +330 500 +374 500 +500 333 +640 427 +500 333 +640 440 +640 426 +480 640 +612 612 +428 640 +480 640 +640 428 +575 640 +640 425 +640 427 +500 375 +500 366 +427 640 +500 281 +428 640 +398 640 +640 480 +640 427 +640 428 +640 428 +500 400 +500 373 +500 375 +640 426 +640 425 +640 424 +500 333 +640 418 +425 640 +640 427 +640 480 +640 583 +640 481 +640 349 +480 640 +640 428 +640 427 +640 480 +640 480 +640 640 +640 427 +640 427 +480 640 +640 480 +640 480 +640 463 +499 640 +640 426 +640 302 +427 640 +640 427 +640 480 +640 443 +500 333 +640 480 +511 640 +640 463 +426 640 +500 336 +640 480 +640 382 +640 480 +640 427 +640 513 +428 640 +479 640 +640 360 +640 425 +427 640 +640 427 +640 428 +480 640 +640 480 +640 502 +640 354 +500 375 +486 500 +500 333 +640 426 +480 640 +640 421 +640 427 +640 480 +640 480 +640 512 +640 427 +640 512 +500 333 +640 363 +640 427 +640 427 +402 640 +361 640 +427 640 +640 640 +500 375 +640 427 +500 333 +640 480 +640 594 +640 427 +456 640 +640 480 +640 434 +640 536 +640 427 +640 582 +640 549 +640 428 +640 516 +640 480 +640 480 +640 480 +640 480 +640 348 +640 480 +480 640 +640 425 +480 640 +480 640 +640 427 +640 425 +640 426 +640 427 +480 640 +640 427 +640 360 +427 640 +640 425 +640 480 +640 428 +640 480 +640 339 +427 640 +640 480 +640 480 +640 427 +640 423 +640 427 +640 426 +640 427 +640 428 +411 640 +640 420 +640 480 +488 640 +500 334 +431 640 +640 403 +640 428 +500 375 +500 375 +640 480 +327 500 +500 333 +480 640 +598 640 +500 375 +640 480 +500 375 +640 431 +640 480 +500 375 +640 480 +427 640 +640 480 +640 425 +480 640 +500 375 +640 480 +640 426 +640 480 +640 360 +640 480 +640 456 +500 375 +640 398 +471 640 +481 640 +640 359 +500 381 +640 524 +383 640 +640 427 +640 481 +640 480 +640 480 +428 640 +478 640 +500 329 +640 425 +375 500 +640 480 +640 426 +640 424 +500 455 +480 640 +612 612 +500 312 +640 480 +640 428 +640 480 +512 640 +640 434 +640 640 +478 640 +640 369 +640 480 +511 640 +500 332 +612 612 +640 281 +640 427 +427 640 +640 480 +640 428 +640 425 +640 480 +426 640 +640 640 +640 480 +425 640 +640 434 +640 514 +640 480 +480 640 +640 480 +640 484 +439 640 +640 431 +480 640 +371 500 +426 640 +640 334 +640 353 +427 640 +427 640 +427 640 +640 427 +480 640 +424 640 +426 640 +640 425 +640 480 +333 500 +426 640 +640 429 +640 640 +640 427 +500 375 +640 428 +640 480 +640 480 +427 640 +640 424 +552 640 +640 506 +640 424 +640 427 +640 480 +500 333 +500 375 +640 392 +640 570 +640 424 +640 427 +500 401 +640 427 +478 640 +640 425 +640 480 +640 480 +640 513 +640 480 +425 640 +640 640 +640 427 +640 480 +356 533 +500 375 +640 360 +427 640 +426 640 +640 427 +640 480 +640 480 +640 480 +640 480 +640 425 +640 480 +640 479 +640 425 +600 399 +640 366 +640 443 +500 375 +640 434 +640 428 +640 418 +640 480 +426 640 +513 640 +640 416 +640 428 +640 427 +500 375 +640 480 +519 640 +500 313 +640 480 +345 500 +640 334 +640 402 +640 427 +612 612 +480 640 +640 480 +640 413 +640 427 +640 426 +480 640 +640 426 +640 426 +427 640 +640 480 +612 612 +480 640 +500 375 +640 518 +640 480 +640 359 +500 375 +640 427 +500 375 +640 480 +640 480 +612 612 +640 429 +640 427 +640 427 +640 425 +640 426 +640 427 +640 428 +500 316 +640 480 +640 640 +640 436 +640 427 +480 640 +640 425 +640 480 +640 480 +479 640 +640 480 +640 427 +640 480 +427 640 +640 640 +640 359 +612 612 +640 480 +640 480 +640 480 +640 480 +425 640 +640 444 +640 480 +326 500 +457 640 +640 480 +579 640 +640 360 +640 435 +640 480 +362 500 +640 480 +428 640 +640 458 +375 500 +640 480 +480 640 +529 640 +375 500 +640 534 +640 480 +640 505 +640 428 +500 375 +640 426 +640 427 +500 375 +640 314 +640 480 +304 640 +640 480 +480 640 +468 405 +426 640 +519 640 +640 480 +640 480 +640 427 +640 480 +640 480 +640 426 +640 427 +500 375 +640 292 +640 480 +640 566 +427 640 +640 526 +640 480 +640 427 +427 640 +640 424 +640 427 +640 426 +640 480 +640 427 +640 426 +640 480 +428 640 +640 424 +640 425 +640 483 +429 640 +424 640 +640 426 +612 612 +640 480 +640 480 +640 430 +640 480 +512 640 +467 640 +640 426 +640 427 +500 241 +640 480 +640 480 +481 640 +427 640 +640 480 +640 326 +640 564 +640 640 +480 640 +640 286 +425 640 +480 640 +423 640 +640 424 +640 426 +640 428 +640 427 +640 426 +640 480 +480 640 +640 640 +375 500 +640 628 +640 426 +640 399 +640 428 +640 427 +612 612 +640 477 +640 425 +612 612 +640 480 +640 480 +640 427 +640 480 +640 480 +428 640 +480 640 +640 444 +640 501 +480 640 +500 333 +619 640 +640 427 +640 498 +640 480 +640 480 +426 640 +500 375 +640 426 +640 480 +640 640 +480 640 +640 426 +640 428 +468 640 +640 427 +640 480 +640 427 +375 500 +640 480 +640 427 +640 359 +640 427 +640 425 +640 426 +640 361 +640 480 +640 427 +389 640 +427 640 +640 393 +612 612 +480 640 +427 640 +640 428 +640 491 +428 640 +472 640 +640 427 +640 428 +508 640 +640 427 +433 640 +425 640 +588 640 +500 370 +640 427 +640 428 +640 480 +640 426 +640 448 +640 480 +640 499 +612 612 +640 427 +500 375 +578 640 +500 375 +640 426 +640 427 +640 480 +640 426 +640 640 +500 375 +640 480 +480 640 +480 640 +612 612 +640 427 +428 640 +640 427 +640 640 +480 640 +640 480 +640 480 +640 428 +640 480 +640 640 +640 480 +640 427 +640 640 +640 427 +640 481 +640 479 +320 240 +427 640 +640 427 +332 500 +500 500 +640 427 +640 480 +640 427 +640 480 +640 428 +640 376 +640 480 +333 500 +480 640 +640 428 +640 480 +640 480 +640 427 +480 640 +500 375 +640 480 +640 427 +426 640 +640 426 +640 640 +640 427 +640 494 +640 321 +640 425 +640 427 +500 375 +640 348 +640 238 +640 427 +640 453 +640 433 +640 427 +640 480 +640 480 +500 500 +640 480 +480 640 +640 480 +640 480 +480 640 +640 480 +640 480 +427 640 +640 360 +384 640 +480 640 +640 448 +500 375 +478 640 +375 500 +640 480 +640 480 +640 480 +640 424 +640 480 +640 480 +288 160 +640 468 +640 474 +427 640 +640 480 +640 480 +640 427 +640 468 +640 480 +640 427 +500 244 +640 427 +500 375 +640 222 +640 480 +640 480 +640 480 +640 427 +640 427 +640 480 +640 406 +480 640 +640 425 +640 480 +640 427 +640 429 +500 333 +640 427 +500 375 +640 391 +640 480 +640 480 +640 425 +640 427 +640 480 +480 640 +640 427 +640 480 +640 427 +640 427 +640 493 +640 428 +640 425 +640 480 +480 640 +426 640 +480 640 +480 640 +428 640 +425 640 +500 333 +500 375 +640 427 +640 427 +640 488 +640 480 +640 427 +514 640 +500 451 +640 480 +474 640 +640 425 +640 426 +640 425 +480 640 +640 498 +640 480 +640 480 +640 459 +640 480 +598 640 +640 480 +480 640 +429 640 +640 360 +500 500 +326 640 +640 427 +640 426 +640 427 +640 480 +640 428 +640 427 +640 425 +600 400 +640 619 +640 640 +426 640 +500 374 +640 480 +640 482 +480 640 +480 640 +640 428 +612 612 +640 480 +480 640 +480 640 +640 640 +640 427 +427 640 +640 480 +640 427 +640 480 +500 375 +640 569 +480 640 +640 461 +640 428 +480 640 +640 361 +640 429 +375 500 +640 427 +500 375 +640 384 +640 427 +640 428 +436 640 +600 450 +480 640 +427 640 +484 640 +640 480 +640 427 +427 640 +478 640 +480 640 +640 640 +640 480 +640 423 +500 333 +640 427 +480 640 +480 640 +640 453 +419 640 +426 640 +640 636 +640 480 +640 426 +640 427 +612 612 +640 478 +640 480 +640 427 +500 375 +640 480 +640 424 +427 640 +640 427 +640 486 +482 640 +512 640 +640 400 +427 640 +500 375 +347 500 +640 633 +640 426 +480 640 +500 336 +640 382 +640 484 +500 333 +640 425 +640 427 +640 427 +640 427 +640 427 +640 427 +640 427 +427 640 +640 512 +500 334 +640 427 +640 573 +425 640 +640 427 +480 640 +640 427 +640 480 +400 266 +640 480 +480 640 +640 427 +640 481 +640 480 +500 375 +640 640 +536 640 +640 480 +640 480 +640 480 +640 425 +640 480 +640 427 +270 360 +640 480 +640 480 +640 512 +394 401 +500 342 +320 240 +424 640 +500 333 +640 468 +383 640 +640 427 +425 640 +640 492 +640 425 +640 480 +640 416 +480 640 +640 427 +640 480 +640 453 +640 427 +640 427 +640 426 +640 489 +480 640 +426 640 +549 640 +640 427 +640 478 +640 427 +640 425 +480 640 +480 640 +640 428 +640 427 +640 440 +640 506 +500 375 +612 612 +640 426 +640 480 +640 352 +640 427 +480 640 +640 415 +640 480 +640 413 +640 504 +640 401 +500 375 +612 612 +500 375 +640 426 +427 640 +640 480 +640 359 +427 640 +640 480 +500 276 +500 375 +640 439 +640 427 +500 314 +480 640 +640 622 +640 423 +500 435 +640 432 +640 480 +640 640 +500 403 +375 500 +640 426 +500 375 +640 425 +640 425 +640 427 +640 640 +580 640 +640 313 +640 640 +612 612 +640 386 +640 427 +640 427 +640 480 +612 612 +640 427 +640 480 +640 424 +612 612 +640 517 +426 640 +640 433 +640 418 +640 441 +640 426 +640 425 +480 640 +640 360 +640 310 +640 425 +640 480 +640 425 +500 333 +640 427 +640 428 +480 640 +640 427 +640 428 +640 484 +481 640 +503 480 +640 159 +640 480 +425 640 +480 640 +640 427 +456 640 +640 354 +425 640 +552 640 +640 427 +640 552 +640 480 +640 427 +640 480 +640 426 +640 640 +640 427 +640 480 +640 480 +425 640 +640 480 +640 428 +640 480 +640 480 +640 640 +640 425 +640 415 +640 483 +640 361 +640 427 +640 427 +500 330 +640 425 +640 427 +640 426 +500 333 +640 480 +640 360 +640 427 +640 426 +640 426 +427 640 +425 640 +640 430 +640 480 +426 640 +640 427 +480 640 +612 612 +640 356 +375 500 +425 640 +640 480 +640 428 +640 360 +389 500 +500 375 +427 640 +640 427 +640 428 +640 423 +478 640 +640 427 +640 424 +640 427 +423 640 +334 500 +640 427 +640 427 +640 480 +640 480 +640 360 +640 519 +480 640 +640 390 +640 425 +500 325 +640 421 +478 640 +640 425 +500 375 +640 424 +640 422 +500 375 +640 640 +332 500 +640 426 +640 427 +640 308 +480 640 +457 640 +640 480 +612 612 +640 480 +640 434 +450 420 +640 480 +640 400 +640 428 +640 582 +640 427 +640 386 +500 400 +640 480 +640 427 +640 499 +640 480 +375 500 +640 425 +480 640 +480 640 +500 375 +640 390 +480 640 +640 425 +500 400 +425 640 +500 374 +640 480 +500 333 +640 469 +640 444 +640 428 +418 640 +640 431 +500 281 +640 426 +423 640 +413 640 +500 375 +425 640 +480 640 +640 427 +640 489 +500 325 +640 480 +500 340 +640 359 +640 427 +640 480 +480 640 +480 640 +640 427 +640 387 +480 640 +480 640 +400 280 +640 480 +640 480 +640 480 +331 500 +640 481 +640 454 +640 480 +640 480 +640 426 +640 480 +640 427 +640 360 +640 480 +640 480 +500 345 +640 427 +640 480 +428 640 +500 375 +640 427 +640 426 +640 426 +480 640 +612 612 +640 439 +640 427 +640 599 +640 428 +640 428 +500 375 +640 512 +427 640 +640 360 +640 427 +640 480 +500 375 +500 375 +500 291 +480 640 +480 640 +640 480 +500 375 +612 612 +443 640 +640 561 +640 427 +467 640 +427 640 +640 427 +640 426 +640 424 +480 640 +427 640 +375 500 +640 480 +640 427 +528 640 +640 360 +640 480 +640 427 +333 500 +640 478 +400 640 +500 375 +640 427 +640 481 +640 427 +480 640 +640 426 +640 480 +427 640 +640 480 +640 419 +640 427 +480 640 +640 428 +640 427 +640 534 +640 425 +640 480 +480 640 +640 480 +393 316 +640 445 +640 480 +480 640 +480 640 +427 640 +640 480 +640 417 +425 640 +640 427 +640 426 +500 281 +585 640 +640 480 +500 375 +640 480 +640 480 +640 427 +640 421 +640 427 +587 640 +640 452 +640 427 +640 480 +640 425 +640 640 +640 488 +480 640 +640 359 +640 503 +640 480 +500 332 +640 521 +427 640 +640 428 +640 480 +640 427 +640 480 +375 500 +640 367 +640 480 +640 480 +427 640 +640 480 +640 427 +640 512 +640 480 +500 333 +640 480 +640 427 +640 333 +640 424 +640 480 +640 427 +640 427 +640 480 +640 427 +640 425 +480 640 +500 375 +640 428 +640 427 +640 480 +612 612 +375 500 +500 375 +500 333 +500 375 +640 480 +640 427 +640 480 +500 375 +640 478 +640 426 +640 480 +500 400 +375 500 +640 428 +640 499 +640 360 +640 427 +640 480 +640 480 +640 427 +640 480 +640 485 +427 640 +375 500 +640 456 +640 464 +473 640 +640 359 +640 425 +612 612 +640 427 +444 640 +640 480 +640 428 +640 414 +500 375 +333 500 +500 333 +640 437 +612 612 +333 500 +640 548 +640 480 +640 512 +480 640 +640 428 +640 480 +375 500 +640 429 +333 500 +640 480 +640 438 +379 640 +640 427 +640 426 +479 640 +640 480 +500 375 +640 429 +500 375 +640 480 +640 426 +640 480 +640 480 +640 427 +640 467 +427 640 +640 426 +427 640 +640 434 +480 640 +612 612 +640 425 +640 427 +640 427 +442 640 +500 333 +480 640 +640 480 +640 431 +476 261 +640 427 +640 427 +480 640 +640 427 +480 640 +480 640 +640 640 +500 334 +640 425 +640 427 +427 640 +640 427 +480 640 +500 375 +640 427 +640 480 +478 640 +640 480 +640 466 +478 640 +512 640 +640 418 +640 478 +480 640 +640 427 +640 480 +640 480 +500 375 +500 375 +480 640 +640 480 +640 427 +480 640 +427 640 +375 500 +640 427 +640 480 +640 426 +480 640 +425 640 +640 428 +445 640 +640 427 +640 427 +427 640 +640 522 +500 334 +640 427 +640 360 +640 425 +480 640 +441 640 +640 480 +640 469 +640 427 +427 640 +612 612 +500 375 +400 600 +640 360 +426 640 +640 480 +640 480 +640 480 +640 356 +640 480 +640 480 +640 480 +640 426 +640 360 +640 426 +640 480 +640 480 +600 402 +640 480 +480 640 +385 289 +640 360 +640 480 +640 480 +640 480 +640 426 +640 480 +640 480 +640 426 +427 640 +640 479 +428 640 +480 640 +500 375 +640 406 +334 500 +640 413 +427 640 +375 500 +427 640 +480 640 +640 480 +636 640 +640 426 +500 375 +480 640 +480 640 +640 576 +640 640 +640 426 +612 612 +640 426 +640 429 +640 342 +428 640 +480 640 +480 640 +427 640 +640 480 +640 479 +640 427 +640 425 +500 400 +427 640 +500 375 +640 480 +640 427 +480 640 +640 478 +640 480 +480 640 +427 640 +640 428 +500 375 +640 396 +375 500 +300 500 +640 429 +428 640 +640 426 +480 640 +640 480 +480 640 +640 429 +640 389 +640 427 +640 428 +640 480 +480 640 +480 640 +426 640 +640 480 +640 480 +640 443 +640 480 +480 640 +640 494 +640 425 +427 640 +442 640 +640 424 +640 450 +640 286 +426 640 +480 640 +640 480 +640 480 +640 480 +640 480 +427 640 +640 480 +640 484 +500 375 +500 485 +640 427 +640 480 +640 427 +543 640 +640 427 +640 480 +640 480 +640 427 +500 376 +640 425 +640 480 +640 273 +480 640 +640 427 +640 426 +428 640 +640 360 +640 425 +640 480 +640 429 +500 368 +640 482 +640 480 +427 640 +640 427 +640 480 +640 427 +640 480 +640 479 +640 640 +640 428 +500 375 +640 427 +640 428 +500 333 +480 640 +396 297 +640 479 +640 425 +598 640 +640 582 +640 553 +640 480 +480 640 +640 480 +500 332 +640 425 +640 480 +427 640 +640 480 +500 335 +640 427 +640 480 +427 640 +640 480 +600 400 +427 640 +640 480 +640 426 +640 426 +640 427 +480 640 +480 640 +589 640 +640 480 +640 428 +640 424 +640 427 +428 640 +640 480 +640 454 +424 640 +640 427 +640 425 +640 480 +640 427 +640 427 +480 640 +612 612 +333 500 +640 480 +640 480 +572 640 +640 439 +640 427 +427 640 +640 426 +426 640 +640 480 +640 427 +640 480 +457 640 +640 419 +640 418 +480 640 +425 640 +480 640 +480 640 +500 332 +640 424 +640 396 +640 427 +640 640 +640 480 +640 406 +500 375 +640 512 +640 424 +640 480 +640 480 +640 374 +640 354 +640 427 +640 428 +500 375 +640 480 +480 640 +640 480 +640 480 +500 281 +640 539 +640 625 +426 640 +359 640 +640 427 +640 478 +428 640 +500 333 +375 500 +480 640 +640 426 +500 375 +640 458 +640 457 +640 427 +612 612 +500 375 +640 480 +640 478 +640 480 +640 400 +640 480 +375 500 +640 480 +426 640 +640 640 +612 612 +640 480 +640 424 +480 640 +640 480 +640 427 +640 427 +640 359 +640 427 +640 480 +640 480 +640 424 +640 427 +500 375 +612 612 +640 427 +427 640 +335 500 +640 480 +640 480 +640 427 +428 640 +640 427 +375 500 +500 375 +640 393 +640 546 +640 384 +640 480 +500 375 +333 500 +480 640 +640 428 +640 326 +640 360 +533 640 +640 427 +640 427 +640 422 +640 480 +427 640 +640 478 +640 360 +640 480 +600 398 +480 640 +640 480 +426 640 +640 427 +640 411 +480 640 +640 427 +461 640 +640 427 +480 640 +478 640 +640 480 +640 427 +640 428 +438 500 +426 640 +480 640 +480 640 +500 373 +500 375 +640 508 +640 480 +500 434 +640 480 +640 427 +640 480 +640 427 +426 640 +421 640 +640 383 +427 640 +640 480 +640 428 +500 334 +375 500 +640 480 +640 541 +640 424 +640 478 +426 640 +426 640 +480 640 +640 427 +640 480 +640 422 +640 360 +478 640 +640 476 +504 337 +528 400 +612 612 +500 333 +640 480 +640 480 +427 640 +480 640 +640 427 +480 640 +375 500 +612 612 +640 427 +474 640 +375 500 +640 381 +426 640 +500 375 +640 429 +375 500 +480 640 +640 480 +640 480 +640 480 +640 426 +335 500 +640 480 +640 427 +640 480 +612 612 +640 427 +640 512 +612 612 +640 480 +640 426 +640 427 +640 427 +640 480 +640 427 +425 640 +500 400 +640 636 +640 427 +640 427 +480 640 +640 427 +375 500 +640 413 +640 427 +640 427 +640 426 +640 480 +429 640 +640 480 +640 427 +480 640 +640 480 +640 427 +480 640 +640 427 +500 333 +495 640 +500 406 +640 427 +640 480 +640 480 +480 640 +640 303 +375 500 +612 612 +500 334 +640 528 +640 427 +640 480 +435 640 +640 289 +640 480 +640 480 +427 640 +640 496 +640 427 +612 612 +640 398 +448 640 +640 426 +640 426 +480 640 +640 427 +640 457 +640 427 +640 480 +640 427 +500 375 +333 500 +640 480 +640 295 +640 480 +640 480 +640 427 +500 334 +527 640 +640 558 +640 433 +332 500 +640 425 +500 333 +640 427 +480 640 +500 375 +640 429 +640 480 +640 480 +640 427 +640 480 +500 333 +640 426 +612 612 +500 375 +400 300 +640 428 +612 612 +640 480 +640 480 +640 480 +640 450 +640 427 +640 364 +640 433 +640 427 +640 427 +400 500 +640 428 +640 480 +640 480 +640 480 +640 640 +333 500 +426 640 +420 640 +640 480 +640 427 +640 480 +500 375 +640 478 +640 434 +480 640 +329 500 +640 480 +640 424 +640 426 +612 612 +640 480 +640 480 +640 427 +640 480 +427 640 +640 480 +640 480 +500 385 +427 640 +640 478 +640 376 +640 427 +478 640 +625 505 +640 388 +480 640 +640 433 +640 480 +640 426 +640 427 +640 480 +640 480 +500 295 +640 329 +332 291 +500 375 +640 480 +640 458 +640 426 +424 640 +640 427 +500 375 +500 376 +640 480 +640 246 +480 640 +640 427 +640 427 +640 480 +500 336 +359 640 +428 640 +640 426 +512 640 +640 480 +640 480 +640 450 +480 640 +480 640 +500 375 +640 427 +481 640 +375 500 +333 500 +640 428 +467 640 +500 434 +640 480 +480 640 +640 360 +640 414 +480 640 +480 640 +500 375 +640 427 +480 640 +640 426 +640 468 +500 375 +640 425 +640 426 +640 494 +640 427 +640 480 +640 427 +640 425 +478 640 +478 640 +640 488 +640 480 +640 426 +426 640 +640 427 +640 346 +640 480 +640 408 +640 426 +415 640 +640 480 +640 407 +640 480 +640 427 +640 427 +500 375 +640 480 +640 427 +640 419 +480 640 +640 499 +480 640 +425 640 +612 612 +640 639 +640 427 +640 495 +640 480 +480 640 +640 427 +640 480 +640 425 +427 640 +640 506 +640 480 +640 480 +640 448 +640 399 +640 480 +640 301 +640 481 +500 375 +640 514 +640 374 +640 359 +436 640 +640 427 +640 426 +640 441 +500 400 +428 640 +640 427 +640 480 +640 457 +640 428 +640 480 +640 480 +500 375 +640 427 +612 612 +500 333 +428 640 +640 480 +640 426 +640 427 +640 427 +640 426 +480 640 +640 478 +640 480 +640 480 +600 449 +640 480 +640 431 +640 480 +640 427 +480 640 +640 425 +480 640 +640 480 +426 640 +640 480 +640 480 +640 480 +640 418 +640 426 +640 535 +640 438 +426 640 +640 480 +640 498 +427 640 +640 440 +640 533 +426 640 +640 427 +612 612 +320 240 +640 513 +640 428 +640 480 +480 640 +480 640 +640 299 +500 334 +640 438 +500 375 +341 500 +640 372 +426 640 +640 512 +500 390 +640 480 +512 640 +640 640 +640 360 +375 500 +480 640 +480 640 +640 480 +640 480 +375 500 +607 640 +500 375 +640 445 +640 464 +480 640 +500 343 +640 480 +640 427 +640 427 +640 480 +640 480 +640 480 +640 480 +640 360 +427 640 +425 640 +500 333 +640 480 +640 428 +640 480 +524 640 +640 458 +500 375 +500 375 +561 640 +640 483 +640 457 +640 578 +478 640 +640 425 +640 480 +500 370 +500 375 +333 500 +640 429 +640 427 +500 333 +640 426 +500 375 +640 480 +640 480 +640 427 +480 640 +640 482 +640 480 +480 640 +480 640 +640 480 +640 480 +512 384 +640 426 +375 500 +640 417 +480 640 +640 426 +640 480 +375 500 +640 518 +640 427 +640 427 +640 480 +426 640 +640 427 +640 427 +640 496 +640 370 +640 359 +640 432 +640 480 +612 612 +426 640 +640 359 +383 640 +640 426 +640 426 +478 640 +640 480 +500 374 +427 640 +500 283 +612 612 +640 399 +640 480 +640 480 +640 427 +640 428 +500 375 +640 480 +483 640 +640 480 +385 308 +500 375 +480 640 +640 426 +640 426 +612 612 +332 500 +640 480 +640 426 +640 427 +640 426 +640 480 +640 478 +556 640 +500 375 +478 640 +640 428 +640 480 +425 640 +640 478 +640 480 +640 434 +640 427 +500 480 +640 427 +425 640 +640 429 +640 370 +512 640 +640 480 +640 426 +640 427 +640 427 +640 480 +640 480 +429 640 +640 480 +640 448 +640 480 +640 427 +426 640 +640 480 +640 426 +640 480 +640 426 +458 640 +500 375 +500 376 +640 480 +612 612 +480 640 +424 640 +640 480 +640 639 +640 427 +640 480 +500 333 +500 375 +640 503 +315 500 +333 500 +400 272 +640 480 +640 480 +500 333 +640 478 +640 591 +500 294 +640 426 +640 427 +640 425 +640 457 +480 640 +480 640 +640 427 +640 480 +480 640 +640 428 +640 432 +640 343 +428 640 +640 480 +640 429 +640 360 +640 480 +332 500 +640 480 +640 426 +640 640 +640 425 +640 427 +500 333 +500 375 +640 480 +640 480 +427 640 +640 480 +640 427 +480 640 +375 500 +640 426 +640 398 +640 427 +640 427 +640 427 +640 427 +453 640 +427 640 +640 480 +640 524 +640 427 +640 479 +640 480 +375 500 +640 480 +640 458 +640 522 +640 427 +500 375 +500 333 +500 375 +640 426 +640 480 +640 480 +640 426 +436 640 +500 375 +375 500 +500 375 +640 480 +640 480 +640 480 +500 321 +500 375 +640 426 +640 480 +640 427 +640 480 +426 640 +640 360 +413 640 +640 382 +640 425 +640 480 +640 480 +427 640 +640 383 +640 480 +478 640 +640 480 +427 640 +428 640 +500 333 +640 480 +612 612 +339 500 +640 427 +640 376 +640 360 +640 428 +480 640 +640 426 +640 480 +500 500 +269 480 +629 640 +640 480 +640 480 +612 612 +640 491 +640 480 +640 601 +640 480 +426 640 +640 480 +640 397 +640 426 +424 640 +480 640 +640 526 +640 386 +480 640 +375 500 +640 469 +640 601 +615 310 +640 480 +640 448 +547 640 +480 640 +480 640 +518 640 +640 427 +427 640 +433 640 +640 439 +640 480 +480 640 +612 612 +640 281 +640 480 +640 427 +640 480 +640 427 +640 428 +437 640 +640 428 +640 480 +640 480 +640 424 +500 336 +425 640 +500 308 +640 360 +640 424 +640 425 +446 640 +640 252 +640 483 +640 480 +640 627 +640 428 +500 480 +640 453 +612 612 +640 428 +375 500 +640 480 +640 480 +640 417 +640 378 +640 425 +640 480 +480 640 +640 481 +640 504 +595 640 +640 480 +640 597 +500 375 +640 427 +479 640 +640 512 +640 426 +500 416 +500 375 +640 400 +500 375 +472 640 +500 375 +500 375 +640 480 +480 640 +640 561 +427 640 +640 426 +640 480 +640 427 +480 640 +640 428 +640 480 +640 426 +640 562 +640 428 +500 334 +640 426 +640 427 +640 480 +640 425 +640 491 +500 375 +640 426 +396 640 +480 640 +640 426 +480 640 +640 480 +640 480 +427 640 +640 427 +500 337 +427 640 +457 640 +375 500 +612 612 +480 640 +640 480 +500 375 +612 612 +640 480 +640 427 +640 423 +612 612 +480 640 +378 500 +480 640 +500 238 +640 447 +640 480 +640 427 +640 480 +480 640 +640 480 +640 480 +640 368 +640 424 +640 427 +640 359 +500 375 +640 480 +640 362 +500 398 +640 514 +640 480 +640 480 +500 375 +480 640 +480 640 +478 640 +640 427 +640 427 +480 360 +380 500 +424 640 +640 426 +640 480 +640 320 +640 480 +640 428 +640 426 +335 500 +640 427 +375 500 +640 425 +640 478 +640 427 +426 640 +640 480 +427 640 +543 640 +483 640 +640 480 +640 480 +480 640 +500 375 +640 428 +424 640 +640 480 +427 640 +640 426 +640 434 +427 640 +500 334 +480 640 +640 480 +480 640 +426 640 +640 480 +640 425 +640 427 +640 480 +640 480 +500 272 +640 480 +640 480 +640 480 +428 640 +500 375 +424 640 +375 500 +640 360 +612 612 +640 427 +640 432 +425 640 +640 359 +426 640 +640 427 +640 430 +480 640 +640 427 +640 426 +339 500 +640 479 +640 427 +500 326 +500 333 +464 640 +463 640 +640 426 +640 480 +500 375 +640 427 +640 427 +640 427 +480 640 +640 423 +640 483 +640 479 +640 320 +640 608 +640 427 +640 425 +378 500 +426 640 +640 480 +640 480 +432 640 +640 480 +478 640 +640 415 +640 530 +640 372 +640 424 +640 360 +640 480 +480 640 +640 426 +395 640 +640 359 +640 427 +500 333 +640 480 +480 640 +640 360 +640 480 +500 334 +425 640 +640 480 +640 427 +640 480 +640 425 +500 374 +480 640 +640 429 +640 480 +640 426 +357 640 +496 640 +640 426 +640 425 +640 425 +640 480 +427 640 +640 427 +640 438 +480 640 +640 377 +640 480 +640 428 +640 480 +612 612 +640 527 +640 427 +375 500 +640 424 +640 480 +640 457 +500 334 +640 425 +525 640 +640 428 +333 500 +480 640 +640 419 +480 640 +640 426 +640 480 +640 426 +640 468 +640 480 +480 640 +640 425 +512 640 +640 427 +427 640 +500 375 +515 640 +480 640 +428 640 +331 500 +500 332 +480 640 +640 480 +640 427 +640 427 +640 480 +500 335 +640 480 +640 425 +640 360 +640 480 +625 640 +480 640 +480 640 +478 640 +640 426 +428 640 +640 480 +640 480 +640 396 +500 376 +506 640 +640 514 +500 333 +640 480 +480 640 +612 612 +480 640 +640 480 +425 640 +548 640 +640 427 +640 480 +640 480 +640 427 +640 429 +640 426 +640 427 +640 427 +640 480 +480 640 +640 427 +640 512 +640 480 +640 480 +324 328 +640 361 +640 480 +640 427 +640 428 +640 426 +640 480 +640 359 +640 480 +500 334 +480 640 +640 427 +640 480 +640 480 +640 427 +640 400 +640 561 +640 480 +640 360 +640 425 +640 480 +428 640 +480 640 +460 640 +480 640 +640 428 +334 500 +425 640 +640 428 +640 529 +640 427 +640 606 +305 229 +640 480 +640 361 +333 500 +640 480 +640 490 +640 424 +640 433 +640 425 +427 640 +640 428 +640 424 +558 558 +640 427 +640 480 +640 426 +640 480 +640 563 +375 500 +640 480 +335 500 +640 360 +640 424 +375 500 +573 640 +640 480 +640 480 +640 425 +425 640 +640 360 +640 480 +640 425 +640 480 +480 640 +640 360 +640 480 +640 426 +640 480 +640 427 +640 425 +640 424 +640 480 +426 640 +640 427 +375 500 +500 360 +500 375 +640 427 +500 257 +640 424 +356 500 +640 494 +426 640 +640 480 +412 640 +640 480 +433 640 +640 480 +427 640 +375 500 +500 369 +612 612 +640 480 +427 640 +396 640 +612 612 +640 480 +500 332 +480 640 +640 480 +640 428 +640 426 +640 397 +640 534 +500 375 +640 427 +640 480 +640 480 +480 640 +640 427 +427 640 +640 480 +640 480 +640 480 +640 359 +640 337 +480 640 +308 500 +375 500 +640 578 +640 480 +640 427 +360 640 +480 640 +640 480 +612 612 +640 443 +612 612 +640 480 +640 427 +500 500 +640 391 +478 640 +639 640 +332 500 +332 500 +428 640 +425 640 +640 480 +480 640 +640 480 +500 375 +640 480 +427 640 +640 480 +640 427 +640 428 +640 480 +640 381 +640 427 +612 612 +640 426 +640 427 +640 480 +640 427 +612 612 +248 500 +500 208 +640 544 +640 427 +640 427 +500 358 +640 428 +640 480 +640 427 +640 480 +640 360 +640 425 +500 375 +480 640 +640 427 +640 376 +640 480 +640 424 +640 360 +500 375 +640 427 +640 471 +640 360 +640 475 +640 428 +415 640 +640 334 +640 426 +640 427 +300 400 +640 480 +640 480 +612 612 +640 426 +640 425 +480 640 +640 452 +500 375 +640 476 +600 455 +640 480 +640 640 +640 480 +500 335 +479 640 +640 427 +500 375 +640 426 +428 640 +480 640 +640 480 +640 480 +640 427 +640 424 +640 428 +623 640 +640 425 +640 438 +640 480 +640 427 +640 425 +640 480 +640 640 +640 480 +640 480 +640 329 +591 640 +640 480 +427 640 +612 612 +399 600 +640 364 +640 489 +640 480 +375 500 +640 426 +426 640 +429 640 +427 640 +640 427 +640 427 +640 614 +640 427 +640 312 +640 427 +640 427 +504 640 +427 640 +427 640 +640 589 +426 640 +640 606 +640 427 +427 640 +640 640 +640 480 +640 427 +500 333 +464 640 +640 426 +427 640 +640 480 +640 480 +612 612 +640 480 +500 366 +640 480 +640 425 +640 640 +640 484 +500 375 +640 359 +351 500 +640 480 +640 320 +640 427 +640 473 +640 480 +640 427 +640 411 +500 331 +640 480 +480 640 +640 480 +612 612 +640 427 +640 470 +500 375 +512 640 +640 640 +640 480 +640 480 +640 427 +640 480 +500 375 +640 480 +480 640 +640 425 +640 425 +640 427 +640 464 +500 500 +640 427 +640 480 +640 423 +500 333 +640 311 +640 449 +640 427 +472 500 +640 640 +433 640 +640 383 +640 480 +640 427 +640 425 +427 640 +640 480 +640 480 +640 480 +640 480 +480 640 +640 504 +640 425 +640 478 +640 429 +640 426 +640 480 +426 640 +425 640 +500 375 +640 427 +500 375 +478 640 +500 375 +640 480 +480 640 +640 480 +640 429 +612 612 +428 640 +640 154 +640 427 +375 500 +640 480 +640 480 +640 480 +640 480 +640 427 +640 360 +640 395 +640 480 +640 640 +480 640 +640 480 +640 428 +640 480 +480 640 +640 480 +427 640 +500 478 +640 427 +612 612 +428 640 +640 480 +640 480 +640 456 +640 359 +640 450 +263 640 +640 427 +640 409 +640 480 +640 394 +640 480 +640 524 +640 511 +425 640 +640 427 +640 427 +640 426 +640 425 +427 640 +600 625 +640 427 +640 480 +600 400 +640 428 +640 426 +640 359 +500 335 +426 640 +500 336 +375 500 +640 480 +455 640 +321 500 +500 375 +353 640 +426 640 +450 216 +612 612 +454 640 +480 640 +427 640 +500 375 +500 375 +482 640 +640 480 +640 480 +612 612 +428 640 +640 480 +640 426 +640 480 +428 640 +640 480 +607 640 +640 428 +428 640 +640 480 +640 293 +640 433 +426 640 +640 428 +640 480 +640 411 +640 381 +480 640 +335 500 +450 302 +640 425 +640 480 +480 640 +457 640 +427 640 +480 640 +480 640 +500 375 +640 478 +640 427 +640 480 +640 427 +640 424 +640 360 +640 427 +640 480 +640 419 +640 480 +640 480 +640 494 +640 426 +640 423 +444 640 +640 480 +640 480 +640 480 +640 427 +500 375 +640 459 +640 428 +640 426 +640 481 +480 640 +640 425 +375 500 +515 640 +640 480 +640 480 +427 640 +640 413 +640 480 +640 480 +500 333 +427 640 +640 427 +640 428 +640 465 +480 640 +640 480 +640 428 +640 428 +640 214 +359 640 +640 478 +640 480 +640 320 +336 248 +500 400 +640 427 +640 529 +480 640 +640 427 +480 640 +640 427 +500 334 +481 640 +500 334 +480 640 +640 458 +427 640 +640 424 +640 426 +500 333 +640 523 +640 428 +640 487 +612 612 +500 375 +640 480 +640 517 +333 500 +348 500 +640 448 +640 428 +500 375 +500 375 +500 375 +640 426 +640 480 +640 480 +640 427 +640 414 +640 441 +640 480 +640 530 +640 640 +483 640 +640 480 +640 480 +427 640 +640 424 +640 428 +640 429 +375 500 +640 427 +640 480 +640 480 +640 512 +640 427 +479 640 +640 428 +640 408 +612 612 +640 480 +640 480 +375 500 +640 425 +640 427 +640 480 +480 640 +640 480 +480 640 +427 640 +640 480 +640 432 +640 427 +480 640 +640 480 +480 640 +640 480 +640 480 +640 480 +640 480 +640 480 +640 427 +449 640 +512 640 +427 640 +640 427 +500 375 +640 427 +640 519 +448 640 +640 427 +512 640 +640 391 +640 480 +640 480 +640 428 +424 640 +428 640 +640 427 +640 427 +640 425 +640 428 +447 640 +500 333 +500 334 +480 640 +640 446 +478 640 +640 480 +640 480 +640 425 +640 454 +640 426 +360 640 +500 334 +500 375 +640 427 +640 433 +480 640 +480 640 +640 426 +640 427 +640 359 +640 480 +640 480 +640 640 +500 375 +640 640 +480 640 +640 474 +640 480 +640 480 +640 427 +640 428 +500 375 +480 640 +640 480 +640 398 +427 640 +480 640 +500 375 +514 640 +500 375 +640 480 +640 427 +640 480 +500 375 +640 480 +640 480 +640 427 +480 640 +640 480 +640 425 +640 427 +640 480 +640 480 +640 424 +640 427 +640 438 +640 480 +640 427 +640 428 +424 640 +640 531 +480 640 +640 427 +500 333 +640 425 +640 425 +428 640 +480 640 +640 429 +640 480 +640 480 +375 500 +428 640 +500 375 +640 424 +640 480 +640 428 +425 640 +480 640 +640 425 +426 640 +640 480 +635 640 +500 332 +640 480 +640 480 +640 566 +640 480 +640 419 +426 640 +500 375 +425 640 +640 428 +334 500 +640 546 +519 640 +640 480 +500 375 +640 427 +612 612 +640 479 +614 640 +480 640 +480 640 +640 427 +640 480 +500 375 +640 480 +640 360 +640 480 +213 320 +500 406 +500 445 +480 640 +640 468 +640 427 +427 640 +640 427 +640 480 +500 486 +480 360 +640 428 +640 480 +480 640 +403 640 +640 480 +640 316 +425 640 +480 640 +640 429 +640 426 +640 427 +640 426 +500 375 +427 640 +612 612 +640 480 +640 480 +640 427 +640 418 +428 640 +500 324 +523 640 +640 426 +640 427 +640 427 +480 640 +640 427 +640 426 +500 500 +640 480 +640 427 +640 437 +480 640 +359 640 +640 428 +640 480 +640 424 +500 335 +500 375 +640 424 +427 640 +640 480 +405 640 +640 640 +427 640 +640 480 +333 500 +640 444 +640 426 +640 480 +500 375 +640 344 +640 394 +500 393 +375 500 +500 281 +477 558 +640 480 +640 428 +640 360 +426 640 +640 428 +640 480 +427 640 +640 480 +640 508 +640 427 +640 480 +640 480 +640 480 +640 427 +612 612 +640 428 +332 500 +640 427 +640 480 +428 640 +612 612 +640 425 +640 482 +640 419 +500 375 +640 486 +640 428 +640 428 +640 480 +500 333 +640 478 +360 640 +640 480 +640 428 +500 396 +640 424 +375 500 +640 480 +640 480 +612 612 +640 480 +640 428 +640 427 +640 447 +640 480 +640 640 +500 375 +640 480 +612 612 +640 427 +359 640 +640 424 +500 375 +640 480 +640 427 +640 479 +640 480 +640 428 +368 500 +640 640 +640 451 +544 640 +640 480 +640 439 +640 426 +640 425 +583 640 +640 429 +640 427 +640 480 +640 512 +640 480 +640 480 +640 427 +457 640 +640 429 +500 334 +640 480 +428 640 +428 640 +640 480 +480 640 +500 375 +427 640 +640 427 +406 640 +478 640 +640 480 +640 383 +612 612 +500 333 +640 427 +500 371 +612 612 +640 427 +375 500 +612 612 +468 640 +640 480 +426 640 +640 478 +640 480 +640 478 +640 480 +640 480 +640 411 +500 375 +640 427 +480 640 +640 449 +640 480 +640 480 +488 640 +640 480 +640 427 +480 640 +640 480 +480 640 +424 640 +577 640 +640 382 +480 640 +640 360 +640 480 +333 500 +333 500 +640 370 +640 480 +640 416 +640 480 +350 263 +640 480 +640 480 +640 427 +500 375 +640 516 +640 424 +426 640 +640 363 +480 640 +640 427 +640 426 +640 480 +640 425 +640 427 +640 546 +640 427 +640 427 +640 426 +375 500 +478 640 +640 480 +640 480 +480 640 +640 480 +640 480 +640 480 +640 427 +640 480 +640 480 +640 427 +500 356 +640 428 +640 428 +640 480 +640 427 +287 640 +640 480 +640 427 +640 427 +640 427 +640 427 +640 480 +375 500 +480 640 +480 640 +500 333 +500 240 +640 427 +640 428 +640 480 +500 350 +640 427 +640 480 +427 640 +361 500 +640 480 +426 640 +640 480 +375 500 +640 480 +640 480 +320 240 +640 480 +640 393 +480 640 +640 447 +500 454 +640 480 +640 428 +487 640 +640 480 +375 500 +640 480 +640 429 +640 480 +480 640 +176 144 +480 640 +640 480 +640 496 +474 640 +427 640 +612 612 +427 640 +640 480 +640 396 +640 480 +393 600 +612 612 +640 426 +640 480 +640 428 +640 480 +640 293 +640 287 +640 426 +500 375 +640 427 +480 640 +640 428 +640 427 +480 640 +640 480 +640 427 +333 500 +640 427 +640 480 +640 480 +500 336 +640 480 +640 427 +428 640 +480 640 +640 478 +640 512 +640 480 +640 480 +427 640 +640 480 +640 464 +640 426 +333 500 +500 378 +640 406 +640 427 +640 426 +426 640 +457 640 +640 478 +640 480 +640 480 +428 640 +500 375 +478 640 +500 333 +640 640 +640 426 +640 427 +640 457 +640 480 +640 398 +500 345 +640 480 +640 617 +640 361 +640 427 +640 426 +480 640 +640 640 +640 400 +640 480 +640 480 +640 480 +640 416 +480 640 +316 480 +640 429 +640 480 +640 425 +640 403 +640 425 +640 457 +640 480 +427 640 +333 500 +640 424 +640 427 +640 427 +460 640 +585 640 +640 480 +427 640 +640 479 +640 480 +500 375 +425 640 +640 480 +640 480 +640 480 +500 358 +640 480 +640 427 +640 480 +480 640 +500 375 +640 640 +427 640 +500 375 +640 428 +640 480 +640 344 +500 375 +640 480 +640 425 +640 426 +640 359 +640 469 +640 426 +480 640 +640 426 +500 375 +640 426 +480 640 +427 640 +500 375 +480 640 +640 480 +426 640 +426 640 +480 640 +426 640 +640 640 +508 640 +640 427 +427 640 +428 640 +640 480 +640 640 +480 640 +500 375 +640 480 +640 427 +640 400 +640 427 +640 480 +334 500 +409 640 +500 484 +640 424 +640 360 +612 612 +640 427 +500 327 +640 640 +640 360 +640 424 +640 428 +640 622 +640 480 +500 333 +427 640 +320 240 +640 480 +640 481 +427 640 +640 480 +640 424 +640 480 +640 480 +375 500 +640 425 +640 598 +640 425 +640 427 +612 612 +640 480 +640 215 +375 500 +537 640 +612 612 +640 480 +640 428 +640 427 +640 480 +550 640 +333 500 +640 371 +640 427 +612 612 +640 480 +480 640 +640 426 +640 427 +640 480 +415 640 +640 480 +640 480 +640 480 +640 426 +488 640 +640 428 +640 426 +640 427 +640 426 +480 640 +500 333 +512 640 +480 640 +496 640 +640 478 +618 640 +500 375 +640 480 +640 480 +589 640 +640 480 +640 426 +640 427 +640 512 +640 428 +640 480 +427 640 +640 421 +640 426 +640 611 +640 456 +640 429 +480 640 +640 480 +640 480 +375 500 +427 640 +640 480 +480 640 +640 427 +640 427 +500 375 +500 375 +500 375 +500 335 +640 309 +640 419 +640 459 +640 480 +640 518 +640 480 +640 480 +640 426 +640 480 +480 640 +427 640 +640 428 +640 480 +640 427 +640 489 +612 612 +413 640 +640 427 +640 602 +640 428 +480 640 +640 480 +500 375 +640 480 +640 481 +640 480 +640 427 +640 480 +640 480 +640 480 +640 361 +640 427 +480 640 +640 480 +640 428 +424 640 +588 640 +480 640 +500 333 +439 640 +640 427 +640 505 +640 480 +511 640 +427 640 +480 640 +480 640 +640 427 +612 612 +640 427 +432 640 +500 333 +640 480 +640 427 +640 480 +640 320 +640 427 +640 427 +640 426 +640 480 +500 375 +640 427 +480 640 +640 480 +640 425 +383 640 +612 612 +640 480 +427 640 +640 426 +375 500 +480 640 +612 612 +486 640 +640 462 +640 428 +640 426 +640 427 +427 640 +640 480 +612 612 +512 640 +640 428 +640 480 +640 478 +480 640 +640 407 +640 480 +640 480 +480 640 +428 640 +640 426 +640 428 +640 427 +640 480 +640 427 +640 504 +480 640 +640 427 +500 333 +640 427 +640 425 +640 481 +426 640 +640 427 +640 427 +640 425 +480 640 +480 640 +424 500 +640 427 +500 337 +640 480 +500 333 +427 640 +640 418 +640 354 +640 425 +640 427 +640 503 +640 427 +640 424 +500 333 +640 483 +640 426 +640 426 +640 480 +640 480 +640 426 +500 375 +640 427 +640 480 +480 640 +640 428 +427 640 +640 480 +426 640 +640 480 +640 480 +640 480 +500 375 +640 480 +640 480 +640 428 +640 428 +640 480 +640 480 +640 316 +640 513 +640 424 +480 640 +640 480 +640 428 +638 640 +640 425 +640 480 +640 480 +640 480 +640 427 +640 480 +640 478 +640 480 +640 427 +640 604 +640 361 +640 427 +480 640 +500 375 +640 480 +480 640 +640 427 +480 640 +640 429 +640 427 +640 420 +640 428 +640 427 +640 425 +640 426 +439 640 +640 480 +640 480 +640 427 +640 428 +640 427 +640 346 +640 427 +640 438 +640 427 +640 428 +500 375 +640 480 +640 431 +640 426 +640 480 +640 480 +333 500 +480 640 +640 480 +640 512 +640 340 +354 375 +640 424 +640 480 +640 480 +640 480 +640 425 +640 480 +427 640 +480 640 +500 375 +425 640 +640 480 +374 500 +500 476 +640 640 +640 427 +425 640 +400 302 +640 480 +463 500 +426 640 +640 480 +426 640 +640 427 +640 360 +640 480 +426 640 +640 480 +640 480 +640 427 +500 392 +640 378 +640 480 +640 343 +640 427 +640 426 +640 427 +640 426 +400 500 +500 333 +640 399 +640 512 +640 366 +612 612 +640 426 +640 480 +640 425 +598 640 +640 427 +480 640 +500 375 +508 640 +424 640 +640 427 +640 480 +480 640 +379 500 +640 318 +640 428 +427 640 +640 361 +640 427 +612 612 +640 427 +427 640 +480 640 +427 640 +640 427 +640 493 +640 425 +640 426 +612 612 +640 480 +640 427 +640 531 +500 333 +480 640 +640 425 +500 375 +640 399 +640 489 +640 426 +500 375 +640 427 +640 426 +640 480 +512 640 +427 640 +640 480 +406 640 +480 640 +612 612 +500 375 +640 480 +640 428 +480 640 +640 383 +640 480 +640 454 +640 480 +640 427 +425 640 +375 500 +640 480 +640 426 +640 480 +640 425 +640 427 +424 640 +469 640 +640 480 +640 480 +640 426 +375 500 +640 425 +640 457 +500 334 +640 426 +480 640 +640 480 +640 427 +640 480 +640 629 +480 640 +478 640 +480 640 +640 480 +640 426 +424 640 +640 427 +640 480 +640 480 +640 201 +640 480 +640 420 +640 480 +500 375 +640 478 +640 433 +482 640 +500 375 +640 480 +500 375 +375 500 +640 500 +640 481 +640 432 +640 425 +640 480 +640 480 +640 425 +640 400 +640 480 +640 414 +640 443 +640 425 +500 495 +640 480 +500 375 +640 480 +375 500 +640 427 +415 500 +640 427 +640 427 +500 333 +640 425 +612 612 +640 426 +426 640 +640 424 +500 290 +640 428 +640 357 +480 640 +480 640 +478 640 +640 427 +640 480 +500 333 +640 427 +640 426 +640 428 +640 569 +640 480 +457 640 +612 612 +640 428 +359 640 +640 428 +500 375 +453 640 +640 480 +640 427 +480 640 +640 427 +500 334 +333 500 +640 517 +640 425 +461 640 +490 640 +640 480 +500 375 +640 480 +480 640 +640 480 +480 640 +640 486 +640 480 +500 334 +640 480 +612 612 +640 427 +640 428 +640 310 +640 427 +612 612 +425 640 +427 640 +300 500 +640 438 +332 500 +640 427 +500 316 +427 640 +480 640 +640 480 +500 352 +640 428 +640 412 +640 480 +427 640 +413 640 +500 375 +640 226 +640 496 +640 612 +640 433 +640 464 +640 426 +640 480 +375 500 +502 640 +640 480 +500 375 +640 425 +640 480 +480 640 +640 480 +640 427 +640 480 +480 640 +480 640 +427 640 +640 393 +500 332 +640 360 +332 500 +640 427 +500 332 +640 428 +640 426 +500 375 +478 640 +640 427 +640 640 +640 427 +485 640 +478 640 +612 612 +640 425 +640 457 +545 640 +480 640 +500 375 +640 480 +512 640 +640 427 +333 500 +640 427 +640 480 +640 413 +640 480 +512 640 +640 433 +640 594 +426 640 +640 424 +480 640 +640 544 +640 427 +640 600 +640 480 +480 640 +640 349 +480 640 +334 500 +500 365 +333 500 +640 389 +640 480 +640 480 +640 421 +640 480 +375 500 +480 640 +478 640 +640 480 +640 480 +500 375 +640 425 +640 430 +640 360 +479 640 +480 640 +640 426 +640 480 +425 640 +640 480 +640 480 +640 480 +640 480 +500 335 +640 480 +480 640 +640 363 +486 640 +480 640 +640 427 +500 281 +640 416 +640 427 +480 640 +600 399 +500 350 +454 640 +640 427 +640 480 +640 480 +427 640 +640 480 +640 427 +640 461 +640 513 +640 427 +333 500 +640 427 +640 512 +640 480 +640 480 +612 612 +640 480 +500 333 +362 500 +640 427 +500 375 +500 334 +640 427 +640 425 +480 640 +640 425 +427 640 +640 427 +640 480 +448 640 +640 426 +640 427 +640 427 +480 640 +640 401 +640 427 +640 480 +640 480 +640 425 +640 435 +640 425 +640 427 +375 500 +640 480 +612 612 +640 427 +640 427 +640 480 +427 640 +640 480 +640 480 +427 640 +640 480 +640 427 +640 341 +581 640 +640 480 +480 640 +640 360 +640 409 +332 500 +640 429 +640 427 +433 640 +375 500 +640 480 +640 480 +640 512 +640 480 +640 427 +640 480 +640 427 +640 480 +640 426 +480 640 +640 480 +424 640 +640 428 +481 640 +640 426 +480 640 +640 480 +640 427 +500 375 +640 426 +640 480 +480 640 +640 480 +429 640 +640 480 +440 640 +480 640 +400 300 +640 426 +614 640 +500 455 +640 480 +640 427 +640 427 +640 425 +640 480 +640 480 +640 480 +480 640 +500 426 +500 375 +640 427 +500 335 +500 375 +500 375 +640 536 +640 640 +480 640 +640 426 +640 426 +429 640 +640 426 +640 427 +640 427 +480 640 +640 480 +640 499 +640 427 +483 640 +640 427 +640 477 +640 480 +640 512 +640 234 +640 427 +640 480 +640 480 +640 427 +640 424 +640 424 +480 640 +473 303 +500 375 +332 500 +640 427 +640 415 +478 640 +640 480 +640 425 +640 427 +640 427 +640 480 +500 333 +640 478 +640 422 +640 430 +640 480 +640 480 +500 375 +640 427 +640 480 +640 480 +640 480 +640 480 +640 480 +480 640 +500 375 +360 270 +393 640 +640 428 +478 640 +640 480 +557 640 +640 427 +333 500 +427 640 +317 500 +640 425 +480 640 +640 478 +640 427 +640 427 +640 374 +480 640 +640 480 +640 427 +375 500 +480 640 +427 640 +640 384 +640 480 +640 480 +394 640 +640 480 +640 480 +640 437 +640 427 +430 640 +640 160 +480 640 +427 640 +640 478 +640 354 +640 425 +500 333 +640 427 +427 640 +640 480 +500 375 +500 375 +640 428 +640 427 +640 478 +640 427 +480 640 +640 425 +640 480 +640 424 +640 457 +640 480 +500 333 +500 378 +375 500 +640 448 +500 333 +640 480 +640 423 +640 428 +640 494 +640 480 +480 640 +640 391 +640 479 +480 640 +640 510 +640 427 +425 640 +640 480 +427 640 +480 640 +480 640 +640 381 +640 480 +500 333 +518 640 +478 640 +640 640 +640 426 +640 414 +640 424 +372 500 +480 640 +480 640 +480 640 +640 480 +640 457 +427 640 +640 428 +640 360 +500 500 +612 499 +640 427 +480 640 +640 427 +426 640 +640 425 +640 411 +640 480 +640 480 +640 480 +640 428 +467 640 +640 480 +640 510 +640 427 +640 427 +640 427 +640 480 +640 428 +640 480 +640 426 +500 375 +333 500 +375 500 +640 480 +500 458 +640 640 +480 640 +640 427 +640 359 +640 480 +591 640 +464 640 +640 427 +384 500 +480 640 +480 640 +640 427 +640 427 +640 428 +640 428 +500 375 +378 500 +500 333 +640 480 +640 480 +640 360 +500 331 +640 480 +500 375 +501 640 +640 427 +426 640 +640 427 +640 480 +427 640 +640 404 +640 403 +427 640 +640 480 +640 427 +640 428 +640 480 +640 427 +427 640 +518 640 +463 640 +417 640 +640 640 +394 640 +640 310 +500 375 +426 640 +640 480 +426 640 +640 427 +640 178 +480 640 +640 480 +428 640 +640 480 +640 480 +640 428 +426 640 +640 480 +427 640 +612 612 +640 480 +427 640 +640 480 +640 480 +640 480 +480 640 +640 425 +427 640 +640 360 +640 427 +640 427 +640 427 +640 426 +640 427 +640 425 +640 427 +500 375 +480 640 +486 500 +600 600 +640 480 +640 425 +640 480 +640 436 +640 425 +480 640 +640 480 +640 360 +640 424 +640 426 +640 427 +500 375 +612 612 +640 425 +425 640 +496 640 +640 474 +500 375 +640 480 +640 396 +640 459 +480 640 +640 425 +427 640 +640 480 +480 640 +480 640 +640 427 +640 360 +640 425 +427 640 +500 334 +426 640 +429 640 +533 640 +640 428 +561 640 +334 500 +640 428 +480 320 +640 432 +640 424 +500 375 +640 427 +640 480 +426 640 +424 640 +640 446 +640 480 +640 426 +640 427 +500 333 +640 480 +640 427 +500 375 +480 640 +640 427 +375 500 +480 640 +640 426 +640 428 +640 427 +612 612 +640 428 +427 640 +640 480 +640 480 +448 640 +426 640 +640 425 +640 427 +640 464 +640 640 +425 640 +640 427 +384 500 +480 640 +480 640 +640 427 +500 358 +640 425 +640 480 +425 640 +417 640 +612 612 +640 480 +640 480 +640 480 +480 640 +640 359 +640 485 +640 640 +640 480 +300 225 +640 640 +640 480 +500 332 +640 423 +480 640 +640 480 +640 480 +640 424 +640 427 +640 425 +640 480 +640 427 +640 427 +640 457 +640 480 +427 640 +640 480 +640 419 +427 640 +640 427 +640 480 +640 480 +640 427 +500 360 +480 640 +640 480 +640 480 +640 480 +480 640 +640 427 +640 427 +640 428 +640 427 +640 427 +640 427 +640 330 +640 424 +640 386 +640 427 +640 480 +640 480 +640 480 +480 640 +375 500 +640 398 +640 426 +640 436 +640 426 +640 427 +640 480 +500 375 +640 426 +427 640 +640 426 +640 426 +640 359 +640 480 +640 427 +640 480 +640 428 +640 303 +519 631 +640 480 +640 480 +640 513 +640 360 +612 612 +480 640 +500 371 +640 480 +640 426 +640 427 +640 360 +640 512 +640 422 +640 427 +640 480 +640 480 +640 533 +640 426 +500 347 +397 640 +640 425 +640 480 +640 427 +640 640 +640 480 +640 534 +640 428 +640 480 +500 354 +640 427 +640 480 +640 425 +640 427 +480 640 +333 500 +639 640 +640 413 +640 508 +500 333 +640 427 +640 427 +480 640 +640 480 +640 429 +500 375 +480 640 +623 640 +452 640 +640 431 +480 640 +640 424 +640 427 +603 640 +500 375 +640 428 +640 376 +640 427 +640 427 +640 480 +640 426 +640 427 +480 640 +640 427 +640 426 +640 425 +640 427 +640 426 +640 451 +640 427 +480 640 +428 640 +636 477 +427 640 +640 389 +450 640 +640 480 +640 480 +426 640 +640 480 +640 427 +640 424 +480 640 +640 427 +489 640 +640 525 +640 425 +500 376 +640 427 +640 480 +640 446 +640 480 +640 427 +640 480 +500 375 +640 429 +480 640 +622 640 +640 428 +478 640 +640 426 +640 480 +640 360 +375 500 +500 375 +480 640 +640 480 +640 466 +500 375 +640 329 +541 640 +426 640 +640 640 +640 397 +640 425 +500 336 +640 359 +640 430 +640 427 +640 427 +480 640 +640 360 +640 480 +640 427 +591 640 +480 640 +640 428 +640 480 +428 640 +640 480 +375 500 +640 480 +640 480 +484 500 +612 612 +427 640 +640 383 +500 333 +640 427 +407 640 +640 433 +640 480 +500 375 +500 429 +425 640 +640 425 +612 612 +640 480 +500 375 +640 480 +640 480 +426 640 +500 348 +640 480 +488 500 +640 427 +500 375 +478 640 +640 480 +500 312 +333 500 +640 429 +640 480 +640 429 +640 427 +640 518 +640 474 +640 480 +640 480 +480 360 +640 427 +640 513 +622 640 +640 480 +398 640 +640 427 +640 426 +332 500 +469 640 +640 480 +640 429 +640 427 +640 375 +640 424 +426 640 +640 427 +640 480 +450 338 +480 640 +640 427 +640 640 +640 427 +640 427 +486 365 +427 640 +640 427 +640 480 +500 375 +640 428 +640 427 +640 425 +612 612 +640 423 +640 465 +640 511 +640 427 +640 480 +375 500 +640 424 +640 480 +640 425 +640 359 +500 335 +480 640 +640 480 +640 480 +640 427 +478 640 +640 480 +500 333 +640 640 +640 423 +640 427 +500 375 +640 426 +640 480 +411 640 +640 428 +640 427 +612 612 +640 480 +640 426 +424 640 +640 477 +640 423 +640 480 +640 416 +640 429 +640 481 +480 640 +640 449 +640 480 +640 427 +612 612 +500 333 +640 480 +640 472 +640 640 +640 480 +480 640 +640 426 +640 428 +480 640 +640 426 +480 640 +427 640 +640 480 +640 480 +375 500 +640 480 +360 640 +640 480 +640 486 +640 480 +640 480 +640 480 +425 640 +520 640 +640 426 +640 480 +640 480 +500 281 +500 375 +640 427 +427 640 +535 640 +612 612 +480 640 +360 640 +640 480 +640 480 +395 640 +579 640 +377 500 +640 480 +640 480 +640 427 +640 480 +500 375 +482 640 +427 640 +640 480 +480 640 +480 640 +500 375 +640 480 +400 266 +500 375 +640 480 +640 639 +640 480 +375 500 +480 640 +640 480 +426 640 +480 640 +427 640 +640 427 +426 640 +640 480 +640 289 +640 480 +640 427 +500 434 +640 637 +640 428 +640 480 +640 478 +640 383 +640 427 +440 500 +359 640 +640 480 +640 427 +425 640 +376 500 +427 640 +640 640 +640 356 +640 480 +236 236 +375 500 +640 427 +480 640 +640 480 +427 640 +415 500 +640 427 +640 427 +640 427 +640 466 +500 375 +640 480 +375 500 +480 640 +640 480 +480 640 +640 339 +640 251 +640 426 +427 640 +500 333 +640 459 +640 427 +640 419 +375 500 +426 640 +640 480 +640 480 +640 480 +421 640 +640 427 +333 500 +640 425 +640 425 +640 400 +640 426 +640 480 +500 332 +480 640 +640 480 +640 480 +640 523 +640 480 +640 480 +640 444 +540 640 +472 640 +500 333 +640 531 +640 425 +640 480 +640 478 +500 375 +640 480 +640 440 +640 480 +640 415 +640 455 +640 428 +359 640 +429 640 +640 480 +480 640 +640 480 +640 427 +427 640 +640 480 +512 640 +428 640 +480 640 +640 555 +640 429 +640 427 +359 640 +640 427 +640 427 +640 442 +500 375 +640 434 +428 640 +500 333 +640 426 +640 427 +640 427 +640 480 +640 424 +640 359 +640 590 +480 640 +640 360 +427 640 +512 640 +640 480 +511 640 +640 428 +640 447 +640 480 +640 428 +640 480 +640 480 +422 640 +640 480 +480 640 +500 375 +375 500 +640 425 +640 439 +640 480 +500 375 +375 500 +640 426 +500 338 +640 427 +640 480 +500 400 +640 360 +640 426 +640 640 +612 612 +640 360 +640 360 +500 375 +612 612 +640 427 +640 334 +640 428 +640 427 +640 425 +427 640 +428 640 +585 640 +500 344 +640 360 +426 640 +462 640 +640 427 +480 640 +513 640 +500 375 +500 377 +624 416 +427 640 +508 640 +640 480 +640 639 +640 428 +640 428 +640 428 +640 437 +375 500 +640 427 +640 427 +640 427 +640 360 +640 480 +640 428 +480 640 +640 425 +640 427 +480 640 +480 640 +640 427 +640 428 +425 640 +640 429 +500 375 +640 426 +640 427 +640 491 +640 480 +640 480 +427 640 +640 429 +640 426 +640 426 +640 480 +640 426 +640 392 +640 425 +458 640 +640 424 +640 480 +640 480 +640 480 +640 480 +640 480 +446 640 +640 480 +640 480 +500 333 +640 427 +640 428 +427 640 +477 640 +640 426 +640 496 +640 426 +640 428 +507 640 +640 427 +640 480 +480 640 +480 640 +640 427 +640 480 +334 500 +640 455 +640 431 +640 428 +512 326 +602 640 +640 485 +640 640 +612 612 +640 419 +480 640 +500 333 +333 500 +640 433 +640 480 +640 426 +640 427 +480 640 +427 640 +640 480 +640 427 +500 375 +640 480 +640 480 +640 480 +480 640 +640 480 +640 480 +640 480 +640 480 +640 429 +640 427 +640 427 +640 466 +500 332 +426 640 +480 640 +640 410 +640 480 +640 480 +640 359 +640 480 +424 640 +640 396 +640 427 +640 480 +640 427 +640 480 +480 640 +427 640 +480 640 +640 480 +440 640 +333 500 +640 427 +640 480 +640 427 +426 640 +640 427 +500 500 +640 427 +549 640 +500 300 +480 640 +640 427 +640 424 +640 427 +640 425 +480 640 +640 326 +428 640 +640 434 +480 640 +360 640 +480 640 +500 375 +640 427 +478 640 +640 427 +640 427 +640 640 +640 480 +640 456 +427 640 +640 480 +478 640 +375 500 +435 640 +640 425 +640 471 +640 404 +640 480 +480 640 +427 640 +640 480 +640 427 +640 481 +640 480 +640 480 +640 426 +640 480 +333 500 +640 480 +640 429 +500 333 +640 427 +606 640 +500 333 +640 427 +640 480 +640 428 +375 500 +640 427 +640 427 +640 425 +640 480 +640 480 +640 427 +640 181 +480 640 +640 480 +640 438 +640 480 +640 480 +640 480 +480 640 +640 425 +480 640 +500 333 +640 480 +375 500 +480 640 +359 640 +640 480 +480 640 +640 383 +500 304 +640 427 +640 480 +640 457 +640 428 +640 425 +480 640 +500 333 +480 640 +640 427 +383 640 +640 426 +480 640 +612 612 +640 480 +640 480 +426 640 +640 366 +375 500 +640 360 +640 427 +428 640 +640 427 +640 427 +640 401 +640 425 +640 427 +640 564 +640 481 +640 427 +500 333 +640 480 +383 640 +478 640 +640 640 +500 500 +640 432 +500 375 +427 640 +480 640 +640 424 +640 480 +640 426 +480 640 +640 480 +640 567 +640 429 +640 427 +500 334 +480 640 +640 480 +500 333 +640 480 +427 640 +640 424 +640 480 +640 480 +640 359 +640 421 +428 640 +640 427 +640 426 +640 427 +640 426 +579 640 +640 366 +640 426 +480 640 +640 480 +500 335 +480 640 +480 640 +640 480 +411 640 +427 640 +640 480 +375 500 +527 640 +500 374 +341 500 +500 375 +640 480 +427 640 +640 427 +421 640 +480 640 +640 480 +640 427 +492 500 +640 427 +640 425 +640 427 +640 480 +640 424 +640 424 +640 427 +640 481 +500 332 +640 441 +640 480 +403 640 +500 375 +480 640 +640 427 +432 640 +426 640 +640 428 +640 427 +500 375 +480 640 +640 426 +640 427 +455 640 +487 640 +640 427 +640 427 +428 640 +640 480 +500 500 +640 401 +640 480 +640 480 +640 427 +375 500 +640 464 +640 424 +612 612 +640 426 +640 426 +640 480 +640 426 +640 480 +427 640 +640 425 +612 612 +640 454 +640 427 +640 427 +500 332 +320 240 +453 640 +640 535 +640 539 +427 640 +480 640 +347 640 +480 640 +427 640 +427 640 +409 640 +480 640 +500 346 +427 640 +640 427 +426 640 +640 480 +640 480 +425 640 +500 332 +480 640 +500 375 +426 640 +426 640 +640 480 +640 480 +480 640 +640 427 +428 640 +375 500 +640 426 +500 209 +427 640 +640 427 +480 640 +640 425 +480 640 +436 640 +640 425 +640 438 +640 426 +640 495 +640 424 +500 333 +640 426 +480 640 +428 640 +640 427 +640 499 +640 480 +640 426 +640 480 +500 375 +640 480 +426 640 +640 555 +640 480 +640 483 +640 425 +375 500 +640 480 +500 333 +640 480 +640 426 +630 640 +425 640 +640 421 +480 640 +500 375 +480 640 +500 375 +640 427 +640 427 +640 427 +640 474 +333 500 +640 457 +640 480 +640 417 +442 442 +640 408 +640 427 +640 425 +640 360 +427 640 +476 640 +638 640 +640 425 +500 281 +500 375 +426 640 +640 480 +640 426 +338 500 +640 480 +640 427 +640 428 +640 480 +640 640 +640 427 +640 493 +640 427 +543 640 +640 360 +640 480 +640 480 +612 612 +425 640 +640 434 +640 480 +500 400 +500 325 +500 400 +640 480 +640 511 +640 457 +640 427 +640 480 +429 640 +640 425 +640 454 +640 428 +634 640 +612 612 +640 480 +640 479 +640 480 +640 480 +480 360 +640 427 +640 480 +640 425 +500 335 +513 640 +612 612 +640 527 +640 427 +640 343 +640 426 +612 612 +640 427 +640 480 +640 427 +640 360 +467 640 +640 359 +500 334 +640 480 +640 426 +640 480 +640 428 +640 343 +640 640 +640 424 +640 408 +476 640 +438 640 +479 640 +426 640 +480 640 +409 255 +640 428 +640 480 +640 427 +640 480 +500 333 +640 428 +480 640 +480 640 +640 426 +426 640 +640 426 +640 427 +373 495 +640 416 +480 640 +480 640 +640 425 +500 326 +640 426 +640 480 +500 400 +500 335 +640 480 +640 475 +640 480 +612 612 +640 480 +427 640 +640 427 +640 427 +640 480 +640 427 +428 640 +640 427 +640 640 +640 427 +640 398 +640 505 +640 427 +584 640 +640 480 +640 401 +500 281 +612 612 +500 375 +640 426 +500 375 +500 341 +640 424 +640 390 +500 307 +640 401 +640 424 +500 375 +640 427 +549 640 +640 427 +640 427 +500 375 +640 361 +375 500 +640 427 +424 640 +640 480 +640 213 +438 640 +640 442 +480 640 +640 428 +394 640 +640 424 +640 313 +640 480 +640 480 +640 480 +612 612 +480 640 +486 640 +640 413 +640 427 +625 640 +640 413 +640 512 +640 429 +640 426 +640 429 +640 480 +640 427 +500 333 +640 480 +640 436 +640 414 +500 375 +428 640 +640 425 +640 480 +480 640 +640 424 +480 640 +500 500 +640 480 +640 480 +640 427 +500 403 +640 480 +500 375 +640 480 +640 427 +640 480 +640 480 +640 360 +640 427 +375 500 +640 480 +640 427 +427 640 +640 480 +612 612 +427 640 +426 640 +640 425 +640 480 +640 427 +640 427 +640 426 +500 375 +640 480 +640 480 +640 439 +500 334 +640 480 +640 480 +500 333 +500 375 +500 375 +500 333 +640 427 +640 480 +402 500 +640 444 +640 426 +640 427 +458 640 +640 480 +640 427 +640 480 +640 478 +640 640 +640 480 +640 480 +640 480 +640 427 +640 482 +425 640 +640 427 +640 480 +640 480 +640 427 +640 480 +401 603 +640 640 +640 346 +640 384 +640 427 +640 480 +640 480 +640 510 +640 480 +419 640 +640 428 +640 427 +640 480 +640 480 +425 640 +640 478 +480 640 +640 427 +640 349 +640 640 +640 480 +640 427 +640 588 +640 434 +640 366 +640 480 +640 458 +480 640 +612 612 +480 640 +640 480 +640 427 +640 429 +640 480 +400 224 +640 428 +240 160 +500 385 +640 480 +640 414 +640 501 +640 480 +448 640 +375 500 +640 425 +640 426 +640 470 +640 480 +640 424 +640 480 +640 480 +640 428 +640 480 +640 358 +375 500 +640 480 +483 640 +480 640 +640 427 +640 483 +625 480 +640 480 +640 480 +640 425 +640 480 +640 427 +600 450 +500 336 +640 480 +640 427 +640 479 +640 480 +640 425 +480 640 +640 426 +640 427 +640 480 +640 433 +640 458 +640 436 +500 375 +500 332 +640 480 +427 640 +640 556 +640 428 +640 428 +640 475 +480 640 +375 500 +375 500 +640 428 +640 480 +640 427 +427 640 +640 474 +480 640 +480 640 +640 480 +640 457 +612 612 +500 333 +640 480 +640 480 +640 359 +480 640 +640 428 +375 500 +640 480 +640 440 +427 640 +500 313 +500 333 +640 427 +640 460 +640 426 +640 427 +427 640 +640 427 +640 480 +500 375 +426 640 +640 427 +500 425 +640 480 +480 640 +640 424 +496 640 +640 515 +640 360 +500 374 +640 640 +640 480 +458 640 +500 375 +640 433 +333 500 +640 360 +640 427 +640 427 +425 640 +640 427 +640 480 +640 429 +480 640 +500 422 +425 640 +480 640 +640 421 +640 480 +640 480 +500 375 +500 333 +640 518 +640 479 +640 471 +640 427 +640 480 +427 640 +640 427 +640 382 +500 375 +500 305 +640 350 +640 425 +427 640 +640 479 +640 426 +486 640 +640 512 +640 427 +480 640 +640 480 +640 480 +500 375 +640 480 +640 392 +478 640 +640 309 +612 612 +640 428 +247 500 +640 480 +640 480 +640 521 +640 427 +640 480 +640 480 +518 640 +640 480 +640 426 +500 375 +640 480 +640 480 +427 640 +640 480 +356 640 +600 400 +640 418 +640 480 +516 640 +640 256 +640 396 +640 484 +640 436 +382 500 +612 612 +640 426 +640 400 +480 640 +640 428 +640 422 +425 640 +612 612 +640 392 +640 426 +426 640 +640 428 +640 480 +480 640 +370 251 +640 427 +640 479 +427 640 +640 383 +640 425 +640 427 +640 480 +640 427 +640 425 +640 480 +480 640 +640 426 +640 386 +640 383 +612 612 +640 428 +640 425 +640 480 +428 640 +640 425 +640 480 +640 480 +480 640 +640 480 +640 425 +640 426 +534 640 +640 480 +640 426 +640 428 +500 375 +640 360 +500 333 +640 427 +480 640 +640 360 +500 400 +640 424 +500 330 +640 588 +640 480 +480 640 +640 347 +385 289 +640 480 +640 423 +640 480 +640 480 +640 450 +640 480 +480 640 +425 640 +640 480 +500 332 +640 480 +612 612 +640 457 +640 480 +468 304 +640 427 +425 640 +640 427 +640 480 +480 640 +640 425 +640 480 +640 427 +640 478 +500 500 +640 480 +500 375 +375 500 +640 480 +480 640 +640 425 +640 424 +640 480 +640 415 +640 480 +640 329 +640 425 +437 640 +640 427 +640 427 +480 640 +640 426 +500 375 +640 480 +333 500 +640 426 +640 446 +640 480 +480 640 +500 333 +482 625 +640 480 +480 640 +484 640 +466 640 +640 427 +640 480 +640 427 +640 424 +500 333 +640 480 +640 400 +640 480 +640 427 +480 640 +640 429 +640 480 +640 427 +640 427 +640 425 +480 640 +640 427 +480 640 +375 500 +500 333 +500 317 +640 427 +451 640 +480 640 +640 480 +427 640 +640 428 +640 426 +480 640 +320 240 +640 480 +640 427 +640 426 +640 480 +640 436 +640 429 +640 427 +640 480 +640 410 +500 360 +640 480 +640 480 +640 640 +640 427 +640 543 +428 640 +640 489 +640 570 +500 375 +613 640 +500 431 +640 432 +428 640 +640 479 +640 480 +640 480 +612 612 +640 480 +500 375 +640 480 +500 375 +640 421 +640 426 +640 424 +640 427 +476 640 +612 612 +640 480 +640 428 +640 480 +640 480 +480 640 +640 417 +480 640 +640 425 +640 480 +640 456 +640 480 +448 640 +588 640 +640 425 +500 375 +640 427 +640 480 +427 640 +424 640 +480 640 +640 428 +640 480 +480 640 +640 480 +500 375 +480 360 +480 640 +640 426 +480 640 +640 427 +640 426 +640 422 +427 640 +480 640 +640 427 +500 364 +640 428 +334 500 +375 500 +640 438 +427 640 +640 480 +640 480 +500 333 +640 435 +640 480 +500 333 +640 480 +427 640 +500 333 +640 480 +640 425 +640 480 +640 412 +480 640 +640 480 +464 640 +640 480 +480 640 +640 360 +640 428 +640 355 +640 427 +640 427 +640 480 +500 333 +640 480 +640 480 +500 375 +640 427 +375 500 +546 640 +339 500 +640 427 +640 429 +425 640 +640 427 +640 427 +640 361 +640 427 +640 321 +640 427 +640 426 +640 427 +640 480 +375 500 +640 425 +500 333 +640 480 +640 459 +640 490 +640 427 +640 480 +640 427 +640 425 +375 500 +320 408 +640 457 +500 366 +640 427 +640 512 +480 640 +640 588 +640 625 +427 640 +640 426 +480 640 +425 640 +612 612 +640 419 +640 480 +500 316 +635 640 +500 378 +640 424 +640 426 +640 360 +640 460 +640 480 +640 424 +500 375 +640 480 +640 480 +426 640 +427 640 +640 360 +640 479 +640 427 +640 480 +500 333 +640 426 +640 427 +612 612 +500 333 +640 429 +500 418 +427 640 +640 425 +480 640 +640 480 +640 428 +640 480 +640 480 +427 640 +640 420 +640 427 +640 427 +640 427 +500 357 +480 640 +480 640 +640 482 +500 375 +640 480 +640 433 +464 640 +467 640 +500 332 +500 375 +640 349 +640 427 +640 480 +640 480 +334 500 +375 500 +640 423 +640 480 +640 428 +500 451 +640 428 +640 427 +517 640 +640 426 +640 427 +480 640 +383 640 +480 640 +640 428 +640 426 +640 428 +479 640 +640 360 +335 198 +640 480 +640 426 +640 480 +510 640 +640 426 +612 612 +640 424 +630 640 +640 427 +640 427 +640 427 +640 428 +640 480 +480 640 +472 640 +500 375 +640 480 +425 640 +640 480 +640 428 +378 640 +427 640 +640 480 +375 500 +640 480 +427 640 +281 500 +640 436 +480 640 +375 500 +640 567 +640 427 +640 427 +375 500 +640 424 +640 480 +640 493 +640 360 +640 497 +258 344 +640 480 +640 427 +441 640 +333 500 +360 640 +500 375 +640 480 +427 640 +640 428 +640 427 +640 428 +500 375 +640 427 +500 289 +640 359 +640 301 +640 428 +428 640 +640 480 +473 640 +640 427 +640 426 +480 640 +612 612 +640 479 +640 427 +640 480 +640 480 +429 640 +640 480 +640 480 +500 375 +640 480 +640 480 +640 427 +427 640 +453 640 +500 390 +640 393 +500 375 +500 334 +640 346 +480 640 +640 480 +427 640 +640 427 +640 426 +640 427 +640 428 +640 480 +427 640 +640 480 +640 433 +640 425 +640 427 +640 480 +472 640 +640 480 +640 427 +640 640 +640 480 +639 640 +640 360 +361 640 +640 480 +333 500 +640 427 +640 480 +640 368 +426 640 +640 427 +480 640 +640 359 +427 640 +640 480 +640 408 +640 429 +640 478 +640 480 +640 417 +640 427 +640 426 +500 375 +640 480 +640 427 +640 480 +640 480 +640 409 +640 480 +640 427 +640 427 +480 640 +480 640 +640 480 +640 428 +612 612 +333 500 +640 438 +640 427 +616 640 +500 375 +640 480 +500 339 +640 427 +640 428 +640 480 +640 480 +640 480 +640 427 +640 480 +640 359 +640 428 +640 359 +640 480 +640 381 +640 480 +480 640 +640 360 +640 425 +640 479 +640 425 +640 485 +640 426 +640 427 +628 640 +500 375 +500 375 +640 427 +640 423 +425 640 +480 640 +500 375 +640 428 +458 640 +479 640 +640 480 +480 640 +640 480 +288 640 +640 427 +640 477 +640 427 +480 640 +640 480 +640 480 +640 480 +640 359 +640 428 +640 425 +640 449 +500 375 +640 428 +640 480 +640 481 +500 375 +500 333 +640 424 +640 430 +612 612 +640 424 +640 427 +500 375 +640 427 +640 453 +640 422 +640 424 +640 425 +640 425 +640 427 +480 640 +640 480 +640 359 +480 640 +640 426 +640 480 +640 427 +640 426 +640 427 +640 427 +480 640 +429 640 +408 640 +612 612 +427 640 +640 480 +640 480 +500 318 +640 534 +640 479 +640 406 +640 512 +640 427 +640 427 +640 388 +640 426 +640 478 +640 424 +640 480 +480 640 +640 427 +640 640 +640 480 +500 333 +640 433 +640 427 +640 426 +640 427 +640 480 +640 425 +640 428 +640 426 +425 640 +500 375 +640 480 +640 426 +640 434 +640 480 +640 441 +640 425 +640 425 +480 640 +640 427 +565 640 +427 640 +640 480 +640 480 +640 480 +640 427 +640 479 +427 640 +640 640 +500 337 +500 359 +480 640 +427 640 +640 480 +612 612 +640 427 +640 428 +425 640 +640 427 +480 640 +512 640 +640 513 +640 427 +640 480 +500 375 +640 425 +640 480 +428 640 +500 375 +640 425 +500 399 +427 640 +640 427 +500 333 +640 428 +640 428 +640 480 +640 427 +640 428 +413 500 +640 427 +640 424 +640 429 +640 480 +640 480 +640 478 +640 480 +640 452 +640 480 +500 292 +500 375 +640 480 +640 480 +640 480 +640 480 +640 427 +640 426 +480 640 +640 480 +640 427 +640 427 +640 360 +500 333 +640 477 +436 640 +640 426 +640 427 +640 427 +480 640 +612 612 +640 301 +640 311 +640 480 +427 640 +640 457 +640 427 +640 427 +640 480 +640 331 +500 375 +276 640 +640 424 +500 500 +478 640 +612 612 +640 381 +512 640 +433 640 +640 480 +480 640 +640 480 +480 640 +640 480 +427 640 +640 430 +640 480 +640 480 +640 428 +500 373 +640 428 +640 366 +640 475 +640 480 +427 640 +640 427 +500 375 +500 375 +375 500 +640 427 +427 640 +640 480 +640 480 +300 451 +640 383 +640 427 +500 375 +640 424 +500 375 +400 600 +640 478 +640 480 +375 500 +500 375 +640 480 +640 456 +640 427 +480 640 +480 640 +500 375 +500 415 +640 436 +375 500 +480 640 +427 640 +640 480 +640 428 +524 640 +640 489 +612 612 +480 640 +640 426 +640 426 +640 480 +640 425 +640 427 +640 427 +612 612 +640 445 +640 480 +640 427 +480 640 +640 361 +640 427 +640 454 +640 453 +427 640 +640 459 +500 283 +349 500 +640 480 +640 480 +640 480 +640 480 +640 480 +374 500 +480 640 +640 480 +480 640 +500 332 +500 332 +612 612 +640 426 +640 428 +500 333 +640 480 +640 480 +612 612 +640 427 +500 276 +500 332 +640 480 +640 427 +640 480 +640 480 +480 640 +640 480 +480 640 +640 429 +640 480 +640 512 +480 640 +640 480 +640 450 +640 426 +640 427 +640 480 +426 640 +640 427 +640 427 +640 480 +379 640 +640 425 +640 427 +640 400 +640 480 +640 427 +640 427 +640 480 +640 480 +640 427 +480 640 +640 424 +500 374 +640 480 +640 427 +640 480 +640 402 +640 480 +640 480 +640 640 +640 538 +640 480 +640 426 +640 480 +612 612 +480 640 +480 640 +640 427 +640 512 +640 480 +640 427 +640 439 +640 427 +480 640 +426 640 +612 612 +640 332 +500 375 +640 478 +640 433 +480 640 +450 600 +640 480 +640 480 +604 640 +640 243 +640 480 +424 640 +640 480 +401 640 +500 489 +640 397 +500 375 +500 345 +500 429 +481 640 +640 431 +640 366 +286 176 +640 427 +640 480 +428 640 +480 640 +437 500 +472 640 +640 458 +640 480 +612 612 +640 638 +480 640 +354 640 +640 427 +640 480 +640 480 +640 379 +480 640 +640 480 +478 640 +640 480 +640 428 +640 480 +640 480 +640 480 +640 425 +428 640 +640 428 +640 360 +480 640 +603 640 +640 559 +425 640 +640 480 +640 426 +640 427 +640 480 +640 427 +640 426 +640 480 +640 426 +640 360 +640 427 +640 426 +374 640 +480 640 +428 640 +478 640 +612 612 +640 427 +640 480 +640 486 +640 425 +500 363 +640 427 +640 425 +640 423 +533 640 +640 427 +640 428 +612 612 +444 440 +500 375 +425 640 +400 640 +640 480 +640 480 +640 428 +426 640 +640 480 +640 428 +640 480 +600 400 +425 640 +640 510 +500 333 +500 375 +640 427 +640 427 +640 427 +500 354 +640 480 +301 450 +360 640 +640 427 +512 640 +500 332 +427 640 +640 480 +640 427 +427 640 +640 480 +640 480 +500 375 +640 426 +640 384 +640 480 +500 333 +500 375 +640 480 +500 200 +640 480 +640 511 +640 478 +640 475 +500 375 +500 375 +640 480 +640 366 +640 480 +480 640 +640 423 +447 640 +640 640 +640 426 +640 480 +576 640 +360 640 +640 480 +500 281 +640 444 +640 640 +500 332 +560 175 +500 375 +640 366 +640 640 +640 341 +640 478 +640 428 +640 594 +640 363 +640 427 +640 425 +640 480 +590 640 +481 640 +640 640 +640 425 +640 427 +640 427 +640 427 +640 434 +375 500 +640 406 +640 360 +640 480 +640 480 +427 640 +396 640 +640 426 +640 531 +419 640 +640 426 +640 426 +640 480 +500 375 +640 428 +640 480 +640 480 +640 480 +480 640 +480 640 +444 640 +640 427 +320 240 +640 425 +640 480 +640 480 +425 640 +386 500 +640 480 +640 480 +500 333 +480 640 +422 282 +640 480 +640 443 +347 500 +640 480 +478 640 +480 640 +640 444 +640 640 +640 425 +478 640 +640 427 +640 427 +500 283 +640 480 +640 480 +640 412 +500 417 +427 640 +640 427 +640 323 +640 427 +640 471 +427 640 +640 427 +640 427 +368 500 +640 480 +640 427 +640 450 +640 426 +425 640 +640 427 +500 375 +640 427 +640 426 +640 480 +640 428 +640 360 +640 488 +640 425 +640 480 +398 640 +640 414 +640 399 +640 425 +640 480 +640 439 +427 640 +640 480 +428 640 +550 410 +640 427 +640 480 +640 480 +640 494 +428 640 +640 480 +500 375 +640 566 +640 480 +480 640 +640 478 +640 360 +640 427 +640 480 +480 640 +500 375 +500 333 +640 480 +425 640 +426 640 +640 425 +640 427 +640 279 +640 428 +640 376 +640 425 +640 353 +480 640 +640 464 +640 480 +640 492 +640 480 +640 480 +640 480 +640 480 +640 427 +640 480 +640 426 +640 427 +640 480 +640 427 +640 379 +500 390 +427 640 +640 510 +640 426 +640 480 +427 640 +480 640 +480 640 +640 469 +640 427 +500 375 +640 528 +427 640 +640 427 +640 519 +640 427 +428 640 +640 427 +640 414 +640 513 +640 427 +640 480 +427 640 +640 427 +640 480 +375 500 +500 375 +640 427 +640 428 +500 375 +640 427 +375 500 +640 480 +640 428 +500 333 +640 427 +640 480 +640 427 +640 427 +640 480 +427 640 +640 427 +640 480 +640 426 +500 375 +378 500 +640 565 +640 427 +640 427 +640 427 +640 480 +640 426 +640 452 +500 375 +640 427 +640 427 +640 480 +640 427 +427 640 +640 457 +640 428 +425 640 +640 480 +480 640 +640 383 +500 332 +640 595 +640 480 +640 404 +640 379 +500 498 +480 640 +640 480 +640 480 +375 500 +640 427 +640 427 +640 640 +640 480 +640 427 +640 427 +640 480 +480 640 +640 479 +640 325 +640 480 +427 640 +640 457 +640 428 +640 480 +640 427 +640 428 +640 480 +640 427 +346 500 +640 480 +640 427 +480 640 +480 320 +640 425 +640 474 +375 500 +478 640 +426 640 +640 426 +640 480 +500 400 +640 480 +640 427 +500 375 +640 426 +499 500 +640 426 +640 480 +640 480 +640 480 +640 427 +640 512 +375 500 +640 427 +480 640 +500 365 +640 480 +480 640 +640 426 +640 480 +640 427 +427 640 +480 640 +640 427 +640 480 +640 480 +425 640 +500 375 +500 338 +640 344 +640 427 +640 425 +640 480 +480 640 +427 640 +486 640 +503 640 +640 480 +427 640 +361 640 +640 457 +640 480 +640 427 +426 640 +640 480 +640 473 +640 361 +640 426 +375 500 +500 375 +640 427 +640 427 +640 431 +640 434 +640 480 +500 375 +640 428 +640 480 +371 640 +475 640 +640 476 +640 427 +500 375 +480 640 +640 426 +640 312 +640 480 +640 480 +640 480 +456 640 +640 427 +640 425 +632 640 +640 360 +640 424 +640 426 +403 640 +426 640 +480 640 +640 393 +359 640 +480 640 +612 612 +640 421 +640 425 +640 478 +640 422 +640 396 +500 375 +640 426 +640 427 +640 427 +640 478 +427 640 +500 336 +640 427 +640 640 +640 555 +612 612 +511 640 +428 640 +640 480 +493 640 +640 427 +640 425 +612 612 +478 640 +640 608 +400 308 +480 640 +640 427 +640 480 +640 512 +640 427 +480 640 +640 318 +480 640 +640 437 +500 385 +427 640 +500 374 +500 375 +640 481 +640 428 +640 289 +640 427 +640 427 +640 388 +480 640 +615 640 +640 480 +640 360 +428 640 +500 333 +640 480 +640 359 +355 640 +480 640 +612 612 +480 640 +640 480 +640 428 +640 480 +425 640 +640 425 +640 480 +640 270 +426 640 +640 480 +640 425 +640 408 +428 640 +640 400 +640 426 +622 640 +640 480 +500 375 +640 480 +640 393 +640 360 +640 428 +640 427 +357 500 +480 640 +640 480 +480 640 +400 500 +391 640 +640 480 +640 480 +640 480 +424 640 +640 427 +640 424 +500 339 +640 480 +640 480 +640 428 +427 640 +640 469 +427 640 +640 445 +640 428 +478 640 +375 500 +640 428 +640 425 +640 426 +427 640 +640 480 +640 480 +478 640 +500 375 +640 480 +500 400 +640 426 +640 512 +640 480 +640 457 +640 425 +640 476 +640 427 +500 375 +640 427 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +480 640 +500 375 +640 426 +640 480 +500 375 +640 427 +500 375 +480 640 +640 425 +597 640 +640 480 +640 481 +640 428 +640 512 +640 480 +640 480 +640 480 +427 640 +640 480 +500 334 +640 478 +640 480 +640 444 +480 640 +640 597 +640 427 +640 427 +640 425 +640 478 +640 427 +640 480 +640 427 +451 640 +628 640 +640 640 +500 335 +640 640 +640 318 +640 427 +640 480 +640 480 +640 480 +426 640 +427 640 +500 375 +320 240 +427 640 +640 480 +640 428 +640 429 +427 640 +480 640 +640 427 +640 415 +640 366 +407 500 +640 425 +640 427 +427 640 +480 640 +500 375 +500 360 +478 640 +640 427 +640 510 +640 425 +480 640 +500 334 +640 427 +640 480 +640 427 +333 500 +500 335 +640 427 +375 500 +640 360 +640 427 +640 459 +640 499 +640 473 +480 640 +478 640 +640 438 +640 426 +640 428 +640 441 +640 480 +640 480 +640 526 +640 480 +640 480 +640 480 +640 427 +640 425 +612 612 +398 640 +640 524 +640 478 +427 640 +640 499 +617 640 +640 428 +480 640 +640 423 +500 357 +478 640 +640 360 +640 427 +640 433 +640 425 +545 640 +640 482 +424 640 +640 480 +334 500 +483 640 +427 640 +640 480 +500 333 +500 375 +400 266 +375 500 +640 480 +480 640 +640 428 +500 375 +640 577 +446 640 +640 480 +480 640 +640 480 +640 480 +640 427 +640 426 +362 640 +640 480 +500 375 +500 333 +500 333 +640 426 +640 426 +640 480 +480 640 +640 478 +480 640 +640 427 +500 375 +640 640 +640 480 +640 425 +640 421 +640 427 +640 480 +640 426 +640 426 +640 352 +500 375 +480 640 +640 427 +480 640 +640 427 +426 640 +640 480 +320 400 +640 480 +427 640 +640 358 +640 430 +640 427 +640 426 +500 375 +480 640 +612 612 +480 640 +640 430 +512 512 +640 480 +480 640 +640 427 +640 478 +640 427 +640 427 +640 425 +640 480 +640 425 +640 427 +640 480 +640 427 +500 281 +640 480 +640 480 +428 640 +640 480 +640 480 +425 640 +640 480 +425 640 +480 640 +640 339 +640 427 +427 640 +480 640 +640 425 +427 640 +640 480 +640 423 +442 500 +640 480 +640 427 +480 640 +640 494 +494 500 +480 640 +480 640 +640 480 +640 640 +640 427 +640 480 +640 428 +640 428 +612 612 +480 640 +634 640 +500 333 +500 332 +423 640 +640 427 +480 640 +632 640 +500 323 +640 426 +640 480 +640 480 +640 480 +640 480 +640 480 +640 425 +640 427 +640 432 +332 500 +640 640 +640 478 +640 512 +640 512 +427 640 +500 375 +640 480 +640 480 +640 480 +640 428 +640 480 +640 480 +640 254 +640 480 +500 375 +640 427 +480 640 +640 474 +640 426 +640 480 +640 495 +480 640 +640 480 +640 427 +640 480 +500 333 +640 427 +640 480 +375 500 +640 427 +464 640 +640 480 +480 640 +612 612 +640 421 +640 480 +500 332 +640 480 +640 360 +640 480 +426 640 +500 375 +640 427 +612 612 +640 359 +640 428 +640 360 +640 480 +333 500 +640 360 +640 370 +640 427 +500 372 +640 426 +500 333 +478 640 +500 375 +640 480 +640 368 +500 368 +500 375 +500 332 +640 480 +640 427 +519 640 +640 434 +640 427 +424 640 +640 479 +425 640 +640 478 +640 515 +425 640 +500 375 +600 600 +640 428 +612 612 +640 427 +640 480 +640 466 +640 427 +546 640 +640 480 +640 403 +640 606 +561 640 +427 640 +500 372 +480 640 +477 358 +640 480 +640 428 +640 478 +427 640 +640 355 +640 480 +640 480 +640 512 +427 640 +375 500 +500 332 +480 640 +480 640 +640 473 +612 612 +640 428 +640 427 +640 480 +640 480 +500 400 +640 427 +640 427 +640 426 +640 480 +640 384 +640 427 +428 640 +640 426 +640 480 +640 481 +640 480 +640 480 +640 480 +500 375 +640 329 +333 500 +640 427 +640 348 +640 480 +500 375 +481 481 +640 424 +640 360 +640 427 +640 428 +640 480 +425 640 +640 427 +640 480 +500 375 +426 640 +640 427 +480 640 +500 373 +640 426 +640 480 +640 320 +640 426 +480 640 +426 640 +500 282 +640 417 +640 403 +426 640 +640 480 +640 427 +480 640 +640 425 +511 640 +375 500 +500 335 +640 412 +640 427 +640 427 +500 375 +640 480 +399 640 +640 426 +640 480 +500 375 +480 640 +427 640 +480 640 +360 640 +640 480 +640 427 +612 612 +640 571 +640 427 +640 427 +500 375 +640 429 +640 383 +427 640 +333 500 +640 480 +427 640 +478 640 +500 390 +640 480 +640 480 +640 427 +640 480 +500 328 +480 640 +640 480 +640 426 +456 640 +640 427 +640 427 +640 603 +612 612 +640 427 +480 640 +480 640 +640 480 +640 480 +480 640 +640 443 +640 427 +500 333 +640 427 +640 249 +640 480 +640 426 +640 480 +640 480 +282 454 +640 480 +640 427 +640 480 +427 640 +428 640 +640 425 +567 640 +500 333 +500 375 +640 480 +480 640 +446 640 +500 375 +640 480 +427 640 +427 640 +640 439 +480 640 +640 427 +375 500 +640 480 +640 427 +640 426 +640 426 +480 640 +640 480 +640 480 +612 612 +640 554 +480 640 +640 360 +500 375 +500 375 +640 423 +640 427 +480 640 +640 425 +640 427 +640 426 +640 480 +640 426 +640 427 +640 464 +640 414 +375 500 +482 482 +640 480 +389 640 +478 640 +640 427 +640 361 +640 480 +640 429 +640 427 +640 425 +640 480 +640 480 +640 483 +640 427 +640 427 +500 329 +640 444 +640 428 +640 480 +403 640 +500 333 +640 480 +640 427 +640 269 +640 480 +640 480 +640 360 +640 427 +444 640 +640 428 +640 480 +457 640 +480 640 +612 612 +640 427 +612 612 +333 500 +640 480 +426 640 +640 424 +640 427 +640 418 +500 375 +640 496 +640 457 +640 480 +640 426 +480 640 +640 424 +640 480 +576 640 +640 427 +640 480 +640 399 +480 640 +640 427 +640 480 +500 500 +640 427 +351 500 +640 427 +640 480 +640 640 +640 427 +427 640 +640 373 +500 380 +375 500 +640 480 +425 640 +640 406 +640 427 +640 480 +640 427 +640 427 +500 408 +640 480 +640 480 +640 480 +500 336 +640 480 +480 640 +640 473 +640 428 +640 428 +578 640 +480 640 +640 427 +640 424 +640 427 +404 640 +500 375 +640 400 +500 333 +480 640 +436 640 +409 640 +640 427 +640 523 +640 427 +640 418 +640 480 +640 480 +640 427 +640 426 +500 333 +640 427 +427 640 +640 412 +640 480 +640 427 +478 640 +640 480 +640 427 +332 500 +511 640 +478 640 +640 427 +334 500 +640 427 +640 427 +500 375 +640 480 +640 480 +500 375 +500 400 +640 480 +333 500 +480 640 +640 427 +640 360 +640 480 +640 480 +640 480 +640 388 +427 640 +500 375 +640 426 +640 480 +640 480 +640 480 +612 612 +478 640 +334 500 +640 427 +640 457 +640 480 +640 427 +426 640 +640 425 +500 375 +640 427 +640 416 +426 640 +480 640 +640 425 +640 426 +640 538 +480 640 +640 478 +500 375 +426 640 +480 640 +640 426 +640 428 +640 427 +480 640 +640 427 +500 228 +640 425 +640 480 +500 375 +640 427 +500 375 +640 427 +433 640 +480 640 +480 640 +640 426 +640 427 +612 612 +640 481 +640 480 +453 640 +500 333 +640 361 +640 424 +640 428 +640 478 +640 480 +640 427 +640 480 +425 640 +640 339 +426 640 +640 480 +640 480 +640 427 +500 375 +640 323 +640 640 +640 480 +640 427 +640 450 +320 240 +640 478 +640 640 +640 427 +426 640 +640 480 +640 424 +640 427 +612 612 +640 427 +640 425 +640 480 +640 480 +480 640 +640 480 +640 449 +640 479 +640 426 +480 640 +640 428 +640 478 +456 640 +640 427 +640 480 +428 443 +640 483 +640 423 +640 480 +640 480 +640 480 +640 427 +480 640 +640 424 +640 427 +500 202 +426 640 +640 427 +640 428 +640 480 +375 500 +427 640 +640 480 +460 640 +640 427 +640 427 +640 427 +640 480 +640 426 +640 484 +333 500 +640 427 +333 500 +640 401 +640 480 +640 429 +640 433 +427 640 +500 333 +640 320 +640 427 +640 427 +640 427 +640 415 +500 332 +457 640 +427 640 +640 434 +448 640 +640 480 +640 427 +640 425 +640 480 +640 480 +480 640 +612 612 +480 640 +640 480 +640 512 +640 480 +480 640 +480 640 +500 375 +640 427 +640 480 +480 640 +419 640 +427 640 +640 424 +640 428 +640 425 +640 427 +640 426 +640 426 +473 640 +640 426 +640 420 +640 480 +640 427 +500 290 +612 612 +640 427 +640 480 +426 640 +400 300 +314 500 +500 375 +640 360 +640 480 +640 427 +640 427 +480 640 +640 425 +500 375 +640 480 +640 480 +640 640 +500 375 +640 424 +612 612 +640 426 +640 487 +640 427 +640 480 +640 503 +640 458 +640 484 +640 480 +640 480 +640 427 +640 480 +640 457 +640 480 +427 640 +612 612 +640 526 +500 375 +640 480 +640 480 +400 500 +640 427 +640 480 +640 427 +640 427 +640 426 +640 480 +480 640 +428 640 +480 640 +480 640 +428 640 +640 406 +640 428 +640 491 +428 640 +500 375 +480 640 +480 640 +640 480 +640 427 +480 640 +640 479 +480 640 +640 426 +640 360 +640 360 +640 480 +500 375 +640 480 +640 428 +612 612 +640 425 +375 500 +640 427 +640 457 +640 427 +640 316 +640 480 +500 331 +640 480 +427 640 +480 640 +426 640 +640 425 +640 496 +640 389 +463 640 +640 468 +640 480 +640 480 +444 640 +640 424 +334 500 +500 375 +640 429 +500 332 +480 640 +640 480 +640 427 +640 480 +426 640 +640 386 +640 427 +500 375 +500 375 +640 427 +640 480 +640 427 +640 324 +500 375 +640 425 +640 363 +640 428 +426 640 +640 427 +467 640 +640 427 +640 427 +640 427 +640 230 +640 426 +640 359 +640 428 +640 480 +640 427 +640 427 +640 427 +500 375 +640 427 +612 612 +500 375 +500 375 +640 427 +640 434 +500 375 +640 640 +640 463 +612 612 +480 640 +640 427 +640 480 +640 568 +640 480 +480 640 +426 640 +640 480 +612 612 +640 480 +627 640 +344 500 +640 480 +640 442 +640 428 +640 480 +480 640 +640 480 +640 480 +640 433 +640 512 +427 640 +500 334 +640 254 +640 431 +612 612 +612 612 +640 512 +640 480 +640 424 +640 396 +640 480 +640 480 +480 640 +640 480 +427 640 +640 480 +640 427 +640 480 +640 480 +500 400 +500 375 +640 480 +640 480 +427 640 +640 480 +640 427 +480 640 +427 640 +640 427 +640 480 +640 427 +640 428 +426 640 +500 375 +640 366 +640 480 +640 480 +429 640 +479 320 +640 429 +500 399 +424 640 +538 640 +640 428 +640 431 +427 640 +554 312 +426 640 +640 480 +375 500 +640 427 +640 429 +480 384 +500 400 +333 500 +480 640 +500 484 +640 427 +477 304 +426 640 +640 480 +600 400 +500 500 +640 427 +480 640 +500 333 +500 334 +640 428 +640 486 +640 258 +640 480 +640 480 +519 640 +612 612 +500 333 +640 426 +640 427 +640 640 +640 508 +640 427 +480 640 +426 640 +500 375 +640 427 +500 334 +640 480 +437 640 +640 418 +640 427 +598 640 +378 500 +480 640 +640 593 +640 427 +480 640 +640 480 +333 500 +640 343 +640 420 +480 640 +640 480 +640 427 +333 500 +640 427 +426 640 +640 427 +640 424 +523 640 +480 640 +640 430 +640 480 +640 428 +640 480 +480 640 +640 480 +612 612 +427 640 +640 481 +640 407 +427 640 +640 426 +333 500 +640 480 +640 478 +640 480 +640 439 +640 403 +640 480 +640 480 +640 480 +640 419 +640 427 +640 427 +640 424 +640 382 +640 408 +500 375 +640 640 +640 480 +640 427 +640 428 +395 640 +480 640 +602 640 +640 480 +428 640 +640 400 +427 640 +640 427 +640 424 +640 480 +640 426 +640 480 +500 375 +640 480 +453 640 +640 443 +640 429 +640 360 +640 498 +640 480 +446 640 +640 476 +500 387 +640 640 +590 640 +640 425 +640 480 +427 640 +640 480 +426 640 +640 638 +439 640 +640 640 +437 640 +640 480 +640 640 +640 480 +640 495 +640 427 +500 375 +640 388 +640 480 +640 428 +640 427 +353 640 +427 640 +479 640 +500 334 +640 480 +640 427 +427 640 +512 640 +500 335 +426 640 +640 427 +640 200 +640 427 +640 427 +640 538 +512 640 +640 428 +450 319 +375 500 +640 480 +500 375 +640 480 +640 428 +640 452 +640 480 +640 480 +640 480 +640 640 +640 427 +640 480 +416 640 +640 426 +640 480 +427 640 +500 375 +640 295 +457 640 +640 425 +640 427 +500 500 +640 480 +640 480 +427 640 +375 500 +640 480 +640 434 +640 427 +433 640 +554 640 +640 427 +640 487 +640 428 +500 375 +640 424 +478 640 +640 480 +640 425 +640 427 +500 334 +640 467 +640 426 +640 427 +426 640 +640 427 +427 640 +480 640 +640 426 +409 640 +640 480 +425 640 +640 480 +640 428 +378 640 +427 640 +640 619 +425 640 +640 480 +640 428 +640 480 +640 480 +640 480 +640 429 +640 426 +640 425 +480 640 +640 478 +375 500 +640 436 +640 409 +640 423 +640 426 +640 427 +500 332 +500 375 +640 480 +640 428 +480 640 +640 425 +640 427 +640 480 +640 427 +640 480 +640 480 +640 480 +480 640 +500 337 +500 325 +640 427 +640 426 +640 400 +640 248 +640 427 +640 462 +640 480 +640 427 +640 508 +500 391 +480 640 +640 427 +640 480 +640 427 +427 640 +640 426 +427 640 +640 427 +457 640 +640 480 +640 480 +427 640 +427 640 +500 375 +424 640 +427 640 +640 427 +640 480 +640 480 +480 640 +640 480 +444 640 +640 424 +640 428 +640 460 +640 427 +640 428 +640 512 +640 427 +428 640 +640 427 +640 427 +640 478 +640 424 +640 480 +640 427 +640 339 +612 612 +640 480 +500 375 +480 640 +640 425 +640 427 +640 480 +427 640 +427 640 +640 480 +480 640 +640 480 +500 375 +640 480 +640 424 +640 480 +640 480 +640 480 +480 640 +612 612 +640 428 +427 640 +640 480 +612 612 +640 480 +640 424 +640 480 +640 480 +640 480 +640 480 +480 640 +427 640 +640 427 +640 424 +640 427 +640 427 +480 640 +640 480 +640 480 +640 424 +640 457 +427 640 +500 338 +640 427 +640 427 +356 640 +375 500 +505 640 +640 425 +400 600 +640 427 +426 640 +481 640 +640 480 +640 491 +640 480 +640 480 +640 369 +640 427 +500 333 +333 500 +500 313 +640 482 +640 491 +640 426 +640 426 +640 480 +640 427 +640 504 +640 426 +480 640 +480 640 +640 480 +640 457 +640 427 +640 427 +640 426 +640 427 +640 426 +640 480 +612 612 +640 480 +640 480 +500 332 +640 480 +480 640 +640 480 +640 426 +640 480 +500 305 +640 347 +640 427 +480 640 +500 335 +367 500 +640 427 +640 427 +640 427 +640 480 +640 512 +612 612 +640 427 +568 320 +640 426 +480 640 +480 640 +640 480 +480 640 +427 640 +640 428 +640 360 +348 500 +424 640 +480 640 +640 480 +480 640 +636 640 +427 640 +480 640 +640 427 +640 480 +333 500 +500 375 +640 427 +600 450 +640 480 +640 427 +640 480 +329 640 +640 360 +612 612 +640 480 +500 500 +640 480 +640 457 +640 426 +640 488 +640 479 +480 640 +640 428 +427 640 +640 480 +640 427 +640 480 +640 427 +640 633 +512 640 +480 640 +480 640 +500 332 +640 480 +640 427 +640 480 +500 375 +640 480 +640 480 +640 480 +640 424 +640 427 +426 640 +640 427 +427 640 +471 640 +640 425 +500 398 +640 369 +640 480 +640 480 +640 485 +640 480 +640 480 +640 399 +640 427 +480 640 +500 375 +640 480 +425 640 +640 429 +500 500 +500 332 +640 640 +640 480 +480 640 +640 480 +640 425 +640 379 +480 640 +640 408 +333 500 +640 421 +427 640 +383 640 +640 480 +640 419 +478 640 +640 418 +500 357 +435 480 +640 427 +640 480 +478 640 +640 428 +500 375 +640 427 +640 427 +640 316 +640 428 +640 424 +413 640 +640 438 +640 428 +640 393 +640 428 +375 500 +640 425 +640 423 +640 475 +640 427 +640 427 +376 500 +640 429 +640 480 +640 446 +640 480 +425 640 +640 359 +500 374 +427 640 +480 640 +640 421 +427 640 +640 427 +640 425 +640 640 +640 429 +640 480 +500 333 +640 427 +429 640 +333 500 +480 640 +335 500 +640 427 +480 640 +500 378 +640 629 +640 424 +640 464 +383 640 +640 513 +333 500 +640 480 +375 500 +612 612 +640 425 +640 480 +640 480 +640 360 +612 612 +640 425 +640 480 +640 428 +428 640 +640 478 +399 500 +480 640 +640 427 +640 427 +640 428 +480 640 +640 425 +640 426 +640 480 +381 640 +640 480 +640 480 +427 640 +640 556 +640 480 +480 640 +640 640 +640 429 +500 375 +640 427 +480 640 +640 458 +480 640 +640 427 +500 500 +333 500 +480 640 +500 334 +640 480 +640 428 +640 426 +394 500 +640 427 +480 640 +640 441 +640 484 +480 640 +640 480 +640 480 +640 478 +640 427 +640 478 +428 640 +501 640 +640 400 +512 640 +480 640 +640 291 +640 480 +500 375 +640 480 +429 640 +464 640 +640 480 +640 640 +426 640 +640 407 +480 640 +480 640 +640 426 +640 480 +640 640 +404 640 +500 306 +640 472 +500 377 +640 480 +500 375 +640 439 +500 375 +640 427 +480 640 +500 375 +640 640 +640 473 +481 640 +640 432 +640 480 +425 640 +640 425 +640 360 +640 427 +640 421 +640 427 +640 428 +640 427 +500 333 +640 443 +458 640 +612 612 +640 427 +640 303 +640 480 +480 640 +640 478 +423 640 +640 512 +640 427 +640 480 +640 427 +640 480 +640 360 +640 480 +640 478 +385 308 +640 427 +500 381 +640 427 +480 640 +500 334 +640 480 +500 375 +640 426 +640 426 +640 480 +640 425 +453 640 +640 476 +500 375 +640 425 +640 480 +480 640 +612 612 +333 500 +478 640 +502 640 +500 333 +640 471 +640 480 +427 640 +640 480 +640 480 +640 427 +640 480 +640 400 +500 375 +640 480 +640 480 +500 333 +426 640 +427 640 +429 640 +640 478 +480 640 +432 640 +640 480 +480 640 +428 640 +640 478 +500 305 +500 375 +640 426 +500 334 +640 428 +612 612 +640 480 +640 496 +427 640 +360 640 +640 427 +396 640 +640 425 +640 480 +411 640 +640 425 +640 480 +640 480 +640 480 +640 427 +500 335 +640 480 +426 640 +640 480 +640 427 +500 375 +640 480 +640 461 +640 480 +640 480 +480 640 +640 425 +640 480 +640 427 +500 375 +640 424 +640 480 +480 640 +427 640 +640 480 +640 433 +640 400 +500 333 +640 480 +640 412 +612 612 +640 480 +447 640 +640 425 +640 427 +420 223 +356 640 +500 375 +427 640 +640 428 +427 640 +500 375 +640 427 +640 439 +640 419 +640 400 +500 500 +500 375 +640 403 +500 375 +640 427 +640 480 +640 424 +640 480 +640 514 +640 480 +640 480 +640 480 +640 428 +640 414 +500 333 +640 228 +640 480 +640 360 +640 480 +640 445 +640 493 +640 482 +480 640 +640 427 +640 461 +640 427 +640 428 +640 480 +640 427 +640 430 +640 426 +600 400 +640 427 +640 427 +428 640 +426 640 +640 453 +640 464 +480 640 +480 640 +640 480 +640 480 +640 426 +640 480 +640 416 +640 427 +640 480 +640 403 +640 480 +640 488 +640 425 +480 640 +640 480 +640 425 +600 400 +640 489 +640 266 +640 426 +512 640 +640 427 +640 480 +640 427 +640 480 +375 500 +640 480 +640 515 +640 427 +500 375 +600 399 +640 429 +500 372 +640 480 +640 426 +428 640 +640 427 +640 480 +640 427 +640 401 +500 375 +640 427 +426 640 +427 640 +480 640 +481 640 +429 640 +480 640 +640 427 +640 414 +640 574 +480 640 +640 427 +640 640 +321 500 +640 425 +640 480 +500 375 +640 428 +640 356 +480 640 +335 500 +640 425 +361 640 +640 454 +640 438 +640 480 +480 640 +640 480 +427 640 +500 375 +640 480 +640 480 +640 480 +640 480 +640 461 +640 395 +480 640 +640 360 +640 480 +640 616 +500 333 +474 640 +640 427 +640 480 +640 457 +640 424 +427 640 +640 359 +640 480 +640 480 +640 480 +640 471 +640 480 +427 640 +640 480 +640 427 +640 248 +640 424 +500 332 +640 426 +480 640 +333 500 +640 480 +640 427 +640 359 +378 500 +640 427 +333 500 +640 480 +640 427 +640 480 +480 640 +640 360 +640 480 +500 375 +480 640 +402 600 +640 425 +480 640 +500 326 +640 426 +640 425 +500 375 +375 500 +612 612 +427 640 +500 375 +640 427 +640 480 +375 500 +640 425 +480 640 +640 480 +480 640 +640 427 +470 640 +640 424 +360 500 +640 435 +640 491 +640 480 +640 360 +640 480 +640 486 +640 439 +640 429 +640 640 +480 640 +640 480 +500 335 +365 500 +478 640 +640 427 +500 332 +640 424 +640 480 +640 480 +427 640 +425 640 +640 480 +640 480 +600 363 +640 480 +640 428 +640 480 +640 457 +640 480 +640 427 +333 500 +640 428 +375 500 +640 384 +640 478 +640 480 +640 426 +640 360 +640 453 +427 640 +640 480 +640 426 +640 424 +640 480 +338 500 +640 436 +640 426 +512 640 +500 375 +640 428 +625 425 +640 427 +518 640 +640 480 +500 375 +640 427 +640 480 +640 426 +480 640 +480 640 +640 431 +640 480 +640 480 +640 427 +640 427 +612 612 +640 480 +500 375 +640 427 +640 426 +640 431 +482 500 +640 426 +640 640 +640 203 +640 480 +640 603 +640 640 +500 375 +640 480 +640 427 +640 426 +400 500 +640 480 +640 625 +480 640 +427 640 +640 480 +427 640 +640 360 +640 480 +617 640 +640 425 +640 428 +640 361 +426 640 +640 480 +640 480 +640 425 +640 360 +640 428 +640 420 +640 425 +480 640 +640 427 +640 480 +480 640 +480 640 +626 586 +612 612 +318 500 +428 640 +500 375 +427 640 +640 427 +640 427 +640 426 +640 426 +428 640 +612 612 +500 332 +480 640 +640 426 +411 640 +500 333 +640 480 +500 285 +640 480 +640 426 +640 479 +640 385 +640 480 +638 640 +640 512 +640 480 +480 640 +640 479 +426 640 +640 428 +480 640 +640 480 +640 480 +640 427 +426 640 +500 333 +640 427 +640 480 +640 480 +640 427 +640 608 +640 427 +640 480 +640 427 +480 640 +428 640 +640 428 +640 426 +640 480 +640 480 +640 426 +500 333 +640 444 +426 640 +640 480 +640 424 +500 400 +640 468 +640 429 +640 427 +640 425 +480 640 +529 640 +640 425 +640 427 +640 426 +480 640 +640 427 +640 446 +640 480 +480 640 +427 640 +640 386 +640 480 +500 333 +640 428 +640 480 +640 454 +424 640 +640 428 +640 389 +427 640 +640 480 +640 480 +640 360 +640 480 +480 640 +640 427 +427 640 +640 480 +640 458 +640 480 +640 480 +640 416 +427 640 +640 427 +360 240 +640 480 +500 375 +640 426 +640 480 +640 425 +640 425 +640 427 +480 640 +640 425 +640 553 +427 640 +640 426 +480 640 +640 480 +500 334 +480 640 +640 576 +640 425 +427 640 +640 426 +478 640 +640 476 +428 640 +427 640 +640 339 +427 640 +640 424 +427 640 +640 427 +640 427 +640 362 +524 640 +640 478 +426 640 +640 427 +500 375 +640 480 +640 480 +640 213 +640 427 +640 460 +512 640 +640 480 +640 480 +640 384 +640 443 +640 480 +500 334 +320 240 +640 480 +479 640 +640 480 +612 612 +640 424 +640 455 +300 225 +640 428 +640 428 +640 437 +640 427 +480 640 +640 480 +427 640 +640 426 +640 480 +640 480 +480 640 +640 427 +612 612 +640 428 +640 427 +600 400 +640 427 +480 640 +612 612 +427 640 +499 640 +640 480 +640 153 +640 427 +640 480 +500 375 +500 375 +640 480 +640 427 +500 374 +640 480 +640 483 +640 480 +640 576 +640 448 +640 478 +500 333 +480 640 +640 427 +480 640 +640 303 +480 640 +640 427 +640 480 +500 333 +640 427 +640 426 +640 480 +489 640 +640 427 +640 424 +640 359 +427 640 +500 333 +640 480 +333 500 +480 640 +375 500 +640 426 +640 578 +640 480 +480 640 +416 640 +640 408 +640 480 +500 333 +640 203 +612 612 +612 612 +383 640 +640 338 +640 427 +640 480 +640 441 +640 427 +427 640 +640 480 +640 427 +640 480 +640 426 +640 427 +640 480 +333 500 +640 169 +640 426 +428 640 +500 375 +480 640 +428 640 +500 314 +640 383 +480 640 +640 427 +640 428 +428 640 +640 631 +375 500 +425 640 +640 427 +497 640 +640 366 +640 426 +390 500 +640 427 +500 493 +640 428 +640 427 +640 427 +640 359 +640 480 +640 427 +480 640 +442 640 +426 640 +640 480 +640 425 +427 640 +640 480 +375 500 +500 337 +640 298 +640 366 +640 425 +640 480 +640 428 +640 480 +640 480 +640 480 +640 426 +640 426 +640 480 +640 480 +640 428 +640 480 +640 480 +640 480 +431 640 +640 427 +500 234 +333 500 +640 423 +640 427 +612 612 +334 500 +500 333 +500 333 +640 480 +427 640 +640 480 +500 375 +612 612 +640 456 +640 480 +640 458 +640 426 +511 640 +640 637 +640 480 +640 429 +640 480 +360 270 +640 479 +640 559 +640 405 +468 640 +640 480 +427 640 +426 640 +640 429 +500 250 +500 277 +500 375 +640 427 +640 427 +640 436 +640 480 +388 500 +640 427 +360 640 +500 375 +640 425 +426 640 +438 640 +640 435 +640 502 +640 511 +480 640 +640 480 +640 480 +480 640 +640 427 +640 480 +333 500 +640 482 +640 484 +640 480 +640 480 +640 427 +640 480 +640 480 +441 640 +640 480 +640 480 +640 532 +640 429 +427 640 +480 640 +640 385 +427 640 +640 425 +640 416 +640 426 +640 426 +640 480 +550 539 +640 384 +640 479 +640 480 +500 334 +640 480 +640 425 +500 375 +640 480 +480 640 +480 640 +500 333 +326 640 +640 480 +480 640 +500 375 +512 640 +640 427 +640 426 +448 336 +640 480 +640 424 +480 640 +500 438 +478 640 +640 428 +480 640 +640 424 +640 480 +640 480 +426 640 +640 429 +640 480 +640 458 +640 429 +640 480 +500 375 +640 480 +427 640 +640 427 +640 639 +640 427 +640 480 +640 427 +424 640 +640 425 +640 424 +480 640 +640 479 +640 425 +640 428 +640 426 +421 640 +640 413 +640 480 +640 480 +480 640 +426 640 +224 500 +428 640 +462 462 +640 399 +481 500 +640 418 +449 600 +640 480 +640 427 +500 375 +640 427 +640 479 +640 480 +480 640 +640 394 +640 496 +501 640 +640 427 +640 480 +480 640 +640 427 +640 427 +591 640 +640 427 +612 612 +500 335 +478 640 +458 640 +493 640 +500 375 +430 500 +640 480 +640 480 +640 480 +640 415 +640 480 +640 480 +640 423 +500 333 +640 399 +500 375 +640 480 +640 480 +640 469 +500 210 +640 480 +500 375 +500 375 +640 408 +640 480 +428 640 +350 350 +640 480 +640 480 +640 480 +394 500 +428 640 +640 480 +640 480 +359 640 +640 426 +428 640 +640 427 +640 426 +640 426 +640 480 +640 453 +640 526 +640 480 +640 424 +484 640 +480 640 +640 426 +640 427 +640 427 +400 285 +429 640 +640 453 +427 640 +478 640 +480 640 +640 512 +640 427 +640 480 +500 339 +640 428 +333 500 +480 640 +640 427 +640 480 +612 612 +640 429 +640 427 +500 406 +640 427 +640 360 +427 640 +640 424 +640 427 +640 427 +427 640 +640 480 +480 640 +640 358 +375 500 +640 480 +480 640 +640 406 +424 351 +500 375 +500 333 +640 480 +640 426 +640 529 +640 427 +640 426 +427 640 +640 480 +640 427 +408 640 +361 640 +500 289 +612 612 +640 428 +480 640 +640 470 +500 333 +480 640 +500 375 +640 427 +640 637 +640 361 +500 375 +640 480 +500 460 +640 425 +426 640 +640 480 +427 640 +480 640 +640 426 +427 640 +640 400 +640 640 +266 412 +640 480 +640 360 +376 500 +427 640 +640 640 +640 426 +333 500 +478 640 +640 425 +427 640 +640 426 +480 640 +500 375 +500 334 +640 480 +500 473 +480 640 +640 427 +640 481 +360 480 +480 640 +640 530 +640 504 +640 499 +500 334 +640 427 +478 640 +526 640 +375 500 +640 480 +640 457 +500 332 +500 333 +640 550 +640 438 +640 446 +468 640 +640 408 +640 427 +427 640 +426 640 +640 480 +640 433 +640 366 +640 480 +500 375 +640 427 +640 480 +640 457 +375 500 +640 480 +500 375 +640 480 +640 640 +612 612 +640 425 +640 427 +427 640 +640 480 +480 640 +640 480 +640 419 +640 480 +640 360 +640 480 +640 480 +612 612 +640 421 +480 640 +640 427 +640 480 +427 640 +640 480 +640 240 +500 334 +427 640 +640 480 +375 500 +480 640 +321 500 +640 480 +426 640 +640 428 +220 176 +640 414 +480 640 +640 427 +640 480 +640 426 +640 427 +364 500 +640 480 +640 427 +427 640 +640 480 +640 429 +640 480 +480 640 +640 425 +640 428 +640 425 +640 427 +612 612 +640 427 +640 480 +640 428 +640 480 +640 480 +480 640 +640 640 +480 640 +640 480 +428 640 +480 640 +500 375 +500 500 +640 480 +640 427 +640 480 +640 458 +640 428 +612 612 +500 332 +640 383 +640 427 +640 426 +464 640 +640 480 +640 427 +640 427 +500 346 +640 480 +427 640 +375 500 +640 467 +470 640 +640 427 +500 458 +640 480 +640 480 +500 375 +426 640 +640 426 +327 640 +640 469 +640 428 +640 427 +640 480 +640 480 +640 423 +612 612 +640 427 +412 640 +298 448 +640 427 +640 480 +480 640 +640 480 +640 480 +640 480 +640 481 +640 426 +500 375 +612 612 +640 479 +640 219 +640 419 +480 640 +640 425 +640 427 +640 425 +500 500 +640 448 +640 427 +480 640 +640 480 +640 473 +640 426 +640 427 +500 284 +640 427 +640 458 +640 480 +640 480 +640 453 +500 375 +640 398 +500 375 +640 480 +640 468 +480 640 +640 464 +402 640 +640 480 +640 480 +640 424 +640 480 +500 375 +640 425 +431 640 +640 480 +640 427 +640 338 +640 427 +640 428 +639 428 +612 612 +427 640 +640 427 +500 333 +640 463 +640 425 +640 427 +640 374 +640 480 +640 480 +480 640 +640 427 +640 480 +640 428 +640 480 +640 480 +500 338 +480 640 +451 500 +640 427 +640 480 +427 640 +640 425 +427 640 +480 640 +480 640 +640 478 +640 480 +640 480 +640 427 +429 640 +425 640 +500 375 +640 294 +640 640 +429 640 +640 427 +426 640 +640 423 +480 640 +640 428 +640 424 +640 480 +640 427 +640 480 +500 375 +500 375 +480 640 +500 335 +427 640 +480 640 +640 383 +500 375 +428 640 +640 478 +494 640 +480 640 +392 591 +640 536 +344 500 +480 640 +640 480 +640 480 +500 500 +612 612 +640 504 +640 426 +640 480 +640 427 +640 423 +640 298 +375 500 +396 640 +640 427 +640 480 +640 480 +640 533 +375 500 +640 480 +640 425 +360 640 +640 425 +640 479 +424 640 +640 427 +457 640 +640 428 +640 467 +640 428 +640 427 +480 640 +640 427 +640 427 +640 480 +480 640 +640 480 +640 427 +500 375 +500 375 +640 480 +640 480 +480 640 +640 480 +426 640 +640 359 +640 352 +640 427 +640 480 +640 480 +500 400 +640 424 +640 480 +500 375 +640 480 +640 426 +500 333 +640 425 +640 480 +383 640 +640 428 +640 480 +640 427 +640 427 +640 425 +612 612 +640 480 +640 480 +640 511 +427 640 +640 359 +640 480 +640 480 +426 640 +640 480 +640 480 +640 427 +427 640 +640 480 +640 426 +500 375 +640 434 +480 640 +640 424 +640 480 +640 423 +640 427 +640 480 +612 612 +640 189 +478 640 +640 555 +640 478 +500 333 +500 375 +254 640 +480 640 +500 375 +429 640 +640 480 +640 360 +480 640 +612 612 +480 640 +640 638 +640 309 +640 480 +640 427 +612 612 +640 414 +640 427 +640 480 +500 332 +500 375 +500 489 +640 480 +480 640 +612 612 +640 425 +480 640 +612 612 +590 640 +640 426 +640 360 +640 480 +640 489 +640 425 +484 640 +640 427 +480 640 +640 480 +640 479 +500 299 +640 417 +640 373 +640 427 +612 612 +500 376 +640 427 +640 480 +640 415 +640 480 +480 640 +480 640 +640 480 +640 480 +640 569 +500 375 +640 480 +426 640 +640 426 +640 480 +640 480 +425 640 +640 640 +426 640 +640 480 +427 640 +428 640 +427 640 +640 425 +640 480 +324 500 +640 480 +640 428 +500 333 +640 426 +640 427 +640 480 +449 640 +640 480 +640 426 +480 640 +428 640 +424 640 +500 375 +640 427 +612 612 +640 480 +427 640 +640 480 +640 359 +640 478 +500 401 +640 480 +500 375 +640 480 +480 640 +480 640 +640 427 +640 480 +640 422 +640 484 +640 428 +640 478 +500 452 +640 366 +425 640 +640 427 +500 333 +640 427 +500 375 +640 426 +640 480 +640 427 +480 640 +500 375 +640 427 +640 426 +640 480 +640 427 +640 425 +640 480 +640 480 +640 426 +500 375 +500 400 +640 429 +640 465 +500 375 +640 480 +640 427 +375 500 +640 514 +640 445 +640 427 +640 480 +640 425 +500 400 +640 427 +640 427 +640 378 +640 481 +640 400 +640 480 +640 480 +640 426 +424 640 +640 360 +500 332 +640 384 +640 427 +500 374 +480 640 +640 480 +640 480 +427 640 +640 426 +375 500 +640 480 +640 427 +640 428 +500 375 +640 432 +480 640 +640 480 +480 640 +640 451 +640 480 +640 480 +615 640 +640 480 +640 480 +640 480 +480 640 +640 427 +640 427 +401 640 +640 480 +640 464 +500 375 +640 427 +640 427 +640 426 +640 480 +640 427 +636 640 +640 401 +640 428 +640 480 +500 333 +640 480 +500 333 +640 480 +564 640 +640 480 +480 640 +640 427 +500 375 +500 359 +640 439 +469 640 +640 360 +640 478 +640 480 +640 480 +640 430 +640 480 +640 480 +640 480 +640 420 +500 375 +426 640 +427 640 +333 500 +480 640 +640 384 +640 426 +640 480 +640 443 +640 631 +640 458 +640 480 +500 331 +480 640 +640 426 +519 640 +640 436 +401 640 +480 640 +640 485 +640 414 +640 427 +640 427 +640 426 +640 480 +640 480 +500 375 +640 325 +494 640 +480 640 +441 640 +640 480 +640 511 +640 428 +640 426 +586 640 +640 427 +640 427 +500 281 +640 480 +500 333 +640 428 +640 640 +640 425 +480 640 +500 333 +629 640 +426 640 +640 427 +544 408 +426 640 +640 427 +640 480 +375 500 +424 640 +428 640 +640 480 +431 640 +640 500 +640 480 +640 224 +374 500 +640 426 +500 343 +640 426 +640 480 +640 427 +480 640 +640 427 +480 640 +480 640 +640 480 +640 366 +444 640 +640 640 +640 480 +640 480 +423 640 +640 615 +640 480 +640 513 +427 640 +375 500 +640 429 +640 480 +500 375 +480 640 +500 371 +640 428 +500 333 +480 640 +612 612 +480 640 +427 640 +480 640 +640 427 +640 524 +640 480 +640 403 +640 429 +500 375 +640 480 +640 427 +640 414 +500 375 +640 480 +640 480 +640 480 +640 480 +400 600 +640 428 +427 640 +427 640 +427 640 +480 640 +500 375 +500 375 +375 500 +622 415 +480 640 +428 640 +640 366 +427 640 +480 640 +500 375 +640 480 +640 480 +500 375 +640 426 +640 425 +640 480 +640 480 +640 427 +640 480 +359 640 +427 640 +500 440 +427 640 +640 425 +427 640 +500 375 +640 480 +640 453 +500 375 +640 400 +640 427 +640 480 +480 640 +640 480 +640 435 +640 478 +480 640 +500 333 +640 480 +640 480 +640 480 +640 366 +640 480 +640 481 +640 427 +640 426 +640 480 +480 640 +500 333 +480 640 +640 480 +640 428 +640 218 +640 427 +500 333 +500 334 +640 427 +640 640 +480 640 +427 640 +640 481 +640 478 +640 426 +640 427 +640 425 +640 427 +333 500 +612 612 +640 480 +640 427 +640 491 +640 478 +640 360 +473 640 +612 612 +640 428 +640 427 +640 480 +640 426 +500 375 +500 375 +640 427 +640 480 +427 640 +640 480 +640 426 +350 500 +500 308 +640 608 +640 503 +640 480 +640 480 +500 375 +640 480 +640 480 +500 375 +416 640 +640 427 +612 612 +389 500 +480 640 +640 426 +640 424 +363 485 +640 549 +640 427 +500 337 +640 479 +640 426 +500 375 +640 427 +640 480 +640 426 +490 640 +640 427 +640 480 +640 427 +640 425 +465 640 +640 480 +500 334 +640 424 +640 426 +640 424 +640 479 +375 500 +640 427 +640 480 +428 640 +500 333 +640 480 +640 480 +640 480 +640 361 +640 425 +500 333 +640 480 +640 459 +640 403 +640 480 +640 480 +363 640 +500 374 +640 425 +640 427 +600 399 +640 427 +500 333 +640 469 +640 427 +640 424 +640 446 +640 427 +640 480 +640 480 +640 427 +640 389 +500 351 +640 425 +604 453 +640 427 +428 640 +500 375 +640 428 +500 375 +640 480 +640 421 +640 360 +401 640 +640 425 +640 426 +612 612 +640 480 +640 480 +375 500 +428 640 +640 426 +640 479 +640 427 +361 640 +427 640 +480 640 +640 480 +640 480 +640 459 +500 375 +640 426 +640 480 +426 640 +640 480 +640 480 +640 424 +640 480 +640 614 +640 480 +640 359 +640 427 +480 640 +640 480 +640 480 +640 427 +500 333 +375 500 +481 640 +640 480 +480 640 +500 375 +640 512 +640 480 +455 552 +640 427 +640 480 +640 427 +640 460 +640 480 +640 426 +640 301 +480 640 +478 640 +427 640 +640 441 +640 480 +612 612 +640 430 +640 480 +640 480 +640 480 +640 427 +640 426 +640 528 +640 320 +480 640 +640 564 +640 640 +640 480 +500 375 +431 640 +500 375 +428 640 +500 375 +354 500 +640 383 +480 640 +640 439 +640 480 +640 627 +640 427 +500 338 +480 640 +640 406 +640 480 +561 640 +640 480 +375 500 +640 480 +427 640 +640 480 +640 480 +640 401 +640 480 +640 435 +640 602 +640 480 +640 640 +640 480 +640 427 +500 489 +640 480 +640 424 +640 480 +640 457 +640 480 +640 480 +640 480 +500 375 +640 426 +640 478 +480 640 +427 640 +640 480 +640 480 +640 480 +640 378 +640 480 +640 480 +480 640 +427 640 +640 451 +640 631 +500 338 +640 480 +640 447 +500 333 +640 425 +640 426 +640 480 +428 640 +640 480 +640 479 +426 640 +640 427 +500 415 +438 640 +640 480 +640 468 +640 426 +640 480 +640 432 +640 425 +640 480 +428 640 +640 427 +640 426 +270 500 +640 480 +478 640 +640 467 +640 426 +500 372 +640 426 +480 640 +409 500 +640 480 +640 481 +640 480 +640 425 +640 427 +640 480 +640 480 +612 612 +493 640 +640 416 +640 480 +640 427 +640 427 +640 480 +427 640 +500 375 +640 426 +640 480 +640 480 +640 427 +480 640 +640 640 +640 425 +640 480 +640 480 +480 640 +640 427 +480 640 +480 640 +640 427 +415 640 +640 427 +640 427 +640 427 +640 480 +500 375 +640 425 +640 428 +480 640 +640 427 +640 424 +640 491 +640 424 +333 500 +640 480 +640 425 +640 427 +640 427 +500 375 +640 424 +640 425 +640 427 +640 640 +640 480 +500 375 +425 640 +640 480 +640 425 +500 305 +500 375 +640 480 +640 480 +320 240 +640 387 +640 480 +640 480 +640 480 +612 612 +640 480 +500 375 +272 500 +640 426 +640 512 +640 512 +640 480 +640 428 +480 640 +640 458 +640 360 +640 427 +640 480 +640 426 +640 427 +640 480 +640 427 +500 375 +500 332 +478 640 +640 298 +425 640 +481 640 +640 333 +640 480 +640 480 +640 244 +500 281 +640 376 +640 640 +640 480 +612 612 +640 426 +500 323 +508 640 +427 640 +480 640 +640 427 +640 427 +424 640 +500 334 +640 425 +640 476 +612 612 +433 640 +480 640 +640 480 +640 406 +568 640 +640 427 +346 500 +500 332 +500 333 +640 493 +473 640 +640 480 +640 513 +640 425 +640 427 +640 424 +480 640 +640 428 +640 426 +640 480 +640 427 +640 424 +640 428 +640 426 +640 480 +640 480 +640 427 +500 375 +639 640 +512 640 +612 612 +640 480 +640 480 +480 640 +429 640 +640 546 +640 480 +480 640 +640 424 +424 640 +332 500 +640 459 +640 480 +500 333 +640 425 +427 640 +640 427 +640 480 +640 427 +640 480 +640 480 +472 322 +640 424 +478 640 +640 431 +640 323 +640 427 +500 375 +480 640 +640 401 +480 640 +333 500 +640 480 +633 640 +427 640 +640 640 +640 480 +640 427 +500 411 +640 427 +500 353 +640 480 +640 480 +359 640 +640 427 +426 640 +482 640 +640 427 +427 640 +375 500 +500 375 +640 480 +427 640 +640 428 +640 481 +640 480 +640 427 +640 426 +500 375 +640 427 +428 640 +640 480 +640 480 +375 500 +640 427 +640 408 +500 400 +640 480 +640 449 +375 500 +453 640 +424 640 +640 427 +640 428 +640 480 +640 480 +640 480 +640 426 +640 425 +427 640 +640 459 +640 424 +612 612 +640 480 +640 427 +640 427 +640 427 +640 480 +640 427 +640 457 +640 480 +500 428 +429 640 +640 438 +640 427 +640 480 +426 640 +500 375 +640 384 +500 333 +500 281 +640 426 +640 431 +426 640 +500 375 +481 640 +640 480 +640 480 +640 480 +640 456 +426 640 +640 480 +640 396 +450 338 +495 640 +640 435 +500 408 +404 640 +640 427 +500 375 +476 640 +640 480 +640 427 +640 480 +640 480 +640 393 +640 480 +640 480 +640 480 +375 500 +495 533 +480 640 +480 640 +500 295 +480 640 +612 612 +640 478 +640 426 +612 612 +426 640 +640 480 +640 480 +640 427 +640 428 +640 486 +640 426 +640 481 +640 427 +640 426 +640 427 +640 428 +600 400 +640 409 +640 424 +640 426 +640 367 +640 480 +640 426 +612 612 +480 640 +640 480 +480 640 +640 480 +640 427 +640 427 +426 640 +640 427 +480 640 +640 426 +426 640 +640 427 +640 426 +500 375 +333 500 +612 612 +640 424 +640 480 +640 509 +640 427 +640 427 +500 239 +640 426 +640 427 +379 446 +640 427 +640 426 +640 478 +640 480 +427 640 +640 480 +627 640 +640 480 +500 375 +427 640 +640 478 +640 427 +612 612 +640 640 +500 356 +480 640 +640 427 +514 640 +640 458 +500 335 +640 480 +640 480 +640 516 +640 428 +640 427 +512 640 +333 500 +500 257 +640 360 +640 480 +640 480 +640 480 +375 500 +640 480 +427 640 +500 375 +640 427 +640 480 +480 640 +640 504 +480 640 +640 480 +427 640 +427 640 +640 480 +500 375 +500 333 +640 426 +640 257 +640 433 +500 333 +640 427 +640 360 +640 426 +640 427 +459 640 +640 296 +640 419 +360 640 +640 480 +480 640 +424 640 +375 500 +500 375 +428 640 +640 427 +640 428 +612 612 +480 640 +500 281 +640 349 +640 378 +640 480 +640 439 +427 640 +600 600 +480 640 +500 333 +427 640 +640 427 +640 427 +640 427 +640 453 +640 427 +640 427 +640 480 +640 427 +500 375 +640 480 +640 427 +640 425 +640 389 +640 480 +480 640 +640 480 +640 480 +640 480 +640 427 +640 516 +640 424 +640 480 +640 428 +480 640 +612 612 +640 477 +500 375 +480 640 +640 428 +480 640 +640 427 +375 500 +640 360 +640 480 +640 426 +640 427 +640 425 +640 428 +640 480 +640 426 +500 408 +640 428 +640 480 +425 640 +500 471 +480 640 +640 480 +480 640 +640 480 +640 480 +640 427 +478 640 +640 427 +640 513 +500 365 +640 508 +480 640 +640 480 +425 640 +640 480 +640 640 +640 425 +520 520 +640 424 +640 480 +640 483 +640 424 +480 640 +640 480 +612 612 +640 427 +640 427 +640 468 +640 427 +500 332 +640 480 +640 427 +640 480 +480 640 +640 480 +640 480 +500 422 +640 424 +448 299 +640 480 +480 640 +480 640 +375 500 +500 375 +640 480 +640 427 +640 427 +640 427 +500 332 +640 427 +640 428 +500 375 +640 427 +500 375 +640 478 +640 429 +375 500 +640 640 +427 640 +640 518 +640 428 +640 480 +480 640 +640 480 +480 640 +640 286 +640 466 +424 640 +640 480 +640 480 +424 640 +640 480 +500 332 +640 393 +640 427 +640 394 +640 471 +500 375 +500 390 +500 332 +640 640 +640 318 +640 427 +640 398 +480 640 +640 500 +425 640 +640 354 +640 480 +640 428 +640 478 +427 640 +500 492 +640 471 +640 427 +640 396 +640 427 +640 480 +612 612 +640 480 +500 375 +500 333 +640 427 +480 640 +640 426 +640 425 +640 427 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +480 640 +368 500 +375 500 +375 500 +640 428 +640 427 +640 427 +375 500 +640 480 +640 480 +640 590 +640 425 +482 640 +480 640 +640 424 +375 500 +640 360 +640 480 +480 640 +500 375 +520 640 +640 487 +425 640 +480 640 +640 463 +500 333 +500 375 +374 500 +482 500 +500 500 +640 441 +612 612 +640 480 +640 479 +640 323 +500 334 +526 640 +640 480 +427 640 +640 480 +640 427 +640 480 +640 424 +640 480 +640 444 +426 640 +640 574 +640 293 +640 480 +640 639 +640 427 +500 375 +640 427 +480 640 +640 360 +640 424 +640 480 +640 480 +640 427 +500 375 +480 640 +640 413 +640 428 +640 480 +640 428 +480 640 +640 480 +640 480 +640 428 +640 480 +427 640 +640 427 +480 640 +427 640 +478 640 +427 640 +612 612 +428 640 +640 480 +500 375 +480 640 +640 480 +640 480 +480 640 +640 480 +640 480 +630 379 +425 640 +640 439 +640 480 +480 640 +640 401 +500 500 +640 427 +428 640 +333 500 +640 463 +640 425 +640 433 +640 480 +640 480 +427 640 +428 640 +640 428 +425 640 +640 480 +423 640 +640 426 +500 333 +640 427 +500 375 +640 457 +480 640 +640 427 +426 640 +513 640 +640 426 +500 375 +640 397 +640 360 +426 640 +640 360 +640 427 +640 426 +640 422 +427 640 +640 480 +480 640 +640 478 +640 480 +640 426 +428 640 +640 480 +640 426 +477 640 +640 480 +640 427 +640 233 +640 426 +375 500 +500 333 +640 480 +640 426 +500 334 +500 375 +400 302 +500 332 +375 500 +640 284 +640 433 +500 332 +640 362 +640 480 +640 427 +640 480 +500 375 +640 480 +612 612 +426 640 +640 320 +640 424 +427 640 +640 480 +640 360 +427 640 +426 640 +640 426 +640 424 +640 427 +480 640 +640 480 +550 376 +640 480 +640 427 +640 428 +640 639 +640 640 +640 426 +480 640 +427 640 +640 428 +640 428 +640 480 +427 640 +480 640 +363 544 +640 480 +267 188 +500 375 +500 331 +500 334 +640 480 +640 428 +500 362 +476 640 +640 430 +640 480 +640 480 +640 433 +640 343 +406 500 +640 426 +500 375 +640 426 +640 480 +640 449 +320 240 +640 427 +500 375 +640 324 +640 428 +640 480 +500 452 +427 640 +500 500 +500 333 +640 480 +640 233 +640 427 +640 429 +417 640 +480 640 +450 381 +640 427 +640 421 +500 333 +640 640 +532 640 +456 640 +640 360 +640 480 +640 425 +640 480 +640 480 +640 606 +640 426 +640 426 +640 429 +640 428 +640 480 +480 640 +427 640 +640 480 +337 640 +640 426 +640 470 +640 427 +431 640 +640 640 +640 467 +470 640 +640 640 +480 640 +410 339 +427 640 +640 480 +640 447 +640 428 +480 640 +640 174 +612 612 +640 480 +640 360 +612 612 +640 428 +480 640 +375 500 +640 480 +640 424 +500 375 +600 400 +640 480 +640 426 +480 640 +640 281 +640 480 +500 375 +640 480 +640 400 +640 425 +640 480 +640 427 +640 429 +427 640 +640 446 +640 359 +612 612 +640 426 +427 640 +640 457 +640 427 +480 640 +426 640 +640 480 +576 396 +640 480 +640 427 +500 332 +640 393 +500 370 +640 426 +640 480 +640 427 +640 458 +640 480 +426 640 +500 314 +500 400 +640 426 +640 480 +640 427 +640 480 +600 410 +480 640 +640 480 +640 480 +640 426 +640 480 +500 375 +640 526 +640 427 +425 640 +640 482 +640 448 +640 480 +640 427 +640 480 +640 427 +640 426 +640 480 +500 357 +640 480 +640 360 +500 375 +640 480 +640 480 +640 364 +427 640 +640 427 +334 500 +640 427 +640 480 +500 375 +480 640 +478 640 +640 427 +640 480 +500 334 +640 480 +480 640 +640 425 +640 480 +640 425 +640 438 +640 425 +640 427 +640 480 +640 480 +375 500 +640 510 +450 600 +640 427 +375 500 +640 480 +480 640 +640 427 +640 480 +640 480 +248 640 +480 640 +640 427 +640 431 +640 480 +640 427 +416 640 +640 452 +640 640 +640 427 +640 480 +640 480 +478 640 +640 480 +372 500 +640 428 +640 427 +640 480 +640 480 +640 478 +640 640 +612 612 +500 375 +640 480 +640 478 +640 640 +640 473 +480 640 +640 427 +500 375 +640 480 +640 427 +640 640 +640 471 +640 480 +640 480 +480 640 +640 480 +640 486 +640 480 +640 391 +500 375 +426 640 +500 378 +640 428 +640 480 +640 480 +640 427 +480 640 +640 480 +640 456 +640 428 +500 333 +640 557 +640 457 +426 640 +640 480 +640 427 +640 476 +640 640 +640 491 +500 384 +640 403 +640 640 +640 439 +428 640 +640 480 +361 640 +612 612 +640 480 +481 640 +640 480 +565 640 +640 360 +640 426 +640 428 +640 429 +403 640 +640 480 +640 480 +640 427 +640 428 +640 425 +640 380 +640 426 +480 640 +640 480 +640 426 +640 480 +640 429 +548 640 +640 431 +500 375 +500 375 +640 474 +500 333 +480 640 +640 599 +480 640 +427 640 +640 428 +500 400 +500 375 +426 640 +427 640 +640 331 +480 640 +640 425 +640 480 +640 427 +500 333 +640 286 +500 333 +640 428 +375 500 +640 480 +417 640 +640 427 +640 480 +427 640 +640 480 +427 640 +640 426 +640 490 +640 427 +640 480 +336 448 +640 361 +640 360 +418 640 +480 640 +640 426 +500 375 +640 426 +305 229 +600 640 +426 640 +640 480 +640 480 +640 414 +640 427 +500 375 +500 446 +314 500 +640 480 +640 480 +640 480 +640 622 +480 640 +418 640 +428 640 +640 427 +500 352 +640 480 +640 480 +640 480 +640 359 +640 427 +640 566 +640 428 +640 426 +640 426 +640 425 +427 640 +612 612 +640 566 +640 427 +640 480 +640 480 +640 428 +480 640 +640 480 +640 429 +640 480 +429 640 +612 612 +640 424 +640 371 +495 640 +427 640 +640 640 +640 282 +640 427 +640 426 +500 335 +640 480 +480 640 +480 640 +500 376 +640 480 +425 640 +640 427 +500 333 +640 640 +332 500 +640 427 +640 527 +640 480 +640 426 +640 480 +640 419 +480 640 +640 238 +480 640 +640 480 +640 480 +640 480 +640 425 +640 427 +500 375 +425 640 +640 480 +478 640 +640 488 +640 480 +640 461 +374 500 +640 427 +640 427 +500 333 +612 612 +640 428 +426 640 +640 429 +640 427 +361 640 +428 640 +640 427 +640 427 +640 436 +640 293 +640 418 +640 480 +640 428 +640 480 +612 612 +612 612 +640 480 +426 640 +640 427 +500 375 +480 640 +640 640 +640 480 +427 640 +640 429 +640 427 +640 474 +427 640 +640 427 +640 426 +427 640 +414 640 +478 640 +640 480 +480 640 +640 427 +443 640 +640 480 +640 426 +500 334 +640 427 +640 480 +574 640 +480 640 +512 640 +640 480 +640 480 +640 464 +500 375 +640 428 +375 500 +640 480 +375 500 +640 480 +640 480 +640 434 +480 640 +612 612 +640 480 +640 426 +366 500 +480 640 +500 375 +640 425 +500 333 +640 479 +640 428 +640 480 +640 480 +640 360 +640 480 +640 427 +480 640 +640 480 +640 428 +640 427 +640 457 +481 640 +640 492 +480 640 +500 333 +597 455 +480 640 +354 500 +493 640 +640 480 +640 359 +640 480 +500 375 +640 480 +640 427 +500 375 +428 640 +640 360 +480 640 +640 427 +480 640 +640 480 +640 413 +427 640 +640 414 +640 384 +426 640 +640 389 +425 640 +640 427 +431 640 +640 427 +427 640 +640 427 +640 409 +426 640 +530 640 +640 390 +640 425 +640 427 +640 478 +415 324 +640 434 +427 640 +480 640 +426 640 +536 640 +640 427 +640 395 +640 427 +374 500 +640 426 +640 427 +176 144 +640 640 +640 354 +640 480 +500 343 +427 640 +640 426 +612 612 +640 425 +640 480 +375 500 +427 640 +640 480 +640 479 +640 360 +640 425 +640 425 +500 375 +640 480 +640 426 +640 427 +640 426 +480 640 +480 640 +640 480 +480 640 +640 428 +612 612 +425 640 +640 427 +640 359 +640 480 +640 431 +500 311 +640 480 +640 405 +428 640 +486 640 +640 480 +640 426 +375 500 +640 480 +640 427 +640 426 +427 640 +640 264 +500 375 +640 427 +640 425 +500 332 +640 427 +640 449 +640 399 +640 480 +640 480 +500 322 +639 640 +640 427 +640 480 +640 427 +480 640 +640 480 +640 426 +640 480 +640 360 +640 512 +640 424 +480 640 +640 425 +640 431 +480 640 +500 375 +500 334 +571 640 +480 640 +640 480 +612 612 +427 640 +359 640 +500 336 +640 427 +334 500 +500 375 +360 270 +500 375 +640 427 +640 457 +640 480 +480 640 +500 375 +612 612 +427 640 +388 640 +500 333 +640 480 +500 375 +640 438 +480 640 +480 640 +640 427 +640 480 +640 480 +480 640 +500 333 +640 479 +640 429 +500 375 +640 412 +640 480 +640 421 +640 480 +640 480 +480 640 +640 480 +640 480 +640 359 +640 366 +640 480 +427 640 +640 427 +640 426 +640 480 +480 640 +640 427 +640 378 +640 480 +640 480 +640 480 +640 428 +640 480 +480 640 +434 640 +640 413 +640 480 +640 480 +373 640 +640 428 +640 433 +500 375 +427 640 +640 480 +480 640 +640 503 +640 427 +640 480 +500 333 +640 429 +640 482 +460 640 +512 640 +612 612 +640 426 +640 480 +480 640 +640 278 +640 524 +640 479 +640 430 +640 480 +640 439 +375 500 +426 640 +640 428 +640 427 +480 640 +640 480 +640 480 +640 426 +640 512 +640 427 +640 480 +640 427 +640 424 +640 427 +640 427 +500 375 +640 480 +545 640 +637 640 +427 640 +427 640 +640 480 +426 640 +640 480 +408 640 +500 375 +640 480 +640 480 +480 640 +640 428 +640 640 +428 640 +640 480 +640 427 +640 480 +640 427 +640 483 +478 640 +640 480 +500 375 +612 612 +640 424 +436 640 +640 428 +640 480 +640 427 +612 612 +480 640 +383 640 +640 427 +500 334 +640 449 +640 427 +640 480 +640 427 +500 375 +500 375 +640 480 +640 478 +640 480 +427 640 +640 428 +640 480 +425 640 +640 480 +640 425 +612 612 +480 640 +640 360 +640 403 +427 640 +640 427 +612 612 +640 425 +640 480 +500 418 +640 480 +640 480 +640 351 +640 480 +640 480 +480 640 +500 375 +375 500 +640 480 +469 640 +640 425 +640 480 +640 623 +640 480 +640 427 +640 512 +480 640 +640 445 +359 239 +640 523 +640 427 +334 500 +640 425 +500 375 +640 427 +333 500 +640 359 +478 640 +500 375 +640 528 +640 426 +500 333 +640 480 +640 575 +480 640 +640 429 +640 580 +640 640 +640 480 +640 427 +640 480 +640 475 +640 480 +500 375 +640 480 +480 640 +640 426 +640 424 +640 480 +427 640 +500 362 +478 640 +480 640 +640 480 +640 480 +478 640 +640 414 +640 427 +500 343 +500 297 +640 428 +500 348 +640 480 +220 240 +640 425 +423 640 +640 425 +640 408 +640 411 +640 427 +640 437 +640 360 +640 385 +640 464 +640 480 +524 640 +640 480 +640 427 +500 333 +640 427 +640 431 +640 480 +640 427 +640 480 +640 480 +427 640 +640 438 +640 427 +640 480 +640 480 +480 640 +640 469 +640 428 +640 427 +640 428 +640 428 +426 639 +500 333 +640 480 +480 336 +334 500 +454 640 +500 375 +506 640 +640 640 +640 616 +640 480 +427 640 +640 468 +640 428 +640 423 +640 427 +427 640 +428 640 +400 500 +640 480 +640 427 +640 384 +640 348 +640 619 +357 500 +640 480 +640 428 +640 480 +500 405 +640 427 +441 500 +480 640 +640 480 +488 640 +500 375 +640 427 +432 324 +640 480 +640 503 +499 640 +640 480 +640 424 +612 612 +640 425 +640 427 +427 640 +640 435 +375 500 +495 640 +480 640 +424 640 +640 480 +600 400 +640 428 +640 427 +640 480 +640 480 +640 427 +417 640 +640 388 +640 425 +375 500 +481 640 +640 480 +640 427 +427 640 +500 332 +427 640 +640 504 +640 640 +500 375 +640 480 +640 427 +640 414 +480 640 +640 427 +640 480 +612 612 +640 487 +640 427 +640 429 +640 427 +400 640 +640 480 +640 480 +500 375 +478 640 +640 360 +640 418 +412 456 +640 425 +640 480 +640 427 +640 594 +640 409 +480 640 +640 428 +640 428 +640 480 +612 612 +640 427 +640 453 +640 480 +640 403 +500 400 +640 427 +640 480 +640 480 +640 480 +480 640 +500 375 +427 640 +500 375 +500 380 +612 612 +640 427 +640 400 +427 640 +640 426 +640 361 +640 433 +500 492 +640 427 +640 428 +640 427 +640 427 +640 424 +640 480 +640 457 +500 400 +640 425 +500 333 +640 628 +427 640 +640 427 +640 480 +640 427 +500 375 +640 427 +480 640 +640 426 +448 640 +640 480 +480 640 +640 480 +480 640 +640 480 +329 640 +480 640 +640 513 +640 457 +480 640 +640 360 +640 489 +640 466 +500 375 +640 480 +640 425 +640 427 +640 480 +640 480 +640 427 +427 640 +445 500 +640 549 +640 436 +640 554 +640 480 +480 640 +427 640 +389 640 +640 426 +428 640 +640 427 +640 454 +480 640 +640 640 +480 640 +640 480 +640 583 +640 425 +640 396 +500 375 +500 170 +640 427 +640 424 +640 428 +480 640 +640 480 +500 375 +500 313 +640 426 +640 457 +640 424 +640 427 +480 640 +640 427 +240 180 +640 480 +640 480 +640 427 +640 427 +375 500 +640 480 +329 500 +500 375 +640 478 +640 361 +480 640 +640 427 +640 480 +640 480 +500 375 +640 428 +640 427 +640 487 +640 480 +480 640 +640 427 +640 427 +640 480 +640 480 +500 333 +640 480 +425 640 +640 480 +640 467 +640 427 +640 427 +640 425 +640 480 +640 480 +640 426 +640 425 +480 640 +375 500 +640 373 +640 425 +500 375 +640 480 +500 423 +480 640 +640 426 +612 612 +640 480 +612 612 +375 500 +640 427 +640 640 +640 480 +500 375 +500 375 +375 500 +500 375 +640 454 +640 360 +478 640 +640 429 +575 640 +640 425 +640 424 +640 428 +562 640 +640 379 +240 320 +640 445 +422 640 +512 640 +640 426 +640 480 +429 640 +640 427 +480 640 +640 427 +640 425 +480 640 +480 640 +640 360 +640 427 +640 427 +640 293 +427 640 +640 427 +500 375 +640 426 +640 480 +455 500 +640 428 +640 301 +640 388 +640 427 +425 640 +500 375 +640 480 +640 480 +640 479 +480 640 +427 640 +640 448 +640 482 +453 640 +640 480 +471 640 +480 640 +640 480 +612 612 +640 426 +480 640 +480 640 +640 480 +640 429 +640 480 +640 393 +480 640 +640 429 +480 640 +427 640 +596 640 +640 428 +640 427 +427 640 +640 426 +333 500 +640 425 +640 428 +640 427 +640 480 +640 427 +640 480 +612 612 +640 480 +426 640 +426 640 +640 457 +500 352 +640 427 +612 612 +500 375 +640 428 +480 640 +640 360 +640 424 +640 427 +640 257 +480 640 +640 425 +640 427 +640 426 +500 333 +480 640 +640 480 +640 598 +640 480 +640 361 +480 640 +500 334 +640 453 +640 480 +640 428 +500 375 +640 243 +640 480 +640 427 +640 429 +500 375 +640 425 +640 427 +480 640 +640 428 +640 484 +640 480 +640 480 +640 480 +640 480 +427 640 +640 259 +493 640 +640 443 +640 427 +640 428 +640 480 +500 320 +640 480 +640 427 +500 243 +640 427 +640 427 +640 480 +640 428 +640 427 +500 375 +478 640 +480 640 +640 427 +640 427 +640 427 +427 640 +640 426 +640 480 +640 426 +640 480 +500 333 +500 375 +628 640 +485 640 +427 640 +451 640 +640 427 +612 612 +500 333 +631 640 +640 457 +480 640 +640 427 +640 427 +640 426 +500 400 +625 417 +375 500 +640 480 +480 640 +640 426 +640 430 +640 425 +640 480 +640 413 +640 512 +500 375 +478 640 +640 425 +640 469 +640 427 +640 480 +480 640 +480 640 +639 640 +640 427 +480 640 +375 500 +640 534 +640 495 +500 325 +640 427 +480 640 +500 375 +640 640 +640 427 +640 429 +640 389 +444 265 +640 480 +612 612 +640 480 +289 640 +480 640 +640 480 +640 435 +640 480 +640 530 +640 424 +640 424 +359 640 +640 427 +427 640 +426 640 +640 483 +640 427 +640 480 +640 429 +640 424 +500 375 +480 640 +640 427 +640 480 +640 480 +480 640 +427 640 +640 480 +640 426 +640 429 +640 480 +640 480 +640 428 +640 424 +640 480 +500 375 +500 375 +500 334 +473 640 +640 439 +640 426 +640 480 +333 500 +640 480 +555 640 +500 375 +640 427 +375 500 +478 500 +640 397 +640 480 +640 425 +640 427 +640 640 +640 425 +640 480 +425 640 +640 480 +640 480 +612 612 +480 640 +640 480 +640 428 +640 480 +640 427 +640 419 +439 640 +640 523 +640 370 +640 480 +435 640 +640 427 +375 500 +640 640 +480 640 +640 425 +375 500 +640 480 +640 480 +640 480 +480 640 +500 375 +640 480 +500 400 +640 480 +484 640 +640 423 +640 480 +640 427 +640 480 +640 481 +480 640 +427 640 +500 375 +640 426 +427 640 +612 612 +640 480 +640 640 +480 640 +480 640 +640 425 +500 392 +640 480 +640 427 +640 360 +640 428 +640 453 +480 640 +612 612 +640 480 +500 332 +640 366 +480 640 +480 640 +500 375 +640 480 +640 427 +480 640 +640 480 +480 640 +500 500 +640 427 +640 640 +640 547 +640 480 +640 480 +640 480 +640 426 +640 640 +640 428 +640 428 +640 499 +640 425 +640 480 +425 640 +500 356 +500 386 +640 351 +640 551 +640 423 +640 392 +640 427 +640 427 +640 425 +419 640 +640 426 +375 500 +612 612 +427 640 +640 426 +426 640 +427 640 +640 414 +640 426 +640 430 +505 640 +640 480 +640 425 +640 522 +640 427 +500 375 +640 480 +480 640 +640 424 +640 577 +640 434 +640 427 +640 428 +640 480 +612 612 +640 423 +500 333 +640 426 +427 640 +500 375 +640 436 +640 480 +640 487 +640 427 +480 640 +640 427 +640 480 +500 375 +640 427 +640 426 +612 612 +500 429 +426 640 +640 480 +640 480 +640 480 +640 428 +640 478 +640 427 +640 478 +428 640 +414 640 +600 402 +640 434 +640 480 +640 480 +640 370 +640 483 +640 480 +640 480 +640 427 +506 640 +500 375 +512 640 +426 640 +640 434 +640 281 +640 480 +640 360 +500 240 +640 386 +453 640 +640 425 +640 427 +359 640 +293 409 +500 375 +427 640 +500 375 +427 640 +424 640 +500 332 +640 360 +640 480 +640 427 +640 443 +640 480 +500 375 +427 640 +640 480 +513 640 +640 480 +640 429 +375 500 +595 640 +500 281 +500 375 +431 640 +480 640 +640 480 +640 533 +427 640 +419 640 +640 426 +640 480 +640 513 +640 440 +640 427 +640 428 +640 480 +500 333 +640 424 +480 640 +612 612 +500 375 +640 480 +640 425 +640 640 +640 640 +342 500 +640 424 +640 426 +640 428 +640 428 +480 640 +640 428 +500 375 +640 640 +640 480 +427 640 +640 426 +375 500 +426 640 +640 480 +640 640 +640 468 +480 640 +640 480 +640 480 +500 375 +640 480 +481 640 +640 480 +640 427 +640 427 +640 640 +640 428 +640 601 +640 443 +500 333 +427 640 +640 480 +612 612 +640 594 +375 500 +427 640 +640 478 +640 480 +640 427 +640 480 +640 428 +428 640 +640 457 +640 480 +375 500 +640 427 +428 640 +640 423 +475 435 +640 425 +640 322 +427 640 +529 640 +478 640 +612 612 +428 640 +640 480 +640 480 +640 480 +640 480 +500 375 +333 500 +480 640 +640 478 +240 320 +640 427 +640 427 +426 640 +453 640 +640 480 +375 500 +640 480 +640 480 +495 640 +427 640 +640 427 +500 375 +640 569 +640 427 +640 426 +640 425 +428 640 +640 427 +428 640 +640 360 +640 427 +612 612 +480 640 +500 354 +640 428 +640 426 +500 488 +640 480 +640 480 +640 480 +480 640 +640 360 +640 480 +500 375 +640 480 +640 424 +640 524 +640 480 +427 640 +640 427 +640 424 +296 640 +640 480 +500 375 +640 425 +500 373 +640 427 +338 640 +432 373 +612 612 +640 446 +640 331 +640 426 +640 480 +640 487 +506 640 +640 480 +640 425 +640 427 +640 497 +427 640 +640 476 +640 426 +640 480 +640 426 +640 426 +640 428 +640 492 +640 480 +480 640 +426 640 +480 640 +640 428 +640 478 +529 640 +640 480 +640 428 +640 480 +640 480 +640 428 +427 640 +640 619 +640 426 +480 640 +640 480 +640 396 +640 424 +640 480 +640 427 +640 427 +640 427 +640 426 +640 426 +478 640 +500 375 +640 480 +640 427 +640 391 +480 640 +640 480 +640 427 +443 640 +612 612 +640 529 +640 480 +640 480 +612 612 +640 480 +640 480 +640 308 +428 640 +640 427 +640 480 +640 480 +426 640 +640 455 +478 640 +375 500 +426 640 +427 640 +640 360 +640 480 +640 425 +640 480 +640 423 +640 427 +640 427 +320 240 +480 640 +640 423 +426 640 +640 520 +323 500 +480 640 +640 426 +612 612 +500 374 +640 427 +640 427 +640 360 +640 425 +640 480 +640 425 +640 426 +640 480 +500 375 +640 484 +426 640 +500 375 +640 480 +640 427 +640 430 +640 577 +428 640 +640 480 +425 640 +640 480 +640 428 +427 640 +640 448 +640 414 +640 480 +612 612 +518 640 +640 640 +640 481 +640 350 +640 480 +640 494 +424 640 +500 384 +424 640 +640 480 +500 216 +640 480 +500 375 +640 476 +640 480 +640 428 +640 480 +500 333 +427 640 +270 360 +640 480 +640 339 +640 426 +480 640 +612 612 +500 375 +500 375 +640 636 +640 480 +640 480 +480 640 +640 351 +640 480 +640 427 +640 480 +640 426 +480 640 +383 640 +640 480 +612 612 +640 428 +640 426 +640 511 +640 480 +640 480 +640 480 +427 640 +481 640 +424 640 +428 640 +640 476 +640 480 +375 500 +640 480 +640 459 +458 640 +640 398 +500 375 +478 640 +500 375 +500 500 +640 439 +640 426 +640 480 +640 427 +500 333 +640 366 +640 480 +640 427 +425 640 +640 640 +640 441 +640 427 +612 612 +566 640 +640 479 +640 427 +612 612 +493 640 +480 640 +500 499 +640 543 +640 427 +640 480 +640 427 +640 426 +335 500 +640 425 +640 420 +427 640 +612 612 +640 425 +640 428 +640 427 +501 640 +427 640 +640 480 +640 428 +640 427 +640 429 +427 640 +500 334 +500 332 +640 480 +640 426 +640 512 +640 491 +640 480 +640 401 +640 480 +640 428 +640 480 +424 640 +640 425 +640 426 +427 640 +640 480 +480 640 +640 640 +428 640 +640 429 +375 500 +640 446 +640 480 +427 640 +640 503 +640 345 +612 612 +640 426 +480 640 +640 374 +640 480 +480 640 +640 425 +640 480 +408 640 +640 427 +640 480 +640 433 +427 640 +564 640 +500 375 +500 333 +640 360 +640 639 +640 480 +500 375 +640 426 +640 425 +640 437 +640 427 +640 480 +640 480 +640 480 +500 375 +640 483 +640 424 +640 436 +500 375 +428 640 +500 375 +480 640 +427 640 +424 640 +640 360 +640 480 +480 640 +480 640 +640 480 +640 285 +500 375 +640 366 +640 429 +640 481 +640 480 +427 640 +640 480 +640 427 +640 424 +640 424 +640 427 +480 640 +604 453 +473 640 +640 480 +500 285 +480 640 +640 418 +640 425 +640 480 +529 640 +534 640 +640 339 +500 375 +640 416 +500 375 +640 480 +640 480 +640 425 +640 480 +640 480 +640 457 +640 424 +500 375 +480 640 +640 427 +500 333 +640 480 +640 480 +640 426 +640 457 +640 428 +640 424 +640 427 +640 421 +500 375 +612 612 +640 427 +640 427 +375 500 +640 435 +640 366 +495 640 +612 612 +512 640 +640 427 +500 375 +640 428 +640 480 +640 479 +500 375 +640 360 +334 500 +500 333 +640 471 +612 612 +640 425 +429 640 +427 640 +640 640 +427 640 +640 427 +640 428 +480 640 +640 428 +640 427 +640 316 +457 640 +320 240 +500 375 +612 612 +640 427 +500 393 +640 480 +640 480 +640 427 +640 480 +640 640 +640 441 +484 500 +640 474 +640 427 +640 427 +640 428 +640 458 +640 360 +468 640 +427 640 +640 425 +640 480 +500 333 +640 427 +640 427 +480 640 +640 480 +640 428 +640 428 +640 428 +640 480 +640 286 +480 640 +640 492 +640 480 +640 480 +640 425 +640 427 +270 360 +457 480 +640 480 +640 480 +500 375 +640 430 +640 480 +640 480 +500 333 +640 426 +500 334 +640 428 +640 427 +589 640 +640 426 +640 299 +427 640 +640 387 +640 427 +426 640 +640 427 +640 480 +640 426 +640 480 +640 406 +511 640 +640 448 +428 640 +500 377 +640 426 +480 640 +375 500 +640 427 +640 427 +640 480 +640 480 +640 427 +640 480 +500 513 +480 640 +427 640 +640 359 +640 395 +480 640 +426 640 +640 427 +359 640 +640 478 +640 406 +640 429 +640 480 +640 426 +640 427 +521 640 +400 400 +640 428 +480 640 +640 480 +640 512 +426 640 +478 640 +433 640 +429 640 +500 375 +640 426 +640 422 +640 480 +400 300 +640 426 +500 500 +640 359 +640 427 +640 478 +640 480 +640 427 +640 427 +500 375 +640 427 +500 375 +500 375 +640 358 +458 640 +480 640 +640 426 +640 480 +640 426 +401 640 +480 640 +640 480 +640 480 +500 375 +640 424 +640 480 +640 520 +640 360 +500 375 +640 427 +426 640 +640 427 +640 281 +500 375 +428 640 +640 426 +640 427 +640 480 +640 426 +640 525 +640 559 +640 458 +640 480 +480 640 +640 535 +640 480 +640 480 +640 493 +640 426 +640 427 +480 640 +375 500 +640 480 +640 480 +640 427 +480 640 +640 576 +640 425 +640 480 +427 640 +640 360 +640 433 +640 478 +426 640 +640 433 +640 406 +640 480 +640 427 +640 480 +640 480 +640 427 +500 375 +323 500 +640 427 +640 472 +375 500 +500 343 +640 483 +640 384 +424 640 +640 425 +424 640 +455 190 +640 427 +500 332 +480 640 +427 640 +640 424 +640 427 +640 480 +334 500 +427 640 +427 640 +426 640 +640 478 +640 425 +640 360 +640 427 +640 640 +640 360 +640 427 +640 427 +375 500 +640 471 +480 640 +640 275 +640 480 +640 480 +640 492 +640 376 +640 480 +640 426 +427 640 +640 480 +640 432 +640 469 +640 480 +640 427 +427 640 +375 500 +640 640 +640 428 +375 500 +596 640 +500 375 +500 330 +640 427 +640 480 +640 400 +480 640 +640 480 +640 480 +640 427 +640 480 +640 480 +337 500 +426 640 +640 425 +640 426 +478 640 +401 640 +640 427 +640 427 +480 640 +640 640 +480 640 +640 426 +640 480 +640 466 +480 640 +640 427 +383 640 +640 480 +640 640 +480 640 +640 480 +500 287 +500 375 +640 480 +640 427 +500 375 +640 478 +640 640 +640 416 +640 480 +640 427 +640 426 +324 500 +640 426 +640 428 +640 427 +640 480 +500 375 +640 480 +640 488 +640 335 +640 480 +612 612 +640 480 +640 314 +640 427 +424 640 +500 375 +640 397 +640 480 +500 375 +480 640 +500 375 +640 427 +640 480 +480 640 +500 263 +500 375 +500 375 +640 425 +640 480 +640 427 +375 500 +480 640 +500 333 +383 640 +640 391 +500 458 +640 427 +640 426 +480 640 +480 640 +640 480 +640 446 +500 375 +500 329 +640 480 +640 480 +612 612 +480 640 +431 640 +640 426 +480 640 +500 375 +640 480 +640 480 +640 426 +500 375 +640 480 +640 427 +500 375 +426 640 +640 480 +640 429 +500 375 +500 375 +640 480 +427 640 +480 640 +480 640 +640 481 +640 480 +500 375 +640 480 +332 500 +500 332 +500 500 +640 427 +640 480 +640 480 +333 500 +640 431 +640 424 +500 393 +640 480 +640 427 +640 480 +500 249 +640 512 +640 480 +640 425 +640 400 +640 427 +640 480 +640 480 +640 480 +640 427 +640 428 +427 640 +640 214 +640 640 +640 480 +500 333 +640 480 +640 439 +640 427 +480 640 +640 480 +640 424 +640 424 +640 480 +640 427 +480 640 +640 431 +640 425 +640 414 +480 640 +640 427 +640 428 +640 427 +640 426 +427 640 +480 640 +640 514 +375 500 +333 500 +640 457 +640 501 +640 427 +333 500 +640 360 +640 480 +425 640 +500 319 +640 361 +640 389 +640 325 +640 480 +500 344 +500 333 +397 640 +640 480 +480 640 +333 500 +640 326 +640 428 +640 477 +480 640 +640 426 +320 240 +640 426 +375 500 +640 400 +640 480 +640 338 +612 612 +640 427 +640 480 +640 640 +640 422 +640 428 +640 426 +640 640 +640 389 +640 425 +640 480 +640 480 +640 346 +480 640 +500 333 +640 428 +545 640 +400 500 +640 427 +640 480 +640 326 +480 640 +640 480 +640 425 +640 427 +640 427 +640 428 +333 500 +512 640 +409 640 +640 426 +640 425 +332 500 +640 480 +640 480 +640 361 +640 426 +640 478 +427 640 +360 270 +640 428 +478 640 +480 640 +640 427 +640 480 +480 640 +500 400 +410 555 +640 480 +333 500 +640 427 +640 480 +500 375 +640 480 +640 480 +428 640 +640 376 +640 480 +640 480 +479 640 +500 333 +640 480 +640 480 +428 640 +640 480 +640 478 +500 333 +640 480 +640 360 +640 426 +410 500 +500 375 +640 479 +480 640 +612 612 +640 425 +640 404 +612 612 +374 640 +500 375 +480 640 +427 640 +500 444 +426 640 +428 640 +640 427 +640 425 +640 479 +500 334 +500 375 +640 480 +640 359 +640 427 +480 640 +500 333 +425 640 +640 439 +640 480 +640 483 +480 640 +640 425 +640 481 +478 640 +427 640 +640 480 +500 333 +500 375 +640 640 +425 640 +500 375 +640 427 +500 333 +640 480 +640 426 +640 480 +640 640 +499 640 +480 640 +640 480 +480 640 +640 480 +640 427 +640 428 +640 548 +640 640 +500 375 +640 480 +640 426 +640 427 +500 169 +640 360 +640 480 +640 457 +480 640 +640 582 +640 480 +500 281 +640 425 +500 375 +640 480 +640 480 +640 480 +640 480 +640 480 +640 360 +333 500 +640 480 +457 640 +640 427 +640 407 +640 480 +640 480 +500 375 +500 329 +369 500 +640 480 +640 427 +426 640 +640 496 +640 427 +640 480 +475 405 +640 629 +640 426 +500 375 +640 427 +640 480 +640 335 +640 428 +640 512 +640 425 +612 612 +640 480 +640 480 +500 409 +640 412 +612 612 +640 427 +433 640 +640 427 +640 480 +640 474 +640 581 +500 482 +427 640 +640 427 +640 428 +379 500 +640 480 +482 500 +640 480 +640 480 +640 427 +500 323 +500 375 +426 640 +428 640 +640 480 +640 360 +640 427 +640 480 +640 480 +500 333 +640 640 +640 427 +640 480 +480 640 +640 427 +640 640 +640 417 +640 428 +640 429 +500 375 +500 375 +500 236 +428 640 +640 427 +500 375 +480 640 +640 427 +640 480 +640 480 +640 423 +640 427 +640 480 +640 424 +500 375 +426 640 +640 258 +640 516 +640 480 +640 480 +640 427 +640 480 +640 428 +500 375 +640 480 +640 480 +612 612 +640 426 +640 427 +640 286 +640 359 +500 375 +640 486 +480 640 +640 480 +640 402 +640 480 +427 640 +640 480 +640 486 +612 612 +640 480 +500 281 +333 500 +640 426 +640 480 +393 480 +333 500 +500 375 +640 480 +640 426 +640 411 +640 425 +640 426 +640 480 +640 480 +640 427 +400 500 +500 375 +640 429 +415 640 +640 480 +640 512 +640 425 +500 333 +500 263 +640 427 +480 640 +500 400 +640 611 +427 640 +640 480 +426 640 +375 500 +603 640 +428 640 +640 494 +640 480 +640 320 +640 480 +640 430 +500 333 +640 439 +640 480 +500 374 +640 426 +640 480 +500 250 +640 421 +640 480 +640 426 +480 640 +480 640 +640 455 +500 375 +640 640 +640 427 +375 500 +410 640 +334 500 +640 427 +640 480 +640 360 +480 640 +640 480 +480 640 +640 427 +640 480 +640 426 +500 375 +640 427 +640 426 +640 427 +459 258 +482 640 +640 480 +500 375 +640 480 +640 480 +427 640 +500 375 +640 360 +449 640 +480 640 +640 427 +640 428 +640 480 +640 480 +427 640 +640 427 +640 427 +640 453 +640 480 +480 640 +640 427 +640 427 +640 428 +640 464 +375 500 +480 640 +640 479 +640 473 +500 305 +480 640 +640 478 +640 480 +640 480 +640 480 +640 427 +640 426 +640 478 +426 640 +480 640 +500 333 +640 425 +640 468 +480 640 +333 500 +426 640 +640 478 +640 480 +640 427 +640 428 +640 480 +500 375 +640 429 +640 426 +576 640 +500 333 +640 419 +480 640 +640 480 +478 640 +640 396 +334 500 +640 480 +427 640 +467 640 +500 375 +640 427 +295 244 +640 640 +640 401 +427 640 +480 640 +640 478 +640 438 +640 427 +640 480 +640 448 +640 480 +640 426 +640 480 +500 375 +500 400 +500 332 +640 427 +640 427 +500 350 +640 412 +640 480 +640 524 +500 375 +500 333 +424 640 +640 480 +640 427 +640 480 +640 480 +480 640 +640 457 +426 640 +480 640 +640 480 +283 424 +426 640 +336 640 +640 480 +640 427 +500 342 +640 480 +640 480 +640 427 +640 606 +640 480 +640 478 +480 640 +427 640 +640 480 +640 360 +640 480 +640 427 +640 480 +640 426 +500 332 +375 500 +640 478 +427 640 +640 480 +640 480 +427 640 +640 461 +640 428 +640 429 +500 333 +481 640 +640 426 +640 408 +640 640 +480 640 +640 427 +640 480 +640 480 +640 481 +640 480 +500 375 +480 640 +640 427 +640 427 +640 427 +640 427 +500 375 +640 468 +640 480 +640 426 +640 548 +500 375 +640 425 +640 480 +640 480 +640 427 +640 426 +640 427 +567 640 +640 427 +640 457 +640 427 +600 354 +640 411 +640 620 +640 480 +640 480 +640 424 +469 640 +640 429 +640 480 +426 640 +359 640 +500 312 +640 480 +640 480 +640 427 +640 467 +640 586 +428 640 +640 427 +500 375 +427 640 +500 375 +500 375 +640 359 +640 493 +640 427 +500 375 +640 427 +298 500 +640 427 +640 541 +497 640 +375 500 +640 605 +640 451 +375 500 +500 375 +480 640 +640 480 +640 428 +640 480 +425 640 +640 478 +640 480 +640 483 +458 640 +640 541 +500 332 +500 281 +480 640 +426 640 +640 480 +427 640 +640 480 +640 427 +640 428 +640 480 +640 426 +480 640 +640 334 +640 400 +640 480 +640 426 +375 500 +640 480 +640 427 +640 428 +640 427 +640 480 +480 640 +640 640 +480 640 +480 640 +500 375 +640 480 +612 612 +640 480 +640 426 +512 640 +500 375 +427 640 +640 476 +640 480 +640 511 +640 360 +640 425 +640 480 +480 640 +640 448 +500 375 +640 480 +640 427 +640 425 +428 640 +640 640 +640 428 +521 421 +640 480 +640 640 +427 640 +500 400 +640 427 +500 375 +640 427 +640 457 +640 359 +640 430 +640 480 +500 375 +640 480 +640 427 +640 480 +640 425 +500 375 +528 640 +313 500 +600 400 +640 609 +640 480 +640 404 +640 480 +640 480 +640 424 +640 480 +640 427 +640 401 +500 375 +640 480 +490 640 +612 612 +640 427 +640 640 +640 480 +640 425 +480 640 +631 640 +500 333 +602 415 +640 512 +640 427 +640 480 +640 426 +640 480 +480 640 +640 480 +640 427 +640 403 +640 453 +640 480 +640 427 +640 480 +640 426 +426 640 +612 612 +640 480 +640 480 +640 480 +500 333 +640 640 +639 640 +612 612 +640 464 +640 480 +500 375 +405 500 +640 427 +640 512 +640 427 +480 640 +640 458 +640 428 +640 415 +480 640 +640 480 +427 640 +640 480 +430 500 +500 375 +640 480 +500 376 +640 304 +480 640 +500 375 +640 426 +640 480 +640 425 +480 640 +640 427 +428 640 +500 375 +500 500 +640 480 +640 419 +484 640 +640 480 +640 427 +640 480 +640 427 +640 480 +640 429 +500 319 +427 640 +500 375 +640 480 +358 640 +480 640 +500 375 +427 640 +640 359 +500 333 +448 299 +640 424 +612 612 +612 612 +640 426 +425 640 +344 500 +640 326 +640 513 +640 425 +640 640 +640 480 +640 427 +480 640 +500 336 +640 427 +640 480 +640 480 +640 427 +375 500 +640 429 +375 500 +513 640 +640 544 +640 480 +640 480 +640 432 +480 640 +333 500 +640 383 +500 375 +426 640 +640 480 +640 540 +640 480 +392 500 +480 640 +640 404 +640 640 +427 640 +640 480 +640 411 +640 499 +640 480 +640 480 +640 480 +640 427 +397 500 +427 640 +640 314 +500 360 +480 640 +640 409 +640 480 +640 480 +500 333 +478 640 +500 332 +640 427 +640 396 +640 480 +640 427 +640 427 +640 480 +428 640 +500 375 +640 428 +375 500 +640 504 +640 424 +629 640 +427 640 +500 375 +600 400 +640 425 +640 480 +426 640 +640 406 +640 480 +640 480 +640 480 +640 335 +480 640 +427 640 +500 375 +640 459 +612 612 +500 375 +480 640 +480 640 +640 480 +640 400 +429 640 +640 428 +640 480 +640 432 +640 426 +528 640 +640 426 +500 375 +640 480 +640 430 +640 478 +640 480 +640 427 +640 480 +426 640 +500 375 +640 488 +640 427 +640 407 +425 640 +640 549 +500 375 +612 612 +640 444 +640 426 +640 480 +494 327 +640 428 +640 449 +500 397 +640 479 +640 480 +640 431 +640 360 +509 640 +640 480 +640 480 +512 640 +640 426 +640 509 +612 612 +640 427 +425 640 +640 480 +427 640 +640 480 +640 511 +640 480 +640 480 +640 425 +500 310 +640 480 +612 612 +500 335 +640 480 +640 480 +480 640 +640 480 +500 333 +427 640 +640 480 +459 500 +640 480 +640 480 +640 427 +640 427 +500 375 +640 425 +428 640 +640 639 +500 325 +640 427 +640 506 +640 458 +469 640 +640 484 +500 375 +375 500 +427 640 +425 640 +338 500 +640 427 +480 640 +640 574 +640 480 +640 480 +640 480 +640 426 +640 425 +640 427 +612 612 +480 640 +427 640 +640 480 +640 427 +400 600 +640 427 +640 640 +612 612 +640 427 +480 640 +640 480 +640 480 +640 480 +375 500 +500 338 +426 640 +500 375 +500 333 +640 427 +640 480 +640 427 +640 255 +640 480 +640 401 +640 513 +640 427 +640 640 +375 500 +640 429 +640 425 +500 333 +640 424 +640 480 +640 480 +640 480 +480 640 +375 500 +640 480 +500 333 +500 375 +375 500 +480 640 +640 480 +640 478 +480 640 +640 427 +480 640 +640 480 +640 427 +427 640 +427 640 +640 480 +427 640 +640 427 +500 375 +640 480 +480 640 +640 427 +500 400 +500 333 +640 426 +471 640 +640 480 +640 427 +480 640 +433 640 +590 640 +640 427 +494 500 +328 640 +640 480 +512 400 +612 612 +480 640 +480 640 +640 425 +640 480 +640 480 +425 640 +640 427 +640 424 +640 426 +640 514 +425 640 +640 479 +508 640 +500 333 +640 433 +640 425 +640 480 +640 360 +480 640 +640 429 +640 480 +640 426 +426 640 +640 480 +640 426 +640 480 +427 640 +640 455 +640 480 +500 400 +640 427 +640 480 +640 480 +500 375 +640 554 +334 500 +640 360 +426 640 +500 470 +640 427 +640 480 +480 640 +640 427 +500 334 +427 640 +640 383 +640 426 +640 480 +480 640 +437 640 +640 425 +640 480 +640 480 +640 427 +640 427 +640 480 +612 612 +640 360 +425 640 +426 640 +640 241 +640 480 +640 640 +427 640 +612 612 +640 429 +500 375 +500 375 +500 324 +640 456 +640 427 +640 424 +640 480 +375 500 +640 427 +640 480 +480 640 +640 572 +640 480 +480 640 +640 427 +640 427 +640 427 +640 480 +500 375 +640 480 +375 500 +640 426 +640 426 +375 500 +640 480 +640 401 +640 458 +481 640 +640 480 +640 640 +640 480 +640 480 +640 502 +427 640 +428 640 +427 640 +427 640 +640 427 +359 640 +640 425 +640 427 +457 640 +640 436 +640 434 +640 480 +335 500 +497 500 +425 640 +480 640 +425 640 +640 480 +640 425 +640 311 +640 426 +640 428 +640 640 +640 425 +640 427 +640 480 +640 388 +640 426 +640 481 +640 398 +640 427 +640 427 +640 480 +640 640 +640 428 +640 463 +640 425 +427 640 +500 500 +640 368 +500 331 +500 375 +640 426 +385 500 +500 358 +640 480 +640 480 +640 480 +480 640 +640 427 +500 304 +640 427 +500 333 +640 457 +500 500 +640 360 +432 640 +640 576 +640 480 +640 401 +640 480 +640 360 +640 480 +640 498 +500 333 +640 480 +640 480 +640 427 +640 487 +480 640 +640 428 +359 640 +640 432 +640 480 +640 427 +480 640 +640 480 +640 426 +640 480 +500 333 +476 640 +640 480 +640 424 +427 640 +640 285 +427 640 +472 640 +500 312 +480 640 +640 478 +640 480 +640 480 +640 481 +612 612 +640 480 +612 612 +640 478 +640 480 +360 640 +640 427 +640 427 +640 480 +361 500 +640 428 +640 426 +333 250 +640 640 +458 640 +640 480 +640 427 +640 478 +640 480 +640 427 +640 426 +640 427 +640 480 +640 426 +451 500 +640 512 +640 428 +640 480 +612 612 +480 640 +640 471 +640 428 +500 375 +640 480 +506 640 +640 479 +427 640 +500 375 +640 427 +640 509 +640 480 +612 612 +640 427 +640 480 +640 392 +500 375 +640 640 +640 480 +500 378 +500 375 +500 375 +427 640 +640 427 +640 480 +640 446 +640 504 +640 480 +640 480 +478 640 +640 429 +640 424 +640 439 +640 480 +640 480 +640 427 +640 631 +427 640 +480 640 +640 480 +425 640 +640 426 +640 360 +640 424 +469 640 +640 426 +640 427 +640 425 +500 375 +500 373 +640 405 +640 481 +480 640 +640 480 +500 284 +640 480 +640 427 +640 480 +640 480 +480 640 +640 427 +426 640 +480 640 +640 480 +640 480 +427 640 +640 427 +640 523 +640 427 +640 480 +640 512 +640 427 +500 375 +640 480 +640 427 +480 640 +640 434 +640 399 +500 333 +640 480 +640 426 +640 480 +640 474 +640 493 +640 480 +568 640 +500 334 +640 480 +640 480 +640 459 +500 400 +640 480 +500 333 +640 430 +640 427 +640 478 +640 480 +640 433 +481 640 +640 367 +640 427 +612 612 +500 374 +640 480 +375 500 +550 365 +640 429 +500 333 +480 640 +640 640 +640 480 +640 480 +640 427 +640 480 +383 640 +640 427 +640 301 +427 640 +640 427 +640 425 +300 400 +480 640 +500 333 +518 640 +420 640 +480 640 +428 640 +333 500 +640 360 +500 333 +480 640 +471 640 +640 427 +640 480 +480 640 +640 480 +640 425 +640 480 +640 480 +640 425 +480 640 +640 474 +500 335 +640 480 +640 480 +640 360 +500 375 +640 478 +640 398 +500 375 +640 480 +640 428 +500 375 +500 375 +466 640 +458 640 +640 480 +640 477 +640 489 +375 500 +640 640 +480 640 +612 612 +640 480 +640 427 +640 350 +500 375 +640 480 +298 640 +480 640 +640 427 +480 640 +640 426 +640 480 +640 480 +640 480 +640 480 +640 427 +500 375 +478 640 +640 425 +640 472 +640 409 +375 500 +480 640 +640 425 +400 600 +640 480 +640 480 +480 640 +640 361 +426 640 +427 640 +447 640 +425 640 +640 426 +500 375 +640 427 +640 483 +480 640 +640 480 +640 480 +427 640 +640 480 +640 640 +640 427 +640 480 +640 427 +640 353 +640 640 +640 480 +374 500 +640 426 +384 640 +640 480 +480 640 +375 500 +375 500 +500 375 +640 480 +640 480 +640 428 +640 480 +640 429 +640 457 +640 424 +480 640 +640 480 +480 640 +640 626 +640 427 +640 480 +640 480 +458 640 +480 640 +500 398 +640 428 +640 425 +640 429 +640 427 +427 640 +512 640 +640 640 +640 426 +640 478 +458 640 +640 480 +640 480 +426 640 +640 480 +640 480 +500 281 +640 640 +640 427 +478 640 +640 426 +640 426 +640 458 +640 427 +500 356 +640 429 +473 640 +640 526 +640 480 +500 377 +640 426 +640 480 +640 480 +640 304 +640 480 +640 426 +640 427 +640 434 +426 640 +640 480 +480 640 +640 480 +640 428 +640 480 +500 382 +500 333 +375 500 +640 427 +640 427 +640 427 +640 480 +640 426 +480 640 +640 361 +640 474 +473 640 +427 640 +500 332 +640 427 +640 424 +640 480 +640 480 +343 500 +425 640 +640 480 +500 375 +640 427 +640 427 +500 373 +640 427 +427 640 +640 480 +508 640 +640 480 +640 480 +500 375 +640 426 +640 640 +640 400 +480 640 +547 640 +640 426 +640 427 +517 640 +375 500 +640 426 +640 325 +640 480 +640 426 +640 427 +640 558 +640 640 +640 520 +640 480 +640 480 +640 427 +640 401 +640 426 +640 412 +640 427 +640 425 +640 427 +500 375 +426 640 +491 640 +480 640 +640 428 +480 640 +640 480 +640 294 +480 640 +640 502 +640 427 +640 427 +640 640 +425 640 +640 480 +640 495 +640 426 +416 640 +640 426 +640 427 +640 359 +640 425 +427 640 +640 480 +640 427 +427 640 +612 612 +640 428 +640 361 +640 480 +640 427 +480 640 +640 426 +640 480 +478 640 +640 480 +426 640 +640 480 +640 482 +640 428 +361 640 +427 640 +640 480 +375 500 +640 427 +640 427 +500 329 +480 640 +555 640 +500 400 +516 520 +640 480 +640 427 +640 426 +480 640 +427 640 +640 428 +640 620 +500 375 +640 480 +480 640 +480 640 +427 640 +480 640 +500 375 +640 480 +640 427 +640 480 +480 640 +612 612 +640 480 +427 640 +426 640 +427 640 +426 640 +640 427 +640 450 +480 640 +640 426 +640 426 +597 640 +640 439 +375 500 +640 360 +500 393 +424 640 +640 427 +640 427 +513 640 +424 640 +480 640 +640 427 +640 427 +640 480 +333 500 +640 360 +640 480 +640 480 +640 480 +640 480 +640 427 +640 480 +640 480 +640 425 +640 453 +480 640 +640 426 +640 480 +640 426 +640 481 +480 640 +640 427 +480 640 +640 480 +640 480 +640 480 +457 640 +640 404 +512 640 +640 360 +640 480 +480 640 +640 427 +426 640 +640 513 +640 479 +640 427 +640 480 +640 480 +480 640 +500 391 +640 424 +375 500 +459 640 +640 547 +500 334 +640 359 +480 640 +640 427 +640 425 +626 640 +640 427 +640 423 +640 464 +612 612 +640 425 +640 480 +640 426 +640 480 +500 375 +480 640 +640 480 +640 560 +640 427 +640 422 +612 612 +612 612 +480 640 +625 640 +640 480 +612 612 +640 480 +480 640 +427 640 +333 500 +640 427 +404 640 +640 480 +375 500 +438 640 +500 375 +500 336 +640 427 +640 456 +640 427 +640 426 +640 480 +640 427 +427 640 +640 480 +480 640 +640 428 +425 640 +500 375 +640 481 +640 427 +640 427 +640 195 +500 375 +480 640 +640 425 +640 480 +640 426 +427 640 +514 640 +640 427 +640 480 +640 427 +640 425 +640 427 +500 375 +639 426 +640 504 +640 480 +427 640 +500 375 +640 463 +480 640 +640 427 +640 428 +427 640 +640 480 +500 333 +640 480 +640 480 +500 375 +640 480 +640 426 +640 426 +640 427 +640 480 +640 426 +640 427 +409 640 +640 468 +640 428 +500 332 +640 480 +640 489 +640 480 +640 363 +640 427 +640 478 +640 480 +640 360 +375 500 +640 529 +427 640 +640 427 +640 426 +427 640 +640 480 +640 478 +640 428 +640 480 +640 426 +640 427 +640 480 +396 640 +640 471 +428 640 +600 400 +500 375 +640 480 +640 425 +424 640 +480 640 +640 426 +425 640 +480 640 +500 375 +480 640 +512 640 +640 428 +480 640 +640 426 +640 480 +640 640 +640 499 +640 400 +640 427 +640 427 +500 375 +640 427 +640 480 +640 480 +640 426 +640 480 +500 375 +640 623 +494 640 +640 403 +426 640 +425 640 +640 428 +640 480 +640 427 +640 430 +640 640 +640 480 +480 640 +640 426 +640 514 +428 640 +272 480 +640 428 +640 454 +504 314 +338 500 +500 375 +640 480 +500 375 +640 426 +640 298 +640 480 +500 322 +500 333 +640 436 +640 480 +500 375 +500 375 +612 612 +640 427 +640 433 +428 640 +427 640 +500 333 +640 409 +640 480 +640 480 +480 640 +640 428 +640 427 +480 640 +427 640 +640 429 +636 640 +640 427 +640 428 +640 640 +640 400 +640 480 +640 480 +640 517 +480 640 +640 480 +533 640 +480 640 +640 199 +426 640 +640 480 +640 608 +640 424 +640 371 +480 640 +640 427 +640 368 +500 375 +640 427 +500 334 +640 480 +640 480 +640 480 +640 389 +640 480 +640 480 +640 478 +640 426 +640 480 +640 480 +640 480 +480 640 +500 332 +640 515 +480 640 +640 435 +480 640 +640 426 +375 500 +480 640 +640 480 +425 640 +480 640 +640 480 +640 419 +640 425 +640 480 +480 640 +640 480 +500 333 +476 640 +500 400 +512 640 +640 338 +640 360 +480 640 +640 427 +480 640 +640 427 +640 480 +480 640 +640 480 +640 427 +612 612 +640 478 +427 640 +640 427 +640 426 +640 480 +640 426 +640 508 +640 427 +640 427 +640 480 +640 480 +640 428 +640 426 +480 640 +500 375 +427 640 +640 371 +425 640 +640 427 +640 427 +640 480 +480 640 +613 640 +640 480 +640 480 +500 375 +640 424 +427 640 +640 480 +640 480 +640 480 +640 640 +640 480 +640 479 +640 427 +331 500 +640 359 +640 494 +640 480 +640 640 +640 427 +500 375 +640 480 +640 640 +640 429 +458 640 +640 425 +640 640 +640 465 +640 480 +488 640 +640 480 +640 480 +640 394 +426 640 +640 426 +423 640 +640 480 +427 640 +640 433 +335 500 +640 480 +640 396 +640 373 +640 427 +640 480 +640 426 +640 486 +425 640 +640 428 +500 285 +480 640 +640 480 +640 480 +428 640 +427 640 +640 426 +640 480 +640 389 +500 375 +375 500 +640 426 +480 640 +640 480 +640 474 +480 640 +640 427 +480 640 +640 480 +449 640 +640 432 +640 427 +640 480 +640 468 +427 640 +640 427 +640 458 +640 427 +640 427 +383 640 +640 640 +640 373 +640 427 +640 480 +640 486 +640 480 +480 640 +640 480 +640 480 +640 426 +480 640 +640 427 +640 480 +640 425 +640 480 +500 251 +640 480 +416 640 +640 480 +640 480 +640 640 +640 428 +425 640 +640 480 +640 480 +640 427 +640 480 +640 427 +640 429 +640 426 +640 640 +427 640 +640 427 +640 427 +640 427 +414 640 +500 375 +640 416 +500 332 +640 393 +640 360 +640 480 +500 333 +640 425 +640 427 +640 426 +640 427 +500 375 +640 360 +500 333 +424 640 +640 427 +478 640 +478 640 +429 640 +480 640 +640 425 +500 375 +640 365 +640 480 +480 640 +375 500 +640 426 +640 480 +640 480 +640 427 +640 480 +640 425 +640 480 +640 427 +640 427 +640 480 +640 427 +640 427 +640 480 +640 448 +500 375 +426 640 +480 640 +428 640 +612 612 +640 421 +500 333 +640 491 +640 480 +640 360 +640 397 +640 426 +478 640 +480 640 +640 424 +640 427 +640 427 +640 480 +640 427 +640 427 +640 426 +640 426 +640 426 +640 480 +640 427 +640 480 +640 480 +332 500 +640 428 +480 640 +428 640 +427 640 +640 351 +508 640 +640 427 +640 480 +500 375 +640 480 +640 480 +640 425 +640 420 +640 480 +500 375 +640 480 +640 425 +418 500 +500 375 +640 474 +640 425 +640 427 +640 480 +336 640 +640 427 +640 478 +640 425 +640 503 +333 500 +640 427 +640 480 +640 480 +612 612 +480 640 +640 404 +640 427 +640 503 +640 360 +640 427 +640 480 +640 381 +640 339 +428 640 +427 640 +640 425 +640 480 +640 480 +640 427 +426 640 +640 409 +640 427 +640 519 +360 640 +375 500 +640 427 +640 427 +640 427 +640 508 +640 428 +640 423 +640 427 +640 386 +500 333 +640 366 +480 640 +640 480 +640 427 +640 427 +640 427 +640 509 +500 375 +500 375 +640 418 +375 500 +640 353 +640 426 +640 427 +640 480 +612 612 +640 480 +640 478 +526 640 +387 500 +640 480 +640 427 +640 427 +640 480 +640 427 +640 425 +640 480 +500 376 +640 480 +640 480 +500 316 +640 427 +640 480 +640 480 +427 640 +640 427 +480 640 +640 427 +612 612 +480 640 +640 640 +334 500 +427 640 +500 335 +640 428 +640 426 +640 478 +480 640 +426 640 +640 426 +640 426 +500 334 +640 480 +640 443 +500 375 +640 480 +640 427 +640 479 +640 424 +640 480 +427 640 +640 428 +640 480 +640 480 +640 480 +640 424 +500 281 +640 480 +640 426 +426 640 +500 332 +640 480 +640 424 +480 640 +640 360 +334 500 +333 500 +640 427 +640 480 +640 427 +640 427 +480 640 +640 297 +500 487 +427 640 +640 426 +480 640 +640 480 +554 312 +640 454 +640 361 +640 516 +480 640 +640 640 +500 350 +640 640 +640 425 +640 640 +480 640 +640 480 +640 640 +640 426 +640 480 +640 587 +640 425 +640 480 +427 640 +640 529 +640 429 +640 480 +640 428 +640 427 +640 480 +640 480 +500 339 +500 375 +500 375 +640 427 +640 480 +640 444 +500 335 +640 512 +640 426 +640 480 +500 375 +640 480 +480 640 +640 480 +612 612 +375 500 +480 640 +640 599 +640 480 +640 480 +500 375 +500 332 +640 382 +640 480 +640 480 +427 640 +500 471 +640 426 +640 480 +426 640 +640 427 +640 480 +640 480 +640 427 +640 427 +640 417 +413 622 +480 640 +428 640 +640 426 +640 366 +425 640 +500 375 +500 345 +640 373 +489 500 +640 389 +478 640 +640 494 +427 640 +640 426 +640 480 +444 640 +640 427 +640 426 +427 640 +384 640 +640 426 +459 640 +640 479 +640 572 +640 480 +640 480 +468 640 +640 431 +425 640 +640 428 +640 428 +480 500 +640 427 +427 640 +426 640 +640 427 +429 640 +640 428 +480 640 +640 427 +640 425 +500 375 +401 640 +640 425 +500 331 +640 480 +640 512 +640 361 +640 428 +640 427 +500 375 +427 640 +640 427 +640 480 +480 640 +427 640 +640 425 +640 361 +640 424 +427 640 +640 479 +640 427 +640 425 +640 427 +640 360 +640 424 +640 544 +640 427 +375 500 +640 480 +640 480 +500 375 +640 425 +640 426 +375 500 +640 454 +640 428 +640 360 +480 640 +640 480 +435 640 +500 375 +640 640 +640 479 +640 480 +640 379 +640 480 +478 640 +500 282 +640 480 +640 480 +640 480 +640 427 +640 480 +640 425 +426 640 +513 640 +640 431 +640 425 +640 480 +511 640 +640 429 +640 480 +500 375 +640 480 +640 394 +640 427 +425 640 +640 430 +640 480 +640 425 +640 480 +640 480 +640 457 +640 480 +333 500 +640 480 +640 427 +640 425 +640 428 +379 500 +640 480 +640 484 +427 640 +640 427 +640 418 +640 428 +640 482 +640 483 +500 283 +640 476 +640 480 +144 144 +640 360 +640 480 +480 640 +640 360 +480 640 +640 480 +640 480 +640 426 +426 640 +426 640 +640 480 +640 480 +640 604 +640 445 +640 480 +640 480 +640 313 +640 331 +640 375 +640 480 +612 612 +505 640 +424 640 +640 361 +640 421 +640 400 +640 480 +640 454 +640 427 +500 375 +506 640 +426 640 +500 375 +480 640 +479 322 +640 424 +480 640 +480 640 +640 349 +639 426 +427 640 +500 333 +640 480 +424 640 +425 640 +640 480 +593 391 +640 427 +640 508 +480 640 +640 400 +640 428 +640 360 +640 427 +640 428 +640 480 +640 426 +640 506 +500 357 +640 480 +640 480 +640 428 +640 427 +640 424 +640 428 +640 427 +640 422 +640 480 +640 480 +500 375 +640 425 +640 480 +640 480 +640 537 +640 427 +640 428 +640 428 +640 480 +318 500 +640 480 +480 640 +500 333 +640 427 +500 375 +640 480 +480 640 +500 333 +640 480 +640 427 +640 427 +500 375 +640 426 +640 426 +640 427 +500 348 +640 427 +640 426 +640 546 +640 427 +640 427 +640 480 +640 425 +500 407 +500 300 +640 512 +480 640 +640 480 +500 281 +640 435 +640 426 +640 427 +640 478 +640 383 +375 500 +640 480 +640 424 +480 640 +640 427 +640 480 +640 480 +640 473 +640 475 +600 450 +450 265 +500 457 +341 640 +640 480 +640 425 +640 427 +375 500 +480 640 +543 640 +640 480 +457 640 +640 480 +640 490 +640 478 +427 640 +640 554 +427 640 +427 640 +640 480 +640 454 +640 427 +500 283 +640 480 +640 415 +640 480 +640 486 +640 425 +640 427 +333 500 +473 640 +640 480 +480 640 +640 478 +480 640 +427 640 +640 480 +612 612 +640 480 +500 325 +640 421 +640 480 +640 427 +640 480 +640 427 +640 281 +359 640 +458 640 +640 518 +640 360 +612 612 +640 480 +640 480 +640 480 +640 449 +640 480 +640 480 +640 480 +426 640 +640 427 +500 375 +640 427 +640 426 +640 599 +640 480 +495 640 +640 480 +500 281 +480 640 +427 640 +640 427 +640 427 +640 359 +640 429 +640 480 +640 426 +480 640 +640 430 +640 478 +480 640 +482 640 +640 426 +500 375 +640 319 +500 375 +500 375 +640 480 +500 333 +640 427 +640 480 +640 480 +640 480 +640 480 +612 612 +640 480 +640 360 +640 425 +426 640 +640 480 +640 480 +429 640 +333 500 +640 427 +640 425 +640 480 +640 427 +640 427 +640 480 +640 424 +640 480 +500 341 +500 334 +640 480 +640 480 +640 426 +375 500 +640 427 +500 333 +640 480 +640 480 +338 500 +334 500 +640 427 +456 640 +500 375 +640 426 +426 640 +640 480 +480 640 +480 640 +500 332 +640 426 +640 427 +426 640 +480 640 +640 429 +640 480 +640 384 +640 427 +359 500 +640 384 +500 375 +444 295 +427 640 +640 429 +427 640 +500 374 +480 640 +423 640 +500 375 +640 480 +640 480 +640 360 +640 640 +640 449 +640 427 +640 480 +640 480 +640 360 +640 484 +640 480 +640 480 +640 428 +500 375 +511 640 +372 500 +640 480 +500 333 +640 427 +612 612 +640 400 +640 427 +426 640 +480 640 +640 480 +500 333 +640 427 +640 480 +640 421 +640 480 +425 640 +427 640 +640 428 +640 428 +640 480 +493 500 +640 427 +640 427 +640 480 +640 480 +640 480 +640 538 +640 427 +640 427 +640 478 +640 480 +640 480 +500 357 +640 480 +640 425 +640 426 +640 480 +500 375 +640 404 +375 500 +640 640 +640 426 +640 480 +480 640 +480 640 +640 426 +427 640 +640 480 +480 640 +423 640 +612 612 +640 446 +640 423 +640 480 +476 640 +640 511 +640 427 +640 480 +640 480 +640 480 +480 640 +640 480 +640 566 +427 640 +640 518 +640 427 +426 640 +480 640 +612 612 +480 640 +640 426 +480 640 +520 640 +333 500 +427 640 +640 431 +640 480 +640 427 +640 426 +500 375 +640 480 +640 428 +425 640 +640 427 +640 480 +640 427 +640 569 +640 480 +640 427 +500 334 +500 338 +640 428 +640 481 +640 428 +640 427 +640 427 +640 424 +640 427 +333 500 +640 555 +640 428 +640 427 +640 496 +640 427 +640 480 +640 427 +640 480 +480 640 +640 480 +349 500 +640 480 +640 425 +640 429 +640 480 +612 612 +375 500 +640 410 +640 480 +612 612 +500 375 +640 425 +640 427 +500 375 +500 375 +450 300 +640 480 +640 427 +480 640 +499 500 +480 640 +640 425 +640 379 +640 427 +640 640 +640 426 +480 640 +500 375 +640 480 +480 640 +640 480 +640 457 +612 612 +480 640 +640 415 +640 480 +476 640 +640 427 +333 500 +500 333 +640 480 +640 480 +612 612 +640 426 +513 640 +333 500 +375 500 +640 480 +640 415 +640 424 +529 640 +640 480 +500 375 +640 360 +640 427 +640 428 +640 480 +640 480 +640 480 +640 480 +640 480 +640 480 +640 360 +383 640 +640 383 +640 419 +500 334 +640 457 +480 640 +400 300 +640 425 +640 480 +640 428 +500 375 +640 427 +640 480 +640 429 +640 425 +640 480 +640 480 +500 333 +500 365 +500 281 +334 500 +640 427 +428 640 +640 426 +640 427 +500 375 +640 426 +640 437 +640 484 +640 426 +640 427 +375 500 +375 500 +429 640 +640 480 +640 428 +640 480 +640 480 +374 500 +640 427 +640 480 +640 428 +587 391 +640 480 +640 480 +640 480 +640 428 +640 360 +500 375 +640 394 +375 500 +640 427 +500 374 +427 640 +640 424 +640 603 +640 480 +640 427 +640 480 +640 462 +500 375 +640 427 +500 356 +640 480 +640 425 +513 640 +640 427 +640 480 +640 478 +480 640 +640 436 +640 427 +640 480 +640 479 +640 480 +640 427 +640 480 +640 428 +640 360 +427 640 +480 640 +512 640 +640 480 +640 480 +640 422 +640 428 +413 640 +640 399 +640 426 +640 428 +333 500 +427 640 +427 640 +640 426 +434 640 +640 409 +640 480 +640 427 +333 500 +640 437 +640 512 +480 640 +480 640 +640 468 +640 427 +500 331 +480 640 +640 480 +640 478 +377 500 +333 500 +480 640 +428 640 +640 480 +640 237 +640 426 +640 480 +640 494 +640 426 +640 360 +640 360 +426 640 +601 601 +500 375 +480 640 +640 480 +446 640 +500 375 +640 480 +640 426 +640 427 +640 427 +500 375 +640 425 +640 427 +479 640 +612 612 +640 427 +640 427 +500 368 +640 313 +500 386 +640 523 +612 612 +480 640 +480 640 +640 453 +640 480 +640 480 +428 640 +480 640 +640 159 +640 426 +640 451 +640 427 +640 480 +426 640 +480 640 +500 333 +426 640 +640 427 +500 333 +427 640 +480 640 +640 427 +480 640 +457 640 +640 425 +640 427 +500 338 +640 480 +427 640 +612 612 +500 334 +640 451 +640 621 +640 461 +500 375 +640 480 +640 425 +640 428 +640 360 +640 519 +640 458 +640 416 +500 375 +500 375 +640 480 +640 425 +640 480 +612 612 +640 480 +428 640 +640 528 +640 427 +640 480 +640 480 +640 456 +640 480 +500 375 +640 427 +640 479 +612 612 +640 360 +500 375 +640 480 +640 480 +640 480 +640 480 +500 375 +640 480 +640 427 +640 480 +500 375 +600 600 +640 359 +640 426 +640 427 +640 456 +500 375 +443 640 +399 500 +640 498 +640 426 +375 500 +640 480 +426 640 +640 427 +640 455 +480 640 +500 375 +500 373 +429 640 +640 480 +640 360 +500 375 +480 640 +640 426 +640 427 +640 480 +331 500 +640 640 +640 429 +640 367 +640 427 +640 428 +500 335 +640 426 +500 375 +427 640 +640 424 +640 428 +640 640 +640 471 +640 479 +640 327 +640 427 +640 480 +640 425 +640 480 +640 427 +480 640 +640 413 +640 427 +640 433 +640 480 +640 480 +418 640 +640 463 +640 589 +427 640 +640 485 +640 426 +640 426 +448 443 +497 500 +640 427 +333 500 +640 428 +640 425 +640 480 +640 480 +640 480 +500 334 +640 480 +640 427 +640 427 +640 480 +640 480 +640 428 +640 480 +640 427 +640 480 +640 425 +640 480 +640 427 +640 480 +640 480 +480 640 +640 426 +640 426 +566 640 +640 425 +640 480 +640 424 +640 426 +640 336 +640 428 +640 427 +640 305 +640 423 +427 640 +480 640 +640 543 +500 334 +640 427 +640 428 +640 480 +500 500 +640 425 +500 289 +640 480 +640 480 +640 427 +640 480 +640 427 +600 400 +500 375 +640 425 +640 457 +640 480 +480 640 +640 427 +429 640 +500 375 +640 429 +640 426 +480 640 +480 640 +640 480 +480 640 +640 480 +640 480 +426 640 +640 426 +640 480 +640 483 +640 480 +640 428 +480 640 +480 640 +640 480 +640 480 +640 480 +640 426 +640 428 +640 480 +640 290 +640 480 +640 480 +640 512 +640 474 +640 427 +375 500 +640 480 +640 523 +640 427 +640 480 +640 480 +640 519 +500 373 +640 480 +640 480 +640 480 +640 439 +640 427 +640 383 +640 370 +480 640 +500 333 +640 427 +500 375 +640 480 +612 612 +640 426 +640 480 +640 428 +640 634 +640 480 +598 640 +640 480 +640 428 +640 469 +640 480 +571 640 +500 376 +640 378 +640 428 +375 500 +640 424 +480 640 +500 335 +640 445 +640 427 +640 480 +640 384 +640 425 +427 640 +640 480 +640 214 +640 427 +640 480 +640 426 +640 480 +640 426 +427 640 +640 480 +480 640 +640 478 +640 424 +454 640 +491 640 +500 318 +640 445 +338 500 +336 500 +640 427 +370 462 +640 480 +640 401 +640 425 +640 313 +640 480 +640 480 +480 640 +480 640 +640 429 +640 480 +640 399 +640 427 +640 480 +426 640 +640 480 +640 465 +500 340 +640 414 +480 640 +640 479 +640 480 +640 360 +640 480 +413 640 +640 414 +500 332 +375 500 +500 375 +640 427 +640 425 +500 336 +512 640 +375 500 +640 427 +425 640 +428 640 +640 480 +640 480 +500 375 +425 640 +640 480 +640 480 +640 480 +427 640 +640 428 +640 359 +332 500 +640 480 +427 640 +640 480 +640 426 +640 424 +640 619 +640 480 +424 640 +640 480 +640 425 +640 480 +640 444 +640 429 +640 426 +480 640 +640 480 +640 567 +427 640 +640 427 +612 612 +425 640 +640 480 +425 640 +640 427 +640 428 +478 640 +640 360 +640 427 +480 640 +500 375 +640 423 +640 480 +614 640 +490 350 +480 640 +640 427 +640 360 +479 640 +427 640 +640 423 +375 500 +640 480 +640 354 +640 480 +640 427 +352 640 +612 612 +500 334 +500 375 +500 421 +640 480 +640 498 +640 480 +640 429 +640 480 +640 427 +640 427 +612 612 +640 480 +500 332 +640 429 +453 640 +640 427 +478 640 +640 478 +640 427 +428 640 +640 508 +612 612 +640 426 +640 428 +640 480 +427 640 +640 426 +612 612 +480 640 +640 481 +500 375 +640 509 From 6f1b011bd99ce15449de645dc18bb29f6681af63 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 5 May 2019 14:29:30 +0200 Subject: [PATCH 0810/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index caa5b655..bd6ef6a9 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -130,7 +130,7 @@ class LoadWebcam: # for inference class LoadImagesAndLabels(Dataset): # for training/testing - def __init__(self, path, img_size=416, batch_size=16, augment=False, rect=True): + def __init__(self, path, img_size=416, batch_size=16, augment=False, rect=False): with open(path, 'r') as f: img_files = f.read().splitlines() self.img_files = list(filter(lambda x: len(x) > 0, img_files)) From 6e1c7922b330ae0f5c4575bb5cc50ebc2909949f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 5 May 2019 20:34:30 +0200 Subject: [PATCH 0811/2595] updates --- data/trainvalno5k.shapes | 1 + 1 file changed, 1 insertion(+) diff --git a/data/trainvalno5k.shapes b/data/trainvalno5k.shapes index 855a0700..00123451 100644 --- a/data/trainvalno5k.shapes +++ b/data/trainvalno5k.shapes @@ -23583,6 +23583,7 @@ 640 480 425 640 640 428 +640 396 375 500 640 425 640 426 From 74d5496b5bc6cf12af4f89db283b8a62365aba6b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 5 May 2019 21:00:50 +0200 Subject: [PATCH 0812/2595] updates --- utils/datasets.py | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/datasets.py b/utils/datasets.py index bd6ef6a9..c4f93f23 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -155,6 +155,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing if os.path.exists(sp): # read existing shapefile with open(sp, 'r') as f: s = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) + assert len(s) == n, 'Shapefile out of sync, please delete %s and rerun' % sp else: # no shapefile, so read shape using PIL and write shapefile for next time (faster) s = np.array([Image.open(f).size for f in tqdm(self.img_files, desc='Reading image shapes')]) np.savetxt(sp, s, fmt='%g') From 439c5a9839ef53a44a74d78d661aeb1b3dbd3e0a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 5 May 2019 21:02:18 +0200 Subject: [PATCH 0813/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index c4f93f23..1f26a0e9 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -130,7 +130,7 @@ class LoadWebcam: # for inference class LoadImagesAndLabels(Dataset): # for training/testing - def __init__(self, path, img_size=416, batch_size=16, augment=False, rect=False): + def __init__(self, path, img_size=416, batch_size=16, augment=False, rect=True): with open(path, 'r') as f: img_files = f.read().splitlines() self.img_files = list(filter(lambda x: len(x) > 0, img_files)) From f05042b660b3d6b608fc71d0e025d0f5c088c87c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 5 May 2019 21:49:04 +0200 Subject: [PATCH 0814/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 1f26a0e9..c4f93f23 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -130,7 +130,7 @@ class LoadWebcam: # for inference class LoadImagesAndLabels(Dataset): # for training/testing - def __init__(self, path, img_size=416, batch_size=16, augment=False, rect=True): + def __init__(self, path, img_size=416, batch_size=16, augment=False, rect=False): with open(path, 'r') as f: img_files = f.read().splitlines() self.img_files = list(filter(lambda x: len(x) > 0, img_files)) From 2ebbe2f33979099227742ac75002bb44a38a32a6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 5 May 2019 22:10:02 +0200 Subject: [PATCH 0815/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index c4f93f23..879d0d31 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -146,9 +146,9 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Rectangular Training https://github.com/ultralytics/yolov3/issues/232 self.pad_rectangular = rect if self.pad_rectangular: + from PIL import Image bi = np.floor(np.arange(n) / batch_size).astype(np.int) # batch index nb = bi[-1] + 1 # number of batches - from PIL import Image # Read image shapes sp = 'data' + os.sep + path.replace('.txt', '.shapes').split(os.sep)[-1] # shapefile path From d7a4cabc0715deba5fb6e274136719eda00e7bd2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 6 May 2019 16:16:13 +0200 Subject: [PATCH 0816/2595] updates --- trainvalno5k.shapes | 117264 ----------------------------------------- 1 file changed, 117264 deletions(-) delete mode 100644 trainvalno5k.shapes diff --git a/trainvalno5k.shapes b/trainvalno5k.shapes deleted file mode 100644 index 00123451..00000000 --- a/trainvalno5k.shapes +++ /dev/null @@ -1,117264 +0,0 @@ -640 480 -640 426 -640 428 -640 425 -481 640 -381 500 -640 488 -480 640 -640 426 -427 640 -500 375 -612 612 -640 425 -512 640 -640 480 -640 427 -640 427 -640 416 -640 480 -416 640 -640 481 -640 573 -480 640 -640 480 -640 428 -480 640 -427 640 -640 536 -640 480 -640 428 -640 424 -500 333 -591 640 -640 480 -640 426 -600 600 -640 427 -640 427 -640 480 -640 481 -640 427 -640 480 -640 480 -480 640 -480 640 -640 480 -446 640 -640 480 -640 611 -426 640 -640 480 -640 389 -427 640 -640 480 -640 480 -480 640 -640 480 -640 427 -500 495 -500 313 -640 480 -360 640 -427 640 -640 480 -640 480 -640 425 -640 484 -460 312 -423 640 -427 640 -640 513 -473 500 -640 426 -640 480 -640 248 -640 480 -640 480 -480 640 -640 446 -640 427 -427 640 -500 375 -640 427 -640 472 -640 425 -640 427 -640 427 -640 481 -480 640 -612 612 -640 480 -428 640 -500 333 -640 480 -640 457 -359 640 -640 480 -640 361 -426 640 -429 640 -640 427 -612 612 -640 422 -500 332 -640 360 -640 360 -640 393 -512 640 -640 480 -640 431 -640 575 -640 480 -640 427 -640 427 -460 640 -640 427 -612 612 -327 500 -640 512 -392 500 -612 612 -640 480 -500 375 -640 360 -480 640 -427 640 -640 480 -640 369 -480 640 -480 640 -480 640 -427 640 -640 480 -640 480 -640 427 -612 612 -640 419 -640 427 -640 428 -640 480 -640 480 -443 640 -640 532 -640 480 -424 640 -640 424 -640 453 -640 424 -427 640 -640 480 -640 480 -500 332 -500 274 -640 359 -640 480 -480 640 -480 640 -480 640 -640 435 -640 427 -640 463 -640 522 -640 335 -640 480 -640 480 -640 492 -426 640 -480 640 -640 428 -500 333 -480 640 -640 426 -640 482 -480 640 -518 600 -640 480 -480 640 -640 419 -640 498 -640 480 -427 640 -612 612 -500 374 -640 428 -640 463 -640 480 -640 480 -480 640 -640 427 -354 500 -640 480 -428 640 -640 428 -640 480 -640 428 -640 428 -600 464 -500 375 -640 427 -612 612 -424 640 -427 640 -427 640 -612 612 -640 480 -640 425 -640 480 -500 375 -640 480 -480 640 -640 480 -640 480 -640 427 -640 480 -500 337 -500 335 -640 258 -640 480 -640 425 -640 562 -500 419 -640 427 -333 500 -482 500 -640 427 -640 427 -612 612 -640 480 -640 480 -500 333 -640 640 -500 375 -640 518 -640 480 -640 425 -640 426 -640 494 -640 427 -640 480 -480 640 -500 375 -640 427 -640 424 -640 480 -640 480 -640 480 -640 278 -458 640 -640 430 -640 480 -500 500 -640 640 -375 500 -564 640 -640 480 -500 353 -640 413 -473 640 -640 480 -640 427 -500 375 -640 233 -550 640 -500 333 -640 427 -640 332 -640 425 -640 426 -640 544 -640 480 -640 453 -640 640 -480 252 -500 375 -640 480 -640 480 -640 480 -640 429 -640 426 -640 480 -640 480 -480 640 -640 425 -375 500 -640 480 -640 427 -640 428 -640 462 -640 480 -428 640 -640 427 -480 640 -427 640 -501 640 -482 640 -640 427 -500 333 -640 480 -500 299 -640 463 -640 480 -640 427 -640 480 -640 480 -640 480 -640 480 -375 500 -426 640 -500 333 -640 345 -640 480 -640 580 -640 480 -428 640 -640 427 -333 500 -640 480 -640 480 -640 626 -640 428 -640 427 -640 480 -640 427 -400 500 -640 427 -500 375 -640 478 -640 480 -640 480 -640 427 -640 427 -640 427 -640 480 -500 500 -640 427 -640 360 -637 640 -481 640 -427 640 -640 426 -427 640 -640 427 -640 428 -480 640 -640 454 -609 609 -425 640 -426 640 -424 640 -427 640 -640 480 -640 427 -332 500 -640 478 -427 640 -427 640 -427 640 -640 480 -640 427 -640 480 -640 427 -640 427 -427 640 -640 376 -640 443 -640 480 -640 429 -640 480 -640 428 -640 640 -640 323 -640 480 -320 240 -640 480 -511 640 -640 408 -640 480 -500 375 -640 480 -500 297 -549 640 -500 358 -536 640 -480 640 -640 480 -640 383 -640 427 -640 480 -640 428 -640 480 -640 480 -640 482 -640 426 -640 427 -640 427 -425 640 -500 492 -640 512 -426 640 -640 383 -612 612 -640 427 -640 423 -427 640 -640 463 -480 640 -640 426 -640 427 -640 512 -480 640 -640 427 -455 640 -424 640 -533 640 -640 519 -640 421 -500 375 -640 427 -640 427 -640 443 -640 459 -640 480 -640 480 -427 640 -434 640 -500 335 -640 368 -612 612 -640 427 -640 479 -640 427 -640 480 -640 429 -640 480 -482 640 -512 640 -640 448 -640 408 -640 480 -640 480 -640 480 -612 612 -640 426 -500 392 -640 427 -640 480 -640 426 -640 640 -640 512 -640 427 -427 640 -612 612 -640 427 -640 480 -640 505 -427 640 -427 640 -640 480 -500 316 -640 482 -362 500 -500 500 -640 569 -640 638 -640 427 -480 640 -427 640 -640 427 -640 480 -640 480 -640 480 -640 425 -480 640 -500 443 -640 480 -640 427 -640 480 -640 480 -640 480 -640 427 -640 480 -640 480 -640 427 -500 333 -400 500 -480 640 -640 480 -516 640 -640 480 -500 333 -640 409 -350 233 -640 374 -640 401 -386 500 -640 480 -640 425 -640 426 -640 480 -640 480 -640 480 -640 426 -640 480 -640 480 -640 480 -640 428 -640 554 -427 640 -640 426 -483 640 -640 480 -640 480 -640 429 -425 640 -640 133 -333 500 -640 424 -480 640 -640 480 -640 480 -640 480 -458 640 -428 640 -640 361 -370 640 -360 480 -640 386 -640 426 -640 480 -640 480 -640 427 -640 427 -640 480 -500 375 -640 427 -640 572 -640 481 -640 414 -612 612 -640 480 -640 457 -640 480 -640 480 -500 375 -428 640 -480 640 -640 480 -640 427 -640 480 -640 480 -640 428 -640 424 -640 376 -640 480 -640 480 -640 640 -640 478 -480 640 -640 480 -438 640 -480 640 -429 640 -640 438 -640 427 -640 427 -640 480 -640 480 -425 640 -640 506 -640 426 -640 480 -640 427 -427 640 -640 481 -640 480 -500 334 -640 426 -375 500 -640 480 -640 425 -640 425 -500 331 -640 512 -480 640 -640 480 -640 480 -640 427 -640 480 -640 480 -640 480 -640 480 -640 480 -640 360 -640 640 -640 458 -640 480 -640 507 -640 480 -640 480 -526 640 -427 640 -640 480 -640 480 -429 640 -640 480 -427 640 -500 375 -640 428 -640 640 -640 480 -640 415 -640 480 -640 480 -612 612 -427 640 -640 480 -640 480 -478 640 -640 480 -640 565 -480 640 -374 500 -500 331 -640 427 -424 640 -640 350 -640 424 -612 612 -640 427 -640 427 -640 427 -612 612 -640 472 -500 375 -640 480 -640 480 -480 640 -640 480 -640 426 -640 480 -375 500 -640 438 -640 480 -640 494 -640 426 -428 640 -640 480 -500 366 -640 480 -500 375 -640 480 -640 519 -640 426 -640 480 -480 640 -640 480 -640 425 -640 425 -640 478 -640 424 -480 640 -478 640 -640 480 -640 427 -640 444 -480 640 -640 481 -640 480 -640 385 -640 480 -427 640 -640 480 -640 360 -640 480 -640 569 -640 480 -640 426 -640 474 -425 640 -640 347 -375 500 -640 425 -640 640 -640 467 -640 427 -427 640 -427 640 -640 480 -640 413 -640 480 -640 425 -640 371 -585 640 -640 480 -400 317 -640 432 -640 427 -640 480 -640 480 -640 346 -640 427 -640 426 -640 471 -500 333 -640 438 -640 426 -640 480 -333 500 -640 480 -640 426 -640 480 -500 333 -640 427 -480 640 -500 375 -640 480 -640 427 -438 640 -640 427 -640 480 -640 482 -640 568 -640 640 -640 480 -500 375 -640 427 -640 425 -640 426 -640 428 -640 480 -612 612 -640 480 -640 427 -640 480 -640 426 -640 427 -640 361 -612 612 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -640 469 -396 500 -640 427 -640 480 -500 375 -640 425 -600 400 -640 427 -480 640 -375 500 -425 640 -427 640 -640 480 -640 427 -480 640 -640 361 -640 473 -480 640 -640 480 -640 433 -427 640 -640 467 -640 429 -640 431 -640 427 -640 478 -640 480 -500 333 -425 640 -640 425 -612 612 -640 427 -640 482 -500 363 -378 500 -640 480 -640 426 -640 427 -640 424 -640 427 -640 439 -640 427 -340 640 -640 480 -640 428 -640 427 -640 480 -419 640 -616 640 -640 423 -640 459 -500 467 -640 427 -640 640 -640 361 -640 640 -640 427 -640 438 -426 640 -620 640 -500 364 -640 480 -640 427 -640 443 -457 640 -640 478 -640 417 -640 640 -640 383 -640 390 -640 427 -640 426 -640 413 -640 480 -640 480 -500 369 -640 457 -640 480 -640 427 -375 500 -500 377 -640 480 -640 427 -427 640 -500 491 -640 480 -640 480 -612 612 -640 425 -640 428 -640 480 -640 503 -640 425 -500 333 -480 640 -480 640 -640 480 -500 333 -486 640 -640 427 -640 428 -375 500 -375 500 -640 425 -640 512 -640 427 -640 427 -480 640 -491 640 -640 427 -640 428 -640 427 -640 480 -427 640 -640 463 -427 640 -640 427 -333 500 -480 640 -640 480 -612 612 -480 640 -480 640 -640 426 -640 427 -640 427 -640 433 -640 480 -500 332 -612 612 -640 480 -640 480 -640 476 -640 388 -427 640 -640 353 -640 426 -428 640 -640 457 -640 424 -640 427 -475 500 -426 640 -640 640 -640 480 -640 480 -640 480 -500 471 -640 480 -640 480 -640 481 -480 640 -640 480 -428 640 -443 640 -640 426 -427 640 -640 427 -500 375 -425 640 -640 359 -640 406 -640 427 -500 328 -640 480 -640 426 -640 238 -640 429 -640 480 -640 473 -640 424 -640 383 -640 480 -480 640 -640 480 -640 426 -640 426 -640 322 -414 330 -640 425 -500 346 -640 226 -478 640 -612 612 -556 640 -500 333 -333 500 -640 426 -640 427 -640 427 -640 379 -426 640 -640 427 -427 640 -640 428 -640 480 -428 640 -500 375 -333 500 -640 427 -640 428 -640 426 -480 640 -640 427 -281 500 -500 375 -640 480 -476 640 -640 480 -612 612 -640 506 -640 427 -640 434 -640 480 -640 480 -480 640 -500 375 -640 426 -335 500 -375 500 -640 480 -429 640 -375 500 -640 442 -640 480 -480 640 -640 388 -640 427 -640 480 -640 427 -640 404 -427 640 -482 640 -640 424 -640 418 -500 498 -640 202 -640 426 -640 428 -640 495 -640 422 -640 428 -480 640 -640 427 -640 480 -640 480 -375 500 -640 441 -640 463 -640 480 -480 640 -424 640 -427 640 -640 425 -640 426 -400 500 -500 375 -640 427 -640 420 -640 469 -640 455 -640 480 -640 427 -640 480 -640 509 -480 640 -640 426 -640 418 -640 480 -640 427 -640 480 -640 503 -640 480 -640 426 -640 481 -640 427 -480 640 -640 427 -500 375 -640 480 -640 480 -640 360 -640 426 -480 640 -640 428 -640 480 -640 640 -326 500 -373 500 -425 640 -519 640 -500 375 -500 375 -640 478 -640 478 -500 375 -640 480 -640 472 -508 503 -640 427 -640 480 -512 640 -640 562 -500 375 -480 640 -640 480 -427 640 -640 411 -640 520 -640 480 -640 428 -431 500 -640 426 -424 640 -640 480 -640 480 -500 334 -640 427 -640 309 -480 640 -427 640 -640 442 -480 640 -640 428 -640 410 -640 428 -640 480 -480 640 -640 427 -385 640 -427 640 -480 640 -488 640 -480 640 -500 339 -640 454 -612 612 -640 353 -380 472 -480 640 -640 448 -640 449 -640 640 -375 500 -640 480 -427 640 -480 640 -500 375 -640 435 -640 480 -640 480 -591 400 -640 427 -640 425 -640 424 -424 640 -640 427 -640 411 -640 427 -640 480 -640 427 -426 640 -500 375 -640 501 -640 428 -426 640 -640 480 -640 480 -640 427 -479 640 -640 427 -640 424 -500 375 -427 640 -427 640 -640 480 -500 375 -500 375 -640 461 -424 640 -640 640 -640 426 -640 480 -427 640 -640 480 -640 426 -640 425 -640 346 -480 640 -640 378 -478 640 -640 425 -426 640 -640 419 -640 480 -640 480 -640 480 -640 417 -640 427 -427 640 -640 427 -502 640 -480 640 -640 343 -640 480 -640 637 -500 376 -640 393 -490 490 -500 375 -640 426 -427 640 -480 640 -500 435 -640 453 -640 427 -428 640 -640 480 -427 640 -640 422 -640 480 -640 480 -640 480 -640 428 -640 426 -640 480 -500 333 -424 640 -640 480 -640 430 -480 640 -640 481 -640 480 -480 640 -640 489 -470 313 -431 640 -640 360 -640 427 -500 371 -640 426 -640 480 -480 640 -427 640 -640 480 -425 640 -640 480 -640 480 -640 480 -640 427 -640 492 -500 375 -582 640 -640 427 -500 332 -428 640 -320 640 -640 480 -426 640 -425 640 -500 375 -320 480 -640 425 -640 425 -640 427 -640 424 -640 480 -597 398 -640 425 -640 431 -640 426 -612 612 -640 425 -640 427 -640 358 -640 427 -640 480 -640 429 -640 425 -640 427 -500 335 -500 251 -428 640 -640 356 -640 425 -640 427 -640 480 -640 427 -640 360 -640 415 -640 480 -604 453 -480 640 -500 287 -334 500 -640 428 -640 427 -640 480 -640 480 -375 500 -640 428 -480 640 -640 427 -640 425 -640 427 -640 480 -480 640 -500 375 -640 425 -480 640 -640 426 -640 480 -640 427 -640 480 -640 426 -640 458 -481 640 -640 480 -427 640 -640 427 -640 429 -425 640 -640 480 -640 480 -640 433 -500 410 -640 424 -640 480 -500 375 -500 333 -640 480 -640 428 -500 404 -640 427 -640 427 -640 425 -500 375 -640 425 -640 461 -640 480 -640 427 -427 640 -612 612 -640 427 -640 480 -333 500 -428 640 -640 426 -612 612 -640 391 -640 480 -351 490 -640 360 -640 480 -640 480 -640 480 -480 640 -480 640 -640 448 -640 427 -500 375 -640 480 -640 480 -640 480 -640 484 -640 425 -640 284 -640 480 -640 480 -442 500 -640 381 -640 480 -465 640 -429 640 -640 480 -500 334 -640 427 -423 640 -612 640 -640 480 -640 480 -500 332 -640 469 -426 640 -640 456 -640 425 -375 500 -640 273 -640 480 -333 500 -379 640 -422 640 -640 427 -332 500 -640 427 -500 375 -500 375 -640 427 -640 426 -500 375 -640 400 -640 360 -640 425 -500 400 -640 633 -480 640 -640 426 -640 480 -640 480 -640 426 -427 640 -640 469 -640 425 -640 480 -640 424 -500 500 -640 360 -640 436 -640 427 -316 640 -640 427 -640 427 -470 351 -640 480 -640 480 -640 502 -640 443 -500 333 -640 480 -640 480 -640 427 -640 360 -640 480 -375 500 -475 640 -640 427 -640 427 -640 427 -640 427 -640 426 -640 427 -640 468 -333 500 -427 640 -640 400 -640 427 -480 640 -640 480 -480 640 -478 640 -640 427 -640 480 -478 640 -640 424 -640 426 -640 416 -640 453 -640 480 -500 420 -640 480 -640 480 -640 426 -375 500 -500 349 -640 416 -640 427 -500 375 -427 640 -640 426 -640 480 -375 500 -640 426 -640 425 -612 612 -640 480 -640 480 -500 186 -640 480 -480 640 -640 427 -640 640 -478 640 -640 427 -480 639 -500 327 -640 428 -426 640 -640 360 -433 640 -427 640 -640 475 -478 640 -640 480 -640 470 -640 480 -500 334 -640 427 -640 427 -491 640 -640 480 -640 478 -623 640 -640 480 -491 640 -500 333 -640 426 -640 427 -640 427 -640 424 -640 423 -640 430 -500 333 -640 480 -640 354 -500 334 -640 479 -640 427 -640 360 -640 428 -375 500 -640 480 -640 480 -640 424 -640 427 -480 640 -640 480 -480 640 -640 424 -640 480 -640 480 -500 376 -640 357 -640 427 -640 426 -612 612 -640 425 -612 612 -640 480 -640 427 -640 512 -425 640 -640 640 -640 449 -640 480 -333 500 -500 443 -640 431 -640 425 -500 391 -640 458 -480 640 -471 640 -640 480 -640 479 -640 426 -640 426 -500 375 -640 480 -612 612 -640 480 -480 640 -500 371 -429 640 -426 640 -465 335 -640 384 -426 640 -473 500 -640 426 -640 433 -480 640 -640 480 -640 480 -640 442 -640 480 -640 437 -640 640 -427 640 -640 480 -640 426 -640 427 -640 423 -480 640 -640 448 -640 480 -640 426 -640 360 -640 480 -427 640 -640 427 -640 479 -640 480 -500 352 -640 478 -427 640 -640 480 -640 427 -640 482 -474 640 -640 480 -640 425 -640 367 -480 320 -640 480 -640 480 -640 427 -640 480 -640 425 -500 375 -500 195 -480 640 -432 500 -500 386 -640 427 -640 468 -427 640 -589 640 -640 480 -640 480 -480 640 -425 640 -640 427 -640 429 -640 425 -500 333 -640 427 -640 360 -426 640 -640 480 -640 480 -640 427 -640 354 -640 428 -640 480 -480 640 -612 612 -640 424 -424 640 -640 426 -500 289 -480 640 -612 612 -500 333 -640 360 -640 426 -500 375 -640 480 -427 640 -640 640 -640 427 -640 480 -640 428 -521 640 -640 480 -640 480 -640 427 -640 365 -640 510 -640 427 -480 640 -640 427 -640 360 -640 425 -640 480 -640 427 -640 487 -456 640 -640 480 -640 448 -640 425 -640 427 -427 640 -640 376 -640 427 -640 427 -640 426 -640 480 -640 427 -500 375 -612 612 -500 334 -640 480 -333 500 -640 640 -516 640 -500 375 -500 375 -375 500 -500 329 -612 612 -640 640 -480 640 -426 640 -500 375 -500 332 -640 480 -640 435 -640 427 -640 480 -640 426 -426 640 -640 428 -640 480 -334 500 -427 640 -640 428 -500 375 -489 640 -640 426 -612 612 -480 640 -480 640 -349 640 -640 480 -640 426 -478 640 -640 332 -640 544 -640 474 -396 312 -640 425 -640 480 -640 425 -640 480 -640 383 -513 640 -640 427 -500 375 -424 640 -375 500 -427 640 -640 480 -444 640 -500 375 -640 480 -640 480 -640 480 -480 640 -375 500 -640 427 -640 427 -640 480 -500 375 -425 640 -480 640 -640 428 -640 426 -480 640 -640 427 -480 640 -640 426 -424 640 -426 640 -640 427 -640 425 -333 500 -640 426 -640 427 -640 427 -480 640 -427 640 -640 368 -427 640 -640 480 -640 512 -640 480 -640 553 -640 480 -640 640 -640 360 -359 640 -344 500 -640 480 -640 640 -640 416 -375 500 -612 612 -640 427 -612 612 -640 398 -612 612 -640 480 -640 510 -612 612 -640 480 -640 480 -640 480 -640 427 -640 403 -427 640 -640 427 -480 640 -640 480 -427 640 -500 500 -426 640 -496 640 -375 500 -640 480 -640 480 -640 427 -640 424 -640 427 -640 480 -500 333 -640 480 -640 480 -640 427 -374 500 -457 640 -640 428 -640 427 -334 500 -335 500 -640 480 -640 480 -640 428 -332 500 -640 480 -640 480 -640 480 -500 375 -640 433 -640 427 -640 478 -640 507 -640 480 -640 480 -640 428 -640 480 -640 186 -333 500 -640 427 -640 480 -640 478 -640 421 -640 282 -375 500 -640 480 -480 640 -640 480 -640 480 -640 480 -480 640 -640 427 -640 427 -480 229 -640 426 -640 427 -451 640 -640 480 -500 375 -640 427 -491 500 -415 640 -427 640 -640 427 -375 500 -640 480 -640 427 -640 424 -640 427 -640 426 -640 427 -640 427 -640 425 -640 634 -640 360 -500 375 -640 480 -640 424 -640 426 -640 427 -640 483 -500 333 -634 640 -432 640 -640 480 -640 480 -427 640 -426 640 -640 427 -640 480 -375 500 -640 386 -640 425 -640 428 -640 428 -640 480 -640 426 -427 640 -640 428 -603 640 -640 427 -500 332 -480 640 -342 500 -640 496 -640 480 -612 612 -427 640 -500 448 -414 640 -459 640 -434 640 -640 473 -640 480 -640 480 -640 480 -500 375 -478 640 -640 480 -640 480 -640 480 -640 428 -450 640 -640 427 -640 511 -375 500 -500 375 -640 427 -640 640 -335 500 -640 359 -640 480 -640 480 -640 428 -640 425 -480 640 -426 640 -640 480 -640 565 -640 427 -640 480 -640 426 -640 381 -512 640 -484 640 -640 426 -640 640 -640 480 -481 640 -427 640 -640 596 -640 480 -640 428 -640 429 -640 427 -512 640 -480 640 -427 640 -375 500 -612 612 -640 480 -640 427 -640 360 -612 612 -478 640 -640 419 -640 429 -640 426 -640 480 -640 427 -640 451 -640 480 -480 640 -640 465 -640 480 -425 640 -436 640 -478 640 -640 426 -640 554 -640 480 -640 480 -500 391 -640 426 -640 427 -640 431 -427 640 -640 425 -640 426 -640 411 -480 640 -640 425 -465 640 -640 467 -640 427 -640 480 -510 640 -480 640 -640 422 -640 427 -640 388 -640 480 -640 480 -458 640 -640 480 -480 640 -640 480 -233 247 -640 480 -428 640 -640 427 -640 360 -424 640 -640 478 -640 380 -640 360 -640 425 -500 280 -480 640 -640 426 -640 426 -640 480 -640 480 -640 463 -640 352 -640 480 -427 640 -612 612 -640 426 -480 360 -640 480 -500 375 -640 425 -640 480 -427 640 -500 334 -500 377 -640 425 -500 392 -425 640 -500 334 -333 500 -640 480 -640 480 -640 408 -427 338 -502 640 -500 375 -640 427 -640 640 -640 414 -640 512 -640 427 -640 428 -640 409 -500 375 -500 375 -640 426 -640 478 -640 427 -640 480 -640 480 -640 403 -640 461 -640 503 -640 425 -640 425 -640 457 -425 640 -427 640 -375 500 -333 500 -480 640 -640 480 -640 426 -640 480 -640 448 -640 427 -640 427 -375 500 -640 427 -500 375 -640 427 -640 427 -640 480 -640 427 -428 640 -640 426 -640 480 -300 169 -512 640 -640 480 -640 426 -640 428 -640 480 -640 323 -640 427 -480 640 -640 427 -640 427 -500 400 -428 640 -640 360 -640 480 -427 640 -475 640 -640 480 -333 500 -612 612 -640 480 -640 351 -640 562 -640 480 -640 427 -480 640 -612 612 -640 309 -640 427 -640 480 -480 640 -640 480 -424 640 -640 480 -640 427 -640 425 -640 480 -640 480 -640 480 -478 640 -478 640 -612 612 -640 426 -640 480 -556 640 -500 375 -640 425 -640 480 -480 640 -375 500 -640 427 -480 640 -426 640 -640 427 -640 426 -640 480 -480 640 -640 427 -480 640 -375 500 -640 472 -480 640 -640 427 -640 427 -640 480 -360 270 -640 480 -500 333 -333 500 -640 375 -640 360 -640 480 -427 640 -480 640 -640 428 -480 640 -427 640 -640 512 -640 480 -640 383 -640 369 -640 428 -640 345 -640 424 -612 612 -413 640 -640 442 -500 281 -500 481 -640 480 -480 640 -640 361 -500 332 -500 375 -500 375 -640 427 -500 375 -640 480 -640 429 -640 480 -500 375 -640 407 -640 427 -640 480 -640 480 -640 360 -640 426 -640 480 -500 333 -640 480 -640 425 -640 480 -640 479 -640 386 -383 640 -472 314 -480 640 -640 513 -640 516 -640 428 -500 375 -640 480 -640 480 -640 425 -480 640 -480 640 -591 640 -640 425 -640 480 -500 375 -640 427 -356 480 -640 360 -640 428 -500 333 -480 640 -640 360 -640 480 -640 457 -500 333 -640 427 -300 201 -360 640 -640 640 -640 478 -500 332 -640 480 -640 427 -640 640 -480 640 -640 427 -640 640 -640 480 -640 480 -640 427 -500 375 -640 480 -640 444 -640 427 -640 427 -640 410 -500 375 -619 640 -640 429 -500 277 -399 640 -427 640 -640 421 -640 428 -640 429 -480 640 -480 640 -320 240 -640 427 -640 427 -640 427 -640 426 -640 606 -480 640 -640 451 -640 427 -640 428 -640 360 -640 484 -500 500 -640 482 -640 427 -640 480 -640 424 -640 427 -480 640 -426 640 -640 480 -412 640 -640 480 -640 427 -640 406 -640 480 -500 375 -640 506 -640 480 -640 480 -640 415 -480 640 -640 480 -419 640 -429 640 -640 453 -640 427 -480 640 -500 333 -640 427 -640 480 -640 480 -640 428 -480 640 -640 411 -640 360 -640 429 -500 375 -640 480 -640 427 -640 640 -612 612 -640 480 -612 612 -640 481 -640 496 -376 640 -640 480 -640 431 -640 480 -640 426 -424 640 -500 486 -640 480 -640 480 -640 426 -500 325 -640 458 -640 383 -480 640 -640 369 -640 480 -640 424 -480 640 -500 333 -640 459 -424 640 -612 612 -461 640 -480 640 -375 500 -375 500 -640 423 -640 427 -640 480 -640 428 -640 388 -427 640 -640 480 -333 500 -640 423 -640 427 -640 388 -640 480 -500 375 -640 427 -500 333 -427 640 -640 427 -640 320 -640 429 -640 292 -640 424 -640 480 -640 428 -480 640 -640 408 -640 480 -640 407 -640 419 -640 426 -500 500 -375 500 -640 427 -480 640 -640 427 -640 480 -640 480 -640 161 -640 426 -500 455 -640 427 -640 480 -640 385 -640 479 -640 424 -500 375 -640 480 -640 480 -640 480 -640 480 -640 359 -640 429 -640 472 -480 640 -640 480 -500 332 -640 427 -640 625 -640 480 -640 416 -480 640 -640 385 -366 500 -426 640 -478 640 -431 640 -640 427 -640 427 -375 500 -640 427 -480 640 -640 427 -640 476 -308 233 -480 640 -640 480 -500 376 -640 427 -612 612 -500 376 -640 427 -640 427 -640 480 -640 406 -425 640 -640 480 -640 363 -640 480 -640 424 -640 426 -279 640 -480 640 -640 428 -640 427 -640 383 -640 427 -428 640 -640 425 -640 512 -640 417 -631 640 -640 427 -427 640 -480 640 -640 427 -443 448 -441 640 -640 429 -612 612 -612 612 -640 429 -640 421 -361 640 -640 425 -491 640 -640 480 -321 479 -640 427 -640 447 -429 640 -640 480 -640 480 -640 480 -426 640 -454 640 -640 361 -427 640 -640 480 -426 640 -640 423 -480 640 -612 612 -640 425 -640 520 -640 594 -640 404 -640 427 -640 480 -640 424 -640 427 -640 427 -480 640 -640 396 -640 426 -640 428 -640 585 -640 426 -427 640 -334 500 -480 640 -480 640 -640 427 -500 375 -427 640 -640 424 -375 500 -640 424 -480 640 -350 233 -424 640 -640 427 -640 640 -640 424 -640 427 -640 428 -350 450 -640 480 -640 429 -640 428 -385 500 -640 429 -640 471 -640 480 -500 375 -640 362 -640 427 -612 612 -640 341 -640 427 -640 439 -500 375 -500 333 -500 397 -480 640 -427 640 -375 500 -640 427 -640 480 -640 480 -640 480 -426 640 -640 480 -375 500 -640 480 -640 480 -480 640 -427 640 -640 441 -427 640 -640 512 -500 375 -640 427 -640 428 -640 640 -640 360 -480 640 -500 355 -640 480 -640 480 -480 640 -640 480 -640 327 -640 427 -640 427 -500 375 -566 640 -422 640 -500 312 -640 480 -640 480 -427 640 -480 640 -500 487 -427 640 -427 640 -478 640 -640 426 -640 427 -640 427 -335 500 -500 333 -640 480 -640 428 -640 463 -640 480 -640 427 -640 424 -640 480 -640 480 -640 524 -480 640 -640 480 -612 612 -427 640 -640 427 -640 480 -500 359 -640 425 -640 427 -640 379 -640 480 -640 480 -395 640 -640 427 -640 424 -640 480 -640 480 -612 612 -356 500 -640 359 -640 480 -640 411 -480 640 -640 479 -480 640 -640 427 -480 640 -640 426 -640 427 -640 480 -210 640 -640 597 -640 528 -640 427 -640 431 -640 427 -480 640 -640 480 -480 640 -640 480 -640 569 -480 640 -640 428 -640 480 -500 500 -500 375 -640 426 -640 480 -304 640 -480 640 -640 480 -640 640 -375 500 -500 314 -512 640 -444 640 -426 640 -289 350 -640 435 -640 480 -640 625 -427 640 -500 375 -640 354 -480 640 -640 599 -640 424 -480 640 -500 332 -640 428 -500 335 -640 480 -640 324 -640 480 -640 427 -640 359 -640 480 -640 494 -640 464 -640 494 -640 428 -640 358 -640 427 -640 326 -423 640 -500 375 -640 480 -440 640 -640 426 -361 640 -426 640 -640 480 -480 640 -640 426 -427 640 -640 480 -640 486 -640 611 -640 480 -640 425 -590 397 -612 612 -640 427 -477 358 -500 311 -480 640 -640 480 -640 425 -500 144 -640 427 -640 436 -425 640 -334 500 -640 512 -640 427 -480 640 -640 480 -640 480 -424 640 -640 431 -640 490 -335 479 -500 333 -480 640 -480 640 -426 640 -640 424 -640 528 -640 359 -640 480 -480 640 -640 480 -640 480 -480 640 -500 331 -480 640 -640 428 -640 511 -640 427 -480 640 -500 335 -480 640 -425 640 -426 640 -640 375 -425 640 -408 500 -640 425 -500 375 -640 424 -500 375 -640 480 -427 640 -640 485 -640 480 -427 640 -640 480 -640 283 -593 640 -425 640 -640 427 -480 640 -640 413 -480 640 -640 428 -640 541 -480 640 -640 425 -640 406 -480 640 -480 640 -640 480 -600 600 -640 431 -640 425 -640 426 -500 354 -640 428 -500 328 -640 480 -640 427 -640 426 -394 500 -640 429 -640 425 -480 640 -500 485 -640 480 -640 480 -480 640 -500 375 -640 480 -464 640 -640 427 -640 480 -427 640 -612 612 -411 600 -640 480 -640 427 -427 640 -640 428 -500 376 -640 425 -640 482 -640 427 -640 480 -640 480 -640 480 -640 480 -480 640 -415 600 -640 595 -640 480 -640 425 -640 428 -640 427 -478 640 -424 640 -640 427 -640 314 -640 441 -640 387 -640 640 -640 427 -330 500 -427 640 -480 640 -427 640 -500 333 -480 640 -640 480 -640 426 -480 640 -640 537 -640 481 -640 426 -527 640 -480 640 -640 360 -413 640 -640 427 -640 480 -640 640 -640 480 -640 479 -640 414 -640 480 -640 489 -427 640 -496 640 -640 428 -620 450 -640 639 -500 333 -640 480 -640 431 -640 480 -375 500 -479 640 -426 640 -640 480 -640 480 -640 426 -500 375 -489 640 -500 334 -427 640 -612 612 -640 425 -640 360 -640 425 -640 427 -640 480 -640 478 -640 480 -480 640 -640 478 -500 332 -640 429 -359 640 -640 429 -640 480 -480 640 -640 480 -640 480 -640 360 -451 640 -640 428 -480 640 -640 480 -640 480 -640 424 -640 427 -640 426 -640 480 -361 500 -640 480 -640 501 -625 330 -427 640 -640 424 -640 425 -640 424 -640 426 -640 454 -428 640 -640 427 -612 612 -640 480 -333 500 -612 612 -500 329 -335 500 -640 428 -640 480 -640 480 -640 426 -640 480 -640 426 -480 640 -640 391 -640 409 -640 426 -500 375 -640 640 -640 472 -427 640 -480 640 -640 640 -640 480 -640 480 -480 640 -640 480 -640 427 -500 281 -480 640 -640 428 -429 640 -500 375 -640 501 -500 375 -480 640 -480 640 -419 640 -640 480 -640 427 -375 500 -640 480 -427 640 -500 375 -640 513 -640 480 -640 480 -424 640 -640 314 -640 360 -500 375 -500 375 -478 640 -612 612 -480 640 -640 480 -480 640 -427 640 -640 426 -640 640 -612 612 -424 640 -500 333 -640 480 -426 640 -640 480 -640 480 -640 480 -640 427 -480 640 -500 333 -640 427 -640 424 -640 409 -640 541 -640 489 -640 480 -359 500 -640 427 -640 480 -640 425 -640 413 -479 640 -428 640 -640 480 -640 480 -640 427 -432 500 -640 480 -640 480 -640 429 -500 392 -640 374 -640 424 -640 480 -640 450 -640 496 -500 375 -427 640 -480 640 -480 640 -640 424 -640 480 -478 640 -640 426 -640 360 -427 640 -500 269 -474 640 -500 375 -375 500 -640 480 -500 375 -640 557 -640 361 -500 375 -640 427 -640 427 -640 480 -360 640 -427 640 -612 612 -640 427 -640 426 -375 500 -640 560 -640 332 -612 612 -640 477 -480 640 -640 480 -435 640 -375 500 -640 428 -640 398 -640 428 -375 500 -640 426 -640 428 -640 480 -551 640 -640 480 -640 480 -480 640 -640 480 -480 640 -480 640 -640 480 -640 427 -640 426 -500 381 -640 480 -640 480 -480 640 -640 425 -640 427 -427 640 -500 346 -427 640 -640 276 -640 480 -480 640 -640 480 -640 508 -344 640 -640 480 -640 401 -640 427 -349 640 -640 480 -575 575 -480 640 -640 480 -640 427 -640 424 -500 375 -333 500 -640 480 -640 409 -640 480 -480 640 -640 478 -378 500 -640 480 -521 640 -500 335 -640 426 -433 640 -640 449 -640 480 -640 480 -640 596 -500 375 -480 640 -640 426 -640 428 -640 480 -640 439 -640 427 -458 640 -640 426 -640 480 -640 428 -407 500 -500 375 -640 507 -640 480 -640 480 -640 480 -640 427 -480 640 -640 480 -640 427 -333 500 -378 640 -612 612 -640 640 -427 640 -640 426 -336 500 -640 480 -375 500 -640 427 -640 426 -640 571 -640 427 -640 426 -640 480 -640 427 -480 640 -375 500 -640 480 -640 480 -480 640 -640 441 -333 500 -640 338 -478 640 -379 500 -640 480 -640 500 -503 640 -640 360 -554 640 -427 640 -640 427 -500 500 -500 344 -640 426 -640 427 -640 517 -640 480 -640 428 -500 400 -640 424 -480 640 -640 424 -640 480 -640 426 -347 500 -359 500 -427 640 -640 426 -429 640 -640 426 -640 360 -640 427 -640 427 -640 480 -640 280 -640 414 -640 640 -500 375 -428 640 -429 500 -640 480 -640 480 -640 427 -640 426 -640 480 -640 480 -425 640 -640 309 -640 419 -421 640 -640 480 -428 640 -333 500 -640 426 -480 640 -640 480 -426 640 -640 500 -640 480 -640 427 -427 640 -480 640 -640 480 -640 391 -264 500 -500 375 -640 427 -640 427 -640 398 -640 480 -640 480 -640 425 -500 375 -499 640 -640 360 -500 375 -640 480 -426 640 -640 480 -504 640 -640 480 -500 375 -640 427 -640 480 -480 640 -640 429 -335 500 -478 640 -640 427 -640 480 -640 480 -640 427 -640 480 -640 427 -640 427 -500 375 -500 400 -640 480 -500 333 -500 375 -480 640 -427 640 -640 451 -640 336 -500 395 -640 301 -640 426 -500 375 -404 640 -640 480 -640 640 -640 427 -500 335 -640 458 -426 640 -612 612 -640 575 -638 640 -640 424 -640 478 -640 480 -640 480 -425 640 -428 640 -612 612 -427 640 -500 336 -640 424 -640 508 -640 551 -300 176 -640 426 -640 480 -612 612 -640 478 -640 427 -640 428 -640 480 -640 449 -640 438 -640 427 -500 375 -640 424 -578 640 -640 480 -640 279 -640 480 -640 480 -640 427 -640 427 -426 640 -640 427 -640 429 -427 640 -640 480 -640 480 -640 544 -480 640 -640 480 -640 482 -640 193 -640 480 -640 538 -640 480 -418 339 -640 480 -640 427 -480 640 -640 427 -640 427 -640 427 -640 436 -612 612 -640 427 -640 480 -480 640 -640 427 -426 640 -640 426 -500 375 -640 426 -427 640 -640 428 -500 333 -640 480 -640 480 -640 480 -640 426 -612 612 -640 426 -640 426 -640 427 -640 426 -407 640 -640 480 -640 480 -640 428 -427 640 -480 640 -640 467 -640 481 -640 480 -360 640 -640 497 -640 480 -612 612 -640 427 -640 427 -640 497 -640 480 -640 640 -640 480 -375 500 -640 427 -640 480 -640 460 -640 427 -640 413 -640 427 -640 424 -480 640 -480 640 -500 384 -500 375 -480 640 -640 428 -640 480 -500 375 -500 375 -640 427 -500 375 -640 480 -640 427 -480 640 -640 427 -640 480 -640 467 -640 427 -640 359 -640 360 -640 427 -640 480 -326 500 -640 471 -494 640 -640 411 -640 480 -640 373 -640 425 -480 640 -640 480 -640 427 -640 365 -421 640 -640 427 -640 480 -612 612 -333 500 -640 427 -500 333 -360 640 -640 480 -640 480 -640 359 -640 387 -640 453 -612 612 -640 360 -640 586 -500 375 -640 480 -640 428 -640 426 -640 480 -640 480 -640 428 -375 500 -462 640 -640 427 -567 640 -596 440 -449 640 -640 480 -480 640 -640 483 -640 426 -457 640 -512 640 -427 640 -640 438 -471 640 -640 480 -425 640 -640 427 -480 640 -640 427 -640 480 -640 480 -333 500 -480 640 -640 480 -640 480 -500 375 -640 427 -640 480 -640 417 -427 640 -500 375 -375 500 -640 429 -640 480 -640 480 -640 640 -640 480 -640 480 -480 640 -640 427 -640 309 -640 480 -480 640 -640 424 -426 640 -640 425 -640 481 -500 375 -640 427 -612 612 -640 480 -240 180 -640 478 -640 426 -640 427 -348 500 -640 640 -640 589 -640 480 -500 375 -640 427 -640 444 -640 350 -480 640 -640 427 -640 480 -427 640 -612 612 -480 640 -640 480 -640 480 -640 428 -640 427 -480 640 -640 425 -640 428 -640 426 -640 424 -640 480 -500 375 -640 480 -640 427 -640 427 -427 640 -375 500 -334 500 -640 480 -640 424 -500 346 -640 427 -640 429 -640 434 -640 428 -500 375 -640 426 -500 439 -640 427 -375 500 -640 480 -426 640 -640 554 -640 478 -640 427 -458 640 -640 480 -600 593 -413 640 -640 432 -640 480 -640 427 -640 481 -486 640 -640 427 -500 420 -640 427 -640 480 -329 640 -500 375 -612 612 -427 640 -640 427 -500 353 -640 364 -640 435 -640 480 -640 426 -640 479 -500 375 -640 480 -640 549 -640 480 -640 425 -640 463 -640 478 -640 459 -640 512 -640 428 -480 640 -640 425 -480 640 -640 480 -640 427 -500 490 -513 640 -640 426 -640 428 -640 426 -640 439 -425 640 -612 612 -640 480 -480 640 -640 480 -640 480 -640 427 -640 478 -640 428 -640 425 -640 480 -640 427 -640 428 -500 332 -480 640 -640 419 -640 480 -640 480 -640 430 -640 480 -375 500 -640 358 -367 640 -640 427 -640 480 -640 425 -640 427 -480 640 -640 427 -640 427 -640 439 -640 424 -640 480 -500 334 -640 427 -612 612 -480 640 -500 333 -640 427 -640 480 -357 500 -640 427 -484 640 -500 375 -426 640 -640 480 -640 478 -640 480 -640 480 -500 375 -640 480 -640 428 -426 640 -606 640 -482 640 -640 426 -640 480 -434 640 -426 640 -640 426 -375 500 -640 426 -640 361 -480 640 -640 400 -500 375 -484 640 -640 412 -640 427 -640 433 -612 612 -448 302 -640 480 -480 640 -640 440 -314 500 -640 392 -640 480 -474 640 -480 640 -640 574 -640 425 -640 427 -640 457 -640 425 -640 428 -640 480 -640 480 -640 479 -640 427 -500 375 -640 539 -480 640 -640 480 -480 640 -428 640 -480 640 -640 480 -640 480 -640 480 -640 480 -480 640 -480 640 -500 375 -640 480 -640 480 -640 429 -640 424 -500 375 -383 640 -640 480 -500 335 -640 480 -500 375 -384 640 -612 612 -640 480 -640 480 -640 480 -640 480 -419 640 -640 512 -400 300 -639 640 -640 427 -640 480 -424 640 -427 640 -640 480 -480 640 -426 640 -640 427 -640 427 -640 623 -640 521 -375 500 -640 426 -640 426 -640 427 -640 426 -500 306 -500 423 -640 428 -640 431 -640 427 -640 427 -640 634 -640 480 -640 378 -500 375 -640 427 -640 427 -500 370 -427 640 -640 427 -640 429 -640 427 -640 480 -640 424 -640 426 -640 480 -640 480 -426 640 -640 428 -640 480 -640 415 -640 427 -640 427 -640 480 -480 640 -640 427 -640 478 -480 640 -640 427 -500 333 -640 427 -640 486 -428 640 -640 424 -640 426 -640 480 -640 426 -640 480 -640 480 -419 500 -640 360 -427 640 -640 427 -640 422 -640 480 -640 480 -500 334 -425 640 -512 640 -640 427 -640 480 -480 640 -426 640 -640 480 -640 480 -500 375 -393 640 -640 425 -640 583 -640 500 -640 480 -535 640 -640 480 -640 480 -512 640 -426 640 -640 426 -375 500 -480 640 -640 480 -427 640 -640 427 -431 640 -640 427 -640 427 -375 500 -640 427 -640 429 -640 457 -640 383 -640 428 -640 521 -640 480 -640 427 -428 640 -640 427 -480 640 -640 424 -640 480 -640 640 -640 361 -640 427 -640 480 -500 377 -640 360 -640 428 -640 512 -640 424 -480 640 -640 480 -640 426 -640 427 -640 465 -640 480 -424 640 -640 427 -640 360 -640 611 -453 640 -427 640 -640 426 -375 500 -640 480 -640 426 -480 640 -612 612 -640 429 -375 500 -640 359 -640 640 -427 640 -500 333 -480 640 -612 612 -375 500 -274 500 -640 478 -640 428 -337 500 -640 454 -426 640 -320 240 -480 640 -486 466 -640 480 -575 432 -640 480 -640 574 -500 375 -469 640 -500 332 -333 500 -426 640 -640 480 -640 426 -640 427 -640 360 -640 427 -640 480 -500 375 -640 427 -500 358 -640 457 -428 640 -529 640 -512 640 -500 333 -640 383 -640 480 -640 457 -512 640 -640 427 -640 480 -640 423 -640 480 -640 427 -518 640 -480 640 -333 500 -640 428 -640 480 -640 426 -640 360 -480 640 -640 640 -500 375 -640 481 -480 640 -640 480 -640 427 -640 480 -640 413 -640 480 -428 640 -640 480 -640 428 -480 640 -494 640 -640 360 -640 480 -480 640 -424 640 -614 640 -500 300 -640 480 -640 599 -640 480 -640 427 -640 426 -640 463 -427 640 -640 480 -640 426 -640 427 -462 640 -640 480 -640 478 -640 426 -500 246 -427 640 -640 428 -640 360 -412 500 -640 425 -500 375 -500 375 -640 426 -640 480 -640 443 -640 480 -640 427 -640 427 -640 429 -640 361 -640 427 -426 640 -640 480 -636 640 -500 375 -640 427 -640 425 -640 435 -640 428 -640 428 -640 427 -480 640 -640 427 -640 480 -640 427 -640 501 -640 517 -640 480 -626 640 -640 359 -640 425 -640 429 -640 480 -640 423 -640 480 -640 424 -477 640 -640 427 -640 427 -640 480 -640 480 -640 425 -640 427 -500 373 -500 375 -640 480 -640 428 -640 633 -640 480 -640 427 -640 457 -640 480 -640 543 -640 480 -640 496 -640 287 -640 480 -480 640 -640 480 -640 480 -640 639 -640 446 -640 480 -500 375 -640 480 -640 480 -640 480 -500 375 -640 480 -640 427 -640 425 -640 428 -640 426 -640 480 -640 431 -640 427 -640 480 -640 440 -640 480 -640 480 -480 640 -640 480 -427 640 -640 489 -425 640 -640 427 -640 480 -640 480 -640 455 -640 359 -500 375 -480 640 -640 419 -480 640 -427 640 -640 480 -640 425 -640 425 -640 480 -336 500 -640 329 -640 480 -640 427 -640 480 -478 640 -612 612 -480 640 -501 640 -640 426 -427 640 -500 375 -640 427 -500 358 -425 640 -640 480 -640 480 -500 375 -640 412 -640 430 -567 640 -375 500 -476 640 -640 426 -612 612 -500 400 -426 640 -479 640 -480 640 -640 480 -480 640 -500 298 -640 480 -640 478 -640 480 -640 576 -426 640 -478 640 -640 640 -500 375 -640 483 -640 640 -424 640 -480 640 -480 640 -640 425 -640 427 -640 480 -640 480 -442 640 -500 375 -640 427 -640 480 -640 480 -640 480 -427 640 -640 426 -400 312 -640 480 -500 375 -480 640 -640 478 -640 426 -480 640 -640 480 -640 480 -640 480 -500 375 -426 640 -612 612 -640 478 -640 640 -335 500 -640 427 -640 426 -426 640 -640 427 -333 500 -640 449 -375 500 -640 480 -640 480 -427 640 -640 428 -640 480 -640 480 -640 480 -612 612 -359 640 -640 478 -640 427 -640 425 -640 426 -428 640 -640 388 -640 480 -480 640 -480 640 -640 427 -640 427 -640 480 -480 640 -640 427 -427 640 -640 311 -640 475 -500 333 -427 640 -640 429 -480 640 -426 640 -640 454 -640 480 -640 426 -571 640 -640 480 -427 640 -640 640 -640 480 -428 640 -640 448 -480 640 -640 428 -640 480 -640 480 -640 427 -480 640 -480 640 -500 375 -640 427 -640 480 -640 464 -500 485 -640 424 -640 480 -640 491 -480 640 -500 404 -640 640 -480 640 -640 427 -640 427 -480 640 -640 480 -640 480 -560 560 -480 640 -640 360 -640 457 -640 480 -612 612 -640 640 -612 612 -640 109 -500 245 -640 427 -640 425 -640 424 -640 480 -612 612 -640 400 -640 427 -500 333 -640 427 -640 424 -426 640 -640 397 -479 640 -640 425 -640 480 -428 640 -640 491 -427 640 -640 480 -492 500 -640 480 -606 640 -640 480 -640 482 -640 427 -333 500 -640 425 -640 424 -375 500 -640 427 -640 360 -640 480 -640 432 -640 457 -640 480 -640 480 -640 547 -640 455 -640 427 -640 479 -640 423 -612 612 -640 427 -500 375 -640 480 -640 427 -640 426 -500 500 -640 428 -640 427 -640 426 -640 425 -480 640 -640 426 -640 427 -640 427 -640 461 -428 640 -640 425 -640 427 -640 429 -640 480 -640 427 -500 281 -407 640 -383 640 -418 640 -500 332 -337 500 -640 547 -500 395 -640 480 -640 361 -612 612 -640 554 -640 427 -466 640 -612 612 -500 369 -640 427 -640 480 -640 480 -640 427 -500 375 -640 480 -640 426 -640 480 -500 375 -640 478 -640 480 -480 640 -579 640 -125 166 -640 426 -640 428 -556 640 -480 640 -634 640 -640 429 -640 480 -640 480 -640 424 -503 640 -480 640 -640 427 -640 360 -640 427 -640 480 -640 480 -640 480 -500 375 -640 427 -600 400 -640 409 -640 427 -640 512 -640 480 -375 500 -640 427 -640 480 -640 427 -640 426 -640 427 -409 640 -640 640 -640 428 -640 480 -640 480 -640 427 -500 333 -480 640 -427 640 -640 640 -425 640 -403 640 -640 427 -612 612 -360 270 -640 427 -640 480 -640 429 -640 427 -425 640 -640 425 -640 480 -576 640 -640 427 -480 360 -458 500 -640 478 -480 640 -640 479 -640 427 -640 480 -640 425 -640 504 -500 295 -375 500 -640 427 -640 399 -500 375 -640 425 -354 500 -640 427 -640 429 -640 479 -640 484 -480 640 -640 427 -500 375 -481 640 -640 407 -480 640 -432 640 -640 480 -500 375 -640 480 -640 514 -640 480 -640 428 -375 500 -640 480 -640 427 -640 480 -640 426 -640 480 -503 640 -640 427 -640 381 -640 480 -375 500 -500 348 -600 600 -640 427 -500 375 -640 426 -500 375 -640 427 -426 640 -640 480 -640 427 -640 428 -640 440 -640 360 -427 640 -640 426 -375 500 -480 640 -427 640 -640 427 -640 353 -500 355 -331 500 -640 480 -427 640 -640 426 -640 444 -492 640 -640 480 -640 421 -640 480 -480 640 -640 480 -640 428 -640 427 -500 333 -640 480 -640 426 -480 640 -480 640 -640 491 -328 500 -640 638 -640 480 -640 474 -640 426 -640 427 -434 640 -427 640 -375 500 -640 480 -640 427 -457 640 -640 426 -375 500 -640 426 -427 640 -640 426 -640 480 -640 426 -640 426 -640 428 -640 480 -640 427 -640 436 -640 426 -480 640 -640 480 -640 480 -640 427 -500 332 -640 401 -500 375 -640 427 -640 428 -517 640 -500 333 -640 480 -640 425 -500 375 -480 640 -640 480 -425 640 -640 426 -640 424 -640 640 -310 640 -640 425 -640 518 -500 375 -612 612 -640 480 -480 640 -640 424 -640 427 -640 480 -428 640 -500 375 -640 427 -640 480 -640 425 -480 640 -480 640 -640 427 -640 427 -640 428 -480 640 -640 480 -640 480 -309 500 -640 480 -640 457 -640 480 -640 480 -640 480 -640 424 -640 480 -640 633 -425 640 -612 612 -640 427 -500 375 -480 640 -640 504 -640 455 -640 480 -324 500 -640 480 -640 426 -640 427 -500 332 -640 408 -640 480 -640 480 -640 427 -640 427 -500 375 -640 480 -640 428 -640 426 -612 612 -640 414 -640 518 -640 359 -640 424 -480 640 -640 480 -500 334 -640 463 -640 412 -500 332 -640 426 -640 427 -640 480 -640 480 -426 640 -500 400 -480 640 -500 375 -448 299 -426 640 -427 640 -500 418 -640 480 -640 427 -640 426 -640 480 -334 500 -640 427 -640 478 -500 333 -500 375 -640 427 -640 435 -640 480 -500 332 -500 379 -640 425 -640 480 -640 480 -640 484 -512 640 -640 480 -480 640 -375 500 -640 426 -640 379 -640 484 -640 426 -640 427 -640 426 -480 640 -333 500 -640 461 -426 640 -640 480 -640 425 -427 640 -500 441 -427 640 -333 500 -640 223 -612 612 -640 480 -500 332 -640 480 -427 640 -640 480 -640 426 -480 640 -612 612 -480 640 -640 428 -640 480 -640 425 -640 480 -640 427 -640 480 -640 426 -640 480 -640 427 -640 496 -640 480 -640 471 -500 375 -640 480 -640 427 -640 480 -427 640 -640 427 -640 427 -640 427 -549 640 -640 640 -640 480 -640 329 -640 480 -640 427 -640 471 -640 480 -640 425 -500 375 -640 483 -375 500 -640 480 -640 427 -640 480 -640 425 -480 640 -640 426 -640 360 -480 640 -640 427 -427 640 -640 383 -640 427 -428 640 -640 427 -600 400 -640 506 -640 640 -640 477 -640 384 -500 333 -640 480 -419 640 -640 480 -640 480 -640 361 -612 612 -480 640 -640 425 -640 359 -634 640 -640 427 -640 427 -500 326 -427 640 -640 426 -375 500 -640 480 -640 480 -640 640 -480 640 -640 480 -640 633 -640 480 -480 640 -640 480 -640 480 -640 480 -640 360 -500 375 -480 640 -640 480 -640 640 -625 640 -640 481 -640 425 -640 425 -565 640 -480 640 -640 427 -426 640 -461 640 -640 480 -640 480 -448 500 -426 640 -375 500 -427 640 -500 375 -640 483 -640 359 -640 475 -640 480 -640 279 -640 480 -480 640 -640 424 -333 500 -612 612 -500 375 -500 358 -640 428 -640 480 -640 480 -640 425 -640 480 -467 640 -640 480 -640 457 -480 640 -640 611 -500 281 -612 612 -640 427 -640 421 -640 480 -480 640 -426 640 -640 640 -640 480 -640 431 -640 480 -640 426 -640 480 -500 500 -640 426 -500 376 -640 360 -410 270 -640 427 -426 640 -470 640 -640 480 -640 444 -332 500 -640 480 -507 640 -480 640 -640 424 -640 480 -427 640 -640 480 -640 480 -500 335 -640 480 -640 427 -640 508 -640 433 -640 466 -499 500 -640 640 -480 640 -640 264 -537 640 -640 480 -640 425 -482 640 -640 533 -640 394 -480 640 -640 359 -640 427 -500 332 -480 640 -640 426 -640 558 -640 425 -640 427 -640 427 -427 640 -427 640 -500 376 -640 428 -640 640 -640 480 -425 640 -640 424 -640 394 -375 500 -640 426 -640 425 -640 480 -640 427 -500 375 -640 318 -640 480 -640 427 -640 427 -640 427 -640 640 -640 424 -640 457 -500 332 -640 480 -640 457 -640 480 -640 432 -640 480 -640 480 -640 480 -612 612 -500 333 -640 480 -640 461 -428 640 -476 500 -640 480 -500 350 -427 640 -640 427 -640 480 -426 640 -480 640 -427 640 -640 480 -640 480 -640 427 -640 480 -640 392 -640 512 -426 640 -500 376 -640 425 -640 426 -640 480 -640 427 -640 480 -640 360 -640 481 -640 460 -640 427 -640 428 -640 427 -640 427 -640 480 -640 480 -640 427 -500 414 -400 300 -478 640 -640 521 -640 426 -640 425 -640 443 -640 427 -448 640 -500 375 -480 640 -640 427 -500 332 -424 640 -480 640 -640 406 -640 426 -359 640 -500 333 -480 640 -640 480 -640 483 -640 426 -640 426 -640 426 -640 424 -640 541 -640 426 -640 480 -500 375 -500 375 -427 640 -640 420 -640 480 -640 427 -612 612 -427 640 -332 500 -640 427 -640 480 -640 516 -640 480 -483 640 -426 640 -640 427 -640 428 -511 640 -640 480 -640 480 -425 640 -640 426 -640 427 -500 375 -500 376 -640 480 -480 640 -640 480 -640 480 -640 480 -640 427 -640 480 -640 480 -426 640 -640 480 -640 425 -612 612 -640 427 -640 427 -640 427 -640 480 -480 640 -426 640 -427 640 -640 427 -500 375 -640 360 -480 640 -640 428 -493 640 -640 480 -478 640 -640 425 -500 375 -640 426 -375 500 -640 480 -501 640 -640 427 -640 361 -640 640 -640 544 -640 425 -640 428 -500 375 -640 425 -427 640 -333 500 -640 428 -640 427 -640 480 -500 332 -640 478 -640 480 -464 640 -500 375 -640 427 -640 427 -480 640 -640 161 -640 480 -640 640 -640 480 -640 427 -640 480 -640 480 -640 480 -640 480 -612 612 -500 375 -640 427 -640 458 -640 425 -640 409 -640 509 -640 460 -640 427 -640 412 -418 500 -640 221 -640 480 -640 427 -428 640 -640 427 -640 549 -500 375 -640 291 -640 426 -480 640 -640 428 -640 425 -640 428 -640 427 -500 375 -640 425 -640 480 -640 480 -480 640 -640 346 -375 500 -423 640 -640 480 -596 640 -640 427 -640 427 -593 640 -640 493 -640 479 -640 480 -640 479 -500 375 -640 426 -300 400 -640 480 -500 375 -640 424 -480 640 -640 429 -456 640 -375 500 -640 426 -504 640 -640 480 -640 456 -640 492 -500 375 -640 471 -480 640 -480 640 -640 359 -640 480 -640 427 -426 640 -375 500 -640 480 -500 382 -640 480 -427 640 -640 480 -427 640 -640 480 -640 429 -640 480 -640 480 -640 424 -640 480 -640 480 -640 428 -500 334 -640 480 -640 480 -480 640 -640 507 -640 478 -640 460 -640 426 -640 403 -480 640 -640 427 -640 427 -427 640 -640 427 -640 416 -427 640 -300 225 -640 423 -332 500 -640 458 -500 357 -640 480 -612 612 -640 383 -640 350 -640 480 -309 640 -640 480 -640 426 -640 511 -459 640 -549 640 -640 428 -640 480 -640 480 -426 640 -640 384 -640 425 -640 444 -640 426 -640 480 -640 480 -480 640 -640 480 -640 480 -640 427 -640 427 -640 416 -640 479 -500 375 -640 480 -640 480 -640 480 -640 360 -640 402 -481 640 -640 480 -334 500 -640 480 -640 480 -640 480 -640 427 -640 360 -640 427 -480 640 -612 612 -640 427 -640 428 -640 427 -550 640 -612 612 -640 427 -375 500 -500 333 -500 375 -480 640 -640 427 -640 428 -640 480 -427 640 -640 426 -640 480 -478 640 -480 640 -640 480 -640 480 -640 428 -640 480 -640 480 -640 512 -640 480 -500 375 -640 427 -640 428 -480 640 -640 428 -576 384 -640 480 -640 480 -640 480 -423 640 -640 380 -640 436 -334 500 -427 640 -640 427 -640 480 -426 640 -480 640 -640 453 -375 500 -640 426 -408 640 -640 428 -640 424 -427 640 -640 484 -598 415 -640 425 -640 427 -640 480 -640 430 -640 427 -640 480 -640 480 -500 375 -640 428 -640 427 -426 640 -640 438 -450 640 -640 389 -482 640 -480 640 -640 442 -640 448 -500 334 -640 640 -640 421 -500 333 -628 640 -500 392 -640 480 -500 375 -500 333 -426 640 -640 425 -640 427 -640 427 -640 427 -500 375 -628 640 -640 480 -333 500 -640 480 -500 313 -640 427 -640 480 -640 426 -640 480 -640 424 -640 393 -640 426 -640 480 -640 427 -612 612 -500 375 -500 333 -500 375 -480 640 -640 427 -427 640 -480 640 -640 427 -500 250 -640 426 -640 480 -640 480 -640 427 -440 640 -426 640 -480 640 -640 480 -425 283 -640 401 -640 480 -640 427 -640 423 -425 640 -493 640 -640 430 -640 427 -640 406 -375 500 -640 504 -612 612 -500 375 -640 480 -640 458 -640 365 -640 428 -375 500 -640 480 -500 375 -640 480 -428 640 -640 408 -640 480 -500 375 -640 480 -606 400 -640 425 -428 640 -480 640 -640 480 -427 640 -640 426 -640 424 -375 500 -640 425 -640 486 -640 427 -500 430 -640 640 -640 640 -640 480 -640 543 -640 480 -640 480 -640 427 -640 427 -640 640 -640 427 -640 426 -640 541 -640 461 -640 427 -640 480 -640 427 -640 612 -612 612 -640 536 -427 640 -640 427 -640 459 -427 640 -640 418 -500 375 -358 640 -333 500 -427 640 -640 427 -640 427 -410 423 -427 640 -640 425 -640 360 -640 479 -640 480 -640 425 -640 427 -640 426 -640 427 -554 640 -640 414 -640 480 -640 480 -431 640 -640 480 -480 640 -640 446 -427 640 -640 373 -612 612 -640 480 -640 360 -409 640 -427 640 -640 480 -640 480 -426 640 -640 480 -640 412 -640 380 -640 426 -332 500 -640 426 -425 640 -500 375 -640 480 -500 333 -640 358 -640 427 -640 427 -427 640 -480 640 -612 612 -500 281 -640 427 -640 365 -500 375 -640 480 -640 480 -426 640 -471 640 -640 426 -640 480 -480 640 -500 375 -480 640 -480 640 -640 427 -640 427 -480 640 -640 426 -640 427 -640 480 -640 480 -640 428 -640 480 -640 480 -425 640 -640 494 -640 427 -640 480 -640 480 -640 480 -640 427 -640 426 -640 480 -640 426 -426 640 -640 480 -640 360 -480 640 -640 440 -640 480 -640 425 -500 375 -640 427 -457 640 -640 478 -640 427 -640 427 -640 427 -640 480 -553 640 -426 640 -640 433 -425 640 -640 472 -427 640 -427 640 -640 424 -640 427 -500 400 -640 456 -640 427 -500 332 -640 640 -428 640 -426 640 -480 640 -612 612 -640 427 -640 427 -606 640 -640 575 -640 426 -640 480 -640 480 -640 426 -640 480 -640 426 -640 480 -640 423 -640 480 -640 427 -640 480 -640 480 -352 500 -640 480 -640 360 -640 479 -640 413 -290 438 -427 640 -640 480 -375 500 -425 640 -640 480 -640 514 -640 360 -640 426 -480 640 -640 640 -640 370 -640 480 -500 434 -500 375 -427 640 -480 640 -640 427 -640 549 -640 426 -640 426 -640 427 -640 455 -640 424 -500 375 -427 640 -640 480 -640 425 -600 600 -426 640 -640 519 -640 480 -640 427 -640 480 -334 500 -640 355 -640 427 -500 334 -429 640 -640 480 -640 480 -500 375 -640 426 -331 500 -640 449 -500 375 -640 426 -640 424 -640 480 -640 427 -640 480 -640 460 -640 629 -428 640 -640 480 -640 448 -480 640 -500 332 -640 425 -428 640 -461 640 -640 480 -500 375 -640 423 -640 368 -332 500 -480 640 -640 432 -640 640 -640 427 -612 612 -333 500 -640 480 -640 480 -385 500 -500 281 -512 640 -640 526 -640 429 -480 640 -500 375 -640 426 -480 640 -480 640 -607 640 -640 479 -427 640 -640 431 -640 480 -640 480 -640 425 -640 480 -640 426 -640 480 -640 426 -640 480 -640 640 -640 426 -480 640 -427 640 -640 480 -640 427 -640 480 -640 480 -640 424 -640 480 -640 424 -640 480 -640 427 -640 364 -640 480 -640 427 -640 456 -640 427 -281 500 -480 640 -320 212 -480 640 -640 429 -640 428 -640 364 -640 418 -640 427 -640 478 -640 439 -640 426 -640 426 -640 427 -640 480 -500 446 -640 480 -640 480 -640 427 -478 640 -640 426 -640 386 -640 433 -375 500 -640 480 -500 333 -640 424 -480 640 -500 375 -640 480 -429 640 -500 375 -500 358 -640 480 -640 458 -480 640 -640 444 -640 481 -640 480 -487 500 -640 480 -480 640 -355 500 -640 360 -425 640 -333 500 -640 480 -375 500 -640 427 -640 426 -640 563 -500 371 -640 454 -640 425 -640 426 -640 427 -640 480 -500 334 -428 640 -640 481 -640 480 -640 480 -500 396 -640 440 -426 640 -438 640 -427 640 -456 640 -640 427 -640 480 -640 480 -640 427 -640 448 -500 332 -640 424 -640 480 -533 640 -375 500 -640 480 -640 439 -428 640 -612 612 -500 375 -640 480 -640 480 -480 640 -500 398 -640 437 -640 481 -640 480 -640 480 -640 480 -640 427 -458 640 -458 640 -640 427 -640 386 -500 375 -640 480 -480 640 -640 427 -640 480 -640 500 -640 437 -640 463 -427 640 -640 640 -612 612 -640 427 -612 612 -612 612 -640 428 -640 425 -640 463 -355 500 -640 480 -500 279 -640 424 -500 375 -640 425 -500 320 -640 410 -640 480 -640 427 -640 427 -640 480 -292 500 -640 427 -640 426 -480 640 -500 375 -500 333 -640 480 -640 427 -640 427 -500 375 -640 427 -500 307 -640 360 -640 428 -640 480 -640 359 -640 423 -640 424 -640 480 -640 480 -640 424 -640 427 -640 449 -640 383 -640 640 -640 426 -640 517 -426 640 -500 333 -426 640 -640 478 -640 426 -640 478 -443 640 -640 425 -426 640 -427 640 -480 640 -375 500 -640 480 -640 427 -375 500 -640 165 -480 640 -640 427 -640 480 -640 427 -640 480 -640 379 -640 425 -640 480 -640 389 -640 427 -640 427 -396 640 -375 500 -441 640 -640 480 -640 480 -640 480 -640 478 -289 500 -640 480 -640 435 -640 426 -640 480 -640 288 -500 333 -600 451 -640 480 -480 640 -640 480 -500 375 -640 640 -640 480 -640 427 -425 640 -640 427 -640 427 -600 252 -640 424 -640 640 -640 426 -640 427 -640 426 -500 440 -424 640 -480 640 -640 480 -424 640 -640 480 -640 427 -640 480 -640 427 -640 480 -436 640 -640 427 -512 640 -640 181 -640 426 -427 640 -500 375 -612 612 -640 512 -640 496 -640 427 -640 388 -640 480 -427 640 -500 375 -640 428 -640 481 -640 632 -640 480 -640 480 -640 512 -481 640 -640 480 -640 425 -427 640 -640 428 -480 320 -333 500 -640 427 -640 480 -640 428 -425 640 -480 640 -640 408 -640 480 -640 427 -337 640 -500 375 -500 333 -500 375 -640 480 -640 413 -640 424 -640 480 -640 426 -640 588 -480 640 -500 333 -427 640 -640 425 -500 375 -500 281 -480 245 -373 299 -640 480 -427 640 -640 427 -640 431 -640 425 -500 375 -603 640 -479 640 -612 612 -640 427 -640 488 -640 480 -640 333 -640 428 -457 640 -640 480 -640 427 -640 480 -500 375 -427 640 -500 375 -469 640 -640 429 -480 640 -640 425 -427 640 -640 424 -640 482 -640 427 -640 423 -640 480 -426 640 -335 500 -640 559 -640 428 -479 640 -640 480 -640 426 -640 480 -640 480 -640 426 -640 468 -480 640 -375 500 -640 480 -640 480 -480 640 -640 427 -640 427 -375 500 -640 326 -640 480 -480 640 -640 480 -521 640 -640 480 -640 426 -640 480 -640 476 -612 612 -500 375 -428 640 -640 480 -640 424 -480 640 -640 427 -640 428 -640 425 -640 427 -500 375 -640 424 -640 481 -640 480 -640 427 -640 423 -640 425 -534 640 -640 480 -393 640 -640 425 -640 480 -640 480 -480 640 -640 419 -640 458 -640 483 -640 426 -500 375 -640 361 -640 480 -640 430 -640 426 -640 426 -640 480 -500 375 -640 480 -640 480 -427 640 -500 333 -427 640 -640 476 -640 426 -640 480 -640 429 -640 426 -640 433 -479 640 -640 427 -400 640 -427 640 -640 480 -640 428 -640 427 -480 640 -500 375 -640 421 -640 427 -500 315 -500 333 -640 427 -500 375 -480 640 -640 426 -612 612 -640 425 -333 500 -500 336 -640 424 -612 612 -640 426 -640 480 -427 640 -640 360 -640 427 -640 427 -427 640 -640 275 -419 640 -640 480 -500 375 -640 428 -500 333 -480 640 -640 480 -427 640 -640 480 -369 640 -640 414 -640 480 -640 427 -375 500 -454 640 -560 640 -640 427 -640 480 -640 425 -640 457 -640 479 -480 640 -424 640 -640 425 -640 428 -640 480 -480 640 -640 426 -640 480 -640 427 -427 640 -640 427 -459 640 -640 480 -640 425 -375 500 -640 466 -640 480 -500 347 -640 426 -640 448 -458 640 -375 500 -436 640 -640 360 -391 640 -460 500 -640 427 -500 375 -640 480 -500 375 -500 332 -317 500 -639 640 -512 640 -640 427 -428 640 -473 640 -480 640 -427 640 -640 427 -640 480 -640 478 -426 640 -480 640 -640 434 -640 479 -640 480 -640 480 -500 341 -640 480 -640 480 -500 375 -640 427 -640 425 -395 640 -640 480 -640 375 -640 480 -640 428 -640 560 -640 640 -640 480 -500 333 -640 395 -640 448 -510 640 -640 424 -500 334 -640 515 -480 640 -640 480 -500 375 -405 640 -640 416 -640 513 -640 466 -471 640 -640 398 -640 480 -450 338 -640 433 -640 427 -640 480 -640 428 -640 486 -640 478 -640 427 -640 438 -427 640 -640 427 -640 480 -500 470 -480 640 -428 640 -400 640 -640 375 -500 375 -333 500 -640 424 -640 427 -640 427 -640 480 -500 375 -640 400 -640 443 -500 376 -640 527 -640 480 -480 640 -500 333 -640 480 -640 426 -640 358 -480 640 -640 436 -640 480 -500 333 -610 427 -640 480 -425 640 -375 500 -640 427 -640 640 -640 511 -640 426 -612 612 -640 478 -640 480 -640 422 -640 428 -640 480 -448 336 -500 375 -640 480 -640 473 -640 478 -640 427 -427 640 -500 375 -640 480 -640 426 -375 500 -640 480 -424 640 -480 640 -640 425 -640 480 -640 480 -640 426 -640 427 -500 375 -640 384 -640 480 -640 522 -640 428 -640 360 -640 549 -640 427 -640 427 -480 640 -640 421 -500 331 -640 480 -500 315 -640 480 -640 427 -480 640 -640 493 -640 480 -640 359 -480 640 -640 427 -427 640 -640 361 -640 480 -640 480 -500 327 -640 427 -640 453 -426 640 -480 640 -640 427 -370 500 -640 536 -500 403 -640 480 -150 200 -640 640 -448 600 -481 640 -640 427 -480 640 -427 640 -640 320 -500 301 -640 427 -480 640 -612 612 -640 480 -640 428 -640 427 -640 458 -375 500 -640 427 -640 480 -500 333 -640 429 -480 640 -640 478 -640 480 -640 480 -640 480 -640 480 -480 640 -500 375 -640 427 -640 427 -640 426 -640 425 -640 427 -640 640 -500 375 -612 612 -500 375 -480 640 -640 428 -425 251 -640 206 -640 424 -480 640 -640 473 -420 169 -640 480 -640 427 -640 480 -640 429 -640 452 -481 640 -427 640 -621 640 -425 640 -427 640 -640 399 -640 467 -640 456 -640 428 -427 640 -640 480 -640 427 -500 375 -640 425 -640 330 -640 640 -640 427 -640 480 -640 442 -640 480 -386 500 -640 426 -612 612 -640 511 -640 428 -640 426 -500 375 -640 383 -640 427 -427 640 -464 500 -640 427 -640 512 -633 640 -640 218 -500 375 -640 427 -640 480 -500 375 -640 606 -640 480 -640 457 -640 429 -640 481 -500 397 -640 480 -640 423 -480 640 -640 480 -640 426 -640 427 -428 640 -480 640 -500 339 -500 375 -480 640 -640 426 -640 480 -640 466 -427 640 -500 269 -640 429 -640 427 -426 640 -429 640 -640 480 -640 424 -640 427 -640 432 -640 480 -640 426 -640 481 -480 640 -640 426 -640 480 -640 480 -500 333 -426 640 -500 333 -640 480 -375 500 -480 640 -640 427 -427 640 -640 427 -640 480 -640 512 -640 484 -612 612 -640 480 -407 640 -640 554 -640 427 -640 429 -640 480 -640 425 -612 612 -640 425 -640 478 -603 640 -480 640 -640 418 -500 375 -640 385 -480 640 -640 480 -500 375 -640 478 -640 480 -428 640 -480 640 -336 500 -480 640 -640 428 -500 375 -640 629 -640 459 -640 425 -480 640 -640 480 -640 461 -640 480 -640 480 -640 480 -640 480 -500 375 -500 375 -408 500 -480 640 -640 528 -640 480 -640 428 -480 640 -640 617 -425 640 -500 376 -500 424 -500 333 -333 500 -640 426 -640 449 -640 427 -640 427 -640 480 -640 481 -640 480 -640 480 -640 480 -640 480 -640 480 -500 333 -640 359 -480 640 -447 640 -451 640 -640 640 -640 376 -479 640 -640 427 -640 427 -500 333 -640 426 -500 375 -640 480 -334 500 -427 640 -640 427 -640 480 -640 420 -612 612 -640 426 -640 480 -640 609 -612 612 -640 480 -640 466 -403 640 -500 336 -640 425 -360 265 -640 480 -640 480 -640 480 -640 476 -640 480 -500 375 -640 480 -640 480 -640 425 -480 640 -640 480 -640 478 -640 480 -640 480 -640 480 -427 640 -500 375 -640 480 -640 426 -640 424 -640 427 -640 472 -640 480 -281 500 -500 333 -640 429 -640 480 -640 434 -500 375 -640 427 -640 640 -640 364 -640 480 -500 500 -640 439 -500 371 -640 640 -424 640 -500 395 -640 480 -427 640 -640 357 -640 480 -640 424 -640 480 -359 640 -640 512 -640 426 -640 480 -640 573 -640 480 -640 427 -426 640 -640 360 -640 426 -640 480 -640 480 -640 425 -640 428 -612 612 -612 612 -640 400 -480 640 -640 480 -427 640 -640 480 -640 627 -640 516 -640 427 -640 427 -640 480 -640 424 -640 427 -500 333 -640 480 -500 375 -500 333 -612 612 -640 480 -480 640 -500 375 -640 480 -640 427 -640 419 -500 375 -640 425 -640 480 -480 640 -640 428 -640 464 -612 612 -640 480 -640 427 -640 480 -489 640 -640 480 -640 459 -427 640 -640 376 -640 427 -640 480 -640 512 -640 427 -640 392 -342 500 -640 480 -640 480 -640 426 -640 480 -640 425 -640 478 -640 480 -640 351 -333 500 -640 427 -640 480 -604 640 -640 480 -512 640 -640 481 -640 480 -500 485 -457 640 -640 480 -640 427 -640 427 -640 427 -640 480 -640 426 -480 640 -480 640 -640 480 -640 480 -480 640 -480 320 -640 334 -500 375 -640 427 -640 480 -423 640 -640 453 -480 640 -586 640 -640 480 -500 329 -640 480 -375 500 -640 476 -500 311 -640 458 -427 640 -452 640 -500 373 -640 640 -333 500 -612 612 -640 480 -640 428 -640 427 -500 333 -640 426 -426 640 -640 425 -426 640 -640 427 -421 640 -640 640 -500 336 -640 480 -335 500 -640 480 -333 500 -640 428 -406 640 -640 462 -640 480 -640 480 -640 428 -640 427 -640 427 -640 480 -321 640 -612 612 -612 612 -500 375 -480 640 -640 480 -640 425 -612 612 -480 640 -640 427 -390 640 -426 640 -640 427 -640 480 -500 375 -640 480 -640 402 -500 375 -480 640 -640 480 -640 427 -640 480 -640 429 -640 427 -640 425 -640 480 -640 428 -371 640 -640 486 -640 480 -640 480 -427 640 -640 428 -480 640 -500 375 -640 480 -640 420 -480 640 -640 427 -640 428 -500 375 -612 612 -640 480 -439 640 -640 474 -640 428 -435 580 -640 640 -480 640 -333 500 -640 480 -427 640 -333 500 -640 480 -640 426 -480 640 -640 306 -640 427 -640 359 -480 640 -424 640 -480 640 -640 427 -640 427 -640 427 -640 480 -640 480 -424 640 -640 480 -640 492 -640 425 -500 375 -486 640 -640 501 -427 640 -500 375 -427 640 -640 427 -446 500 -455 640 -640 426 -640 480 -361 640 -500 334 -427 640 -640 461 -640 427 -640 480 -640 427 -640 480 -500 500 -640 323 -640 428 -640 480 -640 480 -640 340 -640 428 -640 488 -447 500 -500 355 -480 640 -480 360 -480 640 -359 640 -480 640 -640 422 -640 480 -640 433 -640 496 -640 480 -640 425 -425 640 -640 394 -640 427 -640 480 -640 426 -640 480 -640 427 -640 428 -500 400 -480 640 -640 401 -353 500 -640 426 -338 500 -640 427 -480 640 -480 640 -640 426 -428 640 -480 640 -500 333 -640 484 -357 500 -640 480 -640 480 -640 480 -640 426 -375 500 -334 500 -640 480 -427 640 -640 427 -640 360 -640 480 -640 480 -640 480 -640 427 -426 640 -640 512 -640 428 -640 432 -640 426 -640 426 -640 480 -640 427 -426 640 -425 392 -640 476 -640 480 -640 427 -500 375 -375 500 -500 375 -640 426 -500 382 -640 480 -640 640 -480 640 -640 480 -603 640 -640 425 -320 240 -480 640 -480 640 -375 500 -640 471 -427 640 -500 335 -640 480 -640 480 -640 640 -427 640 -640 426 -640 427 -426 640 -640 481 -640 401 -500 375 -482 640 -640 480 -352 288 -640 512 -500 485 -640 498 -640 422 -640 480 -427 640 -427 640 -426 640 -374 500 -500 332 -640 493 -375 500 -640 480 -429 640 -640 470 -640 480 -640 623 -640 361 -500 383 -640 480 -640 425 -640 427 -640 426 -640 359 -424 640 -640 480 -640 480 -640 427 -640 423 -480 640 -640 427 -640 428 -640 427 -438 640 -640 426 -640 480 -640 480 -640 427 -640 427 -500 333 -640 480 -640 480 -640 480 -640 427 -480 640 -640 428 -640 427 -640 427 -640 427 -640 427 -640 427 -640 426 -640 427 -640 425 -640 480 -640 480 -640 427 -640 426 -424 640 -500 375 -640 427 -640 375 -566 640 -640 480 -640 425 -427 640 -640 480 -612 612 -640 480 -640 480 -640 480 -640 427 -424 640 -640 480 -640 480 -640 480 -640 480 -612 612 -427 640 -640 480 -640 640 -480 640 -640 480 -640 480 -640 415 -612 612 -640 425 -640 439 -640 480 -640 512 -640 428 -640 480 -640 427 -640 542 -640 480 -640 461 -640 480 -427 640 -640 480 -426 640 -478 640 -500 375 -332 500 -640 480 -640 427 -640 480 -640 426 -640 575 -640 480 -640 387 -640 426 -640 480 -612 612 -640 428 -351 500 -640 427 -480 640 -640 424 -640 360 -480 640 -480 640 -640 417 -500 380 -640 480 -480 640 -480 640 -640 427 -612 612 -640 480 -500 333 -640 465 -640 426 -640 426 -310 500 -640 480 -640 431 -480 640 -640 480 -500 375 -640 480 -338 409 -640 416 -640 414 -640 427 -640 426 -640 424 -369 640 -640 640 -640 427 -640 427 -640 480 -640 480 -640 427 -640 496 -612 612 -427 640 -427 640 -427 640 -640 394 -640 404 -640 424 -480 640 -640 427 -427 640 -610 406 -640 427 -301 290 -640 427 -640 462 -640 428 -480 640 -640 480 -612 612 -640 480 -640 480 -612 612 -640 480 -500 375 -333 500 -640 427 -640 458 -640 480 -500 335 -640 480 -427 640 -640 480 -333 500 -588 640 -640 478 -480 640 -640 427 -640 427 -427 640 -640 429 -640 480 -640 426 -500 333 -640 480 -640 427 -640 480 -640 480 -640 428 -425 640 -375 500 -640 480 -640 359 -640 480 -640 471 -640 480 -640 427 -640 480 -640 640 -480 640 -640 424 -640 489 -640 494 -480 640 -375 500 -640 427 -480 640 -362 640 -500 375 -480 640 -427 640 -640 480 -640 427 -479 640 -500 375 -426 640 -640 425 -640 428 -640 428 -640 427 -640 426 -640 480 -640 428 -480 640 -640 480 -640 480 -480 640 -640 201 -640 480 -480 640 -640 480 -640 434 -500 375 -640 429 -423 640 -427 640 -640 480 -640 425 -640 409 -640 480 -640 480 -640 433 -640 430 -480 640 -640 435 -640 426 -640 480 -640 360 -500 375 -640 427 -640 461 -640 426 -640 480 -640 480 -640 359 -500 334 -640 480 -640 480 -640 512 -640 343 -640 483 -640 336 -640 426 -640 480 -640 427 -640 424 -640 466 -500 332 -612 612 -640 361 -500 305 -640 465 -640 480 -492 500 -640 480 -640 473 -640 409 -640 480 -640 428 -640 427 -640 486 -465 640 -640 425 -640 496 -640 513 -640 348 -500 500 -640 512 -478 640 -640 480 -640 427 -413 640 -640 419 -640 426 -500 375 -640 428 -640 349 -427 640 -640 430 -640 480 -374 500 -640 481 -500 375 -640 480 -640 427 -640 427 -640 426 -640 426 -640 409 -640 480 -640 480 -500 382 -480 640 -640 425 -640 480 -640 428 -640 480 -480 640 -640 427 -500 333 -640 480 -640 480 -428 640 -640 383 -640 480 -640 600 -640 424 -500 375 -480 640 -640 429 -500 334 -500 375 -640 359 -640 430 -480 640 -640 459 -640 427 -640 294 -375 500 -480 640 -640 481 -640 427 -612 612 -640 425 -640 428 -500 346 -640 427 -640 427 -640 480 -640 480 -640 426 -375 500 -480 640 -427 640 -640 426 -500 333 -375 500 -424 640 -640 429 -640 427 -424 640 -640 425 -640 480 -640 380 -640 419 -640 480 -640 359 -640 464 -640 428 -640 427 -640 427 -481 640 -640 414 -500 373 -640 427 -640 426 -418 640 -640 426 -416 640 -640 480 -640 427 -640 462 -640 480 -640 481 -640 360 -640 359 -427 640 -640 426 -426 640 -640 427 -640 425 -640 482 -481 640 -612 612 -640 424 -524 640 -640 427 -640 427 -640 480 -480 640 -640 439 -640 341 -360 640 -640 429 -640 480 -500 375 -480 640 -640 427 -640 379 -640 424 -480 320 -427 640 -640 360 -640 427 -640 480 -427 640 -640 480 -640 480 -479 640 -640 480 -640 427 -428 640 -640 426 -429 640 -640 425 -640 427 -478 640 -640 480 -640 427 -480 640 -640 530 -640 427 -480 640 -480 640 -640 480 -640 480 -640 426 -425 640 -640 427 -640 480 -640 427 -640 480 -480 640 -640 429 -600 400 -640 428 -426 640 -640 480 -640 480 -427 640 -427 640 -462 640 -360 270 -364 500 -640 640 -612 612 -640 480 -640 480 -480 498 -500 382 -640 427 -612 612 -640 422 -640 426 -500 333 -640 427 -640 561 -640 480 -431 640 -640 480 -640 480 -480 640 -480 640 -640 480 -640 480 -640 432 -640 480 -500 375 -640 480 -640 483 -480 640 -480 640 -480 640 -640 185 -640 424 -640 480 -500 375 -640 480 -480 640 -640 426 -640 427 -427 640 -640 426 -500 476 -426 640 -480 640 -500 273 -480 640 -640 429 -427 640 -500 300 -500 400 -498 640 -640 480 -640 480 -640 480 -640 640 -640 480 -640 426 -375 500 -640 480 -640 425 -427 640 -640 480 -375 500 -640 427 -500 334 -640 429 -427 640 -480 640 -640 427 -640 428 -375 500 -526 640 -500 375 -640 480 -640 480 -640 423 -612 612 -640 452 -640 496 -500 375 -500 375 -383 640 -500 375 -640 427 -612 612 -640 480 -640 480 -612 612 -479 640 -640 430 -640 266 -424 640 -640 480 -640 480 -375 500 -500 333 -565 640 -640 480 -427 640 -500 375 -640 480 -425 640 -640 480 -640 480 -640 427 -640 480 -640 443 -500 583 -640 359 -480 640 -640 479 -640 480 -612 612 -640 427 -478 640 -640 480 -427 640 -640 427 -640 427 -640 427 -640 427 -640 489 -640 640 -640 480 -640 454 -640 360 -500 375 -640 427 -640 360 -640 523 -478 640 -425 640 -640 427 -423 500 -640 427 -425 283 -480 640 -640 376 -500 375 -426 640 -428 640 -640 480 -640 400 -640 427 -640 427 -640 431 -424 640 -640 480 -640 640 -500 333 -490 640 -640 480 -373 640 -640 480 -500 375 -640 426 -640 480 -640 480 -640 480 -640 426 -640 471 -640 426 -640 427 -640 427 -375 500 -640 427 -640 426 -426 640 -640 478 -640 480 -640 397 -480 640 -640 424 -640 428 -427 640 -480 640 -480 640 -640 480 -640 427 -640 480 -640 360 -640 512 -640 436 -640 428 -640 477 -434 640 -640 480 -500 375 -640 348 -640 480 -640 480 -640 480 -500 375 -427 640 -640 426 -424 640 -640 511 -640 433 -640 512 -640 411 -640 427 -640 480 -640 427 -640 427 -640 444 -640 480 -640 480 -640 427 -334 500 -640 354 -640 480 -500 332 -640 480 -640 427 -330 450 -640 427 -427 640 -640 480 -450 394 -480 640 -640 480 -361 640 -640 430 -640 480 -640 469 -640 480 -640 424 -640 429 -640 640 -640 478 -500 446 -375 500 -426 640 -612 612 -491 640 -500 333 -640 480 -640 484 -500 333 -640 480 -640 480 -640 393 -640 480 -640 480 -640 480 -500 375 -500 333 -640 480 -640 480 -500 429 -500 375 -640 480 -384 500 -425 640 -640 427 -640 428 -640 480 -640 480 -640 427 -640 480 -640 480 -640 480 -640 426 -480 640 -428 640 -428 640 -612 612 -427 640 -640 480 -640 428 -427 640 -427 640 -640 439 -640 426 -480 640 -426 640 -640 427 -640 478 -640 426 -640 428 -640 480 -640 427 -640 436 -640 480 -640 383 -640 512 -612 612 -500 334 -640 428 -640 363 -640 426 -640 426 -640 480 -640 427 -640 425 -640 458 -640 480 -640 358 -640 480 -500 333 -640 447 -640 320 -384 640 -640 427 -500 640 -640 428 -640 427 -383 640 -427 640 -427 640 -640 480 -640 363 -640 393 -494 640 -500 331 -640 427 -612 612 -640 480 -640 434 -640 480 -640 427 -500 375 -640 427 -500 375 -640 480 -640 424 -640 480 -640 427 -640 427 -640 483 -640 480 -640 480 -480 640 -640 426 -500 333 -480 640 -640 480 -640 480 -428 640 -500 335 -612 612 -640 480 -559 640 -640 481 -500 375 -431 640 -640 480 -640 425 -640 427 -500 333 -479 640 -640 480 -640 427 -640 480 -640 427 -640 480 -640 425 -640 412 -640 452 -640 480 -640 427 -640 640 -480 640 -640 473 -480 640 -375 500 -640 480 -640 480 -640 480 -640 426 -640 480 -500 335 -640 480 -640 427 -480 640 -451 640 -640 427 -480 640 -640 480 -640 425 -640 426 -640 427 -429 640 -640 429 -426 640 -640 424 -640 480 -640 480 -640 424 -640 452 -640 427 -640 480 -640 480 -640 427 -640 480 -425 640 -640 360 -427 640 -640 425 -640 427 -640 427 -640 344 -640 433 -359 640 -427 640 -500 333 -480 640 -448 640 -640 427 -640 427 -640 426 -640 438 -640 480 -480 640 -640 426 -640 361 -640 500 -640 428 -640 478 -640 480 -500 333 -427 640 -640 428 -640 360 -640 427 -478 640 -332 500 -640 480 -640 427 -640 480 -480 640 -640 427 -498 640 -640 466 -640 474 -333 500 -640 480 -426 640 -640 628 -500 334 -640 427 -640 427 -640 480 -640 427 -640 425 -421 210 -500 333 -640 427 -640 392 -640 428 -640 480 -640 480 -640 480 -640 426 -387 387 -640 493 -640 463 -426 640 -640 480 -480 640 -640 640 -640 426 -640 640 -500 419 -409 640 -640 480 -480 640 -640 480 -640 481 -640 428 -640 426 -640 480 -640 480 -640 516 -375 500 -500 375 -500 375 -480 640 -640 391 -640 480 -480 640 -640 427 -640 480 -427 640 -526 640 -640 425 -640 480 -640 436 -640 508 -612 612 -500 375 -500 333 -640 429 -480 318 -480 640 -480 640 -640 427 -640 428 -640 467 -500 375 -640 428 -427 640 -640 449 -323 500 -640 437 -480 640 -640 480 -640 478 -480 640 -500 336 -640 480 -425 640 -612 612 -478 640 -612 612 -426 640 -640 604 -640 483 -640 478 -640 431 -640 481 -640 480 -425 640 -640 424 -557 640 -480 640 -640 456 -640 480 -640 424 -480 640 -480 640 -640 427 -320 240 -640 428 -640 640 -640 259 -640 360 -640 427 -640 494 -640 480 -427 640 -427 640 -360 360 -480 640 -640 480 -640 480 -640 463 -640 480 -427 640 -640 425 -640 424 -640 480 -640 640 -640 428 -640 425 -640 425 -640 480 -640 480 -640 480 -640 424 -640 440 -640 480 -640 480 -640 426 -500 393 -640 480 -640 480 -480 640 -640 430 -480 640 -500 335 -500 333 -481 640 -500 375 -640 427 -640 564 -640 480 -426 640 -640 426 -640 480 -463 640 -640 480 -640 480 -612 612 -500 375 -640 427 -640 496 -640 427 -478 640 -640 427 -640 427 -375 500 -640 427 -500 375 -359 640 -640 351 -640 421 -480 640 -640 426 -640 427 -640 428 -640 639 -640 480 -640 378 -480 640 -640 424 -640 427 -480 640 -480 640 -500 373 -427 640 -640 480 -640 480 -500 375 -640 480 -640 432 -640 506 -640 427 -640 480 -480 640 -640 480 -480 640 -640 480 -640 487 -640 481 -480 640 -640 427 -640 426 -640 524 -500 333 -426 640 -640 480 -450 640 -640 528 -640 532 -640 463 -640 416 -640 480 -640 480 -640 468 -335 500 -640 480 -375 500 -614 640 -640 427 -640 479 -640 452 -640 427 -500 375 -640 427 -500 417 -640 481 -375 500 -640 480 -640 480 -640 480 -640 427 -506 640 -640 426 -640 480 -640 428 -480 640 -640 480 -640 480 -640 480 -640 427 -500 392 -640 504 -640 427 -480 640 -640 427 -640 428 -480 640 -640 426 -640 481 -640 434 -640 480 -375 500 -640 480 -640 480 -480 640 -640 451 -640 426 -640 480 -640 480 -640 640 -446 640 -640 426 -640 360 -500 333 -500 394 -640 426 -427 640 -640 427 -640 640 -640 480 -640 427 -640 480 -640 513 -426 640 -500 333 -640 480 -640 480 -480 640 -640 426 -480 640 -500 333 -333 500 -640 480 -640 426 -640 427 -640 428 -480 640 -640 426 -640 480 -640 479 -500 368 -415 640 -426 640 -640 426 -526 640 -640 480 -640 480 -500 302 -425 640 -426 640 -640 480 -458 640 -374 500 -630 640 -640 425 -640 480 -427 640 -640 427 -640 480 -640 480 -480 640 -640 480 -640 480 -640 427 -640 480 -640 480 -426 640 -640 424 -534 640 -428 640 -640 427 -500 375 -640 425 -640 496 -640 360 -640 480 -640 428 -640 480 -640 478 -424 640 -640 497 -640 427 -640 480 -640 564 -640 428 -480 640 -640 468 -500 333 -500 333 -640 428 -640 427 -441 640 -427 640 -500 375 -640 481 -640 480 -640 427 -486 640 -640 480 -640 428 -640 426 -612 612 -640 480 -640 427 -640 480 -427 640 -640 418 -332 500 -640 425 -640 480 -640 394 -640 480 -500 374 -500 500 -612 612 -427 640 -425 640 -427 640 -640 480 -640 480 -640 444 -612 612 -640 427 -640 430 -640 426 -500 333 -640 480 -640 426 -612 612 -478 640 -640 426 -394 500 -451 500 -425 640 -640 427 -426 640 -640 424 -424 640 -480 640 -480 640 -640 480 -640 428 -640 504 -640 424 -640 554 -640 480 -428 640 -500 375 -609 640 -640 439 -640 360 -640 561 -480 640 -478 640 -500 375 -481 640 -640 483 -421 640 -640 427 -518 640 -480 640 -640 480 -640 466 -640 394 -426 640 -480 640 -640 491 -640 426 -640 480 -500 375 -427 640 -640 440 -500 375 -480 640 -640 480 -640 502 -427 640 -511 640 -612 612 -640 439 -640 428 -640 426 -640 427 -425 640 -640 427 -469 640 -640 427 -480 640 -480 640 -640 426 -500 333 -640 404 -447 500 -640 427 -640 421 -500 334 -512 640 -640 427 -426 640 -640 480 -640 457 -427 640 -440 640 -427 640 -640 480 -426 640 -640 427 -640 426 -500 375 -500 500 -640 429 -640 427 -640 413 -375 500 -640 427 -480 640 -640 639 -640 480 -500 375 -640 480 -426 640 -427 640 -427 640 -640 427 -334 500 -640 428 -640 427 -640 480 -640 426 -427 640 -640 427 -500 375 -640 360 -640 427 -427 640 -500 375 -429 640 -640 480 -500 333 -640 425 -480 640 -612 612 -640 480 -640 480 -640 514 -402 640 -640 416 -500 333 -640 427 -640 424 -640 480 -640 427 -640 427 -640 427 -640 480 -500 375 -640 427 -640 480 -500 366 -360 480 -640 426 -640 444 -499 640 -612 612 -480 640 -465 640 -640 480 -480 640 -640 427 -360 480 -640 427 -426 640 -640 427 -640 474 -478 640 -375 500 -640 480 -500 398 -425 640 -500 332 -640 427 -500 331 -640 426 -500 373 -640 480 -640 480 -640 424 -480 360 -426 640 -500 333 -640 478 -426 640 -640 427 -640 427 -480 640 -640 640 -640 480 -640 428 -500 478 -427 640 -640 453 -640 480 -500 375 -612 612 -640 640 -640 427 -640 427 -640 427 -427 640 -640 482 -500 333 -640 369 -640 361 -424 640 -288 216 -640 424 -640 428 -400 500 -640 480 -640 427 -640 396 -640 429 -500 365 -375 500 -426 640 -443 640 -640 427 -640 480 -612 612 -427 640 -640 429 -640 428 -640 215 -396 640 -437 640 -640 426 -440 640 -640 480 -640 480 -640 480 -333 500 -500 332 -640 398 -640 480 -500 375 -480 640 -640 426 -640 480 -640 480 -640 428 -640 480 -640 424 -640 427 -640 480 -640 426 -500 333 -612 612 -640 480 -428 640 -427 640 -640 480 -238 640 -480 640 -640 428 -640 480 -398 500 -640 428 -634 640 -640 481 -480 640 -500 332 -640 230 -500 375 -640 480 -640 480 -640 480 -500 346 -640 427 -640 354 -640 480 -640 428 -500 332 -640 480 -640 427 -640 428 -612 612 -640 480 -480 640 -640 427 -640 466 -640 429 -640 426 -479 640 -640 504 -640 336 -415 640 -640 427 -640 428 -640 480 -640 427 -382 640 -640 480 -640 480 -332 500 -640 480 -640 428 -640 426 -640 427 -334 500 -640 473 -640 427 -640 480 -425 640 -640 425 -640 426 -640 383 -500 375 -640 480 -500 375 -469 640 -500 281 -640 480 -640 480 -640 425 -640 478 -640 464 -640 480 -640 428 -480 640 -640 539 -640 428 -640 427 -640 427 -480 640 -640 480 -640 480 -640 480 -480 640 -640 428 -640 427 -640 480 -640 427 -425 640 -500 346 -480 640 -500 293 -466 640 -427 640 -640 480 -640 427 -500 334 -640 640 -500 333 -480 640 -640 480 -444 500 -640 429 -500 333 -640 640 -438 640 -436 640 -480 640 -640 382 -640 480 -640 570 -480 640 -640 480 -612 612 -428 640 -640 480 -640 444 -640 480 -640 360 -640 391 -480 640 -640 426 -640 480 -640 480 -640 480 -640 425 -612 612 -375 500 -640 480 -640 480 -500 375 -500 333 -640 480 -500 375 -427 640 -640 480 -640 426 -640 400 -640 429 -640 428 -640 426 -500 375 -480 640 -400 500 -640 429 -480 640 -480 320 -640 360 -612 612 -640 360 -640 426 -640 426 -427 640 -640 425 -424 640 -640 427 -640 427 -640 426 -612 612 -427 640 -640 425 -640 480 -640 428 -640 425 -640 427 -640 427 -640 351 -640 427 -500 335 -381 500 -425 640 -640 358 -640 424 -500 375 -640 483 -640 480 -478 640 -353 640 -640 427 -640 360 -612 612 -612 612 -640 427 -640 480 -426 640 -640 427 -640 426 -480 640 -640 480 -640 427 -640 360 -640 480 -500 334 -640 480 -640 480 -640 441 -640 425 -640 512 -640 376 -640 360 -640 480 -500 454 -500 375 -640 480 -480 640 -445 640 -640 429 -640 425 -425 640 -640 425 -640 480 -500 357 -612 612 -480 640 -640 434 -640 427 -640 401 -332 500 -640 426 -640 427 -640 478 -500 334 -640 478 -640 480 -640 469 -640 426 -640 424 -640 480 -640 480 -640 480 -640 423 -640 427 -640 427 -640 480 -500 375 -640 428 -375 500 -640 427 -640 480 -640 480 -640 480 -473 615 -640 478 -640 480 -442 287 -480 640 -640 423 -640 427 -500 375 -640 480 -640 480 -640 480 -640 480 -640 436 -640 425 -500 375 -485 640 -640 427 -612 612 -480 640 -640 521 -612 612 -640 393 -640 456 -640 480 -500 375 -640 429 -640 480 -640 425 -640 480 -640 429 -640 427 -500 354 -480 640 -640 480 -640 420 -640 480 -480 640 -640 480 -500 375 -500 375 -375 500 -640 480 -640 475 -426 640 -640 426 -640 427 -640 480 -500 332 -640 427 -640 360 -480 640 -480 640 -640 428 -640 418 -476 640 -640 440 -375 500 -640 478 -640 432 -460 613 -640 480 -408 640 -640 424 -640 480 -407 500 -427 640 -640 427 -640 424 -640 640 -640 480 -640 486 -612 612 -640 403 -640 480 -640 425 -640 426 -640 402 -512 640 -640 640 -360 640 -427 640 -640 375 -640 480 -635 640 -640 480 -640 428 -640 421 -437 640 -640 426 -640 480 -500 356 -480 640 -640 480 -640 427 -640 427 -640 426 -640 480 -640 469 -640 426 -640 271 -640 389 -640 462 -640 464 -640 480 -640 434 -640 480 -640 480 -375 500 -640 152 -480 640 -640 640 -640 436 -480 640 -500 375 -453 640 -500 334 -426 640 -427 640 -375 500 -640 423 -640 427 -640 332 -640 427 -640 480 -640 426 -427 640 -426 640 -500 375 -640 428 -640 480 -449 640 -640 427 -640 411 -640 428 -640 428 -640 427 -501 640 -427 640 -500 375 -556 640 -640 480 -640 470 -612 612 -640 427 -427 640 -640 427 -466 640 -640 424 -640 425 -512 640 -640 480 -640 370 -640 480 -640 427 -640 480 -640 427 -480 640 -640 426 -640 426 -480 640 -640 480 -640 480 -375 500 -640 457 -640 427 -640 426 -427 640 -640 480 -640 480 -640 344 -640 528 -500 375 -640 485 -375 500 -640 413 -640 427 -640 480 -500 333 -640 427 -335 500 -580 440 -640 427 -640 480 -500 318 -640 427 -480 640 -640 429 -640 410 -456 640 -640 427 -640 480 -395 640 -426 640 -427 640 -427 640 -640 426 -427 640 -427 640 -640 427 -640 428 -640 427 -268 402 -640 462 -612 612 -640 480 -640 480 -640 383 -640 427 -640 409 -640 427 -640 427 -640 479 -640 427 -427 640 -640 480 -428 640 -640 427 -640 480 -427 640 -500 400 -426 640 -640 317 -640 480 -480 640 -500 375 -640 427 -480 640 -640 480 -480 640 -640 480 -640 483 -500 426 -612 612 -428 640 -640 426 -640 429 -490 488 -500 375 -640 480 -640 424 -640 480 -640 427 -640 427 -640 408 -640 403 -640 426 -640 556 -640 480 -612 612 -480 640 -480 640 -426 640 -480 640 -640 427 -375 500 -640 424 -640 427 -500 375 -480 640 -640 425 -640 480 -640 418 -640 428 -640 480 -640 479 -640 468 -539 640 -640 480 -491 500 -640 357 -427 640 -640 480 -480 640 -640 480 -426 640 -640 429 -480 640 -426 640 -640 427 -640 375 -500 499 -640 427 -480 640 -426 640 -500 333 -640 286 -640 480 -302 640 -427 640 -640 425 -500 333 -429 640 -640 483 -640 391 -640 355 -640 360 -480 640 -500 334 -640 467 -500 375 -640 480 -640 360 -640 428 -500 332 -640 427 -640 427 -640 426 -480 640 -465 640 -640 426 -640 423 -640 426 -640 480 -500 375 -640 640 -500 375 -500 375 -640 426 -640 418 -424 640 -478 640 -640 427 -640 429 -640 480 -640 476 -480 640 -640 511 -640 427 -427 640 -500 351 -640 427 -640 480 -640 480 -640 480 -480 640 -640 480 -640 374 -640 592 -640 480 -640 427 -375 500 -487 363 -640 461 -640 427 -640 425 -500 375 -640 480 -314 375 -640 427 -375 500 -640 480 -640 360 -639 640 -640 512 -640 453 -640 427 -640 480 -640 448 -375 500 -640 480 -426 640 -640 480 -500 375 -640 426 -640 480 -640 446 -640 383 -480 640 -640 457 -427 640 -640 464 -480 640 -640 480 -640 540 -640 426 -640 480 -640 480 -480 640 -640 428 -480 640 -612 612 -640 425 -480 360 -333 500 -640 440 -426 640 -612 612 -480 640 -640 427 -516 640 -640 480 -367 640 -480 640 -640 426 -480 640 -640 480 -640 480 -640 459 -640 480 -640 374 -640 459 -640 427 -480 640 -500 281 -640 427 -505 640 -640 480 -480 640 -640 480 -640 480 -421 640 -478 640 -640 428 -640 480 -640 480 -640 480 -640 436 -500 333 -640 500 -400 600 -640 427 -640 428 -375 500 -427 640 -596 640 -425 640 -640 427 -500 375 -500 220 -640 388 -480 640 -640 427 -640 360 -640 480 -640 640 -640 480 -640 610 -640 480 -425 640 -427 640 -640 512 -640 440 -640 480 -500 375 -500 249 -427 640 -640 480 -640 427 -424 640 -640 484 -482 640 -600 400 -640 423 -428 640 -640 427 -640 480 -480 542 -640 471 -640 640 -640 424 -640 427 -640 480 -640 425 -548 640 -640 455 -640 360 -429 640 -640 480 -333 500 -640 480 -488 640 -480 640 -640 444 -640 480 -640 481 -640 480 -427 640 -640 427 -425 640 -640 480 -612 612 -375 500 -640 483 -427 640 -500 335 -640 480 -640 426 -640 480 -377 500 -640 496 -640 427 -640 425 -640 426 -640 360 -640 427 -500 422 -640 426 -640 480 -640 480 -640 360 -500 375 -480 640 -480 640 -480 640 -612 612 -374 500 -500 357 -640 338 -640 428 -640 480 -640 360 -640 238 -640 427 -640 481 -640 359 -640 427 -400 261 -640 434 -500 333 -640 427 -640 480 -500 400 -640 481 -640 427 -640 429 -375 500 -640 640 -332 500 -640 434 -640 426 -640 426 -478 640 -640 466 -640 427 -480 640 -427 640 -640 427 -640 427 -640 415 -640 427 -480 640 -640 480 -500 457 -640 480 -496 500 -500 375 -471 486 -500 375 -640 480 -480 640 -640 480 -640 480 -500 333 -427 640 -480 640 -396 640 -500 375 -363 500 -640 480 -480 640 -640 480 -500 330 -612 612 -580 640 -640 480 -640 640 -640 360 -640 478 -640 411 -500 333 -500 331 -640 480 -640 480 -427 640 -640 427 -500 375 -640 427 -500 374 -480 640 -640 427 -640 480 -640 427 -500 296 -640 480 -640 480 -335 500 -500 375 -427 640 -640 480 -640 632 -500 375 -640 551 -640 427 -640 480 -640 365 -640 425 -640 524 -640 480 -640 427 -640 426 -424 640 -640 427 -640 427 -427 640 -426 640 -640 351 -640 480 -640 480 -640 427 -427 640 -640 425 -640 512 -424 640 -640 488 -640 426 -640 480 -640 493 -480 640 -640 428 -425 640 -640 480 -640 480 -640 426 -640 427 -640 426 -500 375 -640 427 -640 426 -500 375 -640 480 -640 360 -500 375 -600 448 -640 428 -500 375 -429 640 -640 426 -640 424 -640 631 -640 427 -612 612 -640 384 -640 480 -640 361 -640 480 -427 640 -640 428 -640 427 -500 217 -640 503 -500 265 -640 427 -640 480 -500 375 -640 427 -500 333 -512 640 -640 320 -500 375 -480 640 -418 640 -640 480 -500 375 -500 400 -640 413 -640 426 -640 285 -480 640 -480 360 -640 425 -640 640 -612 612 -480 640 -640 640 -640 457 -640 427 -500 375 -640 424 -500 332 -599 640 -640 427 -398 640 -640 427 -640 360 -640 425 -480 640 -640 426 -640 480 -640 480 -640 428 -640 416 -640 425 -640 480 -640 480 -640 356 -486 640 -640 427 -640 414 -640 425 -640 480 -640 481 -640 464 -425 640 -427 640 -640 430 -640 445 -640 423 -480 640 -640 396 -433 640 -640 480 -640 480 -640 480 -640 427 -640 457 -376 500 -640 427 -640 480 -640 428 -640 360 -640 427 -640 480 -640 480 -640 447 -640 427 -424 640 -640 425 -640 425 -600 600 -511 640 -640 469 -640 480 -640 427 -480 640 -640 427 -640 480 -640 480 -640 427 -640 360 -640 480 -480 640 -612 612 -333 500 -640 347 -640 480 -500 333 -640 424 -640 480 -640 360 -640 480 -640 640 -480 640 -640 427 -640 480 -640 512 -612 612 -439 640 -640 425 -424 640 -500 334 -500 376 -475 640 -640 426 -640 479 -461 640 -640 431 -640 427 -480 640 -640 480 -427 640 -640 426 -640 478 -640 428 -640 480 -500 323 -480 640 -640 480 -480 640 -375 500 -640 480 -640 480 -640 480 -612 612 -640 427 -640 283 -640 427 -500 375 -640 480 -640 427 -480 640 -427 640 -640 427 -478 640 -512 640 -640 426 -640 640 -640 427 -640 480 -640 427 -480 640 -427 640 -640 427 -640 429 -427 640 -640 480 -640 423 -640 427 -500 375 -640 425 -640 480 -640 503 -500 375 -480 640 -640 426 -640 480 -640 550 -640 447 -640 428 -640 427 -480 640 -500 358 -640 427 -640 514 -500 334 -640 480 -640 359 -640 480 -480 640 -500 353 -427 640 -640 427 -480 640 -640 427 -640 480 -375 500 -491 640 -640 425 -640 480 -612 612 -640 427 -640 427 -332 500 -640 427 -640 428 -500 309 -612 612 -640 249 -480 640 -640 480 -358 640 -640 480 -478 640 -480 640 -640 425 -427 640 -640 512 -640 425 -640 480 -640 426 -612 612 -427 640 -427 640 -640 480 -480 640 -427 640 -640 384 -424 640 -428 640 -480 640 -480 640 -640 480 -640 427 -640 593 -640 480 -640 617 -640 360 -640 480 -640 438 -640 425 -640 422 -480 640 -500 375 -640 426 -640 427 -640 427 -640 480 -640 431 -640 425 -640 427 -640 427 -640 428 -640 424 -640 503 -640 480 -640 425 -640 427 -426 640 -428 640 -640 426 -640 361 -426 640 -375 500 -640 480 -500 375 -640 361 -640 640 -630 640 -480 640 -640 480 -480 640 -640 480 -640 427 -640 480 -530 640 -640 480 -640 428 -640 427 -500 325 -480 640 -433 640 -640 427 -640 452 -640 480 -640 480 -640 427 -640 480 -640 480 -640 480 -480 640 -640 480 -640 424 -640 426 -427 640 -640 480 -640 426 -640 414 -375 500 -640 428 -640 427 -480 640 -640 640 -640 480 -640 427 -640 427 -640 427 -500 375 -640 427 -640 480 -480 640 -500 390 -640 427 -617 640 -640 480 -640 480 -427 640 -500 375 -640 427 -640 454 -480 640 -640 427 -640 424 -640 426 -640 425 -500 333 -640 480 -640 268 -640 404 -480 640 -640 424 -640 427 -640 429 -640 361 -600 400 -640 426 -500 351 -640 480 -640 480 -640 424 -640 360 -427 640 -640 449 -640 480 -640 480 -640 427 -375 500 -640 427 -640 359 -640 471 -640 480 -500 327 -640 427 -427 640 -427 640 -612 612 -640 480 -640 429 -427 640 -427 640 -640 426 -640 426 -640 424 -480 640 -500 375 -428 640 -480 640 -640 599 -333 500 -640 427 -640 360 -612 612 -640 480 -640 594 -640 480 -480 640 -640 426 -640 427 -640 480 -500 376 -480 640 -500 375 -426 640 -640 426 -640 480 -640 360 -600 450 -612 612 -486 640 -640 480 -512 640 -427 640 -640 480 -480 640 -640 426 -489 640 -640 480 -475 355 -480 640 -375 500 -480 640 -426 640 -480 640 -640 361 -536 640 -500 375 -480 640 -375 500 -640 427 -640 640 -640 421 -500 473 -640 428 -369 640 -640 480 -375 500 -500 375 -640 480 -640 480 -640 480 -640 422 -640 425 -640 480 -640 480 -480 640 -640 427 -640 427 -640 425 -426 640 -640 427 -500 312 -640 263 -480 640 -640 480 -640 640 -375 500 -640 463 -640 480 -640 456 -640 480 -500 375 -640 425 -427 640 -640 426 -500 329 -640 480 -500 375 -640 427 -640 480 -640 427 -640 547 -640 426 -480 640 -640 427 -640 418 -640 328 -480 640 -640 480 -640 427 -500 255 -640 427 -480 640 -480 640 -640 409 -640 480 -428 640 -375 500 -500 333 -640 480 -606 640 -640 480 -640 434 -640 464 -640 429 -640 427 -480 640 -640 426 -640 369 -640 426 -640 366 -640 426 -640 480 -375 500 -500 375 -640 480 -640 426 -640 480 -640 480 -640 420 -395 640 -612 612 -640 480 -640 426 -480 640 -640 427 -500 375 -460 640 -640 412 -640 427 -640 480 -473 600 -640 640 -612 612 -640 480 -640 404 -640 480 -640 480 -640 526 -500 363 -640 414 -640 400 -640 427 -640 427 -640 427 -640 480 -640 480 -640 427 -640 515 -498 640 -640 472 -640 480 -480 640 -640 415 -333 500 -640 480 -640 461 -640 426 -640 406 -640 512 -428 640 -640 427 -640 480 -640 480 -640 628 -640 427 -427 640 -426 640 -640 427 -640 427 -640 480 -640 424 -554 640 -480 640 -640 415 -640 426 -480 640 -500 334 -500 375 -640 427 -640 466 -640 427 -640 428 -427 640 -640 428 -640 427 -640 480 -640 480 -640 360 -640 426 -640 480 -500 333 -500 356 -640 360 -640 480 -640 427 -480 640 -640 480 -640 592 -612 612 -640 480 -640 479 -640 466 -640 429 -640 480 -612 612 -640 512 -479 640 -640 480 -640 480 -640 480 -640 427 -640 480 -500 349 -640 523 -640 480 -640 480 -640 483 -640 428 -399 500 -500 375 -640 427 -640 381 -640 480 -640 427 -640 426 -640 393 -640 426 -565 640 -480 640 -640 426 -480 640 -480 640 -454 640 -573 640 -640 480 -640 427 -480 640 -640 427 -640 480 -497 500 -640 427 -640 360 -500 375 -640 427 -640 425 -480 640 -640 428 -426 640 -500 491 -480 640 -374 500 -640 480 -640 425 -360 480 -640 480 -612 612 -640 480 -640 349 -375 500 -640 425 -640 360 -640 427 -640 427 -428 640 -640 480 -425 640 -375 500 -640 359 -640 480 -500 375 -427 640 -640 429 -640 480 -640 480 -640 480 -640 470 -434 640 -500 375 -640 425 -640 305 -640 427 -640 480 -426 640 -360 640 -640 480 -375 500 -480 640 -478 640 -640 480 -595 640 -640 428 -640 480 -480 640 -640 480 -500 281 -640 480 -500 333 -640 427 -640 428 -500 191 -409 640 -640 480 -425 640 -640 512 -640 480 -640 426 -640 427 -640 424 -640 427 -640 427 -640 480 -640 480 -640 476 -640 536 -640 480 -640 480 -640 480 -500 375 -640 427 -640 480 -500 500 -640 480 -640 340 -640 480 -640 480 -426 640 -640 473 -500 333 -640 480 -640 470 -640 427 -640 502 -640 426 -640 298 -640 480 -480 640 -640 480 -640 480 -640 480 -640 426 -612 612 -500 375 -640 429 -500 338 -500 375 -640 480 -500 375 -492 640 -640 427 -640 429 -640 599 -640 480 -338 450 -640 480 -640 480 -640 359 -500 366 -640 424 -428 640 -640 480 -640 427 -640 480 -500 333 -500 375 -640 425 -480 640 -426 640 -640 346 -640 480 -640 480 -640 480 -612 612 -428 640 -640 427 -399 640 -356 500 -427 640 -640 480 -640 480 -640 480 -640 640 -640 480 -640 441 -640 480 -500 375 -480 640 -612 612 -500 375 -640 441 -640 427 -640 427 -640 427 -427 640 -640 424 -480 640 -640 427 -500 392 -640 427 -427 640 -640 512 -640 480 -486 640 -640 480 -640 453 -640 425 -640 480 -640 428 -479 640 -640 480 -640 480 -375 500 -480 640 -640 427 -490 640 -480 640 -640 424 -427 640 -640 426 -640 426 -333 500 -375 500 -427 640 -640 424 -480 640 -500 333 -640 426 -640 480 -640 471 -632 640 -640 480 -640 421 -640 480 -640 352 -640 427 -480 640 -640 426 -640 480 -640 459 -640 480 -640 427 -427 640 -640 480 -640 443 -640 428 -640 480 -640 480 -485 640 -427 640 -640 427 -640 424 -640 640 -640 480 -640 427 -640 427 -640 406 -640 493 -640 480 -612 612 -500 375 -640 466 -640 422 -640 434 -640 428 -640 427 -640 427 -640 480 -640 425 -454 640 -640 338 -640 427 -500 334 -640 363 -640 426 -457 640 -640 427 -640 478 -428 640 -500 375 -640 480 -360 640 -640 427 -640 427 -480 640 -640 480 -640 424 -640 360 -640 414 -640 437 -640 480 -640 428 -500 375 -480 640 -480 640 -427 640 -448 300 -486 640 -500 375 -500 400 -640 449 -640 415 -427 640 -640 428 -640 480 -640 480 -427 640 -500 333 -500 341 -500 375 -500 375 -640 480 -640 427 -640 512 -640 427 -480 640 -640 480 -500 334 -640 427 -640 424 -640 426 -640 427 -480 640 -480 640 -640 426 -640 427 -640 480 -640 429 -480 640 -640 480 -640 427 -612 612 -500 333 -640 427 -612 612 -500 375 -640 427 -426 640 -640 428 -640 480 -550 640 -500 375 -334 500 -427 640 -640 480 -640 480 -463 640 -367 500 -640 427 -640 438 -500 331 -612 612 -640 480 -500 291 -600 400 -640 427 -427 640 -640 480 -640 480 -375 500 -640 428 -640 427 -500 176 -640 427 -640 425 -640 597 -640 427 -640 480 -480 640 -640 640 -640 480 -425 640 -500 375 -456 640 -640 427 -640 426 -640 519 -640 411 -375 500 -640 427 -428 640 -428 640 -640 463 -640 561 -640 361 -427 640 -640 480 -640 426 -640 480 -522 640 -640 512 -640 480 -640 480 -640 508 -640 480 -640 427 -439 640 -640 360 -640 499 -640 479 -640 480 -640 640 -640 427 -640 480 -640 427 -425 640 -375 500 -500 357 -500 375 -418 640 -640 425 -386 500 -640 426 -640 480 -640 438 -640 480 -640 429 -640 480 -500 332 -427 640 -640 424 -293 500 -425 640 -612 612 -640 546 -640 481 -640 433 -612 612 -640 480 -640 489 -640 480 -480 640 -640 480 -428 640 -328 480 -640 423 -640 426 -480 640 -640 480 -470 640 -640 425 -640 480 -640 480 -612 612 -640 480 -448 500 -575 640 -640 425 -640 480 -427 640 -640 480 -640 480 -640 480 -345 640 -640 427 -500 331 -427 640 -640 427 -640 480 -640 640 -640 478 -478 640 -640 426 -640 480 -640 480 -640 427 -640 480 -640 427 -640 640 -640 480 -640 425 -427 640 -500 375 -480 640 -500 375 -500 375 -629 640 -640 480 -640 426 -640 480 -640 427 -640 426 -480 640 -640 425 -500 375 -640 480 -640 480 -480 640 -640 426 -640 425 -640 427 -426 640 -480 640 -424 640 -640 406 -640 272 -640 480 -640 480 -424 640 -427 640 -640 480 -440 640 -375 500 -640 426 -429 640 -383 640 -640 480 -612 612 -640 426 -640 480 -640 428 -640 480 -640 480 -640 425 -640 480 -428 640 -427 640 -640 480 -640 480 -640 480 -640 427 -640 425 -640 424 -640 480 -640 430 -640 480 -640 359 -640 480 -499 500 -640 480 -640 480 -640 478 -640 360 -640 427 -640 512 -640 415 -640 480 -640 480 -612 612 -640 214 -640 426 -640 481 -640 427 -459 640 -640 427 -480 640 -480 640 -640 480 -430 640 -640 480 -640 426 -640 480 -478 640 -640 423 -640 480 -640 480 -506 640 -640 480 -640 427 -383 640 -640 425 -640 427 -500 375 -335 500 -640 480 -199 640 -640 428 -640 428 -640 480 -640 480 -480 640 -640 425 -500 375 -640 426 -500 500 -640 480 -640 427 -640 480 -640 572 -640 427 -640 424 -640 438 -500 500 -640 427 -640 423 -640 480 -640 220 -640 428 -480 640 -640 480 -640 429 -375 500 -333 500 -640 480 -640 400 -640 426 -640 429 -640 480 -640 480 -640 426 -640 428 -500 375 -640 480 -427 640 -480 640 -375 500 -500 357 -480 640 -352 640 -640 473 -640 480 -640 480 -640 427 -640 454 -640 427 -640 529 -640 480 -640 427 -640 640 -640 480 -640 352 -640 320 -640 543 -640 558 -640 480 -640 426 -640 426 -500 375 -480 640 -640 480 -640 480 -500 375 -640 427 -640 424 -500 333 -640 478 -640 427 -640 480 -640 428 -640 480 -640 428 -640 427 -500 375 -640 480 -640 425 -480 640 -435 640 -640 428 -640 379 -640 480 -640 272 -427 640 -640 426 -640 424 -640 428 -500 375 -640 480 -640 428 -640 410 -640 480 -640 426 -341 500 -640 427 -640 427 -424 640 -640 595 -640 480 -640 427 -640 425 -640 324 -640 427 -640 425 -640 480 -480 640 -480 640 -500 500 -640 427 -640 413 -640 427 -640 426 -640 428 -640 480 -640 444 -448 336 -640 426 -445 500 -500 375 -480 640 -640 427 -640 493 -500 334 -338 500 -480 640 -480 640 -640 480 -640 480 -640 640 -640 390 -640 480 -640 398 -640 504 -640 480 -640 534 -480 640 -640 480 -640 480 -640 480 -640 480 -640 427 -425 640 -375 500 -640 426 -640 430 -640 597 -500 375 -640 480 -640 474 -640 640 -500 333 -640 426 -640 428 -640 480 -640 436 -640 458 -480 640 -480 640 -426 640 -428 640 -500 345 -640 360 -640 360 -640 480 -375 500 -640 427 -500 333 -480 640 -640 480 -425 640 -640 478 -558 640 -640 410 -640 425 -428 640 -640 426 -480 640 -640 427 -471 640 -640 469 -640 427 -640 480 -640 480 -640 480 -375 500 -429 640 -640 480 -369 336 -640 443 -480 640 -640 478 -333 500 -640 428 -640 481 -640 427 -640 480 -640 428 -640 480 -640 482 -375 500 -640 512 -640 480 -640 480 -640 426 -640 640 -640 480 -640 438 -640 480 -640 427 -531 640 -480 640 -640 478 -640 425 -640 425 -640 427 -640 426 -640 431 -612 612 -411 640 -500 375 -640 427 -640 498 -640 480 -640 420 -500 376 -427 640 -640 425 -431 640 -521 640 -640 428 -480 640 -375 500 -640 427 -640 480 -640 427 -500 375 -480 640 -541 640 -640 480 -640 432 -500 364 -640 480 -500 333 -504 378 -523 640 -640 489 -640 360 -640 480 -480 640 -640 427 -640 427 -480 640 -640 427 -640 427 -500 333 -640 480 -640 427 -640 400 -640 426 -640 480 -640 425 -425 640 -640 480 -427 640 -640 541 -640 491 -640 426 -480 640 -480 640 -564 640 -640 478 -424 640 -335 500 -500 377 -640 426 -640 428 -640 430 -640 478 -640 429 -640 427 -332 500 -361 640 -640 457 -640 480 -640 427 -640 427 -640 361 -640 480 -640 480 -640 427 -480 640 -640 428 -640 424 -640 426 -480 640 -426 640 -640 426 -640 592 -640 480 -640 480 -640 480 -480 640 -640 423 -640 480 -640 480 -383 640 -500 375 -640 489 -640 480 -500 375 -640 480 -500 333 -480 640 -640 363 -427 640 -640 480 -640 426 -640 479 -427 640 -640 435 -333 500 -640 426 -640 427 -640 478 -640 441 -640 480 -480 640 -640 427 -427 640 -640 640 -500 376 -427 640 -640 426 -640 426 -640 424 -640 459 -640 457 -640 437 -640 480 -640 480 -640 399 -640 480 -480 640 -640 480 -640 480 -640 393 -375 500 -427 640 -640 480 -640 427 -640 480 -640 427 -500 375 -480 640 -480 640 -640 425 -500 387 -640 429 -640 480 -478 640 -480 640 -640 426 -500 333 -500 375 -640 480 -640 429 -640 480 -426 640 -427 640 -480 640 -500 332 -640 480 -480 640 -640 426 -640 432 -486 640 -428 640 -640 429 -640 459 -393 640 -640 425 -427 640 -640 428 -548 640 -640 411 -489 500 -640 427 -640 414 -640 427 -480 640 -500 344 -480 640 -640 503 -428 640 -500 375 -500 375 -640 444 -640 427 -500 375 -640 424 -456 640 -612 612 -375 500 -427 640 -500 333 -640 480 -640 480 -640 480 -640 480 -640 425 -640 512 -582 640 -480 640 -640 480 -640 515 -500 369 -640 428 -640 480 -478 640 -640 427 -500 332 -577 640 -500 375 -444 640 -640 453 -640 360 -640 633 -640 383 -640 480 -640 427 -640 406 -500 357 -480 640 -640 424 -640 480 -640 480 -579 640 -640 480 -640 480 -640 427 -450 338 -640 480 -640 356 -514 640 -425 567 -640 480 -600 400 -427 640 -640 431 -640 480 -640 426 -640 480 -640 426 -612 612 -640 480 -480 640 -468 640 -640 480 -640 443 -640 427 -425 640 -640 519 -480 640 -333 500 -427 640 -640 427 -428 640 -640 425 -640 425 -640 480 -640 480 -640 480 -500 375 -640 425 -480 640 -640 491 -640 486 -480 640 -500 375 -640 427 -640 428 -640 308 -640 365 -479 640 -500 333 -512 640 -640 480 -640 480 -640 480 -640 361 -640 427 -640 480 -554 640 -500 332 -640 427 -640 425 -640 512 -640 480 -500 375 -375 500 -640 448 -640 426 -305 480 -612 612 -375 500 -640 452 -640 425 -640 480 -640 427 -640 428 -640 426 -500 332 -640 425 -640 360 -612 612 -480 640 -640 429 -428 640 -500 375 -640 413 -640 480 -640 427 -500 375 -476 640 -640 480 -640 480 -640 427 -640 480 -345 500 -500 375 -480 640 -640 427 -640 427 -640 360 -392 640 -500 375 -640 427 -574 640 -640 428 -640 427 -640 438 -500 375 -640 424 -480 640 -640 427 -640 427 -500 375 -640 427 -640 425 -640 425 -480 640 -640 477 -640 480 -640 424 -640 494 -640 424 -333 500 -453 640 -500 375 -610 407 -612 612 -640 428 -426 640 -375 500 -640 480 -640 427 -425 640 -640 427 -640 640 -449 401 -640 426 -427 640 -640 429 -640 428 -600 400 -640 640 -640 464 -500 375 -640 427 -640 427 -640 480 -640 360 -480 640 -640 425 -525 525 -426 640 -640 427 -500 375 -640 427 -640 427 -425 640 -480 640 -640 573 -630 450 -640 480 -612 612 -640 480 -480 640 -640 506 -640 425 -640 405 -360 640 -640 480 -640 622 -640 425 -375 500 -640 427 -612 612 -640 457 -568 640 -640 480 -640 427 -640 426 -480 640 -427 640 -640 427 -640 428 -640 400 -640 480 -480 640 -640 428 -480 640 -480 640 -480 640 -599 640 -640 480 -640 480 -640 426 -640 478 -640 480 -640 427 -640 425 -375 500 -640 480 -375 500 -607 640 -375 500 -640 480 -640 434 -638 640 -493 500 -640 480 -640 506 -640 427 -640 427 -463 640 -640 360 -640 427 -640 619 -640 484 -375 500 -640 480 -538 640 -500 333 -640 429 -500 375 -500 488 -640 428 -640 427 -438 640 -640 480 -640 393 -640 427 -640 480 -500 330 -640 572 -500 366 -640 480 -640 425 -640 424 -640 478 -500 381 -640 427 -640 480 -640 399 -640 499 -640 426 -640 402 -375 500 -479 640 -500 335 -640 428 -640 428 -500 375 -640 480 -500 341 -640 483 -640 361 -424 640 -640 480 -640 427 -640 483 -640 427 -640 424 -640 480 -640 424 -480 640 -640 640 -427 640 -400 300 -640 480 -375 500 -640 480 -640 429 -500 332 -323 486 -640 480 -640 273 -640 427 -640 466 -640 506 -640 463 -640 480 -640 480 -640 640 -427 640 -640 480 -426 640 -640 480 -640 456 -480 640 -640 480 -640 480 -500 376 -500 375 -640 480 -480 640 -640 383 -640 480 -640 480 -420 640 -640 480 -640 427 -374 500 -640 471 -612 612 -640 480 -640 427 -640 480 -500 375 -640 480 -640 480 -640 427 -640 452 -640 402 -640 352 -640 427 -500 375 -640 480 -375 500 -640 640 -640 464 -427 640 -500 296 -376 500 -640 544 -480 640 -640 480 -500 332 -640 426 -640 426 -640 463 -640 426 -640 466 -640 480 -371 500 -500 640 -500 375 -333 500 -640 480 -500 333 -240 193 -480 640 -426 640 -640 424 -640 480 -640 480 -480 640 -571 640 -480 640 -640 640 -640 480 -375 500 -640 427 -428 640 -640 472 -640 428 -640 480 -377 500 -480 640 -640 426 -500 333 -480 640 -640 360 -640 478 -431 640 -536 640 -640 426 -640 424 -612 612 -480 640 -427 640 -640 480 -640 480 -640 427 -427 640 -425 640 -640 427 -500 375 -436 640 -640 427 -640 437 -333 500 -480 640 -612 612 -559 640 -640 427 -640 426 -640 480 -640 400 -640 406 -640 358 -640 424 -500 315 -640 426 -640 480 -640 427 -640 480 -640 424 -427 640 -398 500 -640 480 -500 313 -640 360 -640 480 -640 360 -640 480 -640 427 -640 426 -480 640 -640 456 -500 346 -500 475 -640 427 -640 427 -640 414 -428 640 -640 428 -428 640 -500 332 -426 640 -640 427 -480 640 -640 480 -640 480 -500 375 -500 375 -640 307 -640 480 -480 640 -640 472 -640 426 -426 640 -640 428 -427 640 -480 640 -480 640 -340 500 -640 480 -640 428 -640 502 -640 480 -640 457 -640 552 -640 359 -640 428 -500 375 -640 480 -480 640 -500 310 -524 640 -640 427 -640 427 -640 480 -500 375 -478 640 -640 480 -426 640 -640 433 -375 500 -640 616 -640 428 -640 480 -640 480 -500 334 -427 640 -640 429 -640 427 -640 480 -640 480 -640 480 -640 427 -640 480 -573 640 -427 640 -640 480 -640 427 -500 375 -640 480 -500 373 -478 640 -640 429 -371 500 -480 640 -640 440 -640 425 -640 480 -500 375 -427 640 -500 332 -427 640 -640 480 -334 500 -640 427 -640 427 -640 480 -428 640 -375 500 -640 427 -640 383 -427 640 -500 333 -640 427 -500 375 -427 640 -640 480 -640 425 -640 427 -640 427 -640 427 -640 358 -500 375 -640 427 -640 480 -640 480 -478 640 -480 640 -640 360 -640 480 -640 427 -480 640 -333 500 -640 427 -640 512 -640 480 -500 334 -480 640 -640 427 -583 640 -480 640 -640 480 -640 426 -640 427 -640 512 -480 640 -640 427 -640 480 -640 625 -462 640 -640 480 -640 480 -640 339 -640 427 -500 341 -640 427 -640 462 -500 375 -640 427 -500 375 -375 500 -640 427 -640 478 -640 480 -435 640 -640 426 -640 427 -427 640 -640 448 -640 426 -500 375 -640 426 -640 480 -640 427 -375 500 -640 427 -500 375 -488 640 -640 480 -640 426 -640 640 -480 640 -320 240 -640 483 -640 426 -640 489 -640 426 -640 359 -473 500 -640 480 -640 433 -612 612 -640 428 -640 457 -500 375 -413 500 -640 474 -640 458 -427 640 -375 500 -421 640 -640 427 -476 640 -568 640 -640 426 -640 425 -424 640 -500 324 -640 480 -640 427 -640 426 -500 375 -426 640 -640 480 -640 427 -375 500 -640 426 -640 640 -640 425 -640 480 -640 480 -640 480 -640 427 -612 612 -640 413 -640 480 -500 333 -640 498 -640 427 -302 500 -640 354 -424 640 -427 640 -480 640 -640 492 -428 640 -640 496 -640 428 -612 612 -480 640 -640 483 -640 480 -640 480 -640 480 -640 479 -640 427 -640 425 -640 426 -640 428 -500 375 -640 429 -640 429 -500 375 -480 640 -390 293 -480 640 -640 425 -444 640 -640 640 -500 375 -640 480 -640 427 -640 427 -500 499 -500 334 -640 480 -414 640 -500 375 -640 478 -486 640 -640 480 -478 640 -640 359 -640 480 -480 640 -640 480 -640 427 -640 480 -640 640 -500 500 -414 310 -640 428 -600 469 -640 459 -500 375 -640 480 -449 600 -640 427 -640 480 -480 640 -640 428 -640 426 -640 480 -426 640 -640 480 -640 424 -640 433 -640 480 -640 480 -640 434 -375 500 -640 480 -500 334 -640 428 -640 427 -427 640 -640 480 -640 480 -640 427 -640 427 -640 480 -640 480 -500 363 -640 480 -640 480 -480 640 -640 480 -640 480 -640 480 -480 640 -640 480 -480 640 -640 480 -640 427 -500 281 -640 427 -426 640 -478 640 -640 480 -640 480 -640 427 -640 427 -573 640 -640 297 -500 333 -640 428 -640 480 -640 640 -480 640 -640 494 -640 427 -640 480 -428 640 -640 427 -427 640 -640 480 -500 375 -640 427 -500 372 -432 640 -640 426 -427 640 -640 427 -429 640 -640 393 -478 640 -640 426 -640 426 -500 332 -499 500 -640 484 -640 640 -640 424 -375 500 -500 375 -640 428 -640 426 -427 640 -500 333 -640 426 -612 612 -640 480 -640 427 -640 360 -640 480 -640 480 -539 640 -615 310 -480 640 -640 640 -640 453 -427 640 -640 513 -640 427 -640 480 -640 480 -640 403 -612 612 -500 375 -640 480 -640 427 -640 640 -640 480 -640 427 -480 640 -640 480 -640 480 -640 483 -640 480 -640 427 -500 375 -640 480 -640 490 -612 612 -612 612 -500 375 -640 478 -480 640 -480 640 -640 480 -640 480 -426 640 -640 478 -640 480 -640 425 -640 512 -426 640 -640 383 -640 427 -640 480 -458 640 -640 510 -480 640 -640 478 -640 426 -640 480 -640 427 -640 480 -640 412 -640 480 -640 428 -640 480 -640 426 -640 480 -500 375 -640 392 -640 427 -640 427 -480 640 -600 400 -640 426 -640 479 -640 425 -640 480 -640 480 -486 640 -426 640 -640 427 -640 426 -640 425 -640 360 -640 426 -427 640 -334 500 -500 375 -640 427 -640 427 -640 480 -581 640 -640 480 -640 480 -480 640 -640 427 -640 480 -640 427 -640 425 -640 480 -480 640 -640 427 -640 422 -640 426 -640 480 -480 640 -640 480 -640 480 -640 427 -640 360 -640 480 -640 427 -426 640 -542 640 -640 480 -640 482 -640 428 -480 640 -640 424 -375 500 -480 640 -427 640 -640 480 -640 480 -640 427 -640 427 -640 427 -427 640 -500 375 -480 640 -640 480 -375 500 -640 427 -640 480 -640 495 -640 409 -640 427 -640 480 -640 425 -640 361 -375 500 -480 640 -480 640 -500 500 -640 361 -480 640 -500 332 -640 427 -500 375 -480 640 -640 388 -500 375 -640 366 -640 480 -426 640 -640 428 -640 427 -640 428 -424 640 -500 375 -612 612 -640 480 -640 512 -640 427 -640 428 -480 640 -640 425 -640 480 -640 434 -640 451 -500 334 -640 430 -500 375 -640 480 -640 516 -640 480 -427 640 -480 640 -640 480 -640 425 -640 480 -640 480 -640 427 -640 427 -640 427 -640 480 -640 480 -640 381 -640 480 -640 401 -500 335 -640 361 -640 425 -429 640 -480 640 -512 640 -427 640 -640 640 -480 640 -500 375 -640 427 -480 640 -640 480 -640 429 -375 500 -640 506 -428 640 -640 427 -640 480 -640 577 -500 375 -640 559 -640 360 -480 640 -640 427 -612 612 -640 428 -640 512 -480 640 -640 424 -511 640 -500 375 -480 640 -640 429 -640 480 -640 640 -500 375 -640 426 -640 427 -640 481 -640 396 -640 426 -640 480 -500 375 -500 333 -480 640 -454 640 -333 500 -640 480 -640 447 -640 480 -640 427 -640 480 -640 480 -640 427 -640 200 -500 375 -640 480 -640 480 -640 427 -640 425 -640 427 -640 478 -426 640 -640 427 -357 500 -640 424 -640 480 -640 425 -640 426 -640 426 -640 480 -500 375 -480 640 -640 414 -500 346 -640 427 -478 640 -640 349 -640 427 -640 427 -640 638 -640 427 -512 640 -640 378 -640 425 -640 425 -500 375 -375 500 -640 425 -640 427 -640 480 -640 395 -640 348 -640 480 -640 480 -427 640 -500 375 -640 426 -500 340 -375 500 -640 480 -640 480 -640 480 -426 640 -480 640 -326 640 -640 427 -640 483 -640 424 -640 515 -640 425 -640 391 -480 640 -640 360 -640 427 -612 612 -640 424 -465 640 -480 640 -640 426 -494 500 -640 478 -640 427 -640 427 -640 427 -480 640 -640 558 -640 480 -500 334 -640 429 -640 480 -640 426 -640 506 -640 480 -640 640 -640 480 -640 480 -500 375 -640 427 -640 426 -640 426 -612 612 -640 428 -640 480 -640 480 -640 426 -427 640 -640 428 -640 427 -640 427 -640 480 -640 427 -640 480 -640 427 -612 612 -640 480 -640 480 -425 640 -640 427 -640 424 -640 427 -480 640 -640 480 -640 425 -500 332 -640 427 -640 640 -375 500 -427 640 -500 375 -640 480 -640 427 -500 334 -427 640 -424 640 -427 640 -640 339 -640 480 -640 427 -500 333 -481 640 -200 150 -640 480 -425 640 -640 480 -428 640 -640 480 -640 512 -600 400 -640 428 -640 480 -640 359 -428 640 -612 612 -640 480 -640 425 -640 480 -500 334 -429 640 -640 425 -640 427 -419 640 -640 480 -426 640 -612 612 -640 427 -640 427 -640 458 -375 500 -428 640 -500 375 -640 427 -480 640 -640 480 -480 640 -640 480 -500 375 -640 427 -480 640 -640 457 -500 333 -640 480 -640 483 -640 294 -640 427 -375 500 -640 480 -640 426 -640 427 -640 427 -640 426 -640 208 -640 424 -290 640 -640 480 -640 480 -640 480 -400 600 -640 424 -640 426 -640 480 -426 640 -640 426 -640 480 -427 640 -427 640 -640 480 -480 640 -640 441 -366 640 -640 427 -640 426 -500 375 -480 640 -375 500 -640 449 -640 480 -640 427 -457 640 -640 428 -480 640 -430 640 -480 640 -600 450 -640 453 -640 480 -640 238 -640 480 -640 428 -640 424 -500 375 -640 185 -640 427 -335 500 -640 478 -640 427 -427 640 -500 333 -640 480 -428 640 -640 480 -640 427 -386 640 -640 457 -640 480 -640 433 -640 429 -640 427 -640 480 -640 478 -640 480 -612 612 -640 428 -640 323 -640 439 -640 480 -640 493 -640 480 -427 640 -640 427 -640 455 -640 480 -640 425 -640 427 -375 500 -500 333 -640 480 -640 480 -640 480 -427 640 -480 640 -640 436 -375 500 -427 640 -640 427 -426 640 -457 640 -640 359 -640 480 -640 583 -640 424 -500 375 -441 640 -640 425 -640 426 -640 360 -427 640 -640 441 -640 426 -640 480 -640 427 -612 612 -640 425 -640 425 -640 427 -640 427 -640 480 -360 237 -375 500 -480 640 -524 640 -640 408 -427 640 -612 612 -640 480 -428 640 -640 480 -640 480 -640 426 -500 357 -500 364 -500 375 -640 423 -640 480 -640 427 -612 612 -640 484 -640 423 -544 640 -640 427 -640 480 -500 375 -500 500 -425 640 -426 640 -500 333 -480 640 -640 427 -402 640 -640 424 -341 280 -640 427 -640 512 -640 480 -640 491 -480 640 -640 480 -500 375 -640 480 -640 400 -500 333 -426 640 -640 427 -640 480 -500 375 -500 400 -500 375 -375 500 -640 479 -640 406 -640 514 -427 640 -640 222 -500 375 -459 640 -480 640 -640 425 -500 375 -640 427 -640 539 -640 425 -640 448 -640 427 -426 640 -500 323 -640 327 -427 640 -359 640 -640 428 -640 426 -640 425 -425 640 -424 640 -500 379 -427 640 -640 427 -375 500 -640 480 -640 480 -640 468 -640 480 -427 640 -640 480 -640 480 -640 426 -640 428 -640 426 -640 426 -640 480 -640 480 -640 403 -332 500 -500 333 -426 640 -640 458 -480 640 -500 375 -446 640 -640 480 -640 480 -640 384 -500 375 -640 426 -640 478 -500 375 -640 479 -500 375 -500 311 -640 543 -640 427 -500 375 -640 412 -480 640 -480 640 -375 500 -640 427 -640 427 -480 640 -640 426 -640 424 -480 640 -640 451 -640 427 -640 640 -640 448 -640 480 -640 480 -640 427 -640 427 -640 512 -640 480 -480 640 -640 481 -640 417 -640 425 -500 375 -640 563 -640 427 -640 426 -640 427 -640 427 -640 459 -640 459 -640 480 -640 438 -429 640 -640 545 -640 426 -612 612 -640 480 -640 428 -640 424 -640 427 -635 640 -640 417 -640 427 -480 360 -500 375 -500 375 -640 417 -640 360 -427 640 -500 375 -480 640 -640 389 -640 480 -640 480 -640 443 -640 427 -640 427 -640 427 -640 442 -512 640 -640 480 -494 640 -640 427 -612 612 -640 427 -612 612 -500 500 -640 427 -640 427 -640 427 -640 424 -480 640 -640 429 -640 356 -640 442 -640 458 -640 434 -640 427 -640 427 -480 640 -488 640 -640 480 -640 452 -427 640 -640 428 -640 425 -500 375 -427 640 -640 426 -640 480 -428 640 -483 640 -640 480 -640 429 -640 428 -640 480 -640 412 -640 427 -500 375 -427 640 -500 473 -640 640 -640 480 -640 427 -640 480 -640 429 -640 427 -426 640 -424 640 -640 400 -640 479 -640 490 -640 480 -480 640 -640 480 -500 333 -640 457 -640 427 -640 480 -428 640 -640 480 -640 425 -500 375 -640 279 -500 228 -640 480 -640 480 -640 480 -500 500 -640 456 -640 536 -500 375 -640 427 -640 478 -426 640 -480 640 -480 640 -500 400 -640 480 -480 640 -640 351 -640 480 -640 480 -640 427 -640 427 -640 480 -612 612 -640 360 -640 360 -640 332 -640 480 -500 349 -500 333 -640 386 -382 500 -500 375 -480 640 -614 640 -640 418 -500 375 -640 428 -640 640 -640 359 -640 480 -640 464 -541 640 -500 375 -640 426 -640 480 -640 427 -640 613 -500 349 -640 425 -500 375 -640 480 -480 640 -630 640 -640 427 -640 480 -640 480 -640 480 -500 375 -400 600 -500 375 -640 457 -640 461 -640 480 -640 480 -640 337 -512 640 -640 425 -427 640 -640 443 -640 640 -612 612 -500 375 -640 480 -640 425 -640 480 -640 428 -427 640 -640 512 -375 500 -480 640 -640 480 -640 524 -640 640 -640 480 -640 428 -640 480 -428 640 -640 363 -640 480 -640 445 -428 640 -640 480 -640 257 -640 281 -640 426 -426 640 -640 480 -640 425 -500 375 -640 426 -427 640 -375 500 -640 427 -640 359 -640 423 -640 427 -640 426 -640 480 -480 640 -640 480 -640 483 -640 480 -640 427 -640 427 -640 425 -640 359 -640 429 -604 640 -640 427 -500 500 -640 360 -640 480 -640 456 -640 485 -500 290 -640 480 -640 480 -480 640 -640 480 -640 426 -640 489 -478 640 -640 427 -640 427 -640 480 -640 480 -484 640 -640 480 -433 640 -640 480 -612 612 -640 480 -640 480 -480 640 -480 500 -426 640 -640 457 -640 425 -427 640 -640 480 -426 640 -487 640 -640 425 -421 640 -500 328 -375 500 -640 480 -335 500 -640 427 -640 427 -640 571 -376 500 -612 612 -500 500 -640 243 -640 479 -640 480 -533 640 -333 500 -640 639 -425 640 -640 516 -640 427 -480 640 -612 612 -640 426 -640 480 -480 640 -427 640 -640 428 -500 314 -640 480 -640 427 -427 640 -640 480 -500 309 -640 480 -480 640 -640 479 -640 427 -640 480 -640 480 -600 450 -640 428 -640 480 -480 640 -640 426 -640 480 -640 480 -640 427 -640 388 -428 640 -426 640 -500 375 -640 427 -640 480 -640 396 -640 480 -640 480 -640 426 -640 427 -640 427 -640 480 -640 480 -640 400 -640 427 -640 277 -500 333 -640 480 -640 424 -640 480 -640 480 -640 379 -640 480 -479 640 -375 500 -640 427 -498 640 -640 427 -480 640 -480 640 -640 427 -640 480 -427 640 -480 640 -640 480 -640 316 -640 427 -500 375 -640 427 -640 427 -458 640 -500 333 -500 499 -620 441 -640 425 -640 480 -640 448 -500 331 -528 640 -640 425 -480 640 -640 427 -193 225 -640 381 -640 427 -640 427 -640 430 -640 482 -640 469 -640 386 -640 425 -427 640 -640 480 -640 640 -640 480 -640 481 -425 640 -375 500 -640 427 -500 332 -640 427 -640 480 -640 480 -640 393 -427 640 -480 640 -640 427 -640 427 -480 640 -640 480 -640 502 -640 425 -500 375 -500 205 -502 640 -426 640 -640 480 -640 480 -640 428 -640 480 -640 427 -640 480 -640 428 -499 500 -500 373 -480 640 -480 640 -640 427 -640 480 -640 480 -640 427 -640 426 -640 640 -640 424 -640 427 -500 335 -640 480 -640 360 -640 480 -640 428 -640 483 -640 427 -640 557 -640 426 -640 478 -426 640 -640 480 -640 427 -427 640 -640 480 -480 640 -640 423 -640 459 -427 640 -500 333 -640 427 -500 375 -640 399 -612 612 -640 480 -640 480 -640 480 -500 375 -640 480 -500 310 -640 480 -640 425 -500 269 -612 612 -640 360 -640 480 -640 419 -640 427 -500 332 -640 480 -375 500 -500 357 -480 640 -640 427 -152 205 -640 426 -500 375 -640 424 -427 640 -640 427 -640 427 -480 640 -640 427 -640 480 -640 442 -480 640 -427 640 -500 333 -632 640 -500 337 -640 428 -375 500 -436 640 -640 428 -500 333 -640 480 -480 640 -640 480 -640 480 -640 360 -640 480 -640 466 -480 640 -640 427 -360 480 -640 480 -640 427 -500 348 -480 640 -640 426 -457 640 -640 427 -640 480 -640 480 -480 640 -640 426 -640 427 -360 640 -640 606 -612 612 -640 480 -640 480 -442 640 -640 427 -427 640 -640 428 -640 480 -640 480 -640 457 -612 612 -640 427 -500 375 -640 512 -640 480 -500 375 -640 428 -426 640 -640 480 -640 480 -640 480 -640 480 -640 480 -480 640 -640 459 -640 426 -480 640 -640 425 -550 365 -640 359 -640 480 -640 480 -640 480 -640 427 -640 427 -640 425 -640 415 -464 640 -424 640 -640 480 -428 640 -640 353 -640 426 -640 427 -640 461 -640 378 -640 427 -640 254 -640 424 -640 424 -380 640 -427 640 -640 427 -640 427 -500 333 -640 480 -640 430 -427 640 -640 480 -612 612 -334 500 -640 427 -640 433 -640 480 -500 375 -640 427 -640 313 -478 640 -640 481 -480 640 -640 427 -529 640 -640 480 -640 480 -478 640 -640 448 -640 640 -640 427 -640 496 -640 480 -640 428 -640 480 -640 391 -640 427 -640 590 -500 167 -640 505 -427 640 -640 480 -640 480 -612 612 -640 329 -640 425 -612 612 -640 478 -640 360 -427 640 -640 465 -640 634 -640 636 -640 429 -427 640 -640 427 -640 480 -640 427 -480 640 -640 427 -640 480 -640 480 -357 500 -492 640 -640 360 -612 612 -640 480 -427 640 -427 640 -480 640 -640 429 -500 375 -500 375 -600 445 -500 314 -640 480 -640 428 -500 374 -640 426 -480 640 -640 482 -640 425 -640 480 -640 430 -546 640 -640 427 -640 480 -640 480 -640 480 -640 480 -415 500 -640 473 -640 480 -500 352 -640 428 -612 612 -640 477 -640 480 -640 480 -503 640 -480 640 -640 427 -480 640 -500 375 -640 480 -564 640 -424 640 -427 640 -640 426 -640 500 -640 480 -640 321 -612 612 -640 480 -640 360 -640 537 -640 428 -500 375 -640 427 -500 332 -376 500 -631 640 -373 500 -427 640 -640 427 -640 425 -640 427 -428 640 -500 375 -500 332 -640 480 -640 480 -640 424 -333 500 -640 424 -640 471 -640 478 -500 333 -640 414 -640 427 -640 480 -426 640 -640 427 -427 640 -427 640 -640 424 -640 480 -640 320 -640 480 -640 477 -427 640 -640 427 -640 457 -640 640 -612 612 -480 640 -500 332 -640 384 -427 640 -640 427 -640 433 -640 395 -640 480 -350 400 -500 375 -426 640 -640 427 -600 487 -500 375 -427 640 -427 640 -640 270 -640 480 -480 640 -375 500 -500 375 -640 479 -640 480 -375 500 -640 480 -640 354 -509 640 -480 640 -640 434 -487 640 -640 427 -480 640 -640 426 -640 428 -500 333 -640 427 -640 425 -500 375 -500 375 -640 427 -640 429 -640 458 -480 640 -477 640 -640 428 -640 427 -480 640 -640 427 -640 427 -640 480 -640 359 -640 391 -480 640 -640 425 -427 640 -640 640 -640 425 -640 616 -640 480 -360 640 -640 480 -640 480 -500 375 -427 640 -498 640 -640 432 -457 640 -640 480 -640 480 -640 427 -640 361 -640 380 -640 480 -640 479 -640 480 -640 494 -640 427 -640 428 -480 640 -427 640 -640 427 -640 427 -640 480 -640 480 -500 375 -640 425 -640 486 -640 480 -640 427 -640 467 -640 480 -426 640 -640 427 -640 401 -640 427 -640 429 -426 640 -640 480 -640 480 -480 640 -640 427 -640 413 -640 303 -640 427 -640 480 -640 441 -500 375 -334 500 -640 424 -640 426 -640 480 -640 426 -640 360 -427 640 -427 640 -500 371 -640 472 -640 314 -600 480 -427 640 -500 375 -480 640 -445 500 -640 480 -612 612 -482 294 -427 640 -640 427 -427 640 -640 425 -360 640 -640 480 -426 640 -539 640 -480 640 -500 375 -640 480 -493 640 -640 426 -426 640 -640 512 -640 364 -640 622 -500 375 -616 640 -640 425 -375 500 -640 359 -640 480 -640 480 -640 480 -640 426 -427 640 -640 449 -640 512 -640 425 -640 427 -640 425 -480 640 -480 640 -640 480 -640 480 -640 640 -640 438 -640 428 -640 346 -640 513 -480 640 -363 640 -424 640 -640 480 -640 480 -640 452 -640 512 -640 425 -500 375 -640 427 -640 427 -640 427 -640 427 -480 640 -640 451 -640 424 -640 478 -640 408 -640 427 -426 640 -640 348 -640 427 -640 360 -640 480 -640 469 -640 480 -640 480 -640 360 -500 375 -612 612 -500 375 -427 640 -640 425 -482 640 -640 480 -640 216 -640 480 -480 640 -640 427 -480 640 -640 478 -640 427 -640 426 -640 480 -640 480 -640 617 -640 427 -640 425 -640 466 -640 480 -640 480 -612 612 -427 640 -612 612 -640 383 -640 480 -426 640 -640 480 -500 375 -640 486 -640 640 -425 640 -612 612 -640 427 -640 438 -640 427 -640 426 -640 427 -480 640 -480 640 -427 640 -480 640 -640 480 -640 427 -612 612 -640 413 -640 480 -480 640 -500 486 -427 640 -640 427 -640 428 -640 426 -640 360 -640 427 -640 434 -418 640 -640 459 -640 481 -640 480 -612 612 -640 480 -640 480 -535 640 -640 480 -640 359 -480 640 -640 427 -640 404 -426 640 -640 480 -640 427 -640 478 -428 640 -640 427 -640 428 -640 427 -428 640 -640 568 -640 425 -428 640 -640 427 -640 480 -428 640 -640 426 -480 640 -500 375 -640 427 -640 480 -640 480 -640 424 -500 375 -640 512 -640 480 -480 640 -472 500 -448 640 -640 480 -640 427 -640 426 -640 427 -640 533 -640 480 -640 512 -640 480 -640 382 -640 424 -640 428 -500 375 -640 426 -640 428 -640 480 -640 427 -640 360 -480 640 -427 640 -640 480 -640 480 -640 426 -640 403 -640 480 -640 426 -640 480 -500 375 -640 372 -640 480 -640 480 -640 480 -500 375 -640 480 -361 500 -500 375 -640 480 -640 427 -640 428 -640 427 -640 480 -426 640 -640 480 -640 427 -640 424 -640 493 -640 426 -500 333 -640 448 -605 640 -500 333 -640 480 -500 500 -640 427 -426 640 -640 625 -640 419 -640 480 -640 478 -640 427 -640 427 -640 480 -640 427 -640 360 -640 427 -640 427 -443 460 -640 480 -500 333 -479 640 -640 381 -500 375 -640 480 -640 480 -360 640 -640 409 -427 640 -640 480 -640 480 -640 426 -640 425 -640 480 -640 480 -640 480 -425 640 -480 640 -640 427 -640 427 -640 480 -640 478 -640 426 -375 500 -640 427 -424 640 -640 427 -612 612 -640 253 -427 640 -425 640 -640 601 -500 366 -360 640 -425 640 -612 612 -640 425 -640 536 -424 640 -500 341 -500 339 -427 640 -640 427 -640 361 -640 480 -640 480 -290 359 -640 482 -427 640 -640 427 -640 427 -427 640 -640 480 -451 640 -640 480 -640 427 -640 427 -640 480 -480 640 -640 512 -640 480 -426 640 -640 360 -640 427 -500 375 -640 480 -612 612 -640 480 -640 400 -640 383 -640 480 -640 640 -500 333 -500 375 -375 500 -640 480 -640 481 -612 612 -640 304 -640 480 -640 480 -480 640 -640 480 -640 427 -500 383 -640 480 -500 383 -640 477 -612 612 -640 480 -426 640 -640 425 -640 480 -612 612 -480 640 -375 500 -640 480 -612 612 -640 428 -500 375 -640 454 -640 480 -640 457 -640 481 -640 359 -612 612 -427 640 -375 500 -375 500 -640 425 -640 404 -612 612 -427 640 -500 334 -640 383 -640 480 -400 300 -640 479 -457 640 -640 432 -333 500 -640 480 -640 480 -427 640 -375 500 -480 640 -640 427 -640 427 -640 425 -640 428 -500 375 -640 427 -469 640 -640 480 -640 480 -640 480 -427 640 -375 500 -333 500 -609 640 -640 427 -640 480 -612 612 -640 506 -373 500 -480 640 -640 480 -640 512 -500 380 -640 480 -612 612 -612 612 -640 427 -640 391 -640 469 -640 481 -640 434 -640 427 -640 480 -375 500 -640 427 -640 325 -640 595 -640 538 -640 512 -640 427 -640 480 -450 300 -640 427 -640 427 -500 375 -640 426 -640 426 -640 480 -640 424 -640 427 -640 482 -640 480 -640 427 -640 513 -640 427 -480 640 -480 640 -427 640 -370 640 -640 480 -640 426 -640 480 -640 427 -480 640 -640 427 -640 425 -640 427 -640 480 -612 612 -335 500 -640 412 -480 640 -480 640 -439 640 -500 382 -640 616 -640 480 -427 640 -640 427 -640 427 -500 189 -438 640 -480 640 -640 426 -640 480 -640 480 -640 427 -500 375 -500 333 -530 640 -640 424 -480 640 -426 640 -426 640 -640 428 -640 426 -640 425 -375 500 -640 424 -500 333 -427 640 -427 640 -435 640 -640 483 -640 315 -640 427 -427 640 -640 360 -640 512 -640 383 -375 500 -478 640 -640 340 -640 426 -640 428 -640 427 -640 480 -250 312 -640 480 -640 427 -640 431 -640 425 -640 426 -640 428 -640 490 -500 375 -640 427 -640 480 -480 640 -640 427 -427 640 -640 427 -480 640 -612 612 -512 640 -640 428 -500 357 -640 480 -640 480 -640 427 -427 640 -640 427 -640 427 -640 427 -640 425 -640 480 -640 480 -612 612 -640 480 -428 640 -500 375 -640 537 -500 333 -640 480 -383 640 -500 375 -370 277 -640 427 -640 404 -640 451 -640 483 -500 375 -640 426 -480 640 -640 427 -480 640 -375 500 -640 427 -640 480 -640 425 -640 366 -428 640 -640 452 -640 426 -425 640 -640 361 -640 381 -640 428 -500 375 -640 360 -426 640 -500 334 -640 427 -500 375 -640 424 -640 427 -500 375 -640 428 -375 500 -640 424 -480 640 -480 640 -375 500 -640 427 -640 480 -640 475 -427 640 -640 423 -640 427 -640 480 -480 640 -640 423 -354 640 -600 450 -480 640 -612 612 -640 427 -375 500 -640 421 -640 408 -480 640 -480 640 -500 375 -640 427 -640 480 -640 360 -640 480 -640 480 -640 640 -640 480 -378 640 -480 640 -375 500 -640 426 -640 423 -375 500 -640 426 -640 425 -500 375 -480 640 -360 640 -640 425 -422 640 -640 427 -640 480 -481 640 -427 640 -640 427 -640 214 -640 426 -500 281 -640 485 -640 425 -640 425 -640 480 -500 375 -640 427 -375 500 -640 480 -640 427 -427 640 -640 513 -640 480 -382 500 -640 428 -640 480 -640 480 -640 564 -640 427 -483 640 -500 321 -640 480 -500 333 -500 347 -480 640 -333 500 -640 427 -640 426 -612 612 -640 427 -640 480 -478 640 -640 427 -640 479 -640 478 -640 427 -640 427 -640 425 -640 457 -333 500 -632 640 -480 640 -640 428 -500 334 -640 363 -452 640 -640 480 -427 640 -640 425 -640 480 -500 486 -640 480 -426 640 -640 381 -426 640 -640 428 -640 481 -640 453 -375 500 -500 338 -640 427 -640 424 -640 480 -640 640 -640 480 -500 375 -640 326 -640 446 -640 427 -376 342 -640 427 -640 512 -500 375 -640 427 -480 640 -640 426 -640 426 -426 640 -640 427 -640 426 -640 427 -640 427 -640 360 -597 640 -640 427 -640 427 -640 480 -640 353 -640 447 -640 427 -368 500 -480 640 -640 425 -640 480 -500 332 -640 480 -640 480 -333 500 -640 426 -640 426 -640 426 -640 480 -500 375 -640 480 -640 427 -404 500 -640 480 -500 375 -640 400 -640 446 -640 233 -480 640 -427 640 -500 375 -640 425 -640 436 -640 480 -320 240 -640 480 -640 451 -640 405 -593 395 -427 640 -640 379 -640 480 -640 427 -432 640 -640 425 -640 427 -640 428 -640 480 -480 640 -500 375 -640 450 -640 480 -428 640 -426 640 -640 419 -375 500 -640 480 -640 427 -640 480 -640 456 -640 436 -500 500 -427 640 -640 427 -334 500 -640 566 -612 612 -640 445 -500 375 -480 640 -640 424 -640 480 -640 434 -640 427 -500 375 -640 480 -480 640 -500 333 -480 640 -640 425 -640 480 -640 480 -334 500 -640 480 -428 640 -640 480 -640 427 -480 320 -480 640 -640 355 -640 411 -500 375 -640 425 -461 615 -640 486 -480 640 -640 427 -640 480 -640 427 -640 373 -500 341 -640 427 -640 480 -640 427 -424 640 -640 480 -640 425 -640 480 -640 208 -640 543 -640 434 -640 480 -428 640 -500 375 -640 480 -640 480 -640 466 -500 375 -640 480 -500 384 -640 426 -640 427 -640 424 -640 480 -640 480 -500 500 -640 427 -480 640 -640 428 -640 427 -640 481 -500 439 -640 458 -640 426 -500 375 -640 425 -640 437 -640 469 -640 426 -640 427 -480 640 -640 480 -640 425 -640 427 -640 481 -640 428 -640 480 -640 426 -612 612 -640 480 -500 476 -500 416 -640 427 -640 450 -424 640 -640 480 -640 428 -640 426 -425 640 -640 479 -640 480 -640 427 -640 427 -426 640 -360 640 -640 425 -519 640 -640 427 -640 441 -640 640 -468 640 -375 500 -500 375 -640 397 -640 480 -427 640 -500 375 -427 640 -500 375 -640 449 -640 215 -640 480 -640 479 -640 480 -640 480 -640 509 -500 375 -427 640 -640 425 -640 428 -640 480 -640 480 -640 480 -640 638 -640 480 -640 480 -640 480 -640 348 -640 454 -640 430 -640 480 -427 640 -640 425 -640 480 -640 400 -426 640 -640 457 -640 427 -398 500 -640 480 -640 480 -427 640 -640 427 -480 640 -640 428 -640 480 -640 427 -640 427 -640 480 -500 313 -640 427 -332 500 -480 640 -640 480 -424 640 -640 480 -480 640 -480 640 -427 640 -423 640 -640 427 -428 640 -640 479 -640 480 -459 640 -640 480 -640 427 -640 480 -500 375 -640 426 -640 480 -640 427 -640 423 -640 480 -640 640 -426 640 -640 427 -500 375 -500 333 -640 428 -640 480 -640 426 -375 500 -640 427 -640 360 -640 481 -640 426 -500 431 -640 427 -640 480 -640 424 -640 399 -640 426 -640 452 -427 640 -334 500 -333 500 -314 500 -640 326 -349 640 -640 407 -526 640 -640 426 -434 640 -640 427 -426 640 -500 333 -640 425 -640 480 -640 480 -640 427 -640 436 -640 360 -482 484 -500 375 -640 480 -427 640 -500 375 -640 426 -500 334 -640 588 -427 640 -640 480 -640 425 -640 426 -640 480 -358 373 -344 500 -640 427 -561 640 -500 375 -426 640 -427 640 -640 480 -522 640 -640 480 -500 359 -640 640 -640 480 -640 480 -640 480 -475 640 -500 376 -640 427 -640 480 -640 411 -640 480 -640 486 -500 368 -500 375 -640 392 -640 429 -478 640 -640 480 -334 500 -640 428 -640 432 -612 612 -640 427 -640 480 -383 640 -640 480 -640 480 -539 640 -427 640 -640 480 -480 640 -640 424 -640 426 -640 426 -480 640 -500 375 -480 640 -640 360 -640 426 -640 426 -640 426 -640 427 -640 424 -640 383 -430 500 -640 480 -600 450 -500 375 -640 480 -640 427 -640 640 -640 426 -640 480 -640 480 -500 333 -426 640 -333 500 -640 480 -640 426 -500 332 -480 640 -640 480 -640 480 -426 640 -640 480 -500 375 -480 640 -500 208 -640 478 -612 612 -640 631 -640 480 -500 364 -640 640 -640 305 -449 640 -640 409 -640 426 -640 480 -640 480 -640 427 -640 427 -640 422 -426 640 -640 480 -640 428 -481 640 -500 375 -640 337 -640 480 -500 374 -640 480 -640 416 -500 375 -640 427 -640 427 -480 640 -427 640 -640 436 -640 480 -428 640 -426 640 -640 446 -640 592 -640 480 -640 360 -640 427 -640 480 -375 500 -640 427 -375 500 -333 500 -640 428 -427 640 -640 480 -500 375 -640 360 -600 400 -480 640 -500 331 -640 475 -640 427 -500 375 -640 427 -640 425 -426 640 -640 381 -640 427 -243 360 -480 640 -500 400 -640 480 -640 480 -640 359 -640 427 -640 426 -640 640 -640 427 -640 425 -640 454 -640 425 -640 427 -640 480 -439 640 -640 480 -640 480 -640 480 -639 640 -640 333 -640 480 -427 640 -640 480 -640 435 -640 480 -640 480 -640 478 -640 480 -640 445 -500 334 -640 480 -640 428 -640 427 -640 427 -500 375 -640 425 -640 429 -640 480 -640 427 -472 640 -640 480 -640 360 -640 424 -640 361 -640 480 -640 431 -640 426 -640 428 -640 480 -500 333 -640 427 -640 425 -640 425 -640 480 -486 640 -426 640 -640 480 -500 375 -480 640 -640 480 -427 640 -640 479 -640 409 -640 480 -640 480 -640 427 -640 480 -640 427 -427 640 -500 375 -480 640 -427 640 -500 375 -640 480 -640 481 -500 357 -640 480 -375 500 -640 425 -640 480 -480 640 -640 480 -640 457 -640 480 -424 640 -640 383 -640 480 -640 492 -640 480 -640 480 -427 640 -480 640 -640 427 -428 640 -640 427 -640 480 -640 480 -640 427 -612 612 -640 480 -640 425 -640 427 -427 640 -480 640 -640 480 -500 375 -500 366 -640 480 -640 484 -500 375 -640 427 -640 480 -640 420 -500 333 -640 480 -640 385 -640 426 -640 427 -500 325 -640 500 -427 640 -640 426 -640 480 -500 376 -640 480 -500 375 -640 427 -555 640 -640 427 -640 404 -480 640 -640 480 -427 640 -541 640 -640 359 -640 427 -427 640 -640 427 -640 426 -640 427 -600 600 -640 424 -640 427 -640 424 -640 480 -480 640 -640 480 -640 495 -500 375 -640 479 -500 376 -640 489 -333 500 -490 640 -500 375 -640 628 -640 427 -640 427 -640 433 -640 427 -640 424 -640 480 -416 500 -640 569 -428 640 -480 640 -480 640 -427 640 -640 450 -427 640 -500 375 -640 427 -500 375 -640 480 -640 427 -640 434 -640 424 -640 426 -640 425 -640 480 -440 640 -640 480 -640 425 -640 480 -500 375 -640 480 -640 480 -640 480 -480 640 -500 426 -640 480 -640 480 -640 480 -640 484 -480 640 -640 471 -426 640 -427 640 -640 427 -500 375 -640 480 -640 426 -640 479 -640 427 -481 640 -640 428 -480 640 -640 480 -640 427 -640 640 -640 428 -500 333 -640 427 -640 424 -333 500 -640 424 -640 478 -640 480 -640 427 -480 640 -640 428 -640 480 -640 480 -331 500 -426 640 -640 424 -640 427 -640 360 -640 424 -427 640 -640 480 -480 640 -640 427 -640 360 -640 393 -640 428 -640 427 -640 424 -333 500 -480 640 -640 424 -640 640 -640 426 -640 429 -640 426 -640 599 -640 480 -480 640 -640 480 -640 408 -375 500 -640 430 -425 640 -640 426 -375 500 -427 640 -640 480 -640 427 -426 640 -640 396 -480 640 -640 360 -640 599 -640 479 -640 425 -480 640 -640 480 -640 480 -640 427 -640 427 -640 427 -425 500 -480 640 -640 448 -383 640 -640 480 -427 640 -640 480 -425 640 -640 477 -640 427 -333 500 -640 480 -500 375 -500 333 -640 427 -640 534 -640 480 -640 426 -640 480 -640 426 -640 480 -500 377 -640 480 -480 640 -640 480 -640 429 -640 426 -480 640 -640 478 -640 360 -500 333 -640 480 -640 428 -425 640 -640 480 -640 480 -500 375 -612 612 -500 333 -640 480 -640 479 -640 376 -640 480 -640 508 -640 425 -640 427 -500 467 -500 375 -294 500 -640 640 -640 480 -433 640 -480 640 -640 640 -500 351 -640 427 -640 427 -640 334 -640 428 -429 640 -457 640 -640 480 -500 436 -500 356 -640 425 -612 612 -500 493 -305 640 -640 480 -640 480 -640 480 -640 427 -640 427 -510 640 -424 640 -470 300 -640 480 -640 466 -640 480 -640 480 -640 360 -640 427 -408 640 -480 320 -640 427 -640 480 -500 375 -495 640 -500 379 -426 640 -640 480 -640 426 -640 513 -500 375 -479 640 -640 480 -500 375 -640 478 -480 640 -500 375 -640 480 -640 429 -500 375 -427 640 -640 427 -640 426 -640 425 -640 609 -640 360 -594 447 -640 443 -640 427 -500 375 -640 480 -640 426 -500 375 -640 480 -612 612 -500 375 -640 481 -640 360 -480 640 -640 478 -631 640 -640 427 -640 480 -640 477 -640 480 -640 480 -429 640 -500 375 -640 571 -640 640 -640 480 -640 427 -640 426 -640 524 -640 480 -640 427 -640 394 -612 612 -640 421 -640 426 -480 640 -640 480 -640 640 -457 640 -640 427 -640 248 -427 640 -640 480 -640 426 -427 640 -500 400 -500 375 -640 480 -500 376 -640 506 -640 480 -512 640 -640 480 -640 427 -640 480 -640 427 -480 640 -427 640 -640 425 -500 379 -640 361 -426 640 -500 375 -640 480 -478 640 -640 427 -484 640 -640 427 -500 375 -455 640 -480 640 -500 335 -640 396 -326 500 -640 427 -640 426 -640 425 -549 640 -640 480 -640 426 -640 480 -427 640 -640 424 -640 480 -425 640 -480 640 -640 329 -640 480 -480 640 -500 384 -400 400 -640 480 -640 424 -640 386 -640 360 -640 427 -640 480 -640 427 -640 480 -640 426 -640 480 -480 640 -427 640 -500 375 -640 540 -640 428 -640 425 -640 427 -640 480 -333 500 -563 640 -640 640 -626 526 -640 428 -640 480 -640 427 -640 360 -500 331 -427 640 -640 423 -640 483 -426 640 -640 480 -640 480 -640 480 -427 640 -640 427 -640 640 -500 375 -640 360 -518 640 -426 640 -640 458 -640 427 -640 427 -640 480 -640 593 -640 522 -375 500 -481 640 -640 480 -640 480 -640 403 -427 640 -480 640 -423 640 -426 640 -640 490 -500 375 -640 425 -640 480 -480 640 -640 360 -640 173 -640 480 -640 480 -480 640 -615 640 -640 426 -640 427 -480 640 -480 640 -640 480 -640 512 -640 380 -640 640 -500 400 -500 375 -640 480 -640 426 -640 427 -640 432 -402 500 -640 480 -480 640 -640 480 -597 640 -640 292 -640 426 -640 480 -640 480 -480 640 -640 431 -612 612 -640 427 -640 478 -640 480 -546 640 -640 427 -500 375 -478 640 -640 481 -640 439 -640 426 -640 486 -427 640 -640 427 -427 640 -500 375 -500 375 -640 505 -640 235 -640 428 -640 425 -640 427 -640 480 -478 640 -640 426 -640 427 -640 480 -640 478 -480 640 -512 640 -612 612 -640 427 -480 640 -500 333 -640 424 -375 500 -640 587 -379 335 -640 480 -640 414 -640 426 -400 500 -613 640 -640 480 -427 640 -640 356 -640 480 -480 640 -640 480 -640 480 -640 480 -640 427 -640 640 -640 425 -491 500 -640 478 -480 640 -489 500 -500 375 -640 480 -380 640 -334 500 -429 480 -640 417 -640 427 -640 480 -640 429 -640 426 -461 640 -425 640 -640 480 -640 480 -640 427 -640 427 -448 640 -640 480 -640 427 -640 480 -480 640 -640 429 -427 640 -640 427 -612 612 -640 427 -640 427 -427 640 -500 375 -640 478 -640 429 -582 640 -640 480 -453 640 -640 426 -640 431 -640 427 -640 478 -612 612 -500 410 -360 640 -640 425 -427 640 -640 426 -640 427 -561 640 -640 427 -640 426 -640 427 -640 427 -640 428 -640 480 -640 427 -640 427 -538 640 -573 640 -500 364 -640 426 -467 500 -640 451 -640 427 -640 424 -432 324 -640 428 -640 480 -640 427 -640 437 -334 500 -640 576 -640 430 -640 480 -640 555 -500 375 -500 375 -640 480 -425 640 -500 357 -640 427 -640 427 -640 480 -640 427 -640 427 -427 640 -461 640 -640 480 -425 640 -500 335 -640 480 -375 500 -500 400 -640 427 -640 427 -640 480 -427 640 -640 480 -640 427 -640 480 -448 299 -500 375 -640 426 -640 427 -480 640 -480 640 -640 401 -375 500 -640 480 -640 427 -612 612 -640 484 -640 480 -640 427 -426 640 -480 640 -480 640 -640 429 -640 426 -640 427 -640 480 -640 427 -480 640 -640 480 -426 640 -640 427 -640 480 -640 320 -500 375 -640 640 -427 640 -640 480 -423 640 -640 480 -640 414 -640 506 -480 640 -480 640 -640 367 -640 351 -300 400 -640 322 -640 428 -500 382 -640 428 -640 480 -640 481 -640 427 -425 640 -640 425 -514 640 -640 480 -500 368 -640 360 -640 466 -640 503 -640 427 -500 282 -640 427 -640 427 -640 396 -480 640 -480 640 -640 425 -428 640 -500 333 -640 480 -500 333 -640 427 -640 480 -612 612 -480 640 -640 478 -640 480 -640 428 -640 427 -332 500 -640 427 -480 640 -640 426 -480 640 -640 480 -640 428 -640 429 -640 282 -640 493 -640 389 -375 500 -640 428 -640 427 -500 375 -480 640 -640 480 -640 480 -640 426 -640 400 -640 640 -375 500 -640 480 -428 640 -414 500 -640 544 -640 640 -640 427 -640 427 -480 640 -427 640 -640 480 -484 640 -375 500 -427 640 -640 360 -640 480 -619 640 -640 480 -480 640 -640 640 -640 429 -427 640 -640 480 -640 424 -640 480 -640 428 -425 640 -500 326 -640 427 -428 640 -640 589 -640 426 -480 640 -640 480 -500 500 -500 375 -480 640 -480 640 -500 332 -640 427 -640 428 -640 480 -500 375 -640 446 -640 480 -640 480 -427 640 -640 480 -640 403 -590 590 -500 346 -640 426 -640 428 -640 480 -500 375 -489 640 -400 500 -640 428 -640 359 -640 480 -480 640 -640 424 -424 640 -640 427 -426 640 -640 480 -640 427 -640 478 -640 480 -478 640 -500 374 -427 640 -640 424 -640 480 -640 427 -640 480 -612 612 -640 396 -640 427 -500 375 -640 546 -640 408 -640 480 -640 426 -500 334 -640 428 -640 480 -640 489 -480 640 -480 640 -640 480 -640 480 -640 427 -500 336 -640 427 -500 375 -480 640 -640 427 -640 428 -500 376 -640 480 -500 336 -640 480 -640 426 -500 334 -480 360 -640 480 -640 402 -424 640 -480 640 -640 480 -640 480 -612 612 -640 518 -640 484 -427 640 -612 612 -640 480 -480 640 -485 500 -375 500 -565 640 -426 640 -375 500 -640 603 -640 480 -427 640 -640 517 -625 640 -640 388 -480 640 -500 332 -512 640 -640 427 -612 612 -630 640 -640 601 -640 480 -640 506 -480 640 -640 426 -640 427 -640 480 -640 427 -428 640 -640 427 -333 500 -500 333 -640 480 -500 375 -640 480 -640 480 -640 480 -640 429 -500 333 -640 427 -640 427 -640 478 -640 458 -640 480 -500 335 -427 640 -397 567 -640 480 -480 640 -640 427 -640 427 -640 480 -429 640 -640 425 -640 640 -640 428 -640 480 -500 332 -640 383 -480 640 -612 612 -480 640 -640 426 -640 480 -445 640 -640 427 -500 375 -640 427 -640 329 -640 480 -640 480 -640 492 -640 427 -640 480 -640 454 -640 360 -640 427 -425 640 -640 480 -640 242 -480 640 -640 425 -640 480 -640 461 -640 480 -640 423 -640 480 -640 480 -640 631 -640 582 -480 640 -500 375 -640 480 -640 480 -640 428 -640 429 -640 480 -640 425 -640 480 -640 480 -640 480 -640 480 -368 500 -640 401 -640 480 -427 640 -640 480 -640 428 -640 457 -640 425 -480 640 -640 480 -500 333 -640 480 -640 427 -640 481 -640 427 -480 640 -640 480 -500 335 -500 329 -427 640 -640 427 -640 427 -640 427 -640 480 -640 457 -500 375 -640 428 -431 640 -640 423 -640 640 -640 524 -428 640 -640 426 -640 428 -640 426 -640 425 -375 500 -500 175 -500 500 -448 640 -640 429 -612 612 -640 480 -640 427 -640 480 -640 480 -640 384 -640 514 -640 480 -640 427 -640 427 -403 604 -640 512 -640 480 -612 612 -500 331 -640 427 -640 259 -500 375 -500 375 -640 480 -640 427 -640 426 -640 480 -640 299 -640 425 -640 427 -640 512 -479 640 -500 333 -640 427 -640 512 -640 373 -480 640 -500 375 -640 427 -640 424 -500 375 -640 429 -425 640 -480 640 -399 640 -640 480 -640 482 -500 322 -640 480 -640 480 -640 508 -640 424 -640 480 -640 489 -480 640 -640 427 -640 458 -640 466 -640 480 -500 375 -640 424 -500 387 -640 480 -427 640 -640 495 -426 640 -640 480 -640 480 -480 640 -640 408 -480 640 -480 640 -640 480 -426 640 -640 480 -640 424 -640 427 -640 478 -640 478 -640 474 -375 500 -640 480 -640 427 -640 480 -448 336 -500 345 -460 500 -640 480 -640 480 -360 640 -640 386 -640 344 -428 640 -480 640 -500 412 -640 427 -640 480 -640 480 -500 332 -640 427 -640 572 -640 480 -640 387 -500 333 -445 640 -480 640 -640 423 -500 366 -640 359 -480 640 -640 426 -612 612 -500 375 -480 640 -640 480 -640 361 -640 480 -640 431 -640 427 -640 426 -640 427 -480 640 -640 230 -640 361 -640 480 -640 483 -640 480 -500 375 -480 640 -640 458 -640 640 -640 480 -640 426 -480 360 -640 427 -640 480 -640 482 -640 425 -640 410 -640 480 -640 458 -640 370 -640 426 -640 480 -500 375 -640 480 -424 640 -500 333 -640 427 -500 375 -494 640 -640 427 -480 640 -640 480 -640 427 -640 400 -333 500 -375 500 -500 333 -480 640 -640 427 -640 426 -640 480 -500 333 -640 480 -473 640 -640 480 -480 640 -600 400 -640 480 -640 403 -480 640 -480 640 -500 375 -500 375 -480 640 -500 375 -579 640 -640 426 -480 640 -640 404 -640 480 -640 480 -640 426 -640 426 -640 512 -640 480 -640 427 -500 333 -427 640 -640 427 -640 360 -426 640 -640 480 -640 480 -425 640 -591 640 -500 500 -640 427 -428 640 -640 380 -640 480 -640 480 -640 480 -640 426 -640 171 -500 375 -458 640 -640 426 -500 448 -640 424 -640 427 -612 612 -500 384 -333 500 -640 480 -640 360 -519 640 -640 427 -500 375 -500 375 -640 480 -425 640 -640 512 -640 549 -640 400 -640 480 -480 640 -640 640 -464 640 -640 426 -640 353 -480 640 -640 427 -640 463 -500 375 -480 640 -500 375 -474 640 -640 428 -480 384 -640 480 -640 480 -640 439 -508 640 -612 612 -640 427 -640 480 -640 402 -640 338 -640 361 -500 374 -640 427 -640 480 -640 416 -452 500 -612 612 -640 640 -375 500 -480 640 -640 480 -640 428 -500 344 -640 427 -640 480 -640 427 -640 427 -640 424 -640 480 -640 425 -640 471 -640 480 -640 431 -640 427 -640 480 -640 512 -640 480 -640 480 -640 427 -640 480 -425 640 -640 427 -640 441 -640 480 -480 640 -640 427 -640 360 -500 375 -640 425 -481 640 -640 421 -640 480 -450 640 -640 454 -640 425 -427 640 -640 360 -640 480 -640 480 -640 427 -640 480 -640 480 -640 427 -640 480 -427 640 -424 640 -640 480 -640 461 -500 154 -480 640 -375 500 -640 427 -640 480 -581 640 -426 640 -640 480 -512 640 -425 640 -640 428 -500 332 -640 427 -640 427 -640 478 -640 433 -640 463 -640 444 -640 360 -640 480 -480 640 -640 429 -640 426 -640 480 -334 500 -640 425 -640 434 -640 640 -640 640 -640 359 -640 480 -640 427 -640 424 -640 482 -640 480 -500 324 -640 428 -640 371 -640 427 -360 640 -640 480 -427 640 -640 427 -640 173 -640 480 -640 426 -640 487 -375 500 -640 480 -500 334 -500 375 -334 500 -640 426 -640 480 -640 480 -480 640 -640 480 -480 640 -640 426 -640 480 -640 483 -640 427 -385 640 -640 478 -640 480 -640 427 -640 359 -640 480 -640 427 -640 480 -640 480 -640 640 -640 480 -640 425 -603 640 -640 512 -640 480 -640 424 -640 640 -640 427 -640 482 -500 332 -640 401 -640 480 -640 426 -640 480 -640 425 -335 246 -640 480 -240 363 -480 640 -500 375 -640 480 -500 375 -640 426 -640 428 -640 427 -375 500 -640 421 -480 640 -500 375 -604 453 -640 427 -640 478 -400 600 -480 640 -640 640 -612 612 -640 427 -228 500 -640 462 -640 487 -272 480 -640 480 -480 640 -640 427 -427 640 -435 640 -375 500 -640 480 -640 427 -640 452 -640 428 -427 640 -500 231 -375 500 -640 480 -563 640 -640 479 -426 640 -640 360 -428 640 -640 608 -640 361 -640 480 -640 427 -640 480 -480 640 -375 500 -640 640 -640 426 -640 353 -640 480 -491 500 -640 424 -640 470 -640 337 -640 468 -640 480 -640 432 -640 502 -640 360 -640 480 -456 640 -499 640 -640 480 -425 640 -640 399 -640 480 -425 640 -640 480 -640 426 -500 319 -640 427 -500 335 -426 640 -640 478 -375 500 -426 640 -640 478 -468 298 -640 640 -612 612 -640 421 -500 375 -426 640 -640 640 -500 338 -428 640 -500 333 -480 640 -329 497 -640 640 -500 500 -640 431 -505 640 -640 425 -500 375 -480 640 -480 640 -612 612 -379 640 -640 425 -640 479 -640 427 -640 480 -637 640 -500 336 -500 375 -640 425 -640 426 -640 306 -640 514 -640 640 -333 500 -640 427 -480 640 -612 612 -640 480 -640 480 -421 640 -640 480 -429 640 -640 480 -612 612 -640 480 -640 480 -640 425 -516 640 -480 640 -480 640 -640 427 -640 426 -640 480 -640 426 -640 428 -640 480 -640 425 -480 640 -640 480 -480 440 -500 394 -426 640 -612 612 -500 375 -500 334 -500 394 -640 427 -640 480 -640 480 -640 480 -640 427 -640 428 -500 375 -640 480 -427 640 -640 478 -375 500 -640 426 -389 640 -640 480 -480 640 -640 427 -500 334 -426 640 -500 375 -640 427 -640 426 -640 406 -640 480 -640 478 -640 401 -428 640 -640 424 -375 500 -640 427 -640 480 -640 427 -426 640 -640 427 -480 640 -640 427 -640 633 -375 500 -640 429 -640 426 -640 518 -640 480 -640 427 -640 426 -640 426 -640 480 -500 366 -375 500 -480 640 -640 591 -640 480 -640 427 -640 426 -459 500 -500 335 -640 427 -640 364 -640 427 -640 578 -640 459 -480 640 -640 480 -467 352 -500 500 -640 480 -640 426 -640 360 -640 480 -640 480 -640 429 -480 640 -640 311 -480 640 -563 422 -640 474 -640 360 -640 427 -640 426 -640 480 -500 375 -640 417 -640 427 -480 640 -640 480 -154 205 -500 375 -640 480 -640 427 -640 418 -480 640 -640 530 -375 500 -431 640 -500 375 -640 480 -500 334 -640 416 -640 353 -427 640 -429 640 -640 480 -640 480 -640 480 -480 640 -640 480 -500 334 -640 427 -478 640 -640 427 -500 375 -500 332 -640 480 -640 480 -640 480 -640 427 -640 427 -640 480 -640 480 -640 480 -640 480 -612 612 -640 379 -640 427 -333 500 -640 453 -640 426 -640 425 -375 500 -640 480 -640 427 -480 640 -640 427 -640 437 -478 640 -424 640 -480 640 -480 640 -478 640 -427 640 -640 583 -480 640 -640 424 -480 640 -375 500 -640 428 -640 426 -640 427 -375 500 -640 428 -427 640 -480 640 -640 427 -623 640 -640 480 -640 480 -640 480 -500 333 -640 425 -480 640 -463 640 -480 640 -640 426 -500 333 -640 427 -640 480 -612 612 -478 640 -640 427 -640 480 -640 480 -424 640 -640 478 -640 427 -640 480 -612 612 -640 480 -427 640 -640 428 -500 375 -334 500 -426 640 -333 500 -640 459 -640 427 -640 427 -640 427 -640 428 -480 640 -640 480 -500 333 -427 640 -500 333 -640 427 -500 375 -427 640 -558 640 -500 375 -373 500 -640 480 -640 480 -640 480 -500 249 -480 640 -500 367 -640 427 -640 480 -640 480 -640 427 -480 640 -640 480 -480 640 -604 453 -640 429 -512 640 -640 360 -640 339 -631 640 -425 640 -640 427 -640 480 -640 425 -640 480 -640 480 -427 640 -612 612 -480 640 -640 408 -470 640 -640 426 -500 281 -640 480 -640 428 -640 426 -375 500 -640 426 -375 500 -640 427 -640 427 -427 640 -640 480 -427 640 -640 427 -640 480 -640 338 -640 480 -640 602 -640 428 -480 640 -640 427 -500 329 -424 640 -375 500 -640 480 -640 406 -480 640 -500 375 -640 427 -512 640 -471 640 -640 424 -480 640 -640 443 -640 360 -640 427 -640 480 -480 640 -640 480 -500 434 -431 640 -640 427 -640 480 -480 360 -500 300 -640 426 -432 640 -640 480 -640 424 -640 480 -427 640 -427 640 -640 425 -640 427 -640 480 -640 427 -640 428 -432 288 -640 426 -500 332 -640 471 -640 348 -480 640 -480 640 -640 480 -320 240 -612 612 -640 427 -500 375 -333 500 -640 427 -640 480 -479 640 -640 480 -500 343 -640 622 -640 427 -640 426 -273 500 -480 640 -640 424 -480 640 -375 640 -612 612 -500 375 -640 480 -640 573 -480 640 -640 427 -640 480 -640 480 -640 426 -640 458 -640 426 -375 500 -500 375 -640 401 -640 480 -422 640 -640 426 -500 336 -640 412 -640 427 -640 480 -428 640 -427 640 -320 240 -427 640 -640 480 -640 480 -640 478 -640 480 -640 427 -500 375 -612 612 -479 640 -640 454 -640 427 -640 480 -640 427 -640 480 -500 375 -640 480 -500 375 -303 500 -640 427 -612 612 -486 640 -480 640 -640 428 -640 426 -480 640 -383 640 -640 480 -480 640 -640 424 -640 428 -640 409 -640 427 -640 480 -640 428 -500 500 -640 427 -556 640 -427 640 -640 480 -320 240 -640 640 -500 332 -640 480 -640 427 -612 612 -640 480 -640 480 -480 640 -456 640 -612 612 -640 400 -640 426 -640 410 -640 360 -439 640 -640 480 -612 612 -640 426 -640 480 -441 640 -500 310 -640 427 -640 427 -640 468 -640 427 -500 375 -640 480 -640 480 -427 640 -612 612 -480 640 -480 640 -640 427 -640 480 -640 427 -500 375 -640 480 -640 480 -640 427 -640 480 -480 640 -500 375 -640 427 -640 480 -612 612 -500 335 -640 428 -640 427 -640 425 -640 360 -640 480 -640 427 -640 480 -640 424 -640 480 -640 427 -640 427 -640 428 -640 426 -640 423 -640 468 -640 483 -640 616 -640 480 -640 427 -427 640 -640 480 -640 427 -640 427 -640 480 -640 490 -448 336 -480 640 -480 640 -333 500 -640 431 -640 591 -640 480 -640 427 -500 490 -640 480 -640 427 -640 442 -640 480 -640 480 -640 428 -640 427 -640 480 -640 427 -640 427 -640 427 -640 482 -640 361 -640 426 -640 397 -624 640 -640 427 -640 426 -640 480 -640 480 -500 375 -640 480 -514 640 -500 333 -640 480 -640 406 -328 500 -640 480 -500 356 -640 428 -640 480 -640 426 -640 427 -640 427 -640 464 -640 427 -640 480 -500 333 -640 480 -640 480 -640 480 -640 480 -375 207 -640 427 -640 480 -640 366 -458 640 -640 427 -640 426 -640 480 -481 640 -640 480 -640 425 -640 471 -500 333 -640 426 -500 375 -640 478 -640 427 -612 612 -640 484 -500 331 -500 284 -526 640 -426 640 -640 480 -640 426 -640 427 -640 427 -640 376 -640 480 -386 500 -640 425 -640 425 -374 500 -640 416 -640 499 -480 640 -640 427 -457 640 -640 480 -579 640 -640 511 -640 480 -640 428 -500 354 -500 375 -640 480 -426 640 -640 394 -640 426 -520 373 -480 640 -640 480 -480 640 -640 480 -640 480 -500 346 -640 480 -593 640 -640 480 -344 500 -640 393 -500 375 -480 640 -640 480 -500 458 -640 425 -480 640 -640 426 -640 480 -500 375 -438 640 -640 480 -640 427 -500 333 -612 612 -640 480 -500 408 -640 427 -640 480 -427 640 -640 427 -640 480 -640 427 -640 457 -640 427 -640 405 -480 640 -640 480 -640 426 -640 426 -500 343 -500 401 -427 640 -574 640 -640 480 -335 500 -500 375 -640 480 -640 480 -640 427 -640 480 -640 427 -640 564 -640 542 -500 500 -640 409 -480 640 -612 612 -428 640 -640 426 -640 480 -640 427 -640 424 -640 633 -640 480 -640 426 -640 480 -640 361 -640 426 -640 266 -640 424 -500 307 -640 480 -425 640 -500 368 -568 640 -640 453 -640 427 -640 503 -500 375 -640 374 -640 359 -640 427 -640 448 -426 640 -640 480 -400 500 -500 333 -640 427 -640 426 -640 427 -640 601 -640 427 -640 513 -640 480 -640 425 -427 640 -640 480 -640 426 -500 375 -640 427 -427 640 -640 480 -500 425 -500 340 -640 427 -640 480 -640 359 -640 478 -640 480 -427 640 -640 360 -640 376 -640 460 -640 406 -640 480 -640 427 -612 612 -500 375 -419 640 -640 588 -640 428 -480 640 -375 500 -640 427 -640 480 -640 480 -640 423 -640 480 -640 480 -640 513 -640 640 -640 361 -640 498 -640 426 -640 480 -640 427 -500 375 -640 427 -270 360 -457 640 -426 640 -386 640 -501 640 -479 640 -640 634 -640 426 -640 480 -521 640 -640 426 -428 640 -640 426 -500 375 -640 427 -640 360 -427 640 -640 480 -640 427 -431 259 -640 426 -640 604 -600 386 -393 500 -640 426 -640 478 -640 425 -612 612 -332 500 -639 640 -500 640 -640 448 -500 333 -500 333 -640 480 -640 427 -640 427 -500 349 -640 435 -640 424 -640 512 -500 333 -640 426 -640 480 -640 480 -480 640 -500 449 -640 480 -640 480 -640 427 -640 481 -480 640 -500 375 -640 425 -640 478 -500 330 -640 554 -640 479 -640 480 -640 480 -640 348 -640 427 -640 480 -640 480 -640 427 -640 425 -624 640 -640 480 -640 424 -531 640 -640 381 -640 480 -640 428 -640 427 -640 437 -393 500 -374 500 -640 480 -640 443 -640 480 -640 480 -640 428 -640 428 -640 443 -500 334 -640 427 -500 346 -640 430 -640 427 -640 427 -500 375 -640 354 -480 640 -640 428 -640 480 -360 640 -640 480 -426 640 -640 391 -640 478 -640 512 -640 480 -500 375 -276 410 -500 375 -480 640 -478 640 -427 640 -640 422 -640 425 -640 480 -640 426 -640 480 -640 480 -640 426 -640 520 -640 426 -640 480 -640 488 -612 612 -333 500 -640 480 -500 375 -640 427 -281 500 -640 426 -640 480 -413 500 -640 427 -640 480 -640 480 -640 427 -640 428 -503 640 -640 427 -640 359 -640 480 -640 425 -640 425 -640 427 -428 640 -640 480 -640 182 -640 427 -500 375 -479 640 -612 612 -480 640 -640 480 -640 480 -600 400 -640 427 -640 386 -640 480 -640 480 -375 500 -640 480 -640 480 -427 640 -640 427 -640 480 -640 396 -480 640 -640 480 -640 427 -480 640 -480 640 -640 360 -500 375 -640 543 -640 427 -640 465 -640 426 -360 640 -640 369 -640 480 -640 428 -640 480 -640 475 -403 500 -480 640 -640 410 -500 333 -480 640 -640 480 -640 427 -426 640 -640 480 -424 640 -640 336 -480 640 -640 427 -500 333 -480 640 -500 390 -640 442 -612 612 -640 541 -612 612 -401 500 -612 612 -640 427 -640 428 -640 426 -640 427 -640 425 -640 480 -375 500 -640 427 -640 427 -640 480 -640 418 -640 425 -427 640 -426 640 -640 480 -640 425 -375 500 -640 427 -640 427 -640 360 -500 400 -640 427 -640 480 -640 427 -426 640 -361 640 -640 427 -640 480 -640 480 -427 640 -640 480 -375 500 -480 640 -640 425 -640 480 -500 375 -640 480 -640 427 -640 427 -426 640 -640 426 -640 480 -640 427 -480 640 -640 427 -424 640 -640 428 -480 640 -480 640 -457 640 -640 480 -480 640 -500 334 -640 480 -426 640 -640 452 -500 333 -640 544 -640 428 -423 640 -640 427 -640 428 -480 640 -640 427 -640 480 -612 612 -640 427 -480 640 -500 375 -640 427 -640 428 -425 640 -391 640 -397 640 -640 480 -640 425 -640 480 -427 640 -640 480 -425 640 -640 480 -375 500 -500 335 -640 416 -640 427 -640 495 -640 427 -640 428 -500 375 -640 427 -640 425 -640 333 -480 640 -500 333 -425 640 -640 428 -640 640 -640 424 -640 427 -500 640 -640 427 -640 426 -640 427 -640 478 -640 457 -640 425 -640 480 -640 480 -500 331 -494 640 -640 480 -640 428 -375 500 -428 640 -500 281 -640 480 -640 426 -640 425 -640 427 -640 478 -640 414 -640 427 -449 640 -640 426 -479 640 -640 519 -640 479 -640 427 -480 640 -500 333 -640 427 -494 500 -640 427 -640 480 -640 552 -500 375 -480 640 -640 504 -640 480 -480 640 -569 640 -500 333 -640 480 -640 435 -640 480 -500 375 -640 427 -640 480 -500 375 -480 640 -640 480 -640 640 -398 640 -640 427 -640 424 -640 425 -341 500 -640 359 -640 422 -640 491 -640 503 -640 429 -640 480 -414 640 -640 480 -640 529 -640 480 -640 513 -640 478 -640 427 -375 500 -640 480 -640 480 -480 360 -640 640 -375 500 -640 480 -640 480 -480 640 -640 608 -640 480 -640 427 -640 480 -640 359 -640 480 -500 375 -500 375 -640 427 -640 480 -500 375 -640 426 -500 500 -640 532 -640 480 -612 612 -640 532 -612 612 -426 640 -500 332 -500 375 -640 480 -640 450 -458 640 -640 291 -640 427 -640 480 -640 429 -500 333 -640 480 -640 360 -640 427 -640 426 -640 480 -640 480 -480 640 -640 425 -480 640 -500 375 -476 640 -500 328 -640 480 -640 458 -640 480 -640 427 -640 360 -640 424 -640 411 -457 640 -640 558 -572 640 -427 640 -640 427 -427 640 -640 349 -640 480 -427 640 -640 427 -640 428 -640 360 -428 640 -640 360 -480 640 -640 425 -640 508 -640 640 -640 426 -640 491 -640 480 -612 612 -480 640 -640 427 -640 480 -640 426 -640 480 -500 463 -640 480 -640 480 -640 480 -640 419 -640 479 -640 480 -640 480 -500 375 -640 381 -640 425 -640 428 -480 640 -450 286 -640 480 -640 427 -600 450 -640 480 -640 428 -640 480 -640 480 -640 426 -640 427 -500 375 -640 480 -500 375 -500 375 -640 425 -640 308 -640 424 -480 640 -478 640 -427 640 -375 500 -640 428 -500 375 -434 640 -640 480 -640 480 -500 293 -640 427 -640 488 -640 427 -640 427 -640 427 -480 640 -640 426 -480 640 -640 424 -640 427 -424 640 -640 480 -640 480 -640 480 -494 640 -427 640 -640 348 -356 500 -640 480 -375 500 -431 640 -500 365 -640 428 -612 612 -640 489 -640 480 -480 640 -640 480 -640 424 -640 428 -640 480 -640 479 -640 427 -640 427 -480 640 -500 325 -640 427 -640 432 -640 427 -640 444 -427 640 -640 427 -425 640 -480 640 -640 433 -480 640 -640 409 -640 480 -640 427 -375 500 -333 500 -640 468 -480 640 -640 480 -640 471 -640 463 -640 429 -640 480 -640 402 -640 478 -472 640 -100 144 -640 428 -640 425 -640 481 -640 386 -640 480 -640 480 -640 427 -640 463 -480 640 -425 640 -500 333 -640 427 -640 480 -640 480 -640 424 -500 375 -640 482 -640 427 -640 427 -640 544 -640 427 -640 611 -480 640 -612 612 -640 480 -640 480 -640 480 -444 640 -640 427 -640 479 -253 640 -480 640 -640 480 -612 612 -640 478 -640 480 -640 427 -427 640 -640 480 -640 480 -427 640 -640 488 -520 640 -612 612 -640 427 -640 426 -640 480 -480 640 -640 407 -640 480 -640 480 -500 375 -480 640 -399 640 -640 480 -427 640 -640 384 -360 640 -457 640 -640 334 -640 426 -428 640 -640 425 -640 480 -640 427 -640 426 -396 640 -480 640 -640 427 -640 480 -640 480 -480 640 -640 480 -640 426 -640 417 -640 480 -640 513 -640 427 -640 426 -640 480 -640 485 -640 480 -640 360 -457 640 -640 427 -640 405 -640 360 -640 480 -640 199 -640 480 -640 428 -640 480 -640 426 -482 640 -640 433 -640 480 -640 640 -640 427 -640 480 -640 408 -548 640 -640 426 -480 640 -480 640 -612 612 -640 427 -640 640 -640 481 -360 640 -640 457 -640 480 -640 426 -640 426 -640 426 -426 640 -500 335 -640 461 -640 427 -640 480 -640 427 -630 640 -640 424 -640 215 -640 429 -640 429 -640 480 -640 480 -640 427 -640 478 -480 640 -640 479 -640 480 -640 426 -640 480 -640 427 -640 480 -640 480 -640 426 -640 480 -640 427 -640 428 -480 640 -612 612 -480 640 -424 640 -640 427 -612 612 -500 500 -640 427 -640 427 -500 375 -640 480 -427 640 -640 427 -500 375 -480 640 -640 480 -640 480 -426 640 -640 480 -640 480 -518 640 -640 462 -427 640 -640 427 -500 333 -500 375 -640 480 -427 640 -480 640 -640 480 -481 640 -640 480 -640 480 -500 375 -425 640 -480 640 -426 640 -427 640 -320 240 -640 427 -640 480 -640 480 -640 425 -640 480 -478 640 -640 427 -640 426 -640 456 -640 480 -480 640 -480 640 -640 640 -334 500 -640 428 -640 449 -500 375 -640 394 -640 480 -500 257 -426 640 -640 426 -427 640 -640 479 -640 427 -426 640 -640 506 -478 640 -480 640 -640 480 -500 333 -640 425 -640 480 -640 424 -400 500 -640 428 -375 500 -427 640 -640 315 -640 480 -334 500 -480 640 -480 640 -480 640 -640 480 -640 427 -640 480 -640 428 -296 640 -640 426 -500 333 -500 472 -431 640 -461 640 -640 480 -500 403 -640 427 -640 428 -640 480 -426 640 -500 375 -480 640 -500 375 -500 375 -640 427 -640 285 -640 428 -480 640 -640 427 -480 640 -640 427 -640 428 -640 427 -640 480 -640 427 -640 427 -333 500 -500 375 -512 640 -640 426 -640 480 -640 427 -612 612 -500 375 -640 427 -425 640 -640 443 -480 640 -640 487 -428 640 -332 500 -640 360 -640 482 -640 480 -640 426 -480 640 -640 427 -640 368 -640 480 -427 640 -425 640 -640 480 -500 335 -500 333 -424 640 -640 428 -454 640 -640 640 -640 480 -640 480 -640 427 -640 480 -640 427 -334 500 -640 579 -480 640 -640 383 -640 428 -640 480 -640 478 -640 426 -640 444 -640 569 -464 640 -631 640 -640 480 -640 428 -640 427 -640 480 -640 360 -640 480 -612 612 -426 640 -640 480 -427 640 -640 427 -640 480 -640 480 -640 480 -640 640 -426 640 -429 600 -500 375 -640 480 -500 375 -480 640 -640 480 -640 427 -640 480 -612 612 -640 481 -640 323 -640 429 -612 612 -640 480 -640 425 -640 360 -500 332 -640 480 -640 426 -500 375 -640 640 -480 640 -640 480 -640 480 -640 428 -640 480 -640 429 -640 640 -640 514 -333 500 -640 480 -516 640 -640 427 -640 422 -640 427 -640 427 -640 427 -480 640 -612 612 -640 480 -363 500 -500 375 -500 374 -429 640 -640 425 -427 640 -640 480 -640 480 -640 425 -640 480 -640 596 -640 429 -640 480 -640 473 -640 341 -640 427 -480 640 -600 591 -640 480 -500 375 -500 357 -480 359 -338 500 -640 486 -640 426 -640 480 -540 477 -471 640 -640 427 -500 311 -500 326 -427 640 -640 480 -640 480 -510 640 -640 480 -500 375 -640 314 -640 426 -500 332 -640 426 -640 480 -640 480 -640 396 -344 500 -480 640 -640 526 -640 480 -639 640 -612 612 -640 461 -500 375 -640 427 -640 426 -640 425 -640 428 -640 564 -640 428 -500 375 -640 416 -640 438 -640 480 -640 480 -640 480 -478 640 -480 640 -427 640 -640 424 -339 500 -640 467 -640 480 -640 480 -640 428 -428 640 -640 426 -400 600 -500 222 -640 640 -640 429 -640 360 -640 480 -640 427 -500 375 -480 640 -383 640 -640 424 -500 375 -640 426 -640 480 -640 426 -640 445 -512 640 -640 395 -640 424 -640 482 -640 427 -640 512 -640 480 -640 424 -640 426 -640 480 -640 480 -640 425 -480 640 -427 640 -640 427 -500 375 -640 445 -640 501 -640 426 -640 480 -612 612 -640 427 -375 500 -640 480 -640 427 -640 427 -640 424 -334 500 -500 333 -500 357 -640 480 -640 429 -640 427 -640 480 -580 377 -640 499 -426 640 -640 609 -640 480 -640 333 -479 640 -541 640 -640 496 -640 359 -640 427 -612 612 -640 473 -375 500 -640 427 -427 640 -480 640 -612 612 -480 640 -640 393 -500 332 -424 640 -500 414 -640 473 -640 253 -500 473 -640 426 -640 416 -640 427 -414 640 -640 427 -640 427 -640 427 -640 480 -640 480 -640 480 -640 427 -612 612 -640 480 -640 427 -640 480 -640 480 -640 324 -480 640 -640 361 -640 424 -320 240 -640 427 -480 640 -640 425 -640 550 -640 640 -640 480 -640 429 -640 480 -640 491 -640 426 -640 368 -384 640 -640 427 -480 640 -640 427 -640 426 -428 640 -640 480 -427 640 -640 384 -640 448 -640 444 -640 320 -640 427 -640 427 -612 612 -640 480 -480 640 -640 427 -425 640 -640 480 -640 373 -640 425 -500 375 -640 480 -617 640 -640 427 -640 640 -640 480 -364 640 -442 500 -640 480 -500 377 -640 486 -640 550 -640 426 -640 427 -640 491 -640 380 -640 425 -640 411 -480 640 -640 427 -640 480 -640 383 -640 461 -640 416 -640 426 -640 427 -427 640 -640 480 -433 640 -480 640 -612 612 -480 640 -640 427 -500 331 -500 375 -640 427 -640 480 -480 640 -480 640 -640 480 -640 427 -640 360 -500 336 -640 427 -640 407 -640 438 -640 427 -427 640 -481 640 -480 640 -640 480 -640 480 -320 240 -640 424 -640 508 -640 399 -480 640 -640 320 -640 480 -480 640 -294 196 -640 464 -427 640 -334 640 -480 640 -640 480 -500 375 -640 428 -640 426 -640 427 -500 335 -640 426 -640 640 -426 640 -640 428 -640 388 -480 640 -640 320 -480 640 -640 480 -640 480 -640 428 -333 500 -500 375 -640 424 -480 640 -569 640 -640 278 -500 375 -480 640 -640 424 -640 480 -640 427 -640 428 -640 360 -640 426 -456 640 -640 426 -640 426 -427 640 -427 640 -640 427 -640 480 -640 427 -510 640 -640 480 -640 475 -640 480 -640 417 -640 480 -640 480 -640 427 -640 426 -640 427 -426 640 -640 480 -640 427 -640 398 -640 480 -640 462 -333 500 -640 475 -375 500 -480 640 -500 341 -640 285 -640 480 -480 640 -640 427 -480 640 -426 640 -640 427 -640 640 -640 425 -640 426 -640 480 -480 640 -333 500 -640 383 -375 500 -640 480 -640 636 -427 640 -480 640 -640 480 -500 399 -500 332 -640 304 -640 480 -427 640 -640 480 -640 480 -512 640 -427 640 -500 391 -500 422 -433 640 -334 500 -640 640 -640 425 -424 640 -640 427 -640 400 -375 500 -640 427 -640 640 -640 424 -427 640 -529 640 -640 480 -640 393 -640 427 -640 480 -500 374 -500 333 -640 480 -425 640 -612 612 -640 480 -480 640 -480 640 -480 640 -480 640 -500 375 -500 153 -500 333 -640 426 -640 483 -640 480 -640 480 -640 427 -640 480 -640 427 -640 427 -640 438 -640 428 -634 640 -640 343 -640 529 -640 425 -640 426 -500 247 -640 425 -640 496 -480 640 -500 332 -640 478 -500 375 -480 640 -640 480 -640 427 -640 366 -640 438 -437 500 -389 540 -640 428 -640 480 -640 480 -360 640 -640 427 -478 640 -640 480 -500 334 -640 480 -640 427 -581 640 -640 480 -427 640 -640 400 -640 425 -640 480 -640 480 -640 443 -640 480 -640 427 -640 456 -640 427 -640 427 -640 484 -478 640 -640 480 -480 640 -640 480 -500 375 -640 430 -640 482 -640 427 -640 480 -640 426 -427 640 -427 640 -640 359 -640 480 -640 426 -640 399 -640 427 -445 640 -333 500 -640 425 -640 425 -480 640 -500 335 -424 640 -640 480 -480 640 -427 640 -500 334 -640 426 -640 480 -640 480 -640 480 -640 472 -490 367 -500 335 -640 480 -640 418 -612 612 -640 508 -640 480 -640 427 -640 360 -500 379 -640 427 -640 480 -640 427 -640 480 -640 424 -500 433 -480 640 -480 640 -640 480 -640 480 -640 426 -480 640 -640 428 -500 375 -640 144 -640 480 -640 425 -585 329 -483 640 -640 502 -640 425 -640 360 -640 480 -500 333 -640 480 -640 484 -640 383 -480 640 -640 480 -640 480 -640 424 -640 480 -640 427 -612 612 -383 640 -640 429 -640 485 -640 427 -500 276 -640 539 -640 480 -640 427 -640 478 -640 491 -480 640 -640 427 -640 480 -640 426 -640 425 -640 427 -640 480 -640 424 -480 640 -612 612 -640 426 -640 425 -640 359 -480 640 -640 368 -500 333 -480 640 -500 500 -640 480 -640 480 -640 425 -640 480 -640 456 -640 427 -640 480 -640 425 -640 427 -500 500 -484 640 -640 480 -447 640 -640 427 -525 640 -640 426 -640 480 -353 500 -500 375 -640 480 -640 359 -640 480 -640 396 -640 463 -640 480 -640 495 -640 427 -611 640 -480 640 -426 640 -640 446 -480 640 -427 640 -612 612 -640 480 -427 640 -640 423 -457 640 -640 423 -640 427 -640 480 -427 640 -640 480 -480 640 -640 427 -542 588 -640 425 -480 640 -428 640 -640 425 -640 427 -634 640 -640 480 -480 640 -640 426 -583 640 -640 480 -427 640 -640 480 -640 526 -500 321 -511 640 -640 480 -640 480 -640 480 -640 478 -640 425 -640 480 -640 428 -640 426 -426 640 -640 424 -427 640 -640 425 -640 426 -640 480 -640 425 -546 366 -640 427 -500 375 -640 427 -351 500 -640 425 -500 375 -640 427 -640 480 -480 640 -640 360 -640 480 -500 375 -480 640 -640 427 -427 640 -488 500 -369 640 -640 405 -500 375 -640 640 -640 427 -481 640 -360 640 -640 425 -640 427 -640 428 -480 640 -640 480 -484 640 -640 429 -500 400 -335 500 -640 428 -640 429 -500 333 -500 341 -428 640 -640 427 -640 427 -640 605 -640 640 -640 425 -640 360 -640 480 -427 640 -640 480 -480 640 -600 448 -640 480 -320 480 -424 640 -640 427 -427 640 -640 480 -429 640 -640 373 -427 640 -640 480 -426 640 -500 338 -640 490 -612 612 -640 426 -640 427 -640 428 -480 640 -480 640 -640 428 -640 427 -640 533 -640 553 -640 480 -427 640 -640 480 -640 426 -500 441 -480 640 -640 427 -640 480 -640 353 -640 308 -640 423 -480 640 -640 427 -640 427 -640 480 -400 300 -500 375 -500 347 -400 300 -640 480 -612 612 -640 486 -640 426 -640 433 -640 483 -612 612 -500 375 -640 480 -426 640 -640 425 -640 425 -640 425 -640 360 -640 480 -409 640 -640 480 -640 427 -640 480 -640 480 -636 636 -640 419 -640 452 -640 427 -640 480 -640 480 -640 479 -427 640 -640 427 -640 427 -640 406 -425 640 -333 500 -427 640 -640 427 -480 640 -500 375 -500 375 -391 500 -640 404 -640 480 -640 427 -640 480 -640 427 -640 360 -640 428 -640 426 -500 333 -640 480 -612 612 -428 640 -640 427 -480 640 -500 299 -640 457 -640 640 -640 427 -640 426 -640 439 -500 375 -640 391 -640 426 -640 426 -500 333 -375 500 -640 426 -640 424 -424 640 -640 427 -500 192 -426 640 -640 480 -640 480 -640 480 -640 438 -505 640 -640 405 -640 426 -427 640 -640 487 -500 375 -427 640 -640 427 -640 480 -640 480 -640 480 -640 480 -479 640 -428 640 -480 640 -640 427 -640 360 -640 427 -640 321 -640 480 -640 427 -640 480 -426 640 -640 456 -640 427 -640 373 -640 480 -640 480 -640 480 -640 426 -640 427 -640 382 -640 458 -640 484 -640 480 -640 478 -640 427 -640 362 -319 500 -640 480 -640 193 -640 480 -640 366 -640 480 -427 640 -640 430 -640 478 -429 640 -500 333 -612 612 -640 480 -640 427 -375 500 -640 427 -640 378 -640 173 -500 375 -640 480 -374 500 -462 640 -500 375 -640 480 -640 426 -448 640 -436 640 -640 480 -640 427 -640 338 -640 480 -427 640 -640 511 -640 480 -640 480 -640 427 -640 427 -480 640 -640 427 -500 333 -640 424 -427 640 -500 375 -427 640 -640 480 -640 480 -640 428 -640 427 -640 505 -498 640 -640 426 -640 480 -640 480 -640 480 -640 468 -640 480 -640 562 -640 424 -430 640 -640 480 -640 428 -640 480 -427 640 -428 640 -427 640 -480 640 -424 640 -640 427 -640 480 -640 425 -480 640 -500 375 -640 480 -480 640 -500 500 -333 500 -640 480 -600 450 -640 360 -500 375 -424 640 -331 500 -640 480 -426 640 -640 478 -612 612 -640 424 -640 480 -640 427 -426 640 -640 359 -640 424 -640 427 -640 427 -640 427 -480 640 -640 375 -360 640 -320 480 -640 508 -640 427 -640 480 -599 640 -640 480 -640 480 -640 480 -640 429 -500 375 -640 480 -640 427 -640 480 -428 640 -640 480 -480 640 -426 640 -640 427 -640 456 -640 480 -640 480 -478 640 -427 640 -500 496 -428 640 -640 427 -640 425 -334 500 -481 640 -640 427 -640 426 -640 480 -471 500 -640 506 -640 424 -480 640 -640 427 -640 444 -426 640 -640 480 -640 480 -640 428 -640 431 -640 431 -640 480 -500 333 -640 427 -427 640 -640 512 -640 480 -512 640 -640 359 -640 640 -640 428 -640 426 -640 640 -500 375 -640 519 -480 640 -640 375 -427 640 -640 215 -640 429 -360 640 -640 480 -640 425 -434 640 -640 480 -640 480 -640 429 -640 427 -612 612 -640 426 -640 423 -480 640 -640 558 -640 427 -640 429 -640 427 -480 640 -640 480 -640 480 -419 640 -640 426 -640 480 -640 427 -640 480 -284 500 -640 346 -640 400 -640 480 -640 425 -612 612 -640 480 -640 360 -640 480 -425 640 -640 427 -640 426 -500 375 -640 412 -640 480 -573 640 -640 427 -612 612 -640 423 -480 640 -640 360 -426 640 -640 480 -383 640 -640 427 -480 640 -640 480 -640 480 -500 376 -640 426 -480 640 -640 556 -640 427 -428 640 -640 428 -427 640 -375 500 -640 360 -500 375 -375 500 -640 481 -640 480 -640 480 -500 375 -640 480 -640 480 -640 640 -454 640 -640 477 -640 421 -480 640 -640 427 -640 480 -500 333 -640 426 -640 480 -640 425 -640 426 -640 424 -640 579 -640 383 -640 640 -640 485 -640 426 -427 640 -640 479 -344 500 -640 480 -640 480 -427 640 -640 478 -600 450 -640 428 -640 427 -640 426 -427 640 -640 427 -640 480 -640 480 -480 640 -480 640 -640 480 -500 375 -427 640 -450 338 -500 375 -640 480 -640 448 -500 330 -640 428 -500 375 -640 480 -612 612 -457 640 -386 640 -480 640 -640 480 -480 640 -640 427 -640 492 -450 640 -480 640 -427 640 -478 640 -640 480 -640 424 -500 375 -612 612 -480 640 -480 640 -640 427 -640 640 -640 427 -480 640 -333 500 -480 640 -640 480 -640 426 -480 640 -500 375 -640 383 -640 480 -640 427 -640 506 -640 427 -640 511 -453 640 -640 428 -640 480 -640 439 -640 640 -640 426 -640 418 -453 640 -568 640 -386 500 -479 640 -640 428 -640 426 -480 640 -640 268 -640 427 -640 431 -640 439 -640 480 -480 640 -640 360 -640 427 -500 333 -428 640 -640 480 -612 612 -640 503 -640 427 -640 478 -425 640 -425 640 -480 640 -640 480 -430 640 -427 640 -640 427 -640 393 -640 480 -640 480 -333 500 -399 500 -640 480 -480 640 -640 480 -640 360 -640 480 -640 427 -480 360 -640 296 -640 428 -640 427 -640 480 -640 558 -640 426 -640 563 -640 480 -640 425 -640 424 -640 480 -640 480 -640 427 -640 427 -402 402 -640 428 -640 429 -640 462 -640 427 -640 480 -480 640 -640 226 -640 480 -493 640 -573 640 -424 640 -640 408 -375 500 -500 375 -640 640 -640 427 -640 480 -424 640 -640 427 -640 480 -640 423 -640 427 -640 480 -640 426 -500 366 -640 480 -517 640 -480 640 -640 427 -640 458 -480 640 -640 412 -640 497 -640 480 -500 338 -640 480 -640 425 -640 459 -375 500 -640 480 -640 412 -500 375 -640 640 -640 427 -640 480 -640 480 -640 640 -427 640 -640 425 -640 428 -640 480 -500 375 -640 427 -500 333 -314 500 -640 478 -640 480 -640 480 -640 427 -442 640 -480 640 -428 640 -500 375 -500 383 -640 480 -480 640 -640 427 -640 426 -640 400 -640 424 -640 325 -384 500 -640 480 -640 480 -640 426 -375 500 -640 428 -500 376 -478 640 -640 480 -640 424 -480 640 -640 480 -480 640 -501 640 -640 425 -640 480 -640 480 -500 333 -640 480 -500 400 -640 342 -640 480 -500 375 -640 273 -640 277 -500 335 -640 480 -500 375 -427 640 -640 328 -500 263 -375 500 -640 425 -640 480 -480 640 -640 480 -640 426 -424 640 -500 332 -640 480 -500 375 -318 500 -484 640 -640 486 -640 480 -640 429 -500 375 -640 425 -640 400 -640 480 -500 333 -640 640 -640 480 -640 480 -640 426 -467 371 -333 500 -640 480 -640 480 -640 389 -640 427 -640 425 -640 426 -349 640 -480 640 -640 424 -500 333 -640 427 -640 481 -640 426 -500 375 -640 518 -494 389 -640 480 -640 480 -640 513 -640 426 -500 393 -500 188 -640 427 -640 427 -500 375 -427 640 -332 500 -480 640 -640 470 -640 480 -640 288 -640 480 -640 480 -640 480 -640 425 -640 480 -640 480 -640 427 -640 480 -640 480 -640 480 -640 427 -480 640 -640 323 -640 480 -561 640 -640 480 -640 427 -640 427 -500 467 -640 427 -375 500 -480 640 -640 480 -428 640 -640 480 -640 480 -640 480 -500 375 -640 427 -640 428 -478 640 -640 426 -640 428 -640 360 -442 640 -478 640 -500 332 -640 426 -640 480 -500 375 -640 427 -495 640 -640 425 -640 427 -640 466 -640 479 -640 469 -640 551 -640 480 -640 480 -640 425 -640 427 -640 424 -640 480 -640 417 -640 480 -640 483 -640 480 -335 500 -640 640 -640 427 -640 480 -425 640 -640 427 -448 336 -425 640 -480 640 -640 400 -640 480 -640 509 -640 427 -500 294 -429 640 -640 360 -640 481 -640 426 -480 640 -640 428 -640 425 -640 426 -396 640 -500 335 -640 480 -640 425 -640 480 -480 640 -407 640 -500 375 -640 426 -640 480 -500 376 -640 427 -483 485 -426 640 -640 425 -640 480 -427 640 -640 640 -640 426 -612 612 -640 480 -640 427 -424 640 -640 427 -486 417 -640 480 -640 571 -427 640 -640 480 -640 480 -640 427 -640 480 -640 453 -640 426 -640 480 -640 480 -640 425 -640 493 -640 480 -426 640 -480 640 -640 480 -500 376 -640 427 -640 503 -334 500 -612 612 -500 333 -500 375 -375 500 -612 612 -640 480 -640 427 -500 333 -427 640 -480 640 -375 500 -640 427 -640 427 -521 315 -427 640 -427 640 -640 480 -500 375 -500 375 -640 387 -640 306 -640 426 -640 427 -640 458 -640 454 -640 480 -640 427 -640 427 -640 383 -500 375 -640 480 -640 427 -640 427 -500 375 -640 480 -640 480 -640 480 -640 427 -500 375 -640 480 -640 427 -640 260 -480 640 -640 427 -640 427 -500 333 -640 480 -480 640 -640 427 -427 640 -427 640 -640 427 -500 333 -480 640 -333 500 -427 640 -640 426 -640 390 -640 480 -400 301 -640 480 -500 339 -239 180 -640 425 -428 640 -640 426 -640 640 -640 478 -612 612 -640 465 -640 426 -427 640 -640 524 -640 436 -640 315 -640 427 -640 428 -500 333 -640 427 -500 374 -500 333 -640 427 -392 640 -640 446 -340 640 -640 480 -640 427 -480 640 -612 612 -359 640 -427 640 -426 640 -640 427 -427 640 -640 480 -375 500 -640 442 -640 480 -500 337 -640 480 -427 640 -375 500 -640 480 -640 427 -500 375 -332 500 -462 640 -426 640 -333 500 -640 480 -640 485 -640 428 -375 500 -640 640 -640 360 -640 424 -640 428 -640 411 -640 480 -640 425 -640 427 -640 426 -640 427 -640 480 -500 281 -640 429 -480 640 -425 640 -640 424 -427 640 -640 427 -640 479 -152 100 -640 480 -640 454 -640 428 -640 480 -426 640 -640 623 -640 480 -640 480 -640 640 -640 480 -640 359 -500 333 -640 480 -427 640 -426 640 -500 375 -480 640 -640 480 -333 500 -640 425 -612 612 -426 640 -640 480 -640 391 -480 640 -640 480 -640 427 -640 428 -640 480 -500 375 -640 427 -640 480 -640 634 -640 482 -640 426 -640 427 -640 480 -480 640 -640 480 -411 640 -640 512 -640 640 -556 640 -640 480 -427 640 -640 419 -640 433 -640 400 -640 427 -640 360 -640 426 -480 640 -480 640 -419 640 -640 528 -375 500 -640 480 -640 480 -640 480 -640 480 -640 427 -500 375 -427 640 -426 640 -425 640 -479 640 -480 640 -640 368 -640 427 -640 480 -424 640 -640 480 -640 408 -640 424 -466 640 -640 425 -480 640 -480 640 -640 458 -640 428 -500 375 -640 479 -500 375 -640 480 -200 300 -640 480 -433 640 -480 640 -500 421 -640 361 -640 480 -640 480 -500 375 -480 640 -640 480 -640 487 -640 427 -640 426 -640 429 -480 640 -640 640 -427 640 -427 640 -640 480 -500 375 -500 313 -640 424 -640 480 -640 424 -640 371 -640 425 -640 303 -640 427 -547 640 -640 429 -335 500 -640 480 -640 480 -500 333 -640 594 -640 427 -500 375 -458 640 -640 153 -480 640 -640 480 -640 408 -640 427 -500 375 -640 426 -640 427 -640 640 -640 427 -640 480 -640 609 -640 464 -640 425 -612 612 -640 480 -640 426 -426 640 -640 458 -640 480 -640 480 -640 416 -640 427 -640 480 -640 427 -640 426 -640 429 -612 612 -640 427 -640 403 -640 480 -640 431 -427 640 -640 480 -640 480 -640 427 -480 640 -480 640 -612 612 -640 427 -640 425 -480 640 -500 333 -640 480 -623 515 -375 500 -640 425 -459 640 -640 513 -356 373 -640 428 -640 427 -389 640 -640 408 -640 480 -640 517 -427 640 -640 426 -480 640 -640 404 -640 480 -427 640 -640 632 -500 375 -480 640 -640 415 -334 500 -375 500 -480 640 -640 480 -640 480 -491 640 -640 425 -480 640 -640 410 -612 612 -640 480 -480 640 -480 640 -640 427 -640 480 -640 452 -431 640 -640 428 -251 500 -640 426 -640 502 -640 427 -640 453 -640 480 -640 426 -640 451 -640 480 -640 428 -640 480 -640 480 -640 409 -493 640 -640 480 -500 334 -640 424 -640 518 -640 426 -598 640 -640 427 -640 427 -640 426 -640 427 -640 424 -375 500 -425 500 -640 418 -500 375 -640 480 -640 428 -480 640 -640 426 -500 335 -513 640 -375 500 -597 400 -640 427 -640 480 -640 480 -640 606 -640 380 -640 427 -640 480 -640 426 -640 618 -428 640 -640 425 -480 272 -429 640 -427 640 -640 404 -640 427 -375 500 -500 375 -640 426 -480 640 -480 640 -640 481 -612 612 -640 427 -640 480 -640 478 -640 480 -640 480 -426 640 -640 427 -640 424 -640 428 -640 480 -640 522 -480 640 -640 480 -375 500 -480 640 -640 425 -640 427 -640 383 -640 480 -600 600 -640 427 -640 480 -640 480 -620 413 -640 480 -640 417 -544 640 -515 640 -427 640 -640 480 -640 480 -640 424 -375 500 -640 480 -640 499 -500 332 -383 640 -500 375 -640 480 -640 427 -428 640 -640 481 -640 428 -640 640 -500 375 -640 359 -640 461 -640 426 -640 426 -427 640 -640 480 -640 480 -640 426 -640 480 -448 277 -640 428 -640 393 -500 324 -640 432 -640 480 -479 640 -640 425 -500 375 -640 428 -480 640 -427 640 -640 427 -427 640 -640 484 -640 427 -612 612 -480 640 -500 375 -640 481 -480 640 -480 640 -640 425 -480 640 -604 453 -440 300 -640 477 -640 426 -640 427 -640 480 -640 480 -426 640 -478 640 -640 640 -640 640 -612 612 -640 480 -640 480 -640 427 -532 640 -480 640 -500 332 -612 612 -640 427 -640 480 -640 480 -640 480 -640 480 -640 480 -375 500 -640 640 -640 423 -640 509 -640 396 -640 428 -480 640 -640 480 -426 640 -500 375 -640 480 -640 427 -500 400 -640 427 -640 414 -640 427 -334 500 -640 426 -640 427 -427 640 -427 640 -500 332 -640 480 -360 640 -640 428 -640 426 -480 640 -640 427 -640 427 -422 640 -640 360 -400 500 -480 640 -640 427 -375 500 -335 500 -640 361 -331 500 -640 480 -640 480 -640 480 -640 536 -640 640 -428 640 -640 427 -640 480 -500 333 -640 427 -640 385 -480 640 -640 428 -500 375 -640 425 -427 640 -480 640 -480 640 -640 427 -640 427 -640 480 -640 427 -640 427 -640 480 -462 640 -640 480 -640 480 -640 640 -426 640 -640 427 -640 425 -428 640 -640 427 -640 424 -640 427 -500 375 -479 640 -640 425 -640 428 -500 375 -640 426 -640 480 -427 640 -500 333 -640 480 -425 640 -640 410 -640 480 -640 425 -480 640 -640 480 -640 427 -640 453 -640 426 -640 480 -640 483 -640 427 -640 427 -640 450 -612 612 -640 478 -478 640 -425 640 -640 424 -640 427 -640 427 -640 480 -375 500 -500 439 -640 359 -640 426 -640 480 -480 640 -640 427 -640 480 -640 480 -500 375 -640 480 -640 427 -640 480 -640 426 -433 640 -640 427 -640 463 -640 425 -640 425 -640 426 -640 424 -640 426 -640 429 -640 427 -500 333 -640 480 -640 480 -640 480 -640 427 -480 640 -480 640 -480 485 -640 427 -640 427 -640 428 -480 640 -371 500 -500 375 -640 427 -500 375 -375 500 -500 375 -640 428 -500 375 -640 480 -640 626 -640 360 -640 564 -640 424 -640 480 -375 500 -640 428 -640 427 -640 426 -479 640 -640 512 -640 480 -488 640 -334 500 -640 427 -480 640 -640 499 -480 640 -640 480 -640 627 -640 425 -640 480 -426 640 -640 424 -640 480 -640 427 -640 427 -640 569 -640 480 -640 426 -480 640 -640 480 -481 640 -428 640 -640 427 -640 427 -640 422 -640 429 -480 360 -640 480 -640 480 -640 376 -640 346 -428 640 -640 427 -640 427 -640 360 -640 458 -427 640 -640 479 -500 375 -640 480 -400 300 -500 375 -480 640 -640 427 -428 640 -640 640 -480 640 -640 640 -640 480 -640 471 -640 455 -640 427 -640 480 -640 425 -424 640 -640 361 -640 419 -640 480 -376 500 -640 480 -640 436 -500 375 -480 640 -640 480 -640 481 -640 254 -640 427 -640 427 -640 426 -640 453 -480 640 -640 427 -428 640 -427 640 -640 299 -469 640 -640 480 -640 480 -616 640 -640 480 -500 375 -375 500 -612 612 -332 500 -640 394 -612 612 -640 427 -640 428 -640 426 -640 480 -500 375 -640 427 -480 640 -640 480 -480 640 -640 456 -427 640 -640 480 -559 600 -375 500 -500 375 -640 480 -640 427 -640 480 -480 640 -500 333 -640 184 -427 640 -500 375 -640 480 -640 464 -640 481 -640 326 -426 640 -640 426 -640 427 -500 375 -640 352 -640 480 -640 479 -615 640 -640 425 -640 427 -640 363 -640 480 -640 437 -640 480 -480 319 -600 600 -640 453 -500 332 -640 424 -640 490 -640 480 -356 500 -640 480 -500 333 -375 500 -640 427 -640 480 -640 429 -640 428 -640 425 -640 489 -333 500 -640 439 -480 640 -640 426 -612 612 -391 640 -640 480 -640 427 -281 640 -640 424 -480 640 -640 359 -640 427 -640 480 -480 640 -640 480 -500 375 -640 427 -640 427 -640 427 -640 427 -640 480 -640 480 -640 427 -612 612 -427 640 -640 480 -480 640 -640 480 -640 480 -640 427 -500 375 -427 640 -480 640 -640 428 -640 480 -640 480 -640 457 -640 360 -640 480 -500 337 -640 464 -427 640 -640 424 -640 400 -500 333 -640 427 -500 332 -640 480 -480 640 -640 427 -640 427 -525 350 -640 351 -640 425 -640 480 -640 480 -640 426 -328 500 -575 640 -640 259 -640 426 -640 401 -500 375 -440 500 -640 427 -640 354 -480 640 -640 480 -640 480 -640 480 -640 415 -600 327 -457 640 -500 333 -480 640 -612 612 -640 640 -640 480 -640 424 -425 640 -640 408 -640 431 -640 424 -640 427 -500 500 -425 640 -500 375 -640 410 -640 428 -640 480 -480 640 -640 480 -479 640 -640 480 -500 375 -424 640 -640 480 -640 426 -640 428 -640 425 -640 427 -640 575 -640 438 -640 480 -480 640 -612 612 -640 426 -640 427 -640 443 -640 376 -500 375 -427 640 -612 612 -427 640 -426 640 -640 480 -640 480 -383 640 -640 482 -640 480 -640 480 -640 425 -640 424 -424 640 -640 640 -640 428 -640 531 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -640 478 -640 483 -640 430 -640 480 -560 640 -426 640 -640 427 -400 500 -500 388 -640 476 -640 427 -640 427 -640 427 -640 424 -480 640 -612 612 -538 360 -480 640 -640 428 -604 402 -375 500 -640 480 -500 375 -500 375 -476 640 -640 495 -640 640 -402 640 -640 478 -640 480 -640 427 -475 640 -640 480 -640 480 -640 428 -600 450 -640 433 -426 640 -480 640 -640 480 -640 427 -640 625 -640 480 -640 427 -480 640 -457 640 -640 480 -640 480 -612 612 -640 425 -480 640 -640 427 -640 550 -640 426 -640 427 -640 640 -640 480 -640 480 -640 427 -360 328 -640 424 -315 484 -500 375 -640 427 -640 438 -640 426 -640 466 -425 640 -640 427 -640 427 -640 426 -640 480 -640 480 -640 427 -500 467 -640 401 -640 426 -640 480 -375 500 -640 481 -360 640 -546 640 -640 480 -480 640 -640 480 -640 427 -640 428 -640 506 -448 336 -640 425 -612 612 -428 640 -480 640 -480 640 -481 640 -640 480 -640 427 -640 477 -640 480 -612 612 -500 500 -640 426 -640 478 -640 427 -500 342 -426 640 -375 500 -640 427 -416 640 -640 446 -640 480 -640 480 -640 424 -640 427 -640 480 -640 427 -418 640 -640 426 -640 426 -427 640 -640 480 -640 481 -640 480 -375 500 -640 480 -640 480 -640 480 -640 480 -640 428 -640 392 -426 640 -640 480 -640 480 -640 427 -640 383 -640 529 -640 482 -640 427 -640 427 -640 457 -427 640 -480 640 -640 411 -640 480 -640 480 -640 360 -640 427 -640 480 -640 426 -640 401 -640 360 -640 480 -480 640 -427 640 -640 480 -640 428 -640 480 -596 640 -500 333 -640 480 -640 496 -409 500 -640 495 -455 341 -500 332 -427 640 -640 427 -640 427 -375 500 -640 429 -640 480 -640 427 -640 480 -640 480 -640 478 -426 640 -640 360 -640 384 -640 423 -640 427 -640 480 -434 640 -640 426 -640 427 -640 427 -640 427 -640 427 -640 480 -640 396 -640 480 -640 426 -640 480 -424 640 -640 479 -640 425 -480 640 -640 480 -640 480 -640 515 -640 480 -480 640 -640 428 -640 480 -640 426 -640 426 -480 640 -480 640 -640 480 -640 480 -640 424 -480 640 -640 426 -640 448 -640 425 -427 640 -375 500 -640 480 -480 640 -500 281 -480 640 -640 452 -360 640 -640 243 -640 480 -640 480 -640 514 -640 446 -640 428 -640 480 -457 640 -424 640 -480 640 -500 375 -612 612 -640 453 -640 427 -480 640 -640 453 -513 640 -640 426 -640 480 -640 427 -500 375 -640 480 -424 640 -500 375 -640 480 -640 426 -640 480 -640 400 -480 640 -424 640 -500 375 -640 512 -640 480 -640 425 -640 480 -500 375 -500 375 -428 640 -640 488 -640 480 -640 425 -500 375 -500 375 -640 624 -640 429 -500 500 -640 429 -640 480 -413 640 -480 640 -427 640 -427 640 -480 640 -640 347 -640 516 -427 640 -427 640 -500 375 -640 480 -426 640 -436 640 -640 428 -640 426 -640 427 -640 480 -333 500 -640 426 -480 640 -640 427 -640 480 -480 640 -480 640 -500 375 -427 640 -640 427 -510 640 -480 640 -419 637 -427 640 -352 288 -480 640 -640 524 -480 640 -367 500 -640 480 -640 480 -640 426 -480 640 -640 480 -519 640 -640 427 -640 329 -640 427 -640 383 -640 480 -480 640 -640 427 -640 429 -480 640 -400 500 -640 426 -640 427 -500 333 -480 640 -299 500 -640 480 -640 480 -640 480 -334 500 -640 480 -640 480 -640 434 -500 375 -479 640 -640 427 -640 360 -640 409 -427 640 -640 510 -427 640 -640 479 -640 212 -480 640 -640 480 -640 427 -640 478 -396 500 -640 387 -640 640 -640 477 -640 417 -640 439 -640 427 -640 425 -640 438 -450 600 -640 424 -640 427 -640 361 -640 480 -640 427 -640 512 -640 480 -640 480 -640 471 -500 311 -640 426 -640 426 -640 480 -640 428 -500 375 -480 640 -640 471 -640 480 -640 428 -640 427 -640 451 -480 640 -427 640 -388 640 -640 314 -640 427 -500 400 -500 334 -640 426 -640 427 -640 480 -640 424 -427 640 -640 471 -640 480 -640 431 -640 427 -640 427 -514 640 -500 271 -329 640 -640 480 -500 332 -640 425 -480 640 -500 375 -640 428 -640 426 -640 425 -640 480 -640 412 -640 431 -640 443 -640 481 -500 333 -640 425 -640 384 -427 640 -640 427 -427 640 -500 375 -640 480 -640 427 -640 360 -480 640 -640 480 -500 233 -480 640 -640 426 -449 640 -640 396 -640 426 -566 640 -640 427 -640 529 -612 612 -640 409 -640 426 -480 640 -640 480 -640 428 -500 375 -500 375 -640 512 -640 427 -640 480 -425 640 -640 426 -612 612 -398 640 -640 363 -640 469 -460 640 -640 482 -500 332 -640 425 -640 426 -640 426 -427 640 -640 480 -640 480 -640 427 -640 446 -640 424 -427 640 -640 480 -640 480 -640 427 -640 425 -424 640 -640 427 -640 480 -640 480 -640 400 -640 480 -480 640 -640 288 -480 640 -375 500 -640 480 -500 399 -640 480 -500 375 -480 640 -426 640 -640 480 -640 480 -640 480 -640 427 -640 544 -640 429 -500 365 -640 480 -640 426 -640 428 -640 480 -640 429 -483 640 -640 427 -640 426 -640 480 -640 513 -500 375 -500 396 -381 640 -640 480 -500 375 -640 480 -427 640 -640 426 -640 427 -640 458 -640 360 -640 426 -466 640 -640 480 -480 640 -427 640 -640 427 -640 425 -640 480 -640 428 -500 461 -119 184 -640 427 -640 426 -640 480 -492 500 -640 480 -427 640 -640 360 -640 480 -640 480 -640 640 -375 500 -640 427 -640 423 -568 320 -640 480 -640 480 -640 389 -480 640 -407 640 -640 480 -640 471 -640 445 -480 640 -335 500 -480 640 -640 480 -640 480 -640 428 -640 400 -640 480 -640 480 -640 361 -640 640 -500 375 -427 640 -640 480 -640 424 -640 426 -640 479 -480 640 -640 480 -500 377 -500 362 -500 375 -640 480 -500 333 -640 427 -640 480 -640 427 -640 480 -500 374 -640 361 -640 480 -640 427 -570 640 -640 425 -640 480 -640 480 -640 480 -480 640 -500 334 -640 480 -480 640 -480 640 -500 375 -480 640 -640 640 -640 480 -640 275 -640 480 -500 375 -640 480 -398 640 -640 427 -640 413 -640 509 -640 435 -640 426 -640 361 -427 640 -640 427 -640 480 -429 640 -640 480 -640 533 -500 375 -480 640 -640 425 -640 480 -640 470 -640 423 -640 480 -640 480 -427 640 -640 480 -333 500 -640 427 -640 427 -640 424 -640 480 -428 640 -640 480 -640 429 -640 427 -375 500 -640 427 -640 427 -480 640 -640 329 -640 480 -640 425 -480 640 -640 354 -640 427 -640 480 -640 480 -640 480 -500 375 -640 480 -426 640 -427 640 -640 480 -500 400 -480 640 -427 640 -640 427 -640 369 -600 640 -480 640 -612 612 -640 424 -478 640 -640 427 -640 426 -640 480 -480 640 -640 269 -640 640 -480 640 -420 640 -640 480 -480 640 -427 640 -640 427 -640 499 -480 640 -640 427 -640 478 -512 640 -640 427 -612 612 -640 407 -640 426 -555 640 -640 428 -427 640 -640 427 -640 480 -640 480 -640 426 -640 480 -640 480 -640 335 -640 425 -480 640 -640 428 -640 489 -640 458 -612 612 -460 640 -500 333 -332 500 -480 640 -640 427 -640 426 -640 480 -500 375 -640 425 -640 427 -612 612 -640 480 -640 480 -568 640 -640 427 -375 500 -500 345 -640 427 -640 480 -640 480 -640 426 -480 640 -427 640 -500 375 -500 375 -640 480 -640 287 -640 427 -640 480 -640 427 -500 333 -640 427 -640 480 -480 640 -640 426 -640 480 -640 426 -425 640 -480 640 -512 640 -640 425 -640 427 -426 640 -640 427 -640 480 -478 640 -480 640 -427 640 -500 400 -640 480 -640 509 -640 399 -500 333 -640 640 -640 425 -640 360 -640 480 -640 419 -500 375 -504 640 -640 480 -640 480 -640 480 -640 480 -500 375 -500 333 -640 427 -640 480 -640 424 -640 424 -640 427 -600 600 -640 480 -500 375 -500 332 -427 640 -640 448 -640 426 -500 375 -640 480 -640 462 -640 429 -640 480 -640 480 -425 640 -500 333 -500 375 -427 640 -640 480 -640 480 -640 428 -612 612 -640 480 -640 408 -600 459 -640 480 -427 640 -640 480 -640 480 -640 427 -426 640 -640 424 -640 516 -640 425 -489 640 -640 439 -640 391 -640 426 -640 480 -640 427 -640 427 -480 640 -480 640 -640 472 -640 480 -640 480 -640 384 -640 479 -612 612 -640 426 -480 640 -500 272 -640 427 -640 471 -360 640 -640 427 -640 480 -640 480 -640 424 -640 498 -431 640 -640 426 -640 427 -640 478 -640 426 -426 640 -640 480 -640 480 -500 375 -427 640 -640 346 -640 383 -640 333 -640 480 -500 317 -462 640 -427 640 -640 457 -640 404 -640 425 -640 360 -480 640 -640 427 -640 427 -425 640 -640 425 -640 427 -480 640 -640 427 -640 354 -427 640 -640 382 -640 480 -640 436 -350 500 -640 429 -640 427 -375 500 -612 612 -640 480 -500 333 -383 640 -500 334 -640 480 -494 640 -640 426 -640 427 -427 640 -640 480 -640 444 -640 424 -640 426 -640 480 -640 480 -427 640 -500 411 -427 640 -640 426 -640 427 -640 427 -640 480 -640 424 -640 424 -425 640 -629 640 -640 480 -640 427 -640 427 -640 480 -640 427 -427 640 -640 391 -640 480 -500 368 -500 340 -640 512 -640 427 -426 640 -426 640 -640 426 -640 448 -640 480 -640 588 -612 612 -640 480 -500 269 -492 640 -640 427 -640 478 -640 509 -480 640 -640 480 -640 360 -640 480 -640 427 -640 429 -640 513 -640 480 -640 425 -640 488 -640 345 -640 461 -500 375 -640 480 -500 375 -480 640 -500 345 -640 480 -640 415 -640 428 -640 480 -480 640 -640 559 -640 360 -640 480 -640 426 -427 640 -640 427 -500 297 -427 640 -448 640 -640 427 -640 425 -640 480 -640 480 -384 640 -426 640 -640 504 -640 427 -481 640 -480 640 -640 456 -640 480 -640 479 -480 640 -612 612 -640 427 -640 418 -640 360 -427 640 -640 426 -640 427 -640 480 -500 333 -375 500 -500 334 -480 360 -480 640 -640 480 -640 480 -640 348 -375 500 -640 426 -426 640 -640 425 -640 426 -500 375 -500 375 -640 427 -640 480 -640 426 -427 640 -640 502 -480 640 -640 360 -640 313 -640 427 -640 478 -427 640 -461 640 -480 640 -640 407 -550 640 -640 480 -480 640 -640 481 -640 427 -612 612 -550 275 -640 430 -640 480 -480 640 -640 427 -640 480 -640 427 -640 480 -640 427 -640 384 -640 427 -640 480 -640 427 -640 449 -375 500 -640 359 -396 640 -640 428 -640 428 -400 600 -640 425 -427 640 -640 480 -640 480 -640 481 -428 640 -640 359 -612 612 -640 438 -640 358 -640 394 -640 480 -640 480 -640 399 -427 640 -500 333 -640 427 -640 427 -640 480 -640 561 -640 428 -640 361 -640 587 -640 480 -640 480 -640 480 -640 427 -400 500 -500 375 -500 309 -640 403 -640 480 -381 640 -640 427 -481 640 -640 480 -640 427 -640 311 -480 640 -640 424 -640 480 -612 612 -640 480 -640 480 -640 494 -640 574 -640 426 -469 640 -640 480 -640 480 -425 640 -640 481 -640 480 -640 359 -640 472 -640 476 -640 360 -375 500 -640 409 -422 640 -640 383 -640 359 -640 437 -640 480 -640 350 -640 480 -640 427 -640 401 -640 480 -500 377 -640 426 -612 612 -500 333 -640 425 -480 640 -640 369 -640 427 -333 500 -427 640 -427 640 -640 427 -416 640 -640 424 -640 427 -640 463 -427 640 -640 480 -640 480 -640 480 -640 480 -640 426 -640 480 -640 457 -500 335 -640 364 -640 428 -640 427 -640 424 -640 427 -640 425 -640 425 -640 609 -480 640 -640 426 -640 426 -640 480 -640 480 -640 480 -640 480 -500 375 -640 480 -640 391 -479 640 -427 640 -640 427 -461 640 -640 425 -500 375 -500 400 -640 427 -640 502 -480 640 -500 397 -640 480 -427 640 -500 334 -402 640 -640 427 -640 427 -640 480 -640 427 -640 425 -640 609 -640 480 -640 427 -640 567 -640 424 -640 427 -640 427 -640 428 -640 480 -640 480 -479 640 -640 480 -425 640 -640 553 -640 480 -640 480 -640 480 -640 425 -640 480 -640 448 -420 640 -480 640 -480 640 -480 640 -427 640 -640 502 -500 375 -360 640 -427 640 -500 491 -640 427 -640 426 -640 427 -640 428 -640 480 -500 375 -640 480 -480 640 -640 427 -640 427 -640 427 -428 640 -428 640 -640 480 -640 480 -640 480 -640 448 -640 390 -640 478 -427 640 -500 333 -450 600 -640 391 -600 399 -480 640 -640 361 -500 380 -640 494 -640 451 -640 427 -427 640 -640 480 -640 480 -640 360 -640 593 -500 375 -640 434 -480 640 -640 480 -427 640 -425 640 -640 640 -640 418 -640 399 -640 427 -612 612 -640 427 -640 480 -640 491 -427 640 -427 640 -640 480 -640 640 -640 519 -640 427 -375 500 -478 640 -336 500 -480 640 -500 421 -480 640 -640 421 -640 426 -500 335 -640 426 -640 480 -640 427 -640 480 -510 640 -640 427 -640 273 -640 428 -640 426 -640 480 -640 480 -463 640 -640 424 -425 640 -500 375 -427 640 -480 480 -640 424 -640 427 -640 480 -500 375 -640 427 -640 428 -640 446 -640 427 -500 375 -375 500 -500 375 -427 640 -640 640 -480 640 -640 428 -640 480 -640 427 -640 425 -334 500 -640 361 -612 612 -640 427 -341 500 -612 612 -640 428 -640 360 -640 360 -640 480 -640 370 -640 475 -640 479 -640 427 -456 640 -640 427 -428 640 -640 480 -640 492 -640 558 -640 480 -427 640 -640 496 -480 640 -500 375 -640 425 -480 640 -640 426 -640 464 -640 480 -640 480 -500 328 -640 640 -640 640 -640 429 -640 426 -640 427 -640 426 -640 410 -640 457 -640 426 -480 640 -640 480 -640 480 -640 480 -640 480 -640 427 -424 640 -640 428 -500 375 -428 640 -337 500 -640 426 -334 500 -640 480 -640 289 -640 425 -500 375 -427 640 -640 480 -360 640 -333 500 -640 480 -640 574 -640 427 -640 480 -640 427 -426 640 -640 427 -640 426 -640 480 -640 427 -375 500 -500 375 -640 480 -640 335 -640 444 -640 212 -640 480 -546 640 -640 480 -640 359 -640 426 -500 375 -640 426 -640 480 -500 400 -640 480 -640 480 -425 640 -478 640 -480 422 -425 640 -481 640 -400 600 -640 480 -640 480 -640 480 -480 640 -612 612 -462 640 -439 640 -480 640 -612 612 -426 640 -500 394 -640 428 -640 444 -640 427 -640 427 -640 428 -640 380 -640 480 -640 480 -640 438 -612 612 -640 427 -444 500 -640 360 -640 423 -640 640 -427 640 -640 480 -640 480 -640 480 -480 640 -640 426 -640 480 -640 426 -640 427 -640 456 -640 426 -375 500 -640 438 -640 459 -640 366 -640 480 -640 480 -640 480 -428 640 -640 480 -640 345 -640 429 -480 640 -480 640 -500 332 -640 425 -418 640 -640 233 -640 480 -375 500 -640 480 -427 640 -640 428 -640 480 -424 640 -332 500 -640 443 -640 480 -640 427 -640 463 -600 400 -640 425 -640 427 -640 480 -640 480 -640 428 -500 375 -640 480 -640 459 -640 427 -640 480 -640 480 -480 640 -427 640 -640 381 -426 640 -427 640 -500 400 -640 425 -480 640 -424 640 -640 427 -640 480 -640 480 -612 612 -640 427 -640 359 -333 500 -426 640 -640 427 -640 480 -640 480 -640 480 -640 426 -640 480 -426 640 -500 375 -640 427 -500 318 -500 375 -640 481 -640 360 -640 427 -426 640 -500 375 -640 427 -640 480 -500 334 -640 480 -640 427 -480 640 -640 427 -640 429 -640 426 -640 426 -640 373 -640 426 -640 426 -640 457 -640 512 -640 480 -478 640 -640 480 -640 383 -426 640 -640 481 -640 427 -500 375 -640 426 -640 480 -425 640 -640 428 -478 640 -427 640 -640 287 -640 426 -640 480 -640 427 -419 640 -640 640 -640 427 -640 480 -640 480 -500 333 -640 426 -480 640 -600 596 -640 428 -640 475 -640 360 -640 480 -640 427 -640 480 -640 478 -640 415 -640 480 -480 640 -640 457 -500 375 -429 640 -427 640 -640 619 -640 427 -640 225 -640 426 -426 640 -640 534 -640 427 -640 480 -640 444 -640 480 -640 480 -640 478 -640 313 -640 426 -640 426 -640 410 -640 424 -640 480 -480 640 -500 333 -640 480 -640 384 -500 341 -640 480 -500 500 -640 427 -640 480 -500 400 -480 640 -640 429 -427 640 -500 281 -640 480 -640 439 -640 480 -640 428 -640 480 -640 425 -500 375 -640 416 -640 480 -640 426 -640 480 -640 512 -640 366 -612 612 -344 500 -640 320 -640 533 -500 375 -640 480 -640 480 -500 334 -480 640 -640 427 -500 376 -640 480 -480 640 -640 424 -500 500 -480 640 -480 640 -640 401 -640 480 -500 499 -480 640 -640 480 -640 427 -640 480 -400 500 -640 424 -640 424 -640 480 -427 640 -640 427 -640 425 -500 375 -640 428 -640 414 -640 426 -640 426 -640 428 -427 640 -640 480 -612 612 -640 480 -640 480 -640 457 -500 335 -480 640 -640 427 -500 375 -480 640 -640 427 -640 480 -640 480 -483 640 -480 640 -640 427 -640 455 -640 480 -480 320 -640 480 -434 640 -640 425 -436 640 -396 640 -500 375 -640 478 -640 426 -640 480 -640 480 -640 427 -427 640 -640 427 -640 480 -640 426 -500 375 -500 500 -640 412 -640 342 -480 640 -640 426 -333 500 -640 458 -640 480 -500 500 -640 360 -640 480 -640 640 -512 640 -612 612 -640 427 -640 427 -636 640 -612 612 -640 480 -640 480 -640 480 -640 389 -640 542 -640 480 -640 430 -640 425 -500 333 -640 640 -640 427 -425 640 -427 640 -640 480 -333 500 -640 426 -640 426 -640 512 -640 480 -360 640 -640 427 -333 357 -500 375 -478 640 -640 478 -640 427 -640 428 -640 427 -640 413 -457 640 -612 612 -480 640 -640 483 -640 480 -640 480 -640 360 -480 640 -427 640 -640 480 -640 511 -640 480 -640 480 -300 400 -640 360 -375 500 -640 424 -640 480 -640 480 -640 574 -427 640 -640 478 -640 480 -534 640 -480 640 -640 480 -640 425 -372 500 -640 480 -640 425 -640 425 -640 384 -640 480 -497 500 -640 426 -427 640 -640 429 -640 480 -640 427 -640 428 -640 480 -484 640 -640 449 -459 640 -640 480 -640 601 -612 612 -640 480 -335 500 -427 640 -640 411 -500 332 -640 360 -480 640 -640 427 -426 640 -447 500 -640 424 -640 427 -640 346 -640 480 -640 360 -640 480 -428 640 -500 299 -640 427 -640 457 -640 427 -478 500 -427 640 -640 427 -640 449 -640 466 -640 480 -427 640 -640 480 -640 480 -640 480 -640 558 -640 480 -500 334 -640 444 -640 480 -361 640 -480 640 -640 473 -600 600 -640 496 -500 357 -480 640 -640 480 -500 330 -375 500 -640 427 -500 375 -541 640 -480 640 -640 480 -640 416 -640 480 -640 425 -640 426 -500 376 -640 427 -427 640 -478 640 -640 427 -425 640 -640 427 -640 425 -640 426 -640 360 -425 640 -375 500 -640 480 -640 427 -427 640 -640 443 -322 365 -638 512 -640 424 -640 478 -639 640 -640 480 -500 333 -640 427 -640 433 -640 502 -640 614 -640 480 -640 480 -480 640 -640 480 -640 480 -640 480 -375 500 -640 426 -640 299 -333 500 -640 427 -500 333 -640 480 -427 640 -431 640 -500 333 -640 480 -640 480 -640 434 -640 484 -640 458 -640 296 -640 427 -427 640 -640 480 -336 500 -472 640 -500 332 -640 427 -500 375 -640 480 -480 640 -480 640 -500 386 -612 612 -640 213 -640 426 -334 500 -640 471 -640 360 -640 586 -640 427 -640 424 -640 413 -640 427 -640 427 -612 612 -640 480 -640 427 -331 500 -640 428 -500 336 -500 375 -640 560 -640 480 -612 612 -640 480 -640 427 -500 375 -427 640 -640 480 -640 480 -640 366 -640 425 -640 427 -640 480 -426 640 -640 480 -640 640 -640 480 -640 425 -640 480 -500 333 -640 427 -640 480 -640 478 -478 640 -640 428 -640 480 -500 375 -640 501 -500 375 -427 640 -640 481 -640 426 -640 480 -426 640 -480 640 -435 640 -427 640 -640 427 -640 427 -640 480 -240 320 -640 428 -640 640 -640 509 -640 480 -640 480 -500 394 -375 500 -428 640 -640 480 -640 426 -640 480 -500 333 -428 640 -375 500 -431 640 -640 480 -640 427 -590 640 -500 465 -466 640 -600 600 -433 640 -500 332 -434 640 -640 640 -640 480 -640 425 -480 640 -480 640 -640 480 -640 480 -640 480 -640 301 -640 480 -640 478 -640 360 -640 425 -500 376 -640 427 -640 432 -640 427 -460 390 -500 375 -640 426 -480 640 -640 426 -640 426 -640 427 -426 640 -500 375 -640 426 -640 480 -640 427 -640 263 -480 640 -640 480 -640 425 -500 333 -640 480 -640 427 -640 427 -480 640 -640 480 -640 449 -500 327 -640 480 -500 350 -640 480 -640 320 -480 640 -400 500 -612 612 -425 640 -372 500 -375 500 -500 334 -640 427 -427 640 -640 480 -480 640 -640 427 -500 375 -478 640 -465 500 -640 428 -336 500 -480 640 -410 640 -416 500 -640 453 -500 375 -640 480 -500 375 -360 640 -640 401 -640 640 -640 480 -640 427 -640 480 -640 426 -332 500 -640 361 -640 480 -427 640 -640 426 -640 505 -640 588 -640 427 -640 409 -500 333 -500 375 -500 376 -640 415 -640 480 -640 480 -640 426 -640 480 -640 427 -640 399 -600 366 -640 360 -640 457 -640 480 -640 427 -640 427 -640 428 -480 640 -640 521 -500 333 -640 480 -500 325 -581 640 -640 480 -640 426 -500 333 -480 640 -640 428 -640 426 -427 640 -640 427 -640 427 -459 640 -375 500 -480 640 -640 427 -640 427 -640 451 -612 612 -640 480 -640 427 -427 640 -612 612 -640 427 -429 640 -640 480 -480 640 -640 480 -640 428 -480 640 -500 295 -640 424 -640 428 -500 375 -480 640 -428 640 -480 640 -640 427 -375 500 -500 333 -612 612 -640 480 -640 463 -500 333 -640 427 -462 640 -640 480 -640 480 -640 433 -640 618 -640 480 -425 640 -500 375 -640 214 -640 480 -640 480 -640 480 -640 480 -640 480 -500 356 -375 500 -640 480 -640 427 -480 353 -640 640 -500 375 -640 480 -640 424 -640 427 -640 426 -640 426 -640 640 -640 427 -640 427 -500 375 -640 434 -640 427 -640 427 -500 375 -500 333 -640 425 -420 640 -427 640 -640 428 -640 480 -640 480 -640 360 -374 500 -640 428 -375 500 -640 408 -500 375 -433 640 -612 612 -640 480 -640 480 -426 640 -427 640 -640 487 -480 640 -423 640 -640 480 -640 427 -640 480 -335 640 -640 426 -640 440 -640 480 -427 640 -640 480 -427 640 -640 480 -640 427 -500 375 -427 640 -640 427 -640 540 -640 426 -640 427 -500 377 -427 640 -640 480 -640 425 -500 332 -640 571 -640 428 -480 640 -640 428 -478 640 -640 569 -640 480 -428 640 -640 424 -640 480 -640 427 -640 514 -640 485 -640 409 -427 640 -640 427 -640 427 -429 640 -389 640 -640 480 -640 427 -359 640 -640 425 -640 426 -640 427 -640 373 -640 426 -640 427 -640 427 -486 640 -640 480 -427 640 -639 640 -500 375 -500 373 -640 480 -426 640 -640 366 -640 338 -333 500 -500 338 -427 640 -640 479 -500 375 -640 480 -640 519 -640 427 -320 240 -640 427 -612 612 -640 341 -428 640 -480 640 -640 466 -640 473 -640 313 -480 640 -640 640 -640 476 -640 480 -640 427 -640 480 -375 500 -427 640 -640 426 -640 480 -640 480 -444 640 -426 640 -427 640 -380 640 -640 480 -640 480 -640 339 -640 427 -640 573 -640 480 -480 640 -640 427 -640 480 -640 428 -640 426 -500 497 -640 428 -640 475 -640 361 -640 426 -256 217 -640 480 -640 480 -640 480 -427 640 -640 480 -500 375 -640 424 -500 341 -640 480 -453 640 -640 444 -500 400 -480 640 -500 333 -480 640 -640 427 -640 478 -640 424 -640 424 -640 427 -500 332 -427 640 -500 375 -500 334 -361 500 -640 430 -640 427 -500 375 -640 479 -428 640 -640 479 -427 640 -428 640 -640 425 -640 480 -640 424 -514 640 -480 640 -640 428 -640 480 -640 479 -640 426 -640 427 -640 424 -500 375 -360 640 -640 479 -427 640 -640 490 -500 375 -480 640 -500 333 -640 423 -640 426 -480 640 -640 480 -640 415 -640 431 -480 640 -640 423 -640 480 -428 640 -500 375 -640 396 -640 427 -640 427 -500 375 -640 480 -640 427 -640 499 -480 640 -480 640 -640 427 -640 470 -640 425 -500 333 -500 335 -640 410 -160 120 -640 428 -478 640 -640 436 -612 612 -640 480 -500 375 -640 425 -427 640 -400 453 -437 640 -480 640 -612 612 -500 281 -640 480 -425 640 -480 640 -640 344 -640 480 -640 428 -479 640 -640 428 -480 640 -500 375 -640 428 -640 427 -640 426 -640 480 -500 438 -427 640 -640 480 -640 480 -480 640 -640 362 -640 427 -640 480 -320 500 -640 393 -500 375 -453 640 -427 640 -640 503 -640 429 -640 425 -424 640 -426 640 -640 480 -640 480 -640 480 -640 426 -640 480 -426 640 -640 290 -640 480 -480 360 -640 480 -517 640 -480 640 -640 480 -480 640 -500 335 -450 338 -427 640 -640 480 -640 480 -640 480 -640 426 -640 480 -640 600 -431 640 -640 480 -428 640 -435 640 -640 427 -640 640 -640 425 -640 480 -640 426 -640 480 -640 426 -500 375 -640 480 -500 471 -640 480 -640 426 -640 426 -480 640 -640 431 -640 480 -640 429 -425 640 -640 342 -640 427 -640 480 -612 612 -640 428 -500 333 -252 252 -459 640 -640 427 -640 480 -389 640 -640 480 -640 427 -375 500 -640 425 -640 360 -489 640 -640 447 -500 334 -640 424 -480 640 -500 375 -640 425 -640 480 -427 640 -640 427 -640 480 -360 356 -500 375 -640 480 -640 427 -457 640 -500 375 -640 480 -479 640 -480 640 -640 427 -640 427 -640 478 -640 427 -640 480 -640 360 -640 480 -640 324 -640 427 -480 640 -640 427 -640 360 -640 429 -640 480 -331 500 -427 640 -640 458 -640 463 -640 427 -427 640 -640 480 -640 480 -640 427 -640 480 -442 640 -640 480 -640 426 -426 640 -640 429 -429 640 -640 426 -425 640 -640 480 -640 427 -640 440 -424 640 -640 426 -500 327 -640 480 -640 426 -640 480 -640 427 -480 640 -640 426 -640 480 -640 514 -500 384 -624 640 -457 640 -500 375 -640 486 -640 427 -640 480 -640 433 -426 640 -640 480 -640 411 -500 375 -640 360 -427 640 -640 427 -480 640 -640 288 -360 640 -640 427 -480 272 -640 480 -640 428 -640 480 -640 448 -640 640 -640 426 -640 427 -384 512 -640 427 -640 480 -640 426 -480 640 -480 640 -500 400 -500 335 -640 426 -640 480 -640 453 -480 640 -320 240 -640 480 -640 425 -640 480 -640 428 -375 500 -640 427 -640 458 -640 427 -640 320 -500 375 -500 407 -640 427 -389 640 -500 375 -640 483 -640 630 -480 640 -480 640 -640 480 -433 640 -480 640 -640 428 -640 412 -500 313 -640 427 -612 612 -480 640 -640 480 -480 640 -640 426 -640 426 -500 344 -640 361 -500 333 -640 480 -640 357 -640 427 -640 426 -640 429 -640 428 -640 426 -480 640 -640 263 -640 480 -640 480 -640 480 -640 486 -316 640 -480 640 -640 427 -640 480 -612 612 -640 523 -427 640 -480 640 -416 500 -640 428 -640 427 -576 576 -640 427 -640 480 -640 425 -640 427 -640 529 -640 428 -640 427 -500 332 -640 636 -640 480 -640 427 -640 426 -640 480 -640 480 -640 480 -640 480 -640 428 -640 427 -640 346 -640 480 -640 496 -640 480 -640 480 -480 640 -500 375 -640 506 -640 480 -426 640 -640 362 -480 640 -550 375 -640 428 -480 640 -640 428 -640 480 -640 428 -612 612 -375 500 -640 480 -640 429 -640 640 -640 457 -640 480 -640 360 -640 481 -640 458 -640 416 -480 640 -640 480 -640 400 -640 427 -640 453 -640 427 -640 359 -612 612 -480 640 -640 480 -640 427 -640 480 -640 428 -640 426 -480 640 -640 425 -640 428 -640 480 -640 480 -640 480 -640 480 -640 427 -640 480 -640 393 -640 426 -640 480 -500 495 -640 428 -640 426 -640 426 -480 640 -640 480 -480 640 -434 640 -578 433 -480 640 -640 427 -640 480 -500 433 -612 612 -640 427 -427 640 -428 640 -640 424 -480 640 -427 640 -478 640 -640 376 -332 500 -480 640 -640 389 -640 427 -640 427 -612 612 -640 480 -428 640 -640 478 -448 640 -427 640 -640 444 -500 375 -500 333 -500 375 -640 425 -480 640 -640 426 -640 427 -640 480 -640 480 -640 480 -500 332 -427 640 -640 480 -640 480 -640 480 -640 425 -640 480 -640 427 -640 480 -500 375 -640 426 -640 427 -640 427 -500 375 -640 428 -640 426 -640 428 -640 480 -640 426 -640 427 -640 360 -640 480 -640 479 -500 334 -334 500 -480 640 -640 464 -640 426 -500 375 -640 427 -500 375 -640 480 -480 640 -640 408 -640 408 -640 427 -640 424 -640 427 -640 427 -640 427 -640 425 -500 283 -480 640 -640 426 -518 640 -640 480 -640 559 -640 428 -640 480 -640 480 -640 480 -640 427 -640 426 -427 640 -333 500 -640 427 -640 480 -500 375 -640 480 -427 640 -640 458 -427 640 -640 480 -640 480 -480 640 -640 427 -640 427 -640 427 -640 480 -480 360 -640 427 -427 640 -640 428 -640 427 -375 500 -427 640 -640 427 -480 640 -424 640 -500 332 -500 375 -350 500 -640 427 -640 454 -480 640 -640 425 -640 533 -640 425 -500 375 -640 426 -640 503 -379 640 -640 377 -500 333 -480 640 -640 477 -480 640 -640 480 -640 480 -480 640 -640 426 -640 549 -640 480 -640 427 -500 375 -640 426 -640 361 -640 419 -428 640 -640 418 -612 612 -427 640 -640 427 -640 419 -500 236 -640 480 -640 480 -640 640 -640 425 -478 640 -500 452 -640 426 -640 426 -640 363 -640 360 -640 438 -478 640 -640 355 -640 427 -640 427 -500 375 -640 427 -640 480 -480 640 -640 457 -494 373 -640 511 -640 480 -500 333 -640 480 -500 375 -640 427 -383 640 -500 333 -640 383 -640 360 -640 428 -640 427 -640 427 -640 426 -612 612 -640 428 -640 426 -500 335 -375 500 -640 419 -415 640 -263 350 -640 480 -640 426 -375 500 -640 427 -640 427 -640 480 -500 375 -640 480 -500 333 -640 480 -640 480 -426 640 -640 480 -640 480 -375 500 -640 359 -640 427 -640 428 -640 480 -500 497 -427 640 -640 512 -427 500 -441 331 -640 458 -640 360 -640 425 -602 640 -640 425 -640 480 -640 427 -640 425 -480 640 -337 500 -640 480 -640 480 -640 459 -640 426 -640 480 -640 480 -640 640 -600 600 -480 640 -333 500 -640 426 -640 450 -333 500 -640 426 -640 427 -640 480 -640 480 -640 406 -480 640 -640 427 -640 418 -500 333 -640 427 -425 640 -640 480 -500 334 -640 480 -640 480 -640 480 -640 480 -640 629 -500 375 -427 640 -640 426 -640 480 -640 481 -640 396 -640 429 -640 483 -427 640 -640 427 -640 427 -640 457 -640 427 -612 612 -640 480 -640 480 -640 480 -640 480 -640 480 -474 640 -446 500 -500 375 -640 480 -640 465 -640 478 -640 448 -640 427 -500 375 -490 326 -640 427 -426 640 -640 428 -640 400 -640 345 -640 425 -640 480 -640 427 -640 480 -640 468 -500 375 -429 640 -640 427 -640 425 -640 584 -424 640 -640 403 -640 425 -640 426 -640 427 -640 480 -640 559 -640 221 -640 480 -640 426 -640 480 -612 612 -427 640 -640 480 -500 298 -426 640 -480 360 -480 640 -640 427 -640 480 -640 426 -640 361 -640 480 -640 366 -640 480 -500 375 -500 375 -478 640 -640 427 -640 428 -480 640 -640 428 -640 427 -640 426 -640 480 -640 425 -640 480 -640 480 -500 375 -640 480 -640 639 -640 559 -500 331 -394 640 -426 640 -640 480 -640 480 -640 480 -640 427 -428 640 -640 427 -640 393 -640 426 -640 424 -469 279 -427 640 -640 335 -640 430 -428 640 -500 640 -426 640 -398 640 -427 640 -640 427 -640 427 -640 427 -457 640 -425 640 -640 434 -500 411 -500 375 -640 480 -640 476 -640 480 -640 575 -640 427 -640 480 -425 640 -640 395 -640 451 -640 513 -640 480 -640 427 -481 640 -480 640 -640 427 -640 480 -480 640 -640 480 -640 427 -640 424 -640 480 -315 482 -640 426 -640 426 -640 480 -640 480 -640 480 -640 426 -453 640 -383 640 -600 450 -640 463 -640 480 -640 474 -640 480 -640 478 -500 375 -640 427 -612 612 -612 612 -640 383 -640 640 -640 480 -500 342 -500 333 -640 428 -640 480 -427 640 -640 427 -640 448 -434 640 -480 640 -640 427 -640 480 -640 480 -500 333 -640 587 -640 424 -448 640 -640 428 -640 406 -640 458 -600 400 -640 426 -500 375 -640 426 -425 640 -640 391 -500 375 -432 288 -334 500 -640 480 -500 380 -640 480 -500 333 -640 480 -375 500 -640 427 -640 429 -427 640 -500 396 -640 480 -640 480 -500 334 -640 339 -480 640 -640 265 -640 480 -640 480 -640 480 -500 375 -640 480 -479 640 -640 598 -640 427 -640 383 -494 640 -640 427 -500 333 -640 360 -427 640 -640 480 -640 481 -333 500 -480 640 -500 400 -640 372 -480 640 -480 640 -640 512 -640 480 -632 640 -640 480 -453 640 -640 480 -640 480 -361 640 -612 612 -640 427 -500 339 -640 480 -500 376 -500 375 -640 480 -640 363 -640 566 -640 425 -640 480 -500 400 -640 433 -640 427 -480 640 -640 427 -640 427 -640 427 -640 427 -640 353 -471 640 -358 640 -640 427 -640 480 -480 640 -640 480 -640 480 -640 427 -640 480 -640 480 -640 426 -640 480 -640 424 -612 612 -480 640 -640 468 -640 467 -513 640 -640 483 -640 428 -612 612 -427 640 -612 612 -500 333 -500 332 -640 480 -640 427 -444 640 -640 428 -640 487 -481 640 -426 319 -640 424 -333 500 -640 445 -640 427 -640 427 -640 640 -640 478 -500 333 -640 427 -426 640 -640 427 -478 640 -640 480 -518 640 -640 360 -640 480 -640 427 -427 640 -334 500 -640 426 -640 399 -480 640 -375 500 -640 523 -375 500 -338 500 -640 640 -480 640 -640 480 -640 427 -458 640 -640 328 -480 640 -480 640 -640 513 -640 427 -640 405 -640 480 -640 480 -640 426 -640 361 -640 424 -640 443 -640 480 -640 442 -640 359 -640 480 -640 480 -640 480 -640 427 -640 480 -640 437 -427 640 -640 427 -640 480 -640 480 -640 480 -640 480 -640 426 -640 480 -640 425 -480 640 -640 480 -640 426 -640 425 -480 640 -640 426 -640 362 -480 640 -500 330 -640 433 -640 480 -480 640 -640 590 -640 254 -640 426 -640 427 -640 433 -640 429 -640 480 -460 345 -480 640 -640 427 -640 426 -640 480 -500 333 -427 640 -500 332 -480 640 -640 480 -640 640 -500 375 -640 425 -424 640 -500 333 -273 448 -640 631 -451 640 -417 640 -640 427 -640 428 -500 375 -640 459 -479 640 -640 428 -640 396 -500 375 -640 427 -640 427 -640 359 -640 424 -640 427 -640 427 -640 480 -640 228 -640 424 -640 427 -500 333 -500 375 -640 480 -613 640 -600 450 -640 480 -478 640 -640 360 -375 500 -322 471 -640 640 -500 375 -640 428 -632 640 -480 640 -500 498 -453 604 -640 480 -640 359 -500 375 -640 482 -640 478 -640 494 -640 427 -640 480 -427 640 -640 480 -525 640 -480 640 -640 480 -640 429 -640 425 -640 424 -640 480 -640 426 -500 333 -330 500 -640 425 -640 516 -640 427 -500 375 -605 640 -640 427 -640 427 -640 480 -612 612 -375 500 -640 480 -640 427 -640 563 -425 640 -640 427 -640 479 -640 480 -480 640 -640 478 -640 589 -640 427 -640 427 -482 640 -411 640 -640 238 -640 427 -640 427 -427 640 -640 427 -333 500 -640 427 -480 640 -500 375 -640 266 -640 480 -640 549 -421 500 -426 640 -375 500 -333 500 -640 340 -640 443 -640 631 -408 640 -640 552 -640 360 -427 640 -640 480 -480 640 -500 400 -640 254 -489 640 -500 333 -480 640 -640 383 -640 513 -640 428 -640 480 -640 426 -640 480 -640 483 -612 612 -640 389 -640 374 -640 480 -500 375 -640 360 -640 427 -640 480 -640 334 -480 640 -640 383 -418 640 -500 376 -640 623 -612 612 -640 426 -500 375 -423 640 -640 427 -640 480 -640 480 -640 480 -480 640 -640 426 -357 340 -427 640 -640 436 -640 426 -640 427 -469 640 -500 375 -640 453 -640 480 -500 375 -500 375 -375 500 -640 480 -640 512 -500 375 -359 640 -640 480 -320 265 -640 480 -640 480 -640 427 -480 640 -640 432 -640 480 -500 375 -640 430 -500 375 -640 444 -640 427 -640 425 -640 360 -511 640 -640 427 -480 640 -424 640 -512 640 -640 426 -640 427 -640 427 -640 640 -640 360 -640 371 -640 427 -640 480 -640 480 -426 640 -640 471 -640 426 -554 640 -640 385 -640 424 -478 640 -640 480 -500 375 -640 428 -640 478 -640 427 -500 333 -425 640 -640 480 -640 348 -640 473 -640 480 -477 640 -480 640 -640 271 -640 341 -640 456 -640 427 -427 640 -640 640 -640 429 -480 640 -640 427 -640 478 -368 500 -640 480 -640 426 -640 480 -640 478 -640 481 -500 375 -640 427 -640 480 -500 333 -640 399 -640 426 -640 478 -640 480 -375 500 -640 425 -640 454 -640 421 -640 480 -640 427 -640 640 -438 640 -435 640 -640 480 -640 320 -640 506 -640 480 -640 480 -640 640 -640 426 -383 640 -438 640 -612 612 -513 640 -640 424 -640 425 -640 359 -480 640 -640 427 -640 480 -640 480 -640 480 -640 480 -640 480 -480 640 -640 427 -640 427 -500 334 -640 480 -480 640 -640 451 -640 480 -640 480 -465 640 -640 320 -640 429 -640 456 -640 425 -640 426 -640 446 -500 375 -458 380 -640 355 -640 480 -640 480 -640 426 -276 640 -480 640 -640 480 -640 508 -640 386 -640 482 -413 500 -640 453 -640 640 -640 479 -640 480 -640 427 -640 300 -428 640 -640 428 -480 640 -333 500 -640 427 -640 409 -640 428 -480 640 -480 640 -640 422 -412 640 -640 441 -640 425 -427 640 -640 480 -480 640 -640 426 -480 640 -640 480 -500 341 -640 427 -640 360 -640 360 -427 640 -640 428 -640 428 -640 480 -640 425 -640 480 -640 480 -640 427 -400 300 -640 467 -500 333 -504 378 -640 457 -480 640 -640 373 -500 375 -426 640 -640 480 -640 428 -500 333 -640 427 -530 640 -640 480 -640 480 -640 427 -640 480 -640 427 -640 427 -640 480 -480 640 -383 640 -456 640 -480 640 -640 425 -640 426 -640 424 -640 480 -640 425 -640 480 -640 427 -480 640 -640 480 -640 360 -640 480 -480 640 -640 640 -300 450 -640 427 -640 425 -640 400 -640 427 -445 640 -640 480 -640 427 -640 480 -428 640 -640 296 -500 312 -640 400 -640 420 -640 381 -640 480 -375 500 -640 426 -640 426 -640 457 -500 334 -640 480 -640 480 -428 640 -640 466 -480 640 -480 640 -480 640 -640 486 -612 612 -640 480 -480 640 -640 427 -640 427 -640 425 -640 467 -640 426 -480 640 -480 640 -640 480 -640 480 -640 281 -612 612 -333 500 -500 333 -640 427 -640 480 -640 512 -640 480 -480 640 -640 480 -640 427 -640 427 -640 427 -427 640 -614 640 -640 480 -480 640 -640 427 -480 640 -640 480 -254 336 -640 360 -640 455 -640 424 -640 480 -640 480 -640 426 -375 500 -480 640 -427 640 -500 375 -640 424 -640 473 -640 457 -640 359 -500 334 -391 640 -640 428 -480 640 -640 426 -640 427 -640 347 -640 427 -640 436 -640 480 -640 481 -472 640 -500 375 -640 427 -640 424 -336 640 -640 480 -640 353 -640 411 -640 454 -600 450 -640 361 -640 480 -640 640 -640 426 -480 640 -640 480 -500 417 -640 427 -428 640 -640 480 -640 427 -640 427 -480 640 -375 500 -480 640 -640 360 -640 633 -640 427 -640 480 -640 283 -640 434 -360 640 -640 458 -640 480 -640 480 -480 640 -640 480 -640 480 -640 586 -640 640 -640 425 -375 500 -640 427 -640 436 -640 425 -640 360 -640 406 -640 427 -640 492 -640 427 -640 426 -640 424 -500 333 -640 426 -480 640 -640 427 -640 426 -640 431 -427 640 -375 500 -640 360 -640 427 -480 640 -425 640 -640 444 -640 427 -427 640 -591 640 -640 480 -640 427 -640 416 -640 480 -640 427 -640 426 -640 427 -640 440 -640 477 -640 480 -640 359 -640 311 -640 427 -640 326 -640 427 -640 480 -640 310 -640 480 -362 640 -640 480 -470 640 -480 640 -640 449 -640 481 -484 640 -332 500 -569 640 -427 640 -375 500 -612 612 -640 424 -640 467 -485 500 -612 612 -640 480 -500 332 -427 640 -640 425 -640 426 -480 640 -640 480 -640 480 -478 640 -640 480 -640 427 -640 424 -640 428 -640 426 -640 426 -640 427 -640 428 -324 640 -640 449 -500 375 -500 375 -500 281 -506 640 -427 640 -640 480 -640 480 -640 480 -427 640 -612 612 -640 489 -640 480 -480 640 -640 427 -640 424 -500 375 -640 480 -640 480 -612 612 -640 480 -640 480 -426 640 -640 361 -640 427 -640 424 -427 640 -640 428 -640 438 -640 426 -640 480 -640 427 -640 378 -640 427 -640 573 -640 427 -640 480 -640 480 -640 429 -500 333 -640 480 -640 427 -640 428 -640 426 -640 480 -425 640 -640 428 -640 396 -375 500 -640 425 -640 426 -640 480 -640 480 -640 480 -375 500 -640 480 -640 427 -640 480 -500 375 -500 359 -428 640 -640 362 -640 425 -640 424 -427 640 -640 480 -640 480 -419 500 -370 640 -333 500 -640 427 -500 375 -612 612 -640 432 -640 415 -500 375 -480 640 -612 612 -640 480 -500 400 -640 427 -500 331 -500 375 -500 375 -640 480 -640 558 -640 480 -480 640 -640 480 -478 640 -480 640 -640 480 -640 427 -480 640 -640 480 -480 640 -333 426 -640 431 -500 375 -640 478 -480 640 -640 640 -640 480 -480 640 -640 418 -640 427 -640 480 -640 424 -640 444 -640 480 -526 640 -640 480 -640 480 -640 429 -640 429 -500 375 -424 640 -640 396 -640 318 -640 428 -428 640 -640 480 -433 640 -640 480 -640 427 -500 375 -640 386 -640 427 -640 427 -640 480 -640 480 -640 442 -500 332 -640 428 -360 640 -640 427 -612 612 -480 640 -640 424 -640 480 -425 640 -640 425 -640 480 -640 608 -640 428 -333 500 -427 640 -640 432 -640 480 -640 369 -640 602 -427 640 -640 427 -640 433 -640 426 -478 640 -500 333 -640 360 -640 427 -640 480 -640 351 -640 488 -640 480 -640 424 -640 427 -640 506 -453 604 -640 427 -358 500 -640 480 -500 333 -640 363 -640 640 -640 425 -480 640 -640 480 -640 480 -640 480 -640 428 -640 427 -640 433 -640 466 -640 480 -512 384 -640 411 -640 480 -483 500 -640 480 -640 427 -640 480 -640 480 -640 480 -640 483 -480 640 -640 457 -426 640 -640 480 -500 311 -640 480 -640 426 -500 333 -640 400 -480 640 -640 428 -640 427 -640 426 -640 426 -640 428 -500 333 -640 425 -640 480 -640 425 -480 640 -640 424 -500 375 -612 612 -640 480 -640 480 -427 640 -640 555 -482 640 -640 427 -640 480 -640 478 -640 427 -640 428 -640 519 -640 428 -500 333 -640 360 -640 483 -640 242 -640 480 -500 281 -500 375 -640 429 -500 375 -427 640 -640 424 -640 480 -640 427 -640 480 -640 427 -500 375 -480 640 -640 426 -640 425 -427 640 -640 480 -640 426 -500 409 -640 427 -640 425 -480 640 -500 436 -480 640 -478 640 -500 400 -640 480 -640 427 -640 428 -640 480 -640 425 -640 426 -500 375 -640 480 -640 485 -640 469 -640 426 -612 612 -640 483 -375 500 -640 426 -640 427 -500 375 -640 532 -640 429 -500 375 -640 640 -640 436 -640 427 -640 480 -375 500 -640 427 -640 426 -640 425 -426 640 -427 640 -640 428 -640 480 -640 427 -612 612 -640 479 -480 640 -640 480 -640 427 -480 640 -375 500 -375 500 -640 427 -424 640 -640 427 -640 570 -469 341 -640 480 -640 427 -480 640 -640 427 -640 427 -426 640 -640 427 -640 485 -640 453 -640 427 -427 640 -640 360 -640 480 -427 640 -640 480 -640 480 -640 429 -640 478 -640 480 -480 640 -500 337 -640 480 -640 493 -640 427 -640 424 -640 425 -640 425 -640 427 -480 640 -640 549 -639 640 -500 375 -640 480 -640 399 -640 424 -640 401 -640 429 -640 428 -640 360 -640 427 -521 640 -427 640 -640 342 -425 640 -640 427 -640 480 -640 480 -640 480 -500 375 -426 640 -500 358 -640 514 -640 480 -640 427 -640 640 -640 444 -480 640 -500 335 -640 408 -640 634 -640 427 -640 427 -640 480 -640 427 -640 426 -640 477 -375 500 -640 427 -463 640 -640 480 -418 640 -640 480 -640 480 -640 480 -640 480 -640 425 -427 640 -480 640 -640 433 -640 428 -498 640 -640 427 -640 480 -427 640 -352 500 -640 480 -424 640 -612 612 -640 433 -640 480 -640 480 -640 558 -640 425 -640 428 -640 360 -426 640 -500 286 -640 480 -640 359 -511 640 -640 516 -267 400 -475 500 -494 500 -640 264 -640 427 -640 428 -480 640 -480 640 -640 360 -480 640 -640 423 -640 480 -640 468 -500 325 -500 411 -500 375 -480 640 -640 427 -640 427 -427 640 -640 608 -640 359 -480 640 -640 480 -640 425 -640 426 -640 427 -640 423 -640 428 -640 480 -640 480 -375 500 -640 427 -640 425 -640 504 -640 427 -640 480 -640 354 -445 400 -640 409 -640 427 -400 300 -640 480 -640 427 -463 640 -640 461 -640 479 -640 425 -640 480 -640 429 -500 333 -640 428 -375 500 -612 612 -640 427 -436 640 -480 640 -500 375 -640 480 -640 526 -640 480 -448 500 -480 640 -640 422 -640 480 -640 640 -640 480 -426 640 -500 375 -480 640 -640 480 -640 424 -640 427 -640 457 -640 429 -640 427 -450 600 -425 640 -640 640 -640 229 -640 579 -640 425 -640 426 -640 480 -466 640 -640 427 -640 480 -640 424 -480 640 -640 427 -427 640 -480 319 -640 429 -480 640 -480 640 -333 500 -500 375 -534 640 -640 480 -640 427 -640 427 -640 425 -424 640 -480 640 -640 425 -640 480 -640 428 -480 640 -480 640 -640 426 -360 640 -500 375 -640 428 -640 426 -500 375 -640 480 -375 500 -375 500 -640 372 -640 480 -425 640 -640 480 -612 612 -640 640 -640 480 -500 375 -640 427 -640 506 -640 480 -640 328 -640 480 -640 401 -640 483 -640 428 -433 500 -640 371 -640 427 -640 480 -640 457 -425 640 -640 480 -481 640 -640 480 -640 480 -640 480 -640 424 -427 640 -640 618 -640 640 -500 239 -612 612 -640 421 -640 430 -640 428 -640 567 -500 375 -640 480 -612 612 -640 425 -640 426 -427 640 -640 480 -640 427 -640 348 -640 480 -512 640 -480 640 -480 640 -480 640 -640 427 -640 480 -640 480 -640 426 -427 640 -640 425 -640 512 -640 424 -640 480 -640 480 -640 480 -640 444 -425 640 -640 411 -427 640 -375 500 -640 404 -640 480 -640 480 -574 640 -500 375 -640 427 -640 480 -612 612 -500 375 -640 480 -640 457 -640 480 -640 428 -500 375 -640 480 -375 500 -640 427 -425 640 -640 368 -640 460 -640 480 -640 425 -486 640 -640 458 -426 640 -640 427 -600 400 -640 479 -500 375 -640 427 -640 480 -640 427 -640 480 -640 427 -500 375 -640 429 -612 612 -500 333 -640 480 -640 480 -400 500 -640 480 -480 640 -500 375 -180 240 -434 640 -427 640 -640 480 -640 429 -640 427 -256 640 -640 480 -640 428 -500 375 -640 395 -640 469 -500 375 -640 640 -640 428 -427 640 -640 480 -427 640 -640 427 -640 426 -426 640 -640 426 -640 480 -640 424 -640 443 -640 425 -375 500 -597 640 -640 427 -640 427 -480 640 -640 480 -480 640 -640 427 -640 480 -640 427 -640 325 -640 483 -640 480 -640 480 -640 440 -640 480 -433 500 -640 427 -640 480 -478 640 -640 426 -640 480 -640 480 -640 427 -640 424 -640 386 -640 427 -640 360 -480 640 -640 438 -500 332 -640 428 -640 480 -640 427 -640 394 -640 480 -640 237 -640 426 -612 612 -480 640 -640 427 -640 480 -410 640 -640 427 -640 480 -480 640 -500 333 -640 512 -640 480 -640 427 -480 640 -640 480 -427 640 -640 480 -480 640 -640 531 -334 500 -640 379 -480 640 -427 640 -480 640 -480 640 -640 480 -427 640 -640 384 -612 612 -640 426 -640 448 -500 337 -640 480 -640 480 -500 375 -640 480 -375 500 -640 384 -640 480 -480 640 -640 480 -640 480 -500 281 -640 519 -376 500 -640 480 -640 427 -480 640 -425 640 -640 480 -640 425 -640 426 -612 612 -640 480 -461 640 -640 425 -640 434 -640 424 -640 427 -480 640 -640 640 -640 494 -640 427 -447 640 -640 479 -640 480 -640 428 -640 426 -640 640 -480 360 -480 640 -640 360 -640 480 -426 640 -640 435 -640 480 -640 480 -640 383 -640 425 -640 480 -416 640 -640 424 -428 640 -640 481 -640 418 -500 364 -424 500 -640 360 -480 640 -640 426 -640 427 -640 422 -453 640 -428 640 -612 612 -640 480 -426 640 -600 600 -640 428 -640 480 -640 360 -640 425 -640 480 -428 640 -480 640 -360 640 -375 500 -427 640 -640 480 -640 480 -640 514 -640 480 -425 640 -640 376 -640 431 -640 427 -375 500 -640 480 -375 500 -640 480 -480 640 -427 640 -640 480 -332 500 -457 640 -640 544 -640 433 -640 513 -480 640 -640 480 -425 640 -640 480 -512 640 -500 332 -640 480 -640 425 -640 480 -640 426 -427 640 -596 446 -640 359 -640 427 -640 480 -640 480 -640 480 -480 640 -640 457 -640 480 -428 640 -640 640 -500 335 -333 500 -612 612 -640 427 -640 426 -640 480 -640 427 -500 333 -640 480 -480 640 -640 428 -480 640 -640 480 -426 640 -640 458 -375 500 -480 640 -640 427 -427 640 -425 640 -480 640 -500 376 -640 427 -500 370 -448 500 -458 640 -640 480 -640 426 -640 637 -640 480 -640 480 -512 640 -500 375 -640 427 -640 434 -500 332 -640 403 -640 480 -640 480 -640 427 -640 427 -640 426 -640 480 -427 640 -513 640 -640 424 -640 480 -640 426 -640 428 -640 480 -500 333 -640 480 -640 360 -640 480 -640 427 -640 343 -640 480 -500 377 -500 375 -425 640 -640 413 -454 640 -640 426 -375 500 -640 480 -480 640 -640 523 -640 428 -500 333 -640 427 -640 481 -640 420 -500 375 -480 640 -422 640 -640 427 -640 432 -640 265 -466 640 -608 640 -427 640 -480 640 -640 426 -640 427 -640 360 -640 427 -480 640 -640 480 -640 426 -640 427 -640 420 -640 427 -612 612 -375 500 -423 640 -414 500 -480 640 -480 640 -640 427 -640 427 -640 425 -640 429 -612 612 -457 640 -640 640 -600 640 -640 480 -426 640 -640 427 -500 332 -428 640 -640 463 -640 426 -640 480 -480 640 -640 480 -640 461 -640 441 -496 640 -640 508 -640 428 -427 640 -640 480 -640 480 -612 612 -640 480 -448 640 -500 333 -426 640 -640 480 -426 640 -480 640 -640 480 -500 335 -231 500 -432 640 -640 427 -480 640 -640 427 -480 640 -640 441 -640 480 -375 500 -640 427 -640 426 -640 480 -640 423 -427 640 -640 480 -640 425 -640 429 -559 640 -640 519 -478 640 -640 480 -480 640 -640 512 -640 480 -640 427 -640 404 -427 640 -640 480 -640 480 -640 427 -640 480 -500 375 -640 484 -480 640 -640 614 -480 640 -640 427 -425 640 -640 426 -640 426 -640 458 -640 480 -640 458 -640 426 -480 640 -640 480 -500 338 -640 480 -640 427 -640 428 -612 612 -480 640 -640 426 -375 500 -480 640 -640 427 -640 425 -516 640 -500 420 -640 424 -640 427 -640 633 -612 612 -479 640 -640 427 -640 424 -640 427 -480 640 -500 375 -480 640 -612 612 -640 482 -640 480 -543 640 -480 640 -640 427 -640 480 -640 480 -640 425 -640 501 -640 480 -640 454 -640 427 -640 425 -473 640 -640 425 -480 640 -612 612 -428 640 -640 506 -640 480 -640 579 -480 640 -640 425 -640 427 -640 458 -640 423 -640 478 -640 480 -640 426 -612 612 -640 517 -303 500 -427 640 -640 400 -426 640 -640 480 -500 375 -640 434 -640 428 -640 480 -640 427 -500 333 -640 480 -640 427 -480 640 -640 480 -478 640 -640 424 -612 612 -500 333 -640 480 -640 480 -640 483 -514 640 -426 640 -640 480 -640 480 -480 640 -640 360 -500 375 -640 480 -426 640 -640 428 -640 461 -640 483 -640 471 -640 428 -427 640 -640 480 -426 640 -480 640 -375 500 -401 640 -640 514 -500 333 -640 424 -640 480 -640 502 -640 480 -640 372 -640 477 -640 426 -640 426 -480 640 -640 427 -500 375 -480 640 -640 478 -640 480 -427 640 -640 427 -612 612 -640 426 -500 333 -480 640 -500 333 -425 640 -640 427 -480 640 -640 480 -437 640 -640 360 -640 416 -640 427 -500 308 -640 427 -640 480 -375 500 -640 480 -640 360 -426 640 -427 640 -640 426 -640 383 -425 640 -640 480 -640 427 -640 421 -640 480 -640 428 -640 478 -640 503 -640 458 -427 640 -500 375 -640 480 -640 480 -640 427 -640 495 -480 640 -467 607 -640 425 -428 640 -640 448 -480 640 -640 361 -640 480 -640 426 -500 375 -640 389 -640 480 -480 640 -640 451 -500 375 -480 640 -640 428 -640 480 -500 375 -640 478 -426 640 -640 480 -640 480 -640 526 -500 364 -640 427 -383 500 -640 480 -500 355 -500 375 -640 481 -500 400 -640 480 -612 612 -640 360 -640 480 -640 426 -479 640 -640 480 -612 612 -375 500 -640 486 -500 375 -640 498 -640 427 -500 375 -640 427 -480 640 -640 480 -640 428 -612 612 -640 427 -500 375 -640 475 -640 425 -640 523 -480 640 -427 640 -640 480 -640 480 -640 480 -640 427 -480 640 -640 506 -640 427 -640 480 -640 528 -640 480 -640 480 -426 640 -640 425 -640 426 -640 427 -640 278 -500 335 -500 281 -427 640 -375 500 -427 640 -640 438 -640 427 -480 640 -640 360 -640 480 -640 480 -640 389 -375 500 -640 427 -640 427 -423 640 -640 480 -612 612 -427 640 -388 640 -640 425 -480 640 -640 480 -425 640 -500 375 -427 640 -425 640 -640 480 -640 448 -640 480 -375 500 -640 480 -640 640 -427 640 -375 500 -478 640 -424 640 -480 640 -426 640 -478 640 -640 480 -334 500 -640 426 -640 426 -640 425 -480 640 -640 360 -640 480 -640 428 -640 480 -640 424 -640 424 -640 427 -640 439 -640 426 -500 375 -640 425 -640 480 -480 640 -640 426 -640 427 -500 333 -640 480 -640 300 -640 404 -510 340 -640 427 -640 478 -480 640 -640 426 -640 483 -640 424 -640 319 -640 321 -500 333 -640 408 -640 427 -640 434 -640 457 -640 427 -640 426 -375 500 -500 333 -640 427 -640 478 -640 480 -480 640 -640 426 -640 427 -640 413 -640 480 -640 433 -428 640 -640 476 -387 518 -640 364 -640 480 -640 474 -640 480 -500 293 -480 640 -640 426 -500 500 -640 457 -346 500 -640 480 -480 640 -480 640 -500 334 -480 640 -640 478 -640 480 -640 427 -640 480 -640 470 -640 441 -375 500 -418 500 -640 427 -480 640 -425 640 -432 432 -640 425 -500 361 -640 388 -375 500 -640 425 -640 426 -457 640 -499 500 -640 480 -427 640 -640 361 -640 428 -484 640 -640 425 -640 480 -640 476 -640 480 -640 480 -640 427 -375 500 -583 640 -640 480 -480 640 -375 500 -612 612 -480 640 -500 327 -480 640 -640 427 -612 612 -426 640 -514 640 -480 640 -640 427 -640 400 -640 427 -640 305 -640 480 -640 480 -640 427 -466 640 -640 480 -640 480 -640 427 -369 500 -640 480 -640 425 -640 481 -427 640 -640 479 -440 640 -478 640 -640 329 -428 640 -640 464 -640 427 -640 457 -640 508 -640 480 -640 391 -500 375 -640 478 -640 431 -375 500 -480 640 -640 594 -428 640 -640 446 -500 332 -480 640 -411 500 -640 427 -640 485 -640 480 -640 401 -640 425 -640 359 -640 640 -640 480 -640 427 -424 640 -640 480 -640 426 -640 480 -640 480 -500 375 -640 480 -640 428 -375 500 -425 640 -640 480 -640 485 -640 480 -425 640 -480 640 -640 428 -640 480 -640 434 -640 427 -640 480 -640 508 -640 480 -640 425 -640 427 -342 500 -640 426 -612 612 -428 640 -640 427 -500 375 -612 612 -640 427 -426 640 -375 500 -480 640 -640 463 -640 480 -281 500 -375 500 -500 375 -640 427 -375 500 -640 480 -640 427 -640 359 -640 425 -640 480 -480 640 -640 406 -640 426 -640 620 -640 480 -500 375 -640 427 -500 375 -480 640 -640 480 -640 362 -491 640 -480 640 -640 383 -640 480 -500 375 -640 426 -640 480 -640 480 -640 480 -640 426 -640 428 -640 480 -426 640 -427 640 -640 423 -640 427 -500 375 -640 476 -500 375 -640 480 -427 640 -640 480 -640 480 -612 612 -640 427 -640 426 -640 512 -333 500 -640 458 -640 478 -427 640 -640 427 -640 480 -640 480 -640 427 -640 382 -640 480 -500 313 -375 500 -640 480 -640 457 -640 428 -640 481 -427 640 -640 428 -640 363 -427 640 -640 425 -640 426 -425 640 -640 427 -640 425 -640 427 -640 480 -640 481 -423 640 -640 563 -640 427 -640 480 -612 612 -640 426 -640 480 -296 446 -500 333 -640 480 -640 425 -640 480 -640 480 -500 333 -618 640 -640 480 -640 427 -500 375 -500 333 -480 640 -423 640 -428 640 -426 640 -500 334 -640 480 -640 480 -640 424 -640 469 -640 439 -427 640 -640 427 -426 640 -640 480 -480 640 -640 480 -500 333 -640 426 -640 480 -500 281 -640 427 -640 481 -640 480 -640 427 -640 640 -640 427 -640 472 -640 480 -480 640 -640 480 -640 544 -640 489 -480 640 -500 429 -640 428 -500 333 -480 640 -640 326 -480 640 -500 375 -640 480 -640 413 -640 480 -640 480 -640 426 -640 426 -640 480 -640 480 -612 612 -640 426 -640 478 -640 480 -640 447 -426 640 -640 427 -480 342 -640 426 -500 335 -332 500 -435 640 -640 501 -640 427 -366 640 -640 328 -500 376 -500 333 -640 517 -640 360 -640 480 -640 427 -640 480 -640 426 -640 398 -640 426 -640 425 -640 640 -427 640 -640 427 -437 640 -640 431 -640 427 -640 490 -640 427 -640 428 -640 480 -640 480 -640 433 -500 375 -640 480 -640 480 -640 480 -640 427 -640 347 -640 480 -640 480 -640 379 -353 640 -640 360 -451 640 -640 400 -640 428 -375 500 -640 457 -612 612 -640 480 -427 640 -480 640 -640 480 -640 480 -640 428 -640 425 -480 640 -426 640 -640 427 -500 334 -640 281 -640 480 -400 500 -428 640 -640 427 -482 640 -640 428 -640 427 -640 480 -640 480 -640 434 -500 334 -500 333 -640 427 -427 640 -640 426 -640 385 -640 480 -480 640 -480 640 -640 604 -640 426 -640 454 -640 480 -640 480 -640 569 -640 427 -640 425 -640 480 -640 439 -640 480 -640 480 -480 640 -640 480 -640 480 -640 480 -500 364 -640 426 -640 480 -425 640 -640 640 -480 640 -480 640 -640 480 -474 640 -640 427 -640 396 -498 500 -640 480 -500 375 -440 500 -427 640 -640 480 -500 349 -428 640 -640 427 -640 427 -640 427 -640 461 -640 486 -640 480 -480 640 -640 473 -640 427 -640 425 -640 360 -640 428 -640 426 -640 478 -640 326 -640 399 -640 480 -640 400 -640 427 -640 312 -640 640 -633 640 -580 580 -640 500 -640 427 -640 480 -640 427 -640 480 -500 333 -640 498 -468 640 -375 500 -430 640 -640 480 -480 640 -640 425 -480 640 -383 640 -500 333 -640 426 -468 640 -640 480 -640 480 -500 375 -640 480 -413 640 -640 383 -640 480 -500 375 -500 333 -426 640 -640 486 -500 375 -427 640 -640 480 -640 324 -640 480 -375 500 -480 640 -375 500 -612 612 -500 375 -612 612 -640 541 -640 481 -427 640 -640 480 -640 480 -480 640 -640 480 -612 612 -427 640 -640 480 -640 427 -640 426 -529 640 -500 375 -640 416 -640 480 -567 640 -640 554 -640 478 -640 427 -359 640 -640 383 -640 512 -640 427 -500 332 -508 640 -640 424 -640 278 -375 500 -480 640 -640 481 -640 480 -459 640 -450 600 -640 480 -548 640 -640 640 -640 480 -425 640 -640 425 -640 427 -640 480 -640 426 -640 480 -640 399 -640 480 -640 427 -640 456 -640 480 -640 480 -640 480 -458 640 -640 428 -640 480 -500 375 -640 478 -640 480 -640 418 -640 480 -640 427 -640 589 -640 400 -480 640 -375 500 -500 332 -640 480 -640 423 -640 427 -640 480 -640 426 -640 480 -640 480 -428 640 -640 480 -640 480 -640 427 -640 426 -640 480 -500 375 -480 640 -640 480 -640 515 -426 640 -640 427 -612 612 -640 480 -500 357 -480 640 -640 480 -640 359 -427 640 -426 640 -640 427 -640 427 -640 480 -640 427 -500 375 -640 422 -480 640 -640 427 -480 640 -640 480 -350 500 -640 425 -640 480 -480 640 -640 480 -640 427 -640 427 -640 461 -640 426 -640 502 -612 612 -640 480 -640 480 -640 424 -500 375 -640 433 -640 480 -640 480 -640 480 -640 425 -480 640 -427 640 -640 423 -640 480 -640 427 -640 480 -640 427 -640 480 -640 324 -640 478 -480 640 -640 480 -640 480 -640 640 -640 427 -640 480 -640 480 -320 500 -640 424 -500 375 -480 640 -480 640 -640 480 -480 640 -640 480 -640 359 -480 640 -640 427 -427 640 -180 240 -500 333 -640 516 -500 348 -253 130 -375 500 -640 279 -640 427 -640 427 -640 480 -500 375 -427 640 -640 424 -640 426 -500 375 -375 500 -640 427 -640 423 -640 427 -427 640 -640 478 -640 480 -640 427 -500 334 -640 480 -640 480 -500 333 -450 338 -640 584 -627 640 -640 480 -480 640 -640 480 -640 481 -640 480 -426 640 -640 425 -640 553 -640 480 -612 612 -500 334 -500 375 -640 480 -640 434 -640 480 -640 428 -640 480 -444 640 -640 480 -640 480 -612 612 -500 375 -640 427 -426 640 -640 427 -387 640 -423 640 -640 360 -640 480 -640 480 -500 375 -640 480 -640 427 -640 480 -640 528 -640 479 -640 480 -563 640 -640 478 -640 480 -500 286 -500 415 -640 533 -640 544 -640 427 -480 640 -640 427 -640 426 -640 426 -500 500 -640 480 -640 480 -480 640 -640 426 -426 640 -500 397 -551 640 -640 427 -640 502 -640 401 -500 333 -640 427 -640 480 -354 640 -640 449 -500 333 -640 418 -408 640 -431 640 -640 480 -640 480 -612 612 -448 336 -640 480 -640 444 -400 600 -640 427 -640 480 -427 640 -612 612 -640 425 -640 427 -640 359 -640 512 -375 500 -426 640 -640 425 -640 426 -640 426 -640 417 -640 427 -640 480 -612 612 -640 489 -640 425 -500 336 -427 640 -640 480 -430 318 -640 480 -640 426 -429 640 -640 426 -427 640 -640 360 -640 480 -640 427 -640 427 -640 480 -640 480 -640 368 -640 427 -640 426 -640 480 -640 411 -640 482 -640 480 -640 477 -480 640 -640 480 -640 480 -640 480 -500 500 -443 640 -640 426 -640 425 -640 480 -640 480 -427 640 -640 480 -403 640 -533 640 -640 425 -640 632 -612 612 -500 332 -335 500 -640 480 -550 550 -640 480 -640 480 -500 375 -640 480 -375 500 -427 640 -640 424 -640 427 -640 425 -640 427 -640 458 -426 640 -640 478 -640 426 -640 359 -500 401 -640 360 -640 438 -640 425 -480 640 -480 640 -640 480 -640 429 -480 640 -480 640 -500 333 -480 640 -640 459 -640 427 -640 426 -500 333 -413 640 -530 530 -640 428 -640 480 -480 640 -640 480 -640 480 -640 449 -640 426 -586 640 -640 480 -359 640 -428 640 -500 335 -640 426 -640 640 -640 426 -640 426 -640 426 -640 480 -640 634 -640 427 -640 480 -640 480 -500 375 -500 333 -640 480 -426 640 -640 441 -640 501 -500 474 -640 480 -640 427 -640 427 -478 640 -424 640 -500 375 -640 426 -640 427 -640 480 -480 640 -462 640 -640 480 -500 333 -240 320 -590 397 -640 480 -640 400 -640 428 -640 480 -500 375 -640 427 -640 480 -640 396 -640 480 -480 640 -500 375 -640 480 -640 427 -333 500 -640 458 -453 640 -640 427 -640 427 -640 427 -480 640 -640 427 -500 375 -640 367 -427 640 -640 512 -640 426 -640 478 -640 480 -640 352 -410 640 -500 375 -640 425 -500 375 -424 640 -640 425 -480 640 -462 557 -640 480 -640 480 -640 427 -500 375 -640 470 -500 375 -375 500 -500 375 -427 640 -480 640 -480 640 -480 640 -640 360 -640 420 -640 427 -430 640 -383 640 -640 431 -332 500 -640 485 -500 333 -500 331 -375 500 -640 480 -640 426 -640 480 -640 640 -640 427 -427 640 -640 480 -640 480 -640 428 -480 640 -640 480 -640 427 -640 427 -480 640 -640 427 -640 480 -480 640 -640 480 -640 480 -478 640 -640 427 -640 480 -640 427 -427 640 -640 480 -480 640 -500 332 -640 480 -426 640 -640 480 -640 441 -640 427 -640 480 -478 640 -640 480 -640 480 -640 418 -640 427 -500 332 -480 640 -640 248 -640 480 -425 640 -480 640 -640 383 -320 427 -640 480 -480 640 -640 639 -640 480 -427 640 -481 640 -640 533 -640 426 -640 427 -612 612 -500 333 -640 480 -640 465 -536 640 -500 375 -640 427 -640 426 -427 640 -640 426 -640 427 -375 500 -640 213 -640 512 -640 480 -427 640 -640 425 -640 480 -640 480 -406 640 -640 426 -640 640 -640 480 -640 480 -640 480 -393 640 -640 427 -640 427 -500 375 -640 428 -640 428 -640 359 -640 487 -640 478 -640 640 -500 332 -640 427 -640 480 -640 261 -375 500 -640 426 -640 428 -640 405 -500 375 -331 500 -480 640 -640 480 -640 427 -640 480 -640 480 -640 427 -640 402 -500 375 -640 427 -478 640 -640 640 -375 500 -640 427 -640 424 -640 480 -640 426 -640 425 -480 640 -640 426 -640 424 -640 427 -640 427 -375 500 -640 427 -640 427 -640 480 -488 640 -640 430 -480 640 -640 480 -640 480 -640 427 -640 480 -640 294 -640 480 -640 480 -640 427 -640 427 -640 427 -640 427 -500 375 -500 375 -640 480 -640 480 -640 427 -640 480 -640 480 -640 508 -500 499 -640 431 -640 424 -375 500 -338 480 -640 427 -640 427 -640 479 -612 612 -440 640 -640 425 -500 291 -426 640 -640 480 -480 640 -426 640 -640 426 -640 427 -640 424 -281 446 -500 319 -640 427 -640 381 -640 427 -640 360 -520 347 -640 427 -640 425 -640 428 -640 427 -640 318 -332 500 -640 480 -640 428 -640 360 -640 479 -401 500 -640 480 -640 427 -640 480 -640 418 -640 453 -480 640 -360 640 -500 375 -640 426 -640 480 -640 480 -640 457 -480 640 -640 427 -283 500 -640 480 -640 514 -640 480 -640 427 -426 640 -500 375 -640 427 -500 375 -500 331 -497 640 -637 640 -640 428 -640 480 -640 479 -640 478 -640 480 -640 480 -500 333 -640 426 -640 427 -640 353 -640 360 -640 427 -640 427 -640 427 -640 478 -640 480 -640 424 -640 480 -480 640 -640 502 -640 480 -478 640 -478 640 -640 426 -424 640 -640 428 -425 352 -640 480 -640 418 -640 418 -640 480 -425 640 -640 428 -612 612 -640 380 -640 427 -640 480 -640 480 -375 500 -640 480 -640 425 -640 519 -500 375 -500 333 -640 480 -640 480 -640 480 -640 598 -500 332 -640 427 -640 484 -640 470 -640 383 -500 375 -640 428 -640 479 -640 480 -374 500 -612 612 -640 428 -425 640 -640 391 -640 480 -640 503 -640 480 -427 640 -640 445 -640 480 -640 362 -640 424 -500 335 -480 640 -426 640 -640 473 -517 640 -427 640 -640 401 -640 480 -640 480 -640 386 -500 500 -612 612 -640 427 -640 549 -640 640 -640 480 -640 480 -640 465 -640 361 -500 375 -500 334 -640 428 -640 480 -480 640 -640 426 -460 640 -418 640 -640 427 -612 612 -640 491 -427 640 -640 480 -640 427 -640 480 -500 375 -640 480 -640 480 -640 480 -640 427 -427 640 -612 612 -640 538 -480 640 -640 424 -640 359 -426 640 -640 360 -450 287 -640 531 -500 375 -640 425 -640 480 -640 427 -612 612 -640 480 -375 500 -500 332 -640 480 -640 424 -360 640 -500 300 -640 640 -480 640 -640 360 -640 480 -640 480 -539 640 -427 640 -640 480 -640 393 -427 640 -640 314 -640 427 -500 375 -640 480 -640 480 -640 480 -640 480 -640 480 -640 427 -500 400 -640 480 -640 454 -640 425 -500 377 -500 375 -640 403 -640 469 -640 344 -640 480 -640 415 -320 480 -500 375 -426 640 -640 480 -640 440 -640 428 -640 480 -451 640 -425 640 -640 480 -640 480 -480 640 -640 360 -480 640 -640 480 -480 640 -640 427 -640 480 -640 640 -640 427 -428 640 -640 588 -640 427 -640 355 -500 277 -640 427 -612 612 -640 480 -500 375 -640 455 -640 428 -640 415 -500 375 -640 426 -640 427 -500 357 -426 640 -400 500 -640 480 -500 375 -424 640 -640 480 -640 480 -640 360 -640 480 -640 427 -239 640 -640 480 -640 480 -640 428 -640 426 -640 480 -500 333 -640 427 -640 436 -478 640 -640 478 -640 427 -640 466 -640 408 -640 428 -640 310 -583 640 -640 480 -640 447 -640 480 -640 429 -640 427 -640 426 -640 427 -500 375 -500 375 -640 478 -480 640 -640 640 -500 332 -458 640 -640 427 -500 324 -640 427 -640 427 -640 426 -640 428 -640 427 -640 640 -640 480 -640 476 -640 480 -640 435 -640 419 -640 428 -357 500 -640 360 -640 427 -640 427 -500 333 -640 480 -640 480 -640 480 -426 640 -640 480 -640 380 -640 478 -640 390 -640 480 -612 612 -480 640 -640 426 -640 533 -640 426 -640 424 -429 640 -512 640 -640 480 -480 640 -640 427 -480 640 -427 640 -640 426 -640 480 -427 640 -640 480 -640 480 -480 640 -640 425 -640 427 -640 427 -640 429 -640 427 -480 640 -640 429 -640 480 -640 480 -640 480 -640 427 -640 480 -640 480 -640 427 -640 480 -640 480 -500 333 -640 480 -640 427 -517 640 -640 480 -500 375 -640 427 -640 626 -640 427 -500 375 -500 333 -640 480 -640 427 -500 375 -640 480 -640 480 -640 429 -500 375 -480 640 -640 480 -640 640 -640 480 -640 360 -640 427 -640 427 -640 403 -640 480 -426 640 -640 426 -640 480 -640 428 -640 640 -543 640 -500 500 -640 427 -421 640 -640 428 -612 612 -640 427 -640 427 -640 438 -500 334 -500 375 -640 427 -426 640 -640 640 -423 640 -612 612 -640 280 -640 480 -640 426 -640 463 -640 480 -500 333 -478 640 -640 480 -640 424 -480 640 -640 480 -500 375 -640 480 -640 427 -640 427 -640 426 -640 427 -640 480 -640 480 -426 640 -640 424 -640 428 -500 375 -460 640 -500 333 -640 426 -640 425 -640 640 -640 480 -640 480 -640 426 -500 333 -427 640 -640 480 -612 612 -640 480 -640 484 -480 640 -480 640 -500 332 -640 509 -436 500 -640 427 -640 480 -500 336 -480 640 -360 640 -480 640 -640 480 -640 480 -500 333 -640 427 -640 426 -640 452 -640 427 -424 640 -427 640 -640 480 -640 427 -335 500 -375 500 -313 500 -500 309 -640 480 -640 613 -367 640 -640 494 -640 480 -640 489 -612 612 -640 425 -640 404 -480 640 -480 640 -640 601 -375 500 -640 441 -379 640 -640 426 -640 427 -640 480 -480 640 -640 427 -640 426 -640 427 -640 480 -375 500 -500 333 -500 375 -640 480 -480 640 -640 480 -72 51 -640 427 -480 640 -640 480 -640 480 -640 424 -640 360 -640 433 -481 640 -640 480 -640 640 -640 431 -640 426 -640 426 -640 480 -640 427 -640 480 -640 480 -479 640 -640 480 -640 496 -640 428 -640 427 -640 480 -640 480 -425 640 -640 427 -640 427 -640 422 -640 480 -500 375 -640 426 -640 480 -640 427 -640 480 -640 480 -640 529 -640 480 -640 428 -640 443 -480 640 -640 636 -640 378 -640 480 -383 500 -640 472 -640 427 -456 640 -640 427 -640 426 -640 427 -640 389 -378 500 -640 459 -640 427 -500 375 -331 500 -640 416 -640 640 -500 375 -640 480 -480 640 -455 640 -640 480 -500 375 -640 359 -433 640 -640 480 -640 480 -480 640 -427 640 -640 348 -640 479 -640 640 -640 478 -640 480 -320 240 -427 640 -640 427 -640 427 -640 426 -640 433 -640 480 -640 480 -360 480 -640 434 -480 640 -427 640 -640 465 -640 359 -480 640 -640 480 -640 480 -640 480 -640 480 -640 480 -640 389 -375 500 -640 451 -640 468 -640 474 -640 428 -600 450 -640 480 -612 612 -640 359 -500 333 -608 640 -424 640 -333 500 -640 481 -480 640 -428 500 -640 427 -640 458 -640 480 -640 426 -485 640 -500 375 -640 427 -640 427 -640 480 -640 480 -427 640 -640 480 -640 426 -640 424 -640 480 -640 480 -414 640 -500 500 -480 640 -457 640 -427 640 -500 498 -640 427 -387 500 -480 640 -640 428 -640 480 -480 640 -640 480 -640 482 -480 640 -640 427 -640 480 -640 426 -428 640 -500 332 -640 480 -576 494 -640 480 -640 480 -640 427 -640 426 -640 474 -640 482 -640 480 -427 640 -300 480 -640 360 -640 427 -612 612 -640 441 -640 480 -640 480 -640 478 -640 426 -640 480 -640 399 -403 640 -640 640 -500 375 -640 480 -640 427 -640 480 -640 427 -640 427 -640 394 -640 360 -640 428 -500 328 -612 612 -640 425 -277 500 -480 640 -640 508 -640 524 -427 640 -612 612 -640 427 -640 419 -372 500 -640 478 -640 427 -425 640 -640 480 -500 375 -480 640 -640 480 -480 640 -640 480 -640 426 -480 640 -640 427 -427 640 -500 375 -640 450 -640 480 -500 375 -612 612 -500 375 -480 640 -480 640 -480 640 -640 480 -480 640 -640 271 -480 640 -500 333 -640 480 -481 640 -427 640 -640 360 -640 427 -640 236 -640 480 -640 431 -480 640 -375 500 -640 426 -640 424 -640 480 -640 480 -441 640 -640 427 -427 640 -640 480 -500 375 -640 427 -480 640 -640 360 -640 480 -427 640 -640 427 -640 480 -640 427 -500 333 -480 640 -375 500 -433 500 -640 480 -640 480 -500 370 -640 360 -640 389 -436 640 -640 480 -640 480 -640 426 -427 640 -640 640 -576 384 -640 480 -500 415 -500 500 -640 480 -500 402 -640 480 -640 427 -333 500 -640 426 -500 375 -640 425 -440 500 -640 427 -640 480 -427 640 -640 426 -640 480 -333 500 -640 474 -640 480 -478 640 -480 640 -640 478 -640 427 -630 640 -500 375 -640 480 -640 458 -640 425 -640 480 -500 336 -332 500 -640 436 -640 480 -480 640 -640 512 -434 500 -640 426 -640 480 -478 640 -640 479 -640 483 -640 437 -640 436 -640 427 -640 425 -640 483 -480 640 -500 375 -640 428 -500 334 -359 473 -640 427 -640 288 -640 480 -640 480 -640 480 -480 640 -640 480 -500 375 -640 480 -640 480 -600 450 -500 335 -480 640 -640 480 -500 400 -640 480 -480 640 -500 333 -612 612 -640 480 -500 359 -375 500 -640 480 -640 413 -640 480 -640 480 -424 640 -640 494 -640 427 -640 480 -640 423 -640 426 -640 480 -640 480 -500 375 -480 640 -640 427 -640 480 -640 480 -640 427 -640 383 -425 640 -480 640 -640 427 -640 470 -640 427 -423 640 -480 640 -640 424 -500 336 -333 500 -640 480 -640 424 -640 427 -640 428 -500 375 -478 640 -640 512 -640 506 -640 480 -375 500 -640 396 -640 427 -640 428 -480 640 -333 500 -640 427 -500 333 -483 640 -640 480 -500 332 -640 426 -369 500 -640 396 -640 480 -640 427 -424 640 -640 424 -640 480 -427 640 -640 480 -458 640 -640 480 -480 640 -640 378 -640 601 -640 480 -640 480 -640 427 -640 480 -640 480 -320 240 -640 506 -640 426 -640 484 -427 640 -375 500 -640 426 -500 375 -640 480 -640 443 -640 428 -427 640 -504 337 -640 296 -375 500 -500 375 -480 640 -640 480 -296 442 -432 345 -375 500 -640 427 -478 640 -640 478 -640 494 -500 333 -640 480 -500 400 -427 640 -406 640 -425 640 -640 424 -640 427 -640 427 -640 458 -640 480 -612 612 -640 480 -500 375 -640 427 -640 480 -549 640 -500 281 -640 640 -500 333 -312 400 -500 375 -640 522 -500 375 -640 478 -640 427 -640 626 -640 480 -620 486 -640 422 -640 480 -506 640 -640 425 -640 480 -640 427 -640 425 -640 360 -640 512 -500 375 -640 480 -640 428 -640 370 -612 612 -640 480 -375 500 -640 605 -500 334 -640 480 -640 480 -640 481 -426 640 -500 375 -624 415 -640 400 -427 640 -481 500 -640 361 -425 640 -640 429 -640 360 -640 499 -640 480 -427 640 -640 424 -480 640 -640 427 -640 440 -500 375 -640 480 -640 480 -480 640 -640 521 -640 427 -471 500 -427 640 -640 479 -640 480 -500 375 -640 428 -640 480 -640 428 -500 333 -480 640 -640 480 -640 480 -640 480 -640 480 -640 480 -640 426 -500 334 -640 427 -427 640 -640 480 -640 480 -515 640 -480 640 -640 480 -572 640 -640 480 -640 480 -640 425 -640 480 -640 480 -640 360 -500 332 -640 360 -480 640 -480 640 -640 427 -640 480 -640 426 -640 480 -427 640 -427 640 -640 479 -640 640 -500 375 -640 457 -640 479 -640 376 -427 640 -640 426 -640 524 -392 640 -640 425 -640 429 -640 480 -640 426 -640 480 -640 512 -640 427 -500 375 -640 480 -640 480 -480 640 -480 640 -640 427 -640 480 -640 480 -426 640 -640 427 -640 494 -640 480 -375 500 -640 300 -640 480 -640 452 -640 480 -640 578 -640 427 -640 442 -640 480 -640 424 -480 640 -494 500 -233 350 -640 423 -640 640 -640 360 -427 640 -480 640 -640 427 -428 640 -640 427 -640 427 -640 480 -640 480 -500 444 -480 640 -640 480 -640 518 -427 640 -500 333 -640 480 -640 427 -480 640 -640 427 -640 480 -640 425 -640 427 -640 402 -640 427 -640 480 -640 425 -640 630 -429 640 -640 480 -640 640 -640 480 -480 640 -500 333 -640 346 -489 640 -640 427 -640 426 -640 144 -640 424 -640 480 -640 417 -640 480 -640 640 -640 426 -426 640 -640 480 -640 414 -300 357 -640 480 -640 427 -383 640 -480 640 -480 640 -375 500 -640 427 -500 375 -640 427 -429 640 -512 640 -640 473 -427 640 -640 426 -640 427 -640 241 -640 428 -640 478 -640 425 -456 640 -500 375 -640 480 -640 273 -500 375 -640 426 -500 375 -425 640 -500 375 -640 427 -612 612 -640 480 -422 640 -640 427 -427 640 -480 640 -500 375 -529 640 -640 501 -640 480 -640 424 -640 427 -640 530 -375 500 -640 427 -500 333 -640 428 -640 360 -640 480 -612 612 -500 500 -640 427 -640 480 -640 424 -480 640 -425 640 -640 480 -375 500 -500 375 -640 424 -600 464 -500 333 -500 500 -640 466 -640 427 -640 480 -640 348 -609 640 -640 480 -640 408 -640 480 -427 640 -640 480 -640 480 -640 416 -500 375 -640 569 -326 220 -419 640 -640 480 -375 500 -375 500 -640 427 -640 461 -480 640 -640 481 -427 640 -640 427 -640 480 -640 480 -640 427 -640 480 -480 640 -640 478 -640 427 -640 480 -375 500 -640 427 -500 375 -493 640 -500 375 -427 640 -640 480 -431 640 -640 480 -640 427 -640 428 -428 640 -640 360 -415 640 -640 480 -332 500 -640 427 -640 428 -640 444 -640 480 -428 640 -500 359 -640 427 -640 480 -640 480 -425 640 -375 500 -160 120 -500 481 -506 640 -640 427 -640 480 -640 448 -640 480 -612 612 -640 480 -640 427 -640 480 -640 428 -640 434 -640 480 -500 375 -640 480 -491 640 -640 425 -640 480 -640 474 -640 427 -640 283 -640 360 -640 427 -640 359 -640 360 -427 640 -640 480 -640 480 -480 640 -640 428 -640 426 -427 640 -640 427 -640 427 -640 463 -480 640 -640 433 -640 587 -640 425 -640 640 -640 427 -640 424 -640 427 -640 426 -640 480 -640 427 -500 339 -640 427 -640 427 -640 480 -480 640 -640 480 -640 480 -480 640 -640 480 -640 427 -640 426 -640 427 -640 427 -640 360 -640 480 -640 480 -480 640 -640 480 -375 500 -640 426 -640 439 -480 640 -500 375 -427 640 -640 427 -640 427 -512 640 -640 425 -640 494 -424 640 -480 640 -640 427 -640 480 -352 288 -640 360 -640 428 -427 640 -375 500 -640 427 -640 361 -297 500 -640 360 -480 640 -640 480 -612 612 -640 473 -640 519 -640 480 -640 425 -427 640 -640 480 -500 333 -480 640 -640 427 -640 484 -640 480 -640 483 -427 640 -427 640 -640 480 -640 480 -640 556 -500 331 -640 426 -480 640 -640 427 -480 640 -640 429 -500 375 -500 375 -640 425 -426 640 -640 480 -480 640 -484 640 -640 253 -640 431 -640 428 -640 427 -427 640 -398 640 -640 429 -640 360 -612 612 -480 640 -640 480 -640 640 -375 500 -640 472 -640 458 -640 640 -640 427 -640 428 -640 621 -500 334 -640 424 -640 480 -640 480 -640 426 -640 427 -427 640 -640 483 -640 428 -640 424 -516 640 -538 480 -427 640 -640 480 -640 480 -640 640 -406 640 -240 320 -500 375 -640 360 -612 612 -476 640 -640 427 -640 530 -640 426 -500 375 -640 396 -640 480 -480 640 -640 494 -640 508 -640 480 -640 640 -640 426 -432 640 -443 640 -640 427 -640 432 -640 480 -640 427 -427 640 -500 375 -612 612 -640 426 -640 480 -640 361 -331 500 -640 425 -640 480 -640 427 -480 640 -640 480 -640 427 -640 425 -640 428 -640 360 -500 374 -480 640 -427 640 -426 640 -640 427 -640 427 -640 463 -500 333 -640 426 -500 337 -373 640 -640 491 -427 640 -612 612 -640 423 -640 480 -640 480 -640 573 -640 464 -640 427 -640 480 -640 480 -350 375 -640 623 -612 612 -640 480 -640 479 -640 360 -315 315 -640 481 -640 427 -640 480 -480 640 -640 426 -640 425 -640 428 -640 427 -640 480 -640 478 -640 427 -375 500 -640 398 -640 427 -640 426 -427 640 -640 425 -640 362 -640 480 -500 375 -396 500 -500 375 -640 425 -376 500 -640 480 -426 640 -500 333 -383 640 -640 425 -640 425 -426 640 -640 480 -640 360 -640 489 -640 480 -612 612 -480 640 -640 479 -500 334 -640 480 -332 500 -332 500 -480 640 -375 500 -640 480 -640 480 -640 428 -500 166 -448 500 -640 480 -640 382 -640 360 -640 480 -452 640 -480 640 -640 480 -640 427 -640 427 -640 404 -640 480 -480 640 -640 480 -488 640 -640 480 -640 426 -640 427 -640 480 -434 640 -500 333 -480 640 -500 375 -640 480 -640 480 -640 426 -640 425 -334 500 -640 429 -640 361 -640 427 -320 640 -640 480 -480 640 -640 512 -640 472 -500 375 -640 480 -640 640 -640 425 -640 640 -427 640 -640 560 -494 640 -480 640 -640 427 -500 375 -427 640 -513 640 -640 427 -300 400 -427 640 -453 640 -428 640 -335 500 -640 480 -640 426 -640 480 -480 640 -478 640 -612 612 -640 480 -640 480 -640 481 -640 480 -640 427 -375 500 -640 631 -640 405 -480 640 -500 375 -640 480 -427 640 -640 480 -500 333 -640 425 -480 640 -640 427 -570 570 -640 480 -640 480 -640 480 -640 427 -612 612 -640 402 -398 600 -640 427 -448 312 -640 427 -640 427 -640 427 -640 427 -640 478 -640 481 -640 538 -500 333 -509 640 -640 480 -640 480 -640 640 -480 640 -640 427 -640 480 -640 480 -640 427 -375 500 -640 480 -640 425 -612 612 -636 640 -480 640 -640 427 -428 640 -428 640 -640 480 -640 426 -640 480 -640 480 -426 640 -492 500 -640 498 -640 480 -640 425 -640 425 -640 425 -640 427 -640 432 -500 333 -353 640 -500 375 -500 375 -480 640 -640 360 -438 640 -640 480 -640 426 -576 576 -638 640 -640 466 -361 500 -640 427 -640 456 -640 390 -640 585 -375 500 -640 480 -640 480 -640 401 -640 480 -500 401 -640 480 -640 480 -424 640 -640 480 -480 640 -640 414 -483 640 -480 640 -500 333 -640 480 -640 393 -427 640 -480 640 -640 414 -480 640 -500 332 -640 640 -640 395 -640 222 -640 427 -640 427 -427 640 -640 480 -640 427 -640 480 -640 429 -500 375 -500 333 -480 640 -500 470 -640 363 -335 500 -340 455 -639 640 -640 480 -458 640 -316 500 -640 480 -500 375 -640 480 -640 512 -640 480 -640 480 -480 640 -427 640 -389 500 -640 480 -375 500 -480 640 -640 480 -640 426 -640 359 -639 640 -640 480 -500 375 -612 612 -375 500 -640 480 -640 378 -640 428 -640 480 -640 478 -640 461 -480 640 -424 640 -640 480 -640 480 -500 333 -640 320 -612 612 -500 333 -640 480 -420 640 -500 375 -640 480 -640 480 -640 480 -640 425 -640 428 -640 427 -640 451 -640 424 -640 516 -640 500 -640 480 -620 413 -640 426 -640 480 -480 640 -333 500 -498 640 -500 334 -640 480 -640 480 -640 480 -640 480 -500 359 -480 640 -640 427 -425 640 -640 483 -640 428 -640 480 -480 640 -640 427 -640 426 -640 425 -640 427 -640 480 -640 427 -640 450 -640 480 -473 640 -640 400 -640 485 -480 640 -640 427 -640 426 -640 402 -640 480 -482 640 -480 640 -480 640 -427 640 -500 375 -480 640 -640 426 -640 640 -608 379 -640 480 -640 427 -640 480 -640 480 -640 480 -640 480 -640 480 -500 374 -427 640 -640 425 -640 427 -640 427 -500 333 -500 302 -427 640 -480 640 -640 458 -640 480 -480 640 -480 640 -427 640 -640 480 -640 480 -640 421 -640 427 -640 480 -640 480 -640 427 -427 640 -640 480 -427 640 -640 480 -332 500 -640 425 -640 428 -640 427 -640 448 -640 427 -427 640 -640 428 -640 480 -640 510 -640 426 -500 375 -640 502 -427 640 -640 439 -427 640 -640 480 -480 640 -640 427 -480 640 -640 480 -640 513 -640 426 -640 427 -640 425 -640 426 -640 427 -480 640 -640 425 -640 427 -640 486 -424 640 -640 480 -500 380 -640 427 -427 640 -640 171 -428 640 -374 500 -640 427 -426 640 -500 375 -640 427 -640 480 -640 427 -500 375 -640 640 -500 469 -640 480 -480 640 -480 640 -640 383 -640 480 -604 640 -640 477 -640 480 -640 480 -640 480 -500 364 -430 640 -640 424 -640 480 -640 426 -640 428 -640 425 -612 612 -640 480 -640 426 -588 640 -640 426 -500 375 -640 480 -640 427 -640 427 -640 480 -427 640 -200 150 -640 480 -640 429 -640 429 -471 500 -426 640 -350 467 -640 425 -428 640 -428 640 -500 375 -426 640 -640 480 -480 640 -640 426 -428 640 -640 429 -640 480 -500 375 -640 424 -640 457 -427 640 -480 640 -640 424 -612 612 -427 640 -640 480 -640 480 -640 424 -640 480 -360 640 -427 640 -480 640 -640 640 -640 427 -640 480 -640 427 -640 424 -640 479 -640 470 -640 390 -427 640 -610 407 -426 640 -640 359 -375 500 -640 426 -640 478 -638 640 -640 427 -640 480 -640 429 -640 339 -640 415 -640 480 -640 478 -480 640 -453 640 -429 640 -427 640 -640 427 -640 528 -640 498 -640 480 -640 360 -640 480 -480 640 -640 480 -640 474 -640 480 -640 427 -640 479 -640 480 -500 375 -640 480 -640 480 -640 426 -640 480 -480 640 -500 375 -640 406 -640 480 -640 428 -640 640 -640 480 -480 640 -640 480 -631 600 -640 480 -425 640 -426 640 -427 640 -640 480 -640 480 -480 640 -640 480 -640 427 -640 457 -500 333 -640 427 -640 480 -640 480 -640 416 -640 427 -426 640 -640 427 -640 409 -469 500 -480 640 -640 427 -640 427 -640 428 -640 480 -640 427 -500 375 -500 375 -640 480 -640 575 -640 512 -640 480 -428 640 -640 480 -640 480 -427 640 -640 426 -427 640 -640 480 -640 403 -640 480 -640 458 -500 333 -500 356 -640 302 -375 500 -640 242 -640 480 -640 426 -640 427 -640 415 -640 513 -640 427 -500 402 -640 480 -427 640 -640 424 -480 640 -375 500 -640 427 -500 281 -640 445 -640 425 -357 520 -160 120 -640 480 -640 504 -466 640 -640 428 -640 480 -622 622 -640 427 -640 480 -640 426 -640 480 -640 451 -640 480 -612 612 -640 480 -640 427 -640 427 -501 359 -612 612 -640 437 -640 480 -640 426 -640 425 -640 427 -640 480 -334 500 -500 335 -640 425 -640 480 -500 333 -640 428 -640 427 -640 480 -640 444 -480 640 -640 426 -640 480 -640 425 -512 384 -640 640 -526 640 -640 427 -640 438 -424 640 -640 424 -383 640 -640 331 -640 480 -640 428 -640 462 -640 476 -427 640 -640 480 -640 360 -500 349 -640 480 -640 480 -640 427 -172 227 -640 427 -500 500 -640 426 -640 480 -640 478 -640 485 -445 640 -483 640 -375 500 -640 480 -640 427 -640 480 -640 349 -640 480 -640 426 -500 334 -612 612 -640 427 -427 640 -640 480 -640 427 -480 640 -500 334 -480 640 -427 640 -640 361 -640 480 -640 426 -427 640 -640 480 -640 427 -640 426 -640 360 -640 480 -640 480 -379 640 -640 481 -640 427 -640 480 -640 480 -640 334 -640 416 -640 640 -640 640 -480 640 -427 640 -640 427 -640 427 -426 640 -640 359 -640 426 -640 427 -640 376 -500 332 -640 427 -640 424 -640 427 -640 480 -640 427 -640 480 -480 640 -500 375 -425 640 -480 640 -427 640 -640 441 -640 427 -640 427 -640 331 -640 411 -640 427 -500 375 -640 480 -640 426 -640 639 -640 480 -640 427 -640 461 -480 640 -640 480 -640 480 -454 640 -427 640 -640 427 -640 413 -480 640 -612 612 -500 375 -640 480 -640 337 -640 480 -640 480 -480 640 -640 544 -640 425 -426 640 -480 640 -640 415 -235 314 -640 481 -640 408 -426 640 -640 424 -640 427 -500 493 -640 427 -640 383 -500 346 -640 370 -640 480 -500 331 -640 359 -640 480 -502 640 -480 640 -640 336 -640 480 -640 480 -478 640 -480 640 -640 480 -640 383 -640 480 -640 480 -425 640 -480 640 -640 427 -640 426 -640 480 -640 480 -640 426 -612 612 -640 426 -640 426 -333 500 -640 427 -500 375 -640 494 -640 426 -333 500 -640 443 -640 483 -426 640 -640 480 -640 480 -640 480 -640 480 -640 427 -640 325 -500 375 -640 427 -500 375 -500 375 -640 428 -640 396 -640 460 -500 335 -640 480 -640 482 -640 480 -426 640 -640 416 -640 480 -640 480 -500 375 -480 640 -426 640 -640 480 -640 512 -478 640 -640 428 -480 640 -640 480 -480 640 -640 361 -480 640 -640 360 -457 640 -640 429 -640 480 -480 640 -614 640 -640 447 -640 480 -480 640 -480 640 -640 429 -640 480 -640 480 -376 500 -189 500 -500 333 -640 425 -426 640 -640 407 -640 426 -640 427 -426 640 -640 427 -500 331 -640 426 -428 640 -500 332 -640 480 -640 425 -640 425 -640 480 -427 640 -640 425 -640 512 -640 628 -500 332 -640 427 -640 480 -536 640 -640 427 -640 427 -640 426 -640 640 -640 360 -612 612 -640 480 -640 640 -640 426 -640 427 -480 640 -640 426 -640 427 -640 480 -640 438 -640 590 -640 480 -640 480 -331 500 -640 427 -640 640 -640 427 -500 375 -500 375 -640 480 -480 640 -640 480 -550 640 -500 500 -640 480 -640 427 -359 640 -640 480 -375 500 -640 427 -500 336 -640 512 -640 418 -640 427 -500 281 -640 360 -375 500 -640 428 -427 640 -419 640 -640 360 -640 480 -640 427 -640 426 -640 426 -640 480 -640 640 -640 426 -640 480 -640 480 -640 480 -640 530 -480 640 -367 640 -640 480 -640 236 -500 375 -480 640 -640 427 -640 427 -640 414 -640 289 -500 376 -640 480 -640 480 -640 428 -640 427 -640 480 -640 428 -500 334 -640 360 -427 640 -640 480 -500 333 -640 480 -375 500 -375 500 -640 480 -640 360 -500 375 -640 386 -640 480 -640 480 -640 480 -640 512 -640 480 -426 640 -600 453 -640 427 -640 480 -640 480 -500 375 -478 640 -640 480 -640 480 -612 612 -500 500 -640 429 -500 482 -640 480 -480 640 -500 333 -335 500 -640 356 -640 480 -640 508 -640 360 -640 427 -640 427 -512 640 -640 427 -480 640 -429 640 -427 640 -640 427 -425 640 -640 480 -640 426 -640 640 -478 640 -640 428 -428 640 -640 480 -640 427 -640 480 -612 612 -640 480 -640 480 -500 375 -427 640 -480 640 -427 640 -640 424 -500 283 -640 433 -640 329 -640 288 -612 612 -640 489 -640 427 -425 640 -640 278 -500 377 -480 640 -640 480 -640 578 -640 479 -640 425 -640 626 -640 455 -640 427 -640 448 -640 443 -640 640 -621 640 -480 640 -640 428 -375 500 -482 640 -427 640 -480 640 -500 375 -612 612 -640 427 -480 640 -640 427 -480 640 -640 427 -640 480 -640 501 -473 640 -375 500 -480 640 -480 640 -640 427 -428 640 -640 480 -500 309 -640 424 -640 426 -640 425 -480 640 -640 446 -480 640 -640 427 -640 480 -640 480 -427 640 -480 640 -445 500 -640 480 -640 329 -375 500 -640 480 -500 333 -640 427 -500 375 -640 480 -640 480 -427 640 -400 500 -640 480 -640 480 -427 640 -612 612 -640 480 -427 640 -640 480 -400 300 -640 480 -640 480 -640 426 -426 640 -640 496 -500 333 -640 428 -640 426 -383 640 -500 478 -640 480 -640 480 -586 640 -480 640 -640 427 -480 640 -427 640 -640 360 -375 500 -640 480 -640 426 -640 480 -320 240 -640 427 -640 428 -640 427 -640 510 -333 500 -612 612 -640 359 -640 424 -427 640 -640 427 -500 375 -427 640 -640 480 -640 480 -340 500 -640 413 -640 425 -500 375 -478 640 -640 443 -640 480 -500 188 -640 427 -640 361 -640 419 -640 427 -427 640 -640 480 -500 375 -480 640 -640 480 -427 640 -640 478 -640 480 -612 612 -500 375 -640 427 -640 426 -640 427 -513 640 -291 449 -640 480 -640 480 -640 527 -640 426 -640 426 -500 333 -427 640 -640 427 -640 640 -640 480 -640 640 -640 427 -640 400 -427 640 -640 428 -640 480 -480 640 -640 427 -640 426 -640 418 -640 480 -361 640 -640 427 -640 429 -640 424 -480 640 -640 426 -480 640 -630 450 -640 569 -640 480 -427 640 -640 427 -480 640 -612 612 -640 425 -640 426 -500 375 -500 333 -359 640 -444 640 -500 375 -640 480 -640 512 -640 480 -640 382 -332 500 -640 429 -640 480 -640 480 -640 480 -640 480 -640 480 -375 500 -640 586 -640 427 -332 500 -358 500 -500 374 -640 411 -375 500 -640 428 -640 427 -640 427 -480 640 -640 480 -427 640 -427 640 -500 333 -640 480 -640 426 -360 640 -640 427 -640 296 -480 640 -640 450 -425 640 -333 500 -427 640 -427 640 -640 426 -640 428 -480 640 -546 366 -480 640 -640 428 -640 425 -640 480 -640 401 -480 382 -640 480 -640 480 -500 375 -640 480 -612 612 -640 427 -500 500 -640 426 -480 640 -480 640 -640 488 -480 640 -640 389 -612 612 -640 427 -640 425 -375 500 -427 640 -640 430 -640 480 -334 500 -640 480 -640 479 -640 427 -640 427 -640 480 -640 480 -640 412 -640 418 -427 640 -640 478 -640 425 -640 324 -500 335 -640 480 -640 428 -640 480 -500 333 -480 640 -640 453 -640 364 -426 640 -640 480 -640 427 -640 480 -429 640 -500 334 -640 480 -640 466 -480 640 -480 640 -383 640 -640 425 -640 480 -640 429 -612 612 -640 454 -640 487 -480 640 -640 427 -640 480 -375 500 -478 640 -480 640 -640 480 -640 480 -640 480 -640 480 -480 640 -640 471 -454 640 -640 427 -640 427 -640 640 -640 524 -640 480 -640 480 -640 480 -640 513 -640 427 -640 417 -284 640 -500 375 -640 383 -640 427 -640 480 -640 480 -612 612 -640 427 -478 640 -640 480 -640 633 -640 469 -640 480 -640 427 -640 426 -640 480 -426 640 -640 480 -375 500 -640 288 -640 458 -640 508 -480 640 -640 428 -427 640 -640 480 -640 480 -640 480 -480 640 -640 480 -424 640 -640 428 -640 426 -640 360 -640 426 -500 375 -384 640 -640 427 -480 640 -640 478 -640 427 -500 353 -500 334 -640 480 -640 480 -508 640 -427 640 -640 427 -500 333 -640 480 -586 640 -640 481 -500 375 -640 451 -640 480 -640 640 -640 509 -425 640 -640 211 -640 480 -640 480 -375 500 -500 333 -640 476 -640 405 -500 375 -640 480 -600 450 -640 426 -640 424 -500 333 -640 480 -640 640 -640 480 -640 483 -640 427 -640 480 -640 238 -640 360 -640 425 -500 330 -640 480 -640 400 -454 500 -640 480 -480 640 -640 539 -640 457 -441 600 -500 333 -500 375 -640 458 -640 480 -640 426 -640 498 -640 480 -612 612 -508 640 -640 428 -480 640 -480 640 -640 433 -426 640 -640 425 -640 459 -438 640 -640 427 -480 640 -640 426 -640 425 -640 426 -613 640 -640 480 -640 427 -640 426 -640 427 -640 427 -640 425 -640 427 -500 375 -480 640 -470 352 -640 480 -480 640 -480 640 -640 480 -640 428 -640 480 -640 425 -640 478 -480 640 -640 391 -640 426 -640 426 -618 640 -640 427 -640 512 -640 427 -480 640 -640 480 -427 640 -640 480 -640 480 -640 427 -640 470 -500 382 -640 424 -456 640 -640 480 -640 480 -640 427 -640 426 -480 640 -640 427 -640 480 -500 375 -640 480 -640 427 -640 427 -640 480 -426 640 -640 480 -384 640 -612 612 -640 340 -424 640 -500 430 -640 286 -480 640 -427 640 -500 334 -640 480 -480 640 -640 494 -640 480 -640 480 -640 424 -375 500 -370 500 -640 480 -640 427 -462 640 -484 640 -640 427 -640 480 -424 640 -640 480 -550 413 -480 640 -480 640 -640 499 -424 640 -640 400 -640 449 -640 640 -375 500 -640 427 -640 427 -640 427 -640 443 -500 375 -640 426 -640 427 -640 446 -483 640 -448 640 -640 529 -500 333 -612 612 -640 427 -640 426 -640 429 -500 332 -640 515 -480 640 -640 427 -640 418 -640 423 -640 480 -640 427 -640 428 -640 427 -640 428 -640 401 -640 427 -480 640 -480 640 -640 482 -480 640 -640 480 -640 427 -427 640 -640 550 -640 427 -426 640 -640 425 -640 426 -640 480 -640 253 -640 426 -640 427 -480 640 -445 640 -640 404 -640 491 -480 640 -640 424 -640 425 -640 437 -426 640 -612 612 -494 640 -500 375 -640 425 -640 480 -426 640 -612 612 -640 480 -640 480 -640 453 -546 366 -640 426 -640 480 -640 427 -640 359 -640 480 -640 480 -640 427 -500 500 -640 426 -640 624 -500 375 -428 640 -640 427 -640 418 -640 540 -640 480 -500 333 -640 480 -640 427 -500 334 -640 426 -640 480 -500 332 -640 426 -640 426 -640 432 -640 411 -640 480 -640 459 -640 521 -640 427 -640 427 -427 640 -353 640 -500 333 -640 427 -612 612 -640 505 -640 480 -640 549 -478 640 -640 480 -640 427 -640 427 -640 480 -640 428 -640 427 -479 640 -640 427 -640 427 -300 255 -500 375 -640 427 -367 500 -640 430 -393 640 -640 480 -640 458 -640 480 -640 363 -640 423 -640 428 -640 288 -640 427 -399 500 -640 479 -640 543 -612 612 -512 640 -640 429 -480 640 -360 239 -640 428 -500 375 -500 375 -640 425 -513 640 -640 409 -640 480 -480 640 -640 104 -640 428 -640 427 -427 640 -640 466 -640 427 -640 430 -640 480 -640 426 -640 427 -640 427 -426 640 -640 427 -640 480 -640 480 -500 375 -640 480 -455 640 -640 480 -640 480 -640 427 -640 480 -500 333 -500 375 -612 612 -640 480 -333 500 -500 333 -500 375 -640 427 -428 640 -640 376 -640 480 -640 480 -640 480 -500 377 -640 506 -479 640 -500 333 -600 296 -500 375 -640 428 -576 640 -640 480 -640 425 -640 425 -480 640 -425 640 -640 480 -500 375 -640 360 -500 375 -640 583 -500 375 -500 375 -480 640 -480 640 -480 640 -640 480 -640 428 -640 480 -640 403 -640 480 -640 480 -640 451 -640 480 -640 480 -640 429 -640 451 -640 480 -640 427 -500 375 -427 640 -640 425 -500 333 -640 480 -427 640 -640 427 -640 425 -640 480 -640 456 -408 391 -640 480 -477 640 -640 427 -512 640 -480 640 -640 429 -640 425 -640 480 -640 480 -640 407 -640 545 -640 480 -640 480 -640 480 -500 375 -333 500 -640 428 -500 333 -640 378 -427 640 -640 428 -375 500 -640 486 -640 640 -640 480 -640 424 -480 640 -640 427 -426 640 -640 480 -640 362 -426 640 -640 426 -640 480 -612 612 -640 426 -640 480 -640 426 -640 480 -425 640 -640 426 -421 640 -427 640 -480 640 -640 480 -427 640 -334 500 -480 640 -640 427 -640 429 -500 333 -640 480 -500 334 -326 500 -640 480 -640 480 -478 640 -480 640 -500 375 -640 512 -640 423 -640 427 -640 640 -640 480 -640 425 -640 480 -640 480 -640 480 -640 427 -640 252 -640 427 -640 480 -428 640 -500 374 -640 480 -500 375 -375 500 -640 480 -500 375 -640 360 -640 426 -640 640 -480 640 -427 640 -480 640 -640 479 -640 431 -640 373 -428 640 -640 433 -640 480 -640 480 -640 480 -640 427 -640 480 -484 640 -640 429 -480 640 -375 500 -427 640 -640 480 -640 480 -500 375 -288 352 -371 640 -640 480 -425 640 -640 625 -640 359 -640 478 -640 480 -640 480 -640 480 -640 405 -640 427 -640 478 -640 480 -640 480 -640 480 -500 331 -640 425 -640 479 -640 427 -427 640 -640 427 -640 480 -640 564 -500 375 -640 480 -480 384 -576 413 -427 640 -640 428 -612 612 -425 640 -500 333 -640 426 -427 640 -640 480 -640 480 -480 640 -640 426 -500 407 -640 394 -600 450 -500 375 -500 375 -500 332 -469 640 -500 375 -640 427 -640 427 -640 427 -640 480 -640 425 -640 603 -640 480 -640 463 -612 612 -640 427 -426 640 -427 640 -640 480 -640 426 -640 480 -640 480 -640 480 -640 427 -640 427 -600 450 -640 480 -640 425 -500 375 -640 318 -436 640 -640 640 -640 427 -480 640 -640 461 -427 640 -427 640 -375 500 -426 640 -640 480 -640 480 -480 640 -480 640 -640 480 -308 462 -480 640 -640 427 -640 480 -640 427 -640 404 -360 500 -640 427 -640 426 -640 490 -480 640 -400 300 -640 444 -578 640 -640 435 -640 640 -427 640 -356 500 -640 426 -640 431 -500 375 -640 480 -640 480 -640 480 -640 506 -375 500 -640 480 -416 640 -461 640 -640 426 -640 476 -480 640 -640 425 -640 427 -500 375 -640 427 -640 427 -640 429 -640 425 -640 480 -640 480 -640 502 -640 427 -480 640 -640 480 -480 361 -640 480 -640 423 -640 560 -640 429 -500 146 -640 478 -365 640 -640 480 -427 640 -640 480 -640 482 -500 375 -640 480 -640 427 -427 640 -480 640 -640 404 -640 427 -500 375 -420 640 -325 500 -640 428 -640 263 -360 270 -640 427 -428 640 -640 427 -640 480 -426 640 -640 469 -640 428 -640 640 -500 375 -640 425 -427 640 -640 386 -640 445 -640 480 -640 480 -479 500 -640 480 -640 427 -640 640 -640 480 -640 478 -640 424 -480 640 -346 500 -500 280 -640 426 -480 640 -640 480 -640 427 -640 480 -640 480 -500 377 -399 640 -500 375 -640 480 -640 429 -478 640 -500 375 -480 640 -640 484 -480 640 -640 480 -640 400 -640 516 -612 612 -640 485 -426 640 -480 640 -640 416 -410 640 -640 428 -598 393 -640 407 -425 640 -640 428 -439 640 -640 411 -640 368 -640 429 -427 640 -640 433 -640 480 -500 375 -500 474 -640 426 -640 426 -640 424 -640 601 -640 427 -640 320 -640 426 -640 427 -500 333 -640 426 -640 350 -640 480 -640 428 -640 427 -640 480 -640 483 -375 500 -426 640 -640 480 -640 480 -640 398 -640 427 -640 481 -640 480 -480 640 -640 494 -640 371 -640 481 -640 480 -640 480 -640 326 -640 427 -324 182 -595 608 -640 427 -640 480 -500 334 -640 512 -480 640 -640 480 -612 612 -640 426 -640 428 -612 612 -640 480 -500 375 -500 443 -640 388 -640 480 -640 427 -640 480 -640 496 -640 457 -480 566 -480 640 -640 442 -480 640 -640 463 -640 426 -640 391 -486 640 -427 640 -640 427 -640 409 -640 427 -640 426 -640 480 -500 327 -640 427 -640 427 -528 640 -640 480 -640 423 -640 427 -640 480 -640 480 -640 536 -640 427 -640 480 -640 427 -480 640 -640 425 -640 481 -640 480 -640 427 -640 640 -640 427 -640 426 -480 640 -640 480 -640 450 -500 375 -640 427 -640 480 -640 479 -431 640 -480 640 -640 480 -640 540 -427 640 -400 205 -640 480 -640 432 -640 480 -640 427 -640 409 -640 427 -427 640 -500 375 -640 424 -640 480 -500 375 -428 640 -640 480 -640 427 -640 383 -640 419 -640 480 -640 426 -500 375 -640 427 -640 426 -640 467 -640 361 -640 480 -480 640 -640 427 -640 480 -640 480 -480 640 -500 375 -500 500 -640 480 -640 400 -425 640 -640 427 -640 425 -640 360 -640 427 -640 490 -640 480 -432 640 -500 375 -640 479 -640 414 -424 640 -640 500 -612 612 -640 480 -640 623 -327 640 -375 500 -640 429 -640 426 -640 221 -480 640 -640 480 -640 428 -640 480 -500 281 -640 360 -640 426 -640 439 -640 427 -640 360 -480 640 -400 300 -640 596 -640 427 -640 428 -360 640 -640 457 -640 438 -500 427 -640 640 -500 375 -375 500 -640 426 -426 640 -640 480 -640 388 -640 426 -640 480 -640 480 -640 427 -640 428 -640 423 -640 436 -500 372 -640 480 -640 480 -640 366 -500 333 -640 480 -640 428 -500 484 -425 640 -640 480 -427 640 -500 332 -480 640 -640 427 -441 640 -523 640 -480 640 -500 381 -427 640 -640 405 -640 360 -500 375 -427 640 -640 427 -640 427 -408 500 -640 479 -333 500 -640 480 -640 427 -640 444 -640 480 -640 640 -640 425 -375 500 -500 375 -640 431 -640 427 -640 430 -426 640 -432 288 -640 359 -640 429 -480 640 -640 427 -512 640 -500 375 -427 640 -640 425 -612 612 -500 471 -612 612 -427 640 -480 640 -640 427 -640 480 -640 427 -640 480 -640 480 -640 480 -500 375 -640 282 -358 500 -375 500 -640 427 -640 427 -640 480 -640 480 -640 427 -427 640 -640 422 -640 428 -640 427 -500 375 -640 426 -640 400 -640 427 -433 640 -375 500 -375 500 -640 427 -640 480 -427 640 -519 640 -640 361 -640 480 -640 427 -426 640 -461 640 -640 480 -640 427 -640 425 -425 640 -500 375 -640 400 -640 480 -640 400 -640 480 -500 375 -640 479 -480 640 -640 480 -640 427 -640 414 -334 500 -640 480 -640 480 -640 427 -479 319 -640 480 -640 480 -427 640 -640 427 -640 639 -640 527 -459 640 -640 437 -640 394 -640 419 -640 427 -640 427 -640 427 -640 477 -640 427 -640 479 -500 333 -640 426 -640 333 -640 425 -500 400 -640 480 -640 480 -640 480 -640 424 -640 380 -640 465 -372 480 -640 427 -640 480 -480 640 -640 427 -640 480 -640 427 -640 360 -640 361 -640 479 -500 199 -426 640 -640 427 -640 426 -500 375 -640 480 -640 427 -500 347 -640 480 -640 480 -640 480 -480 360 -427 640 -480 640 -640 427 -640 427 -640 482 -640 480 -640 426 -480 640 -640 427 -640 480 -640 480 -612 612 -640 446 -640 425 -640 480 -640 480 -640 426 -426 640 -640 427 -640 427 -426 640 -640 427 -458 640 -640 480 -500 428 -640 384 -640 425 -500 375 -480 640 -600 450 -512 640 -640 427 -640 512 -365 640 -640 429 -640 557 -640 499 -500 375 -500 375 -640 451 -333 500 -640 480 -640 468 -427 640 -484 640 -640 480 -640 480 -640 408 -640 427 -640 424 -640 480 -500 339 -427 640 -640 480 -640 426 -640 480 -640 396 -640 480 -640 427 -640 427 -640 481 -427 640 -612 612 -640 480 -640 427 -640 480 -640 427 -640 425 -427 640 -612 612 -640 427 -500 375 -480 640 -640 428 -640 480 -640 480 -640 426 -480 640 -640 427 -500 375 -330 500 -640 480 -640 480 -612 612 -640 427 -640 425 -164 500 -480 640 -640 428 -500 375 -640 480 -640 480 -640 425 -640 480 -457 640 -640 631 -640 480 -640 462 -640 480 -640 480 -612 612 -459 640 -640 480 -640 480 -640 551 -640 480 -640 386 -640 618 -640 428 -640 480 -640 428 -540 540 -640 480 -640 493 -640 482 -640 360 -500 333 -500 500 -640 480 -478 640 -640 427 -640 541 -500 375 -640 480 -640 480 -640 427 -640 480 -640 480 -640 510 -416 500 -640 480 -640 640 -640 427 -478 640 -640 480 -640 480 -640 429 -640 480 -522 640 -640 477 -500 377 -375 500 -640 427 -640 433 -427 640 -640 303 -500 285 -480 640 -640 480 -640 480 -640 427 -180 500 -500 375 -640 480 -640 268 -480 640 -640 427 -640 426 -640 426 -640 480 -640 426 -480 640 -640 480 -640 480 -640 480 -480 640 -640 424 -478 640 -480 640 -640 428 -640 426 -640 425 -500 313 -640 398 -640 480 -480 640 -500 333 -640 457 -429 640 -640 427 -640 480 -426 640 -480 640 -640 480 -640 480 -640 424 -486 640 -640 428 -640 512 -640 427 -640 366 -427 640 -640 427 -640 444 -500 375 -421 640 -427 640 -640 426 -428 640 -480 640 -426 640 -500 375 -375 500 -640 480 -640 479 -640 425 -640 480 -375 500 -500 375 -640 480 -640 425 -640 428 -640 427 -494 640 -640 480 -640 480 -640 426 -640 451 -640 457 -426 640 -640 480 -612 612 -640 478 -640 480 -640 427 -286 640 -640 457 -640 432 -480 640 -500 333 -640 358 -640 428 -640 427 -640 427 -640 474 -640 426 -640 426 -480 640 -640 427 -640 432 -640 426 -480 640 -640 480 -640 426 -640 494 -480 640 -640 429 -640 427 -375 500 -640 419 -342 640 -640 421 -640 426 -612 612 -640 480 -375 500 -500 500 -640 360 -640 469 -640 480 -425 640 -640 427 -612 612 -640 392 -640 427 -640 480 -640 480 -640 428 -640 480 -640 426 -640 464 -640 427 -500 400 -640 369 -480 640 -640 427 -640 480 -640 480 -640 438 -640 428 -640 426 -600 600 -640 427 -640 512 -640 480 -333 500 -640 454 -640 480 -480 640 -640 423 -640 427 -640 431 -640 480 -500 375 -640 463 -640 426 -612 612 -640 360 -640 424 -640 480 -640 480 -640 426 -571 640 -377 640 -480 640 -640 480 -640 498 -480 640 -640 427 -640 426 -500 376 -640 478 -640 480 -500 375 -640 480 -640 426 -500 334 -480 640 -640 480 -640 480 -640 427 -640 425 -640 480 -480 640 -426 640 -640 563 -640 480 -480 640 -500 335 -640 480 -427 640 -480 640 -640 480 -427 640 -640 426 -640 426 -640 424 -480 640 -427 640 -500 333 -640 480 -500 375 -640 480 -640 480 -500 373 -640 417 -480 640 -640 453 -640 429 -640 360 -640 427 -640 427 -640 480 -480 640 -640 427 -640 480 -480 640 -640 404 -640 480 -640 427 -375 500 -640 427 -640 425 -640 426 -640 427 -640 329 -640 426 -333 500 -640 427 -640 426 -640 454 -640 480 -427 640 -640 374 -640 369 -640 427 -640 433 -640 427 -612 612 -640 480 -640 424 -640 480 -426 640 -640 480 -640 480 -640 434 -428 640 -480 640 -640 523 -500 400 -640 640 -640 427 -640 361 -640 432 -336 500 -500 375 -640 427 -640 480 -640 424 -640 425 -427 640 -640 480 -480 360 -482 640 -640 480 -480 640 -640 426 -640 427 -500 375 -640 480 -640 427 -612 612 -640 480 -640 425 -640 480 -363 500 -640 480 -640 480 -640 480 -640 480 -500 375 -640 490 -640 480 -640 426 -640 424 -640 427 -640 427 -640 480 -640 480 -375 500 -640 413 -640 462 -480 640 -427 640 -427 640 -572 640 -640 480 -640 289 -640 427 -640 427 -640 478 -427 640 -427 640 -640 427 -375 500 -375 500 -500 332 -640 402 -640 429 -500 337 -640 480 -640 480 -640 480 -640 480 -640 425 -640 480 -640 427 -640 457 -640 427 -500 400 -640 480 -640 480 -427 640 -640 581 -640 480 -640 480 -640 427 -640 427 -500 375 -640 480 -612 612 -640 428 -463 640 -640 436 -640 480 -500 375 -500 375 -512 640 -640 462 -640 636 -640 480 -640 474 -480 640 -640 428 -640 480 -480 640 -333 500 -640 512 -612 612 -500 333 -640 427 -640 494 -640 426 -640 427 -640 480 -640 429 -640 480 -500 334 -500 488 -378 500 -430 628 -640 429 -640 639 -640 455 -640 480 -640 427 -480 640 -640 426 -640 480 -567 378 -612 612 -640 480 -427 640 -640 427 -640 427 -640 480 -640 427 -640 480 -367 500 -640 480 -612 612 -360 240 -500 375 -589 640 -640 480 -640 425 -640 427 -425 640 -640 360 -640 427 -640 491 -640 424 -640 480 -427 640 -640 480 -640 480 -640 480 -333 500 -640 480 -426 640 -480 640 -640 427 -640 409 -640 369 -640 471 -500 407 -425 640 -375 500 -338 450 -640 429 -640 423 -640 480 -640 480 -640 480 -200 150 -640 428 -427 640 -640 480 -500 377 -640 480 -640 433 -640 478 -640 426 -640 238 -478 640 -640 480 -640 480 -640 427 -640 421 -640 480 -640 427 -640 379 -640 427 -640 426 -640 480 -500 375 -428 640 -640 480 -640 427 -640 384 -480 640 -537 640 -612 612 -427 640 -640 437 -640 480 -640 480 -480 640 -640 427 -500 379 -640 480 -640 426 -640 478 -640 427 -640 480 -435 640 -428 640 -375 500 -640 427 -500 375 -457 640 -640 427 -640 426 -640 480 -640 428 -640 426 -480 640 -640 427 -640 427 -640 480 -640 427 -640 480 -640 640 -640 480 -640 480 -427 640 -640 480 -640 427 -640 480 -640 480 -640 429 -500 375 -640 480 -436 640 -640 401 -640 306 -640 480 -640 426 -640 461 -640 429 -640 480 -500 375 -427 640 -640 384 -640 480 -500 375 -640 425 -640 427 -640 640 -640 480 -640 640 -480 640 -640 640 -480 640 -640 443 -516 640 -640 426 -480 640 -427 640 -640 480 -640 298 -425 640 -640 480 -640 480 -424 640 -640 480 -640 427 -480 640 -640 569 -375 500 -344 640 -383 640 -640 415 -640 480 -640 480 -640 480 -500 333 -640 426 -426 640 -480 640 -375 500 -640 480 -640 256 -640 427 -640 480 -500 375 -640 480 -640 480 -640 427 -640 480 -640 427 -500 375 -640 361 -640 360 -480 640 -640 424 -500 375 -640 480 -640 480 -640 424 -640 427 -640 483 -640 510 -640 480 -640 410 -640 427 -480 640 -640 350 -427 640 -640 427 -640 360 -640 480 -640 484 -640 480 -640 427 -333 500 -640 427 -640 508 -640 428 -640 480 -426 640 -640 427 -640 640 -640 480 -640 480 -640 480 -640 478 -426 640 -640 428 -640 427 -640 480 -640 640 -640 428 -463 640 -640 425 -640 480 -640 272 -640 429 -640 425 -427 640 -640 481 -640 480 -640 427 -612 612 -640 427 -448 640 -640 427 -631 640 -640 480 -640 427 -640 405 -640 524 -500 334 -640 425 -640 445 -640 427 -479 640 -480 640 -498 640 -640 514 -640 478 -640 480 -640 480 -640 480 -640 640 -640 428 -640 480 -640 480 -640 444 -640 428 -640 424 -640 428 -640 427 -640 426 -640 435 -640 426 -640 488 -480 640 -427 640 -640 458 -640 427 -490 500 -640 480 -360 640 -500 375 -512 640 -640 480 -333 500 -640 427 -640 427 -640 480 -500 335 -640 424 -640 427 -640 427 -478 640 -500 375 -640 425 -640 425 -640 459 -640 428 -640 480 -500 325 -612 612 -640 480 -375 500 -640 480 -640 480 -640 427 -640 480 -334 500 -640 480 -640 426 -628 640 -640 640 -480 640 -427 640 -640 431 -640 433 -640 480 -505 640 -480 640 -500 375 -500 333 -640 480 -640 480 -640 480 -500 412 -640 418 -640 427 -500 349 -640 427 -375 500 -640 480 -640 480 -427 640 -640 348 -359 640 -640 427 -640 429 -500 400 -500 333 -427 640 -500 281 -612 612 -612 612 -640 480 -500 333 -427 640 -640 425 -427 640 -500 374 -425 640 -640 459 -640 424 -640 424 -640 439 -500 325 -427 640 -588 640 -428 640 -500 279 -640 480 -426 640 -500 375 -640 429 -480 360 -500 333 -612 612 -640 350 -333 500 -612 612 -640 478 -640 512 -499 640 -612 612 -640 480 -612 612 -480 640 -640 480 -640 426 -640 480 -640 426 -490 640 -480 640 -426 640 -640 426 -640 427 -500 344 -376 500 -640 436 -640 480 -640 480 -427 640 -640 640 -612 612 -640 479 -640 361 -480 640 -640 478 -361 500 -640 607 -640 480 -640 427 -640 480 -500 468 -640 480 -480 640 -640 478 -640 427 -612 612 -640 480 -640 479 -640 480 -640 458 -640 425 -427 640 -640 479 -612 612 -640 427 -500 375 -640 480 -640 426 -640 480 -500 333 -640 480 -640 360 -640 640 -480 640 -427 640 -480 640 -640 425 -640 359 -640 480 -640 426 -425 640 -480 640 -640 427 -500 375 -640 480 -500 375 -338 500 -640 449 -640 427 -500 375 -427 640 -640 427 -640 480 -426 640 -640 419 -640 640 -640 428 -640 480 -640 424 -640 480 -612 612 -512 640 -640 480 -500 334 -375 500 -640 392 -640 434 -480 640 -640 426 -640 441 -640 427 -640 426 -640 509 -640 320 -640 427 -332 500 -612 612 -612 612 -640 427 -640 465 -376 500 -640 427 -480 640 -640 505 -640 427 -331 500 -426 640 -640 593 -640 426 -576 640 -640 480 -640 401 -640 428 -640 480 -500 327 -480 640 -612 612 -480 640 -640 461 -425 640 -480 640 -640 452 -480 640 -640 427 -640 480 -640 426 -375 500 -375 500 -640 427 -500 330 -640 480 -640 480 -640 480 -640 425 -375 500 -640 480 -500 333 -640 359 -640 427 -480 640 -500 390 -640 479 -500 376 -628 640 -426 640 -640 480 -640 480 -640 453 -640 480 -500 317 -640 480 -500 282 -640 426 -640 516 -640 425 -640 426 -640 461 -640 480 -640 424 -640 480 -640 427 -640 480 -480 640 -640 480 -640 434 -640 427 -640 427 -640 494 -500 281 -480 640 -640 399 -640 480 -400 640 -640 427 -426 640 -612 612 -640 480 -640 480 -640 427 -640 446 -480 640 -640 427 -640 640 -210 139 -612 612 -640 427 -640 425 -640 427 -640 480 -500 333 -640 480 -640 426 -426 640 -500 333 -480 640 -640 480 -640 425 -640 426 -640 480 -640 480 -640 424 -640 360 -640 478 -640 480 -640 426 -640 480 -640 426 -426 640 -640 480 -427 640 -480 640 -612 612 -640 512 -500 375 -640 480 -640 426 -640 480 -427 640 -427 640 -422 562 -500 334 -640 413 -525 640 -640 480 -640 427 -640 480 -640 480 -640 480 -375 500 -640 427 -640 480 -640 480 -640 640 -640 364 -640 426 -473 640 -480 640 -640 480 -480 640 -640 425 -640 480 -640 428 -640 480 -375 500 -640 427 -640 427 -640 527 -640 480 -314 470 -500 399 -640 496 -480 640 -480 640 -500 500 -640 480 -426 640 -640 427 -480 640 -640 480 -640 426 -640 425 -284 423 -640 640 -640 427 -640 414 -480 640 -612 612 -640 468 -333 500 -500 392 -640 480 -480 640 -640 480 -640 480 -640 480 -640 463 -640 413 -427 640 -640 427 -640 480 -640 640 -480 640 -500 333 -640 428 -640 480 -640 480 -640 480 -640 480 -640 431 -500 302 -640 428 -480 640 -500 332 -640 494 -500 333 -480 640 -640 426 -427 640 -640 463 -640 425 -500 392 -640 480 -500 332 -640 480 -640 426 -375 500 -640 480 -640 480 -640 480 -427 640 -640 480 -500 375 -500 375 -500 379 -640 576 -640 370 -640 481 -640 408 -640 458 -629 640 -640 480 -500 375 -640 434 -425 640 -429 640 -480 640 -640 427 -640 512 -640 480 -640 480 -640 428 -500 265 -375 500 -427 640 -640 481 -500 500 -500 334 -640 480 -640 577 -424 640 -640 427 -500 332 -640 427 -639 640 -428 640 -505 640 -569 640 -640 426 -640 427 -480 640 -500 375 -640 426 -640 485 -480 640 -500 400 -640 480 -640 480 -640 427 -640 426 -471 640 -427 640 -640 530 -333 500 -640 426 -500 351 -640 425 -640 427 -500 375 -640 427 -640 427 -427 640 -640 426 -640 426 -426 640 -640 480 -465 640 -333 500 -640 480 -640 480 -500 375 -640 480 -394 640 -640 427 -640 360 -480 640 -500 333 -640 640 -640 427 -626 640 -640 425 -640 480 -640 480 -640 385 -427 640 -640 426 -640 516 -640 480 -640 443 -640 427 -640 480 -640 425 -640 428 -640 480 -484 640 -375 500 -427 640 -640 427 -640 400 -574 640 -640 478 -487 200 -640 426 -640 512 -640 480 -640 299 -640 389 -640 320 -640 427 -480 640 -640 426 -612 612 -480 640 -640 400 -640 412 -425 640 -640 424 -640 476 -640 480 -478 640 -640 478 -640 425 -640 426 -612 612 -640 424 -640 480 -640 411 -640 512 -426 640 -640 480 -640 427 -640 428 -500 377 -427 640 -640 480 -640 449 -612 612 -640 514 -640 539 -500 281 -640 427 -640 480 -640 425 -640 480 -640 480 -640 480 -640 480 -500 375 -640 426 -640 480 -640 426 -640 480 -500 333 -640 400 -640 433 -640 480 -640 478 -640 425 -640 429 -640 480 -640 329 -640 480 -640 428 -640 427 -640 427 -500 375 -480 640 -640 480 -640 640 -480 640 -520 640 -640 514 -640 480 -640 427 -640 480 -500 375 -640 383 -500 375 -640 495 -465 640 -640 427 -480 640 -640 480 -612 612 -333 500 -480 640 -500 375 -640 480 -400 300 -500 375 -640 427 -640 427 -640 359 -612 612 -640 373 -612 612 -424 640 -640 425 -640 444 -640 480 -640 478 -640 427 -500 332 -640 480 -640 427 -640 427 -640 639 -640 480 -480 640 -640 427 -500 375 -471 640 -640 427 -500 375 -640 426 -640 426 -500 371 -640 480 -500 375 -640 428 -358 243 -640 498 -640 424 -640 480 -500 375 -640 480 -640 424 -500 341 -640 480 -640 480 -640 480 -640 432 -500 375 -640 426 -640 458 -640 480 -640 427 -640 480 -640 414 -640 480 -416 640 -640 458 -480 640 -612 612 -427 640 -640 403 -640 480 -640 512 -640 481 -640 427 -640 480 -375 500 -640 427 -640 480 -640 427 -612 612 -500 375 -500 375 -469 640 -640 480 -640 500 -640 428 -640 486 -426 640 -402 600 -640 449 -640 427 -500 375 -427 640 -640 427 -640 500 -640 427 -640 480 -500 437 -504 438 -640 479 -480 640 -500 375 -640 480 -640 640 -480 640 -640 400 -640 480 -640 426 -640 480 -640 427 -500 337 -640 427 -640 426 -635 640 -640 337 -640 416 -640 480 -555 640 -640 480 -640 480 -640 400 -640 439 -640 428 -480 640 -640 427 -640 640 -419 500 -640 426 -500 332 -500 375 -640 426 -640 426 -640 427 -640 512 -500 375 -640 427 -462 640 -427 640 -500 334 -409 640 -500 375 -640 406 -640 425 -500 375 -640 480 -612 612 -640 426 -428 640 -640 480 -640 426 -640 480 -640 427 -640 427 -424 640 -640 426 -640 480 -533 640 -640 529 -640 480 -480 640 -640 428 -640 480 -500 333 -640 426 -500 395 -640 528 -426 640 -480 640 -500 400 -640 427 -500 357 -640 480 -640 427 -612 612 -640 478 -480 640 -640 424 -640 427 -640 480 -480 640 -640 480 -424 640 -640 427 -640 152 -640 427 -480 640 -640 445 -640 427 -640 427 -640 524 -640 480 -478 640 -640 480 -640 480 -375 500 -640 427 -640 427 -640 481 -640 427 -525 350 -640 427 -640 497 -640 480 -640 426 -640 457 -428 640 -640 427 -640 427 -640 426 -640 360 -640 426 -640 480 -640 358 -640 479 -480 640 -344 640 -476 640 -640 383 -574 361 -640 480 -388 640 -640 355 -427 640 -640 480 -640 480 -568 320 -640 480 -640 426 -640 489 -481 640 -640 427 -640 497 -640 388 -640 424 -640 480 -333 500 -640 480 -640 378 -480 640 -640 427 -612 612 -375 500 -640 367 -500 386 -640 473 -640 427 -640 480 -640 344 -427 640 -480 640 -640 480 -500 500 -500 375 -640 425 -640 480 -640 428 -640 427 -468 640 -640 361 -480 640 -640 480 -640 480 -640 425 -500 374 -480 640 -640 427 -640 481 -500 500 -640 426 -480 360 -640 480 -640 514 -612 612 -427 640 -640 426 -640 480 -427 640 -640 480 -640 480 -640 480 -640 428 -480 640 -500 333 -640 426 -640 426 -640 480 -640 480 -640 480 -640 440 -640 426 -640 480 -640 480 -640 480 -640 409 -640 425 -640 427 -640 422 -640 331 -426 640 -640 427 -640 480 -640 479 -640 427 -640 480 -640 512 -640 512 -640 427 -640 478 -480 640 -640 480 -479 640 -640 424 -640 432 -428 640 -640 427 -426 640 -640 426 -480 640 -640 480 -640 480 -640 480 -640 491 -640 480 -640 427 -500 481 -640 480 -480 640 -640 426 -640 385 -640 427 -427 640 -500 375 -480 640 -640 427 -480 640 -640 480 -640 480 -640 480 -640 427 -640 425 -640 480 -500 375 -431 640 -532 640 -640 428 -500 375 -640 620 -640 445 -424 640 -640 480 -640 428 -500 375 -640 425 -640 480 -640 427 -640 426 -640 427 -640 514 -640 480 -640 477 -640 426 -640 469 -640 427 -640 480 -640 427 -640 480 -640 480 -640 480 -640 423 -640 326 -500 333 -531 640 -612 612 -640 480 -640 427 -640 480 -640 426 -640 458 -480 640 -640 480 -480 640 -640 427 -640 498 -640 480 -640 366 -480 640 -640 429 -640 424 -640 481 -446 640 -427 640 -640 427 -640 396 -640 427 -640 480 -640 480 -640 426 -489 640 -343 500 -480 640 -400 267 -500 333 -427 640 -375 500 -640 428 -640 480 -427 640 -640 640 -335 500 -640 480 -640 480 -640 360 -640 567 -427 640 -500 469 -515 640 -425 640 -640 496 -640 480 -640 360 -640 480 -480 640 -640 457 -640 480 -500 333 -640 428 -500 362 -640 448 -640 457 -319 500 -427 640 -640 480 -640 427 -375 500 -640 360 -500 333 -426 640 -480 640 -640 480 -640 480 -640 478 -427 640 -500 334 -612 612 -640 427 -612 612 -424 640 -500 332 -640 480 -427 640 -424 640 -640 425 -640 427 -640 494 -500 335 -480 640 -640 480 -427 640 -512 640 -469 640 -640 427 -640 426 -480 640 -640 428 -640 426 -640 480 -367 500 -640 480 -404 640 -640 480 -640 480 -640 496 -640 480 -480 640 -640 480 -640 480 -640 541 -480 640 -640 512 -640 640 -480 640 -640 428 -500 333 -382 640 -333 500 -480 640 -640 426 -400 289 -640 480 -640 427 -480 640 -640 480 -640 423 -640 425 -640 427 -640 424 -640 480 -640 427 -640 569 -640 448 -500 375 -640 427 -640 425 -640 404 -500 331 -480 640 -640 480 -480 640 -640 480 -640 427 -630 640 -480 640 -500 384 -640 427 -640 485 -640 616 -640 480 -640 426 -427 640 -640 480 -640 639 -640 480 -640 480 -375 500 -640 427 -640 427 -375 500 -640 480 -640 427 -640 480 -640 510 -480 640 -480 640 -471 640 -640 480 -640 427 -612 612 -480 640 -640 502 -640 425 -480 640 -640 480 -640 480 -640 471 -480 640 -640 451 -500 640 -640 480 -640 421 -640 426 -640 496 -640 480 -500 335 -429 640 -500 363 -640 433 -640 426 -640 425 -480 640 -640 480 -426 640 -640 329 -640 480 -640 424 -640 429 -480 640 -640 428 -612 612 -640 385 -480 640 -640 424 -640 360 -640 426 -640 427 -640 480 -640 427 -546 640 -640 438 -500 298 -500 375 -500 400 -480 640 -640 427 -640 426 -640 408 -473 640 -427 640 -640 428 -640 480 -640 427 -640 425 -640 449 -480 640 -427 640 -612 612 -333 500 -500 295 -640 640 -640 480 -480 640 -500 333 -640 482 -335 500 -640 427 -640 480 -640 432 -425 640 -640 428 -640 427 -640 424 -640 429 -640 479 -480 640 -640 480 -640 480 -279 500 -640 430 -640 429 -640 400 -640 426 -640 552 -640 423 -640 427 -640 427 -640 480 -640 480 -640 426 -640 428 -640 480 -640 480 -600 450 -480 640 -427 640 -480 640 -427 640 -427 640 -640 480 -640 427 -640 480 -480 640 -567 377 -427 640 -480 640 -640 509 -640 428 -640 360 -640 480 -500 375 -640 425 -640 400 -640 640 -640 427 -640 359 -412 640 -449 640 -375 500 -640 427 -640 426 -640 427 -500 335 -640 427 -640 640 -640 480 -640 428 -480 640 -640 424 -640 426 -640 480 -480 640 -640 360 -500 375 -564 640 -640 426 -640 426 -640 443 -612 612 -360 640 -437 640 -640 428 -640 480 -640 480 -640 429 -640 512 -640 480 -640 427 -550 640 -427 640 -640 429 -479 640 -640 480 -640 426 -640 426 -640 427 -640 480 -612 612 -640 427 -500 335 -640 480 -640 427 -500 333 -480 640 -640 425 -640 480 -640 433 -346 500 -640 480 -612 612 -640 480 -640 480 -640 426 -640 512 -640 427 -640 441 -487 640 -640 480 -480 640 -640 480 -426 640 -612 612 -640 486 -375 500 -428 640 -640 640 -640 480 -640 427 -640 482 -640 501 -640 480 -640 427 -427 640 -640 428 -640 480 -640 360 -640 427 -427 640 -640 427 -640 480 -640 480 -640 457 -640 428 -640 428 -612 612 -640 425 -640 498 -640 427 -640 474 -428 640 -640 503 -640 427 -640 479 -379 640 -640 427 -612 612 -640 480 -480 640 -640 427 -640 427 -443 640 -612 612 -426 640 -640 640 -640 343 -512 640 -500 375 -480 640 -640 480 -640 457 -640 427 -640 480 -427 640 -640 354 -500 375 -404 265 -425 640 -640 480 -546 640 -427 640 -640 480 -640 400 -448 336 -375 500 -427 640 -640 422 -500 333 -640 480 -640 480 -640 427 -640 425 -396 640 -500 375 -640 426 -640 450 -640 427 -640 480 -640 480 -480 640 -640 425 -500 375 -640 511 -640 427 -639 640 -640 480 -640 427 -360 640 -640 425 -640 427 -640 480 -375 500 -640 426 -640 540 -640 340 -640 480 -375 500 -640 427 -640 480 -640 480 -480 640 -640 427 -480 640 -640 548 -640 578 -500 281 -500 333 -500 400 -640 354 -640 480 -640 640 -640 425 -480 640 -640 480 -640 387 -640 480 -640 498 -333 500 -375 500 -640 426 -411 640 -640 383 -480 640 -640 480 -640 360 -640 483 -640 426 -640 426 -612 612 -640 480 -480 640 -640 463 -640 480 -640 512 -640 480 -427 640 -640 480 -480 640 -500 375 -480 640 -640 427 -640 480 -500 375 -640 427 -640 427 -426 640 -400 300 -640 480 -333 500 -466 640 -640 427 -480 640 -640 433 -640 427 -500 375 -480 640 -640 480 -640 427 -640 489 -640 427 -500 375 -640 480 -640 480 -478 640 -500 375 -640 426 -480 640 -640 550 -640 480 -640 427 -640 426 -612 612 -640 480 -640 427 -480 640 -640 486 -640 450 -640 480 -332 500 -427 640 -640 428 -640 539 -640 427 -640 480 -640 459 -640 425 -640 480 -612 612 -640 480 -640 427 -428 640 -640 480 -640 464 -426 640 -640 480 -640 359 -333 467 -640 398 -640 427 -640 429 -500 334 -640 480 -443 640 -427 640 -640 369 -640 426 -640 423 -640 427 -640 479 -640 480 -427 640 -640 427 -640 472 -640 480 -450 640 -640 453 -640 425 -640 360 -500 375 -640 425 -428 640 -400 300 -640 480 -375 500 -640 424 -640 427 -640 428 -640 479 -640 427 -640 480 -500 375 -640 425 -640 480 -640 486 -640 480 -640 480 -640 505 -480 640 -640 480 -640 442 -640 480 -428 640 -640 428 -640 505 -500 500 -428 640 -640 423 -640 425 -640 480 -640 427 -640 425 -640 480 -640 480 -500 375 -500 375 -640 480 -338 500 -640 400 -640 434 -640 425 -500 333 -612 612 -640 426 -500 375 -500 375 -640 425 -640 424 -427 640 -500 286 -640 460 -500 375 -640 454 -640 480 -500 375 -640 480 -640 426 -640 374 -479 640 -640 480 -640 480 -640 512 -640 480 -640 427 -640 360 -640 427 -376 500 -640 427 -640 424 -483 640 -640 480 -500 400 -480 640 -640 478 -500 375 -429 640 -425 640 -427 640 -640 480 -640 479 -332 500 -503 640 -640 427 -640 427 -640 480 -500 333 -640 480 -427 640 -500 333 -480 640 -640 479 -407 640 -640 427 -500 375 -640 427 -375 500 -480 640 -456 640 -612 612 -500 341 -552 640 -500 375 -640 427 -640 513 -640 581 -480 640 -640 427 -640 481 -333 500 -640 480 -640 481 -427 640 -640 426 -350 263 -500 375 -640 480 -500 375 -640 424 -553 640 -640 427 -640 426 -427 640 -640 423 -640 427 -640 433 -426 640 -640 427 -428 640 -640 513 -640 480 -640 427 -424 640 -640 425 -640 426 -640 480 -640 426 -640 394 -640 426 -640 480 -640 427 -640 426 -426 640 -634 640 -640 517 -427 640 -640 466 -375 500 -500 354 -500 375 -427 640 -640 425 -240 320 -427 640 -640 429 -640 426 -640 428 -640 394 -640 498 -640 480 -640 480 -427 640 -640 480 -640 425 -640 427 -427 640 -640 480 -640 427 -640 428 -640 480 -375 500 -640 428 -640 480 -640 448 -612 612 -640 562 -338 640 -500 371 -500 333 -640 426 -640 480 -500 333 -640 480 -640 480 -640 480 -480 640 -640 429 -640 428 -640 413 -640 483 -427 640 -333 500 -500 337 -640 427 -640 427 -640 451 -640 480 -500 341 -640 428 -640 428 -640 480 -640 480 -640 480 -640 428 -375 500 -640 427 -375 500 -640 640 -640 480 -640 426 -640 480 -360 270 -480 640 -640 480 -640 480 -640 478 -640 480 -500 333 -480 640 -640 408 -640 480 -457 640 -427 640 -624 640 -500 333 -640 409 -640 480 -640 429 -478 640 -375 500 -375 500 -640 429 -640 640 -640 429 -640 424 -640 427 -640 480 -640 426 -640 451 -640 426 -640 427 -640 424 -640 480 -640 480 -469 640 -640 480 -640 480 -640 425 -432 640 -427 640 -434 500 -640 427 -640 427 -427 640 -480 640 -427 640 -500 375 -640 427 -426 640 -640 426 -640 427 -640 473 -427 640 -640 480 -427 640 -640 480 -480 640 -500 325 -640 384 -640 480 -640 427 -500 324 -427 640 -640 424 -640 480 -640 480 -480 640 -427 640 -426 640 -640 480 -500 375 -640 427 -428 640 -640 295 -640 478 -640 480 -427 640 -640 428 -482 640 -418 640 -640 480 -480 640 -480 640 -640 427 -640 480 -612 612 -639 640 -640 480 -375 500 -640 480 -640 427 -640 480 -524 640 -640 427 -425 640 -640 427 -427 640 -640 426 -640 427 -640 361 -640 480 -640 480 -640 424 -640 480 -640 480 -640 426 -640 480 -640 428 -500 377 -423 640 -480 640 -640 464 -640 426 -640 496 -500 375 -640 508 -640 426 -427 640 -500 326 -424 640 -640 480 -640 426 -640 383 -580 329 -334 500 -500 333 -640 424 -640 346 -640 472 -640 537 -640 640 -375 500 -427 640 -640 480 -640 424 -640 480 -427 640 -640 480 -480 640 -612 612 -500 375 -480 640 -640 427 -640 426 -640 480 -500 375 -375 500 -640 427 -640 360 -640 384 -640 480 -480 640 -640 614 -612 612 -500 375 -438 500 -640 480 -640 427 -640 480 -375 500 -640 271 -428 640 -640 521 -640 426 -640 480 -640 426 -640 480 -640 481 -612 612 -640 427 -640 426 -500 281 -429 640 -640 486 -375 500 -640 480 -640 480 -427 640 -640 480 -640 428 -375 500 -640 478 -612 612 -640 480 -640 480 -500 330 -375 500 -427 640 -640 428 -480 640 -640 428 -640 398 -480 640 -446 640 -640 480 -375 500 -640 481 -640 427 -640 398 -478 640 -476 640 -640 427 -640 480 -640 428 -640 427 -640 480 -640 479 -640 480 -427 640 -640 426 -500 375 -500 375 -640 428 -480 640 -640 425 -640 543 -412 640 -500 375 -640 404 -480 640 -500 375 -640 524 -640 426 -640 480 -500 375 -640 427 -480 640 -428 640 -500 333 -640 480 -612 612 -640 427 -427 640 -514 640 -640 434 -640 424 -640 359 -480 640 -640 480 -640 483 -500 375 -640 480 -640 425 -612 612 -640 480 -640 429 -480 640 -640 427 -640 512 -640 401 -612 612 -500 375 -640 512 -640 480 -500 375 -552 640 -640 480 -640 480 -640 519 -521 640 -640 480 -640 427 -500 375 -640 480 -640 426 -640 426 -640 427 -500 375 -427 640 -640 429 -640 546 -427 640 -500 335 -640 480 -640 480 -640 428 -640 481 -640 407 -427 640 -640 480 -500 353 -427 640 -640 426 -480 640 -640 480 -640 378 -640 480 -640 311 -640 359 -640 426 -329 500 -640 480 -640 480 -640 427 -640 425 -500 332 -600 600 -400 542 -640 425 -640 512 -640 480 -427 640 -640 427 -500 375 -640 480 -480 640 -427 640 -500 375 -640 631 -640 480 -640 361 -500 375 -640 427 -640 428 -640 424 -480 640 -640 428 -640 480 -640 480 -480 640 -640 427 -640 480 -500 375 -513 640 -478 640 -500 382 -640 425 -640 609 -474 640 -500 373 -640 427 -640 377 -425 640 -640 480 -475 640 -640 479 -640 427 -613 640 -480 640 -640 480 -480 640 -640 378 -640 360 -449 640 -360 640 -640 479 -640 480 -480 640 -640 440 -640 640 -640 360 -500 375 -640 427 -640 427 -640 480 -640 360 -612 612 -500 375 -480 640 -640 427 -640 427 -640 575 -640 480 -640 480 -480 640 -640 426 -640 480 -282 500 -640 480 -640 429 -640 315 -640 480 -640 479 -640 480 -500 500 -640 418 -640 425 -640 640 -640 428 -640 480 -640 427 -640 426 -640 427 -411 640 -480 640 -640 480 -500 375 -640 480 -640 528 -640 426 -500 358 -612 612 -640 478 -640 425 -640 522 -640 428 -640 426 -640 428 -640 484 -427 640 -640 426 -457 640 -320 213 -640 427 -480 640 -640 425 -640 480 -640 480 -640 459 -428 640 -612 612 -640 480 -640 480 -640 427 -640 427 -516 640 -640 383 -640 640 -640 425 -500 333 -480 640 -640 427 -427 640 -640 584 -375 500 -426 640 -640 504 -640 480 -640 414 -640 427 -640 502 -500 364 -640 480 -461 640 -640 440 -375 500 -640 480 -640 476 -512 640 -640 439 -640 359 -640 480 -640 425 -640 427 -640 640 -500 334 -375 500 -333 500 -500 332 -640 428 -640 426 -640 428 -427 640 -640 480 -640 427 -428 640 -612 612 -640 426 -640 480 -640 427 -640 391 -640 512 -640 427 -640 480 -500 333 -640 427 -463 640 -500 331 -640 480 -640 592 -640 462 -640 480 -640 428 -640 480 -640 361 -333 500 -480 640 -640 427 -480 640 -640 427 -640 480 -549 640 -399 640 -640 426 -640 333 -640 463 -298 500 -480 640 -640 426 -640 427 -640 413 -640 442 -640 428 -640 427 -426 640 -640 424 -640 522 -483 640 -640 428 -640 480 -480 640 -640 428 -640 480 -640 428 -427 640 -427 640 -640 491 -640 480 -640 428 -640 480 -480 640 -480 640 -640 428 -640 427 -500 375 -640 480 -500 375 -640 463 -640 386 -640 480 -500 375 -640 427 -640 480 -309 640 -640 480 -640 426 -419 640 -480 640 -612 612 -500 375 -640 480 -480 640 -500 375 -373 640 -640 480 -640 426 -128 160 -640 427 -500 375 -480 640 -500 400 -427 640 -640 400 -539 445 -640 427 -640 424 -428 640 -480 640 -640 425 -500 375 -479 640 -640 427 -640 427 -480 640 -640 478 -640 429 -640 374 -640 480 -500 500 -640 427 -640 440 -640 480 -612 612 -439 640 -640 457 -612 612 -640 481 -427 640 -640 480 -640 427 -640 480 -640 426 -477 640 -640 458 -640 426 -500 375 -640 428 -640 480 -375 500 -500 334 -640 480 -640 480 -640 489 -428 640 -640 480 -500 375 -640 427 -640 480 -640 426 -640 512 -640 480 -640 293 -401 640 -640 480 -359 500 -323 500 -427 640 -480 640 -640 424 -640 427 -500 375 -640 409 -480 640 -640 424 -640 480 -500 281 -640 427 -640 480 -640 426 -375 500 -640 480 -640 480 -612 612 -640 533 -416 350 -640 480 -640 427 -375 500 -640 427 -640 640 -640 480 -640 428 -640 412 -640 480 -640 480 -640 480 -640 427 -640 359 -612 612 -640 427 -491 500 -640 427 -427 640 -287 432 -426 640 -334 500 -320 240 -359 500 -500 375 -640 427 -640 339 -640 480 -432 288 -496 640 -500 335 -640 426 -427 640 -517 640 -640 529 -640 425 -640 383 -640 480 -390 640 -640 427 -333 500 -640 480 -640 462 -640 427 -640 480 -640 433 -480 640 -640 436 -425 640 -500 400 -640 479 -640 427 -640 428 -640 427 -640 480 -576 401 -640 480 -640 480 -640 426 -640 480 -375 500 -640 426 -478 640 -640 480 -640 426 -640 427 -640 480 -425 640 -640 480 -269 640 -480 640 -500 375 -640 480 -480 640 -640 421 -640 452 -426 640 -459 500 -640 427 -640 428 -640 427 -640 426 -640 480 -480 640 -640 427 -640 433 -640 480 -427 640 -640 472 -640 427 -640 480 -640 331 -480 640 -640 427 -640 416 -509 640 -500 375 -640 480 -640 480 -640 426 -640 428 -640 480 -640 425 -640 448 -640 480 -640 428 -480 640 -640 474 -640 428 -400 500 -640 480 -500 281 -480 640 -480 640 -640 443 -640 533 -640 427 -640 424 -480 640 -640 640 -500 375 -640 351 -640 428 -500 376 -640 427 -421 640 -640 480 -640 480 -640 360 -640 427 -640 427 -640 451 -640 428 -640 480 -640 369 -640 640 -640 480 -433 640 -640 433 -640 427 -640 424 -480 640 -427 640 -640 428 -640 427 -480 640 -640 480 -640 360 -640 480 -640 480 -500 375 -640 480 -640 480 -612 612 -640 426 -640 427 -640 480 -456 640 -640 427 -640 420 -480 640 -640 427 -640 457 -640 508 -640 457 -640 427 -640 427 -640 427 -640 429 -640 539 -640 488 -640 480 -427 640 -640 424 -640 543 -521 640 -640 480 -500 375 -640 364 -444 640 -640 427 -640 461 -480 640 -640 427 -479 640 -420 640 -640 505 -375 500 -640 450 -640 427 -640 333 -640 480 -640 427 -640 425 -640 426 -640 428 -640 427 -640 427 -471 640 -480 640 -640 640 -424 640 -500 334 -640 544 -640 386 -640 427 -427 640 -640 391 -640 480 -640 536 -425 640 -640 480 -377 500 -358 500 -480 640 -640 427 -640 480 -427 640 -500 303 -640 480 -640 426 -640 640 -640 398 -640 433 -640 428 -640 480 -450 350 -640 457 -451 640 -640 576 -640 427 -427 640 -640 523 -640 429 -428 640 -640 425 -480 640 -640 410 -479 640 -640 480 -640 427 -500 333 -459 640 -640 427 -640 360 -513 640 -427 640 -640 406 -640 603 -500 331 -640 427 -409 500 -640 427 -640 480 -640 427 -480 640 -478 640 -640 480 -612 612 -480 640 -640 427 -640 480 -500 332 -375 500 -600 600 -640 427 -480 640 -612 612 -500 331 -480 640 -640 480 -640 480 -640 427 -640 458 -640 429 -640 428 -640 427 -640 543 -640 480 -500 325 -500 318 -640 426 -640 480 -640 640 -480 640 -332 500 -640 427 -480 640 -640 427 -375 640 -640 480 -375 500 -427 640 -480 640 -640 480 -640 427 -427 640 -640 428 -640 424 -640 480 -640 468 -640 427 -640 480 -640 480 -640 463 -640 513 -640 427 -640 480 -640 425 -640 400 -640 427 -640 425 -640 480 -640 476 -640 480 -640 428 -640 428 -500 375 -500 334 -640 480 -640 480 -500 357 -426 640 -640 480 -640 480 -427 640 -427 640 -480 640 -480 640 -497 500 -480 640 -479 640 -640 428 -640 426 -640 640 -640 426 -640 427 -500 375 -640 452 -640 427 -500 347 -640 426 -612 612 -640 480 -421 640 -640 427 -640 432 -640 480 -640 427 -500 375 -612 612 -640 427 -364 500 -402 600 -640 439 -478 640 -640 478 -375 500 -640 480 -640 427 -640 480 -640 480 -640 427 -640 426 -640 480 -640 427 -640 427 -640 393 -480 640 -612 612 -332 500 -426 640 -640 427 -395 640 -640 480 -640 480 -480 640 -640 480 -640 426 -480 640 -640 214 -640 496 -640 426 -419 640 -500 333 -500 400 -640 478 -640 318 -500 500 -640 426 -612 612 -640 480 -640 428 -640 427 -640 360 -640 424 -640 456 -567 640 -640 480 -466 640 -500 345 -640 480 -427 640 -640 480 -500 333 -343 500 -640 480 -640 480 -640 480 -640 640 -478 640 -375 500 -640 480 -640 421 -640 426 -640 480 -640 480 -640 480 -640 320 -640 428 -640 480 -640 449 -640 360 -640 480 -640 426 -640 456 -640 427 -640 426 -640 480 -640 360 -500 375 -640 427 -360 640 -640 427 -640 426 -640 478 -640 398 -640 425 -640 430 -462 640 -619 640 -640 379 -640 425 -480 640 -640 428 -640 427 -426 640 -427 640 -333 500 -427 640 -640 394 -640 426 -640 480 -640 383 -640 267 -500 417 -604 403 -427 640 -478 640 -640 400 -640 480 -500 334 -640 533 -640 427 -640 480 -640 427 -640 480 -640 408 -640 426 -640 480 -640 425 -640 428 -640 427 -480 640 -640 495 -188 285 -640 429 -640 480 -427 640 -640 431 -612 612 -640 424 -640 427 -640 426 -500 333 -640 459 -341 500 -640 426 -500 375 -480 273 -640 480 -640 425 -425 640 -640 480 -640 426 -640 480 -425 640 -427 640 -640 427 -480 640 -640 480 -480 640 -480 640 -244 183 -480 640 -640 428 -500 375 -500 375 -640 427 -480 640 -640 384 -640 344 -640 523 -640 427 -427 640 -640 480 -500 356 -480 640 -332 500 -640 640 -612 612 -500 375 -640 426 -574 640 -479 640 -640 491 -427 640 -640 480 -500 333 -640 622 -640 427 -512 640 -640 480 -640 425 -480 640 -640 425 -640 466 -500 375 -640 427 -640 437 -640 480 -375 500 -425 640 -640 480 -640 594 -478 640 -375 500 -640 480 -640 425 -640 424 -427 640 -640 400 -640 480 -480 640 -500 452 -640 480 -427 640 -612 612 -427 640 -333 500 -640 427 -425 640 -640 480 -640 425 -640 427 -500 407 -640 429 -640 480 -500 375 -640 480 -640 427 -500 375 -381 640 -640 483 -427 640 -427 640 -640 419 -640 519 -640 427 -640 401 -612 612 -640 279 -640 480 -640 399 -500 375 -640 458 -640 481 -640 427 -349 614 -640 480 -481 640 -428 640 -640 480 -480 640 -480 640 -459 640 -640 427 -640 478 -640 427 -640 426 -640 425 -640 360 -640 480 -428 640 -480 640 -640 480 -640 426 -640 478 -640 427 -640 480 -640 453 -427 640 -640 640 -640 426 -428 640 -640 444 -640 480 -640 427 -640 480 -640 321 -640 360 -640 480 -640 359 -480 640 -640 480 -404 640 -640 429 -640 480 -500 375 -640 430 -640 480 -640 417 -640 480 -640 448 -469 640 -640 480 -425 640 -333 500 -640 481 -640 480 -640 427 -640 423 -428 640 -640 430 -640 464 -640 427 -640 480 -640 535 -424 640 -640 512 -640 480 -640 427 -500 375 -640 480 -500 375 -640 480 -640 449 -640 480 -500 375 -640 427 -640 427 -427 640 -640 480 -640 426 -640 436 -640 413 -465 640 -640 480 -640 426 -425 640 -640 428 -428 640 -640 359 -640 398 -640 480 -640 480 -640 497 -640 426 -640 328 -500 375 -482 640 -480 640 -339 500 -501 640 -640 427 -640 433 -640 428 -640 480 -500 335 -640 428 -640 344 -640 480 -500 375 -640 427 -640 426 -480 640 -640 425 -640 427 -640 427 -640 359 -640 480 -473 640 -481 640 -576 640 -640 640 -600 464 -640 424 -640 427 -640 426 -640 480 -481 640 -500 461 -640 278 -480 640 -500 345 -640 427 -640 480 -612 612 -640 345 -480 640 -427 640 -640 480 -640 480 -640 480 -640 427 -640 426 -640 383 -410 500 -500 375 -640 480 -640 640 -333 500 -640 480 -640 427 -640 480 -640 640 -640 425 -640 427 -480 640 -640 427 -500 374 -612 612 -333 500 -640 569 -640 427 -640 430 -640 428 -500 375 -640 480 -375 500 -640 427 -640 480 -480 640 -640 427 -640 480 -640 490 -278 500 -640 480 -542 640 -640 480 -640 480 -333 500 -640 427 -640 427 -640 470 -640 400 -640 419 -480 640 -640 426 -500 375 -640 480 -640 480 -427 640 -640 426 -640 480 -512 640 -640 480 -424 640 -640 341 -640 480 -640 360 -480 640 -640 480 -640 427 -375 500 -640 427 -426 640 -640 427 -480 640 -640 427 -500 357 -427 640 -640 426 -640 444 -480 640 -640 426 -640 478 -640 480 -640 365 -640 517 -480 640 -640 480 -640 426 -333 500 -640 427 -640 480 -463 640 -640 480 -640 427 -640 429 -640 378 -424 640 -640 480 -427 640 -640 453 -640 480 -426 640 -640 427 -640 428 -640 424 -640 480 -427 640 -640 480 -640 480 -500 375 -640 427 -640 480 -640 468 -442 640 -640 480 -480 640 -600 400 -640 427 -640 480 -640 480 -640 427 -640 427 -640 451 -640 426 -640 426 -640 449 -427 640 -640 511 -391 640 -640 496 -500 375 -640 480 -640 480 -640 427 -640 640 -500 381 -640 425 -640 427 -640 480 -640 480 -640 480 -480 640 -500 142 -640 480 -426 640 -457 640 -618 640 -640 480 -424 640 -640 348 -640 360 -640 480 -429 640 -640 480 -429 640 -480 640 -640 424 -640 428 -640 480 -512 640 -640 428 -640 480 -640 427 -478 640 -640 471 -640 429 -640 640 -640 427 -500 375 -640 359 -640 425 -640 480 -640 444 -640 425 -640 480 -640 398 -640 640 -640 426 -640 480 -640 427 -500 333 -640 425 -640 424 -500 375 -640 506 -500 333 -640 425 -480 640 -640 428 -480 640 -640 425 -640 427 -375 500 -640 620 -640 480 -640 446 -640 427 -640 456 -422 640 -461 640 -425 640 -640 480 -427 640 -640 214 -612 612 -640 360 -480 640 -500 333 -640 480 -640 470 -640 427 -640 427 -612 612 -640 480 -640 480 -640 480 -640 480 -640 480 -640 427 -640 480 -640 480 -640 425 -640 480 -612 612 -426 640 -640 480 -375 500 -497 640 -397 640 -640 480 -357 500 -640 480 -480 640 -640 427 -640 480 -640 433 -500 375 -640 480 -640 427 -640 482 -640 427 -640 427 -640 480 -500 333 -640 419 -640 558 -640 478 -640 426 -640 449 -640 480 -500 375 -333 500 -640 384 -500 332 -480 640 -640 425 -640 426 -640 398 -640 430 -640 369 -640 427 -432 640 -640 480 -640 360 -500 375 -640 426 -640 427 -500 291 -640 640 -640 426 -500 375 -640 426 -500 375 -640 424 -640 640 -640 480 -640 427 -640 480 -640 427 -456 640 -640 480 -480 640 -640 387 -640 491 -640 478 -640 426 -640 427 -640 508 -640 564 -428 640 -640 480 -640 480 -500 401 -425 640 -640 360 -640 427 -640 573 -480 640 -640 480 -640 427 -640 360 -480 640 -640 427 -500 375 -640 480 -640 480 -640 426 -640 480 -612 612 -640 480 -343 640 -640 427 -640 423 -640 358 -640 423 -546 640 -640 480 -640 428 -640 427 -640 373 -640 427 -425 640 -640 562 -612 612 -500 333 -432 640 -640 408 -640 426 -640 480 -500 333 -611 425 -427 640 -640 640 -500 332 -500 375 -640 425 -640 478 -640 427 -640 480 -640 480 -360 640 -640 303 -640 480 -640 427 -640 361 -447 400 -428 500 -640 427 -500 252 -640 480 -640 427 -640 640 -500 375 -640 440 -427 640 -452 640 -640 480 -640 480 -480 640 -640 614 -640 427 -500 375 -640 480 -640 480 -640 400 -640 480 -500 330 -640 480 -427 640 -640 600 -640 426 -640 479 -640 553 -500 375 -512 640 -640 427 -427 640 -500 400 -640 426 -500 333 -424 640 -393 500 -640 427 -640 400 -640 480 -640 480 -353 500 -640 425 -640 294 -500 334 -640 490 -640 424 -500 375 -512 640 -500 383 -375 500 -412 640 -640 424 -500 378 -640 480 -640 427 -500 333 -640 440 -500 347 -480 640 -640 480 -640 426 -426 640 -640 480 -640 426 -640 360 -640 427 -640 480 -640 480 -640 457 -480 640 -640 427 -640 428 -640 426 -640 425 -640 427 -375 500 -640 348 -640 427 -640 427 -427 640 -428 640 -640 363 -640 427 -640 360 -428 640 -640 504 -426 640 -640 427 -333 500 -640 426 -640 427 -640 426 -640 480 -500 437 -220 186 -640 480 -640 640 -640 480 -640 406 -480 640 -500 357 -640 480 -640 424 -373 640 -464 640 -640 478 -427 640 -640 480 -612 612 -640 429 -640 480 -640 426 -640 480 -500 400 -500 335 -640 427 -360 640 -426 640 -480 640 -480 640 -429 640 -640 427 -380 324 -462 640 -480 640 -480 640 -640 426 -640 427 -640 480 -640 426 -640 424 -640 490 -640 499 -640 480 -640 427 -457 640 -500 329 -640 480 -480 640 -640 385 -640 480 -640 241 -640 480 -480 640 -640 426 -640 479 -333 500 -640 640 -500 323 -500 340 -640 412 -640 426 -640 426 -640 481 -640 424 -640 480 -640 437 -640 425 -512 640 -640 480 -640 426 -640 408 -640 376 -640 480 -640 480 -640 427 -425 640 -640 478 -640 426 -427 640 -375 500 -500 375 -640 480 -480 640 -640 427 -375 500 -500 334 -640 427 -640 382 -640 425 -640 480 -640 480 -640 480 -640 458 -640 427 -640 480 -427 640 -640 640 -640 480 -640 480 -426 640 -640 427 -505 640 -640 480 -640 360 -428 640 -640 426 -640 427 -480 640 -640 425 -640 479 -640 480 -640 513 -426 640 -427 640 -239 360 -480 640 -640 363 -500 428 -640 427 -640 491 -640 512 -640 426 -500 286 -640 427 -612 612 -640 384 -513 640 -500 375 -427 640 -640 426 -428 640 -640 480 -640 424 -640 428 -640 429 -640 360 -640 426 -457 640 -640 480 -333 500 -343 500 -480 640 -640 307 -640 480 -640 371 -375 500 -640 427 -640 427 -640 427 -640 428 -500 307 -303 640 -640 426 -500 333 -640 426 -640 427 -640 593 -480 640 -640 360 -640 480 -640 427 -426 640 -640 480 -500 375 -500 375 -480 640 -640 480 -640 364 -640 480 -375 500 -640 480 -640 427 -640 427 -640 427 -374 500 -457 640 -500 333 -375 500 -640 426 -640 480 -640 425 -640 428 -640 428 -427 640 -640 460 -373 640 -428 640 -427 640 -640 480 -427 640 -640 360 -640 433 -640 480 -640 426 -640 427 -640 480 -640 428 -640 426 -640 480 -557 640 -640 424 -568 640 -640 480 -640 480 -375 500 -640 425 -480 640 -640 480 -640 480 -440 470 -640 360 -500 375 -428 640 -640 427 -640 480 -640 427 -480 640 -390 640 -640 480 -640 427 -640 478 -426 640 -640 480 -458 640 -427 640 -427 640 -479 640 -375 500 -640 427 -425 640 -640 428 -427 640 -640 480 -640 483 -640 480 -640 383 -640 480 -480 640 -640 425 -426 640 -443 640 -640 429 -426 640 -640 480 -640 480 -640 480 -640 427 -480 640 -640 480 -640 640 -640 480 -436 640 -640 480 -500 333 -640 480 -640 426 -640 429 -500 375 -640 426 -429 640 -640 434 -640 491 -640 426 -480 640 -500 375 -640 480 -375 500 -640 428 -640 480 -480 640 -640 476 -640 427 -640 425 -500 375 -612 612 -500 167 -640 480 -640 426 -640 584 -640 480 -480 640 -464 640 -640 480 -480 640 -395 640 -640 582 -500 375 -640 480 -427 640 -640 480 -640 480 -640 480 -500 342 -640 427 -640 480 -500 282 -417 500 -500 375 -443 640 -480 640 -640 475 -640 640 -640 427 -427 640 -480 640 -640 427 -500 375 -429 640 -640 480 -640 480 -640 427 -640 480 -640 480 -640 480 -640 480 -640 427 -640 480 -640 424 -640 480 -640 427 -640 427 -640 480 -640 512 -425 640 -640 401 -640 428 -640 428 -640 480 -640 427 -640 423 -612 612 -500 333 -640 421 -640 427 -640 480 -640 480 -500 375 -640 478 -640 480 -427 640 -640 427 -640 478 -478 640 -640 427 -640 427 -428 640 -612 612 -640 426 -640 433 -480 640 -640 480 -360 640 -375 500 -612 612 -640 414 -640 360 -426 640 -521 640 -640 479 -640 427 -427 640 -640 408 -640 480 -640 480 -640 427 -640 428 -640 360 -640 446 -640 480 -640 400 -640 427 -640 480 -640 458 -640 424 -640 427 -426 640 -500 358 -640 426 -640 425 -500 375 -640 427 -640 414 -640 426 -427 640 -640 502 -640 480 -500 500 -640 231 -640 427 -640 480 -640 523 -427 640 -426 640 -640 480 -640 427 -640 427 -480 640 -640 413 -640 480 -640 427 -640 428 -500 333 -480 640 -640 426 -640 480 -480 640 -361 640 -375 500 -640 426 -640 480 -427 640 -480 640 -425 640 -480 640 -375 500 -640 480 -500 197 -500 375 -640 457 -640 424 -640 480 -640 425 -640 361 -640 480 -640 421 -497 640 -612 612 -640 429 -480 640 -640 480 -640 480 -640 480 -640 480 -640 247 -640 480 -427 640 -640 421 -640 427 -427 640 -612 612 -640 427 -400 500 -500 333 -640 480 -640 427 -640 480 -640 427 -500 375 -480 640 -640 427 -640 427 -360 640 -500 375 -640 480 -640 480 -640 427 -640 480 -640 512 -640 426 -640 425 -640 359 -640 425 -640 425 -640 480 -480 640 -640 480 -426 640 -640 426 -640 432 -640 455 -640 425 -640 640 -640 426 -640 440 -480 640 -640 425 -509 640 -640 480 -640 480 -640 480 -640 426 -640 427 -640 480 -640 424 -500 331 -427 640 -480 640 -426 640 -640 360 -640 153 -612 612 -640 361 -604 640 -640 452 -640 411 -478 640 -640 480 -612 612 -500 400 -640 480 -640 480 -640 427 -640 480 -640 427 -480 640 -426 640 -640 427 -640 427 -612 612 -500 469 -640 428 -640 480 -640 426 -640 480 -640 480 -640 448 -640 425 -640 480 -375 500 -640 426 -612 612 -438 640 -383 640 -480 640 -640 478 -599 363 -612 612 -480 640 -640 424 -640 427 -640 480 -640 360 -500 400 -640 401 -640 480 -640 473 -640 427 -640 480 -640 427 -640 480 -640 428 -640 480 -640 480 -640 480 -640 480 -640 427 -480 640 -640 427 -640 480 -640 427 -640 320 -640 434 -500 375 -500 375 -640 427 -480 640 -500 375 -640 427 -640 425 -640 426 -640 480 -640 427 -640 480 -640 424 -425 640 -640 480 -640 427 -640 539 -640 480 -640 429 -640 480 -640 483 -640 426 -640 480 -640 428 -383 640 -500 374 -640 480 -640 281 -640 425 -640 427 -640 480 -640 428 -640 427 -500 375 -640 426 -640 413 -427 640 -500 448 -640 426 -499 640 -640 426 -480 640 -640 426 -640 428 -640 361 -427 640 -500 333 -480 640 -640 160 -640 503 -640 480 -640 427 -640 361 -640 480 -500 475 -481 640 -640 480 -431 640 -640 427 -500 375 -640 427 -427 640 -640 480 -640 427 -640 480 -427 640 -480 640 -500 375 -640 396 -640 480 -428 640 -640 427 -452 640 -612 612 -500 332 -427 640 -640 427 -640 480 -488 640 -640 427 -640 426 -535 640 -640 480 -480 640 -640 426 -640 576 -640 360 -626 640 -500 375 -427 640 -427 640 -640 480 -640 480 -640 426 -640 480 -480 640 -640 480 -426 640 -480 640 -640 322 -640 427 -375 500 -640 425 -480 640 -500 242 -427 640 -428 640 -334 500 -640 461 -640 480 -640 480 -640 428 -640 480 -640 586 -468 640 -640 427 -640 480 -640 480 -640 549 -480 640 -640 427 -480 640 -612 612 -640 480 -640 427 -640 427 -640 551 -480 640 -640 480 -640 480 -640 427 -375 500 -640 427 -640 360 -480 640 -478 640 -500 332 -640 480 -427 640 -428 640 -481 640 -612 612 -375 500 -640 480 -500 375 -640 480 -512 640 -640 427 -640 425 -422 640 -500 375 -480 640 -640 424 -640 427 -480 640 -640 480 -640 480 -427 640 -640 480 -480 640 -612 612 -640 480 -640 427 -427 640 -500 375 -640 468 -640 426 -427 640 -427 640 -640 427 -427 640 -480 640 -640 480 -640 480 -480 640 -640 480 -640 497 -640 426 -640 640 -640 480 -640 480 -640 425 -375 500 -640 427 -500 375 -500 333 -640 508 -640 480 -500 400 -640 427 -640 480 -480 640 -640 427 -480 640 -640 480 -383 640 -640 439 -640 480 -640 427 -640 480 -500 338 -375 500 -640 640 -640 480 -640 426 -480 640 -367 640 -626 640 -480 640 -640 426 -336 640 -640 376 -480 640 -640 559 -500 400 -640 427 -640 427 -640 426 -640 425 -640 480 -640 480 -640 429 -477 640 -640 480 -640 438 -375 500 -640 480 -500 333 -612 612 -640 360 -480 640 -640 480 -493 640 -640 427 -640 363 -640 481 -480 640 -375 500 -640 429 -478 640 -640 480 -640 427 -640 372 -640 427 -640 427 -480 640 -640 427 -459 640 -500 335 -640 428 -640 480 -640 639 -640 432 -500 375 -500 333 -500 333 -500 400 -640 426 -640 480 -640 640 -640 478 -640 480 -640 426 -640 360 -640 480 -640 426 -640 428 -640 480 -640 536 -500 604 -640 480 -480 640 -500 375 -500 375 -500 332 -640 339 -612 612 -640 480 -640 480 -640 458 -427 640 -480 640 -640 424 -640 426 -480 640 -435 500 -428 640 -640 480 -500 345 -425 640 -640 480 -427 640 -429 640 -612 612 -640 427 -480 640 -612 612 -610 411 -640 427 -640 381 -333 500 -480 640 -640 393 -640 427 -640 522 -640 562 -640 480 -500 375 -640 427 -612 612 -375 500 -640 426 -425 640 -480 640 -612 612 -424 640 -640 512 -500 375 -427 640 -426 640 -612 612 -640 480 -640 480 -280 500 -500 333 -640 480 -640 427 -640 427 -640 548 -640 480 -640 428 -640 442 -640 628 -640 431 -640 427 -483 640 -640 480 -500 280 -640 480 -480 640 -457 640 -640 480 -640 480 -640 400 -500 375 -420 640 -640 428 -640 424 -500 332 -500 289 -428 640 -432 640 -640 480 -640 404 -640 480 -380 500 -500 375 -640 427 -640 520 -640 480 -640 480 -640 423 -500 333 -640 480 -640 427 -640 476 -640 426 -500 333 -640 424 -640 480 -500 375 -480 640 -640 426 -375 500 -457 640 -640 432 -640 480 -640 488 -640 508 -640 312 -640 368 -640 426 -640 379 -640 426 -640 426 -500 333 -640 480 -640 478 -640 639 -640 425 -640 478 -427 640 -640 480 -640 506 -640 480 -500 335 -640 425 -500 379 -640 427 -500 375 -476 640 -640 426 -500 375 -640 427 -500 335 -426 640 -640 627 -640 480 -640 480 -640 480 -640 425 -640 480 -428 640 -360 640 -640 480 -640 428 -500 375 -640 427 -640 480 -640 493 -640 480 -427 640 -640 426 -500 254 -590 443 -640 480 -360 640 -640 480 -640 408 -640 480 -480 640 -640 480 -425 640 -640 449 -425 640 -640 640 -640 480 -635 640 -640 427 -640 360 -640 480 -640 383 -640 480 -375 500 -640 427 -640 427 -640 427 -640 426 -640 360 -640 424 -640 427 -640 640 -480 640 -640 480 -640 428 -640 427 -640 480 -640 480 -640 480 -640 427 -480 640 -640 512 -640 294 -640 428 -480 640 -640 640 -640 424 -640 426 -640 426 -640 480 -640 480 -640 480 -640 480 -640 451 -551 640 -612 612 -427 640 -500 375 -640 426 -640 426 -640 426 -493 500 -428 640 -640 480 -640 427 -480 640 -640 480 -480 640 -640 480 -480 640 -640 427 -640 480 -640 426 -640 428 -640 480 -640 480 -640 360 -640 480 -640 428 -640 427 -640 480 -640 428 -640 424 -480 640 -640 425 -640 425 -640 480 -640 478 -640 480 -640 480 -640 480 -612 612 -480 640 -640 398 -500 375 -427 640 -480 640 -640 548 -640 426 -640 504 -480 640 -640 427 -640 478 -427 640 -640 427 -640 429 -500 333 -286 427 -612 612 -500 375 -563 640 -454 289 -429 640 -640 427 -427 640 -640 640 -500 375 -426 640 -500 281 -640 387 -640 428 -640 427 -640 426 -480 640 -480 640 -640 480 -640 425 -640 425 -640 480 -429 640 -640 426 -528 640 -640 428 -640 426 -500 335 -640 512 -500 375 -640 480 -640 428 -640 230 -640 428 -640 457 -333 500 -500 321 -640 480 -640 427 -640 480 -612 612 -480 640 -640 481 -640 427 -480 640 -640 427 -640 481 -488 500 -640 427 -640 403 -640 433 -640 480 -640 427 -480 640 -640 427 -426 640 -640 480 -640 480 -210 126 -640 480 -640 410 -428 640 -375 500 -500 335 -375 500 -640 480 -500 375 -640 427 -640 480 -500 333 -640 427 -480 640 -429 640 -640 480 -480 640 -480 329 -500 333 -500 375 -640 480 -360 480 -640 416 -640 480 -480 640 -640 400 -461 640 -500 333 -640 396 -424 640 -500 375 -640 425 -612 612 -640 427 -640 448 -640 241 -640 426 -500 350 -640 427 -427 640 -640 424 -500 375 -640 492 -640 425 -640 434 -640 425 -216 301 -640 428 -640 480 -500 371 -500 333 -640 428 -481 640 -480 640 -640 480 -640 322 -640 427 -640 478 -427 640 -640 427 -640 480 -439 640 -640 427 -640 480 -480 640 -640 426 -500 333 -640 427 -640 429 -640 427 -640 480 -500 375 -640 427 -640 497 -480 640 -640 463 -480 640 -356 500 -500 375 -640 428 -480 640 -500 289 -640 427 -640 480 -640 436 -427 640 -640 480 -640 640 -640 418 -480 640 -640 426 -375 500 -640 480 -640 427 -640 427 -480 640 -640 480 -640 320 -480 640 -640 426 -640 428 -640 480 -640 426 -640 426 -640 457 -640 427 -640 427 -640 457 -480 640 -448 298 -640 480 -640 426 -640 483 -640 480 -458 640 -640 480 -333 500 -640 403 -640 480 -640 427 -640 360 -640 569 -360 640 -612 612 -640 480 -640 478 -640 424 -640 427 -640 427 -640 359 -640 480 -640 548 -612 612 -375 500 -333 500 -640 429 -640 480 -640 480 -480 640 -428 640 -640 426 -640 399 -640 480 -640 427 -517 388 -640 429 -640 427 -640 480 -640 424 -640 426 -640 425 -480 640 -640 480 -640 360 -640 427 -640 425 -425 640 -640 480 -640 414 -480 640 -640 480 -640 480 -640 427 -640 480 -612 612 -612 612 -500 375 -426 640 -640 426 -640 480 -640 394 -640 427 -612 612 -426 640 -640 428 -640 480 -375 500 -640 480 -640 352 -500 332 -640 480 -443 640 -640 427 -640 424 -446 640 -640 368 -640 640 -480 640 -531 640 -640 480 -478 640 -640 426 -640 427 -640 480 -333 500 -500 391 -612 612 -640 428 -457 640 -640 427 -500 375 -640 428 -500 500 -640 480 -640 427 -640 457 -426 640 -640 480 -640 427 -640 480 -480 640 -480 640 -640 588 -640 480 -612 612 -427 640 -640 425 -640 480 -500 375 -640 514 -640 480 -480 640 -640 427 -640 427 -640 360 -640 479 -500 329 -640 516 -640 424 -640 480 -640 604 -480 640 -640 480 -480 640 -640 427 -500 375 -500 333 -323 500 -640 480 -640 480 -640 427 -640 428 -640 258 -640 480 -640 480 -640 480 -640 472 -640 426 -640 426 -500 375 -640 425 -480 640 -494 640 -640 426 -640 480 -500 375 -388 640 -640 480 -640 480 -640 427 -640 427 -427 640 -512 640 -640 427 -365 500 -494 640 -640 259 -640 427 -640 400 -640 480 -425 640 -612 612 -640 480 -640 427 -640 480 -640 427 -480 640 -640 427 -640 480 -640 400 -640 640 -640 428 -640 480 -640 428 -640 480 -640 491 -426 640 -640 427 -640 480 -480 640 -640 427 -640 480 -640 427 -480 640 -427 640 -427 640 -640 427 -500 375 -640 480 -480 640 -481 640 -640 359 -640 480 -612 612 -640 427 -640 480 -500 333 -640 427 -428 640 -640 361 -640 402 -640 427 -500 375 -427 640 -640 427 -640 428 -640 480 -640 396 -500 375 -640 417 -640 411 -640 426 -640 427 -640 480 -500 375 -640 427 -640 427 -427 640 -640 427 -640 480 -427 640 -427 640 -640 480 -640 424 -640 338 -640 480 -480 640 -640 428 -640 480 -640 426 -640 426 -500 475 -640 427 -640 468 -640 427 -480 640 -640 480 -640 424 -640 427 -516 387 -426 640 -628 406 -640 427 -478 640 -640 364 -500 333 -480 640 -640 427 -640 358 -640 359 -519 640 -429 640 -640 457 -640 457 -640 427 -375 500 -640 418 -640 427 -640 394 -427 640 -500 375 -640 425 -561 640 -480 640 -640 348 -640 428 -500 363 -640 427 -513 640 -640 424 -500 281 -640 360 -427 640 -640 360 -640 480 -640 426 -500 500 -640 428 -640 498 -640 342 -640 483 -480 640 -640 480 -640 427 -612 612 -612 612 -612 612 -640 480 -640 640 -640 480 -640 425 -480 640 -640 424 -640 480 -480 640 -640 480 -640 425 -500 333 -640 425 -500 380 -640 480 -426 640 -640 426 -640 413 -640 427 -480 640 -449 640 -640 427 -588 640 -640 480 -640 431 -640 426 -640 480 -427 640 -500 362 -640 480 -500 375 -500 345 -427 640 -640 462 -640 428 -640 427 -640 514 -640 480 -640 426 -640 480 -495 500 -427 640 -640 480 -640 427 -314 640 -640 426 -376 500 -480 640 -640 426 -428 640 -480 640 -640 419 -325 500 -640 427 -640 427 -640 480 -352 640 -500 375 -375 500 -500 332 -640 480 -640 533 -500 335 -640 604 -500 375 -480 640 -640 477 -640 426 -500 375 -640 427 -426 640 -640 481 -640 427 -640 425 -640 480 -612 612 -640 427 -640 480 -512 640 -458 640 -429 640 -640 429 -640 427 -640 478 -640 427 -500 246 -640 480 -640 327 -640 427 -640 425 -640 427 -612 612 -640 252 -640 480 -640 480 -640 427 -640 198 -640 491 -640 480 -640 480 -640 480 -640 480 -640 428 -480 640 -640 434 -640 427 -427 640 -640 427 -500 373 -640 457 -640 360 -640 426 -427 640 -635 640 -612 612 -640 480 -640 426 -640 427 -500 333 -500 375 -450 337 -640 427 -640 368 -640 427 -640 480 -640 424 -640 480 -640 567 -500 375 -600 604 -613 640 -640 427 -640 427 -640 471 -640 480 -478 640 -587 640 -640 427 -538 640 -612 612 -640 480 -375 500 -458 640 -427 640 -640 398 -500 375 -640 256 -640 425 -480 640 -640 311 -640 427 -500 279 -640 480 -612 612 -364 500 -375 500 -500 375 -640 480 -640 480 -640 428 -640 640 -456 640 -399 640 -612 612 -640 480 -500 330 -480 640 -640 396 -640 480 -427 640 -640 456 -640 426 -612 612 -500 375 -500 357 -640 480 -450 298 -500 397 -640 480 -640 427 -640 427 -640 480 -640 480 -640 480 -640 621 -500 375 -640 480 -500 331 -640 414 -640 480 -640 359 -640 480 -633 640 -640 480 -640 480 -640 428 -640 396 -480 640 -500 375 -494 500 -640 480 -640 510 -640 520 -640 480 -640 425 -640 427 -426 640 -387 500 -640 480 -640 424 -640 480 -500 332 -640 480 -640 421 -640 425 -640 424 -640 427 -640 480 -640 428 -640 427 -640 480 -640 424 -640 426 -640 360 -640 480 -640 480 -640 427 -640 425 -640 479 -500 334 -491 640 -480 640 -640 480 -640 473 -500 465 -375 500 -640 427 -640 427 -640 426 -640 480 -640 480 -500 329 -640 424 -500 487 -480 640 -640 480 -500 375 -640 480 -559 640 -640 463 -640 425 -428 640 -640 427 -500 382 -640 480 -640 523 -640 541 -640 480 -371 640 -640 426 -640 418 -640 401 -480 640 -425 640 -640 559 -500 490 -640 480 -428 640 -640 427 -640 427 -640 640 -640 427 -640 360 -480 640 -640 427 -341 500 -640 480 -426 640 -333 500 -640 480 -640 427 -480 640 -640 441 -640 426 -640 427 -640 480 -334 500 -640 424 -640 449 -640 419 -640 425 -640 427 -366 500 -322 500 -480 640 -448 640 -500 429 -640 425 -640 480 -640 480 -427 640 -478 640 -640 331 -480 640 -375 500 -640 480 -640 529 -640 426 -640 480 -640 480 -375 500 -425 640 -640 427 -640 480 -461 640 -640 428 -640 479 -640 427 -424 640 -640 427 -640 480 -500 359 -480 640 -640 427 -640 427 -480 640 -640 480 -640 458 -640 394 -640 425 -612 612 -500 375 -640 640 -480 640 -427 640 -640 408 -612 612 -640 427 -480 640 -640 426 -640 480 -640 593 -558 640 -640 481 -640 480 -640 426 -640 424 -640 480 -640 480 -500 375 -640 480 -500 424 -176 144 -640 427 -640 480 -640 480 -640 480 -640 426 -640 480 -480 640 -333 240 -427 640 -640 426 -640 480 -640 476 -640 480 -640 426 -640 427 -621 640 -640 480 -640 480 -640 426 -640 427 -640 480 -500 333 -375 500 -480 640 -640 480 -640 427 -640 427 -500 500 -640 423 -640 425 -640 480 -640 480 -640 427 -640 427 -640 425 -612 612 -640 426 -640 480 -640 425 -640 427 -640 640 -640 480 -500 375 -640 426 -500 271 -480 640 -500 375 -640 482 -640 427 -480 640 -640 427 -640 427 -640 480 -640 414 -640 427 -640 398 -640 480 -640 433 -640 426 -640 427 -480 360 -640 427 -640 480 -640 480 -480 640 -640 464 -612 612 -480 640 -640 480 -640 426 -640 480 -640 480 -640 480 -640 482 -500 386 -640 480 -500 377 -640 480 -640 427 -640 480 -640 480 -480 640 -424 640 -640 480 -640 427 -500 333 -640 424 -480 640 -500 333 -640 480 -640 400 -427 640 -640 427 -500 335 -640 416 -428 640 -640 427 -640 427 -500 333 -640 228 -640 426 -500 337 -480 640 -640 480 -640 424 -480 640 -500 409 -640 640 -640 640 -478 640 -411 500 -640 426 -640 427 -640 471 -640 480 -640 426 -640 403 -640 427 -640 428 -640 480 -640 480 -443 640 -640 548 -640 480 -640 480 -640 480 -480 640 -640 427 -480 640 -480 640 -640 298 -640 480 -480 640 -640 429 -640 458 -640 480 -640 427 -480 640 -640 480 -640 488 -499 640 -375 500 -640 480 -640 476 -640 427 -640 480 -640 456 -640 480 -500 375 -640 640 -500 375 -640 480 -357 500 -640 522 -480 640 -332 500 -480 640 -640 480 -640 427 -500 375 -426 640 -640 426 -640 427 -640 480 -500 375 -480 640 -640 428 -640 480 -480 640 -480 640 -640 428 -640 480 -500 379 -640 480 -427 640 -500 344 -640 424 -640 640 -427 640 -640 427 -500 375 -640 354 -426 640 -640 480 -640 427 -640 427 -640 480 -640 480 -640 480 -480 640 -375 500 -599 640 -640 440 -640 640 -427 640 -640 441 -448 336 -500 375 -500 375 -640 480 -500 332 -640 480 -640 457 -336 448 -500 281 -480 640 -640 480 -427 640 -640 433 -396 640 -500 500 -480 640 -640 480 -640 480 -640 425 -480 640 -640 425 -640 427 -500 375 -640 480 -640 360 -480 640 -500 375 -512 640 -640 418 -500 431 -500 332 -640 400 -640 458 -640 425 -500 333 -640 360 -480 640 -640 394 -640 360 -500 375 -640 480 -640 359 -640 426 -640 425 -500 333 -640 512 -640 428 -427 640 -640 480 -480 640 -640 480 -494 640 -427 640 -480 640 -640 479 -640 427 -640 640 -640 427 -640 480 -480 640 -640 427 -640 480 -640 428 -426 640 -640 424 -640 480 -640 427 -640 426 -640 425 -640 360 -640 427 -640 480 -640 478 -640 425 -480 640 -426 640 -640 434 -500 375 -640 427 -427 640 -640 387 -640 424 -480 640 -494 640 -640 399 -640 465 -501 640 -640 480 -640 427 -594 640 -500 375 -640 414 -640 480 -640 479 -640 360 -640 480 -480 640 -480 640 -375 500 -480 640 -640 361 -424 640 -640 425 -640 424 -640 427 -640 427 -640 480 -380 500 -640 428 -640 480 -640 480 -640 479 -640 361 -640 480 -640 480 -640 415 -429 640 -640 427 -640 480 -500 375 -640 424 -500 373 -500 375 -431 640 -480 640 -428 640 -640 416 -640 424 -640 420 -640 424 -457 640 -480 640 -640 476 -500 319 -640 427 -640 480 -640 480 -640 480 -424 640 -640 427 -640 586 -640 480 -640 413 -375 500 -640 427 -640 424 -500 375 -640 480 -640 480 -428 640 -375 500 -288 432 -640 479 -640 427 -640 479 -640 464 -640 401 -480 640 -640 480 -427 640 -640 424 -640 451 -628 640 -640 425 -640 426 -500 375 -500 333 -482 640 -479 640 -427 640 -640 480 -640 427 -640 428 -640 427 -500 375 -640 480 -640 427 -500 375 -640 480 -640 480 -640 419 -428 640 -500 375 -640 640 -640 499 -640 427 -640 426 -640 408 -640 427 -640 425 -640 640 -640 427 -640 425 -404 500 -640 425 -640 425 -480 640 -640 480 -640 427 -640 480 -640 640 -640 480 -500 375 -640 618 -519 640 -480 640 -480 640 -640 480 -500 332 -426 640 -333 500 -640 480 -640 427 -640 480 -640 480 -500 311 -640 480 -640 480 -640 427 -640 480 -640 426 -640 480 -484 640 -480 640 -640 384 -424 640 -427 640 -640 480 -640 433 -640 575 -640 640 -640 419 -500 376 -640 427 -640 480 -333 500 -640 480 -640 427 -480 640 -480 640 -500 326 -640 480 -640 480 -640 453 -462 640 -640 353 -640 424 -640 424 -640 480 -640 427 -640 360 -640 368 -640 480 -640 427 -640 480 -640 427 -640 427 -640 434 -640 428 -640 427 -427 640 -500 400 -427 640 -640 431 -400 239 -640 426 -640 427 -480 640 -640 557 -480 640 -640 480 -640 424 -427 640 -640 427 -425 640 -640 360 -640 358 -640 480 -640 480 -640 425 -500 333 -524 640 -375 500 -640 427 -500 333 -640 440 -640 533 -640 427 -640 480 -640 426 -633 640 -640 502 -640 480 -640 428 -640 359 -640 425 -640 480 -640 480 -480 640 -640 480 -640 480 -640 520 -640 480 -480 640 -640 426 -640 480 -478 640 -640 414 -640 480 -478 640 -640 480 -640 488 -480 640 -375 500 -640 424 -640 427 -640 480 -640 480 -427 640 -427 640 -640 480 -427 640 -512 640 -640 480 -424 640 -500 252 -640 427 -640 425 -428 640 -640 427 -427 640 -425 640 -375 500 -640 480 -640 428 -640 640 -640 480 -480 640 -500 337 -640 427 -640 480 -640 383 -640 427 -500 375 -500 333 -640 480 -500 375 -494 640 -640 480 -640 512 -640 425 -500 375 -500 332 -640 427 -640 480 -612 612 -640 640 -640 480 -640 427 -640 427 -480 640 -640 480 -640 427 -500 375 -640 480 -640 480 -640 480 -640 427 -480 640 -333 500 -640 480 -640 480 -428 640 -640 427 -640 427 -480 640 -640 461 -500 375 -640 480 -640 363 -640 427 -640 574 -640 426 -640 480 -375 500 -640 480 -640 360 -640 395 -600 402 -640 480 -640 360 -500 500 -640 428 -640 425 -640 480 -640 480 -640 480 -480 640 -640 426 -640 480 -640 482 -640 361 -640 480 -480 640 -640 434 -640 425 -480 640 -640 427 -640 425 -640 428 -500 375 -640 425 -500 332 -640 480 -500 375 -640 431 -640 425 -640 427 -640 480 -640 485 -640 480 -512 640 -480 640 -500 375 -640 427 -640 425 -462 640 -640 425 -500 334 -640 480 -375 500 -549 640 -640 351 -500 375 -640 480 -480 319 -640 360 -640 427 -480 640 -640 480 -640 427 -640 426 -640 427 -640 439 -640 329 -640 480 -640 426 -500 500 -427 640 -640 480 -640 480 -640 480 -640 428 -640 424 -640 480 -480 640 -640 426 -640 480 -640 427 -368 640 -640 456 -640 480 -427 640 -640 480 -640 458 -640 427 -480 640 -429 640 -640 435 -640 480 -640 428 -640 425 -640 403 -640 514 -640 424 -640 512 -500 375 -640 512 -640 462 -640 427 -480 640 -640 480 -640 426 -640 504 -429 640 -426 640 -612 612 -500 333 -640 426 -640 422 -640 269 -640 427 -640 480 -640 425 -640 400 -427 640 -640 426 -640 480 -640 478 -480 640 -640 480 -640 486 -640 427 -458 640 -640 425 -640 503 -332 500 -426 640 -432 305 -480 640 -640 480 -640 480 -640 428 -375 500 -500 333 -426 640 -500 376 -640 428 -500 213 -640 479 -640 429 -598 640 -640 373 -473 640 -640 480 -640 640 -612 612 -640 480 -640 480 -640 480 -640 427 -640 427 -402 640 -640 480 -640 425 -640 427 -640 378 -640 428 -640 427 -640 361 -500 333 -640 427 -640 427 -480 640 -427 640 -640 426 -480 640 -640 450 -612 612 -640 553 -640 480 -640 425 -640 439 -640 428 -640 428 -640 430 -500 352 -640 418 -479 640 -640 427 -640 639 -640 480 -640 427 -640 427 -640 480 -612 612 -640 480 -427 640 -427 640 -640 316 -640 428 -500 375 -640 480 -640 424 -640 427 -500 333 -428 640 -500 334 -640 480 -500 375 -640 426 -500 331 -640 480 -640 458 -640 478 -612 612 -640 480 -427 640 -427 640 -640 426 -427 640 -612 612 -477 640 -640 428 -640 427 -640 427 -640 427 -640 448 -640 427 -640 427 -512 640 -640 426 -640 480 -640 493 -640 427 -640 427 -500 333 -640 283 -640 360 -640 457 -303 500 -500 333 -640 513 -500 375 -640 425 -640 304 -612 612 -640 480 -640 424 -500 375 -333 500 -640 480 -640 426 -480 640 -500 375 -500 381 -640 480 -640 480 -640 570 -500 375 -640 427 -480 640 -640 480 -640 480 -640 480 -640 480 -640 427 -500 375 -640 427 -640 426 -640 480 -480 640 -480 640 -640 411 -640 426 -640 427 -640 480 -480 640 -640 427 -500 291 -350 500 -640 360 -467 640 -429 640 -640 441 -427 640 -500 216 -640 480 -480 640 -640 480 -640 467 -640 480 -480 640 -311 640 -640 480 -640 427 -640 480 -640 480 -500 334 -640 427 -640 426 -640 458 -480 640 -640 479 -640 424 -513 640 -640 480 -640 360 -640 480 -318 480 -640 427 -612 612 -640 425 -640 400 -640 427 -640 480 -480 640 -500 331 -357 500 -640 480 -480 640 -640 480 -640 443 -640 480 -640 426 -640 480 -500 367 -640 433 -480 640 -640 480 -640 427 -640 427 -500 333 -640 479 -640 480 -640 428 -425 640 -640 367 -375 500 -500 366 -480 640 -640 480 -640 481 -480 640 -640 427 -427 640 -427 640 -640 510 -640 481 -375 500 -640 480 -359 640 -640 264 -640 426 -480 640 -640 480 -640 458 -500 416 -640 429 -640 426 -640 480 -640 425 -640 480 -640 480 -640 480 -640 383 -160 144 -640 427 -640 425 -640 428 -427 640 -640 480 -640 426 -640 427 -500 333 -333 500 -640 427 -425 640 -640 461 -640 428 -640 427 -640 321 -640 405 -427 640 -375 500 -640 480 -640 427 -640 426 -640 480 -640 427 -480 640 -640 432 -640 427 -640 361 -640 428 -640 480 -640 528 -480 640 -640 424 -640 426 -640 320 -640 336 -640 429 -427 640 -640 425 -500 375 -500 332 -640 427 -500 375 -640 427 -640 426 -640 305 -640 427 -500 375 -640 480 -301 500 -640 480 -640 416 -500 334 -640 480 -640 480 -640 425 -640 480 -425 640 -640 426 -378 500 -640 434 -375 500 -640 480 -640 480 -640 427 -640 478 -640 573 -481 640 -640 480 -427 640 -640 427 -460 500 -640 480 -640 480 -428 640 -640 478 -640 480 -640 480 -640 401 -500 500 -500 375 -640 424 -500 333 -640 426 -500 500 -640 379 -457 640 -640 466 -640 480 -500 333 -640 427 -427 640 -640 478 -640 426 -640 640 -640 426 -640 425 -640 427 -426 640 -525 640 -640 271 -612 612 -480 640 -640 480 -640 480 -640 360 -640 427 -640 480 -640 480 -375 500 -640 480 -640 480 -640 480 -640 434 -480 640 -640 427 -640 359 -500 375 -640 480 -640 480 -640 480 -640 480 -500 375 -640 480 -640 480 -427 640 -480 640 -640 396 -383 640 -220 222 -640 427 -480 640 -640 480 -640 326 -640 521 -640 427 -640 480 -640 426 -640 478 -640 480 -640 427 -640 427 -640 533 -360 640 -640 480 -640 480 -640 443 -500 375 -640 306 -480 640 -500 332 -640 426 -640 479 -640 488 -640 427 -480 640 -640 400 -640 400 -640 480 -640 640 -427 640 -640 427 -640 480 -425 640 -640 480 -640 425 -640 427 -440 640 -640 427 -640 425 -640 640 -640 425 -640 480 -640 426 -513 640 -640 427 -640 581 -640 360 -640 480 -640 427 -425 640 -500 332 -640 480 -640 480 -640 428 -640 426 -640 480 -640 556 -640 428 -640 480 -640 427 -640 480 -427 640 -426 640 -640 463 -640 433 -424 640 -640 427 -640 480 -500 333 -640 426 -500 344 -640 480 -640 427 -640 427 -640 427 -333 500 -640 480 -640 427 -640 480 -640 414 -375 500 -444 640 -500 333 -640 253 -640 462 -427 640 -640 480 -640 480 -427 640 -640 480 -500 350 -640 427 -640 427 -640 510 -478 640 -640 503 -640 480 -640 360 -640 424 -612 612 -376 640 -480 640 -640 427 -500 375 -425 640 -500 333 -333 500 -640 480 -640 480 -500 375 -640 480 -640 427 -640 480 -500 324 -427 640 -624 640 -640 480 -640 428 -640 480 -500 358 -640 418 -640 427 -640 427 -640 427 -612 612 -640 427 -640 427 -490 640 -428 640 -600 600 -640 424 -640 506 -480 640 -480 640 -640 478 -640 478 -640 386 -640 425 -478 640 -640 427 -640 480 -640 480 -375 500 -640 480 -427 640 -640 427 -640 427 -640 426 -640 427 -640 480 -500 375 -427 640 -640 426 -640 480 -427 640 -640 427 -640 437 -427 640 -640 480 -374 500 -500 375 -640 428 -640 480 -480 640 -640 640 -424 640 -500 238 -640 426 -500 375 -640 427 -640 480 -640 425 -500 500 -542 640 -640 480 -500 333 -433 640 -480 640 -500 280 -640 427 -500 330 -427 640 -640 426 -640 427 -481 640 -640 426 -640 409 -640 480 -640 428 -640 425 -427 640 -425 640 -640 480 -480 640 -640 383 -640 480 -427 640 -640 480 -480 640 -640 426 -575 434 -640 424 -640 427 -480 640 -478 640 -640 480 -640 360 -604 640 -640 361 -426 640 -640 427 -427 640 -640 480 -480 640 -375 500 -640 361 -446 640 -427 640 -640 426 -473 640 -426 640 -480 640 -640 451 -640 418 -640 427 -500 322 -640 480 -417 640 -640 427 -640 425 -500 374 -640 466 -640 480 -640 372 -640 471 -640 480 -480 640 -640 453 -640 344 -640 427 -640 603 -500 375 -640 480 -640 640 -480 640 -640 427 -640 480 -640 383 -640 480 -500 333 -640 480 -480 640 -438 640 -640 480 -640 480 -612 612 -375 500 -640 484 -500 314 -640 468 -428 640 -640 482 -640 429 -500 500 -480 640 -640 480 -640 424 -640 480 -640 426 -640 480 -640 424 -640 424 -640 427 -640 427 -429 640 -640 425 -427 640 -640 427 -640 478 -640 640 -500 375 -640 427 -480 640 -640 338 -640 427 -640 427 -640 480 -640 480 -640 427 -640 428 -640 493 -421 640 -640 427 -426 640 -640 513 -640 360 -640 480 -640 480 -640 480 -426 640 -512 640 -640 512 -640 426 -640 480 -426 640 -640 428 -640 427 -480 640 -640 464 -640 480 -640 478 -640 480 -640 480 -612 612 -640 640 -500 375 -500 375 -640 480 -640 461 -640 501 -338 450 -640 427 -640 425 -640 379 -640 427 -640 428 -640 384 -640 480 -640 427 -639 640 -640 427 -428 640 -640 482 -500 333 -640 427 -640 361 -629 640 -500 333 -640 427 -500 375 -480 640 -427 640 -640 521 -413 640 -640 428 -480 640 -640 480 -475 640 -640 426 -500 331 -640 373 -640 438 -427 640 -640 429 -640 480 -640 480 -500 493 -640 427 -640 478 -341 595 -480 640 -500 375 -640 480 -500 500 -480 640 -640 480 -640 480 -428 640 -640 426 -640 480 -640 478 -640 427 -480 640 -375 500 -480 640 -640 480 -640 480 -640 480 -481 640 -640 373 -640 480 -640 480 -612 612 -640 480 -500 426 -640 424 -500 407 -480 640 -640 426 -640 480 -640 475 -640 439 -640 480 -640 418 -640 481 -640 426 -640 480 -334 500 -640 384 -500 375 -423 640 -512 640 -500 334 -640 417 -612 612 -640 480 -640 432 -640 427 -640 386 -428 640 -640 480 -640 480 -640 480 -640 478 -640 480 -640 480 -640 426 -640 426 -480 640 -500 332 -640 427 -640 480 -427 640 -640 429 -612 612 -423 640 -640 360 -640 480 -640 480 -480 640 -640 425 -640 428 -480 640 -640 426 -640 480 -640 480 -640 480 -640 480 -500 375 -640 480 -334 500 -395 640 -640 480 -640 480 -500 375 -640 480 -500 375 -640 480 -640 480 -640 480 -640 483 -640 480 -640 480 -428 640 -450 391 -424 640 -478 640 -640 480 -500 375 -426 640 -640 464 -640 429 -640 427 -640 433 -640 427 -500 375 -640 480 -480 640 -427 640 -640 604 -640 474 -640 640 -640 427 -640 480 -640 427 -640 427 -480 640 -640 427 -427 640 -640 480 -640 480 -480 640 -640 360 -640 640 -640 480 -640 427 -640 428 -640 427 -640 424 -640 361 -640 480 -640 480 -640 434 -612 612 -500 375 -640 426 -640 427 -640 480 -640 427 -640 360 -640 640 -500 375 -640 427 -640 480 -640 480 -640 481 -640 427 -640 474 -640 427 -640 471 -480 640 -612 612 -640 427 -500 333 -640 426 -640 428 -480 640 -640 480 -565 640 -640 427 -480 640 -640 424 -640 481 -428 640 -640 480 -640 427 -640 480 -640 400 -640 480 -425 640 -640 480 -640 480 -333 500 -640 427 -640 480 -612 612 -640 427 -480 640 -640 480 -640 480 -434 640 -640 480 -640 414 -640 480 -640 480 -480 640 -500 359 -396 640 -480 640 -579 640 -640 480 -423 640 -640 640 -640 361 -640 428 -640 478 -640 480 -397 640 -640 341 -480 640 -640 427 -640 480 -640 480 -480 640 -640 480 -500 375 -640 426 -640 480 -500 332 -640 480 -640 480 -640 431 -640 427 -640 480 -640 427 -640 428 -516 640 -640 426 -640 484 -640 360 -480 640 -640 426 -640 457 -361 640 -640 461 -601 640 -640 509 -640 427 -640 426 -425 640 -640 480 -612 612 -640 427 -640 426 -640 480 -640 526 -427 640 -640 426 -600 600 -640 427 -640 480 -640 425 -423 640 -640 480 -500 375 -529 640 -459 640 -333 500 -640 480 -640 320 -640 429 -640 351 -433 640 -500 375 -640 480 -640 480 -640 480 -640 427 -500 375 -640 480 -640 480 -640 427 -640 480 -640 480 -640 640 -426 640 -427 640 -640 480 -640 480 -640 347 -640 428 -640 360 -427 640 -640 427 -640 480 -424 640 -640 480 -640 640 -612 612 -480 640 -640 480 -428 640 -640 480 -426 640 -640 430 -640 427 -439 640 -500 375 -640 425 -489 640 -640 427 -500 333 -640 480 -640 428 -640 427 -640 512 -640 351 -640 424 -500 328 -640 427 -640 427 -500 334 -640 480 -640 480 -640 405 -500 397 -640 427 -640 403 -640 428 -640 422 -640 480 -640 396 -426 640 -640 499 -640 476 -640 427 -640 439 -599 348 -640 638 -640 386 -640 480 -640 427 -428 640 -426 640 -640 480 -640 449 -640 427 -640 480 -612 612 -640 425 -640 427 -640 480 -640 503 -427 640 -640 426 -612 612 -640 426 -497 640 -612 612 -640 359 -640 428 -426 640 -640 427 -640 480 -500 316 -500 375 -640 425 -640 480 -333 500 -640 480 -640 480 -640 480 -640 426 -427 640 -640 474 -640 480 -542 640 -640 480 -640 427 -640 426 -457 640 -640 488 -480 640 -427 640 -640 433 -640 512 -640 481 -640 427 -480 640 -640 427 -640 478 -480 640 -500 334 -640 464 -612 612 -640 480 -640 480 -427 640 -640 469 -640 478 -640 427 -640 480 -640 480 -480 640 -480 640 -640 336 -640 426 -640 424 -640 475 -640 480 -427 640 -640 423 -428 640 -640 428 -640 427 -640 427 -640 480 -640 480 -640 396 -640 427 -500 333 -640 427 -640 480 -640 427 -640 360 -612 612 -480 640 -640 448 -423 640 -640 564 -640 480 -640 348 -480 640 -493 640 -426 640 -612 612 -500 375 -640 408 -640 539 -640 427 -640 360 -500 375 -640 480 -333 500 -640 480 -400 500 -640 480 -640 480 -640 438 -640 428 -640 434 -640 427 -640 400 -640 480 -375 500 -640 359 -640 640 -640 427 -640 425 -640 359 -640 480 -640 512 -640 483 -640 427 -640 480 -640 480 -640 480 -640 635 -427 640 -640 424 -640 640 -480 640 -426 640 -640 480 -640 427 -640 426 -471 640 -640 480 -480 640 -640 427 -640 433 -640 360 -500 375 -640 574 -612 612 -640 480 -640 522 -640 523 -480 640 -640 427 -640 480 -640 426 -480 640 -640 426 -425 640 -640 480 -640 424 -480 640 -640 640 -640 480 -640 480 -640 429 -507 640 -640 480 -640 480 -426 640 -500 415 -640 480 -640 480 -480 640 -640 449 -640 480 -640 427 -427 640 -480 640 -640 417 -612 612 -500 375 -375 500 -640 396 -500 343 -640 388 -428 640 -480 640 -480 640 -640 287 -480 640 -426 640 -640 427 -640 395 -480 640 -480 640 -481 640 -640 480 -640 480 -640 448 -640 427 -640 480 -500 354 -640 331 -384 512 -640 458 -640 408 -640 480 -640 429 -640 480 -640 526 -640 424 -640 480 -640 499 -640 640 -640 454 -640 427 -640 480 -500 334 -640 271 -640 424 -640 424 -368 640 -478 640 -640 630 -427 640 -640 427 -333 500 -640 424 -640 480 -640 426 -512 640 -640 480 -640 339 -640 395 -640 387 -640 428 -424 640 -640 480 -640 568 -640 425 -500 375 -640 480 -500 375 -640 480 -500 375 -640 480 -640 370 -480 640 -425 640 -640 427 -640 508 -640 278 -640 480 -375 500 -500 375 -640 480 -426 640 -640 480 -640 425 -480 640 -640 426 -640 358 -640 480 -510 640 -361 640 -640 427 -640 480 -640 427 -500 375 -426 640 -640 480 -640 421 -640 473 -640 480 -640 453 -640 431 -640 427 -640 427 -426 640 -576 285 -640 480 -427 640 -640 425 -640 427 -640 640 -640 427 -640 427 -640 359 -640 421 -640 425 -476 640 -640 480 -500 288 -356 500 -640 415 -640 480 -640 426 -640 480 -640 421 -640 522 -640 413 -612 612 -612 612 -640 480 -480 640 -427 640 -640 480 -427 640 -640 478 -640 400 -640 480 -640 480 -640 436 -640 480 -640 587 -500 333 -640 350 -640 480 -640 424 -640 426 -640 438 -428 640 -640 480 -640 425 -640 474 -640 480 -403 640 -500 325 -500 375 -500 375 -640 480 -427 640 -464 640 -640 480 -640 423 -480 640 -640 428 -339 500 -640 480 -500 375 -640 360 -500 333 -640 480 -640 427 -424 640 -640 480 -640 363 -640 459 -640 428 -640 427 -480 640 -640 361 -640 480 -640 418 -640 480 -640 427 -640 427 -375 500 -640 427 -640 480 -640 427 -500 306 -640 427 -640 480 -640 400 -640 427 -640 426 -640 425 -381 500 -500 375 -640 480 -640 480 -640 360 -500 332 -612 612 -640 424 -640 426 -640 480 -448 640 -640 362 -640 415 -500 375 -640 427 -484 640 -640 480 -500 375 -640 427 -493 640 -640 426 -640 429 -640 480 -402 640 -640 480 -640 480 -375 500 -640 426 -640 480 -640 442 -480 640 -640 480 -640 427 -480 640 -640 480 -500 378 -640 424 -640 480 -640 480 -640 480 -640 480 -640 426 -640 480 -640 361 -640 426 -640 359 -640 510 -640 427 -640 461 -640 427 -640 427 -480 640 -332 500 -288 432 -500 375 -640 478 -500 375 -500 375 -612 612 -640 427 -640 427 -426 640 -640 480 -480 640 -640 480 -333 500 -640 424 -480 640 -640 538 -640 420 -500 375 -640 427 -408 306 -480 640 -640 451 -640 480 -640 480 -640 426 -640 383 -640 429 -480 640 -640 480 -640 427 -640 429 -640 341 -383 640 -640 478 -640 480 -500 375 -640 314 -640 480 -640 430 -612 612 -640 427 -640 480 -333 500 -640 429 -640 640 -616 640 -640 480 -478 640 -375 500 -480 640 -500 375 -480 640 -427 640 -640 424 -427 640 -640 425 -640 427 -640 360 -427 640 -480 640 -640 404 -500 352 -640 360 -640 427 -500 399 -640 400 -640 480 -640 426 -640 426 -640 428 -640 480 -480 640 -640 429 -640 480 -640 480 -640 427 -640 480 -640 425 -640 480 -640 428 -523 640 -640 480 -500 375 -640 480 -640 640 -640 420 -640 423 -640 590 -640 427 -640 425 -640 327 -480 640 -640 428 -500 335 -640 425 -480 640 -400 640 -640 427 -640 480 -427 640 -640 426 -640 481 -640 426 -640 427 -500 375 -640 480 -640 427 -428 640 -615 615 -426 640 -480 640 -640 495 -640 480 -480 640 -640 439 -640 480 -640 480 -640 478 -480 388 -640 427 -640 359 -500 375 -640 480 -457 640 -480 640 -377 500 -600 314 -640 478 -640 480 -427 640 -480 640 -640 427 -640 454 -480 640 -640 480 -640 427 -640 414 -500 320 -640 480 -478 640 -640 480 -640 480 -640 640 -389 640 -640 480 -640 480 -640 501 -640 424 -640 480 -640 480 -640 323 -640 408 -640 480 -640 480 -640 425 -640 309 -640 427 -640 480 -640 480 -333 500 -359 640 -640 427 -640 427 -640 427 -640 424 -640 427 -640 480 -640 427 -640 427 -640 426 -640 480 -640 427 -640 427 -640 427 -640 480 -640 426 -431 640 -335 500 -427 640 -640 640 -640 391 -640 480 -640 480 -640 427 -640 427 -640 480 -640 427 -500 333 -640 502 -640 426 -640 427 -426 640 -640 480 -640 480 -640 480 -640 427 -394 640 -478 640 -623 640 -640 480 -640 427 -375 500 -427 640 -375 500 -640 512 -427 640 -480 640 -425 640 -480 640 -640 596 -640 545 -640 480 -640 480 -427 640 -480 640 -640 480 -640 522 -640 480 -375 500 -316 640 -500 396 -415 640 -640 503 -640 480 -640 360 -640 428 -640 426 -300 225 -427 640 -640 400 -500 334 -480 640 -640 480 -640 432 -500 375 -640 480 -500 332 -397 640 -612 612 -428 640 -454 640 -500 399 -640 480 -640 480 -640 279 -640 425 -500 375 -427 640 -640 425 -480 640 -383 640 -640 427 -500 375 -640 426 -640 480 -640 480 -640 480 -640 370 -500 333 -640 512 -640 480 -375 500 -640 480 -640 425 -640 427 -640 480 -500 335 -640 427 -640 480 -640 480 -500 375 -539 640 -640 480 -424 500 -640 427 -640 359 -640 427 -640 424 -640 426 -640 205 -640 424 -480 640 -640 480 -500 332 -640 480 -500 375 -640 427 -640 425 -640 445 -370 500 -640 480 -500 402 -640 427 -640 429 -612 612 -426 640 -500 373 -640 464 -640 480 -427 640 -640 480 -640 426 -640 479 -500 375 -640 426 -640 428 -640 480 -640 428 -640 427 -497 640 -640 480 -480 640 -640 426 -640 480 -425 640 -640 427 -426 640 -640 480 -640 480 -640 480 -640 480 -640 484 -427 640 -640 427 -640 427 -640 584 -612 612 -640 458 -640 427 -428 640 -500 375 -640 480 -427 640 -640 401 -619 640 -640 480 -640 512 -640 480 -424 640 -426 640 -640 478 -640 425 -640 347 -640 480 -640 359 -480 640 -640 428 -640 425 -375 500 -640 480 -640 424 -640 502 -375 500 -640 335 -415 500 -500 375 -640 424 -640 427 -640 480 -500 500 -500 375 -640 427 -640 427 -427 640 -640 480 -640 364 -640 640 -500 322 -480 640 -480 640 -427 640 -500 375 -375 500 -640 480 -640 490 -640 360 -640 480 -640 427 -500 376 -640 480 -373 500 -640 426 -640 480 -640 480 -500 375 -640 398 -640 480 -640 424 -640 480 -640 480 -427 640 -360 640 -640 480 -640 427 -640 480 -640 480 -612 612 -640 449 -426 640 -640 480 -480 640 -640 408 -480 640 -500 375 -640 383 -375 500 -640 425 -480 640 -428 640 -640 427 -500 330 -640 421 -640 427 -581 640 -640 426 -426 640 -640 427 -640 427 -640 388 -640 425 -640 428 -640 640 -640 427 -640 480 -640 480 -427 640 -640 428 -640 427 -640 480 -480 640 -414 640 -640 480 -480 640 -640 480 -640 427 -480 640 -428 640 -427 640 -640 449 -640 426 -640 480 -640 429 -640 467 -640 480 -640 480 -427 640 -640 427 -500 375 -640 478 -640 480 -640 385 -640 359 -360 640 -640 572 -640 480 -640 480 -427 640 -640 425 -640 466 -640 427 -640 640 -640 379 -500 315 -640 422 -640 480 -427 640 -640 424 -640 477 -640 480 -640 446 -375 500 -640 448 -640 360 -480 640 -640 478 -480 640 -640 480 -640 503 -500 375 -640 430 -613 635 -640 424 -640 427 -640 640 -640 427 -640 427 -427 640 -478 640 -409 640 -480 640 -640 480 -640 478 -458 640 -640 478 -640 480 -480 640 -640 423 -640 480 -480 640 -640 480 -640 360 -640 425 -640 360 -640 427 -427 640 -640 512 -640 480 -640 270 -640 360 -359 640 -500 375 -640 427 -500 375 -427 640 -480 640 -640 344 -640 480 -640 480 -640 640 -640 480 -640 640 -640 480 -640 360 -640 428 -640 427 -640 480 -640 427 -360 640 -640 426 -640 468 -640 402 -640 426 -640 425 -640 480 -640 480 -640 424 -640 425 -640 480 -640 579 -640 427 -640 480 -640 480 -640 427 -640 427 -640 480 -640 427 -640 480 -375 500 -640 426 -640 480 -640 480 -640 427 -291 500 -640 426 -640 480 -428 640 -640 426 -640 480 -427 640 -640 480 -480 640 -640 480 -480 640 -640 531 -640 480 -526 640 -640 427 -640 458 -480 640 -640 251 -480 640 -426 640 -640 427 -640 571 -640 427 -640 482 -640 480 -640 480 -427 640 -640 427 -640 571 -640 480 -640 427 -427 640 -640 417 -640 480 -640 480 -448 640 -640 427 -640 480 -631 640 -500 375 -640 425 -539 640 -609 640 -500 375 -478 640 -640 478 -500 375 -640 427 -427 640 -640 478 -640 438 -500 330 -640 426 -375 500 -375 500 -640 154 -480 640 -450 350 -640 480 -640 480 -640 426 -640 391 -640 425 -640 482 -640 480 -500 260 -434 500 -612 612 -500 334 -640 429 -480 640 -640 427 -500 375 -640 480 -640 480 -640 427 -640 480 -640 434 -500 335 -427 640 -640 410 -435 640 -500 375 -640 526 -640 400 -640 480 -640 480 -640 427 -640 411 -640 480 -480 640 -640 502 -640 480 -640 480 -500 375 -500 375 -357 500 -337 500 -640 480 -480 272 -640 478 -640 480 -640 480 -640 480 -428 640 -512 640 -640 428 -427 640 -640 427 -427 640 -640 427 -425 640 -640 428 -640 480 -544 640 -426 640 -640 427 -640 360 -500 375 -640 480 -480 249 -640 432 -640 424 -640 427 -640 480 -640 480 -640 426 -640 360 -640 480 -640 427 -640 427 -640 489 -366 500 -640 426 -640 427 -427 640 -640 426 -640 427 -640 425 -640 427 -500 332 -640 427 -640 480 -640 427 -240 360 -425 640 -640 480 -640 426 -640 427 -640 502 -640 480 -640 457 -640 480 -500 316 -480 640 -640 429 -640 480 -640 480 -640 480 -480 640 -640 461 -640 427 -640 512 -375 500 -429 640 -480 640 -640 414 -640 428 -427 640 -480 640 -518 640 -640 427 -640 480 -425 640 -640 427 -640 359 -640 480 -640 595 -640 480 -640 427 -640 480 -640 501 -500 375 -640 427 -640 415 -450 300 -640 480 -399 640 -640 269 -593 640 -640 480 -640 431 -640 428 -480 640 -480 640 -640 428 -640 426 -480 640 -636 640 -640 428 -426 640 -640 427 -640 427 -640 426 -640 360 -640 480 -500 332 -640 426 -640 427 -640 480 -500 375 -575 344 -640 426 -640 425 -612 612 -500 375 -640 480 -640 425 -640 480 -640 430 -425 640 -427 640 -429 640 -428 640 -640 480 -640 433 -426 640 -640 427 -640 640 -640 427 -640 480 -427 640 -500 375 -640 640 -640 427 -640 427 -640 480 -640 426 -640 479 -640 454 -480 640 -640 427 -640 480 -480 640 -640 480 -640 558 -640 478 -640 480 -480 640 -428 640 -375 500 -640 480 -500 375 -427 640 -424 640 -640 226 -640 480 -640 480 -640 427 -500 375 -480 640 -500 333 -640 427 -500 375 -612 612 -640 426 -426 640 -640 426 -640 360 -640 480 -640 427 -640 365 -500 375 -640 427 -640 427 -426 640 -640 480 -375 500 -640 480 -640 431 -640 480 -451 640 -640 480 -640 480 -640 480 -640 589 -640 425 -640 427 -575 640 -427 640 -640 427 -640 480 -480 640 -640 427 -640 478 -640 480 -640 426 -640 480 -640 429 -500 333 -427 640 -640 480 -426 640 -393 500 -640 426 -640 480 -640 428 -640 427 -500 374 -640 480 -640 393 -500 375 -640 480 -640 396 -640 480 -350 500 -640 497 -640 457 -640 360 -640 480 -640 480 -500 375 -640 480 -588 640 -640 480 -612 612 -640 480 -500 390 -640 503 -640 427 -640 425 -640 321 -640 427 -640 480 -640 360 -640 425 -640 435 -640 450 -640 428 -640 427 -375 500 -640 480 -640 427 -640 480 -500 443 -516 640 -640 427 -640 640 -640 480 -341 640 -640 499 -500 375 -640 640 -640 427 -640 402 -500 375 -428 640 -640 427 -426 640 -426 640 -500 333 -640 480 -640 409 -500 280 -640 427 -480 640 -640 427 -640 427 -640 412 -640 480 -640 480 -640 427 -640 428 -640 427 -427 640 -500 333 -500 338 -640 427 -640 480 -640 480 -640 478 -640 480 -640 480 -333 500 -427 640 -640 425 -640 439 -640 427 -640 480 -640 377 -640 480 -640 480 -640 480 -640 426 -640 429 -640 425 -640 480 -474 640 -640 426 -640 480 -640 425 -640 484 -640 480 -424 640 -500 375 -425 640 -480 640 -640 431 -640 427 -640 426 -640 480 -500 333 -610 390 -480 640 -640 428 -640 427 -640 428 -480 640 -640 480 -640 490 -511 640 -640 426 -500 375 -480 640 -640 640 -640 420 -427 640 -427 640 -640 480 -640 421 -640 480 -640 468 -500 333 -640 480 -640 424 -427 640 -640 424 -640 426 -640 428 -640 287 -480 640 -612 612 -640 480 -500 334 -449 640 -640 480 -640 428 -640 426 -640 433 -640 329 -604 453 -480 640 -640 427 -500 375 -640 360 -633 640 -500 332 -640 480 -640 478 -640 426 -640 425 -640 420 -640 634 -500 333 -375 500 -640 426 -640 507 -640 427 -640 480 -640 480 -640 427 -500 333 -640 526 -640 426 -480 640 -640 480 -640 426 -463 640 -640 427 -640 480 -640 491 -640 397 -640 493 -640 431 -480 640 -640 453 -414 640 -480 640 -640 480 -640 428 -375 500 -640 480 -640 428 -640 480 -640 457 -640 425 -640 426 -640 427 -640 441 -640 427 -640 426 -500 432 -640 427 -640 480 -500 375 -640 427 -411 640 -640 427 -640 480 -427 640 -544 640 -612 612 -426 640 -640 427 -640 434 -640 427 -640 444 -640 424 -640 481 -640 427 -500 375 -480 640 -500 376 -519 640 -640 425 -640 427 -464 640 -640 480 -612 612 -427 640 -480 640 -640 478 -640 480 -500 333 -640 480 -640 425 -640 480 -600 409 -640 480 -640 426 -640 480 -640 479 -640 500 -640 425 -640 426 -427 640 -640 480 -640 480 -424 640 -640 396 -640 427 -640 428 -640 480 -640 421 -426 640 -640 429 -480 640 -640 480 -640 480 -640 411 -427 640 -640 480 -640 478 -640 480 -640 424 -640 479 -426 640 -640 519 -640 480 -375 500 -640 480 -640 480 -640 426 -640 484 -500 374 -500 333 -463 500 -640 429 -640 427 -640 427 -640 427 -500 333 -640 427 -640 480 -480 640 -640 480 -612 612 -447 640 -640 480 -640 480 -427 640 -470 640 -640 478 -640 478 -640 480 -640 480 -640 480 -640 427 -640 554 -427 640 -509 640 -640 428 -640 426 -500 279 -640 480 -640 480 -478 640 -640 427 -640 480 -640 414 -640 480 -480 640 -640 479 -640 427 -612 612 -427 640 -640 427 -640 481 -640 427 -500 375 -375 500 -640 480 -640 480 -640 429 -640 359 -640 336 -640 427 -640 427 -640 426 -640 480 -480 319 -640 480 -640 480 -640 427 -480 640 -426 640 -500 333 -612 612 -640 360 -500 300 -550 640 -640 400 -640 360 -500 333 -427 640 -640 428 -593 640 -640 480 -640 444 -640 424 -640 488 -640 478 -480 640 -640 427 -640 426 -640 460 -640 511 -640 356 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -640 427 -640 480 -640 425 -600 400 -640 427 -374 500 -480 640 -640 427 -640 427 -640 475 -425 640 -640 480 -640 434 -640 640 -640 480 -640 319 -640 425 -640 303 -640 468 -612 612 -640 427 -640 427 -640 480 -514 640 -640 427 -500 375 -640 427 -640 480 -640 439 -640 427 -640 480 -640 429 -482 640 -478 640 -550 367 -640 480 -640 427 -640 427 -463 640 -640 480 -640 427 -640 427 -640 427 -640 478 -640 430 -640 427 -640 468 -640 480 -333 500 -640 427 -640 427 -640 425 -640 436 -640 427 -640 579 -640 513 -640 480 -640 480 -500 333 -480 640 -500 375 -375 500 -500 333 -640 426 -375 500 -640 480 -500 349 -640 427 -640 426 -640 480 -640 460 -612 612 -480 640 -612 612 -480 640 -640 424 -612 612 -640 406 -500 333 -480 640 -640 480 -640 427 -640 480 -640 394 -640 480 -640 451 -640 427 -640 426 -480 640 -640 400 -640 480 -640 426 -640 425 -428 640 -640 509 -640 480 -480 640 -480 640 -640 480 -640 427 -640 424 -640 400 -356 500 -480 640 -640 427 -640 426 -640 423 -640 360 -640 480 -640 431 -311 640 -640 478 -640 480 -640 480 -333 500 -640 480 -640 478 -640 478 -640 640 -427 640 -500 335 -480 640 -640 480 -640 480 -375 500 -640 425 -640 426 -640 426 -640 427 -640 427 -640 480 -640 480 -640 428 -640 480 -640 425 -640 480 -500 453 -640 427 -612 612 -375 500 -480 640 -480 640 -468 640 -640 480 -640 457 -428 640 -427 640 -640 480 -640 480 -640 427 -640 431 -640 480 -500 375 -500 332 -476 640 -640 481 -640 427 -640 480 -602 640 -640 480 -640 480 -481 640 -375 500 -640 427 -640 480 -610 640 -428 640 -640 425 -640 426 -640 480 -640 480 -612 612 -640 480 -640 290 -640 480 -640 426 -480 640 -640 424 -426 640 -640 480 -500 399 -640 480 -640 480 -423 640 -500 375 -640 424 -360 640 -640 480 -640 430 -500 375 -640 426 -640 424 -500 333 -640 427 -640 427 -640 396 -640 441 -480 640 -480 640 -640 407 -640 453 -640 480 -640 594 -427 640 -640 427 -640 478 -480 321 -640 480 -640 426 -612 612 -640 640 -640 389 -640 480 -640 511 -640 480 -640 480 -640 480 -480 640 -612 612 -640 360 -640 427 -640 427 -640 426 -640 427 -612 612 -501 640 -640 534 -358 500 -640 480 -640 493 -640 480 -640 427 -640 480 -427 640 -612 612 -640 429 -640 480 -478 640 -612 612 -640 484 -640 480 -640 427 -427 640 -428 640 -640 428 -640 480 -640 640 -455 640 -640 409 -640 480 -640 480 -500 332 -640 427 -400 500 -640 480 -640 426 -640 640 -500 369 -480 640 -640 424 -640 428 -480 640 -640 480 -427 640 -640 480 -640 480 -640 480 -640 427 -425 640 -640 495 -366 640 -640 427 -640 427 -640 427 -640 360 -640 429 -640 427 -640 427 -640 427 -640 480 -423 640 -640 480 -640 480 -640 422 -612 612 -640 480 -640 427 -640 484 -500 377 -640 449 -500 375 -500 333 -640 460 -427 640 -640 426 -640 432 -640 494 -640 426 -333 500 -640 427 -612 612 -640 480 -427 640 -640 360 -640 480 -500 314 -426 640 -640 480 -640 377 -640 480 -450 338 -640 428 -500 375 -640 426 -640 480 -640 510 -640 480 -640 480 -640 480 -640 479 -640 427 -640 480 -500 332 -640 512 -640 480 -640 426 -640 428 -640 480 -640 427 -640 576 -480 640 -640 480 -640 623 -640 480 -640 427 -500 274 -640 480 -426 640 -640 480 -640 480 -640 360 -640 360 -640 254 -427 640 -640 414 -640 423 -640 478 -640 438 -480 640 -640 480 -640 427 -640 480 -428 640 -480 640 -640 428 -428 640 -375 500 -500 338 -640 478 -640 473 -480 640 -640 425 -424 640 -500 500 -640 480 -640 480 -640 427 -480 640 -480 640 -640 425 -640 487 -500 375 -480 640 -640 427 -640 480 -640 480 -640 428 -480 640 -427 640 -640 480 -500 313 -640 427 -640 480 -640 427 -640 427 -426 640 -640 424 -375 500 -480 640 -640 480 -640 427 -500 334 -640 427 -640 427 -640 480 -612 612 -359 640 -640 480 -640 446 -640 427 -640 361 -640 427 -640 427 -612 612 -640 360 -480 640 -640 427 -640 480 -640 428 -640 427 -500 375 -640 426 -640 474 -612 612 -500 375 -640 480 -640 480 -500 375 -480 640 -640 396 -640 510 -640 426 -640 426 -500 333 -640 446 -480 640 -640 480 -640 426 -500 375 -640 480 -400 500 -500 332 -640 427 -612 612 -500 333 -640 431 -640 480 -500 375 -375 500 -430 640 -480 640 -640 480 -640 480 -500 459 -640 428 -443 640 -640 427 -480 640 -640 640 -427 640 -640 428 -640 425 -640 427 -640 427 -480 640 -640 360 -640 480 -457 640 -640 480 -500 375 -640 480 -427 640 -640 427 -640 480 -640 480 -480 640 -640 480 -640 427 -500 400 -640 427 -640 480 -640 425 -640 507 -640 382 -640 427 -640 426 -500 383 -640 347 -426 640 -640 426 -320 240 -640 426 -640 426 -640 421 -640 425 -375 500 -480 640 -640 426 -500 375 -500 333 -427 640 -458 640 -640 534 -375 500 -640 429 -640 480 -640 360 -640 480 -640 457 -500 333 -640 426 -640 427 -480 640 -640 426 -500 333 -640 376 -640 480 -640 480 -640 316 -640 440 -640 381 -640 427 -640 428 -640 480 -640 427 -609 640 -500 375 -640 426 -500 402 -640 427 -240 360 -640 480 -500 334 -640 425 -640 478 -640 638 -640 427 -500 375 -640 480 -640 425 -480 640 -640 425 -640 480 -612 612 -640 480 -640 427 -640 480 -640 480 -640 427 -640 427 -500 400 -480 640 -480 640 -640 314 -640 425 -640 427 -640 480 -500 332 -640 480 -640 427 -480 640 -640 425 -410 640 -640 427 -640 342 -640 480 -600 600 -640 427 -640 360 -640 640 -640 480 -500 336 -640 480 -640 425 -640 427 -640 428 -640 238 -640 427 -640 429 -480 640 -640 428 -640 453 -640 426 -640 428 -640 426 -640 424 -640 426 -640 403 -375 500 -478 640 -640 480 -640 480 -640 427 -640 480 -500 375 -500 400 -333 500 -500 281 -500 333 -427 640 -426 640 -480 640 -274 640 -640 480 -500 383 -640 427 -640 480 -640 383 -500 375 -500 333 -640 480 -640 433 -640 360 -500 333 -640 480 -640 427 -640 424 -500 375 -640 480 -427 640 -418 640 -640 480 -478 640 -640 553 -640 426 -640 424 -640 360 -640 480 -359 640 -427 640 -640 480 -480 640 -331 500 -427 640 -640 427 -640 480 -375 500 -500 375 -640 480 -500 375 -640 427 -640 424 -612 612 -500 332 -640 480 -640 426 -640 426 -500 345 -640 427 -640 425 -640 427 -375 500 -598 640 -640 480 -356 500 -640 480 -640 426 -640 478 -208 160 -500 481 -640 426 -640 426 -640 426 -640 480 -640 424 -480 640 -640 427 -500 294 -640 427 -640 427 -640 436 -640 402 -640 457 -640 480 -640 428 -640 428 -398 640 -426 640 -640 426 -428 640 -426 640 -500 333 -640 427 -640 480 -428 640 -480 640 -640 427 -640 427 -456 640 -501 640 -640 408 -640 480 -640 424 -640 480 -480 640 -640 480 -640 427 -480 640 -640 480 -500 408 -640 429 -480 640 -640 640 -612 612 -640 380 -640 426 -435 640 -640 503 -612 612 -640 480 -640 425 -640 480 -640 480 -640 480 -640 427 -640 426 -640 480 -443 500 -640 480 -640 480 -640 480 -480 640 -640 421 -640 640 -640 427 -640 426 -500 452 -500 333 -640 448 -640 480 -480 640 -640 427 -480 640 -640 480 -427 640 -478 640 -640 427 -640 422 -640 480 -640 424 -640 204 -640 480 -333 500 -480 640 -640 480 -640 425 -640 480 -640 437 -640 480 -462 640 -428 640 -640 480 -500 313 -500 476 -640 428 -640 489 -640 524 -640 426 -640 426 -500 375 -640 302 -640 510 -640 426 -640 360 -640 424 -640 432 -426 640 -488 640 -640 427 -640 376 -450 350 -640 480 -640 480 -500 319 -640 480 -640 359 -375 500 -640 480 -640 480 -640 427 -640 427 -333 500 -640 427 -640 406 -375 500 -427 640 -640 400 -565 584 -640 480 -640 640 -640 427 -335 500 -500 375 -640 448 -640 479 -640 480 -375 500 -640 494 -447 333 -640 457 -334 500 -640 640 -612 612 -640 528 -425 640 -500 375 -480 640 -640 480 -640 640 -640 424 -427 640 -480 640 -640 427 -640 639 -640 480 -640 480 -500 375 -480 640 -427 640 -640 428 -640 426 -640 427 -640 426 -640 424 -480 640 -640 480 -500 333 -383 640 -600 457 -640 216 -640 480 -500 375 -640 480 -640 427 -640 425 -640 480 -427 640 -640 427 -368 640 -640 480 -640 463 -640 425 -640 480 -640 426 -500 364 -640 427 -480 640 -640 483 -600 450 -636 640 -640 480 -640 640 -640 427 -480 640 -375 500 -640 480 -640 427 -640 439 -487 500 -640 425 -640 480 -640 480 -640 480 -640 480 -640 480 -640 356 -480 640 -640 480 -640 360 -640 427 -640 480 -500 333 -500 332 -640 427 -640 427 -640 480 -640 424 -480 640 -640 480 -640 427 -640 480 -640 427 -640 480 -480 640 -640 480 -640 480 -640 425 -433 640 -499 640 -640 480 -640 480 -640 480 -479 640 -640 427 -640 478 -640 429 -500 334 -640 480 -480 640 -640 480 -640 400 -640 427 -640 427 -480 640 -500 375 -640 357 -640 384 -480 640 -640 480 -612 612 -640 427 -640 360 -640 424 -480 640 -500 375 -375 500 -640 480 -480 640 -500 332 -640 640 -640 451 -640 427 -640 480 -640 480 -640 511 -500 357 -640 303 -480 640 -640 480 -500 375 -640 480 -640 390 -564 640 -424 640 -426 640 -640 423 -500 333 -480 640 -640 427 -359 640 -480 640 -640 411 -640 428 -500 375 -640 459 -640 480 -640 480 -640 480 -500 375 -640 427 -640 360 -480 640 -480 640 -640 480 -640 480 -640 427 -640 640 -612 612 -640 427 -425 640 -640 344 -640 427 -640 480 -480 640 -640 478 -640 480 -640 480 -640 429 -375 500 -640 431 -640 426 -480 640 -640 394 -640 427 -640 480 -640 480 -640 536 -640 426 -427 640 -500 404 -500 400 -500 375 -640 427 -640 478 -480 640 -640 479 -640 360 -640 480 -640 427 -612 612 -640 427 -500 375 -640 427 -640 420 -640 427 -640 480 -640 427 -640 425 -640 482 -494 289 -640 425 -640 640 -640 520 -427 640 -640 160 -640 470 -640 480 -640 480 -640 480 -500 375 -640 480 -500 375 -640 401 -500 375 -612 612 -640 360 -640 480 -640 480 -375 500 -640 434 -640 480 -640 480 -640 557 -640 640 -424 640 -427 640 -640 428 -640 411 -427 640 -480 640 -640 427 -640 480 -640 481 -640 480 -640 480 -640 426 -640 480 -640 526 -640 489 -500 375 -640 480 -640 480 -640 426 -640 480 -640 429 -612 612 -427 640 -640 444 -640 480 -640 480 -500 333 -640 396 -400 372 -640 480 -480 640 -640 480 -640 426 -640 480 -640 480 -640 360 -424 640 -427 640 -500 333 -426 640 -500 375 -640 406 -640 429 -640 427 -604 640 -424 640 -640 480 -500 375 -500 375 -640 546 -480 640 -640 406 -375 500 -640 427 -640 480 -640 425 -640 427 -500 375 -357 500 -640 480 -640 480 -640 425 -375 500 -500 400 -640 360 -640 480 -640 423 -640 423 -480 640 -640 480 -600 510 -434 640 -640 427 -640 435 -640 427 -640 480 -640 424 -640 427 -500 375 -640 480 -640 428 -640 427 -612 612 -640 480 -640 434 -640 480 -511 640 -640 427 -333 500 -640 413 -640 640 -640 360 -640 480 -640 427 -640 480 -640 480 -640 426 -640 480 -640 480 -640 425 -640 429 -240 160 -640 480 -612 612 -640 426 -640 360 -480 640 -640 480 -537 640 -640 480 -480 640 -640 426 -640 457 -640 427 -640 516 -640 427 -640 640 -640 480 -640 480 -640 427 -640 427 -640 453 -480 640 -640 428 -480 640 -640 363 -640 480 -541 640 -640 480 -612 612 -326 500 -500 400 -640 640 -640 480 -500 375 -640 427 -640 426 -500 375 -640 424 -375 500 -257 362 -480 640 -480 640 -640 480 -640 360 -640 480 -500 375 -640 420 -640 427 -640 298 -640 480 -640 401 -640 475 -640 427 -640 480 -640 426 -640 427 -610 640 -640 498 -480 640 -640 480 -408 640 -640 427 -500 500 -640 427 -640 480 -480 640 -640 640 -640 640 -500 375 -375 500 -640 480 -500 333 -640 480 -427 640 -640 411 -640 426 -640 426 -640 480 -640 480 -500 346 -640 427 -640 376 -640 360 -640 425 -480 640 -427 640 -500 438 -480 640 -640 426 -640 480 -640 292 -640 428 -640 480 -333 500 -500 462 -480 640 -640 451 -640 427 -468 640 -640 429 -640 480 -500 500 -640 480 -640 427 -427 640 -640 427 -640 427 -640 480 -640 480 -375 500 -640 480 -640 427 -640 340 -640 427 -480 640 -375 500 -500 423 -640 425 -640 554 -500 375 -480 640 -640 505 -640 199 -640 426 -640 427 -640 480 -640 480 -333 500 -640 411 -640 427 -640 480 -500 375 -640 424 -426 640 -480 640 -640 424 -640 480 -640 426 -640 320 -640 425 -500 333 -480 640 -640 480 -375 500 -640 480 -500 400 -343 640 -427 640 -640 480 -640 469 -640 480 -480 640 -640 339 -640 427 -640 427 -513 640 -640 394 -640 416 -640 234 -640 480 -640 427 -640 428 -640 426 -500 375 -500 334 -427 640 -640 480 -640 427 -640 480 -428 640 -500 333 -427 640 -492 500 -640 480 -423 640 -406 640 -640 480 -640 362 -480 640 -640 480 -640 426 -640 480 -640 444 -480 640 -513 342 -412 640 -427 640 -640 480 -640 359 -612 612 -640 480 -640 480 -480 360 -640 425 -640 480 -640 480 -640 598 -640 480 -480 640 -640 480 -640 426 -640 480 -500 374 -640 457 -640 426 -500 333 -500 377 -375 500 -500 375 -640 492 -640 311 -427 640 -640 427 -640 426 -633 640 -640 483 -640 386 -640 427 -640 453 -375 500 -640 320 -640 424 -640 427 -338 500 -640 427 -640 480 -640 480 -640 384 -640 480 -640 426 -375 500 -426 640 -640 480 -640 480 -640 427 -640 427 -640 428 -640 480 -640 426 -640 640 -640 426 -640 480 -640 480 -640 480 -500 345 -640 480 -640 341 -553 640 -480 640 -480 640 -320 240 -500 375 -500 375 -640 482 -640 427 -640 450 -640 480 -640 480 -478 640 -612 612 -640 425 -426 640 -623 640 -640 426 -640 480 -640 451 -640 336 -640 480 -427 640 -640 427 -640 480 -640 480 -640 427 -640 640 -640 512 -640 468 -640 480 -640 480 -640 480 -500 333 -480 640 -480 640 -425 640 -612 612 -640 480 -416 640 -640 457 -640 640 -427 640 -640 428 -480 640 -433 640 -640 425 -640 428 -640 428 -640 373 -500 375 -640 640 -606 640 -457 640 -640 480 -640 480 -640 480 -640 359 -640 512 -640 427 -480 640 -640 476 -640 360 -640 428 -480 640 -640 480 -640 503 -640 427 -640 427 -640 427 -640 488 -500 362 -640 482 -500 375 -640 581 -640 427 -612 612 -640 480 -621 640 -640 480 -640 427 -512 640 -640 425 -640 479 -480 640 -640 640 -640 427 -375 500 -640 480 -427 640 -426 640 -640 427 -640 480 -640 427 -640 424 -500 281 -640 260 -640 457 -480 640 -640 421 -640 480 -481 640 -500 375 -640 640 -428 640 -500 333 -640 427 -480 640 -640 426 -427 640 -500 375 -427 640 -432 288 -640 426 -640 480 -640 427 -375 500 -640 480 -640 425 -640 480 -640 453 -479 640 -640 479 -640 427 -640 352 -640 394 -480 640 -640 640 -640 480 -640 417 -640 494 -640 427 -640 479 -500 375 -640 480 -640 480 -640 426 -426 640 -640 427 -640 480 -640 424 -480 640 -479 640 -640 480 -640 629 -640 478 -640 480 -640 427 -640 430 -640 480 -640 480 -640 480 -640 427 -480 640 -640 480 -480 640 -427 640 -640 420 -640 425 -501 640 -546 640 -640 486 -640 480 -612 612 -640 235 -640 480 -640 429 -640 480 -428 640 -640 480 -640 480 -640 428 -612 612 -404 640 -640 480 -640 427 -640 408 -480 640 -427 640 -500 375 -537 427 -640 426 -360 480 -640 425 -640 480 -640 426 -640 428 -333 500 -334 500 -640 427 -360 480 -640 318 -480 640 -480 640 -640 429 -640 480 -500 243 -500 375 -480 640 -480 640 -640 480 -640 480 -640 456 -640 427 -480 500 -640 426 -640 480 -640 512 -479 640 -640 480 -640 482 -500 333 -640 429 -640 460 -640 428 -640 425 -640 640 -612 612 -640 480 -640 427 -640 427 -500 375 -640 480 -640 427 -427 640 -640 480 -640 480 -640 480 -640 427 -500 499 -640 505 -640 423 -640 480 -640 424 -640 482 -640 427 -640 480 -640 424 -640 427 -480 640 -640 480 -640 541 -480 640 -480 640 -375 500 -428 640 -427 640 -640 480 -500 376 -512 640 -375 500 -640 427 -210 168 -480 640 -640 481 -640 480 -640 427 -370 640 -640 390 -640 412 -640 480 -640 426 -640 425 -375 500 -500 375 -640 428 -640 640 -408 640 -640 427 -640 428 -640 480 -640 427 -500 375 -640 640 -640 427 -640 480 -640 480 -640 426 -499 500 -640 426 -500 332 -640 480 -640 427 -640 480 -640 360 -640 478 -341 500 -640 471 -640 480 -640 427 -615 346 -640 640 -640 480 -640 480 -640 358 -640 425 -640 480 -640 630 -640 427 -640 480 -640 427 -500 335 -531 640 -640 473 -640 427 -640 480 -500 375 -640 480 -640 480 -509 640 -640 431 -640 424 -640 480 -640 480 -640 480 -426 640 -500 375 -480 640 -500 327 -640 480 -500 375 -640 425 -427 640 -414 640 -639 480 -634 640 -612 612 -640 480 -640 480 -640 427 -640 480 -480 640 -640 423 -480 640 -640 426 -640 428 -640 480 -640 480 -640 459 -640 480 -427 640 -480 640 -640 427 -480 640 -640 427 -640 480 -640 480 -640 480 -640 640 -375 500 -640 480 -640 427 -640 480 -640 425 -612 612 -427 640 -483 640 -640 426 -640 419 -640 480 -428 640 -500 400 -640 480 -640 348 -427 640 -640 361 -426 640 -640 436 -333 500 -152 228 -612 612 -462 640 -640 478 -640 480 -640 480 -640 401 -640 427 -640 427 -640 427 -427 640 -640 640 -500 375 -407 640 -640 427 -343 336 -640 480 -500 352 -640 480 -640 428 -640 480 -640 427 -640 425 -354 640 -640 429 -333 500 -298 450 -640 420 -640 480 -427 640 -640 425 -640 427 -480 640 -480 640 -500 331 -500 334 -640 480 -375 500 -640 480 -640 428 -612 612 -640 640 -640 424 -640 480 -640 480 -421 640 -640 480 -390 640 -640 480 -439 640 -640 427 -427 640 -640 480 -500 247 -500 333 -480 640 -640 368 -640 428 -426 640 -480 640 -640 426 -640 403 -640 427 -640 427 -640 480 -640 428 -321 500 -500 333 -640 480 -640 480 -640 480 -413 640 -640 427 -640 427 -334 500 -467 640 -500 375 -480 640 -480 640 -433 640 -500 375 -480 640 -640 424 -640 480 -640 480 -640 480 -375 500 -640 480 -640 428 -640 480 -640 426 -386 640 -640 429 -375 500 -640 426 -640 426 -427 640 -640 480 -640 349 -640 480 -640 480 -640 424 -375 500 -640 374 -640 480 -334 500 -640 480 -640 451 -480 640 -640 430 -640 427 -500 375 -478 640 -520 373 -640 478 -640 427 -612 612 -640 441 -480 640 -640 427 -640 426 -480 640 -640 429 -480 640 -612 612 -640 480 -640 427 -640 426 -480 640 -640 525 -375 500 -640 480 -640 411 -640 428 -640 428 -640 427 -640 427 -535 640 -375 500 -640 427 -640 428 -640 426 -480 640 -640 480 -612 612 -484 500 -640 426 -640 425 -640 427 -500 371 -500 320 -640 427 -480 640 -640 480 -640 424 -640 480 -640 427 -640 301 -500 333 -640 424 -640 480 -427 640 -612 612 -332 500 -640 439 -500 415 -427 640 -640 513 -640 427 -640 426 -640 480 -324 640 -640 480 -640 480 -375 500 -640 427 -640 480 -640 480 -612 612 -640 543 -640 480 -480 640 -640 446 -640 480 -640 480 -473 640 -640 421 -640 427 -640 425 -640 427 -640 427 -640 465 -640 395 -640 446 -640 405 -640 425 -640 375 -640 425 -640 327 -640 480 -427 640 -640 480 -640 427 -500 375 -640 480 -640 480 -428 640 -640 426 -640 480 -640 427 -640 514 -500 335 -640 445 -640 360 -375 500 -640 480 -640 480 -640 480 -640 425 -432 640 -640 425 -640 512 -640 424 -640 427 -640 427 -640 480 -640 480 -640 427 -640 426 -480 640 -640 480 -640 480 -478 640 -640 480 -640 480 -500 333 -500 375 -640 427 -640 426 -500 373 -486 640 -640 496 -640 480 -640 480 -640 480 -640 426 -640 428 -640 427 -640 425 -480 640 -500 375 -640 394 -640 427 -640 428 -640 480 -478 640 -640 480 -640 480 -480 640 -640 474 -640 406 -640 640 -375 500 -640 428 -640 480 -640 480 -500 333 -640 427 -478 640 -640 427 -640 480 -500 375 -234 500 -640 198 -500 375 -640 480 -640 444 -500 375 -480 640 -640 427 -640 640 -640 449 -640 426 -640 480 -500 375 -356 500 -427 640 -375 500 -487 640 -640 427 -640 640 -640 427 -640 436 -640 427 -640 427 -640 421 -640 360 -426 640 -640 430 -640 377 -640 480 -640 480 -640 480 -500 375 -640 480 -640 426 -640 426 -640 481 -640 480 -640 427 -640 444 -640 480 -640 480 -366 640 -500 332 -640 426 -640 480 -478 640 -480 640 -640 426 -427 640 -640 640 -640 427 -480 640 -640 424 -640 430 -612 612 -427 640 -640 640 -612 612 -640 427 -640 480 -480 640 -640 480 -640 427 -640 480 -640 424 -640 480 -640 480 -640 480 -640 480 -425 640 -640 514 -640 427 -640 480 -640 480 -640 426 -500 375 -480 640 -640 425 -500 375 -640 480 -640 480 -480 640 -427 640 -640 480 -500 375 -640 551 -640 427 -640 480 -640 456 -640 480 -335 500 -500 375 -427 640 -480 640 -640 427 -500 375 -640 480 -640 480 -480 640 -500 341 -443 640 -640 395 -640 173 -480 640 -640 448 -640 427 -548 640 -640 480 -640 480 -426 640 -480 640 -480 640 -500 331 -640 427 -640 480 -447 640 -640 480 -640 350 -640 484 -500 338 -640 480 -480 640 -640 425 -500 375 -640 483 -640 359 -640 426 -335 500 -640 426 -640 480 -480 640 -640 427 -640 478 -640 428 -640 480 -640 503 -480 640 -480 640 -640 481 -640 480 -640 238 -640 480 -640 427 -500 274 -640 622 -640 480 -640 427 -375 500 -640 480 -497 640 -640 640 -640 452 -640 426 -500 401 -640 473 -640 424 -640 424 -500 333 -480 640 -640 475 -640 480 -500 400 -640 427 -640 480 -500 347 -640 426 -640 422 -640 480 -640 427 -640 427 -640 425 -433 640 -640 524 -640 453 -640 480 -640 429 -640 480 -500 374 -500 375 -640 427 -426 640 -640 428 -640 428 -640 351 -640 459 -640 480 -640 480 -640 454 -477 640 -500 334 -375 500 -640 426 -640 427 -640 480 -426 640 -640 427 -640 480 -425 640 -640 480 -500 375 -476 640 -640 426 -640 427 -640 480 -640 480 -640 480 -640 468 -640 640 -640 480 -640 426 -640 425 -559 640 -640 398 -640 640 -640 427 -612 612 -640 480 -480 640 -640 480 -612 612 -640 480 -500 332 -640 359 -640 427 -360 640 -640 640 -423 640 -500 334 -640 427 -427 640 -640 427 -640 480 -640 480 -427 640 -480 640 -640 442 -640 480 -640 480 -640 426 -612 612 -640 426 -427 640 -640 470 -427 640 -419 640 -480 640 -640 427 -500 375 -485 640 -640 480 -640 453 -640 480 -640 478 -640 427 -640 480 -640 480 -612 612 -640 480 -425 640 -640 428 -640 427 -640 480 -640 456 -576 640 -640 427 -640 427 -640 480 -640 425 -640 439 -419 640 -480 640 -375 500 -480 640 -640 427 -427 640 -480 360 -500 330 -640 360 -569 640 -640 428 -640 485 -640 496 -640 427 -640 424 -640 594 -640 427 -640 480 -480 640 -640 480 -500 375 -427 640 -640 640 -500 388 -640 428 -640 426 -640 436 -427 640 -500 375 -375 500 -640 480 -640 427 -640 427 -640 480 -500 333 -640 457 -640 426 -640 425 -480 640 -380 640 -640 327 -500 335 -640 480 -640 427 -640 480 -640 425 -434 640 -640 480 -640 480 -640 427 -450 339 -478 640 -480 640 -640 480 -482 640 -640 424 -640 426 -640 512 -612 612 -640 478 -640 480 -640 427 -640 427 -640 427 -640 480 -612 612 -640 480 -500 333 -434 500 -640 446 -640 482 -640 480 -640 480 -640 478 -500 375 -640 427 -640 427 -500 334 -425 640 -640 427 -640 427 -478 640 -640 461 -640 477 -640 425 -640 427 -500 400 -640 389 -640 426 -424 640 -640 480 -640 361 -640 478 -333 500 -640 608 -640 480 -640 480 -375 500 -640 311 -640 427 -640 427 -640 393 -640 480 -500 333 -640 639 -640 376 -640 414 -490 640 -485 640 -640 344 -640 480 -640 427 -640 466 -640 427 -480 640 -640 613 -640 480 -640 426 -640 429 -640 259 -500 333 -612 612 -640 640 -480 640 -640 480 -640 480 -640 427 -640 458 -480 640 -423 640 -500 375 -640 480 -640 480 -500 333 -480 640 -640 480 -443 640 -640 428 -640 427 -400 640 -640 480 -640 427 -500 500 -640 480 -500 333 -600 600 -640 427 -640 320 -480 640 -640 480 -640 406 -427 640 -640 427 -640 419 -640 480 -640 427 -640 429 -640 640 -640 427 -500 477 -640 480 -640 480 -640 480 -612 612 -640 429 -480 640 -640 480 -640 458 -640 426 -500 440 -640 360 -500 334 -640 480 -640 427 -640 480 -640 427 -640 428 -500 375 -640 427 -640 426 -332 500 -427 640 -427 640 -500 375 -640 427 -640 480 -640 518 -640 480 -640 427 -480 640 -640 640 -640 425 -640 427 -481 640 -640 359 -640 480 -640 360 -640 428 -640 480 -640 419 -640 480 -640 480 -640 480 -640 480 -640 426 -640 424 -640 321 -640 478 -640 482 -500 375 -640 480 -640 480 -506 640 -640 480 -640 469 -640 377 -640 359 -640 480 -500 335 -640 478 -640 427 -640 287 -640 480 -375 500 -640 480 -428 640 -456 640 -480 640 -640 493 -640 481 -480 640 -640 480 -640 428 -375 500 -640 480 -640 371 -640 427 -500 375 -427 640 -640 480 -500 375 -640 337 -468 640 -426 640 -640 484 -480 640 -640 427 -640 425 -500 424 -640 480 -640 427 -640 427 -640 427 -640 480 -640 610 -640 480 -640 480 -640 426 -463 640 -640 429 -640 427 -640 522 -640 480 -640 428 -640 480 -480 640 -640 427 -424 640 -480 640 -640 457 -500 367 -640 448 -496 640 -500 375 -480 640 -640 425 -640 425 -640 480 -500 334 -640 369 -427 640 -640 480 -375 500 -640 480 -640 480 -640 411 -333 500 -640 512 -640 427 -640 474 -640 480 -640 427 -640 478 -427 640 -640 358 -640 640 -640 472 -567 378 -640 404 -640 427 -480 640 -640 428 -640 427 -640 480 -427 640 -640 433 -640 638 -480 640 -640 470 -640 591 -640 427 -640 427 -612 612 -550 365 -640 640 -527 640 -640 427 -640 480 -640 480 -640 480 -640 640 -640 459 -480 640 -480 640 -640 427 -640 480 -640 480 -640 480 -640 427 -427 640 -640 427 -333 500 -640 480 -640 426 -640 426 -640 427 -426 640 -640 228 -612 612 -640 426 -612 612 -640 426 -640 640 -640 523 -480 640 -479 640 -640 428 -640 480 -500 375 -640 414 -500 375 -640 480 -480 640 -414 278 -424 640 -640 480 -480 640 -500 375 -612 612 -640 544 -427 640 -640 427 -640 480 -500 331 -640 429 -640 427 -640 480 -640 426 -640 426 -640 480 -640 480 -366 640 -640 427 -640 480 -640 480 -427 640 -640 589 -500 375 -640 426 -640 568 -640 395 -640 427 -640 426 -640 480 -640 480 -640 480 -640 360 -640 561 -640 480 -640 427 -640 480 -640 480 -500 375 -427 640 -425 640 -640 459 -523 640 -488 640 -478 640 -640 426 -500 333 -480 640 -612 612 -640 425 -480 640 -640 425 -640 427 -500 375 -640 552 -640 480 -434 640 -500 334 -500 375 -515 640 -640 480 -425 640 -640 198 -640 426 -640 427 -640 440 -640 427 -640 427 -500 375 -640 402 -500 500 -640 480 -640 346 -500 333 -640 458 -480 640 -640 480 -640 426 -500 375 -640 480 -427 640 -640 425 -480 640 -500 441 -640 480 -428 640 -640 480 -612 612 -640 480 -640 427 -640 501 -500 375 -640 480 -640 427 -441 640 -424 640 -427 640 -640 427 -640 480 -480 320 -500 379 -552 640 -640 426 -640 346 -640 427 -640 512 -480 640 -640 512 -612 612 -640 480 -500 375 -640 640 -375 500 -640 426 -640 359 -612 612 -612 612 -640 428 -640 480 -640 427 -640 428 -640 428 -640 263 -375 500 -640 427 -252 360 -640 425 -640 424 -500 331 -640 480 -500 331 -640 480 -640 480 -480 640 -640 428 -427 640 -640 427 -417 500 -640 480 -426 640 -640 427 -383 640 -480 640 -640 480 -640 512 -640 431 -612 612 -450 600 -640 426 -640 502 -640 480 -640 457 -640 427 -640 424 -640 480 -640 480 -640 427 -378 640 -612 612 -640 426 -640 480 -418 640 -640 426 -333 500 -640 480 -640 480 -640 432 -500 375 -500 347 -640 427 -640 451 -640 480 -640 480 -640 266 -640 426 -640 360 -500 374 -427 640 -640 427 -480 640 -640 431 -500 333 -640 480 -375 500 -640 480 -640 482 -640 480 -640 426 -640 478 -640 480 -640 424 -640 480 -640 427 -640 480 -425 640 -640 427 -640 480 -640 480 -640 424 -480 640 -640 427 -640 480 -426 640 -640 426 -640 480 -640 427 -480 640 -480 640 -480 640 -640 478 -640 480 -640 480 -640 480 -640 480 -640 480 -640 426 -640 480 -500 333 -640 427 -640 427 -500 333 -640 427 -480 640 -480 640 -640 480 -428 640 -640 480 -500 334 -640 347 -640 442 -640 480 -640 480 -640 427 -640 411 -425 640 -640 427 -480 640 -640 427 -640 480 -640 480 -500 387 -640 480 -480 640 -500 332 -453 500 -480 640 -640 480 -640 427 -500 334 -640 427 -500 500 -640 480 -500 375 -640 428 -640 640 -640 424 -500 376 -427 640 -640 427 -640 427 -640 427 -640 480 -640 480 -500 375 -640 422 -640 486 -640 428 -500 322 -500 375 -640 480 -640 513 -427 640 -640 425 -640 480 -640 450 -640 427 -640 480 -640 480 -640 480 -500 332 -640 421 -640 480 -640 426 -640 427 -640 424 -640 428 -640 480 -640 480 -640 480 -427 640 -640 640 -640 480 -640 359 -640 448 -374 500 -425 640 -259 194 -640 428 -640 427 -640 534 -640 480 -640 480 -640 346 -500 375 -425 640 -426 640 -640 480 -640 480 -640 480 -400 640 -640 480 -640 427 -640 427 -419 640 -640 427 -640 614 -500 375 -640 457 -640 428 -640 427 -500 375 -640 483 -500 375 -640 426 -640 388 -640 426 -640 480 -500 341 -640 427 -640 480 -640 425 -500 375 -640 480 -640 427 -640 355 -640 480 -427 640 -500 375 -640 480 -500 400 -401 640 -640 480 -640 426 -640 427 -640 427 -640 551 -640 480 -640 428 -428 640 -427 640 -640 427 -640 480 -426 640 -459 640 -480 640 -640 480 -640 424 -640 480 -333 500 -482 640 -640 480 -640 480 -640 480 -640 360 -640 426 -512 640 -427 640 -375 500 -375 500 -640 480 -640 427 -640 599 -640 454 -456 640 -332 500 -640 426 -640 436 -426 640 -640 480 -480 640 -640 480 -612 612 -640 480 -427 640 -500 334 -640 480 -640 480 -640 480 -640 480 -640 445 -500 375 -640 427 -640 480 -500 375 -640 445 -443 640 -480 640 -640 428 -640 427 -640 426 -512 640 -640 427 -640 374 -500 332 -375 500 -640 480 -640 480 -500 383 -640 427 -500 333 -500 375 -640 535 -640 426 -640 480 -640 425 -640 480 -420 640 -427 640 -480 640 -640 426 -426 640 -500 375 -640 480 -500 333 -480 640 -640 480 -425 640 -640 480 -640 480 -640 422 -640 425 -640 480 -612 612 -500 333 -640 639 -640 429 -500 375 -427 640 -453 640 -500 261 -500 333 -640 478 -425 640 -612 612 -428 640 -640 426 -480 640 -640 331 -640 510 -500 333 -640 427 -640 427 -640 480 -640 376 -640 478 -500 375 -640 427 -640 409 -481 640 -431 640 -640 480 -640 480 -640 480 -426 640 -640 436 -640 534 -640 385 -640 426 -640 480 -367 415 -375 500 -640 430 -640 480 -640 446 -640 480 -640 438 -640 428 -640 480 -500 375 -640 427 -640 361 -640 427 -640 468 -640 480 -427 640 -640 480 -640 425 -604 402 -640 426 -374 500 -640 318 -470 640 -640 359 -640 427 -640 540 -640 427 -457 640 -640 480 -640 360 -640 478 -640 480 -640 426 -450 600 -500 442 -640 640 -640 445 -640 480 -640 425 -640 514 -640 478 -426 640 -640 424 -640 425 -360 640 -640 306 -640 512 -640 480 -500 375 -478 640 -640 441 -396 500 -640 375 -594 445 -640 427 -640 480 -640 425 -640 480 -640 427 -640 426 -640 480 -640 426 -640 426 -640 427 -500 375 -480 640 -640 359 -612 612 -640 480 -640 480 -640 480 -500 310 -612 612 -500 471 -640 427 -640 427 -640 372 -640 427 -640 412 -481 640 -640 293 -500 334 -640 424 -500 375 -480 640 -640 512 -480 640 -612 612 -640 468 -640 424 -333 500 -612 612 -424 640 -500 375 -640 480 -500 333 -425 640 -640 426 -640 480 -480 640 -640 427 -480 640 -640 427 -640 480 -640 384 -640 439 -480 640 -426 640 -612 612 -640 303 -640 480 -640 384 -640 480 -640 427 -500 375 -640 480 -640 427 -640 480 -640 491 -640 430 -640 480 -379 640 -640 480 -480 640 -500 375 -640 530 -640 427 -640 456 -515 640 -640 480 -500 334 -640 480 -640 437 -640 480 -480 640 -640 480 -356 500 -640 478 -640 427 -640 427 -428 640 -480 640 -480 640 -480 640 -640 480 -640 425 -640 408 -640 309 -640 226 -359 640 -480 640 -640 427 -640 471 -480 640 -500 375 -640 426 -640 425 -640 498 -640 360 -480 640 -437 500 -640 427 -375 500 -500 344 -480 640 -640 473 -640 426 -640 480 -640 431 -640 273 -640 427 -640 427 -640 427 -500 375 -640 480 -480 640 -640 427 -640 427 -640 639 -500 375 -526 640 -469 640 -500 345 -640 480 -612 612 -480 640 -480 640 -640 534 -320 320 -333 500 -336 500 -640 426 -640 441 -640 612 -640 425 -500 375 -640 480 -640 480 -471 640 -480 640 -500 375 -640 480 -640 480 -640 480 -640 480 -640 480 -341 640 -640 480 -480 640 -480 640 -640 426 -640 448 -612 612 -353 500 -480 640 -499 640 -640 373 -640 393 -640 444 -640 427 -640 360 -500 348 -500 375 -640 480 -640 640 -640 480 -640 480 -500 375 -441 640 -493 640 -640 427 -640 480 -500 333 -640 481 -640 372 -640 453 -640 427 -640 480 -500 357 -640 427 -640 480 -640 327 -612 612 -424 640 -640 359 -640 472 -640 428 -640 480 -640 320 -425 640 -640 480 -612 612 -480 640 -480 640 -375 500 -480 640 -427 640 -640 427 -425 319 -640 480 -640 427 -640 425 -640 480 -640 425 -640 425 -640 427 -640 427 -500 334 -640 426 -640 427 -640 480 -640 480 -640 444 -480 640 -640 554 -640 480 -612 612 -640 428 -500 375 -640 480 -640 427 -640 428 -500 354 -427 640 -500 333 -414 640 -480 640 -640 488 -640 480 -594 640 -612 612 -640 361 -640 480 -467 640 -640 526 -640 480 -500 491 -640 480 -400 640 -640 569 -480 640 -640 426 -640 480 -640 427 -480 640 -640 480 -500 375 -640 426 -427 640 -640 427 -500 375 -640 480 -480 640 -640 426 -375 500 -640 480 -640 369 -640 428 -426 640 -480 640 -640 426 -640 480 -480 640 -425 640 -640 425 -427 640 -640 435 -640 507 -640 480 -500 333 -640 426 -640 473 -612 612 -640 427 -640 427 -500 375 -640 640 -375 500 -640 480 -640 428 -427 640 -639 640 -480 640 -640 423 -640 391 -640 480 -640 480 -640 389 -478 640 -640 427 -612 612 -463 640 -640 480 -480 640 -427 640 -640 480 -480 640 -481 640 -640 640 -500 338 -640 480 -640 480 -640 360 -500 375 -640 480 -500 375 -640 426 -640 479 -500 375 -640 493 -640 486 -481 640 -486 381 -500 375 -640 428 -427 640 -640 456 -497 640 -426 640 -640 427 -500 375 -640 429 -640 456 -640 360 -640 478 -428 640 -480 640 -640 480 -500 483 -640 426 -381 640 -640 480 -640 443 -640 480 -640 428 -640 424 -640 480 -640 407 -640 426 -640 480 -480 640 -640 480 -640 428 -640 359 -426 640 -640 427 -640 480 -640 428 -427 640 -640 481 -375 500 -573 640 -500 333 -640 428 -640 476 -612 612 -640 480 -640 480 -500 375 -426 640 -375 500 -640 480 -640 480 -640 359 -480 640 -637 640 -640 423 -640 394 -640 480 -500 375 -612 612 -640 360 -640 426 -640 427 -640 640 -640 480 -332 500 -640 427 -640 480 -333 500 -640 426 -640 541 -640 427 -640 640 -640 480 -640 426 -450 338 -640 428 -640 428 -640 354 -640 524 -480 640 -480 640 -640 480 -640 424 -500 332 -640 426 -640 480 -500 375 -480 640 -640 351 -640 480 -640 480 -531 640 -480 640 -375 500 -640 427 -427 640 -612 612 -427 640 -640 441 -640 480 -638 640 -640 426 -488 640 -424 640 -500 400 -640 426 -640 427 -480 640 -333 500 -640 579 -640 427 -640 320 -360 640 -640 427 -640 480 -640 480 -500 332 -640 427 -480 640 -640 467 -635 640 -640 427 -497 640 -640 480 -427 640 -640 428 -424 640 -640 480 -427 640 -478 640 -480 640 -640 424 -427 640 -640 480 -640 480 -640 426 -427 640 -500 375 -640 432 -640 479 -640 360 -640 427 -640 424 -640 480 -640 480 -478 640 -427 640 -640 480 -428 640 -500 375 -640 427 -375 500 -640 429 -640 427 -640 426 -427 640 -640 620 -375 500 -438 351 -640 427 -575 640 -640 480 -640 428 -640 480 -640 480 -640 480 -640 480 -480 640 -500 342 -429 640 -480 640 -640 394 -640 480 -640 298 -427 640 -500 378 -640 511 -500 333 -640 480 -334 500 -640 480 -640 423 -640 426 -640 427 -640 480 -640 388 -640 444 -640 531 -453 640 -500 375 -640 234 -500 333 -426 640 -640 428 -640 480 -640 428 -480 640 -640 472 -480 640 -375 500 -640 480 -480 640 -500 332 -640 427 -640 398 -640 425 -640 478 -640 427 -427 640 -480 640 -500 334 -640 480 -612 612 -640 480 -640 427 -427 640 -427 640 -333 500 -640 480 -640 480 -500 375 -640 480 -333 500 -640 480 -375 500 -640 625 -500 333 -500 375 -500 375 -480 640 -640 480 -500 333 -640 371 -640 481 -480 640 -480 640 -640 480 -427 640 -427 640 -640 427 -612 612 -500 330 -430 500 -500 333 -640 480 -640 425 -480 640 -640 480 -640 405 -640 425 -640 427 -640 427 -640 467 -640 478 -427 640 -640 480 -333 500 -640 426 -500 375 -640 549 -480 640 -640 427 -640 427 -640 480 -640 480 -640 426 -640 640 -640 480 -427 640 -500 375 -480 640 -640 500 -640 425 -640 320 -480 640 -500 376 -640 480 -479 640 -640 504 -480 640 -480 640 -500 375 -640 640 -640 425 -640 480 -640 428 -426 640 -640 427 -640 480 -640 424 -640 480 -640 640 -640 360 -640 480 -640 640 -500 375 -500 384 -640 426 -500 334 -640 480 -640 480 -640 427 -400 300 -480 640 -640 427 -612 612 -640 429 -640 424 -640 557 -640 427 -427 640 -640 440 -640 480 -640 321 -640 427 -500 375 -640 426 -500 375 -480 640 -640 391 -500 375 -640 480 -480 640 -640 425 -640 427 -429 640 -640 427 -640 425 -640 428 -500 374 -640 425 -640 425 -640 477 -640 427 -375 500 -640 480 -640 457 -640 383 -480 640 -425 640 -426 640 -640 480 -427 640 -640 466 -640 427 -640 428 -640 542 -480 640 -640 480 -640 480 -640 480 -640 640 -480 640 -640 479 -480 640 -340 505 -500 500 -640 454 -500 375 -640 427 -480 640 -640 480 -480 640 -640 427 -333 500 -640 480 -408 640 -640 480 -640 427 -640 480 -480 640 -225 300 -640 424 -480 640 -375 500 -640 480 -640 426 -640 480 -427 640 -500 375 -640 463 -640 433 -427 640 -612 612 -612 612 -640 425 -640 480 -640 480 -640 512 -640 353 -500 375 -640 480 -500 375 -640 427 -480 640 -480 640 -640 480 -500 375 -640 640 -500 375 -640 481 -500 375 -424 640 -640 480 -640 480 -480 640 -640 396 -637 419 -640 480 -640 480 -640 427 -612 612 -427 640 -428 640 -331 500 -640 478 -640 429 -640 360 -500 375 -640 428 -640 480 -640 480 -453 500 -640 427 -640 425 -480 640 -385 308 -640 479 -612 612 -424 640 -640 423 -640 480 -640 427 -640 640 -640 428 -640 480 -640 427 -640 427 -640 359 -480 640 -640 480 -612 612 -640 428 -640 427 -640 480 -640 397 -500 375 -640 480 -640 480 -640 427 -500 332 -640 480 -640 431 -640 480 -640 480 -640 486 -500 375 -400 300 -480 640 -640 480 -640 427 -640 427 -640 427 -640 427 -640 480 -285 500 -480 640 -500 333 -640 416 -640 427 -640 427 -458 640 -640 480 -640 427 -500 375 -480 343 -500 500 -428 640 -640 491 -640 426 -640 480 -640 424 -480 640 -640 624 -612 612 -640 480 -640 480 -640 427 -640 480 -640 640 -500 314 -640 359 -640 457 -640 427 -480 640 -472 640 -600 600 -640 427 -640 421 -640 427 -640 480 -612 612 -500 333 -640 427 -640 480 -640 480 -640 640 -640 480 -640 480 -640 538 -640 414 -427 640 -640 480 -640 480 -640 427 -640 427 -640 492 -640 360 -640 457 -640 480 -640 427 -640 480 -500 342 -480 640 -424 640 -640 480 -640 480 -640 426 -640 640 -640 480 -480 640 -640 480 -640 425 -427 640 -500 375 -427 640 -427 640 -500 375 -640 480 -640 426 -480 640 -427 640 -640 424 -500 333 -640 517 -427 640 -529 640 -640 427 -440 640 -480 640 -480 640 -640 426 -640 427 -612 612 -640 480 -640 478 -640 480 -640 426 -640 295 -640 480 -640 480 -500 334 -500 375 -640 423 -480 640 -640 480 -480 640 -640 513 -640 427 -640 481 -640 393 -640 480 -427 640 -640 424 -427 640 -640 451 -640 383 -640 425 -427 640 -640 480 -480 640 -640 427 -500 333 -427 640 -640 463 -640 428 -640 480 -640 426 -640 449 -640 427 -428 640 -640 480 -333 500 -427 640 -640 426 -640 426 -640 427 -640 424 -640 427 -402 600 -640 482 -640 427 -500 333 -640 480 -640 480 -640 426 -640 457 -640 480 -640 423 -640 480 -640 426 -427 640 -640 480 -500 333 -640 426 -500 375 -640 480 -640 360 -427 640 -640 480 -500 375 -640 259 -640 480 -640 480 -360 640 -480 640 -483 640 -640 480 -640 465 -640 480 -640 480 -424 640 -500 335 -640 360 -640 429 -640 457 -360 640 -640 480 -640 427 -640 426 -640 428 -426 640 -466 640 -640 425 -500 375 -640 426 -640 426 -333 500 -640 455 -640 425 -640 494 -500 332 -640 428 -640 480 -640 480 -612 612 -640 427 -612 612 -383 640 -640 480 -640 427 -334 500 -640 640 -500 335 -640 480 -480 640 -640 480 -640 480 -640 427 -612 612 -640 418 -375 500 -640 480 -640 480 -640 480 -425 640 -640 480 -640 480 -500 333 -640 480 -640 480 -480 640 -640 480 -640 426 -640 478 -640 428 -500 333 -640 631 -640 480 -375 500 -640 426 -578 640 -640 473 -640 415 -427 640 -427 640 -479 640 -640 480 -426 640 -612 612 -500 375 -640 480 -640 489 -640 412 -640 480 -383 640 -640 360 -427 640 -500 333 -640 427 -640 480 -426 640 -640 425 -640 509 -640 383 -640 480 -640 427 -640 480 -640 427 -640 480 -640 480 -480 640 -449 640 -640 426 -500 333 -640 427 -640 360 -480 640 -640 425 -400 500 -640 427 -640 480 -640 428 -640 431 -640 480 -500 400 -640 480 -640 480 -640 480 -640 480 -640 426 -640 361 -480 640 -480 640 -640 480 -640 480 -640 469 -500 333 -500 332 -640 480 -346 640 -640 491 -427 640 -640 480 -640 435 -640 426 -640 427 -640 427 -500 375 -426 640 -480 640 -480 640 -329 500 -640 478 -213 320 -427 640 -640 426 -640 480 -640 426 -500 375 -640 425 -640 639 -309 640 -640 427 -640 640 -500 336 -640 640 -640 480 -640 480 -333 500 -640 480 -431 640 -640 480 -640 480 -480 640 -640 426 -640 427 -500 298 -640 426 -640 480 -375 500 -640 631 -640 427 -640 480 -640 480 -640 428 -634 354 -500 375 -428 640 -640 640 -640 480 -640 480 -640 513 -640 425 -640 426 -640 411 -640 478 -640 480 -640 426 -640 480 -640 480 -333 500 -500 284 -375 500 -640 383 -640 427 -640 353 -640 426 -500 380 -640 480 -640 480 -640 427 -640 429 -480 640 -640 427 -500 334 -213 320 -500 333 -640 640 -612 612 -480 640 -640 480 -640 290 -640 427 -640 640 -480 640 -640 480 -640 427 -469 640 -427 640 -500 451 -640 480 -500 366 -640 428 -640 427 -640 480 -612 612 -640 480 -500 375 -399 640 -500 332 -640 327 -500 396 -640 433 -640 427 -427 640 -640 480 -427 640 -427 640 -640 427 -480 640 -640 427 -640 480 -426 640 -480 640 -640 323 -640 457 -640 426 -640 478 -640 446 -426 640 -428 640 -640 480 -427 640 -640 432 -640 359 -640 482 -640 425 -314 188 -355 640 -640 427 -500 355 -500 338 -640 480 -429 640 -500 332 -640 360 -500 281 -640 427 -500 282 -640 428 -500 379 -640 480 -640 427 -640 426 -335 500 -640 456 -640 396 -640 424 -640 480 -640 427 -484 640 -427 640 -640 480 -640 428 -640 428 -640 432 -612 612 -332 500 -640 427 -480 640 -640 480 -366 500 -480 640 -640 508 -640 424 -640 425 -640 425 -480 640 -480 640 -500 375 -640 549 -640 427 -640 424 -500 375 -640 480 -640 470 -640 480 -640 480 -480 640 -640 427 -478 640 -640 360 -427 640 -640 440 -426 640 -640 426 -500 333 -612 612 -640 480 -503 640 -640 427 -480 640 -640 449 -500 479 -640 480 -480 640 -640 427 -640 426 -640 427 -640 425 -640 415 -640 427 -640 427 -640 428 -486 640 -640 486 -640 419 -640 424 -640 480 -640 369 -500 375 -427 640 -640 424 -500 347 -640 615 -640 480 -500 375 -500 375 -640 480 -640 480 -640 480 -427 640 -640 428 -500 333 -640 416 -500 375 -419 640 -640 425 -640 480 -480 640 -480 640 -424 640 -427 640 -640 426 -480 640 -640 480 -480 640 -640 425 -640 360 -640 427 -640 424 -640 480 -640 427 -640 480 -640 427 -640 480 -640 425 -640 428 -640 480 -640 480 -640 478 -640 480 -640 428 -612 612 -640 636 -500 333 -480 640 -640 437 -428 640 -612 612 -640 459 -640 480 -640 480 -640 480 -427 640 -640 480 -640 507 -640 480 -640 427 -640 427 -640 427 -640 480 -640 457 -640 480 -500 375 -640 383 -500 332 -640 480 -375 500 -640 427 -426 640 -640 480 -640 427 -640 480 -640 427 -375 500 -640 480 -480 640 -478 640 -375 500 -480 640 -500 375 -640 480 -427 640 -640 480 -640 427 -334 500 -500 375 -640 361 -511 640 -500 334 -640 480 -640 480 -640 640 -640 480 -500 375 -640 480 -640 480 -640 426 -640 425 -640 524 -479 640 -640 480 -640 480 -640 427 -480 640 -640 480 -640 428 -500 375 -606 640 -480 640 -640 426 -500 392 -640 451 -640 485 -427 640 -640 428 -640 457 -640 424 -640 480 -640 427 -493 640 -640 398 -500 333 -427 640 -640 427 -640 432 -640 480 -640 480 -640 427 -640 361 -640 425 -500 375 -640 438 -432 288 -612 612 -640 480 -500 376 -480 640 -640 479 -400 640 -640 426 -500 377 -375 500 -640 424 -443 640 -640 480 -640 427 -427 640 -480 640 -626 640 -640 550 -500 335 -550 640 -640 428 -452 640 -500 350 -499 500 -640 427 -569 640 -640 480 -640 425 -500 334 -640 420 -640 427 -640 441 -640 480 -500 500 -640 480 -640 598 -333 500 -480 640 -427 640 -640 480 -640 480 -612 612 -500 335 -640 480 -640 640 -600 450 -427 640 -640 400 -507 640 -640 480 -500 375 -500 332 -640 480 -510 640 -640 480 -640 429 -480 640 -500 333 -640 427 -640 346 -281 500 -640 480 -427 640 -640 454 -640 439 -375 500 -640 427 -448 336 -640 533 -640 424 -480 640 -640 480 -640 427 -640 425 -326 640 -640 532 -640 480 -640 480 -640 480 -640 383 -480 640 -640 480 -640 427 -640 427 -640 480 -480 640 -640 384 -480 640 -640 456 -500 375 -640 480 -640 428 -427 640 -640 541 -500 333 -640 436 -640 482 -640 427 -640 537 -640 426 -480 356 -640 427 -640 480 -640 427 -640 480 -480 640 -640 424 -640 427 -640 480 -640 427 -640 360 -500 375 -640 427 -560 600 -640 427 -533 640 -477 640 -640 424 -640 458 -640 427 -480 640 -640 428 -640 427 -399 500 -640 640 -480 640 -478 640 -640 480 -640 480 -640 427 -612 612 -480 640 -640 470 -640 425 -640 431 -425 640 -640 427 -640 427 -640 463 -427 640 -640 480 -640 427 -640 438 -480 640 -640 427 -640 462 -640 442 -640 480 -429 640 -640 427 -640 480 -500 375 -612 612 -640 640 -640 387 -427 640 -640 320 -640 427 -640 480 -640 427 -480 640 -640 429 -480 640 -480 640 -335 500 -640 425 -640 425 -500 375 -640 480 -640 640 -427 640 -640 480 -640 480 -640 480 -453 640 -640 478 -640 425 -500 379 -640 427 -640 480 -500 346 -640 547 -427 640 -399 600 -640 480 -640 327 -640 427 -640 427 -640 427 -640 427 -640 480 -640 427 -640 283 -640 480 -640 480 -435 640 -424 640 -600 400 -640 427 -640 354 -640 556 -612 612 -480 640 -640 480 -640 511 -640 480 -480 640 -640 428 -640 271 -640 480 -640 480 -640 425 -640 383 -428 640 -640 480 -480 640 -640 427 -315 352 -640 480 -426 640 -480 640 -640 427 -640 401 -640 480 -640 480 -640 426 -640 427 -640 427 -640 480 -640 480 -640 480 -640 480 -640 424 -640 513 -459 640 -427 640 -640 640 -640 427 -640 478 -640 416 -640 427 -480 640 -640 423 -480 640 -640 466 -640 544 -640 437 -375 500 -640 492 -375 500 -640 424 -640 370 -640 513 -640 429 -427 640 -640 427 -426 640 -428 640 -640 426 -640 640 -500 384 -627 640 -640 427 -640 427 -640 427 -428 640 -640 512 -640 480 -640 427 -640 480 -500 376 -640 428 -640 384 -480 640 -640 478 -640 480 -640 427 -426 640 -563 640 -640 480 -640 430 -500 333 -640 633 -640 426 -426 640 -640 427 -480 640 -640 638 -640 400 -640 480 -640 480 -640 427 -640 424 -640 427 -640 427 -640 480 -480 640 -640 450 -612 612 -640 483 -640 480 -640 480 -640 427 -450 412 -480 640 -640 443 -640 480 -640 480 -640 434 -640 425 -640 427 -640 360 -640 427 -480 640 -640 378 -640 480 -480 640 -640 480 -640 480 -640 426 -640 480 -640 384 -640 427 -640 480 -640 427 -640 480 -640 360 -640 532 -640 360 -640 556 -640 427 -640 480 -528 640 -640 480 -500 333 -640 427 -426 640 -640 425 -640 428 -425 640 -640 480 -617 640 -418 500 -640 480 -427 640 -640 457 -427 640 -640 480 -374 500 -500 400 -640 480 -484 640 -640 480 -640 431 -640 426 -640 428 -500 375 -640 480 -640 429 -640 427 -640 427 -640 427 -640 427 -480 640 -436 640 -500 333 -479 640 -640 480 -612 612 -640 480 -640 427 -480 640 -640 427 -500 481 -640 451 -640 336 -640 335 -640 480 -500 375 -640 427 -640 480 -640 428 -640 428 -640 501 -640 427 -640 480 -480 640 -427 640 -640 427 -640 480 -640 427 -640 395 -426 640 -427 640 -640 480 -640 426 -640 480 -480 640 -640 426 -640 383 -640 480 -609 640 -640 387 -448 336 -640 457 -640 426 -375 500 -423 640 -480 640 -500 334 -375 500 -640 353 -640 480 -375 500 -640 405 -500 333 -640 480 -427 640 -506 373 -500 375 -640 480 -500 375 -640 480 -640 413 -640 426 -640 427 -640 480 -640 427 -640 480 -640 437 -640 350 -480 640 -640 426 -640 513 -640 425 -480 640 -500 375 -640 426 -640 493 -640 425 -480 640 -500 493 -640 427 -640 480 -483 640 -640 480 -640 480 -500 375 -480 640 -640 378 -500 335 -500 360 -640 543 -640 480 -333 500 -640 480 -640 428 -640 480 -333 500 -640 427 -640 367 -640 427 -640 480 -640 480 -640 480 -640 458 -426 640 -640 480 -480 640 -640 480 -640 480 -640 427 -640 436 -640 451 -500 375 -640 480 -640 427 -640 480 -640 394 -640 480 -500 332 -640 439 -480 640 -500 400 -640 519 -640 480 -640 478 -640 456 -640 428 -640 480 -427 640 -500 375 -250 640 -640 480 -480 640 -640 512 -640 480 -288 352 -428 640 -480 640 -375 500 -640 480 -640 424 -640 480 -640 462 -640 480 -640 428 -640 481 -500 375 -640 480 -640 477 -640 427 -496 640 -513 640 -640 427 -640 371 -640 428 -383 640 -640 480 -375 500 -427 640 -640 427 -480 640 -427 640 -640 480 -640 481 -640 480 -640 425 -640 480 -640 458 -640 427 -640 480 -640 480 -640 480 -640 405 -640 480 -640 428 -320 240 -640 480 -479 640 -640 480 -640 480 -640 428 -480 640 -640 427 -460 640 -612 612 -640 439 -640 480 -612 612 -480 640 -640 425 -640 427 -640 480 -640 480 -500 375 -427 640 -380 285 -375 500 -640 427 -640 480 -640 426 -640 427 -640 480 -640 480 -640 490 -500 329 -612 612 -640 480 -425 640 -483 640 -500 333 -640 427 -640 427 -640 480 -640 479 -640 427 -480 640 -612 612 -433 640 -640 428 -479 640 -520 480 -427 640 -640 517 -640 428 -604 640 -500 375 -640 480 -500 333 -640 480 -427 640 -640 480 -640 478 -375 500 -640 427 -640 427 -425 640 -427 640 -426 640 -428 640 -640 427 -640 444 -436 640 -480 640 -551 640 -640 478 -500 327 -640 480 -480 640 -480 640 -640 427 -640 480 -500 377 -326 500 -640 480 -480 640 -640 424 -427 640 -640 480 -640 480 -424 640 -640 480 -640 427 -640 640 -640 429 -640 480 -480 640 -427 640 -640 427 -640 480 -640 480 -480 640 -640 359 -423 640 -640 427 -640 429 -640 480 -640 480 -500 375 -640 427 -453 640 -640 480 -640 427 -640 480 -500 375 -480 640 -640 577 -500 375 -500 332 -640 427 -640 480 -640 480 -426 640 -640 480 -622 640 -640 516 -426 640 -427 640 -640 428 -480 640 -640 359 -640 429 -640 426 -640 573 -480 640 -640 428 -640 360 -288 384 -480 640 -427 640 -500 375 -427 640 -640 480 -640 426 -640 427 -640 480 -500 333 -640 427 -640 480 -640 424 -640 424 -424 640 -640 426 -640 529 -640 424 -640 427 -640 480 -500 479 -500 332 -612 612 -427 640 -500 375 -640 480 -640 480 -375 500 -600 450 -640 480 -375 500 -480 640 -640 480 -500 375 -640 366 -640 640 -334 500 -640 426 -375 500 -640 480 -640 360 -500 375 -640 425 -482 640 -375 500 -640 480 -481 640 -640 424 -640 426 -640 480 -375 500 -427 640 -640 478 -640 594 -640 480 -640 372 -640 493 -375 500 -640 480 -640 480 -427 640 -640 480 -480 640 -450 469 -640 427 -640 480 -640 480 -640 480 -568 640 -480 640 -480 640 -480 640 -368 640 -640 429 -640 427 -500 333 -612 612 -640 480 -640 429 -500 375 -640 427 -640 428 -640 427 -640 425 -500 335 -500 375 -500 332 -640 425 -500 478 -640 427 -640 427 -427 640 -640 428 -480 640 -428 640 -640 480 -640 596 -640 427 -640 480 -640 427 -640 480 -640 480 -480 640 -640 418 -640 480 -382 500 -640 423 -500 425 -500 375 -640 425 -640 521 -640 427 -360 640 -640 480 -640 427 -640 484 -640 426 -640 481 -640 424 -426 640 -480 640 -427 640 -640 480 -500 343 -640 471 -623 640 -480 640 -640 480 -431 640 -640 503 -640 480 -640 349 -640 426 -640 480 -640 424 -427 640 -640 480 -640 427 -640 499 -640 480 -500 375 -640 480 -640 458 -333 500 -640 384 -640 426 -640 427 -640 512 -640 480 -640 480 -480 640 -640 428 -640 483 -640 425 -640 427 -640 480 -427 640 -640 480 -640 468 -500 336 -480 640 -640 425 -480 640 -640 509 -640 427 -640 428 -640 528 -640 480 -640 480 -480 640 -640 512 -500 375 -640 480 -640 480 -640 480 -480 640 -500 375 -480 640 -480 640 -640 480 -640 320 -640 425 -333 500 -612 612 -403 500 -640 414 -640 480 -640 427 -480 640 -640 428 -640 428 -640 426 -327 293 -640 579 -640 640 -500 333 -640 427 -480 640 -427 640 -640 478 -640 480 -640 426 -640 480 -427 640 -388 640 -640 480 -568 640 -640 424 -640 415 -500 375 -500 375 -640 427 -640 426 -320 500 -400 300 -492 640 -427 640 -640 427 -427 640 -640 480 -500 337 -480 640 -428 640 -480 640 -640 480 -480 640 -640 428 -640 461 -640 480 -640 480 -640 496 -427 640 -640 480 -500 321 -640 480 -640 427 -360 640 -480 640 -640 448 -640 480 -640 438 -640 427 -333 500 -640 427 -500 430 -640 425 -640 480 -640 457 -640 424 -640 480 -640 427 -640 480 -640 428 -640 484 -640 383 -520 363 -640 480 -500 375 -612 612 -640 427 -500 333 -500 311 -480 640 -640 480 -612 612 -500 375 -640 426 -640 480 -480 640 -375 500 -419 640 -640 454 -375 500 -640 426 -640 426 -480 640 -640 427 -640 480 -640 360 -640 512 -480 484 -640 456 -640 426 -640 480 -480 640 -640 483 -640 427 -640 425 -640 480 -640 480 -640 383 -640 480 -640 480 -640 426 -640 480 -640 427 -640 427 -480 640 -424 640 -640 480 -640 480 -640 480 -640 480 -640 426 -640 509 -640 640 -640 426 -480 640 -640 426 -480 640 -640 480 -640 428 -640 428 -480 640 -640 427 -640 480 -640 427 -640 429 -424 640 -640 480 -640 480 -640 427 -640 480 -429 640 -640 539 -640 479 -451 640 -640 480 -640 427 -640 480 -640 480 -640 465 -640 358 -640 428 -640 427 -500 391 -640 629 -331 500 -640 424 -500 333 -408 640 -640 480 -640 424 -640 410 -612 612 -500 375 -500 375 -480 640 -427 640 -480 640 -640 480 -640 427 -500 375 -640 480 -534 640 -640 424 -640 480 -640 480 -640 320 -427 640 -640 480 -500 375 -640 428 -480 640 -500 375 -320 240 -427 640 -334 500 -500 330 -517 640 -640 480 -640 480 -640 480 -640 426 -500 375 -640 425 -640 495 -640 480 -640 480 -640 525 -640 428 -500 375 -640 484 -640 481 -640 480 -640 433 -500 370 -640 427 -640 427 -640 431 -640 429 -500 416 -640 524 -465 640 -640 480 -480 640 -416 500 -612 612 -495 640 -480 640 -640 427 -478 640 -448 287 -612 612 -480 640 -640 480 -640 478 -640 425 -640 426 -640 424 -500 375 -640 480 -446 640 -600 450 -640 398 -428 640 -640 480 -640 480 -428 640 -428 640 -640 426 -640 427 -640 480 -640 480 -480 640 -500 375 -640 434 -640 427 -640 480 -640 427 -500 375 -640 480 -640 480 -483 640 -427 640 -427 640 -640 480 -640 439 -505 640 -375 500 -461 640 -480 640 -640 480 -640 480 -480 640 -480 640 -375 500 -640 480 -640 512 -640 424 -500 375 -500 375 -359 640 -640 462 -640 427 -640 427 -640 426 -379 500 -451 640 -419 640 -640 427 -640 480 -500 205 -500 333 -640 480 -480 640 -640 427 -375 500 -640 480 -640 427 -640 480 -640 425 -500 375 -640 431 -640 484 -640 427 -480 640 -640 427 -471 640 -640 480 -640 488 -640 480 -425 640 -640 427 -362 480 -640 481 -428 640 -480 640 -640 480 -456 640 -640 358 -500 333 -640 427 -640 516 -640 480 -375 500 -640 427 -388 640 -640 427 -640 424 -480 640 -640 570 -640 427 -500 333 -640 427 -640 427 -426 640 -640 480 -640 480 -640 640 -640 480 -334 500 -640 426 -500 375 -640 424 -640 425 -640 480 -500 336 -640 468 -640 349 -640 480 -640 421 -480 640 -375 500 -640 480 -612 612 -640 428 -640 480 -640 478 -640 427 -640 427 -480 640 -640 426 -640 383 -480 640 -640 491 -640 426 -640 480 -640 480 -500 333 -427 640 -640 481 -640 427 -640 426 -640 428 -640 419 -640 548 -640 480 -640 431 -640 631 -375 500 -640 426 -481 640 -640 427 -640 426 -333 500 -640 428 -532 500 -375 500 -640 314 -480 640 -640 480 -640 480 -500 341 -640 425 -640 480 -640 478 -640 427 -500 326 -640 427 -640 480 -640 478 -640 427 -640 447 -541 640 -640 427 -640 427 -640 416 -640 426 -640 427 -640 470 -480 640 -640 425 -640 480 -640 463 -640 427 -480 640 -612 612 -640 480 -640 480 -500 375 -480 640 -640 480 -640 427 -640 427 -500 333 -478 640 -640 425 -426 640 -640 458 -640 360 -640 425 -332 500 -640 425 -640 427 -480 287 -480 640 -480 640 -640 480 -500 376 -500 335 -500 420 -640 480 -640 425 -640 426 -515 640 -640 427 -500 500 -640 426 -481 640 -375 500 -500 375 -640 278 -640 428 -640 403 -640 426 -640 445 -640 492 -427 640 -480 640 -640 426 -640 480 -640 480 -640 581 -640 360 -640 427 -640 477 -612 612 -500 333 -640 426 -640 480 -640 480 -640 480 -500 375 -425 640 -480 640 -640 480 -550 367 -480 640 -640 480 -640 427 -640 425 -640 425 -640 425 -640 480 -640 427 -640 360 -640 419 -480 640 -640 427 -640 424 -640 480 -640 379 -640 413 -640 425 -640 427 -612 612 -424 640 -640 425 -640 411 -640 427 -640 426 -480 640 -480 640 -640 480 -640 426 -640 640 -640 424 -640 480 -640 426 -640 447 -427 640 -377 500 -537 381 -640 427 -500 462 -640 386 -500 332 -640 425 -640 513 -640 441 -640 434 -640 427 -612 612 -640 427 -640 446 -640 424 -640 426 -640 422 -640 538 -640 426 -640 480 -640 640 -640 427 -640 427 -640 426 -640 428 -419 640 -640 427 -637 640 -640 427 -500 500 -640 445 -500 375 -640 456 -640 427 -640 480 -640 480 -500 375 -488 432 -457 640 -500 334 -640 426 -640 427 -640 428 -640 480 -640 480 -640 427 -640 427 -640 480 -640 478 -640 478 -324 487 -640 480 -640 427 -333 500 -640 424 -640 480 -426 640 -428 640 -457 640 -640 483 -640 429 -478 640 -640 427 -640 480 -640 480 -640 480 -500 375 -480 640 -640 480 -480 640 -640 442 -412 640 -640 427 -640 405 -640 425 -640 491 -612 612 -500 333 -640 427 -640 480 -427 640 -500 276 -640 457 -640 480 -480 640 -640 427 -640 480 -640 480 -640 427 -640 428 -500 333 -427 640 -640 480 -640 480 -640 480 -640 359 -640 427 -640 532 -640 428 -640 426 -640 427 -375 500 -640 480 -640 427 -425 640 -640 446 -500 349 -640 427 -640 470 -640 421 -640 427 -640 426 -640 428 -640 480 -640 426 -640 480 -640 427 -640 425 -640 426 -640 425 -291 461 -640 480 -640 435 -480 640 -640 426 -640 425 -500 375 -480 640 -640 381 -500 375 -640 480 -335 500 -640 427 -333 500 -601 640 -640 428 -640 426 -480 640 -640 477 -640 240 -640 427 -640 424 -640 429 -480 640 -500 402 -480 640 -640 480 -480 640 -640 214 -640 427 -375 500 -640 480 -426 640 -640 480 -640 427 -500 242 -500 375 -640 569 -427 640 -500 333 -489 640 -500 375 -611 640 -640 438 -480 640 -529 640 -640 426 -640 480 -480 640 -500 333 -640 480 -640 454 -640 478 -500 376 -500 500 -500 415 -640 413 -515 640 -427 640 -640 427 -480 640 -468 640 -640 480 -500 359 -640 480 -640 480 -640 490 -640 427 -640 480 -640 480 -640 427 -375 500 -640 480 -427 640 -640 480 -640 480 -427 640 -333 500 -640 426 -640 425 -640 427 -640 480 -640 517 -375 500 -480 640 -640 360 -640 425 -640 426 -640 433 -640 480 -640 426 -612 612 -640 426 -640 427 -480 640 -640 427 -640 474 -640 426 -640 481 -500 374 -480 640 -640 427 -427 640 -500 336 -640 473 -640 383 -640 423 -640 480 -640 428 -500 375 -536 640 -640 427 -640 480 -640 427 -612 612 -640 480 -640 427 -640 480 -500 375 -640 461 -640 360 -425 640 -640 480 -426 640 -640 450 -640 428 -333 500 -640 427 -640 396 -640 477 -640 428 -640 480 -640 635 -640 480 -640 480 -640 480 -640 401 -640 480 -640 427 -640 426 -640 427 -640 427 -640 428 -581 640 -640 427 -427 640 -640 428 -640 480 -640 480 -640 478 -480 640 -640 480 -640 427 -640 427 -612 612 -640 576 -424 640 -612 612 -500 375 -640 480 -640 381 -640 434 -500 437 -640 456 -640 425 -640 427 -427 640 -640 429 -640 480 -640 478 -448 640 -640 480 -640 428 -640 480 -480 640 -640 425 -640 427 -640 429 -640 418 -640 360 -556 640 -269 451 -450 338 -328 500 -333 500 -480 640 -640 428 -640 380 -640 480 -640 428 -640 525 -640 427 -640 427 -640 480 -480 640 -640 479 -640 426 -640 425 -480 640 -640 426 -640 480 -612 612 -548 640 -612 612 -640 480 -640 411 -640 426 -640 480 -640 427 -640 438 -640 478 -640 427 -640 428 -640 427 -640 419 -509 640 -640 334 -640 427 -640 480 -640 426 -640 427 -480 640 -640 426 -513 640 -500 374 -640 501 -640 346 -640 360 -640 480 -500 400 -500 388 -640 480 -480 640 -500 375 -640 427 -500 400 -640 424 -491 500 -640 428 -640 480 -640 427 -426 640 -427 640 -640 451 -375 500 -640 480 -500 333 -367 490 -500 375 -640 427 -480 640 -640 480 -640 427 -640 480 -500 399 -640 480 -640 470 -640 427 -375 500 -640 426 -640 482 -640 480 -640 417 -462 640 -640 428 -640 480 -640 427 -612 612 -640 640 -640 362 -480 640 -640 427 -640 480 -640 426 -640 427 -640 428 -640 426 -640 480 -500 375 -640 480 -640 441 -640 451 -640 478 -640 480 -640 384 -427 640 -640 480 -500 459 -640 370 -426 640 -640 445 -640 480 -640 553 -640 383 -640 428 -640 427 -640 424 -427 640 -640 480 -640 427 -640 360 -640 428 -612 612 -640 480 -640 480 -640 425 -427 640 -640 426 -500 273 -640 427 -480 640 -500 332 -640 480 -640 480 -640 427 -429 640 -640 480 -640 424 -333 500 -640 427 -640 431 -500 375 -640 427 -478 640 -424 640 -396 640 -640 425 -640 480 -425 640 -640 480 -640 427 -640 426 -640 427 -500 422 -640 455 -640 427 -479 640 -418 500 -333 500 -640 480 -640 480 -640 426 -640 426 -640 425 -500 334 -480 640 -502 640 -500 375 -640 551 -640 361 -500 333 -424 640 -640 360 -640 427 -640 427 -341 500 -375 500 -640 512 -640 424 -640 427 -427 640 -640 480 -640 427 -640 424 -640 480 -640 480 -640 480 -640 426 -441 640 -640 480 -640 480 -640 420 -640 427 -640 427 -480 640 -640 426 -640 427 -640 379 -640 508 -640 480 -480 640 -640 358 -640 480 -640 478 -400 600 -427 640 -375 500 -640 439 -640 427 -640 426 -640 425 -640 480 -640 480 -640 480 -478 640 -640 480 -640 480 -480 640 -440 640 -640 229 -640 425 -640 428 -640 480 -612 612 -640 426 -480 640 -640 457 -640 480 -640 426 -640 427 -640 426 -640 400 -640 631 -640 427 -538 640 -640 480 -640 426 -640 427 -640 427 -640 480 -640 426 -640 480 -325 500 -640 427 -640 287 -480 360 -500 500 -640 482 -612 612 -640 425 -640 480 -640 426 -640 427 -640 480 -428 640 -640 424 -500 375 -480 640 -612 612 -480 640 -640 480 -640 427 -480 640 -410 500 -480 640 -640 360 -640 427 -640 401 -640 427 -640 426 -640 421 -500 375 -640 424 -640 427 -427 640 -640 480 -640 426 -429 640 -640 480 -375 500 -640 478 -427 640 -640 480 -480 640 -640 480 -640 480 -640 426 -375 500 -640 422 -640 426 -500 375 -640 480 -640 480 -640 480 -640 428 -513 640 -640 427 -640 424 -640 480 -640 480 -640 640 -640 512 -640 480 -640 506 -500 375 -500 375 -480 640 -640 480 -480 640 -500 329 -640 495 -369 500 -605 640 -500 375 -425 640 -640 480 -480 640 -640 428 -500 375 -640 427 -640 427 -640 427 -640 480 -640 608 -640 360 -640 480 -640 480 -640 480 -640 480 -640 444 -640 427 -640 421 -640 442 -427 640 -612 612 -640 480 -640 360 -480 640 -375 500 -480 640 -640 426 -640 498 -640 480 -640 427 -640 426 -640 480 -500 377 -160 120 -640 428 -500 333 -640 410 -480 640 -640 425 -640 426 -640 424 -640 426 -465 640 -640 480 -640 427 -500 375 -480 640 -640 480 -640 428 -640 480 -500 334 -640 426 -640 427 -640 480 -500 333 -640 429 -426 640 -640 426 -500 375 -500 281 -640 639 -500 313 -278 240 -640 427 -640 480 -640 440 -640 480 -640 480 -640 480 -426 640 -640 480 -640 426 -480 640 -640 427 -480 640 -426 640 -640 360 -640 479 -640 424 -640 427 -431 640 -640 427 -640 258 -640 480 -640 426 -480 640 -640 427 -640 480 -640 480 -426 640 -428 640 -640 480 -640 383 -640 425 -640 426 -640 480 -640 480 -425 640 -640 499 -480 640 -640 426 -640 379 -480 640 -640 427 -640 427 -640 427 -640 427 -640 444 -640 480 -500 500 -640 480 -640 480 -640 480 -640 480 -427 640 -640 593 -500 333 -640 427 -640 480 -640 427 -640 608 -612 612 -640 480 -640 480 -480 640 -640 480 -640 480 -240 360 -640 427 -640 480 -640 411 -640 428 -427 640 -333 500 -640 480 -500 375 -500 425 -640 480 -640 480 -612 612 -427 640 -500 453 -640 426 -640 480 -640 427 -640 479 -640 480 -640 351 -640 480 -640 420 -640 428 -640 427 -500 375 -640 446 -640 480 -640 424 -420 640 -429 640 -640 448 -640 426 -500 321 -375 500 -640 480 -640 470 -640 427 -375 500 -640 480 -500 375 -640 461 -360 640 -640 427 -428 640 -640 480 -640 374 -640 480 -640 427 -640 427 -640 427 -500 375 -640 432 -640 480 -247 500 -640 145 -640 427 -480 640 -640 427 -640 429 -640 568 -500 334 -500 375 -640 500 -640 480 -640 512 -640 480 -612 612 -640 426 -640 426 -640 427 -640 394 -640 480 -480 640 -480 640 -640 427 -640 406 -480 640 -640 426 -640 511 -640 428 -500 333 -500 363 -640 427 -640 427 -488 640 -640 480 -640 427 -640 427 -640 511 -500 375 -427 640 -640 427 -640 464 -640 480 -425 640 -640 464 -427 640 -640 480 -480 640 -640 480 -640 480 -640 480 -640 480 -640 425 -500 375 -640 418 -640 427 -480 640 -273 500 -312 462 -640 396 -640 428 -427 640 -250 333 -640 424 -511 640 -640 425 -640 428 -500 375 -640 480 -375 500 -500 375 -640 444 -640 480 -640 427 -396 640 -400 300 -640 480 -640 512 -582 640 -640 480 -640 480 -640 427 -500 375 -640 425 -427 640 -640 428 -640 480 -500 375 -640 509 -640 427 -640 425 -597 640 -612 612 -640 561 -640 480 -640 480 -640 405 -612 612 -480 640 -640 480 -480 640 -640 480 -640 425 -640 427 -500 375 -640 371 -640 478 -640 569 -500 375 -640 419 -640 426 -640 480 -424 640 -480 640 -640 419 -640 579 -640 512 -640 360 -612 612 -640 427 -640 426 -500 318 -640 480 -480 640 -500 385 -640 480 -640 480 -640 512 -640 480 -640 480 -640 539 -480 640 -640 640 -640 480 -640 360 -640 427 -500 375 -600 400 -427 640 -640 480 -640 480 -640 401 -640 427 -640 427 -640 480 -481 640 -306 500 -640 426 -640 433 -640 449 -640 480 -640 480 -581 640 -640 480 -640 478 -612 612 -560 640 -480 640 -640 480 -427 640 -640 480 -640 400 -375 500 -640 427 -640 480 -640 374 -334 500 -612 612 -500 334 -640 544 -640 480 -640 480 -640 471 -640 400 -612 612 -640 427 -640 479 -640 480 -500 375 -640 480 -612 612 -640 533 -640 427 -640 423 -356 500 -640 480 -500 371 -640 480 -640 480 -640 426 -640 427 -640 425 -640 425 -640 480 -640 480 -640 480 -640 424 -370 640 -640 425 -375 500 -640 145 -640 361 -500 332 -500 375 -640 335 -640 397 -640 521 -500 363 -479 640 -500 375 -640 480 -500 345 -640 480 -640 480 -640 480 -500 364 -640 427 -612 612 -480 640 -640 427 -640 483 -640 480 -640 427 -500 360 -640 427 -640 469 -480 640 -640 480 -640 427 -640 480 -640 427 -640 426 -480 640 -640 480 -640 404 -640 405 -640 426 -640 427 -640 228 -500 375 -426 640 -640 423 -640 428 -640 427 -640 361 -640 480 -433 640 -464 640 -640 480 -640 424 -433 500 -640 480 -640 428 -640 480 -640 473 -640 480 -500 331 -640 480 -640 360 -640 480 -640 480 -640 427 -375 500 -442 640 -450 600 -640 427 -480 640 -500 386 -640 480 -640 424 -640 457 -640 480 -427 640 -427 640 -363 640 -640 480 -640 426 -640 448 -481 640 -427 640 -480 640 -640 480 -640 427 -640 480 -640 425 -640 427 -500 375 -640 480 -640 425 -640 427 -500 375 -640 480 -480 640 -500 333 -640 427 -480 640 -640 480 -450 200 -640 480 -640 427 -480 640 -640 480 -427 640 -480 640 -640 459 -426 640 -640 427 -500 344 -640 427 -640 360 -500 333 -500 375 -640 523 -640 480 -640 424 -640 480 -640 439 -427 640 -640 480 -640 427 -432 308 -640 480 -640 480 -427 640 -499 640 -612 612 -640 480 -640 427 -640 480 -640 480 -426 640 -640 480 -640 426 -640 480 -427 640 -500 375 -640 427 -480 640 -640 458 -640 434 -500 375 -640 427 -640 429 -640 480 -640 480 -640 480 -640 428 -640 480 -640 427 -640 430 -622 640 -409 640 -640 480 -640 640 -640 423 -640 360 -640 430 -640 427 -640 563 -640 427 -640 423 -480 640 -640 480 -478 640 -612 612 -427 640 -640 427 -640 320 -640 427 -500 375 -640 427 -427 640 -640 478 -640 425 -500 375 -640 427 -640 478 -640 427 -375 500 -480 640 -480 640 -640 480 -640 640 -427 640 -640 480 -428 640 -640 405 -640 426 -640 480 -640 427 -640 491 -640 427 -640 480 -612 612 -640 427 -480 640 -640 427 -640 480 -640 427 -480 640 -376 500 -640 480 -640 480 -640 480 -480 640 -640 360 -640 480 -640 480 -427 640 -500 375 -640 466 -640 569 -640 385 -427 640 -640 428 -640 439 -500 350 -375 500 -500 375 -500 375 -625 640 -640 480 -500 332 -640 480 -333 500 -480 640 -640 427 -640 427 -640 426 -480 640 -481 640 -500 438 -480 640 -640 359 -640 418 -426 640 -500 375 -480 640 -480 640 -640 427 -640 480 -640 427 -463 500 -640 425 -426 640 -640 427 -288 216 -640 480 -640 480 -640 640 -640 427 -500 334 -640 480 -640 480 -640 480 -640 480 -640 408 -483 640 -640 428 -640 402 -640 425 -336 500 -640 426 -428 640 -640 330 -480 640 -640 425 -480 640 -640 426 -478 640 -640 449 -640 427 -500 334 -640 478 -500 375 -290 379 -640 427 -640 480 -640 480 -640 480 -640 369 -640 427 -500 321 -426 640 -640 427 -640 480 -640 480 -640 428 -500 375 -424 640 -612 612 -640 427 -500 266 -640 400 -480 640 -640 640 -640 480 -640 480 -500 375 -534 640 -640 427 -640 480 -427 640 -640 427 -640 480 -640 427 -640 360 -425 640 -480 640 -640 480 -640 480 -640 428 -427 640 -425 640 -433 640 -640 480 -640 480 -640 451 -375 500 -640 407 -640 480 -640 480 -416 640 -640 427 -480 640 -640 383 -640 614 -640 554 -500 333 -459 640 -640 427 -640 428 -640 428 -373 640 -625 640 -640 480 -640 480 -500 375 -500 375 -640 480 -528 640 -640 427 -640 480 -375 500 -640 426 -640 427 -640 427 -419 640 -640 427 -640 480 -640 480 -640 396 -640 480 -500 374 -640 428 -640 373 -640 202 -640 480 -640 425 -640 427 -640 424 -640 360 -640 427 -640 480 -640 480 -640 480 -640 427 -500 332 -640 480 -640 480 -480 640 -640 480 -640 480 -640 558 -640 480 -640 480 -426 640 -640 427 -612 612 -640 359 -480 640 -640 424 -640 480 -480 640 -612 612 -640 480 -640 480 -640 480 -500 333 -500 375 -640 425 -640 428 -640 439 -640 427 -640 360 -383 640 -640 427 -640 480 -640 322 -480 360 -426 640 -640 428 -480 640 -597 640 -640 428 -480 640 -640 446 -640 427 -640 480 -480 640 -640 527 -640 427 -640 480 -640 426 -604 640 -360 640 -360 640 -640 425 -640 480 -640 640 -640 388 -480 640 -640 427 -640 426 -500 375 -503 640 -640 427 -640 426 -640 480 -640 427 -640 499 -640 480 -640 428 -640 480 -640 425 -640 427 -640 427 -612 612 -480 640 -480 640 -640 427 -640 427 -490 640 -640 454 -640 480 -640 424 -640 428 -640 480 -640 480 -640 431 -640 478 -640 431 -427 640 -640 426 -640 360 -640 480 -640 480 -640 480 -640 480 -640 460 -490 640 -640 427 -640 480 -640 428 -640 480 -454 640 -640 403 -426 640 -640 320 -640 427 -640 393 -640 427 -612 612 -640 480 -640 480 -500 375 -620 463 -427 640 -612 612 -640 480 -640 640 -427 640 -480 640 -500 375 -446 335 -409 307 -640 426 -640 495 -640 480 -640 427 -640 480 -640 218 -640 425 -512 640 -640 480 -480 640 -489 640 -432 324 -640 424 -428 640 -640 427 -640 427 -640 427 -640 427 -500 347 -427 640 -640 427 -640 427 -640 426 -640 568 -463 640 -480 640 -640 271 -500 324 -480 640 -640 480 -640 375 -640 457 -480 640 -640 427 -640 500 -500 500 -640 480 -640 427 -640 428 -640 480 -640 427 -640 482 -640 480 -480 640 -333 500 -640 424 -427 640 -478 640 -640 424 -427 640 -640 424 -640 480 -457 640 -452 640 -640 425 -500 400 -500 375 -640 442 -225 300 -500 333 -639 640 -640 640 -640 478 -640 480 -640 480 -375 500 -629 640 -500 357 -640 427 -640 383 -500 375 -450 640 -640 426 -640 423 -426 640 -640 426 -426 640 -640 480 -640 480 -640 436 -500 375 -640 427 -640 480 -640 427 -640 480 -640 480 -640 480 -480 640 -480 640 -375 500 -480 640 -640 480 -640 433 -640 427 -433 640 -640 429 -640 480 -640 427 -500 333 -514 640 -640 480 -640 490 -640 427 -640 296 -457 640 -640 518 -640 480 -640 480 -350 232 -612 612 -640 425 -640 427 -640 480 -640 480 -640 383 -500 335 -640 424 -640 427 -640 480 -640 426 -431 640 -500 377 -640 512 -640 427 -426 640 -640 425 -640 480 -640 426 -640 427 -640 480 -500 333 -427 640 -640 429 -640 346 -640 427 -640 427 -640 427 -640 481 -640 480 -496 640 -427 640 -640 484 -639 640 -500 375 -640 427 -427 640 -640 480 -425 640 -640 284 -500 422 -640 512 -480 640 -375 500 -640 533 -640 426 -480 640 -640 413 -640 359 -640 513 -480 640 -640 366 -640 490 -640 480 -501 640 -640 424 -640 427 -640 425 -640 427 -500 308 -640 427 -500 333 -640 480 -640 427 -640 480 -640 480 -640 427 -640 428 -640 427 -640 480 -480 640 -640 427 -375 500 -640 432 -640 480 -640 427 -428 640 -640 427 -640 430 -640 480 -375 500 -640 480 -480 640 -640 640 -427 640 -640 480 -500 381 -406 640 -640 441 -333 500 -640 546 -640 480 -640 480 -500 375 -640 535 -640 426 -640 503 -640 434 -640 480 -546 366 -600 400 -640 429 -640 481 -640 480 -333 500 -640 427 -427 640 -427 640 -480 640 -640 439 -500 375 -553 640 -640 480 -639 640 -640 425 -640 480 -640 427 -640 480 -640 427 -500 333 -640 424 -512 640 -640 426 -640 359 -436 640 -640 428 -640 428 -640 426 -426 640 -480 640 -640 427 -640 427 -612 612 -640 380 -640 427 -640 427 -480 640 -640 480 -612 612 -427 640 -272 480 -640 166 -612 612 -427 640 -640 426 -640 480 -419 640 -640 426 -640 480 -640 427 -640 451 -640 427 -640 427 -640 427 -427 640 -500 375 -640 343 -640 428 -500 375 -640 427 -640 489 -640 373 -640 435 -500 375 -460 640 -640 428 -640 428 -640 411 -640 400 -288 432 -640 427 -640 480 -500 375 -640 426 -640 480 -333 500 -640 427 -500 331 -640 461 -480 640 -500 332 -640 330 -640 533 -427 640 -411 500 -492 640 -640 480 -500 419 -640 427 -359 640 -640 422 -213 318 -640 359 -640 480 -640 427 -500 500 -375 500 -640 480 -640 426 -640 428 -640 360 -640 402 -640 457 -500 364 -640 479 -640 480 -640 478 -457 640 -640 480 -640 480 -640 427 -640 428 -640 425 -500 375 -640 457 -640 478 -500 333 -357 500 -640 428 -418 500 -640 427 -480 640 -500 375 -640 426 -426 640 -640 458 -500 375 -500 375 -640 426 -640 398 -640 427 -640 427 -640 427 -426 640 -640 427 -640 480 -640 427 -640 360 -640 426 -640 480 -640 425 -640 426 -640 428 -640 360 -363 640 -640 480 -640 480 -640 480 -500 377 -428 640 -480 640 -640 481 -640 427 -428 640 -480 640 -640 427 -640 426 -480 640 -427 640 -640 466 -640 425 -640 423 -640 429 -640 480 -500 375 -424 640 -500 333 -500 333 -640 424 -612 612 -480 640 -425 640 -427 640 -640 344 -640 426 -640 427 -640 480 -640 480 -480 640 -640 480 -640 427 -640 480 -640 426 -640 427 -640 480 -640 484 -640 407 -640 448 -640 427 -640 427 -640 360 -640 427 -640 448 -640 480 -640 480 -640 480 -425 640 -640 480 -640 427 -640 425 -500 334 -640 426 -480 640 -640 480 -640 480 -640 427 -428 640 -640 428 -640 512 -429 640 -640 360 -640 480 -480 640 -640 480 -640 480 -640 480 -640 283 -640 479 -640 427 -640 425 -500 333 -640 369 -500 376 -640 480 -333 500 -612 612 -427 640 -480 640 -399 500 -640 480 -640 480 -640 348 -640 480 -640 480 -640 456 -427 640 -281 500 -480 640 -640 429 -640 478 -640 427 -640 453 -640 432 -622 640 -640 480 -640 425 -640 428 -640 427 -640 426 -640 480 -640 544 -640 427 -619 640 -480 640 -480 640 -640 480 -640 427 -640 640 -640 419 -370 640 -640 480 -375 500 -640 337 -448 336 -640 432 -500 333 -640 432 -500 375 -640 429 -500 349 -640 433 -640 480 -640 640 -640 480 -500 375 -640 480 -424 640 -640 508 -640 480 -640 480 -480 640 -640 480 -640 640 -640 480 -636 640 -640 480 -640 424 -640 327 -332 500 -480 640 -427 640 -640 425 -640 343 -640 480 -640 480 -640 428 -640 480 -375 500 -424 640 -511 640 -640 480 -640 480 -640 480 -500 375 -640 427 -480 640 -500 375 -640 464 -640 202 -640 426 -500 375 -640 480 -428 640 -640 478 -640 480 -395 500 -640 480 -500 375 -640 480 -479 640 -436 640 -480 640 -500 333 -640 430 -500 376 -640 480 -427 640 -640 428 -640 480 -640 480 -640 480 -333 500 -427 640 -640 426 -640 480 -640 480 -640 480 -640 427 -436 500 -640 453 -640 427 -640 427 -449 640 -534 640 -640 480 -426 640 -480 549 -640 320 -600 322 -467 500 -640 480 -640 480 -500 400 -640 423 -640 427 -640 480 -500 375 -500 302 -500 332 -640 480 -612 612 -640 432 -640 480 -640 427 -500 335 -360 640 -640 480 -640 428 -640 480 -427 640 -640 427 -640 511 -640 474 -500 375 -640 425 -640 427 -425 640 -640 428 -640 480 -640 426 -640 427 -640 360 -640 427 -500 391 -596 640 -640 427 -573 640 -640 480 -640 387 -640 427 -640 480 -640 427 -640 425 -640 372 -640 480 -375 500 -480 640 -426 640 -640 480 -640 480 -500 375 -640 426 -480 640 -333 500 -500 375 -640 428 -640 427 -640 480 -640 360 -427 640 -640 425 -640 427 -640 383 -500 375 -411 500 -640 434 -500 375 -640 427 -640 419 -640 428 -640 480 -640 480 -500 375 -480 640 -640 427 -640 509 -640 480 -640 421 -399 600 -640 480 -640 427 -640 429 -640 427 -500 375 -640 427 -640 427 -480 640 -640 426 -640 480 -375 500 -640 426 -640 413 -480 640 -333 500 -480 640 -640 415 -334 500 -431 640 -640 427 -640 426 -469 640 -640 480 -375 500 -612 612 -640 427 -640 478 -500 375 -640 443 -640 184 -640 406 -413 640 -640 427 -500 376 -640 427 -424 640 -373 500 -640 469 -640 427 -640 640 -480 640 -640 640 -640 478 -640 480 -640 426 -500 444 -640 426 -480 640 -640 427 -614 640 -640 426 -427 640 -600 464 -640 427 -464 640 -500 375 -640 427 -640 480 -449 640 -640 480 -480 640 -640 480 -640 480 -480 640 -640 408 -533 640 -640 426 -427 640 -640 396 -428 640 -640 480 -640 480 -640 480 -500 500 -335 500 -640 480 -427 640 -640 365 -427 640 -640 360 -508 640 -640 539 -640 428 -640 427 -500 375 -612 612 -640 424 -640 491 -640 425 -640 427 -640 480 -600 450 -359 640 -480 640 -640 480 -640 480 -640 480 -500 375 -390 500 -480 640 -480 640 -640 367 -640 480 -640 389 -426 640 -640 480 -480 640 -427 640 -470 308 -640 427 -640 427 -640 315 -640 480 -500 332 -640 480 -480 640 -500 333 -640 425 -480 640 -480 640 -640 480 -500 409 -640 427 -640 419 -480 640 -640 426 -640 427 -640 364 -500 375 -640 480 -480 640 -500 439 -500 333 -500 307 -640 480 -480 640 -427 640 -640 408 -640 475 -640 427 -640 428 -640 427 -640 408 -480 640 -500 375 -500 281 -640 428 -640 469 -480 640 -500 399 -612 612 -612 612 -612 612 -640 426 -500 335 -640 356 -375 500 -640 480 -426 640 -640 427 -640 426 -640 427 -480 640 -640 639 -500 375 -480 640 -612 612 -640 480 -640 448 -640 428 -640 480 -640 427 -543 640 -500 375 -640 427 -640 426 -640 359 -426 640 -478 640 -480 640 -640 428 -640 427 -640 426 -640 427 -640 427 -640 480 -500 340 -480 640 -640 480 -640 427 -640 480 -427 640 -640 480 -640 425 -640 427 -640 482 -500 333 -500 368 -640 427 -425 640 -640 480 -500 375 -640 428 -640 480 -640 423 -640 558 -250 234 -640 427 -478 640 -640 426 -640 427 -640 427 -426 640 -640 480 -428 640 -640 480 -640 480 -640 480 -640 399 -640 427 -640 439 -640 264 -500 375 -612 612 -640 427 -500 350 -427 640 -334 500 -500 332 -500 281 -325 500 -500 318 -480 640 -640 480 -375 500 -640 426 -640 614 -500 400 -487 640 -640 427 -640 427 -640 513 -478 640 -640 480 -500 375 -500 343 -500 375 -640 425 -640 417 -500 375 -640 427 -640 427 -640 427 -640 441 -640 426 -640 427 -640 480 -640 427 -640 383 -640 425 -635 640 -640 480 -640 355 -480 640 -640 427 -500 375 -640 480 -640 429 -640 480 -640 427 -640 480 -640 480 -640 427 -482 500 -480 640 -478 640 -640 426 -640 480 -640 424 -640 480 -630 640 -640 480 -640 480 -335 500 -480 640 -640 427 -640 480 -640 433 -640 423 -640 480 -640 480 -375 500 -640 480 -640 457 -480 640 -640 480 -640 480 -640 427 -500 375 -504 640 -640 480 -512 640 -471 640 -426 640 -319 480 -640 480 -500 371 -640 480 -640 480 -640 480 -500 375 -378 500 -427 640 -640 483 -640 541 -640 426 -640 381 -500 375 -640 423 -640 359 -640 631 -640 480 -400 600 -371 500 -640 480 -500 371 -640 480 -640 427 -478 640 -640 427 -380 500 -427 640 -500 375 -640 427 -600 600 -427 640 -640 427 -640 427 -356 500 -640 513 -482 640 -375 500 -640 480 -640 320 -612 612 -640 480 -640 640 -640 424 -480 640 -640 427 -427 640 -640 494 -639 640 -640 360 -478 640 -640 360 -640 426 -640 427 -640 427 -640 480 -640 439 -640 480 -640 427 -640 480 -640 360 -640 480 -640 480 -640 251 -640 433 -640 466 -640 480 -480 640 -640 480 -640 444 -427 640 -640 424 -480 640 -640 424 -640 458 -640 427 -424 640 -640 426 -480 640 -640 640 -473 305 -640 427 -461 640 -640 427 -478 640 -640 463 -640 480 -640 427 -640 425 -640 480 -640 360 -640 583 -500 344 -640 426 -640 425 -640 480 -413 640 -640 478 -427 640 -640 480 -424 640 -640 425 -480 640 -640 394 -640 427 -496 640 -427 640 -500 375 -640 426 -480 640 -640 429 -612 612 -640 416 -640 283 -480 640 -375 500 -427 640 -640 426 -640 424 -640 593 -640 427 -640 453 -640 429 -266 640 -640 426 -640 427 -640 499 -640 428 -640 425 -612 612 -480 640 -500 375 -375 500 -500 384 -500 333 -640 427 -640 458 -640 428 -640 467 -640 478 -640 427 -640 429 -640 426 -500 375 -640 480 -640 396 -640 512 -334 500 -480 640 -480 640 -640 427 -640 359 -640 480 -426 640 -375 500 -640 480 -640 480 -500 375 -640 434 -640 427 -640 425 -640 480 -640 457 -426 640 -375 500 -640 480 -640 344 -640 480 -640 455 -500 400 -640 427 -480 640 -640 480 -640 426 -375 500 -640 542 -500 332 -480 640 -640 427 -640 427 -426 640 -640 512 -640 500 -640 431 -640 609 -640 480 -640 478 -640 427 -640 640 -640 427 -640 427 -640 480 -640 424 -640 480 -640 480 -640 480 -480 640 -640 480 -383 640 -640 427 -640 480 -640 427 -640 480 -640 427 -640 480 -640 480 -640 480 -478 640 -640 480 -640 480 -640 427 -640 480 -640 428 -640 480 -640 427 -244 500 -426 640 -513 640 -640 480 -640 480 -640 427 -640 480 -640 480 -428 640 -640 368 -500 341 -640 426 -612 612 -640 428 -640 479 -640 427 -480 640 -640 480 -640 424 -480 640 -640 480 -640 429 -640 427 -640 427 -640 426 -640 480 -640 427 -500 375 -500 328 -640 480 -500 333 -640 427 -640 480 -640 392 -427 640 -640 640 -640 429 -480 640 -640 337 -306 500 -640 426 -427 640 -640 480 -640 427 -640 427 -500 381 -375 500 -640 472 -640 480 -500 375 -640 424 -640 480 -500 375 -480 640 -640 427 -640 480 -640 480 -500 383 -640 480 -480 640 -640 399 -612 612 -640 480 -500 375 -640 427 -500 375 -640 427 -640 427 -480 640 -640 480 -427 640 -640 427 -640 427 -346 500 -640 480 -500 400 -640 360 -478 640 -640 413 -375 500 -640 427 -640 424 -640 426 -640 425 -480 640 -478 640 -410 500 -640 640 -640 480 -500 345 -427 640 -640 419 -640 480 -640 406 -500 375 -640 528 -426 640 -359 640 -640 427 -640 428 -480 640 -500 333 -640 369 -400 535 -489 640 -480 640 -640 480 -640 480 -500 375 -640 480 -456 640 -500 375 -640 480 -640 428 -427 640 -640 425 -480 640 -640 427 -640 420 -333 500 -640 427 -428 640 -640 480 -480 640 -640 450 -640 384 -640 480 -425 640 -480 640 -500 351 -640 480 -640 562 -640 428 -640 480 -500 372 -423 640 -640 426 -640 480 -480 640 -640 426 -640 403 -640 480 -640 480 -640 480 -500 434 -427 640 -480 640 -640 424 -640 480 -480 640 -640 428 -547 640 -500 335 -640 360 -640 400 -640 427 -448 640 -500 376 -500 375 -640 481 -640 480 -640 426 -640 480 -640 478 -640 480 -640 423 -500 375 -640 200 -640 480 -600 450 -640 399 -640 480 -640 426 -640 480 -640 480 -640 480 -640 358 -480 640 -640 426 -640 428 -480 640 -640 640 -461 640 -640 480 -640 480 -640 480 -639 640 -428 640 -612 612 -640 404 -640 427 -640 427 -612 612 -640 427 -640 480 -449 640 -480 640 -640 428 -640 480 -333 500 -640 480 -500 385 -640 426 -500 375 -640 480 -640 427 -640 425 -640 427 -640 480 -640 426 -640 480 -640 480 -640 481 -640 480 -640 480 -640 428 -640 427 -427 640 -480 640 -425 640 -333 500 -640 503 -480 640 -640 427 -640 388 -640 426 -538 640 -500 375 -427 640 -640 424 -500 391 -640 231 -640 427 -640 480 -640 480 -612 612 -640 480 -426 640 -640 425 -640 478 -640 427 -640 427 -640 547 -640 360 -612 612 -640 480 -500 334 -431 500 -374 500 -640 428 -640 400 -633 640 -333 500 -640 462 -566 640 -640 359 -500 332 -425 640 -375 500 -640 425 -500 335 -640 480 -612 612 -640 425 -640 426 -487 640 -500 375 -640 424 -640 427 -640 480 -500 334 -640 427 -500 341 -640 480 -640 399 -480 640 -375 500 -480 640 -640 428 -500 334 -640 480 -640 427 -457 640 -500 375 -640 409 -375 500 -640 480 -640 480 -500 375 -375 500 -427 640 -480 640 -640 475 -640 480 -640 425 -500 375 -640 360 -500 332 -640 450 -640 480 -640 426 -500 375 -640 480 -640 480 -640 425 -640 425 -426 640 -640 425 -640 480 -640 384 -640 427 -640 427 -640 253 -640 425 -394 640 -640 426 -640 426 -640 480 -640 427 -427 640 -426 640 -640 467 -640 480 -640 458 -500 500 -640 480 -500 375 -640 427 -480 640 -640 480 -640 480 -640 421 -640 480 -640 542 -640 480 -640 430 -640 469 -640 360 -640 480 -640 355 -640 480 -612 612 -640 480 -500 334 -640 427 -432 640 -640 416 -640 360 -468 640 -640 527 -640 570 -640 428 -480 640 -640 480 -640 427 -480 640 -640 426 -640 480 -500 375 -640 360 -424 640 -478 640 -640 428 -640 427 -240 320 -427 640 -375 500 -500 375 -566 640 -640 480 -640 427 -500 335 -640 427 -500 375 -640 612 -640 480 -426 640 -640 480 -640 385 -640 424 -640 427 -640 478 -640 426 -427 640 -500 375 -640 480 -640 480 -640 258 -640 429 -640 427 -640 480 -640 480 -640 480 -640 425 -500 333 -640 480 -640 501 -640 640 -612 612 -640 424 -500 375 -640 454 -500 375 -640 388 -427 640 -425 640 -500 375 -376 500 -640 425 -640 480 -500 375 -500 357 -640 480 -640 378 -500 375 -640 431 -640 427 -640 450 -612 612 -640 427 -640 427 -640 427 -612 612 -640 480 -567 476 -480 640 -424 640 -640 428 -640 480 -640 427 -640 480 -640 426 -640 427 -640 480 -640 480 -640 480 -640 427 -480 640 -640 427 -640 480 -400 538 -640 427 -500 375 -428 640 -640 384 -640 426 -480 640 -640 488 -427 640 -640 480 -640 427 -640 424 -427 640 -640 480 -480 640 -612 612 -640 480 -480 640 -427 640 -640 466 -640 480 -640 480 -461 640 -640 480 -640 480 -500 254 -640 425 -500 375 -480 640 -480 640 -640 405 -612 612 -480 640 -514 640 -640 480 -640 480 -640 480 -400 300 -640 509 -640 424 -426 640 -640 480 -640 512 -428 640 -480 640 -612 612 -401 500 -640 478 -640 480 -640 427 -640 427 -500 375 -640 480 -640 425 -457 640 -640 427 -640 395 -480 640 -640 427 -640 478 -640 480 -640 455 -640 536 -425 640 -640 480 -640 427 -427 640 -417 500 -500 333 -480 640 -640 427 -640 360 -640 427 -427 640 -640 363 -640 480 -612 612 -640 614 -640 480 -479 640 -334 640 -640 425 -480 640 -429 640 -640 480 -640 427 -640 480 -480 640 -480 640 -500 412 -471 600 -500 333 -640 480 -640 425 -640 389 -640 339 -640 428 -640 640 -500 335 -640 426 -640 426 -425 640 -427 640 -425 640 -640 428 -427 640 -640 480 -640 427 -427 640 -640 282 -480 640 -500 281 -333 500 -458 640 -640 426 -426 640 -640 427 -640 425 -427 640 -640 480 -480 640 -640 485 -640 480 -480 640 -640 426 -427 640 -480 640 -500 326 -640 427 -640 480 -362 500 -640 480 -640 427 -332 500 -602 640 -640 480 -640 480 -480 640 -640 480 -640 427 -640 425 -640 480 -640 480 -480 640 -413 478 -640 640 -640 446 -640 249 -640 458 -640 453 -426 640 -640 563 -640 640 -640 480 -640 427 -425 640 -640 426 -480 640 -640 480 -640 565 -640 640 -640 480 -640 427 -640 427 -426 640 -640 427 -480 640 -640 427 -640 480 -500 375 -612 612 -433 640 -512 640 -640 427 -640 424 -640 480 -500 332 -640 480 -640 480 -500 375 -500 333 -640 427 -640 480 -640 480 -480 640 -500 333 -640 421 -640 480 -640 427 -640 480 -640 424 -640 480 -612 612 -640 480 -640 480 -368 640 -640 480 -640 480 -640 480 -640 480 -640 480 -500 375 -640 428 -640 342 -500 375 -480 640 -640 427 -640 427 -640 424 -640 457 -500 375 -401 640 -480 640 -640 640 -640 478 -640 419 -500 391 -640 481 -640 427 -640 427 -640 480 -640 480 -480 640 -500 274 -640 446 -640 480 -480 640 -480 640 -640 640 -612 612 -640 445 -640 480 -500 334 -640 480 -640 427 -640 427 -640 426 -640 428 -640 425 -500 321 -640 427 -640 480 -640 426 -500 333 -640 480 -608 640 -640 424 -640 426 -226 135 -640 361 -640 427 -640 480 -480 640 -640 480 -612 612 -640 591 -640 417 -390 640 -432 640 -640 397 -481 640 -640 427 -511 640 -640 427 -640 426 -500 335 -640 512 -640 480 -426 640 -640 480 -375 500 -640 480 -640 426 -640 425 -640 427 -640 379 -640 480 -333 500 -480 640 -640 480 -640 360 -640 428 -640 560 -640 359 -640 428 -640 427 -640 640 -640 427 -480 640 -480 640 -334 500 -640 427 -640 428 -640 427 -640 509 -640 480 -640 480 -527 640 -509 640 -640 427 -612 612 -640 480 -640 424 -640 480 -640 480 -640 540 -640 427 -640 368 -640 427 -500 438 -427 640 -640 427 -640 426 -640 427 -612 612 -640 480 -480 640 -640 427 -640 480 -640 480 -480 640 -427 640 -500 333 -640 480 -360 640 -640 480 -640 290 -500 333 -427 640 -640 429 -640 616 -640 428 -640 427 -640 480 -640 465 -640 427 -640 427 -479 640 -500 375 -481 640 -640 480 -640 480 -500 286 -640 480 -500 375 -500 375 -640 480 -640 640 -640 424 -427 640 -640 359 -640 480 -427 640 -640 428 -612 612 -333 500 -640 427 -333 500 -640 480 -612 612 -500 337 -500 375 -480 640 -427 640 -640 476 -640 481 -640 427 -500 375 -640 480 -427 640 -640 480 -640 478 -640 425 -500 332 -640 640 -640 480 -640 425 -640 480 -640 409 -459 640 -478 640 -427 640 -640 480 -640 468 -640 480 -640 427 -500 449 -640 400 -640 360 -333 500 -480 640 -640 480 -640 480 -426 640 -640 415 -305 400 -640 480 -640 419 -640 480 -640 427 -640 425 -300 400 -470 353 -640 521 -612 612 -640 480 -640 512 -480 640 -640 640 -640 480 -500 366 -640 480 -333 500 -640 427 -640 480 -640 427 -427 640 -366 500 -640 427 -640 427 -640 480 -640 426 -640 480 -640 480 -640 480 -640 424 -500 375 -640 427 -640 463 -640 512 -640 480 -375 500 -400 400 -640 426 -640 481 -640 480 -336 248 -640 480 -480 640 -640 274 -640 480 -333 500 -480 640 -640 480 -640 427 -640 400 -640 427 -480 640 -427 640 -428 640 -500 333 -401 640 -480 640 -640 424 -640 480 -375 500 -379 640 -640 480 -480 640 -640 478 -375 500 -640 427 -360 640 -429 640 -500 333 -640 427 -480 640 -640 480 -640 415 -640 293 -620 640 -480 640 -375 500 -640 426 -640 360 -640 481 -640 427 -496 640 -360 640 -640 480 -640 427 -480 640 -640 480 -512 640 -476 640 -480 640 -494 640 -375 500 -640 360 -640 426 -640 428 -640 480 -640 425 -640 426 -640 374 -640 427 -640 480 -640 479 -640 426 -640 427 -640 427 -480 640 -446 640 -640 426 -640 480 -640 427 -640 385 -640 480 -640 488 -640 480 -427 640 -427 640 -640 426 -640 480 -389 500 -640 480 -640 480 -640 480 -425 640 -480 640 -300 225 -640 515 -640 426 -640 480 -640 505 -347 491 -640 385 -640 427 -500 335 -640 426 -640 427 -428 640 -640 452 -428 640 -640 427 -640 427 -427 640 -640 424 -640 480 -480 640 -640 427 -480 640 -640 480 -640 480 -640 427 -640 427 -640 425 -640 426 -640 426 -494 640 -427 640 -640 380 -640 480 -640 480 -427 640 -427 640 -333 500 -640 427 -480 640 -500 334 -640 640 -640 361 -426 640 -640 480 -640 480 -640 480 -640 425 -640 428 -640 480 -640 480 -640 480 -640 426 -640 479 -457 640 -640 424 -500 332 -334 500 -375 500 -640 478 -500 333 -640 480 -500 400 -640 428 -640 480 -427 640 -500 375 -500 334 -500 291 -640 480 -640 480 -640 480 -640 427 -640 510 -640 480 -640 480 -428 640 -480 640 -500 375 -640 480 -640 512 -640 275 -640 512 -640 424 -612 612 -426 640 -640 481 -375 500 -640 457 -640 427 -619 640 -640 427 -640 480 -500 375 -640 398 -640 480 -427 640 -500 375 -480 640 -427 640 -500 375 -640 426 -640 427 -480 640 -500 375 -640 413 -640 424 -480 640 -640 426 -640 480 -500 400 -521 640 -427 640 -640 462 -640 480 -640 480 -427 640 -500 347 -640 427 -640 427 -597 400 -640 426 -640 427 -640 480 -640 480 -640 431 -640 419 -640 479 -640 428 -480 640 -640 427 -640 428 -426 640 -640 311 -480 640 -640 427 -640 513 -640 424 -500 358 -480 640 -640 480 -300 426 -640 480 -377 640 -480 640 -427 640 -640 427 -640 425 -640 320 -640 480 -640 360 -427 640 -640 403 -640 425 -480 640 -640 426 -480 640 -428 640 -426 640 -640 427 -459 640 -369 500 -480 640 -640 480 -480 640 -480 640 -500 281 -640 425 -640 468 -640 440 -640 427 -640 534 -640 478 -640 482 -640 426 -500 375 -424 640 -640 331 -640 480 -541 640 -640 268 -640 427 -640 425 -513 640 -640 426 -640 527 -500 333 -640 427 -498 640 -612 612 -339 500 -640 427 -500 391 -480 640 -427 640 -500 333 -427 640 -640 480 -480 640 -640 422 -349 500 -480 640 -333 500 -640 425 -424 640 -640 427 -500 339 -640 425 -640 460 -478 640 -640 468 -640 427 -640 434 -640 427 -640 427 -640 426 -500 375 -640 427 -500 375 -640 388 -640 426 -375 500 -640 426 -640 426 -640 425 -426 640 -640 424 -387 500 -640 480 -427 640 -640 427 -640 427 -640 427 -640 480 -480 640 -425 640 -640 480 -640 640 -640 424 -612 612 -500 333 -500 375 -640 501 -640 480 -640 577 -640 480 -500 375 -425 640 -500 500 -640 426 -640 427 -640 426 -640 480 -640 428 -500 370 -640 360 -500 399 -500 333 -349 500 -640 427 -640 427 -480 640 -640 480 -640 263 -640 480 -447 640 -640 427 -640 317 -640 480 -428 640 -640 426 -480 640 -640 427 -640 480 -375 500 -640 512 -640 430 -480 640 -480 640 -480 640 -500 500 -500 287 -640 480 -640 426 -427 640 -426 640 -640 480 -640 427 -640 427 -375 500 -546 640 -320 240 -425 640 -500 335 -640 425 -640 367 -640 480 -640 427 -640 480 -478 640 -640 427 -640 391 -640 429 -640 480 -640 427 -640 384 -427 640 -640 360 -640 495 -640 478 -640 427 -640 480 -500 218 -640 480 -500 333 -640 480 -640 480 -427 640 -640 480 -640 426 -375 500 -640 427 -640 427 -640 428 -640 618 -480 640 -640 427 -640 427 -554 640 -640 427 -640 427 -640 480 -640 499 -640 427 -640 420 -640 480 -640 480 -425 640 -500 332 -640 480 -640 423 -408 640 -640 480 -529 640 -640 426 -640 480 -500 375 -640 427 -640 508 -500 375 -427 640 -640 480 -640 427 -612 612 -480 640 -640 251 -480 640 -612 612 -500 375 -426 640 -640 480 -480 640 -536 640 -640 480 -640 425 -640 467 -640 480 -438 640 -448 290 -480 640 -640 480 -640 426 -640 480 -640 480 -512 640 -630 630 -640 383 -426 640 -640 404 -500 333 -500 375 -500 327 -429 640 -640 480 -640 469 -640 426 -640 537 -640 359 -640 640 -640 480 -480 640 -640 427 -500 375 -444 640 -640 480 -640 427 -640 480 -640 480 -427 640 -480 640 -640 399 -480 640 -640 434 -640 480 -640 480 -640 480 -640 480 -640 480 -640 428 -640 427 -640 427 -640 480 -640 394 -640 482 -461 640 -640 480 -640 427 -640 469 -640 424 -640 480 -640 448 -640 262 -480 640 -425 640 -640 360 -500 375 -640 480 -640 480 -480 640 -640 429 -640 480 -640 480 -640 426 -640 565 -640 480 -480 640 -427 640 -640 426 -512 640 -500 375 -500 375 -500 333 -500 375 -429 640 -640 427 -480 640 -640 320 -500 500 -640 480 -640 427 -424 640 -640 480 -640 403 -640 425 -500 375 -500 334 -640 480 -640 615 -640 480 -640 426 -640 480 -640 427 -640 480 -375 500 -640 480 -640 385 -640 368 -640 427 -492 500 -640 480 -640 480 -640 442 -640 404 -640 480 -640 400 -427 640 -640 427 -640 480 -612 612 -427 640 -640 436 -330 500 -640 428 -640 480 -640 480 -640 436 -640 494 -640 360 -320 240 -640 427 -480 640 -640 427 -640 480 -640 480 -640 480 -375 500 -640 500 -640 640 -640 480 -640 426 -640 536 -640 398 -427 640 -640 427 -640 480 -640 426 -640 427 -640 480 -480 640 -427 640 -500 375 -640 404 -500 357 -480 640 -640 427 -640 480 -429 640 -640 480 -640 429 -640 426 -640 429 -427 640 -427 640 -640 473 -480 640 -333 500 -426 640 -480 640 -640 480 -640 480 -640 426 -640 480 -480 360 -500 321 -640 428 -640 427 -640 480 -640 480 -500 375 -427 640 -640 503 -427 640 -640 427 -424 640 -610 405 -640 426 -426 640 -640 474 -640 428 -480 640 -640 403 -640 480 -640 428 -640 427 -640 480 -527 640 -449 640 -640 426 -480 640 -640 430 -500 500 -640 480 -640 427 -640 445 -640 440 -640 478 -500 375 -640 427 -640 539 -640 479 -512 640 -640 480 -640 480 -500 375 -640 480 -500 375 -640 428 -640 478 -500 334 -424 640 -640 424 -640 423 -640 427 -375 500 -640 480 -640 427 -640 427 -427 640 -640 480 -640 427 -640 360 -640 427 -640 427 -428 640 -640 480 -640 428 -640 480 -500 333 -640 480 -425 640 -640 551 -640 511 -427 640 -640 425 -640 480 -612 612 -375 500 -490 367 -398 640 -640 480 -640 504 -640 480 -640 480 -518 640 -640 480 -640 427 -640 413 -640 394 -640 427 -640 427 -640 428 -448 336 -480 640 -500 332 -640 426 -427 640 -424 640 -480 640 -640 426 -478 640 -640 480 -640 360 -436 640 -500 375 -640 544 -427 640 -640 640 -425 640 -640 428 -640 428 -425 640 -480 640 -640 425 -640 425 -426 640 -640 427 -480 640 -640 427 -427 640 -435 640 -480 640 -500 379 -640 640 -640 427 -640 427 -640 480 -640 480 -480 640 -640 480 -640 326 -640 427 -640 480 -500 333 -640 425 -453 640 -480 640 -640 428 -640 428 -441 640 -426 640 -640 480 -640 486 -640 427 -500 375 -500 375 -640 428 -640 494 -324 432 -640 427 -640 428 -480 640 -320 480 -640 480 -640 422 -640 427 -640 405 -640 480 -432 640 -640 427 -640 480 -640 426 -640 475 -458 640 -640 427 -612 612 -640 360 -507 480 -640 427 -480 640 -640 480 -640 480 -640 360 -640 428 -427 640 -500 375 -427 640 -640 427 -640 478 -640 480 -640 480 -417 640 -640 424 -640 427 -640 480 -640 426 -640 512 -640 480 -640 480 -640 427 -480 361 -640 427 -480 640 -640 484 -375 500 -427 640 -480 640 -500 375 -416 640 -640 408 -640 609 -612 612 -640 480 -640 360 -500 499 -640 480 -640 427 -640 427 -640 426 -480 640 -500 375 -640 529 -500 375 -640 480 -640 480 -640 425 -640 480 -500 375 -640 470 -640 426 -500 375 -640 480 -640 426 -640 432 -640 424 -640 316 -640 429 -640 463 -640 480 -458 640 -640 480 -640 427 -640 480 -640 427 -640 425 -612 612 -480 640 -375 500 -640 480 -640 483 -427 640 -640 480 -640 512 -499 374 -233 640 -640 312 -640 480 -640 457 -640 445 -500 375 -640 425 -640 427 -427 640 -640 427 -640 427 -480 640 -640 480 -500 375 -640 480 -427 640 -640 480 -640 428 -640 480 -480 640 -640 640 -640 513 -640 422 -500 325 -426 640 -640 480 -480 640 -500 346 -375 500 -640 480 -640 424 -500 375 -640 456 -640 456 -640 436 -640 426 -640 480 -640 428 -640 437 -300 225 -429 640 -640 480 -640 480 -640 480 -375 500 -640 424 -640 480 -640 480 -640 427 -638 479 -640 316 -500 333 -640 481 -640 427 -640 480 -640 427 -480 640 -640 427 -640 480 -500 332 -640 427 -640 480 -640 431 -584 430 -640 361 -640 640 -500 333 -640 364 -640 480 -480 640 -640 480 -560 640 -640 480 -640 428 -427 640 -443 640 -640 428 -480 640 -640 427 -480 640 -640 427 -640 512 -425 640 -480 640 -480 640 -362 640 -640 379 -640 480 -640 407 -640 480 -640 480 -480 640 -640 480 -427 640 -640 428 -640 427 -375 500 -500 375 -640 480 -640 640 -500 336 -640 480 -361 640 -640 424 -160 120 -333 500 -640 427 -540 455 -640 426 -640 425 -640 425 -640 428 -333 500 -640 419 -640 425 -640 428 -640 480 -500 375 -640 420 -500 375 -480 640 -640 480 -640 424 -640 480 -640 322 -640 478 -640 427 -640 480 -480 640 -640 429 -640 453 -480 640 -500 337 -240 320 -480 640 -640 480 -640 428 -640 427 -640 428 -640 480 -637 640 -640 480 -640 640 -640 480 -640 482 -500 321 -500 375 -640 480 -640 480 -500 333 -426 640 -480 640 -640 427 -480 640 -640 427 -640 427 -640 427 -500 297 -640 423 -500 333 -640 427 -640 480 -500 375 -640 480 -500 364 -640 427 -640 480 -480 640 -500 376 -640 427 -500 375 -640 398 -640 480 -640 427 -640 480 -428 640 -640 413 -640 640 -640 427 -640 427 -640 480 -480 640 -480 640 -640 427 -640 428 -640 427 -480 640 -640 480 -640 448 -640 480 -640 428 -640 391 -640 419 -640 426 -640 480 -640 429 -640 426 -640 480 -640 480 -640 528 -640 426 -640 480 -640 424 -427 640 -480 640 -640 480 -500 333 -500 375 -640 480 -480 360 -500 375 -640 510 -480 640 -640 480 -640 480 -640 627 -640 427 -640 480 -640 427 -640 427 -427 640 -480 640 -640 427 -419 640 -426 640 -640 424 -640 480 -640 625 -640 426 -487 500 -640 427 -427 640 -640 480 -500 375 -640 429 -425 640 -640 286 -375 500 -640 429 -640 480 -480 640 -500 375 -612 612 -640 480 -424 640 -640 427 -640 427 -640 382 -640 446 -640 427 -640 427 -640 472 -428 640 -640 427 -640 427 -500 333 -508 640 -500 375 -500 375 -612 612 -427 640 -640 425 -640 425 -640 480 -640 478 -640 427 -640 428 -427 640 -640 480 -480 640 -426 640 -600 393 -640 360 -480 640 -640 361 -640 427 -500 467 -425 640 -640 480 -640 427 -500 333 -500 333 -640 480 -640 359 -640 427 -595 428 -640 427 -490 500 -640 427 -640 360 -640 429 -612 612 -640 377 -640 454 -640 480 -428 640 -640 640 -640 427 -640 480 -640 384 -640 429 -500 375 -427 640 -640 427 -640 480 -640 480 -640 480 -640 480 -500 375 -640 480 -640 427 -640 480 -640 480 -640 428 -500 375 -640 424 -640 419 -333 500 -640 425 -612 612 -640 480 -640 427 -640 426 -640 427 -640 455 -640 427 -480 640 -640 476 -640 480 -640 448 -426 640 -427 640 -640 427 -640 480 -640 427 -428 640 -640 426 -640 426 -500 333 -640 427 -640 408 -640 558 -640 480 -500 375 -640 640 -640 482 -640 426 -383 640 -500 281 -480 640 -375 500 -640 427 -640 425 -640 455 -494 640 -640 373 -640 427 -640 427 -640 425 -480 640 -640 480 -640 427 -640 428 -640 480 -500 298 -640 427 -640 409 -640 426 -640 480 -640 314 -640 424 -640 427 -640 427 -640 512 -640 489 -500 333 -480 640 -640 298 -500 375 -612 612 -640 249 -640 360 -454 640 -640 427 -640 640 -640 480 -500 375 -640 481 -640 480 -640 426 -640 453 -640 427 -480 640 -640 427 -480 640 -640 388 -640 480 -640 480 -500 316 -640 480 -640 480 -425 640 -640 480 -500 375 -640 480 -640 427 -480 640 -631 640 -640 480 -640 426 -640 476 -640 427 -640 359 -640 549 -426 640 -640 480 -481 640 -640 389 -640 420 -640 640 -640 427 -619 640 -640 530 -547 640 -640 425 -640 456 -640 480 -640 429 -640 360 -640 480 -640 426 -640 480 -500 375 -640 476 -640 480 -496 640 -640 360 -640 401 -402 640 -640 428 -640 427 -640 480 -640 427 -640 424 -640 480 -640 428 -640 480 -640 427 -640 426 -640 480 -480 640 -640 480 -480 640 -640 427 -640 427 -640 468 -640 427 -640 427 -480 640 -500 375 -612 612 -640 374 -640 433 -640 426 -640 640 -640 478 -458 640 -640 360 -333 500 -640 480 -640 480 -612 612 -640 480 -428 640 -480 640 -480 640 -640 480 -612 612 -640 610 -640 309 -640 640 -640 428 -640 427 -640 427 -480 640 -500 375 -640 427 -640 480 -640 480 -478 640 -500 333 -640 427 -640 427 -640 479 -640 480 -640 480 -500 375 -640 480 -640 425 -640 480 -640 480 -500 375 -640 480 -640 480 -640 480 -526 640 -512 640 -500 406 -500 222 -640 480 -640 427 -640 463 -640 426 -480 640 -500 247 -500 375 -640 480 -640 429 -640 426 -500 333 -640 423 -640 430 -640 427 -640 427 -640 480 -500 375 -640 426 -500 375 -640 424 -640 427 -612 612 -640 480 -427 640 -640 428 -426 640 -640 640 -609 640 -640 480 -480 640 -640 428 -500 332 -640 360 -483 640 -478 640 -640 327 -640 480 -640 359 -640 427 -640 438 -427 640 -640 478 -640 426 -640 480 -480 640 -640 480 -640 480 -427 640 -640 427 -640 413 -640 480 -640 427 -333 500 -640 480 -426 640 -640 480 -640 424 -640 427 -640 480 -640 480 -640 264 -640 368 -640 426 -375 500 -494 640 -490 500 -640 478 -500 335 -640 480 -480 640 -500 333 -346 500 -640 480 -640 415 -640 480 -640 426 -487 640 -500 375 -500 333 -640 371 -640 426 -640 438 -640 480 -640 427 -428 640 -427 640 -439 640 -640 434 -640 480 -500 335 -640 480 -500 333 -640 427 -640 480 -640 427 -427 640 -640 480 -640 478 -424 640 -640 480 -640 328 -640 427 -640 452 -640 360 -500 375 -640 480 -429 640 -640 446 -640 640 -640 426 -640 427 -480 640 -640 364 -640 480 -429 500 -640 480 -500 375 -427 640 -480 640 -471 640 -336 500 -480 640 -640 427 -480 640 -480 640 -496 400 -640 427 -640 158 -640 480 -640 480 -640 480 -640 606 -640 480 -640 427 -640 480 -640 480 -640 429 -640 424 -640 480 -375 500 -500 375 -375 500 -463 640 -530 353 -480 640 -480 640 -427 640 -402 640 -640 480 -500 333 -640 480 -640 427 -640 428 -640 502 -640 480 -591 640 -640 480 -500 375 -486 640 -426 640 -640 480 -427 640 -640 480 -427 640 -640 480 -640 428 -640 427 -640 480 -640 478 -640 480 -640 427 -640 426 -640 480 -640 427 -640 426 -640 424 -427 640 -640 563 -640 427 -640 480 -640 480 -640 471 -640 425 -640 427 -375 500 -640 384 -640 429 -640 480 -428 640 -640 404 -333 500 -640 427 -640 417 -640 480 -612 612 -375 500 -640 480 -612 612 -480 640 -640 427 -640 426 -640 480 -640 480 -480 640 -424 640 -640 427 -640 480 -640 427 -640 394 -640 428 -500 375 -640 640 -640 425 -500 500 -469 640 -375 500 -640 432 -480 640 -425 640 -457 640 -612 612 -427 640 -640 473 -640 478 -375 500 -640 426 -640 360 -640 426 -427 640 -425 640 -640 426 -480 640 -640 428 -640 426 -462 500 -375 500 -640 480 -640 429 -640 432 -640 427 -346 640 -500 333 -640 427 -640 625 -640 418 -640 425 -611 640 -640 512 -640 480 -640 428 -480 640 -640 411 -640 442 -640 480 -640 480 -480 640 -640 480 -640 435 -640 434 -640 424 -480 640 -640 481 -640 437 -640 480 -640 427 -640 426 -640 506 -640 480 -640 480 -640 361 -640 427 -640 480 -640 480 -640 423 -640 427 -640 480 -640 640 -640 427 -640 640 -480 640 -427 640 -640 349 -640 427 -500 353 -640 427 -640 480 -637 637 -427 640 -480 640 -640 480 -640 427 -519 389 -640 480 -640 480 -640 388 -480 640 -640 480 -380 640 -500 375 -349 640 -640 429 -480 640 -640 480 -640 480 -640 427 -496 640 -640 479 -427 640 -612 612 -640 360 -375 500 -500 342 -375 500 -640 427 -550 365 -640 428 -640 480 -640 428 -333 500 -427 640 -640 480 -640 449 -640 480 -640 480 -640 480 -640 480 -612 612 -640 426 -428 640 -640 480 -640 427 -427 640 -640 352 -411 640 -480 640 -640 480 -640 427 -640 480 -323 500 -480 640 -640 623 -612 612 -640 427 -500 375 -640 360 -640 480 -640 427 -640 427 -640 427 -500 333 -442 338 -640 426 -640 493 -480 640 -500 366 -333 500 -640 427 -640 431 -640 427 -480 640 -640 480 -481 640 -333 500 -640 447 -426 640 -480 640 -426 640 -612 612 -640 427 -640 427 -640 427 -640 389 -640 522 -640 480 -640 480 -612 612 -375 500 -640 427 -534 640 -640 480 -640 479 -398 640 -640 480 -640 480 -640 489 -640 480 -640 360 -640 483 -640 533 -640 425 -426 640 -500 334 -640 480 -640 373 -422 640 -500 374 -640 407 -640 383 -640 511 -480 640 -640 427 -320 240 -424 640 -640 489 -424 640 -640 427 -640 478 -640 480 -480 640 -640 398 -428 640 -640 426 -433 640 -640 360 -555 640 -480 640 -640 427 -640 428 -640 426 -640 480 -480 640 -500 375 -417 431 -500 375 -427 640 -480 640 -500 375 -640 428 -427 640 -640 427 -480 640 -640 427 -500 375 -490 640 -612 612 -423 640 -500 333 -375 500 -640 480 -640 480 -426 640 -426 640 -480 640 -640 427 -480 640 -640 480 -640 480 -640 424 -640 480 -640 463 -640 427 -640 291 -640 480 -640 427 -640 395 -640 480 -640 457 -360 640 -640 427 -415 640 -640 427 -640 435 -500 375 -640 480 -640 427 -427 640 -640 425 -640 440 -333 500 -640 480 -640 372 -500 338 -640 426 -640 480 -640 480 -640 360 -423 640 -427 640 -640 522 -333 500 -640 428 -640 498 -500 500 -422 640 -640 480 -480 640 -640 480 -640 512 -640 480 -640 480 -500 375 -500 332 -640 427 -429 640 -375 500 -640 480 -360 500 -640 480 -640 426 -640 426 -640 330 -500 333 -640 478 -640 480 -640 429 -640 480 -640 463 -410 640 -427 640 -640 480 -640 383 -460 640 -640 480 -640 480 -640 474 -640 426 -612 612 -640 480 -640 480 -500 496 -426 640 -640 467 -640 360 -427 640 -640 426 -480 640 -640 640 -480 640 -640 427 -323 500 -478 640 -640 427 -500 383 -640 425 -640 426 -424 640 -640 480 -640 426 -360 640 -312 640 -640 323 -479 640 -640 428 -500 375 -640 480 -640 480 -640 480 -427 640 -480 640 -640 359 -640 480 -640 465 -426 640 -640 480 -640 480 -640 480 -362 500 -640 467 -500 375 -640 480 -480 640 -640 427 -640 426 -640 480 -640 436 -640 480 -424 640 -640 428 -571 640 -640 427 -640 480 -640 482 -320 240 -640 398 -500 333 -500 333 -427 640 -500 375 -480 640 -427 640 -640 480 -376 640 -567 640 -480 640 -640 480 -640 426 -640 480 -640 479 -640 480 -427 640 -466 640 -640 480 -640 484 -640 482 -640 480 -640 480 -640 428 -427 640 -640 480 -640 511 -640 429 -640 425 -427 640 -640 427 -500 375 -640 427 -427 640 -427 640 -640 480 -500 375 -479 640 -640 427 -427 640 -500 500 -487 640 -640 459 -640 427 -640 480 -640 480 -640 480 -640 427 -473 640 -640 360 -426 640 -640 480 -640 409 -427 640 -640 359 -640 423 -500 300 -500 375 -640 427 -640 423 -640 425 -456 640 -640 328 -427 640 -640 480 -640 426 -427 640 -640 427 -500 375 -640 480 -500 375 -640 483 -399 500 -640 480 -640 427 -640 427 -640 427 -500 334 -640 480 -400 500 -427 640 -346 500 -640 313 -640 427 -640 360 -480 640 -640 478 -640 427 -640 427 -480 640 -640 480 -640 541 -500 322 -427 640 -640 379 -518 640 -640 426 -426 640 -640 425 -480 640 -640 428 -640 360 -640 426 -640 474 -480 640 -640 480 -640 480 -640 480 -500 375 -383 640 -480 640 -640 480 -640 414 -640 512 -640 427 -427 640 -500 333 -480 640 -640 425 -640 427 -600 453 -640 480 -640 425 -640 360 -640 480 -500 375 -640 360 -500 332 -640 442 -640 426 -500 331 -640 427 -640 435 -427 640 -640 427 -500 494 -640 420 -640 427 -640 427 -640 427 -500 472 -640 480 -500 375 -431 640 -500 333 -640 396 -640 428 -640 480 -500 375 -640 480 -500 465 -640 425 -640 424 -640 623 -640 430 -480 640 -640 480 -333 500 -640 480 -500 457 -640 479 -640 427 -640 427 -640 427 -500 252 -640 424 -427 640 -640 427 -640 480 -640 485 -640 426 -640 427 -640 433 -500 333 -480 640 -640 480 -428 640 -640 427 -640 427 -640 478 -500 457 -500 334 -640 480 -640 427 -349 640 -640 448 -380 500 -480 640 -640 437 -640 427 -544 640 -640 427 -427 640 -425 640 -612 612 -500 400 -640 480 -480 640 -375 500 -640 480 -640 640 -640 480 -500 375 -640 426 -640 424 -640 617 -500 377 -429 640 -640 479 -500 375 -640 429 -512 640 -426 640 -640 427 -640 427 -640 424 -640 480 -640 480 -640 442 -640 480 -640 491 -640 494 -640 480 -612 612 -467 500 -612 612 -640 534 -640 494 -640 409 -640 478 -480 640 -500 375 -427 640 -640 480 -500 348 -640 425 -640 480 -507 640 -640 480 -640 401 -640 480 -640 360 -633 640 -640 427 -500 333 -640 425 -428 285 -500 332 -640 429 -519 640 -640 480 -640 458 -640 480 -640 480 -334 500 -640 427 -480 640 -640 426 -640 426 -480 640 -640 428 -426 640 -480 640 -640 361 -640 480 -480 640 -612 612 -500 270 -640 419 -357 500 -640 427 -640 401 -512 640 -640 426 -612 612 -443 640 -427 640 -480 640 -640 480 -375 500 -427 640 -500 375 -458 640 -640 427 -640 457 -428 640 -640 479 -640 308 -500 332 -640 428 -427 640 -640 480 -640 427 -500 375 -500 375 -612 612 -640 426 -480 640 -361 640 -640 425 -640 480 -375 500 -427 640 -640 426 -640 425 -480 640 -640 558 -640 480 -640 434 -640 428 -640 398 -640 421 -640 480 -640 640 -640 428 -480 640 -640 427 -640 480 -640 427 -612 612 -640 426 -640 424 -573 640 -640 426 -640 427 -500 375 -640 480 -242 350 -640 426 -427 640 -480 640 -467 640 -640 427 -480 640 -640 480 -640 480 -640 427 -640 499 -480 640 -640 427 -640 480 -640 427 -391 640 -640 425 -640 426 -500 332 -480 640 -612 612 -480 640 -640 480 -439 640 -480 640 -478 640 -433 640 -640 480 -480 640 -640 194 -640 480 -640 480 -640 480 -640 640 -480 640 -640 619 -640 427 -640 480 -640 480 -640 426 -612 612 -640 428 -640 484 -427 640 -640 480 -500 374 -425 640 -640 425 -640 427 -428 640 -640 640 -640 427 -509 640 -333 500 -500 375 -325 485 -513 640 -640 425 -640 426 -500 375 -640 480 -640 428 -460 640 -640 480 -480 640 -640 480 -640 421 -640 427 -640 480 -480 640 -480 640 -640 262 -640 480 -640 480 -640 424 -640 427 -507 640 -640 427 -640 531 -427 640 -640 480 -640 480 -640 427 -500 375 -640 464 -522 640 -640 427 -500 332 -425 640 -640 427 -640 473 -640 398 -640 480 -640 428 -640 359 -640 480 -480 640 -640 426 -480 640 -333 500 -640 424 -480 640 -612 612 -500 375 -426 640 -640 427 -640 426 -480 640 -640 428 -640 425 -480 640 -487 640 -541 640 -512 640 -640 427 -424 640 -500 375 -640 446 -480 640 -480 640 -640 425 -428 640 -640 427 -640 389 -480 640 -640 320 -480 640 -480 640 -459 640 -640 469 -640 286 -640 427 -640 480 -640 549 -640 360 -375 500 -612 612 -640 484 -640 427 -640 427 -640 417 -640 480 -640 508 -483 640 -640 640 -612 612 -640 480 -427 640 -640 427 -500 375 -500 400 -480 640 -640 480 -640 640 -640 480 -640 640 -640 320 -480 640 -640 427 -640 480 -640 480 -640 480 -375 500 -640 427 -427 640 -640 428 -640 480 -640 389 -640 480 -640 428 -640 480 -500 375 -640 425 -640 429 -640 427 -640 480 -640 513 -640 344 -640 480 -429 640 -480 640 -500 394 -500 375 -500 354 -426 640 -500 343 -640 428 -640 427 -640 480 -640 423 -150 200 -640 426 -640 360 -640 480 -481 500 -300 225 -640 426 -480 640 -640 423 -500 375 -480 640 -427 640 -640 360 -600 473 -640 480 -640 427 -640 427 -640 427 -640 480 -640 464 -375 500 -427 640 -427 640 -640 400 -480 640 -640 427 -500 332 -480 640 -640 497 -427 640 -427 640 -640 425 -360 640 -633 640 -591 640 -480 360 -640 427 -640 427 -640 439 -427 640 -640 481 -480 640 -480 640 -427 640 -640 427 -500 400 -478 640 -500 375 -640 479 -640 427 -640 427 -640 513 -640 360 -640 427 -640 512 -640 427 -640 427 -640 480 -640 427 -640 480 -334 500 -640 480 -415 640 -427 640 -640 427 -640 480 -640 640 -500 332 -640 427 -480 640 -640 411 -640 480 -640 419 -500 333 -640 480 -426 640 -482 640 -640 480 -640 480 -640 427 -478 640 -375 500 -640 427 -500 375 -640 425 -59 72 -640 428 -405 500 -640 427 -500 330 -427 640 -427 640 -400 500 -640 480 -375 500 -438 640 -640 480 -500 362 -426 640 -480 640 -480 640 -640 426 -640 480 -640 480 -427 640 -640 480 -640 425 -640 447 -640 360 -640 480 -640 428 -500 399 -500 332 -640 427 -640 480 -357 500 -640 444 -640 426 -456 640 -480 640 -640 335 -478 640 -640 427 -640 480 -640 425 -640 461 -500 375 -640 480 -427 640 -480 640 -499 500 -640 480 -640 427 -640 424 -640 426 -640 429 -500 480 -640 426 -480 640 -640 427 -640 427 -500 375 -480 640 -326 246 -640 416 -640 427 -640 391 -640 427 -640 427 -640 426 -640 423 -500 375 -640 640 -640 480 -640 426 -640 427 -640 480 -640 427 -640 427 -640 426 -428 640 -480 640 -640 427 -640 427 -375 500 -426 640 -480 640 -640 360 -640 457 -640 480 -640 480 -640 427 -640 480 -640 480 -640 480 -480 640 -480 640 -612 612 -428 640 -640 480 -640 425 -639 640 -480 640 -640 486 -427 640 -640 481 -640 426 -640 400 -640 480 -427 640 -551 640 -640 426 -640 480 -640 480 -640 480 -640 480 -375 500 -640 480 -640 428 -479 640 -640 513 -604 402 -519 640 -640 401 -640 360 -640 425 -500 333 -425 640 -640 425 -640 480 -640 419 -500 375 -640 640 -640 427 -640 427 -640 480 -640 414 -612 612 -480 640 -480 640 -478 640 -480 640 -640 480 -500 375 -640 640 -640 428 -640 426 -640 480 -640 463 -640 480 -640 428 -640 427 -640 480 -500 333 -500 377 -640 480 -640 454 -640 347 -500 331 -640 427 -640 427 -640 480 -500 375 -640 405 -432 640 -640 427 -500 400 -640 480 -640 480 -640 602 -192 640 -640 480 -640 484 -480 640 -640 427 -500 334 -640 480 -640 480 -375 500 -640 429 -640 347 -640 426 -640 480 -640 480 -640 427 -640 449 -640 427 -640 427 -480 640 -427 640 -640 466 -612 612 -480 640 -640 427 -640 426 -640 424 -640 429 -424 640 -640 425 -640 449 -640 426 -427 640 -640 480 -640 427 -640 480 -640 534 -640 480 -480 640 -480 640 -640 318 -640 426 -640 427 -640 493 -640 427 -640 480 -640 480 -640 380 -640 480 -480 640 -640 480 -640 396 -640 480 -640 427 -640 480 -462 371 -640 461 -640 427 -485 640 -500 640 -368 640 -480 640 -640 427 -640 480 -508 640 -640 424 -293 500 -500 375 -429 640 -640 426 -640 480 -640 480 -640 480 -640 481 -640 360 -640 427 -335 500 -640 479 -640 480 -640 427 -640 427 -640 416 -499 640 -640 480 -480 640 -640 425 -640 480 -640 480 -640 425 -640 426 -640 306 -480 640 -480 640 -413 640 -640 268 -375 500 -640 427 -640 480 -500 375 -640 284 -640 480 -480 640 -640 427 -480 640 -406 640 -640 480 -500 375 -480 640 -640 467 -480 640 -426 640 -640 427 -640 427 -427 640 -640 480 -500 333 -331 500 -480 640 -478 640 -423 640 -361 640 -640 480 -640 429 -640 640 -506 640 -640 500 -640 427 -500 333 -480 640 -612 612 -429 640 -375 500 -640 480 -427 640 -640 427 -640 428 -640 427 -500 375 -640 506 -383 640 -640 426 -640 428 -640 480 -640 427 -500 333 -640 480 -356 640 -426 640 -612 612 -640 512 -640 424 -640 480 -640 480 -640 480 -640 480 -640 426 -478 640 -640 424 -426 640 -425 640 -640 428 -500 375 -333 500 -500 333 -612 612 -425 640 -640 480 -640 429 -640 426 -640 426 -640 480 -640 480 -640 427 -640 425 -640 360 -500 333 -480 640 -640 474 -480 640 -640 428 -640 483 -446 597 -640 413 -500 375 -480 640 -640 427 -500 333 -640 427 -640 368 -500 375 -640 368 -640 640 -465 640 -428 640 -640 428 -640 383 -500 375 -640 427 -640 403 -640 480 -640 466 -333 500 -640 480 -640 426 -480 640 -640 426 -640 426 -640 480 -640 480 -640 478 -640 422 -640 480 -640 426 -640 480 -480 640 -640 480 -640 427 -640 427 -427 640 -612 612 -612 612 -640 427 -640 406 -548 640 -640 427 -640 512 -428 640 -500 333 -500 376 -640 419 -640 400 -424 640 -500 375 -612 612 -640 480 -640 426 -640 456 -640 425 -640 480 -640 480 -428 640 -427 640 -453 640 -640 427 -640 480 -612 612 -640 480 -427 640 -640 480 -360 640 -500 375 -333 500 -640 426 -640 278 -500 334 -640 427 -510 640 -640 424 -500 368 -640 478 -640 480 -640 383 -375 500 -480 640 -640 480 -640 480 -640 480 -500 375 -640 427 -640 425 -427 640 -480 640 -640 455 -640 434 -640 427 -521 640 -640 425 -426 640 -480 640 -640 427 -640 429 -640 480 -640 427 -640 428 -640 480 -640 427 -480 640 -640 480 -640 480 -426 640 -508 640 -448 500 -428 640 -640 427 -640 425 -640 480 -612 612 -640 426 -612 612 -640 427 -640 480 -640 480 -480 640 -500 219 -640 480 -640 374 -426 640 -414 640 -640 427 -640 427 -640 538 -640 426 -480 640 -426 640 -640 480 -640 480 -640 480 -480 640 -640 431 -500 333 -640 427 -428 640 -640 427 -640 425 -500 402 -640 425 -640 480 -640 480 -426 640 -640 480 -384 640 -521 617 -478 640 -428 640 -640 427 -640 480 -640 480 -640 426 -640 480 -640 214 -640 609 -640 427 -640 480 -612 612 -640 398 -480 640 -640 480 -640 426 -640 426 -427 640 -428 640 -640 480 -640 480 -640 480 -427 640 -500 375 -375 500 -640 480 -480 640 -500 375 -640 640 -640 480 -480 640 -375 500 -640 594 -480 640 -500 369 -640 427 -640 480 -640 426 -500 375 -427 640 -640 395 -640 424 -640 427 -640 428 -480 640 -640 480 -480 640 -375 500 -640 427 -640 427 -640 482 -427 640 -429 640 -500 375 -334 500 -640 567 -640 236 -612 612 -640 474 -640 480 -640 443 -640 480 -427 640 -640 429 -424 640 -640 389 -640 426 -640 427 -428 640 -640 480 -492 640 -500 336 -297 500 -640 424 -640 480 -640 427 -351 494 -426 640 -640 426 -500 375 -640 427 -640 428 -640 480 -640 423 -494 640 -375 500 -425 640 -306 408 -640 360 -640 480 -640 640 -500 380 -500 375 -640 480 -640 478 -500 375 -640 426 -638 640 -640 480 -333 500 -480 640 -640 427 -500 375 -500 283 -640 481 -640 426 -500 394 -640 427 -640 480 -268 400 -640 473 -640 408 -640 480 -640 427 -427 640 -640 427 -640 266 -332 500 -640 427 -640 425 -426 640 -500 337 -640 427 -568 320 -556 640 -640 480 -500 333 -500 375 -640 482 -288 432 -640 427 -640 480 -640 480 -500 375 -640 458 -640 427 -640 480 -640 480 -360 640 -640 480 -640 427 -640 426 -640 428 -640 480 -427 640 -480 640 -427 640 -333 500 -480 640 -640 427 -428 640 -480 640 -427 640 -424 640 -500 331 -500 414 -480 640 -500 346 -360 640 -640 480 -640 421 -640 425 -640 480 -480 640 -426 640 -480 640 -640 425 -481 640 -640 427 -500 334 -640 429 -500 333 -480 640 -375 500 -640 480 -640 427 -640 404 -480 640 -640 336 -640 480 -640 427 -424 640 -640 428 -640 426 -640 359 -640 424 -640 360 -640 426 -640 427 -640 480 -480 640 -640 480 -640 480 -640 427 -640 360 -640 427 -640 427 -640 480 -640 427 -426 640 -640 640 -500 404 -640 480 -640 480 -640 427 -640 427 -640 480 -640 427 -640 640 -640 413 -450 600 -640 427 -333 500 -240 320 -640 433 -640 480 -640 480 -480 640 -640 424 -425 640 -456 640 -500 375 -640 427 -484 640 -640 548 -640 480 -319 212 -640 480 -425 640 -400 600 -640 480 -640 387 -640 427 -396 640 -640 480 -640 480 -480 640 -640 480 -500 375 -640 480 -425 640 -640 152 -480 640 -467 640 -640 428 -309 500 -334 500 -640 457 -480 640 -640 480 -428 640 -640 427 -640 448 -640 428 -640 512 -500 375 -640 427 -640 480 -640 480 -640 480 -640 426 -640 427 -640 489 -375 500 -640 488 -640 427 -640 427 -640 427 -640 480 -640 480 -640 480 -500 375 -500 335 -640 480 -640 480 -480 640 -640 349 -480 640 -480 640 -640 428 -480 640 -640 329 -511 640 -640 427 -640 480 -640 480 -640 480 -480 640 -640 480 -500 375 -640 427 -640 491 -477 640 -640 426 -640 480 -640 480 -500 331 -427 640 -512 640 -640 426 -640 289 -500 333 -640 640 -640 427 -640 480 -640 429 -640 431 -640 427 -640 426 -640 480 -640 427 -640 426 -640 480 -640 480 -640 480 -500 375 -640 480 -480 640 -640 427 -640 427 -640 610 -640 427 -480 640 -500 358 -640 429 -640 480 -480 640 -426 640 -640 426 -427 640 -640 640 -640 426 -640 425 -500 334 -640 480 -640 216 -425 640 -640 427 -640 416 -375 500 -640 480 -640 512 -481 640 -640 480 -640 415 -480 640 -640 360 -640 426 -480 640 -640 424 -640 427 -375 500 -432 640 -640 480 -640 349 -640 424 -500 333 -428 640 -480 640 -640 461 -640 422 -640 429 -640 480 -640 480 -640 480 -640 640 -640 480 -640 454 -640 371 -481 640 -640 640 -640 480 -640 480 -640 425 -640 640 -640 452 -640 315 -640 427 -640 368 -612 612 -500 375 -640 457 -640 579 -640 427 -427 640 -600 367 -640 480 -628 640 -640 360 -640 480 -640 427 -480 640 -479 640 -640 234 -640 420 -500 375 -640 480 -640 427 -640 480 -640 480 -640 427 -612 612 -500 400 -500 333 -640 480 -427 640 -640 427 -334 640 -612 612 -640 480 -640 427 -612 612 -640 480 -489 640 -427 640 -640 428 -640 427 -640 509 -640 480 -500 102 -427 640 -640 428 -640 480 -640 360 -588 640 -423 640 -640 507 -375 500 -375 500 -612 612 -640 428 -427 640 -500 375 -640 480 -640 480 -640 480 -640 427 -640 427 -640 383 -640 428 -640 480 -640 425 -640 426 -640 472 -640 400 -639 640 -500 333 -500 375 -375 500 -500 333 -640 480 -640 426 -640 424 -427 640 -640 427 -640 425 -640 480 -640 427 -500 375 -640 409 -500 375 -640 423 -640 424 -640 425 -640 470 -640 480 -640 480 -612 612 -640 640 -640 480 -640 426 -640 427 -612 612 -640 480 -426 640 -640 401 -640 253 -640 427 -640 427 -427 640 -640 480 -640 427 -640 480 -640 588 -640 495 -640 429 -640 427 -640 480 -640 427 -491 500 -480 640 -640 406 -640 480 -640 425 -427 640 -640 425 -640 427 -427 640 -640 427 -500 333 -640 427 -500 375 -640 349 -426 640 -640 480 -375 500 -640 480 -426 640 -640 360 -640 425 -640 484 -426 640 -333 500 -640 480 -640 480 -640 427 -640 361 -640 480 -640 425 -640 379 -640 480 -640 480 -423 640 -323 500 -640 377 -640 427 -640 480 -640 424 -640 360 -640 480 -640 474 -640 480 -640 489 -640 480 -500 331 -480 640 -584 640 -333 500 -640 427 -640 429 -640 427 -640 480 -640 480 -640 427 -480 640 -426 640 -640 450 -640 480 -640 425 -640 427 -640 480 -640 427 -640 480 -640 480 -480 640 -478 640 -640 427 -640 480 -640 427 -480 640 -640 480 -640 480 -640 427 -478 640 -427 640 -640 427 -427 640 -640 375 -500 375 -640 427 -640 427 -591 640 -640 480 -640 480 -480 640 -640 480 -640 480 -480 640 -640 480 -640 381 -640 480 -500 393 -640 480 -424 640 -640 480 -640 480 -429 640 -640 427 -640 480 -500 375 -428 640 -314 500 -640 427 -640 480 -480 640 -550 473 -640 457 -640 480 -640 480 -480 640 -640 426 -640 480 -366 640 -640 378 -457 640 -640 503 -640 427 -427 640 -640 480 -510 640 -640 420 -640 625 -375 500 -500 375 -640 480 -640 480 -640 427 -427 640 -640 458 -640 481 -427 640 -427 640 -640 480 -640 427 -612 612 -640 425 -640 360 -640 480 -640 391 -612 612 -640 427 -640 427 -640 480 -640 480 -640 480 -640 427 -640 289 -480 640 -263 350 -640 479 -640 426 -480 640 -640 480 -640 640 -480 640 -640 427 -640 480 -537 403 -427 640 -427 640 -480 640 -438 640 -640 427 -500 375 -640 480 -429 640 -480 640 -500 338 -640 424 -500 375 -640 438 -640 424 -640 303 -612 612 -640 480 -480 640 -640 425 -640 640 -640 480 -513 640 -500 332 -640 427 -500 486 -640 444 -640 424 -427 640 -640 480 -480 640 -640 427 -640 427 -640 480 -640 427 -640 480 -640 431 -640 426 -640 480 -640 429 -375 500 -480 640 -640 480 -640 427 -640 427 -640 444 -480 640 -640 480 -240 320 -640 480 -500 308 -640 478 -640 427 -640 480 -640 480 -640 425 -640 601 -500 333 -640 480 -500 375 -640 427 -640 425 -640 427 -480 640 -640 427 -640 426 -500 333 -640 480 -640 425 -500 400 -640 479 -640 427 -640 425 -640 424 -640 480 -375 500 -500 375 -333 500 -640 467 -640 480 -640 428 -424 640 -640 480 -640 640 -640 469 -640 428 -640 427 -375 500 -640 640 -500 375 -640 427 -500 334 -334 500 -640 424 -427 640 -426 640 -480 640 -640 416 -640 427 -500 375 -640 480 -640 480 -640 382 -640 480 -500 472 -640 426 -640 426 -640 427 -640 426 -375 500 -508 640 -640 418 -333 500 -640 480 -640 480 -640 401 -480 640 -426 640 -640 478 -480 640 -640 428 -375 500 -427 640 -640 427 -640 536 -640 409 -640 413 -640 425 -478 640 -640 396 -640 480 -640 360 -640 480 -640 427 -480 640 -640 425 -640 425 -640 480 -640 424 -640 484 -640 429 -640 427 -480 640 -500 375 -500 333 -500 375 -500 375 -480 640 -500 333 -427 640 -500 311 -427 640 -480 640 -640 480 -640 480 -640 427 -428 640 -640 424 -640 427 -640 480 -333 500 -640 407 -640 428 -640 334 -480 640 -640 427 -615 461 -428 640 -427 640 -640 426 -480 640 -640 424 -500 332 -640 320 -640 425 -583 640 -500 375 -640 480 -624 640 -640 217 -640 400 -360 270 -500 375 -640 426 -640 430 -640 480 -285 640 -640 480 -640 480 -640 427 -444 640 -480 640 -640 403 -640 427 -640 427 -640 461 -640 427 -640 511 -640 480 -640 320 -427 640 -480 640 -640 427 -640 333 -640 457 -640 441 -640 480 -614 640 -480 640 -333 500 -352 288 -640 457 -640 480 -640 480 -509 503 -425 640 -640 425 -427 640 -640 391 -640 427 -640 480 -480 640 -640 400 -640 482 -375 500 -640 427 -640 511 -480 640 -500 327 -640 427 -640 360 -640 480 -640 480 -478 640 -640 428 -640 480 -640 424 -640 480 -460 640 -480 640 -375 500 -640 434 -640 480 -480 640 -640 426 -640 427 -640 427 -375 500 -640 480 -640 450 -640 428 -640 480 -500 358 -640 424 -640 480 -500 375 -640 480 -480 640 -640 480 -480 640 -640 424 -640 480 -480 640 -640 427 -375 500 -640 451 -640 480 -640 427 -427 640 -480 640 -426 640 -640 359 -640 403 -640 480 -640 480 -436 640 -640 480 -640 426 -640 480 -640 480 -640 480 -640 433 -640 427 -640 480 -480 640 -640 480 -640 480 -640 480 -640 536 -640 480 -500 326 -640 605 -427 640 -640 427 -429 640 -640 480 -640 360 -425 640 -500 333 -427 640 -640 434 -640 427 -426 640 -640 427 -480 640 -640 426 -240 320 -640 424 -640 551 -434 640 -640 424 -375 500 -640 426 -640 427 -500 375 -427 640 -640 356 -640 480 -480 640 -640 480 -375 500 -640 480 -640 427 -640 427 -480 640 -640 424 -640 422 -640 427 -640 480 -640 480 -428 640 -480 640 -480 640 -425 640 -480 640 -478 640 -500 354 -480 640 -640 426 -500 375 -500 333 -480 640 -640 480 -427 640 -640 427 -500 375 -640 481 -640 530 -640 480 -480 640 -495 500 -640 480 -640 503 -426 500 -479 640 -480 640 -640 556 -640 480 -488 286 -640 427 -640 480 -640 480 -461 640 -500 341 -640 416 -500 375 -640 418 -640 480 -457 640 -334 500 -640 427 -500 332 -640 480 -500 500 -640 480 -640 480 -640 354 -640 426 -640 428 -612 612 -640 428 -612 612 -640 480 -640 480 -640 480 -640 427 -640 480 -640 480 -640 427 -640 480 -500 375 -375 500 -640 480 -375 500 -640 480 -500 375 -640 477 -640 425 -640 430 -640 430 -640 426 -640 480 -500 400 -640 478 -640 427 -640 427 -427 640 -640 460 -640 427 -612 612 -640 424 -640 480 -570 640 -640 241 -640 426 -640 480 -640 480 -640 480 -427 640 -640 427 -500 375 -626 640 -640 427 -640 509 -640 480 -382 640 -640 427 -640 640 -480 640 -640 480 -500 375 -500 354 -640 480 -640 425 -640 427 -612 612 -640 427 -640 427 -640 359 -640 427 -640 480 -480 640 -612 612 -480 640 -640 480 -640 480 -500 376 -640 444 -640 426 -501 640 -640 480 -640 480 -500 375 -640 427 -612 612 -443 640 -400 500 -478 640 -640 424 -600 400 -447 640 -466 640 -640 480 -640 386 -640 426 -640 427 -480 640 -640 360 -640 480 -640 427 -500 333 -479 640 -640 590 -427 640 -640 425 -500 324 -640 480 -640 326 -500 375 -426 640 -330 500 -480 640 -640 480 -640 480 -500 375 -612 612 -382 640 -640 427 -426 640 -640 480 -640 480 -640 640 -640 427 -640 360 -500 375 -640 427 -640 480 -428 640 -640 480 -640 419 -640 425 -500 375 -640 481 -640 426 -640 480 -500 432 -640 427 -640 480 -640 427 -480 640 -640 425 -500 400 -480 640 -640 480 -640 480 -640 480 -640 480 -640 427 -640 427 -640 377 -425 640 -612 612 -640 427 -640 463 -640 640 -488 500 -640 456 -640 530 -480 640 -640 427 -500 291 -640 426 -640 427 -640 480 -480 640 -640 427 -640 480 -640 480 -640 427 -480 640 -640 360 -334 500 -640 428 -640 427 -640 427 -357 500 -500 400 -640 427 -640 427 -640 480 -375 500 -640 444 -500 333 -426 640 -427 640 -640 428 -640 427 -500 375 -640 425 -640 480 -640 427 -640 424 -500 492 -500 375 -640 480 -640 427 -640 480 -640 504 -500 375 -640 424 -640 386 -640 480 -480 640 -640 422 -640 480 -640 426 -500 335 -640 427 -335 500 -523 640 -640 426 -640 420 -360 270 -423 640 -640 427 -640 420 -500 375 -428 640 -500 335 -640 428 -640 480 -640 426 -640 480 -500 375 -427 640 -426 640 -640 368 -500 333 -640 360 -640 480 -427 640 -427 640 -640 360 -640 410 -480 640 -640 427 -640 330 -334 500 -640 427 -640 640 -500 349 -500 332 -640 430 -500 375 -640 480 -640 490 -640 480 -640 428 -640 428 -640 480 -640 480 -332 500 -640 379 -640 427 -478 640 -640 427 -640 427 -640 480 -640 640 -640 406 -481 640 -640 502 -640 480 -640 478 -640 425 -500 375 -640 480 -640 426 -640 390 -640 480 -640 480 -375 500 -640 427 -480 640 -640 480 -427 640 -640 426 -612 612 -640 480 -640 284 -500 375 -480 640 -640 483 -640 481 -640 427 -500 375 -573 598 -640 428 -640 291 -500 339 -426 640 -500 332 -640 425 -457 640 -612 612 -640 400 -640 427 -375 500 -500 334 -640 427 -640 361 -640 400 -640 631 -640 320 -640 480 -480 640 -640 480 -640 480 -640 427 -500 375 -500 483 -640 480 -500 377 -640 480 -500 333 -640 491 -640 508 -640 426 -500 333 -640 480 -640 480 -640 468 -640 360 -640 427 -640 443 -629 640 -640 282 -640 383 -640 478 -640 427 -640 480 -500 375 -640 427 -640 480 -495 640 -333 500 -640 424 -640 429 -640 430 -640 480 -640 480 -640 480 -491 640 -640 424 -640 428 -640 427 -640 480 -640 482 -640 441 -500 375 -500 375 -500 375 -640 458 -640 427 -640 427 -640 480 -640 424 -426 640 -393 640 -640 426 -640 424 -640 229 -640 480 -323 640 -640 478 -500 375 -612 612 -640 383 -640 360 -333 500 -427 640 -640 427 -640 257 -500 333 -640 480 -640 427 -640 424 -640 458 -640 480 -640 427 -640 427 -640 480 -640 517 -640 360 -500 375 -427 640 -640 480 -500 375 -640 480 -335 500 -600 450 -500 333 -431 640 -640 480 -640 427 -640 478 -640 426 -640 521 -640 428 -640 480 -640 479 -640 640 -640 480 -640 427 -500 375 -640 480 -640 480 -640 480 -500 357 -640 586 -640 480 -500 333 -500 349 -480 640 -500 333 -640 478 -467 640 -426 640 -640 480 -424 640 -500 500 -640 426 -640 480 -478 640 -640 360 -640 480 -428 640 -640 428 -640 428 -640 574 -640 480 -480 640 -640 480 -640 427 -640 480 -640 480 -640 480 -640 427 -500 375 -640 427 -500 375 -640 480 -640 471 -500 375 -602 640 -500 375 -480 640 -640 480 -640 427 -640 427 -427 640 -640 427 -640 428 -640 427 -640 438 -640 480 -480 640 -640 400 -500 375 -480 640 -450 481 -425 640 -640 480 -428 640 -500 375 -640 424 -640 427 -570 640 -640 480 -640 427 -640 523 -450 600 -640 427 -528 604 -640 439 -610 423 -500 499 -427 640 -640 425 -640 427 -640 480 -426 640 -640 480 -640 425 -640 360 -480 640 -640 427 -640 426 -480 640 -640 443 -640 484 -640 480 -640 480 -500 333 -500 375 -480 640 -500 374 -640 423 -500 375 -640 361 -640 415 -500 375 -431 640 -435 640 -640 424 -640 360 -612 407 -640 427 -426 640 -640 640 -640 480 -478 640 -640 517 -640 480 -402 600 -296 444 -640 427 -480 640 -640 428 -427 640 -480 360 -500 255 -640 383 -640 426 -480 640 -500 334 -500 375 -500 335 -480 640 -640 480 -500 333 -640 480 -640 397 -640 428 -480 364 -640 427 -640 428 -640 360 -640 480 -640 426 -640 427 -427 640 -640 480 -640 428 -640 484 -640 425 -254 192 -640 484 -640 500 -640 480 -640 480 -640 424 -640 480 -640 480 -640 428 -429 640 -480 640 -428 640 -449 640 -640 424 -612 612 -640 527 -612 612 -500 375 -336 500 -640 480 -640 427 -640 427 -640 428 -500 333 -640 427 -480 640 -640 509 -640 457 -640 427 -640 427 -640 425 -640 480 -640 480 -500 334 -500 375 -640 427 -640 428 -427 640 -640 480 -612 612 -500 333 -640 544 -640 480 -640 427 -640 427 -604 453 -375 500 -640 360 -640 480 -640 480 -640 427 -640 427 -597 640 -640 428 -640 359 -640 427 -427 640 -459 640 -526 640 -640 424 -427 640 -640 513 -359 500 -640 437 -640 481 -640 480 -500 375 -640 427 -640 480 -640 480 -640 425 -640 512 -640 449 -500 333 -640 480 -640 424 -457 640 -640 427 -640 427 -640 480 -640 427 -500 333 -500 334 -640 472 -500 333 -640 478 -640 480 -333 640 -640 480 -500 375 -640 427 -640 427 -640 480 -480 640 -640 480 -640 426 -640 429 -508 640 -640 359 -480 640 -640 427 -640 480 -640 427 -500 375 -640 480 -427 640 -640 427 -640 480 -640 480 -640 428 -640 478 -375 500 -640 378 -640 429 -640 480 -500 333 -500 500 -443 450 -640 418 -640 480 -640 427 -640 427 -480 640 -640 424 -640 426 -583 640 -500 317 -500 239 -640 480 -640 427 -640 427 -640 480 -500 500 -480 640 -427 640 -640 428 -612 612 -640 480 -640 427 -363 500 -640 480 -480 640 -640 480 -640 427 -640 360 -375 500 -640 480 -480 640 -480 640 -640 329 -303 640 -640 479 -640 427 -640 426 -640 425 -480 640 -481 640 -322 640 -375 500 -480 640 -640 640 -640 321 -480 640 -500 375 -612 612 -640 480 -640 426 -640 427 -640 446 -500 375 -640 428 -480 640 -640 424 -640 427 -640 480 -640 640 -556 640 -640 443 -449 640 -640 425 -640 427 -500 375 -640 480 -500 400 -424 640 -640 480 -640 480 -640 425 -640 428 -640 427 -480 640 -640 427 -640 424 -640 480 -640 513 -640 428 -427 640 -640 479 -640 483 -640 480 -640 427 -500 375 -640 480 -640 431 -640 426 -500 375 -640 425 -333 500 -640 480 -640 480 -640 480 -640 383 -640 360 -480 640 -640 425 -427 640 -427 640 -480 640 -640 480 -640 480 -612 612 -480 640 -640 454 -640 480 -500 319 -500 485 -426 640 -640 480 -640 392 -640 426 -612 612 -500 383 -427 640 -640 427 -640 431 -640 427 -640 452 -500 335 -640 449 -640 429 -640 480 -640 453 -640 426 -640 473 -640 473 -640 480 -640 480 -640 419 -375 500 -640 427 -640 427 -640 427 -426 640 -640 360 -640 569 -640 480 -640 427 -425 640 -640 427 -500 207 -480 640 -500 375 -640 427 -640 376 -640 480 -640 456 -612 612 -500 332 -640 480 -640 480 -640 462 -640 427 -640 427 -427 640 -640 480 -640 480 -400 500 -500 375 -640 350 -640 640 -439 640 -640 480 -640 480 -640 480 -640 480 -569 640 -640 356 -640 437 -640 427 -640 428 -426 640 -640 376 -640 308 -640 469 -640 373 -640 480 -640 480 -500 375 -640 427 -640 423 -640 480 -640 413 -480 640 -612 612 -640 480 -480 640 -427 640 -640 427 -640 430 -480 640 -640 471 -640 480 -640 426 -640 480 -436 640 -640 426 -612 612 -425 640 -640 480 -640 427 -640 417 -640 426 -640 480 -512 640 -640 427 -575 575 -640 174 -640 441 -640 504 -640 480 -640 480 -480 640 -416 640 -333 500 -640 436 -640 480 -640 480 -640 427 -640 480 -640 480 -640 475 -640 423 -640 480 -640 478 -640 401 -640 425 -640 414 -640 478 -500 405 -500 375 -640 439 -640 426 -640 480 -640 456 -500 375 -640 480 -500 375 -640 428 -640 204 -640 427 -640 426 -640 480 -640 426 -624 640 -640 640 -640 193 -500 375 -640 428 -427 640 -486 640 -640 360 -640 242 -640 424 -640 360 -640 480 -640 479 -500 377 -640 606 -640 482 -640 425 -640 480 -604 453 -480 397 -427 640 -640 480 -500 448 -320 240 -500 500 -640 210 -640 424 -500 341 -640 480 -480 360 -500 218 -640 338 -500 470 -640 490 -640 479 -425 640 -640 480 -640 427 -640 478 -640 492 -640 480 -500 333 -500 375 -480 640 -640 480 -640 427 -640 515 -640 480 -640 480 -444 595 -640 344 -376 500 -640 427 -640 427 -640 429 -640 428 -640 480 -640 480 -640 427 -640 480 -640 427 -640 428 -336 500 -640 426 -640 577 -480 640 -640 426 -500 331 -640 427 -640 480 -500 375 -640 514 -640 640 -640 480 -630 640 -640 480 -480 640 -612 612 -640 480 -392 218 -640 427 -640 427 -640 425 -640 310 -640 480 -640 480 -640 427 -640 427 -640 425 -640 427 -640 427 -640 426 -640 425 -480 640 -500 375 -500 375 -640 427 -640 480 -640 425 -400 640 -640 423 -640 480 -640 480 -427 640 -640 427 -640 468 -640 424 -640 359 -150 225 -640 385 -640 625 -640 480 -640 480 -640 425 -640 640 -375 500 -640 480 -500 317 -640 427 -640 457 -375 500 -640 480 -640 426 -640 427 -640 351 -640 480 -640 640 -640 480 -480 640 -640 432 -500 167 -480 640 -640 428 -640 429 -427 640 -500 340 -425 640 -500 396 -240 320 -640 427 -640 428 -640 480 -640 480 -640 400 -640 480 -640 427 -640 480 -360 640 -640 424 -375 500 -612 612 -640 533 -640 428 -481 640 -500 500 -640 429 -500 335 -500 375 -500 375 -640 426 -640 427 -640 426 -640 480 -640 427 -333 500 -640 480 -486 640 -427 640 -640 637 -640 480 -500 500 -640 426 -640 428 -427 640 -640 640 -640 427 -480 640 -640 484 -640 426 -640 427 -640 320 -640 305 -640 480 -640 480 -426 640 -640 438 -640 480 -640 480 -640 427 -640 478 -640 481 -375 500 -612 612 -640 177 -500 427 -480 640 -500 333 -426 640 -480 640 -640 574 -640 461 -640 512 -640 428 -640 480 -500 333 -640 509 -640 427 -640 480 -640 528 -425 640 -612 612 -640 427 -640 455 -640 430 -640 375 -640 427 -640 480 -640 480 -500 375 -640 426 -500 332 -640 427 -640 640 -640 509 -640 529 -640 480 -640 415 -640 425 -640 427 -640 480 -640 480 -640 480 -640 640 -427 640 -640 427 -427 640 -480 640 -640 426 -333 500 -640 454 -640 427 -640 480 -640 640 -640 480 -640 429 -424 640 -640 581 -640 331 -500 375 -640 480 -640 427 -640 403 -640 480 -640 426 -640 480 -640 348 -640 298 -640 480 -640 160 -500 385 -425 640 -640 480 -640 480 -433 640 -640 551 -424 640 -640 462 -480 640 -640 424 -500 375 -640 583 -640 427 -427 640 -640 425 -640 521 -640 480 -640 480 -425 640 -640 426 -333 500 -640 424 -480 640 -426 640 -249 640 -640 427 -500 375 -374 500 -612 612 -640 427 -640 480 -308 500 -640 480 -640 466 -640 480 -500 375 -640 480 -640 427 -612 612 -640 480 -640 426 -640 416 -480 640 -500 333 -640 380 -427 640 -640 480 -640 383 -500 335 -500 375 -500 500 -640 441 -346 500 -480 640 -612 612 -640 427 -640 425 -426 640 -640 427 -640 427 -640 427 -640 480 -640 480 -640 478 -640 427 -640 480 -612 612 -640 428 -640 429 -640 480 -500 375 -640 480 -480 272 -640 480 -640 480 -640 560 -500 319 -480 640 -640 427 -640 426 -500 375 -427 640 -640 427 -640 427 -640 425 -500 375 -640 480 -640 480 -426 640 -640 439 -640 480 -640 292 -480 640 -500 347 -480 640 -640 427 -640 480 -480 640 -640 427 -640 478 -640 512 -640 480 -640 480 -500 340 -425 640 -640 480 -640 478 -512 640 -500 375 -640 426 -426 640 -640 480 -640 424 -333 500 -640 328 -480 640 -640 480 -640 480 -447 500 -640 427 -640 371 -480 640 -427 640 -640 480 -500 375 -640 480 -640 211 -640 427 -375 500 -480 360 -640 424 -480 640 -480 640 -480 640 -480 640 -500 500 -612 612 -545 640 -640 480 -427 640 -640 480 -498 640 -500 333 -640 466 -640 416 -640 480 -612 612 -480 640 -322 500 -640 399 -500 375 -640 480 -640 457 -640 480 -640 426 -640 425 -640 480 -640 480 -500 375 -640 427 -375 500 -640 480 -640 480 -640 481 -640 425 -640 421 -426 640 -640 427 -427 640 -612 612 -640 426 -640 360 -640 470 -640 640 -640 427 -640 360 -500 333 -640 430 -640 480 -500 334 -640 425 -640 427 -640 480 -640 429 -614 640 -640 427 -640 338 -640 480 -640 480 -640 427 -640 480 -478 640 -640 481 -514 640 -640 480 -640 426 -640 422 -640 480 -640 348 -640 480 -640 480 -640 426 -640 480 -640 480 -640 427 -500 375 -500 330 -640 427 -640 479 -480 640 -640 480 -612 612 -640 427 -640 427 -361 431 -640 493 -640 480 -612 612 -388 500 -640 425 -427 640 -640 504 -640 428 -640 480 -640 424 -640 425 -640 426 -480 640 -612 612 -640 424 -640 426 -640 480 -640 427 -640 506 -640 425 -401 640 -640 427 -640 482 -640 437 -640 480 -500 328 -640 480 -640 480 -478 640 -500 375 -480 640 -640 360 -640 480 -426 640 -640 437 -640 424 -427 640 -640 518 -640 426 -500 387 -640 480 -640 640 -640 380 -640 480 -640 480 -333 500 -480 640 -640 376 -640 407 -640 493 -640 407 -640 480 -389 640 -640 480 -480 640 -611 640 -640 480 -500 375 -500 332 -640 348 -640 440 -640 480 -640 480 -335 500 -640 480 -500 375 -427 640 -451 640 -494 640 -640 361 -426 640 -640 281 -640 480 -426 640 -640 481 -640 508 -640 411 -609 640 -480 640 -456 640 -612 612 -640 480 -640 640 -375 500 -640 427 -500 333 -640 425 -640 480 -500 375 -500 375 -640 536 -500 375 -640 480 -640 599 -640 426 -500 283 -640 480 -429 640 -640 360 -640 386 -426 640 -640 426 -640 640 -640 425 -640 426 -640 480 -640 427 -369 500 -640 427 -640 480 -640 480 -640 480 -425 640 -427 640 -640 501 -480 640 -640 427 -375 500 -640 480 -640 428 -640 427 -511 640 -480 640 -640 427 -581 345 -640 468 -640 480 -640 579 -640 424 -426 640 -427 640 -640 427 -640 388 -640 480 -640 480 -640 425 -640 428 -333 500 -427 640 -640 426 -500 375 -640 419 -640 480 -640 480 -640 428 -640 640 -640 480 -500 375 -427 640 -640 360 -500 375 -640 426 -640 427 -427 640 -360 640 -640 480 -500 400 -640 426 -640 512 -640 518 -500 406 -640 480 -480 640 -640 478 -640 454 -375 500 -640 480 -480 640 -640 427 -640 360 -500 333 -640 480 -640 427 -426 640 -500 375 -426 640 -375 500 -640 480 -640 427 -640 480 -428 640 -640 418 -640 480 -640 480 -640 428 -640 427 -640 426 -640 480 -640 449 -640 427 -427 640 -425 640 -640 480 -640 479 -640 480 -640 427 -480 640 -640 427 -333 500 -640 480 -426 640 -640 428 -640 478 -500 375 -427 640 -444 640 -640 480 -640 480 -640 427 -640 466 -426 319 -373 640 -640 421 -640 448 -421 640 -640 427 -640 480 -640 445 -480 640 -396 640 -640 480 -640 480 -640 476 -480 640 -640 426 -612 612 -640 394 -640 480 -640 480 -640 480 -500 402 -640 427 -640 428 -640 427 -640 480 -640 480 -640 360 -480 640 -640 480 -504 378 -512 640 -640 480 -640 427 -640 215 -425 640 -500 375 -640 597 -640 427 -612 612 -500 374 -480 640 -640 427 -640 480 -483 640 -480 640 -640 480 -500 329 -500 375 -500 438 -640 425 -567 640 -640 480 -640 480 -375 500 -427 640 -640 480 -500 375 -375 500 -640 480 -640 480 -500 393 -461 640 -640 427 -500 375 -640 499 -500 375 -640 427 -480 640 -350 450 -640 427 -640 640 -640 427 -640 512 -480 640 -400 257 -500 333 -640 356 -640 360 -526 640 -500 333 -640 427 -391 640 -379 640 -640 425 -640 480 -500 375 -640 501 -500 335 -640 480 -500 281 -640 640 -480 640 -480 640 -500 351 -640 427 -480 640 -480 640 -640 480 -640 480 -500 375 -371 500 -640 480 -427 640 -640 424 -640 427 -500 381 -500 297 -640 480 -480 640 -640 436 -480 640 -640 518 -480 640 -640 321 -640 428 -640 480 -640 553 -500 500 -480 640 -493 640 -500 233 -640 427 -640 480 -640 480 -640 458 -500 375 -640 480 -500 332 -375 500 -640 480 -640 427 -640 480 -640 480 -640 268 -427 640 -640 480 -427 640 -640 427 -500 333 -640 457 -640 480 -640 480 -612 612 -640 480 -640 427 -500 370 -640 427 -640 427 -640 480 -640 480 -640 480 -500 375 -640 478 -640 480 -640 480 -478 640 -640 425 -640 463 -640 480 -612 612 -640 360 -640 427 -640 480 -600 600 -640 480 -375 500 -640 480 -640 454 -500 400 -480 640 -640 480 -398 640 -640 427 -640 427 -640 443 -640 480 -640 427 -640 480 -640 429 -640 478 -640 360 -384 640 -414 640 -264 640 -640 359 -640 425 -427 640 -333 500 -612 612 -640 360 -640 480 -500 334 -424 640 -529 640 -640 228 -640 480 -640 480 -640 360 -640 426 -640 480 -640 360 -640 427 -640 359 -640 426 -640 428 -640 309 -640 427 -612 612 -640 478 -640 425 -500 333 -640 426 -640 477 -640 581 -500 375 -640 409 -640 427 -640 480 -428 640 -640 480 -640 480 -480 640 -640 449 -640 480 -640 427 -612 612 -500 375 -640 419 -640 420 -640 478 -640 417 -424 640 -640 425 -640 293 -426 640 -640 480 -640 428 -640 427 -480 640 -500 375 -640 480 -640 480 -640 480 -640 480 -411 640 -640 425 -339 500 -500 375 -640 480 -640 326 -640 480 -640 427 -640 480 -640 427 -640 478 -640 427 -640 427 -640 480 -640 425 -480 640 -640 480 -640 478 -640 427 -640 221 -640 478 -640 428 -612 612 -427 640 -640 426 -640 480 -500 430 -640 401 -640 480 -640 427 -500 300 -640 427 -640 427 -640 480 -640 413 -500 375 -640 478 -612 612 -640 478 -640 480 -640 427 -640 480 -640 427 -640 439 -500 334 -640 480 -640 427 -640 480 -640 424 -457 640 -640 426 -480 640 -640 433 -480 640 -640 480 -432 640 -640 414 -640 480 -500 344 -640 480 -612 612 -427 640 -612 612 -640 425 -640 361 -640 480 -640 394 -500 375 -640 425 -640 478 -640 427 -375 500 -640 593 -381 640 -640 426 -640 424 -500 281 -640 513 -640 480 -333 500 -500 395 -480 475 -480 640 -640 480 -480 640 -428 640 -612 612 -429 640 -640 480 -640 449 -640 430 -500 375 -640 482 -360 640 -478 640 -640 480 -423 640 -427 640 -640 480 -640 478 -640 383 -480 640 -500 375 -480 640 -375 500 -640 480 -640 480 -640 480 -640 480 -480 640 -640 480 -640 564 -640 480 -187 140 -640 427 -500 459 -428 640 -640 428 -375 500 -640 480 -640 504 -640 424 -500 400 -583 640 -640 427 -640 480 -612 612 -640 489 -612 612 -640 480 -469 640 -463 640 -640 480 -640 480 -640 550 -500 407 -500 210 -640 480 -640 640 -640 478 -612 612 -480 640 -500 333 -640 480 -640 429 -640 480 -427 640 -500 333 -640 480 -640 480 -640 424 -640 360 -321 640 -424 640 -640 450 -640 426 -640 471 -640 427 -640 425 -640 426 -640 425 -498 640 -640 427 -612 612 -640 480 -500 167 -640 424 -640 427 -427 640 -640 480 -640 470 -640 427 -640 480 -539 640 -640 480 -640 480 -500 337 -640 480 -500 332 -332 500 -375 500 -640 480 -590 640 -640 507 -480 640 -640 480 -640 480 -640 427 -500 333 -640 472 -640 427 -395 500 -640 427 -640 425 -640 427 -640 480 -640 427 -640 480 -640 425 -640 640 -427 640 -640 360 -640 348 -612 612 -640 426 -640 425 -640 480 -500 335 -640 433 -640 480 -517 640 -480 640 -427 640 -425 640 -480 640 -640 427 -640 480 -480 640 -640 427 -640 480 -640 425 -640 480 -640 427 -640 480 -640 419 -640 483 -640 425 -426 640 -480 640 -640 338 -640 438 -426 640 -640 640 -640 426 -640 486 -640 483 -500 375 -640 496 -640 480 -640 480 -640 389 -500 333 -640 571 -640 338 -493 500 -640 360 -640 383 -500 375 -640 360 -500 375 -427 640 -427 640 -500 333 -427 640 -640 456 -640 427 -640 428 -480 640 -640 360 -500 429 -640 480 -640 427 -640 427 -335 500 -640 425 -640 478 -640 640 -500 334 -640 480 -640 480 -640 423 -640 480 -640 427 -480 640 -500 375 -640 480 -640 426 -640 427 -640 480 -481 640 -640 425 -640 480 -427 640 -640 430 -640 427 -427 640 -612 612 -640 458 -640 480 -640 480 -640 427 -640 578 -375 500 -640 480 -640 640 -425 640 -500 375 -640 427 -640 480 -640 478 -640 480 -500 375 -640 427 -500 360 -500 375 -640 480 -640 424 -640 480 -417 556 -640 427 -640 480 -612 612 -640 480 -640 480 -480 480 -640 425 -402 640 -640 480 -425 640 -640 425 -333 500 -640 428 -426 640 -427 640 -640 427 -640 480 -640 478 -375 500 -333 500 -500 333 -640 480 -519 640 -500 334 -500 375 -478 640 -640 458 -480 640 -500 376 -480 640 -640 427 -640 426 -427 640 -500 389 -480 640 -640 480 -640 480 -640 480 -500 346 -461 640 -427 640 -640 480 -375 500 -640 493 -640 480 -640 427 -640 480 -640 480 -640 425 -427 640 -640 480 -500 375 -500 332 -640 427 -640 427 -640 480 -612 612 -500 338 -640 450 -640 427 -640 443 -610 493 -640 427 -480 640 -640 480 -481 640 -640 472 -640 436 -640 426 -455 640 -480 640 -640 480 -640 480 -640 480 -640 480 -500 375 -640 426 -640 480 -640 480 -480 640 -640 640 -640 427 -640 427 -640 480 -489 500 -640 480 -640 427 -640 640 -640 640 -640 464 -478 640 -640 367 -640 320 -640 427 -640 427 -427 640 -640 427 -640 504 -640 322 -640 585 -640 480 -640 468 -500 336 -640 323 -612 612 -640 427 -640 426 -640 480 -640 360 -426 640 -640 377 -480 640 -640 425 -640 427 -640 424 -640 422 -482 640 -640 480 -640 425 -640 478 -640 479 -427 640 -478 640 -640 429 -640 594 -640 360 -428 640 -640 523 -640 396 -640 424 -640 480 -640 359 -640 428 -640 511 -640 561 -640 320 -404 640 -500 375 -333 500 -640 383 -640 457 -480 640 -640 360 -640 429 -640 480 -640 480 -426 640 -426 500 -500 333 -426 640 -480 640 -480 640 -640 427 -640 360 -451 640 -604 453 -500 335 -457 640 -640 427 -640 425 -500 333 -500 328 -612 612 -640 427 -480 640 -640 480 -500 253 -640 425 -480 640 -640 457 -480 640 -640 427 -427 640 -640 494 -640 421 -640 426 -640 480 -640 480 -640 424 -500 332 -640 427 -640 427 -500 332 -448 500 -640 425 -500 375 -640 428 -640 480 -640 480 -640 361 -500 375 -640 435 -640 427 -375 500 -640 640 -500 339 -400 267 -640 432 -640 480 -480 640 -640 480 -427 640 -640 427 -640 480 -640 480 -640 427 -640 251 -640 404 -640 426 -640 427 -640 427 -640 320 -375 500 -640 248 -640 480 -640 428 -428 640 -581 604 -640 426 -640 480 -640 426 -640 480 -640 427 -640 480 -612 612 -480 640 -640 480 -640 388 -640 480 -640 424 -500 375 -640 427 -500 375 -612 612 -640 480 -612 612 -500 375 -640 480 -427 640 -640 640 -640 480 -500 375 -640 427 -427 640 -500 383 -640 428 -640 480 -500 469 -426 640 -640 491 -640 429 -640 480 -640 480 -640 512 -500 400 -640 428 -640 480 -500 332 -480 640 -500 333 -640 483 -480 640 -640 480 -375 500 -640 480 -640 480 -500 334 -640 480 -254 500 -640 480 -640 426 -480 640 -640 601 -640 480 -640 360 -640 427 -424 640 -640 480 -640 427 -425 640 -480 640 -612 612 -640 424 -640 480 -640 361 -640 480 -640 427 -426 640 -640 426 -640 427 -640 427 -480 640 -640 480 -640 480 -640 425 -640 480 -640 427 -640 480 -500 375 -480 360 -480 640 -640 428 -640 480 -429 640 -640 428 -640 480 -640 424 -500 461 -424 640 -640 411 -427 640 -640 320 -640 480 -640 480 -640 480 -640 428 -640 480 -429 640 -640 480 -640 427 -640 427 -640 420 -640 480 -640 480 -640 480 -640 484 -640 512 -500 334 -640 463 -640 427 -640 427 -640 418 -500 238 -500 375 -640 480 -640 481 -640 427 -640 480 -427 640 -640 454 -429 640 -640 427 -640 480 -500 347 -640 480 -640 480 -320 240 -640 480 -500 375 -640 480 -640 427 -333 500 -612 612 -612 612 -640 438 -640 427 -640 482 -480 640 -612 612 -612 612 -640 480 -480 640 -640 507 -640 480 -640 426 -640 480 -480 640 -640 427 -640 415 -640 427 -640 480 -500 376 -541 640 -640 426 -500 375 -500 375 -480 640 -640 512 -640 480 -640 427 -640 426 -612 612 -640 480 -640 480 -640 480 -480 640 -453 604 -640 426 -332 500 -430 640 -480 640 -426 640 -500 400 -640 480 -640 434 -500 372 -640 480 -427 640 -640 480 -640 462 -500 333 -640 480 -640 424 -640 480 -640 369 -500 375 -640 478 -383 640 -640 480 -640 480 -640 480 -640 427 -480 640 -640 406 -640 480 -640 359 -640 427 -640 481 -429 500 -640 427 -640 360 -640 429 -640 480 -427 640 -640 480 -640 429 -640 480 -640 480 -640 480 -640 427 -426 640 -640 360 -640 428 -640 471 -640 428 -640 480 -425 640 -500 333 -640 480 -427 640 -640 402 -640 480 -640 426 -500 375 -640 427 -640 359 -640 453 -640 427 -480 640 -640 423 -480 640 -640 480 -640 427 -640 480 -500 375 -500 375 -640 426 -640 480 -640 480 -640 427 -428 640 -500 453 -640 428 -640 427 -640 480 -640 439 -480 640 -500 333 -640 479 -640 480 -640 640 -500 375 -640 427 -640 360 -500 375 -480 640 -640 480 -480 640 -640 427 -640 425 -640 427 -640 480 -640 428 -640 360 -480 640 -640 441 -375 500 -640 441 -640 640 -480 640 -640 428 -640 259 -640 466 -640 425 -500 380 -640 482 -640 359 -427 640 -640 480 -427 640 -427 640 -640 427 -640 480 -640 426 -444 640 -480 640 -640 480 -480 640 -480 640 -480 640 -640 480 -500 320 -612 612 -640 427 -640 427 -640 427 -640 344 -640 425 -640 387 -478 640 -640 426 -640 427 -640 480 -640 428 -640 426 -500 333 -640 480 -640 480 -425 640 -640 480 -384 640 -640 360 -375 500 -500 400 -640 480 -640 490 -640 480 -640 427 -640 427 -480 640 -640 263 -612 612 -375 500 -500 400 -640 427 -640 480 -640 426 -640 424 -640 590 -640 427 -640 427 -640 480 -640 427 -640 480 -500 334 -431 640 -640 480 -480 640 -640 430 -640 480 -640 480 -640 480 -640 427 -425 640 -640 427 -640 401 -640 429 -480 640 -640 480 -640 507 -500 332 -640 427 -640 427 -486 500 -640 480 -640 480 -375 500 -640 425 -640 481 -640 504 -640 480 -427 640 -640 427 -219 500 -640 427 -480 640 -612 612 -639 640 -640 640 -640 423 -500 375 -640 426 -500 375 -480 640 -640 426 -640 426 -620 640 -640 427 -640 426 -612 612 -640 480 -500 358 -640 426 -640 426 -640 427 -640 479 -640 480 -640 279 -640 480 -424 640 -640 426 -640 480 -500 500 -640 427 -640 432 -640 427 -426 640 -430 640 -425 640 -640 424 -640 480 -640 480 -426 640 -640 480 -640 480 -427 640 -640 480 -427 640 -640 415 -640 427 -640 480 -640 377 -333 500 -640 427 -640 427 -640 480 -375 500 -640 457 -500 375 -500 375 -640 425 -424 640 -427 640 -640 444 -640 486 -480 640 -640 426 -640 480 -480 640 -640 426 -640 425 -640 412 -480 640 -640 480 -427 640 -640 426 -480 640 -640 480 -640 480 -640 480 -427 640 -500 393 -427 640 -480 640 -500 375 -640 589 -640 427 -640 359 -640 480 -640 426 -500 375 -640 480 -423 640 -375 500 -640 427 -640 480 -640 427 -640 427 -640 441 -427 640 -426 640 -640 424 -511 640 -640 428 -427 640 -500 375 -500 331 -500 488 -640 427 -640 480 -640 510 -640 426 -640 480 -640 425 -640 429 -640 427 -359 640 -640 425 -640 383 -375 500 -330 500 -640 480 -640 427 -500 375 -640 426 -500 333 -640 386 -640 427 -400 300 -500 375 -500 375 -640 482 -640 360 -640 480 -640 421 -640 480 -480 640 -525 640 -640 244 -640 480 -482 640 -640 294 -640 480 -640 480 -375 500 -496 640 -640 525 -478 640 -640 480 -640 480 -486 640 -640 426 -640 480 -640 480 -480 640 -640 480 -640 480 -640 480 -640 427 -500 321 -427 640 -427 640 -640 480 -254 336 -640 427 -640 480 -640 640 -400 284 -640 480 -640 541 -640 590 -480 640 -425 640 -640 427 -640 457 -425 640 -640 480 -640 427 -640 425 -640 505 -640 559 -640 426 -640 480 -640 425 -640 427 -500 375 -480 640 -640 427 -479 640 -480 640 -640 478 -640 480 -500 333 -640 480 -640 427 -640 426 -640 511 -640 428 -640 480 -640 426 -480 640 -333 500 -640 480 -640 426 -640 426 -640 427 -458 640 -640 400 -424 640 -640 480 -640 318 -640 427 -360 640 -640 480 -640 480 -640 480 -640 480 -612 612 -640 389 -640 457 -640 480 -500 334 -640 480 -425 640 -640 480 -640 401 -640 480 -640 399 -640 427 -500 274 -213 320 -480 640 -333 500 -640 480 -512 640 -640 427 -640 480 -640 480 -640 427 -640 426 -640 480 -640 379 -640 480 -425 640 -427 640 -640 480 -640 640 -500 333 -354 500 -640 480 -426 640 -640 480 -503 640 -640 480 -427 640 -640 480 -500 375 -640 478 -500 375 -640 480 -427 640 -640 425 -640 427 -640 426 -500 332 -516 640 -428 640 -640 480 -401 131 -640 443 -480 640 -360 640 -480 640 -500 375 -640 474 -503 640 -640 480 -640 427 -640 480 -640 480 -640 427 -640 480 -640 456 -640 427 -640 597 -640 450 -640 383 -640 426 -640 428 -640 427 -480 640 -640 480 -640 440 -640 426 -640 457 -640 480 -480 640 -640 429 -640 426 -500 332 -640 360 -640 478 -480 640 -640 427 -640 480 -500 375 -640 480 -640 478 -640 480 -640 427 -500 375 -640 428 -480 640 -426 640 -640 304 -640 480 -640 427 -612 612 -640 480 -640 480 -640 512 -375 500 -640 427 -500 334 -500 374 -333 500 -612 612 -640 400 -640 284 -640 480 -425 640 -640 486 -640 426 -480 640 -640 427 -640 480 -640 480 -426 640 -640 381 -640 426 -640 481 -640 480 -500 351 -427 640 -500 375 -640 427 -640 427 -640 480 -640 480 -640 480 -500 427 -640 425 -640 427 -640 427 -640 480 -600 400 -359 500 -500 375 -640 480 -640 489 -500 375 -529 640 -500 375 -640 480 -480 640 -640 480 -480 640 -640 444 -427 640 -640 425 -640 426 -612 612 -640 480 -500 357 -418 640 -427 640 -427 640 -500 382 -640 480 -426 640 -375 500 -640 478 -640 478 -500 333 -640 493 -500 333 -357 500 -603 640 -480 640 -640 427 -640 427 -612 612 -640 480 -640 453 -500 334 -640 480 -500 375 -640 480 -640 480 -640 426 -640 480 -640 424 -500 335 -480 640 -640 480 -480 640 -480 640 -640 424 -640 427 -480 640 -500 333 -640 427 -500 375 -640 480 -500 375 -640 427 -640 480 -640 427 -500 375 -427 640 -640 471 -640 480 -640 480 -640 579 -640 427 -480 640 -612 612 -373 640 -640 427 -610 391 -640 253 -640 429 -640 426 -640 425 -640 538 -427 640 -480 640 -640 428 -640 424 -640 427 -640 480 -640 349 -480 640 -640 478 -640 351 -640 384 -400 600 -500 375 -640 522 -640 480 -640 518 -640 427 -333 500 -640 391 -480 640 -467 640 -612 612 -640 426 -500 375 -516 640 -480 640 -333 500 -640 480 -364 468 -500 399 -427 640 -500 400 -640 464 -640 480 -640 429 -341 640 -425 640 -375 500 -640 432 -640 334 -640 427 -480 640 -640 480 -500 375 -451 640 -640 480 -640 480 -640 480 -640 427 -640 470 -640 426 -640 430 -640 482 -640 427 -500 375 -640 360 -500 375 -500 375 -640 462 -612 612 -640 480 -640 425 -426 640 -500 334 -640 427 -436 640 -640 480 -500 375 -640 427 -500 363 -640 457 -500 334 -500 429 -480 640 -640 428 -640 427 -640 427 -500 332 -640 319 -500 336 -640 481 -432 500 -500 333 -640 360 -640 427 -461 640 -640 480 -500 326 -640 425 -480 640 -640 427 -640 427 -640 431 -640 427 -640 539 -640 487 -427 640 -640 526 -640 427 -640 427 -612 612 -442 500 -640 480 -640 495 -480 640 -424 640 -480 640 -640 459 -640 480 -640 426 -640 427 -640 425 -640 480 -640 427 -640 458 -640 427 -640 362 -640 428 -640 451 -640 423 -480 640 -640 428 -640 480 -640 480 -480 640 -640 480 -640 421 -640 427 -480 640 -480 640 -640 480 -640 428 -480 640 -640 427 -640 480 -640 427 -640 427 -640 427 -427 640 -640 427 -500 375 -640 427 -640 427 -640 426 -439 603 -640 445 -640 480 -640 426 -560 640 -480 640 -640 316 -640 480 -427 640 -480 640 -640 480 -640 427 -431 640 -375 500 -640 480 -640 480 -640 427 -640 428 -640 427 -640 443 -620 367 -640 427 -640 480 -640 427 -640 581 -640 480 -640 480 -640 480 -640 640 -500 375 -640 494 -480 640 -640 480 -640 425 -640 480 -640 480 -554 640 -640 480 -425 640 -478 640 -500 375 -640 480 -640 480 -640 427 -480 640 -640 480 -427 640 -526 640 -500 375 -416 640 -640 427 -640 480 -332 500 -640 424 -427 640 -640 448 -640 640 -640 427 -640 427 -640 480 -640 426 -640 480 -500 375 -480 640 -640 427 -500 375 -640 480 -518 640 -640 480 -640 435 -500 375 -500 375 -639 640 -463 640 -500 324 -500 375 -480 640 -480 640 -640 396 -640 426 -383 640 -640 351 -640 427 -500 493 -640 480 -640 480 -500 375 -640 427 -640 429 -640 480 -640 480 -480 640 -640 452 -500 384 -375 500 -500 334 -640 428 -427 640 -640 480 -640 480 -640 640 -640 480 -640 427 -640 424 -640 427 -640 463 -640 480 -640 480 -640 421 -640 428 -640 427 -478 640 -640 480 -640 427 -500 375 -640 480 -640 427 -640 427 -426 640 -640 480 -640 480 -640 480 -640 480 -640 433 -640 480 -640 425 -640 480 -375 500 -640 428 -640 427 -640 430 -480 640 -480 640 -640 480 -640 398 -640 428 -640 480 -640 478 -426 640 -451 451 -640 480 -640 434 -339 500 -640 511 -640 415 -640 640 -480 640 -374 500 -427 640 -640 427 -640 561 -640 478 -640 427 -640 480 -500 375 -413 640 -640 521 -443 640 -425 640 -375 500 -500 375 -640 480 -640 480 -640 426 -640 426 -427 640 -640 478 -640 480 -612 612 -428 640 -640 480 -602 640 -448 640 -319 500 -500 375 -480 640 -480 640 -640 146 -640 427 -640 427 -640 427 -640 512 -480 640 -295 640 -640 427 -640 475 -640 426 -640 480 -640 360 -640 480 -426 640 -480 640 -640 480 -500 375 -640 427 -640 426 -640 480 -640 427 -640 480 -361 640 -640 480 -640 480 -333 500 -442 640 -640 480 -640 480 -640 427 -640 480 -500 375 -640 449 -500 375 -640 378 -500 376 -480 640 -640 460 -500 375 -640 480 -500 375 -428 640 -427 640 -640 360 -640 427 -640 479 -640 427 -640 480 -500 375 -640 452 -640 405 -640 481 -640 495 -640 427 -640 480 -396 640 -640 360 -640 427 -640 480 -480 640 -640 427 -640 427 -640 480 -640 331 -640 480 -640 432 -500 375 -640 480 -640 480 -640 480 -500 375 -640 427 -640 480 -640 433 -480 640 -640 425 -480 640 -640 480 -480 640 -640 428 -640 480 -571 640 -640 480 -640 480 -500 375 -640 490 -640 424 -640 459 -500 375 -640 360 -612 612 -640 480 -640 426 -640 476 -640 428 -500 375 -640 480 -640 480 -478 640 -640 512 -640 480 -640 418 -640 481 -640 562 -604 403 -640 426 -640 425 -425 640 -640 590 -640 425 -640 414 -500 333 -640 480 -640 428 -640 427 -640 480 -426 640 -479 640 -480 640 -640 480 -640 640 -640 426 -640 516 -500 375 -480 640 -500 375 -640 427 -640 486 -500 375 -500 334 -400 500 -640 428 -640 412 -640 427 -612 612 -640 456 -640 502 -640 424 -640 426 -461 640 -640 480 -480 640 -640 480 -640 601 -640 427 -640 480 -640 360 -640 603 -640 417 -640 480 -640 503 -640 427 -640 480 -640 427 -640 487 -640 441 -640 427 -612 612 -500 375 -427 640 -500 311 -640 426 -640 459 -640 513 -640 426 -500 375 -426 640 -640 480 -427 640 -640 405 -427 640 -640 446 -640 480 -480 640 -640 427 -640 359 -640 424 -486 500 -375 500 -640 480 -640 427 -640 425 -640 406 -640 428 -480 640 -640 481 -640 539 -480 640 -375 500 -500 332 -640 480 -640 428 -640 426 -500 500 -500 333 -640 262 -500 375 -480 640 -480 640 -541 640 -480 640 -640 640 -640 427 -375 500 -640 640 -640 459 -640 480 -640 487 -500 375 -640 429 -424 640 -640 640 -500 372 -640 480 -404 640 -640 480 -480 640 -640 480 -640 427 -640 427 -424 640 -640 426 -640 428 -640 428 -640 480 -640 426 -500 375 -458 640 -640 480 -640 480 -360 640 -480 640 -640 569 -640 480 -640 480 -640 426 -640 427 -640 425 -480 640 -640 455 -640 427 -640 427 -640 480 -640 358 -612 612 -428 640 -640 480 -425 640 -640 427 -640 427 -640 427 -500 332 -640 480 -480 640 -500 375 -640 427 -640 480 -600 450 -640 480 -427 640 -640 352 -640 480 -640 480 -640 480 -480 640 -640 480 -640 427 -640 480 -640 425 -500 333 -427 640 -360 640 -640 552 -480 640 -480 640 -500 375 -640 486 -640 480 -640 360 -307 461 -640 480 -640 427 -426 640 -500 436 -480 640 -500 333 -640 480 -480 640 -640 640 -334 500 -333 500 -425 640 -640 354 -500 375 -640 480 -640 480 -640 480 -480 640 -500 375 -640 508 -640 376 -640 480 -640 480 -640 480 -612 612 -612 612 -423 640 -389 640 -640 640 -500 334 -500 375 -640 480 -332 500 -640 480 -500 333 -490 640 -640 425 -600 449 -640 391 -387 600 -640 360 -425 640 -640 360 -640 480 -640 277 -640 480 -640 428 -640 411 -480 640 -500 375 -640 480 -640 426 -640 427 -640 480 -640 427 -640 427 -480 640 -640 640 -640 640 -640 480 -500 334 -391 640 -640 415 -640 480 -480 640 -640 427 -480 640 -640 480 -389 500 -640 427 -640 396 -640 427 -640 480 -640 480 -640 480 -640 303 -640 480 -640 436 -640 429 -457 640 -640 427 -500 375 -640 427 -640 480 -640 425 -640 480 -640 489 -640 419 -640 569 -640 480 -424 640 -640 427 -640 416 -640 418 -640 371 -640 428 -500 413 -640 427 -640 480 -480 640 -640 561 -640 423 -500 375 -640 480 -640 360 -640 480 -529 640 -640 425 -480 640 -428 640 -640 480 -640 409 -359 640 -427 640 -374 436 -640 428 -640 360 -640 426 -500 375 -640 480 -640 360 -640 427 -480 640 -640 425 -640 480 -500 333 -426 640 -640 427 -640 480 -640 428 -480 640 -480 640 -433 640 -640 428 -640 483 -640 401 -640 428 -480 640 -427 640 -640 298 -427 640 -640 480 -480 640 -427 640 -480 640 -500 332 -640 480 -640 480 -640 480 -640 466 -640 425 -640 480 -640 427 -640 445 -640 427 -484 500 -640 320 -640 480 -612 612 -427 640 -640 480 -640 425 -612 612 -640 426 -640 427 -504 640 -500 375 -425 640 -640 424 -427 640 -640 480 -640 427 -640 427 -640 346 -640 480 -640 427 -640 480 -640 371 -640 426 -640 480 -500 493 -640 480 -640 480 -640 427 -640 480 -640 360 -612 612 -640 418 -640 480 -640 427 -435 640 -640 425 -500 375 -500 375 -429 640 -339 500 -640 426 -640 427 -640 428 -640 427 -375 500 -640 360 -640 384 -640 428 -640 371 -640 424 -640 426 -612 612 -640 480 -500 357 -500 375 -612 612 -640 480 -640 427 -500 333 -640 640 -427 640 -640 267 -640 480 -640 382 -426 640 -640 481 -640 481 -480 640 -490 640 -425 640 -612 612 -640 480 -640 480 -640 427 -480 640 -640 480 -640 427 -640 480 -612 612 -640 426 -424 640 -640 480 -640 427 -640 427 -640 427 -640 426 -500 375 -640 480 -640 401 -375 500 -640 426 -640 480 -640 414 -332 500 -640 436 -640 480 -640 480 -640 480 -480 640 -500 375 -500 235 -640 480 -500 375 -640 476 -480 640 -640 506 -640 427 -640 429 -375 500 -640 480 -375 500 -425 640 -440 640 -640 427 -640 428 -640 480 -640 425 -640 360 -640 480 -640 480 -640 480 -538 640 -427 640 -640 480 -640 480 -640 303 -640 468 -640 426 -640 576 -640 382 -640 476 -640 640 -640 427 -500 375 -640 428 -500 375 -640 480 -640 480 -640 480 -640 480 -500 375 -640 480 -480 640 -480 640 -640 503 -640 430 -640 480 -640 426 -428 640 -428 640 -640 427 -640 351 -640 438 -480 640 -640 640 -640 360 -640 578 -640 480 -640 427 -640 426 -640 427 -480 640 -640 427 -480 640 -640 437 -500 379 -500 374 -640 480 -640 429 -640 428 -640 427 -640 427 -640 480 -480 640 -478 640 -640 480 -427 640 -640 298 -640 480 -640 480 -640 426 -640 480 -640 361 -424 640 -640 480 -640 419 -640 481 -480 640 -640 426 -640 428 -480 640 -480 640 -640 480 -427 640 -640 425 -640 480 -640 427 -640 424 -500 375 -640 427 -640 427 -427 640 -480 640 -640 427 -640 427 -640 428 -640 428 -640 427 -640 425 -500 333 -640 480 -640 427 -640 480 -640 478 -640 426 -500 375 -640 427 -640 498 -640 364 -500 375 -640 427 -640 480 -640 429 -480 640 -480 640 -640 424 -640 478 -640 427 -375 500 -388 500 -640 427 -640 426 -640 383 -640 426 -640 480 -640 396 -640 353 -640 425 -640 374 -640 427 -640 480 -640 480 -640 480 -480 640 -493 640 -640 480 -640 427 -480 640 -640 433 -640 480 -640 425 -640 427 -612 612 -640 495 -480 640 -640 480 -640 480 -640 478 -264 640 -640 427 -436 640 -640 425 -640 428 -640 480 -640 480 -427 640 -425 640 -427 640 -640 344 -500 375 -600 450 -640 480 -640 426 -480 640 -640 458 -640 640 -640 457 -640 426 -640 428 -640 442 -640 480 -640 480 -640 428 -640 480 -640 480 -426 640 -427 640 -640 640 -640 480 -640 640 -640 427 -640 411 -640 507 -640 480 -640 480 -640 425 -612 612 -500 346 -640 640 -640 424 -500 332 -612 612 -640 480 -480 640 -640 480 -500 375 -333 500 -640 427 -640 480 -640 501 -640 359 -640 427 -425 640 -640 432 -640 481 -640 426 -640 480 -640 480 -640 480 -480 640 -640 426 -640 482 -480 640 -640 428 -640 480 -640 428 -640 428 -500 375 -640 578 -640 428 -500 333 -640 480 -640 428 -640 480 -640 410 -640 427 -500 333 -640 426 -640 480 -640 361 -612 612 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -640 487 -640 426 -640 381 -640 428 -640 427 -360 480 -640 361 -480 640 -500 333 -640 478 -428 640 -640 360 -640 427 -640 480 -500 375 -480 640 -375 500 -500 318 -613 640 -427 640 -640 427 -640 480 -480 640 -500 388 -180 240 -640 444 -640 480 -640 426 -500 375 -509 640 -640 426 -640 564 -640 427 -269 640 -640 480 -638 356 -640 480 -458 640 -500 375 -640 480 -480 361 -640 480 -500 375 -640 427 -500 375 -640 360 -640 428 -640 409 -640 427 -640 360 -640 427 -640 640 -640 480 -640 427 -640 412 -306 408 -427 640 -640 425 -640 480 -640 480 -414 640 -640 427 -428 640 -640 304 -640 480 -640 427 -640 425 -640 640 -480 640 -640 480 -640 427 -458 640 -640 480 -480 640 -640 480 -640 427 -640 480 -480 640 -640 428 -480 640 -500 375 -640 429 -640 588 -640 481 -640 418 -434 640 -640 422 -640 427 -640 480 -640 491 -640 426 -640 427 -640 480 -640 480 -500 375 -640 427 -640 510 -478 640 -500 375 -640 456 -640 427 -480 640 -480 640 -640 480 -640 481 -640 501 -427 640 -640 480 -375 500 -640 416 -500 375 -500 375 -640 480 -480 640 -375 500 -640 439 -458 640 -640 399 -500 282 -640 480 -640 427 -640 427 -428 640 -640 480 -640 480 -500 375 -640 426 -425 640 -640 480 -640 480 -640 480 -640 427 -640 427 -640 480 -424 640 -640 437 -640 427 -500 375 -426 640 -640 424 -417 640 -640 480 -640 480 -480 640 -640 480 -640 427 -640 536 -567 640 -640 425 -640 480 -640 457 -640 640 -640 478 -640 360 -640 427 -640 480 -640 427 -333 500 -640 434 -640 425 -640 424 -480 640 -612 612 -640 425 -640 480 -640 438 -495 500 -426 640 -640 427 -429 640 -640 558 -640 428 -640 480 -500 188 -480 640 -640 360 -612 612 -640 425 -640 424 -640 428 -640 480 -640 428 -500 244 -500 375 -500 375 -640 425 -478 640 -640 428 -640 480 -640 427 -500 375 -426 640 -640 480 -640 457 -640 480 -640 320 -640 383 -640 359 -640 436 -640 426 -640 427 -640 361 -640 428 -640 480 -640 424 -640 475 -640 414 -480 640 -360 640 -480 640 -640 480 -612 612 -640 427 -338 450 -640 427 -464 640 -640 421 -640 480 -640 428 -640 427 -500 375 -640 480 -640 427 -640 480 -640 427 -640 480 -500 375 -480 640 -640 426 -640 425 -538 640 -640 480 -640 480 -640 480 -640 480 -478 640 -640 478 -640 427 -640 480 -640 480 -500 375 -640 427 -480 640 -640 480 -427 640 -640 480 -640 509 -640 480 -640 471 -640 480 -612 612 -337 500 -640 480 -427 640 -513 640 -640 480 -474 640 -640 428 -480 640 -325 500 -640 480 -640 426 -640 481 -409 640 -640 360 -640 311 -640 426 -413 640 -640 424 -640 480 -639 640 -640 427 -640 480 -383 500 -427 640 -335 500 -640 427 -640 426 -640 427 -640 480 -640 425 -640 427 -640 427 -640 480 -640 433 -480 640 -640 416 -640 366 -640 427 -640 480 -640 391 -333 500 -640 436 -640 425 -640 428 -640 480 -542 640 -431 640 -640 427 -640 480 -334 500 -640 480 -640 425 -423 640 -425 640 -494 640 -480 640 -640 427 -640 427 -500 375 -550 412 -640 518 -640 429 -640 427 -640 480 -640 481 -640 480 -640 480 -640 477 -640 427 -640 427 -640 487 -640 426 -640 480 -512 384 -640 516 -640 435 -457 640 -480 640 -640 427 -376 500 -413 500 -640 431 -480 640 -427 640 -640 433 -640 480 -640 484 -640 428 -640 359 -640 426 -500 375 -500 375 -500 400 -480 640 -480 640 -450 338 -427 640 -500 333 -640 480 -640 361 -640 480 -427 640 -640 424 -640 425 -375 500 -419 500 -640 427 -500 375 -640 427 -463 640 -640 480 -640 434 -500 333 -500 375 -500 375 -640 427 -480 640 -640 480 -640 480 -640 427 -640 480 -480 640 -640 480 -498 640 -612 612 -640 427 -640 480 -359 640 -500 333 -426 640 -640 480 -424 640 -375 500 -640 493 -500 333 -640 480 -427 640 -640 429 -640 480 -480 640 -640 480 -640 360 -640 460 -640 427 -640 480 -500 334 -640 457 -640 401 -500 381 -640 427 -640 411 -640 424 -640 427 -500 357 -404 640 -463 640 -640 428 -640 427 -640 480 -426 640 -640 426 -426 640 -640 481 -640 427 -640 481 -640 427 -640 427 -480 640 -427 640 -333 500 -640 480 -640 480 -640 428 -425 640 -427 640 -640 480 -640 480 -427 640 -640 426 -640 480 -480 640 -640 426 -503 640 -480 640 -640 480 -333 500 -640 480 -640 426 -640 480 -640 428 -640 480 -480 640 -640 426 -640 427 -640 480 -388 640 -640 374 -640 427 -480 640 -427 640 -500 375 -640 429 -640 585 -640 427 -500 383 -640 427 -640 394 -640 426 -640 480 -333 500 -426 640 -640 480 -427 640 -640 422 -640 480 -640 426 -640 425 -428 640 -640 427 -640 427 -640 425 -640 427 -640 480 -640 348 -640 480 -640 427 -640 480 -345 500 -640 384 -640 480 -640 427 -480 640 -640 427 -640 426 -640 480 -480 640 -332 500 -640 427 -640 480 -640 480 -640 543 -640 429 -640 415 -640 640 -500 377 -500 375 -640 426 -640 480 -640 519 -640 480 -640 361 -427 640 -640 480 -640 429 -640 427 -640 634 -480 640 -479 640 -427 640 -500 375 -500 452 -500 375 -640 431 -640 429 -640 427 -640 426 -640 424 -160 120 -427 640 -640 480 -640 480 -640 424 -427 640 -640 480 -640 417 -640 480 -500 333 -273 500 -640 640 -500 334 -386 336 -640 450 -640 426 -640 480 -427 640 -640 480 -640 480 -625 640 -640 427 -157 160 -480 640 -640 480 -500 367 -640 359 -500 375 -640 428 -500 375 -500 319 -375 500 -640 427 -640 426 -480 640 -640 480 -640 480 -640 427 -640 473 -640 425 -640 394 -383 640 -640 426 -640 427 -640 427 -640 428 -640 427 -640 480 -640 570 -480 640 -500 333 -640 457 -640 422 -640 480 -640 480 -640 640 -640 383 -640 427 -640 425 -640 256 -426 640 -640 427 -640 478 -640 427 -500 375 -640 424 -640 480 -640 478 -500 375 -640 427 -640 427 -640 427 -640 479 -500 334 -375 500 -640 425 -428 640 -640 425 -640 640 -640 428 -434 500 -640 429 -640 503 -640 424 -640 427 -640 480 -640 440 -640 480 -427 640 -640 480 -612 612 -640 425 -640 400 -640 428 -640 480 -640 427 -427 640 -640 446 -640 464 -640 480 -333 500 -640 361 -640 480 -640 480 -427 640 -640 428 -612 612 -426 640 -640 427 -640 480 -500 412 -495 640 -640 426 -427 640 -640 424 -640 427 -640 480 -480 640 -640 480 -413 500 -640 426 -386 640 -640 480 -640 487 -640 480 -480 640 -600 400 -640 480 -500 375 -640 513 -640 426 -640 322 -500 375 -640 480 -427 640 -428 640 -640 480 -640 425 -454 640 -640 424 -427 640 -640 359 -480 640 -640 509 -640 428 -640 480 -480 640 -640 480 -640 480 -640 426 -640 427 -640 480 -640 426 -640 480 -640 479 -640 493 -640 480 -480 640 -640 480 -500 375 -640 427 -640 318 -640 480 -640 480 -640 425 -640 480 -640 533 -640 427 -640 480 -640 426 -640 427 -640 427 -400 600 -640 373 -640 426 -640 424 -640 557 -640 427 -640 427 -640 427 -640 427 -640 413 -426 640 -640 480 -540 640 -640 480 -640 427 -427 640 -640 454 -640 480 -640 480 -480 640 -640 480 -640 481 -640 440 -500 375 -640 480 -640 480 -640 480 -427 640 -376 500 -640 480 -640 480 -640 523 -640 427 -640 640 -640 480 -640 480 -500 333 -640 336 -606 640 -640 427 -612 612 -640 480 -640 480 -640 480 -640 480 -427 640 -425 640 -640 480 -640 480 -502 640 -612 612 -640 480 -640 485 -640 313 -480 640 -640 427 -640 427 -640 429 -640 427 -640 513 -640 480 -640 480 -640 426 -640 480 -640 480 -480 640 -640 426 -640 480 -640 480 -640 427 -640 480 -523 640 -640 426 -375 500 -426 640 -640 425 -640 425 -427 640 -640 480 -640 427 -640 480 -429 640 -640 427 -500 378 -639 640 -640 427 -640 480 -478 640 -640 480 -640 426 -500 375 -640 426 -411 640 -640 480 -640 480 -640 480 -640 427 -640 424 -640 371 -640 478 -640 480 -640 425 -640 480 -375 500 -424 640 -500 500 -640 427 -640 480 -640 426 -640 426 -640 480 -500 375 -640 424 -640 427 -640 427 -429 640 -640 378 -498 640 -640 408 -640 480 -480 640 -427 640 -640 427 -640 480 -640 480 -500 375 -500 351 -640 188 -640 486 -640 428 -640 427 -640 424 -640 364 -640 364 -640 384 -500 356 -640 431 -640 427 -640 480 -640 426 -500 375 -500 375 -640 429 -640 425 -640 448 -640 480 -640 480 -640 483 -640 427 -500 375 -375 500 -480 640 -640 354 -640 427 -640 426 -500 375 -640 427 -640 480 -640 480 -640 480 -500 371 -612 612 -640 480 -640 554 -640 549 -640 480 -500 375 -640 360 -640 427 -640 427 -640 480 -500 340 -500 333 -375 500 -640 480 -375 500 -640 394 -640 480 -640 480 -640 427 -640 640 -459 640 -640 480 -640 360 -427 640 -640 224 -480 640 -640 427 -640 428 -500 375 -640 429 -640 480 -640 427 -582 640 -640 480 -640 428 -640 451 -354 640 -426 640 -640 512 -640 480 -640 640 -425 640 -480 640 -640 427 -640 447 -640 480 -500 334 -480 640 -480 640 -640 428 -500 375 -500 375 -640 428 -640 428 -640 480 -640 480 -640 428 -571 640 -500 375 -640 481 -427 640 -500 375 -640 480 -640 480 -640 426 -453 640 -500 335 -640 426 -568 320 -640 429 -640 427 -640 480 -640 480 -640 449 -500 375 -640 424 -500 375 -480 640 -640 319 -640 480 -427 640 -640 427 -480 640 -640 428 -640 428 -640 480 -640 427 -640 478 -427 640 -500 402 -424 640 -640 427 -640 427 -640 480 -640 426 -480 640 -427 640 -640 480 -640 480 -640 480 -480 640 -640 480 -500 286 -427 640 -375 500 -640 427 -640 427 -640 480 -480 640 -500 332 -500 375 -640 427 -640 480 -640 482 -640 456 -640 427 -640 399 -640 480 -640 423 -338 500 -424 640 -640 480 -640 427 -427 640 -640 428 -640 480 -640 640 -640 428 -500 332 -640 480 -640 427 -640 427 -640 424 -640 423 -500 375 -640 480 -640 427 -640 480 -640 360 -480 640 -640 429 -640 478 -500 375 -597 400 -640 426 -465 500 -640 425 -640 480 -640 427 -640 480 -640 480 -429 640 -462 640 -447 640 -640 426 -640 423 -640 426 -640 347 -640 427 -500 375 -640 480 -640 427 -640 426 -640 480 -500 332 -360 640 -427 640 -370 640 -640 426 -640 480 -640 480 -640 427 -640 478 -640 427 -640 427 -427 640 -640 514 -640 426 -622 640 -640 519 -479 640 -500 375 -640 597 -640 429 -640 396 -640 427 -589 640 -640 480 -640 427 -640 480 -640 424 -500 484 -500 375 -640 510 -640 427 -640 470 -480 640 -640 413 -612 612 -640 480 -640 480 -500 333 -427 640 -375 500 -612 612 -640 480 -640 480 -640 480 -426 640 -640 427 -640 428 -640 480 -612 612 -640 429 -456 640 -640 480 -640 484 -480 360 -640 420 -483 640 -640 427 -640 427 -640 427 -640 407 -512 640 -640 480 -480 640 -640 351 -640 480 -640 381 -427 640 -500 375 -640 427 -640 436 -640 480 -480 640 -640 480 -480 640 -640 408 -640 473 -375 500 -640 427 -640 427 -500 375 -640 426 -640 434 -640 425 -640 427 -512 640 -640 426 -612 612 -612 612 -640 480 -640 480 -375 500 -640 428 -640 480 -480 640 -426 640 -640 428 -480 640 -640 427 -640 480 -500 231 -640 427 -427 640 -640 571 -375 500 -417 640 -525 640 -500 375 -640 480 -640 480 -500 333 -360 640 -640 416 -427 640 -640 480 -640 427 -640 427 -640 427 -640 426 -640 427 -640 480 -500 375 -640 480 -500 375 -640 354 -480 640 -480 417 -612 612 -640 480 -640 427 -640 427 -500 375 -480 640 -640 640 -640 427 -640 480 -640 485 -640 366 -427 640 -500 375 -640 425 -640 480 -640 427 -640 480 -640 427 -500 398 -500 375 -640 429 -500 375 -640 427 -640 640 -480 640 -480 640 -640 427 -640 480 -640 427 -640 421 -409 307 -400 500 -640 428 -640 427 -480 640 -500 373 -500 309 -640 480 -500 375 -640 427 -640 480 -640 638 -500 375 -480 640 -640 480 -640 480 -640 454 -640 425 -640 360 -427 640 -640 427 -478 640 -640 481 -480 640 -500 375 -427 640 -500 375 -427 640 -500 348 -428 640 -640 480 -424 640 -640 480 -500 332 -376 500 -500 375 -640 480 -640 480 -640 480 -553 640 -640 515 -640 427 -500 375 -640 427 -640 427 -480 640 -640 427 -640 427 -640 359 -640 512 -640 425 -640 480 -481 640 -612 612 -640 480 -500 333 -640 427 -640 427 -480 640 -640 427 -640 480 -500 336 -640 425 -640 481 -344 640 -339 500 -407 640 -640 427 -640 480 -640 480 -426 640 -640 480 -640 480 -640 427 -333 500 -640 386 -640 480 -640 423 -333 500 -640 480 -640 427 -640 427 -640 481 -640 480 -500 375 -640 480 -640 426 -480 640 -640 427 -640 360 -640 480 -640 457 -640 376 -500 375 -612 612 -640 480 -640 427 -448 336 -640 427 -640 427 -640 480 -386 500 -640 470 -640 480 -427 640 -640 415 -424 640 -640 426 -640 425 -640 427 -640 480 -640 427 -375 500 -640 480 -640 427 -640 428 -640 427 -640 480 -640 480 -425 640 -600 400 -640 428 -427 640 -640 427 -640 501 -640 431 -500 375 -640 426 -640 427 -640 365 -640 425 -499 371 -640 426 -480 640 -481 640 -640 426 -640 427 -640 360 -640 480 -640 489 -500 500 -640 640 -640 428 -640 548 -480 640 -469 500 -640 428 -640 425 -640 426 -640 480 -640 427 -640 424 -640 468 -640 428 -640 427 -640 378 -640 430 -640 427 -640 480 -426 640 -640 427 -640 469 -497 640 -480 640 -640 480 -640 283 -410 640 -640 426 -640 481 -640 358 -640 480 -640 480 -640 439 -640 480 -640 480 -425 640 -640 340 -500 375 -640 379 -640 480 -640 475 -480 640 -640 514 -480 640 -640 427 -640 425 -640 480 -640 454 -640 428 -640 428 -500 375 -640 480 -640 424 -500 332 -640 427 -500 375 -640 427 -500 375 -640 576 -607 640 -640 480 -640 427 -640 480 -640 480 -427 640 -640 427 -640 480 -427 640 -500 333 -425 640 -600 466 -640 427 -640 540 -640 427 -640 461 -640 480 -640 480 -640 424 -640 480 -640 480 -640 480 -427 640 -500 375 -640 480 -640 446 -640 391 -480 640 -500 375 -640 420 -640 429 -426 640 -469 640 -640 640 -640 426 -640 480 -640 480 -640 427 -640 442 -380 640 -640 480 -500 375 -428 640 -640 415 -418 500 -640 425 -480 640 -640 531 -427 640 -640 473 -320 240 -640 457 -640 480 -640 423 -500 375 -375 500 -500 375 -640 427 -640 427 -327 500 -640 360 -500 332 -427 640 -385 500 -640 512 -500 417 -640 427 -640 480 -640 480 -480 640 -640 427 -640 426 -640 480 -211 500 -612 612 -480 640 -640 573 -640 427 -640 438 -640 360 -427 640 -500 333 -500 375 -480 640 -480 640 -640 480 -612 612 -640 360 -640 427 -640 425 -612 612 -640 480 -640 480 -427 640 -628 442 -480 640 -612 612 -640 480 -640 427 -640 478 -480 640 -480 640 -498 640 -500 375 -640 443 -640 427 -640 427 -640 428 -339 500 -480 640 -640 427 -449 640 -500 378 -640 427 -640 395 -470 640 -640 480 -380 330 -640 458 -640 400 -506 640 -640 554 -480 640 -640 427 -333 500 -640 426 -640 427 -640 480 -640 427 -640 480 -640 480 -500 276 -612 612 -612 612 -500 375 -500 500 -640 480 -640 480 -500 370 -640 640 -500 375 -640 480 -640 462 -640 480 -640 564 -640 480 -640 427 -640 427 -500 333 -640 396 -640 427 -500 375 -640 426 -535 640 -640 480 -640 427 -640 400 -448 640 -640 480 -480 640 -334 500 -510 640 -480 640 -500 375 -640 427 -480 640 -640 480 -640 640 -480 640 -448 336 -640 361 -640 426 -480 640 -375 500 -640 480 -500 335 -640 360 -640 489 -480 640 -640 424 -640 480 -500 375 -640 480 -480 640 -500 339 -640 427 -424 640 -500 335 -640 480 -640 412 -640 366 -429 640 -426 640 -640 436 -640 350 -427 640 -640 427 -640 426 -640 480 -640 496 -640 426 -612 612 -640 480 -640 480 -426 640 -640 229 -640 640 -640 480 -640 442 -480 640 -480 640 -640 479 -500 332 -612 612 -640 425 -640 427 -500 333 -426 640 -500 373 -640 435 -640 427 -640 427 -376 500 -500 335 -640 480 -468 640 -640 426 -640 424 -640 419 -640 427 -640 428 -640 428 -500 333 -640 545 -640 360 -640 383 -640 634 -640 360 -640 427 -490 469 -640 425 -640 640 -640 480 -640 480 -640 427 -480 640 -640 424 -428 640 -424 640 -640 427 -640 480 -480 640 -640 480 -640 427 -440 500 -640 427 -426 640 -480 640 -640 428 -640 480 -500 411 -427 640 -640 480 -480 640 -176 384 -427 640 -425 640 -427 640 -640 427 -640 480 -480 640 -640 480 -478 640 -375 500 -640 480 -612 612 -479 500 -480 640 -500 367 -640 640 -640 512 -612 612 -500 500 -334 500 -640 425 -640 480 -640 480 -640 427 -640 425 -640 480 -600 400 -500 332 -612 612 -640 393 -640 480 -640 480 -424 640 -640 480 -640 640 -640 427 -640 435 -640 480 -640 427 -333 500 -512 640 -640 524 -640 480 -640 480 -640 478 -640 426 -375 500 -640 427 -426 640 -426 640 -480 640 -640 427 -640 426 -640 480 -640 425 -640 427 -640 480 -640 425 -640 427 -640 320 -640 426 -480 640 -424 640 -640 427 -640 480 -640 480 -500 333 -640 518 -640 480 -640 359 -640 426 -612 612 -640 427 -428 640 -640 427 -640 480 -427 640 -640 427 -426 640 -640 427 -640 480 -640 428 -640 480 -612 612 -640 523 -640 383 -640 427 -640 480 -640 427 -640 480 -640 480 -480 640 -480 640 -640 427 -640 426 -640 480 -640 432 -500 375 -640 427 -640 423 -640 480 -640 480 -500 375 -640 480 -640 480 -500 357 -640 427 -428 640 -640 426 -428 640 -480 640 -640 426 -612 612 -640 440 -480 640 -480 640 -640 480 -640 359 -500 375 -332 500 -640 427 -640 480 -640 400 -500 333 -340 500 -640 427 -640 448 -640 510 -640 427 -640 480 -429 640 -640 352 -640 436 -424 640 -450 600 -428 640 -640 480 -640 479 -640 427 -640 640 -480 640 -640 279 -640 423 -640 427 -640 425 -640 640 -640 427 -640 427 -427 640 -640 480 -512 480 -640 426 -427 640 -640 427 -640 480 -640 631 -640 425 -333 500 -378 500 -480 272 -640 480 -480 640 -640 443 -640 427 -427 640 -640 426 -640 480 -640 424 -640 506 -640 406 -480 640 -640 388 -640 424 -640 480 -640 407 -425 640 -640 388 -640 480 -640 494 -640 426 -640 480 -500 336 -426 640 -640 427 -640 426 -640 468 -427 640 -424 640 -500 333 -640 407 -612 612 -640 425 -500 333 -640 457 -640 480 -500 375 -480 640 -640 426 -640 480 -426 640 -640 423 -640 480 -640 427 -640 426 -640 480 -640 480 -640 480 -640 480 -640 412 -640 426 -612 612 -640 427 -426 640 -640 480 -640 376 -640 480 -640 404 -640 482 -640 427 -427 640 -640 426 -640 431 -640 425 -480 640 -382 500 -640 428 -375 500 -640 359 -640 427 -640 426 -640 485 -640 392 -640 332 -480 640 -640 425 -333 500 -640 426 -640 457 -500 340 -640 480 -500 326 -375 500 -640 396 -480 640 -333 500 -640 427 -640 480 -640 480 -640 427 -640 429 -640 427 -640 476 -428 640 -640 480 -427 640 -640 495 -640 480 -500 334 -640 508 -640 480 -640 457 -640 427 -640 480 -500 375 -425 640 -640 290 -500 330 -466 640 -500 375 -640 480 -640 480 -640 600 -640 640 -480 640 -640 426 -640 427 -640 427 -427 640 -640 473 -640 428 -640 480 -640 480 -640 480 -640 480 -640 427 -640 427 -500 375 -640 427 -426 640 -640 422 -640 480 -640 480 -640 425 -640 426 -640 427 -480 640 -640 426 -640 427 -335 500 -640 427 -640 480 -396 640 -640 480 -640 427 -425 640 -480 640 -640 494 -640 427 -640 480 -500 375 -480 640 -640 478 -514 640 -640 433 -640 480 -400 500 -640 426 -640 426 -480 640 -640 427 -500 333 -640 360 -640 478 -480 640 -640 427 -479 640 -478 640 -612 612 -512 640 -640 480 -640 427 -500 335 -640 480 -640 360 -640 496 -375 500 -386 640 -640 428 -640 441 -640 480 -640 427 -480 640 -640 427 -640 428 -428 640 -425 640 -640 549 -480 640 -640 480 -640 480 -640 391 -640 480 -640 480 -480 640 -640 427 -640 480 -640 480 -640 512 -500 317 -478 640 -640 428 -640 427 -640 480 -640 480 -640 427 -640 436 -640 503 -640 426 -640 480 -640 426 -640 311 -640 427 -640 640 -640 425 -640 478 -480 640 -480 640 -640 427 -640 480 -640 480 -640 428 -640 504 -427 640 -640 478 -640 480 -640 559 -640 437 -612 612 -640 424 -640 480 -480 640 -640 459 -640 424 -640 426 -640 480 -640 426 -640 480 -640 480 -640 480 -640 480 -500 335 -640 480 -640 426 -640 427 -427 640 -640 427 -640 426 -480 640 -640 480 -640 480 -640 423 -640 424 -640 480 -640 427 -640 480 -640 480 -348 640 -375 500 -461 640 -427 640 -612 612 -640 457 -640 426 -640 506 -414 640 -640 417 -640 423 -640 478 -640 426 -500 375 -640 481 -640 428 -640 428 -600 600 -640 429 -500 375 -640 480 -640 501 -640 480 -640 479 -640 480 -640 480 -640 480 -480 640 -538 360 -500 375 -640 480 -480 640 -640 512 -424 640 -640 425 -640 425 -640 480 -640 424 -500 375 -640 480 -640 360 -427 640 -448 299 -640 392 -426 640 -640 427 -640 445 -612 612 -500 333 -640 518 -640 320 -640 428 -480 640 -640 428 -640 428 -640 480 -640 427 -375 500 -640 480 -500 438 -478 640 -500 375 -320 240 -640 480 -640 480 -640 326 -640 480 -640 480 -640 491 -423 640 -640 427 -640 428 -640 480 -640 428 -640 480 -480 640 -640 398 -640 480 -612 612 -640 480 -640 425 -640 437 -426 640 -640 480 -640 431 -640 427 -427 640 -500 375 -375 500 -486 640 -480 640 -640 427 -426 640 -425 640 -478 640 -333 500 -500 332 -640 480 -640 640 -640 480 -500 448 -427 640 -500 372 -640 426 -480 360 -640 426 -427 640 -426 640 -427 640 -466 640 -640 403 -333 500 -640 449 -329 469 -640 342 -640 478 -640 474 -640 480 -425 640 -640 399 -640 426 -640 480 -500 334 -612 612 -482 640 -425 640 -640 640 -640 486 -333 500 -640 208 -612 612 -640 480 -427 640 -427 640 -640 480 -425 640 -640 427 -500 334 -640 427 -640 380 -500 281 -640 425 -640 425 -640 425 -640 480 -478 640 -333 500 -640 427 -640 427 -640 480 -428 640 -640 427 -640 480 -480 640 -640 427 -640 480 -640 480 -640 503 -427 640 -612 612 -640 427 -640 480 -640 565 -612 612 -640 640 -500 377 -640 428 -640 424 -500 375 -500 375 -480 640 -640 427 -369 500 -640 441 -640 425 -640 480 -640 480 -640 480 -500 333 -500 375 -640 480 -424 640 -500 333 -640 502 -640 480 -640 480 -500 334 -640 480 -640 480 -501 640 -640 480 -640 480 -478 640 -640 428 -612 612 -480 640 -592 640 -640 480 -640 480 -640 427 -640 480 -640 480 -427 640 -640 547 -640 480 -640 480 -640 439 -640 480 -640 427 -481 640 -494 378 -640 405 -640 480 -640 399 -519 640 -640 480 -640 360 -640 480 -640 427 -640 427 -640 483 -379 500 -640 480 -640 427 -640 426 -640 429 -640 426 -383 640 -640 480 -640 601 -640 455 -640 480 -375 500 -640 427 -640 427 -640 426 -427 640 -640 427 -640 426 -640 426 -500 375 -640 480 -480 640 -480 640 -427 640 -427 640 -480 640 -480 640 -640 426 -640 480 -500 375 -425 640 -480 640 -375 500 -640 480 -640 425 -640 425 -640 516 -640 463 -640 361 -640 402 -427 640 -512 640 -361 640 -424 640 -427 640 -640 640 -480 640 -640 457 -373 500 -640 426 -640 480 -640 478 -640 479 -640 427 -427 640 -640 480 -500 375 -480 640 -640 427 -640 480 -640 480 -640 480 -640 425 -640 427 -640 480 -640 419 -427 640 -640 427 -640 427 -640 480 -480 640 -640 425 -640 640 -640 480 -640 400 -333 500 -427 640 -640 480 -612 612 -640 427 -640 513 -640 428 -397 500 -640 427 -640 480 -426 640 -428 640 -480 640 -333 500 -640 426 -500 333 -500 335 -448 640 -500 375 -480 640 -640 456 -640 427 -640 457 -500 375 -640 406 -640 427 -480 640 -500 377 -500 375 -640 431 -640 359 -640 640 -640 428 -427 640 -640 480 -426 640 -640 427 -480 640 -500 333 -640 480 -640 426 -640 496 -532 640 -640 450 -640 427 -640 480 -480 640 -640 428 -640 258 -640 383 -640 460 -640 480 -640 480 -375 500 -640 263 -500 375 -612 612 -640 308 -640 427 -484 640 -640 424 -500 375 -640 427 -330 500 -640 360 -640 427 -480 640 -640 424 -640 480 -500 329 -640 480 -640 354 -640 480 -640 480 -343 230 -640 451 -427 640 -640 427 -500 429 -640 480 -640 427 -640 454 -640 426 -427 640 -525 640 -640 463 -200 133 -640 480 -426 640 -640 534 -640 494 -500 400 -500 375 -612 612 -480 640 -640 480 -640 569 -621 600 -640 480 -640 426 -640 480 -640 640 -640 427 -500 375 -640 480 -640 423 -500 375 -640 424 -426 640 -333 500 -640 294 -476 640 -545 640 -426 640 -480 640 -441 640 -640 480 -640 427 -640 427 -486 640 -640 426 -640 427 -171 500 -375 500 -425 640 -640 427 -640 426 -640 426 -427 640 -640 480 -640 360 -640 640 -640 427 -332 500 -500 375 -320 240 -640 480 -640 416 -640 428 -640 488 -640 426 -640 426 -640 480 -629 640 -361 640 -640 428 -640 480 -640 427 -640 360 -640 475 -500 375 -640 480 -640 548 -500 375 -427 640 -640 479 -480 640 -478 640 -480 640 -640 480 -640 438 -468 640 -640 340 -640 480 -640 480 -640 427 -640 480 -640 427 -500 375 -640 427 -640 424 -640 480 -478 640 -480 640 -640 427 -640 529 -500 375 -640 426 -640 426 -640 480 -612 612 -640 359 -480 640 -640 360 -640 427 -425 640 -640 427 -424 640 -640 480 -640 422 -640 443 -640 427 -640 428 -640 640 -640 480 -640 424 -640 480 -640 480 -640 480 -500 375 -640 480 -500 375 -640 426 -640 333 -455 480 -480 640 -407 640 -500 334 -640 480 -427 640 -500 333 -500 375 -480 640 -640 423 -500 393 -480 640 -640 427 -333 500 -640 360 -418 640 -640 536 -640 428 -640 452 -640 384 -500 332 -490 640 -640 426 -640 425 -640 496 -640 428 -640 429 -640 300 -640 427 -481 640 -640 480 -640 427 -612 612 -341 500 -612 612 -640 299 -640 536 -640 480 -427 640 -640 360 -427 640 -640 427 -500 375 -500 333 -640 480 -424 640 -640 427 -640 427 -640 480 -426 640 -640 480 -640 427 -640 480 -500 375 -640 426 -640 480 -640 480 -640 424 -480 640 -640 427 -640 640 -640 427 -426 640 -640 480 -640 480 -640 640 -640 480 -640 486 -375 500 -640 480 -375 500 -480 640 -640 479 -640 427 -480 640 -640 425 -640 424 -500 295 -427 640 -427 640 -640 480 -640 426 -430 640 -640 427 -375 500 -640 360 -640 480 -427 640 -640 480 -375 500 -640 427 -640 359 -640 480 -500 333 -426 640 -640 427 -637 640 -640 425 -480 640 -427 640 -640 424 -640 479 -640 427 -457 640 -640 427 -480 640 -640 480 -640 427 -500 337 -427 640 -640 360 -500 375 -640 640 -480 640 -640 428 -428 640 -500 375 -480 640 -640 480 -640 480 -640 480 -640 484 -426 640 -480 640 -480 640 -500 375 -640 480 -387 640 -640 427 -640 425 -427 640 -640 427 -375 500 -640 480 -640 480 -427 640 -500 366 -640 480 -640 480 -640 472 -640 416 -640 426 -427 640 -640 480 -478 640 -640 425 -640 428 -428 640 -640 480 -493 640 -640 480 -640 424 -500 333 -640 427 -640 427 -640 480 -640 427 -640 470 -640 427 -375 500 -640 427 -500 499 -640 480 -640 427 -640 427 -480 640 -640 436 -640 375 -640 640 -640 404 -333 500 -500 361 -640 480 -640 424 -640 480 -640 480 -640 444 -640 426 -480 640 -470 640 -640 427 -640 427 -480 640 -640 428 -640 425 -640 427 -640 426 -640 480 -640 480 -640 480 -480 640 -600 450 -640 378 -640 427 -640 480 -640 424 -640 480 -640 425 -427 640 -553 640 -640 428 -640 480 -640 428 -442 640 -500 375 -415 500 -640 640 -640 426 -500 378 -640 427 -640 480 -640 479 -640 427 -380 640 -640 480 -640 480 -500 375 -500 311 -469 640 -640 421 -640 480 -640 480 -640 427 -640 476 -640 480 -640 480 -480 640 -640 480 -640 480 -412 500 -640 426 -640 640 -640 427 -640 425 -640 368 -640 626 -640 484 -612 612 -640 514 -640 640 -640 468 -500 314 -458 640 -480 640 -640 457 -640 480 -640 480 -640 427 -640 480 -479 640 -640 480 -640 512 -334 500 -500 500 -640 426 -375 500 -427 640 -332 500 -640 426 -640 480 -640 480 -426 640 -640 427 -612 612 -640 480 -640 410 -640 480 -640 427 -640 480 -500 375 -640 426 -480 640 -457 640 -640 427 -427 640 -640 480 -640 427 -640 480 -640 426 -640 428 -333 500 -640 478 -640 426 -640 427 -640 480 -640 480 -450 500 -640 427 -640 427 -640 428 -381 640 -500 375 -375 500 -640 426 -640 519 -480 640 -640 588 -375 500 -640 480 -640 480 -500 442 -480 640 -640 480 -500 429 -640 429 -640 427 -640 425 -640 480 -500 375 -640 427 -480 640 -640 480 -480 640 -640 480 -640 437 -640 480 -640 312 -640 427 -500 332 -640 480 -429 640 -640 426 -640 556 -480 640 -640 427 -640 427 -480 640 -640 486 -640 480 -640 480 -640 480 -640 480 -300 403 -493 500 -640 480 -640 414 -640 375 -333 500 -500 333 -630 420 -640 414 -375 500 -640 427 -640 427 -640 457 -640 361 -640 427 -500 333 -640 425 -640 480 -426 640 -640 429 -640 480 -640 426 -640 427 -640 480 -640 426 -640 360 -640 480 -612 612 -640 429 -425 640 -612 612 -480 640 -640 478 -413 640 -640 478 -480 640 -640 427 -640 360 -480 640 -500 332 -640 480 -640 480 -640 471 -640 478 -427 640 -404 640 -640 480 -375 500 -359 640 -640 425 -480 640 -640 458 -640 426 -427 640 -640 427 -500 395 -640 427 -640 425 -640 427 -640 428 -375 500 -375 500 -500 375 -425 640 -640 480 -612 612 -640 489 -640 426 -640 426 -640 479 -640 464 -640 480 -640 532 -640 480 -640 322 -640 427 -500 323 -640 427 -500 375 -427 640 -640 640 -426 640 -612 612 -500 332 -480 640 -423 640 -640 480 -640 384 -640 429 -640 512 -500 375 -480 640 -640 532 -640 425 -640 480 -640 428 -425 640 -427 640 -500 338 -640 420 -640 480 -640 427 -640 427 -640 427 -640 426 -640 480 -640 480 -375 500 -640 426 -424 640 -640 480 -640 428 -640 352 -640 480 -426 640 -500 333 -640 425 -640 480 -640 426 -640 480 -640 513 -640 426 -640 394 -640 480 -640 480 -640 434 -500 341 -418 640 -640 426 -640 480 -640 480 -640 480 -500 375 -426 640 -500 375 -640 446 -640 480 -640 426 -640 427 -640 426 -640 480 -640 463 -640 480 -427 640 -640 426 -640 498 -213 140 -640 427 -375 500 -640 426 -500 375 -332 500 -427 640 -640 427 -640 426 -640 480 -640 480 -426 640 -640 425 -640 480 -480 640 -640 489 -640 480 -640 480 -478 640 -640 426 -640 563 -640 478 -640 480 -640 480 -640 427 -500 334 -640 478 -500 375 -640 443 -427 640 -353 500 -640 511 -640 427 -612 612 -480 640 -600 400 -500 375 -581 575 -640 427 -640 424 -640 359 -640 483 -500 375 -480 640 -640 480 -640 426 -640 427 -500 375 -500 375 -640 456 -640 480 -640 480 -640 428 -640 480 -640 480 -427 640 -640 480 -500 352 -640 427 -445 640 -500 332 -640 494 -640 484 -598 640 -640 480 -640 480 -640 427 -640 427 -500 333 -640 640 -427 640 -480 640 -640 457 -640 427 -480 640 -640 514 -640 471 -640 478 -427 640 -640 422 -640 480 -640 421 -612 612 -640 478 -500 375 -640 522 -640 424 -480 640 -640 480 -640 480 -602 640 -640 428 -640 376 -640 320 -612 612 -640 482 -640 480 -427 640 -640 480 -640 426 -640 480 -640 480 -640 536 -640 426 -640 480 -450 640 -640 427 -324 432 -640 505 -640 480 -500 500 -640 640 -640 425 -480 640 -640 480 -427 640 -640 497 -640 360 -640 480 -640 480 -640 480 -640 427 -500 373 -640 428 -640 426 -500 375 -640 423 -640 616 -640 428 -640 502 -640 488 -414 640 -640 479 -478 640 -620 640 -640 427 -640 360 -640 427 -500 344 -640 480 -640 480 -640 480 -428 640 -444 640 -640 429 -500 375 -422 640 -360 640 -500 332 -640 480 -615 310 -640 427 -640 480 -612 612 -640 425 -427 640 -640 427 -375 500 -426 640 -612 612 -640 640 -500 333 -640 426 -500 375 -640 426 -640 539 -640 480 -640 481 -640 427 -640 603 -640 426 -640 457 -500 375 -640 448 -640 369 -640 480 -500 333 -375 500 -640 480 -427 640 -640 441 -640 301 -332 500 -640 480 -640 426 -640 480 -250 188 -573 640 -500 375 -640 427 -640 327 -640 496 -359 500 -640 427 -640 480 -640 360 -640 530 -640 427 -640 426 -640 498 -480 640 -640 480 -480 640 -500 334 -640 427 -640 406 -480 640 -640 480 -640 469 -640 480 -640 480 -640 433 -640 480 -640 439 -460 345 -640 426 -640 480 -640 360 -640 480 -640 480 -405 640 -640 427 -480 640 -427 640 -640 480 -640 480 -640 425 -480 640 -640 427 -612 612 -640 480 -612 612 -640 429 -640 478 -500 333 -640 480 -640 366 -640 360 -480 640 -480 640 -500 333 -640 480 -640 483 -640 480 -640 480 -640 483 -500 500 -500 375 -640 463 -612 612 -640 480 -500 375 -355 500 -640 472 -640 480 -425 640 -604 640 -640 383 -427 640 -640 427 -640 427 -640 425 -640 410 -640 480 -640 429 -640 480 -640 480 -640 508 -640 426 -640 360 -500 375 -612 612 -370 500 -640 320 -426 640 -640 480 -480 640 -426 640 -480 640 -640 427 -640 426 -612 612 -640 338 -640 425 -640 480 -480 640 -375 500 -640 480 -640 512 -427 640 -500 375 -640 427 -640 428 -640 425 -640 476 -426 640 -480 640 -480 640 -480 640 -494 640 -480 640 -609 640 -640 368 -640 427 -640 433 -640 480 -375 500 -510 510 -640 425 -640 480 -375 500 -640 480 -640 640 -640 424 -640 427 -640 429 -640 480 -480 640 -640 480 -500 375 -640 480 -611 640 -500 332 -640 427 -421 640 -640 480 -640 427 -640 478 -612 612 -612 612 -640 480 -375 500 -640 480 -640 480 -500 270 -640 480 -612 612 -500 250 -500 375 -640 364 -640 480 -640 427 -480 640 -640 427 -640 426 -500 342 -640 427 -500 330 -640 480 -640 426 -640 427 -400 500 -640 479 -296 640 -620 640 -640 480 -480 640 -640 427 -480 640 -640 480 -640 427 -640 480 -640 428 -640 427 -612 612 -640 480 -640 480 -640 480 -400 312 -640 480 -640 427 -426 255 -612 612 -640 428 -640 430 -320 240 -640 425 -640 480 -425 640 -640 428 -640 433 -640 427 -357 500 -640 459 -640 427 -640 480 -640 491 -500 375 -640 427 -510 640 -640 486 -640 480 -640 424 -640 478 -480 640 -428 640 -326 500 -640 480 -500 324 -640 427 -640 640 -640 495 -640 426 -500 375 -426 640 -640 480 -640 514 -640 427 -500 375 -427 640 -640 428 -640 359 -640 480 -640 482 -640 480 -640 387 -424 640 -640 480 -474 640 -612 612 -500 375 -160 120 -640 399 -500 333 -425 640 -640 427 -480 640 -362 500 -640 427 -640 480 -480 640 -480 640 -518 640 -425 640 -500 333 -640 480 -640 480 -427 500 -500 375 -640 435 -500 375 -640 427 -640 512 -640 427 -418 640 -640 434 -500 376 -640 480 -640 426 -500 333 -500 340 -427 640 -640 427 -375 500 -640 427 -640 427 -500 207 -427 640 -640 480 -640 360 -480 640 -640 427 -512 640 -500 333 -480 640 -640 429 -640 532 -640 420 -640 480 -500 437 -383 640 -640 426 -640 480 -480 319 -640 480 -424 640 -427 640 -640 480 -640 480 -426 640 -426 640 -640 447 -640 424 -480 640 -640 427 -640 480 -640 480 -640 426 -640 427 -504 640 -640 480 -640 433 -640 426 -640 427 -500 333 -480 640 -640 478 -640 428 -640 427 -640 427 -500 333 -640 426 -640 432 -500 375 -500 375 -640 480 -344 500 -375 500 -480 640 -500 375 -426 640 -640 167 -500 333 -640 407 -640 424 -640 426 -640 512 -640 427 -640 480 -599 419 -640 427 -640 480 -640 427 -640 480 -640 480 -640 425 -640 480 -640 494 -640 448 -640 480 -426 640 -640 480 -640 480 -454 640 -640 427 -640 480 -640 427 -426 640 -640 427 -640 426 -640 426 -640 426 -640 480 -640 360 -640 427 -640 427 -640 427 -480 640 -640 427 -640 480 -640 366 -500 375 -640 427 -480 640 -640 427 -500 375 -640 427 -640 427 -640 428 -500 375 -640 289 -640 480 -480 640 -427 640 -480 640 -640 480 -640 640 -472 640 -427 640 -612 612 -480 640 -640 427 -640 427 -425 640 -640 426 -640 360 -640 354 -480 640 -640 424 -480 640 -640 392 -640 228 -640 424 -640 480 -640 480 -500 281 -640 480 -640 427 -640 278 -376 500 -375 500 -640 432 -640 357 -425 640 -480 640 -500 337 -500 375 -500 375 -640 480 -640 480 -640 427 -640 427 -333 500 -640 480 -480 640 -640 360 -591 640 -640 360 -640 480 -480 640 -640 480 -640 427 -500 375 -640 480 -427 640 -640 427 -640 640 -500 366 -640 480 -512 640 -359 640 -320 640 -640 360 -480 640 -480 640 -640 619 -640 426 -500 400 -640 427 -640 427 -333 500 -640 424 -480 640 -425 640 -640 361 -452 500 -404 500 -640 640 -425 640 -640 406 -436 291 -640 480 -640 426 -640 427 -425 640 -429 640 -500 375 -640 426 -500 375 -480 640 -640 427 -640 512 -640 426 -640 426 -640 427 -640 480 -324 500 -640 480 -640 428 -640 480 -640 397 -375 500 -640 480 -640 400 -640 360 -640 426 -640 427 -640 427 -640 427 -500 330 -480 640 -640 576 -640 428 -500 331 -640 427 -500 278 -480 640 -640 640 -490 640 -640 383 -612 612 -480 640 -332 500 -640 480 -640 480 -640 427 -478 640 -426 640 -640 507 -480 640 -480 640 -480 640 -640 424 -640 252 -640 411 -640 427 -640 427 -463 640 -640 480 -640 427 -640 429 -331 500 -640 480 -640 427 -500 332 -500 375 -352 288 -500 375 -491 640 -479 640 -612 612 -480 640 -640 427 -403 456 -600 399 -375 500 -640 424 -640 480 -612 612 -640 480 -640 427 -640 482 -462 640 -480 640 -427 640 -640 427 -640 429 -640 425 -640 427 -640 468 -640 427 -640 480 -640 490 -640 480 -640 427 -640 480 -640 640 -640 480 -612 612 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -427 640 -640 427 -538 360 -640 480 -640 426 -500 370 -640 425 -640 480 -640 425 -428 640 -640 480 -640 428 -500 375 -428 640 -640 427 -640 460 -640 480 -512 640 -640 426 -640 427 -640 424 -500 375 -640 516 -640 424 -640 428 -500 332 -640 427 -461 307 -640 426 -640 379 -640 480 -640 420 -640 480 -480 640 -480 640 -640 638 -640 259 -640 480 -426 640 -640 427 -640 480 -640 480 -640 427 -640 426 -375 500 -640 427 -640 421 -426 640 -640 424 -640 426 -640 427 -480 640 -375 500 -640 429 -640 583 -640 480 -500 375 -640 640 -426 640 -640 480 -284 640 -240 166 -640 428 -640 426 -640 480 -640 596 -640 425 -640 640 -640 427 -640 408 -640 360 -500 375 -427 640 -480 640 -640 480 -640 423 -640 428 -640 360 -640 585 -640 426 -640 425 -354 500 -640 480 -640 424 -640 435 -640 480 -500 375 -640 427 -640 480 -427 640 -425 640 -375 500 -640 450 -640 426 -640 640 -480 640 -360 640 -640 426 -640 428 -640 427 -427 640 -640 480 -500 375 -640 426 -600 375 -640 331 -640 434 -640 428 -427 640 -500 335 -640 426 -640 480 -640 392 -640 427 -640 480 -640 640 -612 612 -640 360 -375 500 -612 612 -640 480 -640 480 -640 480 -636 479 -640 433 -640 480 -397 464 -480 640 -640 426 -640 429 -640 480 -427 640 -640 428 -444 640 -640 480 -640 359 -480 640 -640 425 -500 375 -640 378 -640 428 -427 640 -640 334 -640 428 -640 426 -640 480 -640 495 -640 473 -640 384 -427 640 -640 405 -478 640 -640 425 -480 640 -640 426 -500 366 -640 426 -640 427 -480 640 -500 332 -640 480 -640 399 -640 427 -640 424 -640 480 -640 502 -640 502 -640 480 -640 480 -640 451 -640 426 -375 500 -640 427 -640 423 -422 640 -500 335 -640 480 -640 480 -427 640 -640 404 -640 427 -640 427 -640 427 -640 480 -640 480 -480 640 -640 426 -640 393 -457 640 -640 426 -480 640 -500 500 -640 427 -640 480 -500 375 -640 480 -500 375 -640 426 -640 480 -500 375 -351 500 -379 500 -640 428 -640 427 -640 419 -500 454 -363 640 -640 427 -640 427 -420 640 -640 427 -426 640 -500 375 -427 640 -640 427 -640 448 -443 640 -512 640 -640 427 -640 480 -640 515 -640 432 -640 428 -640 480 -375 500 -640 338 -500 500 -515 640 -640 480 -640 449 -640 427 -640 532 -500 640 -640 374 -640 427 -640 614 -640 480 -640 480 -480 640 -640 480 -427 640 -640 451 -640 424 -640 480 -640 426 -640 425 -640 480 -458 640 -480 640 -640 427 -480 640 -288 352 -640 427 -640 463 -640 427 -640 480 -640 425 -393 640 -480 640 -640 427 -425 640 -640 427 -512 640 -640 425 -640 480 -640 256 -640 478 -500 375 -640 559 -612 612 -444 640 -640 427 -480 640 -640 360 -640 488 -640 452 -640 426 -427 640 -487 291 -439 640 -640 515 -640 480 -640 480 -640 480 -612 612 -478 640 -640 480 -480 640 -633 640 -500 333 -640 425 -640 480 -480 640 -640 480 -640 480 -312 640 -640 479 -640 427 -427 640 -640 480 -500 375 -640 480 -640 427 -640 480 -480 640 -640 474 -640 427 -640 426 -386 640 -640 383 -450 640 -500 332 -640 479 -480 640 -640 480 -449 640 -640 480 -640 388 -640 429 -640 480 -375 500 -640 480 -640 480 -640 427 -640 425 -640 480 -640 383 -640 427 -640 425 -612 612 -640 480 -640 616 -500 375 -400 600 -500 454 -640 369 -445 640 -640 426 -486 640 -640 447 -640 480 -480 640 -640 480 -613 640 -640 427 -467 640 -640 480 -640 426 -640 364 -640 424 -399 600 -640 480 -500 333 -640 427 -640 426 -480 640 -480 640 -389 640 -640 480 -640 480 -640 426 -375 500 -640 480 -640 480 -640 480 -640 480 -640 427 -640 426 -640 427 -640 426 -640 427 -640 426 -640 480 -640 429 -640 480 -428 640 -640 443 -640 426 -640 501 -640 339 -640 640 -640 480 -640 429 -519 640 -640 480 -375 500 -640 427 -640 426 -640 480 -640 636 -640 426 -500 375 -500 375 -640 480 -500 375 -640 426 -640 428 -640 436 -612 612 -640 471 -640 423 -640 429 -640 425 -425 640 -640 480 -640 424 -640 504 -640 480 -480 640 -640 480 -640 428 -640 480 -640 639 -640 480 -480 640 -500 375 -640 360 -333 500 -640 411 -640 481 -640 393 -430 640 -640 427 -500 500 -640 427 -640 543 -640 480 -640 427 -640 480 -500 284 -640 480 -640 438 -640 480 -612 612 -612 612 -427 640 -480 640 -640 480 -480 640 -426 640 -500 333 -640 427 -640 480 -500 375 -640 480 -640 482 -640 427 -500 375 -640 427 -640 427 -640 360 -640 478 -640 427 -640 480 -640 480 -500 375 -500 333 -500 375 -461 640 -640 480 -640 427 -640 426 -640 480 -640 480 -640 480 -640 490 -500 308 -640 359 -640 406 -500 334 -480 640 -640 478 -640 428 -500 404 -640 427 -612 612 -480 640 -640 480 -640 480 -640 427 -640 640 -640 427 -640 427 -640 473 -640 480 -640 480 -640 480 -501 640 -640 640 -640 424 -640 521 -480 640 -480 640 -640 428 -480 640 -640 480 -640 428 -640 480 -640 383 -479 640 -640 425 -640 427 -640 480 -640 480 -640 480 -640 505 -640 480 -500 333 -640 480 -640 480 -500 375 -640 480 -640 449 -640 480 -375 500 -640 428 -500 375 -500 333 -640 480 -640 424 -640 428 -640 427 -640 427 -612 612 -640 543 -640 446 -640 505 -500 375 -480 640 -640 400 -640 427 -640 480 -640 426 -479 640 -640 480 -640 320 -428 640 -640 448 -480 640 -612 612 -640 480 -640 424 -640 477 -427 640 -341 500 -480 640 -428 640 -640 427 -427 640 -640 427 -640 480 -640 480 -640 427 -640 428 -480 640 -640 427 -640 480 -640 426 -425 640 -640 480 -640 480 -640 462 -500 375 -594 555 -640 427 -640 480 -640 480 -640 447 -612 612 -640 480 -640 480 -640 427 -640 480 -500 375 -640 454 -427 640 -640 426 -640 480 -640 640 -287 432 -640 427 -640 640 -640 427 -640 426 -500 400 -640 427 -640 480 -640 427 -500 334 -612 612 -640 480 -640 480 -500 375 -640 480 -427 640 -500 333 -612 612 -640 429 -640 480 -480 640 -640 427 -640 480 -640 427 -500 375 -640 480 -375 500 -500 375 -551 640 -640 427 -640 429 -640 428 -640 360 -640 478 -640 480 -308 500 -640 478 -640 388 -640 480 -640 426 -640 423 -500 375 -640 429 -427 640 -640 389 -640 480 -640 427 -640 333 -640 428 -500 346 -640 480 -640 425 -640 438 -640 480 -640 480 -640 428 -640 481 -483 640 -427 640 -640 428 -640 426 -640 480 -480 640 -640 427 -640 480 -320 240 -640 425 -500 333 -640 506 -640 428 -640 425 -480 360 -640 427 -408 640 -612 612 -480 640 -640 359 -491 280 -640 480 -640 637 -480 640 -640 424 -640 480 -640 481 -640 480 -640 480 -640 480 -640 480 -480 640 -439 640 -640 480 -640 428 -517 640 -640 427 -640 457 -500 375 -640 484 -480 640 -640 480 -640 480 -640 418 -640 601 -600 400 -640 427 -640 480 -480 640 -640 480 -500 375 -426 640 -640 480 -639 640 -480 640 -480 640 -640 314 -480 640 -500 361 -640 473 -500 377 -612 612 -640 403 -640 426 -512 640 -640 640 -640 429 -640 480 -640 428 -640 480 -640 480 -640 480 -480 640 -500 500 -500 333 -640 428 -640 452 -480 640 -640 479 -518 640 -500 500 -640 427 -479 640 -640 481 -640 480 -612 612 -484 480 -319 640 -480 640 -480 640 -629 640 -478 640 -381 500 -640 427 -640 480 -640 480 -640 427 -640 463 -428 640 -427 640 -480 640 -640 480 -500 375 -640 427 -640 419 -640 480 -640 313 -480 640 -445 640 -640 480 -640 427 -375 500 -640 480 -640 512 -480 640 -640 427 -640 480 -640 427 -640 427 -640 536 -375 500 -640 428 -640 480 -640 360 -640 425 -640 480 -640 427 -640 427 -640 427 -350 500 -480 640 -500 374 -640 478 -640 480 -640 429 -640 478 -640 467 -500 332 -480 640 -500 375 -640 478 -427 640 -640 427 -427 640 -375 500 -640 424 -640 480 -428 640 -640 480 -640 613 -480 640 -640 444 -640 383 -640 480 -640 427 -640 480 -640 495 -640 426 -640 415 -640 480 -640 427 -480 640 -640 449 -640 426 -640 264 -640 427 -640 427 -509 640 -640 427 -640 480 -494 640 -480 640 -634 640 -640 427 -640 480 -640 516 -640 480 -640 428 -640 486 -640 428 -640 480 -640 401 -500 375 -640 480 -640 426 -500 334 -640 480 -620 640 -640 480 -314 500 -360 640 -640 427 -500 376 -500 333 -640 480 -640 480 -426 640 -640 414 -640 427 -480 640 -640 480 -640 480 -640 480 -500 375 -640 427 -640 480 -612 612 -640 480 -427 640 -640 425 -640 427 -640 464 -640 480 -640 427 -640 427 -612 612 -640 481 -640 480 -640 479 -640 425 -640 427 -640 266 -427 640 -640 305 -480 640 -640 427 -427 640 -455 640 -640 425 -480 640 -640 480 -375 500 -428 640 -480 640 -640 355 -375 500 -640 427 -640 204 -640 640 -640 480 -640 427 -640 457 -427 640 -640 425 -500 375 -640 426 -640 427 -640 480 -571 640 -640 480 -640 628 -480 640 -427 640 -640 425 -427 640 -500 375 -426 640 -500 332 -640 480 -640 427 -640 427 -640 427 -332 500 -457 640 -640 429 -640 427 -427 640 -496 500 -640 383 -640 422 -640 480 -640 427 -640 347 -393 500 -480 640 -640 637 -640 424 -500 375 -640 480 -640 480 -640 427 -640 425 -640 480 -640 427 -640 480 -640 427 -640 432 -640 480 -640 428 -427 640 -500 375 -640 480 -640 425 -640 465 -640 480 -640 324 -640 480 -640 427 -640 462 -640 426 -640 360 -640 427 -640 426 -424 640 -640 428 -500 334 -640 425 -640 213 -640 480 -333 500 -640 359 -640 480 -640 427 -612 612 -480 640 -480 640 -640 480 -640 427 -500 381 -500 342 -640 449 -640 480 -640 430 -640 480 -640 427 -640 480 -427 640 -427 640 -640 427 -640 480 -640 399 -640 457 -640 480 -640 480 -640 427 -640 337 -640 427 -426 640 -640 428 -640 363 -640 480 -640 430 -640 481 -640 429 -640 480 -640 433 -640 428 -478 640 -640 427 -480 640 -612 612 -480 360 -640 480 -375 500 -640 427 -640 426 -640 266 -640 426 -498 640 -640 480 -480 640 -640 427 -640 427 -640 480 -480 640 -612 612 -640 624 -640 427 -640 398 -640 426 -640 480 -360 640 -640 478 -640 427 -640 427 -500 375 -640 526 -640 362 -640 480 -640 424 -640 480 -426 640 -480 640 -640 426 -640 426 -640 461 -640 480 -375 500 -640 426 -640 426 -640 425 -480 640 -640 427 -640 430 -640 478 -640 480 -350 500 -375 500 -640 427 -457 640 -640 480 -375 500 -640 640 -640 584 -640 480 -640 480 -500 349 -612 612 -500 375 -640 428 -640 480 -500 333 -500 400 -640 513 -640 427 -640 427 -480 640 -640 478 -457 640 -640 427 -500 281 -640 368 -640 480 -640 427 -640 427 -500 406 -500 375 -360 270 -640 422 -480 640 -640 427 -640 561 -640 478 -640 427 -640 480 -500 333 -640 427 -640 427 -640 480 -640 427 -640 485 -400 640 -427 640 -640 480 -428 640 -640 273 -600 402 -480 640 -640 518 -640 427 -640 480 -640 427 -640 427 -640 427 -640 480 -640 640 -640 426 -354 500 -640 480 -640 415 -480 640 -640 480 -640 418 -640 428 -640 480 -640 425 -335 500 -640 480 -640 636 -640 429 -427 640 -640 480 -427 640 -640 427 -612 612 -640 480 -640 480 -500 392 -640 430 -256 448 -640 327 -640 512 -480 640 -640 446 -640 480 -427 640 -500 457 -640 427 -640 427 -500 375 -640 426 -480 640 -640 640 -640 457 -640 482 -375 500 -480 640 -640 476 -640 480 -640 360 -480 640 -427 640 -640 480 -640 427 -640 427 -640 480 -375 500 -500 375 -426 640 -480 640 -640 321 -640 489 -425 640 -182 273 -640 427 -640 427 -640 436 -640 457 -640 426 -561 640 -425 640 -640 427 -640 427 -640 427 -640 451 -427 640 -640 480 -640 480 -612 612 -640 427 -425 640 -640 427 -640 480 -426 640 -375 500 -500 375 -640 426 -640 379 -427 640 -480 640 -640 425 -640 426 -500 493 -640 341 -640 428 -425 640 -640 480 -640 574 -640 480 -480 640 -640 427 -640 480 -640 478 -640 421 -400 640 -640 425 -424 640 -480 640 -640 426 -640 541 -424 640 -640 480 -640 478 -640 427 -426 640 -640 480 -427 640 -500 375 -500 375 -500 326 -468 640 -430 640 -640 480 -640 640 -640 480 -640 361 -428 640 -500 333 -480 640 -640 480 -640 429 -506 640 -640 391 -328 500 -612 612 -426 640 -640 565 -640 480 -640 455 -640 371 -640 426 -640 427 -454 640 -421 640 -640 427 -457 640 -640 321 -640 442 -640 424 -427 640 -640 427 -494 640 -400 239 -640 426 -640 480 -640 480 -480 640 -640 480 -480 640 -471 640 -480 640 -640 497 -640 480 -640 480 -424 640 -640 426 -640 425 -612 612 -500 250 -640 416 -640 480 -640 427 -427 640 -427 640 -640 298 -640 426 -480 640 -640 361 -640 480 -640 360 -640 427 -612 612 -640 426 -480 640 -640 424 -640 411 -640 480 -640 480 -640 426 -640 533 -640 480 -480 640 -640 427 -426 640 -319 235 -640 424 -480 640 -640 353 -500 348 -640 427 -426 640 -375 500 -640 480 -640 426 -640 466 -640 480 -480 640 -640 480 -640 427 -640 480 -480 640 -485 404 -524 640 -500 375 -640 480 -480 640 -640 480 -640 429 -480 640 -640 426 -640 480 -640 359 -640 444 -640 278 -640 469 -640 480 -640 425 -423 640 -612 612 -425 640 -426 640 -640 423 -640 480 -480 640 -640 427 -640 426 -600 450 -640 480 -640 427 -640 427 -640 480 -640 427 -640 427 -640 480 -640 428 -640 480 -640 480 -500 308 -640 478 -640 480 -640 427 -640 427 -640 427 -480 640 -480 640 -640 513 -500 336 -417 640 -375 500 -640 426 -640 454 -375 500 -640 427 -640 318 -640 427 -640 427 -375 500 -640 480 -640 358 -640 427 -640 426 -469 640 -640 427 -480 640 -480 640 -640 480 -640 426 -500 375 -640 427 -480 640 -640 427 -640 360 -500 375 -640 427 -640 480 -640 426 -500 333 -500 375 -480 640 -640 480 -640 480 -473 640 -640 566 -640 476 -427 640 -640 425 -640 490 -480 640 -359 640 -640 480 -500 375 -640 425 -640 427 -444 640 -640 427 -640 480 -640 480 -640 480 -332 500 -640 408 -480 640 -640 480 -640 640 -480 640 -640 480 -640 640 -500 372 -640 428 -607 640 -640 426 -480 640 -640 427 -640 458 -640 426 -500 375 -640 424 -612 612 -640 425 -640 480 -500 370 -640 480 -640 423 -640 427 -640 425 -640 428 -640 428 -640 427 -640 626 -500 267 -640 480 -640 480 -640 478 -332 500 -612 612 -640 428 -640 480 -640 453 -640 480 -640 223 -640 478 -640 427 -640 427 -640 480 -640 422 -640 361 -640 480 -427 640 -486 640 -427 640 -640 427 -612 612 -426 640 -640 427 -411 640 -500 375 -640 427 -640 360 -640 428 -640 428 -640 425 -471 640 -462 640 -640 480 -640 451 -640 427 -640 427 -320 240 -640 512 -427 640 -533 640 -640 427 -480 640 -640 426 -640 425 -427 640 -500 375 -640 425 -640 480 -640 438 -640 425 -498 438 -640 427 -640 423 -640 360 -640 480 -640 480 -500 375 -640 426 -480 640 -640 426 -500 400 -500 479 -612 612 -640 570 -480 640 -640 480 -640 427 -423 640 -640 480 -427 640 -640 480 -640 424 -640 426 -427 640 -640 480 -480 640 -640 480 -640 640 -480 640 -427 640 -640 427 -312 500 -640 480 -640 428 -640 427 -500 375 -638 640 -428 640 -375 500 -640 480 -640 425 -640 420 -505 640 -375 500 -500 296 -480 640 -640 480 -480 640 -612 612 -640 428 -640 471 -640 480 -640 463 -640 427 -640 425 -640 360 -640 360 -427 640 -640 640 -478 640 -640 426 -480 640 -500 375 -480 640 -425 640 -640 640 -640 564 -640 428 -500 375 -640 428 -640 427 -640 480 -640 512 -640 425 -640 452 -640 427 -640 491 -640 483 -480 640 -640 480 -427 640 -640 480 -640 425 -640 480 -427 640 -640 640 -640 428 -425 640 -640 480 -427 640 -429 640 -532 640 -480 640 -640 501 -640 480 -361 640 -450 372 -640 427 -640 480 -640 480 -640 480 -640 441 -480 640 -500 381 -428 640 -640 443 -640 482 -640 427 -640 512 -500 332 -640 480 -403 640 -640 426 -640 453 -480 640 -640 424 -410 500 -640 477 -480 640 -640 426 -500 372 -500 375 -640 360 -485 640 -640 480 -500 375 -640 608 -640 133 -640 428 -640 480 -520 373 -640 427 -480 640 -332 640 -640 427 -612 612 -640 480 -500 429 -640 480 -640 428 -500 375 -640 539 -640 469 -427 640 -640 427 -640 428 -427 640 -480 640 -640 427 -640 480 -640 426 -480 640 -640 480 -640 427 -640 427 -640 480 -640 428 -640 457 -640 480 -640 427 -534 640 -427 640 -640 446 -480 640 -640 425 -427 640 -480 640 -640 361 -500 375 -640 480 -640 480 -480 640 -640 431 -640 480 -426 640 -640 428 -480 640 -640 424 -500 375 -640 427 -640 480 -640 480 -500 375 -640 427 -640 470 -366 500 -333 500 -640 427 -500 375 -320 640 -640 426 -640 509 -612 612 -640 478 -640 426 -640 640 -640 480 -640 320 -448 600 -500 338 -427 640 -640 480 -426 640 -640 481 -640 480 -427 640 -612 612 -480 640 -480 640 -480 640 -425 640 -640 480 -640 480 -640 427 -640 427 -640 427 -640 480 -640 480 -640 480 -640 557 -480 640 -640 425 -640 427 -482 640 -500 375 -568 640 -640 424 -480 319 -640 480 -640 480 -640 480 -640 427 -640 415 -500 375 -500 328 -640 425 -640 431 -319 500 -612 612 -640 640 -640 640 -375 500 -480 640 -640 442 -333 500 -640 429 -640 428 -640 427 -330 500 -500 375 -640 480 -640 512 -612 612 -500 375 -640 427 -640 515 -441 640 -640 480 -493 600 -640 478 -331 500 -500 361 -640 428 -500 375 -640 428 -640 429 -640 427 -640 425 -480 640 -480 640 -480 640 -480 640 -640 426 -640 480 -478 640 -427 640 -375 500 -640 427 -640 475 -500 375 -640 419 -513 640 -480 640 -640 480 -640 428 -348 500 -640 480 -640 480 -640 480 -640 427 -420 500 -640 427 -238 640 -480 640 -640 480 -480 640 -483 640 -640 480 -640 480 -330 640 -485 640 -640 480 -640 429 -640 426 -640 480 -612 612 -640 394 -427 640 -640 457 -333 500 -428 640 -640 426 -640 480 -375 500 -640 446 -640 512 -427 640 -640 428 -640 328 -640 480 -612 612 -640 427 -471 450 -640 480 -480 640 -640 480 -640 480 -640 427 -640 448 -500 409 -640 432 -640 400 -640 427 -640 426 -640 480 -640 480 -640 480 -640 480 -480 640 -640 480 -500 333 -500 375 -427 640 -640 360 -427 640 -500 375 -640 427 -640 460 -640 360 -640 480 -640 480 -640 591 -427 640 -640 480 -640 424 -612 612 -640 431 -640 478 -427 640 -640 427 -640 480 -640 480 -638 640 -479 640 -640 480 -640 480 -640 456 -640 480 -427 640 -640 426 -500 335 -480 640 -640 396 -512 512 -640 427 -480 640 -640 424 -500 375 -500 333 -424 640 -480 640 -640 473 -640 482 -281 486 -480 640 -424 640 -426 640 -640 427 -640 436 -640 480 -500 375 -640 447 -640 427 -640 448 -640 427 -640 427 -640 480 -600 359 -640 148 -640 434 -640 480 -612 612 -500 500 -500 333 -640 426 -426 640 -640 480 -640 428 -640 494 -640 426 -425 640 -640 480 -640 456 -500 375 -427 640 -640 427 -640 480 -640 363 -542 640 -457 640 -640 360 -480 640 -640 478 -500 375 -640 424 -640 488 -480 640 -640 427 -500 375 -640 243 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -532 640 -640 318 -640 480 -640 427 -640 426 -300 225 -480 640 -640 480 -640 429 -640 379 -424 640 -359 640 -640 478 -427 640 -480 640 -640 425 -640 424 -640 480 -332 500 -640 480 -480 640 -640 480 -480 640 -640 427 -426 640 -640 425 -640 479 -640 480 -640 480 -640 428 -640 428 -380 500 -640 480 -640 383 -640 480 -640 427 -500 375 -480 640 -640 427 -500 400 -640 480 -640 427 -640 467 -640 480 -500 375 -480 640 -640 429 -500 375 -640 390 -480 640 -640 480 -600 450 -612 612 -480 640 -468 640 -640 427 -640 480 -640 427 -500 375 -640 480 -640 480 -640 426 -640 480 -640 427 -640 427 -640 480 -500 333 -640 427 -427 640 -640 480 -640 480 -604 640 -478 640 -500 376 -640 441 -640 403 -640 480 -640 404 -427 640 -640 394 -640 427 -640 480 -640 640 -640 480 -611 640 -612 612 -478 640 -640 480 -480 640 -612 612 -640 351 -640 513 -640 521 -640 360 -427 640 -500 375 -640 540 -480 640 -500 375 -423 640 -640 448 -500 375 -640 640 -500 303 -640 426 -640 384 -640 480 -640 429 -640 480 -424 640 -640 480 -640 480 -640 431 -640 480 -640 480 -640 426 -640 427 -640 480 -640 427 -640 440 -480 640 -500 352 -640 428 -640 481 -500 500 -640 480 -640 480 -511 640 -640 480 -640 425 -640 353 -640 424 -640 427 -588 640 -640 426 -640 392 -334 500 -496 500 -640 480 -480 640 -640 480 -443 640 -640 439 -640 640 -480 640 -305 500 -640 428 -640 480 -640 426 -640 480 -427 640 -640 427 -426 640 -640 426 -612 612 -480 640 -640 426 -640 457 -640 480 -640 580 -640 360 -640 428 -640 427 -640 480 -500 479 -434 640 -640 425 -531 640 -640 480 -640 426 -640 480 -640 391 -640 426 -640 480 -640 472 -640 376 -640 427 -640 480 -512 640 -500 389 -640 427 -640 427 -500 375 -500 375 -640 425 -640 480 -640 458 -640 478 -640 427 -480 640 -640 480 -640 427 -427 640 -640 425 -510 640 -487 640 -480 640 -640 480 -332 500 -427 640 -480 640 -640 451 -480 640 -375 500 -424 640 -640 480 -640 427 -474 334 -640 480 -480 640 -640 336 -640 480 -640 428 -426 640 -640 480 -640 428 -475 640 -640 480 -640 480 -640 426 -426 640 -640 427 -640 427 -640 387 -428 640 -500 407 -640 427 -363 249 -640 509 -428 640 -640 427 -500 375 -640 468 -640 427 -426 640 -640 480 -500 339 -500 375 -427 640 -500 333 -469 640 -640 393 -640 334 -640 491 -640 468 -500 332 -500 325 -640 480 -640 423 -640 480 -500 333 -640 425 -511 640 -640 425 -640 440 -428 640 -640 480 -640 428 -640 480 -640 426 -640 480 -640 480 -640 427 -289 640 -640 427 -640 480 -555 640 -640 480 -640 460 -640 401 -426 640 -640 480 -640 426 -428 640 -640 361 -612 612 -640 467 -640 427 -640 480 -640 480 -640 373 -640 428 -640 427 -640 425 -428 640 -640 427 -333 500 -640 427 -640 426 -514 640 -640 427 -640 428 -640 428 -640 426 -640 426 -335 500 -640 480 -500 375 -480 640 -640 427 -640 480 -640 480 -640 480 -640 480 -640 426 -640 480 -640 480 -583 640 -480 640 -640 426 -640 359 -640 480 -426 640 -480 640 -500 375 -640 486 -640 427 -375 500 -640 426 -640 480 -640 480 -640 486 -640 467 -640 459 -640 428 -427 640 -500 333 -640 427 -640 480 -640 484 -500 375 -640 454 -640 480 -640 480 -513 640 -640 427 -640 480 -375 500 -500 375 -500 333 -500 281 -640 427 -640 480 -480 640 -640 640 -640 426 -480 640 -640 480 -640 427 -480 640 -640 480 -640 427 -640 426 -640 470 -640 427 -500 335 -500 333 -640 427 -433 640 -640 428 -360 288 -640 427 -640 424 -480 640 -640 426 -640 426 -500 375 -640 426 -640 428 -640 436 -640 426 -480 640 -373 500 -612 612 -500 313 -640 480 -640 426 -640 426 -640 486 -640 480 -640 480 -640 426 -500 375 -640 427 -480 640 -640 427 -480 640 -640 478 -640 428 -640 427 -640 425 -500 375 -640 480 -500 375 -640 426 -385 640 -500 385 -495 640 -640 426 -640 480 -640 480 -640 457 -640 480 -640 480 -640 480 -640 426 -375 500 -269 448 -359 500 -500 375 -640 640 -640 426 -640 360 -500 333 -500 375 -640 535 -375 500 -640 429 -640 427 -640 480 -428 640 -640 480 -640 424 -424 640 -640 400 -417 640 -640 428 -409 640 -378 640 -480 640 -612 612 -640 541 -407 640 -640 480 -640 480 -640 640 -480 640 -640 447 -640 424 -640 480 -640 480 -500 331 -640 478 -427 640 -333 500 -640 427 -500 335 -640 480 -640 480 -427 640 -640 427 -536 640 -500 375 -640 430 -500 375 -640 438 -640 480 -512 640 -382 471 -640 430 -640 478 -640 508 -500 375 -640 424 -640 480 -640 480 -428 640 -640 480 -640 427 -640 480 -335 500 -640 364 -612 612 -640 427 -375 500 -640 480 -640 360 -640 480 -640 360 -500 334 -429 640 -640 480 -600 600 -640 479 -640 513 -480 640 -640 428 -640 460 -640 480 -640 480 -640 456 -640 480 -640 467 -640 427 -640 427 -640 480 -640 480 -480 640 -640 512 -640 480 -640 426 -546 640 -640 425 -640 360 -333 500 -640 480 -481 640 -640 427 -640 427 -640 480 -640 480 -640 336 -445 640 -640 427 -640 426 -640 198 -640 449 -640 425 -640 480 -640 480 -480 640 -640 427 -427 640 -599 391 -640 425 -640 480 -640 283 -500 375 -480 640 -640 406 -424 640 -640 421 -640 480 -640 426 -640 480 -640 480 -640 427 -640 480 -640 480 -425 640 -640 427 -640 480 -635 640 -500 335 -427 640 -640 480 -342 500 -480 640 -640 480 -333 500 -640 480 -640 480 -640 480 -480 640 -500 367 -427 640 -640 425 -480 640 -640 406 -640 519 -640 480 -640 425 -500 375 -640 318 -640 360 -638 640 -640 452 -640 480 -500 375 -500 333 -333 500 -640 427 -640 427 -640 427 -640 426 -640 481 -640 480 -536 640 -640 482 -640 426 -640 427 -427 640 -640 486 -640 480 -640 427 -640 427 -640 480 -480 640 -640 360 -480 640 -640 392 -640 427 -423 640 -640 427 -640 457 -640 360 -500 357 -640 480 -640 480 -640 480 -640 452 -480 640 -640 426 -640 427 -640 480 -640 425 -487 640 -640 428 -640 427 -640 426 -640 515 -500 375 -480 640 -640 640 -640 480 -480 640 -640 403 -640 243 -383 640 -480 640 -640 561 -500 410 -640 640 -640 480 -640 480 -612 612 -640 427 -640 480 -640 480 -537 640 -640 480 -500 333 -583 437 -500 319 -366 640 -640 480 -640 424 -640 426 -640 424 -500 321 -640 432 -640 480 -640 480 -640 427 -383 640 -427 640 -640 427 -516 640 -640 487 -640 398 -500 375 -640 478 -640 360 -612 612 -426 640 -640 480 -640 480 -640 427 -640 427 -427 640 -640 425 -500 333 -640 427 -640 640 -640 495 -640 480 -478 640 -640 480 -640 480 -500 375 -640 480 -640 424 -640 424 -500 408 -640 556 -480 640 -640 429 -480 640 -640 480 -640 478 -640 594 -640 427 -640 531 -640 429 -640 413 -640 478 -480 640 -480 640 -640 425 -640 485 -478 640 -478 640 -640 480 -640 453 -640 426 -426 640 -640 480 -640 425 -640 474 -640 480 -640 480 -640 480 -600 401 -640 440 -640 480 -640 480 -426 640 -480 640 -480 640 -640 427 -479 640 -427 640 -640 480 -640 480 -313 500 -500 375 -500 375 -640 425 -480 640 -640 480 -333 500 -640 433 -480 640 -500 371 -640 428 -640 480 -640 480 -640 480 -640 401 -640 480 -640 480 -640 640 -640 480 -640 429 -612 612 -640 427 -640 480 -640 427 -492 500 -640 480 -320 240 -470 350 -640 428 -640 512 -640 427 -640 403 -640 480 -640 480 -640 425 -640 427 -500 325 -640 480 -640 427 -640 425 -500 375 -500 332 -640 427 -500 375 -640 521 -429 640 -550 640 -640 426 -640 480 -640 476 -427 640 -640 480 -521 640 -480 640 -640 359 -640 427 -500 500 -640 427 -427 640 -640 425 -500 375 -500 334 -640 478 -500 281 -640 428 -640 426 -640 440 -640 480 -640 480 -640 426 -640 427 -640 480 -640 427 -640 480 -640 427 -375 500 -500 375 -640 427 -457 640 -640 480 -640 480 -640 480 -500 375 -640 480 -640 480 -383 500 -427 640 -640 427 -640 424 -427 640 -425 500 -427 640 -478 640 -640 427 -640 480 -612 612 -640 480 -640 427 -640 480 -640 420 -500 375 -640 214 -612 612 -375 500 -640 482 -640 427 -640 427 -640 466 -480 640 -640 480 -425 640 -480 640 -375 500 -640 480 -500 333 -640 480 -640 480 -640 438 -640 427 -640 394 -480 360 -640 431 -640 480 -456 640 -500 375 -640 480 -427 640 -559 640 -500 375 -640 478 -640 427 -640 480 -640 359 -640 480 -640 429 -480 640 -333 500 -640 428 -640 424 -640 428 -640 480 -640 512 -640 426 -640 425 -500 375 -640 480 -640 427 -463 640 -640 524 -640 427 -640 427 -640 426 -640 480 -612 612 -640 425 -480 640 -640 480 -640 480 -640 480 -640 430 -640 480 -640 480 -500 357 -640 480 -640 366 -375 500 -500 333 -480 640 -480 640 -640 424 -640 426 -640 210 -500 375 -640 427 -640 480 -640 480 -426 640 -427 640 -640 480 -480 640 -640 480 -640 427 -480 640 -640 480 -375 500 -425 640 -480 640 -640 427 -427 640 -640 480 -480 640 -640 480 -480 640 -480 640 -334 500 -640 506 -428 640 -640 426 -569 640 -640 431 -612 612 -640 480 -427 640 -375 500 -480 640 -640 640 -500 375 -640 427 -640 527 -640 426 -640 480 -640 480 -640 619 -640 427 -335 500 -640 427 -640 427 -640 500 -640 427 -640 478 -500 333 -640 427 -428 640 -640 480 -640 478 -500 500 -424 640 -640 444 -428 640 -640 480 -431 640 -640 369 -612 612 -427 640 -640 480 -640 428 -422 640 -640 424 -480 640 -640 427 -427 640 -425 640 -480 640 -640 480 -640 427 -640 453 -427 640 -640 480 -640 424 -640 480 -640 427 -640 427 -375 500 -640 428 -640 480 -640 480 -640 427 -640 426 -640 480 -640 480 -640 427 -640 428 -640 480 -500 375 -480 640 -640 480 -480 640 -500 324 -480 640 -640 426 -640 480 -640 425 -500 334 -328 500 -640 480 -640 478 -364 640 -640 427 -640 480 -640 426 -640 427 -640 640 -640 480 -457 640 -640 480 -640 425 -500 480 -640 427 -640 480 -640 360 -640 480 -480 640 -375 500 -640 424 -640 471 -640 480 -640 480 -480 640 -500 375 -640 480 -640 480 -640 427 -426 640 -428 640 -640 640 -640 421 -640 427 -640 429 -640 480 -640 480 -427 640 -640 428 -640 427 -640 480 -640 360 -640 480 -500 333 -640 428 -640 566 -480 640 -640 427 -468 640 -612 612 -500 333 -500 375 -640 480 -640 455 -640 483 -640 427 -640 480 -640 424 -640 383 -640 480 -640 427 -640 480 -480 640 -640 480 -500 237 -640 480 -640 491 -427 640 -326 500 -640 361 -640 512 -612 612 -500 333 -640 480 -427 640 -426 640 -640 485 -640 427 -640 480 -640 480 -640 480 -640 511 -640 480 -480 640 -640 523 -640 454 -640 360 -500 375 -500 375 -500 414 -500 375 -613 640 -640 420 -480 640 -640 480 -640 427 -640 442 -512 640 -640 426 -640 360 -500 375 -500 375 -640 427 -640 424 -640 428 -640 425 -640 427 -640 480 -640 360 -640 428 -640 426 -640 426 -427 640 -640 478 -640 640 -640 480 -640 426 -640 428 -500 322 -640 480 -640 428 -333 500 -425 640 -640 480 -640 513 -500 376 -480 640 -480 640 -500 333 -545 640 -425 640 -640 427 -479 640 -455 640 -405 640 -640 565 -640 480 -640 427 -640 480 -640 480 -640 454 -640 293 -640 476 -640 480 -640 480 -399 600 -640 425 -640 427 -640 427 -427 640 -500 333 -640 480 -640 427 -612 612 -640 422 -500 333 -640 463 -500 357 -640 480 -640 427 -640 427 -612 612 -428 640 -640 480 -640 426 -640 480 -640 480 -426 640 -640 480 -640 480 -480 640 -424 640 -480 640 -480 640 -640 426 -640 480 -640 480 -640 427 -640 480 -640 480 -480 640 -640 480 -424 640 -640 427 -640 427 -612 612 -640 480 -480 640 -640 480 -640 424 -640 514 -640 379 -640 428 -500 375 -640 427 -640 427 -500 375 -500 333 -640 480 -299 640 -640 425 -640 480 -640 510 -500 375 -426 640 -640 480 -640 480 -522 640 -640 480 -480 640 -640 427 -640 427 -500 344 -640 428 -640 480 -500 375 -352 288 -640 424 -427 640 -640 480 -479 640 -640 428 -640 427 -640 478 -612 612 -480 300 -640 427 -480 640 -640 237 -640 427 -640 461 -640 622 -480 640 -500 375 -640 502 -640 378 -640 480 -500 409 -640 224 -640 478 -640 394 -424 640 -640 480 -333 500 -640 395 -640 416 -479 640 -500 375 -640 640 -640 480 -640 403 -640 416 -480 640 -386 640 -332 500 -457 640 -640 480 -640 426 -640 427 -640 451 -640 480 -640 427 -640 480 -640 427 -478 640 -480 640 -640 427 -640 428 -640 480 -640 425 -640 480 -425 640 -640 427 -640 424 -640 426 -640 424 -640 284 -427 640 -640 427 -500 375 -427 640 -480 640 -640 427 -640 463 -640 446 -480 640 -640 317 -425 640 -594 640 -427 640 -480 640 -480 640 -640 427 -427 640 -640 640 -640 432 -640 480 -640 426 -640 427 -640 480 -640 480 -640 427 -640 430 -640 480 -561 640 -640 427 -640 478 -424 640 -426 640 -640 418 -640 427 -457 640 -640 480 -480 640 -500 375 -480 640 -640 478 -425 640 -640 533 -640 424 -640 427 -640 427 -640 359 -640 480 -612 612 -500 376 -640 480 -640 426 -335 500 -640 480 -640 426 -640 480 -640 640 -640 480 -640 427 -640 480 -640 480 -640 480 -427 640 -640 359 -467 640 -640 428 -640 480 -640 418 -640 480 -640 480 -640 480 -640 425 -640 427 -640 478 -640 480 -640 427 -640 427 -640 480 -640 414 -640 360 -427 640 -500 330 -640 480 -500 335 -640 480 -427 640 -640 439 -640 480 -640 478 -640 427 -500 375 -640 426 -640 427 -375 500 -640 427 -640 480 -640 480 -640 596 -640 400 -640 425 -480 640 -640 448 -640 429 -640 426 -500 304 -640 507 -640 427 -500 332 -640 426 -640 480 -427 640 -500 378 -640 426 -375 500 -480 640 -500 417 -640 480 -640 427 -640 481 -640 426 -640 426 -500 387 -286 417 -640 480 -640 424 -500 403 -640 480 -640 411 -500 332 -500 334 -640 427 -612 612 -640 395 -640 480 -500 335 -640 480 -640 480 -640 433 -640 427 -428 640 -640 640 -640 428 -500 375 -640 417 -427 640 -480 640 -640 360 -640 480 -640 427 -407 640 -640 480 -640 425 -640 480 -640 418 -640 428 -500 371 -640 426 -500 480 -498 500 -640 424 -640 426 -640 426 -640 427 -480 640 -640 480 -500 333 -640 480 -640 457 -426 640 -408 640 -640 428 -640 480 -426 640 -552 640 -640 425 -640 480 -500 375 -640 477 -640 488 -504 640 -312 480 -457 640 -640 480 -640 480 -640 425 -640 474 -640 480 -640 428 -456 640 -500 400 -612 612 -640 480 -640 439 -640 480 -640 427 -640 480 -640 477 -640 480 -640 425 -640 360 -480 640 -640 480 -640 480 -640 425 -640 480 -640 480 -431 640 -480 640 -640 426 -480 640 -428 640 -426 640 -461 640 -640 480 -337 500 -360 640 -640 480 -500 332 -480 640 -500 333 -464 640 -640 480 -640 480 -640 480 -640 428 -640 427 -640 360 -640 425 -480 640 -500 375 -500 414 -612 612 -640 480 -427 640 -640 366 -640 427 -427 640 -640 427 -640 480 -640 480 -640 427 -640 426 -640 480 -500 375 -549 640 -640 480 -429 640 -500 640 -640 480 -640 480 -500 375 -500 334 -640 480 -640 480 -640 444 -640 324 -640 480 -480 640 -640 427 -480 640 -640 426 -640 361 -338 500 -640 427 -640 480 -640 480 -480 640 -427 640 -530 640 -441 640 -500 375 -640 428 -640 512 -500 375 -640 480 -480 640 -428 640 -332 500 -640 427 -640 480 -640 425 -640 429 -640 431 -640 480 -640 427 -640 396 -425 640 -640 480 -640 427 -500 376 -375 500 -500 333 -640 480 -640 360 -500 375 -500 389 -640 480 -640 344 -480 640 -428 640 -640 480 -640 427 -480 640 -640 427 -640 547 -375 500 -612 612 -481 640 -640 480 -612 612 -640 480 -640 427 -426 640 -400 500 -640 427 -640 480 -640 419 -640 513 -640 480 -427 640 -640 426 -640 427 -500 333 -427 640 -640 424 -640 399 -640 480 -640 425 -640 364 -640 640 -640 427 -640 457 -640 629 -640 426 -427 640 -640 426 -500 375 -640 424 -427 640 -640 427 -640 428 -640 480 -640 480 -640 324 -500 375 -640 480 -640 427 -500 281 -640 427 -640 441 -640 427 -640 480 -500 300 -480 640 -350 500 -424 640 -534 640 -640 427 -640 427 -640 428 -640 426 -640 480 -480 640 -500 317 -640 427 -500 375 -640 480 -640 427 -640 480 -640 480 -640 480 -640 427 -480 640 -640 501 -640 478 -640 480 -640 424 -640 459 -500 375 -640 427 -480 640 -640 426 -640 481 -500 476 -333 500 -640 480 -640 490 -640 428 -640 568 -640 480 -640 512 -640 453 -640 480 -428 640 -640 480 -640 480 -640 480 -480 640 -640 624 -640 427 -640 438 -640 480 -640 400 -500 333 -640 480 -427 640 -640 426 -428 640 -640 480 -640 480 -640 480 -640 427 -640 480 -500 375 -612 612 -640 427 -640 480 -640 426 -640 449 -427 640 -640 427 -333 500 -640 427 -480 640 -500 375 -434 640 -640 463 -640 426 -480 640 -640 288 -640 425 -640 426 -640 480 -640 427 -640 425 -640 469 -359 640 -480 640 -640 480 -362 500 -427 640 -640 480 -640 426 -427 640 -640 425 -427 640 -640 480 -375 500 -640 468 -640 480 -500 375 -640 427 -500 410 -640 427 -500 374 -640 426 -640 480 -612 612 -480 360 -500 414 -640 480 -500 333 -640 426 -640 427 -640 425 -640 480 -640 480 -640 427 -640 425 -500 375 -640 473 -427 640 -640 426 -640 427 -640 396 -640 427 -640 488 -500 341 -612 612 -640 360 -640 425 -640 480 -426 640 -640 403 -640 427 -640 427 -640 428 -640 427 -332 500 -500 375 -480 640 -640 480 -480 640 -640 426 -640 427 -640 360 -427 640 -612 612 -640 480 -640 424 -640 416 -640 480 -640 480 -640 480 -500 375 -500 333 -640 427 -640 427 -427 640 -500 375 -640 480 -480 640 -508 640 -612 612 -500 375 -640 419 -429 640 -640 427 -500 375 -640 480 -500 332 -640 480 -640 426 -469 640 -427 640 -427 640 -640 480 -408 640 -480 640 -500 500 -425 640 -512 640 -640 455 -640 425 -640 480 -640 425 -640 364 -640 480 -427 640 -640 416 -640 480 -640 296 -640 427 -640 426 -640 480 -640 480 -640 480 -640 427 -640 480 -500 309 -640 465 -640 513 -640 426 -640 480 -640 556 -640 480 -426 640 -427 640 -640 640 -640 427 -640 427 -480 640 -480 640 -640 427 -425 640 -640 640 -427 640 -640 426 -640 429 -640 480 -640 481 -510 640 -640 480 -640 480 -604 453 -424 640 -640 427 -480 640 -640 480 -640 427 -640 427 -640 426 -640 480 -640 480 -375 500 -640 480 -640 426 -500 281 -640 480 -500 332 -640 480 -638 640 -640 457 -544 640 -612 612 -640 427 -612 612 -371 500 -640 324 -640 480 -640 427 -427 640 -365 500 -640 427 -483 640 -640 427 -500 500 -640 284 -640 479 -640 426 -640 427 -640 480 -359 640 -640 480 -469 640 -640 640 -640 428 -480 640 -640 426 -640 345 -640 422 -640 427 -427 640 -640 480 -640 425 -640 480 -640 480 -455 640 -640 480 -640 480 -640 480 -640 480 -333 500 -640 427 -640 480 -640 480 -500 375 -427 640 -640 480 -640 429 -480 640 -640 480 -640 369 -500 378 -640 619 -640 480 -427 640 -426 640 -640 426 -640 489 -640 307 -640 640 -640 424 -640 480 -500 404 -640 428 -426 640 -478 640 -640 426 -426 640 -500 357 -640 427 -480 640 -427 640 -640 333 -500 332 -592 576 -640 480 -640 480 -640 427 -640 339 -640 358 -500 375 -640 480 -480 640 -427 640 -427 640 -500 294 -640 286 -500 375 -500 375 -640 427 -640 264 -640 426 -640 427 -640 391 -433 640 -640 474 -426 640 -640 640 -640 423 -640 480 -500 333 -332 500 -640 428 -640 427 -427 640 -640 487 -640 427 -640 427 -500 377 -640 480 -640 478 -640 470 -500 362 -640 480 -640 507 -640 456 -640 427 -640 427 -333 640 -640 427 -640 397 -640 470 -640 480 -480 640 -640 427 -640 427 -428 640 -640 427 -640 402 -612 612 -640 427 -640 360 -500 375 -640 427 -640 427 -640 640 -640 480 -640 427 -480 640 -640 640 -497 640 -640 480 -612 612 -640 425 -500 348 -640 427 -333 500 -640 480 -640 428 -427 640 -640 428 -378 500 -640 360 -640 480 -640 426 -500 345 -477 640 -640 480 -640 480 -640 480 -640 480 -640 425 -640 427 -640 429 -640 428 -620 319 -427 640 -500 332 -500 375 -640 509 -640 426 -640 480 -640 457 -640 480 -640 424 -473 640 -432 324 -640 428 -640 469 -640 343 -640 427 -333 500 -640 474 -640 427 -640 480 -544 640 -640 480 -333 500 -500 375 -640 427 -500 454 -640 426 -640 640 -340 500 -616 640 -640 427 -380 500 -640 427 -640 427 -500 400 -640 425 -640 480 -640 399 -640 317 -640 480 -500 375 -640 480 -500 500 -500 375 -640 424 -640 480 -640 480 -640 427 -640 427 -640 480 -640 480 -640 453 -405 336 -640 395 -640 426 -640 480 -640 480 -640 482 -640 431 -480 640 -640 480 -427 640 -640 320 -478 640 -640 418 -500 375 -427 640 -424 640 -640 424 -640 482 -640 426 -375 500 -640 338 -425 640 -640 294 -640 426 -500 333 -640 427 -640 428 -640 480 -612 612 -640 480 -429 640 -640 355 -640 435 -376 500 -640 478 -640 480 -640 425 -640 480 -427 640 -480 640 -640 480 -640 428 -640 427 -640 427 -640 429 -400 300 -640 303 -500 500 -333 500 -640 438 -640 480 -480 640 -457 640 -640 426 -640 490 -640 427 -640 428 -640 425 -640 429 -640 462 -640 480 -478 640 -500 367 -640 428 -425 640 -640 480 -640 480 -500 375 -480 640 -320 240 -640 478 -640 480 -640 480 -500 500 -640 425 -640 480 -640 425 -640 427 -640 480 -640 480 -480 640 -640 428 -640 426 -427 640 -640 480 -640 480 -480 640 -500 375 -640 425 -427 640 -427 640 -640 427 -640 459 -500 335 -640 427 -427 640 -640 480 -500 333 -640 360 -429 640 -424 640 -640 480 -640 426 -640 464 -640 414 -480 640 -640 462 -640 640 -640 413 -640 480 -640 480 -640 432 -640 480 -640 480 -427 640 -640 480 -500 481 -640 427 -612 612 -640 479 -300 400 -612 612 -640 424 -600 428 -640 480 -467 276 -640 427 -640 428 -640 360 -427 640 -530 640 -640 392 -640 480 -640 480 -640 427 -460 500 -640 426 -640 427 -640 480 -500 500 -612 612 -640 480 -640 427 -640 427 -500 375 -579 640 -640 427 -480 640 -480 640 -480 640 -640 480 -500 375 -427 640 -640 427 -640 427 -360 640 -640 480 -640 427 -500 499 -640 501 -480 640 -640 410 -478 640 -500 375 -457 640 -640 480 -335 500 -612 612 -640 427 -640 480 -640 480 -364 640 -640 237 -640 400 -640 480 -500 375 -354 640 -640 427 -480 640 -375 500 -640 427 -640 427 -480 640 -612 612 -640 480 -640 427 -480 640 -640 425 -526 640 -480 640 -640 473 -500 375 -640 426 -640 471 -500 335 -640 426 -640 433 -480 640 -640 489 -640 340 -404 640 -640 428 -640 428 -640 427 -503 640 -426 640 -640 428 -640 360 -500 375 -640 427 -640 427 -640 427 -480 640 -640 433 -640 423 -640 480 -640 424 -640 480 -500 331 -640 480 -640 426 -640 454 -640 425 -640 427 -640 300 -466 640 -480 640 -500 375 -374 500 -640 640 -640 480 -640 480 -320 240 -640 508 -640 428 -500 375 -500 375 -640 480 -640 426 -640 480 -640 425 -478 640 -640 506 -640 426 -640 427 -480 640 -480 640 -640 427 -640 427 -640 428 -640 426 -640 426 -500 375 -640 480 -640 426 -640 425 -640 427 -612 612 -640 480 -640 441 -640 424 -640 425 -480 360 -640 417 -640 426 -640 427 -640 512 -640 426 -640 480 -640 480 -460 500 -640 520 -640 361 -640 512 -426 640 -640 427 -427 640 -500 375 -640 428 -480 640 -640 480 -640 480 -480 640 -612 612 -640 480 -332 500 -180 240 -329 500 -640 427 -427 640 -640 473 -640 480 -640 558 -375 500 -640 505 -480 640 -640 424 -375 500 -500 377 -640 480 -640 405 -640 480 -480 640 -640 427 -640 423 -480 640 -640 233 -335 500 -330 640 -500 334 -640 427 -640 588 -500 375 -426 640 -640 425 -640 480 -480 640 -640 480 -480 640 -640 480 -640 427 -640 480 -612 612 -612 612 -640 428 -427 640 -640 427 -640 480 -640 427 -640 237 -436 640 -640 424 -640 428 -427 640 -612 612 -490 640 -640 480 -480 640 -480 640 -640 558 -500 335 -640 417 -640 480 -640 427 -640 360 -640 425 -640 370 -640 481 -640 480 -640 480 -640 480 -374 500 -640 454 -640 480 -640 425 -640 426 -640 448 -640 426 -640 640 -500 429 -640 427 -431 640 -480 640 -512 640 -300 450 -640 483 -480 640 -425 640 -640 427 -640 412 -640 359 -640 556 -640 339 -640 480 -640 430 -640 421 -640 429 -640 480 -428 640 -640 428 -640 394 -480 640 -640 514 -411 640 -640 427 -640 428 -640 427 -640 429 -640 480 -640 430 -640 480 -500 332 -640 427 -640 480 -640 424 -500 263 -640 527 -640 480 -439 640 -480 640 -640 480 -640 480 -640 478 -640 480 -640 429 -640 427 -640 480 -640 411 -640 426 -640 480 -640 480 -480 640 -429 640 -640 480 -640 427 -427 640 -463 640 -640 427 -640 480 -640 480 -427 640 -431 640 -338 450 -640 427 -640 480 -640 480 -640 480 -640 480 -640 427 -640 480 -640 603 -640 480 -640 480 -640 512 -640 427 -427 640 -612 612 -640 480 -640 480 -333 500 -640 480 -640 424 -480 640 -500 375 -640 480 -640 480 -333 500 -640 429 -640 480 -640 480 -640 547 -396 640 -640 427 -640 480 -640 427 -640 424 -640 427 -500 375 -640 640 -640 427 -480 640 -640 429 -640 480 -640 424 -640 413 -640 478 -640 426 -640 426 -427 640 -332 500 -640 425 -640 427 -640 305 -425 640 -640 584 -640 480 -640 480 -640 425 -480 640 -480 640 -640 480 -500 375 -612 612 -640 427 -640 431 -500 375 -315 640 -427 640 -500 375 -640 480 -515 640 -640 480 -640 480 -500 333 -450 390 -640 427 -640 480 -640 480 -480 640 -640 427 -640 480 -640 480 -480 640 -480 640 -500 305 -627 640 -640 480 -640 569 -640 480 -375 500 -640 427 -640 427 -427 640 -640 589 -640 428 -640 439 -640 427 -480 640 -480 640 -640 427 -640 427 -640 480 -500 326 -640 426 -640 426 -640 480 -424 640 -640 618 -612 612 -640 427 -640 426 -500 500 -640 624 -426 640 -612 612 -579 326 -640 480 -640 480 -640 383 -627 640 -640 421 -479 500 -506 640 -640 480 -640 281 -640 427 -427 640 -500 375 -640 445 -640 427 -640 480 -640 480 -640 480 -640 471 -500 500 -640 360 -500 400 -640 480 -640 449 -452 640 -640 480 -640 424 -640 480 -427 640 -640 480 -640 427 -640 426 -640 461 -480 640 -640 480 -480 640 -636 640 -640 480 -500 375 -375 500 -640 428 -480 640 -640 421 -640 427 -480 640 -640 429 -640 425 -640 427 -640 471 -427 640 -431 640 -640 427 -640 431 -640 480 -640 480 -640 480 -640 480 -640 510 -640 480 -640 480 -640 512 -640 480 -501 640 -640 427 -640 427 -640 640 -640 480 -640 360 -640 426 -640 480 -427 640 -375 500 -640 640 -640 480 -640 427 -640 428 -640 427 -640 480 -640 426 -640 480 -427 640 -640 426 -500 325 -402 640 -640 432 -640 480 -480 640 -640 438 -640 512 -500 333 -500 333 -640 540 -640 426 -640 427 -640 480 -500 341 -500 375 -640 428 -301 640 -640 512 -640 480 -426 640 -350 467 -375 500 -640 360 -427 640 -640 360 -640 480 -640 480 -640 426 -480 640 -640 480 -640 441 -640 426 -375 500 -640 435 -640 427 -640 480 -500 375 -428 640 -453 500 -640 427 -640 480 -640 406 -494 640 -640 360 -640 480 -640 480 -640 427 -640 426 -489 640 -640 480 -500 375 -640 478 -640 427 -640 427 -640 429 -427 640 -640 427 -640 425 -640 463 -640 360 -640 480 -640 427 -640 480 -375 500 -640 427 -640 431 -640 480 -640 376 -640 640 -427 640 -640 426 -640 487 -640 428 -426 640 -640 480 -458 640 -640 427 -640 427 -640 629 -480 640 -640 513 -428 640 -425 640 -512 640 -640 480 -640 480 -640 427 -640 480 -640 480 -480 640 -640 428 -506 640 -640 480 -500 335 -640 480 -500 375 -640 426 -640 427 -480 640 -640 427 -640 477 -640 480 -640 427 -640 406 -480 640 -638 425 -640 426 -640 480 -480 640 -640 427 -640 640 -640 423 -640 457 -640 512 -640 427 -426 640 -640 480 -500 338 -640 520 -640 424 -640 398 -640 563 -640 428 -640 464 -640 401 -640 427 -354 640 -552 640 -500 375 -640 427 -640 512 -640 428 -500 375 -640 429 -500 435 -640 425 -600 400 -480 640 -640 427 -427 640 -120 160 -640 426 -500 375 -480 640 -428 640 -640 427 -640 480 -640 480 -640 480 -640 512 -640 480 -640 480 -512 640 -640 428 -640 427 -640 454 -640 480 -640 427 -486 640 -640 488 -500 375 -480 640 -346 640 -640 428 -640 376 -640 427 -640 539 -640 427 -640 371 -640 427 -612 612 -640 480 -640 480 -640 480 -612 612 -640 429 -640 512 -428 640 -500 192 -640 360 -640 449 -640 480 -640 480 -427 640 -640 620 -383 640 -336 447 -640 427 -480 640 -640 423 -640 427 -640 480 -640 427 -427 640 -640 351 -640 363 -640 444 -456 640 -427 640 -640 640 -640 610 -425 640 -612 612 -640 504 -333 500 -640 320 -640 426 -640 480 -640 423 -640 424 -640 480 -640 480 -640 480 -464 640 -640 427 -640 480 -640 360 -427 640 -640 480 -640 427 -500 375 -640 426 -640 427 -640 480 -640 427 -534 640 -480 640 -409 500 -640 480 -640 480 -640 427 -500 359 -640 480 -640 480 -640 480 -612 612 -640 428 -640 480 -640 496 -500 320 -640 525 -427 640 -640 480 -375 500 -640 480 -500 375 -500 375 -640 427 -500 375 -640 428 -480 640 -478 640 -640 427 -640 427 -640 632 -500 339 -416 640 -640 428 -640 428 -640 427 -640 428 -640 480 -640 479 -639 640 -480 640 -640 424 -640 480 -640 426 -500 333 -640 427 -640 480 -375 500 -640 352 -640 480 -640 425 -640 424 -640 480 -640 428 -640 426 -250 150 -640 481 -500 332 -385 640 -640 480 -500 332 -612 612 -640 480 -375 500 -640 419 -424 640 -640 426 -424 640 -640 480 -426 640 -640 480 -640 426 -500 357 -640 480 -640 480 -640 480 -612 612 -640 480 -640 480 -612 612 -640 480 -640 429 -427 640 -340 640 -500 333 -640 480 -640 480 -453 640 -640 428 -640 478 -480 640 -640 480 -375 500 -640 480 -640 480 -640 480 -640 457 -640 424 -640 425 -640 480 -640 480 -640 436 -640 414 -427 640 -500 400 -480 640 -640 500 -640 341 -640 428 -500 399 -427 640 -640 480 -640 480 -640 480 -640 481 -519 640 -640 426 -500 221 -640 631 -500 425 -640 427 -640 480 -640 480 -480 640 -640 460 -640 479 -640 427 -427 640 -640 429 -375 500 -640 480 -640 480 -640 427 -640 426 -480 360 -495 500 -640 432 -640 480 -566 640 -426 640 -640 478 -640 427 -640 428 -640 480 -640 480 -480 640 -375 500 -614 640 -640 480 -640 480 -640 404 -480 640 -640 427 -333 500 -640 480 -640 425 -428 640 -427 640 -500 500 -500 374 -640 526 -640 384 -640 427 -640 480 -640 480 -640 480 -375 500 -640 480 -640 426 -640 421 -428 640 -443 567 -640 480 -640 425 -640 480 -640 509 -640 360 -480 640 -640 480 -640 426 -640 427 -446 640 -640 427 -640 480 -640 428 -640 480 -599 400 -640 425 -427 640 -427 640 -640 427 -640 480 -640 427 -536 640 -500 333 -640 427 -427 640 -375 500 -640 480 -427 640 -640 478 -640 353 -500 375 -640 480 -640 480 -640 480 -640 427 -500 369 -640 480 -480 360 -488 640 -640 480 -640 480 -640 429 -500 334 -640 427 -640 427 -640 480 -426 640 -640 480 -640 346 -640 544 -375 500 -478 640 -640 480 -640 429 -640 541 -640 426 -427 640 -640 427 -500 333 -640 426 -375 500 -454 640 -640 480 -640 427 -640 427 -640 435 -427 640 -640 428 -640 480 -628 484 -640 510 -375 500 -640 433 -640 480 -640 395 -500 375 -640 426 -640 427 -640 478 -612 612 -480 640 -640 480 -640 480 -480 640 -500 375 -640 427 -427 640 -640 360 -480 640 -640 480 -640 432 -640 480 -640 480 -640 426 -640 480 -640 480 -500 332 -640 480 -640 424 -417 500 -640 480 -640 503 -640 480 -640 628 -640 426 -640 480 -480 640 -640 501 -640 480 -640 480 -640 598 -640 480 -640 480 -640 427 -640 428 -640 428 -640 481 -480 640 -640 427 -500 375 -640 640 -640 428 -640 480 -640 480 -640 522 -427 640 -480 640 -640 635 -640 480 -640 480 -640 480 -640 488 -426 640 -640 480 -481 640 -640 425 -640 426 -640 426 -429 640 -281 500 -640 427 -426 640 -480 640 -640 428 -640 480 -640 427 -328 500 -419 304 -480 640 -425 640 -640 640 -640 404 -640 480 -640 480 -640 426 -469 500 -393 640 -480 320 -640 426 -640 640 -427 640 -640 426 -427 640 -640 425 -640 427 -500 335 -640 458 -640 446 -640 359 -424 640 -640 480 -480 640 -640 480 -640 512 -640 319 -640 360 -640 427 -640 480 -427 640 -640 478 -604 640 -480 640 -640 427 -640 523 -640 478 -640 506 -500 375 -640 557 -427 640 -640 478 -640 480 -478 640 -480 640 -640 427 -640 427 -480 640 -477 640 -640 439 -640 623 -640 428 -427 640 -640 481 -640 356 -426 640 -640 426 -500 333 -640 429 -640 490 -640 427 -640 427 -640 527 -480 640 -427 640 -640 426 -640 426 -640 480 -640 463 -500 375 -640 474 -640 427 -500 333 -640 480 -640 480 -612 612 -427 640 -640 427 -640 433 -427 640 -640 416 -427 640 -640 480 -427 640 -640 480 -640 427 -640 427 -640 478 -640 480 -640 360 -640 480 -500 333 -640 427 -640 426 -600 640 -640 427 -640 426 -640 425 -640 480 -457 640 -428 640 -640 573 -640 392 -640 371 -480 640 -600 400 -640 480 -640 428 -640 480 -500 375 -640 480 -640 480 -640 425 -640 480 -640 480 -640 425 -640 425 -640 480 -640 480 -640 480 -640 480 -640 480 -375 500 -500 375 -375 500 -640 480 -568 320 -640 426 -640 428 -640 427 -640 428 -640 383 -640 487 -640 427 -375 500 -640 482 -640 427 -375 500 -640 480 -399 640 -640 427 -200 315 -480 640 -427 640 -427 640 -478 640 -500 410 -640 401 -375 500 -409 640 -640 424 -640 431 -640 426 -612 612 -362 500 -640 427 -640 427 -640 480 -640 360 -480 640 -640 427 -374 500 -640 478 -375 500 -640 480 -640 480 -428 640 -427 640 -500 375 -640 427 -360 640 -640 424 -640 425 -640 480 -427 640 -427 640 -500 400 -425 640 -500 357 -640 480 -640 499 -640 480 -480 640 -460 300 -640 480 -332 500 -640 427 -568 320 -640 424 -500 333 -640 461 -640 480 -427 640 -640 480 -640 429 -640 480 -500 375 -424 640 -640 480 -640 427 -500 333 -612 612 -500 352 -640 438 -500 375 -424 640 -480 640 -400 300 -640 480 -640 478 -640 583 -500 375 -400 300 -640 427 -425 640 -640 428 -640 480 -640 427 -612 612 -640 427 -640 480 -640 480 -640 428 -640 426 -640 424 -640 425 -383 640 -640 481 -640 640 -640 376 -640 480 -500 334 -640 436 -640 427 -427 640 -640 480 -640 480 -427 640 -640 556 -450 640 -426 640 -640 425 -640 480 -640 480 -640 480 -640 480 -640 480 -256 192 -640 427 -640 474 -640 480 -640 480 -640 480 -640 480 -640 296 -443 500 -640 427 -640 480 -640 547 -483 640 -494 640 -480 640 -640 480 -640 480 -640 428 -640 458 -561 640 -640 427 -640 483 -480 640 -640 479 -640 480 -640 480 -640 481 -640 427 -640 425 -640 427 -640 512 -640 348 -640 640 -640 425 -640 427 -480 640 -640 427 -640 427 -640 480 -503 640 -640 424 -640 427 -640 427 -480 640 -640 426 -640 480 -500 375 -640 427 -640 427 -640 474 -300 450 -640 480 -640 424 -640 480 -335 500 -640 427 -640 399 -640 512 -259 500 -500 347 -640 480 -640 480 -500 480 -640 427 -640 383 -640 424 -640 480 -640 427 -640 284 -640 427 -640 427 -640 376 -334 500 -640 480 -640 480 -640 425 -500 375 -640 427 -640 480 -640 396 -640 480 -375 500 -640 480 -500 332 -640 427 -640 480 -640 480 -500 375 -640 425 -520 368 -640 427 -640 427 -640 428 -612 612 -494 640 -640 442 -640 480 -640 425 -434 640 -457 640 -426 640 -500 375 -640 480 -640 427 -640 489 -480 640 -640 428 -640 586 -640 480 -640 480 -640 480 -640 360 -612 612 -640 480 -640 427 -640 480 -640 427 -640 613 -480 640 -640 394 -640 427 -640 427 -640 427 -640 433 -640 425 -500 375 -480 640 -537 640 -427 640 -640 383 -480 640 -640 414 -427 640 -480 640 -480 640 -640 480 -640 480 -426 640 -640 427 -375 500 -427 640 -480 640 -640 426 -640 480 -640 480 -640 426 -640 480 -375 500 -604 453 -375 500 -640 480 -640 480 -640 437 -500 333 -640 480 -640 480 -480 640 -333 500 -640 368 -640 640 -427 640 -640 425 -488 640 -500 334 -427 640 -640 485 -640 480 -488 640 -640 424 -480 640 -640 478 -640 427 -640 431 -481 640 -640 480 -640 426 -392 640 -500 440 -640 478 -426 640 -640 429 -612 612 -640 426 -640 427 -640 480 -500 375 -640 480 -640 428 -640 427 -486 640 -640 478 -640 426 -431 640 -640 425 -375 500 -640 427 -478 640 -640 427 -640 429 -640 480 -480 640 -640 511 -640 427 -500 400 -640 480 -640 361 -500 375 -333 500 -428 640 -640 411 -428 640 -640 347 -640 480 -640 427 -640 426 -640 480 -640 480 -640 534 -640 429 -480 640 -640 426 -640 480 -640 480 -640 480 -640 428 -640 298 -640 428 -640 428 -640 427 -640 480 -640 480 -500 376 -640 480 -640 480 -448 298 -640 329 -640 427 -640 401 -478 640 -481 640 -387 500 -640 480 -640 427 -368 500 -480 640 -640 480 -500 408 -427 640 -480 640 -640 426 -640 427 -640 480 -640 427 -480 640 -640 423 -640 320 -500 332 -375 500 -480 640 -640 427 -640 515 -640 480 -480 640 -433 640 -500 375 -640 426 -640 451 -427 640 -612 612 -640 480 -640 482 -425 640 -640 480 -640 360 -640 478 -640 480 -631 640 -500 333 -640 401 -640 480 -561 640 -640 428 -640 478 -640 480 -640 427 -640 480 -255 600 -500 375 -640 512 -500 500 -640 480 -640 640 -640 463 -640 425 -427 640 -640 426 -427 640 -640 473 -640 480 -612 612 -640 518 -480 640 -640 478 -500 375 -640 480 -480 640 -640 425 -640 359 -500 319 -480 480 -427 640 -480 640 -640 407 -427 640 -640 480 -640 640 -386 500 -640 300 -600 600 -426 640 -640 480 -480 640 -640 427 -640 480 -640 480 -640 427 -640 480 -427 640 -640 427 -640 426 -640 425 -500 375 -640 470 -640 427 -640 413 -409 640 -612 612 -640 480 -500 375 -640 424 -640 480 -640 480 -640 480 -640 480 -640 480 -640 404 -640 427 -640 480 -640 481 -480 640 -500 375 -640 434 -500 333 -294 400 -640 427 -640 474 -500 337 -333 500 -640 428 -640 427 -640 425 -500 500 -427 640 -640 457 -640 425 -640 480 -480 640 -640 480 -640 457 -640 474 -640 480 -640 424 -640 428 -640 480 -640 425 -361 640 -457 640 -640 427 -612 612 -640 480 -640 427 -640 427 -640 427 -640 480 -640 427 -500 333 -640 427 -424 640 -500 375 -640 512 -427 640 -500 333 -500 359 -640 427 -640 428 -640 480 -428 640 -640 372 -480 640 -427 640 -640 480 -640 427 -457 640 -500 333 -343 500 -640 425 -640 480 -640 480 -480 640 -500 334 -640 480 -480 640 -640 480 -640 427 -640 427 -640 480 -640 426 -640 427 -500 375 -480 640 -640 427 -640 480 -640 640 -640 360 -640 634 -640 427 -640 430 -640 427 -472 640 -640 640 -428 640 -612 612 -640 360 -338 500 -640 480 -320 212 -500 375 -500 333 -640 480 -640 426 -640 530 -427 640 -523 640 -640 384 -426 640 -425 640 -480 640 -640 480 -500 332 -640 524 -480 640 -640 480 -500 375 -640 419 -640 480 -640 478 -640 426 -640 480 -640 427 -640 480 -640 426 -640 428 -333 500 -640 480 -640 427 -500 333 -426 640 -640 426 -363 640 -640 349 -640 426 -500 375 -640 608 -375 500 -640 480 -640 426 -500 375 -640 428 -640 457 -480 640 -612 612 -640 480 -490 640 -640 461 -640 480 -640 480 -640 470 -426 640 -508 640 -480 640 -640 427 -640 480 -395 500 -640 480 -640 480 -640 480 -640 427 -640 480 -640 546 -640 480 -359 500 -640 428 -640 457 -640 427 -627 640 -480 640 -427 640 -640 427 -640 480 -640 482 -640 480 -640 427 -427 640 -640 640 -640 480 -500 331 -640 480 -640 427 -359 640 -480 640 -640 427 -640 425 -640 480 -640 425 -500 332 -640 364 -640 427 -500 375 -500 375 -640 427 -640 428 -461 640 -640 480 -640 480 -500 375 -427 640 -640 427 -640 466 -512 512 -347 500 -640 480 -480 640 -500 302 -640 480 -640 425 -640 428 -640 418 -640 480 -640 426 -640 480 -640 480 -500 478 -640 440 -500 375 -500 375 -612 612 -427 640 -640 427 -600 450 -640 480 -483 640 -640 480 -640 480 -640 427 -424 640 -426 640 -465 640 -640 480 -640 431 -640 427 -640 561 -640 413 -427 640 -640 427 -480 640 -612 612 -640 480 -457 640 -640 360 -640 480 -612 612 -480 640 -640 427 -612 612 -640 427 -640 426 -640 480 -640 429 -640 427 -640 480 -640 480 -640 426 -640 444 -640 424 -640 370 -640 480 -427 640 -640 480 -431 356 -640 424 -640 480 -426 640 -640 427 -640 427 -640 478 -640 428 -375 500 -500 315 -425 640 -640 480 -640 480 -640 480 -480 640 -640 478 -478 500 -640 480 -640 480 -426 640 -640 480 -640 419 -640 430 -361 640 -640 428 -500 332 -640 480 -427 640 -640 427 -500 375 -640 424 -640 425 -640 430 -500 375 -640 425 -640 480 -480 640 -500 333 -427 640 -427 640 -449 640 -431 640 -386 640 -640 480 -640 428 -640 480 -500 333 -456 640 -478 640 -428 640 -640 483 -640 427 -640 428 -480 640 -640 480 -480 640 -640 478 -640 480 -640 426 -427 640 -640 427 -640 213 -640 640 -612 612 -640 425 -500 414 -427 640 -640 480 -640 361 -500 333 -523 640 -480 640 -640 480 -612 612 -640 425 -612 612 -640 400 -480 640 -640 479 -500 400 -640 426 -640 401 -478 640 -428 640 -640 423 -640 425 -640 480 -640 480 -612 612 -640 480 -426 640 -480 640 -640 373 -640 480 -640 296 -500 375 -500 375 -640 480 -640 387 -427 640 -500 375 -453 640 -640 426 -640 480 -640 426 -426 640 -480 640 -500 374 -480 640 -640 427 -640 427 -640 427 -565 640 -640 431 -640 427 -640 480 -500 375 -640 325 -640 427 -500 500 -486 640 -640 480 -500 333 -500 375 -640 406 -640 427 -640 426 -640 480 -640 480 -480 640 -640 480 -640 427 -640 480 -375 500 -640 480 -500 375 -426 640 -333 500 -640 427 -612 612 -395 640 -640 373 -640 360 -640 480 -640 480 -640 480 -640 424 -500 375 -612 612 -640 424 -640 425 -640 480 -640 480 -640 427 -640 426 -640 480 -640 478 -491 500 -640 480 -480 640 -640 378 -366 500 -640 427 -640 428 -640 454 -640 512 -500 357 -480 640 -480 640 -457 640 -333 500 -640 480 -500 310 -640 480 -500 559 -428 640 -640 427 -500 375 -640 463 -640 425 -640 480 -375 500 -337 640 -640 480 -640 480 -640 480 -640 199 -371 500 -640 480 -640 476 -640 480 -428 640 -640 427 -640 428 -423 640 -640 480 -640 427 -640 427 -640 480 -500 375 -640 427 -240 320 -640 427 -640 398 -427 640 -423 640 -612 612 -500 375 -640 427 -640 480 -427 640 -640 440 -500 375 -480 640 -500 376 -640 427 -427 640 -480 640 -500 375 -500 307 -640 480 -428 640 -612 612 -640 480 -640 425 -384 288 -640 348 -640 427 -640 480 -640 480 -640 480 -480 640 -427 640 -640 427 -640 428 -640 480 -640 480 -640 511 -500 364 -640 359 -500 332 -500 375 -640 429 -640 480 -640 480 -640 427 -640 427 -500 345 -640 480 -640 427 -640 427 -640 478 -640 480 -500 500 -640 427 -640 427 -640 480 -640 512 -640 427 -640 480 -640 480 -640 427 -383 640 -640 426 -640 427 -640 480 -427 640 -500 375 -640 480 -375 500 -480 640 -427 640 -640 425 -640 640 -640 463 -338 500 -640 487 -640 480 -500 375 -640 474 -640 480 -640 412 -640 367 -640 427 -640 427 -375 500 -640 426 -640 427 -364 500 -640 439 -353 500 -640 480 -640 476 -640 640 -640 480 -640 425 -333 500 -640 425 -640 424 -640 360 -500 368 -640 426 -640 427 -640 480 -500 375 -640 461 -640 457 -640 321 -480 640 -640 427 -640 427 -640 427 -640 480 -271 640 -375 500 -640 427 -640 427 -360 640 -480 640 -640 418 -480 640 -480 640 -640 427 -375 500 -480 640 -640 480 -640 572 -640 428 -640 640 -640 427 -640 480 -640 478 -633 640 -640 425 -640 427 -640 422 -640 480 -640 451 -640 480 -640 427 -640 480 -478 640 -640 427 -640 640 -640 427 -640 480 -500 375 -640 428 -480 640 -640 443 -640 427 -640 427 -431 640 -640 425 -400 500 -640 426 -640 640 -640 480 -640 480 -375 500 -640 401 -640 483 -640 480 -640 427 -640 459 -640 481 -640 480 -640 259 -640 428 -500 375 -640 418 -480 640 -427 640 -640 546 -612 612 -320 240 -640 427 -640 360 -500 477 -500 375 -427 640 -640 428 -640 426 -640 427 -640 438 -640 480 -640 480 -640 428 -500 356 -478 640 -640 426 -640 428 -640 427 -480 640 -424 640 -612 612 -640 426 -640 429 -427 640 -640 360 -640 480 -640 591 -640 428 -640 495 -480 640 -640 480 -480 640 -640 480 -640 640 -640 346 -640 427 -640 427 -640 480 -640 480 -480 640 -640 427 -640 376 -640 424 -640 480 -500 375 -640 427 -640 480 -427 640 -640 428 -640 425 -500 309 -494 500 -640 480 -640 475 -500 375 -375 500 -640 427 -640 480 -640 480 -640 359 -640 512 -488 640 -640 426 -640 426 -420 640 -480 640 -640 427 -640 428 -415 500 -500 375 -500 273 -427 640 -640 480 -640 427 -640 427 -640 428 -640 426 -480 640 -640 427 -640 470 -640 427 -640 522 -640 427 -640 480 -640 428 -640 427 -500 375 -640 480 -500 333 -640 480 -347 500 -480 640 -640 428 -640 480 -500 375 -640 428 -500 334 -640 478 -640 428 -640 480 -640 479 -348 500 -500 375 -640 480 -500 339 -640 481 -640 640 -600 450 -426 640 -480 640 -640 427 -500 375 -640 424 -640 427 -640 478 -640 480 -480 640 -640 426 -640 427 -480 640 -640 434 -640 480 -480 640 -500 375 -640 480 -640 480 -427 640 -640 428 -424 640 -640 480 -640 480 -640 426 -640 427 -500 333 -640 480 -640 442 -640 388 -500 375 -640 480 -640 432 -333 500 -640 480 -640 427 -640 408 -377 500 -640 425 -640 381 -640 509 -640 480 -426 640 -640 371 -640 480 -640 424 -640 503 -640 212 -640 426 -640 480 -512 640 -500 400 -480 640 -500 375 -640 425 -640 427 -640 360 -640 426 -360 640 -431 640 -640 443 -640 480 -640 493 -480 640 -640 566 -640 427 -640 421 -640 480 -640 427 -640 425 -480 640 -640 480 -622 640 -640 427 -324 432 -640 427 -640 427 -640 480 -640 425 -640 480 -640 319 -640 427 -427 640 -640 480 -640 480 -612 612 -640 428 -612 612 -456 640 -500 375 -500 325 -480 640 -480 640 -480 640 -500 375 -612 612 -500 375 -640 480 -480 640 -640 408 -640 427 -640 408 -640 426 -640 427 -640 427 -480 320 -640 284 -640 427 -556 640 -640 427 -640 480 -640 400 -640 421 -500 375 -640 427 -640 480 -640 427 -640 480 -640 481 -561 640 -640 480 -640 468 -640 480 -640 425 -640 425 -500 375 -640 480 -426 640 -640 480 -640 427 -640 511 -640 565 -640 480 -375 500 -640 640 -429 640 -500 375 -480 640 -500 375 -480 640 -640 360 -640 480 -640 427 -500 333 -567 378 -480 640 -480 640 -427 640 -640 360 -500 400 -500 375 -640 428 -600 400 -640 427 -640 480 -640 480 -640 427 -500 375 -480 640 -375 500 -640 424 -640 640 -640 427 -375 500 -640 426 -500 375 -513 640 -640 429 -640 401 -540 407 -480 640 -640 426 -640 426 -640 480 -362 500 -640 480 -640 412 -640 425 -500 375 -640 480 -640 426 -426 640 -494 500 -500 375 -640 480 -640 480 -640 512 -480 640 -640 432 -375 500 -640 480 -478 640 -640 480 -640 459 -640 480 -426 640 -426 640 -640 512 -640 299 -640 427 -424 640 -480 640 -640 427 -640 427 -478 640 -640 480 -640 480 -640 480 -640 480 -500 375 -640 429 -640 480 -640 427 -640 426 -640 427 -640 426 -640 467 -640 426 -480 640 -640 458 -640 428 -640 480 -640 427 -424 640 -640 480 -480 640 -640 427 -640 480 -640 494 -427 640 -640 480 -640 432 -450 337 -640 427 -640 427 -480 640 -640 441 -480 640 -640 428 -640 425 -640 433 -384 512 -500 375 -640 427 -640 584 -500 333 -424 640 -427 640 -640 426 -480 640 -640 480 -444 640 -640 408 -427 640 -640 353 -640 480 -640 480 -640 428 -640 359 -480 640 -428 640 -500 400 -343 500 -640 480 -640 478 -640 427 -480 640 -500 375 -640 427 -480 316 -640 424 -425 640 -640 480 -640 480 -500 333 -640 480 -640 427 -626 640 -640 426 -640 480 -640 480 -427 640 -428 640 -423 640 -500 375 -500 307 -434 640 -480 640 -425 640 -320 240 -500 333 -640 427 -500 375 -480 640 -558 234 -640 515 -640 611 -480 640 -640 425 -427 640 -427 640 -640 427 -640 479 -640 480 -426 640 -428 640 -333 500 -640 430 -427 640 -640 480 -429 640 -425 640 -500 375 -640 488 -640 425 -640 406 -640 457 -640 480 -640 427 -640 480 -640 427 -640 480 -500 394 -640 464 -640 599 -427 640 -640 480 -640 513 -427 640 -640 480 -640 427 -640 479 -640 359 -640 429 -500 333 -500 333 -500 333 -640 427 -640 424 -640 426 -640 428 -640 427 -500 375 -500 375 -500 375 -640 480 -640 427 -640 478 -640 360 -640 427 -454 604 -500 375 -640 427 -640 427 -500 375 -640 360 -640 457 -640 420 -640 480 -640 427 -640 427 -640 480 -640 432 -640 480 -480 640 -640 427 -427 640 -640 480 -426 640 -640 480 -640 480 -640 480 -640 480 -428 640 -640 425 -480 640 -640 429 -640 480 -640 179 -640 480 -640 360 -640 463 -640 427 -480 640 -640 480 -640 459 -480 640 -640 426 -500 375 -425 640 -640 606 -500 375 -500 375 -640 354 -451 640 -414 640 -640 480 -500 281 -500 375 -640 427 -640 405 -640 512 -640 480 -612 612 -640 480 -447 640 -640 427 -640 480 -640 529 -640 317 -480 640 -234 500 -640 480 -480 640 -500 333 -481 640 -460 640 -640 480 -640 360 -500 375 -375 500 -640 480 -640 425 -640 480 -640 426 -476 640 -640 512 -427 640 -500 375 -478 640 -228 296 -640 480 -500 375 -406 640 -427 640 -603 640 -640 428 -640 480 -640 268 -426 640 -640 480 -425 640 -640 409 -427 640 -360 640 -361 640 -640 427 -437 640 -384 568 -500 332 -640 421 -640 360 -640 480 -640 427 -640 480 -428 640 -640 383 -507 619 -427 640 -480 640 -640 426 -480 640 -640 426 -640 480 -640 480 -640 423 -640 424 -640 428 -640 448 -640 427 -640 391 -480 640 -640 425 -640 480 -640 427 -500 335 -480 640 -500 334 -612 612 -427 640 -640 427 -500 355 -640 480 -512 640 -640 532 -640 427 -424 640 -640 453 -640 427 -640 480 -640 428 -640 424 -640 480 -640 480 -640 480 -500 375 -640 480 -480 640 -640 480 -640 428 -500 375 -640 428 -640 391 -480 640 -640 480 -640 480 -500 333 -640 554 -640 480 -640 480 -480 640 -640 427 -480 640 -640 461 -640 480 -640 427 -640 479 -640 427 -640 427 -640 480 -640 427 -640 427 -480 640 -480 640 -500 332 -500 375 -640 480 -640 429 -640 480 -640 427 -640 427 -482 640 -640 426 -500 375 -640 428 -640 426 -640 427 -640 427 -640 301 -640 480 -640 426 -640 428 -640 364 -500 375 -640 426 -640 426 -640 480 -640 424 -640 480 -480 640 -640 353 -640 429 -480 640 -640 480 -427 640 -426 640 -640 427 -640 427 -635 640 -640 480 -426 640 -640 480 -640 480 -640 426 -640 427 -640 426 -640 184 -500 333 -500 475 -640 408 -425 640 -500 375 -640 406 -640 471 -640 426 -640 411 -480 640 -333 500 -640 427 -640 480 -427 640 -640 428 -640 370 -640 414 -640 429 -640 438 -640 426 -480 640 -640 480 -640 427 -640 480 -640 426 -480 640 -640 427 -388 500 -640 425 -333 500 -640 428 -640 480 -640 424 -640 427 -640 424 -500 375 -640 480 -640 426 -640 427 -640 480 -640 640 -500 334 -640 425 -335 500 -640 516 -640 384 -640 425 -640 427 -640 427 -640 428 -640 480 -640 404 -500 375 -640 480 -480 640 -500 334 -640 319 -640 428 -640 480 -640 480 -640 359 -640 480 -640 425 -640 425 -612 612 -640 428 -640 480 -640 424 -500 375 -500 332 -640 426 -640 360 -640 425 -480 640 -640 427 -493 640 -425 640 -640 640 -500 375 -471 640 -640 480 -400 382 -640 427 -640 379 -640 424 -480 640 -640 480 -640 427 -640 428 -426 640 -640 425 -640 427 -640 432 -612 612 -500 375 -640 425 -640 480 -427 640 -640 427 -640 428 -640 480 -640 640 -500 375 -427 640 -640 524 -640 270 -640 424 -640 480 -500 333 -640 427 -640 318 -640 480 -612 612 -640 427 -480 640 -450 338 -343 500 -640 480 -428 640 -500 346 -640 465 -640 459 -480 640 -640 426 -640 427 -640 360 -640 458 -480 640 -640 404 -640 427 -475 389 -640 480 -500 375 -640 360 -427 640 -640 478 -640 427 -640 480 -640 480 -640 409 -500 375 -640 480 -640 480 -640 480 -489 640 -640 427 -640 480 -640 427 -640 480 -640 480 -640 529 -480 640 -640 360 -640 480 -480 640 -640 480 -640 480 -640 428 -640 425 -423 640 -500 281 -640 480 -640 480 -640 428 -640 428 -500 375 -640 378 -640 480 -640 371 -640 480 -640 480 -640 426 -640 480 -640 448 -640 427 -640 501 -480 640 -333 500 -640 480 -640 425 -640 480 -640 429 -640 480 -373 640 -426 640 -640 480 -640 427 -640 480 -640 424 -640 371 -612 612 -500 375 -640 457 -640 480 -640 427 -640 427 -640 480 -640 427 -640 429 -640 427 -375 500 -640 389 -333 500 -500 375 -500 375 -480 640 -612 612 -640 480 -500 375 -640 426 -640 426 -500 333 -640 480 -425 640 -427 640 -626 640 -640 428 -500 375 -640 495 -500 375 -640 424 -640 480 -640 480 -375 500 -640 533 -640 425 -640 424 -640 480 -640 399 -640 427 -640 426 -640 428 -640 425 -480 640 -500 375 -640 426 -640 480 -640 360 -640 427 -480 640 -480 640 -640 432 -500 471 -640 400 -640 427 -500 375 -640 425 -375 500 -640 480 -640 480 -640 496 -323 500 -584 640 -480 640 -640 424 -640 428 -480 640 -640 425 -478 640 -500 334 -480 640 -640 456 -640 458 -640 480 -480 640 -640 425 -480 640 -640 480 -640 424 -480 640 -640 640 -640 480 -640 480 -640 428 -500 375 -640 457 -375 500 -427 640 -640 427 -427 640 -282 500 -371 500 -150 200 -480 640 -640 480 -500 372 -640 480 -640 430 -640 480 -640 480 -640 480 -480 640 -640 427 -640 427 -500 375 -640 427 -425 640 -512 640 -640 427 -640 426 -640 218 -640 427 -640 427 -640 427 -640 427 -640 480 -640 382 -640 480 -484 289 -640 480 -640 461 -427 640 -640 480 -640 428 -375 500 -640 427 -427 640 -500 332 -640 427 -500 430 -640 439 -351 640 -427 640 -426 640 -333 500 -428 640 -640 480 -640 480 -427 640 -640 480 -500 375 -427 640 -640 480 -640 270 -640 473 -426 640 -640 427 -640 480 -640 480 -480 640 -640 480 -640 480 -352 500 -640 480 -480 640 -612 612 -640 427 -640 431 -640 329 -640 427 -640 426 -640 480 -640 480 -640 478 -640 427 -428 640 -394 406 -640 480 -640 480 -640 480 -640 359 -637 640 -640 482 -480 640 -480 640 -640 439 -427 640 -487 500 -640 480 -640 480 -640 426 -480 640 -640 341 -427 640 -427 640 -640 418 -640 374 -640 427 -640 480 -640 480 -640 433 -498 640 -640 427 -640 494 -500 333 -640 427 -480 640 -640 426 -640 426 -640 411 -511 640 -640 427 -640 426 -640 479 -640 427 -426 640 -500 375 -640 428 -375 500 -480 640 -640 482 -500 375 -640 427 -640 497 -600 400 -640 480 -640 385 -640 480 -640 640 -640 480 -640 426 -375 500 -640 429 -500 334 -375 500 -640 427 -640 427 -640 426 -640 424 -480 640 -571 640 -640 535 -640 428 -427 640 -640 480 -640 425 -640 480 -640 425 -640 480 -640 427 -640 424 -640 427 -640 480 -640 480 -640 400 -640 428 -640 425 -480 640 -640 480 -640 376 -640 440 -640 428 -375 500 -640 626 -640 427 -487 496 -500 483 -375 500 -640 359 -640 427 -640 480 -427 640 -640 480 -640 480 -640 427 -640 480 -640 429 -640 427 -640 480 -546 366 -500 375 -439 640 -640 425 -640 400 -480 640 -640 480 -425 640 -640 480 -427 640 -640 480 -500 375 -640 427 -640 427 -640 426 -426 640 -428 640 -640 473 -360 640 -640 480 -640 480 -420 640 -640 480 -640 427 -450 600 -427 640 -640 496 -640 480 -640 432 -577 640 -640 480 -640 514 -640 427 -375 500 -333 500 -640 480 -375 500 -640 427 -500 333 -640 444 -427 640 -640 426 -640 478 -427 640 -640 403 -500 500 -640 480 -640 426 -427 640 -500 334 -640 428 -425 640 -500 375 -640 480 -493 640 -640 640 -512 640 -640 427 -640 480 -612 612 -640 390 -640 424 -640 480 -640 427 -640 480 -640 513 -499 640 -640 359 -640 480 -640 427 -427 640 -640 425 -640 427 -640 427 -640 480 -640 427 -640 480 -640 373 -640 480 -640 480 -640 427 -640 427 -427 640 -640 360 -427 640 -640 424 -612 612 -640 425 -359 640 -427 640 -480 640 -640 426 -640 427 -640 427 -640 427 -640 460 -640 480 -612 612 -640 480 -512 640 -333 500 -640 480 -500 349 -427 640 -640 480 -640 424 -640 448 -480 640 -640 426 -480 640 -640 480 -640 426 -640 427 -640 427 -640 480 -640 427 -480 640 -480 640 -500 333 -479 640 -640 479 -640 550 -640 426 -640 480 -640 426 -640 478 -500 375 -640 424 -640 427 -640 425 -428 640 -640 427 -640 480 -640 426 -640 424 -640 480 -480 640 -640 427 -640 427 -640 426 -480 640 -640 480 -550 366 -640 427 -500 333 -640 480 -288 432 -640 480 -360 640 -640 429 -480 640 -640 427 -640 566 -427 640 -640 480 -500 375 -640 425 -640 640 -640 512 -428 640 -333 500 -500 500 -500 375 -640 425 -640 480 -640 480 -640 427 -640 461 -500 375 -600 450 -640 480 -640 480 -640 427 -500 375 -640 426 -295 175 -427 640 -640 425 -640 427 -640 480 -640 425 -640 427 -640 480 -640 457 -640 419 -640 443 -500 332 -500 375 -500 375 -612 612 -640 457 -612 612 -375 500 -640 427 -640 473 -640 513 -640 426 -612 612 -640 480 -600 600 -640 480 -640 425 -612 612 -640 427 -500 333 -640 428 -640 484 -640 480 -480 640 -640 360 -326 500 -500 401 -480 640 -640 468 -480 640 -640 480 -640 366 -640 480 -426 640 -640 425 -640 425 -427 640 -328 640 -500 298 -500 288 -480 640 -640 427 -425 640 -640 480 -640 480 -640 480 -500 375 -640 424 -640 427 -640 427 -640 426 -478 640 -640 480 -500 375 -480 640 -480 640 -640 428 -640 480 -480 640 -640 478 -640 416 -640 480 -640 360 -640 427 -640 427 -640 480 -639 640 -500 375 -640 457 -640 427 -375 500 -640 480 -480 640 -640 480 -640 481 -480 640 -511 640 -426 640 -640 640 -500 333 -640 480 -640 425 -632 640 -480 640 -640 480 -640 426 -383 640 -640 428 -640 428 -500 375 -400 500 -640 427 -612 612 -640 427 -640 483 -640 480 -640 489 -640 640 -640 480 -640 480 -640 480 -640 480 -640 426 -640 360 -480 640 -449 640 -375 500 -640 425 -640 457 -640 480 -640 427 -640 480 -640 377 -640 480 -640 427 -640 480 -420 640 -451 299 -640 478 -500 375 -640 426 -640 480 -640 361 -480 640 -640 481 -640 427 -640 480 -488 640 -640 427 -640 427 -640 400 -640 509 -423 640 -640 458 -640 480 -427 640 -640 480 -640 360 -640 480 -640 480 -640 426 -640 426 -640 480 -427 640 -483 500 -640 480 -640 427 -480 640 -480 640 -640 426 -400 300 -640 514 -500 328 -640 478 -640 480 -640 427 -640 480 -640 425 -375 500 -640 524 -640 376 -640 397 -640 427 -640 587 -640 480 -500 375 -640 373 -640 480 -640 481 -640 425 -640 443 -640 366 -640 426 -426 640 -424 640 -640 427 -426 640 -640 480 -640 426 -640 480 -640 480 -467 500 -424 640 -640 483 -640 478 -640 480 -640 424 -500 481 -640 426 -325 500 -500 333 -640 481 -480 640 -640 434 -480 384 -640 480 -640 480 -612 612 -640 427 -640 480 -640 425 -640 480 -640 480 -478 640 -640 252 -479 640 -640 480 -335 500 -375 500 -640 426 -427 640 -402 640 -640 640 -500 376 -480 640 -640 480 -640 409 -640 427 -640 481 -640 480 -640 360 -640 480 -500 334 -640 427 -480 640 -640 478 -480 640 -368 500 -640 425 -640 480 -375 500 -640 360 -640 480 -640 427 -640 480 -480 640 -426 640 -640 426 -640 427 -640 480 -640 622 -640 514 -480 360 -640 427 -640 428 -640 421 -640 380 -333 500 -640 480 -640 480 -640 480 -427 640 -640 360 -640 330 -640 425 -640 384 -640 480 -640 480 -640 429 -640 480 -640 480 -425 640 -427 640 -640 424 -640 480 -640 425 -640 480 -640 480 -640 454 -640 427 -500 374 -640 426 -640 480 -500 333 -640 458 -500 375 -640 427 -640 640 -640 427 -640 444 -640 426 -640 480 -640 480 -640 480 -427 640 -640 450 -461 640 -640 406 -612 612 -480 640 -640 480 -640 480 -640 634 -640 427 -640 480 -480 640 -640 424 -640 478 -552 640 -640 426 -640 480 -500 333 -640 426 -480 640 -499 640 -640 428 -374 500 -640 480 -640 480 -375 500 -480 640 -640 425 -640 478 -640 533 -640 427 -640 427 -480 640 -640 480 -457 500 -640 480 -500 375 -640 384 -500 375 -640 480 -640 480 -640 514 -640 427 -480 640 -640 480 -640 428 -640 424 -500 375 -375 500 -427 640 -640 427 -575 457 -640 426 -640 598 -640 427 -640 426 -640 478 -640 316 -640 481 -512 640 -494 640 -640 432 -413 550 -452 640 -500 333 -640 427 -640 480 -640 425 -640 480 -640 377 -480 640 -427 640 -640 426 -640 428 -419 500 -640 427 -480 640 -288 432 -426 640 -640 424 -640 427 -640 427 -640 426 -640 480 -640 480 -640 427 -427 640 -640 427 -500 375 -612 612 -427 640 -640 480 -640 313 -426 640 -640 426 -500 375 -480 640 -427 640 -640 480 -499 640 -500 333 -640 360 -500 375 -640 389 -612 612 -480 640 -640 478 -640 480 -640 427 -640 512 -640 424 -640 480 -427 640 -640 427 -417 640 -640 480 -640 640 -640 533 -640 480 -640 360 -426 640 -480 640 -640 480 -427 640 -426 640 -480 640 -640 480 -640 397 -640 511 -480 640 -426 640 -640 480 -640 427 -640 427 -640 480 -426 640 -427 640 -640 427 -640 427 -427 640 -442 500 -427 640 -640 427 -563 640 -500 375 -640 427 -612 612 -640 361 -640 479 -500 499 -640 424 -640 426 -640 433 -640 428 -640 441 -640 491 -640 639 -612 612 -500 333 -640 480 -640 424 -333 500 -375 500 -640 480 -640 427 -640 595 -640 554 -640 480 -640 427 -640 480 -640 543 -640 428 -640 426 -640 369 -494 640 -640 427 -640 425 -480 640 -425 640 -640 427 -640 427 -480 640 -500 334 -480 360 -612 612 -400 241 -640 480 -640 480 -640 427 -640 480 -333 640 -640 480 -640 426 -640 426 -640 480 -640 480 -640 439 -640 421 -640 426 -480 640 -500 357 -360 640 -427 640 -478 640 -480 640 -640 360 -512 640 -640 480 -640 480 -427 640 -500 375 -640 480 -426 640 -640 495 -584 640 -640 480 -640 427 -640 480 -640 361 -640 480 -423 564 -500 375 -640 425 -500 375 -612 612 -640 605 -640 427 -640 426 -640 480 -640 480 -640 427 -640 427 -640 428 -640 374 -640 426 -640 479 -640 478 -640 359 -480 640 -640 428 -640 425 -640 380 -480 640 -640 427 -640 480 -640 480 -640 480 -640 400 -640 425 -307 500 -640 376 -640 428 -640 427 -640 480 -640 480 -427 640 -640 480 -640 480 -500 375 -640 426 -375 500 -640 486 -500 341 -640 426 -640 498 -640 426 -426 640 -640 426 -640 427 -550 541 -640 480 -640 360 -640 427 -480 640 -640 480 -500 375 -640 426 -375 500 -480 640 -500 375 -452 640 -640 428 -640 478 -640 541 -375 500 -426 640 -640 480 -331 500 -640 427 -640 427 -640 425 -640 480 -640 427 -640 480 -640 265 -624 640 -640 480 -333 500 -640 480 -640 480 -640 425 -424 500 -640 427 -640 480 -640 426 -640 480 -640 426 -640 480 -640 432 -640 480 -640 519 -640 428 -640 543 -500 430 -640 480 -640 480 -640 427 -640 427 -640 480 -640 480 -640 425 -640 480 -406 640 -640 427 -640 480 -640 427 -640 480 -640 426 -640 360 -640 427 -640 480 -500 333 -640 480 -640 426 -640 480 -640 427 -640 427 -500 358 -640 480 -640 464 -500 333 -640 480 -549 640 -640 480 -367 500 -640 427 -640 423 -640 444 -640 428 -640 480 -500 500 -640 480 -640 480 -640 426 -640 428 -427 640 -480 640 -575 408 -500 375 -500 333 -640 427 -640 414 -640 296 -640 427 -480 640 -640 480 -640 431 -640 425 -640 480 -427 640 -448 640 -640 481 -428 640 -640 480 -640 480 -640 480 -640 427 -612 612 -429 640 -500 377 -640 480 -480 640 -640 423 -640 480 -640 427 -640 427 -427 640 -640 428 -640 428 -640 480 -640 427 -480 640 -640 427 -383 640 -640 360 -640 480 -640 397 -640 425 -427 640 -375 500 -500 375 -640 441 -640 427 -640 480 -427 640 -640 427 -480 640 -640 515 -640 404 -640 426 -640 480 -481 640 -640 427 -500 375 -640 428 -640 480 -640 480 -640 458 -640 424 -640 474 -400 467 -431 640 -640 305 -427 640 -425 640 -480 640 -640 427 -640 447 -640 480 -640 427 -640 427 -500 332 -640 480 -480 640 -480 640 -640 432 -640 427 -640 424 -640 480 -500 375 -640 426 -610 635 -640 426 -500 332 -480 640 -500 333 -640 512 -500 375 -640 427 -427 640 -640 427 -640 640 -640 427 -640 426 -480 640 -640 480 -612 612 -640 480 -424 640 -640 427 -500 375 -480 640 -640 480 -640 428 -640 427 -640 510 -480 640 -640 480 -640 427 -640 427 -429 640 -640 480 -640 444 -427 640 -640 640 -640 480 -640 427 -640 512 -375 500 -640 480 -640 480 -612 612 -423 640 -425 640 -640 359 -428 640 -343 640 -424 640 -640 427 -461 640 -640 640 -640 480 -640 515 -640 425 -640 427 -640 615 -640 480 -427 640 -640 426 -640 480 -640 429 -612 612 -640 430 -640 425 -640 480 -500 375 -640 480 -426 640 -640 480 -640 427 -640 427 -640 428 -427 640 -525 525 -640 480 -640 480 -640 480 -640 513 -640 383 -612 612 -620 640 -640 360 -500 375 -640 428 -640 640 -640 427 -640 427 -640 427 -333 500 -640 207 -640 615 -640 395 -480 640 -640 563 -612 612 -640 392 -640 480 -640 478 -640 427 -622 640 -640 427 -640 480 -640 480 -640 480 -500 375 -640 482 -640 478 -640 427 -480 640 -640 426 -332 500 -640 480 -640 480 -640 457 -640 480 -640 480 -368 640 -500 375 -612 612 -640 442 -640 480 -640 480 -427 640 -640 427 -612 612 -480 640 -375 500 -375 500 -640 360 -640 398 -640 409 -640 427 -427 640 -640 428 -514 640 -640 512 -640 480 -640 480 -500 329 -640 480 -640 476 -640 426 -500 375 -640 480 -500 375 -480 640 -500 375 -584 640 -640 480 -640 429 -640 425 -500 332 -640 424 -500 334 -640 427 -640 427 -640 344 -495 500 -640 427 -640 458 -640 533 -500 385 -640 480 -640 426 -640 639 -428 640 -640 427 -357 500 -640 425 -640 480 -640 480 -640 480 -640 361 -500 333 -480 640 -200 240 -427 640 -640 427 -640 481 -640 481 -640 480 -640 480 -640 381 -425 640 -640 428 -640 480 -640 426 -640 427 -640 480 -640 428 -640 414 -640 542 -640 480 -640 480 -640 480 -478 640 -640 410 -500 348 -640 480 -500 375 -640 425 -427 640 -640 427 -640 480 -640 427 -500 375 -640 428 -640 480 -640 480 -480 640 -428 640 -640 640 -640 426 -500 375 -640 429 -612 612 -640 456 -640 480 -396 640 -640 429 -640 480 -640 480 -612 612 -640 480 -640 427 -640 548 -640 532 -640 424 -640 640 -640 453 -640 427 -640 243 -612 612 -640 467 -640 425 -640 408 -333 500 -640 480 -640 480 -332 500 -333 500 -640 480 -640 480 -640 480 -640 480 -640 481 -500 375 -640 431 -640 427 -640 360 -500 358 -640 430 -640 613 -640 480 -640 427 -640 427 -640 480 -640 480 -640 480 -640 420 -640 360 -640 437 -640 527 -640 427 -640 438 -500 375 -461 640 -640 427 -640 427 -427 640 -427 640 -640 480 -426 640 -640 350 -426 640 -640 427 -500 333 -640 480 -640 461 -640 480 -640 427 -640 480 -640 426 -640 480 -640 379 -427 640 -640 461 -640 480 -640 426 -640 480 -640 480 -640 427 -640 359 -640 427 -480 640 -640 516 -640 432 -640 480 -640 480 -640 258 -500 375 -640 403 -500 375 -480 640 -640 433 -640 360 -640 349 -478 640 -640 427 -480 640 -640 480 -563 640 -445 640 -640 437 -640 428 -640 360 -640 480 -640 480 -424 640 -640 513 -640 480 -450 350 -640 427 -640 427 -640 398 -480 640 -400 300 -640 483 -640 428 -175 230 -427 640 -640 480 -640 428 -480 480 -640 513 -640 426 -427 640 -640 457 -427 640 -640 360 -640 360 -427 640 -480 640 -640 433 -640 426 -640 480 -640 383 -640 424 -500 375 -500 375 -604 452 -640 427 -500 375 -333 500 -640 318 -640 480 -640 427 -480 640 -640 640 -640 428 -640 427 -500 375 -640 425 -427 640 -640 431 -480 640 -463 640 -640 429 -428 640 -640 480 -640 640 -640 480 -612 612 -640 414 -640 427 -427 640 -485 640 -360 640 -461 500 -482 640 -640 480 -428 640 -479 640 -640 396 -640 426 -640 433 -640 390 -445 418 -640 427 -500 375 -511 640 -640 480 -640 480 -640 426 -640 427 -375 500 -500 375 -427 640 -640 480 -640 427 -640 480 -640 427 -640 427 -640 480 -640 420 -425 640 -333 500 -640 457 -640 427 -640 426 -640 513 -480 640 -480 640 -478 640 -640 427 -500 335 -640 426 -640 489 -640 480 -618 394 -640 480 -332 500 -640 508 -640 427 -640 480 -640 480 -640 427 -640 480 -425 640 -612 612 -640 421 -640 426 -480 640 -640 480 -640 480 -640 425 -640 237 -427 640 -640 360 -640 428 -640 480 -640 427 -426 640 -640 480 -480 640 -480 640 -640 427 -429 640 -640 424 -427 640 -640 480 -427 640 -640 479 -640 492 -479 640 -640 480 -640 427 -640 427 -500 375 -640 427 -640 480 -500 375 -640 640 -500 375 -426 640 -582 640 -640 480 -333 500 -427 640 -640 617 -500 375 -640 480 -480 640 -640 480 -334 500 -640 480 -640 426 -480 640 -500 333 -480 640 -356 640 -500 333 -426 640 -640 480 -640 425 -640 480 -640 640 -376 500 -640 480 -640 480 -360 640 -480 640 -640 480 -640 480 -640 368 -640 478 -640 426 -640 480 -500 375 -428 640 -640 480 -640 480 -480 640 -483 640 -500 375 -500 333 -424 640 -427 640 -640 480 -640 480 -640 428 -640 480 -480 640 -477 500 -480 640 -427 640 -640 436 -640 480 -640 480 -640 480 -500 332 -500 333 -480 640 -640 480 -640 428 -640 640 -640 620 -480 640 -640 427 -500 247 -640 480 -640 360 -633 640 -640 480 -640 426 -640 427 -640 320 -640 480 -640 480 -480 640 -640 480 -333 500 -433 500 -518 640 -640 424 -612 612 -500 375 -640 400 -640 480 -640 480 -640 415 -480 640 -640 427 -427 640 -640 480 -497 640 -640 480 -427 640 -612 612 -640 427 -640 513 -640 425 -640 625 -640 480 -640 425 -500 296 -640 426 -640 427 -478 640 -640 427 -500 375 -640 640 -640 480 -425 640 -640 428 -640 480 -427 640 -640 427 -640 428 -640 480 -640 427 -640 420 -426 640 -640 426 -640 480 -426 640 -640 427 -640 427 -612 612 -640 360 -640 281 -500 375 -640 379 -640 429 -500 378 -427 640 -640 427 -640 392 -500 375 -479 640 -500 375 -640 480 -608 640 -474 640 -640 480 -640 427 -500 375 -640 429 -640 480 -640 515 -640 480 -640 640 -640 480 -640 426 -640 442 -427 640 -480 640 -640 427 -640 426 -427 640 -500 374 -640 425 -640 425 -640 427 -640 480 -423 640 -640 480 -640 581 -640 427 -426 640 -640 491 -640 425 -612 612 -640 427 -640 426 -640 480 -500 375 -640 640 -640 424 -640 427 -500 375 -640 427 -640 427 -640 480 -640 480 -640 480 -640 426 -500 281 -500 375 -640 427 -640 480 -480 360 -640 410 -640 403 -478 640 -480 640 -640 478 -457 640 -640 427 -375 500 -334 500 -500 332 -640 394 -640 371 -640 426 -640 426 -425 640 -640 480 -640 480 -427 640 -640 427 -640 462 -640 191 -480 640 -640 480 -640 394 -640 438 -640 360 -640 640 -431 640 -640 427 -500 375 -640 398 -640 426 -427 640 -640 428 -383 640 -640 427 -640 424 -640 480 -426 640 -500 375 -480 640 -640 428 -640 427 -500 375 -640 425 -640 480 -375 500 -640 480 -640 428 -640 427 -640 419 -479 640 -427 640 -640 427 -480 640 -640 480 -455 500 -640 432 -640 478 -640 426 -426 640 -640 502 -640 427 -640 480 -640 331 -640 528 -640 480 -480 640 -640 427 -480 640 -640 399 -640 427 -640 424 -640 386 -640 480 -640 427 -413 640 -500 375 -640 480 -640 480 -480 640 -375 500 -640 427 -640 512 -640 480 -427 640 -640 425 -640 424 -640 426 -640 429 -640 428 -640 427 -640 480 -480 640 -640 424 -640 427 -480 640 -640 304 -612 612 -640 427 -640 346 -427 640 -640 427 -640 480 -272 408 -640 480 -480 360 -357 500 -612 612 -640 480 -640 427 -427 640 -375 500 -640 363 -500 375 -640 480 -640 480 -640 480 -400 500 -375 500 -640 479 -640 429 -640 366 -480 640 -480 640 -640 425 -640 401 -478 640 -375 500 -640 427 -640 458 -640 512 -640 480 -612 612 -640 498 -640 480 -480 640 -640 427 -640 480 -640 480 -480 640 -640 478 -427 640 -640 480 -480 640 -500 375 -640 480 -640 480 -640 480 -640 425 -640 427 -478 640 -640 361 -640 635 -500 375 -640 516 -427 640 -640 480 -640 368 -612 612 -640 427 -640 421 -427 640 -640 426 -375 500 -480 640 -640 460 -640 448 -640 303 -640 616 -500 281 -640 480 -640 426 -640 369 -640 429 -640 427 -640 640 -375 500 -640 480 -640 508 -640 427 -640 412 -500 375 -640 480 -640 480 -640 512 -375 500 -640 480 -640 427 -640 480 -640 458 -500 375 -640 457 -640 427 -351 500 -640 428 -640 480 -640 376 -500 333 -500 375 -612 612 -640 480 -640 427 -640 427 -640 426 -479 640 -600 400 -640 640 -640 428 -500 335 -574 640 -640 480 -372 558 -640 427 -640 408 -427 640 -640 471 -640 524 -640 360 -640 480 -640 424 -500 389 -640 480 -640 425 -480 640 -640 424 -640 361 -640 512 -640 480 -640 427 -640 463 -640 480 -640 426 -612 612 -500 375 -375 500 -640 360 -640 612 -640 480 -640 416 -640 408 -640 427 -640 606 -640 539 -640 480 -425 640 -640 425 -640 480 -332 500 -375 500 -375 500 -640 427 -375 500 -640 427 -640 425 -640 427 -640 427 -500 460 -640 480 -427 640 -640 428 -640 480 -500 375 -640 480 -640 265 -640 457 -640 480 -640 480 -640 512 -640 393 -640 428 -426 640 -500 375 -640 427 -640 480 -500 375 -640 429 -640 427 -480 640 -640 459 -612 612 -574 640 -640 480 -415 500 -400 597 -500 333 -640 427 -640 360 -640 480 -500 376 -640 480 -480 640 -427 640 -640 426 -640 426 -640 360 -640 427 -640 480 -640 427 -640 480 -640 480 -612 612 -640 480 -426 640 -640 480 -428 640 -360 640 -640 480 -428 640 -500 375 -640 480 -640 480 -640 424 -499 500 -612 612 -640 480 -640 487 -640 382 -640 430 -640 427 -640 427 -640 427 -640 426 -480 640 -640 425 -480 640 -640 437 -427 640 -640 426 -640 508 -534 640 -640 480 -375 500 -480 640 -640 480 -640 427 -612 612 -640 457 -640 427 -192 564 -500 335 -640 480 -640 480 -640 456 -453 640 -478 640 -640 640 -640 427 -640 485 -640 480 -333 500 -640 427 -640 358 -640 480 -640 426 -640 425 -470 640 -640 480 -640 426 -640 480 -640 427 -500 375 -500 416 -640 427 -640 429 -315 210 -640 480 -640 512 -480 640 -480 640 -500 500 -454 500 -478 640 -640 480 -640 426 -640 480 -640 429 -500 371 -640 410 -640 427 -640 448 -640 426 -640 453 -640 468 -640 425 -511 640 -640 480 -480 640 -427 640 -640 480 -478 640 -450 640 -500 401 -640 480 -640 383 -500 380 -640 425 -375 500 -640 427 -640 582 -640 480 -480 640 -500 375 -640 480 -640 480 -500 375 -534 640 -640 480 -640 417 -640 427 -640 480 -640 480 -640 427 -350 215 -640 426 -427 640 -640 427 -640 480 -500 328 -612 612 -640 426 -640 480 -640 480 -473 640 -435 640 -640 253 -427 640 -475 640 -640 368 -612 612 -640 478 -640 428 -640 426 -427 640 -612 612 -320 240 -427 640 -640 427 -640 480 -640 427 -500 333 -640 480 -640 426 -640 480 -426 640 -427 640 -640 360 -640 427 -640 516 -640 478 -426 640 -500 375 -640 481 -480 640 -640 427 -375 500 -640 427 -500 336 -640 400 -640 434 -640 480 -427 640 -333 500 -425 640 -480 640 -640 480 -640 427 -500 375 -480 360 -640 427 -640 425 -500 333 -640 383 -640 480 -640 427 -320 286 -640 480 -427 640 -640 426 -640 480 -480 640 -640 424 -640 241 -640 480 -600 450 -640 444 -375 500 -512 640 -640 427 -480 640 -640 480 -640 424 -640 405 -479 640 -640 497 -640 388 -640 401 -640 444 -640 427 -640 480 -640 426 -500 375 -640 427 -398 224 -640 480 -640 426 -640 409 -429 640 -640 482 -640 480 -640 427 -640 480 -426 640 -423 640 -425 640 -640 480 -612 612 -640 480 -427 640 -640 513 -640 424 -480 640 -640 367 -640 480 -640 577 -640 427 -640 480 -427 640 -383 640 -480 640 -427 640 -640 427 -640 425 -640 427 -612 612 -640 480 -500 332 -500 333 -480 640 -640 480 -640 480 -640 480 -427 640 -640 425 -428 640 -375 500 -431 640 -451 640 -640 480 -480 640 -640 480 -640 427 -640 424 -640 424 -640 480 -640 428 -480 640 -500 375 -640 427 -500 375 -640 427 -612 612 -640 428 -640 480 -640 480 -640 640 -612 612 -640 469 -640 426 -640 480 -640 427 -500 375 -640 427 -640 480 -427 640 -500 343 -600 407 -640 425 -640 480 -426 640 -640 457 -480 640 -640 427 -500 375 -428 640 -640 427 -640 427 -368 500 -640 441 -640 480 -640 480 -640 427 -640 480 -640 458 -427 640 -500 419 -640 425 -640 480 -640 334 -640 428 -480 640 -640 304 -640 361 -480 640 -427 640 -480 640 -640 540 -640 428 -640 480 -480 640 -427 640 -640 426 -612 612 -640 480 -640 570 -427 640 -334 500 -640 480 -640 459 -640 480 -375 500 -640 427 -640 425 -640 424 -500 375 -640 480 -500 333 -480 640 -640 498 -396 640 -640 431 -640 400 -640 480 -640 427 -640 426 -427 640 -640 480 -640 427 -640 480 -500 335 -640 480 -640 480 -500 358 -640 480 -640 425 -640 579 -425 640 -500 375 -640 428 -325 640 -640 480 -640 425 -480 640 -375 500 -640 426 -640 480 -640 359 -375 500 -320 240 -640 386 -640 480 -640 480 -640 480 -600 399 -375 500 -640 428 -640 481 -640 480 -640 480 -640 480 -640 427 -640 480 -640 283 -427 640 -424 640 -640 480 -480 640 -640 640 -640 359 -640 480 -640 400 -500 333 -640 518 -640 480 -640 458 -640 487 -640 360 -640 480 -480 640 -640 427 -640 420 -424 640 -640 563 -500 357 -640 480 -640 426 -640 470 -640 426 -480 640 -640 427 -640 447 -428 640 -640 480 -640 425 -640 480 -427 640 -430 640 -640 383 -640 429 -640 480 -640 316 -640 426 -640 480 -500 375 -480 640 -640 427 -640 447 -640 426 -640 425 -640 427 -640 509 -640 427 -480 640 -640 359 -480 640 -640 480 -640 480 -640 478 -640 426 -335 500 -501 640 -640 640 -500 417 -640 478 -640 480 -500 444 -640 360 -640 480 -480 640 -640 480 -640 427 -640 427 -500 473 -640 381 -640 480 -640 427 -640 425 -480 640 -640 481 -640 480 -640 480 -480 640 -500 376 -640 480 -640 427 -640 427 -640 480 -334 500 -640 366 -640 220 -428 640 -640 640 -640 426 -640 640 -640 480 -640 503 -640 480 -640 480 -640 427 -640 427 -512 384 -640 428 -640 480 -500 393 -640 480 -500 375 -640 480 -640 480 -640 426 -427 640 -480 640 -640 427 -640 480 -375 500 -427 640 -640 427 -640 422 -640 427 -640 446 -612 612 -480 640 -640 427 -480 640 -480 640 -426 640 -488 500 -480 640 -640 463 -640 480 -500 333 -612 612 -640 480 -640 427 -640 426 -640 480 -640 480 -500 375 -640 427 -640 371 -640 427 -640 427 -640 480 -640 480 -640 360 -640 421 -640 358 -640 360 -500 332 -640 480 -640 425 -640 424 -640 629 -428 640 -640 427 -640 569 -398 640 -640 424 -640 425 -640 427 -500 375 -640 425 -640 480 -640 427 -640 424 -375 500 -640 480 -640 480 -365 500 -640 250 -427 640 -500 375 -612 612 -417 600 -500 375 -640 480 -640 348 -640 427 -640 423 -612 612 -640 427 -515 640 -640 461 -640 427 -375 500 -640 494 -640 480 -640 426 -427 640 -500 375 -640 480 -640 427 -640 427 -500 333 -640 427 -640 480 -640 427 -640 640 -427 640 -480 640 -463 640 -427 640 -509 640 -427 640 -640 427 -640 480 -640 480 -640 480 -640 427 -612 612 -640 480 -640 480 -640 480 -540 403 -640 442 -640 425 -640 427 -640 427 -640 384 -640 481 -640 480 -640 309 -640 480 -640 480 -640 388 -640 480 -640 480 -640 480 -640 360 -640 640 -500 375 -640 427 -640 480 -640 480 -640 427 -640 480 -426 640 -640 425 -640 480 -640 424 -432 591 -640 439 -640 431 -425 640 -427 640 -640 480 -556 640 -640 428 -640 480 -640 427 -640 480 -640 480 -500 375 -640 427 -640 427 -480 640 -640 428 -640 359 -640 480 -640 480 -480 384 -640 571 -640 429 -640 427 -640 415 -640 424 -640 427 -640 480 -640 480 -640 427 -333 500 -480 640 -640 426 -500 375 -640 428 -480 640 -605 640 -640 427 -640 480 -640 360 -383 640 -640 427 -640 480 -462 640 -640 480 -427 640 -480 640 -640 427 -640 425 -285 309 -386 640 -500 375 -640 480 -640 446 -640 480 -640 480 -412 640 -640 480 -480 640 -640 473 -640 427 -427 640 -640 480 -480 640 -427 640 -333 500 -640 457 -640 424 -450 607 -640 427 -640 480 -640 480 -640 427 -640 480 -640 574 -640 427 -436 640 -640 384 -640 480 -640 428 -640 480 -640 332 -640 480 -640 589 -500 375 -640 427 -640 480 -640 414 -427 640 -640 503 -640 360 -375 500 -360 238 -425 640 -480 640 -426 640 -640 479 -480 640 -612 612 -361 640 -640 457 -640 480 -427 640 -640 427 -640 387 -640 431 -640 566 -640 480 -480 640 -359 640 -500 375 -500 332 -375 500 -640 480 -640 427 -480 640 -640 428 -480 640 -640 427 -375 500 -480 640 -612 612 -640 480 -640 426 -375 500 -427 640 -553 640 -640 480 -640 569 -640 427 -640 426 -640 480 -640 478 -640 480 -640 512 -500 375 -640 406 -640 427 -640 480 -640 427 -640 408 -500 333 -584 640 -480 640 -640 480 -640 480 -427 640 -480 640 -375 500 -640 426 -480 640 -640 563 -640 297 -640 476 -396 576 -640 425 -640 480 -640 480 -640 480 -640 427 -640 427 -640 426 -640 400 -500 375 -640 480 -640 427 -640 427 -640 427 -514 640 -427 640 -640 427 -640 480 -480 640 -640 636 -640 480 -640 541 -640 360 -640 353 -424 640 -640 427 -480 640 -640 427 -480 640 -324 319 -640 426 -480 640 -640 427 -640 427 -375 500 -640 480 -478 640 -640 451 -640 480 -500 375 -429 640 -334 500 -480 640 -416 640 -640 427 -640 478 -640 479 -640 480 -640 480 -640 480 -640 384 -640 416 -640 457 -640 424 -428 640 -640 427 -640 433 -640 480 -491 640 -640 426 -500 333 -640 427 -640 427 -640 480 -640 464 -500 382 -640 433 -640 428 -640 427 -384 640 -640 424 -640 480 -333 500 -426 640 -427 640 -640 427 -640 360 -640 484 -640 480 -500 375 -425 640 -427 640 -640 427 -640 480 -640 530 -640 428 -500 500 -469 640 -640 428 -480 640 -640 427 -480 640 -640 489 -375 500 -640 425 -640 480 -640 457 -640 428 -463 640 -500 375 -640 449 -640 480 -640 427 -640 426 -480 640 -640 429 -640 427 -640 480 -640 480 -640 429 -640 543 -500 374 -480 640 -640 427 -500 375 -640 427 -640 360 -640 480 -500 375 -612 612 -640 426 -640 427 -480 640 -640 469 -487 500 -640 426 -640 425 -640 425 -255 640 -640 480 -482 500 -640 361 -640 427 -640 424 -521 640 -640 480 -375 500 -640 640 -375 500 -431 640 -640 480 -640 458 -640 480 -640 427 -640 480 -427 640 -378 640 -640 427 -640 480 -640 640 -640 428 -640 427 -640 480 -640 480 -640 480 -463 640 -640 426 -640 427 -640 426 -640 640 -640 480 -640 480 -480 640 -612 612 -640 379 -427 640 -640 480 -640 424 -640 240 -640 480 -640 480 -640 480 -341 640 -425 640 -612 612 -480 640 -480 640 -640 428 -640 480 -640 480 -640 427 -640 427 -640 420 -480 640 -640 427 -427 640 -640 480 -640 428 -640 427 -500 375 -256 192 -640 417 -480 640 -612 612 -375 500 -640 480 -640 458 -375 500 -640 425 -500 375 -640 518 -478 640 -640 480 -640 361 -480 640 -427 640 -480 640 -640 427 -425 640 -640 427 -500 375 -640 427 -640 344 -480 640 -640 480 -500 375 -640 401 -480 640 -450 350 -443 640 -427 640 -640 366 -640 429 -640 480 -640 426 -640 453 -500 375 -640 480 -640 427 -640 427 -640 478 -500 325 -640 360 -640 480 -640 480 -640 427 -640 425 -500 469 -640 388 -640 480 -640 471 -473 640 -640 480 -428 640 -640 481 -640 480 -640 426 -640 425 -500 333 -500 375 -640 427 -640 480 -640 431 -640 533 -640 428 -480 640 -640 465 -480 640 -640 480 -341 500 -567 567 -640 427 -640 640 -640 425 -480 640 -375 500 -640 458 -597 640 -640 441 -500 387 -400 366 -640 426 -427 640 -612 612 -640 371 -500 375 -640 468 -480 640 -640 480 -640 426 -640 425 -640 353 -427 640 -640 480 -640 480 -640 426 -640 424 -640 428 -333 500 -640 480 -640 593 -640 425 -375 500 -640 478 -500 375 -640 424 -480 640 -640 424 -480 640 -640 311 -640 480 -640 480 -640 426 -640 428 -493 640 -640 480 -640 427 -640 480 -383 640 -500 375 -640 480 -640 427 -640 480 -640 478 -640 508 -640 427 -480 319 -500 375 -640 480 -640 426 -500 375 -640 480 -500 375 -640 426 -640 480 -480 640 -640 480 -480 640 -640 480 -640 447 -480 640 -640 633 -640 427 -640 427 -640 480 -640 504 -471 640 -640 288 -480 640 -427 640 -497 640 -640 480 -640 480 -640 480 -391 500 -640 427 -640 480 -640 480 -377 500 -375 500 -640 480 -640 427 -640 480 -500 375 -640 480 -640 478 -428 640 -640 428 -640 470 -480 640 -640 480 -640 427 -640 480 -640 427 -640 426 -640 480 -640 428 -640 425 -640 428 -640 427 -375 500 -640 425 -640 427 -640 515 -438 640 -640 480 -640 480 -426 640 -640 483 -640 425 -640 427 -640 478 -640 427 -640 427 -640 427 -640 510 -640 427 -500 375 -640 425 -612 612 -640 514 -640 453 -500 330 -480 640 -640 508 -640 427 -640 426 -640 480 -640 480 -640 479 -640 480 -640 480 -375 500 -640 427 -612 612 -441 640 -640 427 -640 480 -640 427 -500 375 -640 461 -640 360 -500 332 -426 640 -500 373 -480 640 -500 333 -500 331 -640 480 -640 360 -612 612 -640 480 -480 640 -640 457 -640 425 -640 427 -640 427 -375 500 -512 640 -375 500 -640 426 -640 478 -640 640 -640 480 -640 480 -500 375 -640 427 -500 375 -640 427 -640 480 -640 527 -480 640 -640 480 -427 640 -500 376 -612 612 -640 425 -334 500 -640 480 -640 480 -500 375 -640 458 -463 547 -480 640 -640 512 -640 480 -640 426 -640 424 -500 333 -640 481 -640 640 -612 612 -640 480 -640 360 -640 415 -640 426 -481 640 -640 434 -375 500 -452 640 -640 353 -640 480 -500 337 -640 480 -640 426 -480 640 -500 336 -640 401 -640 426 -640 558 -640 425 -640 424 -640 480 -640 428 -425 640 -640 427 -640 427 -640 425 -640 408 -640 427 -500 333 -640 480 -640 540 -640 480 -640 480 -640 480 -640 427 -640 397 -640 390 -640 640 -640 427 -640 395 -640 364 -640 480 -640 426 -500 333 -426 640 -640 480 -640 294 -640 427 -640 498 -640 424 -640 425 -500 375 -640 426 -640 421 -375 500 -364 640 -640 427 -640 428 -640 480 -480 640 -480 640 -640 480 -640 480 -640 429 -640 480 -640 480 -427 640 -640 427 -640 425 -640 428 -331 640 -640 480 -427 640 -640 426 -640 480 -530 640 -500 332 -640 339 -640 428 -500 433 -450 640 -429 640 -640 480 -640 480 -640 480 -640 425 -428 640 -640 427 -558 640 -640 480 -640 480 -640 427 -640 485 -500 375 -640 573 -640 640 -640 440 -500 343 -480 640 -640 480 -500 320 -480 640 -612 612 -640 473 -428 285 -640 427 -640 423 -480 640 -640 427 -640 640 -640 426 -640 375 -640 427 -500 332 -640 480 -640 640 -220 293 -640 537 -480 640 -200 305 -640 427 -640 492 -335 500 -640 353 -640 428 -500 375 -640 480 -640 427 -500 375 -640 428 -640 427 -640 480 -640 480 -640 360 -640 480 -640 480 -640 427 -429 640 -640 438 -640 426 -427 640 -640 480 -500 375 -640 480 -480 640 -640 427 -612 612 -640 410 -480 640 -427 640 -428 640 -640 480 -640 480 -640 480 -480 640 -464 640 -425 640 -640 419 -375 500 -500 375 -640 359 -500 333 -427 640 -640 446 -640 480 -640 353 -428 640 -640 425 -500 500 -480 640 -640 480 -640 478 -640 480 -640 424 -640 360 -480 640 -409 640 -640 427 -426 640 -640 428 -640 424 -640 425 -489 640 -375 500 -640 448 -640 427 -462 640 -640 425 -640 426 -640 480 -426 640 -640 480 -640 480 -640 427 -640 427 -480 640 -427 640 -480 640 -327 482 -427 640 -500 400 -640 396 -500 375 -375 500 -640 427 -640 428 -500 375 -640 427 -333 500 -640 427 -640 426 -640 428 -500 375 -479 640 -503 640 -640 489 -640 480 -640 379 -640 426 -640 480 -640 480 -480 640 -500 334 -640 480 -427 640 -500 375 -480 640 -640 426 -640 436 -640 480 -500 332 -500 375 -640 480 -612 612 -427 640 -500 375 -640 448 -640 480 -640 427 -640 438 -640 594 -640 480 -640 536 -640 427 -480 640 -640 480 -621 640 -640 480 -640 425 -640 464 -640 480 -481 640 -640 427 -480 640 -500 375 -640 427 -640 480 -640 480 -612 612 -640 480 -425 640 -640 427 -500 333 -640 480 -493 640 -448 336 -640 427 -640 480 -500 371 -427 640 -640 480 -640 424 -640 480 -640 427 -640 480 -625 640 -480 640 -640 427 -640 427 -640 425 -500 331 -640 553 -640 388 -640 480 -480 640 -640 426 -480 640 -640 427 -426 640 -480 640 -425 640 -640 427 -480 640 -640 428 -299 500 -640 480 -640 480 -640 424 -512 640 -640 427 -640 428 -478 640 -612 612 -640 456 -480 640 -640 426 -640 427 -640 455 -640 429 -640 430 -640 480 -640 360 -426 640 -640 480 -240 320 -375 500 -426 640 -500 333 -640 373 -640 434 -480 640 -480 640 -640 423 -640 427 -640 427 -500 334 -480 640 -640 478 -640 439 -500 419 -480 640 -640 480 -640 426 -500 375 -640 640 -640 548 -421 640 -640 428 -500 375 -640 427 -640 455 -463 640 -640 480 -500 331 -640 426 -500 333 -640 478 -640 428 -640 480 -480 640 -480 640 -640 480 -640 480 -640 480 -426 640 -640 441 -640 469 -640 480 -640 426 -640 480 -640 426 -640 454 -640 425 -640 480 -640 480 -640 427 -640 480 -640 480 -640 368 -640 480 -640 464 -640 428 -640 480 -640 428 -640 480 -640 480 -640 428 -640 480 -480 640 -480 640 -640 428 -640 428 -612 612 -640 427 -640 480 -500 336 -640 427 -480 640 -500 375 -480 640 -640 480 -400 500 -640 427 -640 474 -453 640 -640 303 -640 480 -640 514 -640 427 -640 568 -480 640 -640 359 -640 457 -640 480 -640 360 -640 427 -640 466 -640 339 -426 640 -640 478 -640 359 -640 427 -640 425 -480 640 -480 640 -640 480 -480 640 -640 482 -640 480 -640 360 -640 531 -640 480 -492 640 -640 483 -640 419 -363 640 -640 478 -640 426 -640 480 -480 640 -640 427 -640 480 -500 375 -640 426 -640 480 -427 640 -640 434 -640 428 -480 640 -640 428 -640 480 -500 375 -640 426 -640 480 -640 424 -357 500 -640 480 -375 500 -640 425 -374 500 -640 480 -640 360 -375 500 -640 427 -640 480 -500 334 -640 480 -640 427 -640 501 -427 640 -640 427 -640 427 -640 480 -640 427 -640 427 -480 640 -640 427 -640 427 -640 427 -640 480 -640 480 -500 333 -640 480 -640 428 -640 480 -640 310 -427 640 -640 512 -361 640 -640 427 -425 640 -417 640 -640 457 -640 424 -640 640 -612 612 -640 426 -480 640 -640 427 -640 424 -640 425 -500 334 -640 480 -480 640 -480 640 -375 500 -500 276 -640 360 -640 480 -640 480 -480 640 -640 480 -640 480 -640 444 -480 640 -640 429 -640 479 -640 400 -640 480 -425 640 -640 427 -480 640 -640 480 -640 425 -640 480 -480 640 -500 375 -446 640 -640 480 -640 374 -375 500 -640 427 -352 288 -371 500 -640 426 -640 427 -640 400 -500 333 -480 640 -640 418 -500 333 -375 500 -500 375 -640 487 -640 427 -474 640 -600 397 -640 480 -640 480 -640 151 -640 480 -640 480 -612 612 -480 320 -500 333 -640 480 -480 640 -549 640 -500 343 -375 500 -640 426 -480 640 -640 427 -476 640 -640 427 -640 426 -640 459 -640 423 -426 640 -640 424 -640 480 -640 429 -640 478 -640 424 -640 428 -480 640 -640 429 -480 640 -480 640 -640 408 -640 480 -640 480 -640 427 -640 425 -640 512 -640 426 -640 478 -612 612 -640 498 -640 480 -640 426 -494 640 -640 480 -480 640 -640 481 -640 508 -640 393 -640 386 -640 480 -480 640 -640 480 -640 458 -640 480 -640 427 -500 375 -500 375 -640 480 -320 240 -640 401 -640 390 -463 640 -640 478 -427 640 -640 480 -500 375 -640 480 -640 428 -480 640 -640 428 -640 424 -640 428 -640 426 -640 480 -640 480 -480 640 -640 480 -480 640 -640 501 -640 424 -640 480 -640 427 -640 426 -375 500 -640 414 -640 468 -640 427 -640 428 -640 480 -640 426 -640 480 -640 480 -398 640 -640 443 -640 425 -612 612 -640 425 -640 480 -375 500 -640 424 -480 298 -346 407 -640 428 -600 441 -500 375 -427 640 -640 425 -640 480 -500 375 -480 640 -480 640 -640 480 -640 426 -640 480 -640 480 -480 640 -500 333 -427 640 -500 356 -640 480 -640 480 -640 427 -426 640 -640 427 -427 640 -640 189 -640 427 -640 427 -640 480 -480 640 -612 612 -640 446 -640 425 -640 425 -480 360 -640 428 -640 428 -640 426 -333 500 -640 425 -500 308 -640 426 -480 640 -612 612 -640 425 -480 640 -640 427 -640 469 -612 612 -612 612 -640 416 -426 640 -500 332 -480 640 -500 338 -375 500 -360 640 -640 427 -640 428 -640 427 -640 428 -640 427 -500 332 -640 426 -640 425 -500 375 -640 427 -640 427 -640 425 -640 480 -427 640 -640 360 -373 496 -640 427 -640 607 -375 500 -640 480 -427 640 -640 480 -640 427 -526 640 -426 640 -333 500 -640 428 -478 500 -425 640 -640 428 -350 325 -640 458 -640 480 -640 427 -640 324 -640 480 -640 426 -640 427 -640 425 -500 320 -426 640 -427 640 -640 427 -640 426 -640 480 -640 477 -480 640 -640 429 -640 480 -640 484 -360 500 -375 500 -640 427 -640 581 -384 500 -640 427 -640 424 -496 640 -640 342 -500 375 -640 480 -427 640 -640 480 -500 332 -640 469 -451 500 -640 426 -500 374 -640 480 -640 360 -640 360 -480 640 -640 418 -427 640 -480 640 -640 480 -640 360 -640 377 -480 640 -640 427 -640 458 -640 424 -640 425 -480 640 -640 480 -640 426 -640 443 -640 480 -575 640 -500 375 -640 640 -640 402 -640 427 -640 480 -612 612 -640 396 -352 288 -480 640 -640 480 -640 431 -640 427 -640 359 -640 427 -640 480 -640 539 -500 333 -545 640 -640 428 -500 375 -640 640 -426 640 -640 624 -500 382 -640 480 -640 427 -640 428 -375 500 -640 359 -640 431 -640 491 -640 426 -500 333 -640 479 -566 640 -640 359 -333 500 -640 640 -640 480 -640 480 -425 640 -612 612 -480 640 -640 480 -640 478 -640 478 -480 640 -640 360 -640 458 -640 428 -500 371 -640 426 -500 375 -640 426 -640 480 -640 428 -640 426 -640 485 -640 426 -426 640 -640 427 -640 426 -375 500 -640 480 -480 640 -640 361 -640 512 -640 480 -426 640 -640 427 -640 640 -640 480 -385 500 -640 480 -640 480 -640 480 -640 480 -640 480 -640 425 -500 473 -500 374 -640 480 -640 426 -500 330 -640 445 -640 480 -640 449 -512 640 -479 640 -640 480 -500 375 -640 480 -640 425 -640 480 -640 427 -480 640 -640 478 -640 480 -500 375 -427 640 -512 640 -640 428 -640 480 -640 424 -457 640 -640 480 -375 500 -427 640 -640 426 -500 375 -640 480 -640 427 -640 480 -500 375 -640 424 -640 426 -640 427 -640 360 -640 408 -424 640 -612 612 -640 426 -640 522 -640 427 -640 425 -640 428 -640 427 -500 375 -640 480 -640 480 -640 480 -640 408 -640 480 -640 480 -640 348 -640 427 -640 480 -640 480 -500 332 -500 332 -383 640 -640 464 -640 426 -640 480 -640 480 -640 480 -640 480 -640 430 -640 426 -640 480 -640 480 -640 427 -427 640 -640 427 -640 360 -344 500 -640 427 -640 512 -640 426 -427 640 -640 360 -640 427 -640 480 -640 383 -640 480 -640 453 -640 428 -297 500 -640 480 -500 640 -640 480 -363 484 -427 640 -500 335 -640 425 -640 424 -480 640 -640 480 -640 586 -612 612 -640 480 -640 427 -640 480 -480 640 -375 500 -500 375 -640 424 -640 480 -640 426 -356 640 -640 427 -640 480 -480 640 -640 480 -480 640 -640 480 -640 480 -424 640 -640 415 -500 375 -478 640 -640 426 -480 640 -640 427 -480 640 -500 344 -640 493 -480 640 -640 582 -640 427 -640 480 -640 426 -500 375 -500 331 -480 640 -500 375 -640 398 -640 480 -640 480 -640 427 -640 508 -640 433 -640 480 -640 425 -640 480 -640 427 -640 554 -500 375 -640 480 -640 515 -338 500 -640 574 -426 640 -427 640 -500 375 -640 425 -640 428 -500 333 -640 425 -500 375 -640 480 -640 427 -578 640 -640 478 -640 480 -640 336 -500 335 -640 360 -333 500 -500 333 -480 640 -640 480 -500 375 -320 213 -640 480 -640 480 -485 640 -640 480 -428 640 -500 333 -427 640 -640 427 -640 480 -640 360 -612 612 -640 424 -640 480 -640 469 -640 480 -640 427 -640 480 -640 640 -335 500 -640 426 -640 480 -640 427 -423 640 -640 427 -640 480 -640 427 -612 612 -640 396 -640 427 -480 640 -640 480 -640 409 -640 427 -640 480 -612 612 -640 480 -640 480 -640 375 -640 459 -480 640 -640 458 -640 480 -427 640 -640 378 -640 480 -640 427 -480 640 -320 500 -640 428 -500 375 -640 543 -640 441 -431 640 -640 399 -640 480 -640 582 -640 431 -640 417 -427 640 -640 427 -640 480 -640 480 -640 480 -640 428 -640 360 -640 426 -640 427 -640 480 -640 459 -480 640 -640 556 -480 640 -640 294 -500 375 -640 308 -640 480 -640 425 -500 310 -332 500 -640 480 -640 480 -480 640 -640 429 -640 480 -500 375 -335 500 -640 310 -640 427 -640 526 -640 427 -640 426 -640 454 -500 375 -640 566 -640 481 -640 480 -226 640 -640 480 -640 360 -500 333 -640 328 -640 425 -480 640 -640 427 -640 480 -640 480 -640 427 -640 480 -640 480 -640 480 -640 640 -640 426 -640 424 -640 480 -640 480 -640 482 -467 640 -640 457 -640 480 -480 640 -640 480 -600 399 -640 364 -640 428 -640 427 -640 428 -500 375 -500 375 -640 453 -640 427 -640 359 -426 640 -640 480 -640 480 -375 500 -640 427 -480 640 -640 480 -640 427 -640 190 -640 482 -640 428 -640 427 -640 428 -425 640 -500 375 -640 360 -640 424 -640 427 -640 456 -640 480 -640 480 -640 480 -640 480 -640 480 -375 500 -640 425 -640 427 -640 438 -640 446 -640 427 -612 612 -475 500 -480 640 -407 640 -640 481 -640 427 -424 640 -640 480 -640 480 -640 480 -426 640 -640 427 -640 480 -640 425 -640 480 -480 640 -640 429 -500 375 -640 480 -612 612 -640 427 -500 375 -500 400 -640 216 -640 480 -640 480 -628 640 -640 453 -427 640 -640 428 -640 427 -612 612 -640 427 -640 480 -480 640 -640 425 -640 480 -612 612 -640 487 -640 425 -640 428 -640 266 -640 361 -640 480 -480 640 -640 428 -640 426 -640 640 -281 640 -640 454 -612 612 -640 478 -640 426 -424 640 -478 640 -480 640 -640 473 -500 375 -375 500 -640 424 -375 500 -612 612 -612 612 -640 480 -640 360 -640 431 -640 480 -640 393 -478 640 -500 301 -375 500 -640 426 -640 427 -640 480 -640 480 -375 500 -640 424 -480 640 -640 480 -640 427 -640 480 -640 427 -426 640 -480 640 -480 640 -640 480 -640 478 -640 426 -478 640 -640 428 -640 427 -480 640 -480 640 -404 640 -543 640 -425 640 -640 360 -640 480 -640 464 -612 612 -500 400 -640 607 -478 640 -640 427 -640 426 -640 479 -640 480 -640 480 -640 480 -640 428 -640 425 -640 359 -640 426 -640 359 -640 359 -640 462 -480 640 -640 640 -640 425 -640 400 -640 480 -640 428 -640 480 -640 478 -640 426 -480 640 -640 480 -640 576 -375 500 -426 640 -640 509 -427 640 -640 480 -640 480 -640 427 -500 375 -480 640 -640 406 -640 427 -593 640 -427 640 -612 612 -640 426 -375 500 -640 480 -512 640 -612 640 -640 316 -500 375 -640 427 -427 640 -500 333 -333 500 -500 375 -640 413 -375 500 -480 640 -640 480 -568 320 -500 375 -640 480 -640 421 -640 480 -427 640 -500 375 -427 640 -428 640 -320 240 -500 368 -640 480 -480 640 -640 428 -425 640 -640 480 -640 480 -640 640 -427 640 -640 480 -640 480 -640 427 -640 427 -480 640 -640 480 -480 640 -500 375 -640 480 -640 427 -570 640 -612 612 -640 513 -640 480 -640 480 -640 427 -640 480 -640 427 -640 360 -640 427 -640 426 -640 480 -640 422 -640 425 -612 612 -457 640 -500 334 -640 512 -640 338 -640 425 -480 640 -640 480 -640 476 -480 640 -612 612 -640 480 -640 319 -500 333 -360 302 -640 482 -427 640 -640 427 -640 426 -482 640 -480 640 -427 640 -428 640 -640 427 -640 428 -401 640 -640 398 -640 512 -640 458 -426 640 -640 501 -640 427 -357 500 -450 640 -480 640 -640 481 -264 400 -640 480 -640 480 -375 500 -640 429 -640 360 -640 427 -640 427 -640 480 -479 640 -640 425 -640 427 -640 480 -640 480 -640 427 -480 640 -426 640 -500 313 -500 375 -640 640 -640 429 -640 480 -500 333 -457 640 -352 500 -640 480 -640 480 -640 427 -400 500 -640 480 -500 375 -480 640 -480 640 -378 640 -209 500 -640 480 -640 427 -640 480 -640 480 -640 480 -640 480 -640 433 -640 428 -426 640 -640 480 -640 457 -640 422 -640 475 -640 480 -640 427 -640 512 -640 427 -640 480 -640 429 -640 429 -640 427 -640 480 -640 480 -426 640 -640 428 -640 413 -640 480 -640 480 -640 427 -427 640 -640 426 -640 632 -640 427 -640 359 -480 640 -640 426 -640 427 -500 333 -640 427 -640 510 -640 479 -640 428 -500 333 -480 640 -612 612 -640 427 -640 433 -640 424 -500 333 -640 427 -640 426 -640 457 -640 427 -426 640 -500 375 -640 480 -640 480 -640 435 -640 480 -640 360 -478 640 -640 427 -640 480 -612 612 -426 640 -640 426 -640 425 -640 427 -480 640 -640 361 -640 480 -640 426 -640 453 -640 480 -480 640 -640 480 -480 640 -480 640 -425 640 -640 428 -640 427 -640 425 -640 428 -500 318 -640 399 -500 375 -631 640 -640 427 -640 480 -480 640 -480 640 -640 480 -427 640 -640 480 -640 451 -640 480 -500 375 -512 640 -640 480 -500 500 -640 448 -480 640 -640 383 -480 640 -500 414 -640 480 -500 375 -640 427 -500 375 -425 640 -640 510 -500 421 -640 427 -640 480 -480 640 -480 640 -400 500 -640 427 -640 426 -640 427 -500 375 -640 428 -438 640 -500 333 -640 428 -640 480 -480 640 -375 500 -640 480 -480 640 -640 429 -640 480 -640 429 -640 480 -640 480 -640 427 -480 640 -640 480 -640 618 -421 640 -640 383 -600 450 -528 360 -640 427 -640 480 -640 425 -427 640 -427 640 -640 428 -640 480 -640 481 -439 640 -640 427 -427 640 -480 640 -457 640 -640 342 -480 640 -640 427 -500 375 -480 640 -640 426 -640 424 -640 427 -510 640 -281 500 -640 481 -640 480 -375 500 -640 480 -640 383 -640 480 -612 612 -425 640 -640 480 -640 427 -640 425 -500 347 -640 427 -500 375 -640 480 -640 427 -483 640 -640 480 -640 480 -640 425 -640 480 -500 379 -480 640 -640 466 -640 483 -640 480 -640 640 -640 640 -640 480 -324 640 -640 422 -640 427 -550 400 -640 480 -640 416 -640 480 -640 520 -640 426 -500 332 -428 640 -640 480 -640 424 -640 427 -640 480 -640 480 -640 480 -640 427 -640 480 -640 462 -640 427 -427 640 -640 427 -500 400 -500 332 -640 357 -640 427 -640 480 -640 427 -640 424 -640 440 -500 375 -640 428 -640 480 -640 378 -640 411 -640 480 -640 480 -640 427 -640 411 -640 480 -640 480 -640 459 -640 480 -640 480 -480 640 -640 480 -640 480 -640 427 -640 480 -640 426 -640 480 -427 640 -640 427 -427 640 -640 512 -379 640 -640 480 -640 428 -427 640 -427 640 -640 430 -436 640 -640 427 -500 375 -640 480 -500 375 -640 480 -640 480 -500 333 -640 424 -640 427 -500 375 -640 426 -640 381 -640 480 -640 406 -333 500 -640 480 -500 333 -418 640 -425 640 -640 360 -640 425 -640 640 -640 480 -640 427 -500 175 -640 427 -640 423 -640 480 -640 400 -640 224 -640 400 -640 474 -480 640 -640 389 -640 392 -640 433 -500 375 -640 480 -640 429 -432 640 -640 480 -640 428 -500 333 -640 427 -640 480 -480 640 -640 480 -424 640 -640 480 -640 442 -500 375 -640 480 -640 427 -500 334 -480 640 -500 354 -612 612 -333 500 -640 427 -640 554 -480 640 -640 479 -640 480 -427 640 -640 480 -461 640 -640 427 -640 513 -640 458 -640 480 -480 640 -375 500 -640 517 -640 480 -480 640 -640 426 -427 640 -640 480 -500 375 -640 509 -640 480 -640 477 -426 640 -640 427 -640 482 -640 427 -500 333 -424 640 -640 480 -640 480 -480 640 -640 480 -361 640 -426 640 -640 427 -640 427 -640 480 -500 499 -640 544 -640 640 -640 478 -612 612 -400 500 -640 480 -640 421 -640 480 -640 426 -640 337 -640 427 -640 429 -500 334 -640 484 -640 480 -425 640 -411 640 -480 640 -640 428 -640 427 -640 460 -640 427 -446 500 -370 500 -500 375 -500 377 -480 640 -640 429 -640 458 -640 480 -480 640 -640 371 -640 480 -480 640 -500 375 -640 426 -640 640 -640 512 -640 480 -640 424 -640 428 -480 640 -500 375 -640 480 -500 375 -444 500 -454 640 -500 375 -640 360 -640 480 -500 375 -640 480 -640 640 -640 322 -640 426 -640 479 -220 155 -375 500 -640 457 -640 427 -640 480 -640 427 -500 375 -640 640 -479 640 -640 428 -428 640 -640 434 -375 500 -640 480 -640 399 -616 640 -640 480 -480 640 -640 640 -427 640 -640 427 -480 640 -640 427 -640 480 -640 625 -500 375 -640 425 -640 426 -640 432 -640 480 -640 427 -509 640 -546 640 -640 428 -640 480 -640 426 -640 428 -640 426 -640 470 -640 480 -640 495 -640 338 -640 428 -500 326 -480 640 -427 640 -480 640 -640 363 -640 439 -375 500 -640 544 -500 375 -424 640 -511 640 -640 427 -427 640 -640 427 -640 478 -640 397 -640 480 -478 640 -480 640 -480 360 -500 333 -640 427 -425 640 -427 640 -511 640 -640 480 -375 500 -640 480 -478 640 -640 427 -640 427 -427 640 -640 480 -375 500 -480 640 -640 427 -640 455 -640 426 -640 427 -599 640 -480 640 -640 312 -640 427 -640 427 -427 640 -427 640 -604 453 -640 427 -640 480 -427 640 -500 375 -640 427 -500 335 -427 640 -500 333 -640 427 -640 426 -500 375 -640 463 -427 640 -640 428 -640 429 -640 427 -640 426 -640 426 -640 480 -640 480 -385 640 -640 439 -640 480 -500 375 -640 480 -427 640 -640 480 -640 435 -493 640 -640 480 -640 480 -640 480 -640 427 -640 427 -467 640 -640 426 -384 576 -500 375 -640 480 -640 453 -640 239 -600 387 -640 426 -482 640 -640 426 -640 428 -640 480 -640 427 -640 427 -500 375 -546 640 -480 640 -640 480 -426 640 -640 480 -640 480 -640 427 -640 480 -640 428 -543 640 -640 480 -500 375 -640 480 -640 423 -640 480 -640 626 -640 428 -480 640 -640 480 -640 425 -640 429 -479 640 -427 640 -480 640 -640 426 -563 640 -640 480 -333 500 -480 640 -640 427 -526 640 -640 424 -640 640 -640 480 -429 640 -500 309 -640 427 -640 427 -640 151 -640 428 -640 480 -640 480 -640 427 -640 351 -640 424 -640 426 -483 640 -640 360 -500 356 -640 480 -640 360 -640 427 -500 333 -640 424 -640 427 -640 480 -640 432 -640 480 -612 612 -640 413 -640 427 -640 480 -640 427 -427 640 -640 427 -640 427 -640 480 -375 500 -424 640 -640 425 -640 425 -640 480 -480 640 -500 383 -640 480 -640 480 -429 640 -480 640 -500 375 -640 480 -500 360 -640 479 -640 427 -480 640 -640 429 -375 500 -500 375 -640 400 -640 480 -640 478 -640 455 -640 427 -489 640 -640 343 -640 480 -332 500 -640 640 -640 427 -480 640 -640 480 -480 640 -640 427 -640 480 -500 375 -427 640 -640 428 -640 568 -640 426 -640 425 -640 480 -612 612 -640 512 -640 425 -480 640 -640 480 -640 425 -640 427 -640 427 -500 375 -640 480 -640 446 -640 548 -640 480 -317 500 -640 426 -640 529 -640 426 -640 429 -640 475 -556 640 -458 640 -640 480 -338 500 -640 480 -640 427 -500 500 -640 427 -333 500 -426 640 -640 640 -500 375 -480 640 -640 640 -640 427 -640 438 -640 640 -640 538 -640 425 -640 480 -375 500 -640 426 -640 427 -640 476 -640 400 -640 480 -480 640 -640 427 -425 640 -640 428 -640 390 -640 450 -640 426 -640 480 -500 375 -640 429 -640 429 -500 375 -640 427 -640 480 -500 500 -640 482 -640 428 -640 444 -640 480 -428 640 -480 640 -640 501 -640 480 -640 351 -640 480 -480 640 -429 640 -612 612 -640 480 -640 426 -640 480 -640 427 -640 480 -640 428 -500 375 -640 480 -640 480 -640 425 -413 640 -640 478 -500 500 -640 480 -640 481 -577 640 -480 640 -500 500 -640 480 -640 640 -640 480 -640 454 -640 363 -640 480 -640 368 -640 480 -640 480 -640 479 -640 409 -640 480 -426 640 -480 640 -640 425 -480 640 -427 640 -640 476 -640 425 -477 323 -480 640 -480 640 -640 480 -640 480 -640 480 -640 479 -640 425 -480 640 -640 480 -640 427 -640 426 -640 480 -640 480 -428 640 -640 480 -640 427 -640 480 -640 432 -426 640 -424 640 -500 375 -184 200 -640 425 -640 480 -640 480 -640 427 -640 426 -480 360 -640 480 -640 480 -640 480 -640 449 -426 640 -640 427 -640 480 -640 480 -640 400 -640 427 -425 640 -640 427 -640 480 -640 480 -640 426 -333 500 -640 428 -640 480 -428 640 -500 375 -480 640 -612 612 -450 338 -480 640 -640 425 -640 411 -457 640 -640 480 -640 427 -640 424 -480 640 -500 375 -426 640 -427 640 -480 640 -640 480 -480 640 -640 439 -640 480 -640 427 -425 640 -640 390 -640 640 -428 640 -640 480 -640 478 -375 500 -600 450 -640 480 -500 422 -640 480 -640 480 -640 431 -640 480 -473 640 -529 640 -640 427 -640 480 -550 400 -640 480 -612 612 -500 375 -426 640 -380 640 -375 500 -640 480 -640 429 -640 427 -640 427 -500 376 -383 640 -640 426 -640 480 -640 480 -427 640 -640 480 -500 375 -612 612 -640 480 -480 640 -640 416 -640 480 -480 640 -640 427 -500 400 -640 480 -640 427 -500 375 -640 640 -500 375 -623 640 -375 500 -640 359 -480 640 -640 480 -480 640 -480 640 -640 427 -640 428 -640 640 -640 512 -375 500 -640 480 -640 426 -640 428 -480 360 -489 640 -500 333 -480 640 -640 428 -375 500 -442 330 -640 428 -640 480 -612 612 -360 640 -500 375 -640 497 -640 427 -640 359 -640 427 -500 375 -640 512 -320 238 -425 640 -640 480 -640 480 -640 426 -640 427 -640 444 -612 612 -375 500 -478 640 -640 555 -640 426 -480 640 -640 480 -640 480 -640 426 -640 480 -640 426 -640 427 -640 426 -640 419 -640 427 -480 640 -427 640 -640 480 -640 480 -640 427 -640 480 -640 427 -480 640 -640 480 -640 360 -480 640 -500 375 -504 379 -473 500 -500 375 -480 640 -640 427 -427 640 -640 427 -448 296 -640 424 -640 480 -640 427 -640 384 -640 425 -640 424 -639 640 -640 426 -640 427 -640 480 -294 500 -640 427 -640 427 -640 457 -426 640 -640 512 -640 480 -640 480 -640 467 -640 423 -500 232 -640 480 -361 640 -433 640 -640 427 -446 640 -640 427 -640 480 -640 427 -640 480 -640 480 -612 612 -435 640 -640 478 -426 640 -640 425 -640 424 -640 427 -640 480 -640 426 -640 446 -640 480 -640 428 -352 500 -480 640 -500 375 -406 640 -640 480 -456 640 -640 427 -640 427 -480 640 -640 480 -640 480 -640 480 -640 480 -640 427 -640 359 -480 640 -640 465 -362 640 -640 480 -640 426 -640 640 -640 426 -640 480 -426 640 -640 480 -640 424 -480 640 -640 480 -640 480 -453 640 -534 640 -427 640 -381 640 -640 427 -640 478 -640 574 -427 640 -500 406 -640 154 -481 640 -612 612 -640 361 -640 480 -640 426 -640 353 -480 640 -640 480 -640 428 -640 480 -640 427 -480 640 -640 480 -640 419 -640 481 -640 427 -500 375 -500 375 -612 612 -640 426 -640 480 -480 640 -374 500 -640 454 -457 640 -640 451 -640 480 -640 427 -640 480 -640 380 -413 640 -320 240 -640 427 -640 424 -500 333 -600 410 -333 500 -480 640 -640 427 -640 480 -640 405 -640 427 -640 480 -427 640 -640 480 -640 428 -480 640 -640 478 -640 441 -480 640 -640 480 -429 640 -640 427 -500 500 -640 427 -450 640 -426 640 -640 273 -640 430 -640 503 -612 612 -640 428 -640 428 -640 427 -640 427 -640 480 -640 453 -640 640 -640 480 -480 640 -640 480 -640 480 -640 424 -426 640 -640 499 -640 480 -640 427 -640 485 -640 428 -640 480 -640 480 -640 427 -640 480 -480 480 -424 640 -640 480 -480 640 -500 400 -640 425 -500 333 -640 427 -640 480 -640 427 -640 435 -480 640 -500 333 -500 375 -612 612 -640 427 -640 480 -640 419 -500 333 -640 480 -640 427 -640 603 -640 427 -640 429 -640 405 -640 427 -640 427 -640 480 -500 400 -480 640 -500 333 -640 425 -640 435 -333 500 -640 426 -640 476 -480 640 -640 427 -634 401 -425 640 -640 427 -481 640 -640 480 -375 500 -640 427 -640 421 -640 425 -640 426 -640 426 -640 480 -640 480 -640 427 -419 640 -500 333 -640 480 -500 333 -640 480 -480 464 -640 427 -480 640 -640 539 -640 426 -640 480 -640 425 -500 332 -427 640 -429 640 -640 429 -640 424 -640 427 -640 480 -500 375 -640 429 -640 426 -427 640 -500 374 -640 426 -480 640 -375 500 -640 480 -375 500 -480 640 -389 640 -640 425 -427 640 -612 612 -640 480 -640 427 -640 480 -640 427 -640 340 -612 612 -640 427 -640 429 -640 451 -640 481 -640 512 -500 497 -480 640 -640 472 -640 480 -640 480 -640 480 -640 427 -640 480 -640 458 -640 425 -640 427 -640 444 -640 480 -425 640 -640 440 -640 425 -640 480 -478 640 -640 360 -640 480 -640 480 -640 640 -426 640 -640 427 -640 457 -427 640 -640 480 -640 480 -480 640 -640 480 -480 640 -480 640 -480 640 -640 426 -640 426 -640 480 -500 332 -500 375 -500 334 -640 463 -480 640 -640 425 -482 640 -501 640 -640 403 -640 433 -640 457 -640 427 -640 427 -640 480 -500 373 -640 488 -640 478 -640 480 -640 480 -454 640 -328 500 -640 494 -640 480 -640 426 -640 441 -640 427 -428 640 -478 640 -640 471 -480 640 -425 640 -640 426 -640 425 -640 480 -640 360 -375 500 -640 480 -640 480 -640 640 -640 512 -427 640 -640 427 -640 640 -500 375 -600 600 -640 426 -640 449 -478 640 -640 427 -480 640 -375 500 -480 640 -640 480 -640 426 -640 480 -640 480 -612 612 -640 480 -542 640 -425 640 -537 640 -500 375 -640 426 -640 427 -389 500 -640 359 -640 426 -640 425 -640 427 -640 424 -500 375 -640 402 -640 480 -306 640 -640 426 -640 424 -533 640 -640 423 -640 427 -640 480 -640 427 -640 427 -427 640 -640 428 -500 415 -640 427 -500 437 -640 428 -360 500 -640 480 -612 612 -480 640 -640 425 -640 427 -612 612 -426 640 -452 500 -640 503 -424 640 -612 612 -640 480 -500 333 -640 426 -414 640 -640 414 -640 396 -640 480 -640 480 -640 480 -640 480 -640 604 -640 427 -500 362 -640 426 -640 480 -333 500 -427 640 -480 640 -640 414 -640 480 -640 424 -640 427 -640 427 -640 480 -640 400 -640 640 -612 612 -612 612 -422 640 -426 640 -640 426 -500 375 -640 425 -640 428 -640 416 -640 480 -640 480 -427 640 -640 480 -640 640 -640 427 -640 364 -640 427 -431 500 -480 640 -640 480 -427 640 -640 462 -640 518 -427 640 -640 479 -640 426 -640 480 -640 486 -640 427 -640 360 -640 426 -612 612 -640 480 -640 427 -640 480 -640 427 -640 281 -640 353 -640 480 -640 640 -640 427 -640 480 -426 640 -523 640 -640 640 -640 427 -426 640 -640 428 -640 480 -640 427 -640 448 -640 427 -640 427 -640 444 -500 375 -480 640 -480 640 -640 425 -640 480 -427 640 -410 500 -429 640 -640 427 -640 640 -333 500 -640 433 -640 480 -640 424 -427 640 -640 426 -640 480 -640 425 -500 334 -640 480 -640 427 -500 400 -640 480 -640 427 -640 480 -640 426 -640 427 -640 427 -640 524 -640 426 -500 375 -640 610 -640 425 -427 640 -426 640 -640 553 -427 640 -640 425 -640 480 -427 640 -640 427 -640 427 -640 427 -640 359 -500 209 -640 480 -403 640 -612 612 -631 640 -640 426 -426 640 -640 394 -428 640 -425 640 -640 480 -640 476 -375 500 -640 479 -480 640 -612 612 -640 509 -500 335 -480 640 -640 427 -640 425 -640 457 -480 640 -640 480 -500 337 -640 635 -640 480 -640 427 -640 480 -640 427 -640 640 -640 640 -640 480 -421 640 -640 427 -480 640 -612 612 -640 480 -640 426 -426 640 -640 478 -640 339 -640 480 -500 377 -640 425 -612 612 -427 640 -640 427 -640 428 -640 481 -640 480 -500 467 -640 426 -478 640 -478 640 -640 426 -329 500 -640 468 -428 640 -480 640 -640 427 -640 360 -427 640 -500 333 -480 640 -640 556 -500 375 -640 480 -640 427 -500 332 -500 400 -427 640 -640 427 -612 612 -640 480 -500 334 -640 451 -640 425 -640 426 -427 640 -640 406 -480 640 -640 480 -640 503 -640 480 -640 480 -640 429 -500 375 -427 640 -640 480 -640 426 -612 612 -640 426 -640 480 -500 375 -640 429 -640 360 -480 640 -640 480 -640 428 -640 480 -500 375 -640 480 -640 424 -500 375 -640 424 -640 427 -480 640 -640 480 -640 427 -500 375 -640 480 -640 480 -640 480 -640 480 -640 480 -640 435 -480 640 -640 428 -640 480 -640 478 -640 427 -640 480 -500 336 -640 480 -640 480 -640 480 -640 428 -500 375 -489 640 -640 426 -500 375 -640 480 -640 428 -640 427 -248 640 -640 480 -640 427 -640 322 -640 512 -640 480 -426 640 -640 425 -640 480 -640 427 -640 449 -640 509 -640 480 -640 480 -519 640 -480 640 -427 640 -640 457 -640 480 -640 480 -500 375 -425 640 -640 457 -640 426 -426 640 -480 640 -640 425 -640 427 -334 500 -500 375 -640 471 -500 375 -640 480 -500 305 -436 640 -640 428 -640 480 -640 426 -640 480 -640 426 -640 480 -427 640 -612 612 -502 640 -480 640 -640 480 -480 640 -640 478 -640 420 -640 458 -500 375 -478 640 -427 640 -640 427 -640 427 -640 458 -640 566 -640 555 -640 480 -640 480 -640 416 -640 404 -603 452 -480 640 -640 361 -640 396 -640 480 -640 479 -640 480 -425 640 -640 427 -500 390 -640 640 -640 480 -318 480 -640 360 -500 375 -512 640 -427 640 -480 640 -480 640 -640 480 -640 427 -478 640 -640 478 -640 640 -640 423 -640 480 -318 640 -640 480 -640 421 -640 480 -640 427 -640 480 -480 640 -500 283 -425 640 -320 240 -640 450 -640 480 -640 426 -480 640 -640 427 -640 427 -640 496 -640 426 -640 426 -640 480 -640 427 -640 499 -640 427 -425 640 -428 640 -640 480 -356 500 -640 427 -640 480 -640 479 -640 439 -640 360 -640 480 -500 500 -640 423 -640 479 -640 427 -640 439 -640 480 -640 427 -640 427 -640 457 -640 428 -640 320 -500 375 -640 480 -426 640 -640 480 -424 640 -480 640 -640 480 -640 480 -640 480 -640 427 -640 480 -640 640 -427 640 -500 375 -640 426 -640 427 -640 480 -640 383 -640 427 -640 427 -640 129 -640 480 -640 427 -640 427 -640 299 -640 437 -640 480 -640 428 -640 476 -332 500 -640 476 -500 335 -300 225 -640 359 -500 375 -640 427 -640 427 -640 480 -640 426 -640 428 -331 640 -427 640 -355 500 -640 406 -500 375 -640 480 -480 640 -640 425 -640 480 -500 375 -427 640 -612 612 -480 640 -480 640 -640 480 -500 375 -640 423 -425 640 -640 480 -500 337 -640 480 -612 612 -640 426 -500 375 -480 640 -640 480 -500 333 -640 480 -500 375 -500 375 -640 480 -640 480 -640 426 -500 377 -640 426 -640 480 -500 333 -640 480 -428 640 -640 637 -289 640 -500 375 -640 569 -640 427 -640 362 -640 540 -640 429 -640 402 -640 480 -480 640 -640 427 -425 640 -640 400 -640 640 -640 449 -375 500 -427 640 -353 500 -640 427 -640 640 -424 640 -640 480 -500 450 -640 501 -640 505 -640 480 -640 427 -640 427 -640 480 -500 286 -427 640 -640 404 -640 480 -375 500 -375 500 -640 249 -640 430 -640 488 -640 434 -640 480 -640 480 -640 480 -640 480 -640 480 -640 438 -640 481 -640 214 -640 427 -640 427 -612 612 -640 480 -640 480 -640 480 -640 424 -348 640 -500 338 -360 640 -640 480 -640 480 -479 640 -640 480 -640 384 -640 498 -640 478 -640 480 -424 640 -640 499 -375 500 -375 500 -640 424 -333 500 -640 553 -640 397 -640 480 -583 640 -424 640 -640 480 -640 427 -640 480 -640 360 -612 612 -640 480 -612 612 -500 333 -640 425 -640 480 -640 363 -640 480 -640 480 -640 404 -640 480 -500 335 -640 427 -640 362 -640 427 -427 640 -478 640 -500 291 -476 640 -424 640 -425 640 -500 333 -640 488 -640 501 -480 640 -640 480 -640 480 -640 480 -335 500 -640 480 -382 640 -640 358 -640 373 -640 427 -640 480 -640 481 -640 480 -640 424 -500 335 -640 480 -462 640 -480 640 -640 480 -480 640 -500 333 -480 640 -640 527 -480 640 -427 640 -640 480 -640 426 -375 500 -640 425 -640 427 -640 480 -640 640 -640 480 -640 427 -333 500 -480 640 -640 480 -640 480 -640 427 -640 428 -457 640 -492 640 -640 483 -347 500 -640 449 -480 640 -640 428 -500 375 -640 436 -640 427 -640 383 -640 426 -640 426 -640 458 -640 426 -640 429 -640 427 -640 640 -640 478 -640 428 -640 600 -383 640 -640 480 -480 640 -500 436 -640 480 -612 612 -640 480 -500 375 -640 427 -640 425 -640 428 -500 375 -640 480 -640 427 -640 480 -640 480 -640 427 -485 640 -500 333 -500 333 -640 480 -612 612 -640 610 -640 427 -480 640 -428 640 -640 480 -640 480 -640 480 -333 500 -640 426 -640 427 -640 435 -640 427 -500 313 -640 480 -640 427 -537 640 -640 427 -640 480 -640 317 -426 640 -480 640 -354 400 -640 353 -640 480 -640 427 -270 640 -640 480 -640 480 -640 480 -500 333 -640 428 -640 480 -640 457 -640 480 -640 360 -500 375 -500 385 -640 480 -640 480 -428 640 -480 640 -333 500 -510 640 -640 359 -480 640 -640 448 -640 359 -640 480 -640 427 -640 480 -640 480 -640 427 -640 428 -640 480 -640 426 -480 640 -640 427 -640 428 -640 480 -640 480 -640 424 -463 640 -640 480 -427 640 -640 478 -410 640 -334 500 -640 428 -480 640 -640 426 -640 640 -480 640 -396 640 -640 480 -640 427 -640 480 -500 334 -640 429 -500 301 -640 478 -640 478 -500 375 -640 427 -640 480 -336 448 -514 640 -640 480 -480 640 -640 415 -478 640 -640 426 -480 640 -640 480 -640 480 -640 480 -426 640 -428 640 -427 640 -640 451 -640 466 -480 360 -488 640 -640 360 -426 640 -640 396 -640 480 -523 640 -640 480 -500 375 -640 427 -426 640 -640 480 -500 334 -640 480 -500 375 -640 480 -640 480 -331 500 -640 468 -640 427 -640 480 -640 427 -640 427 -640 427 -441 640 -640 480 -640 419 -500 375 -640 536 -442 640 -640 480 -612 612 -640 427 -500 375 -640 480 -500 333 -640 480 -375 500 -500 332 -640 427 -640 427 -640 427 -480 640 -480 636 -426 640 -640 426 -640 480 -427 640 -406 640 -640 427 -640 480 -640 427 -478 640 -640 427 -500 500 -462 640 -519 640 -640 383 -640 444 -500 333 -514 640 -640 424 -360 221 -480 640 -450 338 -518 640 -477 640 -640 427 -640 480 -640 480 -612 612 -640 427 -640 480 -500 375 -640 427 -640 480 -640 436 -640 480 -428 640 -427 640 -427 640 -640 427 -480 640 -640 368 -640 428 -640 480 -640 327 -640 640 -500 371 -640 480 -640 427 -500 375 -640 529 -640 427 -640 427 -640 479 -640 425 -640 427 -427 640 -640 640 -480 640 -640 480 -427 640 -500 375 -640 480 -640 426 -640 480 -640 424 -640 428 -478 640 -640 480 -428 640 -640 427 -640 480 -427 640 -640 399 -640 427 -428 640 -640 544 -640 480 -640 427 -640 480 -640 480 -640 535 -640 426 -500 375 -500 375 -640 427 -640 480 -640 425 -500 375 -536 640 -640 427 -500 333 -480 640 -640 491 -640 427 -640 429 -640 333 -640 480 -500 375 -640 480 -640 359 -640 420 -640 360 -640 480 -500 349 -640 427 -375 500 -640 146 -640 426 -640 480 -640 480 -500 367 -640 480 -480 640 -640 426 -640 480 -640 425 -640 425 -640 426 -640 419 -425 640 -427 640 -640 426 -640 480 -640 427 -640 480 -640 424 -339 500 -640 428 -640 480 -640 480 -640 483 -640 328 -600 401 -500 375 -500 375 -300 225 -640 480 -640 427 -500 375 -612 612 -640 480 -640 480 -640 426 -640 640 -640 480 -640 428 -500 375 -640 640 -640 465 -640 640 -640 427 -500 375 -640 473 -500 378 -640 481 -640 424 -640 480 -612 612 -425 640 -427 640 -640 480 -640 427 -640 480 -375 500 -640 512 -640 427 -426 640 -640 425 -428 640 -400 500 -383 640 -640 427 -500 374 -500 373 -500 365 -640 480 -600 399 -640 480 -640 426 -640 360 -640 427 -500 375 -640 425 -640 427 -640 640 -640 480 -640 426 -640 406 -640 408 -480 640 -425 640 -640 480 -640 480 -427 640 -500 350 -480 640 -640 427 -480 640 -428 640 -640 360 -640 341 -640 425 -640 523 -640 480 -427 640 -640 427 -425 640 -640 425 -500 333 -640 425 -500 333 -640 461 -500 375 -640 427 -512 640 -640 426 -635 591 -640 433 -640 427 -640 480 -427 640 -640 446 -640 480 -640 427 -640 360 -640 425 -420 640 -429 640 -624 624 -500 375 -640 480 -640 480 -570 640 -640 640 -640 427 -640 441 -425 640 -375 500 -640 366 -480 640 -640 403 -360 640 -640 381 -640 360 -640 480 -640 480 -640 427 -640 480 -640 433 -640 480 -425 640 -439 640 -480 640 -488 640 -500 375 -640 480 -640 466 -427 640 -640 302 -640 480 -640 480 -640 351 -640 480 -640 480 -333 500 -640 427 -299 409 -640 480 -500 333 -500 375 -640 473 -426 640 -640 425 -640 428 -640 427 -640 427 -426 640 -640 477 -640 480 -339 500 -640 449 -426 640 -612 612 -480 640 -640 478 -612 612 -640 426 -613 640 -640 480 -640 480 -640 361 -640 383 -640 410 -640 480 -640 427 -640 563 -425 640 -640 480 -640 480 -480 640 -640 480 -500 348 -640 427 -500 376 -640 488 -640 480 -480 640 -640 427 -640 427 -350 263 -640 428 -640 367 -500 332 -640 428 -480 640 -480 640 -640 480 -640 425 -640 480 -480 640 -500 375 -359 640 -640 480 -500 375 -640 567 -640 360 -500 375 -640 477 -426 640 -640 480 -640 427 -640 425 -500 392 -640 480 -640 482 -640 500 -640 480 -333 500 -640 427 -500 357 -640 424 -640 426 -480 640 -640 480 -640 426 -640 450 -640 360 -480 640 -480 640 -640 427 -640 393 -640 448 -640 480 -640 480 -480 640 -640 480 -427 640 -640 424 -640 557 -640 360 -640 480 -640 405 -640 480 -640 481 -500 495 -640 428 -640 428 -450 338 -640 408 -640 470 -640 480 -425 640 -640 480 -640 428 -640 480 -480 640 -500 334 -500 375 -640 488 -612 612 -640 379 -640 427 -640 480 -640 613 -489 640 -500 500 -480 640 -640 419 -476 640 -367 640 -640 480 -425 640 -640 427 -640 427 -640 480 -640 427 -640 426 -640 389 -500 332 -640 405 -640 480 -640 480 -500 377 -640 493 -640 480 -640 397 -480 640 -640 427 -640 426 -480 640 -640 360 -622 640 -640 426 -640 427 -640 427 -640 426 -544 640 -640 480 -640 427 -500 377 -640 427 -640 640 -640 480 -640 427 -640 480 -640 464 -612 612 -640 480 -640 522 -640 426 -640 427 -425 640 -500 375 -480 640 -640 377 -640 522 -568 320 -423 640 -500 375 -424 283 -428 640 -425 640 -640 479 -640 480 -640 420 -640 428 -640 480 -480 640 -612 612 -500 333 -640 640 -511 640 -640 429 -640 427 -640 640 -640 425 -640 360 -640 480 -630 640 -640 480 -640 428 -500 375 -640 431 -640 426 -612 612 -568 320 -427 640 -640 426 -640 426 -640 569 -339 500 -480 640 -640 480 -427 640 -640 426 -435 640 -640 536 -640 391 -640 480 -427 640 -640 480 -640 640 -640 427 -480 640 -640 490 -640 613 -640 427 -640 480 -640 427 -640 410 -640 428 -640 428 -640 444 -640 429 -640 480 -500 374 -640 426 -480 640 -640 427 -640 359 -427 640 -640 480 -640 427 -640 473 -500 375 -640 360 -500 375 -474 640 -427 640 -480 640 -640 480 -640 480 -640 480 -405 640 -640 428 -640 360 -414 640 -640 425 -640 269 -640 480 -640 480 -640 426 -640 480 -640 426 -640 400 -640 480 -640 480 -427 640 -640 480 -640 480 -640 480 -640 494 -640 411 -640 480 -375 500 -640 480 -640 461 -640 429 -640 480 -500 500 -500 333 -500 375 -640 427 -640 480 -640 480 -640 421 -640 426 -428 640 -640 481 -640 426 -640 480 -640 427 -627 640 -428 640 -640 414 -640 638 -500 375 -428 640 -161 240 -374 500 -480 640 -640 486 -500 375 -480 640 -640 141 -480 640 -640 424 -612 612 -500 333 -480 640 -428 640 -501 640 -480 640 -640 431 -500 334 -640 426 -640 427 -500 500 -640 480 -640 426 -447 640 -500 375 -640 478 -640 573 -640 427 -640 480 -640 419 -500 375 -640 480 -640 480 -543 640 -612 612 -640 480 -500 334 -500 334 -640 427 -640 427 -640 590 -612 612 -480 360 -640 541 -640 495 -640 480 -480 640 -640 425 -500 375 -640 427 -640 428 -640 480 -633 640 -376 500 -478 640 -640 425 -640 480 -640 480 -640 426 -375 500 -640 427 -640 427 -480 640 -375 500 -640 443 -640 425 -640 640 -375 500 -640 521 -640 521 -500 375 -500 375 -640 406 -640 427 -640 427 -640 429 -640 480 -640 480 -427 640 -640 429 -480 640 -640 428 -640 393 -640 480 -640 606 -612 612 -480 640 -500 333 -480 640 -480 640 -334 500 -640 427 -480 640 -640 427 -640 401 -426 640 -500 332 -640 428 -640 480 -500 327 -640 480 -640 480 -612 612 -375 500 -640 427 -640 426 -640 480 -427 640 -640 427 -640 427 -640 480 -640 518 -640 480 -500 464 -375 500 -640 480 -640 480 -500 500 -564 640 -500 375 -427 640 -427 640 -640 427 -640 480 -640 376 -640 480 -640 480 -500 375 -500 336 -640 433 -640 480 -640 425 -425 640 -640 480 -427 640 -640 480 -640 480 -640 359 -640 480 -480 640 -612 612 -640 427 -640 427 -640 480 -640 426 -640 425 -640 480 -640 480 -382 640 -640 427 -640 480 -375 500 -640 480 -640 411 -350 500 -640 640 -640 426 -640 429 -426 640 -640 480 -640 425 -640 480 -500 269 -640 412 -640 427 -640 427 -493 500 -640 428 -640 480 -640 427 -500 461 -640 427 -500 333 -640 480 -640 480 -426 640 -640 427 -640 480 -640 480 -640 427 -498 640 -640 457 -640 436 -640 640 -640 480 -500 375 -640 427 -640 480 -500 375 -500 334 -640 427 -640 299 -480 640 -428 640 -640 426 -382 640 -427 640 -640 428 -640 640 -640 427 -640 426 -320 480 -640 424 -640 346 -500 375 -640 480 -640 480 -640 427 -640 431 -424 284 -640 480 -640 500 -640 480 -640 400 -427 640 -427 640 -426 640 -640 428 -640 480 -480 640 -500 333 -488 640 -640 426 -333 500 -640 469 -640 480 -500 333 -640 638 -500 375 -640 426 -640 427 -640 360 -350 500 -480 640 -375 500 -480 640 -640 480 -640 602 -640 427 -640 480 -640 480 -640 402 -640 427 -640 392 -612 612 -640 480 -640 480 -598 397 -640 480 -640 480 -332 500 -640 480 -640 480 -640 425 -426 640 -640 480 -640 480 -640 480 -640 427 -640 480 -640 480 -500 487 -640 480 -500 375 -640 427 -480 640 -640 478 -500 375 -640 480 -640 478 -427 640 -640 480 -640 473 -640 478 -480 640 -427 640 -640 480 -640 576 -640 427 -640 424 -640 407 -301 388 -331 500 -375 500 -640 480 -640 424 -640 400 -640 480 -640 427 -640 427 -640 426 -500 375 -640 481 -510 640 -640 480 -640 427 -640 427 -500 363 -500 333 -640 349 -640 401 -375 500 -571 640 -640 428 -500 400 -640 478 -640 480 -640 480 -640 483 -640 426 -640 480 -640 457 -640 425 -480 640 -612 612 -640 444 -500 416 -480 640 -640 486 -640 427 -640 480 -480 640 -640 480 -479 640 -448 640 -640 428 -640 480 -500 333 -640 480 -640 426 -640 480 -640 426 -640 480 -450 300 -640 459 -500 334 -640 424 -500 375 -640 429 -640 426 -640 442 -333 500 -640 480 -500 369 -640 480 -640 427 -640 480 -640 480 -480 640 -500 400 -640 480 -640 427 -640 428 -640 426 -640 457 -640 331 -640 427 -640 425 -640 480 -640 480 -640 480 -640 425 -340 500 -640 480 -640 624 -427 640 -640 430 -640 360 -640 480 -326 500 -640 426 -640 427 -640 427 -640 451 -640 427 -640 512 -640 361 -640 480 -640 299 -375 500 -427 640 -384 640 -640 480 -640 480 -375 500 -640 480 -500 332 -640 428 -640 410 -480 640 -640 427 -640 427 -640 480 -640 426 -640 427 -640 380 -428 640 -500 375 -500 333 -640 427 -480 640 -426 640 -640 427 -640 424 -640 426 -640 314 -640 424 -640 439 -640 399 -640 480 -428 640 -480 640 -427 640 -640 480 -500 375 -640 426 -640 427 -640 429 -500 454 -640 480 -640 480 -640 480 -390 640 -320 239 -640 425 -640 427 -640 426 -640 429 -451 500 -480 640 -480 640 -375 500 -413 640 -640 444 -480 640 -640 256 -640 480 -431 640 -640 480 -640 426 -640 480 -335 500 -640 423 -640 374 -427 640 -427 640 -640 355 -480 640 -480 640 -640 426 -640 427 -640 427 -640 480 -480 360 -640 480 -640 488 -500 375 -425 640 -640 480 -480 640 -640 425 -640 360 -640 480 -640 640 -640 470 -640 427 -500 375 -500 333 -640 480 -640 430 -500 375 -480 640 -500 286 -640 417 -612 612 -480 640 -640 427 -640 480 -498 640 -545 640 -640 353 -428 640 -427 640 -640 423 -500 375 -640 466 -640 561 -640 480 -640 480 -513 640 -640 480 -438 608 -640 480 -640 479 -527 640 -375 500 -479 640 -480 640 -640 576 -500 334 -640 421 -640 427 -375 500 -640 427 -333 500 -480 640 -640 427 -640 480 -640 427 -640 480 -640 426 -640 480 -640 427 -640 426 -640 432 -640 426 -640 480 -480 640 -427 640 -640 480 -640 480 -600 600 -360 480 -640 480 -640 427 -640 428 -608 640 -640 424 -640 480 -640 429 -555 640 -640 428 -640 427 -500 375 -478 640 -640 480 -640 481 -640 480 -640 480 -335 500 -500 447 -640 509 -640 457 -640 425 -640 480 -640 480 -640 428 -640 480 -640 425 -500 334 -640 427 -640 426 -380 500 -640 425 -640 480 -480 640 -640 480 -640 498 -640 480 -640 480 -493 640 -640 426 -640 480 -612 612 -500 375 -640 480 -640 426 -640 433 -640 480 -640 480 -640 480 -640 427 -640 360 -500 375 -640 428 -480 640 -640 480 -548 640 -640 426 -640 480 -640 480 -640 481 -640 476 -480 640 -500 333 -640 360 -640 480 -640 429 -640 426 -640 480 -612 612 -500 375 -481 640 -480 640 -375 500 -640 427 -640 510 -500 375 -640 458 -480 640 -640 480 -640 427 -600 600 -480 640 -640 429 -233 311 -551 640 -640 640 -640 428 -640 481 -640 480 -478 640 -500 333 -640 427 -438 640 -640 424 -640 420 -640 480 -640 480 -426 640 -640 478 -480 640 -425 640 -640 366 -500 385 -640 360 -640 480 -480 640 -550 378 -640 480 -640 428 -640 480 -640 424 -640 480 -480 640 -428 640 -427 640 -640 480 -640 480 -640 449 -500 467 -640 480 -640 480 -500 333 -640 480 -640 428 -640 480 -640 426 -480 640 -640 480 -640 479 -640 428 -640 427 -640 620 -640 480 -480 640 -640 480 -632 640 -640 427 -640 480 -640 426 -426 640 -640 480 -640 428 -469 640 -375 500 -640 480 -640 427 -640 480 -640 425 -375 500 -640 521 -333 500 -640 480 -640 360 -640 480 -500 375 -500 375 -640 426 -640 480 -640 426 -640 480 -427 640 -640 480 -500 347 -640 480 -640 427 -640 425 -375 500 -640 480 -480 640 -500 488 -375 500 -640 441 -500 333 -640 424 -480 640 -333 500 -629 640 -640 618 -478 640 -500 375 -640 480 -612 612 -640 360 -480 640 -500 375 -640 431 -640 427 -640 427 -640 612 -448 336 -640 427 -640 427 -640 408 -640 427 -640 427 -640 428 -640 480 -640 428 -640 480 -640 459 -640 360 -425 640 -480 640 -424 640 -500 375 -640 480 -333 500 -640 480 -640 397 -480 640 -640 480 -640 480 -640 425 -427 640 -640 427 -357 500 -640 480 -480 640 -480 640 -500 375 -500 375 -640 640 -640 429 -640 426 -640 480 -640 480 -427 640 -640 360 -640 480 -640 434 -640 427 -538 640 -640 428 -640 480 -640 480 -640 480 -480 640 -640 427 -500 474 -406 640 -423 640 -640 480 -640 423 -640 480 -640 427 -640 430 -500 383 -455 640 -600 400 -640 428 -640 480 -500 429 -640 426 -640 480 -426 640 -640 457 -640 390 -500 321 -640 480 -640 391 -479 640 -640 427 -640 429 -500 375 -640 480 -640 480 -640 640 -640 492 -640 480 -640 424 -640 360 -375 500 -500 239 -640 480 -375 500 -640 387 -480 640 -640 406 -640 427 -640 441 -640 409 -640 480 -640 480 -640 480 -424 640 -640 360 -640 427 -500 335 -500 375 -640 480 -640 480 -640 491 -640 428 -640 426 -640 256 -640 476 -640 403 -427 640 -640 480 -640 480 -427 640 -500 374 -427 640 -500 375 -438 640 -640 425 -478 640 -640 463 -640 346 -445 640 -620 413 -640 427 -500 375 -524 640 -640 478 -640 480 -640 480 -612 612 -640 480 -640 480 -640 428 -500 333 -640 569 -640 480 -640 480 -480 640 -407 640 -640 426 -612 612 -640 427 -415 640 -488 640 -640 480 -640 480 -640 480 -640 360 -640 502 -640 640 -640 480 -640 427 -640 438 -640 480 -428 640 -640 480 -640 640 -640 480 -640 536 -596 391 -640 427 -411 640 -640 427 -427 640 -640 480 -500 375 -640 300 -640 480 -500 333 -612 612 -640 480 -425 640 -500 334 -500 375 -640 480 -640 480 -640 359 -426 640 -500 375 -640 424 -640 427 -640 427 -640 426 -640 480 -640 480 -640 480 -640 424 -500 375 -640 427 -640 480 -640 480 -640 480 -640 480 -640 480 -640 432 -640 427 -640 427 -640 480 -640 170 -500 364 -640 480 -640 480 -459 500 -333 500 -640 426 -480 640 -640 427 -640 427 -640 424 -640 480 -640 427 -640 427 -394 640 -640 427 -640 480 -640 427 -640 457 -640 513 -500 375 -640 480 -640 480 -424 640 -640 426 -640 429 -500 375 -640 428 -640 485 -480 640 -640 428 -500 375 -332 500 -640 400 -640 448 -500 375 -640 480 -640 427 -480 640 -640 420 -518 640 -640 426 -500 335 -640 480 -640 427 -500 375 -333 500 -640 480 -640 569 -480 640 -640 427 -640 433 -640 426 -320 400 -640 480 -640 427 -640 429 -640 480 -640 478 -640 480 -640 480 -640 480 -640 480 -472 640 -640 451 -640 425 -640 452 -612 612 -500 329 -640 480 -480 640 -640 480 -640 480 -640 478 -640 427 -334 500 -640 426 -428 640 -640 428 -640 427 -640 429 -640 434 -640 640 -640 480 -640 424 -640 427 -448 640 -480 640 -480 640 -480 640 -640 480 -500 370 -427 640 -640 424 -640 480 -569 640 -259 387 -640 480 -640 426 -640 425 -500 420 -640 427 -640 428 -640 427 -640 457 -640 359 -640 360 -389 500 -640 428 -640 427 -421 640 -640 480 -640 401 -480 640 -640 426 -360 640 -480 640 -480 640 -640 480 -640 480 -640 480 -375 500 -640 480 -479 640 -640 533 -640 428 -640 480 -640 426 -640 509 -426 640 -480 640 -640 480 -640 480 -640 427 -426 640 -640 425 -640 427 -500 375 -640 480 -423 640 -640 427 -640 428 -479 640 -480 640 -640 423 -426 640 -500 374 -428 640 -640 424 -640 428 -640 424 -640 480 -612 612 -500 333 -640 640 -500 345 -480 640 -640 464 -640 426 -640 480 -640 427 -640 374 -427 640 -640 428 -640 360 -640 640 -640 428 -640 481 -640 360 -640 480 -609 530 -428 640 -640 480 -640 427 -640 425 -640 480 -640 427 -480 640 -640 426 -640 389 -500 375 -640 427 -427 640 -640 480 -640 480 -332 500 -336 500 -640 427 -640 480 -640 316 -640 483 -425 640 -399 640 -640 480 -480 640 -640 640 -480 640 -640 427 -640 428 -640 423 -160 120 -640 480 -640 360 -640 480 -640 427 -500 421 -480 640 -425 640 -640 594 -640 480 -640 512 -500 243 -640 480 -500 375 -640 480 -640 427 -480 640 -640 426 -640 424 -639 640 -518 640 -640 479 -426 640 -640 430 -640 427 -640 466 -640 480 -640 480 -640 427 -427 640 -612 612 -480 640 -640 474 -500 375 -640 480 -640 480 -640 375 -640 473 -350 262 -640 427 -432 640 -472 640 -640 478 -640 427 -640 436 -640 427 -640 480 -640 428 -500 375 -427 640 -640 360 -427 640 -604 640 -640 480 -480 640 -640 427 -640 640 -478 640 -640 480 -640 426 -640 484 -640 427 -640 431 -640 477 -500 375 -640 480 -500 333 -500 375 -640 414 -480 640 -426 640 -427 640 -640 480 -500 333 -640 480 -500 333 -640 427 -640 480 -640 357 -428 640 -640 427 -640 480 -427 640 -640 427 -640 573 -640 427 -500 375 -490 500 -640 319 -640 480 -478 640 -640 469 -640 480 -500 313 -640 480 -480 640 -500 375 -640 218 -480 640 -640 426 -640 427 -640 427 -640 480 -480 640 -640 479 -640 428 -640 480 -480 640 -640 499 -427 640 -457 640 -640 361 -500 375 -640 417 -500 324 -640 480 -640 480 -640 427 -640 427 -640 425 -640 480 -364 500 -640 480 -640 640 -640 427 -640 425 -279 640 -480 640 -640 451 -640 331 -640 427 -478 640 -503 640 -640 480 -640 485 -426 640 -335 500 -640 479 -640 480 -640 480 -640 494 -640 474 -640 480 -640 359 -640 425 -480 640 -480 640 -640 526 -640 482 -640 480 -640 480 -640 427 -458 640 -640 404 -500 375 -640 427 -640 480 -500 356 -640 426 -640 480 -640 426 -500 375 -640 417 -640 435 -640 495 -640 427 -500 333 -640 480 -283 640 -640 480 -425 640 -640 425 -640 427 -640 398 -640 480 -640 480 -640 480 -640 424 -375 500 -500 341 -640 480 -480 640 -640 480 -640 427 -640 360 -640 426 -640 427 -640 360 -640 413 -640 480 -640 437 -640 480 -427 640 -513 640 -640 480 -640 480 -640 480 -640 425 -640 427 -404 342 -640 490 -640 426 -426 640 -392 640 -612 612 -333 500 -640 427 -640 429 -640 427 -640 480 -640 480 -640 424 -500 500 -480 640 -426 640 -640 425 -480 640 -640 427 -640 480 -480 640 -640 640 -640 480 -640 408 -500 334 -640 425 -480 640 -640 640 -448 640 -480 640 -500 375 -640 427 -640 427 -640 427 -640 480 -500 375 -640 480 -640 480 -640 427 -640 427 -640 425 -640 426 -640 425 -480 640 -640 480 -640 428 -640 480 -612 612 -523 640 -640 427 -612 612 -640 427 -500 332 -640 510 -640 424 -640 427 -480 640 -612 612 -480 640 -500 369 -427 640 -640 424 -640 427 -640 384 -427 640 -640 427 -640 480 -640 424 -640 480 -640 480 -500 333 -500 333 -640 480 -347 500 -500 375 -426 640 -500 375 -640 480 -476 376 -500 345 -375 500 -640 480 -480 640 -383 588 -640 427 -640 480 -452 640 -640 427 -640 480 -640 427 -640 480 -480 640 -640 480 -640 480 -427 640 -640 480 -640 480 -640 427 -640 564 -427 640 -426 640 -427 640 -640 392 -427 640 -640 425 -640 427 -640 427 -640 384 -640 427 -426 640 -640 427 -640 427 -640 584 -612 612 -480 640 -640 427 -640 480 -640 418 -453 640 -640 427 -640 480 -500 375 -427 640 -640 480 -640 360 -640 427 -640 427 -612 612 -640 427 -463 640 -500 375 -640 427 -640 480 -640 427 -640 359 -640 426 -480 640 -640 480 -640 480 -640 427 -464 640 -640 426 -640 427 -640 427 -640 424 -640 303 -640 419 -640 480 -640 480 -640 425 -500 375 -640 481 -640 476 -640 301 -480 640 -500 376 -640 480 -640 428 -640 428 -640 427 -640 480 -640 426 -383 640 -427 640 -640 426 -640 463 -500 375 -640 480 -480 640 -500 318 -640 583 -480 640 -640 427 -480 640 -427 640 -640 427 -640 425 -640 480 -500 375 -640 480 -480 640 -640 426 -640 360 -640 512 -640 428 -640 480 -500 375 -640 360 -640 480 -640 427 -340 500 -500 333 -427 640 -640 480 -640 480 -640 480 -427 640 -480 640 -640 396 -600 393 -640 427 -612 612 -480 640 -640 427 -640 480 -640 448 -640 427 -640 480 -640 478 -640 428 -640 188 -640 428 -500 426 -640 427 -480 640 -640 480 -640 426 -640 457 -640 480 -480 640 -640 481 -480 640 -640 427 -640 503 -640 427 -640 449 -640 480 -640 480 -640 469 -500 389 -640 426 -500 375 -640 427 -426 640 -480 640 -640 383 -640 425 -565 640 -640 480 -640 559 -640 480 -460 640 -640 480 -640 480 -640 480 -480 640 -640 428 -640 480 -640 427 -500 248 -357 500 -640 480 -640 480 -333 500 -480 360 -500 333 -640 564 -640 426 -480 640 -640 480 -640 480 -640 427 -640 426 -640 480 -426 640 -640 427 -425 640 -640 438 -640 427 -640 480 -640 480 -640 480 -480 640 -438 640 -426 640 -640 426 -640 411 -640 363 -500 375 -640 400 -640 509 -500 489 -640 427 -640 480 -500 333 -640 360 -500 332 -640 480 -640 396 -640 426 -640 480 -640 427 -640 427 -640 480 -500 375 -640 361 -640 427 -612 612 -213 640 -640 427 -427 640 -640 480 -640 480 -640 427 -375 500 -375 500 -640 480 -485 640 -640 388 -640 480 -500 375 -480 640 -480 640 -640 427 -640 427 -500 333 -612 612 -640 480 -640 427 -500 400 -640 426 -640 419 -640 426 -359 640 -500 332 -640 426 -640 480 -640 429 -640 360 -640 427 -640 426 -426 640 -427 640 -640 480 -640 480 -335 500 -640 486 -480 640 -427 640 -480 640 -640 424 -640 480 -640 480 -640 480 -640 548 -425 640 -640 480 -500 375 -640 426 -640 426 -640 426 -480 640 -640 426 -375 500 -640 427 -640 462 -640 451 -640 480 -640 480 -640 425 -612 612 -640 427 -640 426 -427 640 -640 426 -640 427 -640 610 -640 480 -480 640 -640 426 -640 480 -640 426 -480 640 -640 427 -640 477 -640 480 -640 480 -500 338 -640 458 -640 480 -640 359 -120 160 -640 481 -500 375 -426 640 -427 640 -500 400 -500 335 -640 427 -500 334 -640 425 -640 480 -640 480 -500 375 -640 480 -640 424 -400 500 -375 500 -480 640 -515 640 -480 640 -480 640 -640 480 -640 480 -640 480 -640 480 -640 480 -375 500 -480 640 -640 479 -200 189 -457 640 -640 480 -640 439 -500 322 -500 375 -480 640 -640 480 -640 480 -640 480 -427 640 -640 427 -640 480 -427 640 -500 324 -640 480 -640 480 -434 640 -640 265 -640 480 -640 425 -427 640 -640 427 -640 480 -640 480 -640 573 -640 480 -375 500 -640 428 -500 375 -640 480 -640 427 -473 640 -640 428 -480 640 -640 426 -640 306 -640 478 -640 427 -640 427 -427 640 -640 424 -512 640 -640 427 -579 640 -449 640 -427 640 -640 468 -640 480 -640 480 -640 425 -480 640 -640 480 -640 427 -640 640 -375 500 -640 428 -640 427 -640 480 -640 361 -640 480 -500 370 -640 428 -427 640 -640 480 -375 500 -640 480 -640 427 -640 478 -640 480 -640 427 -640 480 -640 425 -500 335 -640 493 -500 375 -640 426 -500 333 -640 480 -461 640 -500 375 -640 480 -640 480 -640 480 -640 480 -612 612 -640 480 -640 424 -640 427 -640 480 -500 375 -640 324 -640 429 -427 640 -528 363 -500 333 -640 512 -480 640 -640 480 -500 375 -640 480 -480 640 -640 480 -480 640 -640 480 -640 427 -640 450 -640 424 -640 480 -482 640 -640 480 -480 640 -640 427 -338 450 -640 425 -640 544 -640 427 -640 428 -640 480 -640 478 -500 375 -640 480 -640 427 -640 480 -640 480 -500 375 -480 640 -640 428 -640 479 -480 640 -375 500 -500 388 -480 640 -640 480 -640 427 -640 360 -640 480 -640 424 -640 396 -640 427 -120 160 -640 457 -640 480 -458 640 -640 425 -640 480 -640 480 -640 360 -640 480 -480 640 -480 640 -640 434 -640 480 -480 640 -640 429 -640 427 -464 500 -640 543 -640 428 -640 411 -640 427 -640 360 -640 528 -640 443 -640 480 -640 480 -640 424 -640 410 -500 333 -512 640 -500 346 -640 480 -640 480 -428 640 -640 429 -640 427 -640 480 -640 439 -500 375 -640 426 -640 480 -640 480 -640 427 -500 423 -640 427 -640 427 -640 424 -640 480 -640 360 -500 333 -640 480 -640 427 -640 384 -425 640 -640 480 -640 480 -640 481 -640 426 -426 640 -480 640 -427 640 -640 427 -478 640 -640 341 -640 395 -640 480 -500 333 -640 427 -500 436 -640 360 -480 640 -500 428 -640 427 -640 560 -640 427 -640 480 -640 481 -640 427 -640 481 -612 612 -427 640 -640 480 -640 394 -640 360 -640 427 -427 640 -640 480 -360 640 -375 500 -640 429 -640 426 -640 480 -640 360 -480 640 -640 383 -640 427 -640 480 -427 640 -640 427 -480 640 -640 480 -480 640 -425 640 -640 480 -612 612 -640 453 -640 425 -426 640 -640 480 -640 480 -640 361 -640 427 -640 480 -640 480 -428 640 -640 480 -640 640 -425 640 -640 428 -640 478 -640 426 -500 333 -500 488 -640 285 -500 326 -640 360 -640 480 -640 428 -640 480 -428 640 -640 524 -640 488 -640 480 -612 612 -450 338 -640 428 -640 426 -526 640 -640 428 -483 640 -640 480 -640 426 -640 427 -640 480 -640 480 -640 480 -640 427 -640 480 -640 480 -640 427 -640 427 -640 571 -640 427 -640 480 -640 427 -640 480 -640 425 -375 500 -640 428 -609 407 -333 500 -640 427 -500 333 -640 640 -433 640 -640 480 -640 392 -640 360 -640 480 -427 640 -480 268 -640 480 -500 281 -600 450 -500 393 -640 480 -478 640 -640 426 -640 413 -640 480 -640 427 -640 425 -640 480 -640 480 -640 427 -443 640 -640 480 -424 640 -640 427 -640 426 -640 632 -640 397 -500 375 -640 426 -640 480 -640 480 -640 428 -500 332 -640 427 -640 427 -640 480 -640 399 -414 640 -612 612 -640 424 -433 640 -640 418 -428 640 -480 640 -426 640 -375 500 -480 640 -640 426 -334 500 -640 480 -481 640 -640 500 -320 240 -640 427 -500 333 -500 333 -427 640 -640 480 -640 480 -640 427 -336 500 -480 640 -640 480 -640 425 -640 480 -500 375 -640 427 -457 640 -640 441 -640 427 -640 481 -640 426 -640 480 -640 427 -612 612 -478 640 -640 427 -500 333 -640 480 -640 428 -640 428 -640 460 -640 480 -500 333 -480 640 -640 633 -640 640 -457 640 -480 640 -500 466 -500 375 -640 425 -500 375 -500 375 -427 640 -640 512 -500 333 -640 427 -640 428 -640 480 -640 426 -640 480 -426 640 -640 427 -640 426 -640 427 -500 282 -640 428 -425 640 -479 640 -640 427 -427 640 -424 640 -448 640 -640 480 -640 480 -640 430 -344 500 -500 375 -640 330 -640 427 -640 445 -640 480 -481 640 -640 480 -640 426 -640 427 -640 427 -640 431 -640 427 -640 425 -640 425 -640 480 -640 493 -500 375 -575 640 -640 480 -640 426 -640 426 -640 428 -640 480 -640 401 -480 640 -640 480 -640 640 -612 612 -427 640 -640 489 -446 640 -480 640 -640 480 -427 640 -640 427 -428 640 -640 478 -379 500 -640 428 -640 429 -640 475 -640 428 -375 500 -490 500 -640 480 -640 426 -425 640 -480 640 -426 640 -595 640 -640 480 -640 480 -500 333 -640 480 -640 424 -640 480 -640 478 -480 640 -640 480 -640 480 -640 428 -640 419 -640 480 -640 468 -640 480 -640 428 -640 427 -480 640 -640 480 -640 478 -640 426 -640 425 -640 640 -480 640 -640 480 -640 427 -424 640 -640 427 -640 472 -640 480 -640 426 -640 480 -480 640 -640 640 -480 640 -425 640 -640 480 -640 431 -640 428 -640 439 -425 640 -480 640 -640 480 -640 601 -640 428 -612 612 -640 480 -640 425 -640 480 -640 424 -508 640 -640 426 -640 499 -640 480 -640 480 -640 480 -640 334 -612 612 -427 640 -640 427 -640 426 -444 640 -640 428 -640 428 -500 342 -640 356 -640 427 -640 480 -640 480 -640 427 -640 480 -612 612 -375 500 -640 480 -640 480 -450 640 -640 427 -640 277 -640 480 -640 620 -426 640 -480 640 -640 480 -541 640 -500 361 -640 480 -640 427 -425 640 -640 427 -332 500 -640 244 -640 480 -640 480 -640 426 -480 640 -640 362 -640 424 -489 640 -640 452 -640 513 -640 512 -640 427 -640 480 -640 480 -640 429 -640 427 -640 427 -640 424 -640 427 -479 640 -640 480 -640 480 -500 375 -612 612 -480 640 -480 640 -640 480 -500 325 -640 480 -640 427 -640 425 -425 640 -640 480 -612 612 -640 425 -640 432 -640 427 -640 427 -479 640 -428 640 -500 334 -640 480 -640 480 -427 640 -480 640 -640 427 -426 640 -640 428 -640 430 -500 375 -640 480 -640 480 -640 427 -612 612 -229 123 -640 426 -500 380 -640 480 -640 360 -481 640 -640 451 -457 640 -640 480 -375 500 -500 334 -640 428 -500 375 -640 430 -640 480 -640 427 -640 480 -640 634 -612 612 -480 640 -426 640 -500 333 -640 480 -640 480 -640 426 -640 480 -500 375 -480 640 -375 500 -640 480 -480 640 -640 458 -640 426 -424 640 -426 640 -640 424 -612 612 -640 427 -640 424 -640 427 -497 640 -640 427 -640 480 -640 446 -640 443 -640 427 -640 640 -500 333 -640 360 -640 426 -333 500 -640 426 -640 427 -612 612 -500 375 -612 612 -640 427 -480 640 -500 333 -640 480 -640 480 -640 421 -640 480 -640 480 -640 480 -500 375 -640 427 -500 375 -640 350 -611 640 -478 640 -332 500 -500 316 -640 480 -640 510 -640 427 -640 480 -640 427 -640 486 -340 470 -480 640 -480 640 -427 640 -640 426 -640 590 -640 480 -640 480 -640 428 -640 427 -500 375 -427 640 -640 458 -640 583 -500 375 -640 480 -500 375 -640 400 -640 425 -640 480 -500 333 -640 408 -640 427 -427 640 -339 500 -275 183 -375 500 -640 478 -640 478 -425 640 -384 640 -640 478 -640 425 -500 345 -640 427 -640 427 -480 640 -500 375 -640 428 -640 418 -640 480 -640 480 -426 640 -640 480 -426 640 -640 640 -391 640 -500 375 -640 480 -640 424 -640 478 -519 640 -551 640 -500 375 -640 480 -612 612 -640 426 -480 640 -500 334 -640 480 -640 640 -402 500 -640 480 -612 612 -500 333 -500 286 -432 640 -640 362 -640 480 -640 480 -640 427 -640 428 -640 426 -640 427 -500 332 -640 428 -426 640 -612 612 -333 500 -640 427 -640 640 -640 480 -640 480 -500 375 -640 457 -500 334 -640 427 -500 500 -640 424 -480 640 -480 640 -640 358 -640 480 -640 480 -500 375 -640 480 -500 447 -311 500 -480 640 -640 359 -640 480 -640 228 -640 480 -640 469 -640 480 -500 375 -427 640 -640 360 -640 427 -640 475 -640 480 -640 480 -640 481 -500 375 -640 440 -640 640 -500 375 -428 640 -640 427 -640 480 -640 425 -640 500 -640 427 -640 427 -640 446 -500 375 -640 480 -424 640 -640 480 -500 353 -640 360 -640 433 -424 640 -640 427 -480 640 -640 480 -596 640 -480 640 -640 480 -640 480 -640 427 -640 480 -478 640 -640 360 -640 457 -640 429 -285 340 -640 426 -640 440 -446 640 -640 480 -640 480 -640 426 -480 640 -640 640 -640 480 -640 427 -640 480 -480 640 -640 428 -375 500 -640 480 -640 423 -500 375 -640 480 -640 478 -476 640 -640 480 -640 640 -640 443 -480 640 -640 513 -640 480 -500 325 -640 480 -358 640 -423 640 -640 360 -640 395 -599 640 -640 425 -640 480 -640 607 -640 480 -640 480 -480 640 -427 640 -634 640 -640 480 -500 400 -640 425 -640 428 -640 480 -640 480 -640 480 -640 425 -640 383 -640 360 -640 480 -640 480 -640 425 -640 480 -600 376 -640 427 -480 640 -640 424 -612 612 -640 426 -640 425 -640 480 -480 640 -640 425 -500 408 -640 424 -500 284 -640 481 -640 427 -640 428 -640 478 -640 480 -640 480 -640 427 -480 640 -427 640 -640 480 -428 640 -500 283 -640 441 -640 426 -640 418 -640 427 -480 640 -640 426 -640 426 -640 480 -640 442 -640 427 -640 426 -640 419 -640 480 -640 478 -640 476 -640 427 -640 426 -399 640 -640 361 -640 426 -640 427 -427 640 -640 459 -640 480 -640 360 -333 500 -428 640 -640 480 -640 441 -428 640 -480 640 -640 480 -427 640 -640 480 -640 426 -333 500 -640 480 -640 526 -640 480 -486 640 -423 640 -640 361 -427 640 -640 480 -640 480 -640 425 -640 428 -640 428 -640 480 -640 427 -480 640 -379 279 -480 640 -640 506 -640 480 -640 513 -640 458 -333 500 -640 429 -640 360 -640 427 -500 375 -640 480 -500 332 -612 612 -640 480 -640 476 -640 374 -500 394 -640 480 -427 640 -640 427 -640 425 -430 640 -425 640 -640 410 -429 640 -640 424 -480 640 -640 427 -640 425 -640 640 -640 360 -640 427 -640 490 -500 375 -333 500 -640 517 -640 480 -640 427 -500 350 -400 500 -640 480 -500 338 -640 433 -640 388 -426 640 -640 348 -640 480 -640 492 -640 481 -640 318 -640 427 -427 640 -640 425 -640 480 -640 513 -500 332 -480 640 -640 640 -640 480 -640 444 -640 616 -640 480 -500 333 -500 408 -500 411 -640 480 -640 360 -480 640 -640 427 -640 433 -640 427 -640 426 -479 640 -480 640 -480 640 -426 640 -640 430 -640 427 -480 640 -640 426 -640 369 -640 480 -375 500 -640 480 -640 425 -504 640 -640 480 -640 480 -640 426 -640 430 -640 480 -500 400 -640 427 -640 480 -640 427 -640 489 -640 360 -427 640 -640 480 -640 480 -640 480 -350 219 -640 480 -640 413 -640 480 -640 401 -425 640 -640 425 -640 480 -640 427 -640 414 -640 424 -640 480 -425 640 -640 285 -640 480 -640 322 -640 427 -640 427 -640 427 -640 428 -640 457 -640 480 -500 391 -640 404 -640 611 -640 390 -513 640 -640 360 -640 496 -640 480 -640 427 -640 427 -640 480 -500 234 -640 425 -640 360 -424 640 -640 512 -640 427 -640 426 -640 427 -640 480 -500 374 -640 428 -640 526 -640 428 -640 480 -426 640 -640 427 -611 640 -640 383 -640 457 -640 427 -640 382 -640 427 -640 426 -640 480 -640 477 -375 500 -478 640 -640 480 -640 480 -500 400 -640 461 -640 480 -640 417 -640 425 -427 640 -640 439 -480 640 -640 640 -427 640 -612 612 -464 640 -640 427 -480 640 -640 360 -640 480 -640 428 -640 425 -640 543 -640 426 -640 423 -640 426 -640 319 -500 375 -640 427 -432 500 -375 500 -640 441 -426 640 -640 406 -640 426 -640 480 -480 640 -640 480 -640 424 -640 428 -640 427 -640 461 -426 640 -500 375 -640 480 -640 428 -640 480 -500 375 -640 426 -640 640 -480 640 -640 427 -375 500 -500 333 -640 480 -375 500 -480 640 -500 334 -640 480 -640 427 -640 424 -640 426 -640 628 -640 491 -640 426 -640 427 -480 640 -640 480 -640 425 -640 424 -640 427 -640 427 -640 480 -640 513 -640 426 -640 480 -640 427 -640 461 -640 425 -640 598 -640 361 -640 480 -640 427 -500 317 -640 480 -640 519 -640 480 -640 427 -500 375 -640 480 -425 640 -640 427 -426 640 -480 640 -480 640 -640 427 -640 427 -457 640 -640 359 -640 355 -640 480 -640 427 -426 640 -640 427 -427 640 -640 428 -640 426 -500 334 -425 640 -640 480 -640 480 -640 480 -500 334 -500 344 -640 640 -640 480 -640 480 -640 423 -640 480 -333 500 -640 426 -640 427 -500 375 -480 640 -640 508 -640 480 -500 375 -600 600 -640 480 -385 500 -434 640 -640 480 -480 640 -426 640 -640 427 -640 512 -512 640 -640 427 -427 640 -640 474 -640 426 -480 640 -640 426 -500 375 -427 640 -475 640 -640 360 -640 480 -640 427 -640 479 -375 500 -640 427 -640 457 -394 500 -640 422 -500 375 -640 480 -640 480 -427 640 -640 427 -640 498 -640 480 -480 640 -640 374 -640 480 -500 412 -500 335 -640 439 -640 516 -640 427 -640 426 -402 500 -500 364 -500 333 -640 480 -438 640 -425 640 -493 500 -480 640 -640 426 -640 640 -640 349 -640 480 -427 640 -640 480 -640 512 -400 400 -375 500 -640 427 -640 424 -500 375 -640 426 -640 429 -640 427 -640 426 -480 640 -500 375 -640 428 -640 480 -427 640 -640 428 -640 480 -640 427 -640 480 -500 372 -640 480 -640 480 -640 480 -640 360 -640 480 -640 480 -640 427 -640 426 -640 480 -640 640 -640 424 -640 480 -640 427 -640 169 -427 640 -640 478 -640 427 -462 308 -426 640 -640 361 -640 427 -500 232 -640 427 -640 457 -640 427 -500 375 -640 427 -640 426 -640 494 -427 640 -640 314 -640 480 -640 427 -473 640 -640 480 -640 480 -640 427 -640 369 -640 301 -640 427 -424 640 -640 481 -640 480 -640 427 -640 478 -640 480 -640 426 -640 427 -640 427 -640 480 -640 360 -480 640 -640 439 -640 480 -640 454 -640 401 -640 458 -640 480 -640 480 -640 414 -640 480 -640 496 -640 424 -640 480 -640 480 -387 500 -640 480 -640 379 -640 457 -425 640 -640 426 -640 424 -120 120 -640 427 -640 597 -640 480 -640 458 -640 426 -640 427 -640 427 -480 640 -640 426 -500 333 -640 427 -640 380 -427 640 -500 333 -480 640 -640 428 -640 428 -640 360 -640 429 -500 387 -371 500 -425 640 -640 480 -640 479 -640 480 -640 480 -640 427 -640 480 -640 478 -457 640 -640 429 -359 640 -500 375 -640 425 -500 375 -640 427 -359 240 -426 640 -612 612 -640 480 -612 612 -640 427 -640 478 -375 500 -480 640 -640 426 -479 640 -640 429 -640 384 -640 434 -500 332 -640 489 -640 427 -426 640 -640 466 -412 640 -478 640 -319 500 -640 427 -612 612 -640 418 -640 427 -640 426 -333 500 -500 375 -640 280 -612 612 -640 639 -640 480 -640 360 -640 456 -640 427 -426 640 -640 428 -501 640 -426 640 -640 428 -640 480 -640 478 -500 375 -640 360 -375 500 -640 388 -357 500 -640 480 -480 640 -496 640 -640 427 -612 612 -480 640 -508 337 -480 640 -640 368 -640 420 -300 500 -640 427 -612 612 -640 480 -500 375 -500 375 -412 317 -640 427 -640 425 -640 428 -480 640 -640 429 -380 640 -500 375 -640 425 -480 640 -640 480 -640 423 -640 480 -333 500 -411 640 -426 640 -436 640 -640 501 -640 427 -500 375 -640 512 -640 480 -640 506 -640 426 -640 427 -589 640 -480 640 -640 426 -500 375 -640 427 -640 426 -428 640 -640 480 -640 474 -500 333 -640 480 -480 640 -640 398 -640 425 -640 454 -640 480 -479 640 -640 427 -640 425 -612 612 -640 480 -500 375 -640 421 -640 514 -612 612 -640 480 -640 425 -500 468 -640 427 -480 640 -640 480 -640 480 -640 339 -424 640 -290 595 -480 640 -640 427 -480 640 -640 427 -500 332 -426 640 -640 425 -500 282 -480 640 -500 375 -640 514 -640 480 -640 426 -640 480 -640 480 -375 500 -640 427 -640 480 -640 426 -640 427 -500 375 -511 640 -640 427 -427 640 -640 480 -640 480 -446 552 -640 427 -640 426 -640 427 -640 427 -500 375 -640 480 -357 500 -640 479 -480 640 -640 428 -640 480 -480 640 -640 480 -640 480 -640 467 -640 480 -640 480 -640 426 -500 375 -513 640 -640 480 -640 480 -375 500 -640 427 -640 448 -640 480 -640 480 -480 640 -640 480 -640 427 -640 457 -640 425 -427 640 -480 640 -640 425 -640 427 -640 480 -640 640 -640 400 -612 612 -640 428 -425 640 -500 332 -640 426 -640 480 -640 480 -640 535 -640 427 -500 375 -640 480 -640 480 -480 640 -640 480 -640 480 -640 427 -425 640 -480 640 -640 480 -640 516 -640 427 -640 480 -640 418 -501 640 -640 480 -375 500 -640 424 -375 500 -480 640 -640 412 -640 426 -640 480 -640 467 -640 640 -640 480 -640 428 -640 480 -375 500 -640 431 -425 640 -478 640 -640 483 -640 480 -640 480 -640 360 -640 480 -427 640 -640 480 -500 375 -640 426 -500 334 -640 400 -334 500 -640 427 -640 428 -640 480 -640 427 -500 375 -640 480 -640 426 -640 480 -500 373 -401 500 -427 640 -640 458 -640 427 -640 427 -640 428 -640 427 -640 427 -612 612 -640 480 -500 176 -640 480 -480 640 -640 480 -565 425 -640 427 -640 480 -640 427 -386 640 -500 375 -500 375 -640 579 -640 457 -640 640 -640 442 -612 612 -640 480 -480 640 -640 480 -640 425 -640 427 -500 334 -427 640 -640 427 -480 640 -640 427 -640 480 -500 375 -640 480 -640 480 -640 362 -500 188 -640 480 -375 500 -640 480 -640 480 -640 427 -640 505 -640 480 -640 426 -427 640 -640 426 -640 480 -500 375 -640 427 -640 640 -640 424 -640 480 -640 480 -612 612 -640 427 -332 500 -640 437 -640 427 -640 427 -640 360 -480 640 -500 375 -640 427 -640 569 -640 440 -640 427 -500 375 -640 391 -640 426 -640 388 -640 427 -640 480 -640 428 -640 533 -640 426 -640 411 -640 480 -640 478 -640 425 -640 427 -480 640 -640 480 -426 640 -640 427 -640 425 -375 500 -640 567 -640 424 -640 335 -500 368 -640 480 -500 365 -640 373 -640 480 -500 375 -401 479 -427 640 -500 375 -640 428 -640 480 -640 480 -640 480 -500 500 -640 383 -640 427 -640 425 -640 480 -640 480 -640 480 -640 376 -480 640 -640 359 -640 427 -640 506 -640 513 -480 640 -640 427 -640 480 -640 428 -480 640 -640 573 -500 244 -640 480 -640 484 -640 480 -640 428 -640 478 -640 386 -426 640 -640 480 -640 480 -640 427 -499 640 -640 480 -640 480 -640 480 -468 640 -640 426 -640 426 -427 640 -428 640 -640 476 -640 480 -640 481 -640 353 -640 409 -640 640 -640 426 -640 431 -640 480 -640 453 -640 427 -640 480 -640 480 -480 640 -640 486 -640 427 -640 341 -640 396 -640 427 -427 640 -427 640 -640 427 -424 640 -500 333 -640 480 -640 426 -640 570 -470 640 -500 261 -640 394 -640 478 -640 427 -640 427 -640 427 -640 428 -480 640 -640 426 -640 480 -640 425 -375 500 -640 533 -640 480 -426 640 -626 640 -500 333 -375 500 -640 427 -640 480 -640 427 -640 427 -640 453 -375 500 -480 640 -640 427 -635 640 -427 640 -640 480 -640 392 -640 640 -427 640 -500 375 -640 427 -640 480 -640 426 -640 425 -640 640 -640 480 -640 480 -480 640 -375 500 -500 344 -612 612 -640 428 -640 480 -640 443 -640 427 -640 480 -427 640 -427 640 -640 480 -427 640 -428 640 -640 360 -640 411 -500 374 -640 489 -612 612 -640 480 -640 427 -640 480 -640 480 -640 478 -480 640 -640 424 -640 499 -640 366 -640 480 -640 426 -640 427 -419 640 -640 480 -640 480 -640 427 -480 640 -500 333 -640 262 -640 507 -640 480 -478 640 -500 357 -640 480 -480 640 -640 480 -500 359 -615 459 -426 640 -612 612 -640 427 -640 480 -640 425 -640 480 -640 440 -640 426 -427 640 -640 480 -640 640 -500 375 -640 427 -332 500 -640 360 -640 465 -640 538 -640 480 -640 426 -640 480 -640 480 -500 333 -640 466 -375 500 -480 640 -480 640 -443 640 -500 334 -640 480 -640 350 -640 427 -500 375 -539 640 -640 427 -640 480 -427 640 -640 427 -640 281 -476 640 -640 480 -640 480 -640 444 -640 480 -640 480 -640 427 -424 640 -640 427 -640 545 -425 640 -640 427 -640 480 -640 476 -640 360 -425 640 -640 299 -640 480 -640 480 -640 427 -429 640 -500 333 -427 640 -640 458 -426 640 -640 480 -640 480 -427 640 -427 640 -640 480 -640 479 -444 640 -640 427 -640 427 -480 640 -640 373 -640 640 -640 427 -640 506 -640 424 -640 480 -500 378 -640 480 -640 426 -480 640 -428 640 -425 640 -640 480 -640 480 -640 438 -500 375 -419 640 -640 473 -640 480 -640 426 -640 334 -640 385 -427 640 -640 337 -640 640 -640 426 -358 640 -640 427 -640 411 -480 640 -640 480 -640 425 -640 427 -640 480 -640 289 -640 454 -640 512 -640 427 -640 342 -640 429 -640 640 -640 480 -640 480 -640 427 -640 480 -640 480 -640 425 -640 480 -500 333 -500 406 -427 640 -375 500 -427 640 -640 480 -640 427 -640 478 -640 426 -640 427 -640 425 -428 640 -500 375 -640 428 -640 480 -327 500 -480 640 -640 426 -640 428 -640 426 -640 480 -640 480 -431 640 -531 640 -480 640 -480 640 -640 424 -640 402 -640 427 -640 480 -640 400 -640 480 -640 426 -427 640 -640 426 -640 449 -640 427 -500 333 -375 500 -500 375 -639 640 -480 640 -640 480 -640 499 -640 480 -476 640 -427 640 -640 480 -500 375 -640 426 -640 480 -640 427 -437 640 -640 427 -640 526 -640 428 -640 480 -640 425 -640 480 -640 427 -640 382 -640 427 -640 425 -478 640 -640 427 -640 488 -640 427 -640 360 -640 427 -640 478 -217 289 -640 480 -640 427 -640 425 -640 480 -640 455 -640 480 -640 480 -375 500 -440 640 -640 292 -512 640 -409 640 -640 480 -500 333 -640 480 -640 480 -640 480 -640 428 -488 640 -640 427 -640 428 -640 424 -418 640 -640 509 -427 640 -333 500 -480 640 -640 376 -612 612 -427 640 -426 640 -640 424 -640 480 -640 480 -640 427 -426 640 -447 640 -640 480 -480 640 -500 281 -429 640 -480 640 -640 480 -640 427 -640 427 -480 640 -640 480 -640 480 -500 333 -500 375 -640 478 -427 640 -640 471 -640 640 -427 640 -640 427 -640 478 -640 480 -640 430 -640 426 -640 395 -480 640 -640 425 -294 196 -640 427 -640 480 -500 263 -500 319 -640 480 -640 428 -640 602 -640 426 -425 640 -500 375 -500 400 -480 640 -465 640 -640 428 -427 640 -333 500 -640 480 -640 480 -640 426 -640 498 -480 640 -640 480 -640 480 -640 480 -640 480 -425 640 -640 480 -640 425 -426 640 -612 612 -640 476 -500 375 -480 640 -640 427 -427 640 -640 480 -640 480 -640 480 -428 640 -480 640 -640 426 -640 480 -640 480 -434 640 -480 640 -640 394 -640 478 -480 640 -500 375 -425 640 -640 480 -640 480 -479 640 -500 400 -480 640 -640 480 -612 612 -640 360 -375 500 -480 640 -640 480 -640 427 -427 640 -500 375 -375 500 -426 640 -640 480 -500 375 -640 480 -640 427 -480 640 -300 196 -193 272 -500 333 -500 375 -332 640 -640 480 -640 400 -425 640 -640 427 -500 333 -417 500 -640 415 -640 480 -166 221 -640 426 -640 427 -640 480 -480 640 -640 480 -424 640 -500 366 -640 427 -500 334 -425 640 -640 480 -500 375 -640 427 -640 480 -640 427 -640 425 -640 534 -387 640 -457 640 -480 640 -640 640 -640 426 -640 446 -640 393 -640 453 -640 433 -640 480 -500 357 -500 430 -640 428 -640 427 -427 640 -640 382 -640 408 -640 512 -640 480 -375 500 -640 429 -640 480 -640 480 -480 640 -640 427 -640 480 -640 458 -427 640 -500 375 -500 375 -640 427 -640 480 -594 640 -640 480 -480 640 -640 471 -640 480 -640 427 -640 361 -640 427 -640 427 -640 640 -480 640 -640 480 -640 480 -500 327 -640 427 -640 483 -375 500 -500 323 -640 480 -640 428 -353 378 -640 480 -640 480 -427 640 -640 480 -640 427 -410 500 -480 640 -640 480 -640 428 -640 429 -640 427 -640 478 -612 612 -640 427 -640 463 -640 480 -640 480 -640 427 -428 640 -640 480 -480 640 -640 421 -640 480 -640 427 -480 640 -500 400 -640 481 -640 548 -480 640 -375 500 -612 612 -640 427 -500 333 -640 427 -640 478 -500 375 -640 480 -640 360 -500 375 -640 430 -500 344 -500 375 -427 640 -640 428 -500 337 -640 360 -427 640 -640 424 -500 375 -640 480 -640 433 -500 327 -427 640 -480 640 -480 640 -640 480 -640 220 -640 486 -640 428 -640 480 -365 640 -427 640 -480 640 -640 480 -640 512 -480 640 -424 640 -640 480 -500 375 -500 375 -640 433 -640 426 -640 425 -480 640 -640 480 -640 453 -640 480 -640 638 -426 640 -375 500 -640 426 -640 360 -640 424 -640 480 -624 640 -640 480 -427 640 -335 500 -427 640 -640 480 -640 424 -378 500 -640 350 -449 640 -427 640 -640 426 -426 640 -427 640 -640 637 -375 500 -502 640 -640 426 -640 376 -425 640 -424 640 -640 480 -612 612 -640 427 -500 333 -640 480 -480 640 -640 480 -613 640 -375 500 -640 480 -640 428 -640 426 -640 480 -640 466 -640 435 -640 309 -640 425 -640 425 -640 428 -500 335 -427 640 -480 640 -466 640 -480 640 -640 480 -428 640 -640 434 -640 434 -640 426 -375 500 -480 640 -640 428 -640 480 -640 427 -640 480 -640 426 -640 463 -426 640 -640 441 -640 480 -427 640 -500 394 -482 640 -640 466 -426 640 -532 640 -640 428 -480 640 -640 426 -640 412 -500 375 -500 375 -640 426 -386 640 -640 480 -640 480 -640 426 -640 426 -640 480 -500 352 -640 640 -640 480 -480 640 -640 425 -640 640 -640 427 -640 433 -427 640 -427 640 -640 480 -640 480 -500 375 -500 375 -640 428 -500 345 -426 640 -640 480 -640 480 -640 427 -640 419 -640 480 -640 425 -500 375 -640 480 -640 480 -482 640 -640 427 -640 424 -640 470 -500 333 -640 427 -640 430 -640 480 -640 480 -640 480 -640 425 -640 424 -556 640 -640 479 -640 480 -640 427 -640 480 -500 375 -640 480 -640 429 -378 640 -640 426 -480 640 -612 612 -333 500 -640 411 -640 353 -612 612 -640 480 -640 425 -640 366 -480 640 -640 427 -640 480 -640 480 -427 640 -640 428 -457 640 -640 480 -640 424 -478 640 -640 480 -640 480 -640 425 -640 424 -640 479 -640 480 -640 360 -640 640 -421 640 -427 640 -640 481 -640 480 -427 640 -427 640 -640 480 -640 427 -640 427 -640 428 -500 375 -640 428 -640 480 -612 612 -500 375 -427 640 -500 375 -640 480 -640 427 -640 480 -480 640 -640 432 -640 427 -640 425 -640 480 -427 640 -640 361 -640 427 -640 425 -480 640 -478 640 -640 425 -480 640 -427 640 -427 640 -640 427 -487 640 -427 640 -480 640 -640 525 -428 500 -640 439 -500 375 -375 500 -458 640 -640 480 -640 423 -640 480 -640 480 -640 593 -640 480 -640 618 -640 392 -600 410 -640 427 -500 281 -640 480 -640 490 -640 480 -333 500 -640 640 -360 640 -427 640 -428 640 -401 600 -640 396 -640 480 -480 640 -640 480 -640 453 -640 438 -500 397 -517 640 -640 426 -640 426 -640 631 -480 640 -480 640 -640 480 -640 454 -480 640 -480 640 -512 640 -640 427 -640 480 -500 375 -588 640 -640 480 -640 480 -640 427 -640 480 -640 640 -411 640 -480 640 -640 480 -640 425 -426 640 -640 428 -612 612 -640 427 -426 640 -427 640 -640 428 -640 426 -640 425 -640 425 -500 381 -640 480 -640 392 -543 640 -480 640 -480 640 -550 245 -640 480 -640 480 -640 478 -334 640 -640 376 -640 427 -640 430 -500 326 -640 426 -500 375 -333 500 -527 640 -364 640 -640 480 -640 433 -640 427 -457 640 -640 480 -640 480 -640 506 -640 523 -640 425 -640 480 -640 480 -640 391 -640 221 -427 640 -355 500 -640 433 -640 480 -640 425 -640 377 -640 480 -640 425 -640 425 -640 427 -427 640 -640 427 -640 402 -640 457 -500 375 -640 426 -640 518 -640 640 -640 383 -640 427 -427 640 -500 375 -640 480 -428 640 -428 640 -640 480 -357 500 -640 480 -500 375 -640 515 -640 480 -640 360 -640 480 -500 333 -640 480 -240 360 -640 480 -640 443 -640 504 -640 480 -640 480 -465 640 -421 640 -640 480 -640 480 -640 480 -471 640 -640 480 -640 431 -640 425 -500 319 -640 411 -500 375 -640 426 -640 469 -640 427 -640 480 -640 480 -640 426 -500 333 -640 480 -640 366 -500 375 -640 480 -640 383 -640 480 -250 167 -640 427 -640 480 -640 424 -480 640 -500 375 -640 480 -640 480 -640 426 -640 427 -640 427 -640 404 -640 426 -427 640 -426 640 -640 359 -500 375 -640 429 -640 427 -640 480 -640 480 -328 500 -640 405 -478 640 -640 427 -500 333 -640 554 -449 640 -640 426 -640 480 -640 425 -640 480 -640 427 -640 426 -612 612 -640 320 -428 640 -462 640 -640 349 -640 427 -640 426 -640 427 -640 427 -359 640 -640 481 -640 429 -640 427 -427 640 -640 480 -640 359 -640 432 -640 427 -427 640 -640 426 -480 480 -640 426 -549 640 -640 427 -640 546 -640 489 -640 426 -500 335 -421 640 -640 427 -640 478 -640 425 -640 361 -640 639 -640 360 -423 640 -640 425 -612 612 -478 640 -640 426 -480 640 -640 426 -640 331 -480 640 -481 640 -640 480 -427 640 -591 640 -640 480 -640 427 -640 426 -640 478 -449 640 -640 480 -480 640 -640 480 -640 427 -640 480 -500 375 -500 400 -463 640 -427 640 -427 640 -640 434 -640 431 -333 500 -640 427 -640 425 -426 640 -429 640 -640 427 -375 500 -640 480 -500 375 -375 500 -640 425 -640 425 -500 335 -640 426 -612 612 -640 425 -640 480 -640 219 -640 427 -640 428 -640 427 -426 640 -640 480 -640 427 -640 427 -640 454 -612 612 -640 480 -480 640 -640 425 -640 480 -500 375 -640 427 -640 426 -640 383 -640 480 -500 375 -640 427 -500 269 -640 480 -452 500 -428 640 -640 427 -427 640 -640 480 -430 640 -640 480 -640 427 -640 471 -640 634 -500 375 -373 500 -640 480 -427 640 -640 427 -424 640 -640 480 -425 640 -640 425 -424 640 -640 360 -500 334 -635 640 -640 428 -500 375 -640 426 -640 436 -500 375 -640 360 -640 480 -640 427 -640 480 -427 640 -378 640 -640 594 -640 480 -640 433 -480 640 -427 640 -640 640 -640 480 -640 480 -501 640 -640 320 -640 480 -640 426 -640 406 -640 480 -640 640 -502 640 -375 500 -640 480 -640 427 -375 500 -640 427 -480 640 -640 453 -408 640 -640 423 -500 375 -640 427 -480 640 -640 423 -375 500 -640 480 -425 640 -640 480 -640 480 -640 480 -640 416 -640 426 -640 427 -640 480 -640 428 -640 427 -640 444 -640 480 -640 428 -426 640 -640 426 -480 640 -480 640 -640 455 -640 400 -480 640 -425 640 -478 640 -640 640 -427 640 -640 468 -500 500 -500 375 -640 480 -640 480 -640 480 -640 427 -640 480 -640 426 -500 500 -640 480 -500 334 -640 426 -640 427 -640 480 -640 427 -640 480 -426 640 -640 301 -640 428 -640 427 -500 222 -480 640 -427 640 -500 335 -360 270 -640 452 -640 361 -640 480 -480 640 -640 429 -640 434 -640 463 -640 427 -428 640 -640 427 -426 640 -640 472 -640 480 -640 438 -640 443 -612 612 -478 640 -426 640 -429 640 -640 425 -640 480 -640 480 -640 640 -426 640 -640 427 -640 424 -640 424 -640 424 -612 612 -640 480 -480 640 -400 500 -480 640 -640 480 -640 480 -640 427 -640 597 -640 416 -640 480 -640 480 -480 640 -480 640 -640 424 -640 428 -640 425 -582 640 -484 640 -566 640 -640 427 -426 640 -427 640 -640 480 -640 468 -640 424 -427 640 -640 425 -480 640 -600 400 -640 480 -640 480 -640 453 -500 339 -480 640 -640 480 -500 403 -500 333 -640 480 -640 480 -640 480 -640 427 -640 510 -640 425 -640 480 -426 640 -640 640 -375 500 -424 640 -640 427 -640 480 -480 640 -429 640 -640 426 -480 640 -640 427 -640 426 -640 480 -640 441 -494 640 -640 360 -425 640 -640 415 -640 427 -640 480 -640 360 -427 640 -500 333 -500 375 -333 500 -640 480 -480 640 -640 506 -640 427 -640 440 -600 450 -612 612 -640 424 -640 425 -640 480 -640 490 -480 640 -640 427 -640 480 -640 480 -640 428 -640 427 -408 640 -640 480 -640 480 -640 480 -480 640 -480 640 -500 375 -640 369 -424 640 -640 406 -500 375 -640 360 -640 519 -640 360 -640 426 -640 480 -640 480 -640 480 -500 375 -640 432 -640 501 -480 640 -640 640 -640 417 -600 450 -640 428 -640 427 -428 640 -374 500 -640 478 -640 425 -640 480 -480 640 -500 418 -333 500 -640 429 -640 428 -596 640 -640 480 -640 480 -640 359 -480 640 -640 427 -640 446 -640 427 -640 480 -500 375 -640 548 -480 640 -640 426 -500 357 -640 480 -500 375 -612 612 -480 640 -640 429 -640 429 -480 640 -426 640 -334 500 -604 640 -640 425 -640 424 -640 457 -640 426 -640 480 -640 551 -392 640 -640 418 -427 640 -640 480 -640 359 -500 375 -640 427 -210 304 -640 426 -356 200 -640 480 -500 375 -480 640 -500 377 -320 240 -427 640 -640 425 -640 513 -500 375 -427 640 -640 499 -640 294 -640 427 -640 443 -640 519 -640 480 -640 361 -640 480 -640 554 -640 426 -640 507 -640 426 -640 427 -640 480 -640 426 -640 480 -640 412 -640 480 -504 336 -640 480 -427 640 -426 640 -640 360 -640 421 -640 428 -640 480 -640 424 -480 640 -640 480 -640 480 -640 426 -640 480 -640 425 -480 640 -640 426 -640 428 -640 524 -640 374 -640 427 -640 428 -427 640 -640 480 -640 427 -640 360 -640 480 -428 640 -480 640 -426 640 -500 375 -640 490 -640 484 -640 445 -640 480 -427 640 -640 425 -500 375 -640 428 -480 640 -640 347 -640 360 -425 640 -640 499 -640 480 -500 375 -640 478 -640 427 -500 375 -427 640 -424 640 -480 640 -640 428 -640 640 -500 335 -640 480 -640 640 -640 427 -640 539 -480 640 -640 427 -489 640 -500 333 -640 424 -427 640 -640 427 -640 427 -480 640 -640 424 -500 335 -640 640 -640 480 -640 480 -427 640 -640 480 -576 475 -640 513 -640 427 -640 513 -480 640 -481 640 -449 640 -640 428 -640 426 -640 480 -640 346 -640 448 -640 480 -640 406 -640 427 -640 427 -640 425 -640 480 -428 640 -640 480 -500 375 -640 470 -640 353 -640 427 -612 612 -640 511 -640 383 -640 640 -640 425 -482 640 -640 426 -480 640 -359 640 -640 427 -640 479 -500 375 -640 480 -640 427 -640 433 -480 640 -640 480 -495 640 -640 424 -640 480 -640 428 -640 415 -640 480 -612 612 -333 500 -640 480 -427 640 -493 640 -480 640 -640 569 -500 375 -640 427 -640 483 -640 473 -640 478 -640 427 -478 640 -640 426 -427 640 -640 427 -640 479 -481 640 -640 312 -480 640 -640 480 -640 426 -640 636 -480 640 -640 480 -480 640 -640 383 -640 428 -640 329 -640 406 -640 428 -378 500 -500 375 -640 371 -428 640 -427 640 -640 359 -640 427 -640 480 -640 424 -640 427 -640 480 -500 346 -640 480 -384 640 -480 640 -640 427 -443 640 -541 640 -640 640 -640 427 -640 480 -640 541 -537 640 -427 640 -640 426 -640 427 -640 480 -444 640 -480 640 -640 480 -480 640 -640 480 -640 480 -640 544 -500 343 -640 480 -640 480 -640 427 -640 640 -640 453 -640 316 -357 500 -496 640 -480 640 -640 421 -640 480 -640 424 -640 426 -640 427 -612 612 -640 427 -640 480 -500 475 -501 640 -612 612 -480 640 -640 480 -640 425 -480 640 -639 640 -640 329 -640 427 -640 480 -640 480 -640 480 -480 640 -640 514 -427 640 -640 480 -500 376 -500 375 -640 425 -640 427 -640 488 -640 428 -640 428 -640 428 -488 500 -640 424 -640 480 -480 640 -640 536 -640 458 -500 400 -640 451 -640 454 -640 640 -640 425 -640 428 -640 426 -640 478 -500 375 -427 640 -640 400 -640 427 -640 480 -480 640 -427 640 -612 612 -640 427 -640 427 -640 480 -612 612 -480 640 -640 427 -640 360 -640 480 -640 425 -610 431 -640 385 -640 426 -640 640 -640 427 -640 452 -640 426 -640 425 -640 425 -640 480 -329 500 -640 480 -500 375 -480 640 -640 428 -640 480 -640 426 -612 612 -640 480 -238 206 -640 427 -640 480 -640 427 -500 375 -640 473 -640 480 -640 480 -640 480 -500 334 -640 426 -427 640 -640 309 -640 428 -333 500 -640 427 -480 640 -462 640 -427 640 -640 426 -640 480 -640 427 -424 640 -640 480 -640 480 -640 425 -640 640 -640 425 -640 480 -429 640 -480 640 -640 426 -475 640 -427 640 -640 480 -500 343 -427 640 -500 335 -640 480 -640 491 -419 640 -640 426 -640 427 -427 640 -480 640 -640 450 -640 480 -500 375 -640 480 -640 427 -465 421 -640 427 -640 480 -500 333 -640 428 -448 500 -640 359 -640 545 -427 640 -640 426 -640 427 -333 500 -640 480 -382 500 -640 480 -640 428 -640 480 -640 418 -640 428 -427 640 -640 480 -500 333 -640 480 -640 480 -640 428 -500 375 -640 388 -640 429 -640 480 -640 427 -640 427 -640 480 -368 640 -500 375 -640 426 -640 413 -431 500 -640 480 -640 480 -375 500 -500 332 -640 480 -640 480 -480 640 -640 426 -640 481 -426 640 -640 427 -640 478 -640 427 -640 425 -640 530 -523 640 -640 426 -640 424 -640 480 -427 640 -640 474 -640 427 -640 425 -640 395 -640 480 -480 640 -640 464 -640 462 -640 480 -640 407 -640 426 -640 480 -640 425 -320 480 -480 640 -429 640 -578 640 -640 569 -640 426 -640 480 -500 333 -640 480 -640 480 -395 500 -640 479 -640 480 -500 370 -361 640 -532 640 -640 480 -500 312 -480 640 -640 640 -640 508 -640 425 -640 480 -427 640 -640 480 -640 480 -640 420 -427 640 -640 480 -375 500 -640 426 -640 427 -640 488 -500 332 -427 640 -640 429 -640 425 -375 500 -640 360 -640 427 -640 480 -500 375 -640 480 -480 640 -612 612 -640 424 -640 424 -640 478 -640 427 -640 480 -640 480 -640 425 -500 375 -640 427 -480 640 -640 426 -640 426 -640 434 -500 333 -400 266 -500 332 -640 428 -640 480 -640 480 -500 328 -640 427 -500 417 -480 640 -500 375 -427 640 -480 640 -480 640 -480 640 -640 426 -640 424 -640 480 -640 640 -375 500 -640 427 -427 640 -640 427 -480 640 -500 252 -458 640 -640 427 -640 480 -640 427 -640 478 -480 640 -426 640 -640 425 -478 640 -427 640 -333 500 -640 425 -427 640 -640 336 -640 427 -375 500 -640 405 -480 640 -640 427 -640 501 -640 456 -640 428 -640 480 -640 473 -333 500 -640 464 -640 428 -427 640 -500 386 -500 375 -612 612 -640 427 -640 464 -457 640 -640 427 -640 429 -640 386 -640 427 -640 441 -500 334 -500 375 -640 480 -640 427 -480 640 -500 332 -640 427 -640 480 -640 480 -640 391 -640 438 -640 484 -500 375 -480 640 -640 420 -500 400 -427 640 -640 503 -640 480 -640 427 -427 640 -640 480 -640 480 -640 427 -640 425 -640 426 -427 640 -640 360 -612 612 -640 425 -640 424 -640 391 -480 640 -640 480 -500 375 -640 480 -640 480 -612 612 -480 640 -334 500 -480 640 -640 480 -640 407 -640 480 -640 361 -640 480 -640 427 -640 563 -640 425 -640 480 -500 281 -640 543 -640 480 -640 428 -640 640 -640 480 -500 375 -640 433 -461 459 -640 363 -640 480 -423 640 -640 360 -640 480 -640 425 -640 480 -640 473 -640 426 -480 640 -640 425 -640 480 -640 429 -500 381 -500 328 -640 427 -426 640 -639 480 -640 436 -640 480 -640 505 -640 480 -374 640 -640 480 -640 427 -640 480 -640 480 -640 480 -640 480 -640 427 -427 640 -640 558 -640 478 -640 427 -640 427 -500 375 -640 480 -640 427 -375 500 -640 426 -640 427 -640 429 -640 432 -640 383 -500 317 -333 500 -640 160 -375 500 -425 640 -480 640 -640 480 -640 425 -640 471 -500 375 -640 427 -640 480 -640 430 -375 500 -640 480 -500 375 -640 480 -640 427 -640 480 -640 204 -640 478 -427 640 -427 640 -640 427 -640 427 -640 397 -288 197 -640 426 -640 427 -640 640 -640 427 -640 480 -427 640 -640 480 -640 480 -640 501 -640 478 -612 612 -640 427 -426 640 -500 375 -640 480 -640 426 -520 640 -640 427 -640 426 -640 480 -640 420 -427 640 -640 480 -640 427 -476 640 -640 427 -427 640 -640 478 -640 448 -500 333 -500 285 -640 427 -494 640 -640 362 -375 500 -600 450 -640 480 -640 417 -500 496 -330 640 -500 375 -500 375 -640 478 -640 480 -640 480 -640 360 -640 426 -640 428 -612 612 -427 640 -640 480 -640 366 -640 480 -640 480 -427 640 -640 480 -480 360 -640 427 -640 457 -640 360 -509 640 -640 480 -500 375 -640 427 -640 425 -640 640 -640 480 -640 529 -640 480 -640 427 -640 480 -640 425 -640 426 -640 426 -500 375 -526 640 -640 426 -335 500 -612 612 -640 454 -383 640 -640 361 -640 427 -474 640 -640 427 -640 428 -500 326 -640 480 -640 424 -640 513 -640 510 -500 375 -500 375 -480 640 -480 640 -640 606 -480 640 -480 640 -640 311 -640 494 -640 425 -427 640 -480 640 -640 428 -640 640 -600 400 -640 457 -640 480 -640 401 -640 421 -640 480 -640 480 -640 436 -500 375 -426 640 -640 429 -640 496 -500 337 -640 480 -342 500 -500 334 -640 428 -640 333 -640 480 -480 640 -408 500 -544 640 -640 480 -640 428 -640 427 -640 414 -640 504 -640 479 -500 375 -480 640 -433 500 -640 480 -640 480 -427 640 -640 480 -640 480 -640 480 -640 426 -536 640 -500 362 -500 375 -640 424 -640 480 -640 480 -640 480 -640 429 -427 640 -640 426 -640 480 -640 543 -640 360 -500 334 -640 360 -640 426 -500 375 -640 374 -500 375 -612 612 -640 426 -427 640 -427 640 -480 640 -640 480 -640 480 -640 480 -640 480 -640 480 -640 427 -423 640 -478 640 -427 640 -375 500 -640 478 -375 500 -500 332 -427 640 -427 640 -640 480 -473 640 -640 480 -640 429 -640 474 -640 480 -640 512 -500 375 -639 640 -561 640 -332 500 -480 640 -640 640 -442 640 -500 448 -640 480 -640 428 -640 480 -640 480 -640 427 -640 427 -640 480 -640 480 -640 424 -425 640 -640 436 -640 427 -640 480 -612 612 -333 500 -640 480 -612 612 -640 426 -459 322 -640 426 -640 427 -426 640 -640 480 -640 426 -640 480 -600 422 -640 480 -612 612 -640 480 -640 394 -640 360 -640 480 -640 427 -500 375 -640 478 -489 640 -640 481 -640 427 -640 337 -640 392 -640 508 -500 421 -480 640 -640 480 -640 344 -640 427 -426 640 -612 612 -640 479 -640 480 -640 557 -476 500 -640 429 -640 424 -640 480 -398 500 -640 425 -640 640 -612 612 -640 480 -640 424 -640 424 -426 640 -640 480 -640 426 -483 640 -640 453 -640 480 -500 251 -427 640 -640 427 -500 375 -640 480 -640 480 -640 424 -640 480 -427 640 -640 427 -640 480 -640 480 -640 480 -640 478 -640 640 -480 640 -506 640 -324 243 -612 612 -500 328 -640 427 -640 480 -428 640 -480 640 -640 480 -640 640 -500 375 -425 640 -640 480 -640 432 -426 640 -640 424 -640 480 -478 640 -640 360 -427 640 -640 480 -640 480 -512 640 -480 640 -481 640 -500 375 -500 333 -640 427 -595 640 -640 480 -480 640 -640 359 -640 480 -640 352 -640 480 -427 640 -640 427 -640 478 -426 640 -640 427 -640 426 -640 317 -428 640 -425 640 -251 480 -463 640 -640 419 -640 480 -640 398 -426 640 -640 480 -427 640 -640 480 -640 480 -480 640 -640 427 -640 427 -640 427 -640 480 -640 427 -333 500 -640 480 -640 480 -640 426 -640 427 -500 371 -500 376 -640 480 -480 640 -640 437 -480 640 -640 480 -426 640 -640 424 -640 359 -640 480 -640 427 -640 421 -640 427 -640 480 -640 514 -600 462 -375 500 -333 500 -500 375 -640 480 -480 640 -500 353 -640 512 -480 640 -640 510 -640 480 -640 428 -640 426 -640 480 -640 428 -480 640 -577 640 -427 640 -640 360 -595 438 -640 480 -427 640 -640 499 -333 500 -640 425 -640 480 -640 480 -612 612 -429 640 -640 480 -640 427 -640 394 -640 425 -640 480 -480 640 -640 480 -640 413 -615 640 -640 427 -640 480 -640 436 -640 427 -427 640 -640 360 -480 640 -640 428 -640 362 -640 480 -640 480 -293 450 -640 428 -640 480 -640 457 -480 640 -640 424 -478 640 -640 480 -480 640 -500 391 -424 640 -640 427 -500 374 -640 480 -500 395 -500 375 -640 427 -640 412 -640 427 -640 427 -640 427 -500 333 -640 427 -640 427 -640 427 -612 612 -480 640 -640 480 -640 480 -640 427 -480 640 -640 425 -425 640 -525 640 -640 427 -640 434 -500 463 -640 427 -427 640 -640 425 -640 480 -480 640 -427 640 -640 480 -500 400 -640 427 -640 480 -427 640 -496 500 -448 336 -426 640 -640 480 -640 480 -640 405 -480 640 -470 640 -640 427 -500 385 -426 640 -640 425 -640 480 -500 375 -640 480 -500 375 -640 426 -640 423 -640 640 -640 464 -640 425 -640 428 -500 477 -298 640 -640 480 -640 425 -640 426 -640 427 -640 480 -500 333 -640 477 -478 640 -372 500 -640 437 -640 426 -640 480 -500 375 -640 427 -500 333 -375 500 -640 480 -640 354 -478 640 -640 464 -640 424 -612 612 -500 375 -640 480 -640 480 -640 571 -640 480 -640 480 -640 480 -640 480 -640 480 -640 424 -640 427 -640 427 -640 627 -640 508 -427 640 -640 476 -640 427 -640 454 -640 502 -612 612 -333 500 -424 640 -573 640 -640 424 -640 480 -640 427 -640 480 -589 640 -640 427 -640 428 -640 472 -640 428 -480 640 -512 640 -640 480 -640 480 -640 427 -640 412 -500 314 -640 480 -480 640 -500 375 -586 640 -333 500 -640 469 -640 425 -640 480 -332 500 -640 480 -640 425 -544 640 -640 458 -500 375 -480 640 -640 480 -640 480 -640 480 -320 240 -640 480 -640 480 -427 640 -500 375 -640 480 -334 500 -640 480 -640 427 -640 497 -500 375 -640 480 -640 426 -640 425 -473 640 -640 426 -640 480 -640 426 -531 640 -640 478 -640 428 -640 429 -480 640 -612 612 -640 368 -375 500 -640 480 -640 480 -640 480 -427 640 -503 640 -640 360 -640 427 -480 640 -640 427 -640 426 -640 480 -480 640 -640 426 -640 429 -640 426 -480 640 -640 427 -640 427 -640 481 -640 427 -640 427 -640 474 -597 640 -640 248 -480 360 -640 480 -640 512 -640 427 -332 500 -640 427 -640 428 -460 640 -640 426 -500 375 -420 640 -640 480 -640 480 -500 375 -481 640 -640 427 -640 427 -640 426 -640 478 -428 640 -500 375 -640 395 -640 426 -640 427 -350 233 -640 427 -386 640 -640 480 -427 640 -640 286 -640 480 -640 419 -340 500 -640 348 -335 500 -640 495 -640 366 -640 427 -640 640 -640 427 -640 425 -640 480 -640 480 -640 480 -640 427 -640 425 -500 333 -640 481 -480 640 -480 640 -427 640 -640 427 -426 640 -640 480 -640 478 -500 332 -640 427 -640 427 -500 281 -640 480 -428 640 -640 480 -280 268 -640 369 -640 427 -640 424 -640 480 -427 640 -428 640 -640 480 -640 427 -500 361 -612 612 -640 480 -480 640 -640 427 -640 478 -640 514 -480 640 -432 288 -640 392 -640 480 -640 480 -612 612 -640 361 -640 480 -333 500 -640 427 -640 427 -640 407 -640 418 -640 512 -640 426 -640 427 -500 332 -640 428 -480 640 -640 480 -640 429 -640 360 -500 375 -640 424 -640 425 -550 365 -383 640 -640 427 -430 640 -500 375 -425 640 -500 375 -500 357 -500 222 -640 427 -640 480 -480 640 -500 375 -640 428 -640 423 -421 640 -640 480 -640 480 -640 427 -640 426 -640 480 -466 640 -427 640 -500 400 -480 640 -500 333 -640 426 -480 640 -640 480 -352 288 -640 480 -640 425 -640 428 -640 426 -640 427 -640 478 -565 640 -640 426 -640 480 -500 374 -640 426 -600 500 -640 480 -640 480 -480 640 -640 480 -586 640 -640 427 -640 491 -640 327 -640 218 -500 332 -500 375 -640 480 -640 580 -638 640 -359 640 -640 360 -516 640 -640 226 -333 500 -640 427 -640 406 -640 427 -640 480 -448 336 -640 427 -520 640 -640 480 -409 500 -375 500 -640 480 -640 483 -480 640 -640 428 -500 375 -640 480 -640 480 -640 428 -400 267 -640 480 -375 500 -640 428 -640 480 -640 424 -640 427 -428 640 -640 425 -424 640 -640 480 -500 496 -333 500 -500 335 -502 640 -640 427 -640 485 -640 480 -427 640 -425 640 -334 500 -640 426 -640 480 -640 347 -640 480 -443 640 -500 335 -640 427 -640 573 -640 444 -500 375 -427 640 -640 427 -500 375 -640 427 -640 426 -426 640 -426 640 -640 480 -640 480 -640 479 -640 427 -640 480 -640 540 -640 427 -427 640 -500 375 -640 480 -500 375 -375 500 -640 480 -640 425 -437 640 -407 482 -478 640 -640 512 -500 375 -640 480 -500 375 -640 427 -640 315 -320 240 -640 371 -640 480 -640 480 -435 640 -640 480 -424 640 -612 612 -480 640 -640 640 -425 640 -640 480 -500 375 -480 304 -640 428 -640 480 -640 480 -640 427 -640 428 -640 453 -523 640 -427 640 -500 375 -640 480 -500 500 -640 425 -640 427 -500 363 -427 640 -640 427 -500 375 -383 640 -427 640 -427 640 -500 375 -640 419 -640 480 -640 427 -360 270 -640 427 -500 388 -640 427 -640 480 -640 480 -640 427 -640 425 -640 427 -640 480 -640 323 -640 426 -500 375 -640 427 -640 424 -600 600 -640 427 -480 640 -640 457 -500 302 -640 480 -640 480 -640 480 -500 375 -457 640 -640 480 -640 360 -640 427 -500 364 -612 612 -500 375 -640 427 -375 500 -480 640 -640 427 -500 375 -640 366 -640 427 -640 480 -640 555 -640 427 -640 427 -640 426 -640 480 -640 480 -640 428 -640 484 -640 491 -500 375 -640 507 -500 375 -640 480 -375 500 -640 480 -640 480 -640 480 -640 364 -640 427 -464 640 -443 640 -640 480 -480 640 -640 363 -480 640 -480 640 -640 395 -427 640 -640 390 -640 427 -500 375 -640 427 -500 333 -612 612 -640 427 -640 480 -640 480 -491 640 -640 480 -640 428 -640 211 -640 427 -640 480 -640 480 -640 464 -640 457 -640 480 -640 428 -640 480 -640 425 -640 426 -640 360 -500 375 -640 480 -500 318 -640 428 -640 480 -375 500 -480 640 -347 500 -612 612 -640 425 -640 480 -640 542 -640 412 -640 427 -500 378 -399 640 -480 640 -640 425 -640 425 -612 612 -640 481 -640 427 -427 640 -640 419 -428 640 -640 427 -640 453 -425 640 -640 479 -640 480 -640 480 -457 640 -512 640 -480 640 -640 443 -640 427 -640 497 -500 333 -427 640 -425 640 -427 640 -480 640 -500 375 -640 400 -468 640 -425 640 -640 478 -332 500 -640 424 -640 424 -640 493 -640 485 -333 500 -640 426 -640 427 -640 425 -640 426 -640 429 -480 640 -612 612 -640 399 -640 480 -640 417 -500 400 -640 421 -640 321 -640 480 -427 640 -427 640 -640 480 -640 480 -640 480 -428 640 -640 425 -640 427 -414 640 -640 480 -640 480 -640 425 -640 424 -640 480 -509 640 -640 425 -500 375 -500 417 -427 640 -640 424 -640 480 -640 480 -480 640 -500 375 -430 640 -640 480 -640 427 -640 480 -640 427 -640 457 -640 425 -427 640 -375 500 -640 476 -640 349 -640 426 -640 488 -333 500 -480 640 -444 640 -640 480 -640 427 -500 375 -640 480 -320 240 -457 640 -640 480 -640 361 -640 425 -640 480 -640 428 -640 427 -640 425 -640 428 -640 427 -640 480 -640 346 -640 480 -559 640 -500 331 -500 375 -359 640 -640 479 -640 480 -480 640 -375 500 -427 640 -640 429 -480 640 -640 480 -640 428 -640 481 -640 531 -375 500 -640 427 -480 640 -640 351 -640 480 -640 360 -480 640 -640 640 -640 425 -640 480 -480 640 -640 427 -500 333 -640 479 -480 640 -640 426 -640 376 -426 640 -640 428 -640 427 -500 333 -640 565 -480 640 -640 480 -640 417 -640 480 -500 375 -500 333 -640 480 -500 396 -317 640 -425 640 -640 427 -480 640 -640 428 -640 480 -640 480 -500 375 -640 426 -640 361 -640 425 -375 500 -640 427 -427 640 -640 427 -427 640 -640 426 -375 500 -437 640 -640 427 -640 425 -640 480 -640 457 -640 480 -640 480 -600 640 -640 424 -640 425 -640 480 -640 425 -640 480 -500 296 -478 640 -640 399 -640 624 -640 426 -640 427 -640 471 -640 427 -450 640 -640 427 -640 383 -500 335 -640 360 -640 359 -640 480 -640 427 -418 640 -640 480 -460 640 -640 482 -480 640 -640 506 -640 480 -480 640 -375 500 -640 481 -427 640 -640 427 -600 400 -500 333 -640 360 -640 480 -480 640 -425 640 -640 480 -640 480 -640 428 -640 355 -480 640 -640 480 -640 480 -640 480 -427 640 -640 427 -500 375 -427 640 -500 375 -640 427 -640 480 -640 427 -500 375 -640 334 -640 427 -640 427 -640 427 -638 640 -500 375 -640 480 -640 428 -437 640 -429 640 -500 476 -640 359 -640 480 -640 447 -640 480 -640 360 -500 495 -500 375 -500 362 -640 480 -333 500 -640 399 -640 218 -640 418 -640 480 -640 445 -640 480 -640 480 -640 459 -640 480 -480 640 -612 612 -480 640 -640 480 -640 481 -640 427 -640 426 -427 640 -640 471 -427 640 -480 640 -640 427 -640 426 -480 640 -640 426 -640 416 -640 480 -640 428 -640 480 -640 480 -640 427 -428 640 -640 640 -612 612 -640 443 -640 480 -640 427 -640 480 -640 480 -334 500 -640 480 -640 425 -500 375 -640 427 -640 427 -640 480 -640 420 -640 426 -640 480 -640 478 -640 426 -612 612 -640 478 -640 539 -640 640 -332 500 -640 480 -480 640 -640 485 -640 480 -500 328 -640 640 -640 361 -640 426 -640 427 -640 480 -640 324 -640 383 -640 480 -511 640 -640 480 -500 285 -500 332 -640 480 -640 459 -480 640 -640 469 -500 375 -640 359 -600 400 -640 426 -640 480 -640 411 -640 480 -438 424 -640 427 -551 640 -640 480 -640 427 -640 408 -640 480 -640 424 -640 512 -640 480 -375 500 -640 427 -612 612 -640 480 -640 528 -479 640 -426 640 -640 480 -640 427 -640 359 -500 333 -640 480 -550 640 -640 480 -640 434 -633 640 -640 425 -427 640 -640 478 -640 480 -640 480 -640 480 -640 516 -640 455 -640 427 -640 480 -640 426 -640 427 -428 640 -640 480 -640 482 -640 259 -640 426 -640 457 -480 640 -427 640 -640 427 -640 480 -640 480 -640 484 -640 497 -640 426 -640 424 -640 480 -640 480 -640 480 -640 360 -482 640 -425 640 -640 361 -640 480 -640 480 -427 640 -640 480 -640 426 -640 480 -640 374 -640 426 -640 328 -640 427 -612 612 -333 500 -640 338 -500 400 -640 427 -640 427 -640 480 -640 426 -640 427 -500 375 -640 425 -640 480 -640 480 -500 375 -427 640 -640 429 -640 427 -640 466 -500 266 -500 400 -640 427 -504 640 -640 480 -480 640 -500 375 -500 375 -500 375 -500 375 -427 640 -640 480 -480 640 -640 480 -640 536 -640 427 -500 375 -640 480 -500 375 -500 375 -640 427 -612 612 -640 481 -640 427 -640 427 -500 375 -640 427 -640 509 -375 500 -640 640 -612 612 -640 480 -640 425 -640 480 -500 375 -640 425 -640 480 -640 426 -640 449 -640 480 -640 608 -640 359 -640 424 -480 640 -640 480 -640 464 -640 387 -408 640 -640 480 -640 427 -640 427 -640 468 -480 640 -375 500 -428 640 -640 480 -480 640 -640 480 -640 480 -375 500 -467 640 -640 425 -640 640 -640 480 -640 480 -640 427 -640 480 -480 640 -640 428 -640 427 -640 427 -640 480 -500 375 -640 428 -612 612 -500 333 -427 640 -640 425 -426 640 -640 480 -640 480 -640 360 -640 480 -500 375 -480 640 -480 640 -427 640 -480 640 -640 427 -640 416 -640 427 -640 424 -640 480 -640 385 -640 428 -640 480 -640 466 -640 425 -640 427 -480 640 -480 640 -480 640 -640 441 -640 480 -332 500 -640 428 -640 480 -427 640 -640 513 -640 427 -612 612 -480 640 -640 640 -640 480 -640 428 -425 640 -640 480 -640 640 -480 640 -640 428 -640 288 -640 427 -640 425 -640 479 -640 427 -640 426 -427 640 -480 640 -320 240 -640 480 -640 426 -500 375 -640 480 -640 423 -640 604 -640 436 -500 281 -640 427 -612 612 -427 640 -640 427 -427 640 -640 428 -640 427 -500 335 -640 428 -480 640 -640 427 -640 427 -640 480 -480 640 -640 427 -500 335 -335 500 -640 480 -640 391 -426 640 -431 431 -640 480 -640 463 -640 425 -640 427 -640 425 -500 332 -424 640 -500 375 -478 640 -640 480 -640 436 -640 480 -480 640 -640 596 -640 640 -640 424 -413 500 -640 477 -426 640 -426 640 -640 640 -640 427 -640 480 -640 428 -640 428 -640 457 -640 426 -640 640 -375 500 -640 473 -640 426 -640 427 -640 427 -640 478 -431 500 -640 429 -640 426 -640 480 -640 427 -427 640 -640 427 -640 427 -640 428 -640 480 -375 500 -640 480 -320 225 -640 480 -640 427 -640 480 -640 427 -426 640 -427 640 -640 404 -638 640 -640 429 -640 427 -640 480 -500 375 -431 640 -640 428 -512 640 -467 640 -427 640 -640 429 -427 640 -478 640 -640 480 -500 333 -640 480 -448 279 -640 427 -640 426 -640 427 -478 640 -640 513 -491 640 -480 640 -640 480 -640 480 -640 480 -640 480 -640 427 -480 640 -500 375 -481 640 -485 500 -640 438 -640 480 -640 480 -500 375 -640 425 -640 480 -640 480 -640 424 -640 427 -500 375 -640 424 -640 426 -640 480 -500 375 -640 428 -640 360 -640 480 -640 428 -640 427 -640 427 -427 640 -640 593 -424 640 -640 480 -640 425 -640 378 -640 480 -640 424 -640 480 -404 640 -500 345 -640 480 -640 480 -640 427 -500 370 -500 332 -500 333 -640 511 -427 640 -640 426 -433 640 -480 640 -640 428 -640 348 -500 375 -500 333 -640 441 -500 358 -640 426 -640 480 -426 640 -427 640 -640 491 -383 640 -333 500 -640 425 -640 482 -639 640 -500 298 -427 640 -375 500 -640 480 -640 480 -375 500 -640 427 -500 375 -640 480 -637 640 -640 640 -640 429 -480 640 -640 480 -640 471 -500 375 -640 417 -480 640 -427 640 -500 375 -640 486 -640 480 -428 640 -640 424 -640 480 -500 365 -500 375 -460 640 -640 426 -427 640 -640 480 -640 399 -640 480 -640 480 -612 612 -640 429 -640 426 -512 640 -640 429 -375 500 -414 640 -480 640 -640 480 -640 360 -640 480 -478 640 -360 640 -640 480 -427 640 -640 424 -375 500 -427 640 -640 375 -500 335 -640 427 -640 480 -640 512 -417 640 -640 427 -640 480 -640 427 -640 427 -640 480 -640 427 -640 424 -500 343 -640 428 -640 474 -640 480 -640 480 -640 418 -640 480 -640 640 -500 334 -433 640 -640 480 -640 480 -443 640 -640 640 -640 427 -640 425 -640 428 -640 383 -640 480 -427 640 -640 384 -480 640 -640 426 -640 429 -640 480 -640 480 -640 480 -640 426 -640 480 -640 428 -640 480 -640 480 -425 640 -640 480 -481 640 -640 427 -640 480 -427 640 -360 640 -640 480 -640 480 -500 375 -425 640 -640 480 -640 480 -640 523 -640 480 -512 640 -427 640 -640 640 -640 640 -640 427 -640 480 -480 640 -480 640 -480 640 -479 640 -480 640 -640 427 -640 427 -427 640 -640 427 -640 427 -640 480 -500 456 -640 429 -640 640 -640 424 -640 447 -375 500 -640 427 -640 458 -640 480 -640 428 -640 424 -640 360 -640 480 -640 361 -363 500 -640 480 -640 480 -640 356 -640 427 -631 640 -640 480 -480 640 -429 640 -640 480 -640 426 -640 427 -640 480 -640 480 -640 427 -479 640 -480 640 -640 427 -640 480 -500 330 -640 427 -515 640 -640 573 -638 640 -640 427 -640 480 -528 512 -640 480 -640 427 -424 640 -640 480 -480 640 -640 480 -640 480 -640 427 -640 428 -500 333 -500 375 -420 640 -640 427 -640 426 -640 480 -500 336 -500 333 -500 375 -640 480 -500 375 -480 640 -640 480 -640 480 -332 500 -640 557 -640 390 -640 480 -428 640 -640 441 -640 427 -640 480 -500 420 -640 427 -640 425 -640 480 -640 428 -640 480 -480 640 -640 456 -640 480 -432 499 -640 478 -425 640 -480 640 -640 568 -612 612 -640 480 -500 375 -640 428 -640 427 -427 640 -612 612 -640 428 -640 486 -640 426 -640 480 -640 427 -640 480 -480 640 -640 359 -457 640 -640 426 -640 428 -428 640 -640 427 -640 480 -375 500 -640 480 -640 640 -640 480 -500 500 -500 375 -500 281 -640 427 -427 640 -640 480 -640 480 -427 640 -640 640 -640 428 -427 640 -480 640 -500 374 -640 480 -500 380 -500 375 -427 640 -375 500 -640 427 -640 425 -612 612 -458 500 -375 500 -640 640 -600 411 -640 480 -427 640 -640 427 -375 500 -500 375 -333 500 -640 428 -640 479 -640 480 -640 426 -640 480 -640 386 -640 480 -640 457 -640 480 -640 428 -500 359 -500 500 -427 640 -640 480 -640 640 -501 640 -640 425 -480 640 -640 480 -640 480 -375 500 -640 458 -640 426 -640 480 -640 427 -640 480 -375 500 -480 640 -329 500 -500 373 -539 640 -640 424 -640 480 -640 476 -521 640 -640 480 -640 480 -640 480 -640 480 -640 480 -480 640 -640 427 -640 418 -640 480 -640 426 -640 480 -480 640 -480 640 -640 480 -427 640 -426 640 -612 612 -640 480 -375 500 -640 480 -640 479 -333 500 -640 480 -500 333 -640 425 -636 636 -640 427 -640 426 -427 640 -500 375 -640 480 -431 640 -640 393 -426 640 -612 612 -640 368 -375 500 -639 640 -640 429 -427 640 -640 370 -359 640 -640 427 -640 398 -500 436 -640 390 -640 469 -427 640 -640 427 -640 429 -500 353 -640 391 -640 429 -500 281 -512 640 -640 426 -612 612 -640 480 -480 640 -640 427 -456 500 -512 640 -427 640 -612 612 -427 640 -612 612 -640 426 -640 359 -427 640 -640 360 -500 375 -640 456 -640 427 -640 427 -640 427 -640 480 -640 241 -429 640 -343 500 -640 480 -640 480 -640 480 -640 427 -640 427 -334 500 -640 425 -640 480 -640 426 -640 480 -640 480 -640 478 -473 640 -640 480 -640 480 -445 500 -640 640 -500 375 -640 426 -453 640 -640 480 -500 281 -640 427 -640 484 -640 426 -640 480 -640 427 -424 640 -425 282 -640 521 -640 495 -640 480 -640 480 -333 500 -640 426 -640 480 -640 640 -640 480 -640 605 -640 400 -457 640 -640 480 -640 480 -500 375 -480 640 -640 480 -427 640 -640 424 -640 423 -640 480 -480 640 -500 160 -640 480 -640 427 -640 478 -640 320 -640 480 -375 500 -640 479 -640 480 -640 429 -640 480 -640 427 -427 640 -427 640 -480 640 -640 213 -640 640 -640 469 -640 457 -640 480 -640 610 -640 425 -500 334 -541 640 -640 480 -428 640 -500 375 -610 640 -640 425 -640 428 -612 612 -640 499 -640 427 -427 640 -375 500 -483 640 -640 480 -640 428 -640 423 -640 480 -640 480 -480 640 -468 640 -500 375 -640 427 -640 480 -240 320 -640 428 -480 640 -640 480 -425 640 -500 375 -500 333 -640 427 -400 300 -640 480 -640 426 -640 254 -375 500 -640 480 -640 427 -464 640 -480 640 -640 427 -640 640 -427 640 -383 640 -640 427 -430 640 -640 378 -640 427 -640 480 -640 444 -640 427 -500 333 -375 500 -640 427 -640 425 -640 428 -640 480 -640 428 -640 390 -500 375 -640 398 -640 480 -640 480 -640 480 -511 640 -640 480 -640 411 -640 360 -640 480 -500 333 -640 428 -640 360 -640 478 -640 480 -640 480 -640 389 -427 640 -376 500 -425 640 -500 375 -500 375 -500 333 -640 478 -640 480 -640 427 -640 480 -640 496 -640 466 -500 500 -640 428 -640 480 -640 480 -640 480 -480 640 -500 375 -640 480 -640 480 -480 640 -640 427 -640 480 -640 480 -640 427 -640 425 -640 640 -640 451 -640 427 -427 640 -500 375 -640 591 -640 536 -640 480 -640 425 -480 640 -480 640 -426 640 -640 427 -427 640 -478 640 -480 640 -640 427 -500 375 -640 480 -640 428 -640 424 -500 334 -500 306 -427 640 -612 612 -333 500 -500 400 -640 427 -480 640 -454 640 -640 436 -480 640 -640 480 -333 500 -640 480 -640 427 -640 427 -427 640 -640 480 -480 640 -427 640 -500 332 -640 415 -640 427 -640 426 -640 479 -428 640 -640 459 -640 480 -640 427 -640 480 -640 426 -640 480 -640 480 -500 375 -640 427 -640 428 -640 480 -640 502 -640 311 -495 640 -640 480 -640 480 -640 358 -640 493 -320 240 -640 406 -640 427 -640 480 -640 478 -640 480 -640 480 -640 501 -640 427 -640 481 -640 426 -640 480 -420 640 -640 480 -480 640 -640 428 -640 480 -459 344 -640 427 -640 449 -640 427 -640 425 -640 480 -480 640 -640 226 -480 640 -640 503 -640 427 -640 425 -639 640 -640 425 -640 427 -640 480 -500 375 -456 640 -500 375 -612 612 -640 472 -612 612 -640 512 -640 426 -640 458 -500 375 -480 640 -427 640 -640 480 -500 332 -640 427 -427 640 -640 439 -640 427 -640 480 -480 640 -640 480 -638 640 -480 640 -640 426 -612 612 -433 640 -640 340 -640 427 -416 640 -640 427 -640 480 -640 480 -640 480 -375 500 -585 640 -480 640 -640 480 -640 427 -464 640 -640 427 -640 640 -640 360 -423 640 -640 427 -640 383 -612 612 -640 427 -640 480 -640 427 -500 331 -524 640 -333 500 -640 480 -640 238 -640 428 -640 427 -500 374 -640 427 -425 640 -427 640 -640 640 -640 427 -478 640 -500 375 -640 480 -499 640 -640 427 -640 640 -640 480 -640 315 -640 480 -500 335 -640 614 -513 640 -640 480 -640 348 -640 480 -500 375 -640 480 -640 473 -500 369 -437 640 -640 360 -640 427 -640 480 -640 427 -480 640 -500 333 -640 429 -640 480 -480 640 -640 480 -640 480 -640 428 -640 410 -375 500 -428 640 -500 334 -640 458 -612 612 -640 426 -300 400 -480 640 -429 640 -640 427 -640 424 -288 307 -640 480 -640 424 -640 426 -500 334 -500 375 -389 500 -640 428 -640 358 -640 426 -480 640 -480 640 -428 640 -375 500 -640 427 -640 427 -640 427 -500 375 -640 534 -640 425 -640 359 -640 427 -409 500 -640 304 -427 640 -640 480 -640 283 -640 427 -480 640 -640 512 -612 612 -640 411 -640 357 -640 425 -640 348 -640 427 -640 427 -640 424 -640 437 -480 640 -480 640 -480 640 -640 480 -640 428 -640 480 -500 333 -640 427 -640 427 -640 427 -640 480 -640 427 -500 333 -427 640 -498 500 -640 480 -640 427 -480 640 -500 384 -427 640 -640 427 -400 500 -640 640 -640 424 -640 463 -300 429 -612 612 -640 477 -640 427 -600 399 -640 480 -640 480 -640 427 -640 426 -640 428 -425 640 -427 640 -640 478 -640 479 -640 427 -640 491 -640 449 -480 640 -480 640 -640 513 -640 427 -640 427 -640 428 -612 612 -375 500 -640 447 -640 449 -640 427 -640 427 -640 480 -640 427 -640 480 -480 640 -640 428 -640 426 -427 640 -640 365 -500 375 -640 480 -640 424 -427 640 -640 426 -640 426 -640 428 -640 426 -478 640 -640 480 -408 640 -640 427 -500 310 -480 640 -640 426 -640 480 -630 640 -427 640 -640 428 -640 427 -640 492 -640 499 -480 640 -640 427 -500 333 -480 640 -427 640 -640 389 -640 480 -425 640 -640 480 -640 436 -640 427 -640 449 -478 640 -480 640 -426 640 -640 434 -640 427 -480 640 -640 640 -500 375 -640 422 -480 640 -375 500 -640 426 -640 480 -640 425 -427 640 -640 480 -640 480 -640 423 -640 640 -640 383 -640 424 -640 480 -480 640 -612 612 -640 480 -640 480 -640 480 -640 427 -480 640 -555 640 -640 480 -375 500 -640 360 -640 427 -640 480 -640 425 -640 427 -640 480 -640 427 -640 427 -500 375 -480 640 -420 640 -500 375 -330 500 -612 612 -612 612 -640 361 -500 333 -640 512 -640 480 -500 375 -640 425 -640 480 -612 612 -640 428 -640 427 -427 640 -427 640 -640 456 -640 426 -640 291 -375 500 -640 427 -640 454 -640 427 -640 426 -612 612 -430 640 -500 333 -640 482 -640 480 -333 500 -426 640 -640 425 -640 427 -640 427 -640 480 -640 478 -427 640 -640 427 -491 640 -640 425 -640 427 -640 480 -500 375 -640 480 -498 640 -640 480 -640 427 -640 480 -488 640 -427 640 -500 332 -480 640 -480 640 -612 612 -640 480 -640 420 -375 500 -640 369 -640 424 -640 480 -426 640 -480 640 -640 480 -640 295 -500 347 -480 640 -640 359 -640 640 -640 480 -640 480 -640 428 -640 425 -640 479 -640 427 -640 429 -640 360 -612 612 -500 333 -640 480 -500 375 -426 640 -598 640 -640 480 -333 500 -640 426 -388 640 -426 640 -640 427 -640 478 -500 351 -640 426 -480 640 -640 430 -500 375 -640 484 -640 423 -640 480 -500 375 -640 480 -500 375 -640 426 -640 416 -500 333 -375 500 -500 361 -640 426 -427 640 -640 427 -640 427 -500 375 -640 424 -612 612 -393 640 -640 427 -375 500 -640 480 -469 640 -640 533 -640 511 -640 426 -457 640 -480 640 -640 387 -500 375 -640 427 -640 482 -640 427 -640 480 -480 640 -375 500 -424 640 -480 640 -426 640 -640 480 -640 425 -640 429 -640 546 -640 480 -468 640 -640 430 -458 640 -640 426 -640 401 -640 427 -640 480 -426 640 -640 427 -640 426 -640 480 -480 640 -640 427 -640 426 -438 640 -640 480 -428 500 -640 480 -640 480 -640 480 -640 480 -640 640 -480 640 -640 400 -500 333 -640 426 -500 375 -427 640 -427 640 -640 480 -640 482 -612 612 -640 480 -640 412 -343 500 -426 640 -425 640 -640 480 -640 427 -640 366 -640 480 -452 640 -333 500 -640 427 -612 612 -640 480 -512 640 -532 640 -640 457 -640 428 -640 428 -640 424 -500 375 -640 427 -429 640 -640 427 -640 427 -640 480 -640 480 -332 500 -640 480 -640 427 -640 209 -480 640 -480 640 -640 427 -640 427 -640 426 -640 480 -640 428 -320 480 -640 415 -426 640 -640 480 -400 640 -478 640 -640 479 -640 480 -640 427 -612 612 -375 500 -640 429 -427 640 -500 309 -500 360 -640 426 -500 375 -612 612 -335 500 -640 480 -640 480 -640 426 -640 480 -640 480 -336 448 -308 500 -330 500 -640 480 -640 424 -640 359 -640 453 -640 416 -273 346 -612 612 -375 500 -640 480 -640 480 -640 425 -300 432 -640 480 -640 428 -500 375 -480 640 -640 480 -500 375 -640 480 -640 458 -480 640 -426 640 -480 640 -640 480 -311 500 -478 640 -640 426 -640 480 -640 480 -480 640 -640 480 -500 375 -640 428 -640 480 -500 332 -640 426 -640 425 -414 500 -500 398 -640 480 -640 427 -640 427 -425 640 -640 432 -640 425 -640 384 -640 427 -640 289 -640 545 -640 480 -500 333 -429 640 -500 500 -640 425 -375 500 -640 480 -640 463 -640 426 -640 426 -640 433 -375 500 -500 375 -612 612 -640 480 -640 480 -640 436 -480 640 -478 640 -500 359 -640 427 -640 426 -478 640 -640 480 -447 640 -365 328 -427 640 -500 274 -480 640 -480 640 -640 425 -500 375 -640 480 -640 480 -438 640 -640 426 -640 436 -480 640 -484 500 -480 640 -640 415 -640 424 -640 480 -640 426 -424 640 -640 480 -456 640 -640 480 -640 480 -500 367 -377 500 -640 429 -480 640 -640 428 -640 480 -427 640 -500 367 -640 360 -333 500 -422 640 -480 640 -640 480 -640 425 -640 425 -640 640 -640 457 -640 427 -640 427 -480 640 -423 640 -454 640 -640 640 -425 640 -500 397 -427 640 -375 500 -500 333 -453 640 -480 640 -640 640 -640 480 -500 375 -480 640 -640 428 -500 375 -333 500 -640 480 -640 434 -427 640 -640 483 -480 640 -640 248 -640 427 -640 426 -640 480 -500 323 -640 480 -640 361 -640 428 -500 375 -640 426 -500 373 -640 427 -512 640 -640 480 -640 480 -480 640 -640 431 -640 404 -640 428 -480 640 -640 381 -428 640 -640 480 -480 640 -612 612 -640 428 -640 394 -640 427 -376 640 -640 426 -640 427 -425 640 -361 640 -427 640 -640 480 -507 640 -612 612 -640 480 -640 480 -500 333 -640 426 -640 450 -426 640 -425 640 -640 480 -640 480 -612 612 -640 427 -480 640 -612 612 -640 480 -640 480 -640 640 -439 640 -640 480 -640 426 -640 480 -640 480 -640 480 -480 640 -640 588 -640 426 -640 480 -480 640 -640 480 -640 480 -352 230 -428 640 -640 480 -640 423 -427 640 -640 512 -640 426 -406 640 -640 480 -640 487 -640 480 -299 500 -640 480 -500 375 -640 480 -640 427 -500 375 -640 480 -640 427 -640 426 -640 428 -640 420 -640 480 -428 640 -427 640 -608 640 -640 423 -480 640 -428 640 -640 478 -640 480 -640 640 -500 335 -500 322 -640 427 -375 500 -640 480 -640 478 -427 640 -640 480 -640 480 -640 528 -438 640 -640 427 -429 640 -640 480 -640 428 -375 500 -480 640 -451 640 -640 456 -640 399 -500 332 -640 427 -427 640 -640 427 -500 375 -640 427 -640 480 -640 427 -640 480 -640 480 -640 480 -640 480 -498 640 -640 427 -640 480 -640 480 -640 480 -640 480 -640 480 -500 375 -640 480 -612 612 -640 427 -640 427 -640 480 -640 361 -640 479 -640 480 -640 444 -640 427 -640 428 -450 500 -640 428 -500 375 -501 640 -500 375 -640 593 -640 427 -640 427 -640 547 -640 480 -612 612 -640 359 -640 480 -640 512 -640 421 -640 437 -500 375 -480 640 -426 640 -640 427 -480 640 -640 427 -612 612 -640 427 -640 480 -640 429 -500 500 -426 640 -640 426 -640 429 -500 375 -640 480 -640 640 -640 406 -640 480 -640 427 -480 640 -640 480 -500 375 -640 444 -640 429 -640 480 -640 400 -640 605 -640 427 -640 480 -335 500 -640 359 -640 338 -640 614 -640 480 -640 390 -487 640 -640 445 -640 427 -640 411 -640 640 -640 427 -640 428 -640 427 -640 426 -640 427 -480 640 -534 640 -480 640 -640 480 -500 333 -500 333 -480 640 -156 640 -640 480 -480 640 -640 640 -640 480 -640 512 -366 604 -375 500 -640 418 -640 419 -640 382 -427 640 -640 480 -640 424 -640 360 -640 480 -640 480 -640 425 -640 480 -480 640 -480 640 -640 480 -528 640 -425 640 -640 424 -375 500 -500 375 -320 240 -480 640 -640 427 -640 427 -332 500 -600 393 -425 640 -480 640 -640 406 -640 423 -640 428 -640 425 -499 640 -469 500 -640 359 -640 626 -640 480 -612 612 -640 480 -640 351 -428 640 -640 305 -480 640 -640 640 -480 640 -640 480 -473 640 -480 640 -640 480 -640 539 -640 427 -640 480 -640 424 -500 320 -480 640 -640 426 -500 333 -427 640 -640 480 -640 428 -330 500 -428 640 -640 480 -640 429 -480 640 -640 427 -640 427 -640 480 -640 480 -640 427 -640 426 -640 427 -640 480 -640 466 -504 640 -640 480 -480 640 -640 426 -640 480 -640 427 -640 480 -480 640 -489 640 -640 426 -640 478 -640 512 -640 480 -246 640 -640 424 -640 480 -640 480 -640 480 -430 640 -640 427 -427 640 -640 434 -640 318 -425 640 -640 480 -640 429 -375 500 -333 500 -640 425 -640 427 -480 640 -640 480 -640 480 -640 216 -640 480 -640 443 -427 640 -480 640 -480 640 -640 480 -640 480 -640 430 -480 640 -500 375 -640 495 -640 427 -640 425 -640 488 -624 640 -640 464 -426 640 -640 480 -640 426 -640 480 -480 640 -640 428 -493 640 -640 428 -612 612 -640 427 -444 640 -640 363 -640 427 -420 640 -480 640 -640 428 -480 640 -500 375 -427 640 -375 500 -640 480 -640 427 -640 480 -640 480 -640 480 -640 433 -640 426 -640 484 -640 480 -425 640 -640 428 -640 436 -640 480 -640 428 -640 480 -640 427 -640 480 -640 427 -427 640 -640 480 -640 480 -500 376 -428 640 -480 640 -640 427 -640 480 -640 480 -640 426 -500 333 -640 445 -638 640 -478 640 -640 427 -640 480 -640 480 -435 640 -640 429 -640 480 -640 427 -438 640 -640 488 -500 400 -640 409 -640 427 -479 640 -500 375 -640 480 -640 448 -640 480 -640 480 -640 480 -640 427 -640 292 -480 640 -480 640 -640 426 -500 332 -480 640 -427 640 -640 480 -480 640 -500 375 -640 480 -433 500 -640 480 -640 480 -500 246 -640 427 -640 427 -456 500 -480 640 -640 480 -640 429 -640 427 -480 640 -640 426 -424 640 -375 500 -500 333 -640 480 -427 640 -640 512 -640 480 -361 500 -375 500 -425 640 -640 425 -612 612 -640 480 -640 425 -640 426 -640 427 -359 500 -640 480 -427 640 -640 428 -427 640 -640 480 -566 640 -480 640 -640 640 -500 375 -500 375 -640 480 -375 500 -640 246 -640 480 -640 480 -427 640 -640 427 -640 427 -640 428 -612 612 -640 429 -640 432 -480 640 -500 378 -640 426 -500 375 -500 333 -640 427 -500 375 -480 640 -640 424 -500 332 -640 481 -640 427 -640 427 -640 456 -640 480 -640 480 -640 434 -640 427 -426 640 -480 640 -640 480 -640 512 -640 640 -640 596 -500 259 -640 428 -640 424 -478 640 -612 612 -504 640 -640 426 -640 428 -640 480 -640 480 -640 480 -640 480 -640 427 -459 640 -640 480 -480 640 -640 480 -427 640 -480 640 -640 480 -640 428 -420 640 -640 480 -640 437 -640 426 -500 333 -640 427 -500 375 -640 427 -640 480 -408 640 -640 428 -640 427 -640 426 -640 480 -640 480 -480 640 -324 500 -640 396 -640 428 -640 480 -640 384 -640 480 -640 480 -640 427 -640 427 -640 472 -640 480 -640 427 -612 612 -640 436 -480 640 -480 640 -640 586 -480 640 -425 640 -640 360 -640 480 -640 480 -640 281 -333 500 -640 480 -500 334 -640 429 -500 333 -640 454 -640 425 -640 480 -640 513 -640 479 -640 583 -640 512 -640 480 -640 360 -640 427 -640 334 -480 640 -640 480 -640 365 -447 640 -500 400 -500 332 -480 640 -426 640 -640 426 -480 640 -640 428 -427 640 -640 419 -318 640 -640 480 -426 640 -640 457 -480 640 -640 427 -640 480 -640 480 -640 428 -640 335 -640 429 -640 457 -640 391 -640 480 -640 428 -640 427 -640 426 -640 521 -427 640 -568 320 -640 427 -640 427 -640 513 -640 480 -500 272 -640 419 -640 480 -640 480 -375 500 -640 425 -640 480 -640 428 -500 375 -427 640 -640 480 -600 448 -640 480 -640 426 -500 375 -640 480 -640 480 -426 640 -640 424 -640 427 -500 375 -640 427 -512 640 -640 480 -640 437 -640 428 -480 640 -640 552 -639 640 -424 640 -640 378 -640 640 -640 417 -480 640 -640 480 -480 640 -640 424 -640 425 -640 427 -640 432 -640 427 -438 640 -500 500 -640 426 -640 441 -640 427 -640 427 -427 640 -640 427 -480 640 -640 359 -612 612 -500 375 -500 332 -612 612 -640 425 -500 375 -640 318 -640 428 -640 427 -500 457 -500 333 -640 480 -360 640 -640 426 -640 427 -640 427 -478 640 -413 640 -640 555 -640 357 -480 640 -612 612 -480 640 -640 427 -500 375 -427 640 -425 640 -640 462 -535 298 -640 427 -640 480 -640 428 -640 480 -427 640 -373 336 -640 480 -640 480 -640 426 -640 427 -640 427 -640 480 -640 427 -500 333 -640 465 -500 396 -500 333 -640 427 -640 426 -427 640 -640 480 -640 428 -480 640 -640 480 -500 375 -640 427 -500 333 -640 282 -640 427 -640 389 -640 544 -640 640 -640 427 -480 640 -500 375 -640 428 -640 459 -299 640 -640 411 -640 610 -612 612 -640 361 -426 640 -640 400 -640 640 -640 426 -640 480 -640 426 -640 480 -500 375 -427 640 -431 640 -640 640 -640 480 -427 640 -480 640 -640 427 -640 376 -640 480 -640 430 -500 335 -640 426 -640 427 -640 360 -338 500 -428 640 -640 429 -426 640 -427 640 -334 500 -427 640 -366 640 -640 427 -640 424 -640 480 -480 640 -640 508 -640 426 -640 457 -640 479 -500 396 -480 640 -640 424 -640 480 -640 470 -640 468 -427 640 -640 427 -640 481 -500 375 -427 640 -640 427 -640 480 -640 361 -640 426 -640 412 -640 480 -640 480 -640 515 -640 413 -640 480 -500 376 -640 360 -640 431 -357 500 -640 478 -478 640 -500 333 -640 428 -457 640 -500 500 -640 428 -640 428 -640 427 -640 427 -500 375 -640 480 -480 640 -640 480 -640 480 -640 480 -640 427 -427 640 -480 640 -494 640 -640 480 -640 480 -640 429 -640 427 -640 425 -640 480 -500 333 -640 480 -427 640 -612 612 -640 480 -640 480 -640 480 -448 336 -640 480 -640 393 -428 640 -640 480 -640 427 -500 404 -640 480 -640 427 -640 427 -640 427 -640 426 -640 428 -640 480 -640 605 -640 480 -640 427 -500 358 -640 480 -480 640 -640 480 -640 319 -500 375 -640 421 -640 427 -640 424 -640 480 -500 375 -424 640 -640 480 -640 480 -640 480 -640 480 -640 604 -640 480 -640 413 -640 427 -375 500 -640 429 -640 480 -640 428 -640 480 -640 427 -427 640 -628 640 -640 480 -500 335 -640 425 -640 427 -612 612 -640 425 -640 360 -320 240 -640 427 -500 377 -612 612 -427 640 -640 480 -640 489 -640 427 -640 424 -640 479 -640 427 -640 480 -478 640 -425 640 -640 424 -500 278 -427 640 -360 640 -640 411 -640 427 -640 480 -640 480 -640 425 -640 480 -640 368 -500 375 -640 480 -640 373 -443 640 -438 640 -640 480 -640 427 -480 640 -375 500 -500 393 -640 480 -640 316 -427 640 -640 428 -640 360 -480 640 -480 640 -640 425 -640 402 -640 480 -640 421 -500 375 -640 348 -427 640 -640 426 -640 427 -640 480 -444 640 -640 480 -640 445 -640 360 -640 480 -477 640 -640 418 -640 369 -428 640 -640 360 -500 375 -640 426 -500 375 -640 480 -640 427 -640 424 -640 438 -640 480 -640 480 -640 458 -359 640 -640 428 -640 427 -640 427 -640 462 -640 427 -640 480 -640 428 -640 480 -640 427 -500 333 -427 640 -424 640 -640 478 -500 375 -640 360 -480 640 -612 612 -640 426 -333 500 -640 640 -640 480 -640 428 -425 640 -640 428 -640 427 -640 464 -480 640 -640 427 -640 480 -640 639 -426 320 -640 426 -478 640 -640 420 -640 640 -640 427 -640 617 -500 375 -640 453 -427 640 -640 425 -640 457 -500 309 -500 375 -640 512 -480 640 -640 480 -426 640 -640 427 -640 480 -640 427 -500 500 -640 509 -640 428 -640 427 -480 640 -541 640 -640 423 -478 640 -640 427 -500 375 -640 427 -428 640 -500 333 -640 428 -640 426 -640 428 -640 480 -640 427 -640 480 -640 480 -428 640 -375 500 -500 375 -556 640 -640 463 -640 480 -500 375 -640 436 -640 427 -640 427 -444 640 -640 425 -640 480 -640 406 -480 640 -612 612 -640 480 -480 640 -640 428 -640 426 -500 333 -640 425 -640 427 -500 375 -640 427 -481 640 -640 427 -500 375 -640 425 -640 425 -640 480 -640 474 -640 480 -640 480 -640 428 -640 427 -640 427 -640 445 -640 480 -375 500 -640 480 -640 480 -466 640 -272 307 -333 500 -640 480 -640 427 -640 424 -640 480 -640 480 -481 640 -640 640 -640 427 -612 612 -640 631 -640 480 -640 427 -428 640 -640 214 -640 418 -640 427 -640 480 -612 612 -473 640 -640 361 -640 269 -375 500 -407 640 -428 640 -640 426 -426 640 -640 480 -640 480 -640 427 -480 640 -640 427 -332 500 -640 425 -640 480 -640 424 -640 427 -640 480 -375 500 -640 427 -500 375 -427 640 -640 445 -640 481 -424 640 -500 375 -500 333 -640 436 -640 480 -480 640 -640 480 -500 366 -375 500 -640 427 -640 381 -640 377 -640 426 -640 427 -640 453 -640 361 -640 426 -501 640 -640 427 -396 640 -612 612 -640 427 -500 331 -640 426 -640 429 -500 375 -640 428 -640 640 -640 480 -640 363 -640 480 -640 480 -426 640 -640 480 -640 427 -640 424 -500 375 -640 380 -640 480 -640 427 -640 425 -640 248 -640 480 -480 640 -480 640 -500 408 -480 640 -500 375 -640 381 -640 480 -426 640 -640 428 -640 426 -640 480 -480 640 -640 480 -640 427 -640 396 -640 480 -640 480 -640 259 -500 375 -580 640 -640 480 -596 640 -427 640 -640 480 -640 411 -333 500 -640 427 -500 375 -640 426 -640 480 -640 480 -640 427 -640 480 -612 612 -640 484 -640 360 -457 640 -500 341 -640 496 -425 640 -640 480 -640 480 -430 640 -500 424 -480 640 -640 427 -640 480 -505 640 -640 480 -512 640 -354 500 -640 427 -500 375 -640 640 -500 375 -640 426 -640 427 -427 640 -333 500 -640 457 -640 480 -427 640 -500 309 -640 427 -427 640 -640 480 -640 359 -640 512 -640 424 -640 480 -640 428 -333 500 -640 480 -480 640 -500 378 -640 427 -426 640 -500 375 -240 320 -240 320 -481 640 -457 640 -640 427 -640 427 -612 612 -640 425 -640 611 -478 640 -640 457 -501 640 -640 427 -640 484 -640 480 -427 640 -500 375 -640 480 -480 640 -480 640 -640 399 -427 640 -640 425 -640 427 -640 480 -640 318 -640 480 -500 375 -640 480 -640 480 -640 480 -640 428 -640 564 -640 426 -640 429 -427 640 -640 457 -640 426 -500 333 -640 480 -640 480 -640 488 -640 480 -500 313 -640 427 -640 480 -640 480 -640 427 -640 480 -500 334 -640 480 -640 471 -640 360 -640 491 -640 478 -640 427 -640 513 -465 640 -506 640 -500 333 -500 490 -480 640 -640 426 -640 369 -500 357 -640 495 -640 428 -640 425 -640 424 -640 460 -513 640 -640 428 -640 480 -640 480 -640 427 -333 500 -640 480 -640 428 -640 466 -640 486 -480 640 -480 640 -500 286 -427 640 -640 348 -403 500 -640 421 -640 480 -640 483 -640 579 -640 427 -640 380 -425 640 -640 480 -640 480 -640 482 -640 436 -640 427 -640 427 -640 478 -427 640 -640 427 -500 351 -640 480 -640 426 -640 426 -640 426 -640 480 -640 480 -640 426 -640 480 -640 427 -640 480 -640 480 -640 480 -640 426 -640 427 -500 333 -640 491 -640 424 -640 480 -427 640 -640 427 -640 480 -640 480 -640 427 -640 480 -640 427 -640 480 -427 640 -640 480 -640 480 -426 640 -640 427 -500 375 -426 640 -480 640 -428 640 -500 500 -640 480 -640 479 -486 640 -640 427 -640 480 -640 480 -640 428 -640 427 -640 426 -640 480 -640 418 -640 480 -640 427 -427 640 -640 480 -375 500 -640 480 -640 427 -640 427 -429 640 -500 375 -640 423 -595 640 -640 360 -640 480 -480 640 -640 473 -427 640 -640 427 -480 640 -480 640 -640 480 -426 640 -640 413 -612 612 -640 480 -480 640 -640 480 -480 640 -500 375 -640 427 -480 640 -640 424 -500 375 -504 351 -640 480 -640 427 -500 375 -640 427 -640 476 -640 426 -640 531 -640 427 -640 480 -640 428 -640 480 -500 354 -480 640 -480 640 -500 375 -640 581 -640 480 -640 404 -500 399 -640 253 -500 333 -640 428 -640 427 -500 333 -640 427 -640 427 -640 640 -640 427 -640 425 -640 427 -640 426 -640 428 -640 480 -640 426 -500 321 -640 457 -427 640 -640 433 -640 425 -640 424 -480 640 -640 480 -640 463 -500 361 -426 640 -640 458 -640 480 -640 480 -336 500 -640 427 -640 480 -612 612 -640 428 -500 375 -640 480 -480 640 -640 427 -640 421 -640 334 -640 480 -640 640 -500 334 -640 424 -640 427 -640 501 -640 480 -640 574 -640 425 -480 640 -500 375 -500 460 -427 640 -500 332 -375 500 -640 640 -640 480 -500 375 -427 640 -640 364 -640 480 -640 428 -640 371 -500 375 -500 375 -640 427 -640 427 -640 480 -640 480 -480 640 -375 500 -640 478 -500 358 -640 429 -640 480 -640 419 -640 425 -494 640 -480 640 -640 448 -640 565 -640 480 -640 360 -427 640 -640 480 -640 480 -640 562 -640 480 -640 428 -640 480 -640 480 -495 640 -480 640 -500 375 -375 500 -482 640 -640 389 -425 640 -640 480 -428 640 -640 480 -428 640 -640 224 -640 435 -640 428 -640 480 -640 427 -500 334 -640 427 -640 427 -427 640 -640 480 -640 426 -640 427 -453 640 -640 481 -500 334 -500 375 -500 375 -426 640 -480 640 -426 640 -457 640 -383 640 -640 480 -612 612 -333 500 -427 640 -640 489 -612 612 -640 413 -640 426 -640 427 -602 640 -640 427 -640 480 -640 480 -640 640 -640 480 -640 427 -640 427 -640 425 -640 427 -612 612 -400 500 -640 427 -640 480 -640 481 -640 480 -640 425 -640 586 -640 428 -640 579 -640 427 -640 425 -427 640 -500 334 -640 428 -375 500 -640 478 -640 480 -640 427 -640 480 -640 480 -640 426 -640 359 -478 640 -640 480 -640 442 -333 500 -640 424 -640 428 -500 332 -640 508 -500 375 -640 427 -640 480 -640 427 -640 475 -425 640 -640 427 -640 436 -460 640 -640 427 -640 360 -640 480 -427 640 -458 640 -640 426 -480 640 -375 500 -640 427 -640 384 -500 333 -640 427 -640 428 -500 333 -640 362 -640 425 -426 640 -640 429 -500 332 -480 640 -640 456 -640 411 -426 640 -640 475 -640 480 -500 333 -500 378 -375 500 -640 480 -640 480 -640 426 -640 444 -640 640 -640 478 -640 426 -640 480 -640 426 -640 480 -425 640 -640 464 -640 478 -480 640 -640 426 -640 426 -640 318 -333 500 -640 328 -500 375 -375 500 -500 331 -640 427 -640 427 -640 480 -612 612 -436 640 -640 480 -640 480 -640 427 -427 640 -375 500 -512 640 -500 350 -640 480 -640 593 -640 425 -375 500 -334 500 -640 480 -640 427 -640 480 -480 640 -480 640 -387 640 -640 427 -640 480 -640 480 -640 427 -612 612 -640 480 -640 458 -500 333 -500 345 -640 408 -640 480 -640 480 -500 375 -457 640 -500 375 -640 364 -640 480 -427 640 -640 426 -333 500 -640 480 -640 480 -458 640 -612 640 -480 640 -640 427 -450 338 -640 428 -640 480 -480 640 -428 640 -640 468 -640 558 -480 640 -612 612 -640 480 -530 640 -640 480 -640 396 -612 612 -640 427 -480 640 -640 423 -640 480 -480 640 -640 529 -500 380 -483 500 -640 427 -500 375 -480 640 -427 640 -480 640 -424 640 -640 427 -640 426 -640 424 -640 480 -640 427 -640 428 -427 640 -640 427 -612 612 -427 640 -640 480 -640 427 -480 640 -640 427 -640 480 -426 640 -427 640 -375 500 -500 376 -427 640 -480 640 -640 427 -428 640 -500 375 -640 480 -640 480 -640 480 -359 640 -640 480 -640 480 -612 612 -535 640 -400 229 -640 480 -640 480 -640 480 -640 427 -612 612 -375 500 -640 480 -336 500 -640 427 -640 480 -640 414 -640 426 -375 500 -640 427 -640 427 -640 480 -428 640 -640 480 -480 640 -640 517 -640 480 -640 480 -500 335 -640 490 -500 333 -352 288 -480 640 -640 425 -640 485 -640 427 -640 480 -640 427 -486 640 -640 427 -640 427 -320 216 -500 375 -445 600 -500 334 -500 339 -612 612 -640 428 -480 640 -640 427 -500 375 -306 640 -640 423 -640 427 -424 640 -640 427 -640 480 -500 333 -612 612 -500 333 -640 360 -640 480 -400 400 -424 640 -640 480 -640 416 -612 612 -640 480 -640 480 -640 479 -640 480 -640 480 -640 426 -640 429 -640 424 -640 427 -640 480 -640 480 -640 480 -612 612 -496 640 -640 480 -426 640 -640 425 -640 480 -640 425 -640 411 -640 640 -360 640 -480 640 -640 480 -640 480 -640 427 -362 640 -640 480 -640 426 -640 426 -500 333 -640 439 -640 511 -640 455 -640 516 -640 427 -612 612 -640 366 -480 640 -640 480 -640 428 -500 375 -640 427 -500 375 -480 640 -640 480 -612 612 -640 451 -640 480 -640 480 -500 375 -640 426 -640 427 -640 480 -640 427 -640 428 -480 640 -385 640 -480 640 -640 480 -640 480 -640 480 -640 480 -640 425 -612 612 -640 640 -640 480 -500 313 -640 480 -640 383 -612 612 -640 479 -640 480 -640 480 -640 457 -500 334 -450 290 -371 640 -640 480 -599 640 -640 453 -640 427 -480 640 -500 375 -640 426 -640 427 -640 477 -640 480 -640 427 -426 640 -640 480 -640 512 -500 375 -640 445 -427 640 -500 401 -480 640 -640 428 -640 480 -640 480 -640 360 -640 454 -640 516 -640 480 -640 479 -640 480 -640 640 -500 400 -640 480 -480 640 -640 480 -640 360 -640 425 -640 426 -359 640 -500 439 -480 640 -640 480 -640 480 -519 640 -491 640 -480 640 -640 479 -640 424 -640 427 -640 360 -640 402 -426 640 -640 480 -481 640 -426 640 -640 425 -427 640 -612 612 -640 480 -640 427 -426 640 -481 640 -480 640 -640 384 -640 426 -612 612 -640 480 -640 361 -640 640 -359 640 -640 480 -640 427 -640 427 -640 472 -500 375 -640 427 -426 640 -640 480 -640 480 -640 480 -640 426 -612 612 -640 428 -640 422 -640 427 -640 427 -640 427 -640 425 -640 428 -640 480 -388 450 -640 427 -640 480 -640 360 -640 427 -500 375 -640 425 -640 426 -640 481 -427 640 -640 484 -640 443 -640 425 -424 640 -478 640 -427 640 -640 438 -500 375 -640 480 -500 375 -500 358 -481 640 -640 428 -480 640 -480 640 -640 480 -425 640 -640 480 -640 329 -640 427 -640 426 -640 480 -640 480 -640 427 -640 483 -640 480 -428 640 -640 425 -500 375 -614 640 -500 334 -640 427 -375 500 -640 640 -500 400 -640 480 -640 447 -640 428 -640 427 -332 500 -480 640 -500 333 -640 520 -500 333 -467 350 -427 640 -640 427 -640 427 -375 500 -640 427 -425 640 -640 426 -640 512 -640 427 -640 429 -640 429 -500 375 -428 640 -500 333 -640 428 -640 426 -640 480 -500 333 -640 480 -478 640 -640 380 -640 481 -640 402 -640 427 -500 375 -500 332 -640 372 -640 318 -640 480 -640 427 -640 478 -640 335 -500 375 -640 426 -640 480 -640 640 -640 480 -480 640 -640 480 -640 480 -375 500 -324 500 -640 432 -640 425 -640 480 -640 360 -640 427 -640 480 -640 428 -427 640 -500 400 -640 480 -640 480 -640 480 -375 500 -621 480 -640 386 -500 500 -640 426 -640 480 -640 480 -500 375 -640 480 -640 398 -640 427 -500 375 -640 494 -480 640 -424 640 -640 480 -640 366 -640 480 -446 640 -640 427 -500 415 -640 427 -331 500 -612 612 -640 427 -640 480 -640 511 -427 640 -640 428 -600 400 -640 424 -640 480 -640 480 -640 427 -640 468 -640 480 -640 427 -640 480 -640 359 -640 418 -640 427 -375 500 -640 480 -640 427 -500 375 -480 640 -640 480 -478 640 -612 612 -640 480 -640 431 -640 427 -480 640 -640 428 -480 640 -464 640 -480 640 -612 612 -500 375 -640 428 -640 480 -640 503 -500 333 -428 640 -640 480 -640 281 -640 428 -422 640 -352 640 -640 480 -640 427 -500 339 -640 432 -640 427 -640 427 -427 640 -640 424 -332 500 -640 427 -612 612 -640 361 -640 427 -480 640 -640 541 -640 434 -640 428 -480 640 -640 480 -640 480 -640 402 -640 480 -640 428 -501 640 -427 640 -426 640 -640 426 -640 426 -444 640 -480 640 -640 480 -612 612 -640 429 -640 445 -640 364 -640 427 -640 426 -640 425 -640 360 -428 640 -500 375 -640 523 -640 480 -640 519 -640 480 -640 426 -640 426 -640 428 -640 480 -480 640 -425 640 -640 640 -640 480 -612 612 -640 480 -640 427 -640 480 -640 427 -427 640 -640 427 -640 427 -375 500 -640 480 -640 427 -404 500 -640 415 -640 480 -640 480 -427 640 -640 428 -500 375 -480 640 -512 640 -640 480 -427 640 -640 366 -481 640 -500 375 -640 480 -640 426 -640 432 -640 480 -640 427 -640 427 -640 426 -640 427 -640 480 -612 612 -640 480 -640 480 -500 375 -640 427 -640 435 -533 640 -480 640 -427 640 -640 427 -640 427 -640 426 -640 426 -640 480 -640 480 -500 375 -640 640 -640 427 -640 482 -640 427 -640 480 -600 450 -427 640 -640 424 -426 640 -640 480 -640 425 -640 480 -463 640 -640 457 -640 400 -640 427 -640 517 -640 426 -640 425 -640 427 -640 480 -427 640 -426 640 -480 640 -640 427 -640 480 -640 512 -640 428 -427 640 -640 467 -426 640 -640 424 -640 640 -426 640 -640 444 -640 427 -640 427 -640 375 -640 428 -480 640 -640 426 -640 500 -640 427 -640 427 -427 640 -640 361 -640 480 -480 640 -500 328 -640 480 -640 480 -426 640 -640 480 -640 478 -640 454 -640 400 -640 480 -640 480 -640 360 -640 480 -640 480 -500 375 -480 640 -640 640 -640 480 -640 480 -640 427 -640 480 -640 480 -640 480 -640 428 -640 640 -640 427 -640 428 -640 393 -640 406 -500 375 -640 491 -473 640 -427 640 -640 480 -640 480 -500 332 -640 425 -640 472 -640 480 -640 428 -375 500 -640 384 -640 480 -640 480 -426 640 -640 427 -375 500 -640 480 -640 480 -640 480 -375 500 -640 427 -640 457 -539 640 -640 639 -500 375 -640 427 -640 428 -640 461 -480 640 -640 427 -500 375 -428 640 -480 640 -240 320 -640 425 -640 479 -612 612 -640 426 -640 480 -640 425 -640 432 -640 480 -640 313 -640 480 -640 640 -640 480 -500 375 -640 429 -640 421 -640 428 -640 480 -428 640 -640 480 -640 488 -640 480 -500 285 -640 359 -640 480 -640 383 -476 640 -480 640 -480 640 -640 344 -480 640 -640 427 -640 383 -480 640 -480 640 -640 480 -441 500 -480 640 -640 480 -640 425 -640 640 -640 480 -640 480 -640 427 -482 482 -640 428 -640 425 -640 428 -480 640 -640 427 -640 360 -640 426 -480 640 -500 339 -500 350 -640 480 -500 334 -640 458 -640 425 -640 480 -481 640 -640 425 -640 480 -640 428 -640 480 -640 480 -640 480 -640 480 -500 375 -640 427 -640 255 -480 640 -640 480 -335 640 -640 427 -640 426 -600 449 -640 480 -640 478 -425 640 -612 612 -640 480 -500 333 -640 427 -640 480 -332 500 -640 301 -481 640 -640 479 -384 640 -640 468 -640 383 -640 480 -291 455 -640 480 -640 427 -640 480 -480 640 -427 640 -640 424 -640 427 -500 375 -640 458 -480 640 -480 640 -640 426 -640 640 -480 640 -448 336 -500 375 -640 425 -640 425 -601 640 -640 480 -640 427 -640 427 -425 640 -500 416 -640 427 -640 541 -640 481 -640 480 -640 409 -640 427 -640 399 -500 375 -640 427 -449 640 -640 427 -640 478 -640 480 -640 425 -640 428 -500 333 -640 598 -500 333 -375 500 -427 640 -640 213 -500 333 -640 480 -640 444 -429 640 -500 375 -640 480 -500 375 -427 640 -640 614 -640 427 -480 640 -640 480 -480 640 -426 640 -640 427 -428 640 -640 426 -640 457 -640 424 -640 480 -640 426 -640 427 -640 426 -423 640 -640 480 -640 427 -640 360 -640 427 -640 480 -436 640 -428 640 -375 500 -640 530 -640 480 -500 375 -640 427 -640 428 -640 480 -640 426 -640 424 -640 480 -514 640 -640 428 -640 427 -640 428 -640 427 -640 413 -612 612 -640 424 -640 480 -640 312 -640 427 -640 427 -640 426 -485 640 -640 360 -427 640 -640 513 -640 427 -640 629 -640 426 -640 427 -640 640 -640 427 -640 480 -640 480 -640 480 -478 640 -640 465 -400 320 -500 375 -640 427 -472 640 -640 480 -480 640 -640 438 -500 375 -350 500 -640 475 -640 480 -640 480 -612 612 -640 442 -360 640 -640 480 -640 481 -640 480 -640 388 -640 480 -640 480 -640 334 -640 401 -640 425 -640 478 -640 412 -640 480 -577 448 -426 640 -406 500 -640 427 -478 640 -480 640 -640 427 -500 374 -427 640 -478 640 -640 480 -640 469 -640 428 -640 480 -640 427 -640 480 -500 375 -640 480 -640 480 -500 400 -640 480 -640 480 -396 640 -640 415 -640 427 -640 480 -640 426 -500 375 -480 640 -640 427 -640 480 -640 360 -640 426 -480 640 -640 427 -640 427 -640 428 -500 333 -640 427 -640 480 -640 425 -427 640 -640 538 -640 480 -424 640 -640 441 -501 640 -640 480 -480 640 -640 474 -640 429 -640 425 -640 378 -640 480 -640 480 -640 430 -640 426 -496 640 -480 640 -500 375 -640 480 -480 640 -480 360 -500 378 -640 480 -480 640 -640 480 -640 613 -640 428 -427 640 -482 640 -500 356 -640 427 -640 640 -480 640 -640 438 -426 640 -640 480 -640 360 -640 360 -640 427 -640 483 -500 375 -640 428 -640 409 -500 334 -640 429 -640 427 -457 640 -640 444 -640 480 -640 427 -640 427 -640 427 -640 383 -425 640 -480 640 -424 640 -500 475 -640 480 -640 427 -640 480 -640 427 -640 427 -640 427 -640 480 -640 427 -640 425 -427 640 -640 480 -480 640 -480 640 -640 427 -500 258 -640 480 -640 480 -640 480 -640 450 -640 480 -640 359 -640 604 -640 427 -500 275 -640 443 -451 640 -640 426 -500 333 -640 427 -640 425 -427 640 -640 309 -640 480 -640 427 -640 435 -427 640 -640 480 -640 361 -640 427 -640 480 -640 479 -640 480 -640 480 -427 640 -640 480 -633 640 -640 480 -640 360 -332 500 -640 478 -427 640 -640 396 -640 427 -640 427 -480 640 -480 640 -458 640 -500 375 -425 640 -640 427 -428 640 -640 424 -480 640 -640 480 -640 480 -640 427 -640 396 -612 612 -306 640 -640 480 -640 480 -640 480 -640 427 -640 480 -361 640 -640 480 -500 333 -640 427 -640 480 -640 427 -426 640 -478 640 -640 480 -640 426 -640 403 -640 579 -640 480 -427 640 -640 425 -640 480 -612 612 -640 425 -500 375 -640 360 -640 480 -640 427 -640 427 -640 480 -640 427 -640 480 -480 640 -426 640 -640 480 -640 480 -640 425 -640 427 -446 640 -640 480 -484 500 -425 640 -640 640 -471 500 -640 480 -640 439 -640 428 -612 612 -600 600 -500 333 -640 480 -640 480 -640 425 -640 480 -640 480 -640 443 -640 485 -640 480 -426 640 -423 640 -640 419 -640 480 -424 640 -640 436 -640 511 -640 449 -640 426 -640 480 -640 480 -480 640 -640 426 -640 480 -640 427 -640 480 -640 403 -640 640 -640 426 -480 640 -500 400 -640 480 -176 144 -500 375 -500 400 -640 426 -500 384 -640 480 -640 480 -506 640 -640 427 -480 640 -640 424 -640 360 -640 427 -640 427 -640 427 -640 427 -640 445 -640 480 -640 474 -640 480 -640 427 -640 480 -427 640 -478 640 -640 480 -640 403 -640 426 -640 480 -640 448 -640 480 -640 640 -640 423 -640 529 -640 427 -640 427 -612 612 -640 480 -640 427 -640 427 -480 640 -640 427 -640 427 -426 640 -640 428 -640 359 -640 427 -640 480 -640 427 -640 360 -640 427 -480 640 -423 640 -500 375 -640 391 -640 480 -480 640 -640 427 -640 427 -640 332 -375 500 -640 425 -640 480 -640 360 -493 640 -331 500 -640 427 -640 480 -480 640 -640 480 -640 425 -640 480 -427 640 -480 640 -640 341 -480 640 -480 640 -376 500 -640 487 -428 640 -640 480 -640 426 -640 449 -480 640 -640 427 -480 640 -640 428 -596 640 -640 396 -640 369 -480 640 -640 480 -640 480 -480 640 -640 427 -500 375 -640 425 -640 480 -640 360 -640 480 -640 480 -640 470 -427 640 -500 272 -612 612 -640 425 -375 500 -500 333 -478 640 -640 428 -612 612 -640 427 -640 480 -471 640 -640 426 -500 375 -500 375 -400 500 -640 576 -640 480 -500 281 -400 640 -500 375 -640 471 -431 640 -375 500 -640 427 -471 500 -640 480 -640 553 -640 480 -427 640 -480 640 -480 640 -375 500 -529 640 -640 423 -360 640 -500 375 -600 450 -500 333 -426 640 -640 436 -640 480 -480 640 -640 424 -640 480 -640 426 -640 480 -427 640 -640 480 -640 427 -640 425 -640 425 -640 480 -640 426 -480 640 -640 478 -640 480 -427 640 -640 500 -640 383 -640 427 -640 480 -640 430 -640 429 -640 480 -640 384 -640 425 -480 640 -428 640 -310 500 -640 478 -640 428 -640 361 -640 427 -640 427 -640 640 -640 456 -500 405 -640 427 -491 640 -480 640 -500 374 -427 640 -333 500 -500 401 -640 478 -480 640 -640 407 -640 425 -428 640 -640 427 -640 360 -479 640 -640 424 -612 612 -640 427 -640 488 -500 375 -499 640 -480 640 -640 480 -640 523 -640 427 -640 360 -640 524 -640 574 -480 640 -640 427 -640 426 -640 427 -640 516 -426 640 -640 480 -480 640 -500 375 -427 640 -500 376 -427 640 -480 640 -640 480 -640 426 -640 523 -640 481 -640 427 -500 375 -640 480 -398 500 -640 640 -640 480 -640 480 -640 426 -424 640 -500 333 -640 427 -640 480 -640 429 -455 640 -640 480 -640 426 -480 640 -640 427 -640 451 -640 424 -640 480 -427 640 -424 640 -640 480 -500 281 -640 427 -426 640 -640 405 -612 612 -427 640 -426 640 -500 333 -640 427 -633 640 -640 480 -640 361 -640 427 -640 427 -480 640 -556 407 -640 480 -640 424 -640 480 -640 477 -637 640 -640 639 -334 500 -640 480 -640 480 -426 640 -480 640 -640 480 -502 640 -640 614 -427 640 -640 480 -640 424 -425 640 -640 512 -480 640 -640 427 -640 479 -640 360 -500 375 -424 640 -640 480 -640 428 -640 389 -640 435 -640 480 -480 640 -640 480 -640 480 -425 282 -426 640 -640 425 -640 424 -640 480 -640 363 -480 640 -640 480 -640 428 -640 499 -640 431 -640 427 -640 427 -640 427 -640 480 -555 640 -640 479 -640 480 -427 640 -640 427 -640 480 -640 428 -640 428 -640 480 -640 427 -640 330 -640 480 -427 640 -427 640 -640 480 -640 480 -500 416 -514 640 -375 500 -640 427 -480 640 -640 427 -640 427 -450 450 -640 424 -423 640 -640 428 -427 640 -640 425 -500 375 -640 447 -640 480 -640 426 -640 424 -640 430 -640 450 -640 425 -640 480 -427 640 -421 500 -512 640 -640 427 -640 480 -482 389 -640 428 -640 480 -397 640 -640 549 -640 428 -375 500 -640 480 -640 640 -640 434 -640 640 -640 433 -640 480 -640 360 -640 480 -640 480 -480 640 -640 428 -640 480 -320 240 -640 428 -427 640 -640 426 -480 640 -640 427 -640 427 -500 368 -640 427 -500 333 -500 333 -640 480 -266 187 -640 424 -425 640 -640 480 -640 480 -640 480 -500 324 -640 478 -626 640 -640 426 -426 640 -640 480 -480 640 -640 427 -640 427 -480 640 -640 480 -480 640 -640 428 -640 480 -640 330 -640 425 -640 360 -478 640 -500 333 -640 428 -480 640 -500 333 -640 480 -500 332 -640 428 -427 640 -640 480 -640 480 -640 427 -640 531 -640 361 -640 480 -640 429 -640 360 -640 512 -640 425 -424 500 -426 640 -640 427 -640 427 -640 473 -419 640 -640 532 -463 640 -640 480 -640 480 -640 427 -640 425 -640 480 -640 497 -640 480 -500 333 -640 480 -500 375 -640 517 -640 398 -612 612 -640 426 -425 640 -640 485 -640 480 -633 640 -640 427 -480 640 -406 610 -429 640 -640 519 -640 426 -427 640 -640 480 -640 425 -425 640 -500 375 -427 640 -500 375 -640 480 -640 427 -640 428 -640 480 -426 640 -640 480 -640 480 -640 479 -640 427 -640 424 -480 640 -500 400 -640 361 -640 480 -478 640 -640 425 -640 427 -480 640 -640 329 -640 446 -640 426 -640 428 -428 640 -612 612 -640 480 -640 480 -640 427 -480 640 -640 457 -587 640 -640 425 -640 427 -500 375 -640 427 -640 427 -640 639 -426 640 -640 480 -640 640 -640 427 -428 640 -640 457 -640 425 -640 427 -640 480 -427 640 -640 426 -640 480 -640 428 -640 478 -640 480 -480 640 -640 457 -478 640 -428 640 -640 487 -500 333 -640 480 -640 454 -368 640 -640 427 -372 640 -640 425 -640 426 -640 426 -640 480 -640 425 -640 480 -500 500 -425 640 -640 442 -500 335 -640 480 -640 427 -640 426 -640 427 -375 500 -500 336 -640 482 -640 396 -640 480 -640 480 -640 360 -352 288 -640 480 -640 480 -640 426 -640 480 -427 640 -640 475 -640 426 -375 500 -640 427 -640 425 -480 640 -640 640 -640 521 -640 427 -640 480 -640 400 -640 480 -375 500 -353 640 -375 500 -600 400 -640 425 -428 640 -640 512 -640 480 -640 478 -480 640 -500 480 -500 333 -480 640 -640 427 -640 640 -640 480 -640 428 -427 640 -600 450 -339 500 -426 640 -480 640 -640 427 -640 427 -640 428 -640 418 -500 332 -640 480 -640 426 -500 375 -640 480 -480 640 -640 426 -640 514 -640 436 -640 480 -622 640 -640 425 -500 500 -427 640 -640 425 -640 427 -480 640 -500 321 -640 480 -480 640 -424 640 -640 419 -640 428 -409 640 -640 478 -640 426 -640 430 -640 360 -480 640 -500 334 -400 500 -480 640 -640 427 -640 428 -640 421 -500 375 -480 640 -640 480 -480 640 -640 272 -640 427 -640 426 -640 480 -640 360 -640 480 -640 480 -640 482 -375 500 -640 425 -640 383 -640 480 -640 480 -640 480 -640 427 -640 480 -640 480 -640 427 -494 330 -640 428 -640 427 -640 428 -640 427 -640 427 -640 470 -640 425 -375 500 -426 640 -385 500 -640 425 -500 375 -640 458 -640 480 -640 214 -480 640 -640 541 -640 427 -480 640 -640 480 -640 427 -640 427 -500 381 -612 612 -640 435 -480 640 -640 503 -640 480 -500 387 -640 479 -640 478 -640 480 -640 480 -640 426 -640 427 -640 428 -640 480 -500 333 -640 480 -640 480 -424 640 -640 480 -640 435 -640 480 -457 640 -612 612 -640 427 -500 375 -640 425 -640 480 -640 517 -640 427 -640 266 -640 360 -476 640 -640 427 -640 413 -640 480 -640 480 -640 427 -480 640 -480 640 -500 303 -640 427 -500 375 -640 389 -480 640 -427 640 -427 640 -640 480 -640 480 -640 480 -640 308 -511 640 -640 523 -640 427 -424 640 -426 640 -640 480 -640 480 -375 500 -500 375 -500 375 -600 400 -512 640 -640 480 -640 480 -640 480 -640 425 -612 612 -640 427 -640 480 -427 640 -500 374 -640 480 -500 375 -640 426 -640 480 -612 612 -640 427 -640 424 -427 640 -480 640 -320 216 -499 640 -415 640 -374 500 -640 427 -640 480 -640 426 -640 360 -480 640 -640 480 -640 427 -341 500 -640 480 -640 480 -428 640 -480 640 -640 480 -640 480 -640 478 -428 640 -640 483 -424 640 -640 480 -640 426 -640 480 -640 359 -516 408 -640 480 -640 480 -480 640 -417 640 -640 478 -500 333 -640 480 -427 640 -640 360 -640 545 -640 480 -640 482 -640 506 -640 480 -640 480 -640 482 -640 480 -640 559 -427 640 -480 640 -480 640 -640 507 -500 335 -640 360 -550 400 -640 427 -640 480 -500 334 -480 640 -640 609 -500 333 -640 480 -640 426 -600 450 -640 480 -640 427 -640 480 -480 640 -640 480 -640 426 -512 640 -640 426 -640 425 -640 480 -480 640 -500 375 -640 381 -640 427 -640 427 -640 509 -640 427 -640 400 -640 480 -640 429 -480 640 -640 480 -640 618 -640 426 -427 640 -640 480 -640 427 -500 335 -603 640 -427 640 -640 480 -640 480 -582 640 -640 427 -500 332 -640 445 -478 640 -640 480 -640 400 -509 640 -612 612 -640 427 -640 425 -640 480 -640 480 -500 256 -640 427 -426 640 -640 426 -500 375 -640 480 -288 352 -640 480 -640 480 -480 640 -640 427 -500 375 -640 480 -480 640 -640 426 -640 427 -640 428 -500 375 -640 427 -640 640 -640 480 -640 427 -640 480 -640 480 -640 348 -640 425 -640 613 -427 640 -640 427 -500 500 -640 427 -480 640 -479 640 -640 639 -600 400 -640 480 -640 427 -320 240 -480 640 -500 375 -640 234 -640 427 -640 427 -640 427 -500 333 -500 375 -640 433 -640 427 -640 424 -640 480 -640 480 -612 612 -470 332 -640 322 -640 480 -640 521 -640 427 -640 427 -500 375 -640 480 -640 427 -640 480 -640 501 -640 424 -460 640 -640 419 -640 480 -640 480 -500 375 -640 427 -640 427 -333 500 -640 426 -375 500 -500 374 -640 512 -500 375 -640 425 -640 480 -480 640 -480 640 -427 640 -500 375 -640 427 -480 640 -640 427 -640 480 -612 612 -640 480 -480 640 -640 555 -457 640 -500 375 -480 640 -640 480 -500 323 -612 612 -640 480 -640 480 -640 406 -640 480 -640 427 -640 429 -640 426 -480 640 -500 332 -640 427 -640 480 -425 640 -426 640 -640 425 -375 500 -458 640 -640 427 -640 427 -640 427 -427 640 -640 445 -640 427 -640 427 -640 457 -500 500 -640 427 -640 427 -640 563 -640 419 -428 640 -500 375 -640 456 -640 480 -640 427 -427 640 -375 500 -640 427 -479 640 -640 426 -640 427 -500 335 -640 427 -640 383 -500 338 -640 426 -427 640 -640 480 -500 375 -426 640 -640 424 -500 332 -640 480 -424 640 -640 480 -421 640 -640 176 -640 480 -640 426 -640 639 -640 480 -480 640 -640 425 -640 480 -640 480 -640 429 -500 375 -612 612 -640 566 -640 427 -640 526 -480 640 -480 640 -427 640 -640 428 -425 640 -640 517 -640 433 -240 320 -640 426 -417 640 -640 428 -640 425 -361 500 -640 523 -640 480 -640 480 -640 478 -640 427 -640 427 -425 640 -500 332 -500 375 -640 427 -426 640 -640 427 -640 425 -500 333 -480 640 -427 640 -500 362 -640 480 -640 533 -640 428 -427 640 -640 480 -361 640 -500 375 -640 480 -640 522 -500 456 -427 640 -500 321 -640 480 -640 427 -640 425 -480 640 -640 480 -640 360 -640 480 -335 500 -480 640 -427 640 -500 375 -500 334 -478 640 -640 427 -640 480 -640 427 -425 640 -640 427 -375 500 -640 480 -640 427 -612 612 -640 429 -640 480 -437 640 -424 640 -480 640 -640 427 -640 426 -640 429 -640 480 -640 419 -426 640 -640 480 -640 428 -640 480 -640 480 -500 375 -640 480 -640 427 -640 457 -640 425 -640 427 -500 375 -640 395 -468 640 -640 407 -640 436 -640 427 -426 640 -640 427 -640 427 -480 640 -640 428 -500 375 -640 427 -640 425 -640 480 -375 500 -427 640 -500 375 -640 480 -612 612 -640 478 -640 426 -500 281 -640 480 -427 640 -425 640 -640 480 -640 425 -480 640 -268 640 -480 640 -640 426 -500 333 -640 427 -618 640 -500 333 -640 426 -640 420 -612 612 -640 575 -640 427 -640 427 -430 640 -427 640 -640 480 -480 640 -333 500 -640 427 -427 640 -640 480 -429 640 -640 319 -375 500 -640 428 -640 429 -640 427 -612 612 -640 480 -415 640 -640 426 -612 612 -640 480 -640 276 -640 640 -427 640 -640 427 -640 480 -640 480 -640 468 -640 426 -480 640 -640 508 -640 233 -443 640 -640 480 -640 480 -500 375 -640 427 -640 468 -640 427 -448 640 -480 640 -459 640 -640 426 -640 428 -640 428 -640 480 -426 640 -640 428 -640 480 -424 640 -640 425 -640 480 -333 500 -500 375 -640 425 -640 480 -640 425 -640 480 -500 335 -640 403 -640 480 -640 480 -640 480 -640 427 -640 425 -640 427 -500 333 -640 427 -640 480 -640 480 -640 480 -640 425 -640 480 -640 480 -640 480 -640 480 -640 428 -425 640 -640 426 -640 427 -640 256 -612 612 -640 427 -640 427 -640 480 -500 375 -480 640 -500 333 -640 567 -640 426 -339 500 -640 423 -640 480 -480 640 -640 533 -480 640 -640 428 -640 427 -640 480 -612 612 -640 480 -640 427 -426 640 -640 426 -640 436 -480 640 -640 427 -640 426 -640 480 -480 640 -640 478 -429 640 -640 427 -323 500 -500 375 -480 640 -500 494 -333 500 -500 375 -640 400 -427 640 -640 428 -240 180 -612 612 -598 640 -376 479 -640 480 -333 500 -427 640 -480 640 -640 458 -640 480 -480 640 -640 480 -480 640 -500 332 -640 310 -640 480 -500 375 -640 640 -640 427 -640 480 -640 427 -640 480 -500 375 -640 428 -427 640 -500 376 -426 640 -480 640 -640 480 -640 427 -640 428 -640 480 -640 439 -400 400 -425 640 -640 640 -640 431 -444 500 -500 333 -640 427 -640 425 -640 427 -559 640 -640 428 -426 640 -640 480 -471 640 -640 429 -640 427 -500 375 -480 640 -640 427 -640 480 -640 480 -640 427 -640 480 -480 640 -640 499 -426 640 -612 612 -500 375 -640 425 -427 640 -640 415 -640 427 -640 513 -640 480 -500 375 -640 434 -640 429 -640 480 -333 500 -640 427 -640 425 -640 480 -640 480 -500 375 -318 500 -480 640 -640 481 -500 375 -500 375 -640 480 -480 640 -500 306 -640 480 -640 480 -640 480 -436 640 -480 640 -640 480 -640 480 -640 426 -427 640 -640 427 -640 428 -500 400 -640 424 -333 500 -486 640 -480 640 -640 428 -640 444 -514 640 -640 406 -640 480 -480 640 -425 640 -640 378 -458 640 -640 426 -640 480 -500 375 -469 640 -480 640 -427 640 -640 480 -640 427 -478 640 -640 427 -334 500 -640 427 -500 443 -427 640 -640 480 -640 425 -502 640 -375 500 -640 427 -500 334 -500 375 -427 640 -480 640 -640 427 -640 429 -443 640 -640 441 -500 333 -449 640 -500 333 -640 424 -270 360 -640 498 -333 500 -480 640 -429 640 -640 478 -640 360 -640 480 -640 437 -480 640 -480 640 -640 640 -640 480 -640 426 -640 480 -640 480 -425 640 -640 480 -427 640 -640 480 -640 427 -640 479 -640 427 -500 500 -640 344 -640 354 -640 480 -427 640 -640 418 -640 427 -640 428 -640 485 -640 426 -500 376 -612 612 -500 375 -500 375 -640 499 -427 640 -480 640 -640 561 -640 429 -640 480 -480 640 -612 612 -500 332 -480 640 -640 427 -375 500 -480 640 -640 373 -480 640 -640 427 -640 418 -640 480 -640 426 -427 640 -640 480 -480 640 -433 640 -640 369 -640 427 -500 335 -640 495 -640 487 -612 612 -359 640 -640 480 -598 640 -500 400 -425 640 -640 427 -640 427 -500 336 -640 298 -640 480 -640 480 -412 640 -640 480 -640 595 -480 640 -375 500 -478 640 -640 480 -480 640 -500 375 -500 305 -500 326 -640 480 -640 383 -612 612 -640 424 -640 427 -640 428 -500 375 -640 512 -640 480 -571 640 -500 375 -500 375 -640 480 -640 427 -640 480 -640 429 -640 427 -428 640 -640 427 -640 427 -640 480 -480 640 -640 426 -640 427 -500 345 -640 480 -436 500 -640 480 -640 496 -640 480 -480 640 -640 426 -640 426 -640 424 -640 390 -640 425 -640 425 -640 427 -640 451 -640 480 -640 425 -640 428 -640 640 -640 480 -640 425 -640 479 -640 427 -640 427 -640 480 -640 480 -500 393 -640 427 -480 640 -640 453 -640 480 -640 480 -640 480 -640 395 -640 427 -640 598 -640 426 -640 427 -640 427 -500 375 -640 480 -640 480 -375 500 -375 500 -640 480 -640 427 -640 640 -640 480 -480 640 -640 480 -640 480 -640 422 -423 640 -640 443 -500 332 -640 480 -640 426 -640 480 -640 640 -480 640 -640 424 -640 427 -640 359 -640 424 -640 428 -640 424 -480 640 -427 640 -640 480 -376 640 -640 427 -640 480 -429 640 -640 443 -640 427 -480 640 -640 425 -480 640 -459 640 -640 361 -640 445 -225 225 -500 329 -640 480 -426 640 -640 480 -640 427 -428 640 -640 480 -640 426 -493 500 -640 480 -224 300 -640 427 -612 612 -640 480 -640 427 -640 426 -640 480 -640 640 -640 427 -640 451 -640 480 -640 425 -480 640 -500 333 -640 424 -640 451 -640 480 -640 427 -640 480 -640 480 -478 640 -400 600 -480 640 -640 480 -425 640 -640 480 -640 426 -346 640 -640 480 -500 270 -640 480 -640 480 -640 426 -640 559 -640 480 -428 640 -640 426 -640 391 -640 392 -612 612 -640 480 -633 640 -500 287 -480 640 -640 480 -640 512 -640 355 -427 640 -640 427 -640 428 -640 426 -640 543 -425 640 -500 333 -498 635 -640 480 -640 480 -640 429 -640 426 -640 428 -640 480 -640 478 -519 640 -640 428 -640 480 -640 426 -500 500 -640 427 -640 352 -360 480 -640 480 -640 240 -500 375 -427 640 -640 480 -500 333 -640 427 -480 640 -500 388 -500 334 -640 426 -640 480 -500 333 -640 480 -480 640 -640 480 -500 375 -640 480 -640 480 -500 375 -640 480 -640 426 -480 640 -640 480 -640 426 -640 376 -500 333 -640 427 -500 387 -333 500 -640 403 -640 480 -600 400 -640 480 -427 640 -384 640 -640 427 -500 329 -640 480 -640 425 -640 424 -640 544 -640 436 -640 426 -640 640 -640 427 -640 478 -640 427 -640 424 -365 640 -500 375 -640 427 -500 375 -640 427 -640 458 -640 480 -480 640 -500 375 -500 335 -480 640 -612 612 -446 640 -640 480 -640 480 -640 476 -600 402 -500 333 -500 334 -500 375 -426 640 -475 640 -500 350 -640 453 -529 640 -640 426 -640 248 -480 640 -554 640 -360 640 -640 427 -480 640 -500 375 -640 480 -640 480 -640 480 -640 427 -640 480 -640 439 -512 640 -500 333 -640 427 -640 428 -640 427 -640 480 -428 640 -500 375 -640 480 -640 480 -500 375 -640 399 -640 427 -640 480 -427 640 -480 640 -640 457 -640 427 -640 411 -640 480 -500 375 -640 480 -500 375 -640 437 -640 480 -640 360 -500 375 -640 479 -640 427 -640 427 -640 480 -332 500 -640 480 -640 480 -640 480 -500 255 -640 480 -427 640 -640 425 -640 427 -500 332 -640 480 -640 424 -640 453 -500 333 -480 640 -612 612 -640 480 -612 612 -528 512 -640 480 -640 480 -640 480 -471 640 -429 640 -640 640 -640 430 -640 425 -411 640 -640 428 -640 425 -640 427 -640 418 -500 375 -427 640 -640 427 -508 640 -640 425 -427 640 -640 360 -640 360 -424 283 -640 421 -640 479 -640 480 -429 640 -640 418 -640 427 -640 427 -375 500 -640 426 -375 500 -640 445 -640 440 -480 640 -640 451 -500 375 -640 510 -640 480 -640 480 -640 466 -640 334 -640 333 -480 640 -640 480 -640 480 -640 427 -640 640 -500 375 -640 480 -640 428 -640 428 -500 375 -640 426 -427 640 -640 426 -640 604 -612 612 -640 428 -640 426 -640 427 -640 428 -640 428 -500 500 -640 480 -478 640 -640 444 -640 426 -640 427 -640 480 -640 428 -480 640 -640 425 -640 494 -375 500 -640 480 -640 425 -359 640 -640 458 -640 426 -640 427 -640 480 -640 425 -333 500 -640 427 -500 320 -333 500 -500 375 -500 375 -500 375 -640 480 -640 640 -480 640 -351 234 -500 333 -500 375 -640 426 -480 640 -480 640 -640 427 -640 489 -640 480 -640 427 -640 480 -640 640 -640 640 -500 334 -640 480 -640 427 -640 427 -640 426 -640 426 -640 427 -640 427 -640 356 -640 480 -538 640 -640 360 -640 427 -640 427 -640 480 -640 427 -480 640 -640 299 -640 425 -640 480 -320 240 -640 426 -480 360 -640 480 -640 426 -640 480 -640 480 -640 427 -500 375 -640 111 -640 427 -480 640 -640 478 -640 448 -612 612 -640 425 -640 426 -640 427 -640 425 -333 500 -425 640 -640 425 -427 640 -500 334 -480 640 -480 640 -640 480 -640 427 -640 281 -640 428 -500 364 -640 480 -640 424 -640 480 -640 428 -640 426 -334 500 -500 375 -427 640 -640 480 -640 424 -442 640 -480 640 -333 500 -500 500 -500 375 -640 480 -631 640 -640 480 -427 640 -640 429 -640 426 -640 428 -480 640 -640 362 -640 480 -640 471 -640 480 -640 480 -640 640 -640 457 -640 425 -427 640 -640 464 -640 427 -640 427 -428 640 -640 480 -640 427 -428 640 -640 480 -640 480 -480 640 -640 439 -640 428 -332 500 -500 363 -640 424 -640 480 -640 427 -500 375 -640 425 -640 427 -427 640 -640 425 -640 480 -640 427 -471 640 -468 500 -640 427 -640 480 -375 500 -640 480 -640 426 -640 314 -640 427 -480 640 -640 427 -500 375 -640 480 -640 424 -640 480 -640 591 -438 640 -640 425 -640 425 -640 480 -427 640 -640 480 -425 640 -640 480 -500 375 -640 480 -640 429 -640 480 -427 640 -500 436 -478 640 -640 480 -500 375 -500 375 -500 333 -500 375 -397 500 -640 360 -500 375 -640 480 -640 427 -480 640 -640 427 -640 480 -640 470 -640 480 -640 428 -640 427 -640 480 -500 375 -427 640 -640 480 -640 458 -640 480 -640 425 -640 390 -640 549 -640 428 -640 480 -640 427 -500 333 -640 427 -426 640 -640 428 -640 428 -640 483 -640 455 -500 333 -426 640 -640 451 -500 301 -640 478 -424 640 -480 640 -640 480 -426 640 -640 364 -492 500 -640 480 -640 478 -640 480 -480 640 -500 375 -480 640 -640 429 -375 500 -640 268 -480 640 -427 640 -640 356 -640 358 -640 481 -640 480 -612 612 -640 424 -640 480 -612 612 -500 333 -326 500 -491 640 -640 491 -640 388 -640 478 -640 425 -640 480 -640 360 -500 375 -640 427 -480 640 -640 428 -640 426 -640 480 -480 640 -612 612 -640 480 -500 375 -640 386 -640 424 -424 640 -640 424 -425 640 -640 427 -640 480 -480 640 -640 427 -640 450 -640 480 -640 480 -640 640 -640 428 -427 640 -640 411 -640 514 -480 640 -480 640 -640 480 -640 426 -480 640 -640 480 -500 376 -425 640 -500 333 -640 427 -640 614 -640 427 -500 375 -640 426 -500 333 -640 480 -375 500 -500 375 -640 426 -317 398 -640 480 -640 512 -640 425 -500 333 -640 480 -640 578 -424 640 -640 480 -500 375 -640 480 -640 480 -480 640 -612 612 -640 425 -640 480 -640 480 -640 428 -640 480 -640 427 -640 426 -612 612 -640 427 -640 361 -640 424 -640 480 -480 640 -640 424 -500 333 -640 425 -640 480 -640 427 -640 434 -640 479 -640 425 -640 488 -640 478 -480 640 -334 500 -640 426 -640 424 -640 427 -427 640 -640 512 -640 419 -640 392 -500 375 -612 612 -640 480 -600 399 -640 427 -640 480 -500 339 -428 640 -640 427 -640 480 -480 640 -640 480 -640 606 -640 480 -640 427 -640 480 -640 427 -640 480 -500 333 -640 427 -500 375 -500 434 -640 404 -427 640 -640 426 -480 640 -640 427 -640 480 -500 358 -500 335 -500 313 -640 425 -500 375 -640 429 -500 375 -480 640 -640 427 -478 640 -640 481 -500 348 -640 427 -640 478 -480 640 -640 408 -632 640 -480 640 -640 355 -640 427 -375 500 -500 351 -640 426 -343 500 -640 480 -500 332 -640 480 -500 375 -500 375 -640 427 -640 428 -480 640 -640 426 -640 427 -640 480 -480 640 -640 480 -640 308 -640 427 -640 426 -640 480 -333 500 -640 426 -640 427 -640 427 -480 640 -640 480 -640 427 -375 500 -640 401 -640 426 -640 480 -500 281 -563 422 -640 426 -640 427 -640 427 -640 427 -640 425 -640 422 -640 427 -640 429 -640 480 -626 640 -480 640 -427 640 -640 480 -640 480 -640 416 -427 640 -640 480 -640 494 -500 333 -500 333 -640 448 -640 425 -480 640 -480 640 -640 480 -640 425 -500 331 -640 480 -640 515 -500 399 -640 428 -500 400 -640 480 -640 426 -640 428 -640 271 -640 480 -500 375 -427 640 -640 427 -640 428 -640 427 -640 470 -640 473 -640 427 -640 360 -333 500 -640 427 -427 640 -640 480 -480 640 -640 427 -500 384 -640 405 -640 480 -640 426 -640 480 -640 360 -640 448 -640 640 -640 425 -640 480 -640 480 -640 480 -640 425 -480 640 -640 489 -306 640 -640 383 -640 389 -480 640 -640 480 -500 327 -480 640 -358 640 -640 426 -640 458 -640 427 -640 428 -640 480 -640 480 -320 240 -640 412 -640 439 -640 427 -640 428 -640 540 -640 480 -640 480 -640 480 -612 612 -640 531 -640 480 -427 640 -640 480 -640 480 -480 640 -640 427 -640 424 -640 402 -332 500 -640 359 -640 427 -427 640 -640 427 -640 433 -640 360 -640 480 -640 480 -426 640 -640 427 -640 426 -480 640 -640 478 -500 375 -480 640 -640 480 -640 424 -640 480 -640 480 -640 427 -640 491 -640 480 -480 640 -400 300 -640 448 -640 480 -640 426 -640 427 -640 423 -640 427 -640 630 -640 480 -640 406 -640 429 -640 480 -640 480 -640 480 -640 479 -612 612 -427 640 -478 640 -640 427 -328 500 -640 360 -640 480 -480 320 -409 640 -640 427 -640 480 -640 426 -640 427 -640 480 -500 333 -640 428 -640 427 -640 480 -640 440 -640 480 -640 459 -640 480 -480 640 -640 480 -640 425 -640 501 -612 612 -640 480 -640 513 -640 480 -640 428 -640 482 -640 480 -640 480 -500 375 -488 500 -640 480 -561 640 -640 480 -500 375 -640 480 -640 480 -640 424 -612 612 -612 612 -640 429 -500 401 -640 427 -640 427 -480 640 -640 426 -480 640 -500 375 -640 480 -640 427 -640 360 -640 427 -640 480 -427 640 -425 640 -427 640 -640 480 -640 428 -640 426 -640 480 -640 480 -640 480 -603 640 -640 553 -640 449 -640 480 -640 427 -456 640 -478 640 -428 640 -640 424 -480 640 -640 428 -640 427 -640 438 -640 427 -500 333 -640 480 -500 334 -640 451 -480 640 -640 428 -500 382 -480 640 -640 480 -500 384 -640 427 -640 478 -640 480 -500 375 -351 500 -640 457 -479 640 -640 600 -518 640 -640 441 -480 640 -480 640 -640 426 -640 480 -480 640 -640 480 -426 640 -480 640 -612 612 -640 480 -640 433 -480 640 -500 375 -640 421 -640 480 -640 480 -640 480 -427 640 -480 640 -640 430 -450 450 -640 496 -640 480 -480 640 -480 640 -500 375 -640 427 -640 427 -640 491 -640 480 -640 480 -640 333 -640 427 -386 640 -500 336 -640 480 -600 357 -180 225 -640 480 -640 479 -500 373 -640 426 -500 334 -576 430 -333 500 -612 612 -332 500 -640 427 -480 640 -640 480 -478 640 -480 640 -640 640 -640 480 -640 533 -640 427 -640 480 -640 396 -640 512 -640 426 -640 480 -612 612 -300 200 -640 480 -640 480 -640 480 -640 480 -524 640 -640 320 -640 428 -640 433 -640 427 -640 480 -640 480 -500 375 -640 512 -500 375 -640 480 -427 640 -640 480 -427 640 -640 427 -428 640 -612 612 -640 427 -375 500 -500 333 -333 500 -640 481 -480 640 -640 424 -640 428 -640 480 -640 428 -426 640 -427 640 -399 500 -640 480 -612 612 -640 480 -640 427 -640 427 -427 640 -640 480 -333 500 -640 441 -640 480 -640 426 -640 640 -480 640 -481 640 -334 500 -640 480 -500 375 -375 500 -480 640 -480 640 -640 427 -640 554 -480 640 -640 403 -640 264 -640 480 -397 500 -640 480 -640 427 -640 427 -640 480 -640 428 -610 640 -640 561 -640 427 -480 640 -640 325 -640 480 -480 640 -480 640 -480 640 -640 480 -640 427 -640 480 -640 480 -640 457 -480 640 -640 640 -375 500 -640 427 -480 640 -500 333 -640 428 -640 425 -480 640 -427 640 -640 425 -640 640 -640 480 -478 640 -640 480 -640 429 -600 400 -500 500 -640 480 -640 481 -640 480 -385 308 -640 480 -640 427 -640 428 -640 640 -640 426 -500 375 -640 421 -375 500 -640 471 -640 404 -640 427 -375 500 -463 640 -553 640 -427 640 -418 500 -640 385 -478 640 -517 640 -640 478 -427 640 -640 400 -612 612 -640 271 -500 342 -640 466 -640 467 -640 480 -640 417 -640 427 -612 612 -513 640 -480 640 -640 511 -426 640 -640 425 -339 500 -640 480 -612 612 -480 640 -429 640 -640 458 -488 640 -612 612 -640 427 -640 571 -500 358 -640 425 -640 480 -640 427 -640 512 -640 425 -427 640 -640 480 -640 426 -505 640 -500 333 -640 426 -426 640 -425 640 -426 640 -500 375 -640 427 -640 427 -640 426 -640 608 -500 375 -454 640 -640 427 -640 360 -600 450 -425 640 -640 427 -640 481 -640 423 -640 426 -640 457 -640 480 -480 640 -640 426 -640 480 -640 425 -640 429 -424 640 -640 438 -500 375 -426 640 -428 640 -640 480 -640 427 -640 480 -480 640 -612 612 -500 379 -640 428 -640 480 -640 480 -295 480 -500 375 -640 398 -640 429 -612 612 -640 427 -480 640 -640 432 -640 480 -486 640 -640 480 -640 640 -425 640 -640 426 -640 436 -640 428 -640 454 -640 360 -612 612 -640 453 -612 612 -500 334 -425 640 -640 426 -640 427 -640 480 -480 640 -640 426 -640 463 -640 427 -640 428 -640 513 -640 480 -640 483 -640 425 -640 426 -640 512 -640 426 -470 500 -640 427 -640 359 -640 429 -640 426 -427 640 -640 480 -640 480 -640 447 -640 427 -462 640 -480 640 -640 480 -475 500 -640 480 -640 428 -612 612 -640 481 -640 480 -640 426 -500 375 -640 428 -640 480 -640 640 -296 352 -640 425 -640 480 -640 508 -640 429 -640 640 -640 428 -578 453 -500 375 -640 428 -640 360 -425 640 -640 480 -640 372 -500 334 -640 553 -640 480 -480 640 -640 551 -640 428 -640 427 -428 640 -640 427 -640 428 -640 427 -482 640 -427 640 -375 500 -640 480 -500 400 -640 427 -640 446 -480 640 -480 640 -640 480 -640 480 -427 640 -427 640 -640 480 -640 427 -640 480 -640 480 -640 484 -640 360 -640 480 -612 612 -640 480 -640 480 -640 426 -640 480 -612 612 -640 426 -640 639 -640 480 -640 428 -640 428 -640 427 -640 428 -640 427 -480 640 -640 427 -640 426 -480 640 -640 427 -640 640 -640 478 -640 480 -640 480 -640 427 -375 500 -612 612 -640 427 -640 520 -640 480 -640 427 -640 480 -427 640 -640 480 -480 640 -640 640 -640 426 -640 480 -427 640 -640 427 -640 436 -640 480 -427 640 -375 500 -640 480 -640 480 -640 480 -640 427 -640 427 -500 332 -640 472 -640 480 -640 427 -300 640 -640 480 -360 640 -427 640 -640 480 -640 416 -429 640 -480 640 -640 348 -640 427 -428 640 -640 425 -640 480 -480 640 -640 480 -480 640 -500 432 -640 428 -640 426 -640 428 -640 427 -640 480 -640 640 -427 640 -640 480 -640 468 -500 372 -629 640 -640 480 -500 333 -480 640 -480 640 -426 640 -640 480 -640 427 -480 640 -640 428 -427 640 -428 640 -332 500 -640 360 -612 612 -640 480 -640 480 -640 445 -640 398 -640 457 -640 426 -427 640 -640 426 -640 480 -640 640 -640 425 -640 480 -640 427 -425 640 -640 427 -640 424 -500 334 -640 442 -612 612 -385 289 -640 480 -428 640 -640 401 -500 375 -640 541 -640 428 -640 427 -500 375 -640 480 -500 375 -640 480 -640 408 -500 375 -300 451 -640 429 -500 375 -640 404 -612 612 -500 375 -640 427 -640 528 -640 480 -640 425 -427 640 -640 428 -434 640 -640 426 -392 640 -640 427 -480 640 -500 333 -640 427 -640 480 -640 360 -500 375 -640 480 -640 424 -640 426 -640 425 -430 640 -640 504 -640 480 -640 489 -640 480 -494 338 -398 640 -640 477 -640 425 -426 640 -640 426 -640 424 -640 563 -348 486 -640 480 -640 480 -480 640 -640 458 -640 480 -480 640 -413 481 -640 427 -640 458 -640 427 -640 428 -640 480 -586 640 -640 480 -640 333 -640 480 -640 469 -640 427 -426 640 -612 612 -500 333 -640 427 -480 640 -500 281 -640 415 -640 426 -640 480 -500 380 -640 428 -612 612 -640 427 -640 480 -640 480 -640 336 -375 500 -480 640 -640 426 -640 427 -640 492 -375 500 -448 621 -480 640 -427 640 -426 640 -500 375 -427 640 -640 427 -640 428 -640 416 -500 375 -640 427 -640 428 -480 640 -640 424 -500 375 -640 480 -640 480 -640 480 -640 480 -640 635 -427 640 -640 427 -640 424 -640 480 -640 428 -500 375 -640 427 -640 426 -640 480 -640 480 -500 500 -640 399 -640 361 -480 640 -640 480 -640 417 -500 332 -640 480 -640 427 -640 426 -426 640 -640 427 -640 480 -640 480 -480 640 -427 640 -598 640 -640 480 -333 500 -640 457 -640 425 -612 612 -427 640 -500 375 -640 480 -640 426 -478 640 -640 426 -640 427 -640 427 -500 321 -500 375 -640 481 -640 426 -640 453 -640 480 -640 427 -640 425 -640 480 -640 396 -640 457 -640 427 -640 480 -640 428 -450 500 -487 500 -427 640 -640 427 -500 375 -640 480 -640 480 -640 429 -640 480 -433 640 -640 427 -426 640 -640 425 -640 479 -640 480 -500 335 -640 469 -640 428 -427 640 -427 640 -500 333 -640 427 -640 480 -500 333 -640 480 -612 612 -640 480 -428 640 -500 375 -375 500 -480 640 -640 480 -640 427 -640 480 -516 640 -640 427 -640 479 -640 427 -612 612 -375 500 -640 428 -640 417 -429 640 -499 640 -640 480 -640 480 -427 640 -640 427 -500 375 -640 480 -640 640 -425 640 -480 640 -640 426 -640 480 -428 640 -600 400 -640 521 -640 426 -640 427 -640 427 -640 425 -500 375 -640 480 -640 425 -640 428 -480 640 -428 640 -640 427 -640 480 -640 480 -640 480 -640 480 -640 480 -640 344 -640 430 -479 640 -640 426 -427 640 -640 457 -640 427 -640 426 -640 478 -640 426 -640 513 -640 426 -640 427 -640 427 -480 640 -640 580 -640 433 -640 433 -640 427 -640 480 -640 425 -612 612 -640 546 -500 281 -640 361 -640 427 -427 640 -500 375 -640 401 -640 480 -500 375 -640 427 -640 424 -640 427 -640 423 -480 640 -640 480 -427 640 -367 500 -640 480 -640 480 -640 428 -425 640 -640 425 -480 640 -640 478 -607 640 -500 333 -500 375 -640 427 -640 480 -640 368 -640 428 -640 480 -640 427 -500 337 -640 480 -491 640 -640 427 -640 477 -500 375 -640 433 -640 480 -640 480 -640 427 -425 640 -640 427 -500 454 -555 640 -640 335 -640 480 -640 427 -640 480 -640 480 -640 480 -500 375 -640 427 -500 375 -640 426 -480 640 -640 480 -426 640 -426 640 -427 640 -640 423 -640 468 -640 427 -640 480 -480 640 -375 500 -640 427 -640 480 -500 375 -640 480 -640 480 -640 512 -427 640 -640 480 -640 480 -480 640 -428 640 -640 480 -337 500 -500 375 -640 480 -640 480 -640 440 -640 427 -640 360 -640 427 -640 640 -600 400 -640 480 -640 425 -461 500 -375 500 -480 640 -640 426 -640 480 -612 612 -640 478 -500 333 -375 500 -640 480 -441 640 -427 640 -640 480 -640 480 -640 493 -640 479 -500 375 -640 427 -640 480 -640 480 -640 480 -640 480 -640 480 -500 375 -640 429 -427 640 -640 480 -640 480 -640 361 -640 427 -358 500 -480 640 -640 427 -500 486 -640 213 -640 428 -640 427 -640 480 -640 427 -640 426 -633 640 -375 500 -640 427 -640 462 -640 428 -640 480 -640 427 -640 429 -640 480 -640 427 -375 500 -640 478 -640 480 -480 640 -640 480 -640 427 -459 640 -598 640 -500 375 -427 640 -640 425 -640 478 -640 426 -375 500 -640 426 -640 425 -640 424 -640 479 -640 480 -640 480 -640 259 -361 640 -427 640 -480 640 -640 548 -640 424 -640 425 -640 426 -640 424 -640 427 -612 612 -640 480 -500 313 -640 480 -640 480 -640 480 -478 640 -640 427 -640 480 -640 489 -640 428 -361 640 -428 640 -640 356 -640 418 -500 334 -612 612 -640 480 -396 500 -640 478 -640 427 -600 400 -426 640 -640 480 -500 375 -476 640 -480 640 -640 427 -480 640 -640 427 -640 426 -640 444 -430 640 -640 427 -500 375 -426 640 -480 640 -640 480 -640 480 -640 480 -640 640 -640 427 -640 480 -640 393 -640 480 -640 546 -640 475 -640 480 -640 427 -500 375 -640 423 -640 427 -640 425 -640 480 -640 360 -457 640 -375 500 -640 427 -425 640 -640 427 -480 640 -427 640 -640 425 -640 480 -640 480 -640 480 -640 480 -640 426 -424 640 -640 425 -640 480 -640 480 -500 334 -427 640 -426 640 -640 427 -480 640 -480 640 -640 457 -640 361 -640 428 -418 640 -428 640 -640 480 -640 397 -640 406 -500 342 -478 640 -640 640 -480 640 -640 480 -640 426 -612 612 -375 500 -640 480 -640 360 -640 457 -640 480 -640 428 -640 428 -640 428 -640 318 -640 427 -307 500 -612 612 -640 427 -640 427 -361 500 -480 640 -640 480 -480 640 -640 426 -640 427 -640 426 -640 424 -640 480 -640 513 -640 480 -640 427 -512 640 -612 612 -427 640 -429 640 -640 479 -640 427 -640 427 -640 431 -500 375 -640 360 -480 640 -427 640 -612 612 -640 480 -640 425 -480 640 -500 333 -511 640 -640 427 -640 454 -640 396 -640 360 -640 480 -640 478 -500 375 -640 480 -640 427 -640 358 -640 480 -640 399 -375 500 -640 512 -640 423 -427 640 -500 338 -480 640 -640 425 -428 640 -388 640 -500 375 -640 427 -500 400 -427 640 -640 426 -640 480 -640 427 -640 427 -640 480 -640 480 -640 640 -640 427 -480 640 -640 480 -612 612 -640 480 -417 640 -640 373 -640 479 -640 436 -640 428 -480 640 -640 428 -473 335 -640 479 -480 640 -640 436 -640 427 -640 524 -478 640 -640 480 -480 640 -500 240 -640 478 -640 309 -640 428 -640 480 -480 640 -640 602 -640 432 -427 640 -592 640 -640 427 -640 480 -361 640 -375 500 -600 399 -500 400 -427 640 -640 427 -640 431 -425 640 -640 425 -466 640 -640 427 -640 427 -640 480 -640 425 -640 433 -500 375 -500 332 -375 500 -640 427 -640 393 -500 375 -640 437 -640 360 -480 640 -640 477 -375 500 -612 612 -640 512 -480 640 -480 640 -480 640 -500 333 -426 640 -500 375 -468 640 -375 500 -640 480 -640 436 -640 480 -640 428 -640 429 -640 480 -500 375 -640 427 -419 640 -640 427 -640 524 -480 640 -427 640 -640 480 -640 480 -640 480 -640 423 -640 427 -427 640 -427 640 -469 500 -640 501 -532 640 -640 640 -640 481 -640 426 -640 361 -500 367 -640 393 -500 375 -640 480 -640 480 -640 480 -640 426 -640 425 -512 640 -640 426 -360 640 -375 500 -480 640 -640 424 -480 640 -480 640 -612 612 -500 375 -640 480 -427 640 -552 640 -640 427 -480 640 -612 612 -480 640 -640 480 -640 427 -640 480 -640 427 -640 426 -640 480 -300 400 -480 640 -500 375 -640 480 -360 480 -500 333 -640 386 -500 296 -640 480 -640 640 -640 428 -640 480 -640 427 -640 480 -640 480 -640 425 -500 334 -640 512 -640 480 -640 640 -640 480 -640 462 -640 428 -500 375 -640 480 -640 480 -408 640 -640 480 -640 428 -640 427 -450 313 -640 426 -640 480 -448 640 -640 357 -612 612 -640 425 -640 480 -640 480 -375 500 -640 480 -639 640 -640 480 -480 640 -500 375 -640 427 -640 427 -640 480 -640 425 -640 427 -640 640 -640 478 -640 480 -640 435 -612 612 -640 482 -640 478 -640 494 -500 383 -640 494 -640 416 -640 585 -500 333 -640 480 -480 640 -343 512 -640 410 -428 640 -640 485 -640 480 -428 640 -640 638 -640 480 -612 612 -640 425 -640 553 -640 426 -640 480 -640 479 -426 640 -640 427 -640 427 -640 453 -500 400 -400 500 -640 426 -640 480 -640 426 -200 145 -427 640 -640 480 -640 480 -640 480 -427 640 -640 427 -458 640 -458 640 -500 319 -640 427 -640 386 -640 480 -640 480 -640 427 -500 375 -640 429 -640 457 -640 425 -512 640 -640 426 -640 426 -351 640 -612 612 -375 500 -640 427 -640 480 -612 612 -480 640 -640 360 -456 640 -547 640 -500 333 -640 427 -640 480 -640 480 -640 427 -640 236 -426 640 -640 427 -640 480 -640 480 -640 427 -640 425 -640 378 -500 375 -640 480 -640 479 -640 469 -640 480 -500 311 -640 529 -375 500 -640 427 -640 480 -640 480 -640 226 -480 640 -640 480 -640 425 -377 500 -640 389 -360 640 -640 422 -640 440 -411 640 -640 458 -640 480 -640 480 -640 427 -640 426 -640 478 -640 426 -640 273 -640 480 -640 439 -640 414 -640 481 -640 428 -640 427 -640 480 -640 480 -640 426 -640 427 -387 500 -640 427 -640 480 -500 375 -640 512 -640 426 -640 480 -640 427 -480 640 -640 326 -500 375 -640 283 -512 640 -640 427 -640 480 -500 403 -640 427 -640 480 -640 381 -500 440 -500 375 -333 500 -427 640 -640 425 -640 480 -480 640 -640 427 -640 480 -640 402 -640 427 -640 480 -640 427 -480 640 -427 640 -640 425 -640 495 -640 453 -640 616 -426 640 -639 640 -470 640 -640 470 -640 426 -500 400 -480 640 -640 427 -640 425 -640 480 -640 480 -431 640 -640 427 -500 375 -640 427 -640 427 -512 640 -480 640 -640 259 -640 429 -512 640 -640 428 -640 427 -640 427 -640 427 -640 427 -640 433 -453 640 -500 375 -640 516 -500 375 -640 640 -640 480 -640 425 -640 407 -640 318 -640 480 -640 480 -480 640 -426 640 -462 640 -375 500 -640 360 -640 400 -640 426 -640 427 -640 458 -640 331 -500 375 -428 640 -640 479 -640 426 -640 427 -640 503 -640 427 -640 480 -619 413 -640 480 -512 640 -412 500 -480 640 -500 375 -640 480 -640 480 -480 640 -640 463 -640 480 -640 426 -480 640 -640 428 -374 640 -640 360 -640 480 -478 640 -424 640 -640 427 -426 640 -500 375 -375 500 -640 457 -640 427 -640 427 -427 640 -640 480 -461 500 -412 500 -640 480 -640 428 -301 500 -640 480 -640 480 -500 281 -500 375 -480 640 -640 426 -640 426 -500 375 -480 640 -457 640 -500 400 -640 425 -640 478 -640 640 -427 640 -512 640 -640 480 -500 375 -640 427 -640 480 -640 425 -612 612 -640 480 -640 427 -375 500 -416 640 -640 499 -500 400 -640 480 -640 480 -640 396 -640 480 -640 425 -640 393 -640 640 -640 480 -640 480 -500 442 -640 427 -640 480 -640 223 -640 480 -640 480 -640 480 -640 480 -640 428 -640 480 -640 379 -480 640 -640 427 -365 500 -640 427 -480 640 -640 428 -640 243 -640 480 -640 480 -500 375 -640 428 -426 640 -480 640 -427 640 -500 500 -478 640 -640 427 -480 640 -427 640 -375 500 -428 640 -640 425 -640 444 -640 426 -640 452 -640 427 -640 462 -500 375 -640 640 -640 480 -429 640 -500 500 -640 480 -640 430 -427 640 -375 500 -640 427 -375 500 -640 426 -640 439 -612 612 -640 436 -640 480 -640 428 -412 640 -640 480 -426 640 -640 454 -640 426 -640 480 -375 500 -640 480 -640 640 -640 480 -640 425 -480 640 -640 426 -640 480 -640 427 -500 375 -375 500 -640 468 -428 640 -428 640 -480 640 -480 640 -425 640 -640 428 -427 640 -640 427 -640 414 -612 612 -640 406 -640 480 -640 480 -640 435 -449 640 -640 427 -640 492 -640 480 -480 640 -640 516 -375 500 -640 480 -315 500 -640 426 -640 428 -500 375 -640 480 -428 640 -425 640 -640 426 -480 640 -640 360 -640 348 -640 479 -479 640 -385 289 -640 480 -640 427 -500 346 -374 500 -640 427 -640 427 -640 480 -640 428 -383 640 -640 480 -640 478 -640 428 -640 480 -428 640 -640 480 -202 360 -640 426 -640 375 -500 356 -640 480 -640 581 -640 427 -640 427 -640 640 -480 640 -640 425 -375 500 -500 375 -427 640 -640 400 -640 480 -640 480 -640 480 -335 500 -480 640 -640 424 -640 361 -640 427 -480 640 -375 500 -640 480 -640 480 -640 480 -500 375 -640 480 -480 640 -640 480 -332 500 -640 480 -640 480 -640 480 -427 640 -640 427 -612 612 -640 480 -640 640 -500 375 -640 480 -640 360 -640 427 -333 500 -640 475 -640 428 -640 426 -640 638 -451 640 -480 640 -640 427 -500 375 -480 640 -480 640 -640 480 -427 640 -640 360 -640 480 -640 355 -640 480 -640 480 -640 426 -640 480 -640 621 -640 480 -612 612 -640 428 -500 375 -640 480 -428 640 -640 480 -640 480 -428 640 -640 405 -500 333 -640 427 -480 640 -640 480 -640 424 -500 353 -640 480 -492 500 -640 480 -425 640 -640 428 -480 640 -640 360 -640 427 -614 409 -640 505 -640 427 -640 424 -500 333 -640 480 -500 375 -500 309 -640 516 -640 480 -640 480 -361 640 -426 640 -640 427 -480 640 -640 480 -640 480 -640 480 -640 480 -500 375 -640 396 -640 476 -612 612 -427 640 -640 480 -500 335 -640 428 -640 429 -640 480 -480 640 -640 480 -640 427 -640 427 -640 480 -640 427 -640 385 -427 640 -640 480 -640 480 -480 640 -640 480 -640 480 -500 375 -640 480 -640 480 -493 640 -640 427 -640 480 -640 425 -640 427 -333 500 -640 428 -480 640 -500 375 -500 375 -639 640 -640 596 -640 426 -640 480 -458 640 -640 631 -640 426 -640 400 -640 474 -640 428 -640 640 -640 424 -640 480 -480 640 -640 480 -640 480 -640 480 -640 480 -480 640 -640 480 -640 427 -640 426 -640 471 -640 426 -500 374 -640 482 -640 426 -640 480 -500 333 -640 426 -426 640 -640 427 -480 640 -640 424 -640 494 -640 478 -640 427 -640 480 -640 437 -640 359 -427 640 -640 480 -640 400 -640 480 -640 480 -425 640 -478 640 -640 420 -640 424 -640 425 -640 360 -640 446 -480 640 -480 640 -640 425 -640 427 -640 427 -640 640 -640 480 -640 450 -480 640 -359 640 -500 375 -426 640 -640 427 -640 480 -640 640 -640 480 -640 427 -640 640 -427 640 -500 333 -640 400 -428 640 -480 640 -640 480 -480 640 -640 480 -640 427 -400 500 -640 435 -640 427 -360 640 -425 640 -640 480 -375 500 -640 468 -640 480 -640 480 -425 640 -640 480 -640 388 -640 425 -640 427 -500 375 -640 427 -500 447 -640 427 -500 333 -640 477 -640 427 -640 426 -640 457 -428 640 -640 426 -500 400 -640 427 -478 640 -640 424 -640 425 -640 480 -427 640 -640 461 -640 427 -640 480 -640 494 -612 612 -640 629 -640 426 -427 640 -640 427 -426 640 -640 425 -640 427 -640 480 -640 425 -500 375 -640 480 -480 640 -640 427 -640 480 -480 640 -640 427 -480 640 -640 428 -640 480 -640 480 -480 640 -500 383 -640 424 -640 505 -640 480 -640 426 -376 500 -640 427 -640 494 -640 427 -375 500 -500 376 -480 640 -640 425 -640 480 -427 640 -640 442 -640 480 -640 427 -480 640 -640 427 -640 426 -480 640 -640 451 -640 480 -640 423 -640 640 -640 480 -427 640 -428 640 -500 375 -640 480 -640 389 -364 640 -640 482 -500 300 -427 640 -500 400 -640 427 -612 612 -640 359 -640 480 -640 480 -640 512 -640 406 -640 480 -640 480 -333 500 -640 565 -640 480 -375 500 -640 484 -334 500 -609 640 -640 480 -480 640 -640 480 -640 393 -640 480 -640 427 -640 480 -612 612 -640 359 -612 612 -640 360 -640 480 -640 423 -500 375 -640 427 -640 640 -341 500 -400 600 -427 640 -640 402 -394 640 -640 480 -480 640 -640 429 -640 432 -480 640 -640 480 -640 358 -640 427 -640 427 -480 640 -640 428 -640 480 -640 411 -640 480 -640 480 -640 425 -640 480 -640 480 -640 457 -427 640 -640 480 -480 640 -640 569 -480 640 -640 480 -640 427 -640 433 -640 426 -640 427 -500 375 -640 426 -427 640 -500 500 -640 640 -612 612 -640 480 -640 480 -640 478 -500 500 -640 427 -640 480 -427 640 -480 640 -640 426 -640 427 -500 332 -640 427 -640 425 -480 640 -640 451 -375 500 -480 640 -536 640 -640 481 -640 480 -427 640 -478 640 -339 500 -640 360 -640 480 -480 640 -480 640 -640 480 -640 480 -480 640 -438 640 -640 640 -640 640 -640 359 -640 480 -640 480 -640 427 -640 421 -640 428 -480 640 -471 640 -640 338 -640 539 -640 424 -409 500 -428 640 -640 480 -640 437 -500 332 -640 480 -640 434 -640 480 -640 480 -427 640 -427 640 -480 640 -640 427 -640 480 -640 427 -640 625 -640 480 -640 480 -640 480 -376 500 -640 426 -480 640 -640 640 -640 427 -640 427 -500 333 -424 640 -640 427 -480 640 -425 640 -640 480 -480 640 -640 427 -427 640 -640 427 -500 331 -500 331 -640 426 -640 480 -500 375 -640 480 -500 489 -640 414 -640 480 -480 640 -427 640 -334 640 -640 426 -478 640 -500 332 -428 640 -640 480 -640 359 -480 640 -500 333 -640 522 -640 427 -640 480 -560 640 -427 640 -640 480 -640 480 -640 480 -640 457 -500 375 -557 640 -427 640 -500 334 -640 480 -640 426 -640 488 -640 473 -640 425 -640 480 -500 417 -640 480 -425 640 -640 480 -640 426 -480 640 -500 334 -427 640 -640 428 -640 480 -479 640 -640 640 -640 480 -640 424 -500 500 -640 425 -640 427 -640 360 -375 500 -500 334 -640 427 -640 427 -500 400 -480 640 -640 480 -640 604 -640 480 -640 427 -500 281 -640 426 -333 500 -500 375 -640 480 -640 516 -640 427 -640 480 -640 480 -640 480 -480 640 -640 480 -640 480 -480 640 -426 640 -640 480 -535 480 -640 419 -640 480 -640 427 -427 640 -640 428 -604 453 -500 375 -640 427 -640 428 -612 612 -640 428 -428 640 -427 640 -480 640 -640 469 -640 427 -640 480 -612 612 -640 426 -375 500 -640 427 -640 427 -640 480 -500 375 -640 425 -640 359 -640 480 -640 480 -612 612 -640 439 -640 427 -425 640 -640 480 -640 426 -640 501 -480 640 -640 480 -612 612 -640 427 -333 500 -500 368 -640 427 -640 480 -640 428 -640 436 -640 480 -612 612 -640 444 -640 480 -640 360 -425 640 -640 428 -334 500 -640 517 -500 375 -640 494 -640 611 -640 480 -640 422 -640 426 -640 429 -478 640 -480 640 -640 480 -375 500 -640 640 -640 480 -427 640 -640 480 -480 640 -561 640 -500 375 -428 640 -640 281 -640 480 -640 428 -640 427 -480 640 -640 480 -425 640 -375 500 -600 469 -640 480 -640 427 -640 426 -640 427 -640 482 -587 640 -640 427 -640 426 -480 640 -640 491 -640 444 -640 426 -424 640 -640 480 -640 384 -426 640 -640 408 -640 425 -640 406 -640 427 -640 351 -640 425 -480 640 -375 500 -426 640 -640 425 -640 427 -339 500 -640 284 -480 640 -640 427 -480 640 -640 480 -640 479 -335 500 -640 478 -640 426 -375 500 -446 640 -640 429 -640 427 -427 640 -640 425 -640 480 -640 511 -427 640 -500 375 -640 425 -426 640 -640 640 -640 480 -480 640 -640 427 -640 448 -375 500 -427 640 -640 427 -640 480 -480 640 -640 531 -480 640 -640 480 -640 427 -640 480 -640 425 -640 480 -640 260 -640 427 -426 640 -640 427 -640 483 -333 500 -640 425 -640 434 -427 640 -500 378 -500 375 -640 383 -500 375 -480 640 -640 480 -428 640 -640 480 -640 428 -640 427 -640 427 -480 640 -640 494 -640 425 -640 480 -640 427 -640 427 -640 480 -640 480 -500 375 -640 480 -640 428 -640 480 -500 358 -500 375 -612 612 -500 333 -640 464 -500 279 -398 500 -640 429 -500 332 -480 640 -600 400 -500 375 -640 480 -480 640 -478 640 -375 500 -500 375 -640 480 -480 640 -381 500 -586 640 -640 390 -500 334 -640 480 -640 480 -640 424 -640 573 -640 512 -500 375 -640 360 -425 640 -640 480 -490 640 -471 640 -500 375 -640 426 -640 640 -640 480 -640 480 -640 427 -640 480 -640 427 -500 332 -640 480 -500 375 -640 480 -640 427 -640 495 -427 640 -640 480 -640 575 -640 398 -434 640 -640 480 -428 640 -427 640 -640 478 -640 426 -640 428 -500 326 -640 441 -640 418 -427 640 -479 640 -640 480 -612 612 -332 500 -375 500 -480 640 -425 640 -640 480 -500 313 -640 427 -640 426 -640 425 -640 480 -640 428 -427 640 -427 640 -640 480 -640 640 -640 427 -640 428 -640 480 -480 640 -640 427 -640 480 -640 416 -640 480 -640 426 -640 480 -427 640 -640 480 -640 480 -427 640 -428 640 -427 640 -480 640 -640 480 -640 480 -480 640 -640 427 -640 480 -640 480 -640 473 -500 375 -640 528 -427 640 -640 427 -640 427 -640 427 -500 333 -500 500 -426 640 -480 640 -500 375 -500 375 -287 500 -612 612 -640 427 -480 640 -640 480 -473 640 -573 640 -640 427 -480 640 -640 361 -500 333 -500 335 -480 640 -640 478 -640 480 -424 640 -640 428 -640 640 -640 480 -612 612 -640 531 -640 480 -640 480 -640 426 -640 435 -640 424 -640 346 -480 640 -640 427 -640 480 -640 427 -375 500 -640 480 -640 480 -640 480 -640 476 -500 320 -640 428 -640 480 -640 427 -612 612 -640 483 -439 640 -640 431 -500 375 -500 375 -640 480 -640 427 -480 640 -640 424 -640 426 -640 480 -640 436 -478 640 -640 427 -640 480 -640 350 -640 427 -640 427 -640 480 -640 480 -478 640 -640 480 -640 480 -480 640 -640 640 -640 425 -480 640 -640 427 -480 640 -480 640 -640 583 -640 427 -640 480 -640 480 -640 360 -640 480 -640 480 -640 480 -640 480 -640 480 -441 640 -640 480 -612 612 -640 480 -431 640 -640 426 -375 500 -640 481 -500 375 -640 480 -599 640 -640 426 -640 427 -500 300 -640 427 -640 480 -640 380 -500 333 -640 443 -426 640 -640 427 -364 500 -640 480 -640 480 -640 426 -427 640 -640 480 -640 480 -640 480 -424 640 -427 640 -640 480 -640 480 -612 612 -640 480 -640 324 -640 449 -640 329 -640 426 -640 360 -640 480 -500 332 -500 375 -640 480 -640 480 -640 480 -375 500 -640 360 -640 504 -560 640 -480 640 -500 327 -640 426 -640 426 -362 500 -427 640 -500 358 -640 428 -640 425 -640 480 -640 427 -640 351 -640 426 -640 428 -640 429 -640 427 -640 503 -640 427 -640 428 -640 480 -640 427 -640 480 -640 361 -640 360 -640 480 -375 500 -480 640 -640 480 -640 427 -640 428 -640 480 -640 480 -640 359 -640 360 -351 500 -434 640 -640 480 -426 640 -640 427 -640 428 -640 480 -640 427 -640 427 -640 429 -640 426 -640 424 -640 254 -387 604 -640 486 -640 480 -640 480 -640 480 -640 480 -640 480 -480 640 -359 640 -640 480 -480 640 -640 480 -427 640 -612 612 -640 321 -500 500 -640 428 -640 427 -640 480 -640 534 -640 479 -500 375 -640 480 -500 429 -640 428 -500 375 -640 640 -640 640 -640 425 -640 419 -514 597 -640 480 -612 612 -640 479 -640 511 -640 425 -640 427 -400 343 -640 428 -640 426 -640 427 -640 480 -640 426 -640 480 -640 640 -640 480 -640 413 -640 387 -640 426 -428 640 -640 480 -640 427 -640 427 -640 426 -640 480 -640 512 -425 640 -640 424 -640 488 -500 332 -640 426 -640 524 -480 640 -640 480 -500 375 -593 640 -640 427 -640 426 -478 640 -640 427 -408 640 -427 640 -640 480 -640 480 -640 428 -640 428 -640 485 -500 375 -640 480 -480 640 -640 427 -480 640 -640 408 -640 480 -500 399 -480 640 -480 640 -640 424 -640 480 -375 500 -500 375 -640 427 -640 480 -640 170 -640 415 -480 640 -640 402 -500 378 -480 640 -480 640 -500 332 -640 511 -640 427 -640 480 -640 427 -640 421 -640 428 -640 424 -640 388 -640 640 -640 480 -640 427 -640 425 -640 457 -640 427 -480 640 -640 427 -500 375 -640 480 -500 375 -640 428 -500 333 -480 640 -640 512 -480 640 -640 480 -427 640 -640 480 -640 480 -500 333 -640 427 -480 640 -640 428 -640 427 -601 640 -640 480 -500 315 -640 480 -640 425 -640 479 -478 640 -640 478 -612 612 -640 480 -427 640 -480 640 -640 396 -614 461 -640 360 -500 375 -640 400 -640 480 -640 468 -640 427 -480 640 -640 426 -640 480 -640 427 -478 640 -480 640 -640 481 -640 480 -500 375 -640 426 -640 329 -640 427 -640 480 -640 427 -640 480 -640 427 -640 427 -480 640 -640 431 -640 512 -640 428 -640 425 -640 480 -508 640 -480 640 -640 427 -480 640 -640 480 -640 425 -640 480 -640 480 -640 428 -640 425 -640 480 -640 427 -640 480 -640 480 -480 640 -640 431 -612 612 -500 333 -559 640 -640 427 -640 480 -640 480 -612 612 -640 480 -480 640 -640 469 -640 396 -640 480 -640 427 -640 480 -640 425 -640 480 -498 640 -640 318 -640 480 -640 480 -500 375 -484 640 -640 427 -640 640 -640 480 -640 427 -640 426 -640 427 -640 346 -640 427 -640 523 -640 428 -400 640 -500 343 -640 480 -640 425 -640 427 -427 640 -428 640 -375 500 -426 640 -640 426 -640 424 -640 462 -640 480 -375 500 -500 375 -640 328 -480 640 -640 359 -640 463 -640 640 -421 640 -640 480 -427 640 -640 564 -640 478 -640 640 -480 640 -640 427 -480 640 -448 299 -640 359 -612 612 -640 427 -640 480 -640 480 -640 427 -640 396 -640 480 -425 640 -640 480 -365 500 -500 375 -427 640 -480 640 -640 480 -300 351 -640 478 -640 480 -640 439 -640 401 -640 427 -640 427 -640 409 -640 512 -450 300 -500 375 -640 480 -480 640 -480 640 -640 427 -640 428 -500 375 -427 640 -500 400 -640 480 -480 640 -480 640 -640 426 -427 640 -640 426 -640 427 -500 375 -612 612 -375 500 -640 427 -640 486 -500 375 -500 332 -640 464 -640 428 -500 332 -640 640 -640 426 -640 481 -480 640 -640 480 -427 640 -500 375 -640 478 -640 480 -640 640 -640 512 -640 480 -640 427 -640 427 -640 480 -640 427 -640 480 -640 425 -500 332 -640 480 -425 640 -446 640 -614 640 -640 480 -640 480 -426 640 -640 428 -500 363 -640 480 -640 480 -640 428 -640 640 -640 480 -640 480 -640 482 -450 600 -640 424 -640 480 -376 500 -640 480 -480 640 -640 480 -640 427 -427 640 -640 480 -640 478 -640 478 -640 480 -640 479 -640 480 -457 640 -375 500 -428 640 -640 261 -640 400 -640 480 -477 640 -428 640 -640 426 -612 612 -480 640 -640 426 -428 640 -640 427 -640 427 -640 480 -500 500 -500 375 -442 640 -640 429 -640 480 -640 480 -480 640 -640 480 -411 411 -375 500 -640 478 -640 427 -640 480 -427 640 -500 375 -640 480 -427 640 -640 427 -640 480 -640 426 -640 463 -640 480 -640 480 -640 480 -427 640 -640 480 -480 640 -640 426 -500 375 -640 427 -640 480 -640 480 -640 434 -425 640 -640 480 -548 640 -333 500 -640 309 -640 480 -640 427 -640 480 -640 359 -640 480 -480 640 -640 360 -640 427 -480 640 -640 427 -640 480 -640 434 -640 480 -500 375 -640 480 -640 318 -640 427 -480 640 -640 427 -480 640 -408 640 -478 640 -500 356 -640 480 -640 428 -640 427 -640 426 -640 427 -640 427 -640 427 -640 480 -640 458 -640 480 -640 480 -427 640 -427 640 -480 640 -640 429 -640 480 -640 480 -640 427 -640 427 -640 480 -375 500 -375 500 -612 612 -640 428 -640 427 -612 612 -640 427 -640 439 -427 640 -640 427 -640 423 -427 640 -500 438 -446 640 -500 356 -640 427 -640 480 -640 480 -640 433 -640 480 -480 640 -640 427 -640 480 -640 426 -640 480 -640 329 -320 240 -640 512 -640 519 -640 427 -640 425 -640 426 -640 435 -640 426 -640 446 -640 480 -375 500 -640 428 -640 513 -640 425 -640 480 -640 423 -640 600 -480 640 -427 640 -480 640 -632 640 -640 480 -640 480 -640 480 -640 425 -427 640 -500 500 -480 640 -640 426 -640 423 -480 640 -427 640 -640 360 -612 612 -640 480 -640 480 -480 640 -640 441 -426 640 -375 500 -640 439 -640 424 -640 428 -640 480 -480 640 -640 453 -640 480 -640 480 -428 640 -640 427 -480 640 -335 500 -375 500 -427 640 -640 425 -500 333 -500 281 -500 375 -640 427 -640 480 -640 385 -640 431 -640 480 -640 480 -640 480 -425 640 -500 331 -640 426 -500 333 -480 640 -640 427 -640 425 -640 639 -640 480 -640 480 -375 500 -333 500 -640 399 -480 640 -640 429 -640 428 -640 478 -640 426 -480 640 -640 558 -640 427 -640 548 -558 640 -640 480 -427 640 -640 360 -640 428 -640 480 -640 428 -640 360 -480 640 -640 480 -640 480 -616 640 -640 427 -500 375 -423 640 -500 375 -375 500 -640 426 -640 428 -640 427 -427 640 -640 476 -640 360 -640 428 -640 426 -640 426 -640 480 -480 640 -500 375 -640 480 -500 400 -480 640 -640 454 -428 640 -640 421 -640 429 -640 480 -640 427 -640 425 -314 640 -640 480 -640 370 -640 427 -632 640 -640 478 -433 640 -640 480 -640 479 -640 427 -427 640 -500 375 -640 430 -333 500 -640 480 -478 640 -640 480 -640 480 -640 428 -612 612 -500 375 -640 400 -640 412 -640 481 -375 500 -333 500 -425 640 -480 640 -640 480 -640 422 -480 640 -432 640 -640 480 -640 359 -640 479 -427 640 -500 384 -640 480 -640 480 -500 400 -640 426 -640 480 -640 404 -640 478 -500 335 -640 480 -640 480 -640 360 -640 457 -640 518 -640 480 -640 381 -427 640 -640 427 -640 425 -640 427 -640 427 -640 427 -500 375 -480 640 -640 480 -640 480 -640 425 -640 425 -640 427 -500 375 -640 428 -640 480 -582 416 -640 388 -640 480 -500 333 -500 333 -640 512 -480 640 -640 425 -640 426 -640 480 -640 640 -640 428 -640 512 -640 426 -640 480 -500 336 -640 480 -427 640 -500 375 -425 640 -603 640 -427 640 -333 500 -612 612 -500 375 -640 480 -640 480 -640 512 -640 639 -640 500 -375 500 -640 426 -640 480 -640 427 -640 426 -640 480 -428 640 -640 480 -640 480 -474 640 -500 375 -480 640 -640 480 -480 640 -640 426 -640 480 -640 426 -640 427 -612 612 -426 640 -640 424 -375 500 -612 612 -640 427 -640 428 -640 427 -428 640 -399 640 -640 480 -421 640 -429 640 -640 406 -500 375 -500 361 -640 480 -640 481 -640 424 -401 500 -640 480 -640 480 -640 194 -640 554 -640 229 -640 462 -427 640 -480 640 -500 334 -500 375 -375 500 -640 516 -640 427 -640 426 -640 480 -640 480 -640 427 -640 359 -427 640 -640 427 -640 420 -425 640 -514 640 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -500 333 -640 453 -478 640 -640 318 -640 480 -640 480 -640 427 -640 480 -640 480 -500 290 -500 375 -640 480 -640 480 -640 427 -640 410 -337 500 -640 426 -640 480 -612 612 -640 480 -640 480 -640 640 -640 480 -421 640 -640 360 -640 427 -500 375 -500 332 -500 375 -640 480 -640 480 -640 480 -640 480 -640 426 -640 427 -500 375 -400 500 -640 427 -399 640 -640 427 -640 427 -640 480 -640 425 -640 431 -500 333 -640 480 -640 571 -640 640 -640 360 -436 640 -480 640 -640 480 -640 480 -480 640 -612 612 -640 553 -480 640 -640 480 -640 426 -479 640 -640 480 -640 480 -500 375 -427 640 -480 640 -640 518 -640 425 -480 640 -640 306 -640 427 -640 424 -640 427 -640 480 -333 500 -640 427 -640 405 -640 329 -457 640 -640 469 -500 375 -425 640 -436 640 -640 480 -494 500 -437 640 -640 480 -640 451 -640 480 -640 427 -500 281 -612 612 -640 480 -640 480 -640 427 -480 640 -640 460 -480 640 -640 427 -640 480 -640 426 -359 640 -500 380 -640 427 -427 640 -640 425 -640 480 -640 480 -640 480 -640 428 -640 424 -640 383 -480 640 -612 612 -640 427 -640 480 -384 640 -640 436 -640 480 -425 640 -479 640 -427 640 -640 478 -482 640 -640 426 -480 640 -640 480 -640 480 -457 640 -640 480 -640 427 -375 500 -517 640 -307 409 -612 612 -640 428 -640 428 -500 333 -640 503 -640 640 -640 616 -640 600 -640 480 -640 427 -640 480 -640 428 -500 375 -640 425 -640 480 -640 428 -640 478 -640 427 -640 421 -640 480 -640 480 -640 480 -500 375 -640 426 -640 423 -640 477 -640 609 -427 640 -427 640 -640 480 -500 311 -375 500 -480 640 -640 427 -640 427 -469 469 -640 480 -640 427 -500 370 -640 454 -640 480 -640 426 -640 427 -426 640 -427 640 -333 500 -426 640 -640 330 -491 500 -424 500 -640 480 -333 500 -413 450 -640 448 -411 640 -640 426 -410 310 -500 332 -640 424 -640 427 -640 640 -500 375 -410 640 -640 480 -380 500 -640 480 -640 480 -480 640 -640 426 -640 480 -478 640 -640 480 -640 429 -500 364 -640 226 -640 148 -480 640 -640 480 -389 640 -640 428 -640 424 -640 471 -480 640 -640 457 -640 513 -640 427 -480 640 -640 419 -316 500 -500 375 -640 427 -640 480 -640 480 -640 480 -428 640 -640 427 -640 427 -640 480 -500 333 -640 480 -500 333 -640 427 -383 500 -640 465 -640 427 -640 427 -500 375 -640 494 -612 612 -640 480 -640 480 -424 640 -640 480 -640 428 -640 480 -640 480 -640 427 -475 640 -640 566 -640 480 -640 427 -500 400 -640 383 -640 427 -612 612 -480 640 -500 400 -612 612 -640 480 -640 453 -480 640 -500 375 -640 427 -640 480 -640 427 -556 640 -480 640 -640 381 -640 480 -640 427 -640 418 -500 375 -500 281 -480 640 -360 640 -640 402 -640 427 -515 640 -500 500 -640 428 -640 427 -640 427 -640 480 -640 480 -618 640 -640 480 -640 480 -640 393 -640 480 -640 426 -640 640 -540 640 -640 640 -640 427 -500 375 -458 640 -640 427 -640 427 -640 481 -500 433 -426 640 -640 480 -640 416 -640 480 -480 640 -640 454 -500 421 -428 640 -640 480 -640 480 -426 640 -640 264 -459 640 -640 426 -640 444 -375 500 -640 467 -640 428 -500 334 -640 480 -427 640 -640 480 -640 478 -640 480 -426 640 -480 640 -375 500 -426 640 -640 480 -427 640 -427 640 -612 612 -640 436 -640 432 -428 640 -640 480 -480 640 -640 428 -640 480 -640 427 -640 480 -640 360 -424 640 -640 359 -640 480 -640 480 -640 427 -640 480 -640 480 -500 375 -500 375 -600 400 -640 480 -375 500 -640 480 -640 512 -480 640 -427 640 -640 480 -388 640 -640 480 -640 480 -640 427 -640 480 -500 375 -441 640 -478 640 -640 427 -425 640 -612 612 -640 428 -640 480 -640 404 -640 480 -640 480 -419 640 -427 640 -640 523 -640 427 -500 375 -640 427 -375 500 -500 381 -640 480 -640 361 -640 480 -640 480 -640 429 -640 480 -640 480 -500 375 -425 640 -612 612 -640 398 -480 640 -480 640 -600 450 -640 309 -500 403 -640 480 -640 480 -427 640 -480 640 -640 541 -640 478 -537 640 -640 427 -480 640 -640 480 -640 426 -640 360 -427 640 -427 640 -640 429 -427 640 -361 640 -640 427 -500 375 -640 340 -640 480 -640 428 -480 640 -640 334 -640 480 -640 273 -640 426 -640 426 -612 612 -500 375 -427 640 -640 480 -640 433 -640 480 -640 342 -640 457 -640 427 -640 480 -640 541 -480 640 -403 500 -480 640 -500 375 -480 640 -633 640 -640 427 -640 426 -640 424 -640 427 -640 480 -640 436 -640 425 -640 480 -480 640 -428 640 -500 375 -640 480 -360 270 -640 428 -640 361 -640 480 -640 480 -640 231 -640 512 -360 640 -640 603 -640 480 -640 428 -426 640 -640 480 -427 640 -640 427 -302 500 -426 640 -640 427 -640 427 -500 333 -640 427 -640 427 -640 426 -640 341 -500 341 -640 428 -480 640 -640 427 -500 447 -640 554 -640 480 -426 640 -640 480 -640 480 -567 470 -480 640 -640 428 -418 640 -480 640 -640 427 -640 480 -640 480 -640 480 -521 640 -640 480 -427 640 -500 334 -640 480 -640 480 -640 426 -640 480 -640 480 -640 477 -640 382 -480 640 -480 640 -640 429 -640 425 -640 427 -640 526 -500 375 -640 426 -640 427 -476 640 -640 480 -640 461 -375 500 -640 426 -640 480 -640 480 -640 294 -640 359 -469 640 -252 640 -640 427 -640 427 -640 480 -427 640 -500 375 -553 640 -640 450 -640 424 -640 480 -500 375 -426 640 -640 428 -427 640 -334 500 -350 640 -640 498 -500 333 -640 480 -640 480 -640 426 -480 640 -240 320 -640 640 -640 480 -640 427 -640 480 -640 531 -500 375 -480 640 -564 640 -640 480 -640 480 -500 473 -640 425 -640 406 -480 640 -640 480 -640 427 -500 375 -640 480 -480 640 -640 480 -360 640 -640 480 -578 640 -480 640 -640 426 -640 478 -640 427 -640 640 -640 480 -640 480 -480 640 -427 640 -640 427 -500 333 -425 640 -503 640 -375 500 -427 640 -640 427 -427 640 -480 640 -640 424 -640 480 -500 375 -640 427 -640 480 -640 479 -433 640 -640 425 -480 640 -458 640 -640 426 -636 478 -479 640 -640 572 -640 462 -640 425 -480 640 -640 480 -640 480 -640 480 -640 426 -640 480 -640 427 -640 480 -640 501 -640 480 -640 444 -640 457 -640 425 -640 427 -640 428 -640 388 -426 640 -640 424 -640 480 -640 386 -640 427 -333 500 -640 480 -480 640 -493 640 -426 640 -480 640 -640 427 -426 640 -640 480 -640 427 -640 511 -640 427 -640 640 -640 480 -458 640 -427 640 -480 640 -640 345 -640 480 -640 426 -480 640 -640 305 -640 480 -640 427 -640 428 -640 480 -640 427 -640 427 -640 427 -498 640 -500 332 -511 640 -478 640 -640 480 -640 480 -427 640 -640 427 -514 640 -424 640 -640 480 -640 425 -500 333 -640 425 -640 480 -500 375 -640 424 -640 360 -640 480 -640 480 -427 640 -640 480 -640 360 -640 480 -430 640 -640 480 -427 640 -640 480 -640 480 -375 500 -474 640 -640 425 -640 480 -640 593 -640 480 -640 425 -480 640 -640 425 -640 427 -500 375 -640 326 -500 375 -640 480 -640 427 -640 480 -612 612 -640 427 -640 458 -500 334 -640 411 -640 358 -500 375 -428 640 -427 640 -612 612 -480 640 -426 640 -526 640 -333 500 -426 640 -640 457 -500 374 -640 392 -612 612 -640 427 -640 393 -640 480 -480 640 -551 640 -612 612 -640 563 -640 427 -640 480 -640 640 -582 640 -640 480 -288 352 -640 427 -640 417 -640 425 -480 640 -500 375 -640 480 -640 470 -640 480 -640 480 -402 500 -640 428 -640 425 -640 428 -640 427 -427 640 -640 480 -640 480 -478 640 -640 480 -480 640 -480 640 -640 428 -640 453 -640 427 -640 427 -640 424 -500 375 -500 375 -427 640 -640 427 -480 640 -640 480 -640 426 -480 640 -400 600 -640 424 -401 401 -640 480 -500 335 -640 480 -640 480 -428 640 -640 480 -640 640 -640 427 -640 480 -640 450 -640 480 -640 480 -640 422 -612 612 -478 640 -640 429 -480 640 -480 640 -640 399 -640 466 -480 640 -640 427 -640 480 -428 640 -480 640 -640 480 -612 612 -480 640 -640 480 -480 640 -640 614 -640 457 -640 457 -640 425 -640 429 -500 375 -640 480 -333 500 -480 640 -634 640 -480 640 -640 359 -640 427 -640 480 -640 428 -500 375 -640 480 -640 426 -640 424 -640 328 -640 428 -375 500 -427 640 -640 427 -428 640 -640 429 -411 640 -427 640 -480 640 -480 640 -640 427 -640 433 -640 361 -333 500 -640 427 -480 640 -640 428 -427 640 -640 427 -640 427 -640 425 -480 640 -640 428 -640 640 -640 480 -640 426 -640 427 -640 480 -640 640 -640 480 -640 480 -612 612 -427 640 -375 500 -500 495 -640 411 -478 640 -612 612 -500 375 -640 480 -640 379 -640 426 -640 480 -480 640 -640 480 -640 479 -426 640 -480 640 -480 640 -640 424 -640 428 -640 425 -640 426 -640 480 -640 425 -427 640 -640 399 -640 423 -640 428 -640 427 -640 480 -640 430 -640 450 -640 480 -480 640 -640 427 -640 457 -640 480 -640 480 -480 640 -640 480 -640 480 -640 426 -640 426 -640 480 -640 421 -640 504 -640 427 -473 640 -640 480 -640 480 -640 480 -640 427 -427 640 -640 423 -500 398 -640 427 -640 427 -640 480 -500 386 -640 426 -640 480 -640 480 -640 428 -427 640 -640 461 -427 640 -640 427 -480 640 -480 640 -500 334 -640 427 -594 640 -488 640 -640 480 -400 604 -640 426 -500 334 -411 640 -640 482 -425 640 -640 359 -640 427 -480 640 -426 640 -640 443 -640 480 -640 445 -427 640 -640 425 -640 464 -427 640 -500 375 -640 480 -640 490 -640 480 -640 509 -640 360 -640 429 -640 639 -425 640 -640 427 -640 429 -640 360 -640 427 -500 375 -640 427 -640 480 -333 500 -640 480 -500 375 -640 480 -640 480 -500 334 -500 382 -557 640 -640 360 -640 427 -427 640 -640 425 -640 480 -640 478 -640 480 -500 461 -640 458 -640 426 -640 387 -640 427 -640 501 -640 480 -500 334 -640 426 -500 333 -640 425 -480 640 -375 500 -480 640 -640 427 -640 480 -640 417 -640 480 -500 375 -640 428 -426 640 -640 456 -640 429 -333 500 -612 612 -500 333 -640 427 -428 640 -331 500 -640 512 -427 640 -640 428 -640 480 -640 509 -640 427 -640 427 -500 333 -427 640 -640 481 -480 640 -480 640 -640 427 -409 640 -640 426 -426 640 -640 428 -640 480 -640 359 -640 427 -500 375 -640 476 -612 612 -425 640 -640 480 -640 480 -640 480 -640 480 -480 640 -640 359 -453 640 -600 422 -203 179 -640 427 -640 426 -640 463 -640 426 -640 425 -480 640 -480 640 -316 425 -640 469 -640 359 -457 640 -640 427 -640 640 -332 500 -640 480 -500 423 -500 500 -640 426 -415 640 -640 428 -640 480 -640 640 -538 640 -640 480 -640 427 -640 480 -500 352 -640 480 -640 436 -500 375 -640 425 -640 457 -400 400 -640 427 -640 427 -480 640 -427 640 -640 480 -486 640 -640 427 -480 640 -640 427 -640 427 -425 640 -640 359 -500 375 -640 480 -640 478 -480 640 -640 480 -640 480 -640 480 -640 298 -640 491 -640 480 -428 640 -640 359 -640 360 -427 640 -428 640 -640 480 -478 640 -478 640 -427 640 -640 480 -640 480 -640 425 -338 500 -500 375 -500 281 -640 480 -480 640 -640 427 -640 513 -428 640 -375 500 -500 375 -612 612 -640 422 -426 640 -425 640 -500 375 -537 640 -640 480 -640 480 -640 480 -427 640 -640 427 -612 612 -640 480 -640 450 -640 457 -640 480 -334 500 -480 640 -640 427 -640 480 -350 350 -427 640 -640 427 -640 427 -500 346 -640 480 -319 500 -336 500 -640 427 -612 612 -640 480 -640 480 -480 640 -527 640 -333 500 -640 512 -500 375 -500 375 -320 240 -640 480 -480 640 -640 480 -480 640 -640 428 -640 480 -480 640 -640 427 -640 423 -640 480 -640 480 -428 640 -640 480 -500 333 -640 480 -427 640 -427 640 -640 480 -640 481 -640 480 -640 427 -640 425 -406 640 -640 164 -640 480 -640 640 -640 428 -500 375 -500 375 -640 408 -640 480 -640 381 -640 425 -480 640 -427 640 -400 500 -640 425 -640 426 -333 500 -426 640 -480 640 -480 640 -640 480 -640 480 -640 425 -640 428 -640 427 -480 640 -640 480 -640 427 -640 424 -640 426 -640 478 -640 427 -426 640 -500 375 -640 480 -640 459 -640 428 -500 375 -640 426 -640 640 -427 640 -640 404 -640 426 -640 425 -360 640 -640 480 -640 426 -640 361 -500 375 -640 480 -640 480 -383 640 -640 427 -500 375 -480 640 -640 480 -640 480 -480 640 -640 428 -640 480 -640 480 -500 343 -640 426 -640 480 -424 640 -640 446 -426 640 -640 480 -600 399 -427 640 -300 225 -480 640 -363 640 -640 480 -640 434 -398 640 -640 426 -640 428 -480 640 -500 334 -425 640 -640 480 -640 427 -640 480 -480 640 -640 480 -640 480 -480 640 -640 428 -640 427 -640 427 -480 640 -640 480 -480 640 -427 640 -640 496 -480 640 -640 512 -640 480 -640 433 -640 427 -640 427 -426 640 -427 640 -352 288 -640 426 -640 427 -500 375 -640 426 -640 480 -640 427 -640 425 -427 640 -640 480 -640 426 -640 480 -500 434 -640 480 -640 426 -426 640 -375 500 -406 500 -427 640 -640 467 -476 640 -421 640 -640 480 -640 427 -500 375 -448 640 -640 480 -640 426 -640 418 -640 480 -500 375 -640 448 -427 640 -480 640 -640 373 -640 426 -640 443 -428 640 -640 466 -640 480 -640 480 -480 640 -640 480 -640 480 -640 480 -640 480 -640 427 -640 480 -640 427 -640 428 -600 450 -640 429 -375 500 -640 428 -426 640 -640 427 -640 512 -640 426 -640 480 -500 318 -640 428 -500 375 -500 376 -640 480 -640 427 -640 428 -448 336 -640 480 -640 480 -640 443 -640 480 -500 333 -500 333 -640 480 -422 640 -640 479 -500 333 -640 479 -640 480 -640 640 -640 425 -480 640 -640 425 -640 480 -441 640 -500 333 -640 570 -500 375 -640 429 -480 640 -640 481 -640 386 -640 437 -640 480 -640 428 -640 480 -640 425 -640 427 -640 320 -500 356 -500 286 -640 426 -427 640 -640 480 -640 480 -427 640 -640 480 -640 427 -628 640 -480 640 -640 427 -426 640 -640 480 -612 612 -640 480 -480 640 -640 639 -480 640 -375 500 -375 500 -640 480 -640 429 -640 426 -500 343 -640 480 -640 425 -426 640 -640 427 -640 480 -426 640 -500 375 -640 425 -640 427 -640 427 -434 296 -640 426 -612 612 -500 375 -640 480 -640 480 -640 426 -480 640 -640 480 -640 427 -640 546 -478 640 -640 480 -640 480 -480 640 -612 612 -640 427 -640 427 -640 480 -640 489 -500 333 -640 440 -640 427 -427 640 -640 426 -640 480 -640 427 -640 639 -640 480 -500 350 -467 640 -640 427 -426 640 -446 640 -640 481 -480 640 -640 426 -640 510 -640 480 -477 640 -640 427 -612 612 -640 480 -640 512 -640 480 -640 429 -640 427 -640 428 -509 640 -429 640 -640 299 -640 480 -640 480 -500 332 -640 480 -500 400 -640 401 -640 480 -640 480 -640 427 -640 480 -640 480 -640 538 -334 500 -480 640 -640 480 -640 424 -500 334 -640 480 -362 640 -640 360 -640 501 -640 457 -640 426 -640 428 -480 640 -640 425 -515 640 -640 480 -640 426 -640 480 -480 640 -640 429 -640 429 -480 640 -640 480 -640 480 -640 480 -500 375 -640 339 -640 372 -500 333 -640 480 -500 375 -427 640 -640 480 -369 520 -640 427 -640 480 -427 640 -500 334 -640 480 -640 480 -500 332 -640 480 -500 375 -640 428 -640 427 -640 480 -640 426 -640 480 -640 460 -640 480 -458 640 -640 480 -640 640 -640 387 -640 480 -640 428 -640 428 -640 480 -640 426 -640 480 -640 425 -640 379 -480 640 -427 640 -640 480 -640 427 -612 612 -640 276 -640 480 -640 426 -640 427 -640 427 -465 640 -640 480 -400 500 -640 476 -640 428 -640 480 -640 446 -640 480 -640 480 -376 500 -640 427 -640 427 -640 426 -500 333 -640 480 -500 375 -640 406 -640 361 -640 478 -612 612 -640 310 -500 496 -640 426 -640 427 -640 359 -640 480 -640 427 -640 480 -480 640 -640 360 -640 425 -604 453 -640 421 -500 354 -500 375 -640 467 -640 480 -500 335 -425 640 -640 427 -640 427 -480 640 -640 413 -640 427 -640 480 -640 518 -640 480 -640 427 -640 336 -640 480 -640 427 -427 640 -640 640 -566 640 -480 640 -500 346 -640 480 -480 640 -480 640 -427 640 -640 425 -426 640 -640 559 -640 480 -500 342 -500 500 -640 448 -640 380 -640 424 -426 640 -640 427 -640 427 -640 427 -640 427 -500 419 -480 640 -480 640 -640 427 -640 480 -640 427 -640 425 -640 427 -640 427 -500 333 -375 500 -640 480 -640 480 -640 434 -640 480 -426 640 -375 500 -612 612 -480 640 -640 427 -640 427 -480 640 -640 426 -640 427 -640 360 -640 480 -640 427 -640 427 -640 480 -600 402 -640 428 -428 640 -640 512 -640 428 -408 500 -640 480 -640 480 -640 427 -500 375 -426 640 -640 640 -480 640 -480 640 -640 360 -640 427 -640 427 -640 426 -640 424 -480 640 -640 433 -360 480 -500 375 -640 479 -640 480 -427 640 -640 480 -640 457 -640 640 -640 490 -500 333 -446 640 -640 480 -640 567 -640 480 -640 404 -640 427 -640 478 -640 426 -500 441 -357 640 -640 429 -640 425 -640 427 -640 427 -612 612 -640 480 -360 640 -640 424 -640 386 -640 480 -640 480 -500 335 -640 480 -640 484 -457 640 -640 436 -480 360 -640 427 -427 640 -500 375 -640 439 -640 427 -479 640 -640 427 -640 512 -354 500 -640 457 -500 375 -418 640 -480 640 -640 480 -427 640 -480 640 -640 360 -480 640 -612 612 -612 612 -375 500 -500 333 -640 428 -500 338 -640 480 -640 480 -640 480 -626 476 -448 640 -375 500 -640 360 -360 360 -640 425 -640 427 -640 426 -640 427 -640 428 -640 480 -480 640 -640 480 -640 427 -480 640 -640 480 -640 479 -640 480 -427 640 -375 500 -640 480 -612 612 -478 640 -640 313 -640 424 -373 640 -480 640 -640 480 -480 640 -640 480 -640 480 -640 427 -640 573 -640 427 -640 480 -640 435 -288 352 -640 480 -640 451 -548 640 -375 500 -640 428 -640 480 -640 476 -383 640 -640 360 -640 478 -640 480 -640 480 -640 426 -612 612 -640 328 -640 480 -480 640 -427 640 -640 403 -400 435 -640 480 -375 500 -640 480 -640 427 -480 640 -640 640 -640 424 -640 428 -480 640 -640 360 -426 640 -612 612 -375 500 -640 480 -640 444 -478 640 -480 640 -500 375 -426 640 -640 425 -640 480 -640 479 -640 429 -640 427 -640 426 -557 640 -640 480 -640 447 -640 480 -426 640 -500 375 -640 427 -640 616 -426 640 -500 332 -640 427 -640 480 -640 480 -428 640 -640 480 -500 405 -480 640 -640 502 -426 640 -640 480 -640 480 -640 424 -640 480 -640 480 -428 640 -640 425 -424 640 -380 285 -640 427 -640 480 -640 427 -427 640 -640 429 -640 480 -640 480 -427 640 -458 640 -537 640 -640 427 -640 640 -408 640 -640 467 -640 598 -375 500 -640 480 -640 480 -229 350 -640 480 -640 426 -480 640 -640 480 -375 500 -640 297 -640 480 -640 483 -640 428 -640 427 -612 612 -500 375 -640 426 -640 480 -640 427 -640 480 -480 640 -640 480 -500 375 -640 482 -640 427 -640 572 -640 516 -640 427 -640 427 -640 481 -640 480 -640 414 -640 427 -640 440 -640 480 -640 480 -500 320 -640 383 -640 354 -480 640 -640 427 -480 640 -640 480 -640 480 -640 480 -640 427 -473 640 -640 359 -640 480 -640 425 -500 334 -553 640 -560 640 -426 640 -640 480 -500 375 -640 480 -480 640 -640 444 -640 480 -640 480 -640 480 -413 640 -640 485 -332 500 -500 273 -375 500 -617 640 -640 480 -640 480 -500 375 -640 427 -500 375 -480 640 -640 425 -425 640 -409 640 -640 426 -640 480 -500 375 -640 480 -500 375 -640 427 -640 480 -334 500 -640 481 -640 445 -360 640 -500 375 -640 427 -640 480 -640 425 -480 640 -640 427 -372 464 -480 640 -640 428 -500 375 -500 375 -640 429 -469 640 -640 426 -500 375 -612 612 -640 427 -640 427 -640 480 -612 612 -640 427 -640 427 -640 361 -500 375 -640 427 -320 240 -640 362 -640 480 -640 428 -640 480 -640 429 -640 426 -640 480 -640 480 -640 480 -640 480 -500 359 -640 480 -480 640 -640 480 -640 480 -426 640 -461 640 -640 427 -427 640 -640 479 -640 480 -640 427 -426 640 -640 427 -333 500 -640 360 -612 612 -480 640 -640 428 -640 480 -640 427 -640 480 -640 429 -640 427 -640 303 -640 480 -500 375 -640 480 -640 424 -640 480 -640 480 -640 622 -640 480 -640 480 -640 480 -640 427 -375 500 -612 612 -332 500 -600 400 -427 640 -640 433 -640 480 -480 640 -350 500 -500 500 -480 640 -480 640 -612 612 -423 640 -640 427 -424 640 -478 640 -640 426 -640 427 -480 640 -422 640 -640 427 -500 333 -640 427 -640 425 -640 480 -500 375 -346 504 -640 480 -640 441 -500 342 -457 640 -640 426 -640 426 -640 480 -640 569 -426 640 -640 427 -640 438 -640 427 -640 429 -640 480 -640 427 -422 640 -503 640 -640 551 -640 573 -640 480 -640 463 -640 427 -426 640 -640 480 -500 334 -640 480 -640 480 -640 480 -427 640 -640 480 -640 446 -424 640 -640 428 -612 612 -612 612 -640 478 -640 428 -640 501 -640 427 -480 640 -640 425 -500 401 -640 427 -640 429 -640 429 -451 640 -640 427 -480 640 -500 333 -333 500 -640 424 -640 427 -500 500 -640 427 -480 640 -640 426 -480 640 -427 640 -612 612 -640 427 -640 480 -500 334 -480 640 -640 426 -640 428 -640 480 -500 375 -640 480 -640 426 -640 425 -424 640 -640 480 -640 425 -640 427 -640 493 -500 367 -375 500 -640 374 -640 480 -333 500 -480 640 -640 430 -640 480 -640 427 -500 375 -500 375 -640 381 -640 427 -640 480 -640 424 -480 640 -640 425 -640 427 -640 466 -640 480 -500 333 -640 480 -640 427 -640 428 -640 510 -640 427 -359 640 -426 640 -335 500 -425 640 -640 479 -480 640 -500 346 -640 427 -640 320 -500 334 -498 640 -500 400 -480 640 -500 375 -640 480 -500 375 -640 427 -640 480 -480 640 -640 480 -640 427 -640 186 -640 427 -640 427 -480 640 -640 426 -640 479 -480 640 -640 480 -640 429 -640 427 -640 427 -500 333 -640 427 -429 640 -640 480 -480 640 -375 500 -640 427 -640 480 -426 640 -385 308 -640 427 -640 480 -500 375 -640 478 -640 427 -640 427 -480 640 -500 375 -640 427 -640 360 -640 480 -640 427 -640 480 -640 427 -640 390 -640 427 -457 640 -500 500 -500 375 -359 640 -500 375 -640 431 -600 400 -640 509 -428 640 -427 640 -427 640 -640 428 -640 425 -612 612 -640 424 -375 500 -335 500 -640 425 -640 480 -500 405 -640 426 -640 480 -640 564 -640 427 -480 640 -408 500 -640 480 -640 640 -640 480 -640 480 -640 513 -640 480 -474 640 -640 427 -500 322 -508 640 -640 439 -425 640 -427 640 -640 480 -500 375 -320 240 -640 480 -332 500 -640 427 -640 426 -480 640 -640 427 -640 427 -640 512 -640 478 -640 480 -640 480 -640 427 -500 375 -640 480 -500 375 -425 640 -640 605 -640 480 -640 538 -640 360 -427 640 -334 500 -480 640 -640 425 -427 640 -640 426 -640 428 -640 640 -640 427 -640 480 -640 478 -640 424 -640 480 -640 425 -469 640 -426 640 -500 288 -640 359 -640 366 -640 427 -640 482 -640 428 -640 263 -640 427 -640 426 -640 479 -640 480 -328 500 -640 480 -480 640 -480 640 -640 427 -612 612 -634 640 -640 426 -478 640 -439 500 -640 426 -640 480 -640 460 -640 640 -346 500 -428 640 -500 375 -640 480 -640 480 -478 640 -640 468 -640 426 -500 333 -480 640 -640 381 -640 426 -640 480 -640 478 -640 426 -640 480 -640 428 -480 640 -640 480 -640 480 -335 500 -640 427 -640 425 -640 480 -640 418 -500 375 -640 640 -640 378 -640 443 -480 640 -480 640 -640 480 -640 480 -640 383 -640 427 -518 640 -640 627 -500 228 -640 426 -640 426 -427 640 -640 480 -612 612 -640 470 -640 480 -600 600 -640 480 -640 425 -640 480 -640 480 -640 480 -500 375 -480 640 -640 480 -640 482 -225 640 -428 640 -439 640 -640 480 -400 300 -489 640 -640 427 -640 204 -640 427 -640 396 -500 333 -640 481 -640 428 -640 428 -640 424 -500 375 -451 298 -640 425 -640 428 -500 375 -640 480 -500 375 -640 426 -474 640 -640 425 -640 424 -364 640 -500 333 -640 606 -427 640 -640 427 -497 640 -457 640 -640 427 -640 427 -640 427 -480 640 -640 480 -640 486 -640 427 -640 426 -640 433 -640 471 -479 640 -640 427 -640 426 -480 640 -640 480 -500 375 -375 500 -640 480 -640 480 -396 500 -500 375 -640 480 -640 480 -480 640 -640 427 -640 360 -429 640 -640 427 -640 427 -640 431 -612 612 -640 480 -640 429 -640 434 -500 333 -500 367 -640 480 -427 640 -427 640 -640 428 -480 640 -500 333 -640 427 -640 480 -640 259 -640 480 -640 428 -640 463 -640 426 -640 427 -375 500 -640 480 -584 640 -500 375 -640 640 -640 427 -640 480 -640 426 -480 640 -640 480 -480 640 -640 480 -426 640 -425 640 -640 426 -640 480 -640 427 -478 640 -640 484 -437 640 -640 427 -640 428 -500 333 -500 375 -640 453 -640 427 -480 640 -640 428 -640 427 -640 500 -480 640 -427 640 -500 375 -640 427 -640 480 -640 427 -500 332 -500 375 -502 640 -640 640 -640 425 -640 360 -640 426 -640 499 -640 359 -640 428 -640 480 -640 480 -640 251 -640 480 -640 427 -640 480 -640 427 -375 500 -480 640 -640 480 -640 480 -517 640 -640 480 -480 640 -612 612 -480 640 -640 424 -640 480 -640 480 -640 421 -427 640 -640 427 -640 480 -640 427 -640 387 -480 640 -640 407 -640 360 -640 439 -640 404 -640 482 -640 480 -427 640 -640 427 -640 480 -375 500 -640 428 -640 480 -640 391 -480 640 -640 480 -640 480 -640 427 -612 612 -640 480 -640 428 -400 325 -458 640 -640 442 -640 428 -427 640 -632 640 -640 622 -640 429 -427 640 -640 480 -427 640 -640 428 -548 411 -640 426 -484 640 -640 426 -640 480 -640 480 -514 640 -500 333 -500 500 -640 627 -424 640 -444 640 -640 426 -640 424 -640 427 -640 480 -640 426 -640 480 -480 640 -640 480 -333 500 -640 480 -640 480 -376 500 -640 426 -427 640 -640 426 -500 375 -429 640 -480 640 -640 480 -640 457 -640 374 -640 480 -640 480 -500 377 -640 373 -640 480 -500 375 -640 360 -640 485 -640 640 -640 480 -640 480 -333 500 -640 426 -640 426 -640 451 -640 480 -640 444 -640 523 -480 640 -480 640 -640 480 -375 500 -458 640 -480 640 -500 375 -640 426 -640 457 -640 480 -375 500 -640 418 -640 427 -640 434 -640 428 -640 425 -640 436 -640 426 -640 319 -640 480 -500 375 -640 427 -640 427 -500 332 -640 427 -375 500 -640 480 -640 495 -640 361 -478 640 -480 640 -640 424 -640 384 -612 612 -640 426 -640 480 -500 500 -640 356 -480 640 -426 640 -640 640 -500 375 -640 360 -640 478 -480 640 -640 480 -425 640 -640 423 -480 640 -480 640 -640 480 -640 427 -640 464 -483 640 -480 640 -640 359 -612 612 -640 531 -640 396 -640 427 -640 480 -640 480 -500 352 -640 480 -640 427 -640 480 -640 541 -640 427 -640 427 -480 640 -640 427 -640 427 -427 640 -640 555 -640 480 -640 426 -640 428 -424 640 -500 333 -640 426 -640 427 -512 640 -640 360 -640 427 -427 640 -500 198 -640 480 -375 500 -480 640 -640 426 -640 480 -640 428 -640 459 -640 427 -640 426 -640 480 -640 391 -640 480 -640 428 -640 480 -640 427 -480 640 -640 427 -640 427 -640 427 -640 478 -640 426 -640 480 -320 240 -480 640 -427 640 -640 480 -640 453 -640 428 -480 640 -480 640 -640 426 -640 478 -640 480 -640 480 -640 432 -640 483 -640 361 -640 427 -480 640 -480 640 -500 374 -640 480 -640 480 -640 359 -640 360 -480 640 -427 640 -430 640 -640 427 -640 408 -480 640 -333 500 -640 480 -428 640 -480 640 -640 427 -425 640 -640 480 -640 480 -375 500 -500 362 -332 500 -375 500 -640 400 -640 454 -435 640 -334 500 -424 640 -640 480 -500 375 -480 640 -640 424 -640 480 -640 427 -640 640 -640 378 -640 427 -640 480 -500 406 -640 360 -640 360 -424 640 -427 640 -640 427 -640 480 -640 427 -640 480 -640 458 -640 425 -640 459 -640 480 -640 480 -640 480 -480 640 -640 426 -640 480 -640 427 -640 426 -640 400 -640 480 -640 480 -640 427 -640 513 -500 361 -639 640 -481 640 -640 427 -640 425 -640 426 -500 308 -640 480 -640 458 -640 428 -612 612 -452 640 -640 426 -480 640 -511 640 -640 426 -640 480 -427 640 -640 480 -500 328 -640 480 -640 480 -383 640 -640 480 -500 330 -640 427 -500 375 -640 427 -500 332 -428 640 -640 502 -640 425 -640 426 -500 375 -640 480 -640 388 -640 427 -427 640 -639 640 -640 640 -640 427 -640 431 -640 480 -640 426 -640 428 -480 640 -640 426 -640 427 -500 375 -640 640 -640 475 -640 412 -640 428 -500 333 -640 480 -640 512 -375 500 -454 640 -500 371 -640 427 -640 425 -640 480 -640 640 -640 640 -640 360 -640 426 -640 426 -640 480 -612 612 -480 640 -640 428 -640 360 -640 480 -375 500 -478 640 -640 427 -640 480 -427 640 -360 640 -600 400 -612 612 -640 480 -640 482 -640 424 -640 480 -640 480 -640 340 -640 426 -640 427 -427 640 -640 427 -640 480 -480 640 -640 428 -495 640 -640 480 -640 480 -480 640 -640 480 -640 480 -480 640 -640 425 -640 427 -640 480 -427 640 -640 428 -640 640 -640 425 -480 640 -640 427 -640 480 -640 427 -640 512 -500 375 -640 427 -640 480 -640 412 -436 640 -640 426 -500 375 -640 428 -640 640 -640 360 -640 427 -640 480 -640 428 -640 427 -500 375 -640 480 -640 427 -640 480 -640 304 -500 375 -427 640 -640 428 -640 480 -640 481 -428 640 -480 640 -640 458 -500 375 -640 480 -640 480 -640 383 -640 425 -500 375 -640 426 -640 480 -640 427 -640 427 -427 640 -640 480 -640 480 -640 480 -640 640 -480 640 -640 426 -640 480 -640 483 -640 360 -640 478 -640 427 -640 424 -612 612 -640 481 -640 480 -640 426 -480 640 -640 426 -480 640 -640 428 -640 480 -375 500 -480 640 -640 480 -500 370 -640 480 -640 427 -500 368 -500 375 -640 543 -427 640 -500 361 -498 640 -640 427 -640 480 -500 356 -640 480 -640 462 -640 480 -480 640 -640 480 -640 480 -385 289 -640 480 -500 333 -478 640 -640 480 -640 383 -640 481 -640 457 -640 443 -640 425 -480 640 -640 480 -640 426 -640 480 -640 428 -480 640 -500 375 -500 375 -640 425 -640 361 -640 427 -640 480 -640 480 -500 400 -640 427 -640 478 -640 427 -640 427 -500 333 -640 421 -500 375 -640 425 -640 423 -480 640 -480 640 -500 375 -640 480 -640 399 -335 500 -640 480 -640 424 -427 640 -640 427 -640 480 -640 425 -335 500 -640 426 -640 426 -640 426 -640 480 -640 384 -640 374 -426 640 -333 500 -500 375 -480 640 -640 337 -640 459 -640 480 -640 358 -640 480 -629 640 -427 640 -640 426 -640 458 -640 640 -563 640 -640 497 -640 480 -480 640 -640 413 -640 426 -500 376 -640 427 -640 640 -426 640 -480 640 -640 480 -640 428 -640 426 -426 640 -480 640 -427 640 -640 480 -429 640 -480 640 -640 512 -427 640 -640 368 -640 480 -640 480 -640 480 -640 480 -640 428 -640 429 -640 426 -612 612 -640 480 -427 640 -480 640 -640 427 -640 360 -640 426 -640 480 -500 346 -640 621 -640 360 -640 480 -640 428 -640 399 -500 375 -640 480 -480 640 -640 475 -500 333 -640 424 -500 400 -640 360 -495 640 -640 484 -640 427 -640 427 -500 334 -640 480 -500 398 -640 449 -640 480 -501 640 -500 334 -640 427 -640 439 -640 427 -640 427 -640 480 -580 640 -640 480 -480 640 -640 360 -428 640 -513 640 -640 427 -640 480 -440 640 -640 427 -562 640 -640 427 -640 480 -500 375 -426 640 -640 427 -640 427 -640 416 -640 425 -640 512 -500 375 -478 640 -521 640 -500 375 -640 433 -640 513 -640 428 -640 383 -640 427 -640 454 -640 427 -640 483 -640 426 -458 640 -640 480 -640 480 -640 428 -612 612 -564 640 -640 480 -500 333 -640 424 -640 426 -509 640 -640 425 -427 640 -640 341 -500 375 -457 640 -480 640 -640 428 -500 334 -640 480 -480 640 -640 429 -640 425 -428 640 -500 333 -480 640 -404 640 -640 480 -640 480 -640 426 -640 502 -640 425 -527 640 -640 425 -640 427 -427 640 -640 428 -425 640 -640 434 -640 480 -640 480 -640 427 -640 424 -640 480 -640 440 -640 439 -640 424 -640 360 -640 427 -640 480 -640 480 -640 424 -478 640 -640 481 -640 426 -640 480 -640 480 -500 496 -640 373 -640 439 -640 310 -640 640 -500 393 -640 428 -640 478 -640 424 -640 480 -640 480 -640 427 -500 334 -640 426 -500 453 -516 640 -640 488 -500 375 -640 424 -640 427 -640 480 -333 500 -640 366 -640 425 -425 640 -500 333 -581 640 -427 640 -480 640 -640 480 -640 363 -612 612 -640 427 -640 480 -640 480 -640 480 -428 640 -640 360 -640 458 -640 400 -640 427 -304 500 -640 480 -500 375 -640 436 -640 425 -427 640 -640 480 -640 427 -640 463 -554 640 -500 344 -375 500 -500 500 -640 480 -500 375 -500 333 -640 433 -640 464 -426 640 -640 512 -480 640 -500 375 -640 554 -640 427 -640 469 -640 480 -640 512 -374 500 -480 640 -263 500 -640 427 -426 640 -609 640 -640 427 -640 360 -640 480 -640 480 -480 640 -640 512 -640 451 -640 480 -640 480 -426 640 -640 480 -640 457 -640 441 -612 612 -577 640 -640 480 -333 500 -640 427 -640 480 -640 425 -512 640 -640 512 -612 612 -640 360 -480 640 -640 480 -424 640 -640 480 -640 428 -640 427 -500 375 -423 640 -640 480 -640 480 -375 500 -640 501 -500 331 -640 425 -612 612 -640 640 -428 640 -500 375 -640 427 -640 441 -500 375 -640 480 -640 481 -425 640 -480 640 -640 425 -640 480 -640 480 -640 480 -480 640 -640 360 -640 480 -432 287 -640 427 -357 500 -640 427 -500 375 -457 640 -640 401 -640 426 -412 200 -427 640 -640 479 -612 612 -375 500 -478 640 -612 612 -640 423 -640 396 -500 333 -640 351 -500 333 -640 428 -500 375 -640 427 -640 434 -500 375 -640 428 -640 427 -346 500 -480 640 -608 640 -640 501 -640 480 -640 480 -640 480 -480 640 -640 392 -375 500 -640 427 -640 427 -480 640 -640 640 -460 640 -640 428 -500 455 -640 425 -640 427 -640 480 -640 480 -640 480 -640 465 -640 428 -500 375 -500 281 -640 427 -640 424 -612 612 -640 429 -500 416 -584 414 -480 640 -640 459 -640 426 -497 640 -425 640 -480 640 -640 427 -640 427 -640 360 -640 480 -426 640 -640 480 -640 427 -640 427 -480 640 -640 338 -640 480 -427 640 -640 424 -427 640 -480 640 -424 640 -480 640 -640 427 -640 480 -640 422 -640 458 -640 427 -640 480 -640 480 -612 612 -640 480 -640 428 -640 480 -640 364 -375 500 -640 640 -640 426 -480 640 -640 480 -640 481 -640 480 -640 480 -640 480 -640 534 -640 480 -640 426 -640 480 -640 480 -500 354 -640 425 -640 426 -427 640 -640 480 -640 480 -640 480 -640 480 -640 425 -478 640 -427 640 -640 573 -479 640 -640 480 -640 480 -640 360 -640 480 -640 441 -480 640 -500 333 -480 640 -480 640 -640 480 -640 427 -640 479 -640 399 -640 425 -640 493 -640 425 -480 640 -480 640 -400 533 -640 589 -640 480 -640 505 -640 426 -500 375 -640 426 -640 425 -375 500 -500 370 -385 289 -640 480 -640 427 -640 427 -640 480 -640 480 -640 480 -416 640 -500 375 -640 360 -640 480 -640 640 -480 640 -640 428 -640 457 -375 500 -640 480 -640 480 -612 612 -640 427 -640 480 -480 640 -640 481 -640 418 -640 415 -500 438 -640 431 -640 480 -640 428 -640 480 -640 480 -335 500 -640 480 -640 480 -640 427 -640 428 -640 478 -500 375 -640 480 -640 480 -640 416 -640 425 -640 427 -500 313 -640 464 -640 428 -640 480 -640 426 -640 486 -640 480 -640 480 -640 427 -276 500 -640 480 -457 640 -640 482 -640 428 -480 640 -500 374 -500 376 -500 332 -640 359 -393 500 -500 332 -458 640 -478 640 -640 478 -640 480 -640 399 -640 428 -436 640 -524 640 -640 480 -450 450 -640 427 -640 427 -640 426 -640 480 -640 480 -640 424 -428 640 -640 424 -450 600 -480 640 -640 320 -640 425 -350 500 -472 640 -640 640 -480 640 -640 514 -640 480 -640 603 -640 583 -568 320 -640 427 -500 400 -480 640 -640 427 -600 400 -612 612 -640 480 -640 480 -424 640 -640 389 -640 426 -480 640 -480 640 -640 480 -640 480 -640 406 -500 334 -640 480 -428 640 -640 438 -640 480 -550 640 -640 426 -500 332 -500 381 -640 424 -308 300 -640 472 -640 480 -375 500 -428 640 -640 427 -640 480 -612 612 -640 428 -427 640 -500 264 -480 640 -640 480 -640 427 -640 439 -500 335 -375 500 -381 500 -500 333 -640 425 -500 375 -640 480 -500 340 -640 480 -640 480 -640 480 -334 500 -640 472 -480 640 -640 425 -427 640 -640 426 -640 459 -640 480 -376 500 -500 375 -500 387 -411 640 -640 426 -427 640 -375 500 -480 640 -432 640 -640 480 -429 640 -500 375 -640 427 -566 640 -640 480 -640 480 -640 480 -500 333 -640 480 -640 480 -640 427 -640 473 -480 640 -640 427 -640 426 -640 640 -640 427 -640 640 -640 425 -640 478 -333 500 -640 480 -640 426 -640 621 -427 640 -640 429 -640 427 -466 640 -480 640 -640 425 -334 500 -427 640 -640 457 -427 640 -375 500 -640 423 -600 400 -640 427 -500 333 -375 500 -612 612 -427 640 -426 640 -640 480 -640 409 -640 480 -341 500 -640 426 -640 420 -383 640 -640 428 -640 480 -640 316 -640 427 -640 480 -640 480 -640 427 -480 640 -640 360 -500 353 -425 640 -640 480 -640 480 -640 427 -640 425 -375 500 -640 480 -640 427 -640 424 -500 332 -500 375 -480 640 -640 479 -640 480 -640 480 -500 375 -640 480 -500 283 -640 427 -500 375 -500 375 -640 360 -480 640 -640 353 -640 458 -433 640 -640 480 -640 480 -480 640 -640 424 -640 480 -378 640 -640 425 -640 414 -480 640 -640 480 -640 427 -612 612 -640 386 -640 360 -640 426 -375 500 -500 333 -500 400 -640 480 -480 640 -433 640 -144 190 -640 407 -640 427 -640 480 -640 480 -640 425 -640 480 -640 480 -640 426 -640 427 -500 333 -640 478 -640 425 -640 427 -500 375 -640 480 -427 640 -640 427 -640 538 -640 468 -500 375 -640 480 -500 375 -427 640 -500 375 -640 478 -426 640 -480 640 -640 425 -640 427 -480 640 -640 427 -640 426 -640 480 -511 640 -640 480 -640 480 -640 480 -640 480 -480 640 -640 427 -480 640 -640 426 -640 427 -640 426 -640 426 -500 375 -640 426 -500 375 -640 480 -640 425 -640 478 -640 427 -375 500 -500 375 -640 426 -385 289 -640 428 -640 427 -333 500 -640 426 -500 375 -334 500 -500 334 -500 375 -394 500 -640 427 -640 427 -640 480 -444 640 -640 480 -640 427 -640 480 -445 590 -640 425 -426 640 -552 640 -480 640 -640 413 -640 451 -640 427 -480 640 -428 640 -480 640 -640 429 -640 443 -640 640 -640 266 -427 640 -425 640 -640 427 -500 375 -500 333 -427 640 -480 640 -415 625 -500 375 -640 493 -640 461 -640 482 -640 434 -480 640 -640 400 -480 640 -500 375 -500 333 -454 342 -500 334 -640 428 -640 622 -640 480 -640 480 -427 640 -640 183 -640 420 -428 640 -640 426 -425 640 -640 427 -640 480 -640 427 -493 640 -640 480 -640 426 -640 480 -640 480 -612 612 -640 503 -640 427 -640 481 -640 480 -640 640 -480 640 -455 640 -640 480 -640 480 -500 375 -640 427 -480 640 -480 640 -640 428 -640 424 -640 426 -640 640 -427 640 -361 640 -427 640 -640 426 -640 427 -612 612 -427 640 -480 640 -375 500 -500 375 -640 427 -640 429 -640 427 -640 481 -640 480 -332 500 -640 421 -640 430 -640 481 -500 375 -640 458 -640 426 -480 640 -640 480 -640 427 -375 500 -640 428 -640 427 -480 640 -640 480 -640 426 -480 640 -640 480 -640 480 -640 468 -640 480 -426 640 -640 427 -636 640 -480 640 -427 640 -640 466 -640 489 -500 375 -500 337 -375 500 -640 426 -640 427 -494 640 -640 427 -640 480 -640 427 -375 500 -500 333 -640 427 -500 375 -640 426 -600 402 -640 480 -360 640 -640 427 -480 640 -640 480 -640 640 -640 426 -424 640 -640 480 -500 375 -640 480 -640 480 -640 480 -427 640 -640 458 -640 463 -480 640 -640 480 -640 480 -640 427 -640 480 -640 424 -427 640 -640 480 -612 612 -640 428 -500 375 -640 427 -426 640 -640 480 -333 500 -523 640 -427 640 -640 427 -511 640 -480 640 -612 612 -612 612 -480 640 -500 375 -480 640 -640 427 -640 427 -640 480 -526 640 -640 360 -333 500 -427 640 -640 628 -640 458 -640 428 -427 640 -500 305 -480 640 -375 500 -640 427 -640 480 -427 640 -640 480 -640 480 -355 500 -640 424 -640 487 -640 427 -375 500 -480 640 -500 375 -612 612 -500 375 -640 480 -640 427 -640 427 -640 429 -500 375 -640 378 -612 612 -426 640 -640 480 -632 640 -500 375 -418 640 -640 499 -640 478 -350 500 -640 427 -640 480 -640 480 -640 480 -640 425 -640 360 -640 480 -640 427 -640 427 -439 640 -473 600 -500 473 -640 408 -640 427 -640 480 -427 640 -640 427 -500 375 -640 640 -640 426 -640 427 -640 428 -500 333 -640 480 -640 427 -612 612 -427 640 -640 480 -640 480 -640 480 -640 425 -480 640 -640 410 -480 640 -640 427 -640 478 -640 427 -612 612 -640 427 -640 425 -640 470 -348 500 -599 640 -640 316 -427 640 -640 480 -640 480 -427 640 -442 640 -320 240 -640 425 -500 375 -427 640 -640 480 -500 500 -479 640 -500 333 -640 480 -426 640 -640 427 -640 640 -640 480 -640 427 -640 427 -640 429 -640 428 -375 500 -640 480 -640 426 -640 426 -640 425 -640 638 -640 429 -640 425 -480 640 -640 478 -640 360 -480 640 -480 640 -640 426 -500 333 -612 612 -480 640 -500 375 -640 427 -332 500 -500 375 -320 480 -640 423 -375 500 -640 425 -500 375 -640 480 -392 640 -640 569 -500 334 -640 425 -500 375 -480 640 -640 480 -640 427 -640 427 -640 480 -480 640 -640 306 -640 424 -500 348 -500 350 -500 332 -424 640 -640 425 -640 480 -428 640 -640 480 -500 286 -640 480 -640 480 -480 640 -640 401 -640 424 -640 427 -480 640 -386 500 -640 414 -640 414 -480 640 -640 489 -640 457 -480 640 -640 427 -640 526 -434 640 -478 640 -640 480 -640 279 -640 427 -425 640 -333 500 -640 360 -640 480 -457 640 -374 500 -500 375 -480 640 -640 435 -640 480 -316 500 -640 427 -333 500 -640 426 -474 640 -640 480 -640 478 -640 426 -640 424 -427 640 -640 480 -640 489 -416 500 -640 478 -640 480 -640 427 -640 427 -452 500 -400 400 -427 640 -336 254 -640 401 -333 500 -640 427 -640 366 -640 458 -480 640 -640 427 -500 375 -640 359 -500 375 -480 640 -480 640 -640 480 -640 424 -640 480 -640 429 -640 532 -640 478 -480 640 -640 426 -640 400 -640 359 -640 427 -640 512 -640 480 -640 427 -640 480 -640 481 -640 426 -640 432 -427 640 -500 375 -427 640 -640 480 -425 640 -480 640 -480 640 -640 430 -640 480 -640 480 -640 427 -600 450 -640 360 -640 480 -640 424 -640 425 -612 612 -640 482 -640 480 -640 429 -640 480 -640 480 -480 640 -640 480 -480 640 -640 427 -640 428 -640 480 -640 428 -640 545 -640 426 -480 640 -640 480 -410 500 -640 427 -640 597 -640 480 -640 427 -640 428 -612 612 -479 640 -640 482 -640 480 -500 375 -640 425 -640 480 -640 480 -640 480 -640 480 -612 612 -428 640 -500 375 -480 640 -640 428 -640 427 -500 375 -640 359 -640 426 -640 480 -640 478 -332 500 -640 480 -427 640 -640 480 -480 640 -640 427 -640 480 -640 480 -640 432 -500 333 -640 480 -480 640 -480 640 -526 640 -640 480 -640 480 -640 440 -500 334 -384 640 -640 354 -375 500 -480 640 -640 418 -640 480 -640 426 -640 427 -640 427 -640 424 -500 375 -480 640 -640 424 -500 398 -640 480 -640 427 -640 480 -640 480 -375 500 -424 640 -640 480 -640 478 -480 640 -427 640 -500 373 -425 640 -640 480 -640 427 -480 640 -484 640 -480 640 -640 426 -640 381 -480 640 -427 640 -640 512 -640 424 -426 640 -640 400 -640 480 -640 442 -640 480 -480 640 -500 375 -425 640 -640 457 -426 640 -640 432 -480 640 -640 480 -640 480 -427 640 -640 425 -375 500 -640 480 -427 640 -640 428 -612 612 -640 361 -640 466 -450 360 -640 624 -500 335 -428 640 -640 427 -480 640 -640 425 -640 427 -640 480 -500 375 -480 640 -640 298 -640 480 -500 449 -640 426 -336 448 -500 375 -640 480 -640 640 -427 640 -640 360 -640 427 -478 640 -640 427 -640 427 -640 476 -544 640 -640 480 -640 478 -426 640 -640 480 -640 426 -428 640 -480 640 -300 400 -640 603 -640 480 -428 640 -383 640 -480 640 -640 480 -640 418 -375 500 -640 439 -500 333 -640 427 -640 491 -640 482 -500 333 -640 428 -640 427 -427 640 -640 480 -639 640 -640 480 -640 473 -640 480 -640 480 -640 544 -640 456 -480 640 -640 384 -640 427 -500 281 -640 480 -640 312 -640 457 -640 427 -640 427 -500 348 -640 480 -427 640 -640 426 -640 425 -640 480 -640 480 -500 375 -480 640 -425 640 -640 588 -640 480 -640 434 -640 427 -367 500 -506 380 -375 500 -640 428 -640 424 -624 640 -425 640 -500 375 -639 640 -600 400 -500 375 -640 480 -400 600 -480 640 -500 375 -640 436 -640 480 -428 640 -640 452 -480 640 -640 428 -612 612 -640 512 -500 384 -375 500 -426 640 -479 640 -640 480 -640 411 -640 480 -640 427 -640 359 -640 478 -640 480 -337 500 -640 416 -427 640 -640 480 -640 480 -612 612 -612 612 -480 640 -375 500 -640 427 -640 480 -640 426 -425 640 -480 640 -640 480 -640 480 -640 427 -640 428 -640 427 -640 480 -480 640 -640 426 -640 501 -640 480 -480 640 -640 480 -549 640 -372 500 -640 480 -640 640 -426 640 -500 375 -640 482 -640 427 -640 426 -333 500 -426 640 -500 334 -640 439 -640 429 -640 480 -480 640 -640 426 -500 375 -333 500 -640 587 -500 375 -640 425 -640 426 -640 425 -640 427 -640 429 -500 375 -427 640 -640 480 -640 361 -427 640 -500 375 -640 480 -640 424 -452 640 -640 480 -640 480 -640 480 -640 480 -640 427 -500 375 -640 480 -433 640 -640 480 -640 480 -547 640 -640 428 -640 427 -640 428 -640 427 -640 545 -480 640 -640 640 -640 476 -640 480 -640 438 -500 424 -480 640 -428 640 -500 332 -457 640 -427 640 -500 375 -640 464 -513 640 -640 480 -640 427 -640 359 -640 426 -640 426 -640 428 -640 480 -640 480 -338 500 -457 640 -640 427 -500 375 -640 426 -500 375 -640 428 -640 480 -612 612 -640 425 -401 288 -640 425 -640 426 -640 425 -500 375 -640 512 -640 428 -513 640 -640 428 -474 640 -640 425 -322 214 -612 612 -640 480 -640 512 -640 480 -426 640 -640 513 -640 640 -640 480 -640 425 -427 640 -640 428 -640 480 -534 640 -640 480 -640 480 -400 640 -425 640 -640 428 -640 427 -640 480 -640 480 -640 428 -640 480 -427 640 -640 360 -640 427 -640 480 -640 480 -640 502 -640 588 -640 480 -640 480 -640 480 -640 427 -480 640 -375 500 -612 612 -640 480 -480 640 -427 640 -427 640 -500 332 -640 427 -500 375 -640 480 -640 427 -640 427 -480 640 -640 424 -640 480 -640 480 -640 480 -640 427 -640 529 -426 640 -640 329 -640 480 -640 480 -330 500 -640 429 -640 453 -640 383 -640 437 -640 457 -640 640 -500 375 -640 539 -640 427 -640 426 -640 425 -375 500 -640 427 -640 480 -500 300 -480 640 -500 335 -640 480 -640 427 -640 480 -640 427 -640 480 -640 480 -640 427 -638 394 -640 480 -640 427 -640 427 -479 640 -493 640 -480 640 -640 465 -500 375 -500 381 -640 478 -498 640 -473 640 -640 425 -640 480 -480 640 -640 428 -640 356 -640 426 -640 480 -640 425 -640 427 -480 640 -640 482 -480 640 -640 427 -640 480 -640 427 -640 426 -640 427 -427 640 -640 413 -640 480 -500 375 -640 424 -640 610 -371 640 -640 361 -500 375 -640 427 -640 480 -640 480 -640 426 -640 425 -500 312 -640 426 -427 640 -640 427 -640 480 -375 500 -640 480 -640 480 -640 427 -640 360 -640 480 -480 640 -640 427 -640 427 -640 427 -425 640 -640 427 -640 480 -640 427 -640 427 -333 500 -640 427 -375 500 -539 640 -640 478 -640 480 -640 427 -493 640 -640 427 -612 612 -334 500 -480 640 -640 558 -640 512 -640 480 -640 426 -640 480 -640 479 -480 640 -500 375 -640 480 -640 480 -640 478 -480 640 -612 612 -640 423 -500 334 -640 425 -640 478 -360 640 -513 640 -640 428 -640 425 -640 427 -427 640 -500 415 -640 427 -640 640 -640 427 -640 473 -500 375 -334 500 -640 480 -640 480 -640 428 -640 480 -640 499 -640 427 -640 450 -640 411 -640 481 -425 640 -427 640 -640 427 -480 640 -576 640 -640 480 -640 480 -500 375 -640 480 -640 429 -500 333 -640 480 -640 480 -480 640 -480 640 -640 424 -640 427 -640 413 -640 291 -500 375 -612 612 -640 425 -640 429 -640 480 -640 426 -640 640 -426 640 -640 480 -640 640 -640 480 -640 425 -640 428 -500 375 -640 480 -427 640 -640 426 -640 480 -640 427 -612 612 -640 427 -640 406 -640 479 -500 333 -640 480 -640 480 -375 500 -640 480 -640 360 -313 500 -480 640 -375 500 -640 480 -640 481 -640 428 -640 428 -480 640 -427 640 -640 360 -500 375 -640 359 -480 640 -361 640 -640 474 -640 427 -500 375 -640 426 -480 640 -640 396 -640 480 -640 480 -640 481 -480 640 -640 425 -640 480 -640 480 -443 640 -427 640 -640 480 -640 480 -640 426 -514 640 -426 640 -612 612 -500 333 -500 458 -640 423 -333 500 -640 458 -640 413 -640 486 -640 427 -500 333 -500 332 -612 612 -640 480 -425 640 -426 640 -640 480 -640 480 -640 513 -640 473 -640 480 -640 480 -640 428 -640 392 -333 500 -640 480 -640 480 -612 612 -640 401 -478 640 -640 427 -640 480 -640 427 -595 640 -500 352 -500 333 -640 426 -640 480 -640 480 -640 494 -640 480 -640 427 -640 480 -640 426 -480 640 -640 360 -640 428 -640 427 -450 600 -500 415 -640 480 -450 640 -640 480 -640 424 -351 640 -500 375 -640 427 -428 640 -640 415 -640 427 -612 612 -640 480 -640 426 -640 480 -640 480 -500 328 -640 480 -478 640 -640 487 -640 360 -480 640 -640 480 -640 424 -478 640 -480 640 -640 425 -427 640 -640 480 -640 480 -300 300 -640 480 -640 427 -427 640 -640 480 -640 426 -530 640 -640 480 -640 427 -640 425 -640 480 -640 427 -640 424 -640 478 -640 396 -480 640 -500 333 -640 480 -640 478 -640 484 -640 480 -640 427 -640 640 -640 428 -480 640 -500 331 -640 528 -426 640 -640 480 -640 478 -640 288 -640 428 -424 640 -256 200 -640 128 -640 425 -640 427 -500 500 -640 480 -333 500 -640 480 -640 480 -640 427 -640 480 -480 640 -640 544 -640 480 -640 339 -349 480 -426 640 -640 480 -336 450 -640 512 -500 400 -640 431 -640 480 -480 640 -640 457 -480 640 -640 428 -640 427 -640 451 -375 500 -640 480 -640 480 -640 425 -640 480 -640 428 -426 640 -427 640 -640 480 -640 480 -451 338 -500 332 -480 640 -500 375 -500 333 -333 500 -640 478 -427 640 -500 446 -640 425 -480 640 -640 427 -520 360 -427 640 -640 480 -356 500 -640 427 -640 427 -333 500 -500 375 -640 480 -640 609 -600 399 -640 485 -640 427 -500 492 -375 500 -640 480 -640 429 -375 500 -480 640 -427 640 -375 500 -640 427 -640 427 -640 480 -640 480 -640 480 -640 428 -640 427 -640 480 -640 426 -549 640 -480 640 -582 640 -640 529 -639 640 -640 428 -640 366 -640 480 -640 427 -640 640 -640 476 -640 480 -640 427 -500 333 -640 427 -640 426 -480 640 -640 427 -640 324 -640 427 -334 500 -640 480 -336 500 -494 367 -640 426 -640 425 -500 375 -634 640 -475 640 -640 480 -500 298 -640 480 -640 601 -640 480 -640 341 -640 485 -640 425 -432 640 -640 513 -640 428 -640 393 -640 425 -500 299 -640 426 -480 640 -480 640 -418 640 -640 480 -640 480 -480 640 -640 424 -640 360 -633 640 -480 640 -375 500 -426 640 -640 427 -480 640 -640 425 -426 640 -640 400 -640 361 -424 640 -640 480 -640 438 -640 480 -500 333 -640 399 -640 428 -319 640 -359 500 -640 360 -640 428 -480 640 -640 451 -640 480 -500 260 -640 480 -640 480 -640 427 -640 480 -640 427 -612 612 -375 500 -480 640 -640 480 -640 480 -480 640 -640 427 -427 640 -480 640 -640 426 -640 427 -640 420 -640 640 -375 500 -390 500 -640 377 -480 640 -640 480 -640 425 -375 500 -488 640 -640 427 -640 427 -500 407 -500 333 -640 426 -640 427 -480 640 -640 428 -640 378 -640 480 -427 640 -348 500 -428 640 -316 500 -640 512 -480 640 -640 480 -640 425 -640 480 -428 640 -500 384 -640 480 -640 360 -427 640 -640 426 -640 451 -640 360 -640 427 -482 640 -640 426 -479 640 -426 640 -640 480 -640 427 -640 361 -640 480 -500 375 -640 480 -500 375 -500 375 -640 426 -640 428 -480 640 -640 480 -425 640 -640 484 -640 453 -640 429 -426 640 -500 375 -480 640 -500 375 -640 312 -500 334 -640 427 -640 427 -640 427 -640 425 -640 616 -640 633 -640 569 -640 427 -640 426 -612 612 -500 375 -480 640 -640 425 -427 640 -640 425 -640 426 -640 427 -640 426 -512 640 -500 400 -480 640 -640 480 -640 457 -500 375 -640 427 -640 428 -640 400 -640 428 -375 500 -640 480 -640 426 -640 512 -640 480 -640 413 -640 480 -500 373 -467 640 -640 480 -640 426 -640 429 -480 640 -480 640 -640 427 -427 640 -463 640 -640 425 -640 383 -640 425 -640 480 -427 640 -640 427 -500 330 -500 333 -640 480 -480 640 -640 424 -640 428 -640 290 -640 480 -480 640 -640 480 -640 369 -640 480 -500 375 -640 480 -464 640 -428 640 -640 484 -640 480 -640 480 -640 427 -464 640 -612 612 -480 640 -640 427 -426 640 -480 640 -640 640 -640 480 -640 480 -640 311 -500 332 -640 454 -640 480 -480 640 -640 427 -480 360 -640 427 -500 375 -640 480 -375 500 -640 480 -640 366 -640 480 -640 558 -535 357 -640 480 -640 480 -427 640 -640 480 -426 640 -640 480 -612 612 -500 375 -480 640 -640 425 -640 480 -480 640 -640 480 -640 480 -427 640 -640 428 -640 174 -427 640 -640 457 -640 524 -640 480 -640 480 -640 480 -640 480 -640 640 -411 640 -640 427 -640 427 -427 640 -640 511 -640 480 -586 430 -480 640 -640 480 -640 480 -640 480 -640 361 -427 640 -640 480 -500 435 -612 612 -207 640 -425 640 -425 640 -640 427 -640 426 -480 640 -640 427 -480 640 -500 333 -640 436 -640 480 -640 427 -640 427 -640 480 -640 480 -640 480 -640 480 -612 612 -640 480 -640 427 -640 480 -452 640 -640 425 -640 475 -640 356 -500 375 -640 425 -427 640 -500 375 -640 427 -500 375 -640 427 -640 512 -640 423 -640 456 -480 640 -640 427 -500 335 -250 306 -416 640 -640 480 -640 515 -500 375 -500 333 -640 424 -427 640 -640 424 -500 375 -640 425 -466 640 -640 469 -640 480 -640 480 -640 480 -457 640 -480 640 -500 640 -427 640 -640 427 -640 480 -640 513 -480 640 -640 480 -640 427 -640 394 -640 360 -640 429 -500 375 -402 640 -640 427 -480 640 -640 427 -640 480 -640 360 -427 640 -500 375 -640 480 -500 375 -640 427 -500 375 -640 480 -640 478 -480 640 -478 640 -500 332 -640 439 -640 480 -640 480 -469 640 -333 500 -640 419 -640 194 -640 480 -640 480 -640 426 -612 612 -640 360 -640 428 -500 375 -640 425 -640 457 -640 480 -640 480 -640 425 -500 375 -600 416 -640 424 -500 375 -640 480 -640 480 -640 428 -640 480 -335 500 -640 640 -427 640 -640 428 -480 640 -500 331 -500 374 -375 500 -640 480 -640 426 -640 480 -640 366 -480 640 -640 427 -640 480 -640 480 -640 425 -640 424 -640 427 -640 428 -640 429 -640 492 -640 427 -640 480 -399 640 -640 480 -640 480 -640 480 -640 361 -640 427 -426 640 -640 425 -640 427 -640 640 -640 480 -640 427 -640 640 -640 426 -640 480 -640 480 -640 480 -500 410 -640 480 -640 427 -500 500 -383 640 -640 480 -640 480 -640 428 -360 439 -480 640 -500 480 -640 427 -422 640 -426 640 -500 375 -640 480 -596 640 -426 640 -640 480 -500 332 -612 612 -640 480 -640 480 -640 480 -640 278 -640 480 -640 426 -640 427 -640 427 -612 612 -311 308 -640 427 -640 429 -640 428 -640 480 -612 612 -500 335 -640 480 -640 427 -640 481 -500 333 -640 480 -640 480 -640 479 -640 480 -450 395 -640 480 -640 479 -640 427 -480 640 -640 480 -640 426 -426 640 -640 360 -427 640 -423 640 -640 480 -437 500 -640 481 -640 426 -640 480 -640 480 -640 427 -640 480 -640 480 -500 332 -640 480 -640 426 -640 480 -640 362 -640 479 -640 480 -640 426 -497 640 -640 427 -640 429 -640 427 -640 541 -480 640 -600 418 -640 480 -500 333 -640 480 -448 299 -640 427 -500 333 -640 480 -375 500 -375 500 -480 640 -640 480 -640 427 -640 480 -478 640 -640 426 -426 640 -427 640 -640 427 -640 427 -480 640 -640 280 -640 425 -375 500 -480 640 -640 447 -425 640 -640 426 -428 640 -640 480 -415 500 -640 640 -640 468 -427 640 -640 480 -640 464 -640 361 -640 480 -640 640 -612 612 -640 444 -640 427 -640 427 -640 427 -500 468 -640 442 -426 640 -640 388 -480 640 -640 480 -427 640 -640 444 -500 333 -427 640 -600 400 -640 427 -640 427 -640 435 -640 360 -640 426 -640 428 -480 640 -640 427 -640 428 -640 354 -640 186 -640 426 -640 430 -500 377 -480 640 -640 428 -640 480 -640 559 -427 640 -500 333 -640 427 -523 640 -640 426 -640 480 -640 480 -500 333 -500 375 -401 500 -375 500 -640 428 -480 640 -305 229 -480 640 -480 640 -640 426 -640 480 -640 409 -640 427 -640 425 -640 428 -375 500 -640 501 -500 375 -640 480 -500 375 -640 480 -640 480 -612 612 -640 425 -427 640 -424 640 -640 480 -640 480 -640 425 -427 640 -512 640 -640 428 -640 429 -640 427 -640 480 -640 427 -612 612 -640 480 -640 474 -612 612 -640 424 -405 640 -640 480 -612 612 -640 480 -640 480 -500 375 -640 616 -640 427 -480 640 -480 640 -500 333 -640 427 -500 375 -480 640 -640 480 -640 426 -640 424 -640 523 -640 427 -443 640 -640 427 -640 424 -640 421 -500 334 -640 640 -640 479 -427 640 -640 434 -401 640 -640 426 -640 428 -612 612 -491 640 -428 640 -480 640 -640 490 -640 480 -480 640 -640 427 -480 640 -500 375 -640 480 -640 481 -500 333 -640 480 -640 457 -419 640 -640 480 -640 427 -426 640 -640 427 -640 429 -500 375 -426 640 -640 401 -640 426 -480 640 -640 359 -374 500 -479 640 -500 333 -640 480 -640 504 -612 612 -640 457 -500 401 -640 429 -640 449 -500 298 -640 426 -500 375 -375 500 -640 412 -640 385 -640 406 -640 478 -640 427 -640 427 -500 375 -640 480 -640 440 -640 480 -640 530 -480 360 -480 640 -640 480 -640 480 -480 640 -640 429 -640 431 -640 481 -640 469 -640 479 -640 480 -481 640 -640 427 -640 480 -426 640 -640 480 -425 640 -480 640 -640 425 -500 375 -628 640 -640 565 -500 375 -330 500 -374 500 -500 333 -640 427 -500 333 -640 440 -640 426 -480 640 -612 612 -428 640 -480 640 -640 428 -575 640 -640 425 -640 427 -500 375 -500 366 -427 640 -500 281 -428 640 -398 640 -640 480 -640 427 -640 428 -640 428 -500 400 -500 373 -500 375 -640 426 -640 425 -640 424 -500 333 -640 418 -425 640 -640 427 -640 480 -640 583 -640 481 -640 349 -480 640 -640 428 -640 427 -640 480 -640 480 -640 640 -640 427 -640 427 -480 640 -640 480 -640 480 -640 463 -499 640 -640 426 -640 302 -427 640 -640 427 -640 480 -640 443 -500 333 -640 480 -511 640 -640 463 -426 640 -500 336 -640 480 -640 382 -640 480 -640 427 -640 513 -428 640 -479 640 -640 360 -640 425 -427 640 -640 427 -640 428 -480 640 -640 480 -640 502 -640 354 -500 375 -486 500 -500 333 -640 426 -480 640 -640 421 -640 427 -640 480 -640 480 -640 512 -640 427 -640 512 -500 333 -640 363 -640 427 -640 427 -402 640 -361 640 -427 640 -640 640 -500 375 -640 427 -500 333 -640 480 -640 594 -640 427 -456 640 -640 480 -640 434 -640 536 -640 427 -640 582 -640 549 -640 428 -640 516 -640 480 -640 480 -640 480 -640 480 -640 348 -640 480 -480 640 -640 425 -480 640 -480 640 -640 427 -640 425 -640 426 -640 427 -480 640 -640 427 -640 360 -427 640 -640 425 -640 480 -640 428 -640 480 -640 339 -427 640 -640 480 -640 480 -640 427 -640 423 -640 427 -640 426 -640 427 -640 428 -411 640 -640 420 -640 480 -488 640 -500 334 -431 640 -640 403 -640 428 -500 375 -500 375 -640 480 -327 500 -500 333 -480 640 -598 640 -500 375 -640 480 -500 375 -640 431 -640 480 -500 375 -640 480 -427 640 -640 480 -640 425 -480 640 -500 375 -640 480 -640 426 -640 480 -640 360 -640 480 -640 456 -500 375 -640 398 -471 640 -481 640 -640 359 -500 381 -640 524 -383 640 -640 427 -640 481 -640 480 -640 480 -428 640 -478 640 -500 329 -640 425 -375 500 -640 480 -640 426 -640 424 -500 455 -480 640 -612 612 -500 312 -640 480 -640 428 -640 480 -512 640 -640 434 -640 640 -478 640 -640 369 -640 480 -511 640 -500 332 -612 612 -640 281 -640 427 -427 640 -640 480 -640 428 -640 425 -640 480 -426 640 -640 640 -640 480 -425 640 -640 434 -640 514 -640 480 -480 640 -640 480 -640 484 -439 640 -640 431 -480 640 -371 500 -426 640 -640 334 -640 353 -427 640 -427 640 -427 640 -640 427 -480 640 -424 640 -426 640 -640 425 -640 480 -333 500 -426 640 -640 429 -640 640 -640 427 -500 375 -640 428 -640 480 -640 480 -427 640 -640 424 -552 640 -640 506 -640 424 -640 427 -640 480 -500 333 -500 375 -640 392 -640 570 -640 424 -640 427 -500 401 -640 427 -478 640 -640 425 -640 480 -640 480 -640 513 -640 480 -425 640 -640 640 -640 427 -640 480 -356 533 -500 375 -640 360 -427 640 -426 640 -640 427 -640 480 -640 480 -640 480 -640 480 -640 425 -640 480 -640 479 -640 425 -600 399 -640 366 -640 443 -500 375 -640 434 -640 428 -640 418 -640 480 -426 640 -513 640 -640 416 -640 428 -640 427 -500 375 -640 480 -519 640 -500 313 -640 480 -345 500 -640 334 -640 402 -640 427 -612 612 -480 640 -640 480 -640 413 -640 427 -640 426 -480 640 -640 426 -640 426 -427 640 -640 480 -612 612 -480 640 -500 375 -640 518 -640 480 -640 359 -500 375 -640 427 -500 375 -640 480 -640 480 -612 612 -640 429 -640 427 -640 427 -640 425 -640 426 -640 427 -640 428 -500 316 -640 480 -640 640 -640 436 -640 427 -480 640 -640 425 -640 480 -640 480 -479 640 -640 480 -640 427 -640 480 -427 640 -640 640 -640 359 -612 612 -640 480 -640 480 -640 480 -640 480 -425 640 -640 444 -640 480 -326 500 -457 640 -640 480 -579 640 -640 360 -640 435 -640 480 -362 500 -640 480 -428 640 -640 458 -375 500 -640 480 -480 640 -529 640 -375 500 -640 534 -640 480 -640 505 -640 428 -500 375 -640 426 -640 427 -500 375 -640 314 -640 480 -304 640 -640 480 -480 640 -468 405 -426 640 -519 640 -640 480 -640 480 -640 427 -640 480 -640 480 -640 426 -640 427 -500 375 -640 292 -640 480 -640 566 -427 640 -640 526 -640 480 -640 427 -427 640 -640 424 -640 427 -640 426 -640 480 -640 427 -640 426 -640 480 -428 640 -640 424 -640 425 -640 483 -429 640 -424 640 -640 426 -612 612 -640 480 -640 480 -640 430 -640 480 -512 640 -467 640 -640 426 -640 427 -500 241 -640 480 -640 480 -481 640 -427 640 -640 480 -640 326 -640 564 -640 640 -480 640 -640 286 -425 640 -480 640 -423 640 -640 424 -640 426 -640 428 -640 427 -640 426 -640 480 -480 640 -640 640 -375 500 -640 628 -640 426 -640 399 -640 428 -640 427 -612 612 -640 477 -640 425 -612 612 -640 480 -640 480 -640 427 -640 480 -640 480 -428 640 -480 640 -640 444 -640 501 -480 640 -500 333 -619 640 -640 427 -640 498 -640 480 -640 480 -426 640 -500 375 -640 426 -640 480 -640 640 -480 640 -640 426 -640 428 -468 640 -640 427 -640 480 -640 427 -375 500 -640 480 -640 427 -640 359 -640 427 -640 425 -640 426 -640 361 -640 480 -640 427 -389 640 -427 640 -640 393 -612 612 -480 640 -427 640 -640 428 -640 491 -428 640 -472 640 -640 427 -640 428 -508 640 -640 427 -433 640 -425 640 -588 640 -500 370 -640 427 -640 428 -640 480 -640 426 -640 448 -640 480 -640 499 -612 612 -640 427 -500 375 -578 640 -500 375 -640 426 -640 427 -640 480 -640 426 -640 640 -500 375 -640 480 -480 640 -480 640 -612 612 -640 427 -428 640 -640 427 -640 640 -480 640 -640 480 -640 480 -640 428 -640 480 -640 640 -640 480 -640 427 -640 640 -640 427 -640 481 -640 479 -320 240 -427 640 -640 427 -332 500 -500 500 -640 427 -640 480 -640 427 -640 480 -640 428 -640 376 -640 480 -333 500 -480 640 -640 428 -640 480 -640 480 -640 427 -480 640 -500 375 -640 480 -640 427 -426 640 -640 426 -640 640 -640 427 -640 494 -640 321 -640 425 -640 427 -500 375 -640 348 -640 238 -640 427 -640 453 -640 433 -640 427 -640 480 -640 480 -500 500 -640 480 -480 640 -640 480 -640 480 -480 640 -640 480 -640 480 -427 640 -640 360 -384 640 -480 640 -640 448 -500 375 -478 640 -375 500 -640 480 -640 480 -640 480 -640 424 -640 480 -640 480 -288 160 -640 468 -640 474 -427 640 -640 480 -640 480 -640 427 -640 468 -640 480 -640 427 -500 244 -640 427 -500 375 -640 222 -640 480 -640 480 -640 480 -640 427 -640 427 -640 480 -640 406 -480 640 -640 425 -640 480 -640 427 -640 429 -500 333 -640 427 -500 375 -640 391 -640 480 -640 480 -640 425 -640 427 -640 480 -480 640 -640 427 -640 480 -640 427 -640 427 -640 493 -640 428 -640 425 -640 480 -480 640 -426 640 -480 640 -480 640 -428 640 -425 640 -500 333 -500 375 -640 427 -640 427 -640 488 -640 480 -640 427 -514 640 -500 451 -640 480 -474 640 -640 425 -640 426 -640 425 -480 640 -640 498 -640 480 -640 480 -640 459 -640 480 -598 640 -640 480 -480 640 -429 640 -640 360 -500 500 -326 640 -640 427 -640 426 -640 427 -640 480 -640 428 -640 427 -640 425 -600 400 -640 619 -640 640 -426 640 -500 374 -640 480 -640 482 -480 640 -480 640 -640 428 -612 612 -640 480 -480 640 -480 640 -640 640 -640 427 -427 640 -640 480 -640 427 -640 480 -500 375 -640 569 -480 640 -640 461 -640 428 -480 640 -640 361 -640 429 -375 500 -640 427 -500 375 -640 384 -640 427 -640 428 -436 640 -600 450 -480 640 -427 640 -484 640 -640 480 -640 427 -427 640 -478 640 -480 640 -640 640 -640 480 -640 423 -500 333 -640 427 -480 640 -480 640 -640 453 -419 640 -426 640 -640 636 -640 480 -640 426 -640 427 -612 612 -640 478 -640 480 -640 427 -500 375 -640 480 -640 424 -427 640 -640 427 -640 486 -482 640 -512 640 -640 400 -427 640 -500 375 -347 500 -640 633 -640 426 -480 640 -500 336 -640 382 -640 484 -500 333 -640 425 -640 427 -640 427 -640 427 -640 427 -640 427 -640 427 -427 640 -640 512 -500 334 -640 427 -640 573 -425 640 -640 427 -480 640 -640 427 -640 480 -400 266 -640 480 -480 640 -640 427 -640 481 -640 480 -500 375 -640 640 -536 640 -640 480 -640 480 -640 480 -640 425 -640 480 -640 427 -270 360 -640 480 -640 480 -640 512 -394 401 -500 342 -320 240 -424 640 -500 333 -640 468 -383 640 -640 427 -425 640 -640 492 -640 425 -640 480 -640 416 -480 640 -640 427 -640 480 -640 453 -640 427 -640 427 -640 426 -640 489 -480 640 -426 640 -549 640 -640 427 -640 478 -640 427 -640 425 -480 640 -480 640 -640 428 -640 427 -640 440 -640 506 -500 375 -612 612 -640 426 -640 480 -640 352 -640 427 -480 640 -640 415 -640 480 -640 413 -640 504 -640 401 -500 375 -612 612 -500 375 -640 426 -427 640 -640 480 -640 359 -427 640 -640 480 -500 276 -500 375 -640 439 -640 427 -500 314 -480 640 -640 622 -640 423 -500 435 -640 432 -640 480 -640 640 -500 403 -375 500 -640 426 -500 375 -640 425 -640 425 -640 427 -640 640 -580 640 -640 313 -640 640 -612 612 -640 386 -640 427 -640 427 -640 480 -612 612 -640 427 -640 480 -640 424 -612 612 -640 517 -426 640 -640 433 -640 418 -640 441 -640 426 -640 425 -480 640 -640 360 -640 310 -640 425 -640 480 -640 425 -500 333 -640 427 -640 428 -480 640 -640 427 -640 428 -640 484 -481 640 -503 480 -640 159 -640 480 -425 640 -480 640 -640 427 -456 640 -640 354 -425 640 -552 640 -640 427 -640 552 -640 480 -640 427 -640 480 -640 426 -640 640 -640 427 -640 480 -640 480 -425 640 -640 480 -640 428 -640 480 -640 480 -640 640 -640 425 -640 415 -640 483 -640 361 -640 427 -640 427 -500 330 -640 425 -640 427 -640 426 -500 333 -640 480 -640 360 -640 427 -640 426 -640 426 -427 640 -425 640 -640 430 -640 480 -426 640 -640 427 -480 640 -612 612 -640 356 -375 500 -425 640 -640 480 -640 428 -640 360 -389 500 -500 375 -427 640 -640 427 -640 428 -640 423 -478 640 -640 427 -640 424 -640 427 -423 640 -334 500 -640 427 -640 427 -640 480 -640 480 -640 360 -640 519 -480 640 -640 390 -640 425 -500 325 -640 421 -478 640 -640 425 -500 375 -640 424 -640 422 -500 375 -640 640 -332 500 -640 426 -640 427 -640 308 -480 640 -457 640 -640 480 -612 612 -640 480 -640 434 -450 420 -640 480 -640 400 -640 428 -640 582 -640 427 -640 386 -500 400 -640 480 -640 427 -640 499 -640 480 -375 500 -640 425 -480 640 -480 640 -500 375 -640 390 -480 640 -640 425 -500 400 -425 640 -500 374 -640 480 -500 333 -640 469 -640 444 -640 428 -418 640 -640 431 -500 281 -640 426 -423 640 -413 640 -500 375 -425 640 -480 640 -640 427 -640 489 -500 325 -640 480 -500 340 -640 359 -640 427 -640 480 -480 640 -480 640 -640 427 -640 387 -480 640 -480 640 -400 280 -640 480 -640 480 -640 480 -331 500 -640 481 -640 454 -640 480 -640 480 -640 426 -640 480 -640 427 -640 360 -640 480 -640 480 -500 345 -640 427 -640 480 -428 640 -500 375 -640 427 -640 426 -640 426 -480 640 -612 612 -640 439 -640 427 -640 599 -640 428 -640 428 -500 375 -640 512 -427 640 -640 360 -640 427 -640 480 -500 375 -500 375 -500 291 -480 640 -480 640 -640 480 -500 375 -612 612 -443 640 -640 561 -640 427 -467 640 -427 640 -640 427 -640 426 -640 424 -480 640 -427 640 -375 500 -640 480 -640 427 -528 640 -640 360 -640 480 -640 427 -333 500 -640 478 -400 640 -500 375 -640 427 -640 481 -640 427 -480 640 -640 426 -640 480 -427 640 -640 480 -640 419 -640 427 -480 640 -640 428 -640 427 -640 534 -640 425 -640 480 -480 640 -640 480 -393 316 -640 445 -640 480 -480 640 -480 640 -427 640 -640 480 -640 417 -425 640 -640 427 -640 426 -500 281 -585 640 -640 480 -500 375 -640 480 -640 480 -640 427 -640 421 -640 427 -587 640 -640 452 -640 427 -640 480 -640 425 -640 640 -640 488 -480 640 -640 359 -640 503 -640 480 -500 332 -640 521 -427 640 -640 428 -640 480 -640 427 -640 480 -375 500 -640 367 -640 480 -640 480 -427 640 -640 480 -640 427 -640 512 -640 480 -500 333 -640 480 -640 427 -640 333 -640 424 -640 480 -640 427 -640 427 -640 480 -640 427 -640 425 -480 640 -500 375 -640 428 -640 427 -640 480 -612 612 -375 500 -500 375 -500 333 -500 375 -640 480 -640 427 -640 480 -500 375 -640 478 -640 426 -640 480 -500 400 -375 500 -640 428 -640 499 -640 360 -640 427 -640 480 -640 480 -640 427 -640 480 -640 485 -427 640 -375 500 -640 456 -640 464 -473 640 -640 359 -640 425 -612 612 -640 427 -444 640 -640 480 -640 428 -640 414 -500 375 -333 500 -500 333 -640 437 -612 612 -333 500 -640 548 -640 480 -640 512 -480 640 -640 428 -640 480 -375 500 -640 429 -333 500 -640 480 -640 438 -379 640 -640 427 -640 426 -479 640 -640 480 -500 375 -640 429 -500 375 -640 480 -640 426 -640 480 -640 480 -640 427 -640 467 -427 640 -640 426 -427 640 -640 434 -480 640 -612 612 -640 425 -640 427 -640 427 -442 640 -500 333 -480 640 -640 480 -640 431 -476 261 -640 427 -640 427 -480 640 -640 427 -480 640 -480 640 -640 640 -500 334 -640 425 -640 427 -427 640 -640 427 -480 640 -500 375 -640 427 -640 480 -478 640 -640 480 -640 466 -478 640 -512 640 -640 418 -640 478 -480 640 -640 427 -640 480 -640 480 -500 375 -500 375 -480 640 -640 480 -640 427 -480 640 -427 640 -375 500 -640 427 -640 480 -640 426 -480 640 -425 640 -640 428 -445 640 -640 427 -640 427 -427 640 -640 522 -500 334 -640 427 -640 360 -640 425 -480 640 -441 640 -640 480 -640 469 -640 427 -427 640 -612 612 -500 375 -400 600 -640 360 -426 640 -640 480 -640 480 -640 480 -640 356 -640 480 -640 480 -640 480 -640 426 -640 360 -640 426 -640 480 -640 480 -600 402 -640 480 -480 640 -385 289 -640 360 -640 480 -640 480 -640 480 -640 426 -640 480 -640 480 -640 426 -427 640 -640 479 -428 640 -480 640 -500 375 -640 406 -334 500 -640 413 -427 640 -375 500 -427 640 -480 640 -640 480 -636 640 -640 426 -500 375 -480 640 -480 640 -640 576 -640 640 -640 426 -612 612 -640 426 -640 429 -640 342 -428 640 -480 640 -480 640 -427 640 -640 480 -640 479 -640 427 -640 425 -500 400 -427 640 -500 375 -640 480 -640 427 -480 640 -640 478 -640 480 -480 640 -427 640 -640 428 -500 375 -640 396 -375 500 -300 500 -640 429 -428 640 -640 426 -480 640 -640 480 -480 640 -640 429 -640 389 -640 427 -640 428 -640 480 -480 640 -480 640 -426 640 -640 480 -640 480 -640 443 -640 480 -480 640 -640 494 -640 425 -427 640 -442 640 -640 424 -640 450 -640 286 -426 640 -480 640 -640 480 -640 480 -640 480 -640 480 -427 640 -640 480 -640 484 -500 375 -500 485 -640 427 -640 480 -640 427 -543 640 -640 427 -640 480 -640 480 -640 427 -500 376 -640 425 -640 480 -640 273 -480 640 -640 427 -640 426 -428 640 -640 360 -640 425 -640 480 -640 429 -500 368 -640 482 -640 480 -427 640 -640 427 -640 480 -640 427 -640 480 -640 479 -640 640 -640 428 -500 375 -640 427 -640 428 -500 333 -480 640 -396 297 -640 479 -640 425 -598 640 -640 582 -640 553 -640 480 -480 640 -640 480 -500 332 -640 425 -640 480 -427 640 -640 480 -500 335 -640 427 -640 480 -427 640 -640 480 -600 400 -427 640 -640 480 -640 426 -640 426 -640 427 -480 640 -480 640 -589 640 -640 480 -640 428 -640 424 -640 427 -428 640 -640 480 -640 454 -424 640 -640 427 -640 425 -640 480 -640 427 -640 427 -480 640 -612 612 -333 500 -640 480 -640 480 -572 640 -640 439 -640 427 -427 640 -640 426 -426 640 -640 480 -640 427 -640 480 -457 640 -640 419 -640 418 -480 640 -425 640 -480 640 -480 640 -500 332 -640 424 -640 396 -640 427 -640 640 -640 480 -640 406 -500 375 -640 512 -640 424 -640 480 -640 480 -640 374 -640 354 -640 427 -640 428 -500 375 -640 480 -480 640 -640 480 -640 480 -500 281 -640 539 -640 625 -426 640 -359 640 -640 427 -640 478 -428 640 -500 333 -375 500 -480 640 -640 426 -500 375 -640 458 -640 457 -640 427 -612 612 -500 375 -640 480 -640 478 -640 480 -640 400 -640 480 -375 500 -640 480 -426 640 -640 640 -612 612 -640 480 -640 424 -480 640 -640 480 -640 427 -640 427 -640 359 -640 427 -640 480 -640 480 -640 424 -640 427 -500 375 -612 612 -640 427 -427 640 -335 500 -640 480 -640 480 -640 427 -428 640 -640 427 -375 500 -500 375 -640 393 -640 546 -640 384 -640 480 -500 375 -333 500 -480 640 -640 428 -640 326 -640 360 -533 640 -640 427 -640 427 -640 422 -640 480 -427 640 -640 478 -640 360 -640 480 -600 398 -480 640 -640 480 -426 640 -640 427 -640 411 -480 640 -640 427 -461 640 -640 427 -480 640 -478 640 -640 480 -640 427 -640 428 -438 500 -426 640 -480 640 -480 640 -500 373 -500 375 -640 508 -640 480 -500 434 -640 480 -640 427 -640 480 -640 427 -426 640 -421 640 -640 383 -427 640 -640 480 -640 428 -500 334 -375 500 -640 480 -640 541 -640 424 -640 478 -426 640 -426 640 -480 640 -640 427 -640 480 -640 422 -640 360 -478 640 -640 476 -504 337 -528 400 -612 612 -500 333 -640 480 -640 480 -427 640 -480 640 -640 427 -480 640 -375 500 -612 612 -640 427 -474 640 -375 500 -640 381 -426 640 -500 375 -640 429 -375 500 -480 640 -640 480 -640 480 -640 480 -640 426 -335 500 -640 480 -640 427 -640 480 -612 612 -640 427 -640 512 -612 612 -640 480 -640 426 -640 427 -640 427 -640 480 -640 427 -425 640 -500 400 -640 636 -640 427 -640 427 -480 640 -640 427 -375 500 -640 413 -640 427 -640 427 -640 426 -640 480 -429 640 -640 480 -640 427 -480 640 -640 480 -640 427 -480 640 -640 427 -500 333 -495 640 -500 406 -640 427 -640 480 -640 480 -480 640 -640 303 -375 500 -612 612 -500 334 -640 528 -640 427 -640 480 -435 640 -640 289 -640 480 -640 480 -427 640 -640 496 -640 427 -612 612 -640 398 -448 640 -640 426 -640 426 -480 640 -640 427 -640 457 -640 427 -640 480 -640 427 -500 375 -333 500 -640 480 -640 295 -640 480 -640 480 -640 427 -500 334 -527 640 -640 558 -640 433 -332 500 -640 425 -500 333 -640 427 -480 640 -500 375 -640 429 -640 480 -640 480 -640 427 -640 480 -500 333 -640 426 -612 612 -500 375 -400 300 -640 428 -612 612 -640 480 -640 480 -640 480 -640 450 -640 427 -640 364 -640 433 -640 427 -640 427 -400 500 -640 428 -640 480 -640 480 -640 480 -640 640 -333 500 -426 640 -420 640 -640 480 -640 427 -640 480 -500 375 -640 478 -640 434 -480 640 -329 500 -640 480 -640 424 -640 426 -612 612 -640 480 -640 480 -640 427 -640 480 -427 640 -640 480 -640 480 -500 385 -427 640 -640 478 -640 376 -640 427 -478 640 -625 505 -640 388 -480 640 -640 433 -640 480 -640 426 -640 427 -640 480 -640 480 -500 295 -640 329 -332 291 -500 375 -640 480 -640 458 -640 426 -424 640 -640 427 -500 375 -500 376 -640 480 -640 246 -480 640 -640 427 -640 427 -640 480 -500 336 -359 640 -428 640 -640 426 -512 640 -640 480 -640 480 -640 450 -480 640 -480 640 -500 375 -640 427 -481 640 -375 500 -333 500 -640 428 -467 640 -500 434 -640 480 -480 640 -640 360 -640 414 -480 640 -480 640 -500 375 -640 427 -480 640 -640 426 -640 468 -500 375 -640 425 -640 426 -640 494 -640 427 -640 480 -640 427 -640 425 -478 640 -478 640 -640 488 -640 480 -640 426 -426 640 -640 427 -640 346 -640 480 -640 408 -640 426 -415 640 -640 480 -640 407 -640 480 -640 427 -640 427 -500 375 -640 480 -640 427 -640 419 -480 640 -640 499 -480 640 -425 640 -612 612 -640 639 -640 427 -640 495 -640 480 -480 640 -640 427 -640 480 -640 425 -427 640 -640 506 -640 480 -640 480 -640 448 -640 399 -640 480 -640 301 -640 481 -500 375 -640 514 -640 374 -640 359 -436 640 -640 427 -640 426 -640 441 -500 400 -428 640 -640 427 -640 480 -640 457 -640 428 -640 480 -640 480 -500 375 -640 427 -612 612 -500 333 -428 640 -640 480 -640 426 -640 427 -640 427 -640 426 -480 640 -640 478 -640 480 -640 480 -600 449 -640 480 -640 431 -640 480 -640 427 -480 640 -640 425 -480 640 -640 480 -426 640 -640 480 -640 480 -640 480 -640 418 -640 426 -640 535 -640 438 -426 640 -640 480 -640 498 -427 640 -640 440 -640 533 -426 640 -640 427 -612 612 -320 240 -640 513 -640 428 -640 480 -480 640 -480 640 -640 299 -500 334 -640 438 -500 375 -341 500 -640 372 -426 640 -640 512 -500 390 -640 480 -512 640 -640 640 -640 360 -375 500 -480 640 -480 640 -640 480 -640 480 -375 500 -607 640 -500 375 -640 445 -640 464 -480 640 -500 343 -640 480 -640 427 -640 427 -640 480 -640 480 -640 480 -640 480 -640 360 -427 640 -425 640 -500 333 -640 480 -640 428 -640 480 -524 640 -640 458 -500 375 -500 375 -561 640 -640 483 -640 457 -640 578 -478 640 -640 425 -640 480 -500 370 -500 375 -333 500 -640 429 -640 427 -500 333 -640 426 -500 375 -640 480 -640 480 -640 427 -480 640 -640 482 -640 480 -480 640 -480 640 -640 480 -640 480 -512 384 -640 426 -375 500 -640 417 -480 640 -640 426 -640 480 -375 500 -640 518 -640 427 -640 427 -640 480 -426 640 -640 427 -640 427 -640 496 -640 370 -640 359 -640 432 -640 480 -612 612 -426 640 -640 359 -383 640 -640 426 -640 426 -478 640 -640 480 -500 374 -427 640 -500 283 -612 612 -640 399 -640 480 -640 480 -640 427 -640 428 -500 375 -640 480 -483 640 -640 480 -385 308 -500 375 -480 640 -640 426 -640 426 -612 612 -332 500 -640 480 -640 426 -640 427 -640 426 -640 480 -640 478 -556 640 -500 375 -478 640 -640 428 -640 480 -425 640 -640 478 -640 480 -640 434 -640 427 -500 480 -640 427 -425 640 -640 429 -640 370 -512 640 -640 480 -640 426 -640 427 -640 427 -640 480 -640 480 -429 640 -640 480 -640 448 -640 480 -640 427 -426 640 -640 480 -640 426 -640 480 -640 426 -458 640 -500 375 -500 376 -640 480 -612 612 -480 640 -424 640 -640 480 -640 639 -640 427 -640 480 -500 333 -500 375 -640 503 -315 500 -333 500 -400 272 -640 480 -640 480 -500 333 -640 478 -640 591 -500 294 -640 426 -640 427 -640 425 -640 457 -480 640 -480 640 -640 427 -640 480 -480 640 -640 428 -640 432 -640 343 -428 640 -640 480 -640 429 -640 360 -640 480 -332 500 -640 480 -640 426 -640 640 -640 425 -640 427 -500 333 -500 375 -640 480 -640 480 -427 640 -640 480 -640 427 -480 640 -375 500 -640 426 -640 398 -640 427 -640 427 -640 427 -640 427 -453 640 -427 640 -640 480 -640 524 -640 427 -640 479 -640 480 -375 500 -640 480 -640 458 -640 522 -640 427 -500 375 -500 333 -500 375 -640 426 -640 480 -640 480 -640 426 -436 640 -500 375 -375 500 -500 375 -640 480 -640 480 -640 480 -500 321 -500 375 -640 426 -640 480 -640 427 -640 480 -426 640 -640 360 -413 640 -640 382 -640 425 -640 480 -640 480 -427 640 -640 383 -640 480 -478 640 -640 480 -427 640 -428 640 -500 333 -640 480 -612 612 -339 500 -640 427 -640 376 -640 360 -640 428 -480 640 -640 426 -640 480 -500 500 -269 480 -629 640 -640 480 -640 480 -612 612 -640 491 -640 480 -640 601 -640 480 -426 640 -640 480 -640 397 -640 426 -424 640 -480 640 -640 526 -640 386 -480 640 -375 500 -640 469 -640 601 -615 310 -640 480 -640 448 -547 640 -480 640 -480 640 -518 640 -640 427 -427 640 -433 640 -640 439 -640 480 -480 640 -612 612 -640 281 -640 480 -640 427 -640 480 -640 427 -640 428 -437 640 -640 428 -640 480 -640 480 -640 424 -500 336 -425 640 -500 308 -640 360 -640 424 -640 425 -446 640 -640 252 -640 483 -640 480 -640 627 -640 428 -500 480 -640 453 -612 612 -640 428 -375 500 -640 480 -640 480 -640 417 -640 378 -640 425 -640 480 -480 640 -640 481 -640 504 -595 640 -640 480 -640 597 -500 375 -640 427 -479 640 -640 512 -640 426 -500 416 -500 375 -640 400 -500 375 -472 640 -500 375 -500 375 -640 480 -480 640 -640 561 -427 640 -640 426 -640 480 -640 427 -480 640 -640 428 -640 480 -640 426 -640 562 -640 428 -500 334 -640 426 -640 427 -640 480 -640 425 -640 491 -500 375 -640 426 -396 640 -480 640 -640 426 -480 640 -640 480 -640 480 -427 640 -640 427 -500 337 -427 640 -457 640 -375 500 -612 612 -480 640 -640 480 -500 375 -612 612 -640 480 -640 427 -640 423 -612 612 -480 640 -378 500 -480 640 -500 238 -640 447 -640 480 -640 427 -640 480 -480 640 -640 480 -640 480 -640 368 -640 424 -640 427 -640 359 -500 375 -640 480 -640 362 -500 398 -640 514 -640 480 -640 480 -500 375 -480 640 -480 640 -478 640 -640 427 -640 427 -480 360 -380 500 -424 640 -640 426 -640 480 -640 320 -640 480 -640 428 -640 426 -335 500 -640 427 -375 500 -640 425 -640 478 -640 427 -426 640 -640 480 -427 640 -543 640 -483 640 -640 480 -640 480 -480 640 -500 375 -640 428 -424 640 -640 480 -427 640 -640 426 -640 434 -427 640 -500 334 -480 640 -640 480 -480 640 -426 640 -640 480 -640 425 -640 427 -640 480 -640 480 -500 272 -640 480 -640 480 -640 480 -428 640 -500 375 -424 640 -375 500 -640 360 -612 612 -640 427 -640 432 -425 640 -640 359 -426 640 -640 427 -640 430 -480 640 -640 427 -640 426 -339 500 -640 479 -640 427 -500 326 -500 333 -464 640 -463 640 -640 426 -640 480 -500 375 -640 427 -640 427 -640 427 -480 640 -640 423 -640 483 -640 479 -640 320 -640 608 -640 427 -640 425 -378 500 -426 640 -640 480 -640 480 -432 640 -640 480 -478 640 -640 415 -640 530 -640 372 -640 424 -640 360 -640 480 -480 640 -640 426 -395 640 -640 359 -640 427 -500 333 -640 480 -480 640 -640 360 -640 480 -500 334 -425 640 -640 480 -640 427 -640 480 -640 425 -500 374 -480 640 -640 429 -640 480 -640 426 -357 640 -496 640 -640 426 -640 425 -640 425 -640 480 -427 640 -640 427 -640 438 -480 640 -640 377 -640 480 -640 428 -640 480 -612 612 -640 527 -640 427 -375 500 -640 424 -640 480 -640 457 -500 334 -640 425 -525 640 -640 428 -333 500 -480 640 -640 419 -480 640 -640 426 -640 480 -640 426 -640 468 -640 480 -480 640 -640 425 -512 640 -640 427 -427 640 -500 375 -515 640 -480 640 -428 640 -331 500 -500 332 -480 640 -640 480 -640 427 -640 427 -640 480 -500 335 -640 480 -640 425 -640 360 -640 480 -625 640 -480 640 -480 640 -478 640 -640 426 -428 640 -640 480 -640 480 -640 396 -500 376 -506 640 -640 514 -500 333 -640 480 -480 640 -612 612 -480 640 -640 480 -425 640 -548 640 -640 427 -640 480 -640 480 -640 427 -640 429 -640 426 -640 427 -640 427 -640 480 -480 640 -640 427 -640 512 -640 480 -640 480 -324 328 -640 361 -640 480 -640 427 -640 428 -640 426 -640 480 -640 359 -640 480 -500 334 -480 640 -640 427 -640 480 -640 480 -640 427 -640 400 -640 561 -640 480 -640 360 -640 425 -640 480 -428 640 -480 640 -460 640 -480 640 -640 428 -334 500 -425 640 -640 428 -640 529 -640 427 -640 606 -305 229 -640 480 -640 361 -333 500 -640 480 -640 490 -640 424 -640 433 -640 425 -427 640 -640 428 -640 424 -558 558 -640 427 -640 480 -640 426 -640 480 -640 563 -375 500 -640 480 -335 500 -640 360 -640 424 -375 500 -573 640 -640 480 -640 480 -640 425 -425 640 -640 360 -640 480 -640 425 -640 480 -480 640 -640 360 -640 480 -640 426 -640 480 -640 427 -640 425 -640 424 -640 480 -426 640 -640 427 -375 500 -500 360 -500 375 -640 427 -500 257 -640 424 -356 500 -640 494 -426 640 -640 480 -412 640 -640 480 -433 640 -640 480 -427 640 -375 500 -500 369 -612 612 -640 480 -427 640 -396 640 -612 612 -640 480 -500 332 -480 640 -640 480 -640 428 -640 426 -640 397 -640 534 -500 375 -640 427 -640 480 -640 480 -480 640 -640 427 -427 640 -640 480 -640 480 -640 480 -640 359 -640 337 -480 640 -308 500 -375 500 -640 578 -640 480 -640 427 -360 640 -480 640 -640 480 -612 612 -640 443 -612 612 -640 480 -640 427 -500 500 -640 391 -478 640 -639 640 -332 500 -332 500 -428 640 -425 640 -640 480 -480 640 -640 480 -500 375 -640 480 -427 640 -640 480 -640 427 -640 428 -640 480 -640 381 -640 427 -612 612 -640 426 -640 427 -640 480 -640 427 -612 612 -248 500 -500 208 -640 544 -640 427 -640 427 -500 358 -640 428 -640 480 -640 427 -640 480 -640 360 -640 425 -500 375 -480 640 -640 427 -640 376 -640 480 -640 424 -640 360 -500 375 -640 427 -640 471 -640 360 -640 475 -640 428 -415 640 -640 334 -640 426 -640 427 -300 400 -640 480 -640 480 -612 612 -640 426 -640 425 -480 640 -640 452 -500 375 -640 476 -600 455 -640 480 -640 640 -640 480 -500 335 -479 640 -640 427 -500 375 -640 426 -428 640 -480 640 -640 480 -640 480 -640 427 -640 424 -640 428 -623 640 -640 425 -640 438 -640 480 -640 427 -640 425 -640 480 -640 640 -640 480 -640 480 -640 329 -591 640 -640 480 -427 640 -612 612 -399 600 -640 364 -640 489 -640 480 -375 500 -640 426 -426 640 -429 640 -427 640 -640 427 -640 427 -640 614 -640 427 -640 312 -640 427 -640 427 -504 640 -427 640 -427 640 -640 589 -426 640 -640 606 -640 427 -427 640 -640 640 -640 480 -640 427 -500 333 -464 640 -640 426 -427 640 -640 480 -640 480 -612 612 -640 480 -500 366 -640 480 -640 425 -640 640 -640 484 -500 375 -640 359 -351 500 -640 480 -640 320 -640 427 -640 473 -640 480 -640 427 -640 411 -500 331 -640 480 -480 640 -640 480 -612 612 -640 427 -640 470 -500 375 -512 640 -640 640 -640 480 -640 480 -640 427 -640 480 -500 375 -640 480 -480 640 -640 425 -640 425 -640 427 -640 464 -500 500 -640 427 -640 480 -640 423 -500 333 -640 311 -640 449 -640 427 -472 500 -640 640 -433 640 -640 383 -640 480 -640 427 -640 425 -427 640 -640 480 -640 480 -640 480 -640 480 -480 640 -640 504 -640 425 -640 478 -640 429 -640 426 -640 480 -426 640 -425 640 -500 375 -640 427 -500 375 -478 640 -500 375 -640 480 -480 640 -640 480 -640 429 -612 612 -428 640 -640 154 -640 427 -375 500 -640 480 -640 480 -640 480 -640 480 -640 427 -640 360 -640 395 -640 480 -640 640 -480 640 -640 480 -640 428 -640 480 -480 640 -640 480 -427 640 -500 478 -640 427 -612 612 -428 640 -640 480 -640 480 -640 456 -640 359 -640 450 -263 640 -640 427 -640 409 -640 480 -640 394 -640 480 -640 524 -640 511 -425 640 -640 427 -640 427 -640 426 -640 425 -427 640 -600 625 -640 427 -640 480 -600 400 -640 428 -640 426 -640 359 -500 335 -426 640 -500 336 -375 500 -640 480 -455 640 -321 500 -500 375 -353 640 -426 640 -450 216 -612 612 -454 640 -480 640 -427 640 -500 375 -500 375 -482 640 -640 480 -640 480 -612 612 -428 640 -640 480 -640 426 -640 480 -428 640 -640 480 -607 640 -640 428 -428 640 -640 480 -640 293 -640 433 -426 640 -640 428 -640 480 -640 411 -640 381 -480 640 -335 500 -450 302 -640 425 -640 480 -480 640 -457 640 -427 640 -480 640 -480 640 -500 375 -640 478 -640 427 -640 480 -640 427 -640 424 -640 360 -640 427 -640 480 -640 419 -640 480 -640 480 -640 494 -640 426 -640 423 -444 640 -640 480 -640 480 -640 480 -640 427 -500 375 -640 459 -640 428 -640 426 -640 481 -480 640 -640 425 -375 500 -515 640 -640 480 -640 480 -427 640 -640 413 -640 480 -640 480 -500 333 -427 640 -640 427 -640 428 -640 465 -480 640 -640 480 -640 428 -640 428 -640 214 -359 640 -640 478 -640 480 -640 320 -336 248 -500 400 -640 427 -640 529 -480 640 -640 427 -480 640 -640 427 -500 334 -481 640 -500 334 -480 640 -640 458 -427 640 -640 424 -640 426 -500 333 -640 523 -640 428 -640 487 -612 612 -500 375 -640 480 -640 517 -333 500 -348 500 -640 448 -640 428 -500 375 -500 375 -500 375 -640 426 -640 480 -640 480 -640 427 -640 414 -640 441 -640 480 -640 530 -640 640 -483 640 -640 480 -640 480 -427 640 -640 424 -640 428 -640 429 -375 500 -640 427 -640 480 -640 480 -640 512 -640 427 -479 640 -640 428 -640 408 -612 612 -640 480 -640 480 -375 500 -640 425 -640 427 -640 480 -480 640 -640 480 -480 640 -427 640 -640 480 -640 432 -640 427 -480 640 -640 480 -480 640 -640 480 -640 480 -640 480 -640 480 -640 480 -640 427 -449 640 -512 640 -427 640 -640 427 -500 375 -640 427 -640 519 -448 640 -640 427 -512 640 -640 391 -640 480 -640 480 -640 428 -424 640 -428 640 -640 427 -640 427 -640 425 -640 428 -447 640 -500 333 -500 334 -480 640 -640 446 -478 640 -640 480 -640 480 -640 425 -640 454 -640 426 -360 640 -500 334 -500 375 -640 427 -640 433 -480 640 -480 640 -640 426 -640 427 -640 359 -640 480 -640 480 -640 640 -500 375 -640 640 -480 640 -640 474 -640 480 -640 480 -640 427 -640 428 -500 375 -480 640 -640 480 -640 398 -427 640 -480 640 -500 375 -514 640 -500 375 -640 480 -640 427 -640 480 -500 375 -640 480 -640 480 -640 427 -480 640 -640 480 -640 425 -640 427 -640 480 -640 480 -640 424 -640 427 -640 438 -640 480 -640 427 -640 428 -424 640 -640 531 -480 640 -640 427 -500 333 -640 425 -640 425 -428 640 -480 640 -640 429 -640 480 -640 480 -375 500 -428 640 -500 375 -640 424 -640 480 -640 428 -425 640 -480 640 -640 425 -426 640 -640 480 -635 640 -500 332 -640 480 -640 480 -640 566 -640 480 -640 419 -426 640 -500 375 -425 640 -640 428 -334 500 -640 546 -519 640 -640 480 -500 375 -640 427 -612 612 -640 479 -614 640 -480 640 -480 640 -640 427 -640 480 -500 375 -640 480 -640 360 -640 480 -213 320 -500 406 -500 445 -480 640 -640 468 -640 427 -427 640 -640 427 -640 480 -500 486 -480 360 -640 428 -640 480 -480 640 -403 640 -640 480 -640 316 -425 640 -480 640 -640 429 -640 426 -640 427 -640 426 -500 375 -427 640 -612 612 -640 480 -640 480 -640 427 -640 418 -428 640 -500 324 -523 640 -640 426 -640 427 -640 427 -480 640 -640 427 -640 426 -500 500 -640 480 -640 427 -640 437 -480 640 -359 640 -640 428 -640 480 -640 424 -500 335 -500 375 -640 424 -427 640 -640 480 -405 640 -640 640 -427 640 -640 480 -333 500 -640 444 -640 426 -640 480 -500 375 -640 344 -640 394 -500 393 -375 500 -500 281 -477 558 -640 480 -640 428 -640 360 -426 640 -640 428 -640 480 -427 640 -640 480 -640 508 -640 427 -640 480 -640 480 -640 480 -640 427 -612 612 -640 428 -332 500 -640 427 -640 480 -428 640 -612 612 -640 425 -640 482 -640 419 -500 375 -640 486 -640 428 -640 428 -640 480 -500 333 -640 478 -360 640 -640 480 -640 428 -500 396 -640 424 -375 500 -640 480 -640 480 -612 612 -640 480 -640 428 -640 427 -640 447 -640 480 -640 640 -500 375 -640 480 -612 612 -640 427 -359 640 -640 424 -500 375 -640 480 -640 427 -640 479 -640 480 -640 428 -368 500 -640 640 -640 451 -544 640 -640 480 -640 439 -640 426 -640 425 -583 640 -640 429 -640 427 -640 480 -640 512 -640 480 -640 480 -640 427 -457 640 -640 429 -500 334 -640 480 -428 640 -428 640 -640 480 -480 640 -500 375 -427 640 -640 427 -406 640 -478 640 -640 480 -640 383 -612 612 -500 333 -640 427 -500 371 -612 612 -640 427 -375 500 -612 612 -468 640 -640 480 -426 640 -640 478 -640 480 -640 478 -640 480 -640 480 -640 411 -500 375 -640 427 -480 640 -640 449 -640 480 -640 480 -488 640 -640 480 -640 427 -480 640 -640 480 -480 640 -424 640 -577 640 -640 382 -480 640 -640 360 -640 480 -333 500 -333 500 -640 370 -640 480 -640 416 -640 480 -350 263 -640 480 -640 480 -640 427 -500 375 -640 516 -640 424 -426 640 -640 363 -480 640 -640 427 -640 426 -640 480 -640 425 -640 427 -640 546 -640 427 -640 427 -640 426 -375 500 -478 640 -640 480 -640 480 -480 640 -640 480 -640 480 -640 480 -640 427 -640 480 -640 480 -640 427 -500 356 -640 428 -640 428 -640 480 -640 427 -287 640 -640 480 -640 427 -640 427 -640 427 -640 427 -640 480 -375 500 -480 640 -480 640 -500 333 -500 240 -640 427 -640 428 -640 480 -500 350 -640 427 -640 480 -427 640 -361 500 -640 480 -426 640 -640 480 -375 500 -640 480 -640 480 -320 240 -640 480 -640 393 -480 640 -640 447 -500 454 -640 480 -640 428 -487 640 -640 480 -375 500 -640 480 -640 429 -640 480 -480 640 -176 144 -480 640 -640 480 -640 496 -474 640 -427 640 -612 612 -427 640 -640 480 -640 396 -640 480 -393 600 -612 612 -640 426 -640 480 -640 428 -640 480 -640 293 -640 287 -640 426 -500 375 -640 427 -480 640 -640 428 -640 427 -480 640 -640 480 -640 427 -333 500 -640 427 -640 480 -640 480 -500 336 -640 480 -640 427 -428 640 -480 640 -640 478 -640 512 -640 480 -640 480 -427 640 -640 480 -640 464 -640 426 -333 500 -500 378 -640 406 -640 427 -640 426 -426 640 -457 640 -640 478 -640 480 -640 480 -428 640 -500 375 -478 640 -500 333 -640 640 -640 426 -640 427 -640 457 -640 480 -640 398 -500 345 -640 480 -640 617 -640 361 -640 427 -640 426 -480 640 -640 640 -640 400 -640 480 -640 480 -640 480 -640 416 -480 640 -316 480 -640 429 -640 480 -640 425 -640 403 -640 425 -640 457 -640 480 -427 640 -333 500 -640 424 -640 427 -640 427 -460 640 -585 640 -640 480 -427 640 -640 479 -640 480 -500 375 -425 640 -640 480 -640 480 -640 480 -500 358 -640 480 -640 427 -640 480 -480 640 -500 375 -640 640 -427 640 -500 375 -640 428 -640 480 -640 344 -500 375 -640 480 -640 425 -640 426 -640 359 -640 469 -640 426 -480 640 -640 426 -500 375 -640 426 -480 640 -427 640 -500 375 -480 640 -640 480 -426 640 -426 640 -480 640 -426 640 -640 640 -508 640 -640 427 -427 640 -428 640 -640 480 -640 640 -480 640 -500 375 -640 480 -640 427 -640 400 -640 427 -640 480 -334 500 -409 640 -500 484 -640 424 -640 360 -612 612 -640 427 -500 327 -640 640 -640 360 -640 424 -640 428 -640 622 -640 480 -500 333 -427 640 -320 240 -640 480 -640 481 -427 640 -640 480 -640 424 -640 480 -640 480 -375 500 -640 425 -640 598 -640 425 -640 427 -612 612 -640 480 -640 215 -375 500 -537 640 -612 612 -640 480 -640 428 -640 427 -640 480 -550 640 -333 500 -640 371 -640 427 -612 612 -640 480 -480 640 -640 426 -640 427 -640 480 -415 640 -640 480 -640 480 -640 480 -640 426 -488 640 -640 428 -640 426 -640 427 -640 426 -480 640 -500 333 -512 640 -480 640 -496 640 -640 478 -618 640 -500 375 -640 480 -640 480 -589 640 -640 480 -640 426 -640 427 -640 512 -640 428 -640 480 -427 640 -640 421 -640 426 -640 611 -640 456 -640 429 -480 640 -640 480 -640 480 -375 500 -427 640 -640 480 -480 640 -640 427 -640 427 -500 375 -500 375 -500 375 -500 335 -640 309 -640 419 -640 459 -640 480 -640 518 -640 480 -640 480 -640 426 -640 480 -480 640 -427 640 -640 428 -640 480 -640 427 -640 489 -612 612 -413 640 -640 427 -640 602 -640 428 -480 640 -640 480 -500 375 -640 480 -640 481 -640 480 -640 427 -640 480 -640 480 -640 480 -640 361 -640 427 -480 640 -640 480 -640 428 -424 640 -588 640 -480 640 -500 333 -439 640 -640 427 -640 505 -640 480 -511 640 -427 640 -480 640 -480 640 -640 427 -612 612 -640 427 -432 640 -500 333 -640 480 -640 427 -640 480 -640 320 -640 427 -640 427 -640 426 -640 480 -500 375 -640 427 -480 640 -640 480 -640 425 -383 640 -612 612 -640 480 -427 640 -640 426 -375 500 -480 640 -612 612 -486 640 -640 462 -640 428 -640 426 -640 427 -427 640 -640 480 -612 612 -512 640 -640 428 -640 480 -640 478 -480 640 -640 407 -640 480 -640 480 -480 640 -428 640 -640 426 -640 428 -640 427 -640 480 -640 427 -640 504 -480 640 -640 427 -500 333 -640 427 -640 425 -640 481 -426 640 -640 427 -640 427 -640 425 -480 640 -480 640 -424 500 -640 427 -500 337 -640 480 -500 333 -427 640 -640 418 -640 354 -640 425 -640 427 -640 503 -640 427 -640 424 -500 333 -640 483 -640 426 -640 426 -640 480 -640 480 -640 426 -500 375 -640 427 -640 480 -480 640 -640 428 -427 640 -640 480 -426 640 -640 480 -640 480 -640 480 -500 375 -640 480 -640 480 -640 428 -640 428 -640 480 -640 480 -640 316 -640 513 -640 424 -480 640 -640 480 -640 428 -638 640 -640 425 -640 480 -640 480 -640 480 -640 427 -640 480 -640 478 -640 480 -640 427 -640 604 -640 361 -640 427 -480 640 -500 375 -640 480 -480 640 -640 427 -480 640 -640 429 -640 427 -640 420 -640 428 -640 427 -640 425 -640 426 -439 640 -640 480 -640 480 -640 427 -640 428 -640 427 -640 346 -640 427 -640 438 -640 427 -640 428 -500 375 -640 480 -640 431 -640 426 -640 480 -640 480 -333 500 -480 640 -640 480 -640 512 -640 340 -354 375 -640 424 -640 480 -640 480 -640 480 -640 425 -640 480 -427 640 -480 640 -500 375 -425 640 -640 480 -374 500 -500 476 -640 640 -640 427 -425 640 -400 302 -640 480 -463 500 -426 640 -640 480 -426 640 -640 427 -640 360 -640 480 -426 640 -640 480 -640 480 -640 427 -500 392 -640 378 -640 480 -640 343 -640 427 -640 426 -640 427 -640 426 -400 500 -500 333 -640 399 -640 512 -640 366 -612 612 -640 426 -640 480 -640 425 -598 640 -640 427 -480 640 -500 375 -508 640 -424 640 -640 427 -640 480 -480 640 -379 500 -640 318 -640 428 -427 640 -640 361 -640 427 -612 612 -640 427 -427 640 -480 640 -427 640 -640 427 -640 493 -640 425 -640 426 -612 612 -640 480 -640 427 -640 531 -500 333 -480 640 -640 425 -500 375 -640 399 -640 489 -640 426 -500 375 -640 427 -640 426 -640 480 -512 640 -427 640 -640 480 -406 640 -480 640 -612 612 -500 375 -640 480 -640 428 -480 640 -640 383 -640 480 -640 454 -640 480 -640 427 -425 640 -375 500 -640 480 -640 426 -640 480 -640 425 -640 427 -424 640 -469 640 -640 480 -640 480 -640 426 -375 500 -640 425 -640 457 -500 334 -640 426 -480 640 -640 480 -640 427 -640 480 -640 629 -480 640 -478 640 -480 640 -640 480 -640 426 -424 640 -640 427 -640 480 -640 480 -640 201 -640 480 -640 420 -640 480 -500 375 -640 478 -640 433 -482 640 -500 375 -640 480 -500 375 -375 500 -640 500 -640 481 -640 432 -640 425 -640 480 -640 480 -640 425 -640 400 -640 480 -640 414 -640 443 -640 425 -500 495 -640 480 -500 375 -640 480 -375 500 -640 427 -415 500 -640 427 -640 427 -500 333 -640 425 -612 612 -640 426 -426 640 -640 424 -500 290 -640 428 -640 357 -480 640 -480 640 -478 640 -640 427 -640 480 -500 333 -640 427 -640 426 -640 428 -640 569 -640 480 -457 640 -612 612 -640 428 -359 640 -640 428 -500 375 -453 640 -640 480 -640 427 -480 640 -640 427 -500 334 -333 500 -640 517 -640 425 -461 640 -490 640 -640 480 -500 375 -640 480 -480 640 -640 480 -480 640 -640 486 -640 480 -500 334 -640 480 -612 612 -640 427 -640 428 -640 310 -640 427 -612 612 -425 640 -427 640 -300 500 -640 438 -332 500 -640 427 -500 316 -427 640 -480 640 -640 480 -500 352 -640 428 -640 412 -640 480 -427 640 -413 640 -500 375 -640 226 -640 496 -640 612 -640 433 -640 464 -640 426 -640 480 -375 500 -502 640 -640 480 -500 375 -640 425 -640 480 -480 640 -640 480 -640 427 -640 480 -480 640 -480 640 -427 640 -640 393 -500 332 -640 360 -332 500 -640 427 -500 332 -640 428 -640 426 -500 375 -478 640 -640 427 -640 640 -640 427 -485 640 -478 640 -612 612 -640 425 -640 457 -545 640 -480 640 -500 375 -640 480 -512 640 -640 427 -333 500 -640 427 -640 480 -640 413 -640 480 -512 640 -640 433 -640 594 -426 640 -640 424 -480 640 -640 544 -640 427 -640 600 -640 480 -480 640 -640 349 -480 640 -334 500 -500 365 -333 500 -640 389 -640 480 -640 480 -640 421 -640 480 -375 500 -480 640 -478 640 -640 480 -640 480 -500 375 -640 425 -640 430 -640 360 -479 640 -480 640 -640 426 -640 480 -425 640 -640 480 -640 480 -640 480 -640 480 -500 335 -640 480 -480 640 -640 363 -486 640 -480 640 -640 427 -500 281 -640 416 -640 427 -480 640 -600 399 -500 350 -454 640 -640 427 -640 480 -640 480 -427 640 -640 480 -640 427 -640 461 -640 513 -640 427 -333 500 -640 427 -640 512 -640 480 -640 480 -612 612 -640 480 -500 333 -362 500 -640 427 -500 375 -500 334 -640 427 -640 425 -480 640 -640 425 -427 640 -640 427 -640 480 -448 640 -640 426 -640 427 -640 427 -480 640 -640 401 -640 427 -640 480 -640 480 -640 425 -640 435 -640 425 -640 427 -375 500 -640 480 -612 612 -640 427 -640 427 -640 480 -427 640 -640 480 -640 480 -427 640 -640 480 -640 427 -640 341 -581 640 -640 480 -480 640 -640 360 -640 409 -332 500 -640 429 -640 427 -433 640 -375 500 -640 480 -640 480 -640 512 -640 480 -640 427 -640 480 -640 427 -640 480 -640 426 -480 640 -640 480 -424 640 -640 428 -481 640 -640 426 -480 640 -640 480 -640 427 -500 375 -640 426 -640 480 -480 640 -640 480 -429 640 -640 480 -440 640 -480 640 -400 300 -640 426 -614 640 -500 455 -640 480 -640 427 -640 427 -640 425 -640 480 -640 480 -640 480 -480 640 -500 426 -500 375 -640 427 -500 335 -500 375 -500 375 -640 536 -640 640 -480 640 -640 426 -640 426 -429 640 -640 426 -640 427 -640 427 -480 640 -640 480 -640 499 -640 427 -483 640 -640 427 -640 477 -640 480 -640 512 -640 234 -640 427 -640 480 -640 480 -640 427 -640 424 -640 424 -480 640 -473 303 -500 375 -332 500 -640 427 -640 415 -478 640 -640 480 -640 425 -640 427 -640 427 -640 480 -500 333 -640 478 -640 422 -640 430 -640 480 -640 480 -500 375 -640 427 -640 480 -640 480 -640 480 -640 480 -640 480 -480 640 -500 375 -360 270 -393 640 -640 428 -478 640 -640 480 -557 640 -640 427 -333 500 -427 640 -317 500 -640 425 -480 640 -640 478 -640 427 -640 427 -640 374 -480 640 -640 480 -640 427 -375 500 -480 640 -427 640 -640 384 -640 480 -640 480 -394 640 -640 480 -640 480 -640 437 -640 427 -430 640 -640 160 -480 640 -427 640 -640 478 -640 354 -640 425 -500 333 -640 427 -427 640 -640 480 -500 375 -500 375 -640 428 -640 427 -640 478 -640 427 -480 640 -640 425 -640 480 -640 424 -640 457 -640 480 -500 333 -500 378 -375 500 -640 448 -500 333 -640 480 -640 423 -640 428 -640 494 -640 480 -480 640 -640 391 -640 479 -480 640 -640 510 -640 427 -425 640 -640 480 -427 640 -480 640 -480 640 -640 381 -640 480 -500 333 -518 640 -478 640 -640 640 -640 426 -640 414 -640 424 -372 500 -480 640 -480 640 -480 640 -640 480 -640 457 -427 640 -640 428 -640 360 -500 500 -612 499 -640 427 -480 640 -640 427 -426 640 -640 425 -640 411 -640 480 -640 480 -640 480 -640 428 -467 640 -640 480 -640 510 -640 427 -640 427 -640 427 -640 480 -640 428 -640 480 -640 426 -500 375 -333 500 -375 500 -640 480 -500 458 -640 640 -480 640 -640 427 -640 359 -640 480 -591 640 -464 640 -640 427 -384 500 -480 640 -480 640 -640 427 -640 427 -640 428 -640 428 -500 375 -378 500 -500 333 -640 480 -640 480 -640 360 -500 331 -640 480 -500 375 -501 640 -640 427 -426 640 -640 427 -640 480 -427 640 -640 404 -640 403 -427 640 -640 480 -640 427 -640 428 -640 480 -640 427 -427 640 -518 640 -463 640 -417 640 -640 640 -394 640 -640 310 -500 375 -426 640 -640 480 -426 640 -640 427 -640 178 -480 640 -640 480 -428 640 -640 480 -640 480 -640 428 -426 640 -640 480 -427 640 -612 612 -640 480 -427 640 -640 480 -640 480 -640 480 -480 640 -640 425 -427 640 -640 360 -640 427 -640 427 -640 427 -640 426 -640 427 -640 425 -640 427 -500 375 -480 640 -486 500 -600 600 -640 480 -640 425 -640 480 -640 436 -640 425 -480 640 -640 480 -640 360 -640 424 -640 426 -640 427 -500 375 -612 612 -640 425 -425 640 -496 640 -640 474 -500 375 -640 480 -640 396 -640 459 -480 640 -640 425 -427 640 -640 480 -480 640 -480 640 -640 427 -640 360 -640 425 -427 640 -500 334 -426 640 -429 640 -533 640 -640 428 -561 640 -334 500 -640 428 -480 320 -640 432 -640 424 -500 375 -640 427 -640 480 -426 640 -424 640 -640 446 -640 480 -640 426 -640 427 -500 333 -640 480 -640 427 -500 375 -480 640 -640 427 -375 500 -480 640 -640 426 -640 428 -640 427 -612 612 -640 428 -427 640 -640 480 -640 480 -448 640 -426 640 -640 425 -640 427 -640 464 -640 640 -425 640 -640 427 -384 500 -480 640 -480 640 -640 427 -500 358 -640 425 -640 480 -425 640 -417 640 -612 612 -640 480 -640 480 -640 480 -480 640 -640 359 -640 485 -640 640 -640 480 -300 225 -640 640 -640 480 -500 332 -640 423 -480 640 -640 480 -640 480 -640 424 -640 427 -640 425 -640 480 -640 427 -640 427 -640 457 -640 480 -427 640 -640 480 -640 419 -427 640 -640 427 -640 480 -640 480 -640 427 -500 360 -480 640 -640 480 -640 480 -640 480 -480 640 -640 427 -640 427 -640 428 -640 427 -640 427 -640 427 -640 330 -640 424 -640 386 -640 427 -640 480 -640 480 -640 480 -480 640 -375 500 -640 398 -640 426 -640 436 -640 426 -640 427 -640 480 -500 375 -640 426 -427 640 -640 426 -640 426 -640 359 -640 480 -640 427 -640 480 -640 428 -640 303 -519 631 -640 480 -640 480 -640 513 -640 360 -612 612 -480 640 -500 371 -640 480 -640 426 -640 427 -640 360 -640 512 -640 422 -640 427 -640 480 -640 480 -640 533 -640 426 -500 347 -397 640 -640 425 -640 480 -640 427 -640 640 -640 480 -640 534 -640 428 -640 480 -500 354 -640 427 -640 480 -640 425 -640 427 -480 640 -333 500 -639 640 -640 413 -640 508 -500 333 -640 427 -640 427 -480 640 -640 480 -640 429 -500 375 -480 640 -623 640 -452 640 -640 431 -480 640 -640 424 -640 427 -603 640 -500 375 -640 428 -640 376 -640 427 -640 427 -640 480 -640 426 -640 427 -480 640 -640 427 -640 426 -640 425 -640 427 -640 426 -640 451 -640 427 -480 640 -428 640 -636 477 -427 640 -640 389 -450 640 -640 480 -640 480 -426 640 -640 480 -640 427 -640 424 -480 640 -640 427 -489 640 -640 525 -640 425 -500 376 -640 427 -640 480 -640 446 -640 480 -640 427 -640 480 -500 375 -640 429 -480 640 -622 640 -640 428 -478 640 -640 426 -640 480 -640 360 -375 500 -500 375 -480 640 -640 480 -640 466 -500 375 -640 329 -541 640 -426 640 -640 640 -640 397 -640 425 -500 336 -640 359 -640 430 -640 427 -640 427 -480 640 -640 360 -640 480 -640 427 -591 640 -480 640 -640 428 -640 480 -428 640 -640 480 -375 500 -640 480 -640 480 -484 500 -612 612 -427 640 -640 383 -500 333 -640 427 -407 640 -640 433 -640 480 -500 375 -500 429 -425 640 -640 425 -612 612 -640 480 -500 375 -640 480 -640 480 -426 640 -500 348 -640 480 -488 500 -640 427 -500 375 -478 640 -640 480 -500 312 -333 500 -640 429 -640 480 -640 429 -640 427 -640 518 -640 474 -640 480 -640 480 -480 360 -640 427 -640 513 -622 640 -640 480 -398 640 -640 427 -640 426 -332 500 -469 640 -640 480 -640 429 -640 427 -640 375 -640 424 -426 640 -640 427 -640 480 -450 338 -480 640 -640 427 -640 640 -640 427 -640 427 -486 365 -427 640 -640 427 -640 480 -500 375 -640 428 -640 427 -640 425 -612 612 -640 423 -640 465 -640 511 -640 427 -640 480 -375 500 -640 424 -640 480 -640 425 -640 359 -500 335 -480 640 -640 480 -640 480 -640 427 -478 640 -640 480 -500 333 -640 640 -640 423 -640 427 -500 375 -640 426 -640 480 -411 640 -640 428 -640 427 -612 612 -640 480 -640 426 -424 640 -640 477 -640 423 -640 480 -640 416 -640 429 -640 481 -480 640 -640 449 -640 480 -640 427 -612 612 -500 333 -640 480 -640 472 -640 640 -640 480 -480 640 -640 426 -640 428 -480 640 -640 426 -480 640 -427 640 -640 480 -640 480 -375 500 -640 480 -360 640 -640 480 -640 486 -640 480 -640 480 -640 480 -425 640 -520 640 -640 426 -640 480 -640 480 -500 281 -500 375 -640 427 -427 640 -535 640 -612 612 -480 640 -360 640 -640 480 -640 480 -395 640 -579 640 -377 500 -640 480 -640 480 -640 427 -640 480 -500 375 -482 640 -427 640 -640 480 -480 640 -480 640 -500 375 -640 480 -400 266 -500 375 -640 480 -640 639 -640 480 -375 500 -480 640 -640 480 -426 640 -480 640 -427 640 -640 427 -426 640 -640 480 -640 289 -640 480 -640 427 -500 434 -640 637 -640 428 -640 480 -640 478 -640 383 -640 427 -440 500 -359 640 -640 480 -640 427 -425 640 -376 500 -427 640 -640 640 -640 356 -640 480 -236 236 -375 500 -640 427 -480 640 -640 480 -427 640 -415 500 -640 427 -640 427 -640 427 -640 466 -500 375 -640 480 -375 500 -480 640 -640 480 -480 640 -640 339 -640 251 -640 426 -427 640 -500 333 -640 459 -640 427 -640 419 -375 500 -426 640 -640 480 -640 480 -640 480 -421 640 -640 427 -333 500 -640 425 -640 425 -640 400 -640 426 -640 480 -500 332 -480 640 -640 480 -640 480 -640 523 -640 480 -640 480 -640 444 -540 640 -472 640 -500 333 -640 531 -640 425 -640 480 -640 478 -500 375 -640 480 -640 440 -640 480 -640 415 -640 455 -640 428 -359 640 -429 640 -640 480 -480 640 -640 480 -640 427 -427 640 -640 480 -512 640 -428 640 -480 640 -640 555 -640 429 -640 427 -359 640 -640 427 -640 427 -640 442 -500 375 -640 434 -428 640 -500 333 -640 426 -640 427 -640 427 -640 480 -640 424 -640 359 -640 590 -480 640 -640 360 -427 640 -512 640 -640 480 -511 640 -640 428 -640 447 -640 480 -640 428 -640 480 -640 480 -422 640 -640 480 -480 640 -500 375 -375 500 -640 425 -640 439 -640 480 -500 375 -375 500 -640 426 -500 338 -640 427 -640 480 -500 400 -640 360 -640 426 -640 640 -612 612 -640 360 -640 360 -500 375 -612 612 -640 427 -640 334 -640 428 -640 427 -640 425 -427 640 -428 640 -585 640 -500 344 -640 360 -426 640 -462 640 -640 427 -480 640 -513 640 -500 375 -500 377 -624 416 -427 640 -508 640 -640 480 -640 639 -640 428 -640 428 -640 428 -640 437 -375 500 -640 427 -640 427 -640 427 -640 360 -640 480 -640 428 -480 640 -640 425 -640 427 -480 640 -480 640 -640 427 -640 428 -425 640 -640 429 -500 375 -640 426 -640 427 -640 491 -640 480 -640 480 -427 640 -640 429 -640 426 -640 426 -640 480 -640 426 -640 392 -640 425 -458 640 -640 424 -640 480 -640 480 -640 480 -640 480 -640 480 -446 640 -640 480 -640 480 -500 333 -640 427 -640 428 -427 640 -477 640 -640 426 -640 496 -640 426 -640 428 -507 640 -640 427 -640 480 -480 640 -480 640 -640 427 -640 480 -334 500 -640 455 -640 431 -640 428 -512 326 -602 640 -640 485 -640 640 -612 612 -640 419 -480 640 -500 333 -333 500 -640 433 -640 480 -640 426 -640 427 -480 640 -427 640 -640 480 -640 427 -500 375 -640 480 -640 480 -640 480 -480 640 -640 480 -640 480 -640 480 -640 480 -640 429 -640 427 -640 427 -640 466 -500 332 -426 640 -480 640 -640 410 -640 480 -640 480 -640 359 -640 480 -424 640 -640 396 -640 427 -640 480 -640 427 -640 480 -480 640 -427 640 -480 640 -640 480 -440 640 -333 500 -640 427 -640 480 -640 427 -426 640 -640 427 -500 500 -640 427 -549 640 -500 300 -480 640 -640 427 -640 424 -640 427 -640 425 -480 640 -640 326 -428 640 -640 434 -480 640 -360 640 -480 640 -500 375 -640 427 -478 640 -640 427 -640 427 -640 640 -640 480 -640 456 -427 640 -640 480 -478 640 -375 500 -435 640 -640 425 -640 471 -640 404 -640 480 -480 640 -427 640 -640 480 -640 427 -640 481 -640 480 -640 480 -640 426 -640 480 -333 500 -640 480 -640 429 -500 333 -640 427 -606 640 -500 333 -640 427 -640 480 -640 428 -375 500 -640 427 -640 427 -640 425 -640 480 -640 480 -640 427 -640 181 -480 640 -640 480 -640 438 -640 480 -640 480 -640 480 -480 640 -640 425 -480 640 -500 333 -640 480 -375 500 -480 640 -359 640 -640 480 -480 640 -640 383 -500 304 -640 427 -640 480 -640 457 -640 428 -640 425 -480 640 -500 333 -480 640 -640 427 -383 640 -640 426 -480 640 -612 612 -640 480 -640 480 -426 640 -640 366 -375 500 -640 360 -640 427 -428 640 -640 427 -640 427 -640 401 -640 425 -640 427 -640 564 -640 481 -640 427 -500 333 -640 480 -383 640 -478 640 -640 640 -500 500 -640 432 -500 375 -427 640 -480 640 -640 424 -640 480 -640 426 -480 640 -640 480 -640 567 -640 429 -640 427 -500 334 -480 640 -640 480 -500 333 -640 480 -427 640 -640 424 -640 480 -640 480 -640 359 -640 421 -428 640 -640 427 -640 426 -640 427 -640 426 -579 640 -640 366 -640 426 -480 640 -640 480 -500 335 -480 640 -480 640 -640 480 -411 640 -427 640 -640 480 -375 500 -527 640 -500 374 -341 500 -500 375 -640 480 -427 640 -640 427 -421 640 -480 640 -640 480 -640 427 -492 500 -640 427 -640 425 -640 427 -640 480 -640 424 -640 424 -640 427 -640 481 -500 332 -640 441 -640 480 -403 640 -500 375 -480 640 -640 427 -432 640 -426 640 -640 428 -640 427 -500 375 -480 640 -640 426 -640 427 -455 640 -487 640 -640 427 -640 427 -428 640 -640 480 -500 500 -640 401 -640 480 -640 480 -640 427 -375 500 -640 464 -640 424 -612 612 -640 426 -640 426 -640 480 -640 426 -640 480 -427 640 -640 425 -612 612 -640 454 -640 427 -640 427 -500 332 -320 240 -453 640 -640 535 -640 539 -427 640 -480 640 -347 640 -480 640 -427 640 -427 640 -409 640 -480 640 -500 346 -427 640 -640 427 -426 640 -640 480 -640 480 -425 640 -500 332 -480 640 -500 375 -426 640 -426 640 -640 480 -640 480 -480 640 -640 427 -428 640 -375 500 -640 426 -500 209 -427 640 -640 427 -480 640 -640 425 -480 640 -436 640 -640 425 -640 438 -640 426 -640 495 -640 424 -500 333 -640 426 -480 640 -428 640 -640 427 -640 499 -640 480 -640 426 -640 480 -500 375 -640 480 -426 640 -640 555 -640 480 -640 483 -640 425 -375 500 -640 480 -500 333 -640 480 -640 426 -630 640 -425 640 -640 421 -480 640 -500 375 -480 640 -500 375 -640 427 -640 427 -640 427 -640 474 -333 500 -640 457 -640 480 -640 417 -442 442 -640 408 -640 427 -640 425 -640 360 -427 640 -476 640 -638 640 -640 425 -500 281 -500 375 -426 640 -640 480 -640 426 -338 500 -640 480 -640 427 -640 428 -640 480 -640 640 -640 427 -640 493 -640 427 -543 640 -640 360 -640 480 -640 480 -612 612 -425 640 -640 434 -640 480 -500 400 -500 325 -500 400 -640 480 -640 511 -640 457 -640 427 -640 480 -429 640 -640 425 -640 454 -640 428 -634 640 -612 612 -640 480 -640 479 -640 480 -640 480 -480 360 -640 427 -640 480 -640 425 -500 335 -513 640 -612 612 -640 527 -640 427 -640 343 -640 426 -612 612 -640 427 -640 480 -640 427 -640 360 -467 640 -640 359 -500 334 -640 480 -640 426 -640 480 -640 428 -640 343 -640 640 -640 424 -640 408 -476 640 -438 640 -479 640 -426 640 -480 640 -409 255 -640 428 -640 480 -640 427 -640 480 -500 333 -640 428 -480 640 -480 640 -640 426 -426 640 -640 426 -640 427 -373 495 -640 416 -480 640 -480 640 -640 425 -500 326 -640 426 -640 480 -500 400 -500 335 -640 480 -640 475 -640 480 -612 612 -640 480 -427 640 -640 427 -640 427 -640 480 -640 427 -428 640 -640 427 -640 640 -640 427 -640 398 -640 505 -640 427 -584 640 -640 480 -640 401 -500 281 -612 612 -500 375 -640 426 -500 375 -500 341 -640 424 -640 390 -500 307 -640 401 -640 424 -500 375 -640 427 -549 640 -640 427 -640 427 -500 375 -640 361 -375 500 -640 427 -424 640 -640 480 -640 213 -438 640 -640 442 -480 640 -640 428 -394 640 -640 424 -640 313 -640 480 -640 480 -640 480 -612 612 -480 640 -486 640 -640 413 -640 427 -625 640 -640 413 -640 512 -640 429 -640 426 -640 429 -640 480 -640 427 -500 333 -640 480 -640 436 -640 414 -500 375 -428 640 -640 425 -640 480 -480 640 -640 424 -480 640 -500 500 -640 480 -640 480 -640 427 -500 403 -640 480 -500 375 -640 480 -640 427 -640 480 -640 480 -640 360 -640 427 -375 500 -640 480 -640 427 -427 640 -640 480 -612 612 -427 640 -426 640 -640 425 -640 480 -640 427 -640 427 -640 426 -500 375 -640 480 -640 480 -640 439 -500 334 -640 480 -640 480 -500 333 -500 375 -500 375 -500 333 -640 427 -640 480 -402 500 -640 444 -640 426 -640 427 -458 640 -640 480 -640 427 -640 480 -640 478 -640 640 -640 480 -640 480 -640 480 -640 427 -640 482 -425 640 -640 427 -640 480 -640 480 -640 427 -640 480 -401 603 -640 640 -640 346 -640 384 -640 427 -640 480 -640 480 -640 510 -640 480 -419 640 -640 428 -640 427 -640 480 -640 480 -425 640 -640 478 -480 640 -640 427 -640 349 -640 640 -640 480 -640 427 -640 588 -640 434 -640 366 -640 480 -640 458 -480 640 -612 612 -480 640 -640 480 -640 427 -640 429 -640 480 -400 224 -640 428 -240 160 -500 385 -640 480 -640 414 -640 501 -640 480 -448 640 -375 500 -640 425 -640 426 -640 470 -640 480 -640 424 -640 480 -640 480 -640 428 -640 480 -640 358 -375 500 -640 480 -483 640 -480 640 -640 427 -640 483 -625 480 -640 480 -640 480 -640 425 -640 480 -640 427 -600 450 -500 336 -640 480 -640 427 -640 479 -640 480 -640 425 -480 640 -640 426 -640 427 -640 480 -640 433 -640 458 -640 436 -500 375 -500 332 -640 480 -427 640 -640 556 -640 428 -640 428 -640 475 -480 640 -375 500 -375 500 -640 428 -640 480 -640 427 -427 640 -640 474 -480 640 -480 640 -640 480 -640 457 -612 612 -500 333 -640 480 -640 480 -640 359 -480 640 -640 428 -375 500 -640 480 -640 440 -427 640 -500 313 -500 333 -640 427 -640 460 -640 426 -640 427 -427 640 -640 427 -640 480 -500 375 -426 640 -640 427 -500 425 -640 480 -480 640 -640 424 -496 640 -640 515 -640 360 -500 374 -640 640 -640 480 -458 640 -500 375 -640 433 -333 500 -640 360 -640 427 -640 427 -425 640 -640 427 -640 480 -640 429 -480 640 -500 422 -425 640 -480 640 -640 421 -640 480 -640 480 -500 375 -500 333 -640 518 -640 479 -640 471 -640 427 -640 480 -427 640 -640 427 -640 382 -500 375 -500 305 -640 350 -640 425 -427 640 -640 479 -640 426 -486 640 -640 512 -640 427 -480 640 -640 480 -640 480 -500 375 -640 480 -640 392 -478 640 -640 309 -612 612 -640 428 -247 500 -640 480 -640 480 -640 521 -640 427 -640 480 -640 480 -518 640 -640 480 -640 426 -500 375 -640 480 -640 480 -427 640 -640 480 -356 640 -600 400 -640 418 -640 480 -516 640 -640 256 -640 396 -640 484 -640 436 -382 500 -612 612 -640 426 -640 400 -480 640 -640 428 -640 422 -425 640 -612 612 -640 392 -640 426 -426 640 -640 428 -640 480 -480 640 -370 251 -640 427 -640 479 -427 640 -640 383 -640 425 -640 427 -640 480 -640 427 -640 425 -640 480 -480 640 -640 426 -640 386 -640 383 -612 612 -640 428 -640 425 -640 480 -428 640 -640 425 -640 480 -640 480 -480 640 -640 480 -640 425 -640 426 -534 640 -640 480 -640 426 -640 428 -500 375 -640 360 -500 333 -640 427 -480 640 -640 360 -500 400 -640 424 -500 330 -640 588 -640 480 -480 640 -640 347 -385 289 -640 480 -640 423 -640 480 -640 480 -640 450 -640 480 -480 640 -425 640 -640 480 -500 332 -640 480 -612 612 -640 457 -640 480 -468 304 -640 427 -425 640 -640 427 -640 480 -480 640 -640 425 -640 480 -640 427 -640 478 -500 500 -640 480 -500 375 -375 500 -640 480 -480 640 -640 425 -640 424 -640 480 -640 415 -640 480 -640 329 -640 425 -437 640 -640 427 -640 427 -480 640 -640 426 -500 375 -640 480 -333 500 -640 426 -640 446 -640 480 -480 640 -500 333 -482 625 -640 480 -480 640 -484 640 -466 640 -640 427 -640 480 -640 427 -640 424 -500 333 -640 480 -640 400 -640 480 -640 427 -480 640 -640 429 -640 480 -640 427 -640 427 -640 425 -480 640 -640 427 -480 640 -375 500 -500 333 -500 317 -640 427 -451 640 -480 640 -640 480 -427 640 -640 428 -640 426 -480 640 -320 240 -640 480 -640 427 -640 426 -640 480 -640 436 -640 429 -640 427 -640 480 -640 410 -500 360 -640 480 -640 480 -640 640 -640 427 -640 543 -428 640 -640 489 -640 570 -500 375 -613 640 -500 431 -640 432 -428 640 -640 479 -640 480 -640 480 -612 612 -640 480 -500 375 -640 480 -500 375 -640 421 -640 426 -640 424 -640 427 -476 640 -612 612 -640 480 -640 428 -640 480 -640 480 -480 640 -640 417 -480 640 -640 425 -640 480 -640 456 -640 480 -448 640 -588 640 -640 425 -500 375 -640 427 -640 480 -427 640 -424 640 -480 640 -640 428 -640 480 -480 640 -640 480 -500 375 -480 360 -480 640 -640 426 -480 640 -640 427 -640 426 -640 422 -427 640 -480 640 -640 427 -500 364 -640 428 -334 500 -375 500 -640 438 -427 640 -640 480 -640 480 -500 333 -640 435 -640 480 -500 333 -640 480 -427 640 -500 333 -640 480 -640 425 -640 480 -640 412 -480 640 -640 480 -464 640 -640 480 -480 640 -640 360 -640 428 -640 355 -640 427 -640 427 -640 480 -500 333 -640 480 -640 480 -500 375 -640 427 -375 500 -546 640 -339 500 -640 427 -640 429 -425 640 -640 427 -640 427 -640 361 -640 427 -640 321 -640 427 -640 426 -640 427 -640 480 -375 500 -640 425 -500 333 -640 480 -640 459 -640 490 -640 427 -640 480 -640 427 -640 425 -375 500 -320 408 -640 457 -500 366 -640 427 -640 512 -480 640 -640 588 -640 625 -427 640 -640 426 -480 640 -425 640 -612 612 -640 419 -640 480 -500 316 -635 640 -500 378 -640 424 -640 426 -640 360 -640 460 -640 480 -640 424 -500 375 -640 480 -640 480 -426 640 -427 640 -640 360 -640 479 -640 427 -640 480 -500 333 -640 426 -640 427 -612 612 -500 333 -640 429 -500 418 -427 640 -640 425 -480 640 -640 480 -640 428 -640 480 -640 480 -427 640 -640 420 -640 427 -640 427 -640 427 -500 357 -480 640 -480 640 -640 482 -500 375 -640 480 -640 433 -464 640 -467 640 -500 332 -500 375 -640 349 -640 427 -640 480 -640 480 -334 500 -375 500 -640 423 -640 480 -640 428 -500 451 -640 428 -640 427 -517 640 -640 426 -640 427 -480 640 -383 640 -480 640 -640 428 -640 426 -640 428 -479 640 -640 360 -335 198 -640 480 -640 426 -640 480 -510 640 -640 426 -612 612 -640 424 -630 640 -640 427 -640 427 -640 427 -640 428 -640 480 -480 640 -472 640 -500 375 -640 480 -425 640 -640 480 -640 428 -378 640 -427 640 -640 480 -375 500 -640 480 -427 640 -281 500 -640 436 -480 640 -375 500 -640 567 -640 427 -640 427 -375 500 -640 424 -640 480 -640 493 -640 360 -640 497 -258 344 -640 480 -640 427 -441 640 -333 500 -360 640 -500 375 -640 480 -427 640 -640 428 -640 427 -640 428 -500 375 -640 427 -500 289 -640 359 -640 301 -640 428 -428 640 -640 480 -473 640 -640 427 -640 426 -480 640 -612 612 -640 479 -640 427 -640 480 -640 480 -429 640 -640 480 -640 480 -500 375 -640 480 -640 480 -640 427 -427 640 -453 640 -500 390 -640 393 -500 375 -500 334 -640 346 -480 640 -640 480 -427 640 -640 427 -640 426 -640 427 -640 428 -640 480 -427 640 -640 480 -640 433 -640 425 -640 427 -640 480 -472 640 -640 480 -640 427 -640 640 -640 480 -639 640 -640 360 -361 640 -640 480 -333 500 -640 427 -640 480 -640 368 -426 640 -640 427 -480 640 -640 359 -427 640 -640 480 -640 408 -640 429 -640 478 -640 480 -640 417 -640 427 -640 426 -500 375 -640 480 -640 427 -640 480 -640 480 -640 409 -640 480 -640 427 -640 427 -480 640 -480 640 -640 480 -640 428 -612 612 -333 500 -640 438 -640 427 -616 640 -500 375 -640 480 -500 339 -640 427 -640 428 -640 480 -640 480 -640 480 -640 427 -640 480 -640 359 -640 428 -640 359 -640 480 -640 381 -640 480 -480 640 -640 360 -640 425 -640 479 -640 425 -640 485 -640 426 -640 427 -628 640 -500 375 -500 375 -640 427 -640 423 -425 640 -480 640 -500 375 -640 428 -458 640 -479 640 -640 480 -480 640 -640 480 -288 640 -640 427 -640 477 -640 427 -480 640 -640 480 -640 480 -640 480 -640 359 -640 428 -640 425 -640 449 -500 375 -640 428 -640 480 -640 481 -500 375 -500 333 -640 424 -640 430 -612 612 -640 424 -640 427 -500 375 -640 427 -640 453 -640 422 -640 424 -640 425 -640 425 -640 427 -480 640 -640 480 -640 359 -480 640 -640 426 -640 480 -640 427 -640 426 -640 427 -640 427 -480 640 -429 640 -408 640 -612 612 -427 640 -640 480 -640 480 -500 318 -640 534 -640 479 -640 406 -640 512 -640 427 -640 427 -640 388 -640 426 -640 478 -640 424 -640 480 -480 640 -640 427 -640 640 -640 480 -500 333 -640 433 -640 427 -640 426 -640 427 -640 480 -640 425 -640 428 -640 426 -425 640 -500 375 -640 480 -640 426 -640 434 -640 480 -640 441 -640 425 -640 425 -480 640 -640 427 -565 640 -427 640 -640 480 -640 480 -640 480 -640 427 -640 479 -427 640 -640 640 -500 337 -500 359 -480 640 -427 640 -640 480 -612 612 -640 427 -640 428 -425 640 -640 427 -480 640 -512 640 -640 513 -640 427 -640 480 -500 375 -640 425 -640 480 -428 640 -500 375 -640 425 -500 399 -427 640 -640 427 -500 333 -640 428 -640 428 -640 480 -640 427 -640 428 -413 500 -640 427 -640 424 -640 429 -640 480 -640 480 -640 478 -640 480 -640 452 -640 480 -500 292 -500 375 -640 480 -640 480 -640 480 -640 480 -640 427 -640 426 -480 640 -640 480 -640 427 -640 427 -640 360 -500 333 -640 477 -436 640 -640 426 -640 427 -640 427 -480 640 -612 612 -640 301 -640 311 -640 480 -427 640 -640 457 -640 427 -640 427 -640 480 -640 331 -500 375 -276 640 -640 424 -500 500 -478 640 -612 612 -640 381 -512 640 -433 640 -640 480 -480 640 -640 480 -480 640 -640 480 -427 640 -640 430 -640 480 -640 480 -640 428 -500 373 -640 428 -640 366 -640 475 -640 480 -427 640 -640 427 -500 375 -500 375 -375 500 -640 427 -427 640 -640 480 -640 480 -300 451 -640 383 -640 427 -500 375 -640 424 -500 375 -400 600 -640 478 -640 480 -375 500 -500 375 -640 480 -640 456 -640 427 -480 640 -480 640 -500 375 -500 415 -640 436 -375 500 -480 640 -427 640 -640 480 -640 428 -524 640 -640 489 -612 612 -480 640 -640 426 -640 426 -640 480 -640 425 -640 427 -640 427 -612 612 -640 445 -640 480 -640 427 -480 640 -640 361 -640 427 -640 454 -640 453 -427 640 -640 459 -500 283 -349 500 -640 480 -640 480 -640 480 -640 480 -640 480 -374 500 -480 640 -640 480 -480 640 -500 332 -500 332 -612 612 -640 426 -640 428 -500 333 -640 480 -640 480 -612 612 -640 427 -500 276 -500 332 -640 480 -640 427 -640 480 -640 480 -480 640 -640 480 -480 640 -640 429 -640 480 -640 512 -480 640 -640 480 -640 450 -640 426 -640 427 -640 480 -426 640 -640 427 -640 427 -640 480 -379 640 -640 425 -640 427 -640 400 -640 480 -640 427 -640 427 -640 480 -640 480 -640 427 -480 640 -640 424 -500 374 -640 480 -640 427 -640 480 -640 402 -640 480 -640 480 -640 640 -640 538 -640 480 -640 426 -640 480 -612 612 -480 640 -480 640 -640 427 -640 512 -640 480 -640 427 -640 439 -640 427 -480 640 -426 640 -612 612 -640 332 -500 375 -640 478 -640 433 -480 640 -450 600 -640 480 -640 480 -604 640 -640 243 -640 480 -424 640 -640 480 -401 640 -500 489 -640 397 -500 375 -500 345 -500 429 -481 640 -640 431 -640 366 -286 176 -640 427 -640 480 -428 640 -480 640 -437 500 -472 640 -640 458 -640 480 -612 612 -640 638 -480 640 -354 640 -640 427 -640 480 -640 480 -640 379 -480 640 -640 480 -478 640 -640 480 -640 428 -640 480 -640 480 -640 480 -640 425 -428 640 -640 428 -640 360 -480 640 -603 640 -640 559 -425 640 -640 480 -640 426 -640 427 -640 480 -640 427 -640 426 -640 480 -640 426 -640 360 -640 427 -640 426 -374 640 -480 640 -428 640 -478 640 -612 612 -640 427 -640 480 -640 486 -640 425 -500 363 -640 427 -640 425 -640 423 -533 640 -640 427 -640 428 -612 612 -444 440 -500 375 -425 640 -400 640 -640 480 -640 480 -640 428 -426 640 -640 480 -640 428 -640 480 -600 400 -425 640 -640 510 -500 333 -500 375 -640 427 -640 427 -640 427 -500 354 -640 480 -301 450 -360 640 -640 427 -512 640 -500 332 -427 640 -640 480 -640 427 -427 640 -640 480 -640 480 -500 375 -640 426 -640 384 -640 480 -500 333 -500 375 -640 480 -500 200 -640 480 -640 511 -640 478 -640 475 -500 375 -500 375 -640 480 -640 366 -640 480 -480 640 -640 423 -447 640 -640 640 -640 426 -640 480 -576 640 -360 640 -640 480 -500 281 -640 444 -640 640 -500 332 -560 175 -500 375 -640 366 -640 640 -640 341 -640 478 -640 428 -640 594 -640 363 -640 427 -640 425 -640 480 -590 640 -481 640 -640 640 -640 425 -640 427 -640 427 -640 427 -640 434 -375 500 -640 406 -640 360 -640 480 -640 480 -427 640 -396 640 -640 426 -640 531 -419 640 -640 426 -640 426 -640 480 -500 375 -640 428 -640 480 -640 480 -640 480 -480 640 -480 640 -444 640 -640 427 -320 240 -640 425 -640 480 -640 480 -425 640 -386 500 -640 480 -640 480 -500 333 -480 640 -422 282 -640 480 -640 443 -347 500 -640 480 -478 640 -480 640 -640 444 -640 640 -640 425 -478 640 -640 427 -640 427 -500 283 -640 480 -640 480 -640 412 -500 417 -427 640 -640 427 -640 323 -640 427 -640 471 -427 640 -640 427 -640 427 -368 500 -640 480 -640 427 -640 450 -640 426 -425 640 -640 427 -500 375 -640 427 -640 426 -640 480 -640 428 -640 360 -640 488 -640 425 -640 480 -398 640 -640 414 -640 399 -640 425 -640 480 -640 439 -427 640 -640 480 -428 640 -550 410 -640 427 -640 480 -640 480 -640 494 -428 640 -640 480 -500 375 -640 566 -640 480 -480 640 -640 478 -640 360 -640 427 -640 480 -480 640 -500 375 -500 333 -640 480 -425 640 -426 640 -640 425 -640 427 -640 279 -640 428 -640 376 -640 425 -640 353 -480 640 -640 464 -640 480 -640 492 -640 480 -640 480 -640 480 -640 480 -640 427 -640 480 -640 426 -640 427 -640 480 -640 427 -640 379 -500 390 -427 640 -640 510 -640 426 -640 480 -427 640 -480 640 -480 640 -640 469 -640 427 -500 375 -640 528 -427 640 -640 427 -640 519 -640 427 -428 640 -640 427 -640 414 -640 513 -640 427 -640 480 -427 640 -640 427 -640 480 -375 500 -500 375 -640 427 -640 428 -500 375 -640 427 -375 500 -640 480 -640 428 -500 333 -640 427 -640 480 -640 427 -640 427 -640 480 -427 640 -640 427 -640 480 -640 426 -500 375 -378 500 -640 565 -640 427 -640 427 -640 427 -640 480 -640 426 -640 452 -500 375 -640 427 -640 427 -640 480 -640 427 -427 640 -640 457 -640 428 -425 640 -640 480 -480 640 -640 383 -500 332 -640 595 -640 480 -640 404 -640 379 -500 498 -480 640 -640 480 -640 480 -375 500 -640 427 -640 427 -640 640 -640 480 -640 427 -640 427 -640 480 -480 640 -640 479 -640 325 -640 480 -427 640 -640 457 -640 428 -640 480 -640 427 -640 428 -640 480 -640 427 -346 500 -640 480 -640 427 -480 640 -480 320 -640 425 -640 474 -375 500 -478 640 -426 640 -640 426 -640 480 -500 400 -640 480 -640 427 -500 375 -640 426 -499 500 -640 426 -640 480 -640 480 -640 480 -640 427 -640 512 -375 500 -640 427 -480 640 -500 365 -640 480 -480 640 -640 426 -640 480 -640 427 -427 640 -480 640 -640 427 -640 480 -640 480 -425 640 -500 375 -500 338 -640 344 -640 427 -640 425 -640 480 -480 640 -427 640 -486 640 -503 640 -640 480 -427 640 -361 640 -640 457 -640 480 -640 427 -426 640 -640 480 -640 473 -640 361 -640 426 -375 500 -500 375 -640 427 -640 427 -640 431 -640 434 -640 480 -500 375 -640 428 -640 480 -371 640 -475 640 -640 476 -640 427 -500 375 -480 640 -640 426 -640 312 -640 480 -640 480 -640 480 -456 640 -640 427 -640 425 -632 640 -640 360 -640 424 -640 426 -403 640 -426 640 -480 640 -640 393 -359 640 -480 640 -612 612 -640 421 -640 425 -640 478 -640 422 -640 396 -500 375 -640 426 -640 427 -640 427 -640 478 -427 640 -500 336 -640 427 -640 640 -640 555 -612 612 -511 640 -428 640 -640 480 -493 640 -640 427 -640 425 -612 612 -478 640 -640 608 -400 308 -480 640 -640 427 -640 480 -640 512 -640 427 -480 640 -640 318 -480 640 -640 437 -500 385 -427 640 -500 374 -500 375 -640 481 -640 428 -640 289 -640 427 -640 427 -640 388 -480 640 -615 640 -640 480 -640 360 -428 640 -500 333 -640 480 -640 359 -355 640 -480 640 -612 612 -480 640 -640 480 -640 428 -640 480 -425 640 -640 425 -640 480 -640 270 -426 640 -640 480 -640 425 -640 408 -428 640 -640 400 -640 426 -622 640 -640 480 -500 375 -640 480 -640 393 -640 360 -640 428 -640 427 -357 500 -480 640 -640 480 -480 640 -400 500 -391 640 -640 480 -640 480 -640 480 -424 640 -640 427 -640 424 -500 339 -640 480 -640 480 -640 428 -427 640 -640 469 -427 640 -640 445 -640 428 -478 640 -375 500 -640 428 -640 425 -640 426 -427 640 -640 480 -640 480 -478 640 -500 375 -640 480 -500 400 -640 426 -640 512 -640 480 -640 457 -640 425 -640 476 -640 427 -500 375 -640 427 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -480 640 -500 375 -640 426 -640 480 -500 375 -640 427 -500 375 -480 640 -640 425 -597 640 -640 480 -640 481 -640 428 -640 512 -640 480 -640 480 -640 480 -427 640 -640 480 -500 334 -640 478 -640 480 -640 444 -480 640 -640 597 -640 427 -640 427 -640 425 -640 478 -640 427 -640 480 -640 427 -451 640 -628 640 -640 640 -500 335 -640 640 -640 318 -640 427 -640 480 -640 480 -640 480 -426 640 -427 640 -500 375 -320 240 -427 640 -640 480 -640 428 -640 429 -427 640 -480 640 -640 427 -640 415 -640 366 -407 500 -640 425 -640 427 -427 640 -480 640 -500 375 -500 360 -478 640 -640 427 -640 510 -640 425 -480 640 -500 334 -640 427 -640 480 -640 427 -333 500 -500 335 -640 427 -375 500 -640 360 -640 427 -640 459 -640 499 -640 473 -480 640 -478 640 -640 438 -640 426 -640 428 -640 441 -640 480 -640 480 -640 526 -640 480 -640 480 -640 480 -640 427 -640 425 -612 612 -398 640 -640 524 -640 478 -427 640 -640 499 -617 640 -640 428 -480 640 -640 423 -500 357 -478 640 -640 360 -640 427 -640 433 -640 425 -545 640 -640 482 -424 640 -640 480 -334 500 -483 640 -427 640 -640 480 -500 333 -500 375 -400 266 -375 500 -640 480 -480 640 -640 428 -500 375 -640 577 -446 640 -640 480 -480 640 -640 480 -640 480 -640 427 -640 426 -362 640 -640 480 -500 375 -500 333 -500 333 -640 426 -640 426 -640 480 -480 640 -640 478 -480 640 -640 427 -500 375 -640 640 -640 480 -640 425 -640 421 -640 427 -640 480 -640 426 -640 426 -640 352 -500 375 -480 640 -640 427 -480 640 -640 427 -426 640 -640 480 -320 400 -640 480 -427 640 -640 358 -640 430 -640 427 -640 426 -500 375 -480 640 -612 612 -480 640 -640 430 -512 512 -640 480 -480 640 -640 427 -640 478 -640 427 -640 427 -640 425 -640 480 -640 425 -640 427 -640 480 -640 427 -500 281 -640 480 -640 480 -428 640 -640 480 -640 480 -425 640 -640 480 -425 640 -480 640 -640 339 -640 427 -427 640 -480 640 -640 425 -427 640 -640 480 -640 423 -442 500 -640 480 -640 427 -480 640 -640 494 -494 500 -480 640 -480 640 -640 480 -640 640 -640 427 -640 480 -640 428 -640 428 -612 612 -480 640 -634 640 -500 333 -500 332 -423 640 -640 427 -480 640 -632 640 -500 323 -640 426 -640 480 -640 480 -640 480 -640 480 -640 480 -640 425 -640 427 -640 432 -332 500 -640 640 -640 478 -640 512 -640 512 -427 640 -500 375 -640 480 -640 480 -640 480 -640 428 -640 480 -640 480 -640 254 -640 480 -500 375 -640 427 -480 640 -640 474 -640 426 -640 480 -640 495 -480 640 -640 480 -640 427 -640 480 -500 333 -640 427 -640 480 -375 500 -640 427 -464 640 -640 480 -480 640 -612 612 -640 421 -640 480 -500 332 -640 480 -640 360 -640 480 -426 640 -500 375 -640 427 -612 612 -640 359 -640 428 -640 360 -640 480 -333 500 -640 360 -640 370 -640 427 -500 372 -640 426 -500 333 -478 640 -500 375 -640 480 -640 368 -500 368 -500 375 -500 332 -640 480 -640 427 -519 640 -640 434 -640 427 -424 640 -640 479 -425 640 -640 478 -640 515 -425 640 -500 375 -600 600 -640 428 -612 612 -640 427 -640 480 -640 466 -640 427 -546 640 -640 480 -640 403 -640 606 -561 640 -427 640 -500 372 -480 640 -477 358 -640 480 -640 428 -640 478 -427 640 -640 355 -640 480 -640 480 -640 512 -427 640 -375 500 -500 332 -480 640 -480 640 -640 473 -612 612 -640 428 -640 427 -640 480 -640 480 -500 400 -640 427 -640 427 -640 426 -640 480 -640 384 -640 427 -428 640 -640 426 -640 480 -640 481 -640 480 -640 480 -640 480 -500 375 -640 329 -333 500 -640 427 -640 348 -640 480 -500 375 -481 481 -640 424 -640 360 -640 427 -640 428 -640 480 -425 640 -640 427 -640 480 -500 375 -426 640 -640 427 -480 640 -500 373 -640 426 -640 480 -640 320 -640 426 -480 640 -426 640 -500 282 -640 417 -640 403 -426 640 -640 480 -640 427 -480 640 -640 425 -511 640 -375 500 -500 335 -640 412 -640 427 -640 427 -500 375 -640 480 -399 640 -640 426 -640 480 -500 375 -480 640 -427 640 -480 640 -360 640 -640 480 -640 427 -612 612 -640 571 -640 427 -640 427 -500 375 -640 429 -640 383 -427 640 -333 500 -640 480 -427 640 -478 640 -500 390 -640 480 -640 480 -640 427 -640 480 -500 328 -480 640 -640 480 -640 426 -456 640 -640 427 -640 427 -640 603 -612 612 -640 427 -480 640 -480 640 -640 480 -640 480 -480 640 -640 443 -640 427 -500 333 -640 427 -640 249 -640 480 -640 426 -640 480 -640 480 -282 454 -640 480 -640 427 -640 480 -427 640 -428 640 -640 425 -567 640 -500 333 -500 375 -640 480 -480 640 -446 640 -500 375 -640 480 -427 640 -427 640 -640 439 -480 640 -640 427 -375 500 -640 480 -640 427 -640 426 -640 426 -480 640 -640 480 -640 480 -612 612 -640 554 -480 640 -640 360 -500 375 -500 375 -640 423 -640 427 -480 640 -640 425 -640 427 -640 426 -640 480 -640 426 -640 427 -640 464 -640 414 -375 500 -482 482 -640 480 -389 640 -478 640 -640 427 -640 361 -640 480 -640 429 -640 427 -640 425 -640 480 -640 480 -640 483 -640 427 -640 427 -500 329 -640 444 -640 428 -640 480 -403 640 -500 333 -640 480 -640 427 -640 269 -640 480 -640 480 -640 360 -640 427 -444 640 -640 428 -640 480 -457 640 -480 640 -612 612 -640 427 -612 612 -333 500 -640 480 -426 640 -640 424 -640 427 -640 418 -500 375 -640 496 -640 457 -640 480 -640 426 -480 640 -640 424 -640 480 -576 640 -640 427 -640 480 -640 399 -480 640 -640 427 -640 480 -500 500 -640 427 -351 500 -640 427 -640 480 -640 640 -640 427 -427 640 -640 373 -500 380 -375 500 -640 480 -425 640 -640 406 -640 427 -640 480 -640 427 -640 427 -500 408 -640 480 -640 480 -640 480 -500 336 -640 480 -480 640 -640 473 -640 428 -640 428 -578 640 -480 640 -640 427 -640 424 -640 427 -404 640 -500 375 -640 400 -500 333 -480 640 -436 640 -409 640 -640 427 -640 523 -640 427 -640 418 -640 480 -640 480 -640 427 -640 426 -500 333 -640 427 -427 640 -640 412 -640 480 -640 427 -478 640 -640 480 -640 427 -332 500 -511 640 -478 640 -640 427 -334 500 -640 427 -640 427 -500 375 -640 480 -640 480 -500 375 -500 400 -640 480 -333 500 -480 640 -640 427 -640 360 -640 480 -640 480 -640 480 -640 388 -427 640 -500 375 -640 426 -640 480 -640 480 -640 480 -612 612 -478 640 -334 500 -640 427 -640 457 -640 480 -640 427 -426 640 -640 425 -500 375 -640 427 -640 416 -426 640 -480 640 -640 425 -640 426 -640 538 -480 640 -640 478 -500 375 -426 640 -480 640 -640 426 -640 428 -640 427 -480 640 -640 427 -500 228 -640 425 -640 480 -500 375 -640 427 -500 375 -640 427 -433 640 -480 640 -480 640 -640 426 -640 427 -612 612 -640 481 -640 480 -453 640 -500 333 -640 361 -640 424 -640 428 -640 478 -640 480 -640 427 -640 480 -425 640 -640 339 -426 640 -640 480 -640 480 -640 427 -500 375 -640 323 -640 640 -640 480 -640 427 -640 450 -320 240 -640 478 -640 640 -640 427 -426 640 -640 480 -640 424 -640 427 -612 612 -640 427 -640 425 -640 480 -640 480 -480 640 -640 480 -640 449 -640 479 -640 426 -480 640 -640 428 -640 478 -456 640 -640 427 -640 480 -428 443 -640 483 -640 423 -640 480 -640 480 -640 480 -640 427 -480 640 -640 424 -640 427 -500 202 -426 640 -640 427 -640 428 -640 480 -375 500 -427 640 -640 480 -460 640 -640 427 -640 427 -640 427 -640 480 -640 426 -640 484 -333 500 -640 427 -333 500 -640 401 -640 480 -640 429 -640 433 -427 640 -500 333 -640 320 -640 427 -640 427 -640 427 -640 415 -500 332 -457 640 -427 640 -640 434 -448 640 -640 480 -640 427 -640 425 -640 480 -640 480 -480 640 -612 612 -480 640 -640 480 -640 512 -640 480 -480 640 -480 640 -500 375 -640 427 -640 480 -480 640 -419 640 -427 640 -640 424 -640 428 -640 425 -640 427 -640 426 -640 426 -473 640 -640 426 -640 420 -640 480 -640 427 -500 290 -612 612 -640 427 -640 480 -426 640 -400 300 -314 500 -500 375 -640 360 -640 480 -640 427 -640 427 -480 640 -640 425 -500 375 -640 480 -640 480 -640 640 -500 375 -640 424 -612 612 -640 426 -640 487 -640 427 -640 480 -640 503 -640 458 -640 484 -640 480 -640 480 -640 427 -640 480 -640 457 -640 480 -427 640 -612 612 -640 526 -500 375 -640 480 -640 480 -400 500 -640 427 -640 480 -640 427 -640 427 -640 426 -640 480 -480 640 -428 640 -480 640 -480 640 -428 640 -640 406 -640 428 -640 491 -428 640 -500 375 -480 640 -480 640 -640 480 -640 427 -480 640 -640 479 -480 640 -640 426 -640 360 -640 360 -640 480 -500 375 -640 480 -640 428 -612 612 -640 425 -375 500 -640 427 -640 457 -640 427 -640 316 -640 480 -500 331 -640 480 -427 640 -480 640 -426 640 -640 425 -640 496 -640 389 -463 640 -640 468 -640 480 -640 480 -444 640 -640 424 -334 500 -500 375 -640 429 -500 332 -480 640 -640 480 -640 427 -640 480 -426 640 -640 386 -640 427 -500 375 -500 375 -640 427 -640 480 -640 427 -640 324 -500 375 -640 425 -640 363 -640 428 -426 640 -640 427 -467 640 -640 427 -640 427 -640 427 -640 230 -640 426 -640 359 -640 428 -640 480 -640 427 -640 427 -640 427 -500 375 -640 427 -612 612 -500 375 -500 375 -640 427 -640 434 -500 375 -640 640 -640 463 -612 612 -480 640 -640 427 -640 480 -640 568 -640 480 -480 640 -426 640 -640 480 -612 612 -640 480 -627 640 -344 500 -640 480 -640 442 -640 428 -640 480 -480 640 -640 480 -640 480 -640 433 -640 512 -427 640 -500 334 -640 254 -640 431 -612 612 -612 612 -640 512 -640 480 -640 424 -640 396 -640 480 -640 480 -480 640 -640 480 -427 640 -640 480 -640 427 -640 480 -640 480 -500 400 -500 375 -640 480 -640 480 -427 640 -640 480 -640 427 -480 640 -427 640 -640 427 -640 480 -640 427 -640 428 -426 640 -500 375 -640 366 -640 480 -640 480 -429 640 -479 320 -640 429 -500 399 -424 640 -538 640 -640 428 -640 431 -427 640 -554 312 -426 640 -640 480 -375 500 -640 427 -640 429 -480 384 -500 400 -333 500 -480 640 -500 484 -640 427 -477 304 -426 640 -640 480 -600 400 -500 500 -640 427 -480 640 -500 333 -500 334 -640 428 -640 486 -640 258 -640 480 -640 480 -519 640 -612 612 -500 333 -640 426 -640 427 -640 640 -640 508 -640 427 -480 640 -426 640 -500 375 -640 427 -500 334 -640 480 -437 640 -640 418 -640 427 -598 640 -378 500 -480 640 -640 593 -640 427 -480 640 -640 480 -333 500 -640 343 -640 420 -480 640 -640 480 -640 427 -333 500 -640 427 -426 640 -640 427 -640 424 -523 640 -480 640 -640 430 -640 480 -640 428 -640 480 -480 640 -640 480 -612 612 -427 640 -640 481 -640 407 -427 640 -640 426 -333 500 -640 480 -640 478 -640 480 -640 439 -640 403 -640 480 -640 480 -640 480 -640 419 -640 427 -640 427 -640 424 -640 382 -640 408 -500 375 -640 640 -640 480 -640 427 -640 428 -395 640 -480 640 -602 640 -640 480 -428 640 -640 400 -427 640 -640 427 -640 424 -640 480 -640 426 -640 480 -500 375 -640 480 -453 640 -640 443 -640 429 -640 360 -640 498 -640 480 -446 640 -640 476 -500 387 -640 640 -590 640 -640 425 -640 480 -427 640 -640 480 -426 640 -640 638 -439 640 -640 640 -437 640 -640 480 -640 640 -640 480 -640 495 -640 427 -500 375 -640 388 -640 480 -640 428 -640 427 -353 640 -427 640 -479 640 -500 334 -640 480 -640 427 -427 640 -512 640 -500 335 -426 640 -640 427 -640 200 -640 427 -640 427 -640 538 -512 640 -640 428 -450 319 -375 500 -640 480 -500 375 -640 480 -640 428 -640 452 -640 480 -640 480 -640 480 -640 640 -640 427 -640 480 -416 640 -640 426 -640 480 -427 640 -500 375 -640 295 -457 640 -640 425 -640 427 -500 500 -640 480 -640 480 -427 640 -375 500 -640 480 -640 434 -640 427 -433 640 -554 640 -640 427 -640 487 -640 428 -500 375 -640 424 -478 640 -640 480 -640 425 -640 427 -500 334 -640 467 -640 426 -640 427 -426 640 -640 427 -427 640 -480 640 -640 426 -409 640 -640 480 -425 640 -640 480 -640 428 -378 640 -427 640 -640 619 -425 640 -640 480 -640 428 -640 480 -640 480 -640 480 -640 429 -640 426 -640 425 -480 640 -640 478 -375 500 -640 436 -640 409 -640 423 -640 426 -640 427 -500 332 -500 375 -640 480 -640 428 -480 640 -640 425 -640 427 -640 480 -640 427 -640 480 -640 480 -640 480 -480 640 -500 337 -500 325 -640 427 -640 426 -640 400 -640 248 -640 427 -640 462 -640 480 -640 427 -640 508 -500 391 -480 640 -640 427 -640 480 -640 427 -427 640 -640 426 -427 640 -640 427 -457 640 -640 480 -640 480 -427 640 -427 640 -500 375 -424 640 -427 640 -640 427 -640 480 -640 480 -480 640 -640 480 -444 640 -640 424 -640 428 -640 460 -640 427 -640 428 -640 512 -640 427 -428 640 -640 427 -640 427 -640 478 -640 424 -640 480 -640 427 -640 339 -612 612 -640 480 -500 375 -480 640 -640 425 -640 427 -640 480 -427 640 -427 640 -640 480 -480 640 -640 480 -500 375 -640 480 -640 424 -640 480 -640 480 -640 480 -480 640 -612 612 -640 428 -427 640 -640 480 -612 612 -640 480 -640 424 -640 480 -640 480 -640 480 -640 480 -480 640 -427 640 -640 427 -640 424 -640 427 -640 427 -480 640 -640 480 -640 480 -640 424 -640 457 -427 640 -500 338 -640 427 -640 427 -356 640 -375 500 -505 640 -640 425 -400 600 -640 427 -426 640 -481 640 -640 480 -640 491 -640 480 -640 480 -640 369 -640 427 -500 333 -333 500 -500 313 -640 482 -640 491 -640 426 -640 426 -640 480 -640 427 -640 504 -640 426 -480 640 -480 640 -640 480 -640 457 -640 427 -640 427 -640 426 -640 427 -640 426 -640 480 -612 612 -640 480 -640 480 -500 332 -640 480 -480 640 -640 480 -640 426 -640 480 -500 305 -640 347 -640 427 -480 640 -500 335 -367 500 -640 427 -640 427 -640 427 -640 480 -640 512 -612 612 -640 427 -568 320 -640 426 -480 640 -480 640 -640 480 -480 640 -427 640 -640 428 -640 360 -348 500 -424 640 -480 640 -640 480 -480 640 -636 640 -427 640 -480 640 -640 427 -640 480 -333 500 -500 375 -640 427 -600 450 -640 480 -640 427 -640 480 -329 640 -640 360 -612 612 -640 480 -500 500 -640 480 -640 457 -640 426 -640 488 -640 479 -480 640 -640 428 -427 640 -640 480 -640 427 -640 480 -640 427 -640 633 -512 640 -480 640 -480 640 -500 332 -640 480 -640 427 -640 480 -500 375 -640 480 -640 480 -640 480 -640 424 -640 427 -426 640 -640 427 -427 640 -471 640 -640 425 -500 398 -640 369 -640 480 -640 480 -640 485 -640 480 -640 480 -640 399 -640 427 -480 640 -500 375 -640 480 -425 640 -640 429 -500 500 -500 332 -640 640 -640 480 -480 640 -640 480 -640 425 -640 379 -480 640 -640 408 -333 500 -640 421 -427 640 -383 640 -640 480 -640 419 -478 640 -640 418 -500 357 -435 480 -640 427 -640 480 -478 640 -640 428 -500 375 -640 427 -640 427 -640 316 -640 428 -640 424 -413 640 -640 438 -640 428 -640 393 -640 428 -375 500 -640 425 -640 423 -640 475 -640 427 -640 427 -376 500 -640 429 -640 480 -640 446 -640 480 -425 640 -640 359 -500 374 -427 640 -480 640 -640 421 -427 640 -640 427 -640 425 -640 640 -640 429 -640 480 -500 333 -640 427 -429 640 -333 500 -480 640 -335 500 -640 427 -480 640 -500 378 -640 629 -640 424 -640 464 -383 640 -640 513 -333 500 -640 480 -375 500 -612 612 -640 425 -640 480 -640 480 -640 360 -612 612 -640 425 -640 480 -640 428 -428 640 -640 478 -399 500 -480 640 -640 427 -640 427 -640 428 -480 640 -640 425 -640 426 -640 480 -381 640 -640 480 -640 480 -427 640 -640 556 -640 480 -480 640 -640 640 -640 429 -500 375 -640 427 -480 640 -640 458 -480 640 -640 427 -500 500 -333 500 -480 640 -500 334 -640 480 -640 428 -640 426 -394 500 -640 427 -480 640 -640 441 -640 484 -480 640 -640 480 -640 480 -640 478 -640 427 -640 478 -428 640 -501 640 -640 400 -512 640 -480 640 -640 291 -640 480 -500 375 -640 480 -429 640 -464 640 -640 480 -640 640 -426 640 -640 407 -480 640 -480 640 -640 426 -640 480 -640 640 -404 640 -500 306 -640 472 -500 377 -640 480 -500 375 -640 439 -500 375 -640 427 -480 640 -500 375 -640 640 -640 473 -481 640 -640 432 -640 480 -425 640 -640 425 -640 360 -640 427 -640 421 -640 427 -640 428 -640 427 -500 333 -640 443 -458 640 -612 612 -640 427 -640 303 -640 480 -480 640 -640 478 -423 640 -640 512 -640 427 -640 480 -640 427 -640 480 -640 360 -640 480 -640 478 -385 308 -640 427 -500 381 -640 427 -480 640 -500 334 -640 480 -500 375 -640 426 -640 426 -640 480 -640 425 -453 640 -640 476 -500 375 -640 425 -640 480 -480 640 -612 612 -333 500 -478 640 -502 640 -500 333 -640 471 -640 480 -427 640 -640 480 -640 480 -640 427 -640 480 -640 400 -500 375 -640 480 -640 480 -500 333 -426 640 -427 640 -429 640 -640 478 -480 640 -432 640 -640 480 -480 640 -428 640 -640 478 -500 305 -500 375 -640 426 -500 334 -640 428 -612 612 -640 480 -640 496 -427 640 -360 640 -640 427 -396 640 -640 425 -640 480 -411 640 -640 425 -640 480 -640 480 -640 480 -640 427 -500 335 -640 480 -426 640 -640 480 -640 427 -500 375 -640 480 -640 461 -640 480 -640 480 -480 640 -640 425 -640 480 -640 427 -500 375 -640 424 -640 480 -480 640 -427 640 -640 480 -640 433 -640 400 -500 333 -640 480 -640 412 -612 612 -640 480 -447 640 -640 425 -640 427 -420 223 -356 640 -500 375 -427 640 -640 428 -427 640 -500 375 -640 427 -640 439 -640 419 -640 400 -500 500 -500 375 -640 403 -500 375 -640 427 -640 480 -640 424 -640 480 -640 514 -640 480 -640 480 -640 480 -640 428 -640 414 -500 333 -640 228 -640 480 -640 360 -640 480 -640 445 -640 493 -640 482 -480 640 -640 427 -640 461 -640 427 -640 428 -640 480 -640 427 -640 430 -640 426 -600 400 -640 427 -640 427 -428 640 -426 640 -640 453 -640 464 -480 640 -480 640 -640 480 -640 480 -640 426 -640 480 -640 416 -640 427 -640 480 -640 403 -640 480 -640 488 -640 425 -480 640 -640 480 -640 425 -600 400 -640 489 -640 266 -640 426 -512 640 -640 427 -640 480 -640 427 -640 480 -375 500 -640 480 -640 515 -640 427 -500 375 -600 399 -640 429 -500 372 -640 480 -640 426 -428 640 -640 427 -640 480 -640 427 -640 401 -500 375 -640 427 -426 640 -427 640 -480 640 -481 640 -429 640 -480 640 -640 427 -640 414 -640 574 -480 640 -640 427 -640 640 -321 500 -640 425 -640 480 -500 375 -640 428 -640 356 -480 640 -335 500 -640 425 -361 640 -640 454 -640 438 -640 480 -480 640 -640 480 -427 640 -500 375 -640 480 -640 480 -640 480 -640 480 -640 461 -640 395 -480 640 -640 360 -640 480 -640 616 -500 333 -474 640 -640 427 -640 480 -640 457 -640 424 -427 640 -640 359 -640 480 -640 480 -640 480 -640 471 -640 480 -427 640 -640 480 -640 427 -640 248 -640 424 -500 332 -640 426 -480 640 -333 500 -640 480 -640 427 -640 359 -378 500 -640 427 -333 500 -640 480 -640 427 -640 480 -480 640 -640 360 -640 480 -500 375 -480 640 -402 600 -640 425 -480 640 -500 326 -640 426 -640 425 -500 375 -375 500 -612 612 -427 640 -500 375 -640 427 -640 480 -375 500 -640 425 -480 640 -640 480 -480 640 -640 427 -470 640 -640 424 -360 500 -640 435 -640 491 -640 480 -640 360 -640 480 -640 486 -640 439 -640 429 -640 640 -480 640 -640 480 -500 335 -365 500 -478 640 -640 427 -500 332 -640 424 -640 480 -640 480 -427 640 -425 640 -640 480 -640 480 -600 363 -640 480 -640 428 -640 480 -640 457 -640 480 -640 427 -333 500 -640 428 -375 500 -640 384 -640 478 -640 480 -640 426 -640 360 -640 453 -427 640 -640 480 -640 426 -640 424 -640 480 -338 500 -640 436 -640 426 -512 640 -500 375 -640 428 -625 425 -640 427 -518 640 -640 480 -500 375 -640 427 -640 480 -640 426 -480 640 -480 640 -640 431 -640 480 -640 480 -640 427 -640 427 -612 612 -640 480 -500 375 -640 427 -640 426 -640 431 -482 500 -640 426 -640 640 -640 203 -640 480 -640 603 -640 640 -500 375 -640 480 -640 427 -640 426 -400 500 -640 480 -640 625 -480 640 -427 640 -640 480 -427 640 -640 360 -640 480 -617 640 -640 425 -640 428 -640 361 -426 640 -640 480 -640 480 -640 425 -640 360 -640 428 -640 420 -640 425 -480 640 -640 427 -640 480 -480 640 -480 640 -626 586 -612 612 -318 500 -428 640 -500 375 -427 640 -640 427 -640 427 -640 426 -640 426 -428 640 -612 612 -500 332 -480 640 -640 426 -411 640 -500 333 -640 480 -500 285 -640 480 -640 426 -640 479 -640 385 -640 480 -638 640 -640 512 -640 480 -480 640 -640 479 -426 640 -640 428 -480 640 -640 480 -640 480 -640 427 -426 640 -500 333 -640 427 -640 480 -640 480 -640 427 -640 608 -640 427 -640 480 -640 427 -480 640 -428 640 -640 428 -640 426 -640 480 -640 480 -640 426 -500 333 -640 444 -426 640 -640 480 -640 424 -500 400 -640 468 -640 429 -640 427 -640 425 -480 640 -529 640 -640 425 -640 427 -640 426 -480 640 -640 427 -640 446 -640 480 -480 640 -427 640 -640 386 -640 480 -500 333 -640 428 -640 480 -640 454 -424 640 -640 428 -640 389 -427 640 -640 480 -640 480 -640 360 -640 480 -480 640 -640 427 -427 640 -640 480 -640 458 -640 480 -640 480 -640 416 -427 640 -640 427 -360 240 -640 480 -500 375 -640 426 -640 480 -640 425 -640 425 -640 427 -480 640 -640 425 -640 553 -427 640 -640 426 -480 640 -640 480 -500 334 -480 640 -640 576 -640 425 -427 640 -640 426 -478 640 -640 476 -428 640 -427 640 -640 339 -427 640 -640 424 -427 640 -640 427 -640 427 -640 362 -524 640 -640 478 -426 640 -640 427 -500 375 -640 480 -640 480 -640 213 -640 427 -640 460 -512 640 -640 480 -640 480 -640 384 -640 443 -640 480 -500 334 -320 240 -640 480 -479 640 -640 480 -612 612 -640 424 -640 455 -300 225 -640 428 -640 428 -640 437 -640 427 -480 640 -640 480 -427 640 -640 426 -640 480 -640 480 -480 640 -640 427 -612 612 -640 428 -640 427 -600 400 -640 427 -480 640 -612 612 -427 640 -499 640 -640 480 -640 153 -640 427 -640 480 -500 375 -500 375 -640 480 -640 427 -500 374 -640 480 -640 483 -640 480 -640 576 -640 448 -640 478 -500 333 -480 640 -640 427 -480 640 -640 303 -480 640 -640 427 -640 480 -500 333 -640 427 -640 426 -640 480 -489 640 -640 427 -640 424 -640 359 -427 640 -500 333 -640 480 -333 500 -480 640 -375 500 -640 426 -640 578 -640 480 -480 640 -416 640 -640 408 -640 480 -500 333 -640 203 -612 612 -612 612 -383 640 -640 338 -640 427 -640 480 -640 441 -640 427 -427 640 -640 480 -640 427 -640 480 -640 426 -640 427 -640 480 -333 500 -640 169 -640 426 -428 640 -500 375 -480 640 -428 640 -500 314 -640 383 -480 640 -640 427 -640 428 -428 640 -640 631 -375 500 -425 640 -640 427 -497 640 -640 366 -640 426 -390 500 -640 427 -500 493 -640 428 -640 427 -640 427 -640 359 -640 480 -640 427 -480 640 -442 640 -426 640 -640 480 -640 425 -427 640 -640 480 -375 500 -500 337 -640 298 -640 366 -640 425 -640 480 -640 428 -640 480 -640 480 -640 480 -640 426 -640 426 -640 480 -640 480 -640 428 -640 480 -640 480 -640 480 -431 640 -640 427 -500 234 -333 500 -640 423 -640 427 -612 612 -334 500 -500 333 -500 333 -640 480 -427 640 -640 480 -500 375 -612 612 -640 456 -640 480 -640 458 -640 426 -511 640 -640 637 -640 480 -640 429 -640 480 -360 270 -640 479 -640 559 -640 405 -468 640 -640 480 -427 640 -426 640 -640 429 -500 250 -500 277 -500 375 -640 427 -640 427 -640 436 -640 480 -388 500 -640 427 -360 640 -500 375 -640 425 -426 640 -438 640 -640 435 -640 502 -640 511 -480 640 -640 480 -640 480 -480 640 -640 427 -640 480 -333 500 -640 482 -640 484 -640 480 -640 480 -640 427 -640 480 -640 480 -441 640 -640 480 -640 480 -640 532 -640 429 -427 640 -480 640 -640 385 -427 640 -640 425 -640 416 -640 426 -640 426 -640 480 -550 539 -640 384 -640 479 -640 480 -500 334 -640 480 -640 425 -500 375 -640 480 -480 640 -480 640 -500 333 -326 640 -640 480 -480 640 -500 375 -512 640 -640 427 -640 426 -448 336 -640 480 -640 424 -480 640 -500 438 -478 640 -640 428 -480 640 -640 424 -640 480 -640 480 -426 640 -640 429 -640 480 -640 458 -640 429 -640 480 -500 375 -640 480 -427 640 -640 427 -640 639 -640 427 -640 480 -640 427 -424 640 -640 425 -640 424 -480 640 -640 479 -640 425 -640 428 -640 426 -421 640 -640 413 -640 480 -640 480 -480 640 -426 640 -224 500 -428 640 -462 462 -640 399 -481 500 -640 418 -449 600 -640 480 -640 427 -500 375 -640 427 -640 479 -640 480 -480 640 -640 394 -640 496 -501 640 -640 427 -640 480 -480 640 -640 427 -640 427 -591 640 -640 427 -612 612 -500 335 -478 640 -458 640 -493 640 -500 375 -430 500 -640 480 -640 480 -640 480 -640 415 -640 480 -640 480 -640 423 -500 333 -640 399 -500 375 -640 480 -640 480 -640 469 -500 210 -640 480 -500 375 -500 375 -640 408 -640 480 -428 640 -350 350 -640 480 -640 480 -640 480 -394 500 -428 640 -640 480 -640 480 -359 640 -640 426 -428 640 -640 427 -640 426 -640 426 -640 480 -640 453 -640 526 -640 480 -640 424 -484 640 -480 640 -640 426 -640 427 -640 427 -400 285 -429 640 -640 453 -427 640 -478 640 -480 640 -640 512 -640 427 -640 480 -500 339 -640 428 -333 500 -480 640 -640 427 -640 480 -612 612 -640 429 -640 427 -500 406 -640 427 -640 360 -427 640 -640 424 -640 427 -640 427 -427 640 -640 480 -480 640 -640 358 -375 500 -640 480 -480 640 -640 406 -424 351 -500 375 -500 333 -640 480 -640 426 -640 529 -640 427 -640 426 -427 640 -640 480 -640 427 -408 640 -361 640 -500 289 -612 612 -640 428 -480 640 -640 470 -500 333 -480 640 -500 375 -640 427 -640 637 -640 361 -500 375 -640 480 -500 460 -640 425 -426 640 -640 480 -427 640 -480 640 -640 426 -427 640 -640 400 -640 640 -266 412 -640 480 -640 360 -376 500 -427 640 -640 640 -640 426 -333 500 -478 640 -640 425 -427 640 -640 426 -480 640 -500 375 -500 334 -640 480 -500 473 -480 640 -640 427 -640 481 -360 480 -480 640 -640 530 -640 504 -640 499 -500 334 -640 427 -478 640 -526 640 -375 500 -640 480 -640 457 -500 332 -500 333 -640 550 -640 438 -640 446 -468 640 -640 408 -640 427 -427 640 -426 640 -640 480 -640 433 -640 366 -640 480 -500 375 -640 427 -640 480 -640 457 -375 500 -640 480 -500 375 -640 480 -640 640 -612 612 -640 425 -640 427 -427 640 -640 480 -480 640 -640 480 -640 419 -640 480 -640 360 -640 480 -640 480 -612 612 -640 421 -480 640 -640 427 -640 480 -427 640 -640 480 -640 240 -500 334 -427 640 -640 480 -375 500 -480 640 -321 500 -640 480 -426 640 -640 428 -220 176 -640 414 -480 640 -640 427 -640 480 -640 426 -640 427 -364 500 -640 480 -640 427 -427 640 -640 480 -640 429 -640 480 -480 640 -640 425 -640 428 -640 425 -640 427 -612 612 -640 427 -640 480 -640 428 -640 480 -640 480 -480 640 -640 640 -480 640 -640 480 -428 640 -480 640 -500 375 -500 500 -640 480 -640 427 -640 480 -640 458 -640 428 -612 612 -500 332 -640 383 -640 427 -640 426 -464 640 -640 480 -640 427 -640 427 -500 346 -640 480 -427 640 -375 500 -640 467 -470 640 -640 427 -500 458 -640 480 -640 480 -500 375 -426 640 -640 426 -327 640 -640 469 -640 428 -640 427 -640 480 -640 480 -640 423 -612 612 -640 427 -412 640 -298 448 -640 427 -640 480 -480 640 -640 480 -640 480 -640 480 -640 481 -640 426 -500 375 -612 612 -640 479 -640 219 -640 419 -480 640 -640 425 -640 427 -640 425 -500 500 -640 448 -640 427 -480 640 -640 480 -640 473 -640 426 -640 427 -500 284 -640 427 -640 458 -640 480 -640 480 -640 453 -500 375 -640 398 -500 375 -640 480 -640 468 -480 640 -640 464 -402 640 -640 480 -640 480 -640 424 -640 480 -500 375 -640 425 -431 640 -640 480 -640 427 -640 338 -640 427 -640 428 -639 428 -612 612 -427 640 -640 427 -500 333 -640 463 -640 425 -640 427 -640 374 -640 480 -640 480 -480 640 -640 427 -640 480 -640 428 -640 480 -640 480 -500 338 -480 640 -451 500 -640 427 -640 480 -427 640 -640 425 -427 640 -480 640 -480 640 -640 478 -640 480 -640 480 -640 427 -429 640 -425 640 -500 375 -640 294 -640 640 -429 640 -640 427 -426 640 -640 423 -480 640 -640 428 -640 424 -640 480 -640 427 -640 480 -500 375 -500 375 -480 640 -500 335 -427 640 -480 640 -640 383 -500 375 -428 640 -640 478 -494 640 -480 640 -392 591 -640 536 -344 500 -480 640 -640 480 -640 480 -500 500 -612 612 -640 504 -640 426 -640 480 -640 427 -640 423 -640 298 -375 500 -396 640 -640 427 -640 480 -640 480 -640 533 -375 500 -640 480 -640 425 -360 640 -640 425 -640 479 -424 640 -640 427 -457 640 -640 428 -640 467 -640 428 -640 427 -480 640 -640 427 -640 427 -640 480 -480 640 -640 480 -640 427 -500 375 -500 375 -640 480 -640 480 -480 640 -640 480 -426 640 -640 359 -640 352 -640 427 -640 480 -640 480 -500 400 -640 424 -640 480 -500 375 -640 480 -640 426 -500 333 -640 425 -640 480 -383 640 -640 428 -640 480 -640 427 -640 427 -640 425 -612 612 -640 480 -640 480 -640 511 -427 640 -640 359 -640 480 -640 480 -426 640 -640 480 -640 480 -640 427 -427 640 -640 480 -640 426 -500 375 -640 434 -480 640 -640 424 -640 480 -640 423 -640 427 -640 480 -612 612 -640 189 -478 640 -640 555 -640 478 -500 333 -500 375 -254 640 -480 640 -500 375 -429 640 -640 480 -640 360 -480 640 -612 612 -480 640 -640 638 -640 309 -640 480 -640 427 -612 612 -640 414 -640 427 -640 480 -500 332 -500 375 -500 489 -640 480 -480 640 -612 612 -640 425 -480 640 -612 612 -590 640 -640 426 -640 360 -640 480 -640 489 -640 425 -484 640 -640 427 -480 640 -640 480 -640 479 -500 299 -640 417 -640 373 -640 427 -612 612 -500 376 -640 427 -640 480 -640 415 -640 480 -480 640 -480 640 -640 480 -640 480 -640 569 -500 375 -640 480 -426 640 -640 426 -640 480 -640 480 -425 640 -640 640 -426 640 -640 480 -427 640 -428 640 -427 640 -640 425 -640 480 -324 500 -640 480 -640 428 -500 333 -640 426 -640 427 -640 480 -449 640 -640 480 -640 426 -480 640 -428 640 -424 640 -500 375 -640 427 -612 612 -640 480 -427 640 -640 480 -640 359 -640 478 -500 401 -640 480 -500 375 -640 480 -480 640 -480 640 -640 427 -640 480 -640 422 -640 484 -640 428 -640 478 -500 452 -640 366 -425 640 -640 427 -500 333 -640 427 -500 375 -640 426 -640 480 -640 427 -480 640 -500 375 -640 427 -640 426 -640 480 -640 427 -640 425 -640 480 -640 480 -640 426 -500 375 -500 400 -640 429 -640 465 -500 375 -640 480 -640 427 -375 500 -640 514 -640 445 -640 427 -640 480 -640 425 -500 400 -640 427 -640 427 -640 378 -640 481 -640 400 -640 480 -640 480 -640 426 -424 640 -640 360 -500 332 -640 384 -640 427 -500 374 -480 640 -640 480 -640 480 -427 640 -640 426 -375 500 -640 480 -640 427 -640 428 -500 375 -640 432 -480 640 -640 480 -480 640 -640 451 -640 480 -640 480 -615 640 -640 480 -640 480 -640 480 -480 640 -640 427 -640 427 -401 640 -640 480 -640 464 -500 375 -640 427 -640 427 -640 426 -640 480 -640 427 -636 640 -640 401 -640 428 -640 480 -500 333 -640 480 -500 333 -640 480 -564 640 -640 480 -480 640 -640 427 -500 375 -500 359 -640 439 -469 640 -640 360 -640 478 -640 480 -640 480 -640 430 -640 480 -640 480 -640 480 -640 420 -500 375 -426 640 -427 640 -333 500 -480 640 -640 384 -640 426 -640 480 -640 443 -640 631 -640 458 -640 480 -500 331 -480 640 -640 426 -519 640 -640 436 -401 640 -480 640 -640 485 -640 414 -640 427 -640 427 -640 426 -640 480 -640 480 -500 375 -640 325 -494 640 -480 640 -441 640 -640 480 -640 511 -640 428 -640 426 -586 640 -640 427 -640 427 -500 281 -640 480 -500 333 -640 428 -640 640 -640 425 -480 640 -500 333 -629 640 -426 640 -640 427 -544 408 -426 640 -640 427 -640 480 -375 500 -424 640 -428 640 -640 480 -431 640 -640 500 -640 480 -640 224 -374 500 -640 426 -500 343 -640 426 -640 480 -640 427 -480 640 -640 427 -480 640 -480 640 -640 480 -640 366 -444 640 -640 640 -640 480 -640 480 -423 640 -640 615 -640 480 -640 513 -427 640 -375 500 -640 429 -640 480 -500 375 -480 640 -500 371 -640 428 -500 333 -480 640 -612 612 -480 640 -427 640 -480 640 -640 427 -640 524 -640 480 -640 403 -640 429 -500 375 -640 480 -640 427 -640 414 -500 375 -640 480 -640 480 -640 480 -640 480 -400 600 -640 428 -427 640 -427 640 -427 640 -480 640 -500 375 -500 375 -375 500 -622 415 -480 640 -428 640 -640 366 -427 640 -480 640 -500 375 -640 480 -640 480 -500 375 -640 426 -640 425 -640 480 -640 480 -640 427 -640 480 -359 640 -427 640 -500 440 -427 640 -640 425 -427 640 -500 375 -640 480 -640 453 -500 375 -640 400 -640 427 -640 480 -480 640 -640 480 -640 435 -640 478 -480 640 -500 333 -640 480 -640 480 -640 480 -640 366 -640 480 -640 481 -640 427 -640 426 -640 480 -480 640 -500 333 -480 640 -640 480 -640 428 -640 218 -640 427 -500 333 -500 334 -640 427 -640 640 -480 640 -427 640 -640 481 -640 478 -640 426 -640 427 -640 425 -640 427 -333 500 -612 612 -640 480 -640 427 -640 491 -640 478 -640 360 -473 640 -612 612 -640 428 -640 427 -640 480 -640 426 -500 375 -500 375 -640 427 -640 480 -427 640 -640 480 -640 426 -350 500 -500 308 -640 608 -640 503 -640 480 -640 480 -500 375 -640 480 -640 480 -500 375 -416 640 -640 427 -612 612 -389 500 -480 640 -640 426 -640 424 -363 485 -640 549 -640 427 -500 337 -640 479 -640 426 -500 375 -640 427 -640 480 -640 426 -490 640 -640 427 -640 480 -640 427 -640 425 -465 640 -640 480 -500 334 -640 424 -640 426 -640 424 -640 479 -375 500 -640 427 -640 480 -428 640 -500 333 -640 480 -640 480 -640 480 -640 361 -640 425 -500 333 -640 480 -640 459 -640 403 -640 480 -640 480 -363 640 -500 374 -640 425 -640 427 -600 399 -640 427 -500 333 -640 469 -640 427 -640 424 -640 446 -640 427 -640 480 -640 480 -640 427 -640 389 -500 351 -640 425 -604 453 -640 427 -428 640 -500 375 -640 428 -500 375 -640 480 -640 421 -640 360 -401 640 -640 425 -640 426 -612 612 -640 480 -640 480 -375 500 -428 640 -640 426 -640 479 -640 427 -361 640 -427 640 -480 640 -640 480 -640 480 -640 459 -500 375 -640 426 -640 480 -426 640 -640 480 -640 480 -640 424 -640 480 -640 614 -640 480 -640 359 -640 427 -480 640 -640 480 -640 480 -640 427 -500 333 -375 500 -481 640 -640 480 -480 640 -500 375 -640 512 -640 480 -455 552 -640 427 -640 480 -640 427 -640 460 -640 480 -640 426 -640 301 -480 640 -478 640 -427 640 -640 441 -640 480 -612 612 -640 430 -640 480 -640 480 -640 480 -640 427 -640 426 -640 528 -640 320 -480 640 -640 564 -640 640 -640 480 -500 375 -431 640 -500 375 -428 640 -500 375 -354 500 -640 383 -480 640 -640 439 -640 480 -640 627 -640 427 -500 338 -480 640 -640 406 -640 480 -561 640 -640 480 -375 500 -640 480 -427 640 -640 480 -640 480 -640 401 -640 480 -640 435 -640 602 -640 480 -640 640 -640 480 -640 427 -500 489 -640 480 -640 424 -640 480 -640 457 -640 480 -640 480 -640 480 -500 375 -640 426 -640 478 -480 640 -427 640 -640 480 -640 480 -640 480 -640 378 -640 480 -640 480 -480 640 -427 640 -640 451 -640 631 -500 338 -640 480 -640 447 -500 333 -640 425 -640 426 -640 480 -428 640 -640 480 -640 479 -426 640 -640 427 -500 415 -438 640 -640 480 -640 468 -640 426 -640 480 -640 432 -640 425 -640 480 -428 640 -640 427 -640 426 -270 500 -640 480 -478 640 -640 467 -640 426 -500 372 -640 426 -480 640 -409 500 -640 480 -640 481 -640 480 -640 425 -640 427 -640 480 -640 480 -612 612 -493 640 -640 416 -640 480 -640 427 -640 427 -640 480 -427 640 -500 375 -640 426 -640 480 -640 480 -640 427 -480 640 -640 640 -640 425 -640 480 -640 480 -480 640 -640 427 -480 640 -480 640 -640 427 -415 640 -640 427 -640 427 -640 427 -640 480 -500 375 -640 425 -640 428 -480 640 -640 427 -640 424 -640 491 -640 424 -333 500 -640 480 -640 425 -640 427 -640 427 -500 375 -640 424 -640 425 -640 427 -640 640 -640 480 -500 375 -425 640 -640 480 -640 425 -500 305 -500 375 -640 480 -640 480 -320 240 -640 387 -640 480 -640 480 -640 480 -612 612 -640 480 -500 375 -272 500 -640 426 -640 512 -640 512 -640 480 -640 428 -480 640 -640 458 -640 360 -640 427 -640 480 -640 426 -640 427 -640 480 -640 427 -500 375 -500 332 -478 640 -640 298 -425 640 -481 640 -640 333 -640 480 -640 480 -640 244 -500 281 -640 376 -640 640 -640 480 -612 612 -640 426 -500 323 -508 640 -427 640 -480 640 -640 427 -640 427 -424 640 -500 334 -640 425 -640 476 -612 612 -433 640 -480 640 -640 480 -640 406 -568 640 -640 427 -346 500 -500 332 -500 333 -640 493 -473 640 -640 480 -640 513 -640 425 -640 427 -640 424 -480 640 -640 428 -640 426 -640 480 -640 427 -640 424 -640 428 -640 426 -640 480 -640 480 -640 427 -500 375 -639 640 -512 640 -612 612 -640 480 -640 480 -480 640 -429 640 -640 546 -640 480 -480 640 -640 424 -424 640 -332 500 -640 459 -640 480 -500 333 -640 425 -427 640 -640 427 -640 480 -640 427 -640 480 -640 480 -472 322 -640 424 -478 640 -640 431 -640 323 -640 427 -500 375 -480 640 -640 401 -480 640 -333 500 -640 480 -633 640 -427 640 -640 640 -640 480 -640 427 -500 411 -640 427 -500 353 -640 480 -640 480 -359 640 -640 427 -426 640 -482 640 -640 427 -427 640 -375 500 -500 375 -640 480 -427 640 -640 428 -640 481 -640 480 -640 427 -640 426 -500 375 -640 427 -428 640 -640 480 -640 480 -375 500 -640 427 -640 408 -500 400 -640 480 -640 449 -375 500 -453 640 -424 640 -640 427 -640 428 -640 480 -640 480 -640 480 -640 426 -640 425 -427 640 -640 459 -640 424 -612 612 -640 480 -640 427 -640 427 -640 427 -640 480 -640 427 -640 457 -640 480 -500 428 -429 640 -640 438 -640 427 -640 480 -426 640 -500 375 -640 384 -500 333 -500 281 -640 426 -640 431 -426 640 -500 375 -481 640 -640 480 -640 480 -640 480 -640 456 -426 640 -640 480 -640 396 -450 338 -495 640 -640 435 -500 408 -404 640 -640 427 -500 375 -476 640 -640 480 -640 427 -640 480 -640 480 -640 393 -640 480 -640 480 -640 480 -375 500 -495 533 -480 640 -480 640 -500 295 -480 640 -612 612 -640 478 -640 426 -612 612 -426 640 -640 480 -640 480 -640 427 -640 428 -640 486 -640 426 -640 481 -640 427 -640 426 -640 427 -640 428 -600 400 -640 409 -640 424 -640 426 -640 367 -640 480 -640 426 -612 612 -480 640 -640 480 -480 640 -640 480 -640 427 -640 427 -426 640 -640 427 -480 640 -640 426 -426 640 -640 427 -640 426 -500 375 -333 500 -612 612 -640 424 -640 480 -640 509 -640 427 -640 427 -500 239 -640 426 -640 427 -379 446 -640 427 -640 426 -640 478 -640 480 -427 640 -640 480 -627 640 -640 480 -500 375 -427 640 -640 478 -640 427 -612 612 -640 640 -500 356 -480 640 -640 427 -514 640 -640 458 -500 335 -640 480 -640 480 -640 516 -640 428 -640 427 -512 640 -333 500 -500 257 -640 360 -640 480 -640 480 -640 480 -375 500 -640 480 -427 640 -500 375 -640 427 -640 480 -480 640 -640 504 -480 640 -640 480 -427 640 -427 640 -640 480 -500 375 -500 333 -640 426 -640 257 -640 433 -500 333 -640 427 -640 360 -640 426 -640 427 -459 640 -640 296 -640 419 -360 640 -640 480 -480 640 -424 640 -375 500 -500 375 -428 640 -640 427 -640 428 -612 612 -480 640 -500 281 -640 349 -640 378 -640 480 -640 439 -427 640 -600 600 -480 640 -500 333 -427 640 -640 427 -640 427 -640 427 -640 453 -640 427 -640 427 -640 480 -640 427 -500 375 -640 480 -640 427 -640 425 -640 389 -640 480 -480 640 -640 480 -640 480 -640 480 -640 427 -640 516 -640 424 -640 480 -640 428 -480 640 -612 612 -640 477 -500 375 -480 640 -640 428 -480 640 -640 427 -375 500 -640 360 -640 480 -640 426 -640 427 -640 425 -640 428 -640 480 -640 426 -500 408 -640 428 -640 480 -425 640 -500 471 -480 640 -640 480 -480 640 -640 480 -640 480 -640 427 -478 640 -640 427 -640 513 -500 365 -640 508 -480 640 -640 480 -425 640 -640 480 -640 640 -640 425 -520 520 -640 424 -640 480 -640 483 -640 424 -480 640 -640 480 -612 612 -640 427 -640 427 -640 468 -640 427 -500 332 -640 480 -640 427 -640 480 -480 640 -640 480 -640 480 -500 422 -640 424 -448 299 -640 480 -480 640 -480 640 -375 500 -500 375 -640 480 -640 427 -640 427 -640 427 -500 332 -640 427 -640 428 -500 375 -640 427 -500 375 -640 478 -640 429 -375 500 -640 640 -427 640 -640 518 -640 428 -640 480 -480 640 -640 480 -480 640 -640 286 -640 466 -424 640 -640 480 -640 480 -424 640 -640 480 -500 332 -640 393 -640 427 -640 394 -640 471 -500 375 -500 390 -500 332 -640 640 -640 318 -640 427 -640 398 -480 640 -640 500 -425 640 -640 354 -640 480 -640 428 -640 478 -427 640 -500 492 -640 471 -640 427 -640 396 -640 427 -640 480 -612 612 -640 480 -500 375 -500 333 -640 427 -480 640 -640 426 -640 425 -640 427 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -480 640 -368 500 -375 500 -375 500 -640 428 -640 427 -640 427 -375 500 -640 480 -640 480 -640 590 -640 425 -482 640 -480 640 -640 424 -375 500 -640 360 -640 480 -480 640 -500 375 -520 640 -640 487 -425 640 -480 640 -640 463 -500 333 -500 375 -374 500 -482 500 -500 500 -640 441 -612 612 -640 480 -640 479 -640 323 -500 334 -526 640 -640 480 -427 640 -640 480 -640 427 -640 480 -640 424 -640 480 -640 444 -426 640 -640 574 -640 293 -640 480 -640 639 -640 427 -500 375 -640 427 -480 640 -640 360 -640 424 -640 480 -640 480 -640 427 -500 375 -480 640 -640 413 -640 428 -640 480 -640 428 -480 640 -640 480 -640 480 -640 428 -640 480 -427 640 -640 427 -480 640 -427 640 -478 640 -427 640 -612 612 -428 640 -640 480 -500 375 -480 640 -640 480 -640 480 -480 640 -640 480 -640 480 -630 379 -425 640 -640 439 -640 480 -480 640 -640 401 -500 500 -640 427 -428 640 -333 500 -640 463 -640 425 -640 433 -640 480 -640 480 -427 640 -428 640 -640 428 -425 640 -640 480 -423 640 -640 426 -500 333 -640 427 -500 375 -640 457 -480 640 -640 427 -426 640 -513 640 -640 426 -500 375 -640 397 -640 360 -426 640 -640 360 -640 427 -640 426 -640 422 -427 640 -640 480 -480 640 -640 478 -640 480 -640 426 -428 640 -640 480 -640 426 -477 640 -640 480 -640 427 -640 233 -640 426 -375 500 -500 333 -640 480 -640 426 -500 334 -500 375 -400 302 -500 332 -375 500 -640 284 -640 433 -500 332 -640 362 -640 480 -640 427 -640 480 -500 375 -640 480 -612 612 -426 640 -640 320 -640 424 -427 640 -640 480 -640 360 -427 640 -426 640 -640 426 -640 424 -640 427 -480 640 -640 480 -550 376 -640 480 -640 427 -640 428 -640 639 -640 640 -640 426 -480 640 -427 640 -640 428 -640 428 -640 480 -427 640 -480 640 -363 544 -640 480 -267 188 -500 375 -500 331 -500 334 -640 480 -640 428 -500 362 -476 640 -640 430 -640 480 -640 480 -640 433 -640 343 -406 500 -640 426 -500 375 -640 426 -640 480 -640 449 -320 240 -640 427 -500 375 -640 324 -640 428 -640 480 -500 452 -427 640 -500 500 -500 333 -640 480 -640 233 -640 427 -640 429 -417 640 -480 640 -450 381 -640 427 -640 421 -500 333 -640 640 -532 640 -456 640 -640 360 -640 480 -640 425 -640 480 -640 480 -640 606 -640 426 -640 426 -640 429 -640 428 -640 480 -480 640 -427 640 -640 480 -337 640 -640 426 -640 470 -640 427 -431 640 -640 640 -640 467 -470 640 -640 640 -480 640 -410 339 -427 640 -640 480 -640 447 -640 428 -480 640 -640 174 -612 612 -640 480 -640 360 -612 612 -640 428 -480 640 -375 500 -640 480 -640 424 -500 375 -600 400 -640 480 -640 426 -480 640 -640 281 -640 480 -500 375 -640 480 -640 400 -640 425 -640 480 -640 427 -640 429 -427 640 -640 446 -640 359 -612 612 -640 426 -427 640 -640 457 -640 427 -480 640 -426 640 -640 480 -576 396 -640 480 -640 427 -500 332 -640 393 -500 370 -640 426 -640 480 -640 427 -640 458 -640 480 -426 640 -500 314 -500 400 -640 426 -640 480 -640 427 -640 480 -600 410 -480 640 -640 480 -640 480 -640 426 -640 480 -500 375 -640 526 -640 427 -425 640 -640 482 -640 448 -640 480 -640 427 -640 480 -640 427 -640 426 -640 480 -500 357 -640 480 -640 360 -500 375 -640 480 -640 480 -640 364 -427 640 -640 427 -334 500 -640 427 -640 480 -500 375 -480 640 -478 640 -640 427 -640 480 -500 334 -640 480 -480 640 -640 425 -640 480 -640 425 -640 438 -640 425 -640 427 -640 480 -640 480 -375 500 -640 510 -450 600 -640 427 -375 500 -640 480 -480 640 -640 427 -640 480 -640 480 -248 640 -480 640 -640 427 -640 431 -640 480 -640 427 -416 640 -640 452 -640 640 -640 427 -640 480 -640 480 -478 640 -640 480 -372 500 -640 428 -640 427 -640 480 -640 480 -640 478 -640 640 -612 612 -500 375 -640 480 -640 478 -640 640 -640 473 -480 640 -640 427 -500 375 -640 480 -640 427 -640 640 -640 471 -640 480 -640 480 -480 640 -640 480 -640 486 -640 480 -640 391 -500 375 -426 640 -500 378 -640 428 -640 480 -640 480 -640 427 -480 640 -640 480 -640 456 -640 428 -500 333 -640 557 -640 457 -426 640 -640 480 -640 427 -640 476 -640 640 -640 491 -500 384 -640 403 -640 640 -640 439 -428 640 -640 480 -361 640 -612 612 -640 480 -481 640 -640 480 -565 640 -640 360 -640 426 -640 428 -640 429 -403 640 -640 480 -640 480 -640 427 -640 428 -640 425 -640 380 -640 426 -480 640 -640 480 -640 426 -640 480 -640 429 -548 640 -640 431 -500 375 -500 375 -640 474 -500 333 -480 640 -640 599 -480 640 -427 640 -640 428 -500 400 -500 375 -426 640 -427 640 -640 331 -480 640 -640 425 -640 480 -640 427 -500 333 -640 286 -500 333 -640 428 -375 500 -640 480 -417 640 -640 427 -640 480 -427 640 -640 480 -427 640 -640 426 -640 490 -640 427 -640 480 -336 448 -640 361 -640 360 -418 640 -480 640 -640 426 -500 375 -640 426 -305 229 -600 640 -426 640 -640 480 -640 480 -640 414 -640 427 -500 375 -500 446 -314 500 -640 480 -640 480 -640 480 -640 622 -480 640 -418 640 -428 640 -640 427 -500 352 -640 480 -640 480 -640 480 -640 359 -640 427 -640 566 -640 428 -640 426 -640 426 -640 425 -427 640 -612 612 -640 566 -640 427 -640 480 -640 480 -640 428 -480 640 -640 480 -640 429 -640 480 -429 640 -612 612 -640 424 -640 371 -495 640 -427 640 -640 640 -640 282 -640 427 -640 426 -500 335 -640 480 -480 640 -480 640 -500 376 -640 480 -425 640 -640 427 -500 333 -640 640 -332 500 -640 427 -640 527 -640 480 -640 426 -640 480 -640 419 -480 640 -640 238 -480 640 -640 480 -640 480 -640 480 -640 425 -640 427 -500 375 -425 640 -640 480 -478 640 -640 488 -640 480 -640 461 -374 500 -640 427 -640 427 -500 333 -612 612 -640 428 -426 640 -640 429 -640 427 -361 640 -428 640 -640 427 -640 427 -640 436 -640 293 -640 418 -640 480 -640 428 -640 480 -612 612 -612 612 -640 480 -426 640 -640 427 -500 375 -480 640 -640 640 -640 480 -427 640 -640 429 -640 427 -640 474 -427 640 -640 427 -640 426 -427 640 -414 640 -478 640 -640 480 -480 640 -640 427 -443 640 -640 480 -640 426 -500 334 -640 427 -640 480 -574 640 -480 640 -512 640 -640 480 -640 480 -640 464 -500 375 -640 428 -375 500 -640 480 -375 500 -640 480 -640 480 -640 434 -480 640 -612 612 -640 480 -640 426 -366 500 -480 640 -500 375 -640 425 -500 333 -640 479 -640 428 -640 480 -640 480 -640 360 -640 480 -640 427 -480 640 -640 480 -640 428 -640 427 -640 457 -481 640 -640 492 -480 640 -500 333 -597 455 -480 640 -354 500 -493 640 -640 480 -640 359 -640 480 -500 375 -640 480 -640 427 -500 375 -428 640 -640 360 -480 640 -640 427 -480 640 -640 480 -640 413 -427 640 -640 414 -640 384 -426 640 -640 389 -425 640 -640 427 -431 640 -640 427 -427 640 -640 427 -640 409 -426 640 -530 640 -640 390 -640 425 -640 427 -640 478 -415 324 -640 434 -427 640 -480 640 -426 640 -536 640 -640 427 -640 395 -640 427 -374 500 -640 426 -640 427 -176 144 -640 640 -640 354 -640 480 -500 343 -427 640 -640 426 -612 612 -640 425 -640 480 -375 500 -427 640 -640 480 -640 479 -640 360 -640 425 -640 425 -500 375 -640 480 -640 426 -640 427 -640 426 -480 640 -480 640 -640 480 -480 640 -640 428 -612 612 -425 640 -640 427 -640 359 -640 480 -640 431 -500 311 -640 480 -640 405 -428 640 -486 640 -640 480 -640 426 -375 500 -640 480 -640 427 -640 426 -427 640 -640 264 -500 375 -640 427 -640 425 -500 332 -640 427 -640 449 -640 399 -640 480 -640 480 -500 322 -639 640 -640 427 -640 480 -640 427 -480 640 -640 480 -640 426 -640 480 -640 360 -640 512 -640 424 -480 640 -640 425 -640 431 -480 640 -500 375 -500 334 -571 640 -480 640 -640 480 -612 612 -427 640 -359 640 -500 336 -640 427 -334 500 -500 375 -360 270 -500 375 -640 427 -640 457 -640 480 -480 640 -500 375 -612 612 -427 640 -388 640 -500 333 -640 480 -500 375 -640 438 -480 640 -480 640 -640 427 -640 480 -640 480 -480 640 -500 333 -640 479 -640 429 -500 375 -640 412 -640 480 -640 421 -640 480 -640 480 -480 640 -640 480 -640 480 -640 359 -640 366 -640 480 -427 640 -640 427 -640 426 -640 480 -480 640 -640 427 -640 378 -640 480 -640 480 -640 480 -640 428 -640 480 -480 640 -434 640 -640 413 -640 480 -640 480 -373 640 -640 428 -640 433 -500 375 -427 640 -640 480 -480 640 -640 503 -640 427 -640 480 -500 333 -640 429 -640 482 -460 640 -512 640 -612 612 -640 426 -640 480 -480 640 -640 278 -640 524 -640 479 -640 430 -640 480 -640 439 -375 500 -426 640 -640 428 -640 427 -480 640 -640 480 -640 480 -640 426 -640 512 -640 427 -640 480 -640 427 -640 424 -640 427 -640 427 -500 375 -640 480 -545 640 -637 640 -427 640 -427 640 -640 480 -426 640 -640 480 -408 640 -500 375 -640 480 -640 480 -480 640 -640 428 -640 640 -428 640 -640 480 -640 427 -640 480 -640 427 -640 483 -478 640 -640 480 -500 375 -612 612 -640 424 -436 640 -640 428 -640 480 -640 427 -612 612 -480 640 -383 640 -640 427 -500 334 -640 449 -640 427 -640 480 -640 427 -500 375 -500 375 -640 480 -640 478 -640 480 -427 640 -640 428 -640 480 -425 640 -640 480 -640 425 -612 612 -480 640 -640 360 -640 403 -427 640 -640 427 -612 612 -640 425 -640 480 -500 418 -640 480 -640 480 -640 351 -640 480 -640 480 -480 640 -500 375 -375 500 -640 480 -469 640 -640 425 -640 480 -640 623 -640 480 -640 427 -640 512 -480 640 -640 445 -359 239 -640 523 -640 427 -334 500 -640 425 -500 375 -640 427 -333 500 -640 359 -478 640 -500 375 -640 528 -640 426 -500 333 -640 480 -640 575 -480 640 -640 429 -640 580 -640 640 -640 480 -640 427 -640 480 -640 475 -640 480 -500 375 -640 480 -480 640 -640 426 -640 424 -640 480 -427 640 -500 362 -478 640 -480 640 -640 480 -640 480 -478 640 -640 414 -640 427 -500 343 -500 297 -640 428 -500 348 -640 480 -220 240 -640 425 -423 640 -640 425 -640 408 -640 411 -640 427 -640 437 -640 360 -640 385 -640 464 -640 480 -524 640 -640 480 -640 427 -500 333 -640 427 -640 431 -640 480 -640 427 -640 480 -640 480 -427 640 -640 438 -640 427 -640 480 -640 480 -480 640 -640 469 -640 428 -640 427 -640 428 -640 428 -426 639 -500 333 -640 480 -480 336 -334 500 -454 640 -500 375 -506 640 -640 640 -640 616 -640 480 -427 640 -640 468 -640 428 -640 423 -640 427 -427 640 -428 640 -400 500 -640 480 -640 427 -640 384 -640 348 -640 619 -357 500 -640 480 -640 428 -640 480 -500 405 -640 427 -441 500 -480 640 -640 480 -488 640 -500 375 -640 427 -432 324 -640 480 -640 503 -499 640 -640 480 -640 424 -612 612 -640 425 -640 427 -427 640 -640 435 -375 500 -495 640 -480 640 -424 640 -640 480 -600 400 -640 428 -640 427 -640 480 -640 480 -640 427 -417 640 -640 388 -640 425 -375 500 -481 640 -640 480 -640 427 -427 640 -500 332 -427 640 -640 504 -640 640 -500 375 -640 480 -640 427 -640 414 -480 640 -640 427 -640 480 -612 612 -640 487 -640 427 -640 429 -640 427 -400 640 -640 480 -640 480 -500 375 -478 640 -640 360 -640 418 -412 456 -640 425 -640 480 -640 427 -640 594 -640 409 -480 640 -640 428 -640 428 -640 480 -612 612 -640 427 -640 453 -640 480 -640 403 -500 400 -640 427 -640 480 -640 480 -640 480 -480 640 -500 375 -427 640 -500 375 -500 380 -612 612 -640 427 -640 400 -427 640 -640 426 -640 361 -640 433 -500 492 -640 427 -640 428 -640 427 -640 427 -640 424 -640 480 -640 457 -500 400 -640 425 -500 333 -640 628 -427 640 -640 427 -640 480 -640 427 -500 375 -640 427 -480 640 -640 426 -448 640 -640 480 -480 640 -640 480 -480 640 -640 480 -329 640 -480 640 -640 513 -640 457 -480 640 -640 360 -640 489 -640 466 -500 375 -640 480 -640 425 -640 427 -640 480 -640 480 -640 427 -427 640 -445 500 -640 549 -640 436 -640 554 -640 480 -480 640 -427 640 -389 640 -640 426 -428 640 -640 427 -640 454 -480 640 -640 640 -480 640 -640 480 -640 583 -640 425 -640 396 -500 375 -500 170 -640 427 -640 424 -640 428 -480 640 -640 480 -500 375 -500 313 -640 426 -640 457 -640 424 -640 427 -480 640 -640 427 -240 180 -640 480 -640 480 -640 427 -640 427 -375 500 -640 480 -329 500 -500 375 -640 478 -640 361 -480 640 -640 427 -640 480 -640 480 -500 375 -640 428 -640 427 -640 487 -640 480 -480 640 -640 427 -640 427 -640 480 -640 480 -500 333 -640 480 -425 640 -640 480 -640 467 -640 427 -640 427 -640 425 -640 480 -640 480 -640 426 -640 425 -480 640 -375 500 -640 373 -640 425 -500 375 -640 480 -500 423 -480 640 -640 426 -612 612 -640 480 -612 612 -375 500 -640 427 -640 640 -640 480 -500 375 -500 375 -375 500 -500 375 -640 454 -640 360 -478 640 -640 429 -575 640 -640 425 -640 424 -640 428 -562 640 -640 379 -240 320 -640 445 -422 640 -512 640 -640 426 -640 480 -429 640 -640 427 -480 640 -640 427 -640 425 -480 640 -480 640 -640 360 -640 427 -640 427 -640 293 -427 640 -640 427 -500 375 -640 426 -640 480 -455 500 -640 428 -640 301 -640 388 -640 427 -425 640 -500 375 -640 480 -640 480 -640 479 -480 640 -427 640 -640 448 -640 482 -453 640 -640 480 -471 640 -480 640 -640 480 -612 612 -640 426 -480 640 -480 640 -640 480 -640 429 -640 480 -640 393 -480 640 -640 429 -480 640 -427 640 -596 640 -640 428 -640 427 -427 640 -640 426 -333 500 -640 425 -640 428 -640 427 -640 480 -640 427 -640 480 -612 612 -640 480 -426 640 -426 640 -640 457 -500 352 -640 427 -612 612 -500 375 -640 428 -480 640 -640 360 -640 424 -640 427 -640 257 -480 640 -640 425 -640 427 -640 426 -500 333 -480 640 -640 480 -640 598 -640 480 -640 361 -480 640 -500 334 -640 453 -640 480 -640 428 -500 375 -640 243 -640 480 -640 427 -640 429 -500 375 -640 425 -640 427 -480 640 -640 428 -640 484 -640 480 -640 480 -640 480 -640 480 -427 640 -640 259 -493 640 -640 443 -640 427 -640 428 -640 480 -500 320 -640 480 -640 427 -500 243 -640 427 -640 427 -640 480 -640 428 -640 427 -500 375 -478 640 -480 640 -640 427 -640 427 -640 427 -427 640 -640 426 -640 480 -640 426 -640 480 -500 333 -500 375 -628 640 -485 640 -427 640 -451 640 -640 427 -612 612 -500 333 -631 640 -640 457 -480 640 -640 427 -640 427 -640 426 -500 400 -625 417 -375 500 -640 480 -480 640 -640 426 -640 430 -640 425 -640 480 -640 413 -640 512 -500 375 -478 640 -640 425 -640 469 -640 427 -640 480 -480 640 -480 640 -639 640 -640 427 -480 640 -375 500 -640 534 -640 495 -500 325 -640 427 -480 640 -500 375 -640 640 -640 427 -640 429 -640 389 -444 265 -640 480 -612 612 -640 480 -289 640 -480 640 -640 480 -640 435 -640 480 -640 530 -640 424 -640 424 -359 640 -640 427 -427 640 -426 640 -640 483 -640 427 -640 480 -640 429 -640 424 -500 375 -480 640 -640 427 -640 480 -640 480 -480 640 -427 640 -640 480 -640 426 -640 429 -640 480 -640 480 -640 428 -640 424 -640 480 -500 375 -500 375 -500 334 -473 640 -640 439 -640 426 -640 480 -333 500 -640 480 -555 640 -500 375 -640 427 -375 500 -478 500 -640 397 -640 480 -640 425 -640 427 -640 640 -640 425 -640 480 -425 640 -640 480 -640 480 -612 612 -480 640 -640 480 -640 428 -640 480 -640 427 -640 419 -439 640 -640 523 -640 370 -640 480 -435 640 -640 427 -375 500 -640 640 -480 640 -640 425 -375 500 -640 480 -640 480 -640 480 -480 640 -500 375 -640 480 -500 400 -640 480 -484 640 -640 423 -640 480 -640 427 -640 480 -640 481 -480 640 -427 640 -500 375 -640 426 -427 640 -612 612 -640 480 -640 640 -480 640 -480 640 -640 425 -500 392 -640 480 -640 427 -640 360 -640 428 -640 453 -480 640 -612 612 -640 480 -500 332 -640 366 -480 640 -480 640 -500 375 -640 480 -640 427 -480 640 -640 480 -480 640 -500 500 -640 427 -640 640 -640 547 -640 480 -640 480 -640 480 -640 426 -640 640 -640 428 -640 428 -640 499 -640 425 -640 480 -425 640 -500 356 -500 386 -640 351 -640 551 -640 423 -640 392 -640 427 -640 427 -640 425 -419 640 -640 426 -375 500 -612 612 -427 640 -640 426 -426 640 -427 640 -640 414 -640 426 -640 430 -505 640 -640 480 -640 425 -640 522 -640 427 -500 375 -640 480 -480 640 -640 424 -640 577 -640 434 -640 427 -640 428 -640 480 -612 612 -640 423 -500 333 -640 426 -427 640 -500 375 -640 436 -640 480 -640 487 -640 427 -480 640 -640 427 -640 480 -500 375 -640 427 -640 426 -612 612 -500 429 -426 640 -640 480 -640 480 -640 480 -640 428 -640 478 -640 427 -640 478 -428 640 -414 640 -600 402 -640 434 -640 480 -640 480 -640 370 -640 483 -640 480 -640 480 -640 427 -506 640 -500 375 -512 640 -426 640 -640 434 -640 281 -640 480 -640 360 -500 240 -640 386 -453 640 -640 425 -640 427 -359 640 -293 409 -500 375 -427 640 -500 375 -427 640 -424 640 -500 332 -640 360 -640 480 -640 427 -640 443 -640 480 -500 375 -427 640 -640 480 -513 640 -640 480 -640 429 -375 500 -595 640 -500 281 -500 375 -431 640 -480 640 -640 480 -640 533 -427 640 -419 640 -640 426 -640 480 -640 513 -640 440 -640 427 -640 428 -640 480 -500 333 -640 424 -480 640 -612 612 -500 375 -640 480 -640 425 -640 640 -640 640 -342 500 -640 424 -640 426 -640 428 -640 428 -480 640 -640 428 -500 375 -640 640 -640 480 -427 640 -640 426 -375 500 -426 640 -640 480 -640 640 -640 468 -480 640 -640 480 -640 480 -500 375 -640 480 -481 640 -640 480 -640 427 -640 427 -640 640 -640 428 -640 601 -640 443 -500 333 -427 640 -640 480 -612 612 -640 594 -375 500 -427 640 -640 478 -640 480 -640 427 -640 480 -640 428 -428 640 -640 457 -640 480 -375 500 -640 427 -428 640 -640 423 -475 435 -640 425 -640 322 -427 640 -529 640 -478 640 -612 612 -428 640 -640 480 -640 480 -640 480 -640 480 -500 375 -333 500 -480 640 -640 478 -240 320 -640 427 -640 427 -426 640 -453 640 -640 480 -375 500 -640 480 -640 480 -495 640 -427 640 -640 427 -500 375 -640 569 -640 427 -640 426 -640 425 -428 640 -640 427 -428 640 -640 360 -640 427 -612 612 -480 640 -500 354 -640 428 -640 426 -500 488 -640 480 -640 480 -640 480 -480 640 -640 360 -640 480 -500 375 -640 480 -640 424 -640 524 -640 480 -427 640 -640 427 -640 424 -296 640 -640 480 -500 375 -640 425 -500 373 -640 427 -338 640 -432 373 -612 612 -640 446 -640 331 -640 426 -640 480 -640 487 -506 640 -640 480 -640 425 -640 427 -640 497 -427 640 -640 476 -640 426 -640 480 -640 426 -640 426 -640 428 -640 492 -640 480 -480 640 -426 640 -480 640 -640 428 -640 478 -529 640 -640 480 -640 428 -640 480 -640 480 -640 428 -427 640 -640 619 -640 426 -480 640 -640 480 -640 396 -640 424 -640 480 -640 427 -640 427 -640 427 -640 426 -640 426 -478 640 -500 375 -640 480 -640 427 -640 391 -480 640 -640 480 -640 427 -443 640 -612 612 -640 529 -640 480 -640 480 -612 612 -640 480 -640 480 -640 308 -428 640 -640 427 -640 480 -640 480 -426 640 -640 455 -478 640 -375 500 -426 640 -427 640 -640 360 -640 480 -640 425 -640 480 -640 423 -640 427 -640 427 -320 240 -480 640 -640 423 -426 640 -640 520 -323 500 -480 640 -640 426 -612 612 -500 374 -640 427 -640 427 -640 360 -640 425 -640 480 -640 425 -640 426 -640 480 -500 375 -640 484 -426 640 -500 375 -640 480 -640 427 -640 430 -640 577 -428 640 -640 480 -425 640 -640 480 -640 428 -427 640 -640 448 -640 414 -640 480 -612 612 -518 640 -640 640 -640 481 -640 350 -640 480 -640 494 -424 640 -500 384 -424 640 -640 480 -500 216 -640 480 -500 375 -640 476 -640 480 -640 428 -640 480 -500 333 -427 640 -270 360 -640 480 -640 339 -640 426 -480 640 -612 612 -500 375 -500 375 -640 636 -640 480 -640 480 -480 640 -640 351 -640 480 -640 427 -640 480 -640 426 -480 640 -383 640 -640 480 -612 612 -640 428 -640 426 -640 511 -640 480 -640 480 -640 480 -427 640 -481 640 -424 640 -428 640 -640 476 -640 480 -375 500 -640 480 -640 459 -458 640 -640 398 -500 375 -478 640 -500 375 -500 500 -640 439 -640 426 -640 480 -640 427 -500 333 -640 366 -640 480 -640 427 -425 640 -640 640 -640 441 -640 427 -612 612 -566 640 -640 479 -640 427 -612 612 -493 640 -480 640 -500 499 -640 543 -640 427 -640 480 -640 427 -640 426 -335 500 -640 425 -640 420 -427 640 -612 612 -640 425 -640 428 -640 427 -501 640 -427 640 -640 480 -640 428 -640 427 -640 429 -427 640 -500 334 -500 332 -640 480 -640 426 -640 512 -640 491 -640 480 -640 401 -640 480 -640 428 -640 480 -424 640 -640 425 -640 426 -427 640 -640 480 -480 640 -640 640 -428 640 -640 429 -375 500 -640 446 -640 480 -427 640 -640 503 -640 345 -612 612 -640 426 -480 640 -640 374 -640 480 -480 640 -640 425 -640 480 -408 640 -640 427 -640 480 -640 433 -427 640 -564 640 -500 375 -500 333 -640 360 -640 639 -640 480 -500 375 -640 426 -640 425 -640 437 -640 427 -640 480 -640 480 -640 480 -500 375 -640 483 -640 424 -640 436 -500 375 -428 640 -500 375 -480 640 -427 640 -424 640 -640 360 -640 480 -480 640 -480 640 -640 480 -640 285 -500 375 -640 366 -640 429 -640 481 -640 480 -427 640 -640 480 -640 427 -640 424 -640 424 -640 427 -480 640 -604 453 -473 640 -640 480 -500 285 -480 640 -640 418 -640 425 -640 480 -529 640 -534 640 -640 339 -500 375 -640 416 -500 375 -640 480 -640 480 -640 425 -640 480 -640 480 -640 457 -640 424 -500 375 -480 640 -640 427 -500 333 -640 480 -640 480 -640 426 -640 457 -640 428 -640 424 -640 427 -640 421 -500 375 -612 612 -640 427 -640 427 -375 500 -640 435 -640 366 -495 640 -612 612 -512 640 -640 427 -500 375 -640 428 -640 480 -640 479 -500 375 -640 360 -334 500 -500 333 -640 471 -612 612 -640 425 -429 640 -427 640 -640 640 -427 640 -640 427 -640 428 -480 640 -640 428 -640 427 -640 316 -457 640 -320 240 -500 375 -612 612 -640 427 -500 393 -640 480 -640 480 -640 427 -640 480 -640 640 -640 441 -484 500 -640 474 -640 427 -640 427 -640 428 -640 458 -640 360 -468 640 -427 640 -640 425 -640 480 -500 333 -640 427 -640 427 -480 640 -640 480 -640 428 -640 428 -640 428 -640 480 -640 286 -480 640 -640 492 -640 480 -640 480 -640 425 -640 427 -270 360 -457 480 -640 480 -640 480 -500 375 -640 430 -640 480 -640 480 -500 333 -640 426 -500 334 -640 428 -640 427 -589 640 -640 426 -640 299 -427 640 -640 387 -640 427 -426 640 -640 427 -640 480 -640 426 -640 480 -640 406 -511 640 -640 448 -428 640 -500 377 -640 426 -480 640 -375 500 -640 427 -640 427 -640 480 -640 480 -640 427 -640 480 -500 513 -480 640 -427 640 -640 359 -640 395 -480 640 -426 640 -640 427 -359 640 -640 478 -640 406 -640 429 -640 480 -640 426 -640 427 -521 640 -400 400 -640 428 -480 640 -640 480 -640 512 -426 640 -478 640 -433 640 -429 640 -500 375 -640 426 -640 422 -640 480 -400 300 -640 426 -500 500 -640 359 -640 427 -640 478 -640 480 -640 427 -640 427 -500 375 -640 427 -500 375 -500 375 -640 358 -458 640 -480 640 -640 426 -640 480 -640 426 -401 640 -480 640 -640 480 -640 480 -500 375 -640 424 -640 480 -640 520 -640 360 -500 375 -640 427 -426 640 -640 427 -640 281 -500 375 -428 640 -640 426 -640 427 -640 480 -640 426 -640 525 -640 559 -640 458 -640 480 -480 640 -640 535 -640 480 -640 480 -640 493 -640 426 -640 427 -480 640 -375 500 -640 480 -640 480 -640 427 -480 640 -640 576 -640 425 -640 480 -427 640 -640 360 -640 433 -640 478 -426 640 -640 433 -640 406 -640 480 -640 427 -640 480 -640 480 -640 427 -500 375 -323 500 -640 427 -640 472 -375 500 -500 343 -640 483 -640 384 -424 640 -640 425 -424 640 -455 190 -640 427 -500 332 -480 640 -427 640 -640 424 -640 427 -640 480 -334 500 -427 640 -427 640 -426 640 -640 478 -640 425 -640 360 -640 427 -640 640 -640 360 -640 427 -640 427 -375 500 -640 471 -480 640 -640 275 -640 480 -640 480 -640 492 -640 376 -640 480 -640 426 -427 640 -640 480 -640 432 -640 469 -640 480 -640 427 -427 640 -375 500 -640 640 -640 428 -375 500 -596 640 -500 375 -500 330 -640 427 -640 480 -640 400 -480 640 -640 480 -640 480 -640 427 -640 480 -640 480 -337 500 -426 640 -640 425 -640 426 -478 640 -401 640 -640 427 -640 427 -480 640 -640 640 -480 640 -640 426 -640 480 -640 466 -480 640 -640 427 -383 640 -640 480 -640 640 -480 640 -640 480 -500 287 -500 375 -640 480 -640 427 -500 375 -640 478 -640 640 -640 416 -640 480 -640 427 -640 426 -324 500 -640 426 -640 428 -640 427 -640 480 -500 375 -640 480 -640 488 -640 335 -640 480 -612 612 -640 480 -640 314 -640 427 -424 640 -500 375 -640 397 -640 480 -500 375 -480 640 -500 375 -640 427 -640 480 -480 640 -500 263 -500 375 -500 375 -640 425 -640 480 -640 427 -375 500 -480 640 -500 333 -383 640 -640 391 -500 458 -640 427 -640 426 -480 640 -480 640 -640 480 -640 446 -500 375 -500 329 -640 480 -640 480 -612 612 -480 640 -431 640 -640 426 -480 640 -500 375 -640 480 -640 480 -640 426 -500 375 -640 480 -640 427 -500 375 -426 640 -640 480 -640 429 -500 375 -500 375 -640 480 -427 640 -480 640 -480 640 -640 481 -640 480 -500 375 -640 480 -332 500 -500 332 -500 500 -640 427 -640 480 -640 480 -333 500 -640 431 -640 424 -500 393 -640 480 -640 427 -640 480 -500 249 -640 512 -640 480 -640 425 -640 400 -640 427 -640 480 -640 480 -640 480 -640 427 -640 428 -427 640 -640 214 -640 640 -640 480 -500 333 -640 480 -640 439 -640 427 -480 640 -640 480 -640 424 -640 424 -640 480 -640 427 -480 640 -640 431 -640 425 -640 414 -480 640 -640 427 -640 428 -640 427 -640 426 -427 640 -480 640 -640 514 -375 500 -333 500 -640 457 -640 501 -640 427 -333 500 -640 360 -640 480 -425 640 -500 319 -640 361 -640 389 -640 325 -640 480 -500 344 -500 333 -397 640 -640 480 -480 640 -333 500 -640 326 -640 428 -640 477 -480 640 -640 426 -320 240 -640 426 -375 500 -640 400 -640 480 -640 338 -612 612 -640 427 -640 480 -640 640 -640 422 -640 428 -640 426 -640 640 -640 389 -640 425 -640 480 -640 480 -640 346 -480 640 -500 333 -640 428 -545 640 -400 500 -640 427 -640 480 -640 326 -480 640 -640 480 -640 425 -640 427 -640 427 -640 428 -333 500 -512 640 -409 640 -640 426 -640 425 -332 500 -640 480 -640 480 -640 361 -640 426 -640 478 -427 640 -360 270 -640 428 -478 640 -480 640 -640 427 -640 480 -480 640 -500 400 -410 555 -640 480 -333 500 -640 427 -640 480 -500 375 -640 480 -640 480 -428 640 -640 376 -640 480 -640 480 -479 640 -500 333 -640 480 -640 480 -428 640 -640 480 -640 478 -500 333 -640 480 -640 360 -640 426 -410 500 -500 375 -640 479 -480 640 -612 612 -640 425 -640 404 -612 612 -374 640 -500 375 -480 640 -427 640 -500 444 -426 640 -428 640 -640 427 -640 425 -640 479 -500 334 -500 375 -640 480 -640 359 -640 427 -480 640 -500 333 -425 640 -640 439 -640 480 -640 483 -480 640 -640 425 -640 481 -478 640 -427 640 -640 480 -500 333 -500 375 -640 640 -425 640 -500 375 -640 427 -500 333 -640 480 -640 426 -640 480 -640 640 -499 640 -480 640 -640 480 -480 640 -640 480 -640 427 -640 428 -640 548 -640 640 -500 375 -640 480 -640 426 -640 427 -500 169 -640 360 -640 480 -640 457 -480 640 -640 582 -640 480 -500 281 -640 425 -500 375 -640 480 -640 480 -640 480 -640 480 -640 480 -640 360 -333 500 -640 480 -457 640 -640 427 -640 407 -640 480 -640 480 -500 375 -500 329 -369 500 -640 480 -640 427 -426 640 -640 496 -640 427 -640 480 -475 405 -640 629 -640 426 -500 375 -640 427 -640 480 -640 335 -640 428 -640 512 -640 425 -612 612 -640 480 -640 480 -500 409 -640 412 -612 612 -640 427 -433 640 -640 427 -640 480 -640 474 -640 581 -500 482 -427 640 -640 427 -640 428 -379 500 -640 480 -482 500 -640 480 -640 480 -640 427 -500 323 -500 375 -426 640 -428 640 -640 480 -640 360 -640 427 -640 480 -640 480 -500 333 -640 640 -640 427 -640 480 -480 640 -640 427 -640 640 -640 417 -640 428 -640 429 -500 375 -500 375 -500 236 -428 640 -640 427 -500 375 -480 640 -640 427 -640 480 -640 480 -640 423 -640 427 -640 480 -640 424 -500 375 -426 640 -640 258 -640 516 -640 480 -640 480 -640 427 -640 480 -640 428 -500 375 -640 480 -640 480 -612 612 -640 426 -640 427 -640 286 -640 359 -500 375 -640 486 -480 640 -640 480 -640 402 -640 480 -427 640 -640 480 -640 486 -612 612 -640 480 -500 281 -333 500 -640 426 -640 480 -393 480 -333 500 -500 375 -640 480 -640 426 -640 411 -640 425 -640 426 -640 480 -640 480 -640 427 -400 500 -500 375 -640 429 -415 640 -640 480 -640 512 -640 425 -500 333 -500 263 -640 427 -480 640 -500 400 -640 611 -427 640 -640 480 -426 640 -375 500 -603 640 -428 640 -640 494 -640 480 -640 320 -640 480 -640 430 -500 333 -640 439 -640 480 -500 374 -640 426 -640 480 -500 250 -640 421 -640 480 -640 426 -480 640 -480 640 -640 455 -500 375 -640 640 -640 427 -375 500 -410 640 -334 500 -640 427 -640 480 -640 360 -480 640 -640 480 -480 640 -640 427 -640 480 -640 426 -500 375 -640 427 -640 426 -640 427 -459 258 -482 640 -640 480 -500 375 -640 480 -640 480 -427 640 -500 375 -640 360 -449 640 -480 640 -640 427 -640 428 -640 480 -640 480 -427 640 -640 427 -640 427 -640 453 -640 480 -480 640 -640 427 -640 427 -640 428 -640 464 -375 500 -480 640 -640 479 -640 473 -500 305 -480 640 -640 478 -640 480 -640 480 -640 480 -640 427 -640 426 -640 478 -426 640 -480 640 -500 333 -640 425 -640 468 -480 640 -333 500 -426 640 -640 478 -640 480 -640 427 -640 428 -640 480 -500 375 -640 429 -640 426 -576 640 -500 333 -640 419 -480 640 -640 480 -478 640 -640 396 -334 500 -640 480 -427 640 -467 640 -500 375 -640 427 -295 244 -640 640 -640 401 -427 640 -480 640 -640 478 -640 438 -640 427 -640 480 -640 448 -640 480 -640 426 -640 480 -500 375 -500 400 -500 332 -640 427 -640 427 -500 350 -640 412 -640 480 -640 524 -500 375 -500 333 -424 640 -640 480 -640 427 -640 480 -640 480 -480 640 -640 457 -426 640 -480 640 -640 480 -283 424 -426 640 -336 640 -640 480 -640 427 -500 342 -640 480 -640 480 -640 427 -640 606 -640 480 -640 478 -480 640 -427 640 -640 480 -640 360 -640 480 -640 427 -640 480 -640 426 -500 332 -375 500 -640 478 -427 640 -640 480 -640 480 -427 640 -640 461 -640 428 -640 429 -500 333 -481 640 -640 426 -640 408 -640 640 -480 640 -640 427 -640 480 -640 480 -640 481 -640 480 -500 375 -480 640 -640 427 -640 427 -640 427 -640 427 -500 375 -640 468 -640 480 -640 426 -640 548 -500 375 -640 425 -640 480 -640 480 -640 427 -640 426 -640 427 -567 640 -640 427 -640 457 -640 427 -600 354 -640 411 -640 620 -640 480 -640 480 -640 424 -469 640 -640 429 -640 480 -426 640 -359 640 -500 312 -640 480 -640 480 -640 427 -640 467 -640 586 -428 640 -640 427 -500 375 -427 640 -500 375 -500 375 -640 359 -640 493 -640 427 -500 375 -640 427 -298 500 -640 427 -640 541 -497 640 -375 500 -640 605 -640 451 -375 500 -500 375 -480 640 -640 480 -640 428 -640 480 -425 640 -640 478 -640 480 -640 483 -458 640 -640 541 -500 332 -500 281 -480 640 -426 640 -640 480 -427 640 -640 480 -640 427 -640 428 -640 480 -640 426 -480 640 -640 334 -640 400 -640 480 -640 426 -375 500 -640 480 -640 427 -640 428 -640 427 -640 480 -480 640 -640 640 -480 640 -480 640 -500 375 -640 480 -612 612 -640 480 -640 426 -512 640 -500 375 -427 640 -640 476 -640 480 -640 511 -640 360 -640 425 -640 480 -480 640 -640 448 -500 375 -640 480 -640 427 -640 425 -428 640 -640 640 -640 428 -521 421 -640 480 -640 640 -427 640 -500 400 -640 427 -500 375 -640 427 -640 457 -640 359 -640 430 -640 480 -500 375 -640 480 -640 427 -640 480 -640 425 -500 375 -528 640 -313 500 -600 400 -640 609 -640 480 -640 404 -640 480 -640 480 -640 424 -640 480 -640 427 -640 401 -500 375 -640 480 -490 640 -612 612 -640 427 -640 640 -640 480 -640 425 -480 640 -631 640 -500 333 -602 415 -640 512 -640 427 -640 480 -640 426 -640 480 -480 640 -640 480 -640 427 -640 403 -640 453 -640 480 -640 427 -640 480 -640 426 -426 640 -612 612 -640 480 -640 480 -640 480 -500 333 -640 640 -639 640 -612 612 -640 464 -640 480 -500 375 -405 500 -640 427 -640 512 -640 427 -480 640 -640 458 -640 428 -640 415 -480 640 -640 480 -427 640 -640 480 -430 500 -500 375 -640 480 -500 376 -640 304 -480 640 -500 375 -640 426 -640 480 -640 425 -480 640 -640 427 -428 640 -500 375 -500 500 -640 480 -640 419 -484 640 -640 480 -640 427 -640 480 -640 427 -640 480 -640 429 -500 319 -427 640 -500 375 -640 480 -358 640 -480 640 -500 375 -427 640 -640 359 -500 333 -448 299 -640 424 -612 612 -612 612 -640 426 -425 640 -344 500 -640 326 -640 513 -640 425 -640 640 -640 480 -640 427 -480 640 -500 336 -640 427 -640 480 -640 480 -640 427 -375 500 -640 429 -375 500 -513 640 -640 544 -640 480 -640 480 -640 432 -480 640 -333 500 -640 383 -500 375 -426 640 -640 480 -640 540 -640 480 -392 500 -480 640 -640 404 -640 640 -427 640 -640 480 -640 411 -640 499 -640 480 -640 480 -640 480 -640 427 -397 500 -427 640 -640 314 -500 360 -480 640 -640 409 -640 480 -640 480 -500 333 -478 640 -500 332 -640 427 -640 396 -640 480 -640 427 -640 427 -640 480 -428 640 -500 375 -640 428 -375 500 -640 504 -640 424 -629 640 -427 640 -500 375 -600 400 -640 425 -640 480 -426 640 -640 406 -640 480 -640 480 -640 480 -640 335 -480 640 -427 640 -500 375 -640 459 -612 612 -500 375 -480 640 -480 640 -640 480 -640 400 -429 640 -640 428 -640 480 -640 432 -640 426 -528 640 -640 426 -500 375 -640 480 -640 430 -640 478 -640 480 -640 427 -640 480 -426 640 -500 375 -640 488 -640 427 -640 407 -425 640 -640 549 -500 375 -612 612 -640 444 -640 426 -640 480 -494 327 -640 428 -640 449 -500 397 -640 479 -640 480 -640 431 -640 360 -509 640 -640 480 -640 480 -512 640 -640 426 -640 509 -612 612 -640 427 -425 640 -640 480 -427 640 -640 480 -640 511 -640 480 -640 480 -640 425 -500 310 -640 480 -612 612 -500 335 -640 480 -640 480 -480 640 -640 480 -500 333 -427 640 -640 480 -459 500 -640 480 -640 480 -640 427 -640 427 -500 375 -640 425 -428 640 -640 639 -500 325 -640 427 -640 506 -640 458 -469 640 -640 484 -500 375 -375 500 -427 640 -425 640 -338 500 -640 427 -480 640 -640 574 -640 480 -640 480 -640 480 -640 426 -640 425 -640 427 -612 612 -480 640 -427 640 -640 480 -640 427 -400 600 -640 427 -640 640 -612 612 -640 427 -480 640 -640 480 -640 480 -640 480 -375 500 -500 338 -426 640 -500 375 -500 333 -640 427 -640 480 -640 427 -640 255 -640 480 -640 401 -640 513 -640 427 -640 640 -375 500 -640 429 -640 425 -500 333 -640 424 -640 480 -640 480 -640 480 -480 640 -375 500 -640 480 -500 333 -500 375 -375 500 -480 640 -640 480 -640 478 -480 640 -640 427 -480 640 -640 480 -640 427 -427 640 -427 640 -640 480 -427 640 -640 427 -500 375 -640 480 -480 640 -640 427 -500 400 -500 333 -640 426 -471 640 -640 480 -640 427 -480 640 -433 640 -590 640 -640 427 -494 500 -328 640 -640 480 -512 400 -612 612 -480 640 -480 640 -640 425 -640 480 -640 480 -425 640 -640 427 -640 424 -640 426 -640 514 -425 640 -640 479 -508 640 -500 333 -640 433 -640 425 -640 480 -640 360 -480 640 -640 429 -640 480 -640 426 -426 640 -640 480 -640 426 -640 480 -427 640 -640 455 -640 480 -500 400 -640 427 -640 480 -640 480 -500 375 -640 554 -334 500 -640 360 -426 640 -500 470 -640 427 -640 480 -480 640 -640 427 -500 334 -427 640 -640 383 -640 426 -640 480 -480 640 -437 640 -640 425 -640 480 -640 480 -640 427 -640 427 -640 480 -612 612 -640 360 -425 640 -426 640 -640 241 -640 480 -640 640 -427 640 -612 612 -640 429 -500 375 -500 375 -500 324 -640 456 -640 427 -640 424 -640 480 -375 500 -640 427 -640 480 -480 640 -640 572 -640 480 -480 640 -640 427 -640 427 -640 427 -640 480 -500 375 -640 480 -375 500 -640 426 -640 426 -375 500 -640 480 -640 401 -640 458 -481 640 -640 480 -640 640 -640 480 -640 480 -640 502 -427 640 -428 640 -427 640 -427 640 -640 427 -359 640 -640 425 -640 427 -457 640 -640 436 -640 434 -640 480 -335 500 -497 500 -425 640 -480 640 -425 640 -640 480 -640 425 -640 311 -640 426 -640 428 -640 640 -640 425 -640 427 -640 480 -640 388 -640 426 -640 481 -640 398 -640 427 -640 427 -640 480 -640 640 -640 428 -640 463 -640 425 -427 640 -500 500 -640 368 -500 331 -500 375 -640 426 -385 500 -500 358 -640 480 -640 480 -640 480 -480 640 -640 427 -500 304 -640 427 -500 333 -640 457 -500 500 -640 360 -432 640 -640 576 -640 480 -640 401 -640 480 -640 360 -640 480 -640 498 -500 333 -640 480 -640 480 -640 427 -640 487 -480 640 -640 428 -359 640 -640 432 -640 480 -640 427 -480 640 -640 480 -640 426 -640 480 -500 333 -476 640 -640 480 -640 424 -427 640 -640 285 -427 640 -472 640 -500 312 -480 640 -640 478 -640 480 -640 480 -640 481 -612 612 -640 480 -612 612 -640 478 -640 480 -360 640 -640 427 -640 427 -640 480 -361 500 -640 428 -640 426 -333 250 -640 640 -458 640 -640 480 -640 427 -640 478 -640 480 -640 427 -640 426 -640 427 -640 480 -640 426 -451 500 -640 512 -640 428 -640 480 -612 612 -480 640 -640 471 -640 428 -500 375 -640 480 -506 640 -640 479 -427 640 -500 375 -640 427 -640 509 -640 480 -612 612 -640 427 -640 480 -640 392 -500 375 -640 640 -640 480 -500 378 -500 375 -500 375 -427 640 -640 427 -640 480 -640 446 -640 504 -640 480 -640 480 -478 640 -640 429 -640 424 -640 439 -640 480 -640 480 -640 427 -640 631 -427 640 -480 640 -640 480 -425 640 -640 426 -640 360 -640 424 -469 640 -640 426 -640 427 -640 425 -500 375 -500 373 -640 405 -640 481 -480 640 -640 480 -500 284 -640 480 -640 427 -640 480 -640 480 -480 640 -640 427 -426 640 -480 640 -640 480 -640 480 -427 640 -640 427 -640 523 -640 427 -640 480 -640 512 -640 427 -500 375 -640 480 -640 427 -480 640 -640 434 -640 399 -500 333 -640 480 -640 426 -640 480 -640 474 -640 493 -640 480 -568 640 -500 334 -640 480 -640 480 -640 459 -500 400 -640 480 -500 333 -640 430 -640 427 -640 478 -640 480 -640 433 -481 640 -640 367 -640 427 -612 612 -500 374 -640 480 -375 500 -550 365 -640 429 -500 333 -480 640 -640 640 -640 480 -640 480 -640 427 -640 480 -383 640 -640 427 -640 301 -427 640 -640 427 -640 425 -300 400 -480 640 -500 333 -518 640 -420 640 -480 640 -428 640 -333 500 -640 360 -500 333 -480 640 -471 640 -640 427 -640 480 -480 640 -640 480 -640 425 -640 480 -640 480 -640 425 -480 640 -640 474 -500 335 -640 480 -640 480 -640 360 -500 375 -640 478 -640 398 -500 375 -640 480 -640 428 -500 375 -500 375 -466 640 -458 640 -640 480 -640 477 -640 489 -375 500 -640 640 -480 640 -612 612 -640 480 -640 427 -640 350 -500 375 -640 480 -298 640 -480 640 -640 427 -480 640 -640 426 -640 480 -640 480 -640 480 -640 480 -640 427 -500 375 -478 640 -640 425 -640 472 -640 409 -375 500 -480 640 -640 425 -400 600 -640 480 -640 480 -480 640 -640 361 -426 640 -427 640 -447 640 -425 640 -640 426 -500 375 -640 427 -640 483 -480 640 -640 480 -640 480 -427 640 -640 480 -640 640 -640 427 -640 480 -640 427 -640 353 -640 640 -640 480 -374 500 -640 426 -384 640 -640 480 -480 640 -375 500 -375 500 -500 375 -640 480 -640 480 -640 428 -640 480 -640 429 -640 457 -640 424 -480 640 -640 480 -480 640 -640 626 -640 427 -640 480 -640 480 -458 640 -480 640 -500 398 -640 428 -640 425 -640 429 -640 427 -427 640 -512 640 -640 640 -640 426 -640 478 -458 640 -640 480 -640 480 -426 640 -640 480 -640 480 -500 281 -640 640 -640 427 -478 640 -640 426 -640 426 -640 458 -640 427 -500 356 -640 429 -473 640 -640 526 -640 480 -500 377 -640 426 -640 480 -640 480 -640 304 -640 480 -640 426 -640 427 -640 434 -426 640 -640 480 -480 640 -640 480 -640 428 -640 480 -500 382 -500 333 -375 500 -640 427 -640 427 -640 427 -640 480 -640 426 -480 640 -640 361 -640 474 -473 640 -427 640 -500 332 -640 427 -640 424 -640 480 -640 480 -343 500 -425 640 -640 480 -500 375 -640 427 -640 427 -500 373 -640 427 -427 640 -640 480 -508 640 -640 480 -640 480 -500 375 -640 426 -640 640 -640 400 -480 640 -547 640 -640 426 -640 427 -517 640 -375 500 -640 426 -640 325 -640 480 -640 426 -640 427 -640 558 -640 640 -640 520 -640 480 -640 480 -640 427 -640 401 -640 426 -640 412 -640 427 -640 425 -640 427 -500 375 -426 640 -491 640 -480 640 -640 428 -480 640 -640 480 -640 294 -480 640 -640 502 -640 427 -640 427 -640 640 -425 640 -640 480 -640 495 -640 426 -416 640 -640 426 -640 427 -640 359 -640 425 -427 640 -640 480 -640 427 -427 640 -612 612 -640 428 -640 361 -640 480 -640 427 -480 640 -640 426 -640 480 -478 640 -640 480 -426 640 -640 480 -640 482 -640 428 -361 640 -427 640 -640 480 -375 500 -640 427 -640 427 -500 329 -480 640 -555 640 -500 400 -516 520 -640 480 -640 427 -640 426 -480 640 -427 640 -640 428 -640 620 -500 375 -640 480 -480 640 -480 640 -427 640 -480 640 -500 375 -640 480 -640 427 -640 480 -480 640 -612 612 -640 480 -427 640 -426 640 -427 640 -426 640 -640 427 -640 450 -480 640 -640 426 -640 426 -597 640 -640 439 -375 500 -640 360 -500 393 -424 640 -640 427 -640 427 -513 640 -424 640 -480 640 -640 427 -640 427 -640 480 -333 500 -640 360 -640 480 -640 480 -640 480 -640 480 -640 427 -640 480 -640 480 -640 425 -640 453 -480 640 -640 426 -640 480 -640 426 -640 481 -480 640 -640 427 -480 640 -640 480 -640 480 -640 480 -457 640 -640 404 -512 640 -640 360 -640 480 -480 640 -640 427 -426 640 -640 513 -640 479 -640 427 -640 480 -640 480 -480 640 -500 391 -640 424 -375 500 -459 640 -640 547 -500 334 -640 359 -480 640 -640 427 -640 425 -626 640 -640 427 -640 423 -640 464 -612 612 -640 425 -640 480 -640 426 -640 480 -500 375 -480 640 -640 480 -640 560 -640 427 -640 422 -612 612 -612 612 -480 640 -625 640 -640 480 -612 612 -640 480 -480 640 -427 640 -333 500 -640 427 -404 640 -640 480 -375 500 -438 640 -500 375 -500 336 -640 427 -640 456 -640 427 -640 426 -640 480 -640 427 -427 640 -640 480 -480 640 -640 428 -425 640 -500 375 -640 481 -640 427 -640 427 -640 195 -500 375 -480 640 -640 425 -640 480 -640 426 -427 640 -514 640 -640 427 -640 480 -640 427 -640 425 -640 427 -500 375 -639 426 -640 504 -640 480 -427 640 -500 375 -640 463 -480 640 -640 427 -640 428 -427 640 -640 480 -500 333 -640 480 -640 480 -500 375 -640 480 -640 426 -640 426 -640 427 -640 480 -640 426 -640 427 -409 640 -640 468 -640 428 -500 332 -640 480 -640 489 -640 480 -640 363 -640 427 -640 478 -640 480 -640 360 -375 500 -640 529 -427 640 -640 427 -640 426 -427 640 -640 480 -640 478 -640 428 -640 480 -640 426 -640 427 -640 480 -396 640 -640 471 -428 640 -600 400 -500 375 -640 480 -640 425 -424 640 -480 640 -640 426 -425 640 -480 640 -500 375 -480 640 -512 640 -640 428 -480 640 -640 426 -640 480 -640 640 -640 499 -640 400 -640 427 -640 427 -500 375 -640 427 -640 480 -640 480 -640 426 -640 480 -500 375 -640 623 -494 640 -640 403 -426 640 -425 640 -640 428 -640 480 -640 427 -640 430 -640 640 -640 480 -480 640 -640 426 -640 514 -428 640 -272 480 -640 428 -640 454 -504 314 -338 500 -500 375 -640 480 -500 375 -640 426 -640 298 -640 480 -500 322 -500 333 -640 436 -640 480 -500 375 -500 375 -612 612 -640 427 -640 433 -428 640 -427 640 -500 333 -640 409 -640 480 -640 480 -480 640 -640 428 -640 427 -480 640 -427 640 -640 429 -636 640 -640 427 -640 428 -640 640 -640 400 -640 480 -640 480 -640 517 -480 640 -640 480 -533 640 -480 640 -640 199 -426 640 -640 480 -640 608 -640 424 -640 371 -480 640 -640 427 -640 368 -500 375 -640 427 -500 334 -640 480 -640 480 -640 480 -640 389 -640 480 -640 480 -640 478 -640 426 -640 480 -640 480 -640 480 -480 640 -500 332 -640 515 -480 640 -640 435 -480 640 -640 426 -375 500 -480 640 -640 480 -425 640 -480 640 -640 480 -640 419 -640 425 -640 480 -480 640 -640 480 -500 333 -476 640 -500 400 -512 640 -640 338 -640 360 -480 640 -640 427 -480 640 -640 427 -640 480 -480 640 -640 480 -640 427 -612 612 -640 478 -427 640 -640 427 -640 426 -640 480 -640 426 -640 508 -640 427 -640 427 -640 480 -640 480 -640 428 -640 426 -480 640 -500 375 -427 640 -640 371 -425 640 -640 427 -640 427 -640 480 -480 640 -613 640 -640 480 -640 480 -500 375 -640 424 -427 640 -640 480 -640 480 -640 480 -640 640 -640 480 -640 479 -640 427 -331 500 -640 359 -640 494 -640 480 -640 640 -640 427 -500 375 -640 480 -640 640 -640 429 -458 640 -640 425 -640 640 -640 465 -640 480 -488 640 -640 480 -640 480 -640 394 -426 640 -640 426 -423 640 -640 480 -427 640 -640 433 -335 500 -640 480 -640 396 -640 373 -640 427 -640 480 -640 426 -640 486 -425 640 -640 428 -500 285 -480 640 -640 480 -640 480 -428 640 -427 640 -640 426 -640 480 -640 389 -500 375 -375 500 -640 426 -480 640 -640 480 -640 474 -480 640 -640 427 -480 640 -640 480 -449 640 -640 432 -640 427 -640 480 -640 468 -427 640 -640 427 -640 458 -640 427 -640 427 -383 640 -640 640 -640 373 -640 427 -640 480 -640 486 -640 480 -480 640 -640 480 -640 480 -640 426 -480 640 -640 427 -640 480 -640 425 -640 480 -500 251 -640 480 -416 640 -640 480 -640 480 -640 640 -640 428 -425 640 -640 480 -640 480 -640 427 -640 480 -640 427 -640 429 -640 426 -640 640 -427 640 -640 427 -640 427 -640 427 -414 640 -500 375 -640 416 -500 332 -640 393 -640 360 -640 480 -500 333 -640 425 -640 427 -640 426 -640 427 -500 375 -640 360 -500 333 -424 640 -640 427 -478 640 -478 640 -429 640 -480 640 -640 425 -500 375 -640 365 -640 480 -480 640 -375 500 -640 426 -640 480 -640 480 -640 427 -640 480 -640 425 -640 480 -640 427 -640 427 -640 480 -640 427 -640 427 -640 480 -640 448 -500 375 -426 640 -480 640 -428 640 -612 612 -640 421 -500 333 -640 491 -640 480 -640 360 -640 397 -640 426 -478 640 -480 640 -640 424 -640 427 -640 427 -640 480 -640 427 -640 427 -640 426 -640 426 -640 426 -640 480 -640 427 -640 480 -640 480 -332 500 -640 428 -480 640 -428 640 -427 640 -640 351 -508 640 -640 427 -640 480 -500 375 -640 480 -640 480 -640 425 -640 420 -640 480 -500 375 -640 480 -640 425 -418 500 -500 375 -640 474 -640 425 -640 427 -640 480 -336 640 -640 427 -640 478 -640 425 -640 503 -333 500 -640 427 -640 480 -640 480 -612 612 -480 640 -640 404 -640 427 -640 503 -640 360 -640 427 -640 480 -640 381 -640 339 -428 640 -427 640 -640 425 -640 480 -640 480 -640 427 -426 640 -640 409 -640 427 -640 519 -360 640 -375 500 -640 427 -640 427 -640 427 -640 508 -640 428 -640 423 -640 427 -640 386 -500 333 -640 366 -480 640 -640 480 -640 427 -640 427 -640 427 -640 509 -500 375 -500 375 -640 418 -375 500 -640 353 -640 426 -640 427 -640 480 -612 612 -640 480 -640 478 -526 640 -387 500 -640 480 -640 427 -640 427 -640 480 -640 427 -640 425 -640 480 -500 376 -640 480 -640 480 -500 316 -640 427 -640 480 -640 480 -427 640 -640 427 -480 640 -640 427 -612 612 -480 640 -640 640 -334 500 -427 640 -500 335 -640 428 -640 426 -640 478 -480 640 -426 640 -640 426 -640 426 -500 334 -640 480 -640 443 -500 375 -640 480 -640 427 -640 479 -640 424 -640 480 -427 640 -640 428 -640 480 -640 480 -640 480 -640 424 -500 281 -640 480 -640 426 -426 640 -500 332 -640 480 -640 424 -480 640 -640 360 -334 500 -333 500 -640 427 -640 480 -640 427 -640 427 -480 640 -640 297 -500 487 -427 640 -640 426 -480 640 -640 480 -554 312 -640 454 -640 361 -640 516 -480 640 -640 640 -500 350 -640 640 -640 425 -640 640 -480 640 -640 480 -640 640 -640 426 -640 480 -640 587 -640 425 -640 480 -427 640 -640 529 -640 429 -640 480 -640 428 -640 427 -640 480 -640 480 -500 339 -500 375 -500 375 -640 427 -640 480 -640 444 -500 335 -640 512 -640 426 -640 480 -500 375 -640 480 -480 640 -640 480 -612 612 -375 500 -480 640 -640 599 -640 480 -640 480 -500 375 -500 332 -640 382 -640 480 -640 480 -427 640 -500 471 -640 426 -640 480 -426 640 -640 427 -640 480 -640 480 -640 427 -640 427 -640 417 -413 622 -480 640 -428 640 -640 426 -640 366 -425 640 -500 375 -500 345 -640 373 -489 500 -640 389 -478 640 -640 494 -427 640 -640 426 -640 480 -444 640 -640 427 -640 426 -427 640 -384 640 -640 426 -459 640 -640 479 -640 572 -640 480 -640 480 -468 640 -640 431 -425 640 -640 428 -640 428 -480 500 -640 427 -427 640 -426 640 -640 427 -429 640 -640 428 -480 640 -640 427 -640 425 -500 375 -401 640 -640 425 -500 331 -640 480 -640 512 -640 361 -640 428 -640 427 -500 375 -427 640 -640 427 -640 480 -480 640 -427 640 -640 425 -640 361 -640 424 -427 640 -640 479 -640 427 -640 425 -640 427 -640 360 -640 424 -640 544 -640 427 -375 500 -640 480 -640 480 -500 375 -640 425 -640 426 -375 500 -640 454 -640 428 -640 360 -480 640 -640 480 -435 640 -500 375 -640 640 -640 479 -640 480 -640 379 -640 480 -478 640 -500 282 -640 480 -640 480 -640 480 -640 427 -640 480 -640 425 -426 640 -513 640 -640 431 -640 425 -640 480 -511 640 -640 429 -640 480 -500 375 -640 480 -640 394 -640 427 -425 640 -640 430 -640 480 -640 425 -640 480 -640 480 -640 457 -640 480 -333 500 -640 480 -640 427 -640 425 -640 428 -379 500 -640 480 -640 484 -427 640 -640 427 -640 418 -640 428 -640 482 -640 483 -500 283 -640 476 -640 480 -144 144 -640 360 -640 480 -480 640 -640 360 -480 640 -640 480 -640 480 -640 426 -426 640 -426 640 -640 480 -640 480 -640 604 -640 445 -640 480 -640 480 -640 313 -640 331 -640 375 -640 480 -612 612 -505 640 -424 640 -640 361 -640 421 -640 400 -640 480 -640 454 -640 427 -500 375 -506 640 -426 640 -500 375 -480 640 -479 322 -640 424 -480 640 -480 640 -640 349 -639 426 -427 640 -500 333 -640 480 -424 640 -425 640 -640 480 -593 391 -640 427 -640 508 -480 640 -640 400 -640 428 -640 360 -640 427 -640 428 -640 480 -640 426 -640 506 -500 357 -640 480 -640 480 -640 428 -640 427 -640 424 -640 428 -640 427 -640 422 -640 480 -640 480 -500 375 -640 425 -640 480 -640 480 -640 537 -640 427 -640 428 -640 428 -640 480 -318 500 -640 480 -480 640 -500 333 -640 427 -500 375 -640 480 -480 640 -500 333 -640 480 -640 427 -640 427 -500 375 -640 426 -640 426 -640 427 -500 348 -640 427 -640 426 -640 546 -640 427 -640 427 -640 480 -640 425 -500 407 -500 300 -640 512 -480 640 -640 480 -500 281 -640 435 -640 426 -640 427 -640 478 -640 383 -375 500 -640 480 -640 424 -480 640 -640 427 -640 480 -640 480 -640 473 -640 475 -600 450 -450 265 -500 457 -341 640 -640 480 -640 425 -640 427 -375 500 -480 640 -543 640 -640 480 -457 640 -640 480 -640 490 -640 478 -427 640 -640 554 -427 640 -427 640 -640 480 -640 454 -640 427 -500 283 -640 480 -640 415 -640 480 -640 486 -640 425 -640 427 -333 500 -473 640 -640 480 -480 640 -640 478 -480 640 -427 640 -640 480 -612 612 -640 480 -500 325 -640 421 -640 480 -640 427 -640 480 -640 427 -640 281 -359 640 -458 640 -640 518 -640 360 -612 612 -640 480 -640 480 -640 480 -640 449 -640 480 -640 480 -640 480 -426 640 -640 427 -500 375 -640 427 -640 426 -640 599 -640 480 -495 640 -640 480 -500 281 -480 640 -427 640 -640 427 -640 427 -640 359 -640 429 -640 480 -640 426 -480 640 -640 430 -640 478 -480 640 -482 640 -640 426 -500 375 -640 319 -500 375 -500 375 -640 480 -500 333 -640 427 -640 480 -640 480 -640 480 -640 480 -612 612 -640 480 -640 360 -640 425 -426 640 -640 480 -640 480 -429 640 -333 500 -640 427 -640 425 -640 480 -640 427 -640 427 -640 480 -640 424 -640 480 -500 341 -500 334 -640 480 -640 480 -640 426 -375 500 -640 427 -500 333 -640 480 -640 480 -338 500 -334 500 -640 427 -456 640 -500 375 -640 426 -426 640 -640 480 -480 640 -480 640 -500 332 -640 426 -640 427 -426 640 -480 640 -640 429 -640 480 -640 384 -640 427 -359 500 -640 384 -500 375 -444 295 -427 640 -640 429 -427 640 -500 374 -480 640 -423 640 -500 375 -640 480 -640 480 -640 360 -640 640 -640 449 -640 427 -640 480 -640 480 -640 360 -640 484 -640 480 -640 480 -640 428 -500 375 -511 640 -372 500 -640 480 -500 333 -640 427 -612 612 -640 400 -640 427 -426 640 -480 640 -640 480 -500 333 -640 427 -640 480 -640 421 -640 480 -425 640 -427 640 -640 428 -640 428 -640 480 -493 500 -640 427 -640 427 -640 480 -640 480 -640 480 -640 538 -640 427 -640 427 -640 478 -640 480 -640 480 -500 357 -640 480 -640 425 -640 426 -640 480 -500 375 -640 404 -375 500 -640 640 -640 426 -640 480 -480 640 -480 640 -640 426 -427 640 -640 480 -480 640 -423 640 -612 612 -640 446 -640 423 -640 480 -476 640 -640 511 -640 427 -640 480 -640 480 -640 480 -480 640 -640 480 -640 566 -427 640 -640 518 -640 427 -426 640 -480 640 -612 612 -480 640 -640 426 -480 640 -520 640 -333 500 -427 640 -640 431 -640 480 -640 427 -640 426 -500 375 -640 480 -640 428 -425 640 -640 427 -640 480 -640 427 -640 569 -640 480 -640 427 -500 334 -500 338 -640 428 -640 481 -640 428 -640 427 -640 427 -640 424 -640 427 -333 500 -640 555 -640 428 -640 427 -640 496 -640 427 -640 480 -640 427 -640 480 -480 640 -640 480 -349 500 -640 480 -640 425 -640 429 -640 480 -612 612 -375 500 -640 410 -640 480 -612 612 -500 375 -640 425 -640 427 -500 375 -500 375 -450 300 -640 480 -640 427 -480 640 -499 500 -480 640 -640 425 -640 379 -640 427 -640 640 -640 426 -480 640 -500 375 -640 480 -480 640 -640 480 -640 457 -612 612 -480 640 -640 415 -640 480 -476 640 -640 427 -333 500 -500 333 -640 480 -640 480 -612 612 -640 426 -513 640 -333 500 -375 500 -640 480 -640 415 -640 424 -529 640 -640 480 -500 375 -640 360 -640 427 -640 428 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -640 360 -383 640 -640 383 -640 419 -500 334 -640 457 -480 640 -400 300 -640 425 -640 480 -640 428 -500 375 -640 427 -640 480 -640 429 -640 425 -640 480 -640 480 -500 333 -500 365 -500 281 -334 500 -640 427 -428 640 -640 426 -640 427 -500 375 -640 426 -640 437 -640 484 -640 426 -640 427 -375 500 -375 500 -429 640 -640 480 -640 428 -640 480 -640 480 -374 500 -640 427 -640 480 -640 428 -587 391 -640 480 -640 480 -640 480 -640 428 -640 360 -500 375 -640 394 -375 500 -640 427 -500 374 -427 640 -640 424 -640 603 -640 480 -640 427 -640 480 -640 462 -500 375 -640 427 -500 356 -640 480 -640 425 -513 640 -640 427 -640 480 -640 478 -480 640 -640 436 -640 427 -640 480 -640 479 -640 480 -640 427 -640 480 -640 428 -640 360 -427 640 -480 640 -512 640 -640 480 -640 480 -640 422 -640 428 -413 640 -640 399 -640 426 -640 428 -333 500 -427 640 -427 640 -640 426 -434 640 -640 409 -640 480 -640 427 -333 500 -640 437 -640 512 -480 640 -480 640 -640 468 -640 427 -500 331 -480 640 -640 480 -640 478 -377 500 -333 500 -480 640 -428 640 -640 480 -640 237 -640 426 -640 480 -640 494 -640 426 -640 360 -640 360 -426 640 -601 601 -500 375 -480 640 -640 480 -446 640 -500 375 -640 480 -640 426 -640 427 -640 427 -500 375 -640 425 -640 427 -479 640 -612 612 -640 427 -640 427 -500 368 -640 313 -500 386 -640 523 -612 612 -480 640 -480 640 -640 453 -640 480 -640 480 -428 640 -480 640 -640 159 -640 426 -640 451 -640 427 -640 480 -426 640 -480 640 -500 333 -426 640 -640 427 -500 333 -427 640 -480 640 -640 427 -480 640 -457 640 -640 425 -640 427 -500 338 -640 480 -427 640 -612 612 -500 334 -640 451 -640 621 -640 461 -500 375 -640 480 -640 425 -640 428 -640 360 -640 519 -640 458 -640 416 -500 375 -500 375 -640 480 -640 425 -640 480 -612 612 -640 480 -428 640 -640 528 -640 427 -640 480 -640 480 -640 456 -640 480 -500 375 -640 427 -640 479 -612 612 -640 360 -500 375 -640 480 -640 480 -640 480 -640 480 -500 375 -640 480 -640 427 -640 480 -500 375 -600 600 -640 359 -640 426 -640 427 -640 456 -500 375 -443 640 -399 500 -640 498 -640 426 -375 500 -640 480 -426 640 -640 427 -640 455 -480 640 -500 375 -500 373 -429 640 -640 480 -640 360 -500 375 -480 640 -640 426 -640 427 -640 480 -331 500 -640 640 -640 429 -640 367 -640 427 -640 428 -500 335 -640 426 -500 375 -427 640 -640 424 -640 428 -640 640 -640 471 -640 479 -640 327 -640 427 -640 480 -640 425 -640 480 -640 427 -480 640 -640 413 -640 427 -640 433 -640 480 -640 480 -418 640 -640 463 -640 589 -427 640 -640 485 -640 426 -640 426 -448 443 -497 500 -640 427 -333 500 -640 428 -640 425 -640 480 -640 480 -640 480 -500 334 -640 480 -640 427 -640 427 -640 480 -640 480 -640 428 -640 480 -640 427 -640 480 -640 425 -640 480 -640 427 -640 480 -640 480 -480 640 -640 426 -640 426 -566 640 -640 425 -640 480 -640 424 -640 426 -640 336 -640 428 -640 427 -640 305 -640 423 -427 640 -480 640 -640 543 -500 334 -640 427 -640 428 -640 480 -500 500 -640 425 -500 289 -640 480 -640 480 -640 427 -640 480 -640 427 -600 400 -500 375 -640 425 -640 457 -640 480 -480 640 -640 427 -429 640 -500 375 -640 429 -640 426 -480 640 -480 640 -640 480 -480 640 -640 480 -640 480 -426 640 -640 426 -640 480 -640 483 -640 480 -640 428 -480 640 -480 640 -640 480 -640 480 -640 480 -640 426 -640 428 -640 480 -640 290 -640 480 -640 480 -640 512 -640 474 -640 427 -375 500 -640 480 -640 523 -640 427 -640 480 -640 480 -640 519 -500 373 -640 480 -640 480 -640 480 -640 439 -640 427 -640 383 -640 370 -480 640 -500 333 -640 427 -500 375 -640 480 -612 612 -640 426 -640 480 -640 428 -640 634 -640 480 -598 640 -640 480 -640 428 -640 469 -640 480 -571 640 -500 376 -640 378 -640 428 -375 500 -640 424 -480 640 -500 335 -640 445 -640 427 -640 480 -640 384 -640 425 -427 640 -640 480 -640 214 -640 427 -640 480 -640 426 -640 480 -640 426 -427 640 -640 480 -480 640 -640 478 -640 424 -454 640 -491 640 -500 318 -640 445 -338 500 -336 500 -640 427 -370 462 -640 480 -640 401 -640 425 -640 313 -640 480 -640 480 -480 640 -480 640 -640 429 -640 480 -640 399 -640 427 -640 480 -426 640 -640 480 -640 465 -500 340 -640 414 -480 640 -640 479 -640 480 -640 360 -640 480 -413 640 -640 414 -500 332 -375 500 -500 375 -640 427 -640 425 -500 336 -512 640 -375 500 -640 427 -425 640 -428 640 -640 480 -640 480 -500 375 -425 640 -640 480 -640 480 -640 480 -427 640 -640 428 -640 359 -332 500 -640 480 -427 640 -640 480 -640 426 -640 424 -640 619 -640 480 -424 640 -640 480 -640 425 -640 480 -640 444 -640 429 -640 426 -480 640 -640 480 -640 567 -427 640 -640 427 -612 612 -425 640 -640 480 -425 640 -640 427 -640 428 -478 640 -640 360 -640 427 -480 640 -500 375 -640 423 -640 480 -614 640 -490 350 -480 640 -640 427 -640 360 -479 640 -427 640 -640 423 -375 500 -640 480 -640 354 -640 480 -640 427 -352 640 -612 612 -500 334 -500 375 -500 421 -640 480 -640 498 -640 480 -640 429 -640 480 -640 427 -640 427 -612 612 -640 480 -500 332 -640 429 -453 640 -640 427 -478 640 -640 478 -640 427 -428 640 -640 508 -612 612 -640 426 -640 428 -640 480 -427 640 -640 426 -612 612 -480 640 -640 481 -500 375 -640 509 From fc6ea5b1fdec651ba2855c53dea90950eb4904d1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 6 May 2019 16:37:41 +0200 Subject: [PATCH 0817/2595] updates --- utils/datasets.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 879d0d31..31c5ba84 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -368,14 +368,14 @@ def random_affine(img, targets=(), degrees=(-10, 10), translate=(.1, .1), scale= y = xy[:, [1, 3, 5, 7]] xy = np.concatenate((x.min(1), y.min(1), x.max(1), y.max(1))).reshape(4, n).T - # apply angle-based reduction of bounding boxes - radians = a * math.pi / 180 - reduction = max(abs(math.sin(radians)), abs(math.cos(radians))) ** 0.5 - x = (xy[:, 2] + xy[:, 0]) / 2 - y = (xy[:, 3] + xy[:, 1]) / 2 - w = (xy[:, 2] - xy[:, 0]) * reduction - h = (xy[:, 3] - xy[:, 1]) * reduction - xy = np.concatenate((x - w / 2, y - h / 2, x + w / 2, y + h / 2)).reshape(4, n).T + # # apply angle-based reduction of bounding boxes + # radians = a * math.pi / 180 + # reduction = max(abs(math.sin(radians)), abs(math.cos(radians))) ** 0.5 + # x = (xy[:, 2] + xy[:, 0]) / 2 + # y = (xy[:, 3] + xy[:, 1]) / 2 + # w = (xy[:, 2] - xy[:, 0]) * reduction + # h = (xy[:, 3] - xy[:, 1]) * reduction + # xy = np.concatenate((x - w / 2, y - h / 2, x + w / 2, y + h / 2)).reshape(4, n).T # reject warped points outside of image xy[:, [0, 2]] = xy[:, [0, 2]].clip(0, width) @@ -384,7 +384,7 @@ def random_affine(img, targets=(), degrees=(-10, 10), translate=(.1, .1), scale= h = xy[:, 3] - xy[:, 1] area = w * h ar = np.maximum(w / (h + 1e-16), h / (w + 1e-16)) - i = (w > 4) & (h > 4) & (area / (area0 + 1e-16) > 0.1) & (ar < 10) + i = (w > 2) & (h > 2) & (area / (area0 + 1e-16) > 0.1) & (ar < 10) targets = targets[i] targets[:, 1:5] = xy[i] From 3ffdecc93869ff8e737d20e4f2570b70c7f8f297 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 6 May 2019 23:20:33 +0200 Subject: [PATCH 0818/2595] updates --- data/coco_1000val.data | 2 +- data/coco_1000val.txt | 1000 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1001 insertions(+), 1 deletion(-) create mode 100644 data/coco_1000val.txt diff --git a/data/coco_1000val.data b/data/coco_1000val.data index 1f27bc0d..726906b2 100644 --- a/data/coco_1000val.data +++ b/data/coco_1000val.data @@ -1,6 +1,6 @@ classes=80 train=./data/coco_1000img.txt -valid=./data/coco_500val.txt +valid=./data/coco_1000val.txt names=data/coco.names backup=backup/ eval=coco diff --git a/data/coco_1000val.txt b/data/coco_1000val.txt new file mode 100644 index 00000000..3aeea43e --- /dev/null +++ b/data/coco_1000val.txt @@ -0,0 +1,1000 @@ +../images/val2014/COCO_val2014_000000000164.jpg +../images/val2014/COCO_val2014_000000000192.jpg +../images/val2014/COCO_val2014_000000000283.jpg +../images/val2014/COCO_val2014_000000000397.jpg +../images/val2014/COCO_val2014_000000000589.jpg +../images/val2014/COCO_val2014_000000000599.jpg +../images/val2014/COCO_val2014_000000000711.jpg +../images/val2014/COCO_val2014_000000000757.jpg +../images/val2014/COCO_val2014_000000000764.jpg +../images/val2014/COCO_val2014_000000000872.jpg +../images/val2014/COCO_val2014_000000001063.jpg +../images/val2014/COCO_val2014_000000001554.jpg +../images/val2014/COCO_val2014_000000001667.jpg +../images/val2014/COCO_val2014_000000001700.jpg +../images/val2014/COCO_val2014_000000001869.jpg +../images/val2014/COCO_val2014_000000002124.jpg +../images/val2014/COCO_val2014_000000002261.jpg +../images/val2014/COCO_val2014_000000002621.jpg +../images/val2014/COCO_val2014_000000002684.jpg +../images/val2014/COCO_val2014_000000002764.jpg +../images/val2014/COCO_val2014_000000002894.jpg +../images/val2014/COCO_val2014_000000002972.jpg +../images/val2014/COCO_val2014_000000003035.jpg +../images/val2014/COCO_val2014_000000003084.jpg +../images/val2014/COCO_val2014_000000003103.jpg +../images/val2014/COCO_val2014_000000003109.jpg +../images/val2014/COCO_val2014_000000003134.jpg +../images/val2014/COCO_val2014_000000003209.jpg +../images/val2014/COCO_val2014_000000003244.jpg +../images/val2014/COCO_val2014_000000003326.jpg +../images/val2014/COCO_val2014_000000003337.jpg +../images/val2014/COCO_val2014_000000003661.jpg +../images/val2014/COCO_val2014_000000003711.jpg +../images/val2014/COCO_val2014_000000003779.jpg +../images/val2014/COCO_val2014_000000003865.jpg +../images/val2014/COCO_val2014_000000004079.jpg +../images/val2014/COCO_val2014_000000004092.jpg +../images/val2014/COCO_val2014_000000004283.jpg +../images/val2014/COCO_val2014_000000004296.jpg +../images/val2014/COCO_val2014_000000004392.jpg +../images/val2014/COCO_val2014_000000004742.jpg +../images/val2014/COCO_val2014_000000004754.jpg +../images/val2014/COCO_val2014_000000004764.jpg +../images/val2014/COCO_val2014_000000005038.jpg +../images/val2014/COCO_val2014_000000005060.jpg +../images/val2014/COCO_val2014_000000005124.jpg +../images/val2014/COCO_val2014_000000005178.jpg +../images/val2014/COCO_val2014_000000005205.jpg +../images/val2014/COCO_val2014_000000005443.jpg +../images/val2014/COCO_val2014_000000005652.jpg +../images/val2014/COCO_val2014_000000005723.jpg +../images/val2014/COCO_val2014_000000005804.jpg +../images/val2014/COCO_val2014_000000006074.jpg +../images/val2014/COCO_val2014_000000006091.jpg +../images/val2014/COCO_val2014_000000006153.jpg +../images/val2014/COCO_val2014_000000006213.jpg +../images/val2014/COCO_val2014_000000006497.jpg +../images/val2014/COCO_val2014_000000006789.jpg +../images/val2014/COCO_val2014_000000006847.jpg +../images/val2014/COCO_val2014_000000007241.jpg +../images/val2014/COCO_val2014_000000007256.jpg +../images/val2014/COCO_val2014_000000007281.jpg +../images/val2014/COCO_val2014_000000007795.jpg +../images/val2014/COCO_val2014_000000007867.jpg +../images/val2014/COCO_val2014_000000007873.jpg +../images/val2014/COCO_val2014_000000007899.jpg +../images/val2014/COCO_val2014_000000008010.jpg +../images/val2014/COCO_val2014_000000008179.jpg +../images/val2014/COCO_val2014_000000008190.jpg +../images/val2014/COCO_val2014_000000008204.jpg +../images/val2014/COCO_val2014_000000008350.jpg +../images/val2014/COCO_val2014_000000008493.jpg +../images/val2014/COCO_val2014_000000008853.jpg +../images/val2014/COCO_val2014_000000009105.jpg +../images/val2014/COCO_val2014_000000009156.jpg +../images/val2014/COCO_val2014_000000009217.jpg +../images/val2014/COCO_val2014_000000009270.jpg +../images/val2014/COCO_val2014_000000009286.jpg +../images/val2014/COCO_val2014_000000009548.jpg +../images/val2014/COCO_val2014_000000009553.jpg +../images/val2014/COCO_val2014_000000009727.jpg +../images/val2014/COCO_val2014_000000009908.jpg +../images/val2014/COCO_val2014_000000010114.jpg +../images/val2014/COCO_val2014_000000010249.jpg +../images/val2014/COCO_val2014_000000010395.jpg +../images/val2014/COCO_val2014_000000010400.jpg +../images/val2014/COCO_val2014_000000010463.jpg +../images/val2014/COCO_val2014_000000010613.jpg +../images/val2014/COCO_val2014_000000010764.jpg +../images/val2014/COCO_val2014_000000010779.jpg +../images/val2014/COCO_val2014_000000010928.jpg +../images/val2014/COCO_val2014_000000011099.jpg +../images/val2014/COCO_val2014_000000011181.jpg +../images/val2014/COCO_val2014_000000011184.jpg +../images/val2014/COCO_val2014_000000011197.jpg +../images/val2014/COCO_val2014_000000011320.jpg +../images/val2014/COCO_val2014_000000011721.jpg +../images/val2014/COCO_val2014_000000011813.jpg +../images/val2014/COCO_val2014_000000012014.jpg +../images/val2014/COCO_val2014_000000012047.jpg +../images/val2014/COCO_val2014_000000012085.jpg +../images/val2014/COCO_val2014_000000012115.jpg +../images/val2014/COCO_val2014_000000012166.jpg +../images/val2014/COCO_val2014_000000012230.jpg +../images/val2014/COCO_val2014_000000012370.jpg +../images/val2014/COCO_val2014_000000012375.jpg +../images/val2014/COCO_val2014_000000012448.jpg +../images/val2014/COCO_val2014_000000012543.jpg +../images/val2014/COCO_val2014_000000012744.jpg +../images/val2014/COCO_val2014_000000012897.jpg +../images/val2014/COCO_val2014_000000012966.jpg +../images/val2014/COCO_val2014_000000012993.jpg +../images/val2014/COCO_val2014_000000013004.jpg +../images/val2014/COCO_val2014_000000013333.jpg +../images/val2014/COCO_val2014_000000013357.jpg +../images/val2014/COCO_val2014_000000013774.jpg +../images/val2014/COCO_val2014_000000014029.jpg +../images/val2014/COCO_val2014_000000014056.jpg +../images/val2014/COCO_val2014_000000014108.jpg +../images/val2014/COCO_val2014_000000014135.jpg +../images/val2014/COCO_val2014_000000014226.jpg +../images/val2014/COCO_val2014_000000014306.jpg +../images/val2014/COCO_val2014_000000014591.jpg +../images/val2014/COCO_val2014_000000014629.jpg +../images/val2014/COCO_val2014_000000014756.jpg +../images/val2014/COCO_val2014_000000014874.jpg +../images/val2014/COCO_val2014_000000014990.jpg +../images/val2014/COCO_val2014_000000015386.jpg +../images/val2014/COCO_val2014_000000015559.jpg +../images/val2014/COCO_val2014_000000015599.jpg +../images/val2014/COCO_val2014_000000015709.jpg +../images/val2014/COCO_val2014_000000015735.jpg +../images/val2014/COCO_val2014_000000015751.jpg +../images/val2014/COCO_val2014_000000015883.jpg +../images/val2014/COCO_val2014_000000015953.jpg +../images/val2014/COCO_val2014_000000015956.jpg +../images/val2014/COCO_val2014_000000015968.jpg +../images/val2014/COCO_val2014_000000015987.jpg +../images/val2014/COCO_val2014_000000016030.jpg +../images/val2014/COCO_val2014_000000016076.jpg +../images/val2014/COCO_val2014_000000016228.jpg +../images/val2014/COCO_val2014_000000016241.jpg +../images/val2014/COCO_val2014_000000016257.jpg +../images/val2014/COCO_val2014_000000016327.jpg +../images/val2014/COCO_val2014_000000016410.jpg +../images/val2014/COCO_val2014_000000016574.jpg +../images/val2014/COCO_val2014_000000016716.jpg +../images/val2014/COCO_val2014_000000016928.jpg +../images/val2014/COCO_val2014_000000016995.jpg +../images/val2014/COCO_val2014_000000017235.jpg +../images/val2014/COCO_val2014_000000017379.jpg +../images/val2014/COCO_val2014_000000017667.jpg +../images/val2014/COCO_val2014_000000017755.jpg +../images/val2014/COCO_val2014_000000018295.jpg +../images/val2014/COCO_val2014_000000018358.jpg +../images/val2014/COCO_val2014_000000018476.jpg +../images/val2014/COCO_val2014_000000018750.jpg +../images/val2014/COCO_val2014_000000018783.jpg +../images/val2014/COCO_val2014_000000019025.jpg +../images/val2014/COCO_val2014_000000019042.jpg +../images/val2014/COCO_val2014_000000019129.jpg +../images/val2014/COCO_val2014_000000019176.jpg +../images/val2014/COCO_val2014_000000019491.jpg +../images/val2014/COCO_val2014_000000019890.jpg +../images/val2014/COCO_val2014_000000019923.jpg +../images/val2014/COCO_val2014_000000020001.jpg +../images/val2014/COCO_val2014_000000020038.jpg +../images/val2014/COCO_val2014_000000020175.jpg +../images/val2014/COCO_val2014_000000020268.jpg +../images/val2014/COCO_val2014_000000020273.jpg +../images/val2014/COCO_val2014_000000020349.jpg +../images/val2014/COCO_val2014_000000020553.jpg +../images/val2014/COCO_val2014_000000020788.jpg +../images/val2014/COCO_val2014_000000020912.jpg +../images/val2014/COCO_val2014_000000020947.jpg +../images/val2014/COCO_val2014_000000020972.jpg +../images/val2014/COCO_val2014_000000021161.jpg +../images/val2014/COCO_val2014_000000021483.jpg +../images/val2014/COCO_val2014_000000021588.jpg +../images/val2014/COCO_val2014_000000021639.jpg +../images/val2014/COCO_val2014_000000021644.jpg +../images/val2014/COCO_val2014_000000021645.jpg +../images/val2014/COCO_val2014_000000021671.jpg +../images/val2014/COCO_val2014_000000021746.jpg +../images/val2014/COCO_val2014_000000021839.jpg +../images/val2014/COCO_val2014_000000022002.jpg +../images/val2014/COCO_val2014_000000022129.jpg +../images/val2014/COCO_val2014_000000022191.jpg +../images/val2014/COCO_val2014_000000022215.jpg +../images/val2014/COCO_val2014_000000022341.jpg +../images/val2014/COCO_val2014_000000022492.jpg +../images/val2014/COCO_val2014_000000022563.jpg +../images/val2014/COCO_val2014_000000022660.jpg +../images/val2014/COCO_val2014_000000022705.jpg +../images/val2014/COCO_val2014_000000023017.jpg +../images/val2014/COCO_val2014_000000023309.jpg +../images/val2014/COCO_val2014_000000023411.jpg +../images/val2014/COCO_val2014_000000023754.jpg +../images/val2014/COCO_val2014_000000023802.jpg +../images/val2014/COCO_val2014_000000023981.jpg +../images/val2014/COCO_val2014_000000023995.jpg +../images/val2014/COCO_val2014_000000024112.jpg +../images/val2014/COCO_val2014_000000024247.jpg +../images/val2014/COCO_val2014_000000024396.jpg +../images/val2014/COCO_val2014_000000024776.jpg +../images/val2014/COCO_val2014_000000024924.jpg +../images/val2014/COCO_val2014_000000025096.jpg +../images/val2014/COCO_val2014_000000025191.jpg +../images/val2014/COCO_val2014_000000025252.jpg +../images/val2014/COCO_val2014_000000025293.jpg +../images/val2014/COCO_val2014_000000025360.jpg +../images/val2014/COCO_val2014_000000025595.jpg +../images/val2014/COCO_val2014_000000025685.jpg +../images/val2014/COCO_val2014_000000025807.jpg +../images/val2014/COCO_val2014_000000025864.jpg +../images/val2014/COCO_val2014_000000025989.jpg +../images/val2014/COCO_val2014_000000026026.jpg +../images/val2014/COCO_val2014_000000026430.jpg +../images/val2014/COCO_val2014_000000026432.jpg +../images/val2014/COCO_val2014_000000026534.jpg +../images/val2014/COCO_val2014_000000026560.jpg +../images/val2014/COCO_val2014_000000026564.jpg +../images/val2014/COCO_val2014_000000026671.jpg +../images/val2014/COCO_val2014_000000026690.jpg +../images/val2014/COCO_val2014_000000026734.jpg +../images/val2014/COCO_val2014_000000026799.jpg +../images/val2014/COCO_val2014_000000026907.jpg +../images/val2014/COCO_val2014_000000026908.jpg +../images/val2014/COCO_val2014_000000026946.jpg +../images/val2014/COCO_val2014_000000027530.jpg +../images/val2014/COCO_val2014_000000027610.jpg +../images/val2014/COCO_val2014_000000027620.jpg +../images/val2014/COCO_val2014_000000027787.jpg +../images/val2014/COCO_val2014_000000027789.jpg +../images/val2014/COCO_val2014_000000027874.jpg +../images/val2014/COCO_val2014_000000027946.jpg +../images/val2014/COCO_val2014_000000027975.jpg +../images/val2014/COCO_val2014_000000028022.jpg +../images/val2014/COCO_val2014_000000028039.jpg +../images/val2014/COCO_val2014_000000028273.jpg +../images/val2014/COCO_val2014_000000028540.jpg +../images/val2014/COCO_val2014_000000028702.jpg +../images/val2014/COCO_val2014_000000028820.jpg +../images/val2014/COCO_val2014_000000028874.jpg +../images/val2014/COCO_val2014_000000029019.jpg +../images/val2014/COCO_val2014_000000029030.jpg +../images/val2014/COCO_val2014_000000029170.jpg +../images/val2014/COCO_val2014_000000029308.jpg +../images/val2014/COCO_val2014_000000029393.jpg +../images/val2014/COCO_val2014_000000029524.jpg +../images/val2014/COCO_val2014_000000029577.jpg +../images/val2014/COCO_val2014_000000029648.jpg +../images/val2014/COCO_val2014_000000029656.jpg +../images/val2014/COCO_val2014_000000029697.jpg +../images/val2014/COCO_val2014_000000029709.jpg +../images/val2014/COCO_val2014_000000029719.jpg +../images/val2014/COCO_val2014_000000030034.jpg +../images/val2014/COCO_val2014_000000030062.jpg +../images/val2014/COCO_val2014_000000030383.jpg +../images/val2014/COCO_val2014_000000030470.jpg +../images/val2014/COCO_val2014_000000030548.jpg +../images/val2014/COCO_val2014_000000030668.jpg +../images/val2014/COCO_val2014_000000030793.jpg +../images/val2014/COCO_val2014_000000030843.jpg +../images/val2014/COCO_val2014_000000030998.jpg +../images/val2014/COCO_val2014_000000031151.jpg +../images/val2014/COCO_val2014_000000031164.jpg +../images/val2014/COCO_val2014_000000031176.jpg +../images/val2014/COCO_val2014_000000031247.jpg +../images/val2014/COCO_val2014_000000031392.jpg +../images/val2014/COCO_val2014_000000031521.jpg +../images/val2014/COCO_val2014_000000031542.jpg +../images/val2014/COCO_val2014_000000031817.jpg +../images/val2014/COCO_val2014_000000032081.jpg +../images/val2014/COCO_val2014_000000032193.jpg +../images/val2014/COCO_val2014_000000032331.jpg +../images/val2014/COCO_val2014_000000032464.jpg +../images/val2014/COCO_val2014_000000032510.jpg +../images/val2014/COCO_val2014_000000032524.jpg +../images/val2014/COCO_val2014_000000032625.jpg +../images/val2014/COCO_val2014_000000032677.jpg +../images/val2014/COCO_val2014_000000032715.jpg +../images/val2014/COCO_val2014_000000032947.jpg +../images/val2014/COCO_val2014_000000032964.jpg +../images/val2014/COCO_val2014_000000033006.jpg +../images/val2014/COCO_val2014_000000033055.jpg +../images/val2014/COCO_val2014_000000033158.jpg +../images/val2014/COCO_val2014_000000033243.jpg +../images/val2014/COCO_val2014_000000033345.jpg +../images/val2014/COCO_val2014_000000033499.jpg +../images/val2014/COCO_val2014_000000033561.jpg +../images/val2014/COCO_val2014_000000033830.jpg +../images/val2014/COCO_val2014_000000033835.jpg +../images/val2014/COCO_val2014_000000033924.jpg +../images/val2014/COCO_val2014_000000034056.jpg +../images/val2014/COCO_val2014_000000034114.jpg +../images/val2014/COCO_val2014_000000034137.jpg +../images/val2014/COCO_val2014_000000034183.jpg +../images/val2014/COCO_val2014_000000034193.jpg +../images/val2014/COCO_val2014_000000034299.jpg +../images/val2014/COCO_val2014_000000034452.jpg +../images/val2014/COCO_val2014_000000034689.jpg +../images/val2014/COCO_val2014_000000034877.jpg +../images/val2014/COCO_val2014_000000034892.jpg +../images/val2014/COCO_val2014_000000034930.jpg +../images/val2014/COCO_val2014_000000035012.jpg +../images/val2014/COCO_val2014_000000035222.jpg +../images/val2014/COCO_val2014_000000035326.jpg +../images/val2014/COCO_val2014_000000035368.jpg +../images/val2014/COCO_val2014_000000035474.jpg +../images/val2014/COCO_val2014_000000035498.jpg +../images/val2014/COCO_val2014_000000035738.jpg +../images/val2014/COCO_val2014_000000035826.jpg +../images/val2014/COCO_val2014_000000035940.jpg +../images/val2014/COCO_val2014_000000035966.jpg +../images/val2014/COCO_val2014_000000036049.jpg +../images/val2014/COCO_val2014_000000036252.jpg +../images/val2014/COCO_val2014_000000036508.jpg +../images/val2014/COCO_val2014_000000036522.jpg +../images/val2014/COCO_val2014_000000036539.jpg +../images/val2014/COCO_val2014_000000036563.jpg +../images/val2014/COCO_val2014_000000037038.jpg +../images/val2014/COCO_val2014_000000037629.jpg +../images/val2014/COCO_val2014_000000037675.jpg +../images/val2014/COCO_val2014_000000037846.jpg +../images/val2014/COCO_val2014_000000037865.jpg +../images/val2014/COCO_val2014_000000037907.jpg +../images/val2014/COCO_val2014_000000037988.jpg +../images/val2014/COCO_val2014_000000038031.jpg +../images/val2014/COCO_val2014_000000038190.jpg +../images/val2014/COCO_val2014_000000038252.jpg +../images/val2014/COCO_val2014_000000038296.jpg +../images/val2014/COCO_val2014_000000038465.jpg +../images/val2014/COCO_val2014_000000038488.jpg +../images/val2014/COCO_val2014_000000038531.jpg +../images/val2014/COCO_val2014_000000038539.jpg +../images/val2014/COCO_val2014_000000038645.jpg +../images/val2014/COCO_val2014_000000038685.jpg +../images/val2014/COCO_val2014_000000038825.jpg +../images/val2014/COCO_val2014_000000039322.jpg +../images/val2014/COCO_val2014_000000039480.jpg +../images/val2014/COCO_val2014_000000039697.jpg +../images/val2014/COCO_val2014_000000039731.jpg +../images/val2014/COCO_val2014_000000039743.jpg +../images/val2014/COCO_val2014_000000039785.jpg +../images/val2014/COCO_val2014_000000039961.jpg +../images/val2014/COCO_val2014_000000040426.jpg +../images/val2014/COCO_val2014_000000040485.jpg +../images/val2014/COCO_val2014_000000040681.jpg +../images/val2014/COCO_val2014_000000040686.jpg +../images/val2014/COCO_val2014_000000040886.jpg +../images/val2014/COCO_val2014_000000041119.jpg +../images/val2014/COCO_val2014_000000041147.jpg +../images/val2014/COCO_val2014_000000041322.jpg +../images/val2014/COCO_val2014_000000041373.jpg +../images/val2014/COCO_val2014_000000041550.jpg +../images/val2014/COCO_val2014_000000041635.jpg +../images/val2014/COCO_val2014_000000041867.jpg +../images/val2014/COCO_val2014_000000041872.jpg +../images/val2014/COCO_val2014_000000041924.jpg +../images/val2014/COCO_val2014_000000042137.jpg +../images/val2014/COCO_val2014_000000042279.jpg +../images/val2014/COCO_val2014_000000042492.jpg +../images/val2014/COCO_val2014_000000042576.jpg +../images/val2014/COCO_val2014_000000042661.jpg +../images/val2014/COCO_val2014_000000042743.jpg +../images/val2014/COCO_val2014_000000042805.jpg +../images/val2014/COCO_val2014_000000042837.jpg +../images/val2014/COCO_val2014_000000043165.jpg +../images/val2014/COCO_val2014_000000043218.jpg +../images/val2014/COCO_val2014_000000043261.jpg +../images/val2014/COCO_val2014_000000043404.jpg +../images/val2014/COCO_val2014_000000043542.jpg +../images/val2014/COCO_val2014_000000043605.jpg +../images/val2014/COCO_val2014_000000043614.jpg +../images/val2014/COCO_val2014_000000043673.jpg +../images/val2014/COCO_val2014_000000043816.jpg +../images/val2014/COCO_val2014_000000043850.jpg +../images/val2014/COCO_val2014_000000044220.jpg +../images/val2014/COCO_val2014_000000044269.jpg +../images/val2014/COCO_val2014_000000044309.jpg +../images/val2014/COCO_val2014_000000044478.jpg +../images/val2014/COCO_val2014_000000044536.jpg +../images/val2014/COCO_val2014_000000044559.jpg +../images/val2014/COCO_val2014_000000044575.jpg +../images/val2014/COCO_val2014_000000044612.jpg +../images/val2014/COCO_val2014_000000044677.jpg +../images/val2014/COCO_val2014_000000044699.jpg +../images/val2014/COCO_val2014_000000044823.jpg +../images/val2014/COCO_val2014_000000044989.jpg +../images/val2014/COCO_val2014_000000045094.jpg +../images/val2014/COCO_val2014_000000045176.jpg +../images/val2014/COCO_val2014_000000045197.jpg +../images/val2014/COCO_val2014_000000045367.jpg +../images/val2014/COCO_val2014_000000045392.jpg +../images/val2014/COCO_val2014_000000045433.jpg +../images/val2014/COCO_val2014_000000045463.jpg +../images/val2014/COCO_val2014_000000045550.jpg +../images/val2014/COCO_val2014_000000045574.jpg +../images/val2014/COCO_val2014_000000045627.jpg +../images/val2014/COCO_val2014_000000045685.jpg +../images/val2014/COCO_val2014_000000045728.jpg +../images/val2014/COCO_val2014_000000046252.jpg +../images/val2014/COCO_val2014_000000046269.jpg +../images/val2014/COCO_val2014_000000046329.jpg +../images/val2014/COCO_val2014_000000046805.jpg +../images/val2014/COCO_val2014_000000046869.jpg +../images/val2014/COCO_val2014_000000046919.jpg +../images/val2014/COCO_val2014_000000046924.jpg +../images/val2014/COCO_val2014_000000047008.jpg +../images/val2014/COCO_val2014_000000047131.jpg +../images/val2014/COCO_val2014_000000047226.jpg +../images/val2014/COCO_val2014_000000047263.jpg +../images/val2014/COCO_val2014_000000047395.jpg +../images/val2014/COCO_val2014_000000047552.jpg +../images/val2014/COCO_val2014_000000047570.jpg +../images/val2014/COCO_val2014_000000047720.jpg +../images/val2014/COCO_val2014_000000047775.jpg +../images/val2014/COCO_val2014_000000047886.jpg +../images/val2014/COCO_val2014_000000048504.jpg +../images/val2014/COCO_val2014_000000048564.jpg +../images/val2014/COCO_val2014_000000048668.jpg +../images/val2014/COCO_val2014_000000048731.jpg +../images/val2014/COCO_val2014_000000048739.jpg +../images/val2014/COCO_val2014_000000048791.jpg +../images/val2014/COCO_val2014_000000048840.jpg +../images/val2014/COCO_val2014_000000048905.jpg +../images/val2014/COCO_val2014_000000048910.jpg +../images/val2014/COCO_val2014_000000048924.jpg +../images/val2014/COCO_val2014_000000048956.jpg +../images/val2014/COCO_val2014_000000049075.jpg +../images/val2014/COCO_val2014_000000049236.jpg +../images/val2014/COCO_val2014_000000049676.jpg +../images/val2014/COCO_val2014_000000049881.jpg +../images/val2014/COCO_val2014_000000049985.jpg +../images/val2014/COCO_val2014_000000050100.jpg +../images/val2014/COCO_val2014_000000050145.jpg +../images/val2014/COCO_val2014_000000050177.jpg +../images/val2014/COCO_val2014_000000050324.jpg +../images/val2014/COCO_val2014_000000050331.jpg +../images/val2014/COCO_val2014_000000050481.jpg +../images/val2014/COCO_val2014_000000050485.jpg +../images/val2014/COCO_val2014_000000050493.jpg +../images/val2014/COCO_val2014_000000050746.jpg +../images/val2014/COCO_val2014_000000050844.jpg +../images/val2014/COCO_val2014_000000050896.jpg +../images/val2014/COCO_val2014_000000051249.jpg +../images/val2014/COCO_val2014_000000051250.jpg +../images/val2014/COCO_val2014_000000051289.jpg +../images/val2014/COCO_val2014_000000051314.jpg +../images/val2014/COCO_val2014_000000051339.jpg +../images/val2014/COCO_val2014_000000051461.jpg +../images/val2014/COCO_val2014_000000051476.jpg +../images/val2014/COCO_val2014_000000052005.jpg +../images/val2014/COCO_val2014_000000052020.jpg +../images/val2014/COCO_val2014_000000052290.jpg +../images/val2014/COCO_val2014_000000052314.jpg +../images/val2014/COCO_val2014_000000052425.jpg +../images/val2014/COCO_val2014_000000052575.jpg +../images/val2014/COCO_val2014_000000052871.jpg +../images/val2014/COCO_val2014_000000052982.jpg +../images/val2014/COCO_val2014_000000053139.jpg +../images/val2014/COCO_val2014_000000053183.jpg +../images/val2014/COCO_val2014_000000053263.jpg +../images/val2014/COCO_val2014_000000053491.jpg +../images/val2014/COCO_val2014_000000053503.jpg +../images/val2014/COCO_val2014_000000053580.jpg +../images/val2014/COCO_val2014_000000053616.jpg +../images/val2014/COCO_val2014_000000053907.jpg +../images/val2014/COCO_val2014_000000053949.jpg +../images/val2014/COCO_val2014_000000054301.jpg +../images/val2014/COCO_val2014_000000054334.jpg +../images/val2014/COCO_val2014_000000054490.jpg +../images/val2014/COCO_val2014_000000054527.jpg +../images/val2014/COCO_val2014_000000054533.jpg +../images/val2014/COCO_val2014_000000054603.jpg +../images/val2014/COCO_val2014_000000054643.jpg +../images/val2014/COCO_val2014_000000054679.jpg +../images/val2014/COCO_val2014_000000054723.jpg +../images/val2014/COCO_val2014_000000054959.jpg +../images/val2014/COCO_val2014_000000055167.jpg +../images/val2014/COCO_val2014_000000056137.jpg +../images/val2014/COCO_val2014_000000056326.jpg +../images/val2014/COCO_val2014_000000056541.jpg +../images/val2014/COCO_val2014_000000056562.jpg +../images/val2014/COCO_val2014_000000056624.jpg +../images/val2014/COCO_val2014_000000056633.jpg +../images/val2014/COCO_val2014_000000056724.jpg +../images/val2014/COCO_val2014_000000056739.jpg +../images/val2014/COCO_val2014_000000057027.jpg +../images/val2014/COCO_val2014_000000057091.jpg +../images/val2014/COCO_val2014_000000057095.jpg +../images/val2014/COCO_val2014_000000057100.jpg +../images/val2014/COCO_val2014_000000057149.jpg +../images/val2014/COCO_val2014_000000057238.jpg +../images/val2014/COCO_val2014_000000057359.jpg +../images/val2014/COCO_val2014_000000057454.jpg +../images/val2014/COCO_val2014_000000058001.jpg +../images/val2014/COCO_val2014_000000058157.jpg +../images/val2014/COCO_val2014_000000058223.jpg +../images/val2014/COCO_val2014_000000058232.jpg +../images/val2014/COCO_val2014_000000058344.jpg +../images/val2014/COCO_val2014_000000058522.jpg +../images/val2014/COCO_val2014_000000058636.jpg +../images/val2014/COCO_val2014_000000058800.jpg +../images/val2014/COCO_val2014_000000058949.jpg +../images/val2014/COCO_val2014_000000059009.jpg +../images/val2014/COCO_val2014_000000059202.jpg +../images/val2014/COCO_val2014_000000059393.jpg +../images/val2014/COCO_val2014_000000059652.jpg +../images/val2014/COCO_val2014_000000060010.jpg +../images/val2014/COCO_val2014_000000060049.jpg +../images/val2014/COCO_val2014_000000060126.jpg +../images/val2014/COCO_val2014_000000060128.jpg +../images/val2014/COCO_val2014_000000060448.jpg +../images/val2014/COCO_val2014_000000060548.jpg +../images/val2014/COCO_val2014_000000060677.jpg +../images/val2014/COCO_val2014_000000060760.jpg +../images/val2014/COCO_val2014_000000060823.jpg +../images/val2014/COCO_val2014_000000060859.jpg +../images/val2014/COCO_val2014_000000060899.jpg +../images/val2014/COCO_val2014_000000061171.jpg +../images/val2014/COCO_val2014_000000061503.jpg +../images/val2014/COCO_val2014_000000061520.jpg +../images/val2014/COCO_val2014_000000061531.jpg +../images/val2014/COCO_val2014_000000061564.jpg +../images/val2014/COCO_val2014_000000061658.jpg +../images/val2014/COCO_val2014_000000061693.jpg +../images/val2014/COCO_val2014_000000061717.jpg +../images/val2014/COCO_val2014_000000061836.jpg +../images/val2014/COCO_val2014_000000062041.jpg +../images/val2014/COCO_val2014_000000062060.jpg +../images/val2014/COCO_val2014_000000062198.jpg +../images/val2014/COCO_val2014_000000062200.jpg +../images/val2014/COCO_val2014_000000062220.jpg +../images/val2014/COCO_val2014_000000062623.jpg +../images/val2014/COCO_val2014_000000062726.jpg +../images/val2014/COCO_val2014_000000062875.jpg +../images/val2014/COCO_val2014_000000063047.jpg +../images/val2014/COCO_val2014_000000063114.jpg +../images/val2014/COCO_val2014_000000063488.jpg +../images/val2014/COCO_val2014_000000063671.jpg +../images/val2014/COCO_val2014_000000063715.jpg +../images/val2014/COCO_val2014_000000063804.jpg +../images/val2014/COCO_val2014_000000063882.jpg +../images/val2014/COCO_val2014_000000063939.jpg +../images/val2014/COCO_val2014_000000063965.jpg +../images/val2014/COCO_val2014_000000064155.jpg +../images/val2014/COCO_val2014_000000064189.jpg +../images/val2014/COCO_val2014_000000064196.jpg +../images/val2014/COCO_val2014_000000064495.jpg +../images/val2014/COCO_val2014_000000064610.jpg +../images/val2014/COCO_val2014_000000064693.jpg +../images/val2014/COCO_val2014_000000064746.jpg +../images/val2014/COCO_val2014_000000064760.jpg +../images/val2014/COCO_val2014_000000064796.jpg +../images/val2014/COCO_val2014_000000064865.jpg +../images/val2014/COCO_val2014_000000064915.jpg +../images/val2014/COCO_val2014_000000065074.jpg +../images/val2014/COCO_val2014_000000065124.jpg +../images/val2014/COCO_val2014_000000065258.jpg +../images/val2014/COCO_val2014_000000065267.jpg +../images/val2014/COCO_val2014_000000065430.jpg +../images/val2014/COCO_val2014_000000065465.jpg +../images/val2014/COCO_val2014_000000065942.jpg +../images/val2014/COCO_val2014_000000066001.jpg +../images/val2014/COCO_val2014_000000066064.jpg +../images/val2014/COCO_val2014_000000066072.jpg +../images/val2014/COCO_val2014_000000066239.jpg +../images/val2014/COCO_val2014_000000066243.jpg +../images/val2014/COCO_val2014_000000066355.jpg +../images/val2014/COCO_val2014_000000066412.jpg +../images/val2014/COCO_val2014_000000066423.jpg +../images/val2014/COCO_val2014_000000066427.jpg +../images/val2014/COCO_val2014_000000066502.jpg +../images/val2014/COCO_val2014_000000066519.jpg +../images/val2014/COCO_val2014_000000066561.jpg +../images/val2014/COCO_val2014_000000066700.jpg +../images/val2014/COCO_val2014_000000066717.jpg +../images/val2014/COCO_val2014_000000066879.jpg +../images/val2014/COCO_val2014_000000067178.jpg +../images/val2014/COCO_val2014_000000067207.jpg +../images/val2014/COCO_val2014_000000067218.jpg +../images/val2014/COCO_val2014_000000067412.jpg +../images/val2014/COCO_val2014_000000067532.jpg +../images/val2014/COCO_val2014_000000067590.jpg +../images/val2014/COCO_val2014_000000067660.jpg +../images/val2014/COCO_val2014_000000067686.jpg +../images/val2014/COCO_val2014_000000067704.jpg +../images/val2014/COCO_val2014_000000067776.jpg +../images/val2014/COCO_val2014_000000067948.jpg +../images/val2014/COCO_val2014_000000067953.jpg +../images/val2014/COCO_val2014_000000068059.jpg +../images/val2014/COCO_val2014_000000068204.jpg +../images/val2014/COCO_val2014_000000068205.jpg +../images/val2014/COCO_val2014_000000068409.jpg +../images/val2014/COCO_val2014_000000068435.jpg +../images/val2014/COCO_val2014_000000068520.jpg +../images/val2014/COCO_val2014_000000068546.jpg +../images/val2014/COCO_val2014_000000068674.jpg +../images/val2014/COCO_val2014_000000068745.jpg +../images/val2014/COCO_val2014_000000069009.jpg +../images/val2014/COCO_val2014_000000069077.jpg +../images/val2014/COCO_val2014_000000069196.jpg +../images/val2014/COCO_val2014_000000069356.jpg +../images/val2014/COCO_val2014_000000069568.jpg +../images/val2014/COCO_val2014_000000069577.jpg +../images/val2014/COCO_val2014_000000069698.jpg +../images/val2014/COCO_val2014_000000070493.jpg +../images/val2014/COCO_val2014_000000070896.jpg +../images/val2014/COCO_val2014_000000071023.jpg +../images/val2014/COCO_val2014_000000071123.jpg +../images/val2014/COCO_val2014_000000071241.jpg +../images/val2014/COCO_val2014_000000071301.jpg +../images/val2014/COCO_val2014_000000071345.jpg +../images/val2014/COCO_val2014_000000071451.jpg +../images/val2014/COCO_val2014_000000071673.jpg +../images/val2014/COCO_val2014_000000071826.jpg +../images/val2014/COCO_val2014_000000071986.jpg +../images/val2014/COCO_val2014_000000072004.jpg +../images/val2014/COCO_val2014_000000072020.jpg +../images/val2014/COCO_val2014_000000072052.jpg +../images/val2014/COCO_val2014_000000072281.jpg +../images/val2014/COCO_val2014_000000072368.jpg +../images/val2014/COCO_val2014_000000072737.jpg +../images/val2014/COCO_val2014_000000072797.jpg +../images/val2014/COCO_val2014_000000072860.jpg +../images/val2014/COCO_val2014_000000073009.jpg +../images/val2014/COCO_val2014_000000073039.jpg +../images/val2014/COCO_val2014_000000073239.jpg +../images/val2014/COCO_val2014_000000073467.jpg +../images/val2014/COCO_val2014_000000073491.jpg +../images/val2014/COCO_val2014_000000073588.jpg +../images/val2014/COCO_val2014_000000073729.jpg +../images/val2014/COCO_val2014_000000073973.jpg +../images/val2014/COCO_val2014_000000074037.jpg +../images/val2014/COCO_val2014_000000074137.jpg +../images/val2014/COCO_val2014_000000074268.jpg +../images/val2014/COCO_val2014_000000074434.jpg +../images/val2014/COCO_val2014_000000074789.jpg +../images/val2014/COCO_val2014_000000074963.jpg +../images/val2014/COCO_val2014_000000075033.jpg +../images/val2014/COCO_val2014_000000075372.jpg +../images/val2014/COCO_val2014_000000075527.jpg +../images/val2014/COCO_val2014_000000075646.jpg +../images/val2014/COCO_val2014_000000075713.jpg +../images/val2014/COCO_val2014_000000075775.jpg +../images/val2014/COCO_val2014_000000075786.jpg +../images/val2014/COCO_val2014_000000075886.jpg +../images/val2014/COCO_val2014_000000076087.jpg +../images/val2014/COCO_val2014_000000076257.jpg +../images/val2014/COCO_val2014_000000076521.jpg +../images/val2014/COCO_val2014_000000076572.jpg +../images/val2014/COCO_val2014_000000076844.jpg +../images/val2014/COCO_val2014_000000077178.jpg +../images/val2014/COCO_val2014_000000077181.jpg +../images/val2014/COCO_val2014_000000077184.jpg +../images/val2014/COCO_val2014_000000077396.jpg +../images/val2014/COCO_val2014_000000077400.jpg +../images/val2014/COCO_val2014_000000077415.jpg +../images/val2014/COCO_val2014_000000078565.jpg +../images/val2014/COCO_val2014_000000078701.jpg +../images/val2014/COCO_val2014_000000078843.jpg +../images/val2014/COCO_val2014_000000078929.jpg +../images/val2014/COCO_val2014_000000079084.jpg +../images/val2014/COCO_val2014_000000079188.jpg +../images/val2014/COCO_val2014_000000079544.jpg +../images/val2014/COCO_val2014_000000079566.jpg +../images/val2014/COCO_val2014_000000079588.jpg +../images/val2014/COCO_val2014_000000079689.jpg +../images/val2014/COCO_val2014_000000080104.jpg +../images/val2014/COCO_val2014_000000080172.jpg +../images/val2014/COCO_val2014_000000080219.jpg +../images/val2014/COCO_val2014_000000080300.jpg +../images/val2014/COCO_val2014_000000080395.jpg +../images/val2014/COCO_val2014_000000080522.jpg +../images/val2014/COCO_val2014_000000080714.jpg +../images/val2014/COCO_val2014_000000080737.jpg +../images/val2014/COCO_val2014_000000080747.jpg +../images/val2014/COCO_val2014_000000081000.jpg +../images/val2014/COCO_val2014_000000081081.jpg +../images/val2014/COCO_val2014_000000081100.jpg +../images/val2014/COCO_val2014_000000081287.jpg +../images/val2014/COCO_val2014_000000081394.jpg +../images/val2014/COCO_val2014_000000081552.jpg +../images/val2014/COCO_val2014_000000082157.jpg +../images/val2014/COCO_val2014_000000082252.jpg +../images/val2014/COCO_val2014_000000082259.jpg +../images/val2014/COCO_val2014_000000082367.jpg +../images/val2014/COCO_val2014_000000082431.jpg +../images/val2014/COCO_val2014_000000082456.jpg +../images/val2014/COCO_val2014_000000082794.jpg +../images/val2014/COCO_val2014_000000082807.jpg +../images/val2014/COCO_val2014_000000082846.jpg +../images/val2014/COCO_val2014_000000082847.jpg +../images/val2014/COCO_val2014_000000082889.jpg +../images/val2014/COCO_val2014_000000082981.jpg +../images/val2014/COCO_val2014_000000083036.jpg +../images/val2014/COCO_val2014_000000083065.jpg +../images/val2014/COCO_val2014_000000083142.jpg +../images/val2014/COCO_val2014_000000083275.jpg +../images/val2014/COCO_val2014_000000083557.jpg +../images/val2014/COCO_val2014_000000084073.jpg +../images/val2014/COCO_val2014_000000084447.jpg +../images/val2014/COCO_val2014_000000084463.jpg +../images/val2014/COCO_val2014_000000084592.jpg +../images/val2014/COCO_val2014_000000084674.jpg +../images/val2014/COCO_val2014_000000084762.jpg +../images/val2014/COCO_val2014_000000084870.jpg +../images/val2014/COCO_val2014_000000084929.jpg +../images/val2014/COCO_val2014_000000084980.jpg +../images/val2014/COCO_val2014_000000085101.jpg +../images/val2014/COCO_val2014_000000085292.jpg +../images/val2014/COCO_val2014_000000085353.jpg +../images/val2014/COCO_val2014_000000085674.jpg +../images/val2014/COCO_val2014_000000085813.jpg +../images/val2014/COCO_val2014_000000086011.jpg +../images/val2014/COCO_val2014_000000086133.jpg +../images/val2014/COCO_val2014_000000086136.jpg +../images/val2014/COCO_val2014_000000086215.jpg +../images/val2014/COCO_val2014_000000086220.jpg +../images/val2014/COCO_val2014_000000086249.jpg +../images/val2014/COCO_val2014_000000086320.jpg +../images/val2014/COCO_val2014_000000086357.jpg +../images/val2014/COCO_val2014_000000086429.jpg +../images/val2014/COCO_val2014_000000086467.jpg +../images/val2014/COCO_val2014_000000086483.jpg +../images/val2014/COCO_val2014_000000086646.jpg +../images/val2014/COCO_val2014_000000086755.jpg +../images/val2014/COCO_val2014_000000086839.jpg +../images/val2014/COCO_val2014_000000086848.jpg +../images/val2014/COCO_val2014_000000086877.jpg +../images/val2014/COCO_val2014_000000087038.jpg +../images/val2014/COCO_val2014_000000087244.jpg +../images/val2014/COCO_val2014_000000087354.jpg +../images/val2014/COCO_val2014_000000087387.jpg +../images/val2014/COCO_val2014_000000087489.jpg +../images/val2014/COCO_val2014_000000087503.jpg +../images/val2014/COCO_val2014_000000087617.jpg +../images/val2014/COCO_val2014_000000087638.jpg +../images/val2014/COCO_val2014_000000087740.jpg +../images/val2014/COCO_val2014_000000087875.jpg +../images/val2014/COCO_val2014_000000088360.jpg +../images/val2014/COCO_val2014_000000088507.jpg +../images/val2014/COCO_val2014_000000088560.jpg +../images/val2014/COCO_val2014_000000088846.jpg +../images/val2014/COCO_val2014_000000088859.jpg +../images/val2014/COCO_val2014_000000088902.jpg +../images/val2014/COCO_val2014_000000089027.jpg +../images/val2014/COCO_val2014_000000089258.jpg +../images/val2014/COCO_val2014_000000089285.jpg +../images/val2014/COCO_val2014_000000089359.jpg +../images/val2014/COCO_val2014_000000089378.jpg +../images/val2014/COCO_val2014_000000089391.jpg +../images/val2014/COCO_val2014_000000089487.jpg +../images/val2014/COCO_val2014_000000089618.jpg +../images/val2014/COCO_val2014_000000089670.jpg +../images/val2014/COCO_val2014_000000090003.jpg +../images/val2014/COCO_val2014_000000090062.jpg +../images/val2014/COCO_val2014_000000090155.jpg +../images/val2014/COCO_val2014_000000090208.jpg +../images/val2014/COCO_val2014_000000090351.jpg +../images/val2014/COCO_val2014_000000090476.jpg +../images/val2014/COCO_val2014_000000090594.jpg +../images/val2014/COCO_val2014_000000090753.jpg +../images/val2014/COCO_val2014_000000090754.jpg +../images/val2014/COCO_val2014_000000090864.jpg +../images/val2014/COCO_val2014_000000091079.jpg +../images/val2014/COCO_val2014_000000091341.jpg +../images/val2014/COCO_val2014_000000091402.jpg +../images/val2014/COCO_val2014_000000091517.jpg +../images/val2014/COCO_val2014_000000091520.jpg +../images/val2014/COCO_val2014_000000091612.jpg +../images/val2014/COCO_val2014_000000091716.jpg +../images/val2014/COCO_val2014_000000091766.jpg +../images/val2014/COCO_val2014_000000091857.jpg +../images/val2014/COCO_val2014_000000091899.jpg +../images/val2014/COCO_val2014_000000091912.jpg +../images/val2014/COCO_val2014_000000092093.jpg +../images/val2014/COCO_val2014_000000092124.jpg +../images/val2014/COCO_val2014_000000092679.jpg +../images/val2014/COCO_val2014_000000092683.jpg +../images/val2014/COCO_val2014_000000092939.jpg +../images/val2014/COCO_val2014_000000092985.jpg +../images/val2014/COCO_val2014_000000093175.jpg +../images/val2014/COCO_val2014_000000093236.jpg +../images/val2014/COCO_val2014_000000093331.jpg +../images/val2014/COCO_val2014_000000093434.jpg +../images/val2014/COCO_val2014_000000093607.jpg +../images/val2014/COCO_val2014_000000093806.jpg +../images/val2014/COCO_val2014_000000093964.jpg +../images/val2014/COCO_val2014_000000094012.jpg +../images/val2014/COCO_val2014_000000094033.jpg +../images/val2014/COCO_val2014_000000094046.jpg +../images/val2014/COCO_val2014_000000094052.jpg +../images/val2014/COCO_val2014_000000094055.jpg +../images/val2014/COCO_val2014_000000094501.jpg +../images/val2014/COCO_val2014_000000094619.jpg +../images/val2014/COCO_val2014_000000094746.jpg +../images/val2014/COCO_val2014_000000094795.jpg +../images/val2014/COCO_val2014_000000094846.jpg +../images/val2014/COCO_val2014_000000095062.jpg +../images/val2014/COCO_val2014_000000095063.jpg +../images/val2014/COCO_val2014_000000095227.jpg +../images/val2014/COCO_val2014_000000095441.jpg +../images/val2014/COCO_val2014_000000095551.jpg +../images/val2014/COCO_val2014_000000095670.jpg +../images/val2014/COCO_val2014_000000095770.jpg +../images/val2014/COCO_val2014_000000096110.jpg +../images/val2014/COCO_val2014_000000096288.jpg +../images/val2014/COCO_val2014_000000096327.jpg +../images/val2014/COCO_val2014_000000096351.jpg +../images/val2014/COCO_val2014_000000096618.jpg +../images/val2014/COCO_val2014_000000096654.jpg +../images/val2014/COCO_val2014_000000096762.jpg +../images/val2014/COCO_val2014_000000096769.jpg +../images/val2014/COCO_val2014_000000096998.jpg +../images/val2014/COCO_val2014_000000097017.jpg +../images/val2014/COCO_val2014_000000097048.jpg +../images/val2014/COCO_val2014_000000097080.jpg +../images/val2014/COCO_val2014_000000097240.jpg +../images/val2014/COCO_val2014_000000097479.jpg +../images/val2014/COCO_val2014_000000097577.jpg +../images/val2014/COCO_val2014_000000097610.jpg +../images/val2014/COCO_val2014_000000097656.jpg +../images/val2014/COCO_val2014_000000097667.jpg +../images/val2014/COCO_val2014_000000097682.jpg +../images/val2014/COCO_val2014_000000097748.jpg +../images/val2014/COCO_val2014_000000097868.jpg +../images/val2014/COCO_val2014_000000097899.jpg +../images/val2014/COCO_val2014_000000098018.jpg +../images/val2014/COCO_val2014_000000098043.jpg +../images/val2014/COCO_val2014_000000098095.jpg +../images/val2014/COCO_val2014_000000098194.jpg +../images/val2014/COCO_val2014_000000098280.jpg +../images/val2014/COCO_val2014_000000098283.jpg +../images/val2014/COCO_val2014_000000098599.jpg +../images/val2014/COCO_val2014_000000098872.jpg +../images/val2014/COCO_val2014_000000099026.jpg +../images/val2014/COCO_val2014_000000099260.jpg +../images/val2014/COCO_val2014_000000099389.jpg +../images/val2014/COCO_val2014_000000099707.jpg +../images/val2014/COCO_val2014_000000099961.jpg +../images/val2014/COCO_val2014_000000099996.jpg +../images/val2014/COCO_val2014_000000100000.jpg +../images/val2014/COCO_val2014_000000100006.jpg +../images/val2014/COCO_val2014_000000100083.jpg +../images/val2014/COCO_val2014_000000100166.jpg +../images/val2014/COCO_val2014_000000100187.jpg +../images/val2014/COCO_val2014_000000100245.jpg +../images/val2014/COCO_val2014_000000100343.jpg +../images/val2014/COCO_val2014_000000100428.jpg +../images/val2014/COCO_val2014_000000100582.jpg +../images/val2014/COCO_val2014_000000100723.jpg +../images/val2014/COCO_val2014_000000100726.jpg +../images/val2014/COCO_val2014_000000100909.jpg +../images/val2014/COCO_val2014_000000101059.jpg +../images/val2014/COCO_val2014_000000101145.jpg +../images/val2014/COCO_val2014_000000101567.jpg +../images/val2014/COCO_val2014_000000101623.jpg +../images/val2014/COCO_val2014_000000101703.jpg +../images/val2014/COCO_val2014_000000101884.jpg +../images/val2014/COCO_val2014_000000101948.jpg +../images/val2014/COCO_val2014_000000102331.jpg +../images/val2014/COCO_val2014_000000102421.jpg +../images/val2014/COCO_val2014_000000102439.jpg +../images/val2014/COCO_val2014_000000102446.jpg +../images/val2014/COCO_val2014_000000102461.jpg +../images/val2014/COCO_val2014_000000102466.jpg +../images/val2014/COCO_val2014_000000102478.jpg +../images/val2014/COCO_val2014_000000102594.jpg +../images/val2014/COCO_val2014_000000102598.jpg +../images/val2014/COCO_val2014_000000102665.jpg +../images/val2014/COCO_val2014_000000102707.jpg +../images/val2014/COCO_val2014_000000102848.jpg +../images/val2014/COCO_val2014_000000102906.jpg +../images/val2014/COCO_val2014_000000103122.jpg +../images/val2014/COCO_val2014_000000103255.jpg +../images/val2014/COCO_val2014_000000103272.jpg +../images/val2014/COCO_val2014_000000103379.jpg +../images/val2014/COCO_val2014_000000103413.jpg +../images/val2014/COCO_val2014_000000103431.jpg +../images/val2014/COCO_val2014_000000103509.jpg +../images/val2014/COCO_val2014_000000103538.jpg +../images/val2014/COCO_val2014_000000103667.jpg +../images/val2014/COCO_val2014_000000103747.jpg +../images/val2014/COCO_val2014_000000103931.jpg +../images/val2014/COCO_val2014_000000104002.jpg +../images/val2014/COCO_val2014_000000104455.jpg +../images/val2014/COCO_val2014_000000104486.jpg +../images/val2014/COCO_val2014_000000104494.jpg +../images/val2014/COCO_val2014_000000104495.jpg +../images/val2014/COCO_val2014_000000104893.jpg +../images/val2014/COCO_val2014_000000104965.jpg +../images/val2014/COCO_val2014_000000105040.jpg +../images/val2014/COCO_val2014_000000105102.jpg +../images/val2014/COCO_val2014_000000105156.jpg +../images/val2014/COCO_val2014_000000105264.jpg +../images/val2014/COCO_val2014_000000105291.jpg +../images/val2014/COCO_val2014_000000105367.jpg +../images/val2014/COCO_val2014_000000105647.jpg +../images/val2014/COCO_val2014_000000105668.jpg +../images/val2014/COCO_val2014_000000105711.jpg +../images/val2014/COCO_val2014_000000105866.jpg +../images/val2014/COCO_val2014_000000105973.jpg +../images/val2014/COCO_val2014_000000106096.jpg +../images/val2014/COCO_val2014_000000106120.jpg +../images/val2014/COCO_val2014_000000106314.jpg +../images/val2014/COCO_val2014_000000106351.jpg +../images/val2014/COCO_val2014_000000106641.jpg +../images/val2014/COCO_val2014_000000106661.jpg +../images/val2014/COCO_val2014_000000106757.jpg +../images/val2014/COCO_val2014_000000106793.jpg +../images/val2014/COCO_val2014_000000106849.jpg +../images/val2014/COCO_val2014_000000107004.jpg +../images/val2014/COCO_val2014_000000107123.jpg +../images/val2014/COCO_val2014_000000107183.jpg +../images/val2014/COCO_val2014_000000107227.jpg +../images/val2014/COCO_val2014_000000107244.jpg +../images/val2014/COCO_val2014_000000107304.jpg +../images/val2014/COCO_val2014_000000107542.jpg +../images/val2014/COCO_val2014_000000107741.jpg +../images/val2014/COCO_val2014_000000107831.jpg +../images/val2014/COCO_val2014_000000107839.jpg +../images/val2014/COCO_val2014_000000108051.jpg +../images/val2014/COCO_val2014_000000108152.jpg +../images/val2014/COCO_val2014_000000108212.jpg +../images/val2014/COCO_val2014_000000108380.jpg +../images/val2014/COCO_val2014_000000108408.jpg +../images/val2014/COCO_val2014_000000108531.jpg +../images/val2014/COCO_val2014_000000108761.jpg +../images/val2014/COCO_val2014_000000108864.jpg +../images/val2014/COCO_val2014_000000109055.jpg +../images/val2014/COCO_val2014_000000109092.jpg +../images/val2014/COCO_val2014_000000109178.jpg +../images/val2014/COCO_val2014_000000109216.jpg +../images/val2014/COCO_val2014_000000109231.jpg +../images/val2014/COCO_val2014_000000109308.jpg +../images/val2014/COCO_val2014_000000109486.jpg +../images/val2014/COCO_val2014_000000109819.jpg +../images/val2014/COCO_val2014_000000109869.jpg +../images/val2014/COCO_val2014_000000110313.jpg +../images/val2014/COCO_val2014_000000110389.jpg +../images/val2014/COCO_val2014_000000110562.jpg +../images/val2014/COCO_val2014_000000110617.jpg +../images/val2014/COCO_val2014_000000110638.jpg +../images/val2014/COCO_val2014_000000110881.jpg +../images/val2014/COCO_val2014_000000110884.jpg +../images/val2014/COCO_val2014_000000110951.jpg +../images/val2014/COCO_val2014_000000111004.jpg +../images/val2014/COCO_val2014_000000111014.jpg +../images/val2014/COCO_val2014_000000111024.jpg +../images/val2014/COCO_val2014_000000111076.jpg +../images/val2014/COCO_val2014_000000111179.jpg +../images/val2014/COCO_val2014_000000111590.jpg +../images/val2014/COCO_val2014_000000111593.jpg +../images/val2014/COCO_val2014_000000111878.jpg +../images/val2014/COCO_val2014_000000112298.jpg +../images/val2014/COCO_val2014_000000112388.jpg +../images/val2014/COCO_val2014_000000112394.jpg +../images/val2014/COCO_val2014_000000112440.jpg +../images/val2014/COCO_val2014_000000112751.jpg +../images/val2014/COCO_val2014_000000112818.jpg +../images/val2014/COCO_val2014_000000112820.jpg +../images/val2014/COCO_val2014_000000112830.jpg +../images/val2014/COCO_val2014_000000112928.jpg +../images/val2014/COCO_val2014_000000113139.jpg +../images/val2014/COCO_val2014_000000113173.jpg +../images/val2014/COCO_val2014_000000113313.jpg +../images/val2014/COCO_val2014_000000113440.jpg +../images/val2014/COCO_val2014_000000113559.jpg +../images/val2014/COCO_val2014_000000113570.jpg +../images/val2014/COCO_val2014_000000113579.jpg +../images/val2014/COCO_val2014_000000113590.jpg +../images/val2014/COCO_val2014_000000113757.jpg +../images/val2014/COCO_val2014_000000113977.jpg +../images/val2014/COCO_val2014_000000114033.jpg +../images/val2014/COCO_val2014_000000114055.jpg +../images/val2014/COCO_val2014_000000114090.jpg +../images/val2014/COCO_val2014_000000114147.jpg +../images/val2014/COCO_val2014_000000114239.jpg +../images/val2014/COCO_val2014_000000114503.jpg +../images/val2014/COCO_val2014_000000114907.jpg +../images/val2014/COCO_val2014_000000114926.jpg +../images/val2014/COCO_val2014_000000115069.jpg +../images/val2014/COCO_val2014_000000115070.jpg +../images/val2014/COCO_val2014_000000115128.jpg +../images/val2014/COCO_val2014_000000115870.jpg +../images/val2014/COCO_val2014_000000115898.jpg +../images/val2014/COCO_val2014_000000115930.jpg +../images/val2014/COCO_val2014_000000116226.jpg +../images/val2014/COCO_val2014_000000116556.jpg +../images/val2014/COCO_val2014_000000116667.jpg +../images/val2014/COCO_val2014_000000116696.jpg +../images/val2014/COCO_val2014_000000116936.jpg +../images/val2014/COCO_val2014_000000117014.jpg +../images/val2014/COCO_val2014_000000117037.jpg +../images/val2014/COCO_val2014_000000117125.jpg +../images/val2014/COCO_val2014_000000117127.jpg +../images/val2014/COCO_val2014_000000117191.jpg From 9ee59fe694586a1c04cc93b2d844d06555b5346c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 6 May 2019 23:25:48 +0200 Subject: [PATCH 0819/2595] updates --- data/coco_1000val.txt | 2000 ++++++++++++++++++++--------------------- 1 file changed, 1000 insertions(+), 1000 deletions(-) diff --git a/data/coco_1000val.txt b/data/coco_1000val.txt index 3aeea43e..dd97b568 100644 --- a/data/coco_1000val.txt +++ b/data/coco_1000val.txt @@ -1,1000 +1,1000 @@ -../images/val2014/COCO_val2014_000000000164.jpg -../images/val2014/COCO_val2014_000000000192.jpg -../images/val2014/COCO_val2014_000000000283.jpg -../images/val2014/COCO_val2014_000000000397.jpg -../images/val2014/COCO_val2014_000000000589.jpg -../images/val2014/COCO_val2014_000000000599.jpg -../images/val2014/COCO_val2014_000000000711.jpg -../images/val2014/COCO_val2014_000000000757.jpg -../images/val2014/COCO_val2014_000000000764.jpg -../images/val2014/COCO_val2014_000000000872.jpg -../images/val2014/COCO_val2014_000000001063.jpg -../images/val2014/COCO_val2014_000000001554.jpg -../images/val2014/COCO_val2014_000000001667.jpg -../images/val2014/COCO_val2014_000000001700.jpg -../images/val2014/COCO_val2014_000000001869.jpg -../images/val2014/COCO_val2014_000000002124.jpg -../images/val2014/COCO_val2014_000000002261.jpg -../images/val2014/COCO_val2014_000000002621.jpg -../images/val2014/COCO_val2014_000000002684.jpg -../images/val2014/COCO_val2014_000000002764.jpg -../images/val2014/COCO_val2014_000000002894.jpg -../images/val2014/COCO_val2014_000000002972.jpg -../images/val2014/COCO_val2014_000000003035.jpg -../images/val2014/COCO_val2014_000000003084.jpg -../images/val2014/COCO_val2014_000000003103.jpg -../images/val2014/COCO_val2014_000000003109.jpg -../images/val2014/COCO_val2014_000000003134.jpg -../images/val2014/COCO_val2014_000000003209.jpg -../images/val2014/COCO_val2014_000000003244.jpg -../images/val2014/COCO_val2014_000000003326.jpg -../images/val2014/COCO_val2014_000000003337.jpg -../images/val2014/COCO_val2014_000000003661.jpg -../images/val2014/COCO_val2014_000000003711.jpg -../images/val2014/COCO_val2014_000000003779.jpg -../images/val2014/COCO_val2014_000000003865.jpg -../images/val2014/COCO_val2014_000000004079.jpg -../images/val2014/COCO_val2014_000000004092.jpg -../images/val2014/COCO_val2014_000000004283.jpg -../images/val2014/COCO_val2014_000000004296.jpg -../images/val2014/COCO_val2014_000000004392.jpg -../images/val2014/COCO_val2014_000000004742.jpg -../images/val2014/COCO_val2014_000000004754.jpg -../images/val2014/COCO_val2014_000000004764.jpg -../images/val2014/COCO_val2014_000000005038.jpg -../images/val2014/COCO_val2014_000000005060.jpg -../images/val2014/COCO_val2014_000000005124.jpg -../images/val2014/COCO_val2014_000000005178.jpg -../images/val2014/COCO_val2014_000000005205.jpg -../images/val2014/COCO_val2014_000000005443.jpg -../images/val2014/COCO_val2014_000000005652.jpg -../images/val2014/COCO_val2014_000000005723.jpg -../images/val2014/COCO_val2014_000000005804.jpg -../images/val2014/COCO_val2014_000000006074.jpg -../images/val2014/COCO_val2014_000000006091.jpg -../images/val2014/COCO_val2014_000000006153.jpg -../images/val2014/COCO_val2014_000000006213.jpg -../images/val2014/COCO_val2014_000000006497.jpg -../images/val2014/COCO_val2014_000000006789.jpg -../images/val2014/COCO_val2014_000000006847.jpg -../images/val2014/COCO_val2014_000000007241.jpg -../images/val2014/COCO_val2014_000000007256.jpg -../images/val2014/COCO_val2014_000000007281.jpg -../images/val2014/COCO_val2014_000000007795.jpg -../images/val2014/COCO_val2014_000000007867.jpg -../images/val2014/COCO_val2014_000000007873.jpg -../images/val2014/COCO_val2014_000000007899.jpg -../images/val2014/COCO_val2014_000000008010.jpg -../images/val2014/COCO_val2014_000000008179.jpg -../images/val2014/COCO_val2014_000000008190.jpg -../images/val2014/COCO_val2014_000000008204.jpg -../images/val2014/COCO_val2014_000000008350.jpg -../images/val2014/COCO_val2014_000000008493.jpg -../images/val2014/COCO_val2014_000000008853.jpg -../images/val2014/COCO_val2014_000000009105.jpg -../images/val2014/COCO_val2014_000000009156.jpg -../images/val2014/COCO_val2014_000000009217.jpg -../images/val2014/COCO_val2014_000000009270.jpg -../images/val2014/COCO_val2014_000000009286.jpg -../images/val2014/COCO_val2014_000000009548.jpg -../images/val2014/COCO_val2014_000000009553.jpg -../images/val2014/COCO_val2014_000000009727.jpg -../images/val2014/COCO_val2014_000000009908.jpg -../images/val2014/COCO_val2014_000000010114.jpg -../images/val2014/COCO_val2014_000000010249.jpg -../images/val2014/COCO_val2014_000000010395.jpg -../images/val2014/COCO_val2014_000000010400.jpg -../images/val2014/COCO_val2014_000000010463.jpg -../images/val2014/COCO_val2014_000000010613.jpg -../images/val2014/COCO_val2014_000000010764.jpg -../images/val2014/COCO_val2014_000000010779.jpg -../images/val2014/COCO_val2014_000000010928.jpg -../images/val2014/COCO_val2014_000000011099.jpg -../images/val2014/COCO_val2014_000000011181.jpg -../images/val2014/COCO_val2014_000000011184.jpg -../images/val2014/COCO_val2014_000000011197.jpg -../images/val2014/COCO_val2014_000000011320.jpg -../images/val2014/COCO_val2014_000000011721.jpg -../images/val2014/COCO_val2014_000000011813.jpg -../images/val2014/COCO_val2014_000000012014.jpg -../images/val2014/COCO_val2014_000000012047.jpg -../images/val2014/COCO_val2014_000000012085.jpg -../images/val2014/COCO_val2014_000000012115.jpg -../images/val2014/COCO_val2014_000000012166.jpg -../images/val2014/COCO_val2014_000000012230.jpg -../images/val2014/COCO_val2014_000000012370.jpg -../images/val2014/COCO_val2014_000000012375.jpg -../images/val2014/COCO_val2014_000000012448.jpg -../images/val2014/COCO_val2014_000000012543.jpg -../images/val2014/COCO_val2014_000000012744.jpg -../images/val2014/COCO_val2014_000000012897.jpg -../images/val2014/COCO_val2014_000000012966.jpg -../images/val2014/COCO_val2014_000000012993.jpg -../images/val2014/COCO_val2014_000000013004.jpg -../images/val2014/COCO_val2014_000000013333.jpg -../images/val2014/COCO_val2014_000000013357.jpg -../images/val2014/COCO_val2014_000000013774.jpg -../images/val2014/COCO_val2014_000000014029.jpg -../images/val2014/COCO_val2014_000000014056.jpg -../images/val2014/COCO_val2014_000000014108.jpg -../images/val2014/COCO_val2014_000000014135.jpg -../images/val2014/COCO_val2014_000000014226.jpg -../images/val2014/COCO_val2014_000000014306.jpg -../images/val2014/COCO_val2014_000000014591.jpg -../images/val2014/COCO_val2014_000000014629.jpg -../images/val2014/COCO_val2014_000000014756.jpg -../images/val2014/COCO_val2014_000000014874.jpg -../images/val2014/COCO_val2014_000000014990.jpg -../images/val2014/COCO_val2014_000000015386.jpg -../images/val2014/COCO_val2014_000000015559.jpg -../images/val2014/COCO_val2014_000000015599.jpg -../images/val2014/COCO_val2014_000000015709.jpg -../images/val2014/COCO_val2014_000000015735.jpg -../images/val2014/COCO_val2014_000000015751.jpg -../images/val2014/COCO_val2014_000000015883.jpg -../images/val2014/COCO_val2014_000000015953.jpg -../images/val2014/COCO_val2014_000000015956.jpg -../images/val2014/COCO_val2014_000000015968.jpg -../images/val2014/COCO_val2014_000000015987.jpg -../images/val2014/COCO_val2014_000000016030.jpg -../images/val2014/COCO_val2014_000000016076.jpg -../images/val2014/COCO_val2014_000000016228.jpg -../images/val2014/COCO_val2014_000000016241.jpg -../images/val2014/COCO_val2014_000000016257.jpg -../images/val2014/COCO_val2014_000000016327.jpg -../images/val2014/COCO_val2014_000000016410.jpg -../images/val2014/COCO_val2014_000000016574.jpg -../images/val2014/COCO_val2014_000000016716.jpg -../images/val2014/COCO_val2014_000000016928.jpg -../images/val2014/COCO_val2014_000000016995.jpg -../images/val2014/COCO_val2014_000000017235.jpg -../images/val2014/COCO_val2014_000000017379.jpg -../images/val2014/COCO_val2014_000000017667.jpg -../images/val2014/COCO_val2014_000000017755.jpg -../images/val2014/COCO_val2014_000000018295.jpg -../images/val2014/COCO_val2014_000000018358.jpg -../images/val2014/COCO_val2014_000000018476.jpg -../images/val2014/COCO_val2014_000000018750.jpg -../images/val2014/COCO_val2014_000000018783.jpg -../images/val2014/COCO_val2014_000000019025.jpg -../images/val2014/COCO_val2014_000000019042.jpg -../images/val2014/COCO_val2014_000000019129.jpg -../images/val2014/COCO_val2014_000000019176.jpg -../images/val2014/COCO_val2014_000000019491.jpg -../images/val2014/COCO_val2014_000000019890.jpg -../images/val2014/COCO_val2014_000000019923.jpg -../images/val2014/COCO_val2014_000000020001.jpg -../images/val2014/COCO_val2014_000000020038.jpg -../images/val2014/COCO_val2014_000000020175.jpg -../images/val2014/COCO_val2014_000000020268.jpg -../images/val2014/COCO_val2014_000000020273.jpg -../images/val2014/COCO_val2014_000000020349.jpg -../images/val2014/COCO_val2014_000000020553.jpg -../images/val2014/COCO_val2014_000000020788.jpg -../images/val2014/COCO_val2014_000000020912.jpg -../images/val2014/COCO_val2014_000000020947.jpg -../images/val2014/COCO_val2014_000000020972.jpg -../images/val2014/COCO_val2014_000000021161.jpg -../images/val2014/COCO_val2014_000000021483.jpg -../images/val2014/COCO_val2014_000000021588.jpg -../images/val2014/COCO_val2014_000000021639.jpg -../images/val2014/COCO_val2014_000000021644.jpg -../images/val2014/COCO_val2014_000000021645.jpg -../images/val2014/COCO_val2014_000000021671.jpg -../images/val2014/COCO_val2014_000000021746.jpg -../images/val2014/COCO_val2014_000000021839.jpg -../images/val2014/COCO_val2014_000000022002.jpg -../images/val2014/COCO_val2014_000000022129.jpg -../images/val2014/COCO_val2014_000000022191.jpg -../images/val2014/COCO_val2014_000000022215.jpg -../images/val2014/COCO_val2014_000000022341.jpg -../images/val2014/COCO_val2014_000000022492.jpg -../images/val2014/COCO_val2014_000000022563.jpg -../images/val2014/COCO_val2014_000000022660.jpg -../images/val2014/COCO_val2014_000000022705.jpg -../images/val2014/COCO_val2014_000000023017.jpg -../images/val2014/COCO_val2014_000000023309.jpg -../images/val2014/COCO_val2014_000000023411.jpg -../images/val2014/COCO_val2014_000000023754.jpg -../images/val2014/COCO_val2014_000000023802.jpg -../images/val2014/COCO_val2014_000000023981.jpg -../images/val2014/COCO_val2014_000000023995.jpg -../images/val2014/COCO_val2014_000000024112.jpg -../images/val2014/COCO_val2014_000000024247.jpg -../images/val2014/COCO_val2014_000000024396.jpg -../images/val2014/COCO_val2014_000000024776.jpg -../images/val2014/COCO_val2014_000000024924.jpg -../images/val2014/COCO_val2014_000000025096.jpg -../images/val2014/COCO_val2014_000000025191.jpg -../images/val2014/COCO_val2014_000000025252.jpg -../images/val2014/COCO_val2014_000000025293.jpg -../images/val2014/COCO_val2014_000000025360.jpg -../images/val2014/COCO_val2014_000000025595.jpg -../images/val2014/COCO_val2014_000000025685.jpg -../images/val2014/COCO_val2014_000000025807.jpg -../images/val2014/COCO_val2014_000000025864.jpg -../images/val2014/COCO_val2014_000000025989.jpg -../images/val2014/COCO_val2014_000000026026.jpg -../images/val2014/COCO_val2014_000000026430.jpg -../images/val2014/COCO_val2014_000000026432.jpg -../images/val2014/COCO_val2014_000000026534.jpg -../images/val2014/COCO_val2014_000000026560.jpg -../images/val2014/COCO_val2014_000000026564.jpg -../images/val2014/COCO_val2014_000000026671.jpg -../images/val2014/COCO_val2014_000000026690.jpg -../images/val2014/COCO_val2014_000000026734.jpg -../images/val2014/COCO_val2014_000000026799.jpg -../images/val2014/COCO_val2014_000000026907.jpg -../images/val2014/COCO_val2014_000000026908.jpg -../images/val2014/COCO_val2014_000000026946.jpg -../images/val2014/COCO_val2014_000000027530.jpg -../images/val2014/COCO_val2014_000000027610.jpg -../images/val2014/COCO_val2014_000000027620.jpg -../images/val2014/COCO_val2014_000000027787.jpg -../images/val2014/COCO_val2014_000000027789.jpg -../images/val2014/COCO_val2014_000000027874.jpg -../images/val2014/COCO_val2014_000000027946.jpg -../images/val2014/COCO_val2014_000000027975.jpg -../images/val2014/COCO_val2014_000000028022.jpg -../images/val2014/COCO_val2014_000000028039.jpg -../images/val2014/COCO_val2014_000000028273.jpg -../images/val2014/COCO_val2014_000000028540.jpg -../images/val2014/COCO_val2014_000000028702.jpg -../images/val2014/COCO_val2014_000000028820.jpg -../images/val2014/COCO_val2014_000000028874.jpg -../images/val2014/COCO_val2014_000000029019.jpg -../images/val2014/COCO_val2014_000000029030.jpg -../images/val2014/COCO_val2014_000000029170.jpg -../images/val2014/COCO_val2014_000000029308.jpg -../images/val2014/COCO_val2014_000000029393.jpg -../images/val2014/COCO_val2014_000000029524.jpg -../images/val2014/COCO_val2014_000000029577.jpg -../images/val2014/COCO_val2014_000000029648.jpg -../images/val2014/COCO_val2014_000000029656.jpg -../images/val2014/COCO_val2014_000000029697.jpg -../images/val2014/COCO_val2014_000000029709.jpg -../images/val2014/COCO_val2014_000000029719.jpg -../images/val2014/COCO_val2014_000000030034.jpg -../images/val2014/COCO_val2014_000000030062.jpg -../images/val2014/COCO_val2014_000000030383.jpg -../images/val2014/COCO_val2014_000000030470.jpg -../images/val2014/COCO_val2014_000000030548.jpg -../images/val2014/COCO_val2014_000000030668.jpg -../images/val2014/COCO_val2014_000000030793.jpg -../images/val2014/COCO_val2014_000000030843.jpg -../images/val2014/COCO_val2014_000000030998.jpg -../images/val2014/COCO_val2014_000000031151.jpg -../images/val2014/COCO_val2014_000000031164.jpg -../images/val2014/COCO_val2014_000000031176.jpg -../images/val2014/COCO_val2014_000000031247.jpg -../images/val2014/COCO_val2014_000000031392.jpg -../images/val2014/COCO_val2014_000000031521.jpg -../images/val2014/COCO_val2014_000000031542.jpg -../images/val2014/COCO_val2014_000000031817.jpg -../images/val2014/COCO_val2014_000000032081.jpg -../images/val2014/COCO_val2014_000000032193.jpg -../images/val2014/COCO_val2014_000000032331.jpg -../images/val2014/COCO_val2014_000000032464.jpg -../images/val2014/COCO_val2014_000000032510.jpg -../images/val2014/COCO_val2014_000000032524.jpg -../images/val2014/COCO_val2014_000000032625.jpg -../images/val2014/COCO_val2014_000000032677.jpg -../images/val2014/COCO_val2014_000000032715.jpg -../images/val2014/COCO_val2014_000000032947.jpg -../images/val2014/COCO_val2014_000000032964.jpg -../images/val2014/COCO_val2014_000000033006.jpg -../images/val2014/COCO_val2014_000000033055.jpg -../images/val2014/COCO_val2014_000000033158.jpg -../images/val2014/COCO_val2014_000000033243.jpg -../images/val2014/COCO_val2014_000000033345.jpg -../images/val2014/COCO_val2014_000000033499.jpg -../images/val2014/COCO_val2014_000000033561.jpg -../images/val2014/COCO_val2014_000000033830.jpg -../images/val2014/COCO_val2014_000000033835.jpg -../images/val2014/COCO_val2014_000000033924.jpg -../images/val2014/COCO_val2014_000000034056.jpg -../images/val2014/COCO_val2014_000000034114.jpg -../images/val2014/COCO_val2014_000000034137.jpg -../images/val2014/COCO_val2014_000000034183.jpg -../images/val2014/COCO_val2014_000000034193.jpg -../images/val2014/COCO_val2014_000000034299.jpg -../images/val2014/COCO_val2014_000000034452.jpg -../images/val2014/COCO_val2014_000000034689.jpg -../images/val2014/COCO_val2014_000000034877.jpg -../images/val2014/COCO_val2014_000000034892.jpg -../images/val2014/COCO_val2014_000000034930.jpg -../images/val2014/COCO_val2014_000000035012.jpg -../images/val2014/COCO_val2014_000000035222.jpg -../images/val2014/COCO_val2014_000000035326.jpg -../images/val2014/COCO_val2014_000000035368.jpg -../images/val2014/COCO_val2014_000000035474.jpg -../images/val2014/COCO_val2014_000000035498.jpg -../images/val2014/COCO_val2014_000000035738.jpg -../images/val2014/COCO_val2014_000000035826.jpg -../images/val2014/COCO_val2014_000000035940.jpg -../images/val2014/COCO_val2014_000000035966.jpg -../images/val2014/COCO_val2014_000000036049.jpg -../images/val2014/COCO_val2014_000000036252.jpg -../images/val2014/COCO_val2014_000000036508.jpg -../images/val2014/COCO_val2014_000000036522.jpg -../images/val2014/COCO_val2014_000000036539.jpg -../images/val2014/COCO_val2014_000000036563.jpg -../images/val2014/COCO_val2014_000000037038.jpg -../images/val2014/COCO_val2014_000000037629.jpg -../images/val2014/COCO_val2014_000000037675.jpg -../images/val2014/COCO_val2014_000000037846.jpg -../images/val2014/COCO_val2014_000000037865.jpg -../images/val2014/COCO_val2014_000000037907.jpg -../images/val2014/COCO_val2014_000000037988.jpg -../images/val2014/COCO_val2014_000000038031.jpg -../images/val2014/COCO_val2014_000000038190.jpg -../images/val2014/COCO_val2014_000000038252.jpg -../images/val2014/COCO_val2014_000000038296.jpg -../images/val2014/COCO_val2014_000000038465.jpg -../images/val2014/COCO_val2014_000000038488.jpg -../images/val2014/COCO_val2014_000000038531.jpg -../images/val2014/COCO_val2014_000000038539.jpg -../images/val2014/COCO_val2014_000000038645.jpg -../images/val2014/COCO_val2014_000000038685.jpg -../images/val2014/COCO_val2014_000000038825.jpg -../images/val2014/COCO_val2014_000000039322.jpg -../images/val2014/COCO_val2014_000000039480.jpg -../images/val2014/COCO_val2014_000000039697.jpg -../images/val2014/COCO_val2014_000000039731.jpg -../images/val2014/COCO_val2014_000000039743.jpg -../images/val2014/COCO_val2014_000000039785.jpg -../images/val2014/COCO_val2014_000000039961.jpg -../images/val2014/COCO_val2014_000000040426.jpg -../images/val2014/COCO_val2014_000000040485.jpg -../images/val2014/COCO_val2014_000000040681.jpg -../images/val2014/COCO_val2014_000000040686.jpg -../images/val2014/COCO_val2014_000000040886.jpg -../images/val2014/COCO_val2014_000000041119.jpg -../images/val2014/COCO_val2014_000000041147.jpg -../images/val2014/COCO_val2014_000000041322.jpg -../images/val2014/COCO_val2014_000000041373.jpg -../images/val2014/COCO_val2014_000000041550.jpg -../images/val2014/COCO_val2014_000000041635.jpg -../images/val2014/COCO_val2014_000000041867.jpg -../images/val2014/COCO_val2014_000000041872.jpg -../images/val2014/COCO_val2014_000000041924.jpg -../images/val2014/COCO_val2014_000000042137.jpg -../images/val2014/COCO_val2014_000000042279.jpg -../images/val2014/COCO_val2014_000000042492.jpg -../images/val2014/COCO_val2014_000000042576.jpg -../images/val2014/COCO_val2014_000000042661.jpg -../images/val2014/COCO_val2014_000000042743.jpg -../images/val2014/COCO_val2014_000000042805.jpg -../images/val2014/COCO_val2014_000000042837.jpg -../images/val2014/COCO_val2014_000000043165.jpg -../images/val2014/COCO_val2014_000000043218.jpg -../images/val2014/COCO_val2014_000000043261.jpg -../images/val2014/COCO_val2014_000000043404.jpg -../images/val2014/COCO_val2014_000000043542.jpg -../images/val2014/COCO_val2014_000000043605.jpg -../images/val2014/COCO_val2014_000000043614.jpg -../images/val2014/COCO_val2014_000000043673.jpg -../images/val2014/COCO_val2014_000000043816.jpg -../images/val2014/COCO_val2014_000000043850.jpg -../images/val2014/COCO_val2014_000000044220.jpg -../images/val2014/COCO_val2014_000000044269.jpg -../images/val2014/COCO_val2014_000000044309.jpg -../images/val2014/COCO_val2014_000000044478.jpg -../images/val2014/COCO_val2014_000000044536.jpg -../images/val2014/COCO_val2014_000000044559.jpg -../images/val2014/COCO_val2014_000000044575.jpg -../images/val2014/COCO_val2014_000000044612.jpg -../images/val2014/COCO_val2014_000000044677.jpg -../images/val2014/COCO_val2014_000000044699.jpg -../images/val2014/COCO_val2014_000000044823.jpg -../images/val2014/COCO_val2014_000000044989.jpg -../images/val2014/COCO_val2014_000000045094.jpg -../images/val2014/COCO_val2014_000000045176.jpg -../images/val2014/COCO_val2014_000000045197.jpg -../images/val2014/COCO_val2014_000000045367.jpg -../images/val2014/COCO_val2014_000000045392.jpg -../images/val2014/COCO_val2014_000000045433.jpg -../images/val2014/COCO_val2014_000000045463.jpg -../images/val2014/COCO_val2014_000000045550.jpg -../images/val2014/COCO_val2014_000000045574.jpg -../images/val2014/COCO_val2014_000000045627.jpg -../images/val2014/COCO_val2014_000000045685.jpg -../images/val2014/COCO_val2014_000000045728.jpg -../images/val2014/COCO_val2014_000000046252.jpg -../images/val2014/COCO_val2014_000000046269.jpg -../images/val2014/COCO_val2014_000000046329.jpg -../images/val2014/COCO_val2014_000000046805.jpg -../images/val2014/COCO_val2014_000000046869.jpg -../images/val2014/COCO_val2014_000000046919.jpg -../images/val2014/COCO_val2014_000000046924.jpg -../images/val2014/COCO_val2014_000000047008.jpg -../images/val2014/COCO_val2014_000000047131.jpg -../images/val2014/COCO_val2014_000000047226.jpg -../images/val2014/COCO_val2014_000000047263.jpg -../images/val2014/COCO_val2014_000000047395.jpg -../images/val2014/COCO_val2014_000000047552.jpg -../images/val2014/COCO_val2014_000000047570.jpg -../images/val2014/COCO_val2014_000000047720.jpg -../images/val2014/COCO_val2014_000000047775.jpg -../images/val2014/COCO_val2014_000000047886.jpg -../images/val2014/COCO_val2014_000000048504.jpg -../images/val2014/COCO_val2014_000000048564.jpg -../images/val2014/COCO_val2014_000000048668.jpg -../images/val2014/COCO_val2014_000000048731.jpg -../images/val2014/COCO_val2014_000000048739.jpg -../images/val2014/COCO_val2014_000000048791.jpg -../images/val2014/COCO_val2014_000000048840.jpg -../images/val2014/COCO_val2014_000000048905.jpg -../images/val2014/COCO_val2014_000000048910.jpg -../images/val2014/COCO_val2014_000000048924.jpg -../images/val2014/COCO_val2014_000000048956.jpg -../images/val2014/COCO_val2014_000000049075.jpg -../images/val2014/COCO_val2014_000000049236.jpg -../images/val2014/COCO_val2014_000000049676.jpg -../images/val2014/COCO_val2014_000000049881.jpg -../images/val2014/COCO_val2014_000000049985.jpg -../images/val2014/COCO_val2014_000000050100.jpg -../images/val2014/COCO_val2014_000000050145.jpg -../images/val2014/COCO_val2014_000000050177.jpg -../images/val2014/COCO_val2014_000000050324.jpg -../images/val2014/COCO_val2014_000000050331.jpg -../images/val2014/COCO_val2014_000000050481.jpg -../images/val2014/COCO_val2014_000000050485.jpg -../images/val2014/COCO_val2014_000000050493.jpg -../images/val2014/COCO_val2014_000000050746.jpg -../images/val2014/COCO_val2014_000000050844.jpg -../images/val2014/COCO_val2014_000000050896.jpg -../images/val2014/COCO_val2014_000000051249.jpg -../images/val2014/COCO_val2014_000000051250.jpg -../images/val2014/COCO_val2014_000000051289.jpg -../images/val2014/COCO_val2014_000000051314.jpg -../images/val2014/COCO_val2014_000000051339.jpg -../images/val2014/COCO_val2014_000000051461.jpg -../images/val2014/COCO_val2014_000000051476.jpg -../images/val2014/COCO_val2014_000000052005.jpg -../images/val2014/COCO_val2014_000000052020.jpg -../images/val2014/COCO_val2014_000000052290.jpg -../images/val2014/COCO_val2014_000000052314.jpg -../images/val2014/COCO_val2014_000000052425.jpg -../images/val2014/COCO_val2014_000000052575.jpg -../images/val2014/COCO_val2014_000000052871.jpg -../images/val2014/COCO_val2014_000000052982.jpg -../images/val2014/COCO_val2014_000000053139.jpg -../images/val2014/COCO_val2014_000000053183.jpg -../images/val2014/COCO_val2014_000000053263.jpg -../images/val2014/COCO_val2014_000000053491.jpg -../images/val2014/COCO_val2014_000000053503.jpg -../images/val2014/COCO_val2014_000000053580.jpg -../images/val2014/COCO_val2014_000000053616.jpg -../images/val2014/COCO_val2014_000000053907.jpg -../images/val2014/COCO_val2014_000000053949.jpg -../images/val2014/COCO_val2014_000000054301.jpg -../images/val2014/COCO_val2014_000000054334.jpg -../images/val2014/COCO_val2014_000000054490.jpg -../images/val2014/COCO_val2014_000000054527.jpg -../images/val2014/COCO_val2014_000000054533.jpg -../images/val2014/COCO_val2014_000000054603.jpg -../images/val2014/COCO_val2014_000000054643.jpg -../images/val2014/COCO_val2014_000000054679.jpg -../images/val2014/COCO_val2014_000000054723.jpg -../images/val2014/COCO_val2014_000000054959.jpg -../images/val2014/COCO_val2014_000000055167.jpg -../images/val2014/COCO_val2014_000000056137.jpg -../images/val2014/COCO_val2014_000000056326.jpg -../images/val2014/COCO_val2014_000000056541.jpg -../images/val2014/COCO_val2014_000000056562.jpg -../images/val2014/COCO_val2014_000000056624.jpg -../images/val2014/COCO_val2014_000000056633.jpg -../images/val2014/COCO_val2014_000000056724.jpg -../images/val2014/COCO_val2014_000000056739.jpg -../images/val2014/COCO_val2014_000000057027.jpg -../images/val2014/COCO_val2014_000000057091.jpg -../images/val2014/COCO_val2014_000000057095.jpg -../images/val2014/COCO_val2014_000000057100.jpg -../images/val2014/COCO_val2014_000000057149.jpg -../images/val2014/COCO_val2014_000000057238.jpg -../images/val2014/COCO_val2014_000000057359.jpg -../images/val2014/COCO_val2014_000000057454.jpg -../images/val2014/COCO_val2014_000000058001.jpg -../images/val2014/COCO_val2014_000000058157.jpg -../images/val2014/COCO_val2014_000000058223.jpg -../images/val2014/COCO_val2014_000000058232.jpg -../images/val2014/COCO_val2014_000000058344.jpg -../images/val2014/COCO_val2014_000000058522.jpg -../images/val2014/COCO_val2014_000000058636.jpg -../images/val2014/COCO_val2014_000000058800.jpg -../images/val2014/COCO_val2014_000000058949.jpg -../images/val2014/COCO_val2014_000000059009.jpg -../images/val2014/COCO_val2014_000000059202.jpg -../images/val2014/COCO_val2014_000000059393.jpg -../images/val2014/COCO_val2014_000000059652.jpg -../images/val2014/COCO_val2014_000000060010.jpg -../images/val2014/COCO_val2014_000000060049.jpg -../images/val2014/COCO_val2014_000000060126.jpg -../images/val2014/COCO_val2014_000000060128.jpg -../images/val2014/COCO_val2014_000000060448.jpg -../images/val2014/COCO_val2014_000000060548.jpg -../images/val2014/COCO_val2014_000000060677.jpg -../images/val2014/COCO_val2014_000000060760.jpg -../images/val2014/COCO_val2014_000000060823.jpg -../images/val2014/COCO_val2014_000000060859.jpg -../images/val2014/COCO_val2014_000000060899.jpg -../images/val2014/COCO_val2014_000000061171.jpg -../images/val2014/COCO_val2014_000000061503.jpg -../images/val2014/COCO_val2014_000000061520.jpg -../images/val2014/COCO_val2014_000000061531.jpg -../images/val2014/COCO_val2014_000000061564.jpg -../images/val2014/COCO_val2014_000000061658.jpg -../images/val2014/COCO_val2014_000000061693.jpg -../images/val2014/COCO_val2014_000000061717.jpg -../images/val2014/COCO_val2014_000000061836.jpg -../images/val2014/COCO_val2014_000000062041.jpg -../images/val2014/COCO_val2014_000000062060.jpg -../images/val2014/COCO_val2014_000000062198.jpg -../images/val2014/COCO_val2014_000000062200.jpg -../images/val2014/COCO_val2014_000000062220.jpg -../images/val2014/COCO_val2014_000000062623.jpg -../images/val2014/COCO_val2014_000000062726.jpg -../images/val2014/COCO_val2014_000000062875.jpg -../images/val2014/COCO_val2014_000000063047.jpg -../images/val2014/COCO_val2014_000000063114.jpg -../images/val2014/COCO_val2014_000000063488.jpg -../images/val2014/COCO_val2014_000000063671.jpg -../images/val2014/COCO_val2014_000000063715.jpg -../images/val2014/COCO_val2014_000000063804.jpg -../images/val2014/COCO_val2014_000000063882.jpg -../images/val2014/COCO_val2014_000000063939.jpg -../images/val2014/COCO_val2014_000000063965.jpg -../images/val2014/COCO_val2014_000000064155.jpg -../images/val2014/COCO_val2014_000000064189.jpg -../images/val2014/COCO_val2014_000000064196.jpg -../images/val2014/COCO_val2014_000000064495.jpg -../images/val2014/COCO_val2014_000000064610.jpg -../images/val2014/COCO_val2014_000000064693.jpg -../images/val2014/COCO_val2014_000000064746.jpg -../images/val2014/COCO_val2014_000000064760.jpg -../images/val2014/COCO_val2014_000000064796.jpg -../images/val2014/COCO_val2014_000000064865.jpg -../images/val2014/COCO_val2014_000000064915.jpg -../images/val2014/COCO_val2014_000000065074.jpg -../images/val2014/COCO_val2014_000000065124.jpg -../images/val2014/COCO_val2014_000000065258.jpg -../images/val2014/COCO_val2014_000000065267.jpg -../images/val2014/COCO_val2014_000000065430.jpg -../images/val2014/COCO_val2014_000000065465.jpg -../images/val2014/COCO_val2014_000000065942.jpg -../images/val2014/COCO_val2014_000000066001.jpg -../images/val2014/COCO_val2014_000000066064.jpg -../images/val2014/COCO_val2014_000000066072.jpg -../images/val2014/COCO_val2014_000000066239.jpg -../images/val2014/COCO_val2014_000000066243.jpg -../images/val2014/COCO_val2014_000000066355.jpg -../images/val2014/COCO_val2014_000000066412.jpg -../images/val2014/COCO_val2014_000000066423.jpg -../images/val2014/COCO_val2014_000000066427.jpg -../images/val2014/COCO_val2014_000000066502.jpg -../images/val2014/COCO_val2014_000000066519.jpg -../images/val2014/COCO_val2014_000000066561.jpg -../images/val2014/COCO_val2014_000000066700.jpg -../images/val2014/COCO_val2014_000000066717.jpg -../images/val2014/COCO_val2014_000000066879.jpg -../images/val2014/COCO_val2014_000000067178.jpg -../images/val2014/COCO_val2014_000000067207.jpg -../images/val2014/COCO_val2014_000000067218.jpg -../images/val2014/COCO_val2014_000000067412.jpg -../images/val2014/COCO_val2014_000000067532.jpg -../images/val2014/COCO_val2014_000000067590.jpg -../images/val2014/COCO_val2014_000000067660.jpg -../images/val2014/COCO_val2014_000000067686.jpg -../images/val2014/COCO_val2014_000000067704.jpg -../images/val2014/COCO_val2014_000000067776.jpg -../images/val2014/COCO_val2014_000000067948.jpg -../images/val2014/COCO_val2014_000000067953.jpg -../images/val2014/COCO_val2014_000000068059.jpg -../images/val2014/COCO_val2014_000000068204.jpg -../images/val2014/COCO_val2014_000000068205.jpg -../images/val2014/COCO_val2014_000000068409.jpg -../images/val2014/COCO_val2014_000000068435.jpg -../images/val2014/COCO_val2014_000000068520.jpg -../images/val2014/COCO_val2014_000000068546.jpg -../images/val2014/COCO_val2014_000000068674.jpg -../images/val2014/COCO_val2014_000000068745.jpg -../images/val2014/COCO_val2014_000000069009.jpg -../images/val2014/COCO_val2014_000000069077.jpg -../images/val2014/COCO_val2014_000000069196.jpg -../images/val2014/COCO_val2014_000000069356.jpg -../images/val2014/COCO_val2014_000000069568.jpg -../images/val2014/COCO_val2014_000000069577.jpg -../images/val2014/COCO_val2014_000000069698.jpg -../images/val2014/COCO_val2014_000000070493.jpg -../images/val2014/COCO_val2014_000000070896.jpg -../images/val2014/COCO_val2014_000000071023.jpg -../images/val2014/COCO_val2014_000000071123.jpg -../images/val2014/COCO_val2014_000000071241.jpg -../images/val2014/COCO_val2014_000000071301.jpg -../images/val2014/COCO_val2014_000000071345.jpg -../images/val2014/COCO_val2014_000000071451.jpg -../images/val2014/COCO_val2014_000000071673.jpg -../images/val2014/COCO_val2014_000000071826.jpg -../images/val2014/COCO_val2014_000000071986.jpg -../images/val2014/COCO_val2014_000000072004.jpg -../images/val2014/COCO_val2014_000000072020.jpg -../images/val2014/COCO_val2014_000000072052.jpg -../images/val2014/COCO_val2014_000000072281.jpg -../images/val2014/COCO_val2014_000000072368.jpg -../images/val2014/COCO_val2014_000000072737.jpg -../images/val2014/COCO_val2014_000000072797.jpg -../images/val2014/COCO_val2014_000000072860.jpg -../images/val2014/COCO_val2014_000000073009.jpg -../images/val2014/COCO_val2014_000000073039.jpg -../images/val2014/COCO_val2014_000000073239.jpg -../images/val2014/COCO_val2014_000000073467.jpg -../images/val2014/COCO_val2014_000000073491.jpg -../images/val2014/COCO_val2014_000000073588.jpg -../images/val2014/COCO_val2014_000000073729.jpg -../images/val2014/COCO_val2014_000000073973.jpg -../images/val2014/COCO_val2014_000000074037.jpg -../images/val2014/COCO_val2014_000000074137.jpg -../images/val2014/COCO_val2014_000000074268.jpg -../images/val2014/COCO_val2014_000000074434.jpg -../images/val2014/COCO_val2014_000000074789.jpg -../images/val2014/COCO_val2014_000000074963.jpg -../images/val2014/COCO_val2014_000000075033.jpg -../images/val2014/COCO_val2014_000000075372.jpg -../images/val2014/COCO_val2014_000000075527.jpg -../images/val2014/COCO_val2014_000000075646.jpg -../images/val2014/COCO_val2014_000000075713.jpg -../images/val2014/COCO_val2014_000000075775.jpg -../images/val2014/COCO_val2014_000000075786.jpg -../images/val2014/COCO_val2014_000000075886.jpg -../images/val2014/COCO_val2014_000000076087.jpg -../images/val2014/COCO_val2014_000000076257.jpg -../images/val2014/COCO_val2014_000000076521.jpg -../images/val2014/COCO_val2014_000000076572.jpg -../images/val2014/COCO_val2014_000000076844.jpg -../images/val2014/COCO_val2014_000000077178.jpg -../images/val2014/COCO_val2014_000000077181.jpg -../images/val2014/COCO_val2014_000000077184.jpg -../images/val2014/COCO_val2014_000000077396.jpg -../images/val2014/COCO_val2014_000000077400.jpg -../images/val2014/COCO_val2014_000000077415.jpg -../images/val2014/COCO_val2014_000000078565.jpg -../images/val2014/COCO_val2014_000000078701.jpg -../images/val2014/COCO_val2014_000000078843.jpg -../images/val2014/COCO_val2014_000000078929.jpg -../images/val2014/COCO_val2014_000000079084.jpg -../images/val2014/COCO_val2014_000000079188.jpg -../images/val2014/COCO_val2014_000000079544.jpg -../images/val2014/COCO_val2014_000000079566.jpg -../images/val2014/COCO_val2014_000000079588.jpg -../images/val2014/COCO_val2014_000000079689.jpg -../images/val2014/COCO_val2014_000000080104.jpg -../images/val2014/COCO_val2014_000000080172.jpg -../images/val2014/COCO_val2014_000000080219.jpg -../images/val2014/COCO_val2014_000000080300.jpg -../images/val2014/COCO_val2014_000000080395.jpg -../images/val2014/COCO_val2014_000000080522.jpg -../images/val2014/COCO_val2014_000000080714.jpg -../images/val2014/COCO_val2014_000000080737.jpg -../images/val2014/COCO_val2014_000000080747.jpg -../images/val2014/COCO_val2014_000000081000.jpg -../images/val2014/COCO_val2014_000000081081.jpg -../images/val2014/COCO_val2014_000000081100.jpg -../images/val2014/COCO_val2014_000000081287.jpg -../images/val2014/COCO_val2014_000000081394.jpg -../images/val2014/COCO_val2014_000000081552.jpg -../images/val2014/COCO_val2014_000000082157.jpg -../images/val2014/COCO_val2014_000000082252.jpg -../images/val2014/COCO_val2014_000000082259.jpg -../images/val2014/COCO_val2014_000000082367.jpg -../images/val2014/COCO_val2014_000000082431.jpg -../images/val2014/COCO_val2014_000000082456.jpg -../images/val2014/COCO_val2014_000000082794.jpg -../images/val2014/COCO_val2014_000000082807.jpg -../images/val2014/COCO_val2014_000000082846.jpg -../images/val2014/COCO_val2014_000000082847.jpg -../images/val2014/COCO_val2014_000000082889.jpg -../images/val2014/COCO_val2014_000000082981.jpg -../images/val2014/COCO_val2014_000000083036.jpg -../images/val2014/COCO_val2014_000000083065.jpg -../images/val2014/COCO_val2014_000000083142.jpg -../images/val2014/COCO_val2014_000000083275.jpg -../images/val2014/COCO_val2014_000000083557.jpg -../images/val2014/COCO_val2014_000000084073.jpg -../images/val2014/COCO_val2014_000000084447.jpg -../images/val2014/COCO_val2014_000000084463.jpg -../images/val2014/COCO_val2014_000000084592.jpg -../images/val2014/COCO_val2014_000000084674.jpg -../images/val2014/COCO_val2014_000000084762.jpg -../images/val2014/COCO_val2014_000000084870.jpg -../images/val2014/COCO_val2014_000000084929.jpg -../images/val2014/COCO_val2014_000000084980.jpg -../images/val2014/COCO_val2014_000000085101.jpg -../images/val2014/COCO_val2014_000000085292.jpg -../images/val2014/COCO_val2014_000000085353.jpg -../images/val2014/COCO_val2014_000000085674.jpg -../images/val2014/COCO_val2014_000000085813.jpg -../images/val2014/COCO_val2014_000000086011.jpg -../images/val2014/COCO_val2014_000000086133.jpg -../images/val2014/COCO_val2014_000000086136.jpg -../images/val2014/COCO_val2014_000000086215.jpg -../images/val2014/COCO_val2014_000000086220.jpg -../images/val2014/COCO_val2014_000000086249.jpg -../images/val2014/COCO_val2014_000000086320.jpg -../images/val2014/COCO_val2014_000000086357.jpg -../images/val2014/COCO_val2014_000000086429.jpg -../images/val2014/COCO_val2014_000000086467.jpg -../images/val2014/COCO_val2014_000000086483.jpg -../images/val2014/COCO_val2014_000000086646.jpg -../images/val2014/COCO_val2014_000000086755.jpg -../images/val2014/COCO_val2014_000000086839.jpg -../images/val2014/COCO_val2014_000000086848.jpg -../images/val2014/COCO_val2014_000000086877.jpg -../images/val2014/COCO_val2014_000000087038.jpg -../images/val2014/COCO_val2014_000000087244.jpg -../images/val2014/COCO_val2014_000000087354.jpg -../images/val2014/COCO_val2014_000000087387.jpg -../images/val2014/COCO_val2014_000000087489.jpg -../images/val2014/COCO_val2014_000000087503.jpg -../images/val2014/COCO_val2014_000000087617.jpg -../images/val2014/COCO_val2014_000000087638.jpg -../images/val2014/COCO_val2014_000000087740.jpg -../images/val2014/COCO_val2014_000000087875.jpg -../images/val2014/COCO_val2014_000000088360.jpg -../images/val2014/COCO_val2014_000000088507.jpg -../images/val2014/COCO_val2014_000000088560.jpg -../images/val2014/COCO_val2014_000000088846.jpg -../images/val2014/COCO_val2014_000000088859.jpg -../images/val2014/COCO_val2014_000000088902.jpg -../images/val2014/COCO_val2014_000000089027.jpg -../images/val2014/COCO_val2014_000000089258.jpg -../images/val2014/COCO_val2014_000000089285.jpg -../images/val2014/COCO_val2014_000000089359.jpg -../images/val2014/COCO_val2014_000000089378.jpg -../images/val2014/COCO_val2014_000000089391.jpg -../images/val2014/COCO_val2014_000000089487.jpg -../images/val2014/COCO_val2014_000000089618.jpg -../images/val2014/COCO_val2014_000000089670.jpg -../images/val2014/COCO_val2014_000000090003.jpg -../images/val2014/COCO_val2014_000000090062.jpg -../images/val2014/COCO_val2014_000000090155.jpg -../images/val2014/COCO_val2014_000000090208.jpg -../images/val2014/COCO_val2014_000000090351.jpg -../images/val2014/COCO_val2014_000000090476.jpg -../images/val2014/COCO_val2014_000000090594.jpg -../images/val2014/COCO_val2014_000000090753.jpg -../images/val2014/COCO_val2014_000000090754.jpg -../images/val2014/COCO_val2014_000000090864.jpg -../images/val2014/COCO_val2014_000000091079.jpg -../images/val2014/COCO_val2014_000000091341.jpg -../images/val2014/COCO_val2014_000000091402.jpg -../images/val2014/COCO_val2014_000000091517.jpg -../images/val2014/COCO_val2014_000000091520.jpg -../images/val2014/COCO_val2014_000000091612.jpg -../images/val2014/COCO_val2014_000000091716.jpg -../images/val2014/COCO_val2014_000000091766.jpg -../images/val2014/COCO_val2014_000000091857.jpg -../images/val2014/COCO_val2014_000000091899.jpg -../images/val2014/COCO_val2014_000000091912.jpg -../images/val2014/COCO_val2014_000000092093.jpg -../images/val2014/COCO_val2014_000000092124.jpg -../images/val2014/COCO_val2014_000000092679.jpg -../images/val2014/COCO_val2014_000000092683.jpg -../images/val2014/COCO_val2014_000000092939.jpg -../images/val2014/COCO_val2014_000000092985.jpg -../images/val2014/COCO_val2014_000000093175.jpg -../images/val2014/COCO_val2014_000000093236.jpg -../images/val2014/COCO_val2014_000000093331.jpg -../images/val2014/COCO_val2014_000000093434.jpg -../images/val2014/COCO_val2014_000000093607.jpg -../images/val2014/COCO_val2014_000000093806.jpg -../images/val2014/COCO_val2014_000000093964.jpg -../images/val2014/COCO_val2014_000000094012.jpg -../images/val2014/COCO_val2014_000000094033.jpg -../images/val2014/COCO_val2014_000000094046.jpg -../images/val2014/COCO_val2014_000000094052.jpg -../images/val2014/COCO_val2014_000000094055.jpg -../images/val2014/COCO_val2014_000000094501.jpg -../images/val2014/COCO_val2014_000000094619.jpg -../images/val2014/COCO_val2014_000000094746.jpg -../images/val2014/COCO_val2014_000000094795.jpg -../images/val2014/COCO_val2014_000000094846.jpg -../images/val2014/COCO_val2014_000000095062.jpg -../images/val2014/COCO_val2014_000000095063.jpg -../images/val2014/COCO_val2014_000000095227.jpg -../images/val2014/COCO_val2014_000000095441.jpg -../images/val2014/COCO_val2014_000000095551.jpg -../images/val2014/COCO_val2014_000000095670.jpg -../images/val2014/COCO_val2014_000000095770.jpg -../images/val2014/COCO_val2014_000000096110.jpg -../images/val2014/COCO_val2014_000000096288.jpg -../images/val2014/COCO_val2014_000000096327.jpg -../images/val2014/COCO_val2014_000000096351.jpg -../images/val2014/COCO_val2014_000000096618.jpg -../images/val2014/COCO_val2014_000000096654.jpg -../images/val2014/COCO_val2014_000000096762.jpg -../images/val2014/COCO_val2014_000000096769.jpg -../images/val2014/COCO_val2014_000000096998.jpg -../images/val2014/COCO_val2014_000000097017.jpg -../images/val2014/COCO_val2014_000000097048.jpg -../images/val2014/COCO_val2014_000000097080.jpg -../images/val2014/COCO_val2014_000000097240.jpg -../images/val2014/COCO_val2014_000000097479.jpg -../images/val2014/COCO_val2014_000000097577.jpg -../images/val2014/COCO_val2014_000000097610.jpg -../images/val2014/COCO_val2014_000000097656.jpg -../images/val2014/COCO_val2014_000000097667.jpg -../images/val2014/COCO_val2014_000000097682.jpg -../images/val2014/COCO_val2014_000000097748.jpg -../images/val2014/COCO_val2014_000000097868.jpg -../images/val2014/COCO_val2014_000000097899.jpg -../images/val2014/COCO_val2014_000000098018.jpg -../images/val2014/COCO_val2014_000000098043.jpg -../images/val2014/COCO_val2014_000000098095.jpg -../images/val2014/COCO_val2014_000000098194.jpg -../images/val2014/COCO_val2014_000000098280.jpg -../images/val2014/COCO_val2014_000000098283.jpg -../images/val2014/COCO_val2014_000000098599.jpg -../images/val2014/COCO_val2014_000000098872.jpg -../images/val2014/COCO_val2014_000000099026.jpg -../images/val2014/COCO_val2014_000000099260.jpg -../images/val2014/COCO_val2014_000000099389.jpg -../images/val2014/COCO_val2014_000000099707.jpg -../images/val2014/COCO_val2014_000000099961.jpg -../images/val2014/COCO_val2014_000000099996.jpg -../images/val2014/COCO_val2014_000000100000.jpg -../images/val2014/COCO_val2014_000000100006.jpg -../images/val2014/COCO_val2014_000000100083.jpg -../images/val2014/COCO_val2014_000000100166.jpg -../images/val2014/COCO_val2014_000000100187.jpg -../images/val2014/COCO_val2014_000000100245.jpg -../images/val2014/COCO_val2014_000000100343.jpg -../images/val2014/COCO_val2014_000000100428.jpg -../images/val2014/COCO_val2014_000000100582.jpg -../images/val2014/COCO_val2014_000000100723.jpg -../images/val2014/COCO_val2014_000000100726.jpg -../images/val2014/COCO_val2014_000000100909.jpg -../images/val2014/COCO_val2014_000000101059.jpg -../images/val2014/COCO_val2014_000000101145.jpg -../images/val2014/COCO_val2014_000000101567.jpg -../images/val2014/COCO_val2014_000000101623.jpg -../images/val2014/COCO_val2014_000000101703.jpg -../images/val2014/COCO_val2014_000000101884.jpg -../images/val2014/COCO_val2014_000000101948.jpg -../images/val2014/COCO_val2014_000000102331.jpg -../images/val2014/COCO_val2014_000000102421.jpg -../images/val2014/COCO_val2014_000000102439.jpg -../images/val2014/COCO_val2014_000000102446.jpg -../images/val2014/COCO_val2014_000000102461.jpg -../images/val2014/COCO_val2014_000000102466.jpg -../images/val2014/COCO_val2014_000000102478.jpg -../images/val2014/COCO_val2014_000000102594.jpg -../images/val2014/COCO_val2014_000000102598.jpg -../images/val2014/COCO_val2014_000000102665.jpg -../images/val2014/COCO_val2014_000000102707.jpg -../images/val2014/COCO_val2014_000000102848.jpg -../images/val2014/COCO_val2014_000000102906.jpg -../images/val2014/COCO_val2014_000000103122.jpg -../images/val2014/COCO_val2014_000000103255.jpg -../images/val2014/COCO_val2014_000000103272.jpg -../images/val2014/COCO_val2014_000000103379.jpg -../images/val2014/COCO_val2014_000000103413.jpg -../images/val2014/COCO_val2014_000000103431.jpg -../images/val2014/COCO_val2014_000000103509.jpg -../images/val2014/COCO_val2014_000000103538.jpg -../images/val2014/COCO_val2014_000000103667.jpg -../images/val2014/COCO_val2014_000000103747.jpg -../images/val2014/COCO_val2014_000000103931.jpg -../images/val2014/COCO_val2014_000000104002.jpg -../images/val2014/COCO_val2014_000000104455.jpg -../images/val2014/COCO_val2014_000000104486.jpg -../images/val2014/COCO_val2014_000000104494.jpg -../images/val2014/COCO_val2014_000000104495.jpg -../images/val2014/COCO_val2014_000000104893.jpg -../images/val2014/COCO_val2014_000000104965.jpg -../images/val2014/COCO_val2014_000000105040.jpg -../images/val2014/COCO_val2014_000000105102.jpg -../images/val2014/COCO_val2014_000000105156.jpg -../images/val2014/COCO_val2014_000000105264.jpg -../images/val2014/COCO_val2014_000000105291.jpg -../images/val2014/COCO_val2014_000000105367.jpg -../images/val2014/COCO_val2014_000000105647.jpg -../images/val2014/COCO_val2014_000000105668.jpg -../images/val2014/COCO_val2014_000000105711.jpg -../images/val2014/COCO_val2014_000000105866.jpg -../images/val2014/COCO_val2014_000000105973.jpg -../images/val2014/COCO_val2014_000000106096.jpg -../images/val2014/COCO_val2014_000000106120.jpg -../images/val2014/COCO_val2014_000000106314.jpg -../images/val2014/COCO_val2014_000000106351.jpg -../images/val2014/COCO_val2014_000000106641.jpg -../images/val2014/COCO_val2014_000000106661.jpg -../images/val2014/COCO_val2014_000000106757.jpg -../images/val2014/COCO_val2014_000000106793.jpg -../images/val2014/COCO_val2014_000000106849.jpg -../images/val2014/COCO_val2014_000000107004.jpg -../images/val2014/COCO_val2014_000000107123.jpg -../images/val2014/COCO_val2014_000000107183.jpg -../images/val2014/COCO_val2014_000000107227.jpg -../images/val2014/COCO_val2014_000000107244.jpg -../images/val2014/COCO_val2014_000000107304.jpg -../images/val2014/COCO_val2014_000000107542.jpg -../images/val2014/COCO_val2014_000000107741.jpg -../images/val2014/COCO_val2014_000000107831.jpg -../images/val2014/COCO_val2014_000000107839.jpg -../images/val2014/COCO_val2014_000000108051.jpg -../images/val2014/COCO_val2014_000000108152.jpg -../images/val2014/COCO_val2014_000000108212.jpg -../images/val2014/COCO_val2014_000000108380.jpg -../images/val2014/COCO_val2014_000000108408.jpg -../images/val2014/COCO_val2014_000000108531.jpg -../images/val2014/COCO_val2014_000000108761.jpg -../images/val2014/COCO_val2014_000000108864.jpg -../images/val2014/COCO_val2014_000000109055.jpg -../images/val2014/COCO_val2014_000000109092.jpg -../images/val2014/COCO_val2014_000000109178.jpg -../images/val2014/COCO_val2014_000000109216.jpg -../images/val2014/COCO_val2014_000000109231.jpg -../images/val2014/COCO_val2014_000000109308.jpg -../images/val2014/COCO_val2014_000000109486.jpg -../images/val2014/COCO_val2014_000000109819.jpg -../images/val2014/COCO_val2014_000000109869.jpg -../images/val2014/COCO_val2014_000000110313.jpg -../images/val2014/COCO_val2014_000000110389.jpg -../images/val2014/COCO_val2014_000000110562.jpg -../images/val2014/COCO_val2014_000000110617.jpg -../images/val2014/COCO_val2014_000000110638.jpg -../images/val2014/COCO_val2014_000000110881.jpg -../images/val2014/COCO_val2014_000000110884.jpg -../images/val2014/COCO_val2014_000000110951.jpg -../images/val2014/COCO_val2014_000000111004.jpg -../images/val2014/COCO_val2014_000000111014.jpg -../images/val2014/COCO_val2014_000000111024.jpg -../images/val2014/COCO_val2014_000000111076.jpg -../images/val2014/COCO_val2014_000000111179.jpg -../images/val2014/COCO_val2014_000000111590.jpg -../images/val2014/COCO_val2014_000000111593.jpg -../images/val2014/COCO_val2014_000000111878.jpg -../images/val2014/COCO_val2014_000000112298.jpg -../images/val2014/COCO_val2014_000000112388.jpg -../images/val2014/COCO_val2014_000000112394.jpg -../images/val2014/COCO_val2014_000000112440.jpg -../images/val2014/COCO_val2014_000000112751.jpg -../images/val2014/COCO_val2014_000000112818.jpg -../images/val2014/COCO_val2014_000000112820.jpg -../images/val2014/COCO_val2014_000000112830.jpg -../images/val2014/COCO_val2014_000000112928.jpg -../images/val2014/COCO_val2014_000000113139.jpg -../images/val2014/COCO_val2014_000000113173.jpg -../images/val2014/COCO_val2014_000000113313.jpg -../images/val2014/COCO_val2014_000000113440.jpg -../images/val2014/COCO_val2014_000000113559.jpg -../images/val2014/COCO_val2014_000000113570.jpg -../images/val2014/COCO_val2014_000000113579.jpg -../images/val2014/COCO_val2014_000000113590.jpg -../images/val2014/COCO_val2014_000000113757.jpg -../images/val2014/COCO_val2014_000000113977.jpg -../images/val2014/COCO_val2014_000000114033.jpg -../images/val2014/COCO_val2014_000000114055.jpg -../images/val2014/COCO_val2014_000000114090.jpg -../images/val2014/COCO_val2014_000000114147.jpg -../images/val2014/COCO_val2014_000000114239.jpg -../images/val2014/COCO_val2014_000000114503.jpg -../images/val2014/COCO_val2014_000000114907.jpg -../images/val2014/COCO_val2014_000000114926.jpg -../images/val2014/COCO_val2014_000000115069.jpg -../images/val2014/COCO_val2014_000000115070.jpg -../images/val2014/COCO_val2014_000000115128.jpg -../images/val2014/COCO_val2014_000000115870.jpg -../images/val2014/COCO_val2014_000000115898.jpg -../images/val2014/COCO_val2014_000000115930.jpg -../images/val2014/COCO_val2014_000000116226.jpg -../images/val2014/COCO_val2014_000000116556.jpg -../images/val2014/COCO_val2014_000000116667.jpg -../images/val2014/COCO_val2014_000000116696.jpg -../images/val2014/COCO_val2014_000000116936.jpg -../images/val2014/COCO_val2014_000000117014.jpg -../images/val2014/COCO_val2014_000000117037.jpg -../images/val2014/COCO_val2014_000000117125.jpg -../images/val2014/COCO_val2014_000000117127.jpg -../images/val2014/COCO_val2014_000000117191.jpg +../coco/images/val2014/COCO_val2014_000000000164.jpg +../coco/images/val2014/COCO_val2014_000000000192.jpg +../coco/images/val2014/COCO_val2014_000000000283.jpg +../coco/images/val2014/COCO_val2014_000000000397.jpg +../coco/images/val2014/COCO_val2014_000000000589.jpg +../coco/images/val2014/COCO_val2014_000000000599.jpg +../coco/images/val2014/COCO_val2014_000000000711.jpg +../coco/images/val2014/COCO_val2014_000000000757.jpg +../coco/images/val2014/COCO_val2014_000000000764.jpg +../coco/images/val2014/COCO_val2014_000000000872.jpg +../coco/images/val2014/COCO_val2014_000000001063.jpg +../coco/images/val2014/COCO_val2014_000000001554.jpg +../coco/images/val2014/COCO_val2014_000000001667.jpg +../coco/images/val2014/COCO_val2014_000000001700.jpg +../coco/images/val2014/COCO_val2014_000000001869.jpg +../coco/images/val2014/COCO_val2014_000000002124.jpg +../coco/images/val2014/COCO_val2014_000000002261.jpg +../coco/images/val2014/COCO_val2014_000000002621.jpg +../coco/images/val2014/COCO_val2014_000000002684.jpg +../coco/images/val2014/COCO_val2014_000000002764.jpg +../coco/images/val2014/COCO_val2014_000000002894.jpg +../coco/images/val2014/COCO_val2014_000000002972.jpg +../coco/images/val2014/COCO_val2014_000000003035.jpg +../coco/images/val2014/COCO_val2014_000000003084.jpg +../coco/images/val2014/COCO_val2014_000000003103.jpg +../coco/images/val2014/COCO_val2014_000000003109.jpg +../coco/images/val2014/COCO_val2014_000000003134.jpg +../coco/images/val2014/COCO_val2014_000000003209.jpg +../coco/images/val2014/COCO_val2014_000000003244.jpg +../coco/images/val2014/COCO_val2014_000000003326.jpg +../coco/images/val2014/COCO_val2014_000000003337.jpg +../coco/images/val2014/COCO_val2014_000000003661.jpg +../coco/images/val2014/COCO_val2014_000000003711.jpg +../coco/images/val2014/COCO_val2014_000000003779.jpg +../coco/images/val2014/COCO_val2014_000000003865.jpg +../coco/images/val2014/COCO_val2014_000000004079.jpg +../coco/images/val2014/COCO_val2014_000000004092.jpg +../coco/images/val2014/COCO_val2014_000000004283.jpg +../coco/images/val2014/COCO_val2014_000000004296.jpg +../coco/images/val2014/COCO_val2014_000000004392.jpg +../coco/images/val2014/COCO_val2014_000000004742.jpg +../coco/images/val2014/COCO_val2014_000000004754.jpg +../coco/images/val2014/COCO_val2014_000000004764.jpg +../coco/images/val2014/COCO_val2014_000000005038.jpg +../coco/images/val2014/COCO_val2014_000000005060.jpg +../coco/images/val2014/COCO_val2014_000000005124.jpg +../coco/images/val2014/COCO_val2014_000000005178.jpg +../coco/images/val2014/COCO_val2014_000000005205.jpg +../coco/images/val2014/COCO_val2014_000000005443.jpg +../coco/images/val2014/COCO_val2014_000000005652.jpg +../coco/images/val2014/COCO_val2014_000000005723.jpg +../coco/images/val2014/COCO_val2014_000000005804.jpg +../coco/images/val2014/COCO_val2014_000000006074.jpg +../coco/images/val2014/COCO_val2014_000000006091.jpg +../coco/images/val2014/COCO_val2014_000000006153.jpg +../coco/images/val2014/COCO_val2014_000000006213.jpg +../coco/images/val2014/COCO_val2014_000000006497.jpg +../coco/images/val2014/COCO_val2014_000000006789.jpg +../coco/images/val2014/COCO_val2014_000000006847.jpg +../coco/images/val2014/COCO_val2014_000000007241.jpg +../coco/images/val2014/COCO_val2014_000000007256.jpg +../coco/images/val2014/COCO_val2014_000000007281.jpg +../coco/images/val2014/COCO_val2014_000000007795.jpg +../coco/images/val2014/COCO_val2014_000000007867.jpg +../coco/images/val2014/COCO_val2014_000000007873.jpg +../coco/images/val2014/COCO_val2014_000000007899.jpg +../coco/images/val2014/COCO_val2014_000000008010.jpg +../coco/images/val2014/COCO_val2014_000000008179.jpg +../coco/images/val2014/COCO_val2014_000000008190.jpg +../coco/images/val2014/COCO_val2014_000000008204.jpg +../coco/images/val2014/COCO_val2014_000000008350.jpg +../coco/images/val2014/COCO_val2014_000000008493.jpg +../coco/images/val2014/COCO_val2014_000000008853.jpg +../coco/images/val2014/COCO_val2014_000000009105.jpg +../coco/images/val2014/COCO_val2014_000000009156.jpg +../coco/images/val2014/COCO_val2014_000000009217.jpg +../coco/images/val2014/COCO_val2014_000000009270.jpg +../coco/images/val2014/COCO_val2014_000000009286.jpg +../coco/images/val2014/COCO_val2014_000000009548.jpg +../coco/images/val2014/COCO_val2014_000000009553.jpg +../coco/images/val2014/COCO_val2014_000000009727.jpg +../coco/images/val2014/COCO_val2014_000000009908.jpg +../coco/images/val2014/COCO_val2014_000000010114.jpg +../coco/images/val2014/COCO_val2014_000000010249.jpg +../coco/images/val2014/COCO_val2014_000000010395.jpg +../coco/images/val2014/COCO_val2014_000000010400.jpg +../coco/images/val2014/COCO_val2014_000000010463.jpg +../coco/images/val2014/COCO_val2014_000000010613.jpg +../coco/images/val2014/COCO_val2014_000000010764.jpg +../coco/images/val2014/COCO_val2014_000000010779.jpg +../coco/images/val2014/COCO_val2014_000000010928.jpg +../coco/images/val2014/COCO_val2014_000000011099.jpg +../coco/images/val2014/COCO_val2014_000000011181.jpg +../coco/images/val2014/COCO_val2014_000000011184.jpg +../coco/images/val2014/COCO_val2014_000000011197.jpg +../coco/images/val2014/COCO_val2014_000000011320.jpg +../coco/images/val2014/COCO_val2014_000000011721.jpg +../coco/images/val2014/COCO_val2014_000000011813.jpg +../coco/images/val2014/COCO_val2014_000000012014.jpg +../coco/images/val2014/COCO_val2014_000000012047.jpg +../coco/images/val2014/COCO_val2014_000000012085.jpg +../coco/images/val2014/COCO_val2014_000000012115.jpg +../coco/images/val2014/COCO_val2014_000000012166.jpg +../coco/images/val2014/COCO_val2014_000000012230.jpg +../coco/images/val2014/COCO_val2014_000000012370.jpg +../coco/images/val2014/COCO_val2014_000000012375.jpg +../coco/images/val2014/COCO_val2014_000000012448.jpg +../coco/images/val2014/COCO_val2014_000000012543.jpg +../coco/images/val2014/COCO_val2014_000000012744.jpg +../coco/images/val2014/COCO_val2014_000000012897.jpg +../coco/images/val2014/COCO_val2014_000000012966.jpg +../coco/images/val2014/COCO_val2014_000000012993.jpg +../coco/images/val2014/COCO_val2014_000000013004.jpg +../coco/images/val2014/COCO_val2014_000000013333.jpg +../coco/images/val2014/COCO_val2014_000000013357.jpg +../coco/images/val2014/COCO_val2014_000000013774.jpg +../coco/images/val2014/COCO_val2014_000000014029.jpg +../coco/images/val2014/COCO_val2014_000000014056.jpg +../coco/images/val2014/COCO_val2014_000000014108.jpg +../coco/images/val2014/COCO_val2014_000000014135.jpg +../coco/images/val2014/COCO_val2014_000000014226.jpg +../coco/images/val2014/COCO_val2014_000000014306.jpg +../coco/images/val2014/COCO_val2014_000000014591.jpg +../coco/images/val2014/COCO_val2014_000000014629.jpg +../coco/images/val2014/COCO_val2014_000000014756.jpg +../coco/images/val2014/COCO_val2014_000000014874.jpg +../coco/images/val2014/COCO_val2014_000000014990.jpg +../coco/images/val2014/COCO_val2014_000000015386.jpg +../coco/images/val2014/COCO_val2014_000000015559.jpg +../coco/images/val2014/COCO_val2014_000000015599.jpg +../coco/images/val2014/COCO_val2014_000000015709.jpg +../coco/images/val2014/COCO_val2014_000000015735.jpg +../coco/images/val2014/COCO_val2014_000000015751.jpg +../coco/images/val2014/COCO_val2014_000000015883.jpg +../coco/images/val2014/COCO_val2014_000000015953.jpg +../coco/images/val2014/COCO_val2014_000000015956.jpg +../coco/images/val2014/COCO_val2014_000000015968.jpg +../coco/images/val2014/COCO_val2014_000000015987.jpg +../coco/images/val2014/COCO_val2014_000000016030.jpg +../coco/images/val2014/COCO_val2014_000000016076.jpg +../coco/images/val2014/COCO_val2014_000000016228.jpg +../coco/images/val2014/COCO_val2014_000000016241.jpg +../coco/images/val2014/COCO_val2014_000000016257.jpg +../coco/images/val2014/COCO_val2014_000000016327.jpg +../coco/images/val2014/COCO_val2014_000000016410.jpg +../coco/images/val2014/COCO_val2014_000000016574.jpg +../coco/images/val2014/COCO_val2014_000000016716.jpg +../coco/images/val2014/COCO_val2014_000000016928.jpg +../coco/images/val2014/COCO_val2014_000000016995.jpg +../coco/images/val2014/COCO_val2014_000000017235.jpg +../coco/images/val2014/COCO_val2014_000000017379.jpg +../coco/images/val2014/COCO_val2014_000000017667.jpg +../coco/images/val2014/COCO_val2014_000000017755.jpg +../coco/images/val2014/COCO_val2014_000000018295.jpg +../coco/images/val2014/COCO_val2014_000000018358.jpg +../coco/images/val2014/COCO_val2014_000000018476.jpg +../coco/images/val2014/COCO_val2014_000000018750.jpg +../coco/images/val2014/COCO_val2014_000000018783.jpg +../coco/images/val2014/COCO_val2014_000000019025.jpg +../coco/images/val2014/COCO_val2014_000000019042.jpg +../coco/images/val2014/COCO_val2014_000000019129.jpg +../coco/images/val2014/COCO_val2014_000000019176.jpg +../coco/images/val2014/COCO_val2014_000000019491.jpg +../coco/images/val2014/COCO_val2014_000000019890.jpg +../coco/images/val2014/COCO_val2014_000000019923.jpg +../coco/images/val2014/COCO_val2014_000000020001.jpg +../coco/images/val2014/COCO_val2014_000000020038.jpg +../coco/images/val2014/COCO_val2014_000000020175.jpg +../coco/images/val2014/COCO_val2014_000000020268.jpg +../coco/images/val2014/COCO_val2014_000000020273.jpg +../coco/images/val2014/COCO_val2014_000000020349.jpg +../coco/images/val2014/COCO_val2014_000000020553.jpg +../coco/images/val2014/COCO_val2014_000000020788.jpg +../coco/images/val2014/COCO_val2014_000000020912.jpg +../coco/images/val2014/COCO_val2014_000000020947.jpg +../coco/images/val2014/COCO_val2014_000000020972.jpg +../coco/images/val2014/COCO_val2014_000000021161.jpg +../coco/images/val2014/COCO_val2014_000000021483.jpg +../coco/images/val2014/COCO_val2014_000000021588.jpg +../coco/images/val2014/COCO_val2014_000000021639.jpg +../coco/images/val2014/COCO_val2014_000000021644.jpg +../coco/images/val2014/COCO_val2014_000000021645.jpg +../coco/images/val2014/COCO_val2014_000000021671.jpg +../coco/images/val2014/COCO_val2014_000000021746.jpg +../coco/images/val2014/COCO_val2014_000000021839.jpg +../coco/images/val2014/COCO_val2014_000000022002.jpg +../coco/images/val2014/COCO_val2014_000000022129.jpg +../coco/images/val2014/COCO_val2014_000000022191.jpg +../coco/images/val2014/COCO_val2014_000000022215.jpg +../coco/images/val2014/COCO_val2014_000000022341.jpg +../coco/images/val2014/COCO_val2014_000000022492.jpg +../coco/images/val2014/COCO_val2014_000000022563.jpg +../coco/images/val2014/COCO_val2014_000000022660.jpg +../coco/images/val2014/COCO_val2014_000000022705.jpg +../coco/images/val2014/COCO_val2014_000000023017.jpg +../coco/images/val2014/COCO_val2014_000000023309.jpg +../coco/images/val2014/COCO_val2014_000000023411.jpg +../coco/images/val2014/COCO_val2014_000000023754.jpg +../coco/images/val2014/COCO_val2014_000000023802.jpg +../coco/images/val2014/COCO_val2014_000000023981.jpg +../coco/images/val2014/COCO_val2014_000000023995.jpg +../coco/images/val2014/COCO_val2014_000000024112.jpg +../coco/images/val2014/COCO_val2014_000000024247.jpg +../coco/images/val2014/COCO_val2014_000000024396.jpg +../coco/images/val2014/COCO_val2014_000000024776.jpg +../coco/images/val2014/COCO_val2014_000000024924.jpg +../coco/images/val2014/COCO_val2014_000000025096.jpg +../coco/images/val2014/COCO_val2014_000000025191.jpg +../coco/images/val2014/COCO_val2014_000000025252.jpg +../coco/images/val2014/COCO_val2014_000000025293.jpg +../coco/images/val2014/COCO_val2014_000000025360.jpg +../coco/images/val2014/COCO_val2014_000000025595.jpg +../coco/images/val2014/COCO_val2014_000000025685.jpg +../coco/images/val2014/COCO_val2014_000000025807.jpg +../coco/images/val2014/COCO_val2014_000000025864.jpg +../coco/images/val2014/COCO_val2014_000000025989.jpg +../coco/images/val2014/COCO_val2014_000000026026.jpg +../coco/images/val2014/COCO_val2014_000000026430.jpg +../coco/images/val2014/COCO_val2014_000000026432.jpg +../coco/images/val2014/COCO_val2014_000000026534.jpg +../coco/images/val2014/COCO_val2014_000000026560.jpg +../coco/images/val2014/COCO_val2014_000000026564.jpg +../coco/images/val2014/COCO_val2014_000000026671.jpg +../coco/images/val2014/COCO_val2014_000000026690.jpg +../coco/images/val2014/COCO_val2014_000000026734.jpg +../coco/images/val2014/COCO_val2014_000000026799.jpg +../coco/images/val2014/COCO_val2014_000000026907.jpg +../coco/images/val2014/COCO_val2014_000000026908.jpg +../coco/images/val2014/COCO_val2014_000000026946.jpg +../coco/images/val2014/COCO_val2014_000000027530.jpg +../coco/images/val2014/COCO_val2014_000000027610.jpg +../coco/images/val2014/COCO_val2014_000000027620.jpg +../coco/images/val2014/COCO_val2014_000000027787.jpg +../coco/images/val2014/COCO_val2014_000000027789.jpg +../coco/images/val2014/COCO_val2014_000000027874.jpg +../coco/images/val2014/COCO_val2014_000000027946.jpg +../coco/images/val2014/COCO_val2014_000000027975.jpg +../coco/images/val2014/COCO_val2014_000000028022.jpg +../coco/images/val2014/COCO_val2014_000000028039.jpg +../coco/images/val2014/COCO_val2014_000000028273.jpg +../coco/images/val2014/COCO_val2014_000000028540.jpg +../coco/images/val2014/COCO_val2014_000000028702.jpg +../coco/images/val2014/COCO_val2014_000000028820.jpg +../coco/images/val2014/COCO_val2014_000000028874.jpg +../coco/images/val2014/COCO_val2014_000000029019.jpg +../coco/images/val2014/COCO_val2014_000000029030.jpg +../coco/images/val2014/COCO_val2014_000000029170.jpg +../coco/images/val2014/COCO_val2014_000000029308.jpg +../coco/images/val2014/COCO_val2014_000000029393.jpg +../coco/images/val2014/COCO_val2014_000000029524.jpg +../coco/images/val2014/COCO_val2014_000000029577.jpg +../coco/images/val2014/COCO_val2014_000000029648.jpg +../coco/images/val2014/COCO_val2014_000000029656.jpg +../coco/images/val2014/COCO_val2014_000000029697.jpg +../coco/images/val2014/COCO_val2014_000000029709.jpg +../coco/images/val2014/COCO_val2014_000000029719.jpg +../coco/images/val2014/COCO_val2014_000000030034.jpg +../coco/images/val2014/COCO_val2014_000000030062.jpg +../coco/images/val2014/COCO_val2014_000000030383.jpg +../coco/images/val2014/COCO_val2014_000000030470.jpg +../coco/images/val2014/COCO_val2014_000000030548.jpg +../coco/images/val2014/COCO_val2014_000000030668.jpg +../coco/images/val2014/COCO_val2014_000000030793.jpg +../coco/images/val2014/COCO_val2014_000000030843.jpg +../coco/images/val2014/COCO_val2014_000000030998.jpg +../coco/images/val2014/COCO_val2014_000000031151.jpg +../coco/images/val2014/COCO_val2014_000000031164.jpg +../coco/images/val2014/COCO_val2014_000000031176.jpg +../coco/images/val2014/COCO_val2014_000000031247.jpg +../coco/images/val2014/COCO_val2014_000000031392.jpg +../coco/images/val2014/COCO_val2014_000000031521.jpg +../coco/images/val2014/COCO_val2014_000000031542.jpg +../coco/images/val2014/COCO_val2014_000000031817.jpg +../coco/images/val2014/COCO_val2014_000000032081.jpg +../coco/images/val2014/COCO_val2014_000000032193.jpg +../coco/images/val2014/COCO_val2014_000000032331.jpg +../coco/images/val2014/COCO_val2014_000000032464.jpg +../coco/images/val2014/COCO_val2014_000000032510.jpg +../coco/images/val2014/COCO_val2014_000000032524.jpg +../coco/images/val2014/COCO_val2014_000000032625.jpg +../coco/images/val2014/COCO_val2014_000000032677.jpg +../coco/images/val2014/COCO_val2014_000000032715.jpg +../coco/images/val2014/COCO_val2014_000000032947.jpg +../coco/images/val2014/COCO_val2014_000000032964.jpg +../coco/images/val2014/COCO_val2014_000000033006.jpg +../coco/images/val2014/COCO_val2014_000000033055.jpg +../coco/images/val2014/COCO_val2014_000000033158.jpg +../coco/images/val2014/COCO_val2014_000000033243.jpg +../coco/images/val2014/COCO_val2014_000000033345.jpg +../coco/images/val2014/COCO_val2014_000000033499.jpg +../coco/images/val2014/COCO_val2014_000000033561.jpg +../coco/images/val2014/COCO_val2014_000000033830.jpg +../coco/images/val2014/COCO_val2014_000000033835.jpg +../coco/images/val2014/COCO_val2014_000000033924.jpg +../coco/images/val2014/COCO_val2014_000000034056.jpg +../coco/images/val2014/COCO_val2014_000000034114.jpg +../coco/images/val2014/COCO_val2014_000000034137.jpg +../coco/images/val2014/COCO_val2014_000000034183.jpg +../coco/images/val2014/COCO_val2014_000000034193.jpg +../coco/images/val2014/COCO_val2014_000000034299.jpg +../coco/images/val2014/COCO_val2014_000000034452.jpg +../coco/images/val2014/COCO_val2014_000000034689.jpg +../coco/images/val2014/COCO_val2014_000000034877.jpg +../coco/images/val2014/COCO_val2014_000000034892.jpg +../coco/images/val2014/COCO_val2014_000000034930.jpg +../coco/images/val2014/COCO_val2014_000000035012.jpg +../coco/images/val2014/COCO_val2014_000000035222.jpg +../coco/images/val2014/COCO_val2014_000000035326.jpg +../coco/images/val2014/COCO_val2014_000000035368.jpg +../coco/images/val2014/COCO_val2014_000000035474.jpg +../coco/images/val2014/COCO_val2014_000000035498.jpg +../coco/images/val2014/COCO_val2014_000000035738.jpg +../coco/images/val2014/COCO_val2014_000000035826.jpg +../coco/images/val2014/COCO_val2014_000000035940.jpg +../coco/images/val2014/COCO_val2014_000000035966.jpg +../coco/images/val2014/COCO_val2014_000000036049.jpg +../coco/images/val2014/COCO_val2014_000000036252.jpg +../coco/images/val2014/COCO_val2014_000000036508.jpg +../coco/images/val2014/COCO_val2014_000000036522.jpg +../coco/images/val2014/COCO_val2014_000000036539.jpg +../coco/images/val2014/COCO_val2014_000000036563.jpg +../coco/images/val2014/COCO_val2014_000000037038.jpg +../coco/images/val2014/COCO_val2014_000000037629.jpg +../coco/images/val2014/COCO_val2014_000000037675.jpg +../coco/images/val2014/COCO_val2014_000000037846.jpg +../coco/images/val2014/COCO_val2014_000000037865.jpg +../coco/images/val2014/COCO_val2014_000000037907.jpg +../coco/images/val2014/COCO_val2014_000000037988.jpg +../coco/images/val2014/COCO_val2014_000000038031.jpg +../coco/images/val2014/COCO_val2014_000000038190.jpg +../coco/images/val2014/COCO_val2014_000000038252.jpg +../coco/images/val2014/COCO_val2014_000000038296.jpg +../coco/images/val2014/COCO_val2014_000000038465.jpg +../coco/images/val2014/COCO_val2014_000000038488.jpg +../coco/images/val2014/COCO_val2014_000000038531.jpg +../coco/images/val2014/COCO_val2014_000000038539.jpg +../coco/images/val2014/COCO_val2014_000000038645.jpg +../coco/images/val2014/COCO_val2014_000000038685.jpg +../coco/images/val2014/COCO_val2014_000000038825.jpg +../coco/images/val2014/COCO_val2014_000000039322.jpg +../coco/images/val2014/COCO_val2014_000000039480.jpg +../coco/images/val2014/COCO_val2014_000000039697.jpg +../coco/images/val2014/COCO_val2014_000000039731.jpg +../coco/images/val2014/COCO_val2014_000000039743.jpg +../coco/images/val2014/COCO_val2014_000000039785.jpg +../coco/images/val2014/COCO_val2014_000000039961.jpg +../coco/images/val2014/COCO_val2014_000000040426.jpg +../coco/images/val2014/COCO_val2014_000000040485.jpg +../coco/images/val2014/COCO_val2014_000000040681.jpg +../coco/images/val2014/COCO_val2014_000000040686.jpg +../coco/images/val2014/COCO_val2014_000000040886.jpg +../coco/images/val2014/COCO_val2014_000000041119.jpg +../coco/images/val2014/COCO_val2014_000000041147.jpg +../coco/images/val2014/COCO_val2014_000000041322.jpg +../coco/images/val2014/COCO_val2014_000000041373.jpg +../coco/images/val2014/COCO_val2014_000000041550.jpg +../coco/images/val2014/COCO_val2014_000000041635.jpg +../coco/images/val2014/COCO_val2014_000000041867.jpg +../coco/images/val2014/COCO_val2014_000000041872.jpg +../coco/images/val2014/COCO_val2014_000000041924.jpg +../coco/images/val2014/COCO_val2014_000000042137.jpg +../coco/images/val2014/COCO_val2014_000000042279.jpg +../coco/images/val2014/COCO_val2014_000000042492.jpg +../coco/images/val2014/COCO_val2014_000000042576.jpg +../coco/images/val2014/COCO_val2014_000000042661.jpg +../coco/images/val2014/COCO_val2014_000000042743.jpg +../coco/images/val2014/COCO_val2014_000000042805.jpg +../coco/images/val2014/COCO_val2014_000000042837.jpg +../coco/images/val2014/COCO_val2014_000000043165.jpg +../coco/images/val2014/COCO_val2014_000000043218.jpg +../coco/images/val2014/COCO_val2014_000000043261.jpg +../coco/images/val2014/COCO_val2014_000000043404.jpg +../coco/images/val2014/COCO_val2014_000000043542.jpg +../coco/images/val2014/COCO_val2014_000000043605.jpg +../coco/images/val2014/COCO_val2014_000000043614.jpg +../coco/images/val2014/COCO_val2014_000000043673.jpg +../coco/images/val2014/COCO_val2014_000000043816.jpg +../coco/images/val2014/COCO_val2014_000000043850.jpg +../coco/images/val2014/COCO_val2014_000000044220.jpg +../coco/images/val2014/COCO_val2014_000000044269.jpg +../coco/images/val2014/COCO_val2014_000000044309.jpg +../coco/images/val2014/COCO_val2014_000000044478.jpg +../coco/images/val2014/COCO_val2014_000000044536.jpg +../coco/images/val2014/COCO_val2014_000000044559.jpg +../coco/images/val2014/COCO_val2014_000000044575.jpg +../coco/images/val2014/COCO_val2014_000000044612.jpg +../coco/images/val2014/COCO_val2014_000000044677.jpg +../coco/images/val2014/COCO_val2014_000000044699.jpg +../coco/images/val2014/COCO_val2014_000000044823.jpg +../coco/images/val2014/COCO_val2014_000000044989.jpg +../coco/images/val2014/COCO_val2014_000000045094.jpg +../coco/images/val2014/COCO_val2014_000000045176.jpg +../coco/images/val2014/COCO_val2014_000000045197.jpg +../coco/images/val2014/COCO_val2014_000000045367.jpg +../coco/images/val2014/COCO_val2014_000000045392.jpg +../coco/images/val2014/COCO_val2014_000000045433.jpg +../coco/images/val2014/COCO_val2014_000000045463.jpg +../coco/images/val2014/COCO_val2014_000000045550.jpg +../coco/images/val2014/COCO_val2014_000000045574.jpg +../coco/images/val2014/COCO_val2014_000000045627.jpg +../coco/images/val2014/COCO_val2014_000000045685.jpg +../coco/images/val2014/COCO_val2014_000000045728.jpg +../coco/images/val2014/COCO_val2014_000000046252.jpg +../coco/images/val2014/COCO_val2014_000000046269.jpg +../coco/images/val2014/COCO_val2014_000000046329.jpg +../coco/images/val2014/COCO_val2014_000000046805.jpg +../coco/images/val2014/COCO_val2014_000000046869.jpg +../coco/images/val2014/COCO_val2014_000000046919.jpg +../coco/images/val2014/COCO_val2014_000000046924.jpg +../coco/images/val2014/COCO_val2014_000000047008.jpg +../coco/images/val2014/COCO_val2014_000000047131.jpg +../coco/images/val2014/COCO_val2014_000000047226.jpg +../coco/images/val2014/COCO_val2014_000000047263.jpg +../coco/images/val2014/COCO_val2014_000000047395.jpg +../coco/images/val2014/COCO_val2014_000000047552.jpg +../coco/images/val2014/COCO_val2014_000000047570.jpg +../coco/images/val2014/COCO_val2014_000000047720.jpg +../coco/images/val2014/COCO_val2014_000000047775.jpg +../coco/images/val2014/COCO_val2014_000000047886.jpg +../coco/images/val2014/COCO_val2014_000000048504.jpg +../coco/images/val2014/COCO_val2014_000000048564.jpg +../coco/images/val2014/COCO_val2014_000000048668.jpg +../coco/images/val2014/COCO_val2014_000000048731.jpg +../coco/images/val2014/COCO_val2014_000000048739.jpg +../coco/images/val2014/COCO_val2014_000000048791.jpg +../coco/images/val2014/COCO_val2014_000000048840.jpg +../coco/images/val2014/COCO_val2014_000000048905.jpg +../coco/images/val2014/COCO_val2014_000000048910.jpg +../coco/images/val2014/COCO_val2014_000000048924.jpg +../coco/images/val2014/COCO_val2014_000000048956.jpg +../coco/images/val2014/COCO_val2014_000000049075.jpg +../coco/images/val2014/COCO_val2014_000000049236.jpg +../coco/images/val2014/COCO_val2014_000000049676.jpg +../coco/images/val2014/COCO_val2014_000000049881.jpg +../coco/images/val2014/COCO_val2014_000000049985.jpg +../coco/images/val2014/COCO_val2014_000000050100.jpg +../coco/images/val2014/COCO_val2014_000000050145.jpg +../coco/images/val2014/COCO_val2014_000000050177.jpg +../coco/images/val2014/COCO_val2014_000000050324.jpg +../coco/images/val2014/COCO_val2014_000000050331.jpg +../coco/images/val2014/COCO_val2014_000000050481.jpg +../coco/images/val2014/COCO_val2014_000000050485.jpg +../coco/images/val2014/COCO_val2014_000000050493.jpg +../coco/images/val2014/COCO_val2014_000000050746.jpg +../coco/images/val2014/COCO_val2014_000000050844.jpg +../coco/images/val2014/COCO_val2014_000000050896.jpg +../coco/images/val2014/COCO_val2014_000000051249.jpg +../coco/images/val2014/COCO_val2014_000000051250.jpg +../coco/images/val2014/COCO_val2014_000000051289.jpg +../coco/images/val2014/COCO_val2014_000000051314.jpg +../coco/images/val2014/COCO_val2014_000000051339.jpg +../coco/images/val2014/COCO_val2014_000000051461.jpg +../coco/images/val2014/COCO_val2014_000000051476.jpg +../coco/images/val2014/COCO_val2014_000000052005.jpg +../coco/images/val2014/COCO_val2014_000000052020.jpg +../coco/images/val2014/COCO_val2014_000000052290.jpg +../coco/images/val2014/COCO_val2014_000000052314.jpg +../coco/images/val2014/COCO_val2014_000000052425.jpg +../coco/images/val2014/COCO_val2014_000000052575.jpg +../coco/images/val2014/COCO_val2014_000000052871.jpg +../coco/images/val2014/COCO_val2014_000000052982.jpg +../coco/images/val2014/COCO_val2014_000000053139.jpg +../coco/images/val2014/COCO_val2014_000000053183.jpg +../coco/images/val2014/COCO_val2014_000000053263.jpg +../coco/images/val2014/COCO_val2014_000000053491.jpg +../coco/images/val2014/COCO_val2014_000000053503.jpg +../coco/images/val2014/COCO_val2014_000000053580.jpg +../coco/images/val2014/COCO_val2014_000000053616.jpg +../coco/images/val2014/COCO_val2014_000000053907.jpg +../coco/images/val2014/COCO_val2014_000000053949.jpg +../coco/images/val2014/COCO_val2014_000000054301.jpg +../coco/images/val2014/COCO_val2014_000000054334.jpg +../coco/images/val2014/COCO_val2014_000000054490.jpg +../coco/images/val2014/COCO_val2014_000000054527.jpg +../coco/images/val2014/COCO_val2014_000000054533.jpg +../coco/images/val2014/COCO_val2014_000000054603.jpg +../coco/images/val2014/COCO_val2014_000000054643.jpg +../coco/images/val2014/COCO_val2014_000000054679.jpg +../coco/images/val2014/COCO_val2014_000000054723.jpg +../coco/images/val2014/COCO_val2014_000000054959.jpg +../coco/images/val2014/COCO_val2014_000000055167.jpg +../coco/images/val2014/COCO_val2014_000000056137.jpg +../coco/images/val2014/COCO_val2014_000000056326.jpg +../coco/images/val2014/COCO_val2014_000000056541.jpg +../coco/images/val2014/COCO_val2014_000000056562.jpg +../coco/images/val2014/COCO_val2014_000000056624.jpg +../coco/images/val2014/COCO_val2014_000000056633.jpg +../coco/images/val2014/COCO_val2014_000000056724.jpg +../coco/images/val2014/COCO_val2014_000000056739.jpg +../coco/images/val2014/COCO_val2014_000000057027.jpg +../coco/images/val2014/COCO_val2014_000000057091.jpg +../coco/images/val2014/COCO_val2014_000000057095.jpg +../coco/images/val2014/COCO_val2014_000000057100.jpg +../coco/images/val2014/COCO_val2014_000000057149.jpg +../coco/images/val2014/COCO_val2014_000000057238.jpg +../coco/images/val2014/COCO_val2014_000000057359.jpg +../coco/images/val2014/COCO_val2014_000000057454.jpg +../coco/images/val2014/COCO_val2014_000000058001.jpg +../coco/images/val2014/COCO_val2014_000000058157.jpg +../coco/images/val2014/COCO_val2014_000000058223.jpg +../coco/images/val2014/COCO_val2014_000000058232.jpg +../coco/images/val2014/COCO_val2014_000000058344.jpg +../coco/images/val2014/COCO_val2014_000000058522.jpg +../coco/images/val2014/COCO_val2014_000000058636.jpg +../coco/images/val2014/COCO_val2014_000000058800.jpg +../coco/images/val2014/COCO_val2014_000000058949.jpg +../coco/images/val2014/COCO_val2014_000000059009.jpg +../coco/images/val2014/COCO_val2014_000000059202.jpg +../coco/images/val2014/COCO_val2014_000000059393.jpg +../coco/images/val2014/COCO_val2014_000000059652.jpg +../coco/images/val2014/COCO_val2014_000000060010.jpg +../coco/images/val2014/COCO_val2014_000000060049.jpg +../coco/images/val2014/COCO_val2014_000000060126.jpg +../coco/images/val2014/COCO_val2014_000000060128.jpg +../coco/images/val2014/COCO_val2014_000000060448.jpg +../coco/images/val2014/COCO_val2014_000000060548.jpg +../coco/images/val2014/COCO_val2014_000000060677.jpg +../coco/images/val2014/COCO_val2014_000000060760.jpg +../coco/images/val2014/COCO_val2014_000000060823.jpg +../coco/images/val2014/COCO_val2014_000000060859.jpg +../coco/images/val2014/COCO_val2014_000000060899.jpg +../coco/images/val2014/COCO_val2014_000000061171.jpg +../coco/images/val2014/COCO_val2014_000000061503.jpg +../coco/images/val2014/COCO_val2014_000000061520.jpg +../coco/images/val2014/COCO_val2014_000000061531.jpg +../coco/images/val2014/COCO_val2014_000000061564.jpg +../coco/images/val2014/COCO_val2014_000000061658.jpg +../coco/images/val2014/COCO_val2014_000000061693.jpg +../coco/images/val2014/COCO_val2014_000000061717.jpg +../coco/images/val2014/COCO_val2014_000000061836.jpg +../coco/images/val2014/COCO_val2014_000000062041.jpg +../coco/images/val2014/COCO_val2014_000000062060.jpg +../coco/images/val2014/COCO_val2014_000000062198.jpg +../coco/images/val2014/COCO_val2014_000000062200.jpg +../coco/images/val2014/COCO_val2014_000000062220.jpg +../coco/images/val2014/COCO_val2014_000000062623.jpg +../coco/images/val2014/COCO_val2014_000000062726.jpg +../coco/images/val2014/COCO_val2014_000000062875.jpg +../coco/images/val2014/COCO_val2014_000000063047.jpg +../coco/images/val2014/COCO_val2014_000000063114.jpg +../coco/images/val2014/COCO_val2014_000000063488.jpg +../coco/images/val2014/COCO_val2014_000000063671.jpg +../coco/images/val2014/COCO_val2014_000000063715.jpg +../coco/images/val2014/COCO_val2014_000000063804.jpg +../coco/images/val2014/COCO_val2014_000000063882.jpg +../coco/images/val2014/COCO_val2014_000000063939.jpg +../coco/images/val2014/COCO_val2014_000000063965.jpg +../coco/images/val2014/COCO_val2014_000000064155.jpg +../coco/images/val2014/COCO_val2014_000000064189.jpg +../coco/images/val2014/COCO_val2014_000000064196.jpg +../coco/images/val2014/COCO_val2014_000000064495.jpg +../coco/images/val2014/COCO_val2014_000000064610.jpg +../coco/images/val2014/COCO_val2014_000000064693.jpg +../coco/images/val2014/COCO_val2014_000000064746.jpg +../coco/images/val2014/COCO_val2014_000000064760.jpg +../coco/images/val2014/COCO_val2014_000000064796.jpg +../coco/images/val2014/COCO_val2014_000000064865.jpg +../coco/images/val2014/COCO_val2014_000000064915.jpg +../coco/images/val2014/COCO_val2014_000000065074.jpg +../coco/images/val2014/COCO_val2014_000000065124.jpg +../coco/images/val2014/COCO_val2014_000000065258.jpg +../coco/images/val2014/COCO_val2014_000000065267.jpg +../coco/images/val2014/COCO_val2014_000000065430.jpg +../coco/images/val2014/COCO_val2014_000000065465.jpg +../coco/images/val2014/COCO_val2014_000000065942.jpg +../coco/images/val2014/COCO_val2014_000000066001.jpg +../coco/images/val2014/COCO_val2014_000000066064.jpg +../coco/images/val2014/COCO_val2014_000000066072.jpg +../coco/images/val2014/COCO_val2014_000000066239.jpg +../coco/images/val2014/COCO_val2014_000000066243.jpg +../coco/images/val2014/COCO_val2014_000000066355.jpg +../coco/images/val2014/COCO_val2014_000000066412.jpg +../coco/images/val2014/COCO_val2014_000000066423.jpg +../coco/images/val2014/COCO_val2014_000000066427.jpg +../coco/images/val2014/COCO_val2014_000000066502.jpg +../coco/images/val2014/COCO_val2014_000000066519.jpg +../coco/images/val2014/COCO_val2014_000000066561.jpg +../coco/images/val2014/COCO_val2014_000000066700.jpg +../coco/images/val2014/COCO_val2014_000000066717.jpg +../coco/images/val2014/COCO_val2014_000000066879.jpg +../coco/images/val2014/COCO_val2014_000000067178.jpg +../coco/images/val2014/COCO_val2014_000000067207.jpg +../coco/images/val2014/COCO_val2014_000000067218.jpg +../coco/images/val2014/COCO_val2014_000000067412.jpg +../coco/images/val2014/COCO_val2014_000000067532.jpg +../coco/images/val2014/COCO_val2014_000000067590.jpg +../coco/images/val2014/COCO_val2014_000000067660.jpg +../coco/images/val2014/COCO_val2014_000000067686.jpg +../coco/images/val2014/COCO_val2014_000000067704.jpg +../coco/images/val2014/COCO_val2014_000000067776.jpg +../coco/images/val2014/COCO_val2014_000000067948.jpg +../coco/images/val2014/COCO_val2014_000000067953.jpg +../coco/images/val2014/COCO_val2014_000000068059.jpg +../coco/images/val2014/COCO_val2014_000000068204.jpg +../coco/images/val2014/COCO_val2014_000000068205.jpg +../coco/images/val2014/COCO_val2014_000000068409.jpg +../coco/images/val2014/COCO_val2014_000000068435.jpg +../coco/images/val2014/COCO_val2014_000000068520.jpg +../coco/images/val2014/COCO_val2014_000000068546.jpg +../coco/images/val2014/COCO_val2014_000000068674.jpg +../coco/images/val2014/COCO_val2014_000000068745.jpg +../coco/images/val2014/COCO_val2014_000000069009.jpg +../coco/images/val2014/COCO_val2014_000000069077.jpg +../coco/images/val2014/COCO_val2014_000000069196.jpg +../coco/images/val2014/COCO_val2014_000000069356.jpg +../coco/images/val2014/COCO_val2014_000000069568.jpg +../coco/images/val2014/COCO_val2014_000000069577.jpg +../coco/images/val2014/COCO_val2014_000000069698.jpg +../coco/images/val2014/COCO_val2014_000000070493.jpg +../coco/images/val2014/COCO_val2014_000000070896.jpg +../coco/images/val2014/COCO_val2014_000000071023.jpg +../coco/images/val2014/COCO_val2014_000000071123.jpg +../coco/images/val2014/COCO_val2014_000000071241.jpg +../coco/images/val2014/COCO_val2014_000000071301.jpg +../coco/images/val2014/COCO_val2014_000000071345.jpg +../coco/images/val2014/COCO_val2014_000000071451.jpg +../coco/images/val2014/COCO_val2014_000000071673.jpg +../coco/images/val2014/COCO_val2014_000000071826.jpg +../coco/images/val2014/COCO_val2014_000000071986.jpg +../coco/images/val2014/COCO_val2014_000000072004.jpg +../coco/images/val2014/COCO_val2014_000000072020.jpg +../coco/images/val2014/COCO_val2014_000000072052.jpg +../coco/images/val2014/COCO_val2014_000000072281.jpg +../coco/images/val2014/COCO_val2014_000000072368.jpg +../coco/images/val2014/COCO_val2014_000000072737.jpg +../coco/images/val2014/COCO_val2014_000000072797.jpg +../coco/images/val2014/COCO_val2014_000000072860.jpg +../coco/images/val2014/COCO_val2014_000000073009.jpg +../coco/images/val2014/COCO_val2014_000000073039.jpg +../coco/images/val2014/COCO_val2014_000000073239.jpg +../coco/images/val2014/COCO_val2014_000000073467.jpg +../coco/images/val2014/COCO_val2014_000000073491.jpg +../coco/images/val2014/COCO_val2014_000000073588.jpg +../coco/images/val2014/COCO_val2014_000000073729.jpg +../coco/images/val2014/COCO_val2014_000000073973.jpg +../coco/images/val2014/COCO_val2014_000000074037.jpg +../coco/images/val2014/COCO_val2014_000000074137.jpg +../coco/images/val2014/COCO_val2014_000000074268.jpg +../coco/images/val2014/COCO_val2014_000000074434.jpg +../coco/images/val2014/COCO_val2014_000000074789.jpg +../coco/images/val2014/COCO_val2014_000000074963.jpg +../coco/images/val2014/COCO_val2014_000000075033.jpg +../coco/images/val2014/COCO_val2014_000000075372.jpg +../coco/images/val2014/COCO_val2014_000000075527.jpg +../coco/images/val2014/COCO_val2014_000000075646.jpg +../coco/images/val2014/COCO_val2014_000000075713.jpg +../coco/images/val2014/COCO_val2014_000000075775.jpg +../coco/images/val2014/COCO_val2014_000000075786.jpg +../coco/images/val2014/COCO_val2014_000000075886.jpg +../coco/images/val2014/COCO_val2014_000000076087.jpg +../coco/images/val2014/COCO_val2014_000000076257.jpg +../coco/images/val2014/COCO_val2014_000000076521.jpg +../coco/images/val2014/COCO_val2014_000000076572.jpg +../coco/images/val2014/COCO_val2014_000000076844.jpg +../coco/images/val2014/COCO_val2014_000000077178.jpg +../coco/images/val2014/COCO_val2014_000000077181.jpg +../coco/images/val2014/COCO_val2014_000000077184.jpg +../coco/images/val2014/COCO_val2014_000000077396.jpg +../coco/images/val2014/COCO_val2014_000000077400.jpg +../coco/images/val2014/COCO_val2014_000000077415.jpg +../coco/images/val2014/COCO_val2014_000000078565.jpg +../coco/images/val2014/COCO_val2014_000000078701.jpg +../coco/images/val2014/COCO_val2014_000000078843.jpg +../coco/images/val2014/COCO_val2014_000000078929.jpg +../coco/images/val2014/COCO_val2014_000000079084.jpg +../coco/images/val2014/COCO_val2014_000000079188.jpg +../coco/images/val2014/COCO_val2014_000000079544.jpg +../coco/images/val2014/COCO_val2014_000000079566.jpg +../coco/images/val2014/COCO_val2014_000000079588.jpg +../coco/images/val2014/COCO_val2014_000000079689.jpg +../coco/images/val2014/COCO_val2014_000000080104.jpg +../coco/images/val2014/COCO_val2014_000000080172.jpg +../coco/images/val2014/COCO_val2014_000000080219.jpg +../coco/images/val2014/COCO_val2014_000000080300.jpg +../coco/images/val2014/COCO_val2014_000000080395.jpg +../coco/images/val2014/COCO_val2014_000000080522.jpg +../coco/images/val2014/COCO_val2014_000000080714.jpg +../coco/images/val2014/COCO_val2014_000000080737.jpg +../coco/images/val2014/COCO_val2014_000000080747.jpg +../coco/images/val2014/COCO_val2014_000000081000.jpg +../coco/images/val2014/COCO_val2014_000000081081.jpg +../coco/images/val2014/COCO_val2014_000000081100.jpg +../coco/images/val2014/COCO_val2014_000000081287.jpg +../coco/images/val2014/COCO_val2014_000000081394.jpg +../coco/images/val2014/COCO_val2014_000000081552.jpg +../coco/images/val2014/COCO_val2014_000000082157.jpg +../coco/images/val2014/COCO_val2014_000000082252.jpg +../coco/images/val2014/COCO_val2014_000000082259.jpg +../coco/images/val2014/COCO_val2014_000000082367.jpg +../coco/images/val2014/COCO_val2014_000000082431.jpg +../coco/images/val2014/COCO_val2014_000000082456.jpg +../coco/images/val2014/COCO_val2014_000000082794.jpg +../coco/images/val2014/COCO_val2014_000000082807.jpg +../coco/images/val2014/COCO_val2014_000000082846.jpg +../coco/images/val2014/COCO_val2014_000000082847.jpg +../coco/images/val2014/COCO_val2014_000000082889.jpg +../coco/images/val2014/COCO_val2014_000000082981.jpg +../coco/images/val2014/COCO_val2014_000000083036.jpg +../coco/images/val2014/COCO_val2014_000000083065.jpg +../coco/images/val2014/COCO_val2014_000000083142.jpg +../coco/images/val2014/COCO_val2014_000000083275.jpg +../coco/images/val2014/COCO_val2014_000000083557.jpg +../coco/images/val2014/COCO_val2014_000000084073.jpg +../coco/images/val2014/COCO_val2014_000000084447.jpg +../coco/images/val2014/COCO_val2014_000000084463.jpg +../coco/images/val2014/COCO_val2014_000000084592.jpg +../coco/images/val2014/COCO_val2014_000000084674.jpg +../coco/images/val2014/COCO_val2014_000000084762.jpg +../coco/images/val2014/COCO_val2014_000000084870.jpg +../coco/images/val2014/COCO_val2014_000000084929.jpg +../coco/images/val2014/COCO_val2014_000000084980.jpg +../coco/images/val2014/COCO_val2014_000000085101.jpg +../coco/images/val2014/COCO_val2014_000000085292.jpg +../coco/images/val2014/COCO_val2014_000000085353.jpg +../coco/images/val2014/COCO_val2014_000000085674.jpg +../coco/images/val2014/COCO_val2014_000000085813.jpg +../coco/images/val2014/COCO_val2014_000000086011.jpg +../coco/images/val2014/COCO_val2014_000000086133.jpg +../coco/images/val2014/COCO_val2014_000000086136.jpg +../coco/images/val2014/COCO_val2014_000000086215.jpg +../coco/images/val2014/COCO_val2014_000000086220.jpg +../coco/images/val2014/COCO_val2014_000000086249.jpg +../coco/images/val2014/COCO_val2014_000000086320.jpg +../coco/images/val2014/COCO_val2014_000000086357.jpg +../coco/images/val2014/COCO_val2014_000000086429.jpg +../coco/images/val2014/COCO_val2014_000000086467.jpg +../coco/images/val2014/COCO_val2014_000000086483.jpg +../coco/images/val2014/COCO_val2014_000000086646.jpg +../coco/images/val2014/COCO_val2014_000000086755.jpg +../coco/images/val2014/COCO_val2014_000000086839.jpg +../coco/images/val2014/COCO_val2014_000000086848.jpg +../coco/images/val2014/COCO_val2014_000000086877.jpg +../coco/images/val2014/COCO_val2014_000000087038.jpg +../coco/images/val2014/COCO_val2014_000000087244.jpg +../coco/images/val2014/COCO_val2014_000000087354.jpg +../coco/images/val2014/COCO_val2014_000000087387.jpg +../coco/images/val2014/COCO_val2014_000000087489.jpg +../coco/images/val2014/COCO_val2014_000000087503.jpg +../coco/images/val2014/COCO_val2014_000000087617.jpg +../coco/images/val2014/COCO_val2014_000000087638.jpg +../coco/images/val2014/COCO_val2014_000000087740.jpg +../coco/images/val2014/COCO_val2014_000000087875.jpg +../coco/images/val2014/COCO_val2014_000000088360.jpg +../coco/images/val2014/COCO_val2014_000000088507.jpg +../coco/images/val2014/COCO_val2014_000000088560.jpg +../coco/images/val2014/COCO_val2014_000000088846.jpg +../coco/images/val2014/COCO_val2014_000000088859.jpg +../coco/images/val2014/COCO_val2014_000000088902.jpg +../coco/images/val2014/COCO_val2014_000000089027.jpg +../coco/images/val2014/COCO_val2014_000000089258.jpg +../coco/images/val2014/COCO_val2014_000000089285.jpg +../coco/images/val2014/COCO_val2014_000000089359.jpg +../coco/images/val2014/COCO_val2014_000000089378.jpg +../coco/images/val2014/COCO_val2014_000000089391.jpg +../coco/images/val2014/COCO_val2014_000000089487.jpg +../coco/images/val2014/COCO_val2014_000000089618.jpg +../coco/images/val2014/COCO_val2014_000000089670.jpg +../coco/images/val2014/COCO_val2014_000000090003.jpg +../coco/images/val2014/COCO_val2014_000000090062.jpg +../coco/images/val2014/COCO_val2014_000000090155.jpg +../coco/images/val2014/COCO_val2014_000000090208.jpg +../coco/images/val2014/COCO_val2014_000000090351.jpg +../coco/images/val2014/COCO_val2014_000000090476.jpg +../coco/images/val2014/COCO_val2014_000000090594.jpg +../coco/images/val2014/COCO_val2014_000000090753.jpg +../coco/images/val2014/COCO_val2014_000000090754.jpg +../coco/images/val2014/COCO_val2014_000000090864.jpg +../coco/images/val2014/COCO_val2014_000000091079.jpg +../coco/images/val2014/COCO_val2014_000000091341.jpg +../coco/images/val2014/COCO_val2014_000000091402.jpg +../coco/images/val2014/COCO_val2014_000000091517.jpg +../coco/images/val2014/COCO_val2014_000000091520.jpg +../coco/images/val2014/COCO_val2014_000000091612.jpg +../coco/images/val2014/COCO_val2014_000000091716.jpg +../coco/images/val2014/COCO_val2014_000000091766.jpg +../coco/images/val2014/COCO_val2014_000000091857.jpg +../coco/images/val2014/COCO_val2014_000000091899.jpg +../coco/images/val2014/COCO_val2014_000000091912.jpg +../coco/images/val2014/COCO_val2014_000000092093.jpg +../coco/images/val2014/COCO_val2014_000000092124.jpg +../coco/images/val2014/COCO_val2014_000000092679.jpg +../coco/images/val2014/COCO_val2014_000000092683.jpg +../coco/images/val2014/COCO_val2014_000000092939.jpg +../coco/images/val2014/COCO_val2014_000000092985.jpg +../coco/images/val2014/COCO_val2014_000000093175.jpg +../coco/images/val2014/COCO_val2014_000000093236.jpg +../coco/images/val2014/COCO_val2014_000000093331.jpg +../coco/images/val2014/COCO_val2014_000000093434.jpg +../coco/images/val2014/COCO_val2014_000000093607.jpg +../coco/images/val2014/COCO_val2014_000000093806.jpg +../coco/images/val2014/COCO_val2014_000000093964.jpg +../coco/images/val2014/COCO_val2014_000000094012.jpg +../coco/images/val2014/COCO_val2014_000000094033.jpg +../coco/images/val2014/COCO_val2014_000000094046.jpg +../coco/images/val2014/COCO_val2014_000000094052.jpg +../coco/images/val2014/COCO_val2014_000000094055.jpg +../coco/images/val2014/COCO_val2014_000000094501.jpg +../coco/images/val2014/COCO_val2014_000000094619.jpg +../coco/images/val2014/COCO_val2014_000000094746.jpg +../coco/images/val2014/COCO_val2014_000000094795.jpg +../coco/images/val2014/COCO_val2014_000000094846.jpg +../coco/images/val2014/COCO_val2014_000000095062.jpg +../coco/images/val2014/COCO_val2014_000000095063.jpg +../coco/images/val2014/COCO_val2014_000000095227.jpg +../coco/images/val2014/COCO_val2014_000000095441.jpg +../coco/images/val2014/COCO_val2014_000000095551.jpg +../coco/images/val2014/COCO_val2014_000000095670.jpg +../coco/images/val2014/COCO_val2014_000000095770.jpg +../coco/images/val2014/COCO_val2014_000000096110.jpg +../coco/images/val2014/COCO_val2014_000000096288.jpg +../coco/images/val2014/COCO_val2014_000000096327.jpg +../coco/images/val2014/COCO_val2014_000000096351.jpg +../coco/images/val2014/COCO_val2014_000000096618.jpg +../coco/images/val2014/COCO_val2014_000000096654.jpg +../coco/images/val2014/COCO_val2014_000000096762.jpg +../coco/images/val2014/COCO_val2014_000000096769.jpg +../coco/images/val2014/COCO_val2014_000000096998.jpg +../coco/images/val2014/COCO_val2014_000000097017.jpg +../coco/images/val2014/COCO_val2014_000000097048.jpg +../coco/images/val2014/COCO_val2014_000000097080.jpg +../coco/images/val2014/COCO_val2014_000000097240.jpg +../coco/images/val2014/COCO_val2014_000000097479.jpg +../coco/images/val2014/COCO_val2014_000000097577.jpg +../coco/images/val2014/COCO_val2014_000000097610.jpg +../coco/images/val2014/COCO_val2014_000000097656.jpg +../coco/images/val2014/COCO_val2014_000000097667.jpg +../coco/images/val2014/COCO_val2014_000000097682.jpg +../coco/images/val2014/COCO_val2014_000000097748.jpg +../coco/images/val2014/COCO_val2014_000000097868.jpg +../coco/images/val2014/COCO_val2014_000000097899.jpg +../coco/images/val2014/COCO_val2014_000000098018.jpg +../coco/images/val2014/COCO_val2014_000000098043.jpg +../coco/images/val2014/COCO_val2014_000000098095.jpg +../coco/images/val2014/COCO_val2014_000000098194.jpg +../coco/images/val2014/COCO_val2014_000000098280.jpg +../coco/images/val2014/COCO_val2014_000000098283.jpg +../coco/images/val2014/COCO_val2014_000000098599.jpg +../coco/images/val2014/COCO_val2014_000000098872.jpg +../coco/images/val2014/COCO_val2014_000000099026.jpg +../coco/images/val2014/COCO_val2014_000000099260.jpg +../coco/images/val2014/COCO_val2014_000000099389.jpg +../coco/images/val2014/COCO_val2014_000000099707.jpg +../coco/images/val2014/COCO_val2014_000000099961.jpg +../coco/images/val2014/COCO_val2014_000000099996.jpg +../coco/images/val2014/COCO_val2014_000000100000.jpg +../coco/images/val2014/COCO_val2014_000000100006.jpg +../coco/images/val2014/COCO_val2014_000000100083.jpg +../coco/images/val2014/COCO_val2014_000000100166.jpg +../coco/images/val2014/COCO_val2014_000000100187.jpg +../coco/images/val2014/COCO_val2014_000000100245.jpg +../coco/images/val2014/COCO_val2014_000000100343.jpg +../coco/images/val2014/COCO_val2014_000000100428.jpg +../coco/images/val2014/COCO_val2014_000000100582.jpg +../coco/images/val2014/COCO_val2014_000000100723.jpg +../coco/images/val2014/COCO_val2014_000000100726.jpg +../coco/images/val2014/COCO_val2014_000000100909.jpg +../coco/images/val2014/COCO_val2014_000000101059.jpg +../coco/images/val2014/COCO_val2014_000000101145.jpg +../coco/images/val2014/COCO_val2014_000000101567.jpg +../coco/images/val2014/COCO_val2014_000000101623.jpg +../coco/images/val2014/COCO_val2014_000000101703.jpg +../coco/images/val2014/COCO_val2014_000000101884.jpg +../coco/images/val2014/COCO_val2014_000000101948.jpg +../coco/images/val2014/COCO_val2014_000000102331.jpg +../coco/images/val2014/COCO_val2014_000000102421.jpg +../coco/images/val2014/COCO_val2014_000000102439.jpg +../coco/images/val2014/COCO_val2014_000000102446.jpg +../coco/images/val2014/COCO_val2014_000000102461.jpg +../coco/images/val2014/COCO_val2014_000000102466.jpg +../coco/images/val2014/COCO_val2014_000000102478.jpg +../coco/images/val2014/COCO_val2014_000000102594.jpg +../coco/images/val2014/COCO_val2014_000000102598.jpg +../coco/images/val2014/COCO_val2014_000000102665.jpg +../coco/images/val2014/COCO_val2014_000000102707.jpg +../coco/images/val2014/COCO_val2014_000000102848.jpg +../coco/images/val2014/COCO_val2014_000000102906.jpg +../coco/images/val2014/COCO_val2014_000000103122.jpg +../coco/images/val2014/COCO_val2014_000000103255.jpg +../coco/images/val2014/COCO_val2014_000000103272.jpg +../coco/images/val2014/COCO_val2014_000000103379.jpg +../coco/images/val2014/COCO_val2014_000000103413.jpg +../coco/images/val2014/COCO_val2014_000000103431.jpg +../coco/images/val2014/COCO_val2014_000000103509.jpg +../coco/images/val2014/COCO_val2014_000000103538.jpg +../coco/images/val2014/COCO_val2014_000000103667.jpg +../coco/images/val2014/COCO_val2014_000000103747.jpg +../coco/images/val2014/COCO_val2014_000000103931.jpg +../coco/images/val2014/COCO_val2014_000000104002.jpg +../coco/images/val2014/COCO_val2014_000000104455.jpg +../coco/images/val2014/COCO_val2014_000000104486.jpg +../coco/images/val2014/COCO_val2014_000000104494.jpg +../coco/images/val2014/COCO_val2014_000000104495.jpg +../coco/images/val2014/COCO_val2014_000000104893.jpg +../coco/images/val2014/COCO_val2014_000000104965.jpg +../coco/images/val2014/COCO_val2014_000000105040.jpg +../coco/images/val2014/COCO_val2014_000000105102.jpg +../coco/images/val2014/COCO_val2014_000000105156.jpg +../coco/images/val2014/COCO_val2014_000000105264.jpg +../coco/images/val2014/COCO_val2014_000000105291.jpg +../coco/images/val2014/COCO_val2014_000000105367.jpg +../coco/images/val2014/COCO_val2014_000000105647.jpg +../coco/images/val2014/COCO_val2014_000000105668.jpg +../coco/images/val2014/COCO_val2014_000000105711.jpg +../coco/images/val2014/COCO_val2014_000000105866.jpg +../coco/images/val2014/COCO_val2014_000000105973.jpg +../coco/images/val2014/COCO_val2014_000000106096.jpg +../coco/images/val2014/COCO_val2014_000000106120.jpg +../coco/images/val2014/COCO_val2014_000000106314.jpg +../coco/images/val2014/COCO_val2014_000000106351.jpg +../coco/images/val2014/COCO_val2014_000000106641.jpg +../coco/images/val2014/COCO_val2014_000000106661.jpg +../coco/images/val2014/COCO_val2014_000000106757.jpg +../coco/images/val2014/COCO_val2014_000000106793.jpg +../coco/images/val2014/COCO_val2014_000000106849.jpg +../coco/images/val2014/COCO_val2014_000000107004.jpg +../coco/images/val2014/COCO_val2014_000000107123.jpg +../coco/images/val2014/COCO_val2014_000000107183.jpg +../coco/images/val2014/COCO_val2014_000000107227.jpg +../coco/images/val2014/COCO_val2014_000000107244.jpg +../coco/images/val2014/COCO_val2014_000000107304.jpg +../coco/images/val2014/COCO_val2014_000000107542.jpg +../coco/images/val2014/COCO_val2014_000000107741.jpg +../coco/images/val2014/COCO_val2014_000000107831.jpg +../coco/images/val2014/COCO_val2014_000000107839.jpg +../coco/images/val2014/COCO_val2014_000000108051.jpg +../coco/images/val2014/COCO_val2014_000000108152.jpg +../coco/images/val2014/COCO_val2014_000000108212.jpg +../coco/images/val2014/COCO_val2014_000000108380.jpg +../coco/images/val2014/COCO_val2014_000000108408.jpg +../coco/images/val2014/COCO_val2014_000000108531.jpg +../coco/images/val2014/COCO_val2014_000000108761.jpg +../coco/images/val2014/COCO_val2014_000000108864.jpg +../coco/images/val2014/COCO_val2014_000000109055.jpg +../coco/images/val2014/COCO_val2014_000000109092.jpg +../coco/images/val2014/COCO_val2014_000000109178.jpg +../coco/images/val2014/COCO_val2014_000000109216.jpg +../coco/images/val2014/COCO_val2014_000000109231.jpg +../coco/images/val2014/COCO_val2014_000000109308.jpg +../coco/images/val2014/COCO_val2014_000000109486.jpg +../coco/images/val2014/COCO_val2014_000000109819.jpg +../coco/images/val2014/COCO_val2014_000000109869.jpg +../coco/images/val2014/COCO_val2014_000000110313.jpg +../coco/images/val2014/COCO_val2014_000000110389.jpg +../coco/images/val2014/COCO_val2014_000000110562.jpg +../coco/images/val2014/COCO_val2014_000000110617.jpg +../coco/images/val2014/COCO_val2014_000000110638.jpg +../coco/images/val2014/COCO_val2014_000000110881.jpg +../coco/images/val2014/COCO_val2014_000000110884.jpg +../coco/images/val2014/COCO_val2014_000000110951.jpg +../coco/images/val2014/COCO_val2014_000000111004.jpg +../coco/images/val2014/COCO_val2014_000000111014.jpg +../coco/images/val2014/COCO_val2014_000000111024.jpg +../coco/images/val2014/COCO_val2014_000000111076.jpg +../coco/images/val2014/COCO_val2014_000000111179.jpg +../coco/images/val2014/COCO_val2014_000000111590.jpg +../coco/images/val2014/COCO_val2014_000000111593.jpg +../coco/images/val2014/COCO_val2014_000000111878.jpg +../coco/images/val2014/COCO_val2014_000000112298.jpg +../coco/images/val2014/COCO_val2014_000000112388.jpg +../coco/images/val2014/COCO_val2014_000000112394.jpg +../coco/images/val2014/COCO_val2014_000000112440.jpg +../coco/images/val2014/COCO_val2014_000000112751.jpg +../coco/images/val2014/COCO_val2014_000000112818.jpg +../coco/images/val2014/COCO_val2014_000000112820.jpg +../coco/images/val2014/COCO_val2014_000000112830.jpg +../coco/images/val2014/COCO_val2014_000000112928.jpg +../coco/images/val2014/COCO_val2014_000000113139.jpg +../coco/images/val2014/COCO_val2014_000000113173.jpg +../coco/images/val2014/COCO_val2014_000000113313.jpg +../coco/images/val2014/COCO_val2014_000000113440.jpg +../coco/images/val2014/COCO_val2014_000000113559.jpg +../coco/images/val2014/COCO_val2014_000000113570.jpg +../coco/images/val2014/COCO_val2014_000000113579.jpg +../coco/images/val2014/COCO_val2014_000000113590.jpg +../coco/images/val2014/COCO_val2014_000000113757.jpg +../coco/images/val2014/COCO_val2014_000000113977.jpg +../coco/images/val2014/COCO_val2014_000000114033.jpg +../coco/images/val2014/COCO_val2014_000000114055.jpg +../coco/images/val2014/COCO_val2014_000000114090.jpg +../coco/images/val2014/COCO_val2014_000000114147.jpg +../coco/images/val2014/COCO_val2014_000000114239.jpg +../coco/images/val2014/COCO_val2014_000000114503.jpg +../coco/images/val2014/COCO_val2014_000000114907.jpg +../coco/images/val2014/COCO_val2014_000000114926.jpg +../coco/images/val2014/COCO_val2014_000000115069.jpg +../coco/images/val2014/COCO_val2014_000000115070.jpg +../coco/images/val2014/COCO_val2014_000000115128.jpg +../coco/images/val2014/COCO_val2014_000000115870.jpg +../coco/images/val2014/COCO_val2014_000000115898.jpg +../coco/images/val2014/COCO_val2014_000000115930.jpg +../coco/images/val2014/COCO_val2014_000000116226.jpg +../coco/images/val2014/COCO_val2014_000000116556.jpg +../coco/images/val2014/COCO_val2014_000000116667.jpg +../coco/images/val2014/COCO_val2014_000000116696.jpg +../coco/images/val2014/COCO_val2014_000000116936.jpg +../coco/images/val2014/COCO_val2014_000000117014.jpg +../coco/images/val2014/COCO_val2014_000000117037.jpg +../coco/images/val2014/COCO_val2014_000000117125.jpg +../coco/images/val2014/COCO_val2014_000000117127.jpg +../coco/images/val2014/COCO_val2014_000000117191.jpg From a8f0a3fedec5ec2e9ddcc6b7e22196c74bb972d4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 8 May 2019 13:06:24 +0200 Subject: [PATCH 0820/2595] updates --- .gitignore | 2 +- data/5k.txt | 5000 +++++++++++++++++++++++++++++++++++++++++++ data/coco_1k5k.data | 6 + train.py | 70 +- utils/datasets.py | 15 +- utils/utils.py | 2 +- 6 files changed, 5050 insertions(+), 45 deletions(-) create mode 100644 data/5k.txt create mode 100644 data/coco_1k5k.data diff --git a/.gitignore b/.gitignore index 2aea6eef..ae46812c 100755 --- a/.gitignore +++ b/.gitignore @@ -29,7 +29,7 @@ data/* !data/coco_*.txt !data/trainvalno5k.shapes !data/5k.shapes - +!data/5k.txt pycocotools/* results*.txt diff --git a/data/5k.txt b/data/5k.txt new file mode 100644 index 00000000..ad8c5051 --- /dev/null +++ b/data/5k.txt @@ -0,0 +1,5000 @@ +../coco/images/val2014/COCO_val2014_000000000164.jpg +../coco/images/val2014/COCO_val2014_000000000192.jpg +../coco/images/val2014/COCO_val2014_000000000283.jpg +../coco/images/val2014/COCO_val2014_000000000397.jpg +../coco/images/val2014/COCO_val2014_000000000589.jpg +../coco/images/val2014/COCO_val2014_000000000599.jpg +../coco/images/val2014/COCO_val2014_000000000711.jpg +../coco/images/val2014/COCO_val2014_000000000757.jpg +../coco/images/val2014/COCO_val2014_000000000764.jpg +../coco/images/val2014/COCO_val2014_000000000872.jpg +../coco/images/val2014/COCO_val2014_000000001063.jpg +../coco/images/val2014/COCO_val2014_000000001554.jpg +../coco/images/val2014/COCO_val2014_000000001667.jpg +../coco/images/val2014/COCO_val2014_000000001700.jpg +../coco/images/val2014/COCO_val2014_000000001869.jpg +../coco/images/val2014/COCO_val2014_000000002124.jpg +../coco/images/val2014/COCO_val2014_000000002261.jpg +../coco/images/val2014/COCO_val2014_000000002621.jpg +../coco/images/val2014/COCO_val2014_000000002684.jpg +../coco/images/val2014/COCO_val2014_000000002764.jpg +../coco/images/val2014/COCO_val2014_000000002894.jpg +../coco/images/val2014/COCO_val2014_000000002972.jpg +../coco/images/val2014/COCO_val2014_000000003035.jpg +../coco/images/val2014/COCO_val2014_000000003084.jpg +../coco/images/val2014/COCO_val2014_000000003103.jpg +../coco/images/val2014/COCO_val2014_000000003109.jpg +../coco/images/val2014/COCO_val2014_000000003134.jpg +../coco/images/val2014/COCO_val2014_000000003209.jpg +../coco/images/val2014/COCO_val2014_000000003244.jpg +../coco/images/val2014/COCO_val2014_000000003326.jpg +../coco/images/val2014/COCO_val2014_000000003337.jpg +../coco/images/val2014/COCO_val2014_000000003661.jpg +../coco/images/val2014/COCO_val2014_000000003711.jpg +../coco/images/val2014/COCO_val2014_000000003779.jpg +../coco/images/val2014/COCO_val2014_000000003865.jpg +../coco/images/val2014/COCO_val2014_000000004079.jpg +../coco/images/val2014/COCO_val2014_000000004092.jpg +../coco/images/val2014/COCO_val2014_000000004283.jpg +../coco/images/val2014/COCO_val2014_000000004296.jpg +../coco/images/val2014/COCO_val2014_000000004392.jpg +../coco/images/val2014/COCO_val2014_000000004742.jpg +../coco/images/val2014/COCO_val2014_000000004754.jpg +../coco/images/val2014/COCO_val2014_000000004764.jpg +../coco/images/val2014/COCO_val2014_000000005038.jpg +../coco/images/val2014/COCO_val2014_000000005060.jpg +../coco/images/val2014/COCO_val2014_000000005124.jpg +../coco/images/val2014/COCO_val2014_000000005178.jpg +../coco/images/val2014/COCO_val2014_000000005205.jpg +../coco/images/val2014/COCO_val2014_000000005443.jpg +../coco/images/val2014/COCO_val2014_000000005652.jpg +../coco/images/val2014/COCO_val2014_000000005723.jpg +../coco/images/val2014/COCO_val2014_000000005804.jpg +../coco/images/val2014/COCO_val2014_000000006074.jpg +../coco/images/val2014/COCO_val2014_000000006091.jpg +../coco/images/val2014/COCO_val2014_000000006153.jpg +../coco/images/val2014/COCO_val2014_000000006213.jpg +../coco/images/val2014/COCO_val2014_000000006497.jpg +../coco/images/val2014/COCO_val2014_000000006789.jpg +../coco/images/val2014/COCO_val2014_000000006847.jpg +../coco/images/val2014/COCO_val2014_000000007241.jpg +../coco/images/val2014/COCO_val2014_000000007256.jpg +../coco/images/val2014/COCO_val2014_000000007281.jpg +../coco/images/val2014/COCO_val2014_000000007795.jpg +../coco/images/val2014/COCO_val2014_000000007867.jpg +../coco/images/val2014/COCO_val2014_000000007873.jpg +../coco/images/val2014/COCO_val2014_000000007899.jpg +../coco/images/val2014/COCO_val2014_000000008010.jpg +../coco/images/val2014/COCO_val2014_000000008179.jpg +../coco/images/val2014/COCO_val2014_000000008190.jpg +../coco/images/val2014/COCO_val2014_000000008204.jpg +../coco/images/val2014/COCO_val2014_000000008350.jpg +../coco/images/val2014/COCO_val2014_000000008493.jpg +../coco/images/val2014/COCO_val2014_000000008853.jpg +../coco/images/val2014/COCO_val2014_000000009105.jpg +../coco/images/val2014/COCO_val2014_000000009156.jpg +../coco/images/val2014/COCO_val2014_000000009217.jpg +../coco/images/val2014/COCO_val2014_000000009270.jpg +../coco/images/val2014/COCO_val2014_000000009286.jpg +../coco/images/val2014/COCO_val2014_000000009548.jpg +../coco/images/val2014/COCO_val2014_000000009553.jpg +../coco/images/val2014/COCO_val2014_000000009727.jpg +../coco/images/val2014/COCO_val2014_000000009908.jpg +../coco/images/val2014/COCO_val2014_000000010114.jpg +../coco/images/val2014/COCO_val2014_000000010249.jpg +../coco/images/val2014/COCO_val2014_000000010395.jpg +../coco/images/val2014/COCO_val2014_000000010400.jpg +../coco/images/val2014/COCO_val2014_000000010463.jpg +../coco/images/val2014/COCO_val2014_000000010613.jpg +../coco/images/val2014/COCO_val2014_000000010764.jpg +../coco/images/val2014/COCO_val2014_000000010779.jpg +../coco/images/val2014/COCO_val2014_000000010928.jpg +../coco/images/val2014/COCO_val2014_000000011099.jpg +../coco/images/val2014/COCO_val2014_000000011181.jpg +../coco/images/val2014/COCO_val2014_000000011184.jpg +../coco/images/val2014/COCO_val2014_000000011197.jpg +../coco/images/val2014/COCO_val2014_000000011320.jpg +../coco/images/val2014/COCO_val2014_000000011721.jpg +../coco/images/val2014/COCO_val2014_000000011813.jpg +../coco/images/val2014/COCO_val2014_000000012014.jpg +../coco/images/val2014/COCO_val2014_000000012047.jpg +../coco/images/val2014/COCO_val2014_000000012085.jpg +../coco/images/val2014/COCO_val2014_000000012115.jpg +../coco/images/val2014/COCO_val2014_000000012166.jpg +../coco/images/val2014/COCO_val2014_000000012230.jpg +../coco/images/val2014/COCO_val2014_000000012370.jpg +../coco/images/val2014/COCO_val2014_000000012375.jpg +../coco/images/val2014/COCO_val2014_000000012448.jpg +../coco/images/val2014/COCO_val2014_000000012543.jpg +../coco/images/val2014/COCO_val2014_000000012744.jpg +../coco/images/val2014/COCO_val2014_000000012897.jpg +../coco/images/val2014/COCO_val2014_000000012966.jpg +../coco/images/val2014/COCO_val2014_000000012993.jpg +../coco/images/val2014/COCO_val2014_000000013004.jpg +../coco/images/val2014/COCO_val2014_000000013333.jpg +../coco/images/val2014/COCO_val2014_000000013357.jpg +../coco/images/val2014/COCO_val2014_000000013774.jpg +../coco/images/val2014/COCO_val2014_000000014029.jpg +../coco/images/val2014/COCO_val2014_000000014056.jpg +../coco/images/val2014/COCO_val2014_000000014108.jpg +../coco/images/val2014/COCO_val2014_000000014135.jpg +../coco/images/val2014/COCO_val2014_000000014226.jpg +../coco/images/val2014/COCO_val2014_000000014306.jpg +../coco/images/val2014/COCO_val2014_000000014591.jpg +../coco/images/val2014/COCO_val2014_000000014629.jpg +../coco/images/val2014/COCO_val2014_000000014756.jpg +../coco/images/val2014/COCO_val2014_000000014874.jpg +../coco/images/val2014/COCO_val2014_000000014990.jpg +../coco/images/val2014/COCO_val2014_000000015386.jpg +../coco/images/val2014/COCO_val2014_000000015559.jpg +../coco/images/val2014/COCO_val2014_000000015599.jpg +../coco/images/val2014/COCO_val2014_000000015709.jpg +../coco/images/val2014/COCO_val2014_000000015735.jpg +../coco/images/val2014/COCO_val2014_000000015751.jpg +../coco/images/val2014/COCO_val2014_000000015883.jpg +../coco/images/val2014/COCO_val2014_000000015953.jpg +../coco/images/val2014/COCO_val2014_000000015956.jpg +../coco/images/val2014/COCO_val2014_000000015968.jpg +../coco/images/val2014/COCO_val2014_000000015987.jpg +../coco/images/val2014/COCO_val2014_000000016030.jpg +../coco/images/val2014/COCO_val2014_000000016076.jpg +../coco/images/val2014/COCO_val2014_000000016228.jpg +../coco/images/val2014/COCO_val2014_000000016241.jpg +../coco/images/val2014/COCO_val2014_000000016257.jpg +../coco/images/val2014/COCO_val2014_000000016327.jpg +../coco/images/val2014/COCO_val2014_000000016410.jpg +../coco/images/val2014/COCO_val2014_000000016574.jpg +../coco/images/val2014/COCO_val2014_000000016716.jpg +../coco/images/val2014/COCO_val2014_000000016928.jpg +../coco/images/val2014/COCO_val2014_000000016995.jpg +../coco/images/val2014/COCO_val2014_000000017235.jpg +../coco/images/val2014/COCO_val2014_000000017379.jpg +../coco/images/val2014/COCO_val2014_000000017667.jpg +../coco/images/val2014/COCO_val2014_000000017755.jpg +../coco/images/val2014/COCO_val2014_000000018295.jpg +../coco/images/val2014/COCO_val2014_000000018358.jpg +../coco/images/val2014/COCO_val2014_000000018476.jpg +../coco/images/val2014/COCO_val2014_000000018750.jpg +../coco/images/val2014/COCO_val2014_000000018783.jpg +../coco/images/val2014/COCO_val2014_000000019025.jpg +../coco/images/val2014/COCO_val2014_000000019042.jpg +../coco/images/val2014/COCO_val2014_000000019129.jpg +../coco/images/val2014/COCO_val2014_000000019176.jpg +../coco/images/val2014/COCO_val2014_000000019491.jpg +../coco/images/val2014/COCO_val2014_000000019890.jpg +../coco/images/val2014/COCO_val2014_000000019923.jpg +../coco/images/val2014/COCO_val2014_000000020001.jpg +../coco/images/val2014/COCO_val2014_000000020038.jpg +../coco/images/val2014/COCO_val2014_000000020175.jpg +../coco/images/val2014/COCO_val2014_000000020268.jpg +../coco/images/val2014/COCO_val2014_000000020273.jpg +../coco/images/val2014/COCO_val2014_000000020349.jpg +../coco/images/val2014/COCO_val2014_000000020553.jpg +../coco/images/val2014/COCO_val2014_000000020788.jpg +../coco/images/val2014/COCO_val2014_000000020912.jpg +../coco/images/val2014/COCO_val2014_000000020947.jpg +../coco/images/val2014/COCO_val2014_000000020972.jpg +../coco/images/val2014/COCO_val2014_000000021161.jpg +../coco/images/val2014/COCO_val2014_000000021483.jpg +../coco/images/val2014/COCO_val2014_000000021588.jpg +../coco/images/val2014/COCO_val2014_000000021639.jpg +../coco/images/val2014/COCO_val2014_000000021644.jpg +../coco/images/val2014/COCO_val2014_000000021645.jpg +../coco/images/val2014/COCO_val2014_000000021671.jpg +../coco/images/val2014/COCO_val2014_000000021746.jpg +../coco/images/val2014/COCO_val2014_000000021839.jpg +../coco/images/val2014/COCO_val2014_000000022002.jpg +../coco/images/val2014/COCO_val2014_000000022129.jpg +../coco/images/val2014/COCO_val2014_000000022191.jpg +../coco/images/val2014/COCO_val2014_000000022215.jpg +../coco/images/val2014/COCO_val2014_000000022341.jpg +../coco/images/val2014/COCO_val2014_000000022492.jpg +../coco/images/val2014/COCO_val2014_000000022563.jpg +../coco/images/val2014/COCO_val2014_000000022660.jpg +../coco/images/val2014/COCO_val2014_000000022705.jpg +../coco/images/val2014/COCO_val2014_000000023017.jpg +../coco/images/val2014/COCO_val2014_000000023309.jpg +../coco/images/val2014/COCO_val2014_000000023411.jpg +../coco/images/val2014/COCO_val2014_000000023754.jpg +../coco/images/val2014/COCO_val2014_000000023802.jpg +../coco/images/val2014/COCO_val2014_000000023981.jpg +../coco/images/val2014/COCO_val2014_000000023995.jpg +../coco/images/val2014/COCO_val2014_000000024112.jpg +../coco/images/val2014/COCO_val2014_000000024247.jpg +../coco/images/val2014/COCO_val2014_000000024396.jpg +../coco/images/val2014/COCO_val2014_000000024776.jpg +../coco/images/val2014/COCO_val2014_000000024924.jpg +../coco/images/val2014/COCO_val2014_000000025096.jpg +../coco/images/val2014/COCO_val2014_000000025191.jpg +../coco/images/val2014/COCO_val2014_000000025252.jpg +../coco/images/val2014/COCO_val2014_000000025293.jpg +../coco/images/val2014/COCO_val2014_000000025360.jpg +../coco/images/val2014/COCO_val2014_000000025595.jpg +../coco/images/val2014/COCO_val2014_000000025685.jpg +../coco/images/val2014/COCO_val2014_000000025807.jpg +../coco/images/val2014/COCO_val2014_000000025864.jpg +../coco/images/val2014/COCO_val2014_000000025989.jpg +../coco/images/val2014/COCO_val2014_000000026026.jpg +../coco/images/val2014/COCO_val2014_000000026430.jpg +../coco/images/val2014/COCO_val2014_000000026432.jpg +../coco/images/val2014/COCO_val2014_000000026534.jpg +../coco/images/val2014/COCO_val2014_000000026560.jpg +../coco/images/val2014/COCO_val2014_000000026564.jpg +../coco/images/val2014/COCO_val2014_000000026671.jpg +../coco/images/val2014/COCO_val2014_000000026690.jpg +../coco/images/val2014/COCO_val2014_000000026734.jpg +../coco/images/val2014/COCO_val2014_000000026799.jpg +../coco/images/val2014/COCO_val2014_000000026907.jpg +../coco/images/val2014/COCO_val2014_000000026908.jpg +../coco/images/val2014/COCO_val2014_000000026946.jpg +../coco/images/val2014/COCO_val2014_000000027530.jpg +../coco/images/val2014/COCO_val2014_000000027610.jpg +../coco/images/val2014/COCO_val2014_000000027620.jpg +../coco/images/val2014/COCO_val2014_000000027787.jpg +../coco/images/val2014/COCO_val2014_000000027789.jpg +../coco/images/val2014/COCO_val2014_000000027874.jpg +../coco/images/val2014/COCO_val2014_000000027946.jpg +../coco/images/val2014/COCO_val2014_000000027975.jpg +../coco/images/val2014/COCO_val2014_000000028022.jpg +../coco/images/val2014/COCO_val2014_000000028039.jpg +../coco/images/val2014/COCO_val2014_000000028273.jpg +../coco/images/val2014/COCO_val2014_000000028540.jpg +../coco/images/val2014/COCO_val2014_000000028702.jpg +../coco/images/val2014/COCO_val2014_000000028820.jpg +../coco/images/val2014/COCO_val2014_000000028874.jpg +../coco/images/val2014/COCO_val2014_000000029019.jpg +../coco/images/val2014/COCO_val2014_000000029030.jpg +../coco/images/val2014/COCO_val2014_000000029170.jpg +../coco/images/val2014/COCO_val2014_000000029308.jpg +../coco/images/val2014/COCO_val2014_000000029393.jpg +../coco/images/val2014/COCO_val2014_000000029524.jpg +../coco/images/val2014/COCO_val2014_000000029577.jpg +../coco/images/val2014/COCO_val2014_000000029648.jpg +../coco/images/val2014/COCO_val2014_000000029656.jpg +../coco/images/val2014/COCO_val2014_000000029697.jpg +../coco/images/val2014/COCO_val2014_000000029709.jpg +../coco/images/val2014/COCO_val2014_000000029719.jpg +../coco/images/val2014/COCO_val2014_000000030034.jpg +../coco/images/val2014/COCO_val2014_000000030062.jpg +../coco/images/val2014/COCO_val2014_000000030383.jpg +../coco/images/val2014/COCO_val2014_000000030470.jpg +../coco/images/val2014/COCO_val2014_000000030548.jpg +../coco/images/val2014/COCO_val2014_000000030668.jpg +../coco/images/val2014/COCO_val2014_000000030793.jpg +../coco/images/val2014/COCO_val2014_000000030843.jpg +../coco/images/val2014/COCO_val2014_000000030998.jpg +../coco/images/val2014/COCO_val2014_000000031151.jpg +../coco/images/val2014/COCO_val2014_000000031164.jpg +../coco/images/val2014/COCO_val2014_000000031176.jpg +../coco/images/val2014/COCO_val2014_000000031247.jpg +../coco/images/val2014/COCO_val2014_000000031392.jpg +../coco/images/val2014/COCO_val2014_000000031521.jpg +../coco/images/val2014/COCO_val2014_000000031542.jpg +../coco/images/val2014/COCO_val2014_000000031817.jpg +../coco/images/val2014/COCO_val2014_000000032081.jpg +../coco/images/val2014/COCO_val2014_000000032193.jpg +../coco/images/val2014/COCO_val2014_000000032331.jpg +../coco/images/val2014/COCO_val2014_000000032464.jpg +../coco/images/val2014/COCO_val2014_000000032510.jpg +../coco/images/val2014/COCO_val2014_000000032524.jpg +../coco/images/val2014/COCO_val2014_000000032625.jpg +../coco/images/val2014/COCO_val2014_000000032677.jpg +../coco/images/val2014/COCO_val2014_000000032715.jpg +../coco/images/val2014/COCO_val2014_000000032947.jpg +../coco/images/val2014/COCO_val2014_000000032964.jpg +../coco/images/val2014/COCO_val2014_000000033006.jpg +../coco/images/val2014/COCO_val2014_000000033055.jpg +../coco/images/val2014/COCO_val2014_000000033158.jpg +../coco/images/val2014/COCO_val2014_000000033243.jpg +../coco/images/val2014/COCO_val2014_000000033345.jpg +../coco/images/val2014/COCO_val2014_000000033499.jpg +../coco/images/val2014/COCO_val2014_000000033561.jpg +../coco/images/val2014/COCO_val2014_000000033830.jpg +../coco/images/val2014/COCO_val2014_000000033835.jpg +../coco/images/val2014/COCO_val2014_000000033924.jpg +../coco/images/val2014/COCO_val2014_000000034056.jpg +../coco/images/val2014/COCO_val2014_000000034114.jpg +../coco/images/val2014/COCO_val2014_000000034137.jpg +../coco/images/val2014/COCO_val2014_000000034183.jpg +../coco/images/val2014/COCO_val2014_000000034193.jpg +../coco/images/val2014/COCO_val2014_000000034299.jpg +../coco/images/val2014/COCO_val2014_000000034452.jpg +../coco/images/val2014/COCO_val2014_000000034689.jpg +../coco/images/val2014/COCO_val2014_000000034877.jpg +../coco/images/val2014/COCO_val2014_000000034892.jpg +../coco/images/val2014/COCO_val2014_000000034930.jpg +../coco/images/val2014/COCO_val2014_000000035012.jpg +../coco/images/val2014/COCO_val2014_000000035222.jpg +../coco/images/val2014/COCO_val2014_000000035326.jpg +../coco/images/val2014/COCO_val2014_000000035368.jpg +../coco/images/val2014/COCO_val2014_000000035474.jpg +../coco/images/val2014/COCO_val2014_000000035498.jpg +../coco/images/val2014/COCO_val2014_000000035738.jpg +../coco/images/val2014/COCO_val2014_000000035826.jpg +../coco/images/val2014/COCO_val2014_000000035940.jpg +../coco/images/val2014/COCO_val2014_000000035966.jpg +../coco/images/val2014/COCO_val2014_000000036049.jpg +../coco/images/val2014/COCO_val2014_000000036252.jpg +../coco/images/val2014/COCO_val2014_000000036508.jpg +../coco/images/val2014/COCO_val2014_000000036522.jpg +../coco/images/val2014/COCO_val2014_000000036539.jpg +../coco/images/val2014/COCO_val2014_000000036563.jpg +../coco/images/val2014/COCO_val2014_000000037038.jpg +../coco/images/val2014/COCO_val2014_000000037629.jpg +../coco/images/val2014/COCO_val2014_000000037675.jpg +../coco/images/val2014/COCO_val2014_000000037846.jpg +../coco/images/val2014/COCO_val2014_000000037865.jpg +../coco/images/val2014/COCO_val2014_000000037907.jpg +../coco/images/val2014/COCO_val2014_000000037988.jpg +../coco/images/val2014/COCO_val2014_000000038031.jpg +../coco/images/val2014/COCO_val2014_000000038190.jpg +../coco/images/val2014/COCO_val2014_000000038252.jpg +../coco/images/val2014/COCO_val2014_000000038296.jpg +../coco/images/val2014/COCO_val2014_000000038465.jpg +../coco/images/val2014/COCO_val2014_000000038488.jpg +../coco/images/val2014/COCO_val2014_000000038531.jpg +../coco/images/val2014/COCO_val2014_000000038539.jpg +../coco/images/val2014/COCO_val2014_000000038645.jpg +../coco/images/val2014/COCO_val2014_000000038685.jpg +../coco/images/val2014/COCO_val2014_000000038825.jpg +../coco/images/val2014/COCO_val2014_000000039322.jpg +../coco/images/val2014/COCO_val2014_000000039480.jpg +../coco/images/val2014/COCO_val2014_000000039697.jpg +../coco/images/val2014/COCO_val2014_000000039731.jpg +../coco/images/val2014/COCO_val2014_000000039743.jpg +../coco/images/val2014/COCO_val2014_000000039785.jpg +../coco/images/val2014/COCO_val2014_000000039961.jpg +../coco/images/val2014/COCO_val2014_000000040426.jpg +../coco/images/val2014/COCO_val2014_000000040485.jpg +../coco/images/val2014/COCO_val2014_000000040681.jpg +../coco/images/val2014/COCO_val2014_000000040686.jpg +../coco/images/val2014/COCO_val2014_000000040886.jpg +../coco/images/val2014/COCO_val2014_000000041119.jpg +../coco/images/val2014/COCO_val2014_000000041147.jpg +../coco/images/val2014/COCO_val2014_000000041322.jpg +../coco/images/val2014/COCO_val2014_000000041373.jpg +../coco/images/val2014/COCO_val2014_000000041550.jpg +../coco/images/val2014/COCO_val2014_000000041635.jpg +../coco/images/val2014/COCO_val2014_000000041867.jpg +../coco/images/val2014/COCO_val2014_000000041872.jpg +../coco/images/val2014/COCO_val2014_000000041924.jpg +../coco/images/val2014/COCO_val2014_000000042137.jpg +../coco/images/val2014/COCO_val2014_000000042279.jpg +../coco/images/val2014/COCO_val2014_000000042492.jpg +../coco/images/val2014/COCO_val2014_000000042576.jpg +../coco/images/val2014/COCO_val2014_000000042661.jpg +../coco/images/val2014/COCO_val2014_000000042743.jpg +../coco/images/val2014/COCO_val2014_000000042805.jpg +../coco/images/val2014/COCO_val2014_000000042837.jpg +../coco/images/val2014/COCO_val2014_000000043165.jpg +../coco/images/val2014/COCO_val2014_000000043218.jpg +../coco/images/val2014/COCO_val2014_000000043261.jpg +../coco/images/val2014/COCO_val2014_000000043404.jpg +../coco/images/val2014/COCO_val2014_000000043542.jpg +../coco/images/val2014/COCO_val2014_000000043605.jpg +../coco/images/val2014/COCO_val2014_000000043614.jpg +../coco/images/val2014/COCO_val2014_000000043673.jpg +../coco/images/val2014/COCO_val2014_000000043816.jpg +../coco/images/val2014/COCO_val2014_000000043850.jpg +../coco/images/val2014/COCO_val2014_000000044220.jpg +../coco/images/val2014/COCO_val2014_000000044269.jpg +../coco/images/val2014/COCO_val2014_000000044309.jpg +../coco/images/val2014/COCO_val2014_000000044478.jpg +../coco/images/val2014/COCO_val2014_000000044536.jpg +../coco/images/val2014/COCO_val2014_000000044559.jpg +../coco/images/val2014/COCO_val2014_000000044575.jpg +../coco/images/val2014/COCO_val2014_000000044612.jpg +../coco/images/val2014/COCO_val2014_000000044677.jpg +../coco/images/val2014/COCO_val2014_000000044699.jpg +../coco/images/val2014/COCO_val2014_000000044823.jpg +../coco/images/val2014/COCO_val2014_000000044989.jpg +../coco/images/val2014/COCO_val2014_000000045094.jpg +../coco/images/val2014/COCO_val2014_000000045176.jpg +../coco/images/val2014/COCO_val2014_000000045197.jpg +../coco/images/val2014/COCO_val2014_000000045367.jpg +../coco/images/val2014/COCO_val2014_000000045392.jpg +../coco/images/val2014/COCO_val2014_000000045433.jpg +../coco/images/val2014/COCO_val2014_000000045463.jpg +../coco/images/val2014/COCO_val2014_000000045550.jpg +../coco/images/val2014/COCO_val2014_000000045574.jpg +../coco/images/val2014/COCO_val2014_000000045627.jpg +../coco/images/val2014/COCO_val2014_000000045685.jpg +../coco/images/val2014/COCO_val2014_000000045728.jpg +../coco/images/val2014/COCO_val2014_000000046252.jpg +../coco/images/val2014/COCO_val2014_000000046269.jpg +../coco/images/val2014/COCO_val2014_000000046329.jpg +../coco/images/val2014/COCO_val2014_000000046805.jpg +../coco/images/val2014/COCO_val2014_000000046869.jpg +../coco/images/val2014/COCO_val2014_000000046919.jpg +../coco/images/val2014/COCO_val2014_000000046924.jpg +../coco/images/val2014/COCO_val2014_000000047008.jpg +../coco/images/val2014/COCO_val2014_000000047131.jpg +../coco/images/val2014/COCO_val2014_000000047226.jpg +../coco/images/val2014/COCO_val2014_000000047263.jpg +../coco/images/val2014/COCO_val2014_000000047395.jpg +../coco/images/val2014/COCO_val2014_000000047552.jpg +../coco/images/val2014/COCO_val2014_000000047570.jpg +../coco/images/val2014/COCO_val2014_000000047720.jpg +../coco/images/val2014/COCO_val2014_000000047775.jpg +../coco/images/val2014/COCO_val2014_000000047886.jpg +../coco/images/val2014/COCO_val2014_000000048504.jpg +../coco/images/val2014/COCO_val2014_000000048564.jpg +../coco/images/val2014/COCO_val2014_000000048668.jpg +../coco/images/val2014/COCO_val2014_000000048731.jpg +../coco/images/val2014/COCO_val2014_000000048739.jpg +../coco/images/val2014/COCO_val2014_000000048791.jpg +../coco/images/val2014/COCO_val2014_000000048840.jpg +../coco/images/val2014/COCO_val2014_000000048905.jpg +../coco/images/val2014/COCO_val2014_000000048910.jpg +../coco/images/val2014/COCO_val2014_000000048924.jpg +../coco/images/val2014/COCO_val2014_000000048956.jpg +../coco/images/val2014/COCO_val2014_000000049075.jpg +../coco/images/val2014/COCO_val2014_000000049236.jpg +../coco/images/val2014/COCO_val2014_000000049676.jpg +../coco/images/val2014/COCO_val2014_000000049881.jpg +../coco/images/val2014/COCO_val2014_000000049985.jpg +../coco/images/val2014/COCO_val2014_000000050100.jpg +../coco/images/val2014/COCO_val2014_000000050145.jpg +../coco/images/val2014/COCO_val2014_000000050177.jpg +../coco/images/val2014/COCO_val2014_000000050324.jpg +../coco/images/val2014/COCO_val2014_000000050331.jpg +../coco/images/val2014/COCO_val2014_000000050481.jpg +../coco/images/val2014/COCO_val2014_000000050485.jpg +../coco/images/val2014/COCO_val2014_000000050493.jpg +../coco/images/val2014/COCO_val2014_000000050746.jpg +../coco/images/val2014/COCO_val2014_000000050844.jpg +../coco/images/val2014/COCO_val2014_000000050896.jpg +../coco/images/val2014/COCO_val2014_000000051249.jpg +../coco/images/val2014/COCO_val2014_000000051250.jpg +../coco/images/val2014/COCO_val2014_000000051289.jpg +../coco/images/val2014/COCO_val2014_000000051314.jpg +../coco/images/val2014/COCO_val2014_000000051339.jpg +../coco/images/val2014/COCO_val2014_000000051461.jpg +../coco/images/val2014/COCO_val2014_000000051476.jpg +../coco/images/val2014/COCO_val2014_000000052005.jpg +../coco/images/val2014/COCO_val2014_000000052020.jpg +../coco/images/val2014/COCO_val2014_000000052290.jpg +../coco/images/val2014/COCO_val2014_000000052314.jpg +../coco/images/val2014/COCO_val2014_000000052425.jpg +../coco/images/val2014/COCO_val2014_000000052575.jpg +../coco/images/val2014/COCO_val2014_000000052871.jpg +../coco/images/val2014/COCO_val2014_000000052982.jpg +../coco/images/val2014/COCO_val2014_000000053139.jpg +../coco/images/val2014/COCO_val2014_000000053183.jpg +../coco/images/val2014/COCO_val2014_000000053263.jpg +../coco/images/val2014/COCO_val2014_000000053491.jpg +../coco/images/val2014/COCO_val2014_000000053503.jpg +../coco/images/val2014/COCO_val2014_000000053580.jpg +../coco/images/val2014/COCO_val2014_000000053616.jpg +../coco/images/val2014/COCO_val2014_000000053907.jpg +../coco/images/val2014/COCO_val2014_000000053949.jpg +../coco/images/val2014/COCO_val2014_000000054301.jpg +../coco/images/val2014/COCO_val2014_000000054334.jpg +../coco/images/val2014/COCO_val2014_000000054490.jpg +../coco/images/val2014/COCO_val2014_000000054527.jpg +../coco/images/val2014/COCO_val2014_000000054533.jpg +../coco/images/val2014/COCO_val2014_000000054603.jpg +../coco/images/val2014/COCO_val2014_000000054643.jpg +../coco/images/val2014/COCO_val2014_000000054679.jpg +../coco/images/val2014/COCO_val2014_000000054723.jpg +../coco/images/val2014/COCO_val2014_000000054959.jpg +../coco/images/val2014/COCO_val2014_000000055167.jpg +../coco/images/val2014/COCO_val2014_000000056137.jpg +../coco/images/val2014/COCO_val2014_000000056326.jpg +../coco/images/val2014/COCO_val2014_000000056541.jpg +../coco/images/val2014/COCO_val2014_000000056562.jpg +../coco/images/val2014/COCO_val2014_000000056624.jpg +../coco/images/val2014/COCO_val2014_000000056633.jpg +../coco/images/val2014/COCO_val2014_000000056724.jpg +../coco/images/val2014/COCO_val2014_000000056739.jpg +../coco/images/val2014/COCO_val2014_000000057027.jpg +../coco/images/val2014/COCO_val2014_000000057091.jpg +../coco/images/val2014/COCO_val2014_000000057095.jpg +../coco/images/val2014/COCO_val2014_000000057100.jpg +../coco/images/val2014/COCO_val2014_000000057149.jpg +../coco/images/val2014/COCO_val2014_000000057238.jpg +../coco/images/val2014/COCO_val2014_000000057359.jpg +../coco/images/val2014/COCO_val2014_000000057454.jpg +../coco/images/val2014/COCO_val2014_000000058001.jpg +../coco/images/val2014/COCO_val2014_000000058157.jpg +../coco/images/val2014/COCO_val2014_000000058223.jpg +../coco/images/val2014/COCO_val2014_000000058232.jpg +../coco/images/val2014/COCO_val2014_000000058344.jpg +../coco/images/val2014/COCO_val2014_000000058522.jpg +../coco/images/val2014/COCO_val2014_000000058636.jpg +../coco/images/val2014/COCO_val2014_000000058800.jpg +../coco/images/val2014/COCO_val2014_000000058949.jpg +../coco/images/val2014/COCO_val2014_000000059009.jpg +../coco/images/val2014/COCO_val2014_000000059202.jpg +../coco/images/val2014/COCO_val2014_000000059393.jpg +../coco/images/val2014/COCO_val2014_000000059652.jpg +../coco/images/val2014/COCO_val2014_000000060010.jpg +../coco/images/val2014/COCO_val2014_000000060049.jpg +../coco/images/val2014/COCO_val2014_000000060126.jpg +../coco/images/val2014/COCO_val2014_000000060128.jpg +../coco/images/val2014/COCO_val2014_000000060448.jpg +../coco/images/val2014/COCO_val2014_000000060548.jpg +../coco/images/val2014/COCO_val2014_000000060677.jpg +../coco/images/val2014/COCO_val2014_000000060760.jpg +../coco/images/val2014/COCO_val2014_000000060823.jpg +../coco/images/val2014/COCO_val2014_000000060859.jpg +../coco/images/val2014/COCO_val2014_000000060899.jpg +../coco/images/val2014/COCO_val2014_000000061171.jpg +../coco/images/val2014/COCO_val2014_000000061503.jpg +../coco/images/val2014/COCO_val2014_000000061520.jpg +../coco/images/val2014/COCO_val2014_000000061531.jpg +../coco/images/val2014/COCO_val2014_000000061564.jpg +../coco/images/val2014/COCO_val2014_000000061658.jpg +../coco/images/val2014/COCO_val2014_000000061693.jpg +../coco/images/val2014/COCO_val2014_000000061717.jpg +../coco/images/val2014/COCO_val2014_000000061836.jpg +../coco/images/val2014/COCO_val2014_000000062041.jpg +../coco/images/val2014/COCO_val2014_000000062060.jpg +../coco/images/val2014/COCO_val2014_000000062198.jpg +../coco/images/val2014/COCO_val2014_000000062200.jpg +../coco/images/val2014/COCO_val2014_000000062220.jpg +../coco/images/val2014/COCO_val2014_000000062623.jpg +../coco/images/val2014/COCO_val2014_000000062726.jpg +../coco/images/val2014/COCO_val2014_000000062875.jpg +../coco/images/val2014/COCO_val2014_000000063047.jpg +../coco/images/val2014/COCO_val2014_000000063114.jpg +../coco/images/val2014/COCO_val2014_000000063488.jpg +../coco/images/val2014/COCO_val2014_000000063671.jpg +../coco/images/val2014/COCO_val2014_000000063715.jpg +../coco/images/val2014/COCO_val2014_000000063804.jpg +../coco/images/val2014/COCO_val2014_000000063882.jpg +../coco/images/val2014/COCO_val2014_000000063939.jpg +../coco/images/val2014/COCO_val2014_000000063965.jpg +../coco/images/val2014/COCO_val2014_000000064155.jpg +../coco/images/val2014/COCO_val2014_000000064189.jpg +../coco/images/val2014/COCO_val2014_000000064196.jpg +../coco/images/val2014/COCO_val2014_000000064495.jpg +../coco/images/val2014/COCO_val2014_000000064610.jpg +../coco/images/val2014/COCO_val2014_000000064693.jpg +../coco/images/val2014/COCO_val2014_000000064746.jpg +../coco/images/val2014/COCO_val2014_000000064760.jpg +../coco/images/val2014/COCO_val2014_000000064796.jpg +../coco/images/val2014/COCO_val2014_000000064865.jpg +../coco/images/val2014/COCO_val2014_000000064915.jpg +../coco/images/val2014/COCO_val2014_000000065074.jpg +../coco/images/val2014/COCO_val2014_000000065124.jpg +../coco/images/val2014/COCO_val2014_000000065258.jpg +../coco/images/val2014/COCO_val2014_000000065267.jpg +../coco/images/val2014/COCO_val2014_000000065430.jpg +../coco/images/val2014/COCO_val2014_000000065465.jpg +../coco/images/val2014/COCO_val2014_000000065942.jpg +../coco/images/val2014/COCO_val2014_000000066001.jpg +../coco/images/val2014/COCO_val2014_000000066064.jpg +../coco/images/val2014/COCO_val2014_000000066072.jpg +../coco/images/val2014/COCO_val2014_000000066239.jpg +../coco/images/val2014/COCO_val2014_000000066243.jpg +../coco/images/val2014/COCO_val2014_000000066355.jpg +../coco/images/val2014/COCO_val2014_000000066412.jpg +../coco/images/val2014/COCO_val2014_000000066423.jpg +../coco/images/val2014/COCO_val2014_000000066427.jpg +../coco/images/val2014/COCO_val2014_000000066502.jpg +../coco/images/val2014/COCO_val2014_000000066519.jpg +../coco/images/val2014/COCO_val2014_000000066561.jpg +../coco/images/val2014/COCO_val2014_000000066700.jpg +../coco/images/val2014/COCO_val2014_000000066717.jpg +../coco/images/val2014/COCO_val2014_000000066879.jpg +../coco/images/val2014/COCO_val2014_000000067178.jpg +../coco/images/val2014/COCO_val2014_000000067207.jpg +../coco/images/val2014/COCO_val2014_000000067218.jpg +../coco/images/val2014/COCO_val2014_000000067412.jpg +../coco/images/val2014/COCO_val2014_000000067532.jpg +../coco/images/val2014/COCO_val2014_000000067590.jpg +../coco/images/val2014/COCO_val2014_000000067660.jpg +../coco/images/val2014/COCO_val2014_000000067686.jpg +../coco/images/val2014/COCO_val2014_000000067704.jpg +../coco/images/val2014/COCO_val2014_000000067776.jpg +../coco/images/val2014/COCO_val2014_000000067948.jpg +../coco/images/val2014/COCO_val2014_000000067953.jpg +../coco/images/val2014/COCO_val2014_000000068059.jpg +../coco/images/val2014/COCO_val2014_000000068204.jpg +../coco/images/val2014/COCO_val2014_000000068205.jpg +../coco/images/val2014/COCO_val2014_000000068409.jpg +../coco/images/val2014/COCO_val2014_000000068435.jpg +../coco/images/val2014/COCO_val2014_000000068520.jpg +../coco/images/val2014/COCO_val2014_000000068546.jpg +../coco/images/val2014/COCO_val2014_000000068674.jpg +../coco/images/val2014/COCO_val2014_000000068745.jpg +../coco/images/val2014/COCO_val2014_000000069009.jpg +../coco/images/val2014/COCO_val2014_000000069077.jpg +../coco/images/val2014/COCO_val2014_000000069196.jpg +../coco/images/val2014/COCO_val2014_000000069356.jpg +../coco/images/val2014/COCO_val2014_000000069568.jpg +../coco/images/val2014/COCO_val2014_000000069577.jpg +../coco/images/val2014/COCO_val2014_000000069698.jpg +../coco/images/val2014/COCO_val2014_000000070493.jpg +../coco/images/val2014/COCO_val2014_000000070896.jpg +../coco/images/val2014/COCO_val2014_000000071023.jpg +../coco/images/val2014/COCO_val2014_000000071123.jpg +../coco/images/val2014/COCO_val2014_000000071241.jpg +../coco/images/val2014/COCO_val2014_000000071301.jpg +../coco/images/val2014/COCO_val2014_000000071345.jpg +../coco/images/val2014/COCO_val2014_000000071451.jpg +../coco/images/val2014/COCO_val2014_000000071673.jpg +../coco/images/val2014/COCO_val2014_000000071826.jpg +../coco/images/val2014/COCO_val2014_000000071986.jpg +../coco/images/val2014/COCO_val2014_000000072004.jpg +../coco/images/val2014/COCO_val2014_000000072020.jpg +../coco/images/val2014/COCO_val2014_000000072052.jpg +../coco/images/val2014/COCO_val2014_000000072281.jpg +../coco/images/val2014/COCO_val2014_000000072368.jpg +../coco/images/val2014/COCO_val2014_000000072737.jpg +../coco/images/val2014/COCO_val2014_000000072797.jpg +../coco/images/val2014/COCO_val2014_000000072860.jpg +../coco/images/val2014/COCO_val2014_000000073009.jpg +../coco/images/val2014/COCO_val2014_000000073039.jpg +../coco/images/val2014/COCO_val2014_000000073239.jpg +../coco/images/val2014/COCO_val2014_000000073467.jpg +../coco/images/val2014/COCO_val2014_000000073491.jpg +../coco/images/val2014/COCO_val2014_000000073588.jpg +../coco/images/val2014/COCO_val2014_000000073729.jpg +../coco/images/val2014/COCO_val2014_000000073973.jpg +../coco/images/val2014/COCO_val2014_000000074037.jpg +../coco/images/val2014/COCO_val2014_000000074137.jpg +../coco/images/val2014/COCO_val2014_000000074268.jpg +../coco/images/val2014/COCO_val2014_000000074434.jpg +../coco/images/val2014/COCO_val2014_000000074789.jpg +../coco/images/val2014/COCO_val2014_000000074963.jpg +../coco/images/val2014/COCO_val2014_000000075033.jpg +../coco/images/val2014/COCO_val2014_000000075372.jpg +../coco/images/val2014/COCO_val2014_000000075527.jpg +../coco/images/val2014/COCO_val2014_000000075646.jpg +../coco/images/val2014/COCO_val2014_000000075713.jpg +../coco/images/val2014/COCO_val2014_000000075775.jpg +../coco/images/val2014/COCO_val2014_000000075786.jpg +../coco/images/val2014/COCO_val2014_000000075886.jpg +../coco/images/val2014/COCO_val2014_000000076087.jpg +../coco/images/val2014/COCO_val2014_000000076257.jpg +../coco/images/val2014/COCO_val2014_000000076521.jpg +../coco/images/val2014/COCO_val2014_000000076572.jpg +../coco/images/val2014/COCO_val2014_000000076844.jpg +../coco/images/val2014/COCO_val2014_000000077178.jpg +../coco/images/val2014/COCO_val2014_000000077181.jpg +../coco/images/val2014/COCO_val2014_000000077184.jpg +../coco/images/val2014/COCO_val2014_000000077396.jpg +../coco/images/val2014/COCO_val2014_000000077400.jpg +../coco/images/val2014/COCO_val2014_000000077415.jpg +../coco/images/val2014/COCO_val2014_000000078565.jpg +../coco/images/val2014/COCO_val2014_000000078701.jpg +../coco/images/val2014/COCO_val2014_000000078843.jpg +../coco/images/val2014/COCO_val2014_000000078929.jpg +../coco/images/val2014/COCO_val2014_000000079084.jpg +../coco/images/val2014/COCO_val2014_000000079188.jpg +../coco/images/val2014/COCO_val2014_000000079544.jpg +../coco/images/val2014/COCO_val2014_000000079566.jpg +../coco/images/val2014/COCO_val2014_000000079588.jpg +../coco/images/val2014/COCO_val2014_000000079689.jpg +../coco/images/val2014/COCO_val2014_000000080104.jpg +../coco/images/val2014/COCO_val2014_000000080172.jpg +../coco/images/val2014/COCO_val2014_000000080219.jpg +../coco/images/val2014/COCO_val2014_000000080300.jpg +../coco/images/val2014/COCO_val2014_000000080395.jpg +../coco/images/val2014/COCO_val2014_000000080522.jpg +../coco/images/val2014/COCO_val2014_000000080714.jpg +../coco/images/val2014/COCO_val2014_000000080737.jpg +../coco/images/val2014/COCO_val2014_000000080747.jpg +../coco/images/val2014/COCO_val2014_000000081000.jpg +../coco/images/val2014/COCO_val2014_000000081081.jpg +../coco/images/val2014/COCO_val2014_000000081100.jpg +../coco/images/val2014/COCO_val2014_000000081287.jpg +../coco/images/val2014/COCO_val2014_000000081394.jpg +../coco/images/val2014/COCO_val2014_000000081552.jpg +../coco/images/val2014/COCO_val2014_000000082157.jpg +../coco/images/val2014/COCO_val2014_000000082252.jpg +../coco/images/val2014/COCO_val2014_000000082259.jpg +../coco/images/val2014/COCO_val2014_000000082367.jpg +../coco/images/val2014/COCO_val2014_000000082431.jpg +../coco/images/val2014/COCO_val2014_000000082456.jpg +../coco/images/val2014/COCO_val2014_000000082794.jpg +../coco/images/val2014/COCO_val2014_000000082807.jpg +../coco/images/val2014/COCO_val2014_000000082846.jpg +../coco/images/val2014/COCO_val2014_000000082847.jpg +../coco/images/val2014/COCO_val2014_000000082889.jpg +../coco/images/val2014/COCO_val2014_000000082981.jpg +../coco/images/val2014/COCO_val2014_000000083036.jpg +../coco/images/val2014/COCO_val2014_000000083065.jpg +../coco/images/val2014/COCO_val2014_000000083142.jpg +../coco/images/val2014/COCO_val2014_000000083275.jpg +../coco/images/val2014/COCO_val2014_000000083557.jpg +../coco/images/val2014/COCO_val2014_000000084073.jpg +../coco/images/val2014/COCO_val2014_000000084447.jpg +../coco/images/val2014/COCO_val2014_000000084463.jpg +../coco/images/val2014/COCO_val2014_000000084592.jpg +../coco/images/val2014/COCO_val2014_000000084674.jpg +../coco/images/val2014/COCO_val2014_000000084762.jpg +../coco/images/val2014/COCO_val2014_000000084870.jpg +../coco/images/val2014/COCO_val2014_000000084929.jpg +../coco/images/val2014/COCO_val2014_000000084980.jpg +../coco/images/val2014/COCO_val2014_000000085101.jpg +../coco/images/val2014/COCO_val2014_000000085292.jpg +../coco/images/val2014/COCO_val2014_000000085353.jpg +../coco/images/val2014/COCO_val2014_000000085674.jpg +../coco/images/val2014/COCO_val2014_000000085813.jpg +../coco/images/val2014/COCO_val2014_000000086011.jpg +../coco/images/val2014/COCO_val2014_000000086133.jpg +../coco/images/val2014/COCO_val2014_000000086136.jpg +../coco/images/val2014/COCO_val2014_000000086215.jpg +../coco/images/val2014/COCO_val2014_000000086220.jpg +../coco/images/val2014/COCO_val2014_000000086249.jpg +../coco/images/val2014/COCO_val2014_000000086320.jpg +../coco/images/val2014/COCO_val2014_000000086357.jpg +../coco/images/val2014/COCO_val2014_000000086429.jpg +../coco/images/val2014/COCO_val2014_000000086467.jpg +../coco/images/val2014/COCO_val2014_000000086483.jpg +../coco/images/val2014/COCO_val2014_000000086646.jpg +../coco/images/val2014/COCO_val2014_000000086755.jpg +../coco/images/val2014/COCO_val2014_000000086839.jpg +../coco/images/val2014/COCO_val2014_000000086848.jpg +../coco/images/val2014/COCO_val2014_000000086877.jpg +../coco/images/val2014/COCO_val2014_000000087038.jpg +../coco/images/val2014/COCO_val2014_000000087244.jpg +../coco/images/val2014/COCO_val2014_000000087354.jpg +../coco/images/val2014/COCO_val2014_000000087387.jpg +../coco/images/val2014/COCO_val2014_000000087489.jpg +../coco/images/val2014/COCO_val2014_000000087503.jpg +../coco/images/val2014/COCO_val2014_000000087617.jpg +../coco/images/val2014/COCO_val2014_000000087638.jpg +../coco/images/val2014/COCO_val2014_000000087740.jpg +../coco/images/val2014/COCO_val2014_000000087875.jpg +../coco/images/val2014/COCO_val2014_000000088360.jpg +../coco/images/val2014/COCO_val2014_000000088507.jpg +../coco/images/val2014/COCO_val2014_000000088560.jpg +../coco/images/val2014/COCO_val2014_000000088846.jpg +../coco/images/val2014/COCO_val2014_000000088859.jpg +../coco/images/val2014/COCO_val2014_000000088902.jpg +../coco/images/val2014/COCO_val2014_000000089027.jpg +../coco/images/val2014/COCO_val2014_000000089258.jpg +../coco/images/val2014/COCO_val2014_000000089285.jpg +../coco/images/val2014/COCO_val2014_000000089359.jpg +../coco/images/val2014/COCO_val2014_000000089378.jpg +../coco/images/val2014/COCO_val2014_000000089391.jpg +../coco/images/val2014/COCO_val2014_000000089487.jpg +../coco/images/val2014/COCO_val2014_000000089618.jpg +../coco/images/val2014/COCO_val2014_000000089670.jpg +../coco/images/val2014/COCO_val2014_000000090003.jpg +../coco/images/val2014/COCO_val2014_000000090062.jpg +../coco/images/val2014/COCO_val2014_000000090155.jpg +../coco/images/val2014/COCO_val2014_000000090208.jpg +../coco/images/val2014/COCO_val2014_000000090351.jpg +../coco/images/val2014/COCO_val2014_000000090476.jpg +../coco/images/val2014/COCO_val2014_000000090594.jpg +../coco/images/val2014/COCO_val2014_000000090753.jpg +../coco/images/val2014/COCO_val2014_000000090754.jpg +../coco/images/val2014/COCO_val2014_000000090864.jpg +../coco/images/val2014/COCO_val2014_000000091079.jpg +../coco/images/val2014/COCO_val2014_000000091341.jpg +../coco/images/val2014/COCO_val2014_000000091402.jpg +../coco/images/val2014/COCO_val2014_000000091517.jpg +../coco/images/val2014/COCO_val2014_000000091520.jpg +../coco/images/val2014/COCO_val2014_000000091612.jpg +../coco/images/val2014/COCO_val2014_000000091716.jpg +../coco/images/val2014/COCO_val2014_000000091766.jpg +../coco/images/val2014/COCO_val2014_000000091857.jpg +../coco/images/val2014/COCO_val2014_000000091899.jpg +../coco/images/val2014/COCO_val2014_000000091912.jpg +../coco/images/val2014/COCO_val2014_000000092093.jpg +../coco/images/val2014/COCO_val2014_000000092124.jpg +../coco/images/val2014/COCO_val2014_000000092679.jpg +../coco/images/val2014/COCO_val2014_000000092683.jpg +../coco/images/val2014/COCO_val2014_000000092939.jpg +../coco/images/val2014/COCO_val2014_000000092985.jpg +../coco/images/val2014/COCO_val2014_000000093175.jpg +../coco/images/val2014/COCO_val2014_000000093236.jpg +../coco/images/val2014/COCO_val2014_000000093331.jpg +../coco/images/val2014/COCO_val2014_000000093434.jpg +../coco/images/val2014/COCO_val2014_000000093607.jpg +../coco/images/val2014/COCO_val2014_000000093806.jpg +../coco/images/val2014/COCO_val2014_000000093964.jpg +../coco/images/val2014/COCO_val2014_000000094012.jpg +../coco/images/val2014/COCO_val2014_000000094033.jpg +../coco/images/val2014/COCO_val2014_000000094046.jpg +../coco/images/val2014/COCO_val2014_000000094052.jpg +../coco/images/val2014/COCO_val2014_000000094055.jpg +../coco/images/val2014/COCO_val2014_000000094501.jpg +../coco/images/val2014/COCO_val2014_000000094619.jpg +../coco/images/val2014/COCO_val2014_000000094746.jpg +../coco/images/val2014/COCO_val2014_000000094795.jpg +../coco/images/val2014/COCO_val2014_000000094846.jpg +../coco/images/val2014/COCO_val2014_000000095062.jpg +../coco/images/val2014/COCO_val2014_000000095063.jpg +../coco/images/val2014/COCO_val2014_000000095227.jpg +../coco/images/val2014/COCO_val2014_000000095441.jpg +../coco/images/val2014/COCO_val2014_000000095551.jpg +../coco/images/val2014/COCO_val2014_000000095670.jpg +../coco/images/val2014/COCO_val2014_000000095770.jpg +../coco/images/val2014/COCO_val2014_000000096110.jpg +../coco/images/val2014/COCO_val2014_000000096288.jpg +../coco/images/val2014/COCO_val2014_000000096327.jpg +../coco/images/val2014/COCO_val2014_000000096351.jpg +../coco/images/val2014/COCO_val2014_000000096618.jpg +../coco/images/val2014/COCO_val2014_000000096654.jpg +../coco/images/val2014/COCO_val2014_000000096762.jpg +../coco/images/val2014/COCO_val2014_000000096769.jpg +../coco/images/val2014/COCO_val2014_000000096998.jpg +../coco/images/val2014/COCO_val2014_000000097017.jpg +../coco/images/val2014/COCO_val2014_000000097048.jpg +../coco/images/val2014/COCO_val2014_000000097080.jpg +../coco/images/val2014/COCO_val2014_000000097240.jpg +../coco/images/val2014/COCO_val2014_000000097479.jpg +../coco/images/val2014/COCO_val2014_000000097577.jpg +../coco/images/val2014/COCO_val2014_000000097610.jpg +../coco/images/val2014/COCO_val2014_000000097656.jpg +../coco/images/val2014/COCO_val2014_000000097667.jpg +../coco/images/val2014/COCO_val2014_000000097682.jpg +../coco/images/val2014/COCO_val2014_000000097748.jpg +../coco/images/val2014/COCO_val2014_000000097868.jpg +../coco/images/val2014/COCO_val2014_000000097899.jpg +../coco/images/val2014/COCO_val2014_000000098018.jpg +../coco/images/val2014/COCO_val2014_000000098043.jpg +../coco/images/val2014/COCO_val2014_000000098095.jpg +../coco/images/val2014/COCO_val2014_000000098194.jpg +../coco/images/val2014/COCO_val2014_000000098280.jpg +../coco/images/val2014/COCO_val2014_000000098283.jpg +../coco/images/val2014/COCO_val2014_000000098599.jpg +../coco/images/val2014/COCO_val2014_000000098872.jpg +../coco/images/val2014/COCO_val2014_000000099026.jpg +../coco/images/val2014/COCO_val2014_000000099260.jpg +../coco/images/val2014/COCO_val2014_000000099389.jpg +../coco/images/val2014/COCO_val2014_000000099707.jpg +../coco/images/val2014/COCO_val2014_000000099961.jpg +../coco/images/val2014/COCO_val2014_000000099996.jpg +../coco/images/val2014/COCO_val2014_000000100000.jpg +../coco/images/val2014/COCO_val2014_000000100006.jpg +../coco/images/val2014/COCO_val2014_000000100083.jpg +../coco/images/val2014/COCO_val2014_000000100166.jpg +../coco/images/val2014/COCO_val2014_000000100187.jpg +../coco/images/val2014/COCO_val2014_000000100245.jpg +../coco/images/val2014/COCO_val2014_000000100343.jpg +../coco/images/val2014/COCO_val2014_000000100428.jpg +../coco/images/val2014/COCO_val2014_000000100582.jpg +../coco/images/val2014/COCO_val2014_000000100723.jpg +../coco/images/val2014/COCO_val2014_000000100726.jpg +../coco/images/val2014/COCO_val2014_000000100909.jpg +../coco/images/val2014/COCO_val2014_000000101059.jpg +../coco/images/val2014/COCO_val2014_000000101145.jpg +../coco/images/val2014/COCO_val2014_000000101567.jpg +../coco/images/val2014/COCO_val2014_000000101623.jpg +../coco/images/val2014/COCO_val2014_000000101703.jpg +../coco/images/val2014/COCO_val2014_000000101884.jpg +../coco/images/val2014/COCO_val2014_000000101948.jpg +../coco/images/val2014/COCO_val2014_000000102331.jpg +../coco/images/val2014/COCO_val2014_000000102421.jpg +../coco/images/val2014/COCO_val2014_000000102439.jpg +../coco/images/val2014/COCO_val2014_000000102446.jpg +../coco/images/val2014/COCO_val2014_000000102461.jpg +../coco/images/val2014/COCO_val2014_000000102466.jpg +../coco/images/val2014/COCO_val2014_000000102478.jpg +../coco/images/val2014/COCO_val2014_000000102594.jpg +../coco/images/val2014/COCO_val2014_000000102598.jpg +../coco/images/val2014/COCO_val2014_000000102665.jpg +../coco/images/val2014/COCO_val2014_000000102707.jpg +../coco/images/val2014/COCO_val2014_000000102848.jpg +../coco/images/val2014/COCO_val2014_000000102906.jpg +../coco/images/val2014/COCO_val2014_000000103122.jpg +../coco/images/val2014/COCO_val2014_000000103255.jpg +../coco/images/val2014/COCO_val2014_000000103272.jpg +../coco/images/val2014/COCO_val2014_000000103379.jpg +../coco/images/val2014/COCO_val2014_000000103413.jpg +../coco/images/val2014/COCO_val2014_000000103431.jpg +../coco/images/val2014/COCO_val2014_000000103509.jpg +../coco/images/val2014/COCO_val2014_000000103538.jpg +../coco/images/val2014/COCO_val2014_000000103667.jpg +../coco/images/val2014/COCO_val2014_000000103747.jpg +../coco/images/val2014/COCO_val2014_000000103931.jpg +../coco/images/val2014/COCO_val2014_000000104002.jpg +../coco/images/val2014/COCO_val2014_000000104455.jpg +../coco/images/val2014/COCO_val2014_000000104486.jpg +../coco/images/val2014/COCO_val2014_000000104494.jpg +../coco/images/val2014/COCO_val2014_000000104495.jpg +../coco/images/val2014/COCO_val2014_000000104893.jpg +../coco/images/val2014/COCO_val2014_000000104965.jpg +../coco/images/val2014/COCO_val2014_000000105040.jpg +../coco/images/val2014/COCO_val2014_000000105102.jpg +../coco/images/val2014/COCO_val2014_000000105156.jpg +../coco/images/val2014/COCO_val2014_000000105264.jpg +../coco/images/val2014/COCO_val2014_000000105291.jpg +../coco/images/val2014/COCO_val2014_000000105367.jpg +../coco/images/val2014/COCO_val2014_000000105647.jpg +../coco/images/val2014/COCO_val2014_000000105668.jpg +../coco/images/val2014/COCO_val2014_000000105711.jpg +../coco/images/val2014/COCO_val2014_000000105866.jpg +../coco/images/val2014/COCO_val2014_000000105973.jpg +../coco/images/val2014/COCO_val2014_000000106096.jpg +../coco/images/val2014/COCO_val2014_000000106120.jpg +../coco/images/val2014/COCO_val2014_000000106314.jpg +../coco/images/val2014/COCO_val2014_000000106351.jpg +../coco/images/val2014/COCO_val2014_000000106641.jpg +../coco/images/val2014/COCO_val2014_000000106661.jpg +../coco/images/val2014/COCO_val2014_000000106757.jpg +../coco/images/val2014/COCO_val2014_000000106793.jpg +../coco/images/val2014/COCO_val2014_000000106849.jpg +../coco/images/val2014/COCO_val2014_000000107004.jpg +../coco/images/val2014/COCO_val2014_000000107123.jpg +../coco/images/val2014/COCO_val2014_000000107183.jpg +../coco/images/val2014/COCO_val2014_000000107227.jpg +../coco/images/val2014/COCO_val2014_000000107244.jpg +../coco/images/val2014/COCO_val2014_000000107304.jpg +../coco/images/val2014/COCO_val2014_000000107542.jpg +../coco/images/val2014/COCO_val2014_000000107741.jpg +../coco/images/val2014/COCO_val2014_000000107831.jpg +../coco/images/val2014/COCO_val2014_000000107839.jpg +../coco/images/val2014/COCO_val2014_000000108051.jpg +../coco/images/val2014/COCO_val2014_000000108152.jpg +../coco/images/val2014/COCO_val2014_000000108212.jpg +../coco/images/val2014/COCO_val2014_000000108380.jpg +../coco/images/val2014/COCO_val2014_000000108408.jpg +../coco/images/val2014/COCO_val2014_000000108531.jpg +../coco/images/val2014/COCO_val2014_000000108761.jpg +../coco/images/val2014/COCO_val2014_000000108864.jpg +../coco/images/val2014/COCO_val2014_000000109055.jpg +../coco/images/val2014/COCO_val2014_000000109092.jpg +../coco/images/val2014/COCO_val2014_000000109178.jpg +../coco/images/val2014/COCO_val2014_000000109216.jpg +../coco/images/val2014/COCO_val2014_000000109231.jpg +../coco/images/val2014/COCO_val2014_000000109308.jpg +../coco/images/val2014/COCO_val2014_000000109486.jpg +../coco/images/val2014/COCO_val2014_000000109819.jpg +../coco/images/val2014/COCO_val2014_000000109869.jpg +../coco/images/val2014/COCO_val2014_000000110313.jpg +../coco/images/val2014/COCO_val2014_000000110389.jpg +../coco/images/val2014/COCO_val2014_000000110562.jpg +../coco/images/val2014/COCO_val2014_000000110617.jpg +../coco/images/val2014/COCO_val2014_000000110638.jpg +../coco/images/val2014/COCO_val2014_000000110881.jpg +../coco/images/val2014/COCO_val2014_000000110884.jpg +../coco/images/val2014/COCO_val2014_000000110951.jpg +../coco/images/val2014/COCO_val2014_000000111004.jpg +../coco/images/val2014/COCO_val2014_000000111014.jpg +../coco/images/val2014/COCO_val2014_000000111024.jpg +../coco/images/val2014/COCO_val2014_000000111076.jpg +../coco/images/val2014/COCO_val2014_000000111179.jpg +../coco/images/val2014/COCO_val2014_000000111590.jpg +../coco/images/val2014/COCO_val2014_000000111593.jpg +../coco/images/val2014/COCO_val2014_000000111878.jpg +../coco/images/val2014/COCO_val2014_000000112298.jpg +../coco/images/val2014/COCO_val2014_000000112388.jpg +../coco/images/val2014/COCO_val2014_000000112394.jpg +../coco/images/val2014/COCO_val2014_000000112440.jpg +../coco/images/val2014/COCO_val2014_000000112751.jpg +../coco/images/val2014/COCO_val2014_000000112818.jpg +../coco/images/val2014/COCO_val2014_000000112820.jpg +../coco/images/val2014/COCO_val2014_000000112830.jpg +../coco/images/val2014/COCO_val2014_000000112928.jpg +../coco/images/val2014/COCO_val2014_000000113139.jpg +../coco/images/val2014/COCO_val2014_000000113173.jpg +../coco/images/val2014/COCO_val2014_000000113313.jpg +../coco/images/val2014/COCO_val2014_000000113440.jpg +../coco/images/val2014/COCO_val2014_000000113559.jpg +../coco/images/val2014/COCO_val2014_000000113570.jpg +../coco/images/val2014/COCO_val2014_000000113579.jpg +../coco/images/val2014/COCO_val2014_000000113590.jpg +../coco/images/val2014/COCO_val2014_000000113757.jpg +../coco/images/val2014/COCO_val2014_000000113977.jpg +../coco/images/val2014/COCO_val2014_000000114033.jpg +../coco/images/val2014/COCO_val2014_000000114055.jpg +../coco/images/val2014/COCO_val2014_000000114090.jpg +../coco/images/val2014/COCO_val2014_000000114147.jpg +../coco/images/val2014/COCO_val2014_000000114239.jpg +../coco/images/val2014/COCO_val2014_000000114503.jpg +../coco/images/val2014/COCO_val2014_000000114907.jpg +../coco/images/val2014/COCO_val2014_000000114926.jpg +../coco/images/val2014/COCO_val2014_000000115069.jpg +../coco/images/val2014/COCO_val2014_000000115070.jpg +../coco/images/val2014/COCO_val2014_000000115128.jpg +../coco/images/val2014/COCO_val2014_000000115870.jpg +../coco/images/val2014/COCO_val2014_000000115898.jpg +../coco/images/val2014/COCO_val2014_000000115930.jpg +../coco/images/val2014/COCO_val2014_000000116226.jpg +../coco/images/val2014/COCO_val2014_000000116556.jpg +../coco/images/val2014/COCO_val2014_000000116667.jpg +../coco/images/val2014/COCO_val2014_000000116696.jpg +../coco/images/val2014/COCO_val2014_000000116936.jpg +../coco/images/val2014/COCO_val2014_000000117014.jpg +../coco/images/val2014/COCO_val2014_000000117037.jpg +../coco/images/val2014/COCO_val2014_000000117125.jpg +../coco/images/val2014/COCO_val2014_000000117127.jpg +../coco/images/val2014/COCO_val2014_000000117191.jpg +../coco/images/val2014/COCO_val2014_000000117201.jpg +../coco/images/val2014/COCO_val2014_000000117237.jpg +../coco/images/val2014/COCO_val2014_000000117404.jpg +../coco/images/val2014/COCO_val2014_000000117527.jpg +../coco/images/val2014/COCO_val2014_000000117718.jpg +../coco/images/val2014/COCO_val2014_000000117725.jpg +../coco/images/val2014/COCO_val2014_000000117786.jpg +../coco/images/val2014/COCO_val2014_000000117899.jpg +../coco/images/val2014/COCO_val2014_000000118401.jpg +../coco/images/val2014/COCO_val2014_000000118546.jpg +../coco/images/val2014/COCO_val2014_000000118579.jpg +../coco/images/val2014/COCO_val2014_000000118740.jpg +../coco/images/val2014/COCO_val2014_000000118788.jpg +../coco/images/val2014/COCO_val2014_000000118956.jpg +../coco/images/val2014/COCO_val2014_000000119232.jpg +../coco/images/val2014/COCO_val2014_000000119233.jpg +../coco/images/val2014/COCO_val2014_000000119445.jpg +../coco/images/val2014/COCO_val2014_000000119617.jpg +../coco/images/val2014/COCO_val2014_000000119785.jpg +../coco/images/val2014/COCO_val2014_000000119964.jpg +../coco/images/val2014/COCO_val2014_000000120248.jpg +../coco/images/val2014/COCO_val2014_000000120380.jpg +../coco/images/val2014/COCO_val2014_000000120682.jpg +../coco/images/val2014/COCO_val2014_000000120767.jpg +../coco/images/val2014/COCO_val2014_000000120935.jpg +../coco/images/val2014/COCO_val2014_000000120964.jpg +../coco/images/val2014/COCO_val2014_000000121112.jpg +../coco/images/val2014/COCO_val2014_000000121417.jpg +../coco/images/val2014/COCO_val2014_000000121503.jpg +../coco/images/val2014/COCO_val2014_000000121591.jpg +../coco/images/val2014/COCO_val2014_000000121633.jpg +../coco/images/val2014/COCO_val2014_000000121817.jpg +../coco/images/val2014/COCO_val2014_000000121826.jpg +../coco/images/val2014/COCO_val2014_000000121849.jpg +../coco/images/val2014/COCO_val2014_000000122039.jpg +../coco/images/val2014/COCO_val2014_000000122166.jpg +../coco/images/val2014/COCO_val2014_000000122213.jpg +../coco/images/val2014/COCO_val2014_000000122229.jpg +../coco/images/val2014/COCO_val2014_000000122239.jpg +../coco/images/val2014/COCO_val2014_000000122266.jpg +../coco/images/val2014/COCO_val2014_000000122300.jpg +../coco/images/val2014/COCO_val2014_000000122458.jpg +../coco/images/val2014/COCO_val2014_000000122589.jpg +../coco/images/val2014/COCO_val2014_000000122678.jpg +../coco/images/val2014/COCO_val2014_000000122747.jpg +../coco/images/val2014/COCO_val2014_000000123070.jpg +../coco/images/val2014/COCO_val2014_000000123125.jpg +../coco/images/val2014/COCO_val2014_000000123220.jpg +../coco/images/val2014/COCO_val2014_000000123244.jpg +../coco/images/val2014/COCO_val2014_000000123469.jpg +../coco/images/val2014/COCO_val2014_000000123570.jpg +../coco/images/val2014/COCO_val2014_000000123622.jpg +../coco/images/val2014/COCO_val2014_000000123627.jpg +../coco/images/val2014/COCO_val2014_000000123867.jpg +../coco/images/val2014/COCO_val2014_000000123964.jpg +../coco/images/val2014/COCO_val2014_000000124013.jpg +../coco/images/val2014/COCO_val2014_000000124018.jpg +../coco/images/val2014/COCO_val2014_000000124072.jpg +../coco/images/val2014/COCO_val2014_000000124128.jpg +../coco/images/val2014/COCO_val2014_000000124157.jpg +../coco/images/val2014/COCO_val2014_000000124243.jpg +../coco/images/val2014/COCO_val2014_000000124246.jpg +../coco/images/val2014/COCO_val2014_000000124647.jpg +../coco/images/val2014/COCO_val2014_000000125051.jpg +../coco/images/val2014/COCO_val2014_000000125070.jpg +../coco/images/val2014/COCO_val2014_000000125072.jpg +../coco/images/val2014/COCO_val2014_000000125228.jpg +../coco/images/val2014/COCO_val2014_000000125286.jpg +../coco/images/val2014/COCO_val2014_000000125322.jpg +../coco/images/val2014/COCO_val2014_000000125476.jpg +../coco/images/val2014/COCO_val2014_000000125645.jpg +../coco/images/val2014/COCO_val2014_000000125815.jpg +../coco/images/val2014/COCO_val2014_000000125983.jpg +../coco/images/val2014/COCO_val2014_000000126064.jpg +../coco/images/val2014/COCO_val2014_000000126098.jpg +../coco/images/val2014/COCO_val2014_000000126216.jpg +../coco/images/val2014/COCO_val2014_000000126229.jpg +../coco/images/val2014/COCO_val2014_000000126253.jpg +../coco/images/val2014/COCO_val2014_000000126299.jpg +../coco/images/val2014/COCO_val2014_000000126833.jpg +../coco/images/val2014/COCO_val2014_000000126895.jpg +../coco/images/val2014/COCO_val2014_000000127135.jpg +../coco/images/val2014/COCO_val2014_000000127170.jpg +../coco/images/val2014/COCO_val2014_000000127192.jpg +../coco/images/val2014/COCO_val2014_000000127476.jpg +../coco/images/val2014/COCO_val2014_000000127496.jpg +../coco/images/val2014/COCO_val2014_000000127514.jpg +../coco/images/val2014/COCO_val2014_000000127520.jpg +../coco/images/val2014/COCO_val2014_000000127576.jpg +../coco/images/val2014/COCO_val2014_000000127775.jpg +../coco/images/val2014/COCO_val2014_000000127801.jpg +../coco/images/val2014/COCO_val2014_000000127955.jpg +../coco/images/val2014/COCO_val2014_000000128119.jpg +../coco/images/val2014/COCO_val2014_000000128644.jpg +../coco/images/val2014/COCO_val2014_000000128748.jpg +../coco/images/val2014/COCO_val2014_000000128849.jpg +../coco/images/val2014/COCO_val2014_000000129062.jpg +../coco/images/val2014/COCO_val2014_000000129362.jpg +../coco/images/val2014/COCO_val2014_000000129566.jpg +../coco/images/val2014/COCO_val2014_000000129735.jpg +../coco/images/val2014/COCO_val2014_000000130076.jpg +../coco/images/val2014/COCO_val2014_000000130516.jpg +../coco/images/val2014/COCO_val2014_000000130555.jpg +../coco/images/val2014/COCO_val2014_000000130579.jpg +../coco/images/val2014/COCO_val2014_000000130613.jpg +../coco/images/val2014/COCO_val2014_000000130651.jpg +../coco/images/val2014/COCO_val2014_000000130663.jpg +../coco/images/val2014/COCO_val2014_000000130699.jpg +../coco/images/val2014/COCO_val2014_000000130712.jpg +../coco/images/val2014/COCO_val2014_000000130849.jpg +../coco/images/val2014/COCO_val2014_000000131115.jpg +../coco/images/val2014/COCO_val2014_000000131138.jpg +../coco/images/val2014/COCO_val2014_000000131207.jpg +../coco/images/val2014/COCO_val2014_000000131276.jpg +../coco/images/val2014/COCO_val2014_000000131431.jpg +../coco/images/val2014/COCO_val2014_000000132001.jpg +../coco/images/val2014/COCO_val2014_000000132042.jpg +../coco/images/val2014/COCO_val2014_000000132143.jpg +../coco/images/val2014/COCO_val2014_000000132182.jpg +../coco/images/val2014/COCO_val2014_000000132223.jpg +../coco/images/val2014/COCO_val2014_000000132272.jpg +../coco/images/val2014/COCO_val2014_000000132375.jpg +../coco/images/val2014/COCO_val2014_000000132389.jpg +../coco/images/val2014/COCO_val2014_000000132510.jpg +../coco/images/val2014/COCO_val2014_000000132540.jpg +../coco/images/val2014/COCO_val2014_000000132686.jpg +../coco/images/val2014/COCO_val2014_000000132861.jpg +../coco/images/val2014/COCO_val2014_000000132992.jpg +../coco/images/val2014/COCO_val2014_000000133233.jpg +../coco/images/val2014/COCO_val2014_000000133237.jpg +../coco/images/val2014/COCO_val2014_000000133244.jpg +../coco/images/val2014/COCO_val2014_000000133251.jpg +../coco/images/val2014/COCO_val2014_000000133279.jpg +../coco/images/val2014/COCO_val2014_000000133485.jpg +../coco/images/val2014/COCO_val2014_000000133571.jpg +../coco/images/val2014/COCO_val2014_000000133611.jpg +../coco/images/val2014/COCO_val2014_000000133999.jpg +../coco/images/val2014/COCO_val2014_000000134001.jpg +../coco/images/val2014/COCO_val2014_000000134112.jpg +../coco/images/val2014/COCO_val2014_000000134133.jpg +../coco/images/val2014/COCO_val2014_000000134167.jpg +../coco/images/val2014/COCO_val2014_000000134198.jpg +../coco/images/val2014/COCO_val2014_000000134223.jpg +../coco/images/val2014/COCO_val2014_000000134537.jpg +../coco/images/val2014/COCO_val2014_000000134542.jpg +../coco/images/val2014/COCO_val2014_000000134935.jpg +../coco/images/val2014/COCO_val2014_000000135029.jpg +../coco/images/val2014/COCO_val2014_000000135266.jpg +../coco/images/val2014/COCO_val2014_000000135356.jpg +../coco/images/val2014/COCO_val2014_000000135579.jpg +../coco/images/val2014/COCO_val2014_000000135670.jpg +../coco/images/val2014/COCO_val2014_000000135671.jpg +../coco/images/val2014/COCO_val2014_000000135785.jpg +../coco/images/val2014/COCO_val2014_000000135900.jpg +../coco/images/val2014/COCO_val2014_000000135975.jpg +../coco/images/val2014/COCO_val2014_000000136008.jpg +../coco/images/val2014/COCO_val2014_000000136181.jpg +../coco/images/val2014/COCO_val2014_000000136285.jpg +../coco/images/val2014/COCO_val2014_000000136400.jpg +../coco/images/val2014/COCO_val2014_000000136458.jpg +../coco/images/val2014/COCO_val2014_000000136501.jpg +../coco/images/val2014/COCO_val2014_000000136552.jpg +../coco/images/val2014/COCO_val2014_000000136644.jpg +../coco/images/val2014/COCO_val2014_000000136718.jpg +../coco/images/val2014/COCO_val2014_000000136740.jpg +../coco/images/val2014/COCO_val2014_000000136780.jpg +../coco/images/val2014/COCO_val2014_000000136793.jpg +../coco/images/val2014/COCO_val2014_000000136870.jpg +../coco/images/val2014/COCO_val2014_000000136915.jpg +../coco/images/val2014/COCO_val2014_000000137211.jpg +../coco/images/val2014/COCO_val2014_000000137265.jpg +../coco/images/val2014/COCO_val2014_000000137271.jpg +../coco/images/val2014/COCO_val2014_000000137294.jpg +../coco/images/val2014/COCO_val2014_000000137300.jpg +../coco/images/val2014/COCO_val2014_000000137301.jpg +../coco/images/val2014/COCO_val2014_000000137395.jpg +../coco/images/val2014/COCO_val2014_000000137451.jpg +../coco/images/val2014/COCO_val2014_000000137507.jpg +../coco/images/val2014/COCO_val2014_000000137595.jpg +../coco/images/val2014/COCO_val2014_000000137658.jpg +../coco/images/val2014/COCO_val2014_000000137678.jpg +../coco/images/val2014/COCO_val2014_000000137727.jpg +../coco/images/val2014/COCO_val2014_000000137803.jpg +../coco/images/val2014/COCO_val2014_000000137993.jpg +../coco/images/val2014/COCO_val2014_000000138070.jpg +../coco/images/val2014/COCO_val2014_000000138075.jpg +../coco/images/val2014/COCO_val2014_000000138397.jpg +../coco/images/val2014/COCO_val2014_000000138517.jpg +../coco/images/val2014/COCO_val2014_000000138573.jpg +../coco/images/val2014/COCO_val2014_000000138589.jpg +../coco/images/val2014/COCO_val2014_000000138648.jpg +../coco/images/val2014/COCO_val2014_000000138814.jpg +../coco/images/val2014/COCO_val2014_000000138937.jpg +../coco/images/val2014/COCO_val2014_000000139140.jpg +../coco/images/val2014/COCO_val2014_000000139141.jpg +../coco/images/val2014/COCO_val2014_000000139260.jpg +../coco/images/val2014/COCO_val2014_000000139294.jpg +../coco/images/val2014/COCO_val2014_000000139436.jpg +../coco/images/val2014/COCO_val2014_000000139440.jpg +../coco/images/val2014/COCO_val2014_000000139623.jpg +../coco/images/val2014/COCO_val2014_000000139871.jpg +../coco/images/val2014/COCO_val2014_000000140006.jpg +../coco/images/val2014/COCO_val2014_000000140043.jpg +../coco/images/val2014/COCO_val2014_000000140068.jpg +../coco/images/val2014/COCO_val2014_000000140087.jpg +../coco/images/val2014/COCO_val2014_000000140197.jpg +../coco/images/val2014/COCO_val2014_000000140203.jpg +../coco/images/val2014/COCO_val2014_000000140388.jpg +../coco/images/val2014/COCO_val2014_000000140661.jpg +../coco/images/val2014/COCO_val2014_000000140664.jpg +../coco/images/val2014/COCO_val2014_000000140686.jpg +../coco/images/val2014/COCO_val2014_000000140696.jpg +../coco/images/val2014/COCO_val2014_000000140987.jpg +../coco/images/val2014/COCO_val2014_000000141197.jpg +../coco/images/val2014/COCO_val2014_000000141211.jpg +../coco/images/val2014/COCO_val2014_000000141509.jpg +../coco/images/val2014/COCO_val2014_000000141517.jpg +../coco/images/val2014/COCO_val2014_000000141574.jpg +../coco/images/val2014/COCO_val2014_000000141634.jpg +../coco/images/val2014/COCO_val2014_000000141673.jpg +../coco/images/val2014/COCO_val2014_000000141760.jpg +../coco/images/val2014/COCO_val2014_000000141795.jpg +../coco/images/val2014/COCO_val2014_000000141807.jpg +../coco/images/val2014/COCO_val2014_000000141849.jpg +../coco/images/val2014/COCO_val2014_000000142092.jpg +../coco/images/val2014/COCO_val2014_000000142189.jpg +../coco/images/val2014/COCO_val2014_000000142318.jpg +../coco/images/val2014/COCO_val2014_000000142537.jpg +../coco/images/val2014/COCO_val2014_000000142941.jpg +../coco/images/val2014/COCO_val2014_000000142949.jpg +../coco/images/val2014/COCO_val2014_000000143125.jpg +../coco/images/val2014/COCO_val2014_000000143143.jpg +../coco/images/val2014/COCO_val2014_000000143174.jpg +../coco/images/val2014/COCO_val2014_000000143217.jpg +../coco/images/val2014/COCO_val2014_000000143236.jpg +../coco/images/val2014/COCO_val2014_000000143479.jpg +../coco/images/val2014/COCO_val2014_000000143644.jpg +../coco/images/val2014/COCO_val2014_000000143653.jpg +../coco/images/val2014/COCO_val2014_000000143671.jpg +../coco/images/val2014/COCO_val2014_000000143737.jpg +../coco/images/val2014/COCO_val2014_000000143769.jpg +../coco/images/val2014/COCO_val2014_000000143792.jpg +../coco/images/val2014/COCO_val2014_000000143931.jpg +../coco/images/val2014/COCO_val2014_000000144003.jpg +../coco/images/val2014/COCO_val2014_000000144058.jpg +../coco/images/val2014/COCO_val2014_000000144200.jpg +../coco/images/val2014/COCO_val2014_000000144228.jpg +../coco/images/val2014/COCO_val2014_000000144539.jpg +../coco/images/val2014/COCO_val2014_000000144985.jpg +../coco/images/val2014/COCO_val2014_000000145093.jpg +../coco/images/val2014/COCO_val2014_000000145101.jpg +../coco/images/val2014/COCO_val2014_000000145227.jpg +../coco/images/val2014/COCO_val2014_000000145295.jpg +../coco/images/val2014/COCO_val2014_000000145408.jpg +../coco/images/val2014/COCO_val2014_000000145520.jpg +../coco/images/val2014/COCO_val2014_000000145597.jpg +../coco/images/val2014/COCO_val2014_000000145620.jpg +../coco/images/val2014/COCO_val2014_000000145750.jpg +../coco/images/val2014/COCO_val2014_000000145781.jpg +../coco/images/val2014/COCO_val2014_000000145824.jpg +../coco/images/val2014/COCO_val2014_000000145831.jpg +../coco/images/val2014/COCO_val2014_000000146193.jpg +../coco/images/val2014/COCO_val2014_000000146253.jpg +../coco/images/val2014/COCO_val2014_000000146570.jpg +../coco/images/val2014/COCO_val2014_000000146614.jpg +../coco/images/val2014/COCO_val2014_000000146627.jpg +../coco/images/val2014/COCO_val2014_000000146667.jpg +../coco/images/val2014/COCO_val2014_000000146730.jpg +../coco/images/val2014/COCO_val2014_000000146830.jpg +../coco/images/val2014/COCO_val2014_000000146837.jpg +../coco/images/val2014/COCO_val2014_000000146961.jpg +../coco/images/val2014/COCO_val2014_000000147030.jpg +../coco/images/val2014/COCO_val2014_000000147058.jpg +../coco/images/val2014/COCO_val2014_000000147101.jpg +../coco/images/val2014/COCO_val2014_000000147128.jpg +../coco/images/val2014/COCO_val2014_000000147409.jpg +../coco/images/val2014/COCO_val2014_000000147556.jpg +../coco/images/val2014/COCO_val2014_000000147921.jpg +../coco/images/val2014/COCO_val2014_000000148170.jpg +../coco/images/val2014/COCO_val2014_000000148188.jpg +../coco/images/val2014/COCO_val2014_000000148458.jpg +../coco/images/val2014/COCO_val2014_000000148542.jpg +../coco/images/val2014/COCO_val2014_000000148568.jpg +../coco/images/val2014/COCO_val2014_000000148719.jpg +../coco/images/val2014/COCO_val2014_000000148792.jpg +../coco/images/val2014/COCO_val2014_000000148955.jpg +../coco/images/val2014/COCO_val2014_000000149052.jpg +../coco/images/val2014/COCO_val2014_000000149268.jpg +../coco/images/val2014/COCO_val2014_000000149329.jpg +../coco/images/val2014/COCO_val2014_000000149469.jpg +../coco/images/val2014/COCO_val2014_000000149568.jpg +../coco/images/val2014/COCO_val2014_000000149767.jpg +../coco/images/val2014/COCO_val2014_000000149890.jpg +../coco/images/val2014/COCO_val2014_000000150026.jpg +../coco/images/val2014/COCO_val2014_000000150080.jpg +../coco/images/val2014/COCO_val2014_000000150267.jpg +../coco/images/val2014/COCO_val2014_000000150301.jpg +../coco/images/val2014/COCO_val2014_000000150317.jpg +../coco/images/val2014/COCO_val2014_000000150320.jpg +../coco/images/val2014/COCO_val2014_000000150417.jpg +../coco/images/val2014/COCO_val2014_000000150538.jpg +../coco/images/val2014/COCO_val2014_000000150763.jpg +../coco/images/val2014/COCO_val2014_000000150843.jpg +../coco/images/val2014/COCO_val2014_000000150874.jpg +../coco/images/val2014/COCO_val2014_000000150888.jpg +../coco/images/val2014/COCO_val2014_000000151005.jpg +../coco/images/val2014/COCO_val2014_000000151159.jpg +../coco/images/val2014/COCO_val2014_000000151558.jpg +../coco/images/val2014/COCO_val2014_000000151585.jpg +../coco/images/val2014/COCO_val2014_000000151657.jpg +../coco/images/val2014/COCO_val2014_000000151704.jpg +../coco/images/val2014/COCO_val2014_000000151733.jpg +../coco/images/val2014/COCO_val2014_000000151790.jpg +../coco/images/val2014/COCO_val2014_000000151911.jpg +../coco/images/val2014/COCO_val2014_000000151962.jpg +../coco/images/val2014/COCO_val2014_000000151970.jpg +../coco/images/val2014/COCO_val2014_000000151988.jpg +../coco/images/val2014/COCO_val2014_000000152000.jpg +../coco/images/val2014/COCO_val2014_000000152192.jpg +../coco/images/val2014/COCO_val2014_000000152208.jpg +../coco/images/val2014/COCO_val2014_000000152245.jpg +../coco/images/val2014/COCO_val2014_000000152330.jpg +../coco/images/val2014/COCO_val2014_000000152340.jpg +../coco/images/val2014/COCO_val2014_000000152499.jpg +../coco/images/val2014/COCO_val2014_000000152751.jpg +../coco/images/val2014/COCO_val2014_000000153011.jpg +../coco/images/val2014/COCO_val2014_000000153038.jpg +../coco/images/val2014/COCO_val2014_000000153061.jpg +../coco/images/val2014/COCO_val2014_000000153094.jpg +../coco/images/val2014/COCO_val2014_000000153231.jpg +../coco/images/val2014/COCO_val2014_000000153300.jpg +../coco/images/val2014/COCO_val2014_000000153486.jpg +../coco/images/val2014/COCO_val2014_000000153520.jpg +../coco/images/val2014/COCO_val2014_000000153563.jpg +../coco/images/val2014/COCO_val2014_000000153578.jpg +../coco/images/val2014/COCO_val2014_000000153697.jpg +../coco/images/val2014/COCO_val2014_000000153822.jpg +../coco/images/val2014/COCO_val2014_000000153896.jpg +../coco/images/val2014/COCO_val2014_000000154004.jpg +../coco/images/val2014/COCO_val2014_000000154053.jpg +../coco/images/val2014/COCO_val2014_000000154095.jpg +../coco/images/val2014/COCO_val2014_000000154363.jpg +../coco/images/val2014/COCO_val2014_000000154423.jpg +../coco/images/val2014/COCO_val2014_000000154520.jpg +../coco/images/val2014/COCO_val2014_000000154705.jpg +../coco/images/val2014/COCO_val2014_000000154854.jpg +../coco/images/val2014/COCO_val2014_000000155035.jpg +../coco/images/val2014/COCO_val2014_000000155087.jpg +../coco/images/val2014/COCO_val2014_000000155131.jpg +../coco/images/val2014/COCO_val2014_000000155142.jpg +../coco/images/val2014/COCO_val2014_000000155443.jpg +../coco/images/val2014/COCO_val2014_000000155671.jpg +../coco/images/val2014/COCO_val2014_000000155811.jpg +../coco/images/val2014/COCO_val2014_000000155861.jpg +../coco/images/val2014/COCO_val2014_000000156025.jpg +../coco/images/val2014/COCO_val2014_000000156292.jpg +../coco/images/val2014/COCO_val2014_000000156466.jpg +../coco/images/val2014/COCO_val2014_000000156636.jpg +../coco/images/val2014/COCO_val2014_000000156756.jpg +../coco/images/val2014/COCO_val2014_000000156834.jpg +../coco/images/val2014/COCO_val2014_000000156924.jpg +../coco/images/val2014/COCO_val2014_000000157109.jpg +../coco/images/val2014/COCO_val2014_000000157352.jpg +../coco/images/val2014/COCO_val2014_000000157365.jpg +../coco/images/val2014/COCO_val2014_000000157465.jpg +../coco/images/val2014/COCO_val2014_000000157592.jpg +../coco/images/val2014/COCO_val2014_000000157756.jpg +../coco/images/val2014/COCO_val2014_000000157938.jpg +../coco/images/val2014/COCO_val2014_000000158227.jpg +../coco/images/val2014/COCO_val2014_000000158272.jpg +../coco/images/val2014/COCO_val2014_000000158412.jpg +../coco/images/val2014/COCO_val2014_000000158494.jpg +../coco/images/val2014/COCO_val2014_000000158563.jpg +../coco/images/val2014/COCO_val2014_000000158583.jpg +../coco/images/val2014/COCO_val2014_000000158660.jpg +../coco/images/val2014/COCO_val2014_000000158795.jpg +../coco/images/val2014/COCO_val2014_000000158999.jpg +../coco/images/val2014/COCO_val2014_000000159269.jpg +../coco/images/val2014/COCO_val2014_000000159282.jpg +../coco/images/val2014/COCO_val2014_000000159377.jpg +../coco/images/val2014/COCO_val2014_000000159458.jpg +../coco/images/val2014/COCO_val2014_000000159606.jpg +../coco/images/val2014/COCO_val2014_000000159791.jpg +../coco/images/val2014/COCO_val2014_000000159981.jpg +../coco/images/val2014/COCO_val2014_000000160025.jpg +../coco/images/val2014/COCO_val2014_000000160185.jpg +../coco/images/val2014/COCO_val2014_000000160276.jpg +../coco/images/val2014/COCO_val2014_000000160345.jpg +../coco/images/val2014/COCO_val2014_000000160556.jpg +../coco/images/val2014/COCO_val2014_000000160580.jpg +../coco/images/val2014/COCO_val2014_000000160607.jpg +../coco/images/val2014/COCO_val2014_000000160772.jpg +../coco/images/val2014/COCO_val2014_000000160828.jpg +../coco/images/val2014/COCO_val2014_000000160886.jpg +../coco/images/val2014/COCO_val2014_000000160941.jpg +../coco/images/val2014/COCO_val2014_000000161044.jpg +../coco/images/val2014/COCO_val2014_000000161060.jpg +../coco/images/val2014/COCO_val2014_000000161185.jpg +../coco/images/val2014/COCO_val2014_000000161231.jpg +../coco/images/val2014/COCO_val2014_000000161308.jpg +../coco/images/val2014/COCO_val2014_000000161781.jpg +../coco/images/val2014/COCO_val2014_000000161799.jpg +../coco/images/val2014/COCO_val2014_000000161810.jpg +../coco/images/val2014/COCO_val2014_000000161820.jpg +../coco/images/val2014/COCO_val2014_000000161861.jpg +../coco/images/val2014/COCO_val2014_000000161875.jpg +../coco/images/val2014/COCO_val2014_000000161990.jpg +../coco/images/val2014/COCO_val2014_000000162280.jpg +../coco/images/val2014/COCO_val2014_000000162445.jpg +../coco/images/val2014/COCO_val2014_000000162459.jpg +../coco/images/val2014/COCO_val2014_000000162530.jpg +../coco/images/val2014/COCO_val2014_000000162561.jpg +../coco/images/val2014/COCO_val2014_000000162580.jpg +../coco/images/val2014/COCO_val2014_000000162855.jpg +../coco/images/val2014/COCO_val2014_000000163012.jpg +../coco/images/val2014/COCO_val2014_000000163020.jpg +../coco/images/val2014/COCO_val2014_000000163138.jpg +../coco/images/val2014/COCO_val2014_000000163219.jpg +../coco/images/val2014/COCO_val2014_000000163260.jpg +../coco/images/val2014/COCO_val2014_000000163290.jpg +../coco/images/val2014/COCO_val2014_000000163316.jpg +../coco/images/val2014/COCO_val2014_000000163543.jpg +../coco/images/val2014/COCO_val2014_000000163775.jpg +../coco/images/val2014/COCO_val2014_000000164121.jpg +../coco/images/val2014/COCO_val2014_000000164366.jpg +../coco/images/val2014/COCO_val2014_000000164420.jpg +../coco/images/val2014/COCO_val2014_000000164440.jpg +../coco/images/val2014/COCO_val2014_000000164568.jpg +../coco/images/val2014/COCO_val2014_000000164835.jpg +../coco/images/val2014/COCO_val2014_000000164983.jpg +../coco/images/val2014/COCO_val2014_000000165035.jpg +../coco/images/val2014/COCO_val2014_000000165056.jpg +../coco/images/val2014/COCO_val2014_000000165157.jpg +../coco/images/val2014/COCO_val2014_000000165172.jpg +../coco/images/val2014/COCO_val2014_000000165353.jpg +../coco/images/val2014/COCO_val2014_000000165522.jpg +../coco/images/val2014/COCO_val2014_000000165752.jpg +../coco/images/val2014/COCO_val2014_000000165937.jpg +../coco/images/val2014/COCO_val2014_000000166320.jpg +../coco/images/val2014/COCO_val2014_000000166557.jpg +../coco/images/val2014/COCO_val2014_000000166565.jpg +../coco/images/val2014/COCO_val2014_000000166642.jpg +../coco/images/val2014/COCO_val2014_000000166645.jpg +../coco/images/val2014/COCO_val2014_000000166896.jpg +../coco/images/val2014/COCO_val2014_000000167044.jpg +../coco/images/val2014/COCO_val2014_000000167128.jpg +../coco/images/val2014/COCO_val2014_000000167152.jpg +../coco/images/val2014/COCO_val2014_000000167452.jpg +../coco/images/val2014/COCO_val2014_000000167583.jpg +../coco/images/val2014/COCO_val2014_000000167598.jpg +../coco/images/val2014/COCO_val2014_000000168031.jpg +../coco/images/val2014/COCO_val2014_000000168129.jpg +../coco/images/val2014/COCO_val2014_000000168353.jpg +../coco/images/val2014/COCO_val2014_000000168367.jpg +../coco/images/val2014/COCO_val2014_000000168455.jpg +../coco/images/val2014/COCO_val2014_000000168832.jpg +../coco/images/val2014/COCO_val2014_000000168837.jpg +../coco/images/val2014/COCO_val2014_000000168909.jpg +../coco/images/val2014/COCO_val2014_000000169076.jpg +../coco/images/val2014/COCO_val2014_000000169226.jpg +../coco/images/val2014/COCO_val2014_000000169505.jpg +../coco/images/val2014/COCO_val2014_000000169700.jpg +../coco/images/val2014/COCO_val2014_000000169757.jpg +../coco/images/val2014/COCO_val2014_000000169800.jpg +../coco/images/val2014/COCO_val2014_000000170015.jpg +../coco/images/val2014/COCO_val2014_000000170072.jpg +../coco/images/val2014/COCO_val2014_000000170173.jpg +../coco/images/val2014/COCO_val2014_000000170190.jpg +../coco/images/val2014/COCO_val2014_000000170194.jpg +../coco/images/val2014/COCO_val2014_000000170208.jpg +../coco/images/val2014/COCO_val2014_000000170278.jpg +../coco/images/val2014/COCO_val2014_000000170346.jpg +../coco/images/val2014/COCO_val2014_000000170401.jpg +../coco/images/val2014/COCO_val2014_000000170411.jpg +../coco/images/val2014/COCO_val2014_000000170442.jpg +../coco/images/val2014/COCO_val2014_000000170739.jpg +../coco/images/val2014/COCO_val2014_000000170813.jpg +../coco/images/val2014/COCO_val2014_000000170914.jpg +../coco/images/val2014/COCO_val2014_000000170950.jpg +../coco/images/val2014/COCO_val2014_000000170955.jpg +../coco/images/val2014/COCO_val2014_000000171335.jpg +../coco/images/val2014/COCO_val2014_000000171483.jpg +../coco/images/val2014/COCO_val2014_000000171548.jpg +../coco/images/val2014/COCO_val2014_000000171733.jpg +../coco/images/val2014/COCO_val2014_000000171942.jpg +../coco/images/val2014/COCO_val2014_000000172087.jpg +../coco/images/val2014/COCO_val2014_000000172616.jpg +../coco/images/val2014/COCO_val2014_000000172710.jpg +../coco/images/val2014/COCO_val2014_000000172877.jpg +../coco/images/val2014/COCO_val2014_000000172935.jpg +../coco/images/val2014/COCO_val2014_000000172946.jpg +../coco/images/val2014/COCO_val2014_000000173081.jpg +../coco/images/val2014/COCO_val2014_000000173166.jpg +../coco/images/val2014/COCO_val2014_000000173401.jpg +../coco/images/val2014/COCO_val2014_000000173434.jpg +../coco/images/val2014/COCO_val2014_000000173533.jpg +../coco/images/val2014/COCO_val2014_000000173565.jpg +../coco/images/val2014/COCO_val2014_000000173693.jpg +../coco/images/val2014/COCO_val2014_000000173737.jpg +../coco/images/val2014/COCO_val2014_000000173832.jpg +../coco/images/val2014/COCO_val2014_000000173897.jpg +../coco/images/val2014/COCO_val2014_000000174018.jpg +../coco/images/val2014/COCO_val2014_000000174425.jpg +../coco/images/val2014/COCO_val2014_000000174679.jpg +../coco/images/val2014/COCO_val2014_000000174690.jpg +../coco/images/val2014/COCO_val2014_000000174904.jpg +../coco/images/val2014/COCO_val2014_000000175570.jpg +../coco/images/val2014/COCO_val2014_000000175612.jpg +../coco/images/val2014/COCO_val2014_000000175825.jpg +../coco/images/val2014/COCO_val2014_000000175908.jpg +../coco/images/val2014/COCO_val2014_000000175948.jpg +../coco/images/val2014/COCO_val2014_000000176288.jpg +../coco/images/val2014/COCO_val2014_000000176362.jpg +../coco/images/val2014/COCO_val2014_000000176606.jpg +../coco/images/val2014/COCO_val2014_000000176696.jpg +../coco/images/val2014/COCO_val2014_000000176701.jpg +../coco/images/val2014/COCO_val2014_000000176744.jpg +../coco/images/val2014/COCO_val2014_000000176828.jpg +../coco/images/val2014/COCO_val2014_000000176906.jpg +../coco/images/val2014/COCO_val2014_000000177069.jpg +../coco/images/val2014/COCO_val2014_000000177149.jpg +../coco/images/val2014/COCO_val2014_000000177166.jpg +../coco/images/val2014/COCO_val2014_000000177173.jpg +../coco/images/val2014/COCO_val2014_000000177375.jpg +../coco/images/val2014/COCO_val2014_000000177452.jpg +../coco/images/val2014/COCO_val2014_000000177575.jpg +../coco/images/val2014/COCO_val2014_000000177802.jpg +../coco/images/val2014/COCO_val2014_000000177838.jpg +../coco/images/val2014/COCO_val2014_000000177856.jpg +../coco/images/val2014/COCO_val2014_000000177953.jpg +../coco/images/val2014/COCO_val2014_000000178084.jpg +../coco/images/val2014/COCO_val2014_000000178671.jpg +../coco/images/val2014/COCO_val2014_000000178810.jpg +../coco/images/val2014/COCO_val2014_000000179069.jpg +../coco/images/val2014/COCO_val2014_000000179112.jpg +../coco/images/val2014/COCO_val2014_000000179200.jpg +../coco/images/val2014/COCO_val2014_000000179229.jpg +../coco/images/val2014/COCO_val2014_000000179273.jpg +../coco/images/val2014/COCO_val2014_000000179392.jpg +../coco/images/val2014/COCO_val2014_000000179430.jpg +../coco/images/val2014/COCO_val2014_000000179487.jpg +../coco/images/val2014/COCO_val2014_000000179500.jpg +../coco/images/val2014/COCO_val2014_000000179578.jpg +../coco/images/val2014/COCO_val2014_000000179611.jpg +../coco/images/val2014/COCO_val2014_000000179642.jpg +../coco/images/val2014/COCO_val2014_000000179765.jpg +../coco/images/val2014/COCO_val2014_000000179930.jpg +../coco/images/val2014/COCO_val2014_000000180011.jpg +../coco/images/val2014/COCO_val2014_000000180154.jpg +../coco/images/val2014/COCO_val2014_000000180289.jpg +../coco/images/val2014/COCO_val2014_000000180479.jpg +../coco/images/val2014/COCO_val2014_000000180541.jpg +../coco/images/val2014/COCO_val2014_000000180830.jpg +../coco/images/val2014/COCO_val2014_000000180917.jpg +../coco/images/val2014/COCO_val2014_000000181256.jpg +../coco/images/val2014/COCO_val2014_000000181296.jpg +../coco/images/val2014/COCO_val2014_000000181303.jpg +../coco/images/val2014/COCO_val2014_000000181359.jpg +../coco/images/val2014/COCO_val2014_000000181449.jpg +../coco/images/val2014/COCO_val2014_000000181485.jpg +../coco/images/val2014/COCO_val2014_000000181572.jpg +../coco/images/val2014/COCO_val2014_000000181586.jpg +../coco/images/val2014/COCO_val2014_000000181714.jpg +../coco/images/val2014/COCO_val2014_000000181745.jpg +../coco/images/val2014/COCO_val2014_000000181969.jpg +../coco/images/val2014/COCO_val2014_000000182021.jpg +../coco/images/val2014/COCO_val2014_000000182155.jpg +../coco/images/val2014/COCO_val2014_000000182240.jpg +../coco/images/val2014/COCO_val2014_000000182362.jpg +../coco/images/val2014/COCO_val2014_000000182369.jpg +../coco/images/val2014/COCO_val2014_000000182398.jpg +../coco/images/val2014/COCO_val2014_000000182483.jpg +../coco/images/val2014/COCO_val2014_000000182523.jpg +../coco/images/val2014/COCO_val2014_000000182681.jpg +../coco/images/val2014/COCO_val2014_000000182874.jpg +../coco/images/val2014/COCO_val2014_000000183187.jpg +../coco/images/val2014/COCO_val2014_000000183199.jpg +../coco/images/val2014/COCO_val2014_000000183217.jpg +../coco/images/val2014/COCO_val2014_000000183348.jpg +../coco/images/val2014/COCO_val2014_000000183359.jpg +../coco/images/val2014/COCO_val2014_000000183364.jpg +../coco/images/val2014/COCO_val2014_000000183469.jpg +../coco/images/val2014/COCO_val2014_000000183571.jpg +../coco/images/val2014/COCO_val2014_000000183701.jpg +../coco/images/val2014/COCO_val2014_000000183716.jpg +../coco/images/val2014/COCO_val2014_000000183843.jpg +../coco/images/val2014/COCO_val2014_000000184276.jpg +../coco/images/val2014/COCO_val2014_000000184359.jpg +../coco/images/val2014/COCO_val2014_000000184590.jpg +../coco/images/val2014/COCO_val2014_000000185095.jpg +../coco/images/val2014/COCO_val2014_000000185156.jpg +../coco/images/val2014/COCO_val2014_000000185303.jpg +../coco/images/val2014/COCO_val2014_000000185366.jpg +../coco/images/val2014/COCO_val2014_000000185397.jpg +../coco/images/val2014/COCO_val2014_000000185472.jpg +../coco/images/val2014/COCO_val2014_000000185559.jpg +../coco/images/val2014/COCO_val2014_000000185620.jpg +../coco/images/val2014/COCO_val2014_000000185621.jpg +../coco/images/val2014/COCO_val2014_000000185697.jpg +../coco/images/val2014/COCO_val2014_000000185721.jpg +../coco/images/val2014/COCO_val2014_000000185756.jpg +../coco/images/val2014/COCO_val2014_000000185802.jpg +../coco/images/val2014/COCO_val2014_000000185890.jpg +../coco/images/val2014/COCO_val2014_000000185916.jpg +../coco/images/val2014/COCO_val2014_000000185988.jpg +../coco/images/val2014/COCO_val2014_000000186079.jpg +../coco/images/val2014/COCO_val2014_000000186125.jpg +../coco/images/val2014/COCO_val2014_000000186413.jpg +../coco/images/val2014/COCO_val2014_000000186422.jpg +../coco/images/val2014/COCO_val2014_000000186637.jpg +../coco/images/val2014/COCO_val2014_000000186788.jpg +../coco/images/val2014/COCO_val2014_000000186873.jpg +../coco/images/val2014/COCO_val2014_000000186977.jpg +../coco/images/val2014/COCO_val2014_000000186991.jpg +../coco/images/val2014/COCO_val2014_000000187036.jpg +../coco/images/val2014/COCO_val2014_000000187054.jpg +../coco/images/val2014/COCO_val2014_000000187199.jpg +../coco/images/val2014/COCO_val2014_000000187236.jpg +../coco/images/val2014/COCO_val2014_000000187249.jpg +../coco/images/val2014/COCO_val2014_000000187349.jpg +../coco/images/val2014/COCO_val2014_000000187424.jpg +../coco/images/val2014/COCO_val2014_000000187513.jpg +../coco/images/val2014/COCO_val2014_000000187533.jpg +../coco/images/val2014/COCO_val2014_000000188084.jpg +../coco/images/val2014/COCO_val2014_000000188109.jpg +../coco/images/val2014/COCO_val2014_000000188132.jpg +../coco/images/val2014/COCO_val2014_000000188311.jpg +../coco/images/val2014/COCO_val2014_000000188346.jpg +../coco/images/val2014/COCO_val2014_000000188439.jpg +../coco/images/val2014/COCO_val2014_000000188460.jpg +../coco/images/val2014/COCO_val2014_000000188534.jpg +../coco/images/val2014/COCO_val2014_000000188592.jpg +../coco/images/val2014/COCO_val2014_000000188616.jpg +../coco/images/val2014/COCO_val2014_000000188667.jpg +../coco/images/val2014/COCO_val2014_000000188852.jpg +../coco/images/val2014/COCO_val2014_000000188918.jpg +../coco/images/val2014/COCO_val2014_000000188948.jpg +../coco/images/val2014/COCO_val2014_000000189067.jpg +../coco/images/val2014/COCO_val2014_000000189078.jpg +../coco/images/val2014/COCO_val2014_000000189203.jpg +../coco/images/val2014/COCO_val2014_000000189305.jpg +../coco/images/val2014/COCO_val2014_000000189365.jpg +../coco/images/val2014/COCO_val2014_000000189368.jpg +../coco/images/val2014/COCO_val2014_000000189371.jpg +../coco/images/val2014/COCO_val2014_000000189427.jpg +../coco/images/val2014/COCO_val2014_000000189436.jpg +../coco/images/val2014/COCO_val2014_000000189566.jpg +../coco/images/val2014/COCO_val2014_000000189634.jpg +../coco/images/val2014/COCO_val2014_000000189714.jpg +../coco/images/val2014/COCO_val2014_000000190204.jpg +../coco/images/val2014/COCO_val2014_000000190395.jpg +../coco/images/val2014/COCO_val2014_000000190432.jpg +../coco/images/val2014/COCO_val2014_000000190441.jpg +../coco/images/val2014/COCO_val2014_000000190546.jpg +../coco/images/val2014/COCO_val2014_000000190595.jpg +../coco/images/val2014/COCO_val2014_000000190700.jpg +../coco/images/val2014/COCO_val2014_000000190753.jpg +../coco/images/val2014/COCO_val2014_000000190767.jpg +../coco/images/val2014/COCO_val2014_000000190776.jpg +../coco/images/val2014/COCO_val2014_000000190841.jpg +../coco/images/val2014/COCO_val2014_000000190853.jpg +../coco/images/val2014/COCO_val2014_000000191013.jpg +../coco/images/val2014/COCO_val2014_000000191096.jpg +../coco/images/val2014/COCO_val2014_000000191117.jpg +../coco/images/val2014/COCO_val2014_000000191169.jpg +../coco/images/val2014/COCO_val2014_000000191296.jpg +../coco/images/val2014/COCO_val2014_000000191300.jpg +../coco/images/val2014/COCO_val2014_000000191390.jpg +../coco/images/val2014/COCO_val2014_000000191533.jpg +../coco/images/val2014/COCO_val2014_000000191761.jpg +../coco/images/val2014/COCO_val2014_000000191919.jpg +../coco/images/val2014/COCO_val2014_000000192007.jpg +../coco/images/val2014/COCO_val2014_000000192153.jpg +../coco/images/val2014/COCO_val2014_000000192154.jpg +../coco/images/val2014/COCO_val2014_000000192212.jpg +../coco/images/val2014/COCO_val2014_000000192440.jpg +../coco/images/val2014/COCO_val2014_000000192479.jpg +../coco/images/val2014/COCO_val2014_000000192607.jpg +../coco/images/val2014/COCO_val2014_000000192716.jpg +../coco/images/val2014/COCO_val2014_000000192730.jpg +../coco/images/val2014/COCO_val2014_000000192788.jpg +../coco/images/val2014/COCO_val2014_000000192817.jpg +../coco/images/val2014/COCO_val2014_000000192834.jpg +../coco/images/val2014/COCO_val2014_000000193015.jpg +../coco/images/val2014/COCO_val2014_000000193108.jpg +../coco/images/val2014/COCO_val2014_000000193245.jpg +../coco/images/val2014/COCO_val2014_000000193271.jpg +../coco/images/val2014/COCO_val2014_000000193332.jpg +../coco/images/val2014/COCO_val2014_000000193380.jpg +../coco/images/val2014/COCO_val2014_000000193405.jpg +../coco/images/val2014/COCO_val2014_000000193661.jpg +../coco/images/val2014/COCO_val2014_000000193798.jpg +../coco/images/val2014/COCO_val2014_000000193881.jpg +../coco/images/val2014/COCO_val2014_000000194158.jpg +../coco/images/val2014/COCO_val2014_000000194306.jpg +../coco/images/val2014/COCO_val2014_000000194704.jpg +../coco/images/val2014/COCO_val2014_000000194790.jpg +../coco/images/val2014/COCO_val2014_000000194875.jpg +../coco/images/val2014/COCO_val2014_000000195079.jpg +../coco/images/val2014/COCO_val2014_000000195267.jpg +../coco/images/val2014/COCO_val2014_000000195271.jpg +../coco/images/val2014/COCO_val2014_000000195281.jpg +../coco/images/val2014/COCO_val2014_000000195798.jpg +../coco/images/val2014/COCO_val2014_000000195851.jpg +../coco/images/val2014/COCO_val2014_000000195897.jpg +../coco/images/val2014/COCO_val2014_000000196085.jpg +../coco/images/val2014/COCO_val2014_000000196141.jpg +../coco/images/val2014/COCO_val2014_000000196295.jpg +../coco/images/val2014/COCO_val2014_000000196311.jpg +../coco/images/val2014/COCO_val2014_000000196313.jpg +../coco/images/val2014/COCO_val2014_000000196355.jpg +../coco/images/val2014/COCO_val2014_000000196415.jpg +../coco/images/val2014/COCO_val2014_000000196453.jpg +../coco/images/val2014/COCO_val2014_000000196681.jpg +../coco/images/val2014/COCO_val2014_000000196754.jpg +../coco/images/val2014/COCO_val2014_000000196798.jpg +../coco/images/val2014/COCO_val2014_000000196852.jpg +../coco/images/val2014/COCO_val2014_000000197022.jpg +../coco/images/val2014/COCO_val2014_000000197097.jpg +../coco/images/val2014/COCO_val2014_000000197191.jpg +../coco/images/val2014/COCO_val2014_000000197266.jpg +../coco/images/val2014/COCO_val2014_000000197278.jpg +../coco/images/val2014/COCO_val2014_000000197528.jpg +../coco/images/val2014/COCO_val2014_000000197609.jpg +../coco/images/val2014/COCO_val2014_000000197652.jpg +../coco/images/val2014/COCO_val2014_000000197683.jpg +../coco/images/val2014/COCO_val2014_000000197796.jpg +../coco/images/val2014/COCO_val2014_000000197918.jpg +../coco/images/val2014/COCO_val2014_000000198075.jpg +../coco/images/val2014/COCO_val2014_000000198139.jpg +../coco/images/val2014/COCO_val2014_000000198223.jpg +../coco/images/val2014/COCO_val2014_000000198367.jpg +../coco/images/val2014/COCO_val2014_000000198464.jpg +../coco/images/val2014/COCO_val2014_000000198495.jpg +../coco/images/val2014/COCO_val2014_000000198641.jpg +../coco/images/val2014/COCO_val2014_000000198645.jpg +../coco/images/val2014/COCO_val2014_000000198752.jpg +../coco/images/val2014/COCO_val2014_000000198805.jpg +../coco/images/val2014/COCO_val2014_000000198811.jpg +../coco/images/val2014/COCO_val2014_000000199125.jpg +../coco/images/val2014/COCO_val2014_000000199203.jpg +../coco/images/val2014/COCO_val2014_000000199358.jpg +../coco/images/val2014/COCO_val2014_000000199389.jpg +../coco/images/val2014/COCO_val2014_000000199437.jpg +../coco/images/val2014/COCO_val2014_000000199449.jpg +../coco/images/val2014/COCO_val2014_000000199481.jpg +../coco/images/val2014/COCO_val2014_000000199575.jpg +../coco/images/val2014/COCO_val2014_000000199602.jpg +../coco/images/val2014/COCO_val2014_000000199771.jpg +../coco/images/val2014/COCO_val2014_000000199951.jpg +../coco/images/val2014/COCO_val2014_000000200109.jpg +../coco/images/val2014/COCO_val2014_000000200252.jpg +../coco/images/val2014/COCO_val2014_000000200267.jpg +../coco/images/val2014/COCO_val2014_000000200296.jpg +../coco/images/val2014/COCO_val2014_000000200457.jpg +../coco/images/val2014/COCO_val2014_000000200572.jpg +../coco/images/val2014/COCO_val2014_000000200638.jpg +../coco/images/val2014/COCO_val2014_000000200667.jpg +../coco/images/val2014/COCO_val2014_000000200703.jpg +../coco/images/val2014/COCO_val2014_000000200720.jpg +../coco/images/val2014/COCO_val2014_000000200725.jpg +../coco/images/val2014/COCO_val2014_000000200739.jpg +../coco/images/val2014/COCO_val2014_000000201111.jpg +../coco/images/val2014/COCO_val2014_000000201220.jpg +../coco/images/val2014/COCO_val2014_000000201348.jpg +../coco/images/val2014/COCO_val2014_000000201452.jpg +../coco/images/val2014/COCO_val2014_000000201646.jpg +../coco/images/val2014/COCO_val2014_000000201676.jpg +../coco/images/val2014/COCO_val2014_000000201918.jpg +../coco/images/val2014/COCO_val2014_000000201934.jpg +../coco/images/val2014/COCO_val2014_000000201970.jpg +../coco/images/val2014/COCO_val2014_000000202138.jpg +../coco/images/val2014/COCO_val2014_000000202339.jpg +../coco/images/val2014/COCO_val2014_000000202503.jpg +../coco/images/val2014/COCO_val2014_000000202658.jpg +../coco/images/val2014/COCO_val2014_000000202797.jpg +../coco/images/val2014/COCO_val2014_000000202799.jpg +../coco/images/val2014/COCO_val2014_000000202944.jpg +../coco/images/val2014/COCO_val2014_000000203061.jpg +../coco/images/val2014/COCO_val2014_000000203095.jpg +../coco/images/val2014/COCO_val2014_000000203299.jpg +../coco/images/val2014/COCO_val2014_000000203382.jpg +../coco/images/val2014/COCO_val2014_000000203416.jpg +../coco/images/val2014/COCO_val2014_000000203460.jpg +../coco/images/val2014/COCO_val2014_000000203483.jpg +../coco/images/val2014/COCO_val2014_000000203661.jpg +../coco/images/val2014/COCO_val2014_000000203845.jpg +../coco/images/val2014/COCO_val2014_000000203846.jpg +../coco/images/val2014/COCO_val2014_000000204036.jpg +../coco/images/val2014/COCO_val2014_000000204098.jpg +../coco/images/val2014/COCO_val2014_000000204232.jpg +../coco/images/val2014/COCO_val2014_000000204256.jpg +../coco/images/val2014/COCO_val2014_000000204360.jpg +../coco/images/val2014/COCO_val2014_000000204448.jpg +../coco/images/val2014/COCO_val2014_000000204502.jpg +../coco/images/val2014/COCO_val2014_000000204935.jpg +../coco/images/val2014/COCO_val2014_000000205222.jpg +../coco/images/val2014/COCO_val2014_000000205251.jpg +../coco/images/val2014/COCO_val2014_000000205258.jpg +../coco/images/val2014/COCO_val2014_000000205289.jpg +../coco/images/val2014/COCO_val2014_000000205300.jpg +../coco/images/val2014/COCO_val2014_000000205409.jpg +../coco/images/val2014/COCO_val2014_000000205594.jpg +../coco/images/val2014/COCO_val2014_000000205605.jpg +../coco/images/val2014/COCO_val2014_000000205676.jpg +../coco/images/val2014/COCO_val2014_000000205776.jpg +../coco/images/val2014/COCO_val2014_000000205782.jpg +../coco/images/val2014/COCO_val2014_000000205911.jpg +../coco/images/val2014/COCO_val2014_000000206025.jpg +../coco/images/val2014/COCO_val2014_000000206027.jpg +../coco/images/val2014/COCO_val2014_000000206135.jpg +../coco/images/val2014/COCO_val2014_000000206271.jpg +../coco/images/val2014/COCO_val2014_000000206411.jpg +../coco/images/val2014/COCO_val2014_000000206770.jpg +../coco/images/val2014/COCO_val2014_000000206958.jpg +../coco/images/val2014/COCO_val2014_000000207041.jpg +../coco/images/val2014/COCO_val2014_000000207059.jpg +../coco/images/val2014/COCO_val2014_000000207060.jpg +../coco/images/val2014/COCO_val2014_000000207180.jpg +../coco/images/val2014/COCO_val2014_000000207205.jpg +../coco/images/val2014/COCO_val2014_000000207323.jpg +../coco/images/val2014/COCO_val2014_000000207507.jpg +../coco/images/val2014/COCO_val2014_000000207509.jpg +../coco/images/val2014/COCO_val2014_000000207585.jpg +../coco/images/val2014/COCO_val2014_000000207634.jpg +../coco/images/val2014/COCO_val2014_000000207670.jpg +../coco/images/val2014/COCO_val2014_000000207898.jpg +../coco/images/val2014/COCO_val2014_000000207925.jpg +../coco/images/val2014/COCO_val2014_000000208012.jpg +../coco/images/val2014/COCO_val2014_000000208283.jpg +../coco/images/val2014/COCO_val2014_000000208311.jpg +../coco/images/val2014/COCO_val2014_000000208376.jpg +../coco/images/val2014/COCO_val2014_000000208417.jpg +../coco/images/val2014/COCO_val2014_000000208524.jpg +../coco/images/val2014/COCO_val2014_000000208663.jpg +../coco/images/val2014/COCO_val2014_000000208793.jpg +../coco/images/val2014/COCO_val2014_000000209007.jpg +../coco/images/val2014/COCO_val2014_000000209015.jpg +../coco/images/val2014/COCO_val2014_000000209142.jpg +../coco/images/val2014/COCO_val2014_000000209162.jpg +../coco/images/val2014/COCO_val2014_000000209286.jpg +../coco/images/val2014/COCO_val2014_000000209441.jpg +../coco/images/val2014/COCO_val2014_000000209530.jpg +../coco/images/val2014/COCO_val2014_000000209733.jpg +../coco/images/val2014/COCO_val2014_000000209773.jpg +../coco/images/val2014/COCO_val2014_000000209808.jpg +../coco/images/val2014/COCO_val2014_000000209864.jpg +../coco/images/val2014/COCO_val2014_000000210299.jpg +../coco/images/val2014/COCO_val2014_000000210374.jpg +../coco/images/val2014/COCO_val2014_000000210408.jpg +../coco/images/val2014/COCO_val2014_000000210439.jpg +../coco/images/val2014/COCO_val2014_000000210457.jpg +../coco/images/val2014/COCO_val2014_000000210458.jpg +../coco/images/val2014/COCO_val2014_000000210520.jpg +../coco/images/val2014/COCO_val2014_000000210671.jpg +../coco/images/val2014/COCO_val2014_000000210749.jpg +../coco/images/val2014/COCO_val2014_000000210855.jpg +../coco/images/val2014/COCO_val2014_000000210883.jpg +../coco/images/val2014/COCO_val2014_000000211063.jpg +../coco/images/val2014/COCO_val2014_000000211163.jpg +../coco/images/val2014/COCO_val2014_000000211186.jpg +../coco/images/val2014/COCO_val2014_000000211192.jpg +../coco/images/val2014/COCO_val2014_000000211215.jpg +../coco/images/val2014/COCO_val2014_000000211498.jpg +../coco/images/val2014/COCO_val2014_000000211775.jpg +../coco/images/val2014/COCO_val2014_000000212054.jpg +../coco/images/val2014/COCO_val2014_000000212072.jpg +../coco/images/val2014/COCO_val2014_000000212077.jpg +../coco/images/val2014/COCO_val2014_000000212080.jpg +../coco/images/val2014/COCO_val2014_000000212166.jpg +../coco/images/val2014/COCO_val2014_000000212346.jpg +../coco/images/val2014/COCO_val2014_000000212470.jpg +../coco/images/val2014/COCO_val2014_000000212559.jpg +../coco/images/val2014/COCO_val2014_000000212647.jpg +../coco/images/val2014/COCO_val2014_000000212688.jpg +../coco/images/val2014/COCO_val2014_000000212739.jpg +../coco/images/val2014/COCO_val2014_000000212817.jpg +../coco/images/val2014/COCO_val2014_000000213033.jpg +../coco/images/val2014/COCO_val2014_000000213224.jpg +../coco/images/val2014/COCO_val2014_000000213359.jpg +../coco/images/val2014/COCO_val2014_000000213361.jpg +../coco/images/val2014/COCO_val2014_000000213434.jpg +../coco/images/val2014/COCO_val2014_000000213758.jpg +../coco/images/val2014/COCO_val2014_000000213830.jpg +../coco/images/val2014/COCO_val2014_000000213843.jpg +../coco/images/val2014/COCO_val2014_000000213961.jpg +../coco/images/val2014/COCO_val2014_000000214274.jpg +../coco/images/val2014/COCO_val2014_000000214306.jpg +../coco/images/val2014/COCO_val2014_000000214853.jpg +../coco/images/val2014/COCO_val2014_000000214961.jpg +../coco/images/val2014/COCO_val2014_000000215062.jpg +../coco/images/val2014/COCO_val2014_000000215255.jpg +../coco/images/val2014/COCO_val2014_000000215259.jpg +../coco/images/val2014/COCO_val2014_000000215394.jpg +../coco/images/val2014/COCO_val2014_000000215408.jpg +../coco/images/val2014/COCO_val2014_000000215471.jpg +../coco/images/val2014/COCO_val2014_000000215554.jpg +../coco/images/val2014/COCO_val2014_000000215565.jpg +../coco/images/val2014/COCO_val2014_000000215579.jpg +../coco/images/val2014/COCO_val2014_000000215708.jpg +../coco/images/val2014/COCO_val2014_000000215812.jpg +../coco/images/val2014/COCO_val2014_000000215826.jpg +../coco/images/val2014/COCO_val2014_000000216096.jpg +../coco/images/val2014/COCO_val2014_000000216198.jpg +../coco/images/val2014/COCO_val2014_000000216235.jpg +../coco/images/val2014/COCO_val2014_000000216581.jpg +../coco/images/val2014/COCO_val2014_000000216710.jpg +../coco/images/val2014/COCO_val2014_000000216837.jpg +../coco/images/val2014/COCO_val2014_000000216841.jpg +../coco/images/val2014/COCO_val2014_000000217016.jpg +../coco/images/val2014/COCO_val2014_000000217269.jpg +../coco/images/val2014/COCO_val2014_000000217285.jpg +../coco/images/val2014/COCO_val2014_000000217303.jpg +../coco/images/val2014/COCO_val2014_000000217562.jpg +../coco/images/val2014/COCO_val2014_000000217951.jpg +../coco/images/val2014/COCO_val2014_000000218220.jpg +../coco/images/val2014/COCO_val2014_000000218310.jpg +../coco/images/val2014/COCO_val2014_000000218404.jpg +../coco/images/val2014/COCO_val2014_000000218439.jpg +../coco/images/val2014/COCO_val2014_000000218678.jpg +../coco/images/val2014/COCO_val2014_000000218687.jpg +../coco/images/val2014/COCO_val2014_000000218926.jpg +../coco/images/val2014/COCO_val2014_000000218947.jpg +../coco/images/val2014/COCO_val2014_000000219075.jpg +../coco/images/val2014/COCO_val2014_000000219170.jpg +../coco/images/val2014/COCO_val2014_000000219393.jpg +../coco/images/val2014/COCO_val2014_000000219514.jpg +../coco/images/val2014/COCO_val2014_000000219578.jpg +../coco/images/val2014/COCO_val2014_000000219657.jpg +../coco/images/val2014/COCO_val2014_000000220041.jpg +../coco/images/val2014/COCO_val2014_000000220182.jpg +../coco/images/val2014/COCO_val2014_000000220215.jpg +../coco/images/val2014/COCO_val2014_000000220307.jpg +../coco/images/val2014/COCO_val2014_000000220511.jpg +../coco/images/val2014/COCO_val2014_000000220808.jpg +../coco/images/val2014/COCO_val2014_000000221000.jpg +../coco/images/val2014/COCO_val2014_000000221094.jpg +../coco/images/val2014/COCO_val2014_000000221155.jpg +../coco/images/val2014/COCO_val2014_000000221303.jpg +../coco/images/val2014/COCO_val2014_000000221561.jpg +../coco/images/val2014/COCO_val2014_000000221605.jpg +../coco/images/val2014/COCO_val2014_000000221620.jpg +../coco/images/val2014/COCO_val2014_000000221669.jpg +../coco/images/val2014/COCO_val2014_000000221708.jpg +../coco/images/val2014/COCO_val2014_000000221882.jpg +../coco/images/val2014/COCO_val2014_000000222043.jpg +../coco/images/val2014/COCO_val2014_000000222317.jpg +../coco/images/val2014/COCO_val2014_000000222407.jpg +../coco/images/val2014/COCO_val2014_000000222494.jpg +../coco/images/val2014/COCO_val2014_000000222863.jpg +../coco/images/val2014/COCO_val2014_000000222903.jpg +../coco/images/val2014/COCO_val2014_000000223032.jpg +../coco/images/val2014/COCO_val2014_000000223276.jpg +../coco/images/val2014/COCO_val2014_000000223289.jpg +../coco/images/val2014/COCO_val2014_000000223314.jpg +../coco/images/val2014/COCO_val2014_000000223414.jpg +../coco/images/val2014/COCO_val2014_000000223747.jpg +../coco/images/val2014/COCO_val2014_000000223777.jpg +../coco/images/val2014/COCO_val2014_000000223930.jpg +../coco/images/val2014/COCO_val2014_000000224093.jpg +../coco/images/val2014/COCO_val2014_000000224111.jpg +../coco/images/val2014/COCO_val2014_000000224222.jpg +../coco/images/val2014/COCO_val2014_000000224238.jpg +../coco/images/val2014/COCO_val2014_000000224523.jpg +../coco/images/val2014/COCO_val2014_000000224693.jpg +../coco/images/val2014/COCO_val2014_000000224724.jpg +../coco/images/val2014/COCO_val2014_000000224742.jpg +../coco/images/val2014/COCO_val2014_000000224848.jpg +../coco/images/val2014/COCO_val2014_000000225175.jpg +../coco/images/val2014/COCO_val2014_000000225312.jpg +../coco/images/val2014/COCO_val2014_000000225518.jpg +../coco/images/val2014/COCO_val2014_000000225537.jpg +../coco/images/val2014/COCO_val2014_000000225603.jpg +../coco/images/val2014/COCO_val2014_000000225867.jpg +../coco/images/val2014/COCO_val2014_000000225916.jpg +../coco/images/val2014/COCO_val2014_000000226154.jpg +../coco/images/val2014/COCO_val2014_000000226220.jpg +../coco/images/val2014/COCO_val2014_000000226408.jpg +../coco/images/val2014/COCO_val2014_000000226417.jpg +../coco/images/val2014/COCO_val2014_000000226419.jpg +../coco/images/val2014/COCO_val2014_000000226496.jpg +../coco/images/val2014/COCO_val2014_000000226498.jpg +../coco/images/val2014/COCO_val2014_000000226571.jpg +../coco/images/val2014/COCO_val2014_000000226579.jpg +../coco/images/val2014/COCO_val2014_000000226588.jpg +../coco/images/val2014/COCO_val2014_000000226662.jpg +../coco/images/val2014/COCO_val2014_000000226744.jpg +../coco/images/val2014/COCO_val2014_000000226848.jpg +../coco/images/val2014/COCO_val2014_000000226917.jpg +../coco/images/val2014/COCO_val2014_000000226967.jpg +../coco/images/val2014/COCO_val2014_000000227032.jpg +../coco/images/val2014/COCO_val2014_000000227048.jpg +../coco/images/val2014/COCO_val2014_000000227125.jpg +../coco/images/val2014/COCO_val2014_000000227220.jpg +../coco/images/val2014/COCO_val2014_000000227227.jpg +../coco/images/val2014/COCO_val2014_000000227413.jpg +../coco/images/val2014/COCO_val2014_000000227468.jpg +../coco/images/val2014/COCO_val2014_000000227511.jpg +../coco/images/val2014/COCO_val2014_000000227656.jpg +../coco/images/val2014/COCO_val2014_000000227709.jpg +../coco/images/val2014/COCO_val2014_000000227741.jpg +../coco/images/val2014/COCO_val2014_000000228011.jpg +../coco/images/val2014/COCO_val2014_000000228013.jpg +../coco/images/val2014/COCO_val2014_000000228197.jpg +../coco/images/val2014/COCO_val2014_000000228558.jpg +../coco/images/val2014/COCO_val2014_000000228746.jpg +../coco/images/val2014/COCO_val2014_000000228771.jpg +../coco/images/val2014/COCO_val2014_000000229000.jpg +../coco/images/val2014/COCO_val2014_000000229221.jpg +../coco/images/val2014/COCO_val2014_000000229234.jpg +../coco/images/val2014/COCO_val2014_000000229286.jpg +../coco/images/val2014/COCO_val2014_000000229383.jpg +../coco/images/val2014/COCO_val2014_000000229387.jpg +../coco/images/val2014/COCO_val2014_000000229553.jpg +../coco/images/val2014/COCO_val2014_000000229631.jpg +../coco/images/val2014/COCO_val2014_000000229713.jpg +../coco/images/val2014/COCO_val2014_000000230040.jpg +../coco/images/val2014/COCO_val2014_000000230265.jpg +../coco/images/val2014/COCO_val2014_000000230432.jpg +../coco/images/val2014/COCO_val2014_000000230450.jpg +../coco/images/val2014/COCO_val2014_000000230454.jpg +../coco/images/val2014/COCO_val2014_000000230615.jpg +../coco/images/val2014/COCO_val2014_000000230619.jpg +../coco/images/val2014/COCO_val2014_000000230679.jpg +../coco/images/val2014/COCO_val2014_000000230701.jpg +../coco/images/val2014/COCO_val2014_000000230739.jpg +../coco/images/val2014/COCO_val2014_000000230780.jpg +../coco/images/val2014/COCO_val2014_000000230964.jpg +../coco/images/val2014/COCO_val2014_000000231364.jpg +../coco/images/val2014/COCO_val2014_000000231450.jpg +../coco/images/val2014/COCO_val2014_000000231508.jpg +../coco/images/val2014/COCO_val2014_000000231991.jpg +../coco/images/val2014/COCO_val2014_000000232073.jpg +../coco/images/val2014/COCO_val2014_000000232088.jpg +../coco/images/val2014/COCO_val2014_000000232121.jpg +../coco/images/val2014/COCO_val2014_000000232287.jpg +../coco/images/val2014/COCO_val2014_000000232453.jpg +../coco/images/val2014/COCO_val2014_000000232597.jpg +../coco/images/val2014/COCO_val2014_000000232610.jpg +../coco/images/val2014/COCO_val2014_000000232865.jpg +../coco/images/val2014/COCO_val2014_000000233042.jpg +../coco/images/val2014/COCO_val2014_000000233090.jpg +../coco/images/val2014/COCO_val2014_000000233305.jpg +../coco/images/val2014/COCO_val2014_000000233315.jpg +../coco/images/val2014/COCO_val2014_000000233327.jpg +../coco/images/val2014/COCO_val2014_000000233376.jpg +../coco/images/val2014/COCO_val2014_000000233446.jpg +../coco/images/val2014/COCO_val2014_000000233556.jpg +../coco/images/val2014/COCO_val2014_000000233567.jpg +../coco/images/val2014/COCO_val2014_000000233727.jpg +../coco/images/val2014/COCO_val2014_000000233919.jpg +../coco/images/val2014/COCO_val2014_000000233950.jpg +../coco/images/val2014/COCO_val2014_000000233961.jpg +../coco/images/val2014/COCO_val2014_000000233968.jpg +../coco/images/val2014/COCO_val2014_000000234182.jpg +../coco/images/val2014/COCO_val2014_000000234251.jpg +../coco/images/val2014/COCO_val2014_000000234370.jpg +../coco/images/val2014/COCO_val2014_000000234463.jpg +../coco/images/val2014/COCO_val2014_000000234766.jpg +../coco/images/val2014/COCO_val2014_000000234779.jpg +../coco/images/val2014/COCO_val2014_000000234928.jpg +../coco/images/val2014/COCO_val2014_000000235124.jpg +../coco/images/val2014/COCO_val2014_000000235239.jpg +../coco/images/val2014/COCO_val2014_000000235380.jpg +../coco/images/val2014/COCO_val2014_000000235575.jpg +../coco/images/val2014/COCO_val2014_000000235788.jpg +../coco/images/val2014/COCO_val2014_000000235790.jpg +../coco/images/val2014/COCO_val2014_000000235791.jpg +../coco/images/val2014/COCO_val2014_000000235839.jpg +../coco/images/val2014/COCO_val2014_000000235933.jpg +../coco/images/val2014/COCO_val2014_000000236010.jpg +../coco/images/val2014/COCO_val2014_000000236068.jpg +../coco/images/val2014/COCO_val2014_000000236323.jpg +../coco/images/val2014/COCO_val2014_000000236535.jpg +../coco/images/val2014/COCO_val2014_000000236714.jpg +../coco/images/val2014/COCO_val2014_000000236766.jpg +../coco/images/val2014/COCO_val2014_000000236874.jpg +../coco/images/val2014/COCO_val2014_000000236945.jpg +../coco/images/val2014/COCO_val2014_000000236951.jpg +../coco/images/val2014/COCO_val2014_000000236985.jpg +../coco/images/val2014/COCO_val2014_000000237230.jpg +../coco/images/val2014/COCO_val2014_000000237277.jpg +../coco/images/val2014/COCO_val2014_000000237316.jpg +../coco/images/val2014/COCO_val2014_000000237357.jpg +../coco/images/val2014/COCO_val2014_000000237476.jpg +../coco/images/val2014/COCO_val2014_000000237723.jpg +../coco/images/val2014/COCO_val2014_000000237777.jpg +../coco/images/val2014/COCO_val2014_000000237920.jpg +../coco/images/val2014/COCO_val2014_000000237984.jpg +../coco/images/val2014/COCO_val2014_000000238389.jpg +../coco/images/val2014/COCO_val2014_000000238573.jpg +../coco/images/val2014/COCO_val2014_000000238598.jpg +../coco/images/val2014/COCO_val2014_000000238700.jpg +../coco/images/val2014/COCO_val2014_000000238806.jpg +../coco/images/val2014/COCO_val2014_000000239145.jpg +../coco/images/val2014/COCO_val2014_000000239148.jpg +../coco/images/val2014/COCO_val2014_000000239318.jpg +../coco/images/val2014/COCO_val2014_000000239656.jpg +../coco/images/val2014/COCO_val2014_000000240102.jpg +../coco/images/val2014/COCO_val2014_000000240393.jpg +../coco/images/val2014/COCO_val2014_000000240403.jpg +../coco/images/val2014/COCO_val2014_000000240739.jpg +../coco/images/val2014/COCO_val2014_000000240754.jpg +../coco/images/val2014/COCO_val2014_000000240903.jpg +../coco/images/val2014/COCO_val2014_000000240918.jpg +../coco/images/val2014/COCO_val2014_000000240960.jpg +../coco/images/val2014/COCO_val2014_000000241113.jpg +../coco/images/val2014/COCO_val2014_000000241187.jpg +../coco/images/val2014/COCO_val2014_000000241291.jpg +../coco/images/val2014/COCO_val2014_000000241319.jpg +../coco/images/val2014/COCO_val2014_000000241396.jpg +../coco/images/val2014/COCO_val2014_000000241517.jpg +../coco/images/val2014/COCO_val2014_000000241638.jpg +../coco/images/val2014/COCO_val2014_000000241677.jpg +../coco/images/val2014/COCO_val2014_000000241728.jpg +../coco/images/val2014/COCO_val2014_000000241868.jpg +../coco/images/val2014/COCO_val2014_000000241889.jpg +../coco/images/val2014/COCO_val2014_000000241948.jpg +../coco/images/val2014/COCO_val2014_000000242073.jpg +../coco/images/val2014/COCO_val2014_000000242100.jpg +../coco/images/val2014/COCO_val2014_000000242189.jpg +../coco/images/val2014/COCO_val2014_000000242246.jpg +../coco/images/val2014/COCO_val2014_000000242422.jpg +../coco/images/val2014/COCO_val2014_000000242423.jpg +../coco/images/val2014/COCO_val2014_000000242523.jpg +../coco/images/val2014/COCO_val2014_000000242911.jpg +../coco/images/val2014/COCO_val2014_000000242934.jpg +../coco/images/val2014/COCO_val2014_000000242945.jpg +../coco/images/val2014/COCO_val2014_000000242972.jpg +../coco/images/val2014/COCO_val2014_000000243134.jpg +../coco/images/val2014/COCO_val2014_000000243190.jpg +../coco/images/val2014/COCO_val2014_000000243213.jpg +../coco/images/val2014/COCO_val2014_000000243331.jpg +../coco/images/val2014/COCO_val2014_000000243442.jpg +../coco/images/val2014/COCO_val2014_000000243569.jpg +../coco/images/val2014/COCO_val2014_000000243699.jpg +../coco/images/val2014/COCO_val2014_000000243775.jpg +../coco/images/val2014/COCO_val2014_000000243825.jpg +../coco/images/val2014/COCO_val2014_000000243857.jpg +../coco/images/val2014/COCO_val2014_000000244005.jpg +../coco/images/val2014/COCO_val2014_000000244050.jpg +../coco/images/val2014/COCO_val2014_000000244167.jpg +../coco/images/val2014/COCO_val2014_000000244246.jpg +../coco/images/val2014/COCO_val2014_000000244344.jpg +../coco/images/val2014/COCO_val2014_000000244571.jpg +../coco/images/val2014/COCO_val2014_000000244665.jpg +../coco/images/val2014/COCO_val2014_000000245102.jpg +../coco/images/val2014/COCO_val2014_000000245173.jpg +../coco/images/val2014/COCO_val2014_000000245242.jpg +../coco/images/val2014/COCO_val2014_000000245426.jpg +../coco/images/val2014/COCO_val2014_000000245852.jpg +../coco/images/val2014/COCO_val2014_000000246014.jpg +../coco/images/val2014/COCO_val2014_000000246233.jpg +../coco/images/val2014/COCO_val2014_000000246308.jpg +../coco/images/val2014/COCO_val2014_000000246425.jpg +../coco/images/val2014/COCO_val2014_000000246522.jpg +../coco/images/val2014/COCO_val2014_000000246649.jpg +../coco/images/val2014/COCO_val2014_000000246672.jpg +../coco/images/val2014/COCO_val2014_000000246686.jpg +../coco/images/val2014/COCO_val2014_000000247057.jpg +../coco/images/val2014/COCO_val2014_000000247123.jpg +../coco/images/val2014/COCO_val2014_000000247234.jpg +../coco/images/val2014/COCO_val2014_000000247306.jpg +../coco/images/val2014/COCO_val2014_000000247407.jpg +../coco/images/val2014/COCO_val2014_000000247788.jpg +../coco/images/val2014/COCO_val2014_000000247839.jpg +../coco/images/val2014/COCO_val2014_000000248069.jpg +../coco/images/val2014/COCO_val2014_000000248089.jpg +../coco/images/val2014/COCO_val2014_000000248112.jpg +../coco/images/val2014/COCO_val2014_000000248224.jpg +../coco/images/val2014/COCO_val2014_000000248231.jpg +../coco/images/val2014/COCO_val2014_000000248235.jpg +../coco/images/val2014/COCO_val2014_000000248276.jpg +../coco/images/val2014/COCO_val2014_000000248314.jpg +../coco/images/val2014/COCO_val2014_000000248631.jpg +../coco/images/val2014/COCO_val2014_000000249219.jpg +../coco/images/val2014/COCO_val2014_000000249295.jpg +../coco/images/val2014/COCO_val2014_000000249599.jpg +../coco/images/val2014/COCO_val2014_000000250205.jpg +../coco/images/val2014/COCO_val2014_000000250282.jpg +../coco/images/val2014/COCO_val2014_000000250301.jpg +../coco/images/val2014/COCO_val2014_000000250313.jpg +../coco/images/val2014/COCO_val2014_000000250370.jpg +../coco/images/val2014/COCO_val2014_000000250427.jpg +../coco/images/val2014/COCO_val2014_000000250629.jpg +../coco/images/val2014/COCO_val2014_000000250745.jpg +../coco/images/val2014/COCO_val2014_000000250766.jpg +../coco/images/val2014/COCO_val2014_000000250794.jpg +../coco/images/val2014/COCO_val2014_000000250917.jpg +../coco/images/val2014/COCO_val2014_000000250924.jpg +../coco/images/val2014/COCO_val2014_000000250939.jpg +../coco/images/val2014/COCO_val2014_000000251019.jpg +../coco/images/val2014/COCO_val2014_000000251044.jpg +../coco/images/val2014/COCO_val2014_000000251195.jpg +../coco/images/val2014/COCO_val2014_000000251330.jpg +../coco/images/val2014/COCO_val2014_000000251367.jpg +../coco/images/val2014/COCO_val2014_000000251857.jpg +../coco/images/val2014/COCO_val2014_000000251888.jpg +../coco/images/val2014/COCO_val2014_000000251920.jpg +../coco/images/val2014/COCO_val2014_000000252008.jpg +../coco/images/val2014/COCO_val2014_000000252101.jpg +../coco/images/val2014/COCO_val2014_000000252292.jpg +../coco/images/val2014/COCO_val2014_000000252388.jpg +../coco/images/val2014/COCO_val2014_000000252403.jpg +../coco/images/val2014/COCO_val2014_000000252444.jpg +../coco/images/val2014/COCO_val2014_000000252549.jpg +../coco/images/val2014/COCO_val2014_000000252625.jpg +../coco/images/val2014/COCO_val2014_000000252748.jpg +../coco/images/val2014/COCO_val2014_000000252857.jpg +../coco/images/val2014/COCO_val2014_000000252911.jpg +../coco/images/val2014/COCO_val2014_000000253036.jpg +../coco/images/val2014/COCO_val2014_000000253452.jpg +../coco/images/val2014/COCO_val2014_000000253630.jpg +../coco/images/val2014/COCO_val2014_000000253688.jpg +../coco/images/val2014/COCO_val2014_000000253742.jpg +../coco/images/val2014/COCO_val2014_000000253843.jpg +../coco/images/val2014/COCO_val2014_000000254164.jpg +../coco/images/val2014/COCO_val2014_000000254167.jpg +../coco/images/val2014/COCO_val2014_000000254454.jpg +../coco/images/val2014/COCO_val2014_000000254568.jpg +../coco/images/val2014/COCO_val2014_000000254589.jpg +../coco/images/val2014/COCO_val2014_000000254653.jpg +../coco/images/val2014/COCO_val2014_000000254711.jpg +../coco/images/val2014/COCO_val2014_000000254864.jpg +../coco/images/val2014/COCO_val2014_000000254931.jpg +../coco/images/val2014/COCO_val2014_000000254986.jpg +../coco/images/val2014/COCO_val2014_000000255244.jpg +../coco/images/val2014/COCO_val2014_000000255315.jpg +../coco/images/val2014/COCO_val2014_000000255529.jpg +../coco/images/val2014/COCO_val2014_000000255578.jpg +../coco/images/val2014/COCO_val2014_000000255649.jpg +../coco/images/val2014/COCO_val2014_000000255928.jpg +../coco/images/val2014/COCO_val2014_000000256003.jpg +../coco/images/val2014/COCO_val2014_000000256095.jpg +../coco/images/val2014/COCO_val2014_000000256145.jpg +../coco/images/val2014/COCO_val2014_000000256407.jpg +../coco/images/val2014/COCO_val2014_000000256470.jpg +../coco/images/val2014/COCO_val2014_000000256529.jpg +../coco/images/val2014/COCO_val2014_000000256547.jpg +../coco/images/val2014/COCO_val2014_000000256566.jpg +../coco/images/val2014/COCO_val2014_000000256590.jpg +../coco/images/val2014/COCO_val2014_000000256668.jpg +../coco/images/val2014/COCO_val2014_000000256771.jpg +../coco/images/val2014/COCO_val2014_000000256838.jpg +../coco/images/val2014/COCO_val2014_000000256859.jpg +../coco/images/val2014/COCO_val2014_000000256945.jpg +../coco/images/val2014/COCO_val2014_000000257046.jpg +../coco/images/val2014/COCO_val2014_000000257137.jpg +../coco/images/val2014/COCO_val2014_000000257336.jpg +../coco/images/val2014/COCO_val2014_000000257471.jpg +../coco/images/val2014/COCO_val2014_000000257660.jpg +../coco/images/val2014/COCO_val2014_000000257870.jpg +../coco/images/val2014/COCO_val2014_000000257941.jpg +../coco/images/val2014/COCO_val2014_000000258023.jpg +../coco/images/val2014/COCO_val2014_000000258209.jpg +../coco/images/val2014/COCO_val2014_000000258509.jpg +../coco/images/val2014/COCO_val2014_000000258588.jpg +../coco/images/val2014/COCO_val2014_000000258628.jpg +../coco/images/val2014/COCO_val2014_000000259099.jpg +../coco/images/val2014/COCO_val2014_000000259112.jpg +../coco/images/val2014/COCO_val2014_000000259335.jpg +../coco/images/val2014/COCO_val2014_000000259342.jpg +../coco/images/val2014/COCO_val2014_000000259408.jpg +../coco/images/val2014/COCO_val2014_000000259665.jpg +../coco/images/val2014/COCO_val2014_000000259952.jpg +../coco/images/val2014/COCO_val2014_000000260166.jpg +../coco/images/val2014/COCO_val2014_000000260307.jpg +../coco/images/val2014/COCO_val2014_000000260370.jpg +../coco/images/val2014/COCO_val2014_000000260470.jpg +../coco/images/val2014/COCO_val2014_000000260595.jpg +../coco/images/val2014/COCO_val2014_000000260686.jpg +../coco/images/val2014/COCO_val2014_000000260818.jpg +../coco/images/val2014/COCO_val2014_000000260922.jpg +../coco/images/val2014/COCO_val2014_000000261182.jpg +../coco/images/val2014/COCO_val2014_000000261273.jpg +../coco/images/val2014/COCO_val2014_000000261346.jpg +../coco/images/val2014/COCO_val2014_000000261787.jpg +../coco/images/val2014/COCO_val2014_000000262162.jpg +../coco/images/val2014/COCO_val2014_000000262200.jpg +../coco/images/val2014/COCO_val2014_000000262228.jpg +../coco/images/val2014/COCO_val2014_000000262235.jpg +../coco/images/val2014/COCO_val2014_000000262325.jpg +../coco/images/val2014/COCO_val2014_000000262347.jpg +../coco/images/val2014/COCO_val2014_000000262509.jpg +../coco/images/val2014/COCO_val2014_000000262651.jpg +../coco/images/val2014/COCO_val2014_000000262677.jpg +../coco/images/val2014/COCO_val2014_000000262810.jpg +../coco/images/val2014/COCO_val2014_000000262895.jpg +../coco/images/val2014/COCO_val2014_000000262900.jpg +../coco/images/val2014/COCO_val2014_000000262987.jpg +../coco/images/val2014/COCO_val2014_000000263425.jpg +../coco/images/val2014/COCO_val2014_000000263505.jpg +../coco/images/val2014/COCO_val2014_000000264013.jpg +../coco/images/val2014/COCO_val2014_000000264540.jpg +../coco/images/val2014/COCO_val2014_000000264683.jpg +../coco/images/val2014/COCO_val2014_000000264737.jpg +../coco/images/val2014/COCO_val2014_000000264819.jpg +../coco/images/val2014/COCO_val2014_000000265063.jpg +../coco/images/val2014/COCO_val2014_000000265374.jpg +../coco/images/val2014/COCO_val2014_000000265574.jpg +../coco/images/val2014/COCO_val2014_000000265579.jpg +../coco/images/val2014/COCO_val2014_000000265611.jpg +../coco/images/val2014/COCO_val2014_000000265851.jpg +../coco/images/val2014/COCO_val2014_000000265916.jpg +../coco/images/val2014/COCO_val2014_000000266115.jpg +../coco/images/val2014/COCO_val2014_000000266160.jpg +../coco/images/val2014/COCO_val2014_000000266176.jpg +../coco/images/val2014/COCO_val2014_000000266491.jpg +../coco/images/val2014/COCO_val2014_000000267076.jpg +../coco/images/val2014/COCO_val2014_000000267112.jpg +../coco/images/val2014/COCO_val2014_000000267115.jpg +../coco/images/val2014/COCO_val2014_000000267127.jpg +../coco/images/val2014/COCO_val2014_000000267224.jpg +../coco/images/val2014/COCO_val2014_000000267321.jpg +../coco/images/val2014/COCO_val2014_000000267521.jpg +../coco/images/val2014/COCO_val2014_000000267537.jpg +../coco/images/val2014/COCO_val2014_000000267844.jpg +../coco/images/val2014/COCO_val2014_000000267875.jpg +../coco/images/val2014/COCO_val2014_000000267972.jpg +../coco/images/val2014/COCO_val2014_000000267998.jpg +../coco/images/val2014/COCO_val2014_000000268224.jpg +../coco/images/val2014/COCO_val2014_000000268322.jpg +../coco/images/val2014/COCO_val2014_000000268378.jpg +../coco/images/val2014/COCO_val2014_000000268400.jpg +../coco/images/val2014/COCO_val2014_000000268435.jpg +../coco/images/val2014/COCO_val2014_000000268469.jpg +../coco/images/val2014/COCO_val2014_000000268539.jpg +../coco/images/val2014/COCO_val2014_000000268541.jpg +../coco/images/val2014/COCO_val2014_000000268710.jpg +../coco/images/val2014/COCO_val2014_000000268882.jpg +../coco/images/val2014/COCO_val2014_000000268885.jpg +../coco/images/val2014/COCO_val2014_000000268941.jpg +../coco/images/val2014/COCO_val2014_000000268987.jpg +../coco/images/val2014/COCO_val2014_000000269280.jpg +../coco/images/val2014/COCO_val2014_000000269311.jpg +../coco/images/val2014/COCO_val2014_000000269866.jpg +../coco/images/val2014/COCO_val2014_000000269867.jpg +../coco/images/val2014/COCO_val2014_000000269975.jpg +../coco/images/val2014/COCO_val2014_000000270001.jpg +../coco/images/val2014/COCO_val2014_000000270244.jpg +../coco/images/val2014/COCO_val2014_000000270474.jpg +../coco/images/val2014/COCO_val2014_000000270515.jpg +../coco/images/val2014/COCO_val2014_000000270544.jpg +../coco/images/val2014/COCO_val2014_000000270593.jpg +../coco/images/val2014/COCO_val2014_000000270702.jpg +../coco/images/val2014/COCO_val2014_000000270918.jpg +../coco/images/val2014/COCO_val2014_000000271017.jpg +../coco/images/val2014/COCO_val2014_000000271117.jpg +../coco/images/val2014/COCO_val2014_000000271240.jpg +../coco/images/val2014/COCO_val2014_000000271359.jpg +../coco/images/val2014/COCO_val2014_000000271546.jpg +../coco/images/val2014/COCO_val2014_000000271681.jpg +../coco/images/val2014/COCO_val2014_000000271785.jpg +../coco/images/val2014/COCO_val2014_000000271820.jpg +../coco/images/val2014/COCO_val2014_000000271900.jpg +../coco/images/val2014/COCO_val2014_000000272008.jpg +../coco/images/val2014/COCO_val2014_000000272015.jpg +../coco/images/val2014/COCO_val2014_000000272117.jpg +../coco/images/val2014/COCO_val2014_000000272129.jpg +../coco/images/val2014/COCO_val2014_000000272188.jpg +../coco/images/val2014/COCO_val2014_000000272212.jpg +../coco/images/val2014/COCO_val2014_000000272615.jpg +../coco/images/val2014/COCO_val2014_000000272635.jpg +../coco/images/val2014/COCO_val2014_000000272718.jpg +../coco/images/val2014/COCO_val2014_000000272728.jpg +../coco/images/val2014/COCO_val2014_000000272880.jpg +../coco/images/val2014/COCO_val2014_000000272889.jpg +../coco/images/val2014/COCO_val2014_000000273118.jpg +../coco/images/val2014/COCO_val2014_000000273188.jpg +../coco/images/val2014/COCO_val2014_000000273246.jpg +../coco/images/val2014/COCO_val2014_000000273323.jpg +../coco/images/val2014/COCO_val2014_000000273442.jpg +../coco/images/val2014/COCO_val2014_000000273450.jpg +../coco/images/val2014/COCO_val2014_000000273493.jpg +../coco/images/val2014/COCO_val2014_000000273494.jpg +../coco/images/val2014/COCO_val2014_000000273579.jpg +../coco/images/val2014/COCO_val2014_000000273617.jpg +../coco/images/val2014/COCO_val2014_000000273688.jpg +../coco/images/val2014/COCO_val2014_000000273712.jpg +../coco/images/val2014/COCO_val2014_000000273728.jpg +../coco/images/val2014/COCO_val2014_000000273855.jpg +../coco/images/val2014/COCO_val2014_000000274066.jpg +../coco/images/val2014/COCO_val2014_000000274083.jpg +../coco/images/val2014/COCO_val2014_000000274292.jpg +../coco/images/val2014/COCO_val2014_000000274470.jpg +../coco/images/val2014/COCO_val2014_000000274629.jpg +../coco/images/val2014/COCO_val2014_000000274957.jpg +../coco/images/val2014/COCO_val2014_000000275270.jpg +../coco/images/val2014/COCO_val2014_000000275496.jpg +../coco/images/val2014/COCO_val2014_000000275843.jpg +../coco/images/val2014/COCO_val2014_000000275863.jpg +../coco/images/val2014/COCO_val2014_000000276149.jpg +../coco/images/val2014/COCO_val2014_000000276215.jpg +../coco/images/val2014/COCO_val2014_000000276239.jpg +../coco/images/val2014/COCO_val2014_000000276720.jpg +../coco/images/val2014/COCO_val2014_000000276804.jpg +../coco/images/val2014/COCO_val2014_000000276840.jpg +../coco/images/val2014/COCO_val2014_000000276863.jpg +../coco/images/val2014/COCO_val2014_000000277025.jpg +../coco/images/val2014/COCO_val2014_000000277046.jpg +../coco/images/val2014/COCO_val2014_000000277051.jpg +../coco/images/val2014/COCO_val2014_000000277162.jpg +../coco/images/val2014/COCO_val2014_000000277172.jpg +../coco/images/val2014/COCO_val2014_000000277227.jpg +../coco/images/val2014/COCO_val2014_000000277518.jpg +../coco/images/val2014/COCO_val2014_000000277542.jpg +../coco/images/val2014/COCO_val2014_000000277614.jpg +../coco/images/val2014/COCO_val2014_000000277622.jpg +../coco/images/val2014/COCO_val2014_000000277694.jpg +../coco/images/val2014/COCO_val2014_000000277984.jpg +../coco/images/val2014/COCO_val2014_000000278321.jpg +../coco/images/val2014/COCO_val2014_000000278435.jpg +../coco/images/val2014/COCO_val2014_000000278582.jpg +../coco/images/val2014/COCO_val2014_000000278760.jpg +../coco/images/val2014/COCO_val2014_000000278822.jpg +../coco/images/val2014/COCO_val2014_000000278843.jpg +../coco/images/val2014/COCO_val2014_000000278848.jpg +../coco/images/val2014/COCO_val2014_000000278967.jpg +../coco/images/val2014/COCO_val2014_000000278977.jpg +../coco/images/val2014/COCO_val2014_000000279024.jpg +../coco/images/val2014/COCO_val2014_000000279027.jpg +../coco/images/val2014/COCO_val2014_000000279154.jpg +../coco/images/val2014/COCO_val2014_000000279259.jpg +../coco/images/val2014/COCO_val2014_000000279521.jpg +../coco/images/val2014/COCO_val2014_000000279730.jpg +../coco/images/val2014/COCO_val2014_000000279784.jpg +../coco/images/val2014/COCO_val2014_000000279850.jpg +../coco/images/val2014/COCO_val2014_000000280007.jpg +../coco/images/val2014/COCO_val2014_000000280017.jpg +../coco/images/val2014/COCO_val2014_000000280036.jpg +../coco/images/val2014/COCO_val2014_000000280293.jpg +../coco/images/val2014/COCO_val2014_000000280530.jpg +../coco/images/val2014/COCO_val2014_000000280736.jpg +../coco/images/val2014/COCO_val2014_000000280766.jpg +../coco/images/val2014/COCO_val2014_000000281019.jpg +../coco/images/val2014/COCO_val2014_000000281163.jpg +../coco/images/val2014/COCO_val2014_000000281377.jpg +../coco/images/val2014/COCO_val2014_000000281500.jpg +../coco/images/val2014/COCO_val2014_000000281508.jpg +../coco/images/val2014/COCO_val2014_000000281601.jpg +../coco/images/val2014/COCO_val2014_000000281609.jpg +../coco/images/val2014/COCO_val2014_000000281676.jpg +../coco/images/val2014/COCO_val2014_000000281722.jpg +../coco/images/val2014/COCO_val2014_000000281733.jpg +../coco/images/val2014/COCO_val2014_000000282143.jpg +../coco/images/val2014/COCO_val2014_000000282229.jpg +../coco/images/val2014/COCO_val2014_000000282231.jpg +../coco/images/val2014/COCO_val2014_000000282698.jpg +../coco/images/val2014/COCO_val2014_000000282790.jpg +../coco/images/val2014/COCO_val2014_000000283012.jpg +../coco/images/val2014/COCO_val2014_000000283097.jpg +../coco/images/val2014/COCO_val2014_000000283101.jpg +../coco/images/val2014/COCO_val2014_000000283113.jpg +../coco/images/val2014/COCO_val2014_000000283254.jpg +../coco/images/val2014/COCO_val2014_000000283261.jpg +../coco/images/val2014/COCO_val2014_000000283380.jpg +../coco/images/val2014/COCO_val2014_000000283438.jpg +../coco/images/val2014/COCO_val2014_000000283441.jpg +../coco/images/val2014/COCO_val2014_000000283495.jpg +../coco/images/val2014/COCO_val2014_000000283642.jpg +../coco/images/val2014/COCO_val2014_000000283653.jpg +../coco/images/val2014/COCO_val2014_000000283659.jpg +../coco/images/val2014/COCO_val2014_000000283890.jpg +../coco/images/val2014/COCO_val2014_000000283940.jpg +../coco/images/val2014/COCO_val2014_000000283977.jpg +../coco/images/val2014/COCO_val2014_000000284160.jpg +../coco/images/val2014/COCO_val2014_000000284253.jpg +../coco/images/val2014/COCO_val2014_000000284426.jpg +../coco/images/val2014/COCO_val2014_000000284698.jpg +../coco/images/val2014/COCO_val2014_000000284749.jpg +../coco/images/val2014/COCO_val2014_000000284789.jpg +../coco/images/val2014/COCO_val2014_000000285106.jpg +../coco/images/val2014/COCO_val2014_000000285160.jpg +../coco/images/val2014/COCO_val2014_000000285302.jpg +../coco/images/val2014/COCO_val2014_000000285433.jpg +../coco/images/val2014/COCO_val2014_000000285799.jpg +../coco/images/val2014/COCO_val2014_000000285929.jpg +../coco/images/val2014/COCO_val2014_000000285961.jpg +../coco/images/val2014/COCO_val2014_000000286119.jpg +../coco/images/val2014/COCO_val2014_000000286146.jpg +../coco/images/val2014/COCO_val2014_000000286285.jpg +../coco/images/val2014/COCO_val2014_000000286458.jpg +../coco/images/val2014/COCO_val2014_000000286503.jpg +../coco/images/val2014/COCO_val2014_000000286654.jpg +../coco/images/val2014/COCO_val2014_000000286708.jpg +../coco/images/val2014/COCO_val2014_000000286719.jpg +../coco/images/val2014/COCO_val2014_000000286813.jpg +../coco/images/val2014/COCO_val2014_000000286907.jpg +../coco/images/val2014/COCO_val2014_000000286994.jpg +../coco/images/val2014/COCO_val2014_000000287035.jpg +../coco/images/val2014/COCO_val2014_000000287396.jpg +../coco/images/val2014/COCO_val2014_000000287484.jpg +../coco/images/val2014/COCO_val2014_000000287506.jpg +../coco/images/val2014/COCO_val2014_000000287550.jpg +../coco/images/val2014/COCO_val2014_000000287570.jpg +../coco/images/val2014/COCO_val2014_000000288114.jpg +../coco/images/val2014/COCO_val2014_000000288229.jpg +../coco/images/val2014/COCO_val2014_000000288313.jpg +../coco/images/val2014/COCO_val2014_000000288799.jpg +../coco/images/val2014/COCO_val2014_000000288933.jpg +../coco/images/val2014/COCO_val2014_000000289128.jpg +../coco/images/val2014/COCO_val2014_000000289172.jpg +../coco/images/val2014/COCO_val2014_000000289194.jpg +../coco/images/val2014/COCO_val2014_000000289201.jpg +../coco/images/val2014/COCO_val2014_000000289337.jpg +../coco/images/val2014/COCO_val2014_000000289474.jpg +../coco/images/val2014/COCO_val2014_000000289497.jpg +../coco/images/val2014/COCO_val2014_000000289633.jpg +../coco/images/val2014/COCO_val2014_000000289716.jpg +../coco/images/val2014/COCO_val2014_000000289949.jpg +../coco/images/val2014/COCO_val2014_000000289960.jpg +../coco/images/val2014/COCO_val2014_000000289995.jpg +../coco/images/val2014/COCO_val2014_000000290165.jpg +../coco/images/val2014/COCO_val2014_000000290170.jpg +../coco/images/val2014/COCO_val2014_000000290196.jpg +../coco/images/val2014/COCO_val2014_000000290231.jpg +../coco/images/val2014/COCO_val2014_000000290477.jpg +../coco/images/val2014/COCO_val2014_000000290515.jpg +../coco/images/val2014/COCO_val2014_000000290602.jpg +../coco/images/val2014/COCO_val2014_000000290659.jpg +../coco/images/val2014/COCO_val2014_000000291380.jpg +../coco/images/val2014/COCO_val2014_000000291404.jpg +../coco/images/val2014/COCO_val2014_000000291588.jpg +../coco/images/val2014/COCO_val2014_000000291589.jpg +../coco/images/val2014/COCO_val2014_000000291742.jpg +../coco/images/val2014/COCO_val2014_000000291784.jpg +../coco/images/val2014/COCO_val2014_000000291866.jpg +../coco/images/val2014/COCO_val2014_000000291930.jpg +../coco/images/val2014/COCO_val2014_000000292032.jpg +../coco/images/val2014/COCO_val2014_000000292206.jpg +../coco/images/val2014/COCO_val2014_000000292330.jpg +../coco/images/val2014/COCO_val2014_000000292363.jpg +../coco/images/val2014/COCO_val2014_000000292446.jpg +../coco/images/val2014/COCO_val2014_000000292456.jpg +../coco/images/val2014/COCO_val2014_000000292493.jpg +../coco/images/val2014/COCO_val2014_000000292649.jpg +../coco/images/val2014/COCO_val2014_000000292822.jpg +../coco/images/val2014/COCO_val2014_000000292916.jpg +../coco/images/val2014/COCO_val2014_000000292931.jpg +../coco/images/val2014/COCO_val2014_000000292945.jpg +../coco/images/val2014/COCO_val2014_000000292990.jpg +../coco/images/val2014/COCO_val2014_000000292995.jpg +../coco/images/val2014/COCO_val2014_000000293002.jpg +../coco/images/val2014/COCO_val2014_000000293071.jpg +../coco/images/val2014/COCO_val2014_000000293133.jpg +../coco/images/val2014/COCO_val2014_000000293296.jpg +../coco/images/val2014/COCO_val2014_000000293333.jpg +../coco/images/val2014/COCO_val2014_000000293452.jpg +../coco/images/val2014/COCO_val2014_000000293574.jpg +../coco/images/val2014/COCO_val2014_000000293785.jpg +../coco/images/val2014/COCO_val2014_000000293895.jpg +../coco/images/val2014/COCO_val2014_000000294035.jpg +../coco/images/val2014/COCO_val2014_000000294119.jpg +../coco/images/val2014/COCO_val2014_000000294209.jpg +../coco/images/val2014/COCO_val2014_000000294284.jpg +../coco/images/val2014/COCO_val2014_000000294593.jpg +../coco/images/val2014/COCO_val2014_000000294958.jpg +../coco/images/val2014/COCO_val2014_000000295016.jpg +../coco/images/val2014/COCO_val2014_000000295059.jpg +../coco/images/val2014/COCO_val2014_000000295124.jpg +../coco/images/val2014/COCO_val2014_000000295269.jpg +../coco/images/val2014/COCO_val2014_000000295574.jpg +../coco/images/val2014/COCO_val2014_000000295683.jpg +../coco/images/val2014/COCO_val2014_000000295728.jpg +../coco/images/val2014/COCO_val2014_000000295769.jpg +../coco/images/val2014/COCO_val2014_000000295837.jpg +../coco/images/val2014/COCO_val2014_000000296014.jpg +../coco/images/val2014/COCO_val2014_000000296032.jpg +../coco/images/val2014/COCO_val2014_000000296136.jpg +../coco/images/val2014/COCO_val2014_000000296255.jpg +../coco/images/val2014/COCO_val2014_000000296492.jpg +../coco/images/val2014/COCO_val2014_000000296564.jpg +../coco/images/val2014/COCO_val2014_000000296745.jpg +../coco/images/val2014/COCO_val2014_000000296825.jpg +../coco/images/val2014/COCO_val2014_000000296897.jpg +../coco/images/val2014/COCO_val2014_000000296988.jpg +../coco/images/val2014/COCO_val2014_000000297037.jpg +../coco/images/val2014/COCO_val2014_000000297074.jpg +../coco/images/val2014/COCO_val2014_000000297269.jpg +../coco/images/val2014/COCO_val2014_000000297444.jpg +../coco/images/val2014/COCO_val2014_000000297520.jpg +../coco/images/val2014/COCO_val2014_000000297578.jpg +../coco/images/val2014/COCO_val2014_000000297736.jpg +../coco/images/val2014/COCO_val2014_000000297830.jpg +../coco/images/val2014/COCO_val2014_000000297956.jpg +../coco/images/val2014/COCO_val2014_000000297970.jpg +../coco/images/val2014/COCO_val2014_000000297976.jpg +../coco/images/val2014/COCO_val2014_000000298067.jpg +../coco/images/val2014/COCO_val2014_000000298252.jpg +../coco/images/val2014/COCO_val2014_000000298461.jpg +../coco/images/val2014/COCO_val2014_000000298493.jpg +../coco/images/val2014/COCO_val2014_000000298691.jpg +../coco/images/val2014/COCO_val2014_000000298732.jpg +../coco/images/val2014/COCO_val2014_000000298736.jpg +../coco/images/val2014/COCO_val2014_000000298809.jpg +../coco/images/val2014/COCO_val2014_000000299044.jpg +../coco/images/val2014/COCO_val2014_000000299074.jpg +../coco/images/val2014/COCO_val2014_000000299409.jpg +../coco/images/val2014/COCO_val2014_000000299492.jpg +../coco/images/val2014/COCO_val2014_000000299553.jpg +../coco/images/val2014/COCO_val2014_000000300008.jpg +../coco/images/val2014/COCO_val2014_000000300055.jpg +../coco/images/val2014/COCO_val2014_000000300090.jpg +../coco/images/val2014/COCO_val2014_000000300124.jpg +../coco/images/val2014/COCO_val2014_000000300155.jpg +../coco/images/val2014/COCO_val2014_000000300330.jpg +../coco/images/val2014/COCO_val2014_000000300403.jpg +../coco/images/val2014/COCO_val2014_000000300472.jpg +../coco/images/val2014/COCO_val2014_000000300701.jpg +../coco/images/val2014/COCO_val2014_000000300705.jpg +../coco/images/val2014/COCO_val2014_000000300791.jpg +../coco/images/val2014/COCO_val2014_000000300814.jpg +../coco/images/val2014/COCO_val2014_000000301135.jpg +../coco/images/val2014/COCO_val2014_000000301221.jpg +../coco/images/val2014/COCO_val2014_000000301266.jpg +../coco/images/val2014/COCO_val2014_000000301397.jpg +../coco/images/val2014/COCO_val2014_000000301746.jpg +../coco/images/val2014/COCO_val2014_000000301756.jpg +../coco/images/val2014/COCO_val2014_000000301765.jpg +../coco/images/val2014/COCO_val2014_000000301837.jpg +../coco/images/val2014/COCO_val2014_000000301956.jpg +../coco/images/val2014/COCO_val2014_000000301971.jpg +../coco/images/val2014/COCO_val2014_000000301981.jpg +../coco/images/val2014/COCO_val2014_000000302094.jpg +../coco/images/val2014/COCO_val2014_000000302110.jpg +../coco/images/val2014/COCO_val2014_000000302137.jpg +../coco/images/val2014/COCO_val2014_000000302185.jpg +../coco/images/val2014/COCO_val2014_000000302193.jpg +../coco/images/val2014/COCO_val2014_000000302243.jpg +../coco/images/val2014/COCO_val2014_000000302298.jpg +../coco/images/val2014/COCO_val2014_000000302302.jpg +../coco/images/val2014/COCO_val2014_000000302318.jpg +../coco/images/val2014/COCO_val2014_000000302405.jpg +../coco/images/val2014/COCO_val2014_000000302452.jpg +../coco/images/val2014/COCO_val2014_000000302572.jpg +../coco/images/val2014/COCO_val2014_000000302710.jpg +../coco/images/val2014/COCO_val2014_000000302997.jpg +../coco/images/val2014/COCO_val2014_000000303006.jpg +../coco/images/val2014/COCO_val2014_000000303253.jpg +../coco/images/val2014/COCO_val2014_000000303305.jpg +../coco/images/val2014/COCO_val2014_000000303314.jpg +../coco/images/val2014/COCO_val2014_000000303549.jpg +../coco/images/val2014/COCO_val2014_000000303550.jpg +../coco/images/val2014/COCO_val2014_000000303556.jpg +../coco/images/val2014/COCO_val2014_000000303590.jpg +../coco/images/val2014/COCO_val2014_000000303937.jpg +../coco/images/val2014/COCO_val2014_000000304159.jpg +../coco/images/val2014/COCO_val2014_000000304186.jpg +../coco/images/val2014/COCO_val2014_000000304220.jpg +../coco/images/val2014/COCO_val2014_000000304252.jpg +../coco/images/val2014/COCO_val2014_000000304347.jpg +../coco/images/val2014/COCO_val2014_000000304390.jpg +../coco/images/val2014/COCO_val2014_000000304409.jpg +../coco/images/val2014/COCO_val2014_000000304812.jpg +../coco/images/val2014/COCO_val2014_000000304815.jpg +../coco/images/val2014/COCO_val2014_000000304827.jpg +../coco/images/val2014/COCO_val2014_000000305000.jpg +../coco/images/val2014/COCO_val2014_000000305343.jpg +../coco/images/val2014/COCO_val2014_000000305368.jpg +../coco/images/val2014/COCO_val2014_000000305480.jpg +../coco/images/val2014/COCO_val2014_000000305526.jpg +../coco/images/val2014/COCO_val2014_000000305803.jpg +../coco/images/val2014/COCO_val2014_000000305962.jpg +../coco/images/val2014/COCO_val2014_000000305978.jpg +../coco/images/val2014/COCO_val2014_000000306281.jpg +../coco/images/val2014/COCO_val2014_000000306395.jpg +../coco/images/val2014/COCO_val2014_000000306426.jpg +../coco/images/val2014/COCO_val2014_000000306585.jpg +../coco/images/val2014/COCO_val2014_000000306603.jpg +../coco/images/val2014/COCO_val2014_000000306855.jpg +../coco/images/val2014/COCO_val2014_000000306914.jpg +../coco/images/val2014/COCO_val2014_000000306952.jpg +../coco/images/val2014/COCO_val2014_000000306972.jpg +../coco/images/val2014/COCO_val2014_000000307206.jpg +../coco/images/val2014/COCO_val2014_000000307209.jpg +../coco/images/val2014/COCO_val2014_000000307438.jpg +../coco/images/val2014/COCO_val2014_000000307523.jpg +../coco/images/val2014/COCO_val2014_000000307531.jpg +../coco/images/val2014/COCO_val2014_000000307564.jpg +../coco/images/val2014/COCO_val2014_000000307873.jpg +../coco/images/val2014/COCO_val2014_000000307993.jpg +../coco/images/val2014/COCO_val2014_000000308156.jpg +../coco/images/val2014/COCO_val2014_000000308339.jpg +../coco/images/val2014/COCO_val2014_000000308441.jpg +../coco/images/val2014/COCO_val2014_000000308512.jpg +../coco/images/val2014/COCO_val2014_000000308543.jpg +../coco/images/val2014/COCO_val2014_000000308587.jpg +../coco/images/val2014/COCO_val2014_000000308759.jpg +../coco/images/val2014/COCO_val2014_000000308785.jpg +../coco/images/val2014/COCO_val2014_000000308900.jpg +../coco/images/val2014/COCO_val2014_000000308907.jpg +../coco/images/val2014/COCO_val2014_000000309044.jpg +../coco/images/val2014/COCO_val2014_000000309302.jpg +../coco/images/val2014/COCO_val2014_000000309452.jpg +../coco/images/val2014/COCO_val2014_000000309495.jpg +../coco/images/val2014/COCO_val2014_000000309530.jpg +../coco/images/val2014/COCO_val2014_000000309655.jpg +../coco/images/val2014/COCO_val2014_000000309692.jpg +../coco/images/val2014/COCO_val2014_000000309696.jpg +../coco/images/val2014/COCO_val2014_000000309775.jpg +../coco/images/val2014/COCO_val2014_000000309993.jpg +../coco/images/val2014/COCO_val2014_000000310008.jpg +../coco/images/val2014/COCO_val2014_000000310094.jpg +../coco/images/val2014/COCO_val2014_000000310196.jpg +../coco/images/val2014/COCO_val2014_000000310202.jpg +../coco/images/val2014/COCO_val2014_000000310524.jpg +../coco/images/val2014/COCO_val2014_000000310545.jpg +../coco/images/val2014/COCO_val2014_000000310622.jpg +../coco/images/val2014/COCO_val2014_000000310705.jpg +../coco/images/val2014/COCO_val2014_000000310858.jpg +../coco/images/val2014/COCO_val2014_000000311015.jpg +../coco/images/val2014/COCO_val2014_000000311081.jpg +../coco/images/val2014/COCO_val2014_000000311295.jpg +../coco/images/val2014/COCO_val2014_000000311303.jpg +../coco/images/val2014/COCO_val2014_000000311465.jpg +../coco/images/val2014/COCO_val2014_000000311904.jpg +../coco/images/val2014/COCO_val2014_000000311961.jpg +../coco/images/val2014/COCO_val2014_000000312081.jpg +../coco/images/val2014/COCO_val2014_000000312144.jpg +../coco/images/val2014/COCO_val2014_000000312192.jpg +../coco/images/val2014/COCO_val2014_000000312278.jpg +../coco/images/val2014/COCO_val2014_000000312289.jpg +../coco/images/val2014/COCO_val2014_000000312416.jpg +../coco/images/val2014/COCO_val2014_000000312544.jpg +../coco/images/val2014/COCO_val2014_000000312559.jpg +../coco/images/val2014/COCO_val2014_000000312890.jpg +../coco/images/val2014/COCO_val2014_000000313034.jpg +../coco/images/val2014/COCO_val2014_000000313057.jpg +../coco/images/val2014/COCO_val2014_000000313162.jpg +../coco/images/val2014/COCO_val2014_000000313321.jpg +../coco/images/val2014/COCO_val2014_000000313557.jpg +../coco/images/val2014/COCO_val2014_000000313588.jpg +../coco/images/val2014/COCO_val2014_000000313593.jpg +../coco/images/val2014/COCO_val2014_000000313916.jpg +../coco/images/val2014/COCO_val2014_000000313922.jpg +../coco/images/val2014/COCO_val2014_000000314023.jpg +../coco/images/val2014/COCO_val2014_000000314027.jpg +../coco/images/val2014/COCO_val2014_000000314147.jpg +../coco/images/val2014/COCO_val2014_000000314440.jpg +../coco/images/val2014/COCO_val2014_000000314616.jpg +../coco/images/val2014/COCO_val2014_000000314812.jpg +../coco/images/val2014/COCO_val2014_000000314992.jpg +../coco/images/val2014/COCO_val2014_000000315219.jpg +../coco/images/val2014/COCO_val2014_000000315249.jpg +../coco/images/val2014/COCO_val2014_000000315281.jpg +../coco/images/val2014/COCO_val2014_000000315564.jpg +../coco/images/val2014/COCO_val2014_000000315601.jpg +../coco/images/val2014/COCO_val2014_000000315621.jpg +../coco/images/val2014/COCO_val2014_000000315744.jpg +../coco/images/val2014/COCO_val2014_000000315792.jpg +../coco/images/val2014/COCO_val2014_000000315824.jpg +../coco/images/val2014/COCO_val2014_000000315962.jpg +../coco/images/val2014/COCO_val2014_000000316000.jpg +../coco/images/val2014/COCO_val2014_000000316015.jpg +../coco/images/val2014/COCO_val2014_000000316138.jpg +../coco/images/val2014/COCO_val2014_000000316147.jpg +../coco/images/val2014/COCO_val2014_000000316254.jpg +../coco/images/val2014/COCO_val2014_000000316359.jpg +../coco/images/val2014/COCO_val2014_000000316400.jpg +../coco/images/val2014/COCO_val2014_000000316438.jpg +../coco/images/val2014/COCO_val2014_000000316505.jpg +../coco/images/val2014/COCO_val2014_000000316617.jpg +../coco/images/val2014/COCO_val2014_000000316704.jpg +../coco/images/val2014/COCO_val2014_000000316879.jpg +../coco/images/val2014/COCO_val2014_000000317033.jpg +../coco/images/val2014/COCO_val2014_000000317320.jpg +../coco/images/val2014/COCO_val2014_000000317325.jpg +../coco/images/val2014/COCO_val2014_000000317424.jpg +../coco/images/val2014/COCO_val2014_000000317560.jpg +../coco/images/val2014/COCO_val2014_000000317622.jpg +../coco/images/val2014/COCO_val2014_000000317898.jpg +../coco/images/val2014/COCO_val2014_000000318124.jpg +../coco/images/val2014/COCO_val2014_000000318200.jpg +../coco/images/val2014/COCO_val2014_000000318314.jpg +../coco/images/val2014/COCO_val2014_000000318566.jpg +../coco/images/val2014/COCO_val2014_000000318618.jpg +../coco/images/val2014/COCO_val2014_000000318645.jpg +../coco/images/val2014/COCO_val2014_000000318671.jpg +../coco/images/val2014/COCO_val2014_000000318722.jpg +../coco/images/val2014/COCO_val2014_000000318837.jpg +../coco/images/val2014/COCO_val2014_000000319055.jpg +../coco/images/val2014/COCO_val2014_000000319073.jpg +../coco/images/val2014/COCO_val2014_000000319579.jpg +../coco/images/val2014/COCO_val2014_000000319616.jpg +../coco/images/val2014/COCO_val2014_000000319617.jpg +../coco/images/val2014/COCO_val2014_000000319654.jpg +../coco/images/val2014/COCO_val2014_000000319677.jpg +../coco/images/val2014/COCO_val2014_000000319687.jpg +../coco/images/val2014/COCO_val2014_000000319721.jpg +../coco/images/val2014/COCO_val2014_000000319726.jpg +../coco/images/val2014/COCO_val2014_000000320078.jpg +../coco/images/val2014/COCO_val2014_000000320203.jpg +../coco/images/val2014/COCO_val2014_000000320461.jpg +../coco/images/val2014/COCO_val2014_000000320480.jpg +../coco/images/val2014/COCO_val2014_000000320482.jpg +../coco/images/val2014/COCO_val2014_000000320696.jpg +../coco/images/val2014/COCO_val2014_000000320832.jpg +../coco/images/val2014/COCO_val2014_000000320893.jpg +../coco/images/val2014/COCO_val2014_000000320978.jpg +../coco/images/val2014/COCO_val2014_000000321079.jpg +../coco/images/val2014/COCO_val2014_000000321118.jpg +../coco/images/val2014/COCO_val2014_000000321176.jpg +../coco/images/val2014/COCO_val2014_000000321258.jpg +../coco/images/val2014/COCO_val2014_000000321476.jpg +../coco/images/val2014/COCO_val2014_000000321647.jpg +../coco/images/val2014/COCO_val2014_000000321804.jpg +../coco/images/val2014/COCO_val2014_000000322174.jpg +../coco/images/val2014/COCO_val2014_000000322352.jpg +../coco/images/val2014/COCO_val2014_000000322594.jpg +../coco/images/val2014/COCO_val2014_000000322724.jpg +../coco/images/val2014/COCO_val2014_000000322829.jpg +../coco/images/val2014/COCO_val2014_000000322845.jpg +../coco/images/val2014/COCO_val2014_000000322895.jpg +../coco/images/val2014/COCO_val2014_000000323128.jpg +../coco/images/val2014/COCO_val2014_000000323186.jpg +../coco/images/val2014/COCO_val2014_000000323291.jpg +../coco/images/val2014/COCO_val2014_000000323564.jpg +../coco/images/val2014/COCO_val2014_000000323751.jpg +../coco/images/val2014/COCO_val2014_000000323758.jpg +../coco/images/val2014/COCO_val2014_000000323799.jpg +../coco/images/val2014/COCO_val2014_000000323853.jpg +../coco/images/val2014/COCO_val2014_000000323919.jpg +../coco/images/val2014/COCO_val2014_000000323925.jpg +../coco/images/val2014/COCO_val2014_000000323930.jpg +../coco/images/val2014/COCO_val2014_000000324040.jpg +../coco/images/val2014/COCO_val2014_000000324135.jpg +../coco/images/val2014/COCO_val2014_000000324203.jpg +../coco/images/val2014/COCO_val2014_000000324497.jpg +../coco/images/val2014/COCO_val2014_000000324500.jpg +../coco/images/val2014/COCO_val2014_000000324595.jpg +../coco/images/val2014/COCO_val2014_000000324774.jpg +../coco/images/val2014/COCO_val2014_000000324776.jpg +../coco/images/val2014/COCO_val2014_000000324789.jpg +../coco/images/val2014/COCO_val2014_000000324872.jpg +../coco/images/val2014/COCO_val2014_000000325027.jpg +../coco/images/val2014/COCO_val2014_000000325153.jpg +../coco/images/val2014/COCO_val2014_000000325157.jpg +../coco/images/val2014/COCO_val2014_000000325211.jpg +../coco/images/val2014/COCO_val2014_000000325328.jpg +../coco/images/val2014/COCO_val2014_000000325410.jpg +../coco/images/val2014/COCO_val2014_000000325587.jpg +../coco/images/val2014/COCO_val2014_000000325623.jpg +../coco/images/val2014/COCO_val2014_000000325736.jpg +../coco/images/val2014/COCO_val2014_000000325907.jpg +../coco/images/val2014/COCO_val2014_000000326128.jpg +../coco/images/val2014/COCO_val2014_000000326230.jpg +../coco/images/val2014/COCO_val2014_000000326308.jpg +../coco/images/val2014/COCO_val2014_000000326368.jpg +../coco/images/val2014/COCO_val2014_000000326462.jpg +../coco/images/val2014/COCO_val2014_000000326959.jpg +../coco/images/val2014/COCO_val2014_000000327149.jpg +../coco/images/val2014/COCO_val2014_000000327323.jpg +../coco/images/val2014/COCO_val2014_000000327383.jpg +../coco/images/val2014/COCO_val2014_000000327413.jpg +../coco/images/val2014/COCO_val2014_000000327433.jpg +../coco/images/val2014/COCO_val2014_000000327617.jpg +../coco/images/val2014/COCO_val2014_000000327665.jpg +../coco/images/val2014/COCO_val2014_000000327845.jpg +../coco/images/val2014/COCO_val2014_000000327857.jpg +../coco/images/val2014/COCO_val2014_000000327872.jpg +../coco/images/val2014/COCO_val2014_000000327892.jpg +../coco/images/val2014/COCO_val2014_000000328068.jpg +../coco/images/val2014/COCO_val2014_000000328098.jpg +../coco/images/val2014/COCO_val2014_000000328374.jpg +../coco/images/val2014/COCO_val2014_000000328462.jpg +../coco/images/val2014/COCO_val2014_000000328464.jpg +../coco/images/val2014/COCO_val2014_000000328499.jpg +../coco/images/val2014/COCO_val2014_000000328551.jpg +../coco/images/val2014/COCO_val2014_000000328757.jpg +../coco/images/val2014/COCO_val2014_000000328791.jpg +../coco/images/val2014/COCO_val2014_000000328838.jpg +../coco/images/val2014/COCO_val2014_000000329375.jpg +../coco/images/val2014/COCO_val2014_000000329379.jpg +../coco/images/val2014/COCO_val2014_000000329421.jpg +../coco/images/val2014/COCO_val2014_000000329447.jpg +../coco/images/val2014/COCO_val2014_000000329486.jpg +../coco/images/val2014/COCO_val2014_000000329533.jpg +../coco/images/val2014/COCO_val2014_000000330065.jpg +../coco/images/val2014/COCO_val2014_000000330248.jpg +../coco/images/val2014/COCO_val2014_000000330515.jpg +../coco/images/val2014/COCO_val2014_000000330734.jpg +../coco/images/val2014/COCO_val2014_000000330931.jpg +../coco/images/val2014/COCO_val2014_000000331097.jpg +../coco/images/val2014/COCO_val2014_000000331196.jpg +../coco/images/val2014/COCO_val2014_000000331242.jpg +../coco/images/val2014/COCO_val2014_000000331307.jpg +../coco/images/val2014/COCO_val2014_000000331349.jpg +../coco/images/val2014/COCO_val2014_000000331372.jpg +../coco/images/val2014/COCO_val2014_000000331403.jpg +../coco/images/val2014/COCO_val2014_000000331627.jpg +../coco/images/val2014/COCO_val2014_000000331667.jpg +../coco/images/val2014/COCO_val2014_000000331959.jpg +../coco/images/val2014/COCO_val2014_000000332025.jpg +../coco/images/val2014/COCO_val2014_000000332407.jpg +../coco/images/val2014/COCO_val2014_000000332502.jpg +../coco/images/val2014/COCO_val2014_000000332545.jpg +../coco/images/val2014/COCO_val2014_000000332570.jpg +../coco/images/val2014/COCO_val2014_000000332582.jpg +../coco/images/val2014/COCO_val2014_000000332627.jpg +../coco/images/val2014/COCO_val2014_000000332852.jpg +../coco/images/val2014/COCO_val2014_000000332908.jpg +../coco/images/val2014/COCO_val2014_000000333014.jpg +../coco/images/val2014/COCO_val2014_000000333034.jpg +../coco/images/val2014/COCO_val2014_000000333101.jpg +../coco/images/val2014/COCO_val2014_000000333114.jpg +../coco/images/val2014/COCO_val2014_000000333150.jpg +../coco/images/val2014/COCO_val2014_000000333156.jpg +../coco/images/val2014/COCO_val2014_000000333167.jpg +../coco/images/val2014/COCO_val2014_000000333303.jpg +../coco/images/val2014/COCO_val2014_000000333436.jpg +../coco/images/val2014/COCO_val2014_000000333565.jpg +../coco/images/val2014/COCO_val2014_000000333756.jpg +../coco/images/val2014/COCO_val2014_000000333808.jpg +../coco/images/val2014/COCO_val2014_000000333845.jpg +../coco/images/val2014/COCO_val2014_000000333924.jpg +../coco/images/val2014/COCO_val2014_000000334015.jpg +../coco/images/val2014/COCO_val2014_000000334062.jpg +../coco/images/val2014/COCO_val2014_000000334471.jpg +../coco/images/val2014/COCO_val2014_000000334483.jpg +../coco/images/val2014/COCO_val2014_000000334675.jpg +../coco/images/val2014/COCO_val2014_000000334760.jpg +../coco/images/val2014/COCO_val2014_000000335081.jpg +../coco/images/val2014/COCO_val2014_000000335177.jpg +../coco/images/val2014/COCO_val2014_000000335328.jpg +../coco/images/val2014/COCO_val2014_000000335587.jpg +../coco/images/val2014/COCO_val2014_000000335610.jpg +../coco/images/val2014/COCO_val2014_000000335644.jpg +../coco/images/val2014/COCO_val2014_000000335774.jpg +../coco/images/val2014/COCO_val2014_000000335800.jpg +../coco/images/val2014/COCO_val2014_000000335814.jpg +../coco/images/val2014/COCO_val2014_000000335861.jpg +../coco/images/val2014/COCO_val2014_000000335887.jpg +../coco/images/val2014/COCO_val2014_000000335976.jpg +../coco/images/val2014/COCO_val2014_000000335992.jpg +../coco/images/val2014/COCO_val2014_000000336171.jpg +../coco/images/val2014/COCO_val2014_000000336309.jpg +../coco/images/val2014/COCO_val2014_000000336427.jpg +../coco/images/val2014/COCO_val2014_000000336464.jpg +../coco/images/val2014/COCO_val2014_000000336629.jpg +../coco/images/val2014/COCO_val2014_000000336949.jpg +../coco/images/val2014/COCO_val2014_000000337035.jpg +../coco/images/val2014/COCO_val2014_000000337246.jpg +../coco/images/val2014/COCO_val2014_000000337274.jpg +../coco/images/val2014/COCO_val2014_000000337563.jpg +../coco/images/val2014/COCO_val2014_000000337653.jpg +../coco/images/val2014/COCO_val2014_000000337666.jpg +../coco/images/val2014/COCO_val2014_000000337827.jpg +../coco/images/val2014/COCO_val2014_000000338044.jpg +../coco/images/val2014/COCO_val2014_000000338098.jpg +../coco/images/val2014/COCO_val2014_000000338105.jpg +../coco/images/val2014/COCO_val2014_000000338428.jpg +../coco/images/val2014/COCO_val2014_000000338532.jpg +../coco/images/val2014/COCO_val2014_000000338562.jpg +../coco/images/val2014/COCO_val2014_000000338581.jpg +../coco/images/val2014/COCO_val2014_000000338678.jpg +../coco/images/val2014/COCO_val2014_000000338826.jpg +../coco/images/val2014/COCO_val2014_000000339022.jpg +../coco/images/val2014/COCO_val2014_000000339202.jpg +../coco/images/val2014/COCO_val2014_000000339356.jpg +../coco/images/val2014/COCO_val2014_000000339470.jpg +../coco/images/val2014/COCO_val2014_000000339678.jpg +../coco/images/val2014/COCO_val2014_000000339740.jpg +../coco/images/val2014/COCO_val2014_000000339823.jpg +../coco/images/val2014/COCO_val2014_000000339943.jpg +../coco/images/val2014/COCO_val2014_000000340451.jpg +../coco/images/val2014/COCO_val2014_000000340529.jpg +../coco/images/val2014/COCO_val2014_000000340654.jpg +../coco/images/val2014/COCO_val2014_000000340737.jpg +../coco/images/val2014/COCO_val2014_000000340778.jpg +../coco/images/val2014/COCO_val2014_000000340781.jpg +../coco/images/val2014/COCO_val2014_000000340930.jpg +../coco/images/val2014/COCO_val2014_000000341230.jpg +../coco/images/val2014/COCO_val2014_000000341397.jpg +../coco/images/val2014/COCO_val2014_000000341725.jpg +../coco/images/val2014/COCO_val2014_000000341775.jpg +../coco/images/val2014/COCO_val2014_000000341778.jpg +../coco/images/val2014/COCO_val2014_000000342006.jpg +../coco/images/val2014/COCO_val2014_000000342142.jpg +../coco/images/val2014/COCO_val2014_000000342387.jpg +../coco/images/val2014/COCO_val2014_000000342762.jpg +../coco/images/val2014/COCO_val2014_000000343059.jpg +../coco/images/val2014/COCO_val2014_000000343157.jpg +../coco/images/val2014/COCO_val2014_000000343193.jpg +../coco/images/val2014/COCO_val2014_000000343315.jpg +../coco/images/val2014/COCO_val2014_000000343458.jpg +../coco/images/val2014/COCO_val2014_000000343504.jpg +../coco/images/val2014/COCO_val2014_000000343543.jpg +../coco/images/val2014/COCO_val2014_000000343680.jpg +../coco/images/val2014/COCO_val2014_000000343753.jpg +../coco/images/val2014/COCO_val2014_000000343967.jpg +../coco/images/val2014/COCO_val2014_000000344045.jpg +../coco/images/val2014/COCO_val2014_000000344197.jpg +../coco/images/val2014/COCO_val2014_000000344488.jpg +../coco/images/val2014/COCO_val2014_000000344498.jpg +../coco/images/val2014/COCO_val2014_000000344730.jpg +../coco/images/val2014/COCO_val2014_000000344862.jpg +../coco/images/val2014/COCO_val2014_000000344897.jpg +../coco/images/val2014/COCO_val2014_000000344903.jpg +../coco/images/val2014/COCO_val2014_000000345136.jpg +../coco/images/val2014/COCO_val2014_000000345211.jpg +../coco/images/val2014/COCO_val2014_000000345224.jpg +../coco/images/val2014/COCO_val2014_000000345261.jpg +../coco/images/val2014/COCO_val2014_000000345469.jpg +../coco/images/val2014/COCO_val2014_000000345711.jpg +../coco/images/val2014/COCO_val2014_000000345998.jpg +../coco/images/val2014/COCO_val2014_000000346337.jpg +../coco/images/val2014/COCO_val2014_000000346642.jpg +../coco/images/val2014/COCO_val2014_000000346645.jpg +../coco/images/val2014/COCO_val2014_000000346865.jpg +../coco/images/val2014/COCO_val2014_000000346940.jpg +../coco/images/val2014/COCO_val2014_000000347377.jpg +../coco/images/val2014/COCO_val2014_000000347390.jpg +../coco/images/val2014/COCO_val2014_000000347506.jpg +../coco/images/val2014/COCO_val2014_000000347630.jpg +../coco/images/val2014/COCO_val2014_000000347724.jpg +../coco/images/val2014/COCO_val2014_000000347747.jpg +../coco/images/val2014/COCO_val2014_000000347768.jpg +../coco/images/val2014/COCO_val2014_000000347772.jpg +../coco/images/val2014/COCO_val2014_000000347819.jpg +../coco/images/val2014/COCO_val2014_000000347848.jpg +../coco/images/val2014/COCO_val2014_000000347982.jpg +../coco/images/val2014/COCO_val2014_000000348091.jpg +../coco/images/val2014/COCO_val2014_000000348140.jpg +../coco/images/val2014/COCO_val2014_000000348216.jpg +../coco/images/val2014/COCO_val2014_000000348263.jpg +../coco/images/val2014/COCO_val2014_000000348306.jpg +../coco/images/val2014/COCO_val2014_000000348474.jpg +../coco/images/val2014/COCO_val2014_000000348524.jpg +../coco/images/val2014/COCO_val2014_000000348571.jpg +../coco/images/val2014/COCO_val2014_000000348701.jpg +../coco/images/val2014/COCO_val2014_000000348791.jpg +../coco/images/val2014/COCO_val2014_000000348913.jpg +../coco/images/val2014/COCO_val2014_000000348973.jpg +../coco/images/val2014/COCO_val2014_000000349185.jpg +../coco/images/val2014/COCO_val2014_000000349310.jpg +../coco/images/val2014/COCO_val2014_000000349402.jpg +../coco/images/val2014/COCO_val2014_000000349469.jpg +../coco/images/val2014/COCO_val2014_000000349480.jpg +../coco/images/val2014/COCO_val2014_000000349485.jpg +../coco/images/val2014/COCO_val2014_000000349489.jpg +../coco/images/val2014/COCO_val2014_000000349616.jpg +../coco/images/val2014/COCO_val2014_000000349622.jpg +../coco/images/val2014/COCO_val2014_000000349822.jpg +../coco/images/val2014/COCO_val2014_000000350075.jpg +../coco/images/val2014/COCO_val2014_000000350084.jpg +../coco/images/val2014/COCO_val2014_000000350388.jpg +../coco/images/val2014/COCO_val2014_000000350405.jpg +../coco/images/val2014/COCO_val2014_000000350447.jpg +../coco/images/val2014/COCO_val2014_000000350463.jpg +../coco/images/val2014/COCO_val2014_000000350467.jpg +../coco/images/val2014/COCO_val2014_000000350491.jpg +../coco/images/val2014/COCO_val2014_000000350648.jpg +../coco/images/val2014/COCO_val2014_000000350668.jpg +../coco/images/val2014/COCO_val2014_000000350675.jpg +../coco/images/val2014/COCO_val2014_000000350694.jpg +../coco/images/val2014/COCO_val2014_000000350851.jpg +../coco/images/val2014/COCO_val2014_000000351081.jpg +../coco/images/val2014/COCO_val2014_000000351149.jpg +../coco/images/val2014/COCO_val2014_000000351183.jpg +../coco/images/val2014/COCO_val2014_000000351557.jpg +../coco/images/val2014/COCO_val2014_000000351590.jpg +../coco/images/val2014/COCO_val2014_000000351683.jpg +../coco/images/val2014/COCO_val2014_000000351787.jpg +../coco/images/val2014/COCO_val2014_000000351840.jpg +../coco/images/val2014/COCO_val2014_000000352005.jpg +../coco/images/val2014/COCO_val2014_000000352334.jpg +../coco/images/val2014/COCO_val2014_000000352478.jpg +../coco/images/val2014/COCO_val2014_000000352481.jpg +../coco/images/val2014/COCO_val2014_000000352538.jpg +../coco/images/val2014/COCO_val2014_000000352760.jpg +../coco/images/val2014/COCO_val2014_000000353027.jpg +../coco/images/val2014/COCO_val2014_000000353028.jpg +../coco/images/val2014/COCO_val2014_000000353096.jpg +../coco/images/val2014/COCO_val2014_000000353298.jpg +../coco/images/val2014/COCO_val2014_000000353300.jpg +../coco/images/val2014/COCO_val2014_000000353411.jpg +../coco/images/val2014/COCO_val2014_000000353666.jpg +../coco/images/val2014/COCO_val2014_000000353964.jpg +../coco/images/val2014/COCO_val2014_000000354061.jpg +../coco/images/val2014/COCO_val2014_000000354242.jpg +../coco/images/val2014/COCO_val2014_000000354460.jpg +../coco/images/val2014/COCO_val2014_000000354929.jpg +../coco/images/val2014/COCO_val2014_000000355000.jpg +../coco/images/val2014/COCO_val2014_000000355123.jpg +../coco/images/val2014/COCO_val2014_000000355256.jpg +../coco/images/val2014/COCO_val2014_000000355263.jpg +../coco/images/val2014/COCO_val2014_000000355441.jpg +../coco/images/val2014/COCO_val2014_000000355450.jpg +../coco/images/val2014/COCO_val2014_000000355817.jpg +../coco/images/val2014/COCO_val2014_000000355871.jpg +../coco/images/val2014/COCO_val2014_000000355919.jpg +../coco/images/val2014/COCO_val2014_000000356002.jpg +../coco/images/val2014/COCO_val2014_000000356043.jpg +../coco/images/val2014/COCO_val2014_000000356092.jpg +../coco/images/val2014/COCO_val2014_000000356236.jpg +../coco/images/val2014/COCO_val2014_000000356351.jpg +../coco/images/val2014/COCO_val2014_000000356368.jpg +../coco/images/val2014/COCO_val2014_000000356379.jpg +../coco/images/val2014/COCO_val2014_000000356406.jpg +../coco/images/val2014/COCO_val2014_000000356456.jpg +../coco/images/val2014/COCO_val2014_000000356505.jpg +../coco/images/val2014/COCO_val2014_000000356612.jpg +../coco/images/val2014/COCO_val2014_000000357279.jpg +../coco/images/val2014/COCO_val2014_000000357335.jpg +../coco/images/val2014/COCO_val2014_000000357475.jpg +../coco/images/val2014/COCO_val2014_000000357529.jpg +../coco/images/val2014/COCO_val2014_000000357743.jpg +../coco/images/val2014/COCO_val2014_000000357829.jpg +../coco/images/val2014/COCO_val2014_000000357916.jpg +../coco/images/val2014/COCO_val2014_000000357944.jpg +../coco/images/val2014/COCO_val2014_000000358191.jpg +../coco/images/val2014/COCO_val2014_000000358231.jpg +../coco/images/val2014/COCO_val2014_000000358389.jpg +../coco/images/val2014/COCO_val2014_000000358652.jpg +../coco/images/val2014/COCO_val2014_000000358750.jpg +../coco/images/val2014/COCO_val2014_000000358763.jpg +../coco/images/val2014/COCO_val2014_000000358833.jpg +../coco/images/val2014/COCO_val2014_000000358901.jpg +../coco/images/val2014/COCO_val2014_000000359118.jpg +../coco/images/val2014/COCO_val2014_000000359126.jpg +../coco/images/val2014/COCO_val2014_000000359239.jpg +../coco/images/val2014/COCO_val2014_000000359276.jpg +../coco/images/val2014/COCO_val2014_000000359303.jpg +../coco/images/val2014/COCO_val2014_000000359442.jpg +../coco/images/val2014/COCO_val2014_000000359677.jpg +../coco/images/val2014/COCO_val2014_000000359791.jpg +../coco/images/val2014/COCO_val2014_000000359947.jpg +../coco/images/val2014/COCO_val2014_000000360128.jpg +../coco/images/val2014/COCO_val2014_000000360263.jpg +../coco/images/val2014/COCO_val2014_000000360346.jpg +../coco/images/val2014/COCO_val2014_000000360512.jpg +../coco/images/val2014/COCO_val2014_000000360564.jpg +../coco/images/val2014/COCO_val2014_000000360661.jpg +../coco/images/val2014/COCO_val2014_000000360700.jpg +../coco/images/val2014/COCO_val2014_000000360730.jpg +../coco/images/val2014/COCO_val2014_000000360926.jpg +../coco/images/val2014/COCO_val2014_000000361027.jpg +../coco/images/val2014/COCO_val2014_000000361029.jpg +../coco/images/val2014/COCO_val2014_000000361085.jpg +../coco/images/val2014/COCO_val2014_000000361157.jpg +../coco/images/val2014/COCO_val2014_000000361180.jpg +../coco/images/val2014/COCO_val2014_000000361221.jpg +../coco/images/val2014/COCO_val2014_000000361265.jpg +../coco/images/val2014/COCO_val2014_000000361268.jpg +../coco/images/val2014/COCO_val2014_000000361321.jpg +../coco/images/val2014/COCO_val2014_000000361341.jpg +../coco/images/val2014/COCO_val2014_000000361386.jpg +../coco/images/val2014/COCO_val2014_000000361660.jpg +../coco/images/val2014/COCO_val2014_000000361730.jpg +../coco/images/val2014/COCO_val2014_000000361751.jpg +../coco/images/val2014/COCO_val2014_000000361804.jpg +../coco/images/val2014/COCO_val2014_000000361819.jpg +../coco/images/val2014/COCO_val2014_000000361831.jpg +../coco/images/val2014/COCO_val2014_000000361885.jpg +../coco/images/val2014/COCO_val2014_000000361923.jpg +../coco/images/val2014/COCO_val2014_000000362026.jpg +../coco/images/val2014/COCO_val2014_000000362159.jpg +../coco/images/val2014/COCO_val2014_000000362189.jpg +../coco/images/val2014/COCO_val2014_000000362483.jpg +../coco/images/val2014/COCO_val2014_000000362869.jpg +../coco/images/val2014/COCO_val2014_000000362971.jpg +../coco/images/val2014/COCO_val2014_000000363403.jpg +../coco/images/val2014/COCO_val2014_000000363461.jpg +../coco/images/val2014/COCO_val2014_000000363508.jpg +../coco/images/val2014/COCO_val2014_000000363522.jpg +../coco/images/val2014/COCO_val2014_000000363831.jpg +../coco/images/val2014/COCO_val2014_000000363875.jpg +../coco/images/val2014/COCO_val2014_000000364079.jpg +../coco/images/val2014/COCO_val2014_000000364145.jpg +../coco/images/val2014/COCO_val2014_000000364188.jpg +../coco/images/val2014/COCO_val2014_000000364399.jpg +../coco/images/val2014/COCO_val2014_000000364429.jpg +../coco/images/val2014/COCO_val2014_000000364493.jpg +../coco/images/val2014/COCO_val2014_000000364567.jpg +../coco/images/val2014/COCO_val2014_000000364589.jpg +../coco/images/val2014/COCO_val2014_000000364757.jpg +../coco/images/val2014/COCO_val2014_000000365094.jpg +../coco/images/val2014/COCO_val2014_000000365103.jpg +../coco/images/val2014/COCO_val2014_000000365121.jpg +../coco/images/val2014/COCO_val2014_000000365207.jpg +../coco/images/val2014/COCO_val2014_000000365214.jpg +../coco/images/val2014/COCO_val2014_000000365317.jpg +../coco/images/val2014/COCO_val2014_000000365485.jpg +../coco/images/val2014/COCO_val2014_000000365511.jpg +../coco/images/val2014/COCO_val2014_000000365540.jpg +../coco/images/val2014/COCO_val2014_000000365618.jpg +../coco/images/val2014/COCO_val2014_000000365822.jpg +../coco/images/val2014/COCO_val2014_000000365983.jpg +../coco/images/val2014/COCO_val2014_000000366031.jpg +../coco/images/val2014/COCO_val2014_000000366111.jpg +../coco/images/val2014/COCO_val2014_000000366178.jpg +../coco/images/val2014/COCO_val2014_000000366199.jpg +../coco/images/val2014/COCO_val2014_000000366569.jpg +../coco/images/val2014/COCO_val2014_000000366576.jpg +../coco/images/val2014/COCO_val2014_000000366611.jpg +../coco/images/val2014/COCO_val2014_000000366615.jpg +../coco/images/val2014/COCO_val2014_000000366867.jpg +../coco/images/val2014/COCO_val2014_000000367087.jpg +../coco/images/val2014/COCO_val2014_000000367205.jpg +../coco/images/val2014/COCO_val2014_000000367452.jpg +../coco/images/val2014/COCO_val2014_000000367509.jpg +../coco/images/val2014/COCO_val2014_000000367558.jpg +../coco/images/val2014/COCO_val2014_000000367571.jpg +../coco/images/val2014/COCO_val2014_000000367582.jpg +../coco/images/val2014/COCO_val2014_000000367608.jpg +../coco/images/val2014/COCO_val2014_000000367626.jpg +../coco/images/val2014/COCO_val2014_000000367673.jpg +../coco/images/val2014/COCO_val2014_000000367843.jpg +../coco/images/val2014/COCO_val2014_000000367893.jpg +../coco/images/val2014/COCO_val2014_000000367953.jpg +../coco/images/val2014/COCO_val2014_000000368038.jpg +../coco/images/val2014/COCO_val2014_000000368096.jpg +../coco/images/val2014/COCO_val2014_000000368222.jpg +../coco/images/val2014/COCO_val2014_000000368367.jpg +../coco/images/val2014/COCO_val2014_000000368648.jpg +../coco/images/val2014/COCO_val2014_000000368752.jpg +../coco/images/val2014/COCO_val2014_000000369185.jpg +../coco/images/val2014/COCO_val2014_000000369294.jpg +../coco/images/val2014/COCO_val2014_000000369309.jpg +../coco/images/val2014/COCO_val2014_000000369675.jpg +../coco/images/val2014/COCO_val2014_000000369685.jpg +../coco/images/val2014/COCO_val2014_000000369776.jpg +../coco/images/val2014/COCO_val2014_000000369840.jpg +../coco/images/val2014/COCO_val2014_000000369887.jpg +../coco/images/val2014/COCO_val2014_000000369997.jpg +../coco/images/val2014/COCO_val2014_000000370233.jpg +../coco/images/val2014/COCO_val2014_000000370279.jpg +../coco/images/val2014/COCO_val2014_000000370315.jpg +../coco/images/val2014/COCO_val2014_000000370331.jpg +../coco/images/val2014/COCO_val2014_000000370388.jpg +../coco/images/val2014/COCO_val2014_000000370513.jpg +../coco/images/val2014/COCO_val2014_000000370602.jpg +../coco/images/val2014/COCO_val2014_000000370701.jpg +../coco/images/val2014/COCO_val2014_000000370749.jpg +../coco/images/val2014/COCO_val2014_000000370839.jpg +../coco/images/val2014/COCO_val2014_000000370929.jpg +../coco/images/val2014/COCO_val2014_000000371289.jpg +../coco/images/val2014/COCO_val2014_000000371326.jpg +../coco/images/val2014/COCO_val2014_000000371497.jpg +../coco/images/val2014/COCO_val2014_000000371552.jpg +../coco/images/val2014/COCO_val2014_000000371822.jpg +../coco/images/val2014/COCO_val2014_000000371841.jpg +../coco/images/val2014/COCO_val2014_000000371948.jpg +../coco/images/val2014/COCO_val2014_000000371973.jpg +../coco/images/val2014/COCO_val2014_000000372230.jpg +../coco/images/val2014/COCO_val2014_000000372362.jpg +../coco/images/val2014/COCO_val2014_000000372433.jpg +../coco/images/val2014/COCO_val2014_000000372471.jpg +../coco/images/val2014/COCO_val2014_000000372494.jpg +../coco/images/val2014/COCO_val2014_000000372580.jpg +../coco/images/val2014/COCO_val2014_000000372718.jpg +../coco/images/val2014/COCO_val2014_000000372855.jpg +../coco/images/val2014/COCO_val2014_000000373007.jpg +../coco/images/val2014/COCO_val2014_000000373060.jpg +../coco/images/val2014/COCO_val2014_000000373119.jpg +../coco/images/val2014/COCO_val2014_000000373140.jpg +../coco/images/val2014/COCO_val2014_000000373193.jpg +../coco/images/val2014/COCO_val2014_000000373255.jpg +../coco/images/val2014/COCO_val2014_000000373284.jpg +../coco/images/val2014/COCO_val2014_000000373375.jpg +../coco/images/val2014/COCO_val2014_000000373440.jpg +../coco/images/val2014/COCO_val2014_000000373571.jpg +../coco/images/val2014/COCO_val2014_000000373705.jpg +../coco/images/val2014/COCO_val2014_000000373988.jpg +../coco/images/val2014/COCO_val2014_000000374111.jpg +../coco/images/val2014/COCO_val2014_000000374241.jpg +../coco/images/val2014/COCO_val2014_000000374641.jpg +../coco/images/val2014/COCO_val2014_000000374702.jpg +../coco/images/val2014/COCO_val2014_000000374734.jpg +../coco/images/val2014/COCO_val2014_000000374886.jpg +../coco/images/val2014/COCO_val2014_000000375063.jpg +../coco/images/val2014/COCO_val2014_000000375180.jpg +../coco/images/val2014/COCO_val2014_000000375198.jpg +../coco/images/val2014/COCO_val2014_000000375211.jpg +../coco/images/val2014/COCO_val2014_000000375317.jpg +../coco/images/val2014/COCO_val2014_000000375530.jpg +../coco/images/val2014/COCO_val2014_000000375763.jpg +../coco/images/val2014/COCO_val2014_000000375902.jpg +../coco/images/val2014/COCO_val2014_000000375914.jpg +../coco/images/val2014/COCO_val2014_000000376059.jpg +../coco/images/val2014/COCO_val2014_000000376187.jpg +../coco/images/val2014/COCO_val2014_000000376233.jpg +../coco/images/val2014/COCO_val2014_000000376295.jpg +../coco/images/val2014/COCO_val2014_000000376307.jpg +../coco/images/val2014/COCO_val2014_000000376358.jpg +../coco/images/val2014/COCO_val2014_000000376441.jpg +../coco/images/val2014/COCO_val2014_000000376667.jpg +../coco/images/val2014/COCO_val2014_000000376677.jpg +../coco/images/val2014/COCO_val2014_000000376751.jpg +../coco/images/val2014/COCO_val2014_000000376900.jpg +../coco/images/val2014/COCO_val2014_000000376996.jpg +../coco/images/val2014/COCO_val2014_000000377003.jpg +../coco/images/val2014/COCO_val2014_000000377060.jpg +../coco/images/val2014/COCO_val2014_000000377080.jpg +../coco/images/val2014/COCO_val2014_000000377355.jpg +../coco/images/val2014/COCO_val2014_000000377595.jpg +../coco/images/val2014/COCO_val2014_000000377723.jpg +../coco/images/val2014/COCO_val2014_000000377867.jpg +../coco/images/val2014/COCO_val2014_000000377882.jpg +../coco/images/val2014/COCO_val2014_000000377984.jpg +../coco/images/val2014/COCO_val2014_000000378099.jpg +../coco/images/val2014/COCO_val2014_000000378139.jpg +../coco/images/val2014/COCO_val2014_000000378284.jpg +../coco/images/val2014/COCO_val2014_000000378403.jpg +../coco/images/val2014/COCO_val2014_000000378448.jpg +../coco/images/val2014/COCO_val2014_000000378652.jpg +../coco/images/val2014/COCO_val2014_000000378712.jpg +../coco/images/val2014/COCO_val2014_000000378727.jpg +../coco/images/val2014/COCO_val2014_000000378831.jpg +../coco/images/val2014/COCO_val2014_000000379022.jpg +../coco/images/val2014/COCO_val2014_000000379070.jpg +../coco/images/val2014/COCO_val2014_000000379108.jpg +../coco/images/val2014/COCO_val2014_000000379162.jpg +../coco/images/val2014/COCO_val2014_000000379332.jpg +../coco/images/val2014/COCO_val2014_000000379476.jpg +../coco/images/val2014/COCO_val2014_000000379584.jpg +../coco/images/val2014/COCO_val2014_000000379605.jpg +../coco/images/val2014/COCO_val2014_000000379837.jpg +../coco/images/val2014/COCO_val2014_000000379869.jpg +../coco/images/val2014/COCO_val2014_000000380088.jpg +../coco/images/val2014/COCO_val2014_000000380106.jpg +../coco/images/val2014/COCO_val2014_000000380299.jpg +../coco/images/val2014/COCO_val2014_000000380414.jpg +../coco/images/val2014/COCO_val2014_000000380609.jpg +../coco/images/val2014/COCO_val2014_000000380639.jpg +../coco/images/val2014/COCO_val2014_000000380698.jpg +../coco/images/val2014/COCO_val2014_000000380756.jpg +../coco/images/val2014/COCO_val2014_000000380892.jpg +../coco/images/val2014/COCO_val2014_000000381031.jpg +../coco/images/val2014/COCO_val2014_000000381060.jpg +../coco/images/val2014/COCO_val2014_000000381213.jpg +../coco/images/val2014/COCO_val2014_000000381527.jpg +../coco/images/val2014/COCO_val2014_000000381551.jpg +../coco/images/val2014/COCO_val2014_000000381709.jpg +../coco/images/val2014/COCO_val2014_000000382088.jpg +../coco/images/val2014/COCO_val2014_000000382333.jpg +../coco/images/val2014/COCO_val2014_000000382715.jpg +../coco/images/val2014/COCO_val2014_000000382717.jpg +../coco/images/val2014/COCO_val2014_000000382855.jpg +../coco/images/val2014/COCO_val2014_000000383039.jpg +../coco/images/val2014/COCO_val2014_000000383065.jpg +../coco/images/val2014/COCO_val2014_000000383073.jpg +../coco/images/val2014/COCO_val2014_000000383087.jpg +../coco/images/val2014/COCO_val2014_000000383339.jpg +../coco/images/val2014/COCO_val2014_000000383341.jpg +../coco/images/val2014/COCO_val2014_000000383384.jpg +../coco/images/val2014/COCO_val2014_000000383462.jpg +../coco/images/val2014/COCO_val2014_000000384012.jpg +../coco/images/val2014/COCO_val2014_000000384040.jpg +../coco/images/val2014/COCO_val2014_000000384188.jpg +../coco/images/val2014/COCO_val2014_000000384333.jpg +../coco/images/val2014/COCO_val2014_000000384348.jpg +../coco/images/val2014/COCO_val2014_000000384527.jpg +../coco/images/val2014/COCO_val2014_000000384554.jpg +../coco/images/val2014/COCO_val2014_000000384827.jpg +../coco/images/val2014/COCO_val2014_000000385057.jpg +../coco/images/val2014/COCO_val2014_000000385320.jpg +../coco/images/val2014/COCO_val2014_000000385346.jpg +../coco/images/val2014/COCO_val2014_000000385580.jpg +../coco/images/val2014/COCO_val2014_000000385779.jpg +../coco/images/val2014/COCO_val2014_000000385877.jpg +../coco/images/val2014/COCO_val2014_000000385997.jpg +../coco/images/val2014/COCO_val2014_000000386119.jpg +../coco/images/val2014/COCO_val2014_000000386134.jpg +../coco/images/val2014/COCO_val2014_000000386187.jpg +../coco/images/val2014/COCO_val2014_000000386224.jpg +../coco/images/val2014/COCO_val2014_000000386457.jpg +../coco/images/val2014/COCO_val2014_000000386585.jpg +../coco/images/val2014/COCO_val2014_000000386661.jpg +../coco/images/val2014/COCO_val2014_000000386707.jpg +../coco/images/val2014/COCO_val2014_000000386755.jpg +../coco/images/val2014/COCO_val2014_000000386786.jpg +../coco/images/val2014/COCO_val2014_000000386929.jpg +../coco/images/val2014/COCO_val2014_000000387150.jpg +../coco/images/val2014/COCO_val2014_000000387244.jpg +../coco/images/val2014/COCO_val2014_000000387369.jpg +../coco/images/val2014/COCO_val2014_000000387383.jpg +../coco/images/val2014/COCO_val2014_000000387387.jpg +../coco/images/val2014/COCO_val2014_000000387551.jpg +../coco/images/val2014/COCO_val2014_000000387576.jpg +../coco/images/val2014/COCO_val2014_000000387655.jpg +../coco/images/val2014/COCO_val2014_000000387696.jpg +../coco/images/val2014/COCO_val2014_000000387776.jpg +../coco/images/val2014/COCO_val2014_000000387850.jpg +../coco/images/val2014/COCO_val2014_000000388009.jpg +../coco/images/val2014/COCO_val2014_000000388325.jpg +../coco/images/val2014/COCO_val2014_000000388413.jpg +../coco/images/val2014/COCO_val2014_000000388464.jpg +../coco/images/val2014/COCO_val2014_000000388677.jpg +../coco/images/val2014/COCO_val2014_000000388721.jpg +../coco/images/val2014/COCO_val2014_000000388881.jpg +../coco/images/val2014/COCO_val2014_000000388903.jpg +../coco/images/val2014/COCO_val2014_000000389056.jpg +../coco/images/val2014/COCO_val2014_000000389316.jpg +../coco/images/val2014/COCO_val2014_000000389340.jpg +../coco/images/val2014/COCO_val2014_000000389378.jpg +../coco/images/val2014/COCO_val2014_000000389604.jpg +../coco/images/val2014/COCO_val2014_000000389622.jpg +../coco/images/val2014/COCO_val2014_000000389644.jpg +../coco/images/val2014/COCO_val2014_000000389738.jpg +../coco/images/val2014/COCO_val2014_000000389753.jpg +../coco/images/val2014/COCO_val2014_000000389843.jpg +../coco/images/val2014/COCO_val2014_000000390017.jpg +../coco/images/val2014/COCO_val2014_000000390068.jpg +../coco/images/val2014/COCO_val2014_000000390137.jpg +../coco/images/val2014/COCO_val2014_000000390238.jpg +../coco/images/val2014/COCO_val2014_000000390246.jpg +../coco/images/val2014/COCO_val2014_000000390322.jpg +../coco/images/val2014/COCO_val2014_000000390585.jpg +../coco/images/val2014/COCO_val2014_000000390685.jpg +../coco/images/val2014/COCO_val2014_000000390689.jpg +../coco/images/val2014/COCO_val2014_000000390769.jpg +../coco/images/val2014/COCO_val2014_000000390795.jpg +../coco/images/val2014/COCO_val2014_000000390902.jpg +../coco/images/val2014/COCO_val2014_000000391225.jpg +../coco/images/val2014/COCO_val2014_000000391365.jpg +../coco/images/val2014/COCO_val2014_000000391463.jpg +../coco/images/val2014/COCO_val2014_000000391689.jpg +../coco/images/val2014/COCO_val2014_000000391862.jpg +../coco/images/val2014/COCO_val2014_000000391940.jpg +../coco/images/val2014/COCO_val2014_000000391978.jpg +../coco/images/val2014/COCO_val2014_000000392004.jpg +../coco/images/val2014/COCO_val2014_000000392251.jpg +../coco/images/val2014/COCO_val2014_000000392364.jpg +../coco/images/val2014/COCO_val2014_000000392392.jpg +../coco/images/val2014/COCO_val2014_000000392753.jpg +../coco/images/val2014/COCO_val2014_000000392981.jpg +../coco/images/val2014/COCO_val2014_000000393031.jpg +../coco/images/val2014/COCO_val2014_000000393282.jpg +../coco/images/val2014/COCO_val2014_000000393372.jpg +../coco/images/val2014/COCO_val2014_000000393497.jpg +../coco/images/val2014/COCO_val2014_000000393674.jpg +../coco/images/val2014/COCO_val2014_000000393692.jpg +../coco/images/val2014/COCO_val2014_000000393794.jpg +../coco/images/val2014/COCO_val2014_000000393874.jpg +../coco/images/val2014/COCO_val2014_000000394132.jpg +../coco/images/val2014/COCO_val2014_000000394157.jpg +../coco/images/val2014/COCO_val2014_000000394352.jpg +../coco/images/val2014/COCO_val2014_000000394559.jpg +../coco/images/val2014/COCO_val2014_000000394611.jpg +../coco/images/val2014/COCO_val2014_000000394677.jpg +../coco/images/val2014/COCO_val2014_000000395180.jpg +../coco/images/val2014/COCO_val2014_000000395290.jpg +../coco/images/val2014/COCO_val2014_000000395463.jpg +../coco/images/val2014/COCO_val2014_000000395531.jpg +../coco/images/val2014/COCO_val2014_000000395634.jpg +../coco/images/val2014/COCO_val2014_000000395665.jpg +../coco/images/val2014/COCO_val2014_000000395717.jpg +../coco/images/val2014/COCO_val2014_000000395723.jpg +../coco/images/val2014/COCO_val2014_000000395801.jpg +../coco/images/val2014/COCO_val2014_000000396167.jpg +../coco/images/val2014/COCO_val2014_000000396178.jpg +../coco/images/val2014/COCO_val2014_000000396369.jpg +../coco/images/val2014/COCO_val2014_000000396526.jpg +../coco/images/val2014/COCO_val2014_000000396736.jpg +../coco/images/val2014/COCO_val2014_000000396997.jpg +../coco/images/val2014/COCO_val2014_000000397322.jpg +../coco/images/val2014/COCO_val2014_000000397475.jpg +../coco/images/val2014/COCO_val2014_000000398007.jpg +../coco/images/val2014/COCO_val2014_000000398045.jpg +../coco/images/val2014/COCO_val2014_000000398119.jpg +../coco/images/val2014/COCO_val2014_000000398222.jpg +../coco/images/val2014/COCO_val2014_000000398438.jpg +../coco/images/val2014/COCO_val2014_000000398450.jpg +../coco/images/val2014/COCO_val2014_000000398519.jpg +../coco/images/val2014/COCO_val2014_000000398604.jpg +../coco/images/val2014/COCO_val2014_000000398606.jpg +../coco/images/val2014/COCO_val2014_000000398637.jpg +../coco/images/val2014/COCO_val2014_000000398753.jpg +../coco/images/val2014/COCO_val2014_000000398866.jpg +../coco/images/val2014/COCO_val2014_000000398905.jpg +../coco/images/val2014/COCO_val2014_000000399205.jpg +../coco/images/val2014/COCO_val2014_000000399545.jpg +../coco/images/val2014/COCO_val2014_000000399567.jpg +../coco/images/val2014/COCO_val2014_000000399655.jpg +../coco/images/val2014/COCO_val2014_000000399741.jpg +../coco/images/val2014/COCO_val2014_000000399744.jpg +../coco/images/val2014/COCO_val2014_000000399822.jpg +../coco/images/val2014/COCO_val2014_000000399832.jpg +../coco/images/val2014/COCO_val2014_000000399865.jpg +../coco/images/val2014/COCO_val2014_000000399991.jpg +../coco/images/val2014/COCO_val2014_000000400044.jpg +../coco/images/val2014/COCO_val2014_000000400046.jpg +../coco/images/val2014/COCO_val2014_000000400189.jpg +../coco/images/val2014/COCO_val2014_000000400202.jpg +../coco/images/val2014/COCO_val2014_000000400317.jpg +../coco/images/val2014/COCO_val2014_000000400975.jpg +../coco/images/val2014/COCO_val2014_000000400976.jpg +../coco/images/val2014/COCO_val2014_000000401028.jpg +../coco/images/val2014/COCO_val2014_000000401088.jpg +../coco/images/val2014/COCO_val2014_000000401092.jpg +../coco/images/val2014/COCO_val2014_000000401124.jpg +../coco/images/val2014/COCO_val2014_000000401320.jpg +../coco/images/val2014/COCO_val2014_000000401384.jpg +../coco/images/val2014/COCO_val2014_000000401425.jpg +../coco/images/val2014/COCO_val2014_000000401591.jpg +../coco/images/val2014/COCO_val2014_000000401860.jpg +../coco/images/val2014/COCO_val2014_000000401892.jpg +../coco/images/val2014/COCO_val2014_000000402000.jpg +../coco/images/val2014/COCO_val2014_000000402334.jpg +../coco/images/val2014/COCO_val2014_000000402717.jpg +../coco/images/val2014/COCO_val2014_000000402723.jpg +../coco/images/val2014/COCO_val2014_000000402867.jpg +../coco/images/val2014/COCO_val2014_000000402887.jpg +../coco/images/val2014/COCO_val2014_000000402909.jpg +../coco/images/val2014/COCO_val2014_000000403087.jpg +../coco/images/val2014/COCO_val2014_000000403180.jpg +../coco/images/val2014/COCO_val2014_000000403315.jpg +../coco/images/val2014/COCO_val2014_000000403378.jpg +../coco/images/val2014/COCO_val2014_000000403639.jpg +../coco/images/val2014/COCO_val2014_000000403675.jpg +../coco/images/val2014/COCO_val2014_000000403950.jpg +../coco/images/val2014/COCO_val2014_000000403975.jpg +../coco/images/val2014/COCO_val2014_000000404027.jpg +../coco/images/val2014/COCO_val2014_000000404601.jpg +../coco/images/val2014/COCO_val2014_000000404602.jpg +../coco/images/val2014/COCO_val2014_000000404886.jpg +../coco/images/val2014/COCO_val2014_000000404889.jpg +../coco/images/val2014/COCO_val2014_000000405062.jpg +../coco/images/val2014/COCO_val2014_000000405104.jpg +../coco/images/val2014/COCO_val2014_000000405226.jpg +../coco/images/val2014/COCO_val2014_000000405306.jpg +../coco/images/val2014/COCO_val2014_000000405530.jpg +../coco/images/val2014/COCO_val2014_000000405970.jpg +../coco/images/val2014/COCO_val2014_000000406053.jpg +../coco/images/val2014/COCO_val2014_000000406211.jpg +../coco/images/val2014/COCO_val2014_000000406217.jpg +../coco/images/val2014/COCO_val2014_000000406417.jpg +../coco/images/val2014/COCO_val2014_000000406451.jpg +../coco/images/val2014/COCO_val2014_000000406841.jpg +../coco/images/val2014/COCO_val2014_000000406848.jpg +../coco/images/val2014/COCO_val2014_000000406976.jpg +../coco/images/val2014/COCO_val2014_000000407017.jpg +../coco/images/val2014/COCO_val2014_000000407259.jpg +../coco/images/val2014/COCO_val2014_000000407443.jpg +../coco/images/val2014/COCO_val2014_000000407524.jpg +../coco/images/val2014/COCO_val2014_000000407650.jpg +../coco/images/val2014/COCO_val2014_000000407945.jpg +../coco/images/val2014/COCO_val2014_000000407948.jpg +../coco/images/val2014/COCO_val2014_000000407960.jpg +../coco/images/val2014/COCO_val2014_000000408120.jpg +../coco/images/val2014/COCO_val2014_000000408208.jpg +../coco/images/val2014/COCO_val2014_000000408255.jpg +../coco/images/val2014/COCO_val2014_000000408336.jpg +../coco/images/val2014/COCO_val2014_000000408534.jpg +../coco/images/val2014/COCO_val2014_000000408774.jpg +../coco/images/val2014/COCO_val2014_000000408830.jpg +../coco/images/val2014/COCO_val2014_000000408873.jpg +../coco/images/val2014/COCO_val2014_000000409100.jpg +../coco/images/val2014/COCO_val2014_000000409115.jpg +../coco/images/val2014/COCO_val2014_000000409181.jpg +../coco/images/val2014/COCO_val2014_000000409542.jpg +../coco/images/val2014/COCO_val2014_000000409725.jpg +../coco/images/val2014/COCO_val2014_000000409964.jpg +../coco/images/val2014/COCO_val2014_000000410068.jpg +../coco/images/val2014/COCO_val2014_000000410576.jpg +../coco/images/val2014/COCO_val2014_000000410583.jpg +../coco/images/val2014/COCO_val2014_000000410587.jpg +../coco/images/val2014/COCO_val2014_000000410612.jpg +../coco/images/val2014/COCO_val2014_000000410724.jpg +../coco/images/val2014/COCO_val2014_000000411187.jpg +../coco/images/val2014/COCO_val2014_000000411188.jpg +../coco/images/val2014/COCO_val2014_000000411405.jpg +../coco/images/val2014/COCO_val2014_000000411768.jpg +../coco/images/val2014/COCO_val2014_000000411774.jpg +../coco/images/val2014/COCO_val2014_000000411821.jpg +../coco/images/val2014/COCO_val2014_000000412015.jpg +../coco/images/val2014/COCO_val2014_000000412204.jpg +../coco/images/val2014/COCO_val2014_000000412240.jpg +../coco/images/val2014/COCO_val2014_000000412364.jpg +../coco/images/val2014/COCO_val2014_000000412437.jpg +../coco/images/val2014/COCO_val2014_000000412464.jpg +../coco/images/val2014/COCO_val2014_000000412510.jpg +../coco/images/val2014/COCO_val2014_000000412551.jpg +../coco/images/val2014/COCO_val2014_000000412592.jpg +../coco/images/val2014/COCO_val2014_000000412604.jpg +../coco/images/val2014/COCO_val2014_000000412753.jpg +../coco/images/val2014/COCO_val2014_000000413339.jpg +../coco/images/val2014/COCO_val2014_000000413341.jpg +../coco/images/val2014/COCO_val2014_000000413616.jpg +../coco/images/val2014/COCO_val2014_000000413822.jpg +../coco/images/val2014/COCO_val2014_000000413839.jpg +../coco/images/val2014/COCO_val2014_000000413950.jpg +../coco/images/val2014/COCO_val2014_000000413959.jpg +../coco/images/val2014/COCO_val2014_000000414122.jpg +../coco/images/val2014/COCO_val2014_000000414216.jpg +../coco/images/val2014/COCO_val2014_000000414261.jpg +../coco/images/val2014/COCO_val2014_000000414289.jpg +../coco/images/val2014/COCO_val2014_000000414661.jpg +../coco/images/val2014/COCO_val2014_000000414698.jpg +../coco/images/val2014/COCO_val2014_000000414857.jpg +../coco/images/val2014/COCO_val2014_000000415020.jpg +../coco/images/val2014/COCO_val2014_000000415163.jpg +../coco/images/val2014/COCO_val2014_000000415393.jpg +../coco/images/val2014/COCO_val2014_000000415434.jpg +../coco/images/val2014/COCO_val2014_000000415585.jpg +../coco/images/val2014/COCO_val2014_000000415770.jpg +../coco/images/val2014/COCO_val2014_000000415798.jpg +../coco/images/val2014/COCO_val2014_000000415841.jpg +../coco/images/val2014/COCO_val2014_000000415882.jpg +../coco/images/val2014/COCO_val2014_000000415885.jpg +../coco/images/val2014/COCO_val2014_000000415958.jpg +../coco/images/val2014/COCO_val2014_000000416059.jpg +../coco/images/val2014/COCO_val2014_000000416088.jpg +../coco/images/val2014/COCO_val2014_000000416385.jpg +../coco/images/val2014/COCO_val2014_000000416405.jpg +../coco/images/val2014/COCO_val2014_000000416467.jpg +../coco/images/val2014/COCO_val2014_000000416489.jpg +../coco/images/val2014/COCO_val2014_000000416660.jpg +../coco/images/val2014/COCO_val2014_000000416668.jpg +../coco/images/val2014/COCO_val2014_000000416885.jpg +../coco/images/val2014/COCO_val2014_000000417416.jpg +../coco/images/val2014/COCO_val2014_000000417727.jpg +../coco/images/val2014/COCO_val2014_000000417846.jpg +../coco/images/val2014/COCO_val2014_000000417946.jpg +../coco/images/val2014/COCO_val2014_000000417965.jpg +../coco/images/val2014/COCO_val2014_000000418226.jpg +../coco/images/val2014/COCO_val2014_000000418275.jpg +../coco/images/val2014/COCO_val2014_000000418288.jpg +../coco/images/val2014/COCO_val2014_000000418533.jpg +../coco/images/val2014/COCO_val2014_000000418548.jpg +../coco/images/val2014/COCO_val2014_000000418565.jpg +../coco/images/val2014/COCO_val2014_000000418961.jpg +../coco/images/val2014/COCO_val2014_000000419216.jpg +../coco/images/val2014/COCO_val2014_000000419371.jpg +../coco/images/val2014/COCO_val2014_000000419379.jpg +../coco/images/val2014/COCO_val2014_000000419386.jpg +../coco/images/val2014/COCO_val2014_000000419558.jpg +../coco/images/val2014/COCO_val2014_000000419848.jpg +../coco/images/val2014/COCO_val2014_000000420059.jpg +../coco/images/val2014/COCO_val2014_000000420230.jpg +../coco/images/val2014/COCO_val2014_000000420339.jpg +../coco/images/val2014/COCO_val2014_000000420546.jpg +../coco/images/val2014/COCO_val2014_000000420610.jpg +../coco/images/val2014/COCO_val2014_000000420882.jpg +../coco/images/val2014/COCO_val2014_000000420929.jpg +../coco/images/val2014/COCO_val2014_000000421361.jpg +../coco/images/val2014/COCO_val2014_000000421401.jpg +../coco/images/val2014/COCO_val2014_000000421673.jpg +../coco/images/val2014/COCO_val2014_000000422424.jpg +../coco/images/val2014/COCO_val2014_000000422432.jpg +../coco/images/val2014/COCO_val2014_000000422536.jpg +../coco/images/val2014/COCO_val2014_000000422622.jpg +../coco/images/val2014/COCO_val2014_000000422706.jpg +../coco/images/val2014/COCO_val2014_000000422778.jpg +../coco/images/val2014/COCO_val2014_000000422833.jpg +../coco/images/val2014/COCO_val2014_000000422870.jpg +../coco/images/val2014/COCO_val2014_000000423005.jpg +../coco/images/val2014/COCO_val2014_000000423048.jpg +../coco/images/val2014/COCO_val2014_000000423104.jpg +../coco/images/val2014/COCO_val2014_000000423123.jpg +../coco/images/val2014/COCO_val2014_000000423172.jpg +../coco/images/val2014/COCO_val2014_000000423189.jpg +../coco/images/val2014/COCO_val2014_000000423337.jpg +../coco/images/val2014/COCO_val2014_000000423613.jpg +../coco/images/val2014/COCO_val2014_000000423617.jpg +../coco/images/val2014/COCO_val2014_000000423715.jpg +../coco/images/val2014/COCO_val2014_000000423740.jpg +../coco/images/val2014/COCO_val2014_000000424147.jpg +../coco/images/val2014/COCO_val2014_000000424155.jpg +../coco/images/val2014/COCO_val2014_000000424192.jpg +../coco/images/val2014/COCO_val2014_000000424247.jpg +../coco/images/val2014/COCO_val2014_000000424293.jpg +../coco/images/val2014/COCO_val2014_000000424378.jpg +../coco/images/val2014/COCO_val2014_000000424392.jpg +../coco/images/val2014/COCO_val2014_000000424633.jpg +../coco/images/val2014/COCO_val2014_000000424975.jpg +../coco/images/val2014/COCO_val2014_000000425303.jpg +../coco/images/val2014/COCO_val2014_000000425324.jpg +../coco/images/val2014/COCO_val2014_000000425371.jpg +../coco/images/val2014/COCO_val2014_000000425388.jpg +../coco/images/val2014/COCO_val2014_000000425462.jpg +../coco/images/val2014/COCO_val2014_000000425475.jpg +../coco/images/val2014/COCO_val2014_000000425526.jpg +../coco/images/val2014/COCO_val2014_000000425848.jpg +../coco/images/val2014/COCO_val2014_000000425870.jpg +../coco/images/val2014/COCO_val2014_000000425948.jpg +../coco/images/val2014/COCO_val2014_000000425973.jpg +../coco/images/val2014/COCO_val2014_000000426070.jpg +../coco/images/val2014/COCO_val2014_000000426075.jpg +../coco/images/val2014/COCO_val2014_000000426377.jpg +../coco/images/val2014/COCO_val2014_000000426532.jpg +../coco/images/val2014/COCO_val2014_000000426795.jpg +../coco/images/val2014/COCO_val2014_000000426852.jpg +../coco/images/val2014/COCO_val2014_000000426917.jpg +../coco/images/val2014/COCO_val2014_000000427223.jpg +../coco/images/val2014/COCO_val2014_000000427500.jpg +../coco/images/val2014/COCO_val2014_000000427561.jpg +../coco/images/val2014/COCO_val2014_000000427782.jpg +../coco/images/val2014/COCO_val2014_000000427965.jpg +../coco/images/val2014/COCO_val2014_000000428178.jpg +../coco/images/val2014/COCO_val2014_000000428231.jpg +../coco/images/val2014/COCO_val2014_000000428234.jpg +../coco/images/val2014/COCO_val2014_000000428248.jpg +../coco/images/val2014/COCO_val2014_000000428366.jpg +../coco/images/val2014/COCO_val2014_000000428562.jpg +../coco/images/val2014/COCO_val2014_000000428812.jpg +../coco/images/val2014/COCO_val2014_000000428867.jpg +../coco/images/val2014/COCO_val2014_000000429293.jpg +../coco/images/val2014/COCO_val2014_000000429369.jpg +../coco/images/val2014/COCO_val2014_000000429718.jpg +../coco/images/val2014/COCO_val2014_000000429924.jpg +../coco/images/val2014/COCO_val2014_000000429996.jpg +../coco/images/val2014/COCO_val2014_000000430056.jpg +../coco/images/val2014/COCO_val2014_000000430073.jpg +../coco/images/val2014/COCO_val2014_000000430238.jpg +../coco/images/val2014/COCO_val2014_000000430286.jpg +../coco/images/val2014/COCO_val2014_000000430467.jpg +../coco/images/val2014/COCO_val2014_000000430518.jpg +../coco/images/val2014/COCO_val2014_000000430583.jpg +../coco/images/val2014/COCO_val2014_000000430590.jpg +../coco/images/val2014/COCO_val2014_000000430744.jpg +../coco/images/val2014/COCO_val2014_000000430788.jpg +../coco/images/val2014/COCO_val2014_000000430875.jpg +../coco/images/val2014/COCO_val2014_000000430973.jpg +../coco/images/val2014/COCO_val2014_000000431047.jpg +../coco/images/val2014/COCO_val2014_000000431236.jpg +../coco/images/val2014/COCO_val2014_000000431257.jpg +../coco/images/val2014/COCO_val2014_000000431464.jpg +../coco/images/val2014/COCO_val2014_000000431472.jpg +../coco/images/val2014/COCO_val2014_000000431521.jpg +../coco/images/val2014/COCO_val2014_000000431573.jpg +../coco/images/val2014/COCO_val2014_000000431594.jpg +../coco/images/val2014/COCO_val2014_000000431615.jpg +../coco/images/val2014/COCO_val2014_000000431671.jpg +../coco/images/val2014/COCO_val2014_000000431727.jpg +../coco/images/val2014/COCO_val2014_000000431742.jpg +../coco/images/val2014/COCO_val2014_000000432125.jpg +../coco/images/val2014/COCO_val2014_000000432160.jpg +../coco/images/val2014/COCO_val2014_000000432276.jpg +../coco/images/val2014/COCO_val2014_000000432534.jpg +../coco/images/val2014/COCO_val2014_000000432898.jpg +../coco/images/val2014/COCO_val2014_000000433075.jpg +../coco/images/val2014/COCO_val2014_000000433554.jpg +../coco/images/val2014/COCO_val2014_000000433714.jpg +../coco/images/val2014/COCO_val2014_000000433804.jpg +../coco/images/val2014/COCO_val2014_000000433845.jpg +../coco/images/val2014/COCO_val2014_000000433883.jpg +../coco/images/val2014/COCO_val2014_000000433892.jpg +../coco/images/val2014/COCO_val2014_000000433963.jpg +../coco/images/val2014/COCO_val2014_000000433980.jpg +../coco/images/val2014/COCO_val2014_000000434006.jpg +../coco/images/val2014/COCO_val2014_000000434060.jpg +../coco/images/val2014/COCO_val2014_000000434219.jpg +../coco/images/val2014/COCO_val2014_000000434410.jpg +../coco/images/val2014/COCO_val2014_000000434488.jpg +../coco/images/val2014/COCO_val2014_000000434580.jpg +../coco/images/val2014/COCO_val2014_000000434622.jpg +../coco/images/val2014/COCO_val2014_000000434657.jpg +../coco/images/val2014/COCO_val2014_000000434787.jpg +../coco/images/val2014/COCO_val2014_000000434898.jpg +../coco/images/val2014/COCO_val2014_000000434915.jpg +../coco/images/val2014/COCO_val2014_000000435205.jpg +../coco/images/val2014/COCO_val2014_000000435206.jpg +../coco/images/val2014/COCO_val2014_000000435359.jpg +../coco/images/val2014/COCO_val2014_000000435391.jpg +../coco/images/val2014/COCO_val2014_000000435466.jpg +../coco/images/val2014/COCO_val2014_000000435533.jpg +../coco/images/val2014/COCO_val2014_000000435569.jpg +../coco/images/val2014/COCO_val2014_000000435598.jpg +../coco/images/val2014/COCO_val2014_000000435671.jpg +../coco/images/val2014/COCO_val2014_000000435703.jpg +../coco/images/val2014/COCO_val2014_000000435707.jpg +../coco/images/val2014/COCO_val2014_000000435742.jpg +../coco/images/val2014/COCO_val2014_000000435820.jpg +../coco/images/val2014/COCO_val2014_000000435823.jpg +../coco/images/val2014/COCO_val2014_000000435910.jpg +../coco/images/val2014/COCO_val2014_000000436044.jpg +../coco/images/val2014/COCO_val2014_000000436203.jpg +../coco/images/val2014/COCO_val2014_000000436350.jpg +../coco/images/val2014/COCO_val2014_000000436413.jpg +../coco/images/val2014/COCO_val2014_000000436603.jpg +../coco/images/val2014/COCO_val2014_000000436653.jpg +../coco/images/val2014/COCO_val2014_000000436694.jpg +../coco/images/val2014/COCO_val2014_000000436696.jpg +../coco/images/val2014/COCO_val2014_000000436738.jpg +../coco/images/val2014/COCO_val2014_000000437284.jpg +../coco/images/val2014/COCO_val2014_000000437298.jpg +../coco/images/val2014/COCO_val2014_000000437303.jpg +../coco/images/val2014/COCO_val2014_000000437393.jpg +../coco/images/val2014/COCO_val2014_000000437459.jpg +../coco/images/val2014/COCO_val2014_000000437720.jpg +../coco/images/val2014/COCO_val2014_000000437923.jpg +../coco/images/val2014/COCO_val2014_000000438103.jpg +../coco/images/val2014/COCO_val2014_000000438220.jpg +../coco/images/val2014/COCO_val2014_000000438807.jpg +../coco/images/val2014/COCO_val2014_000000438851.jpg +../coco/images/val2014/COCO_val2014_000000438985.jpg +../coco/images/val2014/COCO_val2014_000000438999.jpg +../coco/images/val2014/COCO_val2014_000000439015.jpg +../coco/images/val2014/COCO_val2014_000000439339.jpg +../coco/images/val2014/COCO_val2014_000000439522.jpg +../coco/images/val2014/COCO_val2014_000000439651.jpg +../coco/images/val2014/COCO_val2014_000000439777.jpg +../coco/images/val2014/COCO_val2014_000000440043.jpg +../coco/images/val2014/COCO_val2014_000000440062.jpg +../coco/images/val2014/COCO_val2014_000000440226.jpg +../coco/images/val2014/COCO_val2014_000000440299.jpg +../coco/images/val2014/COCO_val2014_000000440486.jpg +../coco/images/val2014/COCO_val2014_000000440500.jpg +../coco/images/val2014/COCO_val2014_000000440617.jpg +../coco/images/val2014/COCO_val2014_000000440646.jpg +../coco/images/val2014/COCO_val2014_000000440706.jpg +../coco/images/val2014/COCO_val2014_000000440779.jpg +../coco/images/val2014/COCO_val2014_000000441009.jpg +../coco/images/val2014/COCO_val2014_000000441072.jpg +../coco/images/val2014/COCO_val2014_000000441156.jpg +../coco/images/val2014/COCO_val2014_000000441211.jpg +../coco/images/val2014/COCO_val2014_000000441247.jpg +../coco/images/val2014/COCO_val2014_000000441496.jpg +../coco/images/val2014/COCO_val2014_000000441500.jpg +../coco/images/val2014/COCO_val2014_000000441695.jpg +../coco/images/val2014/COCO_val2014_000000441788.jpg +../coco/images/val2014/COCO_val2014_000000441824.jpg +../coco/images/val2014/COCO_val2014_000000441863.jpg +../coco/images/val2014/COCO_val2014_000000441969.jpg +../coco/images/val2014/COCO_val2014_000000441974.jpg +../coco/images/val2014/COCO_val2014_000000442128.jpg +../coco/images/val2014/COCO_val2014_000000442210.jpg +../coco/images/val2014/COCO_val2014_000000442223.jpg +../coco/images/val2014/COCO_val2014_000000442323.jpg +../coco/images/val2014/COCO_val2014_000000442387.jpg +../coco/images/val2014/COCO_val2014_000000442417.jpg +../coco/images/val2014/COCO_val2014_000000442523.jpg +../coco/images/val2014/COCO_val2014_000000442539.jpg +../coco/images/val2014/COCO_val2014_000000442746.jpg +../coco/images/val2014/COCO_val2014_000000442822.jpg +../coco/images/val2014/COCO_val2014_000000442877.jpg +../coco/images/val2014/COCO_val2014_000000442952.jpg +../coco/images/val2014/COCO_val2014_000000443313.jpg +../coco/images/val2014/COCO_val2014_000000443334.jpg +../coco/images/val2014/COCO_val2014_000000443343.jpg +../coco/images/val2014/COCO_val2014_000000443361.jpg +../coco/images/val2014/COCO_val2014_000000443498.jpg +../coco/images/val2014/COCO_val2014_000000443537.jpg +../coco/images/val2014/COCO_val2014_000000443591.jpg +../coco/images/val2014/COCO_val2014_000000443723.jpg +../coco/images/val2014/COCO_val2014_000000443797.jpg +../coco/images/val2014/COCO_val2014_000000443969.jpg +../coco/images/val2014/COCO_val2014_000000444236.jpg +../coco/images/val2014/COCO_val2014_000000444304.jpg +../coco/images/val2014/COCO_val2014_000000444390.jpg +../coco/images/val2014/COCO_val2014_000000444495.jpg +../coco/images/val2014/COCO_val2014_000000444626.jpg +../coco/images/val2014/COCO_val2014_000000444746.jpg +../coco/images/val2014/COCO_val2014_000000444755.jpg +../coco/images/val2014/COCO_val2014_000000444879.jpg +../coco/images/val2014/COCO_val2014_000000444888.jpg +../coco/images/val2014/COCO_val2014_000000445009.jpg +../coco/images/val2014/COCO_val2014_000000445014.jpg +../coco/images/val2014/COCO_val2014_000000445200.jpg +../coco/images/val2014/COCO_val2014_000000445267.jpg +../coco/images/val2014/COCO_val2014_000000445512.jpg +../coco/images/val2014/COCO_val2014_000000445567.jpg +../coco/images/val2014/COCO_val2014_000000445594.jpg +../coco/images/val2014/COCO_val2014_000000445602.jpg +../coco/images/val2014/COCO_val2014_000000445643.jpg +../coco/images/val2014/COCO_val2014_000000446324.jpg +../coco/images/val2014/COCO_val2014_000000446358.jpg +../coco/images/val2014/COCO_val2014_000000446623.jpg +../coco/images/val2014/COCO_val2014_000000446990.jpg +../coco/images/val2014/COCO_val2014_000000447208.jpg +../coco/images/val2014/COCO_val2014_000000447242.jpg +../coco/images/val2014/COCO_val2014_000000447354.jpg +../coco/images/val2014/COCO_val2014_000000447378.jpg +../coco/images/val2014/COCO_val2014_000000447501.jpg +../coco/images/val2014/COCO_val2014_000000447779.jpg +../coco/images/val2014/COCO_val2014_000000448053.jpg +../coco/images/val2014/COCO_val2014_000000448114.jpg +../coco/images/val2014/COCO_val2014_000000448117.jpg +../coco/images/val2014/COCO_val2014_000000448236.jpg +../coco/images/val2014/COCO_val2014_000000448256.jpg +../coco/images/val2014/COCO_val2014_000000448278.jpg +../coco/images/val2014/COCO_val2014_000000448511.jpg +../coco/images/val2014/COCO_val2014_000000448690.jpg +../coco/images/val2014/COCO_val2014_000000448786.jpg +../coco/images/val2014/COCO_val2014_000000448923.jpg +../coco/images/val2014/COCO_val2014_000000448998.jpg +../coco/images/val2014/COCO_val2014_000000449031.jpg +../coco/images/val2014/COCO_val2014_000000449338.jpg +../coco/images/val2014/COCO_val2014_000000449392.jpg +../coco/images/val2014/COCO_val2014_000000449412.jpg +../coco/images/val2014/COCO_val2014_000000449432.jpg +../coco/images/val2014/COCO_val2014_000000449466.jpg +../coco/images/val2014/COCO_val2014_000000449485.jpg +../coco/images/val2014/COCO_val2014_000000449522.jpg +../coco/images/val2014/COCO_val2014_000000449872.jpg +../coco/images/val2014/COCO_val2014_000000449888.jpg +../coco/images/val2014/COCO_val2014_000000449903.jpg +../coco/images/val2014/COCO_val2014_000000449976.jpg +../coco/images/val2014/COCO_val2014_000000449981.jpg +../coco/images/val2014/COCO_val2014_000000450098.jpg +../coco/images/val2014/COCO_val2014_000000450355.jpg +../coco/images/val2014/COCO_val2014_000000450458.jpg +../coco/images/val2014/COCO_val2014_000000450559.jpg +../coco/images/val2014/COCO_val2014_000000450596.jpg +../coco/images/val2014/COCO_val2014_000000450655.jpg +../coco/images/val2014/COCO_val2014_000000450695.jpg +../coco/images/val2014/COCO_val2014_000000451014.jpg +../coco/images/val2014/COCO_val2014_000000451120.jpg +../coco/images/val2014/COCO_val2014_000000451305.jpg +../coco/images/val2014/COCO_val2014_000000451345.jpg +../coco/images/val2014/COCO_val2014_000000451440.jpg +../coco/images/val2014/COCO_val2014_000000451468.jpg +../coco/images/val2014/COCO_val2014_000000451679.jpg +../coco/images/val2014/COCO_val2014_000000451683.jpg +../coco/images/val2014/COCO_val2014_000000452195.jpg +../coco/images/val2014/COCO_val2014_000000452218.jpg +../coco/images/val2014/COCO_val2014_000000452308.jpg +../coco/images/val2014/COCO_val2014_000000452461.jpg +../coco/images/val2014/COCO_val2014_000000452516.jpg +../coco/images/val2014/COCO_val2014_000000452611.jpg +../coco/images/val2014/COCO_val2014_000000452618.jpg +../coco/images/val2014/COCO_val2014_000000452676.jpg +../coco/images/val2014/COCO_val2014_000000452759.jpg +../coco/images/val2014/COCO_val2014_000000452947.jpg +../coco/images/val2014/COCO_val2014_000000453040.jpg +../coco/images/val2014/COCO_val2014_000000453104.jpg +../coco/images/val2014/COCO_val2014_000000453162.jpg +../coco/images/val2014/COCO_val2014_000000453166.jpg +../coco/images/val2014/COCO_val2014_000000453755.jpg +../coco/images/val2014/COCO_val2014_000000453926.jpg +../coco/images/val2014/COCO_val2014_000000454161.jpg +../coco/images/val2014/COCO_val2014_000000454414.jpg +../coco/images/val2014/COCO_val2014_000000454561.jpg +../coco/images/val2014/COCO_val2014_000000454741.jpg +../coco/images/val2014/COCO_val2014_000000454750.jpg +../coco/images/val2014/COCO_val2014_000000455299.jpg +../coco/images/val2014/COCO_val2014_000000455325.jpg +../coco/images/val2014/COCO_val2014_000000455343.jpg +../coco/images/val2014/COCO_val2014_000000455355.jpg +../coco/images/val2014/COCO_val2014_000000455365.jpg +../coco/images/val2014/COCO_val2014_000000455384.jpg +../coco/images/val2014/COCO_val2014_000000455395.jpg +../coco/images/val2014/COCO_val2014_000000455414.jpg +../coco/images/val2014/COCO_val2014_000000455515.jpg +../coco/images/val2014/COCO_val2014_000000455557.jpg +../coco/images/val2014/COCO_val2014_000000455675.jpg +../coco/images/val2014/COCO_val2014_000000455750.jpg +../coco/images/val2014/COCO_val2014_000000455767.jpg +../coco/images/val2014/COCO_val2014_000000456015.jpg +../coco/images/val2014/COCO_val2014_000000456143.jpg +../coco/images/val2014/COCO_val2014_000000456420.jpg +../coco/images/val2014/COCO_val2014_000000456725.jpg +../coco/images/val2014/COCO_val2014_000000457217.jpg +../coco/images/val2014/COCO_val2014_000000457230.jpg +../coco/images/val2014/COCO_val2014_000000457262.jpg +../coco/images/val2014/COCO_val2014_000000457271.jpg +../coco/images/val2014/COCO_val2014_000000457436.jpg +../coco/images/val2014/COCO_val2014_000000457717.jpg +../coco/images/val2014/COCO_val2014_000000457901.jpg +../coco/images/val2014/COCO_val2014_000000458054.jpg +../coco/images/val2014/COCO_val2014_000000458103.jpg +../coco/images/val2014/COCO_val2014_000000458275.jpg +../coco/images/val2014/COCO_val2014_000000458846.jpg +../coco/images/val2014/COCO_val2014_000000458953.jpg +../coco/images/val2014/COCO_val2014_000000459164.jpg +../coco/images/val2014/COCO_val2014_000000459400.jpg +../coco/images/val2014/COCO_val2014_000000459590.jpg +../coco/images/val2014/COCO_val2014_000000459733.jpg +../coco/images/val2014/COCO_val2014_000000459757.jpg +../coco/images/val2014/COCO_val2014_000000459933.jpg +../coco/images/val2014/COCO_val2014_000000460022.jpg +../coco/images/val2014/COCO_val2014_000000460053.jpg +../coco/images/val2014/COCO_val2014_000000460129.jpg +../coco/images/val2014/COCO_val2014_000000460147.jpg +../coco/images/val2014/COCO_val2014_000000460149.jpg +../coco/images/val2014/COCO_val2014_000000460251.jpg +../coco/images/val2014/COCO_val2014_000000460461.jpg +../coco/images/val2014/COCO_val2014_000000460652.jpg +../coco/images/val2014/COCO_val2014_000000460676.jpg +../coco/images/val2014/COCO_val2014_000000460684.jpg +../coco/images/val2014/COCO_val2014_000000460757.jpg +../coco/images/val2014/COCO_val2014_000000460812.jpg +../coco/images/val2014/COCO_val2014_000000460967.jpg +../coco/images/val2014/COCO_val2014_000000461007.jpg +../coco/images/val2014/COCO_val2014_000000461123.jpg +../coco/images/val2014/COCO_val2014_000000461275.jpg +../coco/images/val2014/COCO_val2014_000000461278.jpg +../coco/images/val2014/COCO_val2014_000000461331.jpg +../coco/images/val2014/COCO_val2014_000000461681.jpg +../coco/images/val2014/COCO_val2014_000000461898.jpg +../coco/images/val2014/COCO_val2014_000000461953.jpg +../coco/images/val2014/COCO_val2014_000000461993.jpg +../coco/images/val2014/COCO_val2014_000000462213.jpg +../coco/images/val2014/COCO_val2014_000000462241.jpg +../coco/images/val2014/COCO_val2014_000000462315.jpg +../coco/images/val2014/COCO_val2014_000000462330.jpg +../coco/images/val2014/COCO_val2014_000000462466.jpg +../coco/images/val2014/COCO_val2014_000000462629.jpg +../coco/images/val2014/COCO_val2014_000000462677.jpg +../coco/images/val2014/COCO_val2014_000000462953.jpg +../coco/images/val2014/COCO_val2014_000000462978.jpg +../coco/images/val2014/COCO_val2014_000000462982.jpg +../coco/images/val2014/COCO_val2014_000000463037.jpg +../coco/images/val2014/COCO_val2014_000000463084.jpg +../coco/images/val2014/COCO_val2014_000000463283.jpg +../coco/images/val2014/COCO_val2014_000000463303.jpg +../coco/images/val2014/COCO_val2014_000000463398.jpg +../coco/images/val2014/COCO_val2014_000000463452.jpg +../coco/images/val2014/COCO_val2014_000000463555.jpg +../coco/images/val2014/COCO_val2014_000000463898.jpg +../coco/images/val2014/COCO_val2014_000000463913.jpg +../coco/images/val2014/COCO_val2014_000000464248.jpg +../coco/images/val2014/COCO_val2014_000000464390.jpg +../coco/images/val2014/COCO_val2014_000000465087.jpg +../coco/images/val2014/COCO_val2014_000000465588.jpg +../coco/images/val2014/COCO_val2014_000000465692.jpg +../coco/images/val2014/COCO_val2014_000000465715.jpg +../coco/images/val2014/COCO_val2014_000000465735.jpg +../coco/images/val2014/COCO_val2014_000000465822.jpg +../coco/images/val2014/COCO_val2014_000000465887.jpg +../coco/images/val2014/COCO_val2014_000000465986.jpg +../coco/images/val2014/COCO_val2014_000000466005.jpg +../coco/images/val2014/COCO_val2014_000000466347.jpg +../coco/images/val2014/COCO_val2014_000000466456.jpg +../coco/images/val2014/COCO_val2014_000000466570.jpg +../coco/images/val2014/COCO_val2014_000000466583.jpg +../coco/images/val2014/COCO_val2014_000000467022.jpg +../coco/images/val2014/COCO_val2014_000000467116.jpg +../coco/images/val2014/COCO_val2014_000000467138.jpg +../coco/images/val2014/COCO_val2014_000000467477.jpg +../coco/images/val2014/COCO_val2014_000000467540.jpg +../coco/images/val2014/COCO_val2014_000000467705.jpg +../coco/images/val2014/COCO_val2014_000000467726.jpg +../coco/images/val2014/COCO_val2014_000000467821.jpg +../coco/images/val2014/COCO_val2014_000000467951.jpg +../coco/images/val2014/COCO_val2014_000000467990.jpg +../coco/images/val2014/COCO_val2014_000000468012.jpg +../coco/images/val2014/COCO_val2014_000000468129.jpg +../coco/images/val2014/COCO_val2014_000000468178.jpg +../coco/images/val2014/COCO_val2014_000000468354.jpg +../coco/images/val2014/COCO_val2014_000000468736.jpg +../coco/images/val2014/COCO_val2014_000000468954.jpg +../coco/images/val2014/COCO_val2014_000000469085.jpg +../coco/images/val2014/COCO_val2014_000000469088.jpg +../coco/images/val2014/COCO_val2014_000000469096.jpg +../coco/images/val2014/COCO_val2014_000000469119.jpg +../coco/images/val2014/COCO_val2014_000000469356.jpg +../coco/images/val2014/COCO_val2014_000000469424.jpg +../coco/images/val2014/COCO_val2014_000000469634.jpg +../coco/images/val2014/COCO_val2014_000000469857.jpg +../coco/images/val2014/COCO_val2014_000000469961.jpg +../coco/images/val2014/COCO_val2014_000000469982.jpg +../coco/images/val2014/COCO_val2014_000000470070.jpg +../coco/images/val2014/COCO_val2014_000000470161.jpg +../coco/images/val2014/COCO_val2014_000000470173.jpg +../coco/images/val2014/COCO_val2014_000000470313.jpg +../coco/images/val2014/COCO_val2014_000000470370.jpg +../coco/images/val2014/COCO_val2014_000000470513.jpg +../coco/images/val2014/COCO_val2014_000000470746.jpg +../coco/images/val2014/COCO_val2014_000000471205.jpg +../coco/images/val2014/COCO_val2014_000000471394.jpg +../coco/images/val2014/COCO_val2014_000000471488.jpg +../coco/images/val2014/COCO_val2014_000000471858.jpg +../coco/images/val2014/COCO_val2014_000000471869.jpg +../coco/images/val2014/COCO_val2014_000000471893.jpg +../coco/images/val2014/COCO_val2014_000000472034.jpg +../coco/images/val2014/COCO_val2014_000000472078.jpg +../coco/images/val2014/COCO_val2014_000000472088.jpg +../coco/images/val2014/COCO_val2014_000000472160.jpg +../coco/images/val2014/COCO_val2014_000000472211.jpg +../coco/images/val2014/COCO_val2014_000000472643.jpg +../coco/images/val2014/COCO_val2014_000000472691.jpg +../coco/images/val2014/COCO_val2014_000000472762.jpg +../coco/images/val2014/COCO_val2014_000000472821.jpg +../coco/images/val2014/COCO_val2014_000000473015.jpg +../coco/images/val2014/COCO_val2014_000000473075.jpg +../coco/images/val2014/COCO_val2014_000000473109.jpg +../coco/images/val2014/COCO_val2014_000000473124.jpg +../coco/images/val2014/COCO_val2014_000000473171.jpg +../coco/images/val2014/COCO_val2014_000000473406.jpg +../coco/images/val2014/COCO_val2014_000000473415.jpg +../coco/images/val2014/COCO_val2014_000000473839.jpg +../coco/images/val2014/COCO_val2014_000000474003.jpg +../coco/images/val2014/COCO_val2014_000000474021.jpg +../coco/images/val2014/COCO_val2014_000000474028.jpg +../coco/images/val2014/COCO_val2014_000000474078.jpg +../coco/images/val2014/COCO_val2014_000000474110.jpg +../coco/images/val2014/COCO_val2014_000000474170.jpg +../coco/images/val2014/COCO_val2014_000000474246.jpg +../coco/images/val2014/COCO_val2014_000000474344.jpg +../coco/images/val2014/COCO_val2014_000000474384.jpg +../coco/images/val2014/COCO_val2014_000000474410.jpg +../coco/images/val2014/COCO_val2014_000000474600.jpg +../coco/images/val2014/COCO_val2014_000000474609.jpg +../coco/images/val2014/COCO_val2014_000000474906.jpg +../coco/images/val2014/COCO_val2014_000000475208.jpg +../coco/images/val2014/COCO_val2014_000000475229.jpg +../coco/images/val2014/COCO_val2014_000000475244.jpg +../coco/images/val2014/COCO_val2014_000000475398.jpg +../coco/images/val2014/COCO_val2014_000000475413.jpg +../coco/images/val2014/COCO_val2014_000000475572.jpg +../coco/images/val2014/COCO_val2014_000000475586.jpg +../coco/images/val2014/COCO_val2014_000000475879.jpg +../coco/images/val2014/COCO_val2014_000000475906.jpg +../coco/images/val2014/COCO_val2014_000000475944.jpg +../coco/images/val2014/COCO_val2014_000000476120.jpg +../coco/images/val2014/COCO_val2014_000000476172.jpg +../coco/images/val2014/COCO_val2014_000000476282.jpg +../coco/images/val2014/COCO_val2014_000000476300.jpg +../coco/images/val2014/COCO_val2014_000000476335.jpg +../coco/images/val2014/COCO_val2014_000000476339.jpg +../coco/images/val2014/COCO_val2014_000000476398.jpg +../coco/images/val2014/COCO_val2014_000000476455.jpg +../coco/images/val2014/COCO_val2014_000000476491.jpg +../coco/images/val2014/COCO_val2014_000000476647.jpg +../coco/images/val2014/COCO_val2014_000000476704.jpg +../coco/images/val2014/COCO_val2014_000000476856.jpg +../coco/images/val2014/COCO_val2014_000000476873.jpg +../coco/images/val2014/COCO_val2014_000000476925.jpg +../coco/images/val2014/COCO_val2014_000000477172.jpg +../coco/images/val2014/COCO_val2014_000000477305.jpg +../coco/images/val2014/COCO_val2014_000000477477.jpg +../coco/images/val2014/COCO_val2014_000000477623.jpg +../coco/images/val2014/COCO_val2014_000000477805.jpg +../coco/images/val2014/COCO_val2014_000000478120.jpg +../coco/images/val2014/COCO_val2014_000000478136.jpg +../coco/images/val2014/COCO_val2014_000000478184.jpg +../coco/images/val2014/COCO_val2014_000000478433.jpg +../coco/images/val2014/COCO_val2014_000000478490.jpg +../coco/images/val2014/COCO_val2014_000000478522.jpg +../coco/images/val2014/COCO_val2014_000000478621.jpg +../coco/images/val2014/COCO_val2014_000000478664.jpg +../coco/images/val2014/COCO_val2014_000000478874.jpg +../coco/images/val2014/COCO_val2014_000000479008.jpg +../coco/images/val2014/COCO_val2014_000000479078.jpg +../coco/images/val2014/COCO_val2014_000000479099.jpg +../coco/images/val2014/COCO_val2014_000000479334.jpg +../coco/images/val2014/COCO_val2014_000000479557.jpg +../coco/images/val2014/COCO_val2014_000000479597.jpg +../coco/images/val2014/COCO_val2014_000000479912.jpg +../coco/images/val2014/COCO_val2014_000000479938.jpg +../coco/images/val2014/COCO_val2014_000000479948.jpg +../coco/images/val2014/COCO_val2014_000000480075.jpg +../coco/images/val2014/COCO_val2014_000000480215.jpg +../coco/images/val2014/COCO_val2014_000000480345.jpg +../coco/images/val2014/COCO_val2014_000000480379.jpg +../coco/images/val2014/COCO_val2014_000000480472.jpg +../coco/images/val2014/COCO_val2014_000000480726.jpg +../coco/images/val2014/COCO_val2014_000000481327.jpg +../coco/images/val2014/COCO_val2014_000000481398.jpg +../coco/images/val2014/COCO_val2014_000000481404.jpg +../coco/images/val2014/COCO_val2014_000000481446.jpg +../coco/images/val2014/COCO_val2014_000000481890.jpg +../coco/images/val2014/COCO_val2014_000000482007.jpg +../coco/images/val2014/COCO_val2014_000000482021.jpg +../coco/images/val2014/COCO_val2014_000000482476.jpg +../coco/images/val2014/COCO_val2014_000000482477.jpg +../coco/images/val2014/COCO_val2014_000000482487.jpg +../coco/images/val2014/COCO_val2014_000000482605.jpg +../coco/images/val2014/COCO_val2014_000000482667.jpg +../coco/images/val2014/COCO_val2014_000000482707.jpg +../coco/images/val2014/COCO_val2014_000000482735.jpg +../coco/images/val2014/COCO_val2014_000000482774.jpg +../coco/images/val2014/COCO_val2014_000000482799.jpg +../coco/images/val2014/COCO_val2014_000000482951.jpg +../coco/images/val2014/COCO_val2014_000000483179.jpg +../coco/images/val2014/COCO_val2014_000000483389.jpg +../coco/images/val2014/COCO_val2014_000000483531.jpg +../coco/images/val2014/COCO_val2014_000000483564.jpg +../coco/images/val2014/COCO_val2014_000000483587.jpg +../coco/images/val2014/COCO_val2014_000000483849.jpg +../coco/images/val2014/COCO_val2014_000000483994.jpg +../coco/images/val2014/COCO_val2014_000000484066.jpg +../coco/images/val2014/COCO_val2014_000000484215.jpg +../coco/images/val2014/COCO_val2014_000000484225.jpg +../coco/images/val2014/COCO_val2014_000000484321.jpg +../coco/images/val2014/COCO_val2014_000000484397.jpg +../coco/images/val2014/COCO_val2014_000000484531.jpg +../coco/images/val2014/COCO_val2014_000000484674.jpg +../coco/images/val2014/COCO_val2014_000000484978.jpg +../coco/images/val2014/COCO_val2014_000000485139.jpg +../coco/images/val2014/COCO_val2014_000000485483.jpg +../coco/images/val2014/COCO_val2014_000000485485.jpg +../coco/images/val2014/COCO_val2014_000000485673.jpg +../coco/images/val2014/COCO_val2014_000000485740.jpg +../coco/images/val2014/COCO_val2014_000000486112.jpg +../coco/images/val2014/COCO_val2014_000000486175.jpg +../coco/images/val2014/COCO_val2014_000000486232.jpg +../coco/images/val2014/COCO_val2014_000000486568.jpg +../coco/images/val2014/COCO_val2014_000000486576.jpg +../coco/images/val2014/COCO_val2014_000000486580.jpg +../coco/images/val2014/COCO_val2014_000000486632.jpg +../coco/images/val2014/COCO_val2014_000000486788.jpg +../coco/images/val2014/COCO_val2014_000000486803.jpg +../coco/images/val2014/COCO_val2014_000000486991.jpg +../coco/images/val2014/COCO_val2014_000000487222.jpg +../coco/images/val2014/COCO_val2014_000000487282.jpg +../coco/images/val2014/COCO_val2014_000000487391.jpg +../coco/images/val2014/COCO_val2014_000000487630.jpg +../coco/images/val2014/COCO_val2014_000000487659.jpg +../coco/images/val2014/COCO_val2014_000000487698.jpg +../coco/images/val2014/COCO_val2014_000000487702.jpg +../coco/images/val2014/COCO_val2014_000000487720.jpg +../coco/images/val2014/COCO_val2014_000000488075.jpg +../coco/images/val2014/COCO_val2014_000000488250.jpg +../coco/images/val2014/COCO_val2014_000000488360.jpg +../coco/images/val2014/COCO_val2014_000000488385.jpg +../coco/images/val2014/COCO_val2014_000000488386.jpg +../coco/images/val2014/COCO_val2014_000000488522.jpg +../coco/images/val2014/COCO_val2014_000000488664.jpg +../coco/images/val2014/COCO_val2014_000000488723.jpg +../coco/images/val2014/COCO_val2014_000000488736.jpg +../coco/images/val2014/COCO_val2014_000000488979.jpg +../coco/images/val2014/COCO_val2014_000000489019.jpg +../coco/images/val2014/COCO_val2014_000000489235.jpg +../coco/images/val2014/COCO_val2014_000000489266.jpg +../coco/images/val2014/COCO_val2014_000000489304.jpg +../coco/images/val2014/COCO_val2014_000000489344.jpg +../coco/images/val2014/COCO_val2014_000000489475.jpg +../coco/images/val2014/COCO_val2014_000000489764.jpg +../coco/images/val2014/COCO_val2014_000000489940.jpg +../coco/images/val2014/COCO_val2014_000000490022.jpg +../coco/images/val2014/COCO_val2014_000000490051.jpg +../coco/images/val2014/COCO_val2014_000000490105.jpg +../coco/images/val2014/COCO_val2014_000000490171.jpg +../coco/images/val2014/COCO_val2014_000000490286.jpg +../coco/images/val2014/COCO_val2014_000000490306.jpg +../coco/images/val2014/COCO_val2014_000000490338.jpg +../coco/images/val2014/COCO_val2014_000000490491.jpg +../coco/images/val2014/COCO_val2014_000000490505.jpg +../coco/images/val2014/COCO_val2014_000000490702.jpg +../coco/images/val2014/COCO_val2014_000000490860.jpg +../coco/images/val2014/COCO_val2014_000000490952.jpg +../coco/images/val2014/COCO_val2014_000000491169.jpg +../coco/images/val2014/COCO_val2014_000000491336.jpg +../coco/images/val2014/COCO_val2014_000000491377.jpg +../coco/images/val2014/COCO_val2014_000000491408.jpg +../coco/images/val2014/COCO_val2014_000000491449.jpg +../coco/images/val2014/COCO_val2014_000000491481.jpg +../coco/images/val2014/COCO_val2014_000000491835.jpg +../coco/images/val2014/COCO_val2014_000000491836.jpg +../coco/images/val2014/COCO_val2014_000000491965.jpg +../coco/images/val2014/COCO_val2014_000000491985.jpg +../coco/images/val2014/COCO_val2014_000000492246.jpg +../coco/images/val2014/COCO_val2014_000000492323.jpg +../coco/images/val2014/COCO_val2014_000000492363.jpg +../coco/images/val2014/COCO_val2014_000000492407.jpg +../coco/images/val2014/COCO_val2014_000000492524.jpg +../coco/images/val2014/COCO_val2014_000000492605.jpg +../coco/images/val2014/COCO_val2014_000000492785.jpg +../coco/images/val2014/COCO_val2014_000000492805.jpg +../coco/images/val2014/COCO_val2014_000000493132.jpg +../coco/images/val2014/COCO_val2014_000000493196.jpg +../coco/images/val2014/COCO_val2014_000000493206.jpg +../coco/images/val2014/COCO_val2014_000000493273.jpg +../coco/images/val2014/COCO_val2014_000000493279.jpg +../coco/images/val2014/COCO_val2014_000000493509.jpg +../coco/images/val2014/COCO_val2014_000000493772.jpg +../coco/images/val2014/COCO_val2014_000000493799.jpg +../coco/images/val2014/COCO_val2014_000000493814.jpg +../coco/images/val2014/COCO_val2014_000000494085.jpg +../coco/images/val2014/COCO_val2014_000000494144.jpg +../coco/images/val2014/COCO_val2014_000000494320.jpg +../coco/images/val2014/COCO_val2014_000000494438.jpg +../coco/images/val2014/COCO_val2014_000000494578.jpg +../coco/images/val2014/COCO_val2014_000000494620.jpg +../coco/images/val2014/COCO_val2014_000000494731.jpg +../coco/images/val2014/COCO_val2014_000000494869.jpg +../coco/images/val2014/COCO_val2014_000000495090.jpg +../coco/images/val2014/COCO_val2014_000000495125.jpg +../coco/images/val2014/COCO_val2014_000000495491.jpg +../coco/images/val2014/COCO_val2014_000000495519.jpg +../coco/images/val2014/COCO_val2014_000000495734.jpg +../coco/images/val2014/COCO_val2014_000000495852.jpg +../coco/images/val2014/COCO_val2014_000000496152.jpg +../coco/images/val2014/COCO_val2014_000000496267.jpg +../coco/images/val2014/COCO_val2014_000000496324.jpg +../coco/images/val2014/COCO_val2014_000000496360.jpg +../coco/images/val2014/COCO_val2014_000000496379.jpg +../coco/images/val2014/COCO_val2014_000000496409.jpg +../coco/images/val2014/COCO_val2014_000000496450.jpg +../coco/images/val2014/COCO_val2014_000000496554.jpg +../coco/images/val2014/COCO_val2014_000000496687.jpg +../coco/images/val2014/COCO_val2014_000000497099.jpg +../coco/images/val2014/COCO_val2014_000000497312.jpg +../coco/images/val2014/COCO_val2014_000000497348.jpg +../coco/images/val2014/COCO_val2014_000000497351.jpg +../coco/images/val2014/COCO_val2014_000000497443.jpg +../coco/images/val2014/COCO_val2014_000000497488.jpg +../coco/images/val2014/COCO_val2014_000000497907.jpg +../coco/images/val2014/COCO_val2014_000000497928.jpg +../coco/images/val2014/COCO_val2014_000000498274.jpg +../coco/images/val2014/COCO_val2014_000000498346.jpg +../coco/images/val2014/COCO_val2014_000000498392.jpg +../coco/images/val2014/COCO_val2014_000000498650.jpg +../coco/images/val2014/COCO_val2014_000000498709.jpg +../coco/images/val2014/COCO_val2014_000000498765.jpg +../coco/images/val2014/COCO_val2014_000000498802.jpg +../coco/images/val2014/COCO_val2014_000000498807.jpg +../coco/images/val2014/COCO_val2014_000000499093.jpg +../coco/images/val2014/COCO_val2014_000000499105.jpg +../coco/images/val2014/COCO_val2014_000000499255.jpg +../coco/images/val2014/COCO_val2014_000000499313.jpg +../coco/images/val2014/COCO_val2014_000000499391.jpg +../coco/images/val2014/COCO_val2014_000000499393.jpg +../coco/images/val2014/COCO_val2014_000000499537.jpg +../coco/images/val2014/COCO_val2014_000000499755.jpg +../coco/images/val2014/COCO_val2014_000000499802.jpg +../coco/images/val2014/COCO_val2014_000000499810.jpg +../coco/images/val2014/COCO_val2014_000000500062.jpg +../coco/images/val2014/COCO_val2014_000000500139.jpg +../coco/images/val2014/COCO_val2014_000000500175.jpg +../coco/images/val2014/COCO_val2014_000000500464.jpg +../coco/images/val2014/COCO_val2014_000000500514.jpg +../coco/images/val2014/COCO_val2014_000000500723.jpg +../coco/images/val2014/COCO_val2014_000000500829.jpg +../coco/images/val2014/COCO_val2014_000000500878.jpg +../coco/images/val2014/COCO_val2014_000000500965.jpg +../coco/images/val2014/COCO_val2014_000000501116.jpg +../coco/images/val2014/COCO_val2014_000000501122.jpg +../coco/images/val2014/COCO_val2014_000000501229.jpg +../coco/images/val2014/COCO_val2014_000000501242.jpg +../coco/images/val2014/COCO_val2014_000000501527.jpg +../coco/images/val2014/COCO_val2014_000000501790.jpg +../coco/images/val2014/COCO_val2014_000000501824.jpg +../coco/images/val2014/COCO_val2014_000000501835.jpg +../coco/images/val2014/COCO_val2014_000000502168.jpg +../coco/images/val2014/COCO_val2014_000000502336.jpg +../coco/images/val2014/COCO_val2014_000000502854.jpg +../coco/images/val2014/COCO_val2014_000000502895.jpg +../coco/images/val2014/COCO_val2014_000000502910.jpg +../coco/images/val2014/COCO_val2014_000000503097.jpg +../coco/images/val2014/COCO_val2014_000000503202.jpg +../coco/images/val2014/COCO_val2014_000000503207.jpg +../coco/images/val2014/COCO_val2014_000000503233.jpg +../coco/images/val2014/COCO_val2014_000000503467.jpg +../coco/images/val2014/COCO_val2014_000000503522.jpg +../coco/images/val2014/COCO_val2014_000000503772.jpg +../coco/images/val2014/COCO_val2014_000000503823.jpg +../coco/images/val2014/COCO_val2014_000000503826.jpg +../coco/images/val2014/COCO_val2014_000000503951.jpg +../coco/images/val2014/COCO_val2014_000000503972.jpg +../coco/images/val2014/COCO_val2014_000000503983.jpg +../coco/images/val2014/COCO_val2014_000000504074.jpg +../coco/images/val2014/COCO_val2014_000000504152.jpg +../coco/images/val2014/COCO_val2014_000000504341.jpg +../coco/images/val2014/COCO_val2014_000000504353.jpg +../coco/images/val2014/COCO_val2014_000000504452.jpg +../coco/images/val2014/COCO_val2014_000000504559.jpg +../coco/images/val2014/COCO_val2014_000000504711.jpg +../coco/images/val2014/COCO_val2014_000000504733.jpg +../coco/images/val2014/COCO_val2014_000000504790.jpg +../coco/images/val2014/COCO_val2014_000000505014.jpg +../coco/images/val2014/COCO_val2014_000000505040.jpg +../coco/images/val2014/COCO_val2014_000000505043.jpg +../coco/images/val2014/COCO_val2014_000000505132.jpg +../coco/images/val2014/COCO_val2014_000000505344.jpg +../coco/images/val2014/COCO_val2014_000000505516.jpg +../coco/images/val2014/COCO_val2014_000000505528.jpg +../coco/images/val2014/COCO_val2014_000000505650.jpg +../coco/images/val2014/COCO_val2014_000000505733.jpg +../coco/images/val2014/COCO_val2014_000000505739.jpg +../coco/images/val2014/COCO_val2014_000000505754.jpg +../coco/images/val2014/COCO_val2014_000000505792.jpg +../coco/images/val2014/COCO_val2014_000000505814.jpg +../coco/images/val2014/COCO_val2014_000000505862.jpg +../coco/images/val2014/COCO_val2014_000000505945.jpg +../coco/images/val2014/COCO_val2014_000000505967.jpg +../coco/images/val2014/COCO_val2014_000000506335.jpg +../coco/images/val2014/COCO_val2014_000000506357.jpg +../coco/images/val2014/COCO_val2014_000000506449.jpg +../coco/images/val2014/COCO_val2014_000000506515.jpg +../coco/images/val2014/COCO_val2014_000000506569.jpg +../coco/images/val2014/COCO_val2014_000000506587.jpg +../coco/images/val2014/COCO_val2014_000000506707.jpg +../coco/images/val2014/COCO_val2014_000000506736.jpg +../coco/images/val2014/COCO_val2014_000000507037.jpg +../coco/images/val2014/COCO_val2014_000000507180.jpg +../coco/images/val2014/COCO_val2014_000000507668.jpg +../coco/images/val2014/COCO_val2014_000000507684.jpg +../coco/images/val2014/COCO_val2014_000000507783.jpg +../coco/images/val2014/COCO_val2014_000000507927.jpg +../coco/images/val2014/COCO_val2014_000000507935.jpg +../coco/images/val2014/COCO_val2014_000000508119.jpg +../coco/images/val2014/COCO_val2014_000000508230.jpg +../coco/images/val2014/COCO_val2014_000000508443.jpg +../coco/images/val2014/COCO_val2014_000000508586.jpg +../coco/images/val2014/COCO_val2014_000000508811.jpg +../coco/images/val2014/COCO_val2014_000000508822.jpg +../coco/images/val2014/COCO_val2014_000000508985.jpg +../coco/images/val2014/COCO_val2014_000000509185.jpg +../coco/images/val2014/COCO_val2014_000000509258.jpg +../coco/images/val2014/COCO_val2014_000000509379.jpg +../coco/images/val2014/COCO_val2014_000000509388.jpg +../coco/images/val2014/COCO_val2014_000000509423.jpg +../coco/images/val2014/COCO_val2014_000000509526.jpg +../coco/images/val2014/COCO_val2014_000000509577.jpg +../coco/images/val2014/COCO_val2014_000000509695.jpg +../coco/images/val2014/COCO_val2014_000000509855.jpg +../coco/images/val2014/COCO_val2014_000000510343.jpg +../coco/images/val2014/COCO_val2014_000000510593.jpg +../coco/images/val2014/COCO_val2014_000000510707.jpg +../coco/images/val2014/COCO_val2014_000000510791.jpg +../coco/images/val2014/COCO_val2014_000000510798.jpg +../coco/images/val2014/COCO_val2014_000000510864.jpg +../coco/images/val2014/COCO_val2014_000000510942.jpg +../coco/images/val2014/COCO_val2014_000000511076.jpg +../coco/images/val2014/COCO_val2014_000000511236.jpg +../coco/images/val2014/COCO_val2014_000000511403.jpg +../coco/images/val2014/COCO_val2014_000000512070.jpg +../coco/images/val2014/COCO_val2014_000000512112.jpg +../coco/images/val2014/COCO_val2014_000000512145.jpg +../coco/images/val2014/COCO_val2014_000000512248.jpg +../coco/images/val2014/COCO_val2014_000000512254.jpg +../coco/images/val2014/COCO_val2014_000000512307.jpg +../coco/images/val2014/COCO_val2014_000000512337.jpg +../coco/images/val2014/COCO_val2014_000000512463.jpg +../coco/images/val2014/COCO_val2014_000000512479.jpg +../coco/images/val2014/COCO_val2014_000000512630.jpg +../coco/images/val2014/COCO_val2014_000000512722.jpg +../coco/images/val2014/COCO_val2014_000000512776.jpg +../coco/images/val2014/COCO_val2014_000000512911.jpg +../coco/images/val2014/COCO_val2014_000000512912.jpg +../coco/images/val2014/COCO_val2014_000000513073.jpg +../coco/images/val2014/COCO_val2014_000000513129.jpg +../coco/images/val2014/COCO_val2014_000000513342.jpg +../coco/images/val2014/COCO_val2014_000000513497.jpg +../coco/images/val2014/COCO_val2014_000000513507.jpg +../coco/images/val2014/COCO_val2014_000000513585.jpg +../coco/images/val2014/COCO_val2014_000000513681.jpg +../coco/images/val2014/COCO_val2014_000000514180.jpg +../coco/images/val2014/COCO_val2014_000000514241.jpg +../coco/images/val2014/COCO_val2014_000000514525.jpg +../coco/images/val2014/COCO_val2014_000000514540.jpg +../coco/images/val2014/COCO_val2014_000000514586.jpg +../coco/images/val2014/COCO_val2014_000000514682.jpg +../coco/images/val2014/COCO_val2014_000000514913.jpg +../coco/images/val2014/COCO_val2014_000000514990.jpg +../coco/images/val2014/COCO_val2014_000000515077.jpg +../coco/images/val2014/COCO_val2014_000000515176.jpg +../coco/images/val2014/COCO_val2014_000000515226.jpg +../coco/images/val2014/COCO_val2014_000000515289.jpg +../coco/images/val2014/COCO_val2014_000000515350.jpg +../coco/images/val2014/COCO_val2014_000000515485.jpg +../coco/images/val2014/COCO_val2014_000000515531.jpg +../coco/images/val2014/COCO_val2014_000000515727.jpg +../coco/images/val2014/COCO_val2014_000000515760.jpg +../coco/images/val2014/COCO_val2014_000000515777.jpg +../coco/images/val2014/COCO_val2014_000000515779.jpg +../coco/images/val2014/COCO_val2014_000000515904.jpg +../coco/images/val2014/COCO_val2014_000000515993.jpg +../coco/images/val2014/COCO_val2014_000000516026.jpg +../coco/images/val2014/COCO_val2014_000000516316.jpg +../coco/images/val2014/COCO_val2014_000000516318.jpg +../coco/images/val2014/COCO_val2014_000000516476.jpg +../coco/images/val2014/COCO_val2014_000000516775.jpg +../coco/images/val2014/COCO_val2014_000000516804.jpg +../coco/images/val2014/COCO_val2014_000000516805.jpg +../coco/images/val2014/COCO_val2014_000000516867.jpg +../coco/images/val2014/COCO_val2014_000000516893.jpg +../coco/images/val2014/COCO_val2014_000000516913.jpg +../coco/images/val2014/COCO_val2014_000000516916.jpg +../coco/images/val2014/COCO_val2014_000000517318.jpg +../coco/images/val2014/COCO_val2014_000000517443.jpg +../coco/images/val2014/COCO_val2014_000000517596.jpg +../coco/images/val2014/COCO_val2014_000000517619.jpg +../coco/images/val2014/COCO_val2014_000000517737.jpg +../coco/images/val2014/COCO_val2014_000000517821.jpg +../coco/images/val2014/COCO_val2014_000000517987.jpg +../coco/images/val2014/COCO_val2014_000000518039.jpg +../coco/images/val2014/COCO_val2014_000000518109.jpg +../coco/images/val2014/COCO_val2014_000000518213.jpg +../coco/images/val2014/COCO_val2014_000000518234.jpg +../coco/images/val2014/COCO_val2014_000000518324.jpg +../coco/images/val2014/COCO_val2014_000000518365.jpg +../coco/images/val2014/COCO_val2014_000000518584.jpg +../coco/images/val2014/COCO_val2014_000000518716.jpg +../coco/images/val2014/COCO_val2014_000000518729.jpg +../coco/images/val2014/COCO_val2014_000000518818.jpg +../coco/images/val2014/COCO_val2014_000000518850.jpg +../coco/images/val2014/COCO_val2014_000000518914.jpg +../coco/images/val2014/COCO_val2014_000000518968.jpg +../coco/images/val2014/COCO_val2014_000000519055.jpg +../coco/images/val2014/COCO_val2014_000000519271.jpg +../coco/images/val2014/COCO_val2014_000000519316.jpg +../coco/images/val2014/COCO_val2014_000000519387.jpg +../coco/images/val2014/COCO_val2014_000000519542.jpg +../coco/images/val2014/COCO_val2014_000000519565.jpg +../coco/images/val2014/COCO_val2014_000000519611.jpg +../coco/images/val2014/COCO_val2014_000000519649.jpg +../coco/images/val2014/COCO_val2014_000000519874.jpg +../coco/images/val2014/COCO_val2014_000000520009.jpg +../coco/images/val2014/COCO_val2014_000000520109.jpg +../coco/images/val2014/COCO_val2014_000000520147.jpg +../coco/images/val2014/COCO_val2014_000000520338.jpg +../coco/images/val2014/COCO_val2014_000000520524.jpg +../coco/images/val2014/COCO_val2014_000000521142.jpg +../coco/images/val2014/COCO_val2014_000000521259.jpg +../coco/images/val2014/COCO_val2014_000000521359.jpg +../coco/images/val2014/COCO_val2014_000000521540.jpg +../coco/images/val2014/COCO_val2014_000000521613.jpg +../coco/images/val2014/COCO_val2014_000000521634.jpg +../coco/images/val2014/COCO_val2014_000000521669.jpg +../coco/images/val2014/COCO_val2014_000000521689.jpg +../coco/images/val2014/COCO_val2014_000000521943.jpg +../coco/images/val2014/COCO_val2014_000000522163.jpg +../coco/images/val2014/COCO_val2014_000000522613.jpg +../coco/images/val2014/COCO_val2014_000000522622.jpg +../coco/images/val2014/COCO_val2014_000000522702.jpg +../coco/images/val2014/COCO_val2014_000000522791.jpg +../coco/images/val2014/COCO_val2014_000000522940.jpg +../coco/images/val2014/COCO_val2014_000000523100.jpg +../coco/images/val2014/COCO_val2014_000000523137.jpg +../coco/images/val2014/COCO_val2014_000000523230.jpg +../coco/images/val2014/COCO_val2014_000000523517.jpg +../coco/images/val2014/COCO_val2014_000000524002.jpg +../coco/images/val2014/COCO_val2014_000000524064.jpg +../coco/images/val2014/COCO_val2014_000000524173.jpg +../coco/images/val2014/COCO_val2014_000000524263.jpg +../coco/images/val2014/COCO_val2014_000000524333.jpg +../coco/images/val2014/COCO_val2014_000000524533.jpg +../coco/images/val2014/COCO_val2014_000000524536.jpg +../coco/images/val2014/COCO_val2014_000000524656.jpg +../coco/images/val2014/COCO_val2014_000000524742.jpg +../coco/images/val2014/COCO_val2014_000000524799.jpg +../coco/images/val2014/COCO_val2014_000000524992.jpg +../coco/images/val2014/COCO_val2014_000000525021.jpg +../coco/images/val2014/COCO_val2014_000000525087.jpg +../coco/images/val2014/COCO_val2014_000000525118.jpg +../coco/images/val2014/COCO_val2014_000000525170.jpg +../coco/images/val2014/COCO_val2014_000000525373.jpg +../coco/images/val2014/COCO_val2014_000000525667.jpg +../coco/images/val2014/COCO_val2014_000000525849.jpg +../coco/images/val2014/COCO_val2014_000000525927.jpg +../coco/images/val2014/COCO_val2014_000000525971.jpg +../coco/images/val2014/COCO_val2014_000000526040.jpg +../coco/images/val2014/COCO_val2014_000000526089.jpg +../coco/images/val2014/COCO_val2014_000000526341.jpg +../coco/images/val2014/COCO_val2014_000000526342.jpg +../coco/images/val2014/COCO_val2014_000000526371.jpg +../coco/images/val2014/COCO_val2014_000000526418.jpg +../coco/images/val2014/COCO_val2014_000000526560.jpg +../coco/images/val2014/COCO_val2014_000000527407.jpg +../coco/images/val2014/COCO_val2014_000000527447.jpg +../coco/images/val2014/COCO_val2014_000000527535.jpg +../coco/images/val2014/COCO_val2014_000000527558.jpg +../coco/images/val2014/COCO_val2014_000000527573.jpg +../coco/images/val2014/COCO_val2014_000000527644.jpg +../coco/images/val2014/COCO_val2014_000000527704.jpg +../coco/images/val2014/COCO_val2014_000000527750.jpg +../coco/images/val2014/COCO_val2014_000000527961.jpg +../coco/images/val2014/COCO_val2014_000000528314.jpg +../coco/images/val2014/COCO_val2014_000000528386.jpg +../coco/images/val2014/COCO_val2014_000000528411.jpg +../coco/images/val2014/COCO_val2014_000000528643.jpg +../coco/images/val2014/COCO_val2014_000000528738.jpg +../coco/images/val2014/COCO_val2014_000000528980.jpg +../coco/images/val2014/COCO_val2014_000000529004.jpg +../coco/images/val2014/COCO_val2014_000000529065.jpg +../coco/images/val2014/COCO_val2014_000000529215.jpg +../coco/images/val2014/COCO_val2014_000000529235.jpg +../coco/images/val2014/COCO_val2014_000000529270.jpg +../coco/images/val2014/COCO_val2014_000000529455.jpg +../coco/images/val2014/COCO_val2014_000000529494.jpg +../coco/images/val2014/COCO_val2014_000000529597.jpg +../coco/images/val2014/COCO_val2014_000000529668.jpg +../coco/images/val2014/COCO_val2014_000000529907.jpg +../coco/images/val2014/COCO_val2014_000000529944.jpg +../coco/images/val2014/COCO_val2014_000000530013.jpg +../coco/images/val2014/COCO_val2014_000000530052.jpg +../coco/images/val2014/COCO_val2014_000000530220.jpg +../coco/images/val2014/COCO_val2014_000000530461.jpg +../coco/images/val2014/COCO_val2014_000000530620.jpg +../coco/images/val2014/COCO_val2014_000000530624.jpg +../coco/images/val2014/COCO_val2014_000000530630.jpg +../coco/images/val2014/COCO_val2014_000000530854.jpg +../coco/images/val2014/COCO_val2014_000000531000.jpg +../coco/images/val2014/COCO_val2014_000000531111.jpg +../coco/images/val2014/COCO_val2014_000000531189.jpg +../coco/images/val2014/COCO_val2014_000000531563.jpg +../coco/images/val2014/COCO_val2014_000000531569.jpg +../coco/images/val2014/COCO_val2014_000000532009.jpg +../coco/images/val2014/COCO_val2014_000000532085.jpg +../coco/images/val2014/COCO_val2014_000000532126.jpg +../coco/images/val2014/COCO_val2014_000000532129.jpg +../coco/images/val2014/COCO_val2014_000000532159.jpg +../coco/images/val2014/COCO_val2014_000000532212.jpg +../coco/images/val2014/COCO_val2014_000000532690.jpg +../coco/images/val2014/COCO_val2014_000000532695.jpg +../coco/images/val2014/COCO_val2014_000000532773.jpg +../coco/images/val2014/COCO_val2014_000000532827.jpg +../coco/images/val2014/COCO_val2014_000000532867.jpg +../coco/images/val2014/COCO_val2014_000000533097.jpg +../coco/images/val2014/COCO_val2014_000000533261.jpg +../coco/images/val2014/COCO_val2014_000000533434.jpg +../coco/images/val2014/COCO_val2014_000000533511.jpg +../coco/images/val2014/COCO_val2014_000000533517.jpg +../coco/images/val2014/COCO_val2014_000000533532.jpg +../coco/images/val2014/COCO_val2014_000000533688.jpg +../coco/images/val2014/COCO_val2014_000000533816.jpg +../coco/images/val2014/COCO_val2014_000000534018.jpg +../coco/images/val2014/COCO_val2014_000000534349.jpg +../coco/images/val2014/COCO_val2014_000000534377.jpg +../coco/images/val2014/COCO_val2014_000000534601.jpg +../coco/images/val2014/COCO_val2014_000000534639.jpg +../coco/images/val2014/COCO_val2014_000000534679.jpg +../coco/images/val2014/COCO_val2014_000000534988.jpg +../coco/images/val2014/COCO_val2014_000000535156.jpg +../coco/images/val2014/COCO_val2014_000000535198.jpg +../coco/images/val2014/COCO_val2014_000000535226.jpg +../coco/images/val2014/COCO_val2014_000000535242.jpg +../coco/images/val2014/COCO_val2014_000000535591.jpg +../coco/images/val2014/COCO_val2014_000000535858.jpg +../coco/images/val2014/COCO_val2014_000000535889.jpg +../coco/images/val2014/COCO_val2014_000000535952.jpg +../coco/images/val2014/COCO_val2014_000000535997.jpg +../coco/images/val2014/COCO_val2014_000000536028.jpg +../coco/images/val2014/COCO_val2014_000000536154.jpg +../coco/images/val2014/COCO_val2014_000000536486.jpg +../coco/images/val2014/COCO_val2014_000000536517.jpg +../coco/images/val2014/COCO_val2014_000000536795.jpg +../coco/images/val2014/COCO_val2014_000000536879.jpg +../coco/images/val2014/COCO_val2014_000000537025.jpg +../coco/images/val2014/COCO_val2014_000000537280.jpg +../coco/images/val2014/COCO_val2014_000000537369.jpg +../coco/images/val2014/COCO_val2014_000000537604.jpg +../coco/images/val2014/COCO_val2014_000000537620.jpg +../coco/images/val2014/COCO_val2014_000000537636.jpg +../coco/images/val2014/COCO_val2014_000000537802.jpg +../coco/images/val2014/COCO_val2014_000000537954.jpg +../coco/images/val2014/COCO_val2014_000000538005.jpg +../coco/images/val2014/COCO_val2014_000000538153.jpg +../coco/images/val2014/COCO_val2014_000000538259.jpg +../coco/images/val2014/COCO_val2014_000000538451.jpg +../coco/images/val2014/COCO_val2014_000000538463.jpg +../coco/images/val2014/COCO_val2014_000000538589.jpg +../coco/images/val2014/COCO_val2014_000000538595.jpg +../coco/images/val2014/COCO_val2014_000000538596.jpg +../coco/images/val2014/COCO_val2014_000000538741.jpg +../coco/images/val2014/COCO_val2014_000000538775.jpg +../coco/images/val2014/COCO_val2014_000000538976.jpg +../coco/images/val2014/COCO_val2014_000000539224.jpg +../coco/images/val2014/COCO_val2014_000000539251.jpg +../coco/images/val2014/COCO_val2014_000000539453.jpg +../coco/images/val2014/COCO_val2014_000000539551.jpg +../coco/images/val2014/COCO_val2014_000000539678.jpg +../coco/images/val2014/COCO_val2014_000000539975.jpg +../coco/images/val2014/COCO_val2014_000000540098.jpg +../coco/images/val2014/COCO_val2014_000000540107.jpg +../coco/images/val2014/COCO_val2014_000000540172.jpg +../coco/images/val2014/COCO_val2014_000000540186.jpg +../coco/images/val2014/COCO_val2014_000000540209.jpg +../coco/images/val2014/COCO_val2014_000000540264.jpg +../coco/images/val2014/COCO_val2014_000000540372.jpg +../coco/images/val2014/COCO_val2014_000000540414.jpg +../coco/images/val2014/COCO_val2014_000000540483.jpg +../coco/images/val2014/COCO_val2014_000000540502.jpg +../coco/images/val2014/COCO_val2014_000000540816.jpg +../coco/images/val2014/COCO_val2014_000000540860.jpg +../coco/images/val2014/COCO_val2014_000000540912.jpg +../coco/images/val2014/COCO_val2014_000000541071.jpg +../coco/images/val2014/COCO_val2014_000000541197.jpg +../coco/images/val2014/COCO_val2014_000000541279.jpg +../coco/images/val2014/COCO_val2014_000000541474.jpg +../coco/images/val2014/COCO_val2014_000000541550.jpg +../coco/images/val2014/COCO_val2014_000000541773.jpg +../coco/images/val2014/COCO_val2014_000000541879.jpg +../coco/images/val2014/COCO_val2014_000000541991.jpg +../coco/images/val2014/COCO_val2014_000000542101.jpg +../coco/images/val2014/COCO_val2014_000000542234.jpg +../coco/images/val2014/COCO_val2014_000000542509.jpg +../coco/images/val2014/COCO_val2014_000000542611.jpg +../coco/images/val2014/COCO_val2014_000000542676.jpg +../coco/images/val2014/COCO_val2014_000000542792.jpg +../coco/images/val2014/COCO_val2014_000000543112.jpg +../coco/images/val2014/COCO_val2014_000000543118.jpg +../coco/images/val2014/COCO_val2014_000000543203.jpg +../coco/images/val2014/COCO_val2014_000000543220.jpg +../coco/images/val2014/COCO_val2014_000000543281.jpg +../coco/images/val2014/COCO_val2014_000000543492.jpg +../coco/images/val2014/COCO_val2014_000000543581.jpg +../coco/images/val2014/COCO_val2014_000000543660.jpg +../coco/images/val2014/COCO_val2014_000000543676.jpg +../coco/images/val2014/COCO_val2014_000000543696.jpg +../coco/images/val2014/COCO_val2014_000000543782.jpg +../coco/images/val2014/COCO_val2014_000000544044.jpg +../coco/images/val2014/COCO_val2014_000000544071.jpg +../coco/images/val2014/COCO_val2014_000000544140.jpg +../coco/images/val2014/COCO_val2014_000000544597.jpg +../coco/images/val2014/COCO_val2014_000000544607.jpg +../coco/images/val2014/COCO_val2014_000000544611.jpg +../coco/images/val2014/COCO_val2014_000000544644.jpg +../coco/images/val2014/COCO_val2014_000000545289.jpg +../coco/images/val2014/COCO_val2014_000000545407.jpg +../coco/images/val2014/COCO_val2014_000000545475.jpg +../coco/images/val2014/COCO_val2014_000000545583.jpg +../coco/images/val2014/COCO_val2014_000000545597.jpg +../coco/images/val2014/COCO_val2014_000000545734.jpg +../coco/images/val2014/COCO_val2014_000000545756.jpg +../coco/images/val2014/COCO_val2014_000000545788.jpg +../coco/images/val2014/COCO_val2014_000000545958.jpg +../coco/images/val2014/COCO_val2014_000000546188.jpg +../coco/images/val2014/COCO_val2014_000000546226.jpg +../coco/images/val2014/COCO_val2014_000000546229.jpg +../coco/images/val2014/COCO_val2014_000000546388.jpg +../coco/images/val2014/COCO_val2014_000000546424.jpg +../coco/images/val2014/COCO_val2014_000000546524.jpg +../coco/images/val2014/COCO_val2014_000000546569.jpg +../coco/images/val2014/COCO_val2014_000000546622.jpg +../coco/images/val2014/COCO_val2014_000000546649.jpg +../coco/images/val2014/COCO_val2014_000000546667.jpg +../coco/images/val2014/COCO_val2014_000000546760.jpg +../coco/images/val2014/COCO_val2014_000000546782.jpg +../coco/images/val2014/COCO_val2014_000000546962.jpg +../coco/images/val2014/COCO_val2014_000000547137.jpg +../coco/images/val2014/COCO_val2014_000000547383.jpg +../coco/images/val2014/COCO_val2014_000000547519.jpg +../coco/images/val2014/COCO_val2014_000000547583.jpg +../coco/images/val2014/COCO_val2014_000000547738.jpg +../coco/images/val2014/COCO_val2014_000000547790.jpg +../coco/images/val2014/COCO_val2014_000000547858.jpg +../coco/images/val2014/COCO_val2014_000000548090.jpg +../coco/images/val2014/COCO_val2014_000000548126.jpg +../coco/images/val2014/COCO_val2014_000000548339.jpg +../coco/images/val2014/COCO_val2014_000000548795.jpg +../coco/images/val2014/COCO_val2014_000000548882.jpg +../coco/images/val2014/COCO_val2014_000000549063.jpg +../coco/images/val2014/COCO_val2014_000000549171.jpg +../coco/images/val2014/COCO_val2014_000000549242.jpg +../coco/images/val2014/COCO_val2014_000000549351.jpg +../coco/images/val2014/COCO_val2014_000000549410.jpg +../coco/images/val2014/COCO_val2014_000000549518.jpg +../coco/images/val2014/COCO_val2014_000000549713.jpg +../coco/images/val2014/COCO_val2014_000000549936.jpg +../coco/images/val2014/COCO_val2014_000000550001.jpg +../coco/images/val2014/COCO_val2014_000000550322.jpg +../coco/images/val2014/COCO_val2014_000000550432.jpg +../coco/images/val2014/COCO_val2014_000000550597.jpg +../coco/images/val2014/COCO_val2014_000000550627.jpg +../coco/images/val2014/COCO_val2014_000000550722.jpg +../coco/images/val2014/COCO_val2014_000000550862.jpg +../coco/images/val2014/COCO_val2014_000000551129.jpg +../coco/images/val2014/COCO_val2014_000000551243.jpg +../coco/images/val2014/COCO_val2014_000000551336.jpg +../coco/images/val2014/COCO_val2014_000000551669.jpg +../coco/images/val2014/COCO_val2014_000000552507.jpg +../coco/images/val2014/COCO_val2014_000000552837.jpg +../coco/images/val2014/COCO_val2014_000000553074.jpg +../coco/images/val2014/COCO_val2014_000000553165.jpg +../coco/images/val2014/COCO_val2014_000000553253.jpg +../coco/images/val2014/COCO_val2014_000000553306.jpg +../coco/images/val2014/COCO_val2014_000000553353.jpg +../coco/images/val2014/COCO_val2014_000000553443.jpg +../coco/images/val2014/COCO_val2014_000000553522.jpg +../coco/images/val2014/COCO_val2014_000000553664.jpg +../coco/images/val2014/COCO_val2014_000000554037.jpg +../coco/images/val2014/COCO_val2014_000000554100.jpg +../coco/images/val2014/COCO_val2014_000000554255.jpg +../coco/images/val2014/COCO_val2014_000000554266.jpg +../coco/images/val2014/COCO_val2014_000000554291.jpg +../coco/images/val2014/COCO_val2014_000000554302.jpg +../coco/images/val2014/COCO_val2014_000000554340.jpg +../coco/images/val2014/COCO_val2014_000000554347.jpg +../coco/images/val2014/COCO_val2014_000000554537.jpg +../coco/images/val2014/COCO_val2014_000000554595.jpg +../coco/images/val2014/COCO_val2014_000000554607.jpg +../coco/images/val2014/COCO_val2014_000000554618.jpg +../coco/images/val2014/COCO_val2014_000000554625.jpg +../coco/images/val2014/COCO_val2014_000000554711.jpg +../coco/images/val2014/COCO_val2014_000000554727.jpg +../coco/images/val2014/COCO_val2014_000000554767.jpg +../coco/images/val2014/COCO_val2014_000000554978.jpg +../coco/images/val2014/COCO_val2014_000000555035.jpg +../coco/images/val2014/COCO_val2014_000000555110.jpg +../coco/images/val2014/COCO_val2014_000000555180.jpg +../coco/images/val2014/COCO_val2014_000000555197.jpg +../coco/images/val2014/COCO_val2014_000000555267.jpg +../coco/images/val2014/COCO_val2014_000000555322.jpg +../coco/images/val2014/COCO_val2014_000000555412.jpg +../coco/images/val2014/COCO_val2014_000000555456.jpg +../coco/images/val2014/COCO_val2014_000000556091.jpg +../coco/images/val2014/COCO_val2014_000000556178.jpg +../coco/images/val2014/COCO_val2014_000000556193.jpg +../coco/images/val2014/COCO_val2014_000000556278.jpg +../coco/images/val2014/COCO_val2014_000000556562.jpg +../coco/images/val2014/COCO_val2014_000000556633.jpg +../coco/images/val2014/COCO_val2014_000000556641.jpg +../coco/images/val2014/COCO_val2014_000000556653.jpg +../coco/images/val2014/COCO_val2014_000000556751.jpg +../coco/images/val2014/COCO_val2014_000000556758.jpg +../coco/images/val2014/COCO_val2014_000000557016.jpg +../coco/images/val2014/COCO_val2014_000000557402.jpg +../coco/images/val2014/COCO_val2014_000000557556.jpg +../coco/images/val2014/COCO_val2014_000000557564.jpg +../coco/images/val2014/COCO_val2014_000000557595.jpg +../coco/images/val2014/COCO_val2014_000000557720.jpg +../coco/images/val2014/COCO_val2014_000000557731.jpg +../coco/images/val2014/COCO_val2014_000000557785.jpg +../coco/images/val2014/COCO_val2014_000000557896.jpg +../coco/images/val2014/COCO_val2014_000000557916.jpg +../coco/images/val2014/COCO_val2014_000000557923.jpg +../coco/images/val2014/COCO_val2014_000000557965.jpg +../coco/images/val2014/COCO_val2014_000000557977.jpg +../coco/images/val2014/COCO_val2014_000000558539.jpg +../coco/images/val2014/COCO_val2014_000000558587.jpg +../coco/images/val2014/COCO_val2014_000000558661.jpg +../coco/images/val2014/COCO_val2014_000000558784.jpg +../coco/images/val2014/COCO_val2014_000000558864.jpg +../coco/images/val2014/COCO_val2014_000000558955.jpg +../coco/images/val2014/COCO_val2014_000000558976.jpg +../coco/images/val2014/COCO_val2014_000000559047.jpg +../coco/images/val2014/COCO_val2014_000000559348.jpg +../coco/images/val2014/COCO_val2014_000000559656.jpg +../coco/images/val2014/COCO_val2014_000000559778.jpg +../coco/images/val2014/COCO_val2014_000000559790.jpg +../coco/images/val2014/COCO_val2014_000000560000.jpg +../coco/images/val2014/COCO_val2014_000000560227.jpg +../coco/images/val2014/COCO_val2014_000000560235.jpg +../coco/images/val2014/COCO_val2014_000000560279.jpg +../coco/images/val2014/COCO_val2014_000000560373.jpg +../coco/images/val2014/COCO_val2014_000000560626.jpg +../coco/images/val2014/COCO_val2014_000000560662.jpg +../coco/images/val2014/COCO_val2014_000000560721.jpg +../coco/images/val2014/COCO_val2014_000000560911.jpg +../coco/images/val2014/COCO_val2014_000000561027.jpg +../coco/images/val2014/COCO_val2014_000000561337.jpg +../coco/images/val2014/COCO_val2014_000000561357.jpg +../coco/images/val2014/COCO_val2014_000000561399.jpg +../coco/images/val2014/COCO_val2014_000000561570.jpg +../coco/images/val2014/COCO_val2014_000000561619.jpg +../coco/images/val2014/COCO_val2014_000000561698.jpg +../coco/images/val2014/COCO_val2014_000000562101.jpg +../coco/images/val2014/COCO_val2014_000000562227.jpg +../coco/images/val2014/COCO_val2014_000000562557.jpg +../coco/images/val2014/COCO_val2014_000000562582.jpg +../coco/images/val2014/COCO_val2014_000000562708.jpg +../coco/images/val2014/COCO_val2014_000000562805.jpg +../coco/images/val2014/COCO_val2014_000000562834.jpg +../coco/images/val2014/COCO_val2014_000000562875.jpg +../coco/images/val2014/COCO_val2014_000000562906.jpg +../coco/images/val2014/COCO_val2014_000000562943.jpg +../coco/images/val2014/COCO_val2014_000000562994.jpg +../coco/images/val2014/COCO_val2014_000000563015.jpg +../coco/images/val2014/COCO_val2014_000000563641.jpg +../coco/images/val2014/COCO_val2014_000000563665.jpg +../coco/images/val2014/COCO_val2014_000000563730.jpg +../coco/images/val2014/COCO_val2014_000000563871.jpg +../coco/images/val2014/COCO_val2014_000000564109.jpg +../coco/images/val2014/COCO_val2014_000000564127.jpg +../coco/images/val2014/COCO_val2014_000000564129.jpg +../coco/images/val2014/COCO_val2014_000000564289.jpg +../coco/images/val2014/COCO_val2014_000000564317.jpg +../coco/images/val2014/COCO_val2014_000000564366.jpg +../coco/images/val2014/COCO_val2014_000000564934.jpg +../coco/images/val2014/COCO_val2014_000000564940.jpg +../coco/images/val2014/COCO_val2014_000000565239.jpg +../coco/images/val2014/COCO_val2014_000000565389.jpg +../coco/images/val2014/COCO_val2014_000000565479.jpg +../coco/images/val2014/COCO_val2014_000000565543.jpg +../coco/images/val2014/COCO_val2014_000000565597.jpg +../coco/images/val2014/COCO_val2014_000000565670.jpg +../coco/images/val2014/COCO_val2014_000000565691.jpg +../coco/images/val2014/COCO_val2014_000000565693.jpg +../coco/images/val2014/COCO_val2014_000000565761.jpg +../coco/images/val2014/COCO_val2014_000000565877.jpg +../coco/images/val2014/COCO_val2014_000000565957.jpg +../coco/images/val2014/COCO_val2014_000000566027.jpg +../coco/images/val2014/COCO_val2014_000000566038.jpg +../coco/images/val2014/COCO_val2014_000000566103.jpg +../coco/images/val2014/COCO_val2014_000000566135.jpg +../coco/images/val2014/COCO_val2014_000000566298.jpg +../coco/images/val2014/COCO_val2014_000000566518.jpg +../coco/images/val2014/COCO_val2014_000000566538.jpg +../coco/images/val2014/COCO_val2014_000000566644.jpg +../coco/images/val2014/COCO_val2014_000000566908.jpg +../coco/images/val2014/COCO_val2014_000000566941.jpg +../coco/images/val2014/COCO_val2014_000000567093.jpg +../coco/images/val2014/COCO_val2014_000000567171.jpg +../coco/images/val2014/COCO_val2014_000000567205.jpg +../coco/images/val2014/COCO_val2014_000000567315.jpg +../coco/images/val2014/COCO_val2014_000000567340.jpg +../coco/images/val2014/COCO_val2014_000000567383.jpg +../coco/images/val2014/COCO_val2014_000000567686.jpg +../coco/images/val2014/COCO_val2014_000000567801.jpg +../coco/images/val2014/COCO_val2014_000000567812.jpg +../coco/images/val2014/COCO_val2014_000000567877.jpg +../coco/images/val2014/COCO_val2014_000000567886.jpg +../coco/images/val2014/COCO_val2014_000000568082.jpg +../coco/images/val2014/COCO_val2014_000000568131.jpg +../coco/images/val2014/COCO_val2014_000000568132.jpg +../coco/images/val2014/COCO_val2014_000000568195.jpg +../coco/images/val2014/COCO_val2014_000000568259.jpg +../coco/images/val2014/COCO_val2014_000000568265.jpg +../coco/images/val2014/COCO_val2014_000000568337.jpg +../coco/images/val2014/COCO_val2014_000000568555.jpg +../coco/images/val2014/COCO_val2014_000000568623.jpg +../coco/images/val2014/COCO_val2014_000000568653.jpg +../coco/images/val2014/COCO_val2014_000000568675.jpg +../coco/images/val2014/COCO_val2014_000000568717.jpg +../coco/images/val2014/COCO_val2014_000000568956.jpg +../coco/images/val2014/COCO_val2014_000000568961.jpg +../coco/images/val2014/COCO_val2014_000000569001.jpg +../coco/images/val2014/COCO_val2014_000000569272.jpg +../coco/images/val2014/COCO_val2014_000000569273.jpg +../coco/images/val2014/COCO_val2014_000000569319.jpg +../coco/images/val2014/COCO_val2014_000000569432.jpg +../coco/images/val2014/COCO_val2014_000000569437.jpg +../coco/images/val2014/COCO_val2014_000000569972.jpg +../coco/images/val2014/COCO_val2014_000000569976.jpg +../coco/images/val2014/COCO_val2014_000000570188.jpg +../coco/images/val2014/COCO_val2014_000000570456.jpg +../coco/images/val2014/COCO_val2014_000000570471.jpg +../coco/images/val2014/COCO_val2014_000000570680.jpg +../coco/images/val2014/COCO_val2014_000000570688.jpg +../coco/images/val2014/COCO_val2014_000000571012.jpg +../coco/images/val2014/COCO_val2014_000000571497.jpg +../coco/images/val2014/COCO_val2014_000000571550.jpg +../coco/images/val2014/COCO_val2014_000000571584.jpg +../coco/images/val2014/COCO_val2014_000000571635.jpg +../coco/images/val2014/COCO_val2014_000000571636.jpg +../coco/images/val2014/COCO_val2014_000000571746.jpg +../coco/images/val2014/COCO_val2014_000000571931.jpg +../coco/images/val2014/COCO_val2014_000000572017.jpg +../coco/images/val2014/COCO_val2014_000000572042.jpg +../coco/images/val2014/COCO_val2014_000000572051.jpg +../coco/images/val2014/COCO_val2014_000000572090.jpg +../coco/images/val2014/COCO_val2014_000000572233.jpg +../coco/images/val2014/COCO_val2014_000000572303.jpg +../coco/images/val2014/COCO_val2014_000000572347.jpg +../coco/images/val2014/COCO_val2014_000000572408.jpg +../coco/images/val2014/COCO_val2014_000000572517.jpg +../coco/images/val2014/COCO_val2014_000000572802.jpg +../coco/images/val2014/COCO_val2014_000000572850.jpg +../coco/images/val2014/COCO_val2014_000000573058.jpg +../coco/images/val2014/COCO_val2014_000000573067.jpg +../coco/images/val2014/COCO_val2014_000000573209.jpg +../coco/images/val2014/COCO_val2014_000000573363.jpg +../coco/images/val2014/COCO_val2014_000000573791.jpg +../coco/images/val2014/COCO_val2014_000000573853.jpg +../coco/images/val2014/COCO_val2014_000000573877.jpg +../coco/images/val2014/COCO_val2014_000000574108.jpg +../coco/images/val2014/COCO_val2014_000000574411.jpg +../coco/images/val2014/COCO_val2014_000000574413.jpg +../coco/images/val2014/COCO_val2014_000000574454.jpg +../coco/images/val2014/COCO_val2014_000000574509.jpg +../coco/images/val2014/COCO_val2014_000000574725.jpg +../coco/images/val2014/COCO_val2014_000000574823.jpg +../coco/images/val2014/COCO_val2014_000000574988.jpg +../coco/images/val2014/COCO_val2014_000000575020.jpg +../coco/images/val2014/COCO_val2014_000000575079.jpg +../coco/images/val2014/COCO_val2014_000000575081.jpg +../coco/images/val2014/COCO_val2014_000000575194.jpg +../coco/images/val2014/COCO_val2014_000000575428.jpg +../coco/images/val2014/COCO_val2014_000000575624.jpg +../coco/images/val2014/COCO_val2014_000000575957.jpg +../coco/images/val2014/COCO_val2014_000000576070.jpg +../coco/images/val2014/COCO_val2014_000000576085.jpg +../coco/images/val2014/COCO_val2014_000000576566.jpg +../coco/images/val2014/COCO_val2014_000000576629.jpg +../coco/images/val2014/COCO_val2014_000000576654.jpg +../coco/images/val2014/COCO_val2014_000000576704.jpg +../coco/images/val2014/COCO_val2014_000000576714.jpg +../coco/images/val2014/COCO_val2014_000000576820.jpg +../coco/images/val2014/COCO_val2014_000000576857.jpg +../coco/images/val2014/COCO_val2014_000000576955.jpg +../coco/images/val2014/COCO_val2014_000000576981.jpg +../coco/images/val2014/COCO_val2014_000000577128.jpg +../coco/images/val2014/COCO_val2014_000000577160.jpg +../coco/images/val2014/COCO_val2014_000000577161.jpg +../coco/images/val2014/COCO_val2014_000000577169.jpg +../coco/images/val2014/COCO_val2014_000000577212.jpg +../coco/images/val2014/COCO_val2014_000000577385.jpg +../coco/images/val2014/COCO_val2014_000000577522.jpg +../coco/images/val2014/COCO_val2014_000000577584.jpg +../coco/images/val2014/COCO_val2014_000000577847.jpg +../coco/images/val2014/COCO_val2014_000000577877.jpg +../coco/images/val2014/COCO_val2014_000000577912.jpg +../coco/images/val2014/COCO_val2014_000000577924.jpg +../coco/images/val2014/COCO_val2014_000000578225.jpg +../coco/images/val2014/COCO_val2014_000000578237.jpg +../coco/images/val2014/COCO_val2014_000000578341.jpg +../coco/images/val2014/COCO_val2014_000000578344.jpg +../coco/images/val2014/COCO_val2014_000000578427.jpg +../coco/images/val2014/COCO_val2014_000000578871.jpg +../coco/images/val2014/COCO_val2014_000000578878.jpg +../coco/images/val2014/COCO_val2014_000000579003.jpg +../coco/images/val2014/COCO_val2014_000000579240.jpg +../coco/images/val2014/COCO_val2014_000000579321.jpg +../coco/images/val2014/COCO_val2014_000000579337.jpg +../coco/images/val2014/COCO_val2014_000000579548.jpg +../coco/images/val2014/COCO_val2014_000000579885.jpg +../coco/images/val2014/COCO_val2014_000000579902.jpg +../coco/images/val2014/COCO_val2014_000000580027.jpg +../coco/images/val2014/COCO_val2014_000000580029.jpg +../coco/images/val2014/COCO_val2014_000000580294.jpg +../coco/images/val2014/COCO_val2014_000000580540.jpg +../coco/images/val2014/COCO_val2014_000000580608.jpg +../coco/images/val2014/COCO_val2014_000000580693.jpg +../coco/images/val2014/COCO_val2014_000000580720.jpg +../coco/images/val2014/COCO_val2014_000000580870.jpg +../coco/images/val2014/COCO_val2014_000000580975.jpg +../coco/images/val2014/COCO_val2014_000000581332.jpg +../coco/images/val2014/COCO_val2014_000000581593.jpg +../coco/images/val2014/COCO_val2014_000000581655.jpg +../coco/images/val2014/COCO_val2014_000000581731.jpg +../coco/images/val2014/COCO_val2014_000000581781.jpg +../coco/images/val2014/COCO_val2014_000000581887.jpg +../coco/images/val2014/COCO_val2014_000000581899.jpg diff --git a/data/coco_1k5k.data b/data/coco_1k5k.data new file mode 100644 index 00000000..a466df4a --- /dev/null +++ b/data/coco_1k5k.data @@ -0,0 +1,6 @@ +classes=80 +train=./data/coco_1000img.txt +valid=./data/5k.txt +names=data/coco.names +backup=backup/ +eval=coco diff --git a/train.py b/train.py index 9d90c86f..7f71783f 100644 --- a/train.py +++ b/train.py @@ -11,34 +11,32 @@ from utils.datasets import * from utils.utils import * # Hyperparameters -# 0.861 0.956 0.936 0.897 1.51 10.39 0.1367 0.01057 0.01181 0.8409 0.1287 0.001028 -3.441 0.9127 0.0004841 -hyp = {'k': 10.39, # loss multiple - 'xy': 0.1367, # xy loss fraction - 'wh': 0.01057, # wh loss fraction - 'cls': 0.01181, # cls loss fraction - 'conf': 0.8409, # conf loss fraction - 'iou_t': 0.1287, # iou target-anchor training threshold - 'lr0': 0.001028, # initial learning rate - 'lrf': -3.441, # final learning rate = lr0 * (10 ** lrf) - 'momentum': 0.9127, # SGD momentum - 'weight_decay': 0.0004841, # optimizer weight decay +# Evolved with python3 train.py --evolve --data data/coco_1k5k.data --epochs 50 --img-size 320 +hyp = {'xy': 0.5, # xy loss gain + 'wh': 0.0625, # wh loss gain + 'cls': 0.0625, # cls loss gain + 'conf': 4, # conf loss gain + 'iou_t': 0.1, # iou target-anchor training threshold + 'lr0': 0.001, # initial learning rate + 'lrf': -5., # final learning rate = lr0 * (10 ** lrf) + 'momentum': 0.9, # SGD momentum + 'weight_decay': 0.0005, # optimizer weight decay } - -# 0.856 0.95 0.935 0.887 1.3 8.488 0.1081 0.01351 0.01351 0.8649 0.1 0.001 -3 0.9 0.0005 -# hyp = {'k': 8.4875, # loss multiple -# 'xy': 0.108108, # xy loss fraction -# 'wh': 0.013514, # wh loss fraction -# 'cls': 0.013514, # cls loss fraction -# 'conf': 0.86486, # conf loss fraction +# Original +# hyp = {'xy': 0.5, # xy loss gain +# 'wh': 0.0625, # wh loss gain +# 'cls': 0.0625, # cls loss gain +# 'conf': 4, # conf loss gain # 'iou_t': 0.1, # iou target-anchor training threshold # 'lr0': 0.001, # initial learning rate -# 'lrf': -3., # final learning rate = lr0 * (10 ** lrf) +# 'lrf': -5., # final learning rate = lr0 * (10 ** lrf) # 'momentum': 0.9, # SGD momentum # 'weight_decay': 0.0005, # optimizer weight decay # } + def train( cfg, data_cfg, @@ -279,7 +277,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulate', type=int, default=1, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco_100img.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') @@ -326,7 +324,7 @@ if __name__ == '__main__': # Mutate hyperparameters old_hyp = hyp.copy() init_seeds(seed=int(time.time())) - s = [.2, .2, .2, .2, .2, .3, .2, .2, .02, .3] + s = [.2, .2, .2, .2, .2, .3, .2, .2, .01, .3] for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 1.1 # plt.hist(x.ravel(), 100) hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma @@ -337,12 +335,6 @@ if __name__ == '__main__': for k, v in zip(keys, limits): hyp[k] = np.clip(hyp[k], v[0], v[1]) - # Normalize loss components (sum to 1) - keys = ['xy', 'wh', 'cls', 'conf'] - s = sum([v for k, v in hyp.items() if k in keys]) - for k in keys: - hyp[k] /= s - # Determine mutation fitness results = train( opt.cfg, @@ -368,13 +360,17 @@ if __name__ == '__main__': else: hyp = old_hyp.copy() # reset hyp to - # # Plot results - # import numpy as np - # import matplotlib.pyplot as plt - # - # a = np.loadtxt('evolve.txt') - # x = a[:, 3] - # fig = plt.figure(figsize=(14, 7)) - # for i in range(1, 10): - # plt.subplot(2, 5, i) - # plt.plot(x, a[:, i + 5], '.') + # Plot results + import numpy as np + import matplotlib.pyplot as plt + a = np.loadtxt('evolve_1000val.txt') + x = a[:, 2] * a[:, 3] # metric = mAP * F1 + weights = (x - x.min()) ** 2 + fig = plt.figure(figsize=(14, 7)) + for i in range(len(hyp)): + y = a[:, i + 5] + mu = (y * weights).sum() / weights.sum() + plt.subplot(2, 5, i+1) + plt.plot(x.max(), mu, 'o') + plt.plot(x, y, '.') + print(list(hyp.keys())[i],'%.4g' % mu) diff --git a/utils/datasets.py b/utils/datasets.py index 31c5ba84..147dc077 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -130,7 +130,7 @@ class LoadWebcam: # for inference class LoadImagesAndLabels(Dataset): # for training/testing - def __init__(self, path, img_size=416, batch_size=16, augment=False, rect=False): + def __init__(self, path, img_size=416, batch_size=16, augment=False, rect=True): with open(path, 'r') as f: img_files = f.read().splitlines() self.img_files = list(filter(lambda x: len(x) > 0, img_files)) @@ -181,8 +181,8 @@ class LoadImagesAndLabels(Dataset): # for training/testing self.batch = bi # batch index of image # Preload images - # if n < 200: # preload all images into memory if possible - # self.imgs = [cv2.imread(img_files[i]) for i in range(n)] + if n < 1001: # preload all images into memory if possible + self.imgs = [cv2.imread(self.img_files[i]) for i in range(n)] # Preload labels (required for weighted CE training) self.labels = [np.zeros((0, 5))] * n @@ -201,11 +201,14 @@ class LoadImagesAndLabels(Dataset): # for training/testing img_path = self.img_files[index] label_path = self.label_files[index] - # if hasattr(self, 'imgs'): # preloaded - # img = self.imgs[index] # BGR - img = cv2.imread(img_path) # BGR + # Load image + if hasattr(self, 'imgs'): # preloaded + img = self.imgs[index] + else: + img = cv2.imread(img_path) # BGR assert img is not None, 'File Not Found ' + img_path + # Augment colorspace augment_hsv = True if self.augment and augment_hsv: # SV augmentation by 50% diff --git a/utils/utils.py b/utils/utils.py index 6a33e5f2..55d9d62d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -265,7 +265,7 @@ def compute_loss(p, targets, model): # predictions, targets, model # Compute losses h = model.hyp # hyperparameters bs = p[0].shape[0] # batch size - k = h['k'] * bs # loss gain + k = bs # loss gain for i, pi0 in enumerate(p): # layer i predictions, i b, a, gj, gi = indices[i] # image, anchor, gridy, gridx tconf = torch.zeros_like(pi0[..., 0]) # conf From 40a5680671e2decfc264892c22fd9c50b388ef1d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 8 May 2019 13:31:49 +0200 Subject: [PATCH 0821/2595] updates --- train.py | 28 ++++++++++++++-------------- utils/gcp.sh | 10 +++++----- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/train.py b/train.py index 7f71783f..ab6cdd64 100644 --- a/train.py +++ b/train.py @@ -360,17 +360,17 @@ if __name__ == '__main__': else: hyp = old_hyp.copy() # reset hyp to - # Plot results - import numpy as np - import matplotlib.pyplot as plt - a = np.loadtxt('evolve_1000val.txt') - x = a[:, 2] * a[:, 3] # metric = mAP * F1 - weights = (x - x.min()) ** 2 - fig = plt.figure(figsize=(14, 7)) - for i in range(len(hyp)): - y = a[:, i + 5] - mu = (y * weights).sum() / weights.sum() - plt.subplot(2, 5, i+1) - plt.plot(x.max(), mu, 'o') - plt.plot(x, y, '.') - print(list(hyp.keys())[i],'%.4g' % mu) + # # Plot results + # import numpy as np + # import matplotlib.pyplot as plt + # a = np.loadtxt('evolve_1000val.txt') + # x = a[:, 2] * a[:, 3] # metric = mAP * F1 + # weights = (x - x.min()) ** 2 + # fig = plt.figure(figsize=(14, 7)) + # for i in range(len(hyp)): + # y = a[:, i + 5] + # mu = (y * weights).sum() / weights.sum() + # plt.subplot(2, 5, i+1) + # plt.plot(x.max(), mu, 'o') + # plt.plot(x, y, '.') + # print(list(hyp.keys())[i],'%.4g' % mu) diff --git a/utils/gcp.sh b/utils/gcp.sh index ad90d3aa..82780a4d 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -45,10 +45,10 @@ wget https://storage.googleapis.com/ultralytics/yolov3/best_v1_0.pt -O weights/b # Reproduce tutorials rm results*.txt # WARNING: removes existing results -python3 train.py --nosave --data data/coco_1img.data && mv results.txt results3_1img.txt -python3 train.py --nosave --data data/coco_10img.data && mv results.txt results3_10img.txt -python3 train.py --nosave --data data/coco_100img.data && mv results.txt results4_100img.txt -python3 train.py --nosave --data data/coco_100img.data --transfer && mv results.txt results3_100imgTL.txt +python3 train.py --nosave --data data/coco_1img.data && mv results.txt results0r_1img.txt +python3 train.py --nosave --data data/coco_10img.data && mv results.txt results0r_10img.txt +python3 train.py --nosave --data data/coco_100img.data && mv results.txt results0r_100img.txt +#python3 train.py --nosave --data data/coco_100img.data --transfer && mv results.txt results3_100imgTL.txt python3 -c "from utils import utils; utils.plot_results()" gsutil cp results*.txt gs://ultralytics gsutil cp results.png gs://ultralytics @@ -75,7 +75,7 @@ git clone https://github.com/ultralytics/yolov3 # master # git clone -b test --depth 1 https://github.com/ultralytics/yolov3 yolov3_test # branch cp -r cocoapi/PythonAPI/pycocotools yolov3 cp -r weights yolov3 && cd yolov3 -python3 train.py --evolve --data data/coco_100img.data --num-workers 2 --epochs 30 +python3 train.py --evolve --data data/coco_1k5k.data --epochs 30 --img-size 320 gsutil cp evolve.txt gs://ultralytics sudo shutdown From fa11c951ad2d86bf217ea2b0eb1c75a7edac7474 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 8 May 2019 14:25:13 +0200 Subject: [PATCH 0822/2595] updates --- data/coco_64img.data | 6 +++++ data/coco_64img.txt | 64 ++++++++++++++++++++++++++++++++++++++++++++ train.py | 2 +- 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 data/coco_64img.data create mode 100644 data/coco_64img.txt diff --git a/data/coco_64img.data b/data/coco_64img.data new file mode 100644 index 00000000..8fceee7f --- /dev/null +++ b/data/coco_64img.data @@ -0,0 +1,6 @@ +classes=80 +train=./data/coco_32img.txt +valid=./data/coco_32img.txt +names=data/coco.names +backup=backup/ +eval=coco diff --git a/data/coco_64img.txt b/data/coco_64img.txt new file mode 100644 index 00000000..306ff3b4 --- /dev/null +++ b/data/coco_64img.txt @@ -0,0 +1,64 @@ +../coco/images/train2014/COCO_train2014_000000000009.jpg +../coco/images/train2014/COCO_train2014_000000000025.jpg +../coco/images/train2014/COCO_train2014_000000000030.jpg +../coco/images/train2014/COCO_train2014_000000000034.jpg +../coco/images/train2014/COCO_train2014_000000000036.jpg +../coco/images/train2014/COCO_train2014_000000000049.jpg +../coco/images/train2014/COCO_train2014_000000000061.jpg +../coco/images/train2014/COCO_train2014_000000000064.jpg +../coco/images/train2014/COCO_train2014_000000000071.jpg +../coco/images/train2014/COCO_train2014_000000000072.jpg +../coco/images/train2014/COCO_train2014_000000000077.jpg +../coco/images/train2014/COCO_train2014_000000000078.jpg +../coco/images/train2014/COCO_train2014_000000000081.jpg +../coco/images/train2014/COCO_train2014_000000000086.jpg +../coco/images/train2014/COCO_train2014_000000000089.jpg +../coco/images/train2014/COCO_train2014_000000000092.jpg +../coco/images/train2014/COCO_train2014_000000000094.jpg +../coco/images/train2014/COCO_train2014_000000000109.jpg +../coco/images/train2014/COCO_train2014_000000000110.jpg +../coco/images/train2014/COCO_train2014_000000000113.jpg +../coco/images/train2014/COCO_train2014_000000000127.jpg +../coco/images/train2014/COCO_train2014_000000000138.jpg +../coco/images/train2014/COCO_train2014_000000000142.jpg +../coco/images/train2014/COCO_train2014_000000000144.jpg +../coco/images/train2014/COCO_train2014_000000000149.jpg +../coco/images/train2014/COCO_train2014_000000000151.jpg +../coco/images/train2014/COCO_train2014_000000000154.jpg +../coco/images/train2014/COCO_train2014_000000000165.jpg +../coco/images/train2014/COCO_train2014_000000000194.jpg +../coco/images/train2014/COCO_train2014_000000000201.jpg +../coco/images/train2014/COCO_train2014_000000000247.jpg +../coco/images/train2014/COCO_train2014_000000000260.jpg +../coco/images/train2014/COCO_train2014_000000000263.jpg +../coco/images/train2014/COCO_train2014_000000000307.jpg +../coco/images/train2014/COCO_train2014_000000000308.jpg +../coco/images/train2014/COCO_train2014_000000000309.jpg +../coco/images/train2014/COCO_train2014_000000000312.jpg +../coco/images/train2014/COCO_train2014_000000000315.jpg +../coco/images/train2014/COCO_train2014_000000000321.jpg +../coco/images/train2014/COCO_train2014_000000000322.jpg +../coco/images/train2014/COCO_train2014_000000000326.jpg +../coco/images/train2014/COCO_train2014_000000000332.jpg +../coco/images/train2014/COCO_train2014_000000000349.jpg +../coco/images/train2014/COCO_train2014_000000000368.jpg +../coco/images/train2014/COCO_train2014_000000000370.jpg +../coco/images/train2014/COCO_train2014_000000000382.jpg +../coco/images/train2014/COCO_train2014_000000000384.jpg +../coco/images/train2014/COCO_train2014_000000000389.jpg +../coco/images/train2014/COCO_train2014_000000000394.jpg +../coco/images/train2014/COCO_train2014_000000000404.jpg +../coco/images/train2014/COCO_train2014_000000000419.jpg +../coco/images/train2014/COCO_train2014_000000000431.jpg +../coco/images/train2014/COCO_train2014_000000000436.jpg +../coco/images/train2014/COCO_train2014_000000000438.jpg +../coco/images/train2014/COCO_train2014_000000000443.jpg +../coco/images/train2014/COCO_train2014_000000000446.jpg +../coco/images/train2014/COCO_train2014_000000000450.jpg +../coco/images/train2014/COCO_train2014_000000000471.jpg +../coco/images/train2014/COCO_train2014_000000000490.jpg +../coco/images/train2014/COCO_train2014_000000000491.jpg +../coco/images/train2014/COCO_train2014_000000000510.jpg +../coco/images/train2014/COCO_train2014_000000000514.jpg +../coco/images/train2014/COCO_train2014_000000000529.jpg +../coco/images/train2014/COCO_train2014_000000000531.jpg diff --git a/train.py b/train.py index ab6cdd64..531edb95 100644 --- a/train.py +++ b/train.py @@ -324,7 +324,7 @@ if __name__ == '__main__': # Mutate hyperparameters old_hyp = hyp.copy() init_seeds(seed=int(time.time())) - s = [.2, .2, .2, .2, .2, .3, .2, .2, .01, .3] + s = [.2, .2, .2, .2, .3, .2, .2, .02, .3] for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 1.1 # plt.hist(x.ravel(), 100) hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma From e9246d8e6394ff758bdafb6bffb43f451f5bd2e5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 8 May 2019 14:25:30 +0200 Subject: [PATCH 0823/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 531edb95..4adb68eb 100644 --- a/train.py +++ b/train.py @@ -277,7 +277,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulate', type=int, default=1, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco_100img.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') From 573e8c2840c135e8c475b9fbde778c50aa0606c5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 8 May 2019 14:27:47 +0200 Subject: [PATCH 0824/2595] updates --- data/coco_64img.data | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/coco_64img.data b/data/coco_64img.data index 8fceee7f..633d08b9 100644 --- a/data/coco_64img.data +++ b/data/coco_64img.data @@ -1,6 +1,6 @@ classes=80 -train=./data/coco_32img.txt -valid=./data/coco_32img.txt +train=./data/coco_64img.txt +valid=./data/coco_64img.txt names=data/coco.names backup=backup/ eval=coco From 55806949704025c479e0904404cc3d0967ae3bad Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 8 May 2019 17:29:23 +0200 Subject: [PATCH 0825/2595] updates --- train.py | 8 ++++---- utils/datasets.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index 4adb68eb..67038e85 100644 --- a/train.py +++ b/train.py @@ -143,15 +143,15 @@ def train( model, optimizer = amp.initialize(model, optimizer, opt_level='O1') # Start training - t, t0 = time.time(), time.time() model.hyp = hyp # attach hyperparameters to model model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights model_info(model) nb = len(dataloader) results = (0, 0, 0, 0, 0) # P, R, mAP, F1, test_loss n_burnin = min(round(nb / 5 + 1), 1000) # burn-in batches - os.remove('train_batch0.jpg') if os.path.exists('train_batch0.jpg') else None - os.remove('test_batch0.jpg') if os.path.exists('test_batch0.jpg') else None + for f in glob.glob('train_batch*.jpg') + glob.glob('test_batch*.jpg'): + os.remove(f) + t, t0 = time.time(), time.time() for epoch in range(start_epoch, epochs): model.train() print(('\n%8s%12s' + '%10s' * 7) % ('Epoch', 'Batch', 'xy', 'wh', 'conf', 'cls', 'total', 'nTargets', 'time')) @@ -282,7 +282,7 @@ if __name__ == '__main__': parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') - parser.add_argument('--num-workers', type=int, default=2, help='number of Pytorch DataLoader workers') + parser.add_argument('--num-workers', type=int, default=4, help='number of Pytorch DataLoader workers') parser.add_argument('--dist-url', default='tcp://127.0.0.1:9999', type=str, help='distributed training init method') parser.add_argument('--rank', default=0, type=int, help='distributed training node rank') parser.add_argument('--world-size', default=1, type=int, help='number of nodes for distributed training') diff --git a/utils/datasets.py b/utils/datasets.py index 147dc077..22b6c4ba 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -318,7 +318,7 @@ def letterbox(img, new_shape=416, color=(127.5, 127.5, 127.5), mode='auto'): top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1)) left, right = int(round(dw - 0.1)), int(round(dw + 0.1)) - img = cv2.resize(img, new_unpad, interpolation=cv2.INTER_AREA) # resized, no border + img = cv2.resize(img, new_unpad, interpolation=cv2.INTER_LINEAR) # resized, no border img = cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color) # padded square return img, ratio, dw, dh From 40bc015b757f542b5e74811dc41fa918d7d1602b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 8 May 2019 18:54:55 +0200 Subject: [PATCH 0826/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 67038e85..f2d8d8ea 100644 --- a/train.py +++ b/train.py @@ -324,14 +324,14 @@ if __name__ == '__main__': # Mutate hyperparameters old_hyp = hyp.copy() init_seeds(seed=int(time.time())) - s = [.2, .2, .2, .2, .3, .2, .2, .02, .3] + s = [.2, .2, .2, .2, .3, .2, .2, .03, .3] for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 1.1 # plt.hist(x.ravel(), 100) hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma # Clip to limits keys = ['iou_t', 'momentum', 'weight_decay'] - limits = [(0, 0.90), (0.80, 0.95), (0, 0.01)] + limits = [(0, 0.90), (0.75, 0.95), (0, 0.01)] for k, v in zip(keys, limits): hyp[k] = np.clip(hyp[k], v[0], v[1]) From 1a757524bf58532e9bd59b87c22743bc42ea4c00 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 9 May 2019 11:23:36 +0200 Subject: [PATCH 0827/2595] add *.jpeg support --- requirements.txt | 2 +- utils/datasets.py | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/requirements.txt b/requirements.txt index aa74abd4..28380bd1 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ # pip3 install -U -r requirements.txt -# conda install numpy opencv matplotlib tqdm && conda install pytorch torchvision -c pytorch +# conda install numpy opencv matplotlib tqdm pillow && conda install pytorch torchvision -c pytorch numpy opencv-python torch >= 1.0.0 diff --git a/utils/datasets.py b/utils/datasets.py index 22b6c4ba..a1f435f2 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -139,9 +139,11 @@ class LoadImagesAndLabels(Dataset): # for training/testing assert n > 0, 'No images found in %s' % path self.img_size = img_size self.augment = augment - self.label_files = [ - x.replace('images', 'labels').replace('.bmp', '.txt').replace('.jpg', '.txt').replace('.png', '.txt') - for x in self.img_files] + self.label_files = [x.replace('images', 'labels'). + replace('.jpeg', '.txt'). + replace('.jpg', '.txt'). + replace('.bmp', '.txt'). + replace('.png', '.txt') for x in self.img_files] # Rectangular Training https://github.com/ultralytics/yolov3/issues/232 self.pad_rectangular = rect From 9a13bb53c8acd544721c29140dde62ef7ec353a6 Mon Sep 17 00:00:00 2001 From: ypw <50283848+ypw-rich@users.noreply.github.com> Date: Fri, 10 May 2019 18:27:31 +0800 Subject: [PATCH 0828/2595] Update utils.py (#268) --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 55d9d62d..c27d911c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -8,7 +8,7 @@ import numpy as np import torch import torch.nn as nn -from utils import torch_utils +from . import torch_utils matplotlib.rc('font', **{'size': 12}) From 31592c276f05490e123b35518d03cca41e43b36c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 10 May 2019 14:15:09 +0200 Subject: [PATCH 0829/2595] add *.jpeg support --- test.py | 7 +++++-- train.py | 14 +++++++++----- utils/datasets.py | 16 +++++++++++----- utils/utils.py | 9 +++++++++ 4 files changed, 34 insertions(+), 12 deletions(-) diff --git a/test.py b/test.py index bdbb258e..9d827339 100644 --- a/test.py +++ b/test.py @@ -176,14 +176,17 @@ def test( map = cocoEval.stats[1] # update mAP to pycocotools mAP # Return results - return mp, mr, map, mf1, loss / len(dataloader) + maps = np.zeros(nc) + for i, c in enumerate(ap_class): + maps[c] = ap[i] + return (mp, mr, map, mf1, loss / len(dataloader)), maps if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco_64img.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') diff --git a/train.py b/train.py index f2d8d8ea..548b32b9 100644 --- a/train.py +++ b/train.py @@ -23,6 +23,7 @@ hyp = {'xy': 0.5, # xy loss gain 'weight_decay': 0.0005, # optimizer weight decay } + # Original # hyp = {'xy': 0.5, # xy loss gain # 'wh': 0.0625, # wh loss gain @@ -36,7 +37,6 @@ hyp = {'xy': 0.5, # xy loss gain # } - def train( cfg, data_cfg, @@ -119,7 +119,7 @@ def train( # plt.savefig('LR.png', dpi=300) # Dataset - dataset = LoadImagesAndLabels(train_path, img_size, batch_size, augment=True) + dataset = LoadImagesAndLabels(train_path, img_size, batch_size, augment=True, image_weighting=False) # Initialize distributed training if torch.cuda.device_count() > 1: @@ -147,6 +147,7 @@ def train( model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights model_info(model) nb = len(dataloader) + maps = np.zeros(nc) # mAP per class results = (0, 0, 0, 0, 0) # P, R, mAP, F1, test_loss n_burnin = min(round(nb / 5 + 1), 1000) # burn-in batches for f in glob.glob('train_batch*.jpg') + glob.glob('test_batch*.jpg'): @@ -165,6 +166,9 @@ def train( if int(name.split('.')[1]) < cutoff: # if layer < 75 p.requires_grad = False if epoch == 0 else True + # Update image weights (optional) + dataset.image_weights = labels_to_image_weights(dataset.labels, nc=nc, class_weights=1 - maps) + mloss = torch.zeros(5).to(device) # mean losses for i, (imgs, targets, _, _) in enumerate(dataloader): imgs = imgs.to(device) @@ -218,10 +222,10 @@ def train( print('multi_scale img_size = %g' % dataset.img_size) # Calculate mAP (always test final epoch, skip first 5 if opt.nosave) - if not (opt.notest or (opt.nosave and epoch < 5)) or epoch == epochs - 1: + if not (opt.notest or (opt.nosave and epoch < 10)) or epoch == epochs - 1: with torch.no_grad(): - results = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size, model=model, - conf_thres=0.1) + results, maps = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size, model=model, + conf_thres=0.1) # Write epoch results with open('results.txt', 'a') as file: diff --git a/utils/datasets.py b/utils/datasets.py index a1f435f2..58b7780e 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -130,12 +130,13 @@ class LoadWebcam: # for inference class LoadImagesAndLabels(Dataset): # for training/testing - def __init__(self, path, img_size=416, batch_size=16, augment=False, rect=True): + def __init__(self, path, img_size=416, batch_size=16, augment=False, rect=True, image_weighting=False): with open(path, 'r') as f: img_files = f.read().splitlines() self.img_files = list(filter(lambda x: len(x) > 0, img_files)) n = len(self.img_files) + self.n = n assert n > 0, 'No images found in %s' % path self.img_size = img_size self.augment = augment @@ -145,9 +146,11 @@ class LoadImagesAndLabels(Dataset): # for training/testing replace('.bmp', '.txt'). replace('.png', '.txt') for x in self.img_files] + self.image_weighting = image_weighting + self.rect = False if image_weighting else rect + # Rectangular Training https://github.com/ultralytics/yolov3/issues/232 - self.pad_rectangular = rect - if self.pad_rectangular: + if self.rect: from PIL import Image bi = np.floor(np.arange(n) / batch_size).astype(np.int) # batch index nb = bi[-1] + 1 # number of batches @@ -200,6 +203,9 @@ class LoadImagesAndLabels(Dataset): # for training/testing return len(self.img_files) def __getitem__(self, index): + if self.image_weighting: + index = random.choices(range(self.n), weights=self.image_weights, k=1)[0] # random weighted index + img_path = self.img_files[index] label_path = self.label_files[index] @@ -230,7 +236,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Letterbox h, w, _ = img.shape - if self.pad_rectangular: + if self.rect: new_shape = self.batch_shapes[self.batch[index]] img, ratio, padw, padh = letterbox(img, new_shape=new_shape, mode='rect') else: @@ -389,7 +395,7 @@ def random_affine(img, targets=(), degrees=(-10, 10), translate=(.1, .1), scale= h = xy[:, 3] - xy[:, 1] area = w * h ar = np.maximum(w / (h + 1e-16), h / (w + 1e-16)) - i = (w > 2) & (h > 2) & (area / (area0 + 1e-16) > 0.1) & (ar < 10) + i = (w > 4) & (h > 4) & (area / (area0 + 1e-16) > 0.1) & (ar < 10) targets = targets[i] targets[:, 1:5] = xy[i] diff --git a/utils/utils.py b/utils/utils.py index c27d911c..60b225d9 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -61,6 +61,15 @@ def labels_to_class_weights(labels, nc=80): return torch.Tensor(weights) +def labels_to_image_weights(labels, nc=80, class_weights=np.ones(80)): + # Produces image weights based on class mAPs + n = len(labels) + class_counts = np.array([np.bincount(labels[i][:, 0].astype(np.int), minlength=nc) for i in range(n)]) + image_weights = (class_weights.reshape(1, nc) * class_counts).sum(1) + # index = random.choices(range(n), weights=image_weights, k=1) # weight image sample + return image_weights + + def coco_class_weights(): # frequency of each class in coco train2014 n = [187437, 4955, 30920, 6033, 3838, 4332, 3160, 7051, 7677, 9167, 1316, 1372, 833, 6757, 7355, 3302, 3776, 4671, 6769, 5706, 3908, 903, 3686, 3596, 6200, 7920, 8779, 4505, 4272, 1862, 4698, 1962, 4403, 6659, 2402, 2689, From ae03cf3eea33d48777c17bd6754de4c06098eb1e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 10 May 2019 15:16:02 +0200 Subject: [PATCH 0830/2595] add *.jpeg support --- train.py | 7 ++++--- utils/datasets.py | 10 +++++----- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/train.py b/train.py index 548b32b9..6e6b0bcb 100644 --- a/train.py +++ b/train.py @@ -167,7 +167,8 @@ def train( p.requires_grad = False if epoch == 0 else True # Update image weights (optional) - dataset.image_weights = labels_to_image_weights(dataset.labels, nc=nc, class_weights=1 - maps) + image_weights = labels_to_image_weights(dataset.labels, nc=nc, class_weights=1 - maps) + dataset.indices = random.choices(range(dataset.n), weights=image_weights, k=dataset.n) # random weighted index mloss = torch.zeros(5).to(device) # mean losses for i, (imgs, targets, _, _) in enumerate(dataloader): @@ -281,12 +282,12 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulate', type=int, default=1, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco_32img.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') - parser.add_argument('--num-workers', type=int, default=4, help='number of Pytorch DataLoader workers') + parser.add_argument('--num-workers', type=int, default=0, help='number of Pytorch DataLoader workers') parser.add_argument('--dist-url', default='tcp://127.0.0.1:9999', type=str, help='distributed training init method') parser.add_argument('--rank', default=0, type=int, help='distributed training node rank') parser.add_argument('--world-size', default=1, type=int, help='number of nodes for distributed training') diff --git a/utils/datasets.py b/utils/datasets.py index 58b7780e..b8d88a63 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -130,7 +130,7 @@ class LoadWebcam: # for inference class LoadImagesAndLabels(Dataset): # for training/testing - def __init__(self, path, img_size=416, batch_size=16, augment=False, rect=True, image_weighting=False): + def __init__(self, path, img_size=416, batch_size=16, augment=False, rect=True, image_weights=False): with open(path, 'r') as f: img_files = f.read().splitlines() self.img_files = list(filter(lambda x: len(x) > 0, img_files)) @@ -146,8 +146,8 @@ class LoadImagesAndLabels(Dataset): # for training/testing replace('.bmp', '.txt'). replace('.png', '.txt') for x in self.img_files] - self.image_weighting = image_weighting - self.rect = False if image_weighting else rect + self.image_weights = image_weights + self.rect = False if image_weights else rect # Rectangular Training https://github.com/ultralytics/yolov3/issues/232 if self.rect: @@ -203,8 +203,8 @@ class LoadImagesAndLabels(Dataset): # for training/testing return len(self.img_files) def __getitem__(self, index): - if self.image_weighting: - index = random.choices(range(self.n), weights=self.image_weights, k=1)[0] # random weighted index + if self.image_weights: + index = self.indices[index] img_path = self.img_files[index] label_path = self.label_files[index] From 3f8b64974cd8ca78adec84e9cd2337f20e04b453 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 10 May 2019 15:24:03 +0200 Subject: [PATCH 0831/2595] add *.jpeg support --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 6e6b0bcb..98c3b514 100644 --- a/train.py +++ b/train.py @@ -287,7 +287,7 @@ if __name__ == '__main__': parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') - parser.add_argument('--num-workers', type=int, default=0, help='number of Pytorch DataLoader workers') + parser.add_argument('--num-workers', type=int, default=4, help='number of Pytorch DataLoader workers') parser.add_argument('--dist-url', default='tcp://127.0.0.1:9999', type=str, help='distributed training init method') parser.add_argument('--rank', default=0, type=int, help='distributed training node rank') parser.add_argument('--world-size', default=1, type=int, help='number of nodes for distributed training') From ddd0474111d4d915f8aa3114101f53d833aebf1b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 10 May 2019 15:28:54 +0200 Subject: [PATCH 0832/2595] add *.jpeg support --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 98c3b514..4fd25e3e 100644 --- a/train.py +++ b/train.py @@ -282,7 +282,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulate', type=int, default=1, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco_32img.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') From 9ffb40b0be8698dadce4852d9f9eceeee169d366 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 10 May 2019 16:29:37 +0200 Subject: [PATCH 0833/2595] updates --- train.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 4fd25e3e..edef2a0d 100644 --- a/train.py +++ b/train.py @@ -119,7 +119,7 @@ def train( # plt.savefig('LR.png', dpi=300) # Dataset - dataset = LoadImagesAndLabels(train_path, img_size, batch_size, augment=True, image_weighting=False) + dataset = LoadImagesAndLabels(train_path, img_size, batch_size, augment=True, image_weights=False) # Initialize distributed training if torch.cuda.device_count() > 1: @@ -167,7 +167,8 @@ def train( p.requires_grad = False if epoch == 0 else True # Update image weights (optional) - image_weights = labels_to_image_weights(dataset.labels, nc=nc, class_weights=1 - maps) + w = model.class_weights.cpu().numpy() * (1 - maps) ** 2 # class weights + image_weights = labels_to_image_weights(dataset.labels, nc=nc, class_weights=w) dataset.indices = random.choices(range(dataset.n), weights=image_weights, k=dataset.n) # random weighted index mloss = torch.zeros(5).to(device) # mean losses From c45cdc4fa35009dcf50b506310501a0027a8706b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 10 May 2019 17:08:00 +0200 Subject: [PATCH 0834/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index edef2a0d..dc0eb480 100644 --- a/train.py +++ b/train.py @@ -167,7 +167,7 @@ def train( p.requires_grad = False if epoch == 0 else True # Update image weights (optional) - w = model.class_weights.cpu().numpy() * (1 - maps) ** 2 # class weights + w = model.class_weights.cpu().numpy() * (1 - maps) # class weights image_weights = labels_to_image_weights(dataset.labels, nc=nc, class_weights=w) dataset.indices = random.choices(range(dataset.n), weights=image_weights, k=dataset.n) # random weighted index From bc19e892476da3c36be6f6d7eb7f2f949e99d773 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 11 May 2019 14:38:48 +0200 Subject: [PATCH 0835/2595] add *.jpeg support --- utils/datasets.py | 7 +++---- utils/utils.py | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index b8d88a63..db2ac998 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -140,15 +140,14 @@ class LoadImagesAndLabels(Dataset): # for training/testing assert n > 0, 'No images found in %s' % path self.img_size = img_size self.augment = augment + self.image_weights = image_weights + self.rect = False if image_weights else rect self.label_files = [x.replace('images', 'labels'). replace('.jpeg', '.txt'). replace('.jpg', '.txt'). replace('.bmp', '.txt'). replace('.png', '.txt') for x in self.img_files] - self.image_weights = image_weights - self.rect = False if image_weights else rect - # Rectangular Training https://github.com/ultralytics/yolov3/issues/232 if self.rect: from PIL import Image @@ -187,7 +186,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Preload images if n < 1001: # preload all images into memory if possible - self.imgs = [cv2.imread(self.img_files[i]) for i in range(n)] + self.imgs = [cv2.imread(self.img_files[i]) for i in tqdm(range(n), desc='Reading images')] # Preload labels (required for weighted CE training) self.labels = [np.zeros((0, 5))] * n diff --git a/utils/utils.py b/utils/utils.py index 60b225d9..6eba4e5f 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -547,7 +547,7 @@ def plot_images(imgs, targets, fname='images.jpg'): plt.close() -def plot_results(start=1, stop=0): # from utils.utils import *; plot_results() +def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() # Plot training results files 'results*.txt' # import os; os.system('wget https://storage.googleapis.com/ultralytics/yolov3/results_v3.txt') From 584e0a3be804e950d4b3205c334e2cbc85ddb1a1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 11 May 2019 14:55:10 +0200 Subject: [PATCH 0836/2595] add *.jpeg support --- train.py | 55 +++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 18 deletions(-) diff --git a/train.py b/train.py index dc0eb480..d5210c43 100644 --- a/train.py +++ b/train.py @@ -10,21 +10,19 @@ from models import * from utils.datasets import * from utils.utils import * -# Hyperparameters -# Evolved with python3 train.py --evolve --data data/coco_1k5k.data --epochs 50 --img-size 320 -hyp = {'xy': 0.5, # xy loss gain - 'wh': 0.0625, # wh loss gain - 'cls': 0.0625, # cls loss gain - 'conf': 4, # conf loss gain - 'iou_t': 0.1, # iou target-anchor training threshold - 'lr0': 0.001, # initial learning rate +# Hyperparameters: train.py --evolve --epochs 2 --img-size 320, Metrics: 0.204 0.302 0.175 0.234 (square smart) +hyp = {'xy': 0.167, # xy loss gain + 'wh': 0.09339, # wh loss gain + 'cls': 0.03868, # cls loss gain + 'conf': 4.546, # conf loss gain + 'iou_t': 0.2454, # iou target-anchor training threshold + 'lr0': 0.000198, # initial learning rate 'lrf': -5., # final learning rate = lr0 * (10 ** lrf) - 'momentum': 0.9, # SGD momentum - 'weight_decay': 0.0005, # optimizer weight decay - } + 'momentum': 0.95, # SGD momentum + 'weight_decay': 0.0007838} # optimizer weight decay -# Original +# Hyperparameters: Original, Metrics: 0.172 0.304 0.156 0.205 (square) # hyp = {'xy': 0.5, # xy loss gain # 'wh': 0.0625, # wh loss gain # 'cls': 0.0625, # cls loss gain @@ -33,8 +31,29 @@ hyp = {'xy': 0.5, # xy loss gain # 'lr0': 0.001, # initial learning rate # 'lrf': -5., # final learning rate = lr0 * (10 ** lrf) # 'momentum': 0.9, # SGD momentum -# 'weight_decay': 0.0005, # optimizer weight decay -# } +# 'weight_decay': 0.0005} # optimizer weight decay + +# Hyperparameters: train.py --evolve --epochs 2 --img-size 320, Metrics: 0.225 0.251 0.145 0.218 (rect) +# hyp = {'xy': 0.4499, # xy loss gain +# 'wh': 0.05121, # wh loss gain +# 'cls': 0.04207, # cls loss gain +# 'conf': 2.853, # conf loss gain +# 'iou_t': 0.2487, # iou target-anchor training threshold +# 'lr0': 0.0005301, # initial learning rate +# 'lrf': -5., # final learning rate = lr0 * (10 ** lrf) +# 'momentum': 0.8823, # SGD momentum +# 'weight_decay': 0.0004149} # optimizer weight decay + +# Hyperparameters: train.py --evolve --epochs 2 --img-size 320, Metrics: 0.178 0.313 0.167 0.212 (square) +# hyp = {'xy': 0.4664, # xy loss gain +# 'wh': 0.08437, # wh loss gain +# 'cls': 0.05145, # cls loss gain +# 'conf': 4.244, # conf loss gain +# 'iou_t': 0.09121, # iou target-anchor training threshold +# 'lr0': 0.0004938, # initial learning rate +# 'lrf': -5., # final learning rate = lr0 * (10 ** lrf) +# 'momentum': 0.9025, # SGD momentum +# 'weight_decay': 0.0005417} # optimizer weight decay def train( @@ -119,7 +138,7 @@ def train( # plt.savefig('LR.png', dpi=300) # Dataset - dataset = LoadImagesAndLabels(train_path, img_size, batch_size, augment=True, image_weights=False) + dataset = LoadImagesAndLabels(train_path, img_size, batch_size, augment=True, rect=True, image_weights=True) # Initialize distributed training if torch.cuda.device_count() > 1: @@ -330,14 +349,14 @@ if __name__ == '__main__': # Mutate hyperparameters old_hyp = hyp.copy() init_seeds(seed=int(time.time())) - s = [.2, .2, .2, .2, .3, .2, .2, .03, .3] + s = [.3, .3, .3, .3, .3, .3, .3, .03, .3] for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 1.1 # plt.hist(x.ravel(), 100) hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma # Clip to limits - keys = ['iou_t', 'momentum', 'weight_decay'] - limits = [(0, 0.90), (0.75, 0.95), (0, 0.01)] + keys = ['lr0', 'iou_t', 'momentum', 'weight_decay'] + limits = [(1e-4, 1e-2), (0, 0.90), (0.70, 0.99), (0, 0.01)] for k, v in zip(keys, limits): hyp[k] = np.clip(hyp[k], v[0], v[1]) From 3a2da49f82e8f32c820d846207ab18a7672b569b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 13 May 2019 14:41:17 +0200 Subject: [PATCH 0837/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 9d827339..ed123878 100644 --- a/test.py +++ b/test.py @@ -176,7 +176,7 @@ def test( map = cocoEval.stats[1] # update mAP to pycocotools mAP # Return results - maps = np.zeros(nc) + maps = np.zeros(nc) + map for i, c in enumerate(ap_class): maps[c] = ap[i] return (mp, mr, map, mf1, loss / len(dataloader)), maps From acf31e477b772eaf29813459a4e3071e64bf62a6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 13 May 2019 20:13:20 +0200 Subject: [PATCH 0838/2595] add *.jpeg support --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index ed123878..f279cd79 100644 --- a/test.py +++ b/test.py @@ -186,7 +186,7 @@ if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco_64img.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') From 48d4c5938d77d7e7b4e92103758a515271a25ad6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 13 May 2019 21:18:15 +0200 Subject: [PATCH 0839/2595] updates --- utils/gcp.sh | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 82780a4d..a7e95bf3 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -9,12 +9,11 @@ git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make sudo shutdown # Re-clone -rm -rf yolov3 +rm -rf yolov3 # Warning: remove existing git clone https://github.com/ultralytics/yolov3 # master # git clone -b test --depth 1 https://github.com/ultralytics/yolov3 test # branch cp -r cocoapi/PythonAPI/pycocotools yolov3 -cp -r weights yolov3 -cd yolov3 +cp -r weights yolov3 && cd yolov3 # Train python3 train.py @@ -61,23 +60,16 @@ python3 test.py --save-json --img-size 320 sudo shutdown # Unit tests -rm -rf yolov3 -git clone https://github.com/ultralytics/yolov3 # master -cp -r cocoapi/PythonAPI/pycocotools yolov3 -cp -r weights yolov3 && cd yolov3 python3 detect.py # detect 2 persons, 1 tie python3 test.py --data data/coco_32img.data # test mAP = 0.78 python3 train.py --data data/coco_32img.data --epochs 4 --nosave # train 4 epochs +# AlexyAB Darknet +./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2.cfg darknet53.conv.74 # train +./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp.cfg backup/yolov3-spp_last.weights # resume +python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/backup yolov3-spp_3000.weights # test + # Debug/Development -rm -rf yolov3 -git clone https://github.com/ultralytics/yolov3 # master -# git clone -b test --depth 1 https://github.com/ultralytics/yolov3 yolov3_test # branch -cp -r cocoapi/PythonAPI/pycocotools yolov3 -cp -r weights yolov3 && cd yolov3 python3 train.py --evolve --data data/coco_1k5k.data --epochs 30 --img-size 320 gsutil cp evolve.txt gs://ultralytics sudo shutdown - - - From 7cedb51dac6c9d06adc2210d787403c8fd3583ca Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 13 May 2019 21:36:33 +0200 Subject: [PATCH 0840/2595] updates --- detect.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index 30d708e4..9282e47b 100644 --- a/detect.py +++ b/detect.py @@ -27,7 +27,7 @@ def detect( # Initialize model if ONNX_EXPORT: - s = (416, 416) # onnx model image size (height, width) + s = (192, 320) # onnx model image size (height, width) model = Darknet(cfg, s) else: model = Darknet(cfg, img_size) @@ -121,7 +121,7 @@ if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') - parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') + parser.add_argument('--weights', type=str, default='weights/supermarket2_yolov3-spp-sm2_3000_v0.weights', help='path to weights file') parser.add_argument('--images', type=str, default='data/samples', help='path to images') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.5, help='object confidence threshold') From e42278e9812f1790e5d8ea1bc83eab3de95a670e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 13 May 2019 22:01:10 +0200 Subject: [PATCH 0841/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index d5210c43..fde05de4 100644 --- a/train.py +++ b/train.py @@ -138,7 +138,7 @@ def train( # plt.savefig('LR.png', dpi=300) # Dataset - dataset = LoadImagesAndLabels(train_path, img_size, batch_size, augment=True, rect=True, image_weights=True) + dataset = LoadImagesAndLabels(train_path, img_size, batch_size, augment=True, rect=False, image_weights=True) # Initialize distributed training if torch.cuda.device_count() > 1: From 4b15644b463e718f8db2d6939789ac1ae143c0fa Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 14 May 2019 12:59:12 +0200 Subject: [PATCH 0842/2595] updates --- utils/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 6eba4e5f..4f787fc5 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -31,9 +31,9 @@ def init_seeds(seed=0): def load_classes(path): - # Loads class labels at 'path' - fp = open(path, 'r') - names = fp.read().split('\n') + # Loads *.names file at 'path' + with open(path, 'r') as f: + names = f.read().split('\n') return list(filter(None, names)) # filter removes empty strings (such as last line) From cc5660e7c0b6d7daa67ceae10d9d8fa95b6e33ba Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 14 May 2019 18:37:13 +0200 Subject: [PATCH 0843/2595] updates --- models.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/models.py b/models.py index 7bf737a3..8976d519 100755 --- a/models.py +++ b/models.py @@ -5,7 +5,7 @@ import torch.nn.functional as F from utils.parse_config import * from utils.utils import * -ONNX_EXPORT = False +ONNX_EXPORT = True def create_modules(module_defs): @@ -111,9 +111,6 @@ class YOLOLayer(nn.Module): if ONNX_EXPORT: # grids must be computed in __init__ stride = [32, 16, 8][yolo_layer] # stride of this layer - if cfg.endswith('yolov3-tiny.cfg'): - stride *= 2 - nx = int(img_size[1] / stride) # number x grid points ny = int(img_size[0] / stride) # number y grid points create_grids(self, max(img_size), (nx, ny)) @@ -215,6 +212,7 @@ class Darknet(nn.Module): return output elif ONNX_EXPORT: output = torch.cat(output, 1) # cat 3 layers 85 x (507, 2028, 8112) to 85 x 10647 + print(output.shape) return output[5:85].t(), output[:4].t() # ONNX scores, boxes else: io, p = list(zip(*output)) # inference output, training output From c8a30663f0473b9068d74030a0251b6a05dd7a3a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 14 May 2019 18:43:14 +0200 Subject: [PATCH 0844/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 8976d519..ee0559be 100755 --- a/models.py +++ b/models.py @@ -5,7 +5,7 @@ import torch.nn.functional as F from utils.parse_config import * from utils.utils import * -ONNX_EXPORT = True +ONNX_EXPORT = False def create_modules(module_defs): From 6930fb44ac2fc5412fe0ad6bdf0700865d5ad5b7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 14 May 2019 22:24:45 +0200 Subject: [PATCH 0845/2595] updates --- cfg/yolov3-tiny.cfg | 2 +- detect.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cfg/yolov3-tiny.cfg b/cfg/yolov3-tiny.cfg index cfca3cfa..42c0fcf9 100644 --- a/cfg/yolov3-tiny.cfg +++ b/cfg/yolov3-tiny.cfg @@ -172,7 +172,7 @@ filters=255 activation=linear [yolo] -mask = 0,1,2 +mask = 1,2,3 anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 classes=80 num=6 diff --git a/detect.py b/detect.py index 9282e47b..bc091259 100644 --- a/detect.py +++ b/detect.py @@ -121,7 +121,7 @@ if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') - parser.add_argument('--weights', type=str, default='weights/supermarket2_yolov3-spp-sm2_3000_v0.weights', help='path to weights file') + parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--images', type=str, default='data/samples', help='path to images') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.5, help='object confidence threshold') From aae93a96516502e7e4345fe4a7e5d4f97546aca7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 18 May 2019 12:07:57 +0200 Subject: [PATCH 0846/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index fde05de4..1eea7a24 100644 --- a/train.py +++ b/train.py @@ -138,7 +138,7 @@ def train( # plt.savefig('LR.png', dpi=300) # Dataset - dataset = LoadImagesAndLabels(train_path, img_size, batch_size, augment=True, rect=False, image_weights=True) + dataset = LoadImagesAndLabels(train_path, img_size, batch_size, augment=False, rect=False, image_weights=False) # Initialize distributed training if torch.cuda.device_count() > 1: From 0b4f4bb04be287c2c0b92f507e734080eab1f24e Mon Sep 17 00:00:00 2001 From: Dustin Kendall <43619961+dkendall100@users.noreply.github.com> Date: Sat, 18 May 2019 05:47:12 -0500 Subject: [PATCH 0847/2595] Encoding of video output - Resolves Issue 243 (#280) * Hardcoded \'mpv4\' codec to work on multiple OS's and versions of ffmpeg * changed fourcc code to code known to work on windows and linux, and added usefull arguments --- detect.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/detect.py b/detect.py index bc091259..b980aa5d 100644 --- a/detect.py +++ b/detect.py @@ -13,6 +13,7 @@ def detect( weights, images='data/samples', # input folder output='output', # output folder + fourcc='mp4v', img_size=416, conf_thres=0.5, nms_thres=0.5, @@ -104,11 +105,10 @@ def detect( if isinstance(vid_writer, cv2.VideoWriter): vid_writer.release() # release previous video writer - codec = int(vid_cap.get(cv2.CAP_PROP_FOURCC)) fps = vid_cap.get(cv2.CAP_PROP_FPS) width = int(vid_cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height = int(vid_cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) - vid_writer = cv2.VideoWriter(save_path, codec, fps, (width, height)) + vid_writer = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*fourcc), fps, (width, height)) vid_writer.write(im0) if save_images: @@ -126,6 +126,8 @@ if __name__ == '__main__': parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.5, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') + parser.add_argument('--fourcc', type=str, default='mp4v', help='specifies the fourcc code for output video encoding (make sure ffmpeg supports specified fourcc codec)') + parser.add_argument('--output', type=str, default='output',help='specifies the output path for images and videos') opt = parser.parse_args() print(opt) @@ -137,5 +139,7 @@ if __name__ == '__main__': images=opt.images, img_size=opt.img_size, conf_thres=opt.conf_thres, - nms_thres=opt.nms_thres + nms_thres=opt.nms_thres, + fourcc=opt.fourcc, + output=opt.output ) From b034382c8bd4a33f4150cb38e87f3e4c218703b0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 18 May 2019 23:24:26 +0200 Subject: [PATCH 0848/2595] updates --- train.py | 2 +- utils/gcp.sh | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 1eea7a24..d31ffd26 100644 --- a/train.py +++ b/train.py @@ -138,7 +138,7 @@ def train( # plt.savefig('LR.png', dpi=300) # Dataset - dataset = LoadImagesAndLabels(train_path, img_size, batch_size, augment=False, rect=False, image_weights=False) + dataset = LoadImagesAndLabels(train_path, img_size, batch_size, augment=True, rect=False, image_weights=False) # Initialize distributed training if torch.cuda.device_count() > 1: diff --git a/utils/gcp.sh b/utils/gcp.sh index a7e95bf3..b5109df4 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -61,8 +61,10 @@ sudo shutdown # Unit tests python3 detect.py # detect 2 persons, 1 tie -python3 test.py --data data/coco_32img.data # test mAP = 0.78 -python3 train.py --data data/coco_32img.data --epochs 4 --nosave # train 4 epochs +python3 test.py --data data/coco_32img.data # test mAP = 0.8 +python3 train.py --data data/coco_32img.data --epochs 5 --nosave # train 5 epochs +python3 train.py --data data/coco_1cls.data --epochs 5 --nosave # train 5 epochs +python3 train.py --data data/coco_1img.data --epochs 5 --nosave # train 5 epochs # AlexyAB Darknet ./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2.cfg darknet53.conv.74 # train From 68490520db1e49673e8dfe39979821318f80e22c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 19 May 2019 17:28:14 +0200 Subject: [PATCH 0849/2595] updates --- utils/gcp.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/utils/gcp.sh b/utils/gcp.sh index b5109df4..a7bf2436 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -67,6 +67,8 @@ python3 train.py --data data/coco_1cls.data --epochs 5 --nosave # train 5 epoch python3 train.py --data data/coco_1img.data --epochs 5 --nosave # train 5 epochs # AlexyAB Darknet +rm -rf darknet && git clone https://github.com/AlexeyAB/darknet +wget -c https://pjreddie.com/media/files/darknet53.conv.74 ./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2.cfg darknet53.conv.74 # train ./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp.cfg backup/yolov3-spp_last.weights # resume python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/backup yolov3-spp_3000.weights # test From a9daf244b9e3b067077a2073ecb9ae299491013a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 19 May 2019 18:03:10 +0200 Subject: [PATCH 0850/2595] updates --- utils/gcp.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index a7bf2436..6011a338 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -71,7 +71,7 @@ rm -rf darknet && git clone https://github.com/AlexeyAB/darknet wget -c https://pjreddie.com/media/files/darknet53.conv.74 ./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2.cfg darknet53.conv.74 # train ./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp.cfg backup/yolov3-spp_last.weights # resume -python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/backup yolov3-spp_3000.weights # test +python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/backup/yolov3-spp-sm2_3000.weights # test # Debug/Development python3 train.py --evolve --data data/coco_1k5k.data --epochs 30 --img-size 320 From 8eced539e022c10d9037bea496f0a709e4af7393 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 20 May 2019 14:52:14 +0200 Subject: [PATCH 0851/2595] updates --- utils/datasets.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/utils/datasets.py b/utils/datasets.py index db2ac998..912c91a7 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -195,7 +195,9 @@ class LoadImagesAndLabels(Dataset): # for training/testing try: with open(file, 'r') as f: self.labels[i] = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) + assert self.labels[i].shape[1] == 5, 'corrupted labels file: %s' % file except: + print('Warning: missing labels for %s' % self.img_files[i]) pass # missing label file def __len__(self): From 13180b51aca4da5280ed0bd0b260075dcc98989b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 20 May 2019 16:16:43 +0200 Subject: [PATCH 0852/2595] updates --- utils/gcp.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/gcp.sh b/utils/gcp.sh index 6011a338..25c48ce5 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -67,6 +67,7 @@ python3 train.py --data data/coco_1cls.data --epochs 5 --nosave # train 5 epoch python3 train.py --data data/coco_1img.data --epochs 5 --nosave # train 5 epochs # AlexyAB Darknet +gsutil cp -r gs://sm4/supermarket2 . rm -rf darknet && git clone https://github.com/AlexeyAB/darknet wget -c https://pjreddie.com/media/files/darknet53.conv.74 ./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2.cfg darknet53.conv.74 # train From 5aeef8fba753aa6ceb7f893cbf4a4d59fc731afb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 20 May 2019 17:50:12 +0200 Subject: [PATCH 0853/2595] updates --- utils/gcp.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 25c48ce5..bcaa9b41 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -67,12 +67,12 @@ python3 train.py --data data/coco_1cls.data --epochs 5 --nosave # train 5 epoch python3 train.py --data data/coco_1img.data --epochs 5 --nosave # train 5 epochs # AlexyAB Darknet -gsutil cp -r gs://sm4/supermarket2 . -rm -rf darknet && git clone https://github.com/AlexeyAB/darknet -wget -c https://pjreddie.com/media/files/darknet53.conv.74 +gsutil cp -r gs://sm4/supermarket2 . # dataset from bucket +rm -rf darknet && git clone https://github.com/AlexeyAB/darknet && cd darknet && wget -c https://pjreddie.com/media/files/darknet53.conv.74 ./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2.cfg darknet53.conv.74 # train ./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp.cfg backup/yolov3-spp_last.weights # resume python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/backup/yolov3-spp-sm2_3000.weights # test +gsutil cp -r backup/*.weights gs://sm4/weights # weights to bucket # Debug/Development python3 train.py --evolve --data data/coco_1k5k.data --epochs 30 --img-size 320 From c2950dbfb667e70a3db35b8da2147a6207c8e667 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 20 May 2019 20:06:36 +0200 Subject: [PATCH 0854/2595] updates --- utils/gcp.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index bcaa9b41..d32bfbf6 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -70,7 +70,7 @@ python3 train.py --data data/coco_1img.data --epochs 5 --nosave # train 5 epoch gsutil cp -r gs://sm4/supermarket2 . # dataset from bucket rm -rf darknet && git clone https://github.com/AlexeyAB/darknet && cd darknet && wget -c https://pjreddie.com/media/files/darknet53.conv.74 ./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2.cfg darknet53.conv.74 # train -./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp.cfg backup/yolov3-spp_last.weights # resume +./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2.cfg backup/yolov3-spp-sm2_last.weights # resume python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/backup/yolov3-spp-sm2_3000.weights # test gsutil cp -r backup/*.weights gs://sm4/weights # weights to bucket From b2abd46437931abe56b6844f1bb9ebc27ccf7d52 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 21 May 2019 12:58:18 +0200 Subject: [PATCH 0855/2595] updates --- train.py | 2 +- utils/datasets.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index d31ffd26..0f939769 100644 --- a/train.py +++ b/train.py @@ -174,7 +174,7 @@ def train( t, t0 = time.time(), time.time() for epoch in range(start_epoch, epochs): model.train() - print(('\n%8s%12s' + '%10s' * 7) % ('Epoch', 'Batch', 'xy', 'wh', 'conf', 'cls', 'total', 'nTargets', 'time')) + print(('\n%8s%12s' + '%10s' * 7) % ('Epoch', 'Batch', 'xy', 'wh', 'conf', 'cls', 'total', 'targets', 'time')) # Update scheduler scheduler.step() diff --git a/utils/datasets.py b/utils/datasets.py index 912c91a7..054eb9e0 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -199,6 +199,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing except: print('Warning: missing labels for %s' % self.img_files[i]) pass # missing label file + assert len(np.concatenate(self.labels, 0)) > 0, 'No labels found. Check label paths.' def __len__(self): return len(self.img_files) From 401a615d34a5118ecf848e1bad504741bb1a45f1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 21 May 2019 12:59:04 +0200 Subject: [PATCH 0856/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 054eb9e0..44098898 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -199,7 +199,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing except: print('Warning: missing labels for %s' % self.img_files[i]) pass # missing label file - assert len(np.concatenate(self.labels, 0)) > 0, 'No labels found. Check label paths.' + assert len(np.concatenate(self.labels, 0)) > 0, 'No labels found. Incorrect label paths provided.' def __len__(self): return len(self.img_files) From 0effcd02bf98b9b292a6f71fd0030a7190ef2af3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 21 May 2019 14:01:06 +0200 Subject: [PATCH 0857/2595] updates --- utils/datasets.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 44098898..5ebbc4de 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -194,11 +194,14 @@ class LoadImagesAndLabels(Dataset): # for training/testing for i, file in enumerate(iter): try: with open(file, 'r') as f: - self.labels[i] = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) - assert self.labels[i].shape[1] == 5, 'corrupted labels file: %s' % file + l = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) + if l.shape[0]: + assert l.shape[1] == 5, '> 5 label columns: %s' % file + assert (l >= 0).all(), 'negative labels: %s' % file + assert (l[:, 1:] <= 1).all(), 'non-normalized or out of bounds coordinate labels: %s' % file + self.labels[i] = l except: - print('Warning: missing labels for %s' % self.img_files[i]) - pass # missing label file + print('Warning: missing labels for %s' % self.img_files[i]) # missing label file assert len(np.concatenate(self.labels, 0)) > 0, 'No labels found. Incorrect label paths provided.' def __len__(self): From d2589fc5f73d2260ac7d6b0da8287b9131d6f44d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 21 May 2019 15:00:16 +0200 Subject: [PATCH 0858/2595] updates --- utils/gcp.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index d32bfbf6..ddb6eeed 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -68,10 +68,10 @@ python3 train.py --data data/coco_1img.data --epochs 5 --nosave # train 5 epoch # AlexyAB Darknet gsutil cp -r gs://sm4/supermarket2 . # dataset from bucket -rm -rf darknet && git clone https://github.com/AlexeyAB/darknet && cd darknet && wget -c https://pjreddie.com/media/files/darknet53.conv.74 -./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2.cfg darknet53.conv.74 # train -./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2.cfg backup/yolov3-spp-sm2_last.weights # resume -python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/backup/yolov3-spp-sm2_3000.weights # test +rm -rf darknet && git clone https://github.com/AlexeyAB/darknet && cd darknet && wget -c https://pjreddie.com/media/files/darknet53.conv.74 # sudo apt install libopencv-dev && make +./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2-1cls.cfg darknet53.conv.74 -map -dont_show # train +./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2-1cls.cfg backup/yolov3-spp-sm2-1cls_last.weights # resume +python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/backup/yolov3-spp-sm2-1cls_3000.weights # test gsutil cp -r backup/*.weights gs://sm4/weights # weights to bucket # Debug/Development From d09db54cb0fce44b0e57269b377815517b727b5d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 21 May 2019 16:03:29 +0200 Subject: [PATCH 0859/2595] updates --- train.py | 2 +- utils/datasets.py | 4 ++-- utils/gcp.sh | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 0f939769..2b93431e 100644 --- a/train.py +++ b/train.py @@ -138,7 +138,7 @@ def train( # plt.savefig('LR.png', dpi=300) # Dataset - dataset = LoadImagesAndLabels(train_path, img_size, batch_size, augment=True, rect=False, image_weights=False) + dataset = LoadImagesAndLabels(train_path, img_size, batch_size, augment=True, rect=False, cache=True) # Initialize distributed training if torch.cuda.device_count() > 1: diff --git a/utils/datasets.py b/utils/datasets.py index 5ebbc4de..c4395ccd 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -130,7 +130,7 @@ class LoadWebcam: # for inference class LoadImagesAndLabels(Dataset): # for training/testing - def __init__(self, path, img_size=416, batch_size=16, augment=False, rect=True, image_weights=False): + def __init__(self, path, img_size=416, batch_size=16, augment=False, rect=True, image_weights=False, cache=False): with open(path, 'r') as f: img_files = f.read().splitlines() self.img_files = list(filter(lambda x: len(x) > 0, img_files)) @@ -185,7 +185,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing self.batch = bi # batch index of image # Preload images - if n < 1001: # preload all images into memory if possible + if cache & n < 1001: # preload all images into memory if possible self.imgs = [cv2.imread(self.img_files[i]) for i in tqdm(range(n), desc='Reading images')] # Preload labels (required for weighted CE training) diff --git a/utils/gcp.sh b/utils/gcp.sh index ddb6eeed..7bd6e123 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -71,6 +71,7 @@ gsutil cp -r gs://sm4/supermarket2 . # dataset from bucket rm -rf darknet && git clone https://github.com/AlexeyAB/darknet && cd darknet && wget -c https://pjreddie.com/media/files/darknet53.conv.74 # sudo apt install libopencv-dev && make ./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2-1cls.cfg darknet53.conv.74 -map -dont_show # train ./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2-1cls.cfg backup/yolov3-spp-sm2-1cls_last.weights # resume +python3 train.py --data ../supermarket2/supermarket2.data --cfg cfg/yolov3-spp-sm2-1cls.cfg # test python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/backup/yolov3-spp-sm2-1cls_3000.weights # test gsutil cp -r backup/*.weights gs://sm4/weights # weights to bucket From 520e58aa05c333bb970fdc9df2aa625142b4ff9c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 21 May 2019 16:11:08 +0200 Subject: [PATCH 0860/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index c4395ccd..b1459d4e 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -185,7 +185,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing self.batch = bi # batch index of image # Preload images - if cache & n < 1001: # preload all images into memory if possible + if cache and (n < 1001): # preload all images into memory if possible self.imgs = [cv2.imread(self.img_files[i]) for i in tqdm(range(n), desc='Reading images')] # Preload labels (required for weighted CE training) From 19c76974349a9cec082ee86c19bb47711f99ba4f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 21 May 2019 17:37:34 +0200 Subject: [PATCH 0861/2595] updates --- test.py | 2 +- train.py | 10 ++++++++-- utils/datasets.py | 29 +++++++++++++++++++++-------- utils/gcp.sh | 2 +- 4 files changed, 31 insertions(+), 12 deletions(-) diff --git a/test.py b/test.py index f279cd79..ecb34399 100644 --- a/test.py +++ b/test.py @@ -148,7 +148,7 @@ def test( # Print results pf = '%20s' + '%10.3g' * 6 # print format - print(pf % ('all', seen, nt.sum(), mp, mr, map, mf1), end='\n\n') + print(pf % ('all', seen, nt.sum(), mp, mr, map, mf1)) # Print results per class if nc > 1 and len(stats): diff --git a/train.py b/train.py index 2b93431e..efa92980 100644 --- a/train.py +++ b/train.py @@ -75,7 +75,7 @@ def train( device = torch_utils.select_device() if multi_scale: - img_size = 608 # initiate with maximum multi_scale size + img_size = round((img_size / 32) * 1.5) * 32 # initiate with maximum multi_scale size opt.num_workers = 0 # bug https://github.com/ultralytics/yolov3/issues/174 else: torch.backends.cudnn.benchmark = True # unsuitable for multiscale @@ -138,7 +138,13 @@ def train( # plt.savefig('LR.png', dpi=300) # Dataset - dataset = LoadImagesAndLabels(train_path, img_size, batch_size, augment=True, rect=False, cache=True) + dataset = LoadImagesAndLabels(train_path, + img_size, + batch_size, + augment=True, + rect=False, + cache=True, + multi_scale=multi_scale) # Initialize distributed training if torch.cuda.device_count() > 1: diff --git a/utils/datasets.py b/utils/datasets.py index b1459d4e..e66af194 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -130,14 +130,19 @@ class LoadWebcam: # for inference class LoadImagesAndLabels(Dataset): # for training/testing - def __init__(self, path, img_size=416, batch_size=16, augment=False, rect=True, image_weights=False, cache=False): + def __init__(self, path, img_size=416, batch_size=16, augment=False, rect=True, image_weights=False, cache=False, + multi_scale=False): with open(path, 'r') as f: img_files = f.read().splitlines() self.img_files = list(filter(lambda x: len(x) > 0, img_files)) n = len(self.img_files) - self.n = n + bi = np.floor(np.arange(n) / batch_size).astype(np.int) # batch index + nb = bi[-1] + 1 # number of batches assert n > 0, 'No images found in %s' % path + + self.n = n + self.batch = bi # batch index of image self.img_size = img_size self.augment = augment self.image_weights = image_weights @@ -148,11 +153,13 @@ class LoadImagesAndLabels(Dataset): # for training/testing replace('.bmp', '.txt'). replace('.png', '.txt') for x in self.img_files] + if multi_scale: + s = img_size / 32 + self.multi_scale = ((np.linspace(0.5, 1.5, nb) * s).round().astype(np.int) * 32) + # Rectangular Training https://github.com/ultralytics/yolov3/issues/232 if self.rect: from PIL import Image - bi = np.floor(np.arange(n) / batch_size).astype(np.int) # batch index - nb = bi[-1] + 1 # number of batches # Read image shapes sp = 'data' + os.sep + path.replace('.txt', '.shapes').split(os.sep)[-1] # shapefile path @@ -182,7 +189,6 @@ class LoadImagesAndLabels(Dataset): # for training/testing shapes[i] = [1, 1 / mini] self.batch_shapes = np.ceil(np.array(shapes) * img_size / 32.).astype(np.int) * 32 - self.batch = bi # batch index of image # Preload images if cache and (n < 1001): # preload all images into memory if possible @@ -207,6 +213,12 @@ class LoadImagesAndLabels(Dataset): # for training/testing def __len__(self): return len(self.img_files) + # def __iter__(self): + # self.count = -1 + # print('ran dataset iter') + # #self.shuffled_vector = np.random.permutation(self.nF) if self.augment else np.arange(self.nF) + # return self + def __getitem__(self, index): if self.image_weights: index = self.indices[index] @@ -242,10 +254,11 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Letterbox h, w, _ = img.shape if self.rect: - new_shape = self.batch_shapes[self.batch[index]] - img, ratio, padw, padh = letterbox(img, new_shape=new_shape, mode='rect') + shape = self.batch_shapes[self.batch[index]] + img, ratio, padw, padh = letterbox(img, new_shape=shape, mode='rect') else: - img, ratio, padw, padh = letterbox(img, new_shape=self.img_size, mode='square') + shape = int(self.multi_scale[self.batch[index]]) if hasattr(self, 'multi_scale') else self.img_size + img, ratio, padw, padh = letterbox(img, new_shape=shape, mode='square') # Load labels labels = [] diff --git a/utils/gcp.sh b/utils/gcp.sh index 7bd6e123..b6af54c4 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -72,7 +72,7 @@ rm -rf darknet && git clone https://github.com/AlexeyAB/darknet && cd darknet && ./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2-1cls.cfg darknet53.conv.74 -map -dont_show # train ./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2-1cls.cfg backup/yolov3-spp-sm2-1cls_last.weights # resume python3 train.py --data ../supermarket2/supermarket2.data --cfg cfg/yolov3-spp-sm2-1cls.cfg # test -python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/backup/yolov3-spp-sm2-1cls_3000.weights # test +python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/backup/yolov3-spp-sm2-1cls_5000.weights --cfg cfg/yolov3-spp-sm2-1cls.cfg # test gsutil cp -r backup/*.weights gs://sm4/weights # weights to bucket # Debug/Development From 463dc56f3101f3a61c3313a8df06701f86ab68d9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 21 May 2019 17:39:04 +0200 Subject: [PATCH 0862/2595] updates --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index efa92980..052aaf11 100644 --- a/train.py +++ b/train.py @@ -76,7 +76,7 @@ def train( if multi_scale: img_size = round((img_size / 32) * 1.5) * 32 # initiate with maximum multi_scale size - opt.num_workers = 0 # bug https://github.com/ultralytics/yolov3/issues/174 + # opt.num_workers = 0 # bug https://github.com/ultralytics/yolov3/issues/174 else: torch.backends.cudnn.benchmark = True # unsuitable for multiscale @@ -308,9 +308,9 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulate', type=int, default=1, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco_32img.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') - parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') + parser.add_argument('--img-size', type=int, default=320, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') parser.add_argument('--num-workers', type=int, default=4, help='number of Pytorch DataLoader workers') From e67cee4a0c21d89ed67fcea4681a939f23fa13f4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 23 May 2019 12:27:46 +0200 Subject: [PATCH 0863/2595] updates --- train.py | 20 ++++++++++---------- utils/gcp.sh | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/train.py b/train.py index 052aaf11..5b138f61 100644 --- a/train.py +++ b/train.py @@ -11,15 +11,15 @@ from utils.datasets import * from utils.utils import * # Hyperparameters: train.py --evolve --epochs 2 --img-size 320, Metrics: 0.204 0.302 0.175 0.234 (square smart) -hyp = {'xy': 0.167, # xy loss gain - 'wh': 0.09339, # wh loss gain - 'cls': 0.03868, # cls loss gain - 'conf': 4.546, # conf loss gain - 'iou_t': 0.2454, # iou target-anchor training threshold - 'lr0': 0.000198, # initial learning rate - 'lrf': -5., # final learning rate = lr0 * (10 ** lrf) - 'momentum': 0.95, # SGD momentum - 'weight_decay': 0.0007838} # optimizer weight decay +hyp = {'xy': 0.2, # xy loss gain + 'wh': 0.1, # wh loss gain + 'cls': 0.04, # cls loss gain + 'conf': 4.5, # conf loss gain + 'iou_t': 0.5, # iou target-anchor training threshold + 'lr0': 0.001, # initial learning rate + 'lrf': -4., # final learning rate = lr0 * (10 ** lrf) + 'momentum': 0.90, # SGD momentum + 'weight_decay': 0.0005} # optimizer weight decay # Hyperparameters: Original, Metrics: 0.172 0.304 0.156 0.205 (square) @@ -310,7 +310,7 @@ if __name__ == '__main__': parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco_32img.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') - parser.add_argument('--img-size', type=int, default=320, help='inference size (pixels)') + parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') parser.add_argument('--num-workers', type=int, default=4, help='number of Pytorch DataLoader workers') diff --git a/utils/gcp.sh b/utils/gcp.sh index b6af54c4..b9028b05 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -71,7 +71,7 @@ gsutil cp -r gs://sm4/supermarket2 . # dataset from bucket rm -rf darknet && git clone https://github.com/AlexeyAB/darknet && cd darknet && wget -c https://pjreddie.com/media/files/darknet53.conv.74 # sudo apt install libopencv-dev && make ./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2-1cls.cfg darknet53.conv.74 -map -dont_show # train ./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2-1cls.cfg backup/yolov3-spp-sm2-1cls_last.weights # resume -python3 train.py --data ../supermarket2/supermarket2.data --cfg cfg/yolov3-spp-sm2-1cls.cfg # test +python3 train.py --data ../supermarket2/supermarket2.data --cfg cfg/yolov3-spp-sm2-1cls.cfg --epochs 100 --num-workers 8 --img-size 320 --nosave # train ultralytics python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/backup/yolov3-spp-sm2-1cls_5000.weights --cfg cfg/yolov3-spp-sm2-1cls.cfg # test gsutil cp -r backup/*.weights gs://sm4/weights # weights to bucket From 3006c33c29d4bd367bb0da2dfb398ffd8b330bfb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 23 May 2019 12:32:11 +0200 Subject: [PATCH 0864/2595] updates --- train.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/train.py b/train.py index 5b138f61..0ab05932 100644 --- a/train.py +++ b/train.py @@ -167,6 +167,10 @@ def train( from apex import amp model, optimizer = amp.initialize(model, optimizer, opt_level='O1') + # Remove old results + for f in glob.glob('train_batch*.jpg') + glob.glob('test_batch*.jpg') + 'results.txt': + os.remove(f) + # Start training model.hyp = hyp # attach hyperparameters to model model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights @@ -175,8 +179,6 @@ def train( maps = np.zeros(nc) # mAP per class results = (0, 0, 0, 0, 0) # P, R, mAP, F1, test_loss n_burnin = min(round(nb / 5 + 1), 1000) # burn-in batches - for f in glob.glob('train_batch*.jpg') + glob.glob('test_batch*.jpg'): - os.remove(f) t, t0 = time.time(), time.time() for epoch in range(start_epoch, epochs): model.train() @@ -185,7 +187,7 @@ def train( # Update scheduler scheduler.step() - # Freeze backbone at epoch 0, unfreeze at epoch 1 + # Freeze backbone at epoch 0, unfreeze at epoch 1 (optional) if freeze_backbone and epoch < 2: for name, p in model.named_parameters(): if int(name.split('.')[1]) < cutoff: # if layer < 75 @@ -200,7 +202,6 @@ def train( for i, (imgs, targets, _, _) in enumerate(dataloader): imgs = imgs.to(device) targets = targets.to(device) - nt = len(targets) # Plot images with bounding boxes if epoch == 0 and i == 0: @@ -233,13 +234,11 @@ def train( optimizer.step() optimizer.zero_grad() - # Update running mean of tracked metrics - mloss = (mloss * i + loss_items) / (i + 1) - # Print batch results + mloss = (mloss * i + loss_items) / (i + 1) # update mean losses s = ('%8s%12s' + '%10.3g' * 7) % ( '%g/%g' % (epoch, epochs - 1), - '%g/%g' % (i, nb - 1), *mloss, nt, time.time() - t) + '%g/%g' % (i, nb - 1), *mloss, len(targets), time.time() - t) t = time.time() print(s) From 68b9df4dd494262a42c2432792b3cbe8b0d6a61a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 23 May 2019 12:36:13 +0200 Subject: [PATCH 0865/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 0ab05932..5a1e0cd4 100644 --- a/train.py +++ b/train.py @@ -168,7 +168,7 @@ def train( model, optimizer = amp.initialize(model, optimizer, opt_level='O1') # Remove old results - for f in glob.glob('train_batch*.jpg') + glob.glob('test_batch*.jpg') + 'results.txt': + for f in glob.glob('train_batch*.jpg') + glob.glob('test_batch*.jpg') + ['results.txt']: os.remove(f) # Start training From 001193b9c7ba4036f1b0024b7801967c75694d9b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 23 May 2019 13:15:44 +0200 Subject: [PATCH 0866/2595] updates --- train.py | 6 ++---- utils/datasets.py | 14 ++++++-------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/train.py b/train.py index 5a1e0cd4..6e8a884c 100644 --- a/train.py +++ b/train.py @@ -55,7 +55,6 @@ hyp = {'xy': 0.2, # xy loss gain # 'momentum': 0.9025, # SGD momentum # 'weight_decay': 0.0005417} # optimizer weight decay - def train( cfg, data_cfg, @@ -143,7 +142,6 @@ def train( batch_size, augment=True, rect=False, - cache=True, multi_scale=multi_scale) # Initialize distributed training @@ -168,7 +166,7 @@ def train( model, optimizer = amp.initialize(model, optimizer, opt_level='O1') # Remove old results - for f in glob.glob('train_batch*.jpg') + glob.glob('test_batch*.jpg') + ['results.txt']: + for f in glob.glob('*_batch*.jpg') + glob.glob('results.txt'): os.remove(f) # Start training @@ -307,7 +305,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulate', type=int, default=1, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco_32img.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') diff --git a/utils/datasets.py b/utils/datasets.py index e66af194..49194207 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -130,7 +130,7 @@ class LoadWebcam: # for inference class LoadImagesAndLabels(Dataset): # for training/testing - def __init__(self, path, img_size=416, batch_size=16, augment=False, rect=True, image_weights=False, cache=False, + def __init__(self, path, img_size=416, batch_size=16, augment=False, rect=True, image_weights=False, multi_scale=False): with open(path, 'r') as f: img_files = f.read().splitlines() @@ -190,11 +190,8 @@ class LoadImagesAndLabels(Dataset): # for training/testing self.batch_shapes = np.ceil(np.array(shapes) * img_size / 32.).astype(np.int) * 32 - # Preload images - if cache and (n < 1001): # preload all images into memory if possible - self.imgs = [cv2.imread(self.img_files[i]) for i in tqdm(range(n), desc='Reading images')] - # Preload labels (required for weighted CE training) + self.imgs = [None] * n self.labels = [np.zeros((0, 5))] * n iter = tqdm(self.label_files, desc='Reading labels') if n > 1000 else self.label_files for i, file in enumerate(iter): @@ -227,10 +224,11 @@ class LoadImagesAndLabels(Dataset): # for training/testing label_path = self.label_files[index] # Load image - if hasattr(self, 'imgs'): # preloaded - img = self.imgs[index] - else: + img = self.imgs[index] + if img is None: img = cv2.imread(img_path) # BGR + if self.n < 1001: + self.imgs[index] = img # cache image into memory assert img is not None, 'File Not Found ' + img_path # Augment colorspace From 8f9ab337b070b80dae3e51ff8c6948771087e119 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 23 May 2019 13:19:49 +0200 Subject: [PATCH 0867/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 49194207..991118a8 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -227,9 +227,9 @@ class LoadImagesAndLabels(Dataset): # for training/testing img = self.imgs[index] if img is None: img = cv2.imread(img_path) # BGR + assert img is not None, 'File Not Found ' + img_path if self.n < 1001: self.imgs[index] = img # cache image into memory - assert img is not None, 'File Not Found ' + img_path # Augment colorspace augment_hsv = True From 6f05c5347e6fce54745e0603882aefca48df4738 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 25 May 2019 11:57:19 +0200 Subject: [PATCH 0868/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 991118a8..c8d23395 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -204,7 +204,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing assert (l[:, 1:] <= 1).all(), 'non-normalized or out of bounds coordinate labels: %s' % file self.labels[i] = l except: - print('Warning: missing labels for %s' % self.img_files[i]) # missing label file + pass # print('Warning: missing labels for %s' % self.img_files[i]) # missing label file assert len(np.concatenate(self.labels, 0)) > 0, 'No labels found. Incorrect label paths provided.' def __len__(self): From e2e3e35e07d09fbde7480aa6db4aadcc1259434c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 25 May 2019 14:43:07 +0200 Subject: [PATCH 0869/2595] updates --- detect.py | 6 +++--- utils/gcp.sh | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/detect.py b/detect.py index b980aa5d..d3320a95 100644 --- a/detect.py +++ b/detect.py @@ -28,7 +28,7 @@ def detect( # Initialize model if ONNX_EXPORT: - s = (192, 320) # onnx model image size (height, width) + s = (320, 192) # onnx model image size (height, width) model = Darknet(cfg, s) else: model = Darknet(cfg, img_size) @@ -119,9 +119,9 @@ def detect( if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') + parser.add_argument('--cfg', type=str, default='cfg/yolov3-tiny.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') - parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') + parser.add_argument('--weights', type=str, default='weights/yolov3-tiny.weights', help='path to weights file') parser.add_argument('--images', type=str, default='data/samples', help='path to images') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.5, help='object confidence threshold') diff --git a/utils/gcp.sh b/utils/gcp.sh index b9028b05..7b5fbc9e 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -71,7 +71,7 @@ gsutil cp -r gs://sm4/supermarket2 . # dataset from bucket rm -rf darknet && git clone https://github.com/AlexeyAB/darknet && cd darknet && wget -c https://pjreddie.com/media/files/darknet53.conv.74 # sudo apt install libopencv-dev && make ./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2-1cls.cfg darknet53.conv.74 -map -dont_show # train ./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2-1cls.cfg backup/yolov3-spp-sm2-1cls_last.weights # resume -python3 train.py --data ../supermarket2/supermarket2.data --cfg cfg/yolov3-spp-sm2-1cls.cfg --epochs 100 --num-workers 8 --img-size 320 --nosave # train ultralytics +python3 train.py --data ../supermarket2/supermarket2.data --cfg cfg/yolov3-spp-sm2-1cls.cfg --epochs 100 --num-workers 8 --img-size 320 --evolve # train ultralytics python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/backup/yolov3-spp-sm2-1cls_5000.weights --cfg cfg/yolov3-spp-sm2-1cls.cfg # test gsutil cp -r backup/*.weights gs://sm4/weights # weights to bucket From f131a1d52e562e36a2abb8996722b92af7918ac7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 25 May 2019 14:51:01 +0200 Subject: [PATCH 0870/2595] updates --- detect.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index d3320a95..6de158c6 100644 --- a/detect.py +++ b/detect.py @@ -119,9 +119,9 @@ def detect( if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument('--cfg', type=str, default='cfg/yolov3-tiny.cfg', help='cfg file path') + parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') - parser.add_argument('--weights', type=str, default='weights/yolov3-tiny.weights', help='path to weights file') + parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--images', type=str, default='data/samples', help='path to images') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.5, help='object confidence threshold') From e819968ee309fe70e2ed564c498d31b69f3a6570 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 28 May 2019 16:14:37 +0200 Subject: [PATCH 0871/2595] updates --- README.md | 5 +++++ utils/gcp.sh | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 818777c1..da1e68fd 100755 --- a/README.md +++ b/README.md @@ -41,6 +41,11 @@ Python 3.7 or later with the following `pip3 install -U -r requirements.txt` pac * [Train Single Class](https://github.com/ultralytics/yolov3/wiki/Example:-Train-Single-Class) * [Train Custom Data](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) +# Jupyter Notebook + +A jupyter notebook with training, detection and testing examples is here: +https://colab.research.google.com/drive/1G8T-VFxQkjDe4idzN8F-hbIBqkkkQnxw + # Training **Start Training:** `python3 train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. diff --git a/utils/gcp.sh b/utils/gcp.sh index 7b5fbc9e..16181a41 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -69,11 +69,12 @@ python3 train.py --data data/coco_1img.data --epochs 5 --nosave # train 5 epoch # AlexyAB Darknet gsutil cp -r gs://sm4/supermarket2 . # dataset from bucket rm -rf darknet && git clone https://github.com/AlexeyAB/darknet && cd darknet && wget -c https://pjreddie.com/media/files/darknet53.conv.74 # sudo apt install libopencv-dev && make -./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2-1cls.cfg darknet53.conv.74 -map -dont_show # train +./darknet detector train ../supermarket2/supermarket2.data ../yolov3-spp-sm2-1cls.cfg darknet53.conv.74 -map -dont_show # train spp +./darknet detector train ../supermarket2/supermarket2.data ../yolov3-tiny-sm2-1cls.cfg yolov3-tiny.conv.15 -map -dont_show # train tiny ./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2-1cls.cfg backup/yolov3-spp-sm2-1cls_last.weights # resume python3 train.py --data ../supermarket2/supermarket2.data --cfg cfg/yolov3-spp-sm2-1cls.cfg --epochs 100 --num-workers 8 --img-size 320 --evolve # train ultralytics python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/backup/yolov3-spp-sm2-1cls_5000.weights --cfg cfg/yolov3-spp-sm2-1cls.cfg # test -gsutil cp -r backup/*.weights gs://sm4/weights # weights to bucket +gsutil cp -r backup/*.weights gs://sm6/weights # weights to bucket # Debug/Development python3 train.py --evolve --data data/coco_1k5k.data --epochs 30 --img-size 320 From 9cf5ab0c9d41231148e8f6df23a4797ffa8e6d1a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 28 May 2019 16:15:53 +0200 Subject: [PATCH 0872/2595] updates --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index da1e68fd..03b568b1 100755 --- a/README.md +++ b/README.md @@ -43,9 +43,10 @@ Python 3.7 or later with the following `pip3 install -U -r requirements.txt` pac # Jupyter Notebook -A jupyter notebook with training, detection and testing examples is here: +A jupyter notebook with training, detection and testing examples is available at: https://colab.research.google.com/drive/1G8T-VFxQkjDe4idzN8F-hbIBqkkkQnxw + # Training **Start Training:** `python3 train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. From 126f70bbe951b8813933c44cad3b2a274d4ac164 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 29 May 2019 02:02:41 +0200 Subject: [PATCH 0873/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 03b568b1..668eaba7 100755 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ The https://github.com/ultralytics/yolov3 repo contains inference and training c Python 3.7 or later with the following `pip3 install -U -r requirements.txt` packages: - `numpy` -- `torch >= 1.0.0` +- `torch >= 1.1.0` - `opencv-python` - `tqdm` From b4610520eae404a7f58632f37f6e164d5ac6abc0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 29 May 2019 02:02:55 +0200 Subject: [PATCH 0874/2595] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 668eaba7..dee86399 100755 --- a/README.md +++ b/README.md @@ -46,7 +46,6 @@ Python 3.7 or later with the following `pip3 install -U -r requirements.txt` pac A jupyter notebook with training, detection and testing examples is available at: https://colab.research.google.com/drive/1G8T-VFxQkjDe4idzN8F-hbIBqkkkQnxw - # Training **Start Training:** `python3 train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. From 0847334241f19e5acb6bf1f48f1b409c057266a0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 29 May 2019 18:04:11 +0200 Subject: [PATCH 0875/2595] updates --- utils/utils.py | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/utils/utils.py b/utils/utils.py index 4f787fc5..08b93792 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -7,6 +7,8 @@ import matplotlib.pyplot as plt import numpy as np import torch import torch.nn as nn +from PIL import Image +from tqdm import tqdm from . import torch_utils @@ -490,6 +492,49 @@ def coco_only_people(path='../coco/labels/val2014/'): print(labels.shape[0], file) +def kmeans_targets(path='./data/coco_64img.txt'): # from utils.utils import *; kmeans_targets() + with open(path, 'r') as f: + img_files = f.read().splitlines() + img_files = list(filter(lambda x: len(x) > 0, img_files)) + + # Read shapes + n = len(img_files) + assert n > 0, 'No images found in %s' % path + label_files = [x.replace('images', 'labels'). + replace('.jpeg', '.txt'). + replace('.jpg', '.txt'). + replace('.bmp', '.txt'). + replace('.png', '.txt') for x in img_files] + s = np.array([Image.open(f).size for f in tqdm(img_files, desc='Reading image shapes')]) # (width, height) + + # Read targets + labels = [np.zeros((0, 5))] * n + iter = tqdm(label_files, desc='Reading labels') + for i, file in enumerate(iter): + try: + with open(file, 'r') as f: + l = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) + if l.shape[0]: + assert l.shape[1] == 5, '> 5 label columns: %s' % file + assert (l >= 0).all(), 'negative labels: %s' % file + assert (l[:, 1:] <= 1).all(), 'non-normalized or out of bounds coordinate labels: %s' % file + l[:, [1, 3]] *= s[i][0] + l[:, [2, 4]] *= s[i][1] + l[:, 1:] *= 320 / max(s[i]) + labels[i] = l + except: + pass # print('Warning: missing labels for %s' % self.img_files[i]) # missing label file + assert len(np.concatenate(labels, 0)) > 0, 'No labels found. Incorrect label paths provided.' + + # kmeans + from scipy import cluster + wh = np.concatenate(labels, 0)[:, 3:5] + k = cluster.vq.kmeans(wh, 9)[0] + k = k[np.argsort(k.prod(1))] + for x in k.ravel(): + print('%.1f, ' % x, end='') + + # Plotting functions --------------------------------------------------------------------------------------------------- def plot_one_box(x, img, color=None, label=None, line_thickness=None): From f7a517d72c5351a905dd08510473fcc9b30d4e08 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 30 May 2019 01:40:35 +0200 Subject: [PATCH 0876/2595] updates --- models.py | 6 +++--- utils/gcp.sh | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/models.py b/models.py index ee0559be..61f7c79d 100755 --- a/models.py +++ b/models.py @@ -146,7 +146,7 @@ class YOLOLayer(nn.Module): xy = torch.sigmoid(p[..., 0:2]) + grid_xy # x, y wh = torch.exp(p[..., 2:4]) * anchor_wh # width, height p_conf = torch.sigmoid(p[..., 4:5]) # Conf - p_cls = p[..., 5:85] + p_cls = p[..., 5:5 + self.nc] # Broadcasting only supported on first dimension in CoreML. See onnx-coreml/_operators.py # p_cls = F.softmax(p_cls, 2) * p_conf # SSD-like conf p_cls = torch.exp(p_cls).permute((2, 1, 0)) @@ -212,8 +212,8 @@ class Darknet(nn.Module): return output elif ONNX_EXPORT: output = torch.cat(output, 1) # cat 3 layers 85 x (507, 2028, 8112) to 85 x 10647 - print(output.shape) - return output[5:85].t(), output[:4].t() # ONNX scores, boxes + nc = self.module_list[self.yolo_layers[0]][0].nc # number of classes + return output[5:5 + nc].t(), output[:4].t() # ONNX scores, boxes else: io, p = list(zip(*output)) # inference output, training output return torch.cat(io, 1), p diff --git a/utils/gcp.sh b/utils/gcp.sh index 16181a41..bbd2a112 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -69,7 +69,10 @@ python3 train.py --data data/coco_1img.data --epochs 5 --nosave # train 5 epoch # AlexyAB Darknet gsutil cp -r gs://sm4/supermarket2 . # dataset from bucket rm -rf darknet && git clone https://github.com/AlexeyAB/darknet && cd darknet && wget -c https://pjreddie.com/media/files/darknet53.conv.74 # sudo apt install libopencv-dev && make -./darknet detector train ../supermarket2/supermarket2.data ../yolov3-spp-sm2-1cls.cfg darknet53.conv.74 -map -dont_show # train spp +./darknet detector calc_anchors data/coco_img64.data -num_of_clusters 9 -width 320 -height 320 # kmeans anchor calculation +./darknet detector train ../supermarket2/supermarket2.data ../yolov3-spp-sm2-1cls-kmeans.cfg darknet53.conv.74 -map -dont_show # train spp +./darknet detector train ../yolov3/data/coco.data ../yolov3-spp.cfg darknet53.conv.74 -map -dont_show # train spp coco + ./darknet detector train ../supermarket2/supermarket2.data ../yolov3-tiny-sm2-1cls.cfg yolov3-tiny.conv.15 -map -dont_show # train tiny ./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2-1cls.cfg backup/yolov3-spp-sm2-1cls_last.weights # resume python3 train.py --data ../supermarket2/supermarket2.data --cfg cfg/yolov3-spp-sm2-1cls.cfg --epochs 100 --num-workers 8 --img-size 320 --evolve # train ultralytics From 504d3b3f71797db636892e3b1c584f3c74b29229 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 30 May 2019 19:02:55 +0200 Subject: [PATCH 0877/2595] updates --- data/coco_100img.data | 6 --- data/coco_100img.txt | 100 ------------------------------------------ data/coco_10img.data | 6 --- data/coco_10img.txt | 10 ----- train.py | 16 ++++--- 5 files changed, 9 insertions(+), 129 deletions(-) delete mode 100644 data/coco_100img.data delete mode 100644 data/coco_100img.txt delete mode 100644 data/coco_10img.data delete mode 100644 data/coco_10img.txt diff --git a/data/coco_100img.data b/data/coco_100img.data deleted file mode 100644 index 716cf7c9..00000000 --- a/data/coco_100img.data +++ /dev/null @@ -1,6 +0,0 @@ -classes=80 -train=./data/coco_100img.txt -valid=./data/coco_100img.txt -names=data/coco.names -backup=backup/ -eval=coco diff --git a/data/coco_100img.txt b/data/coco_100img.txt deleted file mode 100644 index a39dc939..00000000 --- a/data/coco_100img.txt +++ /dev/null @@ -1,100 +0,0 @@ -../coco/images/train2014/COCO_train2014_000000000009.jpg -../coco/images/train2014/COCO_train2014_000000000025.jpg -../coco/images/train2014/COCO_train2014_000000000030.jpg -../coco/images/train2014/COCO_train2014_000000000034.jpg -../coco/images/train2014/COCO_train2014_000000000036.jpg -../coco/images/train2014/COCO_train2014_000000000049.jpg -../coco/images/train2014/COCO_train2014_000000000061.jpg -../coco/images/train2014/COCO_train2014_000000000064.jpg -../coco/images/train2014/COCO_train2014_000000000071.jpg -../coco/images/train2014/COCO_train2014_000000000072.jpg -../coco/images/train2014/COCO_train2014_000000000077.jpg -../coco/images/train2014/COCO_train2014_000000000078.jpg -../coco/images/train2014/COCO_train2014_000000000081.jpg -../coco/images/train2014/COCO_train2014_000000000086.jpg -../coco/images/train2014/COCO_train2014_000000000089.jpg -../coco/images/train2014/COCO_train2014_000000000092.jpg -../coco/images/train2014/COCO_train2014_000000000094.jpg -../coco/images/train2014/COCO_train2014_000000000109.jpg -../coco/images/train2014/COCO_train2014_000000000110.jpg -../coco/images/train2014/COCO_train2014_000000000113.jpg -../coco/images/train2014/COCO_train2014_000000000127.jpg -../coco/images/train2014/COCO_train2014_000000000138.jpg -../coco/images/train2014/COCO_train2014_000000000142.jpg -../coco/images/train2014/COCO_train2014_000000000144.jpg -../coco/images/train2014/COCO_train2014_000000000149.jpg -../coco/images/train2014/COCO_train2014_000000000151.jpg -../coco/images/train2014/COCO_train2014_000000000154.jpg -../coco/images/train2014/COCO_train2014_000000000165.jpg -../coco/images/train2014/COCO_train2014_000000000194.jpg -../coco/images/train2014/COCO_train2014_000000000201.jpg -../coco/images/train2014/COCO_train2014_000000000247.jpg -../coco/images/train2014/COCO_train2014_000000000260.jpg -../coco/images/train2014/COCO_train2014_000000000263.jpg -../coco/images/train2014/COCO_train2014_000000000307.jpg -../coco/images/train2014/COCO_train2014_000000000308.jpg -../coco/images/train2014/COCO_train2014_000000000309.jpg -../coco/images/train2014/COCO_train2014_000000000312.jpg -../coco/images/train2014/COCO_train2014_000000000315.jpg -../coco/images/train2014/COCO_train2014_000000000321.jpg -../coco/images/train2014/COCO_train2014_000000000322.jpg -../coco/images/train2014/COCO_train2014_000000000326.jpg -../coco/images/train2014/COCO_train2014_000000000332.jpg -../coco/images/train2014/COCO_train2014_000000000349.jpg -../coco/images/train2014/COCO_train2014_000000000368.jpg -../coco/images/train2014/COCO_train2014_000000000370.jpg -../coco/images/train2014/COCO_train2014_000000000382.jpg -../coco/images/train2014/COCO_train2014_000000000384.jpg -../coco/images/train2014/COCO_train2014_000000000389.jpg -../coco/images/train2014/COCO_train2014_000000000394.jpg -../coco/images/train2014/COCO_train2014_000000000404.jpg -../coco/images/train2014/COCO_train2014_000000000419.jpg -../coco/images/train2014/COCO_train2014_000000000431.jpg -../coco/images/train2014/COCO_train2014_000000000436.jpg -../coco/images/train2014/COCO_train2014_000000000438.jpg -../coco/images/train2014/COCO_train2014_000000000443.jpg -../coco/images/train2014/COCO_train2014_000000000446.jpg -../coco/images/train2014/COCO_train2014_000000000450.jpg -../coco/images/train2014/COCO_train2014_000000000471.jpg -../coco/images/train2014/COCO_train2014_000000000490.jpg -../coco/images/train2014/COCO_train2014_000000000491.jpg -../coco/images/train2014/COCO_train2014_000000000510.jpg -../coco/images/train2014/COCO_train2014_000000000514.jpg -../coco/images/train2014/COCO_train2014_000000000529.jpg -../coco/images/train2014/COCO_train2014_000000000531.jpg -../coco/images/train2014/COCO_train2014_000000000532.jpg -../coco/images/train2014/COCO_train2014_000000000540.jpg -../coco/images/train2014/COCO_train2014_000000000542.jpg -../coco/images/train2014/COCO_train2014_000000000560.jpg -../coco/images/train2014/COCO_train2014_000000000562.jpg -../coco/images/train2014/COCO_train2014_000000000572.jpg -../coco/images/train2014/COCO_train2014_000000000575.jpg -../coco/images/train2014/COCO_train2014_000000000581.jpg -../coco/images/train2014/COCO_train2014_000000000584.jpg -../coco/images/train2014/COCO_train2014_000000000595.jpg -../coco/images/train2014/COCO_train2014_000000000597.jpg -../coco/images/train2014/COCO_train2014_000000000605.jpg -../coco/images/train2014/COCO_train2014_000000000612.jpg -../coco/images/train2014/COCO_train2014_000000000620.jpg -../coco/images/train2014/COCO_train2014_000000000625.jpg -../coco/images/train2014/COCO_train2014_000000000629.jpg -../coco/images/train2014/COCO_train2014_000000000634.jpg -../coco/images/train2014/COCO_train2014_000000000643.jpg -../coco/images/train2014/COCO_train2014_000000000650.jpg -../coco/images/train2014/COCO_train2014_000000000656.jpg -../coco/images/train2014/COCO_train2014_000000000659.jpg -../coco/images/train2014/COCO_train2014_000000000670.jpg -../coco/images/train2014/COCO_train2014_000000000671.jpg -../coco/images/train2014/COCO_train2014_000000000673.jpg -../coco/images/train2014/COCO_train2014_000000000681.jpg -../coco/images/train2014/COCO_train2014_000000000684.jpg -../coco/images/train2014/COCO_train2014_000000000690.jpg -../coco/images/train2014/COCO_train2014_000000000706.jpg -../coco/images/train2014/COCO_train2014_000000000714.jpg -../coco/images/train2014/COCO_train2014_000000000716.jpg -../coco/images/train2014/COCO_train2014_000000000722.jpg -../coco/images/train2014/COCO_train2014_000000000723.jpg -../coco/images/train2014/COCO_train2014_000000000731.jpg -../coco/images/train2014/COCO_train2014_000000000735.jpg -../coco/images/train2014/COCO_train2014_000000000753.jpg -../coco/images/train2014/COCO_train2014_000000000754.jpg diff --git a/data/coco_10img.data b/data/coco_10img.data deleted file mode 100644 index ea37a698..00000000 --- a/data/coco_10img.data +++ /dev/null @@ -1,6 +0,0 @@ -classes=80 -train=./data/coco_10img.txt -valid=./data/coco_10img.txt -names=data/coco.names -backup=backup/ -eval=coco diff --git a/data/coco_10img.txt b/data/coco_10img.txt deleted file mode 100644 index 5378cc27..00000000 --- a/data/coco_10img.txt +++ /dev/null @@ -1,10 +0,0 @@ -../coco/images/train2014/COCO_train2014_000000000009.jpg -../coco/images/train2014/COCO_train2014_000000000025.jpg -../coco/images/train2014/COCO_train2014_000000000030.jpg -../coco/images/train2014/COCO_train2014_000000000034.jpg -../coco/images/train2014/COCO_train2014_000000000036.jpg -../coco/images/train2014/COCO_train2014_000000000049.jpg -../coco/images/train2014/COCO_train2014_000000000061.jpg -../coco/images/train2014/COCO_train2014_000000000064.jpg -../coco/images/train2014/COCO_train2014_000000000071.jpg -../coco/images/train2014/COCO_train2014_000000000072.jpg diff --git a/train.py b/train.py index 6e8a884c..c4f0181b 100644 --- a/train.py +++ b/train.py @@ -3,6 +3,7 @@ import time import torch.distributed as dist import torch.optim as optim +import torch.optim.lr_scheduler as lr_scheduler from torch.utils.data import DataLoader import test # Import test.py to get mAP after each epoch @@ -60,9 +61,9 @@ def train( data_cfg, img_size=416, resume=False, - epochs=273, # 500200 batches at bs 64, dataset length 117263 + epochs=68, # 500200 batches at bs 4, dataset length 117263 batch_size=16, - accumulate=1, + accumulate=4, # effective bs = 64 = batch_size * accumulate multi_scale=False, freeze_backbone=False, transfer=False # Transfer learning (train only YOLO layers) @@ -121,9 +122,10 @@ def train( # Scheduler https://github.com/ultralytics/yolov3/issues/238 # lf = lambda x: 1 - x / epochs # linear ramp to zero # lf = lambda x: 10 ** (hyp['lrf'] * x / epochs) # exp ramp - lf = lambda x: 1 - 10 ** (hyp['lrf'] * (1 - x / epochs)) # inverse exp ramp - scheduler = optim.lr_scheduler.LambdaLR(optimizer, lr_lambda=lf, last_epoch=start_epoch - 1) - # scheduler = optim.lr_scheduler.MultiStepLR(optimizer, milestones=[218, 245], gamma=0.1, last_epoch=start_epoch-1) + # lf = lambda x: 1 - 10 ** (hyp['lrf'] * (1 - x / epochs)) # inverse exp ramp + # scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf) + scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=[round(opt.epochs * x) for x in (0.8, 0.9)], gamma=0.1) + scheduler.last_epoch = start_epoch - 1 # # Plot lr schedule # y = [] @@ -303,9 +305,9 @@ if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--epochs', type=int, default=273, help='number of epochs') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') - parser.add_argument('--accumulate', type=int, default=1, help='accumulate gradient x batches before optimizing') + parser.add_argument('--accumulate', type=int, default=4, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco_64img.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') From 70ba7f0805da0ef9dc72721f1b69d4a8b0a957fb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 30 May 2019 19:08:43 +0200 Subject: [PATCH 0878/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index c4f0181b..5aaa48b1 100644 --- a/train.py +++ b/train.py @@ -303,7 +303,7 @@ def print_mutation(hyp, results): if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument('--epochs', type=int, default=273, help='number of epochs') + parser.add_argument('--epochs', type=int, default=68, help='number of epochs') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--accumulate', type=int, default=4, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') From ea11af6132fb551c053bf49fb355f205519a3fde Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 30 May 2019 20:21:25 +0200 Subject: [PATCH 0879/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 5aaa48b1..e01f4c00 100644 --- a/train.py +++ b/train.py @@ -287,7 +287,7 @@ def train( del chkpt dt = (time.time() - t0) / 3600 - print('%g epochs completed in %.3f hours.' % (epoch - start_epoch, dt)) + print('%g epochs completed in %.3f hours.' % (epoch - start_epoch + 1, dt)) return results From a2c9cb9d2c38ad36ee71e6cefcca008b24a3f285 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 31 May 2019 01:33:17 +0200 Subject: [PATCH 0880/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index e01f4c00..4b9d828a 100644 --- a/train.py +++ b/train.py @@ -348,7 +348,7 @@ if __name__ == '__main__': # Write mutation results print_mutation(hyp, results) - gen = 50 # generations to evolve + gen = 1000 # generations to evolve for _ in range(gen): # Mutate hyperparameters From a1d5f62334986ea8dedc97c82c755e44b8cdf651 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 31 May 2019 13:53:09 +0200 Subject: [PATCH 0881/2595] updates --- utils/utils.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/utils/utils.py b/utils/utils.py index 08b93792..1a340f2b 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -492,6 +492,13 @@ def coco_only_people(path='../coco/labels/val2014/'): print(labels.shape[0], file) +def select_best_evolve(path='../../Downloads/evolve*.txt'): # from utils.utils import *; select_best_evolve() + # Find best evolved mutation + for file in sorted(glob.glob(path)): + x = np.loadtxt(file, dtype=np.float32) + print(file, x[x[:, 2].argmax()]) + + def kmeans_targets(path='./data/coco_64img.txt'): # from utils.utils import *; kmeans_targets() with open(path, 'r') as f: img_files = f.read().splitlines() From 7807337c5f6cc16a1478f65cdbb2185a73ff2baa Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 31 May 2019 14:30:27 +0200 Subject: [PATCH 0882/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 4b9d828a..77a5d434 100644 --- a/train.py +++ b/train.py @@ -61,7 +61,7 @@ def train( data_cfg, img_size=416, resume=False, - epochs=68, # 500200 batches at bs 4, dataset length 117263 + epochs=100, # 500200 batches at bs 4, 117263 images = 68 epochs batch_size=16, accumulate=4, # effective bs = 64 = batch_size * accumulate multi_scale=False, From c46e156ff8fa97577cecf0c49e68de17640ff19b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Jun 2019 18:29:14 +0200 Subject: [PATCH 0883/2595] updates --- test.py | 4 ++++ utils/utils.py | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/test.py b/test.py index ecb34399..eb902c5f 100644 --- a/test.py +++ b/test.py @@ -89,6 +89,10 @@ def test( stats.append(([], torch.Tensor(), torch.Tensor(), tcls)) continue + # Append to text file + # with open('test.txt', 'a') as file: + # [file.write('%11.5g' * 7 % tuple(x) + '\n') for x in pred] + # Append to pycocotools JSON dictionary if save_json: # [{"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], "score": 0.236}, ... diff --git a/utils/utils.py b/utils/utils.py index 1a340f2b..6a4e90e0 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -599,6 +599,25 @@ def plot_images(imgs, targets, fname='images.jpg'): plt.close() +def plot_test_txt(): # from test import *; plot_test() + # Plot test.txt histograms + x = np.loadtxt('test.txt', dtype=np.float32) + box = xyxy2xywh(x[:, :4]) + cx, cy = box[:, 0], box[:, 1] + + fig, ax = plt.subplots(1, 1, figsize=(6, 6)) + ax.hist2d(cx, cy, bins=600, cmax=10, cmin=0) + ax.set_aspect('equal') + fig.tight_layout() + plt.savefig('hist2d.jpg', dpi=300) + + fig, ax = plt.subplots(1, 2, figsize=(12, 6)) + ax[0].hist(cx, bins=600) + ax[1].hist(cy, bins=600) + fig.tight_layout() + plt.savefig('hist1d.jpg', dpi=300) + + def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() # Plot training results files 'results*.txt' # import os; os.system('wget https://storage.googleapis.com/ultralytics/yolov3/results_v3.txt') From d7a28bd9f74d922216e06de3dde5f981b3002bd4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 5 Jun 2019 13:49:56 +0200 Subject: [PATCH 0884/2595] updates --- models.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/models.py b/models.py index 61f7c79d..c7bb0b80 100755 --- a/models.py +++ b/models.py @@ -181,9 +181,9 @@ class Darknet(nn.Module): self.hyperparams, self.module_list = create_modules(self.module_defs) self.yolo_layers = get_yolo_layers(self) - # Needed to write header when saving weights - self.header_info = np.zeros(5, dtype=np.int32) # First five are header values - self.seen = self.header_info[3] # number of images seen during training + # Darknet Header https://github.com/AlexeyAB/darknet/issues/2914#issuecomment-496675346 + self.version = np.array([0, 2, 5], dtype=np.int32) # (int32) version info: major, minor, revision + self.seen = np.array([0], dtype=np.int64) # (int64) number of images seen during training def forward(self, x, var=None): img_size = max(x.shape[-2:]) @@ -274,14 +274,12 @@ def load_darknet_weights(self, weights, cutoff=-1): elif weights_file == 'yolov3-tiny.conv.15': cutoff = 15 - # Open the weights file + # Read weights file with open(weights, 'rb') as f: - header = np.fromfile(f, dtype=np.int32, count=5) # First five are header values + # Read Header https://github.com/AlexeyAB/darknet/issues/2914#issuecomment-496675346 + self.version = np.fromfile(f, dtype=np.int32, count=3) # (int32) version info: major, minor, revision + self.seen = np.fromfile(f, dtype=np.int64, count=1) # (int64) number of images seen during training - # Needed to write header when saving weights - self.header_info = header - - self.seen = header[3] # number of images seen during training weights = np.fromfile(f, dtype=np.float32) # The rest are weights ptr = 0 @@ -327,8 +325,9 @@ def save_weights(self, path='model.weights', cutoff=-1): # Converts a PyTorch model to Darket format (*.pt to *.weights) # Note: Does not work if model.fuse() is applied with open(path, 'wb') as f: - self.header_info[3] = self.seen # number of images seen during training - self.header_info.tofile(f) + # Write Header https://github.com/AlexeyAB/darknet/issues/2914#issuecomment-496675346 + self.version.tofile(f) # (int32) version info: major, minor, revision + self.seen.tofile(f) # (int64) number of images seen during training # Iterate through layers for i, (module_def, module) in enumerate(zip(self.module_defs[:cutoff], self.module_list[:cutoff])): From a2d392b5c35f8af564975c4a68823f855e3b9425 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 11:25:56 +0200 Subject: [PATCH 0885/2595] updates --- train.py | 8 ++++---- utils/utils.py | 1 - 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index 77a5d434..c0880862 100644 --- a/train.py +++ b/train.py @@ -193,10 +193,10 @@ def train( if int(name.split('.')[1]) < cutoff: # if layer < 75 p.requires_grad = False if epoch == 0 else True - # Update image weights (optional) - w = model.class_weights.cpu().numpy() * (1 - maps) # class weights - image_weights = labels_to_image_weights(dataset.labels, nc=nc, class_weights=w) - dataset.indices = random.choices(range(dataset.n), weights=image_weights, k=dataset.n) # random weighted index + # # Update image weights (optional) + # w = model.class_weights.cpu().numpy() * (1 - maps) # class weights + # image_weights = labels_to_image_weights(dataset.labels, nc=nc, class_weights=w) + # dataset.indices = random.choices(range(dataset.n), weights=image_weights, k=dataset.n) # random weighted index mloss = torch.zeros(5).to(device) # mean losses for i, (imgs, targets, _, _) in enumerate(dataloader): diff --git a/utils/utils.py b/utils/utils.py index 6a4e90e0..83f7fdf9 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -543,7 +543,6 @@ def kmeans_targets(path='./data/coco_64img.txt'): # from utils.utils import *; # Plotting functions --------------------------------------------------------------------------------------------------- - def plot_one_box(x, img, color=None, label=None, line_thickness=None): # Plots one bounding box on image img tl = line_thickness or round(0.002 * max(img.shape[0:2])) + 1 # line thickness From 37a07a44a1d412444f8c082b6a3a8cee6836e79a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 11:29:36 +0200 Subject: [PATCH 0886/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index c0880862..f12ba49f 100644 --- a/train.py +++ b/train.py @@ -156,7 +156,7 @@ def train( dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=opt.num_workers, - shuffle=False, # disable rectangular training if True + shuffle=True, # disable rectangular training if True pin_memory=True, collate_fn=dataset.collate_fn) From 01e11aee04f33e96f9b271e809ceddcaa542933f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 11:30:37 +0200 Subject: [PATCH 0887/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index f12ba49f..71438d1b 100644 --- a/train.py +++ b/train.py @@ -76,7 +76,7 @@ def train( if multi_scale: img_size = round((img_size / 32) * 1.5) * 32 # initiate with maximum multi_scale size - # opt.num_workers = 0 # bug https://github.com/ultralytics/yolov3/issues/174 + opt.num_workers = 0 # bug https://github.com/ultralytics/yolov3/issues/174 else: torch.backends.cudnn.benchmark = True # unsuitable for multiscale From 051b251d41c72b6bb3199ec26bd5fe37d0242f71 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 11:35:53 +0200 Subject: [PATCH 0888/2595] updates --- train.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index 71438d1b..d7674bdb 100644 --- a/train.py +++ b/train.py @@ -244,7 +244,9 @@ def train( # Multi-Scale training (320 - 608 pixels) every 10 batches if multi_scale and (i + 1) % 10 == 0: - dataset.img_size = random.choice(range(10, 20)) * 32 + min_size = round(img_size / 32 / 1.5) + max_size = round(img_size / 32 * 1.5) + dataset.img_size = random.choice(range(min_size, max_size + 1)) * 32 print('multi_scale img_size = %g' % dataset.img_size) # Calculate mAP (always test final epoch, skip first 5 if opt.nosave) From d5e2daf79d30f1a0aed3af95d61d22fb274f2a16 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 11:36:32 +0200 Subject: [PATCH 0889/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index d7674bdb..5ba11c57 100644 --- a/train.py +++ b/train.py @@ -242,7 +242,7 @@ def train( t = time.time() print(s) - # Multi-Scale training (320 - 608 pixels) every 10 batches + # Multi-Scale training (67% - 150%) every 10 batches if multi_scale and (i + 1) % 10 == 0: min_size = round(img_size / 32 / 1.5) max_size = round(img_size / 32 * 1.5) From b0b6554eee0477c82158b3ec2572b375b8fdce58 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 11:37:25 +0200 Subject: [PATCH 0890/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 5ba11c57..dddd2980 100644 --- a/train.py +++ b/train.py @@ -253,7 +253,7 @@ def train( if not (opt.notest or (opt.nosave and epoch < 10)) or epoch == epochs - 1: with torch.no_grad(): results, maps = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size, model=model, - conf_thres=0.1) + conf_thres=0.001) # Write epoch results with open('results.txt', 'a') as file: From dd7ca339f581b030470d81d4ec04f51127600e52 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 11:40:17 +0200 Subject: [PATCH 0891/2595] updates --- train.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index dddd2980..ed93b77b 100644 --- a/train.py +++ b/train.py @@ -76,7 +76,7 @@ def train( if multi_scale: img_size = round((img_size / 32) * 1.5) * 32 # initiate with maximum multi_scale size - opt.num_workers = 0 # bug https://github.com/ultralytics/yolov3/issues/174 + # opt.num_workers = 0 # bug https://github.com/ultralytics/yolov3/issues/174 else: torch.backends.cudnn.benchmark = True # unsuitable for multiscale @@ -247,6 +247,14 @@ def train( min_size = round(img_size / 32 / 1.5) max_size = round(img_size / 32 * 1.5) dataset.img_size = random.choice(range(min_size, max_size + 1)) * 32 + + dataloader = DataLoader(dataset, + batch_size=batch_size, + num_workers=opt.num_workers, + shuffle=True, # disable rectangular training if True + pin_memory=True, + collate_fn=dataset.collate_fn) + print('multi_scale img_size = %g' % dataset.img_size) # Calculate mAP (always test final epoch, skip first 5 if opt.nosave) @@ -310,7 +318,7 @@ if __name__ == '__main__': parser.add_argument('--accumulate', type=int, default=4, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco_64img.data', help='coco.data file path') - parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') + parser.add_argument('--nomultiscale', action='store_false', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') From fe9cba308d3da24e4eeac7464aa54d9bac35a245 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 11:41:00 +0200 Subject: [PATCH 0892/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index ed93b77b..db553c44 100644 --- a/train.py +++ b/train.py @@ -318,7 +318,7 @@ if __name__ == '__main__': parser.add_argument('--accumulate', type=int, default=4, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco_64img.data', help='coco.data file path') - parser.add_argument('--nomultiscale', action='store_false', help='random image sizes per batch 320 - 608') + parser.add_argument('--multi-scale', action='store_false', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') From 9c328b1b0e138a70535970951563e1df6b28ff81 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 11:41:44 +0200 Subject: [PATCH 0893/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index db553c44..50d29b5f 100644 --- a/train.py +++ b/train.py @@ -318,7 +318,7 @@ if __name__ == '__main__': parser.add_argument('--accumulate', type=int, default=4, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco_64img.data', help='coco.data file path') - parser.add_argument('--multi-scale', action='store_false', help='random image sizes per batch 320 - 608') + parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') From 5edb0ec40d596e6b3b0d6fd2fd7663ce7781a17f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 11:50:24 +0200 Subject: [PATCH 0894/2595] updates --- train.py | 12 +++++------- utils/datasets.py | 1 + 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/train.py b/train.py index 50d29b5f..9b219254 100644 --- a/train.py +++ b/train.py @@ -64,7 +64,7 @@ def train( epochs=100, # 500200 batches at bs 4, 117263 images = 68 epochs batch_size=16, accumulate=4, # effective bs = 64 = batch_size * accumulate - multi_scale=False, + multi_scale=True, freeze_backbone=False, transfer=False # Transfer learning (train only YOLO layers) ): @@ -73,12 +73,13 @@ def train( latest = weights + 'latest.pt' best = weights + 'best.pt' device = torch_utils.select_device() + torch.backends.cudnn.benchmark = True # unsuitable for multiscale if multi_scale: - img_size = round((img_size / 32) * 1.5) * 32 # initiate with maximum multi_scale size + min_size = round(img_size / 32 / 1.5) + max_size = round(img_size / 32 * 1.5) + img_size = max_size * 32 # initiate with maximum multi_scale size # opt.num_workers = 0 # bug https://github.com/ultralytics/yolov3/issues/174 - else: - torch.backends.cudnn.benchmark = True # unsuitable for multiscale # Configure run data_dict = parse_data_cfg(data_cfg) @@ -244,10 +245,7 @@ def train( # Multi-Scale training (67% - 150%) every 10 batches if multi_scale and (i + 1) % 10 == 0: - min_size = round(img_size / 32 / 1.5) - max_size = round(img_size / 32 * 1.5) dataset.img_size = random.choice(range(min_size, max_size + 1)) * 32 - dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=opt.num_workers, diff --git a/utils/datasets.py b/utils/datasets.py index c8d23395..6ad6c564 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -153,6 +153,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing replace('.bmp', '.txt'). replace('.png', '.txt') for x in self.img_files] + multi_scale = False if multi_scale: s = img_size / 32 self.multi_scale = ((np.linspace(0.5, 1.5, nb) * s).round().astype(np.int) * 32) From 64933f7ce09a7efb084020d276941065c6c9079f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 11:55:20 +0200 Subject: [PATCH 0895/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 9b219254..74cebf30 100644 --- a/train.py +++ b/train.py @@ -259,7 +259,7 @@ def train( if not (opt.notest or (opt.nosave and epoch < 10)) or epoch == epochs - 1: with torch.no_grad(): results, maps = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size, model=model, - conf_thres=0.001) + conf_thres=0.1) # Write epoch results with open('results.txt', 'a') as file: From 8df215a8cc50f007a2277e8a9977c61de3b5cd07 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 13:04:58 +0200 Subject: [PATCH 0896/2595] updates --- train.py | 43 ++++++++++++++++++------------------------- utils/datasets.py | 10 ++-------- 2 files changed, 20 insertions(+), 33 deletions(-) diff --git a/train.py b/train.py index 74cebf30..576decf2 100644 --- a/train.py +++ b/train.py @@ -64,7 +64,6 @@ def train( epochs=100, # 500200 batches at bs 4, 117263 images = 68 epochs batch_size=16, accumulate=4, # effective bs = 64 = batch_size * accumulate - multi_scale=True, freeze_backbone=False, transfer=False # Transfer learning (train only YOLO layers) ): @@ -73,12 +72,13 @@ def train( latest = weights + 'latest.pt' best = weights + 'best.pt' device = torch_utils.select_device() - torch.backends.cudnn.benchmark = True # unsuitable for multiscale + torch.backends.cudnn.benchmark = True # possibly unsuitable for multiscale + img_size_test = img_size # image size for testing - if multi_scale: - min_size = round(img_size / 32 / 1.5) - max_size = round(img_size / 32 * 1.5) - img_size = max_size * 32 # initiate with maximum multi_scale size + if opt.multi_scale: + img_size_min = round(img_size / 32 / 1.5) + img_size_max = round(img_size / 32 * 1.5) + img_size = img_size_max * 32 # initiate with maximum multi_scale size # opt.num_workers = 0 # bug https://github.com/ultralytics/yolov3/issues/174 # Configure run @@ -87,7 +87,7 @@ def train( nc = int(data_dict['classes']) # number of classes # Initialize model - model = Darknet(cfg, img_size).to(device) + model = Darknet(cfg).to(device) # Optimizer optimizer = optim.SGD(model.parameters(), lr=hyp['lr0'], momentum=hyp['momentum'], weight_decay=hyp['weight_decay']) @@ -144,8 +144,7 @@ def train( img_size, batch_size, augment=True, - rect=False, - multi_scale=multi_scale) + rect=False) # Initialize distributed training if torch.cuda.device_count() > 1: @@ -204,6 +203,14 @@ def train( imgs = imgs.to(device) targets = targets.to(device) + # Multi-Scale training + if opt.multi_scale: + if (i + 1 + nb * epoch) % 10 == 0: #  adjust (67% - 150%) every 10 batches + img_size = random.choice(range(img_size_min, img_size_max + 1)) * 32 + print('multi_scale img_size = %g' % img_size) + scale_factor = img_size / max(imgs.shape[-2:]) + imgs = F.interpolate(imgs, scale_factor=scale_factor, mode='bilinear', align_corners=False) + # Plot images with bounding boxes if epoch == 0 and i == 0: plot_images(imgs=imgs, targets=targets, fname='train_batch0.jpg') @@ -243,22 +250,10 @@ def train( t = time.time() print(s) - # Multi-Scale training (67% - 150%) every 10 batches - if multi_scale and (i + 1) % 10 == 0: - dataset.img_size = random.choice(range(min_size, max_size + 1)) * 32 - dataloader = DataLoader(dataset, - batch_size=batch_size, - num_workers=opt.num_workers, - shuffle=True, # disable rectangular training if True - pin_memory=True, - collate_fn=dataset.collate_fn) - - print('multi_scale img_size = %g' % dataset.img_size) - # Calculate mAP (always test final epoch, skip first 5 if opt.nosave) if not (opt.notest or (opt.nosave and epoch < 10)) or epoch == epochs - 1: with torch.no_grad(): - results, maps = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size, model=model, + results, maps = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size_test, model=model, conf_thres=0.1) # Write epoch results @@ -316,7 +311,7 @@ if __name__ == '__main__': parser.add_argument('--accumulate', type=int, default=4, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco_64img.data', help='coco.data file path') - parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') + parser.add_argument('--multi-scale', action='store_false', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') @@ -346,7 +341,6 @@ if __name__ == '__main__': epochs=opt.epochs, batch_size=opt.batch_size, accumulate=opt.accumulate, - multi_scale=opt.multi_scale, ) # Evolve hyperparameters (optional) @@ -383,7 +377,6 @@ if __name__ == '__main__': epochs=opt.epochs, batch_size=opt.batch_size, accumulate=opt.accumulate, - multi_scale=opt.multi_scale, ) mutation_fitness = results[2] diff --git a/utils/datasets.py b/utils/datasets.py index 6ad6c564..d9749ca6 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -130,8 +130,7 @@ class LoadWebcam: # for inference class LoadImagesAndLabels(Dataset): # for training/testing - def __init__(self, path, img_size=416, batch_size=16, augment=False, rect=True, image_weights=False, - multi_scale=False): + def __init__(self, path, img_size=416, batch_size=16, augment=False, rect=True, image_weights=False): with open(path, 'r') as f: img_files = f.read().splitlines() self.img_files = list(filter(lambda x: len(x) > 0, img_files)) @@ -153,11 +152,6 @@ class LoadImagesAndLabels(Dataset): # for training/testing replace('.bmp', '.txt'). replace('.png', '.txt') for x in self.img_files] - multi_scale = False - if multi_scale: - s = img_size / 32 - self.multi_scale = ((np.linspace(0.5, 1.5, nb) * s).round().astype(np.int) * 32) - # Rectangular Training https://github.com/ultralytics/yolov3/issues/232 if self.rect: from PIL import Image @@ -256,7 +250,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing shape = self.batch_shapes[self.batch[index]] img, ratio, padw, padh = letterbox(img, new_shape=shape, mode='rect') else: - shape = int(self.multi_scale[self.batch[index]]) if hasattr(self, 'multi_scale') else self.img_size + shape = self.img_size img, ratio, padw, padh = letterbox(img, new_shape=shape, mode='square') # Load labels From b5630f145f5d91f5a9b8ff890497e88d3ca1723c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 13:10:31 +0200 Subject: [PATCH 0897/2595] updates --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 576decf2..e1f5758d 100644 --- a/train.py +++ b/train.py @@ -307,11 +307,11 @@ def print_mutation(hyp, results): if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--epochs', type=int, default=68, help='number of epochs') - parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') - parser.add_argument('--accumulate', type=int, default=4, help='accumulate gradient x batches before optimizing') + parser.add_argument('--batch-size', type=int, default=8, help='size of each image batch') + parser.add_argument('--accumulate', type=int, default=8, help='accumulate gradient x batches before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco_64img.data', help='coco.data file path') - parser.add_argument('--multi-scale', action='store_false', help='random image sizes per batch 320 - 608') + parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') From ef1703f2b83811c3b48e51cb510843c45f3c06da Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 13:19:17 +0200 Subject: [PATCH 0898/2595] updates --- train.py | 2 +- utils/gcp.sh | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index e1f5758d..f3cf9380 100644 --- a/train.py +++ b/train.py @@ -213,7 +213,7 @@ def train( # Plot images with bounding boxes if epoch == 0 and i == 0: - plot_images(imgs=imgs, targets=targets, fname='train_batch0.jpg') + plot_images(imgs=imgs, targets=targets, fname='train_batch%g.jpg' % i) # SGD burn-in if epoch == 0 and i <= n_burnin: diff --git a/utils/gcp.sh b/utils/gcp.sh index bbd2a112..2d35e2b2 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -67,18 +67,33 @@ python3 train.py --data data/coco_1cls.data --epochs 5 --nosave # train 5 epoch python3 train.py --data data/coco_1img.data --epochs 5 --nosave # train 5 epochs # AlexyAB Darknet -gsutil cp -r gs://sm4/supermarket2 . # dataset from bucket +gsutil cp -r gs://sm6/supermarket2 . # dataset from bucket rm -rf darknet && git clone https://github.com/AlexeyAB/darknet && cd darknet && wget -c https://pjreddie.com/media/files/darknet53.conv.74 # sudo apt install libopencv-dev && make ./darknet detector calc_anchors data/coco_img64.data -num_of_clusters 9 -width 320 -height 320 # kmeans anchor calculation -./darknet detector train ../supermarket2/supermarket2.data ../yolov3-spp-sm2-1cls-kmeans.cfg darknet53.conv.74 -map -dont_show # train spp +./darknet detector train ../supermarket2/supermarket2.data ../yolo_v3_spp_pan_scale.cfg darknet53.conv.74 -map -dont_show # train spp ./darknet detector train ../yolov3/data/coco.data ../yolov3-spp.cfg darknet53.conv.74 -map -dont_show # train spp coco +./darknet detector train ../supermarket2/supermarket2.data ../yolov3-spp-sm2-1cls-scalexy_variable.cfg darknet53.conv.74 -map -dont_show # train spp +gsutil cp -r backup/*5000.weights gs://sm6/weights +sudo shutdown + + ./darknet detector train ../supermarket2/supermarket2.data ../yolov3-tiny-sm2-1cls.cfg yolov3-tiny.conv.15 -map -dont_show # train tiny ./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2-1cls.cfg backup/yolov3-spp-sm2-1cls_last.weights # resume -python3 train.py --data ../supermarket2/supermarket2.data --cfg cfg/yolov3-spp-sm2-1cls.cfg --epochs 100 --num-workers 8 --img-size 320 --evolve # train ultralytics +python3 train.py --data ../supermarket2/supermarket2.data --cfg cfg/yolov3-spp-sm2-1cls.cfg --epochs 100 --num-workers 8 --img-size 320 # train ultralytics python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/backup/yolov3-spp-sm2-1cls_5000.weights --cfg cfg/yolov3-spp-sm2-1cls.cfg # test gsutil cp -r backup/*.weights gs://sm6/weights # weights to bucket +python3 test.py --data ../supermarket2/supermarket2.data --weights weights/yolov3-spp-sm2-1cls_5000.weights --cfg ../yolov3-spp-sm2-1cls.cfg --img-size 320 --conf-thres 0.2 # test +python3 test.py --data ../supermarket2/supermarket2.data --weights weights/yolov3-spp-sm2-1cls-scalexy_125_5000.weights --cfg ../yolov3-spp-sm2-1cls-scalexy_125.cfg --img-size 320 --conf-thres 0.2 # test +python3 test.py --data ../supermarket2/supermarket2.data --weights weights/yolov3-spp-sm2-1cls-scalexy_150_5000.weights --cfg ../yolov3-spp-sm2-1cls-scalexy_150.cfg --img-size 320 --conf-thres 0.2 # test +python3 test.py --data ../supermarket2/supermarket2.data --weights weights/yolov3-spp-sm2-1cls-scalexy_200_5000.weights --cfg ../yolov3-spp-sm2-1cls-scalexy_200.cfg --img-size 320 --conf-thres 0.2 # test +python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/backup/yolov3-spp-sm2-1cls-scalexy_variable_5000.weights --cfg ../yolov3-spp-sm2-1cls-scalexy_variable.cfg --img-size 320 --conf-thres 0.2 # test + + + + + # Debug/Development python3 train.py --evolve --data data/coco_1k5k.data --epochs 30 --img-size 320 gsutil cp evolve.txt gs://ultralytics From e42865a30421eefa7bd444828b8a277faedce7fe Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 13:25:39 +0200 Subject: [PATCH 0899/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index f3cf9380..436e157b 100644 --- a/train.py +++ b/train.py @@ -307,8 +307,8 @@ def print_mutation(hyp, results): if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--epochs', type=int, default=68, help='number of epochs') - parser.add_argument('--batch-size', type=int, default=8, help='size of each image batch') - parser.add_argument('--accumulate', type=int, default=8, help='accumulate gradient x batches before optimizing') + parser.add_argument('--batch-size', type=int, default=8, help='batch size') + parser.add_argument('--accumulate', type=int, default=8, help='number of batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco_64img.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') From 0f94dce1cb3aab510d5c39e9e976fe2381b968de Mon Sep 17 00:00:00 2001 From: NirZarrabi Date: Wed, 12 Jun 2019 14:48:39 +0300 Subject: [PATCH 0900/2595] changed warpPerspective to warpAffine at line 380 (#328) since the transformation is affine and not perspective it is more efficient to use the warpAffine function --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index d9749ca6..98d855e0 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -371,7 +371,7 @@ def random_affine(img, targets=(), degrees=(-10, 10), translate=(.1, .1), scale= S[1, 0] = math.tan((random.random() * (shear[1] - shear[0]) + shear[0]) * math.pi / 180) # y shear (deg) M = S @ T @ R # Combined rotation matrix. ORDER IS IMPORTANT HERE!! - imw = cv2.warpPerspective(img, M, dsize=(width, height), flags=cv2.INTER_LINEAR, + imw = cv2.warpAffine(img, M[:2], dsize=(width, height), flags=cv2.INTER_LINEAR, borderValue=borderValue) # BGR order borderValue # Return warped points also From e81c1ab501aa676f6d95826e924aeda7a83ce11f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 13:57:32 +0200 Subject: [PATCH 0901/2595] updates --- utils/datasets.py | 2 +- utils/gcp.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 98d855e0..48f18dbf 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -269,7 +269,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Augment image and labels if self.augment: - img, labels = random_affine(img, labels, degrees=(-5, 5), translate=(0.10, 0.10), scale=(0.90, 1.10)) + img, labels = random_affine(img, labels, degrees=(-5, 5), translate=(0.0, 0.0), scale=(1.0, 1.0)) nL = len(labels) # number of labels if nL: diff --git a/utils/gcp.sh b/utils/gcp.sh index 2d35e2b2..5a722a55 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -80,7 +80,7 @@ sudo shutdown ./darknet detector train ../supermarket2/supermarket2.data ../yolov3-tiny-sm2-1cls.cfg yolov3-tiny.conv.15 -map -dont_show # train tiny ./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2-1cls.cfg backup/yolov3-spp-sm2-1cls_last.weights # resume -python3 train.py --data ../supermarket2/supermarket2.data --cfg cfg/yolov3-spp-sm2-1cls.cfg --epochs 100 --num-workers 8 --img-size 320 # train ultralytics +python3 train.py --data ../supermarket2/supermarket2.data --cfg ../yolov3-spp-sm2-1cls.cfg --epochs 100 --num-workers 8 --img-size 320 --nosave # train ultralytics python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/backup/yolov3-spp-sm2-1cls_5000.weights --cfg cfg/yolov3-spp-sm2-1cls.cfg # test gsutil cp -r backup/*.weights gs://sm6/weights # weights to bucket From 59cf3978fc6b2640febb12b53d0cfacb56f1edf8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 13:59:20 +0200 Subject: [PATCH 0902/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 48f18dbf..b5f8db6a 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -230,7 +230,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing augment_hsv = True if self.augment and augment_hsv: # SV augmentation by 50% - fraction = 0.50 # must be < 1.0 + fraction = 0.25 # must be < 1.0 img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # hue, sat, val S = img_hsv[:, :, 1].astype(np.float32) # saturation V = img_hsv[:, :, 2].astype(np.float32) # value From bca423ee435212f184c902e9316b3ef22e232d57 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 14:15:28 +0200 Subject: [PATCH 0903/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 436e157b..0df92b0e 100644 --- a/train.py +++ b/train.py @@ -207,7 +207,7 @@ def train( if opt.multi_scale: if (i + 1 + nb * epoch) % 10 == 0: #  adjust (67% - 150%) every 10 batches img_size = random.choice(range(img_size_min, img_size_max + 1)) * 32 - print('multi_scale img_size = %g' % img_size) + print('img_size = %g' % img_size) scale_factor = img_size / max(imgs.shape[-2:]) imgs = F.interpolate(imgs, scale_factor=scale_factor, mode='bilinear', align_corners=False) From 81b4a7833f5ea2255944143cd55d6c200307d875 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 14:30:40 +0200 Subject: [PATCH 0904/2595] updates --- utils/utils.py | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 83f7fdf9..323dc3c1 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -219,7 +219,7 @@ def compute_ap(recall, precision): return ap -def bbox_iou(box1, box2, x1y1x2y2=True): +def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False): # Returns the IoU of box1 to box2. box1 is 4, box2 is nx4 box2 = box2.t() @@ -243,7 +243,14 @@ def bbox_iou(box1, box2, x1y1x2y2=True): union_area = ((b1_x2 - b1_x1) * (b1_y2 - b1_y1) + 1e-16) + \ (b2_x2 - b2_x1) * (b2_y2 - b2_y1) - inter_area - return inter_area / union_area # iou + iou = inter_area / union_area # iou + if GIoU: # Generalized IoU https://arxiv.org/pdf/1902.09630.pdf + c_x1, c_x2 = torch.min(b1_x1, b2_x1), torch.max(b1_x2, b2_x2) + c_y1, c_y2 = torch.min(b1_y1, b2_y1), torch.max(b1_y2, b2_y2) + c_area = (c_x2 - c_x1) * (c_y2 - c_y1) # convex area + return iou - (c_area - union_area) / c_area # GIoU + + return iou def wh_iou(box1, box2): @@ -265,8 +272,8 @@ def wh_iou(box1, box2): def compute_loss(p, targets, model): # predictions, targets, model ft = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor - lxy, lwh, lcls, lconf = ft([0]), ft([0]), ft([0]), ft([0]) - txy, twh, tcls, indices = build_targets(model, targets) + lxy, lwh, lcls, lconf, lgiou = ft([0]), ft([0]), ft([0]), ft([0]), ft([0]) + txy, twh, tcls, tbox, indices, anchor_vec = build_targets(model, targets) # Define criteria MSE = nn.MSELoss() @@ -287,6 +294,11 @@ def compute_loss(p, targets, model): # predictions, targets, model tconf[b, a, gj, gi] = 1 # conf # pi[..., 2:4] = torch.sigmoid(pi[..., 2:4]) # wh power loss (uncomment) + # Build GIoU boxes + pbox = torch.cat((torch.sigmoid(pi[..., 0:2]), torch.exp(pi[..., 2:4]) * anchor_vec[i]), 1) # predicted box + giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) + + # lxy += (k * h['giou']) * (1.0 - giou).mean() # giou loss lxy += (k * h['xy']) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss lwh += (k * h['wh']) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss lcls += (k * h['cls']) * CE(pi[..., 5:], tcls[i]) # class_conf loss @@ -306,7 +318,7 @@ def build_targets(model, targets): model = model.module nt = len(targets) - txy, twh, tcls, indices = [], [], [], [] + txy, twh, tcls, tbox, indices, anchor_vec = [], [], [], [], [], [] for i in model.yolo_layers: layer = model.module_list[i][0] @@ -330,7 +342,12 @@ def build_targets(model, targets): indices.append((b, a, gj, gi)) # XY coordinates - txy.append(gxy - gxy.floor()) + gxy -= gxy.floor() + txy.append(gxy) + + # GIoU + tbox.append(torch.cat((gxy, gwh), 1)) # xywh (grids) + anchor_vec.append(layer.anchor_vec[a]) # Width and height twh.append(torch.log(gwh / layer.anchor_vec[a])) # wh yolo method @@ -341,7 +358,7 @@ def build_targets(model, targets): if c.shape[0]: assert c.max() <= layer.nc, 'Target classes exceed model classes' - return txy, twh, tcls, indices + return txy, twh, tcls, tbox, indices, anchor_vec def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): From c5cb3c8a9e3bbbb1365dcbaac495ae2d1083ab1b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 14:35:10 +0200 Subject: [PATCH 0905/2595] updates --- train.py | 2 +- utils/datasets.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 0df92b0e..06ebbbe0 100644 --- a/train.py +++ b/train.py @@ -12,7 +12,7 @@ from utils.datasets import * from utils.utils import * # Hyperparameters: train.py --evolve --epochs 2 --img-size 320, Metrics: 0.204 0.302 0.175 0.234 (square smart) -hyp = {'xy': 0.2, # xy loss gain +hyp = {'xy': 0.2, # xy loss gain (giou is about 0.02) 'wh': 0.1, # wh loss gain 'cls': 0.04, # cls loss gain 'conf': 4.5, # conf loss gain diff --git a/utils/datasets.py b/utils/datasets.py index b5f8db6a..98d855e0 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -230,7 +230,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing augment_hsv = True if self.augment and augment_hsv: # SV augmentation by 50% - fraction = 0.25 # must be < 1.0 + fraction = 0.50 # must be < 1.0 img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # hue, sat, val S = img_hsv[:, :, 1].astype(np.float32) # saturation V = img_hsv[:, :, 2].astype(np.float32) # value @@ -269,7 +269,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Augment image and labels if self.augment: - img, labels = random_affine(img, labels, degrees=(-5, 5), translate=(0.0, 0.0), scale=(1.0, 1.0)) + img, labels = random_affine(img, labels, degrees=(-5, 5), translate=(0.10, 0.10), scale=(0.90, 1.10)) nL = len(labels) # number of labels if nL: From b33a0b6cf21699af1379c9f286499150a398df00 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 15:12:08 +0200 Subject: [PATCH 0906/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 06ebbbe0..8f9e392e 100644 --- a/train.py +++ b/train.py @@ -12,7 +12,7 @@ from utils.datasets import * from utils.utils import * # Hyperparameters: train.py --evolve --epochs 2 --img-size 320, Metrics: 0.204 0.302 0.175 0.234 (square smart) -hyp = {'xy': 0.2, # xy loss gain (giou is about 0.02) +hyp = {'xy': 0.1, # xy loss gain (giou is about 0.02) 'wh': 0.1, # wh loss gain 'cls': 0.04, # cls loss gain 'conf': 4.5, # conf loss gain @@ -356,7 +356,7 @@ if __name__ == '__main__': # Mutate hyperparameters old_hyp = hyp.copy() init_seeds(seed=int(time.time())) - s = [.3, .3, .3, .3, .3, .3, .3, .03, .3] + s = [.3, .3, .3, .3, .3, .3, .3, .03, .3] # xy, wh, cls, conf, iou_t, lr0, lrf, weight_decay for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 1.1 # plt.hist(x.ravel(), 100) hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma From 64134706d1439fbdb080b51d5feecbd72d50151e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 15:14:13 +0200 Subject: [PATCH 0907/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 8f9e392e..6f5e18ce 100644 --- a/train.py +++ b/train.py @@ -356,7 +356,7 @@ if __name__ == '__main__': # Mutate hyperparameters old_hyp = hyp.copy() init_seeds(seed=int(time.time())) - s = [.3, .3, .3, .3, .3, .3, .3, .03, .3] # xy, wh, cls, conf, iou_t, lr0, lrf, weight_decay + s = [.3, .3, .3, .3, .3, .3, .3, .03, .3] # xy, wh, cls, conf, iou_t, lr0, lrf, momentum, weight_decay for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 1.1 # plt.hist(x.ravel(), 100) hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma From 1e8df4db23c9921827683611aa7aed98bcbe57a6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 18:21:42 +0200 Subject: [PATCH 0908/2595] updates --- train.py | 1 - 1 file changed, 1 deletion(-) diff --git a/train.py b/train.py index 6f5e18ce..5c99415a 100644 --- a/train.py +++ b/train.py @@ -79,7 +79,6 @@ def train( img_size_min = round(img_size / 32 / 1.5) img_size_max = round(img_size / 32 * 1.5) img_size = img_size_max * 32 # initiate with maximum multi_scale size - # opt.num_workers = 0 # bug https://github.com/ultralytics/yolov3/issues/174 # Configure run data_dict = parse_data_cfg(data_cfg) From 19d2232665437b924d4e7233fab40e8acbfdc968 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Jun 2019 19:40:21 +0200 Subject: [PATCH 0909/2595] updates --- utils/utils.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 323dc3c1..047c481b 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -274,6 +274,7 @@ def compute_loss(p, targets, model): # predictions, targets, model ft = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor lxy, lwh, lcls, lconf, lgiou = ft([0]), ft([0]), ft([0]), ft([0]), ft([0]) txy, twh, tcls, tbox, indices, anchor_vec = build_targets(model, targets) + h = model.hyp # hyperparameters # Define criteria MSE = nn.MSELoss() @@ -281,7 +282,6 @@ def compute_loss(p, targets, model): # predictions, targets, model BCE = nn.BCEWithLogitsLoss() # Compute losses - h = model.hyp # hyperparameters bs = p[0].shape[0] # batch size k = bs # loss gain for i, pi0 in enumerate(p): # layer i predictions, i @@ -303,8 +303,6 @@ def compute_loss(p, targets, model): # predictions, targets, model lwh += (k * h['wh']) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss lcls += (k * h['cls']) * CE(pi[..., 5:], tcls[i]) # class_conf loss - # pos_weight = ft([gp[i] / min(gp) * 4.]) - # BCE = nn.BCEWithLogitsLoss(pos_weight=pos_weight) lconf += (k * h['conf']) * BCE(pi0[..., 4], tconf) # obj_conf loss loss = lxy + lwh + lconf + lcls From 8f609246db8ef37c8678aad5938d33d2d555cf12 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 13 Jun 2019 18:13:30 +0200 Subject: [PATCH 0910/2595] updates --- train.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 5c99415a..70a9354e 100644 --- a/train.py +++ b/train.py @@ -74,8 +74,9 @@ def train( device = torch_utils.select_device() torch.backends.cudnn.benchmark = True # possibly unsuitable for multiscale img_size_test = img_size # image size for testing + multi_scale = not opt.single_scale - if opt.multi_scale: + if multi_scale: img_size_min = round(img_size / 32 / 1.5) img_size_max = round(img_size / 32 * 1.5) img_size = img_size_max * 32 # initiate with maximum multi_scale size @@ -203,7 +204,7 @@ def train( targets = targets.to(device) # Multi-Scale training - if opt.multi_scale: + if multi_scale: if (i + 1 + nb * epoch) % 10 == 0: #  adjust (67% - 150%) every 10 batches img_size = random.choice(range(img_size_min, img_size_max + 1)) * 32 print('img_size = %g' % img_size) @@ -310,7 +311,7 @@ if __name__ == '__main__': parser.add_argument('--accumulate', type=int, default=8, help='number of batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco_64img.data', help='coco.data file path') - parser.add_argument('--multi-scale', action='store_true', help='random image sizes per batch 320 - 608') + parser.add_argument('--single-scale', action='store_true', help='train at fixed size (no multi-scale)') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') From bb3682024efb6ecde7de937d427419b989763b22 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 15 Jun 2019 01:35:55 +0200 Subject: [PATCH 0911/2595] updates --- train.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 70a9354e..54fbb8b5 100644 --- a/train.py +++ b/train.py @@ -140,11 +140,12 @@ def train( # plt.savefig('LR.png', dpi=300) # Dataset + rectangular_training = False dataset = LoadImagesAndLabels(train_path, img_size, batch_size, augment=True, - rect=False) + rect=rectangular_training) # Initialize distributed training if torch.cuda.device_count() > 1: @@ -156,7 +157,7 @@ def train( dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=opt.num_workers, - shuffle=True, # disable rectangular training if True + shuffle=not rectangular_training, # Shuffle=True unless rectangular training is used pin_memory=True, collate_fn=dataset.collate_fn) From 02291622fac8c94ea6dd8a937c363b39bd4b43a8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 15 Jun 2019 02:10:15 +0200 Subject: [PATCH 0912/2595] updates --- train.py | 12 +++++++----- utils/utils.py | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/train.py b/train.py index 54fbb8b5..56f63ade 100644 --- a/train.py +++ b/train.py @@ -12,11 +12,13 @@ from utils.datasets import * from utils.utils import * # Hyperparameters: train.py --evolve --epochs 2 --img-size 320, Metrics: 0.204 0.302 0.175 0.234 (square smart) -hyp = {'xy': 0.1, # xy loss gain (giou is about 0.02) - 'wh': 0.1, # wh loss gain - 'cls': 0.04, # cls loss gain - 'conf': 4.5, # conf loss gain - 'iou_t': 0.5, # iou target-anchor training threshold +hyp = {'giou': .035, # giou loss gain + 'xy': 0.20, # xy loss gain + 'wh': 0.10, # wh loss gain + 'cls': 0.035, # cls loss gain + 'conf': 1.61, # conf loss gain + 'conf_bpw': 3.53, # conf BCELoss positive_weight + 'iou_t': 0.29, # iou target-anchor training threshold 'lr0': 0.001, # initial learning rate 'lrf': -4., # final learning rate = lr0 * (10 ** lrf) 'momentum': 0.90, # SGD momentum diff --git a/utils/utils.py b/utils/utils.py index 047c481b..cb8c7434 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -279,7 +279,7 @@ def compute_loss(p, targets, model): # predictions, targets, model # Define criteria MSE = nn.MSELoss() CE = nn.CrossEntropyLoss() # (weight=model.class_weights) - BCE = nn.BCEWithLogitsLoss() + BCE = nn.BCEWithLogitsLoss(pos_weight=ft([h['conf_bpw']])) # Compute losses bs = p[0].shape[0] # batch size From 995dc3ca6740ed76ea424c73c466ea3ab4ca944d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 15 Jun 2019 02:44:01 +0200 Subject: [PATCH 0913/2595] updates --- train.py | 2 +- utils/utils.py | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/train.py b/train.py index 56f63ade..2209e0d9 100644 --- a/train.py +++ b/train.py @@ -228,7 +228,7 @@ def train( pred = model(imgs) # Compute loss - loss, loss_items = compute_loss(pred, targets, model) + loss, loss_items = compute_loss(pred, targets, model, giou_loss=False) if torch.isnan(loss): print('WARNING: nan loss detected, ending training') return results diff --git a/utils/utils.py b/utils/utils.py index cb8c7434..fff6d03f 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -270,9 +270,9 @@ def wh_iou(box1, box2): return inter_area / union_area # iou -def compute_loss(p, targets, model): # predictions, targets, model +def compute_loss(p, targets, model, giou_loss=False): # predictions, targets, model ft = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor - lxy, lwh, lcls, lconf, lgiou = ft([0]), ft([0]), ft([0]), ft([0]), ft([0]) + lxy, lwh, lcls, lconf = ft([0]), ft([0]), ft([0]), ft([0]) txy, twh, tcls, tbox, indices, anchor_vec = build_targets(model, targets) h = model.hyp # hyperparameters @@ -298,9 +298,11 @@ def compute_loss(p, targets, model): # predictions, targets, model pbox = torch.cat((torch.sigmoid(pi[..., 0:2]), torch.exp(pi[..., 2:4]) * anchor_vec[i]), 1) # predicted box giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) - # lxy += (k * h['giou']) * (1.0 - giou).mean() # giou loss - lxy += (k * h['xy']) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss - lwh += (k * h['wh']) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss + if giou_loss: + lxy += (k * h['giou']) * (1.0 - giou).mean() # giou loss + else: + lxy += (k * h['xy']) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss + lwh += (k * h['wh']) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss lcls += (k * h['cls']) * CE(pi[..., 5:], tcls[i]) # class_conf loss lconf += (k * h['conf']) * BCE(pi0[..., 4], tconf) # obj_conf loss From 40da693ff016d43b3559c52f687e1ec5c0a85a92 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 15 Jun 2019 13:34:02 +0200 Subject: [PATCH 0914/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 6de158c6..9106bc84 100644 --- a/detect.py +++ b/detect.py @@ -28,7 +28,7 @@ def detect( # Initialize model if ONNX_EXPORT: - s = (320, 192) # onnx model image size (height, width) + s = (320, 192) # (320, 192) or (416, 256) onnx model image size (height, width) model = Darknet(cfg, s) else: model = Darknet(cfg, img_size) From 6c77764bba66f02d21116b9cca94a0e77749bc3c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 15 Jun 2019 14:05:19 +0200 Subject: [PATCH 0915/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 9106bc84..5defda55 100644 --- a/detect.py +++ b/detect.py @@ -28,7 +28,7 @@ def detect( # Initialize model if ONNX_EXPORT: - s = (320, 192) # (320, 192) or (416, 256) onnx model image size (height, width) + s = (320, 192) # (320, 192) or (416, 256) or (608, 352) onnx model image size (height, width) model = Darknet(cfg, s) else: model = Darknet(cfg, img_size) From b59532883aab97890331c3a7603e0d4a1a88a480 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 15 Jun 2019 17:06:58 +0200 Subject: [PATCH 0916/2595] updates --- train.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index 2209e0d9..174d9763 100644 --- a/train.py +++ b/train.py @@ -228,7 +228,7 @@ def train( pred = model(imgs) # Compute loss - loss, loss_items = compute_loss(pred, targets, model, giou_loss=False) + loss, loss_items = compute_loss(pred, targets, model, giou_loss=opt.giou) if torch.isnan(loss): print('WARNING: nan loss detected, ending training') return results @@ -325,6 +325,7 @@ if __name__ == '__main__': parser.add_argument('--backend', default='nccl', type=str, help='distributed backend') parser.add_argument('--nosave', action='store_true', help='do not save training results') parser.add_argument('--notest', action='store_true', help='only test final epoch') + parser.add_argument('--giou', action='store_true', help='use GIoU loss instead of xy, wh loss') parser.add_argument('--evolve', action='store_true', help='run hyperparameter evolution') parser.add_argument('--var', default=0, type=int, help='debug variable') opt = parser.parse_args() From f573250ae832a24d4f5a68b4ec76df388a0789e6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 16 Jun 2019 23:17:40 +0200 Subject: [PATCH 0917/2595] updates --- train.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index 174d9763..10f9e578 100644 --- a/train.py +++ b/train.py @@ -122,6 +122,10 @@ def train( else: cutoff = load_darknet_weights(model, weights + 'darknet53.conv.74') + # Remove old results + for f in glob.glob('*_batch*.jpg') + glob.glob('results.txt'): + os.remove(f) + # Scheduler https://github.com/ultralytics/yolov3/issues/238 # lf = lambda x: 1 - x / epochs # linear ramp to zero # lf = lambda x: 10 ** (hyp['lrf'] * x / epochs) # exp ramp @@ -170,10 +174,6 @@ def train( from apex import amp model, optimizer = amp.initialize(model, optimizer, opt_level='O1') - # Remove old results - for f in glob.glob('*_batch*.jpg') + glob.glob('results.txt'): - os.remove(f) - # Start training model.hyp = hyp # attach hyperparameters to model model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights From 55bb905072df8ead332d86bff7c095e760e5b0cd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 17 Jun 2019 17:45:54 +0200 Subject: [PATCH 0918/2595] updates --- utils/gcp.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 5a722a55..9fc26ddf 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -95,6 +95,6 @@ python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/ba # Debug/Development -python3 train.py --evolve --data data/coco_1k5k.data --epochs 30 --img-size 320 +python3 train.py --data data/coco.data --epochs 2 --img-size 320 gsutil cp evolve.txt gs://ultralytics sudo shutdown From 58203e49c8662b8d8bb1889f0c0eab55d8c47646 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 17 Jun 2019 18:02:04 +0200 Subject: [PATCH 0919/2595] updates --- utils/utils.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/utils/utils.py b/utils/utils.py index fff6d03f..3b8f30cc 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -11,6 +11,7 @@ from PIL import Image from tqdm import tqdm from . import torch_utils +from . import parse_config matplotlib.rc('font', **{'size': 12}) @@ -489,6 +490,14 @@ def strip_optimizer_from_checkpoint(filename='weights/best.pt'): torch.save(a, filename.replace('.pt', '_lite.pt')) +def extract_bounding_boxes(data_cfg='data/coco_64img.data'): # from utils.utils import *; extract_bounding_boxes() + # Extract bounding boxes into a new classification dataset + data_dict = parse_config.parse_data_cfg(data_cfg) + train_path = data_dict['train'] + nc = int(data_dict['classes']) # number of classes + + + def coco_class_count(path='../coco/labels/train2014/'): # Histogram of occurrences per class nc = 80 # number classes From 677bdf236c36a925dc8a2a8fbe16666ef7e67611 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 18 Jun 2019 15:34:35 +0200 Subject: [PATCH 0920/2595] updates --- utils/utils.py | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 3b8f30cc..2905f5ec 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -11,7 +11,6 @@ from PIL import Image from tqdm import tqdm from . import torch_utils -from . import parse_config matplotlib.rc('font', **{'size': 12}) @@ -295,11 +294,9 @@ def compute_loss(p, targets, model, giou_loss=False): # predictions, targets, m tconf[b, a, gj, gi] = 1 # conf # pi[..., 2:4] = torch.sigmoid(pi[..., 2:4]) # wh power loss (uncomment) - # Build GIoU boxes - pbox = torch.cat((torch.sigmoid(pi[..., 0:2]), torch.exp(pi[..., 2:4]) * anchor_vec[i]), 1) # predicted box - giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) - if giou_loss: + pbox = torch.cat((torch.sigmoid(pi[..., 0:2]), torch.exp(pi[..., 2:4]) * anchor_vec[i]), 1) # predicted + giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation lxy += (k * h['giou']) * (1.0 - giou).mean() # giou loss else: lxy += (k * h['xy']) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss @@ -490,14 +487,6 @@ def strip_optimizer_from_checkpoint(filename='weights/best.pt'): torch.save(a, filename.replace('.pt', '_lite.pt')) -def extract_bounding_boxes(data_cfg='data/coco_64img.data'): # from utils.utils import *; extract_bounding_boxes() - # Extract bounding boxes into a new classification dataset - data_dict = parse_config.parse_data_cfg(data_cfg) - train_path = data_dict['train'] - nc = int(data_dict['classes']) # number of classes - - - def coco_class_count(path='../coco/labels/train2014/'): # Histogram of occurrences per class nc = 80 # number classes From 6efb2c935f8a05acd2978d8d1cd4a1467b0c110b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 18 Jun 2019 16:32:19 +0200 Subject: [PATCH 0921/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 10f9e578..24bf2063 100644 --- a/train.py +++ b/train.py @@ -360,7 +360,7 @@ if __name__ == '__main__': # Mutate hyperparameters old_hyp = hyp.copy() init_seeds(seed=int(time.time())) - s = [.3, .3, .3, .3, .3, .3, .3, .03, .3] # xy, wh, cls, conf, iou_t, lr0, lrf, momentum, weight_decay + s = [0.5, .5, .5, .5, .5, .5, .5, .5, .05, .5] # xy, wh, cls, conf, iou_t, lr0, lrf, momentum, weight_decay for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 1.1 # plt.hist(x.ravel(), 100) hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma From 4fb2567aa5102d417ad95733fe213a2bbdebf9da Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 18 Jun 2019 16:32:37 +0200 Subject: [PATCH 0922/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 24bf2063..401bf40b 100644 --- a/train.py +++ b/train.py @@ -313,7 +313,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=8, help='batch size') parser.add_argument('--accumulate', type=int, default=8, help='number of batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco_64img.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='../supermarket2/supermarket2.data', help='coco.data file path') parser.add_argument('--single-scale', action='store_true', help='train at fixed size (no multi-scale)') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') @@ -360,7 +360,7 @@ if __name__ == '__main__': # Mutate hyperparameters old_hyp = hyp.copy() init_seeds(seed=int(time.time())) - s = [0.5, .5, .5, .5, .5, .5, .5, .5, .05, .5] # xy, wh, cls, conf, iou_t, lr0, lrf, momentum, weight_decay + s = [.5, .5, .5, .5, .5, .5, .5, .5, .05, .5] # xy, wh, cls, conf, iou_t, lr0, lrf, momentum, weight_decay for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 1.1 # plt.hist(x.ravel(), 100) hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma From 84c1fecd818ff746206d3e8884ff196b75db7ea3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 18 Jun 2019 16:33:18 +0200 Subject: [PATCH 0923/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 401bf40b..42554dd2 100644 --- a/train.py +++ b/train.py @@ -313,7 +313,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=8, help='batch size') parser.add_argument('--accumulate', type=int, default=8, help='number of batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='../supermarket2/supermarket2.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco_64img.data', help='coco.data file path') parser.add_argument('--single-scale', action='store_true', help='train at fixed size (no multi-scale)') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') From 1096596ad8e2550851751df70fd2a7e9bcdef245 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 18 Jun 2019 16:36:04 +0200 Subject: [PATCH 0924/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 42554dd2..e1a786b0 100644 --- a/train.py +++ b/train.py @@ -367,7 +367,7 @@ if __name__ == '__main__': # Clip to limits keys = ['lr0', 'iou_t', 'momentum', 'weight_decay'] - limits = [(1e-4, 1e-2), (0, 0.90), (0.70, 0.99), (0, 0.01)] + limits = [(1e-4, 1e-2), (0, 0.00), (0.70, 0.99), (0, 0.01)] for k, v in zip(keys, limits): hyp[k] = np.clip(hyp[k], v[0], v[1]) From c3526e0efff6f95d2ea5a49dacec9376dd3dc229 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 18 Jun 2019 17:35:47 +0200 Subject: [PATCH 0925/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index e1a786b0..161f902c 100644 --- a/train.py +++ b/train.py @@ -360,7 +360,7 @@ if __name__ == '__main__': # Mutate hyperparameters old_hyp = hyp.copy() init_seeds(seed=int(time.time())) - s = [.5, .5, .5, .5, .5, .5, .5, .5, .05, .5] # xy, wh, cls, conf, iou_t, lr0, lrf, momentum, weight_decay + s = [.5, .5, .5, .5, .5, .5, .5, .5, .5, .05, .5] # xy, wh, cls, conf, iou_t, lr0, lrf, momentum, weight_decay for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 1.1 # plt.hist(x.ravel(), 100) hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma From a40f421061c5a4a66fc51cb41b338138b888dcb1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 18 Jun 2019 21:34:44 +0200 Subject: [PATCH 0926/2595] updates --- utils/datasets.py | 24 +++++++++++++++++++++--- utils/gcp.sh | 2 +- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 98d855e0..e0221c32 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -11,7 +11,7 @@ import torch from torch.utils.data import Dataset from tqdm import tqdm -from utils.utils import xyxy2xywh +from utils.utils import xyxy2xywh, xywh2xyxy class LoadImages: # for inference @@ -188,7 +188,8 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Preload labels (required for weighted CE training) self.imgs = [None] * n self.labels = [np.zeros((0, 5))] * n - iter = tqdm(self.label_files, desc='Reading labels') if n > 1000 else self.label_files + iter = tqdm(self.label_files, desc='Reading labels') if n > 10 else self.label_files + extract_bounding_boxes = False for i, file in enumerate(iter): try: with open(file, 'r') as f: @@ -198,6 +199,23 @@ class LoadImagesAndLabels(Dataset): # for training/testing assert (l >= 0).all(), 'negative labels: %s' % file assert (l[:, 1:] <= 1).all(), 'non-normalized or out of bounds coordinate labels: %s' % file self.labels[i] = l + + # Extract object detection boxes for a second stage classifier + if extract_bounding_boxes: + p = Path(self.img_files[i]) + img = cv2.imread(str(p)) + h, w, _ = img.shape + for j, x in enumerate(l): + f = '%s%sclassification%s%g_%g_%s' % (p.parent.parent, os.sep, os.sep, x[0], j, p.name) + if not os.path.exists(Path(f).parent): + os.makedirs(Path(f).parent) # make new output folder + box = xywh2xyxy(x[1:].reshape(-1, 4)).ravel() + box = np.clip(box, 0, 1) # clip boxes outside of image + result = cv2.imwrite(f, img[int(box[1] * h):int(box[3] * h), + int(box[0] * w):int(box[2] * w)]) + if not result: + print('stop') + except: pass # print('Warning: missing labels for %s' % self.img_files[i]) # missing label file assert len(np.concatenate(self.labels, 0)) > 0, 'No labels found. Incorrect label paths provided.' @@ -372,7 +390,7 @@ def random_affine(img, targets=(), degrees=(-10, 10), translate=(.1, .1), scale= M = S @ T @ R # Combined rotation matrix. ORDER IS IMPORTANT HERE!! imw = cv2.warpAffine(img, M[:2], dsize=(width, height), flags=cv2.INTER_LINEAR, - borderValue=borderValue) # BGR order borderValue + borderValue=borderValue) # BGR order borderValue # Return warped points also if len(targets) > 0: diff --git a/utils/gcp.sh b/utils/gcp.sh index 9fc26ddf..72a6f72b 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -95,6 +95,6 @@ python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/ba # Debug/Development -python3 train.py --data data/coco.data --epochs 2 --img-size 320 +python3 train.py --data data/coco.data --epochs 1 --img-size 320 --single-scale --batch-size 16 --accumulate 4 --giou --evolve gsutil cp evolve.txt gs://ultralytics sudo shutdown From 7d7d7a6332e62c5639f58818729fb881a326ad82 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 21 Jun 2019 10:17:29 +0200 Subject: [PATCH 0927/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 161f902c..c0efe1c6 100644 --- a/train.py +++ b/train.py @@ -208,7 +208,7 @@ def train( # Multi-Scale training if multi_scale: - if (i + 1 + nb * epoch) % 10 == 0: #  adjust (67% - 150%) every 10 batches + if ((i + 1) / accumulate + nb * epoch) % 10 == 0: #  adjust (67% - 150%) every 10 batches img_size = random.choice(range(img_size_min, img_size_max + 1)) * 32 print('img_size = %g' % img_size) scale_factor = img_size / max(imgs.shape[-2:]) @@ -360,7 +360,7 @@ if __name__ == '__main__': # Mutate hyperparameters old_hyp = hyp.copy() init_seeds(seed=int(time.time())) - s = [.5, .5, .5, .5, .5, .5, .5, .5, .5, .05, .5] # xy, wh, cls, conf, iou_t, lr0, lrf, momentum, weight_decay + s = [.4, .4, .4, .4, .4, .4, .4, .4, .4, .04, .4] # fractional sigmas for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 1.1 # plt.hist(x.ravel(), 100) hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma From a7e21b43152793773f16543192fb1adeb6ddadb0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 21 Jun 2019 10:24:06 +0200 Subject: [PATCH 0928/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index c0efe1c6..e5247683 100644 --- a/train.py +++ b/train.py @@ -208,7 +208,7 @@ def train( # Multi-Scale training if multi_scale: - if ((i + 1) / accumulate + nb * epoch) % 10 == 0: #  adjust (67% - 150%) every 10 batches + if (i + 1 + nb * epoch) / accumulate % 10 == 0: #  adjust (67% - 150%) every 10 batches img_size = random.choice(range(img_size_min, img_size_max + 1)) * 32 print('img_size = %g' % img_size) scale_factor = img_size / max(imgs.shape[-2:]) @@ -318,7 +318,7 @@ if __name__ == '__main__': parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') - parser.add_argument('--num-workers', type=int, default=4, help='number of Pytorch DataLoader workers') + parser.add_argument('--num-workers', type=int, default=0, help='number of Pytorch DataLoader workers') parser.add_argument('--dist-url', default='tcp://127.0.0.1:9999', type=str, help='distributed training init method') parser.add_argument('--rank', default=0, type=int, help='distributed training node rank') parser.add_argument('--world-size', default=1, type=int, help='number of nodes for distributed training') From 3223c0171ac85b1e1a730487781d50d07ed9b5f0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 21 Jun 2019 10:58:12 +0200 Subject: [PATCH 0929/2595] updates --- cfg/yolov3-spp.cfg | 8 ++++---- train.py | 2 +- utils/gcp.sh | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/cfg/yolov3-spp.cfg b/cfg/yolov3-spp.cfg index a97a3cf3..bb4e893b 100644 --- a/cfg/yolov3-spp.cfg +++ b/cfg/yolov3-spp.cfg @@ -1,10 +1,10 @@ [net] # Testing -batch=1 -subdivisions=1 +# batch=1 +# subdivisions=1 # Training -# batch=64 -# subdivisions=16 +batch=64 +subdivisions=16 width=608 height=608 channels=3 diff --git a/train.py b/train.py index e5247683..9c16bbf5 100644 --- a/train.py +++ b/train.py @@ -318,7 +318,7 @@ if __name__ == '__main__': parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') - parser.add_argument('--num-workers', type=int, default=0, help='number of Pytorch DataLoader workers') + parser.add_argument('--num-workers', type=int, default=4, help='number of Pytorch DataLoader workers') parser.add_argument('--dist-url', default='tcp://127.0.0.1:9999', type=str, help='distributed training init method') parser.add_argument('--rank', default=0, type=int, help='distributed training node rank') parser.add_argument('--world-size', default=1, type=int, help='number of nodes for distributed training') diff --git a/utils/gcp.sh b/utils/gcp.sh index 72a6f72b..34d7c1c0 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -73,7 +73,7 @@ rm -rf darknet && git clone https://github.com/AlexeyAB/darknet && cd darknet && ./darknet detector train ../supermarket2/supermarket2.data ../yolo_v3_spp_pan_scale.cfg darknet53.conv.74 -map -dont_show # train spp ./darknet detector train ../yolov3/data/coco.data ../yolov3-spp.cfg darknet53.conv.74 -map -dont_show # train spp coco -./darknet detector train ../supermarket2/supermarket2.data ../yolov3-spp-sm2-1cls-scalexy_variable.cfg darknet53.conv.74 -map -dont_show # train spp +./darknet detector train data/coco.data ../yolov3-spp.cfg darknet53.conv.74 -map -dont_show # train spp gsutil cp -r backup/*5000.weights gs://sm6/weights sudo shutdown @@ -95,6 +95,6 @@ python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/ba # Debug/Development -python3 train.py --data data/coco.data --epochs 1 --img-size 320 --single-scale --batch-size 16 --accumulate 4 --giou --evolve +python3 train.py --data data/coco.data --img-size 416 --batch-size 8 --accumulate 8 gsutil cp evolve.txt gs://ultralytics sudo shutdown From 1a9aa30efcf7cf17b79736542a8c3f77c03d4854 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 21 Jun 2019 11:57:26 +0200 Subject: [PATCH 0930/2595] updates --- train.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 9c16bbf5..2deb55dc 100644 --- a/train.py +++ b/train.py @@ -253,6 +253,10 @@ def train( t = time.time() print(s) + # Report time + dt = (time.time() - t0) / 3600 + print('%g epochs completed in %.3f hours.' % (epoch - start_epoch + 1, dt)) + # Calculate mAP (always test final epoch, skip first 5 if opt.nosave) if not (opt.notest or (opt.nosave and epoch < 10)) or epoch == epochs - 1: with torch.no_grad(): @@ -292,8 +296,6 @@ def train( # Delete checkpoint del chkpt - dt = (time.time() - t0) / 3600 - print('%g epochs completed in %.3f hours.' % (epoch - start_epoch + 1, dt)) return results @@ -313,7 +315,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=8, help='batch size') parser.add_argument('--accumulate', type=int, default=8, help='number of batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco_64img.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco_1000img.data', help='coco.data file path') parser.add_argument('--single-scale', action='store_true', help='train at fixed size (no multi-scale)') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') From 5f6c2b3d1280f3b23021b11307e1ddec139a93b8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 21 Jun 2019 13:19:23 +0200 Subject: [PATCH 0931/2595] updates --- train.py | 4 ++-- utils/utils.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 2deb55dc..ace3a567 100644 --- a/train.py +++ b/train.py @@ -141,7 +141,7 @@ def train( # y.append(optimizer.param_groups[0]['lr']) # plt.plot(y, label='LambdaLR') # plt.xlabel('epoch') - # plt.xlabel('LR') + # plt.ylabel('LR') # plt.tight_layout() # plt.savefig('LR.png', dpi=300) @@ -315,7 +315,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=8, help='batch size') parser.add_argument('--accumulate', type=int, default=8, help='number of batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco_1000img.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--single-scale', action='store_true', help='train at fixed size (no multi-scale)') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') diff --git a/utils/utils.py b/utils/utils.py index 2905f5ec..c8f6bb54 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -12,7 +12,7 @@ from tqdm import tqdm from . import torch_utils -matplotlib.rc('font', **{'size': 12}) +matplotlib.rc('font', **{'size': 11}) # Set printoptions torch.set_printoptions(linewidth=1320, precision=5, profile='long') From 4f7fee45ff03d9e53a4b8e5b1c39e265a8ba68ea Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 21 Jun 2019 21:27:50 +0200 Subject: [PATCH 0932/2595] updates --- train.py | 2 +- utils/datasets.py | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/train.py b/train.py index ace3a567..666da626 100644 --- a/train.py +++ b/train.py @@ -315,7 +315,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=8, help='batch size') parser.add_argument('--accumulate', type=int, default=8, help='number of batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco_64img.data', help='coco.data file path') parser.add_argument('--single-scale', action='store_true', help='train at fixed size (no multi-scale)') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') diff --git a/utils/datasets.py b/utils/datasets.py index e0221c32..e28c6da5 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -266,10 +266,10 @@ class LoadImagesAndLabels(Dataset): # for training/testing h, w, _ = img.shape if self.rect: shape = self.batch_shapes[self.batch[index]] - img, ratio, padw, padh = letterbox(img, new_shape=shape, mode='rect') + img, ratiow, ratioh, padw, padh = letterbox(img, new_shape=shape, mode='rect') else: shape = self.img_size - img, ratio, padw, padh = letterbox(img, new_shape=shape, mode='square') + img, ratiow, ratioh, padw, padh = letterbox(img, new_shape=shape, mode='scaleFill') # Load labels labels = [] @@ -280,10 +280,10 @@ class LoadImagesAndLabels(Dataset): # for training/testing if x.size > 0: # Normalized xywh to pixel xyxy format labels = x.copy() - labels[:, 1] = ratio * w * (x[:, 1] - x[:, 3] / 2) + padw - labels[:, 2] = ratio * h * (x[:, 2] - x[:, 4] / 2) + padh - labels[:, 3] = ratio * w * (x[:, 1] + x[:, 3] / 2) + padw - labels[:, 4] = ratio * h * (x[:, 2] + x[:, 4] / 2) + padh + labels[:, 1] = ratiow * w * (x[:, 1] - x[:, 3] / 2) + padw + labels[:, 2] = ratioh * h * (x[:, 2] - x[:, 4] / 2) + padh + labels[:, 3] = ratiow * w * (x[:, 1] + x[:, 3] / 2) + padw + labels[:, 4] = ratioh * h * (x[:, 2] + x[:, 4] / 2) + padh # Augment image and labels if self.augment: @@ -340,6 +340,7 @@ def letterbox(img, new_shape=416, color=(127.5, 127.5, 127.5), mode='auto'): ratio = float(new_shape) / max(shape) else: ratio = max(new_shape) / max(shape) # ratio = new / old + ratiow, ratioh = ratio, ratio new_unpad = (int(round(shape[1] * ratio)), int(round(shape[0] * ratio))) # Compute padding https://github.com/ultralytics/yolov3/issues/232 @@ -352,12 +353,16 @@ def letterbox(img, new_shape=416, color=(127.5, 127.5, 127.5), mode='auto'): elif mode is 'rect': # square dw = (new_shape[1] - new_unpad[0]) / 2 # width padding dh = (new_shape[0] - new_unpad[1]) / 2 # height padding + elif mode is 'scaleFill': + dw, dh = 0.0, 0.0 + new_unpad = (new_shape, new_shape) + ratiow, ratioh = new_shape/shape[1], new_shape/shape[0] top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1)) left, right = int(round(dw - 0.1)), int(round(dw + 0.1)) img = cv2.resize(img, new_unpad, interpolation=cv2.INTER_LINEAR) # resized, no border img = cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color) # padded square - return img, ratio, dw, dh + return img, ratiow, ratioh, dw, dh def random_affine(img, targets=(), degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-2, 2), From 1a0385c77d70332daae9d70faaae965f7beba86d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 21 Jun 2019 23:11:24 +0200 Subject: [PATCH 0933/2595] updates --- utils/datasets.py | 2 +- utils/gcp.sh | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index e28c6da5..66c9feb7 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -269,7 +269,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing img, ratiow, ratioh, padw, padh = letterbox(img, new_shape=shape, mode='rect') else: shape = self.img_size - img, ratiow, ratioh, padw, padh = letterbox(img, new_shape=shape, mode='scaleFill') + img, ratiow, ratioh, padw, padh = letterbox(img, new_shape=shape, mode='square') # Load labels labels = [] diff --git a/utils/gcp.sh b/utils/gcp.sh index 34d7c1c0..9780baa4 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -95,6 +95,8 @@ python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/ba # Debug/Development -python3 train.py --data data/coco.data --img-size 416 --batch-size 8 --accumulate 8 +python3 train.py --data data/coco.data --img-size 320 --single-scale --batch-size 32 --accumulate 2 --epochs 1 +python3 test.py --weights weights/latest.pt --cfg cfg/yolov3-spp.cfg --img-size 320 + gsutil cp evolve.txt gs://ultralytics sudo shutdown From f501a0fc9dff39bb504b29b6e213ba11583287a8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 22 Jun 2019 15:50:04 +0200 Subject: [PATCH 0934/2595] updates --- train.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 666da626..b1f0489e 100644 --- a/train.py +++ b/train.py @@ -168,11 +168,12 @@ def train( collate_fn=dataset.collate_fn) # Mixed precision training https://github.com/NVIDIA/apex - # install help: https://github.com/NVIDIA/apex/issues/259 - mixed_precision = False - if mixed_precision: + try: from apex import amp model, optimizer = amp.initialize(model, optimizer, opt_level='O1') + mixed_precision = True + except: # not installed: install help: https://github.com/NVIDIA/apex/issues/259 + mixed_precision = False # Start training model.hyp = hyp # attach hyperparameters to model From ef3e1343e25eeea0bb230b89f17c5794321904a2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 22 Jun 2019 15:52:27 +0200 Subject: [PATCH 0935/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index b1f0489e..c8e9408b 100644 --- a/train.py +++ b/train.py @@ -363,14 +363,14 @@ if __name__ == '__main__': # Mutate hyperparameters old_hyp = hyp.copy() init_seeds(seed=int(time.time())) - s = [.4, .4, .4, .4, .4, .4, .4, .4, .4, .04, .4] # fractional sigmas + s = [.4, .4, .4, .4, .4, .4, .4, .4*0, .4*0, .04*0, .4*0] # fractional sigmas for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 1.1 # plt.hist(x.ravel(), 100) hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma # Clip to limits keys = ['lr0', 'iou_t', 'momentum', 'weight_decay'] - limits = [(1e-4, 1e-2), (0, 0.00), (0.70, 0.99), (0, 0.01)] + limits = [(1e-4, 1e-2), (0, 0.70), (0.70, 0.98), (0, 0.01)] for k, v in zip(keys, limits): hyp[k] = np.clip(hyp[k], v[0], v[1]) From 0f2e136c054c51681f57b2005505fa452ee9ac9d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 22 Jun 2019 19:21:05 +0200 Subject: [PATCH 0936/2595] updates --- utils/utils.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index c8f6bb54..d737c02d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -303,6 +303,10 @@ def compute_loss(p, targets, model, giou_loss=False): # predictions, targets, m lwh += (k * h['wh']) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss lcls += (k * h['cls']) * CE(pi[..., 5:], tcls[i]) # class_conf loss + # # Append to text file + # with open('targets.txt', 'a') as file: + # [file.write('%11.5g ' * 4 % tuple(x) + '\n') for x in torch.cat((txy[i], twh[i]), 1)] + lconf += (k * h['conf']) * BCE(pi0[..., 4], tconf) # obj_conf loss loss = lxy + lwh + lconf + lcls @@ -613,7 +617,7 @@ def plot_images(imgs, targets, fname='images.jpg'): plt.close() -def plot_test_txt(): # from test import *; plot_test() +def plot_test_txt(): # from utils.utils import *; plot_test() # Plot test.txt histograms x = np.loadtxt('test.txt', dtype=np.float32) box = xyxy2xywh(x[:, :4]) @@ -632,6 +636,22 @@ def plot_test_txt(): # from test import *; plot_test() plt.savefig('hist1d.jpg', dpi=300) +def plot_targets_txt(): # from utils.utils import *; plot_targets_txt() + # Plot test.txt histograms + x = np.loadtxt('targets.txt', dtype=np.float32) + x = x.T + + s = ['x targets','y targets','width targets','height targets'] + fig, ax = plt.subplots(2, 2, figsize=(8, 8)) + ax = ax.ravel() + for i in range(4): + ax[i].hist(x[i], bins=100, label='%.3g +/- %.3g' % (x[i].mean(), x[i].std())) + ax[i].legend() + ax[i].set_title(s[i]) + fig.tight_layout() + plt.savefig('targets.jpg', dpi=300) + + def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() # Plot training results files 'results*.txt' # import os; os.system('wget https://storage.googleapis.com/ultralytics/yolov3/results_v3.txt') From 57b616b8b11eaa18ec33b6ff5b4a8b611de5f01e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 23 Jun 2019 22:01:11 +0200 Subject: [PATCH 0937/2595] updates --- train.py | 35 +---------------------------------- utils/gcp.sh | 5 +++-- utils/utils.py | 2 +- 3 files changed, 5 insertions(+), 37 deletions(-) diff --git a/train.py b/train.py index c8e9408b..a3d45bc3 100644 --- a/train.py +++ b/train.py @@ -25,39 +25,6 @@ hyp = {'giou': .035, # giou loss gain 'weight_decay': 0.0005} # optimizer weight decay -# Hyperparameters: Original, Metrics: 0.172 0.304 0.156 0.205 (square) -# hyp = {'xy': 0.5, # xy loss gain -# 'wh': 0.0625, # wh loss gain -# 'cls': 0.0625, # cls loss gain -# 'conf': 4, # conf loss gain -# 'iou_t': 0.1, # iou target-anchor training threshold -# 'lr0': 0.001, # initial learning rate -# 'lrf': -5., # final learning rate = lr0 * (10 ** lrf) -# 'momentum': 0.9, # SGD momentum -# 'weight_decay': 0.0005} # optimizer weight decay - -# Hyperparameters: train.py --evolve --epochs 2 --img-size 320, Metrics: 0.225 0.251 0.145 0.218 (rect) -# hyp = {'xy': 0.4499, # xy loss gain -# 'wh': 0.05121, # wh loss gain -# 'cls': 0.04207, # cls loss gain -# 'conf': 2.853, # conf loss gain -# 'iou_t': 0.2487, # iou target-anchor training threshold -# 'lr0': 0.0005301, # initial learning rate -# 'lrf': -5., # final learning rate = lr0 * (10 ** lrf) -# 'momentum': 0.8823, # SGD momentum -# 'weight_decay': 0.0004149} # optimizer weight decay - -# Hyperparameters: train.py --evolve --epochs 2 --img-size 320, Metrics: 0.178 0.313 0.167 0.212 (square) -# hyp = {'xy': 0.4664, # xy loss gain -# 'wh': 0.08437, # wh loss gain -# 'cls': 0.05145, # cls loss gain -# 'conf': 4.244, # conf loss gain -# 'iou_t': 0.09121, # iou target-anchor training threshold -# 'lr0': 0.0004938, # initial learning rate -# 'lrf': -5., # final learning rate = lr0 * (10 ** lrf) -# 'momentum': 0.9025, # SGD momentum -# 'weight_decay': 0.0005417} # optimizer weight decay - def train( cfg, data_cfg, @@ -312,7 +279,7 @@ def print_mutation(hyp, results): if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument('--epochs', type=int, default=68, help='number of epochs') + parser.add_argument('--epochs', type=int, default=100, help='number of epochs') parser.add_argument('--batch-size', type=int, default=8, help='batch size') parser.add_argument('--accumulate', type=int, default=8, help='number of batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') diff --git a/utils/gcp.sh b/utils/gcp.sh index 9780baa4..469b8ed0 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -3,9 +3,10 @@ # New VM rm -rf yolov3 weights coco git clone https://github.com/ultralytics/yolov3 +git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 +git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex bash yolov3/weights/download_yolov3_weights.sh && cp -r weights yolov3 bash yolov3/data/get_coco_dataset.sh -git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 sudo shutdown # Re-clone @@ -95,7 +96,7 @@ python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/ba # Debug/Development -python3 train.py --data data/coco.data --img-size 320 --single-scale --batch-size 32 --accumulate 2 --epochs 1 +python3 train.py --data data/coco.data --img-size 320 --single-scale --batch-size 64 --accumulate 1 --epochs 1 --evolve python3 test.py --weights weights/latest.pt --cfg cfg/yolov3-spp.cfg --img-size 320 gsutil cp evolve.txt gs://ultralytics diff --git a/utils/utils.py b/utils/utils.py index d737c02d..4dfe6b5b 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -641,7 +641,7 @@ def plot_targets_txt(): # from utils.utils import *; plot_targets_txt() x = np.loadtxt('targets.txt', dtype=np.float32) x = x.T - s = ['x targets','y targets','width targets','height targets'] + s = ['x targets', 'y targets', 'width targets', 'height targets'] fig, ax = plt.subplots(2, 2, figsize=(8, 8)) ax = ax.ravel() for i in range(4): From 0005823d1f1cba065fee9e531a6bd26111ac0b2a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 24 Jun 2019 13:43:17 +0200 Subject: [PATCH 0938/2595] updates --- train.py | 7 +++---- utils/torch_utils.py | 2 ++ 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index a3d45bc3..e49c5f69 100644 --- a/train.py +++ b/train.py @@ -6,7 +6,7 @@ import torch.optim as optim import torch.optim.lr_scheduler as lr_scheduler from torch.utils.data import DataLoader -import test # Import test.py to get mAP after each epoch +import test # import test.py to get mAP after each epoch from models import * from utils.datasets import * from utils.utils import * @@ -41,7 +41,6 @@ def train( latest = weights + 'latest.pt' best = weights + 'best.pt' device = torch_utils.select_device() - torch.backends.cudnn.benchmark = True # possibly unsuitable for multiscale img_size_test = img_size # image size for testing multi_scale = not opt.single_scale @@ -145,7 +144,7 @@ def train( # Start training model.hyp = hyp # attach hyperparameters to model model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights - model_info(model) + model_info(model, report='summary') # 'full' or 'summary' nb = len(dataloader) maps = np.zeros(nc) # mAP per class results = (0, 0, 0, 0, 0) # P, R, mAP, F1, test_loss @@ -330,7 +329,7 @@ if __name__ == '__main__': # Mutate hyperparameters old_hyp = hyp.copy() init_seeds(seed=int(time.time())) - s = [.4, .4, .4, .4, .4, .4, .4, .4*0, .4*0, .04*0, .4*0] # fractional sigmas + s = [.4, .4, .4, .4, .4, .4, .4, .4 * 0, .4 * 0, .04 * 0, .4 * 0] # fractional sigmas for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 1.1 # plt.hist(x.ravel(), 100) hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma diff --git a/utils/torch_utils.py b/utils/torch_utils.py index fc8e2c43..b58be1cb 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -5,6 +5,8 @@ def init_seeds(seed=0): torch.manual_seed(seed) torch.cuda.manual_seed(seed) torch.cuda.manual_seed_all(seed) + torch.backends.cudnn.benchmark = True # set False for reproducible resuls + # torch.backends.cudnn.deterministic = True # https://pytorch.org/docs/stable/notes/randomness.html def select_device(force_cpu=False): From c56516ec11acd6342ad607735bdfa65681d6f0ea Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 24 Jun 2019 13:51:54 +0200 Subject: [PATCH 0939/2595] updates --- utils/torch_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index b58be1cb..90469ab0 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -5,7 +5,6 @@ def init_seeds(seed=0): torch.manual_seed(seed) torch.cuda.manual_seed(seed) torch.cuda.manual_seed_all(seed) - torch.backends.cudnn.benchmark = True # set False for reproducible resuls # torch.backends.cudnn.deterministic = True # https://pytorch.org/docs/stable/notes/randomness.html @@ -16,6 +15,7 @@ def select_device(force_cpu=False): if not cuda: print('Using CPU') if cuda: + torch.backends.cudnn.benchmark = True # set False for reproducible results c = 1024 ** 2 # bytes to MB ng = torch.cuda.device_count() x = [torch.cuda.get_device_properties(i) for i in range(ng)] From 1827b796478ec53e6761e950e1a65d7ce2d937a7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 24 Jun 2019 14:13:16 +0200 Subject: [PATCH 0940/2595] updates --- utils/datasets.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 66c9feb7..c6f343eb 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -74,7 +74,7 @@ class LoadImages: # for inference print('image %g/%g %s: ' % (self.count, self.nF, path), end='') # Padded resize - img, _, _, _ = letterbox(img0, new_shape=self.height) + img, *_ = letterbox(img0, new_shape=self.height) # Normalize RGB img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB @@ -116,7 +116,7 @@ class LoadWebcam: # for inference print('webcam %g: ' % self.count, end='') # Padded resize - img, _, _, _ = letterbox(img0, new_shape=self.height) + img, *_ = letterbox(img0, new_shape=self.height) # Normalize RGB img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB @@ -356,7 +356,7 @@ def letterbox(img, new_shape=416, color=(127.5, 127.5, 127.5), mode='auto'): elif mode is 'scaleFill': dw, dh = 0.0, 0.0 new_unpad = (new_shape, new_shape) - ratiow, ratioh = new_shape/shape[1], new_shape/shape[0] + ratiow, ratioh = new_shape / shape[1], new_shape / shape[0] top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1)) left, right = int(round(dw - 0.1)), int(round(dw + 0.1)) From a3fcf203856c1bc23666348d566826a420c95783 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 24 Jun 2019 14:19:20 +0200 Subject: [PATCH 0941/2595] updates --- detect.py | 1 + 1 file changed, 1 insertion(+) diff --git a/detect.py b/detect.py index 5defda55..192ef310 100644 --- a/detect.py +++ b/detect.py @@ -22,6 +22,7 @@ def detect( webcam=False ): device = torch_utils.select_device() + torch.backends.cudnn.benchmark = False # set False for reproducible results if os.path.exists(output): shutil.rmtree(output) # delete output folder os.makedirs(output) # make new output folder From d208f006a11126986d0f6c069200f429b7260886 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 24 Jun 2019 14:46:00 +0200 Subject: [PATCH 0942/2595] updates --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index e49c5f69..af0dfad3 100644 --- a/train.py +++ b/train.py @@ -292,7 +292,7 @@ if __name__ == '__main__': parser.add_argument('--rank', default=0, type=int, help='distributed training node rank') parser.add_argument('--world-size', default=1, type=int, help='number of nodes for distributed training') parser.add_argument('--backend', default='nccl', type=str, help='distributed backend') - parser.add_argument('--nosave', action='store_true', help='do not save training results') + parser.add_argument('--nosave', action='store_true', help='only save final checkpoint') parser.add_argument('--notest', action='store_true', help='only test final epoch') parser.add_argument('--giou', action='store_true', help='use GIoU loss instead of xy, wh loss') parser.add_argument('--evolve', action='store_true', help='run hyperparameter evolution') @@ -301,8 +301,8 @@ if __name__ == '__main__': print(opt) if opt.evolve: - opt.notest = True # save time by only testing final epoch - opt.nosave = True # do not save checkpoints + opt.notest = True # only test final epoch + opt.nosave = True # only save final checkpoint # Train results = train( From 6b222df35dac08409416079d703e2e197c200acd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 24 Jun 2019 15:56:20 +0200 Subject: [PATCH 0943/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index af0dfad3..32c69ee6 100644 --- a/train.py +++ b/train.py @@ -227,7 +227,7 @@ def train( # Calculate mAP (always test final epoch, skip first 5 if opt.nosave) if not (opt.notest or (opt.nosave and epoch < 10)) or epoch == epochs - 1: with torch.no_grad(): - results, maps = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size_test, model=model, + results, maps = test.test(cfg, data_cfg, batch_size=batch_size*2, img_size=img_size_test, model=model, conf_thres=0.1) # Write epoch results From 2244c72a1b8dbd7865f9e7cc0be1c4d8891826f6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 25 Jun 2019 11:45:38 +0200 Subject: [PATCH 0944/2595] updates --- utils/datasets.py | 72 +++++++++++++++++++++++++---------------------- 1 file changed, 39 insertions(+), 33 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index c6f343eb..7a11dde6 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -187,38 +187,41 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Preload labels (required for weighted CE training) self.imgs = [None] * n - self.labels = [np.zeros((0, 5))] * n - iter = tqdm(self.label_files, desc='Reading labels') if n > 10 else self.label_files - extract_bounding_boxes = False - for i, file in enumerate(iter): - try: - with open(file, 'r') as f: - l = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) - if l.shape[0]: - assert l.shape[1] == 5, '> 5 label columns: %s' % file - assert (l >= 0).all(), 'negative labels: %s' % file - assert (l[:, 1:] <= 1).all(), 'non-normalized or out of bounds coordinate labels: %s' % file - self.labels[i] = l + self.labels = [None] * n + preload_labels = False + if preload_labels: + self.labels = [np.zeros((0, 5))] * n + iter = tqdm(self.label_files, desc='Reading labels') if n > 10 else self.label_files + extract_bounding_boxes = False + for i, file in enumerate(iter): + try: + with open(file, 'r') as f: + l = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) + if l.shape[0]: + assert l.shape[1] == 5, '> 5 label columns: %s' % file + assert (l >= 0).all(), 'negative labels: %s' % file + assert (l[:, 1:] <= 1).all(), 'non-normalized or out of bounds coordinate labels: %s' % file + self.labels[i] = l - # Extract object detection boxes for a second stage classifier - if extract_bounding_boxes: - p = Path(self.img_files[i]) - img = cv2.imread(str(p)) - h, w, _ = img.shape - for j, x in enumerate(l): - f = '%s%sclassification%s%g_%g_%s' % (p.parent.parent, os.sep, os.sep, x[0], j, p.name) - if not os.path.exists(Path(f).parent): - os.makedirs(Path(f).parent) # make new output folder - box = xywh2xyxy(x[1:].reshape(-1, 4)).ravel() - box = np.clip(box, 0, 1) # clip boxes outside of image - result = cv2.imwrite(f, img[int(box[1] * h):int(box[3] * h), - int(box[0] * w):int(box[2] * w)]) - if not result: - print('stop') - - except: - pass # print('Warning: missing labels for %s' % self.img_files[i]) # missing label file - assert len(np.concatenate(self.labels, 0)) > 0, 'No labels found. Incorrect label paths provided.' + # Extract object detection boxes for a second stage classifier + if extract_bounding_boxes: + p = Path(self.img_files[i]) + img = cv2.imread(str(p)) + h, w, _ = img.shape + for j, x in enumerate(l): + f = '%s%sclassification%s%g_%g_%s' % ( + p.parent.parent, os.sep, os.sep, x[0], j, p.name) + if not os.path.exists(Path(f).parent): + os.makedirs(Path(f).parent) # make new output folder + box = xywh2xyxy(x[1:].reshape(-1, 4)).ravel() + box = np.clip(box, 0, 1) # clip boxes outside of image + result = cv2.imwrite(f, img[int(box[1] * h):int(box[3] * h), + int(box[0] * w):int(box[2] * w)]) + if not result: + print('stop') + except: + pass # print('Warning: missing labels for %s' % self.img_files[i]) # missing label file + assert len(np.concatenate(self.labels, 0)) > 0, 'No labels found. Incorrect label paths provided.' def __len__(self): return len(self.img_files) @@ -274,9 +277,12 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Load labels labels = [] if os.path.isfile(label_path): - # with open(label_path, 'r') as f: - # x = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) x = self.labels[index] + if x is None: # labels not preloaded + with open(label_path, 'r') as f: + x = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) + self.labels[index] = x # save for next time + if x.size > 0: # Normalized xywh to pixel xyxy format labels = x.copy() From 9a56d97059a730121d9502c5268d5503b961de8f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 25 Jun 2019 11:54:19 +0200 Subject: [PATCH 0945/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 32c69ee6..cc5d34f3 100644 --- a/train.py +++ b/train.py @@ -143,7 +143,7 @@ def train( # Start training model.hyp = hyp # attach hyperparameters to model - model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights + # model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights model_info(model, report='summary') # 'full' or 'summary' nb = len(dataloader) maps = np.zeros(nc) # mAP per class From e4cc83069077dae8e97a684d7c59f12017feff2b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 25 Jun 2019 12:21:27 +0200 Subject: [PATCH 0946/2595] updates --- train.py | 2 +- utils/gcp.sh | 4 +--- utils/utils.py | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index cc5d34f3..b0a5ec86 100644 --- a/train.py +++ b/train.py @@ -227,7 +227,7 @@ def train( # Calculate mAP (always test final epoch, skip first 5 if opt.nosave) if not (opt.notest or (opt.nosave and epoch < 10)) or epoch == epochs - 1: with torch.no_grad(): - results, maps = test.test(cfg, data_cfg, batch_size=batch_size*2, img_size=img_size_test, model=model, + results, maps = test.test(cfg, data_cfg, batch_size=batch_size * 2, img_size=img_size_test, model=model, conf_thres=0.1) # Write epoch results diff --git a/utils/gcp.sh b/utils/gcp.sh index 469b8ed0..7f985c8f 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -93,10 +93,8 @@ python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/ba - - # Debug/Development -python3 train.py --data data/coco.data --img-size 320 --single-scale --batch-size 64 --accumulate 1 --epochs 1 --evolve +python3 train.py --data data/coco.data --img-size 320 --single-scale --batch-size 64 --accumulate 1 --epochs 1 --evolve --giou python3 test.py --weights weights/latest.pt --cfg cfg/yolov3-spp.cfg --img-size 320 gsutil cp evolve.txt gs://ultralytics diff --git a/utils/utils.py b/utils/utils.py index 4dfe6b5b..8b9640ce 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -291,7 +291,7 @@ def compute_loss(p, targets, model, giou_loss=False): # predictions, targets, m # Compute losses if len(b): # number of targets pi = pi0[b, a, gj, gi] # predictions closest to anchors - tconf[b, a, gj, gi] = 1 # conf + tconf[b, a, gj, gi] = 1.0 # conf # pi[..., 2:4] = torch.sigmoid(pi[..., 2:4]) # wh power loss (uncomment) if giou_loss: From 1d76751e1ff9160c3a5034ecdab724ad96d4416f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 25 Jun 2019 12:37:24 +0200 Subject: [PATCH 0947/2595] updates --- train.py | 20 +++++++++++++++++--- utils/utils.py | 9 +++++++-- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index b0a5ec86..512377d3 100644 --- a/train.py +++ b/train.py @@ -11,19 +11,33 @@ from models import * from utils.datasets import * from utils.utils import * -# Hyperparameters: train.py --evolve --epochs 2 --img-size 320, Metrics: 0.204 0.302 0.175 0.234 (square smart) +# Hyperparameters: train.py --data data/coco.data --img-size 320 --single-scale --batch-size 64 --accumulate 1 --epochs 1 --evolve 0.087 0.281 0.109 0.121 hyp = {'giou': .035, # giou loss gain 'xy': 0.20, # xy loss gain 'wh': 0.10, # wh loss gain 'cls': 0.035, # cls loss gain + 'cls_pw': 79.0, # cls BCELoss positive_weight 'conf': 1.61, # conf loss gain - 'conf_bpw': 3.53, # conf BCELoss positive_weight + 'conf_pw': 3.53, # conf BCELoss positive_weight 'iou_t': 0.29, # iou target-anchor training threshold 'lr0': 0.001, # initial learning rate 'lrf': -4., # final learning rate = lr0 * (10 ** lrf) 'momentum': 0.90, # SGD momentum 'weight_decay': 0.0005} # optimizer weight decay +# hyp = {'giou': 1.0, # giou loss gain +# 'xy': 1.0, # xy loss gain +# 'wh': 1.0, # wh loss gain +# 'cls': 1.0, # cls loss gain +# 'cls_pw': 79.0, # cls BCELoss positive_weight +# 'conf': 1.0, # conf loss gain +# 'conf_pw': 6.0, # conf BCELoss positive_weight +# 'iou_t': 0.29, # iou target-anchor training threshold +# 'lr0': 0.001, # initial learning rate +# 'lrf': -4., # final learning rate = lr0 * (10 ** lrf) +# 'momentum': 0.90, # SGD momentum +# 'weight_decay': 0.0005} # optimizer weight decay + def train( cfg, @@ -329,7 +343,7 @@ if __name__ == '__main__': # Mutate hyperparameters old_hyp = hyp.copy() init_seeds(seed=int(time.time())) - s = [.4, .4, .4, .4, .4, .4, .4, .4 * 0, .4 * 0, .04 * 0, .4 * 0] # fractional sigmas + s = [.4, .4, .4, .4, .4, .4, .4, .4, .4 * 0, .4 * 0, .04 * 0, .4 * 0] # fractional sigmas for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 1.1 # plt.hist(x.ravel(), 100) hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma diff --git a/utils/utils.py b/utils/utils.py index 8b9640ce..4c0b179c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -279,7 +279,8 @@ def compute_loss(p, targets, model, giou_loss=False): # predictions, targets, m # Define criteria MSE = nn.MSELoss() CE = nn.CrossEntropyLoss() # (weight=model.class_weights) - BCE = nn.BCEWithLogitsLoss(pos_weight=ft([h['conf_bpw']])) + BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']])) + BCEconf = nn.BCEWithLogitsLoss(pos_weight=ft([h['conf_pw']])) # Compute losses bs = p[0].shape[0] # batch size @@ -301,13 +302,17 @@ def compute_loss(p, targets, model, giou_loss=False): # predictions, targets, m else: lxy += (k * h['xy']) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss lwh += (k * h['wh']) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss + + # tclsm = torch.zeros_like(pi[..., 5:]) + # tclsm[range(len(b)), tcls[i]] = 1.0 + # lcls += (k * h['cls']) * BCEcls(pi[..., 5:], tclsm) # class_conf loss lcls += (k * h['cls']) * CE(pi[..., 5:], tcls[i]) # class_conf loss # # Append to text file # with open('targets.txt', 'a') as file: # [file.write('%11.5g ' * 4 % tuple(x) + '\n') for x in torch.cat((txy[i], twh[i]), 1)] - lconf += (k * h['conf']) * BCE(pi0[..., 4], tconf) # obj_conf loss + lconf += (k * h['conf']) * BCEconf(pi0[..., 4], tconf) # obj_conf loss loss = lxy + lwh + lconf + lcls return loss, torch.cat((lxy, lwh, lconf, lcls, loss)).detach() From 45540c787fd5e19571756d131ac2fde8eb19ac34 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 25 Jun 2019 19:36:11 +0200 Subject: [PATCH 0948/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 512377d3..bb6f7763 100644 --- a/train.py +++ b/train.py @@ -241,7 +241,7 @@ def train( # Calculate mAP (always test final epoch, skip first 5 if opt.nosave) if not (opt.notest or (opt.nosave and epoch < 10)) or epoch == epochs - 1: with torch.no_grad(): - results, maps = test.test(cfg, data_cfg, batch_size=batch_size * 2, img_size=img_size_test, model=model, + results, maps = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size_test, model=model, conf_thres=0.1) # Write epoch results From 37fe87ccd9177a0406627d1ad836bf9af2a4e68e Mon Sep 17 00:00:00 2001 From: Yonghye Kwon Date: Wed, 26 Jun 2019 18:10:52 +0900 Subject: [PATCH 0949/2595] cleanup- delete a variable "yolo_layer_count" (#347) --- models.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/models.py b/models.py index c7bb0b80..347264fd 100755 --- a/models.py +++ b/models.py @@ -15,7 +15,7 @@ def create_modules(module_defs): hyperparams = module_defs.pop(0) output_filters = [int(hyperparams['channels'])] module_list = nn.ModuleList() - yolo_layer_count = 0 + for i, module_def in enumerate(module_defs): modules = nn.Sequential() @@ -66,9 +66,8 @@ def create_modules(module_defs): nc = int(module_def['classes']) # number of classes img_size = hyperparams['height'] # Define detection layer - yolo_layer = YOLOLayer(anchors, nc, img_size, yolo_layer_count, cfg=hyperparams['cfg']) + yolo_layer = YOLOLayer(anchors, nc, img_size, cfg=hyperparams['cfg']) modules.add_module('yolo_%d' % i, yolo_layer) - yolo_layer_count += 1 # Register module list and number of output filters module_list.append(modules) @@ -100,7 +99,7 @@ class Upsample(nn.Module): class YOLOLayer(nn.Module): - def __init__(self, anchors, nc, img_size, yolo_layer, cfg): + def __init__(self, anchors, nc, img_size, cfg): super(YOLOLayer, self).__init__() self.anchors = torch.Tensor(anchors) From cbfc5a00e57c38a316c7a9413d9579b3b3107d02 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 26 Jun 2019 11:27:36 +0200 Subject: [PATCH 0950/2595] updates --- models.py | 2 +- utils/parse_config.py | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/models.py b/models.py index c7bb0b80..171ed5f5 100755 --- a/models.py +++ b/models.py @@ -20,7 +20,7 @@ def create_modules(module_defs): modules = nn.Sequential() if module_def['type'] == 'convolutional': - bn = int(module_def['batch_normalize']) + bn = int(module_def['batch_normalize']) if 'batch_normalize' in module_def else 0 filters = int(module_def['filters']) kernel_size = int(module_def['size']) pad = (kernel_size - 1) // 2 if int(module_def['pad']) else 0 diff --git a/utils/parse_config.py b/utils/parse_config.py index e72d5a79..a8ce537c 100644 --- a/utils/parse_config.py +++ b/utils/parse_config.py @@ -9,8 +9,6 @@ def parse_model_cfg(path): if line.startswith('['): # This marks the start of a new block module_defs.append({}) module_defs[-1]['type'] = line[1:-1].rstrip() - if module_defs[-1]['type'] == 'convolutional': - module_defs[-1]['batch_normalize'] = 0 else: key, value = line.split("=") value = value.strip() From b202baa31c40db0a2836eea812d06798ae417821 Mon Sep 17 00:00:00 2001 From: Jeremy Hu Date: Thu, 27 Jun 2019 18:35:24 -0400 Subject: [PATCH 0951/2595] update parse_model_cfg() (#350) Removing the two lines for adding batch_normalize key to convolutional layers causes the parsing of the model to break when parsing it in models.py --- utils/parse_config.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/utils/parse_config.py b/utils/parse_config.py index a8ce537c..e72d5a79 100644 --- a/utils/parse_config.py +++ b/utils/parse_config.py @@ -9,6 +9,8 @@ def parse_model_cfg(path): if line.startswith('['): # This marks the start of a new block module_defs.append({}) module_defs[-1]['type'] = line[1:-1].rstrip() + if module_defs[-1]['type'] == 'convolutional': + module_defs[-1]['batch_normalize'] = 0 else: key, value = line.split("=") value = value.strip() From eeae43c41475f18f188087291d994503c32ff862 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 28 Jun 2019 00:38:52 +0200 Subject: [PATCH 0952/2595] updates --- models.py | 2 +- utils/parse_config.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 9d722505..347264fd 100755 --- a/models.py +++ b/models.py @@ -20,7 +20,7 @@ def create_modules(module_defs): modules = nn.Sequential() if module_def['type'] == 'convolutional': - bn = int(module_def['batch_normalize']) if 'batch_normalize' in module_def else 0 + bn = int(module_def['batch_normalize']) filters = int(module_def['filters']) kernel_size = int(module_def['size']) pad = (kernel_size - 1) // 2 if int(module_def['pad']) else 0 diff --git a/utils/parse_config.py b/utils/parse_config.py index e72d5a79..a25eca3f 100644 --- a/utils/parse_config.py +++ b/utils/parse_config.py @@ -10,7 +10,7 @@ def parse_model_cfg(path): module_defs.append({}) module_defs[-1]['type'] = line[1:-1].rstrip() if module_defs[-1]['type'] == 'convolutional': - module_defs[-1]['batch_normalize'] = 0 + module_defs[-1]['batch_normalize'] = 0 # pre-populate with zeros (may be overwritten later) else: key, value = line.split("=") value = value.strip() From 1990cd8013720f031a78369792faebf0589aa19e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 30 Jun 2019 00:38:32 +0200 Subject: [PATCH 0953/2595] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index dee86399..001668ee 100755 --- a/README.md +++ b/README.md @@ -211,7 +211,6 @@ Computing mAP: 100%|████████████████████ Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.331 Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.517 Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.618 - ``` # Citation From 388b66dcd0e3ed0ba2262d901017edbd49217ff7 Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Sun, 30 Jun 2019 15:24:34 +0200 Subject: [PATCH 0954/2595] updates --- train.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/train.py b/train.py index bb6f7763..9154e230 100644 --- a/train.py +++ b/train.py @@ -148,12 +148,13 @@ def train( collate_fn=dataset.collate_fn) # Mixed precision training https://github.com/NVIDIA/apex - try: - from apex import amp - model, optimizer = amp.initialize(model, optimizer, opt_level='O1') - mixed_precision = True - except: # not installed: install help: https://github.com/NVIDIA/apex/issues/259 - mixed_precision = False + mixed_precision = True + if mixed_precision: + try: + from apex import amp + model, optimizer = amp.initialize(model, optimizer, opt_level='O1') + except: # not installed: install help: https://github.com/NVIDIA/apex/issues/259 + mixed_precision = False # Start training model.hyp = hyp # attach hyperparameters to model @@ -343,10 +344,10 @@ if __name__ == '__main__': # Mutate hyperparameters old_hyp = hyp.copy() init_seeds(seed=int(time.time())) - s = [.4, .4, .4, .4, .4, .4, .4, .4, .4 * 0, .4 * 0, .04 * 0, .4 * 0] # fractional sigmas + s = [.2, .2, .2, .2, .2, .2, .2, .2, .2 * 0, .2 * 0, .05 * 0, .2 * 0] # fractional sigmas for i, k in enumerate(hyp.keys()): - x = (np.random.randn(1) * s[i] + 1) ** 1.1 # plt.hist(x.ravel(), 100) - hyp[k] = hyp[k] * float(x) # vary by about 30% 1sigma + x = (np.random.randn(1) * s[i] + 1) ** 3.0 # plt.hist(x.ravel(), 300) + hyp[k] *= float(x) # vary by about 30% 1sigma # Clip to limits keys = ['lr0', 'iou_t', 'momentum', 'weight_decay'] From db2674aa316a8aac7c6a96d450b1f1e63eef98d5 Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Sun, 30 Jun 2019 17:34:29 +0200 Subject: [PATCH 0955/2595] updates --- train.py | 49 +++++++++++++++++++++++++++---------------------- utils/utils.py | 12 ++++++------ 2 files changed, 33 insertions(+), 28 deletions(-) diff --git a/train.py b/train.py index 9154e230..790fc20e 100644 --- a/train.py +++ b/train.py @@ -11,27 +11,30 @@ from models import * from utils.datasets import * from utils.utils import * -# Hyperparameters: train.py --data data/coco.data --img-size 320 --single-scale --batch-size 64 --accumulate 1 --epochs 1 --evolve 0.087 0.281 0.109 0.121 -hyp = {'giou': .035, # giou loss gain - 'xy': 0.20, # xy loss gain - 'wh': 0.10, # wh loss gain - 'cls': 0.035, # cls loss gain - 'cls_pw': 79.0, # cls BCELoss positive_weight - 'conf': 1.61, # conf loss gain - 'conf_pw': 3.53, # conf BCELoss positive_weight - 'iou_t': 0.29, # iou target-anchor training threshold +# 0.149 0.241 0.126 0.156 6.85 1.008 1.421 0.07989 16.94 6.215 10.61 4.272 0.251 0.001 -4 0.9 0.0005 320 64-1 giou +hyp = {'giou': 1.008, # giou loss gain + 'xy': 1.421, # xy loss gain + 'wh': 0.07989, # wh loss gain + 'cls': 16.94, # cls loss gain + 'cls_pw': 6.215, # cls BCELoss positive_weight + 'conf': 10.61, # conf loss gain + 'conf_pw': 4.272, # conf BCELoss positive_weight + 'iou_t': 0.251, # iou target-anchor training threshold 'lr0': 0.001, # initial learning rate 'lrf': -4., # final learning rate = lr0 * (10 ** lrf) 'momentum': 0.90, # SGD momentum 'weight_decay': 0.0005} # optimizer weight decay -# hyp = {'giou': 1.0, # giou loss gain -# 'xy': 1.0, # xy loss gain -# 'wh': 1.0, # wh loss gain -# 'cls': 1.0, # cls loss gain + +# 0.0945 0.279 0.114 0.131 25 0.035 0.2 0.1 0.035 79 1.61 3.53 0.29 0.001 -4 0.9 0.0005 320 64-1 +# 0.112 0.265 0.111 0.144 12.6 0.035 0.2 0.1 0.035 79 1.61 3.53 0.29 0.001 -4 0.9 0.0005 320 32-2 +# hyp = {'giou': .035, # giou loss gain +# 'xy': 0.20, # xy loss gain +# 'wh': 0.10, # wh loss gain +# 'cls': 0.035, # cls loss gain # 'cls_pw': 79.0, # cls BCELoss positive_weight -# 'conf': 1.0, # conf loss gain -# 'conf_pw': 6.0, # conf BCELoss positive_weight +# 'conf': 1.61, # conf loss gain +# 'conf_pw': 3.53, # conf BCELoss positive_weight # 'iou_t': 0.29, # iou target-anchor training threshold # 'lr0': 0.001, # initial learning rate # 'lrf': -4., # final learning rate = lr0 * (10 ** lrf) @@ -167,7 +170,8 @@ def train( t, t0 = time.time(), time.time() for epoch in range(start_epoch, epochs): model.train() - print(('\n%8s%12s' + '%10s' * 7) % ('Epoch', 'Batch', 'xy', 'wh', 'conf', 'cls', 'total', 'targets', 'time')) + print(('\n%8s%12s' + '%10s' * 7) % + ('Epoch', 'Batch', 'xy', 'wh', 'conf', 'cls', 'total', 'targets', 'img_size')) # Update scheduler scheduler.step() @@ -184,15 +188,16 @@ def train( # dataset.indices = random.choices(range(dataset.n), weights=image_weights, k=dataset.n) # random weighted index mloss = torch.zeros(5).to(device) # mean losses - for i, (imgs, targets, _, _) in enumerate(dataloader): + pbar = tqdm(enumerate(dataloader), total=nb) # progress bar + for i, (imgs, targets, _, _) in pbar: imgs = imgs.to(device) targets = targets.to(device) # Multi-Scale training if multi_scale: - if (i + 1 + nb * epoch) / accumulate % 10 == 0: #  adjust (67% - 150%) every 10 batches + if (i + nb * epoch) / accumulate % 10 == 0: #  adjust (67% - 150%) every 10 batches img_size = random.choice(range(img_size_min, img_size_max + 1)) * 32 - print('img_size = %g' % img_size) + # print('img_size = %g' % img_size) scale_factor = img_size / max(imgs.shape[-2:]) imgs = F.interpolate(imgs, scale_factor=scale_factor, mode='bilinear', align_corners=False) @@ -229,11 +234,11 @@ def train( # Print batch results mloss = (mloss * i + loss_items) / (i + 1) # update mean losses + # s = ('%8s%12s' + '%10.3g' * 7) % ('%g/%g' % (epoch, epochs - 1), '%g/%g' % (i, nb - 1), *mloss, len(targets), time.time() - t) s = ('%8s%12s' + '%10.3g' * 7) % ( - '%g/%g' % (epoch, epochs - 1), - '%g/%g' % (i, nb - 1), *mloss, len(targets), time.time() - t) + '%g/%g' % (epoch, epochs - 1), '%g/%g' % (i, nb - 1), *mloss, len(targets), img_size) t = time.time() - print(s) + pbar.set_description(s) # print(s) # Report time dt = (time.time() - t0) / 3600 diff --git a/utils/utils.py b/utils/utils.py index 4c0b179c..7d756f1d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -284,7 +284,7 @@ def compute_loss(p, targets, model, giou_loss=False): # predictions, targets, m # Compute losses bs = p[0].shape[0] # batch size - k = bs # loss gain + k = bs / 64 # loss gain for i, pi0 in enumerate(p): # layer i predictions, i b, a, gj, gi = indices[i] # image, anchor, gridy, gridx tconf = torch.zeros_like(pi0[..., 0]) # conf @@ -303,12 +303,12 @@ def compute_loss(p, targets, model, giou_loss=False): # predictions, targets, m lxy += (k * h['xy']) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss lwh += (k * h['wh']) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss - # tclsm = torch.zeros_like(pi[..., 5:]) - # tclsm[range(len(b)), tcls[i]] = 1.0 - # lcls += (k * h['cls']) * BCEcls(pi[..., 5:], tclsm) # class_conf loss - lcls += (k * h['cls']) * CE(pi[..., 5:], tcls[i]) # class_conf loss + tclsm = torch.zeros_like(pi[..., 5:]) + tclsm[range(len(b)), tcls[i]] = 1.0 + lcls += (k * h['cls']) * BCEcls(pi[..., 5:], tclsm) # cls loss (BCE) + # lcls += (k * h['cls']) * CE(pi[..., 5:], tcls[i]) # cls loss (CE) - # # Append to text file + # Append targets to text file # with open('targets.txt', 'a') as file: # [file.write('%11.5g ' * 4 % tuple(x) + '\n') for x in torch.cat((txy[i], twh[i]), 1)] From 32f5ea955b6c279c1128ad2c523067b3200be9af Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Sun, 30 Jun 2019 17:47:10 +0200 Subject: [PATCH 0956/2595] updates --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 790fc20e..6ac50a54 100644 --- a/train.py +++ b/train.py @@ -47,9 +47,9 @@ def train( data_cfg, img_size=416, resume=False, - epochs=100, # 500200 batches at bs 4, 117263 images = 68 epochs - batch_size=16, - accumulate=4, # effective bs = 64 = batch_size * accumulate + epochs=100, # 500200 batches at bs 16, 117263 images = 273 epochs + batch_size=8, + accumulate=8, # effective bs = batch_size * accumulate = 8 * 8 = 64 freeze_backbone=False, transfer=False # Transfer learning (train only YOLO layers) ): From 63036deeb7bced06cd101bf6048e6a9a61b4d513 Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Mon, 1 Jul 2019 00:41:13 +0200 Subject: [PATCH 0957/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 6ac50a54..151163a2 100644 --- a/train.py +++ b/train.py @@ -351,7 +351,7 @@ if __name__ == '__main__': init_seeds(seed=int(time.time())) s = [.2, .2, .2, .2, .2, .2, .2, .2, .2 * 0, .2 * 0, .05 * 0, .2 * 0] # fractional sigmas for i, k in enumerate(hyp.keys()): - x = (np.random.randn(1) * s[i] + 1) ** 3.0 # plt.hist(x.ravel(), 300) + x = (np.random.randn(1) * s[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) hyp[k] *= float(x) # vary by about 30% 1sigma # Clip to limits From 09d065711a937a5d3f8a266514713a2a6612061f Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Mon, 1 Jul 2019 01:27:32 +0200 Subject: [PATCH 0958/2595] updates --- .gitignore | 1 + data/get_coco_dataset_gdrive.sh | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100755 data/get_coco_dataset_gdrive.sh diff --git a/.gitignore b/.gitignore index ae46812c..997fba97 100755 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,7 @@ data/* !data/trainvalno5k.shapes !data/5k.shapes !data/5k.txt +!data/*.sh pycocotools/* results*.txt diff --git a/data/get_coco_dataset_gdrive.sh b/data/get_coco_dataset_gdrive.sh new file mode 100755 index 00000000..fabaad2c --- /dev/null +++ b/data/get_coco_dataset_gdrive.sh @@ -0,0 +1,11 @@ +#!/bin/bash +# https://stackoverflow.com/questions/48133080/how-to-download-a-google-drive-url-via-curl-or-wget/48133859 + +# Download COCO dataset +fileid="1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO" +filename="coco_gdrive.zip" +curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" > /dev/null +curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${fileid}" -o ${filename} + +# Unzip +unzip -q coco_gdrive.zip \ No newline at end of file From 5e2b802f68a65f305773a30f8572e7bc0250d87d Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Mon, 1 Jul 2019 14:48:44 +0200 Subject: [PATCH 0959/2595] updates --- detect.py | 24 +++++++++++------------- test.py | 20 +++++++++----------- train.py | 49 +++++++++++++++++++------------------------------ 3 files changed, 39 insertions(+), 54 deletions(-) diff --git a/detect.py b/detect.py index 192ef310..f33d39f5 100644 --- a/detect.py +++ b/detect.py @@ -127,20 +127,18 @@ if __name__ == '__main__': parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.5, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') - parser.add_argument('--fourcc', type=str, default='mp4v', help='specifies the fourcc code for output video encoding (make sure ffmpeg supports specified fourcc codec)') - parser.add_argument('--output', type=str, default='output',help='specifies the output path for images and videos') + parser.add_argument('--fourcc', type=str, default='mp4v', help='fourcc output video codec (verify ffmpeg support)') + parser.add_argument('--output', type=str, default='output', help='specifies the output path for images and videos') opt = parser.parse_args() print(opt) with torch.no_grad(): - detect( - opt.cfg, - opt.data_cfg, - opt.weights, - images=opt.images, - img_size=opt.img_size, - conf_thres=opt.conf_thres, - nms_thres=opt.nms_thres, - fourcc=opt.fourcc, - output=opt.output - ) + detect(opt.cfg, + opt.data_cfg, + opt.weights, + images=opt.images, + img_size=opt.img_size, + conf_thres=opt.conf_thres, + nms_thres=opt.nms_thres, + fourcc=opt.fourcc, + output=opt.output) diff --git a/test.py b/test.py index eb902c5f..eeaadf6f 100644 --- a/test.py +++ b/test.py @@ -201,14 +201,12 @@ if __name__ == '__main__': print(opt) with torch.no_grad(): - mAP = test( - opt.cfg, - opt.data_cfg, - opt.weights, - opt.batch_size, - opt.img_size, - opt.iou_thres, - opt.conf_thres, - opt.nms_thres, - opt.save_json - ) + mAP = test(opt.cfg, + opt.data_cfg, + opt.weights, + opt.batch_size, + opt.img_size, + opt.iou_thres, + opt.conf_thres, + opt.nms_thres, + opt.save_json) diff --git a/train.py b/train.py index 151163a2..3aa24156 100644 --- a/train.py +++ b/train.py @@ -46,12 +46,10 @@ def train( cfg, data_cfg, img_size=416, - resume=False, epochs=100, # 500200 batches at bs 16, 117263 images = 273 epochs batch_size=8, accumulate=8, # effective bs = batch_size * accumulate = 8 * 8 = 64 freeze_backbone=False, - transfer=False # Transfer learning (train only YOLO layers) ): init_seeds() weights = 'weights' + os.sep @@ -81,8 +79,8 @@ def train( start_epoch = 0 best_loss = float('inf') nf = int(model.module_defs[model.yolo_layers[0] - 1]['filters']) # yolo layer size (i.e. 255) - if resume: # Load previously saved model - if transfer: # Transfer learning + if opt.resume or opt.transfer: # Load previously saved model + if opt.transfer: # Transfer learning chkpt = torch.load(weights + 'yolov3-spp.pt', map_location=device) model.load_state_dict({k: v for k, v in chkpt['model'].items() if v.numel() > 1 and v.shape[0] != 255}, strict=False) @@ -138,7 +136,11 @@ def train( # Initialize distributed training if torch.cuda.device_count() > 1: - dist.init_process_group(backend=opt.backend, init_method=opt.dist_url, world_size=opt.world_size, rank=opt.rank) + dist.init_process_group(backend='nccl', # 'distributed backend' + init_method='tcp://127.0.0.1:9999', # distributed training init method + world_size=1, # number of nodes for distributed training + rank=0) # distributed training node rank + model = torch.nn.parallel.DistributedDataParallel(model) # sampler = torch.utils.data.distributed.DistributedSampler(dataset) @@ -308,10 +310,6 @@ if __name__ == '__main__': parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') parser.add_argument('--num-workers', type=int, default=4, help='number of Pytorch DataLoader workers') - parser.add_argument('--dist-url', default='tcp://127.0.0.1:9999', type=str, help='distributed training init method') - parser.add_argument('--rank', default=0, type=int, help='distributed training node rank') - parser.add_argument('--world-size', default=1, type=int, help='number of nodes for distributed training') - parser.add_argument('--backend', default='nccl', type=str, help='distributed backend') parser.add_argument('--nosave', action='store_true', help='only save final checkpoint') parser.add_argument('--notest', action='store_true', help='only test final epoch') parser.add_argument('--giou', action='store_true', help='use GIoU loss instead of xy, wh loss') @@ -325,16 +323,12 @@ if __name__ == '__main__': opt.nosave = True # only save final checkpoint # Train - results = train( - opt.cfg, - opt.data_cfg, - img_size=opt.img_size, - resume=opt.resume or opt.transfer, - transfer=opt.transfer, - epochs=opt.epochs, - batch_size=opt.batch_size, - accumulate=opt.accumulate, - ) + results = train(opt.cfg, + opt.data_cfg, + img_size=opt.img_size, + epochs=opt.epochs, + batch_size=opt.batch_size, + accumulate=opt.accumulate) # Evolve hyperparameters (optional) if opt.evolve: @@ -361,16 +355,12 @@ if __name__ == '__main__': hyp[k] = np.clip(hyp[k], v[0], v[1]) # Determine mutation fitness - results = train( - opt.cfg, - opt.data_cfg, - img_size=opt.img_size, - resume=opt.resume or opt.transfer, - transfer=opt.transfer, - epochs=opt.epochs, - batch_size=opt.batch_size, - accumulate=opt.accumulate, - ) + results = train(opt.cfg, + opt.data_cfg, + img_size=opt.img_size, + epochs=opt.epochs, + batch_size=opt.batch_size, + accumulate=opt.accumulate) mutation_fitness = results[2] # Write mutation results @@ -378,7 +368,6 @@ if __name__ == '__main__': # Update hyperparameters if fitness improved if mutation_fitness > best_fitness: - # Fitness improved! print('Fitness improved!') best_fitness = mutation_fitness else: From b0d62e5204e32531860fe1fc5d77a8514c633e6b Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Mon, 1 Jul 2019 15:21:06 +0200 Subject: [PATCH 0960/2595] updates --- train.py | 18 +++++++++++++++++- utils/google_utils.py | 32 ++++++++++++++++++++++++++++++++ utils/utils.py | 1 + 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 utils/google_utils.py diff --git a/train.py b/train.py index 3aa24156..f4402680 100644 --- a/train.py +++ b/train.py @@ -10,6 +10,7 @@ import test # import test.py to get mAP after each epoch from models import * from utils.datasets import * from utils.utils import * +from utils.google_utils import * # 0.149 0.241 0.126 0.156 6.85 1.008 1.421 0.07989 16.94 6.215 10.61 4.272 0.251 0.001 -4 0.9 0.0005 320 64-1 giou hyp = {'giou': 1.008, # giou loss gain @@ -297,6 +298,21 @@ def print_mutation(hyp, results): with open('evolve.txt', 'a') as f: f.write(c + b + '\n') + cloud_evolve = False + if cloud_evolve: + # download cloud_evolve.txt + cloud_file = 'https://storage.googleapis.com/yolov4/cloud_evolve.txt' + local_file = cloud_file.replace('https://', '') + name = Path(local_file).name + download_blob(bucket_name='yolov4', source_blob_name=name, destination_file_name=local_file) + + # add result to local cloud_evolve.txt + with open(local_file, 'a') as f: + f.write(c + b + '\n') + + # upload cloud_evolve.txt + upload_blob(bucket_name='yolov4', source_file_name=local_file, destination_blob_name=name) + if __name__ == '__main__': parser = argparse.ArgumentParser() @@ -304,7 +320,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=8, help='batch size') parser.add_argument('--accumulate', type=int, default=8, help='number of batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco_64img.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco_16img.data', help='coco.data file path') parser.add_argument('--single-scale', action='store_true', help='train at fixed size (no multi-scale)') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') diff --git a/utils/google_utils.py b/utils/google_utils.py new file mode 100644 index 00000000..ee939443 --- /dev/null +++ b/utils/google_utils.py @@ -0,0 +1,32 @@ +# This file contains google utils: https://cloud.google.com/storage/docs/reference/libraries +# pip install --upgrade google-cloud-storage + +from google.cloud import storage + + +def upload_blob(bucket_name, source_file_name, destination_blob_name): + # Uploads a file to a bucket + # https://cloud.google.com/storage/docs/uploading-objects#storage-upload-object-python + + storage_client = storage.Client() + bucket = storage_client.get_bucket(bucket_name) + blob = bucket.blob(destination_blob_name) + + blob.upload_from_filename(source_file_name) + + print('File {} uploaded to {}.'.format( + source_file_name, + destination_blob_name)) + + +def download_blob(bucket_name, source_blob_name, destination_file_name): + # Uploads a blob from a bucket + storage_client = storage.Client() + bucket = storage_client.get_bucket(bucket_name) + blob = bucket.blob(source_blob_name) + + blob.download_to_filename(destination_file_name) + + print('Blob {} downloaded to {}.'.format( + source_blob_name, + destination_file_name)) diff --git a/utils/utils.py b/utils/utils.py index 7d756f1d..4f8fe604 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -11,6 +11,7 @@ from PIL import Image from tqdm import tqdm from . import torch_utils +from . import google_utils matplotlib.rc('font', **{'size': 11}) From c4409aa2edb27ed8ae221620a19014502bb27e96 Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Mon, 1 Jul 2019 15:22:22 +0200 Subject: [PATCH 0961/2595] updates --- train.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index f4402680..24f59a10 100644 --- a/train.py +++ b/train.py @@ -10,7 +10,6 @@ import test # import test.py to get mAP after each epoch from models import * from utils.datasets import * from utils.utils import * -from utils.google_utils import * # 0.149 0.241 0.126 0.156 6.85 1.008 1.421 0.07989 16.94 6.215 10.61 4.272 0.251 0.001 -4 0.9 0.0005 320 64-1 giou hyp = {'giou': 1.008, # giou loss gain @@ -304,14 +303,14 @@ def print_mutation(hyp, results): cloud_file = 'https://storage.googleapis.com/yolov4/cloud_evolve.txt' local_file = cloud_file.replace('https://', '') name = Path(local_file).name - download_blob(bucket_name='yolov4', source_blob_name=name, destination_file_name=local_file) + google_utils.download_blob(bucket_name='yolov4', source_blob_name=name, destination_file_name=local_file) # add result to local cloud_evolve.txt with open(local_file, 'a') as f: f.write(c + b + '\n') # upload cloud_evolve.txt - upload_blob(bucket_name='yolov4', source_file_name=local_file, destination_blob_name=name) + google_utils.upload_blob(bucket_name='yolov4', source_file_name=local_file, destination_blob_name=name) if __name__ == '__main__': From 05358accbbba5d6af2e10eb287ed46af28ed2f94 Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Mon, 1 Jul 2019 15:23:30 +0200 Subject: [PATCH 0962/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 24f59a10..b911bf27 100644 --- a/train.py +++ b/train.py @@ -319,7 +319,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=8, help='batch size') parser.add_argument('--accumulate', type=int, default=8, help='number of batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data-cfg', type=str, default='data/coco_16img.data', help='coco.data file path') + parser.add_argument('--data-cfg', type=str, default='data/coco_64img.data', help='coco.data file path') parser.add_argument('--single-scale', action='store_true', help='train at fixed size (no multi-scale)') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--resume', action='store_true', help='resume training flag') From cf51cf9c990e2ff6a3435c5910a7a291cb290138 Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Mon, 1 Jul 2019 17:14:42 +0200 Subject: [PATCH 0963/2595] updates --- train.py | 53 ++++++++++++++++++++--------------------------------- 1 file changed, 20 insertions(+), 33 deletions(-) diff --git a/train.py b/train.py index b911bf27..76969494 100644 --- a/train.py +++ b/train.py @@ -294,28 +294,20 @@ def print_mutation(hyp, results): b = '%11.4g' * len(hyp) % tuple(hyp.values()) # hyperparam values c = '%11.3g' * len(results) % results # results (P, R, mAP, F1, test_loss) print('\n%s\n%s\nEvolved fitness: %s\n' % (a, b, c)) - with open('evolve.txt', 'a') as f: - f.write(c + b + '\n') - cloud_evolve = False - if cloud_evolve: - # download cloud_evolve.txt - cloud_file = 'https://storage.googleapis.com/yolov4/cloud_evolve.txt' - local_file = cloud_file.replace('https://', '') - name = Path(local_file).name - google_utils.download_blob(bucket_name='yolov4', source_blob_name=name, destination_file_name=local_file) - - # add result to local cloud_evolve.txt - with open(local_file, 'a') as f: + if opt.cloud_evolve: + os.system('gsutil cp gs://yolov4/evolve.txt .') # download evolve.txt + with open('evolve.txt', 'a') as f: # append result to evolve.txt + f.write(c + b + '\n') + os.system('gsutil cp evolve.txt gs://yolov4') # upload evolve.txt + else: + with open('evolve.txt', 'a') as f: f.write(c + b + '\n') - - # upload cloud_evolve.txt - google_utils.upload_blob(bucket_name='yolov4', source_file_name=local_file, destination_blob_name=name) if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument('--epochs', type=int, default=100, help='number of epochs') + parser.add_argument('--epochs', type=int, default=1, help='number of epochs') parser.add_argument('--batch-size', type=int, default=8, help='batch size') parser.add_argument('--accumulate', type=int, default=8, help='number of batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') @@ -329,10 +321,12 @@ if __name__ == '__main__': parser.add_argument('--notest', action='store_true', help='only test final epoch') parser.add_argument('--giou', action='store_true', help='use GIoU loss instead of xy, wh loss') parser.add_argument('--evolve', action='store_true', help='run hyperparameter evolution') + parser.add_argument('--cloud_evolve', action='store_true', help='--evolve from a central source') parser.add_argument('--var', default=0, type=int, help='debug variable') opt = parser.parse_args() print(opt) + opt.evolve = opt.cloud_evolve or opt.evolve if opt.evolve: opt.notest = True # only test final epoch opt.nosave = True # only save final checkpoint @@ -347,16 +341,17 @@ if __name__ == '__main__': # Evolve hyperparameters (optional) if opt.evolve: - best_fitness = results[2] # use mAP for fitness - - # Write mutation results - print_mutation(hyp, results) - gen = 1000 # generations to evolve - for _ in range(gen): + print_mutation(hyp, results) # Write mutation results - # Mutate hyperparameters - old_hyp = hyp.copy() + for _ in range(gen): + # Get best hyperparamters + x = np.loadtxt('evolve.txt', ndmin=2) + x = x[x[:, 2].argmax()] # select best mAP for fitness (col 2) + for i, k in enumerate(hyp.keys()): + hyp[k] = x[i + 5] + + # Mutate init_seeds(seed=int(time.time())) s = [.2, .2, .2, .2, .2, .2, .2, .2, .2 * 0, .2 * 0, .05 * 0, .2 * 0] # fractional sigmas for i, k in enumerate(hyp.keys()): @@ -369,25 +364,17 @@ if __name__ == '__main__': for k, v in zip(keys, limits): hyp[k] = np.clip(hyp[k], v[0], v[1]) - # Determine mutation fitness + # Train mutation results = train(opt.cfg, opt.data_cfg, img_size=opt.img_size, epochs=opt.epochs, batch_size=opt.batch_size, accumulate=opt.accumulate) - mutation_fitness = results[2] # Write mutation results print_mutation(hyp, results) - # Update hyperparameters if fitness improved - if mutation_fitness > best_fitness: - print('Fitness improved!') - best_fitness = mutation_fitness - else: - hyp = old_hyp.copy() # reset hyp to - # # Plot results # import numpy as np # import matplotlib.pyplot as plt From f43ee6ef94a54570316cb09faa8ee2d33f7b57a6 Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Mon, 1 Jul 2019 17:17:29 +0200 Subject: [PATCH 0964/2595] updates --- train.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index 76969494..1b1e7182 100644 --- a/train.py +++ b/train.py @@ -307,7 +307,7 @@ def print_mutation(hyp, results): if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument('--epochs', type=int, default=1, help='number of epochs') + parser.add_argument('--epochs', type=int, default=100, help='number of epochs') parser.add_argument('--batch-size', type=int, default=8, help='batch size') parser.add_argument('--accumulate', type=int, default=8, help='number of batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') @@ -320,8 +320,8 @@ if __name__ == '__main__': parser.add_argument('--nosave', action='store_true', help='only save final checkpoint') parser.add_argument('--notest', action='store_true', help='only test final epoch') parser.add_argument('--giou', action='store_true', help='use GIoU loss instead of xy, wh loss') - parser.add_argument('--evolve', action='store_true', help='run hyperparameter evolution') - parser.add_argument('--cloud_evolve', action='store_true', help='--evolve from a central source') + parser.add_argument('--evolve', action='store_true', help='evolve hyperparameters') + parser.add_argument('--cloud_evolve', action='store_true', help='evolve hyperparameters from a cloud source') parser.add_argument('--var', default=0, type=int, help='debug variable') opt = parser.parse_args() print(opt) @@ -347,7 +347,7 @@ if __name__ == '__main__': for _ in range(gen): # Get best hyperparamters x = np.loadtxt('evolve.txt', ndmin=2) - x = x[x[:, 2].argmax()] # select best mAP for fitness (col 2) + x = x[x[:, 2].argmax()] # select best mAP as genetic fitness (col 2) for i, k in enumerate(hyp.keys()): hyp[k] = x[i + 5] @@ -356,7 +356,7 @@ if __name__ == '__main__': s = [.2, .2, .2, .2, .2, .2, .2, .2, .2 * 0, .2 * 0, .05 * 0, .2 * 0] # fractional sigmas for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) - hyp[k] *= float(x) # vary by about 30% 1sigma + hyp[k] *= float(x) # vary by 20% 1sigma # Clip to limits keys = ['lr0', 'iou_t', 'momentum', 'weight_decay'] From 1fd871abd8074435c4a9973be3cbb4d78139d12a Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Mon, 1 Jul 2019 17:44:42 +0200 Subject: [PATCH 0965/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 1b1e7182..06a061dd 100644 --- a/train.py +++ b/train.py @@ -321,7 +321,7 @@ if __name__ == '__main__': parser.add_argument('--notest', action='store_true', help='only test final epoch') parser.add_argument('--giou', action='store_true', help='use GIoU loss instead of xy, wh loss') parser.add_argument('--evolve', action='store_true', help='evolve hyperparameters') - parser.add_argument('--cloud_evolve', action='store_true', help='evolve hyperparameters from a cloud source') + parser.add_argument('--cloud-evolve', action='store_true', help='evolve hyperparameters from a cloud source') parser.add_argument('--var', default=0, type=int, help='debug variable') opt = parser.parse_args() print(opt) From ccf757b3ea41537bf90b73be0a86b556645906e2 Mon Sep 17 00:00:00 2001 From: Yonghye Kwon Date: Tue, 2 Jul 2019 19:24:18 +0900 Subject: [PATCH 0966/2595] changed the criteria for the best weight file (#356) * changed the criteria for the best weight file changed the criteria for the best weight file from loss to mAP I trained the model on my custom dataset. But I failed to get a good results when I load the weight file that has the lowest loss on test dataset. I thought that the loss used in YOLO is not proper criteria for detection performance. So I changed the criteria from loss to mAP. what do you think of this? * Update train.py --- train.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/train.py b/train.py index 06a061dd..1f1aad3a 100644 --- a/train.py +++ b/train.py @@ -77,7 +77,7 @@ def train( cutoff = -1 # backbone reaches to cutoff layer start_epoch = 0 - best_loss = float('inf') + best_map = 0. nf = int(model.module_defs[model.yolo_layers[0] - 1]['filters']) # yolo layer size (i.e. 255) if opt.resume or opt.transfer: # Load previously saved model if opt.transfer: # Transfer learning @@ -256,17 +256,17 @@ def train( with open('results.txt', 'a') as file: file.write(s + '%11.3g' * 5 % results + '\n') # P, R, mAP, F1, test_loss - # Update best loss - test_loss = results[4] - if test_loss < best_loss: - best_loss = test_loss + # Update best map + test_map = results[2] + if test_map > best_map: + best_map = test_map # Save training results save = (not opt.nosave) or (epoch == epochs - 1) if save: # Create checkpoint chkpt = {'epoch': epoch, - 'best_loss': best_loss, + 'best_map': best_map, 'model': model.module.state_dict() if type( model) is nn.parallel.DistributedDataParallel else model.state_dict(), 'optimizer': optimizer.state_dict()} From a8cf64af31034dfd408663f76e8af37288cb5f2c Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Tue, 2 Jul 2019 18:21:28 +0200 Subject: [PATCH 0967/2595] updates --- train.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/train.py b/train.py index 1f1aad3a..b318331c 100644 --- a/train.py +++ b/train.py @@ -77,7 +77,7 @@ def train( cutoff = -1 # backbone reaches to cutoff layer start_epoch = 0 - best_map = 0. + best_fitness = 0.0 nf = int(model.module_defs[model.yolo_layers[0] - 1]['filters']) # yolo layer size (i.e. 255) if opt.resume or opt.transfer: # Load previously saved model if opt.transfer: # Transfer learning @@ -94,7 +94,7 @@ def train( start_epoch = chkpt['epoch'] + 1 if chkpt['optimizer'] is not None: optimizer.load_state_dict(chkpt['optimizer']) - best_loss = chkpt['best_loss'] + best_fitness = chkpt['best_fitness'] del chkpt else: # Initialize model with backbone (optional) @@ -257,16 +257,16 @@ def train( file.write(s + '%11.3g' * 5 % results + '\n') # P, R, mAP, F1, test_loss # Update best map - test_map = results[2] - if test_map > best_map: - best_map = test_map + fitness = results[2] + if fitness > best_fitness: + best_fitness = fitness # Save training results save = (not opt.nosave) or (epoch == epochs - 1) if save: # Create checkpoint chkpt = {'epoch': epoch, - 'best_map': best_map, + 'best_fitness': best_fitness, 'model': model.module.state_dict() if type( model) is nn.parallel.DistributedDataParallel else model.state_dict(), 'optimizer': optimizer.state_dict()} @@ -275,7 +275,7 @@ def train( torch.save(chkpt, latest) # Save best checkpoint - if best_loss == test_loss: + if best_fitness == fitness: torch.save(chkpt, best) # Save backup every 10 epochs (optional) From 1d0a4a3ace94567172e2adbabfba0fa553a07f1a Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Wed, 3 Jul 2019 14:42:11 +0200 Subject: [PATCH 0968/2595] updates --- models.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/models.py b/models.py index 347264fd..6b71989a 100755 --- a/models.py +++ b/models.py @@ -15,6 +15,7 @@ def create_modules(module_defs): hyperparams = module_defs.pop(0) output_filters = [int(hyperparams['channels'])] module_list = nn.ModuleList() + yolo_index = -1 for i, module_def in enumerate(module_defs): modules = nn.Sequential() @@ -58,6 +59,7 @@ def create_modules(module_defs): modules.add_module('shortcut_%d' % i, EmptyLayer()) elif module_def['type'] == 'yolo': + yolo_index += 1 anchor_idxs = [int(x) for x in module_def['mask'].split(',')] # Extract anchors anchors = [float(x) for x in module_def['anchors'].split(',')] @@ -66,8 +68,7 @@ def create_modules(module_defs): nc = int(module_def['classes']) # number of classes img_size = hyperparams['height'] # Define detection layer - yolo_layer = YOLOLayer(anchors, nc, img_size, cfg=hyperparams['cfg']) - modules.add_module('yolo_%d' % i, yolo_layer) + modules.add_module('yolo_%d' % i, YOLOLayer(anchors, nc, img_size, yolo_index)) # Register module list and number of output filters module_list.append(modules) @@ -99,7 +100,7 @@ class Upsample(nn.Module): class YOLOLayer(nn.Module): - def __init__(self, anchors, nc, img_size, cfg): + def __init__(self, anchors, nc, img_size, yolo_index): super(YOLOLayer, self).__init__() self.anchors = torch.Tensor(anchors) @@ -109,7 +110,7 @@ class YOLOLayer(nn.Module): self.ny = 0 # initialize number of y gridpoints if ONNX_EXPORT: # grids must be computed in __init__ - stride = [32, 16, 8][yolo_layer] # stride of this layer + stride = [32, 16, 8][yolo_index] # stride of this layer nx = int(img_size[1] / stride) # number x grid points ny = int(img_size[0] / stride) # number y grid points create_grids(self, max(img_size), (nx, ny)) From ab141fcc1ff976fa9d1bd983e11fe43ba4628e2e Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Wed, 3 Jul 2019 15:37:04 +0200 Subject: [PATCH 0969/2595] updates --- models.py | 15 +-------------- train.py | 1 + 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/models.py b/models.py index 6b71989a..b1717d99 100755 --- a/models.py +++ b/models.py @@ -45,8 +45,7 @@ def create_modules(module_defs): modules.add_module('maxpool_%d' % i, maxpool) elif module_def['type'] == 'upsample': - # upsample = nn.Upsample(scale_factor=int(module_def['stride']), mode='nearest') # WARNING: deprecated - upsample = Upsample(scale_factor=int(module_def['stride'])) + upsample = nn.Upsample(scale_factor=int(module_def['stride']), mode='nearest') modules.add_module('upsample_%d' % i, upsample) elif module_def['type'] == 'route': @@ -87,18 +86,6 @@ class EmptyLayer(nn.Module): return x -class Upsample(nn.Module): - # Custom Upsample layer (nn.Upsample gives deprecated warning message) - - def __init__(self, scale_factor=1, mode='nearest'): - super(Upsample, self).__init__() - self.scale_factor = scale_factor - self.mode = mode - - def forward(self, x): - return F.interpolate(x, scale_factor=self.scale_factor, mode=self.mode) - - class YOLOLayer(nn.Module): def __init__(self, anchors, nc, img_size, yolo_index): super(YOLOLayer, self).__init__() diff --git a/train.py b/train.py index b318331c..b5dbd857 100644 --- a/train.py +++ b/train.py @@ -12,6 +12,7 @@ from utils.datasets import * from utils.utils import * # 0.149 0.241 0.126 0.156 6.85 1.008 1.421 0.07989 16.94 6.215 10.61 4.272 0.251 0.001 -4 0.9 0.0005 320 64-1 giou +# 0.111 0.27 0.132 0.131 3.96 1.276 0.3156 0.1425 21.21 6.224 11.59 8.83 0.376 0.001 -4 0.9 0.0005 hyp = {'giou': 1.008, # giou loss gain 'xy': 1.421, # xy loss gain 'wh': 0.07989, # wh loss gain From 1e62ee2152203b4175a982995389dbb1a74bb05a Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Wed, 3 Jul 2019 16:17:46 +0200 Subject: [PATCH 0970/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index b5dbd857..40e2381c 100644 --- a/train.py +++ b/train.py @@ -128,7 +128,7 @@ def train( # plt.savefig('LR.png', dpi=300) # Dataset - rectangular_training = False + rectangular_training = True dataset = LoadImagesAndLabels(train_path, img_size, batch_size, @@ -196,7 +196,7 @@ def train( imgs = imgs.to(device) targets = targets.to(device) - # Multi-Scale training + # Multi-Scale training TODO: short-side to 32-multiple https://github.com/ultralytics/yolov3/issues/358 if multi_scale: if (i + nb * epoch) / accumulate % 10 == 0: #  adjust (67% - 150%) every 10 batches img_size = random.choice(range(img_size_min, img_size_max + 1)) * 32 From 109991198c4cfd87902ef5e34f59b9a451a4b95c Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Wed, 3 Jul 2019 16:18:08 +0200 Subject: [PATCH 0971/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 40e2381c..ea00fc68 100644 --- a/train.py +++ b/train.py @@ -128,7 +128,7 @@ def train( # plt.savefig('LR.png', dpi=300) # Dataset - rectangular_training = True + rectangular_training = False dataset = LoadImagesAndLabels(train_path, img_size, batch_size, From 7a353a9c70b3fedf9e7936d21aab9c0e15d9c3a9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 4 Jul 2019 14:03:13 +0200 Subject: [PATCH 0972/2595] updates --- utils/datasets.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 7a11dde6..a91aae7c 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -13,12 +13,13 @@ from tqdm import tqdm from utils.utils import xyxy2xywh, xywh2xyxy +img_formats = ['.bmp', '.jpg', '.jpeg', '.png', '.tif'] +vid_formats = ['.mov', '.avi', '.mp4'] + class LoadImages: # for inference def __init__(self, path, img_size=416): self.height = img_size - img_formats = ['.jpg', '.jpeg', '.png', '.tif'] - vid_formats = ['.mov', '.avi', '.mp4'] files = [] if os.path.isdir(path): @@ -146,11 +147,11 @@ class LoadImagesAndLabels(Dataset): # for training/testing self.augment = augment self.image_weights = image_weights self.rect = False if image_weights else rect - self.label_files = [x.replace('images', 'labels'). - replace('.jpeg', '.txt'). - replace('.jpg', '.txt'). - replace('.bmp', '.txt'). - replace('.png', '.txt') for x in self.img_files] + + # Define labels + self.label_files = [x.replace('images', 'labels') for x in self.img_files] + for f in img_formats: + self.label_files = [x.replace(f, '.txt') for x in self.label_files] # Rectangular Training https://github.com/ultralytics/yolov3/issues/232 if self.rect: @@ -169,9 +170,9 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Sort by aspect ratio ar = s[:, 1] / s[:, 0] # aspect ratio i = ar.argsort() - ar = ar[i] self.img_files = [self.img_files[i] for i in i] self.label_files = [self.label_files[i] for i in i] + ar = ar[i] # Set training image shapes shapes = [[1, 1]] * nb From 1283a1e7e52874827213bda19b54792dea147fe4 Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Thu, 4 Jul 2019 20:43:20 +0200 Subject: [PATCH 0973/2595] updates --- utils/datasets.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 7a11dde6..022f9f25 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -366,7 +366,7 @@ def letterbox(img, new_shape=416, color=(127.5, 127.5, 127.5), mode='auto'): top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1)) left, right = int(round(dw - 0.1)), int(round(dw + 0.1)) - img = cv2.resize(img, new_unpad, interpolation=cv2.INTER_LINEAR) # resized, no border + img = cv2.resize(img, new_unpad, interpolation=cv2.INTER_AREA) # resized, no border img = cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color) # padded square return img, ratiow, ratioh, dw, dh @@ -400,7 +400,7 @@ def random_affine(img, targets=(), degrees=(-10, 10), translate=(.1, .1), scale= S[1, 0] = math.tan((random.random() * (shear[1] - shear[0]) + shear[0]) * math.pi / 180) # y shear (deg) M = S @ T @ R # Combined rotation matrix. ORDER IS IMPORTANT HERE!! - imw = cv2.warpAffine(img, M[:2], dsize=(width, height), flags=cv2.INTER_LINEAR, + imw = cv2.warpAffine(img, M[:2], dsize=(width, height), flags=cv2.INTER_AREA, borderValue=borderValue) # BGR order borderValue # Return warped points also From d0eace6cecec3508ec4260cd9efa15c5adffe549 Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Thu, 4 Jul 2019 21:34:33 +0200 Subject: [PATCH 0974/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index ea00fc68..0b66205f 100644 --- a/train.py +++ b/train.py @@ -14,8 +14,8 @@ from utils.utils import * # 0.149 0.241 0.126 0.156 6.85 1.008 1.421 0.07989 16.94 6.215 10.61 4.272 0.251 0.001 -4 0.9 0.0005 320 64-1 giou # 0.111 0.27 0.132 0.131 3.96 1.276 0.3156 0.1425 21.21 6.224 11.59 8.83 0.376 0.001 -4 0.9 0.0005 hyp = {'giou': 1.008, # giou loss gain - 'xy': 1.421, # xy loss gain - 'wh': 0.07989, # wh loss gain + 'xy': 4.062, # xy loss gain + 'wh': 0.1845, # wh loss gain 'cls': 16.94, # cls loss gain 'cls_pw': 6.215, # cls BCELoss positive_weight 'conf': 10.61, # conf loss gain From abf59f156538761bdb41dda43b034f94efdc23b1 Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Thu, 4 Jul 2019 22:10:46 +0200 Subject: [PATCH 0975/2595] updates --- train.py | 10 +++++----- utils/utils.py | 16 ++++++++-------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/train.py b/train.py index 0b66205f..13cc0d47 100644 --- a/train.py +++ b/train.py @@ -18,8 +18,8 @@ hyp = {'giou': 1.008, # giou loss gain 'wh': 0.1845, # wh loss gain 'cls': 16.94, # cls loss gain 'cls_pw': 6.215, # cls BCELoss positive_weight - 'conf': 10.61, # conf loss gain - 'conf_pw': 4.272, # conf BCELoss positive_weight + 'obj': 10.61, # obj loss gain + 'obj_pw': 4.272, # obj BCELoss positive_weight 'iou_t': 0.251, # iou target-anchor training threshold 'lr0': 0.001, # initial learning rate 'lrf': -4., # final learning rate = lr0 * (10 ** lrf) @@ -34,8 +34,8 @@ hyp = {'giou': 1.008, # giou loss gain # 'wh': 0.10, # wh loss gain # 'cls': 0.035, # cls loss gain # 'cls_pw': 79.0, # cls BCELoss positive_weight -# 'conf': 1.61, # conf loss gain -# 'conf_pw': 3.53, # conf BCELoss positive_weight +# 'obj': 1.61, # obj loss gain +# 'obj_pw': 3.53, # obj BCELoss positive_weight # 'iou_t': 0.29, # iou target-anchor training threshold # 'lr0': 0.001, # initial learning rate # 'lrf': -4., # final learning rate = lr0 * (10 ** lrf) @@ -174,7 +174,7 @@ def train( for epoch in range(start_epoch, epochs): model.train() print(('\n%8s%12s' + '%10s' * 7) % - ('Epoch', 'Batch', 'xy', 'wh', 'conf', 'cls', 'total', 'targets', 'img_size')) + ('Epoch', 'Batch', 'xy', 'wh', 'obj', 'cls', 'total', 'targets', 'img_size')) # Update scheduler scheduler.step() diff --git a/utils/utils.py b/utils/utils.py index 4f8fe604..57d16b36 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -273,27 +273,27 @@ def wh_iou(box1, box2): def compute_loss(p, targets, model, giou_loss=False): # predictions, targets, model ft = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor - lxy, lwh, lcls, lconf = ft([0]), ft([0]), ft([0]), ft([0]) + lxy, lwh, lcls, lobj = ft([0]), ft([0]), ft([0]), ft([0]) txy, twh, tcls, tbox, indices, anchor_vec = build_targets(model, targets) h = model.hyp # hyperparameters # Define criteria MSE = nn.MSELoss() - CE = nn.CrossEntropyLoss() # (weight=model.class_weights) BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']])) - BCEconf = nn.BCEWithLogitsLoss(pos_weight=ft([h['conf_pw']])) + BCEobj = nn.BCEWithLogitsLoss(pos_weight=ft([h['obj_pw']])) + # CE = nn.CrossEntropyLoss() # (weight=model.class_weights) # Compute losses bs = p[0].shape[0] # batch size k = bs / 64 # loss gain for i, pi0 in enumerate(p): # layer i predictions, i b, a, gj, gi = indices[i] # image, anchor, gridy, gridx - tconf = torch.zeros_like(pi0[..., 0]) # conf + tobj = torch.zeros_like(pi0[..., 0]) # target obj # Compute losses if len(b): # number of targets pi = pi0[b, a, gj, gi] # predictions closest to anchors - tconf[b, a, gj, gi] = 1.0 # conf + tobj[b, a, gj, gi] = 1.0 # obj # pi[..., 2:4] = torch.sigmoid(pi[..., 2:4]) # wh power loss (uncomment) if giou_loss: @@ -313,10 +313,10 @@ def compute_loss(p, targets, model, giou_loss=False): # predictions, targets, m # with open('targets.txt', 'a') as file: # [file.write('%11.5g ' * 4 % tuple(x) + '\n') for x in torch.cat((txy[i], twh[i]), 1)] - lconf += (k * h['conf']) * BCEconf(pi0[..., 4], tconf) # obj_conf loss - loss = lxy + lwh + lconf + lcls + lobj += (k * h['obj']) * BCEobj(pi0[..., 4], tobj) # obj loss + loss = lxy + lwh + lobj + lcls - return loss, torch.cat((lxy, lwh, lconf, lcls, loss)).detach() + return loss, torch.cat((lxy, lwh, lobj, lcls, loss)).detach() def build_targets(model, targets): From 7246dd855cf7b2aa47eded191a931e12b6e988c8 Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Thu, 4 Jul 2019 22:50:03 +0200 Subject: [PATCH 0976/2595] updates --- utils/utils.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 57d16b36..40ab7c68 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -332,16 +332,25 @@ def build_targets(model, targets): # iou of targets-anchors t, a = targets, [] - gwh = targets[:, 4:6] * layer.ng + gwh = t[:, 4:6] * layer.ng if nt: - iou = [wh_iou(x, gwh) for x in layer.anchor_vec] - iou, a = torch.stack(iou, 0).max(0) # best iou and anchor + iou = torch.stack([wh_iou(x, gwh) for x in layer.anchor_vec], 0) + + use_best = True + if use_best: + iou, a = iou.max(0) # best iou and anchor + else: + na = len(layer.anchor_vec) # number of anchors + a = torch.arange(na).view((-1, 1)).repeat([1, nt]).view(-1) + t = targets.repeat([na, 1]) + gwh = gwh.repeat([na, 1]) + iou = iou.view(-1) # use all ious # reject below threshold ious (OPTIONAL, increases P, lowers R) reject = True if reject: j = iou > iou_thres - t, a, gwh = targets[j], a[j], gwh[j] + t, a, gwh = t[j], a[j], gwh[j] # Indices b, c = t[:, :2].long().t() # target image, class From b649a95c9a1d334c5ea7b9c86ed2f2cd60a4de1d Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Fri, 5 Jul 2019 00:36:37 +0200 Subject: [PATCH 0977/2595] GIoU to default --- test.py | 3 +-- train.py | 4 ++-- utils/utils.py | 10 +++++----- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/test.py b/test.py index eeaadf6f..f6408699 100644 --- a/test.py +++ b/test.py @@ -71,8 +71,7 @@ def test( # Compute loss if hasattr(model, 'hyp'): # if model has loss hyperparameters - loss_i, _ = compute_loss(train_out, targets, model) - loss += loss_i.item() + loss += compute_loss(train_out, targets, model)[0].item() # Run NMS output = non_max_suppression(inf_out, conf_thres=conf_thres, nms_thres=nms_thres) diff --git a/train.py b/train.py index 13cc0d47..2db13eec 100644 --- a/train.py +++ b/train.py @@ -218,7 +218,7 @@ def train( pred = model(imgs) # Compute loss - loss, loss_items = compute_loss(pred, targets, model, giou_loss=opt.giou) + loss, loss_items = compute_loss(pred, targets, model, giou_loss=not opt.xywh) if torch.isnan(loss): print('WARNING: nan loss detected, ending training') return results @@ -320,7 +320,7 @@ if __name__ == '__main__': parser.add_argument('--num-workers', type=int, default=4, help='number of Pytorch DataLoader workers') parser.add_argument('--nosave', action='store_true', help='only save final checkpoint') parser.add_argument('--notest', action='store_true', help='only test final epoch') - parser.add_argument('--giou', action='store_true', help='use GIoU loss instead of xy, wh loss') + parser.add_argument('--xywh', action='store_true', help='use xywh loss instead of GIoU loss') parser.add_argument('--evolve', action='store_true', help='evolve hyperparameters') parser.add_argument('--cloud-evolve', action='store_true', help='evolve hyperparameters from a cloud source') parser.add_argument('--var', default=0, type=int, help='debug variable') diff --git a/utils/utils.py b/utils/utils.py index 40ab7c68..767fd21e 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -271,7 +271,7 @@ def wh_iou(box1, box2): return inter_area / union_area # iou -def compute_loss(p, targets, model, giou_loss=False): # predictions, targets, model +def compute_loss(p, targets, model, giou_loss=True): # predictions, targets, model ft = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor lxy, lwh, lcls, lobj = ft([0]), ft([0]), ft([0]), ft([0]) txy, twh, tcls, tbox, indices, anchor_vec = build_targets(model, targets) @@ -336,17 +336,17 @@ def build_targets(model, targets): if nt: iou = torch.stack([wh_iou(x, gwh) for x in layer.anchor_vec], 0) - use_best = True - if use_best: + use_best_anchor = False + if use_best_anchor: iou, a = iou.max(0) # best iou and anchor - else: + else: # use all anchors na = len(layer.anchor_vec) # number of anchors a = torch.arange(na).view((-1, 1)).repeat([1, nt]).view(-1) t = targets.repeat([na, 1]) gwh = gwh.repeat([na, 1]) iou = iou.view(-1) # use all ious - # reject below threshold ious (OPTIONAL, increases P, lowers R) + # reject anchors below iou_thres (OPTIONAL, increases P, lowers R) reject = True if reject: j = iou > iou_thres From 429bd3b8a985b0889dca7496b71e713f26626b47 Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Fri, 5 Jul 2019 11:41:43 +0200 Subject: [PATCH 0978/2595] GIoU to default --- train.py | 37 ++++++++++++------------------------- 1 file changed, 12 insertions(+), 25 deletions(-) diff --git a/train.py b/train.py index 2db13eec..33d6bb9f 100644 --- a/train.py +++ b/train.py @@ -11,38 +11,24 @@ from models import * from utils.datasets import * from utils.utils import * -# 0.149 0.241 0.126 0.156 6.85 1.008 1.421 0.07989 16.94 6.215 10.61 4.272 0.251 0.001 -4 0.9 0.0005 320 64-1 giou -# 0.111 0.27 0.132 0.131 3.96 1.276 0.3156 0.1425 21.21 6.224 11.59 8.83 0.376 0.001 -4 0.9 0.0005 -hyp = {'giou': 1.008, # giou loss gain +# 0.0945 0.279 0.114 0.131 25 0.035 0.2 0.1 0.035 79 1.61 3.53 0.29 0.001 -4 0.9 0.0005 320 +# 0.149 0.241 0.126 0.156 6.85 1.008 1.421 0.07989 16.94 6.215 10.61 4.272 0.251 0.001 -4 0.9 0.0005 320 giou +# 0.111 0.27 0.132 0.131 3.96 1.276 0.3156 0.1425 21.21 6.224 11.59 8.83 0.376 0.001 -4 0.9 0.0005 320 +# 0.114 0.287 0.144 0.132 7.1 1.666 4.046 0.1364 42.6 3.34 12.61 8.338 0.2705 0.001 -4 0.9 0.0005 320 giou + best_anchor False +hyp = {'giou': 1.666, # giou loss gain 'xy': 4.062, # xy loss gain 'wh': 0.1845, # wh loss gain - 'cls': 16.94, # cls loss gain - 'cls_pw': 6.215, # cls BCELoss positive_weight - 'obj': 10.61, # obj loss gain - 'obj_pw': 4.272, # obj BCELoss positive_weight - 'iou_t': 0.251, # iou target-anchor training threshold + 'cls': 42.6, # cls loss gain + 'cls_pw': 3.34, # cls BCELoss positive_weight + 'obj': 12.61, # obj loss gain + 'obj_pw': 8.338, # obj BCELoss positive_weight + 'iou_t': 0.2705, # iou target-anchor training threshold 'lr0': 0.001, # initial learning rate 'lrf': -4., # final learning rate = lr0 * (10 ** lrf) 'momentum': 0.90, # SGD momentum 'weight_decay': 0.0005} # optimizer weight decay -# 0.0945 0.279 0.114 0.131 25 0.035 0.2 0.1 0.035 79 1.61 3.53 0.29 0.001 -4 0.9 0.0005 320 64-1 -# 0.112 0.265 0.111 0.144 12.6 0.035 0.2 0.1 0.035 79 1.61 3.53 0.29 0.001 -4 0.9 0.0005 320 32-2 -# hyp = {'giou': .035, # giou loss gain -# 'xy': 0.20, # xy loss gain -# 'wh': 0.10, # wh loss gain -# 'cls': 0.035, # cls loss gain -# 'cls_pw': 79.0, # cls BCELoss positive_weight -# 'obj': 1.61, # obj loss gain -# 'obj_pw': 3.53, # obj BCELoss positive_weight -# 'iou_t': 0.29, # iou target-anchor training threshold -# 'lr0': 0.001, # initial learning rate -# 'lrf': -4., # final learning rate = lr0 * (10 ** lrf) -# 'momentum': 0.90, # SGD momentum -# 'weight_decay': 0.0005} # optimizer weight decay - - def train( cfg, data_cfg, @@ -348,7 +334,8 @@ if __name__ == '__main__': for _ in range(gen): # Get best hyperparamters x = np.loadtxt('evolve.txt', ndmin=2) - x = x[x[:, 2].argmax()] # select best mAP as genetic fitness (col 2) + fitness = x[:, 2] * 0.9 + x[:, 3] * 0.1 # fitness as weighted combination of mAP and F1 + x = x[fitness.argmax()] # select best fitness hyps for i, k in enumerate(hyp.keys()): hyp[k] = x[i + 5] From 32a52dfb02873b12bca6da71cf18bfe172bfa7d1 Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Fri, 5 Jul 2019 12:33:37 +0200 Subject: [PATCH 0979/2595] GIoU to default --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 33d6bb9f..48dc60a0 100644 --- a/train.py +++ b/train.py @@ -284,7 +284,7 @@ def print_mutation(hyp, results): if opt.cloud_evolve: os.system('gsutil cp gs://yolov4/evolve.txt .') # download evolve.txt - with open('evolve.txt', 'a') as f: # append result to evolve.txt + with open('evolve.txt', 'a') as f: # append result f.write(c + b + '\n') os.system('gsutil cp evolve.txt gs://yolov4') # upload evolve.txt else: @@ -332,7 +332,7 @@ if __name__ == '__main__': print_mutation(hyp, results) # Write mutation results for _ in range(gen): - # Get best hyperparamters + # Get best hyperparameters x = np.loadtxt('evolve.txt', ndmin=2) fitness = x[:, 2] * 0.9 + x[:, 3] * 0.1 # fitness as weighted combination of mAP and F1 x = x[fitness.argmax()] # select best fitness hyps From b0aadff56f648f80c8436251825e239f08a6dca8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 5 Jul 2019 12:34:17 +0200 Subject: [PATCH 0980/2595] Update requirements.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 28380bd1..dd6e5dd9 100755 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ # conda install numpy opencv matplotlib tqdm pillow && conda install pytorch torchvision -c pytorch numpy opencv-python -torch >= 1.0.0 +torch >= 1.1.0 matplotlib pycocotools tqdm From 70f6379601186e30298d5c1545b3de5e6ea307c4 Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Sun, 7 Jul 2019 23:24:34 +0200 Subject: [PATCH 0981/2595] GIoU to default --- test.py | 2 +- train.py | 4 ++-- utils/utils.py | 5 ++++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/test.py b/test.py index f6408699..e2282c86 100644 --- a/test.py +++ b/test.py @@ -64,7 +64,7 @@ def test( # Plot images with bounding boxes if batch_i == 0 and not os.path.exists('test_batch0.jpg'): - plot_images(imgs=imgs, targets=targets, fname='test_batch0.jpg') + plot_images(imgs=imgs, targets=targets, paths=paths, fname='test_batch0.jpg') # Run model inf_out, train_out = model(imgs) # inference and training outputs diff --git a/train.py b/train.py index 48dc60a0..685b6317 100644 --- a/train.py +++ b/train.py @@ -178,7 +178,7 @@ def train( mloss = torch.zeros(5).to(device) # mean losses pbar = tqdm(enumerate(dataloader), total=nb) # progress bar - for i, (imgs, targets, _, _) in pbar: + for i, (imgs, targets, paths, _) in pbar: imgs = imgs.to(device) targets = targets.to(device) @@ -192,7 +192,7 @@ def train( # Plot images with bounding boxes if epoch == 0 and i == 0: - plot_images(imgs=imgs, targets=targets, fname='train_batch%g.jpg' % i) + plot_images(imgs=imgs, targets=targets, paths=paths, fname='train_batch%g.jpg' % i) # SGD burn-in if epoch == 0 and i <= n_burnin: diff --git a/utils/utils.py b/utils/utils.py index 767fd21e..767b33e4 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -9,6 +9,7 @@ import torch import torch.nn as nn from PIL import Image from tqdm import tqdm +from pathlib import Path from . import torch_utils from . import google_utils @@ -611,7 +612,7 @@ def plot_wh_methods(): # from utils.utils import *; plot_wh_methods() fig.savefig('comparison.png', dpi=300) -def plot_images(imgs, targets, fname='images.jpg'): +def plot_images(imgs, targets, paths=None, fname='images.jpg'): # Plots training images overlaid with targets imgs = imgs.cpu().numpy() targets = targets.cpu().numpy() @@ -627,6 +628,8 @@ def plot_images(imgs, targets, fname='images.jpg'): plt.subplot(ns, ns, i + 1).imshow(imgs[i].transpose(1, 2, 0)) plt.plot(boxes[[0, 2, 2, 0, 0]], boxes[[1, 1, 3, 3, 1]], '.-') plt.axis('off') + if paths is not None: + plt.title(Path(paths[i]).name, fontdict={'size': 8}) fig.tight_layout() fig.savefig(fname, dpi=300) plt.close() From af3c5d0e3503d5d8d61914df051b46257226c6d4 Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Sun, 7 Jul 2019 23:42:24 +0200 Subject: [PATCH 0982/2595] GIoU to default --- utils/datasets.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 8f7c96a9..5b9a9860 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -134,7 +134,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing def __init__(self, path, img_size=416, batch_size=16, augment=False, rect=True, image_weights=False): with open(path, 'r') as f: img_files = f.read().splitlines() - self.img_files = list(filter(lambda x: len(x) > 0, img_files)) + self.img_files = [x for x in img_files if os.path.splitext(x)[-1].lower() in img_formats] n = len(self.img_files) bi = np.floor(np.arange(n) / batch_size).astype(np.int) # batch index @@ -149,9 +149,8 @@ class LoadImagesAndLabels(Dataset): # for training/testing self.rect = False if image_weights else rect # Define labels - self.label_files = [x.replace('images', 'labels') for x in self.img_files] - for f in img_formats: - self.label_files = [x.replace(f, '.txt') for x in self.label_files] + self.label_files = [x.replace('images', 'labels').replace(os.path.splitext(x)[-1], '.txt') + for x in self.img_files] # Rectangular Training https://github.com/ultralytics/yolov3/issues/232 if self.rect: From 7a2d35629740bf4ca9b2c1ca1919df32c28a72a1 Mon Sep 17 00:00:00 2001 From: glenn-jocher Date: Sun, 7 Jul 2019 23:53:56 +0200 Subject: [PATCH 0983/2595] GIoU to default --- utils/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 767b33e4..bb857ed4 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -629,7 +629,8 @@ def plot_images(imgs, targets, paths=None, fname='images.jpg'): plt.plot(boxes[[0, 2, 2, 0, 0]], boxes[[1, 1, 3, 3, 1]], '.-') plt.axis('off') if paths is not None: - plt.title(Path(paths[i]).name, fontdict={'size': 8}) + s = Path(paths[i]).name + plt.title(s[:min(len(s), 40)], fontdict={'size': 8}) # limit to 40 characters fig.tight_layout() fig.savefig(fname, dpi=300) plt.close() From 68b50f5cb6949366f5642eb0d7e84373b5564c6d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 8 Jul 2019 12:43:15 +0200 Subject: [PATCH 0984/2595] updates --- models.py | 7 ++++++- utils/utils.py | 3 +-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/models.py b/models.py index b1717d99..52c8cb37 100755 --- a/models.py +++ b/models.py @@ -251,7 +251,12 @@ def load_darknet_weights(self, weights, cutoff=-1): # Try to download weights if not available locally if not os.path.isfile(weights): try: - os.system('wget https://pjreddie.com/media/files/' + weights_file + ' -O ' + weights) + url = 'https://pjreddie.com/media/files/' + weights_file + print('Downloading ' + url + ' to ' + weights) + os.system('curl ' + url + ' -o ' + weights) + import requests + r = requests.get(url) + except IOError: print(weights + ' not found.\nTry https://drive.google.com/drive/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI') diff --git a/utils/utils.py b/utils/utils.py index bb857ed4..91b81f16 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -11,8 +11,7 @@ from PIL import Image from tqdm import tqdm from pathlib import Path -from . import torch_utils -from . import google_utils +from . import torch_utils # , google_utils matplotlib.rc('font', **{'size': 11}) From 291c3ec9c77048d4667e32ccbc47ae31de7cc92d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 8 Jul 2019 15:02:20 +0200 Subject: [PATCH 0985/2595] updates --- train.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/train.py b/train.py index 685b6317..bbbfec05 100644 --- a/train.py +++ b/train.py @@ -11,10 +11,7 @@ from models import * from utils.datasets import * from utils.utils import * -# 0.0945 0.279 0.114 0.131 25 0.035 0.2 0.1 0.035 79 1.61 3.53 0.29 0.001 -4 0.9 0.0005 320 -# 0.149 0.241 0.126 0.156 6.85 1.008 1.421 0.07989 16.94 6.215 10.61 4.272 0.251 0.001 -4 0.9 0.0005 320 giou -# 0.111 0.27 0.132 0.131 3.96 1.276 0.3156 0.1425 21.21 6.224 11.59 8.83 0.376 0.001 -4 0.9 0.0005 320 -# 0.114 0.287 0.144 0.132 7.1 1.666 4.046 0.1364 42.6 3.34 12.61 8.338 0.2705 0.001 -4 0.9 0.0005 320 giou + best_anchor False +# 0.109 0.297 0.15 0.126 7.04 1.666 4.062 0.1845 42.6 3.34 12.61 8.338 0.2705 0.001 -4 0.9 0.0005 320 giou + best_anchor False hyp = {'giou': 1.666, # giou loss gain 'xy': 4.062, # xy loss gain 'wh': 0.1845, # wh loss gain @@ -114,12 +111,11 @@ def train( # plt.savefig('LR.png', dpi=300) # Dataset - rectangular_training = False dataset = LoadImagesAndLabels(train_path, img_size, batch_size, augment=True, - rect=rectangular_training) + rect=opt.rect) # rectangular training # Initialize distributed training if torch.cuda.device_count() > 1: @@ -135,7 +131,7 @@ def train( dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=opt.num_workers, - shuffle=not rectangular_training, # Shuffle=True unless rectangular training is used + shuffle=not opt.rect, # Shuffle=True unless rectangular training is used pin_memory=True, collate_fn=dataset.collate_fn) @@ -301,6 +297,7 @@ if __name__ == '__main__': parser.add_argument('--data-cfg', type=str, default='data/coco_64img.data', help='coco.data file path') parser.add_argument('--single-scale', action='store_true', help='train at fixed size (no multi-scale)') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') + parser.add_argument('--rect', action='store_true', help='rectangular training') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') parser.add_argument('--num-workers', type=int, default=4, help='number of Pytorch DataLoader workers') From 94669fb704be871c7c3a4cfb00152cb8dd717f08 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 8 Jul 2019 15:24:20 +0200 Subject: [PATCH 0986/2595] updates --- train.py | 5 ++--- utils/utils.py | 3 ++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index bbbfec05..f980d69b 100644 --- a/train.py +++ b/train.py @@ -40,7 +40,6 @@ def train( latest = weights + 'latest.pt' best = weights + 'best.pt' device = torch_utils.select_device() - img_size_test = img_size # image size for testing multi_scale = not opt.single_scale if multi_scale: @@ -140,7 +139,7 @@ def train( if mixed_precision: try: from apex import amp - model, optimizer = amp.initialize(model, optimizer, opt_level='O1') + model, optimizer = amp.initialize(model, optimizer, opt_level='O1', verbosity=0) except: # not installed: install help: https://github.com/NVIDIA/apex/issues/259 mixed_precision = False @@ -232,7 +231,7 @@ def train( # Calculate mAP (always test final epoch, skip first 5 if opt.nosave) if not (opt.notest or (opt.nosave and epoch < 10)) or epoch == epochs - 1: with torch.no_grad(): - results, maps = test.test(cfg, data_cfg, batch_size=batch_size, img_size=img_size_test, model=model, + results, maps = test.test(cfg, data_cfg, batch_size=batch_size, img_size=opt.img_size, model=model, conf_thres=0.1) # Write epoch results diff --git a/utils/utils.py b/utils/utils.py index 91b81f16..53d82f8f 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -430,7 +430,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): pred = pred[(-pred[:, 4]).argsort()] det_max = [] - nms_style = 'MERGE' # 'OR' (default), 'AND', 'MERGE' (experimental) + nms_style = 'SOFT' # 'OR' (default), 'AND', 'MERGE' (experimental) for c in pred[:, -1].unique(): dc = pred[pred[:, -1] == c] # select class c n = len(dc) @@ -486,6 +486,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): iou = bbox_iou(dc[0], dc[1:]) # iou with other boxes dc = dc[1:] dc[:, 4] *= torch.exp(-iou ** 2 / sigma) # decay confidences + dc = dc[dc[:, 4] > nms_thres] # new line per https://github.com/ultralytics/yolov3/issues/362 if len(det_max): det_max = torch.cat(det_max) # concatenate From a8c73f1c50b9ef2602d1c4cee4a533922fc47d6b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 8 Jul 2019 15:28:29 +0200 Subject: [PATCH 0987/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 53d82f8f..fe5fa5ff 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -430,7 +430,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): pred = pred[(-pred[:, 4]).argsort()] det_max = [] - nms_style = 'SOFT' # 'OR' (default), 'AND', 'MERGE' (experimental) + nms_style = 'MERGE' # 'OR' (default), 'AND', 'MERGE' (experimental) for c in pred[:, -1].unique(): dc = pred[pred[:, -1] == c] # select class c n = len(dc) From 60bc2c1fbddb74755a256ba6a9b18752660b5297 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 8 Jul 2019 15:43:46 +0200 Subject: [PATCH 0988/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index f980d69b..c9aadb70 100644 --- a/train.py +++ b/train.py @@ -155,7 +155,7 @@ def train( for epoch in range(start_epoch, epochs): model.train() print(('\n%8s%12s' + '%10s' * 7) % - ('Epoch', 'Batch', 'xy', 'wh', 'obj', 'cls', 'total', 'targets', 'img_size')) + ('Epoch', 'Batch', 'GIoU/xy', 'wh', 'obj', 'cls', 'total', 'targets', 'img_size')) # Update scheduler scheduler.step() From 59b1a1e89b1be0419bc0779fa8d32d3e588af96d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 8 Jul 2019 15:52:13 +0200 Subject: [PATCH 0989/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index fe5fa5ff..acfcd583 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -486,7 +486,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): iou = bbox_iou(dc[0], dc[1:]) # iou with other boxes dc = dc[1:] dc[:, 4] *= torch.exp(-iou ** 2 / sigma) # decay confidences - dc = dc[dc[:, 4] > nms_thres] # new line per https://github.com/ultralytics/yolov3/issues/362 + # dc = dc[dc[:, 4] > nms_thres] # new line per https://github.com/ultralytics/yolov3/issues/362 if len(det_max): det_max = torch.cat(det_max) # concatenate From da9ec7d12fc767747384c05745abdccff3710245 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 8 Jul 2019 18:00:19 +0200 Subject: [PATCH 0990/2595] updates --- train.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/train.py b/train.py index c9aadb70..b3514cc6 100644 --- a/train.py +++ b/train.py @@ -61,12 +61,13 @@ def train( cutoff = -1 # backbone reaches to cutoff layer start_epoch = 0 best_fitness = 0.0 - nf = int(model.module_defs[model.yolo_layers[0] - 1]['filters']) # yolo layer size (i.e. 255) if opt.resume or opt.transfer: # Load previously saved model if opt.transfer: # Transfer learning + nf = int(model.module_defs[model.yolo_layers[0] - 1]['filters']) # yolo layer size (i.e. 255) chkpt = torch.load(weights + 'yolov3-spp.pt', map_location=device) model.load_state_dict({k: v for k, v in chkpt['model'].items() if v.numel() > 1 and v.shape[0] != 255}, strict=False) + for p in model.parameters(): p.requires_grad = True if p.shape[0] == nf else False @@ -74,10 +75,14 @@ def train( chkpt = torch.load(latest, map_location=device) # load checkpoint model.load_state_dict(chkpt['model']) - start_epoch = chkpt['epoch'] + 1 if chkpt['optimizer'] is not None: optimizer.load_state_dict(chkpt['optimizer']) best_fitness = chkpt['best_fitness'] + + with open('results.txt', 'w') as file: + file.write(chkpt['training_results']) # write results.txt + + start_epoch = chkpt['epoch'] + 1 del chkpt else: # Initialize model with backbone (optional) @@ -246,12 +251,14 @@ def train( # Save training results save = (not opt.nosave) or (epoch == epochs - 1) if save: - # Create checkpoint - chkpt = {'epoch': epoch, - 'best_fitness': best_fitness, - 'model': model.module.state_dict() if type( - model) is nn.parallel.DistributedDataParallel else model.state_dict(), - 'optimizer': optimizer.state_dict()} + with open('results.txt', 'r') as file: + # Create checkpoint + chkpt = {'epoch': epoch, + 'best_fitness': best_fitness, + 'training_results': file.read(), + 'model': model.module.state_dict() if type( + model) is nn.parallel.DistributedDataParallel else model.state_dict(), + 'optimizer': optimizer.state_dict()} # Save latest checkpoint torch.save(chkpt, latest) From feeaf734f2b4c3f4e1ecda01b747d762ebbfc3e6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 8 Jul 2019 18:04:44 +0200 Subject: [PATCH 0991/2595] updates --- train.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index b3514cc6..b0678378 100644 --- a/train.py +++ b/train.py @@ -284,7 +284,7 @@ def print_mutation(hyp, results): c = '%11.3g' * len(results) % results # results (P, R, mAP, F1, test_loss) print('\n%s\n%s\nEvolved fitness: %s\n' % (a, b, c)) - if opt.cloud_evolve: + if opt.cloud: os.system('gsutil cp gs://yolov4/evolve.txt .') # download evolve.txt with open('evolve.txt', 'a') as f: # append result f.write(c + b + '\n') @@ -311,12 +311,11 @@ if __name__ == '__main__': parser.add_argument('--notest', action='store_true', help='only test final epoch') parser.add_argument('--xywh', action='store_true', help='use xywh loss instead of GIoU loss') parser.add_argument('--evolve', action='store_true', help='evolve hyperparameters') - parser.add_argument('--cloud-evolve', action='store_true', help='evolve hyperparameters from a cloud source') + parser.add_argument('--cloud', action='store_true', help='train/evolve to a cloud source') parser.add_argument('--var', default=0, type=int, help='debug variable') opt = parser.parse_args() print(opt) - opt.evolve = opt.cloud_evolve or opt.evolve if opt.evolve: opt.notest = True # only test final epoch opt.nosave = True # only save final checkpoint From 0bd763f528ac5eaff9ad9d376b774683726a646a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 8 Jul 2019 18:32:31 +0200 Subject: [PATCH 0992/2595] updates --- train.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index b0678378..bf6d95b2 100644 --- a/train.py +++ b/train.py @@ -72,6 +72,8 @@ def train( p.requires_grad = True if p.shape[0] == nf else False else: # resume from latest.pt + if opt.bucket: + os.system('gsutil cp gs://%s/latest.pt %s' % (opt.bucket, latest)) # download from bucket chkpt = torch.load(latest, map_location=device) # load checkpoint model.load_state_dict(chkpt['model']) @@ -262,6 +264,8 @@ def train( # Save latest checkpoint torch.save(chkpt, latest) + if opt.bucket: + os.system('gsutil cp %s gs://%s' % (latest, opt.bucket)) # upload to bucket # Save best checkpoint if best_fitness == fitness: @@ -284,11 +288,11 @@ def print_mutation(hyp, results): c = '%11.3g' * len(results) % results # results (P, R, mAP, F1, test_loss) print('\n%s\n%s\nEvolved fitness: %s\n' % (a, b, c)) - if opt.cloud: - os.system('gsutil cp gs://yolov4/evolve.txt .') # download evolve.txt + if opt.bucket: + os.system('gsutil cp gs://%s/evolve.txt .' % opt.bucket) # download evolve.txt with open('evolve.txt', 'a') as f: # append result f.write(c + b + '\n') - os.system('gsutil cp evolve.txt gs://yolov4') # upload evolve.txt + os.system('gsutil cp evolve.txt gs://%s' % opt.bucket) # upload evolve.txt else: with open('evolve.txt', 'a') as f: f.write(c + b + '\n') @@ -311,7 +315,7 @@ if __name__ == '__main__': parser.add_argument('--notest', action='store_true', help='only test final epoch') parser.add_argument('--xywh', action='store_true', help='use xywh loss instead of GIoU loss') parser.add_argument('--evolve', action='store_true', help='evolve hyperparameters') - parser.add_argument('--cloud', action='store_true', help='train/evolve to a cloud source') + parser.add_argument('--bucket', type=str, default='', help='gsutil bucket') parser.add_argument('--var', default=0, type=int, help='debug variable') opt = parser.parse_args() print(opt) From bb1e551150bd37b6f9ff5e5d0158592e5bff498a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 8 Jul 2019 19:26:46 +0200 Subject: [PATCH 0993/2595] updates --- models.py | 8 +++++++- train.py | 7 ++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/models.py b/models.py index 52c8cb37..c68aaad7 100755 --- a/models.py +++ b/models.py @@ -354,7 +354,13 @@ def convert(cfg='cfg/yolov3-spp.cfg', weights='weights/yolov3-spp.weights'): elif weights.endswith('.weights'): # darknet format _ = load_darknet_weights(model, weights) - chkpt = {'epoch': -1, 'best_loss': None, 'model': model.state_dict(), 'optimizer': None} + + chkpt = {'epoch': -1, + 'best_fitness': None, + 'training_results': None, + 'model': model.state_dict(), + 'optimizer': None} + torch.save(chkpt, 'converted.pt') print("Success: converted '%s' to 'converted.pt'" % weights) diff --git a/train.py b/train.py index bf6d95b2..c8aeac52 100644 --- a/train.py +++ b/train.py @@ -81,8 +81,9 @@ def train( optimizer.load_state_dict(chkpt['optimizer']) best_fitness = chkpt['best_fitness'] - with open('results.txt', 'w') as file: - file.write(chkpt['training_results']) # write results.txt + if chkpt['training_results'] is not None: + with open('results.txt', 'w') as file: + file.write(chkpt['training_results']) # write results.txt start_epoch = chkpt['epoch'] + 1 del chkpt @@ -251,7 +252,7 @@ def train( best_fitness = fitness # Save training results - save = (not opt.nosave) or (epoch == epochs - 1) + save = (not opt.nosave) or ((not opt.evolve) and (epoch == epochs - 1)) if save: with open('results.txt', 'r') as file: # Create checkpoint From 9c227dd2b434ea290a46322e5a33dc48c7500cb4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 9 Jul 2019 14:18:19 +0200 Subject: [PATCH 0994/2595] updates --- data/get_coco_dataset.sh | 2 +- requirements.txt | 4 +++- utils/datasets.py | 10 ++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/data/get_coco_dataset.sh b/data/get_coco_dataset.sh index 625ed414..b6b4fc9a 100755 --- a/data/get_coco_dataset.sh +++ b/data/get_coco_dataset.sh @@ -36,4 +36,4 @@ paste <(awk "{print \"$PWD\"}" = 1.1.0 diff --git a/utils/datasets.py b/utils/datasets.py index 5b9a9860..e8db5531 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -223,6 +223,16 @@ class LoadImagesAndLabels(Dataset): # for training/testing pass # print('Warning: missing labels for %s' % self.img_files[i]) # missing label file assert len(np.concatenate(self.labels, 0)) > 0, 'No labels found. Incorrect label paths provided.' + # Detect corrupted images https://medium.com/joelthchao/programmatically-detect-corrupted-image-8c1b2006c3d3 + detect_corrupted_images = False + if detect_corrupted_images: + from skimage import io # conda install -c conda-forge scikit-image + for file in tqdm(self.img_files, desc='Detecting corrupted images'): + try: + _ = io.imread(file) + except: + print('Corrupted image detected: %s' % file) + def __len__(self): return len(self.img_files) From 5b0ba6d7b27b7b1055f1f06725d20afc393cc995 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 9 Jul 2019 18:16:15 +0200 Subject: [PATCH 0995/2595] updates --- utils/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index acfcd583..ae951abc 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -616,6 +616,7 @@ def plot_images(imgs, targets, paths=None, fname='images.jpg'): # Plots training images overlaid with targets imgs = imgs.cpu().numpy() targets = targets.cpu().numpy() + # targets = targets[targets[:, 1] == 21] # plot only one class fig = plt.figure(figsize=(10, 10)) bs, _, h, w = imgs.shape # batch size, _, height, width @@ -626,7 +627,7 @@ def plot_images(imgs, targets, paths=None, fname='images.jpg'): boxes[[0, 2]] *= w boxes[[1, 3]] *= h plt.subplot(ns, ns, i + 1).imshow(imgs[i].transpose(1, 2, 0)) - plt.plot(boxes[[0, 2, 2, 0, 0]], boxes[[1, 1, 3, 3, 1]], '.-') + plt.plot(boxes[[0, 2, 2, 0, 0]], boxes[[1, 1, 3, 3, 1]], 'w.-') plt.axis('off') if paths is not None: s = Path(paths[i]).name From 7b8a134a0bde17ed3a804644f8eb64798e9212a7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 9 Jul 2019 18:16:35 +0200 Subject: [PATCH 0996/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index ae951abc..5698d6e4 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -627,7 +627,7 @@ def plot_images(imgs, targets, paths=None, fname='images.jpg'): boxes[[0, 2]] *= w boxes[[1, 3]] *= h plt.subplot(ns, ns, i + 1).imshow(imgs[i].transpose(1, 2, 0)) - plt.plot(boxes[[0, 2, 2, 0, 0]], boxes[[1, 1, 3, 3, 1]], 'w.-') + plt.plot(boxes[[0, 2, 2, 0, 0]], boxes[[1, 1, 3, 3, 1]], '.-') plt.axis('off') if paths is not None: s = Path(paths[i]).name From bf6d96330b8d16658ca04075f411744f0c2efb7d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 9 Jul 2019 18:40:29 +0200 Subject: [PATCH 0997/2595] updates --- utils/datasets.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index e8db5531..c1a938dc 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -158,14 +158,14 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Read image shapes sp = 'data' + os.sep + path.replace('.txt', '.shapes').split(os.sep)[-1] # shapefile path - if os.path.exists(sp): # read existing shapefile - with open(sp, 'r') as f: - s = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) - assert len(s) == n, 'Shapefile out of sync, please delete %s and rerun' % sp - else: # no shapefile, so read shape using PIL and write shapefile for next time (faster) - s = np.array([Image.open(f).size for f in tqdm(self.img_files, desc='Reading image shapes')]) + if not os.path.exists(sp): # read shapes using PIL and write shapefile for next time (faster) + s = [Image.open(f).size for f in tqdm(self.img_files, desc='Reading image shapes')] np.savetxt(sp, s, fmt='%g') + with open(sp, 'r') as f: # read existing shapefile + s = np.array([x.split() for x in f.read().splitlines()], dtype=np.float64) + assert len(s) == n, 'Shapefile error. Please delete %s and rerun' % sp # TODO: auto-delete shapefile + # Sort by aspect ratio ar = s[:, 1] / s[:, 0] # aspect ratio i = ar.argsort() From d5fd37de26c6e0fe1ae12bc3b4934bcb2c9f0c11 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 9 Jul 2019 20:56:58 +0200 Subject: [PATCH 0998/2595] updates --- utils/datasets.py | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index c1a938dc..116aff6a 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -10,12 +10,33 @@ import numpy as np import torch from torch.utils.data import Dataset from tqdm import tqdm +from PIL import Image, ExifTags from utils.utils import xyxy2xywh, xywh2xyxy img_formats = ['.bmp', '.jpg', '.jpeg', '.png', '.tif'] vid_formats = ['.mov', '.avi', '.mp4'] +# Get orientation exif tag +for orientation in ExifTags.TAGS.keys(): + if ExifTags.TAGS[orientation] == 'Orientation': + break + + +def exif_size(img): + # Returns exif-corrected PIL size + s = img.size # (width, height) + try: + rotation = dict(img._getexif().items())[orientation] + if rotation == 6: # rotation 270 + s = (s[1], s[0]) + elif rotation == 8: # rotation 90 + s = (s[1], s[0]) + except: + None + + return s + class LoadImages: # for inference def __init__(self, path, img_size=416): @@ -154,12 +175,10 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Rectangular Training https://github.com/ultralytics/yolov3/issues/232 if self.rect: - from PIL import Image - # Read image shapes sp = 'data' + os.sep + path.replace('.txt', '.shapes').split(os.sep)[-1] # shapefile path if not os.path.exists(sp): # read shapes using PIL and write shapefile for next time (faster) - s = [Image.open(f).size for f in tqdm(self.img_files, desc='Reading image shapes')] + s = [exif_size(Image.open(f)) for f in tqdm(self.img_files, desc='Reading image shapes')] np.savetxt(sp, s, fmt='%g') with open(sp, 'r') as f: # read existing shapefile @@ -352,6 +371,7 @@ def letterbox(img, new_shape=416, color=(127.5, 127.5, 127.5), mode='auto'): # Resize a rectangular image to a 32 pixel multiple rectangle # https://github.com/ultralytics/yolov3/issues/232 shape = img.shape[:2] # current shape [height, width] + if isinstance(new_shape, int): ratio = float(new_shape) / max(shape) else: From 6bd2c2252345fb5cab631eb3d8cb0bc3714586c3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 9 Jul 2019 21:11:53 +0200 Subject: [PATCH 0999/2595] updates --- test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index e2282c86..bd4f2675 100644 --- a/test.py +++ b/test.py @@ -54,7 +54,7 @@ def test( seen = 0 model.eval() coco91class = coco80_to_coco91_class() - print(('%20s' + '%10s' * 6) % ('Class', 'Images', 'Targets', 'P', 'R', 'mAP', 'F1')) + print(('%30s' + '%10s' * 6) % ('Class', 'Images', 'Targets', 'P', 'R', 'mAP', 'F1')) loss, p, r, f1, mp, mr, map, mf1 = 0., 0., 0., 0., 0., 0., 0., 0. jdict, stats, ap, ap_class = [], [], [], [] for batch_i, (imgs, targets, paths, shapes) in enumerate(tqdm(dataloader, desc='Computing mAP')): @@ -150,7 +150,7 @@ def test( mp, mr, map, mf1 = p.mean(), r.mean(), ap.mean(), f1.mean() # Print results - pf = '%20s' + '%10.3g' * 6 # print format + pf = '%30s' + '%10.3g' * 6 # print format print(pf % ('all', seen, nt.sum(), mp, mr, map, mf1)) # Print results per class From f02ac891227b6d5c9d41bd8096e9091d7434103d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 10 Jul 2019 12:00:06 +0200 Subject: [PATCH 1000/2595] updates --- data/get_coco_dataset_gdrive.sh | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/data/get_coco_dataset_gdrive.sh b/data/get_coco_dataset_gdrive.sh index fabaad2c..8549bd7f 100755 --- a/data/get_coco_dataset_gdrive.sh +++ b/data/get_coco_dataset_gdrive.sh @@ -1,11 +1,17 @@ #!/bin/bash # https://stackoverflow.com/questions/48133080/how-to-download-a-google-drive-url-via-curl-or-wget/48133859 -# Download COCO dataset -fileid="1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO" -filename="coco_gdrive.zip" +# Set fileid and filename +filename="coco.zip" +fileid="1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO" # coco2014.zip +# filename="coco.tar.gz" +# fileid="1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO" # coco.tar.gz + +# Download from Google Drive, accepting presented query curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" > /dev/null curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${fileid}" -o ${filename} +rm ./cookie # Unzip -unzip -q coco_gdrive.zip \ No newline at end of file +unzip -q ${filename} +# tar -xzf ${filename} From 53dfdfb3673c050bf75cc6f01ebd3d32fc119624 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 10 Jul 2019 16:49:06 +0200 Subject: [PATCH 1001/2595] updates --- cfg/yolov3-spp-1cls.cfg | 821 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 821 insertions(+) create mode 100644 cfg/yolov3-spp-1cls.cfg diff --git a/cfg/yolov3-spp-1cls.cfg b/cfg/yolov3-spp-1cls.cfg new file mode 100644 index 00000000..a6116ff5 --- /dev/null +++ b/cfg/yolov3-spp-1cls.cfg @@ -0,0 +1,821 @@ +[net] +# Testing +# batch=1 +# subdivisions=1 +# Training +batch=64 +subdivisions=16 +width=608 +height=608 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +###################### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +### SPP ### +[maxpool] +stride=1 +size=5 + +[route] +layers=-2 + +[maxpool] +stride=1 +size=9 + +[route] +layers=-4 + +[maxpool] +stride=1 +size=13 + +[route] +layers=-1,-3,-5,-6 + +### End SPP ### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=18 +activation=linear + + +[yolo] +mask = 6,7,8 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=1 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 61 + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=18 +activation=linear + + +[yolo] +mask = 3,4,5 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=1 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 36 + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=18 +activation=linear + + +[yolo] +mask = 0,1,2 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=1 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 From 682d0485d6b0b204cb5dc2a023604c54927c14cb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 10 Jul 2019 17:33:24 +0200 Subject: [PATCH 1002/2595] updates --- data/get_coco_dataset_gdrive.sh | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/data/get_coco_dataset_gdrive.sh b/data/get_coco_dataset_gdrive.sh index 8549bd7f..1bb13711 100755 --- a/data/get_coco_dataset_gdrive.sh +++ b/data/get_coco_dataset_gdrive.sh @@ -4,8 +4,6 @@ # Set fileid and filename filename="coco.zip" fileid="1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO" # coco2014.zip -# filename="coco.tar.gz" -# fileid="1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO" # coco.tar.gz # Download from Google Drive, accepting presented query curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" > /dev/null @@ -13,5 +11,5 @@ curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/do rm ./cookie # Unzip -unzip -q ${filename} -# tar -xzf ${filename} +unzip -q ${filename} # for coco.zip +# tar -xzf ${filename} # for coco.tar.gz From 88a2c71a9f88fcfd7e23c149423955d569af3573 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 10 Jul 2019 17:34:19 +0200 Subject: [PATCH 1003/2595] updates --- data/get_coco_dataset_gdrive.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/data/get_coco_dataset_gdrive.sh b/data/get_coco_dataset_gdrive.sh index 1bb13711..9ec3a1ef 100755 --- a/data/get_coco_dataset_gdrive.sh +++ b/data/get_coco_dataset_gdrive.sh @@ -1,9 +1,13 @@ #!/bin/bash # https://stackoverflow.com/questions/48133080/how-to-download-a-google-drive-url-via-curl-or-wget/48133859 +# Zip coco folder +# zip -r coco.zip coco +# tar -czvf coco.tar.gz coco + # Set fileid and filename filename="coco.zip" -fileid="1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO" # coco2014.zip +fileid="1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO" # coco.zip # Download from Google Drive, accepting presented query curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" > /dev/null From a9e42a16f13a9d492d3cb048cd21eca31fb86266 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 10 Jul 2019 19:48:29 +0200 Subject: [PATCH 1004/2595] updates --- train.py | 8 ++++---- utils/utils.py | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/train.py b/train.py index c8aeac52..2133115c 100644 --- a/train.py +++ b/train.py @@ -31,8 +31,8 @@ def train( data_cfg, img_size=416, epochs=100, # 500200 batches at bs 16, 117263 images = 273 epochs - batch_size=8, - accumulate=8, # effective bs = batch_size * accumulate = 8 * 8 = 64 + batch_size=16, + accumulate=4, # effective bs = batch_size * accumulate = 8 * 8 = 64 freeze_backbone=False, ): init_seeds() @@ -302,8 +302,8 @@ def print_mutation(hyp, results): if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--epochs', type=int, default=100, help='number of epochs') - parser.add_argument('--batch-size', type=int, default=8, help='batch size') - parser.add_argument('--accumulate', type=int, default=8, help='number of batches to accumulate before optimizing') + parser.add_argument('--batch-size', type=int, default=16, help='batch size') + parser.add_argument('--accumulate', type=int, default=4, help='number of batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco_64img.data', help='coco.data file path') parser.add_argument('--single-scale', action='store_true', help='train at fixed size (no multi-scale)') diff --git a/utils/utils.py b/utils/utils.py index 5698d6e4..bdfdef38 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -281,7 +281,7 @@ def compute_loss(p, targets, model, giou_loss=True): # predictions, targets, mo MSE = nn.MSELoss() BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']])) BCEobj = nn.BCEWithLogitsLoss(pos_weight=ft([h['obj_pw']])) - # CE = nn.CrossEntropyLoss() # (weight=model.class_weights) + CE = nn.CrossEntropyLoss() # (weight=model.class_weights) # Compute losses bs = p[0].shape[0] # batch size @@ -304,10 +304,10 @@ def compute_loss(p, targets, model, giou_loss=True): # predictions, targets, mo lxy += (k * h['xy']) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss lwh += (k * h['wh']) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss - tclsm = torch.zeros_like(pi[..., 5:]) - tclsm[range(len(b)), tcls[i]] = 1.0 - lcls += (k * h['cls']) * BCEcls(pi[..., 5:], tclsm) # cls loss (BCE) - # lcls += (k * h['cls']) * CE(pi[..., 5:], tcls[i]) # cls loss (CE) + # tclsm = torch.zeros_like(pi[..., 5:]) + # tclsm[range(len(b)), tcls[i]] = 1.0 + # lcls += (k * h['cls']) * BCEcls(pi[..., 5:], tclsm) # cls loss (BCE) + lcls += (k * h['cls']) * CE(pi[..., 5:], tcls[i]) # cls loss (CE) # Append targets to text file # with open('targets.txt', 'a') as file: From 4f6ef59d928c00bb451b08536ed1d8304ae29aca Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 10 Jul 2019 20:47:05 +0200 Subject: [PATCH 1005/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 2133115c..8b297636 100644 --- a/train.py +++ b/train.py @@ -40,7 +40,7 @@ def train( latest = weights + 'latest.pt' best = weights + 'best.pt' device = torch_utils.select_device() - multi_scale = not opt.single_scale + multi_scale = opt.multi_scale if multi_scale: img_size_min = round(img_size / 32 / 1.5) @@ -306,7 +306,7 @@ if __name__ == '__main__': parser.add_argument('--accumulate', type=int, default=4, help='number of batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data-cfg', type=str, default='data/coco_64img.data', help='coco.data file path') - parser.add_argument('--single-scale', action='store_true', help='train at fixed size (no multi-scale)') + parser.add_argument('--multi-scale', action='store_true', help='train at (1/1.5)x - 1.5x sizes') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--rect', action='store_true', help='rectangular training') parser.add_argument('--resume', action='store_true', help='resume training flag') From 3373006d0ecfedf4fae13d7ccc6cc5131645f294 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 10 Jul 2019 22:11:48 +0200 Subject: [PATCH 1006/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 8b297636..4c4dda78 100644 --- a/train.py +++ b/train.py @@ -15,7 +15,7 @@ from utils.utils import * hyp = {'giou': 1.666, # giou loss gain 'xy': 4.062, # xy loss gain 'wh': 0.1845, # wh loss gain - 'cls': 42.6, # cls loss gain + 'cls': 1.0, # cls loss gain 'cls_pw': 3.34, # cls BCELoss positive_weight 'obj': 12.61, # obj loss gain 'obj_pw': 8.338, # obj BCELoss positive_weight From b005a17eff4dc96e77f113ee5827f17700bb0766 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 11 Jul 2019 11:56:46 +0200 Subject: [PATCH 1007/2595] updates --- train.py | 2 +- utils/utils.py | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/train.py b/train.py index 4c4dda78..8b297636 100644 --- a/train.py +++ b/train.py @@ -15,7 +15,7 @@ from utils.utils import * hyp = {'giou': 1.666, # giou loss gain 'xy': 4.062, # xy loss gain 'wh': 0.1845, # wh loss gain - 'cls': 1.0, # cls loss gain + 'cls': 42.6, # cls loss gain 'cls_pw': 3.34, # cls BCELoss positive_weight 'obj': 12.61, # obj loss gain 'obj_pw': 8.338, # obj BCELoss positive_weight diff --git a/utils/utils.py b/utils/utils.py index bdfdef38..5698d6e4 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -281,7 +281,7 @@ def compute_loss(p, targets, model, giou_loss=True): # predictions, targets, mo MSE = nn.MSELoss() BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']])) BCEobj = nn.BCEWithLogitsLoss(pos_weight=ft([h['obj_pw']])) - CE = nn.CrossEntropyLoss() # (weight=model.class_weights) + # CE = nn.CrossEntropyLoss() # (weight=model.class_weights) # Compute losses bs = p[0].shape[0] # batch size @@ -304,10 +304,10 @@ def compute_loss(p, targets, model, giou_loss=True): # predictions, targets, mo lxy += (k * h['xy']) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss lwh += (k * h['wh']) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss - # tclsm = torch.zeros_like(pi[..., 5:]) - # tclsm[range(len(b)), tcls[i]] = 1.0 - # lcls += (k * h['cls']) * BCEcls(pi[..., 5:], tclsm) # cls loss (BCE) - lcls += (k * h['cls']) * CE(pi[..., 5:], tcls[i]) # cls loss (CE) + tclsm = torch.zeros_like(pi[..., 5:]) + tclsm[range(len(b)), tcls[i]] = 1.0 + lcls += (k * h['cls']) * BCEcls(pi[..., 5:], tclsm) # cls loss (BCE) + # lcls += (k * h['cls']) * CE(pi[..., 5:], tcls[i]) # cls loss (CE) # Append targets to text file # with open('targets.txt', 'a') as file: From a2909c59f852da5e26840184a6c326f28d26360e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 11 Jul 2019 11:57:10 +0200 Subject: [PATCH 1008/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 8b297636..7b76bb4c 100644 --- a/train.py +++ b/train.py @@ -348,7 +348,7 @@ if __name__ == '__main__': # Mutate init_seeds(seed=int(time.time())) - s = [.2, .2, .2, .2, .2, .2, .2, .2, .2 * 0, .2 * 0, .05 * 0, .2 * 0] # fractional sigmas + s = [.1, .1, .1, .1, .1, .1, .1, .1, .2 * 0, .2 * 0, .05 * 0, .2 * 0] # fractional sigmas for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) hyp[k] *= float(x) # vary by 20% 1sigma From 588620040146a9e71ee9eec8feebaabdc85638fc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 12 Jul 2019 01:19:32 +0200 Subject: [PATCH 1009/2595] updates --- train.py | 2 +- utils/utils.py | 36 +++++++++++++++++++++++------------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/train.py b/train.py index 7b76bb4c..70ae0272 100644 --- a/train.py +++ b/train.py @@ -348,7 +348,7 @@ if __name__ == '__main__': # Mutate init_seeds(seed=int(time.time())) - s = [.1, .1, .1, .1, .1, .1, .1, .1, .2 * 0, .2 * 0, .05 * 0, .2 * 0] # fractional sigmas + s = [.15, .15, .15, .15, .15, .15, .15, .15, 0, 0, 0, 0] # fractional sigmas for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) hyp[k] *= float(x) # vary by 20% 1sigma diff --git a/utils/utils.py b/utils/utils.py index 5698d6e4..b22d9f67 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -274,24 +274,28 @@ def wh_iou(box1, box2): def compute_loss(p, targets, model, giou_loss=True): # predictions, targets, model ft = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor lxy, lwh, lcls, lobj = ft([0]), ft([0]), ft([0]), ft([0]) - txy, twh, tcls, tbox, indices, anchor_vec = build_targets(model, targets) + txy, twh, tcls, tbox, indices, anchor_vec, nc = build_targets(model, targets) h = model.hyp # hyperparameters # Define criteria - MSE = nn.MSELoss() - BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']])) - BCEobj = nn.BCEWithLogitsLoss(pos_weight=ft([h['obj_pw']])) + MSE = nn.MSELoss(reduction='sum') + BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']]), reduction='sum') + BCEobj = nn.BCEWithLogitsLoss(pos_weight=ft([h['obj_pw']]), reduction='sum') # CE = nn.CrossEntropyLoss() # (weight=model.class_weights) # Compute losses bs = p[0].shape[0] # batch size - k = bs / 64 # loss gain + k = 3 * bs / 64 # loss gain + nt, ng = 0, 0 # number of targets, number grid points for i, pi0 in enumerate(p): # layer i predictions, i b, a, gj, gi = indices[i] # image, anchor, gridy, gridx tobj = torch.zeros_like(pi0[..., 0]) # target obj + ng += tobj.numel() + nb = len(b) # Compute losses - if len(b): # number of targets + if nb: # number of targets + nt += nb pi = pi0[b, a, gj, gi] # predictions closest to anchors tobj[b, a, gj, gi] = 1.0 # obj # pi[..., 2:4] = torch.sigmoid(pi[..., 2:4]) # wh power loss (uncomment) @@ -299,21 +303,27 @@ def compute_loss(p, targets, model, giou_loss=True): # predictions, targets, mo if giou_loss: pbox = torch.cat((torch.sigmoid(pi[..., 0:2]), torch.exp(pi[..., 2:4]) * anchor_vec[i]), 1) # predicted giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation - lxy += (k * h['giou']) * (1.0 - giou).mean() # giou loss + lxy += (1.0 - giou).sum() # giou loss else: lxy += (k * h['xy']) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss - lwh += (k * h['wh']) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss + lwh += MSE(pi[..., 2:4], twh[i]) # wh yolo loss tclsm = torch.zeros_like(pi[..., 5:]) - tclsm[range(len(b)), tcls[i]] = 1.0 - lcls += (k * h['cls']) * BCEcls(pi[..., 5:], tclsm) # cls loss (BCE) - # lcls += (k * h['cls']) * CE(pi[..., 5:], tcls[i]) # cls loss (CE) + tclsm[range(nb), tcls[i]] = 1.0 + lcls += BCEcls(pi[..., 5:], tclsm) # cls loss (BCE) + # lcls += CE(pi[..., 5:], tcls[i]) # cls loss (CE) # Append targets to text file # with open('targets.txt', 'a') as file: # [file.write('%11.5g ' * 4 % tuple(x) + '\n') for x in torch.cat((txy[i], twh[i]), 1)] - lobj += (k * h['obj']) * BCEobj(pi0[..., 4], tobj) # obj loss + lobj += BCEobj(pi0[..., 4], tobj) # obj loss + + lxy *= (k * h['giou']) / nt + lwh *= (k * h['wh']) / nt + lcls *= (k * h['cls']) / (nt * nc) + lobj *= (k * h['obj']) / ng + loss = lxy + lwh + lobj + lcls return loss, torch.cat((lxy, lwh, lobj, lcls, loss)).detach() @@ -375,7 +385,7 @@ def build_targets(model, targets): if c.shape[0]: assert c.max() <= layer.nc, 'Target classes exceed model classes' - return txy, twh, tcls, tbox, indices, anchor_vec + return txy, twh, tcls, tbox, indices, anchor_vec, layer.nc def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): From bd9789aa003f33dbaee1cb77c796906cbd4c8e10 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 12 Jul 2019 12:23:17 +0200 Subject: [PATCH 1010/2595] equal layer weights --- train.py | 4 ++-- utils/utils.py | 40 +++++++++++++++------------------------- 2 files changed, 17 insertions(+), 27 deletions(-) diff --git a/train.py b/train.py index 70ae0272..36cb7db4 100644 --- a/train.py +++ b/train.py @@ -348,14 +348,14 @@ if __name__ == '__main__': # Mutate init_seeds(seed=int(time.time())) - s = [.15, .15, .15, .15, .15, .15, .15, .15, 0, 0, 0, 0] # fractional sigmas + s = [.15, .15, .15, .15, .15, .15, .15, .15, .15, .15, .15, .15] # fractional sigmas for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) hyp[k] *= float(x) # vary by 20% 1sigma # Clip to limits keys = ['lr0', 'iou_t', 'momentum', 'weight_decay'] - limits = [(1e-4, 1e-2), (0, 0.70), (0.70, 0.98), (0, 0.01)] + limits = [(1e-4, 1e-2), (0.00, 0.70), (0.60, 0.98), (0, 0.01)] for k, v in zip(keys, limits): hyp[k] = np.clip(hyp[k], v[0], v[1]) diff --git a/utils/utils.py b/utils/utils.py index b22d9f67..bdfdef38 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -274,28 +274,24 @@ def wh_iou(box1, box2): def compute_loss(p, targets, model, giou_loss=True): # predictions, targets, model ft = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor lxy, lwh, lcls, lobj = ft([0]), ft([0]), ft([0]), ft([0]) - txy, twh, tcls, tbox, indices, anchor_vec, nc = build_targets(model, targets) + txy, twh, tcls, tbox, indices, anchor_vec = build_targets(model, targets) h = model.hyp # hyperparameters # Define criteria - MSE = nn.MSELoss(reduction='sum') - BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']]), reduction='sum') - BCEobj = nn.BCEWithLogitsLoss(pos_weight=ft([h['obj_pw']]), reduction='sum') - # CE = nn.CrossEntropyLoss() # (weight=model.class_weights) + MSE = nn.MSELoss() + BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']])) + BCEobj = nn.BCEWithLogitsLoss(pos_weight=ft([h['obj_pw']])) + CE = nn.CrossEntropyLoss() # (weight=model.class_weights) # Compute losses bs = p[0].shape[0] # batch size - k = 3 * bs / 64 # loss gain - nt, ng = 0, 0 # number of targets, number grid points + k = bs / 64 # loss gain for i, pi0 in enumerate(p): # layer i predictions, i b, a, gj, gi = indices[i] # image, anchor, gridy, gridx tobj = torch.zeros_like(pi0[..., 0]) # target obj - ng += tobj.numel() - nb = len(b) # Compute losses - if nb: # number of targets - nt += nb + if len(b): # number of targets pi = pi0[b, a, gj, gi] # predictions closest to anchors tobj[b, a, gj, gi] = 1.0 # obj # pi[..., 2:4] = torch.sigmoid(pi[..., 2:4]) # wh power loss (uncomment) @@ -303,27 +299,21 @@ def compute_loss(p, targets, model, giou_loss=True): # predictions, targets, mo if giou_loss: pbox = torch.cat((torch.sigmoid(pi[..., 0:2]), torch.exp(pi[..., 2:4]) * anchor_vec[i]), 1) # predicted giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation - lxy += (1.0 - giou).sum() # giou loss + lxy += (k * h['giou']) * (1.0 - giou).mean() # giou loss else: lxy += (k * h['xy']) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss - lwh += MSE(pi[..., 2:4], twh[i]) # wh yolo loss + lwh += (k * h['wh']) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss - tclsm = torch.zeros_like(pi[..., 5:]) - tclsm[range(nb), tcls[i]] = 1.0 - lcls += BCEcls(pi[..., 5:], tclsm) # cls loss (BCE) - # lcls += CE(pi[..., 5:], tcls[i]) # cls loss (CE) + # tclsm = torch.zeros_like(pi[..., 5:]) + # tclsm[range(len(b)), tcls[i]] = 1.0 + # lcls += (k * h['cls']) * BCEcls(pi[..., 5:], tclsm) # cls loss (BCE) + lcls += (k * h['cls']) * CE(pi[..., 5:], tcls[i]) # cls loss (CE) # Append targets to text file # with open('targets.txt', 'a') as file: # [file.write('%11.5g ' * 4 % tuple(x) + '\n') for x in torch.cat((txy[i], twh[i]), 1)] - lobj += BCEobj(pi0[..., 4], tobj) # obj loss - - lxy *= (k * h['giou']) / nt - lwh *= (k * h['wh']) / nt - lcls *= (k * h['cls']) / (nt * nc) - lobj *= (k * h['obj']) / ng - + lobj += (k * h['obj']) * BCEobj(pi0[..., 4], tobj) # obj loss loss = lxy + lwh + lobj + lcls return loss, torch.cat((lxy, lwh, lobj, lcls, loss)).detach() @@ -385,7 +375,7 @@ def build_targets(model, targets): if c.shape[0]: assert c.max() <= layer.nc, 'Target classes exceed model classes' - return txy, twh, tcls, tbox, indices, anchor_vec, layer.nc + return txy, twh, tcls, tbox, indices, anchor_vec def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): From c77b87489ceb10f9ad2737bf179fc41c075ead62 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 12 Jul 2019 12:24:43 +0200 Subject: [PATCH 1011/2595] updates --- utils/utils.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index bdfdef38..0566bbda 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -281,7 +281,7 @@ def compute_loss(p, targets, model, giou_loss=True): # predictions, targets, mo MSE = nn.MSELoss() BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']])) BCEobj = nn.BCEWithLogitsLoss(pos_weight=ft([h['obj_pw']])) - CE = nn.CrossEntropyLoss() # (weight=model.class_weights) + # CE = nn.CrossEntropyLoss() # (weight=model.class_weights) # Compute losses bs = p[0].shape[0] # batch size @@ -291,7 +291,8 @@ def compute_loss(p, targets, model, giou_loss=True): # predictions, targets, mo tobj = torch.zeros_like(pi0[..., 0]) # target obj # Compute losses - if len(b): # number of targets + nb = len(b) + if nb: # number of targets pi = pi0[b, a, gj, gi] # predictions closest to anchors tobj[b, a, gj, gi] = 1.0 # obj # pi[..., 2:4] = torch.sigmoid(pi[..., 2:4]) # wh power loss (uncomment) @@ -304,10 +305,10 @@ def compute_loss(p, targets, model, giou_loss=True): # predictions, targets, mo lxy += (k * h['xy']) * MSE(torch.sigmoid(pi[..., 0:2]), txy[i]) # xy loss lwh += (k * h['wh']) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss - # tclsm = torch.zeros_like(pi[..., 5:]) - # tclsm[range(len(b)), tcls[i]] = 1.0 - # lcls += (k * h['cls']) * BCEcls(pi[..., 5:], tclsm) # cls loss (BCE) - lcls += (k * h['cls']) * CE(pi[..., 5:], tcls[i]) # cls loss (CE) + tclsm = torch.zeros_like(pi[..., 5:]) + tclsm[range(nb), tcls[i]] = 1.0 + lcls += (k * h['cls']) * BCEcls(pi[..., 5:], tclsm) # cls loss (BCE) + # lcls += (k * h['cls']) * CE(pi[..., 5:], tcls[i]) # cls loss (CE) # Append targets to text file # with open('targets.txt', 'a') as file: From bb383913423abf3ada74a658543bdf9eaf5a4c25 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 12 Jul 2019 14:28:46 +0200 Subject: [PATCH 1012/2595] updates --- test.py | 4 ++-- train.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test.py b/test.py index bd4f2675..e1563d26 100644 --- a/test.py +++ b/test.py @@ -54,10 +54,10 @@ def test( seen = 0 model.eval() coco91class = coco80_to_coco91_class() - print(('%30s' + '%10s' * 6) % ('Class', 'Images', 'Targets', 'P', 'R', 'mAP', 'F1')) + s = ('%30s' + '%10s' * 6) % ('Class', 'Images', 'Targets', 'P', 'R', 'mAP', 'F1') loss, p, r, f1, mp, mr, map, mf1 = 0., 0., 0., 0., 0., 0., 0., 0. jdict, stats, ap, ap_class = [], [], [], [] - for batch_i, (imgs, targets, paths, shapes) in enumerate(tqdm(dataloader, desc='Computing mAP')): + for batch_i, (imgs, targets, paths, shapes) in enumerate(tqdm(dataloader, desc=s)): targets = targets.to(device) imgs = imgs.to(device) _, _, height, width = imgs.shape # batch size, channels, height, width diff --git a/train.py b/train.py index 36cb7db4..f53273c9 100644 --- a/train.py +++ b/train.py @@ -348,7 +348,7 @@ if __name__ == '__main__': # Mutate init_seeds(seed=int(time.time())) - s = [.15, .15, .15, .15, .15, .15, .15, .15, .15, .15, .15, .15] # fractional sigmas + s = [.15, .15, .15, .15, .15, .15, .15, .15, .10, .10, .10, .10] # fractional sigmas for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) hyp[k] *= float(x) # vary by 20% 1sigma From 0aa9759a90b8d4514f5ca4cdb4dc55dcb99935d3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 12 Jul 2019 15:44:39 +0200 Subject: [PATCH 1013/2595] updates --- cfg/yolov3-spp.cfg | 8 ++++---- train.py | 4 ++-- utils/gcp.sh | 5 ++--- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/cfg/yolov3-spp.cfg b/cfg/yolov3-spp.cfg index bb4e893b..e10d1b33 100644 --- a/cfg/yolov3-spp.cfg +++ b/cfg/yolov3-spp.cfg @@ -4,9 +4,9 @@ # subdivisions=1 # Training batch=64 -subdivisions=16 -width=608 -height=608 +subdivisions=8 +width=320 +height=320 channels=3 momentum=0.9 decay=0.0005 @@ -16,7 +16,7 @@ exposure = 1.5 hue=.1 learning_rate=0.001 -burn_in=1000 +burn_in=366 max_batches = 500200 policy=steps steps=400000,450000 diff --git a/train.py b/train.py index f53273c9..293db6b9 100644 --- a/train.py +++ b/train.py @@ -233,8 +233,8 @@ def train( pbar.set_description(s) # print(s) # Report time - dt = (time.time() - t0) / 3600 - print('%g epochs completed in %.3f hours.' % (epoch - start_epoch + 1, dt)) + # dt = (time.time() - t0) / 3600 + # print('%g epochs completed in %.3f hours.' % (epoch - start_epoch + 1, dt)) # Calculate mAP (always test final epoch, skip first 5 if opt.nosave) if not (opt.notest or (opt.nosave and epoch < 10)) or epoch == epochs - 1: diff --git a/utils/gcp.sh b/utils/gcp.sh index 7f985c8f..5f2e49f2 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -48,9 +48,9 @@ rm results*.txt # WARNING: removes existing results python3 train.py --nosave --data data/coco_1img.data && mv results.txt results0r_1img.txt python3 train.py --nosave --data data/coco_10img.data && mv results.txt results0r_10img.txt python3 train.py --nosave --data data/coco_100img.data && mv results.txt results0r_100img.txt -#python3 train.py --nosave --data data/coco_100img.data --transfer && mv results.txt results3_100imgTL.txt +# python3 train.py --nosave --data data/coco_100img.data --transfer && mv results.txt results3_100imgTL.txt python3 -c "from utils import utils; utils.plot_results()" -gsutil cp results*.txt gs://ultralytics +# gsutil cp results*.txt gs://ultralytics gsutil cp results.png gs://ultralytics sudo shutdown @@ -92,7 +92,6 @@ python3 test.py --data ../supermarket2/supermarket2.data --weights weights/yolov python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/backup/yolov3-spp-sm2-1cls-scalexy_variable_5000.weights --cfg ../yolov3-spp-sm2-1cls-scalexy_variable.cfg --img-size 320 --conf-thres 0.2 # test - # Debug/Development python3 train.py --data data/coco.data --img-size 320 --single-scale --batch-size 64 --accumulate 1 --epochs 1 --evolve --giou python3 test.py --weights weights/latest.pt --cfg cfg/yolov3-spp.cfg --img-size 320 From f906bc987238a286556cab4ed25ab156004087d3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 12 Jul 2019 15:45:57 +0200 Subject: [PATCH 1014/2595] updates --- cfg/yolov3-spp.cfg | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cfg/yolov3-spp.cfg b/cfg/yolov3-spp.cfg index e10d1b33..bb4e893b 100644 --- a/cfg/yolov3-spp.cfg +++ b/cfg/yolov3-spp.cfg @@ -4,9 +4,9 @@ # subdivisions=1 # Training batch=64 -subdivisions=8 -width=320 -height=320 +subdivisions=16 +width=608 +height=608 channels=3 momentum=0.9 decay=0.0005 @@ -16,7 +16,7 @@ exposure = 1.5 hue=.1 learning_rate=0.001 -burn_in=366 +burn_in=1000 max_batches = 500200 policy=steps steps=400000,450000 From 03c6fe1ffed4097a8ef3b201c9a8e194d5ea3322 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 12 Jul 2019 16:10:37 +0200 Subject: [PATCH 1015/2595] updates --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 293db6b9..182d7dca 100644 --- a/train.py +++ b/train.py @@ -240,7 +240,7 @@ def train( if not (opt.notest or (opt.nosave and epoch < 10)) or epoch == epochs - 1: with torch.no_grad(): results, maps = test.test(cfg, data_cfg, batch_size=batch_size, img_size=opt.img_size, model=model, - conf_thres=0.1) + conf_thres=0.001) # Write epoch results with open('results.txt', 'a') as file: @@ -348,14 +348,14 @@ if __name__ == '__main__': # Mutate init_seeds(seed=int(time.time())) - s = [.15, .15, .15, .15, .15, .15, .15, .15, .10, .10, .10, .10] # fractional sigmas + s = [.15, .15, .15, .15, .15, .15, .15, .15, .15, .00, .05, .10] # fractional sigmas for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) hyp[k] *= float(x) # vary by 20% 1sigma # Clip to limits keys = ['lr0', 'iou_t', 'momentum', 'weight_decay'] - limits = [(1e-4, 1e-2), (0.00, 0.70), (0.60, 0.98), (0, 0.01)] + limits = [(1e-4, 1e-2), (0.00, 0.70), (0.60, 0.95), (0, 0.01)] for k, v in zip(keys, limits): hyp[k] = np.clip(hyp[k], v[0], v[1]) From 831b6e39b6ae839037469e7bfd3170e42050fa2c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 12 Jul 2019 17:02:04 +0200 Subject: [PATCH 1016/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 182d7dca..559a8699 100644 --- a/train.py +++ b/train.py @@ -240,7 +240,7 @@ def train( if not (opt.notest or (opt.nosave and epoch < 10)) or epoch == epochs - 1: with torch.no_grad(): results, maps = test.test(cfg, data_cfg, batch_size=batch_size, img_size=opt.img_size, model=model, - conf_thres=0.001) + conf_thres=0.1) # Write epoch results with open('results.txt', 'a') as file: @@ -341,7 +341,7 @@ if __name__ == '__main__': for _ in range(gen): # Get best hyperparameters x = np.loadtxt('evolve.txt', ndmin=2) - fitness = x[:, 2] * 0.9 + x[:, 3] * 0.1 # fitness as weighted combination of mAP and F1 + fitness = x[:, 2] * 0.5 + x[:, 3] * 0.5 # fitness as weighted combination of mAP and F1 x = x[fitness.argmax()] # select best fitness hyps for i, k in enumerate(hyp.keys()): hyp[k] = x[i + 5] From 3fc676b28a08023bf9132df8284948ca579640cb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 14 Jul 2019 11:29:07 +0200 Subject: [PATCH 1017/2595] updates --- train.py | 19 ++++++++++--------- utils/torch_utils.py | 1 + 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/train.py b/train.py index 559a8699..951d3022 100644 --- a/train.py +++ b/train.py @@ -12,18 +12,19 @@ from utils.datasets import * from utils.utils import * # 0.109 0.297 0.15 0.126 7.04 1.666 4.062 0.1845 42.6 3.34 12.61 8.338 0.2705 0.001 -4 0.9 0.0005 320 giou + best_anchor False -hyp = {'giou': 1.666, # giou loss gain +# 0.223 0.218 0.138 0.189 9.28 1.153 4.376 0.08263 24.28 3.05 20.93 2.842 0.2759 0.001357 -5.036 0.9158 0.0005722 mAP/F1 - 50/50 weighting +hyp = {'giou': 1.153, # giou loss gain 'xy': 4.062, # xy loss gain 'wh': 0.1845, # wh loss gain - 'cls': 42.6, # cls loss gain - 'cls_pw': 3.34, # cls BCELoss positive_weight - 'obj': 12.61, # obj loss gain - 'obj_pw': 8.338, # obj BCELoss positive_weight - 'iou_t': 0.2705, # iou target-anchor training threshold - 'lr0': 0.001, # initial learning rate + 'cls': 24.28, # cls loss gain + 'cls_pw': 3.05, # cls BCELoss positive_weight + 'obj': 20.93, # obj loss gain + 'obj_pw': 2.842, # obj BCELoss positive_weight + 'iou_t': 0.2759, # iou target-anchor training threshold + 'lr0': 0.001357, # initial learning rate 'lrf': -4., # final learning rate = lr0 * (10 ** lrf) - 'momentum': 0.90, # SGD momentum - 'weight_decay': 0.0005} # optimizer weight decay + 'momentum': 0.9158, # SGD momentum + 'weight_decay': 0.0005722} # optimizer weight decay def train( diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 90469ab0..3f428fd6 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -2,6 +2,7 @@ import torch def init_seeds(seed=0): + torch.cuda.empty_cache() torch.manual_seed(seed) torch.cuda.manual_seed(seed) torch.cuda.manual_seed_all(seed) From ac39ff5aa293b2cb44a154d477cc9ab8a3cc4ae4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 14 Jul 2019 13:00:06 +0200 Subject: [PATCH 1018/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index f33d39f5..568ac471 100644 --- a/detect.py +++ b/detect.py @@ -74,7 +74,7 @@ def detect( if det is not None and len(det) > 0: # Rescale boxes from 416 to true image size - det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round() + det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round() # TODO: clamp to image border https://github.com/ultralytics/yolov3/issues/368 # Print results to screen print('%gx%g ' % img.shape[2:], end='') # print image size From 9c776b80525b4519ec2e56af3cd8ba8c76f90beb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 14 Jul 2019 21:38:55 +0200 Subject: [PATCH 1019/2595] updates --- train.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/train.py b/train.py index 951d3022..dddc4910 100644 --- a/train.py +++ b/train.py @@ -13,6 +13,9 @@ from utils.utils import * # 0.109 0.297 0.15 0.126 7.04 1.666 4.062 0.1845 42.6 3.34 12.61 8.338 0.2705 0.001 -4 0.9 0.0005 320 giou + best_anchor False # 0.223 0.218 0.138 0.189 9.28 1.153 4.376 0.08263 24.28 3.05 20.93 2.842 0.2759 0.001357 -5.036 0.9158 0.0005722 mAP/F1 - 50/50 weighting +# 0.231 0.215 0.135 0.191 9.51 1.432 3.007 0.06082 24.87 3.477 24.13 2.802 0.3436 0.001127 -5.036 0.9232 0.0005874 +# 0.246 0.194 0.128 0.192 8.12 1.101 3.954 0.0817 22.83 3.967 19.83 1.779 0.3352 0.000895 -5.036 0.9238 0.0007973 + hyp = {'giou': 1.153, # giou loss gain 'xy': 4.062, # xy loss gain 'wh': 0.1845, # wh loss gain @@ -161,6 +164,7 @@ def train( results = (0, 0, 0, 0, 0) # P, R, mAP, F1, test_loss n_burnin = min(round(nb / 5 + 1), 1000) # burn-in batches t, t0 = time.time(), time.time() + torch.cuda.empty_cache() for epoch in range(start_epoch, epochs): model.train() print(('\n%8s%12s' + '%10s' * 7) % From 6509d8e5885db15b279acf1ed1f4e62dbf10d5b7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 14 Jul 2019 22:28:48 +0200 Subject: [PATCH 1020/2595] updates --- train.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/train.py b/train.py index dddc4910..bd1260d3 100644 --- a/train.py +++ b/train.py @@ -15,19 +15,23 @@ from utils.utils import * # 0.223 0.218 0.138 0.189 9.28 1.153 4.376 0.08263 24.28 3.05 20.93 2.842 0.2759 0.001357 -5.036 0.9158 0.0005722 mAP/F1 - 50/50 weighting # 0.231 0.215 0.135 0.191 9.51 1.432 3.007 0.06082 24.87 3.477 24.13 2.802 0.3436 0.001127 -5.036 0.9232 0.0005874 # 0.246 0.194 0.128 0.192 8.12 1.101 3.954 0.0817 22.83 3.967 19.83 1.779 0.3352 0.000895 -5.036 0.9238 0.0007973 +# 0.242 0.296 0.196 0.231 5.67 0.8541 4.286 0.1539 21.61 1.957 22.9 2.894 0.3689 0.001844 -4 0.913 0.000467 +# 0.298 0.244 0.167 0.247 4.99 0.8896 4.067 0.1694 21.41 2.033 25.61 1.783 0.4115 0.00128 -4 0.950 0.000377 +# 0.268 0.268 0.178 0.240 4.36 1.104 5.596 0.2087 14.47 2.599 16.27 2.406 0.4114 0.001585 -4 0.950 0.000524 +# 0.161 0.327 0.190 0.193 7.82 1.153 4.062 0.1845 24.28 3.05 20.93 2.842 0.2759 0.001357 -4 0.916 0.000572 # 320 --epochs 2 -hyp = {'giou': 1.153, # giou loss gain +hyp = {'giou': 0.8541, # giou loss gain 'xy': 4.062, # xy loss gain 'wh': 0.1845, # wh loss gain - 'cls': 24.28, # cls loss gain - 'cls_pw': 3.05, # cls BCELoss positive_weight - 'obj': 20.93, # obj loss gain - 'obj_pw': 2.842, # obj BCELoss positive_weight - 'iou_t': 0.2759, # iou target-anchor training threshold - 'lr0': 0.001357, # initial learning rate + 'cls': 21.61, # cls loss gain + 'cls_pw': 1.957, # cls BCELoss positive_weight + 'obj': 22.9, # obj loss gain + 'obj_pw': 2.894, # obj BCELoss positive_weight + 'iou_t': 0.3689, # iou target-anchor training threshold + 'lr0': 0.001844, # initial learning rate 'lrf': -4., # final learning rate = lr0 * (10 ** lrf) - 'momentum': 0.9158, # SGD momentum - 'weight_decay': 0.0005722} # optimizer weight decay + 'momentum': 0.913, # SGD momentum + 'weight_decay': 0.000467} # optimizer weight decay def train( From 3eabb1114cacbb5273fcee58db83d18dad7225cd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Jul 2019 01:15:30 +0200 Subject: [PATCH 1021/2595] updates --- cfg/yolov3-spp-1cls.cfg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cfg/yolov3-spp-1cls.cfg b/cfg/yolov3-spp-1cls.cfg index a6116ff5..88edcffb 100644 --- a/cfg/yolov3-spp-1cls.cfg +++ b/cfg/yolov3-spp-1cls.cfg @@ -16,10 +16,10 @@ exposure = 1.5 hue=.1 learning_rate=0.001 -burn_in=1000 -max_batches = 500200 +burn_in=100 +max_batches = 5000 policy=steps -steps=400000,450000 +steps=4000,4500 scales=.1,.1 [convolutional] From bcbb524944fc07b6e649b93449044e1fa3c6c23e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Jul 2019 13:02:10 +0200 Subject: [PATCH 1022/2595] updates --- cfg/yolov3-spp-1cls.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cfg/yolov3-spp-1cls.cfg b/cfg/yolov3-spp-1cls.cfg index 88edcffb..3e633973 100644 --- a/cfg/yolov3-spp-1cls.cfg +++ b/cfg/yolov3-spp-1cls.cfg @@ -4,7 +4,7 @@ # subdivisions=1 # Training batch=64 -subdivisions=16 +subdivisions=64 width=608 height=608 channels=3 From e8c205b4122871710429b2e245dda9d2c40929b4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Jul 2019 15:37:32 +0200 Subject: [PATCH 1023/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 0566bbda..d02c93ec 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -581,7 +581,7 @@ def kmeans_targets(path='./data/coco_64img.txt'): # from utils.utils import *; # Plotting functions --------------------------------------------------------------------------------------------------- def plot_one_box(x, img, color=None, label=None, line_thickness=None): # Plots one bounding box on image img - tl = line_thickness or round(0.002 * max(img.shape[0:2])) + 1 # line thickness + tl = line_thickness or round(0.002 * (img.shape[0]+img.shape[1])/2) + 1 # line thickness color = color or [random.randint(0, 255) for _ in range(3)] c1, c2 = (int(x[0]), int(x[1])), (int(x[2]), int(x[3])) cv2.rectangle(img, c1, c2, color, thickness=tl) From e73e24744265e8fb9ce7982ff61fbde30c23d911 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Jul 2019 16:07:25 +0200 Subject: [PATCH 1024/2595] updates --- utils/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index d02c93ec..7fda5289 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -130,7 +130,8 @@ def scale_coords(img1_shape, coords, img0_shape): coords[:, [0, 2]] -= (img1_shape[1] - img0_shape[1] * gain) / 2 # x padding coords[:, [1, 3]] -= (img1_shape[0] - img0_shape[0] * gain) / 2 # y padding coords[:, :4] /= gain - coords[:, :4] = coords[:, :4].clamp(min=0) + coords[:, [0, 2]] = coords[:, [0, 2]].clamp(min=0, max=img0_shape[1]) # clip x + coords[:, [1, 3]] = coords[:, [1, 3]].clamp(min=0, max=img0_shape[0]) # clip y return coords From 4e5a00fb72335ab393b7a45903f7312ba33e773a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Jul 2019 16:27:13 +0200 Subject: [PATCH 1025/2595] updates --- cfg/yolov3-spp-1cls.cfg | 2 +- test.py | 3 +++ utils/utils.py | 13 +++++++++---- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/cfg/yolov3-spp-1cls.cfg b/cfg/yolov3-spp-1cls.cfg index 3e633973..9e989e91 100644 --- a/cfg/yolov3-spp-1cls.cfg +++ b/cfg/yolov3-spp-1cls.cfg @@ -4,7 +4,7 @@ # subdivisions=1 # Training batch=64 -subdivisions=64 +subdivisions=32 width=608 height=608 channels=3 diff --git a/test.py b/test.py index e1563d26..051f5fc7 100644 --- a/test.py +++ b/test.py @@ -88,6 +88,9 @@ def test( stats.append(([], torch.Tensor(), torch.Tensor(), tcls)) continue + # Clip boxes to image bounds + clip_coords(pred, shapes[si]) + # Append to text file # with open('test.txt', 'a') as file: # [file.write('%11.5g' * 7 % tuple(x) + '\n') for x in pred] diff --git a/utils/utils.py b/utils/utils.py index 7fda5289..6f492fcf 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -125,16 +125,21 @@ def xywh2xyxy(x): def scale_coords(img1_shape, coords, img0_shape): - # Rescale coords1 (xyxy) from img1_shape to img0_shape + # Rescale coords (xyxy) from img1_shape to img0_shape gain = max(img1_shape) / max(img0_shape) # gain = old / new coords[:, [0, 2]] -= (img1_shape[1] - img0_shape[1] * gain) / 2 # x padding coords[:, [1, 3]] -= (img1_shape[0] - img0_shape[0] * gain) / 2 # y padding coords[:, :4] /= gain - coords[:, [0, 2]] = coords[:, [0, 2]].clamp(min=0, max=img0_shape[1]) # clip x - coords[:, [1, 3]] = coords[:, [1, 3]].clamp(min=0, max=img0_shape[0]) # clip y + clip_coords(coords, img0_shape) return coords +def clip_coords(boxes, img_shape): + # Clip bounding xyxy bounding boxes to image shape (height, width) + boxes[:, [0, 2]] = boxes[:, [0, 2]].clamp(min=0, max=img_shape[1]) # clip x + boxes[:, [1, 3]] = boxes[:, [1, 3]].clamp(min=0, max=img_shape[0]) # clip y + + def ap_per_class(tp, conf, pred_cls, target_cls): """ Compute the average precision, given the recall and precision curves. Source: https://github.com/rafaelpadilla/Object-Detection-Metrics. @@ -582,7 +587,7 @@ def kmeans_targets(path='./data/coco_64img.txt'): # from utils.utils import *; # Plotting functions --------------------------------------------------------------------------------------------------- def plot_one_box(x, img, color=None, label=None, line_thickness=None): # Plots one bounding box on image img - tl = line_thickness or round(0.002 * (img.shape[0]+img.shape[1])/2) + 1 # line thickness + tl = line_thickness or round(0.002 * (img.shape[0] + img.shape[1]) / 2) + 1 # line thickness color = color or [random.randint(0, 255) for _ in range(3)] c1, c2 = (int(x[0]), int(x[1])), (int(x[2]), int(x[3])) cv2.rectangle(img, c1, c2, color, thickness=tl) From 7c2623dd4fc296b5a20d5ad8594538a0c88499df Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Jul 2019 16:39:26 +0200 Subject: [PATCH 1026/2595] updates --- test.py | 2 +- utils/utils.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index 051f5fc7..9a2f7c68 100644 --- a/test.py +++ b/test.py @@ -89,7 +89,7 @@ def test( continue # Clip boxes to image bounds - clip_coords(pred, shapes[si]) + # clip_coords(pred, shapes[si]) # Append to text file # with open('test.txt', 'a') as file: diff --git a/utils/utils.py b/utils/utils.py index 6f492fcf..e0e48c04 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -130,7 +130,7 @@ def scale_coords(img1_shape, coords, img0_shape): coords[:, [0, 2]] -= (img1_shape[1] - img0_shape[1] * gain) / 2 # x padding coords[:, [1, 3]] -= (img1_shape[0] - img0_shape[0] * gain) / 2 # y padding coords[:, :4] /= gain - clip_coords(coords, img0_shape) + # clip_coords(coords, img0_shape) return coords From 6893f1daf8d817b32c04f6e6f9aad585d843a086 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Jul 2019 16:48:02 +0200 Subject: [PATCH 1027/2595] updates --- test.py | 2 +- utils/utils.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index 9a2f7c68..9ffdcf76 100644 --- a/test.py +++ b/test.py @@ -89,7 +89,7 @@ def test( continue # Clip boxes to image bounds - # clip_coords(pred, shapes[si]) + clip_coords(pred, (height, width)) # Append to text file # with open('test.txt', 'a') as file: diff --git a/utils/utils.py b/utils/utils.py index e0e48c04..6f492fcf 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -130,7 +130,7 @@ def scale_coords(img1_shape, coords, img0_shape): coords[:, [0, 2]] -= (img1_shape[1] - img0_shape[1] * gain) / 2 # x padding coords[:, [1, 3]] -= (img1_shape[0] - img0_shape[0] * gain) / 2 # y padding coords[:, :4] /= gain - # clip_coords(coords, img0_shape) + clip_coords(coords, img0_shape) return coords From 96e25462e83aea5d8dbfd0be0fc2a8f394cd55ac Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Jul 2019 17:00:04 +0200 Subject: [PATCH 1028/2595] updates --- detect.py | 29 ++++++++++++++--------------- test.py | 33 +++++++++++++++------------------ train.py | 19 ++++++++++--------- 3 files changed, 39 insertions(+), 42 deletions(-) diff --git a/detect.py b/detect.py index 568ac471..9874fe5c 100644 --- a/detect.py +++ b/detect.py @@ -7,20 +7,19 @@ from utils.datasets import * from utils.utils import * -def detect( - cfg, - data_cfg, - weights, - images='data/samples', # input folder - output='output', # output folder - fourcc='mp4v', - img_size=416, - conf_thres=0.5, - nms_thres=0.5, - save_txt=False, - save_images=True, - webcam=False -): +def detect(cfg, + data_cfg, + weights, + images='data/samples', # input folder + output='output', # output folder + fourcc='mp4v', # video codec + img_size=416, + conf_thres=0.5, + nms_thres=0.5, + save_txt=False, + save_images=True, + webcam=False): + # Initialize device = torch_utils.select_device() torch.backends.cudnn.benchmark = False # set False for reproducible results if os.path.exists(output): @@ -74,7 +73,7 @@ def detect( if det is not None and len(det) > 0: # Rescale boxes from 416 to true image size - det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round() # TODO: clamp to image border https://github.com/ultralytics/yolov3/issues/368 + det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round() # Print results to screen print('%gx%g ' % img.shape[2:], end='') # print image size diff --git a/test.py b/test.py index 9ffdcf76..ca59d4f8 100644 --- a/test.py +++ b/test.py @@ -8,18 +8,17 @@ from utils.datasets import * from utils.utils import * -def test( - cfg, - data_cfg, - weights=None, - batch_size=16, - img_size=416, - iou_thres=0.5, - conf_thres=0.001, - nms_thres=0.5, - save_json=False, - model=None -): +def test(cfg, + data_cfg, + weights=None, + batch_size=16, + img_size=416, + iou_thres=0.5, + conf_thres=0.001, + nms_thres=0.5, + save_json=False, + model=None): + # Initialize/load model and set device if model is None: device = torch_utils.select_device() @@ -104,12 +103,10 @@ def test( box = xyxy2xywh(box) # xywh box[:, :2] -= box[:, 2:] / 2 # xy center to top-left corner for di, d in enumerate(pred): - jdict.append({ - 'image_id': image_id, - 'category_id': coco91class[int(d[6])], - 'bbox': [float3(x) for x in box[di]], - 'score': float(d[4]) - }) + jdict.append({'image_id': image_id, + 'category_id': coco91class[int(d[6])], + 'bbox': [float3(x) for x in box[di]], + 'score': float(d[4])}) # Assign all predictions as incorrect correct = [0] * len(pred) diff --git a/train.py b/train.py index bd1260d3..2504265b 100644 --- a/train.py +++ b/train.py @@ -20,6 +20,8 @@ from utils.utils import * # 0.268 0.268 0.178 0.240 4.36 1.104 5.596 0.2087 14.47 2.599 16.27 2.406 0.4114 0.001585 -4 0.950 0.000524 # 0.161 0.327 0.190 0.193 7.82 1.153 4.062 0.1845 24.28 3.05 20.93 2.842 0.2759 0.001357 -4 0.916 0.000572 # 320 --epochs 2 + +# Training hyperparameters hyp = {'giou': 0.8541, # giou loss gain 'xy': 4.062, # xy loss gain 'wh': 0.1845, # wh loss gain @@ -34,15 +36,13 @@ hyp = {'giou': 0.8541, # giou loss gain 'weight_decay': 0.000467} # optimizer weight decay -def train( - cfg, - data_cfg, - img_size=416, - epochs=100, # 500200 batches at bs 16, 117263 images = 273 epochs - batch_size=16, - accumulate=4, # effective bs = batch_size * accumulate = 8 * 8 = 64 - freeze_backbone=False, -): +def train(cfg, + data_cfg, + img_size=416, + epochs=100, # 500200 batches at bs 16, 117263 images = 273 epochs + batch_size=16, + accumulate=4): # effective bs = batch_size * accumulate = 8 * 8 = 64 + # Initialize init_seeds() weights = 'weights' + os.sep latest = weights + 'latest.pt' @@ -178,6 +178,7 @@ def train( scheduler.step() # Freeze backbone at epoch 0, unfreeze at epoch 1 (optional) + freeze_backbone = False if freeze_backbone and epoch < 2: for name, p in model.named_parameters(): if int(name.split('.')[1]) < cutoff: # if layer < 75 From 8501aed49fc5d617db685b8d80fcd5460d768841 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Jul 2019 17:54:31 +0200 Subject: [PATCH 1029/2595] updates --- README.md | 7 ++++--- train.py | 14 +++++++------- utils/datasets.py | 10 +++++++--- utils/gcp.sh | 12 ++++++------ 4 files changed, 24 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 001668ee..8d619d8e 100755 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ https://colab.research.google.com/drive/1G8T-VFxQkjDe4idzN8F-hbIBqkkkQnxw **Start Training:** `python3 train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. -**Resume Training:** `python3 train.py --resume` to resume training from `weights/latest.pt`. +**Resume Training:** `python3 train.py --resume` to resume training from `weights/last.pt`. Each epoch trains on 117,263 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. Default training settings produce loss plots below, with **training speed of 0.25 s/batch on a V100 GPU (almost 50 COCO epochs/day)**. @@ -136,8 +136,9 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' # mAP -- Use `test.py --weights weights/yolov3.weights` to test the official YOLOv3 weights. -- Use `test.py --weights weights/latest.pt` to test the latest training results. +- `test.py --weights weights/yolov3.weights` to test official YOLOv3 weights. +- `test.py --weights weights/last.pt` to test most recent checkpoint. +- `test.py --weights weights/best.pt` to test best checkpoint. - Compare to darknet published results https://arxiv.org/abs/1804.02767. - | [ultralytics/yolov3](https://github.com/ultralytics/yolov3) | [darknet](https://arxiv.org/abs/1804.02767) ---- | --- | --- -`YOLOv3 320` | 51.8 | 51.5 -`YOLOv3 416` | 55.4 | 55.3 -`YOLOv3 608` | 58.2 | 57.9 -`YOLOv3-spp 320` | 52.4 | - -`YOLOv3-spp 416` | 56.5 | - -`YOLOv3-spp 608` | 60.7 | 60.6 + | 320 | 416 | 608 +--- | --- | --- | --- +`YOLOv3` | 51.8 (51.5) | 55.4 (55.3) | 58.2 (57.9) +`YOLOv3-SPP` | 52.4 | 56.5 | 60.7 (60.6) +`YOLOv3-tiny` | 29.0 | 32.9 (33.1) | 35.5 ``` bash # install pycocotools From 48af6d136f147fa1fd1caad4dbbdf3333e0ceb61 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 14 Aug 2019 15:54:40 +0200 Subject: [PATCH 1220/2595] updates --- README.md | 2 +- requirements.txt | 11 +++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 83f6de00..5fa037b7 100755 --- a/README.md +++ b/README.md @@ -132,7 +132,7 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' - `test.py --weights weights/best.pt` tests best checkpoint. - Compare to darknet published results https://arxiv.org/abs/1804.02767. -[ultralytics/yolov3](https://github.com/ultralytics/yolov3) mAP@0.5 ([darknet](https://arxiv.org/abs/1804.02767) reported mAP@0.5) +[ultralytics/yolov3](https://github.com/ultralytics/yolov3) mAP@0.5 ([darknet](https://arxiv.org/abs/1804.02767)-reported mAP@0.5) | 320 | 416 | 608 --- | --- | --- | --- diff --git a/requirements.txt b/requirements.txt index ab90fad2..efeae3cf 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,4 @@ # pip3 install -U -r requirements.txt -# conda install -y numpy opencv matplotlib tqdm pillow && conda install -y scikit-image -c conda-forge && conda install -y -c spyder-ide spyder-line-profiler -# conda install -y -c conda-forge tensorboard && conda install -y -c anaconda future -# conda install pytorch torchvision -c pytorch - numpy opencv-python torch >= 1.1.0 @@ -12,3 +8,10 @@ tqdm tb-nightly future Pillow + +# Equivalent conda commands ---------------------------------------------------- +# conda update -n base -c defaults conda +# conda install -y -c anaconda future numpy opencv matplotlib tqdm pillow +# conda install -y -c conda-forge scikit-image tensorboard pycocotools +# conda install -y -c spyder-ide spyder-line-profiler +# conda install pytorch torchvision -c pytorch From 1c0d408fbf74dd9233ee5fe015320df24f9e7ca7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 15 Aug 2019 13:44:42 +0200 Subject: [PATCH 1221/2595] updates --- test.py | 2 +- train.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/test.py b/test.py index f98811fe..a16e57c3 100644 --- a/test.py +++ b/test.py @@ -48,7 +48,7 @@ def test(cfg, dataset = LoadImagesAndLabels(test_path, img_size, batch_size) dataloader = DataLoader(dataset, batch_size=batch_size, - num_workers=os.cpu_count(), + num_workers=min(os.cpu_count(), batch_size), pin_memory=True, collate_fn=dataset.collate_fn) diff --git a/train.py b/train.py index 0d1aa45d..99beaa2e 100644 --- a/train.py +++ b/train.py @@ -172,7 +172,7 @@ def train(cfg, # Dataloader dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, - num_workers=opt.num_workers, + num_workers=min(os.cpu_count(), batch_size), shuffle=not opt.rect, # Shuffle=True unless rectangular training is used pin_memory=True, collate_fn=dataset.collate_fn) @@ -341,7 +341,6 @@ if __name__ == '__main__': parser.add_argument('--rect', action='store_true', help='rectangular training') parser.add_argument('--resume', action='store_true', help='resume training flag') parser.add_argument('--transfer', action='store_true', help='transfer learning flag') - parser.add_argument('--num-workers', type=int, default=os.cpu_count(), help='DataLoader workers') parser.add_argument('--nosave', action='store_true', help='only save final checkpoint') parser.add_argument('--notest', action='store_true', help='only test final epoch') parser.add_argument('--xywh', action='store_true', help='use xywh loss instead of GIoU loss') From a8996d5d3ae2bdcc2f58e9c6f20446e64f8bd095 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 15 Aug 2019 14:10:08 +0200 Subject: [PATCH 1222/2595] updates --- train.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index 99beaa2e..cb0ecf08 100644 --- a/train.py +++ b/train.py @@ -272,10 +272,16 @@ def train(cfg, pbar.set_description(s) # Calculate mAP (always test final epoch, skip first 5 if opt.nosave) - if not (opt.notest or (opt.nosave and epoch < 10)) or epoch == epochs - 1: + final_epoch = epoch + 1 == epochs + if not (opt.notest or (opt.nosave and epoch < 10)) or final_epoch: with torch.no_grad(): - results, maps = test.test(cfg, data, batch_size=batch_size, img_size=opt.img_size, model=model, - conf_thres=0.1) + results, maps = test.test(cfg, + data, + batch_size=batch_size, + img_size=opt.img_size, + model=model, + conf_thres=0.001 if final_epoch else 0.1, # 0.1 for speed + save_json=final_epoch and 'coco.data' in data) # Write epoch results with open('results.txt', 'a') as file: @@ -295,7 +301,7 @@ def train(cfg, best_fitness = fitness # Save training results - save = (not opt.nosave) or ((not opt.evolve) and (epoch == epochs - 1)) + save = (not opt.nosave) or ((not opt.evolve) and final_epoch) if save: with open('results.txt', 'r') as file: # Create checkpoint From c4cc95bdbdf2556b0c04503d3640af5557a232dd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 15 Aug 2019 16:09:36 +0200 Subject: [PATCH 1223/2595] kmeans update --- utils/datasets.py | 1 + utils/utils.py | 54 ++++++++++++++++++----------------------------- 2 files changed, 22 insertions(+), 33 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index ac3b33c4..941352dd 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -208,6 +208,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing i = ar.argsort() self.img_files = [self.img_files[i] for i in i] self.label_files = [self.label_files[i] for i in i] + self.shapes = s[i] ar = ar[i] # Set training image shapes diff --git a/utils/utils.py b/utils/utils.py index fdb0c4c0..867def60 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -575,42 +575,30 @@ def coco_single_class_labels(path='../coco/labels/train2014/', label_class=43): shutil.copyfile(src=img_file, dst='new/images/' + Path(file).name.replace('txt', 'jpg')) # copy images -def kmeans_targets(path='./data/coco_64img.txt', n=9, img_size=320): # from utils.utils import *; kmeans_targets() +def kmeans_targets(path='data/coco_64img.txt', n=9, img_size=416): # from utils.utils import *; kmeans_targets() # Produces a list of target kmeans suitable for use in *.cfg files - img_formats = ['.bmp', '.jpg', '.jpeg', '.png', '.tif'] - with open(path, 'r') as f: - img_files = [x for x in f.read().splitlines() if os.path.splitext(x)[-1].lower() in img_formats] - - # Read shapes - nf = len(img_files) - assert nf > 0, 'No images found in %s' % path - label_files = [x.replace('images', 'labels').replace(os.path.splitext(x)[-1], '.txt') for x in img_files] - s = np.array([Image.open(f).size for f in tqdm(img_files, desc='Reading image shapes')]) # (width, height) - - # Read targets - labels = [np.zeros((0, 5))] * nf - iter = tqdm(label_files, desc='Reading labels') - for i, file in enumerate(iter): - try: - with open(file, 'r') as f: - l = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) - if l.shape[0]: - assert l.shape[1] == 5, '> 5 label columns: %s' % file - assert (l >= 0).all(), 'negative labels: %s' % file - assert (l[:, 1:] <= 1).all(), 'non-normalized or out of bounds coordinate labels: %s' % file - l[:, [1, 3]] *= s[i][0] - l[:, [2, 4]] *= s[i][1] - l[:, 1:] *= img_size / max(s[i]) # nominal img_size for training here - labels[i] = l - except: - pass # print('Warning: missing labels for %s' % self.img_files[i]) # missing label file - assert len(np.concatenate(labels, 0)) > 0, 'No labels found. Incorrect label paths provided.' - - # kmeans calculation + from utils.datasets import LoadImagesAndLabels from scipy import cluster - wh = np.concatenate(labels, 0)[:, 3:5] + + # Get label wh + dataset = LoadImagesAndLabels(path, augment=True, rect=True) + for s, l in zip(dataset.shapes, dataset.labels): + l[:, [1, 3]] *= s[0] + l[:, [2, 4]] *= s[1] + l[:, 1:] *= img_size / max(s) # nominal img_size for training here + wh = np.concatenate(dataset.labels, 0)[:, 3:5] # wh from cxywh + + # Kmeans calculation k = cluster.vq.kmeans(wh, n)[0] - k = k[np.argsort(k.prod(1))] + k = k[np.argsort(k.prod(1))] # sort small to large + + # Measure IoUs + iou = torch.stack([wh_iou(torch.Tensor(wh).T, torch.Tensor(x).T) for x in k], 0) + miou = iou.mean() # mean IoU with all anchors + biou = iou.max(0)[0].mean() # mean IoU with the closest anchor + + # Print results + print('kmeans anchors (n=%g, img_size=%g, IoU=%.2f/%.2f mean/best): ' % (n, img_size, miou, biou), end='') for x in k.ravel(): print('%.1f, ' % x, end='') # drop-in replacement for *.cfg anchors From 4f78eec83ed132839de5d49d8e311725ca2cf272 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 15 Aug 2019 16:11:34 +0200 Subject: [PATCH 1224/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 867def60..9dd5cf4e 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -583,9 +583,9 @@ def kmeans_targets(path='data/coco_64img.txt', n=9, img_size=416): # from utils # Get label wh dataset = LoadImagesAndLabels(path, augment=True, rect=True) for s, l in zip(dataset.shapes, dataset.labels): - l[:, [1, 3]] *= s[0] + l[:, [1, 3]] *= s[0] # normalized to pixels l[:, [2, 4]] *= s[1] - l[:, 1:] *= img_size / max(s) # nominal img_size for training here + l[:, 1:] *= img_size / max(s) # nominal img_size for training wh = np.concatenate(dataset.labels, 0)[:, 3:5] # wh from cxywh # Kmeans calculation From be7f4fa72f4caf8c1f5fc1392db255102ef204a4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 15 Aug 2019 16:57:17 +0200 Subject: [PATCH 1225/2595] updates --- utils/utils.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 9dd5cf4e..988a5ff1 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -594,13 +594,16 @@ def kmeans_targets(path='data/coco_64img.txt', n=9, img_size=416): # from utils # Measure IoUs iou = torch.stack([wh_iou(torch.Tensor(wh).T, torch.Tensor(x).T) for x in k], 0) - miou = iou.mean() # mean IoU with all anchors - biou = iou.max(0)[0].mean() # mean IoU with the closest anchor + biou = iou.max(0)[0] # closest anchor IoU - # Print results - print('kmeans anchors (n=%g, img_size=%g, IoU=%.2f/%.2f mean/best): ' % (n, img_size, miou, biou), end='') - for x in k.ravel(): - print('%.1f, ' % x, end='') # drop-in replacement for *.cfg anchors + # Print + print('kmeans anchors (n=%g, img_size=%g, IoU=%.2f/%.2f/%.2f-min/mean/best): ' % + (n, img_size, biou.min(), iou.mean(), biou.mean()), end='') + for i, x in enumerate(k): + print('%i,%i' % (round(x[0]), round(x[1])), end=', ' if i < len(k) - 1 else '\n') # use in *.cfg + + # Plot + # plt.hist(biou.numpy().ravel(), 100) def print_mutation(hyp, results, bucket=''): From 5a9fb2411d89749c9afad21bee50c67b1b2afc1e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 15 Aug 2019 18:15:27 +0200 Subject: [PATCH 1226/2595] updates --- models.py | 9 +++------ utils/parse_config.py | 37 ++++++++++++++++++++++--------------- utils/utils.py | 1 - 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/models.py b/models.py index 0e9d752f..d6e31eaa 100755 --- a/models.py +++ b/models.py @@ -1,8 +1,7 @@ +import torch.nn.functional as F + from utils.parse_config import * from utils.utils import * -from pathlib import Path - -import torch.nn.functional as F ONNX_EXPORT = False @@ -71,9 +70,7 @@ def create_modules(module_defs, img_size): elif mdef['type'] == 'yolo': yolo_index += 1 mask = [int(x) for x in mdef['mask'].split(',')] # anchor mask - a = [float(x) for x in mdef['anchors'].split(',')] # anchors - a = [(a[i], a[i + 1]) for i in range(0, len(a), 2)] - modules = YOLOLayer(anchors=[a[i] for i in mask], # anchor list + modules = YOLOLayer(anchors=mdef['anchors'][mask], # anchor list nc=int(mdef['classes']), # number of classes img_size=img_size, # (416, 416) yolo_index=yolo_index) # 0, 1 or 2 diff --git a/utils/parse_config.py b/utils/parse_config.py index a25eca3f..23581a51 100644 --- a/utils/parse_config.py +++ b/utils/parse_config.py @@ -1,35 +1,42 @@ +import numpy as np + + def parse_model_cfg(path): - """Parses the yolo-v3 layer configuration file and returns module definitions""" + # Parses the yolo-v3 layer configuration file and returns module definitions file = open(path, 'r') lines = file.read().split('\n') lines = [x for x in lines if x and not x.startswith('#')] lines = [x.rstrip().lstrip() for x in lines] # get rid of fringe whitespaces - module_defs = [] + mdefs = [] # module definitions for line in lines: if line.startswith('['): # This marks the start of a new block - module_defs.append({}) - module_defs[-1]['type'] = line[1:-1].rstrip() - if module_defs[-1]['type'] == 'convolutional': - module_defs[-1]['batch_normalize'] = 0 # pre-populate with zeros (may be overwritten later) + mdefs.append({}) + mdefs[-1]['type'] = line[1:-1].rstrip() + if mdefs[-1]['type'] == 'convolutional': + mdefs[-1]['batch_normalize'] = 0 # pre-populate with zeros (may be overwritten later) else: - key, value = line.split("=") - value = value.strip() - module_defs[-1][key.rstrip()] = value.strip() + key, val = line.split("=") + key = key.rstrip() - return module_defs + if 'anchors' in key: + mdefs[-1][key] = np.array([float(x) for x in val.split(',')]).reshape((-1, 2)) # np anchors + else: + mdefs[-1][key] = val.strip() + + return mdefs def parse_data_cfg(path): - """Parses the data configuration file""" + # Parses the data configuration file options = dict() - options['gpus'] = '0,1,2,3' - options['num_workers'] = '10' with open(path, 'r') as fp: lines = fp.readlines() + for line in lines: line = line.strip() if line == '' or line.startswith('#'): continue - key, value = line.split('=') - options[key.strip()] = value.strip() + key, val = line.split('=') + options[key.strip()] = val.strip() + return options diff --git a/utils/utils.py b/utils/utils.py index 988a5ff1..b6e8a678 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -10,7 +10,6 @@ import matplotlib.pyplot as plt import numpy as np import torch import torch.nn as nn -from PIL import Image from tqdm import tqdm from . import torch_utils # , google_utils From d76677da06bc6b155c476613b86d938e70aabd8b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 15 Aug 2019 19:12:09 +0200 Subject: [PATCH 1227/2595] updates --- cfg/yolov3s-18a320.cfg | 821 +++++++++++++++++++++++++++++++++++++++++ utils/utils.py | 2 + 2 files changed, 823 insertions(+) create mode 100644 cfg/yolov3s-18a320.cfg diff --git a/cfg/yolov3s-18a320.cfg b/cfg/yolov3s-18a320.cfg new file mode 100644 index 00000000..8dfadb63 --- /dev/null +++ b/cfg/yolov3s-18a320.cfg @@ -0,0 +1,821 @@ +[net] +# Testing +# batch=1 +# subdivisions=1 +# Training +batch=64 +subdivisions=16 +width=608 +height=608 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +###################### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +### SPP ### +[maxpool] +stride=1 +size=5 + +[route] +layers=-2 + +[maxpool] +stride=1 +size=9 + +[route] +layers=-4 + +[maxpool] +stride=1 +size=13 + +[route] +layers=-1,-3,-5,-6 + +### End SPP ### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 12,13,14,15,16,17 +anchors = 7,8, 11,19, 27,15, 20,35, 51,28, 28,58, 61,57, 42,95, 106,42, 93,90, 63,146, 183,72, 131,133, 102,210, 287,92, 200,171, 186,273, 301,211 +classes=80 +num=18 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 61 + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 6,7,8,9,10,11 +anchors = 7,8, 11,19, 27,15, 20,35, 51,28, 28,58, 61,57, 42,95, 106,42, 93,90, 63,146, 183,72, 131,133, 102,210, 287,92, 200,171, 186,273, 301,211 +classes=80 +num=18 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 36 + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 0,1,2,3,4,5 +anchors = 7,8, 11,19, 27,15, 20,35, 51,28, 28,58, 61,57, 42,95, 106,42, 93,90, 63,146, 183,72, 131,133, 102,210, 287,92, 200,171, 186,273, 301,211 +classes=80 +num=18 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 diff --git a/utils/utils.py b/utils/utils.py index b6e8a678..2e32b28a 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -595,6 +595,8 @@ def kmeans_targets(path='data/coco_64img.txt', n=9, img_size=416): # from utils iou = torch.stack([wh_iou(torch.Tensor(wh).T, torch.Tensor(x).T) for x in k], 0) biou = iou.max(0)[0] # closest anchor IoU + print((biou < 0.2635).float().mean()) + # Print print('kmeans anchors (n=%g, img_size=%g, IoU=%.2f/%.2f/%.2f-min/mean/best): ' % (n, img_size, biou.min(), iou.mean(), biou.mean()), end='') From 4c50c7ea8b880d444b88ae4989b0c1f84418dddb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 15 Aug 2019 19:16:58 +0200 Subject: [PATCH 1228/2595] updates --- cfg/yolov3s-18a320.cfg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cfg/yolov3s-18a320.cfg b/cfg/yolov3s-18a320.cfg index 8dfadb63..8bcd0e00 100644 --- a/cfg/yolov3s-18a320.cfg +++ b/cfg/yolov3s-18a320.cfg @@ -633,7 +633,7 @@ activation=leaky size=1 stride=1 pad=1 -filters=255 +filters=510 activation=linear @@ -719,7 +719,7 @@ activation=leaky size=1 stride=1 pad=1 -filters=255 +filters=510 activation=linear @@ -806,7 +806,7 @@ activation=leaky size=1 stride=1 pad=1 -filters=255 +filters=510 activation=linear From 1ea0ab320e71fc00dd8bf681e4cd1c072e944829 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 15 Aug 2019 20:19:30 +0200 Subject: [PATCH 1229/2595] updates --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 997fba97..9ff1a375 100755 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ *.cfg !cfg/yolov3*.cfg +runs/* data/* !data/samples/zidane.jpg !data/samples/bus.jpg From e0c116b366cd4dd7ce7278d6a96c086bf7e5a31e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 15 Aug 2019 20:22:44 +0200 Subject: [PATCH 1230/2595] updates --- cfg/yolov3s-9a320.cfg | 821 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 821 insertions(+) create mode 100644 cfg/yolov3s-9a320.cfg diff --git a/cfg/yolov3s-9a320.cfg b/cfg/yolov3s-9a320.cfg new file mode 100644 index 00000000..a349a9a2 --- /dev/null +++ b/cfg/yolov3s-9a320.cfg @@ -0,0 +1,821 @@ +[net] +# Testing +# batch=1 +# subdivisions=1 +# Training +batch=64 +subdivisions=16 +width=608 +height=608 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +###################### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +### SPP ### +[maxpool] +stride=1 +size=5 + +[route] +layers=-2 + +[maxpool] +stride=1 +size=9 + +[route] +layers=-4 + +[maxpool] +stride=1 +size=13 + +[route] +layers=-1,-3,-5,-6 + +### End SPP ### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 6,7,8 +anchors = 9,11, 26,27, 32,63, 72,44, 61,121, 135,88, 255,98, 125,201, 267,221 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 61 + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 3,4,5 +anchors = 9,11, 26,27, 32,63, 72,44, 61,121, 135,88, 255,98, 125,201, 267,221 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 36 + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 0,1,2 +anchors = 9,11, 26,27, 32,63, 72,44, 61,121, 135,88, 255,98, 125,201, 267,221 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 From ac88bc2dcf6806a0efe796ab19caf76e4711440f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 15 Aug 2019 20:53:56 +0200 Subject: [PATCH 1231/2595] updates --- cfg/yolov3s-18a320.cfg | 6 +++--- cfg/yolov3s-9a320.cfg | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cfg/yolov3s-18a320.cfg b/cfg/yolov3s-18a320.cfg index 8bcd0e00..1f39f4ef 100644 --- a/cfg/yolov3s-18a320.cfg +++ b/cfg/yolov3s-18a320.cfg @@ -639,7 +639,7 @@ activation=linear [yolo] mask = 12,13,14,15,16,17 -anchors = 7,8, 11,19, 27,15, 20,35, 51,28, 28,58, 61,57, 42,95, 106,42, 93,90, 63,146, 183,72, 131,133, 102,210, 287,92, 200,171, 186,273, 301,211 +anchors = 7,8, 11,20, 27,15, 20,36, 50,29, 28,60, 61,61, 99,39, 43,99, 98,91, 66,148, 180,68, 139,135, 104,210, 285,92, 205,173, 186,274, 302,212 classes=80 num=18 jitter=.3 @@ -725,7 +725,7 @@ activation=linear [yolo] mask = 6,7,8,9,10,11 -anchors = 7,8, 11,19, 27,15, 20,35, 51,28, 28,58, 61,57, 42,95, 106,42, 93,90, 63,146, 183,72, 131,133, 102,210, 287,92, 200,171, 186,273, 301,211 +anchors = 7,8, 11,20, 27,15, 20,36, 50,29, 28,60, 61,61, 99,39, 43,99, 98,91, 66,148, 180,68, 139,135, 104,210, 285,92, 205,173, 186,274, 302,212 classes=80 num=18 jitter=.3 @@ -812,7 +812,7 @@ activation=linear [yolo] mask = 0,1,2,3,4,5 -anchors = 7,8, 11,19, 27,15, 20,35, 51,28, 28,58, 61,57, 42,95, 106,42, 93,90, 63,146, 183,72, 131,133, 102,210, 287,92, 200,171, 186,273, 301,211 +anchors = 7,8, 11,20, 27,15, 20,36, 50,29, 28,60, 61,61, 99,39, 43,99, 98,91, 66,148, 180,68, 139,135, 104,210, 285,92, 205,173, 186,274, 302,212 classes=80 num=18 jitter=.3 diff --git a/cfg/yolov3s-9a320.cfg b/cfg/yolov3s-9a320.cfg index a349a9a2..0200180d 100644 --- a/cfg/yolov3s-9a320.cfg +++ b/cfg/yolov3s-9a320.cfg @@ -639,7 +639,7 @@ activation=linear [yolo] mask = 6,7,8 -anchors = 9,11, 26,27, 32,63, 72,44, 61,121, 135,88, 255,98, 125,201, 267,221 +anchors = 9,11, 25,27, 33,63, 71,43, 62,120, 135,86, 123,199, 257,100, 264,223 classes=80 num=9 jitter=.3 @@ -725,7 +725,7 @@ activation=linear [yolo] mask = 3,4,5 -anchors = 9,11, 26,27, 32,63, 72,44, 61,121, 135,88, 255,98, 125,201, 267,221 +anchors = 9,11, 25,27, 33,63, 71,43, 62,120, 135,86, 123,199, 257,100, 264,223 classes=80 num=9 jitter=.3 @@ -812,7 +812,7 @@ activation=linear [yolo] mask = 0,1,2 -anchors = 9,11, 26,27, 32,63, 72,44, 61,121, 135,88, 255,98, 125,201, 267,221 +anchors = 9,11, 25,27, 33,63, 71,43, 62,120, 135,86, 123,199, 257,100, 264,223 classes=80 num=9 jitter=.3 From a172e96f10cf463d492438fc38815d80e856894e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 15 Aug 2019 21:01:24 +0200 Subject: [PATCH 1232/2595] updates --- cfg/yolov3s-30a320.cfg | 821 +++++++++++++++++++++++++++++++++++++++++ utils/utils.py | 2 +- 2 files changed, 822 insertions(+), 1 deletion(-) create mode 100644 cfg/yolov3s-30a320.cfg diff --git a/cfg/yolov3s-30a320.cfg b/cfg/yolov3s-30a320.cfg new file mode 100644 index 00000000..bcc8920f --- /dev/null +++ b/cfg/yolov3s-30a320.cfg @@ -0,0 +1,821 @@ +[net] +# Testing +# batch=1 +# subdivisions=1 +# Training +batch=64 +subdivisions=16 +width=608 +height=608 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +###################### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +### SPP ### +[maxpool] +stride=1 +size=5 + +[route] +layers=-2 + +[maxpool] +stride=1 +size=9 + +[route] +layers=-4 + +[maxpool] +stride=1 +size=13 + +[route] +layers=-1,-3,-5,-6 + +### End SPP ### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=765 +activation=linear + + +[yolo] +mask = 20,21,22,23,24,25,26,27,28,29 +anchors = 6,7, 9,18, 17,10, 21,22, 14,33, 36,15, 22,51, 34,34, 59,24, 32,74, 51,49, 90,38, 41,105, 67,72, 144,48, 54,148, 106,79, 81,109, 211,63, 107,147, 81,200, 149,112, 297,73, 152,187, 214,135, 121,264, 220,206, 299,153, 211,291, 309,230 +classes=80 +num=30 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 61 + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=765 +activation=linear + + +[yolo] +mask = 10,11,12,13,14,15,16,17,18,19 +anchors = 6,7, 9,18, 17,10, 21,22, 14,33, 36,15, 22,51, 34,34, 59,24, 32,74, 51,49, 90,38, 41,105, 67,72, 144,48, 54,148, 106,79, 81,109, 211,63, 107,147, 81,200, 149,112, 297,73, 152,187, 214,135, 121,264, 220,206, 299,153, 211,291, 309,230 +classes=80 +num=30 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 36 + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=765 +activation=linear + + +[yolo] +mask = 0,1,2,3,4,5,6,7,8,9 +anchors = 6,7, 9,18, 17,10, 21,22, 14,33, 36,15, 22,51, 34,34, 59,24, 32,74, 51,49, 90,38, 41,105, 67,72, 144,48, 54,148, 106,79, 81,109, 211,63, 107,147, 81,200, 149,112, 297,73, 152,187, 214,135, 121,264, 220,206, 299,153, 211,291, 309,230 +classes=80 +num=30 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 diff --git a/utils/utils.py b/utils/utils.py index 2e32b28a..13a9f85e 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -574,7 +574,7 @@ def coco_single_class_labels(path='../coco/labels/train2014/', label_class=43): shutil.copyfile(src=img_file, dst='new/images/' + Path(file).name.replace('txt', 'jpg')) # copy images -def kmeans_targets(path='data/coco_64img.txt', n=9, img_size=416): # from utils.utils import *; kmeans_targets() +def kmeans_targets(path='../coco/trainvalno5k.txt', n=9, img_size=416): # from utils.utils import *; kmeans_targets() # Produces a list of target kmeans suitable for use in *.cfg files from utils.datasets import LoadImagesAndLabels from scipy import cluster From b3717c9ef88a466e53df48094e0e23156ce0d167 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 15 Aug 2019 21:06:17 +0200 Subject: [PATCH 1233/2595] updates --- cfg/yolov3s-30a320.cfg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cfg/yolov3s-30a320.cfg b/cfg/yolov3s-30a320.cfg index bcc8920f..d5cb7bad 100644 --- a/cfg/yolov3s-30a320.cfg +++ b/cfg/yolov3s-30a320.cfg @@ -633,7 +633,7 @@ activation=leaky size=1 stride=1 pad=1 -filters=765 +filters=850 activation=linear @@ -719,7 +719,7 @@ activation=leaky size=1 stride=1 pad=1 -filters=765 +filters=850 activation=linear @@ -806,7 +806,7 @@ activation=leaky size=1 stride=1 pad=1 -filters=765 +filters=850 activation=linear From b030d681087c3ae60027ebdd943dd1621c152f0f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 16 Aug 2019 00:42:25 +0200 Subject: [PATCH 1234/2595] updates --- train.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index cb0ecf08..95ab9510 100644 --- a/train.py +++ b/train.py @@ -33,7 +33,7 @@ except: # 0.268 0.268 0.178 0.240 4.36 1.104 5.596 0.2087 14.47 2.599 16.27 2.406 0.4114 0.001585 -4 0.950 0.000524 # hc # 0.161 0.327 0.190 0.193 7.82 1.153 4.062 0.1845 24.28 3.05 20.93 2.842 0.2759 0.001357 -4 0.916 0.000572 # hd 0.438 mAP @ epoch 100 -# Training hyperparameters j (50.5 mAP yolov3-320) evolved by @ktian08 https://github.com/ultralytics/yolov3/issues/310 +# Hyperparameters (j-series, 50.5 mAP yolov3-320) evolved by @ktian08 https://github.com/ultralytics/yolov3/issues/310 hyp = {'giou': 1.582, # giou loss gain 'xy': 4.688, # xy loss gain 'wh': 0.1857, # wh loss gain @@ -53,6 +53,26 @@ hyp = {'giou': 1.582, # giou loss gain 'scale': 0.1059, # image scale (+/- gain) 'shear': 0.5768} # image shear (+/- deg) +# Hyperparameters (k-series, j-series with all *_pw=1) +# hyp = {'giou': 1.582, # giou loss gain +# 'xy': 4.688, # xy loss gain +# 'wh': 0.1857, # wh loss gain +# 'cls': 40.14, # cls loss gain +# 'cls_pw': 1.0, # cls BCELoss positive_weight +# 'obj': 84.14, # obj loss gain +# 'obj_pw': 1.0, # obj BCELoss positive_weight +# 'iou_t': 0.2635, # iou training threshold +# 'lr0': 0.002324, # initial learning rate +# 'lrf': -4., # final LambdaLR learning rate = lr0 * (10 ** lrf) +# 'momentum': 0.97, # SGD momentum +# 'weight_decay': 0.0004569, # optimizer weight decay +# 'hsv_s': 0.5703, # image HSV-Saturation augmentation (fraction) +# 'hsv_v': 0.3174, # image HSV-Value augmentation (fraction) +# 'degrees': 1.113, # image rotation (+/- deg) +# 'translate': 0.06797, # image translation (+/- fraction) +# 'scale': 0.1059, # image scale (+/- gain) +# 'shear': 0.5768} # image shear (+/- deg) + def train(cfg, data, From dbb2cbe0d595593d47cc286d75090e6583cb417e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 16 Aug 2019 01:31:59 +0200 Subject: [PATCH 1235/2595] updates --- utils/gcp.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 789f36bd..0f3051e0 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -5,7 +5,8 @@ rm -rf sample_data yolov3 darknet apex coco cocoapi knife knifec git clone https://github.com/ultralytics/yolov3 git clone https://github.com/AlexeyAB/darknet && cd darknet && make GPU=1 CUDNN=1 CUDNN_HALF=1 OPENCV=1 && wget -c https://pjreddie.com/media/files/darknet53.conv.74 && cd .. git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex -git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 +#git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 +sudo conda install -y -c conda-forge scikit-image tensorboard pycocotools python3 -c " from yolov3.utils.google_utils import gdrive_download gdrive_download('1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO','coco.zip') @@ -17,7 +18,7 @@ sudo shutdown rm -rf yolov3 # Warning: remove existing git clone https://github.com/ultralytics/yolov3 # master # git clone -b test --depth 1 https://github.com/ultralytics/yolov3 test # branch -cp -r cocoapi/PythonAPI/pycocotools yolov3 +# cp -r cocoapi/PythonAPI/pycocotools yolov3 cp -r weights yolov3 && cd yolov3 # Train From b450db18ae3530d4d5fda8193f838a381880bde4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 16 Aug 2019 11:08:07 +0200 Subject: [PATCH 1236/2595] updates --- train.py | 2 +- utils/gcp.sh | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/train.py b/train.py index 95ab9510..8df94557 100644 --- a/train.py +++ b/train.py @@ -37,7 +37,7 @@ except: hyp = {'giou': 1.582, # giou loss gain 'xy': 4.688, # xy loss gain 'wh': 0.1857, # wh loss gain - 'cls': 27.76, # cls loss gain + 'cls': 27.76, # cls loss gain (CE should be around ~1.0) 'cls_pw': 1.446, # cls BCELoss positive_weight 'obj': 21.35, # obj loss gain 'obj_pw': 3.941, # obj BCELoss positive_weight diff --git a/utils/gcp.sh b/utils/gcp.sh index 0f3051e0..a7f2c19f 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -18,7 +18,6 @@ sudo shutdown rm -rf yolov3 # Warning: remove existing git clone https://github.com/ultralytics/yolov3 # master # git clone -b test --depth 1 https://github.com/ultralytics/yolov3 test # branch -# cp -r cocoapi/PythonAPI/pycocotools yolov3 cp -r weights yolov3 && cd yolov3 # Train From 9953335cfec323e695463aed01137627d13d9f05 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 16 Aug 2019 17:00:20 +0200 Subject: [PATCH 1237/2595] updates --- cfg/yolov3s-3a320.cfg | 821 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 821 insertions(+) create mode 100644 cfg/yolov3s-3a320.cfg diff --git a/cfg/yolov3s-3a320.cfg b/cfg/yolov3s-3a320.cfg new file mode 100644 index 00000000..79897398 --- /dev/null +++ b/cfg/yolov3s-3a320.cfg @@ -0,0 +1,821 @@ +[net] +# Testing +# batch=1 +# subdivisions=1 +# Training +batch=64 +subdivisions=16 +width=608 +height=608 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +###################### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +### SPP ### +[maxpool] +stride=1 +size=5 + +[route] +layers=-2 + +[maxpool] +stride=1 +size=9 + +[route] +layers=-4 + +[maxpool] +stride=1 +size=13 + +[route] +layers=-1,-3,-5,-6 + +### End SPP ### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=85 +activation=linear + + +[yolo] +mask = 2 +anchors = 16,30, 62,45, 156,198 +classes=80 +num=3 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 61 + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=85 +activation=linear + + +[yolo] +mask = 1 +anchors = 16,30, 62,45, 156,198 +classes=80 +num=3 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 36 + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=85 +activation=linear + + +[yolo] +mask = 0 +anchors = 16,30, 62,45, 156,198 +classes=80 +num=3 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 From 321bd957647ff68a676a6ac2e37d50ff96ece4ef Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 17 Aug 2019 02:14:28 +0200 Subject: [PATCH 1238/2595] updates --- models.py | 3 ++- train.py | 2 +- utils/utils.py | 8 ++++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index d6e31eaa..eb2fdcea 100755 --- a/models.py +++ b/models.py @@ -156,7 +156,8 @@ class YOLOLayer(nn.Module): io[..., :4] *= self.stride io[..., 4:] = torch.sigmoid(io[..., 4:]) # p_conf, p_cls - # io[..., 5:] = F.softmax(io[..., 5:], dim=4) # p_cls + # io[..., 4:] = F.softmax(io[..., 4:], dim=4) # unified detection CE + # io[..., 4] = io[..., 5:].max(4)[0] # unified detection BCE if self.nc == 1: io[..., 5] = 1 # single-class model https://github.com/ultralytics/yolov3/issues/235 diff --git a/train.py b/train.py index 8df94557..0166dccb 100644 --- a/train.py +++ b/train.py @@ -37,7 +37,7 @@ except: hyp = {'giou': 1.582, # giou loss gain 'xy': 4.688, # xy loss gain 'wh': 0.1857, # wh loss gain - 'cls': 27.76, # cls loss gain (CE should be around ~1.0) + 'cls': 27.76, # cls loss gain (CE=~1.0, uCE=~20, uBCE=~200,~30) 'cls_pw': 1.446, # cls BCELoss positive_weight 'obj': 21.35, # obj loss gain 'obj_pw': 3.941, # obj BCELoss positive_weight diff --git a/utils/utils.py b/utils/utils.py index 13a9f85e..0a0ed43c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -324,6 +324,14 @@ def compute_loss(p, targets, model, giou_loss=True): # predictions, targets, mo lcls += (k * h['cls']) * BCEcls(pi[..., 5:], tclsm) # BCE # lcls += (k * h['cls']) * CE(pi[..., 5:], tcls[i]) # CE + # udm_ce = torch.zeros_like(pi0[..., 0]).long() # unified detection matrix for CE + # udm_ce[b, a, gj, gi] = tcls[i] + 1 + # lcls += (k * h['cls']) * CE(pi0[..., 4:].view(-1, model.nc + 1), udm_ce.view(-1)) # unified CE + + # udm = torch.zeros_like(pi0[..., 5:]) # unified detection matrix for BCE + # udm[b, a, gj, gi, tcls[i]] = 1.0 + # lcls += (k * h['cls']) * BCEcls(pi0[..., 5:], udm) # unified BCE (hyps 200-30) + # Append targets to text file # with open('targets.txt', 'a') as file: # [file.write('%11.5g ' * 4 % tuple(x) + '\n') for x in torch.cat((txy[i], twh[i]), 1)] From a1200ef130031be78a0e2931297b664b121731e5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 17 Aug 2019 14:08:10 +0200 Subject: [PATCH 1239/2595] updates --- models.py | 2 +- train.py | 3 +-- utils/utils.py | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/models.py b/models.py index eb2fdcea..119aaf4b 100755 --- a/models.py +++ b/models.py @@ -96,7 +96,7 @@ class YOLOLayer(nn.Module): def __init__(self, anchors, nc, img_size, yolo_index): super(YOLOLayer, self).__init__() - self.anchors = torch.Tensor(anchors) + self.anchors = torch.from_numpy(anchors) self.na = len(anchors) # number of anchors (3) self.nc = nc # number of classes (80) self.nx = 0 # initialize number of x gridpoints diff --git a/train.py b/train.py index 0166dccb..c0103aa2 100644 --- a/train.py +++ b/train.py @@ -200,8 +200,7 @@ def train(cfg, # Start training model.nc = nc # attach number of classes to model model.hyp = hyp # attach hyperparameters to model - if dataset.image_weights: - model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights + model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights model_info(model, report='summary') # 'full' or 'summary' nb = len(dataloader) maps = np.zeros(nc) # mAP per class diff --git a/utils/utils.py b/utils/utils.py index 0a0ed43c..497dab38 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -62,7 +62,7 @@ def labels_to_class_weights(labels, nc=80): weights[weights == 0] = 1 # replace empty bins with 1 weights = 1 / weights # number of targets per class weights /= weights.sum() # normalize - return torch.Tensor(weights) + return torch.from_numpy(weights) def labels_to_image_weights(labels, nc=80, class_weights=np.ones(80)): From b8c870711fe86d51c79a4580642d27bc6ecf18bf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 17 Aug 2019 14:09:38 +0200 Subject: [PATCH 1240/2595] updates --- utils/utils.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/utils/utils.py b/utils/utils.py index 497dab38..10e39fc6 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -56,9 +56,15 @@ def model_info(model, report='summary'): def labels_to_class_weights(labels, nc=80): # Get class weights (inverse frequency) from training labels + ni = len(labels) # number of images labels = np.concatenate(labels, 0) # labels.shape = (866643, 5) for COCO classes = labels[:, 0].astype(np.int) # labels = [class xywh] weights = np.bincount(classes, minlength=nc) # occurences per class + + # Prepend gridpoint count (for uCE trianing) + # gpi = ((320 / 32 * np.array([1, 2, 4])) ** 2 * 3).sum() # gridpoints per image + # weights = np.hstack([gpi * ni, weights]) # prepend gridpoints to start + weights[weights == 0] = 1 # replace empty bins with 1 weights = 1 / weights # number of targets per class weights /= weights.sum() # normalize From b72fb74ad05b40c560d540280de5a5a1bcbf0ace Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 17 Aug 2019 14:15:27 +0200 Subject: [PATCH 1241/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 119aaf4b..eb2fdcea 100755 --- a/models.py +++ b/models.py @@ -96,7 +96,7 @@ class YOLOLayer(nn.Module): def __init__(self, anchors, nc, img_size, yolo_index): super(YOLOLayer, self).__init__() - self.anchors = torch.from_numpy(anchors) + self.anchors = torch.Tensor(anchors) self.na = len(anchors) # number of anchors (3) self.nc = nc # number of classes (80) self.nx = 0 # initialize number of x gridpoints From 926447e8c48e5a81bfbdef440a603c5787c43b9a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 17 Aug 2019 17:10:57 +0200 Subject: [PATCH 1242/2595] updates --- models.py | 11 ++++++++--- utils/utils.py | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/models.py b/models.py index eb2fdcea..936f5696 100755 --- a/models.py +++ b/models.py @@ -155,9 +155,14 @@ class YOLOLayer(nn.Module): # io[..., 2:4] = ((torch.sigmoid(io[..., 2:4]) * 2) ** 3) * self.anchor_wh # wh power method io[..., :4] *= self.stride - io[..., 4:] = torch.sigmoid(io[..., 4:]) # p_conf, p_cls - # io[..., 4:] = F.softmax(io[..., 4:], dim=4) # unified detection CE - # io[..., 4] = io[..., 5:].max(4)[0] # unified detection BCE + arc = 'normal' # (normal, uCE uBCE) architecture types + if arc == 'normal': + io[..., 4:] = torch.sigmoid(io[..., 4:]) + elif arc == 'uCE': + io[..., 4:] = F.softmax(io[..., 4:], dim=4) # unified detection CE + io[..., 4] = 1 + elif arc == 'uBCE': + io[..., 4] = io[..., 5:].max(4)[0] # unified detection BCE if self.nc == 1: io[..., 5] = 1 # single-class model https://github.com/ultralytics/yolov3/issues/235 diff --git a/utils/utils.py b/utils/utils.py index 10e39fc6..dec6bf55 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -63,7 +63,7 @@ def labels_to_class_weights(labels, nc=80): # Prepend gridpoint count (for uCE trianing) # gpi = ((320 / 32 * np.array([1, 2, 4])) ** 2 * 3).sum() # gridpoints per image - # weights = np.hstack([gpi * ni, weights]) # prepend gridpoints to start + # weights = np.hstack([gpi * ni - weights.sum() * 9, weights * 9]) ** 0.5 # prepend gridpoints to start weights[weights == 0] = 1 # replace empty bins with 1 weights = 1 / weights # number of targets per class From 2d57e5d877fce3d39d2e32af523361757b0dc280 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 17 Aug 2019 19:20:39 +0200 Subject: [PATCH 1243/2595] updates --- models.py | 2 +- utils/utils.py | 64 +++++++++++++++++++++++--------------------------- 2 files changed, 30 insertions(+), 36 deletions(-) diff --git a/models.py b/models.py index 936f5696..09de14d5 100755 --- a/models.py +++ b/models.py @@ -155,7 +155,7 @@ class YOLOLayer(nn.Module): # io[..., 2:4] = ((torch.sigmoid(io[..., 2:4]) * 2) ** 3) * self.anchor_wh # wh power method io[..., :4] *= self.stride - arc = 'normal' # (normal, uCE uBCE) architecture types + arc = 'normal' # (normal, uCE, uBCE) architecture types if arc == 'normal': io[..., 4:] = torch.sigmoid(io[..., 4:]) elif arc == 'uCE': diff --git a/utils/utils.py b/utils/utils.py index dec6bf55..e3621a50 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -290,19 +290,19 @@ def wh_iou(box1, box2): def compute_loss(p, targets, model, giou_loss=True): # predictions, targets, model ft = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor - lxy, lwh, lcls, lobj = ft([0]), ft([0]), ft([0]), ft([0]) - txy, twh, tcls, tbox, indices, anchor_vec = build_targets(model, targets) + lcls, lbox, lobj = ft([0]), ft([0]), ft([0]) + tcls, tbox, indices, anchor_vec = build_targets(model, targets) h = model.hyp # hyperparameters # Define criteria - MSE = nn.MSELoss() BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']])) BCEobj = nn.BCEWithLogitsLoss(pos_weight=ft([h['obj_pw']])) - # CE = nn.CrossEntropyLoss() # (weight=model.class_weights) + CE = nn.CrossEntropyLoss(weight=model.class_weights) # Compute losses bs = p[0].shape[0] # batch size k = bs / 64 # loss gain + arc = 'normal' # (normal, uCE, uBCE) architecture types for i, pi0 in enumerate(p): # layer i predictions, i b, a, gj, gi = indices[i] # image, anchor, gridy, gridx tobj = torch.zeros_like(pi0[..., 0]) # target obj @@ -314,45 +314,46 @@ def compute_loss(p, targets, model, giou_loss=True): # predictions, targets, mo tobj[b, a, gj, gi] = 1.0 # obj # pi[..., 2:4] = torch.sigmoid(pi[..., 2:4]) # wh power loss (uncomment) - # s = 1.5 # scale_xy - pxy = torch.sigmoid(pi[..., 0:2]) # * s - (s - 1) / 2 - if giou_loss: - pbox = torch.cat((pxy, torch.exp(pi[..., 2:4]) * anchor_vec[i]), 1) # predicted - giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation - lxy += (k * h['giou']) * (1.0 - giou).mean() # giou loss - else: - lxy += (k * h['xy']) * MSE(pxy, txy[i]) # xy loss - lwh += (k * h['wh']) * MSE(pi[..., 2:4], twh[i]) # wh yolo loss + # GIoU + pxy = torch.sigmoid(pi[..., 0:2]) # pxy = pxy * s - (s - 1) / 2, s = 1.5 (scale_xy) + pbox = torch.cat((pxy, torch.exp(pi[..., 2:4]) * anchor_vec[i]), 1) # predicted + giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation + lbox += (k * h['giou']) * (1.0 - giou).mean() # giou loss - if model.nc > 1: # cls loss (only if multiple classes) + if arc == 'normal' and model.nc > 1: # cls loss (only if multiple classes) tclsm = torch.zeros_like(pi[..., 5:]) tclsm[range(nb), tcls[i]] = 1.0 lcls += (k * h['cls']) * BCEcls(pi[..., 5:], tclsm) # BCE # lcls += (k * h['cls']) * CE(pi[..., 5:], tcls[i]) # CE - # udm_ce = torch.zeros_like(pi0[..., 0]).long() # unified detection matrix for CE - # udm_ce[b, a, gj, gi] = tcls[i] + 1 - # lcls += (k * h['cls']) * CE(pi0[..., 4:].view(-1, model.nc + 1), udm_ce.view(-1)) # unified CE - - # udm = torch.zeros_like(pi0[..., 5:]) # unified detection matrix for BCE - # udm[b, a, gj, gi, tcls[i]] = 1.0 - # lcls += (k * h['cls']) * BCEcls(pi0[..., 5:], udm) # unified BCE (hyps 200-30) - # Append targets to text file # with open('targets.txt', 'a') as file: # [file.write('%11.5g ' * 4 % tuple(x) + '\n') for x in torch.cat((txy[i], twh[i]), 1)] - lobj += (k * h['obj']) * BCEobj(pi0[..., 4], tobj) # obj loss - loss = lxy + lwh + lobj + lcls + if arc == 'normal': + lobj += (k * h['obj']) * BCEobj(pi0[..., 4], tobj) # obj loss - return loss, torch.cat((lxy, lwh, lobj, lcls, loss)).detach() + elif arc == 'uCE': # suggest h['cls']=5. + udm_ce = torch.zeros_like(pi0[..., 0]).long() # unified detection matrix for CE + if nb: + udm_ce[b, a, gj, gi] = tcls[i] + 1 + lcls += (k * h['cls']) * CE(pi0[..., 4:].view(-1, model.nc + 1), udm_ce.view(-1)) # unified CE + + elif arc == 'uBCE': + udm = torch.zeros_like(pi0[..., 5:]) # unified detection matrix for BCE + if nb: + udm[b, a, gj, gi, tcls[i]] = 1.0 + lcls += (k * h['cls']) * BCEcls(pi0[..., 5:], udm) # unified BCE (hyps 200-30) + + loss = lbox + lobj + lcls + return loss, torch.cat((lbox, ft([0]), lobj, lcls, loss)).detach() def build_targets(model, targets): # targets = [image, class, x, y, w, h] nt = len(targets) - txy, twh, tcls, tbox, indices, av = [], [], [], [], [], [] + tcls, tbox, indices, av = [], [], [], [] multi_gpu = type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) for i in model.yolo_layers: # get number of grid points and anchor vec for this yolo layer @@ -389,24 +390,17 @@ def build_targets(model, targets): gi, gj = gxy.long().t() # grid x, y indices indices.append((b, a, gj, gi)) - # XY coordinates - gxy -= gxy.floor() - txy.append(gxy) - # GIoU + gxy -= gxy.floor() # xy tbox.append(torch.cat((gxy, gwh), 1)) # xywh (grids) av.append(anchor_vec[a]) # anchor vec - # Width and height - twh.append(torch.log(gwh / anchor_vec[a])) # wh yolo method - # twh.append((gwh / anchor_vec[a]) ** (1 / 3) / 2) # wh power method - # Class tcls.append(c) if c.shape[0]: # if any targets assert c.max() <= model.nc, 'Target classes exceed model classes' - return txy, twh, tcls, tbox, indices, av + return tcls, tbox, indices, av def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): From c498d768cc114fbd92d4335179c08710cf30e85c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 18 Aug 2019 00:47:52 +0200 Subject: [PATCH 1244/2595] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 5fa037b7..2b51cd15 100755 --- a/README.md +++ b/README.md @@ -150,8 +150,8 @@ Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/ Using CUDA device0 _CudaDeviceProperties(name='Tesla T4', total_memory=15079MB) Class Images Targets P R mAP F1: 100% 313/313 [07:40<00:00, 2.34s/it] all 5e+03 3.58e+04 0.117 0.788 0.595 0.199 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.367 - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.607 <-- + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.367 <--- + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.607 <--- Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.387 Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.208 Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.392 @@ -168,8 +168,8 @@ Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/ Using CUDA device0 _CudaDeviceProperties(name='Tesla T4', total_memory=15079MB) Class Images Targets P R mAP F1: 100% 313/313 [07:01<00:00, 1.41s/it] all 5e+03 3.58e+04 0.105 0.746 0.554 0.18 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.336 - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.565 <-- + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.336 <--- + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.565 <--- Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.350 Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.151 Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.361 From 3b9e94c5e637dd4d9a9dfe2f58e48043f9784468 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 18 Aug 2019 00:53:27 +0200 Subject: [PATCH 1245/2595] updates --- train.py | 32 ++++++++++++++++---------------- utils/gcp.sh | 1 - 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/train.py b/train.py index c0103aa2..d62aa8a4 100644 --- a/train.py +++ b/train.py @@ -53,25 +53,25 @@ hyp = {'giou': 1.582, # giou loss gain 'scale': 0.1059, # image scale (+/- gain) 'shear': 0.5768} # image shear (+/- deg) -# Hyperparameters (k-series, j-series with all *_pw=1) -# hyp = {'giou': 1.582, # giou loss gain +# # Hyperparameters (i-series) +# hyp = {'giou': 1.43, # giou loss gain # 'xy': 4.688, # xy loss gain # 'wh': 0.1857, # wh loss gain -# 'cls': 40.14, # cls loss gain -# 'cls_pw': 1.0, # cls BCELoss positive_weight -# 'obj': 84.14, # obj loss gain -# 'obj_pw': 1.0, # obj BCELoss positive_weight -# 'iou_t': 0.2635, # iou training threshold -# 'lr0': 0.002324, # initial learning rate +# 'cls': 11.7, # cls loss gain +# 'cls_pw': 4.81, # cls BCELoss positive_weight +# 'obj': 11.5, # obj loss gain +# 'obj_pw': 1.56, # obj BCELoss positive_weight +# 'iou_t': 0.281, # iou training threshold +# 'lr0': 0.0013, # initial learning rate # 'lrf': -4., # final LambdaLR learning rate = lr0 * (10 ** lrf) -# 'momentum': 0.97, # SGD momentum -# 'weight_decay': 0.0004569, # optimizer weight decay -# 'hsv_s': 0.5703, # image HSV-Saturation augmentation (fraction) -# 'hsv_v': 0.3174, # image HSV-Value augmentation (fraction) -# 'degrees': 1.113, # image rotation (+/- deg) -# 'translate': 0.06797, # image translation (+/- fraction) -# 'scale': 0.1059, # image scale (+/- gain) -# 'shear': 0.5768} # image shear (+/- deg) +# 'momentum': 0.944, # SGD momentum +# 'weight_decay': 0.000427, # optimizer weight decay +# 'hsv_s': 0.0599, # image HSV-Saturation augmentation (fraction) +# 'hsv_v': 0.142, # image HSV-Value augmentation (fraction) +# 'degrees': 1.03, # image rotation (+/- deg) +# 'translate': 0.0552, # image translation (+/- fraction) +# 'scale': 0.0555, # image scale (+/- gain) +# 'shear': 0.434} # image shear (+/- deg) def train(cfg, diff --git a/utils/gcp.sh b/utils/gcp.sh index a7f2c19f..ae3d19ad 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -18,7 +18,6 @@ sudo shutdown rm -rf yolov3 # Warning: remove existing git clone https://github.com/ultralytics/yolov3 # master # git clone -b test --depth 1 https://github.com/ultralytics/yolov3 test # branch -cp -r weights yolov3 && cd yolov3 # Train python3 train.py From fd2991386f7444654502c68f17dfbf7f1b5b56df Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 18 Aug 2019 01:55:45 +0200 Subject: [PATCH 1246/2595] updates --- utils/torch_utils.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 40eed4ae..03337985 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -1,4 +1,5 @@ import torch +import torch.nn as nn def init_seeds(seed=0): @@ -58,3 +59,26 @@ def fuse_conv_and_bn(conv, bn): fusedconv.bias.copy_(b_conv + b_bn) return fusedconv + + +class FocalLoss(nn.Module): + # Wraps focal loss around existing loss_fcn() https://arxiv.org/pdf/1708.02002.pdf + # i.e. criteria = FocalLoss(nn.BCEWithLogitsLoss(), gamma=2.5) + def __init__(self, loss_fcn, alpha=1, gamma=2, reduction='mean'): + super(FocalLoss, self).__init__() + self.loss_fcn = loss_fcn + self.alpha = alpha + self.gamma = gamma + self.reduction = reduction + + def forward(self, input, target): + loss = self.loss_fcn(input, target, reduction='none') + pt = torch.exp(-loss) + loss *= self.alpha * (1 - pt) ** self.gamma + + if self.reduction == 'mean': + return loss.mean() + elif self.reduction == 'sum': + return loss.sum() + else: # 'none' + return loss From 0aece25ef64585296a2f48e8c33b6dbdb30d3300 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 18 Aug 2019 01:58:35 +0200 Subject: [PATCH 1247/2595] updates --- utils/torch_utils.py | 23 ----------------------- utils/utils.py | 23 +++++++++++++++++++++++ 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 03337985..60974fe2 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -59,26 +59,3 @@ def fuse_conv_and_bn(conv, bn): fusedconv.bias.copy_(b_conv + b_bn) return fusedconv - - -class FocalLoss(nn.Module): - # Wraps focal loss around existing loss_fcn() https://arxiv.org/pdf/1708.02002.pdf - # i.e. criteria = FocalLoss(nn.BCEWithLogitsLoss(), gamma=2.5) - def __init__(self, loss_fcn, alpha=1, gamma=2, reduction='mean'): - super(FocalLoss, self).__init__() - self.loss_fcn = loss_fcn - self.alpha = alpha - self.gamma = gamma - self.reduction = reduction - - def forward(self, input, target): - loss = self.loss_fcn(input, target, reduction='none') - pt = torch.exp(-loss) - loss *= self.alpha * (1 - pt) ** self.gamma - - if self.reduction == 'mean': - return loss.mean() - elif self.reduction == 'sum': - return loss.sum() - else: # 'none' - return loss diff --git a/utils/utils.py b/utils/utils.py index e3621a50..0d2e2b39 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -288,6 +288,29 @@ def wh_iou(box1, box2): return inter_area / union_area # iou +class FocalLoss(nn.Module): + # Wraps focal loss around existing loss_fcn() https://arxiv.org/pdf/1708.02002.pdf + # i.e. criteria = FocalLoss(nn.BCEWithLogitsLoss(), gamma=2.5) + def __init__(self, loss_fcn, alpha=1, gamma=2, reduction='mean'): + super(FocalLoss, self).__init__() + self.loss_fcn = loss_fcn + self.alpha = alpha + self.gamma = gamma + self.reduction = reduction + + def forward(self, input, target): + loss = self.loss_fcn(input, target, reduction='none') + pt = torch.exp(-loss) + loss *= self.alpha * (1 - pt) ** self.gamma + + if self.reduction == 'mean': + return loss.mean() + elif self.reduction == 'sum': + return loss.sum() + else: # 'none' + return loss + + def compute_loss(p, targets, model, giou_loss=True): # predictions, targets, model ft = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor lcls, lbox, lobj = ft([0]), ft([0]), ft([0]) From 43230c48bf206cc8f3d409eb97e95965893d8aa1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 18 Aug 2019 02:02:04 +0200 Subject: [PATCH 1248/2595] updates --- train.py | 74 +++++++++++++++++++++++++------------------------- utils/utils.py | 3 +- 2 files changed, 39 insertions(+), 38 deletions(-) diff --git a/train.py b/train.py index d62aa8a4..ceea5782 100644 --- a/train.py +++ b/train.py @@ -33,45 +33,45 @@ except: # 0.268 0.268 0.178 0.240 4.36 1.104 5.596 0.2087 14.47 2.599 16.27 2.406 0.4114 0.001585 -4 0.950 0.000524 # hc # 0.161 0.327 0.190 0.193 7.82 1.153 4.062 0.1845 24.28 3.05 20.93 2.842 0.2759 0.001357 -4 0.916 0.000572 # hd 0.438 mAP @ epoch 100 -# Hyperparameters (j-series, 50.5 mAP yolov3-320) evolved by @ktian08 https://github.com/ultralytics/yolov3/issues/310 -hyp = {'giou': 1.582, # giou loss gain - 'xy': 4.688, # xy loss gain - 'wh': 0.1857, # wh loss gain - 'cls': 27.76, # cls loss gain (CE=~1.0, uCE=~20, uBCE=~200,~30) - 'cls_pw': 1.446, # cls BCELoss positive_weight - 'obj': 21.35, # obj loss gain - 'obj_pw': 3.941, # obj BCELoss positive_weight - 'iou_t': 0.2635, # iou training threshold - 'lr0': 0.002324, # initial learning rate - 'lrf': -4., # final LambdaLR learning rate = lr0 * (10 ** lrf) - 'momentum': 0.97, # SGD momentum - 'weight_decay': 0.0004569, # optimizer weight decay - 'hsv_s': 0.5703, # image HSV-Saturation augmentation (fraction) - 'hsv_v': 0.3174, # image HSV-Value augmentation (fraction) - 'degrees': 1.113, # image rotation (+/- deg) - 'translate': 0.06797, # image translation (+/- fraction) - 'scale': 0.1059, # image scale (+/- gain) - 'shear': 0.5768} # image shear (+/- deg) - -# # Hyperparameters (i-series) -# hyp = {'giou': 1.43, # giou loss gain +# # Hyperparameters (j-series, 50.5 mAP yolov3-320) evolved by @ktian08 https://github.com/ultralytics/yolov3/issues/310 +# hyp = {'giou': 1.582, # giou loss gain # 'xy': 4.688, # xy loss gain # 'wh': 0.1857, # wh loss gain -# 'cls': 11.7, # cls loss gain -# 'cls_pw': 4.81, # cls BCELoss positive_weight -# 'obj': 11.5, # obj loss gain -# 'obj_pw': 1.56, # obj BCELoss positive_weight -# 'iou_t': 0.281, # iou training threshold -# 'lr0': 0.0013, # initial learning rate +# 'cls': 27.76, # cls loss gain (CE=~1.0, uCE=~20, uBCE=~200,~30) +# 'cls_pw': 1.446, # cls BCELoss positive_weight +# 'obj': 21.35, # obj loss gain +# 'obj_pw': 3.941, # obj BCELoss positive_weight +# 'iou_t': 0.2635, # iou training threshold +# 'lr0': 0.010324, # initial learning rate # 'lrf': -4., # final LambdaLR learning rate = lr0 * (10 ** lrf) -# 'momentum': 0.944, # SGD momentum -# 'weight_decay': 0.000427, # optimizer weight decay -# 'hsv_s': 0.0599, # image HSV-Saturation augmentation (fraction) -# 'hsv_v': 0.142, # image HSV-Value augmentation (fraction) -# 'degrees': 1.03, # image rotation (+/- deg) -# 'translate': 0.0552, # image translation (+/- fraction) -# 'scale': 0.0555, # image scale (+/- gain) -# 'shear': 0.434} # image shear (+/- deg) +# 'momentum': 0.97, # SGD momentum +# 'weight_decay': 0.0004569, # optimizer weight decay +# 'hsv_s': 0.5703, # image HSV-Saturation augmentation (fraction) +# 'hsv_v': 0.3174, # image HSV-Value augmentation (fraction) +# 'degrees': 1.113, # image rotation (+/- deg) +# 'translate': 0.06797, # image translation (+/- fraction) +# 'scale': 0.1059, # image scale (+/- gain) +# 'shear': 0.5768} # image shear (+/- deg) + +# Hyperparameters (i-series) +hyp = {'giou': 1.43, # giou loss gain + 'xy': 4.688, # xy loss gain + 'wh': 0.1857, # wh loss gain + 'cls': 11.7, # cls loss gain + 'cls_pw': 4.81, # cls BCELoss positive_weight + 'obj': 11.5, # obj loss gain + 'obj_pw': 1.56, # obj BCELoss positive_weight + 'iou_t': 0.281, # iou training threshold + 'lr0': 0.01, # initial learning rate + 'lrf': -4., # final LambdaLR learning rate = lr0 * (10 ** lrf) + 'momentum': 0.97, # SGD momentum + 'weight_decay': 0.000427, # optimizer weight decay + 'hsv_s': 0.0599, # image HSV-Saturation augmentation (fraction) + 'hsv_v': 0.142, # image HSV-Value augmentation (fraction) + 'degrees': 1.03, # image rotation (+/- deg) + 'translate': 0.0552, # image translation (+/- fraction) + 'scale': 0.0555, # image scale (+/- gain) + 'shear': 0.434} # image shear (+/- deg) def train(cfg, @@ -360,7 +360,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=32, help='batch size') parser.add_argument('--accumulate', type=int, default=2, help='number of batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data', type=str, default='data/coco.data', help='coco.data file path') + parser.add_argument('--data', type=str, default='data/coco_64img.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='train at (1/1.5)x - 1.5x sizes') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--rect', action='store_true', help='rectangular training') diff --git a/utils/utils.py b/utils/utils.py index 0d2e2b39..e8fdbfa4 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -293,13 +293,14 @@ class FocalLoss(nn.Module): # i.e. criteria = FocalLoss(nn.BCEWithLogitsLoss(), gamma=2.5) def __init__(self, loss_fcn, alpha=1, gamma=2, reduction='mean'): super(FocalLoss, self).__init__() + loss_fcn.reduction = 'none' # required to apply FL to each element self.loss_fcn = loss_fcn self.alpha = alpha self.gamma = gamma self.reduction = reduction def forward(self, input, target): - loss = self.loss_fcn(input, target, reduction='none') + loss = self.loss_fcn(input, target) pt = torch.exp(-loss) loss *= self.alpha * (1 - pt) ** self.gamma From ce0b41467739486f840a66967326f8456a9686ff Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 18 Aug 2019 02:04:49 +0200 Subject: [PATCH 1249/2595] updates --- train.py | 3 +-- utils/utils.py | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index ceea5782..cea491c3 100644 --- a/train.py +++ b/train.py @@ -266,7 +266,7 @@ def train(cfg, pred = model(imgs) # Compute loss - loss, loss_items = compute_loss(pred, targets, model, giou_loss=not opt.xywh) + loss, loss_items = compute_loss(pred, targets, model) if torch.isnan(loss): print('WARNING: nan loss detected, ending training') return results @@ -368,7 +368,6 @@ if __name__ == '__main__': parser.add_argument('--transfer', action='store_true', help='transfer learning flag') parser.add_argument('--nosave', action='store_true', help='only save final checkpoint') parser.add_argument('--notest', action='store_true', help='only test final epoch') - parser.add_argument('--xywh', action='store_true', help='use xywh loss instead of GIoU loss') parser.add_argument('--evolve', action='store_true', help='evolve hyperparameters') parser.add_argument('--bucket', type=str, default='', help='gsutil bucket') parser.add_argument('--img-weights', action='store_true', help='select training images by weight') diff --git a/utils/utils.py b/utils/utils.py index e8fdbfa4..76b53ebc 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -312,7 +312,7 @@ class FocalLoss(nn.Module): return loss -def compute_loss(p, targets, model, giou_loss=True): # predictions, targets, model +def compute_loss(p, targets, model): # predictions, targets, model ft = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor lcls, lbox, lobj = ft([0]), ft([0]), ft([0]) tcls, tbox, indices, anchor_vec = build_targets(model, targets) From ee176000ebbde43a45aa8375a7052f61f73b7b15 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 18 Aug 2019 02:08:47 +0200 Subject: [PATCH 1250/2595] updates --- train.py | 70 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/train.py b/train.py index cea491c3..766b1112 100644 --- a/train.py +++ b/train.py @@ -33,45 +33,45 @@ except: # 0.268 0.268 0.178 0.240 4.36 1.104 5.596 0.2087 14.47 2.599 16.27 2.406 0.4114 0.001585 -4 0.950 0.000524 # hc # 0.161 0.327 0.190 0.193 7.82 1.153 4.062 0.1845 24.28 3.05 20.93 2.842 0.2759 0.001357 -4 0.916 0.000572 # hd 0.438 mAP @ epoch 100 -# # Hyperparameters (j-series, 50.5 mAP yolov3-320) evolved by @ktian08 https://github.com/ultralytics/yolov3/issues/310 -# hyp = {'giou': 1.582, # giou loss gain -# 'xy': 4.688, # xy loss gain -# 'wh': 0.1857, # wh loss gain -# 'cls': 27.76, # cls loss gain (CE=~1.0, uCE=~20, uBCE=~200,~30) -# 'cls_pw': 1.446, # cls BCELoss positive_weight -# 'obj': 21.35, # obj loss gain -# 'obj_pw': 3.941, # obj BCELoss positive_weight -# 'iou_t': 0.2635, # iou training threshold -# 'lr0': 0.010324, # initial learning rate -# 'lrf': -4., # final LambdaLR learning rate = lr0 * (10 ** lrf) -# 'momentum': 0.97, # SGD momentum -# 'weight_decay': 0.0004569, # optimizer weight decay -# 'hsv_s': 0.5703, # image HSV-Saturation augmentation (fraction) -# 'hsv_v': 0.3174, # image HSV-Value augmentation (fraction) -# 'degrees': 1.113, # image rotation (+/- deg) -# 'translate': 0.06797, # image translation (+/- fraction) -# 'scale': 0.1059, # image scale (+/- gain) -# 'shear': 0.5768} # image shear (+/- deg) - -# Hyperparameters (i-series) -hyp = {'giou': 1.43, # giou loss gain +# Hyperparameters (j-series, 50.5 mAP yolov3-320) evolved by @ktian08 https://github.com/ultralytics/yolov3/issues/310 +hyp = {'giou': 1.582, # giou loss gain 'xy': 4.688, # xy loss gain 'wh': 0.1857, # wh loss gain - 'cls': 11.7, # cls loss gain - 'cls_pw': 4.81, # cls BCELoss positive_weight - 'obj': 11.5, # obj loss gain - 'obj_pw': 1.56, # obj BCELoss positive_weight - 'iou_t': 0.281, # iou training threshold - 'lr0': 0.01, # initial learning rate + 'cls': 27.76, # cls loss gain (CE=~1.0, uCE=~20, uBCE=~200,~30) + 'cls_pw': 1.446, # cls BCELoss positive_weight + 'obj': 21.35, # obj loss gain + 'obj_pw': 3.941, # obj BCELoss positive_weight + 'iou_t': 0.2635, # iou training threshold + 'lr0': 0.010324, # initial learning rate 'lrf': -4., # final LambdaLR learning rate = lr0 * (10 ** lrf) 'momentum': 0.97, # SGD momentum - 'weight_decay': 0.000427, # optimizer weight decay - 'hsv_s': 0.0599, # image HSV-Saturation augmentation (fraction) - 'hsv_v': 0.142, # image HSV-Value augmentation (fraction) - 'degrees': 1.03, # image rotation (+/- deg) - 'translate': 0.0552, # image translation (+/- fraction) - 'scale': 0.0555, # image scale (+/- gain) - 'shear': 0.434} # image shear (+/- deg) + 'weight_decay': 0.0004569, # optimizer weight decay + 'hsv_s': 0.5703, # image HSV-Saturation augmentation (fraction) + 'hsv_v': 0.3174, # image HSV-Value augmentation (fraction) + 'degrees': 1.113, # image rotation (+/- deg) + 'translate': 0.06797, # image translation (+/- fraction) + 'scale': 0.1059, # image scale (+/- gain) + 'shear': 0.5768} # image shear (+/- deg) + +# # Hyperparameters (i-series) +# hyp = {'giou': 1.43, # giou loss gain +# 'xy': 4.688, # xy loss gain +# 'wh': 0.1857, # wh loss gain +# 'cls': 11.7, # cls loss gain +# 'cls_pw': 4.81, # cls BCELoss positive_weight +# 'obj': 11.5, # obj loss gain +# 'obj_pw': 1.56, # obj BCELoss positive_weight +# 'iou_t': 0.281, # iou training threshold +# 'lr0': 0.0013, # initial learning rate +# 'lrf': -4., # final LambdaLR learning rate = lr0 * (10 ** lrf) +# 'momentum': 0.944, # SGD momentum +# 'weight_decay': 0.000427, # optimizer weight decay +# 'hsv_s': 0.0599, # image HSV-Saturation augmentation (fraction) +# 'hsv_v': 0.142, # image HSV-Value augmentation (fraction) +# 'degrees': 1.03, # image rotation (+/- deg) +# 'translate': 0.0552, # image translation (+/- fraction) +# 'scale': 0.0555, # image scale (+/- gain) +# 'shear': 0.434} # image shear (+/- deg) def train(cfg, From 3c4a9ff69ef676cd21c1d62e1b6e830dbad65b72 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 18 Aug 2019 02:15:16 +0200 Subject: [PATCH 1251/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 766b1112..9f03c04d 100644 --- a/train.py +++ b/train.py @@ -42,7 +42,7 @@ hyp = {'giou': 1.582, # giou loss gain 'obj': 21.35, # obj loss gain 'obj_pw': 3.941, # obj BCELoss positive_weight 'iou_t': 0.2635, # iou training threshold - 'lr0': 0.010324, # initial learning rate + 'lr0': 0.002324, # initial learning rate 'lrf': -4., # final LambdaLR learning rate = lr0 * (10 ** lrf) 'momentum': 0.97, # SGD momentum 'weight_decay': 0.0004569, # optimizer weight decay @@ -360,7 +360,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=32, help='batch size') parser.add_argument('--accumulate', type=int, default=2, help='number of batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data', type=str, default='data/coco_64img.data', help='coco.data file path') + parser.add_argument('--data', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='train at (1/1.5)x - 1.5x sizes') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--rect', action='store_true', help='rectangular training') From 7ee28a7bb6b69c072bfdbb433e5ca25df3b91354 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 18 Aug 2019 13:05:32 +0200 Subject: [PATCH 1252/2595] updates --- train.py | 4 +++- utils/torch_utils.py | 1 - 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 9f03c04d..62a9bc62 100644 --- a/train.py +++ b/train.py @@ -53,6 +53,7 @@ hyp = {'giou': 1.582, # giou loss gain 'scale': 0.1059, # image scale (+/- gain) 'shear': 0.5768} # image shear (+/- deg) + # # Hyperparameters (i-series) # hyp = {'giou': 1.43, # giou loss gain # 'xy': 4.688, # xy loss gain @@ -103,9 +104,10 @@ def train(cfg, model = Darknet(cfg).to(device) # Optimizer + # optimizer = optim.Adam(model.parameters(), lr=hyp['lr0'], weight_decay=hyp['weight_decay']) + # optimizer = AdaBound(model.parameters(), lr=hyp['lr0'], final_lr=0.1) optimizer = optim.SGD(model.parameters(), lr=hyp['lr0'], momentum=hyp['momentum'], weight_decay=hyp['weight_decay'], nesterov=True) - # optimizer = AdaBound(model.parameters(), lr=hyp['lr0'], final_lr=0.1) cutoff = -1 # backbone reaches to cutoff layer start_epoch = 0 diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 60974fe2..40eed4ae 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -1,5 +1,4 @@ import torch -import torch.nn as nn def init_seeds(seed=0): From 4050650669dd1ad1dada5c0a6a7ecf30b4a3cc98 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 18 Aug 2019 14:20:46 +0200 Subject: [PATCH 1253/2595] updates --- models.py | 15 +++++++++------ utils/utils.py | 41 +++++++++++++++++++++++++---------------- 2 files changed, 34 insertions(+), 22 deletions(-) diff --git a/models.py b/models.py index 09de14d5..bfc5ac9f 100755 --- a/models.py +++ b/models.py @@ -155,14 +155,17 @@ class YOLOLayer(nn.Module): # io[..., 2:4] = ((torch.sigmoid(io[..., 2:4]) * 2) ** 3) * self.anchor_wh # wh power method io[..., :4] *= self.stride - arc = 'normal' # (normal, uCE, uBCE) architecture types + arc = 'normal' # (normal, uCE, uBCE, uBCEs) detection architectures if arc == 'normal': - io[..., 4:] = torch.sigmoid(io[..., 4:]) - elif arc == 'uCE': - io[..., 4:] = F.softmax(io[..., 4:], dim=4) # unified detection CE + torch.sigmoid_(io[..., 4:]) + elif arc == 'uCE': # unified CE (1 background + 80 classes) + io[..., 4:] = F.softmax(io[..., 4:], dim=4) io[..., 4] = 1 - elif arc == 'uBCE': - io[..., 4] = io[..., 5:].max(4)[0] # unified detection BCE + elif arc == 'uBCE': # unified BCE (1 background + 80 classes) + torch.sigmoid_(io[..., 4:]) + io[..., 4] = 1 - io[..., 4] + elif arc == 'uBCEs': # unified BCE simplified (80 classes) + torch.sigmoid_(io[..., 4:]) if self.nc == 1: io[..., 5] = 1 # single-class model https://github.com/ultralytics/yolov3/issues/235 diff --git a/utils/utils.py b/utils/utils.py index 76b53ebc..4c7e1fec 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -321,12 +321,12 @@ def compute_loss(p, targets, model): # predictions, targets, model # Define criteria BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']])) BCEobj = nn.BCEWithLogitsLoss(pos_weight=ft([h['obj_pw']])) - CE = nn.CrossEntropyLoss(weight=model.class_weights) + # CE = nn.CrossEntropyLoss(weight=model.class_weights) # Compute losses bs = p[0].shape[0] # batch size k = bs / 64 # loss gain - arc = 'normal' # (normal, uCE, uBCE) architecture types + arc = 'normal' # (normal, uCE, uBCE, uBCEs) detection architectures for i, pi0 in enumerate(p): # layer i predictions, i b, a, gj, gi = indices[i] # image, anchor, gridy, gridx tobj = torch.zeros_like(pi0[..., 0]) # target obj @@ -342,33 +342,42 @@ def compute_loss(p, targets, model): # predictions, targets, model pxy = torch.sigmoid(pi[..., 0:2]) # pxy = pxy * s - (s - 1) / 2, s = 1.5 (scale_xy) pbox = torch.cat((pxy, torch.exp(pi[..., 2:4]) * anchor_vec[i]), 1) # predicted giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation - lbox += (k * h['giou']) * (1.0 - giou).mean() # giou loss + lbox += (1.0 - giou).mean() # giou loss if arc == 'normal' and model.nc > 1: # cls loss (only if multiple classes) - tclsm = torch.zeros_like(pi[..., 5:]) - tclsm[range(nb), tcls[i]] = 1.0 - lcls += (k * h['cls']) * BCEcls(pi[..., 5:], tclsm) # BCE - # lcls += (k * h['cls']) * CE(pi[..., 5:], tcls[i]) # CE + t = torch.zeros_like(pi[..., 5:]) # targets + t[range(nb), tcls[i]] = 1.0 + lcls += BCEcls(pi[..., 5:], t) # BCE + # lcls += CE(pi[..., 5:], tcls[i]) # CE # Append targets to text file # with open('targets.txt', 'a') as file: # [file.write('%11.5g ' * 4 % tuple(x) + '\n') for x in torch.cat((txy[i], twh[i]), 1)] if arc == 'normal': - lobj += (k * h['obj']) * BCEobj(pi0[..., 4], tobj) # obj loss + lobj += BCEobj(pi0[..., 4], tobj) # obj loss - elif arc == 'uCE': # suggest h['cls']=5. - udm_ce = torch.zeros_like(pi0[..., 0]).long() # unified detection matrix for CE + elif arc == 'uCE': # unified CE (1 background + 80 classes), hyps 20 + t = torch.zeros_like(pi0[..., 0], dtype=torch.long) # targets if nb: - udm_ce[b, a, gj, gi] = tcls[i] + 1 - lcls += (k * h['cls']) * CE(pi0[..., 4:].view(-1, model.nc + 1), udm_ce.view(-1)) # unified CE + t[b, a, gj, gi] = tcls[i] + 1 + lcls += CE(pi0[..., 4:].view(-1, model.nc + 1), t.view(-1)) - elif arc == 'uBCE': - udm = torch.zeros_like(pi0[..., 5:]) # unified detection matrix for BCE + elif arc == 'uBCE': # unified BCE (1 background + 80 classes), hyps 200-30 + t = torch.zeros_like(pi0[..., 5:]) # targets if nb: - udm[b, a, gj, gi, tcls[i]] = 1.0 - lcls += (k * h['cls']) * BCEcls(pi0[..., 5:], udm) # unified BCE (hyps 200-30) + t[b, a, gj, gi, tcls[i]] = 1.0 + lcls += BCEcls(pi0[..., 5:], t) + elif arc == 'uBCEs': # unified BCE simplified (80 classes) + t = torch.zeros_like(pi0[..., 5:]) # targets + if nb: + t[b, a, gj, gi, tcls[i]] = 1.0 + lcls += BCEcls(pi0[..., 5:], t) + + lbox *= k * h['giou'] + lobj *= k * h['obj'] + lcls *= k * h['cls'] loss = lbox + lobj + lcls return loss, torch.cat((lbox, ft([0]), lobj, lcls, loss)).detach() From b779e6ef6948b75426610c3bbe878fc7e3328b98 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 18 Aug 2019 21:24:48 +0200 Subject: [PATCH 1254/2595] updates --- models.py | 5 +++-- utils/utils.py | 30 +++++++++++++++--------------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/models.py b/models.py index bfc5ac9f..78babae5 100755 --- a/models.py +++ b/models.py @@ -155,7 +155,7 @@ class YOLOLayer(nn.Module): # io[..., 2:4] = ((torch.sigmoid(io[..., 2:4]) * 2) ** 3) * self.anchor_wh # wh power method io[..., :4] *= self.stride - arc = 'normal' # (normal, uCE, uBCE, uBCEs) detection architectures + arc = 'uBCEs' # (normal, uCE, uBCE, uBCEs) detection architectures if arc == 'normal': torch.sigmoid_(io[..., 4:]) elif arc == 'uCE': # unified CE (1 background + 80 classes) @@ -165,7 +165,8 @@ class YOLOLayer(nn.Module): torch.sigmoid_(io[..., 4:]) io[..., 4] = 1 - io[..., 4] elif arc == 'uBCEs': # unified BCE simplified (80 classes) - torch.sigmoid_(io[..., 4:]) + torch.sigmoid_(io[..., 5:]) + io[..., 4] = 1 if self.nc == 1: io[..., 5] = 1 # single-class model https://github.com/ultralytics/yolov3/issues/235 diff --git a/utils/utils.py b/utils/utils.py index 4c7e1fec..ef6c61e8 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -329,51 +329,51 @@ def compute_loss(p, targets, model): # predictions, targets, model arc = 'normal' # (normal, uCE, uBCE, uBCEs) detection architectures for i, pi0 in enumerate(p): # layer i predictions, i b, a, gj, gi = indices[i] # image, anchor, gridy, gridx - tobj = torch.zeros_like(pi0[..., 0]) # target obj + tobj = torch.zeros_like(pi[..., 0]) # target obj # Compute losses nb = len(b) if nb: # number of targets - pi = pi0[b, a, gj, gi] # predictions closest to anchors + ps = pi[b, a, gj, gi] # prediction subset corresponding to targets tobj[b, a, gj, gi] = 1.0 # obj - # pi[..., 2:4] = torch.sigmoid(pi[..., 2:4]) # wh power loss (uncomment) + # ps[:, 2:4] = torch.sigmoid(ps[:, 2:4]) # wh power loss (uncomment) # GIoU - pxy = torch.sigmoid(pi[..., 0:2]) # pxy = pxy * s - (s - 1) / 2, s = 1.5 (scale_xy) - pbox = torch.cat((pxy, torch.exp(pi[..., 2:4]) * anchor_vec[i]), 1) # predicted + pxy = torch.sigmoid(ps[:, 0:2]) # pxy = pxy * s - (s - 1) / 2, s = 1.5 (scale_xy) + pbox = torch.cat((pxy, torch.exp(ps[:, 2:4]) * anchor_vec[i]), 1) # predicted box giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation lbox += (1.0 - giou).mean() # giou loss if arc == 'normal' and model.nc > 1: # cls loss (only if multiple classes) - t = torch.zeros_like(pi[..., 5:]) # targets + t = torch.zeros_like(ps[:, 5:]) # targets t[range(nb), tcls[i]] = 1.0 - lcls += BCEcls(pi[..., 5:], t) # BCE - # lcls += CE(pi[..., 5:], tcls[i]) # CE + lcls += BCEcls(ps[:, 5:], t) # BCE + # lcls += CE(ps[:, 5:], tcls[i]) # CE # Append targets to text file # with open('targets.txt', 'a') as file: # [file.write('%11.5g ' * 4 % tuple(x) + '\n') for x in torch.cat((txy[i], twh[i]), 1)] if arc == 'normal': - lobj += BCEobj(pi0[..., 4], tobj) # obj loss + lobj += BCEobj(pi[..., 4], tobj) # obj loss elif arc == 'uCE': # unified CE (1 background + 80 classes), hyps 20 - t = torch.zeros_like(pi0[..., 0], dtype=torch.long) # targets + t = torch.zeros_like(pi[..., 0], dtype=torch.long) # targets if nb: t[b, a, gj, gi] = tcls[i] + 1 - lcls += CE(pi0[..., 4:].view(-1, model.nc + 1), t.view(-1)) + lcls += CE(pi[..., 4:].view(-1, model.nc + 1), t.view(-1)) elif arc == 'uBCE': # unified BCE (1 background + 80 classes), hyps 200-30 - t = torch.zeros_like(pi0[..., 5:]) # targets + t = torch.zeros_like(pi[..., 5:]) # targets if nb: t[b, a, gj, gi, tcls[i]] = 1.0 - lcls += BCEcls(pi0[..., 5:], t) + lcls += BCEcls(pi[..., 5:], t) elif arc == 'uBCEs': # unified BCE simplified (80 classes) - t = torch.zeros_like(pi0[..., 5:]) # targets + t = torch.zeros_like(pi[..., 5:]) # targets if nb: t[b, a, gj, gi, tcls[i]] = 1.0 - lcls += BCEcls(pi0[..., 5:], t) + lcls += BCEcls(pi[..., 5:], t) lbox *= k * h['giou'] lobj *= k * h['obj'] From ebd93e354d4ae75bfa7cc163bb3ae615ac284641 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 18 Aug 2019 21:28:49 +0200 Subject: [PATCH 1255/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index ef6c61e8..e0e87bc2 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -327,7 +327,7 @@ def compute_loss(p, targets, model): # predictions, targets, model bs = p[0].shape[0] # batch size k = bs / 64 # loss gain arc = 'normal' # (normal, uCE, uBCE, uBCEs) detection architectures - for i, pi0 in enumerate(p): # layer i predictions, i + for i, pi in enumerate(p): # layer index, layer predictions b, a, gj, gi = indices[i] # image, anchor, gridy, gridx tobj = torch.zeros_like(pi[..., 0]) # target obj From 96fd7141a27949d49b458095bad811070ec66fd3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 18 Aug 2019 21:35:52 +0200 Subject: [PATCH 1256/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 78babae5..927f85d1 100755 --- a/models.py +++ b/models.py @@ -155,7 +155,7 @@ class YOLOLayer(nn.Module): # io[..., 2:4] = ((torch.sigmoid(io[..., 2:4]) * 2) ** 3) * self.anchor_wh # wh power method io[..., :4] *= self.stride - arc = 'uBCEs' # (normal, uCE, uBCE, uBCEs) detection architectures + arc = 'normal' # (normal, uCE, uBCE, uBCEs) detection architectures if arc == 'normal': torch.sigmoid_(io[..., 4:]) elif arc == 'uCE': # unified CE (1 background + 80 classes) From 98a24c0a2f28dd17f2b4861a7394f927f3762513 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 19 Aug 2019 01:27:41 +0200 Subject: [PATCH 1257/2595] Focal Loss bias initialization --- models.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/models.py b/models.py index 927f85d1..c3798d5b 100755 --- a/models.py +++ b/models.py @@ -74,6 +74,12 @@ def create_modules(module_defs, img_size): nc=int(mdef['classes']), # number of classes img_size=img_size, # (416, 416) yolo_index=yolo_index) # 0, 1 or 2 + + # Initialize preceding Conv2d() detection bias to -5 (https://arxiv.org/pdf/1708.02002.pdf section 3.3) + bias = module_list[-1][0].bias.view(len(mask), -1) # 255 to 3x85 + bias[:, 4:] -= - 5 + module_list[-1][0].bias = torch.nn.Parameter(bias.view(-1)) + else: print('Warning: Unrecognized Layer Type: ' + mdef['type']) From e1f724b1a38f71e8194723cefefdd6627d964b32 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 19 Aug 2019 01:32:27 +0200 Subject: [PATCH 1258/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index c3798d5b..314382fb 100755 --- a/models.py +++ b/models.py @@ -77,7 +77,7 @@ def create_modules(module_defs, img_size): # Initialize preceding Conv2d() detection bias to -5 (https://arxiv.org/pdf/1708.02002.pdf section 3.3) bias = module_list[-1][0].bias.view(len(mask), -1) # 255 to 3x85 - bias[:, 4:] -= - 5 + bias[:, 4:] -= 5 module_list[-1][0].bias = torch.nn.Parameter(bias.view(-1)) else: From 291a1898a4bc34003151e159bb14fbe27797ed8c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 19 Aug 2019 02:45:48 +0200 Subject: [PATCH 1259/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2b51cd15..bc793d8a 100755 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ Our Jupyter [notebook](https://colab.research.google.com/github/ultralytics/yolo **Resume Training:** `python3 train.py --resume` to resume training from `weights/last.pt`. **Plot Training:** `from utils import utils; utils.plot_results()` plots training results from `coco_16img.data`, `coco_64img.data`, 2 example datasets available in the `data/` folder, which train and test on the first 16 and 64 images of the COCO2014-trainval dataset. -![image](https://user-images.githubusercontent.com/26833433/62865295-5ed94580-bd0e-11e9-9803-e07571e2ea23.png) +![image](https://user-images.githubusercontent.com/26833433/63232750-2e703a80-c22b-11e9-893e-83e09603e2d4.png) ## Image Augmentation From 906c348347239bb7819ab3b13fdd9154723eec7c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 19 Aug 2019 12:18:14 +0200 Subject: [PATCH 1260/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bc793d8a..41c7f441 100755 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ Our Jupyter [notebook](https://colab.research.google.com/github/ultralytics/yolo **Resume Training:** `python3 train.py --resume` to resume training from `weights/last.pt`. **Plot Training:** `from utils import utils; utils.plot_results()` plots training results from `coco_16img.data`, `coco_64img.data`, 2 example datasets available in the `data/` folder, which train and test on the first 16 and 64 images of the COCO2014-trainval dataset. -![image](https://user-images.githubusercontent.com/26833433/63232750-2e703a80-c22b-11e9-893e-83e09603e2d4.png) +![image](https://user-images.githubusercontent.com/26833433/63257986-512a3f80-c27b-11e9-9c26-61922a1d0f10.png) ## Image Augmentation From b64f75ead61b2567342c6042c00d16d7c080fcc9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 19 Aug 2019 12:23:31 +0200 Subject: [PATCH 1261/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 41c7f441..3f25cd29 100755 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ Our Jupyter [notebook](https://colab.research.google.com/github/ultralytics/yolo **Resume Training:** `python3 train.py --resume` to resume training from `weights/last.pt`. **Plot Training:** `from utils import utils; utils.plot_results()` plots training results from `coco_16img.data`, `coco_64img.data`, 2 example datasets available in the `data/` folder, which train and test on the first 16 and 64 images of the COCO2014-trainval dataset. -![image](https://user-images.githubusercontent.com/26833433/63257986-512a3f80-c27b-11e9-9c26-61922a1d0f10.png) +![image](https://user-images.githubusercontent.com/26833433/63258271-fe9d5300-c27b-11e9-9a15-95038daf4438.png) ## Image Augmentation From 4d1657afc9d4d2a88029a2f319b70b6c6feb78e1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 19 Aug 2019 12:30:42 +0200 Subject: [PATCH 1262/2595] Update examples.ipynb --- examples.ipynb | 196 +++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 165 insertions(+), 31 deletions(-) diff --git a/examples.ipynb b/examples.ipynb index 64c49f34..bebc3088 100644 --- a/examples.ipynb +++ b/examples.ipynb @@ -35,11 +35,11 @@ "metadata": { "colab_type": "code", "id": "e5ylFIvlCEym", + "outputId": "fbc88edd-7b26-4735-83bf-b404b76f9c90", "colab": { "base_uri": "https://localhost:8080/", "height": 34 - }, - "outputId": "79e2ed76-f1d0-45b3-b4a7-4ed561623cf9" + } }, "source": [ "import time\n", @@ -47,10 +47,10 @@ "import torch\n", "import os\n", "\n", - "from IPython.display import Image, clear_output\n", + "from IPython.display import Image, clear_output \n", "print('PyTorch %s %s' % (torch.__version__, torch.cuda.get_device_properties(0) if torch.cuda.is_available() else 'CPU'))" ], - "execution_count": 39, + "execution_count": 2, "outputs": [ { "output_type": "stream", @@ -76,15 +76,38 @@ "metadata": { "colab_type": "code", "id": "tIFv0p1TCEyj", - "colab": {} + "outputId": "e9230cff-ede4-491a-a74d-063ce77f21cd", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 221 + } }, "source": [ "!git clone https://github.com/ultralytics/yolov3 # clone\n", - "!bash yolov3/data/get_coco_dataset_gdrive.sh # copy COCO2014 dataset (20GB)\n", + "!bash yolov3/data/get_coco_dataset_gdrive.sh # copy COCO2014 dataset (19GB)\n", "%cd yolov3" ], "execution_count": 0, - "outputs": [] + "outputs": [ + { + "output_type": "stream", + "text": [ + "Cloning into 'yolov3'...\n", + "remote: Enumerating objects: 61, done.\u001b[K\n", + "remote: Counting objects: 100% (61/61), done.\u001b[K\n", + "remote: Compressing objects: 100% (44/44), done.\u001b[K\n", + "remote: Total 4781 (delta 35), reused 37 (delta 17), pack-reused 4720\u001b[K\n", + "Receiving objects: 100% (4781/4781), 4.74 MiB | 6.95 MiB/s, done.\n", + "Resolving deltas: 100% (3254/3254), done.\n", + " % Total % Received % Xferd Average Speed Time Time Time Current\n", + " Dload Upload Total Spent Left Speed\n", + "100 388 0 388 0 0 2455 0 --:--:-- --:--:-- --:--:-- 2440\n", + "100 18.8G 0 18.8G 0 0 189M 0 --:--:-- 0:01:42 --:--:-- 174M\n", + "/content/yolov3\n" + ], + "name": "stdout" + } + ] }, { "cell_type": "markdown", @@ -181,13 +204,138 @@ "metadata": { "id": "0v0RFtO-WG9o", "colab_type": "code", - "colab": {} + "outputId": "6791f795-cb10-4da3-932f-c4ac47574601", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + } }, "source": [ "!python3 test.py --data data/coco.data --save-json --img-size 416 # 0.565 mAP" ], "execution_count": 0, - "outputs": [] + "outputs": [ + { + "output_type": "stream", + "text": [ + "Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', img_size=416, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='weights/yolov3-spp.weights')\n", + "Using CUDA device0 _CudaDeviceProperties(name='Tesla K80', total_memory=11441MB)\n", + "\n", + "Downloading https://pjreddie.com/media/files/yolov3-spp.weights\n", + " % Total % Received % Xferd Average Speed Time Time Time Current\n", + " Dload Upload Total Spent Left Speed\n", + "100 240M 100 240M 0 0 17.9M 0 0:00:13 0:00:13 --:--:-- 20.3M\n", + " Class Images Targets P R mAP F1: 100% 313/313 [11:14<00:00, 3.02s/it]\n", + " all 5e+03 3.58e+04 0.107 0.749 0.557 0.182\n", + " person 5e+03 1.09e+04 0.138 0.846 0.723 0.238\n", + " bicycle 5e+03 316 0.0663 0.696 0.474 0.121\n", + " car 5e+03 1.67e+03 0.0682 0.781 0.586 0.125\n", + " motorcycle 5e+03 391 0.149 0.785 0.657 0.25\n", + " airplane 5e+03 131 0.17 0.931 0.853 0.287\n", + " bus 5e+03 261 0.177 0.824 0.778 0.291\n", + " train 5e+03 212 0.18 0.892 0.832 0.3\n", + " truck 5e+03 352 0.106 0.656 0.497 0.183\n", + " boat 5e+03 475 0.0851 0.724 0.483 0.152\n", + " traffic light 5e+03 516 0.0448 0.723 0.485 0.0844\n", + " fire hydrant 5e+03 83 0.183 0.904 0.861 0.304\n", + " stop sign 5e+03 84 0.0838 0.881 0.791 0.153\n", + " parking meter 5e+03 59 0.066 0.627 0.508 0.119\n", + " bench 5e+03 473 0.0329 0.609 0.338 0.0625\n", + " bird 5e+03 469 0.0836 0.623 0.47 0.147\n", + " cat 5e+03 195 0.275 0.821 0.735 0.412\n", + " dog 5e+03 223 0.219 0.834 0.771 0.347\n", + " horse 5e+03 305 0.149 0.872 0.806 0.254\n", + " sheep 5e+03 321 0.199 0.822 0.693 0.321\n", + " cow 5e+03 384 0.155 0.753 0.65 0.258\n", + " elephant 5e+03 284 0.219 0.933 0.897 0.354\n", + " bear 5e+03 53 0.414 0.868 0.837 0.561\n", + " zebra 5e+03 277 0.205 0.884 0.831 0.333\n", + " giraffe 5e+03 170 0.202 0.929 0.882 0.331\n", + " backpack 5e+03 384 0.0457 0.63 0.333 0.0853\n", + " umbrella 5e+03 392 0.0874 0.819 0.596 0.158\n", + " handbag 5e+03 483 0.0244 0.592 0.214 0.0468\n", + " tie 5e+03 297 0.0611 0.727 0.492 0.113\n", + " suitcase 5e+03 310 0.13 0.803 0.56 0.223\n", + " frisbee 5e+03 109 0.134 0.862 0.778 0.232\n", + " skis 5e+03 282 0.0624 0.695 0.406 0.114\n", + " snowboard 5e+03 92 0.0958 0.717 0.504 0.169\n", + " sports ball 5e+03 236 0.0715 0.716 0.622 0.13\n", + " kite 5e+03 399 0.142 0.744 0.533 0.238\n", + " baseball bat 5e+03 125 0.0807 0.712 0.576 0.145\n", + " baseball glove 5e+03 139 0.0606 0.655 0.482 0.111\n", + " skateboard 5e+03 218 0.0926 0.794 0.684 0.166\n", + " surfboard 5e+03 266 0.0806 0.789 0.606 0.146\n", + " tennis racket 5e+03 183 0.106 0.836 0.734 0.188\n", + " bottle 5e+03 966 0.0653 0.712 0.441 0.12\n", + " wine glass 5e+03 366 0.0912 0.667 0.49 0.161\n", + " cup 5e+03 897 0.0707 0.708 0.486 0.128\n", + " fork 5e+03 234 0.0521 0.594 0.404 0.0958\n", + " knife 5e+03 291 0.0375 0.526 0.266 0.0701\n", + " spoon 5e+03 253 0.0309 0.553 0.22 0.0585\n", + " bowl 5e+03 620 0.0754 0.763 0.492 0.137\n", + " banana 5e+03 371 0.0922 0.69 0.368 0.163\n", + " apple 5e+03 158 0.0492 0.639 0.227 0.0914\n", + " sandwich 5e+03 160 0.104 0.662 0.454 0.179\n", + " orange 5e+03 189 0.052 0.598 0.265 0.0958\n", + " broccoli 5e+03 332 0.0898 0.774 0.373 0.161\n", + " carrot 5e+03 346 0.0534 0.659 0.272 0.0989\n", + " hot dog 5e+03 164 0.121 0.604 0.484 0.201\n", + " pizza 5e+03 224 0.109 0.804 0.637 0.192\n", + " donut 5e+03 237 0.149 0.755 0.594 0.249\n", + " cake 5e+03 241 0.0964 0.643 0.495 0.168\n", + " chair 5e+03 1.62e+03 0.0597 0.712 0.424 0.11\n", + " couch 5e+03 236 0.125 0.767 0.567 0.214\n", + " potted plant 5e+03 431 0.0531 0.791 0.473 0.0996\n", + " bed 5e+03 195 0.185 0.826 0.725 0.302\n", + " dining table 5e+03 634 0.062 0.801 0.502 0.115\n", + " toilet 5e+03 179 0.209 0.95 0.835 0.342\n", + " tv 5e+03 257 0.115 0.922 0.773 0.204\n", + " laptop 5e+03 237 0.172 0.814 0.714 0.284\n", + " mouse 5e+03 95 0.0716 0.853 0.696 0.132\n", + " remote 5e+03 241 0.058 0.772 0.506 0.108\n", + " keyboard 5e+03 117 0.0813 0.897 0.7 0.149\n", + " cell phone 5e+03 291 0.0381 0.646 0.396 0.072\n", + " microwave 5e+03 88 0.155 0.841 0.727 0.262\n", + " oven 5e+03 142 0.073 0.824 0.556 0.134\n", + " toaster 5e+03 11 0.121 0.636 0.212 0.203\n", + " sink 5e+03 211 0.0581 0.848 0.579 0.109\n", + " refrigerator 5e+03 107 0.0827 0.897 0.755 0.151\n", + " book 5e+03 1.08e+03 0.0519 0.564 0.166 0.0951\n", + " clock 5e+03 292 0.083 0.818 0.731 0.151\n", + " vase 5e+03 353 0.0817 0.745 0.522 0.147\n", + " scissors 5e+03 56 0.0494 0.625 0.427 0.0915\n", + " teddy bear 5e+03 245 0.14 0.816 0.635 0.24\n", + " hair drier 5e+03 11 0.0714 0.273 0.106 0.113\n", + " toothbrush 5e+03 77 0.043 0.61 0.305 0.0803\n", + "loading annotations into memory...\n", + "Done (t=5.40s)\n", + "creating index...\n", + "index created!\n", + "Loading and preparing results...\n", + "DONE (t=2.65s)\n", + "creating index...\n", + "index created!\n", + "Running per image evaluation...\n", + "Evaluate annotation type *bbox*\n", + "DONE (t=58.87s).\n", + "Accumulating evaluation results...\n", + "DONE (t=7.76s).\n", + " Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.337\n", + " Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.568\n", + " Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.350\n", + " Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.152\n", + " Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.359\n", + " Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.496\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.279\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.432\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.460\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.257\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.494\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.623\n" + ], + "name": "stdout" + } + ] }, { "cell_type": "markdown", @@ -196,7 +344,7 @@ "colab_type": "text" }, "source": [ - "Reproduce tutorial training runs and overlays results:" + "Reproduce tutorial training runs and plot training results:" ] }, { @@ -204,24 +352,24 @@ "metadata": { "colab_type": "code", "id": "LA9qqd_NCEyB", - "outputId": "82481ea3-00f4-4a01-9412-ca8d81eaa8b9", + "outputId": "1521c334-92ef-4f9f-bb8a-916ad5e2d9c2", "colab": { "base_uri": "https://localhost:8080/", "height": 417 } }, "source": [ - "!python3 train.py --nosave --batch-size 4 --accumulate 1 --data data/coco_16img.data && mv results.txt results0_16img.txt\n", - "!python3 train.py --nosave --batch-size 4 --accumulate 1 --data data/coco_64img.data && mv results.txt results0_64img.txt\n", + "!python3 train.py --data data/coco_16img.data --batch-size 16 --accumulate 1 --nosave && mv results.txt results_coco_16img.txt # CUSTOM TRAINING EXAMPLE\n", + "!python3 train.py --data data/coco_64img.data --batch-size 16 --accumulate 1 --nosave && mv results.txt results_coco_64img.txt \n", "!python3 -c \"from utils import utils; utils.plot_results()\" # plot training results\n", "Image(filename='results.png', width=800)" ], - "execution_count": 42, + "execution_count": 8, "outputs": [ { "output_type": "execute_result", "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAACvAAAAV4CAYAAAB8IQgEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAewgAAHsIBbtB1PgAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xl8TNf/P/BXdhEhe6RBQgStpEgs\niS1BfRSxVVBU7VtV6UZREksRWtRSFE0+XVTRRVW1PiqLxBprqFpjSyUiRMi+3N8f+eV+701muZNM\nJgmv5+Mxj8c9M+ece2YmnDP3vs85RoIgCCAiIiIiIiIiIiIiIiIiIiIiIiIiIiKDMK7qBhARERER\nERERERERERERERERERERET1PGMBLRERERERERERERERERERERERERERkQAzgJSIiIiIiIiIiIiIi\nIiIiIiIiIiIiMiAG8BIRERERERERERERERERERERERERERkQA3iJiIiIiIiIiIiIiIiIiIiIiIiI\niIgMiAG8REREREREREREREREREREREREREREBsQAXiIiIiIiIiIiIiIiIiIiIiIiIiIiIgNiAC8R\nEREREREREREREREREREREREREZEBMYCXiIiIiIiIiIiIiIiIiIiIiIiIiIjIgBjAS0RERERERERE\nREREREREREREREREZEAM4CUiIiIiIiIiIiIiIiIiIiIiIiIiIjIgBvASERERERERERERERERERER\nEREREREZEAN4iYiIiIiIiIiIiIiIiIiIiIiIiIiIDIgBvERERERERERERERERERERERERERERAbE\nAF4iIiIiIiIiIiIiIiIiIiIiIiIiIiIDYgAvERERERERERERERERERERERERERGRATGAl4iIiIiI\niIiIiIiIiIiIiIiIiIiIyIAYwEtERERERERERERERERERERERERERGRADOAlIiIiIiIiIiIiIiIi\nIiIiIiIiIiIyIAbwEhERERERERERERERERERERERERERGRADeImIiIiIiIiIiIiIiIiIiIiIiIiI\niAyIAbxEREREREREREREREREREREREREREQGxABeIiIiIiIiIiIiIiIiIiIiIiIiIiIiA2IALxER\nERERERERERERERERERERERERkQExgJeIiIiIiIiIiIiIiIiIiIiIiIiIiMiAGMBLRERERERERERE\nRERERERERERERERkQAzgJSIiIiIiIiIiIiIiIiIiIiIiIiIiMiAG8BIRERERERERERERERERERER\nERERERkQA3iJiIiIiIiIiIiIiIiIiIiIiIiIiIgMiAG8REREREREREREREREREREREREREREBsQA\nXiIiIiIiIiIiIiIiIiIiIiIiIiIiIgNiAC8REREREVWKqKgoGBkZiQ99k9YdFRWl9/rHjBkj1j9m\nzBi91/+8CgwMFD/X0NDQKmlDaGio2IbAwMAqaQMRERERERERERERERERPd8YwEv0HHvy5AkOHTqE\n7du3Y+3atfjkk0+wbt06fPPNNzh69CgyMzOruolERERERERERKQHKSkpCAkJgb+/P+zt7WFqaqpy\nQktERIT4vLu7u17bcPPmTdkkrJs3b+q1fiIiopqusicr11TlGZ88fvwYn376KQIDA+Hk5AQzMzOV\ndVT2BPSahGM1IiIiZd5++22xvwwODq7q5hBRDWda1Q0gIsPKzs7Gl19+iV27duH48eMoKChQm9fY\n2BitW7dGcHAwhg0bhiZNmmitX3pxY/To0YiIiNBHsxWLiopCt27dxHR4eLjOK+ZFRERg7NixYjoy\nMlKnldmWLl2KefPmAQDeeecdfP755wCACRMmYNu2bWK+AwcOoGfPnorrTUxMhLe3txhY3aFDB8TF\nxaGwsBA+Pj64ePEiAMDOzg5///03nJ2dFdcNFP9tvPzyy7h27RoAoH79+rh48SLs7Ox0qoeIiKrG\n66+/jh9++AEAULt2baSnp8PMzExruYyMDNjZ2aGwsFB87uDBg+jRo4ei8/r7++PYsWMAgAYNGuDO\nnTvlaH3lWrNmDdLT0wEAAwcOROvWrau4RepNmjQJW7ZsAQCsWrUK7777rvhaYGAgoqOjAQBubm7l\nuolS1WO150F6ejrWrFkjpmfOnAkbG5sqbBEREaWmpiI+Ph7379/HgwcPkJ+fD1tbWzg7O8PX1xcN\nGzas6iZWutjYWAwcOBBpaWlV3RQiIqJnEscb1culS5fQu3dv3Lp1q6qbQkREREREpBEDeImeI1u3\nbsWCBQtw7949RfmLiopw+vRpnD59Gh9//DGGDx+OkJAQeHp6VnJLa7a9e/eKx/369ROPP/vsM/zx\nxx9ISkoCAEycOBEXLlxAnTp1tNYpCALGjx8vBu9aWFggPDwcJiYmMDExQUREBPz8/FBYWIiHDx9i\n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\njWBiYiKrIzExUZZ/9OjROo9rEhMTNda5adMm8bURI0YoqrOEPvry8ozVCgsLhe3bt8vGM+rGU+3a\ntRMWL16scewofR8hISGK2nDjxg1h9uzZgre3t1C3bl3ByspKaN68ufDmm28K0dHRYr7Jkycren8h\nISFivoCAAEVtEATd/+b27t0rvP7664Knp6dQp04dwcjIiOMxIiIDWL9+veDg4KCx31LXl40fP174\n999/1dZ95swZwdnZWVF9RkZGwooVK7S2tzx9oy7jLDc3N52uI4SHh+vUX82fP1/R5zFt2jStY6XS\n8vLyhEmTJun8XQIQYmJiVNZZGWO80q5duyY0a9ZMp/ZqqvPJkydC//79y/U5KL2mR0REuqms8YbS\n350LFy5UdD5HR0fh2LFjin4HS8cMSsc6S5curfS6BEG38YmuYytdr1/dv39f6NChg07vT913OW7c\nOEXlmzRpIly9elWnccz169eFRo0aaay39Oej65inJo6NiYjI8KT9l67/T+/atUssZ29vr1PZwsJC\nYeDAgYr6KS8vLyEpKUno27ev+Nz777+vtu5p06aJ+QYPHlzhfFKpqamytiUkJOj0vtVZuXKlzmPX\n0g9VbTl8+LBQr149ReVNTEyELVu2qG3jyZMndW6Tvb29cOzYsUqti6iycQVeoueMpaUlZs6ciZkz\nZ+LJkyc4ceIE7t27h7S0NDx9+hR169aFra0t3Nzc4OPjAysrK53qF/7/rBldtGjRAnv27EF6ejqi\noqKQlJSEx48fw87ODm5ubggICEDt2rV1rhcongUcHByM4OBgpKen48iRI0hKShK3XLSzs4Orqyv8\n/f0Vr0T422+/icdKtr02NTUVV9qrqCVLlpR7ayFVKxgSEdGzz8/Pr1z9c4mRI0di5MiR5SobGBio\n87k7duyIM2fO4Ny5c4iPj8f9+/dhb2+Pxo0bIzAwEGZmZmJeXetu1aoVNmzYoDh/RESEuKKOUu7u\n7hrbpes4QkoffXl5/haMjY0xfPhwDB8+HMnJyThy5AiSk5Px6NEjWFhYwM7ODp6envD29oaNjY3W\n+srzPho3bozly5dj+fLlGvOVrGAHAB4eHmrzhYaGylbrVUrXzy8oKEi2vSYRERnGtGnT8Oabb2Ld\nunXYvXs3zp49q/H/8IYNG2LEiBEYN24cmjVrprHu1q1b49KlSwgNDUV4eDiePHlSJo+xsTECAgIQ\n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\nxSkiIkLh4eH69ddfK/7iqlFGRobGjBmjdevWFbp29uxZnT17Vr/++qvCw8N16tQpc6GHPBs2bDC3\nhw4dWuJcQ4YMKfK+mig+Pt6cKNurVy+1atWqWudfs2aNxo0bp7S0P3+fpaena/Pmzdq8ebPeeOMN\nvfLKKzKZTJozZ45ee+01i/vPnz+v1atXa+3atfrmm290//33FzvX4cOHNWTIEJ0+fdri/KFDh3To\n0CGFhYXpm2++qdwXWI+RwIsSeboU/WYSCbwAAAAAAKC6LFiwQPfff79++eUXxcTE6Pz587pw4YKu\nX7+uRo0aqUWLFurZs6ceffRR3XHHHbYO1yqeLo6yM0j5i6FcSLtOAi8AAKg5zsYWTt7Nx065etvh\nQ/3F84BeThmm34xBVg2bYzRp2qoY3eLrXm+SSQAAQPW6pZ5V4F0bnaBpq2KUk2+jKSM7V99GJSg8\nOrFefHjq559/1rx582QwGPTEE0/orrvukqurq44fP66goD/XqU888YSWLVsmSfLy8tKYMWPUpUsX\neXh46Pz581q/fr02bNigM2fOqH///tq3b59uvfVWi7nCw8P16quvSpKcnZ01bNgw3XnnnfLx8ZHR\naFRSUpIOHDigzZs3V983oBhr1qyRJI0cOVKS1L59e73xxhuF+uWvkvvKK6+Yk3d9fHw0ZswYtW/f\nXk2aNFFmZqZOnjypPXv2KDIyssg5Y2Njze1u3bqVGJ+fn58CAwMVHx+vc+fOKTk5WT4+PmV7kdVk\n+/btMplu/B3L24OOjIzURx99pF27dik5OVmenp5q3769hg8frqeffloNGzaslLmjoqI0f/582dvb\n6/nnn1f37t1lb2+vrVu3avHixcrJydGsWbPUu3dvRUVF6bXXXlPz5s01fvx4tW3bVteuXdOqVau0\nadMmZWdna/z48YqLi5O3t3ehuZKTkzVw4EBzFeWgoCBNmDBBbdq0UVpamjZt2qTVq1frgQceUKdO\nnSrl9dV3JPCiRI4OdnJ1tNe1rFzzudT0LBtGBAAAAAAAbG3r1q2VNtb48eNLrcrbqlUrtWrVSk89\n9VSlzWtr9nYGebk66ULadfO5C2nsuQAAgBpk14fFJu/mMUhqn/azvnfao79mP6PvcnpZNXSO0aTP\nd5zUgtEhlRAoAACApda+lgm8SZczlXY9R25OVZ8mZTSadKka82qOnruqqatilJv/U+L55BhNmroq\n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\nGWqqbwptr6eBFwAAAAAApJtIDbxRgisF7gwdbXMv5CQBXgBAL7d3714tX77csm3Xrl2hz2+//bbu\nv/9+y/5JkyZp0qRJHb7Wxo0b9d3vflcjRozQl7/8ZZ1//vnq16+fnE6nDh48qFdeeUXr16+XaZqS\npLPPPltPP/101PMVFxfr8ccf16xZs2SapqZPn64bb7xRV155pZxOp7Zs2aJf//rXoTDwgw8+qM99\n7nMdXndayysO39ZwWCoY3PNr6aBSGngBAEgvYQ288bXlmmZQGyqq45q7vqJKj864QA6HEXsyAABt\nEOBFyjAMQ5lOh5oDLTfAapWrZiNTmcHm0JzSjBpJUr7bZfnRqs7Lj1YAAAAAACDNOCPcmovQwCtJ\nhdnWeyG13AsBAPRy+/bt009/+tOo+3ft2mUJ9EotTbadCfCe9tFHH+mjjz5qd87kyZP1q1/9SoMH\ntx80/dd//Vc1Njbq+9//vrxer37/+9/r97//vWWO0+nUv//7v+u+++7r9JrTVk4/SYbU9oXUj31e\nGjVdGj9fKilP1spiKu1jC/Ae9yRpJQAAIC5hAd74Gni9/oA8vkBccz2+gLz+gHIyiWEBADqGf3Mg\npWS6WgO8kqETjn4aGKgK7R/sOClJysuy/tWt89LACwAAAAAA0owjI3ybGTmYW5BtnVvr4V4IAACJ\nsnjxYn31q1/Vm2++qZ07d+rw4cM6evSompqaVFhYqGHDhmn8+PH6xje+oYsvvjju895222368pe/\nrF/+8pd66aWXVFlZKdM0NXjwYF1xxRX69re/rc9//vPd+CdLYe+ukSW8K0l+r7RzpVTxnDR9qVQ+\nIylLi6W0b7ZlTAMvAAAprpMBXrfLqewMZ1wh3uwMp9wuZ2dWBwA4wxHgRUrJcFpfJ3BUfTRQrQHe\ngY4TksIDvPVN/GgFAAAAAADSjCPCrblAlACv2xbgpYEXANDLTZw4UcFgMPbEGGbNmqVZs2a1O2fE\niBEaMWKEZs+e3eXr2Z177rlavHixFi9enPBzp63qCmnNvOj7TX/L/gEjU7KJ197AW+f162SjT4U5\nER7OAgAAydfJAK/DYejq8hKt3n4g5twp5YPkcBgx5wEAYOdI9gKAtjJd1r+SVWahZdw/eCrA67YF\neGngBQAAAAAA6cYZqYE3cqtLeAMvAV4AAJCmti5pCem2x/RLW3/RM+vpoMFF2bLnc2jhBQAghWUV\n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\n5Xfsvn37XJ9LSko8thcWFuKKK64AABw/fhxffPGFz2N1dnbi0KFDAACTyYSbbropmLKTQ9/zlaI7\nAcHtseach53b49TA5zgpkvprEwXgm9NGRakyIiKiJOf+clBL9AO847LTghqvE8BO/kREcYIBXqJI\nyTMDM+9SrxtW0H/xZ7cAtm5NhzIJPTCgF+kG/1NH9b3B/ekTt6L+l7fi0ydudb2xnSKJyDbpNZdv\nsTlgtfvukko0GP478PLPHRERERFRLCorK4PZbMY999yDdevW4YMPPoDFEnzX2GB0dnaitLQUpaWl\n2LVrF06fPo2enh60trbi8OHD+OlPf4rp06fjgw8+CGsdYaF378AbfPi216H++Wn/iVas3FmD+qY4\nDTUTERFFyE033YS8vDwAwIEDB3DkyBGv4xwOB5577jnX8h133OF13Pe//33X51//+tc+z7tp0yZ0\ndXUBAObPnw+TKfjOakkhzwws3ABc/T31elt4rz0joe85zl9//i0MzPA6FODDkxeiVxgREVEyG12k\nXu48C3ScjU4tXwm2A69OFLG5+iTvCRERxQEGeIkiyThcvWy93P9ZMgJ6bRdd3UoKrEjx24F3IFEU\nYEqRPKZHyM00AAAEyDDCCgG+O50a9ToYJJ2m8xEFq9tfgNfGDrxERERERLHI4RYWzc7OxpQpU8J6\nvsWLF6OyshIAMGrUKKxZswavvfYa1q1bhxtuuAEA0NDQgJKSEhw/fjxstYSFZFAvBxng3VvTiBf2\n/0O1TlaA3UcaMX9dNfbWNA62QiIiori0detW1wwBc+fO9TpGp9Phsccecy3fddddOHfunMe4Rx99\nFDU1NQCAG264AbfeeqvX4z3yyCPIyMgAAKxfv951/TLQhx9+iP/4j/8AAEiShMcffzyorysp5UxW\nL1/8h/dxcSjDqMfMcdmqdftPnOPMiERERNGQPRHQu3W8bamLTi1fGWbSIzNAg7eBeh0y7wkREcUJ\n7X+7E9HgGbLUy5YBAV5RBApLgdrtAQ+TAjue1W9El2M5gKtDLqdQ/BLL9K9jnvgRTEIPupVUVMmz\nsNleguPKONXYEvNojwAw0VDxG+C1M8BLRERERBSLZs2ahWnTpuHaa6/FtddeiwkTJmDr1q245557\nwnK+zZs34+233wbgnJr6vffew6hR/dMKl5eX45FHHkFFRQUuXbqE5cuX4+DBg2GpJSzcA7w27QHe\n+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\nxVWvXj0NHTpU3377rapXr57XU0U+17RpU9WvX1+lS5eWt7e3fHx8lJKSIsMwVKJECYWEhKhXr16a\nOnWqRo0aJX9/f7ti9unTRz4+Pjp//ryuXr0qHx8fVa5cWQ899JC++uor9evXzwnPDu7q8OHDmjlz\nZraOadu2rdq2bWtznyPfs4GBgXryySdVpkwZJSYm6urVq0pOTlbp0qXVunVrvfnmm/roo4/s+n8J\ncBbyFrgK8ha4IvIWwLHIW+BKyF3gishdAMcid4GrIG+BKyJvARyLvAWuhNwFrojcJXd5GIZh5PUk\nAAAAAAAAAAAAAAAAAAAAgPzCM68nAAAAAAAAAAAAAAAAAAAAAOQnFPACAAAAAAAAAAAAAAAAAAAA\nTkQBLwAAAAAAAAAAAAAAAAAAAOBEFPACAAAAAAAAAAAAAAAAAAAATkQBLwAAAAAAAAAAAAAAAAAA\nAOBEFPACAAAAAAAAAAAAAAAAAAAATkQBLwAAAAAAAAAAAAAAAAAAAOBEFPACAAAAAAAAAAAAAAAA\nAAAATkQBLwAAAAAAAAAAAAAAAAAAAOBEFPACAAAAAAAAAAAAAAAAAAAATkQBLwAAAAAAAAAAAAAA\nAAAAAOBEFPACAAAAAAAAAAAAAAAAAAAATkQBLwAAAAAAAAAAAAAAAAAAAOBEFPACAAAAAAAAAAAA\nAAAAAAAATkQBLwAAAAAAAAAAAAAAAAAAAOBEFPACAAAAAAAAAAAAAAAAAAAATkQBLwAAAAAAAAAA\nAAAAAAAAAOBEFPACAAAAAAAAAAAAAAAAAAAATkQBLwAAAAAAAAAAAAAAAAAAAOBEFPACAAAAAAAA\nAAAAAAAAAAAATkQBLwAAAAAAAAAAAAAAAAAAAOBEFPACAAAAAAAAAAAAAAAAAAAATkQBLwAAAAAA\nAAAAAAAAAAAAAOBEFPACAAAAAAAAAAAAAAAAAAAATkQBLwAAAAAAAAAAAAAAAAAAAOBEFPACAAAA\nAAAAAAAAAAAAAAAATkQBLwAAAAAAAAAAAAAAAAAAAOBEFPACAAAAAAAAAAAAAAAAAAAATkQBLwAA\nAAAAAAAAAAAAAAAAAOBEFPACAAAAAAAAAAAAAAAAAAAATkQBLwAAAAAAAAAAAAAAAAAAAOBEFPAC\nAAAAAAAAAAAAAAAAAAAATkQBLwAAAAAAAAAAAAAAAAAAAOBEFPACAAAAAAAAAAAAAAAAAAAATkQB\n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\n9YC3t7eWLl2qli1bpuvn5eWld955R4MHDzYfW79+vRYtWmTXOGlpaXr//ff1wgsv2Pxv1KBBA733\n3ntme/v27elWrgEAwF1cvXpVr776qtVjd999d4b9o6Oj9emnn5rtl156SZ988onNK6Q9PT01atQo\njRgxwnzsrbfesrpi2dJLL72kxMRE89jFixdr8ODBNr+vpev5Qo8ePfTjjz/a3B8SEqKdO3eqX79+\n8vPzy/A5lStXTsuWLVP16tUlXc8Vvvzyywz7AwCA28ukSZNUpEiRDPffe++9CggIsHrs3XffzXSF\nl27duqlYsWJm2/J3H1uOHj2q1atXm+0BAwak6xMSEqLGjRub7fDw8Exj5tT06dO1cOFCs12yZMkM\nV38BAACurV27dvLw8Mjyz55zXQAAwDV899132rBhg9kODw/XCy+8YPMuP4ULF1Z4eLjuueceSVJq\naqrNFXgNw9C6devM9meffZbl3XyaNm2qb7/9NqdP47b13nvvKSEhwWyHh4frgQcesNn3ySeftKot\nOXz4sNU5tBtOnjyp/fv3S7p+l6bp06dn+luWp6en2rdvr48//jhXYwF5jQJeIB/ZsWOH3njjDavH\nMvqCveGFF15QjRo1soxtGIamTJlitnv37q1evXpleoyXl5fVl+OiRYts3v559uzZVo9PmTJFlSpV\nynJOtyouLs7cvlHIktuOHTumX3/91WwPHjxYTZo0yfSYSZMmqUSJEmb7iy++sGuskJAQDRs2LNM+\n/fr1szqRl9WJOgAAXM2VK1e0ePFitWjRwup7rkSJEnr00UczPG7KlCnmRVEVK1bUpEmTshxr3Lhx\n5nf28ePHrb7zb4iJiVFERITZfu6559SxY0e7n48tvr6+8vDwsKtvkSJFNGrUKLO9fPnyWxobAAA4\nR9GiRdWjR49M+3h7e6tevXpWx3Tv3j3LY+rXr2+2s7qwd+bMmWaO5O/vn+GcLAt7f/nlF507dy7T\nuPYwDENnz57VmjVr1L9/fz355JNW+8eMGZPpxUwAAAAAAMB1WNaa3HfffXr44Ycz7e/p6WlV0xIR\nEaHjx49b9Tl79qyuXbtmtp1VJ3K7uXbtmmbMmGG227dvrz59+mR6zLBhw6x+d/rqq6+sFheUrGtw\n/P39FRQUlOM5OjIWkNco4AXcXGJiorZt26bXX39drVq10oULF8x9PXr0yHIF3kceecSucXbu3KmY\nmBiznVVh6A2NGzdWSEiIpOur8EZGRqbr89NPP5nblSpVUu/eve2KfasKFSpkbm/evNkpY/72229W\nq/FZrq6bkYCAAPXr189sr1mzRlevXs3yuIEDB2ZZzOPn56cGDRqYbVbgBQC4qocffljBwcFWf+XK\nlTMLS3bu3Gn29fb2Vnh4uIoXL24zVlpamubPn2+2n3vuOfn4+GQ5Bz8/Pz344INme9WqVen6LFiw\nwPxBw8PDQ6+88ordz9FRLFce3rdvn7kaMAAAuH01atRI3t7eWfYrXbq0ud24ceNsH5NZoa1hGFar\n6fbs2dPqtxVL/fr1M1fESUpK0pw5c7Kcx81uXlHP09NTJUqUUPv27dPFGzBggN2/VQEAANdTtmxZ\nVatWLcu/ihUr5vVUAQCAA8TExFid17H33/yWdwVKTU21uiuzpHQX/jqrTuR2s2XLFp0+fdps21O3\n4unpadXv8OHD2rNnj1Ufy9+JLly4oL179+Z4jo6MBeQ1CngBN2LrFkFFihTRnXfeqYkTJ+rKlStm\n37p161pdMWOLv7+/6tata9fYGzduNLeLFSumli1b2j1vyyLiqKgoq31paWnatGmT2e7evXuGt492\nNMtbKU2cOFHTpk1TcnJyro5pufJfUFCQVfFsZrp27WpuJycna/v27Vke07x5c7tily1b1tx2xIo4\nAADkhZMnT+rff/+1+jt58qTVhTOSVLNmTa1cuVL33XdfhrGio6OtLorq3Lmz3fPILO+RZHW7p4YN\nG6py5cp2x3YUyyKdtLQ0xcbGOn0OAAAge+xdZcTyLjuW3/n2HpPZhT2RkZE6ePCg2bZcZfdmQUFB\n5m0rJWX5G1VOlSxZUp988om+++47u+9IAAAAXM/333+vAwcOZPm3ePHivJ4qAABwAMv6FD8/P911\n1112H5vZeRo/Pz/VrFnTbD/xxBNauXLlLczUNd18Z+ZOnTrZdZxl3YqtOMHBwSpSpIjZ7tWrl81z\nZfZwZCwgr1HAC+QzBQoU0PPPP69NmzZluKrcDVWqVLH75MauXbvM7Ro1amSryNbyhNHNtyg4efKk\nzp8/b7bvvPNOu+PeKsurg5KTk/XUU0+pfPnyevLJJ/XDDz+km6sj7N+/39y2vL1AVixvZ3lznIzk\n5OQeK/ABANxZq1attHHjRoWFhWXazzLv8fDwsPoxJyuZ5T2SrK4Qzo28Z/PmzRo+fLjatWun8uXL\ny9/fX56enlYXgN18hbllLgYAAG5PBQsWdMoxN9/60JJlEW6ZMmWsVvW3xfKuT1FRUelWaN7IvgAA\nIABJREFUZcnKzSvqVa9eXY0aNdLdd9+tYcOGaf78+Tpx4oSGDBlC8S4AAAAAAG7E8jxNcHCwXXdJ\nvCGr8zRPP/20uR0bG6sOHTqoRo0aeuWVV7R06VKdPXs2h7N2HZb1JhUqVFBAQIBdx1WpUsWqqPbm\nuhVvb289/vjjZnvv3r1q1qyZGjVqpDFjxmjlypV216Q4MhaQ17K+RxoAl1G2bFmrggsPDw8VKlRI\nxYoVU/Xq1dW8eXM98MADKlWqlF3x/P397R77v//+M7ejoqJyfGLk5hVeLeNK9hedOkKrVq00fvx4\njRkzxnzs1KlTmj59uqZPny5Jql69urp06aKBAwc6pMjGMtkLDAy0+7ib+9qTNDr6RB0AALezNWvW\nqG3btmb78uXLOnLkiFauXKnJkyfr+PHj+uOPP9SsWTOtWbMm01sqWuYnhmGkK3i1l62V7S1jOzLv\niYmJ0eDBg7V+/fpsH3v16lWHzQMAALinS5cu6aeffjLb/fr1y/Li7p49e6pIkSK6dOmSpOsFwO+9\n957dYx44cCBnkwUAAAAAAC7N8lxKdHS0w+pTJGno0KGKjIzUL7/8Yj62f/9+ffjhh/rwww/l6emp\nRo0aqXv37ho4cGCe3Ekxt+W0bsXDw0OlSpUyf+uxVbfyzjvvaOvWrdq8ebP52I4dO7Rjxw5NmDBB\nPj4+at68ue6//34NGDAg0ztIOTIWkJdYgRdwIzffImj//v3auXOnIiMjNX36dA0ePNju4l3p+hUr\n9nLUymyXL1+2al+8eNGqbXm1jjOMHj1aERERatSokc39+/fv19SpU9WkSRN16dJFx44du6XxLK8A\nKlSokN3HFShQQF5eXmb7RkIEAABsK1SokGrXrq0XXnhB0dHRaty4sSTp4MGD6tKli65cuZLhsbmV\n9xiGYfUd7qi8Jzo6WqGhoTaLdwsXLqwyZcqoSpUqVivY3TwvAACAzMyfP9/qN40PP/zQaoV/W3+F\nCxe2yn1mz56t1NTUvJg+AAAAAABwIbl1nkaSvLy8tGDBAn3++eeqUKFCuv1paWn666+/NHbsWFWv\nXl3PPfeczTiuLKd1K5L1HZ5t1a0ULlxYa9eu1fjx41WyZMl0+5OTk7VhwwYNHz5cVapU0Ztvvpnh\n70WOjAXkJVbgBeAQll/afn5+Klu2bI7i3HzczasA50VhaufOndW5c2ft2LFDERERWrt2rTZt2pSu\nuPi3335T06ZNtWXLFlWqVClHY1kW6mQnyUtKSrJKNJxd6AwAgCsLCAjQggULVLduXSUmJmrPnj0a\nMWKEPvnkE5v9LfMeDw8PVa1aNUfj3nyxlIeHh9UqdI7Ie9LS0vTYY4+ZV6N7enpq4MCB6tevn5o0\naaISJUqkOyY5OVm+vr63PDYAAMg/ZsyYccsx4uLiFBERoW7dujlgRgAAAAAAwF1ZnqcpWLCgypUr\nl6M45cuXt/m4p6ennn32WQ0ePFjr1q3TihUrFBkZqaioKCUnJ5v9UlJS9MUXX2j79u1as2ZNju6C\nfDvKad2KZF38m1HdSoECBTR69Gi9+uqrWrFihVasWKH169drx44dSktLM/tduXJFb7/9tnbv3q2f\nfvrJ5krLjowF5BUKeAE4hOXVLHfeeWeObs+cVVzp+smcvNKwYUM1bNhQr732mlJSUrRlyxb99NNP\nCg8PN2+tEB8frxdffFELFy7M0RjFixc3txMSEuw+7ua+lnEAAEDWKleurNdee01jxoyRJH3xxRd6\n7rnnVLt27XR9LfMTDw8P/fPPP1neItpeJUuWNAt3HZH3bNy4UX/99ZfZDg8P1yOPPJLpMbZuGQUA\nAJCRf//91+p3oLJly8rPz8/u4+Pj4838Jzw8nAJeAAAAAACQKcvzNHXr1lVUVFSujOPl5aX27dur\nffv2kq4Xs65evVo//vij5s2bZxbzbt68WVOmTNHIkSNzZR7OltO6FcMwdPr0aZtxbPH19dW9996r\ne++9V9L181O///67vv/+ey1ZssS8Q+TPP/+sefPmqU+fPk6JBTibY84yA8j3atasaW6fOHHCYXHL\nli2rgIAAs21ZgJKXvL291bp1a3300Ufav3+/VXHP0qVL063Oa6/g4GBzOzo62u7jdu3aZdWuXr16\njsYHACA/GzZsmPmjT2pqqkaNGmWzn2Xek5aW5tALjEJCQsxtR+Q9q1evNrfr1q2bZfGuJB06dOiW\nxwUAAPlHeHi4ue3t7a2dO3fqwIEDdv+NHj3aPH7JkiXmnQMAAAAAAABsya36lKwUKlRI3bp10+zZ\nsxUVFWW1wuwPP/zgtHnkNsu6lWPHjtm98MuhQ4es7i6Z3bqVgIAAPfTQQ1q0aJF+++03eXl5mfuy\n+/o6MhaQ2yjgBeAQYWFh5vahQ4d07Ngxh8T19PRUq1atzPbixYutlrm/HZQqVUoTJ0402ykpKdq/\nf3+OYjVv3tzcjouL086dO+06LiIiwtz28fFRo0aNcjQ+AAD5WZEiRTR06FCzvXjxYptFtE2bNrW6\nPdO6descNoc2bdqY2zt27NDhw4dvKd7JkyfN7QYNGth1zJo1a25pTAAAkH+kpaVp5syZZvvuu+9W\nqVKlshXDcsWTa9eucRIFAAAAAABkyrI+JTY2Nsf1GbeiQYMGGjJkiNmOiYmx2c/Hx8fcvt1qXTJi\nWbciScuXL7frOMu6FVtxsqNjx47q3bu32d67d+9tEQvIDRTwAnCIpk2bqnLlymb7008/dVhsyy/S\nI0eO6KeffnJYbEepUaOGVTslJSVHcTp37mx15c9XX32V5THnz5/XnDlzzPbdd9+tggUL5mh8AADy\nuyFDhlhdMf3WW2+l6+Pr66vu3bubbUfmPb169ZKHh4ek67ca+vDDD28p3o1bAknS1atXs+yfnJys\nr7/++pbGBAAA+ceqVausLuLu27dvtmNUqVJFzZo1M9uWK/oCAAAAAADcrEGDBlY1Go48T5MdlnNI\nTU21WaBrec7pwoULTpnXrWrWrJkCAwPNtj11K2lpaVbnl6pWrWp1J+ucsHx9c1qDkxuxAEejgBeA\nQ3h5eWn48OFm++OPP872anQZFZX069dPQUFBZnvo0KE6cuRIziaaDdkZIzo62qpdsWLFHI1Zvnx5\nde3a1Wx/8803+vPPPzM95rXXXrO6veQzzzyTo7EBAIBUokQJPfXUU2Z7yZIl2rZtW7p+I0eONLf/\n+OMPvffee9kaxzAMJSUlpXu8Ro0a6tatm9n+7LPP9Pvvv2crtqUKFSqY22vXrlViYmKm/ceMGaOD\nBw/meDwAAJC/zJgxw9z29fXV/fffn6M4lqvwbtu2Ld3vLAAAAAAAADd4eHhoxIgRZvvzzz/XihUr\nshUjKSnJahEUSTp37pzOnz9vdwzL3y8qVKggT8/0ZXiVKlUyt//+++9szTGv+Pr6atCgQWZ7zZo1\nmjt3bqbHfPrpp9q1a5fZHjx4sLlgzQ2nTp2ya7GZGyxfX8vX0dGxgLxGAS8Ahxk8eLBatGgh6fot\nD7t06aLPPvtMycnJmR63f/9+jRs3LsOi1wIFClhdMRUfH682bdpo7dq1GcZMTEzUl19+qTfeeCP7\nT+T/Cw4O1qBBg7Rhw4Z0iZulvXv3WhUvN2vWzKrgOLvGjx9v3kYhJSVF9913nzZv3pyuX2pqqt58\n80198cUX5mN33XWX1YqAAAAg+1555RX5+vqabVur8DZs2FDDhg0z2yNGjNDQoUN19uzZTGMnJCTo\nyy+/VJ06dRQVFWWzz4cffmhekZ2WlqYePXrom2++yfDWSqmpqVq6dKn69euXbl+HDh3M7f/++09P\nPPGEzcLhpKQkjRw5UpMnT7b5AxMAAMDNzp8/r19++cVsd+rUSQEBATmK9dBDD1md1LEsDAYAAHCG\nn3/+WcHBwen+pk6datWvbdu2NvsBAADnGjRokMLCwiT9X13Fxx9/bPMciKV///1Xb7/9tipVqpSu\nb0xMjCpVqqTXXntNMTExmcZZtmyZPv/8c7OdUZ1G8+bNze0//vhDc+bMybT+5Hbx6quvWq3C+9hj\nj2nhwoU2+86YMUMvv/yy2a5cubKef/75dP1Wr16tKlWq6J133tHRo0czHX/atGlWvzvd/Po6MhaQ\n17zzegIA3IePj4/mz5+v1q1b6+jRo7py5YqGDBmiCRMmqHPnzqpXr56KFy+upKQknTlzRnv27FFU\nVJT27duXZexevXrpxRdf1McffyxJOnbsmNq1a6fmzZurY8eOKl++vDw9PRUXF6e//vpLK1asUGJi\noh599NEcP5+UlBTNnDlTM2fOVLly5dS6dWs1aNBApUqVko+Pj06dOqVNmzZp2bJl5hL7Hh4emjx5\nco7HlKT69evrnXfe0auvvipJiouLU2hoqLp27ap27dqpaNGiOnLkiObNm2f12pUoUULffvttuquY\nAABA9pQrV04DBgzQt99+K0lavHixtm/frkaNGln1e++99/T3339r1apVkqRPPvlE3377rTp16qSm\nTZsqMDBQhmHo3LlzOnDggLZv364///wzw0LcG4KDgzV9+nT1799fqampunr1qgYPHqxJkybpvvvu\nU3BwsAoVKqT//vtPu3bt0sqVKxUbG6tq1aqli9WiRQvdddddioyMlCTNnTtXW7ZsUZ8+fVSjRg1d\nu3ZNMTExWrBggY4fPy5JGjdunN58881bfh0BAIB7+/HHH3XlyhWz3bdv3xzHKl++vFq3bq0NGzZI\nkr7//ntNnjxZ3t78fA0AAJzjwoUL+vfff7Ps54w7RAIAgKx5eXnpxx9/VOvWrXXw4EElJSXppZde\n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\nmjZtmlm8GxISotWrV6t06dLm/ueff17Dhw/XBx98oLNnz+rpp59WZGRkjserVauWatWqlWW/hQsX\nmsW7NWvWVGhoaI7HBAAAAAAAAAAAAAAAgBsX8O7bt8/crlKlSpb9q1SpomPHjpnH5kYB7/r16/XP\nP/9IksqUKZPlysCZOX78eKb7Y2NjcxwbAAA43/9j797Do6ru/fG/55JkJuQG5DK5KUGtGogJEYRC\nLPD1q5Bwag4iHL7UIgiUQ0XOUSxVj196UGtJIae/B7FfPQZISwsFEUzQBLBSLknhiIShkQgqRAyZ\nSUhIYBLIbS6/P+Js5n6fySTzfj0PT/eeWXuvNU9NZmXtz/p8dDod1q1bJ5xv377dLHjXqKioCJ9+\n+imUSiWOHz+OQ4cO4bHHHvPr2LZu3SocM/suERERERERERERERGRf5w6dQqfffYZTp06hXPnzqGl\npQWtra3o6+tDXFwc7r//fkyfPh2LFi3CnXfe6dO+jx07hi1btqCqqgpqtRpyuRyjRo3C448/juXL\nl7PCNBERkR8M2QDe69evC8fx8fFO248cOdLmtb5kGvzy9NNPQyKReHyv9PR0XwyJiIiIgsSxY8eE\nDThTp05Fbm6uzXYSiQSrVq0SAml37tzp1wBetVqNyspKAIBUKsXChQv91hcREREREREREREREVEo\nmz59Om7evGnzvatXr+Lq1as4evQofvOb3+BXv/oVXn75Za/71Gq1+PnPf4733nvP7PWuri60tbWh\npqYGmzZtQmlpKX784x973R8RERHdNmQDeDs7O4VjmUzmtL1cLheOOzo6fD6ejo4OvP/++8I5s9cR\nERGRKWOQLACnWfrz8/NtXucPf/jDH6DT6QAAs2bN4u5qIiIiIiIiIiIiIiIiP0pMTMRDDz2E7Oxs\nZGRkIDY2Fn19ffj222/x8ccfo7q6Gj09PXjllVfQ19eHtWvXetXfihUrUFJSAgCIjY3FkiVLkJub\ni5s3b6K8vBwff/wx2traMHfuXBw6dAg/+tGPfPExiYiICEM4gDfY7Nq1S9gl9fDDD+Oee+7x6n4N\nDQ0O31er1XjooYe86oOIiIgCp7a2VjieMGGCw7YKhQLp6eloaGhAc3MzWlpakJCQ4Jdxbdu2TThe\nsmSJX/ogIiIiIiIiIiIiIiIi4OTJkxgzZgxEIpHN919++WX88Y9/xKJFi2AwGPD6669j6dKlSElJ\n8ai/gwcPCsG7ycnJOHr0qFk8y89+9jO89dZbWLVqFXp6evDMM8+grq4O4eHhHvVHRERE5sQDPQB/\niYqKEo67u7udtu/q6hKOo6OjfT6erVu3Cse+CH5JS0tz+C85OdnrPoiIiChwLly4IBxnZGQ4bW/a\nxvRaXzp+/Di++uorAP2LNs4yAzty5coVh//UarWvhk1ERERERERERERERDQojR071m7wrtHChQvx\nT//0TwAArVaLAwcOeNyfafbezZs320xG99xzz+HHP/4xAODixYsoLS31uD8iIiIyN2QDeOPi4oTj\n1tZWp+2vXbtm81pfOH/+PE6cOAEAiImJwdy5c316fyIiIhr8rl+/LhzHx8c7bT9y5Eib1/qS6Qak\np59+GhKJxON7paenO/zHygFERERERERERERERESuGTNmjHDc1NTk0T3q6+vx2WefAehPHDN79my7\nbZ9//nnheOfOnR71R0RERNaGbADvvffeKxzX19c7bW/axvRaX9iyZYtwPH/+fERGRvr0/kRERDT4\ndXZ2Cscymcxpe7lcLhx3dHT4fDwdHR14//33hfNnnnnG530QERERERERERERERGR+7755hvhWKFQ\neHSPyspK4XjmzJkOM/8+/PDDQiXs48eP4+bNmx71SUREROaGbABvVlaWcHzq1CmHbZubm9HQ0AAA\nSExMREJCgs/GodVqsX37duF8yZIlPrs3ERERkb/s2rVLWHx5+OGHbZZMckdDQ4PDf8Yd3kRERERE\nRERERERERGTf/v37sW/fPgD9SWFmzZrl0X1qa2uF4wkTJjhsK5VKMW7cOACATqdDXV2dR30SERGR\nOelAD8BfZs6ciQ0bNgDo3zW0Zs0au20rKiqE44KCAp+O4+OPP0ZzczMAYOzYsSwPTURERDZFRUWh\nvb0dANDd3S3sYranq6tLOI6Ojvb5eLZu3Soc+2IDUlpamtf3ICIiIiIiIiIiIiIiChXHjh1DW1sb\nAKC3txcNDQ04dOgQDh06BKA/qPadd95BUlKSR/e/cOGCcJyRkeG0fUZGBo4fPy5c6yzol4iIiJwb\nsgG8U6dOhUKhQFNTE44cOYKamhrk5uZatdPpdNi0aZNwPn/+fJ+OY8uWLcIxs+8SERGRPXFxcUIA\nb2trq9MA3mvXrpld60vnz5/HiRMnAAAxMTGYO3euT+9PREREREREREREREREjq1Zswb/8z//Y/W6\n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\nAAAAAMiQAV4AAAAAAAAAAAAAyJABXgAAAAAAAAAAAADIkAFeAAAAAAAAAAAAAMiQAV4AAAAAAAAA\nAAAAyJABXgAAAAAAAAAAAADIkAFeAAAAAAAAAAAAAMiQAV4AAAAAAAAAAAAAyJABXgAAAAAAAAAA\nAADIkAFeAAAAAAAAAAAAAMiQAV4AAAAAAAAAAAAAyJABXgAAAAAAAAAAAADIkAFeAAAAAAAAAAAA\nAMiQAV4AAAAAAAAAAAAAyJABXgAAAAAAAAAAAADIkAFeAAAAAAAAAAAAAMiQAV4AAAAAAAAAAAAA\nyJABXgAAAAAAAAAAAADIkAFeAAAAAAAAAAAAAMiQAV4AAAAAAAAAAAAAyJABXgAAAAAAAAAAAADI\nkAFeAAAAAAAAAAAAAMiQAV4AAAAAAAAAAAAAyJABXgAAAAAAAAAAAADIkAFeAAAAAAAAAAAAAMiQ\nAV4AAAAAAAAAAAAAyJABXgAAAAAAAAAAAADIkAFeAAAAAAAAAAAAAMiQAV4AAAAAAAAAAAAAyJAB\nXgAAAAAAAAAAAADIkAFeAAAAAAAAAAAAAMiQAV4AAAAAAAAAAAAAyJABXgAAAAAAAAAAAADIkAFe\nAAAAAAAAAAAAAMiQAV4AAAAAAAAAAAAAyND/AUbDF9SrM6RtAAAAAElFTkSuQmCC\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAACvAAAAV4CAYAAAB8IQgEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAewgAAHsIBbtB1PgAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xd0FNX///HXbkhCIKEHCIQaEkBB\naujVCnwoKiCiHwS/KoqoYPmpoAgKImBDlA+IIHxEsYEFRawE6VUIQSD0HkIIJRASQpL5/cFhPrsh\nuztpm0Sej3P2nLm7d+7cnXCY98687702wzAMAQAAAAAAAAAAAAAAAAAAAPAKe2F3AAAAAAAAAAAA\nAAAAAAAAALiekMALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAA\nAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAA\nAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAA\nAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAA\nAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcAL\nAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJ\nvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAX\nkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAA\neBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAA\nAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAA\nAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAK3fnz57Vs2TIt\n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\nde3aVWfOnDHfq1+/vvr166fatWvr3LlzWrZsmX7++WdlZmYqMzNTzz//vHx9fTVy5EhLx4iPj1fv\n3r114sQJlSlTRnfddZeaN2+u0qVL68CBA/rss8908OBBSVeW9x42bJi+/fbba9oJCwsztw8dOqT0\n9HRJUuXKlRUUFORUNzQ0NKenwjRz5ky99tprZtlut6tbt266+eabVbZsWe3fv19ffvml9u/frxkz\nZqhChQqW27506ZJuv/12rV692nyvUqVK6tOnj5o0aaLSpUvr8OHD+uabbxQTEyNJ+v3333X33Xdr\n6dKllpaFunjxovr06aPdu3erZMmS6t27t9q0aaOyZcvq2LFj+uqrr7R9+3ZJUkJCgh544AGtX7/e\n7bLfsbGx6tixoxISEsz3ypcvr549e6pJkyaqUKGCkpKStGvXLi1fvly7du1y28fExER16NBBsbGx\n5nuhoaG688471aBBA/n7+2vv3r36+uuvtX//fknS/PnzFRAQoA8//NDjOQAAOPNmbJEbN9xwg9q2\nbauGDRuqfPnySktL0/79+7VkyRLt2LFDknTmzBn16dNH27ZtU82aNbNt5+LFi7rrrruc4ppOnTqp\nS5cuCg0Nla+vr5KSkrR3715t3LhRGzZsUGZmZoG3ZUXt2rVVosSV28THjh1TamqqpCvX25zEGp4k\nJCSobdu22rdvn/le6dKl1a1bN7Vq1UqVKlVScnKy9u3bp5UrV+qvv/6y1K7NZlPz5s3Vpk0bhYWF\nqVy5ckpJSdGuXbv0ww8/mLHe4cOH1atXL0VHR6tMmTLXtHM13jt9+rR57kuWLKnq1atne9y8nJvi\nFAcDAIqfq/csJMnHx8dlvbS0NPXv31979+6Vj4+Punfvrk6dOqlixYo6deqUfvvtt2t+r+/du1cd\nO3bUiRMnzPciIiLUu3dvhYWFyW63a8eOHfryyy/NOhMnTlRgYKBGjRrltt8jRozQtGnTnN5r1aqV\nbrvtNtWoUUM2m00nTpzQxo0b9ccffzjFmLkRFxenAQMG6NKlS5KunKvbb79d7dq1U0hIiOx2u86e\nPavY2FitW7dO0dHReTqeo7feekujR482yz4+PurWrZu6du2qsmXL6uDBg/r666+1e/dus69dunTR\n+vXrne5RufPpp59qzJgxkqSGDRuqT58+qlu3ri5fvqwNGzbo888/V1pamiRp+vTpuv3229W7d+98\n+44AABSWzMxMp9/bvr6+buunpqbq1ltv1bp168z3goOD1adPH910000qVaqUDh8+rEWLFunvv/+W\nJP3yyy/q37+/fvzxR7dtf/755xo0aJAyMjLM98LCwtSzZ0+FhYWpdOnSOnXqlLZu3ao//vhDJ0+e\ntPQdg4KC1KFDB7Vs2VJVq1ZVQECATp06pQ0bNuiHH34w45vPPvtM1apV05QpUyy1C6CQFHYGMYB/\nNseZzUqWLGmkpaV55bhyGFXkbnT1k08+6VTX1Ww1V02cONGpvqsZhZmBFwBQXD311FNO159NmzYV\nyHEyMjKumX1t3Lhx2S47tGLFCqNixYpmPX9/f2P79u0u23aceezqrC3du3fPdtnklJQUo2fPnk79\n2LZtm9u+O85SZ+Uab3UG3iNHjhiBgYFm3fLlyxt//vnnNfXS0tKM4cOHO32/qy93M709/fTTTnWH\nDRtmnD9//pp6mZmZxpQpU5zqzpgxw2W7jrPaXO1Py5Yts+1Lenq68eijjzq1/f3337tsOzU11Wja\ntOk1/T537pzLfTZv3mz069fPOHToULaf33333WZbNpvNePXVV7MdgX7p0iVj5MiRTsdeunSpy+MC\nALLnrdjCMKzPwHvfffcZjz/+uNt4wjAMY968eU4zst1zzz0u686ZM8esFxAQYPz+++9u246LizNe\ne+21bGf2zc+2DCNnqwFkncHVE6sz8GZmZhrdu3d3qtu3b1+3s77GxsYaDz/8sLFq1apsP+/SpYsx\nevRot/FPenq6MXnyZKeZ555//nm33yk3y18bhvUZeItzHAwA8K7cPCNISEhwuu517drV6XPH65xj\nfOBqVllHly9fNlq1amXu5+fnZ8ycOTPba1hSUpIxYMAAs66vr6/b68wXX3zh1KcaNWoYy5Ytc1k/\nKSnJmD59uvHSSy9l+7mVGXjHjBlj1gkODvZ4Dvbv3288++yzxq5du7L93GoMER0dbfj6+pp1q1Sp\nku2Kj+np6caoUaOczkvHjh2NzMzMbNvNGovY7XbDx8fHmDZtWrZ/o61btzotv92sWTO33x8AgMKQ\nm3jozz//dNqnZ8+ebutnzRl54oknjAsXLlxTLyMjw3jjjTec6n700Ucu242NjTVKly7t9Jv+ww8/\nzPa6bBhXYq3vvvvOGDBgQLafb9myxWjcuLGxYMECt7P/Hj161OjUqZNTTOAqfrmKGXiBwkUCL4AC\n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\nKysJdu/eXdOnT/e48uCePXs0btw4l0mv/v7+TjPexcfHq2PHjlq+fLnLNpOTkzVz5sw8DfStV6+e\nhgwZolWrVrkdWLRz506n5OVWrVo5JRzn1IQJE8zVKdLT09WrVy+tW7fumnoZGRl65ZVXNGPGDPO9\nTp06Oc0UCAAAXHv22Wfl5+dnlrObhbdp06ZOE4k8//zzeuqpp3TmzBm3bSckJGjmzJm68cYbtXHj\nxmzrvPPOO+Yzn8zMTPXp00cfffSRyxWCMjIy9OOPPzpN9nLVbbfdZm4nJibqoYceyvZ+2qVLl/TC\nCy9oypQplu+DACh8JQq7AwCuH35+fvr444/VunVrjRs3TidOnJB0JYhYtmyZli1b5rENm82mvn37\navLkyU5LKufFgAEDdOnSJT388MPmjaaoqCiXs94FBQXp+++/V9u2bT22HRgYqFWrVumee+7RH3/8\nIenK912yZInHGWJuvfVWffnll05LOwAA4C02m01fffWVhg4dqnnz5km6MvjmmWee0ZgxY3TzzTer\nRYsWCg4Olr+/v+Lj43X48GH9+uuvOnDggMf27Xa75s6dqzZt2pg3Ql555RV9/vnn6tevn2rVqqVz\n584pKipKS5cudUpemTRpklPSxj9FaGio3nzzTQ0bNkzSlfPdpUsX9ejRQzfffLPKlCmjAwcO6Isv\nvtC+ffskXUnEtZrEMWnSJMXExJijvP/zn/9o3rx56tatmyIjIxUcHCxJOnv2rPbu3astW7Zo06ZN\nbhOHCpqfn5+++OILdejQQSdPnjT7/cUXX6hnz55q2rSpypcvr6SkJO3evVt//vmntm/fLkmaPHly\ntm1+/PHH2rt3r6Kjo5WRkaFx48bpvffeU7du3dS8eXNVqFBBGRkZOnPmjGJjY7V582ZFR0d77TsD\nwD9VQccWVj3//PPm7/Hk5GTdfPPN6tWrl7p06aJy5copISFBUVFR+uWXX5SZmalq1aqpd+/emjlz\nptt2MzMz9d133+m7775TpUqV1L59ezVv3lyVK1dWQECAEhMTtWnTJn3//fe6ePGiud/kyZOveaCS\nn20VJXPnzlW7du20Z88eSdLChQu1dOlS9ejRQ61atVLFihV18eJF7d+/X6tWrTJXJ7r33nuvaeuF\nF17QAw88IOlKkk+LFi3Ut29ftW3bVqVLl9bx48f166+/asWKFZKkxo0bq0GDBvr666899rN69eq6\n7bbbzJhpypQpmjZtmmrXri1/f3+z3mOPPZarGfCIgwEAxZWvr6++/vprtW/fXocPH1ZKSoqeeOIJ\nvf766+rWrZsaN26s8uXL69KlSzp9+rR27NihjRs3KjY21mPbffv21ciRIzV16lRJV1Yr7Nq1q1q3\nbq3bb79doaGhstvtOnHihDZv3qzffvtNycnJGjx4cK6/T3p6uv773//qv//9r6pXr6727durSZMm\nqlSpknx9fXXy5EmtXbtWS5YsMVfjsdlsmjJlSq6PKUk33XSTJk6caK70cOLECXXo0EE9evRQ165d\nVaZMGR06dEhfffWV07mrUKGCPv74Y3OgEQAAcK969er697//ba5qs3jxYm3ZskXNmjVzqvfmm29q\n+/btZj7H+++/r48//lh33HGH+ezEMIxrnp24SsS9ql69epozZ47uu+8+ZWRkKDU1VUOHDtXkyZPV\nq1cv1atXT6VKlVJiYqK2bdum33//XXFxcQoLC7umrTZt2qhTp07mfY4vv/xS69ev14ABAxQREaG0\ntDTt2rVLixYtMichGTdunF555ZU8n0cAXmAAQCG4ePGi8e677xpt27Y1SpQoYUhy+fLx8TGaNGli\nvPbaa8ahQ4cste+4/+DBgy3ts3PnTqN3794u+1OyZElj8ODBxrFjx3L8fTMyMoyvv/7aaNOmjWG3\n211+V7vdbrRp08ZYuHChkZmZmePjAABQED744AOjUqVKbq/Xrq5rDz30kHH8+HGXbW/ZssWoUqWK\npfZsNpsxZcoUj/3t3Lmzuc/YsWMtfceoqCinY7lTq1Yts97cuXM9tj137lyzfq1atTzWHzNmjKXz\nMXz4cOPAgQNO7x04cMBt22lpacbQoUNz/LeUZKxYsSLbNgcPHpzjuCun/d67d68RERGRo/66a/P8\n+fNG7969c3UerMajAADXCiq2cKwbFRXl8vivvvqqpeMFBwcb69atM8aOHWu+17lz52zbdIwPrMY1\nEydOLPC2DCNnsUhO46icxFCGYRgnT540WrdunaPv5+pv+X//93+W9q9bt66xZ8+eHMUs+/btM2rW\nrOm23aznJ6fxTXGMgwEA3uV4DfcU31hlJa7x5MSJE0bbtm1zFct5Mm7cOLfPULK+XF3TrVz3c9p/\nPz8/45NPPnHZ95ye24kTJxo2m83SsUNCQoxt27a5bS+nschVubmvAwCAt+Q1Htq1a5dTbNGnT59s\n66WlpRkPPfRQjuMDScaaNWvc9mHx4sVGYGCg5fbCwsKybefw4cNG9erVLbXx0EMPGWlpaU7vrVy5\n0mUfHdudP3++y3rt27c3640fP97t9wZgXdGdkgHAP1pAQIBGjhypNWvW6PTp0/r99981f/58TZ06\nVRMmTNC0adM0f/58rVixQufOndPWrVs1ZswYl0ssZWUYhvm6OrOPJw0aNND333+vhIQEffvtt/rg\ngw/0+uuva8aMGfrpp5+UmJioefPmqVq1ajn+vna7Xf369dPatWuVmJioJUuWaNasWZo0aZImTZqk\nWbNmacmSJTp16pTWrl2rvn37MooaAFBkDB8+XPv379frr7+uZs2aebxG1ahRQy+88IJ27typ2bNn\nKyQkxGXdpk2baufOnXrqqacUFBSUbR273a6uXbtq/fr15uwk/2SvvfaaFi9enO0oa0mqWbOm5syZ\n47S8pFW+vr768MMPtXbtWvXo0cNp+ajs1KtXT08++aQ2bNigjh075vh4+SUsLEzbtm3Tm2++qRo1\narit27hxY7399ttuY7bAwEB9//33+umnn9SxY0ePsxU2atRIL774onbu3Gk5HgUAuFaQsYUVr7zy\nij799FOX1xR/f38NGDBA0dHRat26taU2p0+frsGDB6t69epu69ntdt1xxx1as2aNRo0aVeBtFTXB\nwcFas2aN5syZo4iICLd169Wrp3Hjxl0zM85Vs2fP1rvvvquKFStm+3lgYKAeffRRbdmyRfXq1ctR\nP+vWravo6Gi99dZbuuWWW1S1alWVLFkyR214QhwMACiuqlSpolWrVmnBggUur9NX2e12RUZGavz4\n8ZZWVRg7dqz++usv9ezZU76+vi7rBQUF6b777tNTTz2V4/5f9emnn+qee+5RpUqV3Nbz8/NTv379\ntHXrVg0aNCjXx8tq1KhRWrt2rbp06eIyHi5TpoxGjhypHTt2qHHjxvl2bAAArhf169fXXXfdZZa/\n//57bdmy5Zp6vr6+mj17tlavXq1u3bq5jUMkKTw8XE899ZQ2bdrkceXmXr16ac+ePXrsscdUpkwZ\nl/V8fX1166236q233sr28xo1amjTpk3q16+fy9ghIiJC8+fP1+zZs8k3AYoRm2EYRmF3AgAAAEDx\nkZCQoI0bN+rkyZM6deqU0tPTVa5cOYWEhKhFixYKDQ3NVbtpaWlauXKl9u/fr1OnTql06dIKCQlR\n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\n115J1k6/tb8mhTkdqvBIFUakDEP60pui27xz1Ts6XMeLj+mk26uTRlWBcMvtg7kAACAASURBVHWM\nKlWUujgNTTmrj/7tol9ZGaruLsoNfc+hJC0tzcodOTk5uvjiixtsW1hYaD3qOT4+XnFxcUEzZlsa\nmDZK//zh/2p4zlxbi3grTafuqbytqpDdRg5Deqo5/7YAAKCDkFNaryqnPK70nPvkMpryjJDGeUyH\n7q683faMIrXgM1AAANpRaP+0DACAzqqpj7purM1PX0lbnpW+XdXix2UDAICONTk9UYPiY+oV59R8\ndDfal8fj0fz5863XS5YsqVVIW+3xxx/XP/7xD+Xm5mrTpk368MMPdcUVVwTEmE8++aSOHz8uqarw\nt2bxbrVRo0bpkUce0T333CO326358+frrbfeatH8AQC1NVQM3Nwi4dbuju9vR+K686jbtu7r6l2H\nfRUn/2Zkcr3diKX6RctSVeFwF4dDFV6v8opO6NXsvVq9rUBmnQw0OCGmwYJjX4XJ1X36+n/kaxdl\nX99jKJkwYYKeeOIJSdKaNWt03333Ndh29erV1nFGRkZQjdnWRv76Fv2r31k68vH/q2HH/qFIo1Km\nKRmnLsHmHJebYVrlveCXXaht4nQYujglTndfnsK/LQAAQYGcYo/qnHL8fx9WWtmn1lMsmptV3KZD\n673peso9zfbi3XCXQ78+qw+fgQIAApphmqY9t8Og1fbt26fk5GRJUn5+vpKSkjp4RgCATsHrbfxR\n1421aUofzcCaF1z4/QKAziOUd4FrqvZY99avX69LLrlEkjR27Fht2LChwbavvfaabrrpJklSZmam\nXnvttYAYs3///vrhhx8kSXv27NGAAb4fQVhcXKzevXvrxIkTOu2001RUVKTIyMgWfQ++kFMAAE3R\nGTJQsK15Ho9HSUlJOnDggCTp888/14gRI3y2GzlypHJzcyVJa9eu1fjx44NmzIa0xe+X1+NReVmJ\nunSJVHlZiSQpIjK6acflpVJYpCLCwlTurtrNN8LltOW45q7TAIDQRE4JzDEb0lY5pbTkZ0nNyCfV\nx1FdVe6pKluyK59EuJwN3nwHAAgdwZJRWl+B04ZWrlypadOmqX///oqIiFB8fLxGjx6tJ554wtrl\nxQ7FxcVavny57rjjDo0ePVpxcXEKCwtT165dNXjwYM2YMUNr164Vtc4AgKBU/ahrf4W3jbVpSh8A\n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\nBEGAIAgICQkp9zZnz54Vn8/Ozoajo6P5F6Hh5ZdfFuMJgoARI0bo7YcgCGU6FxEREVUd06dP15oD\n9OrVy+IxzX0Q0bNDIvBfNRGVUUFBAc6ePYvIyEikp6ejdu3aqFevHnr27AkXF5eK7p7JHj16hAsX\nLuDBgwd4+PAhlEolnJ2dUbt2bTRr1gz+/v6ws7Mrt/6kpqYiLCwMycnJePr0KerUqQMfHx90797d\nIh/YpKam4uzZs0hJSUFaWhpkMhlcXV3RqFEjdO7cucxvdBERUeX0rIzbSUlJiIiIgEKhgEKhgEQi\ngYuLC+rXr48OHTqU+ks2T58+xcmTJ3Hnzh08fvwYzs7OqF+/PoKDg6vU/bEUlUqFkydPIi4uDunp\n6fD29oavry+CgoIsdo60tDSEh4fj/v37ePToEeRyOVxcXNCsWTP4+fkZTJatKGq1GhcvXkRMTAwU\nCgXy8/Ph4uICHx8fBAYGmp2gAwApKSn466+/xLmZnZ0dXF1d0bx5c/j5+VXL3z8iqho4tygbpVKJ\n8PBwxMTEICsrC3Xq1EGDBg0QHByMGjVqlDrujRs3EBsbizt37iAjI0O8nhYtWqBDhw5mJSBbMlZl\nFBUVhYiICDx48ABKpRJOTk5o0qQJAgICdCbu6pKZmYmwsDDcuHEDOTk58PT0RKNGjdCzZ0/Y2NhY\n+Qosg/NgIiIiIiIiIiKi8scEXiIiIiIiIiIiIiIiIiIiIiIiIiIionJkeK9SIiIiIiIiIiIiIiIi\nIiIiIiIiIiIisigm8BIREREREREREREREREREREREREREZUjJvASERERERERERERERERERERERER\nERGVIybwEhERERERERERERERERERERERERERlSMm8BIREREREREREREREREREREREREREZUjJvAS\nERERERERERERERGRxalUKkRHRyMkJASvvPIKunTpgho1akAikUAikWD69OlWO/e+ffswduxYNG7c\nGPb29vDw8EDXrl3xySefICMjw2rnJSIiIiIiIiIylbyiO0BERERERERERERERETPnnHjxmHXrl3l\nes6srCxMmjQJ+/bt03peoVBAoVDgzJkzWLNmDXbs2IHOnTuXa9+IiIiIiIiIiDRxBV4iIiIiIiIi\nIiIiIiKyOJVKpVV2dXVF8+bNrXq+sWPHism7np6eWLx4MbZs2YKvv/4a3bp1AwAkJSVhyJAhiI2N\ntVpfiIiIiIiIiIiM4Qq8REREREREREREREREZHEdO3ZE69atERgYiMDAQDRp0gQhISGYMWOGVc63\nbt06HDp0CADg6+uLY8eOwdPTU3x97ty5WLBgAVavXo20tDS8+OKLCAsLs0pfiIiIiIiIiIiMkQiC\nIFR0J4iIiIiIiIiIiIiIiOjZp5nAO23aNISEhFgkrkqlQoMGDZCcnAwA+PvvvxEQEKCzXocOHRAR\nEQEAOHz4MAYMGGCRPhARERERERERmUNa0R0gIiIiIiIiIiIiIiIiKouwsDAxeTc4OFhn8i4AyGQy\nvPrqq2J569at5dI/IiIiIiIiIqLimMBLREREREREREREREREVVpoaKh4PGTIEIN1Bw8erLMdERER\nEREREVF5kld0B+gfSqUSUVFRAAB3d3fI5fzxEBHRs6mgoAAKhQIA4OfnB3t7+wruERnCOQoREVUn\nnKdULZynEBFRdcE5inFFcwIACAoKMljXy8sLDRo0QFJSElJTU6FQKODu7m6xvnCOQkRE1QnnKVUL\n5ylERFRdVJU5CkfiSiQqKgodO3as6G4QERGVq/Pnzxv9UIUqFucoRERUXXGeUvlxnkJERNUR5yi6\nxcXFicdNmjQxWr9JkyZISkoS25qTwHv37l2Dr0dERGDYsGEmxyMiInpWcJ5S+fG9FCIiqo4q8xyF\nCbxERERERERERERERERUpT158kQ8rlOnjtH6bm5uOtuaokGDBmbVJyIiIiIiIiLShQm8lYjmt7vP\nnz8Pb2/vCuwNERGR9SQnJ4vf7rXk9oRkHZyjEBFRdcJ5StXCeQoREVUXnKMYl5WVJR6bsi2mg4OD\neJyZmWmVPgGcoxAR0bOP85Sqhe+lEBFRdVFV5ihM4K1E5PJ/fhze3t6oX79+BfaGiIiofGiOf1Q5\ncY5CRETVFecplR/nKUREVB1xjlLxkpKSDL6u+SEh5yhERFSdcJ5S+fG9FCIiqo4q8xyl8vaMiIiI\niIiIiIiIiIiIyASOjo5IS0sDACiVSjg6Ohqsn5OTIx7XqlXLrHMx0YWIiIiIiIiILEFa0R0gIiIi\nIiIiIiIiIiIiKgsXFxfx+OHDh0brP3r0SGdbIiIiIiIiIqLywgReIiIiIiIiIiIiIiIiqtJatmwp\nHicmJhqtr1lHsy0RERERERERUXlhAi8RERERERERERERERFVaX5+fuLxhQsXDNZNTU1FUlISAMDD\nwwPu7u5W7RsRERERERERkS5M4CUiIiIiIiIiIiIiIqIqbdCgQeJxaGiowboHDx4Uj4cMGWK1PhER\nERERERERGcIEXiIiIiIiIiIiIiIiIqrSgoOD4eXlBQA4ceIELl26pLOeSqXCV199JZYnTJhQLv0j\nIiIiIiIiIiqOCbxERERERERERERERERUaYWEhEAikUAikaBXr14668hkMixZskQsT506FQ8ePChR\nb9GiRYiIiAAAdOvWDQMHDrRKn4mIiIiIiIiIjJFXdAeIiIiIiIiIiIiIiIjo2ZOYmIj169drPXfl\nyhXx+PLly1i8eLHW63369EGfPn1Kdb5Zs2Zh9+7d+OOPP3D16lX4+/tj1qxZ8PX1xePHj7F161aE\nh4cDAFxcXLB27dpSnYeIiIiIiIiIyBKYwEtEREREREREREREREQWd/v2bXzwwQd6X79y5YpWQi8A\nyOXyUifwyuVy/Pbbb5g4cSJ+//13pKSkYPny5SXq1a9fH9u3b8dzzz1XqvMQEREREREREVmCtKI7\nQERERERERERERERERGQJtWrVwv79+7Fnzx48//zzaNCgAezs7FCnTh106tQJq1atQnR0NLp27VrR\nXSUiIiIiIiKiao4r8BIREREREREREREREZHF9erVC4IglDnO9OnTMX36dLPajBgxAiNGjCjzuYmI\niIiIiIiIrIUr8BIREREREREREREREREREREREREREZUjJvASERERERERERERERERERERERERERGV\nIybwEhERERERERERERERERERERERERERlSMm8BIREREREREREREREREREREREREREZUjJvASERER\nERERERERERERERERERERERGVIybwEhERERERERERERERERERUZWmVgvIziuAWi1UdFeIiIiICADU\naiDvaeF/SSd5RXeAiIiIiIiIiIiIiIiIiIiIqDRi7mdgXXgCQqNSkJOvgoONDIP9vDCze1P41nUC\nUJjcqyxQwVYqhbJABQCoYSuHVCrRet1eLhOfKyt9MU05V1EycvF+EhEREVUJKVHAmW+AmL1AfjZg\nUwPwHQF0mQt4+VV07yoVJvASERERERERERERERERERFRlbM34h7m74hEgcaquzn5Kuy6dA/7Iu7j\njf4tEK/IwoErycgt0F75TSoBAhrWhpODDc7cfKQ3+ddcxROK7eVSDGrjiR7NPXA6/iFCo/UnGsfc\n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\niIhIaPJW+uYswYR3AbxuOLzHN7/x7xuBm4laie32RQzmoyorSNSn1I6mnKj6G0bADy/pEXJ4t/lV\nm7TbqsArrdlV0yHvpcD/MJpO312cIiIiIiIiItIsrrzySgYMGMBll13GZZddRp8+fViyZAk/+tGP\nIt7XRRddFFSIdvXq1f7wbnJyMkOHDq13n8GDBzN27NgGj7EtqRHg/dbdTCMRERERkbbAsuwqS9ma\npsHo1ERW7TrY3EOr1wDjc6Y4sxltbifOOIXH9gUJnIYVVuWyVsnywLYFvgqylUUqjBpKldz6VA/h\nqniUiIhI21ecF0YA1/bNb666q92Fd922g9+6bwdgWdRDdDaCm4dlW9/BpvHnSg7TYPLQPo3eT6TZ\n1QO8qAKvtGaJqb6lWOr6B9J0+l6vWIJFRERERERERJrc7Nmzm3sINTzzzDP+7WCq70rtzj7LVeWx\nKvCKiIiISDjyi0pYlPMp6/OKKXN7iXU5GJ2ayIjkBI6XtvybxMaY75DlWlilMpnTOFNJq12Edyvk\nr4GM+Y0TcA2lSm59agvhqniUiIhI27ZtfngB3Pw1viqp7Si867FNZrp/wl77fAD22efzXWNvvfu5\nbQeLPaMbe3iYBszNTCOlR8dG7yviqn05MFSBV1q91Im+pVje+C188uaZ5w0nTN0E3S9ptqGJiIiI\niIiISMtz6NAh1q9fD4DT6eS2225r5hG1XjUq8CrAKyIiIiIhWpt7kJkrduOxzlSeKnN7WbXrYKup\nvFs9vNuuuUt9lXIjUXG3ulCq5AY8Th0hXBWPEhERabssC/LXhrevuxT2hrqvQXNWVg13BQjbhu3W\nRfzWc7s/vAtQYtc/t3Pbjiqh38ZgGjDiogRmXJfcOsO7AEb7XslBAd62KjEVbsiC/0s785ztgc69\nmm9MIiIiIiIiItIiPffcc3i9vovrP/zhD0lMTGzmEbVeNQK837qxbRujXZUYExEREZFw5ReV1Ajv\ntha/uj6ZhzfsZ4ozW+Hdylxxvkq5jSWYKrmG6UusWLX8XOoL4VYUj9q2wFdtz13qe08pY32hX4V3\nRUREWidPWfhV/J2x4C4Lvn3cuZD+Z1g1tdmq9hpGgBCv6YTh98PRA/75jseM4VX3ZfzVk06+3adK\nc6dpcE6XBDhWe1+ldjTZ1ndY7BkdkfDuyh9fxbLthWTnHaLM7SXGaTIypRu3DenN4PPOxjRb+7nn\n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\nhNtrjG2pTu/qyvzNiYfn7/766B5TNDB27Nhi7li+fHk++9nPNtl3/fr1qaurS5IMGTIkgwcP7jJz\ntre/+puv5/8cdWLe+eX/n0+8+6v0rdh+ADdBV//lJujJJb9197NjBuc7nx/TY/Y3AF2bnFIau3PK\ne//rf2Tstv/Y57do7G97R6Eyi3eelFt3TC1pRknSI3M4AF2PAl4AAACAMmpoaMj1119ffH3//ffv\nVUi720033ZRf/epXWbFiRZYuXZonn3wyZ511VqeY8/vf/37ee++9JLsKf/cs3t3t1FNPzQ033JAr\nr7wyO3bsyPXXX58HH3ywTesHoGWVlRXpd9Cub/lXZ1eRb2tu//1ou61j7C4o3rmzUCwo7ohC4s4y\nxoc7d6ZPdVUqKyvSk5xzzjm5+eabkyQLFy7M1Vdf3WTfJ554otiePHlyl5qzHEaPPTWjx87PzoaG\nbN22JQcd1Df127YkSfr07b9/7fqtSa++Ob9Xr5xzAF8HjbX7HVTd4/Y3AF2bnFI6o8eemoxdlJ0N\nDdmy5c9JWpFPdrf7DchnGgr5eUqXT3pyDgeg6/H7rwEAAADK6JlnnsnatWuTJBMnTsz48eMb7VdV\nVZUrrrii+HrevHmdZs758+cX29/+9rebnHfGjBk5+OBdv8VhwYIF2bZtW6vXDkDXtLuguLq6Mv37\n9Er/Pr3a1O7qY/TU4saJEydm2LBhSZIlS5bkxRdfbLRfQ0NDbrvttuLradOmdak5y6myqir9+h+S\n6oMOSv9DDk3/Qw7d//aAgenft/cBfx001u6J+xuArk1OKb3KqqrW55Pd7V7VJc8nPTmHA9D1dOoC\n3gULFmTq1KkZNWpU+vTpkyFDhmTChAm5+eabi7e8lMLmzZvz8MMP5/LLL8+ECRMyePDg9OrVKwMG\nDMhxxx2XSy65JIsWLUqhUCjZnAAAAEDPtHDhwmK7pZtUzj333Eaf68g5f/e73+WNN95Ikhx//PE5\n+uijmxyrpqYmp59+epLk/fffz69//etWrRsA6JqqqqoyZ86c4utLLrkkGzZs2Kff7Nmzs2LFiiTJ\naaedlrPPPrvR8e69995UVFSkoqIikyZNKsucAED3JKcAAJ1JdUcvoDFbtmzJxRdfnAULFuz15xs3\nbszGjRvz3HPP5fbbb89DDz2UU0899YDmuvXWW/O9730v9fX1+7y3efPmrF69OqtXr87999+f008/\n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\n8CxevDjHHnvsfj1vn0H34muQcnB2sD9kFOCjfB3S3pwd7C85BSglX8OUkjOGPckswIHwNUspOVP4\nKDmFnkwBbycxceLEDBs2LEmyZMmSvPjii432a2hoyG233VZ8PW3atLKsj+7jy1/+crF96623Ntnv\nRz/6Ud5///0kyXnnnVe8Hr6psebOnVvs/1F/+tOf8tBDDyVJ+vbtmylTprRp7ZTH5ZdfXgxFw4YN\ny+LFi/Pxj3+8VWPYZ9B9yCiUi7ODlsgowEfJKZSDs4P9IacApSTjUGrOGHaTWYADIaNQas4U9iSn\n0KMV6DTuuOOOQpJCksIJJ5xQWL9+/T59rrrqqmKf0047rQNWSWdyzz33FPfDpZdeul/PrF+/vlBT\nU1NIUqisrCw8+uij+/R5/vnnC/369SskKVRXVxdWrVrV5Hhf+tKXimv4yle+Uti+ffte72/evLkw\nceLEYp/vfe97rfocKa/LL7+8+Hc1bNiwwiuvvNKmcewz6F5kFFpLRqHUZBSgKXIKrSGj0B7kFKA9\nyDg0RZ6hrWQWoBRkFJoio3Ag5BR6uopCoVBovsSXctmxY0cmT56cp556KsmunyiYMWNGamtr8847\n72TevHl59tlnkyQDBw7Ms88+mxNOOKEjl0wZrVmzJnffffdef/bb3/42jz32WJLkxBNPzN/+7d/u\n9f7nPve5fO5zn9tnrPvuuy/Tp09PklRWVmbatGn5/Oc/n6qqqixbtiz33Xdf6uvrkyQ33nhjvvvd\n7za5rj/96U859dRT8+abbxbXMX369Bx++OF5/fXXc9ddd+X1119Pkpx00klZunRp+vfv37b/EWhX\n1157bW688cYkSUVFRf7lX/4lxx13XIvPjR8/vvirCPZkn0H3IaPQHBmF9iajAM2RU2iKjEI5yClA\ne5FxSOQZSkdmAUpFRiGRUSgtOQXiBt7O5r333iv8zd/8TbE6v7GPESNGFJYtW9bRS6XMFi9e3Oy+\naOzjuuuua3K8O+64o9CnT58mn62qqirMmTNnv9a2cuXKwnHHHdfsWiZMmFBYu3Ztif7XoD3s+ZNB\nrfm45557mhzTPoPuQ0ahKTIK7U1GAVoip9AYGYVykFOA9iTjIM9QKjILUEoyCjIKpSSnQKFQHTqV\nmpqaPPbYY3n00Ufz05/+NMuXL8+GDRtSU1OT0aNH58ILL8zMmTNzyCGHdPRS6eK+8Y1v5Mwzz8yd\nd96ZRYsWpa6uLjt37szhhx+eM844I1//+tfzyU9+cr/Gqq2tzW9+85vcfffd+fnPf55XXnklmzZt\nyqBBg3LiiSfmoosuysUXX5zKysp2/qzobOwz6D5kFMrF2UE52GfQvcgplIOzg3Kx14DdZBxKzRlD\nKdlP0HPJKJSaM4VSs6foaioKhUKhoxcBAAAAAAAAAAAAAD2F8m8AAAAAAAAAAAAAKCMFvAAAAAAA\nAAAAAABQRgp4AQAAAAAAAAAAAKCMFPACAAAAAAAAAAAAQBkp4AUAAAAAAAAAAACAMlLACwAAAAAA\nAAAAAABlpIAXAAAAAAAAAAAAAMpIAS8AAAAAAAAAAAAAlJECXgAAAAAAAAAAAAAoIwW8AAAAAAAA\nAAAAAFBGCngBAAAAAAAAAAAAoIwU8AIAAAAAAAAAAABAGSngBQAAAAAAAAAAAIAyUsALAAAAAAAA\nAAAAAGWkgBcAAAAAAAAAAAAAykgBLwAAAAAAAAAAAACUkQJeAAAAAAAAAAAAACgjBbwAAAAAAAAA\nAAAAUEYKeAEAAAAAAAAAAACgjBTwAgAAAAAAAAAAAEAZKeAFAAAAAAAAAAAAgDJSwAsAAAAAAAAA\nAAAAZaSAFwAAAAAAAAAAAADKSAEvAAAAAAAAAAAAAJSRAl4AAAAAAAAAAAAAKCMFvAAAAAAAAAAA\nAABQRgp4AQAAAAAAAAAAAKCMFPACAAAAAAAAAAAAQBkp4AUAAAAAAAAAAACAMlLACwAAAAAAAAAA\nAABlpIAXAAAAAAAAAAAAAMpIAS8AAAAAAAAAAAAAlJECXgAAAAAAAAAAAAAoIwW8AAAAAAAAAAAA\nAFBGCngBAAAAAAAAAAAAoIwU8AIAAAAAAAAAAABAGSngBQAAAAAAAAAAAIAyUsALAAAAAAAAAAAA\nAGWkgBcAAAAAAAAAAAAAyuj/Ak+HcVyOTkwvAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] @@ -232,7 +380,7 @@ "width": 800 } }, - "execution_count": 42 + "execution_count": 8 } ] }, @@ -284,7 +432,7 @@ "colab": {} }, "source": [ - "!ls" + "%ls" ], "execution_count": 0, "outputs": [] @@ -318,20 +466,6 @@ ], "execution_count": 0, "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "id": "JGI1Q-4UCExz", - "colab": {} - }, - "source": [ - "# Plot Training Results\n", - "!python3 -c \"from utils import utils; utils.plot_results()\"" - ], - "execution_count": 0, - "outputs": [] } ] } From 7413ea7f134658512c1715df6956f450d9fad932 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 19 Aug 2019 14:52:53 +0200 Subject: [PATCH 1263/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3f25cd29..d95d8514 100755 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ # Introduction -This directory contains PyTorch YOLOv3 software and an iOS App developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information please visit https://www.ultralytics.com. +This directory contains PyTorch YOLOv3 software developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information please visit https://www.ultralytics.com. # Description From d94ccd105db127c7244ae1bc73052136eed30792 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 19 Aug 2019 17:07:16 +0200 Subject: [PATCH 1264/2595] updates --- models.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 314382fb..9cd7d9ff 100755 --- a/models.py +++ b/models.py @@ -75,11 +75,18 @@ def create_modules(module_defs, img_size): img_size=img_size, # (416, 416) yolo_index=yolo_index) # 0, 1 or 2 - # Initialize preceding Conv2d() detection bias to -5 (https://arxiv.org/pdf/1708.02002.pdf section 3.3) + # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) bias = module_list[-1][0].bias.view(len(mask), -1) # 255 to 3x85 - bias[:, 4:] -= 5 + bias[:, 4] -= 3.0 # obj + bias[:, 5:] -= 0.3 # cls module_list[-1][0].bias = torch.nn.Parameter(bias.view(-1)) + # for l in model.yolo_layers: # print pretrained biases + # b = model.module_list[l - 1][0].bias.view(3, -1) # bias 3x85 + # print('regression: %.2f+/-%.2f, ' % (b[:, :4].mean(), b[:, :4].std()), + # 'objectness: %.2f+/-%.2f, ' % (b[:, 4].mean(), b[:, 4].std()), + # 'classification: %.2f+/-%.2f' % (b[:, 5:].mean(), b[:, 5:].std())) + else: print('Warning: Unrecognized Layer Type: ' + mdef['type']) From 44ea6984f9ba920d79243e04304993fe497ea938 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 19 Aug 2019 18:03:33 +0200 Subject: [PATCH 1265/2595] updates --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 9cd7d9ff..000f5570 100755 --- a/models.py +++ b/models.py @@ -77,8 +77,8 @@ def create_modules(module_defs, img_size): # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) bias = module_list[-1][0].bias.view(len(mask), -1) # 255 to 3x85 - bias[:, 4] -= 3.0 # obj - bias[:, 5:] -= 0.3 # cls + bias[:, 4] -= 5.0 # obj + bias[:, 5:] -= 4.0 # cls module_list[-1][0].bias = torch.nn.Parameter(bias.view(-1)) # for l in model.yolo_layers: # print pretrained biases From cfbc269fd02399b748d6df0f347f3fbc06358de9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 19 Aug 2019 18:21:15 +0200 Subject: [PATCH 1266/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 000f5570..47ec7e9c 100755 --- a/models.py +++ b/models.py @@ -78,7 +78,7 @@ def create_modules(module_defs, img_size): # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) bias = module_list[-1][0].bias.view(len(mask), -1) # 255 to 3x85 bias[:, 4] -= 5.0 # obj - bias[:, 5:] -= 4.0 # cls + bias[:, 5:] -= 5.0 # cls module_list[-1][0].bias = torch.nn.Parameter(bias.view(-1)) # for l in model.yolo_layers: # print pretrained biases From 3147fd62e609ebc78b9a55bcc1bf1f1f88f23849 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 19 Aug 2019 19:18:16 +0200 Subject: [PATCH 1267/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 47ec7e9c..000f5570 100755 --- a/models.py +++ b/models.py @@ -78,7 +78,7 @@ def create_modules(module_defs, img_size): # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) bias = module_list[-1][0].bias.view(len(mask), -1) # 255 to 3x85 bias[:, 4] -= 5.0 # obj - bias[:, 5:] -= 5.0 # cls + bias[:, 5:] -= 4.0 # cls module_list[-1][0].bias = torch.nn.Parameter(bias.view(-1)) # for l in model.yolo_layers: # print pretrained biases From ac2b9d580d2f31c8b674951e32660d2f83755ac9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 20 Aug 2019 13:39:39 +0200 Subject: [PATCH 1268/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 62a9bc62..f43489a4 100644 --- a/train.py +++ b/train.py @@ -301,7 +301,7 @@ def train(cfg, batch_size=batch_size, img_size=opt.img_size, model=model, - conf_thres=0.001 if final_epoch else 0.1, # 0.1 for speed + conf_thres=0.001 if final_epoch and epoch > 0 else 0.1, # 0.1 for speed save_json=final_epoch and 'coco.data' in data) # Write epoch results From c97b669c465ad85037aa6a7f5203403270a80013 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 20 Aug 2019 14:38:56 +0200 Subject: [PATCH 1269/2595] updates --- models.py | 5 +---- utils/utils.py | 6 ------ 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/models.py b/models.py index 000f5570..aee33b65 100755 --- a/models.py +++ b/models.py @@ -174,10 +174,7 @@ class YOLOLayer(nn.Module): elif arc == 'uCE': # unified CE (1 background + 80 classes) io[..., 4:] = F.softmax(io[..., 4:], dim=4) io[..., 4] = 1 - elif arc == 'uBCE': # unified BCE (1 background + 80 classes) - torch.sigmoid_(io[..., 4:]) - io[..., 4] = 1 - io[..., 4] - elif arc == 'uBCEs': # unified BCE simplified (80 classes) + elif arc == 'uBCE': # unified BCE (80 classes) torch.sigmoid_(io[..., 5:]) io[..., 4] = 1 diff --git a/utils/utils.py b/utils/utils.py index e0e87bc2..a5fd55c5 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -369,12 +369,6 @@ def compute_loss(p, targets, model): # predictions, targets, model t[b, a, gj, gi, tcls[i]] = 1.0 lcls += BCEcls(pi[..., 5:], t) - elif arc == 'uBCEs': # unified BCE simplified (80 classes) - t = torch.zeros_like(pi[..., 5:]) # targets - if nb: - t[b, a, gj, gi, tcls[i]] = 1.0 - lcls += BCEcls(pi[..., 5:], t) - lbox *= k * h['giou'] lobj *= k * h['obj'] lcls *= k * h['cls'] From 291def2e77e602514fea791473925c177526255d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 21 Aug 2019 00:13:30 +0200 Subject: [PATCH 1270/2595] updates --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index f43489a4..80816623 100644 --- a/train.py +++ b/train.py @@ -37,10 +37,10 @@ except: hyp = {'giou': 1.582, # giou loss gain 'xy': 4.688, # xy loss gain 'wh': 0.1857, # wh loss gain - 'cls': 27.76, # cls loss gain (CE=~1.0, uCE=~20, uBCE=~200,~30) + 'cls': 27.76, # cls loss gain (CE=~1.0, uCE=~20) 'cls_pw': 1.446, # cls BCELoss positive_weight 'obj': 21.35, # obj loss gain - 'obj_pw': 3.941, # obj BCELoss positive_weight + 'obj_pw': 3.941, # obj BCELoss positive_weight (*=80 for uBCE with 80 classes) 'iou_t': 0.2635, # iou training threshold 'lr0': 0.002324, # initial learning rate 'lrf': -4., # final LambdaLR learning rate = lr0 * (10 ** lrf) @@ -362,7 +362,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=32, help='batch size') parser.add_argument('--accumulate', type=int, default=2, help='number of batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data', type=str, default='data/coco.data', help='coco.data file path') + parser.add_argument('--data', type=str, default='../out/data.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='train at (1/1.5)x - 1.5x sizes') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--rect', action='store_true', help='rectangular training') From 9dfce6e5ded87a95383ec783f18d47750b9d131b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 21 Aug 2019 00:21:36 +0200 Subject: [PATCH 1271/2595] updates --- train.py | 4 ++-- utils/utils.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 80816623..3798f26e 100644 --- a/train.py +++ b/train.py @@ -39,8 +39,8 @@ hyp = {'giou': 1.582, # giou loss gain 'wh': 0.1857, # wh loss gain 'cls': 27.76, # cls loss gain (CE=~1.0, uCE=~20) 'cls_pw': 1.446, # cls BCELoss positive_weight - 'obj': 21.35, # obj loss gain - 'obj_pw': 3.941, # obj BCELoss positive_weight (*=80 for uBCE with 80 classes) + 'obj': 21.35, # obj loss gain (*=80 for uBCE with 80 classes) + 'obj_pw': 3.941, # obj BCELoss positive_weight 'iou_t': 0.2635, # iou training threshold 'lr0': 0.002324, # initial learning rate 'lrf': -4., # final LambdaLR learning rate = lr0 * (10 ** lrf) diff --git a/utils/utils.py b/utils/utils.py index a5fd55c5..fc575267 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -367,7 +367,7 @@ def compute_loss(p, targets, model): # predictions, targets, model t = torch.zeros_like(pi[..., 5:]) # targets if nb: t[b, a, gj, gi, tcls[i]] = 1.0 - lcls += BCEcls(pi[..., 5:], t) + lcls += BCEobj(pi[..., 5:], t) lbox *= k * h['giou'] lobj *= k * h['obj'] From 7046a95d61609e156f5162982b333859883a4611 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 21 Aug 2019 00:23:41 +0200 Subject: [PATCH 1272/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index fc575267..2454485c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -367,7 +367,7 @@ def compute_loss(p, targets, model): # predictions, targets, model t = torch.zeros_like(pi[..., 5:]) # targets if nb: t[b, a, gj, gi, tcls[i]] = 1.0 - lcls += BCEobj(pi[..., 5:], t) + lobj += BCEobj(pi[..., 5:], t) lbox *= k * h['giou'] lobj *= k * h['obj'] From 9c6b6968ba7819efeee23229f14e972e32126ef6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 21 Aug 2019 00:27:11 +0200 Subject: [PATCH 1273/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 2454485c..c5272766 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -62,8 +62,8 @@ def labels_to_class_weights(labels, nc=80): weights = np.bincount(classes, minlength=nc) # occurences per class # Prepend gridpoint count (for uCE trianing) - # gpi = ((320 / 32 * np.array([1, 2, 4])) ** 2 * 3).sum() # gridpoints per image - # weights = np.hstack([gpi * ni - weights.sum() * 9, weights * 9]) ** 0.5 # prepend gridpoints to start + gpi = ((320 / 32 * np.array([1, 2, 4])) ** 2 * 3).sum() # gridpoints per image + weights = np.hstack([gpi * ni - weights.sum() * 9, weights * 9]) ** 0.5 # prepend gridpoints to start weights[weights == 0] = 1 # replace empty bins with 1 weights = 1 / weights # number of targets per class From 1ec9527f24cdd8508aaf6779f94b21d19cfbb755 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 21 Aug 2019 01:35:29 +0200 Subject: [PATCH 1274/2595] updates --- models.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/models.py b/models.py index aee33b65..804d3a4a 100755 --- a/models.py +++ b/models.py @@ -4,6 +4,7 @@ from utils.parse_config import * from utils.utils import * ONNX_EXPORT = False +arc = 'normal' # (normal, uCE, uBCE, uBCEs) detection architectures def create_modules(module_defs, img_size): @@ -77,8 +78,12 @@ def create_modules(module_defs, img_size): # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) bias = module_list[-1][0].bias.view(len(mask), -1) # 255 to 3x85 - bias[:, 4] -= 5.0 # obj - bias[:, 5:] -= 4.0 # cls + if arc == 'normal': + bias[:, 4] -= 5.0 # obj + bias[:, 5:] -= 4.0 # cls + elif arc == 'uCE': + bias[:, 4] += 3.0 # obj + bias[:, 5:] -= 4.0 # cls module_list[-1][0].bias = torch.nn.Parameter(bias.view(-1)) # for l in model.yolo_layers: # print pretrained biases @@ -168,7 +173,6 @@ class YOLOLayer(nn.Module): # io[..., 2:4] = ((torch.sigmoid(io[..., 2:4]) * 2) ** 3) * self.anchor_wh # wh power method io[..., :4] *= self.stride - arc = 'normal' # (normal, uCE, uBCE, uBCEs) detection architectures if arc == 'normal': torch.sigmoid_(io[..., 4:]) elif arc == 'uCE': # unified CE (1 background + 80 classes) From baf6188df50b385ab580dbaffb137933109cfb2d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 21 Aug 2019 02:53:12 +0200 Subject: [PATCH 1275/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 3798f26e..6906aafc 100644 --- a/train.py +++ b/train.py @@ -362,7 +362,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=32, help='batch size') parser.add_argument('--accumulate', type=int, default=2, help='number of batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data', type=str, default='../out/data.data', help='coco.data file path') + parser.add_argument('--data', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--multi-scale', action='store_true', help='train at (1/1.5)x - 1.5x sizes') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--rect', action='store_true', help='rectangular training') From 11aac8930be16f4addb9f99b22c2702f3f9bd59a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 22 Aug 2019 15:48:06 +0200 Subject: [PATCH 1276/2595] updates --- models.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index 804d3a4a..5b8a5207 100755 --- a/models.py +++ b/models.py @@ -81,9 +81,12 @@ def create_modules(module_defs, img_size): if arc == 'normal': bias[:, 4] -= 5.0 # obj bias[:, 5:] -= 4.0 # cls - elif arc == 'uCE': + elif arc == 'uCE': # unified CE (1 background + 80 classes) bias[:, 4] += 3.0 # obj bias[:, 5:] -= 4.0 # cls + elif arc == 'uBCE': # unified BCE (80 classes) + bias[:, 4] -= 5.0 # obj + bias[:, 5:] -= 4.0 # cls module_list[-1][0].bias = torch.nn.Parameter(bias.view(-1)) # for l in model.yolo_layers: # print pretrained biases From 858fc6795403b7bb67b2525fac0a867132455dbc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 22 Aug 2019 16:39:55 +0200 Subject: [PATCH 1277/2595] updates --- utils/utils.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/utils/utils.py b/utils/utils.py index c5272766..ec4c9dbf 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -552,6 +552,15 @@ def get_yolo_layers(model): return [i for i, x in enumerate(bool_vec) if x] # [82, 94, 106] for yolov3 +def print_model_biases(model): + # prints the bias neurons preceding each yolo layer + for l in model.yolo_layers: # print pretrained biases + b = model.module_list[l - 1][0].bias.view(3, -1) # bias 3x85 + print('regression: %.2f+/-%.2f, ' % (b[:, :4].mean(), b[:, :4].std()), + 'objectness: %.2f+/-%.2f, ' % (b[:, 4].mean(), b[:, 4].std()), + 'classification: %.2f+/-%.2f' % (b[:, 5:].mean(), b[:, 5:].std())) + + def strip_optimizer_from_checkpoint(filename='weights/best.pt'): # Strip optimizer from *.pt files for lighter files (reduced by 2/3 size) a = torch.load(filename, map_location='cpu') From 0040c85b9a9a2ce1333dab59a24c31e67e713723 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 22 Aug 2019 23:41:51 +0200 Subject: [PATCH 1278/2595] updates --- models.py | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/models.py b/models.py index 5b8a5207..249afb0c 100755 --- a/models.py +++ b/models.py @@ -77,23 +77,21 @@ def create_modules(module_defs, img_size): yolo_index=yolo_index) # 0, 1 or 2 # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) - bias = module_list[-1][0].bias.view(len(mask), -1) # 255 to 3x85 - if arc == 'normal': - bias[:, 4] -= 5.0 # obj - bias[:, 5:] -= 4.0 # cls - elif arc == 'uCE': # unified CE (1 background + 80 classes) - bias[:, 4] += 3.0 # obj - bias[:, 5:] -= 4.0 # cls - elif arc == 'uBCE': # unified BCE (80 classes) - bias[:, 4] -= 5.0 # obj - bias[:, 5:] -= 4.0 # cls - module_list[-1][0].bias = torch.nn.Parameter(bias.view(-1)) + try: + if arc == 'normal': + b = [-5.0, -4.0] # obj, cls + elif arc == 'uCE': # unified CE (1 background + 80 classes) + b = [3.0, -4.0] # obj, cls + elif arc == 'uBCE': # unified BCE (80 classes) + b = [-5.0, -4.0] # obj, cls - # for l in model.yolo_layers: # print pretrained biases - # b = model.module_list[l - 1][0].bias.view(3, -1) # bias 3x85 - # print('regression: %.2f+/-%.2f, ' % (b[:, :4].mean(), b[:, :4].std()), - # 'objectness: %.2f+/-%.2f, ' % (b[:, 4].mean(), b[:, 4].std()), - # 'classification: %.2f+/-%.2f' % (b[:, 5:].mean(), b[:, 5:].std())) + bias = module_list[-1][0].bias.view(len(mask), -1) # 255 to 3x85 + bias[:, 4] += b[0] # obj + bias[:, 5:] += b[1] # cls + module_list[-1][0].bias = torch.nn.Parameter(bias.view(-1)) + # utils.print_model_biases(model) + except: + print('WARNING: smart bias initialization failure.') else: print('Warning: Unrecognized Layer Type: ' + mdef['type']) From ff7f73b642ceaaef429a4959e4f31ed823b924f3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Aug 2019 00:36:48 +0200 Subject: [PATCH 1279/2595] updates --- train.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index 6906aafc..58958764 100644 --- a/train.py +++ b/train.py @@ -112,9 +112,9 @@ def train(cfg, cutoff = -1 # backbone reaches to cutoff layer start_epoch = 0 best_fitness = 0. + nf = int(model.module_defs[model.yolo_layers[0] - 1]['filters']) # yolo layer size (i.e. 255) if opt.resume or opt.transfer: # Load previously saved model if opt.transfer: # Transfer learning - nf = int(model.module_defs[model.yolo_layers[0] - 1]['filters']) # yolo layer size (i.e. 255) chkpt = torch.load(weights + 'yolov3-spp.pt', map_location=device) model.load_state_dict({k: v for k, v in chkpt['model'].items() if v.numel() > 1 and v.shape[0] != 255}, strict=False) @@ -208,7 +208,8 @@ def train(cfg, maps = np.zeros(nc) # mAP per class results = (0, 0, 0, 0, 0, 0, 0) # P, R, mAP, F1, test_loss t0 = time.time() - for epoch in range(start_epoch, epochs): + for epoch in range(start_epoch, epochs): # epoch ------------------------------------------------------------------ + model.train() print(('\n' + '%10s' * 9) % ('Epoch', 'gpu_mem', 'GIoU/xy', 'wh', 'obj', 'cls', 'total', 'targets', 'img_size')) @@ -232,12 +233,12 @@ def train(cfg, mloss = torch.zeros(5).to(device) # mean losses pbar = tqdm(enumerate(dataloader), total=nb) # progress bar - for i, (imgs, targets, paths, _) in pbar: + for i, (imgs, targets, paths, _) in pbar: # batch ------------------------------------------------------------- + ni = (i + nb * epoch) # number integrated batches (since train start) imgs = imgs.to(device) targets = targets.to(device) # Multi-Scale training - ni = (i + nb * epoch) # number integrated batches (since train start) if multi_scale: if ni / accumulate % 10 == 0: #  adjust (67% - 150%) every 10 batches img_size = random.randrange(img_sz_min, img_sz_max + 1) * 32 From 0d71fd822846477b19cc8e728452e0f19f9bd995 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Aug 2019 12:57:26 +0200 Subject: [PATCH 1280/2595] updates --- models.py | 1 + train.py | 2 +- utils/utils.py | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 249afb0c..0099e0a4 100755 --- a/models.py +++ b/models.py @@ -88,6 +88,7 @@ def create_modules(module_defs, img_size): bias = module_list[-1][0].bias.view(len(mask), -1) # 255 to 3x85 bias[:, 4] += b[0] # obj bias[:, 5:] += b[1] # cls + # bias = torch.load('weights/yolov3-spp.bias.pt')[yolo_index] # list of tensors [3x85, 3x85, 3x85] module_list[-1][0].bias = torch.nn.Parameter(bias.view(-1)) # utils.print_model_biases(model) except: diff --git a/train.py b/train.py index 58958764..e19d6cbc 100644 --- a/train.py +++ b/train.py @@ -332,7 +332,7 @@ def train(cfg, 'training_results': file.read(), 'model': model.module.state_dict() if type( model) is nn.parallel.DistributedDataParallel else model.state_dict(), - 'optimizer': optimizer.state_dict()} + 'optimizer': None if final_epoch else optimizer.state_dict()} # Save last checkpoint torch.save(chkpt, last) diff --git a/utils/utils.py b/utils/utils.py index ec4c9dbf..f7bd210e 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -17,7 +17,7 @@ from . import torch_utils # , google_utils matplotlib.rc('font', **{'size': 11}) # Set printoptions -torch.set_printoptions(linewidth=1320, precision=5, profile='long') +torch.set_printoptions(linewidth=320, precision=5, profile='long') np.set_printoptions(linewidth=320, formatter={'float_kind': '{:11.5g}'.format}) # format short g, %precision=5 # Prevent OpenCV from multithreading (to use PyTorch DataLoader) From fd653eca8a891a5c08fccbe8b37e03d59b83b321 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Aug 2019 13:25:27 +0200 Subject: [PATCH 1281/2595] updates --- train.py | 40 ++++++++++++++++------------------------ 1 file changed, 16 insertions(+), 24 deletions(-) diff --git a/train.py b/train.py index e19d6cbc..7708d065 100644 --- a/train.py +++ b/train.py @@ -75,12 +75,14 @@ hyp = {'giou': 1.582, # giou loss gain # 'shear': 0.434} # image shear (+/- deg) -def train(cfg, - data, - img_size=416, - epochs=100, # 500200 batches at bs 16, 117263 images = 273 epochs - batch_size=16, - accumulate=4): # effective bs = batch_size * accumulate = 16 * 4 = 64 +def train(): + cfg = opt.cfg + data = opt.data + img_size = opt.img_size + epochs = opt.epochs # 500200 batches at bs 16, 117263 images = 273 epochs + batch_size = opt.batch_size + accumulate = opt.accumulate # effective bs = batch_size * accumulate = 16 * 4 = 64 + # Initialize init_seeds() weights = 'weights' + os.sep @@ -359,16 +361,16 @@ def train(cfg, if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument('--epochs', type=int, default=273, help='number of epochs') - parser.add_argument('--batch-size', type=int, default=32, help='batch size') - parser.add_argument('--accumulate', type=int, default=2, help='number of batches to accumulate before optimizing') + parser.add_argument('--epochs', type=int, default=273) # 500200 batches at bs 16, 117263 images = 273 epochs + parser.add_argument('--batch-size', type=int, default=32) # effective bs = batch_size * accumulate = 16 * 4 = 64 + parser.add_argument('--accumulate', type=int, default=2, help='batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data', type=str, default='data/coco.data', help='coco.data file path') + parser.add_argument('--data', type=str, default='data/coco.data', help='*.data file path') parser.add_argument('--multi-scale', action='store_true', help='train at (1/1.5)x - 1.5x sizes') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--rect', action='store_true', help='rectangular training') - parser.add_argument('--resume', action='store_true', help='resume training flag') - parser.add_argument('--transfer', action='store_true', help='transfer learning flag') + parser.add_argument('--resume', action='store_true', help='resume training from last.pt') + parser.add_argument('--transfer', action='store_true', help='transfer learning') parser.add_argument('--nosave', action='store_true', help='only save final checkpoint') parser.add_argument('--notest', action='store_true', help='only test final epoch') parser.add_argument('--evolve', action='store_true', help='evolve hyperparameters') @@ -388,12 +390,7 @@ if __name__ == '__main__': except: pass - results = train(opt.cfg, - opt.data, - img_size=opt.img_size, - epochs=opt.epochs, - batch_size=opt.batch_size, - accumulate=opt.accumulate) + results = train() else: # Evolve hyperparameters (optional) opt.notest = True # only test final epoch @@ -423,12 +420,7 @@ if __name__ == '__main__': hyp[k] = np.clip(hyp[k], v[0], v[1]) # Train mutation - results = train(opt.cfg, - opt.data, - img_size=opt.img_size, - epochs=opt.epochs, - batch_size=opt.batch_size, - accumulate=opt.accumulate) + results = train() # Write mutation results print_mutation(hyp, results, opt.bucket) From 081cd170073fbdcd4e3ccab0c06531cda19873ed Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Aug 2019 13:31:32 +0200 Subject: [PATCH 1282/2595] updates --- train.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index 7708d065..efa71951 100644 --- a/train.py +++ b/train.py @@ -250,7 +250,7 @@ def train(): imgs = F.interpolate(imgs, size=ns, mode='bilinear', align_corners=False) # Plot images with bounding boxes - if epoch == 0 and i == 0: + if ni == 0: fname = 'train_batch%g.jpg' % i plot_images(imgs=imgs, targets=targets, paths=paths, fname=fname) if tb_writer: @@ -284,7 +284,7 @@ def train(): loss.backward() # Accumulate gradient for x batches before optimizing - if (i + 1) % accumulate == 0 or (i + 1) == nb: + if ni % accumulate == 0: optimizer.step() optimizer.zero_grad() @@ -305,7 +305,7 @@ def train(): img_size=opt.img_size, model=model, conf_thres=0.001 if final_epoch and epoch > 0 else 0.1, # 0.1 for speed - save_json=final_epoch and 'coco.data' in data) + save_json=final_epoch and epoch > 0 and 'coco.data' in data) # Write epoch results with open('results.txt', 'a') as file: @@ -366,7 +366,7 @@ if __name__ == '__main__': parser.add_argument('--accumulate', type=int, default=2, help='batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data', type=str, default='data/coco.data', help='*.data file path') - parser.add_argument('--multi-scale', action='store_true', help='train at (1/1.5)x - 1.5x sizes') + parser.add_argument('--multi-scale', action='store_true', help='adjust (67% - 150%) img_size every 10 batches') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--rect', action='store_true', help='rectangular training') parser.add_argument('--resume', action='store_true', help='resume training from last.pt') From d777a57b9cb1e18d39b1beb8ce8967975cf29321 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Aug 2019 13:39:43 +0200 Subject: [PATCH 1283/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index efa71951..8b859539 100644 --- a/train.py +++ b/train.py @@ -236,7 +236,7 @@ def train(): mloss = torch.zeros(5).to(device) # mean losses pbar = tqdm(enumerate(dataloader), total=nb) # progress bar for i, (imgs, targets, paths, _) in pbar: # batch ------------------------------------------------------------- - ni = (i + nb * epoch) # number integrated batches (since train start) + ni = i + nb * epoch # number integrated batches (since train start) imgs = imgs.to(device) targets = targets.to(device) From 95c55f2e62782cab68ccab5b426596318298c571 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Aug 2019 13:41:12 +0200 Subject: [PATCH 1284/2595] updates --- train.py | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/train.py b/train.py index 8b859539..2d32ca6b 100644 --- a/train.py +++ b/train.py @@ -34,6 +34,7 @@ except: # 0.161 0.327 0.190 0.193 7.82 1.153 4.062 0.1845 24.28 3.05 20.93 2.842 0.2759 0.001357 -4 0.916 0.000572 # hd 0.438 mAP @ epoch 100 # Hyperparameters (j-series, 50.5 mAP yolov3-320) evolved by @ktian08 https://github.com/ultralytics/yolov3/issues/310 +# Transfer learning edge layers: 0.1 lr0, 0.9 momentum hyp = {'giou': 1.582, # giou loss gain 'xy': 4.688, # xy loss gain 'wh': 0.1857, # wh loss gain @@ -54,27 +55,6 @@ hyp = {'giou': 1.582, # giou loss gain 'shear': 0.5768} # image shear (+/- deg) -# # Hyperparameters (i-series) -# hyp = {'giou': 1.43, # giou loss gain -# 'xy': 4.688, # xy loss gain -# 'wh': 0.1857, # wh loss gain -# 'cls': 11.7, # cls loss gain -# 'cls_pw': 4.81, # cls BCELoss positive_weight -# 'obj': 11.5, # obj loss gain -# 'obj_pw': 1.56, # obj BCELoss positive_weight -# 'iou_t': 0.281, # iou training threshold -# 'lr0': 0.0013, # initial learning rate -# 'lrf': -4., # final LambdaLR learning rate = lr0 * (10 ** lrf) -# 'momentum': 0.944, # SGD momentum -# 'weight_decay': 0.000427, # optimizer weight decay -# 'hsv_s': 0.0599, # image HSV-Saturation augmentation (fraction) -# 'hsv_v': 0.142, # image HSV-Value augmentation (fraction) -# 'degrees': 1.03, # image rotation (+/- deg) -# 'translate': 0.0552, # image translation (+/- fraction) -# 'scale': 0.0555, # image scale (+/- gain) -# 'shear': 0.434} # image shear (+/- deg) - - def train(): cfg = opt.cfg data = opt.data From cd34368ec4280ec9621794b27d9c0add1db9a3c1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Aug 2019 13:44:18 +0200 Subject: [PATCH 1285/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index f7bd210e..9e8a3985 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -815,7 +815,7 @@ def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() fig.savefig('results.png', dpi=200) -def plot_results_overlay(start=1, stop=0): # from utils.utils import *; plot_results_overlay() +def plot_results_overlay(start=0, stop=0): # from utils.utils import *; plot_results_overlay() # Plot training results files 'results*.txt', overlaying train and val losses s = ['train', 'train', 'train', 'Precision', 'mAP', 'val', 'val', 'val', 'Recall', 'F1'] # legends t = ['GIoU', 'Confidence', 'Classification', 'P-R', 'mAP-F1'] # titles From 4e8e39da93483adb5ed3bf217a8d8030076a86e1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Aug 2019 13:45:49 +0200 Subject: [PATCH 1286/2595] updates --- train.py | 1 + 1 file changed, 1 insertion(+) diff --git a/train.py b/train.py index 2d32ca6b..6f682609 100644 --- a/train.py +++ b/train.py @@ -333,6 +333,7 @@ def train(): del chkpt # Report time + plot_results() # save as results.png print('%g epochs completed in %.3f hours.' % (epoch - start_epoch + 1, (time.time() - t0) / 3600)) dist.destroy_process_group() if torch.cuda.device_count() > 1 else None torch.cuda.empty_cache() From 135b38e9bab915407f7569e642b7a5dd589c7a4e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Aug 2019 15:17:17 +0200 Subject: [PATCH 1287/2595] updates --- train.py | 57 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/train.py b/train.py index 6f682609..7d7e4b17 100644 --- a/train.py +++ b/train.py @@ -62,12 +62,13 @@ def train(): epochs = opt.epochs # 500200 batches at bs 16, 117263 images = 273 epochs batch_size = opt.batch_size accumulate = opt.accumulate # effective bs = batch_size * accumulate = 16 * 4 = 64 + weights = opt.weights # initial training weights # Initialize init_seeds() - weights = 'weights' + os.sep - last = weights + 'last.pt' - best = weights + 'best.pt' + wdir = 'weights' + os.sep # weights dir + last = wdir + 'last.pt' + best = wdir + 'best.pt' device = torch_utils.select_device(apex=mixed_precision) multi_scale = opt.multi_scale @@ -94,26 +95,23 @@ def train(): cutoff = -1 # backbone reaches to cutoff layer start_epoch = 0 best_fitness = 0. - nf = int(model.module_defs[model.yolo_layers[0] - 1]['filters']) # yolo layer size (i.e. 255) - if opt.resume or opt.transfer: # Load previously saved model - if opt.transfer: # Transfer learning - chkpt = torch.load(weights + 'yolov3-spp.pt', map_location=device) - model.load_state_dict({k: v for k, v in chkpt['model'].items() if v.numel() > 1 and v.shape[0] != 255}, - strict=False) + if weights.endswith('.pt'): # pytorch format + # possible weights are 'last.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt' etc. + if opt.bucket: + os.system('gsutil cp gs://%s/last.pt %s' % (opt.bucket, last)) # download from bucket + chkpt = torch.load(weights, map_location=device) - for p in model.parameters(): - p.requires_grad = True if p.shape[0] == nf else False - - else: # resume from last.pt - if opt.bucket: - os.system('gsutil cp gs://%s/last.pt %s' % (opt.bucket, last)) # download from bucket - chkpt = torch.load(last, map_location=device) # load checkpoint - model.load_state_dict(chkpt['model']) + # load model + if opt.transfer: + chkpt['model'] = {k: v for k, v in chkpt['model'].items() if model.state_dict()[k].numel() == v.numel()} + model.load_state_dict(chkpt['model'], strict=False) + # load optimizer if chkpt['optimizer'] is not None: optimizer.load_state_dict(chkpt['optimizer']) best_fitness = chkpt['best_fitness'] + # load results if chkpt.get('training_results') is not None: with open('results.txt', 'w') as file: file.write(chkpt['training_results']) # write results.txt @@ -121,15 +119,14 @@ def train(): start_epoch = chkpt['epoch'] + 1 del chkpt - else: # Initialize model with backbone (optional) - if '-tiny.cfg' in cfg: - cutoff = load_darknet_weights(model, weights + 'yolov3-tiny.conv.15') - else: - cutoff = load_darknet_weights(model, weights + 'darknet53.conv.74') + elif weights.endswith('.weights'): # darknet format + # possible weights are 'yolov3.weights', 'yolov3-tiny.conv.15', 'darknet53.conv.74' etc. + cutoff = load_darknet_weights(model, weights) - # Remove old results - for f in glob.glob('*_batch*.jpg') + glob.glob('results.txt'): - os.remove(f) + if opt.transfer: # transfer learning + nf = int(model.module_defs[model.yolo_layers[0] - 1]['filters']) # yolo layer size (i.e. 255) + for p in model.parameters(): + p.requires_grad = True if p.shape[0] == nf else False # Scheduler https://github.com/ultralytics/yolov3/issues/238 # lf = lambda x: 1 - x / epochs # linear ramp to zero @@ -181,6 +178,10 @@ def train(): pin_memory=True, collate_fn=dataset.collate_fn) + # Remove previous results + for f in glob.glob('*_batch*.jpg') + glob.glob('results.txt'): + os.remove(f) + # Start training model.nc = nc # attach number of classes to model model.hyp = hyp # attach hyperparameters to model @@ -327,7 +328,7 @@ def train(): # Save backup every 10 epochs (optional) if epoch > 0 and epoch % 10 == 0: - torch.save(chkpt, weights + 'backup%g.pt' % epoch) + torch.save(chkpt, wdir + 'backup%g.pt' % epoch) # Delete checkpoint del chkpt @@ -345,7 +346,7 @@ if __name__ == '__main__': parser.add_argument('--epochs', type=int, default=273) # 500200 batches at bs 16, 117263 images = 273 epochs parser.add_argument('--batch-size', type=int, default=32) # effective bs = batch_size * accumulate = 16 * 4 = 64 parser.add_argument('--accumulate', type=int, default=2, help='batches to accumulate before optimizing') - parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') + parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp-1cls.cfg', help='cfg file path') parser.add_argument('--data', type=str, default='data/coco.data', help='*.data file path') parser.add_argument('--multi-scale', action='store_true', help='adjust (67% - 150%) img_size every 10 batches') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') @@ -358,7 +359,9 @@ if __name__ == '__main__': parser.add_argument('--bucket', type=str, default='', help='gsutil bucket') parser.add_argument('--img-weights', action='store_true', help='select training images by weight') parser.add_argument('--cache-images', action='store_true', help='cache images for faster training') + parser.add_argument('--weights', type=str, default='', help='initial weights') # i.e. weights/darknet.53.conv.74 opt = parser.parse_args() + opt.weights = 'weights/last.pt' if opt.resume else opt.weights print(opt) tb_writer = None From 356c85bf0e9fd9f482b0e5db9e13033536f8b629 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Aug 2019 15:24:26 +0200 Subject: [PATCH 1288/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 7d7e4b17..ad13f4c0 100644 --- a/train.py +++ b/train.py @@ -346,7 +346,7 @@ if __name__ == '__main__': parser.add_argument('--epochs', type=int, default=273) # 500200 batches at bs 16, 117263 images = 273 epochs parser.add_argument('--batch-size', type=int, default=32) # effective bs = batch_size * accumulate = 16 * 4 = 64 parser.add_argument('--accumulate', type=int, default=2, help='batches to accumulate before optimizing') - parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp-1cls.cfg', help='cfg file path') + parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data', type=str, default='data/coco.data', help='*.data file path') parser.add_argument('--multi-scale', action='store_true', help='adjust (67% - 150%) img_size every 10 batches') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') From 8ef49f256094f5b5c40302c09f89a69338a9c42f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Aug 2019 15:27:29 +0200 Subject: [PATCH 1289/2595] updates --- train.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index ad13f4c0..9175d4cf 100644 --- a/train.py +++ b/train.py @@ -104,7 +104,9 @@ def train(): # load model if opt.transfer: chkpt['model'] = {k: v for k, v in chkpt['model'].items() if model.state_dict()[k].numel() == v.numel()} - model.load_state_dict(chkpt['model'], strict=False) + model.load_state_dict(chkpt['model'], strict=False) + else: + model.load_state_dict(chkpt['model']) # load optimizer if chkpt['optimizer'] is not None: From d279aa0021583ba26bfa1d37a5e38352cde55b36 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Aug 2019 15:35:39 +0200 Subject: [PATCH 1290/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 9175d4cf..6422cfe3 100644 --- a/train.py +++ b/train.py @@ -121,7 +121,7 @@ def train(): start_epoch = chkpt['epoch'] + 1 del chkpt - elif weights.endswith('.weights'): # darknet format + else: # darknet format # possible weights are 'yolov3.weights', 'yolov3-tiny.conv.15', 'darknet53.conv.74' etc. cutoff = load_darknet_weights(model, weights) From 7593dedc4c61c04f4d79887477115679d93f8a2a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Aug 2019 15:37:25 +0200 Subject: [PATCH 1291/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 6422cfe3..0362a7a9 100644 --- a/train.py +++ b/train.py @@ -121,7 +121,7 @@ def train(): start_epoch = chkpt['epoch'] + 1 del chkpt - else: # darknet format + elif len(weights) > 0: # darknet format # possible weights are 'yolov3.weights', 'yolov3-tiny.conv.15', 'darknet53.conv.74' etc. cutoff = load_darknet_weights(model, weights) From f0622e2510945c8b064b7dc1e4a1d5e001216cb8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Aug 2019 15:43:16 +0200 Subject: [PATCH 1292/2595] updates --- train.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/train.py b/train.py index 0362a7a9..28636e53 100644 --- a/train.py +++ b/train.py @@ -127,6 +127,11 @@ def train(): if opt.transfer: # transfer learning nf = int(model.module_defs[model.yolo_layers[0] - 1]['filters']) # yolo layer size (i.e. 255) + + for x in optimizer.param_groups: + x['lr'] = 0.1 + x['momentum'] = 0.9 + for p in model.parameters(): p.requires_grad = True if p.shape[0] == nf else False @@ -364,6 +369,7 @@ if __name__ == '__main__': parser.add_argument('--weights', type=str, default='', help='initial weights') # i.e. weights/darknet.53.conv.74 opt = parser.parse_args() opt.weights = 'weights/last.pt' if opt.resume else opt.weights + opt.transfer = True print(opt) tb_writer = None From 7f8318e680f0308b4644762b7d9de66ec7c96aaf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Aug 2019 15:46:12 +0200 Subject: [PATCH 1293/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 28636e53..bb6367d9 100644 --- a/train.py +++ b/train.py @@ -129,8 +129,8 @@ def train(): nf = int(model.module_defs[model.yolo_layers[0] - 1]['filters']) # yolo layer size (i.e. 255) for x in optimizer.param_groups: - x['lr'] = 0.1 - x['momentum'] = 0.9 + x['lr'] *= 10 + x['momentum'] *= 0.9 for p in model.parameters(): p.requires_grad = True if p.shape[0] == nf else False From 06e274f7e40b2cbf1827d4a57ceb8c5bc5804251 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Aug 2019 16:04:45 +0200 Subject: [PATCH 1294/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index bb6367d9..ff8cfdf2 100644 --- a/train.py +++ b/train.py @@ -128,7 +128,7 @@ def train(): if opt.transfer: # transfer learning nf = int(model.module_defs[model.yolo_layers[0] - 1]['filters']) # yolo layer size (i.e. 255) - for x in optimizer.param_groups: + for x in optimizer.param_groups: # lower parameter count can handle more aggressive training hyps x['lr'] *= 10 x['momentum'] *= 0.9 From d2ef817b1fe2b5bfdad79f7495909194a9b97c5a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Aug 2019 16:41:28 +0200 Subject: [PATCH 1295/2595] updates --- train.py | 1 - 1 file changed, 1 deletion(-) diff --git a/train.py b/train.py index ff8cfdf2..33c74e9b 100644 --- a/train.py +++ b/train.py @@ -369,7 +369,6 @@ if __name__ == '__main__': parser.add_argument('--weights', type=str, default='', help='initial weights') # i.e. weights/darknet.53.conv.74 opt = parser.parse_args() opt.weights = 'weights/last.pt' if opt.resume else opt.weights - opt.transfer = True print(opt) tb_writer = None From 5f2b551818b44789c9f82b151dbc62cdb171b076 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Aug 2019 17:18:59 +0200 Subject: [PATCH 1296/2595] updates --- models.py | 28 ++++++++++++++-------------- train.py | 5 +++-- utils/utils.py | 12 ++++++------ 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/models.py b/models.py index 0099e0a4..002f7df9 100755 --- a/models.py +++ b/models.py @@ -4,13 +4,11 @@ from utils.parse_config import * from utils.utils import * ONNX_EXPORT = False -arc = 'normal' # (normal, uCE, uBCE, uBCEs) detection architectures -def create_modules(module_defs, img_size): - """ - Constructs module list of layer blocks from module configuration in module_defs - """ +def create_modules(module_defs, img_size, arc): + # Constructs module list of layer blocks from module configuration in module_defs + hyperparams = module_defs.pop(0) output_filters = [int(hyperparams['channels'])] module_list = nn.ModuleList() @@ -74,11 +72,12 @@ def create_modules(module_defs, img_size): modules = YOLOLayer(anchors=mdef['anchors'][mask], # anchor list nc=int(mdef['classes']), # number of classes img_size=img_size, # (416, 416) - yolo_index=yolo_index) # 0, 1 or 2 + yolo_index=yolo_index, # 0, 1 or 2 + arc=arc) # yolo architecture # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) try: - if arc == 'normal': + if arc == 'default': b = [-5.0, -4.0] # obj, cls elif arc == 'uCE': # unified CE (1 background + 80 classes) b = [3.0, -4.0] # obj, cls @@ -113,7 +112,7 @@ class Swish(nn.Module): class YOLOLayer(nn.Module): - def __init__(self, anchors, nc, img_size, yolo_index): + def __init__(self, anchors, nc, img_size, yolo_index, arc): super(YOLOLayer, self).__init__() self.anchors = torch.Tensor(anchors) @@ -121,6 +120,7 @@ class YOLOLayer(nn.Module): self.nc = nc # number of classes (80) self.nx = 0 # initialize number of x gridpoints self.ny = 0 # initialize number of y gridpoints + self.arc = arc if ONNX_EXPORT: # grids must be computed in __init__ stride = [32, 16, 8][yolo_index] # stride of this layer @@ -175,12 +175,12 @@ class YOLOLayer(nn.Module): # io[..., 2:4] = ((torch.sigmoid(io[..., 2:4]) * 2) ** 3) * self.anchor_wh # wh power method io[..., :4] *= self.stride - if arc == 'normal': + if self.arc == 'default': torch.sigmoid_(io[..., 4:]) - elif arc == 'uCE': # unified CE (1 background + 80 classes) + elif self.arc == 'uCE': # unified CE (1 background + 80 classes) io[..., 4:] = F.softmax(io[..., 4:], dim=4) io[..., 4] = 1 - elif arc == 'uBCE': # unified BCE (80 classes) + elif self.arc == 'uBCE': # unified BCE (80 classes) torch.sigmoid_(io[..., 5:]) io[..., 4] = 1 @@ -192,13 +192,13 @@ class YOLOLayer(nn.Module): class Darknet(nn.Module): - """YOLOv3 object detection model""" + # YOLOv3 object detection model - def __init__(self, cfg, img_size=(416, 416)): + def __init__(self, cfg, img_size=(416, 416), arc='default'): super(Darknet, self).__init__() self.module_defs = parse_model_cfg(cfg) - self.module_list, self.routs = create_modules(self.module_defs, img_size) + self.module_list, self.routs = create_modules(self.module_defs, img_size, arc) self.yolo_layers = get_yolo_layers(self) # Darknet Header https://github.com/AlexeyAB/darknet/issues/2914#issuecomment-496675346 diff --git a/train.py b/train.py index 33c74e9b..6cb2b135 100644 --- a/train.py +++ b/train.py @@ -84,7 +84,7 @@ def train(): nc = int(data_dict['classes']) # number of classes # Initialize model - model = Darknet(cfg).to(device) + model = Darknet(cfg, arc=opt.arc).to(device) # Optimizer # optimizer = optim.Adam(model.parameters(), lr=hyp['lr0'], weight_decay=hyp['weight_decay']) @@ -259,7 +259,7 @@ def train(): pred = model(imgs) # Compute loss - loss, loss_items = compute_loss(pred, targets, model) + loss, loss_items = compute_loss(pred, targets, model, arc=opt.arc) if torch.isnan(loss): print('WARNING: nan loss detected, ending training') return results @@ -367,6 +367,7 @@ if __name__ == '__main__': parser.add_argument('--img-weights', action='store_true', help='select training images by weight') parser.add_argument('--cache-images', action='store_true', help='cache images for faster training') parser.add_argument('--weights', type=str, default='', help='initial weights') # i.e. weights/darknet.53.conv.74 + parser.add_argument('--arc', type=str, default='default', help='yolo architecture') # default, uCE, uBCE opt = parser.parse_args() opt.weights = 'weights/last.pt' if opt.resume else opt.weights print(opt) diff --git a/utils/utils.py b/utils/utils.py index 9e8a3985..38ad3242 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -312,7 +312,7 @@ class FocalLoss(nn.Module): return loss -def compute_loss(p, targets, model): # predictions, targets, model +def compute_loss(p, targets, model, arc='default'): # predictions, targets, model ft = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor lcls, lbox, lobj = ft([0]), ft([0]), ft([0]) tcls, tbox, indices, anchor_vec = build_targets(model, targets) @@ -321,12 +321,12 @@ def compute_loss(p, targets, model): # predictions, targets, model # Define criteria BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']])) BCEobj = nn.BCEWithLogitsLoss(pos_weight=ft([h['obj_pw']])) - # CE = nn.CrossEntropyLoss(weight=model.class_weights) + BCE = nn.BCEWithLogitsLoss() + CE = nn.CrossEntropyLoss() # weight=model.class_weights # Compute losses bs = p[0].shape[0] # batch size k = bs / 64 # loss gain - arc = 'normal' # (normal, uCE, uBCE, uBCEs) detection architectures for i, pi in enumerate(p): # layer index, layer predictions b, a, gj, gi = indices[i] # image, anchor, gridy, gridx tobj = torch.zeros_like(pi[..., 0]) # target obj @@ -344,7 +344,7 @@ def compute_loss(p, targets, model): # predictions, targets, model giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation lbox += (1.0 - giou).mean() # giou loss - if arc == 'normal' and model.nc > 1: # cls loss (only if multiple classes) + if arc == 'default' and model.nc > 1: # cls loss (only if multiple classes) t = torch.zeros_like(ps[:, 5:]) # targets t[range(nb), tcls[i]] = 1.0 lcls += BCEcls(ps[:, 5:], t) # BCE @@ -354,7 +354,7 @@ def compute_loss(p, targets, model): # predictions, targets, model # with open('targets.txt', 'a') as file: # [file.write('%11.5g ' * 4 % tuple(x) + '\n') for x in torch.cat((txy[i], twh[i]), 1)] - if arc == 'normal': + if arc == 'default': # (default, uCE, uBCE) detection architectures lobj += BCEobj(pi[..., 4], tobj) # obj loss elif arc == 'uCE': # unified CE (1 background + 80 classes), hyps 20 @@ -367,7 +367,7 @@ def compute_loss(p, targets, model): # predictions, targets, model t = torch.zeros_like(pi[..., 5:]) # targets if nb: t[b, a, gj, gi, tcls[i]] = 1.0 - lobj += BCEobj(pi[..., 5:], t) + lobj += BCE(pi[..., 5:], t) lbox *= k * h['giou'] lobj *= k * h['obj'] From 2f256ee27466283224921ff83cdab9fd81795634 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Aug 2019 17:24:50 +0200 Subject: [PATCH 1297/2595] updates --- utils/utils.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 38ad3242..0b28d7c9 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -321,8 +321,8 @@ def compute_loss(p, targets, model, arc='default'): # predictions, targets, mod # Define criteria BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']])) BCEobj = nn.BCEWithLogitsLoss(pos_weight=ft([h['obj_pw']])) - BCE = nn.BCEWithLogitsLoss() - CE = nn.CrossEntropyLoss() # weight=model.class_weights + FBCE = FocalLoss(nn.BCEWithLogitsLoss()) + FCE = FocalLoss(nn.CrossEntropyLoss()) # weight=model.class_weights # Compute losses bs = p[0].shape[0] # batch size @@ -361,13 +361,13 @@ def compute_loss(p, targets, model, arc='default'): # predictions, targets, mod t = torch.zeros_like(pi[..., 0], dtype=torch.long) # targets if nb: t[b, a, gj, gi] = tcls[i] + 1 - lcls += CE(pi[..., 4:].view(-1, model.nc + 1), t.view(-1)) + lcls += FCE(pi[..., 4:].view(-1, model.nc + 1), t.view(-1)) elif arc == 'uBCE': # unified BCE (1 background + 80 classes), hyps 200-30 t = torch.zeros_like(pi[..., 5:]) # targets if nb: t[b, a, gj, gi, tcls[i]] = 1.0 - lobj += BCE(pi[..., 5:], t) + lobj += FBCE(pi[..., 5:], t) lbox *= k * h['giou'] lobj *= k * h['obj'] From bbe22dd7b4f6057a76291fb923abae052a8678c6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 23 Aug 2019 17:37:29 +0200 Subject: [PATCH 1298/2595] updates --- train.py | 3 ++- utils/utils.py | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 6cb2b135..e444f05a 100644 --- a/train.py +++ b/train.py @@ -191,6 +191,7 @@ def train(): # Start training model.nc = nc # attach number of classes to model + model.arc = opt.arc # attach yolo architecture model.hyp = hyp # attach hyperparameters to model model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights model_info(model, report='summary') # 'full' or 'summary' @@ -259,7 +260,7 @@ def train(): pred = model(imgs) # Compute loss - loss, loss_items = compute_loss(pred, targets, model, arc=opt.arc) + loss, loss_items = compute_loss(pred, targets, model) if torch.isnan(loss): print('WARNING: nan loss detected, ending training') return results diff --git a/utils/utils.py b/utils/utils.py index 0b28d7c9..5b307753 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -312,11 +312,12 @@ class FocalLoss(nn.Module): return loss -def compute_loss(p, targets, model, arc='default'): # predictions, targets, model +def compute_loss(p, targets, model): # predictions, targets, model ft = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor lcls, lbox, lobj = ft([0]), ft([0]), ft([0]) tcls, tbox, indices, anchor_vec = build_targets(model, targets) h = model.hyp # hyperparameters + arc = model.arc # # (default, uCE, uBCE) detection architectures # Define criteria BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']])) @@ -354,7 +355,7 @@ def compute_loss(p, targets, model, arc='default'): # predictions, targets, mod # with open('targets.txt', 'a') as file: # [file.write('%11.5g ' * 4 % tuple(x) + '\n') for x in torch.cat((txy[i], twh[i]), 1)] - if arc == 'default': # (default, uCE, uBCE) detection architectures + if arc == 'default': lobj += BCEobj(pi[..., 4], tobj) # obj loss elif arc == 'uCE': # unified CE (1 background + 80 classes), hyps 20 From 4b424b2381f9b8793f8511e949d7d036d651a65b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 24 Aug 2019 12:20:43 +0200 Subject: [PATCH 1299/2595] updates --- utils/utils.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 5b307753..a3c9520e 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -592,7 +592,7 @@ def coco_only_people(path='../coco/labels/val2014/'): def select_best_evolve(path='evolve*.txt'): # from utils.utils import *; select_best_evolve() # Find best evolved mutation for file in sorted(glob.glob(path)): - x = np.loadtxt(file, dtype=np.float32) + x = np.loadtxt(file, dtype=np.float32, ndmin=2) fitness = x[:, 2] * 0.5 + x[:, 3] * 0.5 # weighted mAP and F1 combination print(file, x[fitness.argmax()]) @@ -774,7 +774,7 @@ def plot_targets_txt(): # from utils.utils import *; plot_targets_txt() def plot_evolution_results(hyp): # from utils.utils import *; plot_evolution_results(hyp) # Plot hyperparameter evolution results in evolve.txt - x = np.loadtxt('evolve.txt') + x = np.loadtxt('evolve.txt', ndmin=2) f = fitness(x) weights = (f - f.min()) ** 2 # for weighted results fig = plt.figure(figsize=(12, 10)) @@ -799,7 +799,7 @@ def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() s = ['GIoU', 'Confidence', 'Classification', 'Precision', 'Recall', 'val GIoU', 'val Confidence', 'val Classification', 'mAP', 'F1'] for f in sorted(glob.glob('results*.txt') + glob.glob('../../Downloads/results*.txt')): - results = np.loadtxt(f, usecols=[2, 4, 5, 9, 10, 13, 14, 15, 11, 12]).T + results = np.loadtxt(f, usecols=[2, 4, 5, 9, 10, 13, 14, 15, 11, 12], ndmin=2).T n = results.shape[1] # number of rows x = range(start, min(stop, n) if stop else n) for i in range(10): @@ -821,7 +821,7 @@ def plot_results_overlay(start=0, stop=0): # from utils.utils import *; plot_re s = ['train', 'train', 'train', 'Precision', 'mAP', 'val', 'val', 'val', 'Recall', 'F1'] # legends t = ['GIoU', 'Confidence', 'Classification', 'P-R', 'mAP-F1'] # titles for f in sorted(glob.glob('results*.txt') + glob.glob('../../Downloads/results*.txt')): - results = np.loadtxt(f, usecols=[2, 4, 5, 9, 11, 13, 14, 15, 10, 12]).T + results = np.loadtxt(f, usecols=[2, 4, 5, 9, 11, 13, 14, 15, 10, 12], ndmin=2).T n = results.shape[1] # number of rows x = range(start, min(stop, n) if stop else n) fig, ax = plt.subplots(1, 5, figsize=(14, 3.5)) From b88c4568bae2de03bda72ceb2e63a7d1f2662358 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 24 Aug 2019 12:37:55 +0200 Subject: [PATCH 1300/2595] updates --- utils/utils.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index a3c9520e..5932c8b8 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -562,11 +562,15 @@ def print_model_biases(model): 'classification: %.2f+/-%.2f' % (b[:, 5:].mean(), b[:, 5:].std())) -def strip_optimizer_from_checkpoint(filename='weights/best.pt'): +def strip_optimizer(f='weights/best.pt'): # Strip optimizer from *.pt files for lighter files (reduced by 2/3 size) - a = torch.load(filename, map_location='cpu') - a['optimizer'] = [] - torch.save(a, filename.replace('.pt', '_lite.pt')) + x = torch.load(f) + x['optimizer'] = None + # x['training_results'] = None + # x['epoch'] = -1 + # for p in x['model']: + # p.requires_grad = True + torch.save(x, f) def coco_class_count(path='../coco/labels/train2014/'): From 852487654f1cb0b136b3668087021013e2dd2c9e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 24 Aug 2019 12:52:52 +0200 Subject: [PATCH 1301/2595] updates --- utils/utils.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 5932c8b8..a067f7a1 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -562,14 +562,17 @@ def print_model_biases(model): 'classification: %.2f+/-%.2f' % (b[:, 5:].mean(), b[:, 5:].std())) -def strip_optimizer(f='weights/best.pt'): +def strip_optimizer(f='weights/best.pt'): # from utils.utils import *; strip_optimizer() # Strip optimizer from *.pt files for lighter files (reduced by 2/3 size) x = torch.load(f) x['optimizer'] = None # x['training_results'] = None # x['epoch'] = -1 - # for p in x['model']: - # p.requires_grad = True + # for p in x['model'].values(): + # try: + # p.requires_grad = True + # except: + # pass torch.save(x, f) From 39dcf0d561bb66e42835a48b9430c8c1450c2a3a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 24 Aug 2019 16:43:43 +0200 Subject: [PATCH 1302/2595] removed xy/wh loss reporting --- test.py | 6 +++--- train.py | 42 +++++++++++------------------------------- utils/gcp.sh | 2 +- utils/utils.py | 22 +++++++++++----------- 4 files changed, 26 insertions(+), 46 deletions(-) diff --git a/test.py b/test.py index a16e57c3..bf063102 100644 --- a/test.py +++ b/test.py @@ -55,7 +55,7 @@ def test(cfg, seen = 0 model.eval() coco91class = coco80_to_coco91_class() - s = ('%30s' + '%10s' * 6) % ('Class', 'Images', 'Targets', 'P', 'R', 'mAP', 'F1') + s = ('%20s' + '%10s' * 6) % ('Class', 'Images', 'Targets', 'P', 'R', 'mAP', 'F1') p, r, f1, mp, mr, map, mf1 = 0., 0., 0., 0., 0., 0., 0. loss = torch.zeros(3) jdict, stats, ap, ap_class = [], [], [], [] @@ -73,7 +73,7 @@ def test(cfg, # Compute loss if hasattr(model, 'hyp'): # if model has loss hyperparameters - loss += compute_loss(train_out, targets, model)[1][[0, 2, 3]].cpu() # GIoU, obj, cls + loss += compute_loss(train_out, targets, model)[1][:3].cpu() # GIoU, obj, cls # Run NMS output = non_max_suppression(inf_out, conf_thres=conf_thres, nms_thres=nms_thres) @@ -155,7 +155,7 @@ def test(cfg, nt = torch.zeros(1) # Print results - pf = '%30s' + '%10.3g' * 6 # print format + pf = '%20s' + '%10.3g' * 6 # print format print(pf % ('all', seen, nt.sum(), mp, mr, map, mf1)) # Print results per class diff --git a/train.py b/train.py index e444f05a..55b48a57 100644 --- a/train.py +++ b/train.py @@ -16,28 +16,8 @@ try: # Mixed precision training https://github.com/NVIDIA/apex except: mixed_precision = False # not installed -# 320 --epochs 1 -# 0.109 0.297 0.150 0.126 7.04 1.666 4.062 0.1845 42.6 3.34 12.61 8.338 0.2705 0.001 -4 0.9 0.0005 a 320 giou + best_anchor False -# 0.223 0.218 0.138 0.189 9.28 1.153 4.376 0.08263 24.28 3.05 20.93 2.842 0.2759 0.001357 -5.036 0.9158 0.0005722 b mAP/F1 - 50/50 weighting -# 0.231 0.215 0.135 0.191 9.51 1.432 3.007 0.06082 24.87 3.477 24.13 2.802 0.3436 0.001127 -5.036 0.9232 0.0005874 c -# 0.246 0.194 0.128 0.192 8.12 1.101 3.954 0.0817 22.83 3.967 19.83 1.779 0.3352 0.000895 -5.036 0.9238 0.0007973 d -# 0.187 0.237 0.144 0.186 14.6 1.607 4.202 0.09439 39.27 3.726 31.26 2.634 0.273 0.001542 -5.036 0.8364 0.0008393 e -# 0.250 0.217 0.136 0.195 3.3 1.2 2 0.604 15.7 3.67 20 1.36 0.194 0.00128 -4 0.95 0.000201 0.8 0.388 1.2 0.119 0.0589 0.401 f -# 0.269 0.225 0.149 0.218 6.71 1.13 5.25 0.246 22.4 3.64 17.8 1.31 0.256 0.00146 -4 0.936 0.00042 0.123 0.18 1.81 0.0987 0.0788 0.441 g -# 0.179 0.274 0.165 0.187 7.95 1.22 7.62 0.224 17 5.71 17.7 3.28 0.295 0.00136 -4 0.875 0.000319 0.131 0.208 2.14 0.14 0.0773 0.228 h -# 0.296 0.228 0.152 0.220 5.18 1.43 4.27 0.265 11.7 4.81 11.5 1.56 0.281 0.0013 -4 0.944 0.000427 0.0599 0.142 1.03 0.0552 0.0555 0.434 i - -# 320 --epochs 2 -# 0.242 0.296 0.196 0.231 5.67 0.8541 4.286 0.1539 21.61 1.957 22.9 2.894 0.3689 0.001844 -4 0.913 0.000467 # ha 0.417 mAP @ epoch 100 -# 0.298 0.244 0.167 0.247 4.99 0.8896 4.067 0.1694 21.41 2.033 25.61 1.783 0.4115 0.00128 -4 0.950 0.000377 # hb -# 0.268 0.268 0.178 0.240 4.36 1.104 5.596 0.2087 14.47 2.599 16.27 2.406 0.4114 0.001585 -4 0.950 0.000524 # hc -# 0.161 0.327 0.190 0.193 7.82 1.153 4.062 0.1845 24.28 3.05 20.93 2.842 0.2759 0.001357 -4 0.916 0.000572 # hd 0.438 mAP @ epoch 100 - # Hyperparameters (j-series, 50.5 mAP yolov3-320) evolved by @ktian08 https://github.com/ultralytics/yolov3/issues/310 -# Transfer learning edge layers: 0.1 lr0, 0.9 momentum hyp = {'giou': 1.582, # giou loss gain - 'xy': 4.688, # xy loss gain - 'wh': 0.1857, # wh loss gain 'cls': 27.76, # cls loss gain (CE=~1.0, uCE=~20) 'cls_pw': 1.446, # cls BCELoss positive_weight 'obj': 21.35, # obj loss gain (*=80 for uBCE with 80 classes) @@ -125,10 +105,11 @@ def train(): # possible weights are 'yolov3.weights', 'yolov3-tiny.conv.15', 'darknet53.conv.74' etc. cutoff = load_darknet_weights(model, weights) - if opt.transfer: # transfer learning + if opt.transfer: # transfer learning edge (yolo) layers nf = int(model.module_defs[model.yolo_layers[0] - 1]['filters']) # yolo layer size (i.e. 255) - for x in optimizer.param_groups: # lower parameter count can handle more aggressive training hyps + for x in optimizer.param_groups: + # lower param count allows more aggressive training settings: ~0.1 lr0, ~0.9 momentum x['lr'] *= 10 x['momentum'] *= 0.9 @@ -197,13 +178,12 @@ def train(): model_info(model, report='summary') # 'full' or 'summary' nb = len(dataloader) maps = np.zeros(nc) # mAP per class - results = (0, 0, 0, 0, 0, 0, 0) # P, R, mAP, F1, test_loss + results = (0, 0, 0, 0, 0, 0, 0, 0) # 'P', 'R', 'mAP', 'F1', 'val GIoU', 'val Objectness', 'val Classification' t0 = time.time() for epoch in range(start_epoch, epochs): # epoch ------------------------------------------------------------------ model.train() - print(('\n' + '%10s' * 9) % - ('Epoch', 'gpu_mem', 'GIoU/xy', 'wh', 'obj', 'cls', 'total', 'targets', 'img_size')) + print(('\n' + '%10s' * 8) % ('Epoch', 'gpu_mem', 'GIoU', 'obj', 'cls', 'total', 'targets', 'img_size')) # Update scheduler if epoch > 0: @@ -222,7 +202,7 @@ def train(): image_weights = labels_to_image_weights(dataset.labels, nc=nc, class_weights=w) dataset.indices = random.choices(range(dataset.n), weights=image_weights, k=dataset.n) # rand weighted idx - mloss = torch.zeros(5).to(device) # mean losses + mloss = torch.zeros(4).to(device) # mean losses pbar = tqdm(enumerate(dataloader), total=nb) # progress bar for i, (imgs, targets, paths, _) in pbar: # batch ------------------------------------------------------------- ni = i + nb * epoch # number integrated batches (since train start) @@ -280,7 +260,7 @@ def train(): # Print batch results mloss = (mloss * i + loss_items) / (i + 1) # update mean losses mem = torch.cuda.memory_cached() / 1E9 if torch.cuda.is_available() else 0 # (GB) - s = ('%10s' * 2 + '%10.3g' * 7) % ( + s = ('%10s' * 2 + '%10.3g' * 6) % ( '%g/%g' % (epoch, epochs - 1), '%.3gG' % mem, *mloss, len(targets), img_size) pbar.set_description(s) @@ -298,13 +278,13 @@ def train(): # Write epoch results with open('results.txt', 'a') as file: - file.write(s + '%11.3g' * 7 % results + '\n') # P, R, mAP, F1, test_losses=(GIoU, obj, cls) + file.write(s + '%10.3g' * 7 % results + '\n') # P, R, mAP, F1, test_losses=(GIoU, obj, cls) # Write Tensorboard results if tb_writer: - x = list(mloss[:5]) + list(results[:7]) - titles = ['GIoU/XY', 'Width/Height', 'Objectness', 'Classification', 'Train loss', 'Precision', 'Recall', - 'mAP', 'F1', 'val GIoU', 'val Objectness', 'val Classification'] + x = list(mloss) + list(results) + titles = ['GIoU', 'Objectness', 'Classification', 'Train loss', + 'Precision', 'Recall', 'mAP', 'F1', 'val GIoU', 'val Objectness', 'val Classification'] for xi, title in zip(x, titles): tb_writer.add_scalar(title, xi, epoch) diff --git a/utils/gcp.sh b/utils/gcp.sh index ae3d19ad..2cc323f4 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -16,7 +16,7 @@ sudo shutdown # Re-clone rm -rf yolov3 # Warning: remove existing -git clone https://github.com/ultralytics/yolov3 # master +git clone https://github.com/ultralytics/yolov3 && cd yolov3 # master # git clone -b test --depth 1 https://github.com/ultralytics/yolov3 test # branch # Train diff --git a/utils/utils.py b/utils/utils.py index a067f7a1..b6977ee2 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -374,7 +374,7 @@ def compute_loss(p, targets, model): # predictions, targets, model lobj *= k * h['obj'] lcls *= k * h['cls'] loss = lbox + lobj + lcls - return loss, torch.cat((lbox, ft([0]), lobj, lcls, loss)).detach() + return loss, torch.cat((lbox, lobj, lcls, loss)).detach() def build_targets(model, targets): @@ -661,9 +661,9 @@ def kmeans_targets(path='../coco/trainvalno5k.txt', n=9, img_size=416): # from def print_mutation(hyp, results, bucket=''): # Print mutation results to evolve.txt (for use with train.py --evolve) - a = '%11s' * len(hyp) % tuple(hyp.keys()) # hyperparam keys - b = '%11.3g' * len(hyp) % tuple(hyp.values()) # hyperparam values - c = '%11.3g' * len(results) % results # results (P, R, mAP, F1, test_loss) + a = '%10s' * len(hyp) % tuple(hyp.keys()) # hyperparam keys + b = '%10.3g' * len(hyp) % tuple(hyp.values()) # hyperparam values + c = '%10.3g' * len(results) % results # results (P, R, mAP, F1, test_loss) print('\n%s\n%s\nEvolved fitness: %s\n' % (a, b, c)) if bucket: @@ -672,7 +672,7 @@ def print_mutation(hyp, results, bucket=''): with open('evolve.txt', 'a') as f: # append result f.write(c + b + '\n') x = np.unique(np.loadtxt('evolve.txt', ndmin=2), axis=0) # load unique rows - np.savetxt('evolve.txt', x[np.argsort(-fitness(x))], '%11.3g') # save sort by fitness + np.savetxt('evolve.txt', x[np.argsort(-fitness(x))], '%10.3g') # save sort by fitness if bucket: os.system('gsutil cp evolve.txt gs://%s' % bucket) # upload evolve.txt @@ -680,7 +680,7 @@ def print_mutation(hyp, results, bucket=''): def fitness(x): # Returns fitness (for use with results.txt or evolve.txt) - return 0.50 * x[:, 2] + 0.50 * x[:, 3] # fitness = 0.9 * mAP + 0.1 * F1 + return 0.50 * x[:, 2] + 0.50 * x[:, 3] # fitness = 0.5 * mAP + 0.5 * F1 # Plotting functions --------------------------------------------------------------------------------------------------- @@ -803,10 +803,10 @@ def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() # Plot training results files 'results*.txt' fig, ax = plt.subplots(2, 5, figsize=(14, 7)) ax = ax.ravel() - s = ['GIoU', 'Confidence', 'Classification', 'Precision', 'Recall', - 'val GIoU', 'val Confidence', 'val Classification', 'mAP', 'F1'] + s = ['GIoU', 'Objectness', 'Classification', 'Precision', 'Recall', + 'val GIoU', 'val Objectness', 'val Classification', 'mAP', 'F1'] for f in sorted(glob.glob('results*.txt') + glob.glob('../../Downloads/results*.txt')): - results = np.loadtxt(f, usecols=[2, 4, 5, 9, 10, 13, 14, 15, 11, 12], ndmin=2).T + results = np.loadtxt(f, usecols=[2, 3, 4, 8, 9, 12, 13, 14, 10, 11], ndmin=2).T n = results.shape[1] # number of rows x = range(start, min(stop, n) if stop else n) for i in range(10): @@ -826,9 +826,9 @@ def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() def plot_results_overlay(start=0, stop=0): # from utils.utils import *; plot_results_overlay() # Plot training results files 'results*.txt', overlaying train and val losses s = ['train', 'train', 'train', 'Precision', 'mAP', 'val', 'val', 'val', 'Recall', 'F1'] # legends - t = ['GIoU', 'Confidence', 'Classification', 'P-R', 'mAP-F1'] # titles + t = ['GIoU', 'Objectness', 'Classification', 'P-R', 'mAP-F1'] # titles for f in sorted(glob.glob('results*.txt') + glob.glob('../../Downloads/results*.txt')): - results = np.loadtxt(f, usecols=[2, 4, 5, 9, 11, 13, 14, 15, 10, 12], ndmin=2).T + results = np.loadtxt(f, usecols=[2, 3, 4, 8, 9, 12, 13, 14, 10, 11], ndmin=2).T n = results.shape[1] # number of rows x = range(start, min(stop, n) if stop else n) fig, ax = plt.subplots(1, 5, figsize=(14, 3.5)) From 195adaea7dd570c3524e505b70d0a56b0f4926da Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 24 Aug 2019 16:45:49 +0200 Subject: [PATCH 1303/2595] removed xy/wh loss reporting --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 55b48a57..279a2fdd 100644 --- a/train.py +++ b/train.py @@ -381,7 +381,7 @@ if __name__ == '__main__': # Mutate init_seeds(seed=int(time.time())) - s = [.15, .15, .15, .15, .15, .15, .15, .15, .15, .00, .02, .20, .20, .20, .20, .20, .20, .20] # sigmas + s = [.15, .15, .15, .15, .15, .15, .15, .00, .02, .20, .20, .20, .20, .20, .20, .20] # sigmas for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) hyp[k] *= float(x) # vary by sigmas From 25a579e41755b048ce1a9758ed78bdd6e3936a1e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 24 Aug 2019 17:16:20 +0200 Subject: [PATCH 1304/2595] removed xy/wh loss reporting --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 279a2fdd..3eed7edd 100644 --- a/train.py +++ b/train.py @@ -178,7 +178,7 @@ def train(): model_info(model, report='summary') # 'full' or 'summary' nb = len(dataloader) maps = np.zeros(nc) # mAP per class - results = (0, 0, 0, 0, 0, 0, 0, 0) # 'P', 'R', 'mAP', 'F1', 'val GIoU', 'val Objectness', 'val Classification' + results = (0, 0, 0, 0, 0, 0, 0) # 'P', 'R', 'mAP', 'F1', 'val GIoU', 'val Objectness', 'val Classification' t0 = time.time() for epoch in range(start_epoch, epochs): # epoch ------------------------------------------------------------------ From 790e25592fd08073a46fce1cad83544bdb0b4f3b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 24 Aug 2019 20:55:01 +0200 Subject: [PATCH 1305/2595] removed xy/wh loss reporting --- test.py | 18 +++++++++--------- train.py | 20 ++++++++++++++++---- utils/utils.py | 23 +++++++++++++++-------- 3 files changed, 40 insertions(+), 21 deletions(-) diff --git a/test.py b/test.py index bf063102..0ea8c0b3 100644 --- a/test.py +++ b/test.py @@ -205,12 +205,12 @@ if __name__ == '__main__': print(opt) with torch.no_grad(): - results = test(opt.cfg, - opt.data, - opt.weights, - opt.batch_size, - opt.img_size, - opt.iou_thres, - opt.conf_thres, - opt.nms_thres, - opt.save_json) + test(opt.cfg, + opt.data, + opt.weights, + opt.batch_size, + opt.img_size, + opt.iou_thres, + opt.conf_thres, + opt.nms_thres, + opt.save_json) diff --git a/train.py b/train.py index 3eed7edd..9f27c853 100644 --- a/train.py +++ b/train.py @@ -39,7 +39,7 @@ def train(): cfg = opt.cfg data = opt.data img_size = opt.img_size - epochs = opt.epochs # 500200 batches at bs 16, 117263 images = 273 epochs + epochs = 1 if opt.prebias else opt.epochs # 500200 batches at bs 16, 117263 images = 273 epochs batch_size = opt.batch_size accumulate = opt.accumulate # effective bs = batch_size * accumulate = 16 * 4 = 64 weights = opt.weights # initial training weights @@ -105,7 +105,7 @@ def train(): # possible weights are 'yolov3.weights', 'yolov3-tiny.conv.15', 'darknet53.conv.74' etc. cutoff = load_darknet_weights(model, weights) - if opt.transfer: # transfer learning edge (yolo) layers + if opt.transfer or opt.prebias: # transfer learning edge (yolo) layers nf = int(model.module_defs[model.yolo_layers[0] - 1]['filters']) # yolo layer size (i.e. 255) for x in optimizer.param_groups: @@ -114,7 +114,12 @@ def train(): x['momentum'] *= 0.9 for p in model.parameters(): - p.requires_grad = True if p.shape[0] == nf else False + if opt.prebias and p.numel() == nf: # train yolo biases only + p.requires_grad = True + elif opt.transfer and p.shape[0] == nf: # train yolo biases+weights only + p.requires_grad = True + else: + p.requires_grad = False # Scheduler https://github.com/ultralytics/yolov3/issues/238 # lf = lambda x: 1 - x / epochs # linear ramp to zero @@ -349,6 +354,7 @@ if __name__ == '__main__': parser.add_argument('--cache-images', action='store_true', help='cache images for faster training') parser.add_argument('--weights', type=str, default='', help='initial weights') # i.e. weights/darknet.53.conv.74 parser.add_argument('--arc', type=str, default='default', help='yolo architecture') # default, uCE, uBCE + parser.add_argument('--prebias', action='store_true', help='transfer-learn yolo biases prior to training') opt = parser.parse_args() opt.weights = 'weights/last.pt' if opt.resume else opt.weights print(opt) @@ -363,7 +369,13 @@ if __name__ == '__main__': except: pass - results = train() + if opt.prebias: + train() # transfer-learn yolo biases for 1 epoch + create_backbone('weights/last.pt') # saved results as backbone.pt + opt.weights = 'weights/backbone.pt' # assign backbone + opt.prebias = False # disable prebias and train normally + + train() else: # Evolve hyperparameters (optional) opt.notest = True # only test final epoch diff --git a/utils/utils.py b/utils/utils.py index b6977ee2..f13ccea1 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -562,20 +562,27 @@ def print_model_biases(model): 'classification: %.2f+/-%.2f' % (b[:, 5:].mean(), b[:, 5:].std())) -def strip_optimizer(f='weights/best.pt'): # from utils.utils import *; strip_optimizer() +def strip_optimizer(f='weights/last.pt'): # from utils.utils import *; strip_optimizer() # Strip optimizer from *.pt files for lighter files (reduced by 2/3 size) x = torch.load(f) x['optimizer'] = None - # x['training_results'] = None - # x['epoch'] = -1 - # for p in x['model'].values(): - # try: - # p.requires_grad = True - # except: - # pass torch.save(x, f) +def create_backbone(f='weights/last.pt'): # from utils.utils import *; create_backbone() + # create a backbone from a *.pt file + x = torch.load(f) + x['optimizer'] = None + x['training_results'] = None + x['epoch'] = -1 + for p in x['model'].values(): + try: + p.requires_grad = True + except: + pass + torch.save(x, 'weights/backbone.pt') + + def coco_class_count(path='../coco/labels/train2014/'): # Histogram of occurrences per class nc = 80 # number classes From ca38c9050fe79f5687a1cbade39a86516e1b57db Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 24 Aug 2019 21:20:25 +0200 Subject: [PATCH 1306/2595] updates --- train.py | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/train.py b/train.py index 9f27c853..a5fd778c 100644 --- a/train.py +++ b/train.py @@ -186,7 +186,6 @@ def train(): results = (0, 0, 0, 0, 0, 0, 0) # 'P', 'R', 'mAP', 'F1', 'val GIoU', 'val Objectness', 'val Classification' t0 = time.time() for epoch in range(start_epoch, epochs): # epoch ------------------------------------------------------------------ - model.train() print(('\n' + '%10s' * 8) % ('Epoch', 'gpu_mem', 'GIoU', 'obj', 'cls', 'total', 'targets', 'img_size')) @@ -267,19 +266,22 @@ def train(): mem = torch.cuda.memory_cached() / 1E9 if torch.cuda.is_available() else 0 # (GB) s = ('%10s' * 2 + '%10.3g' * 6) % ( '%g/%g' % (epoch, epochs - 1), '%.3gG' % mem, *mloss, len(targets), img_size) - pbar.set_description(s) + pbar.set_description(s) # end batch ----------------------------------------------------------------------- - # Calculate mAP (always test final epoch, skip first 5 if opt.nosave) - final_epoch = epoch + 1 == epochs - if not (opt.notest or (opt.nosave and epoch < 10)) or final_epoch: - with torch.no_grad(): - results, maps = test.test(cfg, - data, - batch_size=batch_size, - img_size=opt.img_size, - model=model, - conf_thres=0.001 if final_epoch and epoch > 0 else 0.1, # 0.1 for speed - save_json=final_epoch and epoch > 0 and 'coco.data' in data) + if opt.prebias: + print_model_biases(model) + else: + # Calculate mAP (always test final epoch, skip first 10 if opt.nosave) + final_epoch = epoch + 1 == epochs + if not (opt.notest or (opt.nosave and epoch < 10)) or final_epoch: + with torch.no_grad(): + results, maps = test.test(cfg, + data, + batch_size=batch_size, + img_size=opt.img_size, + model=model, + conf_thres=0.001 if final_epoch and epoch > 0 else 0.1, # 0.1 for speed + save_json=final_epoch and epoch > 0 and 'coco.data' in data) # Write epoch results with open('results.txt', 'a') as file: @@ -293,7 +295,7 @@ def train(): for xi, title in zip(x, titles): tb_writer.add_scalar(title, xi, epoch) - # Update best map + # Update best mAP fitness = results[2] # mAP if fitness > best_fitness: best_fitness = fitness @@ -324,7 +326,7 @@ def train(): torch.save(chkpt, wdir + 'backup%g.pt' % epoch) # Delete checkpoint - del chkpt + del chkpt # end epoch ------------------------------------------------------------------------------------- # Report time plot_results() # save as results.png @@ -373,9 +375,10 @@ if __name__ == '__main__': train() # transfer-learn yolo biases for 1 epoch create_backbone('weights/last.pt') # saved results as backbone.pt opt.weights = 'weights/backbone.pt' # assign backbone - opt.prebias = False # disable prebias and train normally + opt.prebias = False # disable prebias + print(opt) # display options - train() + train() # train normally else: # Evolve hyperparameters (optional) opt.notest = True # only test final epoch From 1064c376005c0f786ba9613406fbb9db2e8dccc1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 24 Aug 2019 21:35:56 +0200 Subject: [PATCH 1307/2595] removed xy/wh loss reporting --- train.py | 2 +- utils/utils.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index a5fd778c..f1d3f757 100644 --- a/train.py +++ b/train.py @@ -268,11 +268,11 @@ def train(): '%g/%g' % (epoch, epochs - 1), '%.3gG' % mem, *mloss, len(targets), img_size) pbar.set_description(s) # end batch ----------------------------------------------------------------------- + final_epoch = epoch + 1 == epochs if opt.prebias: print_model_biases(model) else: # Calculate mAP (always test final epoch, skip first 10 if opt.nosave) - final_epoch = epoch + 1 == epochs if not (opt.notest or (opt.nosave and epoch < 10)) or final_epoch: with torch.no_grad(): results, maps = test.test(cfg, diff --git a/utils/utils.py b/utils/utils.py index f13ccea1..041c602f 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -555,6 +555,7 @@ def get_yolo_layers(model): def print_model_biases(model): # prints the bias neurons preceding each yolo layer + print('\nModel Output-Bias Summary::') for l in model.yolo_layers: # print pretrained biases b = model.module_list[l - 1][0].bias.view(3, -1) # bias 3x85 print('regression: %.2f+/-%.2f, ' % (b[:, :4].mean(), b[:, :4].std()), From 70be0d5d145bdad61cbd5b15c74e2be08c1c0ff7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 24 Aug 2019 21:39:25 +0200 Subject: [PATCH 1308/2595] updates --- train.py | 2 +- utils/utils.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index f1d3f757..1473b939 100644 --- a/train.py +++ b/train.py @@ -330,7 +330,7 @@ def train(): # Report time plot_results() # save as results.png - print('%g epochs completed in %.3f hours.' % (epoch - start_epoch + 1, (time.time() - t0) / 3600)) + print('%g epochs completed in %.3f hours.\n' % (epoch - start_epoch + 1, (time.time() - t0) / 3600)) dist.destroy_process_group() if torch.cuda.device_count() > 1 else None torch.cuda.empty_cache() return results diff --git a/utils/utils.py b/utils/utils.py index 041c602f..94858c30 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -555,7 +555,7 @@ def get_yolo_layers(model): def print_model_biases(model): # prints the bias neurons preceding each yolo layer - print('\nModel Output-Bias Summary::') + print('\nModel output-bias Summary:') for l in model.yolo_layers: # print pretrained biases b = model.module_list[l - 1][0].bias.view(3, -1) # bias 3x85 print('regression: %.2f+/-%.2f, ' % (b[:, :4].mean(), b[:, :4].std()), From 3ee457cd3da386745c8b354eacb1b1ac01d42f48 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 24 Aug 2019 21:50:33 +0200 Subject: [PATCH 1309/2595] updates --- utils/utils.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 94858c30..2eaa61b1 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -555,12 +555,12 @@ def get_yolo_layers(model): def print_model_biases(model): # prints the bias neurons preceding each yolo layer - print('\nModel output-bias Summary:') + print('\nModel Bias Summary (per output layer):') for l in model.yolo_layers: # print pretrained biases b = model.module_list[l - 1][0].bias.view(3, -1) # bias 3x85 - print('regression: %.2f+/-%.2f, ' % (b[:, :4].mean(), b[:, :4].std()), - 'objectness: %.2f+/-%.2f, ' % (b[:, 4].mean(), b[:, 4].std()), - 'classification: %.2f+/-%.2f' % (b[:, 5:].mean(), b[:, 5:].std())) + print('regression: %5.2f+/-%-5.2f ' % (b[:, :4].mean(), b[:, :4].std()), + 'objectness: %5.2f+/-%-5.2f ' % (b[:, 4].mean(), b[:, 4].std()), + 'classification: %5.2f+/-%-5.2f' % (b[:, 5:].mean(), b[:, 5:].std())) def strip_optimizer(f='weights/last.pt'): # from utils.utils import *; strip_optimizer() From a85f7d967cdce5f4afd00e2020628d24e6e079d2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 24 Aug 2019 23:58:08 +0200 Subject: [PATCH 1310/2595] updates --- train.py | 4 ++++ utils/utils.py | 8 +++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index 1473b939..19cd2c44 100644 --- a/train.py +++ b/train.py @@ -249,6 +249,10 @@ def train(): print('WARNING: nan loss detected, ending training') return results + # Divide by accumulation count + if accumulate > 1: + loss /= accumulate + # Compute gradient if mixed_precision: with amp.scale_loss(loss, optimizer) as scaled_loss: diff --git a/utils/utils.py b/utils/utils.py index 2eaa61b1..ef175c10 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -326,8 +326,6 @@ def compute_loss(p, targets, model): # predictions, targets, model FCE = FocalLoss(nn.CrossEntropyLoss()) # weight=model.class_weights # Compute losses - bs = p[0].shape[0] # batch size - k = bs / 64 # loss gain for i, pi in enumerate(p): # layer index, layer predictions b, a, gj, gi = indices[i] # image, anchor, gridy, gridx tobj = torch.zeros_like(pi[..., 0]) # target obj @@ -370,9 +368,9 @@ def compute_loss(p, targets, model): # predictions, targets, model t[b, a, gj, gi, tcls[i]] = 1.0 lobj += FBCE(pi[..., 5:], t) - lbox *= k * h['giou'] - lobj *= k * h['obj'] - lcls *= k * h['cls'] + lbox *= h['giou'] + lobj *= h['obj'] + lcls *= h['cls'] loss = lbox + lobj + lcls return loss, torch.cat((lbox, lobj, lcls, loss)).detach() From 991362df575743f3408d42a810282fea42e85543 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 25 Aug 2019 01:58:12 +0200 Subject: [PATCH 1311/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 19cd2c44..65e166f3 100644 --- a/train.py +++ b/train.py @@ -39,7 +39,7 @@ def train(): cfg = opt.cfg data = opt.data img_size = opt.img_size - epochs = 1 if opt.prebias else opt.epochs # 500200 batches at bs 16, 117263 images = 273 epochs + epochs = 3 if opt.prebias else opt.epochs # 500200 batches at bs 16, 117263 images = 273 epochs batch_size = opt.batch_size accumulate = opt.accumulate # effective bs = batch_size * accumulate = 16 * 4 = 64 weights = opt.weights # initial training weights @@ -110,7 +110,7 @@ def train(): for x in optimizer.param_groups: # lower param count allows more aggressive training settings: ~0.1 lr0, ~0.9 momentum - x['lr'] *= 10 + x['lr'] *= 100 x['momentum'] *= 0.9 for p in model.parameters(): From 14e67196ea479c10a5b0d882c57274cf2d24b391 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 25 Aug 2019 02:03:52 +0200 Subject: [PATCH 1312/2595] updates --- models.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/models.py b/models.py index 002f7df9..5df79dc7 100755 --- a/models.py +++ b/models.py @@ -78,11 +78,11 @@ def create_modules(module_defs, img_size, arc): # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) try: if arc == 'default': - b = [-5.0, -4.0] # obj, cls + b = [-5, -4] # obj, cls elif arc == 'uCE': # unified CE (1 background + 80 classes) - b = [3.0, -4.0] # obj, cls + b = [7, 0] # obj, cls elif arc == 'uBCE': # unified BCE (80 classes) - b = [-5.0, -4.0] # obj, cls + b = [0, -4] # obj, cls bias = module_list[-1][0].bias.view(len(mask), -1) # 255 to 3x85 bias[:, 4] += b[0] # obj From 5258ed8bddc1ac92bbfb811852f8c1a39c285d1b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 25 Aug 2019 02:25:05 +0200 Subject: [PATCH 1313/2595] updates --- models.py | 2 +- utils/utils.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/models.py b/models.py index 5df79dc7..fb87a649 100755 --- a/models.py +++ b/models.py @@ -82,7 +82,7 @@ def create_modules(module_defs, img_size, arc): elif arc == 'uCE': # unified CE (1 background + 80 classes) b = [7, 0] # obj, cls elif arc == 'uBCE': # unified BCE (80 classes) - b = [0, -4] # obj, cls + b = [0, -3.5] # obj, cls bias = module_list[-1][0].bias.view(len(mask), -1) # 255 to 3x85 bias[:, 4] += b[0] # obj diff --git a/utils/utils.py b/utils/utils.py index ef175c10..d94d91ab 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -322,8 +322,8 @@ def compute_loss(p, targets, model): # predictions, targets, model # Define criteria BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']])) BCEobj = nn.BCEWithLogitsLoss(pos_weight=ft([h['obj_pw']])) - FBCE = FocalLoss(nn.BCEWithLogitsLoss()) - FCE = FocalLoss(nn.CrossEntropyLoss()) # weight=model.class_weights + FBCE = nn.BCEWithLogitsLoss() + FCE = nn.CrossEntropyLoss() # weight=model.class_weights # Compute losses for i, pi in enumerate(p): # layer index, layer predictions From c4f9e3891e6d87f4bd0d51d54dbe479231e89717 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 25 Aug 2019 03:03:35 +0200 Subject: [PATCH 1314/2595] updates --- models.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/models.py b/models.py index fb87a649..bcfedb3c 100755 --- a/models.py +++ b/models.py @@ -78,11 +78,11 @@ def create_modules(module_defs, img_size, arc): # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) try: if arc == 'default': - b = [-5, -4] # obj, cls + b = [-4, -3.6] # obj, cls elif arc == 'uCE': # unified CE (1 background + 80 classes) - b = [7, 0] # obj, cls + b = [10, -0.1] # obj, cls elif arc == 'uBCE': # unified BCE (80 classes) - b = [0, -3.5] # obj, cls + b = [0, -8.5] # obj, cls bias = module_list[-1][0].bias.view(len(mask), -1) # 255 to 3x85 bias[:, 4] += b[0] # obj From 6260ac266ff9183af9d124b8da180539bbe73529 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 25 Aug 2019 20:19:53 +0200 Subject: [PATCH 1315/2595] updates --- models.py | 26 +++++++++++++++++--------- train.py | 6 +++++- utils/utils.py | 27 +++++++++++++++------------ 3 files changed, 37 insertions(+), 22 deletions(-) diff --git a/models.py b/models.py index bcfedb3c..be2d3239 100755 --- a/models.py +++ b/models.py @@ -77,12 +77,20 @@ def create_modules(module_defs, img_size, arc): # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) try: - if arc == 'default': + if arc == 'defaultpw': # default with positive weights b = [-4, -3.6] # obj, cls - elif arc == 'uCE': # unified CE (1 background + 80 classes) - b = [10, -0.1] # obj, cls + if arc == 'default': # default no pw (40 cls, 80 obj) + b = [-5.5, -4.0] elif arc == 'uBCE': # unified BCE (80 classes) - b = [0, -8.5] # obj, cls + b = [0, -8.5] + elif arc == 'uCE': # unified CE (1 background + 80 classes) + b = [10, -0.1] + elif arc == 'Fdefault': # Focal default no pw (28 cls, 21 obj, no pw) + b = [-2.1, -1.8] + elif arc == 'uFBCE': # unified FocalBCE (5120 obj, 80 classes) + b = [0, -3.5] + elif arc == 'uFCE': # unified FocalCE (64 cls, 1 background + 80 classes) + b = [7, -0.1] bias = module_list[-1][0].bias.view(len(mask), -1) # 255 to 3x85 bias[:, 4] += b[0] # obj @@ -175,14 +183,14 @@ class YOLOLayer(nn.Module): # io[..., 2:4] = ((torch.sigmoid(io[..., 2:4]) * 2) ** 3) * self.anchor_wh # wh power method io[..., :4] *= self.stride - if self.arc == 'default': + if 'default' in self.arc: # seperate obj and cls torch.sigmoid_(io[..., 4:]) - elif self.arc == 'uCE': # unified CE (1 background + 80 classes) - io[..., 4:] = F.softmax(io[..., 4:], dim=4) - io[..., 4] = 1 - elif self.arc == 'uBCE': # unified BCE (80 classes) + elif 'BCE' in self.arc: # unified BCE (80 classes) torch.sigmoid_(io[..., 5:]) io[..., 4] = 1 + elif 'CE' in self.arc: # unified CE (1 background + 80 classes) + io[..., 4:] = F.softmax(io[..., 4:], dim=4) + io[..., 4] = 1 if self.nc == 1: io[..., 5] = 1 # single-class model https://github.com/ultralytics/yolov3/issues/235 diff --git a/train.py b/train.py index 65e166f3..0937a422 100644 --- a/train.py +++ b/train.py @@ -44,6 +44,10 @@ def train(): accumulate = opt.accumulate # effective bs = batch_size * accumulate = 16 * 4 = 64 weights = opt.weights # initial training weights + if 'pw' not in opt.arc: # remove BCELoss positive weights + hyp['cls_pw'] = 0 + hyp['obj_pw'] = 0 + # Initialize init_seeds() wdir = 'weights' + os.sep # weights dir @@ -359,7 +363,7 @@ if __name__ == '__main__': parser.add_argument('--img-weights', action='store_true', help='select training images by weight') parser.add_argument('--cache-images', action='store_true', help='cache images for faster training') parser.add_argument('--weights', type=str, default='', help='initial weights') # i.e. weights/darknet.53.conv.74 - parser.add_argument('--arc', type=str, default='default', help='yolo architecture') # default, uCE, uBCE + parser.add_argument('--arc', type=str, default='defaultpw', help='yolo architecture') # defaultpw, uCE, uBCE parser.add_argument('--prebias', action='store_true', help='transfer-learn yolo biases prior to training') opt = parser.parse_args() opt.weights = 'weights/last.pt' if opt.resume else opt.weights diff --git a/utils/utils.py b/utils/utils.py index d94d91ab..c89b3d03 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -322,8 +322,11 @@ def compute_loss(p, targets, model): # predictions, targets, model # Define criteria BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']])) BCEobj = nn.BCEWithLogitsLoss(pos_weight=ft([h['obj_pw']])) - FBCE = nn.BCEWithLogitsLoss() - FCE = nn.CrossEntropyLoss() # weight=model.class_weights + BCE = nn.BCEWithLogitsLoss() + CE = nn.CrossEntropyLoss() # weight=model.class_weights + + if 'F' in arc: # add focal loss + BCEcls, BCEobj, BCE, CE = FocalLoss(BCEcls), FocalLoss(BCEobj), FocalLoss(BCE), FocalLoss(CE) # Compute losses for i, pi in enumerate(p): # layer index, layer predictions @@ -343,7 +346,7 @@ def compute_loss(p, targets, model): # predictions, targets, model giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation lbox += (1.0 - giou).mean() # giou loss - if arc == 'default' and model.nc > 1: # cls loss (only if multiple classes) + if 'default' in arc and model.nc > 1: # cls loss (only if multiple classes) t = torch.zeros_like(ps[:, 5:]) # targets t[range(nb), tcls[i]] = 1.0 lcls += BCEcls(ps[:, 5:], t) # BCE @@ -353,20 +356,20 @@ def compute_loss(p, targets, model): # predictions, targets, model # with open('targets.txt', 'a') as file: # [file.write('%11.5g ' * 4 % tuple(x) + '\n') for x in torch.cat((txy[i], twh[i]), 1)] - if arc == 'default': + if 'default' in arc: # seperate obj and cls lobj += BCEobj(pi[..., 4], tobj) # obj loss - elif arc == 'uCE': # unified CE (1 background + 80 classes), hyps 20 - t = torch.zeros_like(pi[..., 0], dtype=torch.long) # targets - if nb: - t[b, a, gj, gi] = tcls[i] + 1 - lcls += FCE(pi[..., 4:].view(-1, model.nc + 1), t.view(-1)) - - elif arc == 'uBCE': # unified BCE (1 background + 80 classes), hyps 200-30 + elif 'BCE' in arc: # unified BCE (80 classes) t = torch.zeros_like(pi[..., 5:]) # targets if nb: t[b, a, gj, gi, tcls[i]] = 1.0 - lobj += FBCE(pi[..., 5:], t) + lobj += BCE(pi[..., 5:], t) + + elif 'CE' in arc: # unified CE (1 background + 80 classes) + t = torch.zeros_like(pi[..., 0], dtype=torch.long) # targets + if nb: + t[b, a, gj, gi] = tcls[i] + 1 + lcls += CE(pi[..., 4:].view(-1, model.nc + 1), t.view(-1)) lbox *= h['giou'] lobj *= h['obj'] From bf8f0f3987c15270e51464da2f665b5b2ec53a03 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 25 Aug 2019 20:20:15 +0200 Subject: [PATCH 1316/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 0937a422..a225d6fe 100644 --- a/train.py +++ b/train.py @@ -39,7 +39,7 @@ def train(): cfg = opt.cfg data = opt.data img_size = opt.img_size - epochs = 3 if opt.prebias else opt.epochs # 500200 batches at bs 16, 117263 images = 273 epochs + epochs = 1 if opt.prebias else opt.epochs # 500200 batches at bs 16, 117263 images = 273 epochs batch_size = opt.batch_size accumulate = opt.accumulate # effective bs = batch_size * accumulate = 16 * 4 = 64 weights = opt.weights # initial training weights From 883ddcc6824a959c502ca1137727428550f3b957 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 25 Aug 2019 20:35:15 +0200 Subject: [PATCH 1317/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index be2d3239..18bcb465 100755 --- a/models.py +++ b/models.py @@ -79,7 +79,7 @@ def create_modules(module_defs, img_size, arc): try: if arc == 'defaultpw': # default with positive weights b = [-4, -3.6] # obj, cls - if arc == 'default': # default no pw (40 cls, 80 obj) + elif arc == 'default': # default no pw (40 cls, 80 obj) b = [-5.5, -4.0] elif arc == 'uBCE': # unified BCE (80 classes) b = [0, -8.5] From ff82e4d488dd267a4d5a7bab4ccdca0702a0a81c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 26 Aug 2019 14:47:36 +0200 Subject: [PATCH 1318/2595] weight_decay fix --- train.py | 30 +++++++++++++++++++----------- utils/gcp.sh | 1 + 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/train.py b/train.py index a225d6fe..f2c3f4f2 100644 --- a/train.py +++ b/train.py @@ -71,10 +71,18 @@ def train(): model = Darknet(cfg, arc=opt.arc).to(device) # Optimizer - # optimizer = optim.Adam(model.parameters(), lr=hyp['lr0'], weight_decay=hyp['weight_decay']) - # optimizer = AdaBound(model.parameters(), lr=hyp['lr0'], final_lr=0.1) - optimizer = optim.SGD(model.parameters(), lr=hyp['lr0'], momentum=hyp['momentum'], weight_decay=hyp['weight_decay'], - nesterov=True) + pg0, pg1 = [], [] # optimizer parameter groups + for k, v in dict(model.named_parameters()).items(): + if 'Conv2d.weight' in k: + pg1 += [v] # parameter group 1 (apply weight_decay) + else: + pg0 += [v] # parameter group 0 + + # optimizer = optim.Adam(pg0, lr=hyp['lr0']) + # optimizer = AdaBound(pg0, lr=hyp['lr0'], final_lr=0.1) + optimizer = optim.SGD(pg0, lr=hyp['lr0'], momentum=hyp['momentum'], nesterov=True) + optimizer.add_param_group({'params': pg1, 'weight_decay': hyp['weight_decay']}) # add pg1 with weight_decay + del pg0, pg1 cutoff = -1 # backbone reaches to cutoff layer start_epoch = 0 @@ -112,17 +120,17 @@ def train(): if opt.transfer or opt.prebias: # transfer learning edge (yolo) layers nf = int(model.module_defs[model.yolo_layers[0] - 1]['filters']) # yolo layer size (i.e. 255) - for x in optimizer.param_groups: - # lower param count allows more aggressive training settings: ~0.1 lr0, ~0.9 momentum - x['lr'] *= 100 - x['momentum'] *= 0.9 + for p in optimizer.param_groups: + # lower param count allows more aggressive training settings: i.e. SGD ~0.1 lr0, ~0.9 momentum + p['lr'] *= 100 + p['momentum'] *= 0.9 for p in model.parameters(): - if opt.prebias and p.numel() == nf: # train yolo biases only + if opt.prebias and p.numel() == nf: # train (yolo biases) p.requires_grad = True - elif opt.transfer and p.shape[0] == nf: # train yolo biases+weights only + elif opt.transfer and p.shape[0] == nf: # train (yolo biases+weights) p.requires_grad = True - else: + else: # freeze layer p.requires_grad = False # Scheduler https://github.com/ultralytics/yolov3/issues/238 diff --git a/utils/gcp.sh b/utils/gcp.sh index 2cc323f4..95dbf47e 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -18,6 +18,7 @@ sudo shutdown rm -rf yolov3 # Warning: remove existing git clone https://github.com/ultralytics/yolov3 && cd yolov3 # master # git clone -b test --depth 1 https://github.com/ultralytics/yolov3 test # branch +python3 train.py --img-size 320 --weights weights/darknet53.conv.74 --epochs 27 --batch-size 64 --accumulate 1 # Train python3 train.py From 798a7396f1851f06f3ab6971b73f48baefff9b0c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 26 Aug 2019 16:24:19 +0200 Subject: [PATCH 1319/2595] weight_decay fix --- train.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index f2c3f4f2..0a56a8c7 100644 --- a/train.py +++ b/train.py @@ -261,9 +261,8 @@ def train(): print('WARNING: nan loss detected, ending training') return results - # Divide by accumulation count - if accumulate > 1: - loss /= accumulate + # Scale loss by nominal batch_size of 64 + loss *= batch_size / 64 # Compute gradient if mixed_precision: From c906047db3a606441cffa0b8844bb4ae457bf06e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 27 Aug 2019 12:57:19 +0200 Subject: [PATCH 1320/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 0a56a8c7..01a0eeee 100644 --- a/train.py +++ b/train.py @@ -45,8 +45,8 @@ def train(): weights = opt.weights # initial training weights if 'pw' not in opt.arc: # remove BCELoss positive weights - hyp['cls_pw'] = 0 - hyp['obj_pw'] = 0 + hyp['cls_pw'] = 1. + hyp['obj_pw'] = 1. # Initialize init_seeds() From 23dfeacfcd255d544230b17b87da873c6bf26eb0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 28 Aug 2019 16:15:10 +0200 Subject: [PATCH 1321/2595] weight_decay fix --- test.py | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/test.py b/test.py index 0ea8c0b3..c53f5039 100644 --- a/test.py +++ b/test.py @@ -165,23 +165,26 @@ def test(cfg, # Save JSON if save_json and map and len(jdict): - imgIds = [int(Path(x).stem.split('_')[-1]) for x in dataset.img_files] - with open('results.json', 'w') as file: - json.dump(jdict, file) + try: + imgIds = [int(Path(x).stem.split('_')[-1]) for x in dataset.img_files] + with open('results.json', 'w') as file: + json.dump(jdict, file) - from pycocotools.coco import COCO - from pycocotools.cocoeval import COCOeval + from pycocotools.coco import COCO + from pycocotools.cocoeval import COCOeval - # https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocoEvalDemo.ipynb - cocoGt = COCO('../coco/annotations/instances_val2014.json') # initialize COCO ground truth api - cocoDt = cocoGt.loadRes('results.json') # initialize COCO pred api + # https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocoEvalDemo.ipynb + cocoGt = COCO('../coco/annotations/instances_val2014.json') # initialize COCO ground truth api + cocoDt = cocoGt.loadRes('results.json') # initialize COCO pred api - cocoEval = COCOeval(cocoGt, cocoDt, 'bbox') - cocoEval.params.imgIds = imgIds # [:32] # only evaluate these images - cocoEval.evaluate() - cocoEval.accumulate() - cocoEval.summarize() - map = cocoEval.stats[1] # update mAP to pycocotools mAP + cocoEval = COCOeval(cocoGt, cocoDt, 'bbox') + cocoEval.params.imgIds = imgIds # [:32] # only evaluate these images + cocoEval.evaluate() + cocoEval.accumulate() + cocoEval.summarize() + map = cocoEval.stats[1] # update mAP to pycocotools mAP + except: + print('WARNING: pycocotools not installed, can not compute official COCO mAP') # Return results maps = np.zeros(nc) + map From 93b72d059ee5e6f1d1e012aa3aff2e0edf4f94c2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 28 Aug 2019 16:18:18 +0200 Subject: [PATCH 1322/2595] weight_decay fix --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index c53f5039..b638a22e 100644 --- a/test.py +++ b/test.py @@ -184,7 +184,7 @@ def test(cfg, cocoEval.summarize() map = cocoEval.stats[1] # update mAP to pycocotools mAP except: - print('WARNING: pycocotools not installed, can not compute official COCO mAP') + print('WARNING: missing dependency pycocotools from requirements.txt. Can not compute official COCO mAP.') # Return results maps = np.zeros(nc) + map From 85a24dbc7efbade38c49c4829a4b5e225f449a49 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 28 Aug 2019 16:50:34 +0200 Subject: [PATCH 1323/2595] weight_decay fix --- train.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index 01a0eeee..c005480a 100644 --- a/train.py +++ b/train.py @@ -173,7 +173,7 @@ def train(): hyp=hyp, # augmentation hyperparameters rect=opt.rect, # rectangular training image_weights=opt.img_weights, - cache_images=opt.cache_images) + cache_images=False if opt.prebias else opt.cache_images) # Dataloader dataloader = torch.utils.data.DataLoader(dataset, @@ -197,6 +197,7 @@ def train(): maps = np.zeros(nc) # mAP per class results = (0, 0, 0, 0, 0, 0, 0) # 'P', 'R', 'mAP', 'F1', 'val GIoU', 'val Objectness', 'val Classification' t0 = time.time() + print('Starting %s for %g epochs...' % ('prebias' if opt.prebias else 'training', epochs)) for epoch in range(start_epoch, epochs): # epoch ------------------------------------------------------------------ model.train() print(('\n' + '%10s' * 8) % ('Epoch', 'gpu_mem', 'GIoU', 'obj', 'cls', 'total', 'targets', 'img_size')) From 31d807e58984d1bc9361777f15194998c52f3a17 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 29 Aug 2019 14:20:54 +0200 Subject: [PATCH 1324/2595] weight_decay fix --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index c005480a..938e19e5 100644 --- a/train.py +++ b/train.py @@ -259,7 +259,7 @@ def train(): # Compute loss loss, loss_items = compute_loss(pred, targets, model) if torch.isnan(loss): - print('WARNING: nan loss detected, ending training') + print('WARNING: nan loss detected, ending training', loss_items) return results # Scale loss by nominal batch_size of 64 From 7d9ffe6d4ecbadd688eb3ebebb6c6c370281820f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 29 Aug 2019 14:29:07 +0200 Subject: [PATCH 1325/2595] weight_decay fix --- train.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index 938e19e5..127adad2 100644 --- a/train.py +++ b/train.py @@ -258,9 +258,6 @@ def train(): # Compute loss loss, loss_items = compute_loss(pred, targets, model) - if torch.isnan(loss): - print('WARNING: nan loss detected, ending training', loss_items) - return results # Scale loss by nominal batch_size of 64 loss *= batch_size / 64 @@ -282,8 +279,14 @@ def train(): mem = torch.cuda.memory_cached() / 1E9 if torch.cuda.is_available() else 0 # (GB) s = ('%10s' * 2 + '%10.3g' * 6) % ( '%g/%g' % (epoch, epochs - 1), '%.3gG' % mem, *mloss, len(targets), img_size) - pbar.set_description(s) # end batch ----------------------------------------------------------------------- + pbar.set_description(s) + if torch.isnan(loss): + print('WARNING: nan loss detected, ending training', loss_items) + return results + # end batch ------------------------------------------------------------------------------------------------ + + # Process epoch results final_epoch = epoch + 1 == epochs if opt.prebias: print_model_biases(model) @@ -342,7 +345,9 @@ def train(): torch.save(chkpt, wdir + 'backup%g.pt' % epoch) # Delete checkpoint - del chkpt # end epoch ------------------------------------------------------------------------------------- + del chkpt + + # end epoch ---------------------------------------------------------------------------------------------------- # Report time plot_results() # save as results.png From 408baf66e2e56b08f08e7034ca6e383ff396d29c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 29 Aug 2019 15:44:15 +0200 Subject: [PATCH 1326/2595] weight_decay fix --- train.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/train.py b/train.py index 127adad2..5df73657 100644 --- a/train.py +++ b/train.py @@ -258,6 +258,9 @@ def train(): # Compute loss loss, loss_items = compute_loss(pred, targets, model) + if torch.isnan(loss): + print('WARNING: nan loss detected, skipping batch ', loss_items) + continue # Scale loss by nominal batch_size of 64 loss *= batch_size / 64 From 8eb381dc8857b2fc892a94565db6a6ff277a2200 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 29 Aug 2019 15:49:51 +0200 Subject: [PATCH 1327/2595] updates --- train.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/train.py b/train.py index 5df73657..e85d9343 100644 --- a/train.py +++ b/train.py @@ -283,9 +283,6 @@ def train(): s = ('%10s' * 2 + '%10.3g' * 6) % ( '%g/%g' % (epoch, epochs - 1), '%.3gG' % mem, *mloss, len(targets), img_size) pbar.set_description(s) - if torch.isnan(loss): - print('WARNING: nan loss detected, ending training', loss_items) - return results # end batch ------------------------------------------------------------------------------------------------ From c344efc22401ef9ccc69c1dc031d9e04dedbe133 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 29 Aug 2019 17:41:23 +0200 Subject: [PATCH 1328/2595] weight_decay fix --- utils/datasets.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 941352dd..177fea48 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -124,6 +124,8 @@ class LoadWebcam: # for inference pipe = 0 # local camera # pipe = 'rtsp://192.168.1.64/1' # IP camera # pipe = 'rtsp://username:password@192.168.1.64/1' # IP camera with login + pipe = 'rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa' # IP traffic camera + # pipe = 'http://wmccpinetop.axiscam.net/mjpg/video.mjpg' # IP golf camera # https://answers.opencv.org/question/215996/changing-gstreamer-pipeline-to-opencv-in-pythonsolved/ # pipe = '"rtspsrc location="rtsp://username:password@192.168.1.64/1" latency=10 ! appsink' # GStreamer @@ -132,6 +134,7 @@ class LoadWebcam: # for inference # https://stackoverflow.com/questions/54095699/install-gstreamer-support-for-opencv-python-package # install help # pipe = "rtspsrc location=rtsp://root:root@192.168.0.91:554/axis-media/media.amp?videocodec=h264&resolution=3840x2160 protocols=GST_RTSP_LOWER_TRANS_TCP ! rtph264depay ! queue ! vaapih264dec ! videoconvert ! appsink" # GStreamer + self.pipe = pipe self.cap = cv2.VideoCapture(pipe) # video capture object def __iter__(self): @@ -144,11 +147,23 @@ class LoadWebcam: # for inference cv2.destroyAllWindows() raise StopIteration - # Read image - ret_val, img0 = self.cap.read() + # Read frame + if self.pipe == 0: # local camera + ret_val, img0 = self.cap.read() + img0 = cv2.flip(img0, 1) # flip left-right + else: # IP camera + n = 0 + while True: + n += 1 + self.cap.grab() + if n % 30 == 0: # skip frames + ret_val, img0 = self.cap.retrieve() + if ret_val: + break + + # Print assert ret_val, 'Webcam Error' img_path = 'webcam_%g.jpg' % self.count - img0 = cv2.flip(img0, 1) # flip left-right print('webcam %g: ' % self.count, end='') # Padded resize From 894fc1c47f33d331618e0a78e09daa2434e98183 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 29 Aug 2019 17:59:24 +0200 Subject: [PATCH 1329/2595] updates --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 18bcb465..20ef978d 100755 --- a/models.py +++ b/models.py @@ -93,8 +93,8 @@ def create_modules(module_defs, img_size, arc): b = [7, -0.1] bias = module_list[-1][0].bias.view(len(mask), -1) # 255 to 3x85 - bias[:, 4] += b[0] # obj - bias[:, 5:] += b[1] # cls + bias[:, 4] += b[0] - bias[:, 4].mean() # obj + bias[:, 5:] += b[1] - bias[:, 5:].mean() # cls # bias = torch.load('weights/yolov3-spp.bias.pt')[yolo_index] # list of tensors [3x85, 3x85, 3x85] module_list[-1][0].bias = torch.nn.Parameter(bias.view(-1)) # utils.print_model_biases(model) From 12b169158fb68fbaabcd04a1e62117fb771c514c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 29 Aug 2019 18:58:09 +0200 Subject: [PATCH 1330/2595] updates --- Dockerfile | 23 +++++++++++++++++++++++ utils/utils.py | 2 +- 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..ddf576f5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +# Start from Nvidia PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorch +FROM nvcr.io/nvidia/pytorch:19.07-py3 + +# Install dependencies +RUN pip3 install -U -r requirements.txt + +# Move file into container +# RUN mv 1047.tif ./1047.tif + +# Move model into container +# RUN mv yolov3-spp.pt ./weights + + +# --------------------------------------------------- Extras Below --------------------------------------------------- + +# Build container +# sudo docker image prune -a && sudo docker build -t friendlyhello . && sudo docker tag friendlyhello ultralytics/yolov3:v0 + +# Run container +# time sudo docker run -it --memory=8g --cpus=4 ultralytics/yolov3:v0 bash -c './run.sh /1047.tif /tmp && cat /tmp/1047.tif.txt' + +# Push container to https://hub.docker.com/u/ultralytics +# sudo docker push ultralytics/xview:v30 \ No newline at end of file diff --git a/utils/utils.py b/utils/utils.py index c89b3d03..93653786 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -291,7 +291,7 @@ def wh_iou(box1, box2): class FocalLoss(nn.Module): # Wraps focal loss around existing loss_fcn() https://arxiv.org/pdf/1708.02002.pdf # i.e. criteria = FocalLoss(nn.BCEWithLogitsLoss(), gamma=2.5) - def __init__(self, loss_fcn, alpha=1, gamma=2, reduction='mean'): + def __init__(self, loss_fcn, alpha=1, gamma=0.5, reduction='mean'): super(FocalLoss, self).__init__() loss_fcn.reduction = 'none' # required to apply FL to each element self.loss_fcn = loss_fcn From fb3bdb937236419bbc6648d794b287f876204ab2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 29 Aug 2019 19:02:42 +0200 Subject: [PATCH 1331/2595] weight_decay fix --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index ddf576f5..aa222b88 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM nvcr.io/nvidia/pytorch:19.07-py3 # Install dependencies -RUN pip3 install -U -r requirements.txt +RUN pip install -U -r requirements.txt # Move file into container # RUN mv 1047.tif ./1047.tif @@ -14,7 +14,7 @@ RUN pip3 install -U -r requirements.txt # --------------------------------------------------- Extras Below --------------------------------------------------- # Build container -# sudo docker image prune -a && sudo docker build -t friendlyhello . && sudo docker tag friendlyhello ultralytics/yolov3:v0 +# sudo docker image prune -af -y && sudo docker build -t friendlyhello . && sudo docker tag friendlyhello ultralytics/yolov3:v0 # Run container # time sudo docker run -it --memory=8g --cpus=4 ultralytics/yolov3:v0 bash -c './run.sh /1047.tif /tmp && cat /tmp/1047.tif.txt' From dc9095ac5b0e17c65a25b8ec710740cc466b82c4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 29 Aug 2019 19:57:08 +0200 Subject: [PATCH 1332/2595] updates --- Dockerfile | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index aa222b88..658bc3bd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,19 @@ # Start from Nvidia PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorch FROM nvcr.io/nvidia/pytorch:19.07-py3 -# Install dependencies -RUN pip install -U -r requirements.txt +# Create working directory +RUN mkdir -p /usr/src/app +WORKDIR /usr/src/app -# Move file into container -# RUN mv 1047.tif ./1047.tif +# Copy contents +COPY . /usr/src/app + +# Install dependencies +# RUN pip install -U -r requirements.txt +RUN conda update -n base -c defaults conda +RUN conda install -y -c anaconda future numpy opencv matplotlib tqdm pillow +RUN conda install -y -c conda-forge scikit-image tensorboard pycocotools +# conda install pytorch torchvision -c pytorch # Move model into container # RUN mv yolov3-spp.pt ./weights From 6c4a855d98a6a2f528ebde41d9af141d4fe179bd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 29 Aug 2019 20:13:29 +0200 Subject: [PATCH 1333/2595] weight_decay fix --- Dockerfile | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 658bc3bd..0f9a8b89 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,11 +8,11 @@ WORKDIR /usr/src/app # Copy contents COPY . /usr/src/app -# Install dependencies +# Install dependencies (pip or conda) # RUN pip install -U -r requirements.txt -RUN conda update -n base -c defaults conda -RUN conda install -y -c anaconda future numpy opencv matplotlib tqdm pillow -RUN conda install -y -c conda-forge scikit-image tensorboard pycocotools +# RUN conda update -n base -c defaults conda +# RUN conda install -y -c anaconda future numpy opencv matplotlib tqdm pillow +# RUN conda install -y -c conda-forge scikit-image tensorboard pycocotools # conda install pytorch torchvision -c pytorch # Move model into container @@ -22,10 +22,14 @@ RUN conda install -y -c conda-forge scikit-image tensorboard pycocotools # --------------------------------------------------- Extras Below --------------------------------------------------- # Build container +# rm -rf yolov3 # Warning: remove existing +# git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 detect.py # sudo docker image prune -af -y && sudo docker build -t friendlyhello . && sudo docker tag friendlyhello ultralytics/yolov3:v0 # Run container # time sudo docker run -it --memory=8g --cpus=4 ultralytics/yolov3:v0 bash -c './run.sh /1047.tif /tmp && cat /tmp/1047.tif.txt' +# time sudo docker run -it --memory=8g --cpus=4 ultralytics/yolov3:v0 bash -c 'python3 detect.py' + # Push container to https://hub.docker.com/u/ultralytics # sudo docker push ultralytics/xview:v30 \ No newline at end of file From d6dd9645e92252d4bb6d1607877101e28c5cb8ed Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 29 Aug 2019 20:14:17 +0200 Subject: [PATCH 1334/2595] updates --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 0f9a8b89..83984224 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,7 +24,7 @@ COPY . /usr/src/app # Build container # rm -rf yolov3 # Warning: remove existing # git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 detect.py -# sudo docker image prune -af -y && sudo docker build -t friendlyhello . && sudo docker tag friendlyhello ultralytics/yolov3:v0 +# sudo docker image prune -af && sudo docker build -t friendlyhello . && sudo docker tag friendlyhello ultralytics/yolov3:v0 # Run container # time sudo docker run -it --memory=8g --cpus=4 ultralytics/yolov3:v0 bash -c './run.sh /1047.tif /tmp && cat /tmp/1047.tif.txt' From c27d8d69a6386ae7c3aec9be08604bbc66b81e2f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 29 Aug 2019 20:19:05 +0200 Subject: [PATCH 1335/2595] updates --- Dockerfile | 4 +--- requirements.txt | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 83984224..fcec3cde 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,9 +27,7 @@ COPY . /usr/src/app # sudo docker image prune -af && sudo docker build -t friendlyhello . && sudo docker tag friendlyhello ultralytics/yolov3:v0 # Run container -# time sudo docker run -it --memory=8g --cpus=4 ultralytics/yolov3:v0 bash -c './run.sh /1047.tif /tmp && cat /tmp/1047.tif.txt' - -# time sudo docker run -it --memory=8g --cpus=4 ultralytics/yolov3:v0 bash -c 'python3 detect.py' +# time sudo nvidia-docker run ultralytics/yolov3:v0 python3 detect.py # Push container to https://hub.docker.com/u/ultralytics # sudo docker push ultralytics/xview:v30 \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index efeae3cf..33daa707 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ # pip3 install -U -r requirements.txt numpy opencv-python -torch >= 1.1.0 +torch >= 1.2 matplotlib pycocotools tqdm From 3c56c07f1e8e5143a0a5e17b3d1a768afd703368 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 31 Aug 2019 13:21:15 +0200 Subject: [PATCH 1336/2595] weight_decay fix --- utils/gcp.sh | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 95dbf47e..5c66b565 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -4,14 +4,12 @@ rm -rf sample_data yolov3 darknet apex coco cocoapi knife knifec git clone https://github.com/ultralytics/yolov3 git clone https://github.com/AlexeyAB/darknet && cd darknet && make GPU=1 CUDNN=1 CUDNN_HALF=1 OPENCV=1 && wget -c https://pjreddie.com/media/files/darknet53.conv.74 && cd .. -git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex -#git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 +# git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex +# git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 sudo conda install -y -c conda-forge scikit-image tensorboard pycocotools python3 -c " from yolov3.utils.google_utils import gdrive_download -gdrive_download('1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO','coco.zip') -gdrive_download('1GrFcTIIsKzOafZltUOS75RSahPrj2KyT','knife.zip') -gdrive_download('19sLJEGHlIAIFHcEftq4aLCw_tkWZmhD1','knifec.zip')" +gdrive_download('1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO','coco.zip')" sudo shutdown # Re-clone From fffb7fb99279d01383d4901f34c5a022b69800bc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 31 Aug 2019 13:39:14 +0200 Subject: [PATCH 1337/2595] weight_decay fix --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index fcec3cde..7ed34860 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Start from Nvidia PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorch -FROM nvcr.io/nvidia/pytorch:19.07-py3 +FROM nvcr.io/nvidia/pytorch:19.08-py3 # Create working directory RUN mkdir -p /usr/src/app From 975963f76230ae2ed1a747e8026b73b5d1b67981 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 31 Aug 2019 13:42:28 +0200 Subject: [PATCH 1338/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 177fea48..4f768938 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -124,7 +124,7 @@ class LoadWebcam: # for inference pipe = 0 # local camera # pipe = 'rtsp://192.168.1.64/1' # IP camera # pipe = 'rtsp://username:password@192.168.1.64/1' # IP camera with login - pipe = 'rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa' # IP traffic camera + # pipe = 'rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa' # IP traffic camera # pipe = 'http://wmccpinetop.axiscam.net/mjpg/video.mjpg' # IP golf camera # https://answers.opencv.org/question/215996/changing-gstreamer-pipeline-to-opencv-in-pythonsolved/ From 478303fbe8d12cfba3de568eff3d31ff50eb23f0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 31 Aug 2019 14:53:17 +0200 Subject: [PATCH 1339/2595] weight_decay fix --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7ed34860..e90b3c04 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,10 +24,10 @@ COPY . /usr/src/app # Build container # rm -rf yolov3 # Warning: remove existing # git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 detect.py -# sudo docker image prune -af && sudo docker build -t friendlyhello . && sudo docker tag friendlyhello ultralytics/yolov3:v0 +# sudo docker image prune -af && sudo docker build -t ultralytics/yolov3:v0 . # Run container # time sudo nvidia-docker run ultralytics/yolov3:v0 python3 detect.py # Push container to https://hub.docker.com/u/ultralytics -# sudo docker push ultralytics/xview:v30 \ No newline at end of file +# sudo docker push ultralytics/xview:v30 From cfb0b7e426c664cd3d62eeb771d63f54ba85c12a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 31 Aug 2019 17:42:09 +0200 Subject: [PATCH 1340/2595] updates --- cfg/yolov3-tiny-1cls.cfg | 182 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 cfg/yolov3-tiny-1cls.cfg diff --git a/cfg/yolov3-tiny-1cls.cfg b/cfg/yolov3-tiny-1cls.cfg new file mode 100644 index 00000000..b441eae2 --- /dev/null +++ b/cfg/yolov3-tiny-1cls.cfg @@ -0,0 +1,182 @@ +[net] +# Testing +batch=1 +subdivisions=1 +# Training +# batch=64 +# subdivisions=2 +width=416 +height=416 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=16 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=1 + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +########### + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=18 +activation=linear + + + +[yolo] +mask = 3,4,5 +anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 +classes=1 +num=6 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 8 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=18 +activation=linear + +[yolo] +mask = 0,1,2 +anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 +classes=1 +num=6 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 From 360a32811c2c2eee3f182c63f90abc328a809a7e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 31 Aug 2019 17:55:19 +0200 Subject: [PATCH 1341/2595] weight_decay fix --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index e85d9343..9a6567ba 100644 --- a/train.py +++ b/train.py @@ -258,8 +258,8 @@ def train(): # Compute loss loss, loss_items = compute_loss(pred, targets, model) - if torch.isnan(loss): - print('WARNING: nan loss detected, skipping batch ', loss_items) + if not torch.isfinite(loss): + print('WARNING: non-finite loss, skipping batch ', loss_items) continue # Scale loss by nominal batch_size of 64 From e926afd02be87b4d212c1cbbd4fb7267a1b9885e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 31 Aug 2019 18:58:30 +0200 Subject: [PATCH 1342/2595] updates --- detect.py | 66 ++++++++++++++++++++++--------------------------------- test.py | 4 ++-- 2 files changed, 28 insertions(+), 42 deletions(-) diff --git a/detect.py b/detect.py index dd482ab9..e3fcf92a 100644 --- a/detect.py +++ b/detect.py @@ -7,36 +7,30 @@ from utils.datasets import * from utils.utils import * -def detect(cfg, - data, - weights, - images='data/samples', # input folder - output='output', # output folder - fourcc='mp4v', # video codec - img_size=416, - conf_thres=0.5, - nms_thres=0.5, - save_txt=False, +def detect(save_txt=False, save_images=True): + out = opt.output + img_size = opt.img_size + # Initialize device = torch_utils.select_device(force_cpu=ONNX_EXPORT) torch.backends.cudnn.benchmark = False # set False for reproducible results - if os.path.exists(output): - shutil.rmtree(output) # delete output folder - os.makedirs(output) # make new output folder + if os.path.exists(out): + shutil.rmtree(out) # delete output folder + os.makedirs(out) # make new output folder # Initialize model if ONNX_EXPORT: s = (320, 192) # (320, 192) or (416, 256) or (608, 352) onnx model image size (height, width) - model = Darknet(cfg, s) + model = Darknet(opt.cfg, s) else: - model = Darknet(cfg, img_size) + model = Darknet(opt.cfg, img_size) # Load weights - if weights.endswith('.pt'): # pytorch format - model.load_state_dict(torch.load(weights, map_location=device)['model']) + if opt.weights.endswith('.pt'): # pytorch format + model.load_state_dict(torch.load(opt.weights, map_location=device)['model']) else: # darknet format - _ = load_darknet_weights(model, weights) + _ = load_darknet_weights(model, opt.weights) # Fuse Conv2d + BatchNorm2d layers # model.fuse() @@ -61,22 +55,22 @@ def detect(cfg, save_images = False dataloader = LoadWebcam(img_size=img_size, half=opt.half) else: - dataloader = LoadImages(images, img_size=img_size, half=opt.half) + dataloader = LoadImages(opt.input, img_size=img_size, half=opt.half) # Get classes and colors - classes = load_classes(parse_data_cfg(data)['names']) + classes = load_classes(parse_data_cfg(opt.data)['names']) colors = [[random.randint(0, 255) for _ in range(3)] for _ in range(len(classes))] # Run inference t0 = time.time() - for i, (path, img, im0, vid_cap) in enumerate(dataloader): + for path, img, im0, vid_cap in dataloader: t = time.time() - save_path = str(Path(output) / Path(path).name) + save_path = str(Path(out) / Path(path).name) # Get detections img = torch.from_numpy(img).unsqueeze(0).to(device) pred, _ = model(img) - det = non_max_suppression(pred.float(), conf_thres, nms_thres)[0] + det = non_max_suppression(pred.float(), opt.conf_thres, opt.nms_thres)[0] if det is not None and len(det) > 0: # Rescale boxes from 416 to true image size @@ -101,7 +95,7 @@ def detect(cfg, print('Done. (%.3fs)' % (time.time() - t)) if opt.webcam: # Show live webcam - cv2.imshow(weights, im0) + cv2.imshow(opt.weights, im0) if save_images: # Save image with detections if dataloader.mode == 'images': @@ -115,13 +109,13 @@ def detect(cfg, fps = vid_cap.get(cv2.CAP_PROP_FPS) width = int(vid_cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height = int(vid_cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) - vid_writer = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*fourcc), fps, (width, height)) + vid_writer = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*opt.fourcc), fps, (width, height)) vid_writer.write(im0) if save_images: - print('Results saved to %s' % os.getcwd() + os.sep + output) - if platform == 'darwin': # macos - os.system('open ' + output + ' ' + save_path) + print('Results saved to %s' % os.getcwd() + os.sep + out) + if platform == 'darwin': # MacOS + os.system('open ' + out + ' ' + save_path) print('Done. (%.3fs)' % (time.time() - t0)) @@ -131,24 +125,16 @@ if __name__ == '__main__': parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') - parser.add_argument('--images', type=str, default='data/samples', help='path to images') + parser.add_argument('--input', type=str, default='data/samples', help='input folder') # input folder + parser.add_argument('--output', type=str, default='output', help='output folder') # output folder parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.3, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') - parser.add_argument('--fourcc', type=str, default='mp4v', help='fourcc output video codec (verify ffmpeg support)') - parser.add_argument('--output', type=str, default='output', help='specifies the output path for images and videos') + parser.add_argument('--fourcc', type=str, default='mp4v', help='output video codec (verify ffmpeg support)') parser.add_argument('--half', action='store_true', help='half precision FP16 inference') parser.add_argument('--webcam', action='store_true', help='use webcam') opt = parser.parse_args() print(opt) with torch.no_grad(): - detect(opt.cfg, - opt.data, - opt.weights, - images=opt.images, - img_size=opt.img_size, - conf_thres=opt.conf_thres, - nms_thres=opt.nms_thres, - fourcc=opt.fourcc, - output=opt.output) + detect() diff --git a/test.py b/test.py index b638a22e..be4cf627 100644 --- a/test.py +++ b/test.py @@ -195,15 +195,15 @@ def test(cfg, if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') - parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') + parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') + parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') parser.add_argument('--save-json', action='store_true', help='save a cocoapi-compatible JSON results file') - parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') opt = parser.parse_args() print(opt) From 0a725a4bad45195ec5f94af01bbcc74b750658e1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 31 Aug 2019 19:11:59 +0200 Subject: [PATCH 1343/2595] updates --- detect.py | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/detect.py b/detect.py index e3fcf92a..9f7001c3 100644 --- a/detect.py +++ b/detect.py @@ -7,24 +7,19 @@ from utils.datasets import * from utils.utils import * -def detect(save_txt=False, - save_images=True): +def detect(save_txt=False, save_images=True): + img_size = (320, 192) if ONNX_EXPORT else opt.img_size # (320, 192) or (416, 256) or (608, 352) for (height, width) out = opt.output - img_size = opt.img_size # Initialize device = torch_utils.select_device(force_cpu=ONNX_EXPORT) - torch.backends.cudnn.benchmark = False # set False for reproducible results + torch.backends.cudnn.benchmark = False # set False to speed up variable image size inference if os.path.exists(out): shutil.rmtree(out) # delete output folder os.makedirs(out) # make new output folder # Initialize model - if ONNX_EXPORT: - s = (320, 192) # (320, 192) or (416, 256) or (608, 352) onnx model image size (height, width) - model = Darknet(opt.cfg, s) - else: - model = Darknet(opt.cfg, img_size) + model = Darknet(opt.cfg, img_size) # Load weights if opt.weights.endswith('.pt'): # pytorch format @@ -40,7 +35,7 @@ def detect(save_txt=False, # Export mode if ONNX_EXPORT: - img = torch.zeros((1, 3, s[0], s[1])) + img = torch.zeros((1, 3) + img_size) # (1, 3, 320, 192) torch.onnx.export(model, img, 'weights/export.onnx', verbose=True) return From 80516dd7580c061c5d4c4f8eecf61b0003ce570f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 31 Aug 2019 19:22:53 +0200 Subject: [PATCH 1344/2595] updates --- detect.py | 22 +++++++++++----------- utils/datasets.py | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/detect.py b/detect.py index 9f7001c3..8fec59d1 100644 --- a/detect.py +++ b/detect.py @@ -7,7 +7,7 @@ from utils.datasets import * from utils.utils import * -def detect(save_txt=False, save_images=True): +def detect(save_txt=False, save_img=True): img_size = (320, 192) if ONNX_EXPORT else opt.img_size # (320, 192) or (416, 256) or (608, 352) for (height, width) out = opt.output @@ -47,7 +47,7 @@ def detect(save_txt=False, save_images=True): # Set Dataloader vid_path, vid_writer = None, None if opt.webcam: - save_images = False + save_img = False dataloader = LoadWebcam(img_size=img_size, half=opt.half) else: dataloader = LoadImages(opt.input, img_size=img_size, half=opt.half) @@ -67,8 +67,8 @@ def detect(save_txt=False, save_images=True): pred, _ = model(img) det = non_max_suppression(pred.float(), opt.conf_thres, opt.nms_thres)[0] - if det is not None and len(det) > 0: - # Rescale boxes from 416 to true image size + if det is not None and len(det): + # Rescale boxes from img_size to im0 size det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round() # Print results to screen @@ -77,22 +77,22 @@ def detect(save_txt=False, save_images=True): n = (det[:, -1] == c).sum() print('%g %ss' % (n, classes[int(c)]), end=', ') - # Draw bounding boxes and labels of detections - for *xyxy, conf, cls_conf, cls in det: + # Write results + for *xyxy, conf, _, cls in det: if save_txt: # Write to file with open(save_path + '.txt', 'a') as file: file.write(('%g ' * 6 + '\n') % (*xyxy, cls, conf)) - # Add bbox to the image - label = '%s %.2f' % (classes[int(cls)], conf) - plot_one_box(xyxy, im0, label=label, color=colors[int(cls)]) + if save_img: # Add bbox to image + label = '%s %.2f' % (classes[int(cls)], conf) + plot_one_box(xyxy, im0, label=label, color=colors[int(cls)]) print('Done. (%.3fs)' % (time.time() - t)) if opt.webcam: # Show live webcam cv2.imshow(opt.weights, im0) - if save_images: # Save image with detections + if save_img: # Save image with detections if dataloader.mode == 'images': cv2.imwrite(save_path, im0) else: @@ -107,7 +107,7 @@ def detect(save_txt=False, save_images=True): vid_writer = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*opt.fourcc), fps, (width, height)) vid_writer.write(im0) - if save_images: + if save_img: print('Results saved to %s' % os.getcwd() + os.sep + out) if platform == 'darwin': # MacOS os.system('open ' + out + ' ' + save_path) diff --git a/utils/datasets.py b/utils/datasets.py index 4f768938..7c24a0e8 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -162,7 +162,7 @@ class LoadWebcam: # for inference break # Print - assert ret_val, 'Webcam Error' + assert ret_val, 'Camera Error %s' % self.pipe img_path = 'webcam_%g.jpg' % self.count print('webcam %g: ' % self.count, end='') From 38a3c7ff010138b17c8a4ff9dd60cc680da6a309 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 31 Aug 2019 19:22:53 +0200 Subject: [PATCH 1345/2595] updates Signed-off-by: Glenn Jocher --- README.md | 2 +- detect.py | 35 ++++++++++++++++++----------------- utils/datasets.py | 7 ++++--- 3 files changed, 23 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index d95d8514..d587f282 100755 --- a/README.md +++ b/README.md @@ -104,7 +104,7 @@ V100 x2 | 64 (64x1) | 150 | 13 min | $0.36 ## Webcam -`python3 detect.py --webcam` shows a live webcam feed. +`python3 detect.py --source 0` shows a live webcam feed. # Pretrained Weights diff --git a/detect.py b/detect.py index 9f7001c3..194f166e 100644 --- a/detect.py +++ b/detect.py @@ -7,8 +7,9 @@ from utils.datasets import * from utils.utils import * -def detect(save_txt=False, save_images=True): +def detect(save_txt=False, save_img=True, stream_img=False): img_size = (320, 192) if ONNX_EXPORT else opt.img_size # (320, 192) or (416, 256) or (608, 352) for (height, width) + webcam = opt.source == '0' or opt.source.startswith('rtsp') or opt.source.startswith('http') out = opt.output # Initialize @@ -46,11 +47,12 @@ def detect(save_txt=False, save_images=True): # Set Dataloader vid_path, vid_writer = None, None - if opt.webcam: - save_images = False - dataloader = LoadWebcam(img_size=img_size, half=opt.half) + if webcam: + save_img = False + stream_img = True + dataloader = LoadWebcam(opt.source, img_size=img_size, half=opt.half) else: - dataloader = LoadImages(opt.input, img_size=img_size, half=opt.half) + dataloader = LoadImages(opt.source, img_size=img_size, half=opt.half) # Get classes and colors classes = load_classes(parse_data_cfg(opt.data)['names']) @@ -67,8 +69,8 @@ def detect(save_txt=False, save_images=True): pred, _ = model(img) det = non_max_suppression(pred.float(), opt.conf_thres, opt.nms_thres)[0] - if det is not None and len(det) > 0: - # Rescale boxes from 416 to true image size + if det is not None and len(det): + # Rescale boxes from img_size to im0 size det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round() # Print results to screen @@ -77,22 +79,22 @@ def detect(save_txt=False, save_images=True): n = (det[:, -1] == c).sum() print('%g %ss' % (n, classes[int(c)]), end=', ') - # Draw bounding boxes and labels of detections - for *xyxy, conf, cls_conf, cls in det: + # Write results + for *xyxy, conf, _, cls in det: if save_txt: # Write to file with open(save_path + '.txt', 'a') as file: file.write(('%g ' * 6 + '\n') % (*xyxy, cls, conf)) - # Add bbox to the image - label = '%s %.2f' % (classes[int(cls)], conf) - plot_one_box(xyxy, im0, label=label, color=colors[int(cls)]) + if save_img or stream_img: # Add bbox to image + label = '%s %.2f' % (classes[int(cls)], conf) + plot_one_box(xyxy, im0, label=label, color=colors[int(cls)]) print('Done. (%.3fs)' % (time.time() - t)) - if opt.webcam: # Show live webcam + if stream_img: # Stream results cv2.imshow(opt.weights, im0) - if save_images: # Save image with detections + if save_img: # Save image with detections if dataloader.mode == 'images': cv2.imwrite(save_path, im0) else: @@ -107,7 +109,7 @@ def detect(save_txt=False, save_images=True): vid_writer = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*opt.fourcc), fps, (width, height)) vid_writer.write(im0) - if save_images: + if save_img: print('Results saved to %s' % os.getcwd() + os.sep + out) if platform == 'darwin': # MacOS os.system('open ' + out + ' ' + save_path) @@ -120,14 +122,13 @@ if __name__ == '__main__': parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') - parser.add_argument('--input', type=str, default='data/samples', help='input folder') # input folder + parser.add_argument('--source', type=str, default='0', help='source') # input file/folder, 0 for webcam parser.add_argument('--output', type=str, default='output', help='output folder') # output folder parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.3, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') parser.add_argument('--fourcc', type=str, default='mp4v', help='output video codec (verify ffmpeg support)') parser.add_argument('--half', action='store_true', help='half precision FP16 inference') - parser.add_argument('--webcam', action='store_true', help='use webcam') opt = parser.parse_args() print(opt) diff --git a/utils/datasets.py b/utils/datasets.py index 4f768938..4641d3c7 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -117,11 +117,12 @@ class LoadImages: # for inference class LoadWebcam: # for inference - def __init__(self, img_size=416, half=False): + def __init__(self, pipe=0, img_size=416, half=False): self.img_size = img_size self.half = half # half precision fp16 images - pipe = 0 # local camera + if pipe == '0': + pipe = 0 # local camera # pipe = 'rtsp://192.168.1.64/1' # IP camera # pipe = 'rtsp://username:password@192.168.1.64/1' # IP camera with login # pipe = 'rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa' # IP traffic camera @@ -162,7 +163,7 @@ class LoadWebcam: # for inference break # Print - assert ret_val, 'Webcam Error' + assert ret_val, 'Camera Error %s' % self.pipe img_path = 'webcam_%g.jpg' % self.count print('webcam %g: ' % self.count, end='') From 30a821106425b5d0b0caa1d9d0e0408e2fcf21f4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 31 Aug 2019 20:08:02 +0200 Subject: [PATCH 1346/2595] updates Signed-off-by: Glenn Jocher --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 194f166e..56194118 100644 --- a/detect.py +++ b/detect.py @@ -122,7 +122,7 @@ if __name__ == '__main__': parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') - parser.add_argument('--source', type=str, default='0', help='source') # input file/folder, 0 for webcam + parser.add_argument('--source', type=str, default='data/samples', help='source') # input file/folder, 0 for webcam parser.add_argument('--output', type=str, default='output', help='output folder') # output folder parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.3, help='object confidence threshold') From 4ec7cac0bf37fefa47d6320abd16ab039d79366b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 31 Aug 2019 20:34:14 +0200 Subject: [PATCH 1347/2595] updates Signed-off-by: Glenn Jocher --- README.md | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index d587f282..a6e1f357 100755 --- a/README.md +++ b/README.md @@ -91,20 +91,30 @@ V100 x2 | 64 (64x1) | 150 | 13 min | $0.36 # Inference -`detect.py` runs inference on all images **and videos** in the `data/samples` folder: +`detect.py` runs inference on any sources: + +```bash +python3 detect.py --source ... +``` + +- Image: `--source example.jpg` +- Video: `--source example.mp4` +- Directory: `--source dir/` +- Webcam: `--source 0` +- RTSP stream: `--source rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa` +- HTTP stream: `--source http://wmccpinetop.axiscam.net/mjpg/video.mjpg` + +To run a specific models: **YOLOv3:** `python3 detect.py --cfg cfg/yolov3.cfg --weights weights/yolov3.weights` - + **YOLOv3-tiny:** `python3 detect.py --cfg cfg/yolov3-tiny.cfg --weights weights/yolov3-tiny.weights` - + **YOLOv3-SPP:** `python3 detect.py --cfg cfg/yolov3-spp.cfg --weights weights/yolov3-spp.weights` - + -## Webcam - -`python3 detect.py --source 0` shows a live webcam feed. # Pretrained Weights @@ -140,11 +150,7 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' `YOLOv3-SPP` | 52.4 | 56.5 | 60.7 (60.6) `YOLOv3-tiny` | 29.0 | 32.9 (33.1) | 35.5 -``` bash -# install pycocotools -git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 -cd yolov3 - +```bash python3 test.py --save-json --img-size 608 Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', img_size=608, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='weights/yolov3-spp.weights') Using CUDA device0 _CudaDeviceProperties(name='Tesla T4', total_memory=15079MB) From 62f70712b6ca4ee6d0650e13074189724c1e551f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 31 Aug 2019 20:35:21 +0200 Subject: [PATCH 1348/2595] updates Signed-off-by: Glenn Jocher --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a6e1f357..377ed981 100755 --- a/README.md +++ b/README.md @@ -97,8 +97,8 @@ V100 x2 | 64 (64x1) | 150 | 13 min | $0.36 python3 detect.py --source ... ``` -- Image: `--source example.jpg` -- Video: `--source example.mp4` +- Image: `--source file.jpg` +- Video: `--source file.mp4` - Directory: `--source dir/` - Webcam: `--source 0` - RTSP stream: `--source rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa` From 516ca6c4fa51433aa8ba12d200b665a351144165 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 31 Aug 2019 20:40:27 +0200 Subject: [PATCH 1349/2595] updates Signed-off-by: Glenn Jocher --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 377ed981..933f9452 100755 --- a/README.md +++ b/README.md @@ -107,13 +107,13 @@ python3 detect.py --source ... To run a specific models: **YOLOv3:** `python3 detect.py --cfg cfg/yolov3.cfg --weights weights/yolov3.weights` - + **YOLOv3-tiny:** `python3 detect.py --cfg cfg/yolov3-tiny.cfg --weights weights/yolov3-tiny.weights` - + **YOLOv3-SPP:** `python3 detect.py --cfg cfg/yolov3-spp.cfg --weights weights/yolov3-spp.weights` - + # Pretrained Weights From 7ea0178a6c364fb5da5508de609975c927e6a2c7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 31 Aug 2019 21:19:02 +0200 Subject: [PATCH 1350/2595] updates Signed-off-by: Glenn Jocher --- detect.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/detect.py b/detect.py index 56194118..3e17e254 100644 --- a/detect.py +++ b/detect.py @@ -54,6 +54,14 @@ def detect(save_txt=False, save_img=True, stream_img=False): else: dataloader = LoadImages(opt.source, img_size=img_size, half=opt.half) + # Attempt stream_img: + if stream_img: + try: + cv2.imshow('', np.zeros((480, 640, 3))) + cv2.destroyAllWindows() + except: + stream_img = False # Possible SSH connection, do not stream + # Get classes and colors classes = load_classes(parse_data_cfg(opt.data)['names']) colors = [[random.randint(0, 255) for _ in range(3)] for _ in range(len(classes))] From c8c0660e6aee38b5c0666f715a97f6bae214e73f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 1 Sep 2019 12:15:43 +0200 Subject: [PATCH 1351/2595] updates Signed-off-by: Glenn Jocher --- utils/datasets.py | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/datasets.py b/utils/datasets.py index 4641d3c7..abf95658 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -137,6 +137,7 @@ class LoadWebcam: # for inference self.pipe = pipe self.cap = cv2.VideoCapture(pipe) # video capture object + self.cap.set(cv2.CAP_PROP_BUFFERSIZE, 3) # set buffer size def __iter__(self): self.count = -1 From 9251dfd6a5b94da52303d4b67eb16c8eb9ac48d6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 1 Sep 2019 16:28:25 +0200 Subject: [PATCH 1352/2595] updates Signed-off-by: Glenn Jocher --- utils/utils.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 93653786..f7905c8b 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -301,8 +301,7 @@ class FocalLoss(nn.Module): def forward(self, input, target): loss = self.loss_fcn(input, target) - pt = torch.exp(-loss) - loss *= self.alpha * (1 - pt) ** self.gamma + loss *= self.alpha * (1.000001 - torch.exp(-loss)) ** self.gamma # non-zero power for gradient stability if self.reduction == 'mean': return loss.mean() From b1f8267cc7454d18da0ca249bd883858ea9e6979 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 1 Sep 2019 16:32:38 +0200 Subject: [PATCH 1353/2595] updates Signed-off-by: Glenn Jocher --- utils/gcp.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 5c66b565..c1f157a2 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -3,8 +3,8 @@ # New VM rm -rf sample_data yolov3 darknet apex coco cocoapi knife knifec git clone https://github.com/ultralytics/yolov3 -git clone https://github.com/AlexeyAB/darknet && cd darknet && make GPU=1 CUDNN=1 CUDNN_HALF=1 OPENCV=1 && wget -c https://pjreddie.com/media/files/darknet53.conv.74 && cd .. -# git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex +# git clone https://github.com/AlexeyAB/darknet && cd darknet && make GPU=1 CUDNN=1 CUDNN_HALF=1 OPENCV=1 && wget -c https://pjreddie.com/media/files/darknet53.conv.74 && cd .. +git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex # git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 sudo conda install -y -c conda-forge scikit-image tensorboard pycocotools python3 -c " From 71938356c8481fd4dbeeecd242815cd09c1e3618 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 1 Sep 2019 17:36:42 +0200 Subject: [PATCH 1354/2595] updates Signed-off-by: Glenn Jocher --- detect.py | 8 -------- utils/gcp.sh | 2 +- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/detect.py b/detect.py index 3e17e254..56194118 100644 --- a/detect.py +++ b/detect.py @@ -54,14 +54,6 @@ def detect(save_txt=False, save_img=True, stream_img=False): else: dataloader = LoadImages(opt.source, img_size=img_size, half=opt.half) - # Attempt stream_img: - if stream_img: - try: - cv2.imshow('', np.zeros((480, 640, 3))) - cv2.destroyAllWindows() - except: - stream_img = False # Possible SSH connection, do not stream - # Get classes and colors classes = load_classes(parse_data_cfg(opt.data)['names']) colors = [[random.randint(0, 255) for _ in range(3)] for _ in range(len(classes))] diff --git a/utils/gcp.sh b/utils/gcp.sh index c1f157a2..f56d17ed 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -3,7 +3,7 @@ # New VM rm -rf sample_data yolov3 darknet apex coco cocoapi knife knifec git clone https://github.com/ultralytics/yolov3 -# git clone https://github.com/AlexeyAB/darknet && cd darknet && make GPU=1 CUDNN=1 CUDNN_HALF=1 OPENCV=1 && wget -c https://pjreddie.com/media/files/darknet53.conv.74 && cd .. +# git clone https://github.com/AlexeyAB/darknet && cd darknet && make GPU=1 CUDNN=1 CUDNN_HALF=1 OPENCV=0 && wget -c https://pjreddie.com/media/files/darknet53.conv.74 && cd .. git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex # git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 sudo conda install -y -c conda-forge scikit-image tensorboard pycocotools From 8f913ba82a79992067832747e1c28a3fc7d9c947 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 2 Sep 2019 11:59:13 +0200 Subject: [PATCH 1355/2595] updates Signed-off-by: Glenn Jocher --- train.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index 9a6567ba..21b8e23b 100644 --- a/train.py +++ b/train.py @@ -23,7 +23,7 @@ hyp = {'giou': 1.582, # giou loss gain 'obj': 21.35, # obj loss gain (*=80 for uBCE with 80 classes) 'obj_pw': 3.941, # obj BCELoss positive_weight 'iou_t': 0.2635, # iou training threshold - 'lr0': 0.002324, # initial learning rate + 'lr0': 0.002324, # initial learning rate (SGD=1E-3, Adam=9E-5) 'lrf': -4., # final LambdaLR learning rate = lr0 * (10 ** lrf) 'momentum': 0.97, # SGD momentum 'weight_decay': 0.0004569, # optimizer weight decay @@ -80,7 +80,7 @@ def train(): # optimizer = optim.Adam(pg0, lr=hyp['lr0']) # optimizer = AdaBound(pg0, lr=hyp['lr0'], final_lr=0.1) - optimizer = optim.SGD(pg0, lr=hyp['lr0'], momentum=hyp['momentum'], nesterov=True) + # optimizer = optim.SGD(pg0, lr=hyp['lr0'], momentum=hyp['momentum'], nesterov=True) optimizer.add_param_group({'params': pg1, 'weight_decay': hyp['weight_decay']}) # add pg1 with weight_decay del pg0, pg1 @@ -259,8 +259,8 @@ def train(): # Compute loss loss, loss_items = compute_loss(pred, targets, model) if not torch.isfinite(loss): - print('WARNING: non-finite loss, skipping batch ', loss_items) - continue + print('WARNING: non-finite loss, ending training ', loss_items) + return results # Scale loss by nominal batch_size of 64 loss *= batch_size / 64 @@ -378,6 +378,7 @@ if __name__ == '__main__': parser.add_argument('--weights', type=str, default='', help='initial weights') # i.e. weights/darknet.53.conv.74 parser.add_argument('--arc', type=str, default='defaultpw', help='yolo architecture') # defaultpw, uCE, uBCE parser.add_argument('--prebias', action='store_true', help='transfer-learn yolo biases prior to training') + parser.add_argument('--var', type=float, help='debug variable') opt = parser.parse_args() opt.weights = 'weights/last.pt' if opt.resume else opt.weights print(opt) From 32b54c81d53b432de50b60d12f1cd52a2d0f027b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 2 Sep 2019 12:09:00 +0200 Subject: [PATCH 1356/2595] updates Signed-off-by: Glenn Jocher --- models.py | 1 + 1 file changed, 1 insertion(+) diff --git a/models.py b/models.py index 20ef978d..773e31a4 100755 --- a/models.py +++ b/models.py @@ -302,6 +302,7 @@ def load_darknet_weights(self, weights, cutoff=-1): os.system('curl -f ' + url + ' -o ' + weights) except IOError: print(msg) + os.system('rm ' + weights) # remove partial downloads assert os.path.exists(weights), msg # download missing weights from Google Drive # Establish cutoffs From ea61b46b3173359164b29e983c7012059c9a5054 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 2 Sep 2019 14:02:08 +0200 Subject: [PATCH 1357/2595] updates Signed-off-by: Glenn Jocher --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 21b8e23b..996e48da 100644 --- a/train.py +++ b/train.py @@ -80,7 +80,7 @@ def train(): # optimizer = optim.Adam(pg0, lr=hyp['lr0']) # optimizer = AdaBound(pg0, lr=hyp['lr0'], final_lr=0.1) - # optimizer = optim.SGD(pg0, lr=hyp['lr0'], momentum=hyp['momentum'], nesterov=True) + optimizer = optim.SGD(pg0, lr=hyp['lr0'], momentum=hyp['momentum'], nesterov=True) optimizer.add_param_group({'params': pg1, 'weight_decay': hyp['weight_decay']}) # add pg1 with weight_decay del pg0, pg1 From 2877ac928694908c5bd0c8b0ac47d85ff20ceb66 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 2 Sep 2019 14:28:13 +0200 Subject: [PATCH 1358/2595] updates Signed-off-by: Glenn Jocher --- train.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index 996e48da..f967b67a 100644 --- a/train.py +++ b/train.py @@ -123,7 +123,8 @@ def train(): for p in optimizer.param_groups: # lower param count allows more aggressive training settings: i.e. SGD ~0.1 lr0, ~0.9 momentum p['lr'] *= 100 - p['momentum'] *= 0.9 + if p.get('momentum') is not None: # for SGD but not Adam + p['momentum'] *= 0.9 for p in model.parameters(): if opt.prebias and p.numel() == nf: # train (yolo biases) From bfe6d560c0f8c923b349f98adb9ddfd0d40bc040 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 2 Sep 2019 16:04:54 +0200 Subject: [PATCH 1359/2595] updates Signed-off-by: Glenn Jocher --- detect.py | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/detect.py b/detect.py index 56194118..2f3fb940 100644 --- a/detect.py +++ b/detect.py @@ -2,7 +2,7 @@ import argparse import time from sys import platform -from models import * +from models import * # set ONNX_EXPORT in models.py from utils.datasets import * from utils.utils import * @@ -14,7 +14,6 @@ def detect(save_txt=False, save_img=True, stream_img=False): # Initialize device = torch_utils.select_device(force_cpu=ONNX_EXPORT) - torch.backends.cudnn.benchmark = False # set False to speed up variable image size inference if os.path.exists(out): shutil.rmtree(out) # delete output folder os.makedirs(out) # make new output folder @@ -30,6 +29,7 @@ def detect(save_txt=False, save_img=True, stream_img=False): # Fuse Conv2d + BatchNorm2d layers # model.fuse() + # torch.backends.cudnn.benchmark = True # set True to speed up constant image size inference # Eval mode model.to(device).eval() @@ -50,9 +50,9 @@ def detect(save_txt=False, save_img=True, stream_img=False): if webcam: save_img = False stream_img = True - dataloader = LoadWebcam(opt.source, img_size=img_size, half=opt.half) + dataset = LoadWebcam(opt.source, img_size=img_size, half=opt.half) else: - dataloader = LoadImages(opt.source, img_size=img_size, half=opt.half) + dataset = LoadImages(opt.source, img_size=img_size, half=opt.half) # Get classes and colors classes = load_classes(parse_data_cfg(opt.data)['names']) @@ -60,7 +60,7 @@ def detect(save_txt=False, save_img=True, stream_img=False): # Run inference t0 = time.time() - for path, img, im0, vid_cap in dataloader: + for path, img, im0, vid_cap in dataset: t = time.time() save_path = str(Path(out) / Path(path).name) @@ -69,15 +69,15 @@ def detect(save_txt=False, save_img=True, stream_img=False): pred, _ = model(img) det = non_max_suppression(pred.float(), opt.conf_thres, opt.nms_thres)[0] + s = '%gx%g ' % img.shape[2:] # string to print image size if det is not None and len(det): # Rescale boxes from img_size to im0 size det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round() - # Print results to screen - print('%gx%g ' % img.shape[2:], end='') # print image size + # Print results for c in det[:, -1].unique(): - n = (det[:, -1] == c).sum() - print('%g %ss' % (n, classes[int(c)]), end=', ') + n = (det[:, -1] == c).sum() # detections per class + s += '%g %ss' % (n, classes[int(c)]) # add to string # Write results for *xyxy, conf, _, cls in det: @@ -89,13 +89,15 @@ def detect(save_txt=False, save_img=True, stream_img=False): label = '%s %.2f' % (classes[int(cls)], conf) plot_one_box(xyxy, im0, label=label, color=colors[int(cls)]) - print('Done. (%.3fs)' % (time.time() - t)) + print('%sDone. (%.3fs)' % (s, time.time() - t)) - if stream_img: # Stream results + # Stream results + if stream_img: cv2.imshow(opt.weights, im0) - if save_img: # Save image with detections - if dataloader.mode == 'images': + # Save results (image with detections) + if save_img: + if dataset.mode == 'images': cv2.imwrite(save_path, im0) else: if vid_path != save_path: # new video From 39c198579f3099f6a48e7c8fb2402f37919dc066 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 2 Sep 2019 16:09:05 +0200 Subject: [PATCH 1360/2595] updates Signed-off-by: Glenn Jocher --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 2f3fb940..00e4c977 100644 --- a/detect.py +++ b/detect.py @@ -111,7 +111,7 @@ def detect(save_txt=False, save_img=True, stream_img=False): vid_writer = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*opt.fourcc), fps, (width, height)) vid_writer.write(im0) - if save_img: + if save_txt or save_img: print('Results saved to %s' % os.getcwd() + os.sep + out) if platform == 'darwin': # MacOS os.system('open ' + out + ' ' + save_path) From 1e4351c4a2389533545afb16a3da548458c9503a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 2 Sep 2019 16:11:55 +0200 Subject: [PATCH 1361/2595] updates Signed-off-by: Glenn Jocher --- detect.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index 00e4c977..43c76761 100644 --- a/detect.py +++ b/detect.py @@ -69,7 +69,7 @@ def detect(save_txt=False, save_img=True, stream_img=False): pred, _ = model(img) det = non_max_suppression(pred.float(), opt.conf_thres, opt.nms_thres)[0] - s = '%gx%g ' % img.shape[2:] # string to print image size + s = '%gx%g ' % img.shape[2:] # print string if det is not None and len(det): # Rescale boxes from img_size to im0 size det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round() @@ -77,7 +77,7 @@ def detect(save_txt=False, save_img=True, stream_img=False): # Print results for c in det[:, -1].unique(): n = (det[:, -1] == c).sum() # detections per class - s += '%g %ss' % (n, classes[int(c)]) # add to string + s += '%g %ss, ' % (n, classes[int(c)]) # add to string # Write results for *xyxy, conf, _, cls in det: From 109173d55519d0497d48249d60652ce4124dc0d5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 2 Sep 2019 16:22:13 +0200 Subject: [PATCH 1362/2595] updates Signed-off-by: Glenn Jocher --- detect.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/detect.py b/detect.py index 43c76761..f48d1c48 100644 --- a/detect.py +++ b/detect.py @@ -9,8 +9,8 @@ from utils.utils import * def detect(save_txt=False, save_img=True, stream_img=False): img_size = (320, 192) if ONNX_EXPORT else opt.img_size # (320, 192) or (416, 256) or (608, 352) for (height, width) - webcam = opt.source == '0' or opt.source.startswith('rtsp') or opt.source.startswith('http') - out = opt.output + out, source, weights, half = opt.output, opt.source, opt.weights, opt.half + webcam = source == '0' or source.startswith('rtsp') or source.startswith('http') # Initialize device = torch_utils.select_device(force_cpu=ONNX_EXPORT) @@ -22,10 +22,10 @@ def detect(save_txt=False, save_img=True, stream_img=False): model = Darknet(opt.cfg, img_size) # Load weights - if opt.weights.endswith('.pt'): # pytorch format - model.load_state_dict(torch.load(opt.weights, map_location=device)['model']) + if weights.endswith('.pt'): # pytorch format + model.load_state_dict(torch.load(weights, map_location=device)['model']) else: # darknet format - _ = load_darknet_weights(model, opt.weights) + _ = load_darknet_weights(model, weights) # Fuse Conv2d + BatchNorm2d layers # model.fuse() @@ -41,8 +41,8 @@ def detect(save_txt=False, save_img=True, stream_img=False): return # Half precision - opt.half = opt.half and device.type != 'cpu' # half precision only supported on CUDA - if opt.half: + half = half and device.type != 'cpu' # half precision only supported on CUDA + if half: model.half() # Set Dataloader @@ -50,9 +50,9 @@ def detect(save_txt=False, save_img=True, stream_img=False): if webcam: save_img = False stream_img = True - dataset = LoadWebcam(opt.source, img_size=img_size, half=opt.half) + dataset = LoadWebcam(source, img_size=img_size, half=half) else: - dataset = LoadImages(opt.source, img_size=img_size, half=opt.half) + dataset = LoadImages(source, img_size=img_size, half=half) # Get classes and colors classes = load_classes(parse_data_cfg(opt.data)['names']) @@ -93,7 +93,7 @@ def detect(save_txt=False, save_img=True, stream_img=False): # Stream results if stream_img: - cv2.imshow(opt.weights, im0) + cv2.imshow(weights, im0) # Save results (image with detections) if save_img: From 0d5bf11fa5d1a5353149dda2b3d1712a815b3591 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 2 Sep 2019 16:41:41 +0200 Subject: [PATCH 1363/2595] updates Signed-off-by: Glenn Jocher --- detect.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index f48d1c48..9ee68453 100644 --- a/detect.py +++ b/detect.py @@ -7,7 +7,7 @@ from utils.datasets import * from utils.utils import * -def detect(save_txt=False, save_img=True, stream_img=False): +def detect(save_txt=False, save_img=False, stream_img=False): img_size = (320, 192) if ONNX_EXPORT else opt.img_size # (320, 192) or (416, 256) or (608, 352) for (height, width) out, source, weights, half = opt.output, opt.source, opt.weights, opt.half webcam = source == '0' or source.startswith('rtsp') or source.startswith('http') @@ -48,10 +48,10 @@ def detect(save_txt=False, save_img=True, stream_img=False): # Set Dataloader vid_path, vid_writer = None, None if webcam: - save_img = False stream_img = True dataset = LoadWebcam(source, img_size=img_size, half=half) else: + save_img = True dataset = LoadImages(source, img_size=img_size, half=half) # Get classes and colors From b76962771e1ab227b4e36a515d174379009ee7f0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 2 Sep 2019 20:53:49 +0200 Subject: [PATCH 1364/2595] updates Signed-off-by: Glenn Jocher --- models.py | 2 +- utils/datasets.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index 773e31a4..6982231c 100755 --- a/models.py +++ b/models.py @@ -88,7 +88,7 @@ def create_modules(module_defs, img_size, arc): elif arc == 'Fdefault': # Focal default no pw (28 cls, 21 obj, no pw) b = [-2.1, -1.8] elif arc == 'uFBCE': # unified FocalBCE (5120 obj, 80 classes) - b = [0, -3.5] + b = [0, -6.5] elif arc == 'uFCE': # unified FocalCE (64 cls, 1 background + 80 classes) b = [7, -0.1] diff --git a/utils/datasets.py b/utils/datasets.py index abf95658..166435b5 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -146,6 +146,7 @@ class LoadWebcam: # for inference def __next__(self): self.count += 1 if cv2.waitKey(1) == 27: # esc to quit + self.cap.release() cv2.destroyAllWindows() raise StopIteration From 447292eb3606b3953f9c3ef836c17f63e432e168 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 3 Sep 2019 16:20:55 +0200 Subject: [PATCH 1365/2595] updates Signed-off-by: Glenn Jocher --- train.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/train.py b/train.py index f967b67a..ace1e41e 100644 --- a/train.py +++ b/train.py @@ -53,7 +53,6 @@ def train(): wdir = 'weights' + os.sep # weights dir last = wdir + 'last.pt' best = wdir + 'best.pt' - device = torch_utils.select_device(apex=mixed_precision) multi_scale = opt.multi_scale if multi_scale: @@ -383,6 +382,7 @@ if __name__ == '__main__': opt = parser.parse_args() opt.weights = 'weights/last.pt' if opt.resume else opt.weights print(opt) + device = torch_utils.select_device(apex=mixed_precision) tb_writer = None if not opt.evolve: # Train normally @@ -399,7 +399,6 @@ if __name__ == '__main__': create_backbone('weights/last.pt') # saved results as backbone.pt opt.weights = 'weights/backbone.pt' # assign backbone opt.prebias = False # disable prebias - print(opt) # display options train() # train normally From 976eea04bd3b602acaf09d9faa075c9a390c86eb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 3 Sep 2019 17:23:59 +0200 Subject: [PATCH 1366/2595] updates Signed-off-by: Glenn Jocher --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 6982231c..abca7e61 100755 --- a/models.py +++ b/models.py @@ -90,7 +90,7 @@ def create_modules(module_defs, img_size, arc): elif arc == 'uFBCE': # unified FocalBCE (5120 obj, 80 classes) b = [0, -6.5] elif arc == 'uFCE': # unified FocalCE (64 cls, 1 background + 80 classes) - b = [7, -0.1] + b = [7.7, -1.1] bias = module_list[-1][0].bias.view(len(mask), -1) # 255 to 3x85 bias[:, 4] += b[0] - bias[:, 4].mean() # obj From 6cd98c46d8ca790317bb08a281700eccd318ecb2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Sep 2019 09:20:03 +0200 Subject: [PATCH 1367/2595] updates Signed-off-by: Glenn Jocher --- train.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index ace1e41e..a657d378 100644 --- a/train.py +++ b/train.py @@ -66,6 +66,10 @@ def train(): train_path = data_dict['train'] nc = int(data_dict['classes']) # number of classes + # Remove previous results + for f in glob.glob('*_batch*.jpg') + glob.glob('results.txt'): + os.remove(f) + # Initialize model model = Darknet(cfg, arc=opt.arc).to(device) @@ -183,10 +187,6 @@ def train(): pin_memory=True, collate_fn=dataset.collate_fn) - # Remove previous results - for f in glob.glob('*_batch*.jpg') + glob.glob('results.txt'): - os.remove(f) - # Start training model.nc = nc # attach number of classes to model model.arc = opt.arc # attach yolo architecture From 50a93e141c6612955be9c79ee28f4444ea4da439 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Sep 2019 10:05:42 +0200 Subject: [PATCH 1368/2595] updates Signed-off-by: Glenn Jocher --- requirements.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/requirements.txt b/requirements.txt index 33daa707..ee81adbc 100755 --- a/requirements.txt +++ b/requirements.txt @@ -11,7 +11,7 @@ Pillow # Equivalent conda commands ---------------------------------------------------- # conda update -n base -c defaults conda -# conda install -y -c anaconda future numpy opencv matplotlib tqdm pillow -# conda install -y -c conda-forge scikit-image tensorboard pycocotools -# conda install -y -c spyder-ide spyder-line-profiler -# conda install pytorch torchvision -c pytorch +# conda install -yc anaconda future numpy opencv matplotlib tqdm pillow +# conda install -yc conda-forge scikit-image tensorboard pycocotools +# conda install -yc spyder-ide spyder-line-profiler +# conda install -yc pytorch pytorch torchvision From 8da4695fd3e1ec8bd333885331731304e10db5e5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Sep 2019 12:59:50 +0200 Subject: [PATCH 1369/2595] updates Signed-off-by: Glenn Jocher --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index e90b3c04..c1a259e2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -30,4 +30,4 @@ COPY . /usr/src/app # time sudo nvidia-docker run ultralytics/yolov3:v0 python3 detect.py # Push container to https://hub.docker.com/u/ultralytics -# sudo docker push ultralytics/xview:v30 +# sudo docker push ultralytics/yolov3:v0 From fd79bd474b000d4cb163336c03f25494d193c281 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Sep 2019 13:11:17 +0200 Subject: [PATCH 1370/2595] updates Signed-off-by: Glenn Jocher --- Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Dockerfile b/Dockerfile index c1a259e2..231ab316 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,6 +15,9 @@ COPY . /usr/src/app # RUN conda install -y -c conda-forge scikit-image tensorboard pycocotools # conda install pytorch torchvision -c pytorch +# Install OpenCV with Gstreamer support +# ... + # Move model into container # RUN mv yolov3-spp.pt ./weights From 2e6ac2228a5477c81b2ff57b1ff8437be9b33616 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Sep 2019 14:08:39 +0200 Subject: [PATCH 1371/2595] updates Signed-off-by: Glenn Jocher --- Dockerfile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 231ab316..032a3946 100644 --- a/Dockerfile +++ b/Dockerfile @@ -30,7 +30,10 @@ COPY . /usr/src/app # sudo docker image prune -af && sudo docker build -t ultralytics/yolov3:v0 . # Run container -# time sudo nvidia-docker run ultralytics/yolov3:v0 python3 detect.py +# sudo nvidia-docker run --ipc=host ultralytics/yolov3:v0 python3 detect.py + +# Run container accesing local directory +# sudo nvidia-docker run --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco ultralytics/yolov3:v0 python3 train.py # Push container to https://hub.docker.com/u/ultralytics -# sudo docker push ultralytics/yolov3:v0 +# docker push ultralytics/yolov3:v0 From abbf8de12f2b3b4f181afb7a7397811c850de9e4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Sep 2019 14:32:42 +0200 Subject: [PATCH 1372/2595] updates Signed-off-by: Glenn Jocher --- utils/utils.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index f7905c8b..3ffc5272 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -556,8 +556,12 @@ def get_yolo_layers(model): def print_model_biases(model): # prints the bias neurons preceding each yolo layer print('\nModel Bias Summary (per output layer):') + multi_gpu = type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) for l in model.yolo_layers: # print pretrained biases - b = model.module_list[l - 1][0].bias.view(3, -1) # bias 3x85 + if multi_gpu: + b = model.module.module_list[l - 1][0].bias.view(3, -1) # bias 3x85 + else: + b = model.module_list[l - 1][0].bias.view(3, -1) # bias 3x85 print('regression: %5.2f+/-%-5.2f ' % (b[:, :4].mean(), b[:, :4].std()), 'objectness: %5.2f+/-%-5.2f ' % (b[:, 4].mean(), b[:, 4].std()), 'classification: %5.2f+/-%-5.2f' % (b[:, 5:].mean(), b[:, 5:].std())) From 24f129894965c62be017252d6f93fb64fa5110ed Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Sep 2019 14:34:44 +0200 Subject: [PATCH 1373/2595] updates Signed-off-by: Glenn Jocher --- Dockerfile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 032a3946..ae589793 100644 --- a/Dockerfile +++ b/Dockerfile @@ -32,8 +32,11 @@ COPY . /usr/src/app # Run container # sudo nvidia-docker run --ipc=host ultralytics/yolov3:v0 python3 detect.py -# Run container accesing local directory +# Run container with local directory access # sudo nvidia-docker run --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco ultralytics/yolov3:v0 python3 train.py # Push container to https://hub.docker.com/u/ultralytics # docker push ultralytics/yolov3:v0 + +# Build and Push +# sudo docker build -t ultralytics/yolov3:v0 . && docker push ultralytics/yolov3:v0 From cca17f4d1e1c1e1ce4529619bef7dad0c1001e8a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Sep 2019 14:49:10 +0200 Subject: [PATCH 1374/2595] updates Signed-off-by: Glenn Jocher --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 9ee68453..b9215967 100644 --- a/detect.py +++ b/detect.py @@ -14,6 +14,7 @@ def detect(save_txt=False, save_img=False, stream_img=False): # Initialize device = torch_utils.select_device(force_cpu=ONNX_EXPORT) + torch.backends.cudnn.benchmark = False # set True to speed up constant image size inference if os.path.exists(out): shutil.rmtree(out) # delete output folder os.makedirs(out) # make new output folder @@ -29,7 +30,6 @@ def detect(save_txt=False, save_img=False, stream_img=False): # Fuse Conv2d + BatchNorm2d layers # model.fuse() - # torch.backends.cudnn.benchmark = True # set True to speed up constant image size inference # Eval mode model.to(device).eval() From 94234c80b2b27b52284743f6a10651ad551f23b6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Sep 2019 14:58:18 +0200 Subject: [PATCH 1375/2595] updates Signed-off-by: Glenn Jocher --- train.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index a657d378..3f30b539 100644 --- a/train.py +++ b/train.py @@ -202,10 +202,6 @@ def train(): model.train() print(('\n' + '%10s' * 8) % ('Epoch', 'gpu_mem', 'GIoU', 'obj', 'cls', 'total', 'targets', 'img_size')) - # Update scheduler - if epoch > 0: - scheduler.step() - # Freeze backbone at epoch 0, unfreeze at epoch 1 (optional) freeze_backbone = False if freeze_backbone and epoch < 2: @@ -286,6 +282,9 @@ def train(): # end batch ------------------------------------------------------------------------------------------------ + # Update scheduler + scheduler.step() + # Process epoch results final_epoch = epoch + 1 == epochs if opt.prebias: From 641996ecdf50cb14b1c2d4f9d44384fe0da6f8e0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Sep 2019 15:55:27 +0200 Subject: [PATCH 1376/2595] updates Signed-off-by: Glenn Jocher --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index ae589793..c5732ba0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -39,4 +39,4 @@ COPY . /usr/src/app # docker push ultralytics/yolov3:v0 # Build and Push -# sudo docker build -t ultralytics/yolov3:v0 . && docker push ultralytics/yolov3:v0 +# export tag=ultralytics/yolov3:v0 && sudo docker build -t $tag . && docker push $tag From 86692569bc92a4fec2797c9fe0a61219a8058866 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Sep 2019 02:13:39 +0200 Subject: [PATCH 1377/2595] updates Signed-off-by: Glenn Jocher --- Dockerfile | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index c5732ba0..62c003e7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,6 @@ # Start from Nvidia PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorch FROM nvcr.io/nvidia/pytorch:19.08-py3 -# Create working directory -RUN mkdir -p /usr/src/app -WORKDIR /usr/src/app - -# Copy contents -COPY . /usr/src/app - # Install dependencies (pip or conda) # RUN pip install -U -r requirements.txt # RUN conda update -n base -c defaults conda @@ -16,11 +9,25 @@ COPY . /usr/src/app # conda install pytorch torchvision -c pytorch # Install OpenCV with Gstreamer support -# ... +#WORKDIR /usr/src +#RUN pip uninstall -y opencv-python +#RUN apt-get update +#RUN apt-get install -y gstreamer1.0-python3-dbg-plugin-loader +## RUN apt-get install gstreamer1.0 +## RUN apt install -y ubuntu-restricted-extras +#RUN apt install -y libgstreamer1.0-dev +#RUN apt install -y libgstreamer-plugins-base1.0-dev +#RUN git clone https://github.com/opencv/opencv.git && cd opencv && git checkout 4.1.1 && mkdir build +#RUN git clone https://github.com/opencv/opencv_contrib.git && cd opencv_contrib && git checkout 4.1.1 +#RUN cd opencv/build && cmake ../ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules -D BUILD_opencv_python3=ON -D WITH_GSTREAMER=ON -D WITH_FFMPEG=OFF && make && make install +#RUN python3 -c "import cv2; print(cv2.getBuildInformation())" -# Move model into container -# RUN mv yolov3-spp.pt ./weights +# Create working directory +RUN mkdir -p /usr/src/app +WORKDIR /usr/src/app +# Copy contents +COPY . /usr/src/app # --------------------------------------------------- Extras Below --------------------------------------------------- @@ -34,6 +41,7 @@ COPY . /usr/src/app # Run container with local directory access # sudo nvidia-docker run --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco ultralytics/yolov3:v0 python3 train.py +# sudo nvidia-docker run --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco ultralytics/yolov3:v0 python3 train.py --batch-size 64 --accumulate 1 --img-size 320 --arc uFBCE --prebias --epochs 27 # Push container to https://hub.docker.com/u/ultralytics # docker push ultralytics/yolov3:v0 From b4b93be693ff35364d335c7364223321a71b4f6f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Sep 2019 03:09:16 +0200 Subject: [PATCH 1378/2595] updates Signed-off-by: Glenn Jocher --- Dockerfile | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 62c003e7..209b729e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -19,7 +19,17 @@ FROM nvcr.io/nvidia/pytorch:19.08-py3 #RUN apt install -y libgstreamer-plugins-base1.0-dev #RUN git clone https://github.com/opencv/opencv.git && cd opencv && git checkout 4.1.1 && mkdir build #RUN git clone https://github.com/opencv/opencv_contrib.git && cd opencv_contrib && git checkout 4.1.1 -#RUN cd opencv/build && cmake ../ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules -D BUILD_opencv_python3=ON -D WITH_GSTREAMER=ON -D WITH_FFMPEG=OFF && make && make install +#RUN cd opencv/build && cmake ../ \ +# -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ +# -D BUILD_OPENCV_PYTHON3=ON \ +# -D PYTHON3_EXECUTABLE=/opt/conda/bin/python \ +# -D PYTHON3_INCLUDE_PATH=/opt/conda/include/python3.6m \ +# -D PYTHON3_LIBRARIES=/opt/conda/lib/python3.6/site-packages \ +# -D WITH_GSTREAMER=ON \ +# -D WITH_FFMPEG=OFF \ +# && make && make install && ldconfig +#RUN cd /usr/local/lib/python3.6/site-packages/ && mv cv2.cpython-36m-x86_64-linux-gnu.so cv2.so +#RUN cd /opt/conda/lib/python3.6/site-packages/ && ln -s /usr/local/lib/python3.6/site-packages/cv2.so cv2.so #RUN python3 -c "import cv2; print(cv2.getBuildInformation())" # Create working directory From 7706a1b8fbc4d9655a31d587f1a13151ea0ba0f3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Sep 2019 10:19:46 +0200 Subject: [PATCH 1379/2595] updates Signed-off-by: Glenn Jocher --- Dockerfile | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/Dockerfile b/Dockerfile index 209b729e..97ede3d4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,28 +9,28 @@ FROM nvcr.io/nvidia/pytorch:19.08-py3 # conda install pytorch torchvision -c pytorch # Install OpenCV with Gstreamer support -#WORKDIR /usr/src -#RUN pip uninstall -y opencv-python -#RUN apt-get update -#RUN apt-get install -y gstreamer1.0-python3-dbg-plugin-loader -## RUN apt-get install gstreamer1.0 -## RUN apt install -y ubuntu-restricted-extras -#RUN apt install -y libgstreamer1.0-dev -#RUN apt install -y libgstreamer-plugins-base1.0-dev -#RUN git clone https://github.com/opencv/opencv.git && cd opencv && git checkout 4.1.1 && mkdir build -#RUN git clone https://github.com/opencv/opencv_contrib.git && cd opencv_contrib && git checkout 4.1.1 -#RUN cd opencv/build && cmake ../ \ -# -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ -# -D BUILD_OPENCV_PYTHON3=ON \ -# -D PYTHON3_EXECUTABLE=/opt/conda/bin/python \ -# -D PYTHON3_INCLUDE_PATH=/opt/conda/include/python3.6m \ -# -D PYTHON3_LIBRARIES=/opt/conda/lib/python3.6/site-packages \ -# -D WITH_GSTREAMER=ON \ -# -D WITH_FFMPEG=OFF \ -# && make && make install && ldconfig -#RUN cd /usr/local/lib/python3.6/site-packages/ && mv cv2.cpython-36m-x86_64-linux-gnu.so cv2.so -#RUN cd /opt/conda/lib/python3.6/site-packages/ && ln -s /usr/local/lib/python3.6/site-packages/cv2.so cv2.so -#RUN python3 -c "import cv2; print(cv2.getBuildInformation())" +WORKDIR /usr/src +RUN pip uninstall -y opencv-python +RUN apt-get update +RUN apt-get install -y gstreamer1.0-python3-dbg-plugin-loader +# RUN apt-get install gstreamer1.0 +# RUN apt install -y ubuntu-restricted-extras +RUN apt install -y libgstreamer1.0-dev +RUN apt install -y libgstreamer-plugins-base1.0-dev +RUN git clone https://github.com/opencv/opencv.git && cd opencv && git checkout 4.1.1 && mkdir build +RUN git clone https://github.com/opencv/opencv_contrib.git && cd opencv_contrib && git checkout 4.1.1 +RUN cd opencv/build && cmake ../ \ + -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ + -D BUILD_OPENCV_PYTHON3=ON \ + -D PYTHON3_EXECUTABLE=/opt/conda/bin/python \ + -D PYTHON3_INCLUDE_PATH=/opt/conda/include/python3.6m \ + -D PYTHON3_LIBRARIES=/opt/conda/lib/python3.6/site-packages \ + -D WITH_GSTREAMER=ON \ + -D WITH_FFMPEG=OFF \ + && make && make install && ldconfig +RUN cd /usr/local/lib/python3.6/site-packages/cv2/python-3.6/ && mv cv2.cpython-36m-x86_64-linux-gnu.so cv2.so +RUN cd /opt/conda/lib/python3.6/site-packages/ && ln -s /usr/local/lib/python3.6/site-packages/cv2/python-3.6/cv2.so cv2.so +RUN python3 -c "import cv2; print(cv2.getBuildInformation())" # Create working directory RUN mkdir -p /usr/src/app From 48a0f38f853077b61d5a3374cf33568cb11f569c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Sep 2019 10:20:03 +0200 Subject: [PATCH 1380/2595] updates Signed-off-by: Glenn Jocher --- Dockerfile | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/Dockerfile b/Dockerfile index 97ede3d4..b771e9ed 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,28 +9,28 @@ FROM nvcr.io/nvidia/pytorch:19.08-py3 # conda install pytorch torchvision -c pytorch # Install OpenCV with Gstreamer support -WORKDIR /usr/src -RUN pip uninstall -y opencv-python -RUN apt-get update -RUN apt-get install -y gstreamer1.0-python3-dbg-plugin-loader -# RUN apt-get install gstreamer1.0 -# RUN apt install -y ubuntu-restricted-extras -RUN apt install -y libgstreamer1.0-dev -RUN apt install -y libgstreamer-plugins-base1.0-dev -RUN git clone https://github.com/opencv/opencv.git && cd opencv && git checkout 4.1.1 && mkdir build -RUN git clone https://github.com/opencv/opencv_contrib.git && cd opencv_contrib && git checkout 4.1.1 -RUN cd opencv/build && cmake ../ \ - -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ - -D BUILD_OPENCV_PYTHON3=ON \ - -D PYTHON3_EXECUTABLE=/opt/conda/bin/python \ - -D PYTHON3_INCLUDE_PATH=/opt/conda/include/python3.6m \ - -D PYTHON3_LIBRARIES=/opt/conda/lib/python3.6/site-packages \ - -D WITH_GSTREAMER=ON \ - -D WITH_FFMPEG=OFF \ - && make && make install && ldconfig -RUN cd /usr/local/lib/python3.6/site-packages/cv2/python-3.6/ && mv cv2.cpython-36m-x86_64-linux-gnu.so cv2.so -RUN cd /opt/conda/lib/python3.6/site-packages/ && ln -s /usr/local/lib/python3.6/site-packages/cv2/python-3.6/cv2.so cv2.so -RUN python3 -c "import cv2; print(cv2.getBuildInformation())" +#WORKDIR /usr/src +#RUN pip uninstall -y opencv-python +#RUN apt-get update +#RUN apt-get install -y gstreamer1.0-python3-dbg-plugin-loader +## RUN apt-get install gstreamer1.0 +## RUN apt install -y ubuntu-restricted-extras +#RUN apt install -y libgstreamer1.0-dev +#RUN apt install -y libgstreamer-plugins-base1.0-dev +#RUN git clone https://github.com/opencv/opencv.git && cd opencv && git checkout 4.1.1 && mkdir build +#RUN git clone https://github.com/opencv/opencv_contrib.git && cd opencv_contrib && git checkout 4.1.1 +#RUN cd opencv/build && cmake ../ \ +# -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ +# -D BUILD_OPENCV_PYTHON3=ON \ +# -D PYTHON3_EXECUTABLE=/opt/conda/bin/python \ +# -D PYTHON3_INCLUDE_PATH=/opt/conda/include/python3.6m \ +# -D PYTHON3_LIBRARIES=/opt/conda/lib/python3.6/site-packages \ +# -D WITH_GSTREAMER=ON \ +# -D WITH_FFMPEG=OFF \ +# && make && make install && ldconfig +#RUN cd /usr/local/lib/python3.6/site-packages/cv2/python-3.6/ && mv cv2.cpython-36m-x86_64-linux-gnu.so cv2.so +#RUN cd /opt/conda/lib/python3.6/site-packages/ && ln -s /usr/local/lib/python3.6/site-packages/cv2/python-3.6/cv2.so cv2.so +#RUN python3 -c "import cv2; print(cv2.getBuildInformation())" # Create working directory RUN mkdir -p /usr/src/app From 255e2e5a9f715018a0381f698c6160e22df263c2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Sep 2019 18:57:15 +0200 Subject: [PATCH 1381/2595] updates --- Dockerfile | 9 +++------ models.py | 20 +++++++++++++------- utils/google_utils.py | 20 ++++++++++---------- 3 files changed, 26 insertions(+), 23 deletions(-) diff --git a/Dockerfile b/Dockerfile index b771e9ed..89bc72ab 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,11 +12,7 @@ FROM nvcr.io/nvidia/pytorch:19.08-py3 #WORKDIR /usr/src #RUN pip uninstall -y opencv-python #RUN apt-get update -#RUN apt-get install -y gstreamer1.0-python3-dbg-plugin-loader -## RUN apt-get install gstreamer1.0 -## RUN apt install -y ubuntu-restricted-extras -#RUN apt install -y libgstreamer1.0-dev -#RUN apt install -y libgstreamer-plugins-base1.0-dev +#RUN apt-get install -y gstreamer1.0-python3-dbg-plugin-loader libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev #RUN git clone https://github.com/opencv/opencv.git && cd opencv && git checkout 4.1.1 && mkdir build #RUN git clone https://github.com/opencv/opencv_contrib.git && cd opencv_contrib && git checkout 4.1.1 #RUN cd opencv/build && cmake ../ \ @@ -26,7 +22,7 @@ FROM nvcr.io/nvidia/pytorch:19.08-py3 # -D PYTHON3_INCLUDE_PATH=/opt/conda/include/python3.6m \ # -D PYTHON3_LIBRARIES=/opt/conda/lib/python3.6/site-packages \ # -D WITH_GSTREAMER=ON \ -# -D WITH_FFMPEG=OFF \ +# -D WITH_FFMPEG=ON \ # && make && make install && ldconfig #RUN cd /usr/local/lib/python3.6/site-packages/cv2/python-3.6/ && mv cv2.cpython-36m-x86_64-linux-gnu.so cv2.so #RUN cd /opt/conda/lib/python3.6/site-packages/ && ln -s /usr/local/lib/python3.6/site-packages/cv2/python-3.6/cv2.so cv2.so @@ -58,3 +54,4 @@ COPY . /usr/src/app # Build and Push # export tag=ultralytics/yolov3:v0 && sudo docker build -t $tag . && docker push $tag + diff --git a/models.py b/models.py index abca7e61..e3177dad 100755 --- a/models.py +++ b/models.py @@ -2,6 +2,7 @@ import torch.nn.functional as F from utils.parse_config import * from utils.utils import * +from utils.google_utils import * ONNX_EXPORT = False @@ -296,13 +297,18 @@ def load_darknet_weights(self, weights, cutoff=-1): # Try to download weights if not available locally msg = weights + ' missing, download from https://drive.google.com/drive/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI' if not os.path.isfile(weights): - try: - url = 'https://pjreddie.com/media/files/' + file - print('Downloading ' + url) - os.system('curl -f ' + url + ' -o ' + weights) - except IOError: - print(msg) - os.system('rm ' + weights) # remove partial downloads + if file == 'yolov3-spp.weights': + gdrive_download(id='1oPCHKsM2JpM-zgyepQciGli9X0MTsJCO', name=weights) + elif file == 'darknet.53.conv.74': + gdrive_download(id='18xqvs_uwAqfTXp-LJCYLYNHBOcrwbrp0', name=weights) + else: + try: # download from pjreddie.com + url = 'https://pjreddie.com/media/files/' + file + print('Downloading ' + url) + os.system('curl -f ' + url + ' -o ' + weights) + except IOError: + print(msg) + os.system('rm ' + weights) # remove partial downloads assert os.path.exists(weights), msg # download missing weights from Google Drive # Establish cutoffs diff --git a/utils/google_utils.py b/utils/google_utils.py index 211d5485..303265b4 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -18,17 +18,17 @@ def gdrive_download(id='1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO', name='coco.zip'): if os.path.exists(name): # remove existing os.remove(name) - # Attempt small file download - s = 'curl -f -L -o %s https://drive.google.com/uc?export=download&id=%s' % (name, id) - os.system(s) - # Attempt large file download - if not os.path.exists(name): # file size > 40MB - s = ["curl -c ./cookie -s -L \"https://drive.google.com/uc?export=download&id=%s\" > /dev/null" % id, - "curl -Lb ./cookie \"https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=%s\" -o %s" % ( - id, name), - 'rm ./cookie'] - [os.system(x) for x in s] # run commands + s = ["curl -c ./cookie -s -L \"https://drive.google.com/uc?export=download&id=%s\" > /dev/null" % id, + "curl -Lb ./cookie -s \"https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=%s\" -o %s" % ( + id, name), + 'rm ./cookie'] + [os.system(x) for x in s] # run commands + + # Attempt small file download + if not os.path.exists(name): # file size < 40MB + s = 'curl -f -L -o %s https://drive.google.com/uc?export=download&id=%s' % (name, id) + os.system(s) # Unzip if archive if name.endswith('.zip'): From 334ea9da0d098db63143a68e2e28d41b31ea90f1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Sep 2019 19:15:17 +0200 Subject: [PATCH 1382/2595] updates --- Dockerfile | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 89bc72ab..5f773d7f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -35,6 +35,12 @@ WORKDIR /usr/src/app # Copy contents COPY . /usr/src/app +# Copy weights +RUN python3 -c "from utils.google_utils import *; \ + gdrive_download(id='18xqvs_uwAqfTXp-LJCYLYNHBOcrwbrp0', name='weights/darknet53.conv.74'); \ + gdrive_download(id='1oPCHKsM2JpM-zgyepQciGli9X0MTsJCO', name='weights/yolov3-spp.weights')" + + # --------------------------------------------------- Extras Below --------------------------------------------------- # Build container @@ -49,9 +55,9 @@ COPY . /usr/src/app # sudo nvidia-docker run --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco ultralytics/yolov3:v0 python3 train.py # sudo nvidia-docker run --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco ultralytics/yolov3:v0 python3 train.py --batch-size 64 --accumulate 1 --img-size 320 --arc uFBCE --prebias --epochs 27 -# Push container to https://hub.docker.com/u/ultralytics -# docker push ultralytics/yolov3:v0 - -# Build and Push +# Build and Push to https://hub.docker.com/u/ultralytics # export tag=ultralytics/yolov3:v0 && sudo docker build -t $tag . && docker push $tag +# Kill all running containers +# sudo docker kill $(sudo docker ps -q) + From d8f6adc775c3899ee3523a19447aa0a5a797f275 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Sep 2019 21:18:05 +0200 Subject: [PATCH 1383/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index e3177dad..79cca577 100755 --- a/models.py +++ b/models.py @@ -299,7 +299,7 @@ def load_darknet_weights(self, weights, cutoff=-1): if not os.path.isfile(weights): if file == 'yolov3-spp.weights': gdrive_download(id='1oPCHKsM2JpM-zgyepQciGli9X0MTsJCO', name=weights) - elif file == 'darknet.53.conv.74': + elif file == 'darknet53.conv.74': gdrive_download(id='18xqvs_uwAqfTXp-LJCYLYNHBOcrwbrp0', name=weights) else: try: # download from pjreddie.com From ad3870c84712b43219174c7ef051206a3ac88e93 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Sep 2019 21:33:54 +0200 Subject: [PATCH 1384/2595] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 933f9452..19f01c09 100755 --- a/README.md +++ b/README.md @@ -52,7 +52,8 @@ Our Jupyter [notebook](https://colab.research.google.com/github/ultralytics/yolo **Resume Training:** `python3 train.py --resume` to resume training from `weights/last.pt`. **Plot Training:** `from utils import utils; utils.plot_results()` plots training results from `coco_16img.data`, `coco_64img.data`, 2 example datasets available in the `data/` folder, which train and test on the first 16 and 64 images of the COCO2014-trainval dataset. -![image](https://user-images.githubusercontent.com/26833433/63258271-fe9d5300-c27b-11e9-9a15-95038daf4438.png) + + ## Image Augmentation @@ -68,7 +69,7 @@ Reflection | 50% probability (horizontal-only) H**S**V Saturation | +/- 50% HS**V** Intensity | +/- 50% - + ## Speed From b91899ffc4072f2be7c25c03704965ff43140550 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Sep 2019 21:52:29 +0200 Subject: [PATCH 1385/2595] updates --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5f773d7f..d4cdee31 100644 --- a/Dockerfile +++ b/Dockerfile @@ -36,9 +36,9 @@ WORKDIR /usr/src/app COPY . /usr/src/app # Copy weights -RUN python3 -c "from utils.google_utils import *; \ - gdrive_download(id='18xqvs_uwAqfTXp-LJCYLYNHBOcrwbrp0', name='weights/darknet53.conv.74'); \ - gdrive_download(id='1oPCHKsM2JpM-zgyepQciGli9X0MTsJCO', name='weights/yolov3-spp.weights')" +#RUN python3 -c "from utils.google_utils import *; \ +# gdrive_download(id='18xqvs_uwAqfTXp-LJCYLYNHBOcrwbrp0', name='weights/darknet53.conv.74'); \ +# gdrive_download(id='1oPCHKsM2JpM-zgyepQciGli9X0MTsJCO', name='weights/yolov3-spp.weights')" # --------------------------------------------------- Extras Below --------------------------------------------------- From 4445715f4c8cba7a66ee720c682b943b95460d89 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Sep 2019 22:42:38 +0200 Subject: [PATCH 1386/2595] updates --- train.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 3f30b539..cb0a15d7 100644 --- a/train.py +++ b/train.py @@ -39,7 +39,7 @@ def train(): cfg = opt.cfg data = opt.data img_size = opt.img_size - epochs = 1 if opt.prebias else opt.epochs # 500200 batches at bs 16, 117263 images = 273 epochs + epochs = 1 if opt.prebias else opt.epochs # 500200 batches at bs 64, 117263 images = 273 epochs batch_size = opt.batch_size accumulate = opt.accumulate # effective bs = batch_size * accumulate = 16 * 4 = 64 weights = opt.weights # initial training weights @@ -348,7 +348,9 @@ def train(): # end epoch ---------------------------------------------------------------------------------------------------- - # Report time + # end training + if len(opt.name): + os.rename('results.txt', 'results_%s.txt' % opt.name) plot_results() # save as results.png print('%g epochs completed in %.3f hours.\n' % (epoch - start_epoch + 1, (time.time() - t0) / 3600)) dist.destroy_process_group() if torch.cuda.device_count() > 1 else None @@ -377,6 +379,7 @@ if __name__ == '__main__': parser.add_argument('--weights', type=str, default='', help='initial weights') # i.e. weights/darknet.53.conv.74 parser.add_argument('--arc', type=str, default='defaultpw', help='yolo architecture') # defaultpw, uCE, uBCE parser.add_argument('--prebias', action='store_true', help='transfer-learn yolo biases prior to training') + parser.add_argument('--name', default='', help='renames results.txt to results_name.txt if supplied') parser.add_argument('--var', type=float, help='debug variable') opt = parser.parse_args() opt.weights = 'weights/last.pt' if opt.resume else opt.weights From d1b69290437049352453861e741e63dd5973e6a4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 10 Sep 2019 01:34:23 +0200 Subject: [PATCH 1387/2595] updates --- detect.py | 98 ++++++++++++++++++++++++++--------------------- utils/datasets.py | 60 +++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+), 44 deletions(-) diff --git a/detect.py b/detect.py index b9215967..8b9e4168 100644 --- a/detect.py +++ b/detect.py @@ -11,6 +11,7 @@ def detect(save_txt=False, save_img=False, stream_img=False): img_size = (320, 192) if ONNX_EXPORT else opt.img_size # (320, 192) or (416, 256) or (608, 352) for (height, width) out, source, weights, half = opt.output, opt.source, opt.weights, opt.half webcam = source == '0' or source.startswith('rtsp') or source.startswith('http') + streams = source == 'streams.txt' # Initialize device = torch_utils.select_device(force_cpu=ONNX_EXPORT) @@ -47,7 +48,9 @@ def detect(save_txt=False, save_img=False, stream_img=False): # Set Dataloader vid_path, vid_writer = None, None - if webcam: + if streams: + dataset = LoadStreams(source, img_size=img_size, half=half) + elif webcam: stream_img = True dataset = LoadWebcam(source, img_size=img_size, half=half) else: @@ -60,56 +63,63 @@ def detect(save_txt=False, save_img=False, stream_img=False): # Run inference t0 = time.time() - for path, img, im0, vid_cap in dataset: + for path, img, im0s, vid_cap in dataset: t = time.time() - save_path = str(Path(out) / Path(path).name) # Get detections - img = torch.from_numpy(img).unsqueeze(0).to(device) + img = torch.from_numpy(img).to(device) + if img.ndimension() == 3: + img = img.unsqueeze(0) pred, _ = model(img) - det = non_max_suppression(pred.float(), opt.conf_thres, opt.nms_thres)[0] - s = '%gx%g ' % img.shape[2:] # print string - if det is not None and len(det): - # Rescale boxes from img_size to im0 size - det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round() - - # Print results - for c in det[:, -1].unique(): - n = (det[:, -1] == c).sum() # detections per class - s += '%g %ss, ' % (n, classes[int(c)]) # add to string - - # Write results - for *xyxy, conf, _, cls in det: - if save_txt: # Write to file - with open(save_path + '.txt', 'a') as file: - file.write(('%g ' * 6 + '\n') % (*xyxy, cls, conf)) - - if save_img or stream_img: # Add bbox to image - label = '%s %.2f' % (classes[int(cls)], conf) - plot_one_box(xyxy, im0, label=label, color=colors[int(cls)]) - - print('%sDone. (%.3fs)' % (s, time.time() - t)) - - # Stream results - if stream_img: - cv2.imshow(weights, im0) - - # Save results (image with detections) - if save_img: - if dataset.mode == 'images': - cv2.imwrite(save_path, im0) + for i, det in enumerate(non_max_suppression(pred, opt.conf_thres, opt.nms_thres)): # detections per image + if streams: # batch_size > 1 + p, s, im0 = path[i], '%g: ' % i, im0s[i] else: - if vid_path != save_path: # new video - vid_path = save_path - if isinstance(vid_writer, cv2.VideoWriter): - vid_writer.release() # release previous video writer + p, s, im0 = path, '', im0s - fps = vid_cap.get(cv2.CAP_PROP_FPS) - width = int(vid_cap.get(cv2.CAP_PROP_FRAME_WIDTH)) - height = int(vid_cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) - vid_writer = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*opt.fourcc), fps, (width, height)) - vid_writer.write(im0) + save_path = str(Path(out) / Path(p).name) + s += '%gx%g ' % img.shape[2:] # print string + if det is not None and len(det): + # Rescale boxes from img_size to im0 size + det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round() + + # Print results + for c in det[:, -1].unique(): + n = (det[:, -1] == c).sum() # detections per class + s += '%g %ss, ' % (n, classes[int(c)]) # add to string + + # Write results + for *xyxy, conf, _, cls in det: + if save_txt: # Write to file + with open(save_path + '.txt', 'a') as file: + file.write(('%g ' * 6 + '\n') % (*xyxy, cls, conf)) + + if save_img or stream_img: # Add bbox to image + label = '%s %.2f' % (classes[int(cls)], conf) + plot_one_box(xyxy, im0, label=label, color=colors[int(cls)]) + + print('%sDone. (%.3fs)' % (s, time.time() - t)) + + # Stream results + if stream_img: + cv2.imshow(p, im0) + + # Save results (image with detections) + if save_img: + if dataset.mode == 'images': + cv2.imwrite(save_path, im0) + else: + if vid_path != save_path: # new video + vid_path = save_path + if isinstance(vid_writer, cv2.VideoWriter): + vid_writer.release() # release previous video writer + + fps = vid_cap.get(cv2.CAP_PROP_FPS) + w = int(vid_cap.get(cv2.CAP_PROP_FRAME_WIDTH)) + h = int(vid_cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) + vid_writer = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*opt.fourcc), fps, (w, h)) + vid_writer.write(im0) if save_txt or save_img: print('Results saved to %s' % os.getcwd() + os.sep + out) diff --git a/utils/datasets.py b/utils/datasets.py index 166435b5..5c3ed44c 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -3,7 +3,9 @@ import math import os import random import shutil +import time from pathlib import Path +from threading import Thread import cv2 import numpy as np @@ -183,6 +185,64 @@ class LoadWebcam: # for inference return 0 +class LoadStreams: # multiple IP or RTSP cameras + def __init__(self, path='streams.txt', img_size=416, half=False): + self.img_size = img_size + self.half = half # half precision fp16 images + with open(path, 'r') as f: + sources = f.read().splitlines() + + n = len(sources) + self.imgs = [None] * n + self.sources = sources + for i, s in enumerate(sources): + # Start the thread to read frames from the video stream + cap = cv2.VideoCapture(0 if s == '0' else s) + fps = cap.get(cv2.CAP_PROP_FPS) % 100 + width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) + height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) + + print('%g/%g: %gx%g at %.2f FPS %s...' % (i + 1, n, width, height, fps, s)) + thread = Thread(target=self.update, args=([i, cap])) + thread.daemon = True + thread.start() + print('') # newline + time.sleep(0.5) + + def update(self, index, cap): + # Read next stream frame in a daemon thread + while cap.isOpened(): + _, self.imgs[index] = cap.read() + time.sleep(0.030) # 33.3 FPS to keep buffer empty + + def __iter__(self): + self.count = -1 + return self + + def __next__(self): + self.count += 1 + img0 = self.imgs.copy() + if cv2.waitKey(1) == ord('q'): # 'q' to quit + cv2.destroyAllWindows() + raise StopIteration + + # Letterbox + img = [letterbox(x, new_shape=self.img_size, mode='square')[0] for x in img0] + + # Stack + img = np.stack(img, 0) + + # Normalize RGB + img = img[:, :, :, ::-1].transpose(0, 3, 1, 2) # BGR to RGB + img = np.ascontiguousarray(img, dtype=np.float16 if self.half else np.float32) # uint8 to fp16/fp32 + img /= 255.0 # 0 - 255 to 0.0 - 1.0 + + return self.sources, img, img0, None + + def __len__(self): + return 0 # 1E12 frames = 32 streams at 30 FPS for 30 years + + class LoadImagesAndLabels(Dataset): # for training/testing def __init__(self, path, img_size=416, batch_size=16, augment=False, hyp=None, rect=True, image_weights=False, cache_images=False): From 8fe2bf1d7ff266c157d01deb14114930a5fd0d57 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 10 Sep 2019 10:56:56 +0200 Subject: [PATCH 1388/2595] updates --- utils/torch_utils.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 40eed4ae..02543118 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -6,7 +6,11 @@ def init_seeds(seed=0): torch.manual_seed(seed) torch.cuda.manual_seed(seed) torch.cuda.manual_seed_all(seed) - # torch.backends.cudnn.deterministic = True # https://pytorch.org/docs/stable/notes/randomness.html + + # Remove randomness (may be slower on Tesla GPUs) # https://pytorch.org/docs/stable/notes/randomness.html + if seed == 0: + torch.backends.cudnn.deterministic = True + torch.backends.cudnn.benchmark = False def select_device(force_cpu=False, apex=False): From c1ad7e6c2bc26814d0d411bded8f144fa762b1cf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 10 Sep 2019 11:35:46 +0200 Subject: [PATCH 1389/2595] updates --- train.py | 7 ++++--- utils/utils.py | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/train.py b/train.py index cb0a15d7..12fec636 100644 --- a/train.py +++ b/train.py @@ -27,6 +27,7 @@ hyp = {'giou': 1.582, # giou loss gain 'lrf': -4., # final LambdaLR learning rate = lr0 * (10 ** lrf) 'momentum': 0.97, # SGD momentum 'weight_decay': 0.0004569, # optimizer weight decay + 'fl_gamma': 0.5, # focal loss gamma 'hsv_s': 0.5703, # image HSV-Saturation augmentation (fraction) 'hsv_v': 0.3174, # image HSV-Value augmentation (fraction) 'degrees': 1.113, # image rotation (+/- deg) @@ -420,14 +421,14 @@ if __name__ == '__main__': # Mutate init_seeds(seed=int(time.time())) - s = [.15, .15, .15, .15, .15, .15, .15, .00, .02, .20, .20, .20, .20, .20, .20, .20] # sigmas + s = [.15, .15, .15, .15, .15, .15, .15, .00, .02, .20, .15, .20, .20, .20, .20, .20, .20] # sigmas for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) hyp[k] *= float(x) # vary by sigmas # Clip to limits - keys = ['lr0', 'iou_t', 'momentum', 'weight_decay', 'hsv_s', 'hsv_v', 'translate', 'scale'] - limits = [(1e-4, 1e-2), (0.00, 0.70), (0.60, 0.98), (0, 0.001), (0, .9), (0, .9), (0, .9), (0, .9)] + keys = ['lr0', 'iou_t', 'momentum', 'weight_decay', 'hsv_s', 'hsv_v', 'translate', 'scale', 'fl_gamma'] + limits = [(1e-4, 1e-2), (0.00, 0.70), (0.60, 0.98), (0, 0.001), (0, .9), (0, .9), (0, .9), (0, .9), (0, 3)] for k, v in zip(keys, limits): hyp[k] = np.clip(hyp[k], v[0], v[1]) diff --git a/utils/utils.py b/utils/utils.py index 3ffc5272..08f3ffd1 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -291,12 +291,12 @@ def wh_iou(box1, box2): class FocalLoss(nn.Module): # Wraps focal loss around existing loss_fcn() https://arxiv.org/pdf/1708.02002.pdf # i.e. criteria = FocalLoss(nn.BCEWithLogitsLoss(), gamma=2.5) - def __init__(self, loss_fcn, alpha=1, gamma=0.5, reduction='mean'): + def __init__(self, loss_fcn, gamma=0.5, alpha=1, reduction='mean'): super(FocalLoss, self).__init__() loss_fcn.reduction = 'none' # required to apply FL to each element self.loss_fcn = loss_fcn - self.alpha = alpha self.gamma = gamma + self.alpha = alpha self.reduction = reduction def forward(self, input, target): @@ -325,7 +325,8 @@ def compute_loss(p, targets, model): # predictions, targets, model CE = nn.CrossEntropyLoss() # weight=model.class_weights if 'F' in arc: # add focal loss - BCEcls, BCEobj, BCE, CE = FocalLoss(BCEcls), FocalLoss(BCEobj), FocalLoss(BCE), FocalLoss(CE) + g = h['fl_gamma'] + BCEcls, BCEobj, BCE, CE = FocalLoss(BCEcls, g), FocalLoss(BCEobj, g), FocalLoss(BCE, g), FocalLoss(CE, g) # Compute losses for i, pi in enumerate(p): # layer index, layer predictions From 10b080d90c5cd6d1bb83bc0777132ce2cedb4b5e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 10 Sep 2019 11:52:27 +0200 Subject: [PATCH 1390/2595] updates --- utils/utils.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 08f3ffd1..0202b8f5 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -613,8 +613,7 @@ def select_best_evolve(path='evolve*.txt'): # from utils.utils import *; select # Find best evolved mutation for file in sorted(glob.glob(path)): x = np.loadtxt(file, dtype=np.float32, ndmin=2) - fitness = x[:, 2] * 0.5 + x[:, 3] * 0.5 # weighted mAP and F1 combination - print(file, x[fitness.argmax()]) + print(file, x[fitness(x).argmax()]) def coco_single_class_labels(path='../coco/labels/train2014/', label_class=43): @@ -693,7 +692,7 @@ def print_mutation(hyp, results, bucket=''): def fitness(x): # Returns fitness (for use with results.txt or evolve.txt) - return 0.50 * x[:, 2] + 0.50 * x[:, 3] # fitness = 0.5 * mAP + 0.5 * F1 + return x[:, 2] * 0.5 + x[:, 3] * 0.5 # weighted mAP and F1 combination # Plotting functions --------------------------------------------------------------------------------------------------- From f270269d437280b35c64b72048cc43cbea67fd75 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 10 Sep 2019 12:20:59 +0200 Subject: [PATCH 1391/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 0202b8f5..87c0b567 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -674,7 +674,7 @@ def kmeans_targets(path='../coco/trainvalno5k.txt', n=9, img_size=416): # from def print_mutation(hyp, results, bucket=''): # Print mutation results to evolve.txt (for use with train.py --evolve) a = '%10s' * len(hyp) % tuple(hyp.keys()) # hyperparam keys - b = '%10.3g' * len(hyp) % tuple(hyp.values()) # hyperparam values + b = '%10.5g' * len(hyp) % tuple(hyp.values()) # hyperparam values c = '%10.3g' * len(results) % results # results (P, R, mAP, F1, test_loss) print('\n%s\n%s\nEvolved fitness: %s\n' % (a, b, c)) From 256bf72f8e32a66ddd5749a5bec155a93eb7020f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 10 Sep 2019 12:40:59 +0200 Subject: [PATCH 1392/2595] updates --- Dockerfile | 2 +- utils/utils.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index d4cdee31..9e14453a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,11 +2,11 @@ FROM nvcr.io/nvidia/pytorch:19.08-py3 # Install dependencies (pip or conda) +RUN pip install -U gsutil # RUN pip install -U -r requirements.txt # RUN conda update -n base -c defaults conda # RUN conda install -y -c anaconda future numpy opencv matplotlib tqdm pillow # RUN conda install -y -c conda-forge scikit-image tensorboard pycocotools -# conda install pytorch torchvision -c pytorch # Install OpenCV with Gstreamer support #WORKDIR /usr/src diff --git a/utils/utils.py b/utils/utils.py index 87c0b567..a28ed5b3 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -684,7 +684,7 @@ def print_mutation(hyp, results, bucket=''): with open('evolve.txt', 'a') as f: # append result f.write(c + b + '\n') x = np.unique(np.loadtxt('evolve.txt', ndmin=2), axis=0) # load unique rows - np.savetxt('evolve.txt', x[np.argsort(-fitness(x))], '%10.3g') # save sort by fitness + np.savetxt('evolve.txt', x[np.argsort(-fitness(x))], '%10.5g') # save sort by fitness if bucket: os.system('gsutil cp evolve.txt gs://%s' % bucket) # upload evolve.txt From 95bc4736f3f42d584bd627054b8e7ca2456b038f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 10 Sep 2019 13:17:05 +0200 Subject: [PATCH 1393/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index a28ed5b3..0202b8f5 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -674,7 +674,7 @@ def kmeans_targets(path='../coco/trainvalno5k.txt', n=9, img_size=416): # from def print_mutation(hyp, results, bucket=''): # Print mutation results to evolve.txt (for use with train.py --evolve) a = '%10s' * len(hyp) % tuple(hyp.keys()) # hyperparam keys - b = '%10.5g' * len(hyp) % tuple(hyp.values()) # hyperparam values + b = '%10.3g' * len(hyp) % tuple(hyp.values()) # hyperparam values c = '%10.3g' * len(results) % results # results (P, R, mAP, F1, test_loss) print('\n%s\n%s\nEvolved fitness: %s\n' % (a, b, c)) @@ -684,7 +684,7 @@ def print_mutation(hyp, results, bucket=''): with open('evolve.txt', 'a') as f: # append result f.write(c + b + '\n') x = np.unique(np.loadtxt('evolve.txt', ndmin=2), axis=0) # load unique rows - np.savetxt('evolve.txt', x[np.argsort(-fitness(x))], '%10.5g') # save sort by fitness + np.savetxt('evolve.txt', x[np.argsort(-fitness(x))], '%10.3g') # save sort by fitness if bucket: os.system('gsutil cp evolve.txt gs://%s' % bucket) # upload evolve.txt From a2016201f3a3c210763a4f99ec1dcd8cbd8ca045 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 10 Sep 2019 14:04:16 +0200 Subject: [PATCH 1394/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 12fec636..9d6205f8 100644 --- a/train.py +++ b/train.py @@ -428,7 +428,7 @@ if __name__ == '__main__': # Clip to limits keys = ['lr0', 'iou_t', 'momentum', 'weight_decay', 'hsv_s', 'hsv_v', 'translate', 'scale', 'fl_gamma'] - limits = [(1e-4, 1e-2), (0.00, 0.70), (0.60, 0.98), (0, 0.001), (0, .9), (0, .9), (0, .9), (0, .9), (0, 3)] + limits = [(1e-5, 1e-2), (0.00, 0.70), (0.60, 0.98), (0, 0.001), (0, .9), (0, .9), (0, .9), (0, .9), (0, 3)] for k, v in zip(keys, limits): hyp[k] = np.clip(hyp[k], v[0], v[1]) From d26df074a6b96e921adf9f6859cc4ebb0e4f99ee Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 10 Sep 2019 14:24:46 +0200 Subject: [PATCH 1395/2595] updates --- utils/torch_utils.py | 1 - 1 file changed, 1 deletion(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 02543118..9bf97548 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -21,7 +21,6 @@ def select_device(force_cpu=False, apex=False): if not cuda: print('Using CPU') if cuda: - torch.backends.cudnn.benchmark = True # set False for reproducible results c = 1024 ** 2 # bytes to MB ng = torch.cuda.device_count() x = [torch.cuda.get_device_properties(i) for i in range(ng)] From 671747318dfdab58857e8afbf8082406335a9f50 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 10 Sep 2019 14:25:56 +0200 Subject: [PATCH 1396/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 8b9e4168..df79f625 100644 --- a/detect.py +++ b/detect.py @@ -15,7 +15,6 @@ def detect(save_txt=False, save_img=False, stream_img=False): # Initialize device = torch_utils.select_device(force_cpu=ONNX_EXPORT) - torch.backends.cudnn.benchmark = False # set True to speed up constant image size inference if os.path.exists(out): shutil.rmtree(out) # delete output folder os.makedirs(out) # make new output folder @@ -49,6 +48,7 @@ def detect(save_txt=False, save_img=False, stream_img=False): # Set Dataloader vid_path, vid_writer = None, None if streams: + torch.backends.cudnn.benchmark = True # set True to speed up constant image size inference dataset = LoadStreams(source, img_size=img_size, half=half) elif webcam: stream_img = True From f20a03e28ec72714893eceb04a06c9a04ffdbc68 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 10 Sep 2019 14:59:45 +0200 Subject: [PATCH 1397/2595] updates --- train.py | 3 ++- utils/torch_utils.py | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 9d6205f8..6379ddb9 100644 --- a/train.py +++ b/train.py @@ -381,11 +381,12 @@ if __name__ == '__main__': parser.add_argument('--arc', type=str, default='defaultpw', help='yolo architecture') # defaultpw, uCE, uBCE parser.add_argument('--prebias', action='store_true', help='transfer-learn yolo biases prior to training') parser.add_argument('--name', default='', help='renames results.txt to results_name.txt if supplied') + parser.add_argument('--device', default='', help='select device if multi-gpu, i.e. 0 or 0,1') parser.add_argument('--var', type=float, help='debug variable') opt = parser.parse_args() opt.weights = 'weights/last.pt' if opt.resume else opt.weights print(opt) - device = torch_utils.select_device(apex=mixed_precision) + device = torch_utils.select_device(opt.device, apex=mixed_precision) tb_writer = None if not opt.evolve: # Train normally diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 9bf97548..4805c23b 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -1,3 +1,4 @@ +import os import torch @@ -13,7 +14,11 @@ def init_seeds(seed=0): torch.backends.cudnn.benchmark = False -def select_device(force_cpu=False, apex=False): +def select_device(device=None, force_cpu=False, apex=False): + # Set environment variable if device is specified + if device: + os.environ['CUDA_VISIBLE_DEVICES'] = device + # apex if mixed precision training https://github.com/NVIDIA/apex cuda = False if force_cpu else torch.cuda.is_available() device = torch.device('cuda:0' if cuda else 'cpu') From adb4894626b4729d3f7ad8dbc24e8443f831b5d4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 10 Sep 2019 15:34:36 +0200 Subject: [PATCH 1398/2595] updates --- utils/datasets.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 5c3ed44c..aaf32215 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -147,7 +147,7 @@ class LoadWebcam: # for inference def __next__(self): self.count += 1 - if cv2.waitKey(1) == 27: # esc to quit + if cv2.waitKey(1) == ord('q'): # q to quit self.cap.release() cv2.destroyAllWindows() raise StopIteration @@ -168,7 +168,7 @@ class LoadWebcam: # for inference # Print assert ret_val, 'Camera Error %s' % self.pipe - img_path = 'webcam_%g.jpg' % self.count + img_path = 'webcam.jpg' print('webcam %g: ' % self.count, end='') # Padded resize @@ -222,7 +222,7 @@ class LoadStreams: # multiple IP or RTSP cameras def __next__(self): self.count += 1 img0 = self.imgs.copy() - if cv2.waitKey(1) == ord('q'): # 'q' to quit + if cv2.waitKey(1) == ord('q'): # q to quit cv2.destroyAllWindows() raise StopIteration From 9b9d4b96a5413d74c9641a853c338322e1fffd68 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 10 Sep 2019 15:44:14 +0200 Subject: [PATCH 1399/2595] updates --- utils/datasets.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index aaf32215..85ce9795 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -197,15 +197,16 @@ class LoadStreams: # multiple IP or RTSP cameras self.sources = sources for i, s in enumerate(sources): # Start the thread to read frames from the video stream + print('%g/%g: %s... ' % (i + 1, n, s), end='') cap = cv2.VideoCapture(0 if s == '0' else s) + assert cap.isOpened(), 'Failed to open %s' % s + w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) + h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) fps = cap.get(cv2.CAP_PROP_FPS) % 100 - width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) - height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) - - print('%g/%g: %gx%g at %.2f FPS %s...' % (i + 1, n, width, height, fps, s)) - thread = Thread(target=self.update, args=([i, cap])) - thread.daemon = True + print(' success (%gx%g at %.2f FPS).' % (w, h, fps)) + thread = Thread(target=self.update, args=([i, cap]), daemon=True) thread.start() + print('') # newline time.sleep(0.5) From 0591f8da66fe1913a827fbef9a87de471aa3ed40 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 10 Sep 2019 17:04:33 +0200 Subject: [PATCH 1400/2595] updates --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 9e14453a..aac8086f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -53,7 +53,6 @@ COPY . /usr/src/app # Run container with local directory access # sudo nvidia-docker run --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco ultralytics/yolov3:v0 python3 train.py -# sudo nvidia-docker run --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco ultralytics/yolov3:v0 python3 train.py --batch-size 64 --accumulate 1 --img-size 320 --arc uFBCE --prebias --epochs 27 # Build and Push to https://hub.docker.com/u/ultralytics # export tag=ultralytics/yolov3:v0 && sudo docker build -t $tag . && docker push $tag @@ -61,3 +60,5 @@ COPY . /usr/src/app # Kill all running containers # sudo docker kill $(sudo docker ps -q) +# Run bash for loop +# sudo nvidia-docker run --ipc=host ultralytics/yolov3:v0 for i in {1..5}; do python3 train.py --evolve; done From 4cabdfda3dee8eb433f326e07572f4a530a3a4d2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 10 Sep 2019 17:06:06 +0200 Subject: [PATCH 1401/2595] updates --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index aac8086f..44543409 100644 --- a/Dockerfile +++ b/Dockerfile @@ -61,4 +61,4 @@ COPY . /usr/src/app # sudo docker kill $(sudo docker ps -q) # Run bash for loop -# sudo nvidia-docker run --ipc=host ultralytics/yolov3:v0 for i in {1..5}; do python3 train.py --evolve; done +# sudo nvidia-docker run --ipc=host ultralytics/yolov3:v0 for i in {1..1000}; do python3 train.py --evolve; done From 2a75034322f13e3e4394776aec202610bf85be7f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 10 Sep 2019 17:28:36 +0200 Subject: [PATCH 1402/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 6379ddb9..1e30712b 100644 --- a/train.py +++ b/train.py @@ -412,7 +412,7 @@ if __name__ == '__main__': if opt.bucket: os.system('gsutil cp gs://%s/evolve.txt .' % opt.bucket) # download evolve.txt if exists - for _ in range(100): # generations to evolve + for _ in range(1): # generations to evolve if os.path.exists('evolve.txt'): # if evolve.txt exists: select best hyps and mutate # Get best hyperparameters x = np.loadtxt('evolve.txt', ndmin=2) From a31b1489a42511ba06f5db4f9b1b3470be0c3290 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 10 Sep 2019 21:25:01 +0200 Subject: [PATCH 1403/2595] updates --- detect.py | 1 + utils/datasets.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index df79f625..475a2321 100644 --- a/detect.py +++ b/detect.py @@ -48,6 +48,7 @@ def detect(save_txt=False, save_img=False, stream_img=False): # Set Dataloader vid_path, vid_writer = None, None if streams: + stream_img = True torch.backends.cudnn.benchmark = True # set True to speed up constant image size inference dataset = LoadStreams(source, img_size=img_size, half=half) elif webcam: diff --git a/utils/datasets.py b/utils/datasets.py index 85ce9795..0ceae059 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -35,7 +35,7 @@ def exif_size(img): elif rotation == 8: # rotation 90 s = (s[1], s[0]) except: - None + pass return s @@ -190,7 +190,7 @@ class LoadStreams: # multiple IP or RTSP cameras self.img_size = img_size self.half = half # half precision fp16 images with open(path, 'r') as f: - sources = f.read().splitlines() + sources = [x.strip() for x in f.read().splitlines() if len(x.strip())] n = len(sources) self.imgs = [None] * n From 919aff828e4c6a435a747b792403ee7c548629e6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Sep 2019 13:15:16 +0200 Subject: [PATCH 1404/2595] updates --- train.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/train.py b/train.py index 1e30712b..19e248c7 100644 --- a/train.py +++ b/train.py @@ -35,6 +35,11 @@ hyp = {'giou': 1.582, # giou loss gain 'scale': 0.1059, # image scale (+/- gain) 'shear': 0.5768} # image shear (+/- deg) +if os.path.exists('hyp.txt'): # overwrite hyp if hyp.txt is found + x = np.loadtxt('hyp.txt') + for i, k in enumerate(hyp.keys()): + hyp[k] = x[i] + def train(): cfg = opt.cfg From 3f7f2c4a13cfe6efc79056e8cf50f4c9c35c129d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Sep 2019 14:00:57 +0200 Subject: [PATCH 1405/2595] updates --- train.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/train.py b/train.py index 19e248c7..cca50a14 100644 --- a/train.py +++ b/train.py @@ -16,6 +16,9 @@ try: # Mixed precision training https://github.com/NVIDIA/apex except: mixed_precision = False # not installed +# 0.329 0.963 0.918 0.455 0.331 0.481 0.14 0.353 61.9 0.062 26.9 0.386 0.0624 0.000219 -4 0.901 0.000414 1.86 0.57 0.317 1.11 0.068 0.106 0.577 +# 0.256 0.948 0.921 0.358 1.27 3.24 1.11 1.3 19.2 1.02 87.6 1.76 0.116 0.00288 -4 0.956 0.000277 1.09 0.57 0.317 1.11 0.068 0.106 0.577 + # Hyperparameters (j-series, 50.5 mAP yolov3-320) evolved by @ktian08 https://github.com/ultralytics/yolov3/issues/310 hyp = {'giou': 1.582, # giou loss gain 'cls': 27.76, # cls loss gain (CE=~1.0, uCE=~20) @@ -35,10 +38,11 @@ hyp = {'giou': 1.582, # giou loss gain 'scale': 0.1059, # image scale (+/- gain) 'shear': 0.5768} # image shear (+/- deg) -if os.path.exists('hyp.txt'): # overwrite hyp if hyp.txt is found - x = np.loadtxt('hyp.txt') - for i, k in enumerate(hyp.keys()): - hyp[k] = x[i] +# Overwrite hyp with hyp*.txt (optional) +f = glob.glob('hyp*.txt') +if f: + for k, v in zip(hyp.keys(), np.loadtxt(f[0])): + hyp[k] = v def train(): @@ -87,9 +91,9 @@ def train(): else: pg0 += [v] # parameter group 0 - # optimizer = optim.Adam(pg0, lr=hyp['lr0']) + optimizer = optim.Adam(pg0, lr=hyp['lr0']) # optimizer = AdaBound(pg0, lr=hyp['lr0'], final_lr=0.1) - optimizer = optim.SGD(pg0, lr=hyp['lr0'], momentum=hyp['momentum'], nesterov=True) + # optimizer = optim.SGD(pg0, lr=hyp['lr0'], momentum=hyp['momentum'], nesterov=True) optimizer.add_param_group({'params': pg1, 'weight_decay': hyp['weight_decay']}) # add pg1 with weight_decay del pg0, pg1 @@ -427,7 +431,7 @@ if __name__ == '__main__': # Mutate init_seeds(seed=int(time.time())) - s = [.15, .15, .15, .15, .15, .15, .15, .00, .02, .20, .15, .20, .20, .20, .20, .20, .20] # sigmas + s = [.15, .15, .15, .15, .15, .15, .15, .00, .02, .20, .15, .0, .0, .0, .0, .0, .0] # sigmas for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) hyp[k] *= float(x) # vary by sigmas From 270724e50779f91e225c42664797c64fa742cfec Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Sep 2019 14:03:23 +0200 Subject: [PATCH 1406/2595] updates --- train.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index cca50a14..c2bb0c33 100644 --- a/train.py +++ b/train.py @@ -16,9 +16,6 @@ try: # Mixed precision training https://github.com/NVIDIA/apex except: mixed_precision = False # not installed -# 0.329 0.963 0.918 0.455 0.331 0.481 0.14 0.353 61.9 0.062 26.9 0.386 0.0624 0.000219 -4 0.901 0.000414 1.86 0.57 0.317 1.11 0.068 0.106 0.577 -# 0.256 0.948 0.921 0.358 1.27 3.24 1.11 1.3 19.2 1.02 87.6 1.76 0.116 0.00288 -4 0.956 0.000277 1.09 0.57 0.317 1.11 0.068 0.106 0.577 - # Hyperparameters (j-series, 50.5 mAP yolov3-320) evolved by @ktian08 https://github.com/ultralytics/yolov3/issues/310 hyp = {'giou': 1.582, # giou loss gain 'cls': 27.76, # cls loss gain (CE=~1.0, uCE=~20) @@ -91,9 +88,9 @@ def train(): else: pg0 += [v] # parameter group 0 - optimizer = optim.Adam(pg0, lr=hyp['lr0']) + # optimizer = optim.Adam(pg0, lr=hyp['lr0']) # optimizer = AdaBound(pg0, lr=hyp['lr0'], final_lr=0.1) - # optimizer = optim.SGD(pg0, lr=hyp['lr0'], momentum=hyp['momentum'], nesterov=True) + optimizer = optim.SGD(pg0, lr=hyp['lr0'], momentum=hyp['momentum'], nesterov=True) optimizer.add_param_group({'params': pg1, 'weight_decay': hyp['weight_decay']}) # add pg1 with weight_decay del pg0, pg1 From 806d7b92d88364f2873563411078019e9b3b05c8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Sep 2019 14:25:48 +0200 Subject: [PATCH 1407/2595] updates --- train.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index c2bb0c33..37e4ab13 100644 --- a/train.py +++ b/train.py @@ -1,5 +1,4 @@ import argparse -import time import torch.distributed as dist import torch.optim as optim @@ -88,9 +87,11 @@ def train(): else: pg0 += [v] # parameter group 0 - # optimizer = optim.Adam(pg0, lr=hyp['lr0']) - # optimizer = AdaBound(pg0, lr=hyp['lr0'], final_lr=0.1) - optimizer = optim.SGD(pg0, lr=hyp['lr0'], momentum=hyp['momentum'], nesterov=True) + if opt.adam: + optimizer = optim.Adam(pg0, lr=hyp['lr0']) + # optimizer = AdaBound(pg0, lr=hyp['lr0'], final_lr=0.1) + else: + optimizer = optim.SGD(pg0, lr=hyp['lr0'], momentum=hyp['momentum'], nesterov=True) optimizer.add_param_group({'params': pg1, 'weight_decay': hyp['weight_decay']}) # add pg1 with weight_decay del pg0, pg1 @@ -388,6 +389,7 @@ if __name__ == '__main__': parser.add_argument('--prebias', action='store_true', help='transfer-learn yolo biases prior to training') parser.add_argument('--name', default='', help='renames results.txt to results_name.txt if supplied') parser.add_argument('--device', default='', help='select device if multi-gpu, i.e. 0 or 0,1') + parser.add_argument('--adam', action='store_true', help='use adam optimizer') parser.add_argument('--var', type=float, help='debug variable') opt = parser.parse_args() opt.weights = 'weights/last.pt' if opt.resume else opt.weights From a1b50aaa43cfd27b5687ede41aff71a0e2cb6991 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Sep 2019 21:24:22 +0200 Subject: [PATCH 1408/2595] updates --- detect.py | 1 - train.py | 2 +- utils/utils.py | 3 +++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index 475a2321..b112bba7 100644 --- a/detect.py +++ b/detect.py @@ -1,5 +1,4 @@ import argparse -import time from sys import platform from models import * # set ONNX_EXPORT in models.py diff --git a/train.py b/train.py index 37e4ab13..24165fd9 100644 --- a/train.py +++ b/train.py @@ -430,7 +430,7 @@ if __name__ == '__main__': # Mutate init_seeds(seed=int(time.time())) - s = [.15, .15, .15, .15, .15, .15, .15, .00, .02, .20, .15, .0, .0, .0, .0, .0, .0] # sigmas + s = [.15, .15, .15, .15, .15, .15, .15, .00, .02, .20, .20, .20, .20, .20, .20, .20, .20] # sigmas for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) hyp[k] *= float(x) # vary by sigmas diff --git a/utils/utils.py b/utils/utils.py index 0202b8f5..4987fedb 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -88,6 +88,9 @@ def coco_class_weights(): # frequency of each class in coco train2014 1877, 17630, 4337, 4624, 1075, 3468, 135, 1380] weights = 1 / torch.Tensor(n) weights /= weights.sum() + # with open('data/coco.names', 'r') as f: + # for k, v in zip(f.read().splitlines(), n): + # print('%20s: %g' % (k, v)) return weights From 3f6df0fb281e6d3c288b72ab75fe91e649cc85e3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Sep 2019 21:25:26 +0200 Subject: [PATCH 1409/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 4987fedb..9f3a5903 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -695,7 +695,7 @@ def print_mutation(hyp, results, bucket=''): def fitness(x): # Returns fitness (for use with results.txt or evolve.txt) - return x[:, 2] * 0.5 + x[:, 3] * 0.5 # weighted mAP and F1 combination + return x[:, 2] * 0.7 + x[:, 3] * 0.3 # weighted mAP and F1 combination # Plotting functions --------------------------------------------------------------------------------------------------- From 17cf9f4a07d9a95c35b4644e6f6cc205740d02fa Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Sep 2019 22:21:39 +0200 Subject: [PATCH 1410/2595] updates --- train.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/train.py b/train.py index 24165fd9..e3d4eceb 100644 --- a/train.py +++ b/train.py @@ -397,6 +397,12 @@ if __name__ == '__main__': device = torch_utils.select_device(opt.device, apex=mixed_precision) tb_writer = None + if opt.prebias: + train() # transfer-learn yolo biases for 1 epoch + create_backbone('weights/last.pt') # saved results as backbone.pt + opt.weights = 'weights/backbone.pt' # assign backbone + opt.prebias = False # disable prebias + if not opt.evolve: # Train normally try: # Start Tensorboard with "tensorboard --logdir=runs", view at http://localhost:6006/ @@ -406,12 +412,6 @@ if __name__ == '__main__': except: pass - if opt.prebias: - train() # transfer-learn yolo biases for 1 epoch - create_backbone('weights/last.pt') # saved results as backbone.pt - opt.weights = 'weights/backbone.pt' # assign backbone - opt.prebias = False # disable prebias - train() # train normally else: # Evolve hyperparameters (optional) From 495ae6ca32391fcd5ab2d249a7d5e8713c78b695 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Sep 2019 22:47:22 +0200 Subject: [PATCH 1411/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 9f3a5903..5a892150 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -695,7 +695,7 @@ def print_mutation(hyp, results, bucket=''): def fitness(x): # Returns fitness (for use with results.txt or evolve.txt) - return x[:, 2] * 0.7 + x[:, 3] * 0.3 # weighted mAP and F1 combination + return x[:, 2] * 0.8 + x[:, 3] * 0.2 # weighted mAP and F1 combination # Plotting functions --------------------------------------------------------------------------------------------------- From 6355bfa94e1179122d0d94709b575eb7b3104efb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Sep 2019 22:49:14 +0200 Subject: [PATCH 1412/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 5a892150..9f3a5903 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -695,7 +695,7 @@ def print_mutation(hyp, results, bucket=''): def fitness(x): # Returns fitness (for use with results.txt or evolve.txt) - return x[:, 2] * 0.8 + x[:, 3] * 0.2 # weighted mAP and F1 combination + return x[:, 2] * 0.7 + x[:, 3] * 0.3 # weighted mAP and F1 combination # Plotting functions --------------------------------------------------------------------------------------------------- From 81e5514f4fd005c4459267c0fa41c3a72c39970e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Sep 2019 22:57:56 +0200 Subject: [PATCH 1413/2595] updates --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 19f01c09..90579cab 100755 --- a/README.md +++ b/README.md @@ -87,8 +87,8 @@ T4 | 64 (32x2) | 40 | 49 min | $0.29 T4 x2 | 64 (64x1) | 61 | 32 min | $0.36 V100 | 64 (32x2) | 115 | 17 min | $0.24 V100 x2 | 64 (64x1) | 150 | 13 min | $0.36 -2080Ti | 64 (32x2) | 69 | 28 min | - - +2080Ti | 64 (32x2) | 81 | 24 min | - +2080Ti x2 | 64 (64x1) | 140 | 14 min | - # Inference From 7997be8bba6f42b3612ca81c0bce6028feac930c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Sep 2019 23:04:48 +0200 Subject: [PATCH 1414/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index e3d4eceb..fb3d0e4c 100644 --- a/train.py +++ b/train.py @@ -340,7 +340,7 @@ def train(): # Save last checkpoint torch.save(chkpt, last) - if opt.bucket: + if opt.bucket and not opt.evolve: os.system('gsutil cp %s gs://%s' % (last, opt.bucket)) # upload to bucket # Save best checkpoint From fb81559565bb6fd2c693cfe73c2718159d5baf63 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Sep 2019 23:11:01 +0200 Subject: [PATCH 1415/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index fb3d0e4c..a461942d 100644 --- a/train.py +++ b/train.py @@ -327,7 +327,7 @@ def train(): best_fitness = fitness # Save training results - save = (not opt.nosave) or ((not opt.evolve) and final_epoch) + save = (not opt.nosave) or (final_epoch and not opt.evolve) or opt.prebias if save: with open('results.txt', 'r') as file: # Create checkpoint @@ -340,7 +340,7 @@ def train(): # Save last checkpoint torch.save(chkpt, last) - if opt.bucket and not opt.evolve: + if opt.bucket and not opt.prebias: os.system('gsutil cp %s gs://%s' % (last, opt.bucket)) # upload to bucket # Save best checkpoint From 780fa17f6a3c778b4da50a9f81de9f8dc56b7605 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 12 Sep 2019 11:14:59 +0200 Subject: [PATCH 1416/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index a461942d..cb77f2d5 100644 --- a/train.py +++ b/train.py @@ -430,7 +430,7 @@ if __name__ == '__main__': # Mutate init_seeds(seed=int(time.time())) - s = [.15, .15, .15, .15, .15, .15, .15, .00, .02, .20, .20, .20, .20, .20, .20, .20, .20] # sigmas + s = [.20, .20, .20, .20, .20, .20, .20, .00, .02, .0, .0, .0, .0, .0, .0, .0, .0] # sigmas for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) hyp[k] *= float(x) # vary by sigmas From 121da9a6c0e12ac88da5b418d7b133cb798902ca Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 12 Sep 2019 12:52:59 +0200 Subject: [PATCH 1417/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index b112bba7..0cedbf11 100644 --- a/detect.py +++ b/detect.py @@ -10,7 +10,7 @@ def detect(save_txt=False, save_img=False, stream_img=False): img_size = (320, 192) if ONNX_EXPORT else opt.img_size # (320, 192) or (416, 256) or (608, 352) for (height, width) out, source, weights, half = opt.output, opt.source, opt.weights, opt.half webcam = source == '0' or source.startswith('rtsp') or source.startswith('http') - streams = source == 'streams.txt' + streams = source.endswith('streams.txt') # Initialize device = torch_utils.select_device(force_cpu=ONNX_EXPORT) From 0bf08a9d93c4f58650f22e3b7d482f24808f5633 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 12 Sep 2019 15:02:59 +0200 Subject: [PATCH 1418/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 9f3a5903..5a892150 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -695,7 +695,7 @@ def print_mutation(hyp, results, bucket=''): def fitness(x): # Returns fitness (for use with results.txt or evolve.txt) - return x[:, 2] * 0.7 + x[:, 3] * 0.3 # weighted mAP and F1 combination + return x[:, 2] * 0.8 + x[:, 3] * 0.2 # weighted mAP and F1 combination # Plotting functions --------------------------------------------------------------------------------------------------- From 5452bb7036475dff8768fbdcf5a901fc74ca0fba Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Sep 2019 15:10:15 +0200 Subject: [PATCH 1419/2595] updates --- detect.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index 0cedbf11..d4fed6b5 100644 --- a/detect.py +++ b/detect.py @@ -10,7 +10,7 @@ def detect(save_txt=False, save_img=False, stream_img=False): img_size = (320, 192) if ONNX_EXPORT else opt.img_size # (320, 192) or (416, 256) or (608, 352) for (height, width) out, source, weights, half = opt.output, opt.source, opt.weights, opt.half webcam = source == '0' or source.startswith('rtsp') or source.startswith('http') - streams = source.endswith('streams.txt') + streams = 'streams' in source and source.endswith('.txt') # Initialize device = torch_utils.select_device(force_cpu=ONNX_EXPORT) @@ -47,7 +47,7 @@ def detect(save_txt=False, save_img=False, stream_img=False): # Set Dataloader vid_path, vid_writer = None, None if streams: - stream_img = True + stream_img = False torch.backends.cudnn.benchmark = True # set True to speed up constant image size inference dataset = LoadStreams(source, img_size=img_size, half=half) elif webcam: From 4286bba40f3d5dc65f6e50bd7e3f0907b81aee12 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Sep 2019 16:00:52 +0200 Subject: [PATCH 1420/2595] updates --- detect.py | 3 ++- train.py | 2 +- utils/torch_utils.py | 8 +++++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/detect.py b/detect.py index d4fed6b5..ec53c697 100644 --- a/detect.py +++ b/detect.py @@ -13,7 +13,7 @@ def detect(save_txt=False, save_img=False, stream_img=False): streams = 'streams' in source and source.endswith('.txt') # Initialize - device = torch_utils.select_device(force_cpu=ONNX_EXPORT) + device = torch_utils.select_device(device='cpu' if ONNX_EXPORT else opt.device) if os.path.exists(out): shutil.rmtree(out) # delete output folder os.makedirs(out) # make new output folder @@ -141,6 +141,7 @@ if __name__ == '__main__': parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') parser.add_argument('--fourcc', type=str, default='mp4v', help='output video codec (verify ffmpeg support)') parser.add_argument('--half', action='store_true', help='half precision FP16 inference') + parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') opt = parser.parse_args() print(opt) diff --git a/train.py b/train.py index cb77f2d5..55e82af4 100644 --- a/train.py +++ b/train.py @@ -388,7 +388,7 @@ if __name__ == '__main__': parser.add_argument('--arc', type=str, default='defaultpw', help='yolo architecture') # defaultpw, uCE, uBCE parser.add_argument('--prebias', action='store_true', help='transfer-learn yolo biases prior to training') parser.add_argument('--name', default='', help='renames results.txt to results_name.txt if supplied') - parser.add_argument('--device', default='', help='select device if multi-gpu, i.e. 0 or 0,1') + parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') parser.add_argument('--adam', action='store_true', help='use adam optimizer') parser.add_argument('--var', type=float, help='debug variable') opt = parser.parse_args() diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 4805c23b..6b4b2624 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -1,4 +1,5 @@ import os + import torch @@ -14,9 +15,10 @@ def init_seeds(seed=0): torch.backends.cudnn.benchmark = False -def select_device(device=None, force_cpu=False, apex=False): - # Set environment variable if device is specified - if device: +def select_device(device=None, apex=False): + if device == 'cpu': + force_cpu = True + elif device: # Set environment variable if device is specified os.environ['CUDA_VISIBLE_DEVICES'] = device # apex if mixed precision training https://github.com/NVIDIA/apex From d5b5f74167aeae644e3558ec4da172246e4e0d88 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Sep 2019 16:27:15 +0200 Subject: [PATCH 1421/2595] updates --- utils/torch_utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 6b4b2624..11b3504e 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -17,12 +17,12 @@ def init_seeds(seed=0): def select_device(device=None, apex=False): if device == 'cpu': - force_cpu = True + pass elif device: # Set environment variable if device is specified os.environ['CUDA_VISIBLE_DEVICES'] = device # apex if mixed precision training https://github.com/NVIDIA/apex - cuda = False if force_cpu else torch.cuda.is_available() + cuda = False if device == 'cpu' else torch.cuda.is_available() device = torch.device('cuda:0' if cuda else 'cpu') if not cuda: From 1ecf80bc28bbb80c286134f7f4dac93770570f5e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Sep 2019 16:29:06 +0200 Subject: [PATCH 1422/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 0ceae059..6c94b375 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -228,7 +228,7 @@ class LoadStreams: # multiple IP or RTSP cameras raise StopIteration # Letterbox - img = [letterbox(x, new_shape=self.img_size, mode='square')[0] for x in img0] + img = [letterbox(x, new_shape=self.img_size)[0] for x in img0] # Stack img = np.stack(img, 0) From b62dc6f06a4288d759151ea8289da0908f64db2c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Sep 2019 14:31:07 +0200 Subject: [PATCH 1423/2595] updates --- Dockerfile | 6 +++--- test.py | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 44543409..195e2dec 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,11 +8,11 @@ RUN pip install -U gsutil # RUN conda install -y -c anaconda future numpy opencv matplotlib tqdm pillow # RUN conda install -y -c conda-forge scikit-image tensorboard pycocotools -# Install OpenCV with Gstreamer support +## Install OpenCV with Gstreamer support #WORKDIR /usr/src #RUN pip uninstall -y opencv-python #RUN apt-get update -#RUN apt-get install -y gstreamer1.0-python3-dbg-plugin-loader libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev +#RUN apt-get install -y gstreamer1.0-tools gstreamer1.0-python3-dbg-plugin-loader libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev #RUN git clone https://github.com/opencv/opencv.git && cd opencv && git checkout 4.1.1 && mkdir build #RUN git clone https://github.com/opencv/opencv_contrib.git && cd opencv_contrib && git checkout 4.1.1 #RUN cd opencv/build && cmake ../ \ @@ -22,7 +22,7 @@ RUN pip install -U gsutil # -D PYTHON3_INCLUDE_PATH=/opt/conda/include/python3.6m \ # -D PYTHON3_LIBRARIES=/opt/conda/lib/python3.6/site-packages \ # -D WITH_GSTREAMER=ON \ -# -D WITH_FFMPEG=ON \ +# -D WITH_FFMPEG=OFF \ # && make && make install && ldconfig #RUN cd /usr/local/lib/python3.6/site-packages/cv2/python-3.6/ && mv cv2.cpython-36m-x86_64-linux-gnu.so cv2.so #RUN cd /opt/conda/lib/python3.6/site-packages/ && ln -s /usr/local/lib/python3.6/site-packages/cv2/python-3.6/cv2.so cv2.so diff --git a/test.py b/test.py index be4cf627..54cac3c1 100644 --- a/test.py +++ b/test.py @@ -20,7 +20,7 @@ def test(cfg, model=None): # Initialize/load model and set device if model is None: - device = torch_utils.select_device() + device = torch_utils.select_device(opt.device) verbose = True # Initialize model @@ -204,6 +204,7 @@ if __name__ == '__main__': parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') parser.add_argument('--save-json', action='store_true', help='save a cocoapi-compatible JSON results file') + parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') opt = parser.parse_args() print(opt) From 77dce00fa840567b96a4b38cbc40a5d654c91305 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Sep 2019 19:39:54 +0200 Subject: [PATCH 1424/2595] updates --- README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 90579cab..6011e979 100755 --- a/README.md +++ b/README.md @@ -148,7 +148,7 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' | 320 | 416 | 608 --- | --- | --- | --- `YOLOv3` | 51.8 (51.5) | 55.4 (55.3) | 58.2 (57.9) -`YOLOv3-SPP` | 52.4 | 56.5 | 60.7 (60.6) +`YOLOv3-SPP` | 52.4 | 56.8 | 60.7 (60.6) `YOLOv3-tiny` | 29.0 | 32.9 (33.1) | 35.5 ```bash @@ -156,7 +156,7 @@ python3 test.py --save-json --img-size 608 Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', img_size=608, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='weights/yolov3-spp.weights') Using CUDA device0 _CudaDeviceProperties(name='Tesla T4', total_memory=15079MB) Class Images Targets P R mAP F1: 100% 313/313 [07:40<00:00, 2.34s/it] - all 5e+03 3.58e+04 0.117 0.788 0.595 0.199 + all 5e+03 3.58e+04 0.119 0.788 0.594 0.201 Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.367 <--- Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.607 <--- Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.387 @@ -174,19 +174,19 @@ python3 test.py --save-json --img-size 416 Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', img_size=416, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='weights/yolov3-spp.weights') Using CUDA device0 _CudaDeviceProperties(name='Tesla T4', total_memory=15079MB) Class Images Targets P R mAP F1: 100% 313/313 [07:01<00:00, 1.41s/it] - all 5e+03 3.58e+04 0.105 0.746 0.554 0.18 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.336 <--- - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.565 <--- + all 5e+03 3.58e+04 0.107 0.749 0.557 0.182 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.337 <--- + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.568 <--- Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.350 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.151 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.361 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.494 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.281 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.433 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.459 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.256 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.495 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.622 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.152 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.359 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.496 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.279 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.432 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.460 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.257 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.494 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.623 ``` # Citation From efe86b0c4ce81033d35a581fd9e5f4251325d93f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Sep 2019 19:49:09 +0200 Subject: [PATCH 1425/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 55e82af4..c3763fdc 100644 --- a/train.py +++ b/train.py @@ -430,7 +430,7 @@ if __name__ == '__main__': # Mutate init_seeds(seed=int(time.time())) - s = [.20, .20, .20, .20, .20, .20, .20, .00, .02, .0, .0, .0, .0, .0, .0, .0, .0] # sigmas + s = [.20, .20, .20, .20, .20, .20, .20, .00, .02, .20, .20, .20, .20, .20, .20, .20, .20] # sigmas for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) hyp[k] *= float(x) # vary by sigmas From 78e9bf60d24647ebbc0f39b45d4208ba11797d8f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Sep 2019 19:53:44 +0200 Subject: [PATCH 1426/2595] updates --- train.py | 1 + utils/datasets.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index c3763fdc..57ce04fd 100644 --- a/train.py +++ b/train.py @@ -185,6 +185,7 @@ def train(): hyp=hyp, # augmentation hyperparameters rect=opt.rect, # rectangular training image_weights=opt.img_weights, + cache_labels=True if epochs > 10 else False, cache_images=False if opt.prebias else opt.cache_images) # Dataloader diff --git a/utils/datasets.py b/utils/datasets.py index 6c94b375..0116d38e 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -246,7 +246,7 @@ class LoadStreams: # multiple IP or RTSP cameras class LoadImagesAndLabels(Dataset): # for training/testing def __init__(self, path, img_size=416, batch_size=16, augment=False, hyp=None, rect=True, image_weights=False, - cache_images=False): + cache_labels=False, cache_images=False): path = str(Path(path)) # os-agnostic with open(path, 'r') as f: self.img_files = [x.replace('/', os.sep) for x in f.read().splitlines() # os-agnostic @@ -305,7 +305,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Preload labels (required for weighted CE training) self.imgs = [None] * n self.labels = [None] * n - if augment or image_weights: # cache labels for faster training + if cache_labels or image_weights: # cache labels for faster training self.labels = [np.zeros((0, 5))] * n extract_bounding_boxes = False pbar = tqdm(self.label_files, desc='Reading labels') From 87d2e51f0db186d95efc0c980062b5bed7351430 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Sep 2019 20:05:54 +0200 Subject: [PATCH 1427/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 57ce04fd..c94abb20 100644 --- a/train.py +++ b/train.py @@ -200,7 +200,7 @@ def train(): model.nc = nc # attach number of classes to model model.arc = opt.arc # attach yolo architecture model.hyp = hyp # attach hyperparameters to model - model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights + # model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights model_info(model, report='summary') # 'full' or 'summary' nb = len(dataloader) maps = np.zeros(nc) # mAP per class From 08fa0f28bc2aa42ad21eeaf4b6b1398aafa51e7f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Sep 2019 20:59:51 +0200 Subject: [PATCH 1428/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 79cca577..3563b54c 100755 --- a/models.py +++ b/models.py @@ -79,7 +79,7 @@ def create_modules(module_defs, img_size, arc): # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) try: if arc == 'defaultpw': # default with positive weights - b = [-4, -3.6] # obj, cls + b = [-4, -5] # obj, cls elif arc == 'default': # default no pw (40 cls, 80 obj) b = [-5.5, -4.0] elif arc == 'uBCE': # unified BCE (80 classes) From c40ab12df2925e880e8c50fa34b2f630767c2ea7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Sep 2019 21:08:14 +0200 Subject: [PATCH 1429/2595] updates --- Dockerfile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 195e2dec..5ff2b99a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -43,22 +43,22 @@ COPY . /usr/src/app # --------------------------------------------------- Extras Below --------------------------------------------------- -# Build container +# Build # rm -rf yolov3 # Warning: remove existing # git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 detect.py # sudo docker image prune -af && sudo docker build -t ultralytics/yolov3:v0 . -# Run container +# Run # sudo nvidia-docker run --ipc=host ultralytics/yolov3:v0 python3 detect.py -# Run container with local directory access +# Run with local directory access # sudo nvidia-docker run --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco ultralytics/yolov3:v0 python3 train.py -# Build and Push to https://hub.docker.com/u/ultralytics +# Build and Push # export tag=ultralytics/yolov3:v0 && sudo docker build -t $tag . && docker push $tag -# Kill all running containers +# Kill all # sudo docker kill $(sudo docker ps -q) # Run bash for loop -# sudo nvidia-docker run --ipc=host ultralytics/yolov3:v0 for i in {1..1000}; do python3 train.py --evolve; done +# sudo nvidia-docker run --ipc=host ultralytics/yolov3:v0 while true; do python3 train.py --evolve; done From ee0ce7b9bce3bcbe61b1cf8490420657181d3dda Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Sep 2019 22:16:41 +0200 Subject: [PATCH 1430/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 3563b54c..527d3466 100755 --- a/models.py +++ b/models.py @@ -79,7 +79,7 @@ def create_modules(module_defs, img_size, arc): # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) try: if arc == 'defaultpw': # default with positive weights - b = [-4, -5] # obj, cls + b = [-4, -4] # obj, cls elif arc == 'default': # default no pw (40 cls, 80 obj) b = [-5.5, -4.0] elif arc == 'uBCE': # unified BCE (80 classes) From e5ab942c14fd3903121c6f04bb324483cb3e3427 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Sep 2019 22:42:52 +0200 Subject: [PATCH 1431/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 527d3466..79cca577 100755 --- a/models.py +++ b/models.py @@ -79,7 +79,7 @@ def create_modules(module_defs, img_size, arc): # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) try: if arc == 'defaultpw': # default with positive weights - b = [-4, -4] # obj, cls + b = [-4, -3.6] # obj, cls elif arc == 'default': # default no pw (40 cls, 80 obj) b = [-5.5, -4.0] elif arc == 'uBCE': # unified BCE (80 classes) From f356b9387e56c379ee8ca58818972e90f97e45fc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Sep 2019 23:09:58 +0200 Subject: [PATCH 1432/2595] updates --- utils/utils.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/utils/utils.py b/utils/utils.py index 5a892150..c8458c8c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -355,6 +355,11 @@ def compute_loss(p, targets, model): # predictions, targets, model lcls += BCEcls(ps[:, 5:], t) # BCE # lcls += CE(ps[:, 5:], tcls[i]) # CE + # Instance-class weighting (use with reduction='none') + # nt = t.sum(0) + 1 # number of targets per class + # lcls += (BCEcls(ps[:, 5:], t) / nt).mean() * nt.mean() # v1 + # lcls += (BCEcls(ps[:, 5:], t) / nt[tcls[i]].view(-1,1)).mean() * nt.mean() # v2 + # Append targets to text file # with open('targets.txt', 'a') as file: # [file.write('%11.5g ' * 4 % tuple(x) + '\n') for x in torch.cat((txy[i], twh[i]), 1)] From 137aab762ae06dbee79edd82e96e1fc843374170 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Sep 2019 23:10:21 +0200 Subject: [PATCH 1433/2595] updates --- utils/gcp.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/utils/gcp.sh b/utils/gcp.sh index f56d17ed..f0d9fa96 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -113,3 +113,17 @@ python3 test.py --weights weights/last.pt --cfg cfg/yolov3-spp.cfg --img-size 32 gsutil cp evolve.txt gs://ultralytics sudo shutdown + +#Docker +sudo docker kill $(sudo docker ps -q) +sudo docker pull ultralytics/yolov3:v1 +sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco ultralytics/yolov3:v1 + +clear +while true +do + python3 train.py --data data/coco.data --img-size 320 --batch-size 64 --accumulate 1 --evolve --epochs 1 --adam --bucket yolov4/adamdefaultpw_coco_1e --device 1 +done + +python3 train.py --data data/coco.data --img-size 320 --batch-size 64 --accumulate 1 --epochs 1 --adam --device 1 --prebias +while true; do python3 train.py --data data/coco.data --img-size 320 --batch-size 64 --accumulate 1 --evolve --epochs 1 --adam --bucket yolov4/adamdefaultpw_coco_1e; done From 425ed4b84baaddeba5bf0e539aacba8403217cc5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Sep 2019 23:15:07 +0200 Subject: [PATCH 1434/2595] updates --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 79cca577..711510a6 100755 --- a/models.py +++ b/models.py @@ -1,8 +1,8 @@ import torch.nn.functional as F +from utils.google_utils import * from utils.parse_config import * from utils.utils import * -from utils.google_utils import * ONNX_EXPORT = False @@ -78,7 +78,7 @@ def create_modules(module_defs, img_size, arc): # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) try: - if arc == 'defaultpw': # default with positive weights + if arc == 'defaultpw' or arc == 'Fdefaultpw': # default with positive weights b = [-4, -3.6] # obj, cls elif arc == 'default': # default no pw (40 cls, 80 obj) b = [-5.5, -4.0] From 78bb153d7d5bdc9782b0e2ec8be391a33380614b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 17 Sep 2019 15:16:29 +0200 Subject: [PATCH 1435/2595] updates --- train.py | 4 ++-- utils/torch_utils.py | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index c94abb20..465a4118 100644 --- a/train.py +++ b/train.py @@ -430,8 +430,8 @@ if __name__ == '__main__': hyp[k] = x[i + 7] # Mutate - init_seeds(seed=int(time.time())) - s = [.20, .20, .20, .20, .20, .20, .20, .00, .02, .20, .20, .20, .20, .20, .20, .20, .20] # sigmas + np.random.seed(int(time.time())) + s = [.1, .1, .1, .1, .1, .1, .1, .0, .02, .2, .2, .2, .2, .2, .2, .2, .2] # sigmas for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) hyp[k] *= float(x) # vary by sigmas diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 11b3504e..aa42cb0f 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -4,7 +4,6 @@ import torch def init_seeds(seed=0): - torch.cuda.empty_cache() torch.manual_seed(seed) torch.cuda.manual_seed(seed) torch.cuda.manual_seed_all(seed) From ce42db0d7bbf344b34438d5bdd968e1a7753c758 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 17 Sep 2019 15:36:31 +0200 Subject: [PATCH 1436/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 711510a6..054f2d09 100755 --- a/models.py +++ b/models.py @@ -88,7 +88,7 @@ def create_modules(module_defs, img_size, arc): b = [10, -0.1] elif arc == 'Fdefault': # Focal default no pw (28 cls, 21 obj, no pw) b = [-2.1, -1.8] - elif arc == 'uFBCE': # unified FocalBCE (5120 obj, 80 classes) + elif arc == 'uFBCE' or arc =='uFBCEpw': # unified FocalBCE (5120 obj, 80 classes) b = [0, -6.5] elif arc == 'uFCE': # unified FocalCE (64 cls, 1 background + 80 classes) b = [7.7, -1.1] From fff60c651a0c394d65dbde14d41503533a1c297f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 18 Sep 2019 00:38:49 +0200 Subject: [PATCH 1437/2595] updates --- train.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/train.py b/train.py index 465a4118..b1921790 100644 --- a/train.py +++ b/train.py @@ -15,6 +15,10 @@ try: # Mixed precision training https://github.com/NVIDIA/apex except: mixed_precision = False # not installed +wdir = 'weights' + os.sep # weights dir +last = wdir + 'last.pt' +best = wdir + 'best.pt' + # Hyperparameters (j-series, 50.5 mAP yolov3-320) evolved by @ktian08 https://github.com/ultralytics/yolov3/issues/310 hyp = {'giou': 1.582, # giou loss gain 'cls': 27.76, # cls loss gain (CE=~1.0, uCE=~20) @@ -56,9 +60,6 @@ def train(): # Initialize init_seeds() - wdir = 'weights' + os.sep # weights dir - last = wdir + 'last.pt' - best = wdir + 'best.pt' multi_scale = opt.multi_scale if multi_scale: @@ -393,15 +394,15 @@ if __name__ == '__main__': parser.add_argument('--adam', action='store_true', help='use adam optimizer') parser.add_argument('--var', type=float, help='debug variable') opt = parser.parse_args() - opt.weights = 'weights/last.pt' if opt.resume else opt.weights + opt.weights = last if opt.resume else opt.weights print(opt) device = torch_utils.select_device(opt.device, apex=mixed_precision) tb_writer = None if opt.prebias: train() # transfer-learn yolo biases for 1 epoch - create_backbone('weights/last.pt') # saved results as backbone.pt - opt.weights = 'weights/backbone.pt' # assign backbone + create_backbone(last) # saved results as backbone.pt + opt.weights = wdir + 'backbone.pt' # assign backbone opt.prebias = False # disable prebias if not opt.evolve: # Train normally From e9437b2178b9a8fd2e01f30af91d17d339c8be94 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 18 Sep 2019 00:54:07 +0200 Subject: [PATCH 1438/2595] updates --- train.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index b1921790..0b22c019 100644 --- a/train.py +++ b/train.py @@ -18,6 +18,7 @@ except: wdir = 'weights' + os.sep # weights dir last = wdir + 'last.pt' best = wdir + 'best.pt' +results_file = 'results.txt' # Hyperparameters (j-series, 50.5 mAP yolov3-320) evolved by @ktian08 https://github.com/ultralytics/yolov3/issues/310 hyp = {'giou': 1.582, # giou loss gain @@ -312,8 +313,8 @@ def train(): save_json=final_epoch and epoch > 0 and 'coco.data' in data) # Write epoch results - with open('results.txt', 'a') as file: - file.write(s + '%10.3g' * 7 % results + '\n') # P, R, mAP, F1, test_losses=(GIoU, obj, cls) + with open(results_file, 'a') as f: + f.write(s + '%10.3g' * 7 % results + '\n') # P, R, mAP, F1, test_losses=(GIoU, obj, cls) # Write Tensorboard results if tb_writer: @@ -331,11 +332,11 @@ def train(): # Save training results save = (not opt.nosave) or (final_epoch and not opt.evolve) or opt.prebias if save: - with open('results.txt', 'r') as file: + with open(results_file, 'r') as f: # Create checkpoint chkpt = {'epoch': epoch, 'best_fitness': best_fitness, - 'training_results': file.read(), + 'training_results': f.read(), 'model': model.module.state_dict() if type( model) is nn.parallel.DistributedDataParallel else model.state_dict(), 'optimizer': None if final_epoch else optimizer.state_dict()} From 1f2e60ff4396bba2be262d98c2370b084b304728 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 18 Sep 2019 02:25:09 +0200 Subject: [PATCH 1439/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 0b22c019..5a8ad401 100644 --- a/train.py +++ b/train.py @@ -75,7 +75,7 @@ def train(): nc = int(data_dict['classes']) # number of classes # Remove previous results - for f in glob.glob('*_batch*.jpg') + glob.glob('results.txt'): + for f in glob.glob('*_batch*.jpg') + glob.glob(results_file): os.remove(f) # Initialize model @@ -120,7 +120,7 @@ def train(): # load results if chkpt.get('training_results') is not None: - with open('results.txt', 'w') as file: + with open(results_file, 'w') as file: file.write(chkpt['training_results']) # write results.txt start_epoch = chkpt['epoch'] + 1 From 80d71fa88360957858a1f5af151bcf00ceb42c39 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 18 Sep 2019 13:23:37 +0200 Subject: [PATCH 1440/2595] updates --- train.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 5a8ad401..6d104ffa 100644 --- a/train.py +++ b/train.py @@ -425,9 +425,17 @@ if __name__ == '__main__': for _ in range(1): # generations to evolve if os.path.exists('evolve.txt'): # if evolve.txt exists: select best hyps and mutate - # Get best hyperparameters + # Select parent(s) x = np.loadtxt('evolve.txt', ndmin=2) - x = x[fitness(x).argmax()] # select best fitness hyps + if len(x) > 1: + parent = 'weighted' # parent selection method: 'single' or 'weighted' + if parent == 'single': + x = x[fitness(x).argmax()] + elif parent == 'weighted': # weighted combination + n = min(10, x.shape[0]) # number to merge + x = x[np.argsort(-fitness(x))][:n] # top n mutations + w = fitness(x) - fitness(x).min() # weights + x = (x[:n] * w.reshape(n, 1)).sum(0) / w.sum() # new parent for i, k in enumerate(hyp.keys()): hyp[k] = x[i + 7] From 975b657262672244d133a11a157a47da73176cd5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Sep 2019 00:36:11 +0200 Subject: [PATCH 1441/2595] updates --- train.py | 1 + 1 file changed, 1 insertion(+) diff --git a/train.py b/train.py index 6d104ffa..c85c8c7b 100644 --- a/train.py +++ b/train.py @@ -152,6 +152,7 @@ def train(): # lf = lambda x: 10 ** (hyp['lrf'] * x / epochs) # exp ramp # lf = lambda x: 1 - 10 ** (hyp['lrf'] * (1 - x / epochs)) # inverse exp ramp # scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf) + # scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=range(59, 70, 1), gamma=0.8) # gradual fall to 0.1*lr0 scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=[round(opt.epochs * x) for x in [0.8, 0.9]], gamma=0.1) scheduler.last_epoch = start_epoch - 1 From 2f436d499aeeb1ce79fa64788d154959db8508ae Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Sep 2019 00:37:22 +0200 Subject: [PATCH 1442/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 0116d38e..775af08f 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -334,7 +334,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing f = '%s%sclassifier%s%g_%g_%s' % (p.parent.parent, os.sep, os.sep, x[0], j, p.name) if not os.path.exists(Path(f).parent): os.makedirs(Path(f).parent) # make new output folder - box = xywh2xyxy(x[1:].reshape(-1, 4)).ravel() + box = xywh2xyxy(x[1:].reshape(-1, 4) * np.array([1, 1, 1.5, 1.5])).ravel() b = np.clip(box, 0, 1) # clip boxes outside of image ret_val = cv2.imwrite(f, img[int(b[1] * h):int(b[3] * h), int(b[0] * w):int(b[2] * w)]) assert ret_val, 'Failure extracting classifier boxes' From 6d8e82c17564335185c5f4ac2ee9cfcdeba06951 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Sep 2019 02:10:55 +0200 Subject: [PATCH 1443/2595] updates --- test.py | 2 +- train.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index 54cac3c1..3f0b115a 100644 --- a/test.py +++ b/test.py @@ -48,7 +48,7 @@ def test(cfg, dataset = LoadImagesAndLabels(test_path, img_size, batch_size) dataloader = DataLoader(dataset, batch_size=batch_size, - num_workers=min(os.cpu_count(), batch_size), + num_workers=min([os.cpu_count(), batch_size, 16]), pin_memory=True, collate_fn=dataset.collate_fn) diff --git a/train.py b/train.py index c85c8c7b..ae31349b 100644 --- a/train.py +++ b/train.py @@ -194,7 +194,7 @@ def train(): # Dataloader dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, - num_workers=min(os.cpu_count(), batch_size), + num_workers=min([os.cpu_count(), batch_size, 16]), shuffle=not opt.rect, # Shuffle=True unless rectangular training is used pin_memory=True, collate_fn=dataset.collate_fn) From dc445f42bf50d48bbbe2677f0d03decc25b7fb26 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Sep 2019 15:31:28 +0200 Subject: [PATCH 1444/2595] updates --- detect.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/detect.py b/detect.py index ec53c697..859a9202 100644 --- a/detect.py +++ b/detect.py @@ -6,7 +6,7 @@ from utils.datasets import * from utils.utils import * -def detect(save_txt=False, save_img=False, stream_img=False): +def detect(save_txt=False, save_img=False, view_img=False): img_size = (320, 192) if ONNX_EXPORT else opt.img_size # (320, 192) or (416, 256) or (608, 352) for (height, width) out, source, weights, half = opt.output, opt.source, opt.weights, opt.half webcam = source == '0' or source.startswith('rtsp') or source.startswith('http') @@ -47,11 +47,11 @@ def detect(save_txt=False, save_img=False, stream_img=False): # Set Dataloader vid_path, vid_writer = None, None if streams: - stream_img = False + view_img = False torch.backends.cudnn.benchmark = True # set True to speed up constant image size inference dataset = LoadStreams(source, img_size=img_size, half=half) elif webcam: - stream_img = True + view_img = True dataset = LoadWebcam(source, img_size=img_size, half=half) else: save_img = True @@ -95,14 +95,14 @@ def detect(save_txt=False, save_img=False, stream_img=False): with open(save_path + '.txt', 'a') as file: file.write(('%g ' * 6 + '\n') % (*xyxy, cls, conf)) - if save_img or stream_img: # Add bbox to image + if save_img or view_img: # Add bbox to image label = '%s %.2f' % (classes[int(cls)], conf) plot_one_box(xyxy, im0, label=label, color=colors[int(cls)]) print('%sDone. (%.3fs)' % (s, time.time() - t)) # Stream results - if stream_img: + if view_img: cv2.imshow(p, im0) # Save results (image with detections) From 6fa58d3c400a527984f04e0ebaae19d44512f0f1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Sep 2019 17:19:43 +0200 Subject: [PATCH 1445/2595] updates --- models.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/models.py b/models.py index 054f2d09..e866ad6b 100755 --- a/models.py +++ b/models.py @@ -301,6 +301,8 @@ def load_darknet_weights(self, weights, cutoff=-1): gdrive_download(id='1oPCHKsM2JpM-zgyepQciGli9X0MTsJCO', name=weights) elif file == 'darknet53.conv.74': gdrive_download(id='18xqvs_uwAqfTXp-LJCYLYNHBOcrwbrp0', name=weights) + elif file == 'yolov3-spp.pt': + gdrive_download(id='1vFlbJ_dXPvtwaLLOu-twnjK4exdFiQ73', name=weights) else: try: # download from pjreddie.com url = 'https://pjreddie.com/media/files/' + file From 728a5698bcf7b2d1156f4812309abd75d3dd0c55 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Sep 2019 17:31:07 +0200 Subject: [PATCH 1446/2595] updates --- models.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/models.py b/models.py index e866ad6b..054f2d09 100755 --- a/models.py +++ b/models.py @@ -301,8 +301,6 @@ def load_darknet_weights(self, weights, cutoff=-1): gdrive_download(id='1oPCHKsM2JpM-zgyepQciGli9X0MTsJCO', name=weights) elif file == 'darknet53.conv.74': gdrive_download(id='18xqvs_uwAqfTXp-LJCYLYNHBOcrwbrp0', name=weights) - elif file == 'yolov3-spp.pt': - gdrive_download(id='1vFlbJ_dXPvtwaLLOu-twnjK4exdFiQ73', name=weights) else: try: # download from pjreddie.com url = 'https://pjreddie.com/media/files/' + file From 870020ed15aff19bc211149dbbb1e628e5b03c57 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Sep 2019 17:31:46 +0200 Subject: [PATCH 1447/2595] updates --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 5ff2b99a..8e0ca295 100644 --- a/Dockerfile +++ b/Dockerfile @@ -38,7 +38,8 @@ COPY . /usr/src/app # Copy weights #RUN python3 -c "from utils.google_utils import *; \ # gdrive_download(id='18xqvs_uwAqfTXp-LJCYLYNHBOcrwbrp0', name='weights/darknet53.conv.74'); \ -# gdrive_download(id='1oPCHKsM2JpM-zgyepQciGli9X0MTsJCO', name='weights/yolov3-spp.weights')" +# gdrive_download(id='1oPCHKsM2JpM-zgyepQciGli9X0MTsJCO', name='weights/yolov3-spp.weights'); \ +# gdrive_download(id='1vFlbJ_dXPvtwaLLOu-twnjK4exdFiQ73', name='weights/yolov3-spp.pt)" # --------------------------------------------------- Extras Below --------------------------------------------------- From c24702941f04f973a3a440b8ba6d65a9add481e1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Sep 2019 18:05:04 +0200 Subject: [PATCH 1448/2595] updates --- models.py | 54 ++++++++++++++++++++++++++++++++++-------------------- test.py | 1 + train.py | 1 + 3 files changed, 36 insertions(+), 20 deletions(-) diff --git a/models.py b/models.py index 054f2d09..4933f178 100755 --- a/models.py +++ b/models.py @@ -291,27 +291,9 @@ def create_grids(self, img_size=416, ng=(13, 13), device='cpu', type=torch.float def load_darknet_weights(self, weights, cutoff=-1): # Parses and loads the weights stored in 'weights' - # cutoff: save layers between 0 and cutoff (if cutoff = -1 all are saved) + + # Establish cutoffs (load layers between 0 and cutoff. if cutoff = -1 all are loaded) file = Path(weights).name - - # Try to download weights if not available locally - msg = weights + ' missing, download from https://drive.google.com/drive/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI' - if not os.path.isfile(weights): - if file == 'yolov3-spp.weights': - gdrive_download(id='1oPCHKsM2JpM-zgyepQciGli9X0MTsJCO', name=weights) - elif file == 'darknet53.conv.74': - gdrive_download(id='18xqvs_uwAqfTXp-LJCYLYNHBOcrwbrp0', name=weights) - else: - try: # download from pjreddie.com - url = 'https://pjreddie.com/media/files/' + file - print('Downloading ' + url) - os.system('curl -f ' + url + ' -o ' + weights) - except IOError: - print(msg) - os.system('rm ' + weights) # remove partial downloads - assert os.path.exists(weights), msg # download missing weights from Google Drive - - # Establish cutoffs if file == 'darknet53.conv.74': cutoff = 75 elif file == 'yolov3-tiny.conv.15': @@ -417,3 +399,35 @@ def convert(cfg='cfg/yolov3-spp.cfg', weights='weights/yolov3-spp.weights'): else: print('Error: extension not supported.') + + +def attempt_download(weights): + # Attempt to download pretrained weights if not found locally + + msg = weights + ' missing, download from https://drive.google.com/drive/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI' + if not os.path.isfile(weights): + file = Path(weights).name + + if file == 'yolov3-spp.weights': + gdrive_download(id='1oPCHKsM2JpM-zgyepQciGli9X0MTsJCO', name=weights) + elif file == 'yolov3-spp.pt': + gdrive_download(id='1vFlbJ_dXPvtwaLLOu-twnjK4exdFiQ73', name=weights) + elif file == 'yolov3.pt': + gdrive_download(id='11uy0ybbOXA2hc-NJkJbbbkDwNX1QZDlz', name=weights) + elif file == 'yolov3-tiny.pt': + gdrive_download(id='1qKSgejNeNczgNNiCn9ZF_o55GFk1DjY_', name=weights) + elif file == 'darknet53.conv.74': + gdrive_download(id='18xqvs_uwAqfTXp-LJCYLYNHBOcrwbrp0', name=weights) + elif file == 'yolov3-tiny.conv.15': + gdrive_download(id='140PnSedCsGGgu3rOD6Ez4oI6cdDzerLC', name=weights) + + else: + try: # download from pjreddie.com + url = 'https://pjreddie.com/media/files/' + file + print('Downloading ' + url) + os.system('curl -f ' + url + ' -o ' + weights) + except IOError: + print(msg) + os.system('rm ' + weights) # remove partial downloads + + assert os.path.exists(weights), msg # download missing weights from Google Drive diff --git a/test.py b/test.py index 3f0b115a..100929a8 100644 --- a/test.py +++ b/test.py @@ -27,6 +27,7 @@ def test(cfg, model = Darknet(cfg, img_size).to(device) # Load weights + attempt_download(weights) if weights.endswith('.pt'): # pytorch format model.load_state_dict(torch.load(weights, map_location=device)['model']) else: # darknet format diff --git a/train.py b/train.py index ae31349b..aaef96c8 100644 --- a/train.py +++ b/train.py @@ -100,6 +100,7 @@ def train(): cutoff = -1 # backbone reaches to cutoff layer start_epoch = 0 best_fitness = 0. + attempt_download(weights) if weights.endswith('.pt'): # pytorch format # possible weights are 'last.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt' etc. if opt.bucket: From 5bacf9e0b87196cc542e81688d25d24bb8500fee Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Sep 2019 18:05:27 +0200 Subject: [PATCH 1449/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 4933f178..cf3feeb2 100755 --- a/models.py +++ b/models.py @@ -88,7 +88,7 @@ def create_modules(module_defs, img_size, arc): b = [10, -0.1] elif arc == 'Fdefault': # Focal default no pw (28 cls, 21 obj, no pw) b = [-2.1, -1.8] - elif arc == 'uFBCE' or arc =='uFBCEpw': # unified FocalBCE (5120 obj, 80 classes) + elif arc == 'uFBCE' or arc == 'uFBCEpw': # unified FocalBCE (5120 obj, 80 classes) b = [0, -6.5] elif arc == 'uFCE': # unified FocalCE (64 cls, 1 background + 80 classes) b = [7.7, -1.1] From de0612ca093b4e238d13581cfaf00a189e8826d9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Sep 2019 18:08:21 +0200 Subject: [PATCH 1450/2595] updates --- train.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index aaef96c8..bd056686 100644 --- a/train.py +++ b/train.py @@ -108,11 +108,11 @@ def train(): chkpt = torch.load(weights, map_location=device) # load model - if opt.transfer: - chkpt['model'] = {k: v for k, v in chkpt['model'].items() if model.state_dict()[k].numel() == v.numel()} - model.load_state_dict(chkpt['model'], strict=False) - else: - model.load_state_dict(chkpt['model']) + # if opt.transfer: + chkpt['model'] = {k: v for k, v in chkpt['model'].items() if model.state_dict()[k].numel() == v.numel()} + model.load_state_dict(chkpt['model'], strict=False) + # else: + # model.load_state_dict(chkpt['model']) # load optimizer if chkpt['optimizer'] is not None: From 0f3f6c03e77ea340a6f992ac9cc756bf891f16a7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Sep 2019 18:09:16 +0200 Subject: [PATCH 1451/2595] updates --- detect.py | 1 + 1 file changed, 1 insertion(+) diff --git a/detect.py b/detect.py index 859a9202..846eb004 100644 --- a/detect.py +++ b/detect.py @@ -22,6 +22,7 @@ def detect(save_txt=False, save_img=False, view_img=False): model = Darknet(opt.cfg, img_size) # Load weights + attempt_download(weights) if weights.endswith('.pt'): # pytorch format model.load_state_dict(torch.load(weights, map_location=device)['model']) else: # darknet format From b5db03827fd5817d541068365916687a003ade09 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Sep 2019 18:43:29 +0200 Subject: [PATCH 1452/2595] updates --- detect.py | 12 ++++-------- utils/datasets.py | 10 ++++++---- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/detect.py b/detect.py index 846eb004..4013c4ab 100644 --- a/detect.py +++ b/detect.py @@ -9,8 +9,7 @@ from utils.utils import * def detect(save_txt=False, save_img=False, view_img=False): img_size = (320, 192) if ONNX_EXPORT else opt.img_size # (320, 192) or (416, 256) or (608, 352) for (height, width) out, source, weights, half = opt.output, opt.source, opt.weights, opt.half - webcam = source == '0' or source.startswith('rtsp') or source.startswith('http') - streams = 'streams' in source and source.endswith('.txt') + webcam = source == '0' or source.startswith('rtsp') or source.startswith('http') or source.endswith('.txt') # Initialize device = torch_utils.select_device(device='cpu' if ONNX_EXPORT else opt.device) @@ -47,13 +46,10 @@ def detect(save_txt=False, save_img=False, view_img=False): # Set Dataloader vid_path, vid_writer = None, None - if streams: - view_img = False + if webcam: + view_img = True torch.backends.cudnn.benchmark = True # set True to speed up constant image size inference dataset = LoadStreams(source, img_size=img_size, half=half) - elif webcam: - view_img = True - dataset = LoadWebcam(source, img_size=img_size, half=half) else: save_img = True dataset = LoadImages(source, img_size=img_size, half=half) @@ -74,7 +70,7 @@ def detect(save_txt=False, save_img=False, view_img=False): pred, _ = model(img) for i, det in enumerate(non_max_suppression(pred, opt.conf_thres, opt.nms_thres)): # detections per image - if streams: # batch_size > 1 + if webcam: # batch_size >= 1 p, s, im0 = path[i], '%g: ' % i, im0s[i] else: p, s, im0 = path, '', im0s diff --git a/utils/datasets.py b/utils/datasets.py index 775af08f..15e27d5a 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -186,11 +186,13 @@ class LoadWebcam: # for inference class LoadStreams: # multiple IP or RTSP cameras - def __init__(self, path='streams.txt', img_size=416, half=False): + def __init__(self, sources='streams.txt', img_size=416, half=False): self.img_size = img_size self.half = half # half precision fp16 images - with open(path, 'r') as f: - sources = [x.strip() for x in f.read().splitlines() if len(x.strip())] + + if os.path.isfile(sources): + with open(sources, 'r') as f: + sources = [x.strip() for x in f.read().splitlines() if len(x.strip())] n = len(sources) self.imgs = [None] * n @@ -208,7 +210,7 @@ class LoadStreams: # multiple IP or RTSP cameras thread.start() print('') # newline - time.sleep(0.5) + time.sleep(0.5) # allow connections to start def update(self, index, cap): # Read next stream frame in a daemon thread From fdfc4a5e63dd697acbe06a003d96c1f427a97e4b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Sep 2019 18:54:16 +0200 Subject: [PATCH 1453/2595] updates --- detect.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index 4013c4ab..826785ce 100644 --- a/detect.py +++ b/detect.py @@ -6,9 +6,9 @@ from utils.datasets import * from utils.utils import * -def detect(save_txt=False, save_img=False, view_img=False): +def detect(save_txt=False, save_img=False): img_size = (320, 192) if ONNX_EXPORT else opt.img_size # (320, 192) or (416, 256) or (608, 352) for (height, width) - out, source, weights, half = opt.output, opt.source, opt.weights, opt.half + out, source, weights, half, view_img = opt.output, opt.source, opt.weights, opt.half, opt.view_img webcam = source == '0' or source.startswith('rtsp') or source.startswith('http') or source.endswith('.txt') # Initialize @@ -139,6 +139,7 @@ if __name__ == '__main__': parser.add_argument('--fourcc', type=str, default='mp4v', help='output video codec (verify ffmpeg support)') parser.add_argument('--half', action='store_true', help='half precision FP16 inference') parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') + parser.add_argument('--view-img', action='store_true', help='display results') opt = parser.parse_args() print(opt) From 0e52b8f361f14ab0e0c7ba6972c9062e4ca058ac Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Sep 2019 19:09:59 +0200 Subject: [PATCH 1454/2595] updates --- detect.py | 4 ++-- utils/datasets.py | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index 826785ce..5e199a8d 100644 --- a/detect.py +++ b/detect.py @@ -47,7 +47,7 @@ def detect(save_txt=False, save_img=False): # Set Dataloader vid_path, vid_writer = None, None if webcam: - view_img = True + # view_img = True torch.backends.cudnn.benchmark = True # set True to speed up constant image size inference dataset = LoadStreams(source, img_size=img_size, half=half) else: @@ -131,7 +131,7 @@ if __name__ == '__main__': parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') - parser.add_argument('--source', type=str, default='data/samples', help='source') # input file/folder, 0 for webcam + parser.add_argument('--source', type=str, default='rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa', help='source') # input file/folder, 0 for webcam parser.add_argument('--output', type=str, default='output', help='output folder') # output folder parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.3, help='object confidence threshold') diff --git a/utils/datasets.py b/utils/datasets.py index 15e27d5a..e3804711 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -193,6 +193,8 @@ class LoadStreams: # multiple IP or RTSP cameras if os.path.isfile(sources): with open(sources, 'r') as f: sources = [x.strip() for x in f.read().splitlines() if len(x.strip())] + else: + sources = [sources] n = len(sources) self.imgs = [None] * n From dd913d01585a2076b37e5466f183541798719e81 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 20 Sep 2019 13:21:57 +0200 Subject: [PATCH 1455/2595] updates --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index cf3feeb2..1ca41cf6 100755 --- a/models.py +++ b/models.py @@ -405,7 +405,7 @@ def attempt_download(weights): # Attempt to download pretrained weights if not found locally msg = weights + ' missing, download from https://drive.google.com/drive/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI' - if not os.path.isfile(weights): + if weights and not os.path.isfile(weights): file = Path(weights).name if file == 'yolov3-spp.weights': @@ -430,4 +430,4 @@ def attempt_download(weights): print(msg) os.system('rm ' + weights) # remove partial downloads - assert os.path.exists(weights), msg # download missing weights from Google Drive + assert os.path.exists(weights), msg # download missing weights from Google Drive From a81f8ec0f385c5feec44582ad293598e4349a07d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 20 Sep 2019 13:22:11 +0200 Subject: [PATCH 1456/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index c8458c8c..31532d9f 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -839,7 +839,7 @@ def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() ax[i].get_shared_y_axes().join(ax[i], ax[i - 5]) fig.tight_layout() - ax[0].legend() + ax[1].legend() fig.savefig('results.png', dpi=200) From 9a18166382d07985b6c2b671fdb4b4d5bfac1ef5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 20 Sep 2019 14:58:57 +0200 Subject: [PATCH 1457/2595] updates --- utils/datasets.py | 56 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 2 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index e3804711..e5052f03 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -447,6 +447,10 @@ class LoadImagesAndLabels(Dataset): # for training/testing scale=hyp['scale'], shear=hyp['shear']) + # Cutout + if random.random() < 0.9: + labels = cutout(img, labels) + nL = len(labels) # number of labels if nL: # convert xyxy to xywh @@ -459,14 +463,14 @@ class LoadImagesAndLabels(Dataset): # for training/testing if self.augment: # random left-right flip lr_flip = True - if lr_flip and random.random() > 0.5: + if lr_flip and random.random() < 0.5: img = np.fliplr(img) if nL: labels[:, 1] = 1 - labels[:, 1] # random up-down flip ud_flip = False - if ud_flip and random.random() > 0.5: + if ud_flip and random.random() < 0.5: img = np.flipud(img) if nL: labels[:, 2] = 1 - labels[:, 2] @@ -596,6 +600,54 @@ def random_affine(img, targets=(), degrees=10, translate=.1, scale=.1, shear=10) return imw, targets +def cutout(image, labels): + # https://arxiv.org/abs/1708.04552 + # https://github.com/hysts/pytorch_cutout/blob/master/dataloader.py + # https://towardsdatascience.com/when-conventional-wisdom-fails-revisiting-data-augmentation-for-self-driving-cars-4831998c5509 + h, w = image.shape[:2] + + def bbox_ioa(box1, box2, x1y1x2y2=True): + # Returns the intersection over box2 area given box1, box2. box1 is 4, box2 is nx4. boxes are x1y1x2y2 + box2 = box2.transpose() + + # Get the coordinates of bounding boxes + # x1, y1, x2, y2 = box1 + b1_x1, b1_y1, b1_x2, b1_y2 = box1[0], box1[1], box1[2], box1[3] + b2_x1, b2_y1, b2_x2, b2_y2 = box2[0], box2[1], box2[2], box2[3] + + # Intersection area + inter_area = (np.minimum(b1_x2, b2_x2) - np.maximum(b1_x1, b2_x1)).clip(0) * \ + (np.minimum(b1_y2, b2_y2) - np.maximum(b1_y1, b2_y1)).clip(0) + + # box2 area + box2_area = (b2_x2 - b2_x1) * (b2_y2 - b2_y1) + 1e-16 + + # Intersection over box2 area + return inter_area / box2_area + + # random mask_size up to 50% image size + mask_h = random.randint(1, int(h * 0.5)) + mask_w = random.randint(1, int(w * 0.5)) + + # box center + cx = random.randint(0, h) + cy = random.randint(0, w) + + xmin = max(0, cx - mask_w // 2) + ymin = max(0, cy - mask_h // 2) + xmax = min(w, xmin + mask_w) + ymax = min(h, ymin + mask_h) + + # apply random color mask + mask_color = [random.randint(0, 255) for _ in range(3)] + image[ymin:ymax, xmin:xmax] = mask_color + + # return unobscured labels + box = np.array([xmin, ymin, xmax, ymax], dtype=np.float32) + ioa = bbox_ioa(box, labels[:, 1:5]) # intersection over area + return labels[ioa < 0.8] # > 80% obscured labels removed + + def convert_images2bmp(): # cv2.imread() jpg at 230 img/s, *.bmp at 400 img/s for path in ['../coco/images/val2014/', '../coco/images/train2014/']: From 2ad3276c77ae375c2844cb1aeb9dacf7b28e89db Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 20 Sep 2019 15:02:32 +0200 Subject: [PATCH 1458/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index e5052f03..c58720d6 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -645,7 +645,7 @@ def cutout(image, labels): # return unobscured labels box = np.array([xmin, ymin, xmax, ymax], dtype=np.float32) ioa = bbox_ioa(box, labels[:, 1:5]) # intersection over area - return labels[ioa < 0.8] # > 80% obscured labels removed + return labels[ioa < 0.90] # > 90% obscured labels removed def convert_images2bmp(): From 96c442c3c30a554701c0ddcf4d121c33fd820f76 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 20 Sep 2019 15:23:08 +0200 Subject: [PATCH 1459/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 5e199a8d..88ca3e9e 100644 --- a/detect.py +++ b/detect.py @@ -131,7 +131,7 @@ if __name__ == '__main__': parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') - parser.add_argument('--source', type=str, default='rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa', help='source') # input file/folder, 0 for webcam + parser.add_argument('--source', type=str, default='data/samples', help='source') # input file/folder, 0 for webcam parser.add_argument('--output', type=str, default='output', help='output folder') # output folder parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.3, help='object confidence threshold') From c9ba8ea366143edfc55bcec7e7c10b56b21bced0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 20 Sep 2019 15:24:00 +0200 Subject: [PATCH 1460/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 88ca3e9e..826785ce 100644 --- a/detect.py +++ b/detect.py @@ -47,7 +47,7 @@ def detect(save_txt=False, save_img=False): # Set Dataloader vid_path, vid_writer = None, None if webcam: - # view_img = True + view_img = True torch.backends.cudnn.benchmark = True # set True to speed up constant image size inference dataset = LoadStreams(source, img_size=img_size, half=half) else: From eeb4cbc5c1b8e51fc9f5efca2ce1474799ec39d5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 20 Sep 2019 17:18:02 +0200 Subject: [PATCH 1461/2595] updates --- utils/datasets.py | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/datasets.py b/utils/datasets.py index c58720d6..1e220974 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -187,6 +187,7 @@ class LoadWebcam: # for inference class LoadStreams: # multiple IP or RTSP cameras def __init__(self, sources='streams.txt', img_size=416, half=False): + self.mode = 'images' self.img_size = img_size self.half = half # half precision fp16 images From db49211d70373a61c590455d73f9e570e5b2d1a6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 20 Sep 2019 20:31:37 +0200 Subject: [PATCH 1462/2595] updates --- train.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/train.py b/train.py index bd056686..ec861237 100644 --- a/train.py +++ b/train.py @@ -429,15 +429,14 @@ if __name__ == '__main__': if os.path.exists('evolve.txt'): # if evolve.txt exists: select best hyps and mutate # Select parent(s) x = np.loadtxt('evolve.txt', ndmin=2) - if len(x) > 1: - parent = 'weighted' # parent selection method: 'single' or 'weighted' - if parent == 'single': - x = x[fitness(x).argmax()] - elif parent == 'weighted': # weighted combination - n = min(10, x.shape[0]) # number to merge - x = x[np.argsort(-fitness(x))][:n] # top n mutations - w = fitness(x) - fitness(x).min() # weights - x = (x[:n] * w.reshape(n, 1)).sum(0) / w.sum() # new parent + parent = 'weighted' # parent selection method: 'single' or 'weighted' + if parent == 'single' or len(x) == 1: + x = x[fitness(x).argmax()] + elif parent == 'weighted': # weighted combination + n = min(10, x.shape[0]) # number to merge + x = x[np.argsort(-fitness(x))][:n] # top n mutations + w = fitness(x) - fitness(x).min() # weights + x = (x[:n] * w.reshape(n, 1)).sum(0) / w.sum() # new parent for i, k in enumerate(hyp.keys()): hyp[k] = x[i + 7] From 7de6584a343ad79bce1f8bff9d6fc51da515360b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 21 Sep 2019 02:46:16 +0200 Subject: [PATCH 1463/2595] updates --- utils/datasets.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 1e220974..46a29b07 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -313,8 +313,9 @@ class LoadImagesAndLabels(Dataset): # for training/testing if cache_labels or image_weights: # cache labels for faster training self.labels = [np.zeros((0, 5))] * n extract_bounding_boxes = False + create_datasubset = False pbar = tqdm(self.label_files, desc='Reading labels') - nm, nf, ne = 0, 0, 0 # number missing, number found, number empty + nm, nf, ne, ns = 0, 0, 0, 0 # number missing, number found, number empty, number datasubset for i, file in enumerate(pbar): try: with open(file, 'r') as f: @@ -330,6 +331,18 @@ class LoadImagesAndLabels(Dataset): # for training/testing self.labels[i] = l nf += 1 # file found + # Create subdataset (a smaller dataset) + if create_datasubset and ns < 1E4: + if ns == 0: + create_folder(path='./datasubset') + os.makedirs('./datasubset/images') + exclude_classes = 43 + if exclude_classes not in l[:, 0]: + ns += 1 + # shutil.copy(src=self.img_files[i], dst='./datasubset/images/') # copy image + with open('./datasubset/images.txt', 'a') as f: + f.write(self.img_files[i] + '\n') + # Extract object detection boxes for a second stage classifier if extract_bounding_boxes: p = Path(self.img_files[i]) @@ -669,3 +682,10 @@ def convert_images2bmp(): '/Users/glennjocher/PycharmProjects/', '../') with open(label_path.replace('5k', '5k_bmp'), 'w') as file: file.write(lines) + + +def create_folder(path='./new_folder'): + # Create folder + if os.path.exists(path): + shutil.rmtree(path) # delete output folder + os.makedirs(path) # make new output folder From ccb971aa3c5c9ffc89327649f9dcc1abc460d0ac Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 21 Sep 2019 23:55:20 +0200 Subject: [PATCH 1464/2595] updates --- utils/datasets.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 46a29b07..dabdedcd 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -657,9 +657,11 @@ def cutout(image, labels): image[ymin:ymax, xmin:xmax] = mask_color # return unobscured labels - box = np.array([xmin, ymin, xmax, ymax], dtype=np.float32) - ioa = bbox_ioa(box, labels[:, 1:5]) # intersection over area - return labels[ioa < 0.90] # > 90% obscured labels removed + if len(labels): + box = np.array([xmin, ymin, xmax, ymax], dtype=np.float32) + ioa = bbox_ioa(box, labels[:, 1:5]) # intersection over area + labels = labels[ioa < 0.90] # remove >90% obscured labels + return labels def convert_images2bmp(): From 6daebd39798c593bf68a2a207d9f1e403aefb73a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 25 Sep 2019 00:38:26 +0200 Subject: [PATCH 1465/2595] updates --- utils/datasets.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index dabdedcd..08b55466 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -208,12 +208,11 @@ class LoadStreams: # multiple IP or RTSP cameras w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) fps = cap.get(cv2.CAP_PROP_FPS) % 100 - print(' success (%gx%g at %.2f FPS).' % (w, h, fps)) + _, self.imgs[i] = cap.read() # guarantee first frame thread = Thread(target=self.update, args=([i, cap]), daemon=True) + print(' success (%gx%g at %.2f FPS).' % (w, h, fps)) thread.start() - print('') # newline - time.sleep(0.5) # allow connections to start def update(self, index, cap): # Read next stream frame in a daemon thread From 33e025838f5d2a4cf6155d9f1fe8eeade12fd8fc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Sep 2019 03:30:31 +0200 Subject: [PATCH 1466/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index ec861237..718bfeba 100644 --- a/train.py +++ b/train.py @@ -136,7 +136,7 @@ def train(): for p in optimizer.param_groups: # lower param count allows more aggressive training settings: i.e. SGD ~0.1 lr0, ~0.9 momentum - p['lr'] *= 100 + p['lr'] *= 100 if opt.prebias else 10 # lr gain if p.get('momentum') is not None: # for SGD but not Adam p['momentum'] *= 0.9 From 3072d723750cfd949180b2d0e30de55c7b377147 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Sep 2019 12:06:26 +0200 Subject: [PATCH 1467/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 718bfeba..deb74928 100644 --- a/train.py +++ b/train.py @@ -136,7 +136,7 @@ def train(): for p in optimizer.param_groups: # lower param count allows more aggressive training settings: i.e. SGD ~0.1 lr0, ~0.9 momentum - p['lr'] *= 100 if opt.prebias else 10 # lr gain + p['lr'] *= 100 # lr gain if p.get('momentum') is not None: # for SGD but not Adam p['momentum'] *= 0.9 From 2487b0694f362b6927a469286c801519267c2487 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Sep 2019 12:08:40 +0200 Subject: [PATCH 1468/2595] updates --- train.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index deb74928..7d394829 100644 --- a/train.py +++ b/train.py @@ -134,11 +134,12 @@ def train(): if opt.transfer or opt.prebias: # transfer learning edge (yolo) layers nf = int(model.module_defs[model.yolo_layers[0] - 1]['filters']) # yolo layer size (i.e. 255) - for p in optimizer.param_groups: - # lower param count allows more aggressive training settings: i.e. SGD ~0.1 lr0, ~0.9 momentum - p['lr'] *= 100 # lr gain - if p.get('momentum') is not None: # for SGD but not Adam - p['momentum'] *= 0.9 + if opt.prebias: + for p in optimizer.param_groups: + # lower param count allows more aggressive training settings: i.e. SGD ~0.1 lr0, ~0.9 momentum + p['lr'] *= 100 # lr gain + if p.get('momentum') is not None: # for SGD but not Adam + p['momentum'] *= 0.9 for p in model.parameters(): if opt.prebias and p.numel() == nf: # train (yolo biases) From 163025649a3f406c2ebcf699c91183b1112a3ba8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Sep 2019 12:52:16 +0200 Subject: [PATCH 1469/2595] updates --- utils/torch_utils.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index aa42cb0f..ef87d6ca 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -14,10 +14,11 @@ def init_seeds(seed=0): torch.backends.cudnn.benchmark = False -def select_device(device=None, apex=False): - if device == 'cpu': +def select_device(device='', apex=False): + if device.lower() == 'cpu': pass elif device: # Set environment variable if device is specified + assert torch.cuda.is_available(), 'CUDA unavailable, invalid device %s requested' % device os.environ['CUDA_VISIBLE_DEVICES'] = device # apex if mixed precision training https://github.com/NVIDIA/apex From cf462429d447f8c9fe6ffd1ac3ea41e5622073e4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Sep 2019 12:54:09 +0200 Subject: [PATCH 1470/2595] updates --- utils/torch_utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index ef87d6ca..7c099875 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -15,6 +15,7 @@ def init_seeds(seed=0): def select_device(device='', apex=False): + # device = '' or 'cpu' or '0' or '0,1' if device.lower() == 'cpu': pass elif device: # Set environment variable if device is specified From f146692ad0ae22daa6507c39efb61f7608579691 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Sep 2019 12:58:26 +0200 Subject: [PATCH 1471/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 7d394829..4f8e0eb3 100644 --- a/train.py +++ b/train.py @@ -443,7 +443,7 @@ if __name__ == '__main__': # Mutate np.random.seed(int(time.time())) - s = [.1, .1, .1, .1, .1, .1, .1, .0, .02, .2, .2, .2, .2, .2, .2, .2, .2] # sigmas + s = [.2, .2, .2, .2, .2, .2, .2, .0, .02, .2, .2, .2, .2, .2, .2, .2, .2] # sigmas for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) hyp[k] *= float(x) # vary by sigmas From df8529a74781a802abe1720d64de7591c4b64fda Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Sep 2019 13:52:37 +0200 Subject: [PATCH 1472/2595] updates --- utils/torch_utils.py | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 7c099875..2971e33b 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -15,33 +15,28 @@ def init_seeds(seed=0): def select_device(device='', apex=False): - # device = '' or 'cpu' or '0' or '0,1' - if device.lower() == 'cpu': - pass - elif device: # Set environment variable if device is specified - assert torch.cuda.is_available(), 'CUDA unavailable, invalid device %s requested' % device - os.environ['CUDA_VISIBLE_DEVICES'] = device + # device = 'cpu' or '0' or '0,1,2,3' + cpu_request = device.lower() == 'cpu' + if device and not cpu_request: # if device requested other than 'cpu' + os.environ['CUDA_VISIBLE_DEVICES'] = device # set environment variable + assert torch.cuda.is_available(), 'CUDA unavailable, invalid device %s requested' % device # check availablity - # apex if mixed precision training https://github.com/NVIDIA/apex - cuda = False if device == 'cpu' else torch.cuda.is_available() - device = torch.device('cuda:0' if cuda else 'cpu') - - if not cuda: - print('Using CPU') + cuda = False if cpu_request else torch.cuda.is_available() if cuda: c = 1024 ** 2 # bytes to MB ng = torch.cuda.device_count() x = [torch.cuda.get_device_properties(i) for i in range(ng)] - cuda_str = 'Using CUDA ' + ('Apex ' if apex else '') + cuda_str = 'Using CUDA ' + ('Apex ' if apex else '') # apex for mixed precision https://github.com/NVIDIA/apex for i in range(0, ng): if i == 1: - # torch.cuda.set_device(0) # OPTIONAL: Set GPU ID cuda_str = ' ' * len(cuda_str) print("%sdevice%g _CudaDeviceProperties(name='%s', total_memory=%dMB)" % (cuda_str, i, x[i].name, x[i].total_memory / c)) + else: + print('Using CPU') print('') # skip a line - return device + return torch.device('cuda:0' if cuda else 'cpu') def fuse_conv_and_bn(conv, bn): From c6d3efbf95d7d5fc6b2c5dc309da59e489c6aba2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Sep 2019 21:57:00 +0200 Subject: [PATCH 1473/2595] updates --- utils/datasets.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 08b55466..c7d2ab12 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -232,7 +232,7 @@ class LoadStreams: # multiple IP or RTSP cameras raise StopIteration # Letterbox - img = [letterbox(x, new_shape=self.img_size)[0] for x in img0] + img = [letterbox(x, new_shape=self.img_size, interp=cv2.INTER_LINEAR)[0] for x in img0] # Stack img = np.stack(img, 0) @@ -507,7 +507,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing return torch.stack(img, 0), torch.cat(label, 0), path, hw -def letterbox(img, new_shape=416, color=(128, 128, 128), mode='auto'): +def letterbox(img, new_shape=416, color=(128, 128, 128), mode='auto', interp=cv2.INTER_AREA): # Resize a rectangular image to a 32 pixel multiple rectangle # https://github.com/ultralytics/yolov3/issues/232 shape = img.shape[:2] # current shape [height, width] @@ -535,7 +535,7 @@ def letterbox(img, new_shape=416, color=(128, 128, 128), mode='auto'): ratiow, ratioh = new_shape / shape[1], new_shape / shape[0] if shape[::-1] != new_unpad: # resize - img = cv2.resize(img, new_unpad, interpolation=cv2.INTER_AREA) # INTER_AREA is better, INTER_LINEAR is faster + img = cv2.resize(img, new_unpad, interpolation=interp) # INTER_AREA is better, INTER_LINEAR is faster top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1)) left, right = int(round(dw - 0.1)), int(round(dw + 0.1)) img = cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color) # add border From b421afa508c8c28de414c0f364c47e4efb57b8db Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Sep 2019 23:35:04 +0200 Subject: [PATCH 1474/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 31532d9f..8b820a97 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -479,7 +479,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): # Select predicted classes class_conf = class_conf[i] - class_pred = class_pred[i].unsqueeze(1).float() + class_pred = class_pred[i].unsqueeze(1).type_as(class_conf) # Box (center x, center y, width, height) to (x1, y1, x2, y2) pred[:, :4] = xywh2xyxy(pred[:, :4]) From 286e851fe7c83d7d0906171fa79bcface9caea78 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Sep 2019 23:36:42 +0200 Subject: [PATCH 1475/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 8b820a97..c55ba4bf 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -451,7 +451,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): min_wh = 2 # (pixels) minimum box width and height output = [None] * len(prediction) - for image_i, pred in enumerate(prediction): + for image_i, pred in enumerate(prediction.float()): # Experiment: Prior class size rejection # x, y, w, h = pred[:, 0], pred[:, 1], pred[:, 2], pred[:, 3] # a = w * h # area From 4aa60ea4992208ae59aa201ebaaaf2d21f318c57 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Sep 2019 23:40:14 +0200 Subject: [PATCH 1476/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index c55ba4bf..8b820a97 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -451,7 +451,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): min_wh = 2 # (pixels) minimum box width and height output = [None] * len(prediction) - for image_i, pred in enumerate(prediction.float()): + for image_i, pred in enumerate(prediction): # Experiment: Prior class size rejection # x, y, w, h = pred[:, 0], pred[:, 1], pred[:, 2], pred[:, 3] # a = w * h # area From b694e52e2db0f4cb63690b34ffb52a75a6c4f788 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Sep 2019 23:46:45 +0200 Subject: [PATCH 1477/2595] updates --- detect.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/detect.py b/detect.py index 826785ce..9416c184 100644 --- a/detect.py +++ b/detect.py @@ -69,6 +69,9 @@ def detect(save_txt=False, save_img=False): img = img.unsqueeze(0) pred, _ = model(img) + if opt.half: + pred = pred.float() + for i, det in enumerate(non_max_suppression(pred, opt.conf_thres, opt.nms_thres)): # detections per image if webcam: # batch_size >= 1 p, s, im0 = path[i], '%g: ' % i, im0s[i] From 004afa50fcd5c8d30b5078c5685b4dcfb287a679 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 28 Sep 2019 01:47:22 +0200 Subject: [PATCH 1478/2595] updates --- utils/datasets.py | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index c7d2ab12..6c9bfe62 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -218,7 +218,7 @@ class LoadStreams: # multiple IP or RTSP cameras # Read next stream frame in a daemon thread while cap.isOpened(): _, self.imgs[index] = cap.read() - time.sleep(0.030) # 33.3 FPS to keep buffer empty + time.sleep(0.01) # 33.3 FPS to keep buffer empty def __iter__(self): self.count = -1 @@ -624,7 +624,6 @@ def cutout(image, labels): box2 = box2.transpose() # Get the coordinates of bounding boxes - # x1, y1, x2, y2 = box1 b1_x1, b1_y1, b1_x2, b1_y2 = box1[0], box1[1], box1[2], box1[3] b2_x1, b2_y1, b2_x2, b2_y2 = box2[0], box2[1], box2[2], box2[3] @@ -639,15 +638,13 @@ def cutout(image, labels): return inter_area / box2_area # random mask_size up to 50% image size - mask_h = random.randint(1, int(h * 0.5)) - mask_w = random.randint(1, int(w * 0.5)) + s = 0.5 # scale + mask_h = random.randint(1, int(h * s)) + mask_w = random.randint(1, int(w * s)) - # box center - cx = random.randint(0, h) - cy = random.randint(0, w) - - xmin = max(0, cx - mask_w // 2) - ymin = max(0, cy - mask_h // 2) + # box + xmin = max(0, random.randint(0, w) - mask_w // 2) + ymin = max(0, random.randint(0, h) - mask_h // 2) xmax = min(w, xmin + mask_w) ymax = min(h, ymin + mask_h) From f9241f8861141a45ace26fbf7c34886ce1029186 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 28 Sep 2019 23:09:06 +0200 Subject: [PATCH 1479/2595] updates --- utils/datasets.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 6c9bfe62..55e7f6be 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -216,9 +216,15 @@ class LoadStreams: # multiple IP or RTSP cameras def update(self, index, cap): # Read next stream frame in a daemon thread + n = 0 while cap.isOpened(): - _, self.imgs[index] = cap.read() - time.sleep(0.01) # 33.3 FPS to keep buffer empty + n += 1 + # _, self.imgs[index] = cap.read() + cap.grab() + if n == 4: # read every 4th frame + _, self.imgs[index] = cap.retrieve() + n = 0 + time.sleep(0.01) # wait time def __iter__(self): self.count = -1 From 9a48f23726f8cc9bd7c9f318ea1744cb099563c8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 29 Sep 2019 02:51:24 +0200 Subject: [PATCH 1480/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 8b820a97..31532d9f 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -479,7 +479,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): # Select predicted classes class_conf = class_conf[i] - class_pred = class_pred[i].unsqueeze(1).type_as(class_conf) + class_pred = class_pred[i].unsqueeze(1).float() # Box (center x, center y, width, height) to (x1, y1, x2, y2) pred[:, :4] = xywh2xyxy(pred[:, :4]) From 84f0df6c34dbfcd6431f78db9e736fc558f6396f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 1 Oct 2019 16:04:56 +0200 Subject: [PATCH 1481/2595] updates --- utils/utils.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 31532d9f..4ed84a2c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -224,6 +224,7 @@ def compute_ap(recall, precision): # Returns The average precision as computed in py-faster-rcnn. """ + # Append sentinel values to beginning and end mrec = np.concatenate(([0.], recall, [1.])) mpre = np.concatenate(([0.], precision, [0.])) @@ -232,11 +233,15 @@ def compute_ap(recall, precision): for i in range(mpre.size - 1, 0, -1): mpre[i - 1] = np.maximum(mpre[i - 1], mpre[i]) - # Calculate area under PR curve, looking for points where x axis (recall) changes - i = np.where(mrec[1:] != mrec[:-1])[0] + # Integrate area under curve + method = 'interp' # methods: 'continuous', 'interp' + if method == 'interp': + x = np.linspace(0, 1, 101) # 101-point interp (COCO) + ap = np.trapz(np.interp(x, mrec, mpre), x) # integrate + else: # 'continuous' + i = np.where(mrec[1:] != mrec[:-1])[0] # points where x axis (recall) changes + ap = np.sum((mrec[i + 1] - mrec[i]) * mpre[i + 1]) # area under curve - # Sum (\Delta recall) * prec - ap = np.sum((mrec[i + 1] - mrec[i]) * mpre[i + 1]) return ap From 6345a1d21853cd2a2291c810449d41012a084c01 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 1 Oct 2019 17:24:33 +0200 Subject: [PATCH 1482/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 4ed84a2c..250bec33 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -226,7 +226,7 @@ def compute_ap(recall, precision): """ # Append sentinel values to beginning and end - mrec = np.concatenate(([0.], recall, [1.])) + mrec = np.concatenate(([0.], recall, [min(recall[-1] + 1E-3, 1.)])) mpre = np.concatenate(([0.], precision, [0.])) # Compute the precision envelope From 8610026e2c31e377160f10c4a4a8bee432e618c0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 5 Oct 2019 12:45:10 +0200 Subject: [PATCH 1483/2595] updates --- train.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/train.py b/train.py index 4f8e0eb3..f2fde133 100644 --- a/train.py +++ b/train.py @@ -372,6 +372,15 @@ def train(): return results +def prebias(): + # trains output bias layers for 1 epoch and creates new backbone + if opt.prebias: + train() # transfer-learn yolo biases for 1 epoch + create_backbone(last) # saved results as backbone.pt + opt.weights = wdir + 'backbone.pt' # assign backbone + opt.prebias = False # disable prebias + + if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--epochs', type=int, default=273) # 500200 batches at bs 16, 117263 images = 273 epochs @@ -403,12 +412,6 @@ if __name__ == '__main__': device = torch_utils.select_device(opt.device, apex=mixed_precision) tb_writer = None - if opt.prebias: - train() # transfer-learn yolo biases for 1 epoch - create_backbone(last) # saved results as backbone.pt - opt.weights = wdir + 'backbone.pt' # assign backbone - opt.prebias = False # disable prebias - if not opt.evolve: # Train normally try: # Start Tensorboard with "tensorboard --logdir=runs", view at http://localhost:6006/ @@ -418,6 +421,7 @@ if __name__ == '__main__': except: pass + prebias() # optional train() # train normally else: # Evolve hyperparameters (optional) @@ -455,6 +459,7 @@ if __name__ == '__main__': hyp[k] = np.clip(hyp[k], v[0], v[1]) # Train mutation + prebias() results = train() # Write mutation results From 563dad3b5341a385986fe38dcedec80ec1336996 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 5 Oct 2019 13:47:06 +0200 Subject: [PATCH 1484/2595] updates --- utils/datasets.py | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 55e7f6be..ae5d89ce 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -643,26 +643,28 @@ def cutout(image, labels): # Intersection over box2 area return inter_area / box2_area - # random mask_size up to 50% image size - s = 0.5 # scale - mask_h = random.randint(1, int(h * s)) - mask_w = random.randint(1, int(w * s)) + # create random masks + scales = [0.5] * 1 # + [0.25] * 4 + [0.125] * 16 # image size fraction + for s in scales: + mask_h = random.randint(1, int(h * s)) + mask_w = random.randint(1, int(w * s)) - # box - xmin = max(0, random.randint(0, w) - mask_w // 2) - ymin = max(0, random.randint(0, h) - mask_h // 2) - xmax = min(w, xmin + mask_w) - ymax = min(h, ymin + mask_h) + # box + xmin = max(0, random.randint(0, w) - mask_w // 2) + ymin = max(0, random.randint(0, h) - mask_h // 2) + xmax = min(w, xmin + mask_w) + ymax = min(h, ymin + mask_h) - # apply random color mask - mask_color = [random.randint(0, 255) for _ in range(3)] - image[ymin:ymax, xmin:xmax] = mask_color + # apply random color mask + mask_color = [random.randint(0, 255) for _ in range(3)] + image[ymin:ymax, xmin:xmax] = mask_color + + # return unobscured labels + if len(labels): + box = np.array([xmin, ymin, xmax, ymax], dtype=np.float32) + ioa = bbox_ioa(box, labels[:, 1:5]) # intersection over area + labels = labels[ioa < 0.90] # remove >90% obscured labels - # return unobscured labels - if len(labels): - box = np.array([xmin, ymin, xmax, ymax], dtype=np.float32) - ioa = bbox_ioa(box, labels[:, 1:5]) # intersection over area - labels = labels[ioa < 0.90] # remove >90% obscured labels return labels From b6d9a742ec46aa3e5b0e0a19ccecafe4c21f2b79 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 5 Oct 2019 15:28:02 +0200 Subject: [PATCH 1485/2595] updates --- train.py | 8 ++++++-- utils/datasets.py | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index f2fde133..e5af1d00 100644 --- a/train.py +++ b/train.py @@ -20,6 +20,10 @@ last = wdir + 'last.pt' best = wdir + 'best.pt' results_file = 'results.txt' +# last = '../coco/last_sgd273_default_ltrb25x4.pt' +# best = '../coco/best_sgd273_default_ltrb25x4.pt' +# results_file = '../coco/results_sgd273_default_ltrb25x4.txt' + # Hyperparameters (j-series, 50.5 mAP yolov3-320) evolved by @ktian08 https://github.com/ultralytics/yolov3/issues/310 hyp = {'giou': 1.582, # giou loss gain 'cls': 27.76, # cls loss gain (CE=~1.0, uCE=~20) @@ -386,8 +390,8 @@ if __name__ == '__main__': parser.add_argument('--epochs', type=int, default=273) # 500200 batches at bs 16, 117263 images = 273 epochs parser.add_argument('--batch-size', type=int, default=32) # effective bs = batch_size * accumulate = 16 * 4 = 64 parser.add_argument('--accumulate', type=int, default=2, help='batches to accumulate before optimizing') - parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data', type=str, default='data/coco.data', help='*.data file path') + parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp-2overlap.cfg', help='cfg file path') + parser.add_argument('--data', type=str, default='data/coco_64img.data', help='*.data file path') parser.add_argument('--multi-scale', action='store_true', help='adjust (67% - 150%) img_size every 10 batches') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--rect', action='store_true', help='rectangular training') diff --git a/utils/datasets.py b/utils/datasets.py index ae5d89ce..6f891365 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -644,7 +644,7 @@ def cutout(image, labels): return inter_area / box2_area # create random masks - scales = [0.5] * 1 # + [0.25] * 4 + [0.125] * 16 # image size fraction + scales = [0.5] * 1 # + [0.25] * 4 + [0.125] * 16 + [0.0625] * 64 + [0.03125] * 256 # image size fraction for s in scales: mask_h = random.randint(1, int(h * s)) mask_w = random.randint(1, int(w * s)) @@ -660,7 +660,7 @@ def cutout(image, labels): image[ymin:ymax, xmin:xmax] = mask_color # return unobscured labels - if len(labels): + if len(labels) and s > 0.03: box = np.array([xmin, ymin, xmax, ymax], dtype=np.float32) ioa = bbox_ioa(box, labels[:, 1:5]) # intersection over area labels = labels[ioa < 0.90] # remove >90% obscured labels From 8c7a8ffecb31956ef1c994d05ea5a659d07e3fe4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 5 Oct 2019 15:29:27 +0200 Subject: [PATCH 1486/2595] updates --- train.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/train.py b/train.py index e5af1d00..f2fde133 100644 --- a/train.py +++ b/train.py @@ -20,10 +20,6 @@ last = wdir + 'last.pt' best = wdir + 'best.pt' results_file = 'results.txt' -# last = '../coco/last_sgd273_default_ltrb25x4.pt' -# best = '../coco/best_sgd273_default_ltrb25x4.pt' -# results_file = '../coco/results_sgd273_default_ltrb25x4.txt' - # Hyperparameters (j-series, 50.5 mAP yolov3-320) evolved by @ktian08 https://github.com/ultralytics/yolov3/issues/310 hyp = {'giou': 1.582, # giou loss gain 'cls': 27.76, # cls loss gain (CE=~1.0, uCE=~20) @@ -390,8 +386,8 @@ if __name__ == '__main__': parser.add_argument('--epochs', type=int, default=273) # 500200 batches at bs 16, 117263 images = 273 epochs parser.add_argument('--batch-size', type=int, default=32) # effective bs = batch_size * accumulate = 16 * 4 = 64 parser.add_argument('--accumulate', type=int, default=2, help='batches to accumulate before optimizing') - parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp-2overlap.cfg', help='cfg file path') - parser.add_argument('--data', type=str, default='data/coco_64img.data', help='*.data file path') + parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') + parser.add_argument('--data', type=str, default='data/coco.data', help='*.data file path') parser.add_argument('--multi-scale', action='store_true', help='adjust (67% - 150%) img_size every 10 batches') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--rect', action='store_true', help='rectangular training') From bfcae0ac97486e248099eb3be30faa2ea0cecea6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 5 Oct 2019 18:36:48 +0200 Subject: [PATCH 1487/2595] updates --- utils/utils.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 250bec33..cb22c799 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -657,7 +657,7 @@ def kmeans_targets(path='../coco/trainvalno5k.txt', n=9, img_size=416): # from from scipy import cluster # Get label wh - dataset = LoadImagesAndLabels(path, augment=True, rect=True) + dataset = LoadImagesAndLabels(path, augment=True, rect=True, cache_labels=True) for s, l in zip(dataset.shapes, dataset.labels): l[:, [1, 3]] *= s[0] # normalized to pixels l[:, [2, 4]] *= s[1] @@ -671,8 +671,7 @@ def kmeans_targets(path='../coco/trainvalno5k.txt', n=9, img_size=416): # from # Measure IoUs iou = torch.stack([wh_iou(torch.Tensor(wh).T, torch.Tensor(x).T) for x in k], 0) biou = iou.max(0)[0] # closest anchor IoU - - print((biou < 0.2635).float().mean()) + print('Best possible recall: %.3f' % (biou > 0.2635).float().mean()) # BPR (best possible recall) # Print print('kmeans anchors (n=%g, img_size=%g, IoU=%.2f/%.2f/%.2f-min/mean/best): ' % From 58d510df52131f23f9f2084b249acaf3a68913c4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 6 Oct 2019 16:30:35 +0200 Subject: [PATCH 1488/2595] updates --- utils/{init.py => __init__.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename utils/{init.py => __init__.py} (100%) diff --git a/utils/init.py b/utils/__init__.py similarity index 100% rename from utils/init.py rename to utils/__init__.py From 1a8bbf600df9757114197335f57d3193590e0af6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 7 Oct 2019 00:50:47 +0200 Subject: [PATCH 1489/2595] updates --- train.py | 4 ++-- utils/torch_utils.py | 13 +++++++++++++ utils/utils.py | 13 ------------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/train.py b/train.py index f2fde133..f34bfa7c 100644 --- a/train.py +++ b/train.py @@ -206,7 +206,7 @@ def train(): model.arc = opt.arc # attach yolo architecture model.hyp = hyp # attach hyperparameters to model # model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights - model_info(model, report='summary') # 'full' or 'summary' + torch_utils.model_info(model, report='summary') # 'full' or 'summary' nb = len(dataloader) maps = np.zeros(nc) # mAP per class results = (0, 0, 0, 0, 0, 0, 0) # 'P', 'R', 'mAP', 'F1', 'val GIoU', 'val Objectness', 'val Classification' @@ -387,7 +387,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=32) # effective bs = batch_size * accumulate = 16 * 4 = 64 parser.add_argument('--accumulate', type=int, default=2, help='batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data', type=str, default='data/coco.data', help='*.data file path') + parser.add_argument('--data', type=str, default='data/coco_64img.data', help='*.data file path') parser.add_argument('--multi-scale', action='store_true', help='adjust (67% - 150%) img_size every 10 batches') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--rect', action='store_true', help='rectangular training') diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 2971e33b..0c98efcd 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -64,3 +64,16 @@ def fuse_conv_and_bn(conv, bn): fusedconv.bias.copy_(b_conv + b_bn) return fusedconv + + +def model_info(model, report='summary'): + # Plots a line-by-line description of a PyTorch model + n_p = sum(x.numel() for x in model.parameters()) # number parameters + n_g = sum(x.numel() for x in model.parameters() if x.requires_grad) # number gradients + if report is 'full': + print('%5s %40s %9s %12s %20s %10s %10s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) + for i, (name, p) in enumerate(model.named_parameters()): + name = name.replace('module_list.', '') + print('%5g %40s %9s %12g %20s %10.3g %10.3g' % + (i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) + print('Model Summary: %g layers, %g parameters, %g gradients' % (len(list(model.parameters())), n_p, n_g)) diff --git a/utils/utils.py b/utils/utils.py index cb22c799..da81dbed 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -41,19 +41,6 @@ def load_classes(path): return list(filter(None, names)) # filter removes empty strings (such as last line) -def model_info(model, report='summary'): - # Plots a line-by-line description of a PyTorch model - n_p = sum(x.numel() for x in model.parameters()) # number parameters - n_g = sum(x.numel() for x in model.parameters() if x.requires_grad) # number gradients - if report is 'full': - print('%5s %40s %9s %12s %20s %10s %10s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) - for i, (name, p) in enumerate(model.named_parameters()): - name = name.replace('module_list.', '') - print('%5g %40s %9s %12g %20s %10.3g %10.3g' % - (i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) - print('Model Summary: %g layers, %g parameters, %g gradients' % (len(list(model.parameters())), n_p, n_g)) - - def labels_to_class_weights(labels, nc=80): # Get class weights (inverse frequency) from training labels ni = len(labels) # number of images From 2e0303d44cd0c334ce5f695326ac3f441d91694f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 7 Oct 2019 00:51:10 +0200 Subject: [PATCH 1490/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index f34bfa7c..5b714cd5 100644 --- a/train.py +++ b/train.py @@ -387,7 +387,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=32) # effective bs = batch_size * accumulate = 16 * 4 = 64 parser.add_argument('--accumulate', type=int, default=2, help='batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data', type=str, default='data/coco_64img.data', help='*.data file path') + parser.add_argument('--data', type=str, default='data/coco.data', help='*.data file path') parser.add_argument('--multi-scale', action='store_true', help='adjust (67% - 150%) img_size every 10 batches') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--rect', action='store_true', help='rectangular training') From d1398ec9521d1d0a95f564cf5b25a35a8e5beef5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 7 Oct 2019 11:31:22 +0200 Subject: [PATCH 1491/2595] updates --- utils/utils.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index da81dbed..e990976d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -560,9 +560,11 @@ def print_model_biases(model): multi_gpu = type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) for l in model.yolo_layers: # print pretrained biases if multi_gpu: - b = model.module.module_list[l - 1][0].bias.view(3, -1) # bias 3x85 + na = model.module.module_list[l].na # number of anchors + b = model.module.module_list[l - 1][0].bias.view(na, -1) # bias 3x85 else: - b = model.module_list[l - 1][0].bias.view(3, -1) # bias 3x85 + na = model.module_list[l].na + b = model.module_list[l - 1][0].bias.view(na, -1) # bias 3x85 print('regression: %5.2f+/-%-5.2f ' % (b[:, :4].mean(), b[:, :4].std()), 'objectness: %5.2f+/-%-5.2f ' % (b[:, 4].mean(), b[:, 4].std()), 'classification: %5.2f+/-%-5.2f' % (b[:, 5:].mean(), b[:, 5:].std())) From cfc562c2c889cc7a4cb7e6c3b020ec6e36ce6bc4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 8 Oct 2019 12:35:25 +0200 Subject: [PATCH 1492/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index e990976d..658da502 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -260,7 +260,7 @@ def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False): if GIoU: # Generalized IoU https://arxiv.org/pdf/1902.09630.pdf c_x1, c_x2 = torch.min(b1_x1, b2_x1), torch.max(b1_x2, b2_x2) c_y1, c_y2 = torch.min(b1_y1, b2_y1), torch.max(b1_y2, b2_y2) - c_area = (c_x2 - c_x1) * (c_y2 - c_y1) # convex area + c_area = (c_x2 - c_x1) * (c_y2 - c_y1) + 1e-16 # convex area return iou - (c_area - union_area) / c_area # GIoU return iou From a18ad6025fb939f5be275aeae525a991e6ad5a46 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 8 Oct 2019 13:25:50 +0200 Subject: [PATCH 1493/2595] updates --- utils/datasets.py | 208 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 144 insertions(+), 64 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 6f891365..4a5152dc 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -99,7 +99,7 @@ class LoadImages: # for inference print('image %g/%g %s: ' % (self.count, self.nF, path), end='') # Padded resize - img, *_ = letterbox(img0, new_shape=self.img_size) + img = letterbox(img0, new_shape=self.img_size)[0] # Normalize RGB img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB @@ -172,7 +172,7 @@ class LoadWebcam: # for inference print('webcam %g: ' % self.count, end='') # Padded resize - img, *_ = letterbox(img0, new_shape=self.img_size) + img = letterbox(img0, new_shape=self.img_size)[0] # Normalize RGB img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB @@ -406,69 +406,54 @@ class LoadImagesAndLabels(Dataset): # for training/testing label_path = self.label_files[index] hyp = self.hyp - # Load image - img = self.imgs[index] - if img is None: - img = cv2.imread(img_path) # BGR - assert img is not None, 'Image Not Found ' + img_path - r = self.img_size / max(img.shape) # size ratio - if self.augment and r < 1: # if training (NOT testing), downsize to inference shape - h, w, _ = img.shape - img = cv2.resize(img, (int(w * r), int(h * r)), interpolation=cv2.INTER_LINEAR) # INTER_LINEAR fastest + mosaic = True # load 4 images at a time into a mosaic + if mosaic: + # Load mosaic + img, labels = load_mosaic(self, index) + h, w, _ = img.shape - # Augment colorspace - augment_hsv = True - if self.augment and augment_hsv: - # SV augmentation by 50% - img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # hue, sat, val - S = img_hsv[:, :, 1].astype(np.float32) # saturation - V = img_hsv[:, :, 2].astype(np.float32) # value - - a = random.uniform(-1, 1) * hyp['hsv_s'] + 1 - b = random.uniform(-1, 1) * hyp['hsv_v'] + 1 - S *= a - V *= b - - img_hsv[:, :, 1] = S if a < 1 else S.clip(None, 255) - img_hsv[:, :, 2] = V if b < 1 else V.clip(None, 255) - cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) - - # Letterbox - h, w, _ = img.shape - if self.rect: - shape = self.batch_shapes[self.batch[index]] - img, ratiow, ratioh, padw, padh = letterbox(img, new_shape=shape, mode='rect') else: - shape = self.img_size - img, ratiow, ratioh, padw, padh = letterbox(img, new_shape=shape, mode='square') + # Load image + img = load_image(self, index) - # Load labels - labels = [] - if os.path.isfile(label_path): - x = self.labels[index] - if x is None: # labels not preloaded - with open(label_path, 'r') as f: - x = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) + # Letterbox + h, w, _ = img.shape + if self.rect: + img, ratio, padw, padh = letterbox(img, self.batch_shapes[self.batch[index]], mode='rect') + else: + img, ratio, padw, padh = letterbox(img, self.img_size, mode='square') - if x.size > 0: - # Normalized xywh to pixel xyxy format - labels = x.copy() - labels[:, 1] = ratiow * w * (x[:, 1] - x[:, 3] / 2) + padw - labels[:, 2] = ratioh * h * (x[:, 2] - x[:, 4] / 2) + padh - labels[:, 3] = ratiow * w * (x[:, 1] + x[:, 3] / 2) + padw - labels[:, 4] = ratioh * h * (x[:, 2] + x[:, 4] / 2) + padh + # Load labels + labels = [] + if os.path.isfile(label_path): + x = self.labels[index] + if x is None: # labels not preloaded + with open(label_path, 'r') as f: + x = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) + + if x.size > 0: + # Normalized xywh to pixel xyxy format + labels = x.copy() + labels[:, 1] = ratio[0] * w * (x[:, 1] - x[:, 3] / 2) + padw + labels[:, 2] = ratio[1] * h * (x[:, 2] - x[:, 4] / 2) + padh + labels[:, 3] = ratio[0] * w * (x[:, 1] + x[:, 3] / 2) + padw + labels[:, 4] = ratio[1] * h * (x[:, 2] + x[:, 4] / 2) + padh - # Augment image and labels if self.augment: - img, labels = random_affine(img, labels, - degrees=hyp['degrees'], - translate=hyp['translate'], - scale=hyp['scale'], - shear=hyp['shear']) + # Augment colorspace + augment_hsv(img, hgain=hyp['hsv_h'], sgain=hyp['hsv_s'], vgain=0.0) - # Cutout - if random.random() < 0.9: - labels = cutout(img, labels) + # Augment imagespace + g = 0.0 if mosaic else 1.0 # do not augment mosaics + img, labels = random_affine(img, labels, + degrees=hyp['degrees'] * g, + translate=hyp['translate'] * g, + scale=hyp['scale'] * g, + shear=hyp['shear'] * g) + + # Apply cutouts + # if random.random() < 0.9: + # labels = cutout(img, labels) nL = len(labels) # number of labels if nL: @@ -513,17 +498,112 @@ class LoadImagesAndLabels(Dataset): # for training/testing return torch.stack(img, 0), torch.cat(label, 0), path, hw +def load_image(self, index): + # loads 1 image from dataset + img = self.imgs[index] + if img is None: + img_path = self.img_files[index] + img = cv2.imread(img_path) # BGR + assert img is not None, 'Image Not Found ' + img_path + r = self.img_size / max(img.shape) # size ratio + if self.augment and r < 1: # if training (NOT testing), downsize to inference shape + h, w, _ = img.shape + img = cv2.resize(img, (int(w * r), int(h * r)), interpolation=cv2.INTER_LINEAR) # _LINEAR fastest + return img + + +def augment_hsv(img, hgain=0.5, sgain=0.5, vgain=0.5): + # SV augmentation by 50% + img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # hue, sat, val + S = img_hsv[:, :, 1].astype(np.float32) # saturation + V = img_hsv[:, :, 2].astype(np.float32) # value + + a = random.uniform(-1, 1) * sgain + 1 + b = random.uniform(-1, 1) * vgain + 1 + S *= a + V *= b + + img_hsv[:, :, 1] = S if a < 1 else S.clip(None, 255) + img_hsv[:, :, 2] = V if b < 1 else V.clip(None, 255) + cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) # no return needed + + +def load_mosaic(self, index): + # loads up images in a mosaic + + labels4 = [] + s = self.img_size + xc, yc = [int(random.uniform(s * 0.5, s * 1.5)) for _ in range(2)] # mosaic center x, y + img4 = np.zeros((s * 2, s * 2, 3), dtype=np.uint8) + 128 # base image with 4 tiles + indices = [index] + [random.randint(0, len(self.labels) - 1) for _ in range(3)] # 3 additional image indices + for i, index in enumerate(indices): + # Load image + img = load_image(self, index) + h, w, _ = img.shape + + # merge img into img4 + if i == 0: # top left + x1a, y1a, x2a, y2a = max(xc - w, 0), max(yc - h, 0), xc, yc # xmin, ymin, xmax, ymax (large image) + x1b, y1b, x2b, y2b = w - (x2a - x1a), h - (y2a - y1a), w, h # xmin, ymin, xmax, ymax (small image) + elif i == 1: # top right + x1a, y1a, x2a, y2a = xc, max(yc - h, 0), min(xc + w, s * 2), yc + x1b, y1b, x2b, y2b = 0, h - (y2a - y1a), min(w, x2a - x1a), h + elif i == 2: # bottom left + x1a, y1a, x2a, y2a = max(xc - w, 0), yc, xc, min(s * 2, yc + h) + x1b, y1b, x2b, y2b = w - (x2a - x1a), 0, max(xc, w), min(y2a - y1a, h) + elif i == 3: # bottom right + x1a, y1a, x2a, y2a = xc, yc, min(xc + w, s * 2), min(s * 2, yc + h) + x1b, y1b, x2b, y2b = 0, 0, min(w, x2a - x1a), min(y2a - y1a, h) + + img4[y1a:y2a, x1a:x2a] = img[y1b:y2b, x1b:x2b] # img4[ymin:ymax, xmin:xmax] + padw = x1a - x1b + padh = y1a - y1b + + # Load labels + label_path = self.label_files[index] + if os.path.isfile(label_path): + x = self.labels[index] + if x is None: # labels not preloaded + with open(label_path, 'r') as f: + x = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) + + if x.size > 0: + # Normalized xywh to pixel xyxy format + labels = x.copy() + labels[:, 1] = w * (x[:, 1] - x[:, 3] / 2) + padw + labels[:, 2] = h * (x[:, 2] - x[:, 4] / 2) + padh + labels[:, 3] = w * (x[:, 1] + x[:, 3] / 2) + padw + labels[:, 4] = h * (x[:, 2] + x[:, 4] / 2) + padh + + labels4.append(labels) + labels4 = np.concatenate(labels4, 0) + + # hyp = self.hyp + # img4, labels4 = random_affine(img4, labels4, + # degrees=hyp['degrees'], + # translate=hyp['translate'], + # scale=hyp['scale'], + # shear=hyp['shear']) + + # Center crop + a = s // 2 + img4 = img4[a:a + s, a:a + s] + labels4[:, 1:] -= a + + return img4, labels4 + + def letterbox(img, new_shape=416, color=(128, 128, 128), mode='auto', interp=cv2.INTER_AREA): # Resize a rectangular image to a 32 pixel multiple rectangle # https://github.com/ultralytics/yolov3/issues/232 shape = img.shape[:2] # current shape [height, width] if isinstance(new_shape, int): - ratio = float(new_shape) / max(shape) + r = float(new_shape) / max(shape) # ratio = new / old else: - ratio = max(new_shape) / max(shape) # ratio = new / old - ratiow, ratioh = ratio, ratio - new_unpad = (int(round(shape[1] * ratio)), int(round(shape[0] * ratio))) + r = max(new_shape) / max(shape) + ratio = r, r # width, height ratios + new_unpad = (int(round(shape[1] * r)), int(round(shape[0] * r))) # Compute padding https://github.com/ultralytics/yolov3/issues/232 if mode is 'auto': # minimum rectangle @@ -538,14 +618,14 @@ def letterbox(img, new_shape=416, color=(128, 128, 128), mode='auto', interp=cv2 elif mode is 'scaleFill': dw, dh = 0.0, 0.0 new_unpad = (new_shape, new_shape) - ratiow, ratioh = new_shape / shape[1], new_shape / shape[0] + ratio = new_shape / shape[1], new_shape / shape[0] # width, height ratios if shape[::-1] != new_unpad: # resize img = cv2.resize(img, new_unpad, interpolation=interp) # INTER_AREA is better, INTER_LINEAR is faster top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1)) left, right = int(round(dw - 0.1)), int(round(dw + 0.1)) img = cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color) # add border - return img, ratiow, ratioh, dw, dh + return img, ratio, dw, dh def random_affine(img, targets=(), degrees=10, translate=.1, scale=.1, shear=10): From 88ba61505fa07b12b608f598ed9d2cf91ff872c2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 8 Oct 2019 13:30:21 +0200 Subject: [PATCH 1494/2595] updates --- train.py | 1 + utils/datasets.py | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 5b714cd5..a6f26c84 100644 --- a/train.py +++ b/train.py @@ -32,6 +32,7 @@ hyp = {'giou': 1.582, # giou loss gain 'momentum': 0.97, # SGD momentum 'weight_decay': 0.0004569, # optimizer weight decay 'fl_gamma': 0.5, # focal loss gamma + 'hsv_h': 0.0, # image HSV-Hue augmentation (fraction) 'hsv_s': 0.5703, # image HSV-Saturation augmentation (fraction) 'hsv_v': 0.3174, # image HSV-Value augmentation (fraction) 'degrees': 1.113, # image rotation (+/- deg) diff --git a/utils/datasets.py b/utils/datasets.py index 4a5152dc..597b905d 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -404,7 +404,6 @@ class LoadImagesAndLabels(Dataset): # for training/testing img_path = self.img_files[index] label_path = self.label_files[index] - hyp = self.hyp mosaic = True # load 4 images at a time into a mosaic if mosaic: @@ -440,8 +439,10 @@ class LoadImagesAndLabels(Dataset): # for training/testing labels[:, 4] = ratio[1] * h * (x[:, 2] + x[:, 4] / 2) + padh if self.augment: + hyp = self.hyp + # Augment colorspace - augment_hsv(img, hgain=hyp['hsv_h'], sgain=hyp['hsv_s'], vgain=0.0) + augment_hsv(img, hgain=hyp['hsv_h'], sgain=hyp['hsv_s'], vgain=hyp['hsv_v']) # Augment imagespace g = 0.0 if mosaic else 1.0 # do not augment mosaics From 69745d8b8e7f8d9b7ea119d8677a542c76760b86 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 8 Oct 2019 14:08:23 +0200 Subject: [PATCH 1495/2595] updates --- train.py | 2 +- utils/datasets.py | 46 +++++++++++++++++++++++++++------------------- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/train.py b/train.py index a6f26c84..61aa916f 100644 --- a/train.py +++ b/train.py @@ -32,7 +32,7 @@ hyp = {'giou': 1.582, # giou loss gain 'momentum': 0.97, # SGD momentum 'weight_decay': 0.0004569, # optimizer weight decay 'fl_gamma': 0.5, # focal loss gamma - 'hsv_h': 0.0, # image HSV-Hue augmentation (fraction) + 'hsv_h': 0.10, # image HSV-Hue augmentation (fraction) 'hsv_s': 0.5703, # image HSV-Saturation augmentation (fraction) 'hsv_v': 0.3174, # image HSV-Value augmentation (fraction) 'degrees': 1.113, # image rotation (+/- deg) diff --git a/utils/datasets.py b/utils/datasets.py index 597b905d..449f801f 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -439,13 +439,9 @@ class LoadImagesAndLabels(Dataset): # for training/testing labels[:, 4] = ratio[1] * h * (x[:, 2] + x[:, 4] / 2) + padh if self.augment: - hyp = self.hyp - - # Augment colorspace - augment_hsv(img, hgain=hyp['hsv_h'], sgain=hyp['hsv_s'], vgain=hyp['hsv_v']) - # Augment imagespace g = 0.0 if mosaic else 1.0 # do not augment mosaics + hyp = self.hyp img, labels = random_affine(img, labels, degrees=hyp['degrees'] * g, translate=hyp['translate'] * g, @@ -510,27 +506,39 @@ def load_image(self, index): if self.augment and r < 1: # if training (NOT testing), downsize to inference shape h, w, _ = img.shape img = cv2.resize(img, (int(w * r), int(h * r)), interpolation=cv2.INTER_LINEAR) # _LINEAR fastest + + # Augment colorspace + if self.augment: + augment_hsv(img, hgain=self.hyp['hsv_h'], sgain=self.hyp['hsv_s'], vgain=self.hyp['hsv_v']) + return img def augment_hsv(img, hgain=0.5, sgain=0.5, vgain=0.5): - # SV augmentation by 50% - img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # hue, sat, val - S = img_hsv[:, :, 1].astype(np.float32) # saturation - V = img_hsv[:, :, 2].astype(np.float32) # value - - a = random.uniform(-1, 1) * sgain + 1 - b = random.uniform(-1, 1) * vgain + 1 - S *= a - V *= b - - img_hsv[:, :, 1] = S if a < 1 else S.clip(None, 255) - img_hsv[:, :, 2] = V if b < 1 else V.clip(None, 255) + x = (np.random.uniform(-1, 1, 3) * np.array([hgain, sgain, vgain]) + 1).astype(np.float32) # random gains + img_hsv = (cv2.cvtColor(img, cv2.COLOR_BGR2HSV) * x.reshape((1, 1, 3))).clip(None, 255).astype(np.uint8) cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) # no return needed +# def augment_hsv(img, hgain=0.5, sgain=0.5, vgain=0.5): # original version +# # SV augmentation by 50% +# img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # hue, sat, val +# +# S = img_hsv[:, :, 1].astype(np.float32) # saturation +# V = img_hsv[:, :, 2].astype(np.float32) # value +# +# a = random.uniform(-1, 1) * sgain + 1 +# b = random.uniform(-1, 1) * vgain + 1 +# S *= a +# V *= b +# +# img_hsv[:, :, 1] = S if a < 1 else S.clip(None, 255) +# img_hsv[:, :, 2] = V if b < 1 else V.clip(None, 255) +# cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) # no return needed + + def load_mosaic(self, index): - # loads up images in a mosaic + # loads images in a mosaic labels4 = [] s = self.img_size @@ -542,7 +550,7 @@ def load_mosaic(self, index): img = load_image(self, index) h, w, _ = img.shape - # merge img into img4 + # place img in img4 if i == 0: # top left x1a, y1a, x2a, y2a = max(xc - w, 0), max(yc - h, 0), xc, yc # xmin, ymin, xmax, ymax (large image) x1b, y1b, x2b, y2b = w - (x2a - x1a), h - (y2a - y1a), w, h # xmin, ymin, xmax, ymax (small image) From 8fea4514fb828ab9738d5583c68740b9d7e5ff2d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 8 Oct 2019 14:35:43 +0200 Subject: [PATCH 1496/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 449f801f..2454dea9 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -405,7 +405,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing img_path = self.img_files[index] label_path = self.label_files[index] - mosaic = True # load 4 images at a time into a mosaic + mosaic = True and not self.augment # load 4 images at a time into a mosaic (only during training) if mosaic: # Load mosaic img, labels = load_mosaic(self, index) From f8aab0e95201e5934b299caa127b767bd10f1d75 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 8 Oct 2019 15:19:13 +0200 Subject: [PATCH 1497/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 2454dea9..3f88635d 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -405,7 +405,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing img_path = self.img_files[index] label_path = self.label_files[index] - mosaic = True and not self.augment # load 4 images at a time into a mosaic (only during training) + mosaic = True and self.augment # load 4 images at a time into a mosaic (only during training) if mosaic: # Load mosaic img, labels = load_mosaic(self, index) From 8b2f85c29079be1c0b45d15047059e07b4764d2c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 8 Oct 2019 18:13:04 +0200 Subject: [PATCH 1498/2595] updates --- utils/utils.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/utils/utils.py b/utils/utils.py index 658da502..856893ac 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -461,6 +461,12 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): class_conf, class_pred = pred[:, 5:].max(1) pred[:, 4] *= class_conf + # # Merge classes (optional) + # class_pred[(class_pred.view(-1,1) == torch.LongTensor([2, 3, 5, 6, 7]).view(1,-1)).any(1)] = 2 + # + # # Remove classes (optional) + # pred[class_pred != 2, 4] = 0.0 + # Select only suitable predictions i = (pred[:, 4] > conf_thres) & (pred[:, 2:4] > min_wh).all(1) & torch.isfinite(pred).all(1) pred = pred[i] From af5f7a15c5e45e6a6d7da863ff78d9b75df927b8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 8 Oct 2019 19:07:28 +0200 Subject: [PATCH 1499/2595] updates --- utils/datasets.py | 13 +++++++++---- utils/utils.py | 23 +++++++++++++++++++++++ 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 3f88635d..56690ae0 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -357,10 +357,15 @@ class LoadImagesAndLabels(Dataset): # for training/testing f = '%s%sclassifier%s%g_%g_%s' % (p.parent.parent, os.sep, os.sep, x[0], j, p.name) if not os.path.exists(Path(f).parent): os.makedirs(Path(f).parent) # make new output folder - box = xywh2xyxy(x[1:].reshape(-1, 4) * np.array([1, 1, 1.5, 1.5])).ravel() - b = np.clip(box, 0, 1) # clip boxes outside of image - ret_val = cv2.imwrite(f, img[int(b[1] * h):int(b[3] * h), int(b[0] * w):int(b[2] * w)]) - assert ret_val, 'Failure extracting classifier boxes' + + b = x[1:] * np.array([w, h, w, h]) # box + b[2:] = b[2:].max() # rectangle to square + b[2:] = b[2:] * 1.3 + 30 # pad + b = xywh2xyxy(b.reshape(-1, 4)).ravel().astype(np.int) + + b[[0, 2]] = np.clip(b[[0, 2]], 0, w) # clip boxes outside of image + b[[1, 3]] = np.clip(b[[1, 3]], 0, h) + assert cv2.imwrite(f, img[b[1]:b[3], b[0]:b[2]]), 'Failure extracting classifier boxes' else: ne += 1 # file empty diff --git a/utils/utils.py b/utils/utils.py index 856893ac..322ce246 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -624,6 +624,29 @@ def select_best_evolve(path='evolve*.txt'): # from utils.utils import *; select print(file, x[fitness(x).argmax()]) +def crop_images_random(path='../images/', scale=0.50): # from utils.utils import *; crop_images_random() + # crops images into random squares up to scale fraction + # WARNING: overwrites images! + for file in tqdm(sorted(glob.glob('%s/*.*' % path))): + img = cv2.imread(file) # BGR + if img is not None: + h, w = img.shape[:2] + + # create random mask + a = 30 # minimum size (pixels) + mask_h = random.randint(a, int(max(a, h * scale))) # mask height + mask_w = mask_h # mask width + + # box + xmin = max(0, random.randint(0, w) - mask_w // 2) + ymin = max(0, random.randint(0, h) - mask_h // 2) + xmax = min(w, xmin + mask_w) + ymax = min(h, ymin + mask_h) + + # apply random color mask + cv2.imwrite(file, img[ymin:ymax, xmin:xmax]) + + def coco_single_class_labels(path='../coco/labels/train2014/', label_class=43): # Makes single-class coco datasets. from utils.utils import *; coco_single_class_labels() if os.path.exists('new/'): From 1e3480d76cf07768799df36a3412c774b0a2b27b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 8 Oct 2019 23:22:41 +0200 Subject: [PATCH 1500/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 61aa916f..fe475db8 100644 --- a/train.py +++ b/train.py @@ -32,7 +32,7 @@ hyp = {'giou': 1.582, # giou loss gain 'momentum': 0.97, # SGD momentum 'weight_decay': 0.0004569, # optimizer weight decay 'fl_gamma': 0.5, # focal loss gamma - 'hsv_h': 0.10, # image HSV-Hue augmentation (fraction) + 'hsv_h': 0.01, # image HSV-Hue augmentation (fraction) 'hsv_s': 0.5703, # image HSV-Saturation augmentation (fraction) 'hsv_v': 0.3174, # image HSV-Value augmentation (fraction) 'degrees': 1.113, # image rotation (+/- deg) From a4e9aa34ef0e5e43e0d8f0317575a9451756500a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 9 Oct 2019 00:14:27 +0200 Subject: [PATCH 1501/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index fe475db8..4b6bdfad 100644 --- a/train.py +++ b/train.py @@ -448,7 +448,7 @@ if __name__ == '__main__': # Mutate np.random.seed(int(time.time())) - s = [.2, .2, .2, .2, .2, .2, .2, .0, .02, .2, .2, .2, .2, .2, .2, .2, .2] # sigmas + s = [.2, .2, .2, .2, .2, .2, .2, .0, .02, .2, .2, .2, .2, .2, .2, .2, .2, .2] # sigmas for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) hyp[k] *= float(x) # vary by sigmas From 500a798787b1b236c5044beaefdf62c4284b7cc2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 9 Oct 2019 02:10:25 +0200 Subject: [PATCH 1502/2595] updates --- utils/datasets.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 56690ae0..57b5c6e0 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -444,6 +444,9 @@ class LoadImagesAndLabels(Dataset): # for training/testing labels[:, 4] = ratio[1] * h * (x[:, 2] + x[:, 4] / 2) + padh if self.augment: + # Augment colorspace + augment_hsv(img, hgain=self.hyp['hsv_h'], sgain=self.hyp['hsv_s'], vgain=self.hyp['hsv_v']) + # Augment imagespace g = 0.0 if mosaic else 1.0 # do not augment mosaics hyp = self.hyp @@ -511,11 +514,6 @@ def load_image(self, index): if self.augment and r < 1: # if training (NOT testing), downsize to inference shape h, w, _ = img.shape img = cv2.resize(img, (int(w * r), int(h * r)), interpolation=cv2.INTER_LINEAR) # _LINEAR fastest - - # Augment colorspace - if self.augment: - augment_hsv(img, hgain=self.hyp['hsv_h'], sgain=self.hyp['hsv_s'], vgain=self.hyp['hsv_v']) - return img From ee319aeefd97d99fcaac499d148116c71b83397f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 9 Oct 2019 03:16:27 +0200 Subject: [PATCH 1503/2595] updates --- Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Dockerfile b/Dockerfile index 8e0ca295..7b24ad1d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -55,6 +55,9 @@ COPY . /usr/src/app # Run with local directory access # sudo nvidia-docker run --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco ultralytics/yolov3:v0 python3 train.py +# Pull and Run with local directory access +# export tag=ultralytics/yolov3:v0 && sudo docker pull $tag && sudo nvidia-docker run --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py + # Build and Push # export tag=ultralytics/yolov3:v0 && sudo docker build -t $tag . && docker push $tag From f67e1afe3e6cc39cd781b65991a23b1be55090b2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 10 Oct 2019 14:40:18 +0200 Subject: [PATCH 1504/2595] updates --- utils/torch_utils.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 0c98efcd..b631262e 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -77,3 +77,20 @@ def model_info(model, report='summary'): print('%5g %40s %9s %12g %20s %10.3g %10.3g' % (i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) print('Model Summary: %g layers, %g parameters, %g gradients' % (len(list(model.parameters())), n_p, n_g)) + + +def load_classifier(name='resnet101', n=2): + # Loads a pretrained model reshaped to n-class output + import pretrainedmodels # https://github.com/Cadene/pretrained-models.pytorch#torchvision + model = pretrainedmodels.__dict__[name](num_classes=1000, pretrained='imagenet') + + # Display model properties + for x in ['model.input_size', 'model.input_space', 'model.input_range', 'model.mean', 'model.std']: + print(x + ' =', eval(x)) + + # Reshape output to n classes + filters = model.last_linear.weight.shape[1] + model.last_linear.bias = torch.nn.Parameter(torch.zeros(n)) + model.last_linear.weight = torch.nn.Parameter(torch.zeros(n, filters)) + model.last_linear.out_features = n + return model From a59350852bce0d4f7a0a1e65bce2a569b389358a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 10 Oct 2019 22:54:20 +0200 Subject: [PATCH 1505/2595] updates --- detect.py | 18 ++++++++++++++++-- utils/utils.py | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index 9416c184..52990a5a 100644 --- a/detect.py +++ b/detect.py @@ -27,6 +27,12 @@ def detect(save_txt=False, save_img=False): else: # darknet format _ = load_darknet_weights(model, weights) + # Second-stage classifier + classify = False + if classify: + modelc = torch_utils.load_classifier(name='resnet101', n=2) # initialize + modelc.load_state_dict(torch.load('resnet101.pt', map_location=device)['model']) # load weights + # Fuse Conv2d + BatchNorm2d layers # model.fuse() @@ -67,12 +73,20 @@ def detect(save_txt=False, save_img=False): img = torch.from_numpy(img).to(device) if img.ndimension() == 3: img = img.unsqueeze(0) - pred, _ = model(img) + pred = model(img)[0] if opt.half: pred = pred.float() - for i, det in enumerate(non_max_suppression(pred, opt.conf_thres, opt.nms_thres)): # detections per image + # Apply NMS + pred = non_max_suppression(pred, opt.conf_thres, opt.nms_thres) + + # Apply + if classify: + pred = apply_classifier(pred, modelc, img, im0s) + + # Process detections + for i, det in enumerate(pred): # detections per image if webcam: # batch_size >= 1 p, s, im0 = path[i], '%g: ' % i, im0s[i] else: diff --git a/utils/utils.py b/utils/utils.py index 322ce246..3746ca98 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -720,6 +720,46 @@ def print_mutation(hyp, results, bucket=''): os.system('gsutil cp evolve.txt gs://%s' % bucket) # upload evolve.txt +def apply_classifier(x, model, img, im0): + # applies a second stage classifier to yolo outputs + + for i, d in enumerate(x): # per image + if d is not None and len(d): + d = d.clone() + + # Reshape and pad cutouts + b = xyxy2xywh(d[:, :4]) # boxes + b[:, 2:] = b[:, 2:].max(1)[0].unsqueeze(1) # rectangle to square + b[:, 2:] = b[:, 2:] * 1.0 + 0 # pad + d[:, :4] = xywh2xyxy(b).long() + + # Rescale boxes from img_size to im0 size + scale_coords(img.shape[2:], d[:, :4], im0.shape) + + # Classes + pred_cls1 = d[:, 6].long() + ims = [] + j = 0 + for a in d: # per item + j += 1 + cutout = im0[int(a[1]):int(a[3]), int(a[0]):int(a[2])] + im = cv2.resize(cutout, (128, 128)) # BGR + cv2.imwrite('test%i.jpg' % j, cutout) + + im = im[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416 + im = np.expand_dims(im, axis=0) # add batch dim + im = np.ascontiguousarray(im, dtype=np.float32) # uint8 to float32 + im /= 255.0 # 0 - 255 to 0.0 - 1.0 + ims.append(im) + + ims = torch.Tensor(np.concatenate(ims, 0)) # to torch + pred_cls2 = model(ims).argmax(1) # classifier prediction + + # x[i] = x[i][pred_cls1 == pred_cls2] # retain matching class detections + + return x + + def fitness(x): # Returns fitness (for use with results.txt or evolve.txt) return x[:, 2] * 0.8 + x[:, 3] * 0.2 # weighted mAP and F1 combination From 171f25cfc62c45e7b0e2e1bc578d23e203ec4b17 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 12 Oct 2019 01:18:41 +0200 Subject: [PATCH 1506/2595] updates --- detect.py | 1 + utils/utils.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index 52990a5a..05933a55 100644 --- a/detect.py +++ b/detect.py @@ -32,6 +32,7 @@ def detect(save_txt=False, save_img=False): if classify: modelc = torch_utils.load_classifier(name='resnet101', n=2) # initialize modelc.load_state_dict(torch.load('resnet101.pt', map_location=device)['model']) # load weights + modelc.to(device).eval() # Fuse Conv2d + BatchNorm2d layers # model.fuse() diff --git a/utils/utils.py b/utils/utils.py index 3746ca98..627f8930 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -730,7 +730,7 @@ def apply_classifier(x, model, img, im0): # Reshape and pad cutouts b = xyxy2xywh(d[:, :4]) # boxes b[:, 2:] = b[:, 2:].max(1)[0].unsqueeze(1) # rectangle to square - b[:, 2:] = b[:, 2:] * 1.0 + 0 # pad + b[:, 2:] = b[:, 2:] * 1.3 + 30 # pad d[:, :4] = xywh2xyxy(b).long() # Rescale boxes from img_size to im0 size @@ -743,7 +743,7 @@ def apply_classifier(x, model, img, im0): for a in d: # per item j += 1 cutout = im0[int(a[1]):int(a[3]), int(a[0]):int(a[2])] - im = cv2.resize(cutout, (128, 128)) # BGR + im = cv2.resize(cutout, (224, 224)) # BGR cv2.imwrite('test%i.jpg' % j, cutout) im = im[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416 From 5afd90c900f0811bd395f7dd58557d8b022abda6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 12 Oct 2019 11:22:50 +0200 Subject: [PATCH 1507/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 627f8930..d7182103 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -356,7 +356,7 @@ def compute_loss(p, targets, model): # predictions, targets, model # with open('targets.txt', 'a') as file: # [file.write('%11.5g ' * 4 % tuple(x) + '\n') for x in torch.cat((txy[i], twh[i]), 1)] - if 'default' in arc: # seperate obj and cls + if 'default' in arc: # separate obj and cls lobj += BCEobj(pi[..., 4], tobj) # obj loss elif 'BCE' in arc: # unified BCE (80 classes) From 8397fa7a2a0e5af7803c4fbfa1441020dcdc120d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 12 Oct 2019 13:03:57 +0200 Subject: [PATCH 1508/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 4b6bdfad..ab1791cf 100644 --- a/train.py +++ b/train.py @@ -401,7 +401,7 @@ if __name__ == '__main__': parser.add_argument('--img-weights', action='store_true', help='select training images by weight') parser.add_argument('--cache-images', action='store_true', help='cache images for faster training') parser.add_argument('--weights', type=str, default='', help='initial weights') # i.e. weights/darknet.53.conv.74 - parser.add_argument('--arc', type=str, default='defaultpw', help='yolo architecture') # defaultpw, uCE, uBCE + parser.add_argument('--arc', type=str, default='default', help='yolo architecture') # defaultpw, uCE, uBCE parser.add_argument('--prebias', action='store_true', help='transfer-learn yolo biases prior to training') parser.add_argument('--name', default='', help='renames results.txt to results_name.txt if supplied') parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') From 811b3b693f4827b59b4afde3cdf6d57d8b48887b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 12 Oct 2019 13:59:07 +0200 Subject: [PATCH 1509/2595] updates --- detect.py | 2 +- utils/utils.py | 13 ++++--------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/detect.py b/detect.py index 05933a55..a79b8021 100644 --- a/detect.py +++ b/detect.py @@ -31,7 +31,7 @@ def detect(save_txt=False, save_img=False): classify = False if classify: modelc = torch_utils.load_classifier(name='resnet101', n=2) # initialize - modelc.load_state_dict(torch.load('resnet101.pt', map_location=device)['model']) # load weights + modelc.load_state_dict(torch.load('weights/resnet101.pt', map_location=device)['model']) # load weights modelc.to(device).eval() # Fuse Conv2d + BatchNorm2d layers diff --git a/utils/utils.py b/utils/utils.py index d7182103..a4c331a2 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -739,23 +739,18 @@ def apply_classifier(x, model, img, im0): # Classes pred_cls1 = d[:, 6].long() ims = [] - j = 0 - for a in d: # per item - j += 1 + for j, a in enumerate(d): # per item cutout = im0[int(a[1]):int(a[3]), int(a[0]):int(a[2])] im = cv2.resize(cutout, (224, 224)) # BGR - cv2.imwrite('test%i.jpg' % j, cutout) + # cv2.imwrite('test%i.jpg' % j, cutout) im = im[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416 - im = np.expand_dims(im, axis=0) # add batch dim im = np.ascontiguousarray(im, dtype=np.float32) # uint8 to float32 im /= 255.0 # 0 - 255 to 0.0 - 1.0 ims.append(im) - ims = torch.Tensor(np.concatenate(ims, 0)) # to torch - pred_cls2 = model(ims).argmax(1) # classifier prediction - - # x[i] = x[i][pred_cls1 == pred_cls2] # retain matching class detections + pred_cls2 = model(torch.Tensor(ims).to(d.device)).argmax(1) # classifier prediction + x[i] = x[i][pred_cls1 == pred_cls2] # retain matching class detections return x From 0985dc91d5554f7afdeac9278facdb07d29e4c44 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 13 Oct 2019 13:11:40 +0200 Subject: [PATCH 1510/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index ab1791cf..9ce841ed 100644 --- a/train.py +++ b/train.py @@ -65,8 +65,8 @@ def train(): multi_scale = opt.multi_scale if multi_scale: - img_sz_min = round(img_size / 32 / 1.5) + 1 - img_sz_max = round(img_size / 32 * 1.5) - 1 + img_sz_min = 7 # round(img_size / 32 / 1.5) + 1 + img_sz_max = 27 # round(img_size / 32 * 1.5) - 1 img_size = img_sz_max * 32 # initiate with maximum multi_scale size print('Using multi-scale %g - %g' % (img_sz_min * 32, img_size)) From 2f46e7d76598bb6d7acf3deaf96835edd2c2a1e9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 13 Oct 2019 17:40:45 +0200 Subject: [PATCH 1511/2595] updates --- train.py | 2 +- utils/datasets.py | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/train.py b/train.py index 9ce841ed..b14d67bb 100644 --- a/train.py +++ b/train.py @@ -65,7 +65,7 @@ def train(): multi_scale = opt.multi_scale if multi_scale: - img_sz_min = 7 # round(img_size / 32 / 1.5) + 1 + img_sz_min = 14 # round(img_size / 32 / 1.5) + 1 img_sz_max = 27 # round(img_size / 32 * 1.5) - 1 img_size = img_sz_max * 32 # initiate with maximum multi_scale size print('Using multi-scale %g - %g' % (img_sz_min * 32, img_size)) diff --git a/utils/datasets.py b/utils/datasets.py index 57b5c6e0..87dc39d1 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -511,7 +511,7 @@ def load_image(self, index): img = cv2.imread(img_path) # BGR assert img is not None, 'Image Not Found ' + img_path r = self.img_size / max(img.shape) # size ratio - if self.augment and r < 1: # if training (NOT testing), downsize to inference shape + if self.augment and r < 1.0: # if training (NOT testing), downsize to inference shape h, w, _ = img.shape img = cv2.resize(img, (int(w * r), int(h * r)), interpolation=cv2.INTER_LINEAR) # _LINEAR fastest return img @@ -644,7 +644,7 @@ def random_affine(img, targets=(), degrees=10, translate=.1, scale=.1, shear=10) # torchvision.transforms.RandomAffine(degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-10, 10)) # https://medium.com/uruvideo/dataset-augmentation-with-random-homographies-a8f4b44830d4 - if targets is None: + if targets is None: # targets = [cls, xyxy] targets = [] border = 0 # width of added border (optional) height = img.shape[0] + border * 2 @@ -667,19 +667,18 @@ def random_affine(img, targets=(), degrees=10, translate=.1, scale=.1, shear=10) S[0, 1] = math.tan(random.uniform(-shear, shear) * math.pi / 180) # x shear (deg) S[1, 0] = math.tan(random.uniform(-shear, shear) * math.pi / 180) # y shear (deg) - M = S @ T @ R # Combined rotation matrix. ORDER IS IMPORTANT HERE!! - imw = cv2.warpAffine(img, M[:2], dsize=(width, height), flags=cv2.INTER_AREA, - borderValue=(128, 128, 128)) # BGR order borderValue - - # Return warped points also - if len(targets) > 0: - n = targets.shape[0] - points = targets[:, 1:5].copy() - area0 = (points[:, 2] - points[:, 0]) * (points[:, 3] - points[:, 1]) + # Combined rotation matrix + M = S @ T @ R # ORDER IS IMPORTANT HERE!! + changed = (border != 0) or (M != np.eye(3)).any() + if changed: + img = cv2.warpAffine(img, M[:2], dsize=(width, height), flags=cv2.INTER_AREA, borderValue=(128, 128, 128)) + # Transform label coordinates + n = len(targets) + if n: # warp points xy = np.ones((n * 4, 3)) - xy[:, :2] = points[:, [0, 1, 2, 3, 0, 3, 2, 1]].reshape(n * 4, 2) # x1y1, x2y2, x1y2, x2y1 + xy[:, :2] = targets[:, [1, 2, 3, 4, 1, 4, 3, 2]].reshape(n * 4, 2) # x1y1, x2y2, x1y2, x2y1 xy = (xy @ M.T)[:, :2].reshape(n, 8) # create new boxes @@ -702,13 +701,14 @@ def random_affine(img, targets=(), degrees=10, translate=.1, scale=.1, shear=10) w = xy[:, 2] - xy[:, 0] h = xy[:, 3] - xy[:, 1] area = w * h + area0 = (targets[:, 3] - targets[:, 1]) * (targets[:, 4] - targets[:, 2]) ar = np.maximum(w / (h + 1e-16), h / (w + 1e-16)) i = (w > 4) & (h > 4) & (area / (area0 + 1e-16) > 0.1) & (ar < 10) targets = targets[i] targets[:, 1:5] = xy[i] - return imw, targets + return img, targets def cutout(image, labels): From 725762b9377744856b6392dc0b7efd725bb115a6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 13 Oct 2019 17:41:49 +0200 Subject: [PATCH 1512/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index b14d67bb..ab1791cf 100644 --- a/train.py +++ b/train.py @@ -65,8 +65,8 @@ def train(): multi_scale = opt.multi_scale if multi_scale: - img_sz_min = 14 # round(img_size / 32 / 1.5) + 1 - img_sz_max = 27 # round(img_size / 32 * 1.5) - 1 + img_sz_min = round(img_size / 32 / 1.5) + 1 + img_sz_max = round(img_size / 32 * 1.5) - 1 img_size = img_sz_max * 32 # initiate with maximum multi_scale size print('Using multi-scale %g - %g' % (img_sz_min * 32, img_size)) From 139161c522ea66b3499c8369d619233adb4871eb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 13 Oct 2019 18:39:32 +0200 Subject: [PATCH 1513/2595] updates --- utils/datasets.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 87dc39d1..7f2c9c04 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -588,7 +588,8 @@ def load_mosaic(self, index): labels[:, 4] = h * (x[:, 2] + x[:, 4] / 2) + padh labels4.append(labels) - labels4 = np.concatenate(labels4, 0) + if len(labels4): + labels4 = np.concatenate(labels4, 0) # hyp = self.hyp # img4, labels4 = random_affine(img4, labels4, @@ -600,7 +601,8 @@ def load_mosaic(self, index): # Center crop a = s // 2 img4 = img4[a:a + s, a:a + s] - labels4[:, 1:] -= a + if len(labels4): + labels4[:, 1:] -= a return img4, labels4 From 376e00a3cf496364b20f9632462d7ddbe4bcb3c6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 13 Oct 2019 18:53:15 +0200 Subject: [PATCH 1514/2595] updates --- train.py | 1 + 1 file changed, 1 insertion(+) diff --git a/train.py b/train.py index ab1791cf..7cdb34db 100644 --- a/train.py +++ b/train.py @@ -366,6 +366,7 @@ def train(): # end training if len(opt.name): os.rename('results.txt', 'results_%s.txt' % opt.name) + os.rename(wdir + 'best.pt', wdir + 'best_%s.pt' % opt.name) plot_results() # save as results.png print('%g epochs completed in %.3f hours.\n' % (epoch - start_epoch + 1, (time.time() - t0) / 3600)) dist.destroy_process_group() if torch.cuda.device_count() > 1 else None From 0be5e4132d728a7675de7eecc33facf7ea42f237 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 16 Oct 2019 01:32:07 +0200 Subject: [PATCH 1515/2595] updates --- README.md | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 6011e979..6e0b2af3 100755 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ Reflection | 50% probability (horizontal-only) H**S**V Saturation | +/- 50% HS**V** Intensity | +/- 50% - + ## Speed @@ -125,14 +125,14 @@ To run a specific models: ## Darknet Conversion ```bash -git clone https://github.com/ultralytics/yolov3 && cd yolov3 +$ git clone https://github.com/ultralytics/yolov3 && cd yolov3 # convert darknet cfg/weights to pytorch model -python3 -c "from models import *; convert('cfg/yolov3-spp.cfg', 'weights/yolov3-spp.weights')" +$ python3 -c "from models import *; convert('cfg/yolov3-spp.cfg', 'weights/yolov3-spp.weights')" Success: converted 'weights/yolov3-spp.weights' to 'converted.pt' # convert cfg/pytorch model to darknet weights -python3 -c "from models import *; convert('cfg/yolov3-spp.cfg', 'weights/yolov3-spp.pt')" +$ python3 -c "from models import *; convert('cfg/yolov3-spp.cfg', 'weights/yolov3-spp.pt')" Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' ``` @@ -148,11 +148,11 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' | 320 | 416 | 608 --- | --- | --- | --- `YOLOv3` | 51.8 (51.5) | 55.4 (55.3) | 58.2 (57.9) -`YOLOv3-SPP` | 52.4 | 56.8 | 60.7 (60.6) +`YOLOv3-SPP` | 52.6 | 57.0 | 60.7 (60.6) `YOLOv3-tiny` | 29.0 | 32.9 (33.1) | 35.5 ```bash -python3 test.py --save-json --img-size 608 +$ python3 test.py --save-json --img-size 608 Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', img_size=608, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='weights/yolov3-spp.weights') Using CUDA device0 _CudaDeviceProperties(name='Tesla T4', total_memory=15079MB) Class Images Targets P R mAP F1: 100% 313/313 [07:40<00:00, 2.34s/it] @@ -170,23 +170,23 @@ Using CUDA device0 _CudaDeviceProperties(name='Tesla T4', total_memory=15079MB) Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.518 Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.621 -python3 test.py --save-json --img-size 416 -Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', img_size=416, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='weights/yolov3-spp.weights') +$ python3 test.py --save-json --img-size 416 +Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', img_size=416, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='weights/yolov3s-ultralytics.pt') Using CUDA device0 _CudaDeviceProperties(name='Tesla T4', total_memory=15079MB) Class Images Targets P R mAP F1: 100% 313/313 [07:01<00:00, 1.41s/it] - all 5e+03 3.58e+04 0.107 0.749 0.557 0.182 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.337 <--- - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.568 <--- - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.350 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.152 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.359 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.496 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.279 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.432 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.460 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.257 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.494 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.623 + all 5e+03 3.58e+04 0.099 0.743 0.561 0.17 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.364 <--- + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.570 <--- + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.379 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.167 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.394 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.516 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.305 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.472 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.493 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.272 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.530 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.664 ``` # Citation From d23ada04dcb17b9be25404270adbd0e5560384ad Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 16 Oct 2019 01:36:13 +0200 Subject: [PATCH 1516/2595] updates --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 7cdb34db..ac542e65 100644 --- a/train.py +++ b/train.py @@ -100,7 +100,7 @@ def train(): cutoff = -1 # backbone reaches to cutoff layer start_epoch = 0 - best_fitness = 0. + best_fitness = float('inf') attempt_download(weights) if weights.endswith('.pt'): # pytorch format # possible weights are 'last.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt' etc. @@ -329,8 +329,8 @@ def train(): tb_writer.add_scalar(title, xi, epoch) # Update best mAP - fitness = results[2] # mAP - if fitness > best_fitness: + fitness = sum(results[4:]) # total loss + if fitness < best_fitness: best_fitness = fitness # Save training results From d1271941ad158dafd9385f4a9cfd997b51fcda5f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 16 Oct 2019 01:40:40 +0200 Subject: [PATCH 1517/2595] updates --- train.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/train.py b/train.py index ac542e65..4fd8926c 100644 --- a/train.py +++ b/train.py @@ -371,6 +371,11 @@ def train(): print('%g epochs completed in %.3f hours.\n' % (epoch - start_epoch + 1, (time.time() - t0) / 3600)) dist.destroy_process_group() if torch.cuda.device_count() > 1 else None torch.cuda.empty_cache() + + # save to cloud + # os.system(gsutil cp results.txt gs://...) + # os.system(gsutil cp weights/best.pt gs://...) + return results From d0e11b0ac4ddad36d0aba3e252ce5b3a48a7127d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 25 Oct 2019 10:39:44 -0500 Subject: [PATCH 1518/2595] updates --- utils/gcp.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index f0d9fa96..52cf5639 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -5,7 +5,6 @@ rm -rf sample_data yolov3 darknet apex coco cocoapi knife knifec git clone https://github.com/ultralytics/yolov3 # git clone https://github.com/AlexeyAB/darknet && cd darknet && make GPU=1 CUDNN=1 CUDNN_HALF=1 OPENCV=0 && wget -c https://pjreddie.com/media/files/darknet53.conv.74 && cd .. git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex -# git clone https://github.com/cocodataset/cocoapi && cd cocoapi/PythonAPI && make && cd ../.. && cp -r cocoapi/PythonAPI/pycocotools yolov3 sudo conda install -y -c conda-forge scikit-image tensorboard pycocotools python3 -c " from yolov3.utils.google_utils import gdrive_download From 39d247d7e85661c17a22083494d3be6b2308daf0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 25 Oct 2019 10:55:08 -0500 Subject: [PATCH 1519/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 7f2c9c04..5382d165 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -511,7 +511,7 @@ def load_image(self, index): img = cv2.imread(img_path) # BGR assert img is not None, 'Image Not Found ' + img_path r = self.img_size / max(img.shape) # size ratio - if self.augment and r < 1.0: # if training (NOT testing), downsize to inference shape + if self.augment: # if training (NOT testing), downsize to inference shape h, w, _ = img.shape img = cv2.resize(img, (int(w * r), int(h * r)), interpolation=cv2.INTER_LINEAR) # _LINEAR fastest return img From d957b20a5326bc85236558e6690e5e7dc8149006 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 25 Oct 2019 11:03:04 -0500 Subject: [PATCH 1520/2595] updates --- train.py | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/train.py b/train.py index 4fd8926c..6cc0ec77 100644 --- a/train.py +++ b/train.py @@ -20,25 +20,25 @@ last = wdir + 'last.pt' best = wdir + 'best.pt' results_file = 'results.txt' -# Hyperparameters (j-series, 50.5 mAP yolov3-320) evolved by @ktian08 https://github.com/ultralytics/yolov3/issues/310 -hyp = {'giou': 1.582, # giou loss gain - 'cls': 27.76, # cls loss gain (CE=~1.0, uCE=~20) - 'cls_pw': 1.446, # cls BCELoss positive_weight - 'obj': 21.35, # obj loss gain (*=80 for uBCE with 80 classes) - 'obj_pw': 3.941, # obj BCELoss positive_weight - 'iou_t': 0.2635, # iou training threshold - 'lr0': 0.002324, # initial learning rate (SGD=1E-3, Adam=9E-5) +# Hyperparameters (k-series, 53.3 mAP yolov3-spp-320) https://github.com/ultralytics/yolov3/issues/310 +hyp = {'giou': 3.31, # giou loss gain + 'cls': 42.4, # cls loss gain (CE=~1.0, uCE=~20) + 'cls_pw': 1.0, # cls BCELoss positive_weight + 'obj': 50.0, # obj loss gain (*=80 for uBCE with 80 classes) + 'obj_pw': 1.0, # obj BCELoss positive_weight + 'iou_t': 0.213, # iou training threshold + 'lr0': 0.00261, # initial learning rate (SGD=1E-3, Adam=9E-5) 'lrf': -4., # final LambdaLR learning rate = lr0 * (10 ** lrf) - 'momentum': 0.97, # SGD momentum - 'weight_decay': 0.0004569, # optimizer weight decay + 'momentum': 0.949, # SGD momentum + 'weight_decay': 0.000489, # optimizer weight decay 'fl_gamma': 0.5, # focal loss gamma - 'hsv_h': 0.01, # image HSV-Hue augmentation (fraction) - 'hsv_s': 0.5703, # image HSV-Saturation augmentation (fraction) - 'hsv_v': 0.3174, # image HSV-Value augmentation (fraction) - 'degrees': 1.113, # image rotation (+/- deg) - 'translate': 0.06797, # image translation (+/- fraction) - 'scale': 0.1059, # image scale (+/- gain) - 'shear': 0.5768} # image shear (+/- deg) + 'hsv_h': 0.0103, # image HSV-Hue augmentation (fraction) + 'hsv_s': 0.691, # image HSV-Saturation augmentation (fraction) + 'hsv_v': 0.433, # image HSV-Value augmentation (fraction) + 'degrees': 1.43, # image rotation (+/- deg) + 'translate': 0.0663, # image translation (+/- fraction) + 'scale': 0.11, # image scale (+/- gain) + 'shear': 0.384} # image shear (+/- deg) # Overwrite hyp with hyp*.txt (optional) f = glob.glob('hyp*.txt') From b3b4ff4107f59a51e7088b587467bba63354649d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 25 Oct 2019 11:03:33 -0500 Subject: [PATCH 1521/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 6cc0ec77..4a43eec6 100644 --- a/train.py +++ b/train.py @@ -24,7 +24,7 @@ results_file = 'results.txt' hyp = {'giou': 3.31, # giou loss gain 'cls': 42.4, # cls loss gain (CE=~1.0, uCE=~20) 'cls_pw': 1.0, # cls BCELoss positive_weight - 'obj': 50.0, # obj loss gain (*=80 for uBCE with 80 classes) + 'obj': 40.0, # obj loss gain (*=80 for uBCE with 80 classes) 'obj_pw': 1.0, # obj BCELoss positive_weight 'iou_t': 0.213, # iou training threshold 'lr0': 0.00261, # initial learning rate (SGD=1E-3, Adam=9E-5) From 8d1ab548c11426ae810efead6ec791c4cbd1b174 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 25 Oct 2019 11:04:10 -0500 Subject: [PATCH 1522/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 4a43eec6..7ada1dfc 100644 --- a/train.py +++ b/train.py @@ -22,9 +22,9 @@ results_file = 'results.txt' # Hyperparameters (k-series, 53.3 mAP yolov3-spp-320) https://github.com/ultralytics/yolov3/issues/310 hyp = {'giou': 3.31, # giou loss gain - 'cls': 42.4, # cls loss gain (CE=~1.0, uCE=~20) + 'cls': 42.4, # cls loss gain 'cls_pw': 1.0, # cls BCELoss positive_weight - 'obj': 40.0, # obj loss gain (*=80 for uBCE with 80 classes) + 'obj': 40.0, # obj loss gain 'obj_pw': 1.0, # obj BCELoss positive_weight 'iou_t': 0.213, # iou training threshold 'lr0': 0.00261, # initial learning rate (SGD=1E-3, Adam=9E-5) From d5dfbedcda41ccaa667668d52fcd48b22c5babf3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 1 Nov 2019 22:34:20 -0700 Subject: [PATCH 1523/2595] updates --- README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 6e0b2af3..604ac805 100755 --- a/README.md +++ b/README.md @@ -148,7 +148,7 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' | 320 | 416 | 608 --- | --- | --- | --- `YOLOv3` | 51.8 (51.5) | 55.4 (55.3) | 58.2 (57.9) -`YOLOv3-SPP` | 52.6 | 57.0 | 60.7 (60.6) +`YOLOv3-SPP` | 52.6 | 57.7 | 60.7 (60.6) `YOLOv3-tiny` | 29.0 | 32.9 (33.1) | 35.5 ```bash @@ -174,19 +174,19 @@ $ python3 test.py --save-json --img-size 416 Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', img_size=416, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='weights/yolov3s-ultralytics.pt') Using CUDA device0 _CudaDeviceProperties(name='Tesla T4', total_memory=15079MB) Class Images Targets P R mAP F1: 100% 313/313 [07:01<00:00, 1.41s/it] - all 5e+03 3.58e+04 0.099 0.743 0.561 0.17 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.364 <--- - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.570 <--- - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.379 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.167 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.394 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.516 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.305 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.472 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.493 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.272 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.530 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.664 + all 5e+03 3.58e+04 0.11 0.739 0.569 0.185 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.373 + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.577 + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.392 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.175 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.403 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.537 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.313 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.482 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.501 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.266 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.541 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.693 ``` # Citation From 96263ff4344e1202d0b7dfdf2b191435f3723f18 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 2 Nov 2019 15:11:03 -0700 Subject: [PATCH 1524/2595] updates --- utils/datasets.py | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 5382d165..fe783651 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -352,7 +352,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing if extract_bounding_boxes: p = Path(self.img_files[i]) img = cv2.imread(str(p)) - h, w, _ = img.shape + h, w = img.shape[:2] for j, x in enumerate(l): f = '%s%sclassifier%s%g_%g_%s' % (p.parent.parent, os.sep, os.sep, x[0], j, p.name) if not os.path.exists(Path(f).parent): @@ -380,7 +380,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing assert img is not None, 'Image Not Found ' + img_path r = self.img_size / max(img.shape) # size ratio if self.augment and r < 1: # if training (NOT testing), downsize to inference shape - h, w, _ = img.shape + h, w = img.shape[:2] img = cv2.resize(img, (int(w * r), int(h * r)), interpolation=cv2.INTER_LINEAR) # or INTER_AREA self.imgs[i] = img @@ -414,14 +414,14 @@ class LoadImagesAndLabels(Dataset): # for training/testing if mosaic: # Load mosaic img, labels = load_mosaic(self, index) - h, w, _ = img.shape + h, w = img.shape[:2] else: # Load image img = load_image(self, index) # Letterbox - h, w, _ = img.shape + h, w = img.shape[:2] if self.rect: img, ratio, padw, padh = letterbox(img, self.batch_shapes[self.batch[index]], mode='rect') else: @@ -512,7 +512,7 @@ def load_image(self, index): assert img is not None, 'Image Not Found ' + img_path r = self.img_size / max(img.shape) # size ratio if self.augment: # if training (NOT testing), downsize to inference shape - h, w, _ = img.shape + h, w = img.shape[:2] img = cv2.resize(img, (int(w * r), int(h * r)), interpolation=cv2.INTER_LINEAR) # _LINEAR fastest return img @@ -762,14 +762,28 @@ def cutout(image, labels): return labels +def reduce_img_size(path='../data/sm3/images', img_size=1024): # from utils.datasets import *; reduce_img_size() + # creates a new ./images_reduced folder with reduced size images of maximum size img_size + path_new = path + '_reduced' # reduced images path + create_folder(path_new) + for f in tqdm(glob.glob('%s/*.*' % path)): + try: + img = cv2.imread(f) + h, w = img.shape[:2] + r = img_size / max(h, w) # size ratio + if r < 1.0: + img = cv2.resize(img, (int(w * r), int(h * r)), interpolation=cv2.INTER_AREA) # _LINEAR fastest + cv2.imwrite(f.replace(path, path_new), img) + except: + print('WARNING: image failure %s' % f) + + def convert_images2bmp(): # cv2.imread() jpg at 230 img/s, *.bmp at 400 img/s for path in ['../coco/images/val2014/', '../coco/images/train2014/']: folder = os.sep + Path(path).name output = path.replace(folder, folder + 'bmp') - if os.path.exists(output): - shutil.rmtree(output) # delete output folder - os.makedirs(output) # make new output folder + create_folder(output) for f in tqdm(glob.glob('%s*.jpg' % path)): save_name = f.replace('.jpg', '.bmp').replace(folder, folder + 'bmp') From 3ba7fc69b871694a09ada8bb59e2f26370ecffa3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 2 Nov 2019 19:47:25 -0700 Subject: [PATCH 1525/2595] updates --- train.py | 1 + 1 file changed, 1 insertion(+) diff --git a/train.py b/train.py index 7ada1dfc..26dd2d60 100644 --- a/train.py +++ b/train.py @@ -367,6 +367,7 @@ def train(): if len(opt.name): os.rename('results.txt', 'results_%s.txt' % opt.name) os.rename(wdir + 'best.pt', wdir + 'best_%s.pt' % opt.name) + os.rename(wdir + 'last.pt', wdir + 'last_%s.pt' % opt.name) plot_results() # save as results.png print('%g epochs completed in %.3f hours.\n' % (epoch - start_epoch + 1, (time.time() - t0) / 3600)) dist.destroy_process_group() if torch.cuda.device_count() > 1 else None From fd3f2ed65f8321432a6af39cdd0cc2f2b0999107 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 2 Nov 2019 19:54:14 -0700 Subject: [PATCH 1526/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 26dd2d60..1d278058 100644 --- a/train.py +++ b/train.py @@ -364,7 +364,7 @@ def train(): # end epoch ---------------------------------------------------------------------------------------------------- # end training - if len(opt.name): + if len(opt.name) and not opt.prebias: os.rename('results.txt', 'results_%s.txt' % opt.name) os.rename(wdir + 'best.pt', wdir + 'best_%s.pt' % opt.name) os.rename(wdir + 'last.pt', wdir + 'last_%s.pt' % opt.name) From f7f8bb23c2d20fd080b355b822482d0ad86c2aa8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 4 Nov 2019 16:34:45 -0800 Subject: [PATCH 1527/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 1d278058..896d309d 100644 --- a/train.py +++ b/train.py @@ -366,8 +366,8 @@ def train(): # end training if len(opt.name) and not opt.prebias: os.rename('results.txt', 'results_%s.txt' % opt.name) - os.rename(wdir + 'best.pt', wdir + 'best_%s.pt' % opt.name) os.rename(wdir + 'last.pt', wdir + 'last_%s.pt' % opt.name) + os.rename(wdir + 'best.pt', wdir + 'best_%s.pt' % opt.name) if os.path.exists(wdir + 'best.pt') else None plot_results() # save as results.png print('%g epochs completed in %.3f hours.\n' % (epoch - start_epoch + 1, (time.time() - t0) / 3600)) dist.destroy_process_group() if torch.cuda.device_count() > 1 else None From 4320098cf59990a1c1ecf7459322e065da158131 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 4 Nov 2019 18:10:47 -0800 Subject: [PATCH 1528/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 604ac805..a3ec2345 100755 --- a/README.md +++ b/README.md @@ -148,7 +148,7 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' | 320 | 416 | 608 --- | --- | --- | --- `YOLOv3` | 51.8 (51.5) | 55.4 (55.3) | 58.2 (57.9) -`YOLOv3-SPP` | 52.6 | 57.7 | 60.7 (60.6) +`YOLOv3-SPP` | 53.7 | 57.7 | 60.7 (60.6) `YOLOv3-tiny` | 29.0 | 32.9 (33.1) | 35.5 ```bash From 09ca721f888d55d7147599d09bd091c021470162 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 6 Nov 2019 10:10:53 -0800 Subject: [PATCH 1529/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 896d309d..911cadcb 100644 --- a/train.py +++ b/train.py @@ -407,7 +407,7 @@ if __name__ == '__main__': parser.add_argument('--bucket', type=str, default='', help='gsutil bucket') parser.add_argument('--img-weights', action='store_true', help='select training images by weight') parser.add_argument('--cache-images', action='store_true', help='cache images for faster training') - parser.add_argument('--weights', type=str, default='', help='initial weights') # i.e. weights/darknet.53.conv.74 + parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='initial weights') # i.e. weights/darknet.53.conv.74 parser.add_argument('--arc', type=str, default='default', help='yolo architecture') # defaultpw, uCE, uBCE parser.add_argument('--prebias', action='store_true', help='transfer-learn yolo biases prior to training') parser.add_argument('--name', default='', help='renames results.txt to results_name.txt if supplied') From aae39ca894300cea594b47f426020ad41b683371 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 7 Nov 2019 14:46:16 -0800 Subject: [PATCH 1530/2595] updates --- utils/datasets.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index fe783651..8ccccd39 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -579,6 +579,7 @@ def load_mosaic(self, index): with open(label_path, 'r') as f: x = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) + labels = [] if x.size > 0: # Normalized xywh to pixel xyxy format labels = x.copy() @@ -586,8 +587,8 @@ def load_mosaic(self, index): labels[:, 2] = h * (x[:, 2] - x[:, 4] / 2) + padh labels[:, 3] = w * (x[:, 1] + x[:, 3] / 2) + padw labels[:, 4] = h * (x[:, 2] + x[:, 4] / 2) + padh - labels4.append(labels) + if len(labels4): labels4 = np.concatenate(labels4, 0) From 27b75e0d374b471e29ad7d86e4955e7a98c11b17 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 7 Nov 2019 15:49:37 -0800 Subject: [PATCH 1531/2595] updates --- utils/datasets.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/utils/datasets.py b/utils/datasets.py index 8ccccd39..b8dfbadc 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -799,6 +799,15 @@ def convert_images2bmp(): file.write(lines) +def imagelist2folder(path='../data/sm3/out_test.txt'): # from utils.datasets import *; imagelist2folder() + # Copies all the images in a text file (list of images) into a folder + create_folder(path[:-4]) + with open(path, 'r') as f: + for line in f.read().splitlines(): + os.system('cp "%s" %s' % (line, path[:-4])) + print(line) + + def create_folder(path='./new_folder'): # Create folder if os.path.exists(path): From 3005cd3a3936d902cb3eaa422d67c4078d9acadc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 7 Nov 2019 17:55:00 -0800 Subject: [PATCH 1532/2595] updates --- detect.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index a79b8021..d6419838 100644 --- a/detect.py +++ b/detect.py @@ -43,7 +43,13 @@ def detect(save_txt=False, save_img=False): # Export mode if ONNX_EXPORT: img = torch.zeros((1, 3) + img_size) # (1, 3, 320, 192) - torch.onnx.export(model, img, 'weights/export.onnx', verbose=True) + torch.onnx.export(model, img, 'weights/export.onnx', verbose=False, opset_version=11) + + # Validate exported model + import onnx + model = onnx.load('weights/export.onnx') # Load the ONNX model + onnx.checker.check_model(model) # Check that the IR is well formed + print(onnx.helper.printable_graph(model.graph)) # Print a human readable representation of the graph return # Half precision @@ -148,7 +154,7 @@ if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data', type=str, default='data/coco.data', help='coco.data file path') - parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') + parser.add_argument('--weights', type=str, default='weights/last49.pt', help='path to weights file') parser.add_argument('--source', type=str, default='data/samples', help='source') # input file/folder, 0 for webcam parser.add_argument('--output', type=str, default='output', help='output folder') # output folder parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') From bd10fb35c7c73ed4dfa952990ff54c83d41e6529 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 7 Nov 2019 17:55:30 -0800 Subject: [PATCH 1533/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index d6419838..5a7fb59b 100644 --- a/detect.py +++ b/detect.py @@ -154,7 +154,7 @@ if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data', type=str, default='data/coco.data', help='coco.data file path') - parser.add_argument('--weights', type=str, default='weights/last49.pt', help='path to weights file') + parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--source', type=str, default='data/samples', help='source') # input file/folder, 0 for webcam parser.add_argument('--output', type=str, default='output', help='output folder') # output folder parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') From d7f2c8ab72e2b962e293360b39671ef24ad15187 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 7 Nov 2019 19:32:33 -0800 Subject: [PATCH 1534/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index a4c331a2..f21e2285 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -669,7 +669,7 @@ def coco_single_class_labels(path='../coco/labels/train2014/', label_class=43): shutil.copyfile(src=img_file, dst='new/images/' + Path(file).name.replace('txt', 'jpg')) # copy images -def kmeans_targets(path='../coco/trainvalno5k.txt', n=9, img_size=416): # from utils.utils import *; kmeans_targets() +def kmeans_targets(path='../coco/trainvalno5k.txt', n=9, img_size=512): # from utils.utils import *; kmeans_targets() # Produces a list of target kmeans suitable for use in *.cfg files from utils.datasets import LoadImagesAndLabels from scipy import cluster @@ -679,7 +679,7 @@ def kmeans_targets(path='../coco/trainvalno5k.txt', n=9, img_size=416): # from for s, l in zip(dataset.shapes, dataset.labels): l[:, [1, 3]] *= s[0] # normalized to pixels l[:, [2, 4]] *= s[1] - l[:, 1:] *= img_size / max(s) # nominal img_size for training + l[:, 1:] *= img_size / max(s) * random.uniform(0.99, 1.01) # nominal img_size for training wh = np.concatenate(dataset.labels, 0)[:, 3:5] # wh from cxywh # Kmeans calculation From 8dd74426c0db9ac794a75950f72f227dcb7fb130 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 7 Nov 2019 19:34:59 -0800 Subject: [PATCH 1535/2595] updates --- cfg/yolov3s-9a512.cfg | 821 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 821 insertions(+) create mode 100644 cfg/yolov3s-9a512.cfg diff --git a/cfg/yolov3s-9a512.cfg b/cfg/yolov3s-9a512.cfg new file mode 100644 index 00000000..25912121 --- /dev/null +++ b/cfg/yolov3s-9a512.cfg @@ -0,0 +1,821 @@ +[net] +# Testing +# batch=1 +# subdivisions=1 +# Training +batch=64 +subdivisions=16 +width=608 +height=608 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +###################### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +### SPP ### +[maxpool] +stride=1 +size=5 + +[route] +layers=-2 + +[maxpool] +stride=1 +size=9 + +[route] +layers=-4 + +[maxpool] +stride=1 +size=13 + +[route] +layers=-1,-3,-5,-6 + +### End SPP ### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 6,7,8 +anchors = 15,17, 39,44, 55,107, 109,65, 101,203, 203,134, 396,154, 209,324, 434,348 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 61 + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 3,4,5 +anchors = 15,17, 39,44, 55,107, 109,65, 101,203, 203,134, 396,154, 209,324, 434,348 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 36 + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 0,1,2 +anchors = 15,17, 39,44, 55,107, 109,65, 101,203, 203,134, 396,154, 209,324, 434,348 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 From 2efe423b343ebc1788375b817507a97649b7958d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 7 Nov 2019 19:45:22 -0800 Subject: [PATCH 1536/2595] updates --- cfg/yolov3s-9a512ms.cfg | 821 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 821 insertions(+) create mode 100644 cfg/yolov3s-9a512ms.cfg diff --git a/cfg/yolov3s-9a512ms.cfg b/cfg/yolov3s-9a512ms.cfg new file mode 100644 index 00000000..ae44c597 --- /dev/null +++ b/cfg/yolov3s-9a512ms.cfg @@ -0,0 +1,821 @@ +[net] +# Testing +# batch=1 +# subdivisions=1 +# Training +batch=64 +subdivisions=16 +width=608 +height=608 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +###################### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +### SPP ### +[maxpool] +stride=1 +size=5 + +[route] +layers=-2 + +[maxpool] +stride=1 +size=9 + +[route] +layers=-4 + +[maxpool] +stride=1 +size=13 + +[route] +layers=-1,-3,-5,-6 + +### End SPP ### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 6,7,8 +anchors = 15,16, 32,48, 84,50, 63,118, 170,103, 128,225, 334,175, 246,394, 548,359 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 61 + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 3,4,5 +anchors = 15,16, 32,48, 84,50, 63,118, 170,103, 128,225, 334,175, 246,394, 548,359 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 36 + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 0,1,2 +anchors = 15,16, 32,48, 84,50, 63,118, 170,103, 128,225, 334,175, 246,394, 548,359 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 From d67b1cb1adde6a267a78c1770b70ae5487bed06a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 7 Nov 2019 20:01:47 -0800 Subject: [PATCH 1537/2595] updates --- test.py | 2 +- utils/utils.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test.py b/test.py index 100929a8..ebe60902 100644 --- a/test.py +++ b/test.py @@ -56,7 +56,7 @@ def test(cfg, seen = 0 model.eval() coco91class = coco80_to_coco91_class() - s = ('%20s' + '%10s' * 6) % ('Class', 'Images', 'Targets', 'P', 'R', 'mAP', 'F1') + s = ('%20s' + '%10s' * 6) % ('Class', 'Images', 'Targets', 'P', 'R', 'mAP@0.5', 'F1') p, r, f1, mp, mr, map, mf1 = 0., 0., 0., 0., 0., 0., 0. loss = torch.zeros(3) jdict, stats, ap, ap_class = [], [], [], [] diff --git a/utils/utils.py b/utils/utils.py index f21e2285..2e3b3ac7 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -881,7 +881,7 @@ def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() fig, ax = plt.subplots(2, 5, figsize=(14, 7)) ax = ax.ravel() s = ['GIoU', 'Objectness', 'Classification', 'Precision', 'Recall', - 'val GIoU', 'val Objectness', 'val Classification', 'mAP', 'F1'] + 'val GIoU', 'val Objectness', 'val Classification', 'mAP@0.5', 'F1'] for f in sorted(glob.glob('results*.txt') + glob.glob('../../Downloads/results*.txt')): results = np.loadtxt(f, usecols=[2, 3, 4, 8, 9, 12, 13, 14, 10, 11], ndmin=2).T n = results.shape[1] # number of rows @@ -902,7 +902,7 @@ def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() def plot_results_overlay(start=0, stop=0): # from utils.utils import *; plot_results_overlay() # Plot training results files 'results*.txt', overlaying train and val losses - s = ['train', 'train', 'train', 'Precision', 'mAP', 'val', 'val', 'val', 'Recall', 'F1'] # legends + s = ['train', 'train', 'train', 'Precision', 'mAP@0.5', 'val', 'val', 'val', 'Recall', 'F1'] # legends t = ['GIoU', 'Objectness', 'Classification', 'P-R', 'mAP-F1'] # titles for f in sorted(glob.glob('results*.txt') + glob.glob('../../Downloads/results*.txt')): results = np.loadtxt(f, usecols=[2, 3, 4, 8, 9, 12, 13, 14, 10, 11], ndmin=2).T From d0e000b008a34e92ca7671997da2afab24382b2a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 7 Nov 2019 20:11:03 -0800 Subject: [PATCH 1538/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 911cadcb..263f3df4 100644 --- a/train.py +++ b/train.py @@ -24,7 +24,7 @@ results_file = 'results.txt' hyp = {'giou': 3.31, # giou loss gain 'cls': 42.4, # cls loss gain 'cls_pw': 1.0, # cls BCELoss positive_weight - 'obj': 40.0, # obj loss gain + 'obj': 40.0, # obj loss gain (*=img_size/320 * 1.1 if img_size > 320) 'obj_pw': 1.0, # obj BCELoss positive_weight 'iou_t': 0.213, # iou training threshold 'lr0': 0.00261, # initial learning rate (SGD=1E-3, Adam=9E-5) From 97ac36ec6ceaab4a9a90934d33de3ddb8398e2f7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 8 Nov 2019 10:19:46 -0800 Subject: [PATCH 1539/2595] updates --- train.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index 263f3df4..34658fd3 100644 --- a/train.py +++ b/train.py @@ -60,6 +60,9 @@ def train(): hyp['cls_pw'] = 1. hyp['obj_pw'] = 1. + if img_size > 320: # scale hyp['obj'] by img_size (evolved at 320) + hyp['obj'] *= img_size / 320. + # Initialize init_seeds() multi_scale = opt.multi_scale @@ -407,7 +410,7 @@ if __name__ == '__main__': parser.add_argument('--bucket', type=str, default='', help='gsutil bucket') parser.add_argument('--img-weights', action='store_true', help='select training images by weight') parser.add_argument('--cache-images', action='store_true', help='cache images for faster training') - parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='initial weights') # i.e. weights/darknet.53.conv.74 + parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='initial weights') parser.add_argument('--arc', type=str, default='default', help='yolo architecture') # defaultpw, uCE, uBCE parser.add_argument('--prebias', action='store_true', help='transfer-learn yolo biases prior to training') parser.add_argument('--name', default='', help='renames results.txt to results_name.txt if supplied') From 579fdc57f89e1760e519e0d45e13195bd302e551 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 9 Nov 2019 10:56:38 -0800 Subject: [PATCH 1540/2595] updates --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 34658fd3..a38b9775 100644 --- a/train.py +++ b/train.py @@ -60,9 +60,6 @@ def train(): hyp['cls_pw'] = 1. hyp['obj_pw'] = 1. - if img_size > 320: # scale hyp['obj'] by img_size (evolved at 320) - hyp['obj'] *= img_size / 320. - # Initialize init_seeds() multi_scale = opt.multi_scale @@ -422,6 +419,9 @@ if __name__ == '__main__': print(opt) device = torch_utils.select_device(opt.device, apex=mixed_precision) + # scale hyp['obj'] by img_size (evolved at 320) + hyp['obj'] *= opt.img_size / 320. + tb_writer = None if not opt.evolve: # Train normally try: From 470ef6bc9271637e1b49137d32dbe4698e9ab478 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 12 Nov 2019 14:16:54 -0800 Subject: [PATCH 1541/2595] updates --- utils/datasets.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index b8dfbadc..5f7e18b0 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -579,7 +579,6 @@ def load_mosaic(self, index): with open(label_path, 'r') as f: x = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) - labels = [] if x.size > 0: # Normalized xywh to pixel xyxy format labels = x.copy() @@ -587,6 +586,8 @@ def load_mosaic(self, index): labels[:, 2] = h * (x[:, 2] - x[:, 4] / 2) + padh labels[:, 3] = w * (x[:, 1] + x[:, 3] / 2) + padw labels[:, 4] = h * (x[:, 2] + x[:, 4] / 2) + padh + else: + labels = np.zeros((0, 5), dtype=np.float32) labels4.append(labels) if len(labels4): From e66323e893500a9efa5e15793a08054f63739e58 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 12 Nov 2019 14:44:45 -0800 Subject: [PATCH 1542/2595] updates --- utils/gcp.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 52cf5639..f4a429e5 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -5,7 +5,7 @@ rm -rf sample_data yolov3 darknet apex coco cocoapi knife knifec git clone https://github.com/ultralytics/yolov3 # git clone https://github.com/AlexeyAB/darknet && cd darknet && make GPU=1 CUDNN=1 CUDNN_HALF=1 OPENCV=0 && wget -c https://pjreddie.com/media/files/darknet53.conv.74 && cd .. git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex -sudo conda install -y -c conda-forge scikit-image tensorboard pycocotools +sudo conda install -y -c conda-forge scikit-image pycocotools # tensorboard python3 -c " from yolov3.utils.google_utils import gdrive_download gdrive_download('1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO','coco.zip')" From 444a9f7099d4ff1aef12783704e3df9a8c3aa4b3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 12 Nov 2019 17:57:22 -0800 Subject: [PATCH 1543/2595] updates --- models.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/models.py b/models.py index 1ca41cf6..2291b65f 100755 --- a/models.py +++ b/models.py @@ -120,6 +120,15 @@ class Swish(nn.Module): return x * torch.sigmoid(x) +class Mish(nn.Module): # https://github.com/digantamisra98/Mish + # Applies the mish function element-wise: mish(x) = x * tanh(softplus(x)) = x * tanh(ln(1 + exp(x))) + def __init__(self): + super().__init__() + + def forward(self, x): + return x * torch.tanh(F.softplus(x)) + + class YOLOLayer(nn.Module): def __init__(self, anchors, nc, img_size, yolo_index, arc): super(YOLOLayer, self).__init__() From ac6112c184bdb61a483268b82f38b39a80d2f916 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 14 Nov 2019 13:14:47 -0800 Subject: [PATCH 1544/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 2e3b3ac7..8f375b58 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -864,7 +864,7 @@ def plot_evolution_results(hyp): # from utils.utils import *; plot_evolution_re fig = plt.figure(figsize=(12, 10)) matplotlib.rc('font', **{'size': 8}) for i, (k, v) in enumerate(hyp.items()): - y = x[:, i + 5] + y = x[:, i + 7] # mu = (y * weights).sum() / weights.sum() # best weighted result mu = y[f.argmax()] # best single result plt.subplot(4, 5, i + 1) From 8d5170f10fe23fca90c6b95e64ede804158508db Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 14 Nov 2019 14:20:50 -0800 Subject: [PATCH 1545/2595] updates --- models.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/models.py b/models.py index 2291b65f..6495aed0 100755 --- a/models.py +++ b/models.py @@ -429,6 +429,8 @@ def attempt_download(weights): gdrive_download(id='18xqvs_uwAqfTXp-LJCYLYNHBOcrwbrp0', name=weights) elif file == 'yolov3-tiny.conv.15': gdrive_download(id='140PnSedCsGGgu3rOD6Ez4oI6cdDzerLC', name=weights) + elif file == 'ultralytics49.pt': + gdrive_download(id='1GKy8hr0h41VlVX2QqURO9re7yKXhaPK7', name=weights) else: try: # download from pjreddie.com From a96e010251372ad675c4b0ef0ad4da85da3ade49 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 14 Nov 2019 15:07:27 -0800 Subject: [PATCH 1546/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index a38b9775..ae1e0405 100644 --- a/train.py +++ b/train.py @@ -20,7 +20,7 @@ last = wdir + 'last.pt' best = wdir + 'best.pt' results_file = 'results.txt' -# Hyperparameters (k-series, 53.3 mAP yolov3-spp-320) https://github.com/ultralytics/yolov3/issues/310 +# Hyperparameters (k-series, 57.7 mAP yolov3-spp-416) https://github.com/ultralytics/yolov3/issues/310 hyp = {'giou': 3.31, # giou loss gain 'cls': 42.4, # cls loss gain 'cls_pw': 1.0, # cls BCELoss positive_weight From 6047be35cfbd1b75d0ef3fd6ef009ed1546a3d12 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 14 Nov 2019 15:08:58 -0800 Subject: [PATCH 1547/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index ae1e0405..e5979645 100644 --- a/train.py +++ b/train.py @@ -24,7 +24,7 @@ results_file = 'results.txt' hyp = {'giou': 3.31, # giou loss gain 'cls': 42.4, # cls loss gain 'cls_pw': 1.0, # cls BCELoss positive_weight - 'obj': 40.0, # obj loss gain (*=img_size/320 * 1.1 if img_size > 320) + 'obj': 40.0, # obj loss gain (*=img_size/320 if img_size != 320) 'obj_pw': 1.0, # obj BCELoss positive_weight 'iou_t': 0.213, # iou training threshold 'lr0': 0.00261, # initial learning rate (SGD=1E-3, Adam=9E-5) From fedc2150b3f39f743f25c50d793c3f52bf85076a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 14 Nov 2019 17:12:55 -0800 Subject: [PATCH 1548/2595] updates --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index e5979645..3350f3a8 100644 --- a/train.py +++ b/train.py @@ -24,7 +24,7 @@ results_file = 'results.txt' hyp = {'giou': 3.31, # giou loss gain 'cls': 42.4, # cls loss gain 'cls_pw': 1.0, # cls BCELoss positive_weight - 'obj': 40.0, # obj loss gain (*=img_size/320 if img_size != 320) + 'obj': 64.0, # obj loss gain (*=img_size/320 if img_size != 320) 'obj_pw': 1.0, # obj BCELoss positive_weight 'iou_t': 0.213, # iou training threshold 'lr0': 0.00261, # initial learning rate (SGD=1E-3, Adam=9E-5) @@ -419,8 +419,8 @@ if __name__ == '__main__': print(opt) device = torch_utils.select_device(opt.device, apex=mixed_precision) - # scale hyp['obj'] by img_size (evolved at 320) - hyp['obj'] *= opt.img_size / 320. + # scale hyp['obj'] by img_size (evolved at 512) + hyp['obj'] *= opt.img_size / 512. tb_writer = None if not opt.evolve: # Train normally From 9daa5e858a7fc9d2b07aae3e59d630feb461b390 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 14 Nov 2019 17:22:09 -0800 Subject: [PATCH 1549/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 3350f3a8..5f61f7c4 100644 --- a/train.py +++ b/train.py @@ -103,7 +103,7 @@ def train(): best_fitness = float('inf') attempt_download(weights) if weights.endswith('.pt'): # pytorch format - # possible weights are 'last.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt' etc. + # possible weights are '*.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt' etc. if opt.bucket: os.system('gsutil cp gs://%s/last.pt %s' % (opt.bucket, last)) # download from bucket chkpt = torch.load(weights, map_location=device) @@ -129,7 +129,7 @@ def train(): del chkpt elif len(weights) > 0: # darknet format - # possible weights are 'yolov3.weights', 'yolov3-tiny.conv.15', 'darknet53.conv.74' etc. + # possible weights are '*.weights', 'yolov3-tiny.conv.15', 'darknet53.conv.74' etc. cutoff = load_darknet_weights(model, weights) if opt.transfer or opt.prebias: # transfer learning edge (yolo) layers From 985006a52ab9d4f27c5bf66a9c28dc9298835593 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 14 Nov 2019 17:25:29 -0800 Subject: [PATCH 1550/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 5f61f7c4..ec913098 100644 --- a/train.py +++ b/train.py @@ -366,7 +366,7 @@ def train(): # end training if len(opt.name) and not opt.prebias: os.rename('results.txt', 'results_%s.txt' % opt.name) - os.rename(wdir + 'last.pt', wdir + 'last_%s.pt' % opt.name) + os.rename(wdir + 'last.pt', wdir + 'last_%s.pt' % opt.name) if os.path.exists(wdir + 'last.pt') else None os.rename(wdir + 'best.pt', wdir + 'best_%s.pt' % opt.name) if os.path.exists(wdir + 'best.pt') else None plot_results() # save as results.png print('%g epochs completed in %.3f hours.\n' % (epoch - start_epoch + 1, (time.time() - t0) / 3600)) From eb8b39535acef14331c8c49ecba6391425480cbf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 14 Nov 2019 17:32:28 -0800 Subject: [PATCH 1551/2595] updates --- utils/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 8f375b58..e4d67e4d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -578,7 +578,8 @@ def print_model_biases(model): def strip_optimizer(f='weights/last.pt'): # from utils.utils import *; strip_optimizer() # Strip optimizer from *.pt files for lighter files (reduced by 2/3 size) - x = torch.load(f) + x = torch.load(f, map_location=torch.device('cpu')) + # x['epoch'] = 0 # uncomment to create a backbone x['optimizer'] = None torch.save(x, f) From 2433a994516918328d7134d83f34ae98a4854212 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 14 Nov 2019 17:48:06 -0800 Subject: [PATCH 1552/2595] updates --- models.py | 2 +- utils/gcp.sh | 52 ++++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 49 insertions(+), 5 deletions(-) diff --git a/models.py b/models.py index 6495aed0..d83ef0d5 100755 --- a/models.py +++ b/models.py @@ -314,7 +314,7 @@ def load_darknet_weights(self, weights, cutoff=-1): self.version = np.fromfile(f, dtype=np.int32, count=3) # (int32) version info: major, minor, revision self.seen = np.fromfile(f, dtype=np.int64, count=1) # (int64) number of images seen during training - weights = np.fromfile(f, dtype=np.float32) # The rest are weights + weights = np.fromfile(f, dtype=np.float32) # the rest are weights ptr = 0 for i, (mdef, module) in enumerate(zip(self.module_defs[:cutoff], self.module_list[:cutoff])): diff --git a/utils/gcp.sh b/utils/gcp.sh index f4a429e5..2ffe8e01 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -32,7 +32,7 @@ python3 test.py --save-json # Evolve for i in {0..500} do - python3 train.py --data data/coco.data --img-size 320 --epochs 1 --batch-size 64 --accumulate 1 --evolve --bucket yolov4 + python3 train.py --data data/coco.data --img-size 512 --epochs 27 --batch-size 32 --accumulate 2 --evolve --weights '' --bucket yolov4 done # Git pull @@ -115,14 +115,58 @@ sudo shutdown #Docker sudo docker kill $(sudo docker ps -q) -sudo docker pull ultralytics/yolov3:v1 -sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco ultralytics/yolov3:v1 +sudo docker pull ultralytics/yolov3:v0 +sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco ultralytics/yolov3:v0 clear while true do - python3 train.py --data data/coco.data --img-size 320 --batch-size 64 --accumulate 1 --evolve --epochs 1 --adam --bucket yolov4/adamdefaultpw_coco_1e --device 1 + python3 train.py --weights '' --prebias --img-size 512 --batch-size 32 --accumulate 2 --evolve --epochs 27 --bucket yolov4/512_coco_27e --device 0 done python3 train.py --data data/coco.data --img-size 320 --batch-size 64 --accumulate 1 --epochs 1 --adam --device 1 --prebias while true; do python3 train.py --data data/coco.data --img-size 320 --batch-size 64 --accumulate 1 --evolve --epochs 1 --adam --bucket yolov4/adamdefaultpw_coco_1e; done + + + +rm -rf yolov3 # Warning: remove existing +git clone https://github.com/ultralytics/yolov3 && cd yolov3 # master +python3 train.py --img-size 320 --data ../data/sm3/out.data --weights weights/yolov3-spp.weights --cfg cfg/yolov3-spp.cfg --prebias --epochs 300 --batch-size 32 --accumulate 2 --multi --name sm3b_yolov3_spp +python3 train.py --img-size 320 --data ../data/sm3/out.data --weights weights/yolov3-tiny.weights --cfg cfg/yolov3-tiny.cfg --prebias --epochs 300 --batch-size 32 --accumulate 2 --multi --name sm3b_yolov3_tiny +sudo shutdown + + +rm -rf yolov3 # Warning: remove existing +git clone https://github.com/ultralytics/yolov3 && cd yolov3 # master +python3 train.py --data data/coco_64img.data --batch-size 16 --accumulate 1 --nosave --weights weights/yolov3-spp.weights --transfer --name yolov3-spp_transfer +python3 train.py --data data/coco_64img.data --batch-size 16 --accumulate 1 --nosave --name from_scratch +python3 train.py --data data/coco_64img.data --batch-size 16 --accumulate 1 --nosave --weights weights/darknet53.conv.74 --name darknet53_backbone +python3 train.py --data data/coco_64img.data --batch-size 16 --accumulate 1 --nosave --weights weights/yolov3-spp.weights --name yolov3-spp_backbone +sudo shutdown + + +rm -rf yolov3 # Warning: remove existing +git clone https://github.com/ultralytics/yolov3 && cd yolov3 # clone +# bash yolov3/data/get_coco_dataset_gdrive.sh # copy COCO2014 dataset (20GB) +python3 train.py --data data/coco_1cls.data --batch-size 5 --accumulate 1 --weights weights/darknet53.conv.74 --nosave --cfg cfg/yolov3-spp.cfg --name 1cls +python3 train.py --data data/coco_1cls.data --batch-size 5 --accumulate 1 --weights weights/darknet53.conv.74 --nosave --cfg cfg/yolov3-spp-1cls.cfg --name 1cls_1clscfg +python3 -c "from utils import utils; utils.plot_results()" # plot as 'results.png' + + +clear +python3 test.py --img-size 320 --save-json --weights weights/last.pt +python3 test.py --img-size 416 --save-json --weights weights/last.pt +python3 test.py --img-size 608 --save-json --weights weights/last.pt +python3 test.py --img-size 640 --save-json --weights weights/last.pt --batch-size 8 +python3 test.py --img-size 800 --save-json --weights weights/last.pt --batch-size 8 +sudo shutdown + + +clear +rm -rf yolov3 # Warning: remove existing +git clone https://github.com/ultralytics/yolov3 && cd yolov3 # clone +python3 train.py --weights '' --img-size 512 --batch-size 32 --accumulate 2 --epochs 27 --prebias --nosave --notest --name 512default +sudo shutdown + + + From fa7c517ece0719a03d0746db40a79ebd6c8ad3e1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 14 Nov 2019 18:20:54 -0800 Subject: [PATCH 1553/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index e4d67e4d..b3a15c5e 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -579,7 +579,7 @@ def print_model_biases(model): def strip_optimizer(f='weights/last.pt'): # from utils.utils import *; strip_optimizer() # Strip optimizer from *.pt files for lighter files (reduced by 2/3 size) x = torch.load(f, map_location=torch.device('cpu')) - # x['epoch'] = 0 # uncomment to create a backbone + # x['epoch'] = -1 # uncomment to create a backbone x['optimizer'] = None torch.save(x, f) From b6a2e1b073c93ee8588dc51aa2dee8b19b3a6e1b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 14 Nov 2019 19:14:00 -0800 Subject: [PATCH 1554/2595] updates --- utils/utils.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index b3a15c5e..29bef278 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -579,14 +579,15 @@ def print_model_biases(model): def strip_optimizer(f='weights/last.pt'): # from utils.utils import *; strip_optimizer() # Strip optimizer from *.pt files for lighter files (reduced by 2/3 size) x = torch.load(f, map_location=torch.device('cpu')) - # x['epoch'] = -1 # uncomment to create a backbone x['optimizer'] = None + # x['training_results'] = None # uncomment to create a backbone + # x['epoch'] = -1 # uncomment to create a backbone torch.save(x, f) def create_backbone(f='weights/last.pt'): # from utils.utils import *; create_backbone() # create a backbone from a *.pt file - x = torch.load(f) + x = torch.load(f, map_location=torch.device('cpu')) x['optimizer'] = None x['training_results'] = None x['epoch'] = -1 From d93ca0410b4367d02c870a9424a2bf4d734a2e27 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 15 Nov 2019 13:42:53 -0800 Subject: [PATCH 1555/2595] updates --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7b24ad1d..5604e284 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Start from Nvidia PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorch -FROM nvcr.io/nvidia/pytorch:19.08-py3 +FROM nvcr.io/nvidia/pytorch:19.10-py3 # Install dependencies (pip or conda) RUN pip install -U gsutil From fe9ade6a64b9249c32daf4f0917737b545a1f27c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 16 Nov 2019 12:07:19 -0800 Subject: [PATCH 1556/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index ec913098..c96969fb 100644 --- a/train.py +++ b/train.py @@ -374,8 +374,8 @@ def train(): torch.cuda.empty_cache() # save to cloud - # os.system(gsutil cp results.txt gs://...) - # os.system(gsutil cp weights/best.pt gs://...) + # os.system('gsutil cp results.txt gs://...') + # os.system('gsutil cp weights/best.pt gs://...') return results From 84cb744761f137b697b8a730dd6d521a5cc304ce Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 16 Nov 2019 12:34:38 -0800 Subject: [PATCH 1557/2595] updates --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 5604e284..9b13f7c5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -59,7 +59,7 @@ COPY . /usr/src/app # export tag=ultralytics/yolov3:v0 && sudo docker pull $tag && sudo nvidia-docker run --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py # Build and Push -# export tag=ultralytics/yolov3:v0 && sudo docker build -t $tag . && docker push $tag +# export tag=ultralytics/yolov3:v0 && sudo docker build -t $tag . && sudo docker push $tag # Kill all # sudo docker kill $(sudo docker ps -q) From dc82956aff4ccbac0878ecffcc58e358ba2cb725 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 16 Nov 2019 13:12:56 -0800 Subject: [PATCH 1558/2595] updates --- models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index d83ef0d5..d352e873 100755 --- a/models.py +++ b/models.py @@ -23,11 +23,12 @@ def create_modules(module_defs, img_size, arc): bn = int(mdef['batch_normalize']) filters = int(mdef['filters']) kernel_size = int(mdef['size']) + stride = int(mdef['stride']) if 'stride' in mdef else (int(mdef['stride_y']), int(mdef['stride_x'])) pad = (kernel_size - 1) // 2 if int(mdef['pad']) else 0 modules.add_module('Conv2d', nn.Conv2d(in_channels=output_filters[-1], out_channels=filters, kernel_size=kernel_size, - stride=int(mdef['stride']), + stride=stride, padding=pad, bias=not bn)) if bn: From 0466285f59b2b73dbb0187f7883df6b577e032ab Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 16 Nov 2019 22:09:15 -0800 Subject: [PATCH 1559/2595] updates --- utils/gcp.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 2ffe8e01..4bb0776b 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -116,7 +116,7 @@ sudo shutdown #Docker sudo docker kill $(sudo docker ps -q) sudo docker pull ultralytics/yolov3:v0 -sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco ultralytics/yolov3:v0 +sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco ultralytics/yolov3:v1 clear while true @@ -124,7 +124,7 @@ do python3 train.py --weights '' --prebias --img-size 512 --batch-size 32 --accumulate 2 --evolve --epochs 27 --bucket yolov4/512_coco_27e --device 0 done -python3 train.py --data data/coco.data --img-size 320 --batch-size 64 --accumulate 1 --epochs 1 --adam --device 1 --prebias +python3 train.py --weights '' --prebias --img-size 512 --batch-size 8 --accumulate 8 --epochs 27 --device 0 while true; do python3 train.py --data data/coco.data --img-size 320 --batch-size 64 --accumulate 1 --evolve --epochs 1 --adam --bucket yolov4/adamdefaultpw_coco_1e; done From eb32fca7024d0566d0151b2b9242a74d1912ee88 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 16 Nov 2019 22:09:31 -0800 Subject: [PATCH 1560/2595] updates --- utils/gcp.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 4bb0776b..2fef2b35 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -124,7 +124,7 @@ do python3 train.py --weights '' --prebias --img-size 512 --batch-size 32 --accumulate 2 --evolve --epochs 27 --bucket yolov4/512_coco_27e --device 0 done -python3 train.py --weights '' --prebias --img-size 512 --batch-size 8 --accumulate 8 --epochs 27 --device 0 +python3 train.py --weights '' --prebias --img-size 512 --batch-size 16 --accumulate 4 --epochs 27 --device 0 while true; do python3 train.py --data data/coco.data --img-size 320 --batch-size 64 --accumulate 1 --evolve --epochs 1 --adam --bucket yolov4/adamdefaultpw_coco_1e; done From bb936f758a92f6b905aa3c3566e64648cc59cd8d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 17 Nov 2019 12:21:59 -0800 Subject: [PATCH 1561/2595] updates --- models.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/models.py b/models.py index d352e873..ff3138af 100755 --- a/models.py +++ b/models.py @@ -118,16 +118,15 @@ class Swish(nn.Module): super(Swish, self).__init__() def forward(self, x): - return x * torch.sigmoid(x) + return x.mul_(torch.sigmoid(x)) class Mish(nn.Module): # https://github.com/digantamisra98/Mish - # Applies the mish function element-wise: mish(x) = x * tanh(softplus(x)) = x * tanh(ln(1 + exp(x))) def __init__(self): super().__init__() def forward(self, x): - return x * torch.tanh(F.softplus(x)) + return x.mul_(F.softplus(x).tanh()) class YOLOLayer(nn.Module): From b4a71d058835670afabb30d79962231508ee07c9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 17 Nov 2019 17:17:52 -0800 Subject: [PATCH 1562/2595] updates --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 9b13f7c5..7d078339 100644 --- a/Dockerfile +++ b/Dockerfile @@ -56,7 +56,7 @@ COPY . /usr/src/app # sudo nvidia-docker run --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco ultralytics/yolov3:v0 python3 train.py # Pull and Run with local directory access -# export tag=ultralytics/yolov3:v0 && sudo docker pull $tag && sudo nvidia-docker run --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py +# export tag=ultralytics/yolov3:v0 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py # Build and Push # export tag=ultralytics/yolov3:v0 && sudo docker build -t $tag . && sudo docker push $tag From a1151c04a735e90605dbbacc4b30113c646cef66 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 17 Nov 2019 18:48:50 -0800 Subject: [PATCH 1563/2595] updates --- train.py | 21 ++++++++-------- utils/gcp.sh | 71 +++++----------------------------------------------- 2 files changed, 16 insertions(+), 76 deletions(-) diff --git a/train.py b/train.py index c96969fb..832ce0c2 100644 --- a/train.py +++ b/train.py @@ -104,8 +104,6 @@ def train(): attempt_download(weights) if weights.endswith('.pt'): # pytorch format # possible weights are '*.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt' etc. - if opt.bucket: - os.system('gsutil cp gs://%s/last.pt %s' % (opt.bucket, last)) # download from bucket chkpt = torch.load(weights, map_location=device) # load model @@ -347,8 +345,6 @@ def train(): # Save last checkpoint torch.save(chkpt, last) - if opt.bucket and not opt.prebias: - os.system('gsutil cp %s gs://%s' % (last, opt.bucket)) # upload to bucket # Save best checkpoint if best_fitness == fitness: @@ -365,18 +361,21 @@ def train(): # end training if len(opt.name) and not opt.prebias: - os.rename('results.txt', 'results_%s.txt' % opt.name) - os.rename(wdir + 'last.pt', wdir + 'last_%s.pt' % opt.name) if os.path.exists(wdir + 'last.pt') else None - os.rename(wdir + 'best.pt', wdir + 'best_%s.pt' % opt.name) if os.path.exists(wdir + 'best.pt') else None + fresults, flast, fbest = 'results%s.txt' % opt.name, 'last%s.pt' % opt.name, 'best%s.pt' % opt.name + os.rename('results.txt', fresults) + os.rename(wdir + 'last.pt', wdir + flast) if os.path.exists(wdir + 'last.pt') else None + os.rename(wdir + 'best.pt', wdir + fbest) if os.path.exists(wdir + 'best.pt') else None + + # save to cloud + if opt.bucket: + os.system('gsutil cp %s gs://%s' % (fresults, opt.bucket)) + os.system('gsutil cp %s gs://%s' % (wdir + flast, opt.bucket)) + plot_results() # save as results.png print('%g epochs completed in %.3f hours.\n' % (epoch - start_epoch + 1, (time.time() - t0) / 3600)) dist.destroy_process_group() if torch.cuda.device_count() > 1 else None torch.cuda.empty_cache() - # save to cloud - # os.system('gsutil cp results.txt gs://...') - # os.system('gsutil cp weights/best.pt gs://...') - return results diff --git a/utils/gcp.sh b/utils/gcp.sh index 2fef2b35..028ab47b 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -87,32 +87,6 @@ rm -rf darknet && git clone https://github.com/AlexeyAB/darknet && cd darknet && ./darknet detector train ../supermarket2/supermarket2.data ../yolo_v3_spp_pan_scale.cfg darknet53.conv.74 -map -dont_show # train spp ./darknet detector train ../yolov3/data/coco.data ../yolov3-spp.cfg darknet53.conv.74 -map -dont_show # train spp coco -./darknet detector train data/coco.data ../yolov3-spp.cfg darknet53.conv.74 -map -dont_show # train spp -gsutil cp -r backup/*5000.weights gs://sm6/weights -sudo shutdown - - -./darknet detector train ../supermarket2/supermarket2.data ../yolov3-tiny-sm2-1cls.cfg yolov3-tiny.conv.15 -map -dont_show # train tiny -./darknet detector train ../supermarket2/supermarket2.data cfg/yolov3-spp-sm2-1cls.cfg backup/yolov3-spp-sm2-1cls_last.weights # resume -python3 train.py --data ../supermarket2/supermarket2.data --cfg ../yolov3-spp-sm2-1cls.cfg --epochs 100 --num-workers 8 --img-size 320 --nosave # train ultralytics -python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/backup/yolov3-spp-sm2-1cls_5000.weights --cfg cfg/yolov3-spp-sm2-1cls.cfg # test -gsutil cp -r backup/*.weights gs://sm6/weights # weights to bucket - -python3 test.py --data ../supermarket2/supermarket2.data --weights weights/yolov3-spp-sm2-1cls_5000.weights --cfg ../yolov3-spp-sm2-1cls.cfg --img-size 320 --conf-thres 0.2 # test -python3 test.py --data ../supermarket2/supermarket2.data --weights weights/yolov3-spp-sm2-1cls-scalexy_125_5000.weights --cfg ../yolov3-spp-sm2-1cls-scalexy_125.cfg --img-size 320 --conf-thres 0.2 # test -python3 test.py --data ../supermarket2/supermarket2.data --weights weights/yolov3-spp-sm2-1cls-scalexy_150_5000.weights --cfg ../yolov3-spp-sm2-1cls-scalexy_150.cfg --img-size 320 --conf-thres 0.2 # test -python3 test.py --data ../supermarket2/supermarket2.data --weights weights/yolov3-spp-sm2-1cls-scalexy_200_5000.weights --cfg ../yolov3-spp-sm2-1cls-scalexy_200.cfg --img-size 320 --conf-thres 0.2 # test -python3 test.py --data ../supermarket2/supermarket2.data --weights ../darknet/backup/yolov3-spp-sm2-1cls-scalexy_variable_5000.weights --cfg ../yolov3-spp-sm2-1cls-scalexy_variable.cfg --img-size 320 --conf-thres 0.2 # test - -python3 train.py --img-size 320 --epochs 27 --batch-size 64 --accumulate 1 --nosave --notest && python3 test.py --weights weights/last.pt --img-size 320 --save-json && sudo shutdown - -# Debug/Development -python3 train.py --data data/coco.data --img-size 320 --single-scale --batch-size 64 --accumulate 1 --epochs 1 --evolve --giou -python3 test.py --weights weights/last.pt --cfg cfg/yolov3-spp.cfg --img-size 320 - -gsutil cp evolve.txt gs://ultralytics -sudo shutdown - #Docker sudo docker kill $(sudo docker ps -q) sudo docker pull ultralytics/yolov3:v0 @@ -124,49 +98,16 @@ do python3 train.py --weights '' --prebias --img-size 512 --batch-size 32 --accumulate 2 --evolve --epochs 27 --bucket yolov4/512_coco_27e --device 0 done -python3 train.py --weights '' --prebias --img-size 512 --batch-size 16 --accumulate 4 --epochs 27 --device 0 + +export tag=ultralytics/yolov3:v1 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 27 --batch-size 32 --accumulate 2 --prebias --bucket yolov4 --name 63 --device 0 +export tag=ultralytics/yolov3:v2 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 27 --batch-size 32 --accumulate 2 --prebias --bucket yolov4 --name 64 --device 1 + + + while true; do python3 train.py --data data/coco.data --img-size 320 --batch-size 64 --accumulate 1 --evolve --epochs 1 --adam --bucket yolov4/adamdefaultpw_coco_1e; done -rm -rf yolov3 # Warning: remove existing -git clone https://github.com/ultralytics/yolov3 && cd yolov3 # master -python3 train.py --img-size 320 --data ../data/sm3/out.data --weights weights/yolov3-spp.weights --cfg cfg/yolov3-spp.cfg --prebias --epochs 300 --batch-size 32 --accumulate 2 --multi --name sm3b_yolov3_spp -python3 train.py --img-size 320 --data ../data/sm3/out.data --weights weights/yolov3-tiny.weights --cfg cfg/yolov3-tiny.cfg --prebias --epochs 300 --batch-size 32 --accumulate 2 --multi --name sm3b_yolov3_tiny -sudo shutdown - - -rm -rf yolov3 # Warning: remove existing -git clone https://github.com/ultralytics/yolov3 && cd yolov3 # master -python3 train.py --data data/coco_64img.data --batch-size 16 --accumulate 1 --nosave --weights weights/yolov3-spp.weights --transfer --name yolov3-spp_transfer -python3 train.py --data data/coco_64img.data --batch-size 16 --accumulate 1 --nosave --name from_scratch -python3 train.py --data data/coco_64img.data --batch-size 16 --accumulate 1 --nosave --weights weights/darknet53.conv.74 --name darknet53_backbone -python3 train.py --data data/coco_64img.data --batch-size 16 --accumulate 1 --nosave --weights weights/yolov3-spp.weights --name yolov3-spp_backbone -sudo shutdown - - -rm -rf yolov3 # Warning: remove existing -git clone https://github.com/ultralytics/yolov3 && cd yolov3 # clone -# bash yolov3/data/get_coco_dataset_gdrive.sh # copy COCO2014 dataset (20GB) -python3 train.py --data data/coco_1cls.data --batch-size 5 --accumulate 1 --weights weights/darknet53.conv.74 --nosave --cfg cfg/yolov3-spp.cfg --name 1cls -python3 train.py --data data/coco_1cls.data --batch-size 5 --accumulate 1 --weights weights/darknet53.conv.74 --nosave --cfg cfg/yolov3-spp-1cls.cfg --name 1cls_1clscfg -python3 -c "from utils import utils; utils.plot_results()" # plot as 'results.png' - - -clear -python3 test.py --img-size 320 --save-json --weights weights/last.pt -python3 test.py --img-size 416 --save-json --weights weights/last.pt -python3 test.py --img-size 608 --save-json --weights weights/last.pt -python3 test.py --img-size 640 --save-json --weights weights/last.pt --batch-size 8 -python3 test.py --img-size 800 --save-json --weights weights/last.pt --batch-size 8 -sudo shutdown - - -clear -rm -rf yolov3 # Warning: remove existing -git clone https://github.com/ultralytics/yolov3 && cd yolov3 # clone -python3 train.py --weights '' --img-size 512 --batch-size 32 --accumulate 2 --epochs 27 --prebias --nosave --notest --name 512default -sudo shutdown From 9c716a39c369cafd7cbe50ab3198c1df59749149 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 17 Nov 2019 19:00:12 -0800 Subject: [PATCH 1564/2595] updates --- train.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/train.py b/train.py index 832ce0c2..eb69ae1e 100644 --- a/train.py +++ b/train.py @@ -368,8 +368,7 @@ def train(): # save to cloud if opt.bucket: - os.system('gsutil cp %s gs://%s' % (fresults, opt.bucket)) - os.system('gsutil cp %s gs://%s' % (wdir + flast, opt.bucket)) + os.system('gsutil cp %s %s gs://%s' % (fresults, wdir + flast, opt.bucket)) plot_results() # save as results.png print('%g epochs completed in %.3f hours.\n' % (epoch - start_epoch + 1, (time.time() - t0) / 3600)) From 7ebb7d131078bd8357aeddf23fd68414d1593612 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Nov 2019 10:15:17 -0800 Subject: [PATCH 1565/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index ff3138af..37c272e0 100755 --- a/models.py +++ b/models.py @@ -115,7 +115,7 @@ def create_modules(module_defs, img_size, arc): class Swish(nn.Module): def __init__(self): - super(Swish, self).__init__() + super().__init__() def forward(self, x): return x.mul_(torch.sigmoid(x)) From 2ba1a4c9cc93d63616db6fbf5eadba54ec0ba7c7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Nov 2019 12:01:17 -0800 Subject: [PATCH 1566/2595] updates --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index eb69ae1e..4833eebf 100644 --- a/train.py +++ b/train.py @@ -24,7 +24,7 @@ results_file = 'results.txt' hyp = {'giou': 3.31, # giou loss gain 'cls': 42.4, # cls loss gain 'cls_pw': 1.0, # cls BCELoss positive_weight - 'obj': 64.0, # obj loss gain (*=img_size/320 if img_size != 320) + 'obj': 52.0, # obj loss gain (*=img_size/320 if img_size != 320) 'obj_pw': 1.0, # obj BCELoss positive_weight 'iou_t': 0.213, # iou training threshold 'lr0': 0.00261, # initial learning rate (SGD=1E-3, Adam=9E-5) @@ -417,8 +417,8 @@ if __name__ == '__main__': print(opt) device = torch_utils.select_device(opt.device, apex=mixed_precision) - # scale hyp['obj'] by img_size (evolved at 512) - hyp['obj'] *= opt.img_size / 512. + # scale hyp['obj'] by img_size (evolved at 416) + hyp['obj'] *= opt.img_size / 416. tb_writer = None if not opt.evolve: # Train normally From b758b9c76ebe411a3e25dbeb9ccbb603365f991d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 Nov 2019 15:01:33 -0800 Subject: [PATCH 1567/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 5f7e18b0..29857af5 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -16,7 +16,7 @@ from tqdm import tqdm from utils.utils import xyxy2xywh, xywh2xyxy -img_formats = ['.bmp', '.jpg', '.jpeg', '.png', '.tif'] +img_formats = ['.bmp', '.jpg', '.jpeg', '.png', '.tif', '.dng'] vid_formats = ['.mov', '.avi', '.mp4'] # Get orientation exif tag From d9805d2fb6271e69ffabdfb8fbb0f0f139ae02e1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Nov 2019 12:42:12 -0800 Subject: [PATCH 1568/2595] updates --- train.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/train.py b/train.py index 4833eebf..325d32ac 100644 --- a/train.py +++ b/train.py @@ -317,6 +317,8 @@ def train(): # Write epoch results with open(results_file, 'a') as f: f.write(s + '%10.3g' * 7 % results + '\n') # P, R, mAP, F1, test_losses=(GIoU, obj, cls) + if len(opt.name) and opt.bucket and not opt.prebias: + os.system('gsutil cp %s gs://%s' % (results_file, opt.bucket)) # Write Tensorboard results if tb_writer: From d94b6e88e330f55756c202a4ea35c8c07d0b1558 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Nov 2019 18:16:35 -0800 Subject: [PATCH 1569/2595] updates --- utils/datasets.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 29857af5..dab52d64 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -764,7 +764,7 @@ def cutout(image, labels): return labels -def reduce_img_size(path='../data/sm3/images', img_size=1024): # from utils.datasets import *; reduce_img_size() +def reduce_img_size(path='../data/sm4/images', img_size=1024): # from utils.datasets import *; reduce_img_size() # creates a new ./images_reduced folder with reduced size images of maximum size img_size path_new = path + '_reduced' # reduced images path create_folder(path_new) @@ -775,7 +775,8 @@ def reduce_img_size(path='../data/sm3/images', img_size=1024): # from utils.dat r = img_size / max(h, w) # size ratio if r < 1.0: img = cv2.resize(img, (int(w * r), int(h * r)), interpolation=cv2.INTER_AREA) # _LINEAR fastest - cv2.imwrite(f.replace(path, path_new), img) + fnew = f.replace(path, path_new) # .replace(Path(f).suffix, '.jpg') + cv2.imwrite(fnew, img) except: print('WARNING: image failure %s' % f) From d355e539d973ec08292fd284dcfcabfd1e8743cb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Nov 2019 18:47:22 -0800 Subject: [PATCH 1570/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 325d32ac..d9d120e2 100644 --- a/train.py +++ b/train.py @@ -318,7 +318,7 @@ def train(): with open(results_file, 'a') as f: f.write(s + '%10.3g' * 7 % results + '\n') # P, R, mAP, F1, test_losses=(GIoU, obj, cls) if len(opt.name) and opt.bucket and not opt.prebias: - os.system('gsutil cp %s gs://%s' % (results_file, opt.bucket)) + os.system('gsutil cp results%s.txt gs://%s' % (opt.name, opt.bucket)) # Write Tensorboard results if tb_writer: From 253e746d30ee0a3a0cfdbf583b1eb8ddefa0f116 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Nov 2019 19:00:40 -0800 Subject: [PATCH 1571/2595] updates --- cfg/yolov3-spp-3cls.cfg | 821 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 821 insertions(+) create mode 100644 cfg/yolov3-spp-3cls.cfg diff --git a/cfg/yolov3-spp-3cls.cfg b/cfg/yolov3-spp-3cls.cfg new file mode 100644 index 00000000..b5d4bdf2 --- /dev/null +++ b/cfg/yolov3-spp-3cls.cfg @@ -0,0 +1,821 @@ +[net] +# Testing +# batch=1 +# subdivisions=1 +# Training +batch=64 +subdivisions=16 +width=608 +height=608 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=100 +max_batches = 5000 +policy=steps +steps=4000,4500 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +###################### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +### SPP ### +[maxpool] +stride=1 +size=5 + +[route] +layers=-2 + +[maxpool] +stride=1 +size=9 + +[route] +layers=-4 + +[maxpool] +stride=1 +size=13 + +[route] +layers=-1,-3,-5,-6 + +### End SPP ### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=24 +activation=linear + + +[yolo] +mask = 6,7,8 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=3 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 61 + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=24 +activation=linear + + +[yolo] +mask = 3,4,5 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=3 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 36 + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=24 +activation=linear + + +[yolo] +mask = 0,1,2 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=3 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 From 429d44282cec6f07640057ff7782f5b751b02e4a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 19 Nov 2019 20:42:44 -0800 Subject: [PATCH 1572/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index dab52d64..35890c81 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -367,7 +367,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing b[[1, 3]] = np.clip(b[[1, 3]], 0, h) assert cv2.imwrite(f, img[b[1]:b[3], b[0]:b[2]]), 'Failure extracting classifier boxes' else: - ne += 1 # file empty + ne += 1 # print('empty labels for image %s' % self.img_files[i]) # file empty pbar.desc = 'Reading labels (%g found, %g missing, %g empty for %g images)' % (nf, nm, ne, n) assert nf > 0, 'No labels found. Recommend correcting image and label paths.' From e58f0a68b6325e93d9ce98f66bcc3abb4b75a04e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Nov 2019 12:05:40 -0800 Subject: [PATCH 1573/2595] updates --- train.py | 2 +- utils/utils.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index d9d120e2..1cde2012 100644 --- a/train.py +++ b/train.py @@ -204,7 +204,7 @@ def train(): model.nc = nc # attach number of classes to model model.arc = opt.arc # attach yolo architecture model.hyp = hyp # attach hyperparameters to model - # model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights + model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights torch_utils.model_info(model, report='summary') # 'full' or 'summary' nb = len(dataloader) maps = np.zeros(nc) # mAP per class diff --git a/utils/utils.py b/utils/utils.py index 29bef278..11e72978 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -49,8 +49,8 @@ def labels_to_class_weights(labels, nc=80): weights = np.bincount(classes, minlength=nc) # occurences per class # Prepend gridpoint count (for uCE trianing) - gpi = ((320 / 32 * np.array([1, 2, 4])) ** 2 * 3).sum() # gridpoints per image - weights = np.hstack([gpi * ni - weights.sum() * 9, weights * 9]) ** 0.5 # prepend gridpoints to start + # gpi = ((320 / 32 * np.array([1, 2, 4])) ** 2 * 3).sum() # gridpoints per image + # weights = np.hstack([gpi * ni - weights.sum() * 9, weights * 9]) ** 0.5 # prepend gridpoints to start weights[weights == 0] = 1 # replace empty bins with 1 weights = 1 / weights # number of targets per class From bac4cc58fd4565593405bb75f7077485a777485b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Nov 2019 12:51:05 -0800 Subject: [PATCH 1574/2595] updates --- cfg/yolov3s-9a416ms.cfg | 821 ++++++++++++++++++++++++++++++++++++++++ utils/utils.py | 4 +- 2 files changed, 823 insertions(+), 2 deletions(-) create mode 100644 cfg/yolov3s-9a416ms.cfg diff --git a/cfg/yolov3s-9a416ms.cfg b/cfg/yolov3s-9a416ms.cfg new file mode 100644 index 00000000..2433e4c4 --- /dev/null +++ b/cfg/yolov3s-9a416ms.cfg @@ -0,0 +1,821 @@ +[net] +# Testing +# batch=1 +# subdivisions=1 +# Training +batch=64 +subdivisions=16 +width=608 +height=608 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +###################### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +### SPP ### +[maxpool] +stride=1 +size=5 + +[route] +layers=-2 + +[maxpool] +stride=1 +size=9 + +[route] +layers=-4 + +[maxpool] +stride=1 +size=13 + +[route] +layers=-1,-3,-5,-6 + +### End SPP ### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 6,7,8 +anchors = 13,13, 24,41, 62,38, 52,96, 135,80, 105,182, 269,141, 201,320, 445,292 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 61 + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 3,4,5 +anchors = 13,13, 24,41, 62,38, 52,96, 135,80, 105,182, 269,141, 201,320, 445,292 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 36 + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 0,1,2 +anchors = 13,13, 24,41, 62,38, 52,96, 135,80, 105,182, 269,141, 201,320, 445,292 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 diff --git a/utils/utils.py b/utils/utils.py index 11e72978..503cdff2 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -671,7 +671,7 @@ def coco_single_class_labels(path='../coco/labels/train2014/', label_class=43): shutil.copyfile(src=img_file, dst='new/images/' + Path(file).name.replace('txt', 'jpg')) # copy images -def kmeans_targets(path='../coco/trainvalno5k.txt', n=9, img_size=512): # from utils.utils import *; kmeans_targets() +def kmeans_targets(path='../coco/trainvalno5k.txt', n=9, img_size=416): # from utils.utils import *; kmeans_targets() # Produces a list of target kmeans suitable for use in *.cfg files from utils.datasets import LoadImagesAndLabels from scipy import cluster @@ -681,7 +681,7 @@ def kmeans_targets(path='../coco/trainvalno5k.txt', n=9, img_size=512): # from for s, l in zip(dataset.shapes, dataset.labels): l[:, [1, 3]] *= s[0] # normalized to pixels l[:, [2, 4]] *= s[1] - l[:, 1:] *= img_size / max(s) * random.uniform(0.99, 1.01) # nominal img_size for training + l[:, 1:] *= img_size / max(s) * random.uniform(0.5, 1.5) # nominal img_size for training wh = np.concatenate(dataset.labels, 0)[:, 3:5] # wh from cxywh # Kmeans calculation From bd498ae776cd5ccad9c111311e5ad8698c5c33d3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Nov 2019 13:14:24 -0800 Subject: [PATCH 1575/2595] updates --- train.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index 1cde2012..dc8dce05 100644 --- a/train.py +++ b/train.py @@ -173,7 +173,7 @@ def train(): model, optimizer = amp.initialize(model, optimizer, opt_level='O1', verbosity=0) # Initialize distributed training - if torch.cuda.device_count() > 1: + if device.type != 'cpu' and torch.cuda.device_count() > 1: dist.init_process_group(backend='nccl', # 'distributed backend' init_method='tcp://127.0.0.1:9999', # distributed training init method world_size=1, # number of nodes for distributed training @@ -418,6 +418,8 @@ if __name__ == '__main__': opt.weights = last if opt.resume else opt.weights print(opt) device = torch_utils.select_device(opt.device, apex=mixed_precision) + if device.type == 'cpu': + mixed_precision = False # scale hyp['obj'] by img_size (evolved at 416) hyp['obj'] *= opt.img_size / 416. From c14ea59c71425e90a1191a3fc25e0255e5adf14a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Nov 2019 13:24:50 -0800 Subject: [PATCH 1576/2595] updates --- train.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index dc8dce05..5509b550 100644 --- a/train.py +++ b/train.py @@ -65,8 +65,8 @@ def train(): multi_scale = opt.multi_scale if multi_scale: - img_sz_min = round(img_size / 32 / 1.5) + 1 - img_sz_max = round(img_size / 32 * 1.5) - 1 + img_sz_min = round(img_size / 32 / 1.5) + img_sz_max = round(img_size / 32 * 1.5) img_size = img_sz_max * 32 # initiate with maximum multi_scale size print('Using multi-scale %g - %g' % (img_sz_min * 32, img_size)) @@ -383,10 +383,15 @@ def train(): def prebias(): # trains output bias layers for 1 epoch and creates new backbone if opt.prebias: + a = opt.img_weights # save settings + opt.img_weights = False # disable settings + train() # transfer-learn yolo biases for 1 epoch create_backbone(last) # saved results as backbone.pt + opt.weights = wdir + 'backbone.pt' # assign backbone opt.prebias = False # disable prebias + opt.img_weights = a # reset settings if __name__ == '__main__': @@ -407,7 +412,7 @@ if __name__ == '__main__': parser.add_argument('--bucket', type=str, default='', help='gsutil bucket') parser.add_argument('--img-weights', action='store_true', help='select training images by weight') parser.add_argument('--cache-images', action='store_true', help='cache images for faster training') - parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='initial weights') + parser.add_argument('--weights', type=str, default='', help='initial weights') parser.add_argument('--arc', type=str, default='default', help='yolo architecture') # defaultpw, uCE, uBCE parser.add_argument('--prebias', action='store_true', help='transfer-learn yolo biases prior to training') parser.add_argument('--name', default='', help='renames results.txt to results_name.txt if supplied') From 2950f4c816183396c667db76ac3c9a74b446382f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Nov 2019 13:26:50 -0800 Subject: [PATCH 1577/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 5509b550..1b1975e0 100644 --- a/train.py +++ b/train.py @@ -318,7 +318,7 @@ def train(): with open(results_file, 'a') as f: f.write(s + '%10.3g' * 7 % results + '\n') # P, R, mAP, F1, test_losses=(GIoU, obj, cls) if len(opt.name) and opt.bucket and not opt.prebias: - os.system('gsutil cp results%s.txt gs://%s' % (opt.name, opt.bucket)) + os.system('gsutil cp results.txt gs://%s/results%s.txt' % (opt.bucket, opt.name)) # Write Tensorboard results if tb_writer: From 8e327e3bd08bf1bf60925d936b2e3e874e0db435 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Nov 2019 13:33:25 -0800 Subject: [PATCH 1578/2595] updates --- train.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index 1b1975e0..6987bdc6 100644 --- a/train.py +++ b/train.py @@ -204,7 +204,8 @@ def train(): model.nc = nc # attach number of classes to model model.arc = opt.arc # attach yolo architecture model.hyp = hyp # attach hyperparameters to model - model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights + if hasattr(dataset, 'labels'): + model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights torch_utils.model_info(model, report='summary') # 'full' or 'summary' nb = len(dataloader) maps = np.zeros(nc) # mAP per class From bb209111c44ee7390d57220d4980f62162637f13 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Nov 2019 13:36:15 -0800 Subject: [PATCH 1579/2595] updates --- train.py | 3 +-- utils/utils.py | 6 ++++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index 6987bdc6..1b1975e0 100644 --- a/train.py +++ b/train.py @@ -204,8 +204,7 @@ def train(): model.nc = nc # attach number of classes to model model.arc = opt.arc # attach yolo architecture model.hyp = hyp # attach hyperparameters to model - if hasattr(dataset, 'labels'): - model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights + model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights torch_utils.model_info(model, report='summary') # 'full' or 'summary' nb = len(dataloader) maps = np.zeros(nc) # mAP per class diff --git a/utils/utils.py b/utils/utils.py index 503cdff2..b7a9d8c5 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -43,14 +43,16 @@ def load_classes(path): def labels_to_class_weights(labels, nc=80): # Get class weights (inverse frequency) from training labels - ni = len(labels) # number of images + if labels[0] is None: # no labels loaded + return None + labels = np.concatenate(labels, 0) # labels.shape = (866643, 5) for COCO classes = labels[:, 0].astype(np.int) # labels = [class xywh] weights = np.bincount(classes, minlength=nc) # occurences per class # Prepend gridpoint count (for uCE trianing) # gpi = ((320 / 32 * np.array([1, 2, 4])) ** 2 * 3).sum() # gridpoints per image - # weights = np.hstack([gpi * ni - weights.sum() * 9, weights * 9]) ** 0.5 # prepend gridpoints to start + # weights = np.hstack([gpi * len(labels) - weights.sum() * 9, weights * 9]) ** 0.5 # prepend gridpoints to start weights[weights == 0] = 1 # replace empty bins with 1 weights = 1 / weights # number of targets per class From 3a4ed8b3aba7e957f32b4b51bca28215c9792000 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Nov 2019 13:40:24 -0800 Subject: [PATCH 1580/2595] updates --- train.py | 2 +- utils/utils.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 1b1975e0..bb9562f3 100644 --- a/train.py +++ b/train.py @@ -412,7 +412,7 @@ if __name__ == '__main__': parser.add_argument('--bucket', type=str, default='', help='gsutil bucket') parser.add_argument('--img-weights', action='store_true', help='select training images by weight') parser.add_argument('--cache-images', action='store_true', help='cache images for faster training') - parser.add_argument('--weights', type=str, default='', help='initial weights') + parser.add_argument('--weights', type=str, default='weights/ultralytics49.pt', help='initial weights') parser.add_argument('--arc', type=str, default='default', help='yolo architecture') # defaultpw, uCE, uBCE parser.add_argument('--prebias', action='store_true', help='transfer-learn yolo biases prior to training') parser.add_argument('--name', default='', help='renames results.txt to results_name.txt if supplied') diff --git a/utils/utils.py b/utils/utils.py index b7a9d8c5..89792ac3 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -44,7 +44,7 @@ def load_classes(path): def labels_to_class_weights(labels, nc=80): # Get class weights (inverse frequency) from training labels if labels[0] is None: # no labels loaded - return None + return torch.Tensor() labels = np.concatenate(labels, 0) # labels.shape = (866643, 5) for COCO classes = labels[:, 0].astype(np.int) # labels = [class xywh] From 74b57500c717f1d43e34c7cd9eb41a5846d86a73 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Nov 2019 16:02:57 -0800 Subject: [PATCH 1581/2595] updates --- utils/datasets.py | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/datasets.py b/utils/datasets.py index 35890c81..42b154fc 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -368,6 +368,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing assert cv2.imwrite(f, img[b[1]:b[3], b[0]:b[2]]), 'Failure extracting classifier boxes' else: ne += 1 # print('empty labels for image %s' % self.img_files[i]) # file empty + # os.system("rm '%s' '%s'" % (self.img_files[i], self.label_files[i])) # remove pbar.desc = 'Reading labels (%g found, %g missing, %g empty for %g images)' % (nf, nm, ne, n) assert nf > 0, 'No labels found. Recommend correcting image and label paths.' From a0067ac8fb07e55549a5cdb3af1f2c06d78831bb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Nov 2019 19:10:36 -0800 Subject: [PATCH 1582/2595] updates --- utils/utils.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 89792ac3..10502174 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -442,7 +442,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): (x1, y1, x2, y2, object_conf, class_conf, class) """ - min_wh = 2 # (pixels) minimum box width and height + min_wh, max_wh = 2, 30000 # (pixels) minimum and maximium box width and height output = [None] * len(prediction) for image_i, pred in enumerate(prediction): @@ -470,7 +470,8 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): # pred[class_pred != 2, 4] = 0.0 # Select only suitable predictions - i = (pred[:, 4] > conf_thres) & (pred[:, 2:4] > min_wh).all(1) & torch.isfinite(pred).all(1) + i = (pred[:, 4] > conf_thres) & (pred[:, 2:4] > min_wh).all(1) & (pred[:, 2:4] < max_wh).all(1) & \ + torch.isfinite(pred).all(1) pred = pred[i] # If none are remaining => process next image From f38723c0bd148191f580eef00016780ab04ea914 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 Nov 2019 19:34:22 -0800 Subject: [PATCH 1583/2595] updates --- test.py | 3 ++- train.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index ebe60902..05cc0862 100644 --- a/test.py +++ b/test.py @@ -47,9 +47,10 @@ def test(cfg, # Dataloader dataset = LoadImagesAndLabels(test_path, img_size, batch_size) + batch_size = min(batch_size, len(dataset)) dataloader = DataLoader(dataset, batch_size=batch_size, - num_workers=min([os.cpu_count(), batch_size, 16]), + num_workers=min([os.cpu_count(), batch_size if batch_size > 1 else 0, 16]), pin_memory=True, collate_fn=dataset.collate_fn) diff --git a/train.py b/train.py index bb9562f3..3a4bc34f 100644 --- a/train.py +++ b/train.py @@ -193,9 +193,10 @@ def train(): cache_images=False if opt.prebias else opt.cache_images) # Dataloader + batch_size = min(batch_size, len(dataset)) dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, - num_workers=min([os.cpu_count(), batch_size, 16]), + num_workers=min([os.cpu_count(), batch_size if batch_size > 1 else 0, 16]), shuffle=not opt.rect, # Shuffle=True unless rectangular training is used pin_memory=True, collate_fn=dataset.collate_fn) From 7c59715fda83b0d6edada5658e1c63bc0dc81a86 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Nov 2019 00:00:17 -0800 Subject: [PATCH 1584/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 05cc0862..c233adcf 100644 --- a/test.py +++ b/test.py @@ -219,4 +219,4 @@ if __name__ == '__main__': opt.iou_thres, opt.conf_thres, opt.nms_thres, - opt.save_json) + opt.save_json or (opt.data == 'data/coco.data')) From 3834b779615ee4bad7fe688cccc898003816608d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 Nov 2019 11:52:48 -0800 Subject: [PATCH 1585/2595] updates --- models.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/models.py b/models.py index 37c272e0..31350979 100755 --- a/models.py +++ b/models.py @@ -442,3 +442,6 @@ def attempt_download(weights): os.system('rm ' + weights) # remove partial downloads assert os.path.exists(weights), msg # download missing weights from Google Drive + if os.path.getsize(weights) < 5E6: # weights < 5MB (too small), download failed + os.remove(weights) # delete corrupted weightsfile + print(msg) From e7019798623e683cf9e18374c4a0162574047617 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 22 Nov 2019 13:03:29 -1000 Subject: [PATCH 1586/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 10502174..a9f77a1c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -688,7 +688,7 @@ def kmeans_targets(path='../coco/trainvalno5k.txt', n=9, img_size=416): # from wh = np.concatenate(dataset.labels, 0)[:, 3:5] # wh from cxywh # Kmeans calculation - k = cluster.vq.kmeans(wh, n)[0] + k, dist = cluster.vq.kmeans(wh, n) # points, mean distance k = k[np.argsort(k.prod(1))] # sort small to large # Measure IoUs From bbd6c884e6668f799dad937c3802ac7f4a9d62a7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 22 Nov 2019 13:27:23 -1000 Subject: [PATCH 1587/2595] updates --- models.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/models.py b/models.py index 31350979..cfa4fff9 100755 --- a/models.py +++ b/models.py @@ -441,7 +441,6 @@ def attempt_download(weights): print(msg) os.system('rm ' + weights) # remove partial downloads - assert os.path.exists(weights), msg # download missing weights from Google Drive if os.path.getsize(weights) < 5E6: # weights < 5MB (too small), download failed os.remove(weights) # delete corrupted weightsfile - print(msg) + assert os.path.exists(weights), msg # download missing weights from Google Drive From 46da9fd26ce809607112fdbb3a31de36a33841de Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 22 Nov 2019 13:38:28 -1000 Subject: [PATCH 1588/2595] updates --- utils/utils.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/utils/utils.py b/utils/utils.py index a9f77a1c..2afd8290 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -691,6 +691,14 @@ def kmeans_targets(path='../coco/trainvalno5k.txt', n=9, img_size=416): # from k, dist = cluster.vq.kmeans(wh, n) # points, mean distance k = k[np.argsort(k.prod(1))] # sort small to large + # # Plot + # k, d = [None] * 20, [None] * 20 + # for i in tqdm(range(1, 21)): + # k[i-1], d[i-1] = cluster.vq.kmeans(wh, i) # points, mean distance + # fig, ax = plt.subplots(1, 2, figsize=(14, 7)) + # ax = ax.ravel() + # ax[0].plot(np.arange(1, 21), np.array(d) ** 2, marker='.') + # Measure IoUs iou = torch.stack([wh_iou(torch.Tensor(wh).T, torch.Tensor(x).T) for x in k], 0) biou = iou.max(0)[0] # closest anchor IoU From 54d907d8c84da2a711969e04d076475b6e47a37f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 22 Nov 2019 14:03:46 -1000 Subject: [PATCH 1589/2595] updates --- models.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/models.py b/models.py index cfa4fff9..c7d83ef3 100755 --- a/models.py +++ b/models.py @@ -413,25 +413,24 @@ def convert(cfg='cfg/yolov3-spp.cfg', weights='weights/yolov3-spp.weights'): def attempt_download(weights): # Attempt to download pretrained weights if not found locally - msg = weights + ' missing, download from https://drive.google.com/drive/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI' + msg = weights + ' missing, download from https://drive.google.com/open?id=1LezFG5g3BCW6iYaV89B2i64cqEUZD7e0' if weights and not os.path.isfile(weights): file = Path(weights).name if file == 'yolov3-spp.weights': - gdrive_download(id='1oPCHKsM2JpM-zgyepQciGli9X0MTsJCO', name=weights) + gdrive_download(id='16lYS4bcIdM2HdmyJBVDOvt3Trx6N3W2R', name=weights) elif file == 'yolov3-spp.pt': - gdrive_download(id='1vFlbJ_dXPvtwaLLOu-twnjK4exdFiQ73', name=weights) + gdrive_download(id='1f6Ovy3BSq2wYq4UfvFUpxJFNDFfrIDcR', name=weights) elif file == 'yolov3.pt': - gdrive_download(id='11uy0ybbOXA2hc-NJkJbbbkDwNX1QZDlz', name=weights) + gdrive_download(id='1SHNFyoe5Ni8DajDNEqgB2oVKBb_NoEad', name=weights) elif file == 'yolov3-tiny.pt': - gdrive_download(id='1qKSgejNeNczgNNiCn9ZF_o55GFk1DjY_', name=weights) + gdrive_download(id='10m_3MlpQwRtZetQxtksm9jqHrPTHZ6vo', name=weights) elif file == 'darknet53.conv.74': - gdrive_download(id='18xqvs_uwAqfTXp-LJCYLYNHBOcrwbrp0', name=weights) + gdrive_download(id='1WUVBid-XuoUBmvzBVUCBl_ELrzqwA8dJ', name=weights) elif file == 'yolov3-tiny.conv.15': - gdrive_download(id='140PnSedCsGGgu3rOD6Ez4oI6cdDzerLC', name=weights) + gdrive_download(id='1Bw0kCpplxUqyRYAJr9RY9SGnOJbo9nEj', name=weights) elif file == 'ultralytics49.pt': - gdrive_download(id='1GKy8hr0h41VlVX2QqURO9re7yKXhaPK7', name=weights) - + gdrive_download(id='158g62Vs14E3aj7oPVPuEnNZMKFNgGyNq', name=weights) else: try: # download from pjreddie.com url = 'https://pjreddie.com/media/files/' + file From a137c21dc0d1b1a0f389f2c5d32117f45ad17ca9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 22 Nov 2019 14:06:16 -1000 Subject: [PATCH 1590/2595] updates --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index a3ec2345..cc8ce866 100755 --- a/README.md +++ b/README.md @@ -119,8 +119,7 @@ To run a specific models: # Pretrained Weights -- Darknet `*.weights` format: https://pjreddie.com/media/files/yolov3.weights -- PyTorch `*.pt` format: https://drive.google.com/drive/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI +Download from: [https://drive.google.com/open?id=1LezFG5g3BCW6iYaV89B2i64cqEUZD7e0](https://drive.google.com/open?id=1LezFG5g3BCW6iYaV89B2i64cqEUZD7e0) ## Darknet Conversion From 4c61611ce00d1336070678ff7c0fdbc61521dcf3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 22 Nov 2019 14:20:35 -1000 Subject: [PATCH 1591/2595] updates --- models.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/models.py b/models.py index c7d83ef3..9d16ff95 100755 --- a/models.py +++ b/models.py @@ -419,6 +419,8 @@ def attempt_download(weights): if file == 'yolov3-spp.weights': gdrive_download(id='16lYS4bcIdM2HdmyJBVDOvt3Trx6N3W2R', name=weights) + elif file == 'yolov3.weights': + gdrive_download(id='1uTlyDWlnaqXcsKOktP5aH_zRDbfcDp-y', name=weights) elif file == 'yolov3-spp.pt': gdrive_download(id='1f6Ovy3BSq2wYq4UfvFUpxJFNDFfrIDcR', name=weights) elif file == 'yolov3.pt': From f1e8d23d393a57749a77d30a43931b948e1c9bd5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 22 Nov 2019 14:36:49 -1000 Subject: [PATCH 1592/2595] updates --- data/get_coco_dataset_gdrive.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/get_coco_dataset_gdrive.sh b/data/get_coco_dataset_gdrive.sh index 9ec3a1ef..c965e487 100755 --- a/data/get_coco_dataset_gdrive.sh +++ b/data/get_coco_dataset_gdrive.sh @@ -7,7 +7,7 @@ # Set fileid and filename filename="coco.zip" -fileid="1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO" # coco.zip +fileid="1WQT6SOktSe8Uw6r10-2JhbEhMY5DJaph" # coco.zip # Download from Google Drive, accepting presented query curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" > /dev/null From d623a425d9190ab71d11d8b4123d66a6e70bfdb1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 22 Nov 2019 16:20:11 -1000 Subject: [PATCH 1593/2595] updates --- models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index 9d16ff95..9bfbb114 100755 --- a/models.py +++ b/models.py @@ -36,7 +36,8 @@ def create_modules(module_defs, img_size, arc): if mdef['activation'] == 'leaky': # TODO: activation study https://github.com/ultralytics/yolov3/issues/441 modules.add_module('activation', nn.LeakyReLU(0.1, inplace=True)) # modules.add_module('activation', nn.PReLU(num_parameters=1, init=0.10)) - # modules.add_module('activation', Swish()) + elif mdef['activation'] == 'swish': + modules.add_module('activation', Swish()) elif mdef['type'] == 'maxpool': kernel_size = int(mdef['size']) From bdf11ffdf1eb472f0b05af068f85ab3c8b8cb198 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 23 Nov 2019 09:25:21 -1000 Subject: [PATCH 1594/2595] updates --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index ee81adbc..bdd21aba 100755 --- a/requirements.txt +++ b/requirements.txt @@ -12,6 +12,6 @@ Pillow # Equivalent conda commands ---------------------------------------------------- # conda update -n base -c defaults conda # conda install -yc anaconda future numpy opencv matplotlib tqdm pillow -# conda install -yc conda-forge scikit-image tensorboard pycocotools +# conda install -yc conda-forge scikit-image pycocotools tensorboard # conda install -yc spyder-ide spyder-line-profiler # conda install -yc pytorch pytorch torchvision From 55a6b0522802466a2b45a585b1ef65c0587263d0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 23 Nov 2019 09:35:11 -1000 Subject: [PATCH 1595/2595] updates --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index bdd21aba..a475a45c 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ # pip3 install -U -r requirements.txt numpy opencv-python -torch >= 1.2 +torch >= 1.3 matplotlib pycocotools tqdm From 46161ed94d4018df6b5caebdaf4e91f31fbd065d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 23 Nov 2019 12:09:46 -1000 Subject: [PATCH 1596/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 42b154fc..a456c185 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -802,7 +802,7 @@ def convert_images2bmp(): file.write(lines) -def imagelist2folder(path='../data/sm3/out_test.txt'): # from utils.datasets import *; imagelist2folder() +def imagelist2folder(path='data/coco_64img.txt'): # from utils.datasets import *; imagelist2folder() # Copies all the images in a text file (list of images) into a folder create_folder(path[:-4]) with open(path, 'r') as f: From 6c6aa483d7f1300a4ca32cac3fdfa39dc257fa58 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 23 Nov 2019 13:23:38 -1000 Subject: [PATCH 1597/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 2afd8290..19fdffbb 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -339,7 +339,7 @@ def compute_loss(p, targets, model): # predictions, targets, model # GIoU pxy = torch.sigmoid(ps[:, 0:2]) # pxy = pxy * s - (s - 1) / 2, s = 1.5 (scale_xy) - pbox = torch.cat((pxy, torch.exp(ps[:, 2:4]) * anchor_vec[i]), 1) # predicted box + pbox = torch.cat((pxy, torch.exp(ps[:, 2:4]).clamp(max=1E2) * anchor_vec[i]), 1) # predicted box giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation lbox += (1.0 - giou).mean() # giou loss From b027c660489399ad30562e17e2a1a2e008176048 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 23 Nov 2019 13:34:37 -1000 Subject: [PATCH 1598/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 19fdffbb..8738246c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -339,7 +339,7 @@ def compute_loss(p, targets, model): # predictions, targets, model # GIoU pxy = torch.sigmoid(ps[:, 0:2]) # pxy = pxy * s - (s - 1) / 2, s = 1.5 (scale_xy) - pbox = torch.cat((pxy, torch.exp(ps[:, 2:4]).clamp(max=1E2) * anchor_vec[i]), 1) # predicted box + pbox = torch.cat((pxy, torch.exp(ps[:, 2:4]).clamp(max=1E4) * anchor_vec[i]), 1) # predicted box giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation lbox += (1.0 - giou).mean() # giou loss From 4aff40077773380307aaf081a62c9a07116eefbc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 23 Nov 2019 19:23:31 -1000 Subject: [PATCH 1599/2595] updates --- utils/utils.py | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 8738246c..e53cea33 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -11,6 +11,7 @@ import numpy as np import torch import torch.nn as nn from tqdm import tqdm +import math from . import torch_utils # , google_utils @@ -234,7 +235,7 @@ def compute_ap(recall, precision): return ap -def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False): +def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False, DIoU=False, CIoU=False): # Returns the IoU of box1 to box2. box1 is 4, box2 is nx4 box2 = box2.t() @@ -255,15 +256,31 @@ def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False): (torch.min(b1_y2, b2_y2) - torch.max(b1_y1, b2_y1)).clamp(0) # Union Area - union_area = ((b1_x2 - b1_x1) * (b1_y2 - b1_y1) + 1e-16) + \ - (b2_x2 - b2_x1) * (b2_y2 - b2_y1) - inter_area + w1, h1 = b1_x2 - b1_x1, b1_y2 - b1_y1 + w2, h2 = b2_x2 - b2_x1, b2_y2 - b2_y1 + union_area = (w1 * h1 + 1e-16) + w2 * h2 - inter_area iou = inter_area / union_area # iou - if GIoU: # Generalized IoU https://arxiv.org/pdf/1902.09630.pdf - c_x1, c_x2 = torch.min(b1_x1, b2_x1), torch.max(b1_x2, b2_x2) - c_y1, c_y2 = torch.min(b1_y1, b2_y1), torch.max(b1_y2, b2_y2) - c_area = (c_x2 - c_x1) * (c_y2 - c_y1) + 1e-16 # convex area - return iou - (c_area - union_area) / c_area # GIoU + if GIoU or DIoU or CIoU: + cw = torch.max(b1_x2, b2_x2) - torch.min(b1_x1, b2_x1) # convex (smallest enclosing box) width + ch = torch.max(b1_y2, b2_y2) - torch.min(b1_y1, b2_y1) # convex height + if GIoU: # Generalized IoU https://arxiv.org/pdf/1902.09630.pdf + c_area = cw * ch + 1e-16 # convex area + return iou - (c_area - union_area) / c_area # GIoU + if DIoU or CIoU: # Distance IoU https://arxiv.org/abs/1911.08287v1 + c2 = cw ** 2 + ch ** 2 + 1e-16 # convex diagonal squared + # b1_xc, b1_yc = (b1_x1 + b1_x2) / 2, (b1_y1 + b1_y2) / 2 + # b2_xc, b2_yc = (b2_x1 + b2_x2) / 2, (b2_y1 + b2_y2) / 2 + # rho2 = (b2_xc - b1_xc) ** 2 + (b2_yc - b1_yc) ** 2 # centerpoint distance squared + rho2 = ((b2_x1 + b2_x2) - (b1_x1 + b1_x2)) ** 2 / 4 + ((b2_y1 + b2_y2) - (b1_y1 + b1_y2)) ** 2 / 4 + if DIoU: + return iou - rho2 / c2 # DIoU + elif CIoU: + atan = torch.atan(w2 / h2) - torch.atan(w1 / h1) + v = (4 / math.pi ** 2) * torch.pow(atan, 2) + alpha = v / (1 - iou + v) + # ar = - (8 / (math.pi ** 2)) * atan * (w1 * h1) + return iou - (rho2 / c2 + alpha * v) # CIoU return iou From 5f00d7419e23f920a0017e48085ffcd7721c85d5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 23 Nov 2019 19:27:33 -1000 Subject: [PATCH 1600/2595] updates --- cfg/yolov3s.cfg | 821 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 821 insertions(+) create mode 100644 cfg/yolov3s.cfg diff --git a/cfg/yolov3s.cfg b/cfg/yolov3s.cfg new file mode 100644 index 00000000..0517b09e --- /dev/null +++ b/cfg/yolov3s.cfg @@ -0,0 +1,821 @@ +[net] +# Testing +# batch=1 +# subdivisions=1 +# Training +batch=64 +subdivisions=16 +width=608 +height=608 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=swish + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=swish + +[shortcut] +from=-3 +activation=linear + +###################### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=swish + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=swish + +### SPP ### +[maxpool] +stride=1 +size=5 + +[route] +layers=-2 + +[maxpool] +stride=1 +size=9 + +[route] +layers=-4 + +[maxpool] +stride=1 +size=13 + +[route] +layers=-1,-3,-5,-6 + +### End SPP ### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=swish + + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=swish + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=swish + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 6,7,8 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=swish + +[upsample] +stride=2 + +[route] +layers = -1, 61 + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=swish + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=swish + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=swish + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 3,4,5 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=swish + +[upsample] +stride=2 + +[route] +layers = -1, 36 + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=swish + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=swish + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=swish + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=swish + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 0,1,2 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 From f12a2a513acda68146616368281fb0b63d15bb36 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 24 Nov 2019 18:29:29 -1000 Subject: [PATCH 1601/2595] updates --- test.py | 2 +- train.py | 2 +- utils/torch_utils.py | 8 +++++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/test.py b/test.py index c233adcf..c6656246 100644 --- a/test.py +++ b/test.py @@ -20,7 +20,7 @@ def test(cfg, model=None): # Initialize/load model and set device if model is None: - device = torch_utils.select_device(opt.device) + device = torch_utils.select_device(opt.device, batch_size=batch_size) verbose = True # Initialize model diff --git a/train.py b/train.py index 3a4bc34f..ecd8f4fd 100644 --- a/train.py +++ b/train.py @@ -423,7 +423,7 @@ if __name__ == '__main__': opt = parser.parse_args() opt.weights = last if opt.resume else opt.weights print(opt) - device = torch_utils.select_device(opt.device, apex=mixed_precision) + device = torch_utils.select_device(opt.device, apex=mixed_precision, batch_size=opt.batch_size) if device.type == 'cpu': mixed_precision = False diff --git a/utils/torch_utils.py b/utils/torch_utils.py index b631262e..466a22ae 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -14,7 +14,7 @@ def init_seeds(seed=0): torch.backends.cudnn.benchmark = False -def select_device(device='', apex=False): +def select_device(device='', apex=False, batch_size=None): # device = 'cpu' or '0' or '0,1,2,3' cpu_request = device.lower() == 'cpu' if device and not cpu_request: # if device requested other than 'cpu' @@ -25,11 +25,13 @@ def select_device(device='', apex=False): if cuda: c = 1024 ** 2 # bytes to MB ng = torch.cuda.device_count() + if ng > 1 and batch_size: # check that batch_size is compatible with device_count + assert batch_size % ng == 0, 'batch-size %g not multiple of GPU count %g' % (batch_size, ng) x = [torch.cuda.get_device_properties(i) for i in range(ng)] - cuda_str = 'Using CUDA ' + ('Apex ' if apex else '') # apex for mixed precision https://github.com/NVIDIA/apex + s = 'Using CUDA ' + ('Apex ' if apex else '') # apex for mixed precision https://github.com/NVIDIA/apex for i in range(0, ng): if i == 1: - cuda_str = ' ' * len(cuda_str) + s = ' ' * len(s) print("%sdevice%g _CudaDeviceProperties(name='%s', total_memory=%dMB)" % (cuda_str, i, x[i].name, x[i].total_memory / c)) else: From 2f1c9a3f6ffb0339334046b4b096b19f78850c0c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 24 Nov 2019 18:31:06 -1000 Subject: [PATCH 1602/2595] updates --- utils/torch_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 466a22ae..e7e15715 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -33,7 +33,7 @@ def select_device(device='', apex=False, batch_size=None): if i == 1: s = ' ' * len(s) print("%sdevice%g _CudaDeviceProperties(name='%s', total_memory=%dMB)" % - (cuda_str, i, x[i].name, x[i].total_memory / c)) + (s, i, x[i].name, x[i].total_memory / c)) else: print('Using CPU') From 7773651e8ee20989e137f69d8d948adb54463127 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 24 Nov 2019 18:38:30 -1000 Subject: [PATCH 1603/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index ecd8f4fd..09eb70c3 100644 --- a/train.py +++ b/train.py @@ -417,7 +417,7 @@ if __name__ == '__main__': parser.add_argument('--arc', type=str, default='default', help='yolo architecture') # defaultpw, uCE, uBCE parser.add_argument('--prebias', action='store_true', help='transfer-learn yolo biases prior to training') parser.add_argument('--name', default='', help='renames results.txt to results_name.txt if supplied') - parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') + parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1 or cpu)') parser.add_argument('--adam', action='store_true', help='use adam optimizer') parser.add_argument('--var', type=float, help='debug variable') opt = parser.parse_args() From 9b55bbf9e228bdce398fbd1000522250a1e07d1c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 24 Nov 2019 20:08:24 -1000 Subject: [PATCH 1604/2595] updates --- utils/utils.py | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index e53cea33..e6b39794 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -267,20 +267,16 @@ def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False, DIoU=False, CIoU=False): if GIoU: # Generalized IoU https://arxiv.org/pdf/1902.09630.pdf c_area = cw * ch + 1e-16 # convex area return iou - (c_area - union_area) / c_area # GIoU - if DIoU or CIoU: # Distance IoU https://arxiv.org/abs/1911.08287v1 - c2 = cw ** 2 + ch ** 2 + 1e-16 # convex diagonal squared - # b1_xc, b1_yc = (b1_x1 + b1_x2) / 2, (b1_y1 + b1_y2) / 2 - # b2_xc, b2_yc = (b2_x1 + b2_x2) / 2, (b2_y1 + b2_y2) / 2 - # rho2 = (b2_xc - b1_xc) ** 2 + (b2_yc - b1_yc) ** 2 # centerpoint distance squared + if DIoU or CIoU: # Distance or Complete IoU https://arxiv.org/abs/1911.08287v1 + # convex diagonal squared + c2 = cw ** 2 + ch ** 2 + 1e-16 + # centerpoint distance squared rho2 = ((b2_x1 + b2_x2) - (b1_x1 + b1_x2)) ** 2 / 4 + ((b2_y1 + b2_y2) - (b1_y1 + b1_y2)) ** 2 / 4 if DIoU: return iou - rho2 / c2 # DIoU elif CIoU: - atan = torch.atan(w2 / h2) - torch.atan(w1 / h1) - v = (4 / math.pi ** 2) * torch.pow(atan, 2) - alpha = v / (1 - iou + v) - # ar = - (8 / (math.pi ** 2)) * atan * (w1 * h1) - return iou - (rho2 / c2 + alpha * v) # CIoU + v = (4 / math.pi ** 2) * torch.pow(torch.atan(w2 / h2) - torch.atan(w1 / h1), 2) + return iou - (rho2 / c2 + v ** 2 / (1 - iou + v)) # CIoU return iou From a0ef217842b74c6a65fedb7b367c0c40b95db1f0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 24 Nov 2019 20:10:39 -1000 Subject: [PATCH 1605/2595] updates --- utils/utils.py | 49 ++++++++++++++++++++++--------------------------- 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index e6b39794..050e2392 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -902,30 +902,6 @@ def plot_evolution_results(hyp): # from utils.utils import *; plot_evolution_re plt.savefig('evolve.png', dpi=200) -def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() - # Plot training results files 'results*.txt' - fig, ax = plt.subplots(2, 5, figsize=(14, 7)) - ax = ax.ravel() - s = ['GIoU', 'Objectness', 'Classification', 'Precision', 'Recall', - 'val GIoU', 'val Objectness', 'val Classification', 'mAP@0.5', 'F1'] - for f in sorted(glob.glob('results*.txt') + glob.glob('../../Downloads/results*.txt')): - results = np.loadtxt(f, usecols=[2, 3, 4, 8, 9, 12, 13, 14, 10, 11], ndmin=2).T - n = results.shape[1] # number of rows - x = range(start, min(stop, n) if stop else n) - for i in range(10): - y = results[i, x] - if i in [0, 1, 2, 5, 6, 7]: - y[y == 0] = np.nan # dont show zero loss values - ax[i].plot(x, y, marker='.', label=f.replace('.txt', '')) - ax[i].set_title(s[i]) - if i in [5, 6, 7]: # share train and val loss y axes - ax[i].get_shared_y_axes().join(ax[i], ax[i - 5]) - - fig.tight_layout() - ax[1].legend() - fig.savefig('results.png', dpi=200) - - def plot_results_overlay(start=0, stop=0): # from utils.utils import *; plot_results_overlay() # Plot training results files 'results*.txt', overlaying train and val losses s = ['train', 'train', 'train', 'Precision', 'mAP@0.5', 'val', 'val', 'val', 'Recall', 'F1'] # legends @@ -949,6 +925,25 @@ def plot_results_overlay(start=0, stop=0): # from utils.utils import *; plot_re fig.savefig(f.replace('.txt', '.png'), dpi=200) -def version_to_tuple(version): - # Used to compare versions of library - return tuple(map(int, (version.split(".")))) +def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() + # Plot training results files 'results*.txt' + fig, ax = plt.subplots(2, 5, figsize=(14, 7)) + ax = ax.ravel() + s = ['GIoU', 'Objectness', 'Classification', 'Precision', 'Recall', + 'val GIoU', 'val Objectness', 'val Classification', 'mAP@0.5', 'F1'] + for f in sorted(glob.glob('results*.txt') + glob.glob('../../Downloads/results*.txt')): + results = np.loadtxt(f, usecols=[2, 3, 4, 8, 9, 12, 13, 14, 10, 11], ndmin=2).T + n = results.shape[1] # number of rows + x = range(start, min(stop, n) if stop else n) + for i in range(10): + y = results[i, x] + if i in [0, 1, 2, 5, 6, 7]: + y[y == 0] = np.nan # dont show zero loss values + ax[i].plot(x, y, marker='.', label=f.replace('.txt', '')) + ax[i].set_title(s[i]) + if i in [5, 6, 7]: # share train and val loss y axes + ax[i].get_shared_y_axes().join(ax[i], ax[i - 5]) + + fig.tight_layout() + ax[1].legend() + fig.savefig('results.png', dpi=200) From 26e3a28bee104c10501d92c64c94f21902add72c Mon Sep 17 00:00:00 2001 From: Francisco Reveriano <48685139+FranciscoReveriano@users.noreply.github.com> Date: Mon, 25 Nov 2019 03:21:36 -0500 Subject: [PATCH 1606/2595] Update train.py for distributive programming (#655) When attempting to running this function in a multi-GPU environment I kept on getting a runtime issue. I was able to solve this problem by passing this keyword. I first found the solution here: https://github.com/pytorch/pytorch/issues/22436 and in the pytorch tutorial 'RuntimeError: Expected to have finished reduction in the prior iteration before starting a new one. This error indicates that your module has parameters that were not used in producing loss. You can enable unused parameter detection by (1) passing the keyword argument find_unused_parameters=True to torch.nn.parallel.DistributedDataParallel; (2) making sure all forward function outputs participate in calculating loss. If you already have done the above two steps, then the distributed data parallel module wasn't able to locate the output tensors in the return value of your module's forward function. Please include the loss function and the structure of the return value of forward of your module when reporting this issue (e.g. list, dict, iterable). ' --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 09eb70c3..9699cd2f 100644 --- a/train.py +++ b/train.py @@ -178,7 +178,7 @@ def train(): init_method='tcp://127.0.0.1:9999', # distributed training init method world_size=1, # number of nodes for distributed training rank=0) # distributed training node rank - model = torch.nn.parallel.DistributedDataParallel(model) + model = torch.nn.parallel.DistributedDataParallel(model, find_unused_parameters=True) model.yolo_layers = model.module.yolo_layers # move yolo layer indices to top level # Dataset From 0245ff913333223a3379bf06da2d25fb2a77eee8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 25 Nov 2019 08:26:26 -1000 Subject: [PATCH 1607/2595] updates --- utils/utils.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 050e2392..805f5799 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -240,12 +240,10 @@ def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False, DIoU=False, CIoU=False): box2 = box2.t() # Get the coordinates of bounding boxes - if x1y1x2y2: - # x1, y1, x2, y2 = box1 + if x1y1x2y2: # x1, y1, x2, y2 = box1 b1_x1, b1_y1, b1_x2, b1_y2 = box1[0], box1[1], box1[2], box1[3] b2_x1, b2_y1, b2_x2, b2_y2 = box2[0], box2[1], box2[2], box2[3] - else: - # x, y, w, h = box1 + else: # x, y, w, h = box1 b1_x1, b1_x2 = box1[0] - box1[2] / 2, box1[0] + box1[2] / 2 b1_y1, b1_y2 = box1[1] - box1[3] / 2, box1[1] + box1[3] / 2 b2_x1, b2_x2 = box2[0] - box2[2] / 2, box2[0] + box2[2] / 2 From 75e8ec323f87c2bb2774809b7c33f2c4f802cca3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 25 Nov 2019 11:45:28 -1000 Subject: [PATCH 1608/2595] updates --- train.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index 9699cd2f..ec592567 100644 --- a/train.py +++ b/train.py @@ -107,11 +107,14 @@ def train(): chkpt = torch.load(weights, map_location=device) # load model - # if opt.transfer: - chkpt['model'] = {k: v for k, v in chkpt['model'].items() if model.state_dict()[k].numel() == v.numel()} - model.load_state_dict(chkpt['model'], strict=False) - # else: - # model.load_state_dict(chkpt['model']) + try: + chkpt['model'] = {k: v for k, v in chkpt['model'].items() if model.state_dict()[k].numel() == v.numel()} + model.load_state_dict(chkpt['model'], strict=False) + # model.load_state_dict(chkpt['model']) + except KeyError as e: + s = "%s is not compatible with %s. Specify --weights '' or specify a --cfg compatible with %s. " \ + "See https://github.com/ultralytics/yolov3/issues/657" % (opt.weights, opt.cfg, opt.weights) + raise KeyError(s) from e # load optimizer if chkpt['optimizer'] is not None: From 90cfb91858afa9ee66e7ff9dcdb1e593bdc884ac Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 25 Nov 2019 17:13:10 -1000 Subject: [PATCH 1609/2595] updates --- models.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/models.py b/models.py index 9bfbb114..cc3093d7 100755 --- a/models.py +++ b/models.py @@ -114,18 +114,31 @@ def create_modules(module_defs, img_size, arc): return module_list, routs -class Swish(nn.Module): - def __init__(self): - super().__init__() +class SwishImplementation(torch.autograd.Function): + @staticmethod + def forward(ctx, i): + result = i * torch.sigmoid(i) + ctx.save_for_backward(i) + return result + @staticmethod + def backward(ctx, grad_output): + i = ctx.saved_variables[0] + sigmoid_i = torch.sigmoid(i) + return grad_output * (sigmoid_i * (1 + i * (1 - sigmoid_i))) + + +class MemoryEfficientSwish(nn.Module): + def forward(self, x): + return SwishImplementation.apply(x) + + +class Swish(nn.Module): def forward(self, x): return x.mul_(torch.sigmoid(x)) class Mish(nn.Module): # https://github.com/digantamisra98/Mish - def __init__(self): - super().__init__() - def forward(self, x): return x.mul_(F.softplus(x).tanh()) From 3c57ff7b1bb591f6b804833528d305c4db6b2478 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 25 Nov 2019 17:24:05 -1000 Subject: [PATCH 1610/2595] updates --- train.py | 1 + 1 file changed, 1 insertion(+) diff --git a/train.py b/train.py index ec592567..b2447ae8 100644 --- a/train.py +++ b/train.py @@ -212,6 +212,7 @@ def train(): torch_utils.model_info(model, report='summary') # 'full' or 'summary' nb = len(dataloader) maps = np.zeros(nc) # mAP per class + # torch.autograd.set_detect_anomaly(True) results = (0, 0, 0, 0, 0, 0, 0) # 'P', 'R', 'mAP', 'F1', 'val GIoU', 'val Objectness', 'val Classification' t0 = time.time() print('Starting %s for %g epochs...' % ('prebias' if opt.prebias else 'training', epochs)) From b269ed7b2975ee4f646819a78bf8c20771089e29 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 25 Nov 2019 18:42:48 -1000 Subject: [PATCH 1611/2595] updates --- models.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/models.py b/models.py index cc3093d7..c75b1ec1 100755 --- a/models.py +++ b/models.py @@ -117,15 +117,13 @@ def create_modules(module_defs, img_size, arc): class SwishImplementation(torch.autograd.Function): @staticmethod def forward(ctx, i): - result = i * torch.sigmoid(i) ctx.save_for_backward(i) - return result + return i * torch.sigmoid(i) @staticmethod def backward(ctx, grad_output): - i = ctx.saved_variables[0] - sigmoid_i = torch.sigmoid(i) - return grad_output * (sigmoid_i * (1 + i * (1 - sigmoid_i))) + sigmoid_i = torch.sigmoid(ctx.saved_variables[0]) + return grad_output * (sigmoid_i * (1 + ctx.saved_variables[0] * (1 - sigmoid_i))) class MemoryEfficientSwish(nn.Module): From 92f742618c1295182983c40a1e444dd7e9c5311e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 26 Nov 2019 10:26:14 -1000 Subject: [PATCH 1612/2595] updates --- utils/gcp.sh | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 028ab47b..e4269bf0 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -32,7 +32,7 @@ python3 test.py --save-json # Evolve for i in {0..500} do - python3 train.py --data data/coco.data --img-size 512 --epochs 27 --batch-size 32 --accumulate 2 --evolve --weights '' --bucket yolov4 + python3 train.py --data data/coco.data --img-size 416 --epochs 27 --batch-size 32 --accumulate 2 --evolve --weights '' --bucket yolov4/416_coco_27e --device 0 done # Git pull @@ -90,7 +90,8 @@ rm -rf darknet && git clone https://github.com/AlexeyAB/darknet && cd darknet && #Docker sudo docker kill $(sudo docker ps -q) sudo docker pull ultralytics/yolov3:v0 -sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco ultralytics/yolov3:v1 +sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco ultralytics/yolov3:v0 + clear while true @@ -99,9 +100,30 @@ do done -export tag=ultralytics/yolov3:v1 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 27 --batch-size 32 --accumulate 2 --prebias --bucket yolov4 --name 63 --device 0 -export tag=ultralytics/yolov3:v2 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 27 --batch-size 32 --accumulate 2 --prebias --bucket yolov4 --name 64 --device 1 +export tag=ultralytics/yolov3:v70 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 273 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 70 --device 0 --multi +export tag=ultralytics/yolov3:v0 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 273 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 71 --device 0 --multi --img-weights +export tag=ultralytics/yolov3:v73 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 73 --device 5 --cfg cfg/yolov3s.cfg +export tag=ultralytics/yolov3:v74 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 74 --device 0 --cfg cfg/yolov3s.cfg +export tag=ultralytics/yolov3:v75 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 75 --device 7 --cfg cfg/yolov3s.cfg +export tag=ultralytics/yolov3:v76 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 76 --device 0 --cfg cfg/yolov3s.cfg + +export tag=ultralytics/yolov3:v79 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 79 --device 5 +export tag=ultralytics/yolov3:v80 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 80 --device 0 +export tag=ultralytics/yolov3:v81 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 81 --device 7 +export tag=ultralytics/yolov3:v82 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 82 --device 0 --cfg cfg/yolov3s.cfg + +#SM4 +export tag=ultralytics/yolov3:v0 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/data,target=/usr/src/data $tag python3 train.py --weights 'ultralytics49.pt' --epochs 500 --img-size 320 --batch-size 32 --accumulate 2 --prebias --bucket yolov4 --name 78 --device 0 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data + + +export tag=ultralytics/yolov3:v2 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag +clear +sleep 120 +while true +do + python3 train.py --weights '' --epochs 27 --batch-size 32 --accumulate 2 --prebias --evolve --device 7 --bucket yolov4/416_coco_27e +done while true; do python3 train.py --data data/coco.data --img-size 320 --batch-size 64 --accumulate 1 --evolve --epochs 1 --adam --bucket yolov4/adamdefaultpw_coco_1e; done From 0fe40cb6873637a78e4fd6b06331d3686844ba5c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 26 Nov 2019 12:34:47 -1000 Subject: [PATCH 1613/2595] updates --- README.md | 65 ++++++++++++++++++++----------------------------------- 1 file changed, 24 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index cc8ce866..87ac3554 100755 --- a/README.md +++ b/README.md @@ -138,54 +138,37 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' # mAP - `test.py --weights weights/yolov3.weights` tests official YOLOv3 weights. -- `test.py --weights weights/last.pt` tests most recent checkpoint. -- `test.py --weights weights/best.pt` tests best checkpoint. +- `test.py --weights weights/last.pt` tests latest checkpoint. - Compare to darknet published results https://arxiv.org/abs/1804.02767. -[ultralytics/yolov3](https://github.com/ultralytics/yolov3) mAP@0.5 ([darknet](https://arxiv.org/abs/1804.02767)-reported mAP@0.5) +[ultralytics/yolov3](https://github.com/ultralytics/yolov3) mAP@0.5 vs. [darknet](https://arxiv.org/abs/1804.02767)-reported mAP@0.5 - | 320 | 416 | 608 ---- | --- | --- | --- -`YOLOv3` | 51.8 (51.5) | 55.4 (55.3) | 58.2 (57.9) -`YOLOv3-SPP` | 53.7 | 57.7 | 60.7 (60.6) -`YOLOv3-tiny` | 29.0 | 32.9 (33.1) | 35.5 + | 320 | 416 | 608 +--- | --- | --- | --- +darknet `YOLOv3-tiny` | 29.0 | 33.1 | 35.5 +darknet `YOLOv3` | 51.5 | 55.3 | 57.9 +darknet `YOLOv3-SPP` | 52.3 | 56.8 | **60.6** +ultralytics `YOLOv3-SPP` | **53.9** | **58.7** | 60.1 ```bash -$ python3 test.py --save-json --img-size 608 -Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', img_size=608, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='weights/yolov3-spp.weights') +$ python3 test.py --save-json --img-size 608 --weights ultralytics68.pt +Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', device='', img_size=608, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='ultralytics68.pt') Using CUDA device0 _CudaDeviceProperties(name='Tesla T4', total_memory=15079MB) - Class Images Targets P R mAP F1: 100% 313/313 [07:40<00:00, 2.34s/it] - all 5e+03 3.58e+04 0.119 0.788 0.594 0.201 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.367 <--- - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.607 <--- - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.387 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.208 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.392 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.487 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.297 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.465 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.495 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.332 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.518 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.621 -$ python3 test.py --save-json --img-size 416 -Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', img_size=416, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='weights/yolov3s-ultralytics.pt') -Using CUDA device0 _CudaDeviceProperties(name='Tesla T4', total_memory=15079MB) - Class Images Targets P R mAP F1: 100% 313/313 [07:01<00:00, 1.41s/it] - all 5e+03 3.58e+04 0.11 0.739 0.569 0.185 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.373 - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.577 - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.392 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.175 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.403 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.537 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.313 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.482 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.501 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.266 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.541 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.693 + Class Images Targets P R mAP@0.5 F1: 100% 313/313 [06:52<00:00, 1.24it/s] + all 5e+03 3.58e+04 0.107 0.779 0.59 0.182 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.398 <--- + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.601 <--- + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.425 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.237 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.438 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.505 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.325 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.519 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.543 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.366 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.584 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.665 ``` # Citation From 40ae87cb465aae7686f64c681c17e671806ed7ec Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 26 Nov 2019 12:36:21 -1000 Subject: [PATCH 1614/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 87ac3554..5b66046c 100755 --- a/README.md +++ b/README.md @@ -143,7 +143,7 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' [ultralytics/yolov3](https://github.com/ultralytics/yolov3) mAP@0.5 vs. [darknet](https://arxiv.org/abs/1804.02767)-reported mAP@0.5 - | 320 | 416 | 608 + | 320@0.5 | 416@0.5 | 608@0.5 --- | --- | --- | --- darknet `YOLOv3-tiny` | 29.0 | 33.1 | 35.5 darknet `YOLOv3` | 51.5 | 55.3 | 57.9 From b04392e298919324ffa7ccef83b4f38708dc7e0d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 26 Nov 2019 12:59:13 -1000 Subject: [PATCH 1615/2595] updates --- README.md | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 5b66046c..f4775628 100755 --- a/README.md +++ b/README.md @@ -141,14 +141,19 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' - `test.py --weights weights/last.pt` tests latest checkpoint. - Compare to darknet published results https://arxiv.org/abs/1804.02767. -[ultralytics/yolov3](https://github.com/ultralytics/yolov3) mAP@0.5 vs. [darknet](https://arxiv.org/abs/1804.02767)-reported mAP@0.5 + | 320@0.5:0.95| 416@0.5:0.95| 608@0.5:0.95 +--- | --- | --- | --- +darknet `YOLOv3-tiny` | - | - | - +darknet `YOLOv3` | 28.7 | - | - +darknet `YOLOv3-SPP` | 30.3 | 33.7 | 36.7 +**ultralytics** `YOLOv3-SPP` | **34.7** | **38.2** | **39.8** - | 320@0.5 | 416@0.5 | 608@0.5 ---- | --- | --- | --- -darknet `YOLOv3-tiny` | 29.0 | 33.1 | 35.5 -darknet `YOLOv3` | 51.5 | 55.3 | 57.9 -darknet `YOLOv3-SPP` | 52.3 | 56.8 | **60.6** -ultralytics `YOLOv3-SPP` | **53.9** | **58.7** | 60.1 + | 320@0.5 | 416@0.5 | 608@0.5 +--- | --- | --- | --- +darknet `YOLOv3-tiny` | 29.0 | 33.1 | 35.5 +darknet `YOLOv3` | 51.5 | 55.3 | 57.9 +darknet `YOLOv3-SPP` | 52.3 | 56.8 | **60.6** +**ultralytics** `YOLOv3-SPP` | **53.9** | **58.7** | 60.1 ```bash $ python3 test.py --save-json --img-size 608 --weights ultralytics68.pt From 78a2de52b53c0677a240719c5c4bf8993b327a75 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 26 Nov 2019 13:23:47 -1000 Subject: [PATCH 1616/2595] updates --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f4775628..18e2e191 100755 --- a/README.md +++ b/README.md @@ -143,14 +143,14 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' | 320@0.5:0.95| 416@0.5:0.95| 608@0.5:0.95 --- | --- | --- | --- -darknet `YOLOv3-tiny` | - | - | - -darknet `YOLOv3` | 28.7 | - | - +darknet `YOLOv3-tiny` | 14.0 | 16.0 | 16.6 +darknet `YOLOv3` | 28.7 | 31.1 | 33.0 darknet `YOLOv3-SPP` | 30.3 | 33.7 | 36.7 **ultralytics** `YOLOv3-SPP` | **34.7** | **38.2** | **39.8** | 320@0.5 | 416@0.5 | 608@0.5 --- | --- | --- | --- -darknet `YOLOv3-tiny` | 29.0 | 33.1 | 35.5 +darknet `YOLOv3-tiny` | 29.0 | 32.9 | 35.5 darknet `YOLOv3` | 51.5 | 55.3 | 57.9 darknet `YOLOv3-SPP` | 52.3 | 56.8 | **60.6** **ultralytics** `YOLOv3-SPP` | **53.9** | **58.7** | 60.1 From 0417b3a5274ec5ef246bd64c24ae007f2d67424f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 26 Nov 2019 13:53:05 -1000 Subject: [PATCH 1617/2595] updates --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 18e2e191..4a252ee7 100755 --- a/README.md +++ b/README.md @@ -141,13 +141,16 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' - `test.py --weights weights/last.pt` tests latest checkpoint. - Compare to darknet published results https://arxiv.org/abs/1804.02767. + + | 320@0.5:0.95| 416@0.5:0.95| 608@0.5:0.95 --- | --- | --- | --- darknet `YOLOv3-tiny` | 14.0 | 16.0 | 16.6 darknet `YOLOv3` | 28.7 | 31.1 | 33.0 -darknet `YOLOv3-SPP` | 30.3 | 33.7 | 36.7 -**ultralytics** `YOLOv3-SPP` | **34.7** | **38.2** | **39.8** +darknet `YOLOv3-SPP` | 30.5 | 33.9 | 37.0 +**ultralytics** `YOLOv3-SPP` | **35.1** | **38.6** | **40.3** + | 320@0.5 | 416@0.5 | 608@0.5 --- | --- | --- | --- darknet `YOLOv3-tiny` | 29.0 | 32.9 | 35.5 From 3dec99b16c01695ab572a0c13106cbcebc534e32 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 26 Nov 2019 16:03:45 -1000 Subject: [PATCH 1618/2595] updates --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4a252ee7..b798f0cd 100755 --- a/README.md +++ b/README.md @@ -141,14 +141,14 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' - `test.py --weights weights/last.pt` tests latest checkpoint. - Compare to darknet published results https://arxiv.org/abs/1804.02767. - + | 320@0.5:0.95| 416@0.5:0.95| 608@0.5:0.95 --- | --- | --- | --- darknet `YOLOv3-tiny` | 14.0 | 16.0 | 16.6 darknet `YOLOv3` | 28.7 | 31.1 | 33.0 darknet `YOLOv3-SPP` | 30.5 | 33.9 | 37.0 -**ultralytics** `YOLOv3-SPP` | **35.1** | **38.6** | **40.3** +**ultralytics** `YOLOv3-SPP` | **35.2** | **38.8** | **40.4** | 320@0.5 | 416@0.5 | 608@0.5 From ea19c33a8778225ab4b1dc3a4461273d4089c935 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 Nov 2019 14:35:18 -1000 Subject: [PATCH 1619/2595] updates --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b798f0cd..0998459a 100755 --- a/README.md +++ b/README.md @@ -143,7 +143,7 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' - | 320@0.5:0.95| 416@0.5:0.95| 608@0.5:0.95 + |320
mAP@0.5:0.95 |416
mAP@0.5:0.95 |608
mAP@0.5:0.95 --- | --- | --- | --- darknet `YOLOv3-tiny` | 14.0 | 16.0 | 16.6 darknet `YOLOv3` | 28.7 | 31.1 | 33.0 @@ -151,7 +151,7 @@ darknet `YOLOv3-SPP` | 30.5 | 33.9 | 37.0 **ultralytics** `YOLOv3-SPP` | **35.2** | **38.8** | **40.4** - | 320@0.5 | 416@0.5 | 608@0.5 + |320
mAP@0.5 |416
mAP@0.5 |608
mAP@0.5 --- | --- | --- | --- darknet `YOLOv3-tiny` | 29.0 | 32.9 | 35.5 darknet `YOLOv3` | 51.5 | 55.3 | 57.9 From 9c1d7d5248a7109c5d8db0d97cbc955146809660 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 Nov 2019 14:52:33 -1000 Subject: [PATCH 1620/2595] updates --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 0998459a..740aedf0 100755 --- a/README.md +++ b/README.md @@ -158,6 +158,12 @@ darknet `YOLOv3` | 51.5 | 55.3 | 57.9 darknet `YOLOv3-SPP` | 52.3 | 56.8 | **60.6** **ultralytics** `YOLOv3-SPP` | **53.9** | **58.7** | 60.1 + |resolution |mAP
0.5:0.95 |mAP
0.5 +--- | --- | --- | --- +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
YOLOv3-SPP ultralytics |320 |14.0
28.7
30.5
**35.2** |29.0
51.5
52.3
**53.9** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
YOLOv3-SPP ultralytics |416 |16.0
31.1
33.9
**38.8** |32.9
55.3
56.8
**58.7** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
YOLOv3-SPP ultralytics |608 |16.6
33.0
37.0
**40.4** |35.5
57.9
**60.6**
60.1 + ```bash $ python3 test.py --save-json --img-size 608 --weights ultralytics68.pt Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', device='', img_size=608, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='ultralytics68.pt') From 413afab11c92b51c89abed4e85a858973f0780d5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 Nov 2019 14:59:46 -1000 Subject: [PATCH 1621/2595] updates --- README.md | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 740aedf0..20a83194 100755 --- a/README.md +++ b/README.md @@ -139,30 +139,16 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' - `test.py --weights weights/yolov3.weights` tests official YOLOv3 weights. - `test.py --weights weights/last.pt` tests latest checkpoint. -- Compare to darknet published results https://arxiv.org/abs/1804.02767. +- mAPs on COCO2014 using pycocotools. +- mAP@0.5 run at --iou-thres 0.5, mAP@0.5 run at --iou-thres 0.65 +- YOLOv3-SPP ultralytics is `ultralytics68.pt` with `yolov3-spp.cfg`. +- Darknet results published in https://arxiv.org/abs/1804.02767. - - - |320
mAP@0.5:0.95 |416
mAP@0.5:0.95 |608
mAP@0.5:0.95 + |resolution |COCO mAP
@0.5...0.95 |COCO mAP
@0.5 --- | --- | --- | --- -darknet `YOLOv3-tiny` | 14.0 | 16.0 | 16.6 -darknet `YOLOv3` | 28.7 | 31.1 | 33.0 -darknet `YOLOv3-SPP` | 30.5 | 33.9 | 37.0 -**ultralytics** `YOLOv3-SPP` | **35.2** | **38.8** | **40.4** - - - |320
mAP@0.5 |416
mAP@0.5 |608
mAP@0.5 ---- | --- | --- | --- -darknet `YOLOv3-tiny` | 29.0 | 32.9 | 35.5 -darknet `YOLOv3` | 51.5 | 55.3 | 57.9 -darknet `YOLOv3-SPP` | 52.3 | 56.8 | **60.6** -**ultralytics** `YOLOv3-SPP` | **53.9** | **58.7** | 60.1 - - |resolution |mAP
0.5:0.95 |mAP
0.5 ---- | --- | --- | --- -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
YOLOv3-SPP ultralytics |320 |14.0
28.7
30.5
**35.2** |29.0
51.5
52.3
**53.9** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
YOLOv3-SPP ultralytics |416 |16.0
31.1
33.9
**38.8** |32.9
55.3
56.8
**58.7** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
YOLOv3-SPP ultralytics |608 |16.6
33.0
37.0
**40.4** |35.5
57.9
**60.6**
60.1 +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |320 |14.0
28.7
30.5
**35.2** |29.0
51.5
52.3
**53.9** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |416 |16.0
31.1
33.9
**38.8** |32.9
55.3
56.8
**58.7** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
33.0
37.0
**40.4** |35.5
57.9
**60.6**
60.1 ```bash $ python3 test.py --save-json --img-size 608 --weights ultralytics68.pt From 9319ae8ff99732004dee1ed901d29ce6811afa00 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 Nov 2019 15:00:41 -1000 Subject: [PATCH 1622/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 20a83194..0593370f 100755 --- a/README.md +++ b/README.md @@ -144,7 +144,7 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' - YOLOv3-SPP ultralytics is `ultralytics68.pt` with `yolov3-spp.cfg`. - Darknet results published in https://arxiv.org/abs/1804.02767. - |resolution |COCO mAP
@0.5...0.95 |COCO mAP
@0.5 + |img-size |COCO mAP
@0.5...0.95 |COCO mAP
@0.5 --- | --- | --- | --- YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |320 |14.0
28.7
30.5
**35.2** |29.0
51.5
52.3
**53.9** YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |416 |16.0
31.1
33.9
**38.8** |32.9
55.3
56.8
**58.7** From 91fca0e17df01dcde4dba4e2e8989d3565e86bbe Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 Nov 2019 15:03:05 -1000 Subject: [PATCH 1623/2595] updates --- README.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 0593370f..66436b6f 100755 --- a/README.md +++ b/README.md @@ -151,24 +151,24 @@ YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |416 |16.0
YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
33.0
37.0
**40.4** |35.5
57.9
**60.6**
60.1 ```bash -$ python3 test.py --save-json --img-size 608 --weights ultralytics68.pt +$ python3 test.py --save-json --img-size 608 --iou-thres 0.65 --weights ultralytics68.pt Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', device='', img_size=608, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='ultralytics68.pt') Using CUDA device0 _CudaDeviceProperties(name='Tesla T4', total_memory=15079MB) Class Images Targets P R mAP@0.5 F1: 100% 313/313 [06:52<00:00, 1.24it/s] all 5e+03 3.58e+04 0.107 0.779 0.59 0.182 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.398 <--- - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.601 <--- - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.425 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.237 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.438 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.505 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.325 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.519 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.543 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.366 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.584 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.665 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.404 <--- + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.597 <--- + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.438 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.241 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.444 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.511 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.326 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.533 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.570 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.393 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.614 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.691 ``` # Citation From 4b251406e2c55e16e14d25833ab56b7ef401294e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 Nov 2019 15:04:05 -1000 Subject: [PATCH 1624/2595] updates --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 66436b6f..f32925f1 100755 --- a/README.md +++ b/README.md @@ -140,7 +140,7 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' - `test.py --weights weights/yolov3.weights` tests official YOLOv3 weights. - `test.py --weights weights/last.pt` tests latest checkpoint. - mAPs on COCO2014 using pycocotools. -- mAP@0.5 run at --iou-thres 0.5, mAP@0.5 run at --iou-thres 0.65 +- mAP@0.5 run at `--nms-thres 0.5`, mAP@0.5...0.95 run at `--nms-thres 0.65`. - YOLOv3-SPP ultralytics is `ultralytics68.pt` with `yolov3-spp.cfg`. - Darknet results published in https://arxiv.org/abs/1804.02767. @@ -151,8 +151,8 @@ YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |416 |16.0
YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
33.0
37.0
**40.4** |35.5
57.9
**60.6**
60.1 ```bash -$ python3 test.py --save-json --img-size 608 --iou-thres 0.65 --weights ultralytics68.pt -Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', device='', img_size=608, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='ultralytics68.pt') +$ python3 test.py --save-json --img-size 608 --nms-thres 0.65 --weights ultralytics68.pt +Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', device='', img_size=608, iou_thres=0.5, nms_thres=0.65, save_json=True, weights='ultralytics68.pt') Using CUDA device0 _CudaDeviceProperties(name='Tesla T4', total_memory=15079MB) Class Images Targets P R mAP@0.5 F1: 100% 313/313 [06:52<00:00, 1.24it/s] From 82b62c98558e96ad70c267062a78a5888af5f1a8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 Nov 2019 15:50:00 -1000 Subject: [PATCH 1625/2595] updates --- train.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/train.py b/train.py index b2447ae8..69299fcb 100644 --- a/train.py +++ b/train.py @@ -62,11 +62,9 @@ def train(): # Initialize init_seeds() - multi_scale = opt.multi_scale - - if multi_scale: - img_sz_min = round(img_size / 32 / 1.5) - img_sz_max = round(img_size / 32 * 1.5) + if opt.multi_scale: + img_sz_min = round(img_size / 32 / 1.5) - 1 + img_sz_max = round(img_size / 32 * 1.5) + 1 img_size = img_sz_max * 32 # initiate with maximum multi_scale size print('Using multi-scale %g - %g' % (img_sz_min * 32, img_size)) @@ -241,7 +239,7 @@ def train(): targets = targets.to(device) # Multi-Scale training - if multi_scale: + if opt.multi_scale: if ni / accumulate % 10 == 0: #  adjust (67% - 150%) every 10 batches img_size = random.randrange(img_sz_min, img_sz_max + 1) * 32 sf = img_size / max(imgs.shape[2:]) # scale factor From 9e9a6a1425c61c05db28a1e9867f188085cc3e1b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 Nov 2019 15:50:29 -1000 Subject: [PATCH 1626/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 69299fcb..0038db97 100644 --- a/train.py +++ b/train.py @@ -63,8 +63,8 @@ def train(): # Initialize init_seeds() if opt.multi_scale: - img_sz_min = round(img_size / 32 / 1.5) - 1 - img_sz_max = round(img_size / 32 * 1.5) + 1 + img_sz_min = round(img_size / 32 / 1.5) + img_sz_max = round(img_size / 32 * 1.5) img_size = img_sz_max * 32 # initiate with maximum multi_scale size print('Using multi-scale %g - %g' % (img_sz_min * 32, img_size)) From 340e0371f8b46283475923815e8f13dd338b5537 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 Nov 2019 22:36:01 -1000 Subject: [PATCH 1627/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 805f5799..1ded9eae 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -511,8 +511,8 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): if n == 1: det_max.append(dc) # No NMS required if only 1 prediction continue - elif n > 100: - dc = dc[:100] # limit to first 100 boxes: https://github.com/ultralytics/yolov3/issues/117 + elif n > 500: + dc = dc[:500] # limit to first 100 boxes: https://github.com/ultralytics/yolov3/issues/117 # Non-maximum suppression if nms_style == 'OR': # default From bccff3bfc11de247eff14521062f8ceb6ff3ead9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 Nov 2019 23:31:25 -1000 Subject: [PATCH 1628/2595] updates --- models.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/models.py b/models.py index c75b1ec1..b3670b62 100755 --- a/models.py +++ b/models.py @@ -445,6 +445,8 @@ def attempt_download(weights): gdrive_download(id='1Bw0kCpplxUqyRYAJr9RY9SGnOJbo9nEj', name=weights) elif file == 'ultralytics49.pt': gdrive_download(id='158g62Vs14E3aj7oPVPuEnNZMKFNgGyNq', name=weights) + elif file == 'ultralytics68.pt': + gdrive_download(id='1Jm8kqnMdMGUUxGo8zMFZMJ0eaPwLkxSG', name=weights) else: try: # download from pjreddie.com url = 'https://pjreddie.com/media/files/' + file From 6258061a816256955cdbbe7f09a26de1fb78404d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 Nov 2019 23:36:02 -1000 Subject: [PATCH 1629/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f32925f1..41d25356 100755 --- a/README.md +++ b/README.md @@ -148,7 +148,7 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' --- | --- | --- | --- YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |320 |14.0
28.7
30.5
**35.2** |29.0
51.5
52.3
**53.9** YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |416 |16.0
31.1
33.9
**38.8** |32.9
55.3
56.8
**58.7** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
33.0
37.0
**40.4** |35.5
57.9
**60.6**
60.1 +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
33.0
37.0
**40.6** |35.5
57.9
60.6
**60.7** ```bash $ python3 test.py --save-json --img-size 608 --nms-thres 0.65 --weights ultralytics68.pt From 51d666a81aac102995ff9861df8b7dbd5b630102 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 28 Nov 2019 09:05:13 -1000 Subject: [PATCH 1630/2595] updates --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 41d25356..7246b589 100755 --- a/README.md +++ b/README.md @@ -140,15 +140,15 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' - `test.py --weights weights/yolov3.weights` tests official YOLOv3 weights. - `test.py --weights weights/last.pt` tests latest checkpoint. - mAPs on COCO2014 using pycocotools. -- mAP@0.5 run at `--nms-thres 0.5`, mAP@0.5...0.95 run at `--nms-thres 0.65`. +- mAP@0.5 run at `--nms-thres 0.5`, mAP@0.5...0.95 run at `--nms-thres 0.7`. - YOLOv3-SPP ultralytics is `ultralytics68.pt` with `yolov3-spp.cfg`. - Darknet results published in https://arxiv.org/abs/1804.02767. |img-size |COCO mAP
@0.5...0.95 |COCO mAP
@0.5 --- | --- | --- | --- -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |320 |14.0
28.7
30.5
**35.2** |29.0
51.5
52.3
**53.9** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |416 |16.0
31.1
33.9
**38.8** |32.9
55.3
56.8
**58.7** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
33.0
37.0
**40.6** |35.5
57.9
60.6
**60.7** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |320 |14.0
28.7
30.5
**35.4** |29.0
51.5
52.3
**54.3** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |416 |16.0
31.1
33.9
**39.0** |32.9
55.3
56.8
**59.2** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
33.0
37.0
**40.7** |35.5
57.9
60.6
**60.7** ```bash $ python3 test.py --save-json --img-size 608 --nms-thres 0.65 --weights ultralytics68.pt From 77012f8f972199b6d563844b378aaa54921f17b5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 29 Nov 2019 18:20:57 -0800 Subject: [PATCH 1631/2595] updates --- utils/utils.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 1ded9eae..0af7e5c4 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -272,9 +272,11 @@ def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False, DIoU=False, CIoU=False): rho2 = ((b2_x1 + b2_x2) - (b1_x1 + b1_x2)) ** 2 / 4 + ((b2_y1 + b2_y2) - (b1_y1 + b1_y2)) ** 2 / 4 if DIoU: return iou - rho2 / c2 # DIoU - elif CIoU: + elif CIoU: # https://github.com/Zzh-tju/DIoU-SSD-pytorch/blob/master/utils/box/box_utils.py#L47 v = (4 / math.pi ** 2) * torch.pow(torch.atan(w2 / h2) - torch.atan(w1 / h1), 2) - return iou - (rho2 / c2 + v ** 2 / (1 - iou + v)) # CIoU + with torch.no_grad(): + alpha = v / (1 - iou + v) + return iou - (rho2 / c2 + v * alpha) # CIoU return iou From e613bbc88c8a4867b9d0e9e24a80ebdcb769966b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 29 Nov 2019 19:10:01 -0800 Subject: [PATCH 1632/2595] updates --- train.py | 3 ++ utils/torch_utils.py | 70 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) diff --git a/train.py b/train.py index 0038db97..ad328656 100644 --- a/train.py +++ b/train.py @@ -96,6 +96,9 @@ def train(): optimizer.add_param_group({'params': pg1, 'weight_decay': hyp['weight_decay']}) # add pg1 with weight_decay del pg0, pg1 + # https://github.com/alphadl/lookahead.pytorch + # optimizer = torch_utils.Lookahead(optimizer, k=5, alpha=0.5) + cutoff = -1 # backbone reaches to cutoff layer start_epoch = 0 best_fitness = float('inf') diff --git a/utils/torch_utils.py b/utils/torch_utils.py index e7e15715..ecbcd306 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -96,3 +96,73 @@ def load_classifier(name='resnet101', n=2): model.last_linear.weight = torch.nn.Parameter(torch.zeros(n, filters)) model.last_linear.out_features = n return model + + +from collections import defaultdict +from torch.optim import Optimizer + +class Lookahead(Optimizer): + def __init__(self, optimizer, k=5, alpha=0.5): + self.optimizer = optimizer + self.k = k + self.alpha = alpha + self.param_groups = self.optimizer.param_groups + self.state = defaultdict(dict) + self.fast_state = self.optimizer.state + for group in self.param_groups: + group["counter"] = 0 + + def update(self, group): + for fast in group["params"]: + param_state = self.state[fast] + if "slow_param" not in param_state: + param_state["slow_param"] = torch.zeros_like(fast.data) + param_state["slow_param"].copy_(fast.data) + slow = param_state["slow_param"] + slow += (fast.data - slow) * self.alpha + fast.data.copy_(slow) + + def update_lookahead(self): + for group in self.param_groups: + self.update(group) + + def step(self, closure=None): + loss = self.optimizer.step(closure) + for group in self.param_groups: + if group["counter"] == 0: + self.update(group) + group["counter"] += 1 + if group["counter"] >= self.k: + group["counter"] = 0 + return loss + + def state_dict(self): + fast_state_dict = self.optimizer.state_dict() + slow_state = { + (id(k) if isinstance(k, torch.Tensor) else k): v + for k, v in self.state.items() + } + fast_state = fast_state_dict["state"] + param_groups = fast_state_dict["param_groups"] + return { + "fast_state": fast_state, + "slow_state": slow_state, + "param_groups": param_groups, + } + + def load_state_dict(self, state_dict): + slow_state_dict = { + "state": state_dict["slow_state"], + "param_groups": state_dict["param_groups"], + } + fast_state_dict = { + "state": state_dict["fast_state"], + "param_groups": state_dict["param_groups"], + } + super(Lookahead, self).load_state_dict(slow_state_dict) + self.optimizer.load_state_dict(fast_state_dict) + self.fast_state = self.optimizer.state + + def add_param_group(self, param_group): + param_group["counter"] = 0 + self.optimizer.add_param_group(param_group) \ No newline at end of file From f365946c2f991ef05bc166cc63bcc395581a935a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 12:43:41 -0800 Subject: [PATCH 1633/2595] updates --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7d078339..11d3bcb1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ -# Start from Nvidia PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorch -FROM nvcr.io/nvidia/pytorch:19.10-py3 +# Start FROM Nvidia PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorch +FROM nvcr.io/nvidia/pytorch:19.11-py3 # Install dependencies (pip or conda) RUN pip install -U gsutil From 8afc18e028ec7cee446ca3f88b7f3f330ae6c454 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 13:00:20 -0800 Subject: [PATCH 1634/2595] updates --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 11d3bcb1..7c93230d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -53,10 +53,10 @@ COPY . /usr/src/app # sudo nvidia-docker run --ipc=host ultralytics/yolov3:v0 python3 detect.py # Run with local directory access -# sudo nvidia-docker run --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco ultralytics/yolov3:v0 python3 train.py +# sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco ultralytics/yolov3:v0 python3 train.py # Pull and Run with local directory access -# export tag=ultralytics/yolov3:v0 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py +# export tag=ultralytics/yolov3:v0 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $tag # Build and Push # export tag=ultralytics/yolov3:v0 && sudo docker build -t $tag . && sudo docker push $tag From 5a1bc714063938070580756d55f807f08db4d9a4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 13:20:22 -0800 Subject: [PATCH 1635/2595] updates --- Dockerfile | 2 +- utils/gcp.sh | 54 ++++++++++++++++++++++++++++++++-------------------- 2 files changed, 34 insertions(+), 22 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7c93230d..b4a76692 100644 --- a/Dockerfile +++ b/Dockerfile @@ -62,7 +62,7 @@ COPY . /usr/src/app # export tag=ultralytics/yolov3:v0 && sudo docker build -t $tag . && sudo docker push $tag # Kill all -# sudo docker kill $(sudo docker ps -q) +# sudo docker kill "$(sudo docker ps -q)" # Run bash for loop # sudo nvidia-docker run --ipc=host ultralytics/yolov3:v0 while true; do python3 train.py --evolve; done diff --git a/utils/gcp.sh b/utils/gcp.sh index e4269bf0..fad46c54 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -30,9 +30,12 @@ python3 detect.py python3 test.py --save-json # Evolve -for i in {0..500} +export t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t +clear +sleep 200 +while true do - python3 train.py --data data/coco.data --img-size 416 --epochs 27 --batch-size 32 --accumulate 2 --evolve --weights '' --bucket yolov4/416_coco_27e --device 0 + python3 train.py --data data/coco.data --img-size 416 --epochs 27 --batch-size 32 --accumulate 2 --evolve --weights '' --prebias --bucket yolov4/416_coco_27e --device 7 done # Git pull @@ -88,36 +91,45 @@ rm -rf darknet && git clone https://github.com/AlexeyAB/darknet && cd darknet && ./darknet detector train ../yolov3/data/coco.data ../yolov3-spp.cfg darknet53.conv.74 -map -dont_show # train spp coco #Docker -sudo docker kill $(sudo docker ps -q) +sudo docker kill "$(sudo docker ps -q)" sudo docker pull ultralytics/yolov3:v0 -sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco ultralytics/yolov3:v0 +sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco ultralytics/yolov3:v0 -clear -while true -do - python3 train.py --weights '' --prebias --img-size 512 --batch-size 32 --accumulate 2 --evolve --epochs 27 --bucket yolov4/512_coco_27e --device 0 -done +export t=ultralytics/yolov3:v70 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 70 --device 0 --multi +export t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 71 --device 0 --multi --img-weights + +export t=ultralytics/yolov3:v73 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 73 --device 5 --cfg cfg/yolov3s.cfg +export t=ultralytics/yolov3:v74 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 74 --device 0 --cfg cfg/yolov3s.cfg +export t=ultralytics/yolov3:v75 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 75 --device 7 --cfg cfg/yolov3s.cfg +export t=ultralytics/yolov3:v76 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 76 --device 0 --cfg cfg/yolov3-spp.cfg + +export t=ultralytics/yolov3:v79 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 79 --device 5 +export t=ultralytics/yolov3:v80 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 80 --device 0 +export t=ultralytics/yolov3:v81 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 81 --device 7 +export t=ultralytics/yolov3:v82 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 82 --device 0 --cfg cfg/yolov3s.cfg + +export t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 83 --device 1 --multi +export t=ultralytics/yolov3:v84 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 84 --device 0 --multi +export t=ultralytics/yolov3:v85 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 85 --device 0 --multi +export t=ultralytics/yolov3:v86 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 86 --device 1 --multi +export t=ultralytics/yolov3:v87 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 87 --device 2 --multi +export t=ultralytics/yolov3:v88 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 88 --device 3 --multi +export t=ultralytics/yolov3:v89 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 89 --device 1 +export t=ultralytics/yolov3:v90 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 90 --device 0 --cfg cfg/yolov3-spp-matrix.cfg +export t=ultralytics/yolov3:v91 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 91 --device 0 --cfg cfg/yolov3-spp-matrix.cfg -export tag=ultralytics/yolov3:v70 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 273 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 70 --device 0 --multi -export tag=ultralytics/yolov3:v0 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 273 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 71 --device 0 --multi --img-weights +export t=ultralytics/yolov3:v92 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 92 --device 0 + -export tag=ultralytics/yolov3:v73 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 73 --device 5 --cfg cfg/yolov3s.cfg -export tag=ultralytics/yolov3:v74 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 74 --device 0 --cfg cfg/yolov3s.cfg -export tag=ultralytics/yolov3:v75 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 75 --device 7 --cfg cfg/yolov3s.cfg -export tag=ultralytics/yolov3:v76 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 76 --device 0 --cfg cfg/yolov3s.cfg -export tag=ultralytics/yolov3:v79 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 79 --device 5 -export tag=ultralytics/yolov3:v80 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 80 --device 0 -export tag=ultralytics/yolov3:v81 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 81 --device 7 -export tag=ultralytics/yolov3:v82 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 82 --device 0 --cfg cfg/yolov3s.cfg #SM4 -export tag=ultralytics/yolov3:v0 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/data,target=/usr/src/data $tag python3 train.py --weights 'ultralytics49.pt' --epochs 500 --img-size 320 --batch-size 32 --accumulate 2 --prebias --bucket yolov4 --name 78 --device 0 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data +export t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/data,target=/usr/src/data $t python3 train.py --weights 'ultralytics49.pt' --epochs 500 --img-size 320 --batch-size 32 --accumulate 2 --prebias --bucket yolov4 --name 78 --device 0 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data -export tag=ultralytics/yolov3:v2 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/coco,target=/usr/src/coco $tag +export t=ultralytics/yolov3:v2 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t clear sleep 120 while true From 8d4790349bb926a392224d86e3605ed384d19327 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 14:16:01 -0800 Subject: [PATCH 1636/2595] updates --- README.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 7246b589..a7c90ed8 100755 --- a/README.md +++ b/README.md @@ -151,24 +151,24 @@ YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |416 |16.0
YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
33.0
37.0
**40.7** |35.5
57.9
60.6
**60.7** ```bash -$ python3 test.py --save-json --img-size 608 --nms-thres 0.65 --weights ultralytics68.pt -Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', device='', img_size=608, iou_thres=0.5, nms_thres=0.65, save_json=True, weights='ultralytics68.pt') -Using CUDA device0 _CudaDeviceProperties(name='Tesla T4', total_memory=15079MB) +Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', device='', img_size=608, iou_thres=0.5, nms_thres=0.7, save_json=True, weights='ultralytics68.pt') +Using CUDA device0 _CudaDeviceProperties(name='Tesla P100-PCIE-16GB', total_memory=16280MB) - Class Images Targets P R mAP@0.5 F1: 100% 313/313 [06:52<00:00, 1.24it/s] - all 5e+03 3.58e+04 0.107 0.779 0.59 0.182 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.404 <--- - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.597 <--- - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.438 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.241 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.444 +Downloading https://drive.google.com/uc?export=download&id=1Jm8kqnMdMGUUxGo8zMFZMJ0eaPwLkxSG as ultralytics68.pt... Done (2.2s) + Class Images Targets P R mAP@0.5 F1: 100% 313/313 [16:23<00:00, 1.59s/it] + all 5e+03 3.58e+04 0.0465 0.831 0.586 0.0868 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.407 + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.598 + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.444 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.245 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.446 Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.511 Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.326 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.533 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.570 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.393 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.614 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.691 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.537 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.595 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.427 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.641 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.706 ``` # Citation From 937d8fa53eea3a116a68faa3c0d864d942e717ab Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 14:17:32 -0800 Subject: [PATCH 1637/2595] updates --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a7c90ed8..df624d1a 100755 --- a/README.md +++ b/README.md @@ -151,6 +151,7 @@ YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |416 |16.0
YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
33.0
37.0
**40.7** |35.5
57.9
60.6
**60.7** ```bash +$ python3 test.py --save-json --img-size 608 --nms-thres 0.7 --weights ultralytics68.pt Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', device='', img_size=608, iou_thres=0.5, nms_thres=0.7, save_json=True, weights='ultralytics68.pt') Using CUDA device0 _CudaDeviceProperties(name='Tesla P100-PCIE-16GB', total_memory=16280MB) From 9f0273a459b8fee9eb2905e5bb074d78741894c7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 14:43:23 -0800 Subject: [PATCH 1638/2595] updates --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b4a76692..632f8d7c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Start FROM Nvidia PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorch -FROM nvcr.io/nvidia/pytorch:19.11-py3 +FROM nvcr.io/nvidia/pytorch:19.10-py3 # Install dependencies (pip or conda) RUN pip install -U gsutil From 23ca2f2e7eeeb03d3d5f48085181111babab0bc9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 15:32:39 -0800 Subject: [PATCH 1639/2595] updates --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index df624d1a..6b7ffd81 100755 --- a/README.md +++ b/README.md @@ -78,7 +78,8 @@ https://cloud.google.com/deep-learning-vm/ **CPU platform:** Intel Skylake **GPUs:** K80 ($0.20/hr), T4 ($0.35/hr), V100 ($0.83/hr) CUDA with [Nvidia Apex](https://github.com/NVIDIA/apex) FP16/32 **HDD:** 100 GB SSD -**Dataset:** COCO train 2014 (117,263 images) +**Dataset:** COCO train 2014 (117,263 images) +**Model:** `yolov3-spp.cfg` GPUs | `batch_size` | images/sec | epoch time | epoch cost --- |---| --- | --- | --- @@ -107,13 +108,13 @@ python3 detect.py --source ... To run a specific models: -**YOLOv3:** `python3 detect.py --cfg cfg/yolov3.cfg --weights weights/yolov3.weights` +**YOLOv3:** `python3 detect.py --cfg cfg/yolov3.cfg --weights weights/yolov3.weights` -**YOLOv3-tiny:** `python3 detect.py --cfg cfg/yolov3-tiny.cfg --weights weights/yolov3-tiny.weights` +**YOLOv3-tiny:** `python3 detect.py --cfg cfg/yolov3-tiny.cfg --weights weights/yolov3-tiny.weights` -**YOLOv3-SPP:** `python3 detect.py --cfg cfg/yolov3-spp.cfg --weights weights/yolov3-spp.weights` +**YOLOv3-SPP:** `python3 detect.py --cfg cfg/yolov3-spp.cfg --weights weights/yolov3-spp.weights` From 8a13bf0f3f0e779888bd425f50dc4f6e7bf1f3a2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 15:33:10 -0800 Subject: [PATCH 1640/2595] updates --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6b7ffd81..b18f5607 100755 --- a/README.md +++ b/README.md @@ -108,13 +108,13 @@ python3 detect.py --source ... To run a specific models: -**YOLOv3:** `python3 detect.py --cfg cfg/yolov3.cfg --weights weights/yolov3.weights` +**YOLOv3:** `python3 detect.py --cfg cfg/yolov3.cfg --weights yolov3.weights` -**YOLOv3-tiny:** `python3 detect.py --cfg cfg/yolov3-tiny.cfg --weights weights/yolov3-tiny.weights` +**YOLOv3-tiny:** `python3 detect.py --cfg cfg/yolov3-tiny.cfg --weights yolov3-tiny.weights` -**YOLOv3-SPP:** `python3 detect.py --cfg cfg/yolov3-spp.cfg --weights weights/yolov3-spp.weights` +**YOLOv3-SPP:** `python3 detect.py --cfg cfg/yolov3-spp.cfg --weights yolov3-spp.weights` From ff41a15a2b4c36259a64d1e9e8b583d9801aa443 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 15:34:57 -0800 Subject: [PATCH 1641/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b18f5607..90e54c80 100755 --- a/README.md +++ b/README.md @@ -145,7 +145,7 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' - YOLOv3-SPP ultralytics is `ultralytics68.pt` with `yolov3-spp.cfg`. - Darknet results published in https://arxiv.org/abs/1804.02767. - |img-size |COCO mAP
@0.5...0.95 |COCO mAP
@0.5 + |Size |COCO mAP
@0.5...0.95 |COCO mAP
@0.5 --- | --- | --- | --- YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |320 |14.0
28.7
30.5
**35.4** |29.0
51.5
52.3
**54.3** YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |416 |16.0
31.1
33.9
**39.0** |32.9
55.3
56.8
**59.2** From 1ff01f097393f97732c086d0860697fe1e691d68 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 16:58:56 -0800 Subject: [PATCH 1642/2595] updates --- utils/datasets.py | 48 ++++++++++++++++++++++------------------------- 1 file changed, 22 insertions(+), 26 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index a456c185..e5469a64 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -424,9 +424,9 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Letterbox h, w = img.shape[:2] if self.rect: - img, ratio, padw, padh = letterbox(img, self.batch_shapes[self.batch[index]], mode='rect') + img, ratio, pad = letterbox(img, self.batch_shapes[self.batch[index]], mode='rect') else: - img, ratio, padw, padh = letterbox(img, self.img_size, mode='square') + img, ratio, pad = letterbox(img, self.img_size, mode='square') # Load labels labels = [] @@ -439,10 +439,10 @@ class LoadImagesAndLabels(Dataset): # for training/testing if x.size > 0: # Normalized xywh to pixel xyxy format labels = x.copy() - labels[:, 1] = ratio[0] * w * (x[:, 1] - x[:, 3] / 2) + padw - labels[:, 2] = ratio[1] * h * (x[:, 2] - x[:, 4] / 2) + padh - labels[:, 3] = ratio[0] * w * (x[:, 1] + x[:, 3] / 2) + padw - labels[:, 4] = ratio[1] * h * (x[:, 2] + x[:, 4] / 2) + padh + labels[:, 1] = ratio[0] * w * (x[:, 1] - x[:, 3] / 2) + pad[0] # pad width + labels[:, 2] = ratio[1] * h * (x[:, 2] - x[:, 4] / 2) + pad[1] + labels[:, 3] = ratio[0] * w * (x[:, 1] + x[:, 3] / 2) + pad[0] + labels[:, 4] = ratio[1] * h * (x[:, 2] + x[:, 4] / 2) + pad[1] if self.augment: # Augment colorspace @@ -610,39 +610,35 @@ def load_mosaic(self, index): return img4, labels4 -def letterbox(img, new_shape=416, color=(128, 128, 128), mode='auto', interp=cv2.INTER_AREA): +def letterbox(img, new_shape=(416, 416), color=(128, 128, 128), mode='auto', interp=cv2.INTER_AREA): # Resize a rectangular image to a 32 pixel multiple rectangle # https://github.com/ultralytics/yolov3/issues/232 shape = img.shape[:2] # current shape [height, width] - if isinstance(new_shape, int): - r = float(new_shape) / max(shape) # ratio = new / old - else: - r = max(new_shape) / max(shape) - ratio = r, r # width, height ratios - new_unpad = (int(round(shape[1] * r)), int(round(shape[0] * r))) + new_shape = (new_shape, new_shape) - # Compute padding https://github.com/ultralytics/yolov3/issues/232 + r = max(new_shape) / max(shape) # ratio = new / old + ratio = r, r # width, height ratios + new_unpad = int(round(shape[1] * r)), int(round(shape[0] * r)) + + # Compute padding + dw, dh = new_shape[1] - new_unpad[0], new_shape[0] - new_unpad[1] # wh padding if mode is 'auto': # minimum rectangle - dw = np.mod(new_shape - new_unpad[0], 32) / 2 # width padding - dh = np.mod(new_shape - new_unpad[1], 32) / 2 # height padding - elif mode is 'square': # square - dw = (new_shape - new_unpad[0]) / 2 # width padding - dh = (new_shape - new_unpad[1]) / 2 # height padding - elif mode is 'rect': # square - dw = (new_shape[1] - new_unpad[0]) / 2 # width padding - dh = (new_shape[0] - new_unpad[1]) / 2 # height padding - elif mode is 'scaleFill': + dw, dh = np.mod(dw, 32), np.mod(dh, 32) # wh padding + elif mode is 'scaleFill': # stretch dw, dh = 0.0, 0.0 - new_unpad = (new_shape, new_shape) - ratio = new_shape / shape[1], new_shape / shape[0] # width, height ratios + new_unpad = new_shape + ratio = new_shape[0] / shape[1], new_shape[1] / shape[0] # width, height ratios + + dw /= 2 # divide padding into 2 sides + dh /= 2 if shape[::-1] != new_unpad: # resize img = cv2.resize(img, new_unpad, interpolation=interp) # INTER_AREA is better, INTER_LINEAR is faster top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1)) left, right = int(round(dw - 0.1)), int(round(dw + 0.1)) img = cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color) # add border - return img, ratio, dw, dh + return img, ratio, (dw, dh) def random_affine(img, targets=(), degrees=10, translate=.1, scale=.1, shear=10): From 3cdbf246c99ecc8e11b6ae427119a1236a9ff92c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 17:03:47 -0800 Subject: [PATCH 1643/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index e5469a64..cb80945a 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -440,7 +440,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Normalized xywh to pixel xyxy format labels = x.copy() labels[:, 1] = ratio[0] * w * (x[:, 1] - x[:, 3] / 2) + pad[0] # pad width - labels[:, 2] = ratio[1] * h * (x[:, 2] - x[:, 4] / 2) + pad[1] + labels[:, 2] = ratio[1] * h * (x[:, 2] - x[:, 4] / 2) + pad[1] # pad height labels[:, 3] = ratio[0] * w * (x[:, 1] + x[:, 3] / 2) + pad[0] labels[:, 4] = ratio[1] * h * (x[:, 2] + x[:, 4] / 2) + pad[1] From e28a425384df7f2dd8abd6cdc375013d4dedd466 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 17:13:21 -0800 Subject: [PATCH 1644/2595] updates --- test.py | 4 ++-- utils/datasets.py | 12 +++++------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/test.py b/test.py index c6656246..d18a66b3 100644 --- a/test.py +++ b/test.py @@ -200,8 +200,8 @@ if __name__ == '__main__': parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') - parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') - parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') + parser.add_argument('--batch-size', type=int, default=2, help='size of each image batch') + parser.add_argument('--img-size', type=int, default=800, help='inference size (pixels)') parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') diff --git a/utils/datasets.py b/utils/datasets.py index cb80945a..9b2bd19c 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -423,10 +423,8 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Letterbox h, w = img.shape[:2] - if self.rect: - img, ratio, pad = letterbox(img, self.batch_shapes[self.batch[index]], mode='rect') - else: - img, ratio, pad = letterbox(img, self.img_size, mode='square') + shape = self.batch_shapes[self.batch[index]] if self.rect else self.img_size # final letterboxed shape + img, ratio, pad = letterbox(img, shape, auto=False) # Load labels labels = [] @@ -610,7 +608,7 @@ def load_mosaic(self, index): return img4, labels4 -def letterbox(img, new_shape=(416, 416), color=(128, 128, 128), mode='auto', interp=cv2.INTER_AREA): +def letterbox(img, new_shape=(416, 416), color=(128, 128, 128), auto=True, scaleFill=False, interp=cv2.INTER_AREA): # Resize a rectangular image to a 32 pixel multiple rectangle # https://github.com/ultralytics/yolov3/issues/232 shape = img.shape[:2] # current shape [height, width] @@ -623,9 +621,9 @@ def letterbox(img, new_shape=(416, 416), color=(128, 128, 128), mode='auto', int # Compute padding dw, dh = new_shape[1] - new_unpad[0], new_shape[0] - new_unpad[1] # wh padding - if mode is 'auto': # minimum rectangle + if auto: # minimum rectangle dw, dh = np.mod(dw, 32), np.mod(dh, 32) # wh padding - elif mode is 'scaleFill': # stretch + elif scaleFill: # stretch dw, dh = 0.0, 0.0 new_unpad = new_shape ratio = new_shape[0] / shape[1], new_shape[1] / shape[0] # width, height ratios From 4e0067cdc949e8203bb6cb28b327eccc86741758 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 17:14:53 -0800 Subject: [PATCH 1645/2595] updates --- test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index d18a66b3..c6656246 100644 --- a/test.py +++ b/test.py @@ -200,8 +200,8 @@ if __name__ == '__main__': parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') - parser.add_argument('--batch-size', type=int, default=2, help='size of each image batch') - parser.add_argument('--img-size', type=int, default=800, help='inference size (pixels)') + parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') + parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') From f2ec1cb9ea8679a0bfe0015d7c2c65f3eb607bdc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 17:19:44 -0800 Subject: [PATCH 1646/2595] updates --- utils/datasets.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 9b2bd19c..77c7878c 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -609,8 +609,7 @@ def load_mosaic(self, index): def letterbox(img, new_shape=(416, 416), color=(128, 128, 128), auto=True, scaleFill=False, interp=cv2.INTER_AREA): - # Resize a rectangular image to a 32 pixel multiple rectangle - # https://github.com/ultralytics/yolov3/issues/232 + # Resize image to a 32-pixel-multiple rectangle https://github.com/ultralytics/yolov3/issues/232 shape = img.shape[:2] # current shape [height, width] if isinstance(new_shape, int): new_shape = (new_shape, new_shape) From a699c901d3b6035931c4cbf441a81337aa65513e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 17:38:29 -0800 Subject: [PATCH 1647/2595] updates --- utils/datasets.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 77c7878c..d57c385f 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -614,11 +614,15 @@ def letterbox(img, new_shape=(416, 416), color=(128, 128, 128), auto=True, scale if isinstance(new_shape, int): new_shape = (new_shape, new_shape) - r = max(new_shape) / max(shape) # ratio = new / old - ratio = r, r # width, height ratios - new_unpad = int(round(shape[1] * r)), int(round(shape[0] * r)) + # Scale ratio (new / old) + scaleup_ok = True + r = max(new_shape) / max(shape) + if not scaleup_ok: # only scale down + r = min(r, 1.0) # Compute padding + ratio = r, r # width, height ratios + new_unpad = int(round(shape[1] * r)), int(round(shape[0] * r)) dw, dh = new_shape[1] - new_unpad[0], new_shape[0] - new_unpad[1] # wh padding if auto: # minimum rectangle dw, dh = np.mod(dw, 32), np.mod(dh, 32) # wh padding From 0f6954fa04be327eb01b79ffb5b906c4c1bc75d7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 17:47:33 -0800 Subject: [PATCH 1648/2595] updates --- test.py | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/test.py b/test.py index c6656246..f02c97ce 100644 --- a/test.py +++ b/test.py @@ -167,26 +167,26 @@ def test(cfg, # Save JSON if save_json and map and len(jdict): - try: - imgIds = [int(Path(x).stem.split('_')[-1]) for x in dataset.img_files] - with open('results.json', 'w') as file: - json.dump(jdict, file) + imgIds = [int(Path(x).stem.split('_')[-1]) for x in dataset.img_files] + with open('results.json', 'w') as file: + json.dump(jdict, file) + try: from pycocotools.coco import COCO from pycocotools.cocoeval import COCOeval - - # https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocoEvalDemo.ipynb - cocoGt = COCO('../coco/annotations/instances_val2014.json') # initialize COCO ground truth api - cocoDt = cocoGt.loadRes('results.json') # initialize COCO pred api - - cocoEval = COCOeval(cocoGt, cocoDt, 'bbox') - cocoEval.params.imgIds = imgIds # [:32] # only evaluate these images - cocoEval.evaluate() - cocoEval.accumulate() - cocoEval.summarize() - map = cocoEval.stats[1] # update mAP to pycocotools mAP except: - print('WARNING: missing dependency pycocotools from requirements.txt. Can not compute official COCO mAP.') + print('WARNING: missing pycocotools package, can not compute official COCO mAP. See requirements.txt.') + + # https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocoEvalDemo.ipynb + cocoGt = COCO('../coco/annotations/instances_val2014.json') # initialize COCO ground truth api + cocoDt = cocoGt.loadRes('results.json') # initialize COCO pred api + + cocoEval = COCOeval(cocoGt, cocoDt, 'bbox') + cocoEval.params.imgIds = imgIds # [:32] # only evaluate these images + cocoEval.evaluate() + cocoEval.accumulate() + cocoEval.summarize() + map = cocoEval.stats[1] # update mAP to pycocotools mAP # Return results maps = np.zeros(nc) + map @@ -198,16 +198,17 @@ def test(cfg, if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data', type=str, default='data/coco.data', help='coco.data file path') + parser.add_argument('--data', type=str, default='data/coco_16img.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') - parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') - parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') + parser.add_argument('--batch-size', type=int, default=4, help='size of each image batch') + parser.add_argument('--img-size', type=int, default=800, help='inference size (pixels)') parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') parser.add_argument('--save-json', action='store_true', help='save a cocoapi-compatible JSON results file') parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') opt = parser.parse_args() + opt.save_json = True print(opt) with torch.no_grad(): From 6992c68e33a8c961911a0986104837240d8a0fa8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 17:47:49 -0800 Subject: [PATCH 1649/2595] updates --- test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index f02c97ce..0743de94 100644 --- a/test.py +++ b/test.py @@ -200,8 +200,8 @@ if __name__ == '__main__': parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data', type=str, default='data/coco_16img.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') - parser.add_argument('--batch-size', type=int, default=4, help='size of each image batch') - parser.add_argument('--img-size', type=int, default=800, help='inference size (pixels)') + parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') + parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') From 34155887bc37ca67bfa881e3167b3841991ac621 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 17:48:21 -0800 Subject: [PATCH 1650/2595] updates --- test.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test.py b/test.py index 0743de94..b1e4214a 100644 --- a/test.py +++ b/test.py @@ -198,7 +198,7 @@ def test(cfg, if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data', type=str, default='data/coco_16img.data', help='coco.data file path') + parser.add_argument('--data', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') @@ -208,7 +208,6 @@ if __name__ == '__main__': parser.add_argument('--save-json', action='store_true', help='save a cocoapi-compatible JSON results file') parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') opt = parser.parse_args() - opt.save_json = True print(opt) with torch.no_grad(): From 8be4b41b3d614c641a37ead3c7da5e452852b618 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 18:19:17 -0800 Subject: [PATCH 1651/2595] updates --- utils/utils.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 0af7e5c4..a6a2478b 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -124,11 +124,17 @@ def xywh2xyxy(x): return y -def scale_coords(img1_shape, coords, img0_shape): +def scale_coords(img1_shape, coords, img0_shape, ratio_pad=None): # Rescale coords (xyxy) from img1_shape to img0_shape - gain = max(img1_shape) / max(img0_shape) # gain = old / new - coords[:, [0, 2]] -= (img1_shape[1] - img0_shape[1] * gain) / 2 # x padding - coords[:, [1, 3]] -= (img1_shape[0] - img0_shape[0] * gain) / 2 # y padding + if ratio_pad is None: # not supplied, calculate + gain = max(img1_shape) / max(img0_shape) # gain = old / new + pad = (img1_shape[1] - img0_shape[1] * gain) / 2, (img1_shape[0] - img0_shape[0] * gain) / 2 # wh padding + else: + gain = ratio_pad[0][0] + pad = ratio_pad[1] + + coords[:, [0, 2]] -= pad[0] # x padding + coords[:, [1, 3]] -= pad[1] # y padding coords[:, :4] /= gain clip_coords(coords, img0_shape) return coords From 6a05cf56c22a3e93e152cfd43ca73485775142ed Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 18:45:43 -0800 Subject: [PATCH 1652/2595] updates --- test.py | 2 +- utils/datasets.py | 7 ++++--- utils/utils.py | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/test.py b/test.py index b1e4214a..92c6c948 100644 --- a/test.py +++ b/test.py @@ -101,7 +101,7 @@ def test(cfg, # [{"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], "score": 0.236}, ... image_id = int(Path(paths[si]).stem.split('_')[-1]) box = pred[:, :4].clone() # xyxy - scale_coords(imgs[si].shape[1:], box, shapes[si]) # to original shape + scale_coords(imgs[si].shape[1:], box, shapes[si][0], shapes[si][1]) # to original shape box = xyxy2xywh(box) # xywh box[:, :2] -= box[:, 2:] / 2 # xy center to top-left corner for di, d in enumerate(pred): diff --git a/utils/datasets.py b/utils/datasets.py index d57c385f..ef726e60 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -416,6 +416,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Load mosaic img, labels = load_mosaic(self, index) h, w = img.shape[:2] + ratio, pad = None, None else: # Load image @@ -492,14 +493,14 @@ class LoadImagesAndLabels(Dataset): # for training/testing img = np.ascontiguousarray(img, dtype=np.float32) # uint8 to float32 img /= 255.0 # 0 - 255 to 0.0 - 1.0 - return torch.from_numpy(img), labels_out, img_path, (h, w) + return torch.from_numpy(img), labels_out, img_path, ((h, w), (ratio, pad)) @staticmethod def collate_fn(batch): - img, label, path, hw = list(zip(*batch)) # transposed + img, label, path, shapes = list(zip(*batch)) # transposed for i, l in enumerate(label): l[:, 0] = i # add target image index for build_targets() - return torch.stack(img, 0), torch.cat(label, 0), path, hw + return torch.stack(img, 0), torch.cat(label, 0), path, shapes def load_image(self, index): diff --git a/utils/utils.py b/utils/utils.py index a6a2478b..12083988 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -126,7 +126,7 @@ def xywh2xyxy(x): def scale_coords(img1_shape, coords, img0_shape, ratio_pad=None): # Rescale coords (xyxy) from img1_shape to img0_shape - if ratio_pad is None: # not supplied, calculate + if ratio_pad is None: # calculate from img0_shape gain = max(img1_shape) / max(img0_shape) # gain = old / new pad = (img1_shape[1] - img0_shape[1] * gain) / 2, (img1_shape[0] - img0_shape[0] * gain) / 2 # wh padding else: From 93c348f353fe61cc34d70041f9a6c5ce3213c8dd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 18:52:37 -0800 Subject: [PATCH 1653/2595] updates --- utils/datasets.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index ef726e60..340cfdb8 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -425,7 +425,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Letterbox h, w = img.shape[:2] shape = self.batch_shapes[self.batch[index]] if self.rect else self.img_size # final letterboxed shape - img, ratio, pad = letterbox(img, shape, auto=False) + img, ratio, pad = letterbox(img, shape, auto=False, scaleup=self.augment) # Load labels labels = [] @@ -609,16 +609,16 @@ def load_mosaic(self, index): return img4, labels4 -def letterbox(img, new_shape=(416, 416), color=(128, 128, 128), auto=True, scaleFill=False, interp=cv2.INTER_AREA): +def letterbox(img, new_shape=(416, 416), color=(128, 128, 128), + auto=True, scaleFill=False, scaleup=True, interp=cv2.INTER_AREA): # Resize image to a 32-pixel-multiple rectangle https://github.com/ultralytics/yolov3/issues/232 shape = img.shape[:2] # current shape [height, width] if isinstance(new_shape, int): new_shape = (new_shape, new_shape) # Scale ratio (new / old) - scaleup_ok = True r = max(new_shape) / max(shape) - if not scaleup_ok: # only scale down + if not scaleup: # only scale down, do not scale up (for better test mAP) r = min(r, 1.0) # Compute padding From 5bcc2b38b8d8d2fbf7edd84cfbca8c7063cb4bfe Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 19:24:08 -0800 Subject: [PATCH 1654/2595] updates --- models.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/models.py b/models.py index b3670b62..6401ab6c 100755 --- a/models.py +++ b/models.py @@ -433,6 +433,8 @@ def attempt_download(weights): gdrive_download(id='16lYS4bcIdM2HdmyJBVDOvt3Trx6N3W2R', name=weights) elif file == 'yolov3.weights': gdrive_download(id='1uTlyDWlnaqXcsKOktP5aH_zRDbfcDp-y', name=weights) + elif file == 'yolov3-tiny.weights': + gdrive_download(id='1CCF-iNIIkYesIDzaPvdwlcf7H9zSsKZQ', name=weights) elif file == 'yolov3-spp.pt': gdrive_download(id='1f6Ovy3BSq2wYq4UfvFUpxJFNDFfrIDcR', name=weights) elif file == 'yolov3.pt': From 5455ddd6f7fe79ec9b03f4e874d5c05aec3d4d24 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 20:47:14 -0800 Subject: [PATCH 1655/2595] updates --- README.md | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 90e54c80..34f02d47 100755 --- a/README.md +++ b/README.md @@ -147,30 +147,31 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' |Size |COCO mAP
@0.5...0.95 |COCO mAP
@0.5 --- | --- | --- | --- -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |320 |14.0
28.7
30.5
**35.4** |29.0
51.5
52.3
**54.3** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |416 |16.0
31.1
33.9
**39.0** |32.9
55.3
56.8
**59.2** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
33.0
37.0
**40.7** |35.5
57.9
60.6
**60.7** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |320 |14.0
28.7
30.5
**35.4** |29.1
51.8
52.3
**54.3** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |416 |16.0
31.2
33.9
**39.0** |33.0
55.4
56.9
**59.2** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |512 |16.6
32.7
35.6
**40.3** |34.9
57.7
59.5
**60.6** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
33.1
37.0
**40.7** |35.4
58.2
60.7
**60.9** ```bash $ python3 test.py --save-json --img-size 608 --nms-thres 0.7 --weights ultralytics68.pt -Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', device='', img_size=608, iou_thres=0.5, nms_thres=0.7, save_json=True, weights='ultralytics68.pt') -Using CUDA device0 _CudaDeviceProperties(name='Tesla P100-PCIE-16GB', total_memory=16280MB) +Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', device='1', img_size=608, iou_thres=0.5, nms_thres=0.7, save_json=True, weights='ultralytics68.pt') +Using CUDA device0 _CudaDeviceProperties(name='GeForce RTX 2080 Ti', total_memory=11019MB) -Downloading https://drive.google.com/uc?export=download&id=1Jm8kqnMdMGUUxGo8zMFZMJ0eaPwLkxSG as ultralytics68.pt... Done (2.2s) - Class Images Targets P R mAP@0.5 F1: 100% 313/313 [16:23<00:00, 1.59s/it] - all 5e+03 3.58e+04 0.0465 0.831 0.586 0.0868 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.407 - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.598 - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.444 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.245 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.446 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.511 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.326 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.537 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.595 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.427 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.641 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.706 + Class Images Targets P R mAP@0.5 F1: 100%|███████████████████████████████████████████████████████████████████████████████████| 313/313 [09:46<00:00, 1.09it/s] + all 5e+03 3.58e+04 0.0481 0.829 0.589 0.0894 + + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.40882 + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.60026 + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.44551 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.24343 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.45024 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.51362 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.32644 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.53629 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.59343 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.42207 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.63985 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.70688 ``` # Citation From 033c51ed90d6eb4d9346ad9379c980662392fc7d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 30 Nov 2019 20:48:49 -0800 Subject: [PATCH 1656/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 34f02d47..87633b2d 100755 --- a/README.md +++ b/README.md @@ -150,7 +150,7 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |320 |14.0
28.7
30.5
**35.4** |29.1
51.8
52.3
**54.3** YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |416 |16.0
31.2
33.9
**39.0** |33.0
55.4
56.9
**59.2** YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |512 |16.6
32.7
35.6
**40.3** |34.9
57.7
59.5
**60.6** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
33.1
37.0
**40.7** |35.4
58.2
60.7
**60.9** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
33.1
37.0
**40.9** |35.4
58.2
60.7
**60.9** ```bash $ python3 test.py --save-json --img-size 608 --nms-thres 0.7 --weights ultralytics68.pt From 92690302bb939d18973a1d3ae2f6ed9b59644dd2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 1 Dec 2019 13:49:38 -0800 Subject: [PATCH 1657/2595] updates --- train.py | 1 + 1 file changed, 1 insertion(+) diff --git a/train.py b/train.py index ad328656..59e93619 100644 --- a/train.py +++ b/train.py @@ -43,6 +43,7 @@ hyp = {'giou': 3.31, # giou loss gain # Overwrite hyp with hyp*.txt (optional) f = glob.glob('hyp*.txt') if f: + print('Using %s' % f) for k, v in zip(hyp.keys(), np.loadtxt(f[0])): hyp[k] = v From d6a7a614dc35120a7704a979d171cc967510b978 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 1 Dec 2019 13:51:55 -0800 Subject: [PATCH 1658/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 59e93619..67996e4e 100644 --- a/train.py +++ b/train.py @@ -43,7 +43,7 @@ hyp = {'giou': 3.31, # giou loss gain # Overwrite hyp with hyp*.txt (optional) f = glob.glob('hyp*.txt') if f: - print('Using %s' % f) + print('Using %s' % f[0]) for k, v in zip(hyp.keys(), np.loadtxt(f[0])): hyp[k] = v From e637ae44ddb2f0ebd0db34972cbd08fc6e1f4f75 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 1 Dec 2019 14:06:11 -0800 Subject: [PATCH 1659/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 67996e4e..5a46c668 100644 --- a/train.py +++ b/train.py @@ -24,7 +24,7 @@ results_file = 'results.txt' hyp = {'giou': 3.31, # giou loss gain 'cls': 42.4, # cls loss gain 'cls_pw': 1.0, # cls BCELoss positive_weight - 'obj': 52.0, # obj loss gain (*=img_size/320 if img_size != 320) + 'obj': 52.0, # obj loss gain (*=img_size/416 if img_size != 416) 'obj_pw': 1.0, # obj BCELoss positive_weight 'iou_t': 0.213, # iou training threshold 'lr0': 0.00261, # initial learning rate (SGD=1E-3, Adam=9E-5) From 3d91731519dcbea9a1a2047817ba83ce1441358f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 1 Dec 2019 14:07:09 -0800 Subject: [PATCH 1660/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 5a46c668..617cd518 100644 --- a/train.py +++ b/train.py @@ -20,7 +20,7 @@ last = wdir + 'last.pt' best = wdir + 'best.pt' results_file = 'results.txt' -# Hyperparameters (k-series, 57.7 mAP yolov3-spp-416) https://github.com/ultralytics/yolov3/issues/310 +# Hyperparameters (results68: 59.2 mAP@0.5 yolov3-spp-416) https://github.com/ultralytics/yolov3/issues/310 hyp = {'giou': 3.31, # giou loss gain 'cls': 42.4, # cls loss gain 'cls_pw': 1.0, # cls BCELoss positive_weight From 93a70d958a1138b082f7b5c29c550b7d383f56f3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 2 Dec 2019 11:31:19 -0800 Subject: [PATCH 1661/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 617cd518..a13433ca 100644 --- a/train.py +++ b/train.py @@ -404,8 +404,8 @@ def prebias(): if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--epochs', type=int, default=273) # 500200 batches at bs 16, 117263 images = 273 epochs - parser.add_argument('--batch-size', type=int, default=32) # effective bs = batch_size * accumulate = 16 * 4 = 64 - parser.add_argument('--accumulate', type=int, default=2, help='batches to accumulate before optimizing') + parser.add_argument('--batch-size', type=int, default=16) # effective bs = batch_size * accumulate = 16 * 4 = 64 + parser.add_argument('--accumulate', type=int, default=4, help='batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') parser.add_argument('--data', type=str, default='data/coco.data', help='*.data file path') parser.add_argument('--multi-scale', action='store_true', help='adjust (67% - 150%) img_size every 10 batches') From d68a59bffcbfbbe5df488c89104fa10f127de23c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 2 Dec 2019 14:23:20 -0800 Subject: [PATCH 1662/2595] updates --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 632f8d7c..040a9a57 100644 --- a/Dockerfile +++ b/Dockerfile @@ -53,13 +53,13 @@ COPY . /usr/src/app # sudo nvidia-docker run --ipc=host ultralytics/yolov3:v0 python3 detect.py # Run with local directory access -# sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco ultralytics/yolov3:v0 python3 train.py +# sudo nvidia-docker run --ipc=host -it -v "$(pwd)"/coco:/usr/src/coco ultralytics/yolov3:v0 # Pull and Run with local directory access -# export tag=ultralytics/yolov3:v0 && sudo docker pull $tag && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $tag +# export t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t # Build and Push -# export tag=ultralytics/yolov3:v0 && sudo docker build -t $tag . && sudo docker push $tag +# export t=ultralytics/yolov3:v0 && sudo docker build -t $t . && sudo docker push $t # Kill all # sudo docker kill "$(sudo docker ps -q)" From ebb4d4c884fd7cbc086fce15f361ccb149a834de Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 2 Dec 2019 14:31:04 -0800 Subject: [PATCH 1663/2595] updates --- utils/datasets.py | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 340cfdb8..b54eee64 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -523,23 +523,6 @@ def augment_hsv(img, hgain=0.5, sgain=0.5, vgain=0.5): cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) # no return needed -# def augment_hsv(img, hgain=0.5, sgain=0.5, vgain=0.5): # original version -# # SV augmentation by 50% -# img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # hue, sat, val -# -# S = img_hsv[:, :, 1].astype(np.float32) # saturation -# V = img_hsv[:, :, 2].astype(np.float32) # value -# -# a = random.uniform(-1, 1) * sgain + 1 -# b = random.uniform(-1, 1) * vgain + 1 -# S *= a -# V *= b -# -# img_hsv[:, :, 1] = S if a < 1 else S.clip(None, 255) -# img_hsv[:, :, 2] = V if b < 1 else V.clip(None, 255) -# cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) # no return needed - - def load_mosaic(self, index): # loads images in a mosaic From cba3120ca6171c9e470cbb4ca857a12aafb31b7e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 2 Dec 2019 15:26:36 -0800 Subject: [PATCH 1664/2595] updates --- utils/datasets.py | 44 ++++++++++++++++++++------------------------ 1 file changed, 20 insertions(+), 24 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index b54eee64..dc12421b 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -411,6 +411,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing img_path = self.img_files[index] label_path = self.label_files[index] + hyp = self.hyp mosaic = True and self.augment # load 4 images at a time into a mosaic (only during training) if mosaic: # Load mosaic @@ -444,17 +445,16 @@ class LoadImagesAndLabels(Dataset): # for training/testing labels[:, 4] = ratio[1] * h * (x[:, 2] + x[:, 4] / 2) + pad[1] if self.augment: - # Augment colorspace - augment_hsv(img, hgain=self.hyp['hsv_h'], sgain=self.hyp['hsv_s'], vgain=self.hyp['hsv_v']) - # Augment imagespace - g = 0.0 if mosaic else 1.0 # do not augment mosaics - hyp = self.hyp - img, labels = random_affine(img, labels, - degrees=hyp['degrees'] * g, - translate=hyp['translate'] * g, - scale=hyp['scale'] * g, - shear=hyp['shear'] * g) + if not mosaic: + img, labels = random_affine(img, labels, + degrees=hyp['degrees'], + translate=hyp['translate'], + scale=hyp['scale'], + shear=hyp['shear']) + + # Augment colorspace + augment_hsv(img, hgain=hyp['hsv_h'], sgain=hyp['hsv_s'], vgain=hyp['hsv_v']) # Apply cutouts # if random.random() < 0.9: @@ -573,21 +573,18 @@ def load_mosaic(self, index): labels = np.zeros((0, 5), dtype=np.float32) labels4.append(labels) + # Concat/clip labels if len(labels4): labels4 = np.concatenate(labels4, 0) + np.clip(labels4[:, 1:], 0, 2 * s, out=labels4[:, 1:]) - # hyp = self.hyp - # img4, labels4 = random_affine(img4, labels4, - # degrees=hyp['degrees'], - # translate=hyp['translate'], - # scale=hyp['scale'], - # shear=hyp['shear']) - - # Center crop - a = s // 2 - img4 = img4[a:a + s, a:a + s] - if len(labels4): - labels4[:, 1:] -= a + # Augment + img4, labels4 = random_affine(img4, labels4, + degrees=self.hyp['degrees'], + translate=self.hyp['translate'], + scale=self.hyp['scale'], + shear=self.hyp['shear'], + border=-s // 2) # border to remove return img4, labels4 @@ -626,13 +623,12 @@ def letterbox(img, new_shape=(416, 416), color=(128, 128, 128), return img, ratio, (dw, dh) -def random_affine(img, targets=(), degrees=10, translate=.1, scale=.1, shear=10): +def random_affine(img, targets=(), degrees=10, translate=.1, scale=.1, shear=10, border=0): # torchvision.transforms.RandomAffine(degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-10, 10)) # https://medium.com/uruvideo/dataset-augmentation-with-random-homographies-a8f4b44830d4 if targets is None: # targets = [cls, xyxy] targets = [] - border = 0 # width of added border (optional) height = img.shape[0] + border * 2 width = img.shape[1] + border * 2 From cadd2f75ff5108818048cf48af8a5e8558acf6ee Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 2 Dec 2019 16:46:15 -0800 Subject: [PATCH 1665/2595] updates --- requirements.txt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/requirements.txt b/requirements.txt index a475a45c..bb6e49e9 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,14 +1,16 @@ -# pip3 install -U -r requirements.txt +# pip install -U -r requirements.txt numpy opencv-python torch >= 1.3 matplotlib pycocotools tqdm -tb-nightly -future Pillow +# Tensorboard pip requirements ------------------------------------------------- +# tb-nightly +# future + # Equivalent conda commands ---------------------------------------------------- # conda update -n base -c defaults conda # conda install -yc anaconda future numpy opencv matplotlib tqdm pillow From 0fe246f3995dc77367d6c8d6158c9112ff8a309f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 2 Dec 2019 18:22:21 -0800 Subject: [PATCH 1666/2595] updates --- utils/utils.py | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 12083988..3984d20b 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -1,4 +1,5 @@ import glob +import math import os import random import shutil @@ -10,8 +11,8 @@ import matplotlib.pyplot as plt import numpy as np import torch import torch.nn as nn +import torchvision from tqdm import tqdm -import math from . import torch_utils # , google_utils @@ -503,7 +504,6 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): # Box (center x, center y, width, height) to (x1, y1, x2, y2) pred[:, :4] = xywh2xyxy(pred[:, :4]) - # pred[:, 4] *= class_conf # improves mAP from 0.549 to 0.551 # Detections ordered as (x1y1x2y2, obj_conf, class_conf, class_pred) pred = torch.cat((pred[:, :5], class_conf.unsqueeze(1), class_pred), 1) @@ -511,8 +511,21 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): # Get detections sorted by decreasing confidence scores pred = pred[(-pred[:, 4]).argsort()] + # Set NMS method https://github.com/ultralytics/yolov3/issues/679 + # 'OR', 'AND', 'MERGE', 'VISION', 'VISION_BATCHED' + method = 'MERGE' if conf_thres <= 0.01 else 'VISION' # MERGE is highest mAP, VISION is fastest + + # Batched NMS + if method == 'VISION_BATCHED': + i = torchvision.ops.boxes.batched_nms(boxes=pred[:, :4], + scores=pred[:, 4], + idxs=pred[:, 6], + iou_threshold=nms_thres) + output[image_i] = pred[i] + continue + + # Non-maximum suppression det_max = [] - nms_style = 'MERGE' # 'OR' (default), 'AND', 'MERGE' (experimental) for c in pred[:, -1].unique(): dc = pred[pred[:, -1] == c] # select class c n = len(dc) @@ -520,10 +533,13 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): det_max.append(dc) # No NMS required if only 1 prediction continue elif n > 500: - dc = dc[:500] # limit to first 100 boxes: https://github.com/ultralytics/yolov3/issues/117 + dc = dc[:500] # limit to first 500 boxes: https://github.com/ultralytics/yolov3/issues/117 - # Non-maximum suppression - if nms_style == 'OR': # default + if method == 'VISION': + i = torchvision.ops.boxes.nms(dc[:, :4], dc[:, 4], nms_thres) + det_max.append(dc[i]) + + elif method == 'OR': # default # METHOD1 # ind = list(range(len(dc))) # while len(ind): @@ -540,14 +556,14 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): iou = bbox_iou(dc[0], dc[1:]) # iou with other boxes dc = dc[1:][iou < nms_thres] # remove ious > threshold - elif nms_style == 'AND': # requires overlap, single boxes erased + elif method == 'AND': # requires overlap, single boxes erased while len(dc) > 1: iou = bbox_iou(dc[0], dc[1:]) # iou with other boxes if iou.max() > 0.5: det_max.append(dc[:1]) dc = dc[1:][iou < nms_thres] # remove ious > threshold - elif nms_style == 'MERGE': # weighted mixture box + elif method == 'MERGE': # weighted mixture box while len(dc): if len(dc) == 1: det_max.append(dc) @@ -558,7 +574,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): det_max.append(dc[:1]) dc = dc[i == 0] - elif nms_style == 'SOFT': # soft-NMS https://arxiv.org/abs/1704.04503 + elif method == 'SOFT': # soft-NMS https://arxiv.org/abs/1704.04503 sigma = 0.5 # soft-nms sigma parameter while len(dc): if len(dc) == 1: From 1e9ddc5a90057d39fb47af52737dd24e99db2f07 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 2 Dec 2019 19:44:10 -0800 Subject: [PATCH 1667/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 3984d20b..ae02b9f9 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -584,7 +584,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): iou = bbox_iou(dc[0], dc[1:]) # iou with other boxes dc = dc[1:] dc[:, 4] *= torch.exp(-iou ** 2 / sigma) # decay confidences - # dc = dc[dc[:, 4] > nms_thres] # new line per https://github.com/ultralytics/yolov3/issues/362 + dc = dc[dc[:, 4] > conf_thres] # https://github.com/ultralytics/yolov3/issues/362 if len(det_max): det_max = torch.cat(det_max) # concatenate From f6caec195de20d48c9a3634edcf5a46ab7ff291e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 3 Dec 2019 12:32:43 -0800 Subject: [PATCH 1668/2595] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 7b4d9efd..701ff54c 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -7,20 +7,19 @@ assignees: '' --- -**Describe the bug** +## 🐛 Bug A clear and concise description of what the bug is. -**To Reproduce** +## To Reproduce Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error +1. +2. +3. -**Expected behavior** +## Expected behavior A clear and concise description of what you expected to happen. -**Screenshots** +## Environment If applicable, add screenshots to help explain your problem. **Desktop (please complete the following information):** @@ -32,5 +31,5 @@ If applicable, add screenshots to help explain your problem. - OS: [e.g. iOS8.1] - Version [e.g. 22] -**Additional context** +## Additional context Add any other context about the problem here. From 89e908dbb315f152ec066bc44f7de852876f2f79 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 3 Dec 2019 12:35:00 -0800 Subject: [PATCH 1669/2595] Update issue templates --- .github/ISSUE_TEMPLATE/feature_request.md | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index 11fc491e..be8fea82 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -7,14 +7,21 @@ assignees: '' --- -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] +## 🚀 Feature + -**Describe the solution you'd like** -A clear and concise description of what you want to happen. +## Motivation -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. + -**Additional context** -Add any other context or screenshots about the feature request here. +## Pitch + + + +## Alternatives + + + +## Additional context + + From 384b2990997df9519221b5cb499fe165ac286bca Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 3 Dec 2019 12:35:57 -0800 Subject: [PATCH 1670/2595] Update issue templates --- .github/ISSUE_TEMPLATE/--bug-report.md | 35 +++++++++++++++++++++ .github/ISSUE_TEMPLATE/--feature-request.md | 27 ++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/--bug-report.md create mode 100644 .github/ISSUE_TEMPLATE/--feature-request.md diff --git a/.github/ISSUE_TEMPLATE/--bug-report.md b/.github/ISSUE_TEMPLATE/--bug-report.md new file mode 100644 index 00000000..7a589675 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/--bug-report.md @@ -0,0 +1,35 @@ +--- +name: "\U0001F41BBug report" +about: Create a report to help us improve +title: '' +labels: bug +assignees: '' + +--- + +## 🐛 Bug +A clear and concise description of what the bug is. + +## To Reproduce +Steps to reproduce the behavior: +1. +2. +3. + +## Expected behavior +A clear and concise description of what you expected to happen. + +## Environment +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + - OS: [e.g. iOS] + - Version [e.g. 22] + +**Smartphone (please complete the following information):** + - Device: [e.g. iPhoneXS] + - OS: [e.g. iOS8.1] + - Version [e.g. 22] + +## Additional context +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/--feature-request.md b/.github/ISSUE_TEMPLATE/--feature-request.md new file mode 100644 index 00000000..b16020d2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/--feature-request.md @@ -0,0 +1,27 @@ +--- +name: "\U0001F680Feature request" +about: Suggest an idea for this project +title: '' +labels: enhancement +assignees: '' + +--- + +## 🚀 Feature + + +## Motivation + + + +## Pitch + + + +## Alternatives + + + +## Additional context + + From 7bd828859c9b5dba07526829b545aff883489376 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 3 Dec 2019 12:36:26 -0800 Subject: [PATCH 1671/2595] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 35 ----------------------- .github/ISSUE_TEMPLATE/feature_request.md | 27 ----------------- 2 files changed, 62 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 701ff54c..00000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: '' -labels: bug -assignees: '' - ---- - -## 🐛 Bug -A clear and concise description of what the bug is. - -## To Reproduce -Steps to reproduce the behavior: -1. -2. -3. - -## Expected behavior -A clear and concise description of what you expected to happen. - -## Environment -If applicable, add screenshots to help explain your problem. - -**Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Version [e.g. 22] - -**Smartphone (please complete the following information):** - - Device: [e.g. iPhoneXS] - - OS: [e.g. iOS8.1] - - Version [e.g. 22] - -## Additional context -Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index be8fea82..00000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project -title: '' -labels: enhancement -assignees: '' - ---- - -## 🚀 Feature - - -## Motivation - - - -## Pitch - - - -## Alternatives - - - -## Additional context - - From c865d93403cefae822eac363490c4e6dcb1d1389 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 3 Dec 2019 12:50:04 -0800 Subject: [PATCH 1672/2595] updates --- README.md | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 83 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 87633b2d..879b4b7f 100755 --- a/README.md +++ b/README.md @@ -153,12 +153,93 @@ YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |512 |16.6
YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
33.1
37.0
**40.9** |35.4
58.2
60.7
**60.9** ```bash -$ python3 test.py --save-json --img-size 608 --nms-thres 0.7 --weights ultralytics68.pt +$ python3 test.py --save-json --img-size 608 --nms-thres 0.5 --weights ultralytics68.pt + Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', device='1', img_size=608, iou_thres=0.5, nms_thres=0.7, save_json=True, weights='ultralytics68.pt') Using CUDA device0 _CudaDeviceProperties(name='GeForce RTX 2080 Ti', total_memory=11019MB) Class Images Targets P R mAP@0.5 F1: 100%|███████████████████████████████████████████████████████████████████████████████████| 313/313 [09:46<00:00, 1.09it/s] - all 5e+03 3.58e+04 0.0481 0.829 0.589 0.0894 + all 5e+03 3.58e+04 0.0823 0.798 0.595 0.145 + person 5e+03 1.09e+04 0.0999 0.903 0.771 0.18 + bicycle 5e+03 316 0.0491 0.782 0.56 0.0925 + car 5e+03 1.67e+03 0.0552 0.845 0.646 0.104 + motorcycle 5e+03 391 0.11 0.847 0.704 0.194 + airplane 5e+03 131 0.099 0.947 0.878 0.179 + bus 5e+03 261 0.142 0.874 0.825 0.244 + train 5e+03 212 0.152 0.863 0.806 0.258 + truck 5e+03 352 0.0849 0.682 0.514 0.151 + boat 5e+03 475 0.0498 0.787 0.504 0.0937 + traffic light 5e+03 516 0.0304 0.752 0.516 0.0584 + fire hydrant 5e+03 83 0.144 0.916 0.882 0.248 + stop sign 5e+03 84 0.0833 0.917 0.809 0.153 + parking meter 5e+03 59 0.0607 0.695 0.611 0.112 + bench 5e+03 473 0.0294 0.685 0.363 0.0564 + bird 5e+03 469 0.0521 0.716 0.524 0.0972 + cat 5e+03 195 0.252 0.908 0.78 0.395 + dog 5e+03 223 0.192 0.883 0.829 0.315 + horse 5e+03 305 0.121 0.911 0.843 0.214 + sheep 5e+03 321 0.114 0.854 0.724 0.201 + cow 5e+03 384 0.105 0.849 0.695 0.187 + elephant 5e+03 284 0.184 0.944 0.912 0.308 + bear 5e+03 53 0.358 0.925 0.875 0.516 + zebra 5e+03 277 0.176 0.935 0.858 0.297 + giraffe 5e+03 170 0.171 0.959 0.892 0.29 + backpack 5e+03 384 0.0426 0.708 0.392 0.0803 + umbrella 5e+03 392 0.0672 0.878 0.65 0.125 + handbag 5e+03 483 0.0238 0.629 0.242 0.0458 + tie 5e+03 297 0.0419 0.805 0.599 0.0797 + suitcase 5e+03 310 0.0823 0.855 0.628 0.15 + frisbee 5e+03 109 0.126 0.872 0.796 0.221 + skis 5e+03 282 0.0473 0.748 0.454 0.089 + snowboard 5e+03 92 0.0579 0.804 0.559 0.108 + sports ball 5e+03 236 0.057 0.733 0.622 0.106 + kite 5e+03 399 0.087 0.852 0.645 0.158 + baseball bat 5e+03 125 0.0496 0.776 0.603 0.0932 + baseball glove 5e+03 139 0.0511 0.734 0.563 0.0956 + skateboard 5e+03 218 0.0655 0.844 0.73 0.122 + surfboard 5e+03 266 0.0709 0.827 0.651 0.131 + tennis racket 5e+03 183 0.0694 0.858 0.759 0.128 + bottle 5e+03 966 0.0484 0.812 0.513 0.0914 + wine glass 5e+03 366 0.0735 0.738 0.543 0.134 + cup 5e+03 897 0.0637 0.788 0.538 0.118 + fork 5e+03 234 0.0411 0.662 0.487 0.0774 + knife 5e+03 291 0.0334 0.557 0.292 0.0631 + spoon 5e+03 253 0.0281 0.621 0.307 0.0537 + bowl 5e+03 620 0.0624 0.795 0.514 0.116 + banana 5e+03 371 0.052 0.83 0.41 0.0979 + apple 5e+03 158 0.0293 0.741 0.262 0.0564 + sandwich 5e+03 160 0.0913 0.725 0.522 0.162 + orange 5e+03 189 0.0382 0.688 0.32 0.0723 + broccoli 5e+03 332 0.0513 0.88 0.445 0.097 + carrot 5e+03 346 0.0398 0.766 0.362 0.0757 + hot dog 5e+03 164 0.0958 0.646 0.494 0.167 + pizza 5e+03 224 0.0886 0.875 0.699 0.161 + donut 5e+03 237 0.0925 0.827 0.64 0.166 + cake 5e+03 241 0.0658 0.71 0.539 0.12 + chair 5e+03 1.62e+03 0.0432 0.793 0.489 0.0819 + couch 5e+03 236 0.118 0.801 0.584 0.205 + potted plant 5e+03 431 0.0373 0.852 0.505 0.0714 + bed 5e+03 195 0.149 0.846 0.693 0.253 + dining table 5e+03 634 0.0546 0.82 0.49 0.102 + toilet 5e+03 179 0.161 0.95 0.81 0.275 + tv 5e+03 257 0.0922 0.903 0.79 0.167 + laptop 5e+03 237 0.127 0.869 0.744 0.222 + mouse 5e+03 95 0.0648 0.863 0.732 0.12 + remote 5e+03 241 0.0436 0.788 0.535 0.0827 + keyboard 5e+03 117 0.0668 0.923 0.755 0.125 + cell phone 5e+03 291 0.0364 0.704 0.436 0.0692 + microwave 5e+03 88 0.154 0.841 0.743 0.261 + oven 5e+03 142 0.0618 0.803 0.576 0.115 + toaster 5e+03 11 0.0565 0.636 0.191 0.104 + sink 5e+03 211 0.0439 0.853 0.544 0.0835 + refrigerator 5e+03 107 0.0791 0.907 0.742 0.145 + book 5e+03 1.08e+03 0.0399 0.667 0.233 0.0753 + clock 5e+03 292 0.0542 0.836 0.733 0.102 + vase 5e+03 353 0.0675 0.799 0.591 0.125 + scissors 5e+03 56 0.0397 0.75 0.461 0.0755 + teddy bear 5e+03 245 0.0995 0.882 0.669 0.179 + hair drier 5e+03 11 0.00508 0.0909 0.0475 0.00962 + toothbrush 5e+03 77 0.0371 0.74 0.418 0.0706 Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.40882 Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.60026 From 896fd6d02541b5299c17d8a232b9952da2cf7fe7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 3 Dec 2019 12:52:19 -0800 Subject: [PATCH 1673/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 879b4b7f..4973a231 100755 --- a/README.md +++ b/README.md @@ -261,4 +261,4 @@ Using CUDA device0 _CudaDeviceProperties(name='GeForce RTX 2080 Ti', total_memor # Contact -Issues should be raised directly in the repository. For additional questions or comments please email Glenn Jocher at glenn.jocher@ultralytics.com or visit us at https://contact.ultralytics.com. +**Issues should be raised directly in the repository.** For additional questions or comments please email Glenn Jocher at glenn.jocher@ultralytics.com or visit us at https://contact.ultralytics.com. From 0dd0fa7938f605833c85084f7f184445ca0b6fee Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 3 Dec 2019 13:34:22 -0800 Subject: [PATCH 1674/2595] updates --- utils/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index ae02b9f9..f7b80187 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -449,7 +449,8 @@ def build_targets(model, targets): # Class tcls.append(c) if c.shape[0]: # if any targets - assert c.max() <= model.nc, 'Target classes exceed model classes' + assert c.max() <= model.nc, 'Model accepts %g classes labeled from 0-%g, however you supplied a label %g. \ + See https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data' % (model.nc, model.nc - 1, c.max()) return tcls, tbox, indices, av From fcdbd3ee350cf631c73d13df937a3487fe2464b1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 3 Dec 2019 13:49:20 -0800 Subject: [PATCH 1675/2595] updates --- utils/utils.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index f7b80187..fe143fdb 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -449,8 +449,9 @@ def build_targets(model, targets): # Class tcls.append(c) if c.shape[0]: # if any targets - assert c.max() <= model.nc, 'Model accepts %g classes labeled from 0-%g, however you supplied a label %g. \ - See https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data' % (model.nc, model.nc - 1, c.max()) + assert c.max() < model.nc, 'Model accepts %g classes labeled from 0-%g, however you labelled a class %g. ' \ + 'See https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data' % ( + model.nc, model.nc - 1, c.max()) return tcls, tbox, indices, av From cae901c2da791166ce766aa42139298f794d772f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 3 Dec 2019 15:34:20 -0800 Subject: [PATCH 1676/2595] updates --- models.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/models.py b/models.py index 6401ab6c..17ff234f 100755 --- a/models.py +++ b/models.py @@ -51,6 +51,7 @@ def create_modules(module_defs, img_size, arc): elif mdef['type'] == 'upsample': modules = nn.Upsample(scale_factor=int(mdef['stride']), mode='nearest') + # modules = Upsample(scale_factor=int(mdef['stride'])) elif mdef['type'] == 'route': # nn.Sequential() placeholder for 'route' layer layers = [int(x) for x in mdef['layers'].split(',')] @@ -141,6 +142,16 @@ class Mish(nn.Module): # https://github.com/digantamisra98/Mish return x.mul_(F.softplus(x).tanh()) +class Upsample(nn.Module): + def __init__(self, scale_factor): + super(Upsample, self).__init__() + self.scale = scale_factor + + def forward(self, x): + h, w = x.shape[2:] + return F.interpolate(x, size=(int(h * self.scale), int(w * self.scale))) + + class YOLOLayer(nn.Module): def __init__(self, anchors, nc, img_size, yolo_index, arc): super(YOLOLayer, self).__init__() From b9fa92d3f79f2dff2a97edc79914b66ae0ecfc63 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 3 Dec 2019 17:22:58 -0800 Subject: [PATCH 1677/2595] updates --- models.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/models.py b/models.py index 17ff234f..6159d776 100755 --- a/models.py +++ b/models.py @@ -185,18 +185,19 @@ class YOLOLayer(nn.Module): elif ONNX_EXPORT: # Constants CAN NOT BE BROADCAST, ensure correct shape! - ngu = self.ng.repeat((1, self.na * self.nx * self.ny, 1)) - grid_xy = self.grid_xy.repeat((1, self.na, 1, 1, 1)).view((1, -1, 2)) - anchor_wh = self.anchor_wh.repeat((1, 1, self.nx, self.ny, 1)).view((1, -1, 2)) / ngu + m = self.na * self.nx * self.ny + ngu = self.ng.repeat((1, m, 1)) + grid_xy = self.grid_xy.repeat((1, self.na, 1, 1, 1)).view(1, m, 2) + anchor_wh = self.anchor_wh.repeat((1, 1, self.nx, self.ny, 1)).view(1, m, 2) / ngu - p = p.view(-1, 5 + self.nc) + p = p.view(m, 5 + self.nc) xy = torch.sigmoid(p[..., 0:2]) + grid_xy[0] # x, y wh = torch.exp(p[..., 2:4]) * anchor_wh[0] # width, height p_conf = torch.sigmoid(p[:, 4:5]) # Conf p_cls = F.softmax(p[:, 5:85], 1) * p_conf # SSD-like conf return torch.cat((xy / ngu[0], wh, p_conf, p_cls), 1).t() - # p = p.view(1, -1, 5 + self.nc) + # p = p.view(1, m, 5 + self.nc) # xy = torch.sigmoid(p[..., 0:2]) + grid_xy # x, y # wh = torch.exp(p[..., 2:4]) * anchor_wh # width, height # p_conf = torch.sigmoid(p[..., 4:5]) # Conf @@ -278,7 +279,7 @@ class Darknet(nn.Module): elif ONNX_EXPORT: output = torch.cat(output, 1) # cat 3 layers 85 x (507, 2028, 8112) to 85 x 10647 nc = self.module_list[self.yolo_layers[0]].nc # number of classes - return output[5:5 + nc].t(), output[:4].t() # ONNX scores, boxes + return output[5:5 + nc].t(), output[0:4].t() # ONNX scores, boxes else: io, p = list(zip(*output)) # inference output, training output return torch.cat(io, 1), p From 24247450e22d86f6ccac14ad6e63e68d1d94ad78 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Dec 2019 09:07:38 -0800 Subject: [PATCH 1678/2595] updates --- cfg/yolov3-tiny-3cls.cfg | 182 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 182 insertions(+) create mode 100644 cfg/yolov3-tiny-3cls.cfg diff --git a/cfg/yolov3-tiny-3cls.cfg b/cfg/yolov3-tiny-3cls.cfg new file mode 100644 index 00000000..97c3720f --- /dev/null +++ b/cfg/yolov3-tiny-3cls.cfg @@ -0,0 +1,182 @@ +[net] +# Testing +batch=1 +subdivisions=1 +# Training +# batch=64 +# subdivisions=2 +width=416 +height=416 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=16 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=1 + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +########### + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=24 +activation=linear + + + +[yolo] +mask = 3,4,5 +anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 +classes=3 +num=6 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 8 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=24 +activation=linear + +[yolo] +mask = 0,1,2 +anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 +classes=3 +num=6 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 From 31b49cf8701cfe7eac37599431b79e2c3320b155 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Dec 2019 10:36:39 -0800 Subject: [PATCH 1679/2595] updates --- utils/datasets.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index dc12421b..b97ef7b4 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -576,15 +576,19 @@ def load_mosaic(self, index): # Concat/clip labels if len(labels4): labels4 = np.concatenate(labels4, 0) - np.clip(labels4[:, 1:], 0, 2 * s, out=labels4[:, 1:]) + # np.clip(labels4[:, 1:], 0, 2 * s, out=labels4[:, 1:]) # use before random_affine + np.clip(labels4[:, 1:], s / 2, 1.5 * s, out=labels4[:, 1:]) + labels4[:, 1:] -= s / 2 - # Augment - img4, labels4 = random_affine(img4, labels4, - degrees=self.hyp['degrees'], - translate=self.hyp['translate'], - scale=self.hyp['scale'], - shear=self.hyp['shear'], - border=-s // 2) # border to remove + img4 = img4[s // 2: int(s * 1.5), s // 2:int(s * 1.5)] + + # # Augment + # img4, labels4 = random_affine(img4, labels4, + # degrees=self.hyp['degrees'], + # translate=self.hyp['translate'], + # scale=self.hyp['scale'], + # shear=self.hyp['shear'], + # border=-s // 2) # border to remove return img4, labels4 From d2a9cc662ce9e2c0f204c27f8f85c940869d16d2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Dec 2019 11:19:17 -0800 Subject: [PATCH 1680/2595] updates --- utils/datasets.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index b97ef7b4..c3fdaea4 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -576,19 +576,19 @@ def load_mosaic(self, index): # Concat/clip labels if len(labels4): labels4 = np.concatenate(labels4, 0) - # np.clip(labels4[:, 1:], 0, 2 * s, out=labels4[:, 1:]) # use before random_affine - np.clip(labels4[:, 1:], s / 2, 1.5 * s, out=labels4[:, 1:]) - labels4[:, 1:] -= s / 2 + np.clip(labels4[:, 1:], 0, 2 * s, out=labels4[:, 1:]) # use before random_affine + # np.clip(labels4[:, 1:], s / 2, 1.5 * s, out=labels4[:, 1:]) + # labels4[:, 1:] -= s / 2 - img4 = img4[s // 2: int(s * 1.5), s // 2:int(s * 1.5)] + # img4 = img4[s // 2: int(s * 1.5), s // 2:int(s * 1.5)] - # # Augment - # img4, labels4 = random_affine(img4, labels4, - # degrees=self.hyp['degrees'], - # translate=self.hyp['translate'], - # scale=self.hyp['scale'], - # shear=self.hyp['shear'], - # border=-s // 2) # border to remove + # Augment + img4, labels4 = random_affine(img4, labels4, + degrees=self.hyp['degrees'], + translate=self.hyp['translate'], + scale=self.hyp['scale'], + shear=self.hyp['shear'], + border=-s // 2) # border to remove return img4, labels4 From 5a14f54b2dda80a3c79867cd487b3d08e9393b53 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Dec 2019 14:24:09 -0800 Subject: [PATCH 1681/2595] updates --- utils/datasets.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index c3fdaea4..97bf1234 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -376,14 +376,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Cache images into memory for faster training (~5GB) if cache_images and augment: # if training for i in tqdm(range(min(len(self.img_files), 10000)), desc='Reading images'): # max 10k images - img_path = self.img_files[i] - img = cv2.imread(img_path) # BGR - assert img is not None, 'Image Not Found ' + img_path - r = self.img_size / max(img.shape) # size ratio - if self.augment and r < 1: # if training (NOT testing), downsize to inference shape - h, w = img.shape[:2] - img = cv2.resize(img, (int(w * r), int(h * r)), interpolation=cv2.INTER_LINEAR) # or INTER_AREA - self.imgs[i] = img + self.imgs[i] = load_image(self, i) # Detect corrupted images https://medium.com/joelthchao/programmatically-detect-corrupted-image-8c1b2006c3d3 detect_corrupted_images = False From 54daa69adb48f4766f33c274740dcfe43957f808 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Dec 2019 15:10:16 -0800 Subject: [PATCH 1682/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 5a7fb59b..2593406c 100644 --- a/detect.py +++ b/detect.py @@ -43,7 +43,7 @@ def detect(save_txt=False, save_img=False): # Export mode if ONNX_EXPORT: img = torch.zeros((1, 3) + img_size) # (1, 3, 320, 192) - torch.onnx.export(model, img, 'weights/export.onnx', verbose=False, opset_version=11) + torch.onnx.export(model, img, 'weights/export.onnx', verbose=False, opset_version=10) # Validate exported model import onnx From a2dc8a6b5a113d8b4fd5bab7540030e404f5a8bf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Dec 2019 15:15:23 -0800 Subject: [PATCH 1683/2595] updates --- train.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index a13433ca..5a229907 100644 --- a/train.py +++ b/train.py @@ -199,9 +199,11 @@ def train(): # Dataloader batch_size = min(batch_size, len(dataset)) + nw = min([os.cpu_count(), batch_size if batch_size > 1 else 0, 16]) + print('Using %g dataloader workers' % nw) dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, - num_workers=min([os.cpu_count(), batch_size if batch_size > 1 else 0, 16]), + num_workers=nw, shuffle=not opt.rect, # Shuffle=True unless rectangular training is used pin_memory=True, collate_fn=dataset.collate_fn) From 0a04eb9ff10aff8e29169af2dab4ea5084082013 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Dec 2019 15:15:42 -0800 Subject: [PATCH 1684/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 5a229907..9aa6f683 100644 --- a/train.py +++ b/train.py @@ -199,7 +199,7 @@ def train(): # Dataloader batch_size = min(batch_size, len(dataset)) - nw = min([os.cpu_count(), batch_size if batch_size > 1 else 0, 16]) + nw = min([os.cpu_count(), batch_size if batch_size > 1 else 0, 16]) # number of workers print('Using %g dataloader workers' % nw) dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, From e27b124828642198581512d42b14f0afe181ecd5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Dec 2019 17:50:52 -0800 Subject: [PATCH 1685/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 6159d776..7cc82b58 100755 --- a/models.py +++ b/models.py @@ -194,7 +194,7 @@ class YOLOLayer(nn.Module): xy = torch.sigmoid(p[..., 0:2]) + grid_xy[0] # x, y wh = torch.exp(p[..., 2:4]) * anchor_wh[0] # width, height p_conf = torch.sigmoid(p[:, 4:5]) # Conf - p_cls = F.softmax(p[:, 5:85], 1) * p_conf # SSD-like conf + p_cls = F.softmax(p[:, 5:5 + self.nc], 1) * p_conf # SSD-like conf return torch.cat((xy / ngu[0], wh, p_conf, p_cls), 1).t() # p = p.view(1, m, 5 + self.nc) From 7f6bb9a39fc17edacb67caec95ac8010f693b3af Mon Sep 17 00:00:00 2001 From: Yonghye Kwon Date: Thu, 5 Dec 2019 16:02:10 +0900 Subject: [PATCH 1686/2595] efficient calling test dataloader during training (#688) * efficient calling test dataloader efficient calling test dataloader * efficient calling test dataloader during training efficient calling test dataloader during training * Update test.py * Update train.py * Update train.py --- test.py | 21 ++++++++++++--------- train.py | 21 +++++++++++++++++---- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/test.py b/test.py index 92c6c948..d7a9fbf5 100644 --- a/test.py +++ b/test.py @@ -17,7 +17,9 @@ def test(cfg, conf_thres=0.001, nms_thres=0.5, save_json=False, - model=None): + model=None, + names=None, + dataloader=None): # Initialize/load model and set device if model is None: device = torch_utils.select_device(opt.device, batch_size=batch_size) @@ -40,15 +42,16 @@ def test(cfg, verbose = False # Configure run - data = parse_data_cfg(data) - nc = int(data['classes']) # number of classes - test_path = data['valid'] # path to test images - names = load_classes(data['names']) # class names + if (dataloader and names) is None: + data = parse_data_cfg(data) + nc = int(data['classes']) # number of classes + test_path = data['valid'] # path to test images + names = load_classes(data['names']) # class names - # Dataloader - dataset = LoadImagesAndLabels(test_path, img_size, batch_size) - batch_size = min(batch_size, len(dataset)) - dataloader = DataLoader(dataset, + # Dataloader + dataset = LoadImagesAndLabels(test_path, img_size, batch_size) + batch_size = min(batch_size, len(dataset)) + dataloader = DataLoader(dataset, batch_size=batch_size, num_workers=min([os.cpu_count(), batch_size if batch_size > 1 else 0, 16]), pin_memory=True, diff --git a/train.py b/train.py index 9aa6f683..0ec33b86 100644 --- a/train.py +++ b/train.py @@ -73,7 +73,10 @@ def train(): data_dict = parse_data_cfg(data) train_path = data_dict['train'] nc = int(data_dict['classes']) # number of classes - + names = load_classes(data_dict['names']) + + test_path = data_dict['valid'] # path to test images + # Remove previous results for f in glob.glob('*_batch*.jpg') + glob.glob(results_file): os.remove(f) @@ -196,7 +199,9 @@ def train(): image_weights=opt.img_weights, cache_labels=True if epochs > 10 else False, cache_images=False if opt.prebias else opt.cache_images) - + + dataset_test = LoadImagesAndLabels(test_path, img_size, batch_size) + # Dataloader batch_size = min(batch_size, len(dataset)) nw = min([os.cpu_count(), batch_size if batch_size > 1 else 0, 16]) # number of workers @@ -207,6 +212,12 @@ def train(): shuffle=not opt.rect, # Shuffle=True unless rectangular training is used pin_memory=True, collate_fn=dataset.collate_fn) + dataloader_test = DataLoader(dataset_test, + batch_size=batch_size, + num_workers=min([os.cpu_count(), batch_size if batch_size > 1 else 0, 16]), + pin_memory=True, + collate_fn=dataloader_test.collate_fn) + # Start training model.nc = nc # attach number of classes to model @@ -316,12 +327,14 @@ def train(): if not (opt.notest or (opt.nosave and epoch < 10)) or final_epoch: with torch.no_grad(): results, maps = test.test(cfg, - data, + data = None, batch_size=batch_size, img_size=opt.img_size, model=model, conf_thres=0.001 if final_epoch and epoch > 0 else 0.1, # 0.1 for speed - save_json=final_epoch and epoch > 0 and 'coco.data' in data) + save_json=final_epoch and epoch > 0 and 'coco.data' in data, + names = names, + dataloader = dataloader_test) # Write epoch results with open(results_file, 'a') as f: From 63c2736c1267d197fa342cf1ac976451678b3065 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Dec 2019 23:02:32 -0800 Subject: [PATCH 1687/2595] updates --- test.py | 20 +++++++++++--------- train.py | 26 ++++++++++++++++++-------- utils/datasets.py | 30 ++++++++++++++++-------------- 3 files changed, 45 insertions(+), 31 deletions(-) diff --git a/test.py b/test.py index 92c6c948..9ffa82e2 100644 --- a/test.py +++ b/test.py @@ -17,7 +17,8 @@ def test(cfg, conf_thres=0.001, nms_thres=0.5, save_json=False, - model=None): + model=None, + dataloader=None): # Initialize/load model and set device if model is None: device = torch_utils.select_device(opt.device, batch_size=batch_size) @@ -46,13 +47,14 @@ def test(cfg, names = load_classes(data['names']) # class names # Dataloader - dataset = LoadImagesAndLabels(test_path, img_size, batch_size) - batch_size = min(batch_size, len(dataset)) - dataloader = DataLoader(dataset, - batch_size=batch_size, - num_workers=min([os.cpu_count(), batch_size if batch_size > 1 else 0, 16]), - pin_memory=True, - collate_fn=dataset.collate_fn) + if dataloader is None: + dataset = LoadImagesAndLabels(test_path, img_size, batch_size, rect=True) + batch_size = min(batch_size, len(dataset)) + dataloader = DataLoader(dataset, + batch_size=batch_size, + num_workers=min([os.cpu_count(), batch_size if batch_size > 1 else 0, 8]), + pin_memory=True, + collate_fn=dataset.collate_fn) seen = 0 model.eval() @@ -167,7 +169,7 @@ def test(cfg, # Save JSON if save_json and map and len(jdict): - imgIds = [int(Path(x).stem.split('_')[-1]) for x in dataset.img_files] + imgIds = [int(Path(x).stem.split('_')[-1]) for x in dataloader.dataset.img_files] with open('results.json', 'w') as file: json.dump(jdict, file) diff --git a/train.py b/train.py index 9aa6f683..b7d87f6f 100644 --- a/train.py +++ b/train.py @@ -72,6 +72,7 @@ def train(): # Configure run data_dict = parse_data_cfg(data) train_path = data_dict['train'] + test_path = data_dict['valid'] nc = int(data_dict['classes']) # number of classes # Remove previous results @@ -187,19 +188,17 @@ def train(): model.yolo_layers = model.module.yolo_layers # move yolo layer indices to top level # Dataset - dataset = LoadImagesAndLabels(train_path, - img_size, - batch_size, + dataset = LoadImagesAndLabels(train_path, img_size, batch_size, augment=True, hyp=hyp, # augmentation hyperparameters rect=opt.rect, # rectangular training image_weights=opt.img_weights, - cache_labels=True if epochs > 10 else False, - cache_images=False if opt.prebias else opt.cache_images) + cache_labels=epochs > 10, + cache_images=opt.cache_images and not opt.prebias) # Dataloader batch_size = min(batch_size, len(dataset)) - nw = min([os.cpu_count(), batch_size if batch_size > 1 else 0, 16]) # number of workers + nw = min([os.cpu_count(), batch_size if batch_size > 1 else 0, 8]) # number of workers print('Using %g dataloader workers' % nw) dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, @@ -208,13 +207,23 @@ def train(): pin_memory=True, collate_fn=dataset.collate_fn) + # Test Dataloader + if not opt.prebias: + testloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path, img_size, batch_size, hyp=hyp, + cache_labels=True, + cache_images=opt.cache_images), + batch_size=batch_size, + num_workers=nw, + pin_memory=True, + collate_fn=dataset.collate_fn) + # Start training + nb = len(dataloader) model.nc = nc # attach number of classes to model model.arc = opt.arc # attach yolo architecture model.hyp = hyp # attach hyperparameters to model model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights torch_utils.model_info(model, report='summary') # 'full' or 'summary' - nb = len(dataloader) maps = np.zeros(nc) # mAP per class # torch.autograd.set_detect_anomaly(True) results = (0, 0, 0, 0, 0, 0, 0) # 'P', 'R', 'mAP', 'F1', 'val GIoU', 'val Objectness', 'val Classification' @@ -321,7 +330,8 @@ def train(): img_size=opt.img_size, model=model, conf_thres=0.001 if final_epoch and epoch > 0 else 0.1, # 0.1 for speed - save_json=final_epoch and epoch > 0 and 'coco.data' in data) + save_json=final_epoch and epoch > 0 and 'coco.data' in data, + dataloader=testloader) # Write epoch results with open(results_file, 'a') as f: diff --git a/utils/datasets.py b/utils/datasets.py index 97bf1234..0a4ad7c7 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -255,7 +255,7 @@ class LoadStreams: # multiple IP or RTSP cameras class LoadImagesAndLabels(Dataset): # for training/testing - def __init__(self, path, img_size=416, batch_size=16, augment=False, hyp=None, rect=True, image_weights=False, + def __init__(self, path, img_size=416, batch_size=16, augment=False, hyp=None, rect=False, image_weights=False, cache_labels=False, cache_images=False): path = str(Path(path)) # os-agnostic with open(path, 'r') as f: @@ -319,7 +319,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing self.labels = [np.zeros((0, 5))] * n extract_bounding_boxes = False create_datasubset = False - pbar = tqdm(self.label_files, desc='Reading labels') + pbar = tqdm(self.label_files, desc='Caching labels') nm, nf, ne, ns = 0, 0, 0, 0 # number missing, number found, number empty, number datasubset for i, file in enumerate(pbar): try: @@ -370,13 +370,17 @@ class LoadImagesAndLabels(Dataset): # for training/testing ne += 1 # print('empty labels for image %s' % self.img_files[i]) # file empty # os.system("rm '%s' '%s'" % (self.img_files[i], self.label_files[i])) # remove - pbar.desc = 'Reading labels (%g found, %g missing, %g empty for %g images)' % (nf, nm, ne, n) + pbar.desc = 'Caching labels (%g found, %g missing, %g empty for %g images)' % (nf, nm, ne, n) assert nf > 0, 'No labels found. Recommend correcting image and label paths.' - # Cache images into memory for faster training (~5GB) - if cache_images and augment: # if training - for i in tqdm(range(min(len(self.img_files), 10000)), desc='Reading images'): # max 10k images + # Cache images into memory for faster training (WARNING: Large datasets may exceed system RAM) + if cache_images: # if training + gb = 0 # Gigabytes of cached images + pbar = tqdm(range(len(self.img_files)), desc='Caching images') + for i in pbar: # max 10k images self.imgs[i] = load_image(self, i) + gb += self.imgs[i].nbytes + pbar.desc = 'Caching images (%.1fGB)' % (gb / 1E9) # Detect corrupted images https://medium.com/joelthchao/programmatically-detect-corrupted-image-8c1b2006c3d3 detect_corrupted_images = False @@ -503,10 +507,10 @@ def load_image(self, index): img_path = self.img_files[index] img = cv2.imread(img_path) # BGR assert img is not None, 'Image Not Found ' + img_path - r = self.img_size / max(img.shape) # size ratio - if self.augment: # if training (NOT testing), downsize to inference shape + r = self.img_size / max(img.shape) # resize image to img_size + if (r < 1) or ((r > 1) and self.augment): # always resize down, only resize up if training with augmentation h, w = img.shape[:2] - img = cv2.resize(img, (int(w * r), int(h * r)), interpolation=cv2.INTER_LINEAR) # _LINEAR fastest + return cv2.resize(img, (int(w * r), int(h * r)), interpolation=cv2.INTER_LINEAR) # _LINEAR fastest return img @@ -569,13 +573,11 @@ def load_mosaic(self, index): # Concat/clip labels if len(labels4): labels4 = np.concatenate(labels4, 0) - np.clip(labels4[:, 1:], 0, 2 * s, out=labels4[:, 1:]) # use before random_affine - # np.clip(labels4[:, 1:], s / 2, 1.5 * s, out=labels4[:, 1:]) - # labels4[:, 1:] -= s / 2 - - # img4 = img4[s // 2: int(s * 1.5), s // 2:int(s * 1.5)] + # np.clip(labels4[:, 1:] - s / 2, 0, s, out=labels4[:, 1:]) # use with center crop + np.clip(labels4[:, 1:], 0, 2 * s, out=labels4[:, 1:]) # use with random_affine # Augment + # img4 = img4[s // 2: int(s * 1.5), s // 2:int(s * 1.5)] # center crop (WARNING, requires box pruning) img4, labels4 = random_affine(img4, labels4, degrees=self.hyp['degrees'], translate=self.hyp['translate'], From 2421f3e252395d038a7be6f3c0b5cb6a78a92b45 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 5 Dec 2019 00:17:27 -0800 Subject: [PATCH 1688/2595] updates --- utils/datasets.py | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 0a4ad7c7..4d87f28f 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -758,24 +758,28 @@ def reduce_img_size(path='../data/sm4/images', img_size=1024): # from utils.dat print('WARNING: image failure %s' % f) -def convert_images2bmp(): - # cv2.imread() jpg at 230 img/s, *.bmp at 400 img/s - for path in ['../coco/images/val2014/', '../coco/images/train2014/']: - folder = os.sep + Path(path).name - output = path.replace(folder, folder + 'bmp') - create_folder(output) +def convert_images2bmp(): # from utils.datasets import *; convert_images2bmp() + # Save images + formats = [x.lower() for x in img_formats] + [x.upper() for x in img_formats] + # for path in ['../coco/images/val2014', '../coco/images/train2014']: + for path in ['../data/sm4/images', '../data/sm4/background']: + create_folder(path + 'bmp') + for ext in formats: # ['.bmp', '.jpg', '.jpeg', '.png', '.tif', '.dng'] + for f in tqdm(glob.glob('%s/*%s' % (path, ext)), desc='Converting %s' % ext): + cv2.imwrite(f.replace(ext.lower(), '.bmp').replace(path, path + 'bmp'), cv2.imread(f)) - for f in tqdm(glob.glob('%s*.jpg' % path)): - save_name = f.replace('.jpg', '.bmp').replace(folder, folder + 'bmp') - cv2.imwrite(save_name, cv2.imread(f)) - - for label_path in ['../coco/trainvalno5k.txt', '../coco/5k.txt']: - with open(label_path, 'r') as file: - lines = file.read() - lines = lines.replace('2014/', '2014bmp/').replace('.jpg', '.bmp').replace( - '/Users/glennjocher/PycharmProjects/', '../') - with open(label_path.replace('5k', '5k_bmp'), 'w') as file: - file.write(lines) + # Save labels + # for path in ['../coco/trainvalno5k.txt', '../coco/5k.txt']: + for file in ['../data/sm4/out_train.txt', '../data/sm4/out_test.txt']: + with open(file, 'r') as f: + lines = f.read() + # lines = f.read().replace('2014/', '2014bmp/') # coco + lines = lines.replace('/images', '/imagesbmp') + lines = lines.replace('/background', '/backgroundbmp') + for ext in formats: + lines = lines.replace(ext, '.bmp') + with open(file.replace('.txt', 'bmp.txt'), 'w') as f: + f.write(lines) def imagelist2folder(path='data/coco_64img.txt'): # from utils.datasets import *; imagelist2folder() From 035faa669423ebc72a7179a0589126f4c91e064b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 5 Dec 2019 00:35:07 -0800 Subject: [PATCH 1689/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 4d87f28f..ef706812 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -508,7 +508,7 @@ def load_image(self, index): img = cv2.imread(img_path) # BGR assert img is not None, 'Image Not Found ' + img_path r = self.img_size / max(img.shape) # resize image to img_size - if (r < 1) or ((r > 1) and self.augment): # always resize down, only resize up if training with augmentation + if self.augment and (r != 1): # always resize down, only resize up if training with augmentation h, w = img.shape[:2] return cv2.resize(img, (int(w * r), int(h * r)), interpolation=cv2.INTER_LINEAR) # _LINEAR fastest return img From d08cdad4af8a24debf552c2b3144d616e9b7b98a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 5 Dec 2019 11:01:10 -0800 Subject: [PATCH 1690/2595] updates --- README.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 4973a231..9f1fd365 100755 --- a/README.md +++ b/README.md @@ -241,18 +241,18 @@ Using CUDA device0 _CudaDeviceProperties(name='GeForce RTX 2080 Ti', total_memor hair drier 5e+03 11 0.00508 0.0909 0.0475 0.00962 toothbrush 5e+03 77 0.0371 0.74 0.418 0.0706 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.40882 - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.60026 - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.44551 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.24343 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.45024 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.51362 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.32644 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.53629 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.59343 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.42207 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.63985 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.70688 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.409 + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.600 + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.446 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.243 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.450 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.514 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.326 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.536 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.593 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.422 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.640 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.707 ``` # Citation From 6340074c2a1890100007cf66cb71e6a07b1531b8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 5 Dec 2019 20:24:42 -0800 Subject: [PATCH 1691/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index fe143fdb..0c2c2066 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -359,7 +359,7 @@ def compute_loss(p, targets, model): # predictions, targets, model # GIoU pxy = torch.sigmoid(ps[:, 0:2]) # pxy = pxy * s - (s - 1) / 2, s = 1.5 (scale_xy) - pbox = torch.cat((pxy, torch.exp(ps[:, 2:4]).clamp(max=1E4) * anchor_vec[i]), 1) # predicted box + pbox = torch.cat((pxy, torch.exp(ps[:, 2:4]).clamp(max=1E3) * anchor_vec[i]), 1) # predicted box giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation lbox += (1.0 - giou).mean() # giou loss From d00a91aa1b4be561a3c135fe44fecb47e933d932 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 6 Dec 2019 11:02:02 -0800 Subject: [PATCH 1692/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 0c2c2066..a289ea55 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -464,7 +464,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): (x1, y1, x2, y2, object_conf, class_conf, class) """ - min_wh, max_wh = 2, 30000 # (pixels) minimum and maximium box width and height + min_wh, max_wh = 2, 10000 # (pixels) minimum and maximium box width and height output = [None] * len(prediction) for image_i, pred in enumerate(prediction): From 61e3fc1f8e53ed541d6a8dc905e59a4611dc5335 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 6 Dec 2019 12:56:22 -0800 Subject: [PATCH 1693/2595] updates --- models.py | 36 ++++++++++++++---------------------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/models.py b/models.py index 7cc82b58..b61e398b 100755 --- a/models.py +++ b/models.py @@ -440,29 +440,21 @@ def attempt_download(weights): msg = weights + ' missing, download from https://drive.google.com/open?id=1LezFG5g3BCW6iYaV89B2i64cqEUZD7e0' if weights and not os.path.isfile(weights): file = Path(weights).name + d = {'yolov3-spp.weights': '16lYS4bcIdM2HdmyJBVDOvt3Trx6N3W2R', + 'yolov3.weights': '1uTlyDWlnaqXcsKOktP5aH_zRDbfcDp-y', + 'yolov3-tiny.weights': '1CCF-iNIIkYesIDzaPvdwlcf7H9zSsKZQ', + 'yolov3-spp.pt': '1f6Ovy3BSq2wYq4UfvFUpxJFNDFfrIDcR', + 'yolov3.pt': '1SHNFyoe5Ni8DajDNEqgB2oVKBb_NoEad', + 'yolov3-tiny.pt': '10m_3MlpQwRtZetQxtksm9jqHrPTHZ6vo', + 'darknet53.conv.74': '1WUVBid-XuoUBmvzBVUCBl_ELrzqwA8dJ', + 'yolov3-tiny.conv.15': '1Bw0kCpplxUqyRYAJr9RY9SGnOJbo9nEj', + 'ultralytics49.pt': '158g62Vs14E3aj7oPVPuEnNZMKFNgGyNq', + 'ultralytics68.pt': '1Jm8kqnMdMGUUxGo8zMFZMJ0eaPwLkxSG'} - if file == 'yolov3-spp.weights': - gdrive_download(id='16lYS4bcIdM2HdmyJBVDOvt3Trx6N3W2R', name=weights) - elif file == 'yolov3.weights': - gdrive_download(id='1uTlyDWlnaqXcsKOktP5aH_zRDbfcDp-y', name=weights) - elif file == 'yolov3-tiny.weights': - gdrive_download(id='1CCF-iNIIkYesIDzaPvdwlcf7H9zSsKZQ', name=weights) - elif file == 'yolov3-spp.pt': - gdrive_download(id='1f6Ovy3BSq2wYq4UfvFUpxJFNDFfrIDcR', name=weights) - elif file == 'yolov3.pt': - gdrive_download(id='1SHNFyoe5Ni8DajDNEqgB2oVKBb_NoEad', name=weights) - elif file == 'yolov3-tiny.pt': - gdrive_download(id='10m_3MlpQwRtZetQxtksm9jqHrPTHZ6vo', name=weights) - elif file == 'darknet53.conv.74': - gdrive_download(id='1WUVBid-XuoUBmvzBVUCBl_ELrzqwA8dJ', name=weights) - elif file == 'yolov3-tiny.conv.15': - gdrive_download(id='1Bw0kCpplxUqyRYAJr9RY9SGnOJbo9nEj', name=weights) - elif file == 'ultralytics49.pt': - gdrive_download(id='158g62Vs14E3aj7oPVPuEnNZMKFNgGyNq', name=weights) - elif file == 'ultralytics68.pt': - gdrive_download(id='1Jm8kqnMdMGUUxGo8zMFZMJ0eaPwLkxSG', name=weights) - else: - try: # download from pjreddie.com + if weights in d: + gdrive_download(id=d[weights], name=weights) + else: # download from pjreddie.com + try: url = 'https://pjreddie.com/media/files/' + file print('Downloading ' + url) os.system('curl -f ' + url + ' -o ' + weights) From 6067b226050ac14d651ef1b0f40069a38bf8404f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 6 Dec 2019 13:30:14 -0800 Subject: [PATCH 1694/2595] updates --- utils/google_utils.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/utils/google_utils.py b/utils/google_utils.py index 303265b4..fc2bc34f 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -23,12 +23,18 @@ def gdrive_download(id='1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO', name='coco.zip'): "curl -Lb ./cookie -s \"https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=%s\" -o %s" % ( id, name), 'rm ./cookie'] - [os.system(x) for x in s] # run commands + r = sum([os.system(x) for x in s]) # run commands, get return zeros # Attempt small file download if not os.path.exists(name): # file size < 40MB s = 'curl -f -L -o %s https://drive.google.com/uc?export=download&id=%s' % (name, id) - os.system(s) + r = os.system(s) + + # Check for errors + if r != 0: + os.system('rm ' + name) # remove partial downloads + print('ERROR: Download failure. ') + return # Unzip if archive if name.endswith('.zip'): From ef133382c5ac2c1b5704b113c25c5cbf4786a7ce Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 6 Dec 2019 13:44:13 -0800 Subject: [PATCH 1695/2595] updates --- models.py | 26 ++++++++++++-------------- utils/google_utils.py | 7 ++++--- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/models.py b/models.py index b61e398b..6dd1aa6f 100755 --- a/models.py +++ b/models.py @@ -436,10 +436,11 @@ def convert(cfg='cfg/yolov3-spp.cfg', weights='weights/yolov3-spp.weights'): def attempt_download(weights): # Attempt to download pretrained weights if not found locally + file = Path(weights).name + msg = weights + ' missing, try downloading from https://drive.google.com/open?id=1LezFG5g3BCW6iYaV89B2i64cqEUZD7e0' + r = 1 # error value - msg = weights + ' missing, download from https://drive.google.com/open?id=1LezFG5g3BCW6iYaV89B2i64cqEUZD7e0' if weights and not os.path.isfile(weights): - file = Path(weights).name d = {'yolov3-spp.weights': '16lYS4bcIdM2HdmyJBVDOvt3Trx6N3W2R', 'yolov3.weights': '1uTlyDWlnaqXcsKOktP5aH_zRDbfcDp-y', 'yolov3-tiny.weights': '1CCF-iNIIkYesIDzaPvdwlcf7H9zSsKZQ', @@ -451,17 +452,14 @@ def attempt_download(weights): 'ultralytics49.pt': '158g62Vs14E3aj7oPVPuEnNZMKFNgGyNq', 'ultralytics68.pt': '1Jm8kqnMdMGUUxGo8zMFZMJ0eaPwLkxSG'} - if weights in d: - gdrive_download(id=d[weights], name=weights) + if file in d: + r = gdrive_download(id=d[file], name=weights) else: # download from pjreddie.com - try: - url = 'https://pjreddie.com/media/files/' + file - print('Downloading ' + url) - os.system('curl -f ' + url + ' -o ' + weights) - except IOError: - print(msg) - os.system('rm ' + weights) # remove partial downloads + url = 'https://pjreddie.com/media/files/' + file + print('Downloading ' + url) + r = os.system('curl -f ' + url + ' -o ' + weights) - if os.path.getsize(weights) < 5E6: # weights < 5MB (too small), download failed - os.remove(weights) # delete corrupted weightsfile - assert os.path.exists(weights), msg # download missing weights from Google Drive + # Error check + if not (r == 0 and os.path.exists(weights) and os.path.getsize(weights) > 1E6): # weights exist and > 1MB + os.system('rm ' + weights) # remove partial downloads + raise Exception(msg) diff --git a/utils/google_utils.py b/utils/google_utils.py index fc2bc34f..92fde590 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -30,11 +30,11 @@ def gdrive_download(id='1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO', name='coco.zip'): s = 'curl -f -L -o %s https://drive.google.com/uc?export=download&id=%s' % (name, id) r = os.system(s) - # Check for errors + # Error check if r != 0: os.system('rm ' + name) # remove partial downloads - print('ERROR: Download failure. ') - return + print('ERROR: Download failure ') + return r # Unzip if archive if name.endswith('.zip'): @@ -43,6 +43,7 @@ def gdrive_download(id='1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO', name='coco.zip'): os.remove(name) # remove zip to free space print('Done (%.1fs)' % (time.time() - t)) + return r def upload_blob(bucket_name, source_file_name, destination_blob_name): From c702916495000e93809d55683f2603d9975f847a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 6 Dec 2019 13:47:17 -0800 Subject: [PATCH 1696/2595] updates --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 6dd1aa6f..bbc1c057 100755 --- a/models.py +++ b/models.py @@ -436,10 +436,9 @@ def convert(cfg='cfg/yolov3-spp.cfg', weights='weights/yolov3-spp.weights'): def attempt_download(weights): # Attempt to download pretrained weights if not found locally - file = Path(weights).name msg = weights + ' missing, try downloading from https://drive.google.com/open?id=1LezFG5g3BCW6iYaV89B2i64cqEUZD7e0' - r = 1 # error value + r = 1 # error value if weights and not os.path.isfile(weights): d = {'yolov3-spp.weights': '16lYS4bcIdM2HdmyJBVDOvt3Trx6N3W2R', 'yolov3.weights': '1uTlyDWlnaqXcsKOktP5aH_zRDbfcDp-y', @@ -452,6 +451,7 @@ def attempt_download(weights): 'ultralytics49.pt': '158g62Vs14E3aj7oPVPuEnNZMKFNgGyNq', 'ultralytics68.pt': '1Jm8kqnMdMGUUxGo8zMFZMJ0eaPwLkxSG'} + file = Path(weights).name if file in d: r = gdrive_download(id=d[file], name=weights) else: # download from pjreddie.com From 3bd00360bcd8b8473b217d46dab643399c0ac1fe Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 6 Dec 2019 13:50:16 -0800 Subject: [PATCH 1697/2595] updates --- models.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/models.py b/models.py index bbc1c057..b1431080 100755 --- a/models.py +++ b/models.py @@ -438,7 +438,6 @@ def attempt_download(weights): # Attempt to download pretrained weights if not found locally msg = weights + ' missing, try downloading from https://drive.google.com/open?id=1LezFG5g3BCW6iYaV89B2i64cqEUZD7e0' - r = 1 # error value if weights and not os.path.isfile(weights): d = {'yolov3-spp.weights': '16lYS4bcIdM2HdmyJBVDOvt3Trx6N3W2R', 'yolov3.weights': '1uTlyDWlnaqXcsKOktP5aH_zRDbfcDp-y', @@ -459,7 +458,7 @@ def attempt_download(weights): print('Downloading ' + url) r = os.system('curl -f ' + url + ' -o ' + weights) - # Error check - if not (r == 0 and os.path.exists(weights) and os.path.getsize(weights) > 1E6): # weights exist and > 1MB - os.system('rm ' + weights) # remove partial downloads - raise Exception(msg) + # Error check + if not (r == 0 and os.path.exists(weights) and os.path.getsize(weights) > 1E6): # weights exist and > 1MB + os.system('rm ' + weights) # remove partial downloads + raise Exception(msg) From 5e747f8da97eecd246865466a88c9771dabfe703 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 6 Dec 2019 14:13:07 -0800 Subject: [PATCH 1698/2595] updates --- requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index bb6e49e9..0c1c9256 100755 --- a/requirements.txt +++ b/requirements.txt @@ -13,7 +13,7 @@ Pillow # Equivalent conda commands ---------------------------------------------------- # conda update -n base -c defaults conda -# conda install -yc anaconda future numpy opencv matplotlib tqdm pillow -# conda install -yc conda-forge scikit-image pycocotools tensorboard +# conda install -yc anaconda numpy opencv matplotlib tqdm pillow future +# conda install -yc conda-forge scikit-image pycocotools onnx tensorboard # conda install -yc spyder-ide spyder-line-profiler # conda install -yc pytorch pytorch torchvision From af8af1ce6868540ca31c895151f145b1d76402c6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 6 Dec 2019 16:35:15 -0800 Subject: [PATCH 1699/2595] updates --- models.py | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/models.py b/models.py index b1431080..330f4621 100755 --- a/models.py +++ b/models.py @@ -51,7 +51,6 @@ def create_modules(module_defs, img_size, arc): elif mdef['type'] == 'upsample': modules = nn.Upsample(scale_factor=int(mdef['stride']), mode='nearest') - # modules = Upsample(scale_factor=int(mdef['stride'])) elif mdef['type'] == 'route': # nn.Sequential() placeholder for 'route' layer layers = [int(x) for x in mdef['layers'].split(',')] @@ -142,16 +141,6 @@ class Mish(nn.Module): # https://github.com/digantamisra98/Mish return x.mul_(F.softplus(x).tanh()) -class Upsample(nn.Module): - def __init__(self, scale_factor): - super(Upsample, self).__init__() - self.scale = scale_factor - - def forward(self, x): - h, w = x.shape[2:] - return F.interpolate(x, size=(int(h * self.scale), int(w * self.scale))) - - class YOLOLayer(nn.Module): def __init__(self, anchors, nc, img_size, yolo_index, arc): super(YOLOLayer, self).__init__() From ddaadf1bf99c4c0097ee11dc1e7a5f537e282bca Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 6 Dec 2019 17:24:15 -0800 Subject: [PATCH 1700/2595] updates --- data/get_coco_dataset_gdrive.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/data/get_coco_dataset_gdrive.sh b/data/get_coco_dataset_gdrive.sh index c965e487..f280516f 100755 --- a/data/get_coco_dataset_gdrive.sh +++ b/data/get_coco_dataset_gdrive.sh @@ -1,6 +1,4 @@ #!/bin/bash -# https://stackoverflow.com/questions/48133080/how-to-download-a-google-drive-url-via-curl-or-wget/48133859 - # Zip coco folder # zip -r coco.zip coco # tar -czvf coco.tar.gz coco From 4988397458f48520276426435ae18f29afcfbc9c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 6 Dec 2019 17:31:07 -0800 Subject: [PATCH 1701/2595] updates --- Dockerfile | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 040a9a57..4738ad58 100644 --- a/Dockerfile +++ b/Dockerfile @@ -36,10 +36,9 @@ WORKDIR /usr/src/app COPY . /usr/src/app # Copy weights -#RUN python3 -c "from utils.google_utils import *; \ -# gdrive_download(id='18xqvs_uwAqfTXp-LJCYLYNHBOcrwbrp0', name='weights/darknet53.conv.74'); \ -# gdrive_download(id='1oPCHKsM2JpM-zgyepQciGli9X0MTsJCO', name='weights/yolov3-spp.weights'); \ -# gdrive_download(id='1vFlbJ_dXPvtwaLLOu-twnjK4exdFiQ73', name='weights/yolov3-spp.pt)" +#RUN python3 -c "from models import *; \ +#attempt_download('weights/yolov3.pt'); \ +#attempt_download('weights/yolov3-spp.pt')" # --------------------------------------------------- Extras Below --------------------------------------------------- From f2d47c125608523d2e8f65d4a2db475c154f9b56 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 6 Dec 2019 17:33:17 -0800 Subject: [PATCH 1702/2595] updates --- weights/download_yolov3_weights.sh | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/weights/download_yolov3_weights.sh b/weights/download_yolov3_weights.sh index 0568cb87..a6f709b5 100644 --- a/weights/download_yolov3_weights.sh +++ b/weights/download_yolov3_weights.sh @@ -1,20 +1,25 @@ #!/bin/bash # make '/weights' directory if it does not exist and cd into it -mkdir -p weights && cd weights +# mkdir -p weights && cd weights # copy darknet weight files, continue '-c' if partially downloaded -wget -c https://pjreddie.com/media/files/yolov3.weights -wget -c https://pjreddie.com/media/files/yolov3-tiny.weights -wget -c https://pjreddie.com/media/files/yolov3-spp.weights +# wget -c https://pjreddie.com/media/files/yolov3.weights +# wget -c https://pjreddie.com/media/files/yolov3-tiny.weights +# wget -c https://pjreddie.com/media/files/yolov3-spp.weights # yolov3 pytorch weights # download from Google Drive: https://drive.google.com/drive/folders/1uxgUBemJVw9wZsdpboYbzUN4bcRhsuAI # darknet53 weights (first 75 layers only) -wget -c https://pjreddie.com/media/files/darknet53.conv.74 +# wget -c https://pjreddie.com/media/files/darknet53.conv.74 # yolov3-tiny weights from darknet (first 16 layers only) # ./darknet partial cfg/yolov3-tiny.cfg yolov3-tiny.weights yolov3-tiny.conv.15 15 # mv yolov3-tiny.conv.15 ../ +# new method +python3 -c "from models import *; +attempt_download('weights/yolov3.pt'); +attempt_download('weights/yolov3-spp.pt')" + From 115b3333714d46c187c1d9355f24b0ec4bd5500f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 6 Dec 2019 17:33:32 -0800 Subject: [PATCH 1703/2595] updates --- weights/download_yolov3_weights.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/weights/download_yolov3_weights.sh b/weights/download_yolov3_weights.sh index a6f709b5..8b96a1e0 100644 --- a/weights/download_yolov3_weights.sh +++ b/weights/download_yolov3_weights.sh @@ -22,4 +22,3 @@ python3 -c "from models import *; attempt_download('weights/yolov3.pt'); attempt_download('weights/yolov3-spp.pt')" - From a066a7b8eaf2f18cc54495d119af57b1aff2f901 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 6 Dec 2019 19:05:51 -0800 Subject: [PATCH 1704/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index b7d87f6f..3feb68b9 100644 --- a/train.py +++ b/train.py @@ -321,8 +321,8 @@ def train(): if opt.prebias: print_model_biases(model) else: - # Calculate mAP (always test final epoch, skip first 10 if opt.nosave) - if not (opt.notest or (opt.nosave and epoch < 10)) or final_epoch: + # Calculate mAP + if not opt.notest or final_epoch: with torch.no_grad(): results, maps = test.test(cfg, data, From 2c0985f36646a311d4a439ab62c27d7922bab7ef Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 6 Dec 2019 23:58:47 -0800 Subject: [PATCH 1705/2595] updates --- train.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/train.py b/train.py index 3feb68b9..434daba3 100644 --- a/train.py +++ b/train.py @@ -21,24 +21,24 @@ best = wdir + 'best.pt' results_file = 'results.txt' # Hyperparameters (results68: 59.2 mAP@0.5 yolov3-spp-416) https://github.com/ultralytics/yolov3/issues/310 -hyp = {'giou': 3.31, # giou loss gain - 'cls': 42.4, # cls loss gain +hyp = {'giou': 3.54, # giou loss gain + 'cls': 37.4, # cls loss gain 'cls_pw': 1.0, # cls BCELoss positive_weight - 'obj': 52.0, # obj loss gain (*=img_size/416 if img_size != 416) + 'obj': 64.3, # obj loss gain (*=img_size/416 if img_size != 416) 'obj_pw': 1.0, # obj BCELoss positive_weight - 'iou_t': 0.213, # iou training threshold - 'lr0': 0.00261, # initial learning rate (SGD=1E-3, Adam=9E-5) + 'iou_t': 0.225, # iou training threshold + 'lr0': 0.00579, # initial learning rate (SGD=1E-3, Adam=9E-5) 'lrf': -4., # final LambdaLR learning rate = lr0 * (10 ** lrf) - 'momentum': 0.949, # SGD momentum - 'weight_decay': 0.000489, # optimizer weight decay + 'momentum': 0.937, # SGD momentum + 'weight_decay': 0.000484, # optimizer weight decay 'fl_gamma': 0.5, # focal loss gamma - 'hsv_h': 0.0103, # image HSV-Hue augmentation (fraction) - 'hsv_s': 0.691, # image HSV-Saturation augmentation (fraction) - 'hsv_v': 0.433, # image HSV-Value augmentation (fraction) - 'degrees': 1.43, # image rotation (+/- deg) - 'translate': 0.0663, # image translation (+/- fraction) + 'hsv_h': 0.0138, # image HSV-Hue augmentation (fraction) + 'hsv_s': 0.678, # image HSV-Saturation augmentation (fraction) + 'hsv_v': 0.36, # image HSV-Value augmentation (fraction) + 'degrees': 1.98, # image rotation (+/- deg) + 'translate': 0.0779, # image translation (+/- fraction) 'scale': 0.11, # image scale (+/- gain) - 'shear': 0.384} # image shear (+/- deg) + 'shear': 0.641} # image shear (+/- deg) # Overwrite hyp with hyp*.txt (optional) f = glob.glob('hyp*.txt') From d5176e4fc41c6b3b71a59daf2ca17f6c65deab21 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 7 Dec 2019 00:01:18 -0800 Subject: [PATCH 1706/2595] updates --- train.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index 434daba3..a8dc6106 100644 --- a/train.py +++ b/train.py @@ -21,6 +21,7 @@ best = wdir + 'best.pt' results_file = 'results.txt' # Hyperparameters (results68: 59.2 mAP@0.5 yolov3-spp-416) https://github.com/ultralytics/yolov3/issues/310 + hyp = {'giou': 3.54, # giou loss gain 'cls': 37.4, # cls loss gain 'cls_pw': 1.0, # cls BCELoss positive_weight @@ -37,7 +38,7 @@ hyp = {'giou': 3.54, # giou loss gain 'hsv_v': 0.36, # image HSV-Value augmentation (fraction) 'degrees': 1.98, # image rotation (+/- deg) 'translate': 0.0779, # image translation (+/- fraction) - 'scale': 0.11, # image scale (+/- gain) + 'scale': 0.10, # image scale (+/- gain) 'shear': 0.641} # image shear (+/- deg) # Overwrite hyp with hyp*.txt (optional) From bb54408f73b1dab4fbb0a11db429058755090388 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 7 Dec 2019 00:05:37 -0800 Subject: [PATCH 1707/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index a8dc6106..40fcee33 100644 --- a/train.py +++ b/train.py @@ -432,7 +432,7 @@ if __name__ == '__main__': parser.add_argument('--bucket', type=str, default='', help='gsutil bucket') parser.add_argument('--img-weights', action='store_true', help='select training images by weight') parser.add_argument('--cache-images', action='store_true', help='cache images for faster training') - parser.add_argument('--weights', type=str, default='weights/ultralytics49.pt', help='initial weights') + parser.add_argument('--weights', type=str, default='weights/ultralytics68.pt', help='initial weights') parser.add_argument('--arc', type=str, default='default', help='yolo architecture') # defaultpw, uCE, uBCE parser.add_argument('--prebias', action='store_true', help='transfer-learn yolo biases prior to training') parser.add_argument('--name', default='', help='renames results.txt to results_name.txt if supplied') From c631cc2156a5b6b49eb79b59fa99c5d870796dce Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 7 Dec 2019 00:10:14 -0800 Subject: [PATCH 1708/2595] updates --- data/coco_32img.data | 6 - data/coco_32img.txt | 32 --- data/coco_500img.txt | 500 ------------------------------------------ data/coco_500val.data | 6 - data/coco_500val.txt | 500 ------------------------------------------ 5 files changed, 1044 deletions(-) delete mode 100644 data/coco_32img.data delete mode 100644 data/coco_32img.txt delete mode 100644 data/coco_500img.txt delete mode 100644 data/coco_500val.data delete mode 100644 data/coco_500val.txt diff --git a/data/coco_32img.data b/data/coco_32img.data deleted file mode 100644 index 8fceee7f..00000000 --- a/data/coco_32img.data +++ /dev/null @@ -1,6 +0,0 @@ -classes=80 -train=./data/coco_32img.txt -valid=./data/coco_32img.txt -names=data/coco.names -backup=backup/ -eval=coco diff --git a/data/coco_32img.txt b/data/coco_32img.txt deleted file mode 100644 index 75b86be8..00000000 --- a/data/coco_32img.txt +++ /dev/null @@ -1,32 +0,0 @@ -../coco/images/train2014/COCO_train2014_000000000009.jpg -../coco/images/train2014/COCO_train2014_000000000025.jpg -../coco/images/train2014/COCO_train2014_000000000030.jpg -../coco/images/train2014/COCO_train2014_000000000034.jpg -../coco/images/train2014/COCO_train2014_000000000036.jpg -../coco/images/train2014/COCO_train2014_000000000049.jpg -../coco/images/train2014/COCO_train2014_000000000061.jpg -../coco/images/train2014/COCO_train2014_000000000064.jpg -../coco/images/train2014/COCO_train2014_000000000071.jpg -../coco/images/train2014/COCO_train2014_000000000072.jpg -../coco/images/train2014/COCO_train2014_000000000077.jpg -../coco/images/train2014/COCO_train2014_000000000078.jpg -../coco/images/train2014/COCO_train2014_000000000081.jpg -../coco/images/train2014/COCO_train2014_000000000086.jpg -../coco/images/train2014/COCO_train2014_000000000089.jpg -../coco/images/train2014/COCO_train2014_000000000092.jpg -../coco/images/train2014/COCO_train2014_000000000094.jpg -../coco/images/train2014/COCO_train2014_000000000109.jpg -../coco/images/train2014/COCO_train2014_000000000110.jpg -../coco/images/train2014/COCO_train2014_000000000113.jpg -../coco/images/train2014/COCO_train2014_000000000127.jpg -../coco/images/train2014/COCO_train2014_000000000138.jpg -../coco/images/train2014/COCO_train2014_000000000142.jpg -../coco/images/train2014/COCO_train2014_000000000144.jpg -../coco/images/train2014/COCO_train2014_000000000149.jpg -../coco/images/train2014/COCO_train2014_000000000151.jpg -../coco/images/train2014/COCO_train2014_000000000154.jpg -../coco/images/train2014/COCO_train2014_000000000165.jpg -../coco/images/train2014/COCO_train2014_000000000194.jpg -../coco/images/train2014/COCO_train2014_000000000201.jpg -../coco/images/train2014/COCO_train2014_000000000247.jpg -../coco/images/train2014/COCO_train2014_000000000260.jpg diff --git a/data/coco_500img.txt b/data/coco_500img.txt deleted file mode 100644 index 5d578ab2..00000000 --- a/data/coco_500img.txt +++ /dev/null @@ -1,500 +0,0 @@ -../coco/images/train2014/COCO_train2014_000000000009.jpg -../coco/images/train2014/COCO_train2014_000000000025.jpg -../coco/images/train2014/COCO_train2014_000000000030.jpg -../coco/images/train2014/COCO_train2014_000000000034.jpg -../coco/images/train2014/COCO_train2014_000000000036.jpg -../coco/images/train2014/COCO_train2014_000000000049.jpg -../coco/images/train2014/COCO_train2014_000000000061.jpg -../coco/images/train2014/COCO_train2014_000000000064.jpg -../coco/images/train2014/COCO_train2014_000000000071.jpg -../coco/images/train2014/COCO_train2014_000000000072.jpg -../coco/images/train2014/COCO_train2014_000000000077.jpg -../coco/images/train2014/COCO_train2014_000000000078.jpg -../coco/images/train2014/COCO_train2014_000000000081.jpg -../coco/images/train2014/COCO_train2014_000000000086.jpg -../coco/images/train2014/COCO_train2014_000000000089.jpg -../coco/images/train2014/COCO_train2014_000000000092.jpg -../coco/images/train2014/COCO_train2014_000000000094.jpg -../coco/images/train2014/COCO_train2014_000000000109.jpg -../coco/images/train2014/COCO_train2014_000000000110.jpg -../coco/images/train2014/COCO_train2014_000000000113.jpg -../coco/images/train2014/COCO_train2014_000000000127.jpg -../coco/images/train2014/COCO_train2014_000000000138.jpg -../coco/images/train2014/COCO_train2014_000000000142.jpg -../coco/images/train2014/COCO_train2014_000000000144.jpg -../coco/images/train2014/COCO_train2014_000000000149.jpg -../coco/images/train2014/COCO_train2014_000000000151.jpg -../coco/images/train2014/COCO_train2014_000000000154.jpg -../coco/images/train2014/COCO_train2014_000000000165.jpg -../coco/images/train2014/COCO_train2014_000000000194.jpg -../coco/images/train2014/COCO_train2014_000000000201.jpg -../coco/images/train2014/COCO_train2014_000000000247.jpg -../coco/images/train2014/COCO_train2014_000000000260.jpg -../coco/images/train2014/COCO_train2014_000000000263.jpg -../coco/images/train2014/COCO_train2014_000000000307.jpg -../coco/images/train2014/COCO_train2014_000000000308.jpg -../coco/images/train2014/COCO_train2014_000000000309.jpg -../coco/images/train2014/COCO_train2014_000000000312.jpg -../coco/images/train2014/COCO_train2014_000000000315.jpg -../coco/images/train2014/COCO_train2014_000000000321.jpg -../coco/images/train2014/COCO_train2014_000000000322.jpg -../coco/images/train2014/COCO_train2014_000000000326.jpg -../coco/images/train2014/COCO_train2014_000000000332.jpg -../coco/images/train2014/COCO_train2014_000000000349.jpg -../coco/images/train2014/COCO_train2014_000000000368.jpg -../coco/images/train2014/COCO_train2014_000000000370.jpg -../coco/images/train2014/COCO_train2014_000000000382.jpg -../coco/images/train2014/COCO_train2014_000000000384.jpg -../coco/images/train2014/COCO_train2014_000000000389.jpg -../coco/images/train2014/COCO_train2014_000000000394.jpg -../coco/images/train2014/COCO_train2014_000000000404.jpg -../coco/images/train2014/COCO_train2014_000000000419.jpg -../coco/images/train2014/COCO_train2014_000000000431.jpg -../coco/images/train2014/COCO_train2014_000000000436.jpg -../coco/images/train2014/COCO_train2014_000000000438.jpg -../coco/images/train2014/COCO_train2014_000000000443.jpg -../coco/images/train2014/COCO_train2014_000000000446.jpg -../coco/images/train2014/COCO_train2014_000000000450.jpg -../coco/images/train2014/COCO_train2014_000000000471.jpg -../coco/images/train2014/COCO_train2014_000000000490.jpg -../coco/images/train2014/COCO_train2014_000000000491.jpg -../coco/images/train2014/COCO_train2014_000000000510.jpg -../coco/images/train2014/COCO_train2014_000000000514.jpg -../coco/images/train2014/COCO_train2014_000000000529.jpg -../coco/images/train2014/COCO_train2014_000000000531.jpg -../coco/images/train2014/COCO_train2014_000000000532.jpg -../coco/images/train2014/COCO_train2014_000000000540.jpg -../coco/images/train2014/COCO_train2014_000000000542.jpg -../coco/images/train2014/COCO_train2014_000000000560.jpg -../coco/images/train2014/COCO_train2014_000000000562.jpg -../coco/images/train2014/COCO_train2014_000000000572.jpg -../coco/images/train2014/COCO_train2014_000000000575.jpg -../coco/images/train2014/COCO_train2014_000000000581.jpg -../coco/images/train2014/COCO_train2014_000000000584.jpg -../coco/images/train2014/COCO_train2014_000000000595.jpg -../coco/images/train2014/COCO_train2014_000000000597.jpg -../coco/images/train2014/COCO_train2014_000000000605.jpg -../coco/images/train2014/COCO_train2014_000000000612.jpg -../coco/images/train2014/COCO_train2014_000000000620.jpg -../coco/images/train2014/COCO_train2014_000000000625.jpg -../coco/images/train2014/COCO_train2014_000000000629.jpg -../coco/images/train2014/COCO_train2014_000000000634.jpg -../coco/images/train2014/COCO_train2014_000000000643.jpg -../coco/images/train2014/COCO_train2014_000000000650.jpg -../coco/images/train2014/COCO_train2014_000000000656.jpg -../coco/images/train2014/COCO_train2014_000000000659.jpg -../coco/images/train2014/COCO_train2014_000000000670.jpg -../coco/images/train2014/COCO_train2014_000000000671.jpg -../coco/images/train2014/COCO_train2014_000000000673.jpg -../coco/images/train2014/COCO_train2014_000000000681.jpg -../coco/images/train2014/COCO_train2014_000000000684.jpg -../coco/images/train2014/COCO_train2014_000000000690.jpg -../coco/images/train2014/COCO_train2014_000000000706.jpg -../coco/images/train2014/COCO_train2014_000000000714.jpg -../coco/images/train2014/COCO_train2014_000000000716.jpg -../coco/images/train2014/COCO_train2014_000000000722.jpg -../coco/images/train2014/COCO_train2014_000000000723.jpg -../coco/images/train2014/COCO_train2014_000000000731.jpg -../coco/images/train2014/COCO_train2014_000000000735.jpg -../coco/images/train2014/COCO_train2014_000000000753.jpg -../coco/images/train2014/COCO_train2014_000000000754.jpg -../coco/images/train2014/COCO_train2014_000000000762.jpg -../coco/images/train2014/COCO_train2014_000000000781.jpg -../coco/images/train2014/COCO_train2014_000000000790.jpg -../coco/images/train2014/COCO_train2014_000000000795.jpg -../coco/images/train2014/COCO_train2014_000000000797.jpg -../coco/images/train2014/COCO_train2014_000000000801.jpg -../coco/images/train2014/COCO_train2014_000000000813.jpg -../coco/images/train2014/COCO_train2014_000000000821.jpg -../coco/images/train2014/COCO_train2014_000000000825.jpg -../coco/images/train2014/COCO_train2014_000000000828.jpg -../coco/images/train2014/COCO_train2014_000000000839.jpg -../coco/images/train2014/COCO_train2014_000000000853.jpg -../coco/images/train2014/COCO_train2014_000000000882.jpg -../coco/images/train2014/COCO_train2014_000000000897.jpg -../coco/images/train2014/COCO_train2014_000000000901.jpg -../coco/images/train2014/COCO_train2014_000000000902.jpg -../coco/images/train2014/COCO_train2014_000000000908.jpg -../coco/images/train2014/COCO_train2014_000000000909.jpg -../coco/images/train2014/COCO_train2014_000000000913.jpg -../coco/images/train2014/COCO_train2014_000000000925.jpg -../coco/images/train2014/COCO_train2014_000000000927.jpg -../coco/images/train2014/COCO_train2014_000000000934.jpg -../coco/images/train2014/COCO_train2014_000000000941.jpg -../coco/images/train2014/COCO_train2014_000000000943.jpg -../coco/images/train2014/COCO_train2014_000000000955.jpg -../coco/images/train2014/COCO_train2014_000000000960.jpg -../coco/images/train2014/COCO_train2014_000000000965.jpg -../coco/images/train2014/COCO_train2014_000000000977.jpg -../coco/images/train2014/COCO_train2014_000000000982.jpg -../coco/images/train2014/COCO_train2014_000000000984.jpg -../coco/images/train2014/COCO_train2014_000000000996.jpg -../coco/images/train2014/COCO_train2014_000000001006.jpg -../coco/images/train2014/COCO_train2014_000000001011.jpg -../coco/images/train2014/COCO_train2014_000000001014.jpg -../coco/images/train2014/COCO_train2014_000000001025.jpg -../coco/images/train2014/COCO_train2014_000000001036.jpg -../coco/images/train2014/COCO_train2014_000000001053.jpg -../coco/images/train2014/COCO_train2014_000000001059.jpg -../coco/images/train2014/COCO_train2014_000000001072.jpg -../coco/images/train2014/COCO_train2014_000000001084.jpg -../coco/images/train2014/COCO_train2014_000000001085.jpg -../coco/images/train2014/COCO_train2014_000000001090.jpg -../coco/images/train2014/COCO_train2014_000000001098.jpg -../coco/images/train2014/COCO_train2014_000000001099.jpg -../coco/images/train2014/COCO_train2014_000000001102.jpg -../coco/images/train2014/COCO_train2014_000000001107.jpg -../coco/images/train2014/COCO_train2014_000000001108.jpg -../coco/images/train2014/COCO_train2014_000000001122.jpg -../coco/images/train2014/COCO_train2014_000000001139.jpg -../coco/images/train2014/COCO_train2014_000000001144.jpg -../coco/images/train2014/COCO_train2014_000000001145.jpg -../coco/images/train2014/COCO_train2014_000000001155.jpg -../coco/images/train2014/COCO_train2014_000000001166.jpg -../coco/images/train2014/COCO_train2014_000000001168.jpg -../coco/images/train2014/COCO_train2014_000000001183.jpg -../coco/images/train2014/COCO_train2014_000000001200.jpg -../coco/images/train2014/COCO_train2014_000000001204.jpg -../coco/images/train2014/COCO_train2014_000000001213.jpg -../coco/images/train2014/COCO_train2014_000000001216.jpg -../coco/images/train2014/COCO_train2014_000000001224.jpg -../coco/images/train2014/COCO_train2014_000000001232.jpg -../coco/images/train2014/COCO_train2014_000000001237.jpg -../coco/images/train2014/COCO_train2014_000000001238.jpg -../coco/images/train2014/COCO_train2014_000000001261.jpg -../coco/images/train2014/COCO_train2014_000000001264.jpg -../coco/images/train2014/COCO_train2014_000000001271.jpg -../coco/images/train2014/COCO_train2014_000000001282.jpg -../coco/images/train2014/COCO_train2014_000000001295.jpg -../coco/images/train2014/COCO_train2014_000000001298.jpg -../coco/images/train2014/COCO_train2014_000000001306.jpg -../coco/images/train2014/COCO_train2014_000000001307.jpg -../coco/images/train2014/COCO_train2014_000000001308.jpg -../coco/images/train2014/COCO_train2014_000000001311.jpg -../coco/images/train2014/COCO_train2014_000000001315.jpg -../coco/images/train2014/COCO_train2014_000000001319.jpg -../coco/images/train2014/COCO_train2014_000000001323.jpg -../coco/images/train2014/COCO_train2014_000000001330.jpg -../coco/images/train2014/COCO_train2014_000000001332.jpg -../coco/images/train2014/COCO_train2014_000000001350.jpg -../coco/images/train2014/COCO_train2014_000000001355.jpg -../coco/images/train2014/COCO_train2014_000000001359.jpg -../coco/images/train2014/COCO_train2014_000000001360.jpg -../coco/images/train2014/COCO_train2014_000000001366.jpg -../coco/images/train2014/COCO_train2014_000000001375.jpg -../coco/images/train2014/COCO_train2014_000000001381.jpg -../coco/images/train2014/COCO_train2014_000000001386.jpg -../coco/images/train2014/COCO_train2014_000000001390.jpg -../coco/images/train2014/COCO_train2014_000000001392.jpg -../coco/images/train2014/COCO_train2014_000000001397.jpg -../coco/images/train2014/COCO_train2014_000000001401.jpg -../coco/images/train2014/COCO_train2014_000000001403.jpg -../coco/images/train2014/COCO_train2014_000000001407.jpg -../coco/images/train2014/COCO_train2014_000000001408.jpg -../coco/images/train2014/COCO_train2014_000000001424.jpg -../coco/images/train2014/COCO_train2014_000000001431.jpg -../coco/images/train2014/COCO_train2014_000000001451.jpg -../coco/images/train2014/COCO_train2014_000000001453.jpg -../coco/images/train2014/COCO_train2014_000000001455.jpg -../coco/images/train2014/COCO_train2014_000000001488.jpg -../coco/images/train2014/COCO_train2014_000000001496.jpg -../coco/images/train2014/COCO_train2014_000000001497.jpg -../coco/images/train2014/COCO_train2014_000000001501.jpg -../coco/images/train2014/COCO_train2014_000000001505.jpg -../coco/images/train2014/COCO_train2014_000000001507.jpg -../coco/images/train2014/COCO_train2014_000000001510.jpg -../coco/images/train2014/COCO_train2014_000000001515.jpg -../coco/images/train2014/COCO_train2014_000000001518.jpg -../coco/images/train2014/COCO_train2014_000000001522.jpg -../coco/images/train2014/COCO_train2014_000000001523.jpg -../coco/images/train2014/COCO_train2014_000000001526.jpg -../coco/images/train2014/COCO_train2014_000000001527.jpg -../coco/images/train2014/COCO_train2014_000000001536.jpg -../coco/images/train2014/COCO_train2014_000000001548.jpg -../coco/images/train2014/COCO_train2014_000000001558.jpg -../coco/images/train2014/COCO_train2014_000000001562.jpg -../coco/images/train2014/COCO_train2014_000000001569.jpg -../coco/images/train2014/COCO_train2014_000000001579.jpg -../coco/images/train2014/COCO_train2014_000000001580.jpg -../coco/images/train2014/COCO_train2014_000000001586.jpg -../coco/images/train2014/COCO_train2014_000000001589.jpg -../coco/images/train2014/COCO_train2014_000000001596.jpg -../coco/images/train2014/COCO_train2014_000000001611.jpg -../coco/images/train2014/COCO_train2014_000000001622.jpg -../coco/images/train2014/COCO_train2014_000000001625.jpg -../coco/images/train2014/COCO_train2014_000000001637.jpg -../coco/images/train2014/COCO_train2014_000000001639.jpg -../coco/images/train2014/COCO_train2014_000000001645.jpg -../coco/images/train2014/COCO_train2014_000000001670.jpg -../coco/images/train2014/COCO_train2014_000000001674.jpg -../coco/images/train2014/COCO_train2014_000000001681.jpg -../coco/images/train2014/COCO_train2014_000000001688.jpg -../coco/images/train2014/COCO_train2014_000000001697.jpg -../coco/images/train2014/COCO_train2014_000000001706.jpg -../coco/images/train2014/COCO_train2014_000000001709.jpg -../coco/images/train2014/COCO_train2014_000000001712.jpg -../coco/images/train2014/COCO_train2014_000000001720.jpg -../coco/images/train2014/COCO_train2014_000000001732.jpg -../coco/images/train2014/COCO_train2014_000000001737.jpg -../coco/images/train2014/COCO_train2014_000000001756.jpg -../coco/images/train2014/COCO_train2014_000000001762.jpg -../coco/images/train2014/COCO_train2014_000000001764.jpg -../coco/images/train2014/COCO_train2014_000000001771.jpg -../coco/images/train2014/COCO_train2014_000000001774.jpg -../coco/images/train2014/COCO_train2014_000000001777.jpg -../coco/images/train2014/COCO_train2014_000000001781.jpg -../coco/images/train2014/COCO_train2014_000000001785.jpg -../coco/images/train2014/COCO_train2014_000000001786.jpg -../coco/images/train2014/COCO_train2014_000000001790.jpg -../coco/images/train2014/COCO_train2014_000000001792.jpg -../coco/images/train2014/COCO_train2014_000000001804.jpg -../coco/images/train2014/COCO_train2014_000000001810.jpg -../coco/images/train2014/COCO_train2014_000000001811.jpg -../coco/images/train2014/COCO_train2014_000000001813.jpg -../coco/images/train2014/COCO_train2014_000000001815.jpg -../coco/images/train2014/COCO_train2014_000000001822.jpg -../coco/images/train2014/COCO_train2014_000000001837.jpg -../coco/images/train2014/COCO_train2014_000000001864.jpg -../coco/images/train2014/COCO_train2014_000000001875.jpg -../coco/images/train2014/COCO_train2014_000000001877.jpg -../coco/images/train2014/COCO_train2014_000000001888.jpg -../coco/images/train2014/COCO_train2014_000000001895.jpg -../coco/images/train2014/COCO_train2014_000000001900.jpg -../coco/images/train2014/COCO_train2014_000000001902.jpg -../coco/images/train2014/COCO_train2014_000000001906.jpg -../coco/images/train2014/COCO_train2014_000000001907.jpg -../coco/images/train2014/COCO_train2014_000000001911.jpg -../coco/images/train2014/COCO_train2014_000000001912.jpg -../coco/images/train2014/COCO_train2014_000000001915.jpg -../coco/images/train2014/COCO_train2014_000000001924.jpg -../coco/images/train2014/COCO_train2014_000000001926.jpg -../coco/images/train2014/COCO_train2014_000000001941.jpg -../coco/images/train2014/COCO_train2014_000000001942.jpg -../coco/images/train2014/COCO_train2014_000000001943.jpg -../coco/images/train2014/COCO_train2014_000000001947.jpg -../coco/images/train2014/COCO_train2014_000000001958.jpg -../coco/images/train2014/COCO_train2014_000000001966.jpg -../coco/images/train2014/COCO_train2014_000000001994.jpg -../coco/images/train2014/COCO_train2014_000000001999.jpg -../coco/images/train2014/COCO_train2014_000000002001.jpg -../coco/images/train2014/COCO_train2014_000000002007.jpg -../coco/images/train2014/COCO_train2014_000000002024.jpg -../coco/images/train2014/COCO_train2014_000000002055.jpg -../coco/images/train2014/COCO_train2014_000000002056.jpg -../coco/images/train2014/COCO_train2014_000000002066.jpg -../coco/images/train2014/COCO_train2014_000000002068.jpg -../coco/images/train2014/COCO_train2014_000000002072.jpg -../coco/images/train2014/COCO_train2014_000000002083.jpg -../coco/images/train2014/COCO_train2014_000000002089.jpg -../coco/images/train2014/COCO_train2014_000000002093.jpg -../coco/images/train2014/COCO_train2014_000000002106.jpg -../coco/images/train2014/COCO_train2014_000000002114.jpg -../coco/images/train2014/COCO_train2014_000000002135.jpg -../coco/images/train2014/COCO_train2014_000000002148.jpg -../coco/images/train2014/COCO_train2014_000000002150.jpg -../coco/images/train2014/COCO_train2014_000000002178.jpg -../coco/images/train2014/COCO_train2014_000000002184.jpg -../coco/images/train2014/COCO_train2014_000000002193.jpg -../coco/images/train2014/COCO_train2014_000000002197.jpg -../coco/images/train2014/COCO_train2014_000000002209.jpg -../coco/images/train2014/COCO_train2014_000000002211.jpg -../coco/images/train2014/COCO_train2014_000000002217.jpg -../coco/images/train2014/COCO_train2014_000000002229.jpg -../coco/images/train2014/COCO_train2014_000000002232.jpg -../coco/images/train2014/COCO_train2014_000000002244.jpg -../coco/images/train2014/COCO_train2014_000000002258.jpg -../coco/images/train2014/COCO_train2014_000000002270.jpg -../coco/images/train2014/COCO_train2014_000000002276.jpg -../coco/images/train2014/COCO_train2014_000000002278.jpg -../coco/images/train2014/COCO_train2014_000000002279.jpg -../coco/images/train2014/COCO_train2014_000000002280.jpg -../coco/images/train2014/COCO_train2014_000000002281.jpg -../coco/images/train2014/COCO_train2014_000000002283.jpg -../coco/images/train2014/COCO_train2014_000000002284.jpg -../coco/images/train2014/COCO_train2014_000000002296.jpg -../coco/images/train2014/COCO_train2014_000000002309.jpg -../coco/images/train2014/COCO_train2014_000000002337.jpg -../coco/images/train2014/COCO_train2014_000000002342.jpg -../coco/images/train2014/COCO_train2014_000000002347.jpg -../coco/images/train2014/COCO_train2014_000000002349.jpg -../coco/images/train2014/COCO_train2014_000000002369.jpg -../coco/images/train2014/COCO_train2014_000000002372.jpg -../coco/images/train2014/COCO_train2014_000000002374.jpg -../coco/images/train2014/COCO_train2014_000000002377.jpg -../coco/images/train2014/COCO_train2014_000000002389.jpg -../coco/images/train2014/COCO_train2014_000000002400.jpg -../coco/images/train2014/COCO_train2014_000000002402.jpg -../coco/images/train2014/COCO_train2014_000000002411.jpg -../coco/images/train2014/COCO_train2014_000000002415.jpg -../coco/images/train2014/COCO_train2014_000000002429.jpg -../coco/images/train2014/COCO_train2014_000000002444.jpg -../coco/images/train2014/COCO_train2014_000000002445.jpg -../coco/images/train2014/COCO_train2014_000000002446.jpg -../coco/images/train2014/COCO_train2014_000000002448.jpg -../coco/images/train2014/COCO_train2014_000000002451.jpg -../coco/images/train2014/COCO_train2014_000000002459.jpg -../coco/images/train2014/COCO_train2014_000000002466.jpg -../coco/images/train2014/COCO_train2014_000000002470.jpg -../coco/images/train2014/COCO_train2014_000000002471.jpg -../coco/images/train2014/COCO_train2014_000000002496.jpg -../coco/images/train2014/COCO_train2014_000000002498.jpg -../coco/images/train2014/COCO_train2014_000000002531.jpg -../coco/images/train2014/COCO_train2014_000000002536.jpg -../coco/images/train2014/COCO_train2014_000000002543.jpg -../coco/images/train2014/COCO_train2014_000000002544.jpg -../coco/images/train2014/COCO_train2014_000000002545.jpg -../coco/images/train2014/COCO_train2014_000000002555.jpg -../coco/images/train2014/COCO_train2014_000000002559.jpg -../coco/images/train2014/COCO_train2014_000000002560.jpg -../coco/images/train2014/COCO_train2014_000000002563.jpg -../coco/images/train2014/COCO_train2014_000000002567.jpg -../coco/images/train2014/COCO_train2014_000000002570.jpg -../coco/images/train2014/COCO_train2014_000000002575.jpg -../coco/images/train2014/COCO_train2014_000000002583.jpg -../coco/images/train2014/COCO_train2014_000000002585.jpg -../coco/images/train2014/COCO_train2014_000000002591.jpg -../coco/images/train2014/COCO_train2014_000000002602.jpg -../coco/images/train2014/COCO_train2014_000000002606.jpg -../coco/images/train2014/COCO_train2014_000000002608.jpg -../coco/images/train2014/COCO_train2014_000000002614.jpg -../coco/images/train2014/COCO_train2014_000000002618.jpg -../coco/images/train2014/COCO_train2014_000000002619.jpg -../coco/images/train2014/COCO_train2014_000000002623.jpg -../coco/images/train2014/COCO_train2014_000000002624.jpg -../coco/images/train2014/COCO_train2014_000000002639.jpg -../coco/images/train2014/COCO_train2014_000000002644.jpg -../coco/images/train2014/COCO_train2014_000000002645.jpg -../coco/images/train2014/COCO_train2014_000000002658.jpg -../coco/images/train2014/COCO_train2014_000000002664.jpg -../coco/images/train2014/COCO_train2014_000000002672.jpg -../coco/images/train2014/COCO_train2014_000000002686.jpg -../coco/images/train2014/COCO_train2014_000000002687.jpg -../coco/images/train2014/COCO_train2014_000000002691.jpg -../coco/images/train2014/COCO_train2014_000000002693.jpg -../coco/images/train2014/COCO_train2014_000000002697.jpg -../coco/images/train2014/COCO_train2014_000000002703.jpg -../coco/images/train2014/COCO_train2014_000000002732.jpg -../coco/images/train2014/COCO_train2014_000000002742.jpg -../coco/images/train2014/COCO_train2014_000000002752.jpg -../coco/images/train2014/COCO_train2014_000000002754.jpg -../coco/images/train2014/COCO_train2014_000000002755.jpg -../coco/images/train2014/COCO_train2014_000000002758.jpg -../coco/images/train2014/COCO_train2014_000000002770.jpg -../coco/images/train2014/COCO_train2014_000000002774.jpg -../coco/images/train2014/COCO_train2014_000000002776.jpg -../coco/images/train2014/COCO_train2014_000000002782.jpg -../coco/images/train2014/COCO_train2014_000000002823.jpg -../coco/images/train2014/COCO_train2014_000000002833.jpg -../coco/images/train2014/COCO_train2014_000000002842.jpg -../coco/images/train2014/COCO_train2014_000000002843.jpg -../coco/images/train2014/COCO_train2014_000000002849.jpg -../coco/images/train2014/COCO_train2014_000000002860.jpg -../coco/images/train2014/COCO_train2014_000000002886.jpg -../coco/images/train2014/COCO_train2014_000000002892.jpg -../coco/images/train2014/COCO_train2014_000000002896.jpg -../coco/images/train2014/COCO_train2014_000000002902.jpg -../coco/images/train2014/COCO_train2014_000000002907.jpg -../coco/images/train2014/COCO_train2014_000000002931.jpg -../coco/images/train2014/COCO_train2014_000000002951.jpg -../coco/images/train2014/COCO_train2014_000000002963.jpg -../coco/images/train2014/COCO_train2014_000000002964.jpg -../coco/images/train2014/COCO_train2014_000000002982.jpg -../coco/images/train2014/COCO_train2014_000000002983.jpg -../coco/images/train2014/COCO_train2014_000000002989.jpg -../coco/images/train2014/COCO_train2014_000000002992.jpg -../coco/images/train2014/COCO_train2014_000000002998.jpg -../coco/images/train2014/COCO_train2014_000000003000.jpg -../coco/images/train2014/COCO_train2014_000000003003.jpg -../coco/images/train2014/COCO_train2014_000000003008.jpg -../coco/images/train2014/COCO_train2014_000000003040.jpg -../coco/images/train2014/COCO_train2014_000000003048.jpg -../coco/images/train2014/COCO_train2014_000000003076.jpg -../coco/images/train2014/COCO_train2014_000000003077.jpg -../coco/images/train2014/COCO_train2014_000000003080.jpg -../coco/images/train2014/COCO_train2014_000000003118.jpg -../coco/images/train2014/COCO_train2014_000000003124.jpg -../coco/images/train2014/COCO_train2014_000000003131.jpg -../coco/images/train2014/COCO_train2014_000000003148.jpg -../coco/images/train2014/COCO_train2014_000000003157.jpg -../coco/images/train2014/COCO_train2014_000000003160.jpg -../coco/images/train2014/COCO_train2014_000000003178.jpg -../coco/images/train2014/COCO_train2014_000000003197.jpg -../coco/images/train2014/COCO_train2014_000000003219.jpg -../coco/images/train2014/COCO_train2014_000000003220.jpg -../coco/images/train2014/COCO_train2014_000000003224.jpg -../coco/images/train2014/COCO_train2014_000000003225.jpg -../coco/images/train2014/COCO_train2014_000000003234.jpg -../coco/images/train2014/COCO_train2014_000000003236.jpg -../coco/images/train2014/COCO_train2014_000000003242.jpg -../coco/images/train2014/COCO_train2014_000000003249.jpg -../coco/images/train2014/COCO_train2014_000000003259.jpg -../coco/images/train2014/COCO_train2014_000000003264.jpg -../coco/images/train2014/COCO_train2014_000000003270.jpg -../coco/images/train2014/COCO_train2014_000000003272.jpg -../coco/images/train2014/COCO_train2014_000000003276.jpg -../coco/images/train2014/COCO_train2014_000000003286.jpg -../coco/images/train2014/COCO_train2014_000000003293.jpg -../coco/images/train2014/COCO_train2014_000000003305.jpg -../coco/images/train2014/COCO_train2014_000000003314.jpg -../coco/images/train2014/COCO_train2014_000000003320.jpg -../coco/images/train2014/COCO_train2014_000000003321.jpg -../coco/images/train2014/COCO_train2014_000000003325.jpg -../coco/images/train2014/COCO_train2014_000000003348.jpg -../coco/images/train2014/COCO_train2014_000000003353.jpg -../coco/images/train2014/COCO_train2014_000000003361.jpg -../coco/images/train2014/COCO_train2014_000000003365.jpg -../coco/images/train2014/COCO_train2014_000000003366.jpg -../coco/images/train2014/COCO_train2014_000000003375.jpg -../coco/images/train2014/COCO_train2014_000000003386.jpg -../coco/images/train2014/COCO_train2014_000000003389.jpg -../coco/images/train2014/COCO_train2014_000000003398.jpg -../coco/images/train2014/COCO_train2014_000000003412.jpg -../coco/images/train2014/COCO_train2014_000000003432.jpg -../coco/images/train2014/COCO_train2014_000000003442.jpg -../coco/images/train2014/COCO_train2014_000000003457.jpg -../coco/images/train2014/COCO_train2014_000000003461.jpg -../coco/images/train2014/COCO_train2014_000000003464.jpg -../coco/images/train2014/COCO_train2014_000000003474.jpg -../coco/images/train2014/COCO_train2014_000000003478.jpg -../coco/images/train2014/COCO_train2014_000000003481.jpg -../coco/images/train2014/COCO_train2014_000000003483.jpg -../coco/images/train2014/COCO_train2014_000000003493.jpg -../coco/images/train2014/COCO_train2014_000000003511.jpg -../coco/images/train2014/COCO_train2014_000000003514.jpg -../coco/images/train2014/COCO_train2014_000000003517.jpg -../coco/images/train2014/COCO_train2014_000000003518.jpg -../coco/images/train2014/COCO_train2014_000000003521.jpg -../coco/images/train2014/COCO_train2014_000000003528.jpg -../coco/images/train2014/COCO_train2014_000000003532.jpg -../coco/images/train2014/COCO_train2014_000000003535.jpg -../coco/images/train2014/COCO_train2014_000000003538.jpg -../coco/images/train2014/COCO_train2014_000000003579.jpg -../coco/images/train2014/COCO_train2014_000000003602.jpg -../coco/images/train2014/COCO_train2014_000000003613.jpg -../coco/images/train2014/COCO_train2014_000000003623.jpg -../coco/images/train2014/COCO_train2014_000000003628.jpg -../coco/images/train2014/COCO_train2014_000000003637.jpg -../coco/images/train2014/COCO_train2014_000000003668.jpg -../coco/images/train2014/COCO_train2014_000000003671.jpg -../coco/images/train2014/COCO_train2014_000000003682.jpg -../coco/images/train2014/COCO_train2014_000000003685.jpg -../coco/images/train2014/COCO_train2014_000000003713.jpg -../coco/images/train2014/COCO_train2014_000000003729.jpg -../coco/images/train2014/COCO_train2014_000000003735.jpg -../coco/images/train2014/COCO_train2014_000000003737.jpg -../coco/images/train2014/COCO_train2014_000000003745.jpg -../coco/images/train2014/COCO_train2014_000000003751.jpg -../coco/images/train2014/COCO_train2014_000000003764.jpg -../coco/images/train2014/COCO_train2014_000000003770.jpg -../coco/images/train2014/COCO_train2014_000000003782.jpg -../coco/images/train2014/COCO_train2014_000000003789.jpg -../coco/images/train2014/COCO_train2014_000000003804.jpg -../coco/images/train2014/COCO_train2014_000000003812.jpg -../coco/images/train2014/COCO_train2014_000000003823.jpg -../coco/images/train2014/COCO_train2014_000000003827.jpg -../coco/images/train2014/COCO_train2014_000000003830.jpg -../coco/images/train2014/COCO_train2014_000000003860.jpg -../coco/images/train2014/COCO_train2014_000000003862.jpg -../coco/images/train2014/COCO_train2014_000000003866.jpg -../coco/images/train2014/COCO_train2014_000000003870.jpg -../coco/images/train2014/COCO_train2014_000000003877.jpg diff --git a/data/coco_500val.data b/data/coco_500val.data deleted file mode 100644 index 4edf9ed3..00000000 --- a/data/coco_500val.data +++ /dev/null @@ -1,6 +0,0 @@ -classes=80 -train=./data/coco_500img.txt -valid=./data/coco_500val.txt -names=data/coco.names -backup=backup/ -eval=coco diff --git a/data/coco_500val.txt b/data/coco_500val.txt deleted file mode 100644 index 443fb5fc..00000000 --- a/data/coco_500val.txt +++ /dev/null @@ -1,500 +0,0 @@ -../coco/images/val2014/COCO_val2014_000000000164.jpg -../coco/images/val2014/COCO_val2014_000000000192.jpg -../coco/images/val2014/COCO_val2014_000000000283.jpg -../coco/images/val2014/COCO_val2014_000000000397.jpg -../coco/images/val2014/COCO_val2014_000000000589.jpg -../coco/images/val2014/COCO_val2014_000000000599.jpg -../coco/images/val2014/COCO_val2014_000000000711.jpg -../coco/images/val2014/COCO_val2014_000000000757.jpg -../coco/images/val2014/COCO_val2014_000000000764.jpg -../coco/images/val2014/COCO_val2014_000000000872.jpg -../coco/images/val2014/COCO_val2014_000000001063.jpg -../coco/images/val2014/COCO_val2014_000000001554.jpg -../coco/images/val2014/COCO_val2014_000000001667.jpg -../coco/images/val2014/COCO_val2014_000000001700.jpg -../coco/images/val2014/COCO_val2014_000000001869.jpg -../coco/images/val2014/COCO_val2014_000000002124.jpg -../coco/images/val2014/COCO_val2014_000000002261.jpg -../coco/images/val2014/COCO_val2014_000000002621.jpg -../coco/images/val2014/COCO_val2014_000000002684.jpg -../coco/images/val2014/COCO_val2014_000000002764.jpg -../coco/images/val2014/COCO_val2014_000000002894.jpg -../coco/images/val2014/COCO_val2014_000000002972.jpg -../coco/images/val2014/COCO_val2014_000000003035.jpg -../coco/images/val2014/COCO_val2014_000000003084.jpg -../coco/images/val2014/COCO_val2014_000000003103.jpg -../coco/images/val2014/COCO_val2014_000000003109.jpg -../coco/images/val2014/COCO_val2014_000000003134.jpg -../coco/images/val2014/COCO_val2014_000000003209.jpg -../coco/images/val2014/COCO_val2014_000000003244.jpg -../coco/images/val2014/COCO_val2014_000000003326.jpg -../coco/images/val2014/COCO_val2014_000000003337.jpg -../coco/images/val2014/COCO_val2014_000000003661.jpg -../coco/images/val2014/COCO_val2014_000000003711.jpg -../coco/images/val2014/COCO_val2014_000000003779.jpg -../coco/images/val2014/COCO_val2014_000000003865.jpg -../coco/images/val2014/COCO_val2014_000000004079.jpg -../coco/images/val2014/COCO_val2014_000000004092.jpg -../coco/images/val2014/COCO_val2014_000000004283.jpg -../coco/images/val2014/COCO_val2014_000000004296.jpg -../coco/images/val2014/COCO_val2014_000000004392.jpg -../coco/images/val2014/COCO_val2014_000000004742.jpg -../coco/images/val2014/COCO_val2014_000000004754.jpg -../coco/images/val2014/COCO_val2014_000000004764.jpg -../coco/images/val2014/COCO_val2014_000000005038.jpg -../coco/images/val2014/COCO_val2014_000000005060.jpg -../coco/images/val2014/COCO_val2014_000000005124.jpg -../coco/images/val2014/COCO_val2014_000000005178.jpg -../coco/images/val2014/COCO_val2014_000000005205.jpg -../coco/images/val2014/COCO_val2014_000000005443.jpg -../coco/images/val2014/COCO_val2014_000000005652.jpg -../coco/images/val2014/COCO_val2014_000000005723.jpg -../coco/images/val2014/COCO_val2014_000000005804.jpg -../coco/images/val2014/COCO_val2014_000000006074.jpg -../coco/images/val2014/COCO_val2014_000000006091.jpg -../coco/images/val2014/COCO_val2014_000000006153.jpg -../coco/images/val2014/COCO_val2014_000000006213.jpg -../coco/images/val2014/COCO_val2014_000000006497.jpg -../coco/images/val2014/COCO_val2014_000000006789.jpg -../coco/images/val2014/COCO_val2014_000000006847.jpg -../coco/images/val2014/COCO_val2014_000000007241.jpg -../coco/images/val2014/COCO_val2014_000000007256.jpg -../coco/images/val2014/COCO_val2014_000000007281.jpg -../coco/images/val2014/COCO_val2014_000000007795.jpg -../coco/images/val2014/COCO_val2014_000000007867.jpg -../coco/images/val2014/COCO_val2014_000000007873.jpg -../coco/images/val2014/COCO_val2014_000000007899.jpg -../coco/images/val2014/COCO_val2014_000000008010.jpg -../coco/images/val2014/COCO_val2014_000000008179.jpg -../coco/images/val2014/COCO_val2014_000000008190.jpg -../coco/images/val2014/COCO_val2014_000000008204.jpg -../coco/images/val2014/COCO_val2014_000000008350.jpg -../coco/images/val2014/COCO_val2014_000000008493.jpg -../coco/images/val2014/COCO_val2014_000000008853.jpg -../coco/images/val2014/COCO_val2014_000000009105.jpg -../coco/images/val2014/COCO_val2014_000000009156.jpg -../coco/images/val2014/COCO_val2014_000000009217.jpg -../coco/images/val2014/COCO_val2014_000000009270.jpg -../coco/images/val2014/COCO_val2014_000000009286.jpg -../coco/images/val2014/COCO_val2014_000000009548.jpg -../coco/images/val2014/COCO_val2014_000000009553.jpg -../coco/images/val2014/COCO_val2014_000000009727.jpg -../coco/images/val2014/COCO_val2014_000000009908.jpg -../coco/images/val2014/COCO_val2014_000000010114.jpg -../coco/images/val2014/COCO_val2014_000000010249.jpg -../coco/images/val2014/COCO_val2014_000000010395.jpg -../coco/images/val2014/COCO_val2014_000000010400.jpg -../coco/images/val2014/COCO_val2014_000000010463.jpg -../coco/images/val2014/COCO_val2014_000000010613.jpg -../coco/images/val2014/COCO_val2014_000000010764.jpg -../coco/images/val2014/COCO_val2014_000000010779.jpg -../coco/images/val2014/COCO_val2014_000000010928.jpg -../coco/images/val2014/COCO_val2014_000000011099.jpg -../coco/images/val2014/COCO_val2014_000000011181.jpg -../coco/images/val2014/COCO_val2014_000000011184.jpg -../coco/images/val2014/COCO_val2014_000000011197.jpg -../coco/images/val2014/COCO_val2014_000000011320.jpg -../coco/images/val2014/COCO_val2014_000000011721.jpg -../coco/images/val2014/COCO_val2014_000000011813.jpg -../coco/images/val2014/COCO_val2014_000000012014.jpg -../coco/images/val2014/COCO_val2014_000000012047.jpg -../coco/images/val2014/COCO_val2014_000000012085.jpg -../coco/images/val2014/COCO_val2014_000000012115.jpg -../coco/images/val2014/COCO_val2014_000000012166.jpg -../coco/images/val2014/COCO_val2014_000000012230.jpg -../coco/images/val2014/COCO_val2014_000000012370.jpg -../coco/images/val2014/COCO_val2014_000000012375.jpg -../coco/images/val2014/COCO_val2014_000000012448.jpg -../coco/images/val2014/COCO_val2014_000000012543.jpg -../coco/images/val2014/COCO_val2014_000000012744.jpg -../coco/images/val2014/COCO_val2014_000000012897.jpg -../coco/images/val2014/COCO_val2014_000000012966.jpg -../coco/images/val2014/COCO_val2014_000000012993.jpg -../coco/images/val2014/COCO_val2014_000000013004.jpg -../coco/images/val2014/COCO_val2014_000000013333.jpg -../coco/images/val2014/COCO_val2014_000000013357.jpg -../coco/images/val2014/COCO_val2014_000000013774.jpg -../coco/images/val2014/COCO_val2014_000000014029.jpg -../coco/images/val2014/COCO_val2014_000000014056.jpg -../coco/images/val2014/COCO_val2014_000000014108.jpg -../coco/images/val2014/COCO_val2014_000000014135.jpg -../coco/images/val2014/COCO_val2014_000000014226.jpg -../coco/images/val2014/COCO_val2014_000000014306.jpg -../coco/images/val2014/COCO_val2014_000000014591.jpg -../coco/images/val2014/COCO_val2014_000000014629.jpg -../coco/images/val2014/COCO_val2014_000000014756.jpg -../coco/images/val2014/COCO_val2014_000000014874.jpg -../coco/images/val2014/COCO_val2014_000000014990.jpg -../coco/images/val2014/COCO_val2014_000000015386.jpg -../coco/images/val2014/COCO_val2014_000000015559.jpg -../coco/images/val2014/COCO_val2014_000000015599.jpg -../coco/images/val2014/COCO_val2014_000000015709.jpg -../coco/images/val2014/COCO_val2014_000000015735.jpg -../coco/images/val2014/COCO_val2014_000000015751.jpg -../coco/images/val2014/COCO_val2014_000000015883.jpg -../coco/images/val2014/COCO_val2014_000000015953.jpg -../coco/images/val2014/COCO_val2014_000000015956.jpg -../coco/images/val2014/COCO_val2014_000000015968.jpg -../coco/images/val2014/COCO_val2014_000000015987.jpg -../coco/images/val2014/COCO_val2014_000000016030.jpg -../coco/images/val2014/COCO_val2014_000000016076.jpg -../coco/images/val2014/COCO_val2014_000000016228.jpg -../coco/images/val2014/COCO_val2014_000000016241.jpg -../coco/images/val2014/COCO_val2014_000000016257.jpg -../coco/images/val2014/COCO_val2014_000000016327.jpg -../coco/images/val2014/COCO_val2014_000000016410.jpg -../coco/images/val2014/COCO_val2014_000000016574.jpg -../coco/images/val2014/COCO_val2014_000000016716.jpg -../coco/images/val2014/COCO_val2014_000000016928.jpg -../coco/images/val2014/COCO_val2014_000000016995.jpg -../coco/images/val2014/COCO_val2014_000000017235.jpg -../coco/images/val2014/COCO_val2014_000000017379.jpg -../coco/images/val2014/COCO_val2014_000000017667.jpg -../coco/images/val2014/COCO_val2014_000000017755.jpg -../coco/images/val2014/COCO_val2014_000000018295.jpg -../coco/images/val2014/COCO_val2014_000000018358.jpg -../coco/images/val2014/COCO_val2014_000000018476.jpg -../coco/images/val2014/COCO_val2014_000000018750.jpg -../coco/images/val2014/COCO_val2014_000000018783.jpg -../coco/images/val2014/COCO_val2014_000000019025.jpg -../coco/images/val2014/COCO_val2014_000000019042.jpg -../coco/images/val2014/COCO_val2014_000000019129.jpg -../coco/images/val2014/COCO_val2014_000000019176.jpg -../coco/images/val2014/COCO_val2014_000000019491.jpg -../coco/images/val2014/COCO_val2014_000000019890.jpg -../coco/images/val2014/COCO_val2014_000000019923.jpg -../coco/images/val2014/COCO_val2014_000000020001.jpg -../coco/images/val2014/COCO_val2014_000000020038.jpg -../coco/images/val2014/COCO_val2014_000000020175.jpg -../coco/images/val2014/COCO_val2014_000000020268.jpg -../coco/images/val2014/COCO_val2014_000000020273.jpg -../coco/images/val2014/COCO_val2014_000000020349.jpg -../coco/images/val2014/COCO_val2014_000000020553.jpg -../coco/images/val2014/COCO_val2014_000000020788.jpg -../coco/images/val2014/COCO_val2014_000000020912.jpg -../coco/images/val2014/COCO_val2014_000000020947.jpg -../coco/images/val2014/COCO_val2014_000000020972.jpg -../coco/images/val2014/COCO_val2014_000000021161.jpg -../coco/images/val2014/COCO_val2014_000000021483.jpg -../coco/images/val2014/COCO_val2014_000000021588.jpg -../coco/images/val2014/COCO_val2014_000000021639.jpg -../coco/images/val2014/COCO_val2014_000000021644.jpg -../coco/images/val2014/COCO_val2014_000000021645.jpg -../coco/images/val2014/COCO_val2014_000000021671.jpg -../coco/images/val2014/COCO_val2014_000000021746.jpg -../coco/images/val2014/COCO_val2014_000000021839.jpg -../coco/images/val2014/COCO_val2014_000000022002.jpg -../coco/images/val2014/COCO_val2014_000000022129.jpg -../coco/images/val2014/COCO_val2014_000000022191.jpg -../coco/images/val2014/COCO_val2014_000000022215.jpg -../coco/images/val2014/COCO_val2014_000000022341.jpg -../coco/images/val2014/COCO_val2014_000000022492.jpg -../coco/images/val2014/COCO_val2014_000000022563.jpg -../coco/images/val2014/COCO_val2014_000000022660.jpg -../coco/images/val2014/COCO_val2014_000000022705.jpg -../coco/images/val2014/COCO_val2014_000000023017.jpg -../coco/images/val2014/COCO_val2014_000000023309.jpg -../coco/images/val2014/COCO_val2014_000000023411.jpg -../coco/images/val2014/COCO_val2014_000000023754.jpg -../coco/images/val2014/COCO_val2014_000000023802.jpg -../coco/images/val2014/COCO_val2014_000000023981.jpg -../coco/images/val2014/COCO_val2014_000000023995.jpg -../coco/images/val2014/COCO_val2014_000000024112.jpg -../coco/images/val2014/COCO_val2014_000000024247.jpg -../coco/images/val2014/COCO_val2014_000000024396.jpg -../coco/images/val2014/COCO_val2014_000000024776.jpg -../coco/images/val2014/COCO_val2014_000000024924.jpg -../coco/images/val2014/COCO_val2014_000000025096.jpg -../coco/images/val2014/COCO_val2014_000000025191.jpg -../coco/images/val2014/COCO_val2014_000000025252.jpg -../coco/images/val2014/COCO_val2014_000000025293.jpg -../coco/images/val2014/COCO_val2014_000000025360.jpg -../coco/images/val2014/COCO_val2014_000000025595.jpg -../coco/images/val2014/COCO_val2014_000000025685.jpg -../coco/images/val2014/COCO_val2014_000000025807.jpg -../coco/images/val2014/COCO_val2014_000000025864.jpg -../coco/images/val2014/COCO_val2014_000000025989.jpg -../coco/images/val2014/COCO_val2014_000000026026.jpg -../coco/images/val2014/COCO_val2014_000000026430.jpg -../coco/images/val2014/COCO_val2014_000000026432.jpg -../coco/images/val2014/COCO_val2014_000000026534.jpg -../coco/images/val2014/COCO_val2014_000000026560.jpg -../coco/images/val2014/COCO_val2014_000000026564.jpg -../coco/images/val2014/COCO_val2014_000000026671.jpg -../coco/images/val2014/COCO_val2014_000000026690.jpg -../coco/images/val2014/COCO_val2014_000000026734.jpg -../coco/images/val2014/COCO_val2014_000000026799.jpg -../coco/images/val2014/COCO_val2014_000000026907.jpg -../coco/images/val2014/COCO_val2014_000000026908.jpg -../coco/images/val2014/COCO_val2014_000000026946.jpg -../coco/images/val2014/COCO_val2014_000000027530.jpg -../coco/images/val2014/COCO_val2014_000000027610.jpg -../coco/images/val2014/COCO_val2014_000000027620.jpg -../coco/images/val2014/COCO_val2014_000000027787.jpg -../coco/images/val2014/COCO_val2014_000000027789.jpg -../coco/images/val2014/COCO_val2014_000000027874.jpg -../coco/images/val2014/COCO_val2014_000000027946.jpg -../coco/images/val2014/COCO_val2014_000000027975.jpg -../coco/images/val2014/COCO_val2014_000000028022.jpg -../coco/images/val2014/COCO_val2014_000000028039.jpg -../coco/images/val2014/COCO_val2014_000000028273.jpg -../coco/images/val2014/COCO_val2014_000000028540.jpg -../coco/images/val2014/COCO_val2014_000000028702.jpg -../coco/images/val2014/COCO_val2014_000000028820.jpg -../coco/images/val2014/COCO_val2014_000000028874.jpg -../coco/images/val2014/COCO_val2014_000000029019.jpg -../coco/images/val2014/COCO_val2014_000000029030.jpg -../coco/images/val2014/COCO_val2014_000000029170.jpg -../coco/images/val2014/COCO_val2014_000000029308.jpg -../coco/images/val2014/COCO_val2014_000000029393.jpg -../coco/images/val2014/COCO_val2014_000000029524.jpg -../coco/images/val2014/COCO_val2014_000000029577.jpg -../coco/images/val2014/COCO_val2014_000000029648.jpg -../coco/images/val2014/COCO_val2014_000000029656.jpg -../coco/images/val2014/COCO_val2014_000000029697.jpg -../coco/images/val2014/COCO_val2014_000000029709.jpg -../coco/images/val2014/COCO_val2014_000000029719.jpg -../coco/images/val2014/COCO_val2014_000000030034.jpg -../coco/images/val2014/COCO_val2014_000000030062.jpg -../coco/images/val2014/COCO_val2014_000000030383.jpg -../coco/images/val2014/COCO_val2014_000000030470.jpg -../coco/images/val2014/COCO_val2014_000000030548.jpg -../coco/images/val2014/COCO_val2014_000000030668.jpg -../coco/images/val2014/COCO_val2014_000000030793.jpg -../coco/images/val2014/COCO_val2014_000000030843.jpg -../coco/images/val2014/COCO_val2014_000000030998.jpg -../coco/images/val2014/COCO_val2014_000000031151.jpg -../coco/images/val2014/COCO_val2014_000000031164.jpg -../coco/images/val2014/COCO_val2014_000000031176.jpg -../coco/images/val2014/COCO_val2014_000000031247.jpg -../coco/images/val2014/COCO_val2014_000000031392.jpg -../coco/images/val2014/COCO_val2014_000000031521.jpg -../coco/images/val2014/COCO_val2014_000000031542.jpg -../coco/images/val2014/COCO_val2014_000000031817.jpg -../coco/images/val2014/COCO_val2014_000000032081.jpg -../coco/images/val2014/COCO_val2014_000000032193.jpg -../coco/images/val2014/COCO_val2014_000000032331.jpg -../coco/images/val2014/COCO_val2014_000000032464.jpg -../coco/images/val2014/COCO_val2014_000000032510.jpg -../coco/images/val2014/COCO_val2014_000000032524.jpg -../coco/images/val2014/COCO_val2014_000000032625.jpg -../coco/images/val2014/COCO_val2014_000000032677.jpg -../coco/images/val2014/COCO_val2014_000000032715.jpg -../coco/images/val2014/COCO_val2014_000000032947.jpg -../coco/images/val2014/COCO_val2014_000000032964.jpg -../coco/images/val2014/COCO_val2014_000000033006.jpg -../coco/images/val2014/COCO_val2014_000000033055.jpg -../coco/images/val2014/COCO_val2014_000000033158.jpg -../coco/images/val2014/COCO_val2014_000000033243.jpg -../coco/images/val2014/COCO_val2014_000000033345.jpg -../coco/images/val2014/COCO_val2014_000000033499.jpg -../coco/images/val2014/COCO_val2014_000000033561.jpg -../coco/images/val2014/COCO_val2014_000000033830.jpg -../coco/images/val2014/COCO_val2014_000000033835.jpg -../coco/images/val2014/COCO_val2014_000000033924.jpg -../coco/images/val2014/COCO_val2014_000000034056.jpg -../coco/images/val2014/COCO_val2014_000000034114.jpg -../coco/images/val2014/COCO_val2014_000000034137.jpg -../coco/images/val2014/COCO_val2014_000000034183.jpg -../coco/images/val2014/COCO_val2014_000000034193.jpg -../coco/images/val2014/COCO_val2014_000000034299.jpg -../coco/images/val2014/COCO_val2014_000000034452.jpg -../coco/images/val2014/COCO_val2014_000000034689.jpg -../coco/images/val2014/COCO_val2014_000000034877.jpg -../coco/images/val2014/COCO_val2014_000000034892.jpg -../coco/images/val2014/COCO_val2014_000000034930.jpg -../coco/images/val2014/COCO_val2014_000000035012.jpg -../coco/images/val2014/COCO_val2014_000000035222.jpg -../coco/images/val2014/COCO_val2014_000000035326.jpg -../coco/images/val2014/COCO_val2014_000000035368.jpg -../coco/images/val2014/COCO_val2014_000000035474.jpg -../coco/images/val2014/COCO_val2014_000000035498.jpg -../coco/images/val2014/COCO_val2014_000000035738.jpg -../coco/images/val2014/COCO_val2014_000000035826.jpg -../coco/images/val2014/COCO_val2014_000000035940.jpg -../coco/images/val2014/COCO_val2014_000000035966.jpg -../coco/images/val2014/COCO_val2014_000000036049.jpg -../coco/images/val2014/COCO_val2014_000000036252.jpg -../coco/images/val2014/COCO_val2014_000000036508.jpg -../coco/images/val2014/COCO_val2014_000000036522.jpg -../coco/images/val2014/COCO_val2014_000000036539.jpg -../coco/images/val2014/COCO_val2014_000000036563.jpg -../coco/images/val2014/COCO_val2014_000000037038.jpg -../coco/images/val2014/COCO_val2014_000000037629.jpg -../coco/images/val2014/COCO_val2014_000000037675.jpg -../coco/images/val2014/COCO_val2014_000000037846.jpg -../coco/images/val2014/COCO_val2014_000000037865.jpg -../coco/images/val2014/COCO_val2014_000000037907.jpg -../coco/images/val2014/COCO_val2014_000000037988.jpg -../coco/images/val2014/COCO_val2014_000000038031.jpg -../coco/images/val2014/COCO_val2014_000000038190.jpg -../coco/images/val2014/COCO_val2014_000000038252.jpg -../coco/images/val2014/COCO_val2014_000000038296.jpg -../coco/images/val2014/COCO_val2014_000000038465.jpg -../coco/images/val2014/COCO_val2014_000000038488.jpg -../coco/images/val2014/COCO_val2014_000000038531.jpg -../coco/images/val2014/COCO_val2014_000000038539.jpg -../coco/images/val2014/COCO_val2014_000000038645.jpg -../coco/images/val2014/COCO_val2014_000000038685.jpg -../coco/images/val2014/COCO_val2014_000000038825.jpg -../coco/images/val2014/COCO_val2014_000000039322.jpg -../coco/images/val2014/COCO_val2014_000000039480.jpg -../coco/images/val2014/COCO_val2014_000000039697.jpg -../coco/images/val2014/COCO_val2014_000000039731.jpg -../coco/images/val2014/COCO_val2014_000000039743.jpg -../coco/images/val2014/COCO_val2014_000000039785.jpg -../coco/images/val2014/COCO_val2014_000000039961.jpg -../coco/images/val2014/COCO_val2014_000000040426.jpg -../coco/images/val2014/COCO_val2014_000000040485.jpg -../coco/images/val2014/COCO_val2014_000000040681.jpg -../coco/images/val2014/COCO_val2014_000000040686.jpg -../coco/images/val2014/COCO_val2014_000000040886.jpg -../coco/images/val2014/COCO_val2014_000000041119.jpg -../coco/images/val2014/COCO_val2014_000000041147.jpg -../coco/images/val2014/COCO_val2014_000000041322.jpg -../coco/images/val2014/COCO_val2014_000000041373.jpg -../coco/images/val2014/COCO_val2014_000000041550.jpg -../coco/images/val2014/COCO_val2014_000000041635.jpg -../coco/images/val2014/COCO_val2014_000000041867.jpg -../coco/images/val2014/COCO_val2014_000000041872.jpg -../coco/images/val2014/COCO_val2014_000000041924.jpg -../coco/images/val2014/COCO_val2014_000000042137.jpg -../coco/images/val2014/COCO_val2014_000000042279.jpg -../coco/images/val2014/COCO_val2014_000000042492.jpg -../coco/images/val2014/COCO_val2014_000000042576.jpg -../coco/images/val2014/COCO_val2014_000000042661.jpg -../coco/images/val2014/COCO_val2014_000000042743.jpg -../coco/images/val2014/COCO_val2014_000000042805.jpg -../coco/images/val2014/COCO_val2014_000000042837.jpg -../coco/images/val2014/COCO_val2014_000000043165.jpg -../coco/images/val2014/COCO_val2014_000000043218.jpg -../coco/images/val2014/COCO_val2014_000000043261.jpg -../coco/images/val2014/COCO_val2014_000000043404.jpg -../coco/images/val2014/COCO_val2014_000000043542.jpg -../coco/images/val2014/COCO_val2014_000000043605.jpg -../coco/images/val2014/COCO_val2014_000000043614.jpg -../coco/images/val2014/COCO_val2014_000000043673.jpg -../coco/images/val2014/COCO_val2014_000000043816.jpg -../coco/images/val2014/COCO_val2014_000000043850.jpg -../coco/images/val2014/COCO_val2014_000000044220.jpg -../coco/images/val2014/COCO_val2014_000000044269.jpg -../coco/images/val2014/COCO_val2014_000000044309.jpg -../coco/images/val2014/COCO_val2014_000000044478.jpg -../coco/images/val2014/COCO_val2014_000000044536.jpg -../coco/images/val2014/COCO_val2014_000000044559.jpg -../coco/images/val2014/COCO_val2014_000000044575.jpg -../coco/images/val2014/COCO_val2014_000000044612.jpg -../coco/images/val2014/COCO_val2014_000000044677.jpg -../coco/images/val2014/COCO_val2014_000000044699.jpg -../coco/images/val2014/COCO_val2014_000000044823.jpg -../coco/images/val2014/COCO_val2014_000000044989.jpg -../coco/images/val2014/COCO_val2014_000000045094.jpg -../coco/images/val2014/COCO_val2014_000000045176.jpg -../coco/images/val2014/COCO_val2014_000000045197.jpg -../coco/images/val2014/COCO_val2014_000000045367.jpg -../coco/images/val2014/COCO_val2014_000000045392.jpg -../coco/images/val2014/COCO_val2014_000000045433.jpg -../coco/images/val2014/COCO_val2014_000000045463.jpg -../coco/images/val2014/COCO_val2014_000000045550.jpg -../coco/images/val2014/COCO_val2014_000000045574.jpg -../coco/images/val2014/COCO_val2014_000000045627.jpg -../coco/images/val2014/COCO_val2014_000000045685.jpg -../coco/images/val2014/COCO_val2014_000000045728.jpg -../coco/images/val2014/COCO_val2014_000000046252.jpg -../coco/images/val2014/COCO_val2014_000000046269.jpg -../coco/images/val2014/COCO_val2014_000000046329.jpg -../coco/images/val2014/COCO_val2014_000000046805.jpg -../coco/images/val2014/COCO_val2014_000000046869.jpg -../coco/images/val2014/COCO_val2014_000000046919.jpg -../coco/images/val2014/COCO_val2014_000000046924.jpg -../coco/images/val2014/COCO_val2014_000000047008.jpg -../coco/images/val2014/COCO_val2014_000000047131.jpg -../coco/images/val2014/COCO_val2014_000000047226.jpg -../coco/images/val2014/COCO_val2014_000000047263.jpg -../coco/images/val2014/COCO_val2014_000000047395.jpg -../coco/images/val2014/COCO_val2014_000000047552.jpg -../coco/images/val2014/COCO_val2014_000000047570.jpg -../coco/images/val2014/COCO_val2014_000000047720.jpg -../coco/images/val2014/COCO_val2014_000000047775.jpg -../coco/images/val2014/COCO_val2014_000000047886.jpg -../coco/images/val2014/COCO_val2014_000000048504.jpg -../coco/images/val2014/COCO_val2014_000000048564.jpg -../coco/images/val2014/COCO_val2014_000000048668.jpg -../coco/images/val2014/COCO_val2014_000000048731.jpg -../coco/images/val2014/COCO_val2014_000000048739.jpg -../coco/images/val2014/COCO_val2014_000000048791.jpg -../coco/images/val2014/COCO_val2014_000000048840.jpg -../coco/images/val2014/COCO_val2014_000000048905.jpg -../coco/images/val2014/COCO_val2014_000000048910.jpg -../coco/images/val2014/COCO_val2014_000000048924.jpg -../coco/images/val2014/COCO_val2014_000000048956.jpg -../coco/images/val2014/COCO_val2014_000000049075.jpg -../coco/images/val2014/COCO_val2014_000000049236.jpg -../coco/images/val2014/COCO_val2014_000000049676.jpg -../coco/images/val2014/COCO_val2014_000000049881.jpg -../coco/images/val2014/COCO_val2014_000000049985.jpg -../coco/images/val2014/COCO_val2014_000000050100.jpg -../coco/images/val2014/COCO_val2014_000000050145.jpg -../coco/images/val2014/COCO_val2014_000000050177.jpg -../coco/images/val2014/COCO_val2014_000000050324.jpg -../coco/images/val2014/COCO_val2014_000000050331.jpg -../coco/images/val2014/COCO_val2014_000000050481.jpg -../coco/images/val2014/COCO_val2014_000000050485.jpg -../coco/images/val2014/COCO_val2014_000000050493.jpg -../coco/images/val2014/COCO_val2014_000000050746.jpg -../coco/images/val2014/COCO_val2014_000000050844.jpg -../coco/images/val2014/COCO_val2014_000000050896.jpg -../coco/images/val2014/COCO_val2014_000000051249.jpg -../coco/images/val2014/COCO_val2014_000000051250.jpg -../coco/images/val2014/COCO_val2014_000000051289.jpg -../coco/images/val2014/COCO_val2014_000000051314.jpg -../coco/images/val2014/COCO_val2014_000000051339.jpg -../coco/images/val2014/COCO_val2014_000000051461.jpg -../coco/images/val2014/COCO_val2014_000000051476.jpg -../coco/images/val2014/COCO_val2014_000000052005.jpg -../coco/images/val2014/COCO_val2014_000000052020.jpg -../coco/images/val2014/COCO_val2014_000000052290.jpg -../coco/images/val2014/COCO_val2014_000000052314.jpg -../coco/images/val2014/COCO_val2014_000000052425.jpg -../coco/images/val2014/COCO_val2014_000000052575.jpg -../coco/images/val2014/COCO_val2014_000000052871.jpg -../coco/images/val2014/COCO_val2014_000000052982.jpg -../coco/images/val2014/COCO_val2014_000000053139.jpg -../coco/images/val2014/COCO_val2014_000000053183.jpg -../coco/images/val2014/COCO_val2014_000000053263.jpg -../coco/images/val2014/COCO_val2014_000000053491.jpg -../coco/images/val2014/COCO_val2014_000000053503.jpg -../coco/images/val2014/COCO_val2014_000000053580.jpg -../coco/images/val2014/COCO_val2014_000000053616.jpg -../coco/images/val2014/COCO_val2014_000000053907.jpg -../coco/images/val2014/COCO_val2014_000000053949.jpg -../coco/images/val2014/COCO_val2014_000000054301.jpg -../coco/images/val2014/COCO_val2014_000000054334.jpg -../coco/images/val2014/COCO_val2014_000000054490.jpg -../coco/images/val2014/COCO_val2014_000000054527.jpg -../coco/images/val2014/COCO_val2014_000000054533.jpg -../coco/images/val2014/COCO_val2014_000000054603.jpg -../coco/images/val2014/COCO_val2014_000000054643.jpg -../coco/images/val2014/COCO_val2014_000000054679.jpg -../coco/images/val2014/COCO_val2014_000000054723.jpg -../coco/images/val2014/COCO_val2014_000000054959.jpg -../coco/images/val2014/COCO_val2014_000000055167.jpg -../coco/images/val2014/COCO_val2014_000000056137.jpg -../coco/images/val2014/COCO_val2014_000000056326.jpg -../coco/images/val2014/COCO_val2014_000000056541.jpg -../coco/images/val2014/COCO_val2014_000000056562.jpg -../coco/images/val2014/COCO_val2014_000000056624.jpg -../coco/images/val2014/COCO_val2014_000000056633.jpg -../coco/images/val2014/COCO_val2014_000000056724.jpg -../coco/images/val2014/COCO_val2014_000000056739.jpg -../coco/images/val2014/COCO_val2014_000000057027.jpg -../coco/images/val2014/COCO_val2014_000000057091.jpg -../coco/images/val2014/COCO_val2014_000000057095.jpg -../coco/images/val2014/COCO_val2014_000000057100.jpg -../coco/images/val2014/COCO_val2014_000000057149.jpg -../coco/images/val2014/COCO_val2014_000000057238.jpg -../coco/images/val2014/COCO_val2014_000000057359.jpg -../coco/images/val2014/COCO_val2014_000000057454.jpg -../coco/images/val2014/COCO_val2014_000000058001.jpg -../coco/images/val2014/COCO_val2014_000000058157.jpg -../coco/images/val2014/COCO_val2014_000000058223.jpg From e6ae688bd3fad74455d5b0e28010ee3258dca001 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 7 Dec 2019 00:55:36 -0800 Subject: [PATCH 1709/2595] updates --- utils/datasets.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/utils/datasets.py b/utils/datasets.py index ef706812..c82abea4 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -782,6 +782,26 @@ def convert_images2bmp(): # from utils.datasets import *; convert_images2bmp() f.write(lines) +def recursive_dataset2bmp(dataset='../data/sm4_bmp'): # from utils.datasets import *; recursive_dataset2bmp() + # Converts dataset to bmp (for faster training) + formats = [x.lower() for x in img_formats] + [x.upper() for x in img_formats] + for a, b, files in os.walk(dataset): + for file in tqdm(files, desc=a): + p = a + '/' + file + s = Path(file).suffix + if s == '.txt': # replace text + with open(p, 'r') as f: + lines = f.read() + for f in formats: + lines = lines.replace(f, '.bmp') + with open(p, 'w') as f: + f.write(lines) + elif s in formats: # replace image + cv2.imwrite(p.replace(s, '.bmp'), cv2.imread(p)) + if s != '.bmp': + os.system("rm '%s'" % p) + + def imagelist2folder(path='data/coco_64img.txt'): # from utils.datasets import *; imagelist2folder() # Copies all the images in a text file (list of images) into a folder create_folder(path[:-4]) From 55ba979816caa2a728eb117cdfce73a74c801f19 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 7 Dec 2019 01:26:41 -0800 Subject: [PATCH 1710/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 40fcee33..e22789ee 100644 --- a/train.py +++ b/train.py @@ -37,8 +37,8 @@ hyp = {'giou': 3.54, # giou loss gain 'hsv_s': 0.678, # image HSV-Saturation augmentation (fraction) 'hsv_v': 0.36, # image HSV-Value augmentation (fraction) 'degrees': 1.98, # image rotation (+/- deg) - 'translate': 0.0779, # image translation (+/- fraction) - 'scale': 0.10, # image scale (+/- gain) + 'translate': 0.05, # image translation (+/- fraction) + 'scale': 0.05, # image scale (+/- gain) 'shear': 0.641} # image shear (+/- deg) # Overwrite hyp with hyp*.txt (optional) From 562ec851027b9771934fd02bb672df0cb549cdea Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 7 Dec 2019 15:02:35 -0800 Subject: [PATCH 1711/2595] updates --- cfg/yolov3s-18a320.cfg | 821 ---------------------------------------- cfg/yolov3s-30a320.cfg | 821 ---------------------------------------- cfg/yolov3s-3a320.cfg | 821 ---------------------------------------- cfg/yolov3s-9a320.cfg | 821 ---------------------------------------- cfg/yolov3s-9a416ms.cfg | 821 ---------------------------------------- cfg/yolov3s-9a512.cfg | 821 ---------------------------------------- cfg/yolov3s-9a512ms.cfg | 821 ---------------------------------------- 7 files changed, 5747 deletions(-) delete mode 100644 cfg/yolov3s-18a320.cfg delete mode 100644 cfg/yolov3s-30a320.cfg delete mode 100644 cfg/yolov3s-3a320.cfg delete mode 100644 cfg/yolov3s-9a320.cfg delete mode 100644 cfg/yolov3s-9a416ms.cfg delete mode 100644 cfg/yolov3s-9a512.cfg delete mode 100644 cfg/yolov3s-9a512ms.cfg diff --git a/cfg/yolov3s-18a320.cfg b/cfg/yolov3s-18a320.cfg deleted file mode 100644 index 1f39f4ef..00000000 --- a/cfg/yolov3s-18a320.cfg +++ /dev/null @@ -1,821 +0,0 @@ -[net] -# Testing -# batch=1 -# subdivisions=1 -# Training -batch=64 -subdivisions=16 -width=608 -height=608 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=1000 -max_batches = 500200 -policy=steps -steps=400000,450000 -scales=.1,.1 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=32 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -###################### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -### SPP ### -[maxpool] -stride=1 -size=5 - -[route] -layers=-2 - -[maxpool] -stride=1 -size=9 - -[route] -layers=-4 - -[maxpool] -stride=1 -size=13 - -[route] -layers=-1,-3,-5,-6 - -### End SPP ### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=510 -activation=linear - - -[yolo] -mask = 12,13,14,15,16,17 -anchors = 7,8, 11,20, 27,15, 20,36, 50,29, 28,60, 61,61, 99,39, 43,99, 98,91, 66,148, 180,68, 139,135, 104,210, 285,92, 205,173, 186,274, 302,212 -classes=80 -num=18 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 61 - - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=510 -activation=linear - - -[yolo] -mask = 6,7,8,9,10,11 -anchors = 7,8, 11,20, 27,15, 20,36, 50,29, 28,60, 61,61, 99,39, 43,99, 98,91, 66,148, 180,68, 139,135, 104,210, 285,92, 205,173, 186,274, 302,212 -classes=80 -num=18 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 36 - - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=510 -activation=linear - - -[yolo] -mask = 0,1,2,3,4,5 -anchors = 7,8, 11,20, 27,15, 20,36, 50,29, 28,60, 61,61, 99,39, 43,99, 98,91, 66,148, 180,68, 139,135, 104,210, 285,92, 205,173, 186,274, 302,212 -classes=80 -num=18 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 diff --git a/cfg/yolov3s-30a320.cfg b/cfg/yolov3s-30a320.cfg deleted file mode 100644 index d5cb7bad..00000000 --- a/cfg/yolov3s-30a320.cfg +++ /dev/null @@ -1,821 +0,0 @@ -[net] -# Testing -# batch=1 -# subdivisions=1 -# Training -batch=64 -subdivisions=16 -width=608 -height=608 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=1000 -max_batches = 500200 -policy=steps -steps=400000,450000 -scales=.1,.1 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=32 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -###################### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -### SPP ### -[maxpool] -stride=1 -size=5 - -[route] -layers=-2 - -[maxpool] -stride=1 -size=9 - -[route] -layers=-4 - -[maxpool] -stride=1 -size=13 - -[route] -layers=-1,-3,-5,-6 - -### End SPP ### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=850 -activation=linear - - -[yolo] -mask = 20,21,22,23,24,25,26,27,28,29 -anchors = 6,7, 9,18, 17,10, 21,22, 14,33, 36,15, 22,51, 34,34, 59,24, 32,74, 51,49, 90,38, 41,105, 67,72, 144,48, 54,148, 106,79, 81,109, 211,63, 107,147, 81,200, 149,112, 297,73, 152,187, 214,135, 121,264, 220,206, 299,153, 211,291, 309,230 -classes=80 -num=30 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 61 - - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=850 -activation=linear - - -[yolo] -mask = 10,11,12,13,14,15,16,17,18,19 -anchors = 6,7, 9,18, 17,10, 21,22, 14,33, 36,15, 22,51, 34,34, 59,24, 32,74, 51,49, 90,38, 41,105, 67,72, 144,48, 54,148, 106,79, 81,109, 211,63, 107,147, 81,200, 149,112, 297,73, 152,187, 214,135, 121,264, 220,206, 299,153, 211,291, 309,230 -classes=80 -num=30 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 36 - - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=850 -activation=linear - - -[yolo] -mask = 0,1,2,3,4,5,6,7,8,9 -anchors = 6,7, 9,18, 17,10, 21,22, 14,33, 36,15, 22,51, 34,34, 59,24, 32,74, 51,49, 90,38, 41,105, 67,72, 144,48, 54,148, 106,79, 81,109, 211,63, 107,147, 81,200, 149,112, 297,73, 152,187, 214,135, 121,264, 220,206, 299,153, 211,291, 309,230 -classes=80 -num=30 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 diff --git a/cfg/yolov3s-3a320.cfg b/cfg/yolov3s-3a320.cfg deleted file mode 100644 index 79897398..00000000 --- a/cfg/yolov3s-3a320.cfg +++ /dev/null @@ -1,821 +0,0 @@ -[net] -# Testing -# batch=1 -# subdivisions=1 -# Training -batch=64 -subdivisions=16 -width=608 -height=608 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=1000 -max_batches = 500200 -policy=steps -steps=400000,450000 -scales=.1,.1 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=32 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -###################### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -### SPP ### -[maxpool] -stride=1 -size=5 - -[route] -layers=-2 - -[maxpool] -stride=1 -size=9 - -[route] -layers=-4 - -[maxpool] -stride=1 -size=13 - -[route] -layers=-1,-3,-5,-6 - -### End SPP ### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=85 -activation=linear - - -[yolo] -mask = 2 -anchors = 16,30, 62,45, 156,198 -classes=80 -num=3 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 61 - - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=85 -activation=linear - - -[yolo] -mask = 1 -anchors = 16,30, 62,45, 156,198 -classes=80 -num=3 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 36 - - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=85 -activation=linear - - -[yolo] -mask = 0 -anchors = 16,30, 62,45, 156,198 -classes=80 -num=3 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 diff --git a/cfg/yolov3s-9a320.cfg b/cfg/yolov3s-9a320.cfg deleted file mode 100644 index 0200180d..00000000 --- a/cfg/yolov3s-9a320.cfg +++ /dev/null @@ -1,821 +0,0 @@ -[net] -# Testing -# batch=1 -# subdivisions=1 -# Training -batch=64 -subdivisions=16 -width=608 -height=608 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=1000 -max_batches = 500200 -policy=steps -steps=400000,450000 -scales=.1,.1 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=32 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -###################### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -### SPP ### -[maxpool] -stride=1 -size=5 - -[route] -layers=-2 - -[maxpool] -stride=1 -size=9 - -[route] -layers=-4 - -[maxpool] -stride=1 -size=13 - -[route] -layers=-1,-3,-5,-6 - -### End SPP ### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 6,7,8 -anchors = 9,11, 25,27, 33,63, 71,43, 62,120, 135,86, 123,199, 257,100, 264,223 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 61 - - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 3,4,5 -anchors = 9,11, 25,27, 33,63, 71,43, 62,120, 135,86, 123,199, 257,100, 264,223 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 36 - - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 0,1,2 -anchors = 9,11, 25,27, 33,63, 71,43, 62,120, 135,86, 123,199, 257,100, 264,223 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 diff --git a/cfg/yolov3s-9a416ms.cfg b/cfg/yolov3s-9a416ms.cfg deleted file mode 100644 index 2433e4c4..00000000 --- a/cfg/yolov3s-9a416ms.cfg +++ /dev/null @@ -1,821 +0,0 @@ -[net] -# Testing -# batch=1 -# subdivisions=1 -# Training -batch=64 -subdivisions=16 -width=608 -height=608 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=1000 -max_batches = 500200 -policy=steps -steps=400000,450000 -scales=.1,.1 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=32 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -###################### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -### SPP ### -[maxpool] -stride=1 -size=5 - -[route] -layers=-2 - -[maxpool] -stride=1 -size=9 - -[route] -layers=-4 - -[maxpool] -stride=1 -size=13 - -[route] -layers=-1,-3,-5,-6 - -### End SPP ### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 6,7,8 -anchors = 13,13, 24,41, 62,38, 52,96, 135,80, 105,182, 269,141, 201,320, 445,292 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 61 - - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 3,4,5 -anchors = 13,13, 24,41, 62,38, 52,96, 135,80, 105,182, 269,141, 201,320, 445,292 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 36 - - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 0,1,2 -anchors = 13,13, 24,41, 62,38, 52,96, 135,80, 105,182, 269,141, 201,320, 445,292 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 diff --git a/cfg/yolov3s-9a512.cfg b/cfg/yolov3s-9a512.cfg deleted file mode 100644 index 25912121..00000000 --- a/cfg/yolov3s-9a512.cfg +++ /dev/null @@ -1,821 +0,0 @@ -[net] -# Testing -# batch=1 -# subdivisions=1 -# Training -batch=64 -subdivisions=16 -width=608 -height=608 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=1000 -max_batches = 500200 -policy=steps -steps=400000,450000 -scales=.1,.1 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=32 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -###################### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -### SPP ### -[maxpool] -stride=1 -size=5 - -[route] -layers=-2 - -[maxpool] -stride=1 -size=9 - -[route] -layers=-4 - -[maxpool] -stride=1 -size=13 - -[route] -layers=-1,-3,-5,-6 - -### End SPP ### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 6,7,8 -anchors = 15,17, 39,44, 55,107, 109,65, 101,203, 203,134, 396,154, 209,324, 434,348 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 61 - - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 3,4,5 -anchors = 15,17, 39,44, 55,107, 109,65, 101,203, 203,134, 396,154, 209,324, 434,348 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 36 - - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 0,1,2 -anchors = 15,17, 39,44, 55,107, 109,65, 101,203, 203,134, 396,154, 209,324, 434,348 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 diff --git a/cfg/yolov3s-9a512ms.cfg b/cfg/yolov3s-9a512ms.cfg deleted file mode 100644 index ae44c597..00000000 --- a/cfg/yolov3s-9a512ms.cfg +++ /dev/null @@ -1,821 +0,0 @@ -[net] -# Testing -# batch=1 -# subdivisions=1 -# Training -batch=64 -subdivisions=16 -width=608 -height=608 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=1000 -max_batches = 500200 -policy=steps -steps=400000,450000 -scales=.1,.1 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=32 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -###################### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -### SPP ### -[maxpool] -stride=1 -size=5 - -[route] -layers=-2 - -[maxpool] -stride=1 -size=9 - -[route] -layers=-4 - -[maxpool] -stride=1 -size=13 - -[route] -layers=-1,-3,-5,-6 - -### End SPP ### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 6,7,8 -anchors = 15,16, 32,48, 84,50, 63,118, 170,103, 128,225, 334,175, 246,394, 548,359 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 61 - - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 3,4,5 -anchors = 15,16, 32,48, 84,50, 63,118, 170,103, 128,225, 334,175, 246,394, 548,359 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 36 - - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 0,1,2 -anchors = 15,16, 32,48, 84,50, 63,118, 170,103, 128,225, 334,175, 246,394, 548,359 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 From 91b5fb3c9fc2fa9906ec3114b7ff609992d0dc6f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 7 Dec 2019 15:04:29 -0800 Subject: [PATCH 1712/2595] updates --- data/coco_1000img.data | 6 - data/coco_1000img.txt | 1000 ---------------------------------------- data/coco_1000val.data | 6 - data/coco_1000val.txt | 1000 ---------------------------------------- data/coco_1k5k.data | 6 - 5 files changed, 2018 deletions(-) delete mode 100644 data/coco_1000img.data delete mode 100644 data/coco_1000img.txt delete mode 100644 data/coco_1000val.data delete mode 100644 data/coco_1000val.txt delete mode 100644 data/coco_1k5k.data diff --git a/data/coco_1000img.data b/data/coco_1000img.data deleted file mode 100644 index 958c45c4..00000000 --- a/data/coco_1000img.data +++ /dev/null @@ -1,6 +0,0 @@ -classes=80 -train=./data/coco_1000img.txt -valid=./data/coco_1000img.txt -names=data/coco.names -backup=backup/ -eval=coco diff --git a/data/coco_1000img.txt b/data/coco_1000img.txt deleted file mode 100644 index a6d6143e..00000000 --- a/data/coco_1000img.txt +++ /dev/null @@ -1,1000 +0,0 @@ -../coco/images/train2014/COCO_train2014_000000000009.jpg -../coco/images/train2014/COCO_train2014_000000000025.jpg -../coco/images/train2014/COCO_train2014_000000000030.jpg -../coco/images/train2014/COCO_train2014_000000000034.jpg -../coco/images/train2014/COCO_train2014_000000000036.jpg -../coco/images/train2014/COCO_train2014_000000000049.jpg -../coco/images/train2014/COCO_train2014_000000000061.jpg -../coco/images/train2014/COCO_train2014_000000000064.jpg -../coco/images/train2014/COCO_train2014_000000000071.jpg -../coco/images/train2014/COCO_train2014_000000000072.jpg -../coco/images/train2014/COCO_train2014_000000000077.jpg -../coco/images/train2014/COCO_train2014_000000000078.jpg -../coco/images/train2014/COCO_train2014_000000000081.jpg -../coco/images/train2014/COCO_train2014_000000000086.jpg -../coco/images/train2014/COCO_train2014_000000000089.jpg -../coco/images/train2014/COCO_train2014_000000000092.jpg -../coco/images/train2014/COCO_train2014_000000000094.jpg -../coco/images/train2014/COCO_train2014_000000000109.jpg -../coco/images/train2014/COCO_train2014_000000000110.jpg -../coco/images/train2014/COCO_train2014_000000000113.jpg -../coco/images/train2014/COCO_train2014_000000000127.jpg -../coco/images/train2014/COCO_train2014_000000000138.jpg -../coco/images/train2014/COCO_train2014_000000000142.jpg -../coco/images/train2014/COCO_train2014_000000000144.jpg -../coco/images/train2014/COCO_train2014_000000000149.jpg -../coco/images/train2014/COCO_train2014_000000000151.jpg -../coco/images/train2014/COCO_train2014_000000000154.jpg -../coco/images/train2014/COCO_train2014_000000000165.jpg -../coco/images/train2014/COCO_train2014_000000000194.jpg -../coco/images/train2014/COCO_train2014_000000000201.jpg -../coco/images/train2014/COCO_train2014_000000000247.jpg -../coco/images/train2014/COCO_train2014_000000000260.jpg -../coco/images/train2014/COCO_train2014_000000000263.jpg -../coco/images/train2014/COCO_train2014_000000000307.jpg -../coco/images/train2014/COCO_train2014_000000000308.jpg -../coco/images/train2014/COCO_train2014_000000000309.jpg -../coco/images/train2014/COCO_train2014_000000000312.jpg -../coco/images/train2014/COCO_train2014_000000000315.jpg -../coco/images/train2014/COCO_train2014_000000000321.jpg -../coco/images/train2014/COCO_train2014_000000000322.jpg -../coco/images/train2014/COCO_train2014_000000000326.jpg -../coco/images/train2014/COCO_train2014_000000000332.jpg -../coco/images/train2014/COCO_train2014_000000000349.jpg -../coco/images/train2014/COCO_train2014_000000000368.jpg -../coco/images/train2014/COCO_train2014_000000000370.jpg -../coco/images/train2014/COCO_train2014_000000000382.jpg -../coco/images/train2014/COCO_train2014_000000000384.jpg -../coco/images/train2014/COCO_train2014_000000000389.jpg -../coco/images/train2014/COCO_train2014_000000000394.jpg -../coco/images/train2014/COCO_train2014_000000000404.jpg -../coco/images/train2014/COCO_train2014_000000000419.jpg -../coco/images/train2014/COCO_train2014_000000000431.jpg -../coco/images/train2014/COCO_train2014_000000000436.jpg -../coco/images/train2014/COCO_train2014_000000000438.jpg -../coco/images/train2014/COCO_train2014_000000000443.jpg -../coco/images/train2014/COCO_train2014_000000000446.jpg -../coco/images/train2014/COCO_train2014_000000000450.jpg -../coco/images/train2014/COCO_train2014_000000000471.jpg -../coco/images/train2014/COCO_train2014_000000000490.jpg -../coco/images/train2014/COCO_train2014_000000000491.jpg -../coco/images/train2014/COCO_train2014_000000000510.jpg -../coco/images/train2014/COCO_train2014_000000000514.jpg -../coco/images/train2014/COCO_train2014_000000000529.jpg -../coco/images/train2014/COCO_train2014_000000000531.jpg -../coco/images/train2014/COCO_train2014_000000000532.jpg -../coco/images/train2014/COCO_train2014_000000000540.jpg -../coco/images/train2014/COCO_train2014_000000000542.jpg -../coco/images/train2014/COCO_train2014_000000000560.jpg -../coco/images/train2014/COCO_train2014_000000000562.jpg -../coco/images/train2014/COCO_train2014_000000000572.jpg -../coco/images/train2014/COCO_train2014_000000000575.jpg -../coco/images/train2014/COCO_train2014_000000000581.jpg -../coco/images/train2014/COCO_train2014_000000000584.jpg -../coco/images/train2014/COCO_train2014_000000000595.jpg -../coco/images/train2014/COCO_train2014_000000000597.jpg -../coco/images/train2014/COCO_train2014_000000000605.jpg -../coco/images/train2014/COCO_train2014_000000000612.jpg -../coco/images/train2014/COCO_train2014_000000000620.jpg -../coco/images/train2014/COCO_train2014_000000000625.jpg -../coco/images/train2014/COCO_train2014_000000000629.jpg -../coco/images/train2014/COCO_train2014_000000000634.jpg -../coco/images/train2014/COCO_train2014_000000000643.jpg -../coco/images/train2014/COCO_train2014_000000000650.jpg -../coco/images/train2014/COCO_train2014_000000000656.jpg -../coco/images/train2014/COCO_train2014_000000000659.jpg -../coco/images/train2014/COCO_train2014_000000000670.jpg -../coco/images/train2014/COCO_train2014_000000000671.jpg -../coco/images/train2014/COCO_train2014_000000000673.jpg -../coco/images/train2014/COCO_train2014_000000000681.jpg -../coco/images/train2014/COCO_train2014_000000000684.jpg -../coco/images/train2014/COCO_train2014_000000000690.jpg -../coco/images/train2014/COCO_train2014_000000000706.jpg -../coco/images/train2014/COCO_train2014_000000000714.jpg -../coco/images/train2014/COCO_train2014_000000000716.jpg -../coco/images/train2014/COCO_train2014_000000000722.jpg -../coco/images/train2014/COCO_train2014_000000000723.jpg -../coco/images/train2014/COCO_train2014_000000000731.jpg -../coco/images/train2014/COCO_train2014_000000000735.jpg -../coco/images/train2014/COCO_train2014_000000000753.jpg -../coco/images/train2014/COCO_train2014_000000000754.jpg -../coco/images/train2014/COCO_train2014_000000000762.jpg -../coco/images/train2014/COCO_train2014_000000000781.jpg -../coco/images/train2014/COCO_train2014_000000000790.jpg -../coco/images/train2014/COCO_train2014_000000000795.jpg -../coco/images/train2014/COCO_train2014_000000000797.jpg -../coco/images/train2014/COCO_train2014_000000000801.jpg -../coco/images/train2014/COCO_train2014_000000000813.jpg -../coco/images/train2014/COCO_train2014_000000000821.jpg -../coco/images/train2014/COCO_train2014_000000000825.jpg -../coco/images/train2014/COCO_train2014_000000000828.jpg -../coco/images/train2014/COCO_train2014_000000000839.jpg -../coco/images/train2014/COCO_train2014_000000000853.jpg -../coco/images/train2014/COCO_train2014_000000000882.jpg -../coco/images/train2014/COCO_train2014_000000000897.jpg -../coco/images/train2014/COCO_train2014_000000000901.jpg -../coco/images/train2014/COCO_train2014_000000000902.jpg -../coco/images/train2014/COCO_train2014_000000000908.jpg -../coco/images/train2014/COCO_train2014_000000000909.jpg -../coco/images/train2014/COCO_train2014_000000000913.jpg -../coco/images/train2014/COCO_train2014_000000000925.jpg -../coco/images/train2014/COCO_train2014_000000000927.jpg -../coco/images/train2014/COCO_train2014_000000000934.jpg -../coco/images/train2014/COCO_train2014_000000000941.jpg -../coco/images/train2014/COCO_train2014_000000000943.jpg -../coco/images/train2014/COCO_train2014_000000000955.jpg -../coco/images/train2014/COCO_train2014_000000000960.jpg -../coco/images/train2014/COCO_train2014_000000000965.jpg -../coco/images/train2014/COCO_train2014_000000000977.jpg -../coco/images/train2014/COCO_train2014_000000000982.jpg -../coco/images/train2014/COCO_train2014_000000000984.jpg -../coco/images/train2014/COCO_train2014_000000000996.jpg -../coco/images/train2014/COCO_train2014_000000001006.jpg -../coco/images/train2014/COCO_train2014_000000001011.jpg -../coco/images/train2014/COCO_train2014_000000001014.jpg -../coco/images/train2014/COCO_train2014_000000001025.jpg -../coco/images/train2014/COCO_train2014_000000001036.jpg -../coco/images/train2014/COCO_train2014_000000001053.jpg -../coco/images/train2014/COCO_train2014_000000001059.jpg -../coco/images/train2014/COCO_train2014_000000001072.jpg -../coco/images/train2014/COCO_train2014_000000001084.jpg -../coco/images/train2014/COCO_train2014_000000001085.jpg -../coco/images/train2014/COCO_train2014_000000001090.jpg -../coco/images/train2014/COCO_train2014_000000001098.jpg -../coco/images/train2014/COCO_train2014_000000001099.jpg -../coco/images/train2014/COCO_train2014_000000001102.jpg -../coco/images/train2014/COCO_train2014_000000001107.jpg -../coco/images/train2014/COCO_train2014_000000001108.jpg -../coco/images/train2014/COCO_train2014_000000001122.jpg -../coco/images/train2014/COCO_train2014_000000001139.jpg -../coco/images/train2014/COCO_train2014_000000001144.jpg -../coco/images/train2014/COCO_train2014_000000001145.jpg -../coco/images/train2014/COCO_train2014_000000001155.jpg -../coco/images/train2014/COCO_train2014_000000001166.jpg -../coco/images/train2014/COCO_train2014_000000001168.jpg -../coco/images/train2014/COCO_train2014_000000001183.jpg -../coco/images/train2014/COCO_train2014_000000001200.jpg -../coco/images/train2014/COCO_train2014_000000001204.jpg -../coco/images/train2014/COCO_train2014_000000001213.jpg -../coco/images/train2014/COCO_train2014_000000001216.jpg -../coco/images/train2014/COCO_train2014_000000001224.jpg -../coco/images/train2014/COCO_train2014_000000001232.jpg -../coco/images/train2014/COCO_train2014_000000001237.jpg -../coco/images/train2014/COCO_train2014_000000001238.jpg -../coco/images/train2014/COCO_train2014_000000001261.jpg -../coco/images/train2014/COCO_train2014_000000001264.jpg -../coco/images/train2014/COCO_train2014_000000001271.jpg -../coco/images/train2014/COCO_train2014_000000001282.jpg -../coco/images/train2014/COCO_train2014_000000001295.jpg -../coco/images/train2014/COCO_train2014_000000001298.jpg -../coco/images/train2014/COCO_train2014_000000001306.jpg -../coco/images/train2014/COCO_train2014_000000001307.jpg -../coco/images/train2014/COCO_train2014_000000001308.jpg -../coco/images/train2014/COCO_train2014_000000001311.jpg -../coco/images/train2014/COCO_train2014_000000001315.jpg -../coco/images/train2014/COCO_train2014_000000001319.jpg -../coco/images/train2014/COCO_train2014_000000001323.jpg -../coco/images/train2014/COCO_train2014_000000001330.jpg -../coco/images/train2014/COCO_train2014_000000001332.jpg -../coco/images/train2014/COCO_train2014_000000001350.jpg -../coco/images/train2014/COCO_train2014_000000001355.jpg -../coco/images/train2014/COCO_train2014_000000001359.jpg -../coco/images/train2014/COCO_train2014_000000001360.jpg -../coco/images/train2014/COCO_train2014_000000001366.jpg -../coco/images/train2014/COCO_train2014_000000001375.jpg -../coco/images/train2014/COCO_train2014_000000001381.jpg -../coco/images/train2014/COCO_train2014_000000001386.jpg -../coco/images/train2014/COCO_train2014_000000001390.jpg -../coco/images/train2014/COCO_train2014_000000001392.jpg -../coco/images/train2014/COCO_train2014_000000001397.jpg -../coco/images/train2014/COCO_train2014_000000001401.jpg -../coco/images/train2014/COCO_train2014_000000001403.jpg -../coco/images/train2014/COCO_train2014_000000001407.jpg -../coco/images/train2014/COCO_train2014_000000001408.jpg -../coco/images/train2014/COCO_train2014_000000001424.jpg -../coco/images/train2014/COCO_train2014_000000001431.jpg -../coco/images/train2014/COCO_train2014_000000001451.jpg -../coco/images/train2014/COCO_train2014_000000001453.jpg -../coco/images/train2014/COCO_train2014_000000001455.jpg -../coco/images/train2014/COCO_train2014_000000001488.jpg -../coco/images/train2014/COCO_train2014_000000001496.jpg -../coco/images/train2014/COCO_train2014_000000001497.jpg -../coco/images/train2014/COCO_train2014_000000001501.jpg -../coco/images/train2014/COCO_train2014_000000001505.jpg -../coco/images/train2014/COCO_train2014_000000001507.jpg -../coco/images/train2014/COCO_train2014_000000001510.jpg -../coco/images/train2014/COCO_train2014_000000001515.jpg -../coco/images/train2014/COCO_train2014_000000001518.jpg -../coco/images/train2014/COCO_train2014_000000001522.jpg -../coco/images/train2014/COCO_train2014_000000001523.jpg -../coco/images/train2014/COCO_train2014_000000001526.jpg -../coco/images/train2014/COCO_train2014_000000001527.jpg -../coco/images/train2014/COCO_train2014_000000001536.jpg -../coco/images/train2014/COCO_train2014_000000001548.jpg -../coco/images/train2014/COCO_train2014_000000001558.jpg -../coco/images/train2014/COCO_train2014_000000001562.jpg -../coco/images/train2014/COCO_train2014_000000001569.jpg -../coco/images/train2014/COCO_train2014_000000001579.jpg -../coco/images/train2014/COCO_train2014_000000001580.jpg -../coco/images/train2014/COCO_train2014_000000001586.jpg -../coco/images/train2014/COCO_train2014_000000001589.jpg -../coco/images/train2014/COCO_train2014_000000001596.jpg -../coco/images/train2014/COCO_train2014_000000001611.jpg -../coco/images/train2014/COCO_train2014_000000001622.jpg -../coco/images/train2014/COCO_train2014_000000001625.jpg -../coco/images/train2014/COCO_train2014_000000001637.jpg -../coco/images/train2014/COCO_train2014_000000001639.jpg -../coco/images/train2014/COCO_train2014_000000001645.jpg -../coco/images/train2014/COCO_train2014_000000001670.jpg -../coco/images/train2014/COCO_train2014_000000001674.jpg -../coco/images/train2014/COCO_train2014_000000001681.jpg -../coco/images/train2014/COCO_train2014_000000001688.jpg -../coco/images/train2014/COCO_train2014_000000001697.jpg -../coco/images/train2014/COCO_train2014_000000001706.jpg -../coco/images/train2014/COCO_train2014_000000001709.jpg -../coco/images/train2014/COCO_train2014_000000001712.jpg -../coco/images/train2014/COCO_train2014_000000001720.jpg -../coco/images/train2014/COCO_train2014_000000001732.jpg -../coco/images/train2014/COCO_train2014_000000001737.jpg -../coco/images/train2014/COCO_train2014_000000001756.jpg -../coco/images/train2014/COCO_train2014_000000001762.jpg -../coco/images/train2014/COCO_train2014_000000001764.jpg -../coco/images/train2014/COCO_train2014_000000001771.jpg -../coco/images/train2014/COCO_train2014_000000001774.jpg -../coco/images/train2014/COCO_train2014_000000001777.jpg -../coco/images/train2014/COCO_train2014_000000001781.jpg -../coco/images/train2014/COCO_train2014_000000001785.jpg -../coco/images/train2014/COCO_train2014_000000001786.jpg -../coco/images/train2014/COCO_train2014_000000001790.jpg -../coco/images/train2014/COCO_train2014_000000001792.jpg -../coco/images/train2014/COCO_train2014_000000001804.jpg -../coco/images/train2014/COCO_train2014_000000001810.jpg -../coco/images/train2014/COCO_train2014_000000001811.jpg -../coco/images/train2014/COCO_train2014_000000001813.jpg -../coco/images/train2014/COCO_train2014_000000001815.jpg -../coco/images/train2014/COCO_train2014_000000001822.jpg -../coco/images/train2014/COCO_train2014_000000001837.jpg -../coco/images/train2014/COCO_train2014_000000001864.jpg -../coco/images/train2014/COCO_train2014_000000001875.jpg -../coco/images/train2014/COCO_train2014_000000001877.jpg -../coco/images/train2014/COCO_train2014_000000001888.jpg -../coco/images/train2014/COCO_train2014_000000001895.jpg -../coco/images/train2014/COCO_train2014_000000001900.jpg -../coco/images/train2014/COCO_train2014_000000001902.jpg -../coco/images/train2014/COCO_train2014_000000001906.jpg -../coco/images/train2014/COCO_train2014_000000001907.jpg -../coco/images/train2014/COCO_train2014_000000001911.jpg -../coco/images/train2014/COCO_train2014_000000001912.jpg -../coco/images/train2014/COCO_train2014_000000001915.jpg -../coco/images/train2014/COCO_train2014_000000001924.jpg -../coco/images/train2014/COCO_train2014_000000001926.jpg -../coco/images/train2014/COCO_train2014_000000001941.jpg -../coco/images/train2014/COCO_train2014_000000001942.jpg -../coco/images/train2014/COCO_train2014_000000001943.jpg -../coco/images/train2014/COCO_train2014_000000001947.jpg -../coco/images/train2014/COCO_train2014_000000001958.jpg -../coco/images/train2014/COCO_train2014_000000001966.jpg -../coco/images/train2014/COCO_train2014_000000001994.jpg -../coco/images/train2014/COCO_train2014_000000001999.jpg -../coco/images/train2014/COCO_train2014_000000002001.jpg -../coco/images/train2014/COCO_train2014_000000002007.jpg -../coco/images/train2014/COCO_train2014_000000002024.jpg -../coco/images/train2014/COCO_train2014_000000002055.jpg -../coco/images/train2014/COCO_train2014_000000002056.jpg -../coco/images/train2014/COCO_train2014_000000002066.jpg -../coco/images/train2014/COCO_train2014_000000002068.jpg -../coco/images/train2014/COCO_train2014_000000002072.jpg -../coco/images/train2014/COCO_train2014_000000002083.jpg -../coco/images/train2014/COCO_train2014_000000002089.jpg -../coco/images/train2014/COCO_train2014_000000002093.jpg -../coco/images/train2014/COCO_train2014_000000002106.jpg -../coco/images/train2014/COCO_train2014_000000002114.jpg -../coco/images/train2014/COCO_train2014_000000002135.jpg -../coco/images/train2014/COCO_train2014_000000002148.jpg -../coco/images/train2014/COCO_train2014_000000002150.jpg -../coco/images/train2014/COCO_train2014_000000002178.jpg -../coco/images/train2014/COCO_train2014_000000002184.jpg -../coco/images/train2014/COCO_train2014_000000002193.jpg -../coco/images/train2014/COCO_train2014_000000002197.jpg -../coco/images/train2014/COCO_train2014_000000002209.jpg -../coco/images/train2014/COCO_train2014_000000002211.jpg -../coco/images/train2014/COCO_train2014_000000002217.jpg -../coco/images/train2014/COCO_train2014_000000002229.jpg -../coco/images/train2014/COCO_train2014_000000002232.jpg -../coco/images/train2014/COCO_train2014_000000002244.jpg -../coco/images/train2014/COCO_train2014_000000002258.jpg -../coco/images/train2014/COCO_train2014_000000002270.jpg -../coco/images/train2014/COCO_train2014_000000002276.jpg -../coco/images/train2014/COCO_train2014_000000002278.jpg -../coco/images/train2014/COCO_train2014_000000002279.jpg -../coco/images/train2014/COCO_train2014_000000002280.jpg -../coco/images/train2014/COCO_train2014_000000002281.jpg -../coco/images/train2014/COCO_train2014_000000002283.jpg -../coco/images/train2014/COCO_train2014_000000002284.jpg -../coco/images/train2014/COCO_train2014_000000002296.jpg -../coco/images/train2014/COCO_train2014_000000002309.jpg -../coco/images/train2014/COCO_train2014_000000002337.jpg -../coco/images/train2014/COCO_train2014_000000002342.jpg -../coco/images/train2014/COCO_train2014_000000002347.jpg -../coco/images/train2014/COCO_train2014_000000002349.jpg -../coco/images/train2014/COCO_train2014_000000002369.jpg -../coco/images/train2014/COCO_train2014_000000002372.jpg -../coco/images/train2014/COCO_train2014_000000002374.jpg -../coco/images/train2014/COCO_train2014_000000002377.jpg -../coco/images/train2014/COCO_train2014_000000002389.jpg -../coco/images/train2014/COCO_train2014_000000002400.jpg -../coco/images/train2014/COCO_train2014_000000002402.jpg -../coco/images/train2014/COCO_train2014_000000002411.jpg -../coco/images/train2014/COCO_train2014_000000002415.jpg -../coco/images/train2014/COCO_train2014_000000002429.jpg -../coco/images/train2014/COCO_train2014_000000002444.jpg -../coco/images/train2014/COCO_train2014_000000002445.jpg -../coco/images/train2014/COCO_train2014_000000002446.jpg -../coco/images/train2014/COCO_train2014_000000002448.jpg -../coco/images/train2014/COCO_train2014_000000002451.jpg -../coco/images/train2014/COCO_train2014_000000002459.jpg -../coco/images/train2014/COCO_train2014_000000002466.jpg -../coco/images/train2014/COCO_train2014_000000002470.jpg -../coco/images/train2014/COCO_train2014_000000002471.jpg -../coco/images/train2014/COCO_train2014_000000002496.jpg -../coco/images/train2014/COCO_train2014_000000002498.jpg -../coco/images/train2014/COCO_train2014_000000002531.jpg -../coco/images/train2014/COCO_train2014_000000002536.jpg -../coco/images/train2014/COCO_train2014_000000002543.jpg -../coco/images/train2014/COCO_train2014_000000002544.jpg -../coco/images/train2014/COCO_train2014_000000002545.jpg -../coco/images/train2014/COCO_train2014_000000002555.jpg -../coco/images/train2014/COCO_train2014_000000002559.jpg -../coco/images/train2014/COCO_train2014_000000002560.jpg -../coco/images/train2014/COCO_train2014_000000002563.jpg -../coco/images/train2014/COCO_train2014_000000002567.jpg -../coco/images/train2014/COCO_train2014_000000002570.jpg -../coco/images/train2014/COCO_train2014_000000002575.jpg -../coco/images/train2014/COCO_train2014_000000002583.jpg -../coco/images/train2014/COCO_train2014_000000002585.jpg -../coco/images/train2014/COCO_train2014_000000002591.jpg -../coco/images/train2014/COCO_train2014_000000002602.jpg -../coco/images/train2014/COCO_train2014_000000002606.jpg -../coco/images/train2014/COCO_train2014_000000002608.jpg -../coco/images/train2014/COCO_train2014_000000002614.jpg -../coco/images/train2014/COCO_train2014_000000002618.jpg -../coco/images/train2014/COCO_train2014_000000002619.jpg -../coco/images/train2014/COCO_train2014_000000002623.jpg -../coco/images/train2014/COCO_train2014_000000002624.jpg -../coco/images/train2014/COCO_train2014_000000002639.jpg -../coco/images/train2014/COCO_train2014_000000002644.jpg -../coco/images/train2014/COCO_train2014_000000002645.jpg -../coco/images/train2014/COCO_train2014_000000002658.jpg -../coco/images/train2014/COCO_train2014_000000002664.jpg -../coco/images/train2014/COCO_train2014_000000002672.jpg -../coco/images/train2014/COCO_train2014_000000002686.jpg -../coco/images/train2014/COCO_train2014_000000002687.jpg -../coco/images/train2014/COCO_train2014_000000002691.jpg -../coco/images/train2014/COCO_train2014_000000002693.jpg -../coco/images/train2014/COCO_train2014_000000002697.jpg -../coco/images/train2014/COCO_train2014_000000002703.jpg -../coco/images/train2014/COCO_train2014_000000002732.jpg -../coco/images/train2014/COCO_train2014_000000002742.jpg -../coco/images/train2014/COCO_train2014_000000002752.jpg -../coco/images/train2014/COCO_train2014_000000002754.jpg -../coco/images/train2014/COCO_train2014_000000002755.jpg -../coco/images/train2014/COCO_train2014_000000002758.jpg -../coco/images/train2014/COCO_train2014_000000002770.jpg -../coco/images/train2014/COCO_train2014_000000002774.jpg -../coco/images/train2014/COCO_train2014_000000002776.jpg -../coco/images/train2014/COCO_train2014_000000002782.jpg -../coco/images/train2014/COCO_train2014_000000002823.jpg -../coco/images/train2014/COCO_train2014_000000002833.jpg -../coco/images/train2014/COCO_train2014_000000002842.jpg -../coco/images/train2014/COCO_train2014_000000002843.jpg -../coco/images/train2014/COCO_train2014_000000002849.jpg -../coco/images/train2014/COCO_train2014_000000002860.jpg -../coco/images/train2014/COCO_train2014_000000002886.jpg -../coco/images/train2014/COCO_train2014_000000002892.jpg -../coco/images/train2014/COCO_train2014_000000002896.jpg -../coco/images/train2014/COCO_train2014_000000002902.jpg -../coco/images/train2014/COCO_train2014_000000002907.jpg -../coco/images/train2014/COCO_train2014_000000002931.jpg -../coco/images/train2014/COCO_train2014_000000002951.jpg -../coco/images/train2014/COCO_train2014_000000002963.jpg -../coco/images/train2014/COCO_train2014_000000002964.jpg -../coco/images/train2014/COCO_train2014_000000002982.jpg -../coco/images/train2014/COCO_train2014_000000002983.jpg -../coco/images/train2014/COCO_train2014_000000002989.jpg -../coco/images/train2014/COCO_train2014_000000002992.jpg -../coco/images/train2014/COCO_train2014_000000002998.jpg -../coco/images/train2014/COCO_train2014_000000003000.jpg -../coco/images/train2014/COCO_train2014_000000003003.jpg -../coco/images/train2014/COCO_train2014_000000003008.jpg -../coco/images/train2014/COCO_train2014_000000003040.jpg -../coco/images/train2014/COCO_train2014_000000003048.jpg -../coco/images/train2014/COCO_train2014_000000003076.jpg -../coco/images/train2014/COCO_train2014_000000003077.jpg -../coco/images/train2014/COCO_train2014_000000003080.jpg -../coco/images/train2014/COCO_train2014_000000003118.jpg -../coco/images/train2014/COCO_train2014_000000003124.jpg -../coco/images/train2014/COCO_train2014_000000003131.jpg -../coco/images/train2014/COCO_train2014_000000003148.jpg -../coco/images/train2014/COCO_train2014_000000003157.jpg -../coco/images/train2014/COCO_train2014_000000003160.jpg -../coco/images/train2014/COCO_train2014_000000003178.jpg -../coco/images/train2014/COCO_train2014_000000003197.jpg -../coco/images/train2014/COCO_train2014_000000003219.jpg -../coco/images/train2014/COCO_train2014_000000003220.jpg -../coco/images/train2014/COCO_train2014_000000003224.jpg -../coco/images/train2014/COCO_train2014_000000003225.jpg -../coco/images/train2014/COCO_train2014_000000003234.jpg -../coco/images/train2014/COCO_train2014_000000003236.jpg -../coco/images/train2014/COCO_train2014_000000003242.jpg -../coco/images/train2014/COCO_train2014_000000003249.jpg -../coco/images/train2014/COCO_train2014_000000003259.jpg -../coco/images/train2014/COCO_train2014_000000003264.jpg -../coco/images/train2014/COCO_train2014_000000003270.jpg -../coco/images/train2014/COCO_train2014_000000003272.jpg -../coco/images/train2014/COCO_train2014_000000003276.jpg -../coco/images/train2014/COCO_train2014_000000003286.jpg -../coco/images/train2014/COCO_train2014_000000003293.jpg -../coco/images/train2014/COCO_train2014_000000003305.jpg -../coco/images/train2014/COCO_train2014_000000003314.jpg -../coco/images/train2014/COCO_train2014_000000003320.jpg -../coco/images/train2014/COCO_train2014_000000003321.jpg -../coco/images/train2014/COCO_train2014_000000003325.jpg -../coco/images/train2014/COCO_train2014_000000003348.jpg -../coco/images/train2014/COCO_train2014_000000003353.jpg -../coco/images/train2014/COCO_train2014_000000003361.jpg -../coco/images/train2014/COCO_train2014_000000003365.jpg -../coco/images/train2014/COCO_train2014_000000003366.jpg -../coco/images/train2014/COCO_train2014_000000003375.jpg -../coco/images/train2014/COCO_train2014_000000003386.jpg -../coco/images/train2014/COCO_train2014_000000003389.jpg -../coco/images/train2014/COCO_train2014_000000003398.jpg -../coco/images/train2014/COCO_train2014_000000003412.jpg -../coco/images/train2014/COCO_train2014_000000003432.jpg -../coco/images/train2014/COCO_train2014_000000003442.jpg -../coco/images/train2014/COCO_train2014_000000003457.jpg -../coco/images/train2014/COCO_train2014_000000003461.jpg -../coco/images/train2014/COCO_train2014_000000003464.jpg -../coco/images/train2014/COCO_train2014_000000003474.jpg -../coco/images/train2014/COCO_train2014_000000003478.jpg -../coco/images/train2014/COCO_train2014_000000003481.jpg -../coco/images/train2014/COCO_train2014_000000003483.jpg -../coco/images/train2014/COCO_train2014_000000003493.jpg -../coco/images/train2014/COCO_train2014_000000003511.jpg -../coco/images/train2014/COCO_train2014_000000003514.jpg -../coco/images/train2014/COCO_train2014_000000003517.jpg -../coco/images/train2014/COCO_train2014_000000003518.jpg -../coco/images/train2014/COCO_train2014_000000003521.jpg -../coco/images/train2014/COCO_train2014_000000003528.jpg -../coco/images/train2014/COCO_train2014_000000003532.jpg -../coco/images/train2014/COCO_train2014_000000003535.jpg -../coco/images/train2014/COCO_train2014_000000003538.jpg -../coco/images/train2014/COCO_train2014_000000003579.jpg -../coco/images/train2014/COCO_train2014_000000003602.jpg -../coco/images/train2014/COCO_train2014_000000003613.jpg -../coco/images/train2014/COCO_train2014_000000003623.jpg -../coco/images/train2014/COCO_train2014_000000003628.jpg -../coco/images/train2014/COCO_train2014_000000003637.jpg -../coco/images/train2014/COCO_train2014_000000003668.jpg -../coco/images/train2014/COCO_train2014_000000003671.jpg -../coco/images/train2014/COCO_train2014_000000003682.jpg -../coco/images/train2014/COCO_train2014_000000003685.jpg -../coco/images/train2014/COCO_train2014_000000003713.jpg -../coco/images/train2014/COCO_train2014_000000003729.jpg -../coco/images/train2014/COCO_train2014_000000003735.jpg -../coco/images/train2014/COCO_train2014_000000003737.jpg -../coco/images/train2014/COCO_train2014_000000003745.jpg -../coco/images/train2014/COCO_train2014_000000003751.jpg -../coco/images/train2014/COCO_train2014_000000003764.jpg -../coco/images/train2014/COCO_train2014_000000003770.jpg -../coco/images/train2014/COCO_train2014_000000003782.jpg -../coco/images/train2014/COCO_train2014_000000003789.jpg -../coco/images/train2014/COCO_train2014_000000003804.jpg -../coco/images/train2014/COCO_train2014_000000003812.jpg -../coco/images/train2014/COCO_train2014_000000003823.jpg -../coco/images/train2014/COCO_train2014_000000003827.jpg -../coco/images/train2014/COCO_train2014_000000003830.jpg -../coco/images/train2014/COCO_train2014_000000003860.jpg -../coco/images/train2014/COCO_train2014_000000003862.jpg -../coco/images/train2014/COCO_train2014_000000003866.jpg -../coco/images/train2014/COCO_train2014_000000003870.jpg -../coco/images/train2014/COCO_train2014_000000003877.jpg -../coco/images/train2014/COCO_train2014_000000003897.jpg -../coco/images/train2014/COCO_train2014_000000003899.jpg -../coco/images/train2014/COCO_train2014_000000003911.jpg -../coco/images/train2014/COCO_train2014_000000003915.jpg -../coco/images/train2014/COCO_train2014_000000003917.jpg -../coco/images/train2014/COCO_train2014_000000003920.jpg -../coco/images/train2014/COCO_train2014_000000003935.jpg -../coco/images/train2014/COCO_train2014_000000003967.jpg -../coco/images/train2014/COCO_train2014_000000003982.jpg -../coco/images/train2014/COCO_train2014_000000003988.jpg -../coco/images/train2014/COCO_train2014_000000003992.jpg -../coco/images/train2014/COCO_train2014_000000003995.jpg -../coco/images/train2014/COCO_train2014_000000003999.jpg -../coco/images/train2014/COCO_train2014_000000004020.jpg -../coco/images/train2014/COCO_train2014_000000004032.jpg -../coco/images/train2014/COCO_train2014_000000004038.jpg -../coco/images/train2014/COCO_train2014_000000004042.jpg -../coco/images/train2014/COCO_train2014_000000004051.jpg -../coco/images/train2014/COCO_train2014_000000004057.jpg -../coco/images/train2014/COCO_train2014_000000004065.jpg -../coco/images/train2014/COCO_train2014_000000004068.jpg -../coco/images/train2014/COCO_train2014_000000004080.jpg -../coco/images/train2014/COCO_train2014_000000004129.jpg -../coco/images/train2014/COCO_train2014_000000004130.jpg -../coco/images/train2014/COCO_train2014_000000004131.jpg -../coco/images/train2014/COCO_train2014_000000004132.jpg -../coco/images/train2014/COCO_train2014_000000004138.jpg -../coco/images/train2014/COCO_train2014_000000004139.jpg -../coco/images/train2014/COCO_train2014_000000004140.jpg -../coco/images/train2014/COCO_train2014_000000004159.jpg -../coco/images/train2014/COCO_train2014_000000004172.jpg -../coco/images/train2014/COCO_train2014_000000004173.jpg -../coco/images/train2014/COCO_train2014_000000004180.jpg -../coco/images/train2014/COCO_train2014_000000004189.jpg -../coco/images/train2014/COCO_train2014_000000004201.jpg -../coco/images/train2014/COCO_train2014_000000004208.jpg -../coco/images/train2014/COCO_train2014_000000004219.jpg -../coco/images/train2014/COCO_train2014_000000004239.jpg -../coco/images/train2014/COCO_train2014_000000004244.jpg -../coco/images/train2014/COCO_train2014_000000004245.jpg -../coco/images/train2014/COCO_train2014_000000004259.jpg -../coco/images/train2014/COCO_train2014_000000004260.jpg -../coco/images/train2014/COCO_train2014_000000004278.jpg -../coco/images/train2014/COCO_train2014_000000004282.jpg -../coco/images/train2014/COCO_train2014_000000004289.jpg -../coco/images/train2014/COCO_train2014_000000004309.jpg -../coco/images/train2014/COCO_train2014_000000004318.jpg -../coco/images/train2014/COCO_train2014_000000004319.jpg -../coco/images/train2014/COCO_train2014_000000004322.jpg -../coco/images/train2014/COCO_train2014_000000004331.jpg -../coco/images/train2014/COCO_train2014_000000004360.jpg -../coco/images/train2014/COCO_train2014_000000004376.jpg -../coco/images/train2014/COCO_train2014_000000004377.jpg -../coco/images/train2014/COCO_train2014_000000004385.jpg -../coco/images/train2014/COCO_train2014_000000004394.jpg -../coco/images/train2014/COCO_train2014_000000004404.jpg -../coco/images/train2014/COCO_train2014_000000004410.jpg -../coco/images/train2014/COCO_train2014_000000004415.jpg -../coco/images/train2014/COCO_train2014_000000004421.jpg -../coco/images/train2014/COCO_train2014_000000004424.jpg -../coco/images/train2014/COCO_train2014_000000004426.jpg -../coco/images/train2014/COCO_train2014_000000004428.jpg -../coco/images/train2014/COCO_train2014_000000004441.jpg -../coco/images/train2014/COCO_train2014_000000004442.jpg -../coco/images/train2014/COCO_train2014_000000004444.jpg -../coco/images/train2014/COCO_train2014_000000004462.jpg -../coco/images/train2014/COCO_train2014_000000004463.jpg -../coco/images/train2014/COCO_train2014_000000004471.jpg -../coco/images/train2014/COCO_train2014_000000004477.jpg -../coco/images/train2014/COCO_train2014_000000004478.jpg -../coco/images/train2014/COCO_train2014_000000004488.jpg -../coco/images/train2014/COCO_train2014_000000004489.jpg -../coco/images/train2014/COCO_train2014_000000004490.jpg -../coco/images/train2014/COCO_train2014_000000004502.jpg -../coco/images/train2014/COCO_train2014_000000004508.jpg -../coco/images/train2014/COCO_train2014_000000004527.jpg -../coco/images/train2014/COCO_train2014_000000004535.jpg -../coco/images/train2014/COCO_train2014_000000004537.jpg -../coco/images/train2014/COCO_train2014_000000004546.jpg -../coco/images/train2014/COCO_train2014_000000004549.jpg -../coco/images/train2014/COCO_train2014_000000004555.jpg -../coco/images/train2014/COCO_train2014_000000004567.jpg -../coco/images/train2014/COCO_train2014_000000004571.jpg -../coco/images/train2014/COCO_train2014_000000004574.jpg -../coco/images/train2014/COCO_train2014_000000004575.jpg -../coco/images/train2014/COCO_train2014_000000004578.jpg -../coco/images/train2014/COCO_train2014_000000004579.jpg -../coco/images/train2014/COCO_train2014_000000004587.jpg -../coco/images/train2014/COCO_train2014_000000004595.jpg -../coco/images/train2014/COCO_train2014_000000004608.jpg -../coco/images/train2014/COCO_train2014_000000004616.jpg -../coco/images/train2014/COCO_train2014_000000004622.jpg -../coco/images/train2014/COCO_train2014_000000004624.jpg -../coco/images/train2014/COCO_train2014_000000004642.jpg -../coco/images/train2014/COCO_train2014_000000004647.jpg -../coco/images/train2014/COCO_train2014_000000004662.jpg -../coco/images/train2014/COCO_train2014_000000004673.jpg -../coco/images/train2014/COCO_train2014_000000004684.jpg -../coco/images/train2014/COCO_train2014_000000004694.jpg -../coco/images/train2014/COCO_train2014_000000004702.jpg -../coco/images/train2014/COCO_train2014_000000004704.jpg -../coco/images/train2014/COCO_train2014_000000004705.jpg -../coco/images/train2014/COCO_train2014_000000004706.jpg -../coco/images/train2014/COCO_train2014_000000004711.jpg -../coco/images/train2014/COCO_train2014_000000004714.jpg -../coco/images/train2014/COCO_train2014_000000004716.jpg -../coco/images/train2014/COCO_train2014_000000004719.jpg -../coco/images/train2014/COCO_train2014_000000004739.jpg -../coco/images/train2014/COCO_train2014_000000004741.jpg -../coco/images/train2014/COCO_train2014_000000004761.jpg -../coco/images/train2014/COCO_train2014_000000004762.jpg -../coco/images/train2014/COCO_train2014_000000004785.jpg -../coco/images/train2014/COCO_train2014_000000004794.jpg -../coco/images/train2014/COCO_train2014_000000004796.jpg -../coco/images/train2014/COCO_train2014_000000004809.jpg -../coco/images/train2014/COCO_train2014_000000004820.jpg -../coco/images/train2014/COCO_train2014_000000004823.jpg -../coco/images/train2014/COCO_train2014_000000004827.jpg -../coco/images/train2014/COCO_train2014_000000004830.jpg -../coco/images/train2014/COCO_train2014_000000004834.jpg -../coco/images/train2014/COCO_train2014_000000004843.jpg -../coco/images/train2014/COCO_train2014_000000004844.jpg -../coco/images/train2014/COCO_train2014_000000004859.jpg -../coco/images/train2014/COCO_train2014_000000004876.jpg -../coco/images/train2014/COCO_train2014_000000004880.jpg -../coco/images/train2014/COCO_train2014_000000004885.jpg -../coco/images/train2014/COCO_train2014_000000004888.jpg -../coco/images/train2014/COCO_train2014_000000004891.jpg -../coco/images/train2014/COCO_train2014_000000004893.jpg -../coco/images/train2014/COCO_train2014_000000004901.jpg -../coco/images/train2014/COCO_train2014_000000004903.jpg -../coco/images/train2014/COCO_train2014_000000004904.jpg -../coco/images/train2014/COCO_train2014_000000004920.jpg -../coco/images/train2014/COCO_train2014_000000004931.jpg -../coco/images/train2014/COCO_train2014_000000004947.jpg -../coco/images/train2014/COCO_train2014_000000004956.jpg -../coco/images/train2014/COCO_train2014_000000004963.jpg -../coco/images/train2014/COCO_train2014_000000004968.jpg -../coco/images/train2014/COCO_train2014_000000004970.jpg -../coco/images/train2014/COCO_train2014_000000004971.jpg -../coco/images/train2014/COCO_train2014_000000004978.jpg -../coco/images/train2014/COCO_train2014_000000004981.jpg -../coco/images/train2014/COCO_train2014_000000004984.jpg -../coco/images/train2014/COCO_train2014_000000004993.jpg -../coco/images/train2014/COCO_train2014_000000005005.jpg -../coco/images/train2014/COCO_train2014_000000005010.jpg -../coco/images/train2014/COCO_train2014_000000005011.jpg -../coco/images/train2014/COCO_train2014_000000005016.jpg -../coco/images/train2014/COCO_train2014_000000005018.jpg -../coco/images/train2014/COCO_train2014_000000005021.jpg -../coco/images/train2014/COCO_train2014_000000005028.jpg -../coco/images/train2014/COCO_train2014_000000005046.jpg -../coco/images/train2014/COCO_train2014_000000005073.jpg -../coco/images/train2014/COCO_train2014_000000005083.jpg -../coco/images/train2014/COCO_train2014_000000005085.jpg -../coco/images/train2014/COCO_train2014_000000005086.jpg -../coco/images/train2014/COCO_train2014_000000005088.jpg -../coco/images/train2014/COCO_train2014_000000005094.jpg -../coco/images/train2014/COCO_train2014_000000005095.jpg -../coco/images/train2014/COCO_train2014_000000005099.jpg -../coco/images/train2014/COCO_train2014_000000005111.jpg -../coco/images/train2014/COCO_train2014_000000005113.jpg -../coco/images/train2014/COCO_train2014_000000005115.jpg -../coco/images/train2014/COCO_train2014_000000005131.jpg -../coco/images/train2014/COCO_train2014_000000005139.jpg -../coco/images/train2014/COCO_train2014_000000005140.jpg -../coco/images/train2014/COCO_train2014_000000005142.jpg -../coco/images/train2014/COCO_train2014_000000005151.jpg -../coco/images/train2014/COCO_train2014_000000005152.jpg -../coco/images/train2014/COCO_train2014_000000005156.jpg -../coco/images/train2014/COCO_train2014_000000005165.jpg -../coco/images/train2014/COCO_train2014_000000005169.jpg -../coco/images/train2014/COCO_train2014_000000005172.jpg -../coco/images/train2014/COCO_train2014_000000005174.jpg -../coco/images/train2014/COCO_train2014_000000005180.jpg -../coco/images/train2014/COCO_train2014_000000005198.jpg -../coco/images/train2014/COCO_train2014_000000005210.jpg -../coco/images/train2014/COCO_train2014_000000005215.jpg -../coco/images/train2014/COCO_train2014_000000005219.jpg -../coco/images/train2014/COCO_train2014_000000005237.jpg -../coco/images/train2014/COCO_train2014_000000005244.jpg -../coco/images/train2014/COCO_train2014_000000005253.jpg -../coco/images/train2014/COCO_train2014_000000005256.jpg -../coco/images/train2014/COCO_train2014_000000005259.jpg -../coco/images/train2014/COCO_train2014_000000005260.jpg -../coco/images/train2014/COCO_train2014_000000005263.jpg -../coco/images/train2014/COCO_train2014_000000005277.jpg -../coco/images/train2014/COCO_train2014_000000005288.jpg -../coco/images/train2014/COCO_train2014_000000005294.jpg -../coco/images/train2014/COCO_train2014_000000005303.jpg -../coco/images/train2014/COCO_train2014_000000005312.jpg -../coco/images/train2014/COCO_train2014_000000005313.jpg -../coco/images/train2014/COCO_train2014_000000005324.jpg -../coco/images/train2014/COCO_train2014_000000005326.jpg -../coco/images/train2014/COCO_train2014_000000005335.jpg -../coco/images/train2014/COCO_train2014_000000005336.jpg -../coco/images/train2014/COCO_train2014_000000005339.jpg -../coco/images/train2014/COCO_train2014_000000005340.jpg -../coco/images/train2014/COCO_train2014_000000005344.jpg -../coco/images/train2014/COCO_train2014_000000005345.jpg -../coco/images/train2014/COCO_train2014_000000005355.jpg -../coco/images/train2014/COCO_train2014_000000005359.jpg -../coco/images/train2014/COCO_train2014_000000005360.jpg -../coco/images/train2014/COCO_train2014_000000005362.jpg -../coco/images/train2014/COCO_train2014_000000005368.jpg -../coco/images/train2014/COCO_train2014_000000005373.jpg -../coco/images/train2014/COCO_train2014_000000005376.jpg -../coco/images/train2014/COCO_train2014_000000005377.jpg -../coco/images/train2014/COCO_train2014_000000005383.jpg -../coco/images/train2014/COCO_train2014_000000005396.jpg -../coco/images/train2014/COCO_train2014_000000005424.jpg -../coco/images/train2014/COCO_train2014_000000005425.jpg -../coco/images/train2014/COCO_train2014_000000005430.jpg -../coco/images/train2014/COCO_train2014_000000005434.jpg -../coco/images/train2014/COCO_train2014_000000005435.jpg -../coco/images/train2014/COCO_train2014_000000005453.jpg -../coco/images/train2014/COCO_train2014_000000005459.jpg -../coco/images/train2014/COCO_train2014_000000005469.jpg -../coco/images/train2014/COCO_train2014_000000005471.jpg -../coco/images/train2014/COCO_train2014_000000005472.jpg -../coco/images/train2014/COCO_train2014_000000005482.jpg -../coco/images/train2014/COCO_train2014_000000005483.jpg -../coco/images/train2014/COCO_train2014_000000005505.jpg -../coco/images/train2014/COCO_train2014_000000005508.jpg -../coco/images/train2014/COCO_train2014_000000005522.jpg -../coco/images/train2014/COCO_train2014_000000005554.jpg -../coco/images/train2014/COCO_train2014_000000005557.jpg -../coco/images/train2014/COCO_train2014_000000005559.jpg -../coco/images/train2014/COCO_train2014_000000005564.jpg -../coco/images/train2014/COCO_train2014_000000005574.jpg -../coco/images/train2014/COCO_train2014_000000005587.jpg -../coco/images/train2014/COCO_train2014_000000005589.jpg -../coco/images/train2014/COCO_train2014_000000005608.jpg -../coco/images/train2014/COCO_train2014_000000005612.jpg -../coco/images/train2014/COCO_train2014_000000005614.jpg -../coco/images/train2014/COCO_train2014_000000005615.jpg -../coco/images/train2014/COCO_train2014_000000005619.jpg -../coco/images/train2014/COCO_train2014_000000005620.jpg -../coco/images/train2014/COCO_train2014_000000005632.jpg -../coco/images/train2014/COCO_train2014_000000005638.jpg -../coco/images/train2014/COCO_train2014_000000005641.jpg -../coco/images/train2014/COCO_train2014_000000005643.jpg -../coco/images/train2014/COCO_train2014_000000005649.jpg -../coco/images/train2014/COCO_train2014_000000005667.jpg -../coco/images/train2014/COCO_train2014_000000005669.jpg -../coco/images/train2014/COCO_train2014_000000005678.jpg -../coco/images/train2014/COCO_train2014_000000005683.jpg -../coco/images/train2014/COCO_train2014_000000005684.jpg -../coco/images/train2014/COCO_train2014_000000005688.jpg -../coco/images/train2014/COCO_train2014_000000005689.jpg -../coco/images/train2014/COCO_train2014_000000005692.jpg -../coco/images/train2014/COCO_train2014_000000005699.jpg -../coco/images/train2014/COCO_train2014_000000005700.jpg -../coco/images/train2014/COCO_train2014_000000005701.jpg -../coco/images/train2014/COCO_train2014_000000005703.jpg -../coco/images/train2014/COCO_train2014_000000005715.jpg -../coco/images/train2014/COCO_train2014_000000005736.jpg -../coco/images/train2014/COCO_train2014_000000005740.jpg -../coco/images/train2014/COCO_train2014_000000005745.jpg -../coco/images/train2014/COCO_train2014_000000005755.jpg -../coco/images/train2014/COCO_train2014_000000005756.jpg -../coco/images/train2014/COCO_train2014_000000005757.jpg -../coco/images/train2014/COCO_train2014_000000005769.jpg -../coco/images/train2014/COCO_train2014_000000005782.jpg -../coco/images/train2014/COCO_train2014_000000005785.jpg -../coco/images/train2014/COCO_train2014_000000005809.jpg -../coco/images/train2014/COCO_train2014_000000005811.jpg -../coco/images/train2014/COCO_train2014_000000005823.jpg -../coco/images/train2014/COCO_train2014_000000005828.jpg -../coco/images/train2014/COCO_train2014_000000005830.jpg -../coco/images/train2014/COCO_train2014_000000005832.jpg -../coco/images/train2014/COCO_train2014_000000005862.jpg -../coco/images/train2014/COCO_train2014_000000005882.jpg -../coco/images/train2014/COCO_train2014_000000005883.jpg -../coco/images/train2014/COCO_train2014_000000005903.jpg -../coco/images/train2014/COCO_train2014_000000005906.jpg -../coco/images/train2014/COCO_train2014_000000005907.jpg -../coco/images/train2014/COCO_train2014_000000005913.jpg -../coco/images/train2014/COCO_train2014_000000005915.jpg -../coco/images/train2014/COCO_train2014_000000005916.jpg -../coco/images/train2014/COCO_train2014_000000005917.jpg -../coco/images/train2014/COCO_train2014_000000005933.jpg -../coco/images/train2014/COCO_train2014_000000005946.jpg -../coco/images/train2014/COCO_train2014_000000005947.jpg -../coco/images/train2014/COCO_train2014_000000005962.jpg -../coco/images/train2014/COCO_train2014_000000005967.jpg -../coco/images/train2014/COCO_train2014_000000005991.jpg -../coco/images/train2014/COCO_train2014_000000005994.jpg -../coco/images/train2014/COCO_train2014_000000006004.jpg -../coco/images/train2014/COCO_train2014_000000006010.jpg -../coco/images/train2014/COCO_train2014_000000006016.jpg -../coco/images/train2014/COCO_train2014_000000006026.jpg -../coco/images/train2014/COCO_train2014_000000006031.jpg -../coco/images/train2014/COCO_train2014_000000006041.jpg -../coco/images/train2014/COCO_train2014_000000006042.jpg -../coco/images/train2014/COCO_train2014_000000006051.jpg -../coco/images/train2014/COCO_train2014_000000006053.jpg -../coco/images/train2014/COCO_train2014_000000006057.jpg -../coco/images/train2014/COCO_train2014_000000006066.jpg -../coco/images/train2014/COCO_train2014_000000006068.jpg -../coco/images/train2014/COCO_train2014_000000006075.jpg -../coco/images/train2014/COCO_train2014_000000006101.jpg -../coco/images/train2014/COCO_train2014_000000006107.jpg -../coco/images/train2014/COCO_train2014_000000006120.jpg -../coco/images/train2014/COCO_train2014_000000006140.jpg -../coco/images/train2014/COCO_train2014_000000006146.jpg -../coco/images/train2014/COCO_train2014_000000006148.jpg -../coco/images/train2014/COCO_train2014_000000006151.jpg -../coco/images/train2014/COCO_train2014_000000006155.jpg -../coco/images/train2014/COCO_train2014_000000006160.jpg -../coco/images/train2014/COCO_train2014_000000006178.jpg -../coco/images/train2014/COCO_train2014_000000006182.jpg -../coco/images/train2014/COCO_train2014_000000006190.jpg -../coco/images/train2014/COCO_train2014_000000006197.jpg -../coco/images/train2014/COCO_train2014_000000006200.jpg -../coco/images/train2014/COCO_train2014_000000006216.jpg -../coco/images/train2014/COCO_train2014_000000006225.jpg -../coco/images/train2014/COCO_train2014_000000006229.jpg -../coco/images/train2014/COCO_train2014_000000006230.jpg -../coco/images/train2014/COCO_train2014_000000006233.jpg -../coco/images/train2014/COCO_train2014_000000006241.jpg -../coco/images/train2014/COCO_train2014_000000006247.jpg -../coco/images/train2014/COCO_train2014_000000006253.jpg -../coco/images/train2014/COCO_train2014_000000006262.jpg -../coco/images/train2014/COCO_train2014_000000006263.jpg -../coco/images/train2014/COCO_train2014_000000006268.jpg -../coco/images/train2014/COCO_train2014_000000006270.jpg -../coco/images/train2014/COCO_train2014_000000006287.jpg -../coco/images/train2014/COCO_train2014_000000006293.jpg -../coco/images/train2014/COCO_train2014_000000006295.jpg -../coco/images/train2014/COCO_train2014_000000006318.jpg -../coco/images/train2014/COCO_train2014_000000006327.jpg -../coco/images/train2014/COCO_train2014_000000006332.jpg -../coco/images/train2014/COCO_train2014_000000006334.jpg -../coco/images/train2014/COCO_train2014_000000006336.jpg -../coco/images/train2014/COCO_train2014_000000006338.jpg -../coco/images/train2014/COCO_train2014_000000006339.jpg -../coco/images/train2014/COCO_train2014_000000006352.jpg -../coco/images/train2014/COCO_train2014_000000006355.jpg -../coco/images/train2014/COCO_train2014_000000006357.jpg -../coco/images/train2014/COCO_train2014_000000006358.jpg -../coco/images/train2014/COCO_train2014_000000006363.jpg -../coco/images/train2014/COCO_train2014_000000006364.jpg -../coco/images/train2014/COCO_train2014_000000006379.jpg -../coco/images/train2014/COCO_train2014_000000006380.jpg -../coco/images/train2014/COCO_train2014_000000006406.jpg -../coco/images/train2014/COCO_train2014_000000006407.jpg -../coco/images/train2014/COCO_train2014_000000006409.jpg -../coco/images/train2014/COCO_train2014_000000006414.jpg -../coco/images/train2014/COCO_train2014_000000006421.jpg -../coco/images/train2014/COCO_train2014_000000006422.jpg -../coco/images/train2014/COCO_train2014_000000006424.jpg -../coco/images/train2014/COCO_train2014_000000006428.jpg -../coco/images/train2014/COCO_train2014_000000006432.jpg -../coco/images/train2014/COCO_train2014_000000006447.jpg -../coco/images/train2014/COCO_train2014_000000006451.jpg -../coco/images/train2014/COCO_train2014_000000006464.jpg -../coco/images/train2014/COCO_train2014_000000006465.jpg -../coco/images/train2014/COCO_train2014_000000006481.jpg -../coco/images/train2014/COCO_train2014_000000006488.jpg -../coco/images/train2014/COCO_train2014_000000006489.jpg -../coco/images/train2014/COCO_train2014_000000006491.jpg -../coco/images/train2014/COCO_train2014_000000006512.jpg -../coco/images/train2014/COCO_train2014_000000006517.jpg -../coco/images/train2014/COCO_train2014_000000006518.jpg -../coco/images/train2014/COCO_train2014_000000006520.jpg -../coco/images/train2014/COCO_train2014_000000006522.jpg -../coco/images/train2014/COCO_train2014_000000006531.jpg -../coco/images/train2014/COCO_train2014_000000006539.jpg -../coco/images/train2014/COCO_train2014_000000006541.jpg -../coco/images/train2014/COCO_train2014_000000006560.jpg -../coco/images/train2014/COCO_train2014_000000006562.jpg -../coco/images/train2014/COCO_train2014_000000006572.jpg -../coco/images/train2014/COCO_train2014_000000006578.jpg -../coco/images/train2014/COCO_train2014_000000006586.jpg -../coco/images/train2014/COCO_train2014_000000006590.jpg -../coco/images/train2014/COCO_train2014_000000006595.jpg -../coco/images/train2014/COCO_train2014_000000006599.jpg -../coco/images/train2014/COCO_train2014_000000006602.jpg -../coco/images/train2014/COCO_train2014_000000006603.jpg -../coco/images/train2014/COCO_train2014_000000006627.jpg -../coco/images/train2014/COCO_train2014_000000006631.jpg -../coco/images/train2014/COCO_train2014_000000006632.jpg -../coco/images/train2014/COCO_train2014_000000006640.jpg -../coco/images/train2014/COCO_train2014_000000006647.jpg -../coco/images/train2014/COCO_train2014_000000006651.jpg -../coco/images/train2014/COCO_train2014_000000006664.jpg -../coco/images/train2014/COCO_train2014_000000006675.jpg -../coco/images/train2014/COCO_train2014_000000006692.jpg -../coco/images/train2014/COCO_train2014_000000006709.jpg -../coco/images/train2014/COCO_train2014_000000006710.jpg -../coco/images/train2014/COCO_train2014_000000006715.jpg -../coco/images/train2014/COCO_train2014_000000006721.jpg -../coco/images/train2014/COCO_train2014_000000006725.jpg -../coco/images/train2014/COCO_train2014_000000006730.jpg -../coco/images/train2014/COCO_train2014_000000006733.jpg -../coco/images/train2014/COCO_train2014_000000006744.jpg -../coco/images/train2014/COCO_train2014_000000006747.jpg -../coco/images/train2014/COCO_train2014_000000006749.jpg -../coco/images/train2014/COCO_train2014_000000006753.jpg -../coco/images/train2014/COCO_train2014_000000006760.jpg -../coco/images/train2014/COCO_train2014_000000006764.jpg -../coco/images/train2014/COCO_train2014_000000006765.jpg -../coco/images/train2014/COCO_train2014_000000006773.jpg -../coco/images/train2014/COCO_train2014_000000006777.jpg -../coco/images/train2014/COCO_train2014_000000006780.jpg -../coco/images/train2014/COCO_train2014_000000006790.jpg -../coco/images/train2014/COCO_train2014_000000006792.jpg -../coco/images/train2014/COCO_train2014_000000006800.jpg -../coco/images/train2014/COCO_train2014_000000006809.jpg -../coco/images/train2014/COCO_train2014_000000006811.jpg -../coco/images/train2014/COCO_train2014_000000006819.jpg -../coco/images/train2014/COCO_train2014_000000006824.jpg -../coco/images/train2014/COCO_train2014_000000006842.jpg -../coco/images/train2014/COCO_train2014_000000006846.jpg -../coco/images/train2014/COCO_train2014_000000006860.jpg -../coco/images/train2014/COCO_train2014_000000006862.jpg -../coco/images/train2014/COCO_train2014_000000006873.jpg -../coco/images/train2014/COCO_train2014_000000006901.jpg -../coco/images/train2014/COCO_train2014_000000006914.jpg -../coco/images/train2014/COCO_train2014_000000006920.jpg -../coco/images/train2014/COCO_train2014_000000006935.jpg -../coco/images/train2014/COCO_train2014_000000006936.jpg -../coco/images/train2014/COCO_train2014_000000006941.jpg -../coco/images/train2014/COCO_train2014_000000006943.jpg -../coco/images/train2014/COCO_train2014_000000006945.jpg -../coco/images/train2014/COCO_train2014_000000006957.jpg -../coco/images/train2014/COCO_train2014_000000006964.jpg -../coco/images/train2014/COCO_train2014_000000006973.jpg -../coco/images/train2014/COCO_train2014_000000006981.jpg -../coco/images/train2014/COCO_train2014_000000006990.jpg -../coco/images/train2014/COCO_train2014_000000006996.jpg -../coco/images/train2014/COCO_train2014_000000006998.jpg -../coco/images/train2014/COCO_train2014_000000007022.jpg -../coco/images/train2014/COCO_train2014_000000007028.jpg -../coco/images/train2014/COCO_train2014_000000007035.jpg -../coco/images/train2014/COCO_train2014_000000007040.jpg -../coco/images/train2014/COCO_train2014_000000007048.jpg -../coco/images/train2014/COCO_train2014_000000007049.jpg -../coco/images/train2014/COCO_train2014_000000007069.jpg -../coco/images/train2014/COCO_train2014_000000007090.jpg -../coco/images/train2014/COCO_train2014_000000007095.jpg -../coco/images/train2014/COCO_train2014_000000007103.jpg -../coco/images/train2014/COCO_train2014_000000007104.jpg -../coco/images/train2014/COCO_train2014_000000007116.jpg -../coco/images/train2014/COCO_train2014_000000007123.jpg -../coco/images/train2014/COCO_train2014_000000007124.jpg -../coco/images/train2014/COCO_train2014_000000007129.jpg -../coco/images/train2014/COCO_train2014_000000007139.jpg -../coco/images/train2014/COCO_train2014_000000007143.jpg -../coco/images/train2014/COCO_train2014_000000007145.jpg -../coco/images/train2014/COCO_train2014_000000007150.jpg -../coco/images/train2014/COCO_train2014_000000007159.jpg -../coco/images/train2014/COCO_train2014_000000007167.jpg -../coco/images/train2014/COCO_train2014_000000007174.jpg -../coco/images/train2014/COCO_train2014_000000007179.jpg -../coco/images/train2014/COCO_train2014_000000007201.jpg -../coco/images/train2014/COCO_train2014_000000007205.jpg -../coco/images/train2014/COCO_train2014_000000007220.jpg -../coco/images/train2014/COCO_train2014_000000007221.jpg -../coco/images/train2014/COCO_train2014_000000007224.jpg -../coco/images/train2014/COCO_train2014_000000007228.jpg -../coco/images/train2014/COCO_train2014_000000007232.jpg -../coco/images/train2014/COCO_train2014_000000007239.jpg -../coco/images/train2014/COCO_train2014_000000007247.jpg -../coco/images/train2014/COCO_train2014_000000007251.jpg -../coco/images/train2014/COCO_train2014_000000007275.jpg -../coco/images/train2014/COCO_train2014_000000007277.jpg -../coco/images/train2014/COCO_train2014_000000007307.jpg -../coco/images/train2014/COCO_train2014_000000007318.jpg -../coco/images/train2014/COCO_train2014_000000007319.jpg -../coco/images/train2014/COCO_train2014_000000007357.jpg -../coco/images/train2014/COCO_train2014_000000007361.jpg -../coco/images/train2014/COCO_train2014_000000007367.jpg -../coco/images/train2014/COCO_train2014_000000007393.jpg -../coco/images/train2014/COCO_train2014_000000007396.jpg -../coco/images/train2014/COCO_train2014_000000007420.jpg -../coco/images/train2014/COCO_train2014_000000007424.jpg -../coco/images/train2014/COCO_train2014_000000007452.jpg -../coco/images/train2014/COCO_train2014_000000007455.jpg -../coco/images/train2014/COCO_train2014_000000007476.jpg -../coco/images/train2014/COCO_train2014_000000007489.jpg -../coco/images/train2014/COCO_train2014_000000007498.jpg -../coco/images/train2014/COCO_train2014_000000007500.jpg -../coco/images/train2014/COCO_train2014_000000007503.jpg -../coco/images/train2014/COCO_train2014_000000007504.jpg -../coco/images/train2014/COCO_train2014_000000007510.jpg -../coco/images/train2014/COCO_train2014_000000007517.jpg -../coco/images/train2014/COCO_train2014_000000007524.jpg -../coco/images/train2014/COCO_train2014_000000007535.jpg -../coco/images/train2014/COCO_train2014_000000007539.jpg -../coco/images/train2014/COCO_train2014_000000007544.jpg -../coco/images/train2014/COCO_train2014_000000007558.jpg -../coco/images/train2014/COCO_train2014_000000007567.jpg -../coco/images/train2014/COCO_train2014_000000007583.jpg -../coco/images/train2014/COCO_train2014_000000007584.jpg -../coco/images/train2014/COCO_train2014_000000007594.jpg -../coco/images/train2014/COCO_train2014_000000007596.jpg -../coco/images/train2014/COCO_train2014_000000007601.jpg -../coco/images/train2014/COCO_train2014_000000007603.jpg diff --git a/data/coco_1000val.data b/data/coco_1000val.data deleted file mode 100644 index 726906b2..00000000 --- a/data/coco_1000val.data +++ /dev/null @@ -1,6 +0,0 @@ -classes=80 -train=./data/coco_1000img.txt -valid=./data/coco_1000val.txt -names=data/coco.names -backup=backup/ -eval=coco diff --git a/data/coco_1000val.txt b/data/coco_1000val.txt deleted file mode 100644 index dd97b568..00000000 --- a/data/coco_1000val.txt +++ /dev/null @@ -1,1000 +0,0 @@ -../coco/images/val2014/COCO_val2014_000000000164.jpg -../coco/images/val2014/COCO_val2014_000000000192.jpg -../coco/images/val2014/COCO_val2014_000000000283.jpg -../coco/images/val2014/COCO_val2014_000000000397.jpg -../coco/images/val2014/COCO_val2014_000000000589.jpg -../coco/images/val2014/COCO_val2014_000000000599.jpg -../coco/images/val2014/COCO_val2014_000000000711.jpg -../coco/images/val2014/COCO_val2014_000000000757.jpg -../coco/images/val2014/COCO_val2014_000000000764.jpg -../coco/images/val2014/COCO_val2014_000000000872.jpg -../coco/images/val2014/COCO_val2014_000000001063.jpg -../coco/images/val2014/COCO_val2014_000000001554.jpg -../coco/images/val2014/COCO_val2014_000000001667.jpg -../coco/images/val2014/COCO_val2014_000000001700.jpg -../coco/images/val2014/COCO_val2014_000000001869.jpg -../coco/images/val2014/COCO_val2014_000000002124.jpg -../coco/images/val2014/COCO_val2014_000000002261.jpg -../coco/images/val2014/COCO_val2014_000000002621.jpg -../coco/images/val2014/COCO_val2014_000000002684.jpg -../coco/images/val2014/COCO_val2014_000000002764.jpg -../coco/images/val2014/COCO_val2014_000000002894.jpg -../coco/images/val2014/COCO_val2014_000000002972.jpg -../coco/images/val2014/COCO_val2014_000000003035.jpg -../coco/images/val2014/COCO_val2014_000000003084.jpg -../coco/images/val2014/COCO_val2014_000000003103.jpg -../coco/images/val2014/COCO_val2014_000000003109.jpg -../coco/images/val2014/COCO_val2014_000000003134.jpg -../coco/images/val2014/COCO_val2014_000000003209.jpg -../coco/images/val2014/COCO_val2014_000000003244.jpg -../coco/images/val2014/COCO_val2014_000000003326.jpg -../coco/images/val2014/COCO_val2014_000000003337.jpg -../coco/images/val2014/COCO_val2014_000000003661.jpg -../coco/images/val2014/COCO_val2014_000000003711.jpg -../coco/images/val2014/COCO_val2014_000000003779.jpg -../coco/images/val2014/COCO_val2014_000000003865.jpg -../coco/images/val2014/COCO_val2014_000000004079.jpg -../coco/images/val2014/COCO_val2014_000000004092.jpg -../coco/images/val2014/COCO_val2014_000000004283.jpg -../coco/images/val2014/COCO_val2014_000000004296.jpg -../coco/images/val2014/COCO_val2014_000000004392.jpg -../coco/images/val2014/COCO_val2014_000000004742.jpg -../coco/images/val2014/COCO_val2014_000000004754.jpg -../coco/images/val2014/COCO_val2014_000000004764.jpg -../coco/images/val2014/COCO_val2014_000000005038.jpg -../coco/images/val2014/COCO_val2014_000000005060.jpg -../coco/images/val2014/COCO_val2014_000000005124.jpg -../coco/images/val2014/COCO_val2014_000000005178.jpg -../coco/images/val2014/COCO_val2014_000000005205.jpg -../coco/images/val2014/COCO_val2014_000000005443.jpg -../coco/images/val2014/COCO_val2014_000000005652.jpg -../coco/images/val2014/COCO_val2014_000000005723.jpg -../coco/images/val2014/COCO_val2014_000000005804.jpg -../coco/images/val2014/COCO_val2014_000000006074.jpg -../coco/images/val2014/COCO_val2014_000000006091.jpg -../coco/images/val2014/COCO_val2014_000000006153.jpg -../coco/images/val2014/COCO_val2014_000000006213.jpg -../coco/images/val2014/COCO_val2014_000000006497.jpg -../coco/images/val2014/COCO_val2014_000000006789.jpg -../coco/images/val2014/COCO_val2014_000000006847.jpg -../coco/images/val2014/COCO_val2014_000000007241.jpg -../coco/images/val2014/COCO_val2014_000000007256.jpg -../coco/images/val2014/COCO_val2014_000000007281.jpg -../coco/images/val2014/COCO_val2014_000000007795.jpg -../coco/images/val2014/COCO_val2014_000000007867.jpg -../coco/images/val2014/COCO_val2014_000000007873.jpg -../coco/images/val2014/COCO_val2014_000000007899.jpg -../coco/images/val2014/COCO_val2014_000000008010.jpg -../coco/images/val2014/COCO_val2014_000000008179.jpg -../coco/images/val2014/COCO_val2014_000000008190.jpg -../coco/images/val2014/COCO_val2014_000000008204.jpg -../coco/images/val2014/COCO_val2014_000000008350.jpg -../coco/images/val2014/COCO_val2014_000000008493.jpg -../coco/images/val2014/COCO_val2014_000000008853.jpg -../coco/images/val2014/COCO_val2014_000000009105.jpg -../coco/images/val2014/COCO_val2014_000000009156.jpg -../coco/images/val2014/COCO_val2014_000000009217.jpg -../coco/images/val2014/COCO_val2014_000000009270.jpg -../coco/images/val2014/COCO_val2014_000000009286.jpg -../coco/images/val2014/COCO_val2014_000000009548.jpg -../coco/images/val2014/COCO_val2014_000000009553.jpg -../coco/images/val2014/COCO_val2014_000000009727.jpg -../coco/images/val2014/COCO_val2014_000000009908.jpg -../coco/images/val2014/COCO_val2014_000000010114.jpg -../coco/images/val2014/COCO_val2014_000000010249.jpg -../coco/images/val2014/COCO_val2014_000000010395.jpg -../coco/images/val2014/COCO_val2014_000000010400.jpg -../coco/images/val2014/COCO_val2014_000000010463.jpg -../coco/images/val2014/COCO_val2014_000000010613.jpg -../coco/images/val2014/COCO_val2014_000000010764.jpg -../coco/images/val2014/COCO_val2014_000000010779.jpg -../coco/images/val2014/COCO_val2014_000000010928.jpg -../coco/images/val2014/COCO_val2014_000000011099.jpg -../coco/images/val2014/COCO_val2014_000000011181.jpg -../coco/images/val2014/COCO_val2014_000000011184.jpg -../coco/images/val2014/COCO_val2014_000000011197.jpg -../coco/images/val2014/COCO_val2014_000000011320.jpg -../coco/images/val2014/COCO_val2014_000000011721.jpg -../coco/images/val2014/COCO_val2014_000000011813.jpg -../coco/images/val2014/COCO_val2014_000000012014.jpg -../coco/images/val2014/COCO_val2014_000000012047.jpg -../coco/images/val2014/COCO_val2014_000000012085.jpg -../coco/images/val2014/COCO_val2014_000000012115.jpg -../coco/images/val2014/COCO_val2014_000000012166.jpg -../coco/images/val2014/COCO_val2014_000000012230.jpg -../coco/images/val2014/COCO_val2014_000000012370.jpg -../coco/images/val2014/COCO_val2014_000000012375.jpg -../coco/images/val2014/COCO_val2014_000000012448.jpg -../coco/images/val2014/COCO_val2014_000000012543.jpg -../coco/images/val2014/COCO_val2014_000000012744.jpg -../coco/images/val2014/COCO_val2014_000000012897.jpg -../coco/images/val2014/COCO_val2014_000000012966.jpg -../coco/images/val2014/COCO_val2014_000000012993.jpg -../coco/images/val2014/COCO_val2014_000000013004.jpg -../coco/images/val2014/COCO_val2014_000000013333.jpg -../coco/images/val2014/COCO_val2014_000000013357.jpg -../coco/images/val2014/COCO_val2014_000000013774.jpg -../coco/images/val2014/COCO_val2014_000000014029.jpg -../coco/images/val2014/COCO_val2014_000000014056.jpg -../coco/images/val2014/COCO_val2014_000000014108.jpg -../coco/images/val2014/COCO_val2014_000000014135.jpg -../coco/images/val2014/COCO_val2014_000000014226.jpg -../coco/images/val2014/COCO_val2014_000000014306.jpg -../coco/images/val2014/COCO_val2014_000000014591.jpg -../coco/images/val2014/COCO_val2014_000000014629.jpg -../coco/images/val2014/COCO_val2014_000000014756.jpg -../coco/images/val2014/COCO_val2014_000000014874.jpg -../coco/images/val2014/COCO_val2014_000000014990.jpg -../coco/images/val2014/COCO_val2014_000000015386.jpg -../coco/images/val2014/COCO_val2014_000000015559.jpg -../coco/images/val2014/COCO_val2014_000000015599.jpg -../coco/images/val2014/COCO_val2014_000000015709.jpg -../coco/images/val2014/COCO_val2014_000000015735.jpg -../coco/images/val2014/COCO_val2014_000000015751.jpg -../coco/images/val2014/COCO_val2014_000000015883.jpg -../coco/images/val2014/COCO_val2014_000000015953.jpg -../coco/images/val2014/COCO_val2014_000000015956.jpg -../coco/images/val2014/COCO_val2014_000000015968.jpg -../coco/images/val2014/COCO_val2014_000000015987.jpg -../coco/images/val2014/COCO_val2014_000000016030.jpg -../coco/images/val2014/COCO_val2014_000000016076.jpg -../coco/images/val2014/COCO_val2014_000000016228.jpg -../coco/images/val2014/COCO_val2014_000000016241.jpg -../coco/images/val2014/COCO_val2014_000000016257.jpg -../coco/images/val2014/COCO_val2014_000000016327.jpg -../coco/images/val2014/COCO_val2014_000000016410.jpg -../coco/images/val2014/COCO_val2014_000000016574.jpg -../coco/images/val2014/COCO_val2014_000000016716.jpg -../coco/images/val2014/COCO_val2014_000000016928.jpg -../coco/images/val2014/COCO_val2014_000000016995.jpg -../coco/images/val2014/COCO_val2014_000000017235.jpg -../coco/images/val2014/COCO_val2014_000000017379.jpg -../coco/images/val2014/COCO_val2014_000000017667.jpg -../coco/images/val2014/COCO_val2014_000000017755.jpg -../coco/images/val2014/COCO_val2014_000000018295.jpg -../coco/images/val2014/COCO_val2014_000000018358.jpg -../coco/images/val2014/COCO_val2014_000000018476.jpg -../coco/images/val2014/COCO_val2014_000000018750.jpg -../coco/images/val2014/COCO_val2014_000000018783.jpg -../coco/images/val2014/COCO_val2014_000000019025.jpg -../coco/images/val2014/COCO_val2014_000000019042.jpg -../coco/images/val2014/COCO_val2014_000000019129.jpg -../coco/images/val2014/COCO_val2014_000000019176.jpg -../coco/images/val2014/COCO_val2014_000000019491.jpg -../coco/images/val2014/COCO_val2014_000000019890.jpg -../coco/images/val2014/COCO_val2014_000000019923.jpg -../coco/images/val2014/COCO_val2014_000000020001.jpg -../coco/images/val2014/COCO_val2014_000000020038.jpg -../coco/images/val2014/COCO_val2014_000000020175.jpg -../coco/images/val2014/COCO_val2014_000000020268.jpg -../coco/images/val2014/COCO_val2014_000000020273.jpg -../coco/images/val2014/COCO_val2014_000000020349.jpg -../coco/images/val2014/COCO_val2014_000000020553.jpg -../coco/images/val2014/COCO_val2014_000000020788.jpg -../coco/images/val2014/COCO_val2014_000000020912.jpg -../coco/images/val2014/COCO_val2014_000000020947.jpg -../coco/images/val2014/COCO_val2014_000000020972.jpg -../coco/images/val2014/COCO_val2014_000000021161.jpg -../coco/images/val2014/COCO_val2014_000000021483.jpg -../coco/images/val2014/COCO_val2014_000000021588.jpg -../coco/images/val2014/COCO_val2014_000000021639.jpg -../coco/images/val2014/COCO_val2014_000000021644.jpg -../coco/images/val2014/COCO_val2014_000000021645.jpg -../coco/images/val2014/COCO_val2014_000000021671.jpg -../coco/images/val2014/COCO_val2014_000000021746.jpg -../coco/images/val2014/COCO_val2014_000000021839.jpg -../coco/images/val2014/COCO_val2014_000000022002.jpg -../coco/images/val2014/COCO_val2014_000000022129.jpg -../coco/images/val2014/COCO_val2014_000000022191.jpg -../coco/images/val2014/COCO_val2014_000000022215.jpg -../coco/images/val2014/COCO_val2014_000000022341.jpg -../coco/images/val2014/COCO_val2014_000000022492.jpg -../coco/images/val2014/COCO_val2014_000000022563.jpg -../coco/images/val2014/COCO_val2014_000000022660.jpg -../coco/images/val2014/COCO_val2014_000000022705.jpg -../coco/images/val2014/COCO_val2014_000000023017.jpg -../coco/images/val2014/COCO_val2014_000000023309.jpg -../coco/images/val2014/COCO_val2014_000000023411.jpg -../coco/images/val2014/COCO_val2014_000000023754.jpg -../coco/images/val2014/COCO_val2014_000000023802.jpg -../coco/images/val2014/COCO_val2014_000000023981.jpg -../coco/images/val2014/COCO_val2014_000000023995.jpg -../coco/images/val2014/COCO_val2014_000000024112.jpg -../coco/images/val2014/COCO_val2014_000000024247.jpg -../coco/images/val2014/COCO_val2014_000000024396.jpg -../coco/images/val2014/COCO_val2014_000000024776.jpg -../coco/images/val2014/COCO_val2014_000000024924.jpg -../coco/images/val2014/COCO_val2014_000000025096.jpg -../coco/images/val2014/COCO_val2014_000000025191.jpg -../coco/images/val2014/COCO_val2014_000000025252.jpg -../coco/images/val2014/COCO_val2014_000000025293.jpg -../coco/images/val2014/COCO_val2014_000000025360.jpg -../coco/images/val2014/COCO_val2014_000000025595.jpg -../coco/images/val2014/COCO_val2014_000000025685.jpg -../coco/images/val2014/COCO_val2014_000000025807.jpg -../coco/images/val2014/COCO_val2014_000000025864.jpg -../coco/images/val2014/COCO_val2014_000000025989.jpg -../coco/images/val2014/COCO_val2014_000000026026.jpg -../coco/images/val2014/COCO_val2014_000000026430.jpg -../coco/images/val2014/COCO_val2014_000000026432.jpg -../coco/images/val2014/COCO_val2014_000000026534.jpg -../coco/images/val2014/COCO_val2014_000000026560.jpg -../coco/images/val2014/COCO_val2014_000000026564.jpg -../coco/images/val2014/COCO_val2014_000000026671.jpg -../coco/images/val2014/COCO_val2014_000000026690.jpg -../coco/images/val2014/COCO_val2014_000000026734.jpg -../coco/images/val2014/COCO_val2014_000000026799.jpg -../coco/images/val2014/COCO_val2014_000000026907.jpg -../coco/images/val2014/COCO_val2014_000000026908.jpg -../coco/images/val2014/COCO_val2014_000000026946.jpg -../coco/images/val2014/COCO_val2014_000000027530.jpg -../coco/images/val2014/COCO_val2014_000000027610.jpg -../coco/images/val2014/COCO_val2014_000000027620.jpg -../coco/images/val2014/COCO_val2014_000000027787.jpg -../coco/images/val2014/COCO_val2014_000000027789.jpg -../coco/images/val2014/COCO_val2014_000000027874.jpg -../coco/images/val2014/COCO_val2014_000000027946.jpg -../coco/images/val2014/COCO_val2014_000000027975.jpg -../coco/images/val2014/COCO_val2014_000000028022.jpg -../coco/images/val2014/COCO_val2014_000000028039.jpg -../coco/images/val2014/COCO_val2014_000000028273.jpg -../coco/images/val2014/COCO_val2014_000000028540.jpg -../coco/images/val2014/COCO_val2014_000000028702.jpg -../coco/images/val2014/COCO_val2014_000000028820.jpg -../coco/images/val2014/COCO_val2014_000000028874.jpg -../coco/images/val2014/COCO_val2014_000000029019.jpg -../coco/images/val2014/COCO_val2014_000000029030.jpg -../coco/images/val2014/COCO_val2014_000000029170.jpg -../coco/images/val2014/COCO_val2014_000000029308.jpg -../coco/images/val2014/COCO_val2014_000000029393.jpg -../coco/images/val2014/COCO_val2014_000000029524.jpg -../coco/images/val2014/COCO_val2014_000000029577.jpg -../coco/images/val2014/COCO_val2014_000000029648.jpg -../coco/images/val2014/COCO_val2014_000000029656.jpg -../coco/images/val2014/COCO_val2014_000000029697.jpg -../coco/images/val2014/COCO_val2014_000000029709.jpg -../coco/images/val2014/COCO_val2014_000000029719.jpg -../coco/images/val2014/COCO_val2014_000000030034.jpg -../coco/images/val2014/COCO_val2014_000000030062.jpg -../coco/images/val2014/COCO_val2014_000000030383.jpg -../coco/images/val2014/COCO_val2014_000000030470.jpg -../coco/images/val2014/COCO_val2014_000000030548.jpg -../coco/images/val2014/COCO_val2014_000000030668.jpg -../coco/images/val2014/COCO_val2014_000000030793.jpg -../coco/images/val2014/COCO_val2014_000000030843.jpg -../coco/images/val2014/COCO_val2014_000000030998.jpg -../coco/images/val2014/COCO_val2014_000000031151.jpg -../coco/images/val2014/COCO_val2014_000000031164.jpg -../coco/images/val2014/COCO_val2014_000000031176.jpg -../coco/images/val2014/COCO_val2014_000000031247.jpg -../coco/images/val2014/COCO_val2014_000000031392.jpg -../coco/images/val2014/COCO_val2014_000000031521.jpg -../coco/images/val2014/COCO_val2014_000000031542.jpg -../coco/images/val2014/COCO_val2014_000000031817.jpg -../coco/images/val2014/COCO_val2014_000000032081.jpg -../coco/images/val2014/COCO_val2014_000000032193.jpg -../coco/images/val2014/COCO_val2014_000000032331.jpg -../coco/images/val2014/COCO_val2014_000000032464.jpg -../coco/images/val2014/COCO_val2014_000000032510.jpg -../coco/images/val2014/COCO_val2014_000000032524.jpg -../coco/images/val2014/COCO_val2014_000000032625.jpg -../coco/images/val2014/COCO_val2014_000000032677.jpg -../coco/images/val2014/COCO_val2014_000000032715.jpg -../coco/images/val2014/COCO_val2014_000000032947.jpg -../coco/images/val2014/COCO_val2014_000000032964.jpg -../coco/images/val2014/COCO_val2014_000000033006.jpg -../coco/images/val2014/COCO_val2014_000000033055.jpg -../coco/images/val2014/COCO_val2014_000000033158.jpg -../coco/images/val2014/COCO_val2014_000000033243.jpg -../coco/images/val2014/COCO_val2014_000000033345.jpg -../coco/images/val2014/COCO_val2014_000000033499.jpg -../coco/images/val2014/COCO_val2014_000000033561.jpg -../coco/images/val2014/COCO_val2014_000000033830.jpg -../coco/images/val2014/COCO_val2014_000000033835.jpg -../coco/images/val2014/COCO_val2014_000000033924.jpg -../coco/images/val2014/COCO_val2014_000000034056.jpg -../coco/images/val2014/COCO_val2014_000000034114.jpg -../coco/images/val2014/COCO_val2014_000000034137.jpg -../coco/images/val2014/COCO_val2014_000000034183.jpg -../coco/images/val2014/COCO_val2014_000000034193.jpg -../coco/images/val2014/COCO_val2014_000000034299.jpg -../coco/images/val2014/COCO_val2014_000000034452.jpg -../coco/images/val2014/COCO_val2014_000000034689.jpg -../coco/images/val2014/COCO_val2014_000000034877.jpg -../coco/images/val2014/COCO_val2014_000000034892.jpg -../coco/images/val2014/COCO_val2014_000000034930.jpg -../coco/images/val2014/COCO_val2014_000000035012.jpg -../coco/images/val2014/COCO_val2014_000000035222.jpg -../coco/images/val2014/COCO_val2014_000000035326.jpg -../coco/images/val2014/COCO_val2014_000000035368.jpg -../coco/images/val2014/COCO_val2014_000000035474.jpg -../coco/images/val2014/COCO_val2014_000000035498.jpg -../coco/images/val2014/COCO_val2014_000000035738.jpg -../coco/images/val2014/COCO_val2014_000000035826.jpg -../coco/images/val2014/COCO_val2014_000000035940.jpg -../coco/images/val2014/COCO_val2014_000000035966.jpg -../coco/images/val2014/COCO_val2014_000000036049.jpg -../coco/images/val2014/COCO_val2014_000000036252.jpg -../coco/images/val2014/COCO_val2014_000000036508.jpg -../coco/images/val2014/COCO_val2014_000000036522.jpg -../coco/images/val2014/COCO_val2014_000000036539.jpg -../coco/images/val2014/COCO_val2014_000000036563.jpg -../coco/images/val2014/COCO_val2014_000000037038.jpg -../coco/images/val2014/COCO_val2014_000000037629.jpg -../coco/images/val2014/COCO_val2014_000000037675.jpg -../coco/images/val2014/COCO_val2014_000000037846.jpg -../coco/images/val2014/COCO_val2014_000000037865.jpg -../coco/images/val2014/COCO_val2014_000000037907.jpg -../coco/images/val2014/COCO_val2014_000000037988.jpg -../coco/images/val2014/COCO_val2014_000000038031.jpg -../coco/images/val2014/COCO_val2014_000000038190.jpg -../coco/images/val2014/COCO_val2014_000000038252.jpg -../coco/images/val2014/COCO_val2014_000000038296.jpg -../coco/images/val2014/COCO_val2014_000000038465.jpg -../coco/images/val2014/COCO_val2014_000000038488.jpg -../coco/images/val2014/COCO_val2014_000000038531.jpg -../coco/images/val2014/COCO_val2014_000000038539.jpg -../coco/images/val2014/COCO_val2014_000000038645.jpg -../coco/images/val2014/COCO_val2014_000000038685.jpg -../coco/images/val2014/COCO_val2014_000000038825.jpg -../coco/images/val2014/COCO_val2014_000000039322.jpg -../coco/images/val2014/COCO_val2014_000000039480.jpg -../coco/images/val2014/COCO_val2014_000000039697.jpg -../coco/images/val2014/COCO_val2014_000000039731.jpg -../coco/images/val2014/COCO_val2014_000000039743.jpg -../coco/images/val2014/COCO_val2014_000000039785.jpg -../coco/images/val2014/COCO_val2014_000000039961.jpg -../coco/images/val2014/COCO_val2014_000000040426.jpg -../coco/images/val2014/COCO_val2014_000000040485.jpg -../coco/images/val2014/COCO_val2014_000000040681.jpg -../coco/images/val2014/COCO_val2014_000000040686.jpg -../coco/images/val2014/COCO_val2014_000000040886.jpg -../coco/images/val2014/COCO_val2014_000000041119.jpg -../coco/images/val2014/COCO_val2014_000000041147.jpg -../coco/images/val2014/COCO_val2014_000000041322.jpg -../coco/images/val2014/COCO_val2014_000000041373.jpg -../coco/images/val2014/COCO_val2014_000000041550.jpg -../coco/images/val2014/COCO_val2014_000000041635.jpg -../coco/images/val2014/COCO_val2014_000000041867.jpg -../coco/images/val2014/COCO_val2014_000000041872.jpg -../coco/images/val2014/COCO_val2014_000000041924.jpg -../coco/images/val2014/COCO_val2014_000000042137.jpg -../coco/images/val2014/COCO_val2014_000000042279.jpg -../coco/images/val2014/COCO_val2014_000000042492.jpg -../coco/images/val2014/COCO_val2014_000000042576.jpg -../coco/images/val2014/COCO_val2014_000000042661.jpg -../coco/images/val2014/COCO_val2014_000000042743.jpg -../coco/images/val2014/COCO_val2014_000000042805.jpg -../coco/images/val2014/COCO_val2014_000000042837.jpg -../coco/images/val2014/COCO_val2014_000000043165.jpg -../coco/images/val2014/COCO_val2014_000000043218.jpg -../coco/images/val2014/COCO_val2014_000000043261.jpg -../coco/images/val2014/COCO_val2014_000000043404.jpg -../coco/images/val2014/COCO_val2014_000000043542.jpg -../coco/images/val2014/COCO_val2014_000000043605.jpg -../coco/images/val2014/COCO_val2014_000000043614.jpg -../coco/images/val2014/COCO_val2014_000000043673.jpg -../coco/images/val2014/COCO_val2014_000000043816.jpg -../coco/images/val2014/COCO_val2014_000000043850.jpg -../coco/images/val2014/COCO_val2014_000000044220.jpg -../coco/images/val2014/COCO_val2014_000000044269.jpg -../coco/images/val2014/COCO_val2014_000000044309.jpg -../coco/images/val2014/COCO_val2014_000000044478.jpg -../coco/images/val2014/COCO_val2014_000000044536.jpg -../coco/images/val2014/COCO_val2014_000000044559.jpg -../coco/images/val2014/COCO_val2014_000000044575.jpg -../coco/images/val2014/COCO_val2014_000000044612.jpg -../coco/images/val2014/COCO_val2014_000000044677.jpg -../coco/images/val2014/COCO_val2014_000000044699.jpg -../coco/images/val2014/COCO_val2014_000000044823.jpg -../coco/images/val2014/COCO_val2014_000000044989.jpg -../coco/images/val2014/COCO_val2014_000000045094.jpg -../coco/images/val2014/COCO_val2014_000000045176.jpg -../coco/images/val2014/COCO_val2014_000000045197.jpg -../coco/images/val2014/COCO_val2014_000000045367.jpg -../coco/images/val2014/COCO_val2014_000000045392.jpg -../coco/images/val2014/COCO_val2014_000000045433.jpg -../coco/images/val2014/COCO_val2014_000000045463.jpg -../coco/images/val2014/COCO_val2014_000000045550.jpg -../coco/images/val2014/COCO_val2014_000000045574.jpg -../coco/images/val2014/COCO_val2014_000000045627.jpg -../coco/images/val2014/COCO_val2014_000000045685.jpg -../coco/images/val2014/COCO_val2014_000000045728.jpg -../coco/images/val2014/COCO_val2014_000000046252.jpg -../coco/images/val2014/COCO_val2014_000000046269.jpg -../coco/images/val2014/COCO_val2014_000000046329.jpg -../coco/images/val2014/COCO_val2014_000000046805.jpg -../coco/images/val2014/COCO_val2014_000000046869.jpg -../coco/images/val2014/COCO_val2014_000000046919.jpg -../coco/images/val2014/COCO_val2014_000000046924.jpg -../coco/images/val2014/COCO_val2014_000000047008.jpg -../coco/images/val2014/COCO_val2014_000000047131.jpg -../coco/images/val2014/COCO_val2014_000000047226.jpg -../coco/images/val2014/COCO_val2014_000000047263.jpg -../coco/images/val2014/COCO_val2014_000000047395.jpg -../coco/images/val2014/COCO_val2014_000000047552.jpg -../coco/images/val2014/COCO_val2014_000000047570.jpg -../coco/images/val2014/COCO_val2014_000000047720.jpg -../coco/images/val2014/COCO_val2014_000000047775.jpg -../coco/images/val2014/COCO_val2014_000000047886.jpg -../coco/images/val2014/COCO_val2014_000000048504.jpg -../coco/images/val2014/COCO_val2014_000000048564.jpg -../coco/images/val2014/COCO_val2014_000000048668.jpg -../coco/images/val2014/COCO_val2014_000000048731.jpg -../coco/images/val2014/COCO_val2014_000000048739.jpg -../coco/images/val2014/COCO_val2014_000000048791.jpg -../coco/images/val2014/COCO_val2014_000000048840.jpg -../coco/images/val2014/COCO_val2014_000000048905.jpg -../coco/images/val2014/COCO_val2014_000000048910.jpg -../coco/images/val2014/COCO_val2014_000000048924.jpg -../coco/images/val2014/COCO_val2014_000000048956.jpg -../coco/images/val2014/COCO_val2014_000000049075.jpg -../coco/images/val2014/COCO_val2014_000000049236.jpg -../coco/images/val2014/COCO_val2014_000000049676.jpg -../coco/images/val2014/COCO_val2014_000000049881.jpg -../coco/images/val2014/COCO_val2014_000000049985.jpg -../coco/images/val2014/COCO_val2014_000000050100.jpg -../coco/images/val2014/COCO_val2014_000000050145.jpg -../coco/images/val2014/COCO_val2014_000000050177.jpg -../coco/images/val2014/COCO_val2014_000000050324.jpg -../coco/images/val2014/COCO_val2014_000000050331.jpg -../coco/images/val2014/COCO_val2014_000000050481.jpg -../coco/images/val2014/COCO_val2014_000000050485.jpg -../coco/images/val2014/COCO_val2014_000000050493.jpg -../coco/images/val2014/COCO_val2014_000000050746.jpg -../coco/images/val2014/COCO_val2014_000000050844.jpg -../coco/images/val2014/COCO_val2014_000000050896.jpg -../coco/images/val2014/COCO_val2014_000000051249.jpg -../coco/images/val2014/COCO_val2014_000000051250.jpg -../coco/images/val2014/COCO_val2014_000000051289.jpg -../coco/images/val2014/COCO_val2014_000000051314.jpg -../coco/images/val2014/COCO_val2014_000000051339.jpg -../coco/images/val2014/COCO_val2014_000000051461.jpg -../coco/images/val2014/COCO_val2014_000000051476.jpg -../coco/images/val2014/COCO_val2014_000000052005.jpg -../coco/images/val2014/COCO_val2014_000000052020.jpg -../coco/images/val2014/COCO_val2014_000000052290.jpg -../coco/images/val2014/COCO_val2014_000000052314.jpg -../coco/images/val2014/COCO_val2014_000000052425.jpg -../coco/images/val2014/COCO_val2014_000000052575.jpg -../coco/images/val2014/COCO_val2014_000000052871.jpg -../coco/images/val2014/COCO_val2014_000000052982.jpg -../coco/images/val2014/COCO_val2014_000000053139.jpg -../coco/images/val2014/COCO_val2014_000000053183.jpg -../coco/images/val2014/COCO_val2014_000000053263.jpg -../coco/images/val2014/COCO_val2014_000000053491.jpg -../coco/images/val2014/COCO_val2014_000000053503.jpg -../coco/images/val2014/COCO_val2014_000000053580.jpg -../coco/images/val2014/COCO_val2014_000000053616.jpg -../coco/images/val2014/COCO_val2014_000000053907.jpg -../coco/images/val2014/COCO_val2014_000000053949.jpg -../coco/images/val2014/COCO_val2014_000000054301.jpg -../coco/images/val2014/COCO_val2014_000000054334.jpg -../coco/images/val2014/COCO_val2014_000000054490.jpg -../coco/images/val2014/COCO_val2014_000000054527.jpg -../coco/images/val2014/COCO_val2014_000000054533.jpg -../coco/images/val2014/COCO_val2014_000000054603.jpg -../coco/images/val2014/COCO_val2014_000000054643.jpg -../coco/images/val2014/COCO_val2014_000000054679.jpg -../coco/images/val2014/COCO_val2014_000000054723.jpg -../coco/images/val2014/COCO_val2014_000000054959.jpg -../coco/images/val2014/COCO_val2014_000000055167.jpg -../coco/images/val2014/COCO_val2014_000000056137.jpg -../coco/images/val2014/COCO_val2014_000000056326.jpg -../coco/images/val2014/COCO_val2014_000000056541.jpg -../coco/images/val2014/COCO_val2014_000000056562.jpg -../coco/images/val2014/COCO_val2014_000000056624.jpg -../coco/images/val2014/COCO_val2014_000000056633.jpg -../coco/images/val2014/COCO_val2014_000000056724.jpg -../coco/images/val2014/COCO_val2014_000000056739.jpg -../coco/images/val2014/COCO_val2014_000000057027.jpg -../coco/images/val2014/COCO_val2014_000000057091.jpg -../coco/images/val2014/COCO_val2014_000000057095.jpg -../coco/images/val2014/COCO_val2014_000000057100.jpg -../coco/images/val2014/COCO_val2014_000000057149.jpg -../coco/images/val2014/COCO_val2014_000000057238.jpg -../coco/images/val2014/COCO_val2014_000000057359.jpg -../coco/images/val2014/COCO_val2014_000000057454.jpg -../coco/images/val2014/COCO_val2014_000000058001.jpg -../coco/images/val2014/COCO_val2014_000000058157.jpg -../coco/images/val2014/COCO_val2014_000000058223.jpg -../coco/images/val2014/COCO_val2014_000000058232.jpg -../coco/images/val2014/COCO_val2014_000000058344.jpg -../coco/images/val2014/COCO_val2014_000000058522.jpg -../coco/images/val2014/COCO_val2014_000000058636.jpg -../coco/images/val2014/COCO_val2014_000000058800.jpg -../coco/images/val2014/COCO_val2014_000000058949.jpg -../coco/images/val2014/COCO_val2014_000000059009.jpg -../coco/images/val2014/COCO_val2014_000000059202.jpg -../coco/images/val2014/COCO_val2014_000000059393.jpg -../coco/images/val2014/COCO_val2014_000000059652.jpg -../coco/images/val2014/COCO_val2014_000000060010.jpg -../coco/images/val2014/COCO_val2014_000000060049.jpg -../coco/images/val2014/COCO_val2014_000000060126.jpg -../coco/images/val2014/COCO_val2014_000000060128.jpg -../coco/images/val2014/COCO_val2014_000000060448.jpg -../coco/images/val2014/COCO_val2014_000000060548.jpg -../coco/images/val2014/COCO_val2014_000000060677.jpg -../coco/images/val2014/COCO_val2014_000000060760.jpg -../coco/images/val2014/COCO_val2014_000000060823.jpg -../coco/images/val2014/COCO_val2014_000000060859.jpg -../coco/images/val2014/COCO_val2014_000000060899.jpg -../coco/images/val2014/COCO_val2014_000000061171.jpg -../coco/images/val2014/COCO_val2014_000000061503.jpg -../coco/images/val2014/COCO_val2014_000000061520.jpg -../coco/images/val2014/COCO_val2014_000000061531.jpg -../coco/images/val2014/COCO_val2014_000000061564.jpg -../coco/images/val2014/COCO_val2014_000000061658.jpg -../coco/images/val2014/COCO_val2014_000000061693.jpg -../coco/images/val2014/COCO_val2014_000000061717.jpg -../coco/images/val2014/COCO_val2014_000000061836.jpg -../coco/images/val2014/COCO_val2014_000000062041.jpg -../coco/images/val2014/COCO_val2014_000000062060.jpg -../coco/images/val2014/COCO_val2014_000000062198.jpg -../coco/images/val2014/COCO_val2014_000000062200.jpg -../coco/images/val2014/COCO_val2014_000000062220.jpg -../coco/images/val2014/COCO_val2014_000000062623.jpg -../coco/images/val2014/COCO_val2014_000000062726.jpg -../coco/images/val2014/COCO_val2014_000000062875.jpg -../coco/images/val2014/COCO_val2014_000000063047.jpg -../coco/images/val2014/COCO_val2014_000000063114.jpg -../coco/images/val2014/COCO_val2014_000000063488.jpg -../coco/images/val2014/COCO_val2014_000000063671.jpg -../coco/images/val2014/COCO_val2014_000000063715.jpg -../coco/images/val2014/COCO_val2014_000000063804.jpg -../coco/images/val2014/COCO_val2014_000000063882.jpg -../coco/images/val2014/COCO_val2014_000000063939.jpg -../coco/images/val2014/COCO_val2014_000000063965.jpg -../coco/images/val2014/COCO_val2014_000000064155.jpg -../coco/images/val2014/COCO_val2014_000000064189.jpg -../coco/images/val2014/COCO_val2014_000000064196.jpg -../coco/images/val2014/COCO_val2014_000000064495.jpg -../coco/images/val2014/COCO_val2014_000000064610.jpg -../coco/images/val2014/COCO_val2014_000000064693.jpg -../coco/images/val2014/COCO_val2014_000000064746.jpg -../coco/images/val2014/COCO_val2014_000000064760.jpg -../coco/images/val2014/COCO_val2014_000000064796.jpg -../coco/images/val2014/COCO_val2014_000000064865.jpg -../coco/images/val2014/COCO_val2014_000000064915.jpg -../coco/images/val2014/COCO_val2014_000000065074.jpg -../coco/images/val2014/COCO_val2014_000000065124.jpg -../coco/images/val2014/COCO_val2014_000000065258.jpg -../coco/images/val2014/COCO_val2014_000000065267.jpg -../coco/images/val2014/COCO_val2014_000000065430.jpg -../coco/images/val2014/COCO_val2014_000000065465.jpg -../coco/images/val2014/COCO_val2014_000000065942.jpg -../coco/images/val2014/COCO_val2014_000000066001.jpg -../coco/images/val2014/COCO_val2014_000000066064.jpg -../coco/images/val2014/COCO_val2014_000000066072.jpg -../coco/images/val2014/COCO_val2014_000000066239.jpg -../coco/images/val2014/COCO_val2014_000000066243.jpg -../coco/images/val2014/COCO_val2014_000000066355.jpg -../coco/images/val2014/COCO_val2014_000000066412.jpg -../coco/images/val2014/COCO_val2014_000000066423.jpg -../coco/images/val2014/COCO_val2014_000000066427.jpg -../coco/images/val2014/COCO_val2014_000000066502.jpg -../coco/images/val2014/COCO_val2014_000000066519.jpg -../coco/images/val2014/COCO_val2014_000000066561.jpg -../coco/images/val2014/COCO_val2014_000000066700.jpg -../coco/images/val2014/COCO_val2014_000000066717.jpg -../coco/images/val2014/COCO_val2014_000000066879.jpg -../coco/images/val2014/COCO_val2014_000000067178.jpg -../coco/images/val2014/COCO_val2014_000000067207.jpg -../coco/images/val2014/COCO_val2014_000000067218.jpg -../coco/images/val2014/COCO_val2014_000000067412.jpg -../coco/images/val2014/COCO_val2014_000000067532.jpg -../coco/images/val2014/COCO_val2014_000000067590.jpg -../coco/images/val2014/COCO_val2014_000000067660.jpg -../coco/images/val2014/COCO_val2014_000000067686.jpg -../coco/images/val2014/COCO_val2014_000000067704.jpg -../coco/images/val2014/COCO_val2014_000000067776.jpg -../coco/images/val2014/COCO_val2014_000000067948.jpg -../coco/images/val2014/COCO_val2014_000000067953.jpg -../coco/images/val2014/COCO_val2014_000000068059.jpg -../coco/images/val2014/COCO_val2014_000000068204.jpg -../coco/images/val2014/COCO_val2014_000000068205.jpg -../coco/images/val2014/COCO_val2014_000000068409.jpg -../coco/images/val2014/COCO_val2014_000000068435.jpg -../coco/images/val2014/COCO_val2014_000000068520.jpg -../coco/images/val2014/COCO_val2014_000000068546.jpg -../coco/images/val2014/COCO_val2014_000000068674.jpg -../coco/images/val2014/COCO_val2014_000000068745.jpg -../coco/images/val2014/COCO_val2014_000000069009.jpg -../coco/images/val2014/COCO_val2014_000000069077.jpg -../coco/images/val2014/COCO_val2014_000000069196.jpg -../coco/images/val2014/COCO_val2014_000000069356.jpg -../coco/images/val2014/COCO_val2014_000000069568.jpg -../coco/images/val2014/COCO_val2014_000000069577.jpg -../coco/images/val2014/COCO_val2014_000000069698.jpg -../coco/images/val2014/COCO_val2014_000000070493.jpg -../coco/images/val2014/COCO_val2014_000000070896.jpg -../coco/images/val2014/COCO_val2014_000000071023.jpg -../coco/images/val2014/COCO_val2014_000000071123.jpg -../coco/images/val2014/COCO_val2014_000000071241.jpg -../coco/images/val2014/COCO_val2014_000000071301.jpg -../coco/images/val2014/COCO_val2014_000000071345.jpg -../coco/images/val2014/COCO_val2014_000000071451.jpg -../coco/images/val2014/COCO_val2014_000000071673.jpg -../coco/images/val2014/COCO_val2014_000000071826.jpg -../coco/images/val2014/COCO_val2014_000000071986.jpg -../coco/images/val2014/COCO_val2014_000000072004.jpg -../coco/images/val2014/COCO_val2014_000000072020.jpg -../coco/images/val2014/COCO_val2014_000000072052.jpg -../coco/images/val2014/COCO_val2014_000000072281.jpg -../coco/images/val2014/COCO_val2014_000000072368.jpg -../coco/images/val2014/COCO_val2014_000000072737.jpg -../coco/images/val2014/COCO_val2014_000000072797.jpg -../coco/images/val2014/COCO_val2014_000000072860.jpg -../coco/images/val2014/COCO_val2014_000000073009.jpg -../coco/images/val2014/COCO_val2014_000000073039.jpg -../coco/images/val2014/COCO_val2014_000000073239.jpg -../coco/images/val2014/COCO_val2014_000000073467.jpg -../coco/images/val2014/COCO_val2014_000000073491.jpg -../coco/images/val2014/COCO_val2014_000000073588.jpg -../coco/images/val2014/COCO_val2014_000000073729.jpg -../coco/images/val2014/COCO_val2014_000000073973.jpg -../coco/images/val2014/COCO_val2014_000000074037.jpg -../coco/images/val2014/COCO_val2014_000000074137.jpg -../coco/images/val2014/COCO_val2014_000000074268.jpg -../coco/images/val2014/COCO_val2014_000000074434.jpg -../coco/images/val2014/COCO_val2014_000000074789.jpg -../coco/images/val2014/COCO_val2014_000000074963.jpg -../coco/images/val2014/COCO_val2014_000000075033.jpg -../coco/images/val2014/COCO_val2014_000000075372.jpg -../coco/images/val2014/COCO_val2014_000000075527.jpg -../coco/images/val2014/COCO_val2014_000000075646.jpg -../coco/images/val2014/COCO_val2014_000000075713.jpg -../coco/images/val2014/COCO_val2014_000000075775.jpg -../coco/images/val2014/COCO_val2014_000000075786.jpg -../coco/images/val2014/COCO_val2014_000000075886.jpg -../coco/images/val2014/COCO_val2014_000000076087.jpg -../coco/images/val2014/COCO_val2014_000000076257.jpg -../coco/images/val2014/COCO_val2014_000000076521.jpg -../coco/images/val2014/COCO_val2014_000000076572.jpg -../coco/images/val2014/COCO_val2014_000000076844.jpg -../coco/images/val2014/COCO_val2014_000000077178.jpg -../coco/images/val2014/COCO_val2014_000000077181.jpg -../coco/images/val2014/COCO_val2014_000000077184.jpg -../coco/images/val2014/COCO_val2014_000000077396.jpg -../coco/images/val2014/COCO_val2014_000000077400.jpg -../coco/images/val2014/COCO_val2014_000000077415.jpg -../coco/images/val2014/COCO_val2014_000000078565.jpg -../coco/images/val2014/COCO_val2014_000000078701.jpg -../coco/images/val2014/COCO_val2014_000000078843.jpg -../coco/images/val2014/COCO_val2014_000000078929.jpg -../coco/images/val2014/COCO_val2014_000000079084.jpg -../coco/images/val2014/COCO_val2014_000000079188.jpg -../coco/images/val2014/COCO_val2014_000000079544.jpg -../coco/images/val2014/COCO_val2014_000000079566.jpg -../coco/images/val2014/COCO_val2014_000000079588.jpg -../coco/images/val2014/COCO_val2014_000000079689.jpg -../coco/images/val2014/COCO_val2014_000000080104.jpg -../coco/images/val2014/COCO_val2014_000000080172.jpg -../coco/images/val2014/COCO_val2014_000000080219.jpg -../coco/images/val2014/COCO_val2014_000000080300.jpg -../coco/images/val2014/COCO_val2014_000000080395.jpg -../coco/images/val2014/COCO_val2014_000000080522.jpg -../coco/images/val2014/COCO_val2014_000000080714.jpg -../coco/images/val2014/COCO_val2014_000000080737.jpg -../coco/images/val2014/COCO_val2014_000000080747.jpg -../coco/images/val2014/COCO_val2014_000000081000.jpg -../coco/images/val2014/COCO_val2014_000000081081.jpg -../coco/images/val2014/COCO_val2014_000000081100.jpg -../coco/images/val2014/COCO_val2014_000000081287.jpg -../coco/images/val2014/COCO_val2014_000000081394.jpg -../coco/images/val2014/COCO_val2014_000000081552.jpg -../coco/images/val2014/COCO_val2014_000000082157.jpg -../coco/images/val2014/COCO_val2014_000000082252.jpg -../coco/images/val2014/COCO_val2014_000000082259.jpg -../coco/images/val2014/COCO_val2014_000000082367.jpg -../coco/images/val2014/COCO_val2014_000000082431.jpg -../coco/images/val2014/COCO_val2014_000000082456.jpg -../coco/images/val2014/COCO_val2014_000000082794.jpg -../coco/images/val2014/COCO_val2014_000000082807.jpg -../coco/images/val2014/COCO_val2014_000000082846.jpg -../coco/images/val2014/COCO_val2014_000000082847.jpg -../coco/images/val2014/COCO_val2014_000000082889.jpg -../coco/images/val2014/COCO_val2014_000000082981.jpg -../coco/images/val2014/COCO_val2014_000000083036.jpg -../coco/images/val2014/COCO_val2014_000000083065.jpg -../coco/images/val2014/COCO_val2014_000000083142.jpg -../coco/images/val2014/COCO_val2014_000000083275.jpg -../coco/images/val2014/COCO_val2014_000000083557.jpg -../coco/images/val2014/COCO_val2014_000000084073.jpg -../coco/images/val2014/COCO_val2014_000000084447.jpg -../coco/images/val2014/COCO_val2014_000000084463.jpg -../coco/images/val2014/COCO_val2014_000000084592.jpg -../coco/images/val2014/COCO_val2014_000000084674.jpg -../coco/images/val2014/COCO_val2014_000000084762.jpg -../coco/images/val2014/COCO_val2014_000000084870.jpg -../coco/images/val2014/COCO_val2014_000000084929.jpg -../coco/images/val2014/COCO_val2014_000000084980.jpg -../coco/images/val2014/COCO_val2014_000000085101.jpg -../coco/images/val2014/COCO_val2014_000000085292.jpg -../coco/images/val2014/COCO_val2014_000000085353.jpg -../coco/images/val2014/COCO_val2014_000000085674.jpg -../coco/images/val2014/COCO_val2014_000000085813.jpg -../coco/images/val2014/COCO_val2014_000000086011.jpg -../coco/images/val2014/COCO_val2014_000000086133.jpg -../coco/images/val2014/COCO_val2014_000000086136.jpg -../coco/images/val2014/COCO_val2014_000000086215.jpg -../coco/images/val2014/COCO_val2014_000000086220.jpg -../coco/images/val2014/COCO_val2014_000000086249.jpg -../coco/images/val2014/COCO_val2014_000000086320.jpg -../coco/images/val2014/COCO_val2014_000000086357.jpg -../coco/images/val2014/COCO_val2014_000000086429.jpg -../coco/images/val2014/COCO_val2014_000000086467.jpg -../coco/images/val2014/COCO_val2014_000000086483.jpg -../coco/images/val2014/COCO_val2014_000000086646.jpg -../coco/images/val2014/COCO_val2014_000000086755.jpg -../coco/images/val2014/COCO_val2014_000000086839.jpg -../coco/images/val2014/COCO_val2014_000000086848.jpg -../coco/images/val2014/COCO_val2014_000000086877.jpg -../coco/images/val2014/COCO_val2014_000000087038.jpg -../coco/images/val2014/COCO_val2014_000000087244.jpg -../coco/images/val2014/COCO_val2014_000000087354.jpg -../coco/images/val2014/COCO_val2014_000000087387.jpg -../coco/images/val2014/COCO_val2014_000000087489.jpg -../coco/images/val2014/COCO_val2014_000000087503.jpg -../coco/images/val2014/COCO_val2014_000000087617.jpg -../coco/images/val2014/COCO_val2014_000000087638.jpg -../coco/images/val2014/COCO_val2014_000000087740.jpg -../coco/images/val2014/COCO_val2014_000000087875.jpg -../coco/images/val2014/COCO_val2014_000000088360.jpg -../coco/images/val2014/COCO_val2014_000000088507.jpg -../coco/images/val2014/COCO_val2014_000000088560.jpg -../coco/images/val2014/COCO_val2014_000000088846.jpg -../coco/images/val2014/COCO_val2014_000000088859.jpg -../coco/images/val2014/COCO_val2014_000000088902.jpg -../coco/images/val2014/COCO_val2014_000000089027.jpg -../coco/images/val2014/COCO_val2014_000000089258.jpg -../coco/images/val2014/COCO_val2014_000000089285.jpg -../coco/images/val2014/COCO_val2014_000000089359.jpg -../coco/images/val2014/COCO_val2014_000000089378.jpg -../coco/images/val2014/COCO_val2014_000000089391.jpg -../coco/images/val2014/COCO_val2014_000000089487.jpg -../coco/images/val2014/COCO_val2014_000000089618.jpg -../coco/images/val2014/COCO_val2014_000000089670.jpg -../coco/images/val2014/COCO_val2014_000000090003.jpg -../coco/images/val2014/COCO_val2014_000000090062.jpg -../coco/images/val2014/COCO_val2014_000000090155.jpg -../coco/images/val2014/COCO_val2014_000000090208.jpg -../coco/images/val2014/COCO_val2014_000000090351.jpg -../coco/images/val2014/COCO_val2014_000000090476.jpg -../coco/images/val2014/COCO_val2014_000000090594.jpg -../coco/images/val2014/COCO_val2014_000000090753.jpg -../coco/images/val2014/COCO_val2014_000000090754.jpg -../coco/images/val2014/COCO_val2014_000000090864.jpg -../coco/images/val2014/COCO_val2014_000000091079.jpg -../coco/images/val2014/COCO_val2014_000000091341.jpg -../coco/images/val2014/COCO_val2014_000000091402.jpg -../coco/images/val2014/COCO_val2014_000000091517.jpg -../coco/images/val2014/COCO_val2014_000000091520.jpg -../coco/images/val2014/COCO_val2014_000000091612.jpg -../coco/images/val2014/COCO_val2014_000000091716.jpg -../coco/images/val2014/COCO_val2014_000000091766.jpg -../coco/images/val2014/COCO_val2014_000000091857.jpg -../coco/images/val2014/COCO_val2014_000000091899.jpg -../coco/images/val2014/COCO_val2014_000000091912.jpg -../coco/images/val2014/COCO_val2014_000000092093.jpg -../coco/images/val2014/COCO_val2014_000000092124.jpg -../coco/images/val2014/COCO_val2014_000000092679.jpg -../coco/images/val2014/COCO_val2014_000000092683.jpg -../coco/images/val2014/COCO_val2014_000000092939.jpg -../coco/images/val2014/COCO_val2014_000000092985.jpg -../coco/images/val2014/COCO_val2014_000000093175.jpg -../coco/images/val2014/COCO_val2014_000000093236.jpg -../coco/images/val2014/COCO_val2014_000000093331.jpg -../coco/images/val2014/COCO_val2014_000000093434.jpg -../coco/images/val2014/COCO_val2014_000000093607.jpg -../coco/images/val2014/COCO_val2014_000000093806.jpg -../coco/images/val2014/COCO_val2014_000000093964.jpg -../coco/images/val2014/COCO_val2014_000000094012.jpg -../coco/images/val2014/COCO_val2014_000000094033.jpg -../coco/images/val2014/COCO_val2014_000000094046.jpg -../coco/images/val2014/COCO_val2014_000000094052.jpg -../coco/images/val2014/COCO_val2014_000000094055.jpg -../coco/images/val2014/COCO_val2014_000000094501.jpg -../coco/images/val2014/COCO_val2014_000000094619.jpg -../coco/images/val2014/COCO_val2014_000000094746.jpg -../coco/images/val2014/COCO_val2014_000000094795.jpg -../coco/images/val2014/COCO_val2014_000000094846.jpg -../coco/images/val2014/COCO_val2014_000000095062.jpg -../coco/images/val2014/COCO_val2014_000000095063.jpg -../coco/images/val2014/COCO_val2014_000000095227.jpg -../coco/images/val2014/COCO_val2014_000000095441.jpg -../coco/images/val2014/COCO_val2014_000000095551.jpg -../coco/images/val2014/COCO_val2014_000000095670.jpg -../coco/images/val2014/COCO_val2014_000000095770.jpg -../coco/images/val2014/COCO_val2014_000000096110.jpg -../coco/images/val2014/COCO_val2014_000000096288.jpg -../coco/images/val2014/COCO_val2014_000000096327.jpg -../coco/images/val2014/COCO_val2014_000000096351.jpg -../coco/images/val2014/COCO_val2014_000000096618.jpg -../coco/images/val2014/COCO_val2014_000000096654.jpg -../coco/images/val2014/COCO_val2014_000000096762.jpg -../coco/images/val2014/COCO_val2014_000000096769.jpg -../coco/images/val2014/COCO_val2014_000000096998.jpg -../coco/images/val2014/COCO_val2014_000000097017.jpg -../coco/images/val2014/COCO_val2014_000000097048.jpg -../coco/images/val2014/COCO_val2014_000000097080.jpg -../coco/images/val2014/COCO_val2014_000000097240.jpg -../coco/images/val2014/COCO_val2014_000000097479.jpg -../coco/images/val2014/COCO_val2014_000000097577.jpg -../coco/images/val2014/COCO_val2014_000000097610.jpg -../coco/images/val2014/COCO_val2014_000000097656.jpg -../coco/images/val2014/COCO_val2014_000000097667.jpg -../coco/images/val2014/COCO_val2014_000000097682.jpg -../coco/images/val2014/COCO_val2014_000000097748.jpg -../coco/images/val2014/COCO_val2014_000000097868.jpg -../coco/images/val2014/COCO_val2014_000000097899.jpg -../coco/images/val2014/COCO_val2014_000000098018.jpg -../coco/images/val2014/COCO_val2014_000000098043.jpg -../coco/images/val2014/COCO_val2014_000000098095.jpg -../coco/images/val2014/COCO_val2014_000000098194.jpg -../coco/images/val2014/COCO_val2014_000000098280.jpg -../coco/images/val2014/COCO_val2014_000000098283.jpg -../coco/images/val2014/COCO_val2014_000000098599.jpg -../coco/images/val2014/COCO_val2014_000000098872.jpg -../coco/images/val2014/COCO_val2014_000000099026.jpg -../coco/images/val2014/COCO_val2014_000000099260.jpg -../coco/images/val2014/COCO_val2014_000000099389.jpg -../coco/images/val2014/COCO_val2014_000000099707.jpg -../coco/images/val2014/COCO_val2014_000000099961.jpg -../coco/images/val2014/COCO_val2014_000000099996.jpg -../coco/images/val2014/COCO_val2014_000000100000.jpg -../coco/images/val2014/COCO_val2014_000000100006.jpg -../coco/images/val2014/COCO_val2014_000000100083.jpg -../coco/images/val2014/COCO_val2014_000000100166.jpg -../coco/images/val2014/COCO_val2014_000000100187.jpg -../coco/images/val2014/COCO_val2014_000000100245.jpg -../coco/images/val2014/COCO_val2014_000000100343.jpg -../coco/images/val2014/COCO_val2014_000000100428.jpg -../coco/images/val2014/COCO_val2014_000000100582.jpg -../coco/images/val2014/COCO_val2014_000000100723.jpg -../coco/images/val2014/COCO_val2014_000000100726.jpg -../coco/images/val2014/COCO_val2014_000000100909.jpg -../coco/images/val2014/COCO_val2014_000000101059.jpg -../coco/images/val2014/COCO_val2014_000000101145.jpg -../coco/images/val2014/COCO_val2014_000000101567.jpg -../coco/images/val2014/COCO_val2014_000000101623.jpg -../coco/images/val2014/COCO_val2014_000000101703.jpg -../coco/images/val2014/COCO_val2014_000000101884.jpg -../coco/images/val2014/COCO_val2014_000000101948.jpg -../coco/images/val2014/COCO_val2014_000000102331.jpg -../coco/images/val2014/COCO_val2014_000000102421.jpg -../coco/images/val2014/COCO_val2014_000000102439.jpg -../coco/images/val2014/COCO_val2014_000000102446.jpg -../coco/images/val2014/COCO_val2014_000000102461.jpg -../coco/images/val2014/COCO_val2014_000000102466.jpg -../coco/images/val2014/COCO_val2014_000000102478.jpg -../coco/images/val2014/COCO_val2014_000000102594.jpg -../coco/images/val2014/COCO_val2014_000000102598.jpg -../coco/images/val2014/COCO_val2014_000000102665.jpg -../coco/images/val2014/COCO_val2014_000000102707.jpg -../coco/images/val2014/COCO_val2014_000000102848.jpg -../coco/images/val2014/COCO_val2014_000000102906.jpg -../coco/images/val2014/COCO_val2014_000000103122.jpg -../coco/images/val2014/COCO_val2014_000000103255.jpg -../coco/images/val2014/COCO_val2014_000000103272.jpg -../coco/images/val2014/COCO_val2014_000000103379.jpg -../coco/images/val2014/COCO_val2014_000000103413.jpg -../coco/images/val2014/COCO_val2014_000000103431.jpg -../coco/images/val2014/COCO_val2014_000000103509.jpg -../coco/images/val2014/COCO_val2014_000000103538.jpg -../coco/images/val2014/COCO_val2014_000000103667.jpg -../coco/images/val2014/COCO_val2014_000000103747.jpg -../coco/images/val2014/COCO_val2014_000000103931.jpg -../coco/images/val2014/COCO_val2014_000000104002.jpg -../coco/images/val2014/COCO_val2014_000000104455.jpg -../coco/images/val2014/COCO_val2014_000000104486.jpg -../coco/images/val2014/COCO_val2014_000000104494.jpg -../coco/images/val2014/COCO_val2014_000000104495.jpg -../coco/images/val2014/COCO_val2014_000000104893.jpg -../coco/images/val2014/COCO_val2014_000000104965.jpg -../coco/images/val2014/COCO_val2014_000000105040.jpg -../coco/images/val2014/COCO_val2014_000000105102.jpg -../coco/images/val2014/COCO_val2014_000000105156.jpg -../coco/images/val2014/COCO_val2014_000000105264.jpg -../coco/images/val2014/COCO_val2014_000000105291.jpg -../coco/images/val2014/COCO_val2014_000000105367.jpg -../coco/images/val2014/COCO_val2014_000000105647.jpg -../coco/images/val2014/COCO_val2014_000000105668.jpg -../coco/images/val2014/COCO_val2014_000000105711.jpg -../coco/images/val2014/COCO_val2014_000000105866.jpg -../coco/images/val2014/COCO_val2014_000000105973.jpg -../coco/images/val2014/COCO_val2014_000000106096.jpg -../coco/images/val2014/COCO_val2014_000000106120.jpg -../coco/images/val2014/COCO_val2014_000000106314.jpg -../coco/images/val2014/COCO_val2014_000000106351.jpg -../coco/images/val2014/COCO_val2014_000000106641.jpg -../coco/images/val2014/COCO_val2014_000000106661.jpg -../coco/images/val2014/COCO_val2014_000000106757.jpg -../coco/images/val2014/COCO_val2014_000000106793.jpg -../coco/images/val2014/COCO_val2014_000000106849.jpg -../coco/images/val2014/COCO_val2014_000000107004.jpg -../coco/images/val2014/COCO_val2014_000000107123.jpg -../coco/images/val2014/COCO_val2014_000000107183.jpg -../coco/images/val2014/COCO_val2014_000000107227.jpg -../coco/images/val2014/COCO_val2014_000000107244.jpg -../coco/images/val2014/COCO_val2014_000000107304.jpg -../coco/images/val2014/COCO_val2014_000000107542.jpg -../coco/images/val2014/COCO_val2014_000000107741.jpg -../coco/images/val2014/COCO_val2014_000000107831.jpg -../coco/images/val2014/COCO_val2014_000000107839.jpg -../coco/images/val2014/COCO_val2014_000000108051.jpg -../coco/images/val2014/COCO_val2014_000000108152.jpg -../coco/images/val2014/COCO_val2014_000000108212.jpg -../coco/images/val2014/COCO_val2014_000000108380.jpg -../coco/images/val2014/COCO_val2014_000000108408.jpg -../coco/images/val2014/COCO_val2014_000000108531.jpg -../coco/images/val2014/COCO_val2014_000000108761.jpg -../coco/images/val2014/COCO_val2014_000000108864.jpg -../coco/images/val2014/COCO_val2014_000000109055.jpg -../coco/images/val2014/COCO_val2014_000000109092.jpg -../coco/images/val2014/COCO_val2014_000000109178.jpg -../coco/images/val2014/COCO_val2014_000000109216.jpg -../coco/images/val2014/COCO_val2014_000000109231.jpg -../coco/images/val2014/COCO_val2014_000000109308.jpg -../coco/images/val2014/COCO_val2014_000000109486.jpg -../coco/images/val2014/COCO_val2014_000000109819.jpg -../coco/images/val2014/COCO_val2014_000000109869.jpg -../coco/images/val2014/COCO_val2014_000000110313.jpg -../coco/images/val2014/COCO_val2014_000000110389.jpg -../coco/images/val2014/COCO_val2014_000000110562.jpg -../coco/images/val2014/COCO_val2014_000000110617.jpg -../coco/images/val2014/COCO_val2014_000000110638.jpg -../coco/images/val2014/COCO_val2014_000000110881.jpg -../coco/images/val2014/COCO_val2014_000000110884.jpg -../coco/images/val2014/COCO_val2014_000000110951.jpg -../coco/images/val2014/COCO_val2014_000000111004.jpg -../coco/images/val2014/COCO_val2014_000000111014.jpg -../coco/images/val2014/COCO_val2014_000000111024.jpg -../coco/images/val2014/COCO_val2014_000000111076.jpg -../coco/images/val2014/COCO_val2014_000000111179.jpg -../coco/images/val2014/COCO_val2014_000000111590.jpg -../coco/images/val2014/COCO_val2014_000000111593.jpg -../coco/images/val2014/COCO_val2014_000000111878.jpg -../coco/images/val2014/COCO_val2014_000000112298.jpg -../coco/images/val2014/COCO_val2014_000000112388.jpg -../coco/images/val2014/COCO_val2014_000000112394.jpg -../coco/images/val2014/COCO_val2014_000000112440.jpg -../coco/images/val2014/COCO_val2014_000000112751.jpg -../coco/images/val2014/COCO_val2014_000000112818.jpg -../coco/images/val2014/COCO_val2014_000000112820.jpg -../coco/images/val2014/COCO_val2014_000000112830.jpg -../coco/images/val2014/COCO_val2014_000000112928.jpg -../coco/images/val2014/COCO_val2014_000000113139.jpg -../coco/images/val2014/COCO_val2014_000000113173.jpg -../coco/images/val2014/COCO_val2014_000000113313.jpg -../coco/images/val2014/COCO_val2014_000000113440.jpg -../coco/images/val2014/COCO_val2014_000000113559.jpg -../coco/images/val2014/COCO_val2014_000000113570.jpg -../coco/images/val2014/COCO_val2014_000000113579.jpg -../coco/images/val2014/COCO_val2014_000000113590.jpg -../coco/images/val2014/COCO_val2014_000000113757.jpg -../coco/images/val2014/COCO_val2014_000000113977.jpg -../coco/images/val2014/COCO_val2014_000000114033.jpg -../coco/images/val2014/COCO_val2014_000000114055.jpg -../coco/images/val2014/COCO_val2014_000000114090.jpg -../coco/images/val2014/COCO_val2014_000000114147.jpg -../coco/images/val2014/COCO_val2014_000000114239.jpg -../coco/images/val2014/COCO_val2014_000000114503.jpg -../coco/images/val2014/COCO_val2014_000000114907.jpg -../coco/images/val2014/COCO_val2014_000000114926.jpg -../coco/images/val2014/COCO_val2014_000000115069.jpg -../coco/images/val2014/COCO_val2014_000000115070.jpg -../coco/images/val2014/COCO_val2014_000000115128.jpg -../coco/images/val2014/COCO_val2014_000000115870.jpg -../coco/images/val2014/COCO_val2014_000000115898.jpg -../coco/images/val2014/COCO_val2014_000000115930.jpg -../coco/images/val2014/COCO_val2014_000000116226.jpg -../coco/images/val2014/COCO_val2014_000000116556.jpg -../coco/images/val2014/COCO_val2014_000000116667.jpg -../coco/images/val2014/COCO_val2014_000000116696.jpg -../coco/images/val2014/COCO_val2014_000000116936.jpg -../coco/images/val2014/COCO_val2014_000000117014.jpg -../coco/images/val2014/COCO_val2014_000000117037.jpg -../coco/images/val2014/COCO_val2014_000000117125.jpg -../coco/images/val2014/COCO_val2014_000000117127.jpg -../coco/images/val2014/COCO_val2014_000000117191.jpg diff --git a/data/coco_1k5k.data b/data/coco_1k5k.data deleted file mode 100644 index a466df4a..00000000 --- a/data/coco_1k5k.data +++ /dev/null @@ -1,6 +0,0 @@ -classes=80 -train=./data/coco_1000img.txt -valid=./data/5k.txt -names=data/coco.names -backup=backup/ -eval=coco From 0147b5036ebc19e2c90b134f5f18ff14ebff8ffe Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 7 Dec 2019 15:05:00 -0800 Subject: [PATCH 1713/2595] updates --- Dockerfile | 2 +- cfg/yolov3-spp-matrix.cfg | 1115 +++++++++++++++++++++++++++++++++++++ cfg/yolov3-spp3.cfg | 870 +++++++++++++++++++++++++++++ 3 files changed, 1986 insertions(+), 1 deletion(-) create mode 100644 cfg/yolov3-spp-matrix.cfg create mode 100644 cfg/yolov3-spp3.cfg diff --git a/Dockerfile b/Dockerfile index 4738ad58..84893a50 100644 --- a/Dockerfile +++ b/Dockerfile @@ -58,7 +58,7 @@ COPY . /usr/src/app # export t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t # Build and Push -# export t=ultralytics/yolov3:v0 && sudo docker build -t $t . && sudo docker push $t +# export t=ultralytics/yolov3:v112 && sudo docker build -t $t . && sudo docker push $t # Kill all # sudo docker kill "$(sudo docker ps -q)" diff --git a/cfg/yolov3-spp-matrix.cfg b/cfg/yolov3-spp-matrix.cfg new file mode 100644 index 00000000..14befdba --- /dev/null +++ b/cfg/yolov3-spp-matrix.cfg @@ -0,0 +1,1115 @@ +[net] +# Testing +# batch=1 +# subdivisions=1 +# Training +batch=64 +subdivisions=16 +width=416 +height=416 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500500 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +###################### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +### SPP ### +[maxpool] +stride=1 +size=5 + +[route] +layers=-2 + +[maxpool] +stride=1 +size=9 + +[route] +layers=-4 + +[maxpool] +stride=1 +size=13 + +[route] +layers=-1,-3,-5,-6 + +### End SPP ### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + +# 89 +[yolo] +mask = 6,7,8 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326, 10,7, 16,15, 33,12, 5,13, 8,30, 17,23, 30,31, 62,23, 59,60, 15,61, 31,45, 30,119, 116,45, 156,99, 373,163, 58,90, 78,198, 187,326 +classes=80 +num=27 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 61 + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + +# 101 +[yolo] +mask = 3,4,5 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326, 10,7, 16,15, 33,12, 5,13, 8,30, 17,23, 30,31, 62,23, 59,60, 15,61, 31,45, 30,119, 116,45, 156,99, 373,163, 58,90, 78,198, 187,326 +classes=80 +num=27 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 36 + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + +# 113 +[yolo] +mask = 0,1,2 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326, 10,7, 16,15, 33,12, 5,13, 8,30, 17,23, 30,31, 62,23, 59,60, 15,61, 31,45, 30,119, 116,45, 156,99, 373,163, 58,90, 78,198, 187,326 +classes=80 +num=27 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + +################## + +[route] +layers = 110 + +# 115 +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +# 116 +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride_x=1 +stride_y=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + +[yolo] +mask = 9,10,11 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326, 10,7, 16,15, 33,12, 5,13, 8,30, 17,23, 30,31, 62,23, 59,60, 15,61, 31,45, 30,119, 116,45, 156,99, 373,163, 58,90, 78,198, 187,326 +classes=80 +num=27 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = 110 + +# 121 +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +# 122 +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride_x=2 +stride_y=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + +[yolo] +mask = 12,13,14 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326, 10,7, 16,15, 33,12, 5,13, 8,30, 17,23, 30,31, 62,23, 59,60, 15,61, 31,45, 30,119, 116,45, 156,99, 373,163, 58,90, 78,198, 187,326 +classes=80 +num=27 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + +################## + +[route] +layers = 98 + +[convolutional] +share_index=115 +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +share_index=116 +batch_normalize=1 +filters=128 +size=1 +stride_x=1 +stride_y=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + +[yolo] +mask = 15,16,17 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326, 10,7, 16,15, 33,12, 5,13, 8,30, 17,23, 30,31, 62,23, 59,60, 15,61, 31,45, 30,119, 116,45, 156,99, 373,163, 58,90, 78,198, 187,326 +classes=80 +num=27 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = 98 + +[convolutional] +share_index=121 +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +share_index=122 +batch_normalize=1 +filters=128 +size=1 +stride_x=2 +stride_y=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + +[yolo] +mask = 18,19,20 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326, 10,7, 16,15, 33,12, 5,13, 8,30, 17,23, 30,31, 62,23, 59,60, 15,61, 31,45, 30,119, 116,45, 156,99, 373,163, 58,90, 78,198, 187,326 +classes=80 +num=27 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + +################## + +[route] +layers = 86 + +[convolutional] +share_index=115 +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +share_index=116 +batch_normalize=1 +filters=128 +size=1 +stride_x=1 +stride_y=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + +[yolo] +mask = 21,22,23 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326, 10,7, 16,15, 33,12, 5,13, 8,30, 17,23, 30,31, 62,23, 59,60, 15,61, 31,45, 30,119, 116,45, 156,99, 373,163, 58,90, 78,198, 187,326 +classes=80 +num=27 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = 86 + +[convolutional] +share_index=121 +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +share_index=122 +batch_normalize=1 +filters=128 +size=1 +stride_x=2 +stride_y=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + +[yolo] +mask = 24,25,26 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326, 10,7, 16,15, 33,12, 5,13, 8,30, 17,23, 30,31, 62,23, 59,60, 15,61, 31,45, 30,119, 116,45, 156,99, 373,163, 58,90, 78,198, 187,326 +classes=80 +num=27 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 \ No newline at end of file diff --git a/cfg/yolov3-spp3.cfg b/cfg/yolov3-spp3.cfg new file mode 100644 index 00000000..ea601054 --- /dev/null +++ b/cfg/yolov3-spp3.cfg @@ -0,0 +1,870 @@ +[net] +# Testing +batch=1 +subdivisions=1 +# Training +# batch=64 +# subdivisions=16 +width=608 +height=608 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 120200 +policy=steps +steps=70000,100000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +###################### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +### SPP ### +[maxpool] +stride=1 +size=5 + +[route] +layers=-2 + +[maxpool] +stride=1 +size=9 + +[route] +layers=-4 + +[maxpool] +stride=1 +size=13 + +[route] +layers=-1,-3,-5,-6 + +### End SPP ### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 6,7,8 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 61 + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +### SPP ### +[maxpool] +stride=1 +size=5 + +[route] +layers=-2 + +[maxpool] +stride=1 +size=9 + +[route] +layers=-4 + +[maxpool] +stride=1 +size=13 + +[route] +layers=-1,-3,-5,-6 + +### End SPP ### + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 3,4,5 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 36 + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +### SPP ### +[maxpool] +stride=1 +size=5 + +[route] +layers=-2 + +[maxpool] +stride=1 +size=9 + +[route] +layers=-4 + +[maxpool] +stride=1 +size=13 + +[route] +layers=-1,-3,-5,-6 + +### End SPP ### + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 0,1,2 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 From 6fd450c9047d495552e6e57bd1d30c49fd17d71f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 7 Dec 2019 15:06:38 -0800 Subject: [PATCH 1714/2595] updates --- Dockerfile | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index 84893a50..f53dc692 100644 --- a/Dockerfile +++ b/Dockerfile @@ -43,23 +43,15 @@ COPY . /usr/src/app # --------------------------------------------------- Extras Below --------------------------------------------------- -# Build -# rm -rf yolov3 # Warning: remove existing -# git clone https://github.com/ultralytics/yolov3 && cd yolov3 && python3 detect.py -# sudo docker image prune -af && sudo docker build -t ultralytics/yolov3:v0 . +# Build and Push +# export t=ultralytics/yolov3:v0 && sudo docker build -t $t . && sudo docker push $t # Run # sudo nvidia-docker run --ipc=host ultralytics/yolov3:v0 python3 detect.py -# Run with local directory access -# sudo nvidia-docker run --ipc=host -it -v "$(pwd)"/coco:/usr/src/coco ultralytics/yolov3:v0 - # Pull and Run with local directory access # export t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t -# Build and Push -# export t=ultralytics/yolov3:v112 && sudo docker build -t $t . && sudo docker push $t - # Kill all # sudo docker kill "$(sudo docker ps -q)" From 1f943e886f1bd0a95764c30b941d812291824a63 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 7 Dec 2019 15:17:29 -0800 Subject: [PATCH 1715/2595] updates --- train.py | 1 - 1 file changed, 1 deletion(-) diff --git a/train.py b/train.py index e22789ee..ef45c5dd 100644 --- a/train.py +++ b/train.py @@ -114,7 +114,6 @@ def train(): try: chkpt['model'] = {k: v for k, v in chkpt['model'].items() if model.state_dict()[k].numel() == v.numel()} model.load_state_dict(chkpt['model'], strict=False) - # model.load_state_dict(chkpt['model']) except KeyError as e: s = "%s is not compatible with %s. Specify --weights '' or specify a --cfg compatible with %s. " \ "See https://github.com/ultralytics/yolov3/issues/657" % (opt.weights, opt.cfg, opt.weights) From b81beb0f5f0cf74c2ec8065ce9bde78c2c4e1841 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 7 Dec 2019 22:55:26 -0800 Subject: [PATCH 1716/2595] updates --- train.py | 1 + 1 file changed, 1 insertion(+) diff --git a/train.py b/train.py index ef45c5dd..ff02e154 100644 --- a/train.py +++ b/train.py @@ -210,6 +210,7 @@ def train(): # Test Dataloader if not opt.prebias: testloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path, img_size, batch_size, hyp=hyp, + rect=True, cache_labels=True, cache_images=opt.cache_images), batch_size=batch_size, From f373764e4d4376e469f20dab527dd3444c0a5fa8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 12:26:31 -0800 Subject: [PATCH 1717/2595] updates --- utils/datasets.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index c82abea4..3f1e1799 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -677,8 +677,8 @@ def random_affine(img, targets=(), degrees=10, translate=.1, scale=.1, shear=10, # xy = np.concatenate((x - w / 2, y - h / 2, x + w / 2, y + h / 2)).reshape(4, n).T # reject warped points outside of image - xy[:, [0, 2]] = xy[:, [0, 2]].clip(0, width) - xy[:, [1, 3]] = xy[:, [1, 3]].clip(0, height) + np.clip(xy[:, [0, 2]], 0, width, out=xy[:, [0, 2]]) + np.clip(xy[:, [1, 3]], 0, height, out=xy[:, [1, 3]]) w = xy[:, 2] - xy[:, 0] h = xy[:, 3] - xy[:, 1] area = w * h From 638ecbe894e4890473d0f1628c6f8d5179f96974 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 13:04:40 -0800 Subject: [PATCH 1718/2595] updates --- utils/datasets.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 3f1e1799..c82abea4 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -677,8 +677,8 @@ def random_affine(img, targets=(), degrees=10, translate=.1, scale=.1, shear=10, # xy = np.concatenate((x - w / 2, y - h / 2, x + w / 2, y + h / 2)).reshape(4, n).T # reject warped points outside of image - np.clip(xy[:, [0, 2]], 0, width, out=xy[:, [0, 2]]) - np.clip(xy[:, [1, 3]], 0, height, out=xy[:, [1, 3]]) + xy[:, [0, 2]] = xy[:, [0, 2]].clip(0, width) + xy[:, [1, 3]] = xy[:, [1, 3]].clip(0, height) w = xy[:, 2] - xy[:, 0] h = xy[:, 3] - xy[:, 1] area = w * h From 01d9d551c3d623e36d2643c89fe804ab93b47bc4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 15:35:13 -0800 Subject: [PATCH 1719/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index c82abea4..74967b74 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -683,7 +683,7 @@ def random_affine(img, targets=(), degrees=10, translate=.1, scale=.1, shear=10, h = xy[:, 3] - xy[:, 1] area = w * h area0 = (targets[:, 3] - targets[:, 1]) * (targets[:, 4] - targets[:, 2]) - ar = np.maximum(w / (h + 1e-16), h / (w + 1e-16)) + ar = np.maximum(w / (h + 1e-16), h / (w + 1e-16)) # aspect ratio i = (w > 4) & (h > 4) & (area / (area0 + 1e-16) > 0.1) & (ar < 10) targets = targets[i] From b81c17aa9f1cd901c5be923bff68893bb5a9be3c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 16:02:55 -0800 Subject: [PATCH 1720/2595] updates --- utils/utils.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index a289ea55..c33ccc70 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -427,12 +427,11 @@ def build_targets(model, targets): a = torch.arange(na).view((-1, 1)).repeat([1, nt]).view(-1) t = targets.repeat([na, 1]) gwh = gwh.repeat([na, 1]) - iou = iou.view(-1) # use all ious # reject anchors below iou_thres (OPTIONAL, increases P, lowers R) reject = True if reject: - j = iou > model.hyp['iou_t'] # iou threshold hyperparameter + j = iou.view(-1) > model.hyp['iou_t'] # iou threshold hyperparameter t, a, gwh = t[j], a[j], gwh[j] # Indices From 29e60e50e556c0d3565a95b9df051c6feceb3be9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 16:16:16 -0800 Subject: [PATCH 1721/2595] updates --- models.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index 330f4621..528ede98 100755 --- a/models.py +++ b/models.py @@ -167,7 +167,9 @@ class YOLOLayer(nn.Module): create_grids(self, img_size, (nx, ny), p.device, p.dtype) # p.view(bs, 255, 13, 13) -- > (bs, 3, 13, 13, 85) # (bs, anchors, grid, grid, classes + xywh) - p = p.view(bs, self.na, self.nc + 5, self.ny, self.nx).permute(0, 1, 3, 4, 2).contiguous() # prediction + # p = p.view(bs, self.na, self.nc + 5, self.ny, self.nx).permute(0, 1, 3, 4, 2).contiguous() # prediction + # https://discuss.pytorch.org/t/in-pytorch-0-4-is-it-recommended-to-use-reshape-than-view-when-it-is-possible/17034 + p = p.reshape(bs, self.na, self.nc + 5, self.ny, self.nx).permute(0, 1, 3, 4, 2) # prediction if self.training: return p From ea2076a6d272bc1b7597b737d37449b7b46a6a9c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 16:20:27 -0800 Subject: [PATCH 1722/2595] updates --- utils/gcp.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index fad46c54..f39d3a64 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -3,9 +3,8 @@ # New VM rm -rf sample_data yolov3 darknet apex coco cocoapi knife knifec git clone https://github.com/ultralytics/yolov3 -# git clone https://github.com/AlexeyAB/darknet && cd darknet && make GPU=1 CUDNN=1 CUDNN_HALF=1 OPENCV=0 && wget -c https://pjreddie.com/media/files/darknet53.conv.74 && cd .. git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex -sudo conda install -y -c conda-forge scikit-image pycocotools # tensorboard +conda install -yc conda-forge scikit-image pycocotools python3 -c " from yolov3.utils.google_utils import gdrive_download gdrive_download('1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO','coco.zip')" From 3953d5c8b0a1b2bdd64599ea06c50a7ebf259508 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 16:21:57 -0800 Subject: [PATCH 1723/2595] updates --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 0c1c9256..a6d8b92e 100755 --- a/requirements.txt +++ b/requirements.txt @@ -13,7 +13,7 @@ Pillow # Equivalent conda commands ---------------------------------------------------- # conda update -n base -c defaults conda -# conda install -yc anaconda numpy opencv matplotlib tqdm pillow future +# conda install -yc anaconda numpy opencv matplotlib tqdm pillow ipython future # conda install -yc conda-forge scikit-image pycocotools onnx tensorboard # conda install -yc spyder-ide spyder-line-profiler # conda install -yc pytorch pytorch torchvision From 0fa4e498c1749d7b599672679d993d51355964dd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 16:34:01 -0800 Subject: [PATCH 1724/2595] updates --- train.py | 4 ++-- utils/gcp.sh | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index ff02e154..4f96e291 100644 --- a/train.py +++ b/train.py @@ -417,10 +417,10 @@ def prebias(): if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--epochs', type=int, default=273) # 500200 batches at bs 16, 117263 images = 273 epochs - parser.add_argument('--batch-size', type=int, default=16) # effective bs = batch_size * accumulate = 16 * 4 = 64 + parser.add_argument('--batch-size', type=int, default=1) # effective bs = batch_size * accumulate = 16 * 4 = 64 parser.add_argument('--accumulate', type=int, default=4, help='batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data', type=str, default='data/coco.data', help='*.data file path') + parser.add_argument('--data', type=str, default='data/coco_64img.data', help='*.data file path') parser.add_argument('--multi-scale', action='store_true', help='adjust (67% - 150%) img_size every 10 batches') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--rect', action='store_true', help='rectangular training') diff --git a/utils/gcp.sh b/utils/gcp.sh index f39d3a64..c898ab60 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -4,10 +4,10 @@ rm -rf sample_data yolov3 darknet apex coco cocoapi knife knifec git clone https://github.com/ultralytics/yolov3 git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex -conda install -yc conda-forge scikit-image pycocotools +sudo conda install -yc conda-forge scikit-image pycocotools python3 -c " from yolov3.utils.google_utils import gdrive_download -gdrive_download('1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO','coco.zip')" +gdrive_download('1WQT6SOktSe8Uw6r10-2JhbEhMY5DJaph','coco.zip')" sudo shutdown # Re-clone From 267367b10514e3c7fd2e932abe2d187e6ae42380 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 16:34:27 -0800 Subject: [PATCH 1725/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 4f96e291..ff02e154 100644 --- a/train.py +++ b/train.py @@ -417,10 +417,10 @@ def prebias(): if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--epochs', type=int, default=273) # 500200 batches at bs 16, 117263 images = 273 epochs - parser.add_argument('--batch-size', type=int, default=1) # effective bs = batch_size * accumulate = 16 * 4 = 64 + parser.add_argument('--batch-size', type=int, default=16) # effective bs = batch_size * accumulate = 16 * 4 = 64 parser.add_argument('--accumulate', type=int, default=4, help='batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data', type=str, default='data/coco_64img.data', help='*.data file path') + parser.add_argument('--data', type=str, default='data/coco.data', help='*.data file path') parser.add_argument('--multi-scale', action='store_true', help='adjust (67% - 150%) img_size every 10 batches') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--rect', action='store_true', help='rectangular training') From b759356d2f8db9ad7f5cb38f5df2af20a770d7d1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 16:36:52 -0800 Subject: [PATCH 1726/2595] updates --- utils/gcp.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index c898ab60..cd840a35 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # New VM -rm -rf sample_data yolov3 darknet apex coco cocoapi knife knifec +rm -rf sample_data yolov3 git clone https://github.com/ultralytics/yolov3 git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex sudo conda install -yc conda-forge scikit-image pycocotools From 50866ddaa991433efcf3a6c10944e85e22f6638f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 16:44:33 -0800 Subject: [PATCH 1727/2595] updates --- utils/gcp.sh | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index cd840a35..d382dff0 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -5,10 +5,8 @@ rm -rf sample_data yolov3 git clone https://github.com/ultralytics/yolov3 git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex sudo conda install -yc conda-forge scikit-image pycocotools -python3 -c " -from yolov3.utils.google_utils import gdrive_download -gdrive_download('1WQT6SOktSe8Uw6r10-2JhbEhMY5DJaph','coco.zip')" -sudo shutdown +python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('1WQT6SOktSe8Uw6r10-2JhbEhMY5DJaph','coco.zip')" +sudo reboot # Re-clone rm -rf yolov3 # Warning: remove existing From b913d1ab55921127824efe3020bdcb878a5cea3b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 17:00:13 -0800 Subject: [PATCH 1728/2595] updates --- utils/datasets.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 74967b74..18e25a15 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -101,8 +101,8 @@ class LoadImages: # for inference # Padded resize img = letterbox(img0, new_shape=self.img_size)[0] - # Normalize RGB - img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB + # Convert + img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416 img = np.ascontiguousarray(img, dtype=np.float16 if self.half else np.float32) # uint8 to fp16/fp32 img /= 255.0 # 0 - 255 to 0.0 - 1.0 @@ -174,8 +174,8 @@ class LoadWebcam: # for inference # Padded resize img = letterbox(img0, new_shape=self.img_size)[0] - # Normalize RGB - img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB + # Convert + img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416 img = np.ascontiguousarray(img, dtype=np.float16 if self.half else np.float32) # uint8 to fp16/fp32 img /= 255.0 # 0 - 255 to 0.0 - 1.0 @@ -243,9 +243,9 @@ class LoadStreams: # multiple IP or RTSP cameras # Stack img = np.stack(img, 0) - # Normalize RGB - img = img[:, :, :, ::-1].transpose(0, 3, 1, 2) # BGR to RGB - img = np.ascontiguousarray(img, dtype=np.float16 if self.half else np.float32) # uint8 to fp16/fp32 + # Convert + img = img[:, :, :, ::-1].transpose(0, 3, 1, 2) # BGR to RGB, to 3x416x416, uint8 to float32 + img = np.ascontiguousarray(img, dtype=np.float16 if self.half else np.float32) img /= 255.0 # 0 - 255 to 0.0 - 1.0 return self.sources, img, img0, None @@ -485,7 +485,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing if nL: labels_out[:, 1:] = torch.from_numpy(labels) - # Normalize + # Convert img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416 img = np.ascontiguousarray(img, dtype=np.float32) # uint8 to float32 img /= 255.0 # 0 - 255 to 0.0 - 1.0 From 4942aacef963515797bee84df89ae4b54f75e903 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 17:19:42 -0800 Subject: [PATCH 1729/2595] updates --- utils/utils.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index c33ccc70..bfba712c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -406,6 +406,7 @@ def build_targets(model, targets): nt = len(targets) tcls, tbox, indices, av = [], [], [], [] multi_gpu = type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) + reject, use_all_anchors = True, True for i in model.yolo_layers: # get number of grid points and anchor vec for this yolo layer if multi_gpu: @@ -419,17 +420,15 @@ def build_targets(model, targets): if nt: iou = torch.stack([wh_iou(x, gwh) for x in anchor_vec], 0) - use_best_anchor = False - if use_best_anchor: - iou, a = iou.max(0) # best iou and anchor - else: # use all anchors + if use_all_anchors: na = len(anchor_vec) # number of anchors a = torch.arange(na).view((-1, 1)).repeat([1, nt]).view(-1) t = targets.repeat([na, 1]) gwh = gwh.repeat([na, 1]) + else: # use best anchor only + iou, a = iou.max(0) # best iou and anchor # reject anchors below iou_thres (OPTIONAL, increases P, lowers R) - reject = True if reject: j = iou.view(-1) > model.hyp['iou_t'] # iou threshold hyperparameter t, a, gwh = t[j], a[j], gwh[j] From e35397ee41c085eecaf75e286005982ba6ef4884 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 17:52:44 -0800 Subject: [PATCH 1730/2595] updates --- README.md | 2 +- test.py | 2 +- train.py | 2 +- utils/datasets.py | 3 +-- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 9f1fd365..66ba387a 100755 --- a/README.md +++ b/README.md @@ -86,7 +86,7 @@ GPUs | `batch_size` | images/sec | epoch time | epoch cost K80 | 64 (32x2) | 11 | 175 min | $0.58 T4 | 64 (32x2) | 40 | 49 min | $0.29 T4 x2 | 64 (64x1) | 61 | 32 min | $0.36 -V100 | 64 (32x2) | 115 | 17 min | $0.24 +V100 | 64 (32x2) | 122 | 16 min | $0.23 V100 x2 | 64 (64x1) | 150 | 13 min | $0.36 2080Ti | 64 (32x2) | 81 | 24 min | - 2080Ti x2 | 64 (64x1) | 140 | 14 min | - diff --git a/test.py b/test.py index 9ffa82e2..f1145f30 100644 --- a/test.py +++ b/test.py @@ -64,8 +64,8 @@ def test(cfg, loss = torch.zeros(3) jdict, stats, ap, ap_class = [], [], [], [] for batch_i, (imgs, targets, paths, shapes) in enumerate(tqdm(dataloader, desc=s)): + imgs = imgs.to(device).float() / 255.0 # uint8 to float32, 0 - 255 to 0.0 - 1.0 targets = targets.to(device) - imgs = imgs.to(device) _, _, height, width = imgs.shape # batch size, channels, height, width # Plot images with bounding boxes diff --git a/train.py b/train.py index ff02e154..0c4b56bc 100644 --- a/train.py +++ b/train.py @@ -251,7 +251,7 @@ def train(): pbar = tqdm(enumerate(dataloader), total=nb) # progress bar for i, (imgs, targets, paths, _) in pbar: # batch ------------------------------------------------------------- ni = i + nb * epoch # number integrated batches (since train start) - imgs = imgs.to(device) + imgs = imgs.to(device).float() / 255.0 # uint8 to float32, 0 - 255 to 0.0 - 1.0 targets = targets.to(device) # Multi-Scale training diff --git a/utils/datasets.py b/utils/datasets.py index 18e25a15..e5daa630 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -487,8 +487,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Convert img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416 - img = np.ascontiguousarray(img, dtype=np.float32) # uint8 to float32 - img /= 255.0 # 0 - 255 to 0.0 - 1.0 + img = np.ascontiguousarray(img) return torch.from_numpy(img), labels_out, img_path, ((h, w), (ratio, pad)) From 61c3cb9ecf0f6ba17cb2473fb84804a0779ee0b4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 17:57:23 -0800 Subject: [PATCH 1731/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 0c4b56bc..ef991e2e 100644 --- a/train.py +++ b/train.py @@ -199,7 +199,6 @@ def train(): # Dataloader batch_size = min(batch_size, len(dataset)) nw = min([os.cpu_count(), batch_size if batch_size > 1 else 0, 8]) # number of workers - print('Using %g dataloader workers' % nw) dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, num_workers=nw, @@ -224,11 +223,12 @@ def train(): model.arc = opt.arc # attach yolo architecture model.hyp = hyp # attach hyperparameters to model model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights - torch_utils.model_info(model, report='summary') # 'full' or 'summary' maps = np.zeros(nc) # mAP per class # torch.autograd.set_detect_anomaly(True) results = (0, 0, 0, 0, 0, 0, 0) # 'P', 'R', 'mAP', 'F1', 'val GIoU', 'val Objectness', 'val Classification' t0 = time.time() + torch_utils.model_info(model, report='summary') # 'full' or 'summary' + print('Using %g dataloader workers' % nw) print('Starting %s for %g epochs...' % ('prebias' if opt.prebias else 'training', epochs)) for epoch in range(start_epoch, epochs): # epoch ------------------------------------------------------------------ model.train() From d603ac8e694a3d7f1d8c777a47c5f049917e4b7e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 18:08:19 -0800 Subject: [PATCH 1732/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 528ede98..cf95a959 100755 --- a/models.py +++ b/models.py @@ -162,7 +162,7 @@ class YOLOLayer(nn.Module): if ONNX_EXPORT: bs = 1 # batch size else: - bs, ny, nx = p.shape[0], p.shape[-2], p.shape[-1] + bs, _, ny, nx = p.shape # bs, 255, 13, 13 if (self.nx, self.ny) != (nx, ny): create_grids(self, img_size, (nx, ny), p.device, p.dtype) From ca5da3dfe08244fc26712e14d3e4771c97ddf192 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 18:30:10 -0800 Subject: [PATCH 1733/2595] updates --- models.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/models.py b/models.py index cf95a959..8a3460da 100755 --- a/models.py +++ b/models.py @@ -167,9 +167,7 @@ class YOLOLayer(nn.Module): create_grids(self, img_size, (nx, ny), p.device, p.dtype) # p.view(bs, 255, 13, 13) -- > (bs, 3, 13, 13, 85) # (bs, anchors, grid, grid, classes + xywh) - # p = p.view(bs, self.na, self.nc + 5, self.ny, self.nx).permute(0, 1, 3, 4, 2).contiguous() # prediction - # https://discuss.pytorch.org/t/in-pytorch-0-4-is-it-recommended-to-use-reshape-than-view-when-it-is-possible/17034 - p = p.reshape(bs, self.na, self.nc + 5, self.ny, self.nx).permute(0, 1, 3, 4, 2) # prediction + p = p.view(bs, self.na, self.nc + 5, self.ny, self.nx).permute(0, 1, 3, 4, 2).contiguous() # prediction if self.training: return p From 35177c0e47f18cfaa6841266d15bd422a83331ca Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 18:30:36 -0800 Subject: [PATCH 1734/2595] updates --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 66ba387a..301fef52 100755 --- a/README.md +++ b/README.md @@ -74,12 +74,13 @@ HS**V** Intensity | +/- 50% ## Speed https://cloud.google.com/deep-learning-vm/ -**Machine type:** n1-standard-8 (8 vCPUs, 30 GB memory) +**Machine type:** [n1-standard-16](https://cloud.google.com/compute/docs/machine-types) (16 vCPUs, 60 GB memory) **CPU platform:** Intel Skylake **GPUs:** K80 ($0.20/hr), T4 ($0.35/hr), V100 ($0.83/hr) CUDA with [Nvidia Apex](https://github.com/NVIDIA/apex) FP16/32 -**HDD:** 100 GB SSD +**HDD:** 1 TB SSD **Dataset:** COCO train 2014 (117,263 images) -**Model:** `yolov3-spp.cfg` +**Model:** `yolov3-spp.cfg` +**Command:** `python3 train.py --img 416 --batch 32 --accum 2` GPUs | `batch_size` | images/sec | epoch time | epoch cost --- |---| --- | --- | --- @@ -87,7 +88,7 @@ K80 | 64 (32x2) | 11 | 175 min | $0.58 T4 | 64 (32x2) | 40 | 49 min | $0.29 T4 x2 | 64 (64x1) | 61 | 32 min | $0.36 V100 | 64 (32x2) | 122 | 16 min | $0.23 -V100 x2 | 64 (64x1) | 150 | 13 min | $0.36 +V100 x2 | 64 (64x1) | 178 | 11 min | $0.31 2080Ti | 64 (32x2) | 81 | 24 min | - 2080Ti x2 | 64 (64x1) | 140 | 14 min | - From 194b39618760acd4b669275c677280e7a986ef54 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 19:22:33 -0800 Subject: [PATCH 1735/2595] updates --- README.md | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 301fef52..959a5a61 100755 --- a/README.md +++ b/README.md @@ -82,15 +82,12 @@ https://cloud.google.com/deep-learning-vm/ **Model:** `yolov3-spp.cfg` **Command:** `python3 train.py --img 416 --batch 32 --accum 2` -GPUs | `batch_size` | images/sec | epoch time | epoch cost ---- |---| --- | --- | --- -K80 | 64 (32x2) | 11 | 175 min | $0.58 -T4 | 64 (32x2) | 40 | 49 min | $0.29 -T4 x2 | 64 (64x1) | 61 | 32 min | $0.36 -V100 | 64 (32x2) | 122 | 16 min | $0.23 -V100 x2 | 64 (64x1) | 178 | 11 min | $0.31 -2080Ti | 64 (32x2) | 81 | 24 min | - -2080Ti x2 | 64 (64x1) | 140 | 14 min | - +GPU |n| `--batch --accum` | img/s | epoch
time | epoch
cost +--- |--- |--- |--- |--- |--- +K80 |1| 32 x 2 | 11 | 175 min | $0.58 +T4 |1
2| 32 x 2
64 x 1 | 41
61 | 48 min
32 min | $0.28
$0.36 +V100 |1
2| 32 x 2
64 x 1 | 122
**178** | 16 min
**11 min** | **$0.23**
$0.31 +2080Ti |1
2| 32 x 2
64 x 1 | 81
140 | 24 min
14 min | -
- # Inference From 1bf717ef9cf325828bd95efba01dabbe90f3d7eb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 19:26:03 -0800 Subject: [PATCH 1736/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 959a5a61..e532d6b1 100755 --- a/README.md +++ b/README.md @@ -74,7 +74,7 @@ HS**V** Intensity | +/- 50% ## Speed https://cloud.google.com/deep-learning-vm/ -**Machine type:** [n1-standard-16](https://cloud.google.com/compute/docs/machine-types) (16 vCPUs, 60 GB memory) +**Machine type:** preemptible [n1-standard-16](https://cloud.google.com/compute/docs/machine-types) (16 vCPUs, 60 GB memory) **CPU platform:** Intel Skylake **GPUs:** K80 ($0.20/hr), T4 ($0.35/hr), V100 ($0.83/hr) CUDA with [Nvidia Apex](https://github.com/NVIDIA/apex) FP16/32 **HDD:** 1 TB SSD From 37fa9afaff4be124aa573f5d30d316ea783a5aab Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 19:58:10 -0800 Subject: [PATCH 1737/2595] updates --- utils/torch_utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index ecbcd306..d984dfca 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -101,6 +101,7 @@ def load_classifier(name='resnet101', n=2): from collections import defaultdict from torch.optim import Optimizer + class Lookahead(Optimizer): def __init__(self, optimizer, k=5, alpha=0.5): self.optimizer = optimizer @@ -165,4 +166,4 @@ class Lookahead(Optimizer): def add_param_group(self, param_group): param_group["counter"] = 0 - self.optimizer.add_param_group(param_group) \ No newline at end of file + self.optimizer.add_param_group(param_group) From 2300cb964a343458d0727b81aea5500f2b03a899 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 19:58:42 -0800 Subject: [PATCH 1738/2595] updates --- utils/datasets.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index e5daa630..cf43d655 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -578,10 +578,10 @@ def load_mosaic(self, index): # Augment # img4 = img4[s // 2: int(s * 1.5), s // 2:int(s * 1.5)] # center crop (WARNING, requires box pruning) img4, labels4 = random_affine(img4, labels4, - degrees=self.hyp['degrees'], - translate=self.hyp['translate'], - scale=self.hyp['scale'], - shear=self.hyp['shear'], + degrees=self.hyp['degrees'] * 0, + translate=self.hyp['translate'] * 0, + scale=self.hyp['scale'] * 0, + shear=self.hyp['shear'] * 0, border=-s // 2) # border to remove return img4, labels4 From 239199647456db6b5bcf6b40530161341b18ad88 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Dec 2019 20:15:25 -0800 Subject: [PATCH 1739/2595] updates --- utils/utils.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index bfba712c..49791a0d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -334,10 +334,11 @@ def compute_loss(p, targets, model): # predictions, targets, model tcls, tbox, indices, anchor_vec = build_targets(model, targets) h = model.hyp # hyperparameters arc = model.arc # # (default, uCE, uBCE) detection architectures + red = 'mean' # Loss reduction (sum or mean) # Define criteria - BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']])) - BCEobj = nn.BCEWithLogitsLoss(pos_weight=ft([h['obj_pw']])) + BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']]), reduction=red) + BCEobj = nn.BCEWithLogitsLoss(pos_weight=ft([h['obj_pw']]), reduction=red) BCE = nn.BCEWithLogitsLoss() CE = nn.CrossEntropyLoss() # weight=model.class_weights @@ -346,13 +347,16 @@ def compute_loss(p, targets, model): # predictions, targets, model BCEcls, BCEobj, BCE, CE = FocalLoss(BCEcls, g), FocalLoss(BCEobj, g), FocalLoss(BCE, g), FocalLoss(CE, g) # Compute losses + np, ng = 0, 0 # number grid points, targets for i, pi in enumerate(p): # layer index, layer predictions b, a, gj, gi = indices[i] # image, anchor, gridy, gridx tobj = torch.zeros_like(pi[..., 0]) # target obj + np += tobj.numel() # Compute losses nb = len(b) if nb: # number of targets + ng += nb ps = pi[b, a, gj, gi] # prediction subset corresponding to targets tobj[b, a, gj, gi] = 1.0 # obj # ps[:, 2:4] = torch.sigmoid(ps[:, 2:4]) # wh power loss (uncomment) @@ -360,8 +364,8 @@ def compute_loss(p, targets, model): # predictions, targets, model # GIoU pxy = torch.sigmoid(ps[:, 0:2]) # pxy = pxy * s - (s - 1) / 2, s = 1.5 (scale_xy) pbox = torch.cat((pxy, torch.exp(ps[:, 2:4]).clamp(max=1E3) * anchor_vec[i]), 1) # predicted box - giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation - lbox += (1.0 - giou).mean() # giou loss + giou = 1.0 - bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation + lbox += giou.sum() if red == 'sum' else giou.mean() # giou loss if 'default' in arc and model.nc > 1: # cls loss (only if multiple classes) t = torch.zeros_like(ps[:, 5:]) # targets @@ -396,6 +400,11 @@ def compute_loss(p, targets, model): # predictions, targets, model lbox *= h['giou'] lobj *= h['obj'] lcls *= h['cls'] + if red == 'sum': + lbox *= 3 / ng + lobj *= 3 / np + lcls *= 3 / ng / model.nc + loss = lbox + lobj + lcls return loss, torch.cat((lbox, lobj, lcls, loss)).detach() From 07c1fafba832ef83fca70576e04cef48686f72a1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Dec 2019 13:17:30 -0800 Subject: [PATCH 1740/2595] updates --- models.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/models.py b/models.py index 8a3460da..066fe0ca 100755 --- a/models.py +++ b/models.py @@ -22,12 +22,12 @@ def create_modules(module_defs, img_size, arc): if mdef['type'] == 'convolutional': bn = int(mdef['batch_normalize']) filters = int(mdef['filters']) - kernel_size = int(mdef['size']) + size = int(mdef['size']) stride = int(mdef['stride']) if 'stride' in mdef else (int(mdef['stride_y']), int(mdef['stride_x'])) - pad = (kernel_size - 1) // 2 if int(mdef['pad']) else 0 + pad = (size - 1) // 2 if int(mdef['pad']) else 0 modules.add_module('Conv2d', nn.Conv2d(in_channels=output_filters[-1], out_channels=filters, - kernel_size=kernel_size, + kernel_size=size, stride=stride, padding=pad, bias=not bn)) @@ -40,10 +40,10 @@ def create_modules(module_defs, img_size, arc): modules.add_module('activation', Swish()) elif mdef['type'] == 'maxpool': - kernel_size = int(mdef['size']) + size = int(mdef['size']) stride = int(mdef['stride']) - maxpool = nn.MaxPool2d(kernel_size=kernel_size, stride=stride, padding=int((kernel_size - 1) // 2)) - if kernel_size == 2 and stride == 1: # yolov3-tiny + maxpool = nn.MaxPool2d(kernel_size=size, stride=stride, padding=int((size - 1) // 2)) + if size == 2 and stride == 1: # yolov3-tiny modules.add_module('ZeroPad2d', nn.ZeroPad2d((0, 1, 0, 1))) modules.add_module('MaxPool2d', maxpool) else: From 3bfbab7afd5850b4f21b73dd3184374f47eb1d98 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Dec 2019 13:25:34 -0800 Subject: [PATCH 1741/2595] updates --- models.py | 1 + 1 file changed, 1 insertion(+) diff --git a/models.py b/models.py index 066fe0ca..bff616e0 100755 --- a/models.py +++ b/models.py @@ -30,6 +30,7 @@ def create_modules(module_defs, img_size, arc): kernel_size=size, stride=stride, padding=pad, + groups=int(mdef['groups']) if 'groups' in mdef else 1, bias=not bn)) if bn: modules.add_module('BatchNorm2d', nn.BatchNorm2d(filters, momentum=0.1)) From a6980a0f1491f9c1019f5095c6551d3f083f71f9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Dec 2019 13:37:58 -0800 Subject: [PATCH 1742/2595] updates --- utils/parse_config.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/utils/parse_config.py b/utils/parse_config.py index 23581a51..1c2dbbcd 100644 --- a/utils/parse_config.py +++ b/utils/parse_config.py @@ -23,6 +23,12 @@ def parse_model_cfg(path): else: mdefs[-1][key] = val.strip() + # Print cfg fields + # f = [] + # for x in mdefs[1:]: + # [f.append(k) for k in x if k not in f] + # print(len(f), f) + return mdefs From 8c5ebdf05546857a91870ac69f70d44c92b614a5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Dec 2019 13:39:35 -0800 Subject: [PATCH 1743/2595] updates --- cfg/csresnext50-panet-spp.cfg | 1018 +++++++++++++++++++++++++++++++++ 1 file changed, 1018 insertions(+) create mode 100644 cfg/csresnext50-panet-spp.cfg diff --git a/cfg/csresnext50-panet-spp.cfg b/cfg/csresnext50-panet-spp.cfg new file mode 100644 index 00000000..ece11221 --- /dev/null +++ b/cfg/csresnext50-panet-spp.cfg @@ -0,0 +1,1018 @@ +[net] +# Testing +#batch=1 +#subdivisions=1 +# Training +batch=64 +subdivisions=16 +width=416 +height=416 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 500500 +policy=steps +steps=400000,450000 +scales=.1,.1 + +#19:104x104 38:52x52 65:26x26 80:13x13 for 416 + +[convolutional] +batch_normalize=1 +filters=64 +size=7 +stride=2 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -2 + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +# 1-1 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +# 1-2 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +# 1-3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +# 1-T + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1,-16 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +groups=32 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=linear + +[route] +layers = -2 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=linear + +# 2-1 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +# 2-2 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +# 2-3 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +# 2-T + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1,-16 + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +groups=32 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[route] +layers = -2 + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +# 3-1 + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +# 3-2 + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +# 3-3 + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +# 3-4 + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +# 3-5 + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +# 3-T + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1,-24 + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +groups=32 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -2 + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=leaky + +# 4-1 + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +# 4-2 + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +groups=32 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=linear + +[shortcut] +from=-4 +activation=leaky + +# 4-T + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1,-12 + +[convolutional] +batch_normalize=1 +filters=2048 +size=1 +stride=1 +pad=1 +activation=leaky + +########################## + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +### SPP ### +[maxpool] +stride=1 +size=5 + +[route] +layers=-2 + +[maxpool] +stride=1 +size=9 + +[route] +layers=-4 + +[maxpool] +stride=1 +size=13 + +[route] +layers=-1,-3,-5,-6 +### End SPP ### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = 65 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1, -3 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = 38 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1, -3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +########################## + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 0,1,2 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +size=3 +stride=2 +pad=1 +filters=256 +activation=leaky + +[route] +layers = -1, -16 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 3,4,5 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +size=3 +stride=2 +pad=1 +filters=512 +activation=leaky + +[route] +layers = -1, -37 + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 6,7,8 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 From f430ddb103ae55e616292b7e157f97d2277cc922 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Dec 2019 13:49:50 -0800 Subject: [PATCH 1744/2595] updates --- utils/parse_config.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/utils/parse_config.py b/utils/parse_config.py index 1c2dbbcd..962aa07b 100644 --- a/utils/parse_config.py +++ b/utils/parse_config.py @@ -23,11 +23,18 @@ def parse_model_cfg(path): else: mdefs[-1][key] = val.strip() - # Print cfg fields - # f = [] - # for x in mdefs[1:]: - # [f.append(k) for k in x if k not in f] + # Check all fields are supported + supported = ['type', 'batch_normalize', 'filters', 'size', 'stride', 'pad', 'activation', 'layers', 'groups', + 'from', 'mask', 'anchors', 'classes', 'num', 'jitter', 'ignore_thresh', 'truth_thresh', 'random', + 'stride_x', 'stride_y'] + + f = [] + for x in mdefs[1:]: + [f.append(k) for k in x if k not in f] # print(len(f), f) + for x in f: + assert x in supported, "Unsupported field '%s' in %s. See https://github.com/ultralytics/yolov3/issues/631" % \ + (x, path) return mdefs From 86588f15796a47faa2deb572da0bc62d15fe6c9c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Dec 2019 14:20:36 -0800 Subject: [PATCH 1745/2595] updates --- cfg/csresnext50-panet-spp.cfg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cfg/csresnext50-panet-spp.cfg b/cfg/csresnext50-panet-spp.cfg index ece11221..4cff3c37 100644 --- a/cfg/csresnext50-panet-spp.cfg +++ b/cfg/csresnext50-panet-spp.cfg @@ -76,7 +76,7 @@ activation=leaky [convolutional] batch_normalize=1 -filters=128 +filters=64 size=1 stride=1 pad=1 @@ -107,7 +107,7 @@ activation=leaky [convolutional] batch_normalize=1 -filters=128 +filters=64 size=1 stride=1 pad=1 @@ -138,7 +138,7 @@ activation=leaky [convolutional] batch_normalize=1 -filters=128 +filters=64 size=1 stride=1 pad=1 From 2201cb40231b5f6c2847b20223b04b241a7a74ec Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Dec 2019 15:54:46 -0800 Subject: [PATCH 1746/2595] updates --- utils/parse_config.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/utils/parse_config.py b/utils/parse_config.py index 962aa07b..36f943bf 100644 --- a/utils/parse_config.py +++ b/utils/parse_config.py @@ -28,13 +28,11 @@ def parse_model_cfg(path): 'from', 'mask', 'anchors', 'classes', 'num', 'jitter', 'ignore_thresh', 'truth_thresh', 'random', 'stride_x', 'stride_y'] - f = [] + f = [] # fields for x in mdefs[1:]: [f.append(k) for k in x if k not in f] - # print(len(f), f) - for x in f: - assert x in supported, "Unsupported field '%s' in %s. See https://github.com/ultralytics/yolov3/issues/631" % \ - (x, path) + u = [x for x in f if x not in supported] # unsupported fields + assert not any(u), "Unsupported fields %s in %s. See https://github.com/ultralytics/yolov3/issues/631" % (u, path) return mdefs From bb1a87d77f2c366b30b72202686276d1c4c522de Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 10 Dec 2019 18:04:24 -0800 Subject: [PATCH 1747/2595] updates --- utils/parse_config.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/utils/parse_config.py b/utils/parse_config.py index 36f943bf..8ecf6441 100644 --- a/utils/parse_config.py +++ b/utils/parse_config.py @@ -1,10 +1,17 @@ +import os + import numpy as np def parse_model_cfg(path): - # Parses the yolo-v3 layer configuration file and returns module definitions - file = open(path, 'r') - lines = file.read().split('\n') + # Parse the yolo *.cfg file and return module definitions path may be 'cfg/yolov3.cfg', 'yolov3.cfg', or 'yolov3' + if not path.endswith('.cfg'): # add .cfg suffix if omitted + path += '.cfg' + if not os.path.exists(path) and not path.startswith('cfg' + os.sep): # add cfg/ prefix if omitted + path = 'cfg' + os.sep + path + + with open(path, 'r') as f: + lines = f.read().split('\n') lines = [x for x in lines if x and not x.startswith('#')] lines = [x.rstrip().lstrip() for x in lines] # get rid of fringe whitespaces mdefs = [] # module definitions From 9f24c12c14c137873df4b31b9d5f6b5856d40604 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 10 Dec 2019 18:25:14 -0800 Subject: [PATCH 1748/2595] updates --- utils/parse_config.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/utils/parse_config.py b/utils/parse_config.py index 8ecf6441..5d3c20fb 100644 --- a/utils/parse_config.py +++ b/utils/parse_config.py @@ -7,7 +7,7 @@ def parse_model_cfg(path): # Parse the yolo *.cfg file and return module definitions path may be 'cfg/yolov3.cfg', 'yolov3.cfg', or 'yolov3' if not path.endswith('.cfg'): # add .cfg suffix if omitted path += '.cfg' - if not os.path.exists(path) and not path.startswith('cfg' + os.sep): # add cfg/ prefix if omitted + if not os.path.exists(path) and os.path.exists('cfg' + os.sep + path): # add cfg/ prefix if omitted path = 'cfg' + os.sep + path with open(path, 'r') as f: @@ -46,10 +46,13 @@ def parse_model_cfg(path): def parse_data_cfg(path): # Parses the data configuration file - options = dict() - with open(path, 'r') as fp: - lines = fp.readlines() + if not os.path.exists(path) and os.path.exists('data' + os.sep + path): # add data/ prefix if omitted + path = 'data' + os.sep + path + with open(path, 'r') as f: + lines = f.readlines() + + options = dict() for line in lines: line = line.strip() if line == '' or line.startswith('#'): From a6f87a28e7595e71752583fb41340f9d1105d75f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 10 Dec 2019 20:02:58 -0800 Subject: [PATCH 1749/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 49791a0d..ab3795d5 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -970,7 +970,7 @@ def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() y = results[i, x] if i in [0, 1, 2, 5, 6, 7]: y[y == 0] = np.nan # dont show zero loss values - ax[i].plot(x, y, marker='.', label=f.replace('.txt', '')) + ax[i].plot(x, y, marker='.', label=Path(f).stem) ax[i].set_title(s[i]) if i in [5, 6, 7]: # share train and val loss y axes ax[i].get_shared_y_axes().join(ax[i], ax[i - 5]) From 5f912d3add4b4cc5e4165b3814580c4e497bdd04 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Dec 2019 11:53:23 -0800 Subject: [PATCH 1750/2595] updates --- README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index e532d6b1..5a0dae9e 100755 --- a/README.md +++ b/README.md @@ -136,12 +136,13 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' # mAP -- `test.py --weights weights/yolov3.weights` tests official YOLOv3 weights. -- `test.py --weights weights/last.pt` tests latest checkpoint. -- mAPs on COCO2014 using pycocotools. -- mAP@0.5 run at `--nms-thres 0.5`, mAP@0.5...0.95 run at `--nms-thres 0.7`. -- YOLOv3-SPP ultralytics is `ultralytics68.pt` with `yolov3-spp.cfg`. -- Darknet results published in https://arxiv.org/abs/1804.02767. +```bash +python3 test.py --weights ... --cfg ... +``` + +- mAP@0.5 run at `--nms-thres 0.5`, mAP@0.5...0.95 run at `--nms-thres 0.7` +- YOLOv3-SPP ultralytics is `ultralytics68.pt` with `yolov3-spp.cfg` +- Darknet results: https://arxiv.org/abs/1804.02767 |Size |COCO mAP
@0.5...0.95 |COCO mAP
@0.5 --- | --- | --- | --- From 1a22bf921137bd4c0a8028a4f54e38f42f0db851 Mon Sep 17 00:00:00 2001 From: Thomas Havlik Date: Wed, 11 Dec 2019 14:17:53 -0600 Subject: [PATCH 1751/2595] added coco/ to .dockerignore (#701) --- .dockerignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..a4e26c8c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +# prevent data from being added to build context +coco/ From 25a11972d6414e7f5641368c432bdf70e841a862 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Dec 2019 12:19:47 -0800 Subject: [PATCH 1752/2595] Update .dockerignore --- .dockerignore | 217 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 215 insertions(+), 2 deletions(-) diff --git a/.dockerignore b/.dockerignore index a4e26c8c..ce28aaba 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,2 +1,215 @@ -# prevent data from being added to build context -coco/ +# Repo-specific DockerIgnore ------------------------------------------------------------------------------------------- +.git +.cache +.idea +runs +output +coco + +data/samples/* +!data/samples/zidane.jpg +!data/samples/bus.jpg +**/results*.txt + +# Neural Network weights ----------------------------------------------------------------------------------------------- +**/*.weights +**/*.pt +**/*.onnx +**/*.mlmodel +**/darknet53.conv.74 +**/yolov3-tiny.conv.15 + + +# Below Copied From .gitignore ----------------------------------------------------------------------------------------- +# Below Copied From .gitignore ----------------------------------------------------------------------------------------- + + +# GitHub Python GitIgnore ---------------------------------------------------------------------------------------------- +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +env/ +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# dotenv +.env + +# virtualenv +.venv +venv/ +ENV/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ + + +# https://github.com/github/gitignore/blob/master/Global/macOS.gitignore ----------------------------------------------- + +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon +Icon? + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + + +# https://github.com/github/gitignore/blob/master/Global/JetBrains.gitignore +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 + +# User-specific stuff: +.idea/* +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/dictionaries +.html # Bokeh Plots +.pg # TensorFlow Frozen Graphs +.avi # videos + +# Sensitive or high-churn files: +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml + +# Gradle: +.idea/**/gradle.xml +.idea/**/libraries + +# CMake +cmake-build-debug/ +cmake-build-release/ + +# Mongo Explorer plugin: +.idea/**/mongoSettings.xml + +## File-based project format: +*.iws + +## Plugin-specific files: + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties From 96a94b8cb9d44a52ba75bec537fb6332109d7516 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Dec 2019 13:21:39 -0800 Subject: [PATCH 1753/2595] updates --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 5a0dae9e..35921881 100755 --- a/README.md +++ b/README.md @@ -254,6 +254,15 @@ Using CUDA device0 _CudaDeviceProperties(name='GeForce RTX 2080 Ti', total_memor Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.707 ``` +# Reproduce Our Results + +This command reproduces our mAP results above training `yolov3-spp.cfg` from scratch. + +```bash +$ python3 train.py --weights '' --cfg yolov3-spp.cfg --epochs 273 --batch 16 --accum 4 --multi --pre +``` + + # Citation [![DOI](https://zenodo.org/badge/146165888.svg)](https://zenodo.org/badge/latestdoi/146165888) From 2ca4517813ce8c5f413a5acbab340ba73af5f4f5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Dec 2019 13:25:35 -0800 Subject: [PATCH 1754/2595] updates --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 35921881..7be2d9ad 100755 --- a/README.md +++ b/README.md @@ -256,12 +256,11 @@ Using CUDA device0 _CudaDeviceProperties(name='GeForce RTX 2080 Ti', total_memor # Reproduce Our Results -This command reproduces our mAP results above training `yolov3-spp.cfg` from scratch. - +This command reproduces our mAP results above by training `yolov3-spp.cfg` from scratch. Training takes about one week on a 2080Ti. ```bash $ python3 train.py --weights '' --cfg yolov3-spp.cfg --epochs 273 --batch 16 --accum 4 --multi --pre ``` - + # Citation From db0e5cba6fd9582a9b518f9b296100cbdec6a10a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Dec 2019 13:30:54 -0800 Subject: [PATCH 1755/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7be2d9ad..bf0bb287 100755 --- a/README.md +++ b/README.md @@ -256,7 +256,7 @@ Using CUDA device0 _CudaDeviceProperties(name='GeForce RTX 2080 Ti', total_memor # Reproduce Our Results -This command reproduces our mAP results above by training `yolov3-spp.cfg` from scratch. Training takes about one week on a 2080Ti. +This command trains `yolov3-spp.cfg` from scratch to our mAP above. Training takes about one week on a 2080Ti. ```bash $ python3 train.py --weights '' --cfg yolov3-spp.cfg --epochs 273 --batch 16 --accum 4 --multi --pre ``` From 8d8daff390e846f2559e4eb6e7b2ae0921115a58 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Dec 2019 13:40:11 -0800 Subject: [PATCH 1756/2595] updates --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index bf0bb287..c8611590 100755 --- a/README.md +++ b/README.md @@ -262,6 +262,13 @@ $ python3 train.py --weights '' --cfg yolov3-spp.cfg --epochs 273 --batch 16 --a ``` +# Reproduce Our Environment + +To access an up-to-date working environment (with all dependencies including CUDA/CUDNN, Python and PyTorch preinstalled), consider a: + +- **GCP** Deep Learning VM with $300 free credit offer: See our [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) +- **Google Colab Notebook** with 12 hours of free GPU time: [Google Colab Notebook](https://colab.research.google.com/drive/1G8T-VFxQkjDe4idzN8F-hbIBqkkkQnxw) +- **Docker Image** from https://hub.docker.com/r/ultralytics/yolov3. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) # Citation [![DOI](https://zenodo.org/badge/146165888.svg)](https://zenodo.org/badge/latestdoi/146165888) From b87bfa32c36f582d21ac3da7b21d9d9178d339ba Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 12 Dec 2019 13:56:56 -0800 Subject: [PATCH 1757/2595] updates --- detect.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/detect.py b/detect.py index 2593406c..6da45c3b 100644 --- a/detect.py +++ b/detect.py @@ -125,6 +125,8 @@ def detect(save_txt=False, save_img=False): # Stream results if view_img: cv2.imshow(p, im0) + if cv2.waitKey(1) == ord('q'): # q to quit + raise StopIteration # Save results (image with detections) if save_img: From 3f06fe6b125aaa7d9e53a6b8c5806b47f82eadcd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Dec 2019 11:05:05 -0800 Subject: [PATCH 1758/2595] updates --- test.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test.py b/test.py index f1145f30..a7001312 100644 --- a/test.py +++ b/test.py @@ -24,6 +24,10 @@ def test(cfg, device = torch_utils.select_device(opt.device, batch_size=batch_size) verbose = True + # Remove previous + for f in glob.glob('test_batch*.jpg'): + os.remove(f) + # Initialize model model = Darknet(cfg, img_size).to(device) @@ -36,7 +40,7 @@ def test(cfg, if torch.cuda.device_count() > 1: model = nn.DataParallel(model) - else: + else: # called by train.py device = next(model.parameters()).device # get model device verbose = False From 1bb738c83f363fdb654a2a5892b5675e35487a4a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Dec 2019 11:49:29 -0800 Subject: [PATCH 1759/2595] updates --- train.py | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/train.py b/train.py index ef991e2e..4fece807 100644 --- a/train.py +++ b/train.py @@ -321,18 +321,16 @@ def train(): final_epoch = epoch + 1 == epochs if opt.prebias: print_model_biases(model) - else: - # Calculate mAP - if not opt.notest or final_epoch: - with torch.no_grad(): - results, maps = test.test(cfg, - data, - batch_size=batch_size, - img_size=opt.img_size, - model=model, - conf_thres=0.001 if final_epoch and epoch > 0 else 0.1, # 0.1 for speed - save_json=final_epoch and epoch > 0 and 'coco.data' in data, - dataloader=testloader) + elif not opt.notest or final_epoch: # Calculate mAP + with torch.no_grad(): + results, maps = test.test(cfg, + data, + batch_size=batch_size, + img_size=opt.img_size, + model=model, + conf_thres=0.001 if final_epoch else 0.1, # 0.1 for speed + save_json=final_epoch and 'coco.data' in data and model.nc == 80, + dataloader=testloader) # Write epoch results with open(results_file, 'a') as f: From 074a9250d8d53b75b7203b31cd603fd96f4df1fe Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Dec 2019 12:27:52 -0800 Subject: [PATCH 1760/2595] updates --- utils/datasets.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index cf43d655..2da23e64 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -320,7 +320,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing extract_bounding_boxes = False create_datasubset = False pbar = tqdm(self.label_files, desc='Caching labels') - nm, nf, ne, ns = 0, 0, 0, 0 # number missing, number found, number empty, number datasubset + nm, nf, ne, ns, nd = 0, 0, 0, 0, 0 # number missing, found, empty, datasubset, duplicate for i, file in enumerate(pbar): try: with open(file, 'r') as f: @@ -333,6 +333,9 @@ class LoadImagesAndLabels(Dataset): # for training/testing assert l.shape[1] == 5, '> 5 label columns: %s' % file assert (l >= 0).all(), 'negative labels: %s' % file assert (l[:, 1:] <= 1).all(), 'non-normalized or out of bounds coordinate labels: %s' % file + if np.unique(l, axis=0).shape[0] < l.shape[0]: # duplicate rows + nd += 1 # print('WARNING: duplicate rows in %s' % self.label_files[i]) # duplicate rows + self.labels[i] = l nf += 1 # file found @@ -370,7 +373,8 @@ class LoadImagesAndLabels(Dataset): # for training/testing ne += 1 # print('empty labels for image %s' % self.img_files[i]) # file empty # os.system("rm '%s' '%s'" % (self.img_files[i], self.label_files[i])) # remove - pbar.desc = 'Caching labels (%g found, %g missing, %g empty for %g images)' % (nf, nm, ne, n) + pbar.desc = 'Caching labels (%g found, %g missing, %g empty, %g duplicate, for %g images)' % ( + nf, nm, ne, nd, n) assert nf > 0, 'No labels found. Recommend correcting image and label paths.' # Cache images into memory for faster training (WARNING: Large datasets may exceed system RAM) From 9c36d5efcd05453ddcbf66045133e7ddd0fcbdfc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Dec 2019 14:03:17 -0800 Subject: [PATCH 1761/2595] updates --- utils/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index ab3795d5..12874262 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -89,7 +89,8 @@ def coco80_to_coco91_class(): # converts 80-index (val2014) to 91-index (paper) # https://tech.amikelive.com/node-718/what-object-categories-labels-are-in-coco-dataset/ # a = np.loadtxt('data/coco.names', dtype='str', delimiter='\n') # b = np.loadtxt('data/coco_paper.names', dtype='str', delimiter='\n') - # x = [list(a[i] == b).index(True) + 1 for i in range(80)] # darknet to coco + # x1 = [list(a[i] == b).index(True) + 1 for i in range(80)] # darknet to coco + # x2 = [list(b[i] == a).index(True) if any(b[i] == a) else None for i in range(91)] # coco to darknet x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 67, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 90] From dbbe406ac628df4fce391c3d9e021b485347453f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Dec 2019 15:47:48 -0800 Subject: [PATCH 1762/2595] updates --- .gitignore | 2 - data/5k.txt | 5000 ------------------------------------------- data/coco_16img.txt | 32 +- data/coco_1cls.txt | 10 +- data/coco_1img.txt | 2 +- data/coco_64img.txt | 128 +- 6 files changed, 86 insertions(+), 5088 deletions(-) delete mode 100644 data/5k.txt diff --git a/.gitignore b/.gitignore index 9ff1a375..2ea8d615 100755 --- a/.gitignore +++ b/.gitignore @@ -29,8 +29,6 @@ data/* !data/coco_*.txt !data/coco_*.txt !data/trainvalno5k.shapes -!data/5k.shapes -!data/5k.txt !data/*.sh pycocotools/* diff --git a/data/5k.txt b/data/5k.txt deleted file mode 100644 index ad8c5051..00000000 --- a/data/5k.txt +++ /dev/null @@ -1,5000 +0,0 @@ -../coco/images/val2014/COCO_val2014_000000000164.jpg -../coco/images/val2014/COCO_val2014_000000000192.jpg -../coco/images/val2014/COCO_val2014_000000000283.jpg -../coco/images/val2014/COCO_val2014_000000000397.jpg -../coco/images/val2014/COCO_val2014_000000000589.jpg -../coco/images/val2014/COCO_val2014_000000000599.jpg -../coco/images/val2014/COCO_val2014_000000000711.jpg -../coco/images/val2014/COCO_val2014_000000000757.jpg -../coco/images/val2014/COCO_val2014_000000000764.jpg -../coco/images/val2014/COCO_val2014_000000000872.jpg -../coco/images/val2014/COCO_val2014_000000001063.jpg -../coco/images/val2014/COCO_val2014_000000001554.jpg -../coco/images/val2014/COCO_val2014_000000001667.jpg -../coco/images/val2014/COCO_val2014_000000001700.jpg -../coco/images/val2014/COCO_val2014_000000001869.jpg -../coco/images/val2014/COCO_val2014_000000002124.jpg -../coco/images/val2014/COCO_val2014_000000002261.jpg -../coco/images/val2014/COCO_val2014_000000002621.jpg -../coco/images/val2014/COCO_val2014_000000002684.jpg -../coco/images/val2014/COCO_val2014_000000002764.jpg -../coco/images/val2014/COCO_val2014_000000002894.jpg -../coco/images/val2014/COCO_val2014_000000002972.jpg -../coco/images/val2014/COCO_val2014_000000003035.jpg -../coco/images/val2014/COCO_val2014_000000003084.jpg -../coco/images/val2014/COCO_val2014_000000003103.jpg -../coco/images/val2014/COCO_val2014_000000003109.jpg -../coco/images/val2014/COCO_val2014_000000003134.jpg -../coco/images/val2014/COCO_val2014_000000003209.jpg -../coco/images/val2014/COCO_val2014_000000003244.jpg -../coco/images/val2014/COCO_val2014_000000003326.jpg -../coco/images/val2014/COCO_val2014_000000003337.jpg -../coco/images/val2014/COCO_val2014_000000003661.jpg -../coco/images/val2014/COCO_val2014_000000003711.jpg -../coco/images/val2014/COCO_val2014_000000003779.jpg -../coco/images/val2014/COCO_val2014_000000003865.jpg -../coco/images/val2014/COCO_val2014_000000004079.jpg -../coco/images/val2014/COCO_val2014_000000004092.jpg -../coco/images/val2014/COCO_val2014_000000004283.jpg -../coco/images/val2014/COCO_val2014_000000004296.jpg -../coco/images/val2014/COCO_val2014_000000004392.jpg -../coco/images/val2014/COCO_val2014_000000004742.jpg -../coco/images/val2014/COCO_val2014_000000004754.jpg -../coco/images/val2014/COCO_val2014_000000004764.jpg -../coco/images/val2014/COCO_val2014_000000005038.jpg -../coco/images/val2014/COCO_val2014_000000005060.jpg -../coco/images/val2014/COCO_val2014_000000005124.jpg -../coco/images/val2014/COCO_val2014_000000005178.jpg -../coco/images/val2014/COCO_val2014_000000005205.jpg -../coco/images/val2014/COCO_val2014_000000005443.jpg -../coco/images/val2014/COCO_val2014_000000005652.jpg -../coco/images/val2014/COCO_val2014_000000005723.jpg -../coco/images/val2014/COCO_val2014_000000005804.jpg -../coco/images/val2014/COCO_val2014_000000006074.jpg -../coco/images/val2014/COCO_val2014_000000006091.jpg -../coco/images/val2014/COCO_val2014_000000006153.jpg -../coco/images/val2014/COCO_val2014_000000006213.jpg -../coco/images/val2014/COCO_val2014_000000006497.jpg -../coco/images/val2014/COCO_val2014_000000006789.jpg -../coco/images/val2014/COCO_val2014_000000006847.jpg -../coco/images/val2014/COCO_val2014_000000007241.jpg -../coco/images/val2014/COCO_val2014_000000007256.jpg -../coco/images/val2014/COCO_val2014_000000007281.jpg -../coco/images/val2014/COCO_val2014_000000007795.jpg -../coco/images/val2014/COCO_val2014_000000007867.jpg -../coco/images/val2014/COCO_val2014_000000007873.jpg -../coco/images/val2014/COCO_val2014_000000007899.jpg -../coco/images/val2014/COCO_val2014_000000008010.jpg -../coco/images/val2014/COCO_val2014_000000008179.jpg -../coco/images/val2014/COCO_val2014_000000008190.jpg -../coco/images/val2014/COCO_val2014_000000008204.jpg -../coco/images/val2014/COCO_val2014_000000008350.jpg -../coco/images/val2014/COCO_val2014_000000008493.jpg -../coco/images/val2014/COCO_val2014_000000008853.jpg -../coco/images/val2014/COCO_val2014_000000009105.jpg -../coco/images/val2014/COCO_val2014_000000009156.jpg -../coco/images/val2014/COCO_val2014_000000009217.jpg -../coco/images/val2014/COCO_val2014_000000009270.jpg -../coco/images/val2014/COCO_val2014_000000009286.jpg -../coco/images/val2014/COCO_val2014_000000009548.jpg -../coco/images/val2014/COCO_val2014_000000009553.jpg -../coco/images/val2014/COCO_val2014_000000009727.jpg -../coco/images/val2014/COCO_val2014_000000009908.jpg -../coco/images/val2014/COCO_val2014_000000010114.jpg -../coco/images/val2014/COCO_val2014_000000010249.jpg -../coco/images/val2014/COCO_val2014_000000010395.jpg -../coco/images/val2014/COCO_val2014_000000010400.jpg -../coco/images/val2014/COCO_val2014_000000010463.jpg -../coco/images/val2014/COCO_val2014_000000010613.jpg -../coco/images/val2014/COCO_val2014_000000010764.jpg -../coco/images/val2014/COCO_val2014_000000010779.jpg -../coco/images/val2014/COCO_val2014_000000010928.jpg -../coco/images/val2014/COCO_val2014_000000011099.jpg -../coco/images/val2014/COCO_val2014_000000011181.jpg -../coco/images/val2014/COCO_val2014_000000011184.jpg -../coco/images/val2014/COCO_val2014_000000011197.jpg -../coco/images/val2014/COCO_val2014_000000011320.jpg -../coco/images/val2014/COCO_val2014_000000011721.jpg -../coco/images/val2014/COCO_val2014_000000011813.jpg -../coco/images/val2014/COCO_val2014_000000012014.jpg -../coco/images/val2014/COCO_val2014_000000012047.jpg -../coco/images/val2014/COCO_val2014_000000012085.jpg -../coco/images/val2014/COCO_val2014_000000012115.jpg -../coco/images/val2014/COCO_val2014_000000012166.jpg -../coco/images/val2014/COCO_val2014_000000012230.jpg -../coco/images/val2014/COCO_val2014_000000012370.jpg -../coco/images/val2014/COCO_val2014_000000012375.jpg -../coco/images/val2014/COCO_val2014_000000012448.jpg -../coco/images/val2014/COCO_val2014_000000012543.jpg -../coco/images/val2014/COCO_val2014_000000012744.jpg -../coco/images/val2014/COCO_val2014_000000012897.jpg -../coco/images/val2014/COCO_val2014_000000012966.jpg -../coco/images/val2014/COCO_val2014_000000012993.jpg -../coco/images/val2014/COCO_val2014_000000013004.jpg -../coco/images/val2014/COCO_val2014_000000013333.jpg -../coco/images/val2014/COCO_val2014_000000013357.jpg -../coco/images/val2014/COCO_val2014_000000013774.jpg -../coco/images/val2014/COCO_val2014_000000014029.jpg -../coco/images/val2014/COCO_val2014_000000014056.jpg -../coco/images/val2014/COCO_val2014_000000014108.jpg -../coco/images/val2014/COCO_val2014_000000014135.jpg -../coco/images/val2014/COCO_val2014_000000014226.jpg -../coco/images/val2014/COCO_val2014_000000014306.jpg -../coco/images/val2014/COCO_val2014_000000014591.jpg -../coco/images/val2014/COCO_val2014_000000014629.jpg -../coco/images/val2014/COCO_val2014_000000014756.jpg -../coco/images/val2014/COCO_val2014_000000014874.jpg -../coco/images/val2014/COCO_val2014_000000014990.jpg -../coco/images/val2014/COCO_val2014_000000015386.jpg -../coco/images/val2014/COCO_val2014_000000015559.jpg -../coco/images/val2014/COCO_val2014_000000015599.jpg -../coco/images/val2014/COCO_val2014_000000015709.jpg -../coco/images/val2014/COCO_val2014_000000015735.jpg -../coco/images/val2014/COCO_val2014_000000015751.jpg -../coco/images/val2014/COCO_val2014_000000015883.jpg -../coco/images/val2014/COCO_val2014_000000015953.jpg -../coco/images/val2014/COCO_val2014_000000015956.jpg -../coco/images/val2014/COCO_val2014_000000015968.jpg -../coco/images/val2014/COCO_val2014_000000015987.jpg -../coco/images/val2014/COCO_val2014_000000016030.jpg -../coco/images/val2014/COCO_val2014_000000016076.jpg -../coco/images/val2014/COCO_val2014_000000016228.jpg -../coco/images/val2014/COCO_val2014_000000016241.jpg -../coco/images/val2014/COCO_val2014_000000016257.jpg -../coco/images/val2014/COCO_val2014_000000016327.jpg -../coco/images/val2014/COCO_val2014_000000016410.jpg -../coco/images/val2014/COCO_val2014_000000016574.jpg -../coco/images/val2014/COCO_val2014_000000016716.jpg -../coco/images/val2014/COCO_val2014_000000016928.jpg -../coco/images/val2014/COCO_val2014_000000016995.jpg -../coco/images/val2014/COCO_val2014_000000017235.jpg -../coco/images/val2014/COCO_val2014_000000017379.jpg -../coco/images/val2014/COCO_val2014_000000017667.jpg -../coco/images/val2014/COCO_val2014_000000017755.jpg -../coco/images/val2014/COCO_val2014_000000018295.jpg -../coco/images/val2014/COCO_val2014_000000018358.jpg -../coco/images/val2014/COCO_val2014_000000018476.jpg -../coco/images/val2014/COCO_val2014_000000018750.jpg -../coco/images/val2014/COCO_val2014_000000018783.jpg -../coco/images/val2014/COCO_val2014_000000019025.jpg -../coco/images/val2014/COCO_val2014_000000019042.jpg -../coco/images/val2014/COCO_val2014_000000019129.jpg -../coco/images/val2014/COCO_val2014_000000019176.jpg -../coco/images/val2014/COCO_val2014_000000019491.jpg -../coco/images/val2014/COCO_val2014_000000019890.jpg -../coco/images/val2014/COCO_val2014_000000019923.jpg -../coco/images/val2014/COCO_val2014_000000020001.jpg -../coco/images/val2014/COCO_val2014_000000020038.jpg -../coco/images/val2014/COCO_val2014_000000020175.jpg -../coco/images/val2014/COCO_val2014_000000020268.jpg -../coco/images/val2014/COCO_val2014_000000020273.jpg -../coco/images/val2014/COCO_val2014_000000020349.jpg -../coco/images/val2014/COCO_val2014_000000020553.jpg -../coco/images/val2014/COCO_val2014_000000020788.jpg -../coco/images/val2014/COCO_val2014_000000020912.jpg -../coco/images/val2014/COCO_val2014_000000020947.jpg -../coco/images/val2014/COCO_val2014_000000020972.jpg -../coco/images/val2014/COCO_val2014_000000021161.jpg -../coco/images/val2014/COCO_val2014_000000021483.jpg -../coco/images/val2014/COCO_val2014_000000021588.jpg -../coco/images/val2014/COCO_val2014_000000021639.jpg -../coco/images/val2014/COCO_val2014_000000021644.jpg -../coco/images/val2014/COCO_val2014_000000021645.jpg -../coco/images/val2014/COCO_val2014_000000021671.jpg -../coco/images/val2014/COCO_val2014_000000021746.jpg -../coco/images/val2014/COCO_val2014_000000021839.jpg -../coco/images/val2014/COCO_val2014_000000022002.jpg -../coco/images/val2014/COCO_val2014_000000022129.jpg -../coco/images/val2014/COCO_val2014_000000022191.jpg -../coco/images/val2014/COCO_val2014_000000022215.jpg -../coco/images/val2014/COCO_val2014_000000022341.jpg -../coco/images/val2014/COCO_val2014_000000022492.jpg -../coco/images/val2014/COCO_val2014_000000022563.jpg -../coco/images/val2014/COCO_val2014_000000022660.jpg -../coco/images/val2014/COCO_val2014_000000022705.jpg -../coco/images/val2014/COCO_val2014_000000023017.jpg -../coco/images/val2014/COCO_val2014_000000023309.jpg -../coco/images/val2014/COCO_val2014_000000023411.jpg -../coco/images/val2014/COCO_val2014_000000023754.jpg -../coco/images/val2014/COCO_val2014_000000023802.jpg -../coco/images/val2014/COCO_val2014_000000023981.jpg -../coco/images/val2014/COCO_val2014_000000023995.jpg -../coco/images/val2014/COCO_val2014_000000024112.jpg -../coco/images/val2014/COCO_val2014_000000024247.jpg -../coco/images/val2014/COCO_val2014_000000024396.jpg -../coco/images/val2014/COCO_val2014_000000024776.jpg -../coco/images/val2014/COCO_val2014_000000024924.jpg -../coco/images/val2014/COCO_val2014_000000025096.jpg -../coco/images/val2014/COCO_val2014_000000025191.jpg -../coco/images/val2014/COCO_val2014_000000025252.jpg -../coco/images/val2014/COCO_val2014_000000025293.jpg -../coco/images/val2014/COCO_val2014_000000025360.jpg -../coco/images/val2014/COCO_val2014_000000025595.jpg -../coco/images/val2014/COCO_val2014_000000025685.jpg -../coco/images/val2014/COCO_val2014_000000025807.jpg -../coco/images/val2014/COCO_val2014_000000025864.jpg -../coco/images/val2014/COCO_val2014_000000025989.jpg -../coco/images/val2014/COCO_val2014_000000026026.jpg -../coco/images/val2014/COCO_val2014_000000026430.jpg -../coco/images/val2014/COCO_val2014_000000026432.jpg -../coco/images/val2014/COCO_val2014_000000026534.jpg -../coco/images/val2014/COCO_val2014_000000026560.jpg -../coco/images/val2014/COCO_val2014_000000026564.jpg -../coco/images/val2014/COCO_val2014_000000026671.jpg -../coco/images/val2014/COCO_val2014_000000026690.jpg -../coco/images/val2014/COCO_val2014_000000026734.jpg -../coco/images/val2014/COCO_val2014_000000026799.jpg -../coco/images/val2014/COCO_val2014_000000026907.jpg -../coco/images/val2014/COCO_val2014_000000026908.jpg -../coco/images/val2014/COCO_val2014_000000026946.jpg -../coco/images/val2014/COCO_val2014_000000027530.jpg -../coco/images/val2014/COCO_val2014_000000027610.jpg -../coco/images/val2014/COCO_val2014_000000027620.jpg -../coco/images/val2014/COCO_val2014_000000027787.jpg -../coco/images/val2014/COCO_val2014_000000027789.jpg -../coco/images/val2014/COCO_val2014_000000027874.jpg -../coco/images/val2014/COCO_val2014_000000027946.jpg -../coco/images/val2014/COCO_val2014_000000027975.jpg -../coco/images/val2014/COCO_val2014_000000028022.jpg -../coco/images/val2014/COCO_val2014_000000028039.jpg -../coco/images/val2014/COCO_val2014_000000028273.jpg -../coco/images/val2014/COCO_val2014_000000028540.jpg -../coco/images/val2014/COCO_val2014_000000028702.jpg -../coco/images/val2014/COCO_val2014_000000028820.jpg -../coco/images/val2014/COCO_val2014_000000028874.jpg -../coco/images/val2014/COCO_val2014_000000029019.jpg -../coco/images/val2014/COCO_val2014_000000029030.jpg -../coco/images/val2014/COCO_val2014_000000029170.jpg -../coco/images/val2014/COCO_val2014_000000029308.jpg -../coco/images/val2014/COCO_val2014_000000029393.jpg -../coco/images/val2014/COCO_val2014_000000029524.jpg -../coco/images/val2014/COCO_val2014_000000029577.jpg -../coco/images/val2014/COCO_val2014_000000029648.jpg -../coco/images/val2014/COCO_val2014_000000029656.jpg -../coco/images/val2014/COCO_val2014_000000029697.jpg -../coco/images/val2014/COCO_val2014_000000029709.jpg -../coco/images/val2014/COCO_val2014_000000029719.jpg -../coco/images/val2014/COCO_val2014_000000030034.jpg -../coco/images/val2014/COCO_val2014_000000030062.jpg -../coco/images/val2014/COCO_val2014_000000030383.jpg -../coco/images/val2014/COCO_val2014_000000030470.jpg -../coco/images/val2014/COCO_val2014_000000030548.jpg -../coco/images/val2014/COCO_val2014_000000030668.jpg -../coco/images/val2014/COCO_val2014_000000030793.jpg -../coco/images/val2014/COCO_val2014_000000030843.jpg -../coco/images/val2014/COCO_val2014_000000030998.jpg -../coco/images/val2014/COCO_val2014_000000031151.jpg -../coco/images/val2014/COCO_val2014_000000031164.jpg -../coco/images/val2014/COCO_val2014_000000031176.jpg -../coco/images/val2014/COCO_val2014_000000031247.jpg -../coco/images/val2014/COCO_val2014_000000031392.jpg -../coco/images/val2014/COCO_val2014_000000031521.jpg -../coco/images/val2014/COCO_val2014_000000031542.jpg -../coco/images/val2014/COCO_val2014_000000031817.jpg -../coco/images/val2014/COCO_val2014_000000032081.jpg -../coco/images/val2014/COCO_val2014_000000032193.jpg -../coco/images/val2014/COCO_val2014_000000032331.jpg -../coco/images/val2014/COCO_val2014_000000032464.jpg -../coco/images/val2014/COCO_val2014_000000032510.jpg -../coco/images/val2014/COCO_val2014_000000032524.jpg -../coco/images/val2014/COCO_val2014_000000032625.jpg -../coco/images/val2014/COCO_val2014_000000032677.jpg -../coco/images/val2014/COCO_val2014_000000032715.jpg -../coco/images/val2014/COCO_val2014_000000032947.jpg -../coco/images/val2014/COCO_val2014_000000032964.jpg -../coco/images/val2014/COCO_val2014_000000033006.jpg -../coco/images/val2014/COCO_val2014_000000033055.jpg -../coco/images/val2014/COCO_val2014_000000033158.jpg -../coco/images/val2014/COCO_val2014_000000033243.jpg -../coco/images/val2014/COCO_val2014_000000033345.jpg -../coco/images/val2014/COCO_val2014_000000033499.jpg -../coco/images/val2014/COCO_val2014_000000033561.jpg -../coco/images/val2014/COCO_val2014_000000033830.jpg -../coco/images/val2014/COCO_val2014_000000033835.jpg -../coco/images/val2014/COCO_val2014_000000033924.jpg -../coco/images/val2014/COCO_val2014_000000034056.jpg -../coco/images/val2014/COCO_val2014_000000034114.jpg -../coco/images/val2014/COCO_val2014_000000034137.jpg -../coco/images/val2014/COCO_val2014_000000034183.jpg -../coco/images/val2014/COCO_val2014_000000034193.jpg -../coco/images/val2014/COCO_val2014_000000034299.jpg -../coco/images/val2014/COCO_val2014_000000034452.jpg -../coco/images/val2014/COCO_val2014_000000034689.jpg -../coco/images/val2014/COCO_val2014_000000034877.jpg -../coco/images/val2014/COCO_val2014_000000034892.jpg -../coco/images/val2014/COCO_val2014_000000034930.jpg -../coco/images/val2014/COCO_val2014_000000035012.jpg -../coco/images/val2014/COCO_val2014_000000035222.jpg -../coco/images/val2014/COCO_val2014_000000035326.jpg -../coco/images/val2014/COCO_val2014_000000035368.jpg -../coco/images/val2014/COCO_val2014_000000035474.jpg -../coco/images/val2014/COCO_val2014_000000035498.jpg -../coco/images/val2014/COCO_val2014_000000035738.jpg -../coco/images/val2014/COCO_val2014_000000035826.jpg -../coco/images/val2014/COCO_val2014_000000035940.jpg -../coco/images/val2014/COCO_val2014_000000035966.jpg -../coco/images/val2014/COCO_val2014_000000036049.jpg -../coco/images/val2014/COCO_val2014_000000036252.jpg -../coco/images/val2014/COCO_val2014_000000036508.jpg -../coco/images/val2014/COCO_val2014_000000036522.jpg -../coco/images/val2014/COCO_val2014_000000036539.jpg -../coco/images/val2014/COCO_val2014_000000036563.jpg -../coco/images/val2014/COCO_val2014_000000037038.jpg -../coco/images/val2014/COCO_val2014_000000037629.jpg -../coco/images/val2014/COCO_val2014_000000037675.jpg -../coco/images/val2014/COCO_val2014_000000037846.jpg -../coco/images/val2014/COCO_val2014_000000037865.jpg -../coco/images/val2014/COCO_val2014_000000037907.jpg -../coco/images/val2014/COCO_val2014_000000037988.jpg -../coco/images/val2014/COCO_val2014_000000038031.jpg -../coco/images/val2014/COCO_val2014_000000038190.jpg -../coco/images/val2014/COCO_val2014_000000038252.jpg -../coco/images/val2014/COCO_val2014_000000038296.jpg -../coco/images/val2014/COCO_val2014_000000038465.jpg -../coco/images/val2014/COCO_val2014_000000038488.jpg -../coco/images/val2014/COCO_val2014_000000038531.jpg -../coco/images/val2014/COCO_val2014_000000038539.jpg -../coco/images/val2014/COCO_val2014_000000038645.jpg -../coco/images/val2014/COCO_val2014_000000038685.jpg -../coco/images/val2014/COCO_val2014_000000038825.jpg -../coco/images/val2014/COCO_val2014_000000039322.jpg -../coco/images/val2014/COCO_val2014_000000039480.jpg -../coco/images/val2014/COCO_val2014_000000039697.jpg -../coco/images/val2014/COCO_val2014_000000039731.jpg -../coco/images/val2014/COCO_val2014_000000039743.jpg -../coco/images/val2014/COCO_val2014_000000039785.jpg -../coco/images/val2014/COCO_val2014_000000039961.jpg -../coco/images/val2014/COCO_val2014_000000040426.jpg -../coco/images/val2014/COCO_val2014_000000040485.jpg -../coco/images/val2014/COCO_val2014_000000040681.jpg -../coco/images/val2014/COCO_val2014_000000040686.jpg -../coco/images/val2014/COCO_val2014_000000040886.jpg -../coco/images/val2014/COCO_val2014_000000041119.jpg -../coco/images/val2014/COCO_val2014_000000041147.jpg -../coco/images/val2014/COCO_val2014_000000041322.jpg -../coco/images/val2014/COCO_val2014_000000041373.jpg -../coco/images/val2014/COCO_val2014_000000041550.jpg -../coco/images/val2014/COCO_val2014_000000041635.jpg -../coco/images/val2014/COCO_val2014_000000041867.jpg -../coco/images/val2014/COCO_val2014_000000041872.jpg -../coco/images/val2014/COCO_val2014_000000041924.jpg -../coco/images/val2014/COCO_val2014_000000042137.jpg -../coco/images/val2014/COCO_val2014_000000042279.jpg -../coco/images/val2014/COCO_val2014_000000042492.jpg -../coco/images/val2014/COCO_val2014_000000042576.jpg -../coco/images/val2014/COCO_val2014_000000042661.jpg -../coco/images/val2014/COCO_val2014_000000042743.jpg -../coco/images/val2014/COCO_val2014_000000042805.jpg -../coco/images/val2014/COCO_val2014_000000042837.jpg -../coco/images/val2014/COCO_val2014_000000043165.jpg -../coco/images/val2014/COCO_val2014_000000043218.jpg -../coco/images/val2014/COCO_val2014_000000043261.jpg -../coco/images/val2014/COCO_val2014_000000043404.jpg -../coco/images/val2014/COCO_val2014_000000043542.jpg -../coco/images/val2014/COCO_val2014_000000043605.jpg -../coco/images/val2014/COCO_val2014_000000043614.jpg -../coco/images/val2014/COCO_val2014_000000043673.jpg -../coco/images/val2014/COCO_val2014_000000043816.jpg -../coco/images/val2014/COCO_val2014_000000043850.jpg -../coco/images/val2014/COCO_val2014_000000044220.jpg -../coco/images/val2014/COCO_val2014_000000044269.jpg -../coco/images/val2014/COCO_val2014_000000044309.jpg -../coco/images/val2014/COCO_val2014_000000044478.jpg -../coco/images/val2014/COCO_val2014_000000044536.jpg -../coco/images/val2014/COCO_val2014_000000044559.jpg -../coco/images/val2014/COCO_val2014_000000044575.jpg -../coco/images/val2014/COCO_val2014_000000044612.jpg -../coco/images/val2014/COCO_val2014_000000044677.jpg -../coco/images/val2014/COCO_val2014_000000044699.jpg -../coco/images/val2014/COCO_val2014_000000044823.jpg -../coco/images/val2014/COCO_val2014_000000044989.jpg -../coco/images/val2014/COCO_val2014_000000045094.jpg -../coco/images/val2014/COCO_val2014_000000045176.jpg -../coco/images/val2014/COCO_val2014_000000045197.jpg -../coco/images/val2014/COCO_val2014_000000045367.jpg -../coco/images/val2014/COCO_val2014_000000045392.jpg -../coco/images/val2014/COCO_val2014_000000045433.jpg -../coco/images/val2014/COCO_val2014_000000045463.jpg -../coco/images/val2014/COCO_val2014_000000045550.jpg -../coco/images/val2014/COCO_val2014_000000045574.jpg -../coco/images/val2014/COCO_val2014_000000045627.jpg -../coco/images/val2014/COCO_val2014_000000045685.jpg -../coco/images/val2014/COCO_val2014_000000045728.jpg -../coco/images/val2014/COCO_val2014_000000046252.jpg -../coco/images/val2014/COCO_val2014_000000046269.jpg -../coco/images/val2014/COCO_val2014_000000046329.jpg -../coco/images/val2014/COCO_val2014_000000046805.jpg -../coco/images/val2014/COCO_val2014_000000046869.jpg -../coco/images/val2014/COCO_val2014_000000046919.jpg -../coco/images/val2014/COCO_val2014_000000046924.jpg -../coco/images/val2014/COCO_val2014_000000047008.jpg -../coco/images/val2014/COCO_val2014_000000047131.jpg -../coco/images/val2014/COCO_val2014_000000047226.jpg -../coco/images/val2014/COCO_val2014_000000047263.jpg -../coco/images/val2014/COCO_val2014_000000047395.jpg -../coco/images/val2014/COCO_val2014_000000047552.jpg -../coco/images/val2014/COCO_val2014_000000047570.jpg -../coco/images/val2014/COCO_val2014_000000047720.jpg -../coco/images/val2014/COCO_val2014_000000047775.jpg -../coco/images/val2014/COCO_val2014_000000047886.jpg -../coco/images/val2014/COCO_val2014_000000048504.jpg -../coco/images/val2014/COCO_val2014_000000048564.jpg -../coco/images/val2014/COCO_val2014_000000048668.jpg -../coco/images/val2014/COCO_val2014_000000048731.jpg -../coco/images/val2014/COCO_val2014_000000048739.jpg -../coco/images/val2014/COCO_val2014_000000048791.jpg -../coco/images/val2014/COCO_val2014_000000048840.jpg -../coco/images/val2014/COCO_val2014_000000048905.jpg -../coco/images/val2014/COCO_val2014_000000048910.jpg -../coco/images/val2014/COCO_val2014_000000048924.jpg -../coco/images/val2014/COCO_val2014_000000048956.jpg -../coco/images/val2014/COCO_val2014_000000049075.jpg -../coco/images/val2014/COCO_val2014_000000049236.jpg -../coco/images/val2014/COCO_val2014_000000049676.jpg -../coco/images/val2014/COCO_val2014_000000049881.jpg -../coco/images/val2014/COCO_val2014_000000049985.jpg -../coco/images/val2014/COCO_val2014_000000050100.jpg -../coco/images/val2014/COCO_val2014_000000050145.jpg -../coco/images/val2014/COCO_val2014_000000050177.jpg -../coco/images/val2014/COCO_val2014_000000050324.jpg -../coco/images/val2014/COCO_val2014_000000050331.jpg -../coco/images/val2014/COCO_val2014_000000050481.jpg -../coco/images/val2014/COCO_val2014_000000050485.jpg -../coco/images/val2014/COCO_val2014_000000050493.jpg -../coco/images/val2014/COCO_val2014_000000050746.jpg -../coco/images/val2014/COCO_val2014_000000050844.jpg -../coco/images/val2014/COCO_val2014_000000050896.jpg -../coco/images/val2014/COCO_val2014_000000051249.jpg -../coco/images/val2014/COCO_val2014_000000051250.jpg -../coco/images/val2014/COCO_val2014_000000051289.jpg -../coco/images/val2014/COCO_val2014_000000051314.jpg -../coco/images/val2014/COCO_val2014_000000051339.jpg -../coco/images/val2014/COCO_val2014_000000051461.jpg -../coco/images/val2014/COCO_val2014_000000051476.jpg -../coco/images/val2014/COCO_val2014_000000052005.jpg -../coco/images/val2014/COCO_val2014_000000052020.jpg -../coco/images/val2014/COCO_val2014_000000052290.jpg -../coco/images/val2014/COCO_val2014_000000052314.jpg -../coco/images/val2014/COCO_val2014_000000052425.jpg -../coco/images/val2014/COCO_val2014_000000052575.jpg -../coco/images/val2014/COCO_val2014_000000052871.jpg -../coco/images/val2014/COCO_val2014_000000052982.jpg -../coco/images/val2014/COCO_val2014_000000053139.jpg -../coco/images/val2014/COCO_val2014_000000053183.jpg -../coco/images/val2014/COCO_val2014_000000053263.jpg -../coco/images/val2014/COCO_val2014_000000053491.jpg -../coco/images/val2014/COCO_val2014_000000053503.jpg -../coco/images/val2014/COCO_val2014_000000053580.jpg -../coco/images/val2014/COCO_val2014_000000053616.jpg -../coco/images/val2014/COCO_val2014_000000053907.jpg -../coco/images/val2014/COCO_val2014_000000053949.jpg -../coco/images/val2014/COCO_val2014_000000054301.jpg -../coco/images/val2014/COCO_val2014_000000054334.jpg -../coco/images/val2014/COCO_val2014_000000054490.jpg -../coco/images/val2014/COCO_val2014_000000054527.jpg -../coco/images/val2014/COCO_val2014_000000054533.jpg -../coco/images/val2014/COCO_val2014_000000054603.jpg -../coco/images/val2014/COCO_val2014_000000054643.jpg -../coco/images/val2014/COCO_val2014_000000054679.jpg -../coco/images/val2014/COCO_val2014_000000054723.jpg -../coco/images/val2014/COCO_val2014_000000054959.jpg -../coco/images/val2014/COCO_val2014_000000055167.jpg -../coco/images/val2014/COCO_val2014_000000056137.jpg -../coco/images/val2014/COCO_val2014_000000056326.jpg -../coco/images/val2014/COCO_val2014_000000056541.jpg -../coco/images/val2014/COCO_val2014_000000056562.jpg -../coco/images/val2014/COCO_val2014_000000056624.jpg -../coco/images/val2014/COCO_val2014_000000056633.jpg -../coco/images/val2014/COCO_val2014_000000056724.jpg -../coco/images/val2014/COCO_val2014_000000056739.jpg -../coco/images/val2014/COCO_val2014_000000057027.jpg -../coco/images/val2014/COCO_val2014_000000057091.jpg -../coco/images/val2014/COCO_val2014_000000057095.jpg -../coco/images/val2014/COCO_val2014_000000057100.jpg -../coco/images/val2014/COCO_val2014_000000057149.jpg -../coco/images/val2014/COCO_val2014_000000057238.jpg -../coco/images/val2014/COCO_val2014_000000057359.jpg -../coco/images/val2014/COCO_val2014_000000057454.jpg -../coco/images/val2014/COCO_val2014_000000058001.jpg -../coco/images/val2014/COCO_val2014_000000058157.jpg -../coco/images/val2014/COCO_val2014_000000058223.jpg -../coco/images/val2014/COCO_val2014_000000058232.jpg -../coco/images/val2014/COCO_val2014_000000058344.jpg -../coco/images/val2014/COCO_val2014_000000058522.jpg -../coco/images/val2014/COCO_val2014_000000058636.jpg -../coco/images/val2014/COCO_val2014_000000058800.jpg -../coco/images/val2014/COCO_val2014_000000058949.jpg -../coco/images/val2014/COCO_val2014_000000059009.jpg -../coco/images/val2014/COCO_val2014_000000059202.jpg -../coco/images/val2014/COCO_val2014_000000059393.jpg -../coco/images/val2014/COCO_val2014_000000059652.jpg -../coco/images/val2014/COCO_val2014_000000060010.jpg -../coco/images/val2014/COCO_val2014_000000060049.jpg -../coco/images/val2014/COCO_val2014_000000060126.jpg -../coco/images/val2014/COCO_val2014_000000060128.jpg -../coco/images/val2014/COCO_val2014_000000060448.jpg -../coco/images/val2014/COCO_val2014_000000060548.jpg -../coco/images/val2014/COCO_val2014_000000060677.jpg -../coco/images/val2014/COCO_val2014_000000060760.jpg -../coco/images/val2014/COCO_val2014_000000060823.jpg -../coco/images/val2014/COCO_val2014_000000060859.jpg -../coco/images/val2014/COCO_val2014_000000060899.jpg -../coco/images/val2014/COCO_val2014_000000061171.jpg -../coco/images/val2014/COCO_val2014_000000061503.jpg -../coco/images/val2014/COCO_val2014_000000061520.jpg -../coco/images/val2014/COCO_val2014_000000061531.jpg -../coco/images/val2014/COCO_val2014_000000061564.jpg -../coco/images/val2014/COCO_val2014_000000061658.jpg -../coco/images/val2014/COCO_val2014_000000061693.jpg -../coco/images/val2014/COCO_val2014_000000061717.jpg -../coco/images/val2014/COCO_val2014_000000061836.jpg -../coco/images/val2014/COCO_val2014_000000062041.jpg -../coco/images/val2014/COCO_val2014_000000062060.jpg -../coco/images/val2014/COCO_val2014_000000062198.jpg -../coco/images/val2014/COCO_val2014_000000062200.jpg -../coco/images/val2014/COCO_val2014_000000062220.jpg -../coco/images/val2014/COCO_val2014_000000062623.jpg -../coco/images/val2014/COCO_val2014_000000062726.jpg -../coco/images/val2014/COCO_val2014_000000062875.jpg -../coco/images/val2014/COCO_val2014_000000063047.jpg -../coco/images/val2014/COCO_val2014_000000063114.jpg -../coco/images/val2014/COCO_val2014_000000063488.jpg -../coco/images/val2014/COCO_val2014_000000063671.jpg -../coco/images/val2014/COCO_val2014_000000063715.jpg -../coco/images/val2014/COCO_val2014_000000063804.jpg -../coco/images/val2014/COCO_val2014_000000063882.jpg -../coco/images/val2014/COCO_val2014_000000063939.jpg -../coco/images/val2014/COCO_val2014_000000063965.jpg -../coco/images/val2014/COCO_val2014_000000064155.jpg -../coco/images/val2014/COCO_val2014_000000064189.jpg -../coco/images/val2014/COCO_val2014_000000064196.jpg -../coco/images/val2014/COCO_val2014_000000064495.jpg -../coco/images/val2014/COCO_val2014_000000064610.jpg -../coco/images/val2014/COCO_val2014_000000064693.jpg -../coco/images/val2014/COCO_val2014_000000064746.jpg -../coco/images/val2014/COCO_val2014_000000064760.jpg -../coco/images/val2014/COCO_val2014_000000064796.jpg -../coco/images/val2014/COCO_val2014_000000064865.jpg -../coco/images/val2014/COCO_val2014_000000064915.jpg -../coco/images/val2014/COCO_val2014_000000065074.jpg -../coco/images/val2014/COCO_val2014_000000065124.jpg -../coco/images/val2014/COCO_val2014_000000065258.jpg -../coco/images/val2014/COCO_val2014_000000065267.jpg -../coco/images/val2014/COCO_val2014_000000065430.jpg -../coco/images/val2014/COCO_val2014_000000065465.jpg -../coco/images/val2014/COCO_val2014_000000065942.jpg -../coco/images/val2014/COCO_val2014_000000066001.jpg -../coco/images/val2014/COCO_val2014_000000066064.jpg -../coco/images/val2014/COCO_val2014_000000066072.jpg -../coco/images/val2014/COCO_val2014_000000066239.jpg -../coco/images/val2014/COCO_val2014_000000066243.jpg -../coco/images/val2014/COCO_val2014_000000066355.jpg -../coco/images/val2014/COCO_val2014_000000066412.jpg -../coco/images/val2014/COCO_val2014_000000066423.jpg -../coco/images/val2014/COCO_val2014_000000066427.jpg -../coco/images/val2014/COCO_val2014_000000066502.jpg -../coco/images/val2014/COCO_val2014_000000066519.jpg -../coco/images/val2014/COCO_val2014_000000066561.jpg -../coco/images/val2014/COCO_val2014_000000066700.jpg -../coco/images/val2014/COCO_val2014_000000066717.jpg -../coco/images/val2014/COCO_val2014_000000066879.jpg -../coco/images/val2014/COCO_val2014_000000067178.jpg -../coco/images/val2014/COCO_val2014_000000067207.jpg -../coco/images/val2014/COCO_val2014_000000067218.jpg -../coco/images/val2014/COCO_val2014_000000067412.jpg -../coco/images/val2014/COCO_val2014_000000067532.jpg -../coco/images/val2014/COCO_val2014_000000067590.jpg -../coco/images/val2014/COCO_val2014_000000067660.jpg -../coco/images/val2014/COCO_val2014_000000067686.jpg -../coco/images/val2014/COCO_val2014_000000067704.jpg -../coco/images/val2014/COCO_val2014_000000067776.jpg -../coco/images/val2014/COCO_val2014_000000067948.jpg -../coco/images/val2014/COCO_val2014_000000067953.jpg -../coco/images/val2014/COCO_val2014_000000068059.jpg -../coco/images/val2014/COCO_val2014_000000068204.jpg -../coco/images/val2014/COCO_val2014_000000068205.jpg -../coco/images/val2014/COCO_val2014_000000068409.jpg -../coco/images/val2014/COCO_val2014_000000068435.jpg -../coco/images/val2014/COCO_val2014_000000068520.jpg -../coco/images/val2014/COCO_val2014_000000068546.jpg -../coco/images/val2014/COCO_val2014_000000068674.jpg -../coco/images/val2014/COCO_val2014_000000068745.jpg -../coco/images/val2014/COCO_val2014_000000069009.jpg -../coco/images/val2014/COCO_val2014_000000069077.jpg -../coco/images/val2014/COCO_val2014_000000069196.jpg -../coco/images/val2014/COCO_val2014_000000069356.jpg -../coco/images/val2014/COCO_val2014_000000069568.jpg -../coco/images/val2014/COCO_val2014_000000069577.jpg -../coco/images/val2014/COCO_val2014_000000069698.jpg -../coco/images/val2014/COCO_val2014_000000070493.jpg -../coco/images/val2014/COCO_val2014_000000070896.jpg -../coco/images/val2014/COCO_val2014_000000071023.jpg -../coco/images/val2014/COCO_val2014_000000071123.jpg -../coco/images/val2014/COCO_val2014_000000071241.jpg -../coco/images/val2014/COCO_val2014_000000071301.jpg -../coco/images/val2014/COCO_val2014_000000071345.jpg -../coco/images/val2014/COCO_val2014_000000071451.jpg -../coco/images/val2014/COCO_val2014_000000071673.jpg -../coco/images/val2014/COCO_val2014_000000071826.jpg -../coco/images/val2014/COCO_val2014_000000071986.jpg -../coco/images/val2014/COCO_val2014_000000072004.jpg -../coco/images/val2014/COCO_val2014_000000072020.jpg -../coco/images/val2014/COCO_val2014_000000072052.jpg -../coco/images/val2014/COCO_val2014_000000072281.jpg -../coco/images/val2014/COCO_val2014_000000072368.jpg -../coco/images/val2014/COCO_val2014_000000072737.jpg -../coco/images/val2014/COCO_val2014_000000072797.jpg -../coco/images/val2014/COCO_val2014_000000072860.jpg -../coco/images/val2014/COCO_val2014_000000073009.jpg -../coco/images/val2014/COCO_val2014_000000073039.jpg -../coco/images/val2014/COCO_val2014_000000073239.jpg -../coco/images/val2014/COCO_val2014_000000073467.jpg -../coco/images/val2014/COCO_val2014_000000073491.jpg -../coco/images/val2014/COCO_val2014_000000073588.jpg -../coco/images/val2014/COCO_val2014_000000073729.jpg -../coco/images/val2014/COCO_val2014_000000073973.jpg -../coco/images/val2014/COCO_val2014_000000074037.jpg -../coco/images/val2014/COCO_val2014_000000074137.jpg -../coco/images/val2014/COCO_val2014_000000074268.jpg -../coco/images/val2014/COCO_val2014_000000074434.jpg -../coco/images/val2014/COCO_val2014_000000074789.jpg -../coco/images/val2014/COCO_val2014_000000074963.jpg -../coco/images/val2014/COCO_val2014_000000075033.jpg -../coco/images/val2014/COCO_val2014_000000075372.jpg -../coco/images/val2014/COCO_val2014_000000075527.jpg -../coco/images/val2014/COCO_val2014_000000075646.jpg -../coco/images/val2014/COCO_val2014_000000075713.jpg -../coco/images/val2014/COCO_val2014_000000075775.jpg -../coco/images/val2014/COCO_val2014_000000075786.jpg -../coco/images/val2014/COCO_val2014_000000075886.jpg -../coco/images/val2014/COCO_val2014_000000076087.jpg -../coco/images/val2014/COCO_val2014_000000076257.jpg -../coco/images/val2014/COCO_val2014_000000076521.jpg -../coco/images/val2014/COCO_val2014_000000076572.jpg -../coco/images/val2014/COCO_val2014_000000076844.jpg -../coco/images/val2014/COCO_val2014_000000077178.jpg -../coco/images/val2014/COCO_val2014_000000077181.jpg -../coco/images/val2014/COCO_val2014_000000077184.jpg -../coco/images/val2014/COCO_val2014_000000077396.jpg -../coco/images/val2014/COCO_val2014_000000077400.jpg -../coco/images/val2014/COCO_val2014_000000077415.jpg -../coco/images/val2014/COCO_val2014_000000078565.jpg -../coco/images/val2014/COCO_val2014_000000078701.jpg -../coco/images/val2014/COCO_val2014_000000078843.jpg -../coco/images/val2014/COCO_val2014_000000078929.jpg -../coco/images/val2014/COCO_val2014_000000079084.jpg -../coco/images/val2014/COCO_val2014_000000079188.jpg -../coco/images/val2014/COCO_val2014_000000079544.jpg -../coco/images/val2014/COCO_val2014_000000079566.jpg -../coco/images/val2014/COCO_val2014_000000079588.jpg -../coco/images/val2014/COCO_val2014_000000079689.jpg -../coco/images/val2014/COCO_val2014_000000080104.jpg -../coco/images/val2014/COCO_val2014_000000080172.jpg -../coco/images/val2014/COCO_val2014_000000080219.jpg -../coco/images/val2014/COCO_val2014_000000080300.jpg -../coco/images/val2014/COCO_val2014_000000080395.jpg -../coco/images/val2014/COCO_val2014_000000080522.jpg -../coco/images/val2014/COCO_val2014_000000080714.jpg -../coco/images/val2014/COCO_val2014_000000080737.jpg -../coco/images/val2014/COCO_val2014_000000080747.jpg -../coco/images/val2014/COCO_val2014_000000081000.jpg -../coco/images/val2014/COCO_val2014_000000081081.jpg -../coco/images/val2014/COCO_val2014_000000081100.jpg -../coco/images/val2014/COCO_val2014_000000081287.jpg -../coco/images/val2014/COCO_val2014_000000081394.jpg -../coco/images/val2014/COCO_val2014_000000081552.jpg -../coco/images/val2014/COCO_val2014_000000082157.jpg -../coco/images/val2014/COCO_val2014_000000082252.jpg -../coco/images/val2014/COCO_val2014_000000082259.jpg -../coco/images/val2014/COCO_val2014_000000082367.jpg -../coco/images/val2014/COCO_val2014_000000082431.jpg -../coco/images/val2014/COCO_val2014_000000082456.jpg -../coco/images/val2014/COCO_val2014_000000082794.jpg -../coco/images/val2014/COCO_val2014_000000082807.jpg -../coco/images/val2014/COCO_val2014_000000082846.jpg -../coco/images/val2014/COCO_val2014_000000082847.jpg -../coco/images/val2014/COCO_val2014_000000082889.jpg -../coco/images/val2014/COCO_val2014_000000082981.jpg -../coco/images/val2014/COCO_val2014_000000083036.jpg -../coco/images/val2014/COCO_val2014_000000083065.jpg -../coco/images/val2014/COCO_val2014_000000083142.jpg -../coco/images/val2014/COCO_val2014_000000083275.jpg -../coco/images/val2014/COCO_val2014_000000083557.jpg -../coco/images/val2014/COCO_val2014_000000084073.jpg -../coco/images/val2014/COCO_val2014_000000084447.jpg -../coco/images/val2014/COCO_val2014_000000084463.jpg -../coco/images/val2014/COCO_val2014_000000084592.jpg -../coco/images/val2014/COCO_val2014_000000084674.jpg -../coco/images/val2014/COCO_val2014_000000084762.jpg -../coco/images/val2014/COCO_val2014_000000084870.jpg -../coco/images/val2014/COCO_val2014_000000084929.jpg -../coco/images/val2014/COCO_val2014_000000084980.jpg -../coco/images/val2014/COCO_val2014_000000085101.jpg -../coco/images/val2014/COCO_val2014_000000085292.jpg -../coco/images/val2014/COCO_val2014_000000085353.jpg -../coco/images/val2014/COCO_val2014_000000085674.jpg -../coco/images/val2014/COCO_val2014_000000085813.jpg -../coco/images/val2014/COCO_val2014_000000086011.jpg -../coco/images/val2014/COCO_val2014_000000086133.jpg -../coco/images/val2014/COCO_val2014_000000086136.jpg -../coco/images/val2014/COCO_val2014_000000086215.jpg -../coco/images/val2014/COCO_val2014_000000086220.jpg -../coco/images/val2014/COCO_val2014_000000086249.jpg -../coco/images/val2014/COCO_val2014_000000086320.jpg -../coco/images/val2014/COCO_val2014_000000086357.jpg -../coco/images/val2014/COCO_val2014_000000086429.jpg -../coco/images/val2014/COCO_val2014_000000086467.jpg -../coco/images/val2014/COCO_val2014_000000086483.jpg -../coco/images/val2014/COCO_val2014_000000086646.jpg -../coco/images/val2014/COCO_val2014_000000086755.jpg -../coco/images/val2014/COCO_val2014_000000086839.jpg -../coco/images/val2014/COCO_val2014_000000086848.jpg -../coco/images/val2014/COCO_val2014_000000086877.jpg -../coco/images/val2014/COCO_val2014_000000087038.jpg -../coco/images/val2014/COCO_val2014_000000087244.jpg -../coco/images/val2014/COCO_val2014_000000087354.jpg -../coco/images/val2014/COCO_val2014_000000087387.jpg -../coco/images/val2014/COCO_val2014_000000087489.jpg -../coco/images/val2014/COCO_val2014_000000087503.jpg -../coco/images/val2014/COCO_val2014_000000087617.jpg -../coco/images/val2014/COCO_val2014_000000087638.jpg -../coco/images/val2014/COCO_val2014_000000087740.jpg -../coco/images/val2014/COCO_val2014_000000087875.jpg -../coco/images/val2014/COCO_val2014_000000088360.jpg -../coco/images/val2014/COCO_val2014_000000088507.jpg -../coco/images/val2014/COCO_val2014_000000088560.jpg -../coco/images/val2014/COCO_val2014_000000088846.jpg -../coco/images/val2014/COCO_val2014_000000088859.jpg -../coco/images/val2014/COCO_val2014_000000088902.jpg -../coco/images/val2014/COCO_val2014_000000089027.jpg -../coco/images/val2014/COCO_val2014_000000089258.jpg -../coco/images/val2014/COCO_val2014_000000089285.jpg -../coco/images/val2014/COCO_val2014_000000089359.jpg -../coco/images/val2014/COCO_val2014_000000089378.jpg -../coco/images/val2014/COCO_val2014_000000089391.jpg -../coco/images/val2014/COCO_val2014_000000089487.jpg -../coco/images/val2014/COCO_val2014_000000089618.jpg -../coco/images/val2014/COCO_val2014_000000089670.jpg -../coco/images/val2014/COCO_val2014_000000090003.jpg -../coco/images/val2014/COCO_val2014_000000090062.jpg -../coco/images/val2014/COCO_val2014_000000090155.jpg -../coco/images/val2014/COCO_val2014_000000090208.jpg -../coco/images/val2014/COCO_val2014_000000090351.jpg -../coco/images/val2014/COCO_val2014_000000090476.jpg -../coco/images/val2014/COCO_val2014_000000090594.jpg -../coco/images/val2014/COCO_val2014_000000090753.jpg -../coco/images/val2014/COCO_val2014_000000090754.jpg -../coco/images/val2014/COCO_val2014_000000090864.jpg -../coco/images/val2014/COCO_val2014_000000091079.jpg -../coco/images/val2014/COCO_val2014_000000091341.jpg -../coco/images/val2014/COCO_val2014_000000091402.jpg -../coco/images/val2014/COCO_val2014_000000091517.jpg -../coco/images/val2014/COCO_val2014_000000091520.jpg -../coco/images/val2014/COCO_val2014_000000091612.jpg -../coco/images/val2014/COCO_val2014_000000091716.jpg -../coco/images/val2014/COCO_val2014_000000091766.jpg -../coco/images/val2014/COCO_val2014_000000091857.jpg -../coco/images/val2014/COCO_val2014_000000091899.jpg -../coco/images/val2014/COCO_val2014_000000091912.jpg -../coco/images/val2014/COCO_val2014_000000092093.jpg -../coco/images/val2014/COCO_val2014_000000092124.jpg -../coco/images/val2014/COCO_val2014_000000092679.jpg -../coco/images/val2014/COCO_val2014_000000092683.jpg -../coco/images/val2014/COCO_val2014_000000092939.jpg -../coco/images/val2014/COCO_val2014_000000092985.jpg -../coco/images/val2014/COCO_val2014_000000093175.jpg -../coco/images/val2014/COCO_val2014_000000093236.jpg -../coco/images/val2014/COCO_val2014_000000093331.jpg -../coco/images/val2014/COCO_val2014_000000093434.jpg -../coco/images/val2014/COCO_val2014_000000093607.jpg -../coco/images/val2014/COCO_val2014_000000093806.jpg -../coco/images/val2014/COCO_val2014_000000093964.jpg -../coco/images/val2014/COCO_val2014_000000094012.jpg -../coco/images/val2014/COCO_val2014_000000094033.jpg -../coco/images/val2014/COCO_val2014_000000094046.jpg -../coco/images/val2014/COCO_val2014_000000094052.jpg -../coco/images/val2014/COCO_val2014_000000094055.jpg -../coco/images/val2014/COCO_val2014_000000094501.jpg -../coco/images/val2014/COCO_val2014_000000094619.jpg -../coco/images/val2014/COCO_val2014_000000094746.jpg -../coco/images/val2014/COCO_val2014_000000094795.jpg -../coco/images/val2014/COCO_val2014_000000094846.jpg -../coco/images/val2014/COCO_val2014_000000095062.jpg -../coco/images/val2014/COCO_val2014_000000095063.jpg -../coco/images/val2014/COCO_val2014_000000095227.jpg -../coco/images/val2014/COCO_val2014_000000095441.jpg -../coco/images/val2014/COCO_val2014_000000095551.jpg -../coco/images/val2014/COCO_val2014_000000095670.jpg -../coco/images/val2014/COCO_val2014_000000095770.jpg -../coco/images/val2014/COCO_val2014_000000096110.jpg -../coco/images/val2014/COCO_val2014_000000096288.jpg -../coco/images/val2014/COCO_val2014_000000096327.jpg -../coco/images/val2014/COCO_val2014_000000096351.jpg -../coco/images/val2014/COCO_val2014_000000096618.jpg -../coco/images/val2014/COCO_val2014_000000096654.jpg -../coco/images/val2014/COCO_val2014_000000096762.jpg -../coco/images/val2014/COCO_val2014_000000096769.jpg -../coco/images/val2014/COCO_val2014_000000096998.jpg -../coco/images/val2014/COCO_val2014_000000097017.jpg -../coco/images/val2014/COCO_val2014_000000097048.jpg -../coco/images/val2014/COCO_val2014_000000097080.jpg -../coco/images/val2014/COCO_val2014_000000097240.jpg -../coco/images/val2014/COCO_val2014_000000097479.jpg -../coco/images/val2014/COCO_val2014_000000097577.jpg -../coco/images/val2014/COCO_val2014_000000097610.jpg -../coco/images/val2014/COCO_val2014_000000097656.jpg -../coco/images/val2014/COCO_val2014_000000097667.jpg -../coco/images/val2014/COCO_val2014_000000097682.jpg -../coco/images/val2014/COCO_val2014_000000097748.jpg -../coco/images/val2014/COCO_val2014_000000097868.jpg -../coco/images/val2014/COCO_val2014_000000097899.jpg -../coco/images/val2014/COCO_val2014_000000098018.jpg -../coco/images/val2014/COCO_val2014_000000098043.jpg -../coco/images/val2014/COCO_val2014_000000098095.jpg -../coco/images/val2014/COCO_val2014_000000098194.jpg -../coco/images/val2014/COCO_val2014_000000098280.jpg -../coco/images/val2014/COCO_val2014_000000098283.jpg -../coco/images/val2014/COCO_val2014_000000098599.jpg -../coco/images/val2014/COCO_val2014_000000098872.jpg -../coco/images/val2014/COCO_val2014_000000099026.jpg -../coco/images/val2014/COCO_val2014_000000099260.jpg -../coco/images/val2014/COCO_val2014_000000099389.jpg -../coco/images/val2014/COCO_val2014_000000099707.jpg -../coco/images/val2014/COCO_val2014_000000099961.jpg -../coco/images/val2014/COCO_val2014_000000099996.jpg -../coco/images/val2014/COCO_val2014_000000100000.jpg -../coco/images/val2014/COCO_val2014_000000100006.jpg -../coco/images/val2014/COCO_val2014_000000100083.jpg -../coco/images/val2014/COCO_val2014_000000100166.jpg -../coco/images/val2014/COCO_val2014_000000100187.jpg -../coco/images/val2014/COCO_val2014_000000100245.jpg -../coco/images/val2014/COCO_val2014_000000100343.jpg -../coco/images/val2014/COCO_val2014_000000100428.jpg -../coco/images/val2014/COCO_val2014_000000100582.jpg -../coco/images/val2014/COCO_val2014_000000100723.jpg -../coco/images/val2014/COCO_val2014_000000100726.jpg -../coco/images/val2014/COCO_val2014_000000100909.jpg -../coco/images/val2014/COCO_val2014_000000101059.jpg -../coco/images/val2014/COCO_val2014_000000101145.jpg -../coco/images/val2014/COCO_val2014_000000101567.jpg -../coco/images/val2014/COCO_val2014_000000101623.jpg -../coco/images/val2014/COCO_val2014_000000101703.jpg -../coco/images/val2014/COCO_val2014_000000101884.jpg -../coco/images/val2014/COCO_val2014_000000101948.jpg -../coco/images/val2014/COCO_val2014_000000102331.jpg -../coco/images/val2014/COCO_val2014_000000102421.jpg -../coco/images/val2014/COCO_val2014_000000102439.jpg -../coco/images/val2014/COCO_val2014_000000102446.jpg -../coco/images/val2014/COCO_val2014_000000102461.jpg -../coco/images/val2014/COCO_val2014_000000102466.jpg -../coco/images/val2014/COCO_val2014_000000102478.jpg -../coco/images/val2014/COCO_val2014_000000102594.jpg -../coco/images/val2014/COCO_val2014_000000102598.jpg -../coco/images/val2014/COCO_val2014_000000102665.jpg -../coco/images/val2014/COCO_val2014_000000102707.jpg -../coco/images/val2014/COCO_val2014_000000102848.jpg -../coco/images/val2014/COCO_val2014_000000102906.jpg -../coco/images/val2014/COCO_val2014_000000103122.jpg -../coco/images/val2014/COCO_val2014_000000103255.jpg -../coco/images/val2014/COCO_val2014_000000103272.jpg -../coco/images/val2014/COCO_val2014_000000103379.jpg -../coco/images/val2014/COCO_val2014_000000103413.jpg -../coco/images/val2014/COCO_val2014_000000103431.jpg -../coco/images/val2014/COCO_val2014_000000103509.jpg -../coco/images/val2014/COCO_val2014_000000103538.jpg -../coco/images/val2014/COCO_val2014_000000103667.jpg -../coco/images/val2014/COCO_val2014_000000103747.jpg -../coco/images/val2014/COCO_val2014_000000103931.jpg -../coco/images/val2014/COCO_val2014_000000104002.jpg -../coco/images/val2014/COCO_val2014_000000104455.jpg -../coco/images/val2014/COCO_val2014_000000104486.jpg -../coco/images/val2014/COCO_val2014_000000104494.jpg -../coco/images/val2014/COCO_val2014_000000104495.jpg -../coco/images/val2014/COCO_val2014_000000104893.jpg -../coco/images/val2014/COCO_val2014_000000104965.jpg -../coco/images/val2014/COCO_val2014_000000105040.jpg -../coco/images/val2014/COCO_val2014_000000105102.jpg -../coco/images/val2014/COCO_val2014_000000105156.jpg -../coco/images/val2014/COCO_val2014_000000105264.jpg -../coco/images/val2014/COCO_val2014_000000105291.jpg -../coco/images/val2014/COCO_val2014_000000105367.jpg -../coco/images/val2014/COCO_val2014_000000105647.jpg -../coco/images/val2014/COCO_val2014_000000105668.jpg -../coco/images/val2014/COCO_val2014_000000105711.jpg -../coco/images/val2014/COCO_val2014_000000105866.jpg -../coco/images/val2014/COCO_val2014_000000105973.jpg -../coco/images/val2014/COCO_val2014_000000106096.jpg -../coco/images/val2014/COCO_val2014_000000106120.jpg -../coco/images/val2014/COCO_val2014_000000106314.jpg -../coco/images/val2014/COCO_val2014_000000106351.jpg -../coco/images/val2014/COCO_val2014_000000106641.jpg -../coco/images/val2014/COCO_val2014_000000106661.jpg -../coco/images/val2014/COCO_val2014_000000106757.jpg -../coco/images/val2014/COCO_val2014_000000106793.jpg -../coco/images/val2014/COCO_val2014_000000106849.jpg -../coco/images/val2014/COCO_val2014_000000107004.jpg -../coco/images/val2014/COCO_val2014_000000107123.jpg -../coco/images/val2014/COCO_val2014_000000107183.jpg -../coco/images/val2014/COCO_val2014_000000107227.jpg -../coco/images/val2014/COCO_val2014_000000107244.jpg -../coco/images/val2014/COCO_val2014_000000107304.jpg -../coco/images/val2014/COCO_val2014_000000107542.jpg -../coco/images/val2014/COCO_val2014_000000107741.jpg -../coco/images/val2014/COCO_val2014_000000107831.jpg -../coco/images/val2014/COCO_val2014_000000107839.jpg -../coco/images/val2014/COCO_val2014_000000108051.jpg -../coco/images/val2014/COCO_val2014_000000108152.jpg -../coco/images/val2014/COCO_val2014_000000108212.jpg -../coco/images/val2014/COCO_val2014_000000108380.jpg -../coco/images/val2014/COCO_val2014_000000108408.jpg -../coco/images/val2014/COCO_val2014_000000108531.jpg -../coco/images/val2014/COCO_val2014_000000108761.jpg -../coco/images/val2014/COCO_val2014_000000108864.jpg -../coco/images/val2014/COCO_val2014_000000109055.jpg -../coco/images/val2014/COCO_val2014_000000109092.jpg -../coco/images/val2014/COCO_val2014_000000109178.jpg -../coco/images/val2014/COCO_val2014_000000109216.jpg -../coco/images/val2014/COCO_val2014_000000109231.jpg -../coco/images/val2014/COCO_val2014_000000109308.jpg -../coco/images/val2014/COCO_val2014_000000109486.jpg -../coco/images/val2014/COCO_val2014_000000109819.jpg -../coco/images/val2014/COCO_val2014_000000109869.jpg -../coco/images/val2014/COCO_val2014_000000110313.jpg -../coco/images/val2014/COCO_val2014_000000110389.jpg -../coco/images/val2014/COCO_val2014_000000110562.jpg -../coco/images/val2014/COCO_val2014_000000110617.jpg -../coco/images/val2014/COCO_val2014_000000110638.jpg -../coco/images/val2014/COCO_val2014_000000110881.jpg -../coco/images/val2014/COCO_val2014_000000110884.jpg -../coco/images/val2014/COCO_val2014_000000110951.jpg -../coco/images/val2014/COCO_val2014_000000111004.jpg -../coco/images/val2014/COCO_val2014_000000111014.jpg -../coco/images/val2014/COCO_val2014_000000111024.jpg -../coco/images/val2014/COCO_val2014_000000111076.jpg -../coco/images/val2014/COCO_val2014_000000111179.jpg -../coco/images/val2014/COCO_val2014_000000111590.jpg -../coco/images/val2014/COCO_val2014_000000111593.jpg -../coco/images/val2014/COCO_val2014_000000111878.jpg -../coco/images/val2014/COCO_val2014_000000112298.jpg -../coco/images/val2014/COCO_val2014_000000112388.jpg -../coco/images/val2014/COCO_val2014_000000112394.jpg -../coco/images/val2014/COCO_val2014_000000112440.jpg -../coco/images/val2014/COCO_val2014_000000112751.jpg -../coco/images/val2014/COCO_val2014_000000112818.jpg -../coco/images/val2014/COCO_val2014_000000112820.jpg -../coco/images/val2014/COCO_val2014_000000112830.jpg -../coco/images/val2014/COCO_val2014_000000112928.jpg -../coco/images/val2014/COCO_val2014_000000113139.jpg -../coco/images/val2014/COCO_val2014_000000113173.jpg -../coco/images/val2014/COCO_val2014_000000113313.jpg -../coco/images/val2014/COCO_val2014_000000113440.jpg -../coco/images/val2014/COCO_val2014_000000113559.jpg -../coco/images/val2014/COCO_val2014_000000113570.jpg -../coco/images/val2014/COCO_val2014_000000113579.jpg -../coco/images/val2014/COCO_val2014_000000113590.jpg -../coco/images/val2014/COCO_val2014_000000113757.jpg -../coco/images/val2014/COCO_val2014_000000113977.jpg -../coco/images/val2014/COCO_val2014_000000114033.jpg -../coco/images/val2014/COCO_val2014_000000114055.jpg -../coco/images/val2014/COCO_val2014_000000114090.jpg -../coco/images/val2014/COCO_val2014_000000114147.jpg -../coco/images/val2014/COCO_val2014_000000114239.jpg -../coco/images/val2014/COCO_val2014_000000114503.jpg -../coco/images/val2014/COCO_val2014_000000114907.jpg -../coco/images/val2014/COCO_val2014_000000114926.jpg -../coco/images/val2014/COCO_val2014_000000115069.jpg -../coco/images/val2014/COCO_val2014_000000115070.jpg -../coco/images/val2014/COCO_val2014_000000115128.jpg -../coco/images/val2014/COCO_val2014_000000115870.jpg -../coco/images/val2014/COCO_val2014_000000115898.jpg -../coco/images/val2014/COCO_val2014_000000115930.jpg -../coco/images/val2014/COCO_val2014_000000116226.jpg -../coco/images/val2014/COCO_val2014_000000116556.jpg -../coco/images/val2014/COCO_val2014_000000116667.jpg -../coco/images/val2014/COCO_val2014_000000116696.jpg -../coco/images/val2014/COCO_val2014_000000116936.jpg -../coco/images/val2014/COCO_val2014_000000117014.jpg -../coco/images/val2014/COCO_val2014_000000117037.jpg -../coco/images/val2014/COCO_val2014_000000117125.jpg -../coco/images/val2014/COCO_val2014_000000117127.jpg -../coco/images/val2014/COCO_val2014_000000117191.jpg -../coco/images/val2014/COCO_val2014_000000117201.jpg -../coco/images/val2014/COCO_val2014_000000117237.jpg -../coco/images/val2014/COCO_val2014_000000117404.jpg -../coco/images/val2014/COCO_val2014_000000117527.jpg -../coco/images/val2014/COCO_val2014_000000117718.jpg -../coco/images/val2014/COCO_val2014_000000117725.jpg -../coco/images/val2014/COCO_val2014_000000117786.jpg -../coco/images/val2014/COCO_val2014_000000117899.jpg -../coco/images/val2014/COCO_val2014_000000118401.jpg -../coco/images/val2014/COCO_val2014_000000118546.jpg -../coco/images/val2014/COCO_val2014_000000118579.jpg -../coco/images/val2014/COCO_val2014_000000118740.jpg -../coco/images/val2014/COCO_val2014_000000118788.jpg -../coco/images/val2014/COCO_val2014_000000118956.jpg -../coco/images/val2014/COCO_val2014_000000119232.jpg -../coco/images/val2014/COCO_val2014_000000119233.jpg -../coco/images/val2014/COCO_val2014_000000119445.jpg -../coco/images/val2014/COCO_val2014_000000119617.jpg -../coco/images/val2014/COCO_val2014_000000119785.jpg -../coco/images/val2014/COCO_val2014_000000119964.jpg -../coco/images/val2014/COCO_val2014_000000120248.jpg -../coco/images/val2014/COCO_val2014_000000120380.jpg -../coco/images/val2014/COCO_val2014_000000120682.jpg -../coco/images/val2014/COCO_val2014_000000120767.jpg -../coco/images/val2014/COCO_val2014_000000120935.jpg -../coco/images/val2014/COCO_val2014_000000120964.jpg -../coco/images/val2014/COCO_val2014_000000121112.jpg -../coco/images/val2014/COCO_val2014_000000121417.jpg -../coco/images/val2014/COCO_val2014_000000121503.jpg -../coco/images/val2014/COCO_val2014_000000121591.jpg -../coco/images/val2014/COCO_val2014_000000121633.jpg -../coco/images/val2014/COCO_val2014_000000121817.jpg -../coco/images/val2014/COCO_val2014_000000121826.jpg -../coco/images/val2014/COCO_val2014_000000121849.jpg -../coco/images/val2014/COCO_val2014_000000122039.jpg -../coco/images/val2014/COCO_val2014_000000122166.jpg -../coco/images/val2014/COCO_val2014_000000122213.jpg -../coco/images/val2014/COCO_val2014_000000122229.jpg -../coco/images/val2014/COCO_val2014_000000122239.jpg -../coco/images/val2014/COCO_val2014_000000122266.jpg -../coco/images/val2014/COCO_val2014_000000122300.jpg -../coco/images/val2014/COCO_val2014_000000122458.jpg -../coco/images/val2014/COCO_val2014_000000122589.jpg -../coco/images/val2014/COCO_val2014_000000122678.jpg -../coco/images/val2014/COCO_val2014_000000122747.jpg -../coco/images/val2014/COCO_val2014_000000123070.jpg -../coco/images/val2014/COCO_val2014_000000123125.jpg -../coco/images/val2014/COCO_val2014_000000123220.jpg -../coco/images/val2014/COCO_val2014_000000123244.jpg -../coco/images/val2014/COCO_val2014_000000123469.jpg -../coco/images/val2014/COCO_val2014_000000123570.jpg -../coco/images/val2014/COCO_val2014_000000123622.jpg -../coco/images/val2014/COCO_val2014_000000123627.jpg -../coco/images/val2014/COCO_val2014_000000123867.jpg -../coco/images/val2014/COCO_val2014_000000123964.jpg -../coco/images/val2014/COCO_val2014_000000124013.jpg -../coco/images/val2014/COCO_val2014_000000124018.jpg -../coco/images/val2014/COCO_val2014_000000124072.jpg -../coco/images/val2014/COCO_val2014_000000124128.jpg -../coco/images/val2014/COCO_val2014_000000124157.jpg -../coco/images/val2014/COCO_val2014_000000124243.jpg -../coco/images/val2014/COCO_val2014_000000124246.jpg -../coco/images/val2014/COCO_val2014_000000124647.jpg -../coco/images/val2014/COCO_val2014_000000125051.jpg -../coco/images/val2014/COCO_val2014_000000125070.jpg -../coco/images/val2014/COCO_val2014_000000125072.jpg -../coco/images/val2014/COCO_val2014_000000125228.jpg -../coco/images/val2014/COCO_val2014_000000125286.jpg -../coco/images/val2014/COCO_val2014_000000125322.jpg -../coco/images/val2014/COCO_val2014_000000125476.jpg -../coco/images/val2014/COCO_val2014_000000125645.jpg -../coco/images/val2014/COCO_val2014_000000125815.jpg -../coco/images/val2014/COCO_val2014_000000125983.jpg -../coco/images/val2014/COCO_val2014_000000126064.jpg -../coco/images/val2014/COCO_val2014_000000126098.jpg -../coco/images/val2014/COCO_val2014_000000126216.jpg -../coco/images/val2014/COCO_val2014_000000126229.jpg -../coco/images/val2014/COCO_val2014_000000126253.jpg -../coco/images/val2014/COCO_val2014_000000126299.jpg -../coco/images/val2014/COCO_val2014_000000126833.jpg -../coco/images/val2014/COCO_val2014_000000126895.jpg -../coco/images/val2014/COCO_val2014_000000127135.jpg -../coco/images/val2014/COCO_val2014_000000127170.jpg -../coco/images/val2014/COCO_val2014_000000127192.jpg -../coco/images/val2014/COCO_val2014_000000127476.jpg -../coco/images/val2014/COCO_val2014_000000127496.jpg -../coco/images/val2014/COCO_val2014_000000127514.jpg -../coco/images/val2014/COCO_val2014_000000127520.jpg -../coco/images/val2014/COCO_val2014_000000127576.jpg -../coco/images/val2014/COCO_val2014_000000127775.jpg -../coco/images/val2014/COCO_val2014_000000127801.jpg -../coco/images/val2014/COCO_val2014_000000127955.jpg -../coco/images/val2014/COCO_val2014_000000128119.jpg -../coco/images/val2014/COCO_val2014_000000128644.jpg -../coco/images/val2014/COCO_val2014_000000128748.jpg -../coco/images/val2014/COCO_val2014_000000128849.jpg -../coco/images/val2014/COCO_val2014_000000129062.jpg -../coco/images/val2014/COCO_val2014_000000129362.jpg -../coco/images/val2014/COCO_val2014_000000129566.jpg -../coco/images/val2014/COCO_val2014_000000129735.jpg -../coco/images/val2014/COCO_val2014_000000130076.jpg -../coco/images/val2014/COCO_val2014_000000130516.jpg -../coco/images/val2014/COCO_val2014_000000130555.jpg -../coco/images/val2014/COCO_val2014_000000130579.jpg -../coco/images/val2014/COCO_val2014_000000130613.jpg -../coco/images/val2014/COCO_val2014_000000130651.jpg -../coco/images/val2014/COCO_val2014_000000130663.jpg -../coco/images/val2014/COCO_val2014_000000130699.jpg -../coco/images/val2014/COCO_val2014_000000130712.jpg -../coco/images/val2014/COCO_val2014_000000130849.jpg -../coco/images/val2014/COCO_val2014_000000131115.jpg -../coco/images/val2014/COCO_val2014_000000131138.jpg -../coco/images/val2014/COCO_val2014_000000131207.jpg -../coco/images/val2014/COCO_val2014_000000131276.jpg -../coco/images/val2014/COCO_val2014_000000131431.jpg -../coco/images/val2014/COCO_val2014_000000132001.jpg -../coco/images/val2014/COCO_val2014_000000132042.jpg -../coco/images/val2014/COCO_val2014_000000132143.jpg -../coco/images/val2014/COCO_val2014_000000132182.jpg -../coco/images/val2014/COCO_val2014_000000132223.jpg -../coco/images/val2014/COCO_val2014_000000132272.jpg -../coco/images/val2014/COCO_val2014_000000132375.jpg -../coco/images/val2014/COCO_val2014_000000132389.jpg -../coco/images/val2014/COCO_val2014_000000132510.jpg -../coco/images/val2014/COCO_val2014_000000132540.jpg -../coco/images/val2014/COCO_val2014_000000132686.jpg -../coco/images/val2014/COCO_val2014_000000132861.jpg -../coco/images/val2014/COCO_val2014_000000132992.jpg -../coco/images/val2014/COCO_val2014_000000133233.jpg -../coco/images/val2014/COCO_val2014_000000133237.jpg -../coco/images/val2014/COCO_val2014_000000133244.jpg -../coco/images/val2014/COCO_val2014_000000133251.jpg -../coco/images/val2014/COCO_val2014_000000133279.jpg -../coco/images/val2014/COCO_val2014_000000133485.jpg -../coco/images/val2014/COCO_val2014_000000133571.jpg -../coco/images/val2014/COCO_val2014_000000133611.jpg -../coco/images/val2014/COCO_val2014_000000133999.jpg -../coco/images/val2014/COCO_val2014_000000134001.jpg -../coco/images/val2014/COCO_val2014_000000134112.jpg -../coco/images/val2014/COCO_val2014_000000134133.jpg -../coco/images/val2014/COCO_val2014_000000134167.jpg -../coco/images/val2014/COCO_val2014_000000134198.jpg -../coco/images/val2014/COCO_val2014_000000134223.jpg -../coco/images/val2014/COCO_val2014_000000134537.jpg -../coco/images/val2014/COCO_val2014_000000134542.jpg -../coco/images/val2014/COCO_val2014_000000134935.jpg -../coco/images/val2014/COCO_val2014_000000135029.jpg -../coco/images/val2014/COCO_val2014_000000135266.jpg -../coco/images/val2014/COCO_val2014_000000135356.jpg -../coco/images/val2014/COCO_val2014_000000135579.jpg -../coco/images/val2014/COCO_val2014_000000135670.jpg -../coco/images/val2014/COCO_val2014_000000135671.jpg -../coco/images/val2014/COCO_val2014_000000135785.jpg -../coco/images/val2014/COCO_val2014_000000135900.jpg -../coco/images/val2014/COCO_val2014_000000135975.jpg -../coco/images/val2014/COCO_val2014_000000136008.jpg -../coco/images/val2014/COCO_val2014_000000136181.jpg -../coco/images/val2014/COCO_val2014_000000136285.jpg -../coco/images/val2014/COCO_val2014_000000136400.jpg -../coco/images/val2014/COCO_val2014_000000136458.jpg -../coco/images/val2014/COCO_val2014_000000136501.jpg -../coco/images/val2014/COCO_val2014_000000136552.jpg -../coco/images/val2014/COCO_val2014_000000136644.jpg -../coco/images/val2014/COCO_val2014_000000136718.jpg -../coco/images/val2014/COCO_val2014_000000136740.jpg -../coco/images/val2014/COCO_val2014_000000136780.jpg -../coco/images/val2014/COCO_val2014_000000136793.jpg -../coco/images/val2014/COCO_val2014_000000136870.jpg -../coco/images/val2014/COCO_val2014_000000136915.jpg -../coco/images/val2014/COCO_val2014_000000137211.jpg -../coco/images/val2014/COCO_val2014_000000137265.jpg -../coco/images/val2014/COCO_val2014_000000137271.jpg -../coco/images/val2014/COCO_val2014_000000137294.jpg -../coco/images/val2014/COCO_val2014_000000137300.jpg -../coco/images/val2014/COCO_val2014_000000137301.jpg -../coco/images/val2014/COCO_val2014_000000137395.jpg -../coco/images/val2014/COCO_val2014_000000137451.jpg -../coco/images/val2014/COCO_val2014_000000137507.jpg -../coco/images/val2014/COCO_val2014_000000137595.jpg -../coco/images/val2014/COCO_val2014_000000137658.jpg -../coco/images/val2014/COCO_val2014_000000137678.jpg -../coco/images/val2014/COCO_val2014_000000137727.jpg -../coco/images/val2014/COCO_val2014_000000137803.jpg -../coco/images/val2014/COCO_val2014_000000137993.jpg -../coco/images/val2014/COCO_val2014_000000138070.jpg -../coco/images/val2014/COCO_val2014_000000138075.jpg -../coco/images/val2014/COCO_val2014_000000138397.jpg -../coco/images/val2014/COCO_val2014_000000138517.jpg -../coco/images/val2014/COCO_val2014_000000138573.jpg -../coco/images/val2014/COCO_val2014_000000138589.jpg -../coco/images/val2014/COCO_val2014_000000138648.jpg -../coco/images/val2014/COCO_val2014_000000138814.jpg -../coco/images/val2014/COCO_val2014_000000138937.jpg -../coco/images/val2014/COCO_val2014_000000139140.jpg -../coco/images/val2014/COCO_val2014_000000139141.jpg -../coco/images/val2014/COCO_val2014_000000139260.jpg -../coco/images/val2014/COCO_val2014_000000139294.jpg -../coco/images/val2014/COCO_val2014_000000139436.jpg -../coco/images/val2014/COCO_val2014_000000139440.jpg -../coco/images/val2014/COCO_val2014_000000139623.jpg -../coco/images/val2014/COCO_val2014_000000139871.jpg -../coco/images/val2014/COCO_val2014_000000140006.jpg -../coco/images/val2014/COCO_val2014_000000140043.jpg -../coco/images/val2014/COCO_val2014_000000140068.jpg -../coco/images/val2014/COCO_val2014_000000140087.jpg -../coco/images/val2014/COCO_val2014_000000140197.jpg -../coco/images/val2014/COCO_val2014_000000140203.jpg -../coco/images/val2014/COCO_val2014_000000140388.jpg -../coco/images/val2014/COCO_val2014_000000140661.jpg -../coco/images/val2014/COCO_val2014_000000140664.jpg -../coco/images/val2014/COCO_val2014_000000140686.jpg -../coco/images/val2014/COCO_val2014_000000140696.jpg -../coco/images/val2014/COCO_val2014_000000140987.jpg -../coco/images/val2014/COCO_val2014_000000141197.jpg -../coco/images/val2014/COCO_val2014_000000141211.jpg -../coco/images/val2014/COCO_val2014_000000141509.jpg -../coco/images/val2014/COCO_val2014_000000141517.jpg -../coco/images/val2014/COCO_val2014_000000141574.jpg -../coco/images/val2014/COCO_val2014_000000141634.jpg -../coco/images/val2014/COCO_val2014_000000141673.jpg -../coco/images/val2014/COCO_val2014_000000141760.jpg -../coco/images/val2014/COCO_val2014_000000141795.jpg -../coco/images/val2014/COCO_val2014_000000141807.jpg -../coco/images/val2014/COCO_val2014_000000141849.jpg -../coco/images/val2014/COCO_val2014_000000142092.jpg -../coco/images/val2014/COCO_val2014_000000142189.jpg -../coco/images/val2014/COCO_val2014_000000142318.jpg -../coco/images/val2014/COCO_val2014_000000142537.jpg -../coco/images/val2014/COCO_val2014_000000142941.jpg -../coco/images/val2014/COCO_val2014_000000142949.jpg -../coco/images/val2014/COCO_val2014_000000143125.jpg -../coco/images/val2014/COCO_val2014_000000143143.jpg -../coco/images/val2014/COCO_val2014_000000143174.jpg -../coco/images/val2014/COCO_val2014_000000143217.jpg -../coco/images/val2014/COCO_val2014_000000143236.jpg -../coco/images/val2014/COCO_val2014_000000143479.jpg -../coco/images/val2014/COCO_val2014_000000143644.jpg -../coco/images/val2014/COCO_val2014_000000143653.jpg -../coco/images/val2014/COCO_val2014_000000143671.jpg -../coco/images/val2014/COCO_val2014_000000143737.jpg -../coco/images/val2014/COCO_val2014_000000143769.jpg -../coco/images/val2014/COCO_val2014_000000143792.jpg -../coco/images/val2014/COCO_val2014_000000143931.jpg -../coco/images/val2014/COCO_val2014_000000144003.jpg -../coco/images/val2014/COCO_val2014_000000144058.jpg -../coco/images/val2014/COCO_val2014_000000144200.jpg -../coco/images/val2014/COCO_val2014_000000144228.jpg -../coco/images/val2014/COCO_val2014_000000144539.jpg -../coco/images/val2014/COCO_val2014_000000144985.jpg -../coco/images/val2014/COCO_val2014_000000145093.jpg -../coco/images/val2014/COCO_val2014_000000145101.jpg -../coco/images/val2014/COCO_val2014_000000145227.jpg -../coco/images/val2014/COCO_val2014_000000145295.jpg -../coco/images/val2014/COCO_val2014_000000145408.jpg -../coco/images/val2014/COCO_val2014_000000145520.jpg -../coco/images/val2014/COCO_val2014_000000145597.jpg -../coco/images/val2014/COCO_val2014_000000145620.jpg -../coco/images/val2014/COCO_val2014_000000145750.jpg -../coco/images/val2014/COCO_val2014_000000145781.jpg -../coco/images/val2014/COCO_val2014_000000145824.jpg -../coco/images/val2014/COCO_val2014_000000145831.jpg -../coco/images/val2014/COCO_val2014_000000146193.jpg -../coco/images/val2014/COCO_val2014_000000146253.jpg -../coco/images/val2014/COCO_val2014_000000146570.jpg -../coco/images/val2014/COCO_val2014_000000146614.jpg -../coco/images/val2014/COCO_val2014_000000146627.jpg -../coco/images/val2014/COCO_val2014_000000146667.jpg -../coco/images/val2014/COCO_val2014_000000146730.jpg -../coco/images/val2014/COCO_val2014_000000146830.jpg -../coco/images/val2014/COCO_val2014_000000146837.jpg -../coco/images/val2014/COCO_val2014_000000146961.jpg -../coco/images/val2014/COCO_val2014_000000147030.jpg -../coco/images/val2014/COCO_val2014_000000147058.jpg -../coco/images/val2014/COCO_val2014_000000147101.jpg -../coco/images/val2014/COCO_val2014_000000147128.jpg -../coco/images/val2014/COCO_val2014_000000147409.jpg -../coco/images/val2014/COCO_val2014_000000147556.jpg -../coco/images/val2014/COCO_val2014_000000147921.jpg -../coco/images/val2014/COCO_val2014_000000148170.jpg -../coco/images/val2014/COCO_val2014_000000148188.jpg -../coco/images/val2014/COCO_val2014_000000148458.jpg -../coco/images/val2014/COCO_val2014_000000148542.jpg -../coco/images/val2014/COCO_val2014_000000148568.jpg -../coco/images/val2014/COCO_val2014_000000148719.jpg -../coco/images/val2014/COCO_val2014_000000148792.jpg -../coco/images/val2014/COCO_val2014_000000148955.jpg -../coco/images/val2014/COCO_val2014_000000149052.jpg -../coco/images/val2014/COCO_val2014_000000149268.jpg -../coco/images/val2014/COCO_val2014_000000149329.jpg -../coco/images/val2014/COCO_val2014_000000149469.jpg -../coco/images/val2014/COCO_val2014_000000149568.jpg -../coco/images/val2014/COCO_val2014_000000149767.jpg -../coco/images/val2014/COCO_val2014_000000149890.jpg -../coco/images/val2014/COCO_val2014_000000150026.jpg -../coco/images/val2014/COCO_val2014_000000150080.jpg -../coco/images/val2014/COCO_val2014_000000150267.jpg -../coco/images/val2014/COCO_val2014_000000150301.jpg -../coco/images/val2014/COCO_val2014_000000150317.jpg -../coco/images/val2014/COCO_val2014_000000150320.jpg -../coco/images/val2014/COCO_val2014_000000150417.jpg -../coco/images/val2014/COCO_val2014_000000150538.jpg -../coco/images/val2014/COCO_val2014_000000150763.jpg -../coco/images/val2014/COCO_val2014_000000150843.jpg -../coco/images/val2014/COCO_val2014_000000150874.jpg -../coco/images/val2014/COCO_val2014_000000150888.jpg -../coco/images/val2014/COCO_val2014_000000151005.jpg -../coco/images/val2014/COCO_val2014_000000151159.jpg -../coco/images/val2014/COCO_val2014_000000151558.jpg -../coco/images/val2014/COCO_val2014_000000151585.jpg -../coco/images/val2014/COCO_val2014_000000151657.jpg -../coco/images/val2014/COCO_val2014_000000151704.jpg -../coco/images/val2014/COCO_val2014_000000151733.jpg -../coco/images/val2014/COCO_val2014_000000151790.jpg -../coco/images/val2014/COCO_val2014_000000151911.jpg -../coco/images/val2014/COCO_val2014_000000151962.jpg -../coco/images/val2014/COCO_val2014_000000151970.jpg -../coco/images/val2014/COCO_val2014_000000151988.jpg -../coco/images/val2014/COCO_val2014_000000152000.jpg -../coco/images/val2014/COCO_val2014_000000152192.jpg -../coco/images/val2014/COCO_val2014_000000152208.jpg -../coco/images/val2014/COCO_val2014_000000152245.jpg -../coco/images/val2014/COCO_val2014_000000152330.jpg -../coco/images/val2014/COCO_val2014_000000152340.jpg -../coco/images/val2014/COCO_val2014_000000152499.jpg -../coco/images/val2014/COCO_val2014_000000152751.jpg -../coco/images/val2014/COCO_val2014_000000153011.jpg -../coco/images/val2014/COCO_val2014_000000153038.jpg -../coco/images/val2014/COCO_val2014_000000153061.jpg -../coco/images/val2014/COCO_val2014_000000153094.jpg -../coco/images/val2014/COCO_val2014_000000153231.jpg -../coco/images/val2014/COCO_val2014_000000153300.jpg -../coco/images/val2014/COCO_val2014_000000153486.jpg -../coco/images/val2014/COCO_val2014_000000153520.jpg -../coco/images/val2014/COCO_val2014_000000153563.jpg -../coco/images/val2014/COCO_val2014_000000153578.jpg -../coco/images/val2014/COCO_val2014_000000153697.jpg -../coco/images/val2014/COCO_val2014_000000153822.jpg -../coco/images/val2014/COCO_val2014_000000153896.jpg -../coco/images/val2014/COCO_val2014_000000154004.jpg -../coco/images/val2014/COCO_val2014_000000154053.jpg -../coco/images/val2014/COCO_val2014_000000154095.jpg -../coco/images/val2014/COCO_val2014_000000154363.jpg -../coco/images/val2014/COCO_val2014_000000154423.jpg -../coco/images/val2014/COCO_val2014_000000154520.jpg -../coco/images/val2014/COCO_val2014_000000154705.jpg -../coco/images/val2014/COCO_val2014_000000154854.jpg -../coco/images/val2014/COCO_val2014_000000155035.jpg -../coco/images/val2014/COCO_val2014_000000155087.jpg -../coco/images/val2014/COCO_val2014_000000155131.jpg -../coco/images/val2014/COCO_val2014_000000155142.jpg -../coco/images/val2014/COCO_val2014_000000155443.jpg -../coco/images/val2014/COCO_val2014_000000155671.jpg -../coco/images/val2014/COCO_val2014_000000155811.jpg -../coco/images/val2014/COCO_val2014_000000155861.jpg -../coco/images/val2014/COCO_val2014_000000156025.jpg -../coco/images/val2014/COCO_val2014_000000156292.jpg -../coco/images/val2014/COCO_val2014_000000156466.jpg -../coco/images/val2014/COCO_val2014_000000156636.jpg -../coco/images/val2014/COCO_val2014_000000156756.jpg -../coco/images/val2014/COCO_val2014_000000156834.jpg -../coco/images/val2014/COCO_val2014_000000156924.jpg -../coco/images/val2014/COCO_val2014_000000157109.jpg -../coco/images/val2014/COCO_val2014_000000157352.jpg -../coco/images/val2014/COCO_val2014_000000157365.jpg -../coco/images/val2014/COCO_val2014_000000157465.jpg -../coco/images/val2014/COCO_val2014_000000157592.jpg -../coco/images/val2014/COCO_val2014_000000157756.jpg -../coco/images/val2014/COCO_val2014_000000157938.jpg -../coco/images/val2014/COCO_val2014_000000158227.jpg -../coco/images/val2014/COCO_val2014_000000158272.jpg -../coco/images/val2014/COCO_val2014_000000158412.jpg -../coco/images/val2014/COCO_val2014_000000158494.jpg -../coco/images/val2014/COCO_val2014_000000158563.jpg -../coco/images/val2014/COCO_val2014_000000158583.jpg -../coco/images/val2014/COCO_val2014_000000158660.jpg -../coco/images/val2014/COCO_val2014_000000158795.jpg -../coco/images/val2014/COCO_val2014_000000158999.jpg -../coco/images/val2014/COCO_val2014_000000159269.jpg -../coco/images/val2014/COCO_val2014_000000159282.jpg -../coco/images/val2014/COCO_val2014_000000159377.jpg -../coco/images/val2014/COCO_val2014_000000159458.jpg -../coco/images/val2014/COCO_val2014_000000159606.jpg -../coco/images/val2014/COCO_val2014_000000159791.jpg -../coco/images/val2014/COCO_val2014_000000159981.jpg -../coco/images/val2014/COCO_val2014_000000160025.jpg -../coco/images/val2014/COCO_val2014_000000160185.jpg -../coco/images/val2014/COCO_val2014_000000160276.jpg -../coco/images/val2014/COCO_val2014_000000160345.jpg -../coco/images/val2014/COCO_val2014_000000160556.jpg -../coco/images/val2014/COCO_val2014_000000160580.jpg -../coco/images/val2014/COCO_val2014_000000160607.jpg -../coco/images/val2014/COCO_val2014_000000160772.jpg -../coco/images/val2014/COCO_val2014_000000160828.jpg -../coco/images/val2014/COCO_val2014_000000160886.jpg -../coco/images/val2014/COCO_val2014_000000160941.jpg -../coco/images/val2014/COCO_val2014_000000161044.jpg -../coco/images/val2014/COCO_val2014_000000161060.jpg -../coco/images/val2014/COCO_val2014_000000161185.jpg -../coco/images/val2014/COCO_val2014_000000161231.jpg -../coco/images/val2014/COCO_val2014_000000161308.jpg -../coco/images/val2014/COCO_val2014_000000161781.jpg -../coco/images/val2014/COCO_val2014_000000161799.jpg -../coco/images/val2014/COCO_val2014_000000161810.jpg -../coco/images/val2014/COCO_val2014_000000161820.jpg -../coco/images/val2014/COCO_val2014_000000161861.jpg -../coco/images/val2014/COCO_val2014_000000161875.jpg -../coco/images/val2014/COCO_val2014_000000161990.jpg -../coco/images/val2014/COCO_val2014_000000162280.jpg -../coco/images/val2014/COCO_val2014_000000162445.jpg -../coco/images/val2014/COCO_val2014_000000162459.jpg -../coco/images/val2014/COCO_val2014_000000162530.jpg -../coco/images/val2014/COCO_val2014_000000162561.jpg -../coco/images/val2014/COCO_val2014_000000162580.jpg -../coco/images/val2014/COCO_val2014_000000162855.jpg -../coco/images/val2014/COCO_val2014_000000163012.jpg -../coco/images/val2014/COCO_val2014_000000163020.jpg -../coco/images/val2014/COCO_val2014_000000163138.jpg -../coco/images/val2014/COCO_val2014_000000163219.jpg -../coco/images/val2014/COCO_val2014_000000163260.jpg -../coco/images/val2014/COCO_val2014_000000163290.jpg -../coco/images/val2014/COCO_val2014_000000163316.jpg -../coco/images/val2014/COCO_val2014_000000163543.jpg -../coco/images/val2014/COCO_val2014_000000163775.jpg -../coco/images/val2014/COCO_val2014_000000164121.jpg -../coco/images/val2014/COCO_val2014_000000164366.jpg -../coco/images/val2014/COCO_val2014_000000164420.jpg -../coco/images/val2014/COCO_val2014_000000164440.jpg -../coco/images/val2014/COCO_val2014_000000164568.jpg -../coco/images/val2014/COCO_val2014_000000164835.jpg -../coco/images/val2014/COCO_val2014_000000164983.jpg -../coco/images/val2014/COCO_val2014_000000165035.jpg -../coco/images/val2014/COCO_val2014_000000165056.jpg -../coco/images/val2014/COCO_val2014_000000165157.jpg -../coco/images/val2014/COCO_val2014_000000165172.jpg -../coco/images/val2014/COCO_val2014_000000165353.jpg -../coco/images/val2014/COCO_val2014_000000165522.jpg -../coco/images/val2014/COCO_val2014_000000165752.jpg -../coco/images/val2014/COCO_val2014_000000165937.jpg -../coco/images/val2014/COCO_val2014_000000166320.jpg -../coco/images/val2014/COCO_val2014_000000166557.jpg -../coco/images/val2014/COCO_val2014_000000166565.jpg -../coco/images/val2014/COCO_val2014_000000166642.jpg -../coco/images/val2014/COCO_val2014_000000166645.jpg -../coco/images/val2014/COCO_val2014_000000166896.jpg -../coco/images/val2014/COCO_val2014_000000167044.jpg -../coco/images/val2014/COCO_val2014_000000167128.jpg -../coco/images/val2014/COCO_val2014_000000167152.jpg -../coco/images/val2014/COCO_val2014_000000167452.jpg -../coco/images/val2014/COCO_val2014_000000167583.jpg -../coco/images/val2014/COCO_val2014_000000167598.jpg -../coco/images/val2014/COCO_val2014_000000168031.jpg -../coco/images/val2014/COCO_val2014_000000168129.jpg -../coco/images/val2014/COCO_val2014_000000168353.jpg -../coco/images/val2014/COCO_val2014_000000168367.jpg -../coco/images/val2014/COCO_val2014_000000168455.jpg -../coco/images/val2014/COCO_val2014_000000168832.jpg -../coco/images/val2014/COCO_val2014_000000168837.jpg -../coco/images/val2014/COCO_val2014_000000168909.jpg -../coco/images/val2014/COCO_val2014_000000169076.jpg -../coco/images/val2014/COCO_val2014_000000169226.jpg -../coco/images/val2014/COCO_val2014_000000169505.jpg -../coco/images/val2014/COCO_val2014_000000169700.jpg -../coco/images/val2014/COCO_val2014_000000169757.jpg -../coco/images/val2014/COCO_val2014_000000169800.jpg -../coco/images/val2014/COCO_val2014_000000170015.jpg -../coco/images/val2014/COCO_val2014_000000170072.jpg -../coco/images/val2014/COCO_val2014_000000170173.jpg -../coco/images/val2014/COCO_val2014_000000170190.jpg -../coco/images/val2014/COCO_val2014_000000170194.jpg -../coco/images/val2014/COCO_val2014_000000170208.jpg -../coco/images/val2014/COCO_val2014_000000170278.jpg -../coco/images/val2014/COCO_val2014_000000170346.jpg -../coco/images/val2014/COCO_val2014_000000170401.jpg -../coco/images/val2014/COCO_val2014_000000170411.jpg -../coco/images/val2014/COCO_val2014_000000170442.jpg -../coco/images/val2014/COCO_val2014_000000170739.jpg -../coco/images/val2014/COCO_val2014_000000170813.jpg -../coco/images/val2014/COCO_val2014_000000170914.jpg -../coco/images/val2014/COCO_val2014_000000170950.jpg -../coco/images/val2014/COCO_val2014_000000170955.jpg -../coco/images/val2014/COCO_val2014_000000171335.jpg -../coco/images/val2014/COCO_val2014_000000171483.jpg -../coco/images/val2014/COCO_val2014_000000171548.jpg -../coco/images/val2014/COCO_val2014_000000171733.jpg -../coco/images/val2014/COCO_val2014_000000171942.jpg -../coco/images/val2014/COCO_val2014_000000172087.jpg -../coco/images/val2014/COCO_val2014_000000172616.jpg -../coco/images/val2014/COCO_val2014_000000172710.jpg -../coco/images/val2014/COCO_val2014_000000172877.jpg -../coco/images/val2014/COCO_val2014_000000172935.jpg -../coco/images/val2014/COCO_val2014_000000172946.jpg -../coco/images/val2014/COCO_val2014_000000173081.jpg -../coco/images/val2014/COCO_val2014_000000173166.jpg -../coco/images/val2014/COCO_val2014_000000173401.jpg -../coco/images/val2014/COCO_val2014_000000173434.jpg -../coco/images/val2014/COCO_val2014_000000173533.jpg -../coco/images/val2014/COCO_val2014_000000173565.jpg -../coco/images/val2014/COCO_val2014_000000173693.jpg -../coco/images/val2014/COCO_val2014_000000173737.jpg -../coco/images/val2014/COCO_val2014_000000173832.jpg -../coco/images/val2014/COCO_val2014_000000173897.jpg -../coco/images/val2014/COCO_val2014_000000174018.jpg -../coco/images/val2014/COCO_val2014_000000174425.jpg -../coco/images/val2014/COCO_val2014_000000174679.jpg -../coco/images/val2014/COCO_val2014_000000174690.jpg -../coco/images/val2014/COCO_val2014_000000174904.jpg -../coco/images/val2014/COCO_val2014_000000175570.jpg -../coco/images/val2014/COCO_val2014_000000175612.jpg -../coco/images/val2014/COCO_val2014_000000175825.jpg -../coco/images/val2014/COCO_val2014_000000175908.jpg -../coco/images/val2014/COCO_val2014_000000175948.jpg -../coco/images/val2014/COCO_val2014_000000176288.jpg -../coco/images/val2014/COCO_val2014_000000176362.jpg -../coco/images/val2014/COCO_val2014_000000176606.jpg -../coco/images/val2014/COCO_val2014_000000176696.jpg -../coco/images/val2014/COCO_val2014_000000176701.jpg -../coco/images/val2014/COCO_val2014_000000176744.jpg -../coco/images/val2014/COCO_val2014_000000176828.jpg -../coco/images/val2014/COCO_val2014_000000176906.jpg -../coco/images/val2014/COCO_val2014_000000177069.jpg -../coco/images/val2014/COCO_val2014_000000177149.jpg -../coco/images/val2014/COCO_val2014_000000177166.jpg -../coco/images/val2014/COCO_val2014_000000177173.jpg -../coco/images/val2014/COCO_val2014_000000177375.jpg -../coco/images/val2014/COCO_val2014_000000177452.jpg -../coco/images/val2014/COCO_val2014_000000177575.jpg -../coco/images/val2014/COCO_val2014_000000177802.jpg -../coco/images/val2014/COCO_val2014_000000177838.jpg -../coco/images/val2014/COCO_val2014_000000177856.jpg -../coco/images/val2014/COCO_val2014_000000177953.jpg -../coco/images/val2014/COCO_val2014_000000178084.jpg -../coco/images/val2014/COCO_val2014_000000178671.jpg -../coco/images/val2014/COCO_val2014_000000178810.jpg -../coco/images/val2014/COCO_val2014_000000179069.jpg -../coco/images/val2014/COCO_val2014_000000179112.jpg -../coco/images/val2014/COCO_val2014_000000179200.jpg -../coco/images/val2014/COCO_val2014_000000179229.jpg -../coco/images/val2014/COCO_val2014_000000179273.jpg -../coco/images/val2014/COCO_val2014_000000179392.jpg -../coco/images/val2014/COCO_val2014_000000179430.jpg -../coco/images/val2014/COCO_val2014_000000179487.jpg -../coco/images/val2014/COCO_val2014_000000179500.jpg -../coco/images/val2014/COCO_val2014_000000179578.jpg -../coco/images/val2014/COCO_val2014_000000179611.jpg -../coco/images/val2014/COCO_val2014_000000179642.jpg -../coco/images/val2014/COCO_val2014_000000179765.jpg -../coco/images/val2014/COCO_val2014_000000179930.jpg -../coco/images/val2014/COCO_val2014_000000180011.jpg -../coco/images/val2014/COCO_val2014_000000180154.jpg -../coco/images/val2014/COCO_val2014_000000180289.jpg -../coco/images/val2014/COCO_val2014_000000180479.jpg -../coco/images/val2014/COCO_val2014_000000180541.jpg -../coco/images/val2014/COCO_val2014_000000180830.jpg -../coco/images/val2014/COCO_val2014_000000180917.jpg -../coco/images/val2014/COCO_val2014_000000181256.jpg -../coco/images/val2014/COCO_val2014_000000181296.jpg -../coco/images/val2014/COCO_val2014_000000181303.jpg -../coco/images/val2014/COCO_val2014_000000181359.jpg -../coco/images/val2014/COCO_val2014_000000181449.jpg -../coco/images/val2014/COCO_val2014_000000181485.jpg -../coco/images/val2014/COCO_val2014_000000181572.jpg -../coco/images/val2014/COCO_val2014_000000181586.jpg -../coco/images/val2014/COCO_val2014_000000181714.jpg -../coco/images/val2014/COCO_val2014_000000181745.jpg -../coco/images/val2014/COCO_val2014_000000181969.jpg -../coco/images/val2014/COCO_val2014_000000182021.jpg -../coco/images/val2014/COCO_val2014_000000182155.jpg -../coco/images/val2014/COCO_val2014_000000182240.jpg -../coco/images/val2014/COCO_val2014_000000182362.jpg -../coco/images/val2014/COCO_val2014_000000182369.jpg -../coco/images/val2014/COCO_val2014_000000182398.jpg -../coco/images/val2014/COCO_val2014_000000182483.jpg -../coco/images/val2014/COCO_val2014_000000182523.jpg -../coco/images/val2014/COCO_val2014_000000182681.jpg -../coco/images/val2014/COCO_val2014_000000182874.jpg -../coco/images/val2014/COCO_val2014_000000183187.jpg -../coco/images/val2014/COCO_val2014_000000183199.jpg -../coco/images/val2014/COCO_val2014_000000183217.jpg -../coco/images/val2014/COCO_val2014_000000183348.jpg -../coco/images/val2014/COCO_val2014_000000183359.jpg -../coco/images/val2014/COCO_val2014_000000183364.jpg -../coco/images/val2014/COCO_val2014_000000183469.jpg -../coco/images/val2014/COCO_val2014_000000183571.jpg -../coco/images/val2014/COCO_val2014_000000183701.jpg -../coco/images/val2014/COCO_val2014_000000183716.jpg -../coco/images/val2014/COCO_val2014_000000183843.jpg -../coco/images/val2014/COCO_val2014_000000184276.jpg -../coco/images/val2014/COCO_val2014_000000184359.jpg -../coco/images/val2014/COCO_val2014_000000184590.jpg -../coco/images/val2014/COCO_val2014_000000185095.jpg -../coco/images/val2014/COCO_val2014_000000185156.jpg -../coco/images/val2014/COCO_val2014_000000185303.jpg -../coco/images/val2014/COCO_val2014_000000185366.jpg -../coco/images/val2014/COCO_val2014_000000185397.jpg -../coco/images/val2014/COCO_val2014_000000185472.jpg -../coco/images/val2014/COCO_val2014_000000185559.jpg -../coco/images/val2014/COCO_val2014_000000185620.jpg -../coco/images/val2014/COCO_val2014_000000185621.jpg -../coco/images/val2014/COCO_val2014_000000185697.jpg -../coco/images/val2014/COCO_val2014_000000185721.jpg -../coco/images/val2014/COCO_val2014_000000185756.jpg -../coco/images/val2014/COCO_val2014_000000185802.jpg -../coco/images/val2014/COCO_val2014_000000185890.jpg -../coco/images/val2014/COCO_val2014_000000185916.jpg -../coco/images/val2014/COCO_val2014_000000185988.jpg -../coco/images/val2014/COCO_val2014_000000186079.jpg -../coco/images/val2014/COCO_val2014_000000186125.jpg -../coco/images/val2014/COCO_val2014_000000186413.jpg -../coco/images/val2014/COCO_val2014_000000186422.jpg -../coco/images/val2014/COCO_val2014_000000186637.jpg -../coco/images/val2014/COCO_val2014_000000186788.jpg -../coco/images/val2014/COCO_val2014_000000186873.jpg -../coco/images/val2014/COCO_val2014_000000186977.jpg -../coco/images/val2014/COCO_val2014_000000186991.jpg -../coco/images/val2014/COCO_val2014_000000187036.jpg -../coco/images/val2014/COCO_val2014_000000187054.jpg -../coco/images/val2014/COCO_val2014_000000187199.jpg -../coco/images/val2014/COCO_val2014_000000187236.jpg -../coco/images/val2014/COCO_val2014_000000187249.jpg -../coco/images/val2014/COCO_val2014_000000187349.jpg -../coco/images/val2014/COCO_val2014_000000187424.jpg -../coco/images/val2014/COCO_val2014_000000187513.jpg -../coco/images/val2014/COCO_val2014_000000187533.jpg -../coco/images/val2014/COCO_val2014_000000188084.jpg -../coco/images/val2014/COCO_val2014_000000188109.jpg -../coco/images/val2014/COCO_val2014_000000188132.jpg -../coco/images/val2014/COCO_val2014_000000188311.jpg -../coco/images/val2014/COCO_val2014_000000188346.jpg -../coco/images/val2014/COCO_val2014_000000188439.jpg -../coco/images/val2014/COCO_val2014_000000188460.jpg -../coco/images/val2014/COCO_val2014_000000188534.jpg -../coco/images/val2014/COCO_val2014_000000188592.jpg -../coco/images/val2014/COCO_val2014_000000188616.jpg -../coco/images/val2014/COCO_val2014_000000188667.jpg -../coco/images/val2014/COCO_val2014_000000188852.jpg -../coco/images/val2014/COCO_val2014_000000188918.jpg -../coco/images/val2014/COCO_val2014_000000188948.jpg -../coco/images/val2014/COCO_val2014_000000189067.jpg -../coco/images/val2014/COCO_val2014_000000189078.jpg -../coco/images/val2014/COCO_val2014_000000189203.jpg -../coco/images/val2014/COCO_val2014_000000189305.jpg -../coco/images/val2014/COCO_val2014_000000189365.jpg -../coco/images/val2014/COCO_val2014_000000189368.jpg -../coco/images/val2014/COCO_val2014_000000189371.jpg -../coco/images/val2014/COCO_val2014_000000189427.jpg -../coco/images/val2014/COCO_val2014_000000189436.jpg -../coco/images/val2014/COCO_val2014_000000189566.jpg -../coco/images/val2014/COCO_val2014_000000189634.jpg -../coco/images/val2014/COCO_val2014_000000189714.jpg -../coco/images/val2014/COCO_val2014_000000190204.jpg -../coco/images/val2014/COCO_val2014_000000190395.jpg -../coco/images/val2014/COCO_val2014_000000190432.jpg -../coco/images/val2014/COCO_val2014_000000190441.jpg -../coco/images/val2014/COCO_val2014_000000190546.jpg -../coco/images/val2014/COCO_val2014_000000190595.jpg -../coco/images/val2014/COCO_val2014_000000190700.jpg -../coco/images/val2014/COCO_val2014_000000190753.jpg -../coco/images/val2014/COCO_val2014_000000190767.jpg -../coco/images/val2014/COCO_val2014_000000190776.jpg -../coco/images/val2014/COCO_val2014_000000190841.jpg -../coco/images/val2014/COCO_val2014_000000190853.jpg -../coco/images/val2014/COCO_val2014_000000191013.jpg -../coco/images/val2014/COCO_val2014_000000191096.jpg -../coco/images/val2014/COCO_val2014_000000191117.jpg -../coco/images/val2014/COCO_val2014_000000191169.jpg -../coco/images/val2014/COCO_val2014_000000191296.jpg -../coco/images/val2014/COCO_val2014_000000191300.jpg -../coco/images/val2014/COCO_val2014_000000191390.jpg -../coco/images/val2014/COCO_val2014_000000191533.jpg -../coco/images/val2014/COCO_val2014_000000191761.jpg -../coco/images/val2014/COCO_val2014_000000191919.jpg -../coco/images/val2014/COCO_val2014_000000192007.jpg -../coco/images/val2014/COCO_val2014_000000192153.jpg -../coco/images/val2014/COCO_val2014_000000192154.jpg -../coco/images/val2014/COCO_val2014_000000192212.jpg -../coco/images/val2014/COCO_val2014_000000192440.jpg -../coco/images/val2014/COCO_val2014_000000192479.jpg -../coco/images/val2014/COCO_val2014_000000192607.jpg -../coco/images/val2014/COCO_val2014_000000192716.jpg -../coco/images/val2014/COCO_val2014_000000192730.jpg -../coco/images/val2014/COCO_val2014_000000192788.jpg -../coco/images/val2014/COCO_val2014_000000192817.jpg -../coco/images/val2014/COCO_val2014_000000192834.jpg -../coco/images/val2014/COCO_val2014_000000193015.jpg -../coco/images/val2014/COCO_val2014_000000193108.jpg -../coco/images/val2014/COCO_val2014_000000193245.jpg -../coco/images/val2014/COCO_val2014_000000193271.jpg -../coco/images/val2014/COCO_val2014_000000193332.jpg -../coco/images/val2014/COCO_val2014_000000193380.jpg -../coco/images/val2014/COCO_val2014_000000193405.jpg -../coco/images/val2014/COCO_val2014_000000193661.jpg -../coco/images/val2014/COCO_val2014_000000193798.jpg -../coco/images/val2014/COCO_val2014_000000193881.jpg -../coco/images/val2014/COCO_val2014_000000194158.jpg -../coco/images/val2014/COCO_val2014_000000194306.jpg -../coco/images/val2014/COCO_val2014_000000194704.jpg -../coco/images/val2014/COCO_val2014_000000194790.jpg -../coco/images/val2014/COCO_val2014_000000194875.jpg -../coco/images/val2014/COCO_val2014_000000195079.jpg -../coco/images/val2014/COCO_val2014_000000195267.jpg -../coco/images/val2014/COCO_val2014_000000195271.jpg -../coco/images/val2014/COCO_val2014_000000195281.jpg -../coco/images/val2014/COCO_val2014_000000195798.jpg -../coco/images/val2014/COCO_val2014_000000195851.jpg -../coco/images/val2014/COCO_val2014_000000195897.jpg -../coco/images/val2014/COCO_val2014_000000196085.jpg -../coco/images/val2014/COCO_val2014_000000196141.jpg -../coco/images/val2014/COCO_val2014_000000196295.jpg -../coco/images/val2014/COCO_val2014_000000196311.jpg -../coco/images/val2014/COCO_val2014_000000196313.jpg -../coco/images/val2014/COCO_val2014_000000196355.jpg -../coco/images/val2014/COCO_val2014_000000196415.jpg -../coco/images/val2014/COCO_val2014_000000196453.jpg -../coco/images/val2014/COCO_val2014_000000196681.jpg -../coco/images/val2014/COCO_val2014_000000196754.jpg -../coco/images/val2014/COCO_val2014_000000196798.jpg -../coco/images/val2014/COCO_val2014_000000196852.jpg -../coco/images/val2014/COCO_val2014_000000197022.jpg -../coco/images/val2014/COCO_val2014_000000197097.jpg -../coco/images/val2014/COCO_val2014_000000197191.jpg -../coco/images/val2014/COCO_val2014_000000197266.jpg -../coco/images/val2014/COCO_val2014_000000197278.jpg -../coco/images/val2014/COCO_val2014_000000197528.jpg -../coco/images/val2014/COCO_val2014_000000197609.jpg -../coco/images/val2014/COCO_val2014_000000197652.jpg -../coco/images/val2014/COCO_val2014_000000197683.jpg -../coco/images/val2014/COCO_val2014_000000197796.jpg -../coco/images/val2014/COCO_val2014_000000197918.jpg -../coco/images/val2014/COCO_val2014_000000198075.jpg -../coco/images/val2014/COCO_val2014_000000198139.jpg -../coco/images/val2014/COCO_val2014_000000198223.jpg -../coco/images/val2014/COCO_val2014_000000198367.jpg -../coco/images/val2014/COCO_val2014_000000198464.jpg -../coco/images/val2014/COCO_val2014_000000198495.jpg -../coco/images/val2014/COCO_val2014_000000198641.jpg -../coco/images/val2014/COCO_val2014_000000198645.jpg -../coco/images/val2014/COCO_val2014_000000198752.jpg -../coco/images/val2014/COCO_val2014_000000198805.jpg -../coco/images/val2014/COCO_val2014_000000198811.jpg -../coco/images/val2014/COCO_val2014_000000199125.jpg -../coco/images/val2014/COCO_val2014_000000199203.jpg -../coco/images/val2014/COCO_val2014_000000199358.jpg -../coco/images/val2014/COCO_val2014_000000199389.jpg -../coco/images/val2014/COCO_val2014_000000199437.jpg -../coco/images/val2014/COCO_val2014_000000199449.jpg -../coco/images/val2014/COCO_val2014_000000199481.jpg -../coco/images/val2014/COCO_val2014_000000199575.jpg -../coco/images/val2014/COCO_val2014_000000199602.jpg -../coco/images/val2014/COCO_val2014_000000199771.jpg -../coco/images/val2014/COCO_val2014_000000199951.jpg -../coco/images/val2014/COCO_val2014_000000200109.jpg -../coco/images/val2014/COCO_val2014_000000200252.jpg -../coco/images/val2014/COCO_val2014_000000200267.jpg -../coco/images/val2014/COCO_val2014_000000200296.jpg -../coco/images/val2014/COCO_val2014_000000200457.jpg -../coco/images/val2014/COCO_val2014_000000200572.jpg -../coco/images/val2014/COCO_val2014_000000200638.jpg -../coco/images/val2014/COCO_val2014_000000200667.jpg -../coco/images/val2014/COCO_val2014_000000200703.jpg -../coco/images/val2014/COCO_val2014_000000200720.jpg -../coco/images/val2014/COCO_val2014_000000200725.jpg -../coco/images/val2014/COCO_val2014_000000200739.jpg -../coco/images/val2014/COCO_val2014_000000201111.jpg -../coco/images/val2014/COCO_val2014_000000201220.jpg -../coco/images/val2014/COCO_val2014_000000201348.jpg -../coco/images/val2014/COCO_val2014_000000201452.jpg -../coco/images/val2014/COCO_val2014_000000201646.jpg -../coco/images/val2014/COCO_val2014_000000201676.jpg -../coco/images/val2014/COCO_val2014_000000201918.jpg -../coco/images/val2014/COCO_val2014_000000201934.jpg -../coco/images/val2014/COCO_val2014_000000201970.jpg -../coco/images/val2014/COCO_val2014_000000202138.jpg -../coco/images/val2014/COCO_val2014_000000202339.jpg -../coco/images/val2014/COCO_val2014_000000202503.jpg -../coco/images/val2014/COCO_val2014_000000202658.jpg -../coco/images/val2014/COCO_val2014_000000202797.jpg -../coco/images/val2014/COCO_val2014_000000202799.jpg -../coco/images/val2014/COCO_val2014_000000202944.jpg -../coco/images/val2014/COCO_val2014_000000203061.jpg -../coco/images/val2014/COCO_val2014_000000203095.jpg -../coco/images/val2014/COCO_val2014_000000203299.jpg -../coco/images/val2014/COCO_val2014_000000203382.jpg -../coco/images/val2014/COCO_val2014_000000203416.jpg -../coco/images/val2014/COCO_val2014_000000203460.jpg -../coco/images/val2014/COCO_val2014_000000203483.jpg -../coco/images/val2014/COCO_val2014_000000203661.jpg -../coco/images/val2014/COCO_val2014_000000203845.jpg -../coco/images/val2014/COCO_val2014_000000203846.jpg -../coco/images/val2014/COCO_val2014_000000204036.jpg -../coco/images/val2014/COCO_val2014_000000204098.jpg -../coco/images/val2014/COCO_val2014_000000204232.jpg -../coco/images/val2014/COCO_val2014_000000204256.jpg -../coco/images/val2014/COCO_val2014_000000204360.jpg -../coco/images/val2014/COCO_val2014_000000204448.jpg -../coco/images/val2014/COCO_val2014_000000204502.jpg -../coco/images/val2014/COCO_val2014_000000204935.jpg -../coco/images/val2014/COCO_val2014_000000205222.jpg -../coco/images/val2014/COCO_val2014_000000205251.jpg -../coco/images/val2014/COCO_val2014_000000205258.jpg -../coco/images/val2014/COCO_val2014_000000205289.jpg -../coco/images/val2014/COCO_val2014_000000205300.jpg -../coco/images/val2014/COCO_val2014_000000205409.jpg -../coco/images/val2014/COCO_val2014_000000205594.jpg -../coco/images/val2014/COCO_val2014_000000205605.jpg -../coco/images/val2014/COCO_val2014_000000205676.jpg -../coco/images/val2014/COCO_val2014_000000205776.jpg -../coco/images/val2014/COCO_val2014_000000205782.jpg -../coco/images/val2014/COCO_val2014_000000205911.jpg -../coco/images/val2014/COCO_val2014_000000206025.jpg -../coco/images/val2014/COCO_val2014_000000206027.jpg -../coco/images/val2014/COCO_val2014_000000206135.jpg -../coco/images/val2014/COCO_val2014_000000206271.jpg -../coco/images/val2014/COCO_val2014_000000206411.jpg -../coco/images/val2014/COCO_val2014_000000206770.jpg -../coco/images/val2014/COCO_val2014_000000206958.jpg -../coco/images/val2014/COCO_val2014_000000207041.jpg -../coco/images/val2014/COCO_val2014_000000207059.jpg -../coco/images/val2014/COCO_val2014_000000207060.jpg -../coco/images/val2014/COCO_val2014_000000207180.jpg -../coco/images/val2014/COCO_val2014_000000207205.jpg -../coco/images/val2014/COCO_val2014_000000207323.jpg -../coco/images/val2014/COCO_val2014_000000207507.jpg -../coco/images/val2014/COCO_val2014_000000207509.jpg -../coco/images/val2014/COCO_val2014_000000207585.jpg -../coco/images/val2014/COCO_val2014_000000207634.jpg -../coco/images/val2014/COCO_val2014_000000207670.jpg -../coco/images/val2014/COCO_val2014_000000207898.jpg -../coco/images/val2014/COCO_val2014_000000207925.jpg -../coco/images/val2014/COCO_val2014_000000208012.jpg -../coco/images/val2014/COCO_val2014_000000208283.jpg -../coco/images/val2014/COCO_val2014_000000208311.jpg -../coco/images/val2014/COCO_val2014_000000208376.jpg -../coco/images/val2014/COCO_val2014_000000208417.jpg -../coco/images/val2014/COCO_val2014_000000208524.jpg -../coco/images/val2014/COCO_val2014_000000208663.jpg -../coco/images/val2014/COCO_val2014_000000208793.jpg -../coco/images/val2014/COCO_val2014_000000209007.jpg -../coco/images/val2014/COCO_val2014_000000209015.jpg -../coco/images/val2014/COCO_val2014_000000209142.jpg -../coco/images/val2014/COCO_val2014_000000209162.jpg -../coco/images/val2014/COCO_val2014_000000209286.jpg -../coco/images/val2014/COCO_val2014_000000209441.jpg -../coco/images/val2014/COCO_val2014_000000209530.jpg -../coco/images/val2014/COCO_val2014_000000209733.jpg -../coco/images/val2014/COCO_val2014_000000209773.jpg -../coco/images/val2014/COCO_val2014_000000209808.jpg -../coco/images/val2014/COCO_val2014_000000209864.jpg -../coco/images/val2014/COCO_val2014_000000210299.jpg -../coco/images/val2014/COCO_val2014_000000210374.jpg -../coco/images/val2014/COCO_val2014_000000210408.jpg -../coco/images/val2014/COCO_val2014_000000210439.jpg -../coco/images/val2014/COCO_val2014_000000210457.jpg -../coco/images/val2014/COCO_val2014_000000210458.jpg -../coco/images/val2014/COCO_val2014_000000210520.jpg -../coco/images/val2014/COCO_val2014_000000210671.jpg -../coco/images/val2014/COCO_val2014_000000210749.jpg -../coco/images/val2014/COCO_val2014_000000210855.jpg -../coco/images/val2014/COCO_val2014_000000210883.jpg -../coco/images/val2014/COCO_val2014_000000211063.jpg -../coco/images/val2014/COCO_val2014_000000211163.jpg -../coco/images/val2014/COCO_val2014_000000211186.jpg -../coco/images/val2014/COCO_val2014_000000211192.jpg -../coco/images/val2014/COCO_val2014_000000211215.jpg -../coco/images/val2014/COCO_val2014_000000211498.jpg -../coco/images/val2014/COCO_val2014_000000211775.jpg -../coco/images/val2014/COCO_val2014_000000212054.jpg -../coco/images/val2014/COCO_val2014_000000212072.jpg -../coco/images/val2014/COCO_val2014_000000212077.jpg -../coco/images/val2014/COCO_val2014_000000212080.jpg -../coco/images/val2014/COCO_val2014_000000212166.jpg -../coco/images/val2014/COCO_val2014_000000212346.jpg -../coco/images/val2014/COCO_val2014_000000212470.jpg -../coco/images/val2014/COCO_val2014_000000212559.jpg -../coco/images/val2014/COCO_val2014_000000212647.jpg -../coco/images/val2014/COCO_val2014_000000212688.jpg -../coco/images/val2014/COCO_val2014_000000212739.jpg -../coco/images/val2014/COCO_val2014_000000212817.jpg -../coco/images/val2014/COCO_val2014_000000213033.jpg -../coco/images/val2014/COCO_val2014_000000213224.jpg -../coco/images/val2014/COCO_val2014_000000213359.jpg -../coco/images/val2014/COCO_val2014_000000213361.jpg -../coco/images/val2014/COCO_val2014_000000213434.jpg -../coco/images/val2014/COCO_val2014_000000213758.jpg -../coco/images/val2014/COCO_val2014_000000213830.jpg -../coco/images/val2014/COCO_val2014_000000213843.jpg -../coco/images/val2014/COCO_val2014_000000213961.jpg -../coco/images/val2014/COCO_val2014_000000214274.jpg -../coco/images/val2014/COCO_val2014_000000214306.jpg -../coco/images/val2014/COCO_val2014_000000214853.jpg -../coco/images/val2014/COCO_val2014_000000214961.jpg -../coco/images/val2014/COCO_val2014_000000215062.jpg -../coco/images/val2014/COCO_val2014_000000215255.jpg -../coco/images/val2014/COCO_val2014_000000215259.jpg -../coco/images/val2014/COCO_val2014_000000215394.jpg -../coco/images/val2014/COCO_val2014_000000215408.jpg -../coco/images/val2014/COCO_val2014_000000215471.jpg -../coco/images/val2014/COCO_val2014_000000215554.jpg -../coco/images/val2014/COCO_val2014_000000215565.jpg -../coco/images/val2014/COCO_val2014_000000215579.jpg -../coco/images/val2014/COCO_val2014_000000215708.jpg -../coco/images/val2014/COCO_val2014_000000215812.jpg -../coco/images/val2014/COCO_val2014_000000215826.jpg -../coco/images/val2014/COCO_val2014_000000216096.jpg -../coco/images/val2014/COCO_val2014_000000216198.jpg -../coco/images/val2014/COCO_val2014_000000216235.jpg -../coco/images/val2014/COCO_val2014_000000216581.jpg -../coco/images/val2014/COCO_val2014_000000216710.jpg -../coco/images/val2014/COCO_val2014_000000216837.jpg -../coco/images/val2014/COCO_val2014_000000216841.jpg -../coco/images/val2014/COCO_val2014_000000217016.jpg -../coco/images/val2014/COCO_val2014_000000217269.jpg -../coco/images/val2014/COCO_val2014_000000217285.jpg -../coco/images/val2014/COCO_val2014_000000217303.jpg -../coco/images/val2014/COCO_val2014_000000217562.jpg -../coco/images/val2014/COCO_val2014_000000217951.jpg -../coco/images/val2014/COCO_val2014_000000218220.jpg -../coco/images/val2014/COCO_val2014_000000218310.jpg -../coco/images/val2014/COCO_val2014_000000218404.jpg -../coco/images/val2014/COCO_val2014_000000218439.jpg -../coco/images/val2014/COCO_val2014_000000218678.jpg -../coco/images/val2014/COCO_val2014_000000218687.jpg -../coco/images/val2014/COCO_val2014_000000218926.jpg -../coco/images/val2014/COCO_val2014_000000218947.jpg -../coco/images/val2014/COCO_val2014_000000219075.jpg -../coco/images/val2014/COCO_val2014_000000219170.jpg -../coco/images/val2014/COCO_val2014_000000219393.jpg -../coco/images/val2014/COCO_val2014_000000219514.jpg -../coco/images/val2014/COCO_val2014_000000219578.jpg -../coco/images/val2014/COCO_val2014_000000219657.jpg -../coco/images/val2014/COCO_val2014_000000220041.jpg -../coco/images/val2014/COCO_val2014_000000220182.jpg -../coco/images/val2014/COCO_val2014_000000220215.jpg -../coco/images/val2014/COCO_val2014_000000220307.jpg -../coco/images/val2014/COCO_val2014_000000220511.jpg -../coco/images/val2014/COCO_val2014_000000220808.jpg -../coco/images/val2014/COCO_val2014_000000221000.jpg -../coco/images/val2014/COCO_val2014_000000221094.jpg -../coco/images/val2014/COCO_val2014_000000221155.jpg -../coco/images/val2014/COCO_val2014_000000221303.jpg -../coco/images/val2014/COCO_val2014_000000221561.jpg -../coco/images/val2014/COCO_val2014_000000221605.jpg -../coco/images/val2014/COCO_val2014_000000221620.jpg -../coco/images/val2014/COCO_val2014_000000221669.jpg -../coco/images/val2014/COCO_val2014_000000221708.jpg -../coco/images/val2014/COCO_val2014_000000221882.jpg -../coco/images/val2014/COCO_val2014_000000222043.jpg -../coco/images/val2014/COCO_val2014_000000222317.jpg -../coco/images/val2014/COCO_val2014_000000222407.jpg -../coco/images/val2014/COCO_val2014_000000222494.jpg -../coco/images/val2014/COCO_val2014_000000222863.jpg -../coco/images/val2014/COCO_val2014_000000222903.jpg -../coco/images/val2014/COCO_val2014_000000223032.jpg -../coco/images/val2014/COCO_val2014_000000223276.jpg -../coco/images/val2014/COCO_val2014_000000223289.jpg -../coco/images/val2014/COCO_val2014_000000223314.jpg -../coco/images/val2014/COCO_val2014_000000223414.jpg -../coco/images/val2014/COCO_val2014_000000223747.jpg -../coco/images/val2014/COCO_val2014_000000223777.jpg -../coco/images/val2014/COCO_val2014_000000223930.jpg -../coco/images/val2014/COCO_val2014_000000224093.jpg -../coco/images/val2014/COCO_val2014_000000224111.jpg -../coco/images/val2014/COCO_val2014_000000224222.jpg -../coco/images/val2014/COCO_val2014_000000224238.jpg -../coco/images/val2014/COCO_val2014_000000224523.jpg -../coco/images/val2014/COCO_val2014_000000224693.jpg -../coco/images/val2014/COCO_val2014_000000224724.jpg -../coco/images/val2014/COCO_val2014_000000224742.jpg -../coco/images/val2014/COCO_val2014_000000224848.jpg -../coco/images/val2014/COCO_val2014_000000225175.jpg -../coco/images/val2014/COCO_val2014_000000225312.jpg -../coco/images/val2014/COCO_val2014_000000225518.jpg -../coco/images/val2014/COCO_val2014_000000225537.jpg -../coco/images/val2014/COCO_val2014_000000225603.jpg -../coco/images/val2014/COCO_val2014_000000225867.jpg -../coco/images/val2014/COCO_val2014_000000225916.jpg -../coco/images/val2014/COCO_val2014_000000226154.jpg -../coco/images/val2014/COCO_val2014_000000226220.jpg -../coco/images/val2014/COCO_val2014_000000226408.jpg -../coco/images/val2014/COCO_val2014_000000226417.jpg -../coco/images/val2014/COCO_val2014_000000226419.jpg -../coco/images/val2014/COCO_val2014_000000226496.jpg -../coco/images/val2014/COCO_val2014_000000226498.jpg -../coco/images/val2014/COCO_val2014_000000226571.jpg -../coco/images/val2014/COCO_val2014_000000226579.jpg -../coco/images/val2014/COCO_val2014_000000226588.jpg -../coco/images/val2014/COCO_val2014_000000226662.jpg -../coco/images/val2014/COCO_val2014_000000226744.jpg -../coco/images/val2014/COCO_val2014_000000226848.jpg -../coco/images/val2014/COCO_val2014_000000226917.jpg -../coco/images/val2014/COCO_val2014_000000226967.jpg -../coco/images/val2014/COCO_val2014_000000227032.jpg -../coco/images/val2014/COCO_val2014_000000227048.jpg -../coco/images/val2014/COCO_val2014_000000227125.jpg -../coco/images/val2014/COCO_val2014_000000227220.jpg -../coco/images/val2014/COCO_val2014_000000227227.jpg -../coco/images/val2014/COCO_val2014_000000227413.jpg -../coco/images/val2014/COCO_val2014_000000227468.jpg -../coco/images/val2014/COCO_val2014_000000227511.jpg -../coco/images/val2014/COCO_val2014_000000227656.jpg -../coco/images/val2014/COCO_val2014_000000227709.jpg -../coco/images/val2014/COCO_val2014_000000227741.jpg -../coco/images/val2014/COCO_val2014_000000228011.jpg -../coco/images/val2014/COCO_val2014_000000228013.jpg -../coco/images/val2014/COCO_val2014_000000228197.jpg -../coco/images/val2014/COCO_val2014_000000228558.jpg -../coco/images/val2014/COCO_val2014_000000228746.jpg -../coco/images/val2014/COCO_val2014_000000228771.jpg -../coco/images/val2014/COCO_val2014_000000229000.jpg -../coco/images/val2014/COCO_val2014_000000229221.jpg -../coco/images/val2014/COCO_val2014_000000229234.jpg -../coco/images/val2014/COCO_val2014_000000229286.jpg -../coco/images/val2014/COCO_val2014_000000229383.jpg -../coco/images/val2014/COCO_val2014_000000229387.jpg -../coco/images/val2014/COCO_val2014_000000229553.jpg -../coco/images/val2014/COCO_val2014_000000229631.jpg -../coco/images/val2014/COCO_val2014_000000229713.jpg -../coco/images/val2014/COCO_val2014_000000230040.jpg -../coco/images/val2014/COCO_val2014_000000230265.jpg -../coco/images/val2014/COCO_val2014_000000230432.jpg -../coco/images/val2014/COCO_val2014_000000230450.jpg -../coco/images/val2014/COCO_val2014_000000230454.jpg -../coco/images/val2014/COCO_val2014_000000230615.jpg -../coco/images/val2014/COCO_val2014_000000230619.jpg -../coco/images/val2014/COCO_val2014_000000230679.jpg -../coco/images/val2014/COCO_val2014_000000230701.jpg -../coco/images/val2014/COCO_val2014_000000230739.jpg -../coco/images/val2014/COCO_val2014_000000230780.jpg -../coco/images/val2014/COCO_val2014_000000230964.jpg -../coco/images/val2014/COCO_val2014_000000231364.jpg -../coco/images/val2014/COCO_val2014_000000231450.jpg -../coco/images/val2014/COCO_val2014_000000231508.jpg -../coco/images/val2014/COCO_val2014_000000231991.jpg -../coco/images/val2014/COCO_val2014_000000232073.jpg -../coco/images/val2014/COCO_val2014_000000232088.jpg -../coco/images/val2014/COCO_val2014_000000232121.jpg -../coco/images/val2014/COCO_val2014_000000232287.jpg -../coco/images/val2014/COCO_val2014_000000232453.jpg -../coco/images/val2014/COCO_val2014_000000232597.jpg -../coco/images/val2014/COCO_val2014_000000232610.jpg -../coco/images/val2014/COCO_val2014_000000232865.jpg -../coco/images/val2014/COCO_val2014_000000233042.jpg -../coco/images/val2014/COCO_val2014_000000233090.jpg -../coco/images/val2014/COCO_val2014_000000233305.jpg -../coco/images/val2014/COCO_val2014_000000233315.jpg -../coco/images/val2014/COCO_val2014_000000233327.jpg -../coco/images/val2014/COCO_val2014_000000233376.jpg -../coco/images/val2014/COCO_val2014_000000233446.jpg -../coco/images/val2014/COCO_val2014_000000233556.jpg -../coco/images/val2014/COCO_val2014_000000233567.jpg -../coco/images/val2014/COCO_val2014_000000233727.jpg -../coco/images/val2014/COCO_val2014_000000233919.jpg -../coco/images/val2014/COCO_val2014_000000233950.jpg -../coco/images/val2014/COCO_val2014_000000233961.jpg -../coco/images/val2014/COCO_val2014_000000233968.jpg -../coco/images/val2014/COCO_val2014_000000234182.jpg -../coco/images/val2014/COCO_val2014_000000234251.jpg -../coco/images/val2014/COCO_val2014_000000234370.jpg -../coco/images/val2014/COCO_val2014_000000234463.jpg -../coco/images/val2014/COCO_val2014_000000234766.jpg -../coco/images/val2014/COCO_val2014_000000234779.jpg -../coco/images/val2014/COCO_val2014_000000234928.jpg -../coco/images/val2014/COCO_val2014_000000235124.jpg -../coco/images/val2014/COCO_val2014_000000235239.jpg -../coco/images/val2014/COCO_val2014_000000235380.jpg -../coco/images/val2014/COCO_val2014_000000235575.jpg -../coco/images/val2014/COCO_val2014_000000235788.jpg -../coco/images/val2014/COCO_val2014_000000235790.jpg -../coco/images/val2014/COCO_val2014_000000235791.jpg -../coco/images/val2014/COCO_val2014_000000235839.jpg -../coco/images/val2014/COCO_val2014_000000235933.jpg -../coco/images/val2014/COCO_val2014_000000236010.jpg -../coco/images/val2014/COCO_val2014_000000236068.jpg -../coco/images/val2014/COCO_val2014_000000236323.jpg -../coco/images/val2014/COCO_val2014_000000236535.jpg -../coco/images/val2014/COCO_val2014_000000236714.jpg -../coco/images/val2014/COCO_val2014_000000236766.jpg -../coco/images/val2014/COCO_val2014_000000236874.jpg -../coco/images/val2014/COCO_val2014_000000236945.jpg -../coco/images/val2014/COCO_val2014_000000236951.jpg -../coco/images/val2014/COCO_val2014_000000236985.jpg -../coco/images/val2014/COCO_val2014_000000237230.jpg -../coco/images/val2014/COCO_val2014_000000237277.jpg -../coco/images/val2014/COCO_val2014_000000237316.jpg -../coco/images/val2014/COCO_val2014_000000237357.jpg -../coco/images/val2014/COCO_val2014_000000237476.jpg -../coco/images/val2014/COCO_val2014_000000237723.jpg -../coco/images/val2014/COCO_val2014_000000237777.jpg -../coco/images/val2014/COCO_val2014_000000237920.jpg -../coco/images/val2014/COCO_val2014_000000237984.jpg -../coco/images/val2014/COCO_val2014_000000238389.jpg -../coco/images/val2014/COCO_val2014_000000238573.jpg -../coco/images/val2014/COCO_val2014_000000238598.jpg -../coco/images/val2014/COCO_val2014_000000238700.jpg -../coco/images/val2014/COCO_val2014_000000238806.jpg -../coco/images/val2014/COCO_val2014_000000239145.jpg -../coco/images/val2014/COCO_val2014_000000239148.jpg -../coco/images/val2014/COCO_val2014_000000239318.jpg -../coco/images/val2014/COCO_val2014_000000239656.jpg -../coco/images/val2014/COCO_val2014_000000240102.jpg -../coco/images/val2014/COCO_val2014_000000240393.jpg -../coco/images/val2014/COCO_val2014_000000240403.jpg -../coco/images/val2014/COCO_val2014_000000240739.jpg -../coco/images/val2014/COCO_val2014_000000240754.jpg -../coco/images/val2014/COCO_val2014_000000240903.jpg -../coco/images/val2014/COCO_val2014_000000240918.jpg -../coco/images/val2014/COCO_val2014_000000240960.jpg -../coco/images/val2014/COCO_val2014_000000241113.jpg -../coco/images/val2014/COCO_val2014_000000241187.jpg -../coco/images/val2014/COCO_val2014_000000241291.jpg -../coco/images/val2014/COCO_val2014_000000241319.jpg -../coco/images/val2014/COCO_val2014_000000241396.jpg -../coco/images/val2014/COCO_val2014_000000241517.jpg -../coco/images/val2014/COCO_val2014_000000241638.jpg -../coco/images/val2014/COCO_val2014_000000241677.jpg -../coco/images/val2014/COCO_val2014_000000241728.jpg -../coco/images/val2014/COCO_val2014_000000241868.jpg -../coco/images/val2014/COCO_val2014_000000241889.jpg -../coco/images/val2014/COCO_val2014_000000241948.jpg -../coco/images/val2014/COCO_val2014_000000242073.jpg -../coco/images/val2014/COCO_val2014_000000242100.jpg -../coco/images/val2014/COCO_val2014_000000242189.jpg -../coco/images/val2014/COCO_val2014_000000242246.jpg -../coco/images/val2014/COCO_val2014_000000242422.jpg -../coco/images/val2014/COCO_val2014_000000242423.jpg -../coco/images/val2014/COCO_val2014_000000242523.jpg -../coco/images/val2014/COCO_val2014_000000242911.jpg -../coco/images/val2014/COCO_val2014_000000242934.jpg -../coco/images/val2014/COCO_val2014_000000242945.jpg -../coco/images/val2014/COCO_val2014_000000242972.jpg -../coco/images/val2014/COCO_val2014_000000243134.jpg -../coco/images/val2014/COCO_val2014_000000243190.jpg -../coco/images/val2014/COCO_val2014_000000243213.jpg -../coco/images/val2014/COCO_val2014_000000243331.jpg -../coco/images/val2014/COCO_val2014_000000243442.jpg -../coco/images/val2014/COCO_val2014_000000243569.jpg -../coco/images/val2014/COCO_val2014_000000243699.jpg -../coco/images/val2014/COCO_val2014_000000243775.jpg -../coco/images/val2014/COCO_val2014_000000243825.jpg -../coco/images/val2014/COCO_val2014_000000243857.jpg -../coco/images/val2014/COCO_val2014_000000244005.jpg -../coco/images/val2014/COCO_val2014_000000244050.jpg -../coco/images/val2014/COCO_val2014_000000244167.jpg -../coco/images/val2014/COCO_val2014_000000244246.jpg -../coco/images/val2014/COCO_val2014_000000244344.jpg -../coco/images/val2014/COCO_val2014_000000244571.jpg -../coco/images/val2014/COCO_val2014_000000244665.jpg -../coco/images/val2014/COCO_val2014_000000245102.jpg -../coco/images/val2014/COCO_val2014_000000245173.jpg -../coco/images/val2014/COCO_val2014_000000245242.jpg -../coco/images/val2014/COCO_val2014_000000245426.jpg -../coco/images/val2014/COCO_val2014_000000245852.jpg -../coco/images/val2014/COCO_val2014_000000246014.jpg -../coco/images/val2014/COCO_val2014_000000246233.jpg -../coco/images/val2014/COCO_val2014_000000246308.jpg -../coco/images/val2014/COCO_val2014_000000246425.jpg -../coco/images/val2014/COCO_val2014_000000246522.jpg -../coco/images/val2014/COCO_val2014_000000246649.jpg -../coco/images/val2014/COCO_val2014_000000246672.jpg -../coco/images/val2014/COCO_val2014_000000246686.jpg -../coco/images/val2014/COCO_val2014_000000247057.jpg -../coco/images/val2014/COCO_val2014_000000247123.jpg -../coco/images/val2014/COCO_val2014_000000247234.jpg -../coco/images/val2014/COCO_val2014_000000247306.jpg -../coco/images/val2014/COCO_val2014_000000247407.jpg -../coco/images/val2014/COCO_val2014_000000247788.jpg -../coco/images/val2014/COCO_val2014_000000247839.jpg -../coco/images/val2014/COCO_val2014_000000248069.jpg -../coco/images/val2014/COCO_val2014_000000248089.jpg -../coco/images/val2014/COCO_val2014_000000248112.jpg -../coco/images/val2014/COCO_val2014_000000248224.jpg -../coco/images/val2014/COCO_val2014_000000248231.jpg -../coco/images/val2014/COCO_val2014_000000248235.jpg -../coco/images/val2014/COCO_val2014_000000248276.jpg -../coco/images/val2014/COCO_val2014_000000248314.jpg -../coco/images/val2014/COCO_val2014_000000248631.jpg -../coco/images/val2014/COCO_val2014_000000249219.jpg -../coco/images/val2014/COCO_val2014_000000249295.jpg -../coco/images/val2014/COCO_val2014_000000249599.jpg -../coco/images/val2014/COCO_val2014_000000250205.jpg -../coco/images/val2014/COCO_val2014_000000250282.jpg -../coco/images/val2014/COCO_val2014_000000250301.jpg -../coco/images/val2014/COCO_val2014_000000250313.jpg -../coco/images/val2014/COCO_val2014_000000250370.jpg -../coco/images/val2014/COCO_val2014_000000250427.jpg -../coco/images/val2014/COCO_val2014_000000250629.jpg -../coco/images/val2014/COCO_val2014_000000250745.jpg -../coco/images/val2014/COCO_val2014_000000250766.jpg -../coco/images/val2014/COCO_val2014_000000250794.jpg -../coco/images/val2014/COCO_val2014_000000250917.jpg -../coco/images/val2014/COCO_val2014_000000250924.jpg -../coco/images/val2014/COCO_val2014_000000250939.jpg -../coco/images/val2014/COCO_val2014_000000251019.jpg -../coco/images/val2014/COCO_val2014_000000251044.jpg -../coco/images/val2014/COCO_val2014_000000251195.jpg -../coco/images/val2014/COCO_val2014_000000251330.jpg -../coco/images/val2014/COCO_val2014_000000251367.jpg -../coco/images/val2014/COCO_val2014_000000251857.jpg -../coco/images/val2014/COCO_val2014_000000251888.jpg -../coco/images/val2014/COCO_val2014_000000251920.jpg -../coco/images/val2014/COCO_val2014_000000252008.jpg -../coco/images/val2014/COCO_val2014_000000252101.jpg -../coco/images/val2014/COCO_val2014_000000252292.jpg -../coco/images/val2014/COCO_val2014_000000252388.jpg -../coco/images/val2014/COCO_val2014_000000252403.jpg -../coco/images/val2014/COCO_val2014_000000252444.jpg -../coco/images/val2014/COCO_val2014_000000252549.jpg -../coco/images/val2014/COCO_val2014_000000252625.jpg -../coco/images/val2014/COCO_val2014_000000252748.jpg -../coco/images/val2014/COCO_val2014_000000252857.jpg -../coco/images/val2014/COCO_val2014_000000252911.jpg -../coco/images/val2014/COCO_val2014_000000253036.jpg -../coco/images/val2014/COCO_val2014_000000253452.jpg -../coco/images/val2014/COCO_val2014_000000253630.jpg -../coco/images/val2014/COCO_val2014_000000253688.jpg -../coco/images/val2014/COCO_val2014_000000253742.jpg -../coco/images/val2014/COCO_val2014_000000253843.jpg -../coco/images/val2014/COCO_val2014_000000254164.jpg -../coco/images/val2014/COCO_val2014_000000254167.jpg -../coco/images/val2014/COCO_val2014_000000254454.jpg -../coco/images/val2014/COCO_val2014_000000254568.jpg -../coco/images/val2014/COCO_val2014_000000254589.jpg -../coco/images/val2014/COCO_val2014_000000254653.jpg -../coco/images/val2014/COCO_val2014_000000254711.jpg -../coco/images/val2014/COCO_val2014_000000254864.jpg -../coco/images/val2014/COCO_val2014_000000254931.jpg -../coco/images/val2014/COCO_val2014_000000254986.jpg -../coco/images/val2014/COCO_val2014_000000255244.jpg -../coco/images/val2014/COCO_val2014_000000255315.jpg -../coco/images/val2014/COCO_val2014_000000255529.jpg -../coco/images/val2014/COCO_val2014_000000255578.jpg -../coco/images/val2014/COCO_val2014_000000255649.jpg -../coco/images/val2014/COCO_val2014_000000255928.jpg -../coco/images/val2014/COCO_val2014_000000256003.jpg -../coco/images/val2014/COCO_val2014_000000256095.jpg -../coco/images/val2014/COCO_val2014_000000256145.jpg -../coco/images/val2014/COCO_val2014_000000256407.jpg -../coco/images/val2014/COCO_val2014_000000256470.jpg -../coco/images/val2014/COCO_val2014_000000256529.jpg -../coco/images/val2014/COCO_val2014_000000256547.jpg -../coco/images/val2014/COCO_val2014_000000256566.jpg -../coco/images/val2014/COCO_val2014_000000256590.jpg -../coco/images/val2014/COCO_val2014_000000256668.jpg -../coco/images/val2014/COCO_val2014_000000256771.jpg -../coco/images/val2014/COCO_val2014_000000256838.jpg -../coco/images/val2014/COCO_val2014_000000256859.jpg -../coco/images/val2014/COCO_val2014_000000256945.jpg -../coco/images/val2014/COCO_val2014_000000257046.jpg -../coco/images/val2014/COCO_val2014_000000257137.jpg -../coco/images/val2014/COCO_val2014_000000257336.jpg -../coco/images/val2014/COCO_val2014_000000257471.jpg -../coco/images/val2014/COCO_val2014_000000257660.jpg -../coco/images/val2014/COCO_val2014_000000257870.jpg -../coco/images/val2014/COCO_val2014_000000257941.jpg -../coco/images/val2014/COCO_val2014_000000258023.jpg -../coco/images/val2014/COCO_val2014_000000258209.jpg -../coco/images/val2014/COCO_val2014_000000258509.jpg -../coco/images/val2014/COCO_val2014_000000258588.jpg -../coco/images/val2014/COCO_val2014_000000258628.jpg -../coco/images/val2014/COCO_val2014_000000259099.jpg -../coco/images/val2014/COCO_val2014_000000259112.jpg -../coco/images/val2014/COCO_val2014_000000259335.jpg -../coco/images/val2014/COCO_val2014_000000259342.jpg -../coco/images/val2014/COCO_val2014_000000259408.jpg -../coco/images/val2014/COCO_val2014_000000259665.jpg -../coco/images/val2014/COCO_val2014_000000259952.jpg -../coco/images/val2014/COCO_val2014_000000260166.jpg -../coco/images/val2014/COCO_val2014_000000260307.jpg -../coco/images/val2014/COCO_val2014_000000260370.jpg -../coco/images/val2014/COCO_val2014_000000260470.jpg -../coco/images/val2014/COCO_val2014_000000260595.jpg -../coco/images/val2014/COCO_val2014_000000260686.jpg -../coco/images/val2014/COCO_val2014_000000260818.jpg -../coco/images/val2014/COCO_val2014_000000260922.jpg -../coco/images/val2014/COCO_val2014_000000261182.jpg -../coco/images/val2014/COCO_val2014_000000261273.jpg -../coco/images/val2014/COCO_val2014_000000261346.jpg -../coco/images/val2014/COCO_val2014_000000261787.jpg -../coco/images/val2014/COCO_val2014_000000262162.jpg -../coco/images/val2014/COCO_val2014_000000262200.jpg -../coco/images/val2014/COCO_val2014_000000262228.jpg -../coco/images/val2014/COCO_val2014_000000262235.jpg -../coco/images/val2014/COCO_val2014_000000262325.jpg -../coco/images/val2014/COCO_val2014_000000262347.jpg -../coco/images/val2014/COCO_val2014_000000262509.jpg -../coco/images/val2014/COCO_val2014_000000262651.jpg -../coco/images/val2014/COCO_val2014_000000262677.jpg -../coco/images/val2014/COCO_val2014_000000262810.jpg -../coco/images/val2014/COCO_val2014_000000262895.jpg -../coco/images/val2014/COCO_val2014_000000262900.jpg -../coco/images/val2014/COCO_val2014_000000262987.jpg -../coco/images/val2014/COCO_val2014_000000263425.jpg -../coco/images/val2014/COCO_val2014_000000263505.jpg -../coco/images/val2014/COCO_val2014_000000264013.jpg -../coco/images/val2014/COCO_val2014_000000264540.jpg -../coco/images/val2014/COCO_val2014_000000264683.jpg -../coco/images/val2014/COCO_val2014_000000264737.jpg -../coco/images/val2014/COCO_val2014_000000264819.jpg -../coco/images/val2014/COCO_val2014_000000265063.jpg -../coco/images/val2014/COCO_val2014_000000265374.jpg -../coco/images/val2014/COCO_val2014_000000265574.jpg -../coco/images/val2014/COCO_val2014_000000265579.jpg -../coco/images/val2014/COCO_val2014_000000265611.jpg -../coco/images/val2014/COCO_val2014_000000265851.jpg -../coco/images/val2014/COCO_val2014_000000265916.jpg -../coco/images/val2014/COCO_val2014_000000266115.jpg -../coco/images/val2014/COCO_val2014_000000266160.jpg -../coco/images/val2014/COCO_val2014_000000266176.jpg -../coco/images/val2014/COCO_val2014_000000266491.jpg -../coco/images/val2014/COCO_val2014_000000267076.jpg -../coco/images/val2014/COCO_val2014_000000267112.jpg -../coco/images/val2014/COCO_val2014_000000267115.jpg -../coco/images/val2014/COCO_val2014_000000267127.jpg -../coco/images/val2014/COCO_val2014_000000267224.jpg -../coco/images/val2014/COCO_val2014_000000267321.jpg -../coco/images/val2014/COCO_val2014_000000267521.jpg -../coco/images/val2014/COCO_val2014_000000267537.jpg -../coco/images/val2014/COCO_val2014_000000267844.jpg -../coco/images/val2014/COCO_val2014_000000267875.jpg -../coco/images/val2014/COCO_val2014_000000267972.jpg -../coco/images/val2014/COCO_val2014_000000267998.jpg -../coco/images/val2014/COCO_val2014_000000268224.jpg -../coco/images/val2014/COCO_val2014_000000268322.jpg -../coco/images/val2014/COCO_val2014_000000268378.jpg -../coco/images/val2014/COCO_val2014_000000268400.jpg -../coco/images/val2014/COCO_val2014_000000268435.jpg -../coco/images/val2014/COCO_val2014_000000268469.jpg -../coco/images/val2014/COCO_val2014_000000268539.jpg -../coco/images/val2014/COCO_val2014_000000268541.jpg -../coco/images/val2014/COCO_val2014_000000268710.jpg -../coco/images/val2014/COCO_val2014_000000268882.jpg -../coco/images/val2014/COCO_val2014_000000268885.jpg -../coco/images/val2014/COCO_val2014_000000268941.jpg -../coco/images/val2014/COCO_val2014_000000268987.jpg -../coco/images/val2014/COCO_val2014_000000269280.jpg -../coco/images/val2014/COCO_val2014_000000269311.jpg -../coco/images/val2014/COCO_val2014_000000269866.jpg -../coco/images/val2014/COCO_val2014_000000269867.jpg -../coco/images/val2014/COCO_val2014_000000269975.jpg -../coco/images/val2014/COCO_val2014_000000270001.jpg -../coco/images/val2014/COCO_val2014_000000270244.jpg -../coco/images/val2014/COCO_val2014_000000270474.jpg -../coco/images/val2014/COCO_val2014_000000270515.jpg -../coco/images/val2014/COCO_val2014_000000270544.jpg -../coco/images/val2014/COCO_val2014_000000270593.jpg -../coco/images/val2014/COCO_val2014_000000270702.jpg -../coco/images/val2014/COCO_val2014_000000270918.jpg -../coco/images/val2014/COCO_val2014_000000271017.jpg -../coco/images/val2014/COCO_val2014_000000271117.jpg -../coco/images/val2014/COCO_val2014_000000271240.jpg -../coco/images/val2014/COCO_val2014_000000271359.jpg -../coco/images/val2014/COCO_val2014_000000271546.jpg -../coco/images/val2014/COCO_val2014_000000271681.jpg -../coco/images/val2014/COCO_val2014_000000271785.jpg -../coco/images/val2014/COCO_val2014_000000271820.jpg -../coco/images/val2014/COCO_val2014_000000271900.jpg -../coco/images/val2014/COCO_val2014_000000272008.jpg -../coco/images/val2014/COCO_val2014_000000272015.jpg -../coco/images/val2014/COCO_val2014_000000272117.jpg -../coco/images/val2014/COCO_val2014_000000272129.jpg -../coco/images/val2014/COCO_val2014_000000272188.jpg -../coco/images/val2014/COCO_val2014_000000272212.jpg -../coco/images/val2014/COCO_val2014_000000272615.jpg -../coco/images/val2014/COCO_val2014_000000272635.jpg -../coco/images/val2014/COCO_val2014_000000272718.jpg -../coco/images/val2014/COCO_val2014_000000272728.jpg -../coco/images/val2014/COCO_val2014_000000272880.jpg -../coco/images/val2014/COCO_val2014_000000272889.jpg -../coco/images/val2014/COCO_val2014_000000273118.jpg -../coco/images/val2014/COCO_val2014_000000273188.jpg -../coco/images/val2014/COCO_val2014_000000273246.jpg -../coco/images/val2014/COCO_val2014_000000273323.jpg -../coco/images/val2014/COCO_val2014_000000273442.jpg -../coco/images/val2014/COCO_val2014_000000273450.jpg -../coco/images/val2014/COCO_val2014_000000273493.jpg -../coco/images/val2014/COCO_val2014_000000273494.jpg -../coco/images/val2014/COCO_val2014_000000273579.jpg -../coco/images/val2014/COCO_val2014_000000273617.jpg -../coco/images/val2014/COCO_val2014_000000273688.jpg -../coco/images/val2014/COCO_val2014_000000273712.jpg -../coco/images/val2014/COCO_val2014_000000273728.jpg -../coco/images/val2014/COCO_val2014_000000273855.jpg -../coco/images/val2014/COCO_val2014_000000274066.jpg -../coco/images/val2014/COCO_val2014_000000274083.jpg -../coco/images/val2014/COCO_val2014_000000274292.jpg -../coco/images/val2014/COCO_val2014_000000274470.jpg -../coco/images/val2014/COCO_val2014_000000274629.jpg -../coco/images/val2014/COCO_val2014_000000274957.jpg -../coco/images/val2014/COCO_val2014_000000275270.jpg -../coco/images/val2014/COCO_val2014_000000275496.jpg -../coco/images/val2014/COCO_val2014_000000275843.jpg -../coco/images/val2014/COCO_val2014_000000275863.jpg -../coco/images/val2014/COCO_val2014_000000276149.jpg -../coco/images/val2014/COCO_val2014_000000276215.jpg -../coco/images/val2014/COCO_val2014_000000276239.jpg -../coco/images/val2014/COCO_val2014_000000276720.jpg -../coco/images/val2014/COCO_val2014_000000276804.jpg -../coco/images/val2014/COCO_val2014_000000276840.jpg -../coco/images/val2014/COCO_val2014_000000276863.jpg -../coco/images/val2014/COCO_val2014_000000277025.jpg -../coco/images/val2014/COCO_val2014_000000277046.jpg -../coco/images/val2014/COCO_val2014_000000277051.jpg -../coco/images/val2014/COCO_val2014_000000277162.jpg -../coco/images/val2014/COCO_val2014_000000277172.jpg -../coco/images/val2014/COCO_val2014_000000277227.jpg -../coco/images/val2014/COCO_val2014_000000277518.jpg -../coco/images/val2014/COCO_val2014_000000277542.jpg -../coco/images/val2014/COCO_val2014_000000277614.jpg -../coco/images/val2014/COCO_val2014_000000277622.jpg -../coco/images/val2014/COCO_val2014_000000277694.jpg -../coco/images/val2014/COCO_val2014_000000277984.jpg -../coco/images/val2014/COCO_val2014_000000278321.jpg -../coco/images/val2014/COCO_val2014_000000278435.jpg -../coco/images/val2014/COCO_val2014_000000278582.jpg -../coco/images/val2014/COCO_val2014_000000278760.jpg -../coco/images/val2014/COCO_val2014_000000278822.jpg -../coco/images/val2014/COCO_val2014_000000278843.jpg -../coco/images/val2014/COCO_val2014_000000278848.jpg -../coco/images/val2014/COCO_val2014_000000278967.jpg -../coco/images/val2014/COCO_val2014_000000278977.jpg -../coco/images/val2014/COCO_val2014_000000279024.jpg -../coco/images/val2014/COCO_val2014_000000279027.jpg -../coco/images/val2014/COCO_val2014_000000279154.jpg -../coco/images/val2014/COCO_val2014_000000279259.jpg -../coco/images/val2014/COCO_val2014_000000279521.jpg -../coco/images/val2014/COCO_val2014_000000279730.jpg -../coco/images/val2014/COCO_val2014_000000279784.jpg -../coco/images/val2014/COCO_val2014_000000279850.jpg -../coco/images/val2014/COCO_val2014_000000280007.jpg -../coco/images/val2014/COCO_val2014_000000280017.jpg -../coco/images/val2014/COCO_val2014_000000280036.jpg -../coco/images/val2014/COCO_val2014_000000280293.jpg -../coco/images/val2014/COCO_val2014_000000280530.jpg -../coco/images/val2014/COCO_val2014_000000280736.jpg -../coco/images/val2014/COCO_val2014_000000280766.jpg -../coco/images/val2014/COCO_val2014_000000281019.jpg -../coco/images/val2014/COCO_val2014_000000281163.jpg -../coco/images/val2014/COCO_val2014_000000281377.jpg -../coco/images/val2014/COCO_val2014_000000281500.jpg -../coco/images/val2014/COCO_val2014_000000281508.jpg -../coco/images/val2014/COCO_val2014_000000281601.jpg -../coco/images/val2014/COCO_val2014_000000281609.jpg -../coco/images/val2014/COCO_val2014_000000281676.jpg -../coco/images/val2014/COCO_val2014_000000281722.jpg -../coco/images/val2014/COCO_val2014_000000281733.jpg -../coco/images/val2014/COCO_val2014_000000282143.jpg -../coco/images/val2014/COCO_val2014_000000282229.jpg -../coco/images/val2014/COCO_val2014_000000282231.jpg -../coco/images/val2014/COCO_val2014_000000282698.jpg -../coco/images/val2014/COCO_val2014_000000282790.jpg -../coco/images/val2014/COCO_val2014_000000283012.jpg -../coco/images/val2014/COCO_val2014_000000283097.jpg -../coco/images/val2014/COCO_val2014_000000283101.jpg -../coco/images/val2014/COCO_val2014_000000283113.jpg -../coco/images/val2014/COCO_val2014_000000283254.jpg -../coco/images/val2014/COCO_val2014_000000283261.jpg -../coco/images/val2014/COCO_val2014_000000283380.jpg -../coco/images/val2014/COCO_val2014_000000283438.jpg -../coco/images/val2014/COCO_val2014_000000283441.jpg -../coco/images/val2014/COCO_val2014_000000283495.jpg -../coco/images/val2014/COCO_val2014_000000283642.jpg -../coco/images/val2014/COCO_val2014_000000283653.jpg -../coco/images/val2014/COCO_val2014_000000283659.jpg -../coco/images/val2014/COCO_val2014_000000283890.jpg -../coco/images/val2014/COCO_val2014_000000283940.jpg -../coco/images/val2014/COCO_val2014_000000283977.jpg -../coco/images/val2014/COCO_val2014_000000284160.jpg -../coco/images/val2014/COCO_val2014_000000284253.jpg -../coco/images/val2014/COCO_val2014_000000284426.jpg -../coco/images/val2014/COCO_val2014_000000284698.jpg -../coco/images/val2014/COCO_val2014_000000284749.jpg -../coco/images/val2014/COCO_val2014_000000284789.jpg -../coco/images/val2014/COCO_val2014_000000285106.jpg -../coco/images/val2014/COCO_val2014_000000285160.jpg -../coco/images/val2014/COCO_val2014_000000285302.jpg -../coco/images/val2014/COCO_val2014_000000285433.jpg -../coco/images/val2014/COCO_val2014_000000285799.jpg -../coco/images/val2014/COCO_val2014_000000285929.jpg -../coco/images/val2014/COCO_val2014_000000285961.jpg -../coco/images/val2014/COCO_val2014_000000286119.jpg -../coco/images/val2014/COCO_val2014_000000286146.jpg -../coco/images/val2014/COCO_val2014_000000286285.jpg -../coco/images/val2014/COCO_val2014_000000286458.jpg -../coco/images/val2014/COCO_val2014_000000286503.jpg -../coco/images/val2014/COCO_val2014_000000286654.jpg -../coco/images/val2014/COCO_val2014_000000286708.jpg -../coco/images/val2014/COCO_val2014_000000286719.jpg -../coco/images/val2014/COCO_val2014_000000286813.jpg -../coco/images/val2014/COCO_val2014_000000286907.jpg -../coco/images/val2014/COCO_val2014_000000286994.jpg -../coco/images/val2014/COCO_val2014_000000287035.jpg -../coco/images/val2014/COCO_val2014_000000287396.jpg -../coco/images/val2014/COCO_val2014_000000287484.jpg -../coco/images/val2014/COCO_val2014_000000287506.jpg -../coco/images/val2014/COCO_val2014_000000287550.jpg -../coco/images/val2014/COCO_val2014_000000287570.jpg -../coco/images/val2014/COCO_val2014_000000288114.jpg -../coco/images/val2014/COCO_val2014_000000288229.jpg -../coco/images/val2014/COCO_val2014_000000288313.jpg -../coco/images/val2014/COCO_val2014_000000288799.jpg -../coco/images/val2014/COCO_val2014_000000288933.jpg -../coco/images/val2014/COCO_val2014_000000289128.jpg -../coco/images/val2014/COCO_val2014_000000289172.jpg -../coco/images/val2014/COCO_val2014_000000289194.jpg -../coco/images/val2014/COCO_val2014_000000289201.jpg -../coco/images/val2014/COCO_val2014_000000289337.jpg -../coco/images/val2014/COCO_val2014_000000289474.jpg -../coco/images/val2014/COCO_val2014_000000289497.jpg -../coco/images/val2014/COCO_val2014_000000289633.jpg -../coco/images/val2014/COCO_val2014_000000289716.jpg -../coco/images/val2014/COCO_val2014_000000289949.jpg -../coco/images/val2014/COCO_val2014_000000289960.jpg -../coco/images/val2014/COCO_val2014_000000289995.jpg -../coco/images/val2014/COCO_val2014_000000290165.jpg -../coco/images/val2014/COCO_val2014_000000290170.jpg -../coco/images/val2014/COCO_val2014_000000290196.jpg -../coco/images/val2014/COCO_val2014_000000290231.jpg -../coco/images/val2014/COCO_val2014_000000290477.jpg -../coco/images/val2014/COCO_val2014_000000290515.jpg -../coco/images/val2014/COCO_val2014_000000290602.jpg -../coco/images/val2014/COCO_val2014_000000290659.jpg -../coco/images/val2014/COCO_val2014_000000291380.jpg -../coco/images/val2014/COCO_val2014_000000291404.jpg -../coco/images/val2014/COCO_val2014_000000291588.jpg -../coco/images/val2014/COCO_val2014_000000291589.jpg -../coco/images/val2014/COCO_val2014_000000291742.jpg -../coco/images/val2014/COCO_val2014_000000291784.jpg -../coco/images/val2014/COCO_val2014_000000291866.jpg -../coco/images/val2014/COCO_val2014_000000291930.jpg -../coco/images/val2014/COCO_val2014_000000292032.jpg -../coco/images/val2014/COCO_val2014_000000292206.jpg -../coco/images/val2014/COCO_val2014_000000292330.jpg -../coco/images/val2014/COCO_val2014_000000292363.jpg -../coco/images/val2014/COCO_val2014_000000292446.jpg -../coco/images/val2014/COCO_val2014_000000292456.jpg -../coco/images/val2014/COCO_val2014_000000292493.jpg -../coco/images/val2014/COCO_val2014_000000292649.jpg -../coco/images/val2014/COCO_val2014_000000292822.jpg -../coco/images/val2014/COCO_val2014_000000292916.jpg -../coco/images/val2014/COCO_val2014_000000292931.jpg -../coco/images/val2014/COCO_val2014_000000292945.jpg -../coco/images/val2014/COCO_val2014_000000292990.jpg -../coco/images/val2014/COCO_val2014_000000292995.jpg -../coco/images/val2014/COCO_val2014_000000293002.jpg -../coco/images/val2014/COCO_val2014_000000293071.jpg -../coco/images/val2014/COCO_val2014_000000293133.jpg -../coco/images/val2014/COCO_val2014_000000293296.jpg -../coco/images/val2014/COCO_val2014_000000293333.jpg -../coco/images/val2014/COCO_val2014_000000293452.jpg -../coco/images/val2014/COCO_val2014_000000293574.jpg -../coco/images/val2014/COCO_val2014_000000293785.jpg -../coco/images/val2014/COCO_val2014_000000293895.jpg -../coco/images/val2014/COCO_val2014_000000294035.jpg -../coco/images/val2014/COCO_val2014_000000294119.jpg -../coco/images/val2014/COCO_val2014_000000294209.jpg -../coco/images/val2014/COCO_val2014_000000294284.jpg -../coco/images/val2014/COCO_val2014_000000294593.jpg -../coco/images/val2014/COCO_val2014_000000294958.jpg -../coco/images/val2014/COCO_val2014_000000295016.jpg -../coco/images/val2014/COCO_val2014_000000295059.jpg -../coco/images/val2014/COCO_val2014_000000295124.jpg -../coco/images/val2014/COCO_val2014_000000295269.jpg -../coco/images/val2014/COCO_val2014_000000295574.jpg -../coco/images/val2014/COCO_val2014_000000295683.jpg -../coco/images/val2014/COCO_val2014_000000295728.jpg -../coco/images/val2014/COCO_val2014_000000295769.jpg -../coco/images/val2014/COCO_val2014_000000295837.jpg -../coco/images/val2014/COCO_val2014_000000296014.jpg -../coco/images/val2014/COCO_val2014_000000296032.jpg -../coco/images/val2014/COCO_val2014_000000296136.jpg -../coco/images/val2014/COCO_val2014_000000296255.jpg -../coco/images/val2014/COCO_val2014_000000296492.jpg -../coco/images/val2014/COCO_val2014_000000296564.jpg -../coco/images/val2014/COCO_val2014_000000296745.jpg -../coco/images/val2014/COCO_val2014_000000296825.jpg -../coco/images/val2014/COCO_val2014_000000296897.jpg -../coco/images/val2014/COCO_val2014_000000296988.jpg -../coco/images/val2014/COCO_val2014_000000297037.jpg -../coco/images/val2014/COCO_val2014_000000297074.jpg -../coco/images/val2014/COCO_val2014_000000297269.jpg -../coco/images/val2014/COCO_val2014_000000297444.jpg -../coco/images/val2014/COCO_val2014_000000297520.jpg -../coco/images/val2014/COCO_val2014_000000297578.jpg -../coco/images/val2014/COCO_val2014_000000297736.jpg -../coco/images/val2014/COCO_val2014_000000297830.jpg -../coco/images/val2014/COCO_val2014_000000297956.jpg -../coco/images/val2014/COCO_val2014_000000297970.jpg -../coco/images/val2014/COCO_val2014_000000297976.jpg -../coco/images/val2014/COCO_val2014_000000298067.jpg -../coco/images/val2014/COCO_val2014_000000298252.jpg -../coco/images/val2014/COCO_val2014_000000298461.jpg -../coco/images/val2014/COCO_val2014_000000298493.jpg -../coco/images/val2014/COCO_val2014_000000298691.jpg -../coco/images/val2014/COCO_val2014_000000298732.jpg -../coco/images/val2014/COCO_val2014_000000298736.jpg -../coco/images/val2014/COCO_val2014_000000298809.jpg -../coco/images/val2014/COCO_val2014_000000299044.jpg -../coco/images/val2014/COCO_val2014_000000299074.jpg -../coco/images/val2014/COCO_val2014_000000299409.jpg -../coco/images/val2014/COCO_val2014_000000299492.jpg -../coco/images/val2014/COCO_val2014_000000299553.jpg -../coco/images/val2014/COCO_val2014_000000300008.jpg -../coco/images/val2014/COCO_val2014_000000300055.jpg -../coco/images/val2014/COCO_val2014_000000300090.jpg -../coco/images/val2014/COCO_val2014_000000300124.jpg -../coco/images/val2014/COCO_val2014_000000300155.jpg -../coco/images/val2014/COCO_val2014_000000300330.jpg -../coco/images/val2014/COCO_val2014_000000300403.jpg -../coco/images/val2014/COCO_val2014_000000300472.jpg -../coco/images/val2014/COCO_val2014_000000300701.jpg -../coco/images/val2014/COCO_val2014_000000300705.jpg -../coco/images/val2014/COCO_val2014_000000300791.jpg -../coco/images/val2014/COCO_val2014_000000300814.jpg -../coco/images/val2014/COCO_val2014_000000301135.jpg -../coco/images/val2014/COCO_val2014_000000301221.jpg -../coco/images/val2014/COCO_val2014_000000301266.jpg -../coco/images/val2014/COCO_val2014_000000301397.jpg -../coco/images/val2014/COCO_val2014_000000301746.jpg -../coco/images/val2014/COCO_val2014_000000301756.jpg -../coco/images/val2014/COCO_val2014_000000301765.jpg -../coco/images/val2014/COCO_val2014_000000301837.jpg -../coco/images/val2014/COCO_val2014_000000301956.jpg -../coco/images/val2014/COCO_val2014_000000301971.jpg -../coco/images/val2014/COCO_val2014_000000301981.jpg -../coco/images/val2014/COCO_val2014_000000302094.jpg -../coco/images/val2014/COCO_val2014_000000302110.jpg -../coco/images/val2014/COCO_val2014_000000302137.jpg -../coco/images/val2014/COCO_val2014_000000302185.jpg -../coco/images/val2014/COCO_val2014_000000302193.jpg -../coco/images/val2014/COCO_val2014_000000302243.jpg -../coco/images/val2014/COCO_val2014_000000302298.jpg -../coco/images/val2014/COCO_val2014_000000302302.jpg -../coco/images/val2014/COCO_val2014_000000302318.jpg -../coco/images/val2014/COCO_val2014_000000302405.jpg -../coco/images/val2014/COCO_val2014_000000302452.jpg -../coco/images/val2014/COCO_val2014_000000302572.jpg -../coco/images/val2014/COCO_val2014_000000302710.jpg -../coco/images/val2014/COCO_val2014_000000302997.jpg -../coco/images/val2014/COCO_val2014_000000303006.jpg -../coco/images/val2014/COCO_val2014_000000303253.jpg -../coco/images/val2014/COCO_val2014_000000303305.jpg -../coco/images/val2014/COCO_val2014_000000303314.jpg -../coco/images/val2014/COCO_val2014_000000303549.jpg -../coco/images/val2014/COCO_val2014_000000303550.jpg -../coco/images/val2014/COCO_val2014_000000303556.jpg -../coco/images/val2014/COCO_val2014_000000303590.jpg -../coco/images/val2014/COCO_val2014_000000303937.jpg -../coco/images/val2014/COCO_val2014_000000304159.jpg -../coco/images/val2014/COCO_val2014_000000304186.jpg -../coco/images/val2014/COCO_val2014_000000304220.jpg -../coco/images/val2014/COCO_val2014_000000304252.jpg -../coco/images/val2014/COCO_val2014_000000304347.jpg -../coco/images/val2014/COCO_val2014_000000304390.jpg -../coco/images/val2014/COCO_val2014_000000304409.jpg -../coco/images/val2014/COCO_val2014_000000304812.jpg -../coco/images/val2014/COCO_val2014_000000304815.jpg -../coco/images/val2014/COCO_val2014_000000304827.jpg -../coco/images/val2014/COCO_val2014_000000305000.jpg -../coco/images/val2014/COCO_val2014_000000305343.jpg -../coco/images/val2014/COCO_val2014_000000305368.jpg -../coco/images/val2014/COCO_val2014_000000305480.jpg -../coco/images/val2014/COCO_val2014_000000305526.jpg -../coco/images/val2014/COCO_val2014_000000305803.jpg -../coco/images/val2014/COCO_val2014_000000305962.jpg -../coco/images/val2014/COCO_val2014_000000305978.jpg -../coco/images/val2014/COCO_val2014_000000306281.jpg -../coco/images/val2014/COCO_val2014_000000306395.jpg -../coco/images/val2014/COCO_val2014_000000306426.jpg -../coco/images/val2014/COCO_val2014_000000306585.jpg -../coco/images/val2014/COCO_val2014_000000306603.jpg -../coco/images/val2014/COCO_val2014_000000306855.jpg -../coco/images/val2014/COCO_val2014_000000306914.jpg -../coco/images/val2014/COCO_val2014_000000306952.jpg -../coco/images/val2014/COCO_val2014_000000306972.jpg -../coco/images/val2014/COCO_val2014_000000307206.jpg -../coco/images/val2014/COCO_val2014_000000307209.jpg -../coco/images/val2014/COCO_val2014_000000307438.jpg -../coco/images/val2014/COCO_val2014_000000307523.jpg -../coco/images/val2014/COCO_val2014_000000307531.jpg -../coco/images/val2014/COCO_val2014_000000307564.jpg -../coco/images/val2014/COCO_val2014_000000307873.jpg -../coco/images/val2014/COCO_val2014_000000307993.jpg -../coco/images/val2014/COCO_val2014_000000308156.jpg -../coco/images/val2014/COCO_val2014_000000308339.jpg -../coco/images/val2014/COCO_val2014_000000308441.jpg -../coco/images/val2014/COCO_val2014_000000308512.jpg -../coco/images/val2014/COCO_val2014_000000308543.jpg -../coco/images/val2014/COCO_val2014_000000308587.jpg -../coco/images/val2014/COCO_val2014_000000308759.jpg -../coco/images/val2014/COCO_val2014_000000308785.jpg -../coco/images/val2014/COCO_val2014_000000308900.jpg -../coco/images/val2014/COCO_val2014_000000308907.jpg -../coco/images/val2014/COCO_val2014_000000309044.jpg -../coco/images/val2014/COCO_val2014_000000309302.jpg -../coco/images/val2014/COCO_val2014_000000309452.jpg -../coco/images/val2014/COCO_val2014_000000309495.jpg -../coco/images/val2014/COCO_val2014_000000309530.jpg -../coco/images/val2014/COCO_val2014_000000309655.jpg -../coco/images/val2014/COCO_val2014_000000309692.jpg -../coco/images/val2014/COCO_val2014_000000309696.jpg -../coco/images/val2014/COCO_val2014_000000309775.jpg -../coco/images/val2014/COCO_val2014_000000309993.jpg -../coco/images/val2014/COCO_val2014_000000310008.jpg -../coco/images/val2014/COCO_val2014_000000310094.jpg -../coco/images/val2014/COCO_val2014_000000310196.jpg -../coco/images/val2014/COCO_val2014_000000310202.jpg -../coco/images/val2014/COCO_val2014_000000310524.jpg -../coco/images/val2014/COCO_val2014_000000310545.jpg -../coco/images/val2014/COCO_val2014_000000310622.jpg -../coco/images/val2014/COCO_val2014_000000310705.jpg -../coco/images/val2014/COCO_val2014_000000310858.jpg -../coco/images/val2014/COCO_val2014_000000311015.jpg -../coco/images/val2014/COCO_val2014_000000311081.jpg -../coco/images/val2014/COCO_val2014_000000311295.jpg -../coco/images/val2014/COCO_val2014_000000311303.jpg -../coco/images/val2014/COCO_val2014_000000311465.jpg -../coco/images/val2014/COCO_val2014_000000311904.jpg -../coco/images/val2014/COCO_val2014_000000311961.jpg -../coco/images/val2014/COCO_val2014_000000312081.jpg -../coco/images/val2014/COCO_val2014_000000312144.jpg -../coco/images/val2014/COCO_val2014_000000312192.jpg -../coco/images/val2014/COCO_val2014_000000312278.jpg -../coco/images/val2014/COCO_val2014_000000312289.jpg -../coco/images/val2014/COCO_val2014_000000312416.jpg -../coco/images/val2014/COCO_val2014_000000312544.jpg -../coco/images/val2014/COCO_val2014_000000312559.jpg -../coco/images/val2014/COCO_val2014_000000312890.jpg -../coco/images/val2014/COCO_val2014_000000313034.jpg -../coco/images/val2014/COCO_val2014_000000313057.jpg -../coco/images/val2014/COCO_val2014_000000313162.jpg -../coco/images/val2014/COCO_val2014_000000313321.jpg -../coco/images/val2014/COCO_val2014_000000313557.jpg -../coco/images/val2014/COCO_val2014_000000313588.jpg -../coco/images/val2014/COCO_val2014_000000313593.jpg -../coco/images/val2014/COCO_val2014_000000313916.jpg -../coco/images/val2014/COCO_val2014_000000313922.jpg -../coco/images/val2014/COCO_val2014_000000314023.jpg -../coco/images/val2014/COCO_val2014_000000314027.jpg -../coco/images/val2014/COCO_val2014_000000314147.jpg -../coco/images/val2014/COCO_val2014_000000314440.jpg -../coco/images/val2014/COCO_val2014_000000314616.jpg -../coco/images/val2014/COCO_val2014_000000314812.jpg -../coco/images/val2014/COCO_val2014_000000314992.jpg -../coco/images/val2014/COCO_val2014_000000315219.jpg -../coco/images/val2014/COCO_val2014_000000315249.jpg -../coco/images/val2014/COCO_val2014_000000315281.jpg -../coco/images/val2014/COCO_val2014_000000315564.jpg -../coco/images/val2014/COCO_val2014_000000315601.jpg -../coco/images/val2014/COCO_val2014_000000315621.jpg -../coco/images/val2014/COCO_val2014_000000315744.jpg -../coco/images/val2014/COCO_val2014_000000315792.jpg -../coco/images/val2014/COCO_val2014_000000315824.jpg -../coco/images/val2014/COCO_val2014_000000315962.jpg -../coco/images/val2014/COCO_val2014_000000316000.jpg -../coco/images/val2014/COCO_val2014_000000316015.jpg -../coco/images/val2014/COCO_val2014_000000316138.jpg -../coco/images/val2014/COCO_val2014_000000316147.jpg -../coco/images/val2014/COCO_val2014_000000316254.jpg -../coco/images/val2014/COCO_val2014_000000316359.jpg -../coco/images/val2014/COCO_val2014_000000316400.jpg -../coco/images/val2014/COCO_val2014_000000316438.jpg -../coco/images/val2014/COCO_val2014_000000316505.jpg -../coco/images/val2014/COCO_val2014_000000316617.jpg -../coco/images/val2014/COCO_val2014_000000316704.jpg -../coco/images/val2014/COCO_val2014_000000316879.jpg -../coco/images/val2014/COCO_val2014_000000317033.jpg -../coco/images/val2014/COCO_val2014_000000317320.jpg -../coco/images/val2014/COCO_val2014_000000317325.jpg -../coco/images/val2014/COCO_val2014_000000317424.jpg -../coco/images/val2014/COCO_val2014_000000317560.jpg -../coco/images/val2014/COCO_val2014_000000317622.jpg -../coco/images/val2014/COCO_val2014_000000317898.jpg -../coco/images/val2014/COCO_val2014_000000318124.jpg -../coco/images/val2014/COCO_val2014_000000318200.jpg -../coco/images/val2014/COCO_val2014_000000318314.jpg -../coco/images/val2014/COCO_val2014_000000318566.jpg -../coco/images/val2014/COCO_val2014_000000318618.jpg -../coco/images/val2014/COCO_val2014_000000318645.jpg -../coco/images/val2014/COCO_val2014_000000318671.jpg -../coco/images/val2014/COCO_val2014_000000318722.jpg -../coco/images/val2014/COCO_val2014_000000318837.jpg -../coco/images/val2014/COCO_val2014_000000319055.jpg -../coco/images/val2014/COCO_val2014_000000319073.jpg -../coco/images/val2014/COCO_val2014_000000319579.jpg -../coco/images/val2014/COCO_val2014_000000319616.jpg -../coco/images/val2014/COCO_val2014_000000319617.jpg -../coco/images/val2014/COCO_val2014_000000319654.jpg -../coco/images/val2014/COCO_val2014_000000319677.jpg -../coco/images/val2014/COCO_val2014_000000319687.jpg -../coco/images/val2014/COCO_val2014_000000319721.jpg -../coco/images/val2014/COCO_val2014_000000319726.jpg -../coco/images/val2014/COCO_val2014_000000320078.jpg -../coco/images/val2014/COCO_val2014_000000320203.jpg -../coco/images/val2014/COCO_val2014_000000320461.jpg -../coco/images/val2014/COCO_val2014_000000320480.jpg -../coco/images/val2014/COCO_val2014_000000320482.jpg -../coco/images/val2014/COCO_val2014_000000320696.jpg -../coco/images/val2014/COCO_val2014_000000320832.jpg -../coco/images/val2014/COCO_val2014_000000320893.jpg -../coco/images/val2014/COCO_val2014_000000320978.jpg -../coco/images/val2014/COCO_val2014_000000321079.jpg -../coco/images/val2014/COCO_val2014_000000321118.jpg -../coco/images/val2014/COCO_val2014_000000321176.jpg -../coco/images/val2014/COCO_val2014_000000321258.jpg -../coco/images/val2014/COCO_val2014_000000321476.jpg -../coco/images/val2014/COCO_val2014_000000321647.jpg -../coco/images/val2014/COCO_val2014_000000321804.jpg -../coco/images/val2014/COCO_val2014_000000322174.jpg -../coco/images/val2014/COCO_val2014_000000322352.jpg -../coco/images/val2014/COCO_val2014_000000322594.jpg -../coco/images/val2014/COCO_val2014_000000322724.jpg -../coco/images/val2014/COCO_val2014_000000322829.jpg -../coco/images/val2014/COCO_val2014_000000322845.jpg -../coco/images/val2014/COCO_val2014_000000322895.jpg -../coco/images/val2014/COCO_val2014_000000323128.jpg -../coco/images/val2014/COCO_val2014_000000323186.jpg -../coco/images/val2014/COCO_val2014_000000323291.jpg -../coco/images/val2014/COCO_val2014_000000323564.jpg -../coco/images/val2014/COCO_val2014_000000323751.jpg -../coco/images/val2014/COCO_val2014_000000323758.jpg -../coco/images/val2014/COCO_val2014_000000323799.jpg -../coco/images/val2014/COCO_val2014_000000323853.jpg -../coco/images/val2014/COCO_val2014_000000323919.jpg -../coco/images/val2014/COCO_val2014_000000323925.jpg -../coco/images/val2014/COCO_val2014_000000323930.jpg -../coco/images/val2014/COCO_val2014_000000324040.jpg -../coco/images/val2014/COCO_val2014_000000324135.jpg -../coco/images/val2014/COCO_val2014_000000324203.jpg -../coco/images/val2014/COCO_val2014_000000324497.jpg -../coco/images/val2014/COCO_val2014_000000324500.jpg -../coco/images/val2014/COCO_val2014_000000324595.jpg -../coco/images/val2014/COCO_val2014_000000324774.jpg -../coco/images/val2014/COCO_val2014_000000324776.jpg -../coco/images/val2014/COCO_val2014_000000324789.jpg -../coco/images/val2014/COCO_val2014_000000324872.jpg -../coco/images/val2014/COCO_val2014_000000325027.jpg -../coco/images/val2014/COCO_val2014_000000325153.jpg -../coco/images/val2014/COCO_val2014_000000325157.jpg -../coco/images/val2014/COCO_val2014_000000325211.jpg -../coco/images/val2014/COCO_val2014_000000325328.jpg -../coco/images/val2014/COCO_val2014_000000325410.jpg -../coco/images/val2014/COCO_val2014_000000325587.jpg -../coco/images/val2014/COCO_val2014_000000325623.jpg -../coco/images/val2014/COCO_val2014_000000325736.jpg -../coco/images/val2014/COCO_val2014_000000325907.jpg -../coco/images/val2014/COCO_val2014_000000326128.jpg -../coco/images/val2014/COCO_val2014_000000326230.jpg -../coco/images/val2014/COCO_val2014_000000326308.jpg -../coco/images/val2014/COCO_val2014_000000326368.jpg -../coco/images/val2014/COCO_val2014_000000326462.jpg -../coco/images/val2014/COCO_val2014_000000326959.jpg -../coco/images/val2014/COCO_val2014_000000327149.jpg -../coco/images/val2014/COCO_val2014_000000327323.jpg -../coco/images/val2014/COCO_val2014_000000327383.jpg -../coco/images/val2014/COCO_val2014_000000327413.jpg -../coco/images/val2014/COCO_val2014_000000327433.jpg -../coco/images/val2014/COCO_val2014_000000327617.jpg -../coco/images/val2014/COCO_val2014_000000327665.jpg -../coco/images/val2014/COCO_val2014_000000327845.jpg -../coco/images/val2014/COCO_val2014_000000327857.jpg -../coco/images/val2014/COCO_val2014_000000327872.jpg -../coco/images/val2014/COCO_val2014_000000327892.jpg -../coco/images/val2014/COCO_val2014_000000328068.jpg -../coco/images/val2014/COCO_val2014_000000328098.jpg -../coco/images/val2014/COCO_val2014_000000328374.jpg -../coco/images/val2014/COCO_val2014_000000328462.jpg -../coco/images/val2014/COCO_val2014_000000328464.jpg -../coco/images/val2014/COCO_val2014_000000328499.jpg -../coco/images/val2014/COCO_val2014_000000328551.jpg -../coco/images/val2014/COCO_val2014_000000328757.jpg -../coco/images/val2014/COCO_val2014_000000328791.jpg -../coco/images/val2014/COCO_val2014_000000328838.jpg -../coco/images/val2014/COCO_val2014_000000329375.jpg -../coco/images/val2014/COCO_val2014_000000329379.jpg -../coco/images/val2014/COCO_val2014_000000329421.jpg -../coco/images/val2014/COCO_val2014_000000329447.jpg -../coco/images/val2014/COCO_val2014_000000329486.jpg -../coco/images/val2014/COCO_val2014_000000329533.jpg -../coco/images/val2014/COCO_val2014_000000330065.jpg -../coco/images/val2014/COCO_val2014_000000330248.jpg -../coco/images/val2014/COCO_val2014_000000330515.jpg -../coco/images/val2014/COCO_val2014_000000330734.jpg -../coco/images/val2014/COCO_val2014_000000330931.jpg -../coco/images/val2014/COCO_val2014_000000331097.jpg -../coco/images/val2014/COCO_val2014_000000331196.jpg -../coco/images/val2014/COCO_val2014_000000331242.jpg -../coco/images/val2014/COCO_val2014_000000331307.jpg -../coco/images/val2014/COCO_val2014_000000331349.jpg -../coco/images/val2014/COCO_val2014_000000331372.jpg -../coco/images/val2014/COCO_val2014_000000331403.jpg -../coco/images/val2014/COCO_val2014_000000331627.jpg -../coco/images/val2014/COCO_val2014_000000331667.jpg -../coco/images/val2014/COCO_val2014_000000331959.jpg -../coco/images/val2014/COCO_val2014_000000332025.jpg -../coco/images/val2014/COCO_val2014_000000332407.jpg -../coco/images/val2014/COCO_val2014_000000332502.jpg -../coco/images/val2014/COCO_val2014_000000332545.jpg -../coco/images/val2014/COCO_val2014_000000332570.jpg -../coco/images/val2014/COCO_val2014_000000332582.jpg -../coco/images/val2014/COCO_val2014_000000332627.jpg -../coco/images/val2014/COCO_val2014_000000332852.jpg -../coco/images/val2014/COCO_val2014_000000332908.jpg -../coco/images/val2014/COCO_val2014_000000333014.jpg -../coco/images/val2014/COCO_val2014_000000333034.jpg -../coco/images/val2014/COCO_val2014_000000333101.jpg -../coco/images/val2014/COCO_val2014_000000333114.jpg -../coco/images/val2014/COCO_val2014_000000333150.jpg -../coco/images/val2014/COCO_val2014_000000333156.jpg -../coco/images/val2014/COCO_val2014_000000333167.jpg -../coco/images/val2014/COCO_val2014_000000333303.jpg -../coco/images/val2014/COCO_val2014_000000333436.jpg -../coco/images/val2014/COCO_val2014_000000333565.jpg -../coco/images/val2014/COCO_val2014_000000333756.jpg -../coco/images/val2014/COCO_val2014_000000333808.jpg -../coco/images/val2014/COCO_val2014_000000333845.jpg -../coco/images/val2014/COCO_val2014_000000333924.jpg -../coco/images/val2014/COCO_val2014_000000334015.jpg -../coco/images/val2014/COCO_val2014_000000334062.jpg -../coco/images/val2014/COCO_val2014_000000334471.jpg -../coco/images/val2014/COCO_val2014_000000334483.jpg -../coco/images/val2014/COCO_val2014_000000334675.jpg -../coco/images/val2014/COCO_val2014_000000334760.jpg -../coco/images/val2014/COCO_val2014_000000335081.jpg -../coco/images/val2014/COCO_val2014_000000335177.jpg -../coco/images/val2014/COCO_val2014_000000335328.jpg -../coco/images/val2014/COCO_val2014_000000335587.jpg -../coco/images/val2014/COCO_val2014_000000335610.jpg -../coco/images/val2014/COCO_val2014_000000335644.jpg -../coco/images/val2014/COCO_val2014_000000335774.jpg -../coco/images/val2014/COCO_val2014_000000335800.jpg -../coco/images/val2014/COCO_val2014_000000335814.jpg -../coco/images/val2014/COCO_val2014_000000335861.jpg -../coco/images/val2014/COCO_val2014_000000335887.jpg -../coco/images/val2014/COCO_val2014_000000335976.jpg -../coco/images/val2014/COCO_val2014_000000335992.jpg -../coco/images/val2014/COCO_val2014_000000336171.jpg -../coco/images/val2014/COCO_val2014_000000336309.jpg -../coco/images/val2014/COCO_val2014_000000336427.jpg -../coco/images/val2014/COCO_val2014_000000336464.jpg -../coco/images/val2014/COCO_val2014_000000336629.jpg -../coco/images/val2014/COCO_val2014_000000336949.jpg -../coco/images/val2014/COCO_val2014_000000337035.jpg -../coco/images/val2014/COCO_val2014_000000337246.jpg -../coco/images/val2014/COCO_val2014_000000337274.jpg -../coco/images/val2014/COCO_val2014_000000337563.jpg -../coco/images/val2014/COCO_val2014_000000337653.jpg -../coco/images/val2014/COCO_val2014_000000337666.jpg -../coco/images/val2014/COCO_val2014_000000337827.jpg -../coco/images/val2014/COCO_val2014_000000338044.jpg -../coco/images/val2014/COCO_val2014_000000338098.jpg -../coco/images/val2014/COCO_val2014_000000338105.jpg -../coco/images/val2014/COCO_val2014_000000338428.jpg -../coco/images/val2014/COCO_val2014_000000338532.jpg -../coco/images/val2014/COCO_val2014_000000338562.jpg -../coco/images/val2014/COCO_val2014_000000338581.jpg -../coco/images/val2014/COCO_val2014_000000338678.jpg -../coco/images/val2014/COCO_val2014_000000338826.jpg -../coco/images/val2014/COCO_val2014_000000339022.jpg -../coco/images/val2014/COCO_val2014_000000339202.jpg -../coco/images/val2014/COCO_val2014_000000339356.jpg -../coco/images/val2014/COCO_val2014_000000339470.jpg -../coco/images/val2014/COCO_val2014_000000339678.jpg -../coco/images/val2014/COCO_val2014_000000339740.jpg -../coco/images/val2014/COCO_val2014_000000339823.jpg -../coco/images/val2014/COCO_val2014_000000339943.jpg -../coco/images/val2014/COCO_val2014_000000340451.jpg -../coco/images/val2014/COCO_val2014_000000340529.jpg -../coco/images/val2014/COCO_val2014_000000340654.jpg -../coco/images/val2014/COCO_val2014_000000340737.jpg -../coco/images/val2014/COCO_val2014_000000340778.jpg -../coco/images/val2014/COCO_val2014_000000340781.jpg -../coco/images/val2014/COCO_val2014_000000340930.jpg -../coco/images/val2014/COCO_val2014_000000341230.jpg -../coco/images/val2014/COCO_val2014_000000341397.jpg -../coco/images/val2014/COCO_val2014_000000341725.jpg -../coco/images/val2014/COCO_val2014_000000341775.jpg -../coco/images/val2014/COCO_val2014_000000341778.jpg -../coco/images/val2014/COCO_val2014_000000342006.jpg -../coco/images/val2014/COCO_val2014_000000342142.jpg -../coco/images/val2014/COCO_val2014_000000342387.jpg -../coco/images/val2014/COCO_val2014_000000342762.jpg -../coco/images/val2014/COCO_val2014_000000343059.jpg -../coco/images/val2014/COCO_val2014_000000343157.jpg -../coco/images/val2014/COCO_val2014_000000343193.jpg -../coco/images/val2014/COCO_val2014_000000343315.jpg -../coco/images/val2014/COCO_val2014_000000343458.jpg -../coco/images/val2014/COCO_val2014_000000343504.jpg -../coco/images/val2014/COCO_val2014_000000343543.jpg -../coco/images/val2014/COCO_val2014_000000343680.jpg -../coco/images/val2014/COCO_val2014_000000343753.jpg -../coco/images/val2014/COCO_val2014_000000343967.jpg -../coco/images/val2014/COCO_val2014_000000344045.jpg -../coco/images/val2014/COCO_val2014_000000344197.jpg -../coco/images/val2014/COCO_val2014_000000344488.jpg -../coco/images/val2014/COCO_val2014_000000344498.jpg -../coco/images/val2014/COCO_val2014_000000344730.jpg -../coco/images/val2014/COCO_val2014_000000344862.jpg -../coco/images/val2014/COCO_val2014_000000344897.jpg -../coco/images/val2014/COCO_val2014_000000344903.jpg -../coco/images/val2014/COCO_val2014_000000345136.jpg -../coco/images/val2014/COCO_val2014_000000345211.jpg -../coco/images/val2014/COCO_val2014_000000345224.jpg -../coco/images/val2014/COCO_val2014_000000345261.jpg -../coco/images/val2014/COCO_val2014_000000345469.jpg -../coco/images/val2014/COCO_val2014_000000345711.jpg -../coco/images/val2014/COCO_val2014_000000345998.jpg -../coco/images/val2014/COCO_val2014_000000346337.jpg -../coco/images/val2014/COCO_val2014_000000346642.jpg -../coco/images/val2014/COCO_val2014_000000346645.jpg -../coco/images/val2014/COCO_val2014_000000346865.jpg -../coco/images/val2014/COCO_val2014_000000346940.jpg -../coco/images/val2014/COCO_val2014_000000347377.jpg -../coco/images/val2014/COCO_val2014_000000347390.jpg -../coco/images/val2014/COCO_val2014_000000347506.jpg -../coco/images/val2014/COCO_val2014_000000347630.jpg -../coco/images/val2014/COCO_val2014_000000347724.jpg -../coco/images/val2014/COCO_val2014_000000347747.jpg -../coco/images/val2014/COCO_val2014_000000347768.jpg -../coco/images/val2014/COCO_val2014_000000347772.jpg -../coco/images/val2014/COCO_val2014_000000347819.jpg -../coco/images/val2014/COCO_val2014_000000347848.jpg -../coco/images/val2014/COCO_val2014_000000347982.jpg -../coco/images/val2014/COCO_val2014_000000348091.jpg -../coco/images/val2014/COCO_val2014_000000348140.jpg -../coco/images/val2014/COCO_val2014_000000348216.jpg -../coco/images/val2014/COCO_val2014_000000348263.jpg -../coco/images/val2014/COCO_val2014_000000348306.jpg -../coco/images/val2014/COCO_val2014_000000348474.jpg -../coco/images/val2014/COCO_val2014_000000348524.jpg -../coco/images/val2014/COCO_val2014_000000348571.jpg -../coco/images/val2014/COCO_val2014_000000348701.jpg -../coco/images/val2014/COCO_val2014_000000348791.jpg -../coco/images/val2014/COCO_val2014_000000348913.jpg -../coco/images/val2014/COCO_val2014_000000348973.jpg -../coco/images/val2014/COCO_val2014_000000349185.jpg -../coco/images/val2014/COCO_val2014_000000349310.jpg -../coco/images/val2014/COCO_val2014_000000349402.jpg -../coco/images/val2014/COCO_val2014_000000349469.jpg -../coco/images/val2014/COCO_val2014_000000349480.jpg -../coco/images/val2014/COCO_val2014_000000349485.jpg -../coco/images/val2014/COCO_val2014_000000349489.jpg -../coco/images/val2014/COCO_val2014_000000349616.jpg -../coco/images/val2014/COCO_val2014_000000349622.jpg -../coco/images/val2014/COCO_val2014_000000349822.jpg -../coco/images/val2014/COCO_val2014_000000350075.jpg -../coco/images/val2014/COCO_val2014_000000350084.jpg -../coco/images/val2014/COCO_val2014_000000350388.jpg -../coco/images/val2014/COCO_val2014_000000350405.jpg -../coco/images/val2014/COCO_val2014_000000350447.jpg -../coco/images/val2014/COCO_val2014_000000350463.jpg -../coco/images/val2014/COCO_val2014_000000350467.jpg -../coco/images/val2014/COCO_val2014_000000350491.jpg -../coco/images/val2014/COCO_val2014_000000350648.jpg -../coco/images/val2014/COCO_val2014_000000350668.jpg -../coco/images/val2014/COCO_val2014_000000350675.jpg -../coco/images/val2014/COCO_val2014_000000350694.jpg -../coco/images/val2014/COCO_val2014_000000350851.jpg -../coco/images/val2014/COCO_val2014_000000351081.jpg -../coco/images/val2014/COCO_val2014_000000351149.jpg -../coco/images/val2014/COCO_val2014_000000351183.jpg -../coco/images/val2014/COCO_val2014_000000351557.jpg -../coco/images/val2014/COCO_val2014_000000351590.jpg -../coco/images/val2014/COCO_val2014_000000351683.jpg -../coco/images/val2014/COCO_val2014_000000351787.jpg -../coco/images/val2014/COCO_val2014_000000351840.jpg -../coco/images/val2014/COCO_val2014_000000352005.jpg -../coco/images/val2014/COCO_val2014_000000352334.jpg -../coco/images/val2014/COCO_val2014_000000352478.jpg -../coco/images/val2014/COCO_val2014_000000352481.jpg -../coco/images/val2014/COCO_val2014_000000352538.jpg -../coco/images/val2014/COCO_val2014_000000352760.jpg -../coco/images/val2014/COCO_val2014_000000353027.jpg -../coco/images/val2014/COCO_val2014_000000353028.jpg -../coco/images/val2014/COCO_val2014_000000353096.jpg -../coco/images/val2014/COCO_val2014_000000353298.jpg -../coco/images/val2014/COCO_val2014_000000353300.jpg -../coco/images/val2014/COCO_val2014_000000353411.jpg -../coco/images/val2014/COCO_val2014_000000353666.jpg -../coco/images/val2014/COCO_val2014_000000353964.jpg -../coco/images/val2014/COCO_val2014_000000354061.jpg -../coco/images/val2014/COCO_val2014_000000354242.jpg -../coco/images/val2014/COCO_val2014_000000354460.jpg -../coco/images/val2014/COCO_val2014_000000354929.jpg -../coco/images/val2014/COCO_val2014_000000355000.jpg -../coco/images/val2014/COCO_val2014_000000355123.jpg -../coco/images/val2014/COCO_val2014_000000355256.jpg -../coco/images/val2014/COCO_val2014_000000355263.jpg -../coco/images/val2014/COCO_val2014_000000355441.jpg -../coco/images/val2014/COCO_val2014_000000355450.jpg -../coco/images/val2014/COCO_val2014_000000355817.jpg -../coco/images/val2014/COCO_val2014_000000355871.jpg -../coco/images/val2014/COCO_val2014_000000355919.jpg -../coco/images/val2014/COCO_val2014_000000356002.jpg -../coco/images/val2014/COCO_val2014_000000356043.jpg -../coco/images/val2014/COCO_val2014_000000356092.jpg -../coco/images/val2014/COCO_val2014_000000356236.jpg -../coco/images/val2014/COCO_val2014_000000356351.jpg -../coco/images/val2014/COCO_val2014_000000356368.jpg -../coco/images/val2014/COCO_val2014_000000356379.jpg -../coco/images/val2014/COCO_val2014_000000356406.jpg -../coco/images/val2014/COCO_val2014_000000356456.jpg -../coco/images/val2014/COCO_val2014_000000356505.jpg -../coco/images/val2014/COCO_val2014_000000356612.jpg -../coco/images/val2014/COCO_val2014_000000357279.jpg -../coco/images/val2014/COCO_val2014_000000357335.jpg -../coco/images/val2014/COCO_val2014_000000357475.jpg -../coco/images/val2014/COCO_val2014_000000357529.jpg -../coco/images/val2014/COCO_val2014_000000357743.jpg -../coco/images/val2014/COCO_val2014_000000357829.jpg -../coco/images/val2014/COCO_val2014_000000357916.jpg -../coco/images/val2014/COCO_val2014_000000357944.jpg -../coco/images/val2014/COCO_val2014_000000358191.jpg -../coco/images/val2014/COCO_val2014_000000358231.jpg -../coco/images/val2014/COCO_val2014_000000358389.jpg -../coco/images/val2014/COCO_val2014_000000358652.jpg -../coco/images/val2014/COCO_val2014_000000358750.jpg -../coco/images/val2014/COCO_val2014_000000358763.jpg -../coco/images/val2014/COCO_val2014_000000358833.jpg -../coco/images/val2014/COCO_val2014_000000358901.jpg -../coco/images/val2014/COCO_val2014_000000359118.jpg -../coco/images/val2014/COCO_val2014_000000359126.jpg -../coco/images/val2014/COCO_val2014_000000359239.jpg -../coco/images/val2014/COCO_val2014_000000359276.jpg -../coco/images/val2014/COCO_val2014_000000359303.jpg -../coco/images/val2014/COCO_val2014_000000359442.jpg -../coco/images/val2014/COCO_val2014_000000359677.jpg -../coco/images/val2014/COCO_val2014_000000359791.jpg -../coco/images/val2014/COCO_val2014_000000359947.jpg -../coco/images/val2014/COCO_val2014_000000360128.jpg -../coco/images/val2014/COCO_val2014_000000360263.jpg -../coco/images/val2014/COCO_val2014_000000360346.jpg -../coco/images/val2014/COCO_val2014_000000360512.jpg -../coco/images/val2014/COCO_val2014_000000360564.jpg -../coco/images/val2014/COCO_val2014_000000360661.jpg -../coco/images/val2014/COCO_val2014_000000360700.jpg -../coco/images/val2014/COCO_val2014_000000360730.jpg -../coco/images/val2014/COCO_val2014_000000360926.jpg -../coco/images/val2014/COCO_val2014_000000361027.jpg -../coco/images/val2014/COCO_val2014_000000361029.jpg -../coco/images/val2014/COCO_val2014_000000361085.jpg -../coco/images/val2014/COCO_val2014_000000361157.jpg -../coco/images/val2014/COCO_val2014_000000361180.jpg -../coco/images/val2014/COCO_val2014_000000361221.jpg -../coco/images/val2014/COCO_val2014_000000361265.jpg -../coco/images/val2014/COCO_val2014_000000361268.jpg -../coco/images/val2014/COCO_val2014_000000361321.jpg -../coco/images/val2014/COCO_val2014_000000361341.jpg -../coco/images/val2014/COCO_val2014_000000361386.jpg -../coco/images/val2014/COCO_val2014_000000361660.jpg -../coco/images/val2014/COCO_val2014_000000361730.jpg -../coco/images/val2014/COCO_val2014_000000361751.jpg -../coco/images/val2014/COCO_val2014_000000361804.jpg -../coco/images/val2014/COCO_val2014_000000361819.jpg -../coco/images/val2014/COCO_val2014_000000361831.jpg -../coco/images/val2014/COCO_val2014_000000361885.jpg -../coco/images/val2014/COCO_val2014_000000361923.jpg -../coco/images/val2014/COCO_val2014_000000362026.jpg -../coco/images/val2014/COCO_val2014_000000362159.jpg -../coco/images/val2014/COCO_val2014_000000362189.jpg -../coco/images/val2014/COCO_val2014_000000362483.jpg -../coco/images/val2014/COCO_val2014_000000362869.jpg -../coco/images/val2014/COCO_val2014_000000362971.jpg -../coco/images/val2014/COCO_val2014_000000363403.jpg -../coco/images/val2014/COCO_val2014_000000363461.jpg -../coco/images/val2014/COCO_val2014_000000363508.jpg -../coco/images/val2014/COCO_val2014_000000363522.jpg -../coco/images/val2014/COCO_val2014_000000363831.jpg -../coco/images/val2014/COCO_val2014_000000363875.jpg -../coco/images/val2014/COCO_val2014_000000364079.jpg -../coco/images/val2014/COCO_val2014_000000364145.jpg -../coco/images/val2014/COCO_val2014_000000364188.jpg -../coco/images/val2014/COCO_val2014_000000364399.jpg -../coco/images/val2014/COCO_val2014_000000364429.jpg -../coco/images/val2014/COCO_val2014_000000364493.jpg -../coco/images/val2014/COCO_val2014_000000364567.jpg -../coco/images/val2014/COCO_val2014_000000364589.jpg -../coco/images/val2014/COCO_val2014_000000364757.jpg -../coco/images/val2014/COCO_val2014_000000365094.jpg -../coco/images/val2014/COCO_val2014_000000365103.jpg -../coco/images/val2014/COCO_val2014_000000365121.jpg -../coco/images/val2014/COCO_val2014_000000365207.jpg -../coco/images/val2014/COCO_val2014_000000365214.jpg -../coco/images/val2014/COCO_val2014_000000365317.jpg -../coco/images/val2014/COCO_val2014_000000365485.jpg -../coco/images/val2014/COCO_val2014_000000365511.jpg -../coco/images/val2014/COCO_val2014_000000365540.jpg -../coco/images/val2014/COCO_val2014_000000365618.jpg -../coco/images/val2014/COCO_val2014_000000365822.jpg -../coco/images/val2014/COCO_val2014_000000365983.jpg -../coco/images/val2014/COCO_val2014_000000366031.jpg -../coco/images/val2014/COCO_val2014_000000366111.jpg -../coco/images/val2014/COCO_val2014_000000366178.jpg -../coco/images/val2014/COCO_val2014_000000366199.jpg -../coco/images/val2014/COCO_val2014_000000366569.jpg -../coco/images/val2014/COCO_val2014_000000366576.jpg -../coco/images/val2014/COCO_val2014_000000366611.jpg -../coco/images/val2014/COCO_val2014_000000366615.jpg -../coco/images/val2014/COCO_val2014_000000366867.jpg -../coco/images/val2014/COCO_val2014_000000367087.jpg -../coco/images/val2014/COCO_val2014_000000367205.jpg -../coco/images/val2014/COCO_val2014_000000367452.jpg -../coco/images/val2014/COCO_val2014_000000367509.jpg -../coco/images/val2014/COCO_val2014_000000367558.jpg -../coco/images/val2014/COCO_val2014_000000367571.jpg -../coco/images/val2014/COCO_val2014_000000367582.jpg -../coco/images/val2014/COCO_val2014_000000367608.jpg -../coco/images/val2014/COCO_val2014_000000367626.jpg -../coco/images/val2014/COCO_val2014_000000367673.jpg -../coco/images/val2014/COCO_val2014_000000367843.jpg -../coco/images/val2014/COCO_val2014_000000367893.jpg -../coco/images/val2014/COCO_val2014_000000367953.jpg -../coco/images/val2014/COCO_val2014_000000368038.jpg -../coco/images/val2014/COCO_val2014_000000368096.jpg -../coco/images/val2014/COCO_val2014_000000368222.jpg -../coco/images/val2014/COCO_val2014_000000368367.jpg -../coco/images/val2014/COCO_val2014_000000368648.jpg -../coco/images/val2014/COCO_val2014_000000368752.jpg -../coco/images/val2014/COCO_val2014_000000369185.jpg -../coco/images/val2014/COCO_val2014_000000369294.jpg -../coco/images/val2014/COCO_val2014_000000369309.jpg -../coco/images/val2014/COCO_val2014_000000369675.jpg -../coco/images/val2014/COCO_val2014_000000369685.jpg -../coco/images/val2014/COCO_val2014_000000369776.jpg -../coco/images/val2014/COCO_val2014_000000369840.jpg -../coco/images/val2014/COCO_val2014_000000369887.jpg -../coco/images/val2014/COCO_val2014_000000369997.jpg -../coco/images/val2014/COCO_val2014_000000370233.jpg -../coco/images/val2014/COCO_val2014_000000370279.jpg -../coco/images/val2014/COCO_val2014_000000370315.jpg -../coco/images/val2014/COCO_val2014_000000370331.jpg -../coco/images/val2014/COCO_val2014_000000370388.jpg -../coco/images/val2014/COCO_val2014_000000370513.jpg -../coco/images/val2014/COCO_val2014_000000370602.jpg -../coco/images/val2014/COCO_val2014_000000370701.jpg -../coco/images/val2014/COCO_val2014_000000370749.jpg -../coco/images/val2014/COCO_val2014_000000370839.jpg -../coco/images/val2014/COCO_val2014_000000370929.jpg -../coco/images/val2014/COCO_val2014_000000371289.jpg -../coco/images/val2014/COCO_val2014_000000371326.jpg -../coco/images/val2014/COCO_val2014_000000371497.jpg -../coco/images/val2014/COCO_val2014_000000371552.jpg -../coco/images/val2014/COCO_val2014_000000371822.jpg -../coco/images/val2014/COCO_val2014_000000371841.jpg -../coco/images/val2014/COCO_val2014_000000371948.jpg -../coco/images/val2014/COCO_val2014_000000371973.jpg -../coco/images/val2014/COCO_val2014_000000372230.jpg -../coco/images/val2014/COCO_val2014_000000372362.jpg -../coco/images/val2014/COCO_val2014_000000372433.jpg -../coco/images/val2014/COCO_val2014_000000372471.jpg -../coco/images/val2014/COCO_val2014_000000372494.jpg -../coco/images/val2014/COCO_val2014_000000372580.jpg -../coco/images/val2014/COCO_val2014_000000372718.jpg -../coco/images/val2014/COCO_val2014_000000372855.jpg -../coco/images/val2014/COCO_val2014_000000373007.jpg -../coco/images/val2014/COCO_val2014_000000373060.jpg -../coco/images/val2014/COCO_val2014_000000373119.jpg -../coco/images/val2014/COCO_val2014_000000373140.jpg -../coco/images/val2014/COCO_val2014_000000373193.jpg -../coco/images/val2014/COCO_val2014_000000373255.jpg -../coco/images/val2014/COCO_val2014_000000373284.jpg -../coco/images/val2014/COCO_val2014_000000373375.jpg -../coco/images/val2014/COCO_val2014_000000373440.jpg -../coco/images/val2014/COCO_val2014_000000373571.jpg -../coco/images/val2014/COCO_val2014_000000373705.jpg -../coco/images/val2014/COCO_val2014_000000373988.jpg -../coco/images/val2014/COCO_val2014_000000374111.jpg -../coco/images/val2014/COCO_val2014_000000374241.jpg -../coco/images/val2014/COCO_val2014_000000374641.jpg -../coco/images/val2014/COCO_val2014_000000374702.jpg -../coco/images/val2014/COCO_val2014_000000374734.jpg -../coco/images/val2014/COCO_val2014_000000374886.jpg -../coco/images/val2014/COCO_val2014_000000375063.jpg -../coco/images/val2014/COCO_val2014_000000375180.jpg -../coco/images/val2014/COCO_val2014_000000375198.jpg -../coco/images/val2014/COCO_val2014_000000375211.jpg -../coco/images/val2014/COCO_val2014_000000375317.jpg -../coco/images/val2014/COCO_val2014_000000375530.jpg -../coco/images/val2014/COCO_val2014_000000375763.jpg -../coco/images/val2014/COCO_val2014_000000375902.jpg -../coco/images/val2014/COCO_val2014_000000375914.jpg -../coco/images/val2014/COCO_val2014_000000376059.jpg -../coco/images/val2014/COCO_val2014_000000376187.jpg -../coco/images/val2014/COCO_val2014_000000376233.jpg -../coco/images/val2014/COCO_val2014_000000376295.jpg -../coco/images/val2014/COCO_val2014_000000376307.jpg -../coco/images/val2014/COCO_val2014_000000376358.jpg -../coco/images/val2014/COCO_val2014_000000376441.jpg -../coco/images/val2014/COCO_val2014_000000376667.jpg -../coco/images/val2014/COCO_val2014_000000376677.jpg -../coco/images/val2014/COCO_val2014_000000376751.jpg -../coco/images/val2014/COCO_val2014_000000376900.jpg -../coco/images/val2014/COCO_val2014_000000376996.jpg -../coco/images/val2014/COCO_val2014_000000377003.jpg -../coco/images/val2014/COCO_val2014_000000377060.jpg -../coco/images/val2014/COCO_val2014_000000377080.jpg -../coco/images/val2014/COCO_val2014_000000377355.jpg -../coco/images/val2014/COCO_val2014_000000377595.jpg -../coco/images/val2014/COCO_val2014_000000377723.jpg -../coco/images/val2014/COCO_val2014_000000377867.jpg -../coco/images/val2014/COCO_val2014_000000377882.jpg -../coco/images/val2014/COCO_val2014_000000377984.jpg -../coco/images/val2014/COCO_val2014_000000378099.jpg -../coco/images/val2014/COCO_val2014_000000378139.jpg -../coco/images/val2014/COCO_val2014_000000378284.jpg -../coco/images/val2014/COCO_val2014_000000378403.jpg -../coco/images/val2014/COCO_val2014_000000378448.jpg -../coco/images/val2014/COCO_val2014_000000378652.jpg -../coco/images/val2014/COCO_val2014_000000378712.jpg -../coco/images/val2014/COCO_val2014_000000378727.jpg -../coco/images/val2014/COCO_val2014_000000378831.jpg -../coco/images/val2014/COCO_val2014_000000379022.jpg -../coco/images/val2014/COCO_val2014_000000379070.jpg -../coco/images/val2014/COCO_val2014_000000379108.jpg -../coco/images/val2014/COCO_val2014_000000379162.jpg -../coco/images/val2014/COCO_val2014_000000379332.jpg -../coco/images/val2014/COCO_val2014_000000379476.jpg -../coco/images/val2014/COCO_val2014_000000379584.jpg -../coco/images/val2014/COCO_val2014_000000379605.jpg -../coco/images/val2014/COCO_val2014_000000379837.jpg -../coco/images/val2014/COCO_val2014_000000379869.jpg -../coco/images/val2014/COCO_val2014_000000380088.jpg -../coco/images/val2014/COCO_val2014_000000380106.jpg -../coco/images/val2014/COCO_val2014_000000380299.jpg -../coco/images/val2014/COCO_val2014_000000380414.jpg -../coco/images/val2014/COCO_val2014_000000380609.jpg -../coco/images/val2014/COCO_val2014_000000380639.jpg -../coco/images/val2014/COCO_val2014_000000380698.jpg -../coco/images/val2014/COCO_val2014_000000380756.jpg -../coco/images/val2014/COCO_val2014_000000380892.jpg -../coco/images/val2014/COCO_val2014_000000381031.jpg -../coco/images/val2014/COCO_val2014_000000381060.jpg -../coco/images/val2014/COCO_val2014_000000381213.jpg -../coco/images/val2014/COCO_val2014_000000381527.jpg -../coco/images/val2014/COCO_val2014_000000381551.jpg -../coco/images/val2014/COCO_val2014_000000381709.jpg -../coco/images/val2014/COCO_val2014_000000382088.jpg -../coco/images/val2014/COCO_val2014_000000382333.jpg -../coco/images/val2014/COCO_val2014_000000382715.jpg -../coco/images/val2014/COCO_val2014_000000382717.jpg -../coco/images/val2014/COCO_val2014_000000382855.jpg -../coco/images/val2014/COCO_val2014_000000383039.jpg -../coco/images/val2014/COCO_val2014_000000383065.jpg -../coco/images/val2014/COCO_val2014_000000383073.jpg -../coco/images/val2014/COCO_val2014_000000383087.jpg -../coco/images/val2014/COCO_val2014_000000383339.jpg -../coco/images/val2014/COCO_val2014_000000383341.jpg -../coco/images/val2014/COCO_val2014_000000383384.jpg -../coco/images/val2014/COCO_val2014_000000383462.jpg -../coco/images/val2014/COCO_val2014_000000384012.jpg -../coco/images/val2014/COCO_val2014_000000384040.jpg -../coco/images/val2014/COCO_val2014_000000384188.jpg -../coco/images/val2014/COCO_val2014_000000384333.jpg -../coco/images/val2014/COCO_val2014_000000384348.jpg -../coco/images/val2014/COCO_val2014_000000384527.jpg -../coco/images/val2014/COCO_val2014_000000384554.jpg -../coco/images/val2014/COCO_val2014_000000384827.jpg -../coco/images/val2014/COCO_val2014_000000385057.jpg -../coco/images/val2014/COCO_val2014_000000385320.jpg -../coco/images/val2014/COCO_val2014_000000385346.jpg -../coco/images/val2014/COCO_val2014_000000385580.jpg -../coco/images/val2014/COCO_val2014_000000385779.jpg -../coco/images/val2014/COCO_val2014_000000385877.jpg -../coco/images/val2014/COCO_val2014_000000385997.jpg -../coco/images/val2014/COCO_val2014_000000386119.jpg -../coco/images/val2014/COCO_val2014_000000386134.jpg -../coco/images/val2014/COCO_val2014_000000386187.jpg -../coco/images/val2014/COCO_val2014_000000386224.jpg -../coco/images/val2014/COCO_val2014_000000386457.jpg -../coco/images/val2014/COCO_val2014_000000386585.jpg -../coco/images/val2014/COCO_val2014_000000386661.jpg -../coco/images/val2014/COCO_val2014_000000386707.jpg -../coco/images/val2014/COCO_val2014_000000386755.jpg -../coco/images/val2014/COCO_val2014_000000386786.jpg -../coco/images/val2014/COCO_val2014_000000386929.jpg -../coco/images/val2014/COCO_val2014_000000387150.jpg -../coco/images/val2014/COCO_val2014_000000387244.jpg -../coco/images/val2014/COCO_val2014_000000387369.jpg -../coco/images/val2014/COCO_val2014_000000387383.jpg -../coco/images/val2014/COCO_val2014_000000387387.jpg -../coco/images/val2014/COCO_val2014_000000387551.jpg -../coco/images/val2014/COCO_val2014_000000387576.jpg -../coco/images/val2014/COCO_val2014_000000387655.jpg -../coco/images/val2014/COCO_val2014_000000387696.jpg -../coco/images/val2014/COCO_val2014_000000387776.jpg -../coco/images/val2014/COCO_val2014_000000387850.jpg -../coco/images/val2014/COCO_val2014_000000388009.jpg -../coco/images/val2014/COCO_val2014_000000388325.jpg -../coco/images/val2014/COCO_val2014_000000388413.jpg -../coco/images/val2014/COCO_val2014_000000388464.jpg -../coco/images/val2014/COCO_val2014_000000388677.jpg -../coco/images/val2014/COCO_val2014_000000388721.jpg -../coco/images/val2014/COCO_val2014_000000388881.jpg -../coco/images/val2014/COCO_val2014_000000388903.jpg -../coco/images/val2014/COCO_val2014_000000389056.jpg -../coco/images/val2014/COCO_val2014_000000389316.jpg -../coco/images/val2014/COCO_val2014_000000389340.jpg -../coco/images/val2014/COCO_val2014_000000389378.jpg -../coco/images/val2014/COCO_val2014_000000389604.jpg -../coco/images/val2014/COCO_val2014_000000389622.jpg -../coco/images/val2014/COCO_val2014_000000389644.jpg -../coco/images/val2014/COCO_val2014_000000389738.jpg -../coco/images/val2014/COCO_val2014_000000389753.jpg -../coco/images/val2014/COCO_val2014_000000389843.jpg -../coco/images/val2014/COCO_val2014_000000390017.jpg -../coco/images/val2014/COCO_val2014_000000390068.jpg -../coco/images/val2014/COCO_val2014_000000390137.jpg -../coco/images/val2014/COCO_val2014_000000390238.jpg -../coco/images/val2014/COCO_val2014_000000390246.jpg -../coco/images/val2014/COCO_val2014_000000390322.jpg -../coco/images/val2014/COCO_val2014_000000390585.jpg -../coco/images/val2014/COCO_val2014_000000390685.jpg -../coco/images/val2014/COCO_val2014_000000390689.jpg -../coco/images/val2014/COCO_val2014_000000390769.jpg -../coco/images/val2014/COCO_val2014_000000390795.jpg -../coco/images/val2014/COCO_val2014_000000390902.jpg -../coco/images/val2014/COCO_val2014_000000391225.jpg -../coco/images/val2014/COCO_val2014_000000391365.jpg -../coco/images/val2014/COCO_val2014_000000391463.jpg -../coco/images/val2014/COCO_val2014_000000391689.jpg -../coco/images/val2014/COCO_val2014_000000391862.jpg -../coco/images/val2014/COCO_val2014_000000391940.jpg -../coco/images/val2014/COCO_val2014_000000391978.jpg -../coco/images/val2014/COCO_val2014_000000392004.jpg -../coco/images/val2014/COCO_val2014_000000392251.jpg -../coco/images/val2014/COCO_val2014_000000392364.jpg -../coco/images/val2014/COCO_val2014_000000392392.jpg -../coco/images/val2014/COCO_val2014_000000392753.jpg -../coco/images/val2014/COCO_val2014_000000392981.jpg -../coco/images/val2014/COCO_val2014_000000393031.jpg -../coco/images/val2014/COCO_val2014_000000393282.jpg -../coco/images/val2014/COCO_val2014_000000393372.jpg -../coco/images/val2014/COCO_val2014_000000393497.jpg -../coco/images/val2014/COCO_val2014_000000393674.jpg -../coco/images/val2014/COCO_val2014_000000393692.jpg -../coco/images/val2014/COCO_val2014_000000393794.jpg -../coco/images/val2014/COCO_val2014_000000393874.jpg -../coco/images/val2014/COCO_val2014_000000394132.jpg -../coco/images/val2014/COCO_val2014_000000394157.jpg -../coco/images/val2014/COCO_val2014_000000394352.jpg -../coco/images/val2014/COCO_val2014_000000394559.jpg -../coco/images/val2014/COCO_val2014_000000394611.jpg -../coco/images/val2014/COCO_val2014_000000394677.jpg -../coco/images/val2014/COCO_val2014_000000395180.jpg -../coco/images/val2014/COCO_val2014_000000395290.jpg -../coco/images/val2014/COCO_val2014_000000395463.jpg -../coco/images/val2014/COCO_val2014_000000395531.jpg -../coco/images/val2014/COCO_val2014_000000395634.jpg -../coco/images/val2014/COCO_val2014_000000395665.jpg -../coco/images/val2014/COCO_val2014_000000395717.jpg -../coco/images/val2014/COCO_val2014_000000395723.jpg -../coco/images/val2014/COCO_val2014_000000395801.jpg -../coco/images/val2014/COCO_val2014_000000396167.jpg -../coco/images/val2014/COCO_val2014_000000396178.jpg -../coco/images/val2014/COCO_val2014_000000396369.jpg -../coco/images/val2014/COCO_val2014_000000396526.jpg -../coco/images/val2014/COCO_val2014_000000396736.jpg -../coco/images/val2014/COCO_val2014_000000396997.jpg -../coco/images/val2014/COCO_val2014_000000397322.jpg -../coco/images/val2014/COCO_val2014_000000397475.jpg -../coco/images/val2014/COCO_val2014_000000398007.jpg -../coco/images/val2014/COCO_val2014_000000398045.jpg -../coco/images/val2014/COCO_val2014_000000398119.jpg -../coco/images/val2014/COCO_val2014_000000398222.jpg -../coco/images/val2014/COCO_val2014_000000398438.jpg -../coco/images/val2014/COCO_val2014_000000398450.jpg -../coco/images/val2014/COCO_val2014_000000398519.jpg -../coco/images/val2014/COCO_val2014_000000398604.jpg -../coco/images/val2014/COCO_val2014_000000398606.jpg -../coco/images/val2014/COCO_val2014_000000398637.jpg -../coco/images/val2014/COCO_val2014_000000398753.jpg -../coco/images/val2014/COCO_val2014_000000398866.jpg -../coco/images/val2014/COCO_val2014_000000398905.jpg -../coco/images/val2014/COCO_val2014_000000399205.jpg -../coco/images/val2014/COCO_val2014_000000399545.jpg -../coco/images/val2014/COCO_val2014_000000399567.jpg -../coco/images/val2014/COCO_val2014_000000399655.jpg -../coco/images/val2014/COCO_val2014_000000399741.jpg -../coco/images/val2014/COCO_val2014_000000399744.jpg -../coco/images/val2014/COCO_val2014_000000399822.jpg -../coco/images/val2014/COCO_val2014_000000399832.jpg -../coco/images/val2014/COCO_val2014_000000399865.jpg -../coco/images/val2014/COCO_val2014_000000399991.jpg -../coco/images/val2014/COCO_val2014_000000400044.jpg -../coco/images/val2014/COCO_val2014_000000400046.jpg -../coco/images/val2014/COCO_val2014_000000400189.jpg -../coco/images/val2014/COCO_val2014_000000400202.jpg -../coco/images/val2014/COCO_val2014_000000400317.jpg -../coco/images/val2014/COCO_val2014_000000400975.jpg -../coco/images/val2014/COCO_val2014_000000400976.jpg -../coco/images/val2014/COCO_val2014_000000401028.jpg -../coco/images/val2014/COCO_val2014_000000401088.jpg -../coco/images/val2014/COCO_val2014_000000401092.jpg -../coco/images/val2014/COCO_val2014_000000401124.jpg -../coco/images/val2014/COCO_val2014_000000401320.jpg -../coco/images/val2014/COCO_val2014_000000401384.jpg -../coco/images/val2014/COCO_val2014_000000401425.jpg -../coco/images/val2014/COCO_val2014_000000401591.jpg -../coco/images/val2014/COCO_val2014_000000401860.jpg -../coco/images/val2014/COCO_val2014_000000401892.jpg -../coco/images/val2014/COCO_val2014_000000402000.jpg -../coco/images/val2014/COCO_val2014_000000402334.jpg -../coco/images/val2014/COCO_val2014_000000402717.jpg -../coco/images/val2014/COCO_val2014_000000402723.jpg -../coco/images/val2014/COCO_val2014_000000402867.jpg -../coco/images/val2014/COCO_val2014_000000402887.jpg -../coco/images/val2014/COCO_val2014_000000402909.jpg -../coco/images/val2014/COCO_val2014_000000403087.jpg -../coco/images/val2014/COCO_val2014_000000403180.jpg -../coco/images/val2014/COCO_val2014_000000403315.jpg -../coco/images/val2014/COCO_val2014_000000403378.jpg -../coco/images/val2014/COCO_val2014_000000403639.jpg -../coco/images/val2014/COCO_val2014_000000403675.jpg -../coco/images/val2014/COCO_val2014_000000403950.jpg -../coco/images/val2014/COCO_val2014_000000403975.jpg -../coco/images/val2014/COCO_val2014_000000404027.jpg -../coco/images/val2014/COCO_val2014_000000404601.jpg -../coco/images/val2014/COCO_val2014_000000404602.jpg -../coco/images/val2014/COCO_val2014_000000404886.jpg -../coco/images/val2014/COCO_val2014_000000404889.jpg -../coco/images/val2014/COCO_val2014_000000405062.jpg -../coco/images/val2014/COCO_val2014_000000405104.jpg -../coco/images/val2014/COCO_val2014_000000405226.jpg -../coco/images/val2014/COCO_val2014_000000405306.jpg -../coco/images/val2014/COCO_val2014_000000405530.jpg -../coco/images/val2014/COCO_val2014_000000405970.jpg -../coco/images/val2014/COCO_val2014_000000406053.jpg -../coco/images/val2014/COCO_val2014_000000406211.jpg -../coco/images/val2014/COCO_val2014_000000406217.jpg -../coco/images/val2014/COCO_val2014_000000406417.jpg -../coco/images/val2014/COCO_val2014_000000406451.jpg -../coco/images/val2014/COCO_val2014_000000406841.jpg -../coco/images/val2014/COCO_val2014_000000406848.jpg -../coco/images/val2014/COCO_val2014_000000406976.jpg -../coco/images/val2014/COCO_val2014_000000407017.jpg -../coco/images/val2014/COCO_val2014_000000407259.jpg -../coco/images/val2014/COCO_val2014_000000407443.jpg -../coco/images/val2014/COCO_val2014_000000407524.jpg -../coco/images/val2014/COCO_val2014_000000407650.jpg -../coco/images/val2014/COCO_val2014_000000407945.jpg -../coco/images/val2014/COCO_val2014_000000407948.jpg -../coco/images/val2014/COCO_val2014_000000407960.jpg -../coco/images/val2014/COCO_val2014_000000408120.jpg -../coco/images/val2014/COCO_val2014_000000408208.jpg -../coco/images/val2014/COCO_val2014_000000408255.jpg -../coco/images/val2014/COCO_val2014_000000408336.jpg -../coco/images/val2014/COCO_val2014_000000408534.jpg -../coco/images/val2014/COCO_val2014_000000408774.jpg -../coco/images/val2014/COCO_val2014_000000408830.jpg -../coco/images/val2014/COCO_val2014_000000408873.jpg -../coco/images/val2014/COCO_val2014_000000409100.jpg -../coco/images/val2014/COCO_val2014_000000409115.jpg -../coco/images/val2014/COCO_val2014_000000409181.jpg -../coco/images/val2014/COCO_val2014_000000409542.jpg -../coco/images/val2014/COCO_val2014_000000409725.jpg -../coco/images/val2014/COCO_val2014_000000409964.jpg -../coco/images/val2014/COCO_val2014_000000410068.jpg -../coco/images/val2014/COCO_val2014_000000410576.jpg -../coco/images/val2014/COCO_val2014_000000410583.jpg -../coco/images/val2014/COCO_val2014_000000410587.jpg -../coco/images/val2014/COCO_val2014_000000410612.jpg -../coco/images/val2014/COCO_val2014_000000410724.jpg -../coco/images/val2014/COCO_val2014_000000411187.jpg -../coco/images/val2014/COCO_val2014_000000411188.jpg -../coco/images/val2014/COCO_val2014_000000411405.jpg -../coco/images/val2014/COCO_val2014_000000411768.jpg -../coco/images/val2014/COCO_val2014_000000411774.jpg -../coco/images/val2014/COCO_val2014_000000411821.jpg -../coco/images/val2014/COCO_val2014_000000412015.jpg -../coco/images/val2014/COCO_val2014_000000412204.jpg -../coco/images/val2014/COCO_val2014_000000412240.jpg -../coco/images/val2014/COCO_val2014_000000412364.jpg -../coco/images/val2014/COCO_val2014_000000412437.jpg -../coco/images/val2014/COCO_val2014_000000412464.jpg -../coco/images/val2014/COCO_val2014_000000412510.jpg -../coco/images/val2014/COCO_val2014_000000412551.jpg -../coco/images/val2014/COCO_val2014_000000412592.jpg -../coco/images/val2014/COCO_val2014_000000412604.jpg -../coco/images/val2014/COCO_val2014_000000412753.jpg -../coco/images/val2014/COCO_val2014_000000413339.jpg -../coco/images/val2014/COCO_val2014_000000413341.jpg -../coco/images/val2014/COCO_val2014_000000413616.jpg -../coco/images/val2014/COCO_val2014_000000413822.jpg -../coco/images/val2014/COCO_val2014_000000413839.jpg -../coco/images/val2014/COCO_val2014_000000413950.jpg -../coco/images/val2014/COCO_val2014_000000413959.jpg -../coco/images/val2014/COCO_val2014_000000414122.jpg -../coco/images/val2014/COCO_val2014_000000414216.jpg -../coco/images/val2014/COCO_val2014_000000414261.jpg -../coco/images/val2014/COCO_val2014_000000414289.jpg -../coco/images/val2014/COCO_val2014_000000414661.jpg -../coco/images/val2014/COCO_val2014_000000414698.jpg -../coco/images/val2014/COCO_val2014_000000414857.jpg -../coco/images/val2014/COCO_val2014_000000415020.jpg -../coco/images/val2014/COCO_val2014_000000415163.jpg -../coco/images/val2014/COCO_val2014_000000415393.jpg -../coco/images/val2014/COCO_val2014_000000415434.jpg -../coco/images/val2014/COCO_val2014_000000415585.jpg -../coco/images/val2014/COCO_val2014_000000415770.jpg -../coco/images/val2014/COCO_val2014_000000415798.jpg -../coco/images/val2014/COCO_val2014_000000415841.jpg -../coco/images/val2014/COCO_val2014_000000415882.jpg -../coco/images/val2014/COCO_val2014_000000415885.jpg -../coco/images/val2014/COCO_val2014_000000415958.jpg -../coco/images/val2014/COCO_val2014_000000416059.jpg -../coco/images/val2014/COCO_val2014_000000416088.jpg -../coco/images/val2014/COCO_val2014_000000416385.jpg -../coco/images/val2014/COCO_val2014_000000416405.jpg -../coco/images/val2014/COCO_val2014_000000416467.jpg -../coco/images/val2014/COCO_val2014_000000416489.jpg -../coco/images/val2014/COCO_val2014_000000416660.jpg -../coco/images/val2014/COCO_val2014_000000416668.jpg -../coco/images/val2014/COCO_val2014_000000416885.jpg -../coco/images/val2014/COCO_val2014_000000417416.jpg -../coco/images/val2014/COCO_val2014_000000417727.jpg -../coco/images/val2014/COCO_val2014_000000417846.jpg -../coco/images/val2014/COCO_val2014_000000417946.jpg -../coco/images/val2014/COCO_val2014_000000417965.jpg -../coco/images/val2014/COCO_val2014_000000418226.jpg -../coco/images/val2014/COCO_val2014_000000418275.jpg -../coco/images/val2014/COCO_val2014_000000418288.jpg -../coco/images/val2014/COCO_val2014_000000418533.jpg -../coco/images/val2014/COCO_val2014_000000418548.jpg -../coco/images/val2014/COCO_val2014_000000418565.jpg -../coco/images/val2014/COCO_val2014_000000418961.jpg -../coco/images/val2014/COCO_val2014_000000419216.jpg -../coco/images/val2014/COCO_val2014_000000419371.jpg -../coco/images/val2014/COCO_val2014_000000419379.jpg -../coco/images/val2014/COCO_val2014_000000419386.jpg -../coco/images/val2014/COCO_val2014_000000419558.jpg -../coco/images/val2014/COCO_val2014_000000419848.jpg -../coco/images/val2014/COCO_val2014_000000420059.jpg -../coco/images/val2014/COCO_val2014_000000420230.jpg -../coco/images/val2014/COCO_val2014_000000420339.jpg -../coco/images/val2014/COCO_val2014_000000420546.jpg -../coco/images/val2014/COCO_val2014_000000420610.jpg -../coco/images/val2014/COCO_val2014_000000420882.jpg -../coco/images/val2014/COCO_val2014_000000420929.jpg -../coco/images/val2014/COCO_val2014_000000421361.jpg -../coco/images/val2014/COCO_val2014_000000421401.jpg -../coco/images/val2014/COCO_val2014_000000421673.jpg -../coco/images/val2014/COCO_val2014_000000422424.jpg -../coco/images/val2014/COCO_val2014_000000422432.jpg -../coco/images/val2014/COCO_val2014_000000422536.jpg -../coco/images/val2014/COCO_val2014_000000422622.jpg -../coco/images/val2014/COCO_val2014_000000422706.jpg -../coco/images/val2014/COCO_val2014_000000422778.jpg -../coco/images/val2014/COCO_val2014_000000422833.jpg -../coco/images/val2014/COCO_val2014_000000422870.jpg -../coco/images/val2014/COCO_val2014_000000423005.jpg -../coco/images/val2014/COCO_val2014_000000423048.jpg -../coco/images/val2014/COCO_val2014_000000423104.jpg -../coco/images/val2014/COCO_val2014_000000423123.jpg -../coco/images/val2014/COCO_val2014_000000423172.jpg -../coco/images/val2014/COCO_val2014_000000423189.jpg -../coco/images/val2014/COCO_val2014_000000423337.jpg -../coco/images/val2014/COCO_val2014_000000423613.jpg -../coco/images/val2014/COCO_val2014_000000423617.jpg -../coco/images/val2014/COCO_val2014_000000423715.jpg -../coco/images/val2014/COCO_val2014_000000423740.jpg -../coco/images/val2014/COCO_val2014_000000424147.jpg -../coco/images/val2014/COCO_val2014_000000424155.jpg -../coco/images/val2014/COCO_val2014_000000424192.jpg -../coco/images/val2014/COCO_val2014_000000424247.jpg -../coco/images/val2014/COCO_val2014_000000424293.jpg -../coco/images/val2014/COCO_val2014_000000424378.jpg -../coco/images/val2014/COCO_val2014_000000424392.jpg -../coco/images/val2014/COCO_val2014_000000424633.jpg -../coco/images/val2014/COCO_val2014_000000424975.jpg -../coco/images/val2014/COCO_val2014_000000425303.jpg -../coco/images/val2014/COCO_val2014_000000425324.jpg -../coco/images/val2014/COCO_val2014_000000425371.jpg -../coco/images/val2014/COCO_val2014_000000425388.jpg -../coco/images/val2014/COCO_val2014_000000425462.jpg -../coco/images/val2014/COCO_val2014_000000425475.jpg -../coco/images/val2014/COCO_val2014_000000425526.jpg -../coco/images/val2014/COCO_val2014_000000425848.jpg -../coco/images/val2014/COCO_val2014_000000425870.jpg -../coco/images/val2014/COCO_val2014_000000425948.jpg -../coco/images/val2014/COCO_val2014_000000425973.jpg -../coco/images/val2014/COCO_val2014_000000426070.jpg -../coco/images/val2014/COCO_val2014_000000426075.jpg -../coco/images/val2014/COCO_val2014_000000426377.jpg -../coco/images/val2014/COCO_val2014_000000426532.jpg -../coco/images/val2014/COCO_val2014_000000426795.jpg -../coco/images/val2014/COCO_val2014_000000426852.jpg -../coco/images/val2014/COCO_val2014_000000426917.jpg -../coco/images/val2014/COCO_val2014_000000427223.jpg -../coco/images/val2014/COCO_val2014_000000427500.jpg -../coco/images/val2014/COCO_val2014_000000427561.jpg -../coco/images/val2014/COCO_val2014_000000427782.jpg -../coco/images/val2014/COCO_val2014_000000427965.jpg -../coco/images/val2014/COCO_val2014_000000428178.jpg -../coco/images/val2014/COCO_val2014_000000428231.jpg -../coco/images/val2014/COCO_val2014_000000428234.jpg -../coco/images/val2014/COCO_val2014_000000428248.jpg -../coco/images/val2014/COCO_val2014_000000428366.jpg -../coco/images/val2014/COCO_val2014_000000428562.jpg -../coco/images/val2014/COCO_val2014_000000428812.jpg -../coco/images/val2014/COCO_val2014_000000428867.jpg -../coco/images/val2014/COCO_val2014_000000429293.jpg -../coco/images/val2014/COCO_val2014_000000429369.jpg -../coco/images/val2014/COCO_val2014_000000429718.jpg -../coco/images/val2014/COCO_val2014_000000429924.jpg -../coco/images/val2014/COCO_val2014_000000429996.jpg -../coco/images/val2014/COCO_val2014_000000430056.jpg -../coco/images/val2014/COCO_val2014_000000430073.jpg -../coco/images/val2014/COCO_val2014_000000430238.jpg -../coco/images/val2014/COCO_val2014_000000430286.jpg -../coco/images/val2014/COCO_val2014_000000430467.jpg -../coco/images/val2014/COCO_val2014_000000430518.jpg -../coco/images/val2014/COCO_val2014_000000430583.jpg -../coco/images/val2014/COCO_val2014_000000430590.jpg -../coco/images/val2014/COCO_val2014_000000430744.jpg -../coco/images/val2014/COCO_val2014_000000430788.jpg -../coco/images/val2014/COCO_val2014_000000430875.jpg -../coco/images/val2014/COCO_val2014_000000430973.jpg -../coco/images/val2014/COCO_val2014_000000431047.jpg -../coco/images/val2014/COCO_val2014_000000431236.jpg -../coco/images/val2014/COCO_val2014_000000431257.jpg -../coco/images/val2014/COCO_val2014_000000431464.jpg -../coco/images/val2014/COCO_val2014_000000431472.jpg -../coco/images/val2014/COCO_val2014_000000431521.jpg -../coco/images/val2014/COCO_val2014_000000431573.jpg -../coco/images/val2014/COCO_val2014_000000431594.jpg -../coco/images/val2014/COCO_val2014_000000431615.jpg -../coco/images/val2014/COCO_val2014_000000431671.jpg -../coco/images/val2014/COCO_val2014_000000431727.jpg -../coco/images/val2014/COCO_val2014_000000431742.jpg -../coco/images/val2014/COCO_val2014_000000432125.jpg -../coco/images/val2014/COCO_val2014_000000432160.jpg -../coco/images/val2014/COCO_val2014_000000432276.jpg -../coco/images/val2014/COCO_val2014_000000432534.jpg -../coco/images/val2014/COCO_val2014_000000432898.jpg -../coco/images/val2014/COCO_val2014_000000433075.jpg -../coco/images/val2014/COCO_val2014_000000433554.jpg -../coco/images/val2014/COCO_val2014_000000433714.jpg -../coco/images/val2014/COCO_val2014_000000433804.jpg -../coco/images/val2014/COCO_val2014_000000433845.jpg -../coco/images/val2014/COCO_val2014_000000433883.jpg -../coco/images/val2014/COCO_val2014_000000433892.jpg -../coco/images/val2014/COCO_val2014_000000433963.jpg -../coco/images/val2014/COCO_val2014_000000433980.jpg -../coco/images/val2014/COCO_val2014_000000434006.jpg -../coco/images/val2014/COCO_val2014_000000434060.jpg -../coco/images/val2014/COCO_val2014_000000434219.jpg -../coco/images/val2014/COCO_val2014_000000434410.jpg -../coco/images/val2014/COCO_val2014_000000434488.jpg -../coco/images/val2014/COCO_val2014_000000434580.jpg -../coco/images/val2014/COCO_val2014_000000434622.jpg -../coco/images/val2014/COCO_val2014_000000434657.jpg -../coco/images/val2014/COCO_val2014_000000434787.jpg -../coco/images/val2014/COCO_val2014_000000434898.jpg -../coco/images/val2014/COCO_val2014_000000434915.jpg -../coco/images/val2014/COCO_val2014_000000435205.jpg -../coco/images/val2014/COCO_val2014_000000435206.jpg -../coco/images/val2014/COCO_val2014_000000435359.jpg -../coco/images/val2014/COCO_val2014_000000435391.jpg -../coco/images/val2014/COCO_val2014_000000435466.jpg -../coco/images/val2014/COCO_val2014_000000435533.jpg -../coco/images/val2014/COCO_val2014_000000435569.jpg -../coco/images/val2014/COCO_val2014_000000435598.jpg -../coco/images/val2014/COCO_val2014_000000435671.jpg -../coco/images/val2014/COCO_val2014_000000435703.jpg -../coco/images/val2014/COCO_val2014_000000435707.jpg -../coco/images/val2014/COCO_val2014_000000435742.jpg -../coco/images/val2014/COCO_val2014_000000435820.jpg -../coco/images/val2014/COCO_val2014_000000435823.jpg -../coco/images/val2014/COCO_val2014_000000435910.jpg -../coco/images/val2014/COCO_val2014_000000436044.jpg -../coco/images/val2014/COCO_val2014_000000436203.jpg -../coco/images/val2014/COCO_val2014_000000436350.jpg -../coco/images/val2014/COCO_val2014_000000436413.jpg -../coco/images/val2014/COCO_val2014_000000436603.jpg -../coco/images/val2014/COCO_val2014_000000436653.jpg -../coco/images/val2014/COCO_val2014_000000436694.jpg -../coco/images/val2014/COCO_val2014_000000436696.jpg -../coco/images/val2014/COCO_val2014_000000436738.jpg -../coco/images/val2014/COCO_val2014_000000437284.jpg -../coco/images/val2014/COCO_val2014_000000437298.jpg -../coco/images/val2014/COCO_val2014_000000437303.jpg -../coco/images/val2014/COCO_val2014_000000437393.jpg -../coco/images/val2014/COCO_val2014_000000437459.jpg -../coco/images/val2014/COCO_val2014_000000437720.jpg -../coco/images/val2014/COCO_val2014_000000437923.jpg -../coco/images/val2014/COCO_val2014_000000438103.jpg -../coco/images/val2014/COCO_val2014_000000438220.jpg -../coco/images/val2014/COCO_val2014_000000438807.jpg -../coco/images/val2014/COCO_val2014_000000438851.jpg -../coco/images/val2014/COCO_val2014_000000438985.jpg -../coco/images/val2014/COCO_val2014_000000438999.jpg -../coco/images/val2014/COCO_val2014_000000439015.jpg -../coco/images/val2014/COCO_val2014_000000439339.jpg -../coco/images/val2014/COCO_val2014_000000439522.jpg -../coco/images/val2014/COCO_val2014_000000439651.jpg -../coco/images/val2014/COCO_val2014_000000439777.jpg -../coco/images/val2014/COCO_val2014_000000440043.jpg -../coco/images/val2014/COCO_val2014_000000440062.jpg -../coco/images/val2014/COCO_val2014_000000440226.jpg -../coco/images/val2014/COCO_val2014_000000440299.jpg -../coco/images/val2014/COCO_val2014_000000440486.jpg -../coco/images/val2014/COCO_val2014_000000440500.jpg -../coco/images/val2014/COCO_val2014_000000440617.jpg -../coco/images/val2014/COCO_val2014_000000440646.jpg -../coco/images/val2014/COCO_val2014_000000440706.jpg -../coco/images/val2014/COCO_val2014_000000440779.jpg -../coco/images/val2014/COCO_val2014_000000441009.jpg -../coco/images/val2014/COCO_val2014_000000441072.jpg -../coco/images/val2014/COCO_val2014_000000441156.jpg -../coco/images/val2014/COCO_val2014_000000441211.jpg -../coco/images/val2014/COCO_val2014_000000441247.jpg -../coco/images/val2014/COCO_val2014_000000441496.jpg -../coco/images/val2014/COCO_val2014_000000441500.jpg -../coco/images/val2014/COCO_val2014_000000441695.jpg -../coco/images/val2014/COCO_val2014_000000441788.jpg -../coco/images/val2014/COCO_val2014_000000441824.jpg -../coco/images/val2014/COCO_val2014_000000441863.jpg -../coco/images/val2014/COCO_val2014_000000441969.jpg -../coco/images/val2014/COCO_val2014_000000441974.jpg -../coco/images/val2014/COCO_val2014_000000442128.jpg -../coco/images/val2014/COCO_val2014_000000442210.jpg -../coco/images/val2014/COCO_val2014_000000442223.jpg -../coco/images/val2014/COCO_val2014_000000442323.jpg -../coco/images/val2014/COCO_val2014_000000442387.jpg -../coco/images/val2014/COCO_val2014_000000442417.jpg -../coco/images/val2014/COCO_val2014_000000442523.jpg -../coco/images/val2014/COCO_val2014_000000442539.jpg -../coco/images/val2014/COCO_val2014_000000442746.jpg -../coco/images/val2014/COCO_val2014_000000442822.jpg -../coco/images/val2014/COCO_val2014_000000442877.jpg -../coco/images/val2014/COCO_val2014_000000442952.jpg -../coco/images/val2014/COCO_val2014_000000443313.jpg -../coco/images/val2014/COCO_val2014_000000443334.jpg -../coco/images/val2014/COCO_val2014_000000443343.jpg -../coco/images/val2014/COCO_val2014_000000443361.jpg -../coco/images/val2014/COCO_val2014_000000443498.jpg -../coco/images/val2014/COCO_val2014_000000443537.jpg -../coco/images/val2014/COCO_val2014_000000443591.jpg -../coco/images/val2014/COCO_val2014_000000443723.jpg -../coco/images/val2014/COCO_val2014_000000443797.jpg -../coco/images/val2014/COCO_val2014_000000443969.jpg -../coco/images/val2014/COCO_val2014_000000444236.jpg -../coco/images/val2014/COCO_val2014_000000444304.jpg -../coco/images/val2014/COCO_val2014_000000444390.jpg -../coco/images/val2014/COCO_val2014_000000444495.jpg -../coco/images/val2014/COCO_val2014_000000444626.jpg -../coco/images/val2014/COCO_val2014_000000444746.jpg -../coco/images/val2014/COCO_val2014_000000444755.jpg -../coco/images/val2014/COCO_val2014_000000444879.jpg -../coco/images/val2014/COCO_val2014_000000444888.jpg -../coco/images/val2014/COCO_val2014_000000445009.jpg -../coco/images/val2014/COCO_val2014_000000445014.jpg -../coco/images/val2014/COCO_val2014_000000445200.jpg -../coco/images/val2014/COCO_val2014_000000445267.jpg -../coco/images/val2014/COCO_val2014_000000445512.jpg -../coco/images/val2014/COCO_val2014_000000445567.jpg -../coco/images/val2014/COCO_val2014_000000445594.jpg -../coco/images/val2014/COCO_val2014_000000445602.jpg -../coco/images/val2014/COCO_val2014_000000445643.jpg -../coco/images/val2014/COCO_val2014_000000446324.jpg -../coco/images/val2014/COCO_val2014_000000446358.jpg -../coco/images/val2014/COCO_val2014_000000446623.jpg -../coco/images/val2014/COCO_val2014_000000446990.jpg -../coco/images/val2014/COCO_val2014_000000447208.jpg -../coco/images/val2014/COCO_val2014_000000447242.jpg -../coco/images/val2014/COCO_val2014_000000447354.jpg -../coco/images/val2014/COCO_val2014_000000447378.jpg -../coco/images/val2014/COCO_val2014_000000447501.jpg -../coco/images/val2014/COCO_val2014_000000447779.jpg -../coco/images/val2014/COCO_val2014_000000448053.jpg -../coco/images/val2014/COCO_val2014_000000448114.jpg -../coco/images/val2014/COCO_val2014_000000448117.jpg -../coco/images/val2014/COCO_val2014_000000448236.jpg -../coco/images/val2014/COCO_val2014_000000448256.jpg -../coco/images/val2014/COCO_val2014_000000448278.jpg -../coco/images/val2014/COCO_val2014_000000448511.jpg -../coco/images/val2014/COCO_val2014_000000448690.jpg -../coco/images/val2014/COCO_val2014_000000448786.jpg -../coco/images/val2014/COCO_val2014_000000448923.jpg -../coco/images/val2014/COCO_val2014_000000448998.jpg -../coco/images/val2014/COCO_val2014_000000449031.jpg -../coco/images/val2014/COCO_val2014_000000449338.jpg -../coco/images/val2014/COCO_val2014_000000449392.jpg -../coco/images/val2014/COCO_val2014_000000449412.jpg -../coco/images/val2014/COCO_val2014_000000449432.jpg -../coco/images/val2014/COCO_val2014_000000449466.jpg -../coco/images/val2014/COCO_val2014_000000449485.jpg -../coco/images/val2014/COCO_val2014_000000449522.jpg -../coco/images/val2014/COCO_val2014_000000449872.jpg -../coco/images/val2014/COCO_val2014_000000449888.jpg -../coco/images/val2014/COCO_val2014_000000449903.jpg -../coco/images/val2014/COCO_val2014_000000449976.jpg -../coco/images/val2014/COCO_val2014_000000449981.jpg -../coco/images/val2014/COCO_val2014_000000450098.jpg -../coco/images/val2014/COCO_val2014_000000450355.jpg -../coco/images/val2014/COCO_val2014_000000450458.jpg -../coco/images/val2014/COCO_val2014_000000450559.jpg -../coco/images/val2014/COCO_val2014_000000450596.jpg -../coco/images/val2014/COCO_val2014_000000450655.jpg -../coco/images/val2014/COCO_val2014_000000450695.jpg -../coco/images/val2014/COCO_val2014_000000451014.jpg -../coco/images/val2014/COCO_val2014_000000451120.jpg -../coco/images/val2014/COCO_val2014_000000451305.jpg -../coco/images/val2014/COCO_val2014_000000451345.jpg -../coco/images/val2014/COCO_val2014_000000451440.jpg -../coco/images/val2014/COCO_val2014_000000451468.jpg -../coco/images/val2014/COCO_val2014_000000451679.jpg -../coco/images/val2014/COCO_val2014_000000451683.jpg -../coco/images/val2014/COCO_val2014_000000452195.jpg -../coco/images/val2014/COCO_val2014_000000452218.jpg -../coco/images/val2014/COCO_val2014_000000452308.jpg -../coco/images/val2014/COCO_val2014_000000452461.jpg -../coco/images/val2014/COCO_val2014_000000452516.jpg -../coco/images/val2014/COCO_val2014_000000452611.jpg -../coco/images/val2014/COCO_val2014_000000452618.jpg -../coco/images/val2014/COCO_val2014_000000452676.jpg -../coco/images/val2014/COCO_val2014_000000452759.jpg -../coco/images/val2014/COCO_val2014_000000452947.jpg -../coco/images/val2014/COCO_val2014_000000453040.jpg -../coco/images/val2014/COCO_val2014_000000453104.jpg -../coco/images/val2014/COCO_val2014_000000453162.jpg -../coco/images/val2014/COCO_val2014_000000453166.jpg -../coco/images/val2014/COCO_val2014_000000453755.jpg -../coco/images/val2014/COCO_val2014_000000453926.jpg -../coco/images/val2014/COCO_val2014_000000454161.jpg -../coco/images/val2014/COCO_val2014_000000454414.jpg -../coco/images/val2014/COCO_val2014_000000454561.jpg -../coco/images/val2014/COCO_val2014_000000454741.jpg -../coco/images/val2014/COCO_val2014_000000454750.jpg -../coco/images/val2014/COCO_val2014_000000455299.jpg -../coco/images/val2014/COCO_val2014_000000455325.jpg -../coco/images/val2014/COCO_val2014_000000455343.jpg -../coco/images/val2014/COCO_val2014_000000455355.jpg -../coco/images/val2014/COCO_val2014_000000455365.jpg -../coco/images/val2014/COCO_val2014_000000455384.jpg -../coco/images/val2014/COCO_val2014_000000455395.jpg -../coco/images/val2014/COCO_val2014_000000455414.jpg -../coco/images/val2014/COCO_val2014_000000455515.jpg -../coco/images/val2014/COCO_val2014_000000455557.jpg -../coco/images/val2014/COCO_val2014_000000455675.jpg -../coco/images/val2014/COCO_val2014_000000455750.jpg -../coco/images/val2014/COCO_val2014_000000455767.jpg -../coco/images/val2014/COCO_val2014_000000456015.jpg -../coco/images/val2014/COCO_val2014_000000456143.jpg -../coco/images/val2014/COCO_val2014_000000456420.jpg -../coco/images/val2014/COCO_val2014_000000456725.jpg -../coco/images/val2014/COCO_val2014_000000457217.jpg -../coco/images/val2014/COCO_val2014_000000457230.jpg -../coco/images/val2014/COCO_val2014_000000457262.jpg -../coco/images/val2014/COCO_val2014_000000457271.jpg -../coco/images/val2014/COCO_val2014_000000457436.jpg -../coco/images/val2014/COCO_val2014_000000457717.jpg -../coco/images/val2014/COCO_val2014_000000457901.jpg -../coco/images/val2014/COCO_val2014_000000458054.jpg -../coco/images/val2014/COCO_val2014_000000458103.jpg -../coco/images/val2014/COCO_val2014_000000458275.jpg -../coco/images/val2014/COCO_val2014_000000458846.jpg -../coco/images/val2014/COCO_val2014_000000458953.jpg -../coco/images/val2014/COCO_val2014_000000459164.jpg -../coco/images/val2014/COCO_val2014_000000459400.jpg -../coco/images/val2014/COCO_val2014_000000459590.jpg -../coco/images/val2014/COCO_val2014_000000459733.jpg -../coco/images/val2014/COCO_val2014_000000459757.jpg -../coco/images/val2014/COCO_val2014_000000459933.jpg -../coco/images/val2014/COCO_val2014_000000460022.jpg -../coco/images/val2014/COCO_val2014_000000460053.jpg -../coco/images/val2014/COCO_val2014_000000460129.jpg -../coco/images/val2014/COCO_val2014_000000460147.jpg -../coco/images/val2014/COCO_val2014_000000460149.jpg -../coco/images/val2014/COCO_val2014_000000460251.jpg -../coco/images/val2014/COCO_val2014_000000460461.jpg -../coco/images/val2014/COCO_val2014_000000460652.jpg -../coco/images/val2014/COCO_val2014_000000460676.jpg -../coco/images/val2014/COCO_val2014_000000460684.jpg -../coco/images/val2014/COCO_val2014_000000460757.jpg -../coco/images/val2014/COCO_val2014_000000460812.jpg -../coco/images/val2014/COCO_val2014_000000460967.jpg -../coco/images/val2014/COCO_val2014_000000461007.jpg -../coco/images/val2014/COCO_val2014_000000461123.jpg -../coco/images/val2014/COCO_val2014_000000461275.jpg -../coco/images/val2014/COCO_val2014_000000461278.jpg -../coco/images/val2014/COCO_val2014_000000461331.jpg -../coco/images/val2014/COCO_val2014_000000461681.jpg -../coco/images/val2014/COCO_val2014_000000461898.jpg -../coco/images/val2014/COCO_val2014_000000461953.jpg -../coco/images/val2014/COCO_val2014_000000461993.jpg -../coco/images/val2014/COCO_val2014_000000462213.jpg -../coco/images/val2014/COCO_val2014_000000462241.jpg -../coco/images/val2014/COCO_val2014_000000462315.jpg -../coco/images/val2014/COCO_val2014_000000462330.jpg -../coco/images/val2014/COCO_val2014_000000462466.jpg -../coco/images/val2014/COCO_val2014_000000462629.jpg -../coco/images/val2014/COCO_val2014_000000462677.jpg -../coco/images/val2014/COCO_val2014_000000462953.jpg -../coco/images/val2014/COCO_val2014_000000462978.jpg -../coco/images/val2014/COCO_val2014_000000462982.jpg -../coco/images/val2014/COCO_val2014_000000463037.jpg -../coco/images/val2014/COCO_val2014_000000463084.jpg -../coco/images/val2014/COCO_val2014_000000463283.jpg -../coco/images/val2014/COCO_val2014_000000463303.jpg -../coco/images/val2014/COCO_val2014_000000463398.jpg -../coco/images/val2014/COCO_val2014_000000463452.jpg -../coco/images/val2014/COCO_val2014_000000463555.jpg -../coco/images/val2014/COCO_val2014_000000463898.jpg -../coco/images/val2014/COCO_val2014_000000463913.jpg -../coco/images/val2014/COCO_val2014_000000464248.jpg -../coco/images/val2014/COCO_val2014_000000464390.jpg -../coco/images/val2014/COCO_val2014_000000465087.jpg -../coco/images/val2014/COCO_val2014_000000465588.jpg -../coco/images/val2014/COCO_val2014_000000465692.jpg -../coco/images/val2014/COCO_val2014_000000465715.jpg -../coco/images/val2014/COCO_val2014_000000465735.jpg -../coco/images/val2014/COCO_val2014_000000465822.jpg -../coco/images/val2014/COCO_val2014_000000465887.jpg -../coco/images/val2014/COCO_val2014_000000465986.jpg -../coco/images/val2014/COCO_val2014_000000466005.jpg -../coco/images/val2014/COCO_val2014_000000466347.jpg -../coco/images/val2014/COCO_val2014_000000466456.jpg -../coco/images/val2014/COCO_val2014_000000466570.jpg -../coco/images/val2014/COCO_val2014_000000466583.jpg -../coco/images/val2014/COCO_val2014_000000467022.jpg -../coco/images/val2014/COCO_val2014_000000467116.jpg -../coco/images/val2014/COCO_val2014_000000467138.jpg -../coco/images/val2014/COCO_val2014_000000467477.jpg -../coco/images/val2014/COCO_val2014_000000467540.jpg -../coco/images/val2014/COCO_val2014_000000467705.jpg -../coco/images/val2014/COCO_val2014_000000467726.jpg -../coco/images/val2014/COCO_val2014_000000467821.jpg -../coco/images/val2014/COCO_val2014_000000467951.jpg -../coco/images/val2014/COCO_val2014_000000467990.jpg -../coco/images/val2014/COCO_val2014_000000468012.jpg -../coco/images/val2014/COCO_val2014_000000468129.jpg -../coco/images/val2014/COCO_val2014_000000468178.jpg -../coco/images/val2014/COCO_val2014_000000468354.jpg -../coco/images/val2014/COCO_val2014_000000468736.jpg -../coco/images/val2014/COCO_val2014_000000468954.jpg -../coco/images/val2014/COCO_val2014_000000469085.jpg -../coco/images/val2014/COCO_val2014_000000469088.jpg -../coco/images/val2014/COCO_val2014_000000469096.jpg -../coco/images/val2014/COCO_val2014_000000469119.jpg -../coco/images/val2014/COCO_val2014_000000469356.jpg -../coco/images/val2014/COCO_val2014_000000469424.jpg -../coco/images/val2014/COCO_val2014_000000469634.jpg -../coco/images/val2014/COCO_val2014_000000469857.jpg -../coco/images/val2014/COCO_val2014_000000469961.jpg -../coco/images/val2014/COCO_val2014_000000469982.jpg -../coco/images/val2014/COCO_val2014_000000470070.jpg -../coco/images/val2014/COCO_val2014_000000470161.jpg -../coco/images/val2014/COCO_val2014_000000470173.jpg -../coco/images/val2014/COCO_val2014_000000470313.jpg -../coco/images/val2014/COCO_val2014_000000470370.jpg -../coco/images/val2014/COCO_val2014_000000470513.jpg -../coco/images/val2014/COCO_val2014_000000470746.jpg -../coco/images/val2014/COCO_val2014_000000471205.jpg -../coco/images/val2014/COCO_val2014_000000471394.jpg -../coco/images/val2014/COCO_val2014_000000471488.jpg -../coco/images/val2014/COCO_val2014_000000471858.jpg -../coco/images/val2014/COCO_val2014_000000471869.jpg -../coco/images/val2014/COCO_val2014_000000471893.jpg -../coco/images/val2014/COCO_val2014_000000472034.jpg -../coco/images/val2014/COCO_val2014_000000472078.jpg -../coco/images/val2014/COCO_val2014_000000472088.jpg -../coco/images/val2014/COCO_val2014_000000472160.jpg -../coco/images/val2014/COCO_val2014_000000472211.jpg -../coco/images/val2014/COCO_val2014_000000472643.jpg -../coco/images/val2014/COCO_val2014_000000472691.jpg -../coco/images/val2014/COCO_val2014_000000472762.jpg -../coco/images/val2014/COCO_val2014_000000472821.jpg -../coco/images/val2014/COCO_val2014_000000473015.jpg -../coco/images/val2014/COCO_val2014_000000473075.jpg -../coco/images/val2014/COCO_val2014_000000473109.jpg -../coco/images/val2014/COCO_val2014_000000473124.jpg -../coco/images/val2014/COCO_val2014_000000473171.jpg -../coco/images/val2014/COCO_val2014_000000473406.jpg -../coco/images/val2014/COCO_val2014_000000473415.jpg -../coco/images/val2014/COCO_val2014_000000473839.jpg -../coco/images/val2014/COCO_val2014_000000474003.jpg -../coco/images/val2014/COCO_val2014_000000474021.jpg -../coco/images/val2014/COCO_val2014_000000474028.jpg -../coco/images/val2014/COCO_val2014_000000474078.jpg -../coco/images/val2014/COCO_val2014_000000474110.jpg -../coco/images/val2014/COCO_val2014_000000474170.jpg -../coco/images/val2014/COCO_val2014_000000474246.jpg -../coco/images/val2014/COCO_val2014_000000474344.jpg -../coco/images/val2014/COCO_val2014_000000474384.jpg -../coco/images/val2014/COCO_val2014_000000474410.jpg -../coco/images/val2014/COCO_val2014_000000474600.jpg -../coco/images/val2014/COCO_val2014_000000474609.jpg -../coco/images/val2014/COCO_val2014_000000474906.jpg -../coco/images/val2014/COCO_val2014_000000475208.jpg -../coco/images/val2014/COCO_val2014_000000475229.jpg -../coco/images/val2014/COCO_val2014_000000475244.jpg -../coco/images/val2014/COCO_val2014_000000475398.jpg -../coco/images/val2014/COCO_val2014_000000475413.jpg -../coco/images/val2014/COCO_val2014_000000475572.jpg -../coco/images/val2014/COCO_val2014_000000475586.jpg -../coco/images/val2014/COCO_val2014_000000475879.jpg -../coco/images/val2014/COCO_val2014_000000475906.jpg -../coco/images/val2014/COCO_val2014_000000475944.jpg -../coco/images/val2014/COCO_val2014_000000476120.jpg -../coco/images/val2014/COCO_val2014_000000476172.jpg -../coco/images/val2014/COCO_val2014_000000476282.jpg -../coco/images/val2014/COCO_val2014_000000476300.jpg -../coco/images/val2014/COCO_val2014_000000476335.jpg -../coco/images/val2014/COCO_val2014_000000476339.jpg -../coco/images/val2014/COCO_val2014_000000476398.jpg -../coco/images/val2014/COCO_val2014_000000476455.jpg -../coco/images/val2014/COCO_val2014_000000476491.jpg -../coco/images/val2014/COCO_val2014_000000476647.jpg -../coco/images/val2014/COCO_val2014_000000476704.jpg -../coco/images/val2014/COCO_val2014_000000476856.jpg -../coco/images/val2014/COCO_val2014_000000476873.jpg -../coco/images/val2014/COCO_val2014_000000476925.jpg -../coco/images/val2014/COCO_val2014_000000477172.jpg -../coco/images/val2014/COCO_val2014_000000477305.jpg -../coco/images/val2014/COCO_val2014_000000477477.jpg -../coco/images/val2014/COCO_val2014_000000477623.jpg -../coco/images/val2014/COCO_val2014_000000477805.jpg -../coco/images/val2014/COCO_val2014_000000478120.jpg -../coco/images/val2014/COCO_val2014_000000478136.jpg -../coco/images/val2014/COCO_val2014_000000478184.jpg -../coco/images/val2014/COCO_val2014_000000478433.jpg -../coco/images/val2014/COCO_val2014_000000478490.jpg -../coco/images/val2014/COCO_val2014_000000478522.jpg -../coco/images/val2014/COCO_val2014_000000478621.jpg -../coco/images/val2014/COCO_val2014_000000478664.jpg -../coco/images/val2014/COCO_val2014_000000478874.jpg -../coco/images/val2014/COCO_val2014_000000479008.jpg -../coco/images/val2014/COCO_val2014_000000479078.jpg -../coco/images/val2014/COCO_val2014_000000479099.jpg -../coco/images/val2014/COCO_val2014_000000479334.jpg -../coco/images/val2014/COCO_val2014_000000479557.jpg -../coco/images/val2014/COCO_val2014_000000479597.jpg -../coco/images/val2014/COCO_val2014_000000479912.jpg -../coco/images/val2014/COCO_val2014_000000479938.jpg -../coco/images/val2014/COCO_val2014_000000479948.jpg -../coco/images/val2014/COCO_val2014_000000480075.jpg -../coco/images/val2014/COCO_val2014_000000480215.jpg -../coco/images/val2014/COCO_val2014_000000480345.jpg -../coco/images/val2014/COCO_val2014_000000480379.jpg -../coco/images/val2014/COCO_val2014_000000480472.jpg -../coco/images/val2014/COCO_val2014_000000480726.jpg -../coco/images/val2014/COCO_val2014_000000481327.jpg -../coco/images/val2014/COCO_val2014_000000481398.jpg -../coco/images/val2014/COCO_val2014_000000481404.jpg -../coco/images/val2014/COCO_val2014_000000481446.jpg -../coco/images/val2014/COCO_val2014_000000481890.jpg -../coco/images/val2014/COCO_val2014_000000482007.jpg -../coco/images/val2014/COCO_val2014_000000482021.jpg -../coco/images/val2014/COCO_val2014_000000482476.jpg -../coco/images/val2014/COCO_val2014_000000482477.jpg -../coco/images/val2014/COCO_val2014_000000482487.jpg -../coco/images/val2014/COCO_val2014_000000482605.jpg -../coco/images/val2014/COCO_val2014_000000482667.jpg -../coco/images/val2014/COCO_val2014_000000482707.jpg -../coco/images/val2014/COCO_val2014_000000482735.jpg -../coco/images/val2014/COCO_val2014_000000482774.jpg -../coco/images/val2014/COCO_val2014_000000482799.jpg -../coco/images/val2014/COCO_val2014_000000482951.jpg -../coco/images/val2014/COCO_val2014_000000483179.jpg -../coco/images/val2014/COCO_val2014_000000483389.jpg -../coco/images/val2014/COCO_val2014_000000483531.jpg -../coco/images/val2014/COCO_val2014_000000483564.jpg -../coco/images/val2014/COCO_val2014_000000483587.jpg -../coco/images/val2014/COCO_val2014_000000483849.jpg -../coco/images/val2014/COCO_val2014_000000483994.jpg -../coco/images/val2014/COCO_val2014_000000484066.jpg -../coco/images/val2014/COCO_val2014_000000484215.jpg -../coco/images/val2014/COCO_val2014_000000484225.jpg -../coco/images/val2014/COCO_val2014_000000484321.jpg -../coco/images/val2014/COCO_val2014_000000484397.jpg -../coco/images/val2014/COCO_val2014_000000484531.jpg -../coco/images/val2014/COCO_val2014_000000484674.jpg -../coco/images/val2014/COCO_val2014_000000484978.jpg -../coco/images/val2014/COCO_val2014_000000485139.jpg -../coco/images/val2014/COCO_val2014_000000485483.jpg -../coco/images/val2014/COCO_val2014_000000485485.jpg -../coco/images/val2014/COCO_val2014_000000485673.jpg -../coco/images/val2014/COCO_val2014_000000485740.jpg -../coco/images/val2014/COCO_val2014_000000486112.jpg -../coco/images/val2014/COCO_val2014_000000486175.jpg -../coco/images/val2014/COCO_val2014_000000486232.jpg -../coco/images/val2014/COCO_val2014_000000486568.jpg -../coco/images/val2014/COCO_val2014_000000486576.jpg -../coco/images/val2014/COCO_val2014_000000486580.jpg -../coco/images/val2014/COCO_val2014_000000486632.jpg -../coco/images/val2014/COCO_val2014_000000486788.jpg -../coco/images/val2014/COCO_val2014_000000486803.jpg -../coco/images/val2014/COCO_val2014_000000486991.jpg -../coco/images/val2014/COCO_val2014_000000487222.jpg -../coco/images/val2014/COCO_val2014_000000487282.jpg -../coco/images/val2014/COCO_val2014_000000487391.jpg -../coco/images/val2014/COCO_val2014_000000487630.jpg -../coco/images/val2014/COCO_val2014_000000487659.jpg -../coco/images/val2014/COCO_val2014_000000487698.jpg -../coco/images/val2014/COCO_val2014_000000487702.jpg -../coco/images/val2014/COCO_val2014_000000487720.jpg -../coco/images/val2014/COCO_val2014_000000488075.jpg -../coco/images/val2014/COCO_val2014_000000488250.jpg -../coco/images/val2014/COCO_val2014_000000488360.jpg -../coco/images/val2014/COCO_val2014_000000488385.jpg -../coco/images/val2014/COCO_val2014_000000488386.jpg -../coco/images/val2014/COCO_val2014_000000488522.jpg -../coco/images/val2014/COCO_val2014_000000488664.jpg -../coco/images/val2014/COCO_val2014_000000488723.jpg -../coco/images/val2014/COCO_val2014_000000488736.jpg -../coco/images/val2014/COCO_val2014_000000488979.jpg -../coco/images/val2014/COCO_val2014_000000489019.jpg -../coco/images/val2014/COCO_val2014_000000489235.jpg -../coco/images/val2014/COCO_val2014_000000489266.jpg -../coco/images/val2014/COCO_val2014_000000489304.jpg -../coco/images/val2014/COCO_val2014_000000489344.jpg -../coco/images/val2014/COCO_val2014_000000489475.jpg -../coco/images/val2014/COCO_val2014_000000489764.jpg -../coco/images/val2014/COCO_val2014_000000489940.jpg -../coco/images/val2014/COCO_val2014_000000490022.jpg -../coco/images/val2014/COCO_val2014_000000490051.jpg -../coco/images/val2014/COCO_val2014_000000490105.jpg -../coco/images/val2014/COCO_val2014_000000490171.jpg -../coco/images/val2014/COCO_val2014_000000490286.jpg -../coco/images/val2014/COCO_val2014_000000490306.jpg -../coco/images/val2014/COCO_val2014_000000490338.jpg -../coco/images/val2014/COCO_val2014_000000490491.jpg -../coco/images/val2014/COCO_val2014_000000490505.jpg -../coco/images/val2014/COCO_val2014_000000490702.jpg -../coco/images/val2014/COCO_val2014_000000490860.jpg -../coco/images/val2014/COCO_val2014_000000490952.jpg -../coco/images/val2014/COCO_val2014_000000491169.jpg -../coco/images/val2014/COCO_val2014_000000491336.jpg -../coco/images/val2014/COCO_val2014_000000491377.jpg -../coco/images/val2014/COCO_val2014_000000491408.jpg -../coco/images/val2014/COCO_val2014_000000491449.jpg -../coco/images/val2014/COCO_val2014_000000491481.jpg -../coco/images/val2014/COCO_val2014_000000491835.jpg -../coco/images/val2014/COCO_val2014_000000491836.jpg -../coco/images/val2014/COCO_val2014_000000491965.jpg -../coco/images/val2014/COCO_val2014_000000491985.jpg -../coco/images/val2014/COCO_val2014_000000492246.jpg -../coco/images/val2014/COCO_val2014_000000492323.jpg -../coco/images/val2014/COCO_val2014_000000492363.jpg -../coco/images/val2014/COCO_val2014_000000492407.jpg -../coco/images/val2014/COCO_val2014_000000492524.jpg -../coco/images/val2014/COCO_val2014_000000492605.jpg -../coco/images/val2014/COCO_val2014_000000492785.jpg -../coco/images/val2014/COCO_val2014_000000492805.jpg -../coco/images/val2014/COCO_val2014_000000493132.jpg -../coco/images/val2014/COCO_val2014_000000493196.jpg -../coco/images/val2014/COCO_val2014_000000493206.jpg -../coco/images/val2014/COCO_val2014_000000493273.jpg -../coco/images/val2014/COCO_val2014_000000493279.jpg -../coco/images/val2014/COCO_val2014_000000493509.jpg -../coco/images/val2014/COCO_val2014_000000493772.jpg -../coco/images/val2014/COCO_val2014_000000493799.jpg -../coco/images/val2014/COCO_val2014_000000493814.jpg -../coco/images/val2014/COCO_val2014_000000494085.jpg -../coco/images/val2014/COCO_val2014_000000494144.jpg -../coco/images/val2014/COCO_val2014_000000494320.jpg -../coco/images/val2014/COCO_val2014_000000494438.jpg -../coco/images/val2014/COCO_val2014_000000494578.jpg -../coco/images/val2014/COCO_val2014_000000494620.jpg -../coco/images/val2014/COCO_val2014_000000494731.jpg -../coco/images/val2014/COCO_val2014_000000494869.jpg -../coco/images/val2014/COCO_val2014_000000495090.jpg -../coco/images/val2014/COCO_val2014_000000495125.jpg -../coco/images/val2014/COCO_val2014_000000495491.jpg -../coco/images/val2014/COCO_val2014_000000495519.jpg -../coco/images/val2014/COCO_val2014_000000495734.jpg -../coco/images/val2014/COCO_val2014_000000495852.jpg -../coco/images/val2014/COCO_val2014_000000496152.jpg -../coco/images/val2014/COCO_val2014_000000496267.jpg -../coco/images/val2014/COCO_val2014_000000496324.jpg -../coco/images/val2014/COCO_val2014_000000496360.jpg -../coco/images/val2014/COCO_val2014_000000496379.jpg -../coco/images/val2014/COCO_val2014_000000496409.jpg -../coco/images/val2014/COCO_val2014_000000496450.jpg -../coco/images/val2014/COCO_val2014_000000496554.jpg -../coco/images/val2014/COCO_val2014_000000496687.jpg -../coco/images/val2014/COCO_val2014_000000497099.jpg -../coco/images/val2014/COCO_val2014_000000497312.jpg -../coco/images/val2014/COCO_val2014_000000497348.jpg -../coco/images/val2014/COCO_val2014_000000497351.jpg -../coco/images/val2014/COCO_val2014_000000497443.jpg -../coco/images/val2014/COCO_val2014_000000497488.jpg -../coco/images/val2014/COCO_val2014_000000497907.jpg -../coco/images/val2014/COCO_val2014_000000497928.jpg -../coco/images/val2014/COCO_val2014_000000498274.jpg -../coco/images/val2014/COCO_val2014_000000498346.jpg -../coco/images/val2014/COCO_val2014_000000498392.jpg -../coco/images/val2014/COCO_val2014_000000498650.jpg -../coco/images/val2014/COCO_val2014_000000498709.jpg -../coco/images/val2014/COCO_val2014_000000498765.jpg -../coco/images/val2014/COCO_val2014_000000498802.jpg -../coco/images/val2014/COCO_val2014_000000498807.jpg -../coco/images/val2014/COCO_val2014_000000499093.jpg -../coco/images/val2014/COCO_val2014_000000499105.jpg -../coco/images/val2014/COCO_val2014_000000499255.jpg -../coco/images/val2014/COCO_val2014_000000499313.jpg -../coco/images/val2014/COCO_val2014_000000499391.jpg -../coco/images/val2014/COCO_val2014_000000499393.jpg -../coco/images/val2014/COCO_val2014_000000499537.jpg -../coco/images/val2014/COCO_val2014_000000499755.jpg -../coco/images/val2014/COCO_val2014_000000499802.jpg -../coco/images/val2014/COCO_val2014_000000499810.jpg -../coco/images/val2014/COCO_val2014_000000500062.jpg -../coco/images/val2014/COCO_val2014_000000500139.jpg -../coco/images/val2014/COCO_val2014_000000500175.jpg -../coco/images/val2014/COCO_val2014_000000500464.jpg -../coco/images/val2014/COCO_val2014_000000500514.jpg -../coco/images/val2014/COCO_val2014_000000500723.jpg -../coco/images/val2014/COCO_val2014_000000500829.jpg -../coco/images/val2014/COCO_val2014_000000500878.jpg -../coco/images/val2014/COCO_val2014_000000500965.jpg -../coco/images/val2014/COCO_val2014_000000501116.jpg -../coco/images/val2014/COCO_val2014_000000501122.jpg -../coco/images/val2014/COCO_val2014_000000501229.jpg -../coco/images/val2014/COCO_val2014_000000501242.jpg -../coco/images/val2014/COCO_val2014_000000501527.jpg -../coco/images/val2014/COCO_val2014_000000501790.jpg -../coco/images/val2014/COCO_val2014_000000501824.jpg -../coco/images/val2014/COCO_val2014_000000501835.jpg -../coco/images/val2014/COCO_val2014_000000502168.jpg -../coco/images/val2014/COCO_val2014_000000502336.jpg -../coco/images/val2014/COCO_val2014_000000502854.jpg -../coco/images/val2014/COCO_val2014_000000502895.jpg -../coco/images/val2014/COCO_val2014_000000502910.jpg -../coco/images/val2014/COCO_val2014_000000503097.jpg -../coco/images/val2014/COCO_val2014_000000503202.jpg -../coco/images/val2014/COCO_val2014_000000503207.jpg -../coco/images/val2014/COCO_val2014_000000503233.jpg -../coco/images/val2014/COCO_val2014_000000503467.jpg -../coco/images/val2014/COCO_val2014_000000503522.jpg -../coco/images/val2014/COCO_val2014_000000503772.jpg -../coco/images/val2014/COCO_val2014_000000503823.jpg -../coco/images/val2014/COCO_val2014_000000503826.jpg -../coco/images/val2014/COCO_val2014_000000503951.jpg -../coco/images/val2014/COCO_val2014_000000503972.jpg -../coco/images/val2014/COCO_val2014_000000503983.jpg -../coco/images/val2014/COCO_val2014_000000504074.jpg -../coco/images/val2014/COCO_val2014_000000504152.jpg -../coco/images/val2014/COCO_val2014_000000504341.jpg -../coco/images/val2014/COCO_val2014_000000504353.jpg -../coco/images/val2014/COCO_val2014_000000504452.jpg -../coco/images/val2014/COCO_val2014_000000504559.jpg -../coco/images/val2014/COCO_val2014_000000504711.jpg -../coco/images/val2014/COCO_val2014_000000504733.jpg -../coco/images/val2014/COCO_val2014_000000504790.jpg -../coco/images/val2014/COCO_val2014_000000505014.jpg -../coco/images/val2014/COCO_val2014_000000505040.jpg -../coco/images/val2014/COCO_val2014_000000505043.jpg -../coco/images/val2014/COCO_val2014_000000505132.jpg -../coco/images/val2014/COCO_val2014_000000505344.jpg -../coco/images/val2014/COCO_val2014_000000505516.jpg -../coco/images/val2014/COCO_val2014_000000505528.jpg -../coco/images/val2014/COCO_val2014_000000505650.jpg -../coco/images/val2014/COCO_val2014_000000505733.jpg -../coco/images/val2014/COCO_val2014_000000505739.jpg -../coco/images/val2014/COCO_val2014_000000505754.jpg -../coco/images/val2014/COCO_val2014_000000505792.jpg -../coco/images/val2014/COCO_val2014_000000505814.jpg -../coco/images/val2014/COCO_val2014_000000505862.jpg -../coco/images/val2014/COCO_val2014_000000505945.jpg -../coco/images/val2014/COCO_val2014_000000505967.jpg -../coco/images/val2014/COCO_val2014_000000506335.jpg -../coco/images/val2014/COCO_val2014_000000506357.jpg -../coco/images/val2014/COCO_val2014_000000506449.jpg -../coco/images/val2014/COCO_val2014_000000506515.jpg -../coco/images/val2014/COCO_val2014_000000506569.jpg -../coco/images/val2014/COCO_val2014_000000506587.jpg -../coco/images/val2014/COCO_val2014_000000506707.jpg -../coco/images/val2014/COCO_val2014_000000506736.jpg -../coco/images/val2014/COCO_val2014_000000507037.jpg -../coco/images/val2014/COCO_val2014_000000507180.jpg -../coco/images/val2014/COCO_val2014_000000507668.jpg -../coco/images/val2014/COCO_val2014_000000507684.jpg -../coco/images/val2014/COCO_val2014_000000507783.jpg -../coco/images/val2014/COCO_val2014_000000507927.jpg -../coco/images/val2014/COCO_val2014_000000507935.jpg -../coco/images/val2014/COCO_val2014_000000508119.jpg -../coco/images/val2014/COCO_val2014_000000508230.jpg -../coco/images/val2014/COCO_val2014_000000508443.jpg -../coco/images/val2014/COCO_val2014_000000508586.jpg -../coco/images/val2014/COCO_val2014_000000508811.jpg -../coco/images/val2014/COCO_val2014_000000508822.jpg -../coco/images/val2014/COCO_val2014_000000508985.jpg -../coco/images/val2014/COCO_val2014_000000509185.jpg -../coco/images/val2014/COCO_val2014_000000509258.jpg -../coco/images/val2014/COCO_val2014_000000509379.jpg -../coco/images/val2014/COCO_val2014_000000509388.jpg -../coco/images/val2014/COCO_val2014_000000509423.jpg -../coco/images/val2014/COCO_val2014_000000509526.jpg -../coco/images/val2014/COCO_val2014_000000509577.jpg -../coco/images/val2014/COCO_val2014_000000509695.jpg -../coco/images/val2014/COCO_val2014_000000509855.jpg -../coco/images/val2014/COCO_val2014_000000510343.jpg -../coco/images/val2014/COCO_val2014_000000510593.jpg -../coco/images/val2014/COCO_val2014_000000510707.jpg -../coco/images/val2014/COCO_val2014_000000510791.jpg -../coco/images/val2014/COCO_val2014_000000510798.jpg -../coco/images/val2014/COCO_val2014_000000510864.jpg -../coco/images/val2014/COCO_val2014_000000510942.jpg -../coco/images/val2014/COCO_val2014_000000511076.jpg -../coco/images/val2014/COCO_val2014_000000511236.jpg -../coco/images/val2014/COCO_val2014_000000511403.jpg -../coco/images/val2014/COCO_val2014_000000512070.jpg -../coco/images/val2014/COCO_val2014_000000512112.jpg -../coco/images/val2014/COCO_val2014_000000512145.jpg -../coco/images/val2014/COCO_val2014_000000512248.jpg -../coco/images/val2014/COCO_val2014_000000512254.jpg -../coco/images/val2014/COCO_val2014_000000512307.jpg -../coco/images/val2014/COCO_val2014_000000512337.jpg -../coco/images/val2014/COCO_val2014_000000512463.jpg -../coco/images/val2014/COCO_val2014_000000512479.jpg -../coco/images/val2014/COCO_val2014_000000512630.jpg -../coco/images/val2014/COCO_val2014_000000512722.jpg -../coco/images/val2014/COCO_val2014_000000512776.jpg -../coco/images/val2014/COCO_val2014_000000512911.jpg -../coco/images/val2014/COCO_val2014_000000512912.jpg -../coco/images/val2014/COCO_val2014_000000513073.jpg -../coco/images/val2014/COCO_val2014_000000513129.jpg -../coco/images/val2014/COCO_val2014_000000513342.jpg -../coco/images/val2014/COCO_val2014_000000513497.jpg -../coco/images/val2014/COCO_val2014_000000513507.jpg -../coco/images/val2014/COCO_val2014_000000513585.jpg -../coco/images/val2014/COCO_val2014_000000513681.jpg -../coco/images/val2014/COCO_val2014_000000514180.jpg -../coco/images/val2014/COCO_val2014_000000514241.jpg -../coco/images/val2014/COCO_val2014_000000514525.jpg -../coco/images/val2014/COCO_val2014_000000514540.jpg -../coco/images/val2014/COCO_val2014_000000514586.jpg -../coco/images/val2014/COCO_val2014_000000514682.jpg -../coco/images/val2014/COCO_val2014_000000514913.jpg -../coco/images/val2014/COCO_val2014_000000514990.jpg -../coco/images/val2014/COCO_val2014_000000515077.jpg -../coco/images/val2014/COCO_val2014_000000515176.jpg -../coco/images/val2014/COCO_val2014_000000515226.jpg -../coco/images/val2014/COCO_val2014_000000515289.jpg -../coco/images/val2014/COCO_val2014_000000515350.jpg -../coco/images/val2014/COCO_val2014_000000515485.jpg -../coco/images/val2014/COCO_val2014_000000515531.jpg -../coco/images/val2014/COCO_val2014_000000515727.jpg -../coco/images/val2014/COCO_val2014_000000515760.jpg -../coco/images/val2014/COCO_val2014_000000515777.jpg -../coco/images/val2014/COCO_val2014_000000515779.jpg -../coco/images/val2014/COCO_val2014_000000515904.jpg -../coco/images/val2014/COCO_val2014_000000515993.jpg -../coco/images/val2014/COCO_val2014_000000516026.jpg -../coco/images/val2014/COCO_val2014_000000516316.jpg -../coco/images/val2014/COCO_val2014_000000516318.jpg -../coco/images/val2014/COCO_val2014_000000516476.jpg -../coco/images/val2014/COCO_val2014_000000516775.jpg -../coco/images/val2014/COCO_val2014_000000516804.jpg -../coco/images/val2014/COCO_val2014_000000516805.jpg -../coco/images/val2014/COCO_val2014_000000516867.jpg -../coco/images/val2014/COCO_val2014_000000516893.jpg -../coco/images/val2014/COCO_val2014_000000516913.jpg -../coco/images/val2014/COCO_val2014_000000516916.jpg -../coco/images/val2014/COCO_val2014_000000517318.jpg -../coco/images/val2014/COCO_val2014_000000517443.jpg -../coco/images/val2014/COCO_val2014_000000517596.jpg -../coco/images/val2014/COCO_val2014_000000517619.jpg -../coco/images/val2014/COCO_val2014_000000517737.jpg -../coco/images/val2014/COCO_val2014_000000517821.jpg -../coco/images/val2014/COCO_val2014_000000517987.jpg -../coco/images/val2014/COCO_val2014_000000518039.jpg -../coco/images/val2014/COCO_val2014_000000518109.jpg -../coco/images/val2014/COCO_val2014_000000518213.jpg -../coco/images/val2014/COCO_val2014_000000518234.jpg -../coco/images/val2014/COCO_val2014_000000518324.jpg -../coco/images/val2014/COCO_val2014_000000518365.jpg -../coco/images/val2014/COCO_val2014_000000518584.jpg -../coco/images/val2014/COCO_val2014_000000518716.jpg -../coco/images/val2014/COCO_val2014_000000518729.jpg -../coco/images/val2014/COCO_val2014_000000518818.jpg -../coco/images/val2014/COCO_val2014_000000518850.jpg -../coco/images/val2014/COCO_val2014_000000518914.jpg -../coco/images/val2014/COCO_val2014_000000518968.jpg -../coco/images/val2014/COCO_val2014_000000519055.jpg -../coco/images/val2014/COCO_val2014_000000519271.jpg -../coco/images/val2014/COCO_val2014_000000519316.jpg -../coco/images/val2014/COCO_val2014_000000519387.jpg -../coco/images/val2014/COCO_val2014_000000519542.jpg -../coco/images/val2014/COCO_val2014_000000519565.jpg -../coco/images/val2014/COCO_val2014_000000519611.jpg -../coco/images/val2014/COCO_val2014_000000519649.jpg -../coco/images/val2014/COCO_val2014_000000519874.jpg -../coco/images/val2014/COCO_val2014_000000520009.jpg -../coco/images/val2014/COCO_val2014_000000520109.jpg -../coco/images/val2014/COCO_val2014_000000520147.jpg -../coco/images/val2014/COCO_val2014_000000520338.jpg -../coco/images/val2014/COCO_val2014_000000520524.jpg -../coco/images/val2014/COCO_val2014_000000521142.jpg -../coco/images/val2014/COCO_val2014_000000521259.jpg -../coco/images/val2014/COCO_val2014_000000521359.jpg -../coco/images/val2014/COCO_val2014_000000521540.jpg -../coco/images/val2014/COCO_val2014_000000521613.jpg -../coco/images/val2014/COCO_val2014_000000521634.jpg -../coco/images/val2014/COCO_val2014_000000521669.jpg -../coco/images/val2014/COCO_val2014_000000521689.jpg -../coco/images/val2014/COCO_val2014_000000521943.jpg -../coco/images/val2014/COCO_val2014_000000522163.jpg -../coco/images/val2014/COCO_val2014_000000522613.jpg -../coco/images/val2014/COCO_val2014_000000522622.jpg -../coco/images/val2014/COCO_val2014_000000522702.jpg -../coco/images/val2014/COCO_val2014_000000522791.jpg -../coco/images/val2014/COCO_val2014_000000522940.jpg -../coco/images/val2014/COCO_val2014_000000523100.jpg -../coco/images/val2014/COCO_val2014_000000523137.jpg -../coco/images/val2014/COCO_val2014_000000523230.jpg -../coco/images/val2014/COCO_val2014_000000523517.jpg -../coco/images/val2014/COCO_val2014_000000524002.jpg -../coco/images/val2014/COCO_val2014_000000524064.jpg -../coco/images/val2014/COCO_val2014_000000524173.jpg -../coco/images/val2014/COCO_val2014_000000524263.jpg -../coco/images/val2014/COCO_val2014_000000524333.jpg -../coco/images/val2014/COCO_val2014_000000524533.jpg -../coco/images/val2014/COCO_val2014_000000524536.jpg -../coco/images/val2014/COCO_val2014_000000524656.jpg -../coco/images/val2014/COCO_val2014_000000524742.jpg -../coco/images/val2014/COCO_val2014_000000524799.jpg -../coco/images/val2014/COCO_val2014_000000524992.jpg -../coco/images/val2014/COCO_val2014_000000525021.jpg -../coco/images/val2014/COCO_val2014_000000525087.jpg -../coco/images/val2014/COCO_val2014_000000525118.jpg -../coco/images/val2014/COCO_val2014_000000525170.jpg -../coco/images/val2014/COCO_val2014_000000525373.jpg -../coco/images/val2014/COCO_val2014_000000525667.jpg -../coco/images/val2014/COCO_val2014_000000525849.jpg -../coco/images/val2014/COCO_val2014_000000525927.jpg -../coco/images/val2014/COCO_val2014_000000525971.jpg -../coco/images/val2014/COCO_val2014_000000526040.jpg -../coco/images/val2014/COCO_val2014_000000526089.jpg -../coco/images/val2014/COCO_val2014_000000526341.jpg -../coco/images/val2014/COCO_val2014_000000526342.jpg -../coco/images/val2014/COCO_val2014_000000526371.jpg -../coco/images/val2014/COCO_val2014_000000526418.jpg -../coco/images/val2014/COCO_val2014_000000526560.jpg -../coco/images/val2014/COCO_val2014_000000527407.jpg -../coco/images/val2014/COCO_val2014_000000527447.jpg -../coco/images/val2014/COCO_val2014_000000527535.jpg -../coco/images/val2014/COCO_val2014_000000527558.jpg -../coco/images/val2014/COCO_val2014_000000527573.jpg -../coco/images/val2014/COCO_val2014_000000527644.jpg -../coco/images/val2014/COCO_val2014_000000527704.jpg -../coco/images/val2014/COCO_val2014_000000527750.jpg -../coco/images/val2014/COCO_val2014_000000527961.jpg -../coco/images/val2014/COCO_val2014_000000528314.jpg -../coco/images/val2014/COCO_val2014_000000528386.jpg -../coco/images/val2014/COCO_val2014_000000528411.jpg -../coco/images/val2014/COCO_val2014_000000528643.jpg -../coco/images/val2014/COCO_val2014_000000528738.jpg -../coco/images/val2014/COCO_val2014_000000528980.jpg -../coco/images/val2014/COCO_val2014_000000529004.jpg -../coco/images/val2014/COCO_val2014_000000529065.jpg -../coco/images/val2014/COCO_val2014_000000529215.jpg -../coco/images/val2014/COCO_val2014_000000529235.jpg -../coco/images/val2014/COCO_val2014_000000529270.jpg -../coco/images/val2014/COCO_val2014_000000529455.jpg -../coco/images/val2014/COCO_val2014_000000529494.jpg -../coco/images/val2014/COCO_val2014_000000529597.jpg -../coco/images/val2014/COCO_val2014_000000529668.jpg -../coco/images/val2014/COCO_val2014_000000529907.jpg -../coco/images/val2014/COCO_val2014_000000529944.jpg -../coco/images/val2014/COCO_val2014_000000530013.jpg -../coco/images/val2014/COCO_val2014_000000530052.jpg -../coco/images/val2014/COCO_val2014_000000530220.jpg -../coco/images/val2014/COCO_val2014_000000530461.jpg -../coco/images/val2014/COCO_val2014_000000530620.jpg -../coco/images/val2014/COCO_val2014_000000530624.jpg -../coco/images/val2014/COCO_val2014_000000530630.jpg -../coco/images/val2014/COCO_val2014_000000530854.jpg -../coco/images/val2014/COCO_val2014_000000531000.jpg -../coco/images/val2014/COCO_val2014_000000531111.jpg -../coco/images/val2014/COCO_val2014_000000531189.jpg -../coco/images/val2014/COCO_val2014_000000531563.jpg -../coco/images/val2014/COCO_val2014_000000531569.jpg -../coco/images/val2014/COCO_val2014_000000532009.jpg -../coco/images/val2014/COCO_val2014_000000532085.jpg -../coco/images/val2014/COCO_val2014_000000532126.jpg -../coco/images/val2014/COCO_val2014_000000532129.jpg -../coco/images/val2014/COCO_val2014_000000532159.jpg -../coco/images/val2014/COCO_val2014_000000532212.jpg -../coco/images/val2014/COCO_val2014_000000532690.jpg -../coco/images/val2014/COCO_val2014_000000532695.jpg -../coco/images/val2014/COCO_val2014_000000532773.jpg -../coco/images/val2014/COCO_val2014_000000532827.jpg -../coco/images/val2014/COCO_val2014_000000532867.jpg -../coco/images/val2014/COCO_val2014_000000533097.jpg -../coco/images/val2014/COCO_val2014_000000533261.jpg -../coco/images/val2014/COCO_val2014_000000533434.jpg -../coco/images/val2014/COCO_val2014_000000533511.jpg -../coco/images/val2014/COCO_val2014_000000533517.jpg -../coco/images/val2014/COCO_val2014_000000533532.jpg -../coco/images/val2014/COCO_val2014_000000533688.jpg -../coco/images/val2014/COCO_val2014_000000533816.jpg -../coco/images/val2014/COCO_val2014_000000534018.jpg -../coco/images/val2014/COCO_val2014_000000534349.jpg -../coco/images/val2014/COCO_val2014_000000534377.jpg -../coco/images/val2014/COCO_val2014_000000534601.jpg -../coco/images/val2014/COCO_val2014_000000534639.jpg -../coco/images/val2014/COCO_val2014_000000534679.jpg -../coco/images/val2014/COCO_val2014_000000534988.jpg -../coco/images/val2014/COCO_val2014_000000535156.jpg -../coco/images/val2014/COCO_val2014_000000535198.jpg -../coco/images/val2014/COCO_val2014_000000535226.jpg -../coco/images/val2014/COCO_val2014_000000535242.jpg -../coco/images/val2014/COCO_val2014_000000535591.jpg -../coco/images/val2014/COCO_val2014_000000535858.jpg -../coco/images/val2014/COCO_val2014_000000535889.jpg -../coco/images/val2014/COCO_val2014_000000535952.jpg -../coco/images/val2014/COCO_val2014_000000535997.jpg -../coco/images/val2014/COCO_val2014_000000536028.jpg -../coco/images/val2014/COCO_val2014_000000536154.jpg -../coco/images/val2014/COCO_val2014_000000536486.jpg -../coco/images/val2014/COCO_val2014_000000536517.jpg -../coco/images/val2014/COCO_val2014_000000536795.jpg -../coco/images/val2014/COCO_val2014_000000536879.jpg -../coco/images/val2014/COCO_val2014_000000537025.jpg -../coco/images/val2014/COCO_val2014_000000537280.jpg -../coco/images/val2014/COCO_val2014_000000537369.jpg -../coco/images/val2014/COCO_val2014_000000537604.jpg -../coco/images/val2014/COCO_val2014_000000537620.jpg -../coco/images/val2014/COCO_val2014_000000537636.jpg -../coco/images/val2014/COCO_val2014_000000537802.jpg -../coco/images/val2014/COCO_val2014_000000537954.jpg -../coco/images/val2014/COCO_val2014_000000538005.jpg -../coco/images/val2014/COCO_val2014_000000538153.jpg -../coco/images/val2014/COCO_val2014_000000538259.jpg -../coco/images/val2014/COCO_val2014_000000538451.jpg -../coco/images/val2014/COCO_val2014_000000538463.jpg -../coco/images/val2014/COCO_val2014_000000538589.jpg -../coco/images/val2014/COCO_val2014_000000538595.jpg -../coco/images/val2014/COCO_val2014_000000538596.jpg -../coco/images/val2014/COCO_val2014_000000538741.jpg -../coco/images/val2014/COCO_val2014_000000538775.jpg -../coco/images/val2014/COCO_val2014_000000538976.jpg -../coco/images/val2014/COCO_val2014_000000539224.jpg -../coco/images/val2014/COCO_val2014_000000539251.jpg -../coco/images/val2014/COCO_val2014_000000539453.jpg -../coco/images/val2014/COCO_val2014_000000539551.jpg -../coco/images/val2014/COCO_val2014_000000539678.jpg -../coco/images/val2014/COCO_val2014_000000539975.jpg -../coco/images/val2014/COCO_val2014_000000540098.jpg -../coco/images/val2014/COCO_val2014_000000540107.jpg -../coco/images/val2014/COCO_val2014_000000540172.jpg -../coco/images/val2014/COCO_val2014_000000540186.jpg -../coco/images/val2014/COCO_val2014_000000540209.jpg -../coco/images/val2014/COCO_val2014_000000540264.jpg -../coco/images/val2014/COCO_val2014_000000540372.jpg -../coco/images/val2014/COCO_val2014_000000540414.jpg -../coco/images/val2014/COCO_val2014_000000540483.jpg -../coco/images/val2014/COCO_val2014_000000540502.jpg -../coco/images/val2014/COCO_val2014_000000540816.jpg -../coco/images/val2014/COCO_val2014_000000540860.jpg -../coco/images/val2014/COCO_val2014_000000540912.jpg -../coco/images/val2014/COCO_val2014_000000541071.jpg -../coco/images/val2014/COCO_val2014_000000541197.jpg -../coco/images/val2014/COCO_val2014_000000541279.jpg -../coco/images/val2014/COCO_val2014_000000541474.jpg -../coco/images/val2014/COCO_val2014_000000541550.jpg -../coco/images/val2014/COCO_val2014_000000541773.jpg -../coco/images/val2014/COCO_val2014_000000541879.jpg -../coco/images/val2014/COCO_val2014_000000541991.jpg -../coco/images/val2014/COCO_val2014_000000542101.jpg -../coco/images/val2014/COCO_val2014_000000542234.jpg -../coco/images/val2014/COCO_val2014_000000542509.jpg -../coco/images/val2014/COCO_val2014_000000542611.jpg -../coco/images/val2014/COCO_val2014_000000542676.jpg -../coco/images/val2014/COCO_val2014_000000542792.jpg -../coco/images/val2014/COCO_val2014_000000543112.jpg -../coco/images/val2014/COCO_val2014_000000543118.jpg -../coco/images/val2014/COCO_val2014_000000543203.jpg -../coco/images/val2014/COCO_val2014_000000543220.jpg -../coco/images/val2014/COCO_val2014_000000543281.jpg -../coco/images/val2014/COCO_val2014_000000543492.jpg -../coco/images/val2014/COCO_val2014_000000543581.jpg -../coco/images/val2014/COCO_val2014_000000543660.jpg -../coco/images/val2014/COCO_val2014_000000543676.jpg -../coco/images/val2014/COCO_val2014_000000543696.jpg -../coco/images/val2014/COCO_val2014_000000543782.jpg -../coco/images/val2014/COCO_val2014_000000544044.jpg -../coco/images/val2014/COCO_val2014_000000544071.jpg -../coco/images/val2014/COCO_val2014_000000544140.jpg -../coco/images/val2014/COCO_val2014_000000544597.jpg -../coco/images/val2014/COCO_val2014_000000544607.jpg -../coco/images/val2014/COCO_val2014_000000544611.jpg -../coco/images/val2014/COCO_val2014_000000544644.jpg -../coco/images/val2014/COCO_val2014_000000545289.jpg -../coco/images/val2014/COCO_val2014_000000545407.jpg -../coco/images/val2014/COCO_val2014_000000545475.jpg -../coco/images/val2014/COCO_val2014_000000545583.jpg -../coco/images/val2014/COCO_val2014_000000545597.jpg -../coco/images/val2014/COCO_val2014_000000545734.jpg -../coco/images/val2014/COCO_val2014_000000545756.jpg -../coco/images/val2014/COCO_val2014_000000545788.jpg -../coco/images/val2014/COCO_val2014_000000545958.jpg -../coco/images/val2014/COCO_val2014_000000546188.jpg -../coco/images/val2014/COCO_val2014_000000546226.jpg -../coco/images/val2014/COCO_val2014_000000546229.jpg -../coco/images/val2014/COCO_val2014_000000546388.jpg -../coco/images/val2014/COCO_val2014_000000546424.jpg -../coco/images/val2014/COCO_val2014_000000546524.jpg -../coco/images/val2014/COCO_val2014_000000546569.jpg -../coco/images/val2014/COCO_val2014_000000546622.jpg -../coco/images/val2014/COCO_val2014_000000546649.jpg -../coco/images/val2014/COCO_val2014_000000546667.jpg -../coco/images/val2014/COCO_val2014_000000546760.jpg -../coco/images/val2014/COCO_val2014_000000546782.jpg -../coco/images/val2014/COCO_val2014_000000546962.jpg -../coco/images/val2014/COCO_val2014_000000547137.jpg -../coco/images/val2014/COCO_val2014_000000547383.jpg -../coco/images/val2014/COCO_val2014_000000547519.jpg -../coco/images/val2014/COCO_val2014_000000547583.jpg -../coco/images/val2014/COCO_val2014_000000547738.jpg -../coco/images/val2014/COCO_val2014_000000547790.jpg -../coco/images/val2014/COCO_val2014_000000547858.jpg -../coco/images/val2014/COCO_val2014_000000548090.jpg -../coco/images/val2014/COCO_val2014_000000548126.jpg -../coco/images/val2014/COCO_val2014_000000548339.jpg -../coco/images/val2014/COCO_val2014_000000548795.jpg -../coco/images/val2014/COCO_val2014_000000548882.jpg -../coco/images/val2014/COCO_val2014_000000549063.jpg -../coco/images/val2014/COCO_val2014_000000549171.jpg -../coco/images/val2014/COCO_val2014_000000549242.jpg -../coco/images/val2014/COCO_val2014_000000549351.jpg -../coco/images/val2014/COCO_val2014_000000549410.jpg -../coco/images/val2014/COCO_val2014_000000549518.jpg -../coco/images/val2014/COCO_val2014_000000549713.jpg -../coco/images/val2014/COCO_val2014_000000549936.jpg -../coco/images/val2014/COCO_val2014_000000550001.jpg -../coco/images/val2014/COCO_val2014_000000550322.jpg -../coco/images/val2014/COCO_val2014_000000550432.jpg -../coco/images/val2014/COCO_val2014_000000550597.jpg -../coco/images/val2014/COCO_val2014_000000550627.jpg -../coco/images/val2014/COCO_val2014_000000550722.jpg -../coco/images/val2014/COCO_val2014_000000550862.jpg -../coco/images/val2014/COCO_val2014_000000551129.jpg -../coco/images/val2014/COCO_val2014_000000551243.jpg -../coco/images/val2014/COCO_val2014_000000551336.jpg -../coco/images/val2014/COCO_val2014_000000551669.jpg -../coco/images/val2014/COCO_val2014_000000552507.jpg -../coco/images/val2014/COCO_val2014_000000552837.jpg -../coco/images/val2014/COCO_val2014_000000553074.jpg -../coco/images/val2014/COCO_val2014_000000553165.jpg -../coco/images/val2014/COCO_val2014_000000553253.jpg -../coco/images/val2014/COCO_val2014_000000553306.jpg -../coco/images/val2014/COCO_val2014_000000553353.jpg -../coco/images/val2014/COCO_val2014_000000553443.jpg -../coco/images/val2014/COCO_val2014_000000553522.jpg -../coco/images/val2014/COCO_val2014_000000553664.jpg -../coco/images/val2014/COCO_val2014_000000554037.jpg -../coco/images/val2014/COCO_val2014_000000554100.jpg -../coco/images/val2014/COCO_val2014_000000554255.jpg -../coco/images/val2014/COCO_val2014_000000554266.jpg -../coco/images/val2014/COCO_val2014_000000554291.jpg -../coco/images/val2014/COCO_val2014_000000554302.jpg -../coco/images/val2014/COCO_val2014_000000554340.jpg -../coco/images/val2014/COCO_val2014_000000554347.jpg -../coco/images/val2014/COCO_val2014_000000554537.jpg -../coco/images/val2014/COCO_val2014_000000554595.jpg -../coco/images/val2014/COCO_val2014_000000554607.jpg -../coco/images/val2014/COCO_val2014_000000554618.jpg -../coco/images/val2014/COCO_val2014_000000554625.jpg -../coco/images/val2014/COCO_val2014_000000554711.jpg -../coco/images/val2014/COCO_val2014_000000554727.jpg -../coco/images/val2014/COCO_val2014_000000554767.jpg -../coco/images/val2014/COCO_val2014_000000554978.jpg -../coco/images/val2014/COCO_val2014_000000555035.jpg -../coco/images/val2014/COCO_val2014_000000555110.jpg -../coco/images/val2014/COCO_val2014_000000555180.jpg -../coco/images/val2014/COCO_val2014_000000555197.jpg -../coco/images/val2014/COCO_val2014_000000555267.jpg -../coco/images/val2014/COCO_val2014_000000555322.jpg -../coco/images/val2014/COCO_val2014_000000555412.jpg -../coco/images/val2014/COCO_val2014_000000555456.jpg -../coco/images/val2014/COCO_val2014_000000556091.jpg -../coco/images/val2014/COCO_val2014_000000556178.jpg -../coco/images/val2014/COCO_val2014_000000556193.jpg -../coco/images/val2014/COCO_val2014_000000556278.jpg -../coco/images/val2014/COCO_val2014_000000556562.jpg -../coco/images/val2014/COCO_val2014_000000556633.jpg -../coco/images/val2014/COCO_val2014_000000556641.jpg -../coco/images/val2014/COCO_val2014_000000556653.jpg -../coco/images/val2014/COCO_val2014_000000556751.jpg -../coco/images/val2014/COCO_val2014_000000556758.jpg -../coco/images/val2014/COCO_val2014_000000557016.jpg -../coco/images/val2014/COCO_val2014_000000557402.jpg -../coco/images/val2014/COCO_val2014_000000557556.jpg -../coco/images/val2014/COCO_val2014_000000557564.jpg -../coco/images/val2014/COCO_val2014_000000557595.jpg -../coco/images/val2014/COCO_val2014_000000557720.jpg -../coco/images/val2014/COCO_val2014_000000557731.jpg -../coco/images/val2014/COCO_val2014_000000557785.jpg -../coco/images/val2014/COCO_val2014_000000557896.jpg -../coco/images/val2014/COCO_val2014_000000557916.jpg -../coco/images/val2014/COCO_val2014_000000557923.jpg -../coco/images/val2014/COCO_val2014_000000557965.jpg -../coco/images/val2014/COCO_val2014_000000557977.jpg -../coco/images/val2014/COCO_val2014_000000558539.jpg -../coco/images/val2014/COCO_val2014_000000558587.jpg -../coco/images/val2014/COCO_val2014_000000558661.jpg -../coco/images/val2014/COCO_val2014_000000558784.jpg -../coco/images/val2014/COCO_val2014_000000558864.jpg -../coco/images/val2014/COCO_val2014_000000558955.jpg -../coco/images/val2014/COCO_val2014_000000558976.jpg -../coco/images/val2014/COCO_val2014_000000559047.jpg -../coco/images/val2014/COCO_val2014_000000559348.jpg -../coco/images/val2014/COCO_val2014_000000559656.jpg -../coco/images/val2014/COCO_val2014_000000559778.jpg -../coco/images/val2014/COCO_val2014_000000559790.jpg -../coco/images/val2014/COCO_val2014_000000560000.jpg -../coco/images/val2014/COCO_val2014_000000560227.jpg -../coco/images/val2014/COCO_val2014_000000560235.jpg -../coco/images/val2014/COCO_val2014_000000560279.jpg -../coco/images/val2014/COCO_val2014_000000560373.jpg -../coco/images/val2014/COCO_val2014_000000560626.jpg -../coco/images/val2014/COCO_val2014_000000560662.jpg -../coco/images/val2014/COCO_val2014_000000560721.jpg -../coco/images/val2014/COCO_val2014_000000560911.jpg -../coco/images/val2014/COCO_val2014_000000561027.jpg -../coco/images/val2014/COCO_val2014_000000561337.jpg -../coco/images/val2014/COCO_val2014_000000561357.jpg -../coco/images/val2014/COCO_val2014_000000561399.jpg -../coco/images/val2014/COCO_val2014_000000561570.jpg -../coco/images/val2014/COCO_val2014_000000561619.jpg -../coco/images/val2014/COCO_val2014_000000561698.jpg -../coco/images/val2014/COCO_val2014_000000562101.jpg -../coco/images/val2014/COCO_val2014_000000562227.jpg -../coco/images/val2014/COCO_val2014_000000562557.jpg -../coco/images/val2014/COCO_val2014_000000562582.jpg -../coco/images/val2014/COCO_val2014_000000562708.jpg -../coco/images/val2014/COCO_val2014_000000562805.jpg -../coco/images/val2014/COCO_val2014_000000562834.jpg -../coco/images/val2014/COCO_val2014_000000562875.jpg -../coco/images/val2014/COCO_val2014_000000562906.jpg -../coco/images/val2014/COCO_val2014_000000562943.jpg -../coco/images/val2014/COCO_val2014_000000562994.jpg -../coco/images/val2014/COCO_val2014_000000563015.jpg -../coco/images/val2014/COCO_val2014_000000563641.jpg -../coco/images/val2014/COCO_val2014_000000563665.jpg -../coco/images/val2014/COCO_val2014_000000563730.jpg -../coco/images/val2014/COCO_val2014_000000563871.jpg -../coco/images/val2014/COCO_val2014_000000564109.jpg -../coco/images/val2014/COCO_val2014_000000564127.jpg -../coco/images/val2014/COCO_val2014_000000564129.jpg -../coco/images/val2014/COCO_val2014_000000564289.jpg -../coco/images/val2014/COCO_val2014_000000564317.jpg -../coco/images/val2014/COCO_val2014_000000564366.jpg -../coco/images/val2014/COCO_val2014_000000564934.jpg -../coco/images/val2014/COCO_val2014_000000564940.jpg -../coco/images/val2014/COCO_val2014_000000565239.jpg -../coco/images/val2014/COCO_val2014_000000565389.jpg -../coco/images/val2014/COCO_val2014_000000565479.jpg -../coco/images/val2014/COCO_val2014_000000565543.jpg -../coco/images/val2014/COCO_val2014_000000565597.jpg -../coco/images/val2014/COCO_val2014_000000565670.jpg -../coco/images/val2014/COCO_val2014_000000565691.jpg -../coco/images/val2014/COCO_val2014_000000565693.jpg -../coco/images/val2014/COCO_val2014_000000565761.jpg -../coco/images/val2014/COCO_val2014_000000565877.jpg -../coco/images/val2014/COCO_val2014_000000565957.jpg -../coco/images/val2014/COCO_val2014_000000566027.jpg -../coco/images/val2014/COCO_val2014_000000566038.jpg -../coco/images/val2014/COCO_val2014_000000566103.jpg -../coco/images/val2014/COCO_val2014_000000566135.jpg -../coco/images/val2014/COCO_val2014_000000566298.jpg -../coco/images/val2014/COCO_val2014_000000566518.jpg -../coco/images/val2014/COCO_val2014_000000566538.jpg -../coco/images/val2014/COCO_val2014_000000566644.jpg -../coco/images/val2014/COCO_val2014_000000566908.jpg -../coco/images/val2014/COCO_val2014_000000566941.jpg -../coco/images/val2014/COCO_val2014_000000567093.jpg -../coco/images/val2014/COCO_val2014_000000567171.jpg -../coco/images/val2014/COCO_val2014_000000567205.jpg -../coco/images/val2014/COCO_val2014_000000567315.jpg -../coco/images/val2014/COCO_val2014_000000567340.jpg -../coco/images/val2014/COCO_val2014_000000567383.jpg -../coco/images/val2014/COCO_val2014_000000567686.jpg -../coco/images/val2014/COCO_val2014_000000567801.jpg -../coco/images/val2014/COCO_val2014_000000567812.jpg -../coco/images/val2014/COCO_val2014_000000567877.jpg -../coco/images/val2014/COCO_val2014_000000567886.jpg -../coco/images/val2014/COCO_val2014_000000568082.jpg -../coco/images/val2014/COCO_val2014_000000568131.jpg -../coco/images/val2014/COCO_val2014_000000568132.jpg -../coco/images/val2014/COCO_val2014_000000568195.jpg -../coco/images/val2014/COCO_val2014_000000568259.jpg -../coco/images/val2014/COCO_val2014_000000568265.jpg -../coco/images/val2014/COCO_val2014_000000568337.jpg -../coco/images/val2014/COCO_val2014_000000568555.jpg -../coco/images/val2014/COCO_val2014_000000568623.jpg -../coco/images/val2014/COCO_val2014_000000568653.jpg -../coco/images/val2014/COCO_val2014_000000568675.jpg -../coco/images/val2014/COCO_val2014_000000568717.jpg -../coco/images/val2014/COCO_val2014_000000568956.jpg -../coco/images/val2014/COCO_val2014_000000568961.jpg -../coco/images/val2014/COCO_val2014_000000569001.jpg -../coco/images/val2014/COCO_val2014_000000569272.jpg -../coco/images/val2014/COCO_val2014_000000569273.jpg -../coco/images/val2014/COCO_val2014_000000569319.jpg -../coco/images/val2014/COCO_val2014_000000569432.jpg -../coco/images/val2014/COCO_val2014_000000569437.jpg -../coco/images/val2014/COCO_val2014_000000569972.jpg -../coco/images/val2014/COCO_val2014_000000569976.jpg -../coco/images/val2014/COCO_val2014_000000570188.jpg -../coco/images/val2014/COCO_val2014_000000570456.jpg -../coco/images/val2014/COCO_val2014_000000570471.jpg -../coco/images/val2014/COCO_val2014_000000570680.jpg -../coco/images/val2014/COCO_val2014_000000570688.jpg -../coco/images/val2014/COCO_val2014_000000571012.jpg -../coco/images/val2014/COCO_val2014_000000571497.jpg -../coco/images/val2014/COCO_val2014_000000571550.jpg -../coco/images/val2014/COCO_val2014_000000571584.jpg -../coco/images/val2014/COCO_val2014_000000571635.jpg -../coco/images/val2014/COCO_val2014_000000571636.jpg -../coco/images/val2014/COCO_val2014_000000571746.jpg -../coco/images/val2014/COCO_val2014_000000571931.jpg -../coco/images/val2014/COCO_val2014_000000572017.jpg -../coco/images/val2014/COCO_val2014_000000572042.jpg -../coco/images/val2014/COCO_val2014_000000572051.jpg -../coco/images/val2014/COCO_val2014_000000572090.jpg -../coco/images/val2014/COCO_val2014_000000572233.jpg -../coco/images/val2014/COCO_val2014_000000572303.jpg -../coco/images/val2014/COCO_val2014_000000572347.jpg -../coco/images/val2014/COCO_val2014_000000572408.jpg -../coco/images/val2014/COCO_val2014_000000572517.jpg -../coco/images/val2014/COCO_val2014_000000572802.jpg -../coco/images/val2014/COCO_val2014_000000572850.jpg -../coco/images/val2014/COCO_val2014_000000573058.jpg -../coco/images/val2014/COCO_val2014_000000573067.jpg -../coco/images/val2014/COCO_val2014_000000573209.jpg -../coco/images/val2014/COCO_val2014_000000573363.jpg -../coco/images/val2014/COCO_val2014_000000573791.jpg -../coco/images/val2014/COCO_val2014_000000573853.jpg -../coco/images/val2014/COCO_val2014_000000573877.jpg -../coco/images/val2014/COCO_val2014_000000574108.jpg -../coco/images/val2014/COCO_val2014_000000574411.jpg -../coco/images/val2014/COCO_val2014_000000574413.jpg -../coco/images/val2014/COCO_val2014_000000574454.jpg -../coco/images/val2014/COCO_val2014_000000574509.jpg -../coco/images/val2014/COCO_val2014_000000574725.jpg -../coco/images/val2014/COCO_val2014_000000574823.jpg -../coco/images/val2014/COCO_val2014_000000574988.jpg -../coco/images/val2014/COCO_val2014_000000575020.jpg -../coco/images/val2014/COCO_val2014_000000575079.jpg -../coco/images/val2014/COCO_val2014_000000575081.jpg -../coco/images/val2014/COCO_val2014_000000575194.jpg -../coco/images/val2014/COCO_val2014_000000575428.jpg -../coco/images/val2014/COCO_val2014_000000575624.jpg -../coco/images/val2014/COCO_val2014_000000575957.jpg -../coco/images/val2014/COCO_val2014_000000576070.jpg -../coco/images/val2014/COCO_val2014_000000576085.jpg -../coco/images/val2014/COCO_val2014_000000576566.jpg -../coco/images/val2014/COCO_val2014_000000576629.jpg -../coco/images/val2014/COCO_val2014_000000576654.jpg -../coco/images/val2014/COCO_val2014_000000576704.jpg -../coco/images/val2014/COCO_val2014_000000576714.jpg -../coco/images/val2014/COCO_val2014_000000576820.jpg -../coco/images/val2014/COCO_val2014_000000576857.jpg -../coco/images/val2014/COCO_val2014_000000576955.jpg -../coco/images/val2014/COCO_val2014_000000576981.jpg -../coco/images/val2014/COCO_val2014_000000577128.jpg -../coco/images/val2014/COCO_val2014_000000577160.jpg -../coco/images/val2014/COCO_val2014_000000577161.jpg -../coco/images/val2014/COCO_val2014_000000577169.jpg -../coco/images/val2014/COCO_val2014_000000577212.jpg -../coco/images/val2014/COCO_val2014_000000577385.jpg -../coco/images/val2014/COCO_val2014_000000577522.jpg -../coco/images/val2014/COCO_val2014_000000577584.jpg -../coco/images/val2014/COCO_val2014_000000577847.jpg -../coco/images/val2014/COCO_val2014_000000577877.jpg -../coco/images/val2014/COCO_val2014_000000577912.jpg -../coco/images/val2014/COCO_val2014_000000577924.jpg -../coco/images/val2014/COCO_val2014_000000578225.jpg -../coco/images/val2014/COCO_val2014_000000578237.jpg -../coco/images/val2014/COCO_val2014_000000578341.jpg -../coco/images/val2014/COCO_val2014_000000578344.jpg -../coco/images/val2014/COCO_val2014_000000578427.jpg -../coco/images/val2014/COCO_val2014_000000578871.jpg -../coco/images/val2014/COCO_val2014_000000578878.jpg -../coco/images/val2014/COCO_val2014_000000579003.jpg -../coco/images/val2014/COCO_val2014_000000579240.jpg -../coco/images/val2014/COCO_val2014_000000579321.jpg -../coco/images/val2014/COCO_val2014_000000579337.jpg -../coco/images/val2014/COCO_val2014_000000579548.jpg -../coco/images/val2014/COCO_val2014_000000579885.jpg -../coco/images/val2014/COCO_val2014_000000579902.jpg -../coco/images/val2014/COCO_val2014_000000580027.jpg -../coco/images/val2014/COCO_val2014_000000580029.jpg -../coco/images/val2014/COCO_val2014_000000580294.jpg -../coco/images/val2014/COCO_val2014_000000580540.jpg -../coco/images/val2014/COCO_val2014_000000580608.jpg -../coco/images/val2014/COCO_val2014_000000580693.jpg -../coco/images/val2014/COCO_val2014_000000580720.jpg -../coco/images/val2014/COCO_val2014_000000580870.jpg -../coco/images/val2014/COCO_val2014_000000580975.jpg -../coco/images/val2014/COCO_val2014_000000581332.jpg -../coco/images/val2014/COCO_val2014_000000581593.jpg -../coco/images/val2014/COCO_val2014_000000581655.jpg -../coco/images/val2014/COCO_val2014_000000581731.jpg -../coco/images/val2014/COCO_val2014_000000581781.jpg -../coco/images/val2014/COCO_val2014_000000581887.jpg -../coco/images/val2014/COCO_val2014_000000581899.jpg diff --git a/data/coco_16img.txt b/data/coco_16img.txt index 03d84a27..e7bb74c0 100644 --- a/data/coco_16img.txt +++ b/data/coco_16img.txt @@ -1,16 +1,16 @@ -../coco/images/train2014/COCO_train2014_000000000009.jpg -../coco/images/train2014/COCO_train2014_000000000025.jpg -../coco/images/train2014/COCO_train2014_000000000030.jpg -../coco/images/train2014/COCO_train2014_000000000034.jpg -../coco/images/train2014/COCO_train2014_000000000036.jpg -../coco/images/train2014/COCO_train2014_000000000049.jpg -../coco/images/train2014/COCO_train2014_000000000061.jpg -../coco/images/train2014/COCO_train2014_000000000064.jpg -../coco/images/train2014/COCO_train2014_000000000071.jpg -../coco/images/train2014/COCO_train2014_000000000072.jpg -../coco/images/train2014/COCO_train2014_000000000077.jpg -../coco/images/train2014/COCO_train2014_000000000078.jpg -../coco/images/train2014/COCO_train2014_000000000081.jpg -../coco/images/train2014/COCO_train2014_000000000086.jpg -../coco/images/train2014/COCO_train2014_000000000089.jpg -../coco/images/train2014/COCO_train2014_000000000092.jpg +../coco/images/COCO_train2014_000000000009.jpg +../coco/images/COCO_train2014_000000000025.jpg +../coco/images/COCO_train2014_000000000030.jpg +../coco/images/COCO_train2014_000000000034.jpg +../coco/images/COCO_train2014_000000000036.jpg +../coco/images/COCO_train2014_000000000049.jpg +../coco/images/COCO_train2014_000000000061.jpg +../coco/images/COCO_train2014_000000000064.jpg +../coco/images/COCO_train2014_000000000071.jpg +../coco/images/COCO_train2014_000000000072.jpg +../coco/images/COCO_train2014_000000000077.jpg +../coco/images/COCO_train2014_000000000078.jpg +../coco/images/COCO_train2014_000000000081.jpg +../coco/images/COCO_train2014_000000000086.jpg +../coco/images/COCO_train2014_000000000089.jpg +../coco/images/COCO_train2014_000000000092.jpg diff --git a/data/coco_1cls.txt b/data/coco_1cls.txt index aea1ea87..956293ca 100644 --- a/data/coco_1cls.txt +++ b/data/coco_1cls.txt @@ -1,5 +1,5 @@ -../coco/images/val2014/COCO_val2014_000000013992.jpg -../coco/images/val2014/COCO_val2014_000000047226.jpg -../coco/images/val2014/COCO_val2014_000000050324.jpg -../coco/images/val2014/COCO_val2014_000000121497.jpg -../coco/images/val2014/COCO_val2014_000000001464.jpg +../coco/images/COCO_val2014_000000013992.jpg +../coco/images/COCO_val2014_000000047226.jpg +../coco/images/COCO_val2014_000000050324.jpg +../coco/images/COCO_val2014_000000121497.jpg +../coco/images/COCO_val2014_000000001464.jpg diff --git a/data/coco_1img.txt b/data/coco_1img.txt index 85defa29..a0fbd054 100644 --- a/data/coco_1img.txt +++ b/data/coco_1img.txt @@ -1 +1 @@ -../coco/images/val2014/COCO_val2014_000000581886.jpg +../coco/images/COCO_val2014_000000581886.jpg diff --git a/data/coco_64img.txt b/data/coco_64img.txt index 306ff3b4..b8b44f7b 100644 --- a/data/coco_64img.txt +++ b/data/coco_64img.txt @@ -1,64 +1,64 @@ -../coco/images/train2014/COCO_train2014_000000000009.jpg -../coco/images/train2014/COCO_train2014_000000000025.jpg -../coco/images/train2014/COCO_train2014_000000000030.jpg -../coco/images/train2014/COCO_train2014_000000000034.jpg -../coco/images/train2014/COCO_train2014_000000000036.jpg -../coco/images/train2014/COCO_train2014_000000000049.jpg -../coco/images/train2014/COCO_train2014_000000000061.jpg -../coco/images/train2014/COCO_train2014_000000000064.jpg -../coco/images/train2014/COCO_train2014_000000000071.jpg -../coco/images/train2014/COCO_train2014_000000000072.jpg -../coco/images/train2014/COCO_train2014_000000000077.jpg -../coco/images/train2014/COCO_train2014_000000000078.jpg -../coco/images/train2014/COCO_train2014_000000000081.jpg -../coco/images/train2014/COCO_train2014_000000000086.jpg -../coco/images/train2014/COCO_train2014_000000000089.jpg -../coco/images/train2014/COCO_train2014_000000000092.jpg -../coco/images/train2014/COCO_train2014_000000000094.jpg -../coco/images/train2014/COCO_train2014_000000000109.jpg -../coco/images/train2014/COCO_train2014_000000000110.jpg -../coco/images/train2014/COCO_train2014_000000000113.jpg -../coco/images/train2014/COCO_train2014_000000000127.jpg -../coco/images/train2014/COCO_train2014_000000000138.jpg -../coco/images/train2014/COCO_train2014_000000000142.jpg -../coco/images/train2014/COCO_train2014_000000000144.jpg -../coco/images/train2014/COCO_train2014_000000000149.jpg -../coco/images/train2014/COCO_train2014_000000000151.jpg -../coco/images/train2014/COCO_train2014_000000000154.jpg -../coco/images/train2014/COCO_train2014_000000000165.jpg -../coco/images/train2014/COCO_train2014_000000000194.jpg -../coco/images/train2014/COCO_train2014_000000000201.jpg -../coco/images/train2014/COCO_train2014_000000000247.jpg -../coco/images/train2014/COCO_train2014_000000000260.jpg -../coco/images/train2014/COCO_train2014_000000000263.jpg -../coco/images/train2014/COCO_train2014_000000000307.jpg -../coco/images/train2014/COCO_train2014_000000000308.jpg -../coco/images/train2014/COCO_train2014_000000000309.jpg -../coco/images/train2014/COCO_train2014_000000000312.jpg -../coco/images/train2014/COCO_train2014_000000000315.jpg -../coco/images/train2014/COCO_train2014_000000000321.jpg -../coco/images/train2014/COCO_train2014_000000000322.jpg -../coco/images/train2014/COCO_train2014_000000000326.jpg -../coco/images/train2014/COCO_train2014_000000000332.jpg -../coco/images/train2014/COCO_train2014_000000000349.jpg -../coco/images/train2014/COCO_train2014_000000000368.jpg -../coco/images/train2014/COCO_train2014_000000000370.jpg -../coco/images/train2014/COCO_train2014_000000000382.jpg -../coco/images/train2014/COCO_train2014_000000000384.jpg -../coco/images/train2014/COCO_train2014_000000000389.jpg -../coco/images/train2014/COCO_train2014_000000000394.jpg -../coco/images/train2014/COCO_train2014_000000000404.jpg -../coco/images/train2014/COCO_train2014_000000000419.jpg -../coco/images/train2014/COCO_train2014_000000000431.jpg -../coco/images/train2014/COCO_train2014_000000000436.jpg -../coco/images/train2014/COCO_train2014_000000000438.jpg -../coco/images/train2014/COCO_train2014_000000000443.jpg -../coco/images/train2014/COCO_train2014_000000000446.jpg -../coco/images/train2014/COCO_train2014_000000000450.jpg -../coco/images/train2014/COCO_train2014_000000000471.jpg -../coco/images/train2014/COCO_train2014_000000000490.jpg -../coco/images/train2014/COCO_train2014_000000000491.jpg -../coco/images/train2014/COCO_train2014_000000000510.jpg -../coco/images/train2014/COCO_train2014_000000000514.jpg -../coco/images/train2014/COCO_train2014_000000000529.jpg -../coco/images/train2014/COCO_train2014_000000000531.jpg +../coco/images/COCO_train2014_000000000009.jpg +../coco/images/COCO_train2014_000000000025.jpg +../coco/images/COCO_train2014_000000000030.jpg +../coco/images/COCO_train2014_000000000034.jpg +../coco/images/COCO_train2014_000000000036.jpg +../coco/images/COCO_train2014_000000000049.jpg +../coco/images/COCO_train2014_000000000061.jpg +../coco/images/COCO_train2014_000000000064.jpg +../coco/images/COCO_train2014_000000000071.jpg +../coco/images/COCO_train2014_000000000072.jpg +../coco/images/COCO_train2014_000000000077.jpg +../coco/images/COCO_train2014_000000000078.jpg +../coco/images/COCO_train2014_000000000081.jpg +../coco/images/COCO_train2014_000000000086.jpg +../coco/images/COCO_train2014_000000000089.jpg +../coco/images/COCO_train2014_000000000092.jpg +../coco/images/COCO_train2014_000000000094.jpg +../coco/images/COCO_train2014_000000000109.jpg +../coco/images/COCO_train2014_000000000110.jpg +../coco/images/COCO_train2014_000000000113.jpg +../coco/images/COCO_train2014_000000000127.jpg +../coco/images/COCO_train2014_000000000138.jpg +../coco/images/COCO_train2014_000000000142.jpg +../coco/images/COCO_train2014_000000000144.jpg +../coco/images/COCO_train2014_000000000149.jpg +../coco/images/COCO_train2014_000000000151.jpg +../coco/images/COCO_train2014_000000000154.jpg +../coco/images/COCO_train2014_000000000165.jpg +../coco/images/COCO_train2014_000000000194.jpg +../coco/images/COCO_train2014_000000000201.jpg +../coco/images/COCO_train2014_000000000247.jpg +../coco/images/COCO_train2014_000000000260.jpg +../coco/images/COCO_train2014_000000000263.jpg +../coco/images/COCO_train2014_000000000307.jpg +../coco/images/COCO_train2014_000000000308.jpg +../coco/images/COCO_train2014_000000000309.jpg +../coco/images/COCO_train2014_000000000312.jpg +../coco/images/COCO_train2014_000000000315.jpg +../coco/images/COCO_train2014_000000000321.jpg +../coco/images/COCO_train2014_000000000322.jpg +../coco/images/COCO_train2014_000000000326.jpg +../coco/images/COCO_train2014_000000000332.jpg +../coco/images/COCO_train2014_000000000349.jpg +../coco/images/COCO_train2014_000000000368.jpg +../coco/images/COCO_train2014_000000000370.jpg +../coco/images/COCO_train2014_000000000382.jpg +../coco/images/COCO_train2014_000000000384.jpg +../coco/images/COCO_train2014_000000000389.jpg +../coco/images/COCO_train2014_000000000394.jpg +../coco/images/COCO_train2014_000000000404.jpg +../coco/images/COCO_train2014_000000000419.jpg +../coco/images/COCO_train2014_000000000431.jpg +../coco/images/COCO_train2014_000000000436.jpg +../coco/images/COCO_train2014_000000000438.jpg +../coco/images/COCO_train2014_000000000443.jpg +../coco/images/COCO_train2014_000000000446.jpg +../coco/images/COCO_train2014_000000000450.jpg +../coco/images/COCO_train2014_000000000471.jpg +../coco/images/COCO_train2014_000000000490.jpg +../coco/images/COCO_train2014_000000000491.jpg +../coco/images/COCO_train2014_000000000510.jpg +../coco/images/COCO_train2014_000000000514.jpg +../coco/images/COCO_train2014_000000000529.jpg +../coco/images/COCO_train2014_000000000531.jpg From 0a489bc1c3dc2cb43029f3028ede2719797d7d08 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Dec 2019 16:21:03 -0800 Subject: [PATCH 1763/2595] updates --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 2ea8d615..518a16be 100755 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,6 @@ data/* !data/coco.data !data/coco_*.data !data/coco_*.txt -!data/coco_*.txt !data/trainvalno5k.shapes !data/*.sh From 6b8425b9ec21740c3a8fb9d22e57221accadc709 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Dec 2019 17:31:27 -0800 Subject: [PATCH 1764/2595] updates --- data/get_coco2017.sh | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100755 data/get_coco2017.sh diff --git a/data/get_coco2017.sh b/data/get_coco2017.sh new file mode 100755 index 00000000..6569e379 --- /dev/null +++ b/data/get_coco2017.sh @@ -0,0 +1,31 @@ +#!/bin/bash +# Zip coco folder +# zip -r coco.zip coco +# tar -czvf coco.tar.gz coco + +# Download labels from Google Drive, accepting presented query +filename="coco2017labels.zip" +fileid="1cXZR_ckHki6nddOmcysCuuJFM--T-Q6L" +curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" > /dev/null +curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${fileid}" -o ${filename} +rm ./cookie ./$filename + +# Unzip labels +unzip -q ${filename} # for coco.zip +# tar -xzf ${filename} # for coco.tar.gz + +# Download images +cd coco/images +wget -c http://images.cocodataset.org/zips/train2017.zip +wget -c http://images.cocodataset.org/zips/val2017.zip + +# Unzip images +unzip -q train2017.zip +unzip -q val2017.zip + +# (optional) Delete zip files +rm -rf *.zip + +# cd out +cd ../.. + From 4b368b704b07cd9dcdee7a80120cb808a72b1a45 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Dec 2019 17:34:19 -0800 Subject: [PATCH 1765/2595] updates --- data/get_coco2017.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/get_coco2017.sh b/data/get_coco2017.sh index 6569e379..beff2dcf 100755 --- a/data/get_coco2017.sh +++ b/data/get_coco2017.sh @@ -8,7 +8,7 @@ filename="coco2017labels.zip" fileid="1cXZR_ckHki6nddOmcysCuuJFM--T-Q6L" curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" > /dev/null curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${fileid}" -o ${filename} -rm ./cookie ./$filename +rm ./cookie # Unzip labels unzip -q ${filename} # for coco.zip @@ -24,7 +24,7 @@ unzip -q train2017.zip unzip -q val2017.zip # (optional) Delete zip files -rm -rf *.zip +rm -rf *.zip ../*.zip # cd out cd ../.. From a4bdb8ce2ee401cd6922c3e65273f24d0a27c372 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Dec 2019 17:46:42 -0800 Subject: [PATCH 1766/2595] updates --- data/get_coco2017.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data/get_coco2017.sh b/data/get_coco2017.sh index beff2dcf..ba24151d 100755 --- a/data/get_coco2017.sh +++ b/data/get_coco2017.sh @@ -13,6 +13,7 @@ rm ./cookie # Unzip labels unzip -q ${filename} # for coco.zip # tar -xzf ${filename} # for coco.tar.gz +rm ${filename} # Download images cd coco/images @@ -24,7 +25,7 @@ unzip -q train2017.zip unzip -q val2017.zip # (optional) Delete zip files -rm -rf *.zip ../*.zip +rm -rf *.zip # cd out cd ../.. From 0465500b37717881ecc8d03d438e6c6e2ec8e223 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Dec 2019 18:52:08 -0800 Subject: [PATCH 1767/2595] updates --- data/5k.shapes | 5000 -- data/coco.data | 6 - data/{coco_1img.data => coco1.data} | 0 data/coco1.txt | 1 + data/coco16.data | 4 + data/coco16.txt | 16 + data/coco1cls.data | 4 + data/coco1cls.txt | 16 + data/coco2017.data | 4 + data/coco64.data | 4 + data/coco64.txt | 64 + data/coco_16img.data | 6 - data/coco_16img.txt | 16 - data/coco_1cls.data | 6 - data/coco_1cls.txt | 5 - data/coco_1img.txt | 1 - data/coco_64img.data | 6 - data/coco_64img.txt | 64 - data/get_coco2014.sh | 33 + data/get_coco_dataset.sh | 39 - data/get_coco_dataset_gdrive.sh | 17 - data/trainvalno5k.shapes | 117263 ------------------------- utils/datasets.py | 2 +- utils/utils.py | 2 +- 24 files changed, 148 insertions(+), 122431 deletions(-) delete mode 100644 data/5k.shapes delete mode 100644 data/coco.data rename data/{coco_1img.data => coco1.data} (100%) create mode 100644 data/coco1.txt create mode 100644 data/coco16.data create mode 100644 data/coco16.txt create mode 100644 data/coco1cls.data create mode 100644 data/coco1cls.txt create mode 100644 data/coco2017.data create mode 100644 data/coco64.data create mode 100644 data/coco64.txt delete mode 100644 data/coco_16img.data delete mode 100644 data/coco_16img.txt delete mode 100644 data/coco_1cls.data delete mode 100644 data/coco_1cls.txt delete mode 100644 data/coco_1img.txt delete mode 100644 data/coco_64img.data delete mode 100644 data/coco_64img.txt create mode 100755 data/get_coco2014.sh delete mode 100755 data/get_coco_dataset.sh delete mode 100755 data/get_coco_dataset_gdrive.sh delete mode 100644 data/trainvalno5k.shapes diff --git a/data/5k.shapes b/data/5k.shapes deleted file mode 100644 index d4d57b67..00000000 --- a/data/5k.shapes +++ /dev/null @@ -1,5000 +0,0 @@ -640 480 -640 480 -428 640 -640 480 -640 480 -640 407 -640 480 -640 427 -500 343 -621 640 -480 640 -640 427 -424 640 -640 480 -640 424 -640 480 -640 427 -500 375 -640 480 -640 479 -427 640 -640 480 -640 425 -640 480 -400 338 -480 640 -640 428 -640 640 -640 338 -640 480 -640 427 -640 384 -480 640 -640 480 -640 426 -425 640 -512 640 -640 415 -640 480 -640 319 -640 426 -640 427 -640 364 -640 480 -480 640 -558 640 -640 528 -612 612 -481 640 -640 427 -640 360 -457 640 -640 427 -480 640 -459 640 -640 425 -640 521 -640 424 -640 513 -480 640 -640 346 -640 361 -640 427 -500 332 -640 427 -640 427 -640 443 -500 333 -640 427 -640 480 -640 430 -640 428 -640 337 -640 640 -640 480 -480 640 -424 640 -640 640 -500 331 -640 427 -500 375 -640 480 -480 640 -426 640 -500 476 -427 640 -640 446 -640 427 -640 424 -532 640 -640 572 -640 320 -640 424 -500 375 -640 427 -500 395 -480 640 -333 500 -640 360 -640 319 -640 480 -640 427 -640 425 -640 480 -640 428 -640 480 -427 640 -480 640 -640 480 -640 426 -640 427 -500 333 -375 500 -640 480 -640 457 -640 480 -640 425 -612 612 -640 480 -640 427 -640 480 -640 426 -640 640 -640 451 -500 500 -427 640 -640 478 -640 480 -640 480 -640 427 -640 427 -640 481 -640 427 -427 640 -480 640 -640 480 -513 640 -640 408 -640 426 -379 640 -640 440 -640 425 -424 640 -640 427 -480 640 -640 359 -640 427 -427 640 -512 640 -461 640 -478 640 -640 480 -427 640 -640 427 -493 640 -500 347 -500 403 -640 525 -640 478 -640 371 -640 406 -640 480 -333 500 -640 480 -500 334 -531 640 -640 480 -500 375 -640 480 -640 480 -479 640 -500 375 -426 640 -500 375 -640 404 -640 425 -640 427 -640 480 -500 333 -640 480 -640 480 -500 375 -480 640 -640 425 -480 640 -640 457 -640 480 -640 640 -640 414 -500 375 -480 640 -426 640 -640 427 -482 640 -333 500 -500 362 -640 427 -640 427 -640 478 -640 480 -640 424 -640 480 -480 640 -640 480 -612 612 -480 640 -375 500 -640 480 -480 640 -400 515 -640 524 -640 480 -500 426 -640 426 -426 640 -640 428 -640 427 -640 427 -612 612 -640 427 -640 426 -640 426 -480 640 -427 640 -640 427 -640 626 -500 375 -640 427 -459 640 -500 413 -640 426 -640 480 -640 278 -640 480 -640 480 -640 426 -640 480 -480 640 -640 383 -640 480 -640 480 -481 640 -480 640 -640 480 -619 640 -640 483 -640 480 -640 368 -500 375 -459 640 -480 640 -427 640 -426 640 -640 480 -500 375 -640 424 -375 500 -640 427 -427 640 -427 640 -640 480 -640 427 -640 426 -333 640 -360 640 -640 383 -427 640 -640 390 -640 640 -500 378 -426 640 -640 322 -334 640 -375 500 -640 480 -426 640 -640 426 -500 375 -426 640 -612 612 -458 640 -480 640 -427 640 -640 419 -500 375 -427 640 -345 500 -500 333 -640 480 -640 480 -640 480 -640 550 -640 480 -480 640 -427 640 -640 480 -480 640 -500 375 -612 612 -375 500 -640 480 -640 427 -640 360 -480 640 -600 550 -639 640 -425 640 -640 480 -612 612 -576 640 -500 375 -512 640 -640 360 -640 480 -640 426 -640 426 -612 612 -640 480 -640 427 -427 640 -640 451 -640 480 -640 480 -640 415 -426 640 -640 426 -640 448 -640 480 -500 375 -640 480 -480 640 -640 427 -640 407 -640 528 -640 519 -640 431 -478 640 -640 427 -640 427 -500 500 -640 427 -640 427 -640 413 -640 478 -500 375 -640 424 -640 480 -640 388 -640 480 -500 375 -640 428 -426 640 -473 640 -480 640 -640 347 -640 478 -640 480 -500 379 -640 426 -640 437 -640 427 -640 427 -640 480 -480 640 -426 640 -425 500 -500 333 -500 500 -640 480 -640 428 -640 480 -640 396 -500 480 -640 427 -640 418 -640 480 -640 426 -333 500 -640 426 -640 480 -640 480 -640 424 -472 640 -425 640 -640 401 -640 624 -612 612 -640 426 -640 428 -640 425 -640 480 -500 374 -640 480 -480 640 -427 640 -640 301 -640 480 -640 480 -480 640 -480 640 -500 375 -640 480 -640 480 -640 427 -640 512 -640 373 -480 640 -500 333 -480 640 -640 427 -500 372 -640 480 -640 480 -375 500 -640 360 -640 428 -612 612 -640 480 -480 640 -640 427 -427 640 -500 375 -640 360 -480 640 -640 480 -480 640 -640 480 -480 640 -640 425 -480 640 -640 470 -491 640 -640 426 -612 612 -640 480 -640 428 -480 320 -640 427 -640 480 -640 480 -640 427 -640 480 -640 362 -640 415 -334 500 -640 640 -640 554 -640 427 -640 427 -640 480 -640 426 -640 365 -640 574 -465 640 -424 640 -640 480 -640 427 -425 640 -640 428 -426 640 -640 480 -640 480 -478 640 -640 480 -640 425 -480 640 -640 428 -480 640 -640 427 -480 640 -640 428 -640 426 -345 415 -640 427 -640 480 -640 419 -640 478 -456 640 -640 427 -640 193 -640 360 -500 375 -640 480 -640 458 -480 640 -612 612 -640 478 -640 480 -480 640 -640 426 -640 427 -480 640 -640 481 -640 427 -375 500 -500 375 -640 427 -640 425 -640 360 -500 343 -640 427 -640 480 -640 391 -634 640 -640 425 -500 429 -333 500 -426 640 -640 480 -640 428 -640 547 -375 500 -432 354 -640 480 -640 480 -500 334 -640 480 -375 500 -640 480 -640 427 -360 640 -640 480 -640 426 -640 480 -640 427 -640 483 -640 480 -640 480 -640 425 -450 303 -640 480 -640 334 -640 425 -401 640 -640 427 -500 375 -640 424 -640 338 -640 561 -266 640 -640 428 -640 459 -375 500 -400 300 -640 480 -640 480 -640 427 -480 640 -375 500 -640 480 -640 480 -640 480 -480 640 -424 640 -480 640 -426 640 -640 429 -640 480 -424 640 -640 480 -640 480 -640 426 -640 307 -500 375 -640 390 -640 480 -465 640 -640 480 -640 480 -480 640 -640 424 -480 640 -640 360 -640 480 -640 427 -640 439 -640 427 -640 453 -640 480 -480 640 -640 433 -640 480 -640 478 -640 480 -500 436 -426 640 -640 360 -612 612 -640 480 -612 612 -640 425 -430 640 -640 480 -480 640 -500 500 -640 263 -640 480 -640 427 -640 478 -640 418 -640 378 -640 427 -640 512 -512 640 -640 505 -481 640 -640 426 -480 640 -500 375 -640 426 -640 478 -640 425 -370 500 -500 333 -640 427 -383 640 -640 427 -640 480 -500 375 -500 375 -478 640 -500 379 -427 640 -640 480 -480 640 -438 640 -640 480 -375 500 -431 640 -500 281 -500 311 -500 400 -640 427 -640 427 -640 480 -640 426 -640 480 -427 640 -478 640 -480 640 -640 428 -640 478 -640 480 -640 480 -640 483 -428 500 -640 428 -640 427 -640 426 -640 425 -640 427 -500 375 -640 480 -640 480 -640 640 -640 457 -640 428 -640 480 -480 640 -640 480 -640 499 -480 640 -640 480 -640 359 -500 333 -480 640 -427 640 -375 500 -640 480 -480 640 -640 480 -480 640 -640 480 -640 480 -640 360 -640 360 -640 480 -640 438 -426 640 -480 640 -640 480 -375 500 -640 480 -640 480 -500 333 -640 640 -479 640 -640 360 -640 427 -640 245 -640 480 -612 612 -640 601 -640 454 -640 427 -640 480 -448 336 -640 480 -640 604 -640 480 -500 333 -640 480 -640 427 -640 480 -500 333 -640 480 -480 640 -640 424 -640 424 -640 480 -500 332 -480 640 -640 427 -480 640 -640 403 -609 640 -640 480 -640 480 -412 500 -640 425 -640 428 -640 427 -500 336 -640 474 -640 480 -640 428 -500 375 -640 480 -640 480 -640 366 -480 640 -640 481 -640 480 -375 500 -640 480 -480 640 -640 424 -640 425 -344 500 -500 375 -640 480 -640 487 -640 389 -640 427 -500 375 -640 426 -640 426 -500 375 -640 447 -504 640 -426 640 -640 480 -640 480 -480 640 -640 428 -640 427 -640 427 -640 480 -640 425 -640 427 -640 429 -357 500 -640 480 -640 480 -447 640 -500 357 -479 640 -640 483 -480 640 -640 425 -426 640 -640 426 -640 428 -427 640 -639 640 -640 427 -640 355 -640 480 -640 414 -360 640 -640 427 -640 480 -424 640 -640 413 -500 338 -640 423 -480 640 -338 500 -640 439 -640 425 -640 428 -265 500 -640 427 -640 595 -640 480 -640 400 -639 640 -640 640 -500 400 -500 375 -640 434 -640 480 -480 640 -640 480 -640 400 -500 375 -640 427 -640 430 -640 480 -640 480 -640 640 -640 480 -640 590 -640 480 -640 426 -500 326 -640 427 -640 480 -600 400 -640 392 -640 480 -640 480 -640 360 -640 480 -640 425 -612 612 -240 320 -480 640 -480 640 -500 375 -640 427 -640 480 -375 500 -640 427 -640 429 -500 375 -428 640 -500 487 -640 480 -640 427 -640 533 -640 640 -640 480 -500 326 -640 480 -640 427 -640 480 -426 640 -640 480 -640 480 -480 640 -640 491 -640 427 -500 333 -500 375 -472 640 -506 640 -640 425 -500 375 -640 426 -432 640 -640 426 -333 500 -500 357 -640 461 -375 500 -640 438 -640 427 -500 332 -640 375 -640 480 -500 333 -640 480 -612 612 -640 427 -640 428 -640 480 -640 423 -640 480 -640 426 -640 426 -640 548 -640 480 -640 427 -427 640 -640 427 -640 428 -640 478 -640 480 -457 640 -640 459 -640 480 -640 435 -400 267 -640 480 -611 640 -640 480 -640 427 -640 480 -640 480 -640 429 -640 427 -640 480 -500 333 -480 640 -480 640 -427 640 -427 640 -480 640 -640 384 -640 427 -426 640 -640 360 -640 573 -578 640 -640 480 -640 426 -480 640 -640 429 -640 480 -640 426 -480 640 -334 500 -640 427 -640 347 -640 481 -640 427 -640 480 -427 640 -640 480 -640 480 -640 480 -640 480 -500 400 -640 480 -640 426 -640 425 -425 640 -427 640 -640 480 -425 640 -480 640 -640 484 -480 640 -640 426 -640 427 -640 425 -640 640 -640 480 -426 640 -640 429 -480 640 -640 427 -480 640 -640 427 -640 480 -426 640 -640 480 -640 426 -640 425 -426 640 -640 470 -640 480 -640 360 -640 480 -640 480 -640 480 -500 281 -640 480 -640 427 -640 427 -640 427 -640 423 -640 425 -640 427 -500 333 -480 640 -457 640 -640 427 -640 480 -425 640 -600 448 -640 425 -640 480 -640 480 -480 640 -640 425 -640 426 -640 427 -640 361 -640 480 -500 375 -640 487 -480 640 -500 375 -640 426 -500 375 -500 396 -500 332 -375 500 -640 400 -640 480 -480 640 -640 424 -640 480 -427 640 -368 640 -640 425 -640 428 -612 612 -480 640 -640 282 -640 428 -500 342 -640 440 -500 334 -640 426 -500 333 -640 427 -640 428 -500 333 -640 640 -500 374 -640 426 -640 425 -429 640 -640 433 -480 640 -640 490 -500 400 -640 480 -640 360 -640 480 -612 612 -640 393 -640 480 -480 640 -480 640 -640 426 -428 640 -640 456 -640 470 -420 266 -640 426 -480 640 -640 427 -640 640 -640 426 -506 640 -640 478 -640 425 -640 480 -640 480 -640 480 -640 512 -500 475 -612 612 -640 640 -480 640 -640 427 -640 427 -640 460 -613 640 -480 640 -480 640 -640 314 -640 480 -480 640 -640 424 -640 427 -640 480 -640 480 -458 640 -640 427 -640 443 -640 428 -640 427 -424 640 -640 427 -426 640 -640 457 -427 640 -640 427 -640 480 -480 640 -640 480 -335 500 -480 640 -640 425 -640 360 -429 640 -640 425 -640 427 -640 394 -491 640 -640 480 -640 480 -429 640 -640 484 -640 458 -333 500 -640 480 -480 640 -388 640 -640 425 -640 480 -640 427 -640 427 -640 480 -500 333 -640 428 -640 480 -640 479 -640 513 -425 640 -500 334 -375 500 -427 640 -480 640 -640 549 -640 480 -640 480 -640 428 -358 500 -640 428 -480 640 -480 640 -640 403 -640 361 -640 424 -640 359 -408 408 -640 374 -283 500 -640 427 -640 321 -640 424 -640 480 -500 357 -640 480 -640 426 -427 640 -640 480 -640 427 -640 416 -640 426 -640 480 -426 640 -640 480 -640 480 -375 500 -640 284 -640 424 -640 480 -640 480 -640 480 -640 366 -640 526 -480 640 -480 640 -460 640 -640 480 -640 302 -640 428 -640 428 -640 359 -612 612 -500 281 -640 427 -640 427 -640 480 -640 480 -640 427 -640 427 -478 640 -500 333 -640 360 -640 429 -640 480 -366 640 -424 640 -640 359 -500 338 -640 427 -640 427 -640 354 -640 480 -640 424 -478 640 -640 360 -427 640 -427 640 -428 640 -427 640 -640 423 -640 388 -431 640 -491 640 -640 426 -640 428 -640 427 -640 480 -640 360 -640 428 -427 640 -333 500 -640 480 -431 640 -640 426 -640 426 -640 427 -640 423 -425 640 -480 640 -640 480 -396 640 -640 480 -640 427 -640 504 -640 426 -480 640 -375 500 -427 640 -428 640 -640 480 -640 360 -640 424 -640 428 -479 640 -640 360 -426 640 -427 640 -640 512 -640 426 -640 520 -480 640 -500 333 -500 352 -640 473 -426 640 -640 427 -640 427 -640 480 -500 375 -640 427 -640 412 -640 480 -500 333 -640 404 -640 426 -500 375 -509 640 -640 480 -640 371 -500 375 -640 480 -640 436 -640 298 -640 480 -640 480 -640 427 -640 425 -640 428 -640 480 -640 426 -640 427 -640 539 -640 480 -427 640 -425 640 -640 360 -640 480 -640 480 -640 427 -612 612 -640 427 -480 640 -640 349 -375 500 -640 480 -640 441 -379 640 -500 375 -640 480 -640 426 -612 612 -640 427 -480 640 -613 449 -640 640 -640 549 -640 424 -640 480 -500 332 -500 333 -640 352 -640 427 -480 640 -640 480 -640 480 -640 480 -612 612 -426 640 -640 353 -426 640 -640 428 -640 488 -427 640 -640 480 -385 640 -375 500 -424 640 -500 333 -640 476 -640 479 -386 640 -640 480 -486 500 -640 360 -640 427 -640 480 -640 478 -640 480 -640 480 -640 480 -640 480 -500 399 -500 375 -640 427 -640 426 -640 501 -374 500 -640 480 -640 427 -640 427 -457 640 -457 640 -427 640 -640 427 -640 427 -500 375 -427 640 -640 480 -640 416 -640 464 -500 375 -640 480 -640 480 -640 480 -640 480 -640 423 -480 640 -640 427 -640 360 -640 360 -428 640 -503 640 -640 428 -640 427 -640 427 -500 333 -426 640 -429 640 -427 640 -640 400 -500 332 -480 640 -500 266 -500 357 -360 640 -640 427 -427 640 -640 480 -640 425 -612 612 -424 640 -640 427 -427 640 -640 426 -640 640 -640 480 -640 428 -500 375 -612 612 -500 333 -640 426 -640 480 -500 333 -640 428 -640 428 -480 640 -640 512 -640 365 -375 500 -640 427 -640 229 -640 480 -640 480 -640 480 -640 440 -640 428 -640 427 -480 640 -428 640 -500 375 -640 422 -640 427 -480 640 -480 640 -640 427 -500 375 -640 427 -587 640 -640 427 -500 400 -640 492 -500 375 -640 360 -427 640 -480 640 -640 478 -640 427 -480 640 -640 480 -640 425 -640 480 -640 427 -640 427 -640 427 -640 383 -640 364 -640 480 -640 349 -480 640 -640 426 -640 480 -335 500 -640 480 -640 480 -640 427 -640 480 -640 480 -478 640 -640 426 -640 426 -640 427 -640 480 -640 426 -427 640 -426 640 -640 480 -640 436 -426 640 -427 640 -425 640 -640 427 -640 406 -640 480 -612 612 -640 426 -425 640 -480 640 -480 640 -640 493 -375 500 -640 422 -640 426 -361 640 -640 427 -640 427 -640 504 -640 428 -640 480 -640 510 -640 480 -640 514 -640 424 -640 480 -480 640 -640 427 -640 480 -640 426 -640 480 -640 427 -640 432 -427 640 -640 439 -640 512 -640 480 -488 364 -427 640 -640 349 -375 500 -640 426 -640 427 -480 640 -500 332 -640 480 -640 424 -640 480 -333 500 -500 351 -640 480 -640 480 -640 480 -640 428 -640 428 -427 640 -640 427 -640 480 -426 640 -640 425 -640 512 -640 480 -478 640 -640 480 -640 501 -640 427 -460 500 -500 322 -640 480 -640 480 -480 640 -640 480 -500 333 -640 424 -640 424 -612 612 -640 426 -640 480 -640 480 -640 500 -427 640 -640 427 -500 375 -640 480 -500 354 -400 302 -480 640 -640 427 -512 640 -387 640 -640 457 -426 640 -640 427 -640 480 -640 427 -480 640 -640 427 -480 640 -640 480 -640 426 -640 640 -426 640 -425 640 -640 436 -640 358 -640 426 -640 480 -612 612 -480 640 -640 480 -640 355 -500 333 -573 640 -640 360 -640 426 -640 480 -640 480 -640 426 -640 480 -426 640 -640 480 -640 427 -640 427 -640 427 -640 426 -612 612 -480 640 -640 425 -640 480 -500 355 -640 380 -640 427 -353 500 -640 427 -427 640 -640 426 -640 480 -640 427 -640 418 -478 640 -640 425 -500 399 -640 480 -640 427 -600 402 -500 330 -640 425 -640 428 -640 427 -480 640 -509 640 -640 429 -458 640 -480 640 -640 425 -640 427 -640 427 -640 425 -640 427 -612 612 -500 381 -640 426 -427 640 -640 480 -640 478 -640 480 -640 480 -640 480 -640 480 -427 640 -480 640 -640 640 -640 361 -480 640 -640 480 -640 427 -640 408 -640 480 -640 480 -480 640 -480 640 -640 572 -640 440 -640 480 -500 346 -640 636 -500 334 -640 498 -640 426 -424 640 -640 480 -426 640 -500 333 -480 640 -353 480 -500 375 -640 373 -640 426 -480 640 -640 424 -640 480 -640 425 -500 335 -500 333 -640 478 -640 451 -480 640 -640 427 -383 640 -474 640 -640 360 -640 427 -426 640 -640 427 -500 431 -640 427 -640 480 -500 375 -640 480 -640 480 -640 480 -640 480 -640 480 -640 426 -640 480 -640 425 -518 640 -640 424 -640 430 -480 640 -640 425 -500 375 -375 500 -500 375 -480 320 -640 426 -640 480 -375 500 -500 375 -478 640 -612 612 -640 437 -640 425 -640 424 -640 480 -640 574 -640 427 -500 333 -399 640 -640 480 -427 640 -640 462 -480 640 -640 426 -640 429 -640 360 -640 458 -640 427 -640 603 -640 480 -640 384 -427 640 -375 500 -513 640 -640 496 -640 478 -640 480 -640 480 -500 375 -640 426 -480 640 -640 480 -640 426 -640 427 -640 478 -640 640 -640 427 -640 608 -640 480 -639 640 -427 640 -640 343 -640 479 -640 640 -427 640 -640 398 -480 640 -640 432 -426 640 -500 375 -480 640 -640 480 -640 480 -480 640 -640 480 -500 375 -640 425 -640 480 -500 335 -500 375 -591 640 -640 427 -640 428 -427 640 -426 640 -640 425 -600 420 -423 640 -640 478 -500 404 -640 426 -552 346 -640 431 -640 229 -640 427 -640 480 -640 480 -500 375 -500 316 -439 500 -480 640 -640 427 -427 640 -480 640 -640 424 -640 480 -640 480 -640 480 -429 640 -640 427 -640 426 -640 480 -426 640 -640 480 -640 438 -640 427 -640 480 -640 429 -425 640 -500 375 -500 375 -640 480 -480 640 -640 424 -500 375 -640 480 -426 640 -640 451 -640 480 -640 480 -640 575 -480 640 -640 451 -640 425 -640 401 -640 457 -424 640 -640 480 -332 500 -323 640 -640 480 -640 480 -480 640 -640 289 -640 480 -640 426 -640 457 -640 480 -640 426 -640 480 -640 444 -640 480 -480 640 -427 640 -640 480 -640 480 -640 471 -480 640 -640 427 -525 525 -375 500 -640 348 -500 334 -640 480 -500 375 -425 640 -640 425 -640 427 -640 480 -640 427 -640 428 -500 391 -640 480 -640 427 -640 427 -640 480 -640 359 -640 640 -500 333 -640 426 -640 442 -612 612 -640 427 -457 640 -640 427 -640 512 -640 614 -640 361 -640 480 -500 375 -640 428 -640 480 -500 391 -640 425 -500 375 -640 428 -640 425 -612 612 -640 480 -640 628 -640 528 -640 425 -640 480 -640 480 -640 478 -480 640 -427 640 -427 640 -640 451 -427 640 -640 480 -640 427 -640 480 -640 480 -640 427 -640 424 -640 480 -640 455 -640 480 -640 428 -336 500 -640 480 -480 640 -500 383 -459 640 -640 427 -640 456 -375 500 -640 480 -500 375 -500 281 -640 425 -480 640 -640 424 -640 361 -507 640 -334 500 -640 480 -500 400 -640 427 -640 426 -640 426 -640 319 -480 640 -420 640 -640 427 -480 640 -640 427 -427 640 -500 375 -640 640 -640 480 -320 480 -640 361 -500 400 -640 427 -500 376 -429 640 -500 381 -640 427 -640 426 -640 563 -640 480 -640 480 -640 429 -640 512 -640 480 -500 375 -640 480 -640 426 -424 640 -480 640 -544 640 -612 612 -640 480 -640 427 -500 333 -640 427 -640 480 -500 357 -339 500 -640 425 -640 406 -640 480 -500 370 -640 480 -640 484 -640 316 -640 480 -640 426 -480 640 -425 640 -640 427 -480 640 -640 480 -640 425 -480 640 -640 321 -640 436 -480 640 -640 480 -640 426 -640 480 -640 507 -640 480 -640 469 -500 333 -640 426 -640 480 -640 478 -640 426 -640 427 -640 425 -640 453 -640 427 -427 640 -480 360 -640 427 -500 332 -640 427 -375 500 -640 480 -500 334 -600 402 -640 480 -500 375 -480 640 -320 240 -640 427 -640 480 -640 480 -480 640 -640 427 -640 480 -640 427 -500 375 -640 427 -640 480 -477 640 -612 612 -640 481 -640 488 -480 640 -640 427 -640 480 -500 375 -640 425 -640 480 -640 455 -640 480 -500 332 -640 480 -500 375 -640 427 -640 427 -640 480 -640 480 -640 282 -335 500 -500 375 -640 427 -640 480 -640 480 -640 480 -640 480 -427 640 -333 500 -640 426 -640 351 -640 425 -478 640 -400 346 -500 393 -500 375 -640 511 -500 375 -480 640 -640 427 -640 426 -640 426 -640 480 -427 640 -640 427 -640 427 -640 640 -640 480 -640 427 -640 427 -640 340 -428 640 -640 233 -640 524 -385 289 -640 427 -640 640 -640 435 -360 450 -338 450 -640 351 -457 640 -500 375 -640 427 -640 427 -640 363 -640 426 -640 480 -640 444 -640 638 -640 383 -385 308 -375 500 -426 640 -640 550 -480 640 -448 336 -640 426 -640 427 -480 640 -640 420 -640 640 -640 523 -640 383 -500 377 -640 427 -375 500 -640 232 -427 640 -478 640 -640 424 -481 640 -640 427 -640 480 -500 332 -640 426 -640 480 -427 640 -500 337 -640 476 -640 480 -640 480 -428 640 -640 480 -500 375 -640 313 -640 426 -640 425 -640 480 -640 426 -375 500 -426 640 -640 480 -500 333 -500 375 -612 612 -500 227 -640 478 -640 428 -640 427 -640 425 -428 640 -500 375 -640 427 -500 333 -640 480 -480 640 -480 640 -640 425 -640 428 -640 480 -640 480 -480 640 -640 428 -640 428 -640 480 -640 427 -480 640 -640 480 -640 427 -496 640 -480 640 -640 583 -480 640 -640 332 -427 640 -480 640 -640 480 -640 426 -473 640 -299 300 -640 360 -640 427 -640 480 -640 466 -640 480 -426 640 -500 333 -640 480 -457 640 -480 640 -640 480 -480 640 -640 480 -640 480 -640 479 -640 640 -640 480 -640 457 -640 426 -640 426 -640 361 -480 640 -640 640 -640 424 -640 384 -500 410 -640 426 -500 375 -500 375 -640 480 -426 640 -500 334 -640 480 -500 371 -640 428 -640 427 -640 427 -640 480 -640 480 -640 480 -640 425 -640 480 -500 375 -640 480 -561 640 -500 333 -640 480 -427 640 -640 427 -640 427 -640 426 -640 480 -500 375 -640 480 -640 427 -639 640 -375 500 -424 640 -640 514 -375 500 -640 427 -640 479 -335 500 -640 472 -500 375 -500 375 -427 640 -500 375 -612 612 -640 478 -418 640 -640 318 -640 294 -640 462 -480 640 -500 375 -640 461 -640 393 -640 480 -640 360 -375 500 -480 640 -640 480 -640 427 -640 455 -640 325 -640 480 -640 480 -430 640 -480 640 -500 375 -640 342 -640 480 -640 426 -458 640 -500 375 -413 640 -640 427 -640 393 -640 409 -640 414 -640 480 -640 426 -640 425 -640 480 -640 480 -640 494 -640 427 -480 640 -640 481 -375 500 -640 427 -640 427 -427 640 -500 333 -640 484 -640 480 -612 612 -480 640 -480 640 -640 426 -640 427 -640 480 -640 368 -407 640 -480 640 -334 500 -500 375 -375 500 -640 428 -424 640 -640 425 -640 427 -640 425 -480 640 -480 640 -640 424 -480 640 -640 426 -386 640 -640 480 -640 640 -640 640 -480 640 -640 427 -640 428 -500 332 -640 478 -640 427 -375 500 -640 480 -640 480 -500 375 -640 480 -640 470 -480 640 -480 640 -640 427 -440 330 -640 480 -640 366 -640 359 -500 340 -640 480 -640 479 -500 333 -430 430 -553 371 -500 375 -640 513 -640 426 -640 511 -375 500 -429 640 -640 427 -274 500 -640 424 -640 480 -640 428 -500 375 -640 458 -640 480 -640 221 -428 640 -480 640 -640 425 -500 375 -425 640 -267 400 -640 427 -640 427 -640 424 -480 640 -640 480 -640 480 -480 640 -640 428 -426 640 -500 375 -640 480 -480 640 -500 334 -640 454 -584 640 -480 384 -640 427 -640 480 -480 640 -640 425 -480 640 -640 480 -640 612 -500 333 -333 500 -640 480 -640 427 -640 480 -480 640 -640 425 -640 480 -640 427 -640 480 -640 436 -640 426 -640 480 -600 402 -640 451 -427 640 -640 422 -640 427 -640 424 -640 480 -640 640 -640 480 -512 640 -640 480 -500 334 -480 640 -640 427 -640 427 -500 375 -480 640 -640 480 -640 512 -640 320 -640 427 -640 427 -612 612 -640 480 -375 500 -427 640 -429 640 -428 640 -640 480 -640 427 -480 640 -640 395 -640 454 -478 640 -640 431 -640 480 -428 640 -640 338 -500 333 -426 640 -640 427 -426 640 -640 427 -418 640 -640 425 -480 640 -640 425 -640 426 -640 360 -120 120 -500 335 -640 426 -640 426 -640 480 -638 640 -640 427 -480 640 -480 640 -500 375 -427 640 -640 503 -640 428 -640 308 -640 480 -640 480 -640 480 -480 640 -533 640 -640 481 -500 333 -500 375 -640 426 -640 425 -640 467 -640 480 -640 426 -427 640 -640 428 -640 480 -640 480 -640 480 -640 363 -375 500 -427 640 -640 425 -426 640 -480 640 -426 640 -640 480 -640 430 -640 300 -640 427 -375 500 -640 428 -375 500 -455 310 -640 427 -500 459 -640 481 -478 640 -640 480 -480 640 -640 480 -500 375 -640 480 -640 426 -640 480 -640 427 -640 480 -640 457 -425 640 -640 480 -640 406 -640 480 -480 640 -500 375 -500 388 -640 480 -448 640 -640 480 -434 640 -640 426 -500 333 -500 326 -640 480 -640 480 -640 480 -640 425 -640 480 -640 427 -640 426 -640 361 -640 480 -640 519 -500 375 -640 480 -500 375 -382 500 -640 480 -640 480 -640 428 -640 480 -612 612 -333 500 -640 512 -612 612 -612 612 -500 375 -640 480 -640 480 -640 349 -413 500 -640 480 -640 425 -640 390 -640 426 -640 359 -335 500 -640 640 -426 640 -640 468 -640 513 -640 465 -640 480 -500 375 -456 640 -480 640 -640 480 -640 480 -426 640 -500 250 -503 640 -500 375 -640 311 -640 460 -480 640 -640 480 -512 640 -480 640 -427 640 -534 640 -480 640 -480 640 -640 425 -480 640 -617 640 -640 427 -640 480 -478 640 -640 480 -640 305 -500 375 -640 425 -640 428 -640 480 -500 281 -480 640 -512 640 -480 360 -640 466 -480 640 -612 612 -640 480 -640 480 -333 500 -640 427 -640 480 -427 640 -640 480 -640 640 -640 480 -640 427 -640 474 -375 500 -640 480 -600 402 -640 480 -640 480 -640 427 -640 480 -500 375 -640 480 -500 375 -635 514 -448 640 -640 435 -428 640 -426 640 -612 612 -500 411 -640 480 -381 500 -640 480 -427 640 -480 640 -640 429 -640 480 -375 500 -640 480 -640 428 -480 640 -480 640 -640 512 -425 640 -478 640 -500 375 -500 375 -403 403 -427 640 -640 360 -480 640 -500 333 -640 360 -640 480 -640 426 -375 500 -500 348 -640 423 -375 500 -640 307 -428 640 -640 480 -640 480 -640 480 -640 418 -375 500 -640 427 -428 640 -640 427 -640 361 -500 375 -640 427 -640 480 -640 427 -425 640 -640 292 -640 360 -640 480 -500 375 -640 480 -500 485 -640 424 -640 480 -640 480 -640 428 -480 640 -640 436 -640 480 -428 640 -640 424 -457 640 -500 332 -640 480 -429 640 -640 429 -428 640 -640 429 -640 426 -640 640 -640 426 -480 640 -640 467 -640 427 -640 480 -500 333 -640 427 -500 338 -640 480 -326 500 -640 465 -640 480 -640 480 -640 423 -640 428 -500 333 -457 640 -375 500 -640 427 -640 425 -640 480 -640 427 -640 428 -500 462 -640 347 -640 400 -480 640 -640 427 -640 427 -640 480 -375 500 -640 475 -403 303 -428 640 -640 480 -640 293 -640 427 -427 640 -640 450 -640 480 -480 640 -640 480 -640 427 -612 612 -640 360 -500 357 -480 640 -640 480 -640 443 -481 640 -640 480 -640 428 -427 640 -640 427 -612 612 -480 640 -425 640 -333 500 -640 427 -640 480 -640 427 -640 424 -640 427 -640 480 -500 400 -500 332 -640 480 -500 375 -500 400 -500 375 -427 640 -443 640 -427 640 -480 640 -640 427 -640 478 -640 480 -640 480 -640 427 -640 425 -640 425 -640 480 -640 408 -480 640 -640 480 -640 480 -612 612 -500 333 -640 420 -480 640 -640 355 -640 480 -640 424 -500 375 -640 480 -640 320 -640 427 -640 480 -427 640 -320 240 -500 333 -389 640 -640 457 -480 640 -427 640 -500 375 -428 640 -640 427 -427 640 -640 425 -640 427 -640 427 -640 408 -640 512 -640 426 -640 426 -640 471 -640 428 -500 375 -640 429 -640 480 -640 480 -500 375 -640 489 -640 425 -640 427 -640 365 -640 480 -479 640 -500 375 -640 427 -640 427 -640 424 -640 480 -640 480 -640 640 -640 460 -640 640 -500 375 -480 640 -426 640 -500 375 -640 524 -640 480 -484 640 -339 329 -640 424 -640 478 -640 432 -640 427 -500 375 -640 426 -473 640 -640 624 -429 640 -480 640 -640 400 -472 640 -506 640 -480 640 -300 500 -375 500 -640 480 -612 612 -640 426 -426 640 -640 480 -640 480 -640 480 -640 427 -379 640 -332 500 -500 333 -640 480 -640 359 -640 333 -640 428 -500 333 -640 480 -640 426 -640 427 -640 368 -640 640 -500 332 -640 428 -640 480 -640 480 -480 640 -640 640 -640 505 -640 400 -480 640 -640 359 -640 480 -640 427 -640 640 -640 427 -640 480 -447 640 -640 480 -500 375 -427 640 -427 640 -426 640 -640 480 -640 360 -500 334 -612 612 -640 480 -640 427 -640 493 -390 500 -427 640 -640 425 -500 303 -640 480 -612 612 -429 640 -640 466 -427 640 -640 480 -640 480 -640 457 -640 427 -617 640 -640 429 -639 640 -640 427 -640 486 -640 271 -480 640 -500 375 -640 427 -480 640 -640 425 -427 640 -640 427 -640 479 -512 640 -434 640 -640 480 -640 480 -478 640 -640 427 -480 640 -640 431 -640 480 -640 427 -612 612 -427 640 -640 427 -640 428 -500 375 -500 375 -640 427 -640 480 -640 427 -500 344 -640 480 -640 480 -640 360 -461 640 -640 428 -427 640 -640 480 -640 366 -375 500 -499 500 -640 425 -640 427 -640 427 -640 425 -500 384 -640 427 -640 480 -640 640 -480 640 -484 640 -640 480 -640 424 -640 427 -426 640 -427 640 -640 424 -640 480 -640 480 -640 480 -613 640 -640 493 -640 427 -480 640 -480 640 -640 426 -640 425 -500 375 -640 480 -500 375 -640 480 -640 478 -480 640 -640 480 -640 480 -480 640 -480 640 -640 480 -640 427 -640 480 -640 458 -640 480 -640 480 -500 333 -640 425 -640 480 -640 427 -500 375 -480 640 -585 640 -480 640 -500 375 -480 640 -427 640 -500 375 -640 640 -500 375 -640 426 -500 375 -640 480 -640 329 -640 427 -427 640 -640 480 -640 286 -640 427 -640 593 -441 640 -640 640 -640 480 -500 367 -480 640 -417 640 -500 375 -640 480 -426 640 -640 454 -427 640 -586 640 -640 480 -427 640 -640 384 -640 427 -640 480 -427 640 -640 450 -640 480 -539 640 -640 427 -429 640 -500 333 -640 503 -640 427 -480 640 -500 333 -394 500 -640 427 -424 640 -640 480 -640 480 -640 426 -640 425 -500 336 -480 640 -612 612 -429 640 -640 478 -640 511 -500 333 -640 427 -640 480 -480 640 -375 500 -640 443 -640 468 -640 427 -480 640 -544 640 -640 424 -640 480 -500 344 -480 640 -640 428 -640 480 -611 640 -640 434 -640 360 -640 471 -640 343 -640 426 -640 497 -640 480 -427 640 -640 480 -640 477 -640 480 -640 480 -640 424 -375 500 -640 427 -640 480 -480 640 -640 424 -640 480 -500 375 -500 334 -640 425 -640 399 -640 425 -640 416 -640 360 -640 480 -640 480 -640 427 -640 480 -640 426 -500 333 -480 640 -640 309 -640 480 -500 379 -428 640 -640 480 -640 478 -640 326 -640 300 -640 480 -640 480 -640 480 -500 350 -640 448 -480 640 -427 640 -500 375 -640 480 -481 640 -640 427 -640 412 -640 427 -640 427 -640 480 -640 427 -500 375 -333 500 -640 427 -640 426 -640 360 -500 439 -640 426 -640 441 -640 427 -640 480 -427 640 -427 640 -500 333 -427 640 -640 480 -640 567 -640 360 -640 373 -640 425 -320 240 -640 480 -427 640 -640 480 -640 427 -480 640 -500 375 -640 424 -425 640 -640 478 -640 480 -427 640 -640 399 -558 640 -426 640 -640 427 -359 640 -640 480 -500 375 -640 480 -640 447 -640 512 -640 480 -640 480 -612 612 -612 612 -640 588 -640 480 -640 427 -640 439 -640 480 -426 640 -640 480 -480 640 -427 640 -640 424 -500 319 -375 500 -640 427 -640 427 -640 480 -640 478 -640 480 -480 640 -640 480 -640 428 -480 640 -640 426 -375 500 -640 478 -279 430 -512 640 -640 267 -640 640 -640 427 -640 457 -427 640 -640 317 -640 481 -480 640 -500 400 -640 480 -480 640 -640 426 -640 427 -375 500 -640 429 -640 480 -375 500 -640 427 -500 375 -640 428 -500 333 -479 640 -333 500 -640 427 -612 612 -640 480 -480 640 -640 640 -640 511 -640 480 -640 480 -640 428 -428 640 -640 480 -640 427 -640 479 -640 458 -640 480 -640 428 -640 427 -640 427 -500 500 -640 427 -640 481 -640 425 -640 638 -640 449 -426 640 -640 480 -640 427 -640 428 -500 281 -640 428 -640 428 -640 480 -500 375 -500 333 -640 427 -500 375 -500 375 -640 427 -640 428 -428 640 -640 427 -640 404 -480 640 -500 333 -640 429 -640 480 -480 640 -427 640 -640 480 -640 426 -454 640 -413 640 -500 375 -640 427 -640 480 -375 500 -640 480 -640 427 -640 480 -640 444 -640 480 -480 640 -640 236 -480 640 -640 428 -640 428 -640 363 -640 480 -640 427 -640 480 -640 480 -395 640 -640 337 -640 427 -640 427 -640 426 -640 414 -640 425 -640 368 -640 427 -500 315 -640 480 -555 640 -500 333 -640 427 -500 334 -485 640 -640 428 -640 480 -640 428 -640 428 -433 640 -640 426 -640 427 -510 640 -640 480 -480 640 -640 480 -640 480 -640 480 -640 470 -640 427 -640 480 -640 426 -640 522 -640 426 -640 426 -640 427 -425 640 -640 483 -640 427 -640 388 -426 640 -424 640 -360 640 -640 428 -640 480 -640 360 -640 515 -640 512 -640 452 -480 640 -427 640 -640 480 -640 480 -640 480 -640 480 -503 640 -480 640 -640 428 -500 331 -427 640 -640 427 -640 480 -640 428 -612 612 -640 480 -640 428 -426 640 -640 538 -500 337 -640 423 -640 480 -640 480 -427 640 -640 480 -500 375 -640 480 -640 480 -640 480 -640 480 -612 612 -640 406 -640 592 -500 330 -640 480 -640 480 -631 640 -500 375 -427 640 -640 480 -640 428 -640 430 -500 332 -640 480 -640 361 -460 640 -640 512 -425 640 -480 640 -640 480 -640 480 -640 480 -500 370 -640 425 -640 360 -640 263 -640 427 -640 427 -640 640 -640 427 -428 640 -640 427 -480 640 -612 612 -333 500 -640 427 -480 640 -640 640 -612 612 -640 480 -640 480 -640 428 -375 500 -640 456 -640 521 -640 427 -640 480 -427 640 -500 343 -640 640 -480 640 -640 480 -480 640 -640 480 -640 480 -481 640 -640 480 -427 369 -640 480 -426 640 -640 480 -500 375 -640 481 -480 640 -600 450 -500 375 -640 480 -640 427 -435 500 -640 427 -640 480 -423 640 -640 480 -640 427 -500 338 -480 640 -640 420 -500 333 -640 425 -640 427 -500 374 -640 480 -640 427 -500 333 -612 612 -640 480 -640 447 -240 320 -640 480 -640 480 -640 427 -640 427 -640 480 -427 640 -640 427 -500 375 -640 505 -640 457 -640 428 -640 480 -337 500 -640 542 -483 640 -640 360 -640 380 -640 428 -424 640 -427 640 -612 612 -500 471 -640 480 -512 640 -640 429 -640 428 -640 640 -640 426 -612 612 -640 427 -500 375 -640 447 -427 640 -640 640 -402 640 -640 480 -640 478 -500 375 -640 285 -506 640 -640 480 -640 425 -640 480 -640 563 -500 375 -640 427 -640 427 -480 640 -640 480 -480 640 -425 640 -500 375 -640 389 -640 480 -640 417 -640 270 -640 427 -500 333 -640 480 -640 480 -568 640 -640 427 -640 480 -640 360 -500 400 -640 425 -640 457 -426 640 -640 480 -640 428 -640 426 -640 426 -640 426 -640 427 -640 617 -500 333 -640 427 -640 426 -500 333 -640 427 -640 480 -640 480 -640 480 -640 426 -428 640 -640 480 -640 428 -640 403 -640 427 -459 500 -640 428 -500 334 -640 480 -640 468 -640 426 -640 477 -510 640 -375 500 -484 640 -640 552 -375 500 -500 375 -640 427 -640 480 -640 426 -480 640 -640 425 -640 437 -640 428 -640 480 -640 480 -640 480 -640 429 -640 427 -640 480 -333 500 -640 398 -612 612 -640 428 -640 427 -508 640 -429 640 -640 427 -500 333 -480 640 -640 480 -640 425 -640 427 -640 480 -427 640 -640 425 -480 640 -544 640 -640 640 -428 640 -640 427 -640 450 -640 425 -375 500 -640 482 -640 426 -519 640 -640 480 -500 375 -640 428 -500 375 -640 360 -640 427 -640 480 -500 375 -375 500 -640 425 -640 362 -401 500 -640 480 -640 427 -640 426 -640 480 -427 640 -640 512 -640 424 -640 480 -480 640 -427 640 -640 428 -640 428 -640 478 -480 640 -640 427 -640 480 -334 500 -640 480 -640 427 -640 241 -480 640 -640 427 -640 427 -640 480 -640 424 -640 548 -427 640 -425 640 -427 640 -640 426 -640 432 -427 640 -640 530 -283 424 -640 480 -640 480 -640 553 -640 442 -373 500 -482 640 -640 480 -640 480 -375 500 -640 360 -640 427 -640 480 -640 427 -640 480 -640 480 -640 427 -427 640 -369 500 -500 375 -640 480 -480 640 -424 640 -640 360 -640 427 -640 479 -480 640 -429 640 -640 480 -640 428 -640 480 -454 640 -428 640 -427 640 -480 640 -428 640 -640 360 -640 480 -426 640 -526 640 -480 640 -640 480 -640 480 -500 333 -640 428 -640 480 -640 640 -640 480 -640 480 -500 375 -640 480 -640 452 -640 473 -640 626 -481 640 -500 375 -640 480 -412 640 -640 427 -500 375 -640 478 -457 640 -640 427 -640 480 -640 427 -640 480 -640 403 -640 561 -500 375 -640 424 -640 480 -640 427 -427 640 -640 480 -425 640 -612 612 -640 427 -500 500 -640 480 -640 427 -640 480 -640 424 -640 480 -640 320 -640 480 -640 425 -375 500 -640 428 -640 427 -640 427 -640 478 -480 640 -640 480 -640 426 -640 427 -612 612 -640 480 -640 480 -500 333 -640 427 -427 640 -640 480 -427 640 -640 478 -640 428 -480 640 -640 425 -478 640 -640 480 -640 426 -480 640 -500 456 -640 428 -640 428 -640 426 -500 375 -640 428 -640 425 -640 360 -640 427 -426 640 -500 486 -640 480 -640 427 -513 640 -480 640 -476 640 -625 426 -640 360 -640 640 -640 427 -640 427 -457 640 -500 375 -640 425 -640 426 -612 612 -428 640 -500 333 -640 427 -470 640 -500 333 -341 500 -640 480 -640 480 -640 427 -640 480 -640 432 -640 426 -640 480 -427 640 -640 480 -640 480 -494 640 -640 424 -375 500 -640 427 -502 640 -434 640 -612 612 -500 375 -640 480 -640 480 -640 480 -375 500 -640 429 -640 480 -640 427 -500 375 -375 500 -640 486 -500 375 -640 427 -640 427 -640 400 -640 480 -424 640 -640 640 -478 640 -640 478 -500 311 -640 400 -640 480 -640 427 -612 612 -640 480 -640 429 -640 427 -480 640 -640 480 -500 375 -640 640 -640 479 -500 375 -640 480 -640 480 -640 427 -640 480 -640 436 -640 480 -640 480 -640 480 -640 480 -375 500 -332 500 -480 640 -640 427 -428 640 -640 480 -640 481 -640 480 -640 428 -640 277 -478 640 -640 396 -427 640 -640 480 -640 426 -640 480 -385 289 -484 640 -612 612 -640 480 -426 640 -640 425 -640 427 -640 427 -640 426 -640 427 -488 640 -346 500 -640 427 -640 480 -640 480 -335 500 -500 333 -640 428 -427 640 -426 640 -640 554 -427 640 -640 426 -640 427 -640 448 -640 480 -640 480 -640 480 -640 480 -640 480 -640 425 -640 480 -640 424 -480 640 -640 425 -480 640 -640 473 -427 640 -640 425 -480 640 -640 457 -640 428 -640 427 -480 640 -640 427 -640 461 -640 425 -500 374 -640 426 -490 640 -640 427 -480 640 -500 375 -640 427 -500 400 -640 480 -640 480 -640 511 -640 480 -640 480 -640 480 -640 427 -640 455 -640 480 -640 604 -640 425 -640 480 -640 427 -640 361 -480 640 -500 373 -640 480 -640 427 -612 612 -640 399 -640 640 -640 640 -480 640 -640 426 -640 427 -317 500 -500 375 -480 640 -640 480 -333 500 -640 480 -640 428 -640 480 -640 480 -640 360 -640 480 -640 488 -640 424 -480 640 -639 640 -640 429 -640 480 -286 409 -640 480 -640 430 -480 640 -604 640 -375 500 -640 425 -500 335 -500 375 -640 480 -640 480 -640 636 -500 191 -640 426 -640 640 -640 480 -640 427 -640 322 -640 425 -640 426 -478 640 -640 480 -500 375 -480 640 -640 427 -640 480 -612 612 -333 500 -640 428 -640 640 -640 425 -612 612 -640 360 -640 424 -640 480 -480 640 -640 400 -640 427 -500 333 -640 480 -500 375 -640 480 -640 475 -600 400 -640 426 -480 640 -480 640 -427 640 -640 427 -500 375 -427 640 -640 356 -500 333 -426 640 -640 480 -640 311 -640 480 -640 480 -640 427 -375 500 -640 360 -640 427 -640 480 -640 427 -640 480 -500 381 -333 500 -500 485 -640 480 -640 480 -640 428 -480 640 -640 427 -640 480 -640 480 -640 427 -446 640 -496 500 -500 375 -640 640 -640 427 -640 424 -640 480 -640 480 -640 473 -413 500 -640 442 -640 427 -500 332 -640 480 -640 513 -640 480 -640 554 -640 480 -640 464 -640 480 -640 427 -640 494 -612 612 -312 504 -640 480 -480 640 -640 396 -334 500 -640 480 -500 375 -640 427 -640 480 -375 500 -640 480 -640 454 -640 427 -640 444 -640 426 -375 500 -428 640 -500 375 -640 428 -293 448 -640 478 -424 640 -640 480 -640 431 -640 640 -640 424 -640 480 -425 640 -640 427 -640 424 -640 480 -500 375 -640 426 -640 480 -427 640 -500 287 -336 500 -640 426 -640 428 -640 480 -500 375 -640 425 -640 402 -640 480 -640 480 -640 480 -640 427 -640 427 -533 640 -640 480 -640 427 -426 640 -640 608 -640 427 -426 640 -640 427 -500 333 -600 400 -640 480 -399 500 -640 480 -375 500 -478 640 -640 425 -640 480 -640 425 -480 640 -640 480 -640 516 -500 375 -640 426 -409 500 -429 640 -640 424 -332 500 -500 400 -640 433 -640 581 -640 425 -492 640 -480 640 -303 640 -428 640 -640 427 -640 427 -640 427 -640 427 -640 427 -640 427 -640 458 -640 480 -500 281 -640 427 -427 640 -640 557 -591 640 -640 379 -640 426 -480 640 -640 427 -480 640 -375 500 -640 491 -640 480 -480 640 -640 480 -640 480 -640 427 -640 427 -427 640 -612 612 -500 298 -640 427 -640 480 -640 480 -640 428 -640 418 -540 640 -640 488 -640 480 -640 399 -640 427 -640 426 -640 512 -640 428 -640 428 -640 480 -360 640 -640 428 -480 640 -500 376 -375 500 -629 489 -640 580 -640 480 -640 335 -394 500 -640 480 -640 480 -640 480 -640 428 -640 480 -640 538 -480 640 -640 428 -640 427 -640 480 -640 427 -640 480 -480 640 -640 427 -485 640 -478 640 -640 428 -640 428 -640 427 -640 376 -640 423 -426 640 -640 425 -640 427 -640 427 -427 640 -640 425 -612 612 -500 375 -478 640 -500 334 -480 640 -640 480 -640 480 -640 418 -500 375 -640 427 -640 424 -640 480 -640 480 -392 500 -640 427 -500 500 -640 640 -640 483 -640 424 -640 426 -640 480 -360 640 -480 640 -640 429 -640 489 -640 427 -427 640 -640 374 -640 426 -480 640 -500 375 -427 640 -640 485 -640 427 -640 427 -640 480 -640 341 -640 480 -500 375 -640 427 -640 480 -631 640 -640 428 -480 640 -425 640 -640 427 -480 640 -640 480 -424 640 -640 360 -640 480 -500 375 -640 427 -427 640 -640 425 -414 500 -480 640 -640 426 -334 500 -375 500 -640 428 -640 478 -480 640 -640 425 -480 640 -426 640 -640 425 -640 480 -640 441 -512 640 -612 612 -430 640 -640 569 -480 640 -640 427 -640 426 -333 500 -640 480 -640 427 -640 480 -640 600 -640 427 -480 640 -640 427 -640 426 -640 458 -640 431 -640 427 -640 426 -426 640 -640 640 -640 480 -640 426 -640 426 -500 345 -500 375 -640 480 -500 333 -640 480 -640 640 -640 559 -640 427 -640 427 -500 333 -640 480 -640 480 -593 640 -500 447 -640 483 -640 427 -480 640 -500 371 -640 320 -640 480 -640 428 -640 480 -640 427 -640 425 -429 640 -640 266 -640 470 -640 360 -427 640 -430 640 -640 426 -426 640 -640 426 -640 450 -480 640 -427 640 -640 480 -500 333 -427 640 -640 427 -425 640 -640 480 -612 612 -640 427 -512 640 -640 480 -640 427 -640 480 -640 367 -439 640 -428 640 -640 360 -480 640 -427 640 -640 538 -640 480 -640 428 -640 425 -640 428 -640 408 -640 453 -640 440 -640 428 -612 612 -640 427 -640 640 -640 480 -640 428 -640 480 -427 640 -640 424 -640 427 -500 375 -426 640 -500 334 -480 640 -640 427 -480 640 -424 640 -640 427 -479 640 -480 640 -640 426 -480 640 -500 375 -500 356 -331 500 -500 334 -500 281 -426 640 -365 480 -480 640 -640 480 -500 366 -640 469 -640 427 -606 640 -640 607 -429 640 -354 500 -640 480 -640 426 -640 424 -640 479 -417 500 -640 480 -639 640 -640 427 -640 426 -640 640 -640 480 -480 640 -640 480 -332 500 -640 428 -640 428 -500 375 -640 480 -640 427 -640 425 -480 640 -480 640 -640 480 -640 427 -500 334 -480 640 -640 480 -640 513 -480 640 -640 427 -640 427 -500 375 -480 640 -427 640 -640 427 -480 640 -640 480 -640 480 -500 375 -640 427 -500 375 -500 375 -478 640 -480 640 -426 640 -612 612 -640 427 -640 521 -640 480 -640 427 -640 424 -259 500 -640 480 -640 480 -640 480 -640 429 -500 412 -640 426 -332 500 -480 640 -640 480 -640 426 -640 457 -640 480 -640 480 -640 207 -480 640 -480 640 -480 640 -640 468 -640 458 -457 640 -640 427 -640 480 -640 480 -511 640 -480 640 -500 490 -640 471 -640 480 -435 500 -640 428 -500 375 -640 437 -640 480 -640 427 -427 640 -640 480 -640 480 -500 333 -640 480 -640 427 -640 480 -640 426 -418 640 -640 480 -640 480 -480 640 -640 425 -640 424 -640 405 -640 427 -640 428 -640 480 -427 640 -427 640 -640 540 -640 496 -480 640 -640 427 -640 428 -429 640 -640 447 -500 375 -427 640 -640 480 -423 640 -640 480 -640 480 -639 640 -640 426 -426 640 -640 481 -425 640 -469 640 -426 640 -427 640 -640 360 -500 375 -640 480 -480 640 -640 389 -640 480 -640 433 -640 427 -640 421 -640 427 -640 425 -640 478 -500 375 -640 425 -640 427 -427 640 -288 352 -500 375 -427 640 -640 480 -500 375 -640 478 -640 427 -640 480 -426 640 -528 640 -640 429 -640 427 -640 478 -480 640 -640 426 -500 375 -427 640 -480 640 -449 640 -640 480 -640 480 -640 426 -640 480 -453 640 -640 480 -500 332 -640 475 -640 428 -640 480 -640 505 -480 640 -500 375 -500 375 -640 427 -640 426 -640 480 -428 640 -640 554 -480 640 -500 363 -480 204 -640 427 -480 640 -612 612 -640 425 -640 480 -427 640 -640 480 -356 500 -500 375 -640 480 -500 497 -429 640 -640 480 -480 640 -500 375 -640 427 -427 640 -640 466 -640 436 -640 480 -427 640 -480 640 -394 640 -393 640 -500 191 -640 457 -640 550 -640 411 -488 640 -640 320 -640 480 -621 640 -640 428 -425 640 -500 333 -640 480 -640 425 -640 427 -640 401 -640 480 -500 375 -374 640 -640 427 -640 480 -640 427 -640 446 -640 480 -640 427 -640 480 -427 640 -640 425 -640 480 -339 500 -640 391 -500 375 -640 427 -480 640 -640 283 -640 640 -640 428 -338 500 -640 427 -640 640 -426 640 -640 480 -640 480 -640 404 -640 480 -640 427 -640 427 -640 426 -640 480 -640 425 -500 334 -640 424 -640 426 -640 361 -640 360 -640 480 -640 427 -640 480 -640 428 -640 596 -640 426 -640 480 -500 355 -456 640 -640 425 -640 480 -640 427 -640 480 -530 640 -640 425 -375 500 -475 640 -640 481 -640 426 -640 425 -425 640 -640 428 -640 387 -480 640 -640 427 -640 427 -640 576 -640 427 -640 480 -640 480 -359 640 -640 480 -500 400 -500 374 -480 640 -480 640 -640 389 -640 456 -427 640 -640 480 -640 427 -612 612 -500 375 -640 427 -640 480 -640 640 -640 480 -500 339 -640 480 -640 427 -640 427 -500 243 -640 459 -426 640 -425 640 -640 360 -511 640 -640 414 -640 480 -640 426 -640 361 -640 253 -640 428 -640 459 -640 480 -480 360 -640 547 -500 376 -640 480 -640 480 -426 640 -480 640 -428 640 -640 428 -640 480 -480 640 -640 426 -640 426 -640 427 -640 360 -640 425 -640 427 -640 427 -640 477 -481 640 -500 333 -640 424 -640 480 -640 427 -408 500 -640 379 -480 640 -640 480 -640 509 -372 500 -640 414 -500 500 -640 428 -640 426 -500 375 -480 640 -612 612 -640 426 -640 480 -640 427 -640 480 -640 480 -640 480 -426 640 -500 375 -640 480 -640 388 -427 640 -640 430 -640 480 -640 427 -500 375 -640 424 -640 478 -425 640 -640 480 -612 612 -335 500 -640 428 -480 640 -640 480 -481 640 -640 425 -640 436 -640 512 -640 640 -640 424 -640 480 -427 640 -640 480 -640 480 -640 480 -640 469 -640 428 -640 427 -640 480 -640 479 -640 480 -640 285 -424 640 -480 640 -640 360 -640 480 -612 612 -640 480 -500 375 -428 640 -640 480 -640 427 -640 424 -427 640 -640 480 -640 480 -500 376 -640 425 -640 480 -640 426 -478 640 -500 375 -500 426 -640 480 -478 640 -427 640 -640 427 -640 480 -480 384 -428 640 -640 638 -500 375 -640 427 -640 400 -640 415 -500 334 -640 480 -480 640 -480 640 -640 480 -640 427 -500 375 -640 480 -500 375 -640 428 -640 480 -640 360 -500 375 -428 640 -640 360 -640 480 -427 640 -640 400 -640 429 -640 480 -640 480 -640 416 -426 640 -640 480 -640 383 -426 640 -640 428 -640 480 -640 478 -640 480 -640 480 -503 640 -333 500 -640 574 -480 640 -500 375 -640 480 -375 500 -480 640 -640 480 -375 500 -640 480 -640 639 -640 427 -428 640 -640 429 -480 640 -640 512 -640 427 -428 640 -480 640 -640 639 -640 427 -640 480 -640 400 -424 640 -640 424 -500 419 -640 480 -427 640 -640 477 -640 425 -640 419 -500 375 -640 480 -500 374 -640 480 -426 640 -425 640 -640 426 -640 427 -500 333 -375 500 -480 640 -640 426 -640 427 -640 427 -640 521 -640 427 -640 427 -640 427 -500 333 -640 393 -469 640 -427 640 -640 427 -480 640 -640 480 -500 375 -640 427 -640 427 -427 640 -640 480 -612 612 -640 428 -640 480 -500 375 -640 480 -640 640 -418 640 -640 457 -640 480 -375 500 -640 480 -640 480 -640 480 -426 640 -480 640 -480 640 -480 640 -480 640 -480 640 -640 427 -640 498 -640 480 -500 371 -640 480 -556 640 -490 350 -640 427 -640 443 -480 640 -416 640 -640 384 -640 321 -480 640 -480 640 -640 425 -640 480 -640 496 -513 640 -640 478 -640 480 -640 480 diff --git a/data/coco.data b/data/coco.data deleted file mode 100644 index d248a4cd..00000000 --- a/data/coco.data +++ /dev/null @@ -1,6 +0,0 @@ -classes=80 -train=../coco/trainvalno5k.txt -valid=../coco/5k.txt -names=data/coco.names -backup=backup/ -eval=coco diff --git a/data/coco_1img.data b/data/coco1.data similarity index 100% rename from data/coco_1img.data rename to data/coco1.data diff --git a/data/coco1.txt b/data/coco1.txt new file mode 100644 index 00000000..268042e7 --- /dev/null +++ b/data/coco1.txt @@ -0,0 +1 @@ +../coco/images/train2017/000000109622.jpg diff --git a/data/coco16.data b/data/coco16.data new file mode 100644 index 00000000..d3827348 --- /dev/null +++ b/data/coco16.data @@ -0,0 +1,4 @@ +classes=80 +train=data/coco16.txt +valid=data/coco16.txt +names=data/coco.names diff --git a/data/coco16.txt b/data/coco16.txt new file mode 100644 index 00000000..4fb69e99 --- /dev/null +++ b/data/coco16.txt @@ -0,0 +1,16 @@ +../coco/images/train2017/000000109622.jpg +../coco/images/train2017/000000160694.jpg +../coco/images/train2017/000000308590.jpg +../coco/images/train2017/000000327573.jpg +../coco/images/train2017/000000062929.jpg +../coco/images/train2017/000000512793.jpg +../coco/images/train2017/000000371735.jpg +../coco/images/train2017/000000148118.jpg +../coco/images/train2017/000000309856.jpg +../coco/images/train2017/000000141882.jpg +../coco/images/train2017/000000318783.jpg +../coco/images/train2017/000000337760.jpg +../coco/images/train2017/000000298197.jpg +../coco/images/train2017/000000042421.jpg +../coco/images/train2017/000000328898.jpg +../coco/images/train2017/000000458856.jpg diff --git a/data/coco1cls.data b/data/coco1cls.data new file mode 100644 index 00000000..509721f9 --- /dev/null +++ b/data/coco1cls.data @@ -0,0 +1,4 @@ +classes=1 +train=data/coco1cls.txt +valid=data/coco1cls.txt +names=data/coco.names diff --git a/data/coco1cls.txt b/data/coco1cls.txt new file mode 100644 index 00000000..87025739 --- /dev/null +++ b/data/coco1cls.txt @@ -0,0 +1,16 @@ +../coco/images/train2017/000000000901.jpg +../coco/images/train2017/000000001464.jpg +../coco/images/train2017/000000003220.jpg +../coco/images/train2017/000000003365.jpg +../coco/images/train2017/000000004772.jpg +../coco/images/train2017/000000009987.jpg +../coco/images/train2017/000000010498.jpg +../coco/images/train2017/000000012455.jpg +../coco/images/train2017/000000013992.jpg +../coco/images/train2017/000000014125.jpg +../coco/images/train2017/000000016314.jpg +../coco/images/train2017/000000016670.jpg +../coco/images/train2017/000000018412.jpg +../coco/images/train2017/000000021212.jpg +../coco/images/train2017/000000021826.jpg +../coco/images/train2017/000000030566.jpg diff --git a/data/coco2017.data b/data/coco2017.data new file mode 100644 index 00000000..c9460056 --- /dev/null +++ b/data/coco2017.data @@ -0,0 +1,4 @@ +classes=80 +train=../coco/train2017.txt +valid=../coco/val2017.txt +names=data/coco.names diff --git a/data/coco64.data b/data/coco64.data new file mode 100644 index 00000000..159489ac --- /dev/null +++ b/data/coco64.data @@ -0,0 +1,4 @@ +classes=80 +train=data/coco64.txt +valid=data/coco64.txt +names=data/coco.names diff --git a/data/coco64.txt b/data/coco64.txt new file mode 100644 index 00000000..7dbc28fc --- /dev/null +++ b/data/coco64.txt @@ -0,0 +1,64 @@ +../coco/images/train2017/000000109622.jpg +../coco/images/train2017/000000160694.jpg +../coco/images/train2017/000000308590.jpg +../coco/images/train2017/000000327573.jpg +../coco/images/train2017/000000062929.jpg +../coco/images/train2017/000000512793.jpg +../coco/images/train2017/000000371735.jpg +../coco/images/train2017/000000148118.jpg +../coco/images/train2017/000000309856.jpg +../coco/images/train2017/000000141882.jpg +../coco/images/train2017/000000318783.jpg +../coco/images/train2017/000000337760.jpg +../coco/images/train2017/000000298197.jpg +../coco/images/train2017/000000042421.jpg +../coco/images/train2017/000000328898.jpg +../coco/images/train2017/000000458856.jpg +../coco/images/train2017/000000073824.jpg +../coco/images/train2017/000000252846.jpg +../coco/images/train2017/000000459590.jpg +../coco/images/train2017/000000273650.jpg +../coco/images/train2017/000000331311.jpg +../coco/images/train2017/000000156326.jpg +../coco/images/train2017/000000262985.jpg +../coco/images/train2017/000000253580.jpg +../coco/images/train2017/000000447976.jpg +../coco/images/train2017/000000378077.jpg +../coco/images/train2017/000000259913.jpg +../coco/images/train2017/000000424553.jpg +../coco/images/train2017/000000000612.jpg +../coco/images/train2017/000000267625.jpg +../coco/images/train2017/000000566012.jpg +../coco/images/train2017/000000196664.jpg +../coco/images/train2017/000000363331.jpg +../coco/images/train2017/000000057992.jpg +../coco/images/train2017/000000520047.jpg +../coco/images/train2017/000000453903.jpg +../coco/images/train2017/000000162083.jpg +../coco/images/train2017/000000268516.jpg +../coco/images/train2017/000000277436.jpg +../coco/images/train2017/000000189744.jpg +../coco/images/train2017/000000041128.jpg +../coco/images/train2017/000000527728.jpg +../coco/images/train2017/000000465269.jpg +../coco/images/train2017/000000246833.jpg +../coco/images/train2017/000000076784.jpg +../coco/images/train2017/000000323715.jpg +../coco/images/train2017/000000560463.jpg +../coco/images/train2017/000000006263.jpg +../coco/images/train2017/000000094701.jpg +../coco/images/train2017/000000521359.jpg +../coco/images/train2017/000000302903.jpg +../coco/images/train2017/000000047559.jpg +../coco/images/train2017/000000480583.jpg +../coco/images/train2017/000000050025.jpg +../coco/images/train2017/000000084512.jpg +../coco/images/train2017/000000508913.jpg +../coco/images/train2017/000000093708.jpg +../coco/images/train2017/000000070493.jpg +../coco/images/train2017/000000539270.jpg +../coco/images/train2017/000000474402.jpg +../coco/images/train2017/000000209842.jpg +../coco/images/train2017/000000028820.jpg +../coco/images/train2017/000000154257.jpg +../coco/images/train2017/000000342499.jpg diff --git a/data/coco_16img.data b/data/coco_16img.data deleted file mode 100644 index 2843a884..00000000 --- a/data/coco_16img.data +++ /dev/null @@ -1,6 +0,0 @@ -classes=80 -train=./data/coco_16img.txt -valid=./data/coco_16img.txt -names=data/coco.names -backup=backup/ -eval=coco diff --git a/data/coco_16img.txt b/data/coco_16img.txt deleted file mode 100644 index e7bb74c0..00000000 --- a/data/coco_16img.txt +++ /dev/null @@ -1,16 +0,0 @@ -../coco/images/COCO_train2014_000000000009.jpg -../coco/images/COCO_train2014_000000000025.jpg -../coco/images/COCO_train2014_000000000030.jpg -../coco/images/COCO_train2014_000000000034.jpg -../coco/images/COCO_train2014_000000000036.jpg -../coco/images/COCO_train2014_000000000049.jpg -../coco/images/COCO_train2014_000000000061.jpg -../coco/images/COCO_train2014_000000000064.jpg -../coco/images/COCO_train2014_000000000071.jpg -../coco/images/COCO_train2014_000000000072.jpg -../coco/images/COCO_train2014_000000000077.jpg -../coco/images/COCO_train2014_000000000078.jpg -../coco/images/COCO_train2014_000000000081.jpg -../coco/images/COCO_train2014_000000000086.jpg -../coco/images/COCO_train2014_000000000089.jpg -../coco/images/COCO_train2014_000000000092.jpg diff --git a/data/coco_1cls.data b/data/coco_1cls.data deleted file mode 100644 index a19e3c0f..00000000 --- a/data/coco_1cls.data +++ /dev/null @@ -1,6 +0,0 @@ -classes=1 -train=./data/coco_1cls.txt -valid=./data/coco_1cls.txt -names=data/coco.names -backup=backup/ -eval=coco diff --git a/data/coco_1cls.txt b/data/coco_1cls.txt deleted file mode 100644 index 956293ca..00000000 --- a/data/coco_1cls.txt +++ /dev/null @@ -1,5 +0,0 @@ -../coco/images/COCO_val2014_000000013992.jpg -../coco/images/COCO_val2014_000000047226.jpg -../coco/images/COCO_val2014_000000050324.jpg -../coco/images/COCO_val2014_000000121497.jpg -../coco/images/COCO_val2014_000000001464.jpg diff --git a/data/coco_1img.txt b/data/coco_1img.txt deleted file mode 100644 index a0fbd054..00000000 --- a/data/coco_1img.txt +++ /dev/null @@ -1 +0,0 @@ -../coco/images/COCO_val2014_000000581886.jpg diff --git a/data/coco_64img.data b/data/coco_64img.data deleted file mode 100644 index 633d08b9..00000000 --- a/data/coco_64img.data +++ /dev/null @@ -1,6 +0,0 @@ -classes=80 -train=./data/coco_64img.txt -valid=./data/coco_64img.txt -names=data/coco.names -backup=backup/ -eval=coco diff --git a/data/coco_64img.txt b/data/coco_64img.txt deleted file mode 100644 index b8b44f7b..00000000 --- a/data/coco_64img.txt +++ /dev/null @@ -1,64 +0,0 @@ -../coco/images/COCO_train2014_000000000009.jpg -../coco/images/COCO_train2014_000000000025.jpg -../coco/images/COCO_train2014_000000000030.jpg -../coco/images/COCO_train2014_000000000034.jpg -../coco/images/COCO_train2014_000000000036.jpg -../coco/images/COCO_train2014_000000000049.jpg -../coco/images/COCO_train2014_000000000061.jpg -../coco/images/COCO_train2014_000000000064.jpg -../coco/images/COCO_train2014_000000000071.jpg -../coco/images/COCO_train2014_000000000072.jpg -../coco/images/COCO_train2014_000000000077.jpg -../coco/images/COCO_train2014_000000000078.jpg -../coco/images/COCO_train2014_000000000081.jpg -../coco/images/COCO_train2014_000000000086.jpg -../coco/images/COCO_train2014_000000000089.jpg -../coco/images/COCO_train2014_000000000092.jpg -../coco/images/COCO_train2014_000000000094.jpg -../coco/images/COCO_train2014_000000000109.jpg -../coco/images/COCO_train2014_000000000110.jpg -../coco/images/COCO_train2014_000000000113.jpg -../coco/images/COCO_train2014_000000000127.jpg -../coco/images/COCO_train2014_000000000138.jpg -../coco/images/COCO_train2014_000000000142.jpg -../coco/images/COCO_train2014_000000000144.jpg -../coco/images/COCO_train2014_000000000149.jpg -../coco/images/COCO_train2014_000000000151.jpg -../coco/images/COCO_train2014_000000000154.jpg -../coco/images/COCO_train2014_000000000165.jpg -../coco/images/COCO_train2014_000000000194.jpg -../coco/images/COCO_train2014_000000000201.jpg -../coco/images/COCO_train2014_000000000247.jpg -../coco/images/COCO_train2014_000000000260.jpg -../coco/images/COCO_train2014_000000000263.jpg -../coco/images/COCO_train2014_000000000307.jpg -../coco/images/COCO_train2014_000000000308.jpg -../coco/images/COCO_train2014_000000000309.jpg -../coco/images/COCO_train2014_000000000312.jpg -../coco/images/COCO_train2014_000000000315.jpg -../coco/images/COCO_train2014_000000000321.jpg -../coco/images/COCO_train2014_000000000322.jpg -../coco/images/COCO_train2014_000000000326.jpg -../coco/images/COCO_train2014_000000000332.jpg -../coco/images/COCO_train2014_000000000349.jpg -../coco/images/COCO_train2014_000000000368.jpg -../coco/images/COCO_train2014_000000000370.jpg -../coco/images/COCO_train2014_000000000382.jpg -../coco/images/COCO_train2014_000000000384.jpg -../coco/images/COCO_train2014_000000000389.jpg -../coco/images/COCO_train2014_000000000394.jpg -../coco/images/COCO_train2014_000000000404.jpg -../coco/images/COCO_train2014_000000000419.jpg -../coco/images/COCO_train2014_000000000431.jpg -../coco/images/COCO_train2014_000000000436.jpg -../coco/images/COCO_train2014_000000000438.jpg -../coco/images/COCO_train2014_000000000443.jpg -../coco/images/COCO_train2014_000000000446.jpg -../coco/images/COCO_train2014_000000000450.jpg -../coco/images/COCO_train2014_000000000471.jpg -../coco/images/COCO_train2014_000000000490.jpg -../coco/images/COCO_train2014_000000000491.jpg -../coco/images/COCO_train2014_000000000510.jpg -../coco/images/COCO_train2014_000000000514.jpg -../coco/images/COCO_train2014_000000000529.jpg -../coco/images/COCO_train2014_000000000531.jpg diff --git a/data/get_coco2014.sh b/data/get_coco2014.sh new file mode 100755 index 00000000..37335aeb --- /dev/null +++ b/data/get_coco2014.sh @@ -0,0 +1,33 @@ +#!/bin/bash +# Zip coco folder +# zip -r coco.zip coco +# tar -czvf coco.tar.gz coco + +# Download labels from Google Drive, accepting presented query +filename="coco2014labels.zip" +fileid="1s6-CmF5_SElM28r52P1OUrCcuXZN-SFo" + +curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" > /dev/null +curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${fileid}" -o ${filename} +rm ./cookie + +# Unzip labels +unzip -q ${filename} # for coco.zip +# tar -xzf ${filename} # for coco.tar.gz +rm ${filename} + +# Download images +cd coco/images +wget -c http://images.cocodataset.org/zips/train2014.zip +wget -c http://images.cocodataset.org/zips/val2014.zip + +# Unzip images +unzip -q train2014.zip +unzip -q val2014.zip + +# (optional) Delete zip files +rm -rf *.zip + +# cd out +cd ../.. + diff --git a/data/get_coco_dataset.sh b/data/get_coco_dataset.sh deleted file mode 100755 index b6b4fc9a..00000000 --- a/data/get_coco_dataset.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# CREDIT: https://github.com/pjreddie/darknet/tree/master/scripts/get_coco_dataset.sh - -# Clone COCO API -git clone https://github.com/pdollar/coco && cd coco - -# Download Images -mkdir images && cd images -wget -c https://pjreddie.com/media/files/train2014.zip -wget -c https://pjreddie.com/media/files/val2014.zip - -# Unzip -unzip -q train2014.zip -unzip -q val2014.zip - -# (optional) Delete zip files -rm -rf *.zip - -cd .. - -# Download COCO Metadata -wget -c https://pjreddie.com/media/files/instances_train-val2014.zip -wget -c https://pjreddie.com/media/files/coco/5k.part -wget -c https://pjreddie.com/media/files/coco/trainvalno5k.part -wget -c https://pjreddie.com/media/files/coco/labels.tgz -tar xzf labels.tgz -unzip -q instances_train-val2014.zip - -# Set Up Image Lists -paste <(awk "{print \"$PWD\"}" <5k.part) 5k.part | tr -d '\t' > 5k.txt -paste <(awk "{print \"$PWD\"}" trainvalno5k.txt - -# get xview training data -# wget -O train_images.tgz 'https://d307kc0mrhucc3.cloudfront.net/train_images.tgz?Expires=1530124049&Signature=JrQoxipmsETvb7eQHCfDFUO-QEHJGAayUv0i-ParmS-1hn7hl9D~bzGuHWG82imEbZSLUARTtm0wOJ7EmYMGmG5PtLKz9H5qi6DjoSUuFc13NQ-~6yUhE~NfPaTnehUdUMCa3On2wl1h1ZtRG~0Jq1P-AJbpe~oQxbyBrs1KccaMa7FK4F4oMM6sMnNgoXx8-3O77kYw~uOpTMFmTaQdHln6EztW0Lx17i57kK3ogbSUpXgaUTqjHCRA1dWIl7PY1ngQnLslkLhZqmKcaL-BvWf0ZGjHxCDQBpnUjIlvMu5NasegkwD9Jjc0ClgTxsttSkmbapVqaVC8peR0pO619Q__&Key-Pair-Id=APKAIKGDJB5C3XUL2DXQ' -# tar -xvzf train_images.tgz -# sudo rm -rf train_images/._* -# lastly convert each .tif to a .bmp for faster loading in cv2 - -# ./coco/images/train2014/COCO_train2014_000000167126.jpg # corrupted image diff --git a/data/get_coco_dataset_gdrive.sh b/data/get_coco_dataset_gdrive.sh deleted file mode 100755 index f280516f..00000000 --- a/data/get_coco_dataset_gdrive.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -# Zip coco folder -# zip -r coco.zip coco -# tar -czvf coco.tar.gz coco - -# Set fileid and filename -filename="coco.zip" -fileid="1WQT6SOktSe8Uw6r10-2JhbEhMY5DJaph" # coco.zip - -# Download from Google Drive, accepting presented query -curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" > /dev/null -curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${fileid}" -o ${filename} -rm ./cookie - -# Unzip -unzip -q ${filename} # for coco.zip -# tar -xzf ${filename} # for coco.tar.gz diff --git a/data/trainvalno5k.shapes b/data/trainvalno5k.shapes deleted file mode 100644 index 855a0700..00000000 --- a/data/trainvalno5k.shapes +++ /dev/null @@ -1,117263 +0,0 @@ -640 480 -640 426 -640 428 -640 425 -481 640 -381 500 -640 488 -480 640 -640 426 -427 640 -500 375 -612 612 -640 425 -512 640 -640 480 -640 427 -640 427 -640 416 -640 480 -416 640 -640 481 -640 573 -480 640 -640 480 -640 428 -480 640 -427 640 -640 536 -640 480 -640 428 -640 424 -500 333 -591 640 -640 480 -640 426 -600 600 -640 427 -640 427 -640 480 -640 481 -640 427 -640 480 -640 480 -480 640 -480 640 -640 480 -446 640 -640 480 -640 611 -426 640 -640 480 -640 389 -427 640 -640 480 -640 480 -480 640 -640 480 -640 427 -500 495 -500 313 -640 480 -360 640 -427 640 -640 480 -640 480 -640 425 -640 484 -460 312 -423 640 -427 640 -640 513 -473 500 -640 426 -640 480 -640 248 -640 480 -640 480 -480 640 -640 446 -640 427 -427 640 -500 375 -640 427 -640 472 -640 425 -640 427 -640 427 -640 481 -480 640 -612 612 -640 480 -428 640 -500 333 -640 480 -640 457 -359 640 -640 480 -640 361 -426 640 -429 640 -640 427 -612 612 -640 422 -500 332 -640 360 -640 360 -640 393 -512 640 -640 480 -640 431 -640 575 -640 480 -640 427 -640 427 -460 640 -640 427 -612 612 -327 500 -640 512 -392 500 -612 612 -640 480 -500 375 -640 360 -480 640 -427 640 -640 480 -640 369 -480 640 -480 640 -480 640 -427 640 -640 480 -640 480 -640 427 -612 612 -640 419 -640 427 -640 428 -640 480 -640 480 -443 640 -640 532 -640 480 -424 640 -640 424 -640 453 -640 424 -427 640 -640 480 -640 480 -500 332 -500 274 -640 359 -640 480 -480 640 -480 640 -480 640 -640 435 -640 427 -640 463 -640 522 -640 335 -640 480 -640 480 -640 492 -426 640 -480 640 -640 428 -500 333 -480 640 -640 426 -640 482 -480 640 -518 600 -640 480 -480 640 -640 419 -640 498 -640 480 -427 640 -612 612 -500 374 -640 428 -640 463 -640 480 -640 480 -480 640 -640 427 -354 500 -640 480 -428 640 -640 428 -640 480 -640 428 -640 428 -600 464 -500 375 -640 427 -612 612 -424 640 -427 640 -427 640 -612 612 -640 480 -640 425 -640 480 -500 375 -640 480 -480 640 -640 480 -640 480 -640 427 -640 480 -500 337 -500 335 -640 258 -640 480 -640 425 -640 562 -500 419 -640 427 -333 500 -482 500 -640 427 -640 427 -612 612 -640 480 -640 480 -500 333 -640 640 -500 375 -640 518 -640 480 -640 425 -640 426 -640 494 -640 427 -640 480 -480 640 -500 375 -640 427 -640 424 -640 480 -640 480 -640 480 -640 278 -458 640 -640 430 -640 480 -500 500 -640 640 -375 500 -564 640 -640 480 -500 353 -640 413 -473 640 -640 480 -640 427 -500 375 -640 233 -550 640 -500 333 -640 427 -640 332 -640 425 -640 426 -640 544 -640 480 -640 453 -640 640 -480 252 -500 375 -640 480 -640 480 -640 480 -640 429 -640 426 -640 480 -640 480 -480 640 -640 425 -375 500 -640 480 -640 427 -640 428 -640 462 -640 480 -428 640 -640 427 -480 640 -427 640 -501 640 -482 640 -640 427 -500 333 -640 480 -500 299 -640 463 -640 480 -640 427 -640 480 -640 480 -640 480 -640 480 -375 500 -426 640 -500 333 -640 345 -640 480 -640 580 -640 480 -428 640 -640 427 -333 500 -640 480 -640 480 -640 626 -640 428 -640 427 -640 480 -640 427 -400 500 -640 427 -500 375 -640 478 -640 480 -640 480 -640 427 -640 427 -640 427 -640 480 -500 500 -640 427 -640 360 -637 640 -481 640 -427 640 -640 426 -427 640 -640 427 -640 428 -480 640 -640 454 -609 609 -425 640 -426 640 -424 640 -427 640 -640 480 -640 427 -332 500 -640 478 -427 640 -427 640 -427 640 -640 480 -640 427 -640 480 -640 427 -640 427 -427 640 -640 376 -640 443 -640 480 -640 429 -640 480 -640 428 -640 640 -640 323 -640 480 -320 240 -640 480 -511 640 -640 408 -640 480 -500 375 -640 480 -500 297 -549 640 -500 358 -536 640 -480 640 -640 480 -640 383 -640 427 -640 480 -640 428 -640 480 -640 480 -640 482 -640 426 -640 427 -640 427 -425 640 -500 492 -640 512 -426 640 -640 383 -612 612 -640 427 -640 423 -427 640 -640 463 -480 640 -640 426 -640 427 -640 512 -480 640 -640 427 -455 640 -424 640 -533 640 -640 519 -640 421 -500 375 -640 427 -640 427 -640 443 -640 459 -640 480 -640 480 -427 640 -434 640 -500 335 -640 368 -612 612 -640 427 -640 479 -640 427 -640 480 -640 429 -640 480 -482 640 -512 640 -640 448 -640 408 -640 480 -640 480 -640 480 -612 612 -640 426 -500 392 -640 427 -640 480 -640 426 -640 640 -640 512 -640 427 -427 640 -612 612 -640 427 -640 480 -640 505 -427 640 -427 640 -640 480 -500 316 -640 482 -362 500 -500 500 -640 569 -640 638 -640 427 -480 640 -427 640 -640 427 -640 480 -640 480 -640 480 -640 425 -480 640 -500 443 -640 480 -640 427 -640 480 -640 480 -640 480 -640 427 -640 480 -640 480 -640 427 -500 333 -400 500 -480 640 -640 480 -516 640 -640 480 -500 333 -640 409 -350 233 -640 374 -640 401 -386 500 -640 480 -640 425 -640 426 -640 480 -640 480 -640 480 -640 426 -640 480 -640 480 -640 480 -640 428 -640 554 -427 640 -640 426 -483 640 -640 480 -640 480 -640 429 -425 640 -640 133 -333 500 -640 424 -480 640 -640 480 -640 480 -640 480 -458 640 -428 640 -640 361 -370 640 -360 480 -640 386 -640 426 -640 480 -640 480 -640 427 -640 427 -640 480 -500 375 -640 427 -640 572 -640 481 -640 414 -612 612 -640 480 -640 457 -640 480 -640 480 -500 375 -428 640 -480 640 -640 480 -640 427 -640 480 -640 480 -640 428 -640 424 -640 376 -640 480 -640 480 -640 640 -640 478 -480 640 -640 480 -438 640 -480 640 -429 640 -640 438 -640 427 -640 427 -640 480 -640 480 -425 640 -640 506 -640 426 -640 480 -640 427 -427 640 -640 481 -640 480 -500 334 -640 426 -375 500 -640 480 -640 425 -640 425 -500 331 -640 512 -480 640 -640 480 -640 480 -640 427 -640 480 -640 480 -640 480 -640 480 -640 480 -640 360 -640 640 -640 458 -640 480 -640 507 -640 480 -640 480 -526 640 -427 640 -640 480 -640 480 -429 640 -640 480 -427 640 -500 375 -640 428 -640 640 -640 480 -640 415 -640 480 -640 480 -612 612 -427 640 -640 480 -640 480 -478 640 -640 480 -640 565 -480 640 -374 500 -500 331 -640 427 -424 640 -640 350 -640 424 -612 612 -640 427 -640 427 -640 427 -612 612 -640 472 -500 375 -640 480 -640 480 -480 640 -640 480 -640 426 -640 480 -375 500 -640 438 -640 480 -640 494 -640 426 -428 640 -640 480 -500 366 -640 480 -500 375 -640 480 -640 519 -640 426 -640 480 -480 640 -640 480 -640 425 -640 425 -640 478 -640 424 -480 640 -478 640 -640 480 -640 427 -640 444 -480 640 -640 481 -640 480 -640 385 -640 480 -427 640 -640 480 -640 360 -640 480 -640 569 -640 480 -640 426 -640 474 -425 640 -640 347 -375 500 -640 425 -640 640 -640 467 -640 427 -427 640 -427 640 -640 480 -640 413 -640 480 -640 425 -640 371 -585 640 -640 480 -400 317 -640 432 -640 427 -640 480 -640 480 -640 346 -640 427 -640 426 -640 471 -500 333 -640 438 -640 426 -640 480 -333 500 -640 480 -640 426 -640 480 -500 333 -640 427 -480 640 -500 375 -640 480 -640 427 -438 640 -640 427 -640 480 -640 482 -640 568 -640 640 -640 480 -500 375 -640 427 -640 425 -640 426 -640 428 -640 480 -612 612 -640 480 -640 427 -640 480 -640 426 -640 427 -640 361 -612 612 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -640 469 -396 500 -640 427 -640 480 -500 375 -640 425 -600 400 -640 427 -480 640 -375 500 -425 640 -427 640 -640 480 -640 427 -480 640 -640 361 -640 473 -480 640 -640 480 -640 433 -427 640 -640 467 -640 429 -640 431 -640 427 -640 478 -640 480 -500 333 -425 640 -640 425 -612 612 -640 427 -640 482 -500 363 -378 500 -640 480 -640 426 -640 427 -640 424 -640 427 -640 439 -640 427 -340 640 -640 480 -640 428 -640 427 -640 480 -419 640 -616 640 -640 423 -640 459 -500 467 -640 427 -640 640 -640 361 -640 640 -640 427 -640 438 -426 640 -620 640 -500 364 -640 480 -640 427 -640 443 -457 640 -640 478 -640 417 -640 640 -640 383 -640 390 -640 427 -640 426 -640 413 -640 480 -640 480 -500 369 -640 457 -640 480 -640 427 -375 500 -500 377 -640 480 -640 427 -427 640 -500 491 -640 480 -640 480 -612 612 -640 425 -640 428 -640 480 -640 503 -640 425 -500 333 -480 640 -480 640 -640 480 -500 333 -486 640 -640 427 -640 428 -375 500 -375 500 -640 425 -640 512 -640 427 -640 427 -480 640 -491 640 -640 427 -640 428 -640 427 -640 480 -427 640 -640 463 -427 640 -640 427 -333 500 -480 640 -640 480 -612 612 -480 640 -480 640 -640 426 -640 427 -640 427 -640 433 -640 480 -500 332 -612 612 -640 480 -640 480 -640 476 -640 388 -427 640 -640 353 -640 426 -428 640 -640 457 -640 424 -640 427 -475 500 -426 640 -640 640 -640 480 -640 480 -640 480 -500 471 -640 480 -640 480 -640 481 -480 640 -640 480 -428 640 -443 640 -640 426 -427 640 -640 427 -500 375 -425 640 -640 359 -640 406 -640 427 -500 328 -640 480 -640 426 -640 238 -640 429 -640 480 -640 473 -640 424 -640 383 -640 480 -480 640 -640 480 -640 426 -640 426 -640 322 -414 330 -640 425 -500 346 -640 226 -478 640 -612 612 -556 640 -500 333 -333 500 -640 426 -640 427 -640 427 -640 379 -426 640 -640 427 -427 640 -640 428 -640 480 -428 640 -500 375 -333 500 -640 427 -640 428 -640 426 -480 640 -640 427 -281 500 -500 375 -640 480 -476 640 -640 480 -612 612 -640 506 -640 427 -640 434 -640 480 -640 480 -480 640 -500 375 -640 426 -335 500 -375 500 -640 480 -429 640 -375 500 -640 442 -640 480 -480 640 -640 388 -640 427 -640 480 -640 427 -640 404 -427 640 -482 640 -640 424 -640 418 -500 498 -640 202 -640 426 -640 428 -640 495 -640 422 -640 428 -480 640 -640 427 -640 480 -640 480 -375 500 -640 441 -640 463 -640 480 -480 640 -424 640 -427 640 -640 425 -640 426 -400 500 -500 375 -640 427 -640 420 -640 469 -640 455 -640 480 -640 427 -640 480 -640 509 -480 640 -640 426 -640 418 -640 480 -640 427 -640 480 -640 503 -640 480 -640 426 -640 481 -640 427 -480 640 -640 427 -500 375 -640 480 -640 480 -640 360 -640 426 -480 640 -640 428 -640 480 -640 640 -326 500 -373 500 -425 640 -519 640 -500 375 -500 375 -640 478 -640 478 -500 375 -640 480 -640 472 -508 503 -640 427 -640 480 -512 640 -640 562 -500 375 -480 640 -640 480 -427 640 -640 411 -640 520 -640 480 -640 428 -431 500 -640 426 -424 640 -640 480 -640 480 -500 334 -640 427 -640 309 -480 640 -427 640 -640 442 -480 640 -640 428 -640 410 -640 428 -640 480 -480 640 -640 427 -385 640 -427 640 -480 640 -488 640 -480 640 -500 339 -640 454 -612 612 -640 353 -380 472 -480 640 -640 448 -640 449 -640 640 -375 500 -640 480 -427 640 -480 640 -500 375 -640 435 -640 480 -640 480 -591 400 -640 427 -640 425 -640 424 -424 640 -640 427 -640 411 -640 427 -640 480 -640 427 -426 640 -500 375 -640 501 -640 428 -426 640 -640 480 -640 480 -640 427 -479 640 -640 427 -640 424 -500 375 -427 640 -427 640 -640 480 -500 375 -500 375 -640 461 -424 640 -640 640 -640 426 -640 480 -427 640 -640 480 -640 426 -640 425 -640 346 -480 640 -640 378 -478 640 -640 425 -426 640 -640 419 -640 480 -640 480 -640 480 -640 417 -640 427 -427 640 -640 427 -502 640 -480 640 -640 343 -640 480 -640 637 -500 376 -640 393 -490 490 -500 375 -640 426 -427 640 -480 640 -500 435 -640 453 -640 427 -428 640 -640 480 -427 640 -640 422 -640 480 -640 480 -640 480 -640 428 -640 426 -640 480 -500 333 -424 640 -640 480 -640 430 -480 640 -640 481 -640 480 -480 640 -640 489 -470 313 -431 640 -640 360 -640 427 -500 371 -640 426 -640 480 -480 640 -427 640 -640 480 -425 640 -640 480 -640 480 -640 480 -640 427 -640 492 -500 375 -582 640 -640 427 -500 332 -428 640 -320 640 -640 480 -426 640 -425 640 -500 375 -320 480 -640 425 -640 425 -640 427 -640 424 -640 480 -597 398 -640 425 -640 431 -640 426 -612 612 -640 425 -640 427 -640 358 -640 427 -640 480 -640 429 -640 425 -640 427 -500 335 -500 251 -428 640 -640 356 -640 425 -640 427 -640 480 -640 427 -640 360 -640 415 -640 480 -604 453 -480 640 -500 287 -334 500 -640 428 -640 427 -640 480 -640 480 -375 500 -640 428 -480 640 -640 427 -640 425 -640 427 -640 480 -480 640 -500 375 -640 425 -480 640 -640 426 -640 480 -640 427 -640 480 -640 426 -640 458 -481 640 -640 480 -427 640 -640 427 -640 429 -425 640 -640 480 -640 480 -640 433 -500 410 -640 424 -640 480 -500 375 -500 333 -640 480 -640 428 -500 404 -640 427 -640 427 -640 425 -500 375 -640 425 -640 461 -640 480 -640 427 -427 640 -612 612 -640 427 -640 480 -333 500 -428 640 -640 426 -612 612 -640 391 -640 480 -351 490 -640 360 -640 480 -640 480 -640 480 -480 640 -480 640 -640 448 -640 427 -500 375 -640 480 -640 480 -640 480 -640 484 -640 425 -640 284 -640 480 -640 480 -442 500 -640 381 -640 480 -465 640 -429 640 -640 480 -500 334 -640 427 -423 640 -612 640 -640 480 -640 480 -500 332 -640 469 -426 640 -640 456 -640 425 -375 500 -640 273 -640 480 -333 500 -379 640 -422 640 -640 427 -332 500 -640 427 -500 375 -500 375 -640 427 -640 426 -500 375 -640 400 -640 360 -640 425 -500 400 -640 633 -480 640 -640 426 -640 480 -640 480 -640 426 -427 640 -640 469 -640 425 -640 480 -640 424 -500 500 -640 360 -640 436 -640 427 -316 640 -640 427 -640 427 -470 351 -640 480 -640 480 -640 502 -640 443 -500 333 -640 480 -640 480 -640 427 -640 360 -640 480 -375 500 -475 640 -640 427 -640 427 -640 427 -640 427 -640 426 -640 427 -640 468 -333 500 -427 640 -640 400 -640 427 -480 640 -640 480 -480 640 -478 640 -640 427 -640 480 -478 640 -640 424 -640 426 -640 416 -640 453 -640 480 -500 420 -640 480 -640 480 -640 426 -375 500 -500 349 -640 416 -640 427 -500 375 -427 640 -640 426 -640 480 -375 500 -640 426 -640 425 -612 612 -640 480 -640 480 -500 186 -640 480 -480 640 -640 427 -640 640 -478 640 -640 427 -480 639 -500 327 -640 428 -426 640 -640 360 -433 640 -427 640 -640 475 -478 640 -640 480 -640 470 -640 480 -500 334 -640 427 -640 427 -491 640 -640 480 -640 478 -623 640 -640 480 -491 640 -500 333 -640 426 -640 427 -640 427 -640 424 -640 423 -640 430 -500 333 -640 480 -640 354 -500 334 -640 479 -640 427 -640 360 -640 428 -375 500 -640 480 -640 480 -640 424 -640 427 -480 640 -640 480 -480 640 -640 424 -640 480 -640 480 -500 376 -640 357 -640 427 -640 426 -612 612 -640 425 -612 612 -640 480 -640 427 -640 512 -425 640 -640 640 -640 449 -640 480 -333 500 -500 443 -640 431 -640 425 -500 391 -640 458 -480 640 -471 640 -640 480 -640 479 -640 426 -640 426 -500 375 -640 480 -612 612 -640 480 -480 640 -500 371 -429 640 -426 640 -465 335 -640 384 -426 640 -473 500 -640 426 -640 433 -480 640 -640 480 -640 480 -640 442 -640 480 -640 437 -640 640 -427 640 -640 480 -640 426 -640 427 -640 423 -480 640 -640 448 -640 480 -640 426 -640 360 -640 480 -427 640 -640 427 -640 479 -640 480 -500 352 -640 478 -427 640 -640 480 -640 427 -640 482 -474 640 -640 480 -640 425 -640 367 -480 320 -640 480 -640 480 -640 427 -640 480 -640 425 -500 375 -500 195 -480 640 -432 500 -500 386 -640 427 -640 468 -427 640 -589 640 -640 480 -640 480 -480 640 -425 640 -640 427 -640 429 -640 425 -500 333 -640 427 -640 360 -426 640 -640 480 -640 480 -640 427 -640 354 -640 428 -640 480 -480 640 -612 612 -640 424 -424 640 -640 426 -500 289 -480 640 -612 612 -500 333 -640 360 -640 426 -500 375 -640 480 -427 640 -640 640 -640 427 -640 480 -640 428 -521 640 -640 480 -640 480 -640 427 -640 365 -640 510 -640 427 -480 640 -640 427 -640 360 -640 425 -640 480 -640 427 -640 487 -456 640 -640 480 -640 448 -640 425 -640 427 -427 640 -640 376 -640 427 -640 427 -640 426 -640 480 -640 427 -500 375 -612 612 -500 334 -640 480 -333 500 -640 640 -516 640 -500 375 -500 375 -375 500 -500 329 -612 612 -640 640 -480 640 -426 640 -500 375 -500 332 -640 480 -640 435 -640 427 -640 480 -640 426 -426 640 -640 428 -640 480 -334 500 -427 640 -640 428 -500 375 -489 640 -640 426 -612 612 -480 640 -480 640 -349 640 -640 480 -640 426 -478 640 -640 332 -640 544 -640 474 -396 312 -640 425 -640 480 -640 425 -640 480 -640 383 -513 640 -640 427 -500 375 -424 640 -375 500 -427 640 -640 480 -444 640 -500 375 -640 480 -640 480 -640 480 -480 640 -375 500 -640 427 -640 427 -640 480 -500 375 -425 640 -480 640 -640 428 -640 426 -480 640 -640 427 -480 640 -640 426 -424 640 -426 640 -640 427 -640 425 -333 500 -640 426 -640 427 -640 427 -480 640 -427 640 -640 368 -427 640 -640 480 -640 512 -640 480 -640 553 -640 480 -640 640 -640 360 -359 640 -344 500 -640 480 -640 640 -640 416 -375 500 -612 612 -640 427 -612 612 -640 398 -612 612 -640 480 -640 510 -612 612 -640 480 -640 480 -640 480 -640 427 -640 403 -427 640 -640 427 -480 640 -640 480 -427 640 -500 500 -426 640 -496 640 -375 500 -640 480 -640 480 -640 427 -640 424 -640 427 -640 480 -500 333 -640 480 -640 480 -640 427 -374 500 -457 640 -640 428 -640 427 -334 500 -335 500 -640 480 -640 480 -640 428 -332 500 -640 480 -640 480 -640 480 -500 375 -640 433 -640 427 -640 478 -640 507 -640 480 -640 480 -640 428 -640 480 -640 186 -333 500 -640 427 -640 480 -640 478 -640 421 -640 282 -375 500 -640 480 -480 640 -640 480 -640 480 -640 480 -480 640 -640 427 -640 427 -480 229 -640 426 -640 427 -451 640 -640 480 -500 375 -640 427 -491 500 -415 640 -427 640 -640 427 -375 500 -640 480 -640 427 -640 424 -640 427 -640 426 -640 427 -640 427 -640 425 -640 634 -640 360 -500 375 -640 480 -640 424 -640 426 -640 427 -640 483 -500 333 -634 640 -432 640 -640 480 -640 480 -427 640 -426 640 -640 427 -640 480 -375 500 -640 386 -640 425 -640 428 -640 428 -640 480 -640 426 -427 640 -640 428 -603 640 -640 427 -500 332 -480 640 -342 500 -640 496 -640 480 -612 612 -427 640 -500 448 -414 640 -459 640 -434 640 -640 473 -640 480 -640 480 -640 480 -500 375 -478 640 -640 480 -640 480 -640 480 -640 428 -450 640 -640 427 -640 511 -375 500 -500 375 -640 427 -640 640 -335 500 -640 359 -640 480 -640 480 -640 428 -640 425 -480 640 -426 640 -640 480 -640 565 -640 427 -640 480 -640 426 -640 381 -512 640 -484 640 -640 426 -640 640 -640 480 -481 640 -427 640 -640 596 -640 480 -640 428 -640 429 -640 427 -512 640 -480 640 -427 640 -375 500 -612 612 -640 480 -640 427 -640 360 -612 612 -478 640 -640 419 -640 429 -640 426 -640 480 -640 427 -640 451 -640 480 -480 640 -640 465 -640 480 -425 640 -436 640 -478 640 -640 426 -640 554 -640 480 -640 480 -500 391 -640 426 -640 427 -640 431 -427 640 -640 425 -640 426 -640 411 -480 640 -640 425 -465 640 -640 467 -640 427 -640 480 -510 640 -480 640 -640 422 -640 427 -640 388 -640 480 -640 480 -458 640 -640 480 -480 640 -640 480 -233 247 -640 480 -428 640 -640 427 -640 360 -424 640 -640 478 -640 380 -640 360 -640 425 -500 280 -480 640 -640 426 -640 426 -640 480 -640 480 -640 463 -640 352 -640 480 -427 640 -612 612 -640 426 -480 360 -640 480 -500 375 -640 425 -640 480 -427 640 -500 334 -500 377 -640 425 -500 392 -425 640 -500 334 -333 500 -640 480 -640 480 -640 408 -427 338 -502 640 -500 375 -640 427 -640 640 -640 414 -640 512 -640 427 -640 428 -640 409 -500 375 -500 375 -640 426 -640 478 -640 427 -640 480 -640 480 -640 403 -640 461 -640 503 -640 425 -640 425 -640 457 -425 640 -427 640 -375 500 -333 500 -480 640 -640 480 -640 426 -640 480 -640 448 -640 427 -640 427 -375 500 -640 427 -500 375 -640 427 -640 427 -640 480 -640 427 -428 640 -640 426 -640 480 -300 169 -512 640 -640 480 -640 426 -640 428 -640 480 -640 323 -640 427 -480 640 -640 427 -640 427 -500 400 -428 640 -640 360 -640 480 -427 640 -475 640 -640 480 -333 500 -612 612 -640 480 -640 351 -640 562 -640 480 -640 427 -480 640 -612 612 -640 309 -640 427 -640 480 -480 640 -640 480 -424 640 -640 480 -640 427 -640 425 -640 480 -640 480 -640 480 -478 640 -478 640 -612 612 -640 426 -640 480 -556 640 -500 375 -640 425 -640 480 -480 640 -375 500 -640 427 -480 640 -426 640 -640 427 -640 426 -640 480 -480 640 -640 427 -480 640 -375 500 -640 472 -480 640 -640 427 -640 427 -640 480 -360 270 -640 480 -500 333 -333 500 -640 375 -640 360 -640 480 -427 640 -480 640 -640 428 -480 640 -427 640 -640 512 -640 480 -640 383 -640 369 -640 428 -640 345 -640 424 -612 612 -413 640 -640 442 -500 281 -500 481 -640 480 -480 640 -640 361 -500 332 -500 375 -500 375 -640 427 -500 375 -640 480 -640 429 -640 480 -500 375 -640 407 -640 427 -640 480 -640 480 -640 360 -640 426 -640 480 -500 333 -640 480 -640 425 -640 480 -640 479 -640 386 -383 640 -472 314 -480 640 -640 513 -640 516 -640 428 -500 375 -640 480 -640 480 -640 425 -480 640 -480 640 -591 640 -640 425 -640 480 -500 375 -640 427 -356 480 -640 360 -640 428 -500 333 -480 640 -640 360 -640 480 -640 457 -500 333 -640 427 -300 201 -360 640 -640 640 -640 478 -500 332 -640 480 -640 427 -640 640 -480 640 -640 427 -640 640 -640 480 -640 480 -640 427 -500 375 -640 480 -640 444 -640 427 -640 427 -640 410 -500 375 -619 640 -640 429 -500 277 -399 640 -427 640 -640 421 -640 428 -640 429 -480 640 -480 640 -320 240 -640 427 -640 427 -640 427 -640 426 -640 606 -480 640 -640 451 -640 427 -640 428 -640 360 -640 484 -500 500 -640 482 -640 427 -640 480 -640 424 -640 427 -480 640 -426 640 -640 480 -412 640 -640 480 -640 427 -640 406 -640 480 -500 375 -640 506 -640 480 -640 480 -640 415 -480 640 -640 480 -419 640 -429 640 -640 453 -640 427 -480 640 -500 333 -640 427 -640 480 -640 480 -640 428 -480 640 -640 411 -640 360 -640 429 -500 375 -640 480 -640 427 -640 640 -612 612 -640 480 -612 612 -640 481 -640 496 -376 640 -640 480 -640 431 -640 480 -640 426 -424 640 -500 486 -640 480 -640 480 -640 426 -500 325 -640 458 -640 383 -480 640 -640 369 -640 480 -640 424 -480 640 -500 333 -640 459 -424 640 -612 612 -461 640 -480 640 -375 500 -375 500 -640 423 -640 427 -640 480 -640 428 -640 388 -427 640 -640 480 -333 500 -640 423 -640 427 -640 388 -640 480 -500 375 -640 427 -500 333 -427 640 -640 427 -640 320 -640 429 -640 292 -640 424 -640 480 -640 428 -480 640 -640 408 -640 480 -640 407 -640 419 -640 426 -500 500 -375 500 -640 427 -480 640 -640 427 -640 480 -640 480 -640 161 -640 426 -500 455 -640 427 -640 480 -640 385 -640 479 -640 424 -500 375 -640 480 -640 480 -640 480 -640 480 -640 359 -640 429 -640 472 -480 640 -640 480 -500 332 -640 427 -640 625 -640 480 -640 416 -480 640 -640 385 -366 500 -426 640 -478 640 -431 640 -640 427 -640 427 -375 500 -640 427 -480 640 -640 427 -640 476 -308 233 -480 640 -640 480 -500 376 -640 427 -612 612 -500 376 -640 427 -640 427 -640 480 -640 406 -425 640 -640 480 -640 363 -640 480 -640 424 -640 426 -279 640 -480 640 -640 428 -640 427 -640 383 -640 427 -428 640 -640 425 -640 512 -640 417 -631 640 -640 427 -427 640 -480 640 -640 427 -443 448 -441 640 -640 429 -612 612 -612 612 -640 429 -640 421 -361 640 -640 425 -491 640 -640 480 -321 479 -640 427 -640 447 -429 640 -640 480 -640 480 -640 480 -426 640 -454 640 -640 361 -427 640 -640 480 -426 640 -640 423 -480 640 -612 612 -640 425 -640 520 -640 594 -640 404 -640 427 -640 480 -640 424 -640 427 -640 427 -480 640 -640 396 -640 426 -640 428 -640 585 -640 426 -427 640 -334 500 -480 640 -480 640 -640 427 -500 375 -427 640 -640 424 -375 500 -640 424 -480 640 -350 233 -424 640 -640 427 -640 640 -640 424 -640 427 -640 428 -350 450 -640 480 -640 429 -640 428 -385 500 -640 429 -640 471 -640 480 -500 375 -640 362 -640 427 -612 612 -640 341 -640 427 -640 439 -500 375 -500 333 -500 397 -480 640 -427 640 -375 500 -640 427 -640 480 -640 480 -640 480 -426 640 -640 480 -375 500 -640 480 -640 480 -480 640 -427 640 -640 441 -427 640 -640 512 -500 375 -640 427 -640 428 -640 640 -640 360 -480 640 -500 355 -640 480 -640 480 -480 640 -640 480 -640 327 -640 427 -640 427 -500 375 -566 640 -422 640 -500 312 -640 480 -640 480 -427 640 -480 640 -500 487 -427 640 -427 640 -478 640 -640 426 -640 427 -640 427 -335 500 -500 333 -640 480 -640 428 -640 463 -640 480 -640 427 -640 424 -640 480 -640 480 -640 524 -480 640 -640 480 -612 612 -427 640 -640 427 -640 480 -500 359 -640 425 -640 427 -640 379 -640 480 -640 480 -395 640 -640 427 -640 424 -640 480 -640 480 -612 612 -356 500 -640 359 -640 480 -640 411 -480 640 -640 479 -480 640 -640 427 -480 640 -640 426 -640 427 -640 480 -210 640 -640 597 -640 528 -640 427 -640 431 -640 427 -480 640 -640 480 -480 640 -640 480 -640 569 -480 640 -640 428 -640 480 -500 500 -500 375 -640 426 -640 480 -304 640 -480 640 -640 480 -640 640 -375 500 -500 314 -512 640 -444 640 -426 640 -289 350 -640 435 -640 480 -640 625 -427 640 -500 375 -640 354 -480 640 -640 599 -640 424 -480 640 -500 332 -640 428 -500 335 -640 480 -640 324 -640 480 -640 427 -640 359 -640 480 -640 494 -640 464 -640 494 -640 428 -640 358 -640 427 -640 326 -423 640 -500 375 -640 480 -440 640 -640 426 -361 640 -426 640 -640 480 -480 640 -640 426 -427 640 -640 480 -640 486 -640 611 -640 480 -640 425 -590 397 -612 612 -640 427 -477 358 -500 311 -480 640 -640 480 -640 425 -500 144 -640 427 -640 436 -425 640 -334 500 -640 512 -640 427 -480 640 -640 480 -640 480 -424 640 -640 431 -640 490 -335 479 -500 333 -480 640 -480 640 -426 640 -640 424 -640 528 -640 359 -640 480 -480 640 -640 480 -640 480 -480 640 -500 331 -480 640 -640 428 -640 511 -640 427 -480 640 -500 335 -480 640 -425 640 -426 640 -640 375 -425 640 -408 500 -640 425 -500 375 -640 424 -500 375 -640 480 -427 640 -640 485 -640 480 -427 640 -640 480 -640 283 -593 640 -425 640 -640 427 -480 640 -640 413 -480 640 -640 428 -640 541 -480 640 -640 425 -640 406 -480 640 -480 640 -640 480 -600 600 -640 431 -640 425 -640 426 -500 354 -640 428 -500 328 -640 480 -640 427 -640 426 -394 500 -640 429 -640 425 -480 640 -500 485 -640 480 -640 480 -480 640 -500 375 -640 480 -464 640 -640 427 -640 480 -427 640 -612 612 -411 600 -640 480 -640 427 -427 640 -640 428 -500 376 -640 425 -640 482 -640 427 -640 480 -640 480 -640 480 -640 480 -480 640 -415 600 -640 595 -640 480 -640 425 -640 428 -640 427 -478 640 -424 640 -640 427 -640 314 -640 441 -640 387 -640 640 -640 427 -330 500 -427 640 -480 640 -427 640 -500 333 -480 640 -640 480 -640 426 -480 640 -640 537 -640 481 -640 426 -527 640 -480 640 -640 360 -413 640 -640 427 -640 480 -640 640 -640 480 -640 479 -640 414 -640 480 -640 489 -427 640 -496 640 -640 428 -620 450 -640 639 -500 333 -640 480 -640 431 -640 480 -375 500 -479 640 -426 640 -640 480 -640 480 -640 426 -500 375 -489 640 -500 334 -427 640 -612 612 -640 425 -640 360 -640 425 -640 427 -640 480 -640 478 -640 480 -480 640 -640 478 -500 332 -640 429 -359 640 -640 429 -640 480 -480 640 -640 480 -640 480 -640 360 -451 640 -640 428 -480 640 -640 480 -640 480 -640 424 -640 427 -640 426 -640 480 -361 500 -640 480 -640 501 -625 330 -427 640 -640 424 -640 425 -640 424 -640 426 -640 454 -428 640 -640 427 -612 612 -640 480 -333 500 -612 612 -500 329 -335 500 -640 428 -640 480 -640 480 -640 426 -640 480 -640 426 -480 640 -640 391 -640 409 -640 426 -500 375 -640 640 -640 472 -427 640 -480 640 -640 640 -640 480 -640 480 -480 640 -640 480 -640 427 -500 281 -480 640 -640 428 -429 640 -500 375 -640 501 -500 375 -480 640 -480 640 -419 640 -640 480 -640 427 -375 500 -640 480 -427 640 -500 375 -640 513 -640 480 -640 480 -424 640 -640 314 -640 360 -500 375 -500 375 -478 640 -612 612 -480 640 -640 480 -480 640 -427 640 -640 426 -640 640 -612 612 -424 640 -500 333 -640 480 -426 640 -640 480 -640 480 -640 480 -640 427 -480 640 -500 333 -640 427 -640 424 -640 409 -640 541 -640 489 -640 480 -359 500 -640 427 -640 480 -640 425 -640 413 -479 640 -428 640 -640 480 -640 480 -640 427 -432 500 -640 480 -640 480 -640 429 -500 392 -640 374 -640 424 -640 480 -640 450 -640 496 -500 375 -427 640 -480 640 -480 640 -640 424 -640 480 -478 640 -640 426 -640 360 -427 640 -500 269 -474 640 -500 375 -375 500 -640 480 -500 375 -640 557 -640 361 -500 375 -640 427 -640 427 -640 480 -360 640 -427 640 -612 612 -640 427 -640 426 -375 500 -640 560 -640 332 -612 612 -640 477 -480 640 -640 480 -435 640 -375 500 -640 428 -640 398 -640 428 -375 500 -640 426 -640 428 -640 480 -551 640 -640 480 -640 480 -480 640 -640 480 -480 640 -480 640 -640 480 -640 427 -640 426 -500 381 -640 480 -640 480 -480 640 -640 425 -640 427 -427 640 -500 346 -427 640 -640 276 -640 480 -480 640 -640 480 -640 508 -344 640 -640 480 -640 401 -640 427 -349 640 -640 480 -575 575 -480 640 -640 480 -640 427 -640 424 -500 375 -333 500 -640 480 -640 409 -640 480 -480 640 -640 478 -378 500 -640 480 -521 640 -500 335 -640 426 -433 640 -640 449 -640 480 -640 480 -640 596 -500 375 -480 640 -640 426 -640 428 -640 480 -640 439 -640 427 -458 640 -640 426 -640 480 -640 428 -407 500 -500 375 -640 507 -640 480 -640 480 -640 480 -640 427 -480 640 -640 480 -640 427 -333 500 -378 640 -612 612 -640 640 -427 640 -640 426 -336 500 -640 480 -375 500 -640 427 -640 426 -640 571 -640 427 -640 426 -640 480 -640 427 -480 640 -375 500 -640 480 -640 480 -480 640 -640 441 -333 500 -640 338 -478 640 -379 500 -640 480 -640 500 -503 640 -640 360 -554 640 -427 640 -640 427 -500 500 -500 344 -640 426 -640 427 -640 517 -640 480 -640 428 -500 400 -640 424 -480 640 -640 424 -640 480 -640 426 -347 500 -359 500 -427 640 -640 426 -429 640 -640 426 -640 360 -640 427 -640 427 -640 480 -640 280 -640 414 -640 640 -500 375 -428 640 -429 500 -640 480 -640 480 -640 427 -640 426 -640 480 -640 480 -425 640 -640 309 -640 419 -421 640 -640 480 -428 640 -333 500 -640 426 -480 640 -640 480 -426 640 -640 500 -640 480 -640 427 -427 640 -480 640 -640 480 -640 391 -264 500 -500 375 -640 427 -640 427 -640 398 -640 480 -640 480 -640 425 -500 375 -499 640 -640 360 -500 375 -640 480 -426 640 -640 480 -504 640 -640 480 -500 375 -640 427 -640 480 -480 640 -640 429 -335 500 -478 640 -640 427 -640 480 -640 480 -640 427 -640 480 -640 427 -640 427 -500 375 -500 400 -640 480 -500 333 -500 375 -480 640 -427 640 -640 451 -640 336 -500 395 -640 301 -640 426 -500 375 -404 640 -640 480 -640 640 -640 427 -500 335 -640 458 -426 640 -612 612 -640 575 -638 640 -640 424 -640 478 -640 480 -640 480 -425 640 -428 640 -612 612 -427 640 -500 336 -640 424 -640 508 -640 551 -300 176 -640 426 -640 480 -612 612 -640 478 -640 427 -640 428 -640 480 -640 449 -640 438 -640 427 -500 375 -640 424 -578 640 -640 480 -640 279 -640 480 -640 480 -640 427 -640 427 -426 640 -640 427 -640 429 -427 640 -640 480 -640 480 -640 544 -480 640 -640 480 -640 482 -640 193 -640 480 -640 538 -640 480 -418 339 -640 480 -640 427 -480 640 -640 427 -640 427 -640 427 -640 436 -612 612 -640 427 -640 480 -480 640 -640 427 -426 640 -640 426 -500 375 -640 426 -427 640 -640 428 -500 333 -640 480 -640 480 -640 480 -640 426 -612 612 -640 426 -640 426 -640 427 -640 426 -407 640 -640 480 -640 480 -640 428 -427 640 -480 640 -640 467 -640 481 -640 480 -360 640 -640 497 -640 480 -612 612 -640 427 -640 427 -640 497 -640 480 -640 640 -640 480 -375 500 -640 427 -640 480 -640 460 -640 427 -640 413 -640 427 -640 424 -480 640 -480 640 -500 384 -500 375 -480 640 -640 428 -640 480 -500 375 -500 375 -640 427 -500 375 -640 480 -640 427 -480 640 -640 427 -640 480 -640 467 -640 427 -640 359 -640 360 -640 427 -640 480 -326 500 -640 471 -494 640 -640 411 -640 480 -640 373 -640 425 -480 640 -640 480 -640 427 -640 365 -421 640 -640 427 -640 480 -612 612 -333 500 -640 427 -500 333 -360 640 -640 480 -640 480 -640 359 -640 387 -640 453 -612 612 -640 360 -640 586 -500 375 -640 480 -640 428 -640 426 -640 480 -640 480 -640 428 -375 500 -462 640 -640 427 -567 640 -596 440 -449 640 -640 480 -480 640 -640 483 -640 426 -457 640 -512 640 -427 640 -640 438 -471 640 -640 480 -425 640 -640 427 -480 640 -640 427 -640 480 -640 480 -333 500 -480 640 -640 480 -640 480 -500 375 -640 427 -640 480 -640 417 -427 640 -500 375 -375 500 -640 429 -640 480 -640 480 -640 640 -640 480 -640 480 -480 640 -640 427 -640 309 -640 480 -480 640 -640 424 -426 640 -640 425 -640 481 -500 375 -640 427 -612 612 -640 480 -240 180 -640 478 -640 426 -640 427 -348 500 -640 640 -640 589 -640 480 -500 375 -640 427 -640 444 -640 350 -480 640 -640 427 -640 480 -427 640 -612 612 -480 640 -640 480 -640 480 -640 428 -640 427 -480 640 -640 425 -640 428 -640 426 -640 424 -640 480 -500 375 -640 480 -640 427 -640 427 -427 640 -375 500 -334 500 -640 480 -640 424 -500 346 -640 427 -640 429 -640 434 -640 428 -500 375 -640 426 -500 439 -640 427 -375 500 -640 480 -426 640 -640 554 -640 478 -640 427 -458 640 -640 480 -600 593 -413 640 -640 432 -640 480 -640 427 -640 481 -486 640 -640 427 -500 420 -640 427 -640 480 -329 640 -500 375 -612 612 -427 640 -640 427 -500 353 -640 364 -640 435 -640 480 -640 426 -640 479 -500 375 -640 480 -640 549 -640 480 -640 425 -640 463 -640 478 -640 459 -640 512 -640 428 -480 640 -640 425 -480 640 -640 480 -640 427 -500 490 -513 640 -640 426 -640 428 -640 426 -640 439 -425 640 -612 612 -640 480 -480 640 -640 480 -640 480 -640 427 -640 478 -640 428 -640 425 -640 480 -640 427 -640 428 -500 332 -480 640 -640 419 -640 480 -640 480 -640 430 -640 480 -375 500 -640 358 -367 640 -640 427 -640 480 -640 425 -640 427 -480 640 -640 427 -640 427 -640 439 -640 424 -640 480 -500 334 -640 427 -612 612 -480 640 -500 333 -640 427 -640 480 -357 500 -640 427 -484 640 -500 375 -426 640 -640 480 -640 478 -640 480 -640 480 -500 375 -640 480 -640 428 -426 640 -606 640 -482 640 -640 426 -640 480 -434 640 -426 640 -640 426 -375 500 -640 426 -640 361 -480 640 -640 400 -500 375 -484 640 -640 412 -640 427 -640 433 -612 612 -448 302 -640 480 -480 640 -640 440 -314 500 -640 392 -640 480 -474 640 -480 640 -640 574 -640 425 -640 427 -640 457 -640 425 -640 428 -640 480 -640 480 -640 479 -640 427 -500 375 -640 539 -480 640 -640 480 -480 640 -428 640 -480 640 -640 480 -640 480 -640 480 -640 480 -480 640 -480 640 -500 375 -640 480 -640 480 -640 429 -640 424 -500 375 -383 640 -640 480 -500 335 -640 480 -500 375 -384 640 -612 612 -640 480 -640 480 -640 480 -640 480 -419 640 -640 512 -400 300 -639 640 -640 427 -640 480 -424 640 -427 640 -640 480 -480 640 -426 640 -640 427 -640 427 -640 623 -640 521 -375 500 -640 426 -640 426 -640 427 -640 426 -500 306 -500 423 -640 428 -640 431 -640 427 -640 427 -640 634 -640 480 -640 378 -500 375 -640 427 -640 427 -500 370 -427 640 -640 427 -640 429 -640 427 -640 480 -640 424 -640 426 -640 480 -640 480 -426 640 -640 428 -640 480 -640 415 -640 427 -640 427 -640 480 -480 640 -640 427 -640 478 -480 640 -640 427 -500 333 -640 427 -640 486 -428 640 -640 424 -640 426 -640 480 -640 426 -640 480 -640 480 -419 500 -640 360 -427 640 -640 427 -640 422 -640 480 -640 480 -500 334 -425 640 -512 640 -640 427 -640 480 -480 640 -426 640 -640 480 -640 480 -500 375 -393 640 -640 425 -640 583 -640 500 -640 480 -535 640 -640 480 -640 480 -512 640 -426 640 -640 426 -375 500 -480 640 -640 480 -427 640 -640 427 -431 640 -640 427 -640 427 -375 500 -640 427 -640 429 -640 457 -640 383 -640 428 -640 521 -640 480 -640 427 -428 640 -640 427 -480 640 -640 424 -640 480 -640 640 -640 361 -640 427 -640 480 -500 377 -640 360 -640 428 -640 512 -640 424 -480 640 -640 480 -640 426 -640 427 -640 465 -640 480 -424 640 -640 427 -640 360 -640 611 -453 640 -427 640 -640 426 -375 500 -640 480 -640 426 -480 640 -612 612 -640 429 -375 500 -640 359 -640 640 -427 640 -500 333 -480 640 -612 612 -375 500 -274 500 -640 478 -640 428 -337 500 -640 454 -426 640 -320 240 -480 640 -486 466 -640 480 -575 432 -640 480 -640 574 -500 375 -469 640 -500 332 -333 500 -426 640 -640 480 -640 426 -640 427 -640 360 -640 427 -640 480 -500 375 -640 427 -500 358 -640 457 -428 640 -529 640 -512 640 -500 333 -640 383 -640 480 -640 457 -512 640 -640 427 -640 480 -640 423 -640 480 -640 427 -518 640 -480 640 -333 500 -640 428 -640 480 -640 426 -640 360 -480 640 -640 640 -500 375 -640 481 -480 640 -640 480 -640 427 -640 480 -640 413 -640 480 -428 640 -640 480 -640 428 -480 640 -494 640 -640 360 -640 480 -480 640 -424 640 -614 640 -500 300 -640 480 -640 599 -640 480 -640 427 -640 426 -640 463 -427 640 -640 480 -640 426 -640 427 -462 640 -640 480 -640 478 -640 426 -500 246 -427 640 -640 428 -640 360 -412 500 -640 425 -500 375 -500 375 -640 426 -640 480 -640 443 -640 480 -640 427 -640 427 -640 429 -640 361 -640 427 -426 640 -640 480 -636 640 -500 375 -640 427 -640 425 -640 435 -640 428 -640 428 -640 427 -480 640 -640 427 -640 480 -640 427 -640 501 -640 517 -640 480 -626 640 -640 359 -640 425 -640 429 -640 480 -640 423 -640 480 -640 424 -477 640 -640 427 -640 427 -640 480 -640 480 -640 425 -640 427 -500 373 -500 375 -640 480 -640 428 -640 633 -640 480 -640 427 -640 457 -640 480 -640 543 -640 480 -640 496 -640 287 -640 480 -480 640 -640 480 -640 480 -640 639 -640 446 -640 480 -500 375 -640 480 -640 480 -640 480 -500 375 -640 480 -640 427 -640 425 -640 428 -640 426 -640 480 -640 431 -640 427 -640 480 -640 440 -640 480 -640 480 -480 640 -640 480 -427 640 -640 489 -425 640 -640 427 -640 480 -640 480 -640 455 -640 359 -500 375 -480 640 -640 419 -480 640 -427 640 -640 480 -640 425 -640 425 -640 480 -336 500 -640 329 -640 480 -640 427 -640 480 -478 640 -612 612 -480 640 -501 640 -640 426 -427 640 -500 375 -640 427 -500 358 -425 640 -640 480 -640 480 -500 375 -640 412 -640 430 -567 640 -375 500 -476 640 -640 426 -612 612 -500 400 -426 640 -479 640 -480 640 -640 480 -480 640 -500 298 -640 480 -640 478 -640 480 -640 576 -426 640 -478 640 -640 640 -500 375 -640 483 -640 640 -424 640 -480 640 -480 640 -640 425 -640 427 -640 480 -640 480 -442 640 -500 375 -640 427 -640 480 -640 480 -640 480 -427 640 -640 426 -400 312 -640 480 -500 375 -480 640 -640 478 -640 426 -480 640 -640 480 -640 480 -640 480 -500 375 -426 640 -612 612 -640 478 -640 640 -335 500 -640 427 -640 426 -426 640 -640 427 -333 500 -640 449 -375 500 -640 480 -640 480 -427 640 -640 428 -640 480 -640 480 -640 480 -612 612 -359 640 -640 478 -640 427 -640 425 -640 426 -428 640 -640 388 -640 480 -480 640 -480 640 -640 427 -640 427 -640 480 -480 640 -640 427 -427 640 -640 311 -640 475 -500 333 -427 640 -640 429 -480 640 -426 640 -640 454 -640 480 -640 426 -571 640 -640 480 -427 640 -640 640 -640 480 -428 640 -640 448 -480 640 -640 428 -640 480 -640 480 -640 427 -480 640 -480 640 -500 375 -640 427 -640 480 -640 464 -500 485 -640 424 -640 480 -640 491 -480 640 -500 404 -640 640 -480 640 -640 427 -640 427 -480 640 -640 480 -640 480 -560 560 -480 640 -640 360 -640 457 -640 480 -612 612 -640 640 -612 612 -640 109 -500 245 -640 427 -640 425 -640 424 -640 480 -612 612 -640 400 -640 427 -500 333 -640 427 -640 424 -426 640 -640 397 -479 640 -640 425 -640 480 -428 640 -640 491 -427 640 -640 480 -492 500 -640 480 -606 640 -640 480 -640 482 -640 427 -333 500 -640 425 -640 424 -375 500 -640 427 -640 360 -640 480 -640 432 -640 457 -640 480 -640 480 -640 547 -640 455 -640 427 -640 479 -640 423 -612 612 -640 427 -500 375 -640 480 -640 427 -640 426 -500 500 -640 428 -640 427 -640 426 -640 425 -480 640 -640 426 -640 427 -640 427 -640 461 -428 640 -640 425 -640 427 -640 429 -640 480 -640 427 -500 281 -407 640 -383 640 -418 640 -500 332 -337 500 -640 547 -500 395 -640 480 -640 361 -612 612 -640 554 -640 427 -466 640 -612 612 -500 369 -640 427 -640 480 -640 480 -640 427 -500 375 -640 480 -640 426 -640 480 -500 375 -640 478 -640 480 -480 640 -579 640 -125 166 -640 426 -640 428 -556 640 -480 640 -634 640 -640 429 -640 480 -640 480 -640 424 -503 640 -480 640 -640 427 -640 360 -640 427 -640 480 -640 480 -640 480 -500 375 -640 427 -600 400 -640 409 -640 427 -640 512 -640 480 -375 500 -640 427 -640 480 -640 427 -640 426 -640 427 -409 640 -640 640 -640 428 -640 480 -640 480 -640 427 -500 333 -480 640 -427 640 -640 640 -425 640 -403 640 -640 427 -612 612 -360 270 -640 427 -640 480 -640 429 -640 427 -425 640 -640 425 -640 480 -576 640 -640 427 -480 360 -458 500 -640 478 -480 640 -640 479 -640 427 -640 480 -640 425 -640 504 -500 295 -375 500 -640 427 -640 399 -500 375 -640 425 -354 500 -640 427 -640 429 -640 479 -640 484 -480 640 -640 427 -500 375 -481 640 -640 407 -480 640 -432 640 -640 480 -500 375 -640 480 -640 514 -640 480 -640 428 -375 500 -640 480 -640 427 -640 480 -640 426 -640 480 -503 640 -640 427 -640 381 -640 480 -375 500 -500 348 -600 600 -640 427 -500 375 -640 426 -500 375 -640 427 -426 640 -640 480 -640 427 -640 428 -640 440 -640 360 -427 640 -640 426 -375 500 -480 640 -427 640 -640 427 -640 353 -500 355 -331 500 -640 480 -427 640 -640 426 -640 444 -492 640 -640 480 -640 421 -640 480 -480 640 -640 480 -640 428 -640 427 -500 333 -640 480 -640 426 -480 640 -480 640 -640 491 -328 500 -640 638 -640 480 -640 474 -640 426 -640 427 -434 640 -427 640 -375 500 -640 480 -640 427 -457 640 -640 426 -375 500 -640 426 -427 640 -640 426 -640 480 -640 426 -640 426 -640 428 -640 480 -640 427 -640 436 -640 426 -480 640 -640 480 -640 480 -640 427 -500 332 -640 401 -500 375 -640 427 -640 428 -517 640 -500 333 -640 480 -640 425 -500 375 -480 640 -640 480 -425 640 -640 426 -640 424 -640 640 -310 640 -640 425 -640 518 -500 375 -612 612 -640 480 -480 640 -640 424 -640 427 -640 480 -428 640 -500 375 -640 427 -640 480 -640 425 -480 640 -480 640 -640 427 -640 427 -640 428 -480 640 -640 480 -640 480 -309 500 -640 480 -640 457 -640 480 -640 480 -640 480 -640 424 -640 480 -640 633 -425 640 -612 612 -640 427 -500 375 -480 640 -640 504 -640 455 -640 480 -324 500 -640 480 -640 426 -640 427 -500 332 -640 408 -640 480 -640 480 -640 427 -640 427 -500 375 -640 480 -640 428 -640 426 -612 612 -640 414 -640 518 -640 359 -640 424 -480 640 -640 480 -500 334 -640 463 -640 412 -500 332 -640 426 -640 427 -640 480 -640 480 -426 640 -500 400 -480 640 -500 375 -448 299 -426 640 -427 640 -500 418 -640 480 -640 427 -640 426 -640 480 -334 500 -640 427 -640 478 -500 333 -500 375 -640 427 -640 435 -640 480 -500 332 -500 379 -640 425 -640 480 -640 480 -640 484 -512 640 -640 480 -480 640 -375 500 -640 426 -640 379 -640 484 -640 426 -640 427 -640 426 -480 640 -333 500 -640 461 -426 640 -640 480 -640 425 -427 640 -500 441 -427 640 -333 500 -640 223 -612 612 -640 480 -500 332 -640 480 -427 640 -640 480 -640 426 -480 640 -612 612 -480 640 -640 428 -640 480 -640 425 -640 480 -640 427 -640 480 -640 426 -640 480 -640 427 -640 496 -640 480 -640 471 -500 375 -640 480 -640 427 -640 480 -427 640 -640 427 -640 427 -640 427 -549 640 -640 640 -640 480 -640 329 -640 480 -640 427 -640 471 -640 480 -640 425 -500 375 -640 483 -375 500 -640 480 -640 427 -640 480 -640 425 -480 640 -640 426 -640 360 -480 640 -640 427 -427 640 -640 383 -640 427 -428 640 -640 427 -600 400 -640 506 -640 640 -640 477 -640 384 -500 333 -640 480 -419 640 -640 480 -640 480 -640 361 -612 612 -480 640 -640 425 -640 359 -634 640 -640 427 -640 427 -500 326 -427 640 -640 426 -375 500 -640 480 -640 480 -640 640 -480 640 -640 480 -640 633 -640 480 -480 640 -640 480 -640 480 -640 480 -640 360 -500 375 -480 640 -640 480 -640 640 -625 640 -640 481 -640 425 -640 425 -565 640 -480 640 -640 427 -426 640 -461 640 -640 480 -640 480 -448 500 -426 640 -375 500 -427 640 -500 375 -640 483 -640 359 -640 475 -640 480 -640 279 -640 480 -480 640 -640 424 -333 500 -612 612 -500 375 -500 358 -640 428 -640 480 -640 480 -640 425 -640 480 -467 640 -640 480 -640 457 -480 640 -640 611 -500 281 -612 612 -640 427 -640 421 -640 480 -480 640 -426 640 -640 640 -640 480 -640 431 -640 480 -640 426 -640 480 -500 500 -640 426 -500 376 -640 360 -410 270 -640 427 -426 640 -470 640 -640 480 -640 444 -332 500 -640 480 -507 640 -480 640 -640 424 -640 480 -427 640 -640 480 -640 480 -500 335 -640 480 -640 427 -640 508 -640 433 -640 466 -499 500 -640 640 -480 640 -640 264 -537 640 -640 480 -640 425 -482 640 -640 533 -640 394 -480 640 -640 359 -640 427 -500 332 -480 640 -640 426 -640 558 -640 425 -640 427 -640 427 -427 640 -427 640 -500 376 -640 428 -640 640 -640 480 -425 640 -640 424 -640 394 -375 500 -640 426 -640 425 -640 480 -640 427 -500 375 -640 318 -640 480 -640 427 -640 427 -640 427 -640 640 -640 424 -640 457 -500 332 -640 480 -640 457 -640 480 -640 432 -640 480 -640 480 -640 480 -612 612 -500 333 -640 480 -640 461 -428 640 -476 500 -640 480 -500 350 -427 640 -640 427 -640 480 -426 640 -480 640 -427 640 -640 480 -640 480 -640 427 -640 480 -640 392 -640 512 -426 640 -500 376 -640 425 -640 426 -640 480 -640 427 -640 480 -640 360 -640 481 -640 460 -640 427 -640 428 -640 427 -640 427 -640 480 -640 480 -640 427 -500 414 -400 300 -478 640 -640 521 -640 426 -640 425 -640 443 -640 427 -448 640 -500 375 -480 640 -640 427 -500 332 -424 640 -480 640 -640 406 -640 426 -359 640 -500 333 -480 640 -640 480 -640 483 -640 426 -640 426 -640 426 -640 424 -640 541 -640 426 -640 480 -500 375 -500 375 -427 640 -640 420 -640 480 -640 427 -612 612 -427 640 -332 500 -640 427 -640 480 -640 516 -640 480 -483 640 -426 640 -640 427 -640 428 -511 640 -640 480 -640 480 -425 640 -640 426 -640 427 -500 375 -500 376 -640 480 -480 640 -640 480 -640 480 -640 480 -640 427 -640 480 -640 480 -426 640 -640 480 -640 425 -612 612 -640 427 -640 427 -640 427 -640 480 -480 640 -426 640 -427 640 -640 427 -500 375 -640 360 -480 640 -640 428 -493 640 -640 480 -478 640 -640 425 -500 375 -640 426 -375 500 -640 480 -501 640 -640 427 -640 361 -640 640 -640 544 -640 425 -640 428 -500 375 -640 425 -427 640 -333 500 -640 428 -640 427 -640 480 -500 332 -640 478 -640 480 -464 640 -500 375 -640 427 -640 427 -480 640 -640 161 -640 480 -640 640 -640 480 -640 427 -640 480 -640 480 -640 480 -640 480 -612 612 -500 375 -640 427 -640 458 -640 425 -640 409 -640 509 -640 460 -640 427 -640 412 -418 500 -640 221 -640 480 -640 427 -428 640 -640 427 -640 549 -500 375 -640 291 -640 426 -480 640 -640 428 -640 425 -640 428 -640 427 -500 375 -640 425 -640 480 -640 480 -480 640 -640 346 -375 500 -423 640 -640 480 -596 640 -640 427 -640 427 -593 640 -640 493 -640 479 -640 480 -640 479 -500 375 -640 426 -300 400 -640 480 -500 375 -640 424 -480 640 -640 429 -456 640 -375 500 -640 426 -504 640 -640 480 -640 456 -640 492 -500 375 -640 471 -480 640 -480 640 -640 359 -640 480 -640 427 -426 640 -375 500 -640 480 -500 382 -640 480 -427 640 -640 480 -427 640 -640 480 -640 429 -640 480 -640 480 -640 424 -640 480 -640 480 -640 428 -500 334 -640 480 -640 480 -480 640 -640 507 -640 478 -640 460 -640 426 -640 403 -480 640 -640 427 -640 427 -427 640 -640 427 -640 416 -427 640 -300 225 -640 423 -332 500 -640 458 -500 357 -640 480 -612 612 -640 383 -640 350 -640 480 -309 640 -640 480 -640 426 -640 511 -459 640 -549 640 -640 428 -640 480 -640 480 -426 640 -640 384 -640 425 -640 444 -640 426 -640 480 -640 480 -480 640 -640 480 -640 480 -640 427 -640 427 -640 416 -640 479 -500 375 -640 480 -640 480 -640 480 -640 360 -640 402 -481 640 -640 480 -334 500 -640 480 -640 480 -640 480 -640 427 -640 360 -640 427 -480 640 -612 612 -640 427 -640 428 -640 427 -550 640 -612 612 -640 427 -375 500 -500 333 -500 375 -480 640 -640 427 -640 428 -640 480 -427 640 -640 426 -640 480 -478 640 -480 640 -640 480 -640 480 -640 428 -640 480 -640 480 -640 512 -640 480 -500 375 -640 427 -640 428 -480 640 -640 428 -576 384 -640 480 -640 480 -640 480 -423 640 -640 380 -640 436 -334 500 -427 640 -640 427 -640 480 -426 640 -480 640 -640 453 -375 500 -640 426 -408 640 -640 428 -640 424 -427 640 -640 484 -598 415 -640 425 -640 427 -640 480 -640 430 -640 427 -640 480 -640 480 -500 375 -640 428 -640 427 -426 640 -640 438 -450 640 -640 389 -482 640 -480 640 -640 442 -640 448 -500 334 -640 640 -640 421 -500 333 -628 640 -500 392 -640 480 -500 375 -500 333 -426 640 -640 425 -640 427 -640 427 -640 427 -500 375 -628 640 -640 480 -333 500 -640 480 -500 313 -640 427 -640 480 -640 426 -640 480 -640 424 -640 393 -640 426 -640 480 -640 427 -612 612 -500 375 -500 333 -500 375 -480 640 -640 427 -427 640 -480 640 -640 427 -500 250 -640 426 -640 480 -640 480 -640 427 -440 640 -426 640 -480 640 -640 480 -425 283 -640 401 -640 480 -640 427 -640 423 -425 640 -493 640 -640 430 -640 427 -640 406 -375 500 -640 504 -612 612 -500 375 -640 480 -640 458 -640 365 -640 428 -375 500 -640 480 -500 375 -640 480 -428 640 -640 408 -640 480 -500 375 -640 480 -606 400 -640 425 -428 640 -480 640 -640 480 -427 640 -640 426 -640 424 -375 500 -640 425 -640 486 -640 427 -500 430 -640 640 -640 640 -640 480 -640 543 -640 480 -640 480 -640 427 -640 427 -640 640 -640 427 -640 426 -640 541 -640 461 -640 427 -640 480 -640 427 -640 612 -612 612 -640 536 -427 640 -640 427 -640 459 -427 640 -640 418 -500 375 -358 640 -333 500 -427 640 -640 427 -640 427 -410 423 -427 640 -640 425 -640 360 -640 479 -640 480 -640 425 -640 427 -640 426 -640 427 -554 640 -640 414 -640 480 -640 480 -431 640 -640 480 -480 640 -640 446 -427 640 -640 373 -612 612 -640 480 -640 360 -409 640 -427 640 -640 480 -640 480 -426 640 -640 480 -640 412 -640 380 -640 426 -332 500 -640 426 -425 640 -500 375 -640 480 -500 333 -640 358 -640 427 -640 427 -427 640 -480 640 -612 612 -500 281 -640 427 -640 365 -500 375 -640 480 -640 480 -426 640 -471 640 -640 426 -640 480 -480 640 -500 375 -480 640 -480 640 -640 427 -640 427 -480 640 -640 426 -640 427 -640 480 -640 480 -640 428 -640 480 -640 480 -425 640 -640 494 -640 427 -640 480 -640 480 -640 480 -640 427 -640 426 -640 480 -640 426 -426 640 -640 480 -640 360 -480 640 -640 440 -640 480 -640 425 -500 375 -640 427 -457 640 -640 478 -640 427 -640 427 -640 427 -640 480 -553 640 -426 640 -640 433 -425 640 -640 472 -427 640 -427 640 -640 424 -640 427 -500 400 -640 456 -640 427 -500 332 -640 640 -428 640 -426 640 -480 640 -612 612 -640 427 -640 427 -606 640 -640 575 -640 426 -640 480 -640 480 -640 426 -640 480 -640 426 -640 480 -640 423 -640 480 -640 427 -640 480 -640 480 -352 500 -640 480 -640 360 -640 479 -640 413 -290 438 -427 640 -640 480 -375 500 -425 640 -640 480 -640 514 -640 360 -640 426 -480 640 -640 640 -640 370 -640 480 -500 434 -500 375 -427 640 -480 640 -640 427 -640 549 -640 426 -640 426 -640 427 -640 455 -640 424 -500 375 -427 640 -640 480 -640 425 -600 600 -426 640 -640 519 -640 480 -640 427 -640 480 -334 500 -640 355 -640 427 -500 334 -429 640 -640 480 -640 480 -500 375 -640 426 -331 500 -640 449 -500 375 -640 426 -640 424 -640 480 -640 427 -640 480 -640 460 -640 629 -428 640 -640 480 -640 448 -480 640 -500 332 -640 425 -428 640 -461 640 -640 480 -500 375 -640 423 -640 368 -332 500 -480 640 -640 432 -640 640 -640 427 -612 612 -333 500 -640 480 -640 480 -385 500 -500 281 -512 640 -640 526 -640 429 -480 640 -500 375 -640 426 -480 640 -480 640 -607 640 -640 479 -427 640 -640 431 -640 480 -640 480 -640 425 -640 480 -640 426 -640 480 -640 426 -640 480 -640 640 -640 426 -480 640 -427 640 -640 480 -640 427 -640 480 -640 480 -640 424 -640 480 -640 424 -640 480 -640 427 -640 364 -640 480 -640 427 -640 456 -640 427 -281 500 -480 640 -320 212 -480 640 -640 429 -640 428 -640 364 -640 418 -640 427 -640 478 -640 439 -640 426 -640 426 -640 427 -640 480 -500 446 -640 480 -640 480 -640 427 -478 640 -640 426 -640 386 -640 433 -375 500 -640 480 -500 333 -640 424 -480 640 -500 375 -640 480 -429 640 -500 375 -500 358 -640 480 -640 458 -480 640 -640 444 -640 481 -640 480 -487 500 -640 480 -480 640 -355 500 -640 360 -425 640 -333 500 -640 480 -375 500 -640 427 -640 426 -640 563 -500 371 -640 454 -640 425 -640 426 -640 427 -640 480 -500 334 -428 640 -640 481 -640 480 -640 480 -500 396 -640 440 -426 640 -438 640 -427 640 -456 640 -640 427 -640 480 -640 480 -640 427 -640 448 -500 332 -640 424 -640 480 -533 640 -375 500 -640 480 -640 439 -428 640 -612 612 -500 375 -640 480 -640 480 -480 640 -500 398 -640 437 -640 481 -640 480 -640 480 -640 480 -640 427 -458 640 -458 640 -640 427 -640 386 -500 375 -640 480 -480 640 -640 427 -640 480 -640 500 -640 437 -640 463 -427 640 -640 640 -612 612 -640 427 -612 612 -612 612 -640 428 -640 425 -640 463 -355 500 -640 480 -500 279 -640 424 -500 375 -640 425 -500 320 -640 410 -640 480 -640 427 -640 427 -640 480 -292 500 -640 427 -640 426 -480 640 -500 375 -500 333 -640 480 -640 427 -640 427 -500 375 -640 427 -500 307 -640 360 -640 428 -640 480 -640 359 -640 423 -640 424 -640 480 -640 480 -640 424 -640 427 -640 449 -640 383 -640 640 -640 426 -640 517 -426 640 -500 333 -426 640 -640 478 -640 426 -640 478 -443 640 -640 425 -426 640 -427 640 -480 640 -375 500 -640 480 -640 427 -375 500 -640 165 -480 640 -640 427 -640 480 -640 427 -640 480 -640 379 -640 425 -640 480 -640 389 -640 427 -640 427 -396 640 -375 500 -441 640 -640 480 -640 480 -640 480 -640 478 -289 500 -640 480 -640 435 -640 426 -640 480 -640 288 -500 333 -600 451 -640 480 -480 640 -640 480 -500 375 -640 640 -640 480 -640 427 -425 640 -640 427 -640 427 -600 252 -640 424 -640 640 -640 426 -640 427 -640 426 -500 440 -424 640 -480 640 -640 480 -424 640 -640 480 -640 427 -640 480 -640 427 -640 480 -436 640 -640 427 -512 640 -640 181 -640 426 -427 640 -500 375 -612 612 -640 512 -640 496 -640 427 -640 388 -640 480 -427 640 -500 375 -640 428 -640 481 -640 632 -640 480 -640 480 -640 512 -481 640 -640 480 -640 425 -427 640 -640 428 -480 320 -333 500 -640 427 -640 480 -640 428 -425 640 -480 640 -640 408 -640 480 -640 427 -337 640 -500 375 -500 333 -500 375 -640 480 -640 413 -640 424 -640 480 -640 426 -640 588 -480 640 -500 333 -427 640 -640 425 -500 375 -500 281 -480 245 -373 299 -640 480 -427 640 -640 427 -640 431 -640 425 -500 375 -603 640 -479 640 -612 612 -640 427 -640 488 -640 480 -640 333 -640 428 -457 640 -640 480 -640 427 -640 480 -500 375 -427 640 -500 375 -469 640 -640 429 -480 640 -640 425 -427 640 -640 424 -640 482 -640 427 -640 423 -640 480 -426 640 -335 500 -640 559 -640 428 -479 640 -640 480 -640 426 -640 480 -640 480 -640 426 -640 468 -480 640 -375 500 -640 480 -640 480 -480 640 -640 427 -640 427 -375 500 -640 326 -640 480 -480 640 -640 480 -521 640 -640 480 -640 426 -640 480 -640 476 -612 612 -500 375 -428 640 -640 480 -640 424 -480 640 -640 427 -640 428 -640 425 -640 427 -500 375 -640 424 -640 481 -640 480 -640 427 -640 423 -640 425 -534 640 -640 480 -393 640 -640 425 -640 480 -640 480 -480 640 -640 419 -640 458 -640 483 -640 426 -500 375 -640 361 -640 480 -640 430 -640 426 -640 426 -640 480 -500 375 -640 480 -640 480 -427 640 -500 333 -427 640 -640 476 -640 426 -640 480 -640 429 -640 426 -640 433 -479 640 -640 427 -400 640 -427 640 -640 480 -640 428 -640 427 -480 640 -500 375 -640 421 -640 427 -500 315 -500 333 -640 427 -500 375 -480 640 -640 426 -612 612 -640 425 -333 500 -500 336 -640 424 -612 612 -640 426 -640 480 -427 640 -640 360 -640 427 -640 427 -427 640 -640 275 -419 640 -640 480 -500 375 -640 428 -500 333 -480 640 -640 480 -427 640 -640 480 -369 640 -640 414 -640 480 -640 427 -375 500 -454 640 -560 640 -640 427 -640 480 -640 425 -640 457 -640 479 -480 640 -424 640 -640 425 -640 428 -640 480 -480 640 -640 426 -640 480 -640 427 -427 640 -640 427 -459 640 -640 480 -640 425 -375 500 -640 466 -640 480 -500 347 -640 426 -640 448 -458 640 -375 500 -436 640 -640 360 -391 640 -460 500 -640 427 -500 375 -640 480 -500 375 -500 332 -317 500 -639 640 -512 640 -640 427 -428 640 -473 640 -480 640 -427 640 -640 427 -640 480 -640 478 -426 640 -480 640 -640 434 -640 479 -640 480 -640 480 -500 341 -640 480 -640 480 -500 375 -640 427 -640 425 -395 640 -640 480 -640 375 -640 480 -640 428 -640 560 -640 640 -640 480 -500 333 -640 395 -640 448 -510 640 -640 424 -500 334 -640 515 -480 640 -640 480 -500 375 -405 640 -640 416 -640 513 -640 466 -471 640 -640 398 -640 480 -450 338 -640 433 -640 427 -640 480 -640 428 -640 486 -640 478 -640 427 -640 438 -427 640 -640 427 -640 480 -500 470 -480 640 -428 640 -400 640 -640 375 -500 375 -333 500 -640 424 -640 427 -640 427 -640 480 -500 375 -640 400 -640 443 -500 376 -640 527 -640 480 -480 640 -500 333 -640 480 -640 426 -640 358 -480 640 -640 436 -640 480 -500 333 -610 427 -640 480 -425 640 -375 500 -640 427 -640 640 -640 511 -640 426 -612 612 -640 478 -640 480 -640 422 -640 428 -640 480 -448 336 -500 375 -640 480 -640 473 -640 478 -640 427 -427 640 -500 375 -640 480 -640 426 -375 500 -640 480 -424 640 -480 640 -640 425 -640 480 -640 480 -640 426 -640 427 -500 375 -640 384 -640 480 -640 522 -640 428 -640 360 -640 549 -640 427 -640 427 -480 640 -640 421 -500 331 -640 480 -500 315 -640 480 -640 427 -480 640 -640 493 -640 480 -640 359 -480 640 -640 427 -427 640 -640 361 -640 480 -640 480 -500 327 -640 427 -640 453 -426 640 -480 640 -640 427 -370 500 -640 536 -500 403 -640 480 -150 200 -640 640 -448 600 -481 640 -640 427 -480 640 -427 640 -640 320 -500 301 -640 427 -480 640 -612 612 -640 480 -640 428 -640 427 -640 458 -375 500 -640 427 -640 480 -500 333 -640 429 -480 640 -640 478 -640 480 -640 480 -640 480 -640 480 -480 640 -500 375 -640 427 -640 427 -640 426 -640 425 -640 427 -640 640 -500 375 -612 612 -500 375 -480 640 -640 428 -425 251 -640 206 -640 424 -480 640 -640 473 -420 169 -640 480 -640 427 -640 480 -640 429 -640 452 -481 640 -427 640 -621 640 -425 640 -427 640 -640 399 -640 467 -640 456 -640 428 -427 640 -640 480 -640 427 -500 375 -640 425 -640 330 -640 640 -640 427 -640 480 -640 442 -640 480 -386 500 -640 426 -612 612 -640 511 -640 428 -640 426 -500 375 -640 383 -640 427 -427 640 -464 500 -640 427 -640 512 -633 640 -640 218 -500 375 -640 427 -640 480 -500 375 -640 606 -640 480 -640 457 -640 429 -640 481 -500 397 -640 480 -640 423 -480 640 -640 480 -640 426 -640 427 -428 640 -480 640 -500 339 -500 375 -480 640 -640 426 -640 480 -640 466 -427 640 -500 269 -640 429 -640 427 -426 640 -429 640 -640 480 -640 424 -640 427 -640 432 -640 480 -640 426 -640 481 -480 640 -640 426 -640 480 -640 480 -500 333 -426 640 -500 333 -640 480 -375 500 -480 640 -640 427 -427 640 -640 427 -640 480 -640 512 -640 484 -612 612 -640 480 -407 640 -640 554 -640 427 -640 429 -640 480 -640 425 -612 612 -640 425 -640 478 -603 640 -480 640 -640 418 -500 375 -640 385 -480 640 -640 480 -500 375 -640 478 -640 480 -428 640 -480 640 -336 500 -480 640 -640 428 -500 375 -640 629 -640 459 -640 425 -480 640 -640 480 -640 461 -640 480 -640 480 -640 480 -640 480 -500 375 -500 375 -408 500 -480 640 -640 528 -640 480 -640 428 -480 640 -640 617 -425 640 -500 376 -500 424 -500 333 -333 500 -640 426 -640 449 -640 427 -640 427 -640 480 -640 481 -640 480 -640 480 -640 480 -640 480 -640 480 -500 333 -640 359 -480 640 -447 640 -451 640 -640 640 -640 376 -479 640 -640 427 -640 427 -500 333 -640 426 -500 375 -640 480 -334 500 -427 640 -640 427 -640 480 -640 420 -612 612 -640 426 -640 480 -640 609 -612 612 -640 480 -640 466 -403 640 -500 336 -640 425 -360 265 -640 480 -640 480 -640 480 -640 476 -640 480 -500 375 -640 480 -640 480 -640 425 -480 640 -640 480 -640 478 -640 480 -640 480 -640 480 -427 640 -500 375 -640 480 -640 426 -640 424 -640 427 -640 472 -640 480 -281 500 -500 333 -640 429 -640 480 -640 434 -500 375 -640 427 -640 640 -640 364 -640 480 -500 500 -640 439 -500 371 -640 640 -424 640 -500 395 -640 480 -427 640 -640 357 -640 480 -640 424 -640 480 -359 640 -640 512 -640 426 -640 480 -640 573 -640 480 -640 427 -426 640 -640 360 -640 426 -640 480 -640 480 -640 425 -640 428 -612 612 -612 612 -640 400 -480 640 -640 480 -427 640 -640 480 -640 627 -640 516 -640 427 -640 427 -640 480 -640 424 -640 427 -500 333 -640 480 -500 375 -500 333 -612 612 -640 480 -480 640 -500 375 -640 480 -640 427 -640 419 -500 375 -640 425 -640 480 -480 640 -640 428 -640 464 -612 612 -640 480 -640 427 -640 480 -489 640 -640 480 -640 459 -427 640 -640 376 -640 427 -640 480 -640 512 -640 427 -640 392 -342 500 -640 480 -640 480 -640 426 -640 480 -640 425 -640 478 -640 480 -640 351 -333 500 -640 427 -640 480 -604 640 -640 480 -512 640 -640 481 -640 480 -500 485 -457 640 -640 480 -640 427 -640 427 -640 427 -640 480 -640 426 -480 640 -480 640 -640 480 -640 480 -480 640 -480 320 -640 334 -500 375 -640 427 -640 480 -423 640 -640 453 -480 640 -586 640 -640 480 -500 329 -640 480 -375 500 -640 476 -500 311 -640 458 -427 640 -452 640 -500 373 -640 640 -333 500 -612 612 -640 480 -640 428 -640 427 -500 333 -640 426 -426 640 -640 425 -426 640 -640 427 -421 640 -640 640 -500 336 -640 480 -335 500 -640 480 -333 500 -640 428 -406 640 -640 462 -640 480 -640 480 -640 428 -640 427 -640 427 -640 480 -321 640 -612 612 -612 612 -500 375 -480 640 -640 480 -640 425 -612 612 -480 640 -640 427 -390 640 -426 640 -640 427 -640 480 -500 375 -640 480 -640 402 -500 375 -480 640 -640 480 -640 427 -640 480 -640 429 -640 427 -640 425 -640 480 -640 428 -371 640 -640 486 -640 480 -640 480 -427 640 -640 428 -480 640 -500 375 -640 480 -640 420 -480 640 -640 427 -640 428 -500 375 -612 612 -640 480 -439 640 -640 474 -640 428 -435 580 -640 640 -480 640 -333 500 -640 480 -427 640 -333 500 -640 480 -640 426 -480 640 -640 306 -640 427 -640 359 -480 640 -424 640 -480 640 -640 427 -640 427 -640 427 -640 480 -640 480 -424 640 -640 480 -640 492 -640 425 -500 375 -486 640 -640 501 -427 640 -500 375 -427 640 -640 427 -446 500 -455 640 -640 426 -640 480 -361 640 -500 334 -427 640 -640 461 -640 427 -640 480 -640 427 -640 480 -500 500 -640 323 -640 428 -640 480 -640 480 -640 340 -640 428 -640 488 -447 500 -500 355 -480 640 -480 360 -480 640 -359 640 -480 640 -640 422 -640 480 -640 433 -640 496 -640 480 -640 425 -425 640 -640 394 -640 427 -640 480 -640 426 -640 480 -640 427 -640 428 -500 400 -480 640 -640 401 -353 500 -640 426 -338 500 -640 427 -480 640 -480 640 -640 426 -428 640 -480 640 -500 333 -640 484 -357 500 -640 480 -640 480 -640 480 -640 426 -375 500 -334 500 -640 480 -427 640 -640 427 -640 360 -640 480 -640 480 -640 480 -640 427 -426 640 -640 512 -640 428 -640 432 -640 426 -640 426 -640 480 -640 427 -426 640 -425 392 -640 476 -640 480 -640 427 -500 375 -375 500 -500 375 -640 426 -500 382 -640 480 -640 640 -480 640 -640 480 -603 640 -640 425 -320 240 -480 640 -480 640 -375 500 -640 471 -427 640 -500 335 -640 480 -640 480 -640 640 -427 640 -640 426 -640 427 -426 640 -640 481 -640 401 -500 375 -482 640 -640 480 -352 288 -640 512 -500 485 -640 498 -640 422 -640 480 -427 640 -427 640 -426 640 -374 500 -500 332 -640 493 -375 500 -640 480 -429 640 -640 470 -640 480 -640 623 -640 361 -500 383 -640 480 -640 425 -640 427 -640 426 -640 359 -424 640 -640 480 -640 480 -640 427 -640 423 -480 640 -640 427 -640 428 -640 427 -438 640 -640 426 -640 480 -640 480 -640 427 -640 427 -500 333 -640 480 -640 480 -640 480 -640 427 -480 640 -640 428 -640 427 -640 427 -640 427 -640 427 -640 427 -640 426 -640 427 -640 425 -640 480 -640 480 -640 427 -640 426 -424 640 -500 375 -640 427 -640 375 -566 640 -640 480 -640 425 -427 640 -640 480 -612 612 -640 480 -640 480 -640 480 -640 427 -424 640 -640 480 -640 480 -640 480 -640 480 -612 612 -427 640 -640 480 -640 640 -480 640 -640 480 -640 480 -640 415 -612 612 -640 425 -640 439 -640 480 -640 512 -640 428 -640 480 -640 427 -640 542 -640 480 -640 461 -640 480 -427 640 -640 480 -426 640 -478 640 -500 375 -332 500 -640 480 -640 427 -640 480 -640 426 -640 575 -640 480 -640 387 -640 426 -640 480 -612 612 -640 428 -351 500 -640 427 -480 640 -640 424 -640 360 -480 640 -480 640 -640 417 -500 380 -640 480 -480 640 -480 640 -640 427 -612 612 -640 480 -500 333 -640 465 -640 426 -640 426 -310 500 -640 480 -640 431 -480 640 -640 480 -500 375 -640 480 -338 409 -640 416 -640 414 -640 427 -640 426 -640 424 -369 640 -640 640 -640 427 -640 427 -640 480 -640 480 -640 427 -640 496 -612 612 -427 640 -427 640 -427 640 -640 394 -640 404 -640 424 -480 640 -640 427 -427 640 -610 406 -640 427 -301 290 -640 427 -640 462 -640 428 -480 640 -640 480 -612 612 -640 480 -640 480 -612 612 -640 480 -500 375 -333 500 -640 427 -640 458 -640 480 -500 335 -640 480 -427 640 -640 480 -333 500 -588 640 -640 478 -480 640 -640 427 -640 427 -427 640 -640 429 -640 480 -640 426 -500 333 -640 480 -640 427 -640 480 -640 480 -640 428 -425 640 -375 500 -640 480 -640 359 -640 480 -640 471 -640 480 -640 427 -640 480 -640 640 -480 640 -640 424 -640 489 -640 494 -480 640 -375 500 -640 427 -480 640 -362 640 -500 375 -480 640 -427 640 -640 480 -640 427 -479 640 -500 375 -426 640 -640 425 -640 428 -640 428 -640 427 -640 426 -640 480 -640 428 -480 640 -640 480 -640 480 -480 640 -640 201 -640 480 -480 640 -640 480 -640 434 -500 375 -640 429 -423 640 -427 640 -640 480 -640 425 -640 409 -640 480 -640 480 -640 433 -640 430 -480 640 -640 435 -640 426 -640 480 -640 360 -500 375 -640 427 -640 461 -640 426 -640 480 -640 480 -640 359 -500 334 -640 480 -640 480 -640 512 -640 343 -640 483 -640 336 -640 426 -640 480 -640 427 -640 424 -640 466 -500 332 -612 612 -640 361 -500 305 -640 465 -640 480 -492 500 -640 480 -640 473 -640 409 -640 480 -640 428 -640 427 -640 486 -465 640 -640 425 -640 496 -640 513 -640 348 -500 500 -640 512 -478 640 -640 480 -640 427 -413 640 -640 419 -640 426 -500 375 -640 428 -640 349 -427 640 -640 430 -640 480 -374 500 -640 481 -500 375 -640 480 -640 427 -640 427 -640 426 -640 426 -640 409 -640 480 -640 480 -500 382 -480 640 -640 425 -640 480 -640 428 -640 480 -480 640 -640 427 -500 333 -640 480 -640 480 -428 640 -640 383 -640 480 -640 600 -640 424 -500 375 -480 640 -640 429 -500 334 -500 375 -640 359 -640 430 -480 640 -640 459 -640 427 -640 294 -375 500 -480 640 -640 481 -640 427 -612 612 -640 425 -640 428 -500 346 -640 427 -640 427 -640 480 -640 480 -640 426 -375 500 -480 640 -427 640 -640 426 -500 333 -375 500 -424 640 -640 429 -640 427 -424 640 -640 425 -640 480 -640 380 -640 419 -640 480 -640 359 -640 464 -640 428 -640 427 -640 427 -481 640 -640 414 -500 373 -640 427 -640 426 -418 640 -640 426 -416 640 -640 480 -640 427 -640 462 -640 480 -640 481 -640 360 -640 359 -427 640 -640 426 -426 640 -640 427 -640 425 -640 482 -481 640 -612 612 -640 424 -524 640 -640 427 -640 427 -640 480 -480 640 -640 439 -640 341 -360 640 -640 429 -640 480 -500 375 -480 640 -640 427 -640 379 -640 424 -480 320 -427 640 -640 360 -640 427 -640 480 -427 640 -640 480 -640 480 -479 640 -640 480 -640 427 -428 640 -640 426 -429 640 -640 425 -640 427 -478 640 -640 480 -640 427 -480 640 -640 530 -640 427 -480 640 -480 640 -640 480 -640 480 -640 426 -425 640 -640 427 -640 480 -640 427 -640 480 -480 640 -640 429 -600 400 -640 428 -426 640 -640 480 -640 480 -427 640 -427 640 -462 640 -360 270 -364 500 -640 640 -612 612 -640 480 -640 480 -480 498 -500 382 -640 427 -612 612 -640 422 -640 426 -500 333 -640 427 -640 561 -640 480 -431 640 -640 480 -640 480 -480 640 -480 640 -640 480 -640 480 -640 432 -640 480 -500 375 -640 480 -640 483 -480 640 -480 640 -480 640 -640 185 -640 424 -640 480 -500 375 -640 480 -480 640 -640 426 -640 427 -427 640 -640 426 -500 476 -426 640 -480 640 -500 273 -480 640 -640 429 -427 640 -500 300 -500 400 -498 640 -640 480 -640 480 -640 480 -640 640 -640 480 -640 426 -375 500 -640 480 -640 425 -427 640 -640 480 -375 500 -640 427 -500 334 -640 429 -427 640 -480 640 -640 427 -640 428 -375 500 -526 640 -500 375 -640 480 -640 480 -640 423 -612 612 -640 452 -640 496 -500 375 -500 375 -383 640 -500 375 -640 427 -612 612 -640 480 -640 480 -612 612 -479 640 -640 430 -640 266 -424 640 -640 480 -640 480 -375 500 -500 333 -565 640 -640 480 -427 640 -500 375 -640 480 -425 640 -640 480 -640 480 -640 427 -640 480 -640 443 -500 583 -640 359 -480 640 -640 479 -640 480 -612 612 -640 427 -478 640 -640 480 -427 640 -640 427 -640 427 -640 427 -640 427 -640 489 -640 640 -640 480 -640 454 -640 360 -500 375 -640 427 -640 360 -640 523 -478 640 -425 640 -640 427 -423 500 -640 427 -425 283 -480 640 -640 376 -500 375 -426 640 -428 640 -640 480 -640 400 -640 427 -640 427 -640 431 -424 640 -640 480 -640 640 -500 333 -490 640 -640 480 -373 640 -640 480 -500 375 -640 426 -640 480 -640 480 -640 480 -640 426 -640 471 -640 426 -640 427 -640 427 -375 500 -640 427 -640 426 -426 640 -640 478 -640 480 -640 397 -480 640 -640 424 -640 428 -427 640 -480 640 -480 640 -640 480 -640 427 -640 480 -640 360 -640 512 -640 436 -640 428 -640 477 -434 640 -640 480 -500 375 -640 348 -640 480 -640 480 -640 480 -500 375 -427 640 -640 426 -424 640 -640 511 -640 433 -640 512 -640 411 -640 427 -640 480 -640 427 -640 427 -640 444 -640 480 -640 480 -640 427 -334 500 -640 354 -640 480 -500 332 -640 480 -640 427 -330 450 -640 427 -427 640 -640 480 -450 394 -480 640 -640 480 -361 640 -640 430 -640 480 -640 469 -640 480 -640 424 -640 429 -640 640 -640 478 -500 446 -375 500 -426 640 -612 612 -491 640 -500 333 -640 480 -640 484 -500 333 -640 480 -640 480 -640 393 -640 480 -640 480 -640 480 -500 375 -500 333 -640 480 -640 480 -500 429 -500 375 -640 480 -384 500 -425 640 -640 427 -640 428 -640 480 -640 480 -640 427 -640 480 -640 480 -640 480 -640 426 -480 640 -428 640 -428 640 -612 612 -427 640 -640 480 -640 428 -427 640 -427 640 -640 439 -640 426 -480 640 -426 640 -640 427 -640 478 -640 426 -640 428 -640 480 -640 427 -640 436 -640 480 -640 383 -640 512 -612 612 -500 334 -640 428 -640 363 -640 426 -640 426 -640 480 -640 427 -640 425 -640 458 -640 480 -640 358 -640 480 -500 333 -640 447 -640 320 -384 640 -640 427 -500 640 -640 428 -640 427 -383 640 -427 640 -427 640 -640 480 -640 363 -640 393 -494 640 -500 331 -640 427 -612 612 -640 480 -640 434 -640 480 -640 427 -500 375 -640 427 -500 375 -640 480 -640 424 -640 480 -640 427 -640 427 -640 483 -640 480 -640 480 -480 640 -640 426 -500 333 -480 640 -640 480 -640 480 -428 640 -500 335 -612 612 -640 480 -559 640 -640 481 -500 375 -431 640 -640 480 -640 425 -640 427 -500 333 -479 640 -640 480 -640 427 -640 480 -640 427 -640 480 -640 425 -640 412 -640 452 -640 480 -640 427 -640 640 -480 640 -640 473 -480 640 -375 500 -640 480 -640 480 -640 480 -640 426 -640 480 -500 335 -640 480 -640 427 -480 640 -451 640 -640 427 -480 640 -640 480 -640 425 -640 426 -640 427 -429 640 -640 429 -426 640 -640 424 -640 480 -640 480 -640 424 -640 452 -640 427 -640 480 -640 480 -640 427 -640 480 -425 640 -640 360 -427 640 -640 425 -640 427 -640 427 -640 344 -640 433 -359 640 -427 640 -500 333 -480 640 -448 640 -640 427 -640 427 -640 426 -640 438 -640 480 -480 640 -640 426 -640 361 -640 500 -640 428 -640 478 -640 480 -500 333 -427 640 -640 428 -640 360 -640 427 -478 640 -332 500 -640 480 -640 427 -640 480 -480 640 -640 427 -498 640 -640 466 -640 474 -333 500 -640 480 -426 640 -640 628 -500 334 -640 427 -640 427 -640 480 -640 427 -640 425 -421 210 -500 333 -640 427 -640 392 -640 428 -640 480 -640 480 -640 480 -640 426 -387 387 -640 493 -640 463 -426 640 -640 480 -480 640 -640 640 -640 426 -640 640 -500 419 -409 640 -640 480 -480 640 -640 480 -640 481 -640 428 -640 426 -640 480 -640 480 -640 516 -375 500 -500 375 -500 375 -480 640 -640 391 -640 480 -480 640 -640 427 -640 480 -427 640 -526 640 -640 425 -640 480 -640 436 -640 508 -612 612 -500 375 -500 333 -640 429 -480 318 -480 640 -480 640 -640 427 -640 428 -640 467 -500 375 -640 428 -427 640 -640 449 -323 500 -640 437 -480 640 -640 480 -640 478 -480 640 -500 336 -640 480 -425 640 -612 612 -478 640 -612 612 -426 640 -640 604 -640 483 -640 478 -640 431 -640 481 -640 480 -425 640 -640 424 -557 640 -480 640 -640 456 -640 480 -640 424 -480 640 -480 640 -640 427 -320 240 -640 428 -640 640 -640 259 -640 360 -640 427 -640 494 -640 480 -427 640 -427 640 -360 360 -480 640 -640 480 -640 480 -640 463 -640 480 -427 640 -640 425 -640 424 -640 480 -640 640 -640 428 -640 425 -640 425 -640 480 -640 480 -640 480 -640 424 -640 440 -640 480 -640 480 -640 426 -500 393 -640 480 -640 480 -480 640 -640 430 -480 640 -500 335 -500 333 -481 640 -500 375 -640 427 -640 564 -640 480 -426 640 -640 426 -640 480 -463 640 -640 480 -640 480 -612 612 -500 375 -640 427 -640 496 -640 427 -478 640 -640 427 -640 427 -375 500 -640 427 -500 375 -359 640 -640 351 -640 421 -480 640 -640 426 -640 427 -640 428 -640 639 -640 480 -640 378 -480 640 -640 424 -640 427 -480 640 -480 640 -500 373 -427 640 -640 480 -640 480 -500 375 -640 480 -640 432 -640 506 -640 427 -640 480 -480 640 -640 480 -480 640 -640 480 -640 487 -640 481 -480 640 -640 427 -640 426 -640 524 -500 333 -426 640 -640 480 -450 640 -640 528 -640 532 -640 463 -640 416 -640 480 -640 480 -640 468 -335 500 -640 480 -375 500 -614 640 -640 427 -640 479 -640 452 -640 427 -500 375 -640 427 -500 417 -640 481 -375 500 -640 480 -640 480 -640 480 -640 427 -506 640 -640 426 -640 480 -640 428 -480 640 -640 480 -640 480 -640 480 -640 427 -500 392 -640 504 -640 427 -480 640 -640 427 -640 428 -480 640 -640 426 -640 481 -640 434 -640 480 -375 500 -640 480 -640 480 -480 640 -640 451 -640 426 -640 480 -640 480 -640 640 -446 640 -640 426 -640 360 -500 333 -500 394 -640 426 -427 640 -640 427 -640 640 -640 480 -640 427 -640 480 -640 513 -426 640 -500 333 -640 480 -640 480 -480 640 -640 426 -480 640 -500 333 -333 500 -640 480 -640 426 -640 427 -640 428 -480 640 -640 426 -640 480 -640 479 -500 368 -415 640 -426 640 -640 426 -526 640 -640 480 -640 480 -500 302 -425 640 -426 640 -640 480 -458 640 -374 500 -630 640 -640 425 -640 480 -427 640 -640 427 -640 480 -640 480 -480 640 -640 480 -640 480 -640 427 -640 480 -640 480 -426 640 -640 424 -534 640 -428 640 -640 427 -500 375 -640 425 -640 496 -640 360 -640 480 -640 428 -640 480 -640 478 -424 640 -640 497 -640 427 -640 480 -640 564 -640 428 -480 640 -640 468 -500 333 -500 333 -640 428 -640 427 -441 640 -427 640 -500 375 -640 481 -640 480 -640 427 -486 640 -640 480 -640 428 -640 426 -612 612 -640 480 -640 427 -640 480 -427 640 -640 418 -332 500 -640 425 -640 480 -640 394 -640 480 -500 374 -500 500 -612 612 -427 640 -425 640 -427 640 -640 480 -640 480 -640 444 -612 612 -640 427 -640 430 -640 426 -500 333 -640 480 -640 426 -612 612 -478 640 -640 426 -394 500 -451 500 -425 640 -640 427 -426 640 -640 424 -424 640 -480 640 -480 640 -640 480 -640 428 -640 504 -640 424 -640 554 -640 480 -428 640 -500 375 -609 640 -640 439 -640 360 -640 561 -480 640 -478 640 -500 375 -481 640 -640 483 -421 640 -640 427 -518 640 -480 640 -640 480 -640 466 -640 394 -426 640 -480 640 -640 491 -640 426 -640 480 -500 375 -427 640 -640 440 -500 375 -480 640 -640 480 -640 502 -427 640 -511 640 -612 612 -640 439 -640 428 -640 426 -640 427 -425 640 -640 427 -469 640 -640 427 -480 640 -480 640 -640 426 -500 333 -640 404 -447 500 -640 427 -640 421 -500 334 -512 640 -640 427 -426 640 -640 480 -640 457 -427 640 -440 640 -427 640 -640 480 -426 640 -640 427 -640 426 -500 375 -500 500 -640 429 -640 427 -640 413 -375 500 -640 427 -480 640 -640 639 -640 480 -500 375 -640 480 -426 640 -427 640 -427 640 -640 427 -334 500 -640 428 -640 427 -640 480 -640 426 -427 640 -640 427 -500 375 -640 360 -640 427 -427 640 -500 375 -429 640 -640 480 -500 333 -640 425 -480 640 -612 612 -640 480 -640 480 -640 514 -402 640 -640 416 -500 333 -640 427 -640 424 -640 480 -640 427 -640 427 -640 427 -640 480 -500 375 -640 427 -640 480 -500 366 -360 480 -640 426 -640 444 -499 640 -612 612 -480 640 -465 640 -640 480 -480 640 -640 427 -360 480 -640 427 -426 640 -640 427 -640 474 -478 640 -375 500 -640 480 -500 398 -425 640 -500 332 -640 427 -500 331 -640 426 -500 373 -640 480 -640 480 -640 424 -480 360 -426 640 -500 333 -640 478 -426 640 -640 427 -640 427 -480 640 -640 640 -640 480 -640 428 -500 478 -427 640 -640 453 -640 480 -500 375 -612 612 -640 640 -640 427 -640 427 -640 427 -427 640 -640 482 -500 333 -640 369 -640 361 -424 640 -288 216 -640 424 -640 428 -400 500 -640 480 -640 427 -640 396 -640 429 -500 365 -375 500 -426 640 -443 640 -640 427 -640 480 -612 612 -427 640 -640 429 -640 428 -640 215 -396 640 -437 640 -640 426 -440 640 -640 480 -640 480 -640 480 -333 500 -500 332 -640 398 -640 480 -500 375 -480 640 -640 426 -640 480 -640 480 -640 428 -640 480 -640 424 -640 427 -640 480 -640 426 -500 333 -612 612 -640 480 -428 640 -427 640 -640 480 -238 640 -480 640 -640 428 -640 480 -398 500 -640 428 -634 640 -640 481 -480 640 -500 332 -640 230 -500 375 -640 480 -640 480 -640 480 -500 346 -640 427 -640 354 -640 480 -640 428 -500 332 -640 480 -640 427 -640 428 -612 612 -640 480 -480 640 -640 427 -640 466 -640 429 -640 426 -479 640 -640 504 -640 336 -415 640 -640 427 -640 428 -640 480 -640 427 -382 640 -640 480 -640 480 -332 500 -640 480 -640 428 -640 426 -640 427 -334 500 -640 473 -640 427 -640 480 -425 640 -640 425 -640 426 -640 383 -500 375 -640 480 -500 375 -469 640 -500 281 -640 480 -640 480 -640 425 -640 478 -640 464 -640 480 -640 428 -480 640 -640 539 -640 428 -640 427 -640 427 -480 640 -640 480 -640 480 -640 480 -480 640 -640 428 -640 427 -640 480 -640 427 -425 640 -500 346 -480 640 -500 293 -466 640 -427 640 -640 480 -640 427 -500 334 -640 640 -500 333 -480 640 -640 480 -444 500 -640 429 -500 333 -640 640 -438 640 -436 640 -480 640 -640 382 -640 480 -640 570 -480 640 -640 480 -612 612 -428 640 -640 480 -640 444 -640 480 -640 360 -640 391 -480 640 -640 426 -640 480 -640 480 -640 480 -640 425 -612 612 -375 500 -640 480 -640 480 -500 375 -500 333 -640 480 -500 375 -427 640 -640 480 -640 426 -640 400 -640 429 -640 428 -640 426 -500 375 -480 640 -400 500 -640 429 -480 640 -480 320 -640 360 -612 612 -640 360 -640 426 -640 426 -427 640 -640 425 -424 640 -640 427 -640 427 -640 426 -612 612 -427 640 -640 425 -640 480 -640 428 -640 425 -640 427 -640 427 -640 351 -640 427 -500 335 -381 500 -425 640 -640 358 -640 424 -500 375 -640 483 -640 480 -478 640 -353 640 -640 427 -640 360 -612 612 -612 612 -640 427 -640 480 -426 640 -640 427 -640 426 -480 640 -640 480 -640 427 -640 360 -640 480 -500 334 -640 480 -640 480 -640 441 -640 425 -640 512 -640 376 -640 360 -640 480 -500 454 -500 375 -640 480 -480 640 -445 640 -640 429 -640 425 -425 640 -640 425 -640 480 -500 357 -612 612 -480 640 -640 434 -640 427 -640 401 -332 500 -640 426 -640 427 -640 478 -500 334 -640 478 -640 480 -640 469 -640 426 -640 424 -640 480 -640 480 -640 480 -640 423 -640 427 -640 427 -640 480 -500 375 -640 428 -375 500 -640 427 -640 480 -640 480 -640 480 -473 615 -640 478 -640 480 -442 287 -480 640 -640 423 -640 427 -500 375 -640 480 -640 480 -640 480 -640 480 -640 436 -640 425 -500 375 -485 640 -640 427 -612 612 -480 640 -640 521 -612 612 -640 393 -640 456 -640 480 -500 375 -640 429 -640 480 -640 425 -640 480 -640 429 -640 427 -500 354 -480 640 -640 480 -640 420 -640 480 -480 640 -640 480 -500 375 -500 375 -375 500 -640 480 -640 475 -426 640 -640 426 -640 427 -640 480 -500 332 -640 427 -640 360 -480 640 -480 640 -640 428 -640 418 -476 640 -640 440 -375 500 -640 478 -640 432 -460 613 -640 480 -408 640 -640 424 -640 480 -407 500 -427 640 -640 427 -640 424 -640 640 -640 480 -640 486 -612 612 -640 403 -640 480 -640 425 -640 426 -640 402 -512 640 -640 640 -360 640 -427 640 -640 375 -640 480 -635 640 -640 480 -640 428 -640 421 -437 640 -640 426 -640 480 -500 356 -480 640 -640 480 -640 427 -640 427 -640 426 -640 480 -640 469 -640 426 -640 271 -640 389 -640 462 -640 464 -640 480 -640 434 -640 480 -640 480 -375 500 -640 152 -480 640 -640 640 -640 436 -480 640 -500 375 -453 640 -500 334 -426 640 -427 640 -375 500 -640 423 -640 427 -640 332 -640 427 -640 480 -640 426 -427 640 -426 640 -500 375 -640 428 -640 480 -449 640 -640 427 -640 411 -640 428 -640 428 -640 427 -501 640 -427 640 -500 375 -556 640 -640 480 -640 470 -612 612 -640 427 -427 640 -640 427 -466 640 -640 424 -640 425 -512 640 -640 480 -640 370 -640 480 -640 427 -640 480 -640 427 -480 640 -640 426 -640 426 -480 640 -640 480 -640 480 -375 500 -640 457 -640 427 -640 426 -427 640 -640 480 -640 480 -640 344 -640 528 -500 375 -640 485 -375 500 -640 413 -640 427 -640 480 -500 333 -640 427 -335 500 -580 440 -640 427 -640 480 -500 318 -640 427 -480 640 -640 429 -640 410 -456 640 -640 427 -640 480 -395 640 -426 640 -427 640 -427 640 -640 426 -427 640 -427 640 -640 427 -640 428 -640 427 -268 402 -640 462 -612 612 -640 480 -640 480 -640 383 -640 427 -640 409 -640 427 -640 427 -640 479 -640 427 -427 640 -640 480 -428 640 -640 427 -640 480 -427 640 -500 400 -426 640 -640 317 -640 480 -480 640 -500 375 -640 427 -480 640 -640 480 -480 640 -640 480 -640 483 -500 426 -612 612 -428 640 -640 426 -640 429 -490 488 -500 375 -640 480 -640 424 -640 480 -640 427 -640 427 -640 408 -640 403 -640 426 -640 556 -640 480 -612 612 -480 640 -480 640 -426 640 -480 640 -640 427 -375 500 -640 424 -640 427 -500 375 -480 640 -640 425 -640 480 -640 418 -640 428 -640 480 -640 479 -640 468 -539 640 -640 480 -491 500 -640 357 -427 640 -640 480 -480 640 -640 480 -426 640 -640 429 -480 640 -426 640 -640 427 -640 375 -500 499 -640 427 -480 640 -426 640 -500 333 -640 286 -640 480 -302 640 -427 640 -640 425 -500 333 -429 640 -640 483 -640 391 -640 355 -640 360 -480 640 -500 334 -640 467 -500 375 -640 480 -640 360 -640 428 -500 332 -640 427 -640 427 -640 426 -480 640 -465 640 -640 426 -640 423 -640 426 -640 480 -500 375 -640 640 -500 375 -500 375 -640 426 -640 418 -424 640 -478 640 -640 427 -640 429 -640 480 -640 476 -480 640 -640 511 -640 427 -427 640 -500 351 -640 427 -640 480 -640 480 -640 480 -480 640 -640 480 -640 374 -640 592 -640 480 -640 427 -375 500 -487 363 -640 461 -640 427 -640 425 -500 375 -640 480 -314 375 -640 427 -375 500 -640 480 -640 360 -639 640 -640 512 -640 453 -640 427 -640 480 -640 448 -375 500 -640 480 -426 640 -640 480 -500 375 -640 426 -640 480 -640 446 -640 383 -480 640 -640 457 -427 640 -640 464 -480 640 -640 480 -640 540 -640 426 -640 480 -640 480 -480 640 -640 428 -480 640 -612 612 -640 425 -480 360 -333 500 -640 440 -426 640 -612 612 -480 640 -640 427 -516 640 -640 480 -367 640 -480 640 -640 426 -480 640 -640 480 -640 480 -640 459 -640 480 -640 374 -640 459 -640 427 -480 640 -500 281 -640 427 -505 640 -640 480 -480 640 -640 480 -640 480 -421 640 -478 640 -640 428 -640 480 -640 480 -640 480 -640 436 -500 333 -640 500 -400 600 -640 427 -640 428 -375 500 -427 640 -596 640 -425 640 -640 427 -500 375 -500 220 -640 388 -480 640 -640 427 -640 360 -640 480 -640 640 -640 480 -640 610 -640 480 -425 640 -427 640 -640 512 -640 440 -640 480 -500 375 -500 249 -427 640 -640 480 -640 427 -424 640 -640 484 -482 640 -600 400 -640 423 -428 640 -640 427 -640 480 -480 542 -640 471 -640 640 -640 424 -640 427 -640 480 -640 425 -548 640 -640 455 -640 360 -429 640 -640 480 -333 500 -640 480 -488 640 -480 640 -640 444 -640 480 -640 481 -640 480 -427 640 -640 427 -425 640 -640 480 -612 612 -375 500 -640 483 -427 640 -500 335 -640 480 -640 426 -640 480 -377 500 -640 496 -640 427 -640 425 -640 426 -640 360 -640 427 -500 422 -640 426 -640 480 -640 480 -640 360 -500 375 -480 640 -480 640 -480 640 -612 612 -374 500 -500 357 -640 338 -640 428 -640 480 -640 360 -640 238 -640 427 -640 481 -640 359 -640 427 -400 261 -640 434 -500 333 -640 427 -640 480 -500 400 -640 481 -640 427 -640 429 -375 500 -640 640 -332 500 -640 434 -640 426 -640 426 -478 640 -640 466 -640 427 -480 640 -427 640 -640 427 -640 427 -640 415 -640 427 -480 640 -640 480 -500 457 -640 480 -496 500 -500 375 -471 486 -500 375 -640 480 -480 640 -640 480 -640 480 -500 333 -427 640 -480 640 -396 640 -500 375 -363 500 -640 480 -480 640 -640 480 -500 330 -612 612 -580 640 -640 480 -640 640 -640 360 -640 478 -640 411 -500 333 -500 331 -640 480 -640 480 -427 640 -640 427 -500 375 -640 427 -500 374 -480 640 -640 427 -640 480 -640 427 -500 296 -640 480 -640 480 -335 500 -500 375 -427 640 -640 480 -640 632 -500 375 -640 551 -640 427 -640 480 -640 365 -640 425 -640 524 -640 480 -640 427 -640 426 -424 640 -640 427 -640 427 -427 640 -426 640 -640 351 -640 480 -640 480 -640 427 -427 640 -640 425 -640 512 -424 640 -640 488 -640 426 -640 480 -640 493 -480 640 -640 428 -425 640 -640 480 -640 480 -640 426 -640 427 -640 426 -500 375 -640 427 -640 426 -500 375 -640 480 -640 360 -500 375 -600 448 -640 428 -500 375 -429 640 -640 426 -640 424 -640 631 -640 427 -612 612 -640 384 -640 480 -640 361 -640 480 -427 640 -640 428 -640 427 -500 217 -640 503 -500 265 -640 427 -640 480 -500 375 -640 427 -500 333 -512 640 -640 320 -500 375 -480 640 -418 640 -640 480 -500 375 -500 400 -640 413 -640 426 -640 285 -480 640 -480 360 -640 425 -640 640 -612 612 -480 640 -640 640 -640 457 -640 427 -500 375 -640 424 -500 332 -599 640 -640 427 -398 640 -640 427 -640 360 -640 425 -480 640 -640 426 -640 480 -640 480 -640 428 -640 416 -640 425 -640 480 -640 480 -640 356 -486 640 -640 427 -640 414 -640 425 -640 480 -640 481 -640 464 -425 640 -427 640 -640 430 -640 445 -640 423 -480 640 -640 396 -433 640 -640 480 -640 480 -640 480 -640 427 -640 457 -376 500 -640 427 -640 480 -640 428 -640 360 -640 427 -640 480 -640 480 -640 447 -640 427 -424 640 -640 425 -640 425 -600 600 -511 640 -640 469 -640 480 -640 427 -480 640 -640 427 -640 480 -640 480 -640 427 -640 360 -640 480 -480 640 -612 612 -333 500 -640 347 -640 480 -500 333 -640 424 -640 480 -640 360 -640 480 -640 640 -480 640 -640 427 -640 480 -640 512 -612 612 -439 640 -640 425 -424 640 -500 334 -500 376 -475 640 -640 426 -640 479 -461 640 -640 431 -640 427 -480 640 -640 480 -427 640 -640 426 -640 478 -640 428 -640 480 -500 323 -480 640 -640 480 -480 640 -375 500 -640 480 -640 480 -640 480 -612 612 -640 427 -640 283 -640 427 -500 375 -640 480 -640 427 -480 640 -427 640 -640 427 -478 640 -512 640 -640 426 -640 640 -640 427 -640 480 -640 427 -480 640 -427 640 -640 427 -640 429 -427 640 -640 480 -640 423 -640 427 -500 375 -640 425 -640 480 -640 503 -500 375 -480 640 -640 426 -640 480 -640 550 -640 447 -640 428 -640 427 -480 640 -500 358 -640 427 -640 514 -500 334 -640 480 -640 359 -640 480 -480 640 -500 353 -427 640 -640 427 -480 640 -640 427 -640 480 -375 500 -491 640 -640 425 -640 480 -612 612 -640 427 -640 427 -332 500 -640 427 -640 428 -500 309 -612 612 -640 249 -480 640 -640 480 -358 640 -640 480 -478 640 -480 640 -640 425 -427 640 -640 512 -640 425 -640 480 -640 426 -612 612 -427 640 -427 640 -640 480 -480 640 -427 640 -640 384 -424 640 -428 640 -480 640 -480 640 -640 480 -640 427 -640 593 -640 480 -640 617 -640 360 -640 480 -640 438 -640 425 -640 422 -480 640 -500 375 -640 426 -640 427 -640 427 -640 480 -640 431 -640 425 -640 427 -640 427 -640 428 -640 424 -640 503 -640 480 -640 425 -640 427 -426 640 -428 640 -640 426 -640 361 -426 640 -375 500 -640 480 -500 375 -640 361 -640 640 -630 640 -480 640 -640 480 -480 640 -640 480 -640 427 -640 480 -530 640 -640 480 -640 428 -640 427 -500 325 -480 640 -433 640 -640 427 -640 452 -640 480 -640 480 -640 427 -640 480 -640 480 -640 480 -480 640 -640 480 -640 424 -640 426 -427 640 -640 480 -640 426 -640 414 -375 500 -640 428 -640 427 -480 640 -640 640 -640 480 -640 427 -640 427 -640 427 -500 375 -640 427 -640 480 -480 640 -500 390 -640 427 -617 640 -640 480 -640 480 -427 640 -500 375 -640 427 -640 454 -480 640 -640 427 -640 424 -640 426 -640 425 -500 333 -640 480 -640 268 -640 404 -480 640 -640 424 -640 427 -640 429 -640 361 -600 400 -640 426 -500 351 -640 480 -640 480 -640 424 -640 360 -427 640 -640 449 -640 480 -640 480 -640 427 -375 500 -640 427 -640 359 -640 471 -640 480 -500 327 -640 427 -427 640 -427 640 -612 612 -640 480 -640 429 -427 640 -427 640 -640 426 -640 426 -640 424 -480 640 -500 375 -428 640 -480 640 -640 599 -333 500 -640 427 -640 360 -612 612 -640 480 -640 594 -640 480 -480 640 -640 426 -640 427 -640 480 -500 376 -480 640 -500 375 -426 640 -640 426 -640 480 -640 360 -600 450 -612 612 -486 640 -640 480 -512 640 -427 640 -640 480 -480 640 -640 426 -489 640 -640 480 -475 355 -480 640 -375 500 -480 640 -426 640 -480 640 -640 361 -536 640 -500 375 -480 640 -375 500 -640 427 -640 640 -640 421 -500 473 -640 428 -369 640 -640 480 -375 500 -500 375 -640 480 -640 480 -640 480 -640 422 -640 425 -640 480 -640 480 -480 640 -640 427 -640 427 -640 425 -426 640 -640 427 -500 312 -640 263 -480 640 -640 480 -640 640 -375 500 -640 463 -640 480 -640 456 -640 480 -500 375 -640 425 -427 640 -640 426 -500 329 -640 480 -500 375 -640 427 -640 480 -640 427 -640 547 -640 426 -480 640 -640 427 -640 418 -640 328 -480 640 -640 480 -640 427 -500 255 -640 427 -480 640 -480 640 -640 409 -640 480 -428 640 -375 500 -500 333 -640 480 -606 640 -640 480 -640 434 -640 464 -640 429 -640 427 -480 640 -640 426 -640 369 -640 426 -640 366 -640 426 -640 480 -375 500 -500 375 -640 480 -640 426 -640 480 -640 480 -640 420 -395 640 -612 612 -640 480 -640 426 -480 640 -640 427 -500 375 -460 640 -640 412 -640 427 -640 480 -473 600 -640 640 -612 612 -640 480 -640 404 -640 480 -640 480 -640 526 -500 363 -640 414 -640 400 -640 427 -640 427 -640 427 -640 480 -640 480 -640 427 -640 515 -498 640 -640 472 -640 480 -480 640 -640 415 -333 500 -640 480 -640 461 -640 426 -640 406 -640 512 -428 640 -640 427 -640 480 -640 480 -640 628 -640 427 -427 640 -426 640 -640 427 -640 427 -640 480 -640 424 -554 640 -480 640 -640 415 -640 426 -480 640 -500 334 -500 375 -640 427 -640 466 -640 427 -640 428 -427 640 -640 428 -640 427 -640 480 -640 480 -640 360 -640 426 -640 480 -500 333 -500 356 -640 360 -640 480 -640 427 -480 640 -640 480 -640 592 -612 612 -640 480 -640 479 -640 466 -640 429 -640 480 -612 612 -640 512 -479 640 -640 480 -640 480 -640 480 -640 427 -640 480 -500 349 -640 523 -640 480 -640 480 -640 483 -640 428 -399 500 -500 375 -640 427 -640 381 -640 480 -640 427 -640 426 -640 393 -640 426 -565 640 -480 640 -640 426 -480 640 -480 640 -454 640 -573 640 -640 480 -640 427 -480 640 -640 427 -640 480 -497 500 -640 427 -640 360 -500 375 -640 427 -640 425 -480 640 -640 428 -426 640 -500 491 -480 640 -374 500 -640 480 -640 425 -360 480 -640 480 -612 612 -640 480 -640 349 -375 500 -640 425 -640 360 -640 427 -640 427 -428 640 -640 480 -425 640 -375 500 -640 359 -640 480 -500 375 -427 640 -640 429 -640 480 -640 480 -640 480 -640 470 -434 640 -500 375 -640 425 -640 305 -640 427 -640 480 -426 640 -360 640 -640 480 -375 500 -480 640 -478 640 -640 480 -595 640 -640 428 -640 480 -480 640 -640 480 -500 281 -640 480 -500 333 -640 427 -640 428 -500 191 -409 640 -640 480 -425 640 -640 512 -640 480 -640 426 -640 427 -640 424 -640 427 -640 427 -640 480 -640 480 -640 476 -640 536 -640 480 -640 480 -640 480 -500 375 -640 427 -640 480 -500 500 -640 480 -640 340 -640 480 -640 480 -426 640 -640 473 -500 333 -640 480 -640 470 -640 427 -640 502 -640 426 -640 298 -640 480 -480 640 -640 480 -640 480 -640 480 -640 426 -612 612 -500 375 -640 429 -500 338 -500 375 -640 480 -500 375 -492 640 -640 427 -640 429 -640 599 -640 480 -338 450 -640 480 -640 480 -640 359 -500 366 -640 424 -428 640 -640 480 -640 427 -640 480 -500 333 -500 375 -640 425 -480 640 -426 640 -640 346 -640 480 -640 480 -640 480 -612 612 -428 640 -640 427 -399 640 -356 500 -427 640 -640 480 -640 480 -640 480 -640 640 -640 480 -640 441 -640 480 -500 375 -480 640 -612 612 -500 375 -640 441 -640 427 -640 427 -640 427 -427 640 -640 424 -480 640 -640 427 -500 392 -640 427 -427 640 -640 512 -640 480 -486 640 -640 480 -640 453 -640 425 -640 480 -640 428 -479 640 -640 480 -640 480 -375 500 -480 640 -640 427 -490 640 -480 640 -640 424 -427 640 -640 426 -640 426 -333 500 -375 500 -427 640 -640 424 -480 640 -500 333 -640 426 -640 480 -640 471 -632 640 -640 480 -640 421 -640 480 -640 352 -640 427 -480 640 -640 426 -640 480 -640 459 -640 480 -640 427 -427 640 -640 480 -640 443 -640 428 -640 480 -640 480 -485 640 -427 640 -640 427 -640 424 -640 640 -640 480 -640 427 -640 427 -640 406 -640 493 -640 480 -612 612 -500 375 -640 466 -640 422 -640 434 -640 428 -640 427 -640 427 -640 480 -640 425 -454 640 -640 338 -640 427 -500 334 -640 363 -640 426 -457 640 -640 427 -640 478 -428 640 -500 375 -640 480 -360 640 -640 427 -640 427 -480 640 -640 480 -640 424 -640 360 -640 414 -640 437 -640 480 -640 428 -500 375 -480 640 -480 640 -427 640 -448 300 -486 640 -500 375 -500 400 -640 449 -640 415 -427 640 -640 428 -640 480 -640 480 -427 640 -500 333 -500 341 -500 375 -500 375 -640 480 -640 427 -640 512 -640 427 -480 640 -640 480 -500 334 -640 427 -640 424 -640 426 -640 427 -480 640 -480 640 -640 426 -640 427 -640 480 -640 429 -480 640 -640 480 -640 427 -612 612 -500 333 -640 427 -612 612 -500 375 -640 427 -426 640 -640 428 -640 480 -550 640 -500 375 -334 500 -427 640 -640 480 -640 480 -463 640 -367 500 -640 427 -640 438 -500 331 -612 612 -640 480 -500 291 -600 400 -640 427 -427 640 -640 480 -640 480 -375 500 -640 428 -640 427 -500 176 -640 427 -640 425 -640 597 -640 427 -640 480 -480 640 -640 640 -640 480 -425 640 -500 375 -456 640 -640 427 -640 426 -640 519 -640 411 -375 500 -640 427 -428 640 -428 640 -640 463 -640 561 -640 361 -427 640 -640 480 -640 426 -640 480 -522 640 -640 512 -640 480 -640 480 -640 508 -640 480 -640 427 -439 640 -640 360 -640 499 -640 479 -640 480 -640 640 -640 427 -640 480 -640 427 -425 640 -375 500 -500 357 -500 375 -418 640 -640 425 -386 500 -640 426 -640 480 -640 438 -640 480 -640 429 -640 480 -500 332 -427 640 -640 424 -293 500 -425 640 -612 612 -640 546 -640 481 -640 433 -612 612 -640 480 -640 489 -640 480 -480 640 -640 480 -428 640 -328 480 -640 423 -640 426 -480 640 -640 480 -470 640 -640 425 -640 480 -640 480 -612 612 -640 480 -448 500 -575 640 -640 425 -640 480 -427 640 -640 480 -640 480 -640 480 -345 640 -640 427 -500 331 -427 640 -640 427 -640 480 -640 640 -640 478 -478 640 -640 426 -640 480 -640 480 -640 427 -640 480 -640 427 -640 640 -640 480 -640 425 -427 640 -500 375 -480 640 -500 375 -500 375 -629 640 -640 480 -640 426 -640 480 -640 427 -640 426 -480 640 -640 425 -500 375 -640 480 -640 480 -480 640 -640 426 -640 425 -640 427 -426 640 -480 640 -424 640 -640 406 -640 272 -640 480 -640 480 -424 640 -427 640 -640 480 -440 640 -375 500 -640 426 -429 640 -383 640 -640 480 -612 612 -640 426 -640 480 -640 428 -640 480 -640 480 -640 425 -640 480 -428 640 -427 640 -640 480 -640 480 -640 480 -640 427 -640 425 -640 424 -640 480 -640 430 -640 480 -640 359 -640 480 -499 500 -640 480 -640 480 -640 478 -640 360 -640 427 -640 512 -640 415 -640 480 -640 480 -612 612 -640 214 -640 426 -640 481 -640 427 -459 640 -640 427 -480 640 -480 640 -640 480 -430 640 -640 480 -640 426 -640 480 -478 640 -640 423 -640 480 -640 480 -506 640 -640 480 -640 427 -383 640 -640 425 -640 427 -500 375 -335 500 -640 480 -199 640 -640 428 -640 428 -640 480 -640 480 -480 640 -640 425 -500 375 -640 426 -500 500 -640 480 -640 427 -640 480 -640 572 -640 427 -640 424 -640 438 -500 500 -640 427 -640 423 -640 480 -640 220 -640 428 -480 640 -640 480 -640 429 -375 500 -333 500 -640 480 -640 400 -640 426 -640 429 -640 480 -640 480 -640 426 -640 428 -500 375 -640 480 -427 640 -480 640 -375 500 -500 357 -480 640 -352 640 -640 473 -640 480 -640 480 -640 427 -640 454 -640 427 -640 529 -640 480 -640 427 -640 640 -640 480 -640 352 -640 320 -640 543 -640 558 -640 480 -640 426 -640 426 -500 375 -480 640 -640 480 -640 480 -500 375 -640 427 -640 424 -500 333 -640 478 -640 427 -640 480 -640 428 -640 480 -640 428 -640 427 -500 375 -640 480 -640 425 -480 640 -435 640 -640 428 -640 379 -640 480 -640 272 -427 640 -640 426 -640 424 -640 428 -500 375 -640 480 -640 428 -640 410 -640 480 -640 426 -341 500 -640 427 -640 427 -424 640 -640 595 -640 480 -640 427 -640 425 -640 324 -640 427 -640 425 -640 480 -480 640 -480 640 -500 500 -640 427 -640 413 -640 427 -640 426 -640 428 -640 480 -640 444 -448 336 -640 426 -445 500 -500 375 -480 640 -640 427 -640 493 -500 334 -338 500 -480 640 -480 640 -640 480 -640 480 -640 640 -640 390 -640 480 -640 398 -640 504 -640 480 -640 534 -480 640 -640 480 -640 480 -640 480 -640 480 -640 427 -425 640 -375 500 -640 426 -640 430 -640 597 -500 375 -640 480 -640 474 -640 640 -500 333 -640 426 -640 428 -640 480 -640 436 -640 458 -480 640 -480 640 -426 640 -428 640 -500 345 -640 360 -640 360 -640 480 -375 500 -640 427 -500 333 -480 640 -640 480 -425 640 -640 478 -558 640 -640 410 -640 425 -428 640 -640 426 -480 640 -640 427 -471 640 -640 469 -640 427 -640 480 -640 480 -640 480 -375 500 -429 640 -640 480 -369 336 -640 443 -480 640 -640 478 -333 500 -640 428 -640 481 -640 427 -640 480 -640 428 -640 480 -640 482 -375 500 -640 512 -640 480 -640 480 -640 426 -640 640 -640 480 -640 438 -640 480 -640 427 -531 640 -480 640 -640 478 -640 425 -640 425 -640 427 -640 426 -640 431 -612 612 -411 640 -500 375 -640 427 -640 498 -640 480 -640 420 -500 376 -427 640 -640 425 -431 640 -521 640 -640 428 -480 640 -375 500 -640 427 -640 480 -640 427 -500 375 -480 640 -541 640 -640 480 -640 432 -500 364 -640 480 -500 333 -504 378 -523 640 -640 489 -640 360 -640 480 -480 640 -640 427 -640 427 -480 640 -640 427 -640 427 -500 333 -640 480 -640 427 -640 400 -640 426 -640 480 -640 425 -425 640 -640 480 -427 640 -640 541 -640 491 -640 426 -480 640 -480 640 -564 640 -640 478 -424 640 -335 500 -500 377 -640 426 -640 428 -640 430 -640 478 -640 429 -640 427 -332 500 -361 640 -640 457 -640 480 -640 427 -640 427 -640 361 -640 480 -640 480 -640 427 -480 640 -640 428 -640 424 -640 426 -480 640 -426 640 -640 426 -640 592 -640 480 -640 480 -640 480 -480 640 -640 423 -640 480 -640 480 -383 640 -500 375 -640 489 -640 480 -500 375 -640 480 -500 333 -480 640 -640 363 -427 640 -640 480 -640 426 -640 479 -427 640 -640 435 -333 500 -640 426 -640 427 -640 478 -640 441 -640 480 -480 640 -640 427 -427 640 -640 640 -500 376 -427 640 -640 426 -640 426 -640 424 -640 459 -640 457 -640 437 -640 480 -640 480 -640 399 -640 480 -480 640 -640 480 -640 480 -640 393 -375 500 -427 640 -640 480 -640 427 -640 480 -640 427 -500 375 -480 640 -480 640 -640 425 -500 387 -640 429 -640 480 -478 640 -480 640 -640 426 -500 333 -500 375 -640 480 -640 429 -640 480 -426 640 -427 640 -480 640 -500 332 -640 480 -480 640 -640 426 -640 432 -486 640 -428 640 -640 429 -640 459 -393 640 -640 425 -427 640 -640 428 -548 640 -640 411 -489 500 -640 427 -640 414 -640 427 -480 640 -500 344 -480 640 -640 503 -428 640 -500 375 -500 375 -640 444 -640 427 -500 375 -640 424 -456 640 -612 612 -375 500 -427 640 -500 333 -640 480 -640 480 -640 480 -640 480 -640 425 -640 512 -582 640 -480 640 -640 480 -640 515 -500 369 -640 428 -640 480 -478 640 -640 427 -500 332 -577 640 -500 375 -444 640 -640 453 -640 360 -640 633 -640 383 -640 480 -640 427 -640 406 -500 357 -480 640 -640 424 -640 480 -640 480 -579 640 -640 480 -640 480 -640 427 -450 338 -640 480 -640 356 -514 640 -425 567 -640 480 -600 400 -427 640 -640 431 -640 480 -640 426 -640 480 -640 426 -612 612 -640 480 -480 640 -468 640 -640 480 -640 443 -640 427 -425 640 -640 519 -480 640 -333 500 -427 640 -640 427 -428 640 -640 425 -640 425 -640 480 -640 480 -640 480 -500 375 -640 425 -480 640 -640 491 -640 486 -480 640 -500 375 -640 427 -640 428 -640 308 -640 365 -479 640 -500 333 -512 640 -640 480 -640 480 -640 480 -640 361 -640 427 -640 480 -554 640 -500 332 -640 427 -640 425 -640 512 -640 480 -500 375 -375 500 -640 448 -640 426 -305 480 -612 612 -375 500 -640 452 -640 425 -640 480 -640 427 -640 428 -640 426 -500 332 -640 425 -640 360 -612 612 -480 640 -640 429 -428 640 -500 375 -640 413 -640 480 -640 427 -500 375 -476 640 -640 480 -640 480 -640 427 -640 480 -345 500 -500 375 -480 640 -640 427 -640 427 -640 360 -392 640 -500 375 -640 427 -574 640 -640 428 -640 427 -640 438 -500 375 -640 424 -480 640 -640 427 -640 427 -500 375 -640 427 -640 425 -640 425 -480 640 -640 477 -640 480 -640 424 -640 494 -640 424 -333 500 -453 640 -500 375 -610 407 -612 612 -640 428 -426 640 -375 500 -640 480 -640 427 -425 640 -640 427 -640 640 -449 401 -640 426 -427 640 -640 429 -640 428 -600 400 -640 640 -640 464 -500 375 -640 427 -640 427 -640 480 -640 360 -480 640 -640 425 -525 525 -426 640 -640 427 -500 375 -640 427 -640 427 -425 640 -480 640 -640 573 -630 450 -640 480 -612 612 -640 480 -480 640 -640 506 -640 425 -640 405 -360 640 -640 480 -640 622 -640 425 -375 500 -640 427 -612 612 -640 457 -568 640 -640 480 -640 427 -640 426 -480 640 -427 640 -640 427 -640 428 -640 400 -640 480 -480 640 -640 428 -480 640 -480 640 -480 640 -599 640 -640 480 -640 480 -640 426 -640 478 -640 480 -640 427 -640 425 -375 500 -640 480 -375 500 -607 640 -375 500 -640 480 -640 434 -638 640 -493 500 -640 480 -640 506 -640 427 -640 427 -463 640 -640 360 -640 427 -640 619 -640 484 -375 500 -640 480 -538 640 -500 333 -640 429 -500 375 -500 488 -640 428 -640 427 -438 640 -640 480 -640 393 -640 427 -640 480 -500 330 -640 572 -500 366 -640 480 -640 425 -640 424 -640 478 -500 381 -640 427 -640 480 -640 399 -640 499 -640 426 -640 402 -375 500 -479 640 -500 335 -640 428 -640 428 -500 375 -640 480 -500 341 -640 483 -640 361 -424 640 -640 480 -640 427 -640 483 -640 427 -640 424 -640 480 -640 424 -480 640 -640 640 -427 640 -400 300 -640 480 -375 500 -640 480 -640 429 -500 332 -323 486 -640 480 -640 273 -640 427 -640 466 -640 506 -640 463 -640 480 -640 480 -640 640 -427 640 -640 480 -426 640 -640 480 -640 456 -480 640 -640 480 -640 480 -500 376 -500 375 -640 480 -480 640 -640 383 -640 480 -640 480 -420 640 -640 480 -640 427 -374 500 -640 471 -612 612 -640 480 -640 427 -640 480 -500 375 -640 480 -640 480 -640 427 -640 452 -640 402 -640 352 -640 427 -500 375 -640 480 -375 500 -640 640 -640 464 -427 640 -500 296 -376 500 -640 544 -480 640 -640 480 -500 332 -640 426 -640 426 -640 463 -640 426 -640 466 -640 480 -371 500 -500 640 -500 375 -333 500 -640 480 -500 333 -240 193 -480 640 -426 640 -640 424 -640 480 -640 480 -480 640 -571 640 -480 640 -640 640 -640 480 -375 500 -640 427 -428 640 -640 472 -640 428 -640 480 -377 500 -480 640 -640 426 -500 333 -480 640 -640 360 -640 478 -431 640 -536 640 -640 426 -640 424 -612 612 -480 640 -427 640 -640 480 -640 480 -640 427 -427 640 -425 640 -640 427 -500 375 -436 640 -640 427 -640 437 -333 500 -480 640 -612 612 -559 640 -640 427 -640 426 -640 480 -640 400 -640 406 -640 358 -640 424 -500 315 -640 426 -640 480 -640 427 -640 480 -640 424 -427 640 -398 500 -640 480 -500 313 -640 360 -640 480 -640 360 -640 480 -640 427 -640 426 -480 640 -640 456 -500 346 -500 475 -640 427 -640 427 -640 414 -428 640 -640 428 -428 640 -500 332 -426 640 -640 427 -480 640 -640 480 -640 480 -500 375 -500 375 -640 307 -640 480 -480 640 -640 472 -640 426 -426 640 -640 428 -427 640 -480 640 -480 640 -340 500 -640 480 -640 428 -640 502 -640 480 -640 457 -640 552 -640 359 -640 428 -500 375 -640 480 -480 640 -500 310 -524 640 -640 427 -640 427 -640 480 -500 375 -478 640 -640 480 -426 640 -640 433 -375 500 -640 616 -640 428 -640 480 -640 480 -500 334 -427 640 -640 429 -640 427 -640 480 -640 480 -640 480 -640 427 -640 480 -573 640 -427 640 -640 480 -640 427 -500 375 -640 480 -500 373 -478 640 -640 429 -371 500 -480 640 -640 440 -640 425 -640 480 -500 375 -427 640 -500 332 -427 640 -640 480 -334 500 -640 427 -640 427 -640 480 -428 640 -375 500 -640 427 -640 383 -427 640 -500 333 -640 427 -500 375 -427 640 -640 480 -640 425 -640 427 -640 427 -640 427 -640 358 -500 375 -640 427 -640 480 -640 480 -478 640 -480 640 -640 360 -640 480 -640 427 -480 640 -333 500 -640 427 -640 512 -640 480 -500 334 -480 640 -640 427 -583 640 -480 640 -640 480 -640 426 -640 427 -640 512 -480 640 -640 427 -640 480 -640 625 -462 640 -640 480 -640 480 -640 339 -640 427 -500 341 -640 427 -640 462 -500 375 -640 427 -500 375 -375 500 -640 427 -640 478 -640 480 -435 640 -640 426 -640 427 -427 640 -640 448 -640 426 -500 375 -640 426 -640 480 -640 427 -375 500 -640 427 -500 375 -488 640 -640 480 -640 426 -640 640 -480 640 -320 240 -640 483 -640 426 -640 489 -640 426 -640 359 -473 500 -640 480 -640 433 -612 612 -640 428 -640 457 -500 375 -413 500 -640 474 -640 458 -427 640 -375 500 -421 640 -640 427 -476 640 -568 640 -640 426 -640 425 -424 640 -500 324 -640 480 -640 427 -640 426 -500 375 -426 640 -640 480 -640 427 -375 500 -640 426 -640 640 -640 425 -640 480 -640 480 -640 480 -640 427 -612 612 -640 413 -640 480 -500 333 -640 498 -640 427 -302 500 -640 354 -424 640 -427 640 -480 640 -640 492 -428 640 -640 496 -640 428 -612 612 -480 640 -640 483 -640 480 -640 480 -640 480 -640 479 -640 427 -640 425 -640 426 -640 428 -500 375 -640 429 -640 429 -500 375 -480 640 -390 293 -480 640 -640 425 -444 640 -640 640 -500 375 -640 480 -640 427 -640 427 -500 499 -500 334 -640 480 -414 640 -500 375 -640 478 -486 640 -640 480 -478 640 -640 359 -640 480 -480 640 -640 480 -640 427 -640 480 -640 640 -500 500 -414 310 -640 428 -600 469 -640 459 -500 375 -640 480 -449 600 -640 427 -640 480 -480 640 -640 428 -640 426 -640 480 -426 640 -640 480 -640 424 -640 433 -640 480 -640 480 -640 434 -375 500 -640 480 -500 334 -640 428 -640 427 -427 640 -640 480 -640 480 -640 427 -640 427 -640 480 -640 480 -500 363 -640 480 -640 480 -480 640 -640 480 -640 480 -640 480 -480 640 -640 480 -480 640 -640 480 -640 427 -500 281 -640 427 -426 640 -478 640 -640 480 -640 480 -640 427 -640 427 -573 640 -640 297 -500 333 -640 428 -640 480 -640 640 -480 640 -640 494 -640 427 -640 480 -428 640 -640 427 -427 640 -640 480 -500 375 -640 427 -500 372 -432 640 -640 426 -427 640 -640 427 -429 640 -640 393 -478 640 -640 426 -640 426 -500 332 -499 500 -640 484 -640 640 -640 424 -375 500 -500 375 -640 428 -640 426 -427 640 -500 333 -640 426 -612 612 -640 480 -640 427 -640 360 -640 480 -640 480 -539 640 -615 310 -480 640 -640 640 -640 453 -427 640 -640 513 -640 427 -640 480 -640 480 -640 403 -612 612 -500 375 -640 480 -640 427 -640 640 -640 480 -640 427 -480 640 -640 480 -640 480 -640 483 -640 480 -640 427 -500 375 -640 480 -640 490 -612 612 -612 612 -500 375 -640 478 -480 640 -480 640 -640 480 -640 480 -426 640 -640 478 -640 480 -640 425 -640 512 -426 640 -640 383 -640 427 -640 480 -458 640 -640 510 -480 640 -640 478 -640 426 -640 480 -640 427 -640 480 -640 412 -640 480 -640 428 -640 480 -640 426 -640 480 -500 375 -640 392 -640 427 -640 427 -480 640 -600 400 -640 426 -640 479 -640 425 -640 480 -640 480 -486 640 -426 640 -640 427 -640 426 -640 425 -640 360 -640 426 -427 640 -334 500 -500 375 -640 427 -640 427 -640 480 -581 640 -640 480 -640 480 -480 640 -640 427 -640 480 -640 427 -640 425 -640 480 -480 640 -640 427 -640 422 -640 426 -640 480 -480 640 -640 480 -640 480 -640 427 -640 360 -640 480 -640 427 -426 640 -542 640 -640 480 -640 482 -640 428 -480 640 -640 424 -375 500 -480 640 -427 640 -640 480 -640 480 -640 427 -640 427 -640 427 -427 640 -500 375 -480 640 -640 480 -375 500 -640 427 -640 480 -640 495 -640 409 -640 427 -640 480 -640 425 -640 361 -375 500 -480 640 -480 640 -500 500 -640 361 -480 640 -500 332 -640 427 -500 375 -480 640 -640 388 -500 375 -640 366 -640 480 -426 640 -640 428 -640 427 -640 428 -424 640 -500 375 -612 612 -640 480 -640 512 -640 427 -640 428 -480 640 -640 425 -640 480 -640 434 -640 451 -500 334 -640 430 -500 375 -640 480 -640 516 -640 480 -427 640 -480 640 -640 480 -640 425 -640 480 -640 480 -640 427 -640 427 -640 427 -640 480 -640 480 -640 381 -640 480 -640 401 -500 335 -640 361 -640 425 -429 640 -480 640 -512 640 -427 640 -640 640 -480 640 -500 375 -640 427 -480 640 -640 480 -640 429 -375 500 -640 506 -428 640 -640 427 -640 480 -640 577 -500 375 -640 559 -640 360 -480 640 -640 427 -612 612 -640 428 -640 512 -480 640 -640 424 -511 640 -500 375 -480 640 -640 429 -640 480 -640 640 -500 375 -640 426 -640 427 -640 481 -640 396 -640 426 -640 480 -500 375 -500 333 -480 640 -454 640 -333 500 -640 480 -640 447 -640 480 -640 427 -640 480 -640 480 -640 427 -640 200 -500 375 -640 480 -640 480 -640 427 -640 425 -640 427 -640 478 -426 640 -640 427 -357 500 -640 424 -640 480 -640 425 -640 426 -640 426 -640 480 -500 375 -480 640 -640 414 -500 346 -640 427 -478 640 -640 349 -640 427 -640 427 -640 638 -640 427 -512 640 -640 378 -640 425 -640 425 -500 375 -375 500 -640 425 -640 427 -640 480 -640 395 -640 348 -640 480 -640 480 -427 640 -500 375 -640 426 -500 340 -375 500 -640 480 -640 480 -640 480 -426 640 -480 640 -326 640 -640 427 -640 483 -640 424 -640 515 -640 425 -640 391 -480 640 -640 360 -640 427 -612 612 -640 424 -465 640 -480 640 -640 426 -494 500 -640 478 -640 427 -640 427 -640 427 -480 640 -640 558 -640 480 -500 334 -640 429 -640 480 -640 426 -640 506 -640 480 -640 640 -640 480 -640 480 -500 375 -640 427 -640 426 -640 426 -612 612 -640 428 -640 480 -640 480 -640 426 -427 640 -640 428 -640 427 -640 427 -640 480 -640 427 -640 480 -640 427 -612 612 -640 480 -640 480 -425 640 -640 427 -640 424 -640 427 -480 640 -640 480 -640 425 -500 332 -640 427 -640 640 -375 500 -427 640 -500 375 -640 480 -640 427 -500 334 -427 640 -424 640 -427 640 -640 339 -640 480 -640 427 -500 333 -481 640 -200 150 -640 480 -425 640 -640 480 -428 640 -640 480 -640 512 -600 400 -640 428 -640 480 -640 359 -428 640 -612 612 -640 480 -640 425 -640 480 -500 334 -429 640 -640 425 -640 427 -419 640 -640 480 -426 640 -612 612 -640 427 -640 427 -640 458 -375 500 -428 640 -500 375 -640 427 -480 640 -640 480 -480 640 -640 480 -500 375 -640 427 -480 640 -640 457 -500 333 -640 480 -640 483 -640 294 -640 427 -375 500 -640 480 -640 426 -640 427 -640 427 -640 426 -640 208 -640 424 -290 640 -640 480 -640 480 -640 480 -400 600 -640 424 -640 426 -640 480 -426 640 -640 426 -640 480 -427 640 -427 640 -640 480 -480 640 -640 441 -366 640 -640 427 -640 426 -500 375 -480 640 -375 500 -640 449 -640 480 -640 427 -457 640 -640 428 -480 640 -430 640 -480 640 -600 450 -640 453 -640 480 -640 238 -640 480 -640 428 -640 424 -500 375 -640 185 -640 427 -335 500 -640 478 -640 427 -427 640 -500 333 -640 480 -428 640 -640 480 -640 427 -386 640 -640 457 -640 480 -640 433 -640 429 -640 427 -640 480 -640 478 -640 480 -612 612 -640 428 -640 323 -640 439 -640 480 -640 493 -640 480 -427 640 -640 427 -640 455 -640 480 -640 425 -640 427 -375 500 -500 333 -640 480 -640 480 -640 480 -427 640 -480 640 -640 436 -375 500 -427 640 -640 427 -426 640 -457 640 -640 359 -640 480 -640 583 -640 424 -500 375 -441 640 -640 425 -640 426 -640 360 -427 640 -640 441 -640 426 -640 480 -640 427 -612 612 -640 425 -640 425 -640 427 -640 427 -640 480 -360 237 -375 500 -480 640 -524 640 -640 408 -427 640 -612 612 -640 480 -428 640 -640 480 -640 480 -640 426 -500 357 -500 364 -500 375 -640 423 -640 480 -640 427 -612 612 -640 484 -640 423 -544 640 -640 427 -640 480 -500 375 -500 500 -425 640 -426 640 -500 333 -480 640 -640 427 -402 640 -640 424 -341 280 -640 427 -640 512 -640 480 -640 491 -480 640 -640 480 -500 375 -640 480 -640 400 -500 333 -426 640 -640 427 -640 480 -500 375 -500 400 -500 375 -375 500 -640 479 -640 406 -640 514 -427 640 -640 222 -500 375 -459 640 -480 640 -640 425 -500 375 -640 427 -640 539 -640 425 -640 448 -640 427 -426 640 -500 323 -640 327 -427 640 -359 640 -640 428 -640 426 -640 425 -425 640 -424 640 -500 379 -427 640 -640 427 -375 500 -640 480 -640 480 -640 468 -640 480 -427 640 -640 480 -640 480 -640 426 -640 428 -640 426 -640 426 -640 480 -640 480 -640 403 -332 500 -500 333 -426 640 -640 458 -480 640 -500 375 -446 640 -640 480 -640 480 -640 384 -500 375 -640 426 -640 478 -500 375 -640 479 -500 375 -500 311 -640 543 -640 427 -500 375 -640 412 -480 640 -480 640 -375 500 -640 427 -640 427 -480 640 -640 426 -640 424 -480 640 -640 451 -640 427 -640 640 -640 448 -640 480 -640 480 -640 427 -640 427 -640 512 -640 480 -480 640 -640 481 -640 417 -640 425 -500 375 -640 563 -640 427 -640 426 -640 427 -640 427 -640 459 -640 459 -640 480 -640 438 -429 640 -640 545 -640 426 -612 612 -640 480 -640 428 -640 424 -640 427 -635 640 -640 417 -640 427 -480 360 -500 375 -500 375 -640 417 -640 360 -427 640 -500 375 -480 640 -640 389 -640 480 -640 480 -640 443 -640 427 -640 427 -640 427 -640 442 -512 640 -640 480 -494 640 -640 427 -612 612 -640 427 -612 612 -500 500 -640 427 -640 427 -640 427 -640 424 -480 640 -640 429 -640 356 -640 442 -640 458 -640 434 -640 427 -640 427 -480 640 -488 640 -640 480 -640 452 -427 640 -640 428 -640 425 -500 375 -427 640 -640 426 -640 480 -428 640 -483 640 -640 480 -640 429 -640 428 -640 480 -640 412 -640 427 -500 375 -427 640 -500 473 -640 640 -640 480 -640 427 -640 480 -640 429 -640 427 -426 640 -424 640 -640 400 -640 479 -640 490 -640 480 -480 640 -640 480 -500 333 -640 457 -640 427 -640 480 -428 640 -640 480 -640 425 -500 375 -640 279 -500 228 -640 480 -640 480 -640 480 -500 500 -640 456 -640 536 -500 375 -640 427 -640 478 -426 640 -480 640 -480 640 -500 400 -640 480 -480 640 -640 351 -640 480 -640 480 -640 427 -640 427 -640 480 -612 612 -640 360 -640 360 -640 332 -640 480 -500 349 -500 333 -640 386 -382 500 -500 375 -480 640 -614 640 -640 418 -500 375 -640 428 -640 640 -640 359 -640 480 -640 464 -541 640 -500 375 -640 426 -640 480 -640 427 -640 613 -500 349 -640 425 -500 375 -640 480 -480 640 -630 640 -640 427 -640 480 -640 480 -640 480 -500 375 -400 600 -500 375 -640 457 -640 461 -640 480 -640 480 -640 337 -512 640 -640 425 -427 640 -640 443 -640 640 -612 612 -500 375 -640 480 -640 425 -640 480 -640 428 -427 640 -640 512 -375 500 -480 640 -640 480 -640 524 -640 640 -640 480 -640 428 -640 480 -428 640 -640 363 -640 480 -640 445 -428 640 -640 480 -640 257 -640 281 -640 426 -426 640 -640 480 -640 425 -500 375 -640 426 -427 640 -375 500 -640 427 -640 359 -640 423 -640 427 -640 426 -640 480 -480 640 -640 480 -640 483 -640 480 -640 427 -640 427 -640 425 -640 359 -640 429 -604 640 -640 427 -500 500 -640 360 -640 480 -640 456 -640 485 -500 290 -640 480 -640 480 -480 640 -640 480 -640 426 -640 489 -478 640 -640 427 -640 427 -640 480 -640 480 -484 640 -640 480 -433 640 -640 480 -612 612 -640 480 -640 480 -480 640 -480 500 -426 640 -640 457 -640 425 -427 640 -640 480 -426 640 -487 640 -640 425 -421 640 -500 328 -375 500 -640 480 -335 500 -640 427 -640 427 -640 571 -376 500 -612 612 -500 500 -640 243 -640 479 -640 480 -533 640 -333 500 -640 639 -425 640 -640 516 -640 427 -480 640 -612 612 -640 426 -640 480 -480 640 -427 640 -640 428 -500 314 -640 480 -640 427 -427 640 -640 480 -500 309 -640 480 -480 640 -640 479 -640 427 -640 480 -640 480 -600 450 -640 428 -640 480 -480 640 -640 426 -640 480 -640 480 -640 427 -640 388 -428 640 -426 640 -500 375 -640 427 -640 480 -640 396 -640 480 -640 480 -640 426 -640 427 -640 427 -640 480 -640 480 -640 400 -640 427 -640 277 -500 333 -640 480 -640 424 -640 480 -640 480 -640 379 -640 480 -479 640 -375 500 -640 427 -498 640 -640 427 -480 640 -480 640 -640 427 -640 480 -427 640 -480 640 -640 480 -640 316 -640 427 -500 375 -640 427 -640 427 -458 640 -500 333 -500 499 -620 441 -640 425 -640 480 -640 448 -500 331 -528 640 -640 425 -480 640 -640 427 -193 225 -640 381 -640 427 -640 427 -640 430 -640 482 -640 469 -640 386 -640 425 -427 640 -640 480 -640 640 -640 480 -640 481 -425 640 -375 500 -640 427 -500 332 -640 427 -640 480 -640 480 -640 393 -427 640 -480 640 -640 427 -640 427 -480 640 -640 480 -640 502 -640 425 -500 375 -500 205 -502 640 -426 640 -640 480 -640 480 -640 428 -640 480 -640 427 -640 480 -640 428 -499 500 -500 373 -480 640 -480 640 -640 427 -640 480 -640 480 -640 427 -640 426 -640 640 -640 424 -640 427 -500 335 -640 480 -640 360 -640 480 -640 428 -640 483 -640 427 -640 557 -640 426 -640 478 -426 640 -640 480 -640 427 -427 640 -640 480 -480 640 -640 423 -640 459 -427 640 -500 333 -640 427 -500 375 -640 399 -612 612 -640 480 -640 480 -640 480 -500 375 -640 480 -500 310 -640 480 -640 425 -500 269 -612 612 -640 360 -640 480 -640 419 -640 427 -500 332 -640 480 -375 500 -500 357 -480 640 -640 427 -152 205 -640 426 -500 375 -640 424 -427 640 -640 427 -640 427 -480 640 -640 427 -640 480 -640 442 -480 640 -427 640 -500 333 -632 640 -500 337 -640 428 -375 500 -436 640 -640 428 -500 333 -640 480 -480 640 -640 480 -640 480 -640 360 -640 480 -640 466 -480 640 -640 427 -360 480 -640 480 -640 427 -500 348 -480 640 -640 426 -457 640 -640 427 -640 480 -640 480 -480 640 -640 426 -640 427 -360 640 -640 606 -612 612 -640 480 -640 480 -442 640 -640 427 -427 640 -640 428 -640 480 -640 480 -640 457 -612 612 -640 427 -500 375 -640 512 -640 480 -500 375 -640 428 -426 640 -640 480 -640 480 -640 480 -640 480 -640 480 -480 640 -640 459 -640 426 -480 640 -640 425 -550 365 -640 359 -640 480 -640 480 -640 480 -640 427 -640 427 -640 425 -640 415 -464 640 -424 640 -640 480 -428 640 -640 353 -640 426 -640 427 -640 461 -640 378 -640 427 -640 254 -640 424 -640 424 -380 640 -427 640 -640 427 -640 427 -500 333 -640 480 -640 430 -427 640 -640 480 -612 612 -334 500 -640 427 -640 433 -640 480 -500 375 -640 427 -640 313 -478 640 -640 481 -480 640 -640 427 -529 640 -640 480 -640 480 -478 640 -640 448 -640 640 -640 427 -640 496 -640 480 -640 428 -640 480 -640 391 -640 427 -640 590 -500 167 -640 505 -427 640 -640 480 -640 480 -612 612 -640 329 -640 425 -612 612 -640 478 -640 360 -427 640 -640 465 -640 634 -640 636 -640 429 -427 640 -640 427 -640 480 -640 427 -480 640 -640 427 -640 480 -640 480 -357 500 -492 640 -640 360 -612 612 -640 480 -427 640 -427 640 -480 640 -640 429 -500 375 -500 375 -600 445 -500 314 -640 480 -640 428 -500 374 -640 426 -480 640 -640 482 -640 425 -640 480 -640 430 -546 640 -640 427 -640 480 -640 480 -640 480 -640 480 -415 500 -640 473 -640 480 -500 352 -640 428 -612 612 -640 477 -640 480 -640 480 -503 640 -480 640 -640 427 -480 640 -500 375 -640 480 -564 640 -424 640 -427 640 -640 426 -640 500 -640 480 -640 321 -612 612 -640 480 -640 360 -640 537 -640 428 -500 375 -640 427 -500 332 -376 500 -631 640 -373 500 -427 640 -640 427 -640 425 -640 427 -428 640 -500 375 -500 332 -640 480 -640 480 -640 424 -333 500 -640 424 -640 471 -640 478 -500 333 -640 414 -640 427 -640 480 -426 640 -640 427 -427 640 -427 640 -640 424 -640 480 -640 320 -640 480 -640 477 -427 640 -640 427 -640 457 -640 640 -612 612 -480 640 -500 332 -640 384 -427 640 -640 427 -640 433 -640 395 -640 480 -350 400 -500 375 -426 640 -640 427 -600 487 -500 375 -427 640 -427 640 -640 270 -640 480 -480 640 -375 500 -500 375 -640 479 -640 480 -375 500 -640 480 -640 354 -509 640 -480 640 -640 434 -487 640 -640 427 -480 640 -640 426 -640 428 -500 333 -640 427 -640 425 -500 375 -500 375 -640 427 -640 429 -640 458 -480 640 -477 640 -640 428 -640 427 -480 640 -640 427 -640 427 -640 480 -640 359 -640 391 -480 640 -640 425 -427 640 -640 640 -640 425 -640 616 -640 480 -360 640 -640 480 -640 480 -500 375 -427 640 -498 640 -640 432 -457 640 -640 480 -640 480 -640 427 -640 361 -640 380 -640 480 -640 479 -640 480 -640 494 -640 427 -640 428 -480 640 -427 640 -640 427 -640 427 -640 480 -640 480 -500 375 -640 425 -640 486 -640 480 -640 427 -640 467 -640 480 -426 640 -640 427 -640 401 -640 427 -640 429 -426 640 -640 480 -640 480 -480 640 -640 427 -640 413 -640 303 -640 427 -640 480 -640 441 -500 375 -334 500 -640 424 -640 426 -640 480 -640 426 -640 360 -427 640 -427 640 -500 371 -640 472 -640 314 -600 480 -427 640 -500 375 -480 640 -445 500 -640 480 -612 612 -482 294 -427 640 -640 427 -427 640 -640 425 -360 640 -640 480 -426 640 -539 640 -480 640 -500 375 -640 480 -493 640 -640 426 -426 640 -640 512 -640 364 -640 622 -500 375 -616 640 -640 425 -375 500 -640 359 -640 480 -640 480 -640 480 -640 426 -427 640 -640 449 -640 512 -640 425 -640 427 -640 425 -480 640 -480 640 -640 480 -640 480 -640 640 -640 438 -640 428 -640 346 -640 513 -480 640 -363 640 -424 640 -640 480 -640 480 -640 452 -640 512 -640 425 -500 375 -640 427 -640 427 -640 427 -640 427 -480 640 -640 451 -640 424 -640 478 -640 408 -640 427 -426 640 -640 348 -640 427 -640 360 -640 480 -640 469 -640 480 -640 480 -640 360 -500 375 -612 612 -500 375 -427 640 -640 425 -482 640 -640 480 -640 216 -640 480 -480 640 -640 427 -480 640 -640 478 -640 427 -640 426 -640 480 -640 480 -640 617 -640 427 -640 425 -640 466 -640 480 -640 480 -612 612 -427 640 -612 612 -640 383 -640 480 -426 640 -640 480 -500 375 -640 486 -640 640 -425 640 -612 612 -640 427 -640 438 -640 427 -640 426 -640 427 -480 640 -480 640 -427 640 -480 640 -640 480 -640 427 -612 612 -640 413 -640 480 -480 640 -500 486 -427 640 -640 427 -640 428 -640 426 -640 360 -640 427 -640 434 -418 640 -640 459 -640 481 -640 480 -612 612 -640 480 -640 480 -535 640 -640 480 -640 359 -480 640 -640 427 -640 404 -426 640 -640 480 -640 427 -640 478 -428 640 -640 427 -640 428 -640 427 -428 640 -640 568 -640 425 -428 640 -640 427 -640 480 -428 640 -640 426 -480 640 -500 375 -640 427 -640 480 -640 480 -640 424 -500 375 -640 512 -640 480 -480 640 -472 500 -448 640 -640 480 -640 427 -640 426 -640 427 -640 533 -640 480 -640 512 -640 480 -640 382 -640 424 -640 428 -500 375 -640 426 -640 428 -640 480 -640 427 -640 360 -480 640 -427 640 -640 480 -640 480 -640 426 -640 403 -640 480 -640 426 -640 480 -500 375 -640 372 -640 480 -640 480 -640 480 -500 375 -640 480 -361 500 -500 375 -640 480 -640 427 -640 428 -640 427 -640 480 -426 640 -640 480 -640 427 -640 424 -640 493 -640 426 -500 333 -640 448 -605 640 -500 333 -640 480 -500 500 -640 427 -426 640 -640 625 -640 419 -640 480 -640 478 -640 427 -640 427 -640 480 -640 427 -640 360 -640 427 -640 427 -443 460 -640 480 -500 333 -479 640 -640 381 -500 375 -640 480 -640 480 -360 640 -640 409 -427 640 -640 480 -640 480 -640 426 -640 425 -640 480 -640 480 -640 480 -425 640 -480 640 -640 427 -640 427 -640 480 -640 478 -640 426 -375 500 -640 427 -424 640 -640 427 -612 612 -640 253 -427 640 -425 640 -640 601 -500 366 -360 640 -425 640 -612 612 -640 425 -640 536 -424 640 -500 341 -500 339 -427 640 -640 427 -640 361 -640 480 -640 480 -290 359 -640 482 -427 640 -640 427 -640 427 -427 640 -640 480 -451 640 -640 480 -640 427 -640 427 -640 480 -480 640 -640 512 -640 480 -426 640 -640 360 -640 427 -500 375 -640 480 -612 612 -640 480 -640 400 -640 383 -640 480 -640 640 -500 333 -500 375 -375 500 -640 480 -640 481 -612 612 -640 304 -640 480 -640 480 -480 640 -640 480 -640 427 -500 383 -640 480 -500 383 -640 477 -612 612 -640 480 -426 640 -640 425 -640 480 -612 612 -480 640 -375 500 -640 480 -612 612 -640 428 -500 375 -640 454 -640 480 -640 457 -640 481 -640 359 -612 612 -427 640 -375 500 -375 500 -640 425 -640 404 -612 612 -427 640 -500 334 -640 383 -640 480 -400 300 -640 479 -457 640 -640 432 -333 500 -640 480 -640 480 -427 640 -375 500 -480 640 -640 427 -640 427 -640 425 -640 428 -500 375 -640 427 -469 640 -640 480 -640 480 -640 480 -427 640 -375 500 -333 500 -609 640 -640 427 -640 480 -612 612 -640 506 -373 500 -480 640 -640 480 -640 512 -500 380 -640 480 -612 612 -612 612 -640 427 -640 391 -640 469 -640 481 -640 434 -640 427 -640 480 -375 500 -640 427 -640 325 -640 595 -640 538 -640 512 -640 427 -640 480 -450 300 -640 427 -640 427 -500 375 -640 426 -640 426 -640 480 -640 424 -640 427 -640 482 -640 480 -640 427 -640 513 -640 427 -480 640 -480 640 -427 640 -370 640 -640 480 -640 426 -640 480 -640 427 -480 640 -640 427 -640 425 -640 427 -640 480 -612 612 -335 500 -640 412 -480 640 -480 640 -439 640 -500 382 -640 616 -640 480 -427 640 -640 427 -640 427 -500 189 -438 640 -480 640 -640 426 -640 480 -640 480 -640 427 -500 375 -500 333 -530 640 -640 424 -480 640 -426 640 -426 640 -640 428 -640 426 -640 425 -375 500 -640 424 -500 333 -427 640 -427 640 -435 640 -640 483 -640 315 -640 427 -427 640 -640 360 -640 512 -640 383 -375 500 -478 640 -640 340 -640 426 -640 428 -640 427 -640 480 -250 312 -640 480 -640 427 -640 431 -640 425 -640 426 -640 428 -640 490 -500 375 -640 427 -640 480 -480 640 -640 427 -427 640 -640 427 -480 640 -612 612 -512 640 -640 428 -500 357 -640 480 -640 480 -640 427 -427 640 -640 427 -640 427 -640 427 -640 425 -640 480 -640 480 -612 612 -640 480 -428 640 -500 375 -640 537 -500 333 -640 480 -383 640 -500 375 -370 277 -640 427 -640 404 -640 451 -640 483 -500 375 -640 426 -480 640 -640 427 -480 640 -375 500 -640 427 -640 480 -640 425 -640 366 -428 640 -640 452 -640 426 -425 640 -640 361 -640 381 -640 428 -500 375 -640 360 -426 640 -500 334 -640 427 -500 375 -640 424 -640 427 -500 375 -640 428 -375 500 -640 424 -480 640 -480 640 -375 500 -640 427 -640 480 -640 475 -427 640 -640 423 -640 427 -640 480 -480 640 -640 423 -354 640 -600 450 -480 640 -612 612 -640 427 -375 500 -640 421 -640 408 -480 640 -480 640 -500 375 -640 427 -640 480 -640 360 -640 480 -640 480 -640 640 -640 480 -378 640 -480 640 -375 500 -640 426 -640 423 -375 500 -640 426 -640 425 -500 375 -480 640 -360 640 -640 425 -422 640 -640 427 -640 480 -481 640 -427 640 -640 427 -640 214 -640 426 -500 281 -640 485 -640 425 -640 425 -640 480 -500 375 -640 427 -375 500 -640 480 -640 427 -427 640 -640 513 -640 480 -382 500 -640 428 -640 480 -640 480 -640 564 -640 427 -483 640 -500 321 -640 480 -500 333 -500 347 -480 640 -333 500 -640 427 -640 426 -612 612 -640 427 -640 480 -478 640 -640 427 -640 479 -640 478 -640 427 -640 427 -640 425 -640 457 -333 500 -632 640 -480 640 -640 428 -500 334 -640 363 -452 640 -640 480 -427 640 -640 425 -640 480 -500 486 -640 480 -426 640 -640 381 -426 640 -640 428 -640 481 -640 453 -375 500 -500 338 -640 427 -640 424 -640 480 -640 640 -640 480 -500 375 -640 326 -640 446 -640 427 -376 342 -640 427 -640 512 -500 375 -640 427 -480 640 -640 426 -640 426 -426 640 -640 427 -640 426 -640 427 -640 427 -640 360 -597 640 -640 427 -640 427 -640 480 -640 353 -640 447 -640 427 -368 500 -480 640 -640 425 -640 480 -500 332 -640 480 -640 480 -333 500 -640 426 -640 426 -640 426 -640 480 -500 375 -640 480 -640 427 -404 500 -640 480 -500 375 -640 400 -640 446 -640 233 -480 640 -427 640 -500 375 -640 425 -640 436 -640 480 -320 240 -640 480 -640 451 -640 405 -593 395 -427 640 -640 379 -640 480 -640 427 -432 640 -640 425 -640 427 -640 428 -640 480 -480 640 -500 375 -640 450 -640 480 -428 640 -426 640 -640 419 -375 500 -640 480 -640 427 -640 480 -640 456 -640 436 -500 500 -427 640 -640 427 -334 500 -640 566 -612 612 -640 445 -500 375 -480 640 -640 424 -640 480 -640 434 -640 427 -500 375 -640 480 -480 640 -500 333 -480 640 -640 425 -640 480 -640 480 -334 500 -640 480 -428 640 -640 480 -640 427 -480 320 -480 640 -640 355 -640 411 -500 375 -640 425 -461 615 -640 486 -480 640 -640 427 -640 480 -640 427 -640 373 -500 341 -640 427 -640 480 -640 427 -424 640 -640 480 -640 425 -640 480 -640 208 -640 543 -640 434 -640 480 -428 640 -500 375 -640 480 -640 480 -640 466 -500 375 -640 480 -500 384 -640 426 -640 427 -640 424 -640 480 -640 480 -500 500 -640 427 -480 640 -640 428 -640 427 -640 481 -500 439 -640 458 -640 426 -500 375 -640 425 -640 437 -640 469 -640 426 -640 427 -480 640 -640 480 -640 425 -640 427 -640 481 -640 428 -640 480 -640 426 -612 612 -640 480 -500 476 -500 416 -640 427 -640 450 -424 640 -640 480 -640 428 -640 426 -425 640 -640 479 -640 480 -640 427 -640 427 -426 640 -360 640 -640 425 -519 640 -640 427 -640 441 -640 640 -468 640 -375 500 -500 375 -640 397 -640 480 -427 640 -500 375 -427 640 -500 375 -640 449 -640 215 -640 480 -640 479 -640 480 -640 480 -640 509 -500 375 -427 640 -640 425 -640 428 -640 480 -640 480 -640 480 -640 638 -640 480 -640 480 -640 480 -640 348 -640 454 -640 430 -640 480 -427 640 -640 425 -640 480 -640 400 -426 640 -640 457 -640 427 -398 500 -640 480 -640 480 -427 640 -640 427 -480 640 -640 428 -640 480 -640 427 -640 427 -640 480 -500 313 -640 427 -332 500 -480 640 -640 480 -424 640 -640 480 -480 640 -480 640 -427 640 -423 640 -640 427 -428 640 -640 479 -640 480 -459 640 -640 480 -640 427 -640 480 -500 375 -640 426 -640 480 -640 427 -640 423 -640 480 -640 640 -426 640 -640 427 -500 375 -500 333 -640 428 -640 480 -640 426 -375 500 -640 427 -640 360 -640 481 -640 426 -500 431 -640 427 -640 480 -640 424 -640 399 -640 426 -640 452 -427 640 -334 500 -333 500 -314 500 -640 326 -349 640 -640 407 -526 640 -640 426 -434 640 -640 427 -426 640 -500 333 -640 425 -640 480 -640 480 -640 427 -640 436 -640 360 -482 484 -500 375 -640 480 -427 640 -500 375 -640 426 -500 334 -640 588 -427 640 -640 480 -640 425 -640 426 -640 480 -358 373 -344 500 -640 427 -561 640 -500 375 -426 640 -427 640 -640 480 -522 640 -640 480 -500 359 -640 640 -640 480 -640 480 -640 480 -475 640 -500 376 -640 427 -640 480 -640 411 -640 480 -640 486 -500 368 -500 375 -640 392 -640 429 -478 640 -640 480 -334 500 -640 428 -640 432 -612 612 -640 427 -640 480 -383 640 -640 480 -640 480 -539 640 -427 640 -640 480 -480 640 -640 424 -640 426 -640 426 -480 640 -500 375 -480 640 -640 360 -640 426 -640 426 -640 426 -640 427 -640 424 -640 383 -430 500 -640 480 -600 450 -500 375 -640 480 -640 427 -640 640 -640 426 -640 480 -640 480 -500 333 -426 640 -333 500 -640 480 -640 426 -500 332 -480 640 -640 480 -640 480 -426 640 -640 480 -500 375 -480 640 -500 208 -640 478 -612 612 -640 631 -640 480 -500 364 -640 640 -640 305 -449 640 -640 409 -640 426 -640 480 -640 480 -640 427 -640 427 -640 422 -426 640 -640 480 -640 428 -481 640 -500 375 -640 337 -640 480 -500 374 -640 480 -640 416 -500 375 -640 427 -640 427 -480 640 -427 640 -640 436 -640 480 -428 640 -426 640 -640 446 -640 592 -640 480 -640 360 -640 427 -640 480 -375 500 -640 427 -375 500 -333 500 -640 428 -427 640 -640 480 -500 375 -640 360 -600 400 -480 640 -500 331 -640 475 -640 427 -500 375 -640 427 -640 425 -426 640 -640 381 -640 427 -243 360 -480 640 -500 400 -640 480 -640 480 -640 359 -640 427 -640 426 -640 640 -640 427 -640 425 -640 454 -640 425 -640 427 -640 480 -439 640 -640 480 -640 480 -640 480 -639 640 -640 333 -640 480 -427 640 -640 480 -640 435 -640 480 -640 480 -640 478 -640 480 -640 445 -500 334 -640 480 -640 428 -640 427 -640 427 -500 375 -640 425 -640 429 -640 480 -640 427 -472 640 -640 480 -640 360 -640 424 -640 361 -640 480 -640 431 -640 426 -640 428 -640 480 -500 333 -640 427 -640 425 -640 425 -640 480 -486 640 -426 640 -640 480 -500 375 -480 640 -640 480 -427 640 -640 479 -640 409 -640 480 -640 480 -640 427 -640 480 -640 427 -427 640 -500 375 -480 640 -427 640 -500 375 -640 480 -640 481 -500 357 -640 480 -375 500 -640 425 -640 480 -480 640 -640 480 -640 457 -640 480 -424 640 -640 383 -640 480 -640 492 -640 480 -640 480 -427 640 -480 640 -640 427 -428 640 -640 427 -640 480 -640 480 -640 427 -612 612 -640 480 -640 425 -640 427 -427 640 -480 640 -640 480 -500 375 -500 366 -640 480 -640 484 -500 375 -640 427 -640 480 -640 420 -500 333 -640 480 -640 385 -640 426 -640 427 -500 325 -640 500 -427 640 -640 426 -640 480 -500 376 -640 480 -500 375 -640 427 -555 640 -640 427 -640 404 -480 640 -640 480 -427 640 -541 640 -640 359 -640 427 -427 640 -640 427 -640 426 -640 427 -600 600 -640 424 -640 427 -640 424 -640 480 -480 640 -640 480 -640 495 -500 375 -640 479 -500 376 -640 489 -333 500 -490 640 -500 375 -640 628 -640 427 -640 427 -640 433 -640 427 -640 424 -640 480 -416 500 -640 569 -428 640 -480 640 -480 640 -427 640 -640 450 -427 640 -500 375 -640 427 -500 375 -640 480 -640 427 -640 434 -640 424 -640 426 -640 425 -640 480 -440 640 -640 480 -640 425 -640 480 -500 375 -640 480 -640 480 -640 480 -480 640 -500 426 -640 480 -640 480 -640 480 -640 484 -480 640 -640 471 -426 640 -427 640 -640 427 -500 375 -640 480 -640 426 -640 479 -640 427 -481 640 -640 428 -480 640 -640 480 -640 427 -640 640 -640 428 -500 333 -640 427 -640 424 -333 500 -640 424 -640 478 -640 480 -640 427 -480 640 -640 428 -640 480 -640 480 -331 500 -426 640 -640 424 -640 427 -640 360 -640 424 -427 640 -640 480 -480 640 -640 427 -640 360 -640 393 -640 428 -640 427 -640 424 -333 500 -480 640 -640 424 -640 640 -640 426 -640 429 -640 426 -640 599 -640 480 -480 640 -640 480 -640 408 -375 500 -640 430 -425 640 -640 426 -375 500 -427 640 -640 480 -640 427 -426 640 -640 396 -480 640 -640 360 -640 599 -640 479 -640 425 -480 640 -640 480 -640 480 -640 427 -640 427 -640 427 -425 500 -480 640 -640 448 -383 640 -640 480 -427 640 -640 480 -425 640 -640 477 -640 427 -333 500 -640 480 -500 375 -500 333 -640 427 -640 534 -640 480 -640 426 -640 480 -640 426 -640 480 -500 377 -640 480 -480 640 -640 480 -640 429 -640 426 -480 640 -640 478 -640 360 -500 333 -640 480 -640 428 -425 640 -640 480 -640 480 -500 375 -612 612 -500 333 -640 480 -640 479 -640 376 -640 480 -640 508 -640 425 -640 427 -500 467 -500 375 -294 500 -640 640 -640 480 -433 640 -480 640 -640 640 -500 351 -640 427 -640 427 -640 334 -640 428 -429 640 -457 640 -640 480 -500 436 -500 356 -640 425 -612 612 -500 493 -305 640 -640 480 -640 480 -640 480 -640 427 -640 427 -510 640 -424 640 -470 300 -640 480 -640 466 -640 480 -640 480 -640 360 -640 427 -408 640 -480 320 -640 427 -640 480 -500 375 -495 640 -500 379 -426 640 -640 480 -640 426 -640 513 -500 375 -479 640 -640 480 -500 375 -640 478 -480 640 -500 375 -640 480 -640 429 -500 375 -427 640 -640 427 -640 426 -640 425 -640 609 -640 360 -594 447 -640 443 -640 427 -500 375 -640 480 -640 426 -500 375 -640 480 -612 612 -500 375 -640 481 -640 360 -480 640 -640 478 -631 640 -640 427 -640 480 -640 477 -640 480 -640 480 -429 640 -500 375 -640 571 -640 640 -640 480 -640 427 -640 426 -640 524 -640 480 -640 427 -640 394 -612 612 -640 421 -640 426 -480 640 -640 480 -640 640 -457 640 -640 427 -640 248 -427 640 -640 480 -640 426 -427 640 -500 400 -500 375 -640 480 -500 376 -640 506 -640 480 -512 640 -640 480 -640 427 -640 480 -640 427 -480 640 -427 640 -640 425 -500 379 -640 361 -426 640 -500 375 -640 480 -478 640 -640 427 -484 640 -640 427 -500 375 -455 640 -480 640 -500 335 -640 396 -326 500 -640 427 -640 426 -640 425 -549 640 -640 480 -640 426 -640 480 -427 640 -640 424 -640 480 -425 640 -480 640 -640 329 -640 480 -480 640 -500 384 -400 400 -640 480 -640 424 -640 386 -640 360 -640 427 -640 480 -640 427 -640 480 -640 426 -640 480 -480 640 -427 640 -500 375 -640 540 -640 428 -640 425 -640 427 -640 480 -333 500 -563 640 -640 640 -626 526 -640 428 -640 480 -640 427 -640 360 -500 331 -427 640 -640 423 -640 483 -426 640 -640 480 -640 480 -640 480 -427 640 -640 427 -640 640 -500 375 -640 360 -518 640 -426 640 -640 458 -640 427 -640 427 -640 480 -640 593 -640 522 -375 500 -481 640 -640 480 -640 480 -640 403 -427 640 -480 640 -423 640 -426 640 -640 490 -500 375 -640 425 -640 480 -480 640 -640 360 -640 173 -640 480 -640 480 -480 640 -615 640 -640 426 -640 427 -480 640 -480 640 -640 480 -640 512 -640 380 -640 640 -500 400 -500 375 -640 480 -640 426 -640 427 -640 432 -402 500 -640 480 -480 640 -640 480 -597 640 -640 292 -640 426 -640 480 -640 480 -480 640 -640 431 -612 612 -640 427 -640 478 -640 480 -546 640 -640 427 -500 375 -478 640 -640 481 -640 439 -640 426 -640 486 -427 640 -640 427 -427 640 -500 375 -500 375 -640 505 -640 235 -640 428 -640 425 -640 427 -640 480 -478 640 -640 426 -640 427 -640 480 -640 478 -480 640 -512 640 -612 612 -640 427 -480 640 -500 333 -640 424 -375 500 -640 587 -379 335 -640 480 -640 414 -640 426 -400 500 -613 640 -640 480 -427 640 -640 356 -640 480 -480 640 -640 480 -640 480 -640 480 -640 427 -640 640 -640 425 -491 500 -640 478 -480 640 -489 500 -500 375 -640 480 -380 640 -334 500 -429 480 -640 417 -640 427 -640 480 -640 429 -640 426 -461 640 -425 640 -640 480 -640 480 -640 427 -640 427 -448 640 -640 480 -640 427 -640 480 -480 640 -640 429 -427 640 -640 427 -612 612 -640 427 -640 427 -427 640 -500 375 -640 478 -640 429 -582 640 -640 480 -453 640 -640 426 -640 431 -640 427 -640 478 -612 612 -500 410 -360 640 -640 425 -427 640 -640 426 -640 427 -561 640 -640 427 -640 426 -640 427 -640 427 -640 428 -640 480 -640 427 -640 427 -538 640 -573 640 -500 364 -640 426 -467 500 -640 451 -640 427 -640 424 -432 324 -640 428 -640 480 -640 427 -640 437 -334 500 -640 576 -640 430 -640 480 -640 555 -500 375 -500 375 -640 480 -425 640 -500 357 -640 427 -640 427 -640 480 -640 427 -640 427 -427 640 -461 640 -640 480 -425 640 -500 335 -640 480 -375 500 -500 400 -640 427 -640 427 -640 480 -427 640 -640 480 -640 427 -640 480 -448 299 -500 375 -640 426 -640 427 -480 640 -480 640 -640 401 -375 500 -640 480 -640 427 -612 612 -640 484 -640 480 -640 427 -426 640 -480 640 -480 640 -640 429 -640 426 -640 427 -640 480 -640 427 -480 640 -640 480 -426 640 -640 427 -640 480 -640 320 -500 375 -640 640 -427 640 -640 480 -423 640 -640 480 -640 414 -640 506 -480 640 -480 640 -640 367 -640 351 -300 400 -640 322 -640 428 -500 382 -640 428 -640 480 -640 481 -640 427 -425 640 -640 425 -514 640 -640 480 -500 368 -640 360 -640 466 -640 503 -640 427 -500 282 -640 427 -640 427 -640 396 -480 640 -480 640 -640 425 -428 640 -500 333 -640 480 -500 333 -640 427 -640 480 -612 612 -480 640 -640 478 -640 480 -640 428 -640 427 -332 500 -640 427 -480 640 -640 426 -480 640 -640 480 -640 428 -640 429 -640 282 -640 493 -640 389 -375 500 -640 428 -640 427 -500 375 -480 640 -640 480 -640 480 -640 426 -640 400 -640 640 -375 500 -640 480 -428 640 -414 500 -640 544 -640 640 -640 427 -640 427 -480 640 -427 640 -640 480 -484 640 -375 500 -427 640 -640 360 -640 480 -619 640 -640 480 -480 640 -640 640 -640 429 -427 640 -640 480 -640 424 -640 480 -640 428 -425 640 -500 326 -640 427 -428 640 -640 589 -640 426 -480 640 -640 480 -500 500 -500 375 -480 640 -480 640 -500 332 -640 427 -640 428 -640 480 -500 375 -640 446 -640 480 -640 480 -427 640 -640 480 -640 403 -590 590 -500 346 -640 426 -640 428 -640 480 -500 375 -489 640 -400 500 -640 428 -640 359 -640 480 -480 640 -640 424 -424 640 -640 427 -426 640 -640 480 -640 427 -640 478 -640 480 -478 640 -500 374 -427 640 -640 424 -640 480 -640 427 -640 480 -612 612 -640 396 -640 427 -500 375 -640 546 -640 408 -640 480 -640 426 -500 334 -640 428 -640 480 -640 489 -480 640 -480 640 -640 480 -640 480 -640 427 -500 336 -640 427 -500 375 -480 640 -640 427 -640 428 -500 376 -640 480 -500 336 -640 480 -640 426 -500 334 -480 360 -640 480 -640 402 -424 640 -480 640 -640 480 -640 480 -612 612 -640 518 -640 484 -427 640 -612 612 -640 480 -480 640 -485 500 -375 500 -565 640 -426 640 -375 500 -640 603 -640 480 -427 640 -640 517 -625 640 -640 388 -480 640 -500 332 -512 640 -640 427 -612 612 -630 640 -640 601 -640 480 -640 506 -480 640 -640 426 -640 427 -640 480 -640 427 -428 640 -640 427 -333 500 -500 333 -640 480 -500 375 -640 480 -640 480 -640 480 -640 429 -500 333 -640 427 -640 427 -640 478 -640 458 -640 480 -500 335 -427 640 -397 567 -640 480 -480 640 -640 427 -640 427 -640 480 -429 640 -640 425 -640 640 -640 428 -640 480 -500 332 -640 383 -480 640 -612 612 -480 640 -640 426 -640 480 -445 640 -640 427 -500 375 -640 427 -640 329 -640 480 -640 480 -640 492 -640 427 -640 480 -640 454 -640 360 -640 427 -425 640 -640 480 -640 242 -480 640 -640 425 -640 480 -640 461 -640 480 -640 423 -640 480 -640 480 -640 631 -640 582 -480 640 -500 375 -640 480 -640 480 -640 428 -640 429 -640 480 -640 425 -640 480 -640 480 -640 480 -640 480 -368 500 -640 401 -640 480 -427 640 -640 480 -640 428 -640 457 -640 425 -480 640 -640 480 -500 333 -640 480 -640 427 -640 481 -640 427 -480 640 -640 480 -500 335 -500 329 -427 640 -640 427 -640 427 -640 427 -640 480 -640 457 -500 375 -640 428 -431 640 -640 423 -640 640 -640 524 -428 640 -640 426 -640 428 -640 426 -640 425 -375 500 -500 175 -500 500 -448 640 -640 429 -612 612 -640 480 -640 427 -640 480 -640 480 -640 384 -640 514 -640 480 -640 427 -640 427 -403 604 -640 512 -640 480 -612 612 -500 331 -640 427 -640 259 -500 375 -500 375 -640 480 -640 427 -640 426 -640 480 -640 299 -640 425 -640 427 -640 512 -479 640 -500 333 -640 427 -640 512 -640 373 -480 640 -500 375 -640 427 -640 424 -500 375 -640 429 -425 640 -480 640 -399 640 -640 480 -640 482 -500 322 -640 480 -640 480 -640 508 -640 424 -640 480 -640 489 -480 640 -640 427 -640 458 -640 466 -640 480 -500 375 -640 424 -500 387 -640 480 -427 640 -640 495 -426 640 -640 480 -640 480 -480 640 -640 408 -480 640 -480 640 -640 480 -426 640 -640 480 -640 424 -640 427 -640 478 -640 478 -640 474 -375 500 -640 480 -640 427 -640 480 -448 336 -500 345 -460 500 -640 480 -640 480 -360 640 -640 386 -640 344 -428 640 -480 640 -500 412 -640 427 -640 480 -640 480 -500 332 -640 427 -640 572 -640 480 -640 387 -500 333 -445 640 -480 640 -640 423 -500 366 -640 359 -480 640 -640 426 -612 612 -500 375 -480 640 -640 480 -640 361 -640 480 -640 431 -640 427 -640 426 -640 427 -480 640 -640 230 -640 361 -640 480 -640 483 -640 480 -500 375 -480 640 -640 458 -640 640 -640 480 -640 426 -480 360 -640 427 -640 480 -640 482 -640 425 -640 410 -640 480 -640 458 -640 370 -640 426 -640 480 -500 375 -640 480 -424 640 -500 333 -640 427 -500 375 -494 640 -640 427 -480 640 -640 480 -640 427 -640 400 -333 500 -375 500 -500 333 -480 640 -640 427 -640 426 -640 480 -500 333 -640 480 -473 640 -640 480 -480 640 -600 400 -640 480 -640 403 -480 640 -480 640 -500 375 -500 375 -480 640 -500 375 -579 640 -640 426 -480 640 -640 404 -640 480 -640 480 -640 426 -640 426 -640 512 -640 480 -640 427 -500 333 -427 640 -640 427 -640 360 -426 640 -640 480 -640 480 -425 640 -591 640 -500 500 -640 427 -428 640 -640 380 -640 480 -640 480 -640 480 -640 426 -640 171 -500 375 -458 640 -640 426 -500 448 -640 424 -640 427 -612 612 -500 384 -333 500 -640 480 -640 360 -519 640 -640 427 -500 375 -500 375 -640 480 -425 640 -640 512 -640 549 -640 400 -640 480 -480 640 -640 640 -464 640 -640 426 -640 353 -480 640 -640 427 -640 463 -500 375 -480 640 -500 375 -474 640 -640 428 -480 384 -640 480 -640 480 -640 439 -508 640 -612 612 -640 427 -640 480 -640 402 -640 338 -640 361 -500 374 -640 427 -640 480 -640 416 -452 500 -612 612 -640 640 -375 500 -480 640 -640 480 -640 428 -500 344 -640 427 -640 480 -640 427 -640 427 -640 424 -640 480 -640 425 -640 471 -640 480 -640 431 -640 427 -640 480 -640 512 -640 480 -640 480 -640 427 -640 480 -425 640 -640 427 -640 441 -640 480 -480 640 -640 427 -640 360 -500 375 -640 425 -481 640 -640 421 -640 480 -450 640 -640 454 -640 425 -427 640 -640 360 -640 480 -640 480 -640 427 -640 480 -640 480 -640 427 -640 480 -427 640 -424 640 -640 480 -640 461 -500 154 -480 640 -375 500 -640 427 -640 480 -581 640 -426 640 -640 480 -512 640 -425 640 -640 428 -500 332 -640 427 -640 427 -640 478 -640 433 -640 463 -640 444 -640 360 -640 480 -480 640 -640 429 -640 426 -640 480 -334 500 -640 425 -640 434 -640 640 -640 640 -640 359 -640 480 -640 427 -640 424 -640 482 -640 480 -500 324 -640 428 -640 371 -640 427 -360 640 -640 480 -427 640 -640 427 -640 173 -640 480 -640 426 -640 487 -375 500 -640 480 -500 334 -500 375 -334 500 -640 426 -640 480 -640 480 -480 640 -640 480 -480 640 -640 426 -640 480 -640 483 -640 427 -385 640 -640 478 -640 480 -640 427 -640 359 -640 480 -640 427 -640 480 -640 480 -640 640 -640 480 -640 425 -603 640 -640 512 -640 480 -640 424 -640 640 -640 427 -640 482 -500 332 -640 401 -640 480 -640 426 -640 480 -640 425 -335 246 -640 480 -240 363 -480 640 -500 375 -640 480 -500 375 -640 426 -640 428 -640 427 -375 500 -640 421 -480 640 -500 375 -604 453 -640 427 -640 478 -400 600 -480 640 -640 640 -612 612 -640 427 -228 500 -640 462 -640 487 -272 480 -640 480 -480 640 -640 427 -427 640 -435 640 -375 500 -640 480 -640 427 -640 452 -640 428 -427 640 -500 231 -375 500 -640 480 -563 640 -640 479 -426 640 -640 360 -428 640 -640 608 -640 361 -640 480 -640 427 -640 480 -480 640 -375 500 -640 640 -640 426 -640 353 -640 480 -491 500 -640 424 -640 470 -640 337 -640 468 -640 480 -640 432 -640 502 -640 360 -640 480 -456 640 -499 640 -640 480 -425 640 -640 399 -640 480 -425 640 -640 480 -640 426 -500 319 -640 427 -500 335 -426 640 -640 478 -375 500 -426 640 -640 478 -468 298 -640 640 -612 612 -640 421 -500 375 -426 640 -640 640 -500 338 -428 640 -500 333 -480 640 -329 497 -640 640 -500 500 -640 431 -505 640 -640 425 -500 375 -480 640 -480 640 -612 612 -379 640 -640 425 -640 479 -640 427 -640 480 -637 640 -500 336 -500 375 -640 425 -640 426 -640 306 -640 514 -640 640 -333 500 -640 427 -480 640 -612 612 -640 480 -640 480 -421 640 -640 480 -429 640 -640 480 -612 612 -640 480 -640 480 -640 425 -516 640 -480 640 -480 640 -640 427 -640 426 -640 480 -640 426 -640 428 -640 480 -640 425 -480 640 -640 480 -480 440 -500 394 -426 640 -612 612 -500 375 -500 334 -500 394 -640 427 -640 480 -640 480 -640 480 -640 427 -640 428 -500 375 -640 480 -427 640 -640 478 -375 500 -640 426 -389 640 -640 480 -480 640 -640 427 -500 334 -426 640 -500 375 -640 427 -640 426 -640 406 -640 480 -640 478 -640 401 -428 640 -640 424 -375 500 -640 427 -640 480 -640 427 -426 640 -640 427 -480 640 -640 427 -640 633 -375 500 -640 429 -640 426 -640 518 -640 480 -640 427 -640 426 -640 426 -640 480 -500 366 -375 500 -480 640 -640 591 -640 480 -640 427 -640 426 -459 500 -500 335 -640 427 -640 364 -640 427 -640 578 -640 459 -480 640 -640 480 -467 352 -500 500 -640 480 -640 426 -640 360 -640 480 -640 480 -640 429 -480 640 -640 311 -480 640 -563 422 -640 474 -640 360 -640 427 -640 426 -640 480 -500 375 -640 417 -640 427 -480 640 -640 480 -154 205 -500 375 -640 480 -640 427 -640 418 -480 640 -640 530 -375 500 -431 640 -500 375 -640 480 -500 334 -640 416 -640 353 -427 640 -429 640 -640 480 -640 480 -640 480 -480 640 -640 480 -500 334 -640 427 -478 640 -640 427 -500 375 -500 332 -640 480 -640 480 -640 480 -640 427 -640 427 -640 480 -640 480 -640 480 -640 480 -612 612 -640 379 -640 427 -333 500 -640 453 -640 426 -640 425 -375 500 -640 480 -640 427 -480 640 -640 427 -640 437 -478 640 -424 640 -480 640 -480 640 -478 640 -427 640 -640 583 -480 640 -640 424 -480 640 -375 500 -640 428 -640 426 -640 427 -375 500 -640 428 -427 640 -480 640 -640 427 -623 640 -640 480 -640 480 -640 480 -500 333 -640 425 -480 640 -463 640 -480 640 -640 426 -500 333 -640 427 -640 480 -612 612 -478 640 -640 427 -640 480 -640 480 -424 640 -640 478 -640 427 -640 480 -612 612 -640 480 -427 640 -640 428 -500 375 -334 500 -426 640 -333 500 -640 459 -640 427 -640 427 -640 427 -640 428 -480 640 -640 480 -500 333 -427 640 -500 333 -640 427 -500 375 -427 640 -558 640 -500 375 -373 500 -640 480 -640 480 -640 480 -500 249 -480 640 -500 367 -640 427 -640 480 -640 480 -640 427 -480 640 -640 480 -480 640 -604 453 -640 429 -512 640 -640 360 -640 339 -631 640 -425 640 -640 427 -640 480 -640 425 -640 480 -640 480 -427 640 -612 612 -480 640 -640 408 -470 640 -640 426 -500 281 -640 480 -640 428 -640 426 -375 500 -640 426 -375 500 -640 427 -640 427 -427 640 -640 480 -427 640 -640 427 -640 480 -640 338 -640 480 -640 602 -640 428 -480 640 -640 427 -500 329 -424 640 -375 500 -640 480 -640 406 -480 640 -500 375 -640 427 -512 640 -471 640 -640 424 -480 640 -640 443 -640 360 -640 427 -640 480 -480 640 -640 480 -500 434 -431 640 -640 427 -640 480 -480 360 -500 300 -640 426 -432 640 -640 480 -640 424 -640 480 -427 640 -427 640 -640 425 -640 427 -640 480 -640 427 -640 428 -432 288 -640 426 -500 332 -640 471 -640 348 -480 640 -480 640 -640 480 -320 240 -612 612 -640 427 -500 375 -333 500 -640 427 -640 480 -479 640 -640 480 -500 343 -640 622 -640 427 -640 426 -273 500 -480 640 -640 424 -480 640 -375 640 -612 612 -500 375 -640 480 -640 573 -480 640 -640 427 -640 480 -640 480 -640 426 -640 458 -640 426 -375 500 -500 375 -640 401 -640 480 -422 640 -640 426 -500 336 -640 412 -640 427 -640 480 -428 640 -427 640 -320 240 -427 640 -640 480 -640 480 -640 478 -640 480 -640 427 -500 375 -612 612 -479 640 -640 454 -640 427 -640 480 -640 427 -640 480 -500 375 -640 480 -500 375 -303 500 -640 427 -612 612 -486 640 -480 640 -640 428 -640 426 -480 640 -383 640 -640 480 -480 640 -640 424 -640 428 -640 409 -640 427 -640 480 -640 428 -500 500 -640 427 -556 640 -427 640 -640 480 -320 240 -640 640 -500 332 -640 480 -640 427 -612 612 -640 480 -640 480 -480 640 -456 640 -612 612 -640 400 -640 426 -640 410 -640 360 -439 640 -640 480 -612 612 -640 426 -640 480 -441 640 -500 310 -640 427 -640 427 -640 468 -640 427 -500 375 -640 480 -640 480 -427 640 -612 612 -480 640 -480 640 -640 427 -640 480 -640 427 -500 375 -640 480 -640 480 -640 427 -640 480 -480 640 -500 375 -640 427 -640 480 -612 612 -500 335 -640 428 -640 427 -640 425 -640 360 -640 480 -640 427 -640 480 -640 424 -640 480 -640 427 -640 427 -640 428 -640 426 -640 423 -640 468 -640 483 -640 616 -640 480 -640 427 -427 640 -640 480 -640 427 -640 427 -640 480 -640 490 -448 336 -480 640 -480 640 -333 500 -640 431 -640 591 -640 480 -640 427 -500 490 -640 480 -640 427 -640 442 -640 480 -640 480 -640 428 -640 427 -640 480 -640 427 -640 427 -640 427 -640 482 -640 361 -640 426 -640 397 -624 640 -640 427 -640 426 -640 480 -640 480 -500 375 -640 480 -514 640 -500 333 -640 480 -640 406 -328 500 -640 480 -500 356 -640 428 -640 480 -640 426 -640 427 -640 427 -640 464 -640 427 -640 480 -500 333 -640 480 -640 480 -640 480 -640 480 -375 207 -640 427 -640 480 -640 366 -458 640 -640 427 -640 426 -640 480 -481 640 -640 480 -640 425 -640 471 -500 333 -640 426 -500 375 -640 478 -640 427 -612 612 -640 484 -500 331 -500 284 -526 640 -426 640 -640 480 -640 426 -640 427 -640 427 -640 376 -640 480 -386 500 -640 425 -640 425 -374 500 -640 416 -640 499 -480 640 -640 427 -457 640 -640 480 -579 640 -640 511 -640 480 -640 428 -500 354 -500 375 -640 480 -426 640 -640 394 -640 426 -520 373 -480 640 -640 480 -480 640 -640 480 -640 480 -500 346 -640 480 -593 640 -640 480 -344 500 -640 393 -500 375 -480 640 -640 480 -500 458 -640 425 -480 640 -640 426 -640 480 -500 375 -438 640 -640 480 -640 427 -500 333 -612 612 -640 480 -500 408 -640 427 -640 480 -427 640 -640 427 -640 480 -640 427 -640 457 -640 427 -640 405 -480 640 -640 480 -640 426 -640 426 -500 343 -500 401 -427 640 -574 640 -640 480 -335 500 -500 375 -640 480 -640 480 -640 427 -640 480 -640 427 -640 564 -640 542 -500 500 -640 409 -480 640 -612 612 -428 640 -640 426 -640 480 -640 427 -640 424 -640 633 -640 480 -640 426 -640 480 -640 361 -640 426 -640 266 -640 424 -500 307 -640 480 -425 640 -500 368 -568 640 -640 453 -640 427 -640 503 -500 375 -640 374 -640 359 -640 427 -640 448 -426 640 -640 480 -400 500 -500 333 -640 427 -640 426 -640 427 -640 601 -640 427 -640 513 -640 480 -640 425 -427 640 -640 480 -640 426 -500 375 -640 427 -427 640 -640 480 -500 425 -500 340 -640 427 -640 480 -640 359 -640 478 -640 480 -427 640 -640 360 -640 376 -640 460 -640 406 -640 480 -640 427 -612 612 -500 375 -419 640 -640 588 -640 428 -480 640 -375 500 -640 427 -640 480 -640 480 -640 423 -640 480 -640 480 -640 513 -640 640 -640 361 -640 498 -640 426 -640 480 -640 427 -500 375 -640 427 -270 360 -457 640 -426 640 -386 640 -501 640 -479 640 -640 634 -640 426 -640 480 -521 640 -640 426 -428 640 -640 426 -500 375 -640 427 -640 360 -427 640 -640 480 -640 427 -431 259 -640 426 -640 604 -600 386 -393 500 -640 426 -640 478 -640 425 -612 612 -332 500 -639 640 -500 640 -640 448 -500 333 -500 333 -640 480 -640 427 -640 427 -500 349 -640 435 -640 424 -640 512 -500 333 -640 426 -640 480 -640 480 -480 640 -500 449 -640 480 -640 480 -640 427 -640 481 -480 640 -500 375 -640 425 -640 478 -500 330 -640 554 -640 479 -640 480 -640 480 -640 348 -640 427 -640 480 -640 480 -640 427 -640 425 -624 640 -640 480 -640 424 -531 640 -640 381 -640 480 -640 428 -640 427 -640 437 -393 500 -374 500 -640 480 -640 443 -640 480 -640 480 -640 428 -640 428 -640 443 -500 334 -640 427 -500 346 -640 430 -640 427 -640 427 -500 375 -640 354 -480 640 -640 428 -640 480 -360 640 -640 480 -426 640 -640 391 -640 478 -640 512 -640 480 -500 375 -276 410 -500 375 -480 640 -478 640 -427 640 -640 422 -640 425 -640 480 -640 426 -640 480 -640 480 -640 426 -640 520 -640 426 -640 480 -640 488 -612 612 -333 500 -640 480 -500 375 -640 427 -281 500 -640 426 -640 480 -413 500 -640 427 -640 480 -640 480 -640 427 -640 428 -503 640 -640 427 -640 359 -640 480 -640 425 -640 425 -640 427 -428 640 -640 480 -640 182 -640 427 -500 375 -479 640 -612 612 -480 640 -640 480 -640 480 -600 400 -640 427 -640 386 -640 480 -640 480 -375 500 -640 480 -640 480 -427 640 -640 427 -640 480 -640 396 -480 640 -640 480 -640 427 -480 640 -480 640 -640 360 -500 375 -640 543 -640 427 -640 465 -640 426 -360 640 -640 369 -640 480 -640 428 -640 480 -640 475 -403 500 -480 640 -640 410 -500 333 -480 640 -640 480 -640 427 -426 640 -640 480 -424 640 -640 336 -480 640 -640 427 -500 333 -480 640 -500 390 -640 442 -612 612 -640 541 -612 612 -401 500 -612 612 -640 427 -640 428 -640 426 -640 427 -640 425 -640 480 -375 500 -640 427 -640 427 -640 480 -640 418 -640 425 -427 640 -426 640 -640 480 -640 425 -375 500 -640 427 -640 427 -640 360 -500 400 -640 427 -640 480 -640 427 -426 640 -361 640 -640 427 -640 480 -640 480 -427 640 -640 480 -375 500 -480 640 -640 425 -640 480 -500 375 -640 480 -640 427 -640 427 -426 640 -640 426 -640 480 -640 427 -480 640 -640 427 -424 640 -640 428 -480 640 -480 640 -457 640 -640 480 -480 640 -500 334 -640 480 -426 640 -640 452 -500 333 -640 544 -640 428 -423 640 -640 427 -640 428 -480 640 -640 427 -640 480 -612 612 -640 427 -480 640 -500 375 -640 427 -640 428 -425 640 -391 640 -397 640 -640 480 -640 425 -640 480 -427 640 -640 480 -425 640 -640 480 -375 500 -500 335 -640 416 -640 427 -640 495 -640 427 -640 428 -500 375 -640 427 -640 425 -640 333 -480 640 -500 333 -425 640 -640 428 -640 640 -640 424 -640 427 -500 640 -640 427 -640 426 -640 427 -640 478 -640 457 -640 425 -640 480 -640 480 -500 331 -494 640 -640 480 -640 428 -375 500 -428 640 -500 281 -640 480 -640 426 -640 425 -640 427 -640 478 -640 414 -640 427 -449 640 -640 426 -479 640 -640 519 -640 479 -640 427 -480 640 -500 333 -640 427 -494 500 -640 427 -640 480 -640 552 -500 375 -480 640 -640 504 -640 480 -480 640 -569 640 -500 333 -640 480 -640 435 -640 480 -500 375 -640 427 -640 480 -500 375 -480 640 -640 480 -640 640 -398 640 -640 427 -640 424 -640 425 -341 500 -640 359 -640 422 -640 491 -640 503 -640 429 -640 480 -414 640 -640 480 -640 529 -640 480 -640 513 -640 478 -640 427 -375 500 -640 480 -640 480 -480 360 -640 640 -375 500 -640 480 -640 480 -480 640 -640 608 -640 480 -640 427 -640 480 -640 359 -640 480 -500 375 -500 375 -640 427 -640 480 -500 375 -640 426 -500 500 -640 532 -640 480 -612 612 -640 532 -612 612 -426 640 -500 332 -500 375 -640 480 -640 450 -458 640 -640 291 -640 427 -640 480 -640 429 -500 333 -640 480 -640 360 -640 427 -640 426 -640 480 -640 480 -480 640 -640 425 -480 640 -500 375 -476 640 -500 328 -640 480 -640 458 -640 480 -640 427 -640 360 -640 424 -640 411 -457 640 -640 558 -572 640 -427 640 -640 427 -427 640 -640 349 -640 480 -427 640 -640 427 -640 428 -640 360 -428 640 -640 360 -480 640 -640 425 -640 508 -640 640 -640 426 -640 491 -640 480 -612 612 -480 640 -640 427 -640 480 -640 426 -640 480 -500 463 -640 480 -640 480 -640 480 -640 419 -640 479 -640 480 -640 480 -500 375 -640 381 -640 425 -640 428 -480 640 -450 286 -640 480 -640 427 -600 450 -640 480 -640 428 -640 480 -640 480 -640 426 -640 427 -500 375 -640 480 -500 375 -500 375 -640 425 -640 308 -640 424 -480 640 -478 640 -427 640 -375 500 -640 428 -500 375 -434 640 -640 480 -640 480 -500 293 -640 427 -640 488 -640 427 -640 427 -640 427 -480 640 -640 426 -480 640 -640 424 -640 427 -424 640 -640 480 -640 480 -640 480 -494 640 -427 640 -640 348 -356 500 -640 480 -375 500 -431 640 -500 365 -640 428 -612 612 -640 489 -640 480 -480 640 -640 480 -640 424 -640 428 -640 480 -640 479 -640 427 -640 427 -480 640 -500 325 -640 427 -640 432 -640 427 -640 444 -427 640 -640 427 -425 640 -480 640 -640 433 -480 640 -640 409 -640 480 -640 427 -375 500 -333 500 -640 468 -480 640 -640 480 -640 471 -640 463 -640 429 -640 480 -640 402 -640 478 -472 640 -100 144 -640 428 -640 425 -640 481 -640 386 -640 480 -640 480 -640 427 -640 463 -480 640 -425 640 -500 333 -640 427 -640 480 -640 480 -640 424 -500 375 -640 482 -640 427 -640 427 -640 544 -640 427 -640 611 -480 640 -612 612 -640 480 -640 480 -640 480 -444 640 -640 427 -640 479 -253 640 -480 640 -640 480 -612 612 -640 478 -640 480 -640 427 -427 640 -640 480 -640 480 -427 640 -640 488 -520 640 -612 612 -640 427 -640 426 -640 480 -480 640 -640 407 -640 480 -640 480 -500 375 -480 640 -399 640 -640 480 -427 640 -640 384 -360 640 -457 640 -640 334 -640 426 -428 640 -640 425 -640 480 -640 427 -640 426 -396 640 -480 640 -640 427 -640 480 -640 480 -480 640 -640 480 -640 426 -640 417 -640 480 -640 513 -640 427 -640 426 -640 480 -640 485 -640 480 -640 360 -457 640 -640 427 -640 405 -640 360 -640 480 -640 199 -640 480 -640 428 -640 480 -640 426 -482 640 -640 433 -640 480 -640 640 -640 427 -640 480 -640 408 -548 640 -640 426 -480 640 -480 640 -612 612 -640 427 -640 640 -640 481 -360 640 -640 457 -640 480 -640 426 -640 426 -640 426 -426 640 -500 335 -640 461 -640 427 -640 480 -640 427 -630 640 -640 424 -640 215 -640 429 -640 429 -640 480 -640 480 -640 427 -640 478 -480 640 -640 479 -640 480 -640 426 -640 480 -640 427 -640 480 -640 480 -640 426 -640 480 -640 427 -640 428 -480 640 -612 612 -480 640 -424 640 -640 427 -612 612 -500 500 -640 427 -640 427 -500 375 -640 480 -427 640 -640 427 -500 375 -480 640 -640 480 -640 480 -426 640 -640 480 -640 480 -518 640 -640 462 -427 640 -640 427 -500 333 -500 375 -640 480 -427 640 -480 640 -640 480 -481 640 -640 480 -640 480 -500 375 -425 640 -480 640 -426 640 -427 640 -320 240 -640 427 -640 480 -640 480 -640 425 -640 480 -478 640 -640 427 -640 426 -640 456 -640 480 -480 640 -480 640 -640 640 -334 500 -640 428 -640 449 -500 375 -640 394 -640 480 -500 257 -426 640 -640 426 -427 640 -640 479 -640 427 -426 640 -640 506 -478 640 -480 640 -640 480 -500 333 -640 425 -640 480 -640 424 -400 500 -640 428 -375 500 -427 640 -640 315 -640 480 -334 500 -480 640 -480 640 -480 640 -640 480 -640 427 -640 480 -640 428 -296 640 -640 426 -500 333 -500 472 -431 640 -461 640 -640 480 -500 403 -640 427 -640 428 -640 480 -426 640 -500 375 -480 640 -500 375 -500 375 -640 427 -640 285 -640 428 -480 640 -640 427 -480 640 -640 427 -640 428 -640 427 -640 480 -640 427 -640 427 -333 500 -500 375 -512 640 -640 426 -640 480 -640 427 -612 612 -500 375 -640 427 -425 640 -640 443 -480 640 -640 487 -428 640 -332 500 -640 360 -640 482 -640 480 -640 426 -480 640 -640 427 -640 368 -640 480 -427 640 -425 640 -640 480 -500 335 -500 333 -424 640 -640 428 -454 640 -640 640 -640 480 -640 480 -640 427 -640 480 -640 427 -334 500 -640 579 -480 640 -640 383 -640 428 -640 480 -640 478 -640 426 -640 444 -640 569 -464 640 -631 640 -640 480 -640 428 -640 427 -640 480 -640 360 -640 480 -612 612 -426 640 -640 480 -427 640 -640 427 -640 480 -640 480 -640 480 -640 640 -426 640 -429 600 -500 375 -640 480 -500 375 -480 640 -640 480 -640 427 -640 480 -612 612 -640 481 -640 323 -640 429 -612 612 -640 480 -640 425 -640 360 -500 332 -640 480 -640 426 -500 375 -640 640 -480 640 -640 480 -640 480 -640 428 -640 480 -640 429 -640 640 -640 514 -333 500 -640 480 -516 640 -640 427 -640 422 -640 427 -640 427 -640 427 -480 640 -612 612 -640 480 -363 500 -500 375 -500 374 -429 640 -640 425 -427 640 -640 480 -640 480 -640 425 -640 480 -640 596 -640 429 -640 480 -640 473 -640 341 -640 427 -480 640 -600 591 -640 480 -500 375 -500 357 -480 359 -338 500 -640 486 -640 426 -640 480 -540 477 -471 640 -640 427 -500 311 -500 326 -427 640 -640 480 -640 480 -510 640 -640 480 -500 375 -640 314 -640 426 -500 332 -640 426 -640 480 -640 480 -640 396 -344 500 -480 640 -640 526 -640 480 -639 640 -612 612 -640 461 -500 375 -640 427 -640 426 -640 425 -640 428 -640 564 -640 428 -500 375 -640 416 -640 438 -640 480 -640 480 -640 480 -478 640 -480 640 -427 640 -640 424 -339 500 -640 467 -640 480 -640 480 -640 428 -428 640 -640 426 -400 600 -500 222 -640 640 -640 429 -640 360 -640 480 -640 427 -500 375 -480 640 -383 640 -640 424 -500 375 -640 426 -640 480 -640 426 -640 445 -512 640 -640 395 -640 424 -640 482 -640 427 -640 512 -640 480 -640 424 -640 426 -640 480 -640 480 -640 425 -480 640 -427 640 -640 427 -500 375 -640 445 -640 501 -640 426 -640 480 -612 612 -640 427 -375 500 -640 480 -640 427 -640 427 -640 424 -334 500 -500 333 -500 357 -640 480 -640 429 -640 427 -640 480 -580 377 -640 499 -426 640 -640 609 -640 480 -640 333 -479 640 -541 640 -640 496 -640 359 -640 427 -612 612 -640 473 -375 500 -640 427 -427 640 -480 640 -612 612 -480 640 -640 393 -500 332 -424 640 -500 414 -640 473 -640 253 -500 473 -640 426 -640 416 -640 427 -414 640 -640 427 -640 427 -640 427 -640 480 -640 480 -640 480 -640 427 -612 612 -640 480 -640 427 -640 480 -640 480 -640 324 -480 640 -640 361 -640 424 -320 240 -640 427 -480 640 -640 425 -640 550 -640 640 -640 480 -640 429 -640 480 -640 491 -640 426 -640 368 -384 640 -640 427 -480 640 -640 427 -640 426 -428 640 -640 480 -427 640 -640 384 -640 448 -640 444 -640 320 -640 427 -640 427 -612 612 -640 480 -480 640 -640 427 -425 640 -640 480 -640 373 -640 425 -500 375 -640 480 -617 640 -640 427 -640 640 -640 480 -364 640 -442 500 -640 480 -500 377 -640 486 -640 550 -640 426 -640 427 -640 491 -640 380 -640 425 -640 411 -480 640 -640 427 -640 480 -640 383 -640 461 -640 416 -640 426 -640 427 -427 640 -640 480 -433 640 -480 640 -612 612 -480 640 -640 427 -500 331 -500 375 -640 427 -640 480 -480 640 -480 640 -640 480 -640 427 -640 360 -500 336 -640 427 -640 407 -640 438 -640 427 -427 640 -481 640 -480 640 -640 480 -640 480 -320 240 -640 424 -640 508 -640 399 -480 640 -640 320 -640 480 -480 640 -294 196 -640 464 -427 640 -334 640 -480 640 -640 480 -500 375 -640 428 -640 426 -640 427 -500 335 -640 426 -640 640 -426 640 -640 428 -640 388 -480 640 -640 320 -480 640 -640 480 -640 480 -640 428 -333 500 -500 375 -640 424 -480 640 -569 640 -640 278 -500 375 -480 640 -640 424 -640 480 -640 427 -640 428 -640 360 -640 426 -456 640 -640 426 -640 426 -427 640 -427 640 -640 427 -640 480 -640 427 -510 640 -640 480 -640 475 -640 480 -640 417 -640 480 -640 480 -640 427 -640 426 -640 427 -426 640 -640 480 -640 427 -640 398 -640 480 -640 462 -333 500 -640 475 -375 500 -480 640 -500 341 -640 285 -640 480 -480 640 -640 427 -480 640 -426 640 -640 427 -640 640 -640 425 -640 426 -640 480 -480 640 -333 500 -640 383 -375 500 -640 480 -640 636 -427 640 -480 640 -640 480 -500 399 -500 332 -640 304 -640 480 -427 640 -640 480 -640 480 -512 640 -427 640 -500 391 -500 422 -433 640 -334 500 -640 640 -640 425 -424 640 -640 427 -640 400 -375 500 -640 427 -640 640 -640 424 -427 640 -529 640 -640 480 -640 393 -640 427 -640 480 -500 374 -500 333 -640 480 -425 640 -612 612 -640 480 -480 640 -480 640 -480 640 -480 640 -500 375 -500 153 -500 333 -640 426 -640 483 -640 480 -640 480 -640 427 -640 480 -640 427 -640 427 -640 438 -640 428 -634 640 -640 343 -640 529 -640 425 -640 426 -500 247 -640 425 -640 496 -480 640 -500 332 -640 478 -500 375 -480 640 -640 480 -640 427 -640 366 -640 438 -437 500 -389 540 -640 428 -640 480 -640 480 -360 640 -640 427 -478 640 -640 480 -500 334 -640 480 -640 427 -581 640 -640 480 -427 640 -640 400 -640 425 -640 480 -640 480 -640 443 -640 480 -640 427 -640 456 -640 427 -640 427 -640 484 -478 640 -640 480 -480 640 -640 480 -500 375 -640 430 -640 482 -640 427 -640 480 -640 426 -427 640 -427 640 -640 359 -640 480 -640 426 -640 399 -640 427 -445 640 -333 500 -640 425 -640 425 -480 640 -500 335 -424 640 -640 480 -480 640 -427 640 -500 334 -640 426 -640 480 -640 480 -640 480 -640 472 -490 367 -500 335 -640 480 -640 418 -612 612 -640 508 -640 480 -640 427 -640 360 -500 379 -640 427 -640 480 -640 427 -640 480 -640 424 -500 433 -480 640 -480 640 -640 480 -640 480 -640 426 -480 640 -640 428 -500 375 -640 144 -640 480 -640 425 -585 329 -483 640 -640 502 -640 425 -640 360 -640 480 -500 333 -640 480 -640 484 -640 383 -480 640 -640 480 -640 480 -640 424 -640 480 -640 427 -612 612 -383 640 -640 429 -640 485 -640 427 -500 276 -640 539 -640 480 -640 427 -640 478 -640 491 -480 640 -640 427 -640 480 -640 426 -640 425 -640 427 -640 480 -640 424 -480 640 -612 612 -640 426 -640 425 -640 359 -480 640 -640 368 -500 333 -480 640 -500 500 -640 480 -640 480 -640 425 -640 480 -640 456 -640 427 -640 480 -640 425 -640 427 -500 500 -484 640 -640 480 -447 640 -640 427 -525 640 -640 426 -640 480 -353 500 -500 375 -640 480 -640 359 -640 480 -640 396 -640 463 -640 480 -640 495 -640 427 -611 640 -480 640 -426 640 -640 446 -480 640 -427 640 -612 612 -640 480 -427 640 -640 423 -457 640 -640 423 -640 427 -640 480 -427 640 -640 480 -480 640 -640 427 -542 588 -640 425 -480 640 -428 640 -640 425 -640 427 -634 640 -640 480 -480 640 -640 426 -583 640 -640 480 -427 640 -640 480 -640 526 -500 321 -511 640 -640 480 -640 480 -640 480 -640 478 -640 425 -640 480 -640 428 -640 426 -426 640 -640 424 -427 640 -640 425 -640 426 -640 480 -640 425 -546 366 -640 427 -500 375 -640 427 -351 500 -640 425 -500 375 -640 427 -640 480 -480 640 -640 360 -640 480 -500 375 -480 640 -640 427 -427 640 -488 500 -369 640 -640 405 -500 375 -640 640 -640 427 -481 640 -360 640 -640 425 -640 427 -640 428 -480 640 -640 480 -484 640 -640 429 -500 400 -335 500 -640 428 -640 429 -500 333 -500 341 -428 640 -640 427 -640 427 -640 605 -640 640 -640 425 -640 360 -640 480 -427 640 -640 480 -480 640 -600 448 -640 480 -320 480 -424 640 -640 427 -427 640 -640 480 -429 640 -640 373 -427 640 -640 480 -426 640 -500 338 -640 490 -612 612 -640 426 -640 427 -640 428 -480 640 -480 640 -640 428 -640 427 -640 533 -640 553 -640 480 -427 640 -640 480 -640 426 -500 441 -480 640 -640 427 -640 480 -640 353 -640 308 -640 423 -480 640 -640 427 -640 427 -640 480 -400 300 -500 375 -500 347 -400 300 -640 480 -612 612 -640 486 -640 426 -640 433 -640 483 -612 612 -500 375 -640 480 -426 640 -640 425 -640 425 -640 425 -640 360 -640 480 -409 640 -640 480 -640 427 -640 480 -640 480 -636 636 -640 419 -640 452 -640 427 -640 480 -640 480 -640 479 -427 640 -640 427 -640 427 -640 406 -425 640 -333 500 -427 640 -640 427 -480 640 -500 375 -500 375 -391 500 -640 404 -640 480 -640 427 -640 480 -640 427 -640 360 -640 428 -640 426 -500 333 -640 480 -612 612 -428 640 -640 427 -480 640 -500 299 -640 457 -640 640 -640 427 -640 426 -640 439 -500 375 -640 391 -640 426 -640 426 -500 333 -375 500 -640 426 -640 424 -424 640 -640 427 -500 192 -426 640 -640 480 -640 480 -640 480 -640 438 -505 640 -640 405 -640 426 -427 640 -640 487 -500 375 -427 640 -640 427 -640 480 -640 480 -640 480 -640 480 -479 640 -428 640 -480 640 -640 427 -640 360 -640 427 -640 321 -640 480 -640 427 -640 480 -426 640 -640 456 -640 427 -640 373 -640 480 -640 480 -640 480 -640 426 -640 427 -640 382 -640 458 -640 484 -640 480 -640 478 -640 427 -640 362 -319 500 -640 480 -640 193 -640 480 -640 366 -640 480 -427 640 -640 430 -640 478 -429 640 -500 333 -612 612 -640 480 -640 427 -375 500 -640 427 -640 378 -640 173 -500 375 -640 480 -374 500 -462 640 -500 375 -640 480 -640 426 -448 640 -436 640 -640 480 -640 427 -640 338 -640 480 -427 640 -640 511 -640 480 -640 480 -640 427 -640 427 -480 640 -640 427 -500 333 -640 424 -427 640 -500 375 -427 640 -640 480 -640 480 -640 428 -640 427 -640 505 -498 640 -640 426 -640 480 -640 480 -640 480 -640 468 -640 480 -640 562 -640 424 -430 640 -640 480 -640 428 -640 480 -427 640 -428 640 -427 640 -480 640 -424 640 -640 427 -640 480 -640 425 -480 640 -500 375 -640 480 -480 640 -500 500 -333 500 -640 480 -600 450 -640 360 -500 375 -424 640 -331 500 -640 480 -426 640 -640 478 -612 612 -640 424 -640 480 -640 427 -426 640 -640 359 -640 424 -640 427 -640 427 -640 427 -480 640 -640 375 -360 640 -320 480 -640 508 -640 427 -640 480 -599 640 -640 480 -640 480 -640 480 -640 429 -500 375 -640 480 -640 427 -640 480 -428 640 -640 480 -480 640 -426 640 -640 427 -640 456 -640 480 -640 480 -478 640 -427 640 -500 496 -428 640 -640 427 -640 425 -334 500 -481 640 -640 427 -640 426 -640 480 -471 500 -640 506 -640 424 -480 640 -640 427 -640 444 -426 640 -640 480 -640 480 -640 428 -640 431 -640 431 -640 480 -500 333 -640 427 -427 640 -640 512 -640 480 -512 640 -640 359 -640 640 -640 428 -640 426 -640 640 -500 375 -640 519 -480 640 -640 375 -427 640 -640 215 -640 429 -360 640 -640 480 -640 425 -434 640 -640 480 -640 480 -640 429 -640 427 -612 612 -640 426 -640 423 -480 640 -640 558 -640 427 -640 429 -640 427 -480 640 -640 480 -640 480 -419 640 -640 426 -640 480 -640 427 -640 480 -284 500 -640 346 -640 400 -640 480 -640 425 -612 612 -640 480 -640 360 -640 480 -425 640 -640 427 -640 426 -500 375 -640 412 -640 480 -573 640 -640 427 -612 612 -640 423 -480 640 -640 360 -426 640 -640 480 -383 640 -640 427 -480 640 -640 480 -640 480 -500 376 -640 426 -480 640 -640 556 -640 427 -428 640 -640 428 -427 640 -375 500 -640 360 -500 375 -375 500 -640 481 -640 480 -640 480 -500 375 -640 480 -640 480 -640 640 -454 640 -640 477 -640 421 -480 640 -640 427 -640 480 -500 333 -640 426 -640 480 -640 425 -640 426 -640 424 -640 579 -640 383 -640 640 -640 485 -640 426 -427 640 -640 479 -344 500 -640 480 -640 480 -427 640 -640 478 -600 450 -640 428 -640 427 -640 426 -427 640 -640 427 -640 480 -640 480 -480 640 -480 640 -640 480 -500 375 -427 640 -450 338 -500 375 -640 480 -640 448 -500 330 -640 428 -500 375 -640 480 -612 612 -457 640 -386 640 -480 640 -640 480 -480 640 -640 427 -640 492 -450 640 -480 640 -427 640 -478 640 -640 480 -640 424 -500 375 -612 612 -480 640 -480 640 -640 427 -640 640 -640 427 -480 640 -333 500 -480 640 -640 480 -640 426 -480 640 -500 375 -640 383 -640 480 -640 427 -640 506 -640 427 -640 511 -453 640 -640 428 -640 480 -640 439 -640 640 -640 426 -640 418 -453 640 -568 640 -386 500 -479 640 -640 428 -640 426 -480 640 -640 268 -640 427 -640 431 -640 439 -640 480 -480 640 -640 360 -640 427 -500 333 -428 640 -640 480 -612 612 -640 503 -640 427 -640 478 -425 640 -425 640 -480 640 -640 480 -430 640 -427 640 -640 427 -640 393 -640 480 -640 480 -333 500 -399 500 -640 480 -480 640 -640 480 -640 360 -640 480 -640 427 -480 360 -640 296 -640 428 -640 427 -640 480 -640 558 -640 426 -640 563 -640 480 -640 425 -640 424 -640 480 -640 480 -640 427 -640 427 -402 402 -640 428 -640 429 -640 462 -640 427 -640 480 -480 640 -640 226 -640 480 -493 640 -573 640 -424 640 -640 408 -375 500 -500 375 -640 640 -640 427 -640 480 -424 640 -640 427 -640 480 -640 423 -640 427 -640 480 -640 426 -500 366 -640 480 -517 640 -480 640 -640 427 -640 458 -480 640 -640 412 -640 497 -640 480 -500 338 -640 480 -640 425 -640 459 -375 500 -640 480 -640 412 -500 375 -640 640 -640 427 -640 480 -640 480 -640 640 -427 640 -640 425 -640 428 -640 480 -500 375 -640 427 -500 333 -314 500 -640 478 -640 480 -640 480 -640 427 -442 640 -480 640 -428 640 -500 375 -500 383 -640 480 -480 640 -640 427 -640 426 -640 400 -640 424 -640 325 -384 500 -640 480 -640 480 -640 426 -375 500 -640 428 -500 376 -478 640 -640 480 -640 424 -480 640 -640 480 -480 640 -501 640 -640 425 -640 480 -640 480 -500 333 -640 480 -500 400 -640 342 -640 480 -500 375 -640 273 -640 277 -500 335 -640 480 -500 375 -427 640 -640 328 -500 263 -375 500 -640 425 -640 480 -480 640 -640 480 -640 426 -424 640 -500 332 -640 480 -500 375 -318 500 -484 640 -640 486 -640 480 -640 429 -500 375 -640 425 -640 400 -640 480 -500 333 -640 640 -640 480 -640 480 -640 426 -467 371 -333 500 -640 480 -640 480 -640 389 -640 427 -640 425 -640 426 -349 640 -480 640 -640 424 -500 333 -640 427 -640 481 -640 426 -500 375 -640 518 -494 389 -640 480 -640 480 -640 513 -640 426 -500 393 -500 188 -640 427 -640 427 -500 375 -427 640 -332 500 -480 640 -640 470 -640 480 -640 288 -640 480 -640 480 -640 480 -640 425 -640 480 -640 480 -640 427 -640 480 -640 480 -640 480 -640 427 -480 640 -640 323 -640 480 -561 640 -640 480 -640 427 -640 427 -500 467 -640 427 -375 500 -480 640 -640 480 -428 640 -640 480 -640 480 -640 480 -500 375 -640 427 -640 428 -478 640 -640 426 -640 428 -640 360 -442 640 -478 640 -500 332 -640 426 -640 480 -500 375 -640 427 -495 640 -640 425 -640 427 -640 466 -640 479 -640 469 -640 551 -640 480 -640 480 -640 425 -640 427 -640 424 -640 480 -640 417 -640 480 -640 483 -640 480 -335 500 -640 640 -640 427 -640 480 -425 640 -640 427 -448 336 -425 640 -480 640 -640 400 -640 480 -640 509 -640 427 -500 294 -429 640 -640 360 -640 481 -640 426 -480 640 -640 428 -640 425 -640 426 -396 640 -500 335 -640 480 -640 425 -640 480 -480 640 -407 640 -500 375 -640 426 -640 480 -500 376 -640 427 -483 485 -426 640 -640 425 -640 480 -427 640 -640 640 -640 426 -612 612 -640 480 -640 427 -424 640 -640 427 -486 417 -640 480 -640 571 -427 640 -640 480 -640 480 -640 427 -640 480 -640 453 -640 426 -640 480 -640 480 -640 425 -640 493 -640 480 -426 640 -480 640 -640 480 -500 376 -640 427 -640 503 -334 500 -612 612 -500 333 -500 375 -375 500 -612 612 -640 480 -640 427 -500 333 -427 640 -480 640 -375 500 -640 427 -640 427 -521 315 -427 640 -427 640 -640 480 -500 375 -500 375 -640 387 -640 306 -640 426 -640 427 -640 458 -640 454 -640 480 -640 427 -640 427 -640 383 -500 375 -640 480 -640 427 -640 427 -500 375 -640 480 -640 480 -640 480 -640 427 -500 375 -640 480 -640 427 -640 260 -480 640 -640 427 -640 427 -500 333 -640 480 -480 640 -640 427 -427 640 -427 640 -640 427 -500 333 -480 640 -333 500 -427 640 -640 426 -640 390 -640 480 -400 301 -640 480 -500 339 -239 180 -640 425 -428 640 -640 426 -640 640 -640 478 -612 612 -640 465 -640 426 -427 640 -640 524 -640 436 -640 315 -640 427 -640 428 -500 333 -640 427 -500 374 -500 333 -640 427 -392 640 -640 446 -340 640 -640 480 -640 427 -480 640 -612 612 -359 640 -427 640 -426 640 -640 427 -427 640 -640 480 -375 500 -640 442 -640 480 -500 337 -640 480 -427 640 -375 500 -640 480 -640 427 -500 375 -332 500 -462 640 -426 640 -333 500 -640 480 -640 485 -640 428 -375 500 -640 640 -640 360 -640 424 -640 428 -640 411 -640 480 -640 425 -640 427 -640 426 -640 427 -640 480 -500 281 -640 429 -480 640 -425 640 -640 424 -427 640 -640 427 -640 479 -152 100 -640 480 -640 454 -640 428 -640 480 -426 640 -640 623 -640 480 -640 480 -640 640 -640 480 -640 359 -500 333 -640 480 -427 640 -426 640 -500 375 -480 640 -640 480 -333 500 -640 425 -612 612 -426 640 -640 480 -640 391 -480 640 -640 480 -640 427 -640 428 -640 480 -500 375 -640 427 -640 480 -640 634 -640 482 -640 426 -640 427 -640 480 -480 640 -640 480 -411 640 -640 512 -640 640 -556 640 -640 480 -427 640 -640 419 -640 433 -640 400 -640 427 -640 360 -640 426 -480 640 -480 640 -419 640 -640 528 -375 500 -640 480 -640 480 -640 480 -640 480 -640 427 -500 375 -427 640 -426 640 -425 640 -479 640 -480 640 -640 368 -640 427 -640 480 -424 640 -640 480 -640 408 -640 424 -466 640 -640 425 -480 640 -480 640 -640 458 -640 428 -500 375 -640 479 -500 375 -640 480 -200 300 -640 480 -433 640 -480 640 -500 421 -640 361 -640 480 -640 480 -500 375 -480 640 -640 480 -640 487 -640 427 -640 426 -640 429 -480 640 -640 640 -427 640 -427 640 -640 480 -500 375 -500 313 -640 424 -640 480 -640 424 -640 371 -640 425 -640 303 -640 427 -547 640 -640 429 -335 500 -640 480 -640 480 -500 333 -640 594 -640 427 -500 375 -458 640 -640 153 -480 640 -640 480 -640 408 -640 427 -500 375 -640 426 -640 427 -640 640 -640 427 -640 480 -640 609 -640 464 -640 425 -612 612 -640 480 -640 426 -426 640 -640 458 -640 480 -640 480 -640 416 -640 427 -640 480 -640 427 -640 426 -640 429 -612 612 -640 427 -640 403 -640 480 -640 431 -427 640 -640 480 -640 480 -640 427 -480 640 -480 640 -612 612 -640 427 -640 425 -480 640 -500 333 -640 480 -623 515 -375 500 -640 425 -459 640 -640 513 -356 373 -640 428 -640 427 -389 640 -640 408 -640 480 -640 517 -427 640 -640 426 -480 640 -640 404 -640 480 -427 640 -640 632 -500 375 -480 640 -640 415 -334 500 -375 500 -480 640 -640 480 -640 480 -491 640 -640 425 -480 640 -640 410 -612 612 -640 480 -480 640 -480 640 -640 427 -640 480 -640 452 -431 640 -640 428 -251 500 -640 426 -640 502 -640 427 -640 453 -640 480 -640 426 -640 451 -640 480 -640 428 -640 480 -640 480 -640 409 -493 640 -640 480 -500 334 -640 424 -640 518 -640 426 -598 640 -640 427 -640 427 -640 426 -640 427 -640 424 -375 500 -425 500 -640 418 -500 375 -640 480 -640 428 -480 640 -640 426 -500 335 -513 640 -375 500 -597 400 -640 427 -640 480 -640 480 -640 606 -640 380 -640 427 -640 480 -640 426 -640 618 -428 640 -640 425 -480 272 -429 640 -427 640 -640 404 -640 427 -375 500 -500 375 -640 426 -480 640 -480 640 -640 481 -612 612 -640 427 -640 480 -640 478 -640 480 -640 480 -426 640 -640 427 -640 424 -640 428 -640 480 -640 522 -480 640 -640 480 -375 500 -480 640 -640 425 -640 427 -640 383 -640 480 -600 600 -640 427 -640 480 -640 480 -620 413 -640 480 -640 417 -544 640 -515 640 -427 640 -640 480 -640 480 -640 424 -375 500 -640 480 -640 499 -500 332 -383 640 -500 375 -640 480 -640 427 -428 640 -640 481 -640 428 -640 640 -500 375 -640 359 -640 461 -640 426 -640 426 -427 640 -640 480 -640 480 -640 426 -640 480 -448 277 -640 428 -640 393 -500 324 -640 432 -640 480 -479 640 -640 425 -500 375 -640 428 -480 640 -427 640 -640 427 -427 640 -640 484 -640 427 -612 612 -480 640 -500 375 -640 481 -480 640 -480 640 -640 425 -480 640 -604 453 -440 300 -640 477 -640 426 -640 427 -640 480 -640 480 -426 640 -478 640 -640 640 -640 640 -612 612 -640 480 -640 480 -640 427 -532 640 -480 640 -500 332 -612 612 -640 427 -640 480 -640 480 -640 480 -640 480 -640 480 -375 500 -640 640 -640 423 -640 509 -640 396 -640 428 -480 640 -640 480 -426 640 -500 375 -640 480 -640 427 -500 400 -640 427 -640 414 -640 427 -334 500 -640 426 -640 427 -427 640 -427 640 -500 332 -640 480 -360 640 -640 428 -640 426 -480 640 -640 427 -640 427 -422 640 -640 360 -400 500 -480 640 -640 427 -375 500 -335 500 -640 361 -331 500 -640 480 -640 480 -640 480 -640 536 -640 640 -428 640 -640 427 -640 480 -500 333 -640 427 -640 385 -480 640 -640 428 -500 375 -640 425 -427 640 -480 640 -480 640 -640 427 -640 427 -640 480 -640 427 -640 427 -640 480 -462 640 -640 480 -640 480 -640 640 -426 640 -640 427 -640 425 -428 640 -640 427 -640 424 -640 427 -500 375 -479 640 -640 425 -640 428 -500 375 -640 426 -640 480 -427 640 -500 333 -640 480 -425 640 -640 410 -640 480 -640 425 -480 640 -640 480 -640 427 -640 453 -640 426 -640 480 -640 483 -640 427 -640 427 -640 450 -612 612 -640 478 -478 640 -425 640 -640 424 -640 427 -640 427 -640 480 -375 500 -500 439 -640 359 -640 426 -640 480 -480 640 -640 427 -640 480 -640 480 -500 375 -640 480 -640 427 -640 480 -640 426 -433 640 -640 427 -640 463 -640 425 -640 425 -640 426 -640 424 -640 426 -640 429 -640 427 -500 333 -640 480 -640 480 -640 480 -640 427 -480 640 -480 640 -480 485 -640 427 -640 427 -640 428 -480 640 -371 500 -500 375 -640 427 -500 375 -375 500 -500 375 -640 428 -500 375 -640 480 -640 626 -640 360 -640 564 -640 424 -640 480 -375 500 -640 428 -640 427 -640 426 -479 640 -640 512 -640 480 -488 640 -334 500 -640 427 -480 640 -640 499 -480 640 -640 480 -640 627 -640 425 -640 480 -426 640 -640 424 -640 480 -640 427 -640 427 -640 569 -640 480 -640 426 -480 640 -640 480 -481 640 -428 640 -640 427 -640 427 -640 422 -640 429 -480 360 -640 480 -640 480 -640 376 -640 346 -428 640 -640 427 -640 427 -640 360 -640 458 -427 640 -640 479 -500 375 -640 480 -400 300 -500 375 -480 640 -640 427 -428 640 -640 640 -480 640 -640 640 -640 480 -640 471 -640 455 -640 427 -640 480 -640 425 -424 640 -640 361 -640 419 -640 480 -376 500 -640 480 -640 436 -500 375 -480 640 -640 480 -640 481 -640 254 -640 427 -640 427 -640 426 -640 453 -480 640 -640 427 -428 640 -427 640 -640 299 -469 640 -640 480 -640 480 -616 640 -640 480 -500 375 -375 500 -612 612 -332 500 -640 394 -612 612 -640 427 -640 428 -640 426 -640 480 -500 375 -640 427 -480 640 -640 480 -480 640 -640 456 -427 640 -640 480 -559 600 -375 500 -500 375 -640 480 -640 427 -640 480 -480 640 -500 333 -640 184 -427 640 -500 375 -640 480 -640 464 -640 481 -640 326 -426 640 -640 426 -640 427 -500 375 -640 352 -640 480 -640 479 -615 640 -640 425 -640 427 -640 363 -640 480 -640 437 -640 480 -480 319 -600 600 -640 453 -500 332 -640 424 -640 490 -640 480 -356 500 -640 480 -500 333 -375 500 -640 427 -640 480 -640 429 -640 428 -640 425 -640 489 -333 500 -640 439 -480 640 -640 426 -612 612 -391 640 -640 480 -640 427 -281 640 -640 424 -480 640 -640 359 -640 427 -640 480 -480 640 -640 480 -500 375 -640 427 -640 427 -640 427 -640 427 -640 480 -640 480 -640 427 -612 612 -427 640 -640 480 -480 640 -640 480 -640 480 -640 427 -500 375 -427 640 -480 640 -640 428 -640 480 -640 480 -640 457 -640 360 -640 480 -500 337 -640 464 -427 640 -640 424 -640 400 -500 333 -640 427 -500 332 -640 480 -480 640 -640 427 -640 427 -525 350 -640 351 -640 425 -640 480 -640 480 -640 426 -328 500 -575 640 -640 259 -640 426 -640 401 -500 375 -440 500 -640 427 -640 354 -480 640 -640 480 -640 480 -640 480 -640 415 -600 327 -457 640 -500 333 -480 640 -612 612 -640 640 -640 480 -640 424 -425 640 -640 408 -640 431 -640 424 -640 427 -500 500 -425 640 -500 375 -640 410 -640 428 -640 480 -480 640 -640 480 -479 640 -640 480 -500 375 -424 640 -640 480 -640 426 -640 428 -640 425 -640 427 -640 575 -640 438 -640 480 -480 640 -612 612 -640 426 -640 427 -640 443 -640 376 -500 375 -427 640 -612 612 -427 640 -426 640 -640 480 -640 480 -383 640 -640 482 -640 480 -640 480 -640 425 -640 424 -424 640 -640 640 -640 428 -640 531 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -640 478 -640 483 -640 430 -640 480 -560 640 -426 640 -640 427 -400 500 -500 388 -640 476 -640 427 -640 427 -640 427 -640 424 -480 640 -612 612 -538 360 -480 640 -640 428 -604 402 -375 500 -640 480 -500 375 -500 375 -476 640 -640 495 -640 640 -402 640 -640 478 -640 480 -640 427 -475 640 -640 480 -640 480 -640 428 -600 450 -640 433 -426 640 -480 640 -640 480 -640 427 -640 625 -640 480 -640 427 -480 640 -457 640 -640 480 -640 480 -612 612 -640 425 -480 640 -640 427 -640 550 -640 426 -640 427 -640 640 -640 480 -640 480 -640 427 -360 328 -640 424 -315 484 -500 375 -640 427 -640 438 -640 426 -640 466 -425 640 -640 427 -640 427 -640 426 -640 480 -640 480 -640 427 -500 467 -640 401 -640 426 -640 480 -375 500 -640 481 -360 640 -546 640 -640 480 -480 640 -640 480 -640 427 -640 428 -640 506 -448 336 -640 425 -612 612 -428 640 -480 640 -480 640 -481 640 -640 480 -640 427 -640 477 -640 480 -612 612 -500 500 -640 426 -640 478 -640 427 -500 342 -426 640 -375 500 -640 427 -416 640 -640 446 -640 480 -640 480 -640 424 -640 427 -640 480 -640 427 -418 640 -640 426 -640 426 -427 640 -640 480 -640 481 -640 480 -375 500 -640 480 -640 480 -640 480 -640 480 -640 428 -640 392 -426 640 -640 480 -640 480 -640 427 -640 383 -640 529 -640 482 -640 427 -640 427 -640 457 -427 640 -480 640 -640 411 -640 480 -640 480 -640 360 -640 427 -640 480 -640 426 -640 401 -640 360 -640 480 -480 640 -427 640 -640 480 -640 428 -640 480 -596 640 -500 333 -640 480 -640 496 -409 500 -640 495 -455 341 -500 332 -427 640 -640 427 -640 427 -375 500 -640 429 -640 480 -640 427 -640 480 -640 480 -640 478 -426 640 -640 360 -640 384 -640 423 -640 427 -640 480 -434 640 -640 426 -640 427 -640 427 -640 427 -640 427 -640 480 -640 396 -640 480 -640 426 -640 480 -424 640 -640 479 -640 425 -480 640 -640 480 -640 480 -640 515 -640 480 -480 640 -640 428 -640 480 -640 426 -640 426 -480 640 -480 640 -640 480 -640 480 -640 424 -480 640 -640 426 -640 448 -640 425 -427 640 -375 500 -640 480 -480 640 -500 281 -480 640 -640 452 -360 640 -640 243 -640 480 -640 480 -640 514 -640 446 -640 428 -640 480 -457 640 -424 640 -480 640 -500 375 -612 612 -640 453 -640 427 -480 640 -640 453 -513 640 -640 426 -640 480 -640 427 -500 375 -640 480 -424 640 -500 375 -640 480 -640 426 -640 480 -640 400 -480 640 -424 640 -500 375 -640 512 -640 480 -640 425 -640 480 -500 375 -500 375 -428 640 -640 488 -640 480 -640 425 -500 375 -500 375 -640 624 -640 429 -500 500 -640 429 -640 480 -413 640 -480 640 -427 640 -427 640 -480 640 -640 347 -640 516 -427 640 -427 640 -500 375 -640 480 -426 640 -436 640 -640 428 -640 426 -640 427 -640 480 -333 500 -640 426 -480 640 -640 427 -640 480 -480 640 -480 640 -500 375 -427 640 -640 427 -510 640 -480 640 -419 637 -427 640 -352 288 -480 640 -640 524 -480 640 -367 500 -640 480 -640 480 -640 426 -480 640 -640 480 -519 640 -640 427 -640 329 -640 427 -640 383 -640 480 -480 640 -640 427 -640 429 -480 640 -400 500 -640 426 -640 427 -500 333 -480 640 -299 500 -640 480 -640 480 -640 480 -334 500 -640 480 -640 480 -640 434 -500 375 -479 640 -640 427 -640 360 -640 409 -427 640 -640 510 -427 640 -640 479 -640 212 -480 640 -640 480 -640 427 -640 478 -396 500 -640 387 -640 640 -640 477 -640 417 -640 439 -640 427 -640 425 -640 438 -450 600 -640 424 -640 427 -640 361 -640 480 -640 427 -640 512 -640 480 -640 480 -640 471 -500 311 -640 426 -640 426 -640 480 -640 428 -500 375 -480 640 -640 471 -640 480 -640 428 -640 427 -640 451 -480 640 -427 640 -388 640 -640 314 -640 427 -500 400 -500 334 -640 426 -640 427 -640 480 -640 424 -427 640 -640 471 -640 480 -640 431 -640 427 -640 427 -514 640 -500 271 -329 640 -640 480 -500 332 -640 425 -480 640 -500 375 -640 428 -640 426 -640 425 -640 480 -640 412 -640 431 -640 443 -640 481 -500 333 -640 425 -640 384 -427 640 -640 427 -427 640 -500 375 -640 480 -640 427 -640 360 -480 640 -640 480 -500 233 -480 640 -640 426 -449 640 -640 396 -640 426 -566 640 -640 427 -640 529 -612 612 -640 409 -640 426 -480 640 -640 480 -640 428 -500 375 -500 375 -640 512 -640 427 -640 480 -425 640 -640 426 -612 612 -398 640 -640 363 -640 469 -460 640 -640 482 -500 332 -640 425 -640 426 -640 426 -427 640 -640 480 -640 480 -640 427 -640 446 -640 424 -427 640 -640 480 -640 480 -640 427 -640 425 -424 640 -640 427 -640 480 -640 480 -640 400 -640 480 -480 640 -640 288 -480 640 -375 500 -640 480 -500 399 -640 480 -500 375 -480 640 -426 640 -640 480 -640 480 -640 480 -640 427 -640 544 -640 429 -500 365 -640 480 -640 426 -640 428 -640 480 -640 429 -483 640 -640 427 -640 426 -640 480 -640 513 -500 375 -500 396 -381 640 -640 480 -500 375 -640 480 -427 640 -640 426 -640 427 -640 458 -640 360 -640 426 -466 640 -640 480 -480 640 -427 640 -640 427 -640 425 -640 480 -640 428 -500 461 -119 184 -640 427 -640 426 -640 480 -492 500 -640 480 -427 640 -640 360 -640 480 -640 480 -640 640 -375 500 -640 427 -640 423 -568 320 -640 480 -640 480 -640 389 -480 640 -407 640 -640 480 -640 471 -640 445 -480 640 -335 500 -480 640 -640 480 -640 480 -640 428 -640 400 -640 480 -640 480 -640 361 -640 640 -500 375 -427 640 -640 480 -640 424 -640 426 -640 479 -480 640 -640 480 -500 377 -500 362 -500 375 -640 480 -500 333 -640 427 -640 480 -640 427 -640 480 -500 374 -640 361 -640 480 -640 427 -570 640 -640 425 -640 480 -640 480 -640 480 -480 640 -500 334 -640 480 -480 640 -480 640 -500 375 -480 640 -640 640 -640 480 -640 275 -640 480 -500 375 -640 480 -398 640 -640 427 -640 413 -640 509 -640 435 -640 426 -640 361 -427 640 -640 427 -640 480 -429 640 -640 480 -640 533 -500 375 -480 640 -640 425 -640 480 -640 470 -640 423 -640 480 -640 480 -427 640 -640 480 -333 500 -640 427 -640 427 -640 424 -640 480 -428 640 -640 480 -640 429 -640 427 -375 500 -640 427 -640 427 -480 640 -640 329 -640 480 -640 425 -480 640 -640 354 -640 427 -640 480 -640 480 -640 480 -500 375 -640 480 -426 640 -427 640 -640 480 -500 400 -480 640 -427 640 -640 427 -640 369 -600 640 -480 640 -612 612 -640 424 -478 640 -640 427 -640 426 -640 480 -480 640 -640 269 -640 640 -480 640 -420 640 -640 480 -480 640 -427 640 -640 427 -640 499 -480 640 -640 427 -640 478 -512 640 -640 427 -612 612 -640 407 -640 426 -555 640 -640 428 -427 640 -640 427 -640 480 -640 480 -640 426 -640 480 -640 480 -640 335 -640 425 -480 640 -640 428 -640 489 -640 458 -612 612 -460 640 -500 333 -332 500 -480 640 -640 427 -640 426 -640 480 -500 375 -640 425 -640 427 -612 612 -640 480 -640 480 -568 640 -640 427 -375 500 -500 345 -640 427 -640 480 -640 480 -640 426 -480 640 -427 640 -500 375 -500 375 -640 480 -640 287 -640 427 -640 480 -640 427 -500 333 -640 427 -640 480 -480 640 -640 426 -640 480 -640 426 -425 640 -480 640 -512 640 -640 425 -640 427 -426 640 -640 427 -640 480 -478 640 -480 640 -427 640 -500 400 -640 480 -640 509 -640 399 -500 333 -640 640 -640 425 -640 360 -640 480 -640 419 -500 375 -504 640 -640 480 -640 480 -640 480 -640 480 -500 375 -500 333 -640 427 -640 480 -640 424 -640 424 -640 427 -600 600 -640 480 -500 375 -500 332 -427 640 -640 448 -640 426 -500 375 -640 480 -640 462 -640 429 -640 480 -640 480 -425 640 -500 333 -500 375 -427 640 -640 480 -640 480 -640 428 -612 612 -640 480 -640 408 -600 459 -640 480 -427 640 -640 480 -640 480 -640 427 -426 640 -640 424 -640 516 -640 425 -489 640 -640 439 -640 391 -640 426 -640 480 -640 427 -640 427 -480 640 -480 640 -640 472 -640 480 -640 480 -640 384 -640 479 -612 612 -640 426 -480 640 -500 272 -640 427 -640 471 -360 640 -640 427 -640 480 -640 480 -640 424 -640 498 -431 640 -640 426 -640 427 -640 478 -640 426 -426 640 -640 480 -640 480 -500 375 -427 640 -640 346 -640 383 -640 333 -640 480 -500 317 -462 640 -427 640 -640 457 -640 404 -640 425 -640 360 -480 640 -640 427 -640 427 -425 640 -640 425 -640 427 -480 640 -640 427 -640 354 -427 640 -640 382 -640 480 -640 436 -350 500 -640 429 -640 427 -375 500 -612 612 -640 480 -500 333 -383 640 -500 334 -640 480 -494 640 -640 426 -640 427 -427 640 -640 480 -640 444 -640 424 -640 426 -640 480 -640 480 -427 640 -500 411 -427 640 -640 426 -640 427 -640 427 -640 480 -640 424 -640 424 -425 640 -629 640 -640 480 -640 427 -640 427 -640 480 -640 427 -427 640 -640 391 -640 480 -500 368 -500 340 -640 512 -640 427 -426 640 -426 640 -640 426 -640 448 -640 480 -640 588 -612 612 -640 480 -500 269 -492 640 -640 427 -640 478 -640 509 -480 640 -640 480 -640 360 -640 480 -640 427 -640 429 -640 513 -640 480 -640 425 -640 488 -640 345 -640 461 -500 375 -640 480 -500 375 -480 640 -500 345 -640 480 -640 415 -640 428 -640 480 -480 640 -640 559 -640 360 -640 480 -640 426 -427 640 -640 427 -500 297 -427 640 -448 640 -640 427 -640 425 -640 480 -640 480 -384 640 -426 640 -640 504 -640 427 -481 640 -480 640 -640 456 -640 480 -640 479 -480 640 -612 612 -640 427 -640 418 -640 360 -427 640 -640 426 -640 427 -640 480 -500 333 -375 500 -500 334 -480 360 -480 640 -640 480 -640 480 -640 348 -375 500 -640 426 -426 640 -640 425 -640 426 -500 375 -500 375 -640 427 -640 480 -640 426 -427 640 -640 502 -480 640 -640 360 -640 313 -640 427 -640 478 -427 640 -461 640 -480 640 -640 407 -550 640 -640 480 -480 640 -640 481 -640 427 -612 612 -550 275 -640 430 -640 480 -480 640 -640 427 -640 480 -640 427 -640 480 -640 427 -640 384 -640 427 -640 480 -640 427 -640 449 -375 500 -640 359 -396 640 -640 428 -640 428 -400 600 -640 425 -427 640 -640 480 -640 480 -640 481 -428 640 -640 359 -612 612 -640 438 -640 358 -640 394 -640 480 -640 480 -640 399 -427 640 -500 333 -640 427 -640 427 -640 480 -640 561 -640 428 -640 361 -640 587 -640 480 -640 480 -640 480 -640 427 -400 500 -500 375 -500 309 -640 403 -640 480 -381 640 -640 427 -481 640 -640 480 -640 427 -640 311 -480 640 -640 424 -640 480 -612 612 -640 480 -640 480 -640 494 -640 574 -640 426 -469 640 -640 480 -640 480 -425 640 -640 481 -640 480 -640 359 -640 472 -640 476 -640 360 -375 500 -640 409 -422 640 -640 383 -640 359 -640 437 -640 480 -640 350 -640 480 -640 427 -640 401 -640 480 -500 377 -640 426 -612 612 -500 333 -640 425 -480 640 -640 369 -640 427 -333 500 -427 640 -427 640 -640 427 -416 640 -640 424 -640 427 -640 463 -427 640 -640 480 -640 480 -640 480 -640 480 -640 426 -640 480 -640 457 -500 335 -640 364 -640 428 -640 427 -640 424 -640 427 -640 425 -640 425 -640 609 -480 640 -640 426 -640 426 -640 480 -640 480 -640 480 -640 480 -500 375 -640 480 -640 391 -479 640 -427 640 -640 427 -461 640 -640 425 -500 375 -500 400 -640 427 -640 502 -480 640 -500 397 -640 480 -427 640 -500 334 -402 640 -640 427 -640 427 -640 480 -640 427 -640 425 -640 609 -640 480 -640 427 -640 567 -640 424 -640 427 -640 427 -640 428 -640 480 -640 480 -479 640 -640 480 -425 640 -640 553 -640 480 -640 480 -640 480 -640 425 -640 480 -640 448 -420 640 -480 640 -480 640 -480 640 -427 640 -640 502 -500 375 -360 640 -427 640 -500 491 -640 427 -640 426 -640 427 -640 428 -640 480 -500 375 -640 480 -480 640 -640 427 -640 427 -640 427 -428 640 -428 640 -640 480 -640 480 -640 480 -640 448 -640 390 -640 478 -427 640 -500 333 -450 600 -640 391 -600 399 -480 640 -640 361 -500 380 -640 494 -640 451 -640 427 -427 640 -640 480 -640 480 -640 360 -640 593 -500 375 -640 434 -480 640 -640 480 -427 640 -425 640 -640 640 -640 418 -640 399 -640 427 -612 612 -640 427 -640 480 -640 491 -427 640 -427 640 -640 480 -640 640 -640 519 -640 427 -375 500 -478 640 -336 500 -480 640 -500 421 -480 640 -640 421 -640 426 -500 335 -640 426 -640 480 -640 427 -640 480 -510 640 -640 427 -640 273 -640 428 -640 426 -640 480 -640 480 -463 640 -640 424 -425 640 -500 375 -427 640 -480 480 -640 424 -640 427 -640 480 -500 375 -640 427 -640 428 -640 446 -640 427 -500 375 -375 500 -500 375 -427 640 -640 640 -480 640 -640 428 -640 480 -640 427 -640 425 -334 500 -640 361 -612 612 -640 427 -341 500 -612 612 -640 428 -640 360 -640 360 -640 480 -640 370 -640 475 -640 479 -640 427 -456 640 -640 427 -428 640 -640 480 -640 492 -640 558 -640 480 -427 640 -640 496 -480 640 -500 375 -640 425 -480 640 -640 426 -640 464 -640 480 -640 480 -500 328 -640 640 -640 640 -640 429 -640 426 -640 427 -640 426 -640 410 -640 457 -640 426 -480 640 -640 480 -640 480 -640 480 -640 480 -640 427 -424 640 -640 428 -500 375 -428 640 -337 500 -640 426 -334 500 -640 480 -640 289 -640 425 -500 375 -427 640 -640 480 -360 640 -333 500 -640 480 -640 574 -640 427 -640 480 -640 427 -426 640 -640 427 -640 426 -640 480 -640 427 -375 500 -500 375 -640 480 -640 335 -640 444 -640 212 -640 480 -546 640 -640 480 -640 359 -640 426 -500 375 -640 426 -640 480 -500 400 -640 480 -640 480 -425 640 -478 640 -480 422 -425 640 -481 640 -400 600 -640 480 -640 480 -640 480 -480 640 -612 612 -462 640 -439 640 -480 640 -612 612 -426 640 -500 394 -640 428 -640 444 -640 427 -640 427 -640 428 -640 380 -640 480 -640 480 -640 438 -612 612 -640 427 -444 500 -640 360 -640 423 -640 640 -427 640 -640 480 -640 480 -640 480 -480 640 -640 426 -640 480 -640 426 -640 427 -640 456 -640 426 -375 500 -640 438 -640 459 -640 366 -640 480 -640 480 -640 480 -428 640 -640 480 -640 345 -640 429 -480 640 -480 640 -500 332 -640 425 -418 640 -640 233 -640 480 -375 500 -640 480 -427 640 -640 428 -640 480 -424 640 -332 500 -640 443 -640 480 -640 427 -640 463 -600 400 -640 425 -640 427 -640 480 -640 480 -640 428 -500 375 -640 480 -640 459 -640 427 -640 480 -640 480 -480 640 -427 640 -640 381 -426 640 -427 640 -500 400 -640 425 -480 640 -424 640 -640 427 -640 480 -640 480 -612 612 -640 427 -640 359 -333 500 -426 640 -640 427 -640 480 -640 480 -640 480 -640 426 -640 480 -426 640 -500 375 -640 427 -500 318 -500 375 -640 481 -640 360 -640 427 -426 640 -500 375 -640 427 -640 480 -500 334 -640 480 -640 427 -480 640 -640 427 -640 429 -640 426 -640 426 -640 373 -640 426 -640 426 -640 457 -640 512 -640 480 -478 640 -640 480 -640 383 -426 640 -640 481 -640 427 -500 375 -640 426 -640 480 -425 640 -640 428 -478 640 -427 640 -640 287 -640 426 -640 480 -640 427 -419 640 -640 640 -640 427 -640 480 -640 480 -500 333 -640 426 -480 640 -600 596 -640 428 -640 475 -640 360 -640 480 -640 427 -640 480 -640 478 -640 415 -640 480 -480 640 -640 457 -500 375 -429 640 -427 640 -640 619 -640 427 -640 225 -640 426 -426 640 -640 534 -640 427 -640 480 -640 444 -640 480 -640 480 -640 478 -640 313 -640 426 -640 426 -640 410 -640 424 -640 480 -480 640 -500 333 -640 480 -640 384 -500 341 -640 480 -500 500 -640 427 -640 480 -500 400 -480 640 -640 429 -427 640 -500 281 -640 480 -640 439 -640 480 -640 428 -640 480 -640 425 -500 375 -640 416 -640 480 -640 426 -640 480 -640 512 -640 366 -612 612 -344 500 -640 320 -640 533 -500 375 -640 480 -640 480 -500 334 -480 640 -640 427 -500 376 -640 480 -480 640 -640 424 -500 500 -480 640 -480 640 -640 401 -640 480 -500 499 -480 640 -640 480 -640 427 -640 480 -400 500 -640 424 -640 424 -640 480 -427 640 -640 427 -640 425 -500 375 -640 428 -640 414 -640 426 -640 426 -640 428 -427 640 -640 480 -612 612 -640 480 -640 480 -640 457 -500 335 -480 640 -640 427 -500 375 -480 640 -640 427 -640 480 -640 480 -483 640 -480 640 -640 427 -640 455 -640 480 -480 320 -640 480 -434 640 -640 425 -436 640 -396 640 -500 375 -640 478 -640 426 -640 480 -640 480 -640 427 -427 640 -640 427 -640 480 -640 426 -500 375 -500 500 -640 412 -640 342 -480 640 -640 426 -333 500 -640 458 -640 480 -500 500 -640 360 -640 480 -640 640 -512 640 -612 612 -640 427 -640 427 -636 640 -612 612 -640 480 -640 480 -640 480 -640 389 -640 542 -640 480 -640 430 -640 425 -500 333 -640 640 -640 427 -425 640 -427 640 -640 480 -333 500 -640 426 -640 426 -640 512 -640 480 -360 640 -640 427 -333 357 -500 375 -478 640 -640 478 -640 427 -640 428 -640 427 -640 413 -457 640 -612 612 -480 640 -640 483 -640 480 -640 480 -640 360 -480 640 -427 640 -640 480 -640 511 -640 480 -640 480 -300 400 -640 360 -375 500 -640 424 -640 480 -640 480 -640 574 -427 640 -640 478 -640 480 -534 640 -480 640 -640 480 -640 425 -372 500 -640 480 -640 425 -640 425 -640 384 -640 480 -497 500 -640 426 -427 640 -640 429 -640 480 -640 427 -640 428 -640 480 -484 640 -640 449 -459 640 -640 480 -640 601 -612 612 -640 480 -335 500 -427 640 -640 411 -500 332 -640 360 -480 640 -640 427 -426 640 -447 500 -640 424 -640 427 -640 346 -640 480 -640 360 -640 480 -428 640 -500 299 -640 427 -640 457 -640 427 -478 500 -427 640 -640 427 -640 449 -640 466 -640 480 -427 640 -640 480 -640 480 -640 480 -640 558 -640 480 -500 334 -640 444 -640 480 -361 640 -480 640 -640 473 -600 600 -640 496 -500 357 -480 640 -640 480 -500 330 -375 500 -640 427 -500 375 -541 640 -480 640 -640 480 -640 416 -640 480 -640 425 -640 426 -500 376 -640 427 -427 640 -478 640 -640 427 -425 640 -640 427 -640 425 -640 426 -640 360 -425 640 -375 500 -640 480 -640 427 -427 640 -640 443 -322 365 -638 512 -640 424 -640 478 -639 640 -640 480 -500 333 -640 427 -640 433 -640 502 -640 614 -640 480 -640 480 -480 640 -640 480 -640 480 -640 480 -375 500 -640 426 -640 299 -333 500 -640 427 -500 333 -640 480 -427 640 -431 640 -500 333 -640 480 -640 480 -640 434 -640 484 -640 458 -640 296 -640 427 -427 640 -640 480 -336 500 -472 640 -500 332 -640 427 -500 375 -640 480 -480 640 -480 640 -500 386 -612 612 -640 213 -640 426 -334 500 -640 471 -640 360 -640 586 -640 427 -640 424 -640 413 -640 427 -640 427 -612 612 -640 480 -640 427 -331 500 -640 428 -500 336 -500 375 -640 560 -640 480 -612 612 -640 480 -640 427 -500 375 -427 640 -640 480 -640 480 -640 366 -640 425 -640 427 -640 480 -426 640 -640 480 -640 640 -640 480 -640 425 -640 480 -500 333 -640 427 -640 480 -640 478 -478 640 -640 428 -640 480 -500 375 -640 501 -500 375 -427 640 -640 481 -640 426 -640 480 -426 640 -480 640 -435 640 -427 640 -640 427 -640 427 -640 480 -240 320 -640 428 -640 640 -640 509 -640 480 -640 480 -500 394 -375 500 -428 640 -640 480 -640 426 -640 480 -500 333 -428 640 -375 500 -431 640 -640 480 -640 427 -590 640 -500 465 -466 640 -600 600 -433 640 -500 332 -434 640 -640 640 -640 480 -640 425 -480 640 -480 640 -640 480 -640 480 -640 480 -640 301 -640 480 -640 478 -640 360 -640 425 -500 376 -640 427 -640 432 -640 427 -460 390 -500 375 -640 426 -480 640 -640 426 -640 426 -640 427 -426 640 -500 375 -640 426 -640 480 -640 427 -640 263 -480 640 -640 480 -640 425 -500 333 -640 480 -640 427 -640 427 -480 640 -640 480 -640 449 -500 327 -640 480 -500 350 -640 480 -640 320 -480 640 -400 500 -612 612 -425 640 -372 500 -375 500 -500 334 -640 427 -427 640 -640 480 -480 640 -640 427 -500 375 -478 640 -465 500 -640 428 -336 500 -480 640 -410 640 -416 500 -640 453 -500 375 -640 480 -500 375 -360 640 -640 401 -640 640 -640 480 -640 427 -640 480 -640 426 -332 500 -640 361 -640 480 -427 640 -640 426 -640 505 -640 588 -640 427 -640 409 -500 333 -500 375 -500 376 -640 415 -640 480 -640 480 -640 426 -640 480 -640 427 -640 399 -600 366 -640 360 -640 457 -640 480 -640 427 -640 427 -640 428 -480 640 -640 521 -500 333 -640 480 -500 325 -581 640 -640 480 -640 426 -500 333 -480 640 -640 428 -640 426 -427 640 -640 427 -640 427 -459 640 -375 500 -480 640 -640 427 -640 427 -640 451 -612 612 -640 480 -640 427 -427 640 -612 612 -640 427 -429 640 -640 480 -480 640 -640 480 -640 428 -480 640 -500 295 -640 424 -640 428 -500 375 -480 640 -428 640 -480 640 -640 427 -375 500 -500 333 -612 612 -640 480 -640 463 -500 333 -640 427 -462 640 -640 480 -640 480 -640 433 -640 618 -640 480 -425 640 -500 375 -640 214 -640 480 -640 480 -640 480 -640 480 -640 480 -500 356 -375 500 -640 480 -640 427 -480 353 -640 640 -500 375 -640 480 -640 424 -640 427 -640 426 -640 426 -640 640 -640 427 -640 427 -500 375 -640 434 -640 427 -640 427 -500 375 -500 333 -640 425 -420 640 -427 640 -640 428 -640 480 -640 480 -640 360 -374 500 -640 428 -375 500 -640 408 -500 375 -433 640 -612 612 -640 480 -640 480 -426 640 -427 640 -640 487 -480 640 -423 640 -640 480 -640 427 -640 480 -335 640 -640 426 -640 440 -640 480 -427 640 -640 480 -427 640 -640 480 -640 427 -500 375 -427 640 -640 427 -640 540 -640 426 -640 427 -500 377 -427 640 -640 480 -640 425 -500 332 -640 571 -640 428 -480 640 -640 428 -478 640 -640 569 -640 480 -428 640 -640 424 -640 480 -640 427 -640 514 -640 485 -640 409 -427 640 -640 427 -640 427 -429 640 -389 640 -640 480 -640 427 -359 640 -640 425 -640 426 -640 427 -640 373 -640 426 -640 427 -640 427 -486 640 -640 480 -427 640 -639 640 -500 375 -500 373 -640 480 -426 640 -640 366 -640 338 -333 500 -500 338 -427 640 -640 479 -500 375 -640 480 -640 519 -640 427 -320 240 -640 427 -612 612 -640 341 -428 640 -480 640 -640 466 -640 473 -640 313 -480 640 -640 640 -640 476 -640 480 -640 427 -640 480 -375 500 -427 640 -640 426 -640 480 -640 480 -444 640 -426 640 -427 640 -380 640 -640 480 -640 480 -640 339 -640 427 -640 573 -640 480 -480 640 -640 427 -640 480 -640 428 -640 426 -500 497 -640 428 -640 475 -640 361 -640 426 -256 217 -640 480 -640 480 -640 480 -427 640 -640 480 -500 375 -640 424 -500 341 -640 480 -453 640 -640 444 -500 400 -480 640 -500 333 -480 640 -640 427 -640 478 -640 424 -640 424 -640 427 -500 332 -427 640 -500 375 -500 334 -361 500 -640 430 -640 427 -500 375 -640 479 -428 640 -640 479 -427 640 -428 640 -640 425 -640 480 -640 424 -514 640 -480 640 -640 428 -640 480 -640 479 -640 426 -640 427 -640 424 -500 375 -360 640 -640 479 -427 640 -640 490 -500 375 -480 640 -500 333 -640 423 -640 426 -480 640 -640 480 -640 415 -640 431 -480 640 -640 423 -640 480 -428 640 -500 375 -640 396 -640 427 -640 427 -500 375 -640 480 -640 427 -640 499 -480 640 -480 640 -640 427 -640 470 -640 425 -500 333 -500 335 -640 410 -160 120 -640 428 -478 640 -640 436 -612 612 -640 480 -500 375 -640 425 -427 640 -400 453 -437 640 -480 640 -612 612 -500 281 -640 480 -425 640 -480 640 -640 344 -640 480 -640 428 -479 640 -640 428 -480 640 -500 375 -640 428 -640 427 -640 426 -640 480 -500 438 -427 640 -640 480 -640 480 -480 640 -640 362 -640 427 -640 480 -320 500 -640 393 -500 375 -453 640 -427 640 -640 503 -640 429 -640 425 -424 640 -426 640 -640 480 -640 480 -640 480 -640 426 -640 480 -426 640 -640 290 -640 480 -480 360 -640 480 -517 640 -480 640 -640 480 -480 640 -500 335 -450 338 -427 640 -640 480 -640 480 -640 480 -640 426 -640 480 -640 600 -431 640 -640 480 -428 640 -435 640 -640 427 -640 640 -640 425 -640 480 -640 426 -640 480 -640 426 -500 375 -640 480 -500 471 -640 480 -640 426 -640 426 -480 640 -640 431 -640 480 -640 429 -425 640 -640 342 -640 427 -640 480 -612 612 -640 428 -500 333 -252 252 -459 640 -640 427 -640 480 -389 640 -640 480 -640 427 -375 500 -640 425 -640 360 -489 640 -640 447 -500 334 -640 424 -480 640 -500 375 -640 425 -640 480 -427 640 -640 427 -640 480 -360 356 -500 375 -640 480 -640 427 -457 640 -500 375 -640 480 -479 640 -480 640 -640 427 -640 427 -640 478 -640 427 -640 480 -640 360 -640 480 -640 324 -640 427 -480 640 -640 427 -640 360 -640 429 -640 480 -331 500 -427 640 -640 458 -640 463 -640 427 -427 640 -640 480 -640 480 -640 427 -640 480 -442 640 -640 480 -640 426 -426 640 -640 429 -429 640 -640 426 -425 640 -640 480 -640 427 -640 440 -424 640 -640 426 -500 327 -640 480 -640 426 -640 480 -640 427 -480 640 -640 426 -640 480 -640 514 -500 384 -624 640 -457 640 -500 375 -640 486 -640 427 -640 480 -640 433 -426 640 -640 480 -640 411 -500 375 -640 360 -427 640 -640 427 -480 640 -640 288 -360 640 -640 427 -480 272 -640 480 -640 428 -640 480 -640 448 -640 640 -640 426 -640 427 -384 512 -640 427 -640 480 -640 426 -480 640 -480 640 -500 400 -500 335 -640 426 -640 480 -640 453 -480 640 -320 240 -640 480 -640 425 -640 480 -640 428 -375 500 -640 427 -640 458 -640 427 -640 320 -500 375 -500 407 -640 427 -389 640 -500 375 -640 483 -640 630 -480 640 -480 640 -640 480 -433 640 -480 640 -640 428 -640 412 -500 313 -640 427 -612 612 -480 640 -640 480 -480 640 -640 426 -640 426 -500 344 -640 361 -500 333 -640 480 -640 357 -640 427 -640 426 -640 429 -640 428 -640 426 -480 640 -640 263 -640 480 -640 480 -640 480 -640 486 -316 640 -480 640 -640 427 -640 480 -612 612 -640 523 -427 640 -480 640 -416 500 -640 428 -640 427 -576 576 -640 427 -640 480 -640 425 -640 427 -640 529 -640 428 -640 427 -500 332 -640 636 -640 480 -640 427 -640 426 -640 480 -640 480 -640 480 -640 480 -640 428 -640 427 -640 346 -640 480 -640 496 -640 480 -640 480 -480 640 -500 375 -640 506 -640 480 -426 640 -640 362 -480 640 -550 375 -640 428 -480 640 -640 428 -640 480 -640 428 -612 612 -375 500 -640 480 -640 429 -640 640 -640 457 -640 480 -640 360 -640 481 -640 458 -640 416 -480 640 -640 480 -640 400 -640 427 -640 453 -640 427 -640 359 -612 612 -480 640 -640 480 -640 427 -640 480 -640 428 -640 426 -480 640 -640 425 -640 428 -640 480 -640 480 -640 480 -640 480 -640 427 -640 480 -640 393 -640 426 -640 480 -500 495 -640 428 -640 426 -640 426 -480 640 -640 480 -480 640 -434 640 -578 433 -480 640 -640 427 -640 480 -500 433 -612 612 -640 427 -427 640 -428 640 -640 424 -480 640 -427 640 -478 640 -640 376 -332 500 -480 640 -640 389 -640 427 -640 427 -612 612 -640 480 -428 640 -640 478 -448 640 -427 640 -640 444 -500 375 -500 333 -500 375 -640 425 -480 640 -640 426 -640 427 -640 480 -640 480 -640 480 -500 332 -427 640 -640 480 -640 480 -640 480 -640 425 -640 480 -640 427 -640 480 -500 375 -640 426 -640 427 -640 427 -500 375 -640 428 -640 426 -640 428 -640 480 -640 426 -640 427 -640 360 -640 480 -640 479 -500 334 -334 500 -480 640 -640 464 -640 426 -500 375 -640 427 -500 375 -640 480 -480 640 -640 408 -640 408 -640 427 -640 424 -640 427 -640 427 -640 427 -640 425 -500 283 -480 640 -640 426 -518 640 -640 480 -640 559 -640 428 -640 480 -640 480 -640 480 -640 427 -640 426 -427 640 -333 500 -640 427 -640 480 -500 375 -640 480 -427 640 -640 458 -427 640 -640 480 -640 480 -480 640 -640 427 -640 427 -640 427 -640 480 -480 360 -640 427 -427 640 -640 428 -640 427 -375 500 -427 640 -640 427 -480 640 -424 640 -500 332 -500 375 -350 500 -640 427 -640 454 -480 640 -640 425 -640 533 -640 425 -500 375 -640 426 -640 503 -379 640 -640 377 -500 333 -480 640 -640 477 -480 640 -640 480 -640 480 -480 640 -640 426 -640 549 -640 480 -640 427 -500 375 -640 426 -640 361 -640 419 -428 640 -640 418 -612 612 -427 640 -640 427 -640 419 -500 236 -640 480 -640 480 -640 640 -640 425 -478 640 -500 452 -640 426 -640 426 -640 363 -640 360 -640 438 -478 640 -640 355 -640 427 -640 427 -500 375 -640 427 -640 480 -480 640 -640 457 -494 373 -640 511 -640 480 -500 333 -640 480 -500 375 -640 427 -383 640 -500 333 -640 383 -640 360 -640 428 -640 427 -640 427 -640 426 -612 612 -640 428 -640 426 -500 335 -375 500 -640 419 -415 640 -263 350 -640 480 -640 426 -375 500 -640 427 -640 427 -640 480 -500 375 -640 480 -500 333 -640 480 -640 480 -426 640 -640 480 -640 480 -375 500 -640 359 -640 427 -640 428 -640 480 -500 497 -427 640 -640 512 -427 500 -441 331 -640 458 -640 360 -640 425 -602 640 -640 425 -640 480 -640 427 -640 425 -480 640 -337 500 -640 480 -640 480 -640 459 -640 426 -640 480 -640 480 -640 640 -600 600 -480 640 -333 500 -640 426 -640 450 -333 500 -640 426 -640 427 -640 480 -640 480 -640 406 -480 640 -640 427 -640 418 -500 333 -640 427 -425 640 -640 480 -500 334 -640 480 -640 480 -640 480 -640 480 -640 629 -500 375 -427 640 -640 426 -640 480 -640 481 -640 396 -640 429 -640 483 -427 640 -640 427 -640 427 -640 457 -640 427 -612 612 -640 480 -640 480 -640 480 -640 480 -640 480 -474 640 -446 500 -500 375 -640 480 -640 465 -640 478 -640 448 -640 427 -500 375 -490 326 -640 427 -426 640 -640 428 -640 400 -640 345 -640 425 -640 480 -640 427 -640 480 -640 468 -500 375 -429 640 -640 427 -640 425 -640 584 -424 640 -640 403 -640 425 -640 426 -640 427 -640 480 -640 559 -640 221 -640 480 -640 426 -640 480 -612 612 -427 640 -640 480 -500 298 -426 640 -480 360 -480 640 -640 427 -640 480 -640 426 -640 361 -640 480 -640 366 -640 480 -500 375 -500 375 -478 640 -640 427 -640 428 -480 640 -640 428 -640 427 -640 426 -640 480 -640 425 -640 480 -640 480 -500 375 -640 480 -640 639 -640 559 -500 331 -394 640 -426 640 -640 480 -640 480 -640 480 -640 427 -428 640 -640 427 -640 393 -640 426 -640 424 -469 279 -427 640 -640 335 -640 430 -428 640 -500 640 -426 640 -398 640 -427 640 -640 427 -640 427 -640 427 -457 640 -425 640 -640 434 -500 411 -500 375 -640 480 -640 476 -640 480 -640 575 -640 427 -640 480 -425 640 -640 395 -640 451 -640 513 -640 480 -640 427 -481 640 -480 640 -640 427 -640 480 -480 640 -640 480 -640 427 -640 424 -640 480 -315 482 -640 426 -640 426 -640 480 -640 480 -640 480 -640 426 -453 640 -383 640 -600 450 -640 463 -640 480 -640 474 -640 480 -640 478 -500 375 -640 427 -612 612 -612 612 -640 383 -640 640 -640 480 -500 342 -500 333 -640 428 -640 480 -427 640 -640 427 -640 448 -434 640 -480 640 -640 427 -640 480 -640 480 -500 333 -640 587 -640 424 -448 640 -640 428 -640 406 -640 458 -600 400 -640 426 -500 375 -640 426 -425 640 -640 391 -500 375 -432 288 -334 500 -640 480 -500 380 -640 480 -500 333 -640 480 -375 500 -640 427 -640 429 -427 640 -500 396 -640 480 -640 480 -500 334 -640 339 -480 640 -640 265 -640 480 -640 480 -640 480 -500 375 -640 480 -479 640 -640 598 -640 427 -640 383 -494 640 -640 427 -500 333 -640 360 -427 640 -640 480 -640 481 -333 500 -480 640 -500 400 -640 372 -480 640 -480 640 -640 512 -640 480 -632 640 -640 480 -453 640 -640 480 -640 480 -361 640 -612 612 -640 427 -500 339 -640 480 -500 376 -500 375 -640 480 -640 363 -640 566 -640 425 -640 480 -500 400 -640 433 -640 427 -480 640 -640 427 -640 427 -640 427 -640 427 -640 353 -471 640 -358 640 -640 427 -640 480 -480 640 -640 480 -640 480 -640 427 -640 480 -640 480 -640 426 -640 480 -640 424 -612 612 -480 640 -640 468 -640 467 -513 640 -640 483 -640 428 -612 612 -427 640 -612 612 -500 333 -500 332 -640 480 -640 427 -444 640 -640 428 -640 487 -481 640 -426 319 -640 424 -333 500 -640 445 -640 427 -640 427 -640 640 -640 478 -500 333 -640 427 -426 640 -640 427 -478 640 -640 480 -518 640 -640 360 -640 480 -640 427 -427 640 -334 500 -640 426 -640 399 -480 640 -375 500 -640 523 -375 500 -338 500 -640 640 -480 640 -640 480 -640 427 -458 640 -640 328 -480 640 -480 640 -640 513 -640 427 -640 405 -640 480 -640 480 -640 426 -640 361 -640 424 -640 443 -640 480 -640 442 -640 359 -640 480 -640 480 -640 480 -640 427 -640 480 -640 437 -427 640 -640 427 -640 480 -640 480 -640 480 -640 480 -640 426 -640 480 -640 425 -480 640 -640 480 -640 426 -640 425 -480 640 -640 426 -640 362 -480 640 -500 330 -640 433 -640 480 -480 640 -640 590 -640 254 -640 426 -640 427 -640 433 -640 429 -640 480 -460 345 -480 640 -640 427 -640 426 -640 480 -500 333 -427 640 -500 332 -480 640 -640 480 -640 640 -500 375 -640 425 -424 640 -500 333 -273 448 -640 631 -451 640 -417 640 -640 427 -640 428 -500 375 -640 459 -479 640 -640 428 -640 396 -500 375 -640 427 -640 427 -640 359 -640 424 -640 427 -640 427 -640 480 -640 228 -640 424 -640 427 -500 333 -500 375 -640 480 -613 640 -600 450 -640 480 -478 640 -640 360 -375 500 -322 471 -640 640 -500 375 -640 428 -632 640 -480 640 -500 498 -453 604 -640 480 -640 359 -500 375 -640 482 -640 478 -640 494 -640 427 -640 480 -427 640 -640 480 -525 640 -480 640 -640 480 -640 429 -640 425 -640 424 -640 480 -640 426 -500 333 -330 500 -640 425 -640 516 -640 427 -500 375 -605 640 -640 427 -640 427 -640 480 -612 612 -375 500 -640 480 -640 427 -640 563 -425 640 -640 427 -640 479 -640 480 -480 640 -640 478 -640 589 -640 427 -640 427 -482 640 -411 640 -640 238 -640 427 -640 427 -427 640 -640 427 -333 500 -640 427 -480 640 -500 375 -640 266 -640 480 -640 549 -421 500 -426 640 -375 500 -333 500 -640 340 -640 443 -640 631 -408 640 -640 552 -640 360 -427 640 -640 480 -480 640 -500 400 -640 254 -489 640 -500 333 -480 640 -640 383 -640 513 -640 428 -640 480 -640 426 -640 480 -640 483 -612 612 -640 389 -640 374 -640 480 -500 375 -640 360 -640 427 -640 480 -640 334 -480 640 -640 383 -418 640 -500 376 -640 623 -612 612 -640 426 -500 375 -423 640 -640 427 -640 480 -640 480 -640 480 -480 640 -640 426 -357 340 -427 640 -640 436 -640 426 -640 427 -469 640 -500 375 -640 453 -640 480 -500 375 -500 375 -375 500 -640 480 -640 512 -500 375 -359 640 -640 480 -320 265 -640 480 -640 480 -640 427 -480 640 -640 432 -640 480 -500 375 -640 430 -500 375 -640 444 -640 427 -640 425 -640 360 -511 640 -640 427 -480 640 -424 640 -512 640 -640 426 -640 427 -640 427 -640 640 -640 360 -640 371 -640 427 -640 480 -640 480 -426 640 -640 471 -640 426 -554 640 -640 385 -640 424 -478 640 -640 480 -500 375 -640 428 -640 478 -640 427 -500 333 -425 640 -640 480 -640 348 -640 473 -640 480 -477 640 -480 640 -640 271 -640 341 -640 456 -640 427 -427 640 -640 640 -640 429 -480 640 -640 427 -640 478 -368 500 -640 480 -640 426 -640 480 -640 478 -640 481 -500 375 -640 427 -640 480 -500 333 -640 399 -640 426 -640 478 -640 480 -375 500 -640 425 -640 454 -640 421 -640 480 -640 427 -640 640 -438 640 -435 640 -640 480 -640 320 -640 506 -640 480 -640 480 -640 640 -640 426 -383 640 -438 640 -612 612 -513 640 -640 424 -640 425 -640 359 -480 640 -640 427 -640 480 -640 480 -640 480 -640 480 -640 480 -480 640 -640 427 -640 427 -500 334 -640 480 -480 640 -640 451 -640 480 -640 480 -465 640 -640 320 -640 429 -640 456 -640 425 -640 426 -640 446 -500 375 -458 380 -640 355 -640 480 -640 480 -640 426 -276 640 -480 640 -640 480 -640 508 -640 386 -640 482 -413 500 -640 453 -640 640 -640 479 -640 480 -640 427 -640 300 -428 640 -640 428 -480 640 -333 500 -640 427 -640 409 -640 428 -480 640 -480 640 -640 422 -412 640 -640 441 -640 425 -427 640 -640 480 -480 640 -640 426 -480 640 -640 480 -500 341 -640 427 -640 360 -640 360 -427 640 -640 428 -640 428 -640 480 -640 425 -640 480 -640 480 -640 427 -400 300 -640 467 -500 333 -504 378 -640 457 -480 640 -640 373 -500 375 -426 640 -640 480 -640 428 -500 333 -640 427 -530 640 -640 480 -640 480 -640 427 -640 480 -640 427 -640 427 -640 480 -480 640 -383 640 -456 640 -480 640 -640 425 -640 426 -640 424 -640 480 -640 425 -640 480 -640 427 -480 640 -640 480 -640 360 -640 480 -480 640 -640 640 -300 450 -640 427 -640 425 -640 400 -640 427 -445 640 -640 480 -640 427 -640 480 -428 640 -640 296 -500 312 -640 400 -640 420 -640 381 -640 480 -375 500 -640 426 -640 426 -640 457 -500 334 -640 480 -640 480 -428 640 -640 466 -480 640 -480 640 -480 640 -640 486 -612 612 -640 480 -480 640 -640 427 -640 427 -640 425 -640 467 -640 426 -480 640 -480 640 -640 480 -640 480 -640 281 -612 612 -333 500 -500 333 -640 427 -640 480 -640 512 -640 480 -480 640 -640 480 -640 427 -640 427 -640 427 -427 640 -614 640 -640 480 -480 640 -640 427 -480 640 -640 480 -254 336 -640 360 -640 455 -640 424 -640 480 -640 480 -640 426 -375 500 -480 640 -427 640 -500 375 -640 424 -640 473 -640 457 -640 359 -500 334 -391 640 -640 428 -480 640 -640 426 -640 427 -640 347 -640 427 -640 436 -640 480 -640 481 -472 640 -500 375 -640 427 -640 424 -336 640 -640 480 -640 353 -640 411 -640 454 -600 450 -640 361 -640 480 -640 640 -640 426 -480 640 -640 480 -500 417 -640 427 -428 640 -640 480 -640 427 -640 427 -480 640 -375 500 -480 640 -640 360 -640 633 -640 427 -640 480 -640 283 -640 434 -360 640 -640 458 -640 480 -640 480 -480 640 -640 480 -640 480 -640 586 -640 640 -640 425 -375 500 -640 427 -640 436 -640 425 -640 360 -640 406 -640 427 -640 492 -640 427 -640 426 -640 424 -500 333 -640 426 -480 640 -640 427 -640 426 -640 431 -427 640 -375 500 -640 360 -640 427 -480 640 -425 640 -640 444 -640 427 -427 640 -591 640 -640 480 -640 427 -640 416 -640 480 -640 427 -640 426 -640 427 -640 440 -640 477 -640 480 -640 359 -640 311 -640 427 -640 326 -640 427 -640 480 -640 310 -640 480 -362 640 -640 480 -470 640 -480 640 -640 449 -640 481 -484 640 -332 500 -569 640 -427 640 -375 500 -612 612 -640 424 -640 467 -485 500 -612 612 -640 480 -500 332 -427 640 -640 425 -640 426 -480 640 -640 480 -640 480 -478 640 -640 480 -640 427 -640 424 -640 428 -640 426 -640 426 -640 427 -640 428 -324 640 -640 449 -500 375 -500 375 -500 281 -506 640 -427 640 -640 480 -640 480 -640 480 -427 640 -612 612 -640 489 -640 480 -480 640 -640 427 -640 424 -500 375 -640 480 -640 480 -612 612 -640 480 -640 480 -426 640 -640 361 -640 427 -640 424 -427 640 -640 428 -640 438 -640 426 -640 480 -640 427 -640 378 -640 427 -640 573 -640 427 -640 480 -640 480 -640 429 -500 333 -640 480 -640 427 -640 428 -640 426 -640 480 -425 640 -640 428 -375 500 -640 425 -640 426 -640 480 -640 480 -640 480 -375 500 -640 480 -640 427 -640 480 -500 375 -500 359 -428 640 -640 362 -640 425 -640 424 -427 640 -640 480 -640 480 -419 500 -370 640 -333 500 -640 427 -500 375 -612 612 -640 432 -640 415 -500 375 -480 640 -612 612 -640 480 -500 400 -640 427 -500 331 -500 375 -500 375 -640 480 -640 558 -640 480 -480 640 -640 480 -478 640 -480 640 -640 480 -640 427 -480 640 -640 480 -480 640 -333 426 -640 431 -500 375 -640 478 -480 640 -640 640 -640 480 -480 640 -640 418 -640 427 -640 480 -640 424 -640 444 -640 480 -526 640 -640 480 -640 480 -640 429 -640 429 -500 375 -424 640 -640 396 -640 318 -640 428 -428 640 -640 480 -433 640 -640 480 -640 427 -500 375 -640 386 -640 427 -640 427 -640 480 -640 480 -640 442 -500 332 -640 428 -360 640 -640 427 -612 612 -480 640 -640 424 -640 480 -425 640 -640 425 -640 480 -640 608 -640 428 -333 500 -427 640 -640 432 -640 480 -640 369 -640 602 -427 640 -640 427 -640 433 -640 426 -478 640 -500 333 -640 360 -640 427 -640 480 -640 351 -640 488 -640 480 -640 424 -640 427 -640 506 -453 604 -640 427 -358 500 -640 480 -500 333 -640 363 -640 640 -640 425 -480 640 -640 480 -640 480 -640 480 -640 428 -640 427 -640 433 -640 466 -640 480 -512 384 -640 411 -640 480 -483 500 -640 480 -640 427 -640 480 -640 480 -640 480 -640 483 -480 640 -640 457 -426 640 -640 480 -500 311 -640 480 -640 426 -500 333 -640 400 -480 640 -640 428 -640 427 -640 426 -640 426 -640 428 -500 333 -640 425 -640 480 -640 425 -480 640 -640 424 -500 375 -612 612 -640 480 -640 480 -427 640 -640 555 -482 640 -640 427 -640 480 -640 478 -640 427 -640 428 -640 519 -640 428 -500 333 -640 360 -640 483 -640 242 -640 480 -500 281 -500 375 -640 429 -500 375 -427 640 -640 424 -640 480 -640 427 -640 480 -640 427 -500 375 -480 640 -640 426 -640 425 -427 640 -640 480 -640 426 -500 409 -640 427 -640 425 -480 640 -500 436 -480 640 -478 640 -500 400 -640 480 -640 427 -640 428 -640 480 -640 425 -640 426 -500 375 -640 480 -640 485 -640 469 -640 426 -612 612 -640 483 -375 500 -640 426 -640 427 -500 375 -640 532 -640 429 -500 375 -640 640 -640 436 -640 427 -640 480 -375 500 -640 427 -640 426 -640 425 -426 640 -427 640 -640 428 -640 480 -640 427 -612 612 -640 479 -480 640 -640 480 -640 427 -480 640 -375 500 -375 500 -640 427 -424 640 -640 427 -640 570 -469 341 -640 480 -640 427 -480 640 -640 427 -640 427 -426 640 -640 427 -640 485 -640 453 -640 427 -427 640 -640 360 -640 480 -427 640 -640 480 -640 480 -640 429 -640 478 -640 480 -480 640 -500 337 -640 480 -640 493 -640 427 -640 424 -640 425 -640 425 -640 427 -480 640 -640 549 -639 640 -500 375 -640 480 -640 399 -640 424 -640 401 -640 429 -640 428 -640 360 -640 427 -521 640 -427 640 -640 342 -425 640 -640 427 -640 480 -640 480 -640 480 -500 375 -426 640 -500 358 -640 514 -640 480 -640 427 -640 640 -640 444 -480 640 -500 335 -640 408 -640 634 -640 427 -640 427 -640 480 -640 427 -640 426 -640 477 -375 500 -640 427 -463 640 -640 480 -418 640 -640 480 -640 480 -640 480 -640 480 -640 425 -427 640 -480 640 -640 433 -640 428 -498 640 -640 427 -640 480 -427 640 -352 500 -640 480 -424 640 -612 612 -640 433 -640 480 -640 480 -640 558 -640 425 -640 428 -640 360 -426 640 -500 286 -640 480 -640 359 -511 640 -640 516 -267 400 -475 500 -494 500 -640 264 -640 427 -640 428 -480 640 -480 640 -640 360 -480 640 -640 423 -640 480 -640 468 -500 325 -500 411 -500 375 -480 640 -640 427 -640 427 -427 640 -640 608 -640 359 -480 640 -640 480 -640 425 -640 426 -640 427 -640 423 -640 428 -640 480 -640 480 -375 500 -640 427 -640 425 -640 504 -640 427 -640 480 -640 354 -445 400 -640 409 -640 427 -400 300 -640 480 -640 427 -463 640 -640 461 -640 479 -640 425 -640 480 -640 429 -500 333 -640 428 -375 500 -612 612 -640 427 -436 640 -480 640 -500 375 -640 480 -640 526 -640 480 -448 500 -480 640 -640 422 -640 480 -640 640 -640 480 -426 640 -500 375 -480 640 -640 480 -640 424 -640 427 -640 457 -640 429 -640 427 -450 600 -425 640 -640 640 -640 229 -640 579 -640 425 -640 426 -640 480 -466 640 -640 427 -640 480 -640 424 -480 640 -640 427 -427 640 -480 319 -640 429 -480 640 -480 640 -333 500 -500 375 -534 640 -640 480 -640 427 -640 427 -640 425 -424 640 -480 640 -640 425 -640 480 -640 428 -480 640 -480 640 -640 426 -360 640 -500 375 -640 428 -640 426 -500 375 -640 480 -375 500 -375 500 -640 372 -640 480 -425 640 -640 480 -612 612 -640 640 -640 480 -500 375 -640 427 -640 506 -640 480 -640 328 -640 480 -640 401 -640 483 -640 428 -433 500 -640 371 -640 427 -640 480 -640 457 -425 640 -640 480 -481 640 -640 480 -640 480 -640 480 -640 424 -427 640 -640 618 -640 640 -500 239 -612 612 -640 421 -640 430 -640 428 -640 567 -500 375 -640 480 -612 612 -640 425 -640 426 -427 640 -640 480 -640 427 -640 348 -640 480 -512 640 -480 640 -480 640 -480 640 -640 427 -640 480 -640 480 -640 426 -427 640 -640 425 -640 512 -640 424 -640 480 -640 480 -640 480 -640 444 -425 640 -640 411 -427 640 -375 500 -640 404 -640 480 -640 480 -574 640 -500 375 -640 427 -640 480 -612 612 -500 375 -640 480 -640 457 -640 480 -640 428 -500 375 -640 480 -375 500 -640 427 -425 640 -640 368 -640 460 -640 480 -640 425 -486 640 -640 458 -426 640 -640 427 -600 400 -640 479 -500 375 -640 427 -640 480 -640 427 -640 480 -640 427 -500 375 -640 429 -612 612 -500 333 -640 480 -640 480 -400 500 -640 480 -480 640 -500 375 -180 240 -434 640 -427 640 -640 480 -640 429 -640 427 -256 640 -640 480 -640 428 -500 375 -640 395 -640 469 -500 375 -640 640 -640 428 -427 640 -640 480 -427 640 -640 427 -640 426 -426 640 -640 426 -640 480 -640 424 -640 443 -640 425 -375 500 -597 640 -640 427 -640 427 -480 640 -640 480 -480 640 -640 427 -640 480 -640 427 -640 325 -640 483 -640 480 -640 480 -640 440 -640 480 -433 500 -640 427 -640 480 -478 640 -640 426 -640 480 -640 480 -640 427 -640 424 -640 386 -640 427 -640 360 -480 640 -640 438 -500 332 -640 428 -640 480 -640 427 -640 394 -640 480 -640 237 -640 426 -612 612 -480 640 -640 427 -640 480 -410 640 -640 427 -640 480 -480 640 -500 333 -640 512 -640 480 -640 427 -480 640 -640 480 -427 640 -640 480 -480 640 -640 531 -334 500 -640 379 -480 640 -427 640 -480 640 -480 640 -640 480 -427 640 -640 384 -612 612 -640 426 -640 448 -500 337 -640 480 -640 480 -500 375 -640 480 -375 500 -640 384 -640 480 -480 640 -640 480 -640 480 -500 281 -640 519 -376 500 -640 480 -640 427 -480 640 -425 640 -640 480 -640 425 -640 426 -612 612 -640 480 -461 640 -640 425 -640 434 -640 424 -640 427 -480 640 -640 640 -640 494 -640 427 -447 640 -640 479 -640 480 -640 428 -640 426 -640 640 -480 360 -480 640 -640 360 -640 480 -426 640 -640 435 -640 480 -640 480 -640 383 -640 425 -640 480 -416 640 -640 424 -428 640 -640 481 -640 418 -500 364 -424 500 -640 360 -480 640 -640 426 -640 427 -640 422 -453 640 -428 640 -612 612 -640 480 -426 640 -600 600 -640 428 -640 480 -640 360 -640 425 -640 480 -428 640 -480 640 -360 640 -375 500 -427 640 -640 480 -640 480 -640 514 -640 480 -425 640 -640 376 -640 431 -640 427 -375 500 -640 480 -375 500 -640 480 -480 640 -427 640 -640 480 -332 500 -457 640 -640 544 -640 433 -640 513 -480 640 -640 480 -425 640 -640 480 -512 640 -500 332 -640 480 -640 425 -640 480 -640 426 -427 640 -596 446 -640 359 -640 427 -640 480 -640 480 -640 480 -480 640 -640 457 -640 480 -428 640 -640 640 -500 335 -333 500 -612 612 -640 427 -640 426 -640 480 -640 427 -500 333 -640 480 -480 640 -640 428 -480 640 -640 480 -426 640 -640 458 -375 500 -480 640 -640 427 -427 640 -425 640 -480 640 -500 376 -640 427 -500 370 -448 500 -458 640 -640 480 -640 426 -640 637 -640 480 -640 480 -512 640 -500 375 -640 427 -640 434 -500 332 -640 403 -640 480 -640 480 -640 427 -640 427 -640 426 -640 480 -427 640 -513 640 -640 424 -640 480 -640 426 -640 428 -640 480 -500 333 -640 480 -640 360 -640 480 -640 427 -640 343 -640 480 -500 377 -500 375 -425 640 -640 413 -454 640 -640 426 -375 500 -640 480 -480 640 -640 523 -640 428 -500 333 -640 427 -640 481 -640 420 -500 375 -480 640 -422 640 -640 427 -640 432 -640 265 -466 640 -608 640 -427 640 -480 640 -640 426 -640 427 -640 360 -640 427 -480 640 -640 480 -640 426 -640 427 -640 420 -640 427 -612 612 -375 500 -423 640 -414 500 -480 640 -480 640 -640 427 -640 427 -640 425 -640 429 -612 612 -457 640 -640 640 -600 640 -640 480 -426 640 -640 427 -500 332 -428 640 -640 463 -640 426 -640 480 -480 640 -640 480 -640 461 -640 441 -496 640 -640 508 -640 428 -427 640 -640 480 -640 480 -612 612 -640 480 -448 640 -500 333 -426 640 -640 480 -426 640 -480 640 -640 480 -500 335 -231 500 -432 640 -640 427 -480 640 -640 427 -480 640 -640 441 -640 480 -375 500 -640 427 -640 426 -640 480 -640 423 -427 640 -640 480 -640 425 -640 429 -559 640 -640 519 -478 640 -640 480 -480 640 -640 512 -640 480 -640 427 -640 404 -427 640 -640 480 -640 480 -640 427 -640 480 -500 375 -640 484 -480 640 -640 614 -480 640 -640 427 -425 640 -640 426 -640 426 -640 458 -640 480 -640 458 -640 426 -480 640 -640 480 -500 338 -640 480 -640 427 -640 428 -612 612 -480 640 -640 426 -375 500 -480 640 -640 427 -640 425 -516 640 -500 420 -640 424 -640 427 -640 633 -612 612 -479 640 -640 427 -640 424 -640 427 -480 640 -500 375 -480 640 -612 612 -640 482 -640 480 -543 640 -480 640 -640 427 -640 480 -640 480 -640 425 -640 501 -640 480 -640 454 -640 427 -640 425 -473 640 -640 425 -480 640 -612 612 -428 640 -640 506 -640 480 -640 579 -480 640 -640 425 -640 427 -640 458 -640 423 -640 478 -640 480 -640 426 -612 612 -640 517 -303 500 -427 640 -640 400 -426 640 -640 480 -500 375 -640 434 -640 428 -640 480 -640 427 -500 333 -640 480 -640 427 -480 640 -640 480 -478 640 -640 424 -612 612 -500 333 -640 480 -640 480 -640 483 -514 640 -426 640 -640 480 -640 480 -480 640 -640 360 -500 375 -640 480 -426 640 -640 428 -640 461 -640 483 -640 471 -640 428 -427 640 -640 480 -426 640 -480 640 -375 500 -401 640 -640 514 -500 333 -640 424 -640 480 -640 502 -640 480 -640 372 -640 477 -640 426 -640 426 -480 640 -640 427 -500 375 -480 640 -640 478 -640 480 -427 640 -640 427 -612 612 -640 426 -500 333 -480 640 -500 333 -425 640 -640 427 -480 640 -640 480 -437 640 -640 360 -640 416 -640 427 -500 308 -640 427 -640 480 -375 500 -640 480 -640 360 -426 640 -427 640 -640 426 -640 383 -425 640 -640 480 -640 427 -640 421 -640 480 -640 428 -640 478 -640 503 -640 458 -427 640 -500 375 -640 480 -640 480 -640 427 -640 495 -480 640 -467 607 -640 425 -428 640 -640 448 -480 640 -640 361 -640 480 -640 426 -500 375 -640 389 -640 480 -480 640 -640 451 -500 375 -480 640 -640 428 -640 480 -500 375 -640 478 -426 640 -640 480 -640 480 -640 526 -500 364 -640 427 -383 500 -640 480 -500 355 -500 375 -640 481 -500 400 -640 480 -612 612 -640 360 -640 480 -640 426 -479 640 -640 480 -612 612 -375 500 -640 486 -500 375 -640 498 -640 427 -500 375 -640 427 -480 640 -640 480 -640 428 -612 612 -640 427 -500 375 -640 475 -640 425 -640 523 -480 640 -427 640 -640 480 -640 480 -640 480 -640 427 -480 640 -640 506 -640 427 -640 480 -640 528 -640 480 -640 480 -426 640 -640 425 -640 426 -640 427 -640 278 -500 335 -500 281 -427 640 -375 500 -427 640 -640 438 -640 427 -480 640 -640 360 -640 480 -640 480 -640 389 -375 500 -640 427 -640 427 -423 640 -640 480 -612 612 -427 640 -388 640 -640 425 -480 640 -640 480 -425 640 -500 375 -427 640 -425 640 -640 480 -640 448 -640 480 -375 500 -640 480 -640 640 -427 640 -375 500 -478 640 -424 640 -480 640 -426 640 -478 640 -640 480 -334 500 -640 426 -640 426 -640 425 -480 640 -640 360 -640 480 -640 428 -640 480 -640 424 -640 424 -640 427 -640 439 -640 426 -500 375 -640 425 -640 480 -480 640 -640 426 -640 427 -500 333 -640 480 -640 300 -640 404 -510 340 -640 427 -640 478 -480 640 -640 426 -640 483 -640 424 -640 319 -640 321 -500 333 -640 408 -640 427 -640 434 -640 457 -640 427 -640 426 -375 500 -500 333 -640 427 -640 478 -640 480 -480 640 -640 426 -640 427 -640 413 -640 480 -640 433 -428 640 -640 476 -387 518 -640 364 -640 480 -640 474 -640 480 -500 293 -480 640 -640 426 -500 500 -640 457 -346 500 -640 480 -480 640 -480 640 -500 334 -480 640 -640 478 -640 480 -640 427 -640 480 -640 470 -640 441 -375 500 -418 500 -640 427 -480 640 -425 640 -432 432 -640 425 -500 361 -640 388 -375 500 -640 425 -640 426 -457 640 -499 500 -640 480 -427 640 -640 361 -640 428 -484 640 -640 425 -640 480 -640 476 -640 480 -640 480 -640 427 -375 500 -583 640 -640 480 -480 640 -375 500 -612 612 -480 640 -500 327 -480 640 -640 427 -612 612 -426 640 -514 640 -480 640 -640 427 -640 400 -640 427 -640 305 -640 480 -640 480 -640 427 -466 640 -640 480 -640 480 -640 427 -369 500 -640 480 -640 425 -640 481 -427 640 -640 479 -440 640 -478 640 -640 329 -428 640 -640 464 -640 427 -640 457 -640 508 -640 480 -640 391 -500 375 -640 478 -640 431 -375 500 -480 640 -640 594 -428 640 -640 446 -500 332 -480 640 -411 500 -640 427 -640 485 -640 480 -640 401 -640 425 -640 359 -640 640 -640 480 -640 427 -424 640 -640 480 -640 426 -640 480 -640 480 -500 375 -640 480 -640 428 -375 500 -425 640 -640 480 -640 485 -640 480 -425 640 -480 640 -640 428 -640 480 -640 434 -640 427 -640 480 -640 508 -640 480 -640 425 -640 427 -342 500 -640 426 -612 612 -428 640 -640 427 -500 375 -612 612 -640 427 -426 640 -375 500 -480 640 -640 463 -640 480 -281 500 -375 500 -500 375 -640 427 -375 500 -640 480 -640 427 -640 359 -640 425 -640 480 -480 640 -640 406 -640 426 -640 620 -640 480 -500 375 -640 427 -500 375 -480 640 -640 480 -640 362 -491 640 -480 640 -640 383 -640 480 -500 375 -640 426 -640 480 -640 480 -640 480 -640 426 -640 428 -640 480 -426 640 -427 640 -640 423 -640 427 -500 375 -640 476 -500 375 -640 480 -427 640 -640 480 -640 480 -612 612 -640 427 -640 426 -640 512 -333 500 -640 458 -640 478 -427 640 -640 427 -640 480 -640 480 -640 427 -640 382 -640 480 -500 313 -375 500 -640 480 -640 457 -640 428 -640 481 -427 640 -640 428 -640 363 -427 640 -640 425 -640 426 -425 640 -640 427 -640 425 -640 427 -640 480 -640 481 -423 640 -640 563 -640 427 -640 480 -612 612 -640 426 -640 480 -296 446 -500 333 -640 480 -640 425 -640 480 -640 480 -500 333 -618 640 -640 480 -640 427 -500 375 -500 333 -480 640 -423 640 -428 640 -426 640 -500 334 -640 480 -640 480 -640 424 -640 469 -640 439 -427 640 -640 427 -426 640 -640 480 -480 640 -640 480 -500 333 -640 426 -640 480 -500 281 -640 427 -640 481 -640 480 -640 427 -640 640 -640 427 -640 472 -640 480 -480 640 -640 480 -640 544 -640 489 -480 640 -500 429 -640 428 -500 333 -480 640 -640 326 -480 640 -500 375 -640 480 -640 413 -640 480 -640 480 -640 426 -640 426 -640 480 -640 480 -612 612 -640 426 -640 478 -640 480 -640 447 -426 640 -640 427 -480 342 -640 426 -500 335 -332 500 -435 640 -640 501 -640 427 -366 640 -640 328 -500 376 -500 333 -640 517 -640 360 -640 480 -640 427 -640 480 -640 426 -640 398 -640 426 -640 425 -640 640 -427 640 -640 427 -437 640 -640 431 -640 427 -640 490 -640 427 -640 428 -640 480 -640 480 -640 433 -500 375 -640 480 -640 480 -640 480 -640 427 -640 347 -640 480 -640 480 -640 379 -353 640 -640 360 -451 640 -640 400 -640 428 -375 500 -640 457 -612 612 -640 480 -427 640 -480 640 -640 480 -640 480 -640 428 -640 425 -480 640 -426 640 -640 427 -500 334 -640 281 -640 480 -400 500 -428 640 -640 427 -482 640 -640 428 -640 427 -640 480 -640 480 -640 434 -500 334 -500 333 -640 427 -427 640 -640 426 -640 385 -640 480 -480 640 -480 640 -640 604 -640 426 -640 454 -640 480 -640 480 -640 569 -640 427 -640 425 -640 480 -640 439 -640 480 -640 480 -480 640 -640 480 -640 480 -640 480 -500 364 -640 426 -640 480 -425 640 -640 640 -480 640 -480 640 -640 480 -474 640 -640 427 -640 396 -498 500 -640 480 -500 375 -440 500 -427 640 -640 480 -500 349 -428 640 -640 427 -640 427 -640 427 -640 461 -640 486 -640 480 -480 640 -640 473 -640 427 -640 425 -640 360 -640 428 -640 426 -640 478 -640 326 -640 399 -640 480 -640 400 -640 427 -640 312 -640 640 -633 640 -580 580 -640 500 -640 427 -640 480 -640 427 -640 480 -500 333 -640 498 -468 640 -375 500 -430 640 -640 480 -480 640 -640 425 -480 640 -383 640 -500 333 -640 426 -468 640 -640 480 -640 480 -500 375 -640 480 -413 640 -640 383 -640 480 -500 375 -500 333 -426 640 -640 486 -500 375 -427 640 -640 480 -640 324 -640 480 -375 500 -480 640 -375 500 -612 612 -500 375 -612 612 -640 541 -640 481 -427 640 -640 480 -640 480 -480 640 -640 480 -612 612 -427 640 -640 480 -640 427 -640 426 -529 640 -500 375 -640 416 -640 480 -567 640 -640 554 -640 478 -640 427 -359 640 -640 383 -640 512 -640 427 -500 332 -508 640 -640 424 -640 278 -375 500 -480 640 -640 481 -640 480 -459 640 -450 600 -640 480 -548 640 -640 640 -640 480 -425 640 -640 425 -640 427 -640 480 -640 426 -640 480 -640 399 -640 480 -640 427 -640 456 -640 480 -640 480 -640 480 -458 640 -640 428 -640 480 -500 375 -640 478 -640 480 -640 418 -640 480 -640 427 -640 589 -640 400 -480 640 -375 500 -500 332 -640 480 -640 423 -640 427 -640 480 -640 426 -640 480 -640 480 -428 640 -640 480 -640 480 -640 427 -640 426 -640 480 -500 375 -480 640 -640 480 -640 515 -426 640 -640 427 -612 612 -640 480 -500 357 -480 640 -640 480 -640 359 -427 640 -426 640 -640 427 -640 427 -640 480 -640 427 -500 375 -640 422 -480 640 -640 427 -480 640 -640 480 -350 500 -640 425 -640 480 -480 640 -640 480 -640 427 -640 427 -640 461 -640 426 -640 502 -612 612 -640 480 -640 480 -640 424 -500 375 -640 433 -640 480 -640 480 -640 480 -640 425 -480 640 -427 640 -640 423 -640 480 -640 427 -640 480 -640 427 -640 480 -640 324 -640 478 -480 640 -640 480 -640 480 -640 640 -640 427 -640 480 -640 480 -320 500 -640 424 -500 375 -480 640 -480 640 -640 480 -480 640 -640 480 -640 359 -480 640 -640 427 -427 640 -180 240 -500 333 -640 516 -500 348 -253 130 -375 500 -640 279 -640 427 -640 427 -640 480 -500 375 -427 640 -640 424 -640 426 -500 375 -375 500 -640 427 -640 423 -640 427 -427 640 -640 478 -640 480 -640 427 -500 334 -640 480 -640 480 -500 333 -450 338 -640 584 -627 640 -640 480 -480 640 -640 480 -640 481 -640 480 -426 640 -640 425 -640 553 -640 480 -612 612 -500 334 -500 375 -640 480 -640 434 -640 480 -640 428 -640 480 -444 640 -640 480 -640 480 -612 612 -500 375 -640 427 -426 640 -640 427 -387 640 -423 640 -640 360 -640 480 -640 480 -500 375 -640 480 -640 427 -640 480 -640 528 -640 479 -640 480 -563 640 -640 478 -640 480 -500 286 -500 415 -640 533 -640 544 -640 427 -480 640 -640 427 -640 426 -640 426 -500 500 -640 480 -640 480 -480 640 -640 426 -426 640 -500 397 -551 640 -640 427 -640 502 -640 401 -500 333 -640 427 -640 480 -354 640 -640 449 -500 333 -640 418 -408 640 -431 640 -640 480 -640 480 -612 612 -448 336 -640 480 -640 444 -400 600 -640 427 -640 480 -427 640 -612 612 -640 425 -640 427 -640 359 -640 512 -375 500 -426 640 -640 425 -640 426 -640 426 -640 417 -640 427 -640 480 -612 612 -640 489 -640 425 -500 336 -427 640 -640 480 -430 318 -640 480 -640 426 -429 640 -640 426 -427 640 -640 360 -640 480 -640 427 -640 427 -640 480 -640 480 -640 368 -640 427 -640 426 -640 480 -640 411 -640 482 -640 480 -640 477 -480 640 -640 480 -640 480 -640 480 -500 500 -443 640 -640 426 -640 425 -640 480 -640 480 -427 640 -640 480 -403 640 -533 640 -640 425 -640 632 -612 612 -500 332 -335 500 -640 480 -550 550 -640 480 -640 480 -500 375 -640 480 -375 500 -427 640 -640 424 -640 427 -640 425 -640 427 -640 458 -426 640 -640 478 -640 426 -640 359 -500 401 -640 360 -640 438 -640 425 -480 640 -480 640 -640 480 -640 429 -480 640 -480 640 -500 333 -480 640 -640 459 -640 427 -640 426 -500 333 -413 640 -530 530 -640 428 -640 480 -480 640 -640 480 -640 480 -640 449 -640 426 -586 640 -640 480 -359 640 -428 640 -500 335 -640 426 -640 640 -640 426 -640 426 -640 426 -640 480 -640 634 -640 427 -640 480 -640 480 -500 375 -500 333 -640 480 -426 640 -640 441 -640 501 -500 474 -640 480 -640 427 -640 427 -478 640 -424 640 -500 375 -640 426 -640 427 -640 480 -480 640 -462 640 -640 480 -500 333 -240 320 -590 397 -640 480 -640 400 -640 428 -640 480 -500 375 -640 427 -640 480 -640 396 -640 480 -480 640 -500 375 -640 480 -640 427 -333 500 -640 458 -453 640 -640 427 -640 427 -640 427 -480 640 -640 427 -500 375 -640 367 -427 640 -640 512 -640 426 -640 478 -640 480 -640 352 -410 640 -500 375 -640 425 -500 375 -424 640 -640 425 -480 640 -462 557 -640 480 -640 480 -640 427 -500 375 -640 470 -500 375 -375 500 -500 375 -427 640 -480 640 -480 640 -480 640 -640 360 -640 420 -640 427 -430 640 -383 640 -640 431 -332 500 -640 485 -500 333 -500 331 -375 500 -640 480 -640 426 -640 480 -640 640 -640 427 -427 640 -640 480 -640 480 -640 428 -480 640 -640 480 -640 427 -640 427 -480 640 -640 427 -640 480 -480 640 -640 480 -640 480 -478 640 -640 427 -640 480 -640 427 -427 640 -640 480 -480 640 -500 332 -640 480 -426 640 -640 480 -640 441 -640 427 -640 480 -478 640 -640 480 -640 480 -640 418 -640 427 -500 332 -480 640 -640 248 -640 480 -425 640 -480 640 -640 383 -320 427 -640 480 -480 640 -640 639 -640 480 -427 640 -481 640 -640 533 -640 426 -640 427 -612 612 -500 333 -640 480 -640 465 -536 640 -500 375 -640 427 -640 426 -427 640 -640 426 -640 427 -375 500 -640 213 -640 512 -640 480 -427 640 -640 425 -640 480 -640 480 -406 640 -640 426 -640 640 -640 480 -640 480 -640 480 -393 640 -640 427 -640 427 -500 375 -640 428 -640 428 -640 359 -640 487 -640 478 -640 640 -500 332 -640 427 -640 480 -640 261 -375 500 -640 426 -640 428 -640 405 -500 375 -331 500 -480 640 -640 480 -640 427 -640 480 -640 480 -640 427 -640 402 -500 375 -640 427 -478 640 -640 640 -375 500 -640 427 -640 424 -640 480 -640 426 -640 425 -480 640 -640 426 -640 424 -640 427 -640 427 -375 500 -640 427 -640 427 -640 480 -488 640 -640 430 -480 640 -640 480 -640 480 -640 427 -640 480 -640 294 -640 480 -640 480 -640 427 -640 427 -640 427 -640 427 -500 375 -500 375 -640 480 -640 480 -640 427 -640 480 -640 480 -640 508 -500 499 -640 431 -640 424 -375 500 -338 480 -640 427 -640 427 -640 479 -612 612 -440 640 -640 425 -500 291 -426 640 -640 480 -480 640 -426 640 -640 426 -640 427 -640 424 -281 446 -500 319 -640 427 -640 381 -640 427 -640 360 -520 347 -640 427 -640 425 -640 428 -640 427 -640 318 -332 500 -640 480 -640 428 -640 360 -640 479 -401 500 -640 480 -640 427 -640 480 -640 418 -640 453 -480 640 -360 640 -500 375 -640 426 -640 480 -640 480 -640 457 -480 640 -640 427 -283 500 -640 480 -640 514 -640 480 -640 427 -426 640 -500 375 -640 427 -500 375 -500 331 -497 640 -637 640 -640 428 -640 480 -640 479 -640 478 -640 480 -640 480 -500 333 -640 426 -640 427 -640 353 -640 360 -640 427 -640 427 -640 427 -640 478 -640 480 -640 424 -640 480 -480 640 -640 502 -640 480 -478 640 -478 640 -640 426 -424 640 -640 428 -425 352 -640 480 -640 418 -640 418 -640 480 -425 640 -640 428 -612 612 -640 380 -640 427 -640 480 -640 480 -375 500 -640 480 -640 425 -640 519 -500 375 -500 333 -640 480 -640 480 -640 480 -640 598 -500 332 -640 427 -640 484 -640 470 -640 383 -500 375 -640 428 -640 479 -640 480 -374 500 -612 612 -640 428 -425 640 -640 391 -640 480 -640 503 -640 480 -427 640 -640 445 -640 480 -640 362 -640 424 -500 335 -480 640 -426 640 -640 473 -517 640 -427 640 -640 401 -640 480 -640 480 -640 386 -500 500 -612 612 -640 427 -640 549 -640 640 -640 480 -640 480 -640 465 -640 361 -500 375 -500 334 -640 428 -640 480 -480 640 -640 426 -460 640 -418 640 -640 427 -612 612 -640 491 -427 640 -640 480 -640 427 -640 480 -500 375 -640 480 -640 480 -640 480 -640 427 -427 640 -612 612 -640 538 -480 640 -640 424 -640 359 -426 640 -640 360 -450 287 -640 531 -500 375 -640 425 -640 480 -640 427 -612 612 -640 480 -375 500 -500 332 -640 480 -640 424 -360 640 -500 300 -640 640 -480 640 -640 360 -640 480 -640 480 -539 640 -427 640 -640 480 -640 393 -427 640 -640 314 -640 427 -500 375 -640 480 -640 480 -640 480 -640 480 -640 480 -640 427 -500 400 -640 480 -640 454 -640 425 -500 377 -500 375 -640 403 -640 469 -640 344 -640 480 -640 415 -320 480 -500 375 -426 640 -640 480 -640 440 -640 428 -640 480 -451 640 -425 640 -640 480 -640 480 -480 640 -640 360 -480 640 -640 480 -480 640 -640 427 -640 480 -640 640 -640 427 -428 640 -640 588 -640 427 -640 355 -500 277 -640 427 -612 612 -640 480 -500 375 -640 455 -640 428 -640 415 -500 375 -640 426 -640 427 -500 357 -426 640 -400 500 -640 480 -500 375 -424 640 -640 480 -640 480 -640 360 -640 480 -640 427 -239 640 -640 480 -640 480 -640 428 -640 426 -640 480 -500 333 -640 427 -640 436 -478 640 -640 478 -640 427 -640 466 -640 408 -640 428 -640 310 -583 640 -640 480 -640 447 -640 480 -640 429 -640 427 -640 426 -640 427 -500 375 -500 375 -640 478 -480 640 -640 640 -500 332 -458 640 -640 427 -500 324 -640 427 -640 427 -640 426 -640 428 -640 427 -640 640 -640 480 -640 476 -640 480 -640 435 -640 419 -640 428 -357 500 -640 360 -640 427 -640 427 -500 333 -640 480 -640 480 -640 480 -426 640 -640 480 -640 380 -640 478 -640 390 -640 480 -612 612 -480 640 -640 426 -640 533 -640 426 -640 424 -429 640 -512 640 -640 480 -480 640 -640 427 -480 640 -427 640 -640 426 -640 480 -427 640 -640 480 -640 480 -480 640 -640 425 -640 427 -640 427 -640 429 -640 427 -480 640 -640 429 -640 480 -640 480 -640 480 -640 427 -640 480 -640 480 -640 427 -640 480 -640 480 -500 333 -640 480 -640 427 -517 640 -640 480 -500 375 -640 427 -640 626 -640 427 -500 375 -500 333 -640 480 -640 427 -500 375 -640 480 -640 480 -640 429 -500 375 -480 640 -640 480 -640 640 -640 480 -640 360 -640 427 -640 427 -640 403 -640 480 -426 640 -640 426 -640 480 -640 428 -640 640 -543 640 -500 500 -640 427 -421 640 -640 428 -612 612 -640 427 -640 427 -640 438 -500 334 -500 375 -640 427 -426 640 -640 640 -423 640 -612 612 -640 280 -640 480 -640 426 -640 463 -640 480 -500 333 -478 640 -640 480 -640 424 -480 640 -640 480 -500 375 -640 480 -640 427 -640 427 -640 426 -640 427 -640 480 -640 480 -426 640 -640 424 -640 428 -500 375 -460 640 -500 333 -640 426 -640 425 -640 640 -640 480 -640 480 -640 426 -500 333 -427 640 -640 480 -612 612 -640 480 -640 484 -480 640 -480 640 -500 332 -640 509 -436 500 -640 427 -640 480 -500 336 -480 640 -360 640 -480 640 -640 480 -640 480 -500 333 -640 427 -640 426 -640 452 -640 427 -424 640 -427 640 -640 480 -640 427 -335 500 -375 500 -313 500 -500 309 -640 480 -640 613 -367 640 -640 494 -640 480 -640 489 -612 612 -640 425 -640 404 -480 640 -480 640 -640 601 -375 500 -640 441 -379 640 -640 426 -640 427 -640 480 -480 640 -640 427 -640 426 -640 427 -640 480 -375 500 -500 333 -500 375 -640 480 -480 640 -640 480 -72 51 -640 427 -480 640 -640 480 -640 480 -640 424 -640 360 -640 433 -481 640 -640 480 -640 640 -640 431 -640 426 -640 426 -640 480 -640 427 -640 480 -640 480 -479 640 -640 480 -640 496 -640 428 -640 427 -640 480 -640 480 -425 640 -640 427 -640 427 -640 422 -640 480 -500 375 -640 426 -640 480 -640 427 -640 480 -640 480 -640 529 -640 480 -640 428 -640 443 -480 640 -640 636 -640 378 -640 480 -383 500 -640 472 -640 427 -456 640 -640 427 -640 426 -640 427 -640 389 -378 500 -640 459 -640 427 -500 375 -331 500 -640 416 -640 640 -500 375 -640 480 -480 640 -455 640 -640 480 -500 375 -640 359 -433 640 -640 480 -640 480 -480 640 -427 640 -640 348 -640 479 -640 640 -640 478 -640 480 -320 240 -427 640 -640 427 -640 427 -640 426 -640 433 -640 480 -640 480 -360 480 -640 434 -480 640 -427 640 -640 465 -640 359 -480 640 -640 480 -640 480 -640 480 -640 480 -640 480 -640 389 -375 500 -640 451 -640 468 -640 474 -640 428 -600 450 -640 480 -612 612 -640 359 -500 333 -608 640 -424 640 -333 500 -640 481 -480 640 -428 500 -640 427 -640 458 -640 480 -640 426 -485 640 -500 375 -640 427 -640 427 -640 480 -640 480 -427 640 -640 480 -640 426 -640 424 -640 480 -640 480 -414 640 -500 500 -480 640 -457 640 -427 640 -500 498 -640 427 -387 500 -480 640 -640 428 -640 480 -480 640 -640 480 -640 482 -480 640 -640 427 -640 480 -640 426 -428 640 -500 332 -640 480 -576 494 -640 480 -640 480 -640 427 -640 426 -640 474 -640 482 -640 480 -427 640 -300 480 -640 360 -640 427 -612 612 -640 441 -640 480 -640 480 -640 478 -640 426 -640 480 -640 399 -403 640 -640 640 -500 375 -640 480 -640 427 -640 480 -640 427 -640 427 -640 394 -640 360 -640 428 -500 328 -612 612 -640 425 -277 500 -480 640 -640 508 -640 524 -427 640 -612 612 -640 427 -640 419 -372 500 -640 478 -640 427 -425 640 -640 480 -500 375 -480 640 -640 480 -480 640 -640 480 -640 426 -480 640 -640 427 -427 640 -500 375 -640 450 -640 480 -500 375 -612 612 -500 375 -480 640 -480 640 -480 640 -640 480 -480 640 -640 271 -480 640 -500 333 -640 480 -481 640 -427 640 -640 360 -640 427 -640 236 -640 480 -640 431 -480 640 -375 500 -640 426 -640 424 -640 480 -640 480 -441 640 -640 427 -427 640 -640 480 -500 375 -640 427 -480 640 -640 360 -640 480 -427 640 -640 427 -640 480 -640 427 -500 333 -480 640 -375 500 -433 500 -640 480 -640 480 -500 370 -640 360 -640 389 -436 640 -640 480 -640 480 -640 426 -427 640 -640 640 -576 384 -640 480 -500 415 -500 500 -640 480 -500 402 -640 480 -640 427 -333 500 -640 426 -500 375 -640 425 -440 500 -640 427 -640 480 -427 640 -640 426 -640 480 -333 500 -640 474 -640 480 -478 640 -480 640 -640 478 -640 427 -630 640 -500 375 -640 480 -640 458 -640 425 -640 480 -500 336 -332 500 -640 436 -640 480 -480 640 -640 512 -434 500 -640 426 -640 480 -478 640 -640 479 -640 483 -640 437 -640 436 -640 427 -640 425 -640 483 -480 640 -500 375 -640 428 -500 334 -359 473 -640 427 -640 288 -640 480 -640 480 -640 480 -480 640 -640 480 -500 375 -640 480 -640 480 -600 450 -500 335 -480 640 -640 480 -500 400 -640 480 -480 640 -500 333 -612 612 -640 480 -500 359 -375 500 -640 480 -640 413 -640 480 -640 480 -424 640 -640 494 -640 427 -640 480 -640 423 -640 426 -640 480 -640 480 -500 375 -480 640 -640 427 -640 480 -640 480 -640 427 -640 383 -425 640 -480 640 -640 427 -640 470 -640 427 -423 640 -480 640 -640 424 -500 336 -333 500 -640 480 -640 424 -640 427 -640 428 -500 375 -478 640 -640 512 -640 506 -640 480 -375 500 -640 396 -640 427 -640 428 -480 640 -333 500 -640 427 -500 333 -483 640 -640 480 -500 332 -640 426 -369 500 -640 396 -640 480 -640 427 -424 640 -640 424 -640 480 -427 640 -640 480 -458 640 -640 480 -480 640 -640 378 -640 601 -640 480 -640 480 -640 427 -640 480 -640 480 -320 240 -640 506 -640 426 -640 484 -427 640 -375 500 -640 426 -500 375 -640 480 -640 443 -640 428 -427 640 -504 337 -640 296 -375 500 -500 375 -480 640 -640 480 -296 442 -432 345 -375 500 -640 427 -478 640 -640 478 -640 494 -500 333 -640 480 -500 400 -427 640 -406 640 -425 640 -640 424 -640 427 -640 427 -640 458 -640 480 -612 612 -640 480 -500 375 -640 427 -640 480 -549 640 -500 281 -640 640 -500 333 -312 400 -500 375 -640 522 -500 375 -640 478 -640 427 -640 626 -640 480 -620 486 -640 422 -640 480 -506 640 -640 425 -640 480 -640 427 -640 425 -640 360 -640 512 -500 375 -640 480 -640 428 -640 370 -612 612 -640 480 -375 500 -640 605 -500 334 -640 480 -640 480 -640 481 -426 640 -500 375 -624 415 -640 400 -427 640 -481 500 -640 361 -425 640 -640 429 -640 360 -640 499 -640 480 -427 640 -640 424 -480 640 -640 427 -640 440 -500 375 -640 480 -640 480 -480 640 -640 521 -640 427 -471 500 -427 640 -640 479 -640 480 -500 375 -640 428 -640 480 -640 428 -500 333 -480 640 -640 480 -640 480 -640 480 -640 480 -640 480 -640 426 -500 334 -640 427 -427 640 -640 480 -640 480 -515 640 -480 640 -640 480 -572 640 -640 480 -640 480 -640 425 -640 480 -640 480 -640 360 -500 332 -640 360 -480 640 -480 640 -640 427 -640 480 -640 426 -640 480 -427 640 -427 640 -640 479 -640 640 -500 375 -640 457 -640 479 -640 376 -427 640 -640 426 -640 524 -392 640 -640 425 -640 429 -640 480 -640 426 -640 480 -640 512 -640 427 -500 375 -640 480 -640 480 -480 640 -480 640 -640 427 -640 480 -640 480 -426 640 -640 427 -640 494 -640 480 -375 500 -640 300 -640 480 -640 452 -640 480 -640 578 -640 427 -640 442 -640 480 -640 424 -480 640 -494 500 -233 350 -640 423 -640 640 -640 360 -427 640 -480 640 -640 427 -428 640 -640 427 -640 427 -640 480 -640 480 -500 444 -480 640 -640 480 -640 518 -427 640 -500 333 -640 480 -640 427 -480 640 -640 427 -640 480 -640 425 -640 427 -640 402 -640 427 -640 480 -640 425 -640 630 -429 640 -640 480 -640 640 -640 480 -480 640 -500 333 -640 346 -489 640 -640 427 -640 426 -640 144 -640 424 -640 480 -640 417 -640 480 -640 640 -640 426 -426 640 -640 480 -640 414 -300 357 -640 480 -640 427 -383 640 -480 640 -480 640 -375 500 -640 427 -500 375 -640 427 -429 640 -512 640 -640 473 -427 640 -640 426 -640 427 -640 241 -640 428 -640 478 -640 425 -456 640 -500 375 -640 480 -640 273 -500 375 -640 426 -500 375 -425 640 -500 375 -640 427 -612 612 -640 480 -422 640 -640 427 -427 640 -480 640 -500 375 -529 640 -640 501 -640 480 -640 424 -640 427 -640 530 -375 500 -640 427 -500 333 -640 428 -640 360 -640 480 -612 612 -500 500 -640 427 -640 480 -640 424 -480 640 -425 640 -640 480 -375 500 -500 375 -640 424 -600 464 -500 333 -500 500 -640 466 -640 427 -640 480 -640 348 -609 640 -640 480 -640 408 -640 480 -427 640 -640 480 -640 480 -640 416 -500 375 -640 569 -326 220 -419 640 -640 480 -375 500 -375 500 -640 427 -640 461 -480 640 -640 481 -427 640 -640 427 -640 480 -640 480 -640 427 -640 480 -480 640 -640 478 -640 427 -640 480 -375 500 -640 427 -500 375 -493 640 -500 375 -427 640 -640 480 -431 640 -640 480 -640 427 -640 428 -428 640 -640 360 -415 640 -640 480 -332 500 -640 427 -640 428 -640 444 -640 480 -428 640 -500 359 -640 427 -640 480 -640 480 -425 640 -375 500 -160 120 -500 481 -506 640 -640 427 -640 480 -640 448 -640 480 -612 612 -640 480 -640 427 -640 480 -640 428 -640 434 -640 480 -500 375 -640 480 -491 640 -640 425 -640 480 -640 474 -640 427 -640 283 -640 360 -640 427 -640 359 -640 360 -427 640 -640 480 -640 480 -480 640 -640 428 -640 426 -427 640 -640 427 -640 427 -640 463 -480 640 -640 433 -640 587 -640 425 -640 640 -640 427 -640 424 -640 427 -640 426 -640 480 -640 427 -500 339 -640 427 -640 427 -640 480 -480 640 -640 480 -640 480 -480 640 -640 480 -640 427 -640 426 -640 427 -640 427 -640 360 -640 480 -640 480 -480 640 -640 480 -375 500 -640 426 -640 439 -480 640 -500 375 -427 640 -640 427 -640 427 -512 640 -640 425 -640 494 -424 640 -480 640 -640 427 -640 480 -352 288 -640 360 -640 428 -427 640 -375 500 -640 427 -640 361 -297 500 -640 360 -480 640 -640 480 -612 612 -640 473 -640 519 -640 480 -640 425 -427 640 -640 480 -500 333 -480 640 -640 427 -640 484 -640 480 -640 483 -427 640 -427 640 -640 480 -640 480 -640 556 -500 331 -640 426 -480 640 -640 427 -480 640 -640 429 -500 375 -500 375 -640 425 -426 640 -640 480 -480 640 -484 640 -640 253 -640 431 -640 428 -640 427 -427 640 -398 640 -640 429 -640 360 -612 612 -480 640 -640 480 -640 640 -375 500 -640 472 -640 458 -640 640 -640 427 -640 428 -640 621 -500 334 -640 424 -640 480 -640 480 -640 426 -640 427 -427 640 -640 483 -640 428 -640 424 -516 640 -538 480 -427 640 -640 480 -640 480 -640 640 -406 640 -240 320 -500 375 -640 360 -612 612 -476 640 -640 427 -640 530 -640 426 -500 375 -640 396 -640 480 -480 640 -640 494 -640 508 -640 480 -640 640 -640 426 -432 640 -443 640 -640 427 -640 432 -640 480 -640 427 -427 640 -500 375 -612 612 -640 426 -640 480 -640 361 -331 500 -640 425 -640 480 -640 427 -480 640 -640 480 -640 427 -640 425 -640 428 -640 360 -500 374 -480 640 -427 640 -426 640 -640 427 -640 427 -640 463 -500 333 -640 426 -500 337 -373 640 -640 491 -427 640 -612 612 -640 423 -640 480 -640 480 -640 573 -640 464 -640 427 -640 480 -640 480 -350 375 -640 623 -612 612 -640 480 -640 479 -640 360 -315 315 -640 481 -640 427 -640 480 -480 640 -640 426 -640 425 -640 428 -640 427 -640 480 -640 478 -640 427 -375 500 -640 398 -640 427 -640 426 -427 640 -640 425 -640 362 -640 480 -500 375 -396 500 -500 375 -640 425 -376 500 -640 480 -426 640 -500 333 -383 640 -640 425 -640 425 -426 640 -640 480 -640 360 -640 489 -640 480 -612 612 -480 640 -640 479 -500 334 -640 480 -332 500 -332 500 -480 640 -375 500 -640 480 -640 480 -640 428 -500 166 -448 500 -640 480 -640 382 -640 360 -640 480 -452 640 -480 640 -640 480 -640 427 -640 427 -640 404 -640 480 -480 640 -640 480 -488 640 -640 480 -640 426 -640 427 -640 480 -434 640 -500 333 -480 640 -500 375 -640 480 -640 480 -640 426 -640 425 -334 500 -640 429 -640 361 -640 427 -320 640 -640 480 -480 640 -640 512 -640 472 -500 375 -640 480 -640 640 -640 425 -640 640 -427 640 -640 560 -494 640 -480 640 -640 427 -500 375 -427 640 -513 640 -640 427 -300 400 -427 640 -453 640 -428 640 -335 500 -640 480 -640 426 -640 480 -480 640 -478 640 -612 612 -640 480 -640 480 -640 481 -640 480 -640 427 -375 500 -640 631 -640 405 -480 640 -500 375 -640 480 -427 640 -640 480 -500 333 -640 425 -480 640 -640 427 -570 570 -640 480 -640 480 -640 480 -640 427 -612 612 -640 402 -398 600 -640 427 -448 312 -640 427 -640 427 -640 427 -640 427 -640 478 -640 481 -640 538 -500 333 -509 640 -640 480 -640 480 -640 640 -480 640 -640 427 -640 480 -640 480 -640 427 -375 500 -640 480 -640 425 -612 612 -636 640 -480 640 -640 427 -428 640 -428 640 -640 480 -640 426 -640 480 -640 480 -426 640 -492 500 -640 498 -640 480 -640 425 -640 425 -640 425 -640 427 -640 432 -500 333 -353 640 -500 375 -500 375 -480 640 -640 360 -438 640 -640 480 -640 426 -576 576 -638 640 -640 466 -361 500 -640 427 -640 456 -640 390 -640 585 -375 500 -640 480 -640 480 -640 401 -640 480 -500 401 -640 480 -640 480 -424 640 -640 480 -480 640 -640 414 -483 640 -480 640 -500 333 -640 480 -640 393 -427 640 -480 640 -640 414 -480 640 -500 332 -640 640 -640 395 -640 222 -640 427 -640 427 -427 640 -640 480 -640 427 -640 480 -640 429 -500 375 -500 333 -480 640 -500 470 -640 363 -335 500 -340 455 -639 640 -640 480 -458 640 -316 500 -640 480 -500 375 -640 480 -640 512 -640 480 -640 480 -480 640 -427 640 -389 500 -640 480 -375 500 -480 640 -640 480 -640 426 -640 359 -639 640 -640 480 -500 375 -612 612 -375 500 -640 480 -640 378 -640 428 -640 480 -640 478 -640 461 -480 640 -424 640 -640 480 -640 480 -500 333 -640 320 -612 612 -500 333 -640 480 -420 640 -500 375 -640 480 -640 480 -640 480 -640 425 -640 428 -640 427 -640 451 -640 424 -640 516 -640 500 -640 480 -620 413 -640 426 -640 480 -480 640 -333 500 -498 640 -500 334 -640 480 -640 480 -640 480 -640 480 -500 359 -480 640 -640 427 -425 640 -640 483 -640 428 -640 480 -480 640 -640 427 -640 426 -640 425 -640 427 -640 480 -640 427 -640 450 -640 480 -473 640 -640 400 -640 485 -480 640 -640 427 -640 426 -640 402 -640 480 -482 640 -480 640 -480 640 -427 640 -500 375 -480 640 -640 426 -640 640 -608 379 -640 480 -640 427 -640 480 -640 480 -640 480 -640 480 -640 480 -500 374 -427 640 -640 425 -640 427 -640 427 -500 333 -500 302 -427 640 -480 640 -640 458 -640 480 -480 640 -480 640 -427 640 -640 480 -640 480 -640 421 -640 427 -640 480 -640 480 -640 427 -427 640 -640 480 -427 640 -640 480 -332 500 -640 425 -640 428 -640 427 -640 448 -640 427 -427 640 -640 428 -640 480 -640 510 -640 426 -500 375 -640 502 -427 640 -640 439 -427 640 -640 480 -480 640 -640 427 -480 640 -640 480 -640 513 -640 426 -640 427 -640 425 -640 426 -640 427 -480 640 -640 425 -640 427 -640 486 -424 640 -640 480 -500 380 -640 427 -427 640 -640 171 -428 640 -374 500 -640 427 -426 640 -500 375 -640 427 -640 480 -640 427 -500 375 -640 640 -500 469 -640 480 -480 640 -480 640 -640 383 -640 480 -604 640 -640 477 -640 480 -640 480 -640 480 -500 364 -430 640 -640 424 -640 480 -640 426 -640 428 -640 425 -612 612 -640 480 -640 426 -588 640 -640 426 -500 375 -640 480 -640 427 -640 427 -640 480 -427 640 -200 150 -640 480 -640 429 -640 429 -471 500 -426 640 -350 467 -640 425 -428 640 -428 640 -500 375 -426 640 -640 480 -480 640 -640 426 -428 640 -640 429 -640 480 -500 375 -640 424 -640 457 -427 640 -480 640 -640 424 -612 612 -427 640 -640 480 -640 480 -640 424 -640 480 -360 640 -427 640 -480 640 -640 640 -640 427 -640 480 -640 427 -640 424 -640 479 -640 470 -640 390 -427 640 -610 407 -426 640 -640 359 -375 500 -640 426 -640 478 -638 640 -640 427 -640 480 -640 429 -640 339 -640 415 -640 480 -640 478 -480 640 -453 640 -429 640 -427 640 -640 427 -640 528 -640 498 -640 480 -640 360 -640 480 -480 640 -640 480 -640 474 -640 480 -640 427 -640 479 -640 480 -500 375 -640 480 -640 480 -640 426 -640 480 -480 640 -500 375 -640 406 -640 480 -640 428 -640 640 -640 480 -480 640 -640 480 -631 600 -640 480 -425 640 -426 640 -427 640 -640 480 -640 480 -480 640 -640 480 -640 427 -640 457 -500 333 -640 427 -640 480 -640 480 -640 416 -640 427 -426 640 -640 427 -640 409 -469 500 -480 640 -640 427 -640 427 -640 428 -640 480 -640 427 -500 375 -500 375 -640 480 -640 575 -640 512 -640 480 -428 640 -640 480 -640 480 -427 640 -640 426 -427 640 -640 480 -640 403 -640 480 -640 458 -500 333 -500 356 -640 302 -375 500 -640 242 -640 480 -640 426 -640 427 -640 415 -640 513 -640 427 -500 402 -640 480 -427 640 -640 424 -480 640 -375 500 -640 427 -500 281 -640 445 -640 425 -357 520 -160 120 -640 480 -640 504 -466 640 -640 428 -640 480 -622 622 -640 427 -640 480 -640 426 -640 480 -640 451 -640 480 -612 612 -640 480 -640 427 -640 427 -501 359 -612 612 -640 437 -640 480 -640 426 -640 425 -640 427 -640 480 -334 500 -500 335 -640 425 -640 480 -500 333 -640 428 -640 427 -640 480 -640 444 -480 640 -640 426 -640 480 -640 425 -512 384 -640 640 -526 640 -640 427 -640 438 -424 640 -640 424 -383 640 -640 331 -640 480 -640 428 -640 462 -640 476 -427 640 -640 480 -640 360 -500 349 -640 480 -640 480 -640 427 -172 227 -640 427 -500 500 -640 426 -640 480 -640 478 -640 485 -445 640 -483 640 -375 500 -640 480 -640 427 -640 480 -640 349 -640 480 -640 426 -500 334 -612 612 -640 427 -427 640 -640 480 -640 427 -480 640 -500 334 -480 640 -427 640 -640 361 -640 480 -640 426 -427 640 -640 480 -640 427 -640 426 -640 360 -640 480 -640 480 -379 640 -640 481 -640 427 -640 480 -640 480 -640 334 -640 416 -640 640 -640 640 -480 640 -427 640 -640 427 -640 427 -426 640 -640 359 -640 426 -640 427 -640 376 -500 332 -640 427 -640 424 -640 427 -640 480 -640 427 -640 480 -480 640 -500 375 -425 640 -480 640 -427 640 -640 441 -640 427 -640 427 -640 331 -640 411 -640 427 -500 375 -640 480 -640 426 -640 639 -640 480 -640 427 -640 461 -480 640 -640 480 -640 480 -454 640 -427 640 -640 427 -640 413 -480 640 -612 612 -500 375 -640 480 -640 337 -640 480 -640 480 -480 640 -640 544 -640 425 -426 640 -480 640 -640 415 -235 314 -640 481 -640 408 -426 640 -640 424 -640 427 -500 493 -640 427 -640 383 -500 346 -640 370 -640 480 -500 331 -640 359 -640 480 -502 640 -480 640 -640 336 -640 480 -640 480 -478 640 -480 640 -640 480 -640 383 -640 480 -640 480 -425 640 -480 640 -640 427 -640 426 -640 480 -640 480 -640 426 -612 612 -640 426 -640 426 -333 500 -640 427 -500 375 -640 494 -640 426 -333 500 -640 443 -640 483 -426 640 -640 480 -640 480 -640 480 -640 480 -640 427 -640 325 -500 375 -640 427 -500 375 -500 375 -640 428 -640 396 -640 460 -500 335 -640 480 -640 482 -640 480 -426 640 -640 416 -640 480 -640 480 -500 375 -480 640 -426 640 -640 480 -640 512 -478 640 -640 428 -480 640 -640 480 -480 640 -640 361 -480 640 -640 360 -457 640 -640 429 -640 480 -480 640 -614 640 -640 447 -640 480 -480 640 -480 640 -640 429 -640 480 -640 480 -376 500 -189 500 -500 333 -640 425 -426 640 -640 407 -640 426 -640 427 -426 640 -640 427 -500 331 -640 426 -428 640 -500 332 -640 480 -640 425 -640 425 -640 480 -427 640 -640 425 -640 512 -640 628 -500 332 -640 427 -640 480 -536 640 -640 427 -640 427 -640 426 -640 640 -640 360 -612 612 -640 480 -640 640 -640 426 -640 427 -480 640 -640 426 -640 427 -640 480 -640 438 -640 590 -640 480 -640 480 -331 500 -640 427 -640 640 -640 427 -500 375 -500 375 -640 480 -480 640 -640 480 -550 640 -500 500 -640 480 -640 427 -359 640 -640 480 -375 500 -640 427 -500 336 -640 512 -640 418 -640 427 -500 281 -640 360 -375 500 -640 428 -427 640 -419 640 -640 360 -640 480 -640 427 -640 426 -640 426 -640 480 -640 640 -640 426 -640 480 -640 480 -640 480 -640 530 -480 640 -367 640 -640 480 -640 236 -500 375 -480 640 -640 427 -640 427 -640 414 -640 289 -500 376 -640 480 -640 480 -640 428 -640 427 -640 480 -640 428 -500 334 -640 360 -427 640 -640 480 -500 333 -640 480 -375 500 -375 500 -640 480 -640 360 -500 375 -640 386 -640 480 -640 480 -640 480 -640 512 -640 480 -426 640 -600 453 -640 427 -640 480 -640 480 -500 375 -478 640 -640 480 -640 480 -612 612 -500 500 -640 429 -500 482 -640 480 -480 640 -500 333 -335 500 -640 356 -640 480 -640 508 -640 360 -640 427 -640 427 -512 640 -640 427 -480 640 -429 640 -427 640 -640 427 -425 640 -640 480 -640 426 -640 640 -478 640 -640 428 -428 640 -640 480 -640 427 -640 480 -612 612 -640 480 -640 480 -500 375 -427 640 -480 640 -427 640 -640 424 -500 283 -640 433 -640 329 -640 288 -612 612 -640 489 -640 427 -425 640 -640 278 -500 377 -480 640 -640 480 -640 578 -640 479 -640 425 -640 626 -640 455 -640 427 -640 448 -640 443 -640 640 -621 640 -480 640 -640 428 -375 500 -482 640 -427 640 -480 640 -500 375 -612 612 -640 427 -480 640 -640 427 -480 640 -640 427 -640 480 -640 501 -473 640 -375 500 -480 640 -480 640 -640 427 -428 640 -640 480 -500 309 -640 424 -640 426 -640 425 -480 640 -640 446 -480 640 -640 427 -640 480 -640 480 -427 640 -480 640 -445 500 -640 480 -640 329 -375 500 -640 480 -500 333 -640 427 -500 375 -640 480 -640 480 -427 640 -400 500 -640 480 -640 480 -427 640 -612 612 -640 480 -427 640 -640 480 -400 300 -640 480 -640 480 -640 426 -426 640 -640 496 -500 333 -640 428 -640 426 -383 640 -500 478 -640 480 -640 480 -586 640 -480 640 -640 427 -480 640 -427 640 -640 360 -375 500 -640 480 -640 426 -640 480 -320 240 -640 427 -640 428 -640 427 -640 510 -333 500 -612 612 -640 359 -640 424 -427 640 -640 427 -500 375 -427 640 -640 480 -640 480 -340 500 -640 413 -640 425 -500 375 -478 640 -640 443 -640 480 -500 188 -640 427 -640 361 -640 419 -640 427 -427 640 -640 480 -500 375 -480 640 -640 480 -427 640 -640 478 -640 480 -612 612 -500 375 -640 427 -640 426 -640 427 -513 640 -291 449 -640 480 -640 480 -640 527 -640 426 -640 426 -500 333 -427 640 -640 427 -640 640 -640 480 -640 640 -640 427 -640 400 -427 640 -640 428 -640 480 -480 640 -640 427 -640 426 -640 418 -640 480 -361 640 -640 427 -640 429 -640 424 -480 640 -640 426 -480 640 -630 450 -640 569 -640 480 -427 640 -640 427 -480 640 -612 612 -640 425 -640 426 -500 375 -500 333 -359 640 -444 640 -500 375 -640 480 -640 512 -640 480 -640 382 -332 500 -640 429 -640 480 -640 480 -640 480 -640 480 -640 480 -375 500 -640 586 -640 427 -332 500 -358 500 -500 374 -640 411 -375 500 -640 428 -640 427 -640 427 -480 640 -640 480 -427 640 -427 640 -500 333 -640 480 -640 426 -360 640 -640 427 -640 296 -480 640 -640 450 -425 640 -333 500 -427 640 -427 640 -640 426 -640 428 -480 640 -546 366 -480 640 -640 428 -640 425 -640 480 -640 401 -480 382 -640 480 -640 480 -500 375 -640 480 -612 612 -640 427 -500 500 -640 426 -480 640 -480 640 -640 488 -480 640 -640 389 -612 612 -640 427 -640 425 -375 500 -427 640 -640 430 -640 480 -334 500 -640 480 -640 479 -640 427 -640 427 -640 480 -640 480 -640 412 -640 418 -427 640 -640 478 -640 425 -640 324 -500 335 -640 480 -640 428 -640 480 -500 333 -480 640 -640 453 -640 364 -426 640 -640 480 -640 427 -640 480 -429 640 -500 334 -640 480 -640 466 -480 640 -480 640 -383 640 -640 425 -640 480 -640 429 -612 612 -640 454 -640 487 -480 640 -640 427 -640 480 -375 500 -478 640 -480 640 -640 480 -640 480 -640 480 -640 480 -480 640 -640 471 -454 640 -640 427 -640 427 -640 640 -640 524 -640 480 -640 480 -640 480 -640 513 -640 427 -640 417 -284 640 -500 375 -640 383 -640 427 -640 480 -640 480 -612 612 -640 427 -478 640 -640 480 -640 633 -640 469 -640 480 -640 427 -640 426 -640 480 -426 640 -640 480 -375 500 -640 288 -640 458 -640 508 -480 640 -640 428 -427 640 -640 480 -640 480 -640 480 -480 640 -640 480 -424 640 -640 428 -640 426 -640 360 -640 426 -500 375 -384 640 -640 427 -480 640 -640 478 -640 427 -500 353 -500 334 -640 480 -640 480 -508 640 -427 640 -640 427 -500 333 -640 480 -586 640 -640 481 -500 375 -640 451 -640 480 -640 640 -640 509 -425 640 -640 211 -640 480 -640 480 -375 500 -500 333 -640 476 -640 405 -500 375 -640 480 -600 450 -640 426 -640 424 -500 333 -640 480 -640 640 -640 480 -640 483 -640 427 -640 480 -640 238 -640 360 -640 425 -500 330 -640 480 -640 400 -454 500 -640 480 -480 640 -640 539 -640 457 -441 600 -500 333 -500 375 -640 458 -640 480 -640 426 -640 498 -640 480 -612 612 -508 640 -640 428 -480 640 -480 640 -640 433 -426 640 -640 425 -640 459 -438 640 -640 427 -480 640 -640 426 -640 425 -640 426 -613 640 -640 480 -640 427 -640 426 -640 427 -640 427 -640 425 -640 427 -500 375 -480 640 -470 352 -640 480 -480 640 -480 640 -640 480 -640 428 -640 480 -640 425 -640 478 -480 640 -640 391 -640 426 -640 426 -618 640 -640 427 -640 512 -640 427 -480 640 -640 480 -427 640 -640 480 -640 480 -640 427 -640 470 -500 382 -640 424 -456 640 -640 480 -640 480 -640 427 -640 426 -480 640 -640 427 -640 480 -500 375 -640 480 -640 427 -640 427 -640 480 -426 640 -640 480 -384 640 -612 612 -640 340 -424 640 -500 430 -640 286 -480 640 -427 640 -500 334 -640 480 -480 640 -640 494 -640 480 -640 480 -640 424 -375 500 -370 500 -640 480 -640 427 -462 640 -484 640 -640 427 -640 480 -424 640 -640 480 -550 413 -480 640 -480 640 -640 499 -424 640 -640 400 -640 449 -640 640 -375 500 -640 427 -640 427 -640 427 -640 443 -500 375 -640 426 -640 427 -640 446 -483 640 -448 640 -640 529 -500 333 -612 612 -640 427 -640 426 -640 429 -500 332 -640 515 -480 640 -640 427 -640 418 -640 423 -640 480 -640 427 -640 428 -640 427 -640 428 -640 401 -640 427 -480 640 -480 640 -640 482 -480 640 -640 480 -640 427 -427 640 -640 550 -640 427 -426 640 -640 425 -640 426 -640 480 -640 253 -640 426 -640 427 -480 640 -445 640 -640 404 -640 491 -480 640 -640 424 -640 425 -640 437 -426 640 -612 612 -494 640 -500 375 -640 425 -640 480 -426 640 -612 612 -640 480 -640 480 -640 453 -546 366 -640 426 -640 480 -640 427 -640 359 -640 480 -640 480 -640 427 -500 500 -640 426 -640 624 -500 375 -428 640 -640 427 -640 418 -640 540 -640 480 -500 333 -640 480 -640 427 -500 334 -640 426 -640 480 -500 332 -640 426 -640 426 -640 432 -640 411 -640 480 -640 459 -640 521 -640 427 -640 427 -427 640 -353 640 -500 333 -640 427 -612 612 -640 505 -640 480 -640 549 -478 640 -640 480 -640 427 -640 427 -640 480 -640 428 -640 427 -479 640 -640 427 -640 427 -300 255 -500 375 -640 427 -367 500 -640 430 -393 640 -640 480 -640 458 -640 480 -640 363 -640 423 -640 428 -640 288 -640 427 -399 500 -640 479 -640 543 -612 612 -512 640 -640 429 -480 640 -360 239 -640 428 -500 375 -500 375 -640 425 -513 640 -640 409 -640 480 -480 640 -640 104 -640 428 -640 427 -427 640 -640 466 -640 427 -640 430 -640 480 -640 426 -640 427 -640 427 -426 640 -640 427 -640 480 -640 480 -500 375 -640 480 -455 640 -640 480 -640 480 -640 427 -640 480 -500 333 -500 375 -612 612 -640 480 -333 500 -500 333 -500 375 -640 427 -428 640 -640 376 -640 480 -640 480 -640 480 -500 377 -640 506 -479 640 -500 333 -600 296 -500 375 -640 428 -576 640 -640 480 -640 425 -640 425 -480 640 -425 640 -640 480 -500 375 -640 360 -500 375 -640 583 -500 375 -500 375 -480 640 -480 640 -480 640 -640 480 -640 428 -640 480 -640 403 -640 480 -640 480 -640 451 -640 480 -640 480 -640 429 -640 451 -640 480 -640 427 -500 375 -427 640 -640 425 -500 333 -640 480 -427 640 -640 427 -640 425 -640 480 -640 456 -408 391 -640 480 -477 640 -640 427 -512 640 -480 640 -640 429 -640 425 -640 480 -640 480 -640 407 -640 545 -640 480 -640 480 -640 480 -500 375 -333 500 -640 428 -500 333 -640 378 -427 640 -640 428 -375 500 -640 486 -640 640 -640 480 -640 424 -480 640 -640 427 -426 640 -640 480 -640 362 -426 640 -640 426 -640 480 -612 612 -640 426 -640 480 -640 426 -640 480 -425 640 -640 426 -421 640 -427 640 -480 640 -640 480 -427 640 -334 500 -480 640 -640 427 -640 429 -500 333 -640 480 -500 334 -326 500 -640 480 -640 480 -478 640 -480 640 -500 375 -640 512 -640 423 -640 427 -640 640 -640 480 -640 425 -640 480 -640 480 -640 480 -640 427 -640 252 -640 427 -640 480 -428 640 -500 374 -640 480 -500 375 -375 500 -640 480 -500 375 -640 360 -640 426 -640 640 -480 640 -427 640 -480 640 -640 479 -640 431 -640 373 -428 640 -640 433 -640 480 -640 480 -640 480 -640 427 -640 480 -484 640 -640 429 -480 640 -375 500 -427 640 -640 480 -640 480 -500 375 -288 352 -371 640 -640 480 -425 640 -640 625 -640 359 -640 478 -640 480 -640 480 -640 480 -640 405 -640 427 -640 478 -640 480 -640 480 -640 480 -500 331 -640 425 -640 479 -640 427 -427 640 -640 427 -640 480 -640 564 -500 375 -640 480 -480 384 -576 413 -427 640 -640 428 -612 612 -425 640 -500 333 -640 426 -427 640 -640 480 -640 480 -480 640 -640 426 -500 407 -640 394 -600 450 -500 375 -500 375 -500 332 -469 640 -500 375 -640 427 -640 427 -640 427 -640 480 -640 425 -640 603 -640 480 -640 463 -612 612 -640 427 -426 640 -427 640 -640 480 -640 426 -640 480 -640 480 -640 480 -640 427 -640 427 -600 450 -640 480 -640 425 -500 375 -640 318 -436 640 -640 640 -640 427 -480 640 -640 461 -427 640 -427 640 -375 500 -426 640 -640 480 -640 480 -480 640 -480 640 -640 480 -308 462 -480 640 -640 427 -640 480 -640 427 -640 404 -360 500 -640 427 -640 426 -640 490 -480 640 -400 300 -640 444 -578 640 -640 435 -640 640 -427 640 -356 500 -640 426 -640 431 -500 375 -640 480 -640 480 -640 480 -640 506 -375 500 -640 480 -416 640 -461 640 -640 426 -640 476 -480 640 -640 425 -640 427 -500 375 -640 427 -640 427 -640 429 -640 425 -640 480 -640 480 -640 502 -640 427 -480 640 -640 480 -480 361 -640 480 -640 423 -640 560 -640 429 -500 146 -640 478 -365 640 -640 480 -427 640 -640 480 -640 482 -500 375 -640 480 -640 427 -427 640 -480 640 -640 404 -640 427 -500 375 -420 640 -325 500 -640 428 -640 263 -360 270 -640 427 -428 640 -640 427 -640 480 -426 640 -640 469 -640 428 -640 640 -500 375 -640 425 -427 640 -640 386 -640 445 -640 480 -640 480 -479 500 -640 480 -640 427 -640 640 -640 480 -640 478 -640 424 -480 640 -346 500 -500 280 -640 426 -480 640 -640 480 -640 427 -640 480 -640 480 -500 377 -399 640 -500 375 -640 480 -640 429 -478 640 -500 375 -480 640 -640 484 -480 640 -640 480 -640 400 -640 516 -612 612 -640 485 -426 640 -480 640 -640 416 -410 640 -640 428 -598 393 -640 407 -425 640 -640 428 -439 640 -640 411 -640 368 -640 429 -427 640 -640 433 -640 480 -500 375 -500 474 -640 426 -640 426 -640 424 -640 601 -640 427 -640 320 -640 426 -640 427 -500 333 -640 426 -640 350 -640 480 -640 428 -640 427 -640 480 -640 483 -375 500 -426 640 -640 480 -640 480 -640 398 -640 427 -640 481 -640 480 -480 640 -640 494 -640 371 -640 481 -640 480 -640 480 -640 326 -640 427 -324 182 -595 608 -640 427 -640 480 -500 334 -640 512 -480 640 -640 480 -612 612 -640 426 -640 428 -612 612 -640 480 -500 375 -500 443 -640 388 -640 480 -640 427 -640 480 -640 496 -640 457 -480 566 -480 640 -640 442 -480 640 -640 463 -640 426 -640 391 -486 640 -427 640 -640 427 -640 409 -640 427 -640 426 -640 480 -500 327 -640 427 -640 427 -528 640 -640 480 -640 423 -640 427 -640 480 -640 480 -640 536 -640 427 -640 480 -640 427 -480 640 -640 425 -640 481 -640 480 -640 427 -640 640 -640 427 -640 426 -480 640 -640 480 -640 450 -500 375 -640 427 -640 480 -640 479 -431 640 -480 640 -640 480 -640 540 -427 640 -400 205 -640 480 -640 432 -640 480 -640 427 -640 409 -640 427 -427 640 -500 375 -640 424 -640 480 -500 375 -428 640 -640 480 -640 427 -640 383 -640 419 -640 480 -640 426 -500 375 -640 427 -640 426 -640 467 -640 361 -640 480 -480 640 -640 427 -640 480 -640 480 -480 640 -500 375 -500 500 -640 480 -640 400 -425 640 -640 427 -640 425 -640 360 -640 427 -640 490 -640 480 -432 640 -500 375 -640 479 -640 414 -424 640 -640 500 -612 612 -640 480 -640 623 -327 640 -375 500 -640 429 -640 426 -640 221 -480 640 -640 480 -640 428 -640 480 -500 281 -640 360 -640 426 -640 439 -640 427 -640 360 -480 640 -400 300 -640 596 -640 427 -640 428 -360 640 -640 457 -640 438 -500 427 -640 640 -500 375 -375 500 -640 426 -426 640 -640 480 -640 388 -640 426 -640 480 -640 480 -640 427 -640 428 -640 423 -640 436 -500 372 -640 480 -640 480 -640 366 -500 333 -640 480 -640 428 -500 484 -425 640 -640 480 -427 640 -500 332 -480 640 -640 427 -441 640 -523 640 -480 640 -500 381 -427 640 -640 405 -640 360 -500 375 -427 640 -640 427 -640 427 -408 500 -640 479 -333 500 -640 480 -640 427 -640 444 -640 480 -640 640 -640 425 -375 500 -500 375 -640 431 -640 427 -640 430 -426 640 -432 288 -640 359 -640 429 -480 640 -640 427 -512 640 -500 375 -427 640 -640 425 -612 612 -500 471 -612 612 -427 640 -480 640 -640 427 -640 480 -640 427 -640 480 -640 480 -640 480 -500 375 -640 282 -358 500 -375 500 -640 427 -640 427 -640 480 -640 480 -640 427 -427 640 -640 422 -640 428 -640 427 -500 375 -640 426 -640 400 -640 427 -433 640 -375 500 -375 500 -640 427 -640 480 -427 640 -519 640 -640 361 -640 480 -640 427 -426 640 -461 640 -640 480 -640 427 -640 425 -425 640 -500 375 -640 400 -640 480 -640 400 -640 480 -500 375 -640 479 -480 640 -640 480 -640 427 -640 414 -334 500 -640 480 -640 480 -640 427 -479 319 -640 480 -640 480 -427 640 -640 427 -640 639 -640 527 -459 640 -640 437 -640 394 -640 419 -640 427 -640 427 -640 427 -640 477 -640 427 -640 479 -500 333 -640 426 -640 333 -640 425 -500 400 -640 480 -640 480 -640 480 -640 424 -640 380 -640 465 -372 480 -640 427 -640 480 -480 640 -640 427 -640 480 -640 427 -640 360 -640 361 -640 479 -500 199 -426 640 -640 427 -640 426 -500 375 -640 480 -640 427 -500 347 -640 480 -640 480 -640 480 -480 360 -427 640 -480 640 -640 427 -640 427 -640 482 -640 480 -640 426 -480 640 -640 427 -640 480 -640 480 -612 612 -640 446 -640 425 -640 480 -640 480 -640 426 -426 640 -640 427 -640 427 -426 640 -640 427 -458 640 -640 480 -500 428 -640 384 -640 425 -500 375 -480 640 -600 450 -512 640 -640 427 -640 512 -365 640 -640 429 -640 557 -640 499 -500 375 -500 375 -640 451 -333 500 -640 480 -640 468 -427 640 -484 640 -640 480 -640 480 -640 408 -640 427 -640 424 -640 480 -500 339 -427 640 -640 480 -640 426 -640 480 -640 396 -640 480 -640 427 -640 427 -640 481 -427 640 -612 612 -640 480 -640 427 -640 480 -640 427 -640 425 -427 640 -612 612 -640 427 -500 375 -480 640 -640 428 -640 480 -640 480 -640 426 -480 640 -640 427 -500 375 -330 500 -640 480 -640 480 -612 612 -640 427 -640 425 -164 500 -480 640 -640 428 -500 375 -640 480 -640 480 -640 425 -640 480 -457 640 -640 631 -640 480 -640 462 -640 480 -640 480 -612 612 -459 640 -640 480 -640 480 -640 551 -640 480 -640 386 -640 618 -640 428 -640 480 -640 428 -540 540 -640 480 -640 493 -640 482 -640 360 -500 333 -500 500 -640 480 -478 640 -640 427 -640 541 -500 375 -640 480 -640 480 -640 427 -640 480 -640 480 -640 510 -416 500 -640 480 -640 640 -640 427 -478 640 -640 480 -640 480 -640 429 -640 480 -522 640 -640 477 -500 377 -375 500 -640 427 -640 433 -427 640 -640 303 -500 285 -480 640 -640 480 -640 480 -640 427 -180 500 -500 375 -640 480 -640 268 -480 640 -640 427 -640 426 -640 426 -640 480 -640 426 -480 640 -640 480 -640 480 -640 480 -480 640 -640 424 -478 640 -480 640 -640 428 -640 426 -640 425 -500 313 -640 398 -640 480 -480 640 -500 333 -640 457 -429 640 -640 427 -640 480 -426 640 -480 640 -640 480 -640 480 -640 424 -486 640 -640 428 -640 512 -640 427 -640 366 -427 640 -640 427 -640 444 -500 375 -421 640 -427 640 -640 426 -428 640 -480 640 -426 640 -500 375 -375 500 -640 480 -640 479 -640 425 -640 480 -375 500 -500 375 -640 480 -640 425 -640 428 -640 427 -494 640 -640 480 -640 480 -640 426 -640 451 -640 457 -426 640 -640 480 -612 612 -640 478 -640 480 -640 427 -286 640 -640 457 -640 432 -480 640 -500 333 -640 358 -640 428 -640 427 -640 427 -640 474 -640 426 -640 426 -480 640 -640 427 -640 432 -640 426 -480 640 -640 480 -640 426 -640 494 -480 640 -640 429 -640 427 -375 500 -640 419 -342 640 -640 421 -640 426 -612 612 -640 480 -375 500 -500 500 -640 360 -640 469 -640 480 -425 640 -640 427 -612 612 -640 392 -640 427 -640 480 -640 480 -640 428 -640 480 -640 426 -640 464 -640 427 -500 400 -640 369 -480 640 -640 427 -640 480 -640 480 -640 438 -640 428 -640 426 -600 600 -640 427 -640 512 -640 480 -333 500 -640 454 -640 480 -480 640 -640 423 -640 427 -640 431 -640 480 -500 375 -640 463 -640 426 -612 612 -640 360 -640 424 -640 480 -640 480 -640 426 -571 640 -377 640 -480 640 -640 480 -640 498 -480 640 -640 427 -640 426 -500 376 -640 478 -640 480 -500 375 -640 480 -640 426 -500 334 -480 640 -640 480 -640 480 -640 427 -640 425 -640 480 -480 640 -426 640 -640 563 -640 480 -480 640 -500 335 -640 480 -427 640 -480 640 -640 480 -427 640 -640 426 -640 426 -640 424 -480 640 -427 640 -500 333 -640 480 -500 375 -640 480 -640 480 -500 373 -640 417 -480 640 -640 453 -640 429 -640 360 -640 427 -640 427 -640 480 -480 640 -640 427 -640 480 -480 640 -640 404 -640 480 -640 427 -375 500 -640 427 -640 425 -640 426 -640 427 -640 329 -640 426 -333 500 -640 427 -640 426 -640 454 -640 480 -427 640 -640 374 -640 369 -640 427 -640 433 -640 427 -612 612 -640 480 -640 424 -640 480 -426 640 -640 480 -640 480 -640 434 -428 640 -480 640 -640 523 -500 400 -640 640 -640 427 -640 361 -640 432 -336 500 -500 375 -640 427 -640 480 -640 424 -640 425 -427 640 -640 480 -480 360 -482 640 -640 480 -480 640 -640 426 -640 427 -500 375 -640 480 -640 427 -612 612 -640 480 -640 425 -640 480 -363 500 -640 480 -640 480 -640 480 -640 480 -500 375 -640 490 -640 480 -640 426 -640 424 -640 427 -640 427 -640 480 -640 480 -375 500 -640 413 -640 462 -480 640 -427 640 -427 640 -572 640 -640 480 -640 289 -640 427 -640 427 -640 478 -427 640 -427 640 -640 427 -375 500 -375 500 -500 332 -640 402 -640 429 -500 337 -640 480 -640 480 -640 480 -640 480 -640 425 -640 480 -640 427 -640 457 -640 427 -500 400 -640 480 -640 480 -427 640 -640 581 -640 480 -640 480 -640 427 -640 427 -500 375 -640 480 -612 612 -640 428 -463 640 -640 436 -640 480 -500 375 -500 375 -512 640 -640 462 -640 636 -640 480 -640 474 -480 640 -640 428 -640 480 -480 640 -333 500 -640 512 -612 612 -500 333 -640 427 -640 494 -640 426 -640 427 -640 480 -640 429 -640 480 -500 334 -500 488 -378 500 -430 628 -640 429 -640 639 -640 455 -640 480 -640 427 -480 640 -640 426 -640 480 -567 378 -612 612 -640 480 -427 640 -640 427 -640 427 -640 480 -640 427 -640 480 -367 500 -640 480 -612 612 -360 240 -500 375 -589 640 -640 480 -640 425 -640 427 -425 640 -640 360 -640 427 -640 491 -640 424 -640 480 -427 640 -640 480 -640 480 -640 480 -333 500 -640 480 -426 640 -480 640 -640 427 -640 409 -640 369 -640 471 -500 407 -425 640 -375 500 -338 450 -640 429 -640 423 -640 480 -640 480 -640 480 -200 150 -640 428 -427 640 -640 480 -500 377 -640 480 -640 433 -640 478 -640 426 -640 238 -478 640 -640 480 -640 480 -640 427 -640 421 -640 480 -640 427 -640 379 -640 427 -640 426 -640 480 -500 375 -428 640 -640 480 -640 427 -640 384 -480 640 -537 640 -612 612 -427 640 -640 437 -640 480 -640 480 -480 640 -640 427 -500 379 -640 480 -640 426 -640 478 -640 427 -640 480 -435 640 -428 640 -375 500 -640 427 -500 375 -457 640 -640 427 -640 426 -640 480 -640 428 -640 426 -480 640 -640 427 -640 427 -640 480 -640 427 -640 480 -640 640 -640 480 -640 480 -427 640 -640 480 -640 427 -640 480 -640 480 -640 429 -500 375 -640 480 -436 640 -640 401 -640 306 -640 480 -640 426 -640 461 -640 429 -640 480 -500 375 -427 640 -640 384 -640 480 -500 375 -640 425 -640 427 -640 640 -640 480 -640 640 -480 640 -640 640 -480 640 -640 443 -516 640 -640 426 -480 640 -427 640 -640 480 -640 298 -425 640 -640 480 -640 480 -424 640 -640 480 -640 427 -480 640 -640 569 -375 500 -344 640 -383 640 -640 415 -640 480 -640 480 -640 480 -500 333 -640 426 -426 640 -480 640 -375 500 -640 480 -640 256 -640 427 -640 480 -500 375 -640 480 -640 480 -640 427 -640 480 -640 427 -500 375 -640 361 -640 360 -480 640 -640 424 -500 375 -640 480 -640 480 -640 424 -640 427 -640 483 -640 510 -640 480 -640 410 -640 427 -480 640 -640 350 -427 640 -640 427 -640 360 -640 480 -640 484 -640 480 -640 427 -333 500 -640 427 -640 508 -640 428 -640 480 -426 640 -640 427 -640 640 -640 480 -640 480 -640 480 -640 478 -426 640 -640 428 -640 427 -640 480 -640 640 -640 428 -463 640 -640 425 -640 480 -640 272 -640 429 -640 425 -427 640 -640 481 -640 480 -640 427 -612 612 -640 427 -448 640 -640 427 -631 640 -640 480 -640 427 -640 405 -640 524 -500 334 -640 425 -640 445 -640 427 -479 640 -480 640 -498 640 -640 514 -640 478 -640 480 -640 480 -640 480 -640 640 -640 428 -640 480 -640 480 -640 444 -640 428 -640 424 -640 428 -640 427 -640 426 -640 435 -640 426 -640 488 -480 640 -427 640 -640 458 -640 427 -490 500 -640 480 -360 640 -500 375 -512 640 -640 480 -333 500 -640 427 -640 427 -640 480 -500 335 -640 424 -640 427 -640 427 -478 640 -500 375 -640 425 -640 425 -640 459 -640 428 -640 480 -500 325 -612 612 -640 480 -375 500 -640 480 -640 480 -640 427 -640 480 -334 500 -640 480 -640 426 -628 640 -640 640 -480 640 -427 640 -640 431 -640 433 -640 480 -505 640 -480 640 -500 375 -500 333 -640 480 -640 480 -640 480 -500 412 -640 418 -640 427 -500 349 -640 427 -375 500 -640 480 -640 480 -427 640 -640 348 -359 640 -640 427 -640 429 -500 400 -500 333 -427 640 -500 281 -612 612 -612 612 -640 480 -500 333 -427 640 -640 425 -427 640 -500 374 -425 640 -640 459 -640 424 -640 424 -640 439 -500 325 -427 640 -588 640 -428 640 -500 279 -640 480 -426 640 -500 375 -640 429 -480 360 -500 333 -612 612 -640 350 -333 500 -612 612 -640 478 -640 512 -499 640 -612 612 -640 480 -612 612 -480 640 -640 480 -640 426 -640 480 -640 426 -490 640 -480 640 -426 640 -640 426 -640 427 -500 344 -376 500 -640 436 -640 480 -640 480 -427 640 -640 640 -612 612 -640 479 -640 361 -480 640 -640 478 -361 500 -640 607 -640 480 -640 427 -640 480 -500 468 -640 480 -480 640 -640 478 -640 427 -612 612 -640 480 -640 479 -640 480 -640 458 -640 425 -427 640 -640 479 -612 612 -640 427 -500 375 -640 480 -640 426 -640 480 -500 333 -640 480 -640 360 -640 640 -480 640 -427 640 -480 640 -640 425 -640 359 -640 480 -640 426 -425 640 -480 640 -640 427 -500 375 -640 480 -500 375 -338 500 -640 449 -640 427 -500 375 -427 640 -640 427 -640 480 -426 640 -640 419 -640 640 -640 428 -640 480 -640 424 -640 480 -612 612 -512 640 -640 480 -500 334 -375 500 -640 392 -640 434 -480 640 -640 426 -640 441 -640 427 -640 426 -640 509 -640 320 -640 427 -332 500 -612 612 -612 612 -640 427 -640 465 -376 500 -640 427 -480 640 -640 505 -640 427 -331 500 -426 640 -640 593 -640 426 -576 640 -640 480 -640 401 -640 428 -640 480 -500 327 -480 640 -612 612 -480 640 -640 461 -425 640 -480 640 -640 452 -480 640 -640 427 -640 480 -640 426 -375 500 -375 500 -640 427 -500 330 -640 480 -640 480 -640 480 -640 425 -375 500 -640 480 -500 333 -640 359 -640 427 -480 640 -500 390 -640 479 -500 376 -628 640 -426 640 -640 480 -640 480 -640 453 -640 480 -500 317 -640 480 -500 282 -640 426 -640 516 -640 425 -640 426 -640 461 -640 480 -640 424 -640 480 -640 427 -640 480 -480 640 -640 480 -640 434 -640 427 -640 427 -640 494 -500 281 -480 640 -640 399 -640 480 -400 640 -640 427 -426 640 -612 612 -640 480 -640 480 -640 427 -640 446 -480 640 -640 427 -640 640 -210 139 -612 612 -640 427 -640 425 -640 427 -640 480 -500 333 -640 480 -640 426 -426 640 -500 333 -480 640 -640 480 -640 425 -640 426 -640 480 -640 480 -640 424 -640 360 -640 478 -640 480 -640 426 -640 480 -640 426 -426 640 -640 480 -427 640 -480 640 -612 612 -640 512 -500 375 -640 480 -640 426 -640 480 -427 640 -427 640 -422 562 -500 334 -640 413 -525 640 -640 480 -640 427 -640 480 -640 480 -640 480 -375 500 -640 427 -640 480 -640 480 -640 640 -640 364 -640 426 -473 640 -480 640 -640 480 -480 640 -640 425 -640 480 -640 428 -640 480 -375 500 -640 427 -640 427 -640 527 -640 480 -314 470 -500 399 -640 496 -480 640 -480 640 -500 500 -640 480 -426 640 -640 427 -480 640 -640 480 -640 426 -640 425 -284 423 -640 640 -640 427 -640 414 -480 640 -612 612 -640 468 -333 500 -500 392 -640 480 -480 640 -640 480 -640 480 -640 480 -640 463 -640 413 -427 640 -640 427 -640 480 -640 640 -480 640 -500 333 -640 428 -640 480 -640 480 -640 480 -640 480 -640 431 -500 302 -640 428 -480 640 -500 332 -640 494 -500 333 -480 640 -640 426 -427 640 -640 463 -640 425 -500 392 -640 480 -500 332 -640 480 -640 426 -375 500 -640 480 -640 480 -640 480 -427 640 -640 480 -500 375 -500 375 -500 379 -640 576 -640 370 -640 481 -640 408 -640 458 -629 640 -640 480 -500 375 -640 434 -425 640 -429 640 -480 640 -640 427 -640 512 -640 480 -640 480 -640 428 -500 265 -375 500 -427 640 -640 481 -500 500 -500 334 -640 480 -640 577 -424 640 -640 427 -500 332 -640 427 -639 640 -428 640 -505 640 -569 640 -640 426 -640 427 -480 640 -500 375 -640 426 -640 485 -480 640 -500 400 -640 480 -640 480 -640 427 -640 426 -471 640 -427 640 -640 530 -333 500 -640 426 -500 351 -640 425 -640 427 -500 375 -640 427 -640 427 -427 640 -640 426 -640 426 -426 640 -640 480 -465 640 -333 500 -640 480 -640 480 -500 375 -640 480 -394 640 -640 427 -640 360 -480 640 -500 333 -640 640 -640 427 -626 640 -640 425 -640 480 -640 480 -640 385 -427 640 -640 426 -640 516 -640 480 -640 443 -640 427 -640 480 -640 425 -640 428 -640 480 -484 640 -375 500 -427 640 -640 427 -640 400 -574 640 -640 478 -487 200 -640 426 -640 512 -640 480 -640 299 -640 389 -640 320 -640 427 -480 640 -640 426 -612 612 -480 640 -640 400 -640 412 -425 640 -640 424 -640 476 -640 480 -478 640 -640 478 -640 425 -640 426 -612 612 -640 424 -640 480 -640 411 -640 512 -426 640 -640 480 -640 427 -640 428 -500 377 -427 640 -640 480 -640 449 -612 612 -640 514 -640 539 -500 281 -640 427 -640 480 -640 425 -640 480 -640 480 -640 480 -640 480 -500 375 -640 426 -640 480 -640 426 -640 480 -500 333 -640 400 -640 433 -640 480 -640 478 -640 425 -640 429 -640 480 -640 329 -640 480 -640 428 -640 427 -640 427 -500 375 -480 640 -640 480 -640 640 -480 640 -520 640 -640 514 -640 480 -640 427 -640 480 -500 375 -640 383 -500 375 -640 495 -465 640 -640 427 -480 640 -640 480 -612 612 -333 500 -480 640 -500 375 -640 480 -400 300 -500 375 -640 427 -640 427 -640 359 -612 612 -640 373 -612 612 -424 640 -640 425 -640 444 -640 480 -640 478 -640 427 -500 332 -640 480 -640 427 -640 427 -640 639 -640 480 -480 640 -640 427 -500 375 -471 640 -640 427 -500 375 -640 426 -640 426 -500 371 -640 480 -500 375 -640 428 -358 243 -640 498 -640 424 -640 480 -500 375 -640 480 -640 424 -500 341 -640 480 -640 480 -640 480 -640 432 -500 375 -640 426 -640 458 -640 480 -640 427 -640 480 -640 414 -640 480 -416 640 -640 458 -480 640 -612 612 -427 640 -640 403 -640 480 -640 512 -640 481 -640 427 -640 480 -375 500 -640 427 -640 480 -640 427 -612 612 -500 375 -500 375 -469 640 -640 480 -640 500 -640 428 -640 486 -426 640 -402 600 -640 449 -640 427 -500 375 -427 640 -640 427 -640 500 -640 427 -640 480 -500 437 -504 438 -640 479 -480 640 -500 375 -640 480 -640 640 -480 640 -640 400 -640 480 -640 426 -640 480 -640 427 -500 337 -640 427 -640 426 -635 640 -640 337 -640 416 -640 480 -555 640 -640 480 -640 480 -640 400 -640 439 -640 428 -480 640 -640 427 -640 640 -419 500 -640 426 -500 332 -500 375 -640 426 -640 426 -640 427 -640 512 -500 375 -640 427 -462 640 -427 640 -500 334 -409 640 -500 375 -640 406 -640 425 -500 375 -640 480 -612 612 -640 426 -428 640 -640 480 -640 426 -640 480 -640 427 -640 427 -424 640 -640 426 -640 480 -533 640 -640 529 -640 480 -480 640 -640 428 -640 480 -500 333 -640 426 -500 395 -640 528 -426 640 -480 640 -500 400 -640 427 -500 357 -640 480 -640 427 -612 612 -640 478 -480 640 -640 424 -640 427 -640 480 -480 640 -640 480 -424 640 -640 427 -640 152 -640 427 -480 640 -640 445 -640 427 -640 427 -640 524 -640 480 -478 640 -640 480 -640 480 -375 500 -640 427 -640 427 -640 481 -640 427 -525 350 -640 427 -640 497 -640 480 -640 426 -640 457 -428 640 -640 427 -640 427 -640 426 -640 360 -640 426 -640 480 -640 358 -640 479 -480 640 -344 640 -476 640 -640 383 -574 361 -640 480 -388 640 -640 355 -427 640 -640 480 -640 480 -568 320 -640 480 -640 426 -640 489 -481 640 -640 427 -640 497 -640 388 -640 424 -640 480 -333 500 -640 480 -640 378 -480 640 -640 427 -612 612 -375 500 -640 367 -500 386 -640 473 -640 427 -640 480 -640 344 -427 640 -480 640 -640 480 -500 500 -500 375 -640 425 -640 480 -640 428 -640 427 -468 640 -640 361 -480 640 -640 480 -640 480 -640 425 -500 374 -480 640 -640 427 -640 481 -500 500 -640 426 -480 360 -640 480 -640 514 -612 612 -427 640 -640 426 -640 480 -427 640 -640 480 -640 480 -640 480 -640 428 -480 640 -500 333 -640 426 -640 426 -640 480 -640 480 -640 480 -640 440 -640 426 -640 480 -640 480 -640 480 -640 409 -640 425 -640 427 -640 422 -640 331 -426 640 -640 427 -640 480 -640 479 -640 427 -640 480 -640 512 -640 512 -640 427 -640 478 -480 640 -640 480 -479 640 -640 424 -640 432 -428 640 -640 427 -426 640 -640 426 -480 640 -640 480 -640 480 -640 480 -640 491 -640 480 -640 427 -500 481 -640 480 -480 640 -640 426 -640 385 -640 427 -427 640 -500 375 -480 640 -640 427 -480 640 -640 480 -640 480 -640 480 -640 427 -640 425 -640 480 -500 375 -431 640 -532 640 -640 428 -500 375 -640 620 -640 445 -424 640 -640 480 -640 428 -500 375 -640 425 -640 480 -640 427 -640 426 -640 427 -640 514 -640 480 -640 477 -640 426 -640 469 -640 427 -640 480 -640 427 -640 480 -640 480 -640 480 -640 423 -640 326 -500 333 -531 640 -612 612 -640 480 -640 427 -640 480 -640 426 -640 458 -480 640 -640 480 -480 640 -640 427 -640 498 -640 480 -640 366 -480 640 -640 429 -640 424 -640 481 -446 640 -427 640 -640 427 -640 396 -640 427 -640 480 -640 480 -640 426 -489 640 -343 500 -480 640 -400 267 -500 333 -427 640 -375 500 -640 428 -640 480 -427 640 -640 640 -335 500 -640 480 -640 480 -640 360 -640 567 -427 640 -500 469 -515 640 -425 640 -640 496 -640 480 -640 360 -640 480 -480 640 -640 457 -640 480 -500 333 -640 428 -500 362 -640 448 -640 457 -319 500 -427 640 -640 480 -640 427 -375 500 -640 360 -500 333 -426 640 -480 640 -640 480 -640 480 -640 478 -427 640 -500 334 -612 612 -640 427 -612 612 -424 640 -500 332 -640 480 -427 640 -424 640 -640 425 -640 427 -640 494 -500 335 -480 640 -640 480 -427 640 -512 640 -469 640 -640 427 -640 426 -480 640 -640 428 -640 426 -640 480 -367 500 -640 480 -404 640 -640 480 -640 480 -640 496 -640 480 -480 640 -640 480 -640 480 -640 541 -480 640 -640 512 -640 640 -480 640 -640 428 -500 333 -382 640 -333 500 -480 640 -640 426 -400 289 -640 480 -640 427 -480 640 -640 480 -640 423 -640 425 -640 427 -640 424 -640 480 -640 427 -640 569 -640 448 -500 375 -640 427 -640 425 -640 404 -500 331 -480 640 -640 480 -480 640 -640 480 -640 427 -630 640 -480 640 -500 384 -640 427 -640 485 -640 616 -640 480 -640 426 -427 640 -640 480 -640 639 -640 480 -640 480 -375 500 -640 427 -640 427 -375 500 -640 480 -640 427 -640 480 -640 510 -480 640 -480 640 -471 640 -640 480 -640 427 -612 612 -480 640 -640 502 -640 425 -480 640 -640 480 -640 480 -640 471 -480 640 -640 451 -500 640 -640 480 -640 421 -640 426 -640 496 -640 480 -500 335 -429 640 -500 363 -640 433 -640 426 -640 425 -480 640 -640 480 -426 640 -640 329 -640 480 -640 424 -640 429 -480 640 -640 428 -612 612 -640 385 -480 640 -640 424 -640 360 -640 426 -640 427 -640 480 -640 427 -546 640 -640 438 -500 298 -500 375 -500 400 -480 640 -640 427 -640 426 -640 408 -473 640 -427 640 -640 428 -640 480 -640 427 -640 425 -640 449 -480 640 -427 640 -612 612 -333 500 -500 295 -640 640 -640 480 -480 640 -500 333 -640 482 -335 500 -640 427 -640 480 -640 432 -425 640 -640 428 -640 427 -640 424 -640 429 -640 479 -480 640 -640 480 -640 480 -279 500 -640 430 -640 429 -640 400 -640 426 -640 552 -640 423 -640 427 -640 427 -640 480 -640 480 -640 426 -640 428 -640 480 -640 480 -600 450 -480 640 -427 640 -480 640 -427 640 -427 640 -640 480 -640 427 -640 480 -480 640 -567 377 -427 640 -480 640 -640 509 -640 428 -640 360 -640 480 -500 375 -640 425 -640 400 -640 640 -640 427 -640 359 -412 640 -449 640 -375 500 -640 427 -640 426 -640 427 -500 335 -640 427 -640 640 -640 480 -640 428 -480 640 -640 424 -640 426 -640 480 -480 640 -640 360 -500 375 -564 640 -640 426 -640 426 -640 443 -612 612 -360 640 -437 640 -640 428 -640 480 -640 480 -640 429 -640 512 -640 480 -640 427 -550 640 -427 640 -640 429 -479 640 -640 480 -640 426 -640 426 -640 427 -640 480 -612 612 -640 427 -500 335 -640 480 -640 427 -500 333 -480 640 -640 425 -640 480 -640 433 -346 500 -640 480 -612 612 -640 480 -640 480 -640 426 -640 512 -640 427 -640 441 -487 640 -640 480 -480 640 -640 480 -426 640 -612 612 -640 486 -375 500 -428 640 -640 640 -640 480 -640 427 -640 482 -640 501 -640 480 -640 427 -427 640 -640 428 -640 480 -640 360 -640 427 -427 640 -640 427 -640 480 -640 480 -640 457 -640 428 -640 428 -612 612 -640 425 -640 498 -640 427 -640 474 -428 640 -640 503 -640 427 -640 479 -379 640 -640 427 -612 612 -640 480 -480 640 -640 427 -640 427 -443 640 -612 612 -426 640 -640 640 -640 343 -512 640 -500 375 -480 640 -640 480 -640 457 -640 427 -640 480 -427 640 -640 354 -500 375 -404 265 -425 640 -640 480 -546 640 -427 640 -640 480 -640 400 -448 336 -375 500 -427 640 -640 422 -500 333 -640 480 -640 480 -640 427 -640 425 -396 640 -500 375 -640 426 -640 450 -640 427 -640 480 -640 480 -480 640 -640 425 -500 375 -640 511 -640 427 -639 640 -640 480 -640 427 -360 640 -640 425 -640 427 -640 480 -375 500 -640 426 -640 540 -640 340 -640 480 -375 500 -640 427 -640 480 -640 480 -480 640 -640 427 -480 640 -640 548 -640 578 -500 281 -500 333 -500 400 -640 354 -640 480 -640 640 -640 425 -480 640 -640 480 -640 387 -640 480 -640 498 -333 500 -375 500 -640 426 -411 640 -640 383 -480 640 -640 480 -640 360 -640 483 -640 426 -640 426 -612 612 -640 480 -480 640 -640 463 -640 480 -640 512 -640 480 -427 640 -640 480 -480 640 -500 375 -480 640 -640 427 -640 480 -500 375 -640 427 -640 427 -426 640 -400 300 -640 480 -333 500 -466 640 -640 427 -480 640 -640 433 -640 427 -500 375 -480 640 -640 480 -640 427 -640 489 -640 427 -500 375 -640 480 -640 480 -478 640 -500 375 -640 426 -480 640 -640 550 -640 480 -640 427 -640 426 -612 612 -640 480 -640 427 -480 640 -640 486 -640 450 -640 480 -332 500 -427 640 -640 428 -640 539 -640 427 -640 480 -640 459 -640 425 -640 480 -612 612 -640 480 -640 427 -428 640 -640 480 -640 464 -426 640 -640 480 -640 359 -333 467 -640 398 -640 427 -640 429 -500 334 -640 480 -443 640 -427 640 -640 369 -640 426 -640 423 -640 427 -640 479 -640 480 -427 640 -640 427 -640 472 -640 480 -450 640 -640 453 -640 425 -640 360 -500 375 -640 425 -428 640 -400 300 -640 480 -375 500 -640 424 -640 427 -640 428 -640 479 -640 427 -640 480 -500 375 -640 425 -640 480 -640 486 -640 480 -640 480 -640 505 -480 640 -640 480 -640 442 -640 480 -428 640 -640 428 -640 505 -500 500 -428 640 -640 423 -640 425 -640 480 -640 427 -640 425 -640 480 -640 480 -500 375 -500 375 -640 480 -338 500 -640 400 -640 434 -640 425 -500 333 -612 612 -640 426 -500 375 -500 375 -640 425 -640 424 -427 640 -500 286 -640 460 -500 375 -640 454 -640 480 -500 375 -640 480 -640 426 -640 374 -479 640 -640 480 -640 480 -640 512 -640 480 -640 427 -640 360 -640 427 -376 500 -640 427 -640 424 -483 640 -640 480 -500 400 -480 640 -640 478 -500 375 -429 640 -425 640 -427 640 -640 480 -640 479 -332 500 -503 640 -640 427 -640 427 -640 480 -500 333 -640 480 -427 640 -500 333 -480 640 -640 479 -407 640 -640 427 -500 375 -640 427 -375 500 -480 640 -456 640 -612 612 -500 341 -552 640 -500 375 -640 427 -640 513 -640 581 -480 640 -640 427 -640 481 -333 500 -640 480 -640 481 -427 640 -640 426 -350 263 -500 375 -640 480 -500 375 -640 424 -553 640 -640 427 -640 426 -427 640 -640 423 -640 427 -640 433 -426 640 -640 427 -428 640 -640 513 -640 480 -640 427 -424 640 -640 425 -640 426 -640 480 -640 426 -640 394 -640 426 -640 480 -640 427 -640 426 -426 640 -634 640 -640 517 -427 640 -640 466 -375 500 -500 354 -500 375 -427 640 -640 425 -240 320 -427 640 -640 429 -640 426 -640 428 -640 394 -640 498 -640 480 -640 480 -427 640 -640 480 -640 425 -640 427 -427 640 -640 480 -640 427 -640 428 -640 480 -375 500 -640 428 -640 480 -640 448 -612 612 -640 562 -338 640 -500 371 -500 333 -640 426 -640 480 -500 333 -640 480 -640 480 -640 480 -480 640 -640 429 -640 428 -640 413 -640 483 -427 640 -333 500 -500 337 -640 427 -640 427 -640 451 -640 480 -500 341 -640 428 -640 428 -640 480 -640 480 -640 480 -640 428 -375 500 -640 427 -375 500 -640 640 -640 480 -640 426 -640 480 -360 270 -480 640 -640 480 -640 480 -640 478 -640 480 -500 333 -480 640 -640 408 -640 480 -457 640 -427 640 -624 640 -500 333 -640 409 -640 480 -640 429 -478 640 -375 500 -375 500 -640 429 -640 640 -640 429 -640 424 -640 427 -640 480 -640 426 -640 451 -640 426 -640 427 -640 424 -640 480 -640 480 -469 640 -640 480 -640 480 -640 425 -432 640 -427 640 -434 500 -640 427 -640 427 -427 640 -480 640 -427 640 -500 375 -640 427 -426 640 -640 426 -640 427 -640 473 -427 640 -640 480 -427 640 -640 480 -480 640 -500 325 -640 384 -640 480 -640 427 -500 324 -427 640 -640 424 -640 480 -640 480 -480 640 -427 640 -426 640 -640 480 -500 375 -640 427 -428 640 -640 295 -640 478 -640 480 -427 640 -640 428 -482 640 -418 640 -640 480 -480 640 -480 640 -640 427 -640 480 -612 612 -639 640 -640 480 -375 500 -640 480 -640 427 -640 480 -524 640 -640 427 -425 640 -640 427 -427 640 -640 426 -640 427 -640 361 -640 480 -640 480 -640 424 -640 480 -640 480 -640 426 -640 480 -640 428 -500 377 -423 640 -480 640 -640 464 -640 426 -640 496 -500 375 -640 508 -640 426 -427 640 -500 326 -424 640 -640 480 -640 426 -640 383 -580 329 -334 500 -500 333 -640 424 -640 346 -640 472 -640 537 -640 640 -375 500 -427 640 -640 480 -640 424 -640 480 -427 640 -640 480 -480 640 -612 612 -500 375 -480 640 -640 427 -640 426 -640 480 -500 375 -375 500 -640 427 -640 360 -640 384 -640 480 -480 640 -640 614 -612 612 -500 375 -438 500 -640 480 -640 427 -640 480 -375 500 -640 271 -428 640 -640 521 -640 426 -640 480 -640 426 -640 480 -640 481 -612 612 -640 427 -640 426 -500 281 -429 640 -640 486 -375 500 -640 480 -640 480 -427 640 -640 480 -640 428 -375 500 -640 478 -612 612 -640 480 -640 480 -500 330 -375 500 -427 640 -640 428 -480 640 -640 428 -640 398 -480 640 -446 640 -640 480 -375 500 -640 481 -640 427 -640 398 -478 640 -476 640 -640 427 -640 480 -640 428 -640 427 -640 480 -640 479 -640 480 -427 640 -640 426 -500 375 -500 375 -640 428 -480 640 -640 425 -640 543 -412 640 -500 375 -640 404 -480 640 -500 375 -640 524 -640 426 -640 480 -500 375 -640 427 -480 640 -428 640 -500 333 -640 480 -612 612 -640 427 -427 640 -514 640 -640 434 -640 424 -640 359 -480 640 -640 480 -640 483 -500 375 -640 480 -640 425 -612 612 -640 480 -640 429 -480 640 -640 427 -640 512 -640 401 -612 612 -500 375 -640 512 -640 480 -500 375 -552 640 -640 480 -640 480 -640 519 -521 640 -640 480 -640 427 -500 375 -640 480 -640 426 -640 426 -640 427 -500 375 -427 640 -640 429 -640 546 -427 640 -500 335 -640 480 -640 480 -640 428 -640 481 -640 407 -427 640 -640 480 -500 353 -427 640 -640 426 -480 640 -640 480 -640 378 -640 480 -640 311 -640 359 -640 426 -329 500 -640 480 -640 480 -640 427 -640 425 -500 332 -600 600 -400 542 -640 425 -640 512 -640 480 -427 640 -640 427 -500 375 -640 480 -480 640 -427 640 -500 375 -640 631 -640 480 -640 361 -500 375 -640 427 -640 428 -640 424 -480 640 -640 428 -640 480 -640 480 -480 640 -640 427 -640 480 -500 375 -513 640 -478 640 -500 382 -640 425 -640 609 -474 640 -500 373 -640 427 -640 377 -425 640 -640 480 -475 640 -640 479 -640 427 -613 640 -480 640 -640 480 -480 640 -640 378 -640 360 -449 640 -360 640 -640 479 -640 480 -480 640 -640 440 -640 640 -640 360 -500 375 -640 427 -640 427 -640 480 -640 360 -612 612 -500 375 -480 640 -640 427 -640 427 -640 575 -640 480 -640 480 -480 640 -640 426 -640 480 -282 500 -640 480 -640 429 -640 315 -640 480 -640 479 -640 480 -500 500 -640 418 -640 425 -640 640 -640 428 -640 480 -640 427 -640 426 -640 427 -411 640 -480 640 -640 480 -500 375 -640 480 -640 528 -640 426 -500 358 -612 612 -640 478 -640 425 -640 522 -640 428 -640 426 -640 428 -640 484 -427 640 -640 426 -457 640 -320 213 -640 427 -480 640 -640 425 -640 480 -640 480 -640 459 -428 640 -612 612 -640 480 -640 480 -640 427 -640 427 -516 640 -640 383 -640 640 -640 425 -500 333 -480 640 -640 427 -427 640 -640 584 -375 500 -426 640 -640 504 -640 480 -640 414 -640 427 -640 502 -500 364 -640 480 -461 640 -640 440 -375 500 -640 480 -640 476 -512 640 -640 439 -640 359 -640 480 -640 425 -640 427 -640 640 -500 334 -375 500 -333 500 -500 332 -640 428 -640 426 -640 428 -427 640 -640 480 -640 427 -428 640 -612 612 -640 426 -640 480 -640 427 -640 391 -640 512 -640 427 -640 480 -500 333 -640 427 -463 640 -500 331 -640 480 -640 592 -640 462 -640 480 -640 428 -640 480 -640 361 -333 500 -480 640 -640 427 -480 640 -640 427 -640 480 -549 640 -399 640 -640 426 -640 333 -640 463 -298 500 -480 640 -640 426 -640 427 -640 413 -640 442 -640 428 -640 427 -426 640 -640 424 -640 522 -483 640 -640 428 -640 480 -480 640 -640 428 -640 480 -640 428 -427 640 -427 640 -640 491 -640 480 -640 428 -640 480 -480 640 -480 640 -640 428 -640 427 -500 375 -640 480 -500 375 -640 463 -640 386 -640 480 -500 375 -640 427 -640 480 -309 640 -640 480 -640 426 -419 640 -480 640 -612 612 -500 375 -640 480 -480 640 -500 375 -373 640 -640 480 -640 426 -128 160 -640 427 -500 375 -480 640 -500 400 -427 640 -640 400 -539 445 -640 427 -640 424 -428 640 -480 640 -640 425 -500 375 -479 640 -640 427 -640 427 -480 640 -640 478 -640 429 -640 374 -640 480 -500 500 -640 427 -640 440 -640 480 -612 612 -439 640 -640 457 -612 612 -640 481 -427 640 -640 480 -640 427 -640 480 -640 426 -477 640 -640 458 -640 426 -500 375 -640 428 -640 480 -375 500 -500 334 -640 480 -640 480 -640 489 -428 640 -640 480 -500 375 -640 427 -640 480 -640 426 -640 512 -640 480 -640 293 -401 640 -640 480 -359 500 -323 500 -427 640 -480 640 -640 424 -640 427 -500 375 -640 409 -480 640 -640 424 -640 480 -500 281 -640 427 -640 480 -640 426 -375 500 -640 480 -640 480 -612 612 -640 533 -416 350 -640 480 -640 427 -375 500 -640 427 -640 640 -640 480 -640 428 -640 412 -640 480 -640 480 -640 480 -640 427 -640 359 -612 612 -640 427 -491 500 -640 427 -427 640 -287 432 -426 640 -334 500 -320 240 -359 500 -500 375 -640 427 -640 339 -640 480 -432 288 -496 640 -500 335 -640 426 -427 640 -517 640 -640 529 -640 425 -640 383 -640 480 -390 640 -640 427 -333 500 -640 480 -640 462 -640 427 -640 480 -640 433 -480 640 -640 436 -425 640 -500 400 -640 479 -640 427 -640 428 -640 427 -640 480 -576 401 -640 480 -640 480 -640 426 -640 480 -375 500 -640 426 -478 640 -640 480 -640 426 -640 427 -640 480 -425 640 -640 480 -269 640 -480 640 -500 375 -640 480 -480 640 -640 421 -640 452 -426 640 -459 500 -640 427 -640 428 -640 427 -640 426 -640 480 -480 640 -640 427 -640 433 -640 480 -427 640 -640 472 -640 427 -640 480 -640 331 -480 640 -640 427 -640 416 -509 640 -500 375 -640 480 -640 480 -640 426 -640 428 -640 480 -640 425 -640 448 -640 480 -640 428 -480 640 -640 474 -640 428 -400 500 -640 480 -500 281 -480 640 -480 640 -640 443 -640 533 -640 427 -640 424 -480 640 -640 640 -500 375 -640 351 -640 428 -500 376 -640 427 -421 640 -640 480 -640 480 -640 360 -640 427 -640 427 -640 451 -640 428 -640 480 -640 369 -640 640 -640 480 -433 640 -640 433 -640 427 -640 424 -480 640 -427 640 -640 428 -640 427 -480 640 -640 480 -640 360 -640 480 -640 480 -500 375 -640 480 -640 480 -612 612 -640 426 -640 427 -640 480 -456 640 -640 427 -640 420 -480 640 -640 427 -640 457 -640 508 -640 457 -640 427 -640 427 -640 427 -640 429 -640 539 -640 488 -640 480 -427 640 -640 424 -640 543 -521 640 -640 480 -500 375 -640 364 -444 640 -640 427 -640 461 -480 640 -640 427 -479 640 -420 640 -640 505 -375 500 -640 450 -640 427 -640 333 -640 480 -640 427 -640 425 -640 426 -640 428 -640 427 -640 427 -471 640 -480 640 -640 640 -424 640 -500 334 -640 544 -640 386 -640 427 -427 640 -640 391 -640 480 -640 536 -425 640 -640 480 -377 500 -358 500 -480 640 -640 427 -640 480 -427 640 -500 303 -640 480 -640 426 -640 640 -640 398 -640 433 -640 428 -640 480 -450 350 -640 457 -451 640 -640 576 -640 427 -427 640 -640 523 -640 429 -428 640 -640 425 -480 640 -640 410 -479 640 -640 480 -640 427 -500 333 -459 640 -640 427 -640 360 -513 640 -427 640 -640 406 -640 603 -500 331 -640 427 -409 500 -640 427 -640 480 -640 427 -480 640 -478 640 -640 480 -612 612 -480 640 -640 427 -640 480 -500 332 -375 500 -600 600 -640 427 -480 640 -612 612 -500 331 -480 640 -640 480 -640 480 -640 427 -640 458 -640 429 -640 428 -640 427 -640 543 -640 480 -500 325 -500 318 -640 426 -640 480 -640 640 -480 640 -332 500 -640 427 -480 640 -640 427 -375 640 -640 480 -375 500 -427 640 -480 640 -640 480 -640 427 -427 640 -640 428 -640 424 -640 480 -640 468 -640 427 -640 480 -640 480 -640 463 -640 513 -640 427 -640 480 -640 425 -640 400 -640 427 -640 425 -640 480 -640 476 -640 480 -640 428 -640 428 -500 375 -500 334 -640 480 -640 480 -500 357 -426 640 -640 480 -640 480 -427 640 -427 640 -480 640 -480 640 -497 500 -480 640 -479 640 -640 428 -640 426 -640 640 -640 426 -640 427 -500 375 -640 452 -640 427 -500 347 -640 426 -612 612 -640 480 -421 640 -640 427 -640 432 -640 480 -640 427 -500 375 -612 612 -640 427 -364 500 -402 600 -640 439 -478 640 -640 478 -375 500 -640 480 -640 427 -640 480 -640 480 -640 427 -640 426 -640 480 -640 427 -640 427 -640 393 -480 640 -612 612 -332 500 -426 640 -640 427 -395 640 -640 480 -640 480 -480 640 -640 480 -640 426 -480 640 -640 214 -640 496 -640 426 -419 640 -500 333 -500 400 -640 478 -640 318 -500 500 -640 426 -612 612 -640 480 -640 428 -640 427 -640 360 -640 424 -640 456 -567 640 -640 480 -466 640 -500 345 -640 480 -427 640 -640 480 -500 333 -343 500 -640 480 -640 480 -640 480 -640 640 -478 640 -375 500 -640 480 -640 421 -640 426 -640 480 -640 480 -640 480 -640 320 -640 428 -640 480 -640 449 -640 360 -640 480 -640 426 -640 456 -640 427 -640 426 -640 480 -640 360 -500 375 -640 427 -360 640 -640 427 -640 426 -640 478 -640 398 -640 425 -640 430 -462 640 -619 640 -640 379 -640 425 -480 640 -640 428 -640 427 -426 640 -427 640 -333 500 -427 640 -640 394 -640 426 -640 480 -640 383 -640 267 -500 417 -604 403 -427 640 -478 640 -640 400 -640 480 -500 334 -640 533 -640 427 -640 480 -640 427 -640 480 -640 408 -640 426 -640 480 -640 425 -640 428 -640 427 -480 640 -640 495 -188 285 -640 429 -640 480 -427 640 -640 431 -612 612 -640 424 -640 427 -640 426 -500 333 -640 459 -341 500 -640 426 -500 375 -480 273 -640 480 -640 425 -425 640 -640 480 -640 426 -640 480 -425 640 -427 640 -640 427 -480 640 -640 480 -480 640 -480 640 -244 183 -480 640 -640 428 -500 375 -500 375 -640 427 -480 640 -640 384 -640 344 -640 523 -640 427 -427 640 -640 480 -500 356 -480 640 -332 500 -640 640 -612 612 -500 375 -640 426 -574 640 -479 640 -640 491 -427 640 -640 480 -500 333 -640 622 -640 427 -512 640 -640 480 -640 425 -480 640 -640 425 -640 466 -500 375 -640 427 -640 437 -640 480 -375 500 -425 640 -640 480 -640 594 -478 640 -375 500 -640 480 -640 425 -640 424 -427 640 -640 400 -640 480 -480 640 -500 452 -640 480 -427 640 -612 612 -427 640 -333 500 -640 427 -425 640 -640 480 -640 425 -640 427 -500 407 -640 429 -640 480 -500 375 -640 480 -640 427 -500 375 -381 640 -640 483 -427 640 -427 640 -640 419 -640 519 -640 427 -640 401 -612 612 -640 279 -640 480 -640 399 -500 375 -640 458 -640 481 -640 427 -349 614 -640 480 -481 640 -428 640 -640 480 -480 640 -480 640 -459 640 -640 427 -640 478 -640 427 -640 426 -640 425 -640 360 -640 480 -428 640 -480 640 -640 480 -640 426 -640 478 -640 427 -640 480 -640 453 -427 640 -640 640 -640 426 -428 640 -640 444 -640 480 -640 427 -640 480 -640 321 -640 360 -640 480 -640 359 -480 640 -640 480 -404 640 -640 429 -640 480 -500 375 -640 430 -640 480 -640 417 -640 480 -640 448 -469 640 -640 480 -425 640 -333 500 -640 481 -640 480 -640 427 -640 423 -428 640 -640 430 -640 464 -640 427 -640 480 -640 535 -424 640 -640 512 -640 480 -640 427 -500 375 -640 480 -500 375 -640 480 -640 449 -640 480 -500 375 -640 427 -640 427 -427 640 -640 480 -640 426 -640 436 -640 413 -465 640 -640 480 -640 426 -425 640 -640 428 -428 640 -640 359 -640 398 -640 480 -640 480 -640 497 -640 426 -640 328 -500 375 -482 640 -480 640 -339 500 -501 640 -640 427 -640 433 -640 428 -640 480 -500 335 -640 428 -640 344 -640 480 -500 375 -640 427 -640 426 -480 640 -640 425 -640 427 -640 427 -640 359 -640 480 -473 640 -481 640 -576 640 -640 640 -600 464 -640 424 -640 427 -640 426 -640 480 -481 640 -500 461 -640 278 -480 640 -500 345 -640 427 -640 480 -612 612 -640 345 -480 640 -427 640 -640 480 -640 480 -640 480 -640 427 -640 426 -640 383 -410 500 -500 375 -640 480 -640 640 -333 500 -640 480 -640 427 -640 480 -640 640 -640 425 -640 427 -480 640 -640 427 -500 374 -612 612 -333 500 -640 569 -640 427 -640 430 -640 428 -500 375 -640 480 -375 500 -640 427 -640 480 -480 640 -640 427 -640 480 -640 490 -278 500 -640 480 -542 640 -640 480 -640 480 -333 500 -640 427 -640 427 -640 470 -640 400 -640 419 -480 640 -640 426 -500 375 -640 480 -640 480 -427 640 -640 426 -640 480 -512 640 -640 480 -424 640 -640 341 -640 480 -640 360 -480 640 -640 480 -640 427 -375 500 -640 427 -426 640 -640 427 -480 640 -640 427 -500 357 -427 640 -640 426 -640 444 -480 640 -640 426 -640 478 -640 480 -640 365 -640 517 -480 640 -640 480 -640 426 -333 500 -640 427 -640 480 -463 640 -640 480 -640 427 -640 429 -640 378 -424 640 -640 480 -427 640 -640 453 -640 480 -426 640 -640 427 -640 428 -640 424 -640 480 -427 640 -640 480 -640 480 -500 375 -640 427 -640 480 -640 468 -442 640 -640 480 -480 640 -600 400 -640 427 -640 480 -640 480 -640 427 -640 427 -640 451 -640 426 -640 426 -640 449 -427 640 -640 511 -391 640 -640 496 -500 375 -640 480 -640 480 -640 427 -640 640 -500 381 -640 425 -640 427 -640 480 -640 480 -640 480 -480 640 -500 142 -640 480 -426 640 -457 640 -618 640 -640 480 -424 640 -640 348 -640 360 -640 480 -429 640 -640 480 -429 640 -480 640 -640 424 -640 428 -640 480 -512 640 -640 428 -640 480 -640 427 -478 640 -640 471 -640 429 -640 640 -640 427 -500 375 -640 359 -640 425 -640 480 -640 444 -640 425 -640 480 -640 398 -640 640 -640 426 -640 480 -640 427 -500 333 -640 425 -640 424 -500 375 -640 506 -500 333 -640 425 -480 640 -640 428 -480 640 -640 425 -640 427 -375 500 -640 620 -640 480 -640 446 -640 427 -640 456 -422 640 -461 640 -425 640 -640 480 -427 640 -640 214 -612 612 -640 360 -480 640 -500 333 -640 480 -640 470 -640 427 -640 427 -612 612 -640 480 -640 480 -640 480 -640 480 -640 480 -640 427 -640 480 -640 480 -640 425 -640 480 -612 612 -426 640 -640 480 -375 500 -497 640 -397 640 -640 480 -357 500 -640 480 -480 640 -640 427 -640 480 -640 433 -500 375 -640 480 -640 427 -640 482 -640 427 -640 427 -640 480 -500 333 -640 419 -640 558 -640 478 -640 426 -640 449 -640 480 -500 375 -333 500 -640 384 -500 332 -480 640 -640 425 -640 426 -640 398 -640 430 -640 369 -640 427 -432 640 -640 480 -640 360 -500 375 -640 426 -640 427 -500 291 -640 640 -640 426 -500 375 -640 426 -500 375 -640 424 -640 640 -640 480 -640 427 -640 480 -640 427 -456 640 -640 480 -480 640 -640 387 -640 491 -640 478 -640 426 -640 427 -640 508 -640 564 -428 640 -640 480 -640 480 -500 401 -425 640 -640 360 -640 427 -640 573 -480 640 -640 480 -640 427 -640 360 -480 640 -640 427 -500 375 -640 480 -640 480 -640 426 -640 480 -612 612 -640 480 -343 640 -640 427 -640 423 -640 358 -640 423 -546 640 -640 480 -640 428 -640 427 -640 373 -640 427 -425 640 -640 562 -612 612 -500 333 -432 640 -640 408 -640 426 -640 480 -500 333 -611 425 -427 640 -640 640 -500 332 -500 375 -640 425 -640 478 -640 427 -640 480 -640 480 -360 640 -640 303 -640 480 -640 427 -640 361 -447 400 -428 500 -640 427 -500 252 -640 480 -640 427 -640 640 -500 375 -640 440 -427 640 -452 640 -640 480 -640 480 -480 640 -640 614 -640 427 -500 375 -640 480 -640 480 -640 400 -640 480 -500 330 -640 480 -427 640 -640 600 -640 426 -640 479 -640 553 -500 375 -512 640 -640 427 -427 640 -500 400 -640 426 -500 333 -424 640 -393 500 -640 427 -640 400 -640 480 -640 480 -353 500 -640 425 -640 294 -500 334 -640 490 -640 424 -500 375 -512 640 -500 383 -375 500 -412 640 -640 424 -500 378 -640 480 -640 427 -500 333 -640 440 -500 347 -480 640 -640 480 -640 426 -426 640 -640 480 -640 426 -640 360 -640 427 -640 480 -640 480 -640 457 -480 640 -640 427 -640 428 -640 426 -640 425 -640 427 -375 500 -640 348 -640 427 -640 427 -427 640 -428 640 -640 363 -640 427 -640 360 -428 640 -640 504 -426 640 -640 427 -333 500 -640 426 -640 427 -640 426 -640 480 -500 437 -220 186 -640 480 -640 640 -640 480 -640 406 -480 640 -500 357 -640 480 -640 424 -373 640 -464 640 -640 478 -427 640 -640 480 -612 612 -640 429 -640 480 -640 426 -640 480 -500 400 -500 335 -640 427 -360 640 -426 640 -480 640 -480 640 -429 640 -640 427 -380 324 -462 640 -480 640 -480 640 -640 426 -640 427 -640 480 -640 426 -640 424 -640 490 -640 499 -640 480 -640 427 -457 640 -500 329 -640 480 -480 640 -640 385 -640 480 -640 241 -640 480 -480 640 -640 426 -640 479 -333 500 -640 640 -500 323 -500 340 -640 412 -640 426 -640 426 -640 481 -640 424 -640 480 -640 437 -640 425 -512 640 -640 480 -640 426 -640 408 -640 376 -640 480 -640 480 -640 427 -425 640 -640 478 -640 426 -427 640 -375 500 -500 375 -640 480 -480 640 -640 427 -375 500 -500 334 -640 427 -640 382 -640 425 -640 480 -640 480 -640 480 -640 458 -640 427 -640 480 -427 640 -640 640 -640 480 -640 480 -426 640 -640 427 -505 640 -640 480 -640 360 -428 640 -640 426 -640 427 -480 640 -640 425 -640 479 -640 480 -640 513 -426 640 -427 640 -239 360 -480 640 -640 363 -500 428 -640 427 -640 491 -640 512 -640 426 -500 286 -640 427 -612 612 -640 384 -513 640 -500 375 -427 640 -640 426 -428 640 -640 480 -640 424 -640 428 -640 429 -640 360 -640 426 -457 640 -640 480 -333 500 -343 500 -480 640 -640 307 -640 480 -640 371 -375 500 -640 427 -640 427 -640 427 -640 428 -500 307 -303 640 -640 426 -500 333 -640 426 -640 427 -640 593 -480 640 -640 360 -640 480 -640 427 -426 640 -640 480 -500 375 -500 375 -480 640 -640 480 -640 364 -640 480 -375 500 -640 480 -640 427 -640 427 -640 427 -374 500 -457 640 -500 333 -375 500 -640 426 -640 480 -640 425 -640 428 -640 428 -427 640 -640 460 -373 640 -428 640 -427 640 -640 480 -427 640 -640 360 -640 433 -640 480 -640 426 -640 427 -640 480 -640 428 -640 426 -640 480 -557 640 -640 424 -568 640 -640 480 -640 480 -375 500 -640 425 -480 640 -640 480 -640 480 -440 470 -640 360 -500 375 -428 640 -640 427 -640 480 -640 427 -480 640 -390 640 -640 480 -640 427 -640 478 -426 640 -640 480 -458 640 -427 640 -427 640 -479 640 -375 500 -640 427 -425 640 -640 428 -427 640 -640 480 -640 483 -640 480 -640 383 -640 480 -480 640 -640 425 -426 640 -443 640 -640 429 -426 640 -640 480 -640 480 -640 480 -640 427 -480 640 -640 480 -640 640 -640 480 -436 640 -640 480 -500 333 -640 480 -640 426 -640 429 -500 375 -640 426 -429 640 -640 434 -640 491 -640 426 -480 640 -500 375 -640 480 -375 500 -640 428 -640 480 -480 640 -640 476 -640 427 -640 425 -500 375 -612 612 -500 167 -640 480 -640 426 -640 584 -640 480 -480 640 -464 640 -640 480 -480 640 -395 640 -640 582 -500 375 -640 480 -427 640 -640 480 -640 480 -640 480 -500 342 -640 427 -640 480 -500 282 -417 500 -500 375 -443 640 -480 640 -640 475 -640 640 -640 427 -427 640 -480 640 -640 427 -500 375 -429 640 -640 480 -640 480 -640 427 -640 480 -640 480 -640 480 -640 480 -640 427 -640 480 -640 424 -640 480 -640 427 -640 427 -640 480 -640 512 -425 640 -640 401 -640 428 -640 428 -640 480 -640 427 -640 423 -612 612 -500 333 -640 421 -640 427 -640 480 -640 480 -500 375 -640 478 -640 480 -427 640 -640 427 -640 478 -478 640 -640 427 -640 427 -428 640 -612 612 -640 426 -640 433 -480 640 -640 480 -360 640 -375 500 -612 612 -640 414 -640 360 -426 640 -521 640 -640 479 -640 427 -427 640 -640 408 -640 480 -640 480 -640 427 -640 428 -640 360 -640 446 -640 480 -640 400 -640 427 -640 480 -640 458 -640 424 -640 427 -426 640 -500 358 -640 426 -640 425 -500 375 -640 427 -640 414 -640 426 -427 640 -640 502 -640 480 -500 500 -640 231 -640 427 -640 480 -640 523 -427 640 -426 640 -640 480 -640 427 -640 427 -480 640 -640 413 -640 480 -640 427 -640 428 -500 333 -480 640 -640 426 -640 480 -480 640 -361 640 -375 500 -640 426 -640 480 -427 640 -480 640 -425 640 -480 640 -375 500 -640 480 -500 197 -500 375 -640 457 -640 424 -640 480 -640 425 -640 361 -640 480 -640 421 -497 640 -612 612 -640 429 -480 640 -640 480 -640 480 -640 480 -640 480 -640 247 -640 480 -427 640 -640 421 -640 427 -427 640 -612 612 -640 427 -400 500 -500 333 -640 480 -640 427 -640 480 -640 427 -500 375 -480 640 -640 427 -640 427 -360 640 -500 375 -640 480 -640 480 -640 427 -640 480 -640 512 -640 426 -640 425 -640 359 -640 425 -640 425 -640 480 -480 640 -640 480 -426 640 -640 426 -640 432 -640 455 -640 425 -640 640 -640 426 -640 440 -480 640 -640 425 -509 640 -640 480 -640 480 -640 480 -640 426 -640 427 -640 480 -640 424 -500 331 -427 640 -480 640 -426 640 -640 360 -640 153 -612 612 -640 361 -604 640 -640 452 -640 411 -478 640 -640 480 -612 612 -500 400 -640 480 -640 480 -640 427 -640 480 -640 427 -480 640 -426 640 -640 427 -640 427 -612 612 -500 469 -640 428 -640 480 -640 426 -640 480 -640 480 -640 448 -640 425 -640 480 -375 500 -640 426 -612 612 -438 640 -383 640 -480 640 -640 478 -599 363 -612 612 -480 640 -640 424 -640 427 -640 480 -640 360 -500 400 -640 401 -640 480 -640 473 -640 427 -640 480 -640 427 -640 480 -640 428 -640 480 -640 480 -640 480 -640 480 -640 427 -480 640 -640 427 -640 480 -640 427 -640 320 -640 434 -500 375 -500 375 -640 427 -480 640 -500 375 -640 427 -640 425 -640 426 -640 480 -640 427 -640 480 -640 424 -425 640 -640 480 -640 427 -640 539 -640 480 -640 429 -640 480 -640 483 -640 426 -640 480 -640 428 -383 640 -500 374 -640 480 -640 281 -640 425 -640 427 -640 480 -640 428 -640 427 -500 375 -640 426 -640 413 -427 640 -500 448 -640 426 -499 640 -640 426 -480 640 -640 426 -640 428 -640 361 -427 640 -500 333 -480 640 -640 160 -640 503 -640 480 -640 427 -640 361 -640 480 -500 475 -481 640 -640 480 -431 640 -640 427 -500 375 -640 427 -427 640 -640 480 -640 427 -640 480 -427 640 -480 640 -500 375 -640 396 -640 480 -428 640 -640 427 -452 640 -612 612 -500 332 -427 640 -640 427 -640 480 -488 640 -640 427 -640 426 -535 640 -640 480 -480 640 -640 426 -640 576 -640 360 -626 640 -500 375 -427 640 -427 640 -640 480 -640 480 -640 426 -640 480 -480 640 -640 480 -426 640 -480 640 -640 322 -640 427 -375 500 -640 425 -480 640 -500 242 -427 640 -428 640 -334 500 -640 461 -640 480 -640 480 -640 428 -640 480 -640 586 -468 640 -640 427 -640 480 -640 480 -640 549 -480 640 -640 427 -480 640 -612 612 -640 480 -640 427 -640 427 -640 551 -480 640 -640 480 -640 480 -640 427 -375 500 -640 427 -640 360 -480 640 -478 640 -500 332 -640 480 -427 640 -428 640 -481 640 -612 612 -375 500 -640 480 -500 375 -640 480 -512 640 -640 427 -640 425 -422 640 -500 375 -480 640 -640 424 -640 427 -480 640 -640 480 -640 480 -427 640 -640 480 -480 640 -612 612 -640 480 -640 427 -427 640 -500 375 -640 468 -640 426 -427 640 -427 640 -640 427 -427 640 -480 640 -640 480 -640 480 -480 640 -640 480 -640 497 -640 426 -640 640 -640 480 -640 480 -640 425 -375 500 -640 427 -500 375 -500 333 -640 508 -640 480 -500 400 -640 427 -640 480 -480 640 -640 427 -480 640 -640 480 -383 640 -640 439 -640 480 -640 427 -640 480 -500 338 -375 500 -640 640 -640 480 -640 426 -480 640 -367 640 -626 640 -480 640 -640 426 -336 640 -640 376 -480 640 -640 559 -500 400 -640 427 -640 427 -640 426 -640 425 -640 480 -640 480 -640 429 -477 640 -640 480 -640 438 -375 500 -640 480 -500 333 -612 612 -640 360 -480 640 -640 480 -493 640 -640 427 -640 363 -640 481 -480 640 -375 500 -640 429 -478 640 -640 480 -640 427 -640 372 -640 427 -640 427 -480 640 -640 427 -459 640 -500 335 -640 428 -640 480 -640 639 -640 432 -500 375 -500 333 -500 333 -500 400 -640 426 -640 480 -640 640 -640 478 -640 480 -640 426 -640 360 -640 480 -640 426 -640 428 -640 480 -640 536 -500 604 -640 480 -480 640 -500 375 -500 375 -500 332 -640 339 -612 612 -640 480 -640 480 -640 458 -427 640 -480 640 -640 424 -640 426 -480 640 -435 500 -428 640 -640 480 -500 345 -425 640 -640 480 -427 640 -429 640 -612 612 -640 427 -480 640 -612 612 -610 411 -640 427 -640 381 -333 500 -480 640 -640 393 -640 427 -640 522 -640 562 -640 480 -500 375 -640 427 -612 612 -375 500 -640 426 -425 640 -480 640 -612 612 -424 640 -640 512 -500 375 -427 640 -426 640 -612 612 -640 480 -640 480 -280 500 -500 333 -640 480 -640 427 -640 427 -640 548 -640 480 -640 428 -640 442 -640 628 -640 431 -640 427 -483 640 -640 480 -500 280 -640 480 -480 640 -457 640 -640 480 -640 480 -640 400 -500 375 -420 640 -640 428 -640 424 -500 332 -500 289 -428 640 -432 640 -640 480 -640 404 -640 480 -380 500 -500 375 -640 427 -640 520 -640 480 -640 480 -640 423 -500 333 -640 480 -640 427 -640 476 -640 426 -500 333 -640 424 -640 480 -500 375 -480 640 -640 426 -375 500 -457 640 -640 432 -640 480 -640 488 -640 508 -640 312 -640 368 -640 426 -640 379 -640 426 -640 426 -500 333 -640 480 -640 478 -640 639 -640 425 -640 478 -427 640 -640 480 -640 506 -640 480 -500 335 -640 425 -500 379 -640 427 -500 375 -476 640 -640 426 -500 375 -640 427 -500 335 -426 640 -640 627 -640 480 -640 480 -640 480 -640 425 -640 480 -428 640 -360 640 -640 480 -640 428 -500 375 -640 427 -640 480 -640 493 -640 480 -427 640 -640 426 -500 254 -590 443 -640 480 -360 640 -640 480 -640 408 -640 480 -480 640 -640 480 -425 640 -640 449 -425 640 -640 640 -640 480 -635 640 -640 427 -640 360 -640 480 -640 383 -640 480 -375 500 -640 427 -640 427 -640 427 -640 426 -640 360 -640 424 -640 427 -640 640 -480 640 -640 480 -640 428 -640 427 -640 480 -640 480 -640 480 -640 427 -480 640 -640 512 -640 294 -640 428 -480 640 -640 640 -640 424 -640 426 -640 426 -640 480 -640 480 -640 480 -640 480 -640 451 -551 640 -612 612 -427 640 -500 375 -640 426 -640 426 -640 426 -493 500 -428 640 -640 480 -640 427 -480 640 -640 480 -480 640 -640 480 -480 640 -640 427 -640 480 -640 426 -640 428 -640 480 -640 480 -640 360 -640 480 -640 428 -640 427 -640 480 -640 428 -640 424 -480 640 -640 425 -640 425 -640 480 -640 478 -640 480 -640 480 -640 480 -612 612 -480 640 -640 398 -500 375 -427 640 -480 640 -640 548 -640 426 -640 504 -480 640 -640 427 -640 478 -427 640 -640 427 -640 429 -500 333 -286 427 -612 612 -500 375 -563 640 -454 289 -429 640 -640 427 -427 640 -640 640 -500 375 -426 640 -500 281 -640 387 -640 428 -640 427 -640 426 -480 640 -480 640 -640 480 -640 425 -640 425 -640 480 -429 640 -640 426 -528 640 -640 428 -640 426 -500 335 -640 512 -500 375 -640 480 -640 428 -640 230 -640 428 -640 457 -333 500 -500 321 -640 480 -640 427 -640 480 -612 612 -480 640 -640 481 -640 427 -480 640 -640 427 -640 481 -488 500 -640 427 -640 403 -640 433 -640 480 -640 427 -480 640 -640 427 -426 640 -640 480 -640 480 -210 126 -640 480 -640 410 -428 640 -375 500 -500 335 -375 500 -640 480 -500 375 -640 427 -640 480 -500 333 -640 427 -480 640 -429 640 -640 480 -480 640 -480 329 -500 333 -500 375 -640 480 -360 480 -640 416 -640 480 -480 640 -640 400 -461 640 -500 333 -640 396 -424 640 -500 375 -640 425 -612 612 -640 427 -640 448 -640 241 -640 426 -500 350 -640 427 -427 640 -640 424 -500 375 -640 492 -640 425 -640 434 -640 425 -216 301 -640 428 -640 480 -500 371 -500 333 -640 428 -481 640 -480 640 -640 480 -640 322 -640 427 -640 478 -427 640 -640 427 -640 480 -439 640 -640 427 -640 480 -480 640 -640 426 -500 333 -640 427 -640 429 -640 427 -640 480 -500 375 -640 427 -640 497 -480 640 -640 463 -480 640 -356 500 -500 375 -640 428 -480 640 -500 289 -640 427 -640 480 -640 436 -427 640 -640 480 -640 640 -640 418 -480 640 -640 426 -375 500 -640 480 -640 427 -640 427 -480 640 -640 480 -640 320 -480 640 -640 426 -640 428 -640 480 -640 426 -640 426 -640 457 -640 427 -640 427 -640 457 -480 640 -448 298 -640 480 -640 426 -640 483 -640 480 -458 640 -640 480 -333 500 -640 403 -640 480 -640 427 -640 360 -640 569 -360 640 -612 612 -640 480 -640 478 -640 424 -640 427 -640 427 -640 359 -640 480 -640 548 -612 612 -375 500 -333 500 -640 429 -640 480 -640 480 -480 640 -428 640 -640 426 -640 399 -640 480 -640 427 -517 388 -640 429 -640 427 -640 480 -640 424 -640 426 -640 425 -480 640 -640 480 -640 360 -640 427 -640 425 -425 640 -640 480 -640 414 -480 640 -640 480 -640 480 -640 427 -640 480 -612 612 -612 612 -500 375 -426 640 -640 426 -640 480 -640 394 -640 427 -612 612 -426 640 -640 428 -640 480 -375 500 -640 480 -640 352 -500 332 -640 480 -443 640 -640 427 -640 424 -446 640 -640 368 -640 640 -480 640 -531 640 -640 480 -478 640 -640 426 -640 427 -640 480 -333 500 -500 391 -612 612 -640 428 -457 640 -640 427 -500 375 -640 428 -500 500 -640 480 -640 427 -640 457 -426 640 -640 480 -640 427 -640 480 -480 640 -480 640 -640 588 -640 480 -612 612 -427 640 -640 425 -640 480 -500 375 -640 514 -640 480 -480 640 -640 427 -640 427 -640 360 -640 479 -500 329 -640 516 -640 424 -640 480 -640 604 -480 640 -640 480 -480 640 -640 427 -500 375 -500 333 -323 500 -640 480 -640 480 -640 427 -640 428 -640 258 -640 480 -640 480 -640 480 -640 472 -640 426 -640 426 -500 375 -640 425 -480 640 -494 640 -640 426 -640 480 -500 375 -388 640 -640 480 -640 480 -640 427 -640 427 -427 640 -512 640 -640 427 -365 500 -494 640 -640 259 -640 427 -640 400 -640 480 -425 640 -612 612 -640 480 -640 427 -640 480 -640 427 -480 640 -640 427 -640 480 -640 400 -640 640 -640 428 -640 480 -640 428 -640 480 -640 491 -426 640 -640 427 -640 480 -480 640 -640 427 -640 480 -640 427 -480 640 -427 640 -427 640 -640 427 -500 375 -640 480 -480 640 -481 640 -640 359 -640 480 -612 612 -640 427 -640 480 -500 333 -640 427 -428 640 -640 361 -640 402 -640 427 -500 375 -427 640 -640 427 -640 428 -640 480 -640 396 -500 375 -640 417 -640 411 -640 426 -640 427 -640 480 -500 375 -640 427 -640 427 -427 640 -640 427 -640 480 -427 640 -427 640 -640 480 -640 424 -640 338 -640 480 -480 640 -640 428 -640 480 -640 426 -640 426 -500 475 -640 427 -640 468 -640 427 -480 640 -640 480 -640 424 -640 427 -516 387 -426 640 -628 406 -640 427 -478 640 -640 364 -500 333 -480 640 -640 427 -640 358 -640 359 -519 640 -429 640 -640 457 -640 457 -640 427 -375 500 -640 418 -640 427 -640 394 -427 640 -500 375 -640 425 -561 640 -480 640 -640 348 -640 428 -500 363 -640 427 -513 640 -640 424 -500 281 -640 360 -427 640 -640 360 -640 480 -640 426 -500 500 -640 428 -640 498 -640 342 -640 483 -480 640 -640 480 -640 427 -612 612 -612 612 -612 612 -640 480 -640 640 -640 480 -640 425 -480 640 -640 424 -640 480 -480 640 -640 480 -640 425 -500 333 -640 425 -500 380 -640 480 -426 640 -640 426 -640 413 -640 427 -480 640 -449 640 -640 427 -588 640 -640 480 -640 431 -640 426 -640 480 -427 640 -500 362 -640 480 -500 375 -500 345 -427 640 -640 462 -640 428 -640 427 -640 514 -640 480 -640 426 -640 480 -495 500 -427 640 -640 480 -640 427 -314 640 -640 426 -376 500 -480 640 -640 426 -428 640 -480 640 -640 419 -325 500 -640 427 -640 427 -640 480 -352 640 -500 375 -375 500 -500 332 -640 480 -640 533 -500 335 -640 604 -500 375 -480 640 -640 477 -640 426 -500 375 -640 427 -426 640 -640 481 -640 427 -640 425 -640 480 -612 612 -640 427 -640 480 -512 640 -458 640 -429 640 -640 429 -640 427 -640 478 -640 427 -500 246 -640 480 -640 327 -640 427 -640 425 -640 427 -612 612 -640 252 -640 480 -640 480 -640 427 -640 198 -640 491 -640 480 -640 480 -640 480 -640 480 -640 428 -480 640 -640 434 -640 427 -427 640 -640 427 -500 373 -640 457 -640 360 -640 426 -427 640 -635 640 -612 612 -640 480 -640 426 -640 427 -500 333 -500 375 -450 337 -640 427 -640 368 -640 427 -640 480 -640 424 -640 480 -640 567 -500 375 -600 604 -613 640 -640 427 -640 427 -640 471 -640 480 -478 640 -587 640 -640 427 -538 640 -612 612 -640 480 -375 500 -458 640 -427 640 -640 398 -500 375 -640 256 -640 425 -480 640 -640 311 -640 427 -500 279 -640 480 -612 612 -364 500 -375 500 -500 375 -640 480 -640 480 -640 428 -640 640 -456 640 -399 640 -612 612 -640 480 -500 330 -480 640 -640 396 -640 480 -427 640 -640 456 -640 426 -612 612 -500 375 -500 357 -640 480 -450 298 -500 397 -640 480 -640 427 -640 427 -640 480 -640 480 -640 480 -640 621 -500 375 -640 480 -500 331 -640 414 -640 480 -640 359 -640 480 -633 640 -640 480 -640 480 -640 428 -640 396 -480 640 -500 375 -494 500 -640 480 -640 510 -640 520 -640 480 -640 425 -640 427 -426 640 -387 500 -640 480 -640 424 -640 480 -500 332 -640 480 -640 421 -640 425 -640 424 -640 427 -640 480 -640 428 -640 427 -640 480 -640 424 -640 426 -640 360 -640 480 -640 480 -640 427 -640 425 -640 479 -500 334 -491 640 -480 640 -640 480 -640 473 -500 465 -375 500 -640 427 -640 427 -640 426 -640 480 -640 480 -500 329 -640 424 -500 487 -480 640 -640 480 -500 375 -640 480 -559 640 -640 463 -640 425 -428 640 -640 427 -500 382 -640 480 -640 523 -640 541 -640 480 -371 640 -640 426 -640 418 -640 401 -480 640 -425 640 -640 559 -500 490 -640 480 -428 640 -640 427 -640 427 -640 640 -640 427 -640 360 -480 640 -640 427 -341 500 -640 480 -426 640 -333 500 -640 480 -640 427 -480 640 -640 441 -640 426 -640 427 -640 480 -334 500 -640 424 -640 449 -640 419 -640 425 -640 427 -366 500 -322 500 -480 640 -448 640 -500 429 -640 425 -640 480 -640 480 -427 640 -478 640 -640 331 -480 640 -375 500 -640 480 -640 529 -640 426 -640 480 -640 480 -375 500 -425 640 -640 427 -640 480 -461 640 -640 428 -640 479 -640 427 -424 640 -640 427 -640 480 -500 359 -480 640 -640 427 -640 427 -480 640 -640 480 -640 458 -640 394 -640 425 -612 612 -500 375 -640 640 -480 640 -427 640 -640 408 -612 612 -640 427 -480 640 -640 426 -640 480 -640 593 -558 640 -640 481 -640 480 -640 426 -640 424 -640 480 -640 480 -500 375 -640 480 -500 424 -176 144 -640 427 -640 480 -640 480 -640 480 -640 426 -640 480 -480 640 -333 240 -427 640 -640 426 -640 480 -640 476 -640 480 -640 426 -640 427 -621 640 -640 480 -640 480 -640 426 -640 427 -640 480 -500 333 -375 500 -480 640 -640 480 -640 427 -640 427 -500 500 -640 423 -640 425 -640 480 -640 480 -640 427 -640 427 -640 425 -612 612 -640 426 -640 480 -640 425 -640 427 -640 640 -640 480 -500 375 -640 426 -500 271 -480 640 -500 375 -640 482 -640 427 -480 640 -640 427 -640 427 -640 480 -640 414 -640 427 -640 398 -640 480 -640 433 -640 426 -640 427 -480 360 -640 427 -640 480 -640 480 -480 640 -640 464 -612 612 -480 640 -640 480 -640 426 -640 480 -640 480 -640 480 -640 482 -500 386 -640 480 -500 377 -640 480 -640 427 -640 480 -640 480 -480 640 -424 640 -640 480 -640 427 -500 333 -640 424 -480 640 -500 333 -640 480 -640 400 -427 640 -640 427 -500 335 -640 416 -428 640 -640 427 -640 427 -500 333 -640 228 -640 426 -500 337 -480 640 -640 480 -640 424 -480 640 -500 409 -640 640 -640 640 -478 640 -411 500 -640 426 -640 427 -640 471 -640 480 -640 426 -640 403 -640 427 -640 428 -640 480 -640 480 -443 640 -640 548 -640 480 -640 480 -640 480 -480 640 -640 427 -480 640 -480 640 -640 298 -640 480 -480 640 -640 429 -640 458 -640 480 -640 427 -480 640 -640 480 -640 488 -499 640 -375 500 -640 480 -640 476 -640 427 -640 480 -640 456 -640 480 -500 375 -640 640 -500 375 -640 480 -357 500 -640 522 -480 640 -332 500 -480 640 -640 480 -640 427 -500 375 -426 640 -640 426 -640 427 -640 480 -500 375 -480 640 -640 428 -640 480 -480 640 -480 640 -640 428 -640 480 -500 379 -640 480 -427 640 -500 344 -640 424 -640 640 -427 640 -640 427 -500 375 -640 354 -426 640 -640 480 -640 427 -640 427 -640 480 -640 480 -640 480 -480 640 -375 500 -599 640 -640 440 -640 640 -427 640 -640 441 -448 336 -500 375 -500 375 -640 480 -500 332 -640 480 -640 457 -336 448 -500 281 -480 640 -640 480 -427 640 -640 433 -396 640 -500 500 -480 640 -640 480 -640 480 -640 425 -480 640 -640 425 -640 427 -500 375 -640 480 -640 360 -480 640 -500 375 -512 640 -640 418 -500 431 -500 332 -640 400 -640 458 -640 425 -500 333 -640 360 -480 640 -640 394 -640 360 -500 375 -640 480 -640 359 -640 426 -640 425 -500 333 -640 512 -640 428 -427 640 -640 480 -480 640 -640 480 -494 640 -427 640 -480 640 -640 479 -640 427 -640 640 -640 427 -640 480 -480 640 -640 427 -640 480 -640 428 -426 640 -640 424 -640 480 -640 427 -640 426 -640 425 -640 360 -640 427 -640 480 -640 478 -640 425 -480 640 -426 640 -640 434 -500 375 -640 427 -427 640 -640 387 -640 424 -480 640 -494 640 -640 399 -640 465 -501 640 -640 480 -640 427 -594 640 -500 375 -640 414 -640 480 -640 479 -640 360 -640 480 -480 640 -480 640 -375 500 -480 640 -640 361 -424 640 -640 425 -640 424 -640 427 -640 427 -640 480 -380 500 -640 428 -640 480 -640 480 -640 479 -640 361 -640 480 -640 480 -640 415 -429 640 -640 427 -640 480 -500 375 -640 424 -500 373 -500 375 -431 640 -480 640 -428 640 -640 416 -640 424 -640 420 -640 424 -457 640 -480 640 -640 476 -500 319 -640 427 -640 480 -640 480 -640 480 -424 640 -640 427 -640 586 -640 480 -640 413 -375 500 -640 427 -640 424 -500 375 -640 480 -640 480 -428 640 -375 500 -288 432 -640 479 -640 427 -640 479 -640 464 -640 401 -480 640 -640 480 -427 640 -640 424 -640 451 -628 640 -640 425 -640 426 -500 375 -500 333 -482 640 -479 640 -427 640 -640 480 -640 427 -640 428 -640 427 -500 375 -640 480 -640 427 -500 375 -640 480 -640 480 -640 419 -428 640 -500 375 -640 640 -640 499 -640 427 -640 426 -640 408 -640 427 -640 425 -640 640 -640 427 -640 425 -404 500 -640 425 -640 425 -480 640 -640 480 -640 427 -640 480 -640 640 -640 480 -500 375 -640 618 -519 640 -480 640 -480 640 -640 480 -500 332 -426 640 -333 500 -640 480 -640 427 -640 480 -640 480 -500 311 -640 480 -640 480 -640 427 -640 480 -640 426 -640 480 -484 640 -480 640 -640 384 -424 640 -427 640 -640 480 -640 433 -640 575 -640 640 -640 419 -500 376 -640 427 -640 480 -333 500 -640 480 -640 427 -480 640 -480 640 -500 326 -640 480 -640 480 -640 453 -462 640 -640 353 -640 424 -640 424 -640 480 -640 427 -640 360 -640 368 -640 480 -640 427 -640 480 -640 427 -640 427 -640 434 -640 428 -640 427 -427 640 -500 400 -427 640 -640 431 -400 239 -640 426 -640 427 -480 640 -640 557 -480 640 -640 480 -640 424 -427 640 -640 427 -425 640 -640 360 -640 358 -640 480 -640 480 -640 425 -500 333 -524 640 -375 500 -640 427 -500 333 -640 440 -640 533 -640 427 -640 480 -640 426 -633 640 -640 502 -640 480 -640 428 -640 359 -640 425 -640 480 -640 480 -480 640 -640 480 -640 480 -640 520 -640 480 -480 640 -640 426 -640 480 -478 640 -640 414 -640 480 -478 640 -640 480 -640 488 -480 640 -375 500 -640 424 -640 427 -640 480 -640 480 -427 640 -427 640 -640 480 -427 640 -512 640 -640 480 -424 640 -500 252 -640 427 -640 425 -428 640 -640 427 -427 640 -425 640 -375 500 -640 480 -640 428 -640 640 -640 480 -480 640 -500 337 -640 427 -640 480 -640 383 -640 427 -500 375 -500 333 -640 480 -500 375 -494 640 -640 480 -640 512 -640 425 -500 375 -500 332 -640 427 -640 480 -612 612 -640 640 -640 480 -640 427 -640 427 -480 640 -640 480 -640 427 -500 375 -640 480 -640 480 -640 480 -640 427 -480 640 -333 500 -640 480 -640 480 -428 640 -640 427 -640 427 -480 640 -640 461 -500 375 -640 480 -640 363 -640 427 -640 574 -640 426 -640 480 -375 500 -640 480 -640 360 -640 395 -600 402 -640 480 -640 360 -500 500 -640 428 -640 425 -640 480 -640 480 -640 480 -480 640 -640 426 -640 480 -640 482 -640 361 -640 480 -480 640 -640 434 -640 425 -480 640 -640 427 -640 425 -640 428 -500 375 -640 425 -500 332 -640 480 -500 375 -640 431 -640 425 -640 427 -640 480 -640 485 -640 480 -512 640 -480 640 -500 375 -640 427 -640 425 -462 640 -640 425 -500 334 -640 480 -375 500 -549 640 -640 351 -500 375 -640 480 -480 319 -640 360 -640 427 -480 640 -640 480 -640 427 -640 426 -640 427 -640 439 -640 329 -640 480 -640 426 -500 500 -427 640 -640 480 -640 480 -640 480 -640 428 -640 424 -640 480 -480 640 -640 426 -640 480 -640 427 -368 640 -640 456 -640 480 -427 640 -640 480 -640 458 -640 427 -480 640 -429 640 -640 435 -640 480 -640 428 -640 425 -640 403 -640 514 -640 424 -640 512 -500 375 -640 512 -640 462 -640 427 -480 640 -640 480 -640 426 -640 504 -429 640 -426 640 -612 612 -500 333 -640 426 -640 422 -640 269 -640 427 -640 480 -640 425 -640 400 -427 640 -640 426 -640 480 -640 478 -480 640 -640 480 -640 486 -640 427 -458 640 -640 425 -640 503 -332 500 -426 640 -432 305 -480 640 -640 480 -640 480 -640 428 -375 500 -500 333 -426 640 -500 376 -640 428 -500 213 -640 479 -640 429 -598 640 -640 373 -473 640 -640 480 -640 640 -612 612 -640 480 -640 480 -640 480 -640 427 -640 427 -402 640 -640 480 -640 425 -640 427 -640 378 -640 428 -640 427 -640 361 -500 333 -640 427 -640 427 -480 640 -427 640 -640 426 -480 640 -640 450 -612 612 -640 553 -640 480 -640 425 -640 439 -640 428 -640 428 -640 430 -500 352 -640 418 -479 640 -640 427 -640 639 -640 480 -640 427 -640 427 -640 480 -612 612 -640 480 -427 640 -427 640 -640 316 -640 428 -500 375 -640 480 -640 424 -640 427 -500 333 -428 640 -500 334 -640 480 -500 375 -640 426 -500 331 -640 480 -640 458 -640 478 -612 612 -640 480 -427 640 -427 640 -640 426 -427 640 -612 612 -477 640 -640 428 -640 427 -640 427 -640 427 -640 448 -640 427 -640 427 -512 640 -640 426 -640 480 -640 493 -640 427 -640 427 -500 333 -640 283 -640 360 -640 457 -303 500 -500 333 -640 513 -500 375 -640 425 -640 304 -612 612 -640 480 -640 424 -500 375 -333 500 -640 480 -640 426 -480 640 -500 375 -500 381 -640 480 -640 480 -640 570 -500 375 -640 427 -480 640 -640 480 -640 480 -640 480 -640 480 -640 427 -500 375 -640 427 -640 426 -640 480 -480 640 -480 640 -640 411 -640 426 -640 427 -640 480 -480 640 -640 427 -500 291 -350 500 -640 360 -467 640 -429 640 -640 441 -427 640 -500 216 -640 480 -480 640 -640 480 -640 467 -640 480 -480 640 -311 640 -640 480 -640 427 -640 480 -640 480 -500 334 -640 427 -640 426 -640 458 -480 640 -640 479 -640 424 -513 640 -640 480 -640 360 -640 480 -318 480 -640 427 -612 612 -640 425 -640 400 -640 427 -640 480 -480 640 -500 331 -357 500 -640 480 -480 640 -640 480 -640 443 -640 480 -640 426 -640 480 -500 367 -640 433 -480 640 -640 480 -640 427 -640 427 -500 333 -640 479 -640 480 -640 428 -425 640 -640 367 -375 500 -500 366 -480 640 -640 480 -640 481 -480 640 -640 427 -427 640 -427 640 -640 510 -640 481 -375 500 -640 480 -359 640 -640 264 -640 426 -480 640 -640 480 -640 458 -500 416 -640 429 -640 426 -640 480 -640 425 -640 480 -640 480 -640 480 -640 383 -160 144 -640 427 -640 425 -640 428 -427 640 -640 480 -640 426 -640 427 -500 333 -333 500 -640 427 -425 640 -640 461 -640 428 -640 427 -640 321 -640 405 -427 640 -375 500 -640 480 -640 427 -640 426 -640 480 -640 427 -480 640 -640 432 -640 427 -640 361 -640 428 -640 480 -640 528 -480 640 -640 424 -640 426 -640 320 -640 336 -640 429 -427 640 -640 425 -500 375 -500 332 -640 427 -500 375 -640 427 -640 426 -640 305 -640 427 -500 375 -640 480 -301 500 -640 480 -640 416 -500 334 -640 480 -640 480 -640 425 -640 480 -425 640 -640 426 -378 500 -640 434 -375 500 -640 480 -640 480 -640 427 -640 478 -640 573 -481 640 -640 480 -427 640 -640 427 -460 500 -640 480 -640 480 -428 640 -640 478 -640 480 -640 480 -640 401 -500 500 -500 375 -640 424 -500 333 -640 426 -500 500 -640 379 -457 640 -640 466 -640 480 -500 333 -640 427 -427 640 -640 478 -640 426 -640 640 -640 426 -640 425 -640 427 -426 640 -525 640 -640 271 -612 612 -480 640 -640 480 -640 480 -640 360 -640 427 -640 480 -640 480 -375 500 -640 480 -640 480 -640 480 -640 434 -480 640 -640 427 -640 359 -500 375 -640 480 -640 480 -640 480 -640 480 -500 375 -640 480 -640 480 -427 640 -480 640 -640 396 -383 640 -220 222 -640 427 -480 640 -640 480 -640 326 -640 521 -640 427 -640 480 -640 426 -640 478 -640 480 -640 427 -640 427 -640 533 -360 640 -640 480 -640 480 -640 443 -500 375 -640 306 -480 640 -500 332 -640 426 -640 479 -640 488 -640 427 -480 640 -640 400 -640 400 -640 480 -640 640 -427 640 -640 427 -640 480 -425 640 -640 480 -640 425 -640 427 -440 640 -640 427 -640 425 -640 640 -640 425 -640 480 -640 426 -513 640 -640 427 -640 581 -640 360 -640 480 -640 427 -425 640 -500 332 -640 480 -640 480 -640 428 -640 426 -640 480 -640 556 -640 428 -640 480 -640 427 -640 480 -427 640 -426 640 -640 463 -640 433 -424 640 -640 427 -640 480 -500 333 -640 426 -500 344 -640 480 -640 427 -640 427 -640 427 -333 500 -640 480 -640 427 -640 480 -640 414 -375 500 -444 640 -500 333 -640 253 -640 462 -427 640 -640 480 -640 480 -427 640 -640 480 -500 350 -640 427 -640 427 -640 510 -478 640 -640 503 -640 480 -640 360 -640 424 -612 612 -376 640 -480 640 -640 427 -500 375 -425 640 -500 333 -333 500 -640 480 -640 480 -500 375 -640 480 -640 427 -640 480 -500 324 -427 640 -624 640 -640 480 -640 428 -640 480 -500 358 -640 418 -640 427 -640 427 -640 427 -612 612 -640 427 -640 427 -490 640 -428 640 -600 600 -640 424 -640 506 -480 640 -480 640 -640 478 -640 478 -640 386 -640 425 -478 640 -640 427 -640 480 -640 480 -375 500 -640 480 -427 640 -640 427 -640 427 -640 426 -640 427 -640 480 -500 375 -427 640 -640 426 -640 480 -427 640 -640 427 -640 437 -427 640 -640 480 -374 500 -500 375 -640 428 -640 480 -480 640 -640 640 -424 640 -500 238 -640 426 -500 375 -640 427 -640 480 -640 425 -500 500 -542 640 -640 480 -500 333 -433 640 -480 640 -500 280 -640 427 -500 330 -427 640 -640 426 -640 427 -481 640 -640 426 -640 409 -640 480 -640 428 -640 425 -427 640 -425 640 -640 480 -480 640 -640 383 -640 480 -427 640 -640 480 -480 640 -640 426 -575 434 -640 424 -640 427 -480 640 -478 640 -640 480 -640 360 -604 640 -640 361 -426 640 -640 427 -427 640 -640 480 -480 640 -375 500 -640 361 -446 640 -427 640 -640 426 -473 640 -426 640 -480 640 -640 451 -640 418 -640 427 -500 322 -640 480 -417 640 -640 427 -640 425 -500 374 -640 466 -640 480 -640 372 -640 471 -640 480 -480 640 -640 453 -640 344 -640 427 -640 603 -500 375 -640 480 -640 640 -480 640 -640 427 -640 480 -640 383 -640 480 -500 333 -640 480 -480 640 -438 640 -640 480 -640 480 -612 612 -375 500 -640 484 -500 314 -640 468 -428 640 -640 482 -640 429 -500 500 -480 640 -640 480 -640 424 -640 480 -640 426 -640 480 -640 424 -640 424 -640 427 -640 427 -429 640 -640 425 -427 640 -640 427 -640 478 -640 640 -500 375 -640 427 -480 640 -640 338 -640 427 -640 427 -640 480 -640 480 -640 427 -640 428 -640 493 -421 640 -640 427 -426 640 -640 513 -640 360 -640 480 -640 480 -640 480 -426 640 -512 640 -640 512 -640 426 -640 480 -426 640 -640 428 -640 427 -480 640 -640 464 -640 480 -640 478 -640 480 -640 480 -612 612 -640 640 -500 375 -500 375 -640 480 -640 461 -640 501 -338 450 -640 427 -640 425 -640 379 -640 427 -640 428 -640 384 -640 480 -640 427 -639 640 -640 427 -428 640 -640 482 -500 333 -640 427 -640 361 -629 640 -500 333 -640 427 -500 375 -480 640 -427 640 -640 521 -413 640 -640 428 -480 640 -640 480 -475 640 -640 426 -500 331 -640 373 -640 438 -427 640 -640 429 -640 480 -640 480 -500 493 -640 427 -640 478 -341 595 -480 640 -500 375 -640 480 -500 500 -480 640 -640 480 -640 480 -428 640 -640 426 -640 480 -640 478 -640 427 -480 640 -375 500 -480 640 -640 480 -640 480 -640 480 -481 640 -640 373 -640 480 -640 480 -612 612 -640 480 -500 426 -640 424 -500 407 -480 640 -640 426 -640 480 -640 475 -640 439 -640 480 -640 418 -640 481 -640 426 -640 480 -334 500 -640 384 -500 375 -423 640 -512 640 -500 334 -640 417 -612 612 -640 480 -640 432 -640 427 -640 386 -428 640 -640 480 -640 480 -640 480 -640 478 -640 480 -640 480 -640 426 -640 426 -480 640 -500 332 -640 427 -640 480 -427 640 -640 429 -612 612 -423 640 -640 360 -640 480 -640 480 -480 640 -640 425 -640 428 -480 640 -640 426 -640 480 -640 480 -640 480 -640 480 -500 375 -640 480 -334 500 -395 640 -640 480 -640 480 -500 375 -640 480 -500 375 -640 480 -640 480 -640 480 -640 483 -640 480 -640 480 -428 640 -450 391 -424 640 -478 640 -640 480 -500 375 -426 640 -640 464 -640 429 -640 427 -640 433 -640 427 -500 375 -640 480 -480 640 -427 640 -640 604 -640 474 -640 640 -640 427 -640 480 -640 427 -640 427 -480 640 -640 427 -427 640 -640 480 -640 480 -480 640 -640 360 -640 640 -640 480 -640 427 -640 428 -640 427 -640 424 -640 361 -640 480 -640 480 -640 434 -612 612 -500 375 -640 426 -640 427 -640 480 -640 427 -640 360 -640 640 -500 375 -640 427 -640 480 -640 480 -640 481 -640 427 -640 474 -640 427 -640 471 -480 640 -612 612 -640 427 -500 333 -640 426 -640 428 -480 640 -640 480 -565 640 -640 427 -480 640 -640 424 -640 481 -428 640 -640 480 -640 427 -640 480 -640 400 -640 480 -425 640 -640 480 -640 480 -333 500 -640 427 -640 480 -612 612 -640 427 -480 640 -640 480 -640 480 -434 640 -640 480 -640 414 -640 480 -640 480 -480 640 -500 359 -396 640 -480 640 -579 640 -640 480 -423 640 -640 640 -640 361 -640 428 -640 478 -640 480 -397 640 -640 341 -480 640 -640 427 -640 480 -640 480 -480 640 -640 480 -500 375 -640 426 -640 480 -500 332 -640 480 -640 480 -640 431 -640 427 -640 480 -640 427 -640 428 -516 640 -640 426 -640 484 -640 360 -480 640 -640 426 -640 457 -361 640 -640 461 -601 640 -640 509 -640 427 -640 426 -425 640 -640 480 -612 612 -640 427 -640 426 -640 480 -640 526 -427 640 -640 426 -600 600 -640 427 -640 480 -640 425 -423 640 -640 480 -500 375 -529 640 -459 640 -333 500 -640 480 -640 320 -640 429 -640 351 -433 640 -500 375 -640 480 -640 480 -640 480 -640 427 -500 375 -640 480 -640 480 -640 427 -640 480 -640 480 -640 640 -426 640 -427 640 -640 480 -640 480 -640 347 -640 428 -640 360 -427 640 -640 427 -640 480 -424 640 -640 480 -640 640 -612 612 -480 640 -640 480 -428 640 -640 480 -426 640 -640 430 -640 427 -439 640 -500 375 -640 425 -489 640 -640 427 -500 333 -640 480 -640 428 -640 427 -640 512 -640 351 -640 424 -500 328 -640 427 -640 427 -500 334 -640 480 -640 480 -640 405 -500 397 -640 427 -640 403 -640 428 -640 422 -640 480 -640 396 -426 640 -640 499 -640 476 -640 427 -640 439 -599 348 -640 638 -640 386 -640 480 -640 427 -428 640 -426 640 -640 480 -640 449 -640 427 -640 480 -612 612 -640 425 -640 427 -640 480 -640 503 -427 640 -640 426 -612 612 -640 426 -497 640 -612 612 -640 359 -640 428 -426 640 -640 427 -640 480 -500 316 -500 375 -640 425 -640 480 -333 500 -640 480 -640 480 -640 480 -640 426 -427 640 -640 474 -640 480 -542 640 -640 480 -640 427 -640 426 -457 640 -640 488 -480 640 -427 640 -640 433 -640 512 -640 481 -640 427 -480 640 -640 427 -640 478 -480 640 -500 334 -640 464 -612 612 -640 480 -640 480 -427 640 -640 469 -640 478 -640 427 -640 480 -640 480 -480 640 -480 640 -640 336 -640 426 -640 424 -640 475 -640 480 -427 640 -640 423 -428 640 -640 428 -640 427 -640 427 -640 480 -640 480 -640 396 -640 427 -500 333 -640 427 -640 480 -640 427 -640 360 -612 612 -480 640 -640 448 -423 640 -640 564 -640 480 -640 348 -480 640 -493 640 -426 640 -612 612 -500 375 -640 408 -640 539 -640 427 -640 360 -500 375 -640 480 -333 500 -640 480 -400 500 -640 480 -640 480 -640 438 -640 428 -640 434 -640 427 -640 400 -640 480 -375 500 -640 359 -640 640 -640 427 -640 425 -640 359 -640 480 -640 512 -640 483 -640 427 -640 480 -640 480 -640 480 -640 635 -427 640 -640 424 -640 640 -480 640 -426 640 -640 480 -640 427 -640 426 -471 640 -640 480 -480 640 -640 427 -640 433 -640 360 -500 375 -640 574 -612 612 -640 480 -640 522 -640 523 -480 640 -640 427 -640 480 -640 426 -480 640 -640 426 -425 640 -640 480 -640 424 -480 640 -640 640 -640 480 -640 480 -640 429 -507 640 -640 480 -640 480 -426 640 -500 415 -640 480 -640 480 -480 640 -640 449 -640 480 -640 427 -427 640 -480 640 -640 417 -612 612 -500 375 -375 500 -640 396 -500 343 -640 388 -428 640 -480 640 -480 640 -640 287 -480 640 -426 640 -640 427 -640 395 -480 640 -480 640 -481 640 -640 480 -640 480 -640 448 -640 427 -640 480 -500 354 -640 331 -384 512 -640 458 -640 408 -640 480 -640 429 -640 480 -640 526 -640 424 -640 480 -640 499 -640 640 -640 454 -640 427 -640 480 -500 334 -640 271 -640 424 -640 424 -368 640 -478 640 -640 630 -427 640 -640 427 -333 500 -640 424 -640 480 -640 426 -512 640 -640 480 -640 339 -640 395 -640 387 -640 428 -424 640 -640 480 -640 568 -640 425 -500 375 -640 480 -500 375 -640 480 -500 375 -640 480 -640 370 -480 640 -425 640 -640 427 -640 508 -640 278 -640 480 -375 500 -500 375 -640 480 -426 640 -640 480 -640 425 -480 640 -640 426 -640 358 -640 480 -510 640 -361 640 -640 427 -640 480 -640 427 -500 375 -426 640 -640 480 -640 421 -640 473 -640 480 -640 453 -640 431 -640 427 -640 427 -426 640 -576 285 -640 480 -427 640 -640 425 -640 427 -640 640 -640 427 -640 427 -640 359 -640 421 -640 425 -476 640 -640 480 -500 288 -356 500 -640 415 -640 480 -640 426 -640 480 -640 421 -640 522 -640 413 -612 612 -612 612 -640 480 -480 640 -427 640 -640 480 -427 640 -640 478 -640 400 -640 480 -640 480 -640 436 -640 480 -640 587 -500 333 -640 350 -640 480 -640 424 -640 426 -640 438 -428 640 -640 480 -640 425 -640 474 -640 480 -403 640 -500 325 -500 375 -500 375 -640 480 -427 640 -464 640 -640 480 -640 423 -480 640 -640 428 -339 500 -640 480 -500 375 -640 360 -500 333 -640 480 -640 427 -424 640 -640 480 -640 363 -640 459 -640 428 -640 427 -480 640 -640 361 -640 480 -640 418 -640 480 -640 427 -640 427 -375 500 -640 427 -640 480 -640 427 -500 306 -640 427 -640 480 -640 400 -640 427 -640 426 -640 425 -381 500 -500 375 -640 480 -640 480 -640 360 -500 332 -612 612 -640 424 -640 426 -640 480 -448 640 -640 362 -640 415 -500 375 -640 427 -484 640 -640 480 -500 375 -640 427 -493 640 -640 426 -640 429 -640 480 -402 640 -640 480 -640 480 -375 500 -640 426 -640 480 -640 442 -480 640 -640 480 -640 427 -480 640 -640 480 -500 378 -640 424 -640 480 -640 480 -640 480 -640 480 -640 426 -640 480 -640 361 -640 426 -640 359 -640 510 -640 427 -640 461 -640 427 -640 427 -480 640 -332 500 -288 432 -500 375 -640 478 -500 375 -500 375 -612 612 -640 427 -640 427 -426 640 -640 480 -480 640 -640 480 -333 500 -640 424 -480 640 -640 538 -640 420 -500 375 -640 427 -408 306 -480 640 -640 451 -640 480 -640 480 -640 426 -640 383 -640 429 -480 640 -640 480 -640 427 -640 429 -640 341 -383 640 -640 478 -640 480 -500 375 -640 314 -640 480 -640 430 -612 612 -640 427 -640 480 -333 500 -640 429 -640 640 -616 640 -640 480 -478 640 -375 500 -480 640 -500 375 -480 640 -427 640 -640 424 -427 640 -640 425 -640 427 -640 360 -427 640 -480 640 -640 404 -500 352 -640 360 -640 427 -500 399 -640 400 -640 480 -640 426 -640 426 -640 428 -640 480 -480 640 -640 429 -640 480 -640 480 -640 427 -640 480 -640 425 -640 480 -640 428 -523 640 -640 480 -500 375 -640 480 -640 640 -640 420 -640 423 -640 590 -640 427 -640 425 -640 327 -480 640 -640 428 -500 335 -640 425 -480 640 -400 640 -640 427 -640 480 -427 640 -640 426 -640 481 -640 426 -640 427 -500 375 -640 480 -640 427 -428 640 -615 615 -426 640 -480 640 -640 495 -640 480 -480 640 -640 439 -640 480 -640 480 -640 478 -480 388 -640 427 -640 359 -500 375 -640 480 -457 640 -480 640 -377 500 -600 314 -640 478 -640 480 -427 640 -480 640 -640 427 -640 454 -480 640 -640 480 -640 427 -640 414 -500 320 -640 480 -478 640 -640 480 -640 480 -640 640 -389 640 -640 480 -640 480 -640 501 -640 424 -640 480 -640 480 -640 323 -640 408 -640 480 -640 480 -640 425 -640 309 -640 427 -640 480 -640 480 -333 500 -359 640 -640 427 -640 427 -640 427 -640 424 -640 427 -640 480 -640 427 -640 427 -640 426 -640 480 -640 427 -640 427 -640 427 -640 480 -640 426 -431 640 -335 500 -427 640 -640 640 -640 391 -640 480 -640 480 -640 427 -640 427 -640 480 -640 427 -500 333 -640 502 -640 426 -640 427 -426 640 -640 480 -640 480 -640 480 -640 427 -394 640 -478 640 -623 640 -640 480 -640 427 -375 500 -427 640 -375 500 -640 512 -427 640 -480 640 -425 640 -480 640 -640 596 -640 545 -640 480 -640 480 -427 640 -480 640 -640 480 -640 522 -640 480 -375 500 -316 640 -500 396 -415 640 -640 503 -640 480 -640 360 -640 428 -640 426 -300 225 -427 640 -640 400 -500 334 -480 640 -640 480 -640 432 -500 375 -640 480 -500 332 -397 640 -612 612 -428 640 -454 640 -500 399 -640 480 -640 480 -640 279 -640 425 -500 375 -427 640 -640 425 -480 640 -383 640 -640 427 -500 375 -640 426 -640 480 -640 480 -640 480 -640 370 -500 333 -640 512 -640 480 -375 500 -640 480 -640 425 -640 427 -640 480 -500 335 -640 427 -640 480 -640 480 -500 375 -539 640 -640 480 -424 500 -640 427 -640 359 -640 427 -640 424 -640 426 -640 205 -640 424 -480 640 -640 480 -500 332 -640 480 -500 375 -640 427 -640 425 -640 445 -370 500 -640 480 -500 402 -640 427 -640 429 -612 612 -426 640 -500 373 -640 464 -640 480 -427 640 -640 480 -640 426 -640 479 -500 375 -640 426 -640 428 -640 480 -640 428 -640 427 -497 640 -640 480 -480 640 -640 426 -640 480 -425 640 -640 427 -426 640 -640 480 -640 480 -640 480 -640 480 -640 484 -427 640 -640 427 -640 427 -640 584 -612 612 -640 458 -640 427 -428 640 -500 375 -640 480 -427 640 -640 401 -619 640 -640 480 -640 512 -640 480 -424 640 -426 640 -640 478 -640 425 -640 347 -640 480 -640 359 -480 640 -640 428 -640 425 -375 500 -640 480 -640 424 -640 502 -375 500 -640 335 -415 500 -500 375 -640 424 -640 427 -640 480 -500 500 -500 375 -640 427 -640 427 -427 640 -640 480 -640 364 -640 640 -500 322 -480 640 -480 640 -427 640 -500 375 -375 500 -640 480 -640 490 -640 360 -640 480 -640 427 -500 376 -640 480 -373 500 -640 426 -640 480 -640 480 -500 375 -640 398 -640 480 -640 424 -640 480 -640 480 -427 640 -360 640 -640 480 -640 427 -640 480 -640 480 -612 612 -640 449 -426 640 -640 480 -480 640 -640 408 -480 640 -500 375 -640 383 -375 500 -640 425 -480 640 -428 640 -640 427 -500 330 -640 421 -640 427 -581 640 -640 426 -426 640 -640 427 -640 427 -640 388 -640 425 -640 428 -640 640 -640 427 -640 480 -640 480 -427 640 -640 428 -640 427 -640 480 -480 640 -414 640 -640 480 -480 640 -640 480 -640 427 -480 640 -428 640 -427 640 -640 449 -640 426 -640 480 -640 429 -640 467 -640 480 -640 480 -427 640 -640 427 -500 375 -640 478 -640 480 -640 385 -640 359 -360 640 -640 572 -640 480 -640 480 -427 640 -640 425 -640 466 -640 427 -640 640 -640 379 -500 315 -640 422 -640 480 -427 640 -640 424 -640 477 -640 480 -640 446 -375 500 -640 448 -640 360 -480 640 -640 478 -480 640 -640 480 -640 503 -500 375 -640 430 -613 635 -640 424 -640 427 -640 640 -640 427 -640 427 -427 640 -478 640 -409 640 -480 640 -640 480 -640 478 -458 640 -640 478 -640 480 -480 640 -640 423 -640 480 -480 640 -640 480 -640 360 -640 425 -640 360 -640 427 -427 640 -640 512 -640 480 -640 270 -640 360 -359 640 -500 375 -640 427 -500 375 -427 640 -480 640 -640 344 -640 480 -640 480 -640 640 -640 480 -640 640 -640 480 -640 360 -640 428 -640 427 -640 480 -640 427 -360 640 -640 426 -640 468 -640 402 -640 426 -640 425 -640 480 -640 480 -640 424 -640 425 -640 480 -640 579 -640 427 -640 480 -640 480 -640 427 -640 427 -640 480 -640 427 -640 480 -375 500 -640 426 -640 480 -640 480 -640 427 -291 500 -640 426 -640 480 -428 640 -640 426 -640 480 -427 640 -640 480 -480 640 -640 480 -480 640 -640 531 -640 480 -526 640 -640 427 -640 458 -480 640 -640 251 -480 640 -426 640 -640 427 -640 571 -640 427 -640 482 -640 480 -640 480 -427 640 -640 427 -640 571 -640 480 -640 427 -427 640 -640 417 -640 480 -640 480 -448 640 -640 427 -640 480 -631 640 -500 375 -640 425 -539 640 -609 640 -500 375 -478 640 -640 478 -500 375 -640 427 -427 640 -640 478 -640 438 -500 330 -640 426 -375 500 -375 500 -640 154 -480 640 -450 350 -640 480 -640 480 -640 426 -640 391 -640 425 -640 482 -640 480 -500 260 -434 500 -612 612 -500 334 -640 429 -480 640 -640 427 -500 375 -640 480 -640 480 -640 427 -640 480 -640 434 -500 335 -427 640 -640 410 -435 640 -500 375 -640 526 -640 400 -640 480 -640 480 -640 427 -640 411 -640 480 -480 640 -640 502 -640 480 -640 480 -500 375 -500 375 -357 500 -337 500 -640 480 -480 272 -640 478 -640 480 -640 480 -640 480 -428 640 -512 640 -640 428 -427 640 -640 427 -427 640 -640 427 -425 640 -640 428 -640 480 -544 640 -426 640 -640 427 -640 360 -500 375 -640 480 -480 249 -640 432 -640 424 -640 427 -640 480 -640 480 -640 426 -640 360 -640 480 -640 427 -640 427 -640 489 -366 500 -640 426 -640 427 -427 640 -640 426 -640 427 -640 425 -640 427 -500 332 -640 427 -640 480 -640 427 -240 360 -425 640 -640 480 -640 426 -640 427 -640 502 -640 480 -640 457 -640 480 -500 316 -480 640 -640 429 -640 480 -640 480 -640 480 -480 640 -640 461 -640 427 -640 512 -375 500 -429 640 -480 640 -640 414 -640 428 -427 640 -480 640 -518 640 -640 427 -640 480 -425 640 -640 427 -640 359 -640 480 -640 595 -640 480 -640 427 -640 480 -640 501 -500 375 -640 427 -640 415 -450 300 -640 480 -399 640 -640 269 -593 640 -640 480 -640 431 -640 428 -480 640 -480 640 -640 428 -640 426 -480 640 -636 640 -640 428 -426 640 -640 427 -640 427 -640 426 -640 360 -640 480 -500 332 -640 426 -640 427 -640 480 -500 375 -575 344 -640 426 -640 425 -612 612 -500 375 -640 480 -640 425 -640 480 -640 430 -425 640 -427 640 -429 640 -428 640 -640 480 -640 433 -426 640 -640 427 -640 640 -640 427 -640 480 -427 640 -500 375 -640 640 -640 427 -640 427 -640 480 -640 426 -640 479 -640 454 -480 640 -640 427 -640 480 -480 640 -640 480 -640 558 -640 478 -640 480 -480 640 -428 640 -375 500 -640 480 -500 375 -427 640 -424 640 -640 226 -640 480 -640 480 -640 427 -500 375 -480 640 -500 333 -640 427 -500 375 -612 612 -640 426 -426 640 -640 426 -640 360 -640 480 -640 427 -640 365 -500 375 -640 427 -640 427 -426 640 -640 480 -375 500 -640 480 -640 431 -640 480 -451 640 -640 480 -640 480 -640 480 -640 589 -640 425 -640 427 -575 640 -427 640 -640 427 -640 480 -480 640 -640 427 -640 478 -640 480 -640 426 -640 480 -640 429 -500 333 -427 640 -640 480 -426 640 -393 500 -640 426 -640 480 -640 428 -640 427 -500 374 -640 480 -640 393 -500 375 -640 480 -640 396 -640 480 -350 500 -640 497 -640 457 -640 360 -640 480 -640 480 -500 375 -640 480 -588 640 -640 480 -612 612 -640 480 -500 390 -640 503 -640 427 -640 425 -640 321 -640 427 -640 480 -640 360 -640 425 -640 435 -640 450 -640 428 -640 427 -375 500 -640 480 -640 427 -640 480 -500 443 -516 640 -640 427 -640 640 -640 480 -341 640 -640 499 -500 375 -640 640 -640 427 -640 402 -500 375 -428 640 -640 427 -426 640 -426 640 -500 333 -640 480 -640 409 -500 280 -640 427 -480 640 -640 427 -640 427 -640 412 -640 480 -640 480 -640 427 -640 428 -640 427 -427 640 -500 333 -500 338 -640 427 -640 480 -640 480 -640 478 -640 480 -640 480 -333 500 -427 640 -640 425 -640 439 -640 427 -640 480 -640 377 -640 480 -640 480 -640 480 -640 426 -640 429 -640 425 -640 480 -474 640 -640 426 -640 480 -640 425 -640 484 -640 480 -424 640 -500 375 -425 640 -480 640 -640 431 -640 427 -640 426 -640 480 -500 333 -610 390 -480 640 -640 428 -640 427 -640 428 -480 640 -640 480 -640 490 -511 640 -640 426 -500 375 -480 640 -640 640 -640 420 -427 640 -427 640 -640 480 -640 421 -640 480 -640 468 -500 333 -640 480 -640 424 -427 640 -640 424 -640 426 -640 428 -640 287 -480 640 -612 612 -640 480 -500 334 -449 640 -640 480 -640 428 -640 426 -640 433 -640 329 -604 453 -480 640 -640 427 -500 375 -640 360 -633 640 -500 332 -640 480 -640 478 -640 426 -640 425 -640 420 -640 634 -500 333 -375 500 -640 426 -640 507 -640 427 -640 480 -640 480 -640 427 -500 333 -640 526 -640 426 -480 640 -640 480 -640 426 -463 640 -640 427 -640 480 -640 491 -640 397 -640 493 -640 431 -480 640 -640 453 -414 640 -480 640 -640 480 -640 428 -375 500 -640 480 -640 428 -640 480 -640 457 -640 425 -640 426 -640 427 -640 441 -640 427 -640 426 -500 432 -640 427 -640 480 -500 375 -640 427 -411 640 -640 427 -640 480 -427 640 -544 640 -612 612 -426 640 -640 427 -640 434 -640 427 -640 444 -640 424 -640 481 -640 427 -500 375 -480 640 -500 376 -519 640 -640 425 -640 427 -464 640 -640 480 -612 612 -427 640 -480 640 -640 478 -640 480 -500 333 -640 480 -640 425 -640 480 -600 409 -640 480 -640 426 -640 480 -640 479 -640 500 -640 425 -640 426 -427 640 -640 480 -640 480 -424 640 -640 396 -640 427 -640 428 -640 480 -640 421 -426 640 -640 429 -480 640 -640 480 -640 480 -640 411 -427 640 -640 480 -640 478 -640 480 -640 424 -640 479 -426 640 -640 519 -640 480 -375 500 -640 480 -640 480 -640 426 -640 484 -500 374 -500 333 -463 500 -640 429 -640 427 -640 427 -640 427 -500 333 -640 427 -640 480 -480 640 -640 480 -612 612 -447 640 -640 480 -640 480 -427 640 -470 640 -640 478 -640 478 -640 480 -640 480 -640 480 -640 427 -640 554 -427 640 -509 640 -640 428 -640 426 -500 279 -640 480 -640 480 -478 640 -640 427 -640 480 -640 414 -640 480 -480 640 -640 479 -640 427 -612 612 -427 640 -640 427 -640 481 -640 427 -500 375 -375 500 -640 480 -640 480 -640 429 -640 359 -640 336 -640 427 -640 427 -640 426 -640 480 -480 319 -640 480 -640 480 -640 427 -480 640 -426 640 -500 333 -612 612 -640 360 -500 300 -550 640 -640 400 -640 360 -500 333 -427 640 -640 428 -593 640 -640 480 -640 444 -640 424 -640 488 -640 478 -480 640 -640 427 -640 426 -640 460 -640 511 -640 356 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -640 427 -640 480 -640 425 -600 400 -640 427 -374 500 -480 640 -640 427 -640 427 -640 475 -425 640 -640 480 -640 434 -640 640 -640 480 -640 319 -640 425 -640 303 -640 468 -612 612 -640 427 -640 427 -640 480 -514 640 -640 427 -500 375 -640 427 -640 480 -640 439 -640 427 -640 480 -640 429 -482 640 -478 640 -550 367 -640 480 -640 427 -640 427 -463 640 -640 480 -640 427 -640 427 -640 427 -640 478 -640 430 -640 427 -640 468 -640 480 -333 500 -640 427 -640 427 -640 425 -640 436 -640 427 -640 579 -640 513 -640 480 -640 480 -500 333 -480 640 -500 375 -375 500 -500 333 -640 426 -375 500 -640 480 -500 349 -640 427 -640 426 -640 480 -640 460 -612 612 -480 640 -612 612 -480 640 -640 424 -612 612 -640 406 -500 333 -480 640 -640 480 -640 427 -640 480 -640 394 -640 480 -640 451 -640 427 -640 426 -480 640 -640 400 -640 480 -640 426 -640 425 -428 640 -640 509 -640 480 -480 640 -480 640 -640 480 -640 427 -640 424 -640 400 -356 500 -480 640 -640 427 -640 426 -640 423 -640 360 -640 480 -640 431 -311 640 -640 478 -640 480 -640 480 -333 500 -640 480 -640 478 -640 478 -640 640 -427 640 -500 335 -480 640 -640 480 -640 480 -375 500 -640 425 -640 426 -640 426 -640 427 -640 427 -640 480 -640 480 -640 428 -640 480 -640 425 -640 480 -500 453 -640 427 -612 612 -375 500 -480 640 -480 640 -468 640 -640 480 -640 457 -428 640 -427 640 -640 480 -640 480 -640 427 -640 431 -640 480 -500 375 -500 332 -476 640 -640 481 -640 427 -640 480 -602 640 -640 480 -640 480 -481 640 -375 500 -640 427 -640 480 -610 640 -428 640 -640 425 -640 426 -640 480 -640 480 -612 612 -640 480 -640 290 -640 480 -640 426 -480 640 -640 424 -426 640 -640 480 -500 399 -640 480 -640 480 -423 640 -500 375 -640 424 -360 640 -640 480 -640 430 -500 375 -640 426 -640 424 -500 333 -640 427 -640 427 -640 396 -640 441 -480 640 -480 640 -640 407 -640 453 -640 480 -640 594 -427 640 -640 427 -640 478 -480 321 -640 480 -640 426 -612 612 -640 640 -640 389 -640 480 -640 511 -640 480 -640 480 -640 480 -480 640 -612 612 -640 360 -640 427 -640 427 -640 426 -640 427 -612 612 -501 640 -640 534 -358 500 -640 480 -640 493 -640 480 -640 427 -640 480 -427 640 -612 612 -640 429 -640 480 -478 640 -612 612 -640 484 -640 480 -640 427 -427 640 -428 640 -640 428 -640 480 -640 640 -455 640 -640 409 -640 480 -640 480 -500 332 -640 427 -400 500 -640 480 -640 426 -640 640 -500 369 -480 640 -640 424 -640 428 -480 640 -640 480 -427 640 -640 480 -640 480 -640 480 -640 427 -425 640 -640 495 -366 640 -640 427 -640 427 -640 427 -640 360 -640 429 -640 427 -640 427 -640 427 -640 480 -423 640 -640 480 -640 480 -640 422 -612 612 -640 480 -640 427 -640 484 -500 377 -640 449 -500 375 -500 333 -640 460 -427 640 -640 426 -640 432 -640 494 -640 426 -333 500 -640 427 -612 612 -640 480 -427 640 -640 360 -640 480 -500 314 -426 640 -640 480 -640 377 -640 480 -450 338 -640 428 -500 375 -640 426 -640 480 -640 510 -640 480 -640 480 -640 480 -640 479 -640 427 -640 480 -500 332 -640 512 -640 480 -640 426 -640 428 -640 480 -640 427 -640 576 -480 640 -640 480 -640 623 -640 480 -640 427 -500 274 -640 480 -426 640 -640 480 -640 480 -640 360 -640 360 -640 254 -427 640 -640 414 -640 423 -640 478 -640 438 -480 640 -640 480 -640 427 -640 480 -428 640 -480 640 -640 428 -428 640 -375 500 -500 338 -640 478 -640 473 -480 640 -640 425 -424 640 -500 500 -640 480 -640 480 -640 427 -480 640 -480 640 -640 425 -640 487 -500 375 -480 640 -640 427 -640 480 -640 480 -640 428 -480 640 -427 640 -640 480 -500 313 -640 427 -640 480 -640 427 -640 427 -426 640 -640 424 -375 500 -480 640 -640 480 -640 427 -500 334 -640 427 -640 427 -640 480 -612 612 -359 640 -640 480 -640 446 -640 427 -640 361 -640 427 -640 427 -612 612 -640 360 -480 640 -640 427 -640 480 -640 428 -640 427 -500 375 -640 426 -640 474 -612 612 -500 375 -640 480 -640 480 -500 375 -480 640 -640 396 -640 510 -640 426 -640 426 -500 333 -640 446 -480 640 -640 480 -640 426 -500 375 -640 480 -400 500 -500 332 -640 427 -612 612 -500 333 -640 431 -640 480 -500 375 -375 500 -430 640 -480 640 -640 480 -640 480 -500 459 -640 428 -443 640 -640 427 -480 640 -640 640 -427 640 -640 428 -640 425 -640 427 -640 427 -480 640 -640 360 -640 480 -457 640 -640 480 -500 375 -640 480 -427 640 -640 427 -640 480 -640 480 -480 640 -640 480 -640 427 -500 400 -640 427 -640 480 -640 425 -640 507 -640 382 -640 427 -640 426 -500 383 -640 347 -426 640 -640 426 -320 240 -640 426 -640 426 -640 421 -640 425 -375 500 -480 640 -640 426 -500 375 -500 333 -427 640 -458 640 -640 534 -375 500 -640 429 -640 480 -640 360 -640 480 -640 457 -500 333 -640 426 -640 427 -480 640 -640 426 -500 333 -640 376 -640 480 -640 480 -640 316 -640 440 -640 381 -640 427 -640 428 -640 480 -640 427 -609 640 -500 375 -640 426 -500 402 -640 427 -240 360 -640 480 -500 334 -640 425 -640 478 -640 638 -640 427 -500 375 -640 480 -640 425 -480 640 -640 425 -640 480 -612 612 -640 480 -640 427 -640 480 -640 480 -640 427 -640 427 -500 400 -480 640 -480 640 -640 314 -640 425 -640 427 -640 480 -500 332 -640 480 -640 427 -480 640 -640 425 -410 640 -640 427 -640 342 -640 480 -600 600 -640 427 -640 360 -640 640 -640 480 -500 336 -640 480 -640 425 -640 427 -640 428 -640 238 -640 427 -640 429 -480 640 -640 428 -640 453 -640 426 -640 428 -640 426 -640 424 -640 426 -640 403 -375 500 -478 640 -640 480 -640 480 -640 427 -640 480 -500 375 -500 400 -333 500 -500 281 -500 333 -427 640 -426 640 -480 640 -274 640 -640 480 -500 383 -640 427 -640 480 -640 383 -500 375 -500 333 -640 480 -640 433 -640 360 -500 333 -640 480 -640 427 -640 424 -500 375 -640 480 -427 640 -418 640 -640 480 -478 640 -640 553 -640 426 -640 424 -640 360 -640 480 -359 640 -427 640 -640 480 -480 640 -331 500 -427 640 -640 427 -640 480 -375 500 -500 375 -640 480 -500 375 -640 427 -640 424 -612 612 -500 332 -640 480 -640 426 -640 426 -500 345 -640 427 -640 425 -640 427 -375 500 -598 640 -640 480 -356 500 -640 480 -640 426 -640 478 -208 160 -500 481 -640 426 -640 426 -640 426 -640 480 -640 424 -480 640 -640 427 -500 294 -640 427 -640 427 -640 436 -640 402 -640 457 -640 480 -640 428 -640 428 -398 640 -426 640 -640 426 -428 640 -426 640 -500 333 -640 427 -640 480 -428 640 -480 640 -640 427 -640 427 -456 640 -501 640 -640 408 -640 480 -640 424 -640 480 -480 640 -640 480 -640 427 -480 640 -640 480 -500 408 -640 429 -480 640 -640 640 -612 612 -640 380 -640 426 -435 640 -640 503 -612 612 -640 480 -640 425 -640 480 -640 480 -640 480 -640 427 -640 426 -640 480 -443 500 -640 480 -640 480 -640 480 -480 640 -640 421 -640 640 -640 427 -640 426 -500 452 -500 333 -640 448 -640 480 -480 640 -640 427 -480 640 -640 480 -427 640 -478 640 -640 427 -640 422 -640 480 -640 424 -640 204 -640 480 -333 500 -480 640 -640 480 -640 425 -640 480 -640 437 -640 480 -462 640 -428 640 -640 480 -500 313 -500 476 -640 428 -640 489 -640 524 -640 426 -640 426 -500 375 -640 302 -640 510 -640 426 -640 360 -640 424 -640 432 -426 640 -488 640 -640 427 -640 376 -450 350 -640 480 -640 480 -500 319 -640 480 -640 359 -375 500 -640 480 -640 480 -640 427 -640 427 -333 500 -640 427 -640 406 -375 500 -427 640 -640 400 -565 584 -640 480 -640 640 -640 427 -335 500 -500 375 -640 448 -640 479 -640 480 -375 500 -640 494 -447 333 -640 457 -334 500 -640 640 -612 612 -640 528 -425 640 -500 375 -480 640 -640 480 -640 640 -640 424 -427 640 -480 640 -640 427 -640 639 -640 480 -640 480 -500 375 -480 640 -427 640 -640 428 -640 426 -640 427 -640 426 -640 424 -480 640 -640 480 -500 333 -383 640 -600 457 -640 216 -640 480 -500 375 -640 480 -640 427 -640 425 -640 480 -427 640 -640 427 -368 640 -640 480 -640 463 -640 425 -640 480 -640 426 -500 364 -640 427 -480 640 -640 483 -600 450 -636 640 -640 480 -640 640 -640 427 -480 640 -375 500 -640 480 -640 427 -640 439 -487 500 -640 425 -640 480 -640 480 -640 480 -640 480 -640 480 -640 356 -480 640 -640 480 -640 360 -640 427 -640 480 -500 333 -500 332 -640 427 -640 427 -640 480 -640 424 -480 640 -640 480 -640 427 -640 480 -640 427 -640 480 -480 640 -640 480 -640 480 -640 425 -433 640 -499 640 -640 480 -640 480 -640 480 -479 640 -640 427 -640 478 -640 429 -500 334 -640 480 -480 640 -640 480 -640 400 -640 427 -640 427 -480 640 -500 375 -640 357 -640 384 -480 640 -640 480 -612 612 -640 427 -640 360 -640 424 -480 640 -500 375 -375 500 -640 480 -480 640 -500 332 -640 640 -640 451 -640 427 -640 480 -640 480 -640 511 -500 357 -640 303 -480 640 -640 480 -500 375 -640 480 -640 390 -564 640 -424 640 -426 640 -640 423 -500 333 -480 640 -640 427 -359 640 -480 640 -640 411 -640 428 -500 375 -640 459 -640 480 -640 480 -640 480 -500 375 -640 427 -640 360 -480 640 -480 640 -640 480 -640 480 -640 427 -640 640 -612 612 -640 427 -425 640 -640 344 -640 427 -640 480 -480 640 -640 478 -640 480 -640 480 -640 429 -375 500 -640 431 -640 426 -480 640 -640 394 -640 427 -640 480 -640 480 -640 536 -640 426 -427 640 -500 404 -500 400 -500 375 -640 427 -640 478 -480 640 -640 479 -640 360 -640 480 -640 427 -612 612 -640 427 -500 375 -640 427 -640 420 -640 427 -640 480 -640 427 -640 425 -640 482 -494 289 -640 425 -640 640 -640 520 -427 640 -640 160 -640 470 -640 480 -640 480 -640 480 -500 375 -640 480 -500 375 -640 401 -500 375 -612 612 -640 360 -640 480 -640 480 -375 500 -640 434 -640 480 -640 480 -640 557 -640 640 -424 640 -427 640 -640 428 -640 411 -427 640 -480 640 -640 427 -640 480 -640 481 -640 480 -640 480 -640 426 -640 480 -640 526 -640 489 -500 375 -640 480 -640 480 -640 426 -640 480 -640 429 -612 612 -427 640 -640 444 -640 480 -640 480 -500 333 -640 396 -400 372 -640 480 -480 640 -640 480 -640 426 -640 480 -640 480 -640 360 -424 640 -427 640 -500 333 -426 640 -500 375 -640 406 -640 429 -640 427 -604 640 -424 640 -640 480 -500 375 -500 375 -640 546 -480 640 -640 406 -375 500 -640 427 -640 480 -640 425 -640 427 -500 375 -357 500 -640 480 -640 480 -640 425 -375 500 -500 400 -640 360 -640 480 -640 423 -640 423 -480 640 -640 480 -600 510 -434 640 -640 427 -640 435 -640 427 -640 480 -640 424 -640 427 -500 375 -640 480 -640 428 -640 427 -612 612 -640 480 -640 434 -640 480 -511 640 -640 427 -333 500 -640 413 -640 640 -640 360 -640 480 -640 427 -640 480 -640 480 -640 426 -640 480 -640 480 -640 425 -640 429 -240 160 -640 480 -612 612 -640 426 -640 360 -480 640 -640 480 -537 640 -640 480 -480 640 -640 426 -640 457 -640 427 -640 516 -640 427 -640 640 -640 480 -640 480 -640 427 -640 427 -640 453 -480 640 -640 428 -480 640 -640 363 -640 480 -541 640 -640 480 -612 612 -326 500 -500 400 -640 640 -640 480 -500 375 -640 427 -640 426 -500 375 -640 424 -375 500 -257 362 -480 640 -480 640 -640 480 -640 360 -640 480 -500 375 -640 420 -640 427 -640 298 -640 480 -640 401 -640 475 -640 427 -640 480 -640 426 -640 427 -610 640 -640 498 -480 640 -640 480 -408 640 -640 427 -500 500 -640 427 -640 480 -480 640 -640 640 -640 640 -500 375 -375 500 -640 480 -500 333 -640 480 -427 640 -640 411 -640 426 -640 426 -640 480 -640 480 -500 346 -640 427 -640 376 -640 360 -640 425 -480 640 -427 640 -500 438 -480 640 -640 426 -640 480 -640 292 -640 428 -640 480 -333 500 -500 462 -480 640 -640 451 -640 427 -468 640 -640 429 -640 480 -500 500 -640 480 -640 427 -427 640 -640 427 -640 427 -640 480 -640 480 -375 500 -640 480 -640 427 -640 340 -640 427 -480 640 -375 500 -500 423 -640 425 -640 554 -500 375 -480 640 -640 505 -640 199 -640 426 -640 427 -640 480 -640 480 -333 500 -640 411 -640 427 -640 480 -500 375 -640 424 -426 640 -480 640 -640 424 -640 480 -640 426 -640 320 -640 425 -500 333 -480 640 -640 480 -375 500 -640 480 -500 400 -343 640 -427 640 -640 480 -640 469 -640 480 -480 640 -640 339 -640 427 -640 427 -513 640 -640 394 -640 416 -640 234 -640 480 -640 427 -640 428 -640 426 -500 375 -500 334 -427 640 -640 480 -640 427 -640 480 -428 640 -500 333 -427 640 -492 500 -640 480 -423 640 -406 640 -640 480 -640 362 -480 640 -640 480 -640 426 -640 480 -640 444 -480 640 -513 342 -412 640 -427 640 -640 480 -640 359 -612 612 -640 480 -640 480 -480 360 -640 425 -640 480 -640 480 -640 598 -640 480 -480 640 -640 480 -640 426 -640 480 -500 374 -640 457 -640 426 -500 333 -500 377 -375 500 -500 375 -640 492 -640 311 -427 640 -640 427 -640 426 -633 640 -640 483 -640 386 -640 427 -640 453 -375 500 -640 320 -640 424 -640 427 -338 500 -640 427 -640 480 -640 480 -640 384 -640 480 -640 426 -375 500 -426 640 -640 480 -640 480 -640 427 -640 427 -640 428 -640 480 -640 426 -640 640 -640 426 -640 480 -640 480 -640 480 -500 345 -640 480 -640 341 -553 640 -480 640 -480 640 -320 240 -500 375 -500 375 -640 482 -640 427 -640 450 -640 480 -640 480 -478 640 -612 612 -640 425 -426 640 -623 640 -640 426 -640 480 -640 451 -640 336 -640 480 -427 640 -640 427 -640 480 -640 480 -640 427 -640 640 -640 512 -640 468 -640 480 -640 480 -640 480 -500 333 -480 640 -480 640 -425 640 -612 612 -640 480 -416 640 -640 457 -640 640 -427 640 -640 428 -480 640 -433 640 -640 425 -640 428 -640 428 -640 373 -500 375 -640 640 -606 640 -457 640 -640 480 -640 480 -640 480 -640 359 -640 512 -640 427 -480 640 -640 476 -640 360 -640 428 -480 640 -640 480 -640 503 -640 427 -640 427 -640 427 -640 488 -500 362 -640 482 -500 375 -640 581 -640 427 -612 612 -640 480 -621 640 -640 480 -640 427 -512 640 -640 425 -640 479 -480 640 -640 640 -640 427 -375 500 -640 480 -427 640 -426 640 -640 427 -640 480 -640 427 -640 424 -500 281 -640 260 -640 457 -480 640 -640 421 -640 480 -481 640 -500 375 -640 640 -428 640 -500 333 -640 427 -480 640 -640 426 -427 640 -500 375 -427 640 -432 288 -640 426 -640 480 -640 427 -375 500 -640 480 -640 425 -640 480 -640 453 -479 640 -640 479 -640 427 -640 352 -640 394 -480 640 -640 640 -640 480 -640 417 -640 494 -640 427 -640 479 -500 375 -640 480 -640 480 -640 426 -426 640 -640 427 -640 480 -640 424 -480 640 -479 640 -640 480 -640 629 -640 478 -640 480 -640 427 -640 430 -640 480 -640 480 -640 480 -640 427 -480 640 -640 480 -480 640 -427 640 -640 420 -640 425 -501 640 -546 640 -640 486 -640 480 -612 612 -640 235 -640 480 -640 429 -640 480 -428 640 -640 480 -640 480 -640 428 -612 612 -404 640 -640 480 -640 427 -640 408 -480 640 -427 640 -500 375 -537 427 -640 426 -360 480 -640 425 -640 480 -640 426 -640 428 -333 500 -334 500 -640 427 -360 480 -640 318 -480 640 -480 640 -640 429 -640 480 -500 243 -500 375 -480 640 -480 640 -640 480 -640 480 -640 456 -640 427 -480 500 -640 426 -640 480 -640 512 -479 640 -640 480 -640 482 -500 333 -640 429 -640 460 -640 428 -640 425 -640 640 -612 612 -640 480 -640 427 -640 427 -500 375 -640 480 -640 427 -427 640 -640 480 -640 480 -640 480 -640 427 -500 499 -640 505 -640 423 -640 480 -640 424 -640 482 -640 427 -640 480 -640 424 -640 427 -480 640 -640 480 -640 541 -480 640 -480 640 -375 500 -428 640 -427 640 -640 480 -500 376 -512 640 -375 500 -640 427 -210 168 -480 640 -640 481 -640 480 -640 427 -370 640 -640 390 -640 412 -640 480 -640 426 -640 425 -375 500 -500 375 -640 428 -640 640 -408 640 -640 427 -640 428 -640 480 -640 427 -500 375 -640 640 -640 427 -640 480 -640 480 -640 426 -499 500 -640 426 -500 332 -640 480 -640 427 -640 480 -640 360 -640 478 -341 500 -640 471 -640 480 -640 427 -615 346 -640 640 -640 480 -640 480 -640 358 -640 425 -640 480 -640 630 -640 427 -640 480 -640 427 -500 335 -531 640 -640 473 -640 427 -640 480 -500 375 -640 480 -640 480 -509 640 -640 431 -640 424 -640 480 -640 480 -640 480 -426 640 -500 375 -480 640 -500 327 -640 480 -500 375 -640 425 -427 640 -414 640 -639 480 -634 640 -612 612 -640 480 -640 480 -640 427 -640 480 -480 640 -640 423 -480 640 -640 426 -640 428 -640 480 -640 480 -640 459 -640 480 -427 640 -480 640 -640 427 -480 640 -640 427 -640 480 -640 480 -640 480 -640 640 -375 500 -640 480 -640 427 -640 480 -640 425 -612 612 -427 640 -483 640 -640 426 -640 419 -640 480 -428 640 -500 400 -640 480 -640 348 -427 640 -640 361 -426 640 -640 436 -333 500 -152 228 -612 612 -462 640 -640 478 -640 480 -640 480 -640 401 -640 427 -640 427 -640 427 -427 640 -640 640 -500 375 -407 640 -640 427 -343 336 -640 480 -500 352 -640 480 -640 428 -640 480 -640 427 -640 425 -354 640 -640 429 -333 500 -298 450 -640 420 -640 480 -427 640 -640 425 -640 427 -480 640 -480 640 -500 331 -500 334 -640 480 -375 500 -640 480 -640 428 -612 612 -640 640 -640 424 -640 480 -640 480 -421 640 -640 480 -390 640 -640 480 -439 640 -640 427 -427 640 -640 480 -500 247 -500 333 -480 640 -640 368 -640 428 -426 640 -480 640 -640 426 -640 403 -640 427 -640 427 -640 480 -640 428 -321 500 -500 333 -640 480 -640 480 -640 480 -413 640 -640 427 -640 427 -334 500 -467 640 -500 375 -480 640 -480 640 -433 640 -500 375 -480 640 -640 424 -640 480 -640 480 -640 480 -375 500 -640 480 -640 428 -640 480 -640 426 -386 640 -640 429 -375 500 -640 426 -640 426 -427 640 -640 480 -640 349 -640 480 -640 480 -640 424 -375 500 -640 374 -640 480 -334 500 -640 480 -640 451 -480 640 -640 430 -640 427 -500 375 -478 640 -520 373 -640 478 -640 427 -612 612 -640 441 -480 640 -640 427 -640 426 -480 640 -640 429 -480 640 -612 612 -640 480 -640 427 -640 426 -480 640 -640 525 -375 500 -640 480 -640 411 -640 428 -640 428 -640 427 -640 427 -535 640 -375 500 -640 427 -640 428 -640 426 -480 640 -640 480 -612 612 -484 500 -640 426 -640 425 -640 427 -500 371 -500 320 -640 427 -480 640 -640 480 -640 424 -640 480 -640 427 -640 301 -500 333 -640 424 -640 480 -427 640 -612 612 -332 500 -640 439 -500 415 -427 640 -640 513 -640 427 -640 426 -640 480 -324 640 -640 480 -640 480 -375 500 -640 427 -640 480 -640 480 -612 612 -640 543 -640 480 -480 640 -640 446 -640 480 -640 480 -473 640 -640 421 -640 427 -640 425 -640 427 -640 427 -640 465 -640 395 -640 446 -640 405 -640 425 -640 375 -640 425 -640 327 -640 480 -427 640 -640 480 -640 427 -500 375 -640 480 -640 480 -428 640 -640 426 -640 480 -640 427 -640 514 -500 335 -640 445 -640 360 -375 500 -640 480 -640 480 -640 480 -640 425 -432 640 -640 425 -640 512 -640 424 -640 427 -640 427 -640 480 -640 480 -640 427 -640 426 -480 640 -640 480 -640 480 -478 640 -640 480 -640 480 -500 333 -500 375 -640 427 -640 426 -500 373 -486 640 -640 496 -640 480 -640 480 -640 480 -640 426 -640 428 -640 427 -640 425 -480 640 -500 375 -640 394 -640 427 -640 428 -640 480 -478 640 -640 480 -640 480 -480 640 -640 474 -640 406 -640 640 -375 500 -640 428 -640 480 -640 480 -500 333 -640 427 -478 640 -640 427 -640 480 -500 375 -234 500 -640 198 -500 375 -640 480 -640 444 -500 375 -480 640 -640 427 -640 640 -640 449 -640 426 -640 480 -500 375 -356 500 -427 640 -375 500 -487 640 -640 427 -640 640 -640 427 -640 436 -640 427 -640 427 -640 421 -640 360 -426 640 -640 430 -640 377 -640 480 -640 480 -640 480 -500 375 -640 480 -640 426 -640 426 -640 481 -640 480 -640 427 -640 444 -640 480 -640 480 -366 640 -500 332 -640 426 -640 480 -478 640 -480 640 -640 426 -427 640 -640 640 -640 427 -480 640 -640 424 -640 430 -612 612 -427 640 -640 640 -612 612 -640 427 -640 480 -480 640 -640 480 -640 427 -640 480 -640 424 -640 480 -640 480 -640 480 -640 480 -425 640 -640 514 -640 427 -640 480 -640 480 -640 426 -500 375 -480 640 -640 425 -500 375 -640 480 -640 480 -480 640 -427 640 -640 480 -500 375 -640 551 -640 427 -640 480 -640 456 -640 480 -335 500 -500 375 -427 640 -480 640 -640 427 -500 375 -640 480 -640 480 -480 640 -500 341 -443 640 -640 395 -640 173 -480 640 -640 448 -640 427 -548 640 -640 480 -640 480 -426 640 -480 640 -480 640 -500 331 -640 427 -640 480 -447 640 -640 480 -640 350 -640 484 -500 338 -640 480 -480 640 -640 425 -500 375 -640 483 -640 359 -640 426 -335 500 -640 426 -640 480 -480 640 -640 427 -640 478 -640 428 -640 480 -640 503 -480 640 -480 640 -640 481 -640 480 -640 238 -640 480 -640 427 -500 274 -640 622 -640 480 -640 427 -375 500 -640 480 -497 640 -640 640 -640 452 -640 426 -500 401 -640 473 -640 424 -640 424 -500 333 -480 640 -640 475 -640 480 -500 400 -640 427 -640 480 -500 347 -640 426 -640 422 -640 480 -640 427 -640 427 -640 425 -433 640 -640 524 -640 453 -640 480 -640 429 -640 480 -500 374 -500 375 -640 427 -426 640 -640 428 -640 428 -640 351 -640 459 -640 480 -640 480 -640 454 -477 640 -500 334 -375 500 -640 426 -640 427 -640 480 -426 640 -640 427 -640 480 -425 640 -640 480 -500 375 -476 640 -640 426 -640 427 -640 480 -640 480 -640 480 -640 468 -640 640 -640 480 -640 426 -640 425 -559 640 -640 398 -640 640 -640 427 -612 612 -640 480 -480 640 -640 480 -612 612 -640 480 -500 332 -640 359 -640 427 -360 640 -640 640 -423 640 -500 334 -640 427 -427 640 -640 427 -640 480 -640 480 -427 640 -480 640 -640 442 -640 480 -640 480 -640 426 -612 612 -640 426 -427 640 -640 470 -427 640 -419 640 -480 640 -640 427 -500 375 -485 640 -640 480 -640 453 -640 480 -640 478 -640 427 -640 480 -640 480 -612 612 -640 480 -425 640 -640 428 -640 427 -640 480 -640 456 -576 640 -640 427 -640 427 -640 480 -640 425 -640 439 -419 640 -480 640 -375 500 -480 640 -640 427 -427 640 -480 360 -500 330 -640 360 -569 640 -640 428 -640 485 -640 496 -640 427 -640 424 -640 594 -640 427 -640 480 -480 640 -640 480 -500 375 -427 640 -640 640 -500 388 -640 428 -640 426 -640 436 -427 640 -500 375 -375 500 -640 480 -640 427 -640 427 -640 480 -500 333 -640 457 -640 426 -640 425 -480 640 -380 640 -640 327 -500 335 -640 480 -640 427 -640 480 -640 425 -434 640 -640 480 -640 480 -640 427 -450 339 -478 640 -480 640 -640 480 -482 640 -640 424 -640 426 -640 512 -612 612 -640 478 -640 480 -640 427 -640 427 -640 427 -640 480 -612 612 -640 480 -500 333 -434 500 -640 446 -640 482 -640 480 -640 480 -640 478 -500 375 -640 427 -640 427 -500 334 -425 640 -640 427 -640 427 -478 640 -640 461 -640 477 -640 425 -640 427 -500 400 -640 389 -640 426 -424 640 -640 480 -640 361 -640 478 -333 500 -640 608 -640 480 -640 480 -375 500 -640 311 -640 427 -640 427 -640 393 -640 480 -500 333 -640 639 -640 376 -640 414 -490 640 -485 640 -640 344 -640 480 -640 427 -640 466 -640 427 -480 640 -640 613 -640 480 -640 426 -640 429 -640 259 -500 333 -612 612 -640 640 -480 640 -640 480 -640 480 -640 427 -640 458 -480 640 -423 640 -500 375 -640 480 -640 480 -500 333 -480 640 -640 480 -443 640 -640 428 -640 427 -400 640 -640 480 -640 427 -500 500 -640 480 -500 333 -600 600 -640 427 -640 320 -480 640 -640 480 -640 406 -427 640 -640 427 -640 419 -640 480 -640 427 -640 429 -640 640 -640 427 -500 477 -640 480 -640 480 -640 480 -612 612 -640 429 -480 640 -640 480 -640 458 -640 426 -500 440 -640 360 -500 334 -640 480 -640 427 -640 480 -640 427 -640 428 -500 375 -640 427 -640 426 -332 500 -427 640 -427 640 -500 375 -640 427 -640 480 -640 518 -640 480 -640 427 -480 640 -640 640 -640 425 -640 427 -481 640 -640 359 -640 480 -640 360 -640 428 -640 480 -640 419 -640 480 -640 480 -640 480 -640 480 -640 426 -640 424 -640 321 -640 478 -640 482 -500 375 -640 480 -640 480 -506 640 -640 480 -640 469 -640 377 -640 359 -640 480 -500 335 -640 478 -640 427 -640 287 -640 480 -375 500 -640 480 -428 640 -456 640 -480 640 -640 493 -640 481 -480 640 -640 480 -640 428 -375 500 -640 480 -640 371 -640 427 -500 375 -427 640 -640 480 -500 375 -640 337 -468 640 -426 640 -640 484 -480 640 -640 427 -640 425 -500 424 -640 480 -640 427 -640 427 -640 427 -640 480 -640 610 -640 480 -640 480 -640 426 -463 640 -640 429 -640 427 -640 522 -640 480 -640 428 -640 480 -480 640 -640 427 -424 640 -480 640 -640 457 -500 367 -640 448 -496 640 -500 375 -480 640 -640 425 -640 425 -640 480 -500 334 -640 369 -427 640 -640 480 -375 500 -640 480 -640 480 -640 411 -333 500 -640 512 -640 427 -640 474 -640 480 -640 427 -640 478 -427 640 -640 358 -640 640 -640 472 -567 378 -640 404 -640 427 -480 640 -640 428 -640 427 -640 480 -427 640 -640 433 -640 638 -480 640 -640 470 -640 591 -640 427 -640 427 -612 612 -550 365 -640 640 -527 640 -640 427 -640 480 -640 480 -640 480 -640 640 -640 459 -480 640 -480 640 -640 427 -640 480 -640 480 -640 480 -640 427 -427 640 -640 427 -333 500 -640 480 -640 426 -640 426 -640 427 -426 640 -640 228 -612 612 -640 426 -612 612 -640 426 -640 640 -640 523 -480 640 -479 640 -640 428 -640 480 -500 375 -640 414 -500 375 -640 480 -480 640 -414 278 -424 640 -640 480 -480 640 -500 375 -612 612 -640 544 -427 640 -640 427 -640 480 -500 331 -640 429 -640 427 -640 480 -640 426 -640 426 -640 480 -640 480 -366 640 -640 427 -640 480 -640 480 -427 640 -640 589 -500 375 -640 426 -640 568 -640 395 -640 427 -640 426 -640 480 -640 480 -640 480 -640 360 -640 561 -640 480 -640 427 -640 480 -640 480 -500 375 -427 640 -425 640 -640 459 -523 640 -488 640 -478 640 -640 426 -500 333 -480 640 -612 612 -640 425 -480 640 -640 425 -640 427 -500 375 -640 552 -640 480 -434 640 -500 334 -500 375 -515 640 -640 480 -425 640 -640 198 -640 426 -640 427 -640 440 -640 427 -640 427 -500 375 -640 402 -500 500 -640 480 -640 346 -500 333 -640 458 -480 640 -640 480 -640 426 -500 375 -640 480 -427 640 -640 425 -480 640 -500 441 -640 480 -428 640 -640 480 -612 612 -640 480 -640 427 -640 501 -500 375 -640 480 -640 427 -441 640 -424 640 -427 640 -640 427 -640 480 -480 320 -500 379 -552 640 -640 426 -640 346 -640 427 -640 512 -480 640 -640 512 -612 612 -640 480 -500 375 -640 640 -375 500 -640 426 -640 359 -612 612 -612 612 -640 428 -640 480 -640 427 -640 428 -640 428 -640 263 -375 500 -640 427 -252 360 -640 425 -640 424 -500 331 -640 480 -500 331 -640 480 -640 480 -480 640 -640 428 -427 640 -640 427 -417 500 -640 480 -426 640 -640 427 -383 640 -480 640 -640 480 -640 512 -640 431 -612 612 -450 600 -640 426 -640 502 -640 480 -640 457 -640 427 -640 424 -640 480 -640 480 -640 427 -378 640 -612 612 -640 426 -640 480 -418 640 -640 426 -333 500 -640 480 -640 480 -640 432 -500 375 -500 347 -640 427 -640 451 -640 480 -640 480 -640 266 -640 426 -640 360 -500 374 -427 640 -640 427 -480 640 -640 431 -500 333 -640 480 -375 500 -640 480 -640 482 -640 480 -640 426 -640 478 -640 480 -640 424 -640 480 -640 427 -640 480 -425 640 -640 427 -640 480 -640 480 -640 424 -480 640 -640 427 -640 480 -426 640 -640 426 -640 480 -640 427 -480 640 -480 640 -480 640 -640 478 -640 480 -640 480 -640 480 -640 480 -640 480 -640 426 -640 480 -500 333 -640 427 -640 427 -500 333 -640 427 -480 640 -480 640 -640 480 -428 640 -640 480 -500 334 -640 347 -640 442 -640 480 -640 480 -640 427 -640 411 -425 640 -640 427 -480 640 -640 427 -640 480 -640 480 -500 387 -640 480 -480 640 -500 332 -453 500 -480 640 -640 480 -640 427 -500 334 -640 427 -500 500 -640 480 -500 375 -640 428 -640 640 -640 424 -500 376 -427 640 -640 427 -640 427 -640 427 -640 480 -640 480 -500 375 -640 422 -640 486 -640 428 -500 322 -500 375 -640 480 -640 513 -427 640 -640 425 -640 480 -640 450 -640 427 -640 480 -640 480 -640 480 -500 332 -640 421 -640 480 -640 426 -640 427 -640 424 -640 428 -640 480 -640 480 -640 480 -427 640 -640 640 -640 480 -640 359 -640 448 -374 500 -425 640 -259 194 -640 428 -640 427 -640 534 -640 480 -640 480 -640 346 -500 375 -425 640 -426 640 -640 480 -640 480 -640 480 -400 640 -640 480 -640 427 -640 427 -419 640 -640 427 -640 614 -500 375 -640 457 -640 428 -640 427 -500 375 -640 483 -500 375 -640 426 -640 388 -640 426 -640 480 -500 341 -640 427 -640 480 -640 425 -500 375 -640 480 -640 427 -640 355 -640 480 -427 640 -500 375 -640 480 -500 400 -401 640 -640 480 -640 426 -640 427 -640 427 -640 551 -640 480 -640 428 -428 640 -427 640 -640 427 -640 480 -426 640 -459 640 -480 640 -640 480 -640 424 -640 480 -333 500 -482 640 -640 480 -640 480 -640 480 -640 360 -640 426 -512 640 -427 640 -375 500 -375 500 -640 480 -640 427 -640 599 -640 454 -456 640 -332 500 -640 426 -640 436 -426 640 -640 480 -480 640 -640 480 -612 612 -640 480 -427 640 -500 334 -640 480 -640 480 -640 480 -640 480 -640 445 -500 375 -640 427 -640 480 -500 375 -640 445 -443 640 -480 640 -640 428 -640 427 -640 426 -512 640 -640 427 -640 374 -500 332 -375 500 -640 480 -640 480 -500 383 -640 427 -500 333 -500 375 -640 535 -640 426 -640 480 -640 425 -640 480 -420 640 -427 640 -480 640 -640 426 -426 640 -500 375 -640 480 -500 333 -480 640 -640 480 -425 640 -640 480 -640 480 -640 422 -640 425 -640 480 -612 612 -500 333 -640 639 -640 429 -500 375 -427 640 -453 640 -500 261 -500 333 -640 478 -425 640 -612 612 -428 640 -640 426 -480 640 -640 331 -640 510 -500 333 -640 427 -640 427 -640 480 -640 376 -640 478 -500 375 -640 427 -640 409 -481 640 -431 640 -640 480 -640 480 -640 480 -426 640 -640 436 -640 534 -640 385 -640 426 -640 480 -367 415 -375 500 -640 430 -640 480 -640 446 -640 480 -640 438 -640 428 -640 480 -500 375 -640 427 -640 361 -640 427 -640 468 -640 480 -427 640 -640 480 -640 425 -604 402 -640 426 -374 500 -640 318 -470 640 -640 359 -640 427 -640 540 -640 427 -457 640 -640 480 -640 360 -640 478 -640 480 -640 426 -450 600 -500 442 -640 640 -640 445 -640 480 -640 425 -640 514 -640 478 -426 640 -640 424 -640 425 -360 640 -640 306 -640 512 -640 480 -500 375 -478 640 -640 441 -396 500 -640 375 -594 445 -640 427 -640 480 -640 425 -640 480 -640 427 -640 426 -640 480 -640 426 -640 426 -640 427 -500 375 -480 640 -640 359 -612 612 -640 480 -640 480 -640 480 -500 310 -612 612 -500 471 -640 427 -640 427 -640 372 -640 427 -640 412 -481 640 -640 293 -500 334 -640 424 -500 375 -480 640 -640 512 -480 640 -612 612 -640 468 -640 424 -333 500 -612 612 -424 640 -500 375 -640 480 -500 333 -425 640 -640 426 -640 480 -480 640 -640 427 -480 640 -640 427 -640 480 -640 384 -640 439 -480 640 -426 640 -612 612 -640 303 -640 480 -640 384 -640 480 -640 427 -500 375 -640 480 -640 427 -640 480 -640 491 -640 430 -640 480 -379 640 -640 480 -480 640 -500 375 -640 530 -640 427 -640 456 -515 640 -640 480 -500 334 -640 480 -640 437 -640 480 -480 640 -640 480 -356 500 -640 478 -640 427 -640 427 -428 640 -480 640 -480 640 -480 640 -640 480 -640 425 -640 408 -640 309 -640 226 -359 640 -480 640 -640 427 -640 471 -480 640 -500 375 -640 426 -640 425 -640 498 -640 360 -480 640 -437 500 -640 427 -375 500 -500 344 -480 640 -640 473 -640 426 -640 480 -640 431 -640 273 -640 427 -640 427 -640 427 -500 375 -640 480 -480 640 -640 427 -640 427 -640 639 -500 375 -526 640 -469 640 -500 345 -640 480 -612 612 -480 640 -480 640 -640 534 -320 320 -333 500 -336 500 -640 426 -640 441 -640 612 -640 425 -500 375 -640 480 -640 480 -471 640 -480 640 -500 375 -640 480 -640 480 -640 480 -640 480 -640 480 -341 640 -640 480 -480 640 -480 640 -640 426 -640 448 -612 612 -353 500 -480 640 -499 640 -640 373 -640 393 -640 444 -640 427 -640 360 -500 348 -500 375 -640 480 -640 640 -640 480 -640 480 -500 375 -441 640 -493 640 -640 427 -640 480 -500 333 -640 481 -640 372 -640 453 -640 427 -640 480 -500 357 -640 427 -640 480 -640 327 -612 612 -424 640 -640 359 -640 472 -640 428 -640 480 -640 320 -425 640 -640 480 -612 612 -480 640 -480 640 -375 500 -480 640 -427 640 -640 427 -425 319 -640 480 -640 427 -640 425 -640 480 -640 425 -640 425 -640 427 -640 427 -500 334 -640 426 -640 427 -640 480 -640 480 -640 444 -480 640 -640 554 -640 480 -612 612 -640 428 -500 375 -640 480 -640 427 -640 428 -500 354 -427 640 -500 333 -414 640 -480 640 -640 488 -640 480 -594 640 -612 612 -640 361 -640 480 -467 640 -640 526 -640 480 -500 491 -640 480 -400 640 -640 569 -480 640 -640 426 -640 480 -640 427 -480 640 -640 480 -500 375 -640 426 -427 640 -640 427 -500 375 -640 480 -480 640 -640 426 -375 500 -640 480 -640 369 -640 428 -426 640 -480 640 -640 426 -640 480 -480 640 -425 640 -640 425 -427 640 -640 435 -640 507 -640 480 -500 333 -640 426 -640 473 -612 612 -640 427 -640 427 -500 375 -640 640 -375 500 -640 480 -640 428 -427 640 -639 640 -480 640 -640 423 -640 391 -640 480 -640 480 -640 389 -478 640 -640 427 -612 612 -463 640 -640 480 -480 640 -427 640 -640 480 -480 640 -481 640 -640 640 -500 338 -640 480 -640 480 -640 360 -500 375 -640 480 -500 375 -640 426 -640 479 -500 375 -640 493 -640 486 -481 640 -486 381 -500 375 -640 428 -427 640 -640 456 -497 640 -426 640 -640 427 -500 375 -640 429 -640 456 -640 360 -640 478 -428 640 -480 640 -640 480 -500 483 -640 426 -381 640 -640 480 -640 443 -640 480 -640 428 -640 424 -640 480 -640 407 -640 426 -640 480 -480 640 -640 480 -640 428 -640 359 -426 640 -640 427 -640 480 -640 428 -427 640 -640 481 -375 500 -573 640 -500 333 -640 428 -640 476 -612 612 -640 480 -640 480 -500 375 -426 640 -375 500 -640 480 -640 480 -640 359 -480 640 -637 640 -640 423 -640 394 -640 480 -500 375 -612 612 -640 360 -640 426 -640 427 -640 640 -640 480 -332 500 -640 427 -640 480 -333 500 -640 426 -640 541 -640 427 -640 640 -640 480 -640 426 -450 338 -640 428 -640 428 -640 354 -640 524 -480 640 -480 640 -640 480 -640 424 -500 332 -640 426 -640 480 -500 375 -480 640 -640 351 -640 480 -640 480 -531 640 -480 640 -375 500 -640 427 -427 640 -612 612 -427 640 -640 441 -640 480 -638 640 -640 426 -488 640 -424 640 -500 400 -640 426 -640 427 -480 640 -333 500 -640 579 -640 427 -640 320 -360 640 -640 427 -640 480 -640 480 -500 332 -640 427 -480 640 -640 467 -635 640 -640 427 -497 640 -640 480 -427 640 -640 428 -424 640 -640 480 -427 640 -478 640 -480 640 -640 424 -427 640 -640 480 -640 480 -640 426 -427 640 -500 375 -640 432 -640 479 -640 360 -640 427 -640 424 -640 480 -640 480 -478 640 -427 640 -640 480 -428 640 -500 375 -640 427 -375 500 -640 429 -640 427 -640 426 -427 640 -640 620 -375 500 -438 351 -640 427 -575 640 -640 480 -640 428 -640 480 -640 480 -640 480 -640 480 -480 640 -500 342 -429 640 -480 640 -640 394 -640 480 -640 298 -427 640 -500 378 -640 511 -500 333 -640 480 -334 500 -640 480 -640 423 -640 426 -640 427 -640 480 -640 388 -640 444 -640 531 -453 640 -500 375 -640 234 -500 333 -426 640 -640 428 -640 480 -640 428 -480 640 -640 472 -480 640 -375 500 -640 480 -480 640 -500 332 -640 427 -640 398 -640 425 -640 478 -640 427 -427 640 -480 640 -500 334 -640 480 -612 612 -640 480 -640 427 -427 640 -427 640 -333 500 -640 480 -640 480 -500 375 -640 480 -333 500 -640 480 -375 500 -640 625 -500 333 -500 375 -500 375 -480 640 -640 480 -500 333 -640 371 -640 481 -480 640 -480 640 -640 480 -427 640 -427 640 -640 427 -612 612 -500 330 -430 500 -500 333 -640 480 -640 425 -480 640 -640 480 -640 405 -640 425 -640 427 -640 427 -640 467 -640 478 -427 640 -640 480 -333 500 -640 426 -500 375 -640 549 -480 640 -640 427 -640 427 -640 480 -640 480 -640 426 -640 640 -640 480 -427 640 -500 375 -480 640 -640 500 -640 425 -640 320 -480 640 -500 376 -640 480 -479 640 -640 504 -480 640 -480 640 -500 375 -640 640 -640 425 -640 480 -640 428 -426 640 -640 427 -640 480 -640 424 -640 480 -640 640 -640 360 -640 480 -640 640 -500 375 -500 384 -640 426 -500 334 -640 480 -640 480 -640 427 -400 300 -480 640 -640 427 -612 612 -640 429 -640 424 -640 557 -640 427 -427 640 -640 440 -640 480 -640 321 -640 427 -500 375 -640 426 -500 375 -480 640 -640 391 -500 375 -640 480 -480 640 -640 425 -640 427 -429 640 -640 427 -640 425 -640 428 -500 374 -640 425 -640 425 -640 477 -640 427 -375 500 -640 480 -640 457 -640 383 -480 640 -425 640 -426 640 -640 480 -427 640 -640 466 -640 427 -640 428 -640 542 -480 640 -640 480 -640 480 -640 480 -640 640 -480 640 -640 479 -480 640 -340 505 -500 500 -640 454 -500 375 -640 427 -480 640 -640 480 -480 640 -640 427 -333 500 -640 480 -408 640 -640 480 -640 427 -640 480 -480 640 -225 300 -640 424 -480 640 -375 500 -640 480 -640 426 -640 480 -427 640 -500 375 -640 463 -640 433 -427 640 -612 612 -612 612 -640 425 -640 480 -640 480 -640 512 -640 353 -500 375 -640 480 -500 375 -640 427 -480 640 -480 640 -640 480 -500 375 -640 640 -500 375 -640 481 -500 375 -424 640 -640 480 -640 480 -480 640 -640 396 -637 419 -640 480 -640 480 -640 427 -612 612 -427 640 -428 640 -331 500 -640 478 -640 429 -640 360 -500 375 -640 428 -640 480 -640 480 -453 500 -640 427 -640 425 -480 640 -385 308 -640 479 -612 612 -424 640 -640 423 -640 480 -640 427 -640 640 -640 428 -640 480 -640 427 -640 427 -640 359 -480 640 -640 480 -612 612 -640 428 -640 427 -640 480 -640 397 -500 375 -640 480 -640 480 -640 427 -500 332 -640 480 -640 431 -640 480 -640 480 -640 486 -500 375 -400 300 -480 640 -640 480 -640 427 -640 427 -640 427 -640 427 -640 480 -285 500 -480 640 -500 333 -640 416 -640 427 -640 427 -458 640 -640 480 -640 427 -500 375 -480 343 -500 500 -428 640 -640 491 -640 426 -640 480 -640 424 -480 640 -640 624 -612 612 -640 480 -640 480 -640 427 -640 480 -640 640 -500 314 -640 359 -640 457 -640 427 -480 640 -472 640 -600 600 -640 427 -640 421 -640 427 -640 480 -612 612 -500 333 -640 427 -640 480 -640 480 -640 640 -640 480 -640 480 -640 538 -640 414 -427 640 -640 480 -640 480 -640 427 -640 427 -640 492 -640 360 -640 457 -640 480 -640 427 -640 480 -500 342 -480 640 -424 640 -640 480 -640 480 -640 426 -640 640 -640 480 -480 640 -640 480 -640 425 -427 640 -500 375 -427 640 -427 640 -500 375 -640 480 -640 426 -480 640 -427 640 -640 424 -500 333 -640 517 -427 640 -529 640 -640 427 -440 640 -480 640 -480 640 -640 426 -640 427 -612 612 -640 480 -640 478 -640 480 -640 426 -640 295 -640 480 -640 480 -500 334 -500 375 -640 423 -480 640 -640 480 -480 640 -640 513 -640 427 -640 481 -640 393 -640 480 -427 640 -640 424 -427 640 -640 451 -640 383 -640 425 -427 640 -640 480 -480 640 -640 427 -500 333 -427 640 -640 463 -640 428 -640 480 -640 426 -640 449 -640 427 -428 640 -640 480 -333 500 -427 640 -640 426 -640 426 -640 427 -640 424 -640 427 -402 600 -640 482 -640 427 -500 333 -640 480 -640 480 -640 426 -640 457 -640 480 -640 423 -640 480 -640 426 -427 640 -640 480 -500 333 -640 426 -500 375 -640 480 -640 360 -427 640 -640 480 -500 375 -640 259 -640 480 -640 480 -360 640 -480 640 -483 640 -640 480 -640 465 -640 480 -640 480 -424 640 -500 335 -640 360 -640 429 -640 457 -360 640 -640 480 -640 427 -640 426 -640 428 -426 640 -466 640 -640 425 -500 375 -640 426 -640 426 -333 500 -640 455 -640 425 -640 494 -500 332 -640 428 -640 480 -640 480 -612 612 -640 427 -612 612 -383 640 -640 480 -640 427 -334 500 -640 640 -500 335 -640 480 -480 640 -640 480 -640 480 -640 427 -612 612 -640 418 -375 500 -640 480 -640 480 -640 480 -425 640 -640 480 -640 480 -500 333 -640 480 -640 480 -480 640 -640 480 -640 426 -640 478 -640 428 -500 333 -640 631 -640 480 -375 500 -640 426 -578 640 -640 473 -640 415 -427 640 -427 640 -479 640 -640 480 -426 640 -612 612 -500 375 -640 480 -640 489 -640 412 -640 480 -383 640 -640 360 -427 640 -500 333 -640 427 -640 480 -426 640 -640 425 -640 509 -640 383 -640 480 -640 427 -640 480 -640 427 -640 480 -640 480 -480 640 -449 640 -640 426 -500 333 -640 427 -640 360 -480 640 -640 425 -400 500 -640 427 -640 480 -640 428 -640 431 -640 480 -500 400 -640 480 -640 480 -640 480 -640 480 -640 426 -640 361 -480 640 -480 640 -640 480 -640 480 -640 469 -500 333 -500 332 -640 480 -346 640 -640 491 -427 640 -640 480 -640 435 -640 426 -640 427 -640 427 -500 375 -426 640 -480 640 -480 640 -329 500 -640 478 -213 320 -427 640 -640 426 -640 480 -640 426 -500 375 -640 425 -640 639 -309 640 -640 427 -640 640 -500 336 -640 640 -640 480 -640 480 -333 500 -640 480 -431 640 -640 480 -640 480 -480 640 -640 426 -640 427 -500 298 -640 426 -640 480 -375 500 -640 631 -640 427 -640 480 -640 480 -640 428 -634 354 -500 375 -428 640 -640 640 -640 480 -640 480 -640 513 -640 425 -640 426 -640 411 -640 478 -640 480 -640 426 -640 480 -640 480 -333 500 -500 284 -375 500 -640 383 -640 427 -640 353 -640 426 -500 380 -640 480 -640 480 -640 427 -640 429 -480 640 -640 427 -500 334 -213 320 -500 333 -640 640 -612 612 -480 640 -640 480 -640 290 -640 427 -640 640 -480 640 -640 480 -640 427 -469 640 -427 640 -500 451 -640 480 -500 366 -640 428 -640 427 -640 480 -612 612 -640 480 -500 375 -399 640 -500 332 -640 327 -500 396 -640 433 -640 427 -427 640 -640 480 -427 640 -427 640 -640 427 -480 640 -640 427 -640 480 -426 640 -480 640 -640 323 -640 457 -640 426 -640 478 -640 446 -426 640 -428 640 -640 480 -427 640 -640 432 -640 359 -640 482 -640 425 -314 188 -355 640 -640 427 -500 355 -500 338 -640 480 -429 640 -500 332 -640 360 -500 281 -640 427 -500 282 -640 428 -500 379 -640 480 -640 427 -640 426 -335 500 -640 456 -640 396 -640 424 -640 480 -640 427 -484 640 -427 640 -640 480 -640 428 -640 428 -640 432 -612 612 -332 500 -640 427 -480 640 -640 480 -366 500 -480 640 -640 508 -640 424 -640 425 -640 425 -480 640 -480 640 -500 375 -640 549 -640 427 -640 424 -500 375 -640 480 -640 470 -640 480 -640 480 -480 640 -640 427 -478 640 -640 360 -427 640 -640 440 -426 640 -640 426 -500 333 -612 612 -640 480 -503 640 -640 427 -480 640 -640 449 -500 479 -640 480 -480 640 -640 427 -640 426 -640 427 -640 425 -640 415 -640 427 -640 427 -640 428 -486 640 -640 486 -640 419 -640 424 -640 480 -640 369 -500 375 -427 640 -640 424 -500 347 -640 615 -640 480 -500 375 -500 375 -640 480 -640 480 -640 480 -427 640 -640 428 -500 333 -640 416 -500 375 -419 640 -640 425 -640 480 -480 640 -480 640 -424 640 -427 640 -640 426 -480 640 -640 480 -480 640 -640 425 -640 360 -640 427 -640 424 -640 480 -640 427 -640 480 -640 427 -640 480 -640 425 -640 428 -640 480 -640 480 -640 478 -640 480 -640 428 -612 612 -640 636 -500 333 -480 640 -640 437 -428 640 -612 612 -640 459 -640 480 -640 480 -640 480 -427 640 -640 480 -640 507 -640 480 -640 427 -640 427 -640 427 -640 480 -640 457 -640 480 -500 375 -640 383 -500 332 -640 480 -375 500 -640 427 -426 640 -640 480 -640 427 -640 480 -640 427 -375 500 -640 480 -480 640 -478 640 -375 500 -480 640 -500 375 -640 480 -427 640 -640 480 -640 427 -334 500 -500 375 -640 361 -511 640 -500 334 -640 480 -640 480 -640 640 -640 480 -500 375 -640 480 -640 480 -640 426 -640 425 -640 524 -479 640 -640 480 -640 480 -640 427 -480 640 -640 480 -640 428 -500 375 -606 640 -480 640 -640 426 -500 392 -640 451 -640 485 -427 640 -640 428 -640 457 -640 424 -640 480 -640 427 -493 640 -640 398 -500 333 -427 640 -640 427 -640 432 -640 480 -640 480 -640 427 -640 361 -640 425 -500 375 -640 438 -432 288 -612 612 -640 480 -500 376 -480 640 -640 479 -400 640 -640 426 -500 377 -375 500 -640 424 -443 640 -640 480 -640 427 -427 640 -480 640 -626 640 -640 550 -500 335 -550 640 -640 428 -452 640 -500 350 -499 500 -640 427 -569 640 -640 480 -640 425 -500 334 -640 420 -640 427 -640 441 -640 480 -500 500 -640 480 -640 598 -333 500 -480 640 -427 640 -640 480 -640 480 -612 612 -500 335 -640 480 -640 640 -600 450 -427 640 -640 400 -507 640 -640 480 -500 375 -500 332 -640 480 -510 640 -640 480 -640 429 -480 640 -500 333 -640 427 -640 346 -281 500 -640 480 -427 640 -640 454 -640 439 -375 500 -640 427 -448 336 -640 533 -640 424 -480 640 -640 480 -640 427 -640 425 -326 640 -640 532 -640 480 -640 480 -640 480 -640 383 -480 640 -640 480 -640 427 -640 427 -640 480 -480 640 -640 384 -480 640 -640 456 -500 375 -640 480 -640 428 -427 640 -640 541 -500 333 -640 436 -640 482 -640 427 -640 537 -640 426 -480 356 -640 427 -640 480 -640 427 -640 480 -480 640 -640 424 -640 427 -640 480 -640 427 -640 360 -500 375 -640 427 -560 600 -640 427 -533 640 -477 640 -640 424 -640 458 -640 427 -480 640 -640 428 -640 427 -399 500 -640 640 -480 640 -478 640 -640 480 -640 480 -640 427 -612 612 -480 640 -640 470 -640 425 -640 431 -425 640 -640 427 -640 427 -640 463 -427 640 -640 480 -640 427 -640 438 -480 640 -640 427 -640 462 -640 442 -640 480 -429 640 -640 427 -640 480 -500 375 -612 612 -640 640 -640 387 -427 640 -640 320 -640 427 -640 480 -640 427 -480 640 -640 429 -480 640 -480 640 -335 500 -640 425 -640 425 -500 375 -640 480 -640 640 -427 640 -640 480 -640 480 -640 480 -453 640 -640 478 -640 425 -500 379 -640 427 -640 480 -500 346 -640 547 -427 640 -399 600 -640 480 -640 327 -640 427 -640 427 -640 427 -640 427 -640 480 -640 427 -640 283 -640 480 -640 480 -435 640 -424 640 -600 400 -640 427 -640 354 -640 556 -612 612 -480 640 -640 480 -640 511 -640 480 -480 640 -640 428 -640 271 -640 480 -640 480 -640 425 -640 383 -428 640 -640 480 -480 640 -640 427 -315 352 -640 480 -426 640 -480 640 -640 427 -640 401 -640 480 -640 480 -640 426 -640 427 -640 427 -640 480 -640 480 -640 480 -640 480 -640 424 -640 513 -459 640 -427 640 -640 640 -640 427 -640 478 -640 416 -640 427 -480 640 -640 423 -480 640 -640 466 -640 544 -640 437 -375 500 -640 492 -375 500 -640 424 -640 370 -640 513 -640 429 -427 640 -640 427 -426 640 -428 640 -640 426 -640 640 -500 384 -627 640 -640 427 -640 427 -640 427 -428 640 -640 512 -640 480 -640 427 -640 480 -500 376 -640 428 -640 384 -480 640 -640 478 -640 480 -640 427 -426 640 -563 640 -640 480 -640 430 -500 333 -640 633 -640 426 -426 640 -640 427 -480 640 -640 638 -640 400 -640 480 -640 480 -640 427 -640 424 -640 427 -640 427 -640 480 -480 640 -640 450 -612 612 -640 483 -640 480 -640 480 -640 427 -450 412 -480 640 -640 443 -640 480 -640 480 -640 434 -640 425 -640 427 -640 360 -640 427 -480 640 -640 378 -640 480 -480 640 -640 480 -640 480 -640 426 -640 480 -640 384 -640 427 -640 480 -640 427 -640 480 -640 360 -640 532 -640 360 -640 556 -640 427 -640 480 -528 640 -640 480 -500 333 -640 427 -426 640 -640 425 -640 428 -425 640 -640 480 -617 640 -418 500 -640 480 -427 640 -640 457 -427 640 -640 480 -374 500 -500 400 -640 480 -484 640 -640 480 -640 431 -640 426 -640 428 -500 375 -640 480 -640 429 -640 427 -640 427 -640 427 -640 427 -480 640 -436 640 -500 333 -479 640 -640 480 -612 612 -640 480 -640 427 -480 640 -640 427 -500 481 -640 451 -640 336 -640 335 -640 480 -500 375 -640 427 -640 480 -640 428 -640 428 -640 501 -640 427 -640 480 -480 640 -427 640 -640 427 -640 480 -640 427 -640 395 -426 640 -427 640 -640 480 -640 426 -640 480 -480 640 -640 426 -640 383 -640 480 -609 640 -640 387 -448 336 -640 457 -640 426 -375 500 -423 640 -480 640 -500 334 -375 500 -640 353 -640 480 -375 500 -640 405 -500 333 -640 480 -427 640 -506 373 -500 375 -640 480 -500 375 -640 480 -640 413 -640 426 -640 427 -640 480 -640 427 -640 480 -640 437 -640 350 -480 640 -640 426 -640 513 -640 425 -480 640 -500 375 -640 426 -640 493 -640 425 -480 640 -500 493 -640 427 -640 480 -483 640 -640 480 -640 480 -500 375 -480 640 -640 378 -500 335 -500 360 -640 543 -640 480 -333 500 -640 480 -640 428 -640 480 -333 500 -640 427 -640 367 -640 427 -640 480 -640 480 -640 480 -640 458 -426 640 -640 480 -480 640 -640 480 -640 480 -640 427 -640 436 -640 451 -500 375 -640 480 -640 427 -640 480 -640 394 -640 480 -500 332 -640 439 -480 640 -500 400 -640 519 -640 480 -640 478 -640 456 -640 428 -640 480 -427 640 -500 375 -250 640 -640 480 -480 640 -640 512 -640 480 -288 352 -428 640 -480 640 -375 500 -640 480 -640 424 -640 480 -640 462 -640 480 -640 428 -640 481 -500 375 -640 480 -640 477 -640 427 -496 640 -513 640 -640 427 -640 371 -640 428 -383 640 -640 480 -375 500 -427 640 -640 427 -480 640 -427 640 -640 480 -640 481 -640 480 -640 425 -640 480 -640 458 -640 427 -640 480 -640 480 -640 480 -640 405 -640 480 -640 428 -320 240 -640 480 -479 640 -640 480 -640 480 -640 428 -480 640 -640 427 -460 640 -612 612 -640 439 -640 480 -612 612 -480 640 -640 425 -640 427 -640 480 -640 480 -500 375 -427 640 -380 285 -375 500 -640 427 -640 480 -640 426 -640 427 -640 480 -640 480 -640 490 -500 329 -612 612 -640 480 -425 640 -483 640 -500 333 -640 427 -640 427 -640 480 -640 479 -640 427 -480 640 -612 612 -433 640 -640 428 -479 640 -520 480 -427 640 -640 517 -640 428 -604 640 -500 375 -640 480 -500 333 -640 480 -427 640 -640 480 -640 478 -375 500 -640 427 -640 427 -425 640 -427 640 -426 640 -428 640 -640 427 -640 444 -436 640 -480 640 -551 640 -640 478 -500 327 -640 480 -480 640 -480 640 -640 427 -640 480 -500 377 -326 500 -640 480 -480 640 -640 424 -427 640 -640 480 -640 480 -424 640 -640 480 -640 427 -640 640 -640 429 -640 480 -480 640 -427 640 -640 427 -640 480 -640 480 -480 640 -640 359 -423 640 -640 427 -640 429 -640 480 -640 480 -500 375 -640 427 -453 640 -640 480 -640 427 -640 480 -500 375 -480 640 -640 577 -500 375 -500 332 -640 427 -640 480 -640 480 -426 640 -640 480 -622 640 -640 516 -426 640 -427 640 -640 428 -480 640 -640 359 -640 429 -640 426 -640 573 -480 640 -640 428 -640 360 -288 384 -480 640 -427 640 -500 375 -427 640 -640 480 -640 426 -640 427 -640 480 -500 333 -640 427 -640 480 -640 424 -640 424 -424 640 -640 426 -640 529 -640 424 -640 427 -640 480 -500 479 -500 332 -612 612 -427 640 -500 375 -640 480 -640 480 -375 500 -600 450 -640 480 -375 500 -480 640 -640 480 -500 375 -640 366 -640 640 -334 500 -640 426 -375 500 -640 480 -640 360 -500 375 -640 425 -482 640 -375 500 -640 480 -481 640 -640 424 -640 426 -640 480 -375 500 -427 640 -640 478 -640 594 -640 480 -640 372 -640 493 -375 500 -640 480 -640 480 -427 640 -640 480 -480 640 -450 469 -640 427 -640 480 -640 480 -640 480 -568 640 -480 640 -480 640 -480 640 -368 640 -640 429 -640 427 -500 333 -612 612 -640 480 -640 429 -500 375 -640 427 -640 428 -640 427 -640 425 -500 335 -500 375 -500 332 -640 425 -500 478 -640 427 -640 427 -427 640 -640 428 -480 640 -428 640 -640 480 -640 596 -640 427 -640 480 -640 427 -640 480 -640 480 -480 640 -640 418 -640 480 -382 500 -640 423 -500 425 -500 375 -640 425 -640 521 -640 427 -360 640 -640 480 -640 427 -640 484 -640 426 -640 481 -640 424 -426 640 -480 640 -427 640 -640 480 -500 343 -640 471 -623 640 -480 640 -640 480 -431 640 -640 503 -640 480 -640 349 -640 426 -640 480 -640 424 -427 640 -640 480 -640 427 -640 499 -640 480 -500 375 -640 480 -640 458 -333 500 -640 384 -640 426 -640 427 -640 512 -640 480 -640 480 -480 640 -640 428 -640 483 -640 425 -640 427 -640 480 -427 640 -640 480 -640 468 -500 336 -480 640 -640 425 -480 640 -640 509 -640 427 -640 428 -640 528 -640 480 -640 480 -480 640 -640 512 -500 375 -640 480 -640 480 -640 480 -480 640 -500 375 -480 640 -480 640 -640 480 -640 320 -640 425 -333 500 -612 612 -403 500 -640 414 -640 480 -640 427 -480 640 -640 428 -640 428 -640 426 -327 293 -640 579 -640 640 -500 333 -640 427 -480 640 -427 640 -640 478 -640 480 -640 426 -640 480 -427 640 -388 640 -640 480 -568 640 -640 424 -640 415 -500 375 -500 375 -640 427 -640 426 -320 500 -400 300 -492 640 -427 640 -640 427 -427 640 -640 480 -500 337 -480 640 -428 640 -480 640 -640 480 -480 640 -640 428 -640 461 -640 480 -640 480 -640 496 -427 640 -640 480 -500 321 -640 480 -640 427 -360 640 -480 640 -640 448 -640 480 -640 438 -640 427 -333 500 -640 427 -500 430 -640 425 -640 480 -640 457 -640 424 -640 480 -640 427 -640 480 -640 428 -640 484 -640 383 -520 363 -640 480 -500 375 -612 612 -640 427 -500 333 -500 311 -480 640 -640 480 -612 612 -500 375 -640 426 -640 480 -480 640 -375 500 -419 640 -640 454 -375 500 -640 426 -640 426 -480 640 -640 427 -640 480 -640 360 -640 512 -480 484 -640 456 -640 426 -640 480 -480 640 -640 483 -640 427 -640 425 -640 480 -640 480 -640 383 -640 480 -640 480 -640 426 -640 480 -640 427 -640 427 -480 640 -424 640 -640 480 -640 480 -640 480 -640 480 -640 426 -640 509 -640 640 -640 426 -480 640 -640 426 -480 640 -640 480 -640 428 -640 428 -480 640 -640 427 -640 480 -640 427 -640 429 -424 640 -640 480 -640 480 -640 427 -640 480 -429 640 -640 539 -640 479 -451 640 -640 480 -640 427 -640 480 -640 480 -640 465 -640 358 -640 428 -640 427 -500 391 -640 629 -331 500 -640 424 -500 333 -408 640 -640 480 -640 424 -640 410 -612 612 -500 375 -500 375 -480 640 -427 640 -480 640 -640 480 -640 427 -500 375 -640 480 -534 640 -640 424 -640 480 -640 480 -640 320 -427 640 -640 480 -500 375 -640 428 -480 640 -500 375 -320 240 -427 640 -334 500 -500 330 -517 640 -640 480 -640 480 -640 480 -640 426 -500 375 -640 425 -640 495 -640 480 -640 480 -640 525 -640 428 -500 375 -640 484 -640 481 -640 480 -640 433 -500 370 -640 427 -640 427 -640 431 -640 429 -500 416 -640 524 -465 640 -640 480 -480 640 -416 500 -612 612 -495 640 -480 640 -640 427 -478 640 -448 287 -612 612 -480 640 -640 480 -640 478 -640 425 -640 426 -640 424 -500 375 -640 480 -446 640 -600 450 -640 398 -428 640 -640 480 -640 480 -428 640 -428 640 -640 426 -640 427 -640 480 -640 480 -480 640 -500 375 -640 434 -640 427 -640 480 -640 427 -500 375 -640 480 -640 480 -483 640 -427 640 -427 640 -640 480 -640 439 -505 640 -375 500 -461 640 -480 640 -640 480 -640 480 -480 640 -480 640 -375 500 -640 480 -640 512 -640 424 -500 375 -500 375 -359 640 -640 462 -640 427 -640 427 -640 426 -379 500 -451 640 -419 640 -640 427 -640 480 -500 205 -500 333 -640 480 -480 640 -640 427 -375 500 -640 480 -640 427 -640 480 -640 425 -500 375 -640 431 -640 484 -640 427 -480 640 -640 427 -471 640 -640 480 -640 488 -640 480 -425 640 -640 427 -362 480 -640 481 -428 640 -480 640 -640 480 -456 640 -640 358 -500 333 -640 427 -640 516 -640 480 -375 500 -640 427 -388 640 -640 427 -640 424 -480 640 -640 570 -640 427 -500 333 -640 427 -640 427 -426 640 -640 480 -640 480 -640 640 -640 480 -334 500 -640 426 -500 375 -640 424 -640 425 -640 480 -500 336 -640 468 -640 349 -640 480 -640 421 -480 640 -375 500 -640 480 -612 612 -640 428 -640 480 -640 478 -640 427 -640 427 -480 640 -640 426 -640 383 -480 640 -640 491 -640 426 -640 480 -640 480 -500 333 -427 640 -640 481 -640 427 -640 426 -640 428 -640 419 -640 548 -640 480 -640 431 -640 631 -375 500 -640 426 -481 640 -640 427 -640 426 -333 500 -640 428 -532 500 -375 500 -640 314 -480 640 -640 480 -640 480 -500 341 -640 425 -640 480 -640 478 -640 427 -500 326 -640 427 -640 480 -640 478 -640 427 -640 447 -541 640 -640 427 -640 427 -640 416 -640 426 -640 427 -640 470 -480 640 -640 425 -640 480 -640 463 -640 427 -480 640 -612 612 -640 480 -640 480 -500 375 -480 640 -640 480 -640 427 -640 427 -500 333 -478 640 -640 425 -426 640 -640 458 -640 360 -640 425 -332 500 -640 425 -640 427 -480 287 -480 640 -480 640 -640 480 -500 376 -500 335 -500 420 -640 480 -640 425 -640 426 -515 640 -640 427 -500 500 -640 426 -481 640 -375 500 -500 375 -640 278 -640 428 -640 403 -640 426 -640 445 -640 492 -427 640 -480 640 -640 426 -640 480 -640 480 -640 581 -640 360 -640 427 -640 477 -612 612 -500 333 -640 426 -640 480 -640 480 -640 480 -500 375 -425 640 -480 640 -640 480 -550 367 -480 640 -640 480 -640 427 -640 425 -640 425 -640 425 -640 480 -640 427 -640 360 -640 419 -480 640 -640 427 -640 424 -640 480 -640 379 -640 413 -640 425 -640 427 -612 612 -424 640 -640 425 -640 411 -640 427 -640 426 -480 640 -480 640 -640 480 -640 426 -640 640 -640 424 -640 480 -640 426 -640 447 -427 640 -377 500 -537 381 -640 427 -500 462 -640 386 -500 332 -640 425 -640 513 -640 441 -640 434 -640 427 -612 612 -640 427 -640 446 -640 424 -640 426 -640 422 -640 538 -640 426 -640 480 -640 640 -640 427 -640 427 -640 426 -640 428 -419 640 -640 427 -637 640 -640 427 -500 500 -640 445 -500 375 -640 456 -640 427 -640 480 -640 480 -500 375 -488 432 -457 640 -500 334 -640 426 -640 427 -640 428 -640 480 -640 480 -640 427 -640 427 -640 480 -640 478 -640 478 -324 487 -640 480 -640 427 -333 500 -640 424 -640 480 -426 640 -428 640 -457 640 -640 483 -640 429 -478 640 -640 427 -640 480 -640 480 -640 480 -500 375 -480 640 -640 480 -480 640 -640 442 -412 640 -640 427 -640 405 -640 425 -640 491 -612 612 -500 333 -640 427 -640 480 -427 640 -500 276 -640 457 -640 480 -480 640 -640 427 -640 480 -640 480 -640 427 -640 428 -500 333 -427 640 -640 480 -640 480 -640 480 -640 359 -640 427 -640 532 -640 428 -640 426 -640 427 -375 500 -640 480 -640 427 -425 640 -640 446 -500 349 -640 427 -640 470 -640 421 -640 427 -640 426 -640 428 -640 480 -640 426 -640 480 -640 427 -640 425 -640 426 -640 425 -291 461 -640 480 -640 435 -480 640 -640 426 -640 425 -500 375 -480 640 -640 381 -500 375 -640 480 -335 500 -640 427 -333 500 -601 640 -640 428 -640 426 -480 640 -640 477 -640 240 -640 427 -640 424 -640 429 -480 640 -500 402 -480 640 -640 480 -480 640 -640 214 -640 427 -375 500 -640 480 -426 640 -640 480 -640 427 -500 242 -500 375 -640 569 -427 640 -500 333 -489 640 -500 375 -611 640 -640 438 -480 640 -529 640 -640 426 -640 480 -480 640 -500 333 -640 480 -640 454 -640 478 -500 376 -500 500 -500 415 -640 413 -515 640 -427 640 -640 427 -480 640 -468 640 -640 480 -500 359 -640 480 -640 480 -640 490 -640 427 -640 480 -640 480 -640 427 -375 500 -640 480 -427 640 -640 480 -640 480 -427 640 -333 500 -640 426 -640 425 -640 427 -640 480 -640 517 -375 500 -480 640 -640 360 -640 425 -640 426 -640 433 -640 480 -640 426 -612 612 -640 426 -640 427 -480 640 -640 427 -640 474 -640 426 -640 481 -500 374 -480 640 -640 427 -427 640 -500 336 -640 473 -640 383 -640 423 -640 480 -640 428 -500 375 -536 640 -640 427 -640 480 -640 427 -612 612 -640 480 -640 427 -640 480 -500 375 -640 461 -640 360 -425 640 -640 480 -426 640 -640 450 -640 428 -333 500 -640 427 -640 396 -640 477 -640 428 -640 480 -640 635 -640 480 -640 480 -640 480 -640 401 -640 480 -640 427 -640 426 -640 427 -640 427 -640 428 -581 640 -640 427 -427 640 -640 428 -640 480 -640 480 -640 478 -480 640 -640 480 -640 427 -640 427 -612 612 -640 576 -424 640 -612 612 -500 375 -640 480 -640 381 -640 434 -500 437 -640 456 -640 425 -640 427 -427 640 -640 429 -640 480 -640 478 -448 640 -640 480 -640 428 -640 480 -480 640 -640 425 -640 427 -640 429 -640 418 -640 360 -556 640 -269 451 -450 338 -328 500 -333 500 -480 640 -640 428 -640 380 -640 480 -640 428 -640 525 -640 427 -640 427 -640 480 -480 640 -640 479 -640 426 -640 425 -480 640 -640 426 -640 480 -612 612 -548 640 -612 612 -640 480 -640 411 -640 426 -640 480 -640 427 -640 438 -640 478 -640 427 -640 428 -640 427 -640 419 -509 640 -640 334 -640 427 -640 480 -640 426 -640 427 -480 640 -640 426 -513 640 -500 374 -640 501 -640 346 -640 360 -640 480 -500 400 -500 388 -640 480 -480 640 -500 375 -640 427 -500 400 -640 424 -491 500 -640 428 -640 480 -640 427 -426 640 -427 640 -640 451 -375 500 -640 480 -500 333 -367 490 -500 375 -640 427 -480 640 -640 480 -640 427 -640 480 -500 399 -640 480 -640 470 -640 427 -375 500 -640 426 -640 482 -640 480 -640 417 -462 640 -640 428 -640 480 -640 427 -612 612 -640 640 -640 362 -480 640 -640 427 -640 480 -640 426 -640 427 -640 428 -640 426 -640 480 -500 375 -640 480 -640 441 -640 451 -640 478 -640 480 -640 384 -427 640 -640 480 -500 459 -640 370 -426 640 -640 445 -640 480 -640 553 -640 383 -640 428 -640 427 -640 424 -427 640 -640 480 -640 427 -640 360 -640 428 -612 612 -640 480 -640 480 -640 425 -427 640 -640 426 -500 273 -640 427 -480 640 -500 332 -640 480 -640 480 -640 427 -429 640 -640 480 -640 424 -333 500 -640 427 -640 431 -500 375 -640 427 -478 640 -424 640 -396 640 -640 425 -640 480 -425 640 -640 480 -640 427 -640 426 -640 427 -500 422 -640 455 -640 427 -479 640 -418 500 -333 500 -640 480 -640 480 -640 426 -640 426 -640 425 -500 334 -480 640 -502 640 -500 375 -640 551 -640 361 -500 333 -424 640 -640 360 -640 427 -640 427 -341 500 -375 500 -640 512 -640 424 -640 427 -427 640 -640 480 -640 427 -640 424 -640 480 -640 480 -640 480 -640 426 -441 640 -640 480 -640 480 -640 420 -640 427 -640 427 -480 640 -640 426 -640 427 -640 379 -640 508 -640 480 -480 640 -640 358 -640 480 -640 478 -400 600 -427 640 -375 500 -640 439 -640 427 -640 426 -640 425 -640 480 -640 480 -640 480 -478 640 -640 480 -640 480 -480 640 -440 640 -640 229 -640 425 -640 428 -640 480 -612 612 -640 426 -480 640 -640 457 -640 480 -640 426 -640 427 -640 426 -640 400 -640 631 -640 427 -538 640 -640 480 -640 426 -640 427 -640 427 -640 480 -640 426 -640 480 -325 500 -640 427 -640 287 -480 360 -500 500 -640 482 -612 612 -640 425 -640 480 -640 426 -640 427 -640 480 -428 640 -640 424 -500 375 -480 640 -612 612 -480 640 -640 480 -640 427 -480 640 -410 500 -480 640 -640 360 -640 427 -640 401 -640 427 -640 426 -640 421 -500 375 -640 424 -640 427 -427 640 -640 480 -640 426 -429 640 -640 480 -375 500 -640 478 -427 640 -640 480 -480 640 -640 480 -640 480 -640 426 -375 500 -640 422 -640 426 -500 375 -640 480 -640 480 -640 480 -640 428 -513 640 -640 427 -640 424 -640 480 -640 480 -640 640 -640 512 -640 480 -640 506 -500 375 -500 375 -480 640 -640 480 -480 640 -500 329 -640 495 -369 500 -605 640 -500 375 -425 640 -640 480 -480 640 -640 428 -500 375 -640 427 -640 427 -640 427 -640 480 -640 608 -640 360 -640 480 -640 480 -640 480 -640 480 -640 444 -640 427 -640 421 -640 442 -427 640 -612 612 -640 480 -640 360 -480 640 -375 500 -480 640 -640 426 -640 498 -640 480 -640 427 -640 426 -640 480 -500 377 -160 120 -640 428 -500 333 -640 410 -480 640 -640 425 -640 426 -640 424 -640 426 -465 640 -640 480 -640 427 -500 375 -480 640 -640 480 -640 428 -640 480 -500 334 -640 426 -640 427 -640 480 -500 333 -640 429 -426 640 -640 426 -500 375 -500 281 -640 639 -500 313 -278 240 -640 427 -640 480 -640 440 -640 480 -640 480 -640 480 -426 640 -640 480 -640 426 -480 640 -640 427 -480 640 -426 640 -640 360 -640 479 -640 424 -640 427 -431 640 -640 427 -640 258 -640 480 -640 426 -480 640 -640 427 -640 480 -640 480 -426 640 -428 640 -640 480 -640 383 -640 425 -640 426 -640 480 -640 480 -425 640 -640 499 -480 640 -640 426 -640 379 -480 640 -640 427 -640 427 -640 427 -640 427 -640 444 -640 480 -500 500 -640 480 -640 480 -640 480 -640 480 -427 640 -640 593 -500 333 -640 427 -640 480 -640 427 -640 608 -612 612 -640 480 -640 480 -480 640 -640 480 -640 480 -240 360 -640 427 -640 480 -640 411 -640 428 -427 640 -333 500 -640 480 -500 375 -500 425 -640 480 -640 480 -612 612 -427 640 -500 453 -640 426 -640 480 -640 427 -640 479 -640 480 -640 351 -640 480 -640 420 -640 428 -640 427 -500 375 -640 446 -640 480 -640 424 -420 640 -429 640 -640 448 -640 426 -500 321 -375 500 -640 480 -640 470 -640 427 -375 500 -640 480 -500 375 -640 461 -360 640 -640 427 -428 640 -640 480 -640 374 -640 480 -640 427 -640 427 -640 427 -500 375 -640 432 -640 480 -247 500 -640 145 -640 427 -480 640 -640 427 -640 429 -640 568 -500 334 -500 375 -640 500 -640 480 -640 512 -640 480 -612 612 -640 426 -640 426 -640 427 -640 394 -640 480 -480 640 -480 640 -640 427 -640 406 -480 640 -640 426 -640 511 -640 428 -500 333 -500 363 -640 427 -640 427 -488 640 -640 480 -640 427 -640 427 -640 511 -500 375 -427 640 -640 427 -640 464 -640 480 -425 640 -640 464 -427 640 -640 480 -480 640 -640 480 -640 480 -640 480 -640 480 -640 425 -500 375 -640 418 -640 427 -480 640 -273 500 -312 462 -640 396 -640 428 -427 640 -250 333 -640 424 -511 640 -640 425 -640 428 -500 375 -640 480 -375 500 -500 375 -640 444 -640 480 -640 427 -396 640 -400 300 -640 480 -640 512 -582 640 -640 480 -640 480 -640 427 -500 375 -640 425 -427 640 -640 428 -640 480 -500 375 -640 509 -640 427 -640 425 -597 640 -612 612 -640 561 -640 480 -640 480 -640 405 -612 612 -480 640 -640 480 -480 640 -640 480 -640 425 -640 427 -500 375 -640 371 -640 478 -640 569 -500 375 -640 419 -640 426 -640 480 -424 640 -480 640 -640 419 -640 579 -640 512 -640 360 -612 612 -640 427 -640 426 -500 318 -640 480 -480 640 -500 385 -640 480 -640 480 -640 512 -640 480 -640 480 -640 539 -480 640 -640 640 -640 480 -640 360 -640 427 -500 375 -600 400 -427 640 -640 480 -640 480 -640 401 -640 427 -640 427 -640 480 -481 640 -306 500 -640 426 -640 433 -640 449 -640 480 -640 480 -581 640 -640 480 -640 478 -612 612 -560 640 -480 640 -640 480 -427 640 -640 480 -640 400 -375 500 -640 427 -640 480 -640 374 -334 500 -612 612 -500 334 -640 544 -640 480 -640 480 -640 471 -640 400 -612 612 -640 427 -640 479 -640 480 -500 375 -640 480 -612 612 -640 533 -640 427 -640 423 -356 500 -640 480 -500 371 -640 480 -640 480 -640 426 -640 427 -640 425 -640 425 -640 480 -640 480 -640 480 -640 424 -370 640 -640 425 -375 500 -640 145 -640 361 -500 332 -500 375 -640 335 -640 397 -640 521 -500 363 -479 640 -500 375 -640 480 -500 345 -640 480 -640 480 -640 480 -500 364 -640 427 -612 612 -480 640 -640 427 -640 483 -640 480 -640 427 -500 360 -640 427 -640 469 -480 640 -640 480 -640 427 -640 480 -640 427 -640 426 -480 640 -640 480 -640 404 -640 405 -640 426 -640 427 -640 228 -500 375 -426 640 -640 423 -640 428 -640 427 -640 361 -640 480 -433 640 -464 640 -640 480 -640 424 -433 500 -640 480 -640 428 -640 480 -640 473 -640 480 -500 331 -640 480 -640 360 -640 480 -640 480 -640 427 -375 500 -442 640 -450 600 -640 427 -480 640 -500 386 -640 480 -640 424 -640 457 -640 480 -427 640 -427 640 -363 640 -640 480 -640 426 -640 448 -481 640 -427 640 -480 640 -640 480 -640 427 -640 480 -640 425 -640 427 -500 375 -640 480 -640 425 -640 427 -500 375 -640 480 -480 640 -500 333 -640 427 -480 640 -640 480 -450 200 -640 480 -640 427 -480 640 -640 480 -427 640 -480 640 -640 459 -426 640 -640 427 -500 344 -640 427 -640 360 -500 333 -500 375 -640 523 -640 480 -640 424 -640 480 -640 439 -427 640 -640 480 -640 427 -432 308 -640 480 -640 480 -427 640 -499 640 -612 612 -640 480 -640 427 -640 480 -640 480 -426 640 -640 480 -640 426 -640 480 -427 640 -500 375 -640 427 -480 640 -640 458 -640 434 -500 375 -640 427 -640 429 -640 480 -640 480 -640 480 -640 428 -640 480 -640 427 -640 430 -622 640 -409 640 -640 480 -640 640 -640 423 -640 360 -640 430 -640 427 -640 563 -640 427 -640 423 -480 640 -640 480 -478 640 -612 612 -427 640 -640 427 -640 320 -640 427 -500 375 -640 427 -427 640 -640 478 -640 425 -500 375 -640 427 -640 478 -640 427 -375 500 -480 640 -480 640 -640 480 -640 640 -427 640 -640 480 -428 640 -640 405 -640 426 -640 480 -640 427 -640 491 -640 427 -640 480 -612 612 -640 427 -480 640 -640 427 -640 480 -640 427 -480 640 -376 500 -640 480 -640 480 -640 480 -480 640 -640 360 -640 480 -640 480 -427 640 -500 375 -640 466 -640 569 -640 385 -427 640 -640 428 -640 439 -500 350 -375 500 -500 375 -500 375 -625 640 -640 480 -500 332 -640 480 -333 500 -480 640 -640 427 -640 427 -640 426 -480 640 -481 640 -500 438 -480 640 -640 359 -640 418 -426 640 -500 375 -480 640 -480 640 -640 427 -640 480 -640 427 -463 500 -640 425 -426 640 -640 427 -288 216 -640 480 -640 480 -640 640 -640 427 -500 334 -640 480 -640 480 -640 480 -640 480 -640 408 -483 640 -640 428 -640 402 -640 425 -336 500 -640 426 -428 640 -640 330 -480 640 -640 425 -480 640 -640 426 -478 640 -640 449 -640 427 -500 334 -640 478 -500 375 -290 379 -640 427 -640 480 -640 480 -640 480 -640 369 -640 427 -500 321 -426 640 -640 427 -640 480 -640 480 -640 428 -500 375 -424 640 -612 612 -640 427 -500 266 -640 400 -480 640 -640 640 -640 480 -640 480 -500 375 -534 640 -640 427 -640 480 -427 640 -640 427 -640 480 -640 427 -640 360 -425 640 -480 640 -640 480 -640 480 -640 428 -427 640 -425 640 -433 640 -640 480 -640 480 -640 451 -375 500 -640 407 -640 480 -640 480 -416 640 -640 427 -480 640 -640 383 -640 614 -640 554 -500 333 -459 640 -640 427 -640 428 -640 428 -373 640 -625 640 -640 480 -640 480 -500 375 -500 375 -640 480 -528 640 -640 427 -640 480 -375 500 -640 426 -640 427 -640 427 -419 640 -640 427 -640 480 -640 480 -640 396 -640 480 -500 374 -640 428 -640 373 -640 202 -640 480 -640 425 -640 427 -640 424 -640 360 -640 427 -640 480 -640 480 -640 480 -640 427 -500 332 -640 480 -640 480 -480 640 -640 480 -640 480 -640 558 -640 480 -640 480 -426 640 -640 427 -612 612 -640 359 -480 640 -640 424 -640 480 -480 640 -612 612 -640 480 -640 480 -640 480 -500 333 -500 375 -640 425 -640 428 -640 439 -640 427 -640 360 -383 640 -640 427 -640 480 -640 322 -480 360 -426 640 -640 428 -480 640 -597 640 -640 428 -480 640 -640 446 -640 427 -640 480 -480 640 -640 527 -640 427 -640 480 -640 426 -604 640 -360 640 -360 640 -640 425 -640 480 -640 640 -640 388 -480 640 -640 427 -640 426 -500 375 -503 640 -640 427 -640 426 -640 480 -640 427 -640 499 -640 480 -640 428 -640 480 -640 425 -640 427 -640 427 -612 612 -480 640 -480 640 -640 427 -640 427 -490 640 -640 454 -640 480 -640 424 -640 428 -640 480 -640 480 -640 431 -640 478 -640 431 -427 640 -640 426 -640 360 -640 480 -640 480 -640 480 -640 480 -640 460 -490 640 -640 427 -640 480 -640 428 -640 480 -454 640 -640 403 -426 640 -640 320 -640 427 -640 393 -640 427 -612 612 -640 480 -640 480 -500 375 -620 463 -427 640 -612 612 -640 480 -640 640 -427 640 -480 640 -500 375 -446 335 -409 307 -640 426 -640 495 -640 480 -640 427 -640 480 -640 218 -640 425 -512 640 -640 480 -480 640 -489 640 -432 324 -640 424 -428 640 -640 427 -640 427 -640 427 -640 427 -500 347 -427 640 -640 427 -640 427 -640 426 -640 568 -463 640 -480 640 -640 271 -500 324 -480 640 -640 480 -640 375 -640 457 -480 640 -640 427 -640 500 -500 500 -640 480 -640 427 -640 428 -640 480 -640 427 -640 482 -640 480 -480 640 -333 500 -640 424 -427 640 -478 640 -640 424 -427 640 -640 424 -640 480 -457 640 -452 640 -640 425 -500 400 -500 375 -640 442 -225 300 -500 333 -639 640 -640 640 -640 478 -640 480 -640 480 -375 500 -629 640 -500 357 -640 427 -640 383 -500 375 -450 640 -640 426 -640 423 -426 640 -640 426 -426 640 -640 480 -640 480 -640 436 -500 375 -640 427 -640 480 -640 427 -640 480 -640 480 -640 480 -480 640 -480 640 -375 500 -480 640 -640 480 -640 433 -640 427 -433 640 -640 429 -640 480 -640 427 -500 333 -514 640 -640 480 -640 490 -640 427 -640 296 -457 640 -640 518 -640 480 -640 480 -350 232 -612 612 -640 425 -640 427 -640 480 -640 480 -640 383 -500 335 -640 424 -640 427 -640 480 -640 426 -431 640 -500 377 -640 512 -640 427 -426 640 -640 425 -640 480 -640 426 -640 427 -640 480 -500 333 -427 640 -640 429 -640 346 -640 427 -640 427 -640 427 -640 481 -640 480 -496 640 -427 640 -640 484 -639 640 -500 375 -640 427 -427 640 -640 480 -425 640 -640 284 -500 422 -640 512 -480 640 -375 500 -640 533 -640 426 -480 640 -640 413 -640 359 -640 513 -480 640 -640 366 -640 490 -640 480 -501 640 -640 424 -640 427 -640 425 -640 427 -500 308 -640 427 -500 333 -640 480 -640 427 -640 480 -640 480 -640 427 -640 428 -640 427 -640 480 -480 640 -640 427 -375 500 -640 432 -640 480 -640 427 -428 640 -640 427 -640 430 -640 480 -375 500 -640 480 -480 640 -640 640 -427 640 -640 480 -500 381 -406 640 -640 441 -333 500 -640 546 -640 480 -640 480 -500 375 -640 535 -640 426 -640 503 -640 434 -640 480 -546 366 -600 400 -640 429 -640 481 -640 480 -333 500 -640 427 -427 640 -427 640 -480 640 -640 439 -500 375 -553 640 -640 480 -639 640 -640 425 -640 480 -640 427 -640 480 -640 427 -500 333 -640 424 -512 640 -640 426 -640 359 -436 640 -640 428 -640 428 -640 426 -426 640 -480 640 -640 427 -640 427 -612 612 -640 380 -640 427 -640 427 -480 640 -640 480 -612 612 -427 640 -272 480 -640 166 -612 612 -427 640 -640 426 -640 480 -419 640 -640 426 -640 480 -640 427 -640 451 -640 427 -640 427 -640 427 -427 640 -500 375 -640 343 -640 428 -500 375 -640 427 -640 489 -640 373 -640 435 -500 375 -460 640 -640 428 -640 428 -640 411 -640 400 -288 432 -640 427 -640 480 -500 375 -640 426 -640 480 -333 500 -640 427 -500 331 -640 461 -480 640 -500 332 -640 330 -640 533 -427 640 -411 500 -492 640 -640 480 -500 419 -640 427 -359 640 -640 422 -213 318 -640 359 -640 480 -640 427 -500 500 -375 500 -640 480 -640 426 -640 428 -640 360 -640 402 -640 457 -500 364 -640 479 -640 480 -640 478 -457 640 -640 480 -640 480 -640 427 -640 428 -640 425 -500 375 -640 457 -640 478 -500 333 -357 500 -640 428 -418 500 -640 427 -480 640 -500 375 -640 426 -426 640 -640 458 -500 375 -500 375 -640 426 -640 398 -640 427 -640 427 -640 427 -426 640 -640 427 -640 480 -640 427 -640 360 -640 426 -640 480 -640 425 -640 426 -640 428 -640 360 -363 640 -640 480 -640 480 -640 480 -500 377 -428 640 -480 640 -640 481 -640 427 -428 640 -480 640 -640 427 -640 426 -480 640 -427 640 -640 466 -640 425 -640 423 -640 429 -640 480 -500 375 -424 640 -500 333 -500 333 -640 424 -612 612 -480 640 -425 640 -427 640 -640 344 -640 426 -640 427 -640 480 -640 480 -480 640 -640 480 -640 427 -640 480 -640 426 -640 427 -640 480 -640 484 -640 407 -640 448 -640 427 -640 427 -640 360 -640 427 -640 448 -640 480 -640 480 -640 480 -425 640 -640 480 -640 427 -640 425 -500 334 -640 426 -480 640 -640 480 -640 480 -640 427 -428 640 -640 428 -640 512 -429 640 -640 360 -640 480 -480 640 -640 480 -640 480 -640 480 -640 283 -640 479 -640 427 -640 425 -500 333 -640 369 -500 376 -640 480 -333 500 -612 612 -427 640 -480 640 -399 500 -640 480 -640 480 -640 348 -640 480 -640 480 -640 456 -427 640 -281 500 -480 640 -640 429 -640 478 -640 427 -640 453 -640 432 -622 640 -640 480 -640 425 -640 428 -640 427 -640 426 -640 480 -640 544 -640 427 -619 640 -480 640 -480 640 -640 480 -640 427 -640 640 -640 419 -370 640 -640 480 -375 500 -640 337 -448 336 -640 432 -500 333 -640 432 -500 375 -640 429 -500 349 -640 433 -640 480 -640 640 -640 480 -500 375 -640 480 -424 640 -640 508 -640 480 -640 480 -480 640 -640 480 -640 640 -640 480 -636 640 -640 480 -640 424 -640 327 -332 500 -480 640 -427 640 -640 425 -640 343 -640 480 -640 480 -640 428 -640 480 -375 500 -424 640 -511 640 -640 480 -640 480 -640 480 -500 375 -640 427 -480 640 -500 375 -640 464 -640 202 -640 426 -500 375 -640 480 -428 640 -640 478 -640 480 -395 500 -640 480 -500 375 -640 480 -479 640 -436 640 -480 640 -500 333 -640 430 -500 376 -640 480 -427 640 -640 428 -640 480 -640 480 -640 480 -333 500 -427 640 -640 426 -640 480 -640 480 -640 480 -640 427 -436 500 -640 453 -640 427 -640 427 -449 640 -534 640 -640 480 -426 640 -480 549 -640 320 -600 322 -467 500 -640 480 -640 480 -500 400 -640 423 -640 427 -640 480 -500 375 -500 302 -500 332 -640 480 -612 612 -640 432 -640 480 -640 427 -500 335 -360 640 -640 480 -640 428 -640 480 -427 640 -640 427 -640 511 -640 474 -500 375 -640 425 -640 427 -425 640 -640 428 -640 480 -640 426 -640 427 -640 360 -640 427 -500 391 -596 640 -640 427 -573 640 -640 480 -640 387 -640 427 -640 480 -640 427 -640 425 -640 372 -640 480 -375 500 -480 640 -426 640 -640 480 -640 480 -500 375 -640 426 -480 640 -333 500 -500 375 -640 428 -640 427 -640 480 -640 360 -427 640 -640 425 -640 427 -640 383 -500 375 -411 500 -640 434 -500 375 -640 427 -640 419 -640 428 -640 480 -640 480 -500 375 -480 640 -640 427 -640 509 -640 480 -640 421 -399 600 -640 480 -640 427 -640 429 -640 427 -500 375 -640 427 -640 427 -480 640 -640 426 -640 480 -375 500 -640 426 -640 413 -480 640 -333 500 -480 640 -640 415 -334 500 -431 640 -640 427 -640 426 -469 640 -640 480 -375 500 -612 612 -640 427 -640 478 -500 375 -640 443 -640 184 -640 406 -413 640 -640 427 -500 376 -640 427 -424 640 -373 500 -640 469 -640 427 -640 640 -480 640 -640 640 -640 478 -640 480 -640 426 -500 444 -640 426 -480 640 -640 427 -614 640 -640 426 -427 640 -600 464 -640 427 -464 640 -500 375 -640 427 -640 480 -449 640 -640 480 -480 640 -640 480 -640 480 -480 640 -640 408 -533 640 -640 426 -427 640 -640 396 -428 640 -640 480 -640 480 -640 480 -500 500 -335 500 -640 480 -427 640 -640 365 -427 640 -640 360 -508 640 -640 539 -640 428 -640 427 -500 375 -612 612 -640 424 -640 491 -640 425 -640 427 -640 480 -600 450 -359 640 -480 640 -640 480 -640 480 -640 480 -500 375 -390 500 -480 640 -480 640 -640 367 -640 480 -640 389 -426 640 -640 480 -480 640 -427 640 -470 308 -640 427 -640 427 -640 315 -640 480 -500 332 -640 480 -480 640 -500 333 -640 425 -480 640 -480 640 -640 480 -500 409 -640 427 -640 419 -480 640 -640 426 -640 427 -640 364 -500 375 -640 480 -480 640 -500 439 -500 333 -500 307 -640 480 -480 640 -427 640 -640 408 -640 475 -640 427 -640 428 -640 427 -640 408 -480 640 -500 375 -500 281 -640 428 -640 469 -480 640 -500 399 -612 612 -612 612 -612 612 -640 426 -500 335 -640 356 -375 500 -640 480 -426 640 -640 427 -640 426 -640 427 -480 640 -640 639 -500 375 -480 640 -612 612 -640 480 -640 448 -640 428 -640 480 -640 427 -543 640 -500 375 -640 427 -640 426 -640 359 -426 640 -478 640 -480 640 -640 428 -640 427 -640 426 -640 427 -640 427 -640 480 -500 340 -480 640 -640 480 -640 427 -640 480 -427 640 -640 480 -640 425 -640 427 -640 482 -500 333 -500 368 -640 427 -425 640 -640 480 -500 375 -640 428 -640 480 -640 423 -640 558 -250 234 -640 427 -478 640 -640 426 -640 427 -640 427 -426 640 -640 480 -428 640 -640 480 -640 480 -640 480 -640 399 -640 427 -640 439 -640 264 -500 375 -612 612 -640 427 -500 350 -427 640 -334 500 -500 332 -500 281 -325 500 -500 318 -480 640 -640 480 -375 500 -640 426 -640 614 -500 400 -487 640 -640 427 -640 427 -640 513 -478 640 -640 480 -500 375 -500 343 -500 375 -640 425 -640 417 -500 375 -640 427 -640 427 -640 427 -640 441 -640 426 -640 427 -640 480 -640 427 -640 383 -640 425 -635 640 -640 480 -640 355 -480 640 -640 427 -500 375 -640 480 -640 429 -640 480 -640 427 -640 480 -640 480 -640 427 -482 500 -480 640 -478 640 -640 426 -640 480 -640 424 -640 480 -630 640 -640 480 -640 480 -335 500 -480 640 -640 427 -640 480 -640 433 -640 423 -640 480 -640 480 -375 500 -640 480 -640 457 -480 640 -640 480 -640 480 -640 427 -500 375 -504 640 -640 480 -512 640 -471 640 -426 640 -319 480 -640 480 -500 371 -640 480 -640 480 -640 480 -500 375 -378 500 -427 640 -640 483 -640 541 -640 426 -640 381 -500 375 -640 423 -640 359 -640 631 -640 480 -400 600 -371 500 -640 480 -500 371 -640 480 -640 427 -478 640 -640 427 -380 500 -427 640 -500 375 -640 427 -600 600 -427 640 -640 427 -640 427 -356 500 -640 513 -482 640 -375 500 -640 480 -640 320 -612 612 -640 480 -640 640 -640 424 -480 640 -640 427 -427 640 -640 494 -639 640 -640 360 -478 640 -640 360 -640 426 -640 427 -640 427 -640 480 -640 439 -640 480 -640 427 -640 480 -640 360 -640 480 -640 480 -640 251 -640 433 -640 466 -640 480 -480 640 -640 480 -640 444 -427 640 -640 424 -480 640 -640 424 -640 458 -640 427 -424 640 -640 426 -480 640 -640 640 -473 305 -640 427 -461 640 -640 427 -478 640 -640 463 -640 480 -640 427 -640 425 -640 480 -640 360 -640 583 -500 344 -640 426 -640 425 -640 480 -413 640 -640 478 -427 640 -640 480 -424 640 -640 425 -480 640 -640 394 -640 427 -496 640 -427 640 -500 375 -640 426 -480 640 -640 429 -612 612 -640 416 -640 283 -480 640 -375 500 -427 640 -640 426 -640 424 -640 593 -640 427 -640 453 -640 429 -266 640 -640 426 -640 427 -640 499 -640 428 -640 425 -612 612 -480 640 -500 375 -375 500 -500 384 -500 333 -640 427 -640 458 -640 428 -640 467 -640 478 -640 427 -640 429 -640 426 -500 375 -640 480 -640 396 -640 512 -334 500 -480 640 -480 640 -640 427 -640 359 -640 480 -426 640 -375 500 -640 480 -640 480 -500 375 -640 434 -640 427 -640 425 -640 480 -640 457 -426 640 -375 500 -640 480 -640 344 -640 480 -640 455 -500 400 -640 427 -480 640 -640 480 -640 426 -375 500 -640 542 -500 332 -480 640 -640 427 -640 427 -426 640 -640 512 -640 500 -640 431 -640 609 -640 480 -640 478 -640 427 -640 640 -640 427 -640 427 -640 480 -640 424 -640 480 -640 480 -640 480 -480 640 -640 480 -383 640 -640 427 -640 480 -640 427 -640 480 -640 427 -640 480 -640 480 -640 480 -478 640 -640 480 -640 480 -640 427 -640 480 -640 428 -640 480 -640 427 -244 500 -426 640 -513 640 -640 480 -640 480 -640 427 -640 480 -640 480 -428 640 -640 368 -500 341 -640 426 -612 612 -640 428 -640 479 -640 427 -480 640 -640 480 -640 424 -480 640 -640 480 -640 429 -640 427 -640 427 -640 426 -640 480 -640 427 -500 375 -500 328 -640 480 -500 333 -640 427 -640 480 -640 392 -427 640 -640 640 -640 429 -480 640 -640 337 -306 500 -640 426 -427 640 -640 480 -640 427 -640 427 -500 381 -375 500 -640 472 -640 480 -500 375 -640 424 -640 480 -500 375 -480 640 -640 427 -640 480 -640 480 -500 383 -640 480 -480 640 -640 399 -612 612 -640 480 -500 375 -640 427 -500 375 -640 427 -640 427 -480 640 -640 480 -427 640 -640 427 -640 427 -346 500 -640 480 -500 400 -640 360 -478 640 -640 413 -375 500 -640 427 -640 424 -640 426 -640 425 -480 640 -478 640 -410 500 -640 640 -640 480 -500 345 -427 640 -640 419 -640 480 -640 406 -500 375 -640 528 -426 640 -359 640 -640 427 -640 428 -480 640 -500 333 -640 369 -400 535 -489 640 -480 640 -640 480 -640 480 -500 375 -640 480 -456 640 -500 375 -640 480 -640 428 -427 640 -640 425 -480 640 -640 427 -640 420 -333 500 -640 427 -428 640 -640 480 -480 640 -640 450 -640 384 -640 480 -425 640 -480 640 -500 351 -640 480 -640 562 -640 428 -640 480 -500 372 -423 640 -640 426 -640 480 -480 640 -640 426 -640 403 -640 480 -640 480 -640 480 -500 434 -427 640 -480 640 -640 424 -640 480 -480 640 -640 428 -547 640 -500 335 -640 360 -640 400 -640 427 -448 640 -500 376 -500 375 -640 481 -640 480 -640 426 -640 480 -640 478 -640 480 -640 423 -500 375 -640 200 -640 480 -600 450 -640 399 -640 480 -640 426 -640 480 -640 480 -640 480 -640 358 -480 640 -640 426 -640 428 -480 640 -640 640 -461 640 -640 480 -640 480 -640 480 -639 640 -428 640 -612 612 -640 404 -640 427 -640 427 -612 612 -640 427 -640 480 -449 640 -480 640 -640 428 -640 480 -333 500 -640 480 -500 385 -640 426 -500 375 -640 480 -640 427 -640 425 -640 427 -640 480 -640 426 -640 480 -640 480 -640 481 -640 480 -640 480 -640 428 -640 427 -427 640 -480 640 -425 640 -333 500 -640 503 -480 640 -640 427 -640 388 -640 426 -538 640 -500 375 -427 640 -640 424 -500 391 -640 231 -640 427 -640 480 -640 480 -612 612 -640 480 -426 640 -640 425 -640 478 -640 427 -640 427 -640 547 -640 360 -612 612 -640 480 -500 334 -431 500 -374 500 -640 428 -640 400 -633 640 -333 500 -640 462 -566 640 -640 359 -500 332 -425 640 -375 500 -640 425 -500 335 -640 480 -612 612 -640 425 -640 426 -487 640 -500 375 -640 424 -640 427 -640 480 -500 334 -640 427 -500 341 -640 480 -640 399 -480 640 -375 500 -480 640 -640 428 -500 334 -640 480 -640 427 -457 640 -500 375 -640 409 -375 500 -640 480 -640 480 -500 375 -375 500 -427 640 -480 640 -640 475 -640 480 -640 425 -500 375 -640 360 -500 332 -640 450 -640 480 -640 426 -500 375 -640 480 -640 480 -640 425 -640 425 -426 640 -640 425 -640 480 -640 384 -640 427 -640 427 -640 253 -640 425 -394 640 -640 426 -640 426 -640 480 -640 427 -427 640 -426 640 -640 467 -640 480 -640 458 -500 500 -640 480 -500 375 -640 427 -480 640 -640 480 -640 480 -640 421 -640 480 -640 542 -640 480 -640 430 -640 469 -640 360 -640 480 -640 355 -640 480 -612 612 -640 480 -500 334 -640 427 -432 640 -640 416 -640 360 -468 640 -640 527 -640 570 -640 428 -480 640 -640 480 -640 427 -480 640 -640 426 -640 480 -500 375 -640 360 -424 640 -478 640 -640 428 -640 427 -240 320 -427 640 -375 500 -500 375 -566 640 -640 480 -640 427 -500 335 -640 427 -500 375 -640 612 -640 480 -426 640 -640 480 -640 385 -640 424 -640 427 -640 478 -640 426 -427 640 -500 375 -640 480 -640 480 -640 258 -640 429 -640 427 -640 480 -640 480 -640 480 -640 425 -500 333 -640 480 -640 501 -640 640 -612 612 -640 424 -500 375 -640 454 -500 375 -640 388 -427 640 -425 640 -500 375 -376 500 -640 425 -640 480 -500 375 -500 357 -640 480 -640 378 -500 375 -640 431 -640 427 -640 450 -612 612 -640 427 -640 427 -640 427 -612 612 -640 480 -567 476 -480 640 -424 640 -640 428 -640 480 -640 427 -640 480 -640 426 -640 427 -640 480 -640 480 -640 480 -640 427 -480 640 -640 427 -640 480 -400 538 -640 427 -500 375 -428 640 -640 384 -640 426 -480 640 -640 488 -427 640 -640 480 -640 427 -640 424 -427 640 -640 480 -480 640 -612 612 -640 480 -480 640 -427 640 -640 466 -640 480 -640 480 -461 640 -640 480 -640 480 -500 254 -640 425 -500 375 -480 640 -480 640 -640 405 -612 612 -480 640 -514 640 -640 480 -640 480 -640 480 -400 300 -640 509 -640 424 -426 640 -640 480 -640 512 -428 640 -480 640 -612 612 -401 500 -640 478 -640 480 -640 427 -640 427 -500 375 -640 480 -640 425 -457 640 -640 427 -640 395 -480 640 -640 427 -640 478 -640 480 -640 455 -640 536 -425 640 -640 480 -640 427 -427 640 -417 500 -500 333 -480 640 -640 427 -640 360 -640 427 -427 640 -640 363 -640 480 -612 612 -640 614 -640 480 -479 640 -334 640 -640 425 -480 640 -429 640 -640 480 -640 427 -640 480 -480 640 -480 640 -500 412 -471 600 -500 333 -640 480 -640 425 -640 389 -640 339 -640 428 -640 640 -500 335 -640 426 -640 426 -425 640 -427 640 -425 640 -640 428 -427 640 -640 480 -640 427 -427 640 -640 282 -480 640 -500 281 -333 500 -458 640 -640 426 -426 640 -640 427 -640 425 -427 640 -640 480 -480 640 -640 485 -640 480 -480 640 -640 426 -427 640 -480 640 -500 326 -640 427 -640 480 -362 500 -640 480 -640 427 -332 500 -602 640 -640 480 -640 480 -480 640 -640 480 -640 427 -640 425 -640 480 -640 480 -480 640 -413 478 -640 640 -640 446 -640 249 -640 458 -640 453 -426 640 -640 563 -640 640 -640 480 -640 427 -425 640 -640 426 -480 640 -640 480 -640 565 -640 640 -640 480 -640 427 -640 427 -426 640 -640 427 -480 640 -640 427 -640 480 -500 375 -612 612 -433 640 -512 640 -640 427 -640 424 -640 480 -500 332 -640 480 -640 480 -500 375 -500 333 -640 427 -640 480 -640 480 -480 640 -500 333 -640 421 -640 480 -640 427 -640 480 -640 424 -640 480 -612 612 -640 480 -640 480 -368 640 -640 480 -640 480 -640 480 -640 480 -640 480 -500 375 -640 428 -640 342 -500 375 -480 640 -640 427 -640 427 -640 424 -640 457 -500 375 -401 640 -480 640 -640 640 -640 478 -640 419 -500 391 -640 481 -640 427 -640 427 -640 480 -640 480 -480 640 -500 274 -640 446 -640 480 -480 640 -480 640 -640 640 -612 612 -640 445 -640 480 -500 334 -640 480 -640 427 -640 427 -640 426 -640 428 -640 425 -500 321 -640 427 -640 480 -640 426 -500 333 -640 480 -608 640 -640 424 -640 426 -226 135 -640 361 -640 427 -640 480 -480 640 -640 480 -612 612 -640 591 -640 417 -390 640 -432 640 -640 397 -481 640 -640 427 -511 640 -640 427 -640 426 -500 335 -640 512 -640 480 -426 640 -640 480 -375 500 -640 480 -640 426 -640 425 -640 427 -640 379 -640 480 -333 500 -480 640 -640 480 -640 360 -640 428 -640 560 -640 359 -640 428 -640 427 -640 640 -640 427 -480 640 -480 640 -334 500 -640 427 -640 428 -640 427 -640 509 -640 480 -640 480 -527 640 -509 640 -640 427 -612 612 -640 480 -640 424 -640 480 -640 480 -640 540 -640 427 -640 368 -640 427 -500 438 -427 640 -640 427 -640 426 -640 427 -612 612 -640 480 -480 640 -640 427 -640 480 -640 480 -480 640 -427 640 -500 333 -640 480 -360 640 -640 480 -640 290 -500 333 -427 640 -640 429 -640 616 -640 428 -640 427 -640 480 -640 465 -640 427 -640 427 -479 640 -500 375 -481 640 -640 480 -640 480 -500 286 -640 480 -500 375 -500 375 -640 480 -640 640 -640 424 -427 640 -640 359 -640 480 -427 640 -640 428 -612 612 -333 500 -640 427 -333 500 -640 480 -612 612 -500 337 -500 375 -480 640 -427 640 -640 476 -640 481 -640 427 -500 375 -640 480 -427 640 -640 480 -640 478 -640 425 -500 332 -640 640 -640 480 -640 425 -640 480 -640 409 -459 640 -478 640 -427 640 -640 480 -640 468 -640 480 -640 427 -500 449 -640 400 -640 360 -333 500 -480 640 -640 480 -640 480 -426 640 -640 415 -305 400 -640 480 -640 419 -640 480 -640 427 -640 425 -300 400 -470 353 -640 521 -612 612 -640 480 -640 512 -480 640 -640 640 -640 480 -500 366 -640 480 -333 500 -640 427 -640 480 -640 427 -427 640 -366 500 -640 427 -640 427 -640 480 -640 426 -640 480 -640 480 -640 480 -640 424 -500 375 -640 427 -640 463 -640 512 -640 480 -375 500 -400 400 -640 426 -640 481 -640 480 -336 248 -640 480 -480 640 -640 274 -640 480 -333 500 -480 640 -640 480 -640 427 -640 400 -640 427 -480 640 -427 640 -428 640 -500 333 -401 640 -480 640 -640 424 -640 480 -375 500 -379 640 -640 480 -480 640 -640 478 -375 500 -640 427 -360 640 -429 640 -500 333 -640 427 -480 640 -640 480 -640 415 -640 293 -620 640 -480 640 -375 500 -640 426 -640 360 -640 481 -640 427 -496 640 -360 640 -640 480 -640 427 -480 640 -640 480 -512 640 -476 640 -480 640 -494 640 -375 500 -640 360 -640 426 -640 428 -640 480 -640 425 -640 426 -640 374 -640 427 -640 480 -640 479 -640 426 -640 427 -640 427 -480 640 -446 640 -640 426 -640 480 -640 427 -640 385 -640 480 -640 488 -640 480 -427 640 -427 640 -640 426 -640 480 -389 500 -640 480 -640 480 -640 480 -425 640 -480 640 -300 225 -640 515 -640 426 -640 480 -640 505 -347 491 -640 385 -640 427 -500 335 -640 426 -640 427 -428 640 -640 452 -428 640 -640 427 -640 427 -427 640 -640 424 -640 480 -480 640 -640 427 -480 640 -640 480 -640 480 -640 427 -640 427 -640 425 -640 426 -640 426 -494 640 -427 640 -640 380 -640 480 -640 480 -427 640 -427 640 -333 500 -640 427 -480 640 -500 334 -640 640 -640 361 -426 640 -640 480 -640 480 -640 480 -640 425 -640 428 -640 480 -640 480 -640 480 -640 426 -640 479 -457 640 -640 424 -500 332 -334 500 -375 500 -640 478 -500 333 -640 480 -500 400 -640 428 -640 480 -427 640 -500 375 -500 334 -500 291 -640 480 -640 480 -640 480 -640 427 -640 510 -640 480 -640 480 -428 640 -480 640 -500 375 -640 480 -640 512 -640 275 -640 512 -640 424 -612 612 -426 640 -640 481 -375 500 -640 457 -640 427 -619 640 -640 427 -640 480 -500 375 -640 398 -640 480 -427 640 -500 375 -480 640 -427 640 -500 375 -640 426 -640 427 -480 640 -500 375 -640 413 -640 424 -480 640 -640 426 -640 480 -500 400 -521 640 -427 640 -640 462 -640 480 -640 480 -427 640 -500 347 -640 427 -640 427 -597 400 -640 426 -640 427 -640 480 -640 480 -640 431 -640 419 -640 479 -640 428 -480 640 -640 427 -640 428 -426 640 -640 311 -480 640 -640 427 -640 513 -640 424 -500 358 -480 640 -640 480 -300 426 -640 480 -377 640 -480 640 -427 640 -640 427 -640 425 -640 320 -640 480 -640 360 -427 640 -640 403 -640 425 -480 640 -640 426 -480 640 -428 640 -426 640 -640 427 -459 640 -369 500 -480 640 -640 480 -480 640 -480 640 -500 281 -640 425 -640 468 -640 440 -640 427 -640 534 -640 478 -640 482 -640 426 -500 375 -424 640 -640 331 -640 480 -541 640 -640 268 -640 427 -640 425 -513 640 -640 426 -640 527 -500 333 -640 427 -498 640 -612 612 -339 500 -640 427 -500 391 -480 640 -427 640 -500 333 -427 640 -640 480 -480 640 -640 422 -349 500 -480 640 -333 500 -640 425 -424 640 -640 427 -500 339 -640 425 -640 460 -478 640 -640 468 -640 427 -640 434 -640 427 -640 427 -640 426 -500 375 -640 427 -500 375 -640 388 -640 426 -375 500 -640 426 -640 426 -640 425 -426 640 -640 424 -387 500 -640 480 -427 640 -640 427 -640 427 -640 427 -640 480 -480 640 -425 640 -640 480 -640 640 -640 424 -612 612 -500 333 -500 375 -640 501 -640 480 -640 577 -640 480 -500 375 -425 640 -500 500 -640 426 -640 427 -640 426 -640 480 -640 428 -500 370 -640 360 -500 399 -500 333 -349 500 -640 427 -640 427 -480 640 -640 480 -640 263 -640 480 -447 640 -640 427 -640 317 -640 480 -428 640 -640 426 -480 640 -640 427 -640 480 -375 500 -640 512 -640 430 -480 640 -480 640 -480 640 -500 500 -500 287 -640 480 -640 426 -427 640 -426 640 -640 480 -640 427 -640 427 -375 500 -546 640 -320 240 -425 640 -500 335 -640 425 -640 367 -640 480 -640 427 -640 480 -478 640 -640 427 -640 391 -640 429 -640 480 -640 427 -640 384 -427 640 -640 360 -640 495 -640 478 -640 427 -640 480 -500 218 -640 480 -500 333 -640 480 -640 480 -427 640 -640 480 -640 426 -375 500 -640 427 -640 427 -640 428 -640 618 -480 640 -640 427 -640 427 -554 640 -640 427 -640 427 -640 480 -640 499 -640 427 -640 420 -640 480 -640 480 -425 640 -500 332 -640 480 -640 423 -408 640 -640 480 -529 640 -640 426 -640 480 -500 375 -640 427 -640 508 -500 375 -427 640 -640 480 -640 427 -612 612 -480 640 -640 251 -480 640 -612 612 -500 375 -426 640 -640 480 -480 640 -536 640 -640 480 -640 425 -640 467 -640 480 -438 640 -448 290 -480 640 -640 480 -640 426 -640 480 -640 480 -512 640 -630 630 -640 383 -426 640 -640 404 -500 333 -500 375 -500 327 -429 640 -640 480 -640 469 -640 426 -640 537 -640 359 -640 640 -640 480 -480 640 -640 427 -500 375 -444 640 -640 480 -640 427 -640 480 -640 480 -427 640 -480 640 -640 399 -480 640 -640 434 -640 480 -640 480 -640 480 -640 480 -640 480 -640 428 -640 427 -640 427 -640 480 -640 394 -640 482 -461 640 -640 480 -640 427 -640 469 -640 424 -640 480 -640 448 -640 262 -480 640 -425 640 -640 360 -500 375 -640 480 -640 480 -480 640 -640 429 -640 480 -640 480 -640 426 -640 565 -640 480 -480 640 -427 640 -640 426 -512 640 -500 375 -500 375 -500 333 -500 375 -429 640 -640 427 -480 640 -640 320 -500 500 -640 480 -640 427 -424 640 -640 480 -640 403 -640 425 -500 375 -500 334 -640 480 -640 615 -640 480 -640 426 -640 480 -640 427 -640 480 -375 500 -640 480 -640 385 -640 368 -640 427 -492 500 -640 480 -640 480 -640 442 -640 404 -640 480 -640 400 -427 640 -640 427 -640 480 -612 612 -427 640 -640 436 -330 500 -640 428 -640 480 -640 480 -640 436 -640 494 -640 360 -320 240 -640 427 -480 640 -640 427 -640 480 -640 480 -640 480 -375 500 -640 500 -640 640 -640 480 -640 426 -640 536 -640 398 -427 640 -640 427 -640 480 -640 426 -640 427 -640 480 -480 640 -427 640 -500 375 -640 404 -500 357 -480 640 -640 427 -640 480 -429 640 -640 480 -640 429 -640 426 -640 429 -427 640 -427 640 -640 473 -480 640 -333 500 -426 640 -480 640 -640 480 -640 480 -640 426 -640 480 -480 360 -500 321 -640 428 -640 427 -640 480 -640 480 -500 375 -427 640 -640 503 -427 640 -640 427 -424 640 -610 405 -640 426 -426 640 -640 474 -640 428 -480 640 -640 403 -640 480 -640 428 -640 427 -640 480 -527 640 -449 640 -640 426 -480 640 -640 430 -500 500 -640 480 -640 427 -640 445 -640 440 -640 478 -500 375 -640 427 -640 539 -640 479 -512 640 -640 480 -640 480 -500 375 -640 480 -500 375 -640 428 -640 478 -500 334 -424 640 -640 424 -640 423 -640 427 -375 500 -640 480 -640 427 -640 427 -427 640 -640 480 -640 427 -640 360 -640 427 -640 427 -428 640 -640 480 -640 428 -640 480 -500 333 -640 480 -425 640 -640 551 -640 511 -427 640 -640 425 -640 480 -612 612 -375 500 -490 367 -398 640 -640 480 -640 504 -640 480 -640 480 -518 640 -640 480 -640 427 -640 413 -640 394 -640 427 -640 427 -640 428 -448 336 -480 640 -500 332 -640 426 -427 640 -424 640 -480 640 -640 426 -478 640 -640 480 -640 360 -436 640 -500 375 -640 544 -427 640 -640 640 -425 640 -640 428 -640 428 -425 640 -480 640 -640 425 -640 425 -426 640 -640 427 -480 640 -640 427 -427 640 -435 640 -480 640 -500 379 -640 640 -640 427 -640 427 -640 480 -640 480 -480 640 -640 480 -640 326 -640 427 -640 480 -500 333 -640 425 -453 640 -480 640 -640 428 -640 428 -441 640 -426 640 -640 480 -640 486 -640 427 -500 375 -500 375 -640 428 -640 494 -324 432 -640 427 -640 428 -480 640 -320 480 -640 480 -640 422 -640 427 -640 405 -640 480 -432 640 -640 427 -640 480 -640 426 -640 475 -458 640 -640 427 -612 612 -640 360 -507 480 -640 427 -480 640 -640 480 -640 480 -640 360 -640 428 -427 640 -500 375 -427 640 -640 427 -640 478 -640 480 -640 480 -417 640 -640 424 -640 427 -640 480 -640 426 -640 512 -640 480 -640 480 -640 427 -480 361 -640 427 -480 640 -640 484 -375 500 -427 640 -480 640 -500 375 -416 640 -640 408 -640 609 -612 612 -640 480 -640 360 -500 499 -640 480 -640 427 -640 427 -640 426 -480 640 -500 375 -640 529 -500 375 -640 480 -640 480 -640 425 -640 480 -500 375 -640 470 -640 426 -500 375 -640 480 -640 426 -640 432 -640 424 -640 316 -640 429 -640 463 -640 480 -458 640 -640 480 -640 427 -640 480 -640 427 -640 425 -612 612 -480 640 -375 500 -640 480 -640 483 -427 640 -640 480 -640 512 -499 374 -233 640 -640 312 -640 480 -640 457 -640 445 -500 375 -640 425 -640 427 -427 640 -640 427 -640 427 -480 640 -640 480 -500 375 -640 480 -427 640 -640 480 -640 428 -640 480 -480 640 -640 640 -640 513 -640 422 -500 325 -426 640 -640 480 -480 640 -500 346 -375 500 -640 480 -640 424 -500 375 -640 456 -640 456 -640 436 -640 426 -640 480 -640 428 -640 437 -300 225 -429 640 -640 480 -640 480 -640 480 -375 500 -640 424 -640 480 -640 480 -640 427 -638 479 -640 316 -500 333 -640 481 -640 427 -640 480 -640 427 -480 640 -640 427 -640 480 -500 332 -640 427 -640 480 -640 431 -584 430 -640 361 -640 640 -500 333 -640 364 -640 480 -480 640 -640 480 -560 640 -640 480 -640 428 -427 640 -443 640 -640 428 -480 640 -640 427 -480 640 -640 427 -640 512 -425 640 -480 640 -480 640 -362 640 -640 379 -640 480 -640 407 -640 480 -640 480 -480 640 -640 480 -427 640 -640 428 -640 427 -375 500 -500 375 -640 480 -640 640 -500 336 -640 480 -361 640 -640 424 -160 120 -333 500 -640 427 -540 455 -640 426 -640 425 -640 425 -640 428 -333 500 -640 419 -640 425 -640 428 -640 480 -500 375 -640 420 -500 375 -480 640 -640 480 -640 424 -640 480 -640 322 -640 478 -640 427 -640 480 -480 640 -640 429 -640 453 -480 640 -500 337 -240 320 -480 640 -640 480 -640 428 -640 427 -640 428 -640 480 -637 640 -640 480 -640 640 -640 480 -640 482 -500 321 -500 375 -640 480 -640 480 -500 333 -426 640 -480 640 -640 427 -480 640 -640 427 -640 427 -640 427 -500 297 -640 423 -500 333 -640 427 -640 480 -500 375 -640 480 -500 364 -640 427 -640 480 -480 640 -500 376 -640 427 -500 375 -640 398 -640 480 -640 427 -640 480 -428 640 -640 413 -640 640 -640 427 -640 427 -640 480 -480 640 -480 640 -640 427 -640 428 -640 427 -480 640 -640 480 -640 448 -640 480 -640 428 -640 391 -640 419 -640 426 -640 480 -640 429 -640 426 -640 480 -640 480 -640 528 -640 426 -640 480 -640 424 -427 640 -480 640 -640 480 -500 333 -500 375 -640 480 -480 360 -500 375 -640 510 -480 640 -640 480 -640 480 -640 627 -640 427 -640 480 -640 427 -640 427 -427 640 -480 640 -640 427 -419 640 -426 640 -640 424 -640 480 -640 625 -640 426 -487 500 -640 427 -427 640 -640 480 -500 375 -640 429 -425 640 -640 286 -375 500 -640 429 -640 480 -480 640 -500 375 -612 612 -640 480 -424 640 -640 427 -640 427 -640 382 -640 446 -640 427 -640 427 -640 472 -428 640 -640 427 -640 427 -500 333 -508 640 -500 375 -500 375 -612 612 -427 640 -640 425 -640 425 -640 480 -640 478 -640 427 -640 428 -427 640 -640 480 -480 640 -426 640 -600 393 -640 360 -480 640 -640 361 -640 427 -500 467 -425 640 -640 480 -640 427 -500 333 -500 333 -640 480 -640 359 -640 427 -595 428 -640 427 -490 500 -640 427 -640 360 -640 429 -612 612 -640 377 -640 454 -640 480 -428 640 -640 640 -640 427 -640 480 -640 384 -640 429 -500 375 -427 640 -640 427 -640 480 -640 480 -640 480 -640 480 -500 375 -640 480 -640 427 -640 480 -640 480 -640 428 -500 375 -640 424 -640 419 -333 500 -640 425 -612 612 -640 480 -640 427 -640 426 -640 427 -640 455 -640 427 -480 640 -640 476 -640 480 -640 448 -426 640 -427 640 -640 427 -640 480 -640 427 -428 640 -640 426 -640 426 -500 333 -640 427 -640 408 -640 558 -640 480 -500 375 -640 640 -640 482 -640 426 -383 640 -500 281 -480 640 -375 500 -640 427 -640 425 -640 455 -494 640 -640 373 -640 427 -640 427 -640 425 -480 640 -640 480 -640 427 -640 428 -640 480 -500 298 -640 427 -640 409 -640 426 -640 480 -640 314 -640 424 -640 427 -640 427 -640 512 -640 489 -500 333 -480 640 -640 298 -500 375 -612 612 -640 249 -640 360 -454 640 -640 427 -640 640 -640 480 -500 375 -640 481 -640 480 -640 426 -640 453 -640 427 -480 640 -640 427 -480 640 -640 388 -640 480 -640 480 -500 316 -640 480 -640 480 -425 640 -640 480 -500 375 -640 480 -640 427 -480 640 -631 640 -640 480 -640 426 -640 476 -640 427 -640 359 -640 549 -426 640 -640 480 -481 640 -640 389 -640 420 -640 640 -640 427 -619 640 -640 530 -547 640 -640 425 -640 456 -640 480 -640 429 -640 360 -640 480 -640 426 -640 480 -500 375 -640 476 -640 480 -496 640 -640 360 -640 401 -402 640 -640 428 -640 427 -640 480 -640 427 -640 424 -640 480 -640 428 -640 480 -640 427 -640 426 -640 480 -480 640 -640 480 -480 640 -640 427 -640 427 -640 468 -640 427 -640 427 -480 640 -500 375 -612 612 -640 374 -640 433 -640 426 -640 640 -640 478 -458 640 -640 360 -333 500 -640 480 -640 480 -612 612 -640 480 -428 640 -480 640 -480 640 -640 480 -612 612 -640 610 -640 309 -640 640 -640 428 -640 427 -640 427 -480 640 -500 375 -640 427 -640 480 -640 480 -478 640 -500 333 -640 427 -640 427 -640 479 -640 480 -640 480 -500 375 -640 480 -640 425 -640 480 -640 480 -500 375 -640 480 -640 480 -640 480 -526 640 -512 640 -500 406 -500 222 -640 480 -640 427 -640 463 -640 426 -480 640 -500 247 -500 375 -640 480 -640 429 -640 426 -500 333 -640 423 -640 430 -640 427 -640 427 -640 480 -500 375 -640 426 -500 375 -640 424 -640 427 -612 612 -640 480 -427 640 -640 428 -426 640 -640 640 -609 640 -640 480 -480 640 -640 428 -500 332 -640 360 -483 640 -478 640 -640 327 -640 480 -640 359 -640 427 -640 438 -427 640 -640 478 -640 426 -640 480 -480 640 -640 480 -640 480 -427 640 -640 427 -640 413 -640 480 -640 427 -333 500 -640 480 -426 640 -640 480 -640 424 -640 427 -640 480 -640 480 -640 264 -640 368 -640 426 -375 500 -494 640 -490 500 -640 478 -500 335 -640 480 -480 640 -500 333 -346 500 -640 480 -640 415 -640 480 -640 426 -487 640 -500 375 -500 333 -640 371 -640 426 -640 438 -640 480 -640 427 -428 640 -427 640 -439 640 -640 434 -640 480 -500 335 -640 480 -500 333 -640 427 -640 480 -640 427 -427 640 -640 480 -640 478 -424 640 -640 480 -640 328 -640 427 -640 452 -640 360 -500 375 -640 480 -429 640 -640 446 -640 640 -640 426 -640 427 -480 640 -640 364 -640 480 -429 500 -640 480 -500 375 -427 640 -480 640 -471 640 -336 500 -480 640 -640 427 -480 640 -480 640 -496 400 -640 427 -640 158 -640 480 -640 480 -640 480 -640 606 -640 480 -640 427 -640 480 -640 480 -640 429 -640 424 -640 480 -375 500 -500 375 -375 500 -463 640 -530 353 -480 640 -480 640 -427 640 -402 640 -640 480 -500 333 -640 480 -640 427 -640 428 -640 502 -640 480 -591 640 -640 480 -500 375 -486 640 -426 640 -640 480 -427 640 -640 480 -427 640 -640 480 -640 428 -640 427 -640 480 -640 478 -640 480 -640 427 -640 426 -640 480 -640 427 -640 426 -640 424 -427 640 -640 563 -640 427 -640 480 -640 480 -640 471 -640 425 -640 427 -375 500 -640 384 -640 429 -640 480 -428 640 -640 404 -333 500 -640 427 -640 417 -640 480 -612 612 -375 500 -640 480 -612 612 -480 640 -640 427 -640 426 -640 480 -640 480 -480 640 -424 640 -640 427 -640 480 -640 427 -640 394 -640 428 -500 375 -640 640 -640 425 -500 500 -469 640 -375 500 -640 432 -480 640 -425 640 -457 640 -612 612 -427 640 -640 473 -640 478 -375 500 -640 426 -640 360 -640 426 -427 640 -425 640 -640 426 -480 640 -640 428 -640 426 -462 500 -375 500 -640 480 -640 429 -640 432 -640 427 -346 640 -500 333 -640 427 -640 625 -640 418 -640 425 -611 640 -640 512 -640 480 -640 428 -480 640 -640 411 -640 442 -640 480 -640 480 -480 640 -640 480 -640 435 -640 434 -640 424 -480 640 -640 481 -640 437 -640 480 -640 427 -640 426 -640 506 -640 480 -640 480 -640 361 -640 427 -640 480 -640 480 -640 423 -640 427 -640 480 -640 640 -640 427 -640 640 -480 640 -427 640 -640 349 -640 427 -500 353 -640 427 -640 480 -637 637 -427 640 -480 640 -640 480 -640 427 -519 389 -640 480 -640 480 -640 388 -480 640 -640 480 -380 640 -500 375 -349 640 -640 429 -480 640 -640 480 -640 480 -640 427 -496 640 -640 479 -427 640 -612 612 -640 360 -375 500 -500 342 -375 500 -640 427 -550 365 -640 428 -640 480 -640 428 -333 500 -427 640 -640 480 -640 449 -640 480 -640 480 -640 480 -640 480 -612 612 -640 426 -428 640 -640 480 -640 427 -427 640 -640 352 -411 640 -480 640 -640 480 -640 427 -640 480 -323 500 -480 640 -640 623 -612 612 -640 427 -500 375 -640 360 -640 480 -640 427 -640 427 -640 427 -500 333 -442 338 -640 426 -640 493 -480 640 -500 366 -333 500 -640 427 -640 431 -640 427 -480 640 -640 480 -481 640 -333 500 -640 447 -426 640 -480 640 -426 640 -612 612 -640 427 -640 427 -640 427 -640 389 -640 522 -640 480 -640 480 -612 612 -375 500 -640 427 -534 640 -640 480 -640 479 -398 640 -640 480 -640 480 -640 489 -640 480 -640 360 -640 483 -640 533 -640 425 -426 640 -500 334 -640 480 -640 373 -422 640 -500 374 -640 407 -640 383 -640 511 -480 640 -640 427 -320 240 -424 640 -640 489 -424 640 -640 427 -640 478 -640 480 -480 640 -640 398 -428 640 -640 426 -433 640 -640 360 -555 640 -480 640 -640 427 -640 428 -640 426 -640 480 -480 640 -500 375 -417 431 -500 375 -427 640 -480 640 -500 375 -640 428 -427 640 -640 427 -480 640 -640 427 -500 375 -490 640 -612 612 -423 640 -500 333 -375 500 -640 480 -640 480 -426 640 -426 640 -480 640 -640 427 -480 640 -640 480 -640 480 -640 424 -640 480 -640 463 -640 427 -640 291 -640 480 -640 427 -640 395 -640 480 -640 457 -360 640 -640 427 -415 640 -640 427 -640 435 -500 375 -640 480 -640 427 -427 640 -640 425 -640 440 -333 500 -640 480 -640 372 -500 338 -640 426 -640 480 -640 480 -640 360 -423 640 -427 640 -640 522 -333 500 -640 428 -640 498 -500 500 -422 640 -640 480 -480 640 -640 480 -640 512 -640 480 -640 480 -500 375 -500 332 -640 427 -429 640 -375 500 -640 480 -360 500 -640 480 -640 426 -640 426 -640 330 -500 333 -640 478 -640 480 -640 429 -640 480 -640 463 -410 640 -427 640 -640 480 -640 383 -460 640 -640 480 -640 480 -640 474 -640 426 -612 612 -640 480 -640 480 -500 496 -426 640 -640 467 -640 360 -427 640 -640 426 -480 640 -640 640 -480 640 -640 427 -323 500 -478 640 -640 427 -500 383 -640 425 -640 426 -424 640 -640 480 -640 426 -360 640 -312 640 -640 323 -479 640 -640 428 -500 375 -640 480 -640 480 -640 480 -427 640 -480 640 -640 359 -640 480 -640 465 -426 640 -640 480 -640 480 -640 480 -362 500 -640 467 -500 375 -640 480 -480 640 -640 427 -640 426 -640 480 -640 436 -640 480 -424 640 -640 428 -571 640 -640 427 -640 480 -640 482 -320 240 -640 398 -500 333 -500 333 -427 640 -500 375 -480 640 -427 640 -640 480 -376 640 -567 640 -480 640 -640 480 -640 426 -640 480 -640 479 -640 480 -427 640 -466 640 -640 480 -640 484 -640 482 -640 480 -640 480 -640 428 -427 640 -640 480 -640 511 -640 429 -640 425 -427 640 -640 427 -500 375 -640 427 -427 640 -427 640 -640 480 -500 375 -479 640 -640 427 -427 640 -500 500 -487 640 -640 459 -640 427 -640 480 -640 480 -640 480 -640 427 -473 640 -640 360 -426 640 -640 480 -640 409 -427 640 -640 359 -640 423 -500 300 -500 375 -640 427 -640 423 -640 425 -456 640 -640 328 -427 640 -640 480 -640 426 -427 640 -640 427 -500 375 -640 480 -500 375 -640 483 -399 500 -640 480 -640 427 -640 427 -640 427 -500 334 -640 480 -400 500 -427 640 -346 500 -640 313 -640 427 -640 360 -480 640 -640 478 -640 427 -640 427 -480 640 -640 480 -640 541 -500 322 -427 640 -640 379 -518 640 -640 426 -426 640 -640 425 -480 640 -640 428 -640 360 -640 426 -640 474 -480 640 -640 480 -640 480 -640 480 -500 375 -383 640 -480 640 -640 480 -640 414 -640 512 -640 427 -427 640 -500 333 -480 640 -640 425 -640 427 -600 453 -640 480 -640 425 -640 360 -640 480 -500 375 -640 360 -500 332 -640 442 -640 426 -500 331 -640 427 -640 435 -427 640 -640 427 -500 494 -640 420 -640 427 -640 427 -640 427 -500 472 -640 480 -500 375 -431 640 -500 333 -640 396 -640 428 -640 480 -500 375 -640 480 -500 465 -640 425 -640 424 -640 623 -640 430 -480 640 -640 480 -333 500 -640 480 -500 457 -640 479 -640 427 -640 427 -640 427 -500 252 -640 424 -427 640 -640 427 -640 480 -640 485 -640 426 -640 427 -640 433 -500 333 -480 640 -640 480 -428 640 -640 427 -640 427 -640 478 -500 457 -500 334 -640 480 -640 427 -349 640 -640 448 -380 500 -480 640 -640 437 -640 427 -544 640 -640 427 -427 640 -425 640 -612 612 -500 400 -640 480 -480 640 -375 500 -640 480 -640 640 -640 480 -500 375 -640 426 -640 424 -640 617 -500 377 -429 640 -640 479 -500 375 -640 429 -512 640 -426 640 -640 427 -640 427 -640 424 -640 480 -640 480 -640 442 -640 480 -640 491 -640 494 -640 480 -612 612 -467 500 -612 612 -640 534 -640 494 -640 409 -640 478 -480 640 -500 375 -427 640 -640 480 -500 348 -640 425 -640 480 -507 640 -640 480 -640 401 -640 480 -640 360 -633 640 -640 427 -500 333 -640 425 -428 285 -500 332 -640 429 -519 640 -640 480 -640 458 -640 480 -640 480 -334 500 -640 427 -480 640 -640 426 -640 426 -480 640 -640 428 -426 640 -480 640 -640 361 -640 480 -480 640 -612 612 -500 270 -640 419 -357 500 -640 427 -640 401 -512 640 -640 426 -612 612 -443 640 -427 640 -480 640 -640 480 -375 500 -427 640 -500 375 -458 640 -640 427 -640 457 -428 640 -640 479 -640 308 -500 332 -640 428 -427 640 -640 480 -640 427 -500 375 -500 375 -612 612 -640 426 -480 640 -361 640 -640 425 -640 480 -375 500 -427 640 -640 426 -640 425 -480 640 -640 558 -640 480 -640 434 -640 428 -640 398 -640 421 -640 480 -640 640 -640 428 -480 640 -640 427 -640 480 -640 427 -612 612 -640 426 -640 424 -573 640 -640 426 -640 427 -500 375 -640 480 -242 350 -640 426 -427 640 -480 640 -467 640 -640 427 -480 640 -640 480 -640 480 -640 427 -640 499 -480 640 -640 427 -640 480 -640 427 -391 640 -640 425 -640 426 -500 332 -480 640 -612 612 -480 640 -640 480 -439 640 -480 640 -478 640 -433 640 -640 480 -480 640 -640 194 -640 480 -640 480 -640 480 -640 640 -480 640 -640 619 -640 427 -640 480 -640 480 -640 426 -612 612 -640 428 -640 484 -427 640 -640 480 -500 374 -425 640 -640 425 -640 427 -428 640 -640 640 -640 427 -509 640 -333 500 -500 375 -325 485 -513 640 -640 425 -640 426 -500 375 -640 480 -640 428 -460 640 -640 480 -480 640 -640 480 -640 421 -640 427 -640 480 -480 640 -480 640 -640 262 -640 480 -640 480 -640 424 -640 427 -507 640 -640 427 -640 531 -427 640 -640 480 -640 480 -640 427 -500 375 -640 464 -522 640 -640 427 -500 332 -425 640 -640 427 -640 473 -640 398 -640 480 -640 428 -640 359 -640 480 -480 640 -640 426 -480 640 -333 500 -640 424 -480 640 -612 612 -500 375 -426 640 -640 427 -640 426 -480 640 -640 428 -640 425 -480 640 -487 640 -541 640 -512 640 -640 427 -424 640 -500 375 -640 446 -480 640 -480 640 -640 425 -428 640 -640 427 -640 389 -480 640 -640 320 -480 640 -480 640 -459 640 -640 469 -640 286 -640 427 -640 480 -640 549 -640 360 -375 500 -612 612 -640 484 -640 427 -640 427 -640 417 -640 480 -640 508 -483 640 -640 640 -612 612 -640 480 -427 640 -640 427 -500 375 -500 400 -480 640 -640 480 -640 640 -640 480 -640 640 -640 320 -480 640 -640 427 -640 480 -640 480 -640 480 -375 500 -640 427 -427 640 -640 428 -640 480 -640 389 -640 480 -640 428 -640 480 -500 375 -640 425 -640 429 -640 427 -640 480 -640 513 -640 344 -640 480 -429 640 -480 640 -500 394 -500 375 -500 354 -426 640 -500 343 -640 428 -640 427 -640 480 -640 423 -150 200 -640 426 -640 360 -640 480 -481 500 -300 225 -640 426 -480 640 -640 423 -500 375 -480 640 -427 640 -640 360 -600 473 -640 480 -640 427 -640 427 -640 427 -640 480 -640 464 -375 500 -427 640 -427 640 -640 400 -480 640 -640 427 -500 332 -480 640 -640 497 -427 640 -427 640 -640 425 -360 640 -633 640 -591 640 -480 360 -640 427 -640 427 -640 439 -427 640 -640 481 -480 640 -480 640 -427 640 -640 427 -500 400 -478 640 -500 375 -640 479 -640 427 -640 427 -640 513 -640 360 -640 427 -640 512 -640 427 -640 427 -640 480 -640 427 -640 480 -334 500 -640 480 -415 640 -427 640 -640 427 -640 480 -640 640 -500 332 -640 427 -480 640 -640 411 -640 480 -640 419 -500 333 -640 480 -426 640 -482 640 -640 480 -640 480 -640 427 -478 640 -375 500 -640 427 -500 375 -640 425 -59 72 -640 428 -405 500 -640 427 -500 330 -427 640 -427 640 -400 500 -640 480 -375 500 -438 640 -640 480 -500 362 -426 640 -480 640 -480 640 -640 426 -640 480 -640 480 -427 640 -640 480 -640 425 -640 447 -640 360 -640 480 -640 428 -500 399 -500 332 -640 427 -640 480 -357 500 -640 444 -640 426 -456 640 -480 640 -640 335 -478 640 -640 427 -640 480 -640 425 -640 461 -500 375 -640 480 -427 640 -480 640 -499 500 -640 480 -640 427 -640 424 -640 426 -640 429 -500 480 -640 426 -480 640 -640 427 -640 427 -500 375 -480 640 -326 246 -640 416 -640 427 -640 391 -640 427 -640 427 -640 426 -640 423 -500 375 -640 640 -640 480 -640 426 -640 427 -640 480 -640 427 -640 427 -640 426 -428 640 -480 640 -640 427 -640 427 -375 500 -426 640 -480 640 -640 360 -640 457 -640 480 -640 480 -640 427 -640 480 -640 480 -640 480 -480 640 -480 640 -612 612 -428 640 -640 480 -640 425 -639 640 -480 640 -640 486 -427 640 -640 481 -640 426 -640 400 -640 480 -427 640 -551 640 -640 426 -640 480 -640 480 -640 480 -640 480 -375 500 -640 480 -640 428 -479 640 -640 513 -604 402 -519 640 -640 401 -640 360 -640 425 -500 333 -425 640 -640 425 -640 480 -640 419 -500 375 -640 640 -640 427 -640 427 -640 480 -640 414 -612 612 -480 640 -480 640 -478 640 -480 640 -640 480 -500 375 -640 640 -640 428 -640 426 -640 480 -640 463 -640 480 -640 428 -640 427 -640 480 -500 333 -500 377 -640 480 -640 454 -640 347 -500 331 -640 427 -640 427 -640 480 -500 375 -640 405 -432 640 -640 427 -500 400 -640 480 -640 480 -640 602 -192 640 -640 480 -640 484 -480 640 -640 427 -500 334 -640 480 -640 480 -375 500 -640 429 -640 347 -640 426 -640 480 -640 480 -640 427 -640 449 -640 427 -640 427 -480 640 -427 640 -640 466 -612 612 -480 640 -640 427 -640 426 -640 424 -640 429 -424 640 -640 425 -640 449 -640 426 -427 640 -640 480 -640 427 -640 480 -640 534 -640 480 -480 640 -480 640 -640 318 -640 426 -640 427 -640 493 -640 427 -640 480 -640 480 -640 380 -640 480 -480 640 -640 480 -640 396 -640 480 -640 427 -640 480 -462 371 -640 461 -640 427 -485 640 -500 640 -368 640 -480 640 -640 427 -640 480 -508 640 -640 424 -293 500 -500 375 -429 640 -640 426 -640 480 -640 480 -640 480 -640 481 -640 360 -640 427 -335 500 -640 479 -640 480 -640 427 -640 427 -640 416 -499 640 -640 480 -480 640 -640 425 -640 480 -640 480 -640 425 -640 426 -640 306 -480 640 -480 640 -413 640 -640 268 -375 500 -640 427 -640 480 -500 375 -640 284 -640 480 -480 640 -640 427 -480 640 -406 640 -640 480 -500 375 -480 640 -640 467 -480 640 -426 640 -640 427 -640 427 -427 640 -640 480 -500 333 -331 500 -480 640 -478 640 -423 640 -361 640 -640 480 -640 429 -640 640 -506 640 -640 500 -640 427 -500 333 -480 640 -612 612 -429 640 -375 500 -640 480 -427 640 -640 427 -640 428 -640 427 -500 375 -640 506 -383 640 -640 426 -640 428 -640 480 -640 427 -500 333 -640 480 -356 640 -426 640 -612 612 -640 512 -640 424 -640 480 -640 480 -640 480 -640 480 -640 426 -478 640 -640 424 -426 640 -425 640 -640 428 -500 375 -333 500 -500 333 -612 612 -425 640 -640 480 -640 429 -640 426 -640 426 -640 480 -640 480 -640 427 -640 425 -640 360 -500 333 -480 640 -640 474 -480 640 -640 428 -640 483 -446 597 -640 413 -500 375 -480 640 -640 427 -500 333 -640 427 -640 368 -500 375 -640 368 -640 640 -465 640 -428 640 -640 428 -640 383 -500 375 -640 427 -640 403 -640 480 -640 466 -333 500 -640 480 -640 426 -480 640 -640 426 -640 426 -640 480 -640 480 -640 478 -640 422 -640 480 -640 426 -640 480 -480 640 -640 480 -640 427 -640 427 -427 640 -612 612 -612 612 -640 427 -640 406 -548 640 -640 427 -640 512 -428 640 -500 333 -500 376 -640 419 -640 400 -424 640 -500 375 -612 612 -640 480 -640 426 -640 456 -640 425 -640 480 -640 480 -428 640 -427 640 -453 640 -640 427 -640 480 -612 612 -640 480 -427 640 -640 480 -360 640 -500 375 -333 500 -640 426 -640 278 -500 334 -640 427 -510 640 -640 424 -500 368 -640 478 -640 480 -640 383 -375 500 -480 640 -640 480 -640 480 -640 480 -500 375 -640 427 -640 425 -427 640 -480 640 -640 455 -640 434 -640 427 -521 640 -640 425 -426 640 -480 640 -640 427 -640 429 -640 480 -640 427 -640 428 -640 480 -640 427 -480 640 -640 480 -640 480 -426 640 -508 640 -448 500 -428 640 -640 427 -640 425 -640 480 -612 612 -640 426 -612 612 -640 427 -640 480 -640 480 -480 640 -500 219 -640 480 -640 374 -426 640 -414 640 -640 427 -640 427 -640 538 -640 426 -480 640 -426 640 -640 480 -640 480 -640 480 -480 640 -640 431 -500 333 -640 427 -428 640 -640 427 -640 425 -500 402 -640 425 -640 480 -640 480 -426 640 -640 480 -384 640 -521 617 -478 640 -428 640 -640 427 -640 480 -640 480 -640 426 -640 480 -640 214 -640 609 -640 427 -640 480 -612 612 -640 398 -480 640 -640 480 -640 426 -640 426 -427 640 -428 640 -640 480 -640 480 -640 480 -427 640 -500 375 -375 500 -640 480 -480 640 -500 375 -640 640 -640 480 -480 640 -375 500 -640 594 -480 640 -500 369 -640 427 -640 480 -640 426 -500 375 -427 640 -640 395 -640 424 -640 427 -640 428 -480 640 -640 480 -480 640 -375 500 -640 427 -640 427 -640 482 -427 640 -429 640 -500 375 -334 500 -640 567 -640 236 -612 612 -640 474 -640 480 -640 443 -640 480 -427 640 -640 429 -424 640 -640 389 -640 426 -640 427 -428 640 -640 480 -492 640 -500 336 -297 500 -640 424 -640 480 -640 427 -351 494 -426 640 -640 426 -500 375 -640 427 -640 428 -640 480 -640 423 -494 640 -375 500 -425 640 -306 408 -640 360 -640 480 -640 640 -500 380 -500 375 -640 480 -640 478 -500 375 -640 426 -638 640 -640 480 -333 500 -480 640 -640 427 -500 375 -500 283 -640 481 -640 426 -500 394 -640 427 -640 480 -268 400 -640 473 -640 408 -640 480 -640 427 -427 640 -640 427 -640 266 -332 500 -640 427 -640 425 -426 640 -500 337 -640 427 -568 320 -556 640 -640 480 -500 333 -500 375 -640 482 -288 432 -640 427 -640 480 -640 480 -500 375 -640 458 -640 427 -640 480 -640 480 -360 640 -640 480 -640 427 -640 426 -640 428 -640 480 -427 640 -480 640 -427 640 -333 500 -480 640 -640 427 -428 640 -480 640 -427 640 -424 640 -500 331 -500 414 -480 640 -500 346 -360 640 -640 480 -640 421 -640 425 -640 480 -480 640 -426 640 -480 640 -640 425 -481 640 -640 427 -500 334 -640 429 -500 333 -480 640 -375 500 -640 480 -640 427 -640 404 -480 640 -640 336 -640 480 -640 427 -424 640 -640 428 -640 426 -640 359 -640 424 -640 360 -640 426 -640 427 -640 480 -480 640 -640 480 -640 480 -640 427 -640 360 -640 427 -640 427 -640 480 -640 427 -426 640 -640 640 -500 404 -640 480 -640 480 -640 427 -640 427 -640 480 -640 427 -640 640 -640 413 -450 600 -640 427 -333 500 -240 320 -640 433 -640 480 -640 480 -480 640 -640 424 -425 640 -456 640 -500 375 -640 427 -484 640 -640 548 -640 480 -319 212 -640 480 -425 640 -400 600 -640 480 -640 387 -640 427 -396 640 -640 480 -640 480 -480 640 -640 480 -500 375 -640 480 -425 640 -640 152 -480 640 -467 640 -640 428 -309 500 -334 500 -640 457 -480 640 -640 480 -428 640 -640 427 -640 448 -640 428 -640 512 -500 375 -640 427 -640 480 -640 480 -640 480 -640 426 -640 427 -640 489 -375 500 -640 488 -640 427 -640 427 -640 427 -640 480 -640 480 -640 480 -500 375 -500 335 -640 480 -640 480 -480 640 -640 349 -480 640 -480 640 -640 428 -480 640 -640 329 -511 640 -640 427 -640 480 -640 480 -640 480 -480 640 -640 480 -500 375 -640 427 -640 491 -477 640 -640 426 -640 480 -640 480 -500 331 -427 640 -512 640 -640 426 -640 289 -500 333 -640 640 -640 427 -640 480 -640 429 -640 431 -640 427 -640 426 -640 480 -640 427 -640 426 -640 480 -640 480 -640 480 -500 375 -640 480 -480 640 -640 427 -640 427 -640 610 -640 427 -480 640 -500 358 -640 429 -640 480 -480 640 -426 640 -640 426 -427 640 -640 640 -640 426 -640 425 -500 334 -640 480 -640 216 -425 640 -640 427 -640 416 -375 500 -640 480 -640 512 -481 640 -640 480 -640 415 -480 640 -640 360 -640 426 -480 640 -640 424 -640 427 -375 500 -432 640 -640 480 -640 349 -640 424 -500 333 -428 640 -480 640 -640 461 -640 422 -640 429 -640 480 -640 480 -640 480 -640 640 -640 480 -640 454 -640 371 -481 640 -640 640 -640 480 -640 480 -640 425 -640 640 -640 452 -640 315 -640 427 -640 368 -612 612 -500 375 -640 457 -640 579 -640 427 -427 640 -600 367 -640 480 -628 640 -640 360 -640 480 -640 427 -480 640 -479 640 -640 234 -640 420 -500 375 -640 480 -640 427 -640 480 -640 480 -640 427 -612 612 -500 400 -500 333 -640 480 -427 640 -640 427 -334 640 -612 612 -640 480 -640 427 -612 612 -640 480 -489 640 -427 640 -640 428 -640 427 -640 509 -640 480 -500 102 -427 640 -640 428 -640 480 -640 360 -588 640 -423 640 -640 507 -375 500 -375 500 -612 612 -640 428 -427 640 -500 375 -640 480 -640 480 -640 480 -640 427 -640 427 -640 383 -640 428 -640 480 -640 425 -640 426 -640 472 -640 400 -639 640 -500 333 -500 375 -375 500 -500 333 -640 480 -640 426 -640 424 -427 640 -640 427 -640 425 -640 480 -640 427 -500 375 -640 409 -500 375 -640 423 -640 424 -640 425 -640 470 -640 480 -640 480 -612 612 -640 640 -640 480 -640 426 -640 427 -612 612 -640 480 -426 640 -640 401 -640 253 -640 427 -640 427 -427 640 -640 480 -640 427 -640 480 -640 588 -640 495 -640 429 -640 427 -640 480 -640 427 -491 500 -480 640 -640 406 -640 480 -640 425 -427 640 -640 425 -640 427 -427 640 -640 427 -500 333 -640 427 -500 375 -640 349 -426 640 -640 480 -375 500 -640 480 -426 640 -640 360 -640 425 -640 484 -426 640 -333 500 -640 480 -640 480 -640 427 -640 361 -640 480 -640 425 -640 379 -640 480 -640 480 -423 640 -323 500 -640 377 -640 427 -640 480 -640 424 -640 360 -640 480 -640 474 -640 480 -640 489 -640 480 -500 331 -480 640 -584 640 -333 500 -640 427 -640 429 -640 427 -640 480 -640 480 -640 427 -480 640 -426 640 -640 450 -640 480 -640 425 -640 427 -640 480 -640 427 -640 480 -640 480 -480 640 -478 640 -640 427 -640 480 -640 427 -480 640 -640 480 -640 480 -640 427 -478 640 -427 640 -640 427 -427 640 -640 375 -500 375 -640 427 -640 427 -591 640 -640 480 -640 480 -480 640 -640 480 -640 480 -480 640 -640 480 -640 381 -640 480 -500 393 -640 480 -424 640 -640 480 -640 480 -429 640 -640 427 -640 480 -500 375 -428 640 -314 500 -640 427 -640 480 -480 640 -550 473 -640 457 -640 480 -640 480 -480 640 -640 426 -640 480 -366 640 -640 378 -457 640 -640 503 -640 427 -427 640 -640 480 -510 640 -640 420 -640 625 -375 500 -500 375 -640 480 -640 480 -640 427 -427 640 -640 458 -640 481 -427 640 -427 640 -640 480 -640 427 -612 612 -640 425 -640 360 -640 480 -640 391 -612 612 -640 427 -640 427 -640 480 -640 480 -640 480 -640 427 -640 289 -480 640 -263 350 -640 479 -640 426 -480 640 -640 480 -640 640 -480 640 -640 427 -640 480 -537 403 -427 640 -427 640 -480 640 -438 640 -640 427 -500 375 -640 480 -429 640 -480 640 -500 338 -640 424 -500 375 -640 438 -640 424 -640 303 -612 612 -640 480 -480 640 -640 425 -640 640 -640 480 -513 640 -500 332 -640 427 -500 486 -640 444 -640 424 -427 640 -640 480 -480 640 -640 427 -640 427 -640 480 -640 427 -640 480 -640 431 -640 426 -640 480 -640 429 -375 500 -480 640 -640 480 -640 427 -640 427 -640 444 -480 640 -640 480 -240 320 -640 480 -500 308 -640 478 -640 427 -640 480 -640 480 -640 425 -640 601 -500 333 -640 480 -500 375 -640 427 -640 425 -640 427 -480 640 -640 427 -640 426 -500 333 -640 480 -640 425 -500 400 -640 479 -640 427 -640 425 -640 424 -640 480 -375 500 -500 375 -333 500 -640 467 -640 480 -640 428 -424 640 -640 480 -640 640 -640 469 -640 428 -640 427 -375 500 -640 640 -500 375 -640 427 -500 334 -334 500 -640 424 -427 640 -426 640 -480 640 -640 416 -640 427 -500 375 -640 480 -640 480 -640 382 -640 480 -500 472 -640 426 -640 426 -640 427 -640 426 -375 500 -508 640 -640 418 -333 500 -640 480 -640 480 -640 401 -480 640 -426 640 -640 478 -480 640 -640 428 -375 500 -427 640 -640 427 -640 536 -640 409 -640 413 -640 425 -478 640 -640 396 -640 480 -640 360 -640 480 -640 427 -480 640 -640 425 -640 425 -640 480 -640 424 -640 484 -640 429 -640 427 -480 640 -500 375 -500 333 -500 375 -500 375 -480 640 -500 333 -427 640 -500 311 -427 640 -480 640 -640 480 -640 480 -640 427 -428 640 -640 424 -640 427 -640 480 -333 500 -640 407 -640 428 -640 334 -480 640 -640 427 -615 461 -428 640 -427 640 -640 426 -480 640 -640 424 -500 332 -640 320 -640 425 -583 640 -500 375 -640 480 -624 640 -640 217 -640 400 -360 270 -500 375 -640 426 -640 430 -640 480 -285 640 -640 480 -640 480 -640 427 -444 640 -480 640 -640 403 -640 427 -640 427 -640 461 -640 427 -640 511 -640 480 -640 320 -427 640 -480 640 -640 427 -640 333 -640 457 -640 441 -640 480 -614 640 -480 640 -333 500 -352 288 -640 457 -640 480 -640 480 -509 503 -425 640 -640 425 -427 640 -640 391 -640 427 -640 480 -480 640 -640 400 -640 482 -375 500 -640 427 -640 511 -480 640 -500 327 -640 427 -640 360 -640 480 -640 480 -478 640 -640 428 -640 480 -640 424 -640 480 -460 640 -480 640 -375 500 -640 434 -640 480 -480 640 -640 426 -640 427 -640 427 -375 500 -640 480 -640 450 -640 428 -640 480 -500 358 -640 424 -640 480 -500 375 -640 480 -480 640 -640 480 -480 640 -640 424 -640 480 -480 640 -640 427 -375 500 -640 451 -640 480 -640 427 -427 640 -480 640 -426 640 -640 359 -640 403 -640 480 -640 480 -436 640 -640 480 -640 426 -640 480 -640 480 -640 480 -640 433 -640 427 -640 480 -480 640 -640 480 -640 480 -640 480 -640 536 -640 480 -500 326 -640 605 -427 640 -640 427 -429 640 -640 480 -640 360 -425 640 -500 333 -427 640 -640 434 -640 427 -426 640 -640 427 -480 640 -640 426 -240 320 -640 424 -640 551 -434 640 -640 424 -375 500 -640 426 -640 427 -500 375 -427 640 -640 356 -640 480 -480 640 -640 480 -375 500 -640 480 -640 427 -640 427 -480 640 -640 424 -640 422 -640 427 -640 480 -640 480 -428 640 -480 640 -480 640 -425 640 -480 640 -478 640 -500 354 -480 640 -640 426 -500 375 -500 333 -480 640 -640 480 -427 640 -640 427 -500 375 -640 481 -640 530 -640 480 -480 640 -495 500 -640 480 -640 503 -426 500 -479 640 -480 640 -640 556 -640 480 -488 286 -640 427 -640 480 -640 480 -461 640 -500 341 -640 416 -500 375 -640 418 -640 480 -457 640 -334 500 -640 427 -500 332 -640 480 -500 500 -640 480 -640 480 -640 354 -640 426 -640 428 -612 612 -640 428 -612 612 -640 480 -640 480 -640 480 -640 427 -640 480 -640 480 -640 427 -640 480 -500 375 -375 500 -640 480 -375 500 -640 480 -500 375 -640 477 -640 425 -640 430 -640 430 -640 426 -640 480 -500 400 -640 478 -640 427 -640 427 -427 640 -640 460 -640 427 -612 612 -640 424 -640 480 -570 640 -640 241 -640 426 -640 480 -640 480 -640 480 -427 640 -640 427 -500 375 -626 640 -640 427 -640 509 -640 480 -382 640 -640 427 -640 640 -480 640 -640 480 -500 375 -500 354 -640 480 -640 425 -640 427 -612 612 -640 427 -640 427 -640 359 -640 427 -640 480 -480 640 -612 612 -480 640 -640 480 -640 480 -500 376 -640 444 -640 426 -501 640 -640 480 -640 480 -500 375 -640 427 -612 612 -443 640 -400 500 -478 640 -640 424 -600 400 -447 640 -466 640 -640 480 -640 386 -640 426 -640 427 -480 640 -640 360 -640 480 -640 427 -500 333 -479 640 -640 590 -427 640 -640 425 -500 324 -640 480 -640 326 -500 375 -426 640 -330 500 -480 640 -640 480 -640 480 -500 375 -612 612 -382 640 -640 427 -426 640 -640 480 -640 480 -640 640 -640 427 -640 360 -500 375 -640 427 -640 480 -428 640 -640 480 -640 419 -640 425 -500 375 -640 481 -640 426 -640 480 -500 432 -640 427 -640 480 -640 427 -480 640 -640 425 -500 400 -480 640 -640 480 -640 480 -640 480 -640 480 -640 427 -640 427 -640 377 -425 640 -612 612 -640 427 -640 463 -640 640 -488 500 -640 456 -640 530 -480 640 -640 427 -500 291 -640 426 -640 427 -640 480 -480 640 -640 427 -640 480 -640 480 -640 427 -480 640 -640 360 -334 500 -640 428 -640 427 -640 427 -357 500 -500 400 -640 427 -640 427 -640 480 -375 500 -640 444 -500 333 -426 640 -427 640 -640 428 -640 427 -500 375 -640 425 -640 480 -640 427 -640 424 -500 492 -500 375 -640 480 -640 427 -640 480 -640 504 -500 375 -640 424 -640 386 -640 480 -480 640 -640 422 -640 480 -640 426 -500 335 -640 427 -335 500 -523 640 -640 426 -640 420 -360 270 -423 640 -640 427 -640 420 -500 375 -428 640 -500 335 -640 428 -640 480 -640 426 -640 480 -500 375 -427 640 -426 640 -640 368 -500 333 -640 360 -640 480 -427 640 -427 640 -640 360 -640 410 -480 640 -640 427 -640 330 -334 500 -640 427 -640 640 -500 349 -500 332 -640 430 -500 375 -640 480 -640 490 -640 480 -640 428 -640 428 -640 480 -640 480 -332 500 -640 379 -640 427 -478 640 -640 427 -640 427 -640 480 -640 640 -640 406 -481 640 -640 502 -640 480 -640 478 -640 425 -500 375 -640 480 -640 426 -640 390 -640 480 -640 480 -375 500 -640 427 -480 640 -640 480 -427 640 -640 426 -612 612 -640 480 -640 284 -500 375 -480 640 -640 483 -640 481 -640 427 -500 375 -573 598 -640 428 -640 291 -500 339 -426 640 -500 332 -640 425 -457 640 -612 612 -640 400 -640 427 -375 500 -500 334 -640 427 -640 361 -640 400 -640 631 -640 320 -640 480 -480 640 -640 480 -640 480 -640 427 -500 375 -500 483 -640 480 -500 377 -640 480 -500 333 -640 491 -640 508 -640 426 -500 333 -640 480 -640 480 -640 468 -640 360 -640 427 -640 443 -629 640 -640 282 -640 383 -640 478 -640 427 -640 480 -500 375 -640 427 -640 480 -495 640 -333 500 -640 424 -640 429 -640 430 -640 480 -640 480 -640 480 -491 640 -640 424 -640 428 -640 427 -640 480 -640 482 -640 441 -500 375 -500 375 -500 375 -640 458 -640 427 -640 427 -640 480 -640 424 -426 640 -393 640 -640 426 -640 424 -640 229 -640 480 -323 640 -640 478 -500 375 -612 612 -640 383 -640 360 -333 500 -427 640 -640 427 -640 257 -500 333 -640 480 -640 427 -640 424 -640 458 -640 480 -640 427 -640 427 -640 480 -640 517 -640 360 -500 375 -427 640 -640 480 -500 375 -640 480 -335 500 -600 450 -500 333 -431 640 -640 480 -640 427 -640 478 -640 426 -640 521 -640 428 -640 480 -640 479 -640 640 -640 480 -640 427 -500 375 -640 480 -640 480 -640 480 -500 357 -640 586 -640 480 -500 333 -500 349 -480 640 -500 333 -640 478 -467 640 -426 640 -640 480 -424 640 -500 500 -640 426 -640 480 -478 640 -640 360 -640 480 -428 640 -640 428 -640 428 -640 574 -640 480 -480 640 -640 480 -640 427 -640 480 -640 480 -640 480 -640 427 -500 375 -640 427 -500 375 -640 480 -640 471 -500 375 -602 640 -500 375 -480 640 -640 480 -640 427 -640 427 -427 640 -640 427 -640 428 -640 427 -640 438 -640 480 -480 640 -640 400 -500 375 -480 640 -450 481 -425 640 -640 480 -428 640 -500 375 -640 424 -640 427 -570 640 -640 480 -640 427 -640 523 -450 600 -640 427 -528 604 -640 439 -610 423 -500 499 -427 640 -640 425 -640 427 -640 480 -426 640 -640 480 -640 425 -640 360 -480 640 -640 427 -640 426 -480 640 -640 443 -640 484 -640 480 -640 480 -500 333 -500 375 -480 640 -500 374 -640 423 -500 375 -640 361 -640 415 -500 375 -431 640 -435 640 -640 424 -640 360 -612 407 -640 427 -426 640 -640 640 -640 480 -478 640 -640 517 -640 480 -402 600 -296 444 -640 427 -480 640 -640 428 -427 640 -480 360 -500 255 -640 383 -640 426 -480 640 -500 334 -500 375 -500 335 -480 640 -640 480 -500 333 -640 480 -640 397 -640 428 -480 364 -640 427 -640 428 -640 360 -640 480 -640 426 -640 427 -427 640 -640 480 -640 428 -640 484 -640 425 -254 192 -640 484 -640 500 -640 480 -640 480 -640 424 -640 480 -640 480 -640 428 -429 640 -480 640 -428 640 -449 640 -640 424 -612 612 -640 527 -612 612 -500 375 -336 500 -640 480 -640 427 -640 427 -640 428 -500 333 -640 427 -480 640 -640 509 -640 457 -640 427 -640 427 -640 425 -640 480 -640 480 -500 334 -500 375 -640 427 -640 428 -427 640 -640 480 -612 612 -500 333 -640 544 -640 480 -640 427 -640 427 -604 453 -375 500 -640 360 -640 480 -640 480 -640 427 -640 427 -597 640 -640 428 -640 359 -640 427 -427 640 -459 640 -526 640 -640 424 -427 640 -640 513 -359 500 -640 437 -640 481 -640 480 -500 375 -640 427 -640 480 -640 480 -640 425 -640 512 -640 449 -500 333 -640 480 -640 424 -457 640 -640 427 -640 427 -640 480 -640 427 -500 333 -500 334 -640 472 -500 333 -640 478 -640 480 -333 640 -640 480 -500 375 -640 427 -640 427 -640 480 -480 640 -640 480 -640 426 -640 429 -508 640 -640 359 -480 640 -640 427 -640 480 -640 427 -500 375 -640 480 -427 640 -640 427 -640 480 -640 480 -640 428 -640 478 -375 500 -640 378 -640 429 -640 480 -500 333 -500 500 -443 450 -640 418 -640 480 -640 427 -640 427 -480 640 -640 424 -640 426 -583 640 -500 317 -500 239 -640 480 -640 427 -640 427 -640 480 -500 500 -480 640 -427 640 -640 428 -612 612 -640 480 -640 427 -363 500 -640 480 -480 640 -640 480 -640 427 -640 360 -375 500 -640 480 -480 640 -480 640 -640 329 -303 640 -640 479 -640 427 -640 426 -640 425 -480 640 -481 640 -322 640 -375 500 -480 640 -640 640 -640 321 -480 640 -500 375 -612 612 -640 480 -640 426 -640 427 -640 446 -500 375 -640 428 -480 640 -640 424 -640 427 -640 480 -640 640 -556 640 -640 443 -449 640 -640 425 -640 427 -500 375 -640 480 -500 400 -424 640 -640 480 -640 480 -640 425 -640 428 -640 427 -480 640 -640 427 -640 424 -640 480 -640 513 -640 428 -427 640 -640 479 -640 483 -640 480 -640 427 -500 375 -640 480 -640 431 -640 426 -500 375 -640 425 -333 500 -640 480 -640 480 -640 480 -640 383 -640 360 -480 640 -640 425 -427 640 -427 640 -480 640 -640 480 -640 480 -612 612 -480 640 -640 454 -640 480 -500 319 -500 485 -426 640 -640 480 -640 392 -640 426 -612 612 -500 383 -427 640 -640 427 -640 431 -640 427 -640 452 -500 335 -640 449 -640 429 -640 480 -640 453 -640 426 -640 473 -640 473 -640 480 -640 480 -640 419 -375 500 -640 427 -640 427 -640 427 -426 640 -640 360 -640 569 -640 480 -640 427 -425 640 -640 427 -500 207 -480 640 -500 375 -640 427 -640 376 -640 480 -640 456 -612 612 -500 332 -640 480 -640 480 -640 462 -640 427 -640 427 -427 640 -640 480 -640 480 -400 500 -500 375 -640 350 -640 640 -439 640 -640 480 -640 480 -640 480 -640 480 -569 640 -640 356 -640 437 -640 427 -640 428 -426 640 -640 376 -640 308 -640 469 -640 373 -640 480 -640 480 -500 375 -640 427 -640 423 -640 480 -640 413 -480 640 -612 612 -640 480 -480 640 -427 640 -640 427 -640 430 -480 640 -640 471 -640 480 -640 426 -640 480 -436 640 -640 426 -612 612 -425 640 -640 480 -640 427 -640 417 -640 426 -640 480 -512 640 -640 427 -575 575 -640 174 -640 441 -640 504 -640 480 -640 480 -480 640 -416 640 -333 500 -640 436 -640 480 -640 480 -640 427 -640 480 -640 480 -640 475 -640 423 -640 480 -640 478 -640 401 -640 425 -640 414 -640 478 -500 405 -500 375 -640 439 -640 426 -640 480 -640 456 -500 375 -640 480 -500 375 -640 428 -640 204 -640 427 -640 426 -640 480 -640 426 -624 640 -640 640 -640 193 -500 375 -640 428 -427 640 -486 640 -640 360 -640 242 -640 424 -640 360 -640 480 -640 479 -500 377 -640 606 -640 482 -640 425 -640 480 -604 453 -480 397 -427 640 -640 480 -500 448 -320 240 -500 500 -640 210 -640 424 -500 341 -640 480 -480 360 -500 218 -640 338 -500 470 -640 490 -640 479 -425 640 -640 480 -640 427 -640 478 -640 492 -640 480 -500 333 -500 375 -480 640 -640 480 -640 427 -640 515 -640 480 -640 480 -444 595 -640 344 -376 500 -640 427 -640 427 -640 429 -640 428 -640 480 -640 480 -640 427 -640 480 -640 427 -640 428 -336 500 -640 426 -640 577 -480 640 -640 426 -500 331 -640 427 -640 480 -500 375 -640 514 -640 640 -640 480 -630 640 -640 480 -480 640 -612 612 -640 480 -392 218 -640 427 -640 427 -640 425 -640 310 -640 480 -640 480 -640 427 -640 427 -640 425 -640 427 -640 427 -640 426 -640 425 -480 640 -500 375 -500 375 -640 427 -640 480 -640 425 -400 640 -640 423 -640 480 -640 480 -427 640 -640 427 -640 468 -640 424 -640 359 -150 225 -640 385 -640 625 -640 480 -640 480 -640 425 -640 640 -375 500 -640 480 -500 317 -640 427 -640 457 -375 500 -640 480 -640 426 -640 427 -640 351 -640 480 -640 640 -640 480 -480 640 -640 432 -500 167 -480 640 -640 428 -640 429 -427 640 -500 340 -425 640 -500 396 -240 320 -640 427 -640 428 -640 480 -640 480 -640 400 -640 480 -640 427 -640 480 -360 640 -640 424 -375 500 -612 612 -640 533 -640 428 -481 640 -500 500 -640 429 -500 335 -500 375 -500 375 -640 426 -640 427 -640 426 -640 480 -640 427 -333 500 -640 480 -486 640 -427 640 -640 637 -640 480 -500 500 -640 426 -640 428 -427 640 -640 640 -640 427 -480 640 -640 484 -640 426 -640 427 -640 320 -640 305 -640 480 -640 480 -426 640 -640 438 -640 480 -640 480 -640 427 -640 478 -640 481 -375 500 -612 612 -640 177 -500 427 -480 640 -500 333 -426 640 -480 640 -640 574 -640 461 -640 512 -640 428 -640 480 -500 333 -640 509 -640 427 -640 480 -640 528 -425 640 -612 612 -640 427 -640 455 -640 430 -640 375 -640 427 -640 480 -640 480 -500 375 -640 426 -500 332 -640 427 -640 640 -640 509 -640 529 -640 480 -640 415 -640 425 -640 427 -640 480 -640 480 -640 480 -640 640 -427 640 -640 427 -427 640 -480 640 -640 426 -333 500 -640 454 -640 427 -640 480 -640 640 -640 480 -640 429 -424 640 -640 581 -640 331 -500 375 -640 480 -640 427 -640 403 -640 480 -640 426 -640 480 -640 348 -640 298 -640 480 -640 160 -500 385 -425 640 -640 480 -640 480 -433 640 -640 551 -424 640 -640 462 -480 640 -640 424 -500 375 -640 583 -640 427 -427 640 -640 425 -640 521 -640 480 -640 480 -425 640 -640 426 -333 500 -640 424 -480 640 -426 640 -249 640 -640 427 -500 375 -374 500 -612 612 -640 427 -640 480 -308 500 -640 480 -640 466 -640 480 -500 375 -640 480 -640 427 -612 612 -640 480 -640 426 -640 416 -480 640 -500 333 -640 380 -427 640 -640 480 -640 383 -500 335 -500 375 -500 500 -640 441 -346 500 -480 640 -612 612 -640 427 -640 425 -426 640 -640 427 -640 427 -640 427 -640 480 -640 480 -640 478 -640 427 -640 480 -612 612 -640 428 -640 429 -640 480 -500 375 -640 480 -480 272 -640 480 -640 480 -640 560 -500 319 -480 640 -640 427 -640 426 -500 375 -427 640 -640 427 -640 427 -640 425 -500 375 -640 480 -640 480 -426 640 -640 439 -640 480 -640 292 -480 640 -500 347 -480 640 -640 427 -640 480 -480 640 -640 427 -640 478 -640 512 -640 480 -640 480 -500 340 -425 640 -640 480 -640 478 -512 640 -500 375 -640 426 -426 640 -640 480 -640 424 -333 500 -640 328 -480 640 -640 480 -640 480 -447 500 -640 427 -640 371 -480 640 -427 640 -640 480 -500 375 -640 480 -640 211 -640 427 -375 500 -480 360 -640 424 -480 640 -480 640 -480 640 -480 640 -500 500 -612 612 -545 640 -640 480 -427 640 -640 480 -498 640 -500 333 -640 466 -640 416 -640 480 -612 612 -480 640 -322 500 -640 399 -500 375 -640 480 -640 457 -640 480 -640 426 -640 425 -640 480 -640 480 -500 375 -640 427 -375 500 -640 480 -640 480 -640 481 -640 425 -640 421 -426 640 -640 427 -427 640 -612 612 -640 426 -640 360 -640 470 -640 640 -640 427 -640 360 -500 333 -640 430 -640 480 -500 334 -640 425 -640 427 -640 480 -640 429 -614 640 -640 427 -640 338 -640 480 -640 480 -640 427 -640 480 -478 640 -640 481 -514 640 -640 480 -640 426 -640 422 -640 480 -640 348 -640 480 -640 480 -640 426 -640 480 -640 480 -640 427 -500 375 -500 330 -640 427 -640 479 -480 640 -640 480 -612 612 -640 427 -640 427 -361 431 -640 493 -640 480 -612 612 -388 500 -640 425 -427 640 -640 504 -640 428 -640 480 -640 424 -640 425 -640 426 -480 640 -612 612 -640 424 -640 426 -640 480 -640 427 -640 506 -640 425 -401 640 -640 427 -640 482 -640 437 -640 480 -500 328 -640 480 -640 480 -478 640 -500 375 -480 640 -640 360 -640 480 -426 640 -640 437 -640 424 -427 640 -640 518 -640 426 -500 387 -640 480 -640 640 -640 380 -640 480 -640 480 -333 500 -480 640 -640 376 -640 407 -640 493 -640 407 -640 480 -389 640 -640 480 -480 640 -611 640 -640 480 -500 375 -500 332 -640 348 -640 440 -640 480 -640 480 -335 500 -640 480 -500 375 -427 640 -451 640 -494 640 -640 361 -426 640 -640 281 -640 480 -426 640 -640 481 -640 508 -640 411 -609 640 -480 640 -456 640 -612 612 -640 480 -640 640 -375 500 -640 427 -500 333 -640 425 -640 480 -500 375 -500 375 -640 536 -500 375 -640 480 -640 599 -640 426 -500 283 -640 480 -429 640 -640 360 -640 386 -426 640 -640 426 -640 640 -640 425 -640 426 -640 480 -640 427 -369 500 -640 427 -640 480 -640 480 -640 480 -425 640 -427 640 -640 501 -480 640 -640 427 -375 500 -640 480 -640 428 -640 427 -511 640 -480 640 -640 427 -581 345 -640 468 -640 480 -640 579 -640 424 -426 640 -427 640 -640 427 -640 388 -640 480 -640 480 -640 425 -640 428 -333 500 -427 640 -640 426 -500 375 -640 419 -640 480 -640 480 -640 428 -640 640 -640 480 -500 375 -427 640 -640 360 -500 375 -640 426 -640 427 -427 640 -360 640 -640 480 -500 400 -640 426 -640 512 -640 518 -500 406 -640 480 -480 640 -640 478 -640 454 -375 500 -640 480 -480 640 -640 427 -640 360 -500 333 -640 480 -640 427 -426 640 -500 375 -426 640 -375 500 -640 480 -640 427 -640 480 -428 640 -640 418 -640 480 -640 480 -640 428 -640 427 -640 426 -640 480 -640 449 -640 427 -427 640 -425 640 -640 480 -640 479 -640 480 -640 427 -480 640 -640 427 -333 500 -640 480 -426 640 -640 428 -640 478 -500 375 -427 640 -444 640 -640 480 -640 480 -640 427 -640 466 -426 319 -373 640 -640 421 -640 448 -421 640 -640 427 -640 480 -640 445 -480 640 -396 640 -640 480 -640 480 -640 476 -480 640 -640 426 -612 612 -640 394 -640 480 -640 480 -640 480 -500 402 -640 427 -640 428 -640 427 -640 480 -640 480 -640 360 -480 640 -640 480 -504 378 -512 640 -640 480 -640 427 -640 215 -425 640 -500 375 -640 597 -640 427 -612 612 -500 374 -480 640 -640 427 -640 480 -483 640 -480 640 -640 480 -500 329 -500 375 -500 438 -640 425 -567 640 -640 480 -640 480 -375 500 -427 640 -640 480 -500 375 -375 500 -640 480 -640 480 -500 393 -461 640 -640 427 -500 375 -640 499 -500 375 -640 427 -480 640 -350 450 -640 427 -640 640 -640 427 -640 512 -480 640 -400 257 -500 333 -640 356 -640 360 -526 640 -500 333 -640 427 -391 640 -379 640 -640 425 -640 480 -500 375 -640 501 -500 335 -640 480 -500 281 -640 640 -480 640 -480 640 -500 351 -640 427 -480 640 -480 640 -640 480 -640 480 -500 375 -371 500 -640 480 -427 640 -640 424 -640 427 -500 381 -500 297 -640 480 -480 640 -640 436 -480 640 -640 518 -480 640 -640 321 -640 428 -640 480 -640 553 -500 500 -480 640 -493 640 -500 233 -640 427 -640 480 -640 480 -640 458 -500 375 -640 480 -500 332 -375 500 -640 480 -640 427 -640 480 -640 480 -640 268 -427 640 -640 480 -427 640 -640 427 -500 333 -640 457 -640 480 -640 480 -612 612 -640 480 -640 427 -500 370 -640 427 -640 427 -640 480 -640 480 -640 480 -500 375 -640 478 -640 480 -640 480 -478 640 -640 425 -640 463 -640 480 -612 612 -640 360 -640 427 -640 480 -600 600 -640 480 -375 500 -640 480 -640 454 -500 400 -480 640 -640 480 -398 640 -640 427 -640 427 -640 443 -640 480 -640 427 -640 480 -640 429 -640 478 -640 360 -384 640 -414 640 -264 640 -640 359 -640 425 -427 640 -333 500 -612 612 -640 360 -640 480 -500 334 -424 640 -529 640 -640 228 -640 480 -640 480 -640 360 -640 426 -640 480 -640 360 -640 427 -640 359 -640 426 -640 428 -640 309 -640 427 -612 612 -640 478 -640 425 -500 333 -640 426 -640 477 -640 581 -500 375 -640 409 -640 427 -640 480 -428 640 -640 480 -640 480 -480 640 -640 449 -640 480 -640 427 -612 612 -500 375 -640 419 -640 420 -640 478 -640 417 -424 640 -640 425 -640 293 -426 640 -640 480 -640 428 -640 427 -480 640 -500 375 -640 480 -640 480 -640 480 -640 480 -411 640 -640 425 -339 500 -500 375 -640 480 -640 326 -640 480 -640 427 -640 480 -640 427 -640 478 -640 427 -640 427 -640 480 -640 425 -480 640 -640 480 -640 478 -640 427 -640 221 -640 478 -640 428 -612 612 -427 640 -640 426 -640 480 -500 430 -640 401 -640 480 -640 427 -500 300 -640 427 -640 427 -640 480 -640 413 -500 375 -640 478 -612 612 -640 478 -640 480 -640 427 -640 480 -640 427 -640 439 -500 334 -640 480 -640 427 -640 480 -640 424 -457 640 -640 426 -480 640 -640 433 -480 640 -640 480 -432 640 -640 414 -640 480 -500 344 -640 480 -612 612 -427 640 -612 612 -640 425 -640 361 -640 480 -640 394 -500 375 -640 425 -640 478 -640 427 -375 500 -640 593 -381 640 -640 426 -640 424 -500 281 -640 513 -640 480 -333 500 -500 395 -480 475 -480 640 -640 480 -480 640 -428 640 -612 612 -429 640 -640 480 -640 449 -640 430 -500 375 -640 482 -360 640 -478 640 -640 480 -423 640 -427 640 -640 480 -640 478 -640 383 -480 640 -500 375 -480 640 -375 500 -640 480 -640 480 -640 480 -640 480 -480 640 -640 480 -640 564 -640 480 -187 140 -640 427 -500 459 -428 640 -640 428 -375 500 -640 480 -640 504 -640 424 -500 400 -583 640 -640 427 -640 480 -612 612 -640 489 -612 612 -640 480 -469 640 -463 640 -640 480 -640 480 -640 550 -500 407 -500 210 -640 480 -640 640 -640 478 -612 612 -480 640 -500 333 -640 480 -640 429 -640 480 -427 640 -500 333 -640 480 -640 480 -640 424 -640 360 -321 640 -424 640 -640 450 -640 426 -640 471 -640 427 -640 425 -640 426 -640 425 -498 640 -640 427 -612 612 -640 480 -500 167 -640 424 -640 427 -427 640 -640 480 -640 470 -640 427 -640 480 -539 640 -640 480 -640 480 -500 337 -640 480 -500 332 -332 500 -375 500 -640 480 -590 640 -640 507 -480 640 -640 480 -640 480 -640 427 -500 333 -640 472 -640 427 -395 500 -640 427 -640 425 -640 427 -640 480 -640 427 -640 480 -640 425 -640 640 -427 640 -640 360 -640 348 -612 612 -640 426 -640 425 -640 480 -500 335 -640 433 -640 480 -517 640 -480 640 -427 640 -425 640 -480 640 -640 427 -640 480 -480 640 -640 427 -640 480 -640 425 -640 480 -640 427 -640 480 -640 419 -640 483 -640 425 -426 640 -480 640 -640 338 -640 438 -426 640 -640 640 -640 426 -640 486 -640 483 -500 375 -640 496 -640 480 -640 480 -640 389 -500 333 -640 571 -640 338 -493 500 -640 360 -640 383 -500 375 -640 360 -500 375 -427 640 -427 640 -500 333 -427 640 -640 456 -640 427 -640 428 -480 640 -640 360 -500 429 -640 480 -640 427 -640 427 -335 500 -640 425 -640 478 -640 640 -500 334 -640 480 -640 480 -640 423 -640 480 -640 427 -480 640 -500 375 -640 480 -640 426 -640 427 -640 480 -481 640 -640 425 -640 480 -427 640 -640 430 -640 427 -427 640 -612 612 -640 458 -640 480 -640 480 -640 427 -640 578 -375 500 -640 480 -640 640 -425 640 -500 375 -640 427 -640 480 -640 478 -640 480 -500 375 -640 427 -500 360 -500 375 -640 480 -640 424 -640 480 -417 556 -640 427 -640 480 -612 612 -640 480 -640 480 -480 480 -640 425 -402 640 -640 480 -425 640 -640 425 -333 500 -640 428 -426 640 -427 640 -640 427 -640 480 -640 478 -375 500 -333 500 -500 333 -640 480 -519 640 -500 334 -500 375 -478 640 -640 458 -480 640 -500 376 -480 640 -640 427 -640 426 -427 640 -500 389 -480 640 -640 480 -640 480 -640 480 -500 346 -461 640 -427 640 -640 480 -375 500 -640 493 -640 480 -640 427 -640 480 -640 480 -640 425 -427 640 -640 480 -500 375 -500 332 -640 427 -640 427 -640 480 -612 612 -500 338 -640 450 -640 427 -640 443 -610 493 -640 427 -480 640 -640 480 -481 640 -640 472 -640 436 -640 426 -455 640 -480 640 -640 480 -640 480 -640 480 -640 480 -500 375 -640 426 -640 480 -640 480 -480 640 -640 640 -640 427 -640 427 -640 480 -489 500 -640 480 -640 427 -640 640 -640 640 -640 464 -478 640 -640 367 -640 320 -640 427 -640 427 -427 640 -640 427 -640 504 -640 322 -640 585 -640 480 -640 468 -500 336 -640 323 -612 612 -640 427 -640 426 -640 480 -640 360 -426 640 -640 377 -480 640 -640 425 -640 427 -640 424 -640 422 -482 640 -640 480 -640 425 -640 478 -640 479 -427 640 -478 640 -640 429 -640 594 -640 360 -428 640 -640 523 -640 396 -640 424 -640 480 -640 359 -640 428 -640 511 -640 561 -640 320 -404 640 -500 375 -333 500 -640 383 -640 457 -480 640 -640 360 -640 429 -640 480 -640 480 -426 640 -426 500 -500 333 -426 640 -480 640 -480 640 -640 427 -640 360 -451 640 -604 453 -500 335 -457 640 -640 427 -640 425 -500 333 -500 328 -612 612 -640 427 -480 640 -640 480 -500 253 -640 425 -480 640 -640 457 -480 640 -640 427 -427 640 -640 494 -640 421 -640 426 -640 480 -640 480 -640 424 -500 332 -640 427 -640 427 -500 332 -448 500 -640 425 -500 375 -640 428 -640 480 -640 480 -640 361 -500 375 -640 435 -640 427 -375 500 -640 640 -500 339 -400 267 -640 432 -640 480 -480 640 -640 480 -427 640 -640 427 -640 480 -640 480 -640 427 -640 251 -640 404 -640 426 -640 427 -640 427 -640 320 -375 500 -640 248 -640 480 -640 428 -428 640 -581 604 -640 426 -640 480 -640 426 -640 480 -640 427 -640 480 -612 612 -480 640 -640 480 -640 388 -640 480 -640 424 -500 375 -640 427 -500 375 -612 612 -640 480 -612 612 -500 375 -640 480 -427 640 -640 640 -640 480 -500 375 -640 427 -427 640 -500 383 -640 428 -640 480 -500 469 -426 640 -640 491 -640 429 -640 480 -640 480 -640 512 -500 400 -640 428 -640 480 -500 332 -480 640 -500 333 -640 483 -480 640 -640 480 -375 500 -640 480 -640 480 -500 334 -640 480 -254 500 -640 480 -640 426 -480 640 -640 601 -640 480 -640 360 -640 427 -424 640 -640 480 -640 427 -425 640 -480 640 -612 612 -640 424 -640 480 -640 361 -640 480 -640 427 -426 640 -640 426 -640 427 -640 427 -480 640 -640 480 -640 480 -640 425 -640 480 -640 427 -640 480 -500 375 -480 360 -480 640 -640 428 -640 480 -429 640 -640 428 -640 480 -640 424 -500 461 -424 640 -640 411 -427 640 -640 320 -640 480 -640 480 -640 480 -640 428 -640 480 -429 640 -640 480 -640 427 -640 427 -640 420 -640 480 -640 480 -640 480 -640 484 -640 512 -500 334 -640 463 -640 427 -640 427 -640 418 -500 238 -500 375 -640 480 -640 481 -640 427 -640 480 -427 640 -640 454 -429 640 -640 427 -640 480 -500 347 -640 480 -640 480 -320 240 -640 480 -500 375 -640 480 -640 427 -333 500 -612 612 -612 612 -640 438 -640 427 -640 482 -480 640 -612 612 -612 612 -640 480 -480 640 -640 507 -640 480 -640 426 -640 480 -480 640 -640 427 -640 415 -640 427 -640 480 -500 376 -541 640 -640 426 -500 375 -500 375 -480 640 -640 512 -640 480 -640 427 -640 426 -612 612 -640 480 -640 480 -640 480 -480 640 -453 604 -640 426 -332 500 -430 640 -480 640 -426 640 -500 400 -640 480 -640 434 -500 372 -640 480 -427 640 -640 480 -640 462 -500 333 -640 480 -640 424 -640 480 -640 369 -500 375 -640 478 -383 640 -640 480 -640 480 -640 480 -640 427 -480 640 -640 406 -640 480 -640 359 -640 427 -640 481 -429 500 -640 427 -640 360 -640 429 -640 480 -427 640 -640 480 -640 429 -640 480 -640 480 -640 480 -640 427 -426 640 -640 360 -640 428 -640 471 -640 428 -640 480 -425 640 -500 333 -640 480 -427 640 -640 402 -640 480 -640 426 -500 375 -640 427 -640 359 -640 453 -640 427 -480 640 -640 423 -480 640 -640 480 -640 427 -640 480 -500 375 -500 375 -640 426 -640 480 -640 480 -640 427 -428 640 -500 453 -640 428 -640 427 -640 480 -640 439 -480 640 -500 333 -640 479 -640 480 -640 640 -500 375 -640 427 -640 360 -500 375 -480 640 -640 480 -480 640 -640 427 -640 425 -640 427 -640 480 -640 428 -640 360 -480 640 -640 441 -375 500 -640 441 -640 640 -480 640 -640 428 -640 259 -640 466 -640 425 -500 380 -640 482 -640 359 -427 640 -640 480 -427 640 -427 640 -640 427 -640 480 -640 426 -444 640 -480 640 -640 480 -480 640 -480 640 -480 640 -640 480 -500 320 -612 612 -640 427 -640 427 -640 427 -640 344 -640 425 -640 387 -478 640 -640 426 -640 427 -640 480 -640 428 -640 426 -500 333 -640 480 -640 480 -425 640 -640 480 -384 640 -640 360 -375 500 -500 400 -640 480 -640 490 -640 480 -640 427 -640 427 -480 640 -640 263 -612 612 -375 500 -500 400 -640 427 -640 480 -640 426 -640 424 -640 590 -640 427 -640 427 -640 480 -640 427 -640 480 -500 334 -431 640 -640 480 -480 640 -640 430 -640 480 -640 480 -640 480 -640 427 -425 640 -640 427 -640 401 -640 429 -480 640 -640 480 -640 507 -500 332 -640 427 -640 427 -486 500 -640 480 -640 480 -375 500 -640 425 -640 481 -640 504 -640 480 -427 640 -640 427 -219 500 -640 427 -480 640 -612 612 -639 640 -640 640 -640 423 -500 375 -640 426 -500 375 -480 640 -640 426 -640 426 -620 640 -640 427 -640 426 -612 612 -640 480 -500 358 -640 426 -640 426 -640 427 -640 479 -640 480 -640 279 -640 480 -424 640 -640 426 -640 480 -500 500 -640 427 -640 432 -640 427 -426 640 -430 640 -425 640 -640 424 -640 480 -640 480 -426 640 -640 480 -640 480 -427 640 -640 480 -427 640 -640 415 -640 427 -640 480 -640 377 -333 500 -640 427 -640 427 -640 480 -375 500 -640 457 -500 375 -500 375 -640 425 -424 640 -427 640 -640 444 -640 486 -480 640 -640 426 -640 480 -480 640 -640 426 -640 425 -640 412 -480 640 -640 480 -427 640 -640 426 -480 640 -640 480 -640 480 -640 480 -427 640 -500 393 -427 640 -480 640 -500 375 -640 589 -640 427 -640 359 -640 480 -640 426 -500 375 -640 480 -423 640 -375 500 -640 427 -640 480 -640 427 -640 427 -640 441 -427 640 -426 640 -640 424 -511 640 -640 428 -427 640 -500 375 -500 331 -500 488 -640 427 -640 480 -640 510 -640 426 -640 480 -640 425 -640 429 -640 427 -359 640 -640 425 -640 383 -375 500 -330 500 -640 480 -640 427 -500 375 -640 426 -500 333 -640 386 -640 427 -400 300 -500 375 -500 375 -640 482 -640 360 -640 480 -640 421 -640 480 -480 640 -525 640 -640 244 -640 480 -482 640 -640 294 -640 480 -640 480 -375 500 -496 640 -640 525 -478 640 -640 480 -640 480 -486 640 -640 426 -640 480 -640 480 -480 640 -640 480 -640 480 -640 480 -640 427 -500 321 -427 640 -427 640 -640 480 -254 336 -640 427 -640 480 -640 640 -400 284 -640 480 -640 541 -640 590 -480 640 -425 640 -640 427 -640 457 -425 640 -640 480 -640 427 -640 425 -640 505 -640 559 -640 426 -640 480 -640 425 -640 427 -500 375 -480 640 -640 427 -479 640 -480 640 -640 478 -640 480 -500 333 -640 480 -640 427 -640 426 -640 511 -640 428 -640 480 -640 426 -480 640 -333 500 -640 480 -640 426 -640 426 -640 427 -458 640 -640 400 -424 640 -640 480 -640 318 -640 427 -360 640 -640 480 -640 480 -640 480 -640 480 -612 612 -640 389 -640 457 -640 480 -500 334 -640 480 -425 640 -640 480 -640 401 -640 480 -640 399 -640 427 -500 274 -213 320 -480 640 -333 500 -640 480 -512 640 -640 427 -640 480 -640 480 -640 427 -640 426 -640 480 -640 379 -640 480 -425 640 -427 640 -640 480 -640 640 -500 333 -354 500 -640 480 -426 640 -640 480 -503 640 -640 480 -427 640 -640 480 -500 375 -640 478 -500 375 -640 480 -427 640 -640 425 -640 427 -640 426 -500 332 -516 640 -428 640 -640 480 -401 131 -640 443 -480 640 -360 640 -480 640 -500 375 -640 474 -503 640 -640 480 -640 427 -640 480 -640 480 -640 427 -640 480 -640 456 -640 427 -640 597 -640 450 -640 383 -640 426 -640 428 -640 427 -480 640 -640 480 -640 440 -640 426 -640 457 -640 480 -480 640 -640 429 -640 426 -500 332 -640 360 -640 478 -480 640 -640 427 -640 480 -500 375 -640 480 -640 478 -640 480 -640 427 -500 375 -640 428 -480 640 -426 640 -640 304 -640 480 -640 427 -612 612 -640 480 -640 480 -640 512 -375 500 -640 427 -500 334 -500 374 -333 500 -612 612 -640 400 -640 284 -640 480 -425 640 -640 486 -640 426 -480 640 -640 427 -640 480 -640 480 -426 640 -640 381 -640 426 -640 481 -640 480 -500 351 -427 640 -500 375 -640 427 -640 427 -640 480 -640 480 -640 480 -500 427 -640 425 -640 427 -640 427 -640 480 -600 400 -359 500 -500 375 -640 480 -640 489 -500 375 -529 640 -500 375 -640 480 -480 640 -640 480 -480 640 -640 444 -427 640 -640 425 -640 426 -612 612 -640 480 -500 357 -418 640 -427 640 -427 640 -500 382 -640 480 -426 640 -375 500 -640 478 -640 478 -500 333 -640 493 -500 333 -357 500 -603 640 -480 640 -640 427 -640 427 -612 612 -640 480 -640 453 -500 334 -640 480 -500 375 -640 480 -640 480 -640 426 -640 480 -640 424 -500 335 -480 640 -640 480 -480 640 -480 640 -640 424 -640 427 -480 640 -500 333 -640 427 -500 375 -640 480 -500 375 -640 427 -640 480 -640 427 -500 375 -427 640 -640 471 -640 480 -640 480 -640 579 -640 427 -480 640 -612 612 -373 640 -640 427 -610 391 -640 253 -640 429 -640 426 -640 425 -640 538 -427 640 -480 640 -640 428 -640 424 -640 427 -640 480 -640 349 -480 640 -640 478 -640 351 -640 384 -400 600 -500 375 -640 522 -640 480 -640 518 -640 427 -333 500 -640 391 -480 640 -467 640 -612 612 -640 426 -500 375 -516 640 -480 640 -333 500 -640 480 -364 468 -500 399 -427 640 -500 400 -640 464 -640 480 -640 429 -341 640 -425 640 -375 500 -640 432 -640 334 -640 427 -480 640 -640 480 -500 375 -451 640 -640 480 -640 480 -640 480 -640 427 -640 470 -640 426 -640 430 -640 482 -640 427 -500 375 -640 360 -500 375 -500 375 -640 462 -612 612 -640 480 -640 425 -426 640 -500 334 -640 427 -436 640 -640 480 -500 375 -640 427 -500 363 -640 457 -500 334 -500 429 -480 640 -640 428 -640 427 -640 427 -500 332 -640 319 -500 336 -640 481 -432 500 -500 333 -640 360 -640 427 -461 640 -640 480 -500 326 -640 425 -480 640 -640 427 -640 427 -640 431 -640 427 -640 539 -640 487 -427 640 -640 526 -640 427 -640 427 -612 612 -442 500 -640 480 -640 495 -480 640 -424 640 -480 640 -640 459 -640 480 -640 426 -640 427 -640 425 -640 480 -640 427 -640 458 -640 427 -640 362 -640 428 -640 451 -640 423 -480 640 -640 428 -640 480 -640 480 -480 640 -640 480 -640 421 -640 427 -480 640 -480 640 -640 480 -640 428 -480 640 -640 427 -640 480 -640 427 -640 427 -640 427 -427 640 -640 427 -500 375 -640 427 -640 427 -640 426 -439 603 -640 445 -640 480 -640 426 -560 640 -480 640 -640 316 -640 480 -427 640 -480 640 -640 480 -640 427 -431 640 -375 500 -640 480 -640 480 -640 427 -640 428 -640 427 -640 443 -620 367 -640 427 -640 480 -640 427 -640 581 -640 480 -640 480 -640 480 -640 640 -500 375 -640 494 -480 640 -640 480 -640 425 -640 480 -640 480 -554 640 -640 480 -425 640 -478 640 -500 375 -640 480 -640 480 -640 427 -480 640 -640 480 -427 640 -526 640 -500 375 -416 640 -640 427 -640 480 -332 500 -640 424 -427 640 -640 448 -640 640 -640 427 -640 427 -640 480 -640 426 -640 480 -500 375 -480 640 -640 427 -500 375 -640 480 -518 640 -640 480 -640 435 -500 375 -500 375 -639 640 -463 640 -500 324 -500 375 -480 640 -480 640 -640 396 -640 426 -383 640 -640 351 -640 427 -500 493 -640 480 -640 480 -500 375 -640 427 -640 429 -640 480 -640 480 -480 640 -640 452 -500 384 -375 500 -500 334 -640 428 -427 640 -640 480 -640 480 -640 640 -640 480 -640 427 -640 424 -640 427 -640 463 -640 480 -640 480 -640 421 -640 428 -640 427 -478 640 -640 480 -640 427 -500 375 -640 480 -640 427 -640 427 -426 640 -640 480 -640 480 -640 480 -640 480 -640 433 -640 480 -640 425 -640 480 -375 500 -640 428 -640 427 -640 430 -480 640 -480 640 -640 480 -640 398 -640 428 -640 480 -640 478 -426 640 -451 451 -640 480 -640 434 -339 500 -640 511 -640 415 -640 640 -480 640 -374 500 -427 640 -640 427 -640 561 -640 478 -640 427 -640 480 -500 375 -413 640 -640 521 -443 640 -425 640 -375 500 -500 375 -640 480 -640 480 -640 426 -640 426 -427 640 -640 478 -640 480 -612 612 -428 640 -640 480 -602 640 -448 640 -319 500 -500 375 -480 640 -480 640 -640 146 -640 427 -640 427 -640 427 -640 512 -480 640 -295 640 -640 427 -640 475 -640 426 -640 480 -640 360 -640 480 -426 640 -480 640 -640 480 -500 375 -640 427 -640 426 -640 480 -640 427 -640 480 -361 640 -640 480 -640 480 -333 500 -442 640 -640 480 -640 480 -640 427 -640 480 -500 375 -640 449 -500 375 -640 378 -500 376 -480 640 -640 460 -500 375 -640 480 -500 375 -428 640 -427 640 -640 360 -640 427 -640 479 -640 427 -640 480 -500 375 -640 452 -640 405 -640 481 -640 495 -640 427 -640 480 -396 640 -640 360 -640 427 -640 480 -480 640 -640 427 -640 427 -640 480 -640 331 -640 480 -640 432 -500 375 -640 480 -640 480 -640 480 -500 375 -640 427 -640 480 -640 433 -480 640 -640 425 -480 640 -640 480 -480 640 -640 428 -640 480 -571 640 -640 480 -640 480 -500 375 -640 490 -640 424 -640 459 -500 375 -640 360 -612 612 -640 480 -640 426 -640 476 -640 428 -500 375 -640 480 -640 480 -478 640 -640 512 -640 480 -640 418 -640 481 -640 562 -604 403 -640 426 -640 425 -425 640 -640 590 -640 425 -640 414 -500 333 -640 480 -640 428 -640 427 -640 480 -426 640 -479 640 -480 640 -640 480 -640 640 -640 426 -640 516 -500 375 -480 640 -500 375 -640 427 -640 486 -500 375 -500 334 -400 500 -640 428 -640 412 -640 427 -612 612 -640 456 -640 502 -640 424 -640 426 -461 640 -640 480 -480 640 -640 480 -640 601 -640 427 -640 480 -640 360 -640 603 -640 417 -640 480 -640 503 -640 427 -640 480 -640 427 -640 487 -640 441 -640 427 -612 612 -500 375 -427 640 -500 311 -640 426 -640 459 -640 513 -640 426 -500 375 -426 640 -640 480 -427 640 -640 405 -427 640 -640 446 -640 480 -480 640 -640 427 -640 359 -640 424 -486 500 -375 500 -640 480 -640 427 -640 425 -640 406 -640 428 -480 640 -640 481 -640 539 -480 640 -375 500 -500 332 -640 480 -640 428 -640 426 -500 500 -500 333 -640 262 -500 375 -480 640 -480 640 -541 640 -480 640 -640 640 -640 427 -375 500 -640 640 -640 459 -640 480 -640 487 -500 375 -640 429 -424 640 -640 640 -500 372 -640 480 -404 640 -640 480 -480 640 -640 480 -640 427 -640 427 -424 640 -640 426 -640 428 -640 428 -640 480 -640 426 -500 375 -458 640 -640 480 -640 480 -360 640 -480 640 -640 569 -640 480 -640 480 -640 426 -640 427 -640 425 -480 640 -640 455 -640 427 -640 427 -640 480 -640 358 -612 612 -428 640 -640 480 -425 640 -640 427 -640 427 -640 427 -500 332 -640 480 -480 640 -500 375 -640 427 -640 480 -600 450 -640 480 -427 640 -640 352 -640 480 -640 480 -640 480 -480 640 -640 480 -640 427 -640 480 -640 425 -500 333 -427 640 -360 640 -640 552 -480 640 -480 640 -500 375 -640 486 -640 480 -640 360 -307 461 -640 480 -640 427 -426 640 -500 436 -480 640 -500 333 -640 480 -480 640 -640 640 -334 500 -333 500 -425 640 -640 354 -500 375 -640 480 -640 480 -640 480 -480 640 -500 375 -640 508 -640 376 -640 480 -640 480 -640 480 -612 612 -612 612 -423 640 -389 640 -640 640 -500 334 -500 375 -640 480 -332 500 -640 480 -500 333 -490 640 -640 425 -600 449 -640 391 -387 600 -640 360 -425 640 -640 360 -640 480 -640 277 -640 480 -640 428 -640 411 -480 640 -500 375 -640 480 -640 426 -640 427 -640 480 -640 427 -640 427 -480 640 -640 640 -640 640 -640 480 -500 334 -391 640 -640 415 -640 480 -480 640 -640 427 -480 640 -640 480 -389 500 -640 427 -640 396 -640 427 -640 480 -640 480 -640 480 -640 303 -640 480 -640 436 -640 429 -457 640 -640 427 -500 375 -640 427 -640 480 -640 425 -640 480 -640 489 -640 419 -640 569 -640 480 -424 640 -640 427 -640 416 -640 418 -640 371 -640 428 -500 413 -640 427 -640 480 -480 640 -640 561 -640 423 -500 375 -640 480 -640 360 -640 480 -529 640 -640 425 -480 640 -428 640 -640 480 -640 409 -359 640 -427 640 -374 436 -640 428 -640 360 -640 426 -500 375 -640 480 -640 360 -640 427 -480 640 -640 425 -640 480 -500 333 -426 640 -640 427 -640 480 -640 428 -480 640 -480 640 -433 640 -640 428 -640 483 -640 401 -640 428 -480 640 -427 640 -640 298 -427 640 -640 480 -480 640 -427 640 -480 640 -500 332 -640 480 -640 480 -640 480 -640 466 -640 425 -640 480 -640 427 -640 445 -640 427 -484 500 -640 320 -640 480 -612 612 -427 640 -640 480 -640 425 -612 612 -640 426 -640 427 -504 640 -500 375 -425 640 -640 424 -427 640 -640 480 -640 427 -640 427 -640 346 -640 480 -640 427 -640 480 -640 371 -640 426 -640 480 -500 493 -640 480 -640 480 -640 427 -640 480 -640 360 -612 612 -640 418 -640 480 -640 427 -435 640 -640 425 -500 375 -500 375 -429 640 -339 500 -640 426 -640 427 -640 428 -640 427 -375 500 -640 360 -640 384 -640 428 -640 371 -640 424 -640 426 -612 612 -640 480 -500 357 -500 375 -612 612 -640 480 -640 427 -500 333 -640 640 -427 640 -640 267 -640 480 -640 382 -426 640 -640 481 -640 481 -480 640 -490 640 -425 640 -612 612 -640 480 -640 480 -640 427 -480 640 -640 480 -640 427 -640 480 -612 612 -640 426 -424 640 -640 480 -640 427 -640 427 -640 427 -640 426 -500 375 -640 480 -640 401 -375 500 -640 426 -640 480 -640 414 -332 500 -640 436 -640 480 -640 480 -640 480 -480 640 -500 375 -500 235 -640 480 -500 375 -640 476 -480 640 -640 506 -640 427 -640 429 -375 500 -640 480 -375 500 -425 640 -440 640 -640 427 -640 428 -640 480 -640 425 -640 360 -640 480 -640 480 -640 480 -538 640 -427 640 -640 480 -640 480 -640 303 -640 468 -640 426 -640 576 -640 382 -640 476 -640 640 -640 427 -500 375 -640 428 -500 375 -640 480 -640 480 -640 480 -640 480 -500 375 -640 480 -480 640 -480 640 -640 503 -640 430 -640 480 -640 426 -428 640 -428 640 -640 427 -640 351 -640 438 -480 640 -640 640 -640 360 -640 578 -640 480 -640 427 -640 426 -640 427 -480 640 -640 427 -480 640 -640 437 -500 379 -500 374 -640 480 -640 429 -640 428 -640 427 -640 427 -640 480 -480 640 -478 640 -640 480 -427 640 -640 298 -640 480 -640 480 -640 426 -640 480 -640 361 -424 640 -640 480 -640 419 -640 481 -480 640 -640 426 -640 428 -480 640 -480 640 -640 480 -427 640 -640 425 -640 480 -640 427 -640 424 -500 375 -640 427 -640 427 -427 640 -480 640 -640 427 -640 427 -640 428 -640 428 -640 427 -640 425 -500 333 -640 480 -640 427 -640 480 -640 478 -640 426 -500 375 -640 427 -640 498 -640 364 -500 375 -640 427 -640 480 -640 429 -480 640 -480 640 -640 424 -640 478 -640 427 -375 500 -388 500 -640 427 -640 426 -640 383 -640 426 -640 480 -640 396 -640 353 -640 425 -640 374 -640 427 -640 480 -640 480 -640 480 -480 640 -493 640 -640 480 -640 427 -480 640 -640 433 -640 480 -640 425 -640 427 -612 612 -640 495 -480 640 -640 480 -640 480 -640 478 -264 640 -640 427 -436 640 -640 425 -640 428 -640 480 -640 480 -427 640 -425 640 -427 640 -640 344 -500 375 -600 450 -640 480 -640 426 -480 640 -640 458 -640 640 -640 457 -640 426 -640 428 -640 442 -640 480 -640 480 -640 428 -640 480 -640 480 -426 640 -427 640 -640 640 -640 480 -640 640 -640 427 -640 411 -640 507 -640 480 -640 480 -640 425 -612 612 -500 346 -640 640 -640 424 -500 332 -612 612 -640 480 -480 640 -640 480 -500 375 -333 500 -640 427 -640 480 -640 501 -640 359 -640 427 -425 640 -640 432 -640 481 -640 426 -640 480 -640 480 -640 480 -480 640 -640 426 -640 482 -480 640 -640 428 -640 480 -640 428 -640 428 -500 375 -640 578 -640 428 -500 333 -640 480 -640 428 -640 480 -640 410 -640 427 -500 333 -640 426 -640 480 -640 361 -612 612 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -640 487 -640 426 -640 381 -640 428 -640 427 -360 480 -640 361 -480 640 -500 333 -640 478 -428 640 -640 360 -640 427 -640 480 -500 375 -480 640 -375 500 -500 318 -613 640 -427 640 -640 427 -640 480 -480 640 -500 388 -180 240 -640 444 -640 480 -640 426 -500 375 -509 640 -640 426 -640 564 -640 427 -269 640 -640 480 -638 356 -640 480 -458 640 -500 375 -640 480 -480 361 -640 480 -500 375 -640 427 -500 375 -640 360 -640 428 -640 409 -640 427 -640 360 -640 427 -640 640 -640 480 -640 427 -640 412 -306 408 -427 640 -640 425 -640 480 -640 480 -414 640 -640 427 -428 640 -640 304 -640 480 -640 427 -640 425 -640 640 -480 640 -640 480 -640 427 -458 640 -640 480 -480 640 -640 480 -640 427 -640 480 -480 640 -640 428 -480 640 -500 375 -640 429 -640 588 -640 481 -640 418 -434 640 -640 422 -640 427 -640 480 -640 491 -640 426 -640 427 -640 480 -640 480 -500 375 -640 427 -640 510 -478 640 -500 375 -640 456 -640 427 -480 640 -480 640 -640 480 -640 481 -640 501 -427 640 -640 480 -375 500 -640 416 -500 375 -500 375 -640 480 -480 640 -375 500 -640 439 -458 640 -640 399 -500 282 -640 480 -640 427 -640 427 -428 640 -640 480 -640 480 -500 375 -640 426 -425 640 -640 480 -640 480 -640 480 -640 427 -640 427 -640 480 -424 640 -640 437 -640 427 -500 375 -426 640 -640 424 -417 640 -640 480 -640 480 -480 640 -640 480 -640 427 -640 536 -567 640 -640 425 -640 480 -640 457 -640 640 -640 478 -640 360 -640 427 -640 480 -640 427 -333 500 -640 434 -640 425 -640 424 -480 640 -612 612 -640 425 -640 480 -640 438 -495 500 -426 640 -640 427 -429 640 -640 558 -640 428 -640 480 -500 188 -480 640 -640 360 -612 612 -640 425 -640 424 -640 428 -640 480 -640 428 -500 244 -500 375 -500 375 -640 425 -478 640 -640 428 -640 480 -640 427 -500 375 -426 640 -640 480 -640 457 -640 480 -640 320 -640 383 -640 359 -640 436 -640 426 -640 427 -640 361 -640 428 -640 480 -640 424 -640 475 -640 414 -480 640 -360 640 -480 640 -640 480 -612 612 -640 427 -338 450 -640 427 -464 640 -640 421 -640 480 -640 428 -640 427 -500 375 -640 480 -640 427 -640 480 -640 427 -640 480 -500 375 -480 640 -640 426 -640 425 -538 640 -640 480 -640 480 -640 480 -640 480 -478 640 -640 478 -640 427 -640 480 -640 480 -500 375 -640 427 -480 640 -640 480 -427 640 -640 480 -640 509 -640 480 -640 471 -640 480 -612 612 -337 500 -640 480 -427 640 -513 640 -640 480 -474 640 -640 428 -480 640 -325 500 -640 480 -640 426 -640 481 -409 640 -640 360 -640 311 -640 426 -413 640 -640 424 -640 480 -639 640 -640 427 -640 480 -383 500 -427 640 -335 500 -640 427 -640 426 -640 427 -640 480 -640 425 -640 427 -640 427 -640 480 -640 433 -480 640 -640 416 -640 366 -640 427 -640 480 -640 391 -333 500 -640 436 -640 425 -640 428 -640 480 -542 640 -431 640 -640 427 -640 480 -334 500 -640 480 -640 425 -423 640 -425 640 -494 640 -480 640 -640 427 -640 427 -500 375 -550 412 -640 518 -640 429 -640 427 -640 480 -640 481 -640 480 -640 480 -640 477 -640 427 -640 427 -640 487 -640 426 -640 480 -512 384 -640 516 -640 435 -457 640 -480 640 -640 427 -376 500 -413 500 -640 431 -480 640 -427 640 -640 433 -640 480 -640 484 -640 428 -640 359 -640 426 -500 375 -500 375 -500 400 -480 640 -480 640 -450 338 -427 640 -500 333 -640 480 -640 361 -640 480 -427 640 -640 424 -640 425 -375 500 -419 500 -640 427 -500 375 -640 427 -463 640 -640 480 -640 434 -500 333 -500 375 -500 375 -640 427 -480 640 -640 480 -640 480 -640 427 -640 480 -480 640 -640 480 -498 640 -612 612 -640 427 -640 480 -359 640 -500 333 -426 640 -640 480 -424 640 -375 500 -640 493 -500 333 -640 480 -427 640 -640 429 -640 480 -480 640 -640 480 -640 360 -640 460 -640 427 -640 480 -500 334 -640 457 -640 401 -500 381 -640 427 -640 411 -640 424 -640 427 -500 357 -404 640 -463 640 -640 428 -640 427 -640 480 -426 640 -640 426 -426 640 -640 481 -640 427 -640 481 -640 427 -640 427 -480 640 -427 640 -333 500 -640 480 -640 480 -640 428 -425 640 -427 640 -640 480 -640 480 -427 640 -640 426 -640 480 -480 640 -640 426 -503 640 -480 640 -640 480 -333 500 -640 480 -640 426 -640 480 -640 428 -640 480 -480 640 -640 426 -640 427 -640 480 -388 640 -640 374 -640 427 -480 640 -427 640 -500 375 -640 429 -640 585 -640 427 -500 383 -640 427 -640 394 -640 426 -640 480 -333 500 -426 640 -640 480 -427 640 -640 422 -640 480 -640 426 -640 425 -428 640 -640 427 -640 427 -640 425 -640 427 -640 480 -640 348 -640 480 -640 427 -640 480 -345 500 -640 384 -640 480 -640 427 -480 640 -640 427 -640 426 -640 480 -480 640 -332 500 -640 427 -640 480 -640 480 -640 543 -640 429 -640 415 -640 640 -500 377 -500 375 -640 426 -640 480 -640 519 -640 480 -640 361 -427 640 -640 480 -640 429 -640 427 -640 634 -480 640 -479 640 -427 640 -500 375 -500 452 -500 375 -640 431 -640 429 -640 427 -640 426 -640 424 -160 120 -427 640 -640 480 -640 480 -640 424 -427 640 -640 480 -640 417 -640 480 -500 333 -273 500 -640 640 -500 334 -386 336 -640 450 -640 426 -640 480 -427 640 -640 480 -640 480 -625 640 -640 427 -157 160 -480 640 -640 480 -500 367 -640 359 -500 375 -640 428 -500 375 -500 319 -375 500 -640 427 -640 426 -480 640 -640 480 -640 480 -640 427 -640 473 -640 425 -640 394 -383 640 -640 426 -640 427 -640 427 -640 428 -640 427 -640 480 -640 570 -480 640 -500 333 -640 457 -640 422 -640 480 -640 480 -640 640 -640 383 -640 427 -640 425 -640 256 -426 640 -640 427 -640 478 -640 427 -500 375 -640 424 -640 480 -640 478 -500 375 -640 427 -640 427 -640 427 -640 479 -500 334 -375 500 -640 425 -428 640 -640 425 -640 640 -640 428 -434 500 -640 429 -640 503 -640 424 -640 427 -640 480 -640 440 -640 480 -427 640 -640 480 -612 612 -640 425 -640 400 -640 428 -640 480 -640 427 -427 640 -640 446 -640 464 -640 480 -333 500 -640 361 -640 480 -640 480 -427 640 -640 428 -612 612 -426 640 -640 427 -640 480 -500 412 -495 640 -640 426 -427 640 -640 424 -640 427 -640 480 -480 640 -640 480 -413 500 -640 426 -386 640 -640 480 -640 487 -640 480 -480 640 -600 400 -640 480 -500 375 -640 513 -640 426 -640 322 -500 375 -640 480 -427 640 -428 640 -640 480 -640 425 -454 640 -640 424 -427 640 -640 359 -480 640 -640 509 -640 428 -640 480 -480 640 -640 480 -640 480 -640 426 -640 427 -640 480 -640 426 -640 480 -640 479 -640 493 -640 480 -480 640 -640 480 -500 375 -640 427 -640 318 -640 480 -640 480 -640 425 -640 480 -640 533 -640 427 -640 480 -640 426 -640 427 -640 427 -400 600 -640 373 -640 426 -640 424 -640 557 -640 427 -640 427 -640 427 -640 427 -640 413 -426 640 -640 480 -540 640 -640 480 -640 427 -427 640 -640 454 -640 480 -640 480 -480 640 -640 480 -640 481 -640 440 -500 375 -640 480 -640 480 -640 480 -427 640 -376 500 -640 480 -640 480 -640 523 -640 427 -640 640 -640 480 -640 480 -500 333 -640 336 -606 640 -640 427 -612 612 -640 480 -640 480 -640 480 -640 480 -427 640 -425 640 -640 480 -640 480 -502 640 -612 612 -640 480 -640 485 -640 313 -480 640 -640 427 -640 427 -640 429 -640 427 -640 513 -640 480 -640 480 -640 426 -640 480 -640 480 -480 640 -640 426 -640 480 -640 480 -640 427 -640 480 -523 640 -640 426 -375 500 -426 640 -640 425 -640 425 -427 640 -640 480 -640 427 -640 480 -429 640 -640 427 -500 378 -639 640 -640 427 -640 480 -478 640 -640 480 -640 426 -500 375 -640 426 -411 640 -640 480 -640 480 -640 480 -640 427 -640 424 -640 371 -640 478 -640 480 -640 425 -640 480 -375 500 -424 640 -500 500 -640 427 -640 480 -640 426 -640 426 -640 480 -500 375 -640 424 -640 427 -640 427 -429 640 -640 378 -498 640 -640 408 -640 480 -480 640 -427 640 -640 427 -640 480 -640 480 -500 375 -500 351 -640 188 -640 486 -640 428 -640 427 -640 424 -640 364 -640 364 -640 384 -500 356 -640 431 -640 427 -640 480 -640 426 -500 375 -500 375 -640 429 -640 425 -640 448 -640 480 -640 480 -640 483 -640 427 -500 375 -375 500 -480 640 -640 354 -640 427 -640 426 -500 375 -640 427 -640 480 -640 480 -640 480 -500 371 -612 612 -640 480 -640 554 -640 549 -640 480 -500 375 -640 360 -640 427 -640 427 -640 480 -500 340 -500 333 -375 500 -640 480 -375 500 -640 394 -640 480 -640 480 -640 427 -640 640 -459 640 -640 480 -640 360 -427 640 -640 224 -480 640 -640 427 -640 428 -500 375 -640 429 -640 480 -640 427 -582 640 -640 480 -640 428 -640 451 -354 640 -426 640 -640 512 -640 480 -640 640 -425 640 -480 640 -640 427 -640 447 -640 480 -500 334 -480 640 -480 640 -640 428 -500 375 -500 375 -640 428 -640 428 -640 480 -640 480 -640 428 -571 640 -500 375 -640 481 -427 640 -500 375 -640 480 -640 480 -640 426 -453 640 -500 335 -640 426 -568 320 -640 429 -640 427 -640 480 -640 480 -640 449 -500 375 -640 424 -500 375 -480 640 -640 319 -640 480 -427 640 -640 427 -480 640 -640 428 -640 428 -640 480 -640 427 -640 478 -427 640 -500 402 -424 640 -640 427 -640 427 -640 480 -640 426 -480 640 -427 640 -640 480 -640 480 -640 480 -480 640 -640 480 -500 286 -427 640 -375 500 -640 427 -640 427 -640 480 -480 640 -500 332 -500 375 -640 427 -640 480 -640 482 -640 456 -640 427 -640 399 -640 480 -640 423 -338 500 -424 640 -640 480 -640 427 -427 640 -640 428 -640 480 -640 640 -640 428 -500 332 -640 480 -640 427 -640 427 -640 424 -640 423 -500 375 -640 480 -640 427 -640 480 -640 360 -480 640 -640 429 -640 478 -500 375 -597 400 -640 426 -465 500 -640 425 -640 480 -640 427 -640 480 -640 480 -429 640 -462 640 -447 640 -640 426 -640 423 -640 426 -640 347 -640 427 -500 375 -640 480 -640 427 -640 426 -640 480 -500 332 -360 640 -427 640 -370 640 -640 426 -640 480 -640 480 -640 427 -640 478 -640 427 -640 427 -427 640 -640 514 -640 426 -622 640 -640 519 -479 640 -500 375 -640 597 -640 429 -640 396 -640 427 -589 640 -640 480 -640 427 -640 480 -640 424 -500 484 -500 375 -640 510 -640 427 -640 470 -480 640 -640 413 -612 612 -640 480 -640 480 -500 333 -427 640 -375 500 -612 612 -640 480 -640 480 -640 480 -426 640 -640 427 -640 428 -640 480 -612 612 -640 429 -456 640 -640 480 -640 484 -480 360 -640 420 -483 640 -640 427 -640 427 -640 427 -640 407 -512 640 -640 480 -480 640 -640 351 -640 480 -640 381 -427 640 -500 375 -640 427 -640 436 -640 480 -480 640 -640 480 -480 640 -640 408 -640 473 -375 500 -640 427 -640 427 -500 375 -640 426 -640 434 -640 425 -640 427 -512 640 -640 426 -612 612 -612 612 -640 480 -640 480 -375 500 -640 428 -640 480 -480 640 -426 640 -640 428 -480 640 -640 427 -640 480 -500 231 -640 427 -427 640 -640 571 -375 500 -417 640 -525 640 -500 375 -640 480 -640 480 -500 333 -360 640 -640 416 -427 640 -640 480 -640 427 -640 427 -640 427 -640 426 -640 427 -640 480 -500 375 -640 480 -500 375 -640 354 -480 640 -480 417 -612 612 -640 480 -640 427 -640 427 -500 375 -480 640 -640 640 -640 427 -640 480 -640 485 -640 366 -427 640 -500 375 -640 425 -640 480 -640 427 -640 480 -640 427 -500 398 -500 375 -640 429 -500 375 -640 427 -640 640 -480 640 -480 640 -640 427 -640 480 -640 427 -640 421 -409 307 -400 500 -640 428 -640 427 -480 640 -500 373 -500 309 -640 480 -500 375 -640 427 -640 480 -640 638 -500 375 -480 640 -640 480 -640 480 -640 454 -640 425 -640 360 -427 640 -640 427 -478 640 -640 481 -480 640 -500 375 -427 640 -500 375 -427 640 -500 348 -428 640 -640 480 -424 640 -640 480 -500 332 -376 500 -500 375 -640 480 -640 480 -640 480 -553 640 -640 515 -640 427 -500 375 -640 427 -640 427 -480 640 -640 427 -640 427 -640 359 -640 512 -640 425 -640 480 -481 640 -612 612 -640 480 -500 333 -640 427 -640 427 -480 640 -640 427 -640 480 -500 336 -640 425 -640 481 -344 640 -339 500 -407 640 -640 427 -640 480 -640 480 -426 640 -640 480 -640 480 -640 427 -333 500 -640 386 -640 480 -640 423 -333 500 -640 480 -640 427 -640 427 -640 481 -640 480 -500 375 -640 480 -640 426 -480 640 -640 427 -640 360 -640 480 -640 457 -640 376 -500 375 -612 612 -640 480 -640 427 -448 336 -640 427 -640 427 -640 480 -386 500 -640 470 -640 480 -427 640 -640 415 -424 640 -640 426 -640 425 -640 427 -640 480 -640 427 -375 500 -640 480 -640 427 -640 428 -640 427 -640 480 -640 480 -425 640 -600 400 -640 428 -427 640 -640 427 -640 501 -640 431 -500 375 -640 426 -640 427 -640 365 -640 425 -499 371 -640 426 -480 640 -481 640 -640 426 -640 427 -640 360 -640 480 -640 489 -500 500 -640 640 -640 428 -640 548 -480 640 -469 500 -640 428 -640 425 -640 426 -640 480 -640 427 -640 424 -640 468 -640 428 -640 427 -640 378 -640 430 -640 427 -640 480 -426 640 -640 427 -640 469 -497 640 -480 640 -640 480 -640 283 -410 640 -640 426 -640 481 -640 358 -640 480 -640 480 -640 439 -640 480 -640 480 -425 640 -640 340 -500 375 -640 379 -640 480 -640 475 -480 640 -640 514 -480 640 -640 427 -640 425 -640 480 -640 454 -640 428 -640 428 -500 375 -640 480 -640 424 -500 332 -640 427 -500 375 -640 427 -500 375 -640 576 -607 640 -640 480 -640 427 -640 480 -640 480 -427 640 -640 427 -640 480 -427 640 -500 333 -425 640 -600 466 -640 427 -640 540 -640 427 -640 461 -640 480 -640 480 -640 424 -640 480 -640 480 -640 480 -427 640 -500 375 -640 480 -640 446 -640 391 -480 640 -500 375 -640 420 -640 429 -426 640 -469 640 -640 640 -640 426 -640 480 -640 480 -640 427 -640 442 -380 640 -640 480 -500 375 -428 640 -640 415 -418 500 -640 425 -480 640 -640 531 -427 640 -640 473 -320 240 -640 457 -640 480 -640 423 -500 375 -375 500 -500 375 -640 427 -640 427 -327 500 -640 360 -500 332 -427 640 -385 500 -640 512 -500 417 -640 427 -640 480 -640 480 -480 640 -640 427 -640 426 -640 480 -211 500 -612 612 -480 640 -640 573 -640 427 -640 438 -640 360 -427 640 -500 333 -500 375 -480 640 -480 640 -640 480 -612 612 -640 360 -640 427 -640 425 -612 612 -640 480 -640 480 -427 640 -628 442 -480 640 -612 612 -640 480 -640 427 -640 478 -480 640 -480 640 -498 640 -500 375 -640 443 -640 427 -640 427 -640 428 -339 500 -480 640 -640 427 -449 640 -500 378 -640 427 -640 395 -470 640 -640 480 -380 330 -640 458 -640 400 -506 640 -640 554 -480 640 -640 427 -333 500 -640 426 -640 427 -640 480 -640 427 -640 480 -640 480 -500 276 -612 612 -612 612 -500 375 -500 500 -640 480 -640 480 -500 370 -640 640 -500 375 -640 480 -640 462 -640 480 -640 564 -640 480 -640 427 -640 427 -500 333 -640 396 -640 427 -500 375 -640 426 -535 640 -640 480 -640 427 -640 400 -448 640 -640 480 -480 640 -334 500 -510 640 -480 640 -500 375 -640 427 -480 640 -640 480 -640 640 -480 640 -448 336 -640 361 -640 426 -480 640 -375 500 -640 480 -500 335 -640 360 -640 489 -480 640 -640 424 -640 480 -500 375 -640 480 -480 640 -500 339 -640 427 -424 640 -500 335 -640 480 -640 412 -640 366 -429 640 -426 640 -640 436 -640 350 -427 640 -640 427 -640 426 -640 480 -640 496 -640 426 -612 612 -640 480 -640 480 -426 640 -640 229 -640 640 -640 480 -640 442 -480 640 -480 640 -640 479 -500 332 -612 612 -640 425 -640 427 -500 333 -426 640 -500 373 -640 435 -640 427 -640 427 -376 500 -500 335 -640 480 -468 640 -640 426 -640 424 -640 419 -640 427 -640 428 -640 428 -500 333 -640 545 -640 360 -640 383 -640 634 -640 360 -640 427 -490 469 -640 425 -640 640 -640 480 -640 480 -640 427 -480 640 -640 424 -428 640 -424 640 -640 427 -640 480 -480 640 -640 480 -640 427 -440 500 -640 427 -426 640 -480 640 -640 428 -640 480 -500 411 -427 640 -640 480 -480 640 -176 384 -427 640 -425 640 -427 640 -640 427 -640 480 -480 640 -640 480 -478 640 -375 500 -640 480 -612 612 -479 500 -480 640 -500 367 -640 640 -640 512 -612 612 -500 500 -334 500 -640 425 -640 480 -640 480 -640 427 -640 425 -640 480 -600 400 -500 332 -612 612 -640 393 -640 480 -640 480 -424 640 -640 480 -640 640 -640 427 -640 435 -640 480 -640 427 -333 500 -512 640 -640 524 -640 480 -640 480 -640 478 -640 426 -375 500 -640 427 -426 640 -426 640 -480 640 -640 427 -640 426 -640 480 -640 425 -640 427 -640 480 -640 425 -640 427 -640 320 -640 426 -480 640 -424 640 -640 427 -640 480 -640 480 -500 333 -640 518 -640 480 -640 359 -640 426 -612 612 -640 427 -428 640 -640 427 -640 480 -427 640 -640 427 -426 640 -640 427 -640 480 -640 428 -640 480 -612 612 -640 523 -640 383 -640 427 -640 480 -640 427 -640 480 -640 480 -480 640 -480 640 -640 427 -640 426 -640 480 -640 432 -500 375 -640 427 -640 423 -640 480 -640 480 -500 375 -640 480 -640 480 -500 357 -640 427 -428 640 -640 426 -428 640 -480 640 -640 426 -612 612 -640 440 -480 640 -480 640 -640 480 -640 359 -500 375 -332 500 -640 427 -640 480 -640 400 -500 333 -340 500 -640 427 -640 448 -640 510 -640 427 -640 480 -429 640 -640 352 -640 436 -424 640 -450 600 -428 640 -640 480 -640 479 -640 427 -640 640 -480 640 -640 279 -640 423 -640 427 -640 425 -640 640 -640 427 -640 427 -427 640 -640 480 -512 480 -640 426 -427 640 -640 427 -640 480 -640 631 -640 425 -333 500 -378 500 -480 272 -640 480 -480 640 -640 443 -640 427 -427 640 -640 426 -640 480 -640 424 -640 506 -640 406 -480 640 -640 388 -640 424 -640 480 -640 407 -425 640 -640 388 -640 480 -640 494 -640 426 -640 480 -500 336 -426 640 -640 427 -640 426 -640 468 -427 640 -424 640 -500 333 -640 407 -612 612 -640 425 -500 333 -640 457 -640 480 -500 375 -480 640 -640 426 -640 480 -426 640 -640 423 -640 480 -640 427 -640 426 -640 480 -640 480 -640 480 -640 480 -640 412 -640 426 -612 612 -640 427 -426 640 -640 480 -640 376 -640 480 -640 404 -640 482 -640 427 -427 640 -640 426 -640 431 -640 425 -480 640 -382 500 -640 428 -375 500 -640 359 -640 427 -640 426 -640 485 -640 392 -640 332 -480 640 -640 425 -333 500 -640 426 -640 457 -500 340 -640 480 -500 326 -375 500 -640 396 -480 640 -333 500 -640 427 -640 480 -640 480 -640 427 -640 429 -640 427 -640 476 -428 640 -640 480 -427 640 -640 495 -640 480 -500 334 -640 508 -640 480 -640 457 -640 427 -640 480 -500 375 -425 640 -640 290 -500 330 -466 640 -500 375 -640 480 -640 480 -640 600 -640 640 -480 640 -640 426 -640 427 -640 427 -427 640 -640 473 -640 428 -640 480 -640 480 -640 480 -640 480 -640 427 -640 427 -500 375 -640 427 -426 640 -640 422 -640 480 -640 480 -640 425 -640 426 -640 427 -480 640 -640 426 -640 427 -335 500 -640 427 -640 480 -396 640 -640 480 -640 427 -425 640 -480 640 -640 494 -640 427 -640 480 -500 375 -480 640 -640 478 -514 640 -640 433 -640 480 -400 500 -640 426 -640 426 -480 640 -640 427 -500 333 -640 360 -640 478 -480 640 -640 427 -479 640 -478 640 -612 612 -512 640 -640 480 -640 427 -500 335 -640 480 -640 360 -640 496 -375 500 -386 640 -640 428 -640 441 -640 480 -640 427 -480 640 -640 427 -640 428 -428 640 -425 640 -640 549 -480 640 -640 480 -640 480 -640 391 -640 480 -640 480 -480 640 -640 427 -640 480 -640 480 -640 512 -500 317 -478 640 -640 428 -640 427 -640 480 -640 480 -640 427 -640 436 -640 503 -640 426 -640 480 -640 426 -640 311 -640 427 -640 640 -640 425 -640 478 -480 640 -480 640 -640 427 -640 480 -640 480 -640 428 -640 504 -427 640 -640 478 -640 480 -640 559 -640 437 -612 612 -640 424 -640 480 -480 640 -640 459 -640 424 -640 426 -640 480 -640 426 -640 480 -640 480 -640 480 -640 480 -500 335 -640 480 -640 426 -640 427 -427 640 -640 427 -640 426 -480 640 -640 480 -640 480 -640 423 -640 424 -640 480 -640 427 -640 480 -640 480 -348 640 -375 500 -461 640 -427 640 -612 612 -640 457 -640 426 -640 506 -414 640 -640 417 -640 423 -640 478 -640 426 -500 375 -640 481 -640 428 -640 428 -600 600 -640 429 -500 375 -640 480 -640 501 -640 480 -640 479 -640 480 -640 480 -640 480 -480 640 -538 360 -500 375 -640 480 -480 640 -640 512 -424 640 -640 425 -640 425 -640 480 -640 424 -500 375 -640 480 -640 360 -427 640 -448 299 -640 392 -426 640 -640 427 -640 445 -612 612 -500 333 -640 518 -640 320 -640 428 -480 640 -640 428 -640 428 -640 480 -640 427 -375 500 -640 480 -500 438 -478 640 -500 375 -320 240 -640 480 -640 480 -640 326 -640 480 -640 480 -640 491 -423 640 -640 427 -640 428 -640 480 -640 428 -640 480 -480 640 -640 398 -640 480 -612 612 -640 480 -640 425 -640 437 -426 640 -640 480 -640 431 -640 427 -427 640 -500 375 -375 500 -486 640 -480 640 -640 427 -426 640 -425 640 -478 640 -333 500 -500 332 -640 480 -640 640 -640 480 -500 448 -427 640 -500 372 -640 426 -480 360 -640 426 -427 640 -426 640 -427 640 -466 640 -640 403 -333 500 -640 449 -329 469 -640 342 -640 478 -640 474 -640 480 -425 640 -640 399 -640 426 -640 480 -500 334 -612 612 -482 640 -425 640 -640 640 -640 486 -333 500 -640 208 -612 612 -640 480 -427 640 -427 640 -640 480 -425 640 -640 427 -500 334 -640 427 -640 380 -500 281 -640 425 -640 425 -640 425 -640 480 -478 640 -333 500 -640 427 -640 427 -640 480 -428 640 -640 427 -640 480 -480 640 -640 427 -640 480 -640 480 -640 503 -427 640 -612 612 -640 427 -640 480 -640 565 -612 612 -640 640 -500 377 -640 428 -640 424 -500 375 -500 375 -480 640 -640 427 -369 500 -640 441 -640 425 -640 480 -640 480 -640 480 -500 333 -500 375 -640 480 -424 640 -500 333 -640 502 -640 480 -640 480 -500 334 -640 480 -640 480 -501 640 -640 480 -640 480 -478 640 -640 428 -612 612 -480 640 -592 640 -640 480 -640 480 -640 427 -640 480 -640 480 -427 640 -640 547 -640 480 -640 480 -640 439 -640 480 -640 427 -481 640 -494 378 -640 405 -640 480 -640 399 -519 640 -640 480 -640 360 -640 480 -640 427 -640 427 -640 483 -379 500 -640 480 -640 427 -640 426 -640 429 -640 426 -383 640 -640 480 -640 601 -640 455 -640 480 -375 500 -640 427 -640 427 -640 426 -427 640 -640 427 -640 426 -640 426 -500 375 -640 480 -480 640 -480 640 -427 640 -427 640 -480 640 -480 640 -640 426 -640 480 -500 375 -425 640 -480 640 -375 500 -640 480 -640 425 -640 425 -640 516 -640 463 -640 361 -640 402 -427 640 -512 640 -361 640 -424 640 -427 640 -640 640 -480 640 -640 457 -373 500 -640 426 -640 480 -640 478 -640 479 -640 427 -427 640 -640 480 -500 375 -480 640 -640 427 -640 480 -640 480 -640 480 -640 425 -640 427 -640 480 -640 419 -427 640 -640 427 -640 427 -640 480 -480 640 -640 425 -640 640 -640 480 -640 400 -333 500 -427 640 -640 480 -612 612 -640 427 -640 513 -640 428 -397 500 -640 427 -640 480 -426 640 -428 640 -480 640 -333 500 -640 426 -500 333 -500 335 -448 640 -500 375 -480 640 -640 456 -640 427 -640 457 -500 375 -640 406 -640 427 -480 640 -500 377 -500 375 -640 431 -640 359 -640 640 -640 428 -427 640 -640 480 -426 640 -640 427 -480 640 -500 333 -640 480 -640 426 -640 496 -532 640 -640 450 -640 427 -640 480 -480 640 -640 428 -640 258 -640 383 -640 460 -640 480 -640 480 -375 500 -640 263 -500 375 -612 612 -640 308 -640 427 -484 640 -640 424 -500 375 -640 427 -330 500 -640 360 -640 427 -480 640 -640 424 -640 480 -500 329 -640 480 -640 354 -640 480 -640 480 -343 230 -640 451 -427 640 -640 427 -500 429 -640 480 -640 427 -640 454 -640 426 -427 640 -525 640 -640 463 -200 133 -640 480 -426 640 -640 534 -640 494 -500 400 -500 375 -612 612 -480 640 -640 480 -640 569 -621 600 -640 480 -640 426 -640 480 -640 640 -640 427 -500 375 -640 480 -640 423 -500 375 -640 424 -426 640 -333 500 -640 294 -476 640 -545 640 -426 640 -480 640 -441 640 -640 480 -640 427 -640 427 -486 640 -640 426 -640 427 -171 500 -375 500 -425 640 -640 427 -640 426 -640 426 -427 640 -640 480 -640 360 -640 640 -640 427 -332 500 -500 375 -320 240 -640 480 -640 416 -640 428 -640 488 -640 426 -640 426 -640 480 -629 640 -361 640 -640 428 -640 480 -640 427 -640 360 -640 475 -500 375 -640 480 -640 548 -500 375 -427 640 -640 479 -480 640 -478 640 -480 640 -640 480 -640 438 -468 640 -640 340 -640 480 -640 480 -640 427 -640 480 -640 427 -500 375 -640 427 -640 424 -640 480 -478 640 -480 640 -640 427 -640 529 -500 375 -640 426 -640 426 -640 480 -612 612 -640 359 -480 640 -640 360 -640 427 -425 640 -640 427 -424 640 -640 480 -640 422 -640 443 -640 427 -640 428 -640 640 -640 480 -640 424 -640 480 -640 480 -640 480 -500 375 -640 480 -500 375 -640 426 -640 333 -455 480 -480 640 -407 640 -500 334 -640 480 -427 640 -500 333 -500 375 -480 640 -640 423 -500 393 -480 640 -640 427 -333 500 -640 360 -418 640 -640 536 -640 428 -640 452 -640 384 -500 332 -490 640 -640 426 -640 425 -640 496 -640 428 -640 429 -640 300 -640 427 -481 640 -640 480 -640 427 -612 612 -341 500 -612 612 -640 299 -640 536 -640 480 -427 640 -640 360 -427 640 -640 427 -500 375 -500 333 -640 480 -424 640 -640 427 -640 427 -640 480 -426 640 -640 480 -640 427 -640 480 -500 375 -640 426 -640 480 -640 480 -640 424 -480 640 -640 427 -640 640 -640 427 -426 640 -640 480 -640 480 -640 640 -640 480 -640 486 -375 500 -640 480 -375 500 -480 640 -640 479 -640 427 -480 640 -640 425 -640 424 -500 295 -427 640 -427 640 -640 480 -640 426 -430 640 -640 427 -375 500 -640 360 -640 480 -427 640 -640 480 -375 500 -640 427 -640 359 -640 480 -500 333 -426 640 -640 427 -637 640 -640 425 -480 640 -427 640 -640 424 -640 479 -640 427 -457 640 -640 427 -480 640 -640 480 -640 427 -500 337 -427 640 -640 360 -500 375 -640 640 -480 640 -640 428 -428 640 -500 375 -480 640 -640 480 -640 480 -640 480 -640 484 -426 640 -480 640 -480 640 -500 375 -640 480 -387 640 -640 427 -640 425 -427 640 -640 427 -375 500 -640 480 -640 480 -427 640 -500 366 -640 480 -640 480 -640 472 -640 416 -640 426 -427 640 -640 480 -478 640 -640 425 -640 428 -428 640 -640 480 -493 640 -640 480 -640 424 -500 333 -640 427 -640 427 -640 480 -640 427 -640 470 -640 427 -375 500 -640 427 -500 499 -640 480 -640 427 -640 427 -480 640 -640 436 -640 375 -640 640 -640 404 -333 500 -500 361 -640 480 -640 424 -640 480 -640 480 -640 444 -640 426 -480 640 -470 640 -640 427 -640 427 -480 640 -640 428 -640 425 -640 427 -640 426 -640 480 -640 480 -640 480 -480 640 -600 450 -640 378 -640 427 -640 480 -640 424 -640 480 -640 425 -427 640 -553 640 -640 428 -640 480 -640 428 -442 640 -500 375 -415 500 -640 640 -640 426 -500 378 -640 427 -640 480 -640 479 -640 427 -380 640 -640 480 -640 480 -500 375 -500 311 -469 640 -640 421 -640 480 -640 480 -640 427 -640 476 -640 480 -640 480 -480 640 -640 480 -640 480 -412 500 -640 426 -640 640 -640 427 -640 425 -640 368 -640 626 -640 484 -612 612 -640 514 -640 640 -640 468 -500 314 -458 640 -480 640 -640 457 -640 480 -640 480 -640 427 -640 480 -479 640 -640 480 -640 512 -334 500 -500 500 -640 426 -375 500 -427 640 -332 500 -640 426 -640 480 -640 480 -426 640 -640 427 -612 612 -640 480 -640 410 -640 480 -640 427 -640 480 -500 375 -640 426 -480 640 -457 640 -640 427 -427 640 -640 480 -640 427 -640 480 -640 426 -640 428 -333 500 -640 478 -640 426 -640 427 -640 480 -640 480 -450 500 -640 427 -640 427 -640 428 -381 640 -500 375 -375 500 -640 426 -640 519 -480 640 -640 588 -375 500 -640 480 -640 480 -500 442 -480 640 -640 480 -500 429 -640 429 -640 427 -640 425 -640 480 -500 375 -640 427 -480 640 -640 480 -480 640 -640 480 -640 437 -640 480 -640 312 -640 427 -500 332 -640 480 -429 640 -640 426 -640 556 -480 640 -640 427 -640 427 -480 640 -640 486 -640 480 -640 480 -640 480 -640 480 -300 403 -493 500 -640 480 -640 414 -640 375 -333 500 -500 333 -630 420 -640 414 -375 500 -640 427 -640 427 -640 457 -640 361 -640 427 -500 333 -640 425 -640 480 -426 640 -640 429 -640 480 -640 426 -640 427 -640 480 -640 426 -640 360 -640 480 -612 612 -640 429 -425 640 -612 612 -480 640 -640 478 -413 640 -640 478 -480 640 -640 427 -640 360 -480 640 -500 332 -640 480 -640 480 -640 471 -640 478 -427 640 -404 640 -640 480 -375 500 -359 640 -640 425 -480 640 -640 458 -640 426 -427 640 -640 427 -500 395 -640 427 -640 425 -640 427 -640 428 -375 500 -375 500 -500 375 -425 640 -640 480 -612 612 -640 489 -640 426 -640 426 -640 479 -640 464 -640 480 -640 532 -640 480 -640 322 -640 427 -500 323 -640 427 -500 375 -427 640 -640 640 -426 640 -612 612 -500 332 -480 640 -423 640 -640 480 -640 384 -640 429 -640 512 -500 375 -480 640 -640 532 -640 425 -640 480 -640 428 -425 640 -427 640 -500 338 -640 420 -640 480 -640 427 -640 427 -640 427 -640 426 -640 480 -640 480 -375 500 -640 426 -424 640 -640 480 -640 428 -640 352 -640 480 -426 640 -500 333 -640 425 -640 480 -640 426 -640 480 -640 513 -640 426 -640 394 -640 480 -640 480 -640 434 -500 341 -418 640 -640 426 -640 480 -640 480 -640 480 -500 375 -426 640 -500 375 -640 446 -640 480 -640 426 -640 427 -640 426 -640 480 -640 463 -640 480 -427 640 -640 426 -640 498 -213 140 -640 427 -375 500 -640 426 -500 375 -332 500 -427 640 -640 427 -640 426 -640 480 -640 480 -426 640 -640 425 -640 480 -480 640 -640 489 -640 480 -640 480 -478 640 -640 426 -640 563 -640 478 -640 480 -640 480 -640 427 -500 334 -640 478 -500 375 -640 443 -427 640 -353 500 -640 511 -640 427 -612 612 -480 640 -600 400 -500 375 -581 575 -640 427 -640 424 -640 359 -640 483 -500 375 -480 640 -640 480 -640 426 -640 427 -500 375 -500 375 -640 456 -640 480 -640 480 -640 428 -640 480 -640 480 -427 640 -640 480 -500 352 -640 427 -445 640 -500 332 -640 494 -640 484 -598 640 -640 480 -640 480 -640 427 -640 427 -500 333 -640 640 -427 640 -480 640 -640 457 -640 427 -480 640 -640 514 -640 471 -640 478 -427 640 -640 422 -640 480 -640 421 -612 612 -640 478 -500 375 -640 522 -640 424 -480 640 -640 480 -640 480 -602 640 -640 428 -640 376 -640 320 -612 612 -640 482 -640 480 -427 640 -640 480 -640 426 -640 480 -640 480 -640 536 -640 426 -640 480 -450 640 -640 427 -324 432 -640 505 -640 480 -500 500 -640 640 -640 425 -480 640 -640 480 -427 640 -640 497 -640 360 -640 480 -640 480 -640 480 -640 427 -500 373 -640 428 -640 426 -500 375 -640 423 -640 616 -640 428 -640 502 -640 488 -414 640 -640 479 -478 640 -620 640 -640 427 -640 360 -640 427 -500 344 -640 480 -640 480 -640 480 -428 640 -444 640 -640 429 -500 375 -422 640 -360 640 -500 332 -640 480 -615 310 -640 427 -640 480 -612 612 -640 425 -427 640 -640 427 -375 500 -426 640 -612 612 -640 640 -500 333 -640 426 -500 375 -640 426 -640 539 -640 480 -640 481 -640 427 -640 603 -640 426 -640 457 -500 375 -640 448 -640 369 -640 480 -500 333 -375 500 -640 480 -427 640 -640 441 -640 301 -332 500 -640 480 -640 426 -640 480 -250 188 -573 640 -500 375 -640 427 -640 327 -640 496 -359 500 -640 427 -640 480 -640 360 -640 530 -640 427 -640 426 -640 498 -480 640 -640 480 -480 640 -500 334 -640 427 -640 406 -480 640 -640 480 -640 469 -640 480 -640 480 -640 433 -640 480 -640 439 -460 345 -640 426 -640 480 -640 360 -640 480 -640 480 -405 640 -640 427 -480 640 -427 640 -640 480 -640 480 -640 425 -480 640 -640 427 -612 612 -640 480 -612 612 -640 429 -640 478 -500 333 -640 480 -640 366 -640 360 -480 640 -480 640 -500 333 -640 480 -640 483 -640 480 -640 480 -640 483 -500 500 -500 375 -640 463 -612 612 -640 480 -500 375 -355 500 -640 472 -640 480 -425 640 -604 640 -640 383 -427 640 -640 427 -640 427 -640 425 -640 410 -640 480 -640 429 -640 480 -640 480 -640 508 -640 426 -640 360 -500 375 -612 612 -370 500 -640 320 -426 640 -640 480 -480 640 -426 640 -480 640 -640 427 -640 426 -612 612 -640 338 -640 425 -640 480 -480 640 -375 500 -640 480 -640 512 -427 640 -500 375 -640 427 -640 428 -640 425 -640 476 -426 640 -480 640 -480 640 -480 640 -494 640 -480 640 -609 640 -640 368 -640 427 -640 433 -640 480 -375 500 -510 510 -640 425 -640 480 -375 500 -640 480 -640 640 -640 424 -640 427 -640 429 -640 480 -480 640 -640 480 -500 375 -640 480 -611 640 -500 332 -640 427 -421 640 -640 480 -640 427 -640 478 -612 612 -612 612 -640 480 -375 500 -640 480 -640 480 -500 270 -640 480 -612 612 -500 250 -500 375 -640 364 -640 480 -640 427 -480 640 -640 427 -640 426 -500 342 -640 427 -500 330 -640 480 -640 426 -640 427 -400 500 -640 479 -296 640 -620 640 -640 480 -480 640 -640 427 -480 640 -640 480 -640 427 -640 480 -640 428 -640 427 -612 612 -640 480 -640 480 -640 480 -400 312 -640 480 -640 427 -426 255 -612 612 -640 428 -640 430 -320 240 -640 425 -640 480 -425 640 -640 428 -640 433 -640 427 -357 500 -640 459 -640 427 -640 480 -640 491 -500 375 -640 427 -510 640 -640 486 -640 480 -640 424 -640 478 -480 640 -428 640 -326 500 -640 480 -500 324 -640 427 -640 640 -640 495 -640 426 -500 375 -426 640 -640 480 -640 514 -640 427 -500 375 -427 640 -640 428 -640 359 -640 480 -640 482 -640 480 -640 387 -424 640 -640 480 -474 640 -612 612 -500 375 -160 120 -640 399 -500 333 -425 640 -640 427 -480 640 -362 500 -640 427 -640 480 -480 640 -480 640 -518 640 -425 640 -500 333 -640 480 -640 480 -427 500 -500 375 -640 435 -500 375 -640 427 -640 512 -640 427 -418 640 -640 434 -500 376 -640 480 -640 426 -500 333 -500 340 -427 640 -640 427 -375 500 -640 427 -640 427 -500 207 -427 640 -640 480 -640 360 -480 640 -640 427 -512 640 -500 333 -480 640 -640 429 -640 532 -640 420 -640 480 -500 437 -383 640 -640 426 -640 480 -480 319 -640 480 -424 640 -427 640 -640 480 -640 480 -426 640 -426 640 -640 447 -640 424 -480 640 -640 427 -640 480 -640 480 -640 426 -640 427 -504 640 -640 480 -640 433 -640 426 -640 427 -500 333 -480 640 -640 478 -640 428 -640 427 -640 427 -500 333 -640 426 -640 432 -500 375 -500 375 -640 480 -344 500 -375 500 -480 640 -500 375 -426 640 -640 167 -500 333 -640 407 -640 424 -640 426 -640 512 -640 427 -640 480 -599 419 -640 427 -640 480 -640 427 -640 480 -640 480 -640 425 -640 480 -640 494 -640 448 -640 480 -426 640 -640 480 -640 480 -454 640 -640 427 -640 480 -640 427 -426 640 -640 427 -640 426 -640 426 -640 426 -640 480 -640 360 -640 427 -640 427 -640 427 -480 640 -640 427 -640 480 -640 366 -500 375 -640 427 -480 640 -640 427 -500 375 -640 427 -640 427 -640 428 -500 375 -640 289 -640 480 -480 640 -427 640 -480 640 -640 480 -640 640 -472 640 -427 640 -612 612 -480 640 -640 427 -640 427 -425 640 -640 426 -640 360 -640 354 -480 640 -640 424 -480 640 -640 392 -640 228 -640 424 -640 480 -640 480 -500 281 -640 480 -640 427 -640 278 -376 500 -375 500 -640 432 -640 357 -425 640 -480 640 -500 337 -500 375 -500 375 -640 480 -640 480 -640 427 -640 427 -333 500 -640 480 -480 640 -640 360 -591 640 -640 360 -640 480 -480 640 -640 480 -640 427 -500 375 -640 480 -427 640 -640 427 -640 640 -500 366 -640 480 -512 640 -359 640 -320 640 -640 360 -480 640 -480 640 -640 619 -640 426 -500 400 -640 427 -640 427 -333 500 -640 424 -480 640 -425 640 -640 361 -452 500 -404 500 -640 640 -425 640 -640 406 -436 291 -640 480 -640 426 -640 427 -425 640 -429 640 -500 375 -640 426 -500 375 -480 640 -640 427 -640 512 -640 426 -640 426 -640 427 -640 480 -324 500 -640 480 -640 428 -640 480 -640 397 -375 500 -640 480 -640 400 -640 360 -640 426 -640 427 -640 427 -640 427 -500 330 -480 640 -640 576 -640 428 -500 331 -640 427 -500 278 -480 640 -640 640 -490 640 -640 383 -612 612 -480 640 -332 500 -640 480 -640 480 -640 427 -478 640 -426 640 -640 507 -480 640 -480 640 -480 640 -640 424 -640 252 -640 411 -640 427 -640 427 -463 640 -640 480 -640 427 -640 429 -331 500 -640 480 -640 427 -500 332 -500 375 -352 288 -500 375 -491 640 -479 640 -612 612 -480 640 -640 427 -403 456 -600 399 -375 500 -640 424 -640 480 -612 612 -640 480 -640 427 -640 482 -462 640 -480 640 -427 640 -640 427 -640 429 -640 425 -640 427 -640 468 -640 427 -640 480 -640 490 -640 480 -640 427 -640 480 -640 640 -640 480 -612 612 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -427 640 -640 427 -538 360 -640 480 -640 426 -500 370 -640 425 -640 480 -640 425 -428 640 -640 480 -640 428 -500 375 -428 640 -640 427 -640 460 -640 480 -512 640 -640 426 -640 427 -640 424 -500 375 -640 516 -640 424 -640 428 -500 332 -640 427 -461 307 -640 426 -640 379 -640 480 -640 420 -640 480 -480 640 -480 640 -640 638 -640 259 -640 480 -426 640 -640 427 -640 480 -640 480 -640 427 -640 426 -375 500 -640 427 -640 421 -426 640 -640 424 -640 426 -640 427 -480 640 -375 500 -640 429 -640 583 -640 480 -500 375 -640 640 -426 640 -640 480 -284 640 -240 166 -640 428 -640 426 -640 480 -640 596 -640 425 -640 640 -640 427 -640 408 -640 360 -500 375 -427 640 -480 640 -640 480 -640 423 -640 428 -640 360 -640 585 -640 426 -640 425 -354 500 -640 480 -640 424 -640 435 -640 480 -500 375 -640 427 -640 480 -427 640 -425 640 -375 500 -640 450 -640 426 -640 640 -480 640 -360 640 -640 426 -640 428 -640 427 -427 640 -640 480 -500 375 -640 426 -600 375 -640 331 -640 434 -640 428 -427 640 -500 335 -640 426 -640 480 -640 392 -640 427 -640 480 -640 640 -612 612 -640 360 -375 500 -612 612 -640 480 -640 480 -640 480 -636 479 -640 433 -640 480 -397 464 -480 640 -640 426 -640 429 -640 480 -427 640 -640 428 -444 640 -640 480 -640 359 -480 640 -640 425 -500 375 -640 378 -640 428 -427 640 -640 334 -640 428 -640 426 -640 480 -640 495 -640 473 -640 384 -427 640 -640 405 -478 640 -640 425 -480 640 -640 426 -500 366 -640 426 -640 427 -480 640 -500 332 -640 480 -640 399 -640 427 -640 424 -640 480 -640 502 -640 502 -640 480 -640 480 -640 451 -640 426 -375 500 -640 427 -640 423 -422 640 -500 335 -640 480 -640 480 -427 640 -640 404 -640 427 -640 427 -640 427 -640 480 -640 480 -480 640 -640 426 -640 393 -457 640 -640 426 -480 640 -500 500 -640 427 -640 480 -500 375 -640 480 -500 375 -640 426 -640 480 -500 375 -351 500 -379 500 -640 428 -640 427 -640 419 -500 454 -363 640 -640 427 -640 427 -420 640 -640 427 -426 640 -500 375 -427 640 -640 427 -640 448 -443 640 -512 640 -640 427 -640 480 -640 515 -640 432 -640 428 -640 480 -375 500 -640 338 -500 500 -515 640 -640 480 -640 449 -640 427 -640 532 -500 640 -640 374 -640 427 -640 614 -640 480 -640 480 -480 640 -640 480 -427 640 -640 451 -640 424 -640 480 -640 426 -640 425 -640 480 -458 640 -480 640 -640 427 -480 640 -288 352 -640 427 -640 463 -640 427 -640 480 -640 425 -393 640 -480 640 -640 427 -425 640 -640 427 -512 640 -640 425 -640 480 -640 256 -640 478 -500 375 -640 559 -612 612 -444 640 -640 427 -480 640 -640 360 -640 488 -640 452 -640 426 -427 640 -487 291 -439 640 -640 515 -640 480 -640 480 -640 480 -612 612 -478 640 -640 480 -480 640 -633 640 -500 333 -640 425 -640 480 -480 640 -640 480 -640 480 -312 640 -640 479 -640 427 -427 640 -640 480 -500 375 -640 480 -640 427 -640 480 -480 640 -640 474 -640 427 -640 426 -386 640 -640 383 -450 640 -500 332 -640 479 -480 640 -640 480 -449 640 -640 480 -640 388 -640 429 -640 480 -375 500 -640 480 -640 480 -640 427 -640 425 -640 480 -640 383 -640 427 -640 425 -612 612 -640 480 -640 616 -500 375 -400 600 -500 454 -640 369 -445 640 -640 426 -486 640 -640 447 -640 480 -480 640 -640 480 -613 640 -640 427 -467 640 -640 480 -640 426 -640 364 -640 424 -399 600 -640 480 -500 333 -640 427 -640 426 -480 640 -480 640 -389 640 -640 480 -640 480 -640 426 -375 500 -640 480 -640 480 -640 480 -640 480 -640 427 -640 426 -640 427 -640 426 -640 427 -640 426 -640 480 -640 429 -640 480 -428 640 -640 443 -640 426 -640 501 -640 339 -640 640 -640 480 -640 429 -519 640 -640 480 -375 500 -640 427 -640 426 -640 480 -640 636 -640 426 -500 375 -500 375 -640 480 -500 375 -640 426 -640 428 -640 436 -612 612 -640 471 -640 423 -640 429 -640 425 -425 640 -640 480 -640 424 -640 504 -640 480 -480 640 -640 480 -640 428 -640 480 -640 639 -640 480 -480 640 -500 375 -640 360 -333 500 -640 411 -640 481 -640 393 -430 640 -640 427 -500 500 -640 427 -640 543 -640 480 -640 427 -640 480 -500 284 -640 480 -640 438 -640 480 -612 612 -612 612 -427 640 -480 640 -640 480 -480 640 -426 640 -500 333 -640 427 -640 480 -500 375 -640 480 -640 482 -640 427 -500 375 -640 427 -640 427 -640 360 -640 478 -640 427 -640 480 -640 480 -500 375 -500 333 -500 375 -461 640 -640 480 -640 427 -640 426 -640 480 -640 480 -640 480 -640 490 -500 308 -640 359 -640 406 -500 334 -480 640 -640 478 -640 428 -500 404 -640 427 -612 612 -480 640 -640 480 -640 480 -640 427 -640 640 -640 427 -640 427 -640 473 -640 480 -640 480 -640 480 -501 640 -640 640 -640 424 -640 521 -480 640 -480 640 -640 428 -480 640 -640 480 -640 428 -640 480 -640 383 -479 640 -640 425 -640 427 -640 480 -640 480 -640 480 -640 505 -640 480 -500 333 -640 480 -640 480 -500 375 -640 480 -640 449 -640 480 -375 500 -640 428 -500 375 -500 333 -640 480 -640 424 -640 428 -640 427 -640 427 -612 612 -640 543 -640 446 -640 505 -500 375 -480 640 -640 400 -640 427 -640 480 -640 426 -479 640 -640 480 -640 320 -428 640 -640 448 -480 640 -612 612 -640 480 -640 424 -640 477 -427 640 -341 500 -480 640 -428 640 -640 427 -427 640 -640 427 -640 480 -640 480 -640 427 -640 428 -480 640 -640 427 -640 480 -640 426 -425 640 -640 480 -640 480 -640 462 -500 375 -594 555 -640 427 -640 480 -640 480 -640 447 -612 612 -640 480 -640 480 -640 427 -640 480 -500 375 -640 454 -427 640 -640 426 -640 480 -640 640 -287 432 -640 427 -640 640 -640 427 -640 426 -500 400 -640 427 -640 480 -640 427 -500 334 -612 612 -640 480 -640 480 -500 375 -640 480 -427 640 -500 333 -612 612 -640 429 -640 480 -480 640 -640 427 -640 480 -640 427 -500 375 -640 480 -375 500 -500 375 -551 640 -640 427 -640 429 -640 428 -640 360 -640 478 -640 480 -308 500 -640 478 -640 388 -640 480 -640 426 -640 423 -500 375 -640 429 -427 640 -640 389 -640 480 -640 427 -640 333 -640 428 -500 346 -640 480 -640 425 -640 438 -640 480 -640 480 -640 428 -640 481 -483 640 -427 640 -640 428 -640 426 -640 480 -480 640 -640 427 -640 480 -320 240 -640 425 -500 333 -640 506 -640 428 -640 425 -480 360 -640 427 -408 640 -612 612 -480 640 -640 359 -491 280 -640 480 -640 637 -480 640 -640 424 -640 480 -640 481 -640 480 -640 480 -640 480 -640 480 -480 640 -439 640 -640 480 -640 428 -517 640 -640 427 -640 457 -500 375 -640 484 -480 640 -640 480 -640 480 -640 418 -640 601 -600 400 -640 427 -640 480 -480 640 -640 480 -500 375 -426 640 -640 480 -639 640 -480 640 -480 640 -640 314 -480 640 -500 361 -640 473 -500 377 -612 612 -640 403 -640 426 -512 640 -640 640 -640 429 -640 480 -640 428 -640 480 -640 480 -640 480 -480 640 -500 500 -500 333 -640 428 -640 452 -480 640 -640 479 -518 640 -500 500 -640 427 -479 640 -640 481 -640 480 -612 612 -484 480 -319 640 -480 640 -480 640 -629 640 -478 640 -381 500 -640 427 -640 480 -640 480 -640 427 -640 463 -428 640 -427 640 -480 640 -640 480 -500 375 -640 427 -640 419 -640 480 -640 313 -480 640 -445 640 -640 480 -640 427 -375 500 -640 480 -640 512 -480 640 -640 427 -640 480 -640 427 -640 427 -640 536 -375 500 -640 428 -640 480 -640 360 -640 425 -640 480 -640 427 -640 427 -640 427 -350 500 -480 640 -500 374 -640 478 -640 480 -640 429 -640 478 -640 467 -500 332 -480 640 -500 375 -640 478 -427 640 -640 427 -427 640 -375 500 -640 424 -640 480 -428 640 -640 480 -640 613 -480 640 -640 444 -640 383 -640 480 -640 427 -640 480 -640 495 -640 426 -640 415 -640 480 -640 427 -480 640 -640 449 -640 426 -640 264 -640 427 -640 427 -509 640 -640 427 -640 480 -494 640 -480 640 -634 640 -640 427 -640 480 -640 516 -640 480 -640 428 -640 486 -640 428 -640 480 -640 401 -500 375 -640 480 -640 426 -500 334 -640 480 -620 640 -640 480 -314 500 -360 640 -640 427 -500 376 -500 333 -640 480 -640 480 -426 640 -640 414 -640 427 -480 640 -640 480 -640 480 -640 480 -500 375 -640 427 -640 480 -612 612 -640 480 -427 640 -640 425 -640 427 -640 464 -640 480 -640 427 -640 427 -612 612 -640 481 -640 480 -640 479 -640 425 -640 427 -640 266 -427 640 -640 305 -480 640 -640 427 -427 640 -455 640 -640 425 -480 640 -640 480 -375 500 -428 640 -480 640 -640 355 -375 500 -640 427 -640 204 -640 640 -640 480 -640 427 -640 457 -427 640 -640 425 -500 375 -640 426 -640 427 -640 480 -571 640 -640 480 -640 628 -480 640 -427 640 -640 425 -427 640 -500 375 -426 640 -500 332 -640 480 -640 427 -640 427 -640 427 -332 500 -457 640 -640 429 -640 427 -427 640 -496 500 -640 383 -640 422 -640 480 -640 427 -640 347 -393 500 -480 640 -640 637 -640 424 -500 375 -640 480 -640 480 -640 427 -640 425 -640 480 -640 427 -640 480 -640 427 -640 432 -640 480 -640 428 -427 640 -500 375 -640 480 -640 425 -640 465 -640 480 -640 324 -640 480 -640 427 -640 462 -640 426 -640 360 -640 427 -640 426 -424 640 -640 428 -500 334 -640 425 -640 213 -640 480 -333 500 -640 359 -640 480 -640 427 -612 612 -480 640 -480 640 -640 480 -640 427 -500 381 -500 342 -640 449 -640 480 -640 430 -640 480 -640 427 -640 480 -427 640 -427 640 -640 427 -640 480 -640 399 -640 457 -640 480 -640 480 -640 427 -640 337 -640 427 -426 640 -640 428 -640 363 -640 480 -640 430 -640 481 -640 429 -640 480 -640 433 -640 428 -478 640 -640 427 -480 640 -612 612 -480 360 -640 480 -375 500 -640 427 -640 426 -640 266 -640 426 -498 640 -640 480 -480 640 -640 427 -640 427 -640 480 -480 640 -612 612 -640 624 -640 427 -640 398 -640 426 -640 480 -360 640 -640 478 -640 427 -640 427 -500 375 -640 526 -640 362 -640 480 -640 424 -640 480 -426 640 -480 640 -640 426 -640 426 -640 461 -640 480 -375 500 -640 426 -640 426 -640 425 -480 640 -640 427 -640 430 -640 478 -640 480 -350 500 -375 500 -640 427 -457 640 -640 480 -375 500 -640 640 -640 584 -640 480 -640 480 -500 349 -612 612 -500 375 -640 428 -640 480 -500 333 -500 400 -640 513 -640 427 -640 427 -480 640 -640 478 -457 640 -640 427 -500 281 -640 368 -640 480 -640 427 -640 427 -500 406 -500 375 -360 270 -640 422 -480 640 -640 427 -640 561 -640 478 -640 427 -640 480 -500 333 -640 427 -640 427 -640 480 -640 427 -640 485 -400 640 -427 640 -640 480 -428 640 -640 273 -600 402 -480 640 -640 518 -640 427 -640 480 -640 427 -640 427 -640 427 -640 480 -640 640 -640 426 -354 500 -640 480 -640 415 -480 640 -640 480 -640 418 -640 428 -640 480 -640 425 -335 500 -640 480 -640 636 -640 429 -427 640 -640 480 -427 640 -640 427 -612 612 -640 480 -640 480 -500 392 -640 430 -256 448 -640 327 -640 512 -480 640 -640 446 -640 480 -427 640 -500 457 -640 427 -640 427 -500 375 -640 426 -480 640 -640 640 -640 457 -640 482 -375 500 -480 640 -640 476 -640 480 -640 360 -480 640 -427 640 -640 480 -640 427 -640 427 -640 480 -375 500 -500 375 -426 640 -480 640 -640 321 -640 489 -425 640 -182 273 -640 427 -640 427 -640 436 -640 457 -640 426 -561 640 -425 640 -640 427 -640 427 -640 427 -640 451 -427 640 -640 480 -640 480 -612 612 -640 427 -425 640 -640 427 -640 480 -426 640 -375 500 -500 375 -640 426 -640 379 -427 640 -480 640 -640 425 -640 426 -500 493 -640 341 -640 428 -425 640 -640 480 -640 574 -640 480 -480 640 -640 427 -640 480 -640 478 -640 421 -400 640 -640 425 -424 640 -480 640 -640 426 -640 541 -424 640 -640 480 -640 478 -640 427 -426 640 -640 480 -427 640 -500 375 -500 375 -500 326 -468 640 -430 640 -640 480 -640 640 -640 480 -640 361 -428 640 -500 333 -480 640 -640 480 -640 429 -506 640 -640 391 -328 500 -612 612 -426 640 -640 565 -640 480 -640 455 -640 371 -640 426 -640 427 -454 640 -421 640 -640 427 -457 640 -640 321 -640 442 -640 424 -427 640 -640 427 -494 640 -400 239 -640 426 -640 480 -640 480 -480 640 -640 480 -480 640 -471 640 -480 640 -640 497 -640 480 -640 480 -424 640 -640 426 -640 425 -612 612 -500 250 -640 416 -640 480 -640 427 -427 640 -427 640 -640 298 -640 426 -480 640 -640 361 -640 480 -640 360 -640 427 -612 612 -640 426 -480 640 -640 424 -640 411 -640 480 -640 480 -640 426 -640 533 -640 480 -480 640 -640 427 -426 640 -319 235 -640 424 -480 640 -640 353 -500 348 -640 427 -426 640 -375 500 -640 480 -640 426 -640 466 -640 480 -480 640 -640 480 -640 427 -640 480 -480 640 -485 404 -524 640 -500 375 -640 480 -480 640 -640 480 -640 429 -480 640 -640 426 -640 480 -640 359 -640 444 -640 278 -640 469 -640 480 -640 425 -423 640 -612 612 -425 640 -426 640 -640 423 -640 480 -480 640 -640 427 -640 426 -600 450 -640 480 -640 427 -640 427 -640 480 -640 427 -640 427 -640 480 -640 428 -640 480 -640 480 -500 308 -640 478 -640 480 -640 427 -640 427 -640 427 -480 640 -480 640 -640 513 -500 336 -417 640 -375 500 -640 426 -640 454 -375 500 -640 427 -640 318 -640 427 -640 427 -375 500 -640 480 -640 358 -640 427 -640 426 -469 640 -640 427 -480 640 -480 640 -640 480 -640 426 -500 375 -640 427 -480 640 -640 427 -640 360 -500 375 -640 427 -640 480 -640 426 -500 333 -500 375 -480 640 -640 480 -640 480 -473 640 -640 566 -640 476 -427 640 -640 425 -640 490 -480 640 -359 640 -640 480 -500 375 -640 425 -640 427 -444 640 -640 427 -640 480 -640 480 -640 480 -332 500 -640 408 -480 640 -640 480 -640 640 -480 640 -640 480 -640 640 -500 372 -640 428 -607 640 -640 426 -480 640 -640 427 -640 458 -640 426 -500 375 -640 424 -612 612 -640 425 -640 480 -500 370 -640 480 -640 423 -640 427 -640 425 -640 428 -640 428 -640 427 -640 626 -500 267 -640 480 -640 480 -640 478 -332 500 -612 612 -640 428 -640 480 -640 453 -640 480 -640 223 -640 478 -640 427 -640 427 -640 480 -640 422 -640 361 -640 480 -427 640 -486 640 -427 640 -640 427 -612 612 -426 640 -640 427 -411 640 -500 375 -640 427 -640 360 -640 428 -640 428 -640 425 -471 640 -462 640 -640 480 -640 451 -640 427 -640 427 -320 240 -640 512 -427 640 -533 640 -640 427 -480 640 -640 426 -640 425 -427 640 -500 375 -640 425 -640 480 -640 438 -640 425 -498 438 -640 427 -640 423 -640 360 -640 480 -640 480 -500 375 -640 426 -480 640 -640 426 -500 400 -500 479 -612 612 -640 570 -480 640 -640 480 -640 427 -423 640 -640 480 -427 640 -640 480 -640 424 -640 426 -427 640 -640 480 -480 640 -640 480 -640 640 -480 640 -427 640 -640 427 -312 500 -640 480 -640 428 -640 427 -500 375 -638 640 -428 640 -375 500 -640 480 -640 425 -640 420 -505 640 -375 500 -500 296 -480 640 -640 480 -480 640 -612 612 -640 428 -640 471 -640 480 -640 463 -640 427 -640 425 -640 360 -640 360 -427 640 -640 640 -478 640 -640 426 -480 640 -500 375 -480 640 -425 640 -640 640 -640 564 -640 428 -500 375 -640 428 -640 427 -640 480 -640 512 -640 425 -640 452 -640 427 -640 491 -640 483 -480 640 -640 480 -427 640 -640 480 -640 425 -640 480 -427 640 -640 640 -640 428 -425 640 -640 480 -427 640 -429 640 -532 640 -480 640 -640 501 -640 480 -361 640 -450 372 -640 427 -640 480 -640 480 -640 480 -640 441 -480 640 -500 381 -428 640 -640 443 -640 482 -640 427 -640 512 -500 332 -640 480 -403 640 -640 426 -640 453 -480 640 -640 424 -410 500 -640 477 -480 640 -640 426 -500 372 -500 375 -640 360 -485 640 -640 480 -500 375 -640 608 -640 133 -640 428 -640 480 -520 373 -640 427 -480 640 -332 640 -640 427 -612 612 -640 480 -500 429 -640 480 -640 428 -500 375 -640 539 -640 469 -427 640 -640 427 -640 428 -427 640 -480 640 -640 427 -640 480 -640 426 -480 640 -640 480 -640 427 -640 427 -640 480 -640 428 -640 457 -640 480 -640 427 -534 640 -427 640 -640 446 -480 640 -640 425 -427 640 -480 640 -640 361 -500 375 -640 480 -640 480 -480 640 -640 431 -640 480 -426 640 -640 428 -480 640 -640 424 -500 375 -640 427 -640 480 -640 480 -500 375 -640 427 -640 470 -366 500 -333 500 -640 427 -500 375 -320 640 -640 426 -640 509 -612 612 -640 478 -640 426 -640 640 -640 480 -640 320 -448 600 -500 338 -427 640 -640 480 -426 640 -640 481 -640 480 -427 640 -612 612 -480 640 -480 640 -480 640 -425 640 -640 480 -640 480 -640 427 -640 427 -640 427 -640 480 -640 480 -640 480 -640 557 -480 640 -640 425 -640 427 -482 640 -500 375 -568 640 -640 424 -480 319 -640 480 -640 480 -640 480 -640 427 -640 415 -500 375 -500 328 -640 425 -640 431 -319 500 -612 612 -640 640 -640 640 -375 500 -480 640 -640 442 -333 500 -640 429 -640 428 -640 427 -330 500 -500 375 -640 480 -640 512 -612 612 -500 375 -640 427 -640 515 -441 640 -640 480 -493 600 -640 478 -331 500 -500 361 -640 428 -500 375 -640 428 -640 429 -640 427 -640 425 -480 640 -480 640 -480 640 -480 640 -640 426 -640 480 -478 640 -427 640 -375 500 -640 427 -640 475 -500 375 -640 419 -513 640 -480 640 -640 480 -640 428 -348 500 -640 480 -640 480 -640 480 -640 427 -420 500 -640 427 -238 640 -480 640 -640 480 -480 640 -483 640 -640 480 -640 480 -330 640 -485 640 -640 480 -640 429 -640 426 -640 480 -612 612 -640 394 -427 640 -640 457 -333 500 -428 640 -640 426 -640 480 -375 500 -640 446 -640 512 -427 640 -640 428 -640 328 -640 480 -612 612 -640 427 -471 450 -640 480 -480 640 -640 480 -640 480 -640 427 -640 448 -500 409 -640 432 -640 400 -640 427 -640 426 -640 480 -640 480 -640 480 -640 480 -480 640 -640 480 -500 333 -500 375 -427 640 -640 360 -427 640 -500 375 -640 427 -640 460 -640 360 -640 480 -640 480 -640 591 -427 640 -640 480 -640 424 -612 612 -640 431 -640 478 -427 640 -640 427 -640 480 -640 480 -638 640 -479 640 -640 480 -640 480 -640 456 -640 480 -427 640 -640 426 -500 335 -480 640 -640 396 -512 512 -640 427 -480 640 -640 424 -500 375 -500 333 -424 640 -480 640 -640 473 -640 482 -281 486 -480 640 -424 640 -426 640 -640 427 -640 436 -640 480 -500 375 -640 447 -640 427 -640 448 -640 427 -640 427 -640 480 -600 359 -640 148 -640 434 -640 480 -612 612 -500 500 -500 333 -640 426 -426 640 -640 480 -640 428 -640 494 -640 426 -425 640 -640 480 -640 456 -500 375 -427 640 -640 427 -640 480 -640 363 -542 640 -457 640 -640 360 -480 640 -640 478 -500 375 -640 424 -640 488 -480 640 -640 427 -500 375 -640 243 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -532 640 -640 318 -640 480 -640 427 -640 426 -300 225 -480 640 -640 480 -640 429 -640 379 -424 640 -359 640 -640 478 -427 640 -480 640 -640 425 -640 424 -640 480 -332 500 -640 480 -480 640 -640 480 -480 640 -640 427 -426 640 -640 425 -640 479 -640 480 -640 480 -640 428 -640 428 -380 500 -640 480 -640 383 -640 480 -640 427 -500 375 -480 640 -640 427 -500 400 -640 480 -640 427 -640 467 -640 480 -500 375 -480 640 -640 429 -500 375 -640 390 -480 640 -640 480 -600 450 -612 612 -480 640 -468 640 -640 427 -640 480 -640 427 -500 375 -640 480 -640 480 -640 426 -640 480 -640 427 -640 427 -640 480 -500 333 -640 427 -427 640 -640 480 -640 480 -604 640 -478 640 -500 376 -640 441 -640 403 -640 480 -640 404 -427 640 -640 394 -640 427 -640 480 -640 640 -640 480 -611 640 -612 612 -478 640 -640 480 -480 640 -612 612 -640 351 -640 513 -640 521 -640 360 -427 640 -500 375 -640 540 -480 640 -500 375 -423 640 -640 448 -500 375 -640 640 -500 303 -640 426 -640 384 -640 480 -640 429 -640 480 -424 640 -640 480 -640 480 -640 431 -640 480 -640 480 -640 426 -640 427 -640 480 -640 427 -640 440 -480 640 -500 352 -640 428 -640 481 -500 500 -640 480 -640 480 -511 640 -640 480 -640 425 -640 353 -640 424 -640 427 -588 640 -640 426 -640 392 -334 500 -496 500 -640 480 -480 640 -640 480 -443 640 -640 439 -640 640 -480 640 -305 500 -640 428 -640 480 -640 426 -640 480 -427 640 -640 427 -426 640 -640 426 -612 612 -480 640 -640 426 -640 457 -640 480 -640 580 -640 360 -640 428 -640 427 -640 480 -500 479 -434 640 -640 425 -531 640 -640 480 -640 426 -640 480 -640 391 -640 426 -640 480 -640 472 -640 376 -640 427 -640 480 -512 640 -500 389 -640 427 -640 427 -500 375 -500 375 -640 425 -640 480 -640 458 -640 478 -640 427 -480 640 -640 480 -640 427 -427 640 -640 425 -510 640 -487 640 -480 640 -640 480 -332 500 -427 640 -480 640 -640 451 -480 640 -375 500 -424 640 -640 480 -640 427 -474 334 -640 480 -480 640 -640 336 -640 480 -640 428 -426 640 -640 480 -640 428 -475 640 -640 480 -640 480 -640 426 -426 640 -640 427 -640 427 -640 387 -428 640 -500 407 -640 427 -363 249 -640 509 -428 640 -640 427 -500 375 -640 468 -640 427 -426 640 -640 480 -500 339 -500 375 -427 640 -500 333 -469 640 -640 393 -640 334 -640 491 -640 468 -500 332 -500 325 -640 480 -640 423 -640 480 -500 333 -640 425 -511 640 -640 425 -640 440 -428 640 -640 480 -640 428 -640 480 -640 426 -640 480 -640 480 -640 427 -289 640 -640 427 -640 480 -555 640 -640 480 -640 460 -640 401 -426 640 -640 480 -640 426 -428 640 -640 361 -612 612 -640 467 -640 427 -640 480 -640 480 -640 373 -640 428 -640 427 -640 425 -428 640 -640 427 -333 500 -640 427 -640 426 -514 640 -640 427 -640 428 -640 428 -640 426 -640 426 -335 500 -640 480 -500 375 -480 640 -640 427 -640 480 -640 480 -640 480 -640 480 -640 426 -640 480 -640 480 -583 640 -480 640 -640 426 -640 359 -640 480 -426 640 -480 640 -500 375 -640 486 -640 427 -375 500 -640 426 -640 480 -640 480 -640 486 -640 467 -640 459 -640 428 -427 640 -500 333 -640 427 -640 480 -640 484 -500 375 -640 454 -640 480 -640 480 -513 640 -640 427 -640 480 -375 500 -500 375 -500 333 -500 281 -640 427 -640 480 -480 640 -640 640 -640 426 -480 640 -640 480 -640 427 -480 640 -640 480 -640 427 -640 426 -640 470 -640 427 -500 335 -500 333 -640 427 -433 640 -640 428 -360 288 -640 427 -640 424 -480 640 -640 426 -640 426 -500 375 -640 426 -640 428 -640 436 -640 426 -480 640 -373 500 -612 612 -500 313 -640 480 -640 426 -640 426 -640 486 -640 480 -640 480 -640 426 -500 375 -640 427 -480 640 -640 427 -480 640 -640 478 -640 428 -640 427 -640 425 -500 375 -640 480 -500 375 -640 426 -385 640 -500 385 -495 640 -640 426 -640 480 -640 480 -640 457 -640 480 -640 480 -640 480 -640 426 -375 500 -269 448 -359 500 -500 375 -640 640 -640 426 -640 360 -500 333 -500 375 -640 535 -375 500 -640 429 -640 427 -640 480 -428 640 -640 480 -640 424 -424 640 -640 400 -417 640 -640 428 -409 640 -378 640 -480 640 -612 612 -640 541 -407 640 -640 480 -640 480 -640 640 -480 640 -640 447 -640 424 -640 480 -640 480 -500 331 -640 478 -427 640 -333 500 -640 427 -500 335 -640 480 -640 480 -427 640 -640 427 -536 640 -500 375 -640 430 -500 375 -640 438 -640 480 -512 640 -382 471 -640 430 -640 478 -640 508 -500 375 -640 424 -640 480 -640 480 -428 640 -640 480 -640 427 -640 480 -335 500 -640 364 -612 612 -640 427 -375 500 -640 480 -640 360 -640 480 -640 360 -500 334 -429 640 -640 480 -600 600 -640 479 -640 513 -480 640 -640 428 -640 460 -640 480 -640 480 -640 456 -640 480 -640 467 -640 427 -640 427 -640 480 -640 480 -480 640 -640 512 -640 480 -640 426 -546 640 -640 425 -640 360 -333 500 -640 480 -481 640 -640 427 -640 427 -640 480 -640 480 -640 336 -445 640 -640 427 -640 426 -640 198 -640 449 -640 425 -640 480 -640 480 -480 640 -640 427 -427 640 -599 391 -640 425 -640 480 -640 283 -500 375 -480 640 -640 406 -424 640 -640 421 -640 480 -640 426 -640 480 -640 480 -640 427 -640 480 -640 480 -425 640 -640 427 -640 480 -635 640 -500 335 -427 640 -640 480 -342 500 -480 640 -640 480 -333 500 -640 480 -640 480 -640 480 -480 640 -500 367 -427 640 -640 425 -480 640 -640 406 -640 519 -640 480 -640 425 -500 375 -640 318 -640 360 -638 640 -640 452 -640 480 -500 375 -500 333 -333 500 -640 427 -640 427 -640 427 -640 426 -640 481 -640 480 -536 640 -640 482 -640 426 -640 427 -427 640 -640 486 -640 480 -640 427 -640 427 -640 480 -480 640 -640 360 -480 640 -640 392 -640 427 -423 640 -640 427 -640 457 -640 360 -500 357 -640 480 -640 480 -640 480 -640 452 -480 640 -640 426 -640 427 -640 480 -640 425 -487 640 -640 428 -640 427 -640 426 -640 515 -500 375 -480 640 -640 640 -640 480 -480 640 -640 403 -640 243 -383 640 -480 640 -640 561 -500 410 -640 640 -640 480 -640 480 -612 612 -640 427 -640 480 -640 480 -537 640 -640 480 -500 333 -583 437 -500 319 -366 640 -640 480 -640 424 -640 426 -640 424 -500 321 -640 432 -640 480 -640 480 -640 427 -383 640 -427 640 -640 427 -516 640 -640 487 -640 398 -500 375 -640 478 -640 360 -612 612 -426 640 -640 480 -640 480 -640 427 -640 427 -427 640 -640 425 -500 333 -640 427 -640 640 -640 495 -640 480 -478 640 -640 480 -640 480 -500 375 -640 480 -640 424 -640 424 -500 408 -640 556 -480 640 -640 429 -480 640 -640 480 -640 478 -640 594 -640 427 -640 531 -640 429 -640 413 -640 478 -480 640 -480 640 -640 425 -640 485 -478 640 -478 640 -640 480 -640 453 -640 426 -426 640 -640 480 -640 425 -640 474 -640 480 -640 480 -640 480 -600 401 -640 440 -640 480 -640 480 -426 640 -480 640 -480 640 -640 427 -479 640 -427 640 -640 480 -640 480 -313 500 -500 375 -500 375 -640 425 -480 640 -640 480 -333 500 -640 433 -480 640 -500 371 -640 428 -640 480 -640 480 -640 480 -640 401 -640 480 -640 480 -640 640 -640 480 -640 429 -612 612 -640 427 -640 480 -640 427 -492 500 -640 480 -320 240 -470 350 -640 428 -640 512 -640 427 -640 403 -640 480 -640 480 -640 425 -640 427 -500 325 -640 480 -640 427 -640 425 -500 375 -500 332 -640 427 -500 375 -640 521 -429 640 -550 640 -640 426 -640 480 -640 476 -427 640 -640 480 -521 640 -480 640 -640 359 -640 427 -500 500 -640 427 -427 640 -640 425 -500 375 -500 334 -640 478 -500 281 -640 428 -640 426 -640 440 -640 480 -640 480 -640 426 -640 427 -640 480 -640 427 -640 480 -640 427 -375 500 -500 375 -640 427 -457 640 -640 480 -640 480 -640 480 -500 375 -640 480 -640 480 -383 500 -427 640 -640 427 -640 424 -427 640 -425 500 -427 640 -478 640 -640 427 -640 480 -612 612 -640 480 -640 427 -640 480 -640 420 -500 375 -640 214 -612 612 -375 500 -640 482 -640 427 -640 427 -640 466 -480 640 -640 480 -425 640 -480 640 -375 500 -640 480 -500 333 -640 480 -640 480 -640 438 -640 427 -640 394 -480 360 -640 431 -640 480 -456 640 -500 375 -640 480 -427 640 -559 640 -500 375 -640 478 -640 427 -640 480 -640 359 -640 480 -640 429 -480 640 -333 500 -640 428 -640 424 -640 428 -640 480 -640 512 -640 426 -640 425 -500 375 -640 480 -640 427 -463 640 -640 524 -640 427 -640 427 -640 426 -640 480 -612 612 -640 425 -480 640 -640 480 -640 480 -640 480 -640 430 -640 480 -640 480 -500 357 -640 480 -640 366 -375 500 -500 333 -480 640 -480 640 -640 424 -640 426 -640 210 -500 375 -640 427 -640 480 -640 480 -426 640 -427 640 -640 480 -480 640 -640 480 -640 427 -480 640 -640 480 -375 500 -425 640 -480 640 -640 427 -427 640 -640 480 -480 640 -640 480 -480 640 -480 640 -334 500 -640 506 -428 640 -640 426 -569 640 -640 431 -612 612 -640 480 -427 640 -375 500 -480 640 -640 640 -500 375 -640 427 -640 527 -640 426 -640 480 -640 480 -640 619 -640 427 -335 500 -640 427 -640 427 -640 500 -640 427 -640 478 -500 333 -640 427 -428 640 -640 480 -640 478 -500 500 -424 640 -640 444 -428 640 -640 480 -431 640 -640 369 -612 612 -427 640 -640 480 -640 428 -422 640 -640 424 -480 640 -640 427 -427 640 -425 640 -480 640 -640 480 -640 427 -640 453 -427 640 -640 480 -640 424 -640 480 -640 427 -640 427 -375 500 -640 428 -640 480 -640 480 -640 427 -640 426 -640 480 -640 480 -640 427 -640 428 -640 480 -500 375 -480 640 -640 480 -480 640 -500 324 -480 640 -640 426 -640 480 -640 425 -500 334 -328 500 -640 480 -640 478 -364 640 -640 427 -640 480 -640 426 -640 427 -640 640 -640 480 -457 640 -640 480 -640 425 -500 480 -640 427 -640 480 -640 360 -640 480 -480 640 -375 500 -640 424 -640 471 -640 480 -640 480 -480 640 -500 375 -640 480 -640 480 -640 427 -426 640 -428 640 -640 640 -640 421 -640 427 -640 429 -640 480 -640 480 -427 640 -640 428 -640 427 -640 480 -640 360 -640 480 -500 333 -640 428 -640 566 -480 640 -640 427 -468 640 -612 612 -500 333 -500 375 -640 480 -640 455 -640 483 -640 427 -640 480 -640 424 -640 383 -640 480 -640 427 -640 480 -480 640 -640 480 -500 237 -640 480 -640 491 -427 640 -326 500 -640 361 -640 512 -612 612 -500 333 -640 480 -427 640 -426 640 -640 485 -640 427 -640 480 -640 480 -640 480 -640 511 -640 480 -480 640 -640 523 -640 454 -640 360 -500 375 -500 375 -500 414 -500 375 -613 640 -640 420 -480 640 -640 480 -640 427 -640 442 -512 640 -640 426 -640 360 -500 375 -500 375 -640 427 -640 424 -640 428 -640 425 -640 427 -640 480 -640 360 -640 428 -640 426 -640 426 -427 640 -640 478 -640 640 -640 480 -640 426 -640 428 -500 322 -640 480 -640 428 -333 500 -425 640 -640 480 -640 513 -500 376 -480 640 -480 640 -500 333 -545 640 -425 640 -640 427 -479 640 -455 640 -405 640 -640 565 -640 480 -640 427 -640 480 -640 480 -640 454 -640 293 -640 476 -640 480 -640 480 -399 600 -640 425 -640 427 -640 427 -427 640 -500 333 -640 480 -640 427 -612 612 -640 422 -500 333 -640 463 -500 357 -640 480 -640 427 -640 427 -612 612 -428 640 -640 480 -640 426 -640 480 -640 480 -426 640 -640 480 -640 480 -480 640 -424 640 -480 640 -480 640 -640 426 -640 480 -640 480 -640 427 -640 480 -640 480 -480 640 -640 480 -424 640 -640 427 -640 427 -612 612 -640 480 -480 640 -640 480 -640 424 -640 514 -640 379 -640 428 -500 375 -640 427 -640 427 -500 375 -500 333 -640 480 -299 640 -640 425 -640 480 -640 510 -500 375 -426 640 -640 480 -640 480 -522 640 -640 480 -480 640 -640 427 -640 427 -500 344 -640 428 -640 480 -500 375 -352 288 -640 424 -427 640 -640 480 -479 640 -640 428 -640 427 -640 478 -612 612 -480 300 -640 427 -480 640 -640 237 -640 427 -640 461 -640 622 -480 640 -500 375 -640 502 -640 378 -640 480 -500 409 -640 224 -640 478 -640 394 -424 640 -640 480 -333 500 -640 395 -640 416 -479 640 -500 375 -640 640 -640 480 -640 403 -640 416 -480 640 -386 640 -332 500 -457 640 -640 480 -640 426 -640 427 -640 451 -640 480 -640 427 -640 480 -640 427 -478 640 -480 640 -640 427 -640 428 -640 480 -640 425 -640 480 -425 640 -640 427 -640 424 -640 426 -640 424 -640 284 -427 640 -640 427 -500 375 -427 640 -480 640 -640 427 -640 463 -640 446 -480 640 -640 317 -425 640 -594 640 -427 640 -480 640 -480 640 -640 427 -427 640 -640 640 -640 432 -640 480 -640 426 -640 427 -640 480 -640 480 -640 427 -640 430 -640 480 -561 640 -640 427 -640 478 -424 640 -426 640 -640 418 -640 427 -457 640 -640 480 -480 640 -500 375 -480 640 -640 478 -425 640 -640 533 -640 424 -640 427 -640 427 -640 359 -640 480 -612 612 -500 376 -640 480 -640 426 -335 500 -640 480 -640 426 -640 480 -640 640 -640 480 -640 427 -640 480 -640 480 -640 480 -427 640 -640 359 -467 640 -640 428 -640 480 -640 418 -640 480 -640 480 -640 480 -640 425 -640 427 -640 478 -640 480 -640 427 -640 427 -640 480 -640 414 -640 360 -427 640 -500 330 -640 480 -500 335 -640 480 -427 640 -640 439 -640 480 -640 478 -640 427 -500 375 -640 426 -640 427 -375 500 -640 427 -640 480 -640 480 -640 596 -640 400 -640 425 -480 640 -640 448 -640 429 -640 426 -500 304 -640 507 -640 427 -500 332 -640 426 -640 480 -427 640 -500 378 -640 426 -375 500 -480 640 -500 417 -640 480 -640 427 -640 481 -640 426 -640 426 -500 387 -286 417 -640 480 -640 424 -500 403 -640 480 -640 411 -500 332 -500 334 -640 427 -612 612 -640 395 -640 480 -500 335 -640 480 -640 480 -640 433 -640 427 -428 640 -640 640 -640 428 -500 375 -640 417 -427 640 -480 640 -640 360 -640 480 -640 427 -407 640 -640 480 -640 425 -640 480 -640 418 -640 428 -500 371 -640 426 -500 480 -498 500 -640 424 -640 426 -640 426 -640 427 -480 640 -640 480 -500 333 -640 480 -640 457 -426 640 -408 640 -640 428 -640 480 -426 640 -552 640 -640 425 -640 480 -500 375 -640 477 -640 488 -504 640 -312 480 -457 640 -640 480 -640 480 -640 425 -640 474 -640 480 -640 428 -456 640 -500 400 -612 612 -640 480 -640 439 -640 480 -640 427 -640 480 -640 477 -640 480 -640 425 -640 360 -480 640 -640 480 -640 480 -640 425 -640 480 -640 480 -431 640 -480 640 -640 426 -480 640 -428 640 -426 640 -461 640 -640 480 -337 500 -360 640 -640 480 -500 332 -480 640 -500 333 -464 640 -640 480 -640 480 -640 480 -640 428 -640 427 -640 360 -640 425 -480 640 -500 375 -500 414 -612 612 -640 480 -427 640 -640 366 -640 427 -427 640 -640 427 -640 480 -640 480 -640 427 -640 426 -640 480 -500 375 -549 640 -640 480 -429 640 -500 640 -640 480 -640 480 -500 375 -500 334 -640 480 -640 480 -640 444 -640 324 -640 480 -480 640 -640 427 -480 640 -640 426 -640 361 -338 500 -640 427 -640 480 -640 480 -480 640 -427 640 -530 640 -441 640 -500 375 -640 428 -640 512 -500 375 -640 480 -480 640 -428 640 -332 500 -640 427 -640 480 -640 425 -640 429 -640 431 -640 480 -640 427 -640 396 -425 640 -640 480 -640 427 -500 376 -375 500 -500 333 -640 480 -640 360 -500 375 -500 389 -640 480 -640 344 -480 640 -428 640 -640 480 -640 427 -480 640 -640 427 -640 547 -375 500 -612 612 -481 640 -640 480 -612 612 -640 480 -640 427 -426 640 -400 500 -640 427 -640 480 -640 419 -640 513 -640 480 -427 640 -640 426 -640 427 -500 333 -427 640 -640 424 -640 399 -640 480 -640 425 -640 364 -640 640 -640 427 -640 457 -640 629 -640 426 -427 640 -640 426 -500 375 -640 424 -427 640 -640 427 -640 428 -640 480 -640 480 -640 324 -500 375 -640 480 -640 427 -500 281 -640 427 -640 441 -640 427 -640 480 -500 300 -480 640 -350 500 -424 640 -534 640 -640 427 -640 427 -640 428 -640 426 -640 480 -480 640 -500 317 -640 427 -500 375 -640 480 -640 427 -640 480 -640 480 -640 480 -640 427 -480 640 -640 501 -640 478 -640 480 -640 424 -640 459 -500 375 -640 427 -480 640 -640 426 -640 481 -500 476 -333 500 -640 480 -640 490 -640 428 -640 568 -640 480 -640 512 -640 453 -640 480 -428 640 -640 480 -640 480 -640 480 -480 640 -640 624 -640 427 -640 438 -640 480 -640 400 -500 333 -640 480 -427 640 -640 426 -428 640 -640 480 -640 480 -640 480 -640 427 -640 480 -500 375 -612 612 -640 427 -640 480 -640 426 -640 449 -427 640 -640 427 -333 500 -640 427 -480 640 -500 375 -434 640 -640 463 -640 426 -480 640 -640 288 -640 425 -640 426 -640 480 -640 427 -640 425 -640 469 -359 640 -480 640 -640 480 -362 500 -427 640 -640 480 -640 426 -427 640 -640 425 -427 640 -640 480 -375 500 -640 468 -640 480 -500 375 -640 427 -500 410 -640 427 -500 374 -640 426 -640 480 -612 612 -480 360 -500 414 -640 480 -500 333 -640 426 -640 427 -640 425 -640 480 -640 480 -640 427 -640 425 -500 375 -640 473 -427 640 -640 426 -640 427 -640 396 -640 427 -640 488 -500 341 -612 612 -640 360 -640 425 -640 480 -426 640 -640 403 -640 427 -640 427 -640 428 -640 427 -332 500 -500 375 -480 640 -640 480 -480 640 -640 426 -640 427 -640 360 -427 640 -612 612 -640 480 -640 424 -640 416 -640 480 -640 480 -640 480 -500 375 -500 333 -640 427 -640 427 -427 640 -500 375 -640 480 -480 640 -508 640 -612 612 -500 375 -640 419 -429 640 -640 427 -500 375 -640 480 -500 332 -640 480 -640 426 -469 640 -427 640 -427 640 -640 480 -408 640 -480 640 -500 500 -425 640 -512 640 -640 455 -640 425 -640 480 -640 425 -640 364 -640 480 -427 640 -640 416 -640 480 -640 296 -640 427 -640 426 -640 480 -640 480 -640 480 -640 427 -640 480 -500 309 -640 465 -640 513 -640 426 -640 480 -640 556 -640 480 -426 640 -427 640 -640 640 -640 427 -640 427 -480 640 -480 640 -640 427 -425 640 -640 640 -427 640 -640 426 -640 429 -640 480 -640 481 -510 640 -640 480 -640 480 -604 453 -424 640 -640 427 -480 640 -640 480 -640 427 -640 427 -640 426 -640 480 -640 480 -375 500 -640 480 -640 426 -500 281 -640 480 -500 332 -640 480 -638 640 -640 457 -544 640 -612 612 -640 427 -612 612 -371 500 -640 324 -640 480 -640 427 -427 640 -365 500 -640 427 -483 640 -640 427 -500 500 -640 284 -640 479 -640 426 -640 427 -640 480 -359 640 -640 480 -469 640 -640 640 -640 428 -480 640 -640 426 -640 345 -640 422 -640 427 -427 640 -640 480 -640 425 -640 480 -640 480 -455 640 -640 480 -640 480 -640 480 -640 480 -333 500 -640 427 -640 480 -640 480 -500 375 -427 640 -640 480 -640 429 -480 640 -640 480 -640 369 -500 378 -640 619 -640 480 -427 640 -426 640 -640 426 -640 489 -640 307 -640 640 -640 424 -640 480 -500 404 -640 428 -426 640 -478 640 -640 426 -426 640 -500 357 -640 427 -480 640 -427 640 -640 333 -500 332 -592 576 -640 480 -640 480 -640 427 -640 339 -640 358 -500 375 -640 480 -480 640 -427 640 -427 640 -500 294 -640 286 -500 375 -500 375 -640 427 -640 264 -640 426 -640 427 -640 391 -433 640 -640 474 -426 640 -640 640 -640 423 -640 480 -500 333 -332 500 -640 428 -640 427 -427 640 -640 487 -640 427 -640 427 -500 377 -640 480 -640 478 -640 470 -500 362 -640 480 -640 507 -640 456 -640 427 -640 427 -333 640 -640 427 -640 397 -640 470 -640 480 -480 640 -640 427 -640 427 -428 640 -640 427 -640 402 -612 612 -640 427 -640 360 -500 375 -640 427 -640 427 -640 640 -640 480 -640 427 -480 640 -640 640 -497 640 -640 480 -612 612 -640 425 -500 348 -640 427 -333 500 -640 480 -640 428 -427 640 -640 428 -378 500 -640 360 -640 480 -640 426 -500 345 -477 640 -640 480 -640 480 -640 480 -640 480 -640 425 -640 427 -640 429 -640 428 -620 319 -427 640 -500 332 -500 375 -640 509 -640 426 -640 480 -640 457 -640 480 -640 424 -473 640 -432 324 -640 428 -640 469 -640 343 -640 427 -333 500 -640 474 -640 427 -640 480 -544 640 -640 480 -333 500 -500 375 -640 427 -500 454 -640 426 -640 640 -340 500 -616 640 -640 427 -380 500 -640 427 -640 427 -500 400 -640 425 -640 480 -640 399 -640 317 -640 480 -500 375 -640 480 -500 500 -500 375 -640 424 -640 480 -640 480 -640 427 -640 427 -640 480 -640 480 -640 453 -405 336 -640 395 -640 426 -640 480 -640 480 -640 482 -640 431 -480 640 -640 480 -427 640 -640 320 -478 640 -640 418 -500 375 -427 640 -424 640 -640 424 -640 482 -640 426 -375 500 -640 338 -425 640 -640 294 -640 426 -500 333 -640 427 -640 428 -640 480 -612 612 -640 480 -429 640 -640 355 -640 435 -376 500 -640 478 -640 480 -640 425 -640 480 -427 640 -480 640 -640 480 -640 428 -640 427 -640 427 -640 429 -400 300 -640 303 -500 500 -333 500 -640 438 -640 480 -480 640 -457 640 -640 426 -640 490 -640 427 -640 428 -640 425 -640 429 -640 462 -640 480 -478 640 -500 367 -640 428 -425 640 -640 480 -640 480 -500 375 -480 640 -320 240 -640 478 -640 480 -640 480 -500 500 -640 425 -640 480 -640 425 -640 427 -640 480 -640 480 -480 640 -640 428 -640 426 -427 640 -640 480 -640 480 -480 640 -500 375 -640 425 -427 640 -427 640 -640 427 -640 459 -500 335 -640 427 -427 640 -640 480 -500 333 -640 360 -429 640 -424 640 -640 480 -640 426 -640 464 -640 414 -480 640 -640 462 -640 640 -640 413 -640 480 -640 480 -640 432 -640 480 -640 480 -427 640 -640 480 -500 481 -640 427 -612 612 -640 479 -300 400 -612 612 -640 424 -600 428 -640 480 -467 276 -640 427 -640 428 -640 360 -427 640 -530 640 -640 392 -640 480 -640 480 -640 427 -460 500 -640 426 -640 427 -640 480 -500 500 -612 612 -640 480 -640 427 -640 427 -500 375 -579 640 -640 427 -480 640 -480 640 -480 640 -640 480 -500 375 -427 640 -640 427 -640 427 -360 640 -640 480 -640 427 -500 499 -640 501 -480 640 -640 410 -478 640 -500 375 -457 640 -640 480 -335 500 -612 612 -640 427 -640 480 -640 480 -364 640 -640 237 -640 400 -640 480 -500 375 -354 640 -640 427 -480 640 -375 500 -640 427 -640 427 -480 640 -612 612 -640 480 -640 427 -480 640 -640 425 -526 640 -480 640 -640 473 -500 375 -640 426 -640 471 -500 335 -640 426 -640 433 -480 640 -640 489 -640 340 -404 640 -640 428 -640 428 -640 427 -503 640 -426 640 -640 428 -640 360 -500 375 -640 427 -640 427 -640 427 -480 640 -640 433 -640 423 -640 480 -640 424 -640 480 -500 331 -640 480 -640 426 -640 454 -640 425 -640 427 -640 300 -466 640 -480 640 -500 375 -374 500 -640 640 -640 480 -640 480 -320 240 -640 508 -640 428 -500 375 -500 375 -640 480 -640 426 -640 480 -640 425 -478 640 -640 506 -640 426 -640 427 -480 640 -480 640 -640 427 -640 427 -640 428 -640 426 -640 426 -500 375 -640 480 -640 426 -640 425 -640 427 -612 612 -640 480 -640 441 -640 424 -640 425 -480 360 -640 417 -640 426 -640 427 -640 512 -640 426 -640 480 -640 480 -460 500 -640 520 -640 361 -640 512 -426 640 -640 427 -427 640 -500 375 -640 428 -480 640 -640 480 -640 480 -480 640 -612 612 -640 480 -332 500 -180 240 -329 500 -640 427 -427 640 -640 473 -640 480 -640 558 -375 500 -640 505 -480 640 -640 424 -375 500 -500 377 -640 480 -640 405 -640 480 -480 640 -640 427 -640 423 -480 640 -640 233 -335 500 -330 640 -500 334 -640 427 -640 588 -500 375 -426 640 -640 425 -640 480 -480 640 -640 480 -480 640 -640 480 -640 427 -640 480 -612 612 -612 612 -640 428 -427 640 -640 427 -640 480 -640 427 -640 237 -436 640 -640 424 -640 428 -427 640 -612 612 -490 640 -640 480 -480 640 -480 640 -640 558 -500 335 -640 417 -640 480 -640 427 -640 360 -640 425 -640 370 -640 481 -640 480 -640 480 -640 480 -374 500 -640 454 -640 480 -640 425 -640 426 -640 448 -640 426 -640 640 -500 429 -640 427 -431 640 -480 640 -512 640 -300 450 -640 483 -480 640 -425 640 -640 427 -640 412 -640 359 -640 556 -640 339 -640 480 -640 430 -640 421 -640 429 -640 480 -428 640 -640 428 -640 394 -480 640 -640 514 -411 640 -640 427 -640 428 -640 427 -640 429 -640 480 -640 430 -640 480 -500 332 -640 427 -640 480 -640 424 -500 263 -640 527 -640 480 -439 640 -480 640 -640 480 -640 480 -640 478 -640 480 -640 429 -640 427 -640 480 -640 411 -640 426 -640 480 -640 480 -480 640 -429 640 -640 480 -640 427 -427 640 -463 640 -640 427 -640 480 -640 480 -427 640 -431 640 -338 450 -640 427 -640 480 -640 480 -640 480 -640 480 -640 427 -640 480 -640 603 -640 480 -640 480 -640 512 -640 427 -427 640 -612 612 -640 480 -640 480 -333 500 -640 480 -640 424 -480 640 -500 375 -640 480 -640 480 -333 500 -640 429 -640 480 -640 480 -640 547 -396 640 -640 427 -640 480 -640 427 -640 424 -640 427 -500 375 -640 640 -640 427 -480 640 -640 429 -640 480 -640 424 -640 413 -640 478 -640 426 -640 426 -427 640 -332 500 -640 425 -640 427 -640 305 -425 640 -640 584 -640 480 -640 480 -640 425 -480 640 -480 640 -640 480 -500 375 -612 612 -640 427 -640 431 -500 375 -315 640 -427 640 -500 375 -640 480 -515 640 -640 480 -640 480 -500 333 -450 390 -640 427 -640 480 -640 480 -480 640 -640 427 -640 480 -640 480 -480 640 -480 640 -500 305 -627 640 -640 480 -640 569 -640 480 -375 500 -640 427 -640 427 -427 640 -640 589 -640 428 -640 439 -640 427 -480 640 -480 640 -640 427 -640 427 -640 480 -500 326 -640 426 -640 426 -640 480 -424 640 -640 618 -612 612 -640 427 -640 426 -500 500 -640 624 -426 640 -612 612 -579 326 -640 480 -640 480 -640 383 -627 640 -640 421 -479 500 -506 640 -640 480 -640 281 -640 427 -427 640 -500 375 -640 445 -640 427 -640 480 -640 480 -640 480 -640 471 -500 500 -640 360 -500 400 -640 480 -640 449 -452 640 -640 480 -640 424 -640 480 -427 640 -640 480 -640 427 -640 426 -640 461 -480 640 -640 480 -480 640 -636 640 -640 480 -500 375 -375 500 -640 428 -480 640 -640 421 -640 427 -480 640 -640 429 -640 425 -640 427 -640 471 -427 640 -431 640 -640 427 -640 431 -640 480 -640 480 -640 480 -640 480 -640 510 -640 480 -640 480 -640 512 -640 480 -501 640 -640 427 -640 427 -640 640 -640 480 -640 360 -640 426 -640 480 -427 640 -375 500 -640 640 -640 480 -640 427 -640 428 -640 427 -640 480 -640 426 -640 480 -427 640 -640 426 -500 325 -402 640 -640 432 -640 480 -480 640 -640 438 -640 512 -500 333 -500 333 -640 540 -640 426 -640 427 -640 480 -500 341 -500 375 -640 428 -301 640 -640 512 -640 480 -426 640 -350 467 -375 500 -640 360 -427 640 -640 360 -640 480 -640 480 -640 426 -480 640 -640 480 -640 441 -640 426 -375 500 -640 435 -640 427 -640 480 -500 375 -428 640 -453 500 -640 427 -640 480 -640 406 -494 640 -640 360 -640 480 -640 480 -640 427 -640 426 -489 640 -640 480 -500 375 -640 478 -640 427 -640 427 -640 429 -427 640 -640 427 -640 425 -640 463 -640 360 -640 480 -640 427 -640 480 -375 500 -640 427 -640 431 -640 480 -640 376 -640 640 -427 640 -640 426 -640 487 -640 428 -426 640 -640 480 -458 640 -640 427 -640 427 -640 629 -480 640 -640 513 -428 640 -425 640 -512 640 -640 480 -640 480 -640 427 -640 480 -640 480 -480 640 -640 428 -506 640 -640 480 -500 335 -640 480 -500 375 -640 426 -640 427 -480 640 -640 427 -640 477 -640 480 -640 427 -640 406 -480 640 -638 425 -640 426 -640 480 -480 640 -640 427 -640 640 -640 423 -640 457 -640 512 -640 427 -426 640 -640 480 -500 338 -640 520 -640 424 -640 398 -640 563 -640 428 -640 464 -640 401 -640 427 -354 640 -552 640 -500 375 -640 427 -640 512 -640 428 -500 375 -640 429 -500 435 -640 425 -600 400 -480 640 -640 427 -427 640 -120 160 -640 426 -500 375 -480 640 -428 640 -640 427 -640 480 -640 480 -640 480 -640 512 -640 480 -640 480 -512 640 -640 428 -640 427 -640 454 -640 480 -640 427 -486 640 -640 488 -500 375 -480 640 -346 640 -640 428 -640 376 -640 427 -640 539 -640 427 -640 371 -640 427 -612 612 -640 480 -640 480 -640 480 -612 612 -640 429 -640 512 -428 640 -500 192 -640 360 -640 449 -640 480 -640 480 -427 640 -640 620 -383 640 -336 447 -640 427 -480 640 -640 423 -640 427 -640 480 -640 427 -427 640 -640 351 -640 363 -640 444 -456 640 -427 640 -640 640 -640 610 -425 640 -612 612 -640 504 -333 500 -640 320 -640 426 -640 480 -640 423 -640 424 -640 480 -640 480 -640 480 -464 640 -640 427 -640 480 -640 360 -427 640 -640 480 -640 427 -500 375 -640 426 -640 427 -640 480 -640 427 -534 640 -480 640 -409 500 -640 480 -640 480 -640 427 -500 359 -640 480 -640 480 -640 480 -612 612 -640 428 -640 480 -640 496 -500 320 -640 525 -427 640 -640 480 -375 500 -640 480 -500 375 -500 375 -640 427 -500 375 -640 428 -480 640 -478 640 -640 427 -640 427 -640 632 -500 339 -416 640 -640 428 -640 428 -640 427 -640 428 -640 480 -640 479 -639 640 -480 640 -640 424 -640 480 -640 426 -500 333 -640 427 -640 480 -375 500 -640 352 -640 480 -640 425 -640 424 -640 480 -640 428 -640 426 -250 150 -640 481 -500 332 -385 640 -640 480 -500 332 -612 612 -640 480 -375 500 -640 419 -424 640 -640 426 -424 640 -640 480 -426 640 -640 480 -640 426 -500 357 -640 480 -640 480 -640 480 -612 612 -640 480 -640 480 -612 612 -640 480 -640 429 -427 640 -340 640 -500 333 -640 480 -640 480 -453 640 -640 428 -640 478 -480 640 -640 480 -375 500 -640 480 -640 480 -640 480 -640 457 -640 424 -640 425 -640 480 -640 480 -640 436 -640 414 -427 640 -500 400 -480 640 -640 500 -640 341 -640 428 -500 399 -427 640 -640 480 -640 480 -640 480 -640 481 -519 640 -640 426 -500 221 -640 631 -500 425 -640 427 -640 480 -640 480 -480 640 -640 460 -640 479 -640 427 -427 640 -640 429 -375 500 -640 480 -640 480 -640 427 -640 426 -480 360 -495 500 -640 432 -640 480 -566 640 -426 640 -640 478 -640 427 -640 428 -640 480 -640 480 -480 640 -375 500 -614 640 -640 480 -640 480 -640 404 -480 640 -640 427 -333 500 -640 480 -640 425 -428 640 -427 640 -500 500 -500 374 -640 526 -640 384 -640 427 -640 480 -640 480 -640 480 -375 500 -640 480 -640 426 -640 421 -428 640 -443 567 -640 480 -640 425 -640 480 -640 509 -640 360 -480 640 -640 480 -640 426 -640 427 -446 640 -640 427 -640 480 -640 428 -640 480 -599 400 -640 425 -427 640 -427 640 -640 427 -640 480 -640 427 -536 640 -500 333 -640 427 -427 640 -375 500 -640 480 -427 640 -640 478 -640 353 -500 375 -640 480 -640 480 -640 480 -640 427 -500 369 -640 480 -480 360 -488 640 -640 480 -640 480 -640 429 -500 334 -640 427 -640 427 -640 480 -426 640 -640 480 -640 346 -640 544 -375 500 -478 640 -640 480 -640 429 -640 541 -640 426 -427 640 -640 427 -500 333 -640 426 -375 500 -454 640 -640 480 -640 427 -640 427 -640 435 -427 640 -640 428 -640 480 -628 484 -640 510 -375 500 -640 433 -640 480 -640 395 -500 375 -640 426 -640 427 -640 478 -612 612 -480 640 -640 480 -640 480 -480 640 -500 375 -640 427 -427 640 -640 360 -480 640 -640 480 -640 432 -640 480 -640 480 -640 426 -640 480 -640 480 -500 332 -640 480 -640 424 -417 500 -640 480 -640 503 -640 480 -640 628 -640 426 -640 480 -480 640 -640 501 -640 480 -640 480 -640 598 -640 480 -640 480 -640 427 -640 428 -640 428 -640 481 -480 640 -640 427 -500 375 -640 640 -640 428 -640 480 -640 480 -640 522 -427 640 -480 640 -640 635 -640 480 -640 480 -640 480 -640 488 -426 640 -640 480 -481 640 -640 425 -640 426 -640 426 -429 640 -281 500 -640 427 -426 640 -480 640 -640 428 -640 480 -640 427 -328 500 -419 304 -480 640 -425 640 -640 640 -640 404 -640 480 -640 480 -640 426 -469 500 -393 640 -480 320 -640 426 -640 640 -427 640 -640 426 -427 640 -640 425 -640 427 -500 335 -640 458 -640 446 -640 359 -424 640 -640 480 -480 640 -640 480 -640 512 -640 319 -640 360 -640 427 -640 480 -427 640 -640 478 -604 640 -480 640 -640 427 -640 523 -640 478 -640 506 -500 375 -640 557 -427 640 -640 478 -640 480 -478 640 -480 640 -640 427 -640 427 -480 640 -477 640 -640 439 -640 623 -640 428 -427 640 -640 481 -640 356 -426 640 -640 426 -500 333 -640 429 -640 490 -640 427 -640 427 -640 527 -480 640 -427 640 -640 426 -640 426 -640 480 -640 463 -500 375 -640 474 -640 427 -500 333 -640 480 -640 480 -612 612 -427 640 -640 427 -640 433 -427 640 -640 416 -427 640 -640 480 -427 640 -640 480 -640 427 -640 427 -640 478 -640 480 -640 360 -640 480 -500 333 -640 427 -640 426 -600 640 -640 427 -640 426 -640 425 -640 480 -457 640 -428 640 -640 573 -640 392 -640 371 -480 640 -600 400 -640 480 -640 428 -640 480 -500 375 -640 480 -640 480 -640 425 -640 480 -640 480 -640 425 -640 425 -640 480 -640 480 -640 480 -640 480 -640 480 -375 500 -500 375 -375 500 -640 480 -568 320 -640 426 -640 428 -640 427 -640 428 -640 383 -640 487 -640 427 -375 500 -640 482 -640 427 -375 500 -640 480 -399 640 -640 427 -200 315 -480 640 -427 640 -427 640 -478 640 -500 410 -640 401 -375 500 -409 640 -640 424 -640 431 -640 426 -612 612 -362 500 -640 427 -640 427 -640 480 -640 360 -480 640 -640 427 -374 500 -640 478 -375 500 -640 480 -640 480 -428 640 -427 640 -500 375 -640 427 -360 640 -640 424 -640 425 -640 480 -427 640 -427 640 -500 400 -425 640 -500 357 -640 480 -640 499 -640 480 -480 640 -460 300 -640 480 -332 500 -640 427 -568 320 -640 424 -500 333 -640 461 -640 480 -427 640 -640 480 -640 429 -640 480 -500 375 -424 640 -640 480 -640 427 -500 333 -612 612 -500 352 -640 438 -500 375 -424 640 -480 640 -400 300 -640 480 -640 478 -640 583 -500 375 -400 300 -640 427 -425 640 -640 428 -640 480 -640 427 -612 612 -640 427 -640 480 -640 480 -640 428 -640 426 -640 424 -640 425 -383 640 -640 481 -640 640 -640 376 -640 480 -500 334 -640 436 -640 427 -427 640 -640 480 -640 480 -427 640 -640 556 -450 640 -426 640 -640 425 -640 480 -640 480 -640 480 -640 480 -640 480 -256 192 -640 427 -640 474 -640 480 -640 480 -640 480 -640 480 -640 296 -443 500 -640 427 -640 480 -640 547 -483 640 -494 640 -480 640 -640 480 -640 480 -640 428 -640 458 -561 640 -640 427 -640 483 -480 640 -640 479 -640 480 -640 480 -640 481 -640 427 -640 425 -640 427 -640 512 -640 348 -640 640 -640 425 -640 427 -480 640 -640 427 -640 427 -640 480 -503 640 -640 424 -640 427 -640 427 -480 640 -640 426 -640 480 -500 375 -640 427 -640 427 -640 474 -300 450 -640 480 -640 424 -640 480 -335 500 -640 427 -640 399 -640 512 -259 500 -500 347 -640 480 -640 480 -500 480 -640 427 -640 383 -640 424 -640 480 -640 427 -640 284 -640 427 -640 427 -640 376 -334 500 -640 480 -640 480 -640 425 -500 375 -640 427 -640 480 -640 396 -640 480 -375 500 -640 480 -500 332 -640 427 -640 480 -640 480 -500 375 -640 425 -520 368 -640 427 -640 427 -640 428 -612 612 -494 640 -640 442 -640 480 -640 425 -434 640 -457 640 -426 640 -500 375 -640 480 -640 427 -640 489 -480 640 -640 428 -640 586 -640 480 -640 480 -640 480 -640 360 -612 612 -640 480 -640 427 -640 480 -640 427 -640 613 -480 640 -640 394 -640 427 -640 427 -640 427 -640 433 -640 425 -500 375 -480 640 -537 640 -427 640 -640 383 -480 640 -640 414 -427 640 -480 640 -480 640 -640 480 -640 480 -426 640 -640 427 -375 500 -427 640 -480 640 -640 426 -640 480 -640 480 -640 426 -640 480 -375 500 -604 453 -375 500 -640 480 -640 480 -640 437 -500 333 -640 480 -640 480 -480 640 -333 500 -640 368 -640 640 -427 640 -640 425 -488 640 -500 334 -427 640 -640 485 -640 480 -488 640 -640 424 -480 640 -640 478 -640 427 -640 431 -481 640 -640 480 -640 426 -392 640 -500 440 -640 478 -426 640 -640 429 -612 612 -640 426 -640 427 -640 480 -500 375 -640 480 -640 428 -640 427 -486 640 -640 478 -640 426 -431 640 -640 425 -375 500 -640 427 -478 640 -640 427 -640 429 -640 480 -480 640 -640 511 -640 427 -500 400 -640 480 -640 361 -500 375 -333 500 -428 640 -640 411 -428 640 -640 347 -640 480 -640 427 -640 426 -640 480 -640 480 -640 534 -640 429 -480 640 -640 426 -640 480 -640 480 -640 480 -640 428 -640 298 -640 428 -640 428 -640 427 -640 480 -640 480 -500 376 -640 480 -640 480 -448 298 -640 329 -640 427 -640 401 -478 640 -481 640 -387 500 -640 480 -640 427 -368 500 -480 640 -640 480 -500 408 -427 640 -480 640 -640 426 -640 427 -640 480 -640 427 -480 640 -640 423 -640 320 -500 332 -375 500 -480 640 -640 427 -640 515 -640 480 -480 640 -433 640 -500 375 -640 426 -640 451 -427 640 -612 612 -640 480 -640 482 -425 640 -640 480 -640 360 -640 478 -640 480 -631 640 -500 333 -640 401 -640 480 -561 640 -640 428 -640 478 -640 480 -640 427 -640 480 -255 600 -500 375 -640 512 -500 500 -640 480 -640 640 -640 463 -640 425 -427 640 -640 426 -427 640 -640 473 -640 480 -612 612 -640 518 -480 640 -640 478 -500 375 -640 480 -480 640 -640 425 -640 359 -500 319 -480 480 -427 640 -480 640 -640 407 -427 640 -640 480 -640 640 -386 500 -640 300 -600 600 -426 640 -640 480 -480 640 -640 427 -640 480 -640 480 -640 427 -640 480 -427 640 -640 427 -640 426 -640 425 -500 375 -640 470 -640 427 -640 413 -409 640 -612 612 -640 480 -500 375 -640 424 -640 480 -640 480 -640 480 -640 480 -640 480 -640 404 -640 427 -640 480 -640 481 -480 640 -500 375 -640 434 -500 333 -294 400 -640 427 -640 474 -500 337 -333 500 -640 428 -640 427 -640 425 -500 500 -427 640 -640 457 -640 425 -640 480 -480 640 -640 480 -640 457 -640 474 -640 480 -640 424 -640 428 -640 480 -640 425 -361 640 -457 640 -640 427 -612 612 -640 480 -640 427 -640 427 -640 427 -640 480 -640 427 -500 333 -640 427 -424 640 -500 375 -640 512 -427 640 -500 333 -500 359 -640 427 -640 428 -640 480 -428 640 -640 372 -480 640 -427 640 -640 480 -640 427 -457 640 -500 333 -343 500 -640 425 -640 480 -640 480 -480 640 -500 334 -640 480 -480 640 -640 480 -640 427 -640 427 -640 480 -640 426 -640 427 -500 375 -480 640 -640 427 -640 480 -640 640 -640 360 -640 634 -640 427 -640 430 -640 427 -472 640 -640 640 -428 640 -612 612 -640 360 -338 500 -640 480 -320 212 -500 375 -500 333 -640 480 -640 426 -640 530 -427 640 -523 640 -640 384 -426 640 -425 640 -480 640 -640 480 -500 332 -640 524 -480 640 -640 480 -500 375 -640 419 -640 480 -640 478 -640 426 -640 480 -640 427 -640 480 -640 426 -640 428 -333 500 -640 480 -640 427 -500 333 -426 640 -640 426 -363 640 -640 349 -640 426 -500 375 -640 608 -375 500 -640 480 -640 426 -500 375 -640 428 -640 457 -480 640 -612 612 -640 480 -490 640 -640 461 -640 480 -640 480 -640 470 -426 640 -508 640 -480 640 -640 427 -640 480 -395 500 -640 480 -640 480 -640 480 -640 427 -640 480 -640 546 -640 480 -359 500 -640 428 -640 457 -640 427 -627 640 -480 640 -427 640 -640 427 -640 480 -640 482 -640 480 -640 427 -427 640 -640 640 -640 480 -500 331 -640 480 -640 427 -359 640 -480 640 -640 427 -640 425 -640 480 -640 425 -500 332 -640 364 -640 427 -500 375 -500 375 -640 427 -640 428 -461 640 -640 480 -640 480 -500 375 -427 640 -640 427 -640 466 -512 512 -347 500 -640 480 -480 640 -500 302 -640 480 -640 425 -640 428 -640 418 -640 480 -640 426 -640 480 -640 480 -500 478 -640 440 -500 375 -500 375 -612 612 -427 640 -640 427 -600 450 -640 480 -483 640 -640 480 -640 480 -640 427 -424 640 -426 640 -465 640 -640 480 -640 431 -640 427 -640 561 -640 413 -427 640 -640 427 -480 640 -612 612 -640 480 -457 640 -640 360 -640 480 -612 612 -480 640 -640 427 -612 612 -640 427 -640 426 -640 480 -640 429 -640 427 -640 480 -640 480 -640 426 -640 444 -640 424 -640 370 -640 480 -427 640 -640 480 -431 356 -640 424 -640 480 -426 640 -640 427 -640 427 -640 478 -640 428 -375 500 -500 315 -425 640 -640 480 -640 480 -640 480 -480 640 -640 478 -478 500 -640 480 -640 480 -426 640 -640 480 -640 419 -640 430 -361 640 -640 428 -500 332 -640 480 -427 640 -640 427 -500 375 -640 424 -640 425 -640 430 -500 375 -640 425 -640 480 -480 640 -500 333 -427 640 -427 640 -449 640 -431 640 -386 640 -640 480 -640 428 -640 480 -500 333 -456 640 -478 640 -428 640 -640 483 -640 427 -640 428 -480 640 -640 480 -480 640 -640 478 -640 480 -640 426 -427 640 -640 427 -640 213 -640 640 -612 612 -640 425 -500 414 -427 640 -640 480 -640 361 -500 333 -523 640 -480 640 -640 480 -612 612 -640 425 -612 612 -640 400 -480 640 -640 479 -500 400 -640 426 -640 401 -478 640 -428 640 -640 423 -640 425 -640 480 -640 480 -612 612 -640 480 -426 640 -480 640 -640 373 -640 480 -640 296 -500 375 -500 375 -640 480 -640 387 -427 640 -500 375 -453 640 -640 426 -640 480 -640 426 -426 640 -480 640 -500 374 -480 640 -640 427 -640 427 -640 427 -565 640 -640 431 -640 427 -640 480 -500 375 -640 325 -640 427 -500 500 -486 640 -640 480 -500 333 -500 375 -640 406 -640 427 -640 426 -640 480 -640 480 -480 640 -640 480 -640 427 -640 480 -375 500 -640 480 -500 375 -426 640 -333 500 -640 427 -612 612 -395 640 -640 373 -640 360 -640 480 -640 480 -640 480 -640 424 -500 375 -612 612 -640 424 -640 425 -640 480 -640 480 -640 427 -640 426 -640 480 -640 478 -491 500 -640 480 -480 640 -640 378 -366 500 -640 427 -640 428 -640 454 -640 512 -500 357 -480 640 -480 640 -457 640 -333 500 -640 480 -500 310 -640 480 -500 559 -428 640 -640 427 -500 375 -640 463 -640 425 -640 480 -375 500 -337 640 -640 480 -640 480 -640 480 -640 199 -371 500 -640 480 -640 476 -640 480 -428 640 -640 427 -640 428 -423 640 -640 480 -640 427 -640 427 -640 480 -500 375 -640 427 -240 320 -640 427 -640 398 -427 640 -423 640 -612 612 -500 375 -640 427 -640 480 -427 640 -640 440 -500 375 -480 640 -500 376 -640 427 -427 640 -480 640 -500 375 -500 307 -640 480 -428 640 -612 612 -640 480 -640 425 -384 288 -640 348 -640 427 -640 480 -640 480 -640 480 -480 640 -427 640 -640 427 -640 428 -640 480 -640 480 -640 511 -500 364 -640 359 -500 332 -500 375 -640 429 -640 480 -640 480 -640 427 -640 427 -500 345 -640 480 -640 427 -640 427 -640 478 -640 480 -500 500 -640 427 -640 427 -640 480 -640 512 -640 427 -640 480 -640 480 -640 427 -383 640 -640 426 -640 427 -640 480 -427 640 -500 375 -640 480 -375 500 -480 640 -427 640 -640 425 -640 640 -640 463 -338 500 -640 487 -640 480 -500 375 -640 474 -640 480 -640 412 -640 367 -640 427 -640 427 -375 500 -640 426 -640 427 -364 500 -640 439 -353 500 -640 480 -640 476 -640 640 -640 480 -640 425 -333 500 -640 425 -640 424 -640 360 -500 368 -640 426 -640 427 -640 480 -500 375 -640 461 -640 457 -640 321 -480 640 -640 427 -640 427 -640 427 -640 480 -271 640 -375 500 -640 427 -640 427 -360 640 -480 640 -640 418 -480 640 -480 640 -640 427 -375 500 -480 640 -640 480 -640 572 -640 428 -640 640 -640 427 -640 480 -640 478 -633 640 -640 425 -640 427 -640 422 -640 480 -640 451 -640 480 -640 427 -640 480 -478 640 -640 427 -640 640 -640 427 -640 480 -500 375 -640 428 -480 640 -640 443 -640 427 -640 427 -431 640 -640 425 -400 500 -640 426 -640 640 -640 480 -640 480 -375 500 -640 401 -640 483 -640 480 -640 427 -640 459 -640 481 -640 480 -640 259 -640 428 -500 375 -640 418 -480 640 -427 640 -640 546 -612 612 -320 240 -640 427 -640 360 -500 477 -500 375 -427 640 -640 428 -640 426 -640 427 -640 438 -640 480 -640 480 -640 428 -500 356 -478 640 -640 426 -640 428 -640 427 -480 640 -424 640 -612 612 -640 426 -640 429 -427 640 -640 360 -640 480 -640 591 -640 428 -640 495 -480 640 -640 480 -480 640 -640 480 -640 640 -640 346 -640 427 -640 427 -640 480 -640 480 -480 640 -640 427 -640 376 -640 424 -640 480 -500 375 -640 427 -640 480 -427 640 -640 428 -640 425 -500 309 -494 500 -640 480 -640 475 -500 375 -375 500 -640 427 -640 480 -640 480 -640 359 -640 512 -488 640 -640 426 -640 426 -420 640 -480 640 -640 427 -640 428 -415 500 -500 375 -500 273 -427 640 -640 480 -640 427 -640 427 -640 428 -640 426 -480 640 -640 427 -640 470 -640 427 -640 522 -640 427 -640 480 -640 428 -640 427 -500 375 -640 480 -500 333 -640 480 -347 500 -480 640 -640 428 -640 480 -500 375 -640 428 -500 334 -640 478 -640 428 -640 480 -640 479 -348 500 -500 375 -640 480 -500 339 -640 481 -640 640 -600 450 -426 640 -480 640 -640 427 -500 375 -640 424 -640 427 -640 478 -640 480 -480 640 -640 426 -640 427 -480 640 -640 434 -640 480 -480 640 -500 375 -640 480 -640 480 -427 640 -640 428 -424 640 -640 480 -640 480 -640 426 -640 427 -500 333 -640 480 -640 442 -640 388 -500 375 -640 480 -640 432 -333 500 -640 480 -640 427 -640 408 -377 500 -640 425 -640 381 -640 509 -640 480 -426 640 -640 371 -640 480 -640 424 -640 503 -640 212 -640 426 -640 480 -512 640 -500 400 -480 640 -500 375 -640 425 -640 427 -640 360 -640 426 -360 640 -431 640 -640 443 -640 480 -640 493 -480 640 -640 566 -640 427 -640 421 -640 480 -640 427 -640 425 -480 640 -640 480 -622 640 -640 427 -324 432 -640 427 -640 427 -640 480 -640 425 -640 480 -640 319 -640 427 -427 640 -640 480 -640 480 -612 612 -640 428 -612 612 -456 640 -500 375 -500 325 -480 640 -480 640 -480 640 -500 375 -612 612 -500 375 -640 480 -480 640 -640 408 -640 427 -640 408 -640 426 -640 427 -640 427 -480 320 -640 284 -640 427 -556 640 -640 427 -640 480 -640 400 -640 421 -500 375 -640 427 -640 480 -640 427 -640 480 -640 481 -561 640 -640 480 -640 468 -640 480 -640 425 -640 425 -500 375 -640 480 -426 640 -640 480 -640 427 -640 511 -640 565 -640 480 -375 500 -640 640 -429 640 -500 375 -480 640 -500 375 -480 640 -640 360 -640 480 -640 427 -500 333 -567 378 -480 640 -480 640 -427 640 -640 360 -500 400 -500 375 -640 428 -600 400 -640 427 -640 480 -640 480 -640 427 -500 375 -480 640 -375 500 -640 424 -640 640 -640 427 -375 500 -640 426 -500 375 -513 640 -640 429 -640 401 -540 407 -480 640 -640 426 -640 426 -640 480 -362 500 -640 480 -640 412 -640 425 -500 375 -640 480 -640 426 -426 640 -494 500 -500 375 -640 480 -640 480 -640 512 -480 640 -640 432 -375 500 -640 480 -478 640 -640 480 -640 459 -640 480 -426 640 -426 640 -640 512 -640 299 -640 427 -424 640 -480 640 -640 427 -640 427 -478 640 -640 480 -640 480 -640 480 -640 480 -500 375 -640 429 -640 480 -640 427 -640 426 -640 427 -640 426 -640 467 -640 426 -480 640 -640 458 -640 428 -640 480 -640 427 -424 640 -640 480 -480 640 -640 427 -640 480 -640 494 -427 640 -640 480 -640 432 -450 337 -640 427 -640 427 -480 640 -640 441 -480 640 -640 428 -640 425 -640 433 -384 512 -500 375 -640 427 -640 584 -500 333 -424 640 -427 640 -640 426 -480 640 -640 480 -444 640 -640 408 -427 640 -640 353 -640 480 -640 480 -640 428 -640 359 -480 640 -428 640 -500 400 -343 500 -640 480 -640 478 -640 427 -480 640 -500 375 -640 427 -480 316 -640 424 -425 640 -640 480 -640 480 -500 333 -640 480 -640 427 -626 640 -640 426 -640 480 -640 480 -427 640 -428 640 -423 640 -500 375 -500 307 -434 640 -480 640 -425 640 -320 240 -500 333 -640 427 -500 375 -480 640 -558 234 -640 515 -640 611 -480 640 -640 425 -427 640 -427 640 -640 427 -640 479 -640 480 -426 640 -428 640 -333 500 -640 430 -427 640 -640 480 -429 640 -425 640 -500 375 -640 488 -640 425 -640 406 -640 457 -640 480 -640 427 -640 480 -640 427 -640 480 -500 394 -640 464 -640 599 -427 640 -640 480 -640 513 -427 640 -640 480 -640 427 -640 479 -640 359 -640 429 -500 333 -500 333 -500 333 -640 427 -640 424 -640 426 -640 428 -640 427 -500 375 -500 375 -500 375 -640 480 -640 427 -640 478 -640 360 -640 427 -454 604 -500 375 -640 427 -640 427 -500 375 -640 360 -640 457 -640 420 -640 480 -640 427 -640 427 -640 480 -640 432 -640 480 -480 640 -640 427 -427 640 -640 480 -426 640 -640 480 -640 480 -640 480 -640 480 -428 640 -640 425 -480 640 -640 429 -640 480 -640 179 -640 480 -640 360 -640 463 -640 427 -480 640 -640 480 -640 459 -480 640 -640 426 -500 375 -425 640 -640 606 -500 375 -500 375 -640 354 -451 640 -414 640 -640 480 -500 281 -500 375 -640 427 -640 405 -640 512 -640 480 -612 612 -640 480 -447 640 -640 427 -640 480 -640 529 -640 317 -480 640 -234 500 -640 480 -480 640 -500 333 -481 640 -460 640 -640 480 -640 360 -500 375 -375 500 -640 480 -640 425 -640 480 -640 426 -476 640 -640 512 -427 640 -500 375 -478 640 -228 296 -640 480 -500 375 -406 640 -427 640 -603 640 -640 428 -640 480 -640 268 -426 640 -640 480 -425 640 -640 409 -427 640 -360 640 -361 640 -640 427 -437 640 -384 568 -500 332 -640 421 -640 360 -640 480 -640 427 -640 480 -428 640 -640 383 -507 619 -427 640 -480 640 -640 426 -480 640 -640 426 -640 480 -640 480 -640 423 -640 424 -640 428 -640 448 -640 427 -640 391 -480 640 -640 425 -640 480 -640 427 -500 335 -480 640 -500 334 -612 612 -427 640 -640 427 -500 355 -640 480 -512 640 -640 532 -640 427 -424 640 -640 453 -640 427 -640 480 -640 428 -640 424 -640 480 -640 480 -640 480 -500 375 -640 480 -480 640 -640 480 -640 428 -500 375 -640 428 -640 391 -480 640 -640 480 -640 480 -500 333 -640 554 -640 480 -640 480 -480 640 -640 427 -480 640 -640 461 -640 480 -640 427 -640 479 -640 427 -640 427 -640 480 -640 427 -640 427 -480 640 -480 640 -500 332 -500 375 -640 480 -640 429 -640 480 -640 427 -640 427 -482 640 -640 426 -500 375 -640 428 -640 426 -640 427 -640 427 -640 301 -640 480 -640 426 -640 428 -640 364 -500 375 -640 426 -640 426 -640 480 -640 424 -640 480 -480 640 -640 353 -640 429 -480 640 -640 480 -427 640 -426 640 -640 427 -640 427 -635 640 -640 480 -426 640 -640 480 -640 480 -640 426 -640 427 -640 426 -640 184 -500 333 -500 475 -640 408 -425 640 -500 375 -640 406 -640 471 -640 426 -640 411 -480 640 -333 500 -640 427 -640 480 -427 640 -640 428 -640 370 -640 414 -640 429 -640 438 -640 426 -480 640 -640 480 -640 427 -640 480 -640 426 -480 640 -640 427 -388 500 -640 425 -333 500 -640 428 -640 480 -640 424 -640 427 -640 424 -500 375 -640 480 -640 426 -640 427 -640 480 -640 640 -500 334 -640 425 -335 500 -640 516 -640 384 -640 425 -640 427 -640 427 -640 428 -640 480 -640 404 -500 375 -640 480 -480 640 -500 334 -640 319 -640 428 -640 480 -640 480 -640 359 -640 480 -640 425 -640 425 -612 612 -640 428 -640 480 -640 424 -500 375 -500 332 -640 426 -640 360 -640 425 -480 640 -640 427 -493 640 -425 640 -640 640 -500 375 -471 640 -640 480 -400 382 -640 427 -640 379 -640 424 -480 640 -640 480 -640 427 -640 428 -426 640 -640 425 -640 427 -640 432 -612 612 -500 375 -640 425 -640 480 -427 640 -640 427 -640 428 -640 480 -640 640 -500 375 -427 640 -640 524 -640 270 -640 424 -640 480 -500 333 -640 427 -640 318 -640 480 -612 612 -640 427 -480 640 -450 338 -343 500 -640 480 -428 640 -500 346 -640 465 -640 459 -480 640 -640 426 -640 427 -640 360 -640 458 -480 640 -640 404 -640 427 -475 389 -640 480 -500 375 -640 360 -427 640 -640 478 -640 427 -640 480 -640 480 -640 409 -500 375 -640 480 -640 480 -640 480 -489 640 -640 427 -640 480 -640 427 -640 480 -640 480 -640 529 -480 640 -640 360 -640 480 -480 640 -640 480 -640 480 -640 428 -640 425 -423 640 -500 281 -640 480 -640 480 -640 428 -640 428 -500 375 -640 378 -640 480 -640 371 -640 480 -640 480 -640 426 -640 480 -640 448 -640 427 -640 501 -480 640 -333 500 -640 480 -640 425 -640 480 -640 429 -640 480 -373 640 -426 640 -640 480 -640 427 -640 480 -640 424 -640 371 -612 612 -500 375 -640 457 -640 480 -640 427 -640 427 -640 480 -640 427 -640 429 -640 427 -375 500 -640 389 -333 500 -500 375 -500 375 -480 640 -612 612 -640 480 -500 375 -640 426 -640 426 -500 333 -640 480 -425 640 -427 640 -626 640 -640 428 -500 375 -640 495 -500 375 -640 424 -640 480 -640 480 -375 500 -640 533 -640 425 -640 424 -640 480 -640 399 -640 427 -640 426 -640 428 -640 425 -480 640 -500 375 -640 426 -640 480 -640 360 -640 427 -480 640 -480 640 -640 432 -500 471 -640 400 -640 427 -500 375 -640 425 -375 500 -640 480 -640 480 -640 496 -323 500 -584 640 -480 640 -640 424 -640 428 -480 640 -640 425 -478 640 -500 334 -480 640 -640 456 -640 458 -640 480 -480 640 -640 425 -480 640 -640 480 -640 424 -480 640 -640 640 -640 480 -640 480 -640 428 -500 375 -640 457 -375 500 -427 640 -640 427 -427 640 -282 500 -371 500 -150 200 -480 640 -640 480 -500 372 -640 480 -640 430 -640 480 -640 480 -640 480 -480 640 -640 427 -640 427 -500 375 -640 427 -425 640 -512 640 -640 427 -640 426 -640 218 -640 427 -640 427 -640 427 -640 427 -640 480 -640 382 -640 480 -484 289 -640 480 -640 461 -427 640 -640 480 -640 428 -375 500 -640 427 -427 640 -500 332 -640 427 -500 430 -640 439 -351 640 -427 640 -426 640 -333 500 -428 640 -640 480 -640 480 -427 640 -640 480 -500 375 -427 640 -640 480 -640 270 -640 473 -426 640 -640 427 -640 480 -640 480 -480 640 -640 480 -640 480 -352 500 -640 480 -480 640 -612 612 -640 427 -640 431 -640 329 -640 427 -640 426 -640 480 -640 480 -640 478 -640 427 -428 640 -394 406 -640 480 -640 480 -640 480 -640 359 -637 640 -640 482 -480 640 -480 640 -640 439 -427 640 -487 500 -640 480 -640 480 -640 426 -480 640 -640 341 -427 640 -427 640 -640 418 -640 374 -640 427 -640 480 -640 480 -640 433 -498 640 -640 427 -640 494 -500 333 -640 427 -480 640 -640 426 -640 426 -640 411 -511 640 -640 427 -640 426 -640 479 -640 427 -426 640 -500 375 -640 428 -375 500 -480 640 -640 482 -500 375 -640 427 -640 497 -600 400 -640 480 -640 385 -640 480 -640 640 -640 480 -640 426 -375 500 -640 429 -500 334 -375 500 -640 427 -640 427 -640 426 -640 424 -480 640 -571 640 -640 535 -640 428 -427 640 -640 480 -640 425 -640 480 -640 425 -640 480 -640 427 -640 424 -640 427 -640 480 -640 480 -640 400 -640 428 -640 425 -480 640 -640 480 -640 376 -640 440 -640 428 -375 500 -640 626 -640 427 -487 496 -500 483 -375 500 -640 359 -640 427 -640 480 -427 640 -640 480 -640 480 -640 427 -640 480 -640 429 -640 427 -640 480 -546 366 -500 375 -439 640 -640 425 -640 400 -480 640 -640 480 -425 640 -640 480 -427 640 -640 480 -500 375 -640 427 -640 427 -640 426 -426 640 -428 640 -640 473 -360 640 -640 480 -640 480 -420 640 -640 480 -640 427 -450 600 -427 640 -640 496 -640 480 -640 432 -577 640 -640 480 -640 514 -640 427 -375 500 -333 500 -640 480 -375 500 -640 427 -500 333 -640 444 -427 640 -640 426 -640 478 -427 640 -640 403 -500 500 -640 480 -640 426 -427 640 -500 334 -640 428 -425 640 -500 375 -640 480 -493 640 -640 640 -512 640 -640 427 -640 480 -612 612 -640 390 -640 424 -640 480 -640 427 -640 480 -640 513 -499 640 -640 359 -640 480 -640 427 -427 640 -640 425 -640 427 -640 427 -640 480 -640 427 -640 480 -640 373 -640 480 -640 480 -640 427 -640 427 -427 640 -640 360 -427 640 -640 424 -612 612 -640 425 -359 640 -427 640 -480 640 -640 426 -640 427 -640 427 -640 427 -640 460 -640 480 -612 612 -640 480 -512 640 -333 500 -640 480 -500 349 -427 640 -640 480 -640 424 -640 448 -480 640 -640 426 -480 640 -640 480 -640 426 -640 427 -640 427 -640 480 -640 427 -480 640 -480 640 -500 333 -479 640 -640 479 -640 550 -640 426 -640 480 -640 426 -640 478 -500 375 -640 424 -640 427 -640 425 -428 640 -640 427 -640 480 -640 426 -640 424 -640 480 -480 640 -640 427 -640 427 -640 426 -480 640 -640 480 -550 366 -640 427 -500 333 -640 480 -288 432 -640 480 -360 640 -640 429 -480 640 -640 427 -640 566 -427 640 -640 480 -500 375 -640 425 -640 640 -640 512 -428 640 -333 500 -500 500 -500 375 -640 425 -640 480 -640 480 -640 427 -640 461 -500 375 -600 450 -640 480 -640 480 -640 427 -500 375 -640 426 -295 175 -427 640 -640 425 -640 427 -640 480 -640 425 -640 427 -640 480 -640 457 -640 419 -640 443 -500 332 -500 375 -500 375 -612 612 -640 457 -612 612 -375 500 -640 427 -640 473 -640 513 -640 426 -612 612 -640 480 -600 600 -640 480 -640 425 -612 612 -640 427 -500 333 -640 428 -640 484 -640 480 -480 640 -640 360 -326 500 -500 401 -480 640 -640 468 -480 640 -640 480 -640 366 -640 480 -426 640 -640 425 -640 425 -427 640 -328 640 -500 298 -500 288 -480 640 -640 427 -425 640 -640 480 -640 480 -640 480 -500 375 -640 424 -640 427 -640 427 -640 426 -478 640 -640 480 -500 375 -480 640 -480 640 -640 428 -640 480 -480 640 -640 478 -640 416 -640 480 -640 360 -640 427 -640 427 -640 480 -639 640 -500 375 -640 457 -640 427 -375 500 -640 480 -480 640 -640 480 -640 481 -480 640 -511 640 -426 640 -640 640 -500 333 -640 480 -640 425 -632 640 -480 640 -640 480 -640 426 -383 640 -640 428 -640 428 -500 375 -400 500 -640 427 -612 612 -640 427 -640 483 -640 480 -640 489 -640 640 -640 480 -640 480 -640 480 -640 480 -640 426 -640 360 -480 640 -449 640 -375 500 -640 425 -640 457 -640 480 -640 427 -640 480 -640 377 -640 480 -640 427 -640 480 -420 640 -451 299 -640 478 -500 375 -640 426 -640 480 -640 361 -480 640 -640 481 -640 427 -640 480 -488 640 -640 427 -640 427 -640 400 -640 509 -423 640 -640 458 -640 480 -427 640 -640 480 -640 360 -640 480 -640 480 -640 426 -640 426 -640 480 -427 640 -483 500 -640 480 -640 427 -480 640 -480 640 -640 426 -400 300 -640 514 -500 328 -640 478 -640 480 -640 427 -640 480 -640 425 -375 500 -640 524 -640 376 -640 397 -640 427 -640 587 -640 480 -500 375 -640 373 -640 480 -640 481 -640 425 -640 443 -640 366 -640 426 -426 640 -424 640 -640 427 -426 640 -640 480 -640 426 -640 480 -640 480 -467 500 -424 640 -640 483 -640 478 -640 480 -640 424 -500 481 -640 426 -325 500 -500 333 -640 481 -480 640 -640 434 -480 384 -640 480 -640 480 -612 612 -640 427 -640 480 -640 425 -640 480 -640 480 -478 640 -640 252 -479 640 -640 480 -335 500 -375 500 -640 426 -427 640 -402 640 -640 640 -500 376 -480 640 -640 480 -640 409 -640 427 -640 481 -640 480 -640 360 -640 480 -500 334 -640 427 -480 640 -640 478 -480 640 -368 500 -640 425 -640 480 -375 500 -640 360 -640 480 -640 427 -640 480 -480 640 -426 640 -640 426 -640 427 -640 480 -640 622 -640 514 -480 360 -640 427 -640 428 -640 421 -640 380 -333 500 -640 480 -640 480 -640 480 -427 640 -640 360 -640 330 -640 425 -640 384 -640 480 -640 480 -640 429 -640 480 -640 480 -425 640 -427 640 -640 424 -640 480 -640 425 -640 480 -640 480 -640 454 -640 427 -500 374 -640 426 -640 480 -500 333 -640 458 -500 375 -640 427 -640 640 -640 427 -640 444 -640 426 -640 480 -640 480 -640 480 -427 640 -640 450 -461 640 -640 406 -612 612 -480 640 -640 480 -640 480 -640 634 -640 427 -640 480 -480 640 -640 424 -640 478 -552 640 -640 426 -640 480 -500 333 -640 426 -480 640 -499 640 -640 428 -374 500 -640 480 -640 480 -375 500 -480 640 -640 425 -640 478 -640 533 -640 427 -640 427 -480 640 -640 480 -457 500 -640 480 -500 375 -640 384 -500 375 -640 480 -640 480 -640 514 -640 427 -480 640 -640 480 -640 428 -640 424 -500 375 -375 500 -427 640 -640 427 -575 457 -640 426 -640 598 -640 427 -640 426 -640 478 -640 316 -640 481 -512 640 -494 640 -640 432 -413 550 -452 640 -500 333 -640 427 -640 480 -640 425 -640 480 -640 377 -480 640 -427 640 -640 426 -640 428 -419 500 -640 427 -480 640 -288 432 -426 640 -640 424 -640 427 -640 427 -640 426 -640 480 -640 480 -640 427 -427 640 -640 427 -500 375 -612 612 -427 640 -640 480 -640 313 -426 640 -640 426 -500 375 -480 640 -427 640 -640 480 -499 640 -500 333 -640 360 -500 375 -640 389 -612 612 -480 640 -640 478 -640 480 -640 427 -640 512 -640 424 -640 480 -427 640 -640 427 -417 640 -640 480 -640 640 -640 533 -640 480 -640 360 -426 640 -480 640 -640 480 -427 640 -426 640 -480 640 -640 480 -640 397 -640 511 -480 640 -426 640 -640 480 -640 427 -640 427 -640 480 -426 640 -427 640 -640 427 -640 427 -427 640 -442 500 -427 640 -640 427 -563 640 -500 375 -640 427 -612 612 -640 361 -640 479 -500 499 -640 424 -640 426 -640 433 -640 428 -640 441 -640 491 -640 639 -612 612 -500 333 -640 480 -640 424 -333 500 -375 500 -640 480 -640 427 -640 595 -640 554 -640 480 -640 427 -640 480 -640 543 -640 428 -640 426 -640 369 -494 640 -640 427 -640 425 -480 640 -425 640 -640 427 -640 427 -480 640 -500 334 -480 360 -612 612 -400 241 -640 480 -640 480 -640 427 -640 480 -333 640 -640 480 -640 426 -640 426 -640 480 -640 480 -640 439 -640 421 -640 426 -480 640 -500 357 -360 640 -427 640 -478 640 -480 640 -640 360 -512 640 -640 480 -640 480 -427 640 -500 375 -640 480 -426 640 -640 495 -584 640 -640 480 -640 427 -640 480 -640 361 -640 480 -423 564 -500 375 -640 425 -500 375 -612 612 -640 605 -640 427 -640 426 -640 480 -640 480 -640 427 -640 427 -640 428 -640 374 -640 426 -640 479 -640 478 -640 359 -480 640 -640 428 -640 425 -640 380 -480 640 -640 427 -640 480 -640 480 -640 480 -640 400 -640 425 -307 500 -640 376 -640 428 -640 427 -640 480 -640 480 -427 640 -640 480 -640 480 -500 375 -640 426 -375 500 -640 486 -500 341 -640 426 -640 498 -640 426 -426 640 -640 426 -640 427 -550 541 -640 480 -640 360 -640 427 -480 640 -640 480 -500 375 -640 426 -375 500 -480 640 -500 375 -452 640 -640 428 -640 478 -640 541 -375 500 -426 640 -640 480 -331 500 -640 427 -640 427 -640 425 -640 480 -640 427 -640 480 -640 265 -624 640 -640 480 -333 500 -640 480 -640 480 -640 425 -424 500 -640 427 -640 480 -640 426 -640 480 -640 426 -640 480 -640 432 -640 480 -640 519 -640 428 -640 543 -500 430 -640 480 -640 480 -640 427 -640 427 -640 480 -640 480 -640 425 -640 480 -406 640 -640 427 -640 480 -640 427 -640 480 -640 426 -640 360 -640 427 -640 480 -500 333 -640 480 -640 426 -640 480 -640 427 -640 427 -500 358 -640 480 -640 464 -500 333 -640 480 -549 640 -640 480 -367 500 -640 427 -640 423 -640 444 -640 428 -640 480 -500 500 -640 480 -640 480 -640 426 -640 428 -427 640 -480 640 -575 408 -500 375 -500 333 -640 427 -640 414 -640 296 -640 427 -480 640 -640 480 -640 431 -640 425 -640 480 -427 640 -448 640 -640 481 -428 640 -640 480 -640 480 -640 480 -640 427 -612 612 -429 640 -500 377 -640 480 -480 640 -640 423 -640 480 -640 427 -640 427 -427 640 -640 428 -640 428 -640 480 -640 427 -480 640 -640 427 -383 640 -640 360 -640 480 -640 397 -640 425 -427 640 -375 500 -500 375 -640 441 -640 427 -640 480 -427 640 -640 427 -480 640 -640 515 -640 404 -640 426 -640 480 -481 640 -640 427 -500 375 -640 428 -640 480 -640 480 -640 458 -640 424 -640 474 -400 467 -431 640 -640 305 -427 640 -425 640 -480 640 -640 427 -640 447 -640 480 -640 427 -640 427 -500 332 -640 480 -480 640 -480 640 -640 432 -640 427 -640 424 -640 480 -500 375 -640 426 -610 635 -640 426 -500 332 -480 640 -500 333 -640 512 -500 375 -640 427 -427 640 -640 427 -640 640 -640 427 -640 426 -480 640 -640 480 -612 612 -640 480 -424 640 -640 427 -500 375 -480 640 -640 480 -640 428 -640 427 -640 510 -480 640 -640 480 -640 427 -640 427 -429 640 -640 480 -640 444 -427 640 -640 640 -640 480 -640 427 -640 512 -375 500 -640 480 -640 480 -612 612 -423 640 -425 640 -640 359 -428 640 -343 640 -424 640 -640 427 -461 640 -640 640 -640 480 -640 515 -640 425 -640 427 -640 615 -640 480 -427 640 -640 426 -640 480 -640 429 -612 612 -640 430 -640 425 -640 480 -500 375 -640 480 -426 640 -640 480 -640 427 -640 427 -640 428 -427 640 -525 525 -640 480 -640 480 -640 480 -640 513 -640 383 -612 612 -620 640 -640 360 -500 375 -640 428 -640 640 -640 427 -640 427 -640 427 -333 500 -640 207 -640 615 -640 395 -480 640 -640 563 -612 612 -640 392 -640 480 -640 478 -640 427 -622 640 -640 427 -640 480 -640 480 -640 480 -500 375 -640 482 -640 478 -640 427 -480 640 -640 426 -332 500 -640 480 -640 480 -640 457 -640 480 -640 480 -368 640 -500 375 -612 612 -640 442 -640 480 -640 480 -427 640 -640 427 -612 612 -480 640 -375 500 -375 500 -640 360 -640 398 -640 409 -640 427 -427 640 -640 428 -514 640 -640 512 -640 480 -640 480 -500 329 -640 480 -640 476 -640 426 -500 375 -640 480 -500 375 -480 640 -500 375 -584 640 -640 480 -640 429 -640 425 -500 332 -640 424 -500 334 -640 427 -640 427 -640 344 -495 500 -640 427 -640 458 -640 533 -500 385 -640 480 -640 426 -640 639 -428 640 -640 427 -357 500 -640 425 -640 480 -640 480 -640 480 -640 361 -500 333 -480 640 -200 240 -427 640 -640 427 -640 481 -640 481 -640 480 -640 480 -640 381 -425 640 -640 428 -640 480 -640 426 -640 427 -640 480 -640 428 -640 414 -640 542 -640 480 -640 480 -640 480 -478 640 -640 410 -500 348 -640 480 -500 375 -640 425 -427 640 -640 427 -640 480 -640 427 -500 375 -640 428 -640 480 -640 480 -480 640 -428 640 -640 640 -640 426 -500 375 -640 429 -612 612 -640 456 -640 480 -396 640 -640 429 -640 480 -640 480 -612 612 -640 480 -640 427 -640 548 -640 532 -640 424 -640 640 -640 453 -640 427 -640 243 -612 612 -640 467 -640 425 -640 408 -333 500 -640 480 -640 480 -332 500 -333 500 -640 480 -640 480 -640 480 -640 480 -640 481 -500 375 -640 431 -640 427 -640 360 -500 358 -640 430 -640 613 -640 480 -640 427 -640 427 -640 480 -640 480 -640 480 -640 420 -640 360 -640 437 -640 527 -640 427 -640 438 -500 375 -461 640 -640 427 -640 427 -427 640 -427 640 -640 480 -426 640 -640 350 -426 640 -640 427 -500 333 -640 480 -640 461 -640 480 -640 427 -640 480 -640 426 -640 480 -640 379 -427 640 -640 461 -640 480 -640 426 -640 480 -640 480 -640 427 -640 359 -640 427 -480 640 -640 516 -640 432 -640 480 -640 480 -640 258 -500 375 -640 403 -500 375 -480 640 -640 433 -640 360 -640 349 -478 640 -640 427 -480 640 -640 480 -563 640 -445 640 -640 437 -640 428 -640 360 -640 480 -640 480 -424 640 -640 513 -640 480 -450 350 -640 427 -640 427 -640 398 -480 640 -400 300 -640 483 -640 428 -175 230 -427 640 -640 480 -640 428 -480 480 -640 513 -640 426 -427 640 -640 457 -427 640 -640 360 -640 360 -427 640 -480 640 -640 433 -640 426 -640 480 -640 383 -640 424 -500 375 -500 375 -604 452 -640 427 -500 375 -333 500 -640 318 -640 480 -640 427 -480 640 -640 640 -640 428 -640 427 -500 375 -640 425 -427 640 -640 431 -480 640 -463 640 -640 429 -428 640 -640 480 -640 640 -640 480 -612 612 -640 414 -640 427 -427 640 -485 640 -360 640 -461 500 -482 640 -640 480 -428 640 -479 640 -640 396 -640 426 -640 433 -640 390 -445 418 -640 427 -500 375 -511 640 -640 480 -640 480 -640 426 -640 427 -375 500 -500 375 -427 640 -640 480 -640 427 -640 480 -640 427 -640 427 -640 480 -640 420 -425 640 -333 500 -640 457 -640 427 -640 426 -640 513 -480 640 -480 640 -478 640 -640 427 -500 335 -640 426 -640 489 -640 480 -618 394 -640 480 -332 500 -640 508 -640 427 -640 480 -640 480 -640 427 -640 480 -425 640 -612 612 -640 421 -640 426 -480 640 -640 480 -640 480 -640 425 -640 237 -427 640 -640 360 -640 428 -640 480 -640 427 -426 640 -640 480 -480 640 -480 640 -640 427 -429 640 -640 424 -427 640 -640 480 -427 640 -640 479 -640 492 -479 640 -640 480 -640 427 -640 427 -500 375 -640 427 -640 480 -500 375 -640 640 -500 375 -426 640 -582 640 -640 480 -333 500 -427 640 -640 617 -500 375 -640 480 -480 640 -640 480 -334 500 -640 480 -640 426 -480 640 -500 333 -480 640 -356 640 -500 333 -426 640 -640 480 -640 425 -640 480 -640 640 -376 500 -640 480 -640 480 -360 640 -480 640 -640 480 -640 480 -640 368 -640 478 -640 426 -640 480 -500 375 -428 640 -640 480 -640 480 -480 640 -483 640 -500 375 -500 333 -424 640 -427 640 -640 480 -640 480 -640 428 -640 480 -480 640 -477 500 -480 640 -427 640 -640 436 -640 480 -640 480 -640 480 -500 332 -500 333 -480 640 -640 480 -640 428 -640 640 -640 620 -480 640 -640 427 -500 247 -640 480 -640 360 -633 640 -640 480 -640 426 -640 427 -640 320 -640 480 -640 480 -480 640 -640 480 -333 500 -433 500 -518 640 -640 424 -612 612 -500 375 -640 400 -640 480 -640 480 -640 415 -480 640 -640 427 -427 640 -640 480 -497 640 -640 480 -427 640 -612 612 -640 427 -640 513 -640 425 -640 625 -640 480 -640 425 -500 296 -640 426 -640 427 -478 640 -640 427 -500 375 -640 640 -640 480 -425 640 -640 428 -640 480 -427 640 -640 427 -640 428 -640 480 -640 427 -640 420 -426 640 -640 426 -640 480 -426 640 -640 427 -640 427 -612 612 -640 360 -640 281 -500 375 -640 379 -640 429 -500 378 -427 640 -640 427 -640 392 -500 375 -479 640 -500 375 -640 480 -608 640 -474 640 -640 480 -640 427 -500 375 -640 429 -640 480 -640 515 -640 480 -640 640 -640 480 -640 426 -640 442 -427 640 -480 640 -640 427 -640 426 -427 640 -500 374 -640 425 -640 425 -640 427 -640 480 -423 640 -640 480 -640 581 -640 427 -426 640 -640 491 -640 425 -612 612 -640 427 -640 426 -640 480 -500 375 -640 640 -640 424 -640 427 -500 375 -640 427 -640 427 -640 480 -640 480 -640 480 -640 426 -500 281 -500 375 -640 427 -640 480 -480 360 -640 410 -640 403 -478 640 -480 640 -640 478 -457 640 -640 427 -375 500 -334 500 -500 332 -640 394 -640 371 -640 426 -640 426 -425 640 -640 480 -640 480 -427 640 -640 427 -640 462 -640 191 -480 640 -640 480 -640 394 -640 438 -640 360 -640 640 -431 640 -640 427 -500 375 -640 398 -640 426 -427 640 -640 428 -383 640 -640 427 -640 424 -640 480 -426 640 -500 375 -480 640 -640 428 -640 427 -500 375 -640 425 -640 480 -375 500 -640 480 -640 428 -640 427 -640 419 -479 640 -427 640 -640 427 -480 640 -640 480 -455 500 -640 432 -640 478 -640 426 -426 640 -640 502 -640 427 -640 480 -640 331 -640 528 -640 480 -480 640 -640 427 -480 640 -640 399 -640 427 -640 424 -640 386 -640 480 -640 427 -413 640 -500 375 -640 480 -640 480 -480 640 -375 500 -640 427 -640 512 -640 480 -427 640 -640 425 -640 424 -640 426 -640 429 -640 428 -640 427 -640 480 -480 640 -640 424 -640 427 -480 640 -640 304 -612 612 -640 427 -640 346 -427 640 -640 427 -640 480 -272 408 -640 480 -480 360 -357 500 -612 612 -640 480 -640 427 -427 640 -375 500 -640 363 -500 375 -640 480 -640 480 -640 480 -400 500 -375 500 -640 479 -640 429 -640 366 -480 640 -480 640 -640 425 -640 401 -478 640 -375 500 -640 427 -640 458 -640 512 -640 480 -612 612 -640 498 -640 480 -480 640 -640 427 -640 480 -640 480 -480 640 -640 478 -427 640 -640 480 -480 640 -500 375 -640 480 -640 480 -640 480 -640 425 -640 427 -478 640 -640 361 -640 635 -500 375 -640 516 -427 640 -640 480 -640 368 -612 612 -640 427 -640 421 -427 640 -640 426 -375 500 -480 640 -640 460 -640 448 -640 303 -640 616 -500 281 -640 480 -640 426 -640 369 -640 429 -640 427 -640 640 -375 500 -640 480 -640 508 -640 427 -640 412 -500 375 -640 480 -640 480 -640 512 -375 500 -640 480 -640 427 -640 480 -640 458 -500 375 -640 457 -640 427 -351 500 -640 428 -640 480 -640 376 -500 333 -500 375 -612 612 -640 480 -640 427 -640 427 -640 426 -479 640 -600 400 -640 640 -640 428 -500 335 -574 640 -640 480 -372 558 -640 427 -640 408 -427 640 -640 471 -640 524 -640 360 -640 480 -640 424 -500 389 -640 480 -640 425 -480 640 -640 424 -640 361 -640 512 -640 480 -640 427 -640 463 -640 480 -640 426 -612 612 -500 375 -375 500 -640 360 -640 612 -640 480 -640 416 -640 408 -640 427 -640 606 -640 539 -640 480 -425 640 -640 425 -640 480 -332 500 -375 500 -375 500 -640 427 -375 500 -640 427 -640 425 -640 427 -640 427 -500 460 -640 480 -427 640 -640 428 -640 480 -500 375 -640 480 -640 265 -640 457 -640 480 -640 480 -640 512 -640 393 -640 428 -426 640 -500 375 -640 427 -640 480 -500 375 -640 429 -640 427 -480 640 -640 459 -612 612 -574 640 -640 480 -415 500 -400 597 -500 333 -640 427 -640 360 -640 480 -500 376 -640 480 -480 640 -427 640 -640 426 -640 426 -640 360 -640 427 -640 480 -640 427 -640 480 -640 480 -612 612 -640 480 -426 640 -640 480 -428 640 -360 640 -640 480 -428 640 -500 375 -640 480 -640 480 -640 424 -499 500 -612 612 -640 480 -640 487 -640 382 -640 430 -640 427 -640 427 -640 427 -640 426 -480 640 -640 425 -480 640 -640 437 -427 640 -640 426 -640 508 -534 640 -640 480 -375 500 -480 640 -640 480 -640 427 -612 612 -640 457 -640 427 -192 564 -500 335 -640 480 -640 480 -640 456 -453 640 -478 640 -640 640 -640 427 -640 485 -640 480 -333 500 -640 427 -640 358 -640 480 -640 426 -640 425 -470 640 -640 480 -640 426 -640 480 -640 427 -500 375 -500 416 -640 427 -640 429 -315 210 -640 480 -640 512 -480 640 -480 640 -500 500 -454 500 -478 640 -640 480 -640 426 -640 480 -640 429 -500 371 -640 410 -640 427 -640 448 -640 426 -640 453 -640 468 -640 425 -511 640 -640 480 -480 640 -427 640 -640 480 -478 640 -450 640 -500 401 -640 480 -640 383 -500 380 -640 425 -375 500 -640 427 -640 582 -640 480 -480 640 -500 375 -640 480 -640 480 -500 375 -534 640 -640 480 -640 417 -640 427 -640 480 -640 480 -640 427 -350 215 -640 426 -427 640 -640 427 -640 480 -500 328 -612 612 -640 426 -640 480 -640 480 -473 640 -435 640 -640 253 -427 640 -475 640 -640 368 -612 612 -640 478 -640 428 -640 426 -427 640 -612 612 -320 240 -427 640 -640 427 -640 480 -640 427 -500 333 -640 480 -640 426 -640 480 -426 640 -427 640 -640 360 -640 427 -640 516 -640 478 -426 640 -500 375 -640 481 -480 640 -640 427 -375 500 -640 427 -500 336 -640 400 -640 434 -640 480 -427 640 -333 500 -425 640 -480 640 -640 480 -640 427 -500 375 -480 360 -640 427 -640 425 -500 333 -640 383 -640 480 -640 427 -320 286 -640 480 -427 640 -640 426 -640 480 -480 640 -640 424 -640 241 -640 480 -600 450 -640 444 -375 500 -512 640 -640 427 -480 640 -640 480 -640 424 -640 405 -479 640 -640 497 -640 388 -640 401 -640 444 -640 427 -640 480 -640 426 -500 375 -640 427 -398 224 -640 480 -640 426 -640 409 -429 640 -640 482 -640 480 -640 427 -640 480 -426 640 -423 640 -425 640 -640 480 -612 612 -640 480 -427 640 -640 513 -640 424 -480 640 -640 367 -640 480 -640 577 -640 427 -640 480 -427 640 -383 640 -480 640 -427 640 -640 427 -640 425 -640 427 -612 612 -640 480 -500 332 -500 333 -480 640 -640 480 -640 480 -640 480 -427 640 -640 425 -428 640 -375 500 -431 640 -451 640 -640 480 -480 640 -640 480 -640 427 -640 424 -640 424 -640 480 -640 428 -480 640 -500 375 -640 427 -500 375 -640 427 -612 612 -640 428 -640 480 -640 480 -640 640 -612 612 -640 469 -640 426 -640 480 -640 427 -500 375 -640 427 -640 480 -427 640 -500 343 -600 407 -640 425 -640 480 -426 640 -640 457 -480 640 -640 427 -500 375 -428 640 -640 427 -640 427 -368 500 -640 441 -640 480 -640 480 -640 427 -640 480 -640 458 -427 640 -500 419 -640 425 -640 480 -640 334 -640 428 -480 640 -640 304 -640 361 -480 640 -427 640 -480 640 -640 540 -640 428 -640 480 -480 640 -427 640 -640 426 -612 612 -640 480 -640 570 -427 640 -334 500 -640 480 -640 459 -640 480 -375 500 -640 427 -640 425 -640 424 -500 375 -640 480 -500 333 -480 640 -640 498 -396 640 -640 431 -640 400 -640 480 -640 427 -640 426 -427 640 -640 480 -640 427 -640 480 -500 335 -640 480 -640 480 -500 358 -640 480 -640 425 -640 579 -425 640 -500 375 -640 428 -325 640 -640 480 -640 425 -480 640 -375 500 -640 426 -640 480 -640 359 -375 500 -320 240 -640 386 -640 480 -640 480 -640 480 -600 399 -375 500 -640 428 -640 481 -640 480 -640 480 -640 480 -640 427 -640 480 -640 283 -427 640 -424 640 -640 480 -480 640 -640 640 -640 359 -640 480 -640 400 -500 333 -640 518 -640 480 -640 458 -640 487 -640 360 -640 480 -480 640 -640 427 -640 420 -424 640 -640 563 -500 357 -640 480 -640 426 -640 470 -640 426 -480 640 -640 427 -640 447 -428 640 -640 480 -640 425 -640 480 -427 640 -430 640 -640 383 -640 429 -640 480 -640 316 -640 426 -640 480 -500 375 -480 640 -640 427 -640 447 -640 426 -640 425 -640 427 -640 509 -640 427 -480 640 -640 359 -480 640 -640 480 -640 480 -640 478 -640 426 -335 500 -501 640 -640 640 -500 417 -640 478 -640 480 -500 444 -640 360 -640 480 -480 640 -640 480 -640 427 -640 427 -500 473 -640 381 -640 480 -640 427 -640 425 -480 640 -640 481 -640 480 -640 480 -480 640 -500 376 -640 480 -640 427 -640 427 -640 480 -334 500 -640 366 -640 220 -428 640 -640 640 -640 426 -640 640 -640 480 -640 503 -640 480 -640 480 -640 427 -640 427 -512 384 -640 428 -640 480 -500 393 -640 480 -500 375 -640 480 -640 480 -640 426 -427 640 -480 640 -640 427 -640 480 -375 500 -427 640 -640 427 -640 422 -640 427 -640 446 -612 612 -480 640 -640 427 -480 640 -480 640 -426 640 -488 500 -480 640 -640 463 -640 480 -500 333 -612 612 -640 480 -640 427 -640 426 -640 480 -640 480 -500 375 -640 427 -640 371 -640 427 -640 427 -640 480 -640 480 -640 360 -640 421 -640 358 -640 360 -500 332 -640 480 -640 425 -640 424 -640 629 -428 640 -640 427 -640 569 -398 640 -640 424 -640 425 -640 427 -500 375 -640 425 -640 480 -640 427 -640 424 -375 500 -640 480 -640 480 -365 500 -640 250 -427 640 -500 375 -612 612 -417 600 -500 375 -640 480 -640 348 -640 427 -640 423 -612 612 -640 427 -515 640 -640 461 -640 427 -375 500 -640 494 -640 480 -640 426 -427 640 -500 375 -640 480 -640 427 -640 427 -500 333 -640 427 -640 480 -640 427 -640 640 -427 640 -480 640 -463 640 -427 640 -509 640 -427 640 -640 427 -640 480 -640 480 -640 480 -640 427 -612 612 -640 480 -640 480 -640 480 -540 403 -640 442 -640 425 -640 427 -640 427 -640 384 -640 481 -640 480 -640 309 -640 480 -640 480 -640 388 -640 480 -640 480 -640 480 -640 360 -640 640 -500 375 -640 427 -640 480 -640 480 -640 427 -640 480 -426 640 -640 425 -640 480 -640 424 -432 591 -640 439 -640 431 -425 640 -427 640 -640 480 -556 640 -640 428 -640 480 -640 427 -640 480 -640 480 -500 375 -640 427 -640 427 -480 640 -640 428 -640 359 -640 480 -640 480 -480 384 -640 571 -640 429 -640 427 -640 415 -640 424 -640 427 -640 480 -640 480 -640 427 -333 500 -480 640 -640 426 -500 375 -640 428 -480 640 -605 640 -640 427 -640 480 -640 360 -383 640 -640 427 -640 480 -462 640 -640 480 -427 640 -480 640 -640 427 -640 425 -285 309 -386 640 -500 375 -640 480 -640 446 -640 480 -640 480 -412 640 -640 480 -480 640 -640 473 -640 427 -427 640 -640 480 -480 640 -427 640 -333 500 -640 457 -640 424 -450 607 -640 427 -640 480 -640 480 -640 427 -640 480 -640 574 -640 427 -436 640 -640 384 -640 480 -640 428 -640 480 -640 332 -640 480 -640 589 -500 375 -640 427 -640 480 -640 414 -427 640 -640 503 -640 360 -375 500 -360 238 -425 640 -480 640 -426 640 -640 479 -480 640 -612 612 -361 640 -640 457 -640 480 -427 640 -640 427 -640 387 -640 431 -640 566 -640 480 -480 640 -359 640 -500 375 -500 332 -375 500 -640 480 -640 427 -480 640 -640 428 -480 640 -640 427 -375 500 -480 640 -612 612 -640 480 -640 426 -375 500 -427 640 -553 640 -640 480 -640 569 -640 427 -640 426 -640 480 -640 478 -640 480 -640 512 -500 375 -640 406 -640 427 -640 480 -640 427 -640 408 -500 333 -584 640 -480 640 -640 480 -640 480 -427 640 -480 640 -375 500 -640 426 -480 640 -640 563 -640 297 -640 476 -396 576 -640 425 -640 480 -640 480 -640 480 -640 427 -640 427 -640 426 -640 400 -500 375 -640 480 -640 427 -640 427 -640 427 -514 640 -427 640 -640 427 -640 480 -480 640 -640 636 -640 480 -640 541 -640 360 -640 353 -424 640 -640 427 -480 640 -640 427 -480 640 -324 319 -640 426 -480 640 -640 427 -640 427 -375 500 -640 480 -478 640 -640 451 -640 480 -500 375 -429 640 -334 500 -480 640 -416 640 -640 427 -640 478 -640 479 -640 480 -640 480 -640 480 -640 384 -640 416 -640 457 -640 424 -428 640 -640 427 -640 433 -640 480 -491 640 -640 426 -500 333 -640 427 -640 427 -640 480 -640 464 -500 382 -640 433 -640 428 -640 427 -384 640 -640 424 -640 480 -333 500 -426 640 -427 640 -640 427 -640 360 -640 484 -640 480 -500 375 -425 640 -427 640 -640 427 -640 480 -640 530 -640 428 -500 500 -469 640 -640 428 -480 640 -640 427 -480 640 -640 489 -375 500 -640 425 -640 480 -640 457 -640 428 -463 640 -500 375 -640 449 -640 480 -640 427 -640 426 -480 640 -640 429 -640 427 -640 480 -640 480 -640 429 -640 543 -500 374 -480 640 -640 427 -500 375 -640 427 -640 360 -640 480 -500 375 -612 612 -640 426 -640 427 -480 640 -640 469 -487 500 -640 426 -640 425 -640 425 -255 640 -640 480 -482 500 -640 361 -640 427 -640 424 -521 640 -640 480 -375 500 -640 640 -375 500 -431 640 -640 480 -640 458 -640 480 -640 427 -640 480 -427 640 -378 640 -640 427 -640 480 -640 640 -640 428 -640 427 -640 480 -640 480 -640 480 -463 640 -640 426 -640 427 -640 426 -640 640 -640 480 -640 480 -480 640 -612 612 -640 379 -427 640 -640 480 -640 424 -640 240 -640 480 -640 480 -640 480 -341 640 -425 640 -612 612 -480 640 -480 640 -640 428 -640 480 -640 480 -640 427 -640 427 -640 420 -480 640 -640 427 -427 640 -640 480 -640 428 -640 427 -500 375 -256 192 -640 417 -480 640 -612 612 -375 500 -640 480 -640 458 -375 500 -640 425 -500 375 -640 518 -478 640 -640 480 -640 361 -480 640 -427 640 -480 640 -640 427 -425 640 -640 427 -500 375 -640 427 -640 344 -480 640 -640 480 -500 375 -640 401 -480 640 -450 350 -443 640 -427 640 -640 366 -640 429 -640 480 -640 426 -640 453 -500 375 -640 480 -640 427 -640 427 -640 478 -500 325 -640 360 -640 480 -640 480 -640 427 -640 425 -500 469 -640 388 -640 480 -640 471 -473 640 -640 480 -428 640 -640 481 -640 480 -640 426 -640 425 -500 333 -500 375 -640 427 -640 480 -640 431 -640 533 -640 428 -480 640 -640 465 -480 640 -640 480 -341 500 -567 567 -640 427 -640 640 -640 425 -480 640 -375 500 -640 458 -597 640 -640 441 -500 387 -400 366 -640 426 -427 640 -612 612 -640 371 -500 375 -640 468 -480 640 -640 480 -640 426 -640 425 -640 353 -427 640 -640 480 -640 480 -640 426 -640 424 -640 428 -333 500 -640 480 -640 593 -640 425 -375 500 -640 478 -500 375 -640 424 -480 640 -640 424 -480 640 -640 311 -640 480 -640 480 -640 426 -640 428 -493 640 -640 480 -640 427 -640 480 -383 640 -500 375 -640 480 -640 427 -640 480 -640 478 -640 508 -640 427 -480 319 -500 375 -640 480 -640 426 -500 375 -640 480 -500 375 -640 426 -640 480 -480 640 -640 480 -480 640 -640 480 -640 447 -480 640 -640 633 -640 427 -640 427 -640 480 -640 504 -471 640 -640 288 -480 640 -427 640 -497 640 -640 480 -640 480 -640 480 -391 500 -640 427 -640 480 -640 480 -377 500 -375 500 -640 480 -640 427 -640 480 -500 375 -640 480 -640 478 -428 640 -640 428 -640 470 -480 640 -640 480 -640 427 -640 480 -640 427 -640 426 -640 480 -640 428 -640 425 -640 428 -640 427 -375 500 -640 425 -640 427 -640 515 -438 640 -640 480 -640 480 -426 640 -640 483 -640 425 -640 427 -640 478 -640 427 -640 427 -640 427 -640 510 -640 427 -500 375 -640 425 -612 612 -640 514 -640 453 -500 330 -480 640 -640 508 -640 427 -640 426 -640 480 -640 480 -640 479 -640 480 -640 480 -375 500 -640 427 -612 612 -441 640 -640 427 -640 480 -640 427 -500 375 -640 461 -640 360 -500 332 -426 640 -500 373 -480 640 -500 333 -500 331 -640 480 -640 360 -612 612 -640 480 -480 640 -640 457 -640 425 -640 427 -640 427 -375 500 -512 640 -375 500 -640 426 -640 478 -640 640 -640 480 -640 480 -500 375 -640 427 -500 375 -640 427 -640 480 -640 527 -480 640 -640 480 -427 640 -500 376 -612 612 -640 425 -334 500 -640 480 -640 480 -500 375 -640 458 -463 547 -480 640 -640 512 -640 480 -640 426 -640 424 -500 333 -640 481 -640 640 -612 612 -640 480 -640 360 -640 415 -640 426 -481 640 -640 434 -375 500 -452 640 -640 353 -640 480 -500 337 -640 480 -640 426 -480 640 -500 336 -640 401 -640 426 -640 558 -640 425 -640 424 -640 480 -640 428 -425 640 -640 427 -640 427 -640 425 -640 408 -640 427 -500 333 -640 480 -640 540 -640 480 -640 480 -640 480 -640 427 -640 397 -640 390 -640 640 -640 427 -640 395 -640 364 -640 480 -640 426 -500 333 -426 640 -640 480 -640 294 -640 427 -640 498 -640 424 -640 425 -500 375 -640 426 -640 421 -375 500 -364 640 -640 427 -640 428 -640 480 -480 640 -480 640 -640 480 -640 480 -640 429 -640 480 -640 480 -427 640 -640 427 -640 425 -640 428 -331 640 -640 480 -427 640 -640 426 -640 480 -530 640 -500 332 -640 339 -640 428 -500 433 -450 640 -429 640 -640 480 -640 480 -640 480 -640 425 -428 640 -640 427 -558 640 -640 480 -640 480 -640 427 -640 485 -500 375 -640 573 -640 640 -640 440 -500 343 -480 640 -640 480 -500 320 -480 640 -612 612 -640 473 -428 285 -640 427 -640 423 -480 640 -640 427 -640 640 -640 426 -640 375 -640 427 -500 332 -640 480 -640 640 -220 293 -640 537 -480 640 -200 305 -640 427 -640 492 -335 500 -640 353 -640 428 -500 375 -640 480 -640 427 -500 375 -640 428 -640 427 -640 480 -640 480 -640 360 -640 480 -640 480 -640 427 -429 640 -640 438 -640 426 -427 640 -640 480 -500 375 -640 480 -480 640 -640 427 -612 612 -640 410 -480 640 -427 640 -428 640 -640 480 -640 480 -640 480 -480 640 -464 640 -425 640 -640 419 -375 500 -500 375 -640 359 -500 333 -427 640 -640 446 -640 480 -640 353 -428 640 -640 425 -500 500 -480 640 -640 480 -640 478 -640 480 -640 424 -640 360 -480 640 -409 640 -640 427 -426 640 -640 428 -640 424 -640 425 -489 640 -375 500 -640 448 -640 427 -462 640 -640 425 -640 426 -640 480 -426 640 -640 480 -640 480 -640 427 -640 427 -480 640 -427 640 -480 640 -327 482 -427 640 -500 400 -640 396 -500 375 -375 500 -640 427 -640 428 -500 375 -640 427 -333 500 -640 427 -640 426 -640 428 -500 375 -479 640 -503 640 -640 489 -640 480 -640 379 -640 426 -640 480 -640 480 -480 640 -500 334 -640 480 -427 640 -500 375 -480 640 -640 426 -640 436 -640 480 -500 332 -500 375 -640 480 -612 612 -427 640 -500 375 -640 448 -640 480 -640 427 -640 438 -640 594 -640 480 -640 536 -640 427 -480 640 -640 480 -621 640 -640 480 -640 425 -640 464 -640 480 -481 640 -640 427 -480 640 -500 375 -640 427 -640 480 -640 480 -612 612 -640 480 -425 640 -640 427 -500 333 -640 480 -493 640 -448 336 -640 427 -640 480 -500 371 -427 640 -640 480 -640 424 -640 480 -640 427 -640 480 -625 640 -480 640 -640 427 -640 427 -640 425 -500 331 -640 553 -640 388 -640 480 -480 640 -640 426 -480 640 -640 427 -426 640 -480 640 -425 640 -640 427 -480 640 -640 428 -299 500 -640 480 -640 480 -640 424 -512 640 -640 427 -640 428 -478 640 -612 612 -640 456 -480 640 -640 426 -640 427 -640 455 -640 429 -640 430 -640 480 -640 360 -426 640 -640 480 -240 320 -375 500 -426 640 -500 333 -640 373 -640 434 -480 640 -480 640 -640 423 -640 427 -640 427 -500 334 -480 640 -640 478 -640 439 -500 419 -480 640 -640 480 -640 426 -500 375 -640 640 -640 548 -421 640 -640 428 -500 375 -640 427 -640 455 -463 640 -640 480 -500 331 -640 426 -500 333 -640 478 -640 428 -640 480 -480 640 -480 640 -640 480 -640 480 -640 480 -426 640 -640 441 -640 469 -640 480 -640 426 -640 480 -640 426 -640 454 -640 425 -640 480 -640 480 -640 427 -640 480 -640 480 -640 368 -640 480 -640 464 -640 428 -640 480 -640 428 -640 480 -640 480 -640 428 -640 480 -480 640 -480 640 -640 428 -640 428 -612 612 -640 427 -640 480 -500 336 -640 427 -480 640 -500 375 -480 640 -640 480 -400 500 -640 427 -640 474 -453 640 -640 303 -640 480 -640 514 -640 427 -640 568 -480 640 -640 359 -640 457 -640 480 -640 360 -640 427 -640 466 -640 339 -426 640 -640 478 -640 359 -640 427 -640 425 -480 640 -480 640 -640 480 -480 640 -640 482 -640 480 -640 360 -640 531 -640 480 -492 640 -640 483 -640 419 -363 640 -640 478 -640 426 -640 480 -480 640 -640 427 -640 480 -500 375 -640 426 -640 480 -427 640 -640 434 -640 428 -480 640 -640 428 -640 480 -500 375 -640 426 -640 480 -640 424 -357 500 -640 480 -375 500 -640 425 -374 500 -640 480 -640 360 -375 500 -640 427 -640 480 -500 334 -640 480 -640 427 -640 501 -427 640 -640 427 -640 427 -640 480 -640 427 -640 427 -480 640 -640 427 -640 427 -640 427 -640 480 -640 480 -500 333 -640 480 -640 428 -640 480 -640 310 -427 640 -640 512 -361 640 -640 427 -425 640 -417 640 -640 457 -640 424 -640 640 -612 612 -640 426 -480 640 -640 427 -640 424 -640 425 -500 334 -640 480 -480 640 -480 640 -375 500 -500 276 -640 360 -640 480 -640 480 -480 640 -640 480 -640 480 -640 444 -480 640 -640 429 -640 479 -640 400 -640 480 -425 640 -640 427 -480 640 -640 480 -640 425 -640 480 -480 640 -500 375 -446 640 -640 480 -640 374 -375 500 -640 427 -352 288 -371 500 -640 426 -640 427 -640 400 -500 333 -480 640 -640 418 -500 333 -375 500 -500 375 -640 487 -640 427 -474 640 -600 397 -640 480 -640 480 -640 151 -640 480 -640 480 -612 612 -480 320 -500 333 -640 480 -480 640 -549 640 -500 343 -375 500 -640 426 -480 640 -640 427 -476 640 -640 427 -640 426 -640 459 -640 423 -426 640 -640 424 -640 480 -640 429 -640 478 -640 424 -640 428 -480 640 -640 429 -480 640 -480 640 -640 408 -640 480 -640 480 -640 427 -640 425 -640 512 -640 426 -640 478 -612 612 -640 498 -640 480 -640 426 -494 640 -640 480 -480 640 -640 481 -640 508 -640 393 -640 386 -640 480 -480 640 -640 480 -640 458 -640 480 -640 427 -500 375 -500 375 -640 480 -320 240 -640 401 -640 390 -463 640 -640 478 -427 640 -640 480 -500 375 -640 480 -640 428 -480 640 -640 428 -640 424 -640 428 -640 426 -640 480 -640 480 -480 640 -640 480 -480 640 -640 501 -640 424 -640 480 -640 427 -640 426 -375 500 -640 414 -640 468 -640 427 -640 428 -640 480 -640 426 -640 480 -640 480 -398 640 -640 443 -640 425 -612 612 -640 425 -640 480 -375 500 -640 424 -480 298 -346 407 -640 428 -600 441 -500 375 -427 640 -640 425 -640 480 -500 375 -480 640 -480 640 -640 480 -640 426 -640 480 -640 480 -480 640 -500 333 -427 640 -500 356 -640 480 -640 480 -640 427 -426 640 -640 427 -427 640 -640 189 -640 427 -640 427 -640 480 -480 640 -612 612 -640 446 -640 425 -640 425 -480 360 -640 428 -640 428 -640 426 -333 500 -640 425 -500 308 -640 426 -480 640 -612 612 -640 425 -480 640 -640 427 -640 469 -612 612 -612 612 -640 416 -426 640 -500 332 -480 640 -500 338 -375 500 -360 640 -640 427 -640 428 -640 427 -640 428 -640 427 -500 332 -640 426 -640 425 -500 375 -640 427 -640 427 -640 425 -640 480 -427 640 -640 360 -373 496 -640 427 -640 607 -375 500 -640 480 -427 640 -640 480 -640 427 -526 640 -426 640 -333 500 -640 428 -478 500 -425 640 -640 428 -350 325 -640 458 -640 480 -640 427 -640 324 -640 480 -640 426 -640 427 -640 425 -500 320 -426 640 -427 640 -640 427 -640 426 -640 480 -640 477 -480 640 -640 429 -640 480 -640 484 -360 500 -375 500 -640 427 -640 581 -384 500 -640 427 -640 424 -496 640 -640 342 -500 375 -640 480 -427 640 -640 480 -500 332 -640 469 -451 500 -640 426 -500 374 -640 480 -640 360 -640 360 -480 640 -640 418 -427 640 -480 640 -640 480 -640 360 -640 377 -480 640 -640 427 -640 458 -640 424 -640 425 -480 640 -640 480 -640 426 -640 443 -640 480 -575 640 -500 375 -640 640 -640 402 -640 427 -640 480 -612 612 -640 396 -352 288 -480 640 -640 480 -640 431 -640 427 -640 359 -640 427 -640 480 -640 539 -500 333 -545 640 -640 428 -500 375 -640 640 -426 640 -640 624 -500 382 -640 480 -640 427 -640 428 -375 500 -640 359 -640 431 -640 491 -640 426 -500 333 -640 479 -566 640 -640 359 -333 500 -640 640 -640 480 -640 480 -425 640 -612 612 -480 640 -640 480 -640 478 -640 478 -480 640 -640 360 -640 458 -640 428 -500 371 -640 426 -500 375 -640 426 -640 480 -640 428 -640 426 -640 485 -640 426 -426 640 -640 427 -640 426 -375 500 -640 480 -480 640 -640 361 -640 512 -640 480 -426 640 -640 427 -640 640 -640 480 -385 500 -640 480 -640 480 -640 480 -640 480 -640 480 -640 425 -500 473 -500 374 -640 480 -640 426 -500 330 -640 445 -640 480 -640 449 -512 640 -479 640 -640 480 -500 375 -640 480 -640 425 -640 480 -640 427 -480 640 -640 478 -640 480 -500 375 -427 640 -512 640 -640 428 -640 480 -640 424 -457 640 -640 480 -375 500 -427 640 -640 426 -500 375 -640 480 -640 427 -640 480 -500 375 -640 424 -640 426 -640 427 -640 360 -640 408 -424 640 -612 612 -640 426 -640 522 -640 427 -640 425 -640 428 -640 427 -500 375 -640 480 -640 480 -640 480 -640 408 -640 480 -640 480 -640 348 -640 427 -640 480 -640 480 -500 332 -500 332 -383 640 -640 464 -640 426 -640 480 -640 480 -640 480 -640 480 -640 430 -640 426 -640 480 -640 480 -640 427 -427 640 -640 427 -640 360 -344 500 -640 427 -640 512 -640 426 -427 640 -640 360 -640 427 -640 480 -640 383 -640 480 -640 453 -640 428 -297 500 -640 480 -500 640 -640 480 -363 484 -427 640 -500 335 -640 425 -640 424 -480 640 -640 480 -640 586 -612 612 -640 480 -640 427 -640 480 -480 640 -375 500 -500 375 -640 424 -640 480 -640 426 -356 640 -640 427 -640 480 -480 640 -640 480 -480 640 -640 480 -640 480 -424 640 -640 415 -500 375 -478 640 -640 426 -480 640 -640 427 -480 640 -500 344 -640 493 -480 640 -640 582 -640 427 -640 480 -640 426 -500 375 -500 331 -480 640 -500 375 -640 398 -640 480 -640 480 -640 427 -640 508 -640 433 -640 480 -640 425 -640 480 -640 427 -640 554 -500 375 -640 480 -640 515 -338 500 -640 574 -426 640 -427 640 -500 375 -640 425 -640 428 -500 333 -640 425 -500 375 -640 480 -640 427 -578 640 -640 478 -640 480 -640 336 -500 335 -640 360 -333 500 -500 333 -480 640 -640 480 -500 375 -320 213 -640 480 -640 480 -485 640 -640 480 -428 640 -500 333 -427 640 -640 427 -640 480 -640 360 -612 612 -640 424 -640 480 -640 469 -640 480 -640 427 -640 480 -640 640 -335 500 -640 426 -640 480 -640 427 -423 640 -640 427 -640 480 -640 427 -612 612 -640 396 -640 427 -480 640 -640 480 -640 409 -640 427 -640 480 -612 612 -640 480 -640 480 -640 375 -640 459 -480 640 -640 458 -640 480 -427 640 -640 378 -640 480 -640 427 -480 640 -320 500 -640 428 -500 375 -640 543 -640 441 -431 640 -640 399 -640 480 -640 582 -640 431 -640 417 -427 640 -640 427 -640 480 -640 480 -640 480 -640 428 -640 360 -640 426 -640 427 -640 480 -640 459 -480 640 -640 556 -480 640 -640 294 -500 375 -640 308 -640 480 -640 425 -500 310 -332 500 -640 480 -640 480 -480 640 -640 429 -640 480 -500 375 -335 500 -640 310 -640 427 -640 526 -640 427 -640 426 -640 454 -500 375 -640 566 -640 481 -640 480 -226 640 -640 480 -640 360 -500 333 -640 328 -640 425 -480 640 -640 427 -640 480 -640 480 -640 427 -640 480 -640 480 -640 480 -640 640 -640 426 -640 424 -640 480 -640 480 -640 482 -467 640 -640 457 -640 480 -480 640 -640 480 -600 399 -640 364 -640 428 -640 427 -640 428 -500 375 -500 375 -640 453 -640 427 -640 359 -426 640 -640 480 -640 480 -375 500 -640 427 -480 640 -640 480 -640 427 -640 190 -640 482 -640 428 -640 427 -640 428 -425 640 -500 375 -640 360 -640 424 -640 427 -640 456 -640 480 -640 480 -640 480 -640 480 -640 480 -375 500 -640 425 -640 427 -640 438 -640 446 -640 427 -612 612 -475 500 -480 640 -407 640 -640 481 -640 427 -424 640 -640 480 -640 480 -640 480 -426 640 -640 427 -640 480 -640 425 -640 480 -480 640 -640 429 -500 375 -640 480 -612 612 -640 427 -500 375 -500 400 -640 216 -640 480 -640 480 -628 640 -640 453 -427 640 -640 428 -640 427 -612 612 -640 427 -640 480 -480 640 -640 425 -640 480 -612 612 -640 487 -640 425 -640 428 -640 266 -640 361 -640 480 -480 640 -640 428 -640 426 -640 640 -281 640 -640 454 -612 612 -640 478 -640 426 -424 640 -478 640 -480 640 -640 473 -500 375 -375 500 -640 424 -375 500 -612 612 -612 612 -640 480 -640 360 -640 431 -640 480 -640 393 -478 640 -500 301 -375 500 -640 426 -640 427 -640 480 -640 480 -375 500 -640 424 -480 640 -640 480 -640 427 -640 480 -640 427 -426 640 -480 640 -480 640 -640 480 -640 478 -640 426 -478 640 -640 428 -640 427 -480 640 -480 640 -404 640 -543 640 -425 640 -640 360 -640 480 -640 464 -612 612 -500 400 -640 607 -478 640 -640 427 -640 426 -640 479 -640 480 -640 480 -640 480 -640 428 -640 425 -640 359 -640 426 -640 359 -640 359 -640 462 -480 640 -640 640 -640 425 -640 400 -640 480 -640 428 -640 480 -640 478 -640 426 -480 640 -640 480 -640 576 -375 500 -426 640 -640 509 -427 640 -640 480 -640 480 -640 427 -500 375 -480 640 -640 406 -640 427 -593 640 -427 640 -612 612 -640 426 -375 500 -640 480 -512 640 -612 640 -640 316 -500 375 -640 427 -427 640 -500 333 -333 500 -500 375 -640 413 -375 500 -480 640 -640 480 -568 320 -500 375 -640 480 -640 421 -640 480 -427 640 -500 375 -427 640 -428 640 -320 240 -500 368 -640 480 -480 640 -640 428 -425 640 -640 480 -640 480 -640 640 -427 640 -640 480 -640 480 -640 427 -640 427 -480 640 -640 480 -480 640 -500 375 -640 480 -640 427 -570 640 -612 612 -640 513 -640 480 -640 480 -640 427 -640 480 -640 427 -640 360 -640 427 -640 426 -640 480 -640 422 -640 425 -612 612 -457 640 -500 334 -640 512 -640 338 -640 425 -480 640 -640 480 -640 476 -480 640 -612 612 -640 480 -640 319 -500 333 -360 302 -640 482 -427 640 -640 427 -640 426 -482 640 -480 640 -427 640 -428 640 -640 427 -640 428 -401 640 -640 398 -640 512 -640 458 -426 640 -640 501 -640 427 -357 500 -450 640 -480 640 -640 481 -264 400 -640 480 -640 480 -375 500 -640 429 -640 360 -640 427 -640 427 -640 480 -479 640 -640 425 -640 427 -640 480 -640 480 -640 427 -480 640 -426 640 -500 313 -500 375 -640 640 -640 429 -640 480 -500 333 -457 640 -352 500 -640 480 -640 480 -640 427 -400 500 -640 480 -500 375 -480 640 -480 640 -378 640 -209 500 -640 480 -640 427 -640 480 -640 480 -640 480 -640 480 -640 433 -640 428 -426 640 -640 480 -640 457 -640 422 -640 475 -640 480 -640 427 -640 512 -640 427 -640 480 -640 429 -640 429 -640 427 -640 480 -640 480 -426 640 -640 428 -640 413 -640 480 -640 480 -640 427 -427 640 -640 426 -640 632 -640 427 -640 359 -480 640 -640 426 -640 427 -500 333 -640 427 -640 510 -640 479 -640 428 -500 333 -480 640 -612 612 -640 427 -640 433 -640 424 -500 333 -640 427 -640 426 -640 457 -640 427 -426 640 -500 375 -640 480 -640 480 -640 435 -640 480 -640 360 -478 640 -640 427 -640 480 -612 612 -426 640 -640 426 -640 425 -640 427 -480 640 -640 361 -640 480 -640 426 -640 453 -640 480 -480 640 -640 480 -480 640 -480 640 -425 640 -640 428 -640 427 -640 425 -640 428 -500 318 -640 399 -500 375 -631 640 -640 427 -640 480 -480 640 -480 640 -640 480 -427 640 -640 480 -640 451 -640 480 -500 375 -512 640 -640 480 -500 500 -640 448 -480 640 -640 383 -480 640 -500 414 -640 480 -500 375 -640 427 -500 375 -425 640 -640 510 -500 421 -640 427 -640 480 -480 640 -480 640 -400 500 -640 427 -640 426 -640 427 -500 375 -640 428 -438 640 -500 333 -640 428 -640 480 -480 640 -375 500 -640 480 -480 640 -640 429 -640 480 -640 429 -640 480 -640 480 -640 427 -480 640 -640 480 -640 618 -421 640 -640 383 -600 450 -528 360 -640 427 -640 480 -640 425 -427 640 -427 640 -640 428 -640 480 -640 481 -439 640 -640 427 -427 640 -480 640 -457 640 -640 342 -480 640 -640 427 -500 375 -480 640 -640 426 -640 424 -640 427 -510 640 -281 500 -640 481 -640 480 -375 500 -640 480 -640 383 -640 480 -612 612 -425 640 -640 480 -640 427 -640 425 -500 347 -640 427 -500 375 -640 480 -640 427 -483 640 -640 480 -640 480 -640 425 -640 480 -500 379 -480 640 -640 466 -640 483 -640 480 -640 640 -640 640 -640 480 -324 640 -640 422 -640 427 -550 400 -640 480 -640 416 -640 480 -640 520 -640 426 -500 332 -428 640 -640 480 -640 424 -640 427 -640 480 -640 480 -640 480 -640 427 -640 480 -640 462 -640 427 -427 640 -640 427 -500 400 -500 332 -640 357 -640 427 -640 480 -640 427 -640 424 -640 440 -500 375 -640 428 -640 480 -640 378 -640 411 -640 480 -640 480 -640 427 -640 411 -640 480 -640 480 -640 459 -640 480 -640 480 -480 640 -640 480 -640 480 -640 427 -640 480 -640 426 -640 480 -427 640 -640 427 -427 640 -640 512 -379 640 -640 480 -640 428 -427 640 -427 640 -640 430 -436 640 -640 427 -500 375 -640 480 -500 375 -640 480 -640 480 -500 333 -640 424 -640 427 -500 375 -640 426 -640 381 -640 480 -640 406 -333 500 -640 480 -500 333 -418 640 -425 640 -640 360 -640 425 -640 640 -640 480 -640 427 -500 175 -640 427 -640 423 -640 480 -640 400 -640 224 -640 400 -640 474 -480 640 -640 389 -640 392 -640 433 -500 375 -640 480 -640 429 -432 640 -640 480 -640 428 -500 333 -640 427 -640 480 -480 640 -640 480 -424 640 -640 480 -640 442 -500 375 -640 480 -640 427 -500 334 -480 640 -500 354 -612 612 -333 500 -640 427 -640 554 -480 640 -640 479 -640 480 -427 640 -640 480 -461 640 -640 427 -640 513 -640 458 -640 480 -480 640 -375 500 -640 517 -640 480 -480 640 -640 426 -427 640 -640 480 -500 375 -640 509 -640 480 -640 477 -426 640 -640 427 -640 482 -640 427 -500 333 -424 640 -640 480 -640 480 -480 640 -640 480 -361 640 -426 640 -640 427 -640 427 -640 480 -500 499 -640 544 -640 640 -640 478 -612 612 -400 500 -640 480 -640 421 -640 480 -640 426 -640 337 -640 427 -640 429 -500 334 -640 484 -640 480 -425 640 -411 640 -480 640 -640 428 -640 427 -640 460 -640 427 -446 500 -370 500 -500 375 -500 377 -480 640 -640 429 -640 458 -640 480 -480 640 -640 371 -640 480 -480 640 -500 375 -640 426 -640 640 -640 512 -640 480 -640 424 -640 428 -480 640 -500 375 -640 480 -500 375 -444 500 -454 640 -500 375 -640 360 -640 480 -500 375 -640 480 -640 640 -640 322 -640 426 -640 479 -220 155 -375 500 -640 457 -640 427 -640 480 -640 427 -500 375 -640 640 -479 640 -640 428 -428 640 -640 434 -375 500 -640 480 -640 399 -616 640 -640 480 -480 640 -640 640 -427 640 -640 427 -480 640 -640 427 -640 480 -640 625 -500 375 -640 425 -640 426 -640 432 -640 480 -640 427 -509 640 -546 640 -640 428 -640 480 -640 426 -640 428 -640 426 -640 470 -640 480 -640 495 -640 338 -640 428 -500 326 -480 640 -427 640 -480 640 -640 363 -640 439 -375 500 -640 544 -500 375 -424 640 -511 640 -640 427 -427 640 -640 427 -640 478 -640 397 -640 480 -478 640 -480 640 -480 360 -500 333 -640 427 -425 640 -427 640 -511 640 -640 480 -375 500 -640 480 -478 640 -640 427 -640 427 -427 640 -640 480 -375 500 -480 640 -640 427 -640 455 -640 426 -640 427 -599 640 -480 640 -640 312 -640 427 -640 427 -427 640 -427 640 -604 453 -640 427 -640 480 -427 640 -500 375 -640 427 -500 335 -427 640 -500 333 -640 427 -640 426 -500 375 -640 463 -427 640 -640 428 -640 429 -640 427 -640 426 -640 426 -640 480 -640 480 -385 640 -640 439 -640 480 -500 375 -640 480 -427 640 -640 480 -640 435 -493 640 -640 480 -640 480 -640 480 -640 427 -640 427 -467 640 -640 426 -384 576 -500 375 -640 480 -640 453 -640 239 -600 387 -640 426 -482 640 -640 426 -640 428 -640 480 -640 427 -640 427 -500 375 -546 640 -480 640 -640 480 -426 640 -640 480 -640 480 -640 427 -640 480 -640 428 -543 640 -640 480 -500 375 -640 480 -640 423 -640 480 -640 626 -640 428 -480 640 -640 480 -640 425 -640 429 -479 640 -427 640 -480 640 -640 426 -563 640 -640 480 -333 500 -480 640 -640 427 -526 640 -640 424 -640 640 -640 480 -429 640 -500 309 -640 427 -640 427 -640 151 -640 428 -640 480 -640 480 -640 427 -640 351 -640 424 -640 426 -483 640 -640 360 -500 356 -640 480 -640 360 -640 427 -500 333 -640 424 -640 427 -640 480 -640 432 -640 480 -612 612 -640 413 -640 427 -640 480 -640 427 -427 640 -640 427 -640 427 -640 480 -375 500 -424 640 -640 425 -640 425 -640 480 -480 640 -500 383 -640 480 -640 480 -429 640 -480 640 -500 375 -640 480 -500 360 -640 479 -640 427 -480 640 -640 429 -375 500 -500 375 -640 400 -640 480 -640 478 -640 455 -640 427 -489 640 -640 343 -640 480 -332 500 -640 640 -640 427 -480 640 -640 480 -480 640 -640 427 -640 480 -500 375 -427 640 -640 428 -640 568 -640 426 -640 425 -640 480 -612 612 -640 512 -640 425 -480 640 -640 480 -640 425 -640 427 -640 427 -500 375 -640 480 -640 446 -640 548 -640 480 -317 500 -640 426 -640 529 -640 426 -640 429 -640 475 -556 640 -458 640 -640 480 -338 500 -640 480 -640 427 -500 500 -640 427 -333 500 -426 640 -640 640 -500 375 -480 640 -640 640 -640 427 -640 438 -640 640 -640 538 -640 425 -640 480 -375 500 -640 426 -640 427 -640 476 -640 400 -640 480 -480 640 -640 427 -425 640 -640 428 -640 390 -640 450 -640 426 -640 480 -500 375 -640 429 -640 429 -500 375 -640 427 -640 480 -500 500 -640 482 -640 428 -640 444 -640 480 -428 640 -480 640 -640 501 -640 480 -640 351 -640 480 -480 640 -429 640 -612 612 -640 480 -640 426 -640 480 -640 427 -640 480 -640 428 -500 375 -640 480 -640 480 -640 425 -413 640 -640 478 -500 500 -640 480 -640 481 -577 640 -480 640 -500 500 -640 480 -640 640 -640 480 -640 454 -640 363 -640 480 -640 368 -640 480 -640 480 -640 479 -640 409 -640 480 -426 640 -480 640 -640 425 -480 640 -427 640 -640 476 -640 425 -477 323 -480 640 -480 640 -640 480 -640 480 -640 480 -640 479 -640 425 -480 640 -640 480 -640 427 -640 426 -640 480 -640 480 -428 640 -640 480 -640 427 -640 480 -640 432 -426 640 -424 640 -500 375 -184 200 -640 425 -640 480 -640 480 -640 427 -640 426 -480 360 -640 480 -640 480 -640 480 -640 449 -426 640 -640 427 -640 480 -640 480 -640 400 -640 427 -425 640 -640 427 -640 480 -640 480 -640 426 -333 500 -640 428 -640 480 -428 640 -500 375 -480 640 -612 612 -450 338 -480 640 -640 425 -640 411 -457 640 -640 480 -640 427 -640 424 -480 640 -500 375 -426 640 -427 640 -480 640 -640 480 -480 640 -640 439 -640 480 -640 427 -425 640 -640 390 -640 640 -428 640 -640 480 -640 478 -375 500 -600 450 -640 480 -500 422 -640 480 -640 480 -640 431 -640 480 -473 640 -529 640 -640 427 -640 480 -550 400 -640 480 -612 612 -500 375 -426 640 -380 640 -375 500 -640 480 -640 429 -640 427 -640 427 -500 376 -383 640 -640 426 -640 480 -640 480 -427 640 -640 480 -500 375 -612 612 -640 480 -480 640 -640 416 -640 480 -480 640 -640 427 -500 400 -640 480 -640 427 -500 375 -640 640 -500 375 -623 640 -375 500 -640 359 -480 640 -640 480 -480 640 -480 640 -640 427 -640 428 -640 640 -640 512 -375 500 -640 480 -640 426 -640 428 -480 360 -489 640 -500 333 -480 640 -640 428 -375 500 -442 330 -640 428 -640 480 -612 612 -360 640 -500 375 -640 497 -640 427 -640 359 -640 427 -500 375 -640 512 -320 238 -425 640 -640 480 -640 480 -640 426 -640 427 -640 444 -612 612 -375 500 -478 640 -640 555 -640 426 -480 640 -640 480 -640 480 -640 426 -640 480 -640 426 -640 427 -640 426 -640 419 -640 427 -480 640 -427 640 -640 480 -640 480 -640 427 -640 480 -640 427 -480 640 -640 480 -640 360 -480 640 -500 375 -504 379 -473 500 -500 375 -480 640 -640 427 -427 640 -640 427 -448 296 -640 424 -640 480 -640 427 -640 384 -640 425 -640 424 -639 640 -640 426 -640 427 -640 480 -294 500 -640 427 -640 427 -640 457 -426 640 -640 512 -640 480 -640 480 -640 467 -640 423 -500 232 -640 480 -361 640 -433 640 -640 427 -446 640 -640 427 -640 480 -640 427 -640 480 -640 480 -612 612 -435 640 -640 478 -426 640 -640 425 -640 424 -640 427 -640 480 -640 426 -640 446 -640 480 -640 428 -352 500 -480 640 -500 375 -406 640 -640 480 -456 640 -640 427 -640 427 -480 640 -640 480 -640 480 -640 480 -640 480 -640 427 -640 359 -480 640 -640 465 -362 640 -640 480 -640 426 -640 640 -640 426 -640 480 -426 640 -640 480 -640 424 -480 640 -640 480 -640 480 -453 640 -534 640 -427 640 -381 640 -640 427 -640 478 -640 574 -427 640 -500 406 -640 154 -481 640 -612 612 -640 361 -640 480 -640 426 -640 353 -480 640 -640 480 -640 428 -640 480 -640 427 -480 640 -640 480 -640 419 -640 481 -640 427 -500 375 -500 375 -612 612 -640 426 -640 480 -480 640 -374 500 -640 454 -457 640 -640 451 -640 480 -640 427 -640 480 -640 380 -413 640 -320 240 -640 427 -640 424 -500 333 -600 410 -333 500 -480 640 -640 427 -640 480 -640 405 -640 427 -640 480 -427 640 -640 480 -640 428 -480 640 -640 478 -640 441 -480 640 -640 480 -429 640 -640 427 -500 500 -640 427 -450 640 -426 640 -640 273 -640 430 -640 503 -612 612 -640 428 -640 428 -640 427 -640 427 -640 480 -640 453 -640 640 -640 480 -480 640 -640 480 -640 480 -640 424 -426 640 -640 499 -640 480 -640 427 -640 485 -640 428 -640 480 -640 480 -640 427 -640 480 -480 480 -424 640 -640 480 -480 640 -500 400 -640 425 -500 333 -640 427 -640 480 -640 427 -640 435 -480 640 -500 333 -500 375 -612 612 -640 427 -640 480 -640 419 -500 333 -640 480 -640 427 -640 603 -640 427 -640 429 -640 405 -640 427 -640 427 -640 480 -500 400 -480 640 -500 333 -640 425 -640 435 -333 500 -640 426 -640 476 -480 640 -640 427 -634 401 -425 640 -640 427 -481 640 -640 480 -375 500 -640 427 -640 421 -640 425 -640 426 -640 426 -640 480 -640 480 -640 427 -419 640 -500 333 -640 480 -500 333 -640 480 -480 464 -640 427 -480 640 -640 539 -640 426 -640 480 -640 425 -500 332 -427 640 -429 640 -640 429 -640 424 -640 427 -640 480 -500 375 -640 429 -640 426 -427 640 -500 374 -640 426 -480 640 -375 500 -640 480 -375 500 -480 640 -389 640 -640 425 -427 640 -612 612 -640 480 -640 427 -640 480 -640 427 -640 340 -612 612 -640 427 -640 429 -640 451 -640 481 -640 512 -500 497 -480 640 -640 472 -640 480 -640 480 -640 480 -640 427 -640 480 -640 458 -640 425 -640 427 -640 444 -640 480 -425 640 -640 440 -640 425 -640 480 -478 640 -640 360 -640 480 -640 480 -640 640 -426 640 -640 427 -640 457 -427 640 -640 480 -640 480 -480 640 -640 480 -480 640 -480 640 -480 640 -640 426 -640 426 -640 480 -500 332 -500 375 -500 334 -640 463 -480 640 -640 425 -482 640 -501 640 -640 403 -640 433 -640 457 -640 427 -640 427 -640 480 -500 373 -640 488 -640 478 -640 480 -640 480 -454 640 -328 500 -640 494 -640 480 -640 426 -640 441 -640 427 -428 640 -478 640 -640 471 -480 640 -425 640 -640 426 -640 425 -640 480 -640 360 -375 500 -640 480 -640 480 -640 640 -640 512 -427 640 -640 427 -640 640 -500 375 -600 600 -640 426 -640 449 -478 640 -640 427 -480 640 -375 500 -480 640 -640 480 -640 426 -640 480 -640 480 -612 612 -640 480 -542 640 -425 640 -537 640 -500 375 -640 426 -640 427 -389 500 -640 359 -640 426 -640 425 -640 427 -640 424 -500 375 -640 402 -640 480 -306 640 -640 426 -640 424 -533 640 -640 423 -640 427 -640 480 -640 427 -640 427 -427 640 -640 428 -500 415 -640 427 -500 437 -640 428 -360 500 -640 480 -612 612 -480 640 -640 425 -640 427 -612 612 -426 640 -452 500 -640 503 -424 640 -612 612 -640 480 -500 333 -640 426 -414 640 -640 414 -640 396 -640 480 -640 480 -640 480 -640 480 -640 604 -640 427 -500 362 -640 426 -640 480 -333 500 -427 640 -480 640 -640 414 -640 480 -640 424 -640 427 -640 427 -640 480 -640 400 -640 640 -612 612 -612 612 -422 640 -426 640 -640 426 -500 375 -640 425 -640 428 -640 416 -640 480 -640 480 -427 640 -640 480 -640 640 -640 427 -640 364 -640 427 -431 500 -480 640 -640 480 -427 640 -640 462 -640 518 -427 640 -640 479 -640 426 -640 480 -640 486 -640 427 -640 360 -640 426 -612 612 -640 480 -640 427 -640 480 -640 427 -640 281 -640 353 -640 480 -640 640 -640 427 -640 480 -426 640 -523 640 -640 640 -640 427 -426 640 -640 428 -640 480 -640 427 -640 448 -640 427 -640 427 -640 444 -500 375 -480 640 -480 640 -640 425 -640 480 -427 640 -410 500 -429 640 -640 427 -640 640 -333 500 -640 433 -640 480 -640 424 -427 640 -640 426 -640 480 -640 425 -500 334 -640 480 -640 427 -500 400 -640 480 -640 427 -640 480 -640 426 -640 427 -640 427 -640 524 -640 426 -500 375 -640 610 -640 425 -427 640 -426 640 -640 553 -427 640 -640 425 -640 480 -427 640 -640 427 -640 427 -640 427 -640 359 -500 209 -640 480 -403 640 -612 612 -631 640 -640 426 -426 640 -640 394 -428 640 -425 640 -640 480 -640 476 -375 500 -640 479 -480 640 -612 612 -640 509 -500 335 -480 640 -640 427 -640 425 -640 457 -480 640 -640 480 -500 337 -640 635 -640 480 -640 427 -640 480 -640 427 -640 640 -640 640 -640 480 -421 640 -640 427 -480 640 -612 612 -640 480 -640 426 -426 640 -640 478 -640 339 -640 480 -500 377 -640 425 -612 612 -427 640 -640 427 -640 428 -640 481 -640 480 -500 467 -640 426 -478 640 -478 640 -640 426 -329 500 -640 468 -428 640 -480 640 -640 427 -640 360 -427 640 -500 333 -480 640 -640 556 -500 375 -640 480 -640 427 -500 332 -500 400 -427 640 -640 427 -612 612 -640 480 -500 334 -640 451 -640 425 -640 426 -427 640 -640 406 -480 640 -640 480 -640 503 -640 480 -640 480 -640 429 -500 375 -427 640 -640 480 -640 426 -612 612 -640 426 -640 480 -500 375 -640 429 -640 360 -480 640 -640 480 -640 428 -640 480 -500 375 -640 480 -640 424 -500 375 -640 424 -640 427 -480 640 -640 480 -640 427 -500 375 -640 480 -640 480 -640 480 -640 480 -640 480 -640 435 -480 640 -640 428 -640 480 -640 478 -640 427 -640 480 -500 336 -640 480 -640 480 -640 480 -640 428 -500 375 -489 640 -640 426 -500 375 -640 480 -640 428 -640 427 -248 640 -640 480 -640 427 -640 322 -640 512 -640 480 -426 640 -640 425 -640 480 -640 427 -640 449 -640 509 -640 480 -640 480 -519 640 -480 640 -427 640 -640 457 -640 480 -640 480 -500 375 -425 640 -640 457 -640 426 -426 640 -480 640 -640 425 -640 427 -334 500 -500 375 -640 471 -500 375 -640 480 -500 305 -436 640 -640 428 -640 480 -640 426 -640 480 -640 426 -640 480 -427 640 -612 612 -502 640 -480 640 -640 480 -480 640 -640 478 -640 420 -640 458 -500 375 -478 640 -427 640 -640 427 -640 427 -640 458 -640 566 -640 555 -640 480 -640 480 -640 416 -640 404 -603 452 -480 640 -640 361 -640 396 -640 480 -640 479 -640 480 -425 640 -640 427 -500 390 -640 640 -640 480 -318 480 -640 360 -500 375 -512 640 -427 640 -480 640 -480 640 -640 480 -640 427 -478 640 -640 478 -640 640 -640 423 -640 480 -318 640 -640 480 -640 421 -640 480 -640 427 -640 480 -480 640 -500 283 -425 640 -320 240 -640 450 -640 480 -640 426 -480 640 -640 427 -640 427 -640 496 -640 426 -640 426 -640 480 -640 427 -640 499 -640 427 -425 640 -428 640 -640 480 -356 500 -640 427 -640 480 -640 479 -640 439 -640 360 -640 480 -500 500 -640 423 -640 479 -640 427 -640 439 -640 480 -640 427 -640 427 -640 457 -640 428 -640 320 -500 375 -640 480 -426 640 -640 480 -424 640 -480 640 -640 480 -640 480 -640 480 -640 427 -640 480 -640 640 -427 640 -500 375 -640 426 -640 427 -640 480 -640 383 -640 427 -640 427 -640 129 -640 480 -640 427 -640 427 -640 299 -640 437 -640 480 -640 428 -640 476 -332 500 -640 476 -500 335 -300 225 -640 359 -500 375 -640 427 -640 427 -640 480 -640 426 -640 428 -331 640 -427 640 -355 500 -640 406 -500 375 -640 480 -480 640 -640 425 -640 480 -500 375 -427 640 -612 612 -480 640 -480 640 -640 480 -500 375 -640 423 -425 640 -640 480 -500 337 -640 480 -612 612 -640 426 -500 375 -480 640 -640 480 -500 333 -640 480 -500 375 -500 375 -640 480 -640 480 -640 426 -500 377 -640 426 -640 480 -500 333 -640 480 -428 640 -640 637 -289 640 -500 375 -640 569 -640 427 -640 362 -640 540 -640 429 -640 402 -640 480 -480 640 -640 427 -425 640 -640 400 -640 640 -640 449 -375 500 -427 640 -353 500 -640 427 -640 640 -424 640 -640 480 -500 450 -640 501 -640 505 -640 480 -640 427 -640 427 -640 480 -500 286 -427 640 -640 404 -640 480 -375 500 -375 500 -640 249 -640 430 -640 488 -640 434 -640 480 -640 480 -640 480 -640 480 -640 480 -640 438 -640 481 -640 214 -640 427 -640 427 -612 612 -640 480 -640 480 -640 480 -640 424 -348 640 -500 338 -360 640 -640 480 -640 480 -479 640 -640 480 -640 384 -640 498 -640 478 -640 480 -424 640 -640 499 -375 500 -375 500 -640 424 -333 500 -640 553 -640 397 -640 480 -583 640 -424 640 -640 480 -640 427 -640 480 -640 360 -612 612 -640 480 -612 612 -500 333 -640 425 -640 480 -640 363 -640 480 -640 480 -640 404 -640 480 -500 335 -640 427 -640 362 -640 427 -427 640 -478 640 -500 291 -476 640 -424 640 -425 640 -500 333 -640 488 -640 501 -480 640 -640 480 -640 480 -640 480 -335 500 -640 480 -382 640 -640 358 -640 373 -640 427 -640 480 -640 481 -640 480 -640 424 -500 335 -640 480 -462 640 -480 640 -640 480 -480 640 -500 333 -480 640 -640 527 -480 640 -427 640 -640 480 -640 426 -375 500 -640 425 -640 427 -640 480 -640 640 -640 480 -640 427 -333 500 -480 640 -640 480 -640 480 -640 427 -640 428 -457 640 -492 640 -640 483 -347 500 -640 449 -480 640 -640 428 -500 375 -640 436 -640 427 -640 383 -640 426 -640 426 -640 458 -640 426 -640 429 -640 427 -640 640 -640 478 -640 428 -640 600 -383 640 -640 480 -480 640 -500 436 -640 480 -612 612 -640 480 -500 375 -640 427 -640 425 -640 428 -500 375 -640 480 -640 427 -640 480 -640 480 -640 427 -485 640 -500 333 -500 333 -640 480 -612 612 -640 610 -640 427 -480 640 -428 640 -640 480 -640 480 -640 480 -333 500 -640 426 -640 427 -640 435 -640 427 -500 313 -640 480 -640 427 -537 640 -640 427 -640 480 -640 317 -426 640 -480 640 -354 400 -640 353 -640 480 -640 427 -270 640 -640 480 -640 480 -640 480 -500 333 -640 428 -640 480 -640 457 -640 480 -640 360 -500 375 -500 385 -640 480 -640 480 -428 640 -480 640 -333 500 -510 640 -640 359 -480 640 -640 448 -640 359 -640 480 -640 427 -640 480 -640 480 -640 427 -640 428 -640 480 -640 426 -480 640 -640 427 -640 428 -640 480 -640 480 -640 424 -463 640 -640 480 -427 640 -640 478 -410 640 -334 500 -640 428 -480 640 -640 426 -640 640 -480 640 -396 640 -640 480 -640 427 -640 480 -500 334 -640 429 -500 301 -640 478 -640 478 -500 375 -640 427 -640 480 -336 448 -514 640 -640 480 -480 640 -640 415 -478 640 -640 426 -480 640 -640 480 -640 480 -640 480 -426 640 -428 640 -427 640 -640 451 -640 466 -480 360 -488 640 -640 360 -426 640 -640 396 -640 480 -523 640 -640 480 -500 375 -640 427 -426 640 -640 480 -500 334 -640 480 -500 375 -640 480 -640 480 -331 500 -640 468 -640 427 -640 480 -640 427 -640 427 -640 427 -441 640 -640 480 -640 419 -500 375 -640 536 -442 640 -640 480 -612 612 -640 427 -500 375 -640 480 -500 333 -640 480 -375 500 -500 332 -640 427 -640 427 -640 427 -480 640 -480 636 -426 640 -640 426 -640 480 -427 640 -406 640 -640 427 -640 480 -640 427 -478 640 -640 427 -500 500 -462 640 -519 640 -640 383 -640 444 -500 333 -514 640 -640 424 -360 221 -480 640 -450 338 -518 640 -477 640 -640 427 -640 480 -640 480 -612 612 -640 427 -640 480 -500 375 -640 427 -640 480 -640 436 -640 480 -428 640 -427 640 -427 640 -640 427 -480 640 -640 368 -640 428 -640 480 -640 327 -640 640 -500 371 -640 480 -640 427 -500 375 -640 529 -640 427 -640 427 -640 479 -640 425 -640 427 -427 640 -640 640 -480 640 -640 480 -427 640 -500 375 -640 480 -640 426 -640 480 -640 424 -640 428 -478 640 -640 480 -428 640 -640 427 -640 480 -427 640 -640 399 -640 427 -428 640 -640 544 -640 480 -640 427 -640 480 -640 480 -640 535 -640 426 -500 375 -500 375 -640 427 -640 480 -640 425 -500 375 -536 640 -640 427 -500 333 -480 640 -640 491 -640 427 -640 429 -640 333 -640 480 -500 375 -640 480 -640 359 -640 420 -640 360 -640 480 -500 349 -640 427 -375 500 -640 146 -640 426 -640 480 -640 480 -500 367 -640 480 -480 640 -640 426 -640 480 -640 425 -640 425 -640 426 -640 419 -425 640 -427 640 -640 426 -640 480 -640 427 -640 480 -640 424 -339 500 -640 428 -640 480 -640 480 -640 483 -640 328 -600 401 -500 375 -500 375 -300 225 -640 480 -640 427 -500 375 -612 612 -640 480 -640 480 -640 426 -640 640 -640 480 -640 428 -500 375 -640 640 -640 465 -640 640 -640 427 -500 375 -640 473 -500 378 -640 481 -640 424 -640 480 -612 612 -425 640 -427 640 -640 480 -640 427 -640 480 -375 500 -640 512 -640 427 -426 640 -640 425 -428 640 -400 500 -383 640 -640 427 -500 374 -500 373 -500 365 -640 480 -600 399 -640 480 -640 426 -640 360 -640 427 -500 375 -640 425 -640 427 -640 640 -640 480 -640 426 -640 406 -640 408 -480 640 -425 640 -640 480 -640 480 -427 640 -500 350 -480 640 -640 427 -480 640 -428 640 -640 360 -640 341 -640 425 -640 523 -640 480 -427 640 -640 427 -425 640 -640 425 -500 333 -640 425 -500 333 -640 461 -500 375 -640 427 -512 640 -640 426 -635 591 -640 433 -640 427 -640 480 -427 640 -640 446 -640 480 -640 427 -640 360 -640 425 -420 640 -429 640 -624 624 -500 375 -640 480 -640 480 -570 640 -640 640 -640 427 -640 441 -425 640 -375 500 -640 366 -480 640 -640 403 -360 640 -640 381 -640 360 -640 480 -640 480 -640 427 -640 480 -640 433 -640 480 -425 640 -439 640 -480 640 -488 640 -500 375 -640 480 -640 466 -427 640 -640 302 -640 480 -640 480 -640 351 -640 480 -640 480 -333 500 -640 427 -299 409 -640 480 -500 333 -500 375 -640 473 -426 640 -640 425 -640 428 -640 427 -640 427 -426 640 -640 477 -640 480 -339 500 -640 449 -426 640 -612 612 -480 640 -640 478 -612 612 -640 426 -613 640 -640 480 -640 480 -640 361 -640 383 -640 410 -640 480 -640 427 -640 563 -425 640 -640 480 -640 480 -480 640 -640 480 -500 348 -640 427 -500 376 -640 488 -640 480 -480 640 -640 427 -640 427 -350 263 -640 428 -640 367 -500 332 -640 428 -480 640 -480 640 -640 480 -640 425 -640 480 -480 640 -500 375 -359 640 -640 480 -500 375 -640 567 -640 360 -500 375 -640 477 -426 640 -640 480 -640 427 -640 425 -500 392 -640 480 -640 482 -640 500 -640 480 -333 500 -640 427 -500 357 -640 424 -640 426 -480 640 -640 480 -640 426 -640 450 -640 360 -480 640 -480 640 -640 427 -640 393 -640 448 -640 480 -640 480 -480 640 -640 480 -427 640 -640 424 -640 557 -640 360 -640 480 -640 405 -640 480 -640 481 -500 495 -640 428 -640 428 -450 338 -640 408 -640 470 -640 480 -425 640 -640 480 -640 428 -640 480 -480 640 -500 334 -500 375 -640 488 -612 612 -640 379 -640 427 -640 480 -640 613 -489 640 -500 500 -480 640 -640 419 -476 640 -367 640 -640 480 -425 640 -640 427 -640 427 -640 480 -640 427 -640 426 -640 389 -500 332 -640 405 -640 480 -640 480 -500 377 -640 493 -640 480 -640 397 -480 640 -640 427 -640 426 -480 640 -640 360 -622 640 -640 426 -640 427 -640 427 -640 426 -544 640 -640 480 -640 427 -500 377 -640 427 -640 640 -640 480 -640 427 -640 480 -640 464 -612 612 -640 480 -640 522 -640 426 -640 427 -425 640 -500 375 -480 640 -640 377 -640 522 -568 320 -423 640 -500 375 -424 283 -428 640 -425 640 -640 479 -640 480 -640 420 -640 428 -640 480 -480 640 -612 612 -500 333 -640 640 -511 640 -640 429 -640 427 -640 640 -640 425 -640 360 -640 480 -630 640 -640 480 -640 428 -500 375 -640 431 -640 426 -612 612 -568 320 -427 640 -640 426 -640 426 -640 569 -339 500 -480 640 -640 480 -427 640 -640 426 -435 640 -640 536 -640 391 -640 480 -427 640 -640 480 -640 640 -640 427 -480 640 -640 490 -640 613 -640 427 -640 480 -640 427 -640 410 -640 428 -640 428 -640 444 -640 429 -640 480 -500 374 -640 426 -480 640 -640 427 -640 359 -427 640 -640 480 -640 427 -640 473 -500 375 -640 360 -500 375 -474 640 -427 640 -480 640 -640 480 -640 480 -640 480 -405 640 -640 428 -640 360 -414 640 -640 425 -640 269 -640 480 -640 480 -640 426 -640 480 -640 426 -640 400 -640 480 -640 480 -427 640 -640 480 -640 480 -640 480 -640 494 -640 411 -640 480 -375 500 -640 480 -640 461 -640 429 -640 480 -500 500 -500 333 -500 375 -640 427 -640 480 -640 480 -640 421 -640 426 -428 640 -640 481 -640 426 -640 480 -640 427 -627 640 -428 640 -640 414 -640 638 -500 375 -428 640 -161 240 -374 500 -480 640 -640 486 -500 375 -480 640 -640 141 -480 640 -640 424 -612 612 -500 333 -480 640 -428 640 -501 640 -480 640 -640 431 -500 334 -640 426 -640 427 -500 500 -640 480 -640 426 -447 640 -500 375 -640 478 -640 573 -640 427 -640 480 -640 419 -500 375 -640 480 -640 480 -543 640 -612 612 -640 480 -500 334 -500 334 -640 427 -640 427 -640 590 -612 612 -480 360 -640 541 -640 495 -640 480 -480 640 -640 425 -500 375 -640 427 -640 428 -640 480 -633 640 -376 500 -478 640 -640 425 -640 480 -640 480 -640 426 -375 500 -640 427 -640 427 -480 640 -375 500 -640 443 -640 425 -640 640 -375 500 -640 521 -640 521 -500 375 -500 375 -640 406 -640 427 -640 427 -640 429 -640 480 -640 480 -427 640 -640 429 -480 640 -640 428 -640 393 -640 480 -640 606 -612 612 -480 640 -500 333 -480 640 -480 640 -334 500 -640 427 -480 640 -640 427 -640 401 -426 640 -500 332 -640 428 -640 480 -500 327 -640 480 -640 480 -612 612 -375 500 -640 427 -640 426 -640 480 -427 640 -640 427 -640 427 -640 480 -640 518 -640 480 -500 464 -375 500 -640 480 -640 480 -500 500 -564 640 -500 375 -427 640 -427 640 -640 427 -640 480 -640 376 -640 480 -640 480 -500 375 -500 336 -640 433 -640 480 -640 425 -425 640 -640 480 -427 640 -640 480 -640 480 -640 359 -640 480 -480 640 -612 612 -640 427 -640 427 -640 480 -640 426 -640 425 -640 480 -640 480 -382 640 -640 427 -640 480 -375 500 -640 480 -640 411 -350 500 -640 640 -640 426 -640 429 -426 640 -640 480 -640 425 -640 480 -500 269 -640 412 -640 427 -640 427 -493 500 -640 428 -640 480 -640 427 -500 461 -640 427 -500 333 -640 480 -640 480 -426 640 -640 427 -640 480 -640 480 -640 427 -498 640 -640 457 -640 436 -640 640 -640 480 -500 375 -640 427 -640 480 -500 375 -500 334 -640 427 -640 299 -480 640 -428 640 -640 426 -382 640 -427 640 -640 428 -640 640 -640 427 -640 426 -320 480 -640 424 -640 346 -500 375 -640 480 -640 480 -640 427 -640 431 -424 284 -640 480 -640 500 -640 480 -640 400 -427 640 -427 640 -426 640 -640 428 -640 480 -480 640 -500 333 -488 640 -640 426 -333 500 -640 469 -640 480 -500 333 -640 638 -500 375 -640 426 -640 427 -640 360 -350 500 -480 640 -375 500 -480 640 -640 480 -640 602 -640 427 -640 480 -640 480 -640 402 -640 427 -640 392 -612 612 -640 480 -640 480 -598 397 -640 480 -640 480 -332 500 -640 480 -640 480 -640 425 -426 640 -640 480 -640 480 -640 480 -640 427 -640 480 -640 480 -500 487 -640 480 -500 375 -640 427 -480 640 -640 478 -500 375 -640 480 -640 478 -427 640 -640 480 -640 473 -640 478 -480 640 -427 640 -640 480 -640 576 -640 427 -640 424 -640 407 -301 388 -331 500 -375 500 -640 480 -640 424 -640 400 -640 480 -640 427 -640 427 -640 426 -500 375 -640 481 -510 640 -640 480 -640 427 -640 427 -500 363 -500 333 -640 349 -640 401 -375 500 -571 640 -640 428 -500 400 -640 478 -640 480 -640 480 -640 483 -640 426 -640 480 -640 457 -640 425 -480 640 -612 612 -640 444 -500 416 -480 640 -640 486 -640 427 -640 480 -480 640 -640 480 -479 640 -448 640 -640 428 -640 480 -500 333 -640 480 -640 426 -640 480 -640 426 -640 480 -450 300 -640 459 -500 334 -640 424 -500 375 -640 429 -640 426 -640 442 -333 500 -640 480 -500 369 -640 480 -640 427 -640 480 -640 480 -480 640 -500 400 -640 480 -640 427 -640 428 -640 426 -640 457 -640 331 -640 427 -640 425 -640 480 -640 480 -640 480 -640 425 -340 500 -640 480 -640 624 -427 640 -640 430 -640 360 -640 480 -326 500 -640 426 -640 427 -640 427 -640 451 -640 427 -640 512 -640 361 -640 480 -640 299 -375 500 -427 640 -384 640 -640 480 -640 480 -375 500 -640 480 -500 332 -640 428 -640 410 -480 640 -640 427 -640 427 -640 480 -640 426 -640 427 -640 380 -428 640 -500 375 -500 333 -640 427 -480 640 -426 640 -640 427 -640 424 -640 426 -640 314 -640 424 -640 439 -640 399 -640 480 -428 640 -480 640 -427 640 -640 480 -500 375 -640 426 -640 427 -640 429 -500 454 -640 480 -640 480 -640 480 -390 640 -320 239 -640 425 -640 427 -640 426 -640 429 -451 500 -480 640 -480 640 -375 500 -413 640 -640 444 -480 640 -640 256 -640 480 -431 640 -640 480 -640 426 -640 480 -335 500 -640 423 -640 374 -427 640 -427 640 -640 355 -480 640 -480 640 -640 426 -640 427 -640 427 -640 480 -480 360 -640 480 -640 488 -500 375 -425 640 -640 480 -480 640 -640 425 -640 360 -640 480 -640 640 -640 470 -640 427 -500 375 -500 333 -640 480 -640 430 -500 375 -480 640 -500 286 -640 417 -612 612 -480 640 -640 427 -640 480 -498 640 -545 640 -640 353 -428 640 -427 640 -640 423 -500 375 -640 466 -640 561 -640 480 -640 480 -513 640 -640 480 -438 608 -640 480 -640 479 -527 640 -375 500 -479 640 -480 640 -640 576 -500 334 -640 421 -640 427 -375 500 -640 427 -333 500 -480 640 -640 427 -640 480 -640 427 -640 480 -640 426 -640 480 -640 427 -640 426 -640 432 -640 426 -640 480 -480 640 -427 640 -640 480 -640 480 -600 600 -360 480 -640 480 -640 427 -640 428 -608 640 -640 424 -640 480 -640 429 -555 640 -640 428 -640 427 -500 375 -478 640 -640 480 -640 481 -640 480 -640 480 -335 500 -500 447 -640 509 -640 457 -640 425 -640 480 -640 480 -640 428 -640 480 -640 425 -500 334 -640 427 -640 426 -380 500 -640 425 -640 480 -480 640 -640 480 -640 498 -640 480 -640 480 -493 640 -640 426 -640 480 -612 612 -500 375 -640 480 -640 426 -640 433 -640 480 -640 480 -640 480 -640 427 -640 360 -500 375 -640 428 -480 640 -640 480 -548 640 -640 426 -640 480 -640 480 -640 481 -640 476 -480 640 -500 333 -640 360 -640 480 -640 429 -640 426 -640 480 -612 612 -500 375 -481 640 -480 640 -375 500 -640 427 -640 510 -500 375 -640 458 -480 640 -640 480 -640 427 -600 600 -480 640 -640 429 -233 311 -551 640 -640 640 -640 428 -640 481 -640 480 -478 640 -500 333 -640 427 -438 640 -640 424 -640 420 -640 480 -640 480 -426 640 -640 478 -480 640 -425 640 -640 366 -500 385 -640 360 -640 480 -480 640 -550 378 -640 480 -640 428 -640 480 -640 424 -640 480 -480 640 -428 640 -427 640 -640 480 -640 480 -640 449 -500 467 -640 480 -640 480 -500 333 -640 480 -640 428 -640 480 -640 426 -480 640 -640 480 -640 479 -640 428 -640 427 -640 620 -640 480 -480 640 -640 480 -632 640 -640 427 -640 480 -640 426 -426 640 -640 480 -640 428 -469 640 -375 500 -640 480 -640 427 -640 480 -640 425 -375 500 -640 521 -333 500 -640 480 -640 360 -640 480 -500 375 -500 375 -640 426 -640 480 -640 426 -640 480 -427 640 -640 480 -500 347 -640 480 -640 427 -640 425 -375 500 -640 480 -480 640 -500 488 -375 500 -640 441 -500 333 -640 424 -480 640 -333 500 -629 640 -640 618 -478 640 -500 375 -640 480 -612 612 -640 360 -480 640 -500 375 -640 431 -640 427 -640 427 -640 612 -448 336 -640 427 -640 427 -640 408 -640 427 -640 427 -640 428 -640 480 -640 428 -640 480 -640 459 -640 360 -425 640 -480 640 -424 640 -500 375 -640 480 -333 500 -640 480 -640 397 -480 640 -640 480 -640 480 -640 425 -427 640 -640 427 -357 500 -640 480 -480 640 -480 640 -500 375 -500 375 -640 640 -640 429 -640 426 -640 480 -640 480 -427 640 -640 360 -640 480 -640 434 -640 427 -538 640 -640 428 -640 480 -640 480 -640 480 -480 640 -640 427 -500 474 -406 640 -423 640 -640 480 -640 423 -640 480 -640 427 -640 430 -500 383 -455 640 -600 400 -640 428 -640 480 -500 429 -640 426 -640 480 -426 640 -640 457 -640 390 -500 321 -640 480 -640 391 -479 640 -640 427 -640 429 -500 375 -640 480 -640 480 -640 640 -640 492 -640 480 -640 424 -640 360 -375 500 -500 239 -640 480 -375 500 -640 387 -480 640 -640 406 -640 427 -640 441 -640 409 -640 480 -640 480 -640 480 -424 640 -640 360 -640 427 -500 335 -500 375 -640 480 -640 480 -640 491 -640 428 -640 426 -640 256 -640 476 -640 403 -427 640 -640 480 -640 480 -427 640 -500 374 -427 640 -500 375 -438 640 -640 425 -478 640 -640 463 -640 346 -445 640 -620 413 -640 427 -500 375 -524 640 -640 478 -640 480 -640 480 -612 612 -640 480 -640 480 -640 428 -500 333 -640 569 -640 480 -640 480 -480 640 -407 640 -640 426 -612 612 -640 427 -415 640 -488 640 -640 480 -640 480 -640 480 -640 360 -640 502 -640 640 -640 480 -640 427 -640 438 -640 480 -428 640 -640 480 -640 640 -640 480 -640 536 -596 391 -640 427 -411 640 -640 427 -427 640 -640 480 -500 375 -640 300 -640 480 -500 333 -612 612 -640 480 -425 640 -500 334 -500 375 -640 480 -640 480 -640 359 -426 640 -500 375 -640 424 -640 427 -640 427 -640 426 -640 480 -640 480 -640 480 -640 424 -500 375 -640 427 -640 480 -640 480 -640 480 -640 480 -640 480 -640 432 -640 427 -640 427 -640 480 -640 170 -500 364 -640 480 -640 480 -459 500 -333 500 -640 426 -480 640 -640 427 -640 427 -640 424 -640 480 -640 427 -640 427 -394 640 -640 427 -640 480 -640 427 -640 457 -640 513 -500 375 -640 480 -640 480 -424 640 -640 426 -640 429 -500 375 -640 428 -640 485 -480 640 -640 428 -500 375 -332 500 -640 400 -640 448 -500 375 -640 480 -640 427 -480 640 -640 420 -518 640 -640 426 -500 335 -640 480 -640 427 -500 375 -333 500 -640 480 -640 569 -480 640 -640 427 -640 433 -640 426 -320 400 -640 480 -640 427 -640 429 -640 480 -640 478 -640 480 -640 480 -640 480 -640 480 -472 640 -640 451 -640 425 -640 452 -612 612 -500 329 -640 480 -480 640 -640 480 -640 480 -640 478 -640 427 -334 500 -640 426 -428 640 -640 428 -640 427 -640 429 -640 434 -640 640 -640 480 -640 424 -640 427 -448 640 -480 640 -480 640 -480 640 -640 480 -500 370 -427 640 -640 424 -640 480 -569 640 -259 387 -640 480 -640 426 -640 425 -500 420 -640 427 -640 428 -640 427 -640 457 -640 359 -640 360 -389 500 -640 428 -640 427 -421 640 -640 480 -640 401 -480 640 -640 426 -360 640 -480 640 -480 640 -640 480 -640 480 -640 480 -375 500 -640 480 -479 640 -640 533 -640 428 -640 480 -640 426 -640 509 -426 640 -480 640 -640 480 -640 480 -640 427 -426 640 -640 425 -640 427 -500 375 -640 480 -423 640 -640 427 -640 428 -479 640 -480 640 -640 423 -426 640 -500 374 -428 640 -640 424 -640 428 -640 424 -640 480 -612 612 -500 333 -640 640 -500 345 -480 640 -640 464 -640 426 -640 480 -640 427 -640 374 -427 640 -640 428 -640 360 -640 640 -640 428 -640 481 -640 360 -640 480 -609 530 -428 640 -640 480 -640 427 -640 425 -640 480 -640 427 -480 640 -640 426 -640 389 -500 375 -640 427 -427 640 -640 480 -640 480 -332 500 -336 500 -640 427 -640 480 -640 316 -640 483 -425 640 -399 640 -640 480 -480 640 -640 640 -480 640 -640 427 -640 428 -640 423 -160 120 -640 480 -640 360 -640 480 -640 427 -500 421 -480 640 -425 640 -640 594 -640 480 -640 512 -500 243 -640 480 -500 375 -640 480 -640 427 -480 640 -640 426 -640 424 -639 640 -518 640 -640 479 -426 640 -640 430 -640 427 -640 466 -640 480 -640 480 -640 427 -427 640 -612 612 -480 640 -640 474 -500 375 -640 480 -640 480 -640 375 -640 473 -350 262 -640 427 -432 640 -472 640 -640 478 -640 427 -640 436 -640 427 -640 480 -640 428 -500 375 -427 640 -640 360 -427 640 -604 640 -640 480 -480 640 -640 427 -640 640 -478 640 -640 480 -640 426 -640 484 -640 427 -640 431 -640 477 -500 375 -640 480 -500 333 -500 375 -640 414 -480 640 -426 640 -427 640 -640 480 -500 333 -640 480 -500 333 -640 427 -640 480 -640 357 -428 640 -640 427 -640 480 -427 640 -640 427 -640 573 -640 427 -500 375 -490 500 -640 319 -640 480 -478 640 -640 469 -640 480 -500 313 -640 480 -480 640 -500 375 -640 218 -480 640 -640 426 -640 427 -640 427 -640 480 -480 640 -640 479 -640 428 -640 480 -480 640 -640 499 -427 640 -457 640 -640 361 -500 375 -640 417 -500 324 -640 480 -640 480 -640 427 -640 427 -640 425 -640 480 -364 500 -640 480 -640 640 -640 427 -640 425 -279 640 -480 640 -640 451 -640 331 -640 427 -478 640 -503 640 -640 480 -640 485 -426 640 -335 500 -640 479 -640 480 -640 480 -640 494 -640 474 -640 480 -640 359 -640 425 -480 640 -480 640 -640 526 -640 482 -640 480 -640 480 -640 427 -458 640 -640 404 -500 375 -640 427 -640 480 -500 356 -640 426 -640 480 -640 426 -500 375 -640 417 -640 435 -640 495 -640 427 -500 333 -640 480 -283 640 -640 480 -425 640 -640 425 -640 427 -640 398 -640 480 -640 480 -640 480 -640 424 -375 500 -500 341 -640 480 -480 640 -640 480 -640 427 -640 360 -640 426 -640 427 -640 360 -640 413 -640 480 -640 437 -640 480 -427 640 -513 640 -640 480 -640 480 -640 480 -640 425 -640 427 -404 342 -640 490 -640 426 -426 640 -392 640 -612 612 -333 500 -640 427 -640 429 -640 427 -640 480 -640 480 -640 424 -500 500 -480 640 -426 640 -640 425 -480 640 -640 427 -640 480 -480 640 -640 640 -640 480 -640 408 -500 334 -640 425 -480 640 -640 640 -448 640 -480 640 -500 375 -640 427 -640 427 -640 427 -640 480 -500 375 -640 480 -640 480 -640 427 -640 427 -640 425 -640 426 -640 425 -480 640 -640 480 -640 428 -640 480 -612 612 -523 640 -640 427 -612 612 -640 427 -500 332 -640 510 -640 424 -640 427 -480 640 -612 612 -480 640 -500 369 -427 640 -640 424 -640 427 -640 384 -427 640 -640 427 -640 480 -640 424 -640 480 -640 480 -500 333 -500 333 -640 480 -347 500 -500 375 -426 640 -500 375 -640 480 -476 376 -500 345 -375 500 -640 480 -480 640 -383 588 -640 427 -640 480 -452 640 -640 427 -640 480 -640 427 -640 480 -480 640 -640 480 -640 480 -427 640 -640 480 -640 480 -640 427 -640 564 -427 640 -426 640 -427 640 -640 392 -427 640 -640 425 -640 427 -640 427 -640 384 -640 427 -426 640 -640 427 -640 427 -640 584 -612 612 -480 640 -640 427 -640 480 -640 418 -453 640 -640 427 -640 480 -500 375 -427 640 -640 480 -640 360 -640 427 -640 427 -612 612 -640 427 -463 640 -500 375 -640 427 -640 480 -640 427 -640 359 -640 426 -480 640 -640 480 -640 480 -640 427 -464 640 -640 426 -640 427 -640 427 -640 424 -640 303 -640 419 -640 480 -640 480 -640 425 -500 375 -640 481 -640 476 -640 301 -480 640 -500 376 -640 480 -640 428 -640 428 -640 427 -640 480 -640 426 -383 640 -427 640 -640 426 -640 463 -500 375 -640 480 -480 640 -500 318 -640 583 -480 640 -640 427 -480 640 -427 640 -640 427 -640 425 -640 480 -500 375 -640 480 -480 640 -640 426 -640 360 -640 512 -640 428 -640 480 -500 375 -640 360 -640 480 -640 427 -340 500 -500 333 -427 640 -640 480 -640 480 -640 480 -427 640 -480 640 -640 396 -600 393 -640 427 -612 612 -480 640 -640 427 -640 480 -640 448 -640 427 -640 480 -640 478 -640 428 -640 188 -640 428 -500 426 -640 427 -480 640 -640 480 -640 426 -640 457 -640 480 -480 640 -640 481 -480 640 -640 427 -640 503 -640 427 -640 449 -640 480 -640 480 -640 469 -500 389 -640 426 -500 375 -640 427 -426 640 -480 640 -640 383 -640 425 -565 640 -640 480 -640 559 -640 480 -460 640 -640 480 -640 480 -640 480 -480 640 -640 428 -640 480 -640 427 -500 248 -357 500 -640 480 -640 480 -333 500 -480 360 -500 333 -640 564 -640 426 -480 640 -640 480 -640 480 -640 427 -640 426 -640 480 -426 640 -640 427 -425 640 -640 438 -640 427 -640 480 -640 480 -640 480 -480 640 -438 640 -426 640 -640 426 -640 411 -640 363 -500 375 -640 400 -640 509 -500 489 -640 427 -640 480 -500 333 -640 360 -500 332 -640 480 -640 396 -640 426 -640 480 -640 427 -640 427 -640 480 -500 375 -640 361 -640 427 -612 612 -213 640 -640 427 -427 640 -640 480 -640 480 -640 427 -375 500 -375 500 -640 480 -485 640 -640 388 -640 480 -500 375 -480 640 -480 640 -640 427 -640 427 -500 333 -612 612 -640 480 -640 427 -500 400 -640 426 -640 419 -640 426 -359 640 -500 332 -640 426 -640 480 -640 429 -640 360 -640 427 -640 426 -426 640 -427 640 -640 480 -640 480 -335 500 -640 486 -480 640 -427 640 -480 640 -640 424 -640 480 -640 480 -640 480 -640 548 -425 640 -640 480 -500 375 -640 426 -640 426 -640 426 -480 640 -640 426 -375 500 -640 427 -640 462 -640 451 -640 480 -640 480 -640 425 -612 612 -640 427 -640 426 -427 640 -640 426 -640 427 -640 610 -640 480 -480 640 -640 426 -640 480 -640 426 -480 640 -640 427 -640 477 -640 480 -640 480 -500 338 -640 458 -640 480 -640 359 -120 160 -640 481 -500 375 -426 640 -427 640 -500 400 -500 335 -640 427 -500 334 -640 425 -640 480 -640 480 -500 375 -640 480 -640 424 -400 500 -375 500 -480 640 -515 640 -480 640 -480 640 -640 480 -640 480 -640 480 -640 480 -640 480 -375 500 -480 640 -640 479 -200 189 -457 640 -640 480 -640 439 -500 322 -500 375 -480 640 -640 480 -640 480 -640 480 -427 640 -640 427 -640 480 -427 640 -500 324 -640 480 -640 480 -434 640 -640 265 -640 480 -640 425 -427 640 -640 427 -640 480 -640 480 -640 573 -640 480 -375 500 -640 428 -500 375 -640 480 -640 427 -473 640 -640 428 -480 640 -640 426 -640 306 -640 478 -640 427 -640 427 -427 640 -640 424 -512 640 -640 427 -579 640 -449 640 -427 640 -640 468 -640 480 -640 480 -640 425 -480 640 -640 480 -640 427 -640 640 -375 500 -640 428 -640 427 -640 480 -640 361 -640 480 -500 370 -640 428 -427 640 -640 480 -375 500 -640 480 -640 427 -640 478 -640 480 -640 427 -640 480 -640 425 -500 335 -640 493 -500 375 -640 426 -500 333 -640 480 -461 640 -500 375 -640 480 -640 480 -640 480 -640 480 -612 612 -640 480 -640 424 -640 427 -640 480 -500 375 -640 324 -640 429 -427 640 -528 363 -500 333 -640 512 -480 640 -640 480 -500 375 -640 480 -480 640 -640 480 -480 640 -640 480 -640 427 -640 450 -640 424 -640 480 -482 640 -640 480 -480 640 -640 427 -338 450 -640 425 -640 544 -640 427 -640 428 -640 480 -640 478 -500 375 -640 480 -640 427 -640 480 -640 480 -500 375 -480 640 -640 428 -640 479 -480 640 -375 500 -500 388 -480 640 -640 480 -640 427 -640 360 -640 480 -640 424 -640 396 -640 427 -120 160 -640 457 -640 480 -458 640 -640 425 -640 480 -640 480 -640 360 -640 480 -480 640 -480 640 -640 434 -640 480 -480 640 -640 429 -640 427 -464 500 -640 543 -640 428 -640 411 -640 427 -640 360 -640 528 -640 443 -640 480 -640 480 -640 424 -640 410 -500 333 -512 640 -500 346 -640 480 -640 480 -428 640 -640 429 -640 427 -640 480 -640 439 -500 375 -640 426 -640 480 -640 480 -640 427 -500 423 -640 427 -640 427 -640 424 -640 480 -640 360 -500 333 -640 480 -640 427 -640 384 -425 640 -640 480 -640 480 -640 481 -640 426 -426 640 -480 640 -427 640 -640 427 -478 640 -640 341 -640 395 -640 480 -500 333 -640 427 -500 436 -640 360 -480 640 -500 428 -640 427 -640 560 -640 427 -640 480 -640 481 -640 427 -640 481 -612 612 -427 640 -640 480 -640 394 -640 360 -640 427 -427 640 -640 480 -360 640 -375 500 -640 429 -640 426 -640 480 -640 360 -480 640 -640 383 -640 427 -640 480 -427 640 -640 427 -480 640 -640 480 -480 640 -425 640 -640 480 -612 612 -640 453 -640 425 -426 640 -640 480 -640 480 -640 361 -640 427 -640 480 -640 480 -428 640 -640 480 -640 640 -425 640 -640 428 -640 478 -640 426 -500 333 -500 488 -640 285 -500 326 -640 360 -640 480 -640 428 -640 480 -428 640 -640 524 -640 488 -640 480 -612 612 -450 338 -640 428 -640 426 -526 640 -640 428 -483 640 -640 480 -640 426 -640 427 -640 480 -640 480 -640 480 -640 427 -640 480 -640 480 -640 427 -640 427 -640 571 -640 427 -640 480 -640 427 -640 480 -640 425 -375 500 -640 428 -609 407 -333 500 -640 427 -500 333 -640 640 -433 640 -640 480 -640 392 -640 360 -640 480 -427 640 -480 268 -640 480 -500 281 -600 450 -500 393 -640 480 -478 640 -640 426 -640 413 -640 480 -640 427 -640 425 -640 480 -640 480 -640 427 -443 640 -640 480 -424 640 -640 427 -640 426 -640 632 -640 397 -500 375 -640 426 -640 480 -640 480 -640 428 -500 332 -640 427 -640 427 -640 480 -640 399 -414 640 -612 612 -640 424 -433 640 -640 418 -428 640 -480 640 -426 640 -375 500 -480 640 -640 426 -334 500 -640 480 -481 640 -640 500 -320 240 -640 427 -500 333 -500 333 -427 640 -640 480 -640 480 -640 427 -336 500 -480 640 -640 480 -640 425 -640 480 -500 375 -640 427 -457 640 -640 441 -640 427 -640 481 -640 426 -640 480 -640 427 -612 612 -478 640 -640 427 -500 333 -640 480 -640 428 -640 428 -640 460 -640 480 -500 333 -480 640 -640 633 -640 640 -457 640 -480 640 -500 466 -500 375 -640 425 -500 375 -500 375 -427 640 -640 512 -500 333 -640 427 -640 428 -640 480 -640 426 -640 480 -426 640 -640 427 -640 426 -640 427 -500 282 -640 428 -425 640 -479 640 -640 427 -427 640 -424 640 -448 640 -640 480 -640 480 -640 430 -344 500 -500 375 -640 330 -640 427 -640 445 -640 480 -481 640 -640 480 -640 426 -640 427 -640 427 -640 431 -640 427 -640 425 -640 425 -640 480 -640 493 -500 375 -575 640 -640 480 -640 426 -640 426 -640 428 -640 480 -640 401 -480 640 -640 480 -640 640 -612 612 -427 640 -640 489 -446 640 -480 640 -640 480 -427 640 -640 427 -428 640 -640 478 -379 500 -640 428 -640 429 -640 475 -640 428 -375 500 -490 500 -640 480 -640 426 -425 640 -480 640 -426 640 -595 640 -640 480 -640 480 -500 333 -640 480 -640 424 -640 480 -640 478 -480 640 -640 480 -640 480 -640 428 -640 419 -640 480 -640 468 -640 480 -640 428 -640 427 -480 640 -640 480 -640 478 -640 426 -640 425 -640 640 -480 640 -640 480 -640 427 -424 640 -640 427 -640 472 -640 480 -640 426 -640 480 -480 640 -640 640 -480 640 -425 640 -640 480 -640 431 -640 428 -640 439 -425 640 -480 640 -640 480 -640 601 -640 428 -612 612 -640 480 -640 425 -640 480 -640 424 -508 640 -640 426 -640 499 -640 480 -640 480 -640 480 -640 334 -612 612 -427 640 -640 427 -640 426 -444 640 -640 428 -640 428 -500 342 -640 356 -640 427 -640 480 -640 480 -640 427 -640 480 -612 612 -375 500 -640 480 -640 480 -450 640 -640 427 -640 277 -640 480 -640 620 -426 640 -480 640 -640 480 -541 640 -500 361 -640 480 -640 427 -425 640 -640 427 -332 500 -640 244 -640 480 -640 480 -640 426 -480 640 -640 362 -640 424 -489 640 -640 452 -640 513 -640 512 -640 427 -640 480 -640 480 -640 429 -640 427 -640 427 -640 424 -640 427 -479 640 -640 480 -640 480 -500 375 -612 612 -480 640 -480 640 -640 480 -500 325 -640 480 -640 427 -640 425 -425 640 -640 480 -612 612 -640 425 -640 432 -640 427 -640 427 -479 640 -428 640 -500 334 -640 480 -640 480 -427 640 -480 640 -640 427 -426 640 -640 428 -640 430 -500 375 -640 480 -640 480 -640 427 -612 612 -229 123 -640 426 -500 380 -640 480 -640 360 -481 640 -640 451 -457 640 -640 480 -375 500 -500 334 -640 428 -500 375 -640 430 -640 480 -640 427 -640 480 -640 634 -612 612 -480 640 -426 640 -500 333 -640 480 -640 480 -640 426 -640 480 -500 375 -480 640 -375 500 -640 480 -480 640 -640 458 -640 426 -424 640 -426 640 -640 424 -612 612 -640 427 -640 424 -640 427 -497 640 -640 427 -640 480 -640 446 -640 443 -640 427 -640 640 -500 333 -640 360 -640 426 -333 500 -640 426 -640 427 -612 612 -500 375 -612 612 -640 427 -480 640 -500 333 -640 480 -640 480 -640 421 -640 480 -640 480 -640 480 -500 375 -640 427 -500 375 -640 350 -611 640 -478 640 -332 500 -500 316 -640 480 -640 510 -640 427 -640 480 -640 427 -640 486 -340 470 -480 640 -480 640 -427 640 -640 426 -640 590 -640 480 -640 480 -640 428 -640 427 -500 375 -427 640 -640 458 -640 583 -500 375 -640 480 -500 375 -640 400 -640 425 -640 480 -500 333 -640 408 -640 427 -427 640 -339 500 -275 183 -375 500 -640 478 -640 478 -425 640 -384 640 -640 478 -640 425 -500 345 -640 427 -640 427 -480 640 -500 375 -640 428 -640 418 -640 480 -640 480 -426 640 -640 480 -426 640 -640 640 -391 640 -500 375 -640 480 -640 424 -640 478 -519 640 -551 640 -500 375 -640 480 -612 612 -640 426 -480 640 -500 334 -640 480 -640 640 -402 500 -640 480 -612 612 -500 333 -500 286 -432 640 -640 362 -640 480 -640 480 -640 427 -640 428 -640 426 -640 427 -500 332 -640 428 -426 640 -612 612 -333 500 -640 427 -640 640 -640 480 -640 480 -500 375 -640 457 -500 334 -640 427 -500 500 -640 424 -480 640 -480 640 -640 358 -640 480 -640 480 -500 375 -640 480 -500 447 -311 500 -480 640 -640 359 -640 480 -640 228 -640 480 -640 469 -640 480 -500 375 -427 640 -640 360 -640 427 -640 475 -640 480 -640 480 -640 481 -500 375 -640 440 -640 640 -500 375 -428 640 -640 427 -640 480 -640 425 -640 500 -640 427 -640 427 -640 446 -500 375 -640 480 -424 640 -640 480 -500 353 -640 360 -640 433 -424 640 -640 427 -480 640 -640 480 -596 640 -480 640 -640 480 -640 480 -640 427 -640 480 -478 640 -640 360 -640 457 -640 429 -285 340 -640 426 -640 440 -446 640 -640 480 -640 480 -640 426 -480 640 -640 640 -640 480 -640 427 -640 480 -480 640 -640 428 -375 500 -640 480 -640 423 -500 375 -640 480 -640 478 -476 640 -640 480 -640 640 -640 443 -480 640 -640 513 -640 480 -500 325 -640 480 -358 640 -423 640 -640 360 -640 395 -599 640 -640 425 -640 480 -640 607 -640 480 -640 480 -480 640 -427 640 -634 640 -640 480 -500 400 -640 425 -640 428 -640 480 -640 480 -640 480 -640 425 -640 383 -640 360 -640 480 -640 480 -640 425 -640 480 -600 376 -640 427 -480 640 -640 424 -612 612 -640 426 -640 425 -640 480 -480 640 -640 425 -500 408 -640 424 -500 284 -640 481 -640 427 -640 428 -640 478 -640 480 -640 480 -640 427 -480 640 -427 640 -640 480 -428 640 -500 283 -640 441 -640 426 -640 418 -640 427 -480 640 -640 426 -640 426 -640 480 -640 442 -640 427 -640 426 -640 419 -640 480 -640 478 -640 476 -640 427 -640 426 -399 640 -640 361 -640 426 -640 427 -427 640 -640 459 -640 480 -640 360 -333 500 -428 640 -640 480 -640 441 -428 640 -480 640 -640 480 -427 640 -640 480 -640 426 -333 500 -640 480 -640 526 -640 480 -486 640 -423 640 -640 361 -427 640 -640 480 -640 480 -640 425 -640 428 -640 428 -640 480 -640 427 -480 640 -379 279 -480 640 -640 506 -640 480 -640 513 -640 458 -333 500 -640 429 -640 360 -640 427 -500 375 -640 480 -500 332 -612 612 -640 480 -640 476 -640 374 -500 394 -640 480 -427 640 -640 427 -640 425 -430 640 -425 640 -640 410 -429 640 -640 424 -480 640 -640 427 -640 425 -640 640 -640 360 -640 427 -640 490 -500 375 -333 500 -640 517 -640 480 -640 427 -500 350 -400 500 -640 480 -500 338 -640 433 -640 388 -426 640 -640 348 -640 480 -640 492 -640 481 -640 318 -640 427 -427 640 -640 425 -640 480 -640 513 -500 332 -480 640 -640 640 -640 480 -640 444 -640 616 -640 480 -500 333 -500 408 -500 411 -640 480 -640 360 -480 640 -640 427 -640 433 -640 427 -640 426 -479 640 -480 640 -480 640 -426 640 -640 430 -640 427 -480 640 -640 426 -640 369 -640 480 -375 500 -640 480 -640 425 -504 640 -640 480 -640 480 -640 426 -640 430 -640 480 -500 400 -640 427 -640 480 -640 427 -640 489 -640 360 -427 640 -640 480 -640 480 -640 480 -350 219 -640 480 -640 413 -640 480 -640 401 -425 640 -640 425 -640 480 -640 427 -640 414 -640 424 -640 480 -425 640 -640 285 -640 480 -640 322 -640 427 -640 427 -640 427 -640 428 -640 457 -640 480 -500 391 -640 404 -640 611 -640 390 -513 640 -640 360 -640 496 -640 480 -640 427 -640 427 -640 480 -500 234 -640 425 -640 360 -424 640 -640 512 -640 427 -640 426 -640 427 -640 480 -500 374 -640 428 -640 526 -640 428 -640 480 -426 640 -640 427 -611 640 -640 383 -640 457 -640 427 -640 382 -640 427 -640 426 -640 480 -640 477 -375 500 -478 640 -640 480 -640 480 -500 400 -640 461 -640 480 -640 417 -640 425 -427 640 -640 439 -480 640 -640 640 -427 640 -612 612 -464 640 -640 427 -480 640 -640 360 -640 480 -640 428 -640 425 -640 543 -640 426 -640 423 -640 426 -640 319 -500 375 -640 427 -432 500 -375 500 -640 441 -426 640 -640 406 -640 426 -640 480 -480 640 -640 480 -640 424 -640 428 -640 427 -640 461 -426 640 -500 375 -640 480 -640 428 -640 480 -500 375 -640 426 -640 640 -480 640 -640 427 -375 500 -500 333 -640 480 -375 500 -480 640 -500 334 -640 480 -640 427 -640 424 -640 426 -640 628 -640 491 -640 426 -640 427 -480 640 -640 480 -640 425 -640 424 -640 427 -640 427 -640 480 -640 513 -640 426 -640 480 -640 427 -640 461 -640 425 -640 598 -640 361 -640 480 -640 427 -500 317 -640 480 -640 519 -640 480 -640 427 -500 375 -640 480 -425 640 -640 427 -426 640 -480 640 -480 640 -640 427 -640 427 -457 640 -640 359 -640 355 -640 480 -640 427 -426 640 -640 427 -427 640 -640 428 -640 426 -500 334 -425 640 -640 480 -640 480 -640 480 -500 334 -500 344 -640 640 -640 480 -640 480 -640 423 -640 480 -333 500 -640 426 -640 427 -500 375 -480 640 -640 508 -640 480 -500 375 -600 600 -640 480 -385 500 -434 640 -640 480 -480 640 -426 640 -640 427 -640 512 -512 640 -640 427 -427 640 -640 474 -640 426 -480 640 -640 426 -500 375 -427 640 -475 640 -640 360 -640 480 -640 427 -640 479 -375 500 -640 427 -640 457 -394 500 -640 422 -500 375 -640 480 -640 480 -427 640 -640 427 -640 498 -640 480 -480 640 -640 374 -640 480 -500 412 -500 335 -640 439 -640 516 -640 427 -640 426 -402 500 -500 364 -500 333 -640 480 -438 640 -425 640 -493 500 -480 640 -640 426 -640 640 -640 349 -640 480 -427 640 -640 480 -640 512 -400 400 -375 500 -640 427 -640 424 -500 375 -640 426 -640 429 -640 427 -640 426 -480 640 -500 375 -640 428 -640 480 -427 640 -640 428 -640 480 -640 427 -640 480 -500 372 -640 480 -640 480 -640 480 -640 360 -640 480 -640 480 -640 427 -640 426 -640 480 -640 640 -640 424 -640 480 -640 427 -640 169 -427 640 -640 478 -640 427 -462 308 -426 640 -640 361 -640 427 -500 232 -640 427 -640 457 -640 427 -500 375 -640 427 -640 426 -640 494 -427 640 -640 314 -640 480 -640 427 -473 640 -640 480 -640 480 -640 427 -640 369 -640 301 -640 427 -424 640 -640 481 -640 480 -640 427 -640 478 -640 480 -640 426 -640 427 -640 427 -640 480 -640 360 -480 640 -640 439 -640 480 -640 454 -640 401 -640 458 -640 480 -640 480 -640 414 -640 480 -640 496 -640 424 -640 480 -640 480 -387 500 -640 480 -640 379 -640 457 -425 640 -640 426 -640 424 -120 120 -640 427 -640 597 -640 480 -640 458 -640 426 -640 427 -640 427 -480 640 -640 426 -500 333 -640 427 -640 380 -427 640 -500 333 -480 640 -640 428 -640 428 -640 360 -640 429 -500 387 -371 500 -425 640 -640 480 -640 479 -640 480 -640 480 -640 427 -640 480 -640 478 -457 640 -640 429 -359 640 -500 375 -640 425 -500 375 -640 427 -359 240 -426 640 -612 612 -640 480 -612 612 -640 427 -640 478 -375 500 -480 640 -640 426 -479 640 -640 429 -640 384 -640 434 -500 332 -640 489 -640 427 -426 640 -640 466 -412 640 -478 640 -319 500 -640 427 -612 612 -640 418 -640 427 -640 426 -333 500 -500 375 -640 280 -612 612 -640 639 -640 480 -640 360 -640 456 -640 427 -426 640 -640 428 -501 640 -426 640 -640 428 -640 480 -640 478 -500 375 -640 360 -375 500 -640 388 -357 500 -640 480 -480 640 -496 640 -640 427 -612 612 -480 640 -508 337 -480 640 -640 368 -640 420 -300 500 -640 427 -612 612 -640 480 -500 375 -500 375 -412 317 -640 427 -640 425 -640 428 -480 640 -640 429 -380 640 -500 375 -640 425 -480 640 -640 480 -640 423 -640 480 -333 500 -411 640 -426 640 -436 640 -640 501 -640 427 -500 375 -640 512 -640 480 -640 506 -640 426 -640 427 -589 640 -480 640 -640 426 -500 375 -640 427 -640 426 -428 640 -640 480 -640 474 -500 333 -640 480 -480 640 -640 398 -640 425 -640 454 -640 480 -479 640 -640 427 -640 425 -612 612 -640 480 -500 375 -640 421 -640 514 -612 612 -640 480 -640 425 -500 468 -640 427 -480 640 -640 480 -640 480 -640 339 -424 640 -290 595 -480 640 -640 427 -480 640 -640 427 -500 332 -426 640 -640 425 -500 282 -480 640 -500 375 -640 514 -640 480 -640 426 -640 480 -640 480 -375 500 -640 427 -640 480 -640 426 -640 427 -500 375 -511 640 -640 427 -427 640 -640 480 -640 480 -446 552 -640 427 -640 426 -640 427 -640 427 -500 375 -640 480 -357 500 -640 479 -480 640 -640 428 -640 480 -480 640 -640 480 -640 480 -640 467 -640 480 -640 480 -640 426 -500 375 -513 640 -640 480 -640 480 -375 500 -640 427 -640 448 -640 480 -640 480 -480 640 -640 480 -640 427 -640 457 -640 425 -427 640 -480 640 -640 425 -640 427 -640 480 -640 640 -640 400 -612 612 -640 428 -425 640 -500 332 -640 426 -640 480 -640 480 -640 535 -640 427 -500 375 -640 480 -640 480 -480 640 -640 480 -640 480 -640 427 -425 640 -480 640 -640 480 -640 516 -640 427 -640 480 -640 418 -501 640 -640 480 -375 500 -640 424 -375 500 -480 640 -640 412 -640 426 -640 480 -640 467 -640 640 -640 480 -640 428 -640 480 -375 500 -640 431 -425 640 -478 640 -640 483 -640 480 -640 480 -640 360 -640 480 -427 640 -640 480 -500 375 -640 426 -500 334 -640 400 -334 500 -640 427 -640 428 -640 480 -640 427 -500 375 -640 480 -640 426 -640 480 -500 373 -401 500 -427 640 -640 458 -640 427 -640 427 -640 428 -640 427 -640 427 -612 612 -640 480 -500 176 -640 480 -480 640 -640 480 -565 425 -640 427 -640 480 -640 427 -386 640 -500 375 -500 375 -640 579 -640 457 -640 640 -640 442 -612 612 -640 480 -480 640 -640 480 -640 425 -640 427 -500 334 -427 640 -640 427 -480 640 -640 427 -640 480 -500 375 -640 480 -640 480 -640 362 -500 188 -640 480 -375 500 -640 480 -640 480 -640 427 -640 505 -640 480 -640 426 -427 640 -640 426 -640 480 -500 375 -640 427 -640 640 -640 424 -640 480 -640 480 -612 612 -640 427 -332 500 -640 437 -640 427 -640 427 -640 360 -480 640 -500 375 -640 427 -640 569 -640 440 -640 427 -500 375 -640 391 -640 426 -640 388 -640 427 -640 480 -640 428 -640 533 -640 426 -640 411 -640 480 -640 478 -640 425 -640 427 -480 640 -640 480 -426 640 -640 427 -640 425 -375 500 -640 567 -640 424 -640 335 -500 368 -640 480 -500 365 -640 373 -640 480 -500 375 -401 479 -427 640 -500 375 -640 428 -640 480 -640 480 -640 480 -500 500 -640 383 -640 427 -640 425 -640 480 -640 480 -640 480 -640 376 -480 640 -640 359 -640 427 -640 506 -640 513 -480 640 -640 427 -640 480 -640 428 -480 640 -640 573 -500 244 -640 480 -640 484 -640 480 -640 428 -640 478 -640 386 -426 640 -640 480 -640 480 -640 427 -499 640 -640 480 -640 480 -640 480 -468 640 -640 426 -640 426 -427 640 -428 640 -640 476 -640 480 -640 481 -640 353 -640 409 -640 640 -640 426 -640 431 -640 480 -640 453 -640 427 -640 480 -640 480 -480 640 -640 486 -640 427 -640 341 -640 396 -640 427 -427 640 -427 640 -640 427 -424 640 -500 333 -640 480 -640 426 -640 570 -470 640 -500 261 -640 394 -640 478 -640 427 -640 427 -640 427 -640 428 -480 640 -640 426 -640 480 -640 425 -375 500 -640 533 -640 480 -426 640 -626 640 -500 333 -375 500 -640 427 -640 480 -640 427 -640 427 -640 453 -375 500 -480 640 -640 427 -635 640 -427 640 -640 480 -640 392 -640 640 -427 640 -500 375 -640 427 -640 480 -640 426 -640 425 -640 640 -640 480 -640 480 -480 640 -375 500 -500 344 -612 612 -640 428 -640 480 -640 443 -640 427 -640 480 -427 640 -427 640 -640 480 -427 640 -428 640 -640 360 -640 411 -500 374 -640 489 -612 612 -640 480 -640 427 -640 480 -640 480 -640 478 -480 640 -640 424 -640 499 -640 366 -640 480 -640 426 -640 427 -419 640 -640 480 -640 480 -640 427 -480 640 -500 333 -640 262 -640 507 -640 480 -478 640 -500 357 -640 480 -480 640 -640 480 -500 359 -615 459 -426 640 -612 612 -640 427 -640 480 -640 425 -640 480 -640 440 -640 426 -427 640 -640 480 -640 640 -500 375 -640 427 -332 500 -640 360 -640 465 -640 538 -640 480 -640 426 -640 480 -640 480 -500 333 -640 466 -375 500 -480 640 -480 640 -443 640 -500 334 -640 480 -640 350 -640 427 -500 375 -539 640 -640 427 -640 480 -427 640 -640 427 -640 281 -476 640 -640 480 -640 480 -640 444 -640 480 -640 480 -640 427 -424 640 -640 427 -640 545 -425 640 -640 427 -640 480 -640 476 -640 360 -425 640 -640 299 -640 480 -640 480 -640 427 -429 640 -500 333 -427 640 -640 458 -426 640 -640 480 -640 480 -427 640 -427 640 -640 480 -640 479 -444 640 -640 427 -640 427 -480 640 -640 373 -640 640 -640 427 -640 506 -640 424 -640 480 -500 378 -640 480 -640 426 -480 640 -428 640 -425 640 -640 480 -640 480 -640 438 -500 375 -419 640 -640 473 -640 480 -640 426 -640 334 -640 385 -427 640 -640 337 -640 640 -640 426 -358 640 -640 427 -640 411 -480 640 -640 480 -640 425 -640 427 -640 480 -640 289 -640 454 -640 512 -640 427 -640 342 -640 429 -640 640 -640 480 -640 480 -640 427 -640 480 -640 480 -640 425 -640 480 -500 333 -500 406 -427 640 -375 500 -427 640 -640 480 -640 427 -640 478 -640 426 -640 427 -640 425 -428 640 -500 375 -640 428 -640 480 -327 500 -480 640 -640 426 -640 428 -640 426 -640 480 -640 480 -431 640 -531 640 -480 640 -480 640 -640 424 -640 402 -640 427 -640 480 -640 400 -640 480 -640 426 -427 640 -640 426 -640 449 -640 427 -500 333 -375 500 -500 375 -639 640 -480 640 -640 480 -640 499 -640 480 -476 640 -427 640 -640 480 -500 375 -640 426 -640 480 -640 427 -437 640 -640 427 -640 526 -640 428 -640 480 -640 425 -640 480 -640 427 -640 382 -640 427 -640 425 -478 640 -640 427 -640 488 -640 427 -640 360 -640 427 -640 478 -217 289 -640 480 -640 427 -640 425 -640 480 -640 455 -640 480 -640 480 -375 500 -440 640 -640 292 -512 640 -409 640 -640 480 -500 333 -640 480 -640 480 -640 480 -640 428 -488 640 -640 427 -640 428 -640 424 -418 640 -640 509 -427 640 -333 500 -480 640 -640 376 -612 612 -427 640 -426 640 -640 424 -640 480 -640 480 -640 427 -426 640 -447 640 -640 480 -480 640 -500 281 -429 640 -480 640 -640 480 -640 427 -640 427 -480 640 -640 480 -640 480 -500 333 -500 375 -640 478 -427 640 -640 471 -640 640 -427 640 -640 427 -640 478 -640 480 -640 430 -640 426 -640 395 -480 640 -640 425 -294 196 -640 427 -640 480 -500 263 -500 319 -640 480 -640 428 -640 602 -640 426 -425 640 -500 375 -500 400 -480 640 -465 640 -640 428 -427 640 -333 500 -640 480 -640 480 -640 426 -640 498 -480 640 -640 480 -640 480 -640 480 -640 480 -425 640 -640 480 -640 425 -426 640 -612 612 -640 476 -500 375 -480 640 -640 427 -427 640 -640 480 -640 480 -640 480 -428 640 -480 640 -640 426 -640 480 -640 480 -434 640 -480 640 -640 394 -640 478 -480 640 -500 375 -425 640 -640 480 -640 480 -479 640 -500 400 -480 640 -640 480 -612 612 -640 360 -375 500 -480 640 -640 480 -640 427 -427 640 -500 375 -375 500 -426 640 -640 480 -500 375 -640 480 -640 427 -480 640 -300 196 -193 272 -500 333 -500 375 -332 640 -640 480 -640 400 -425 640 -640 427 -500 333 -417 500 -640 415 -640 480 -166 221 -640 426 -640 427 -640 480 -480 640 -640 480 -424 640 -500 366 -640 427 -500 334 -425 640 -640 480 -500 375 -640 427 -640 480 -640 427 -640 425 -640 534 -387 640 -457 640 -480 640 -640 640 -640 426 -640 446 -640 393 -640 453 -640 433 -640 480 -500 357 -500 430 -640 428 -640 427 -427 640 -640 382 -640 408 -640 512 -640 480 -375 500 -640 429 -640 480 -640 480 -480 640 -640 427 -640 480 -640 458 -427 640 -500 375 -500 375 -640 427 -640 480 -594 640 -640 480 -480 640 -640 471 -640 480 -640 427 -640 361 -640 427 -640 427 -640 640 -480 640 -640 480 -640 480 -500 327 -640 427 -640 483 -375 500 -500 323 -640 480 -640 428 -353 378 -640 480 -640 480 -427 640 -640 480 -640 427 -410 500 -480 640 -640 480 -640 428 -640 429 -640 427 -640 478 -612 612 -640 427 -640 463 -640 480 -640 480 -640 427 -428 640 -640 480 -480 640 -640 421 -640 480 -640 427 -480 640 -500 400 -640 481 -640 548 -480 640 -375 500 -612 612 -640 427 -500 333 -640 427 -640 478 -500 375 -640 480 -640 360 -500 375 -640 430 -500 344 -500 375 -427 640 -640 428 -500 337 -640 360 -427 640 -640 424 -500 375 -640 480 -640 433 -500 327 -427 640 -480 640 -480 640 -640 480 -640 220 -640 486 -640 428 -640 480 -365 640 -427 640 -480 640 -640 480 -640 512 -480 640 -424 640 -640 480 -500 375 -500 375 -640 433 -640 426 -640 425 -480 640 -640 480 -640 453 -640 480 -640 638 -426 640 -375 500 -640 426 -640 360 -640 424 -640 480 -624 640 -640 480 -427 640 -335 500 -427 640 -640 480 -640 424 -378 500 -640 350 -449 640 -427 640 -640 426 -426 640 -427 640 -640 637 -375 500 -502 640 -640 426 -640 376 -425 640 -424 640 -640 480 -612 612 -640 427 -500 333 -640 480 -480 640 -640 480 -613 640 -375 500 -640 480 -640 428 -640 426 -640 480 -640 466 -640 435 -640 309 -640 425 -640 425 -640 428 -500 335 -427 640 -480 640 -466 640 -480 640 -640 480 -428 640 -640 434 -640 434 -640 426 -375 500 -480 640 -640 428 -640 480 -640 427 -640 480 -640 426 -640 463 -426 640 -640 441 -640 480 -427 640 -500 394 -482 640 -640 466 -426 640 -532 640 -640 428 -480 640 -640 426 -640 412 -500 375 -500 375 -640 426 -386 640 -640 480 -640 480 -640 426 -640 426 -640 480 -500 352 -640 640 -640 480 -480 640 -640 425 -640 640 -640 427 -640 433 -427 640 -427 640 -640 480 -640 480 -500 375 -500 375 -640 428 -500 345 -426 640 -640 480 -640 480 -640 427 -640 419 -640 480 -640 425 -500 375 -640 480 -640 480 -482 640 -640 427 -640 424 -640 470 -500 333 -640 427 -640 430 -640 480 -640 480 -640 480 -640 425 -640 424 -556 640 -640 479 -640 480 -640 427 -640 480 -500 375 -640 480 -640 429 -378 640 -640 426 -480 640 -612 612 -333 500 -640 411 -640 353 -612 612 -640 480 -640 425 -640 366 -480 640 -640 427 -640 480 -640 480 -427 640 -640 428 -457 640 -640 480 -640 424 -478 640 -640 480 -640 480 -640 425 -640 424 -640 479 -640 480 -640 360 -640 640 -421 640 -427 640 -640 481 -640 480 -427 640 -427 640 -640 480 -640 427 -640 427 -640 428 -500 375 -640 428 -640 480 -612 612 -500 375 -427 640 -500 375 -640 480 -640 427 -640 480 -480 640 -640 432 -640 427 -640 425 -640 480 -427 640 -640 361 -640 427 -640 425 -480 640 -478 640 -640 425 -480 640 -427 640 -427 640 -640 427 -487 640 -427 640 -480 640 -640 525 -428 500 -640 439 -500 375 -375 500 -458 640 -640 480 -640 423 -640 480 -640 480 -640 593 -640 480 -640 618 -640 392 -600 410 -640 427 -500 281 -640 480 -640 490 -640 480 -333 500 -640 640 -360 640 -427 640 -428 640 -401 600 -640 396 -640 480 -480 640 -640 480 -640 453 -640 438 -500 397 -517 640 -640 426 -640 426 -640 631 -480 640 -480 640 -640 480 -640 454 -480 640 -480 640 -512 640 -640 427 -640 480 -500 375 -588 640 -640 480 -640 480 -640 427 -640 480 -640 640 -411 640 -480 640 -640 480 -640 425 -426 640 -640 428 -612 612 -640 427 -426 640 -427 640 -640 428 -640 426 -640 425 -640 425 -500 381 -640 480 -640 392 -543 640 -480 640 -480 640 -550 245 -640 480 -640 480 -640 478 -334 640 -640 376 -640 427 -640 430 -500 326 -640 426 -500 375 -333 500 -527 640 -364 640 -640 480 -640 433 -640 427 -457 640 -640 480 -640 480 -640 506 -640 523 -640 425 -640 480 -640 480 -640 391 -640 221 -427 640 -355 500 -640 433 -640 480 -640 425 -640 377 -640 480 -640 425 -640 425 -640 427 -427 640 -640 427 -640 402 -640 457 -500 375 -640 426 -640 518 -640 640 -640 383 -640 427 -427 640 -500 375 -640 480 -428 640 -428 640 -640 480 -357 500 -640 480 -500 375 -640 515 -640 480 -640 360 -640 480 -500 333 -640 480 -240 360 -640 480 -640 443 -640 504 -640 480 -640 480 -465 640 -421 640 -640 480 -640 480 -640 480 -471 640 -640 480 -640 431 -640 425 -500 319 -640 411 -500 375 -640 426 -640 469 -640 427 -640 480 -640 480 -640 426 -500 333 -640 480 -640 366 -500 375 -640 480 -640 383 -640 480 -250 167 -640 427 -640 480 -640 424 -480 640 -500 375 -640 480 -640 480 -640 426 -640 427 -640 427 -640 404 -640 426 -427 640 -426 640 -640 359 -500 375 -640 429 -640 427 -640 480 -640 480 -328 500 -640 405 -478 640 -640 427 -500 333 -640 554 -449 640 -640 426 -640 480 -640 425 -640 480 -640 427 -640 426 -612 612 -640 320 -428 640 -462 640 -640 349 -640 427 -640 426 -640 427 -640 427 -359 640 -640 481 -640 429 -640 427 -427 640 -640 480 -640 359 -640 432 -640 427 -427 640 -640 426 -480 480 -640 426 -549 640 -640 427 -640 546 -640 489 -640 426 -500 335 -421 640 -640 427 -640 478 -640 425 -640 361 -640 639 -640 360 -423 640 -640 425 -612 612 -478 640 -640 426 -480 640 -640 426 -640 331 -480 640 -481 640 -640 480 -427 640 -591 640 -640 480 -640 427 -640 426 -640 478 -449 640 -640 480 -480 640 -640 480 -640 427 -640 480 -500 375 -500 400 -463 640 -427 640 -427 640 -640 434 -640 431 -333 500 -640 427 -640 425 -426 640 -429 640 -640 427 -375 500 -640 480 -500 375 -375 500 -640 425 -640 425 -500 335 -640 426 -612 612 -640 425 -640 480 -640 219 -640 427 -640 428 -640 427 -426 640 -640 480 -640 427 -640 427 -640 454 -612 612 -640 480 -480 640 -640 425 -640 480 -500 375 -640 427 -640 426 -640 383 -640 480 -500 375 -640 427 -500 269 -640 480 -452 500 -428 640 -640 427 -427 640 -640 480 -430 640 -640 480 -640 427 -640 471 -640 634 -500 375 -373 500 -640 480 -427 640 -640 427 -424 640 -640 480 -425 640 -640 425 -424 640 -640 360 -500 334 -635 640 -640 428 -500 375 -640 426 -640 436 -500 375 -640 360 -640 480 -640 427 -640 480 -427 640 -378 640 -640 594 -640 480 -640 433 -480 640 -427 640 -640 640 -640 480 -640 480 -501 640 -640 320 -640 480 -640 426 -640 406 -640 480 -640 640 -502 640 -375 500 -640 480 -640 427 -375 500 -640 427 -480 640 -640 453 -408 640 -640 423 -500 375 -640 427 -480 640 -640 423 -375 500 -640 480 -425 640 -640 480 -640 480 -640 480 -640 416 -640 426 -640 427 -640 480 -640 428 -640 427 -640 444 -640 480 -640 428 -426 640 -640 426 -480 640 -480 640 -640 455 -640 400 -480 640 -425 640 -478 640 -640 640 -427 640 -640 468 -500 500 -500 375 -640 480 -640 480 -640 480 -640 427 -640 480 -640 426 -500 500 -640 480 -500 334 -640 426 -640 427 -640 480 -640 427 -640 480 -426 640 -640 301 -640 428 -640 427 -500 222 -480 640 -427 640 -500 335 -360 270 -640 452 -640 361 -640 480 -480 640 -640 429 -640 434 -640 463 -640 427 -428 640 -640 427 -426 640 -640 472 -640 480 -640 438 -640 443 -612 612 -478 640 -426 640 -429 640 -640 425 -640 480 -640 480 -640 640 -426 640 -640 427 -640 424 -640 424 -640 424 -612 612 -640 480 -480 640 -400 500 -480 640 -640 480 -640 480 -640 427 -640 597 -640 416 -640 480 -640 480 -480 640 -480 640 -640 424 -640 428 -640 425 -582 640 -484 640 -566 640 -640 427 -426 640 -427 640 -640 480 -640 468 -640 424 -427 640 -640 425 -480 640 -600 400 -640 480 -640 480 -640 453 -500 339 -480 640 -640 480 -500 403 -500 333 -640 480 -640 480 -640 480 -640 427 -640 510 -640 425 -640 480 -426 640 -640 640 -375 500 -424 640 -640 427 -640 480 -480 640 -429 640 -640 426 -480 640 -640 427 -640 426 -640 480 -640 441 -494 640 -640 360 -425 640 -640 415 -640 427 -640 480 -640 360 -427 640 -500 333 -500 375 -333 500 -640 480 -480 640 -640 506 -640 427 -640 440 -600 450 -612 612 -640 424 -640 425 -640 480 -640 490 -480 640 -640 427 -640 480 -640 480 -640 428 -640 427 -408 640 -640 480 -640 480 -640 480 -480 640 -480 640 -500 375 -640 369 -424 640 -640 406 -500 375 -640 360 -640 519 -640 360 -640 426 -640 480 -640 480 -640 480 -500 375 -640 432 -640 501 -480 640 -640 640 -640 417 -600 450 -640 428 -640 427 -428 640 -374 500 -640 478 -640 425 -640 480 -480 640 -500 418 -333 500 -640 429 -640 428 -596 640 -640 480 -640 480 -640 359 -480 640 -640 427 -640 446 -640 427 -640 480 -500 375 -640 548 -480 640 -640 426 -500 357 -640 480 -500 375 -612 612 -480 640 -640 429 -640 429 -480 640 -426 640 -334 500 -604 640 -640 425 -640 424 -640 457 -640 426 -640 480 -640 551 -392 640 -640 418 -427 640 -640 480 -640 359 -500 375 -640 427 -210 304 -640 426 -356 200 -640 480 -500 375 -480 640 -500 377 -320 240 -427 640 -640 425 -640 513 -500 375 -427 640 -640 499 -640 294 -640 427 -640 443 -640 519 -640 480 -640 361 -640 480 -640 554 -640 426 -640 507 -640 426 -640 427 -640 480 -640 426 -640 480 -640 412 -640 480 -504 336 -640 480 -427 640 -426 640 -640 360 -640 421 -640 428 -640 480 -640 424 -480 640 -640 480 -640 480 -640 426 -640 480 -640 425 -480 640 -640 426 -640 428 -640 524 -640 374 -640 427 -640 428 -427 640 -640 480 -640 427 -640 360 -640 480 -428 640 -480 640 -426 640 -500 375 -640 490 -640 484 -640 445 -640 480 -427 640 -640 425 -500 375 -640 428 -480 640 -640 347 -640 360 -425 640 -640 499 -640 480 -500 375 -640 478 -640 427 -500 375 -427 640 -424 640 -480 640 -640 428 -640 640 -500 335 -640 480 -640 640 -640 427 -640 539 -480 640 -640 427 -489 640 -500 333 -640 424 -427 640 -640 427 -640 427 -480 640 -640 424 -500 335 -640 640 -640 480 -640 480 -427 640 -640 480 -576 475 -640 513 -640 427 -640 513 -480 640 -481 640 -449 640 -640 428 -640 426 -640 480 -640 346 -640 448 -640 480 -640 406 -640 427 -640 427 -640 425 -640 480 -428 640 -640 480 -500 375 -640 470 -640 353 -640 427 -612 612 -640 511 -640 383 -640 640 -640 425 -482 640 -640 426 -480 640 -359 640 -640 427 -640 479 -500 375 -640 480 -640 427 -640 433 -480 640 -640 480 -495 640 -640 424 -640 480 -640 428 -640 415 -640 480 -612 612 -333 500 -640 480 -427 640 -493 640 -480 640 -640 569 -500 375 -640 427 -640 483 -640 473 -640 478 -640 427 -478 640 -640 426 -427 640 -640 427 -640 479 -481 640 -640 312 -480 640 -640 480 -640 426 -640 636 -480 640 -640 480 -480 640 -640 383 -640 428 -640 329 -640 406 -640 428 -378 500 -500 375 -640 371 -428 640 -427 640 -640 359 -640 427 -640 480 -640 424 -640 427 -640 480 -500 346 -640 480 -384 640 -480 640 -640 427 -443 640 -541 640 -640 640 -640 427 -640 480 -640 541 -537 640 -427 640 -640 426 -640 427 -640 480 -444 640 -480 640 -640 480 -480 640 -640 480 -640 480 -640 544 -500 343 -640 480 -640 480 -640 427 -640 640 -640 453 -640 316 -357 500 -496 640 -480 640 -640 421 -640 480 -640 424 -640 426 -640 427 -612 612 -640 427 -640 480 -500 475 -501 640 -612 612 -480 640 -640 480 -640 425 -480 640 -639 640 -640 329 -640 427 -640 480 -640 480 -640 480 -480 640 -640 514 -427 640 -640 480 -500 376 -500 375 -640 425 -640 427 -640 488 -640 428 -640 428 -640 428 -488 500 -640 424 -640 480 -480 640 -640 536 -640 458 -500 400 -640 451 -640 454 -640 640 -640 425 -640 428 -640 426 -640 478 -500 375 -427 640 -640 400 -640 427 -640 480 -480 640 -427 640 -612 612 -640 427 -640 427 -640 480 -612 612 -480 640 -640 427 -640 360 -640 480 -640 425 -610 431 -640 385 -640 426 -640 640 -640 427 -640 452 -640 426 -640 425 -640 425 -640 480 -329 500 -640 480 -500 375 -480 640 -640 428 -640 480 -640 426 -612 612 -640 480 -238 206 -640 427 -640 480 -640 427 -500 375 -640 473 -640 480 -640 480 -640 480 -500 334 -640 426 -427 640 -640 309 -640 428 -333 500 -640 427 -480 640 -462 640 -427 640 -640 426 -640 480 -640 427 -424 640 -640 480 -640 480 -640 425 -640 640 -640 425 -640 480 -429 640 -480 640 -640 426 -475 640 -427 640 -640 480 -500 343 -427 640 -500 335 -640 480 -640 491 -419 640 -640 426 -640 427 -427 640 -480 640 -640 450 -640 480 -500 375 -640 480 -640 427 -465 421 -640 427 -640 480 -500 333 -640 428 -448 500 -640 359 -640 545 -427 640 -640 426 -640 427 -333 500 -640 480 -382 500 -640 480 -640 428 -640 480 -640 418 -640 428 -427 640 -640 480 -500 333 -640 480 -640 480 -640 428 -500 375 -640 388 -640 429 -640 480 -640 427 -640 427 -640 480 -368 640 -500 375 -640 426 -640 413 -431 500 -640 480 -640 480 -375 500 -500 332 -640 480 -640 480 -480 640 -640 426 -640 481 -426 640 -640 427 -640 478 -640 427 -640 425 -640 530 -523 640 -640 426 -640 424 -640 480 -427 640 -640 474 -640 427 -640 425 -640 395 -640 480 -480 640 -640 464 -640 462 -640 480 -640 407 -640 426 -640 480 -640 425 -320 480 -480 640 -429 640 -578 640 -640 569 -640 426 -640 480 -500 333 -640 480 -640 480 -395 500 -640 479 -640 480 -500 370 -361 640 -532 640 -640 480 -500 312 -480 640 -640 640 -640 508 -640 425 -640 480 -427 640 -640 480 -640 480 -640 420 -427 640 -640 480 -375 500 -640 426 -640 427 -640 488 -500 332 -427 640 -640 429 -640 425 -375 500 -640 360 -640 427 -640 480 -500 375 -640 480 -480 640 -612 612 -640 424 -640 424 -640 478 -640 427 -640 480 -640 480 -640 425 -500 375 -640 427 -480 640 -640 426 -640 426 -640 434 -500 333 -400 266 -500 332 -640 428 -640 480 -640 480 -500 328 -640 427 -500 417 -480 640 -500 375 -427 640 -480 640 -480 640 -480 640 -640 426 -640 424 -640 480 -640 640 -375 500 -640 427 -427 640 -640 427 -480 640 -500 252 -458 640 -640 427 -640 480 -640 427 -640 478 -480 640 -426 640 -640 425 -478 640 -427 640 -333 500 -640 425 -427 640 -640 336 -640 427 -375 500 -640 405 -480 640 -640 427 -640 501 -640 456 -640 428 -640 480 -640 473 -333 500 -640 464 -640 428 -427 640 -500 386 -500 375 -612 612 -640 427 -640 464 -457 640 -640 427 -640 429 -640 386 -640 427 -640 441 -500 334 -500 375 -640 480 -640 427 -480 640 -500 332 -640 427 -640 480 -640 480 -640 391 -640 438 -640 484 -500 375 -480 640 -640 420 -500 400 -427 640 -640 503 -640 480 -640 427 -427 640 -640 480 -640 480 -640 427 -640 425 -640 426 -427 640 -640 360 -612 612 -640 425 -640 424 -640 391 -480 640 -640 480 -500 375 -640 480 -640 480 -612 612 -480 640 -334 500 -480 640 -640 480 -640 407 -640 480 -640 361 -640 480 -640 427 -640 563 -640 425 -640 480 -500 281 -640 543 -640 480 -640 428 -640 640 -640 480 -500 375 -640 433 -461 459 -640 363 -640 480 -423 640 -640 360 -640 480 -640 425 -640 480 -640 473 -640 426 -480 640 -640 425 -640 480 -640 429 -500 381 -500 328 -640 427 -426 640 -639 480 -640 436 -640 480 -640 505 -640 480 -374 640 -640 480 -640 427 -640 480 -640 480 -640 480 -640 480 -640 427 -427 640 -640 558 -640 478 -640 427 -640 427 -500 375 -640 480 -640 427 -375 500 -640 426 -640 427 -640 429 -640 432 -640 383 -500 317 -333 500 -640 160 -375 500 -425 640 -480 640 -640 480 -640 425 -640 471 -500 375 -640 427 -640 480 -640 430 -375 500 -640 480 -500 375 -640 480 -640 427 -640 480 -640 204 -640 478 -427 640 -427 640 -640 427 -640 427 -640 397 -288 197 -640 426 -640 427 -640 640 -640 427 -640 480 -427 640 -640 480 -640 480 -640 501 -640 478 -612 612 -640 427 -426 640 -500 375 -640 480 -640 426 -520 640 -640 427 -640 426 -640 480 -640 420 -427 640 -640 480 -640 427 -476 640 -640 427 -427 640 -640 478 -640 448 -500 333 -500 285 -640 427 -494 640 -640 362 -375 500 -600 450 -640 480 -640 417 -500 496 -330 640 -500 375 -500 375 -640 478 -640 480 -640 480 -640 360 -640 426 -640 428 -612 612 -427 640 -640 480 -640 366 -640 480 -640 480 -427 640 -640 480 -480 360 -640 427 -640 457 -640 360 -509 640 -640 480 -500 375 -640 427 -640 425 -640 640 -640 480 -640 529 -640 480 -640 427 -640 480 -640 425 -640 426 -640 426 -500 375 -526 640 -640 426 -335 500 -612 612 -640 454 -383 640 -640 361 -640 427 -474 640 -640 427 -640 428 -500 326 -640 480 -640 424 -640 513 -640 510 -500 375 -500 375 -480 640 -480 640 -640 606 -480 640 -480 640 -640 311 -640 494 -640 425 -427 640 -480 640 -640 428 -640 640 -600 400 -640 457 -640 480 -640 401 -640 421 -640 480 -640 480 -640 436 -500 375 -426 640 -640 429 -640 496 -500 337 -640 480 -342 500 -500 334 -640 428 -640 333 -640 480 -480 640 -408 500 -544 640 -640 480 -640 428 -640 427 -640 414 -640 504 -640 479 -500 375 -480 640 -433 500 -640 480 -640 480 -427 640 -640 480 -640 480 -640 480 -640 426 -536 640 -500 362 -500 375 -640 424 -640 480 -640 480 -640 480 -640 429 -427 640 -640 426 -640 480 -640 543 -640 360 -500 334 -640 360 -640 426 -500 375 -640 374 -500 375 -612 612 -640 426 -427 640 -427 640 -480 640 -640 480 -640 480 -640 480 -640 480 -640 480 -640 427 -423 640 -478 640 -427 640 -375 500 -640 478 -375 500 -500 332 -427 640 -427 640 -640 480 -473 640 -640 480 -640 429 -640 474 -640 480 -640 512 -500 375 -639 640 -561 640 -332 500 -480 640 -640 640 -442 640 -500 448 -640 480 -640 428 -640 480 -640 480 -640 427 -640 427 -640 480 -640 480 -640 424 -425 640 -640 436 -640 427 -640 480 -612 612 -333 500 -640 480 -612 612 -640 426 -459 322 -640 426 -640 427 -426 640 -640 480 -640 426 -640 480 -600 422 -640 480 -612 612 -640 480 -640 394 -640 360 -640 480 -640 427 -500 375 -640 478 -489 640 -640 481 -640 427 -640 337 -640 392 -640 508 -500 421 -480 640 -640 480 -640 344 -640 427 -426 640 -612 612 -640 479 -640 480 -640 557 -476 500 -640 429 -640 424 -640 480 -398 500 -640 425 -640 640 -612 612 -640 480 -640 424 -640 424 -426 640 -640 480 -640 426 -483 640 -640 453 -640 480 -500 251 -427 640 -640 427 -500 375 -640 480 -640 480 -640 424 -640 480 -427 640 -640 427 -640 480 -640 480 -640 480 -640 478 -640 640 -480 640 -506 640 -324 243 -612 612 -500 328 -640 427 -640 480 -428 640 -480 640 -640 480 -640 640 -500 375 -425 640 -640 480 -640 432 -426 640 -640 424 -640 480 -478 640 -640 360 -427 640 -640 480 -640 480 -512 640 -480 640 -481 640 -500 375 -500 333 -640 427 -595 640 -640 480 -480 640 -640 359 -640 480 -640 352 -640 480 -427 640 -640 427 -640 478 -426 640 -640 427 -640 426 -640 317 -428 640 -425 640 -251 480 -463 640 -640 419 -640 480 -640 398 -426 640 -640 480 -427 640 -640 480 -640 480 -480 640 -640 427 -640 427 -640 427 -640 480 -640 427 -333 500 -640 480 -640 480 -640 426 -640 427 -500 371 -500 376 -640 480 -480 640 -640 437 -480 640 -640 480 -426 640 -640 424 -640 359 -640 480 -640 427 -640 421 -640 427 -640 480 -640 514 -600 462 -375 500 -333 500 -500 375 -640 480 -480 640 -500 353 -640 512 -480 640 -640 510 -640 480 -640 428 -640 426 -640 480 -640 428 -480 640 -577 640 -427 640 -640 360 -595 438 -640 480 -427 640 -640 499 -333 500 -640 425 -640 480 -640 480 -612 612 -429 640 -640 480 -640 427 -640 394 -640 425 -640 480 -480 640 -640 480 -640 413 -615 640 -640 427 -640 480 -640 436 -640 427 -427 640 -640 360 -480 640 -640 428 -640 362 -640 480 -640 480 -293 450 -640 428 -640 480 -640 457 -480 640 -640 424 -478 640 -640 480 -480 640 -500 391 -424 640 -640 427 -500 374 -640 480 -500 395 -500 375 -640 427 -640 412 -640 427 -640 427 -640 427 -500 333 -640 427 -640 427 -640 427 -612 612 -480 640 -640 480 -640 480 -640 427 -480 640 -640 425 -425 640 -525 640 -640 427 -640 434 -500 463 -640 427 -427 640 -640 425 -640 480 -480 640 -427 640 -640 480 -500 400 -640 427 -640 480 -427 640 -496 500 -448 336 -426 640 -640 480 -640 480 -640 405 -480 640 -470 640 -640 427 -500 385 -426 640 -640 425 -640 480 -500 375 -640 480 -500 375 -640 426 -640 423 -640 640 -640 464 -640 425 -640 428 -500 477 -298 640 -640 480 -640 425 -640 426 -640 427 -640 480 -500 333 -640 477 -478 640 -372 500 -640 437 -640 426 -640 480 -500 375 -640 427 -500 333 -375 500 -640 480 -640 354 -478 640 -640 464 -640 424 -612 612 -500 375 -640 480 -640 480 -640 571 -640 480 -640 480 -640 480 -640 480 -640 480 -640 424 -640 427 -640 427 -640 627 -640 508 -427 640 -640 476 -640 427 -640 454 -640 502 -612 612 -333 500 -424 640 -573 640 -640 424 -640 480 -640 427 -640 480 -589 640 -640 427 -640 428 -640 472 -640 428 -480 640 -512 640 -640 480 -640 480 -640 427 -640 412 -500 314 -640 480 -480 640 -500 375 -586 640 -333 500 -640 469 -640 425 -640 480 -332 500 -640 480 -640 425 -544 640 -640 458 -500 375 -480 640 -640 480 -640 480 -640 480 -320 240 -640 480 -640 480 -427 640 -500 375 -640 480 -334 500 -640 480 -640 427 -640 497 -500 375 -640 480 -640 426 -640 425 -473 640 -640 426 -640 480 -640 426 -531 640 -640 478 -640 428 -640 429 -480 640 -612 612 -640 368 -375 500 -640 480 -640 480 -640 480 -427 640 -503 640 -640 360 -640 427 -480 640 -640 427 -640 426 -640 480 -480 640 -640 426 -640 429 -640 426 -480 640 -640 427 -640 427 -640 481 -640 427 -640 427 -640 474 -597 640 -640 248 -480 360 -640 480 -640 512 -640 427 -332 500 -640 427 -640 428 -460 640 -640 426 -500 375 -420 640 -640 480 -640 480 -500 375 -481 640 -640 427 -640 427 -640 426 -640 478 -428 640 -500 375 -640 395 -640 426 -640 427 -350 233 -640 427 -386 640 -640 480 -427 640 -640 286 -640 480 -640 419 -340 500 -640 348 -335 500 -640 495 -640 366 -640 427 -640 640 -640 427 -640 425 -640 480 -640 480 -640 480 -640 427 -640 425 -500 333 -640 481 -480 640 -480 640 -427 640 -640 427 -426 640 -640 480 -640 478 -500 332 -640 427 -640 427 -500 281 -640 480 -428 640 -640 480 -280 268 -640 369 -640 427 -640 424 -640 480 -427 640 -428 640 -640 480 -640 427 -500 361 -612 612 -640 480 -480 640 -640 427 -640 478 -640 514 -480 640 -432 288 -640 392 -640 480 -640 480 -612 612 -640 361 -640 480 -333 500 -640 427 -640 427 -640 407 -640 418 -640 512 -640 426 -640 427 -500 332 -640 428 -480 640 -640 480 -640 429 -640 360 -500 375 -640 424 -640 425 -550 365 -383 640 -640 427 -430 640 -500 375 -425 640 -500 375 -500 357 -500 222 -640 427 -640 480 -480 640 -500 375 -640 428 -640 423 -421 640 -640 480 -640 480 -640 427 -640 426 -640 480 -466 640 -427 640 -500 400 -480 640 -500 333 -640 426 -480 640 -640 480 -352 288 -640 480 -640 425 -640 428 -640 426 -640 427 -640 478 -565 640 -640 426 -640 480 -500 374 -640 426 -600 500 -640 480 -640 480 -480 640 -640 480 -586 640 -640 427 -640 491 -640 327 -640 218 -500 332 -500 375 -640 480 -640 580 -638 640 -359 640 -640 360 -516 640 -640 226 -333 500 -640 427 -640 406 -640 427 -640 480 -448 336 -640 427 -520 640 -640 480 -409 500 -375 500 -640 480 -640 483 -480 640 -640 428 -500 375 -640 480 -640 480 -640 428 -400 267 -640 480 -375 500 -640 428 -640 480 -640 424 -640 427 -428 640 -640 425 -424 640 -640 480 -500 496 -333 500 -500 335 -502 640 -640 427 -640 485 -640 480 -427 640 -425 640 -334 500 -640 426 -640 480 -640 347 -640 480 -443 640 -500 335 -640 427 -640 573 -640 444 -500 375 -427 640 -640 427 -500 375 -640 427 -640 426 -426 640 -426 640 -640 480 -640 480 -640 479 -640 427 -640 480 -640 540 -640 427 -427 640 -500 375 -640 480 -500 375 -375 500 -640 480 -640 425 -437 640 -407 482 -478 640 -640 512 -500 375 -640 480 -500 375 -640 427 -640 315 -320 240 -640 371 -640 480 -640 480 -435 640 -640 480 -424 640 -612 612 -480 640 -640 640 -425 640 -640 480 -500 375 -480 304 -640 428 -640 480 -640 480 -640 427 -640 428 -640 453 -523 640 -427 640 -500 375 -640 480 -500 500 -640 425 -640 427 -500 363 -427 640 -640 427 -500 375 -383 640 -427 640 -427 640 -500 375 -640 419 -640 480 -640 427 -360 270 -640 427 -500 388 -640 427 -640 480 -640 480 -640 427 -640 425 -640 427 -640 480 -640 323 -640 426 -500 375 -640 427 -640 424 -600 600 -640 427 -480 640 -640 457 -500 302 -640 480 -640 480 -640 480 -500 375 -457 640 -640 480 -640 360 -640 427 -500 364 -612 612 -500 375 -640 427 -375 500 -480 640 -640 427 -500 375 -640 366 -640 427 -640 480 -640 555 -640 427 -640 427 -640 426 -640 480 -640 480 -640 428 -640 484 -640 491 -500 375 -640 507 -500 375 -640 480 -375 500 -640 480 -640 480 -640 480 -640 364 -640 427 -464 640 -443 640 -640 480 -480 640 -640 363 -480 640 -480 640 -640 395 -427 640 -640 390 -640 427 -500 375 -640 427 -500 333 -612 612 -640 427 -640 480 -640 480 -491 640 -640 480 -640 428 -640 211 -640 427 -640 480 -640 480 -640 464 -640 457 -640 480 -640 428 -640 480 -640 425 -640 426 -640 360 -500 375 -640 480 -500 318 -640 428 -640 480 -375 500 -480 640 -347 500 -612 612 -640 425 -640 480 -640 542 -640 412 -640 427 -500 378 -399 640 -480 640 -640 425 -640 425 -612 612 -640 481 -640 427 -427 640 -640 419 -428 640 -640 427 -640 453 -425 640 -640 479 -640 480 -640 480 -457 640 -512 640 -480 640 -640 443 -640 427 -640 497 -500 333 -427 640 -425 640 -427 640 -480 640 -500 375 -640 400 -468 640 -425 640 -640 478 -332 500 -640 424 -640 424 -640 493 -640 485 -333 500 -640 426 -640 427 -640 425 -640 426 -640 429 -480 640 -612 612 -640 399 -640 480 -640 417 -500 400 -640 421 -640 321 -640 480 -427 640 -427 640 -640 480 -640 480 -640 480 -428 640 -640 425 -640 427 -414 640 -640 480 -640 480 -640 425 -640 424 -640 480 -509 640 -640 425 -500 375 -500 417 -427 640 -640 424 -640 480 -640 480 -480 640 -500 375 -430 640 -640 480 -640 427 -640 480 -640 427 -640 457 -640 425 -427 640 -375 500 -640 476 -640 349 -640 426 -640 488 -333 500 -480 640 -444 640 -640 480 -640 427 -500 375 -640 480 -320 240 -457 640 -640 480 -640 361 -640 425 -640 480 -640 428 -640 427 -640 425 -640 428 -640 427 -640 480 -640 346 -640 480 -559 640 -500 331 -500 375 -359 640 -640 479 -640 480 -480 640 -375 500 -427 640 -640 429 -480 640 -640 480 -640 428 -640 481 -640 531 -375 500 -640 427 -480 640 -640 351 -640 480 -640 360 -480 640 -640 640 -640 425 -640 480 -480 640 -640 427 -500 333 -640 479 -480 640 -640 426 -640 376 -426 640 -640 428 -640 427 -500 333 -640 565 -480 640 -640 480 -640 417 -640 480 -500 375 -500 333 -640 480 -500 396 -317 640 -425 640 -640 427 -480 640 -640 428 -640 480 -640 480 -500 375 -640 426 -640 361 -640 425 -375 500 -640 427 -427 640 -640 427 -427 640 -640 426 -375 500 -437 640 -640 427 -640 425 -640 480 -640 457 -640 480 -640 480 -600 640 -640 424 -640 425 -640 480 -640 425 -640 480 -500 296 -478 640 -640 399 -640 624 -640 426 -640 427 -640 471 -640 427 -450 640 -640 427 -640 383 -500 335 -640 360 -640 359 -640 480 -640 427 -418 640 -640 480 -460 640 -640 482 -480 640 -640 506 -640 480 -480 640 -375 500 -640 481 -427 640 -640 427 -600 400 -500 333 -640 360 -640 480 -480 640 -425 640 -640 480 -640 480 -640 428 -640 355 -480 640 -640 480 -640 480 -640 480 -427 640 -640 427 -500 375 -427 640 -500 375 -640 427 -640 480 -640 427 -500 375 -640 334 -640 427 -640 427 -640 427 -638 640 -500 375 -640 480 -640 428 -437 640 -429 640 -500 476 -640 359 -640 480 -640 447 -640 480 -640 360 -500 495 -500 375 -500 362 -640 480 -333 500 -640 399 -640 218 -640 418 -640 480 -640 445 -640 480 -640 480 -640 459 -640 480 -480 640 -612 612 -480 640 -640 480 -640 481 -640 427 -640 426 -427 640 -640 471 -427 640 -480 640 -640 427 -640 426 -480 640 -640 426 -640 416 -640 480 -640 428 -640 480 -640 480 -640 427 -428 640 -640 640 -612 612 -640 443 -640 480 -640 427 -640 480 -640 480 -334 500 -640 480 -640 425 -500 375 -640 427 -640 427 -640 480 -640 420 -640 426 -640 480 -640 478 -640 426 -612 612 -640 478 -640 539 -640 640 -332 500 -640 480 -480 640 -640 485 -640 480 -500 328 -640 640 -640 361 -640 426 -640 427 -640 480 -640 324 -640 383 -640 480 -511 640 -640 480 -500 285 -500 332 -640 480 -640 459 -480 640 -640 469 -500 375 -640 359 -600 400 -640 426 -640 480 -640 411 -640 480 -438 424 -640 427 -551 640 -640 480 -640 427 -640 408 -640 480 -640 424 -640 512 -640 480 -375 500 -640 427 -612 612 -640 480 -640 528 -479 640 -426 640 -640 480 -640 427 -640 359 -500 333 -640 480 -550 640 -640 480 -640 434 -633 640 -640 425 -427 640 -640 478 -640 480 -640 480 -640 480 -640 516 -640 455 -640 427 -640 480 -640 426 -640 427 -428 640 -640 480 -640 482 -640 259 -640 426 -640 457 -480 640 -427 640 -640 427 -640 480 -640 480 -640 484 -640 497 -640 426 -640 424 -640 480 -640 480 -640 480 -640 360 -482 640 -425 640 -640 361 -640 480 -640 480 -427 640 -640 480 -640 426 -640 480 -640 374 -640 426 -640 328 -640 427 -612 612 -333 500 -640 338 -500 400 -640 427 -640 427 -640 480 -640 426 -640 427 -500 375 -640 425 -640 480 -640 480 -500 375 -427 640 -640 429 -640 427 -640 466 -500 266 -500 400 -640 427 -504 640 -640 480 -480 640 -500 375 -500 375 -500 375 -500 375 -427 640 -640 480 -480 640 -640 480 -640 536 -640 427 -500 375 -640 480 -500 375 -500 375 -640 427 -612 612 -640 481 -640 427 -640 427 -500 375 -640 427 -640 509 -375 500 -640 640 -612 612 -640 480 -640 425 -640 480 -500 375 -640 425 -640 480 -640 426 -640 449 -640 480 -640 608 -640 359 -640 424 -480 640 -640 480 -640 464 -640 387 -408 640 -640 480 -640 427 -640 427 -640 468 -480 640 -375 500 -428 640 -640 480 -480 640 -640 480 -640 480 -375 500 -467 640 -640 425 -640 640 -640 480 -640 480 -640 427 -640 480 -480 640 -640 428 -640 427 -640 427 -640 480 -500 375 -640 428 -612 612 -500 333 -427 640 -640 425 -426 640 -640 480 -640 480 -640 360 -640 480 -500 375 -480 640 -480 640 -427 640 -480 640 -640 427 -640 416 -640 427 -640 424 -640 480 -640 385 -640 428 -640 480 -640 466 -640 425 -640 427 -480 640 -480 640 -480 640 -640 441 -640 480 -332 500 -640 428 -640 480 -427 640 -640 513 -640 427 -612 612 -480 640 -640 640 -640 480 -640 428 -425 640 -640 480 -640 640 -480 640 -640 428 -640 288 -640 427 -640 425 -640 479 -640 427 -640 426 -427 640 -480 640 -320 240 -640 480 -640 426 -500 375 -640 480 -640 423 -640 604 -640 436 -500 281 -640 427 -612 612 -427 640 -640 427 -427 640 -640 428 -640 427 -500 335 -640 428 -480 640 -640 427 -640 427 -640 480 -480 640 -640 427 -500 335 -335 500 -640 480 -640 391 -426 640 -431 431 -640 480 -640 463 -640 425 -640 427 -640 425 -500 332 -424 640 -500 375 -478 640 -640 480 -640 436 -640 480 -480 640 -640 596 -640 640 -640 424 -413 500 -640 477 -426 640 -426 640 -640 640 -640 427 -640 480 -640 428 -640 428 -640 457 -640 426 -640 640 -375 500 -640 473 -640 426 -640 427 -640 427 -640 478 -431 500 -640 429 -640 426 -640 480 -640 427 -427 640 -640 427 -640 427 -640 428 -640 480 -375 500 -640 480 -320 225 -640 480 -640 427 -640 480 -640 427 -426 640 -427 640 -640 404 -638 640 -640 429 -640 427 -640 480 -500 375 -431 640 -640 428 -512 640 -467 640 -427 640 -640 429 -427 640 -478 640 -640 480 -500 333 -640 480 -448 279 -640 427 -640 426 -640 427 -478 640 -640 513 -491 640 -480 640 -640 480 -640 480 -640 480 -640 480 -640 427 -480 640 -500 375 -481 640 -485 500 -640 438 -640 480 -640 480 -500 375 -640 425 -640 480 -640 480 -640 424 -640 427 -500 375 -640 424 -640 426 -640 480 -500 375 -640 428 -640 360 -640 480 -640 428 -640 427 -640 427 -427 640 -640 593 -424 640 -640 480 -640 425 -640 378 -640 480 -640 424 -640 480 -404 640 -500 345 -640 480 -640 480 -640 427 -500 370 -500 332 -500 333 -640 511 -427 640 -640 426 -433 640 -480 640 -640 428 -640 348 -500 375 -500 333 -640 441 -500 358 -640 426 -640 480 -426 640 -427 640 -640 491 -383 640 -333 500 -640 425 -640 482 -639 640 -500 298 -427 640 -375 500 -640 480 -640 480 -375 500 -640 427 -500 375 -640 480 -637 640 -640 640 -640 429 -480 640 -640 480 -640 471 -500 375 -640 417 -480 640 -427 640 -500 375 -640 486 -640 480 -428 640 -640 424 -640 480 -500 365 -500 375 -460 640 -640 426 -427 640 -640 480 -640 399 -640 480 -640 480 -612 612 -640 429 -640 426 -512 640 -640 429 -375 500 -414 640 -480 640 -640 480 -640 360 -640 480 -478 640 -360 640 -640 480 -427 640 -640 424 -375 500 -427 640 -640 375 -500 335 -640 427 -640 480 -640 512 -417 640 -640 427 -640 480 -640 427 -640 427 -640 480 -640 427 -640 424 -500 343 -640 428 -640 474 -640 480 -640 480 -640 418 -640 480 -640 640 -500 334 -433 640 -640 480 -640 480 -443 640 -640 640 -640 427 -640 425 -640 428 -640 383 -640 480 -427 640 -640 384 -480 640 -640 426 -640 429 -640 480 -640 480 -640 480 -640 426 -640 480 -640 428 -640 480 -640 480 -425 640 -640 480 -481 640 -640 427 -640 480 -427 640 -360 640 -640 480 -640 480 -500 375 -425 640 -640 480 -640 480 -640 523 -640 480 -512 640 -427 640 -640 640 -640 640 -640 427 -640 480 -480 640 -480 640 -480 640 -479 640 -480 640 -640 427 -640 427 -427 640 -640 427 -640 427 -640 480 -500 456 -640 429 -640 640 -640 424 -640 447 -375 500 -640 427 -640 458 -640 480 -640 428 -640 424 -640 360 -640 480 -640 361 -363 500 -640 480 -640 480 -640 356 -640 427 -631 640 -640 480 -480 640 -429 640 -640 480 -640 426 -640 427 -640 480 -640 480 -640 427 -479 640 -480 640 -640 427 -640 480 -500 330 -640 427 -515 640 -640 573 -638 640 -640 427 -640 480 -528 512 -640 480 -640 427 -424 640 -640 480 -480 640 -640 480 -640 480 -640 427 -640 428 -500 333 -500 375 -420 640 -640 427 -640 426 -640 480 -500 336 -500 333 -500 375 -640 480 -500 375 -480 640 -640 480 -640 480 -332 500 -640 557 -640 390 -640 480 -428 640 -640 441 -640 427 -640 480 -500 420 -640 427 -640 425 -640 480 -640 428 -640 480 -480 640 -640 456 -640 480 -432 499 -640 478 -425 640 -480 640 -640 568 -612 612 -640 480 -500 375 -640 428 -640 427 -427 640 -612 612 -640 428 -640 486 -640 426 -640 480 -640 427 -640 480 -480 640 -640 359 -457 640 -640 426 -640 428 -428 640 -640 427 -640 480 -375 500 -640 480 -640 640 -640 480 -500 500 -500 375 -500 281 -640 427 -427 640 -640 480 -640 480 -427 640 -640 640 -640 428 -427 640 -480 640 -500 374 -640 480 -500 380 -500 375 -427 640 -375 500 -640 427 -640 425 -612 612 -458 500 -375 500 -640 640 -600 411 -640 480 -427 640 -640 427 -375 500 -500 375 -333 500 -640 428 -640 479 -640 480 -640 426 -640 480 -640 386 -640 480 -640 457 -640 480 -640 428 -500 359 -500 500 -427 640 -640 480 -640 640 -501 640 -640 425 -480 640 -640 480 -640 480 -375 500 -640 458 -640 426 -640 480 -640 427 -640 480 -375 500 -480 640 -329 500 -500 373 -539 640 -640 424 -640 480 -640 476 -521 640 -640 480 -640 480 -640 480 -640 480 -640 480 -480 640 -640 427 -640 418 -640 480 -640 426 -640 480 -480 640 -480 640 -640 480 -427 640 -426 640 -612 612 -640 480 -375 500 -640 480 -640 479 -333 500 -640 480 -500 333 -640 425 -636 636 -640 427 -640 426 -427 640 -500 375 -640 480 -431 640 -640 393 -426 640 -612 612 -640 368 -375 500 -639 640 -640 429 -427 640 -640 370 -359 640 -640 427 -640 398 -500 436 -640 390 -640 469 -427 640 -640 427 -640 429 -500 353 -640 391 -640 429 -500 281 -512 640 -640 426 -612 612 -640 480 -480 640 -640 427 -456 500 -512 640 -427 640 -612 612 -427 640 -612 612 -640 426 -640 359 -427 640 -640 360 -500 375 -640 456 -640 427 -640 427 -640 427 -640 480 -640 241 -429 640 -343 500 -640 480 -640 480 -640 480 -640 427 -640 427 -334 500 -640 425 -640 480 -640 426 -640 480 -640 480 -640 478 -473 640 -640 480 -640 480 -445 500 -640 640 -500 375 -640 426 -453 640 -640 480 -500 281 -640 427 -640 484 -640 426 -640 480 -640 427 -424 640 -425 282 -640 521 -640 495 -640 480 -640 480 -333 500 -640 426 -640 480 -640 640 -640 480 -640 605 -640 400 -457 640 -640 480 -640 480 -500 375 -480 640 -640 480 -427 640 -640 424 -640 423 -640 480 -480 640 -500 160 -640 480 -640 427 -640 478 -640 320 -640 480 -375 500 -640 479 -640 480 -640 429 -640 480 -640 427 -427 640 -427 640 -480 640 -640 213 -640 640 -640 469 -640 457 -640 480 -640 610 -640 425 -500 334 -541 640 -640 480 -428 640 -500 375 -610 640 -640 425 -640 428 -612 612 -640 499 -640 427 -427 640 -375 500 -483 640 -640 480 -640 428 -640 423 -640 480 -640 480 -480 640 -468 640 -500 375 -640 427 -640 480 -240 320 -640 428 -480 640 -640 480 -425 640 -500 375 -500 333 -640 427 -400 300 -640 480 -640 426 -640 254 -375 500 -640 480 -640 427 -464 640 -480 640 -640 427 -640 640 -427 640 -383 640 -640 427 -430 640 -640 378 -640 427 -640 480 -640 444 -640 427 -500 333 -375 500 -640 427 -640 425 -640 428 -640 480 -640 428 -640 390 -500 375 -640 398 -640 480 -640 480 -640 480 -511 640 -640 480 -640 411 -640 360 -640 480 -500 333 -640 428 -640 360 -640 478 -640 480 -640 480 -640 389 -427 640 -376 500 -425 640 -500 375 -500 375 -500 333 -640 478 -640 480 -640 427 -640 480 -640 496 -640 466 -500 500 -640 428 -640 480 -640 480 -640 480 -480 640 -500 375 -640 480 -640 480 -480 640 -640 427 -640 480 -640 480 -640 427 -640 425 -640 640 -640 451 -640 427 -427 640 -500 375 -640 591 -640 536 -640 480 -640 425 -480 640 -480 640 -426 640 -640 427 -427 640 -478 640 -480 640 -640 427 -500 375 -640 480 -640 428 -640 424 -500 334 -500 306 -427 640 -612 612 -333 500 -500 400 -640 427 -480 640 -454 640 -640 436 -480 640 -640 480 -333 500 -640 480 -640 427 -640 427 -427 640 -640 480 -480 640 -427 640 -500 332 -640 415 -640 427 -640 426 -640 479 -428 640 -640 459 -640 480 -640 427 -640 480 -640 426 -640 480 -640 480 -500 375 -640 427 -640 428 -640 480 -640 502 -640 311 -495 640 -640 480 -640 480 -640 358 -640 493 -320 240 -640 406 -640 427 -640 480 -640 478 -640 480 -640 480 -640 501 -640 427 -640 481 -640 426 -640 480 -420 640 -640 480 -480 640 -640 428 -640 480 -459 344 -640 427 -640 449 -640 427 -640 425 -640 480 -480 640 -640 226 -480 640 -640 503 -640 427 -640 425 -639 640 -640 425 -640 427 -640 480 -500 375 -456 640 -500 375 -612 612 -640 472 -612 612 -640 512 -640 426 -640 458 -500 375 -480 640 -427 640 -640 480 -500 332 -640 427 -427 640 -640 439 -640 427 -640 480 -480 640 -640 480 -638 640 -480 640 -640 426 -612 612 -433 640 -640 340 -640 427 -416 640 -640 427 -640 480 -640 480 -640 480 -375 500 -585 640 -480 640 -640 480 -640 427 -464 640 -640 427 -640 640 -640 360 -423 640 -640 427 -640 383 -612 612 -640 427 -640 480 -640 427 -500 331 -524 640 -333 500 -640 480 -640 238 -640 428 -640 427 -500 374 -640 427 -425 640 -427 640 -640 640 -640 427 -478 640 -500 375 -640 480 -499 640 -640 427 -640 640 -640 480 -640 315 -640 480 -500 335 -640 614 -513 640 -640 480 -640 348 -640 480 -500 375 -640 480 -640 473 -500 369 -437 640 -640 360 -640 427 -640 480 -640 427 -480 640 -500 333 -640 429 -640 480 -480 640 -640 480 -640 480 -640 428 -640 410 -375 500 -428 640 -500 334 -640 458 -612 612 -640 426 -300 400 -480 640 -429 640 -640 427 -640 424 -288 307 -640 480 -640 424 -640 426 -500 334 -500 375 -389 500 -640 428 -640 358 -640 426 -480 640 -480 640 -428 640 -375 500 -640 427 -640 427 -640 427 -500 375 -640 534 -640 425 -640 359 -640 427 -409 500 -640 304 -427 640 -640 480 -640 283 -640 427 -480 640 -640 512 -612 612 -640 411 -640 357 -640 425 -640 348 -640 427 -640 427 -640 424 -640 437 -480 640 -480 640 -480 640 -640 480 -640 428 -640 480 -500 333 -640 427 -640 427 -640 427 -640 480 -640 427 -500 333 -427 640 -498 500 -640 480 -640 427 -480 640 -500 384 -427 640 -640 427 -400 500 -640 640 -640 424 -640 463 -300 429 -612 612 -640 477 -640 427 -600 399 -640 480 -640 480 -640 427 -640 426 -640 428 -425 640 -427 640 -640 478 -640 479 -640 427 -640 491 -640 449 -480 640 -480 640 -640 513 -640 427 -640 427 -640 428 -612 612 -375 500 -640 447 -640 449 -640 427 -640 427 -640 480 -640 427 -640 480 -480 640 -640 428 -640 426 -427 640 -640 365 -500 375 -640 480 -640 424 -427 640 -640 426 -640 426 -640 428 -640 426 -478 640 -640 480 -408 640 -640 427 -500 310 -480 640 -640 426 -640 480 -630 640 -427 640 -640 428 -640 427 -640 492 -640 499 -480 640 -640 427 -500 333 -480 640 -427 640 -640 389 -640 480 -425 640 -640 480 -640 436 -640 427 -640 449 -478 640 -480 640 -426 640 -640 434 -640 427 -480 640 -640 640 -500 375 -640 422 -480 640 -375 500 -640 426 -640 480 -640 425 -427 640 -640 480 -640 480 -640 423 -640 640 -640 383 -640 424 -640 480 -480 640 -612 612 -640 480 -640 480 -640 480 -640 427 -480 640 -555 640 -640 480 -375 500 -640 360 -640 427 -640 480 -640 425 -640 427 -640 480 -640 427 -640 427 -500 375 -480 640 -420 640 -500 375 -330 500 -612 612 -612 612 -640 361 -500 333 -640 512 -640 480 -500 375 -640 425 -640 480 -612 612 -640 428 -640 427 -427 640 -427 640 -640 456 -640 426 -640 291 -375 500 -640 427 -640 454 -640 427 -640 426 -612 612 -430 640 -500 333 -640 482 -640 480 -333 500 -426 640 -640 425 -640 427 -640 427 -640 480 -640 478 -427 640 -640 427 -491 640 -640 425 -640 427 -640 480 -500 375 -640 480 -498 640 -640 480 -640 427 -640 480 -488 640 -427 640 -500 332 -480 640 -480 640 -612 612 -640 480 -640 420 -375 500 -640 369 -640 424 -640 480 -426 640 -480 640 -640 480 -640 295 -500 347 -480 640 -640 359 -640 640 -640 480 -640 480 -640 428 -640 425 -640 479 -640 427 -640 429 -640 360 -612 612 -500 333 -640 480 -500 375 -426 640 -598 640 -640 480 -333 500 -640 426 -388 640 -426 640 -640 427 -640 478 -500 351 -640 426 -480 640 -640 430 -500 375 -640 484 -640 423 -640 480 -500 375 -640 480 -500 375 -640 426 -640 416 -500 333 -375 500 -500 361 -640 426 -427 640 -640 427 -640 427 -500 375 -640 424 -612 612 -393 640 -640 427 -375 500 -640 480 -469 640 -640 533 -640 511 -640 426 -457 640 -480 640 -640 387 -500 375 -640 427 -640 482 -640 427 -640 480 -480 640 -375 500 -424 640 -480 640 -426 640 -640 480 -640 425 -640 429 -640 546 -640 480 -468 640 -640 430 -458 640 -640 426 -640 401 -640 427 -640 480 -426 640 -640 427 -640 426 -640 480 -480 640 -640 427 -640 426 -438 640 -640 480 -428 500 -640 480 -640 480 -640 480 -640 480 -640 640 -480 640 -640 400 -500 333 -640 426 -500 375 -427 640 -427 640 -640 480 -640 482 -612 612 -640 480 -640 412 -343 500 -426 640 -425 640 -640 480 -640 427 -640 366 -640 480 -452 640 -333 500 -640 427 -612 612 -640 480 -512 640 -532 640 -640 457 -640 428 -640 428 -640 424 -500 375 -640 427 -429 640 -640 427 -640 427 -640 480 -640 480 -332 500 -640 480 -640 427 -640 209 -480 640 -480 640 -640 427 -640 427 -640 426 -640 480 -640 428 -320 480 -640 415 -426 640 -640 480 -400 640 -478 640 -640 479 -640 480 -640 427 -612 612 -375 500 -640 429 -427 640 -500 309 -500 360 -640 426 -500 375 -612 612 -335 500 -640 480 -640 480 -640 426 -640 480 -640 480 -336 448 -308 500 -330 500 -640 480 -640 424 -640 359 -640 453 -640 416 -273 346 -612 612 -375 500 -640 480 -640 480 -640 425 -300 432 -640 480 -640 428 -500 375 -480 640 -640 480 -500 375 -640 480 -640 458 -480 640 -426 640 -480 640 -640 480 -311 500 -478 640 -640 426 -640 480 -640 480 -480 640 -640 480 -500 375 -640 428 -640 480 -500 332 -640 426 -640 425 -414 500 -500 398 -640 480 -640 427 -640 427 -425 640 -640 432 -640 425 -640 384 -640 427 -640 289 -640 545 -640 480 -500 333 -429 640 -500 500 -640 425 -375 500 -640 480 -640 463 -640 426 -640 426 -640 433 -375 500 -500 375 -612 612 -640 480 -640 480 -640 436 -480 640 -478 640 -500 359 -640 427 -640 426 -478 640 -640 480 -447 640 -365 328 -427 640 -500 274 -480 640 -480 640 -640 425 -500 375 -640 480 -640 480 -438 640 -640 426 -640 436 -480 640 -484 500 -480 640 -640 415 -640 424 -640 480 -640 426 -424 640 -640 480 -456 640 -640 480 -640 480 -500 367 -377 500 -640 429 -480 640 -640 428 -640 480 -427 640 -500 367 -640 360 -333 500 -422 640 -480 640 -640 480 -640 425 -640 425 -640 640 -640 457 -640 427 -640 427 -480 640 -423 640 -454 640 -640 640 -425 640 -500 397 -427 640 -375 500 -500 333 -453 640 -480 640 -640 640 -640 480 -500 375 -480 640 -640 428 -500 375 -333 500 -640 480 -640 434 -427 640 -640 483 -480 640 -640 248 -640 427 -640 426 -640 480 -500 323 -640 480 -640 361 -640 428 -500 375 -640 426 -500 373 -640 427 -512 640 -640 480 -640 480 -480 640 -640 431 -640 404 -640 428 -480 640 -640 381 -428 640 -640 480 -480 640 -612 612 -640 428 -640 394 -640 427 -376 640 -640 426 -640 427 -425 640 -361 640 -427 640 -640 480 -507 640 -612 612 -640 480 -640 480 -500 333 -640 426 -640 450 -426 640 -425 640 -640 480 -640 480 -612 612 -640 427 -480 640 -612 612 -640 480 -640 480 -640 640 -439 640 -640 480 -640 426 -640 480 -640 480 -640 480 -480 640 -640 588 -640 426 -640 480 -480 640 -640 480 -640 480 -352 230 -428 640 -640 480 -640 423 -427 640 -640 512 -640 426 -406 640 -640 480 -640 487 -640 480 -299 500 -640 480 -500 375 -640 480 -640 427 -500 375 -640 480 -640 427 -640 426 -640 428 -640 420 -640 480 -428 640 -427 640 -608 640 -640 423 -480 640 -428 640 -640 478 -640 480 -640 640 -500 335 -500 322 -640 427 -375 500 -640 480 -640 478 -427 640 -640 480 -640 480 -640 528 -438 640 -640 427 -429 640 -640 480 -640 428 -375 500 -480 640 -451 640 -640 456 -640 399 -500 332 -640 427 -427 640 -640 427 -500 375 -640 427 -640 480 -640 427 -640 480 -640 480 -640 480 -640 480 -498 640 -640 427 -640 480 -640 480 -640 480 -640 480 -640 480 -500 375 -640 480 -612 612 -640 427 -640 427 -640 480 -640 361 -640 479 -640 480 -640 444 -640 427 -640 428 -450 500 -640 428 -500 375 -501 640 -500 375 -640 593 -640 427 -640 427 -640 547 -640 480 -612 612 -640 359 -640 480 -640 512 -640 421 -640 437 -500 375 -480 640 -426 640 -640 427 -480 640 -640 427 -612 612 -640 427 -640 480 -640 429 -500 500 -426 640 -640 426 -640 429 -500 375 -640 480 -640 640 -640 406 -640 480 -640 427 -480 640 -640 480 -500 375 -640 444 -640 429 -640 480 -640 400 -640 605 -640 427 -640 480 -335 500 -640 359 -640 338 -640 614 -640 480 -640 390 -487 640 -640 445 -640 427 -640 411 -640 640 -640 427 -640 428 -640 427 -640 426 -640 427 -480 640 -534 640 -480 640 -640 480 -500 333 -500 333 -480 640 -156 640 -640 480 -480 640 -640 640 -640 480 -640 512 -366 604 -375 500 -640 418 -640 419 -640 382 -427 640 -640 480 -640 424 -640 360 -640 480 -640 480 -640 425 -640 480 -480 640 -480 640 -640 480 -528 640 -425 640 -640 424 -375 500 -500 375 -320 240 -480 640 -640 427 -640 427 -332 500 -600 393 -425 640 -480 640 -640 406 -640 423 -640 428 -640 425 -499 640 -469 500 -640 359 -640 626 -640 480 -612 612 -640 480 -640 351 -428 640 -640 305 -480 640 -640 640 -480 640 -640 480 -473 640 -480 640 -640 480 -640 539 -640 427 -640 480 -640 424 -500 320 -480 640 -640 426 -500 333 -427 640 -640 480 -640 428 -330 500 -428 640 -640 480 -640 429 -480 640 -640 427 -640 427 -640 480 -640 480 -640 427 -640 426 -640 427 -640 480 -640 466 -504 640 -640 480 -480 640 -640 426 -640 480 -640 427 -640 480 -480 640 -489 640 -640 426 -640 478 -640 512 -640 480 -246 640 -640 424 -640 480 -640 480 -640 480 -430 640 -640 427 -427 640 -640 434 -640 318 -425 640 -640 480 -640 429 -375 500 -333 500 -640 425 -640 427 -480 640 -640 480 -640 480 -640 216 -640 480 -640 443 -427 640 -480 640 -480 640 -640 480 -640 480 -640 430 -480 640 -500 375 -640 495 -640 427 -640 425 -640 488 -624 640 -640 464 -426 640 -640 480 -640 426 -640 480 -480 640 -640 428 -493 640 -640 428 -612 612 -640 427 -444 640 -640 363 -640 427 -420 640 -480 640 -640 428 -480 640 -500 375 -427 640 -375 500 -640 480 -640 427 -640 480 -640 480 -640 480 -640 433 -640 426 -640 484 -640 480 -425 640 -640 428 -640 436 -640 480 -640 428 -640 480 -640 427 -640 480 -640 427 -427 640 -640 480 -640 480 -500 376 -428 640 -480 640 -640 427 -640 480 -640 480 -640 426 -500 333 -640 445 -638 640 -478 640 -640 427 -640 480 -640 480 -435 640 -640 429 -640 480 -640 427 -438 640 -640 488 -500 400 -640 409 -640 427 -479 640 -500 375 -640 480 -640 448 -640 480 -640 480 -640 480 -640 427 -640 292 -480 640 -480 640 -640 426 -500 332 -480 640 -427 640 -640 480 -480 640 -500 375 -640 480 -433 500 -640 480 -640 480 -500 246 -640 427 -640 427 -456 500 -480 640 -640 480 -640 429 -640 427 -480 640 -640 426 -424 640 -375 500 -500 333 -640 480 -427 640 -640 512 -640 480 -361 500 -375 500 -425 640 -640 425 -612 612 -640 480 -640 425 -640 426 -640 427 -359 500 -640 480 -427 640 -640 428 -427 640 -640 480 -566 640 -480 640 -640 640 -500 375 -500 375 -640 480 -375 500 -640 246 -640 480 -640 480 -427 640 -640 427 -640 427 -640 428 -612 612 -640 429 -640 432 -480 640 -500 378 -640 426 -500 375 -500 333 -640 427 -500 375 -480 640 -640 424 -500 332 -640 481 -640 427 -640 427 -640 456 -640 480 -640 480 -640 434 -640 427 -426 640 -480 640 -640 480 -640 512 -640 640 -640 596 -500 259 -640 428 -640 424 -478 640 -612 612 -504 640 -640 426 -640 428 -640 480 -640 480 -640 480 -640 480 -640 427 -459 640 -640 480 -480 640 -640 480 -427 640 -480 640 -640 480 -640 428 -420 640 -640 480 -640 437 -640 426 -500 333 -640 427 -500 375 -640 427 -640 480 -408 640 -640 428 -640 427 -640 426 -640 480 -640 480 -480 640 -324 500 -640 396 -640 428 -640 480 -640 384 -640 480 -640 480 -640 427 -640 427 -640 472 -640 480 -640 427 -612 612 -640 436 -480 640 -480 640 -640 586 -480 640 -425 640 -640 360 -640 480 -640 480 -640 281 -333 500 -640 480 -500 334 -640 429 -500 333 -640 454 -640 425 -640 480 -640 513 -640 479 -640 583 -640 512 -640 480 -640 360 -640 427 -640 334 -480 640 -640 480 -640 365 -447 640 -500 400 -500 332 -480 640 -426 640 -640 426 -480 640 -640 428 -427 640 -640 419 -318 640 -640 480 -426 640 -640 457 -480 640 -640 427 -640 480 -640 480 -640 428 -640 335 -640 429 -640 457 -640 391 -640 480 -640 428 -640 427 -640 426 -640 521 -427 640 -568 320 -640 427 -640 427 -640 513 -640 480 -500 272 -640 419 -640 480 -640 480 -375 500 -640 425 -640 480 -640 428 -500 375 -427 640 -640 480 -600 448 -640 480 -640 426 -500 375 -640 480 -640 480 -426 640 -640 424 -640 427 -500 375 -640 427 -512 640 -640 480 -640 437 -640 428 -480 640 -640 552 -639 640 -424 640 -640 378 -640 640 -640 417 -480 640 -640 480 -480 640 -640 424 -640 425 -640 427 -640 432 -640 427 -438 640 -500 500 -640 426 -640 441 -640 427 -640 427 -427 640 -640 427 -480 640 -640 359 -612 612 -500 375 -500 332 -612 612 -640 425 -500 375 -640 318 -640 428 -640 427 -500 457 -500 333 -640 480 -360 640 -640 426 -640 427 -640 427 -478 640 -413 640 -640 555 -640 357 -480 640 -612 612 -480 640 -640 427 -500 375 -427 640 -425 640 -640 462 -535 298 -640 427 -640 480 -640 428 -640 480 -427 640 -373 336 -640 480 -640 480 -640 426 -640 427 -640 427 -640 480 -640 427 -500 333 -640 465 -500 396 -500 333 -640 427 -640 426 -427 640 -640 480 -640 428 -480 640 -640 480 -500 375 -640 427 -500 333 -640 282 -640 427 -640 389 -640 544 -640 640 -640 427 -480 640 -500 375 -640 428 -640 459 -299 640 -640 411 -640 610 -612 612 -640 361 -426 640 -640 400 -640 640 -640 426 -640 480 -640 426 -640 480 -500 375 -427 640 -431 640 -640 640 -640 480 -427 640 -480 640 -640 427 -640 376 -640 480 -640 430 -500 335 -640 426 -640 427 -640 360 -338 500 -428 640 -640 429 -426 640 -427 640 -334 500 -427 640 -366 640 -640 427 -640 424 -640 480 -480 640 -640 508 -640 426 -640 457 -640 479 -500 396 -480 640 -640 424 -640 480 -640 470 -640 468 -427 640 -640 427 -640 481 -500 375 -427 640 -640 427 -640 480 -640 361 -640 426 -640 412 -640 480 -640 480 -640 515 -640 413 -640 480 -500 376 -640 360 -640 431 -357 500 -640 478 -478 640 -500 333 -640 428 -457 640 -500 500 -640 428 -640 428 -640 427 -640 427 -500 375 -640 480 -480 640 -640 480 -640 480 -640 480 -640 427 -427 640 -480 640 -494 640 -640 480 -640 480 -640 429 -640 427 -640 425 -640 480 -500 333 -640 480 -427 640 -612 612 -640 480 -640 480 -640 480 -448 336 -640 480 -640 393 -428 640 -640 480 -640 427 -500 404 -640 480 -640 427 -640 427 -640 427 -640 426 -640 428 -640 480 -640 605 -640 480 -640 427 -500 358 -640 480 -480 640 -640 480 -640 319 -500 375 -640 421 -640 427 -640 424 -640 480 -500 375 -424 640 -640 480 -640 480 -640 480 -640 480 -640 604 -640 480 -640 413 -640 427 -375 500 -640 429 -640 480 -640 428 -640 480 -640 427 -427 640 -628 640 -640 480 -500 335 -640 425 -640 427 -612 612 -640 425 -640 360 -320 240 -640 427 -500 377 -612 612 -427 640 -640 480 -640 489 -640 427 -640 424 -640 479 -640 427 -640 480 -478 640 -425 640 -640 424 -500 278 -427 640 -360 640 -640 411 -640 427 -640 480 -640 480 -640 425 -640 480 -640 368 -500 375 -640 480 -640 373 -443 640 -438 640 -640 480 -640 427 -480 640 -375 500 -500 393 -640 480 -640 316 -427 640 -640 428 -640 360 -480 640 -480 640 -640 425 -640 402 -640 480 -640 421 -500 375 -640 348 -427 640 -640 426 -640 427 -640 480 -444 640 -640 480 -640 445 -640 360 -640 480 -477 640 -640 418 -640 369 -428 640 -640 360 -500 375 -640 426 -500 375 -640 480 -640 427 -640 424 -640 438 -640 480 -640 480 -640 458 -359 640 -640 428 -640 427 -640 427 -640 462 -640 427 -640 480 -640 428 -640 480 -640 427 -500 333 -427 640 -424 640 -640 478 -500 375 -640 360 -480 640 -612 612 -640 426 -333 500 -640 640 -640 480 -640 428 -425 640 -640 428 -640 427 -640 464 -480 640 -640 427 -640 480 -640 639 -426 320 -640 426 -478 640 -640 420 -640 640 -640 427 -640 617 -500 375 -640 453 -427 640 -640 425 -640 457 -500 309 -500 375 -640 512 -480 640 -640 480 -426 640 -640 427 -640 480 -640 427 -500 500 -640 509 -640 428 -640 427 -480 640 -541 640 -640 423 -478 640 -640 427 -500 375 -640 427 -428 640 -500 333 -640 428 -640 426 -640 428 -640 480 -640 427 -640 480 -640 480 -428 640 -375 500 -500 375 -556 640 -640 463 -640 480 -500 375 -640 436 -640 427 -640 427 -444 640 -640 425 -640 480 -640 406 -480 640 -612 612 -640 480 -480 640 -640 428 -640 426 -500 333 -640 425 -640 427 -500 375 -640 427 -481 640 -640 427 -500 375 -640 425 -640 425 -640 480 -640 474 -640 480 -640 480 -640 428 -640 427 -640 427 -640 445 -640 480 -375 500 -640 480 -640 480 -466 640 -272 307 -333 500 -640 480 -640 427 -640 424 -640 480 -640 480 -481 640 -640 640 -640 427 -612 612 -640 631 -640 480 -640 427 -428 640 -640 214 -640 418 -640 427 -640 480 -612 612 -473 640 -640 361 -640 269 -375 500 -407 640 -428 640 -640 426 -426 640 -640 480 -640 480 -640 427 -480 640 -640 427 -332 500 -640 425 -640 480 -640 424 -640 427 -640 480 -375 500 -640 427 -500 375 -427 640 -640 445 -640 481 -424 640 -500 375 -500 333 -640 436 -640 480 -480 640 -640 480 -500 366 -375 500 -640 427 -640 381 -640 377 -640 426 -640 427 -640 453 -640 361 -640 426 -501 640 -640 427 -396 640 -612 612 -640 427 -500 331 -640 426 -640 429 -500 375 -640 428 -640 640 -640 480 -640 363 -640 480 -640 480 -426 640 -640 480 -640 427 -640 424 -500 375 -640 380 -640 480 -640 427 -640 425 -640 248 -640 480 -480 640 -480 640 -500 408 -480 640 -500 375 -640 381 -640 480 -426 640 -640 428 -640 426 -640 480 -480 640 -640 480 -640 427 -640 396 -640 480 -640 480 -640 259 -500 375 -580 640 -640 480 -596 640 -427 640 -640 480 -640 411 -333 500 -640 427 -500 375 -640 426 -640 480 -640 480 -640 427 -640 480 -612 612 -640 484 -640 360 -457 640 -500 341 -640 496 -425 640 -640 480 -640 480 -430 640 -500 424 -480 640 -640 427 -640 480 -505 640 -640 480 -512 640 -354 500 -640 427 -500 375 -640 640 -500 375 -640 426 -640 427 -427 640 -333 500 -640 457 -640 480 -427 640 -500 309 -640 427 -427 640 -640 480 -640 359 -640 512 -640 424 -640 480 -640 428 -333 500 -640 480 -480 640 -500 378 -640 427 -426 640 -500 375 -240 320 -240 320 -481 640 -457 640 -640 427 -640 427 -612 612 -640 425 -640 611 -478 640 -640 457 -501 640 -640 427 -640 484 -640 480 -427 640 -500 375 -640 480 -480 640 -480 640 -640 399 -427 640 -640 425 -640 427 -640 480 -640 318 -640 480 -500 375 -640 480 -640 480 -640 480 -640 428 -640 564 -640 426 -640 429 -427 640 -640 457 -640 426 -500 333 -640 480 -640 480 -640 488 -640 480 -500 313 -640 427 -640 480 -640 480 -640 427 -640 480 -500 334 -640 480 -640 471 -640 360 -640 491 -640 478 -640 427 -640 513 -465 640 -506 640 -500 333 -500 490 -480 640 -640 426 -640 369 -500 357 -640 495 -640 428 -640 425 -640 424 -640 460 -513 640 -640 428 -640 480 -640 480 -640 427 -333 500 -640 480 -640 428 -640 466 -640 486 -480 640 -480 640 -500 286 -427 640 -640 348 -403 500 -640 421 -640 480 -640 483 -640 579 -640 427 -640 380 -425 640 -640 480 -640 480 -640 482 -640 436 -640 427 -640 427 -640 478 -427 640 -640 427 -500 351 -640 480 -640 426 -640 426 -640 426 -640 480 -640 480 -640 426 -640 480 -640 427 -640 480 -640 480 -640 480 -640 426 -640 427 -500 333 -640 491 -640 424 -640 480 -427 640 -640 427 -640 480 -640 480 -640 427 -640 480 -640 427 -640 480 -427 640 -640 480 -640 480 -426 640 -640 427 -500 375 -426 640 -480 640 -428 640 -500 500 -640 480 -640 479 -486 640 -640 427 -640 480 -640 480 -640 428 -640 427 -640 426 -640 480 -640 418 -640 480 -640 427 -427 640 -640 480 -375 500 -640 480 -640 427 -640 427 -429 640 -500 375 -640 423 -595 640 -640 360 -640 480 -480 640 -640 473 -427 640 -640 427 -480 640 -480 640 -640 480 -426 640 -640 413 -612 612 -640 480 -480 640 -640 480 -480 640 -500 375 -640 427 -480 640 -640 424 -500 375 -504 351 -640 480 -640 427 -500 375 -640 427 -640 476 -640 426 -640 531 -640 427 -640 480 -640 428 -640 480 -500 354 -480 640 -480 640 -500 375 -640 581 -640 480 -640 404 -500 399 -640 253 -500 333 -640 428 -640 427 -500 333 -640 427 -640 427 -640 640 -640 427 -640 425 -640 427 -640 426 -640 428 -640 480 -640 426 -500 321 -640 457 -427 640 -640 433 -640 425 -640 424 -480 640 -640 480 -640 463 -500 361 -426 640 -640 458 -640 480 -640 480 -336 500 -640 427 -640 480 -612 612 -640 428 -500 375 -640 480 -480 640 -640 427 -640 421 -640 334 -640 480 -640 640 -500 334 -640 424 -640 427 -640 501 -640 480 -640 574 -640 425 -480 640 -500 375 -500 460 -427 640 -500 332 -375 500 -640 640 -640 480 -500 375 -427 640 -640 364 -640 480 -640 428 -640 371 -500 375 -500 375 -640 427 -640 427 -640 480 -640 480 -480 640 -375 500 -640 478 -500 358 -640 429 -640 480 -640 419 -640 425 -494 640 -480 640 -640 448 -640 565 -640 480 -640 360 -427 640 -640 480 -640 480 -640 562 -640 480 -640 428 -640 480 -640 480 -495 640 -480 640 -500 375 -375 500 -482 640 -640 389 -425 640 -640 480 -428 640 -640 480 -428 640 -640 224 -640 435 -640 428 -640 480 -640 427 -500 334 -640 427 -640 427 -427 640 -640 480 -640 426 -640 427 -453 640 -640 481 -500 334 -500 375 -500 375 -426 640 -480 640 -426 640 -457 640 -383 640 -640 480 -612 612 -333 500 -427 640 -640 489 -612 612 -640 413 -640 426 -640 427 -602 640 -640 427 -640 480 -640 480 -640 640 -640 480 -640 427 -640 427 -640 425 -640 427 -612 612 -400 500 -640 427 -640 480 -640 481 -640 480 -640 425 -640 586 -640 428 -640 579 -640 427 -640 425 -427 640 -500 334 -640 428 -375 500 -640 478 -640 480 -640 427 -640 480 -640 480 -640 426 -640 359 -478 640 -640 480 -640 442 -333 500 -640 424 -640 428 -500 332 -640 508 -500 375 -640 427 -640 480 -640 427 -640 475 -425 640 -640 427 -640 436 -460 640 -640 427 -640 360 -640 480 -427 640 -458 640 -640 426 -480 640 -375 500 -640 427 -640 384 -500 333 -640 427 -640 428 -500 333 -640 362 -640 425 -426 640 -640 429 -500 332 -480 640 -640 456 -640 411 -426 640 -640 475 -640 480 -500 333 -500 378 -375 500 -640 480 -640 480 -640 426 -640 444 -640 640 -640 478 -640 426 -640 480 -640 426 -640 480 -425 640 -640 464 -640 478 -480 640 -640 426 -640 426 -640 318 -333 500 -640 328 -500 375 -375 500 -500 331 -640 427 -640 427 -640 480 -612 612 -436 640 -640 480 -640 480 -640 427 -427 640 -375 500 -512 640 -500 350 -640 480 -640 593 -640 425 -375 500 -334 500 -640 480 -640 427 -640 480 -480 640 -480 640 -387 640 -640 427 -640 480 -640 480 -640 427 -612 612 -640 480 -640 458 -500 333 -500 345 -640 408 -640 480 -640 480 -500 375 -457 640 -500 375 -640 364 -640 480 -427 640 -640 426 -333 500 -640 480 -640 480 -458 640 -612 640 -480 640 -640 427 -450 338 -640 428 -640 480 -480 640 -428 640 -640 468 -640 558 -480 640 -612 612 -640 480 -530 640 -640 480 -640 396 -612 612 -640 427 -480 640 -640 423 -640 480 -480 640 -640 529 -500 380 -483 500 -640 427 -500 375 -480 640 -427 640 -480 640 -424 640 -640 427 -640 426 -640 424 -640 480 -640 427 -640 428 -427 640 -640 427 -612 612 -427 640 -640 480 -640 427 -480 640 -640 427 -640 480 -426 640 -427 640 -375 500 -500 376 -427 640 -480 640 -640 427 -428 640 -500 375 -640 480 -640 480 -640 480 -359 640 -640 480 -640 480 -612 612 -535 640 -400 229 -640 480 -640 480 -640 480 -640 427 -612 612 -375 500 -640 480 -336 500 -640 427 -640 480 -640 414 -640 426 -375 500 -640 427 -640 427 -640 480 -428 640 -640 480 -480 640 -640 517 -640 480 -640 480 -500 335 -640 490 -500 333 -352 288 -480 640 -640 425 -640 485 -640 427 -640 480 -640 427 -486 640 -640 427 -640 427 -320 216 -500 375 -445 600 -500 334 -500 339 -612 612 -640 428 -480 640 -640 427 -500 375 -306 640 -640 423 -640 427 -424 640 -640 427 -640 480 -500 333 -612 612 -500 333 -640 360 -640 480 -400 400 -424 640 -640 480 -640 416 -612 612 -640 480 -640 480 -640 479 -640 480 -640 480 -640 426 -640 429 -640 424 -640 427 -640 480 -640 480 -640 480 -612 612 -496 640 -640 480 -426 640 -640 425 -640 480 -640 425 -640 411 -640 640 -360 640 -480 640 -640 480 -640 480 -640 427 -362 640 -640 480 -640 426 -640 426 -500 333 -640 439 -640 511 -640 455 -640 516 -640 427 -612 612 -640 366 -480 640 -640 480 -640 428 -500 375 -640 427 -500 375 -480 640 -640 480 -612 612 -640 451 -640 480 -640 480 -500 375 -640 426 -640 427 -640 480 -640 427 -640 428 -480 640 -385 640 -480 640 -640 480 -640 480 -640 480 -640 480 -640 425 -612 612 -640 640 -640 480 -500 313 -640 480 -640 383 -612 612 -640 479 -640 480 -640 480 -640 457 -500 334 -450 290 -371 640 -640 480 -599 640 -640 453 -640 427 -480 640 -500 375 -640 426 -640 427 -640 477 -640 480 -640 427 -426 640 -640 480 -640 512 -500 375 -640 445 -427 640 -500 401 -480 640 -640 428 -640 480 -640 480 -640 360 -640 454 -640 516 -640 480 -640 479 -640 480 -640 640 -500 400 -640 480 -480 640 -640 480 -640 360 -640 425 -640 426 -359 640 -500 439 -480 640 -640 480 -640 480 -519 640 -491 640 -480 640 -640 479 -640 424 -640 427 -640 360 -640 402 -426 640 -640 480 -481 640 -426 640 -640 425 -427 640 -612 612 -640 480 -640 427 -426 640 -481 640 -480 640 -640 384 -640 426 -612 612 -640 480 -640 361 -640 640 -359 640 -640 480 -640 427 -640 427 -640 472 -500 375 -640 427 -426 640 -640 480 -640 480 -640 480 -640 426 -612 612 -640 428 -640 422 -640 427 -640 427 -640 427 -640 425 -640 428 -640 480 -388 450 -640 427 -640 480 -640 360 -640 427 -500 375 -640 425 -640 426 -640 481 -427 640 -640 484 -640 443 -640 425 -424 640 -478 640 -427 640 -640 438 -500 375 -640 480 -500 375 -500 358 -481 640 -640 428 -480 640 -480 640 -640 480 -425 640 -640 480 -640 329 -640 427 -640 426 -640 480 -640 480 -640 427 -640 483 -640 480 -428 640 -640 425 -500 375 -614 640 -500 334 -640 427 -375 500 -640 640 -500 400 -640 480 -640 447 -640 428 -640 427 -332 500 -480 640 -500 333 -640 520 -500 333 -467 350 -427 640 -640 427 -640 427 -375 500 -640 427 -425 640 -640 426 -640 512 -640 427 -640 429 -640 429 -500 375 -428 640 -500 333 -640 428 -640 426 -640 480 -500 333 -640 480 -478 640 -640 380 -640 481 -640 402 -640 427 -500 375 -500 332 -640 372 -640 318 -640 480 -640 427 -640 478 -640 335 -500 375 -640 426 -640 480 -640 640 -640 480 -480 640 -640 480 -640 480 -375 500 -324 500 -640 432 -640 425 -640 480 -640 360 -640 427 -640 480 -640 428 -427 640 -500 400 -640 480 -640 480 -640 480 -375 500 -621 480 -640 386 -500 500 -640 426 -640 480 -640 480 -500 375 -640 480 -640 398 -640 427 -500 375 -640 494 -480 640 -424 640 -640 480 -640 366 -640 480 -446 640 -640 427 -500 415 -640 427 -331 500 -612 612 -640 427 -640 480 -640 511 -427 640 -640 428 -600 400 -640 424 -640 480 -640 480 -640 427 -640 468 -640 480 -640 427 -640 480 -640 359 -640 418 -640 427 -375 500 -640 480 -640 427 -500 375 -480 640 -640 480 -478 640 -612 612 -640 480 -640 431 -640 427 -480 640 -640 428 -480 640 -464 640 -480 640 -612 612 -500 375 -640 428 -640 480 -640 503 -500 333 -428 640 -640 480 -640 281 -640 428 -422 640 -352 640 -640 480 -640 427 -500 339 -640 432 -640 427 -640 427 -427 640 -640 424 -332 500 -640 427 -612 612 -640 361 -640 427 -480 640 -640 541 -640 434 -640 428 -480 640 -640 480 -640 480 -640 402 -640 480 -640 428 -501 640 -427 640 -426 640 -640 426 -640 426 -444 640 -480 640 -640 480 -612 612 -640 429 -640 445 -640 364 -640 427 -640 426 -640 425 -640 360 -428 640 -500 375 -640 523 -640 480 -640 519 -640 480 -640 426 -640 426 -640 428 -640 480 -480 640 -425 640 -640 640 -640 480 -612 612 -640 480 -640 427 -640 480 -640 427 -427 640 -640 427 -640 427 -375 500 -640 480 -640 427 -404 500 -640 415 -640 480 -640 480 -427 640 -640 428 -500 375 -480 640 -512 640 -640 480 -427 640 -640 366 -481 640 -500 375 -640 480 -640 426 -640 432 -640 480 -640 427 -640 427 -640 426 -640 427 -640 480 -612 612 -640 480 -640 480 -500 375 -640 427 -640 435 -533 640 -480 640 -427 640 -640 427 -640 427 -640 426 -640 426 -640 480 -640 480 -500 375 -640 640 -640 427 -640 482 -640 427 -640 480 -600 450 -427 640 -640 424 -426 640 -640 480 -640 425 -640 480 -463 640 -640 457 -640 400 -640 427 -640 517 -640 426 -640 425 -640 427 -640 480 -427 640 -426 640 -480 640 -640 427 -640 480 -640 512 -640 428 -427 640 -640 467 -426 640 -640 424 -640 640 -426 640 -640 444 -640 427 -640 427 -640 375 -640 428 -480 640 -640 426 -640 500 -640 427 -640 427 -427 640 -640 361 -640 480 -480 640 -500 328 -640 480 -640 480 -426 640 -640 480 -640 478 -640 454 -640 400 -640 480 -640 480 -640 360 -640 480 -640 480 -500 375 -480 640 -640 640 -640 480 -640 480 -640 427 -640 480 -640 480 -640 480 -640 428 -640 640 -640 427 -640 428 -640 393 -640 406 -500 375 -640 491 -473 640 -427 640 -640 480 -640 480 -500 332 -640 425 -640 472 -640 480 -640 428 -375 500 -640 384 -640 480 -640 480 -426 640 -640 427 -375 500 -640 480 -640 480 -640 480 -375 500 -640 427 -640 457 -539 640 -640 639 -500 375 -640 427 -640 428 -640 461 -480 640 -640 427 -500 375 -428 640 -480 640 -240 320 -640 425 -640 479 -612 612 -640 426 -640 480 -640 425 -640 432 -640 480 -640 313 -640 480 -640 640 -640 480 -500 375 -640 429 -640 421 -640 428 -640 480 -428 640 -640 480 -640 488 -640 480 -500 285 -640 359 -640 480 -640 383 -476 640 -480 640 -480 640 -640 344 -480 640 -640 427 -640 383 -480 640 -480 640 -640 480 -441 500 -480 640 -640 480 -640 425 -640 640 -640 480 -640 480 -640 427 -482 482 -640 428 -640 425 -640 428 -480 640 -640 427 -640 360 -640 426 -480 640 -500 339 -500 350 -640 480 -500 334 -640 458 -640 425 -640 480 -481 640 -640 425 -640 480 -640 428 -640 480 -640 480 -640 480 -640 480 -500 375 -640 427 -640 255 -480 640 -640 480 -335 640 -640 427 -640 426 -600 449 -640 480 -640 478 -425 640 -612 612 -640 480 -500 333 -640 427 -640 480 -332 500 -640 301 -481 640 -640 479 -384 640 -640 468 -640 383 -640 480 -291 455 -640 480 -640 427 -640 480 -480 640 -427 640 -640 424 -640 427 -500 375 -640 458 -480 640 -480 640 -640 426 -640 640 -480 640 -448 336 -500 375 -640 425 -640 425 -601 640 -640 480 -640 427 -640 427 -425 640 -500 416 -640 427 -640 541 -640 481 -640 480 -640 409 -640 427 -640 399 -500 375 -640 427 -449 640 -640 427 -640 478 -640 480 -640 425 -640 428 -500 333 -640 598 -500 333 -375 500 -427 640 -640 213 -500 333 -640 480 -640 444 -429 640 -500 375 -640 480 -500 375 -427 640 -640 614 -640 427 -480 640 -640 480 -480 640 -426 640 -640 427 -428 640 -640 426 -640 457 -640 424 -640 480 -640 426 -640 427 -640 426 -423 640 -640 480 -640 427 -640 360 -640 427 -640 480 -436 640 -428 640 -375 500 -640 530 -640 480 -500 375 -640 427 -640 428 -640 480 -640 426 -640 424 -640 480 -514 640 -640 428 -640 427 -640 428 -640 427 -640 413 -612 612 -640 424 -640 480 -640 312 -640 427 -640 427 -640 426 -485 640 -640 360 -427 640 -640 513 -640 427 -640 629 -640 426 -640 427 -640 640 -640 427 -640 480 -640 480 -640 480 -478 640 -640 465 -400 320 -500 375 -640 427 -472 640 -640 480 -480 640 -640 438 -500 375 -350 500 -640 475 -640 480 -640 480 -612 612 -640 442 -360 640 -640 480 -640 481 -640 480 -640 388 -640 480 -640 480 -640 334 -640 401 -640 425 -640 478 -640 412 -640 480 -577 448 -426 640 -406 500 -640 427 -478 640 -480 640 -640 427 -500 374 -427 640 -478 640 -640 480 -640 469 -640 428 -640 480 -640 427 -640 480 -500 375 -640 480 -640 480 -500 400 -640 480 -640 480 -396 640 -640 415 -640 427 -640 480 -640 426 -500 375 -480 640 -640 427 -640 480 -640 360 -640 426 -480 640 -640 427 -640 427 -640 428 -500 333 -640 427 -640 480 -640 425 -427 640 -640 538 -640 480 -424 640 -640 441 -501 640 -640 480 -480 640 -640 474 -640 429 -640 425 -640 378 -640 480 -640 480 -640 430 -640 426 -496 640 -480 640 -500 375 -640 480 -480 640 -480 360 -500 378 -640 480 -480 640 -640 480 -640 613 -640 428 -427 640 -482 640 -500 356 -640 427 -640 640 -480 640 -640 438 -426 640 -640 480 -640 360 -640 360 -640 427 -640 483 -500 375 -640 428 -640 409 -500 334 -640 429 -640 427 -457 640 -640 444 -640 480 -640 427 -640 427 -640 427 -640 383 -425 640 -480 640 -424 640 -500 475 -640 480 -640 427 -640 480 -640 427 -640 427 -640 427 -640 480 -640 427 -640 425 -427 640 -640 480 -480 640 -480 640 -640 427 -500 258 -640 480 -640 480 -640 480 -640 450 -640 480 -640 359 -640 604 -640 427 -500 275 -640 443 -451 640 -640 426 -500 333 -640 427 -640 425 -427 640 -640 309 -640 480 -640 427 -640 435 -427 640 -640 480 -640 361 -640 427 -640 480 -640 479 -640 480 -640 480 -427 640 -640 480 -633 640 -640 480 -640 360 -332 500 -640 478 -427 640 -640 396 -640 427 -640 427 -480 640 -480 640 -458 640 -500 375 -425 640 -640 427 -428 640 -640 424 -480 640 -640 480 -640 480 -640 427 -640 396 -612 612 -306 640 -640 480 -640 480 -640 480 -640 427 -640 480 -361 640 -640 480 -500 333 -640 427 -640 480 -640 427 -426 640 -478 640 -640 480 -640 426 -640 403 -640 579 -640 480 -427 640 -640 425 -640 480 -612 612 -640 425 -500 375 -640 360 -640 480 -640 427 -640 427 -640 480 -640 427 -640 480 -480 640 -426 640 -640 480 -640 480 -640 425 -640 427 -446 640 -640 480 -484 500 -425 640 -640 640 -471 500 -640 480 -640 439 -640 428 -612 612 -600 600 -500 333 -640 480 -640 480 -640 425 -640 480 -640 480 -640 443 -640 485 -640 480 -426 640 -423 640 -640 419 -640 480 -424 640 -640 436 -640 511 -640 449 -640 426 -640 480 -640 480 -480 640 -640 426 -640 480 -640 427 -640 480 -640 403 -640 640 -640 426 -480 640 -500 400 -640 480 -176 144 -500 375 -500 400 -640 426 -500 384 -640 480 -640 480 -506 640 -640 427 -480 640 -640 424 -640 360 -640 427 -640 427 -640 427 -640 427 -640 445 -640 480 -640 474 -640 480 -640 427 -640 480 -427 640 -478 640 -640 480 -640 403 -640 426 -640 480 -640 448 -640 480 -640 640 -640 423 -640 529 -640 427 -640 427 -612 612 -640 480 -640 427 -640 427 -480 640 -640 427 -640 427 -426 640 -640 428 -640 359 -640 427 -640 480 -640 427 -640 360 -640 427 -480 640 -423 640 -500 375 -640 391 -640 480 -480 640 -640 427 -640 427 -640 332 -375 500 -640 425 -640 480 -640 360 -493 640 -331 500 -640 427 -640 480 -480 640 -640 480 -640 425 -640 480 -427 640 -480 640 -640 341 -480 640 -480 640 -376 500 -640 487 -428 640 -640 480 -640 426 -640 449 -480 640 -640 427 -480 640 -640 428 -596 640 -640 396 -640 369 -480 640 -640 480 -640 480 -480 640 -640 427 -500 375 -640 425 -640 480 -640 360 -640 480 -640 480 -640 470 -427 640 -500 272 -612 612 -640 425 -375 500 -500 333 -478 640 -640 428 -612 612 -640 427 -640 480 -471 640 -640 426 -500 375 -500 375 -400 500 -640 576 -640 480 -500 281 -400 640 -500 375 -640 471 -431 640 -375 500 -640 427 -471 500 -640 480 -640 553 -640 480 -427 640 -480 640 -480 640 -375 500 -529 640 -640 423 -360 640 -500 375 -600 450 -500 333 -426 640 -640 436 -640 480 -480 640 -640 424 -640 480 -640 426 -640 480 -427 640 -640 480 -640 427 -640 425 -640 425 -640 480 -640 426 -480 640 -640 478 -640 480 -427 640 -640 500 -640 383 -640 427 -640 480 -640 430 -640 429 -640 480 -640 384 -640 425 -480 640 -428 640 -310 500 -640 478 -640 428 -640 361 -640 427 -640 427 -640 640 -640 456 -500 405 -640 427 -491 640 -480 640 -500 374 -427 640 -333 500 -500 401 -640 478 -480 640 -640 407 -640 425 -428 640 -640 427 -640 360 -479 640 -640 424 -612 612 -640 427 -640 488 -500 375 -499 640 -480 640 -640 480 -640 523 -640 427 -640 360 -640 524 -640 574 -480 640 -640 427 -640 426 -640 427 -640 516 -426 640 -640 480 -480 640 -500 375 -427 640 -500 376 -427 640 -480 640 -640 480 -640 426 -640 523 -640 481 -640 427 -500 375 -640 480 -398 500 -640 640 -640 480 -640 480 -640 426 -424 640 -500 333 -640 427 -640 480 -640 429 -455 640 -640 480 -640 426 -480 640 -640 427 -640 451 -640 424 -640 480 -427 640 -424 640 -640 480 -500 281 -640 427 -426 640 -640 405 -612 612 -427 640 -426 640 -500 333 -640 427 -633 640 -640 480 -640 361 -640 427 -640 427 -480 640 -556 407 -640 480 -640 424 -640 480 -640 477 -637 640 -640 639 -334 500 -640 480 -640 480 -426 640 -480 640 -640 480 -502 640 -640 614 -427 640 -640 480 -640 424 -425 640 -640 512 -480 640 -640 427 -640 479 -640 360 -500 375 -424 640 -640 480 -640 428 -640 389 -640 435 -640 480 -480 640 -640 480 -640 480 -425 282 -426 640 -640 425 -640 424 -640 480 -640 363 -480 640 -640 480 -640 428 -640 499 -640 431 -640 427 -640 427 -640 427 -640 480 -555 640 -640 479 -640 480 -427 640 -640 427 -640 480 -640 428 -640 428 -640 480 -640 427 -640 330 -640 480 -427 640 -427 640 -640 480 -640 480 -500 416 -514 640 -375 500 -640 427 -480 640 -640 427 -640 427 -450 450 -640 424 -423 640 -640 428 -427 640 -640 425 -500 375 -640 447 -640 480 -640 426 -640 424 -640 430 -640 450 -640 425 -640 480 -427 640 -421 500 -512 640 -640 427 -640 480 -482 389 -640 428 -640 480 -397 640 -640 549 -640 428 -375 500 -640 480 -640 640 -640 434 -640 640 -640 433 -640 480 -640 360 -640 480 -640 480 -480 640 -640 428 -640 480 -320 240 -640 428 -427 640 -640 426 -480 640 -640 427 -640 427 -500 368 -640 427 -500 333 -500 333 -640 480 -266 187 -640 424 -425 640 -640 480 -640 480 -640 480 -500 324 -640 478 -626 640 -640 426 -426 640 -640 480 -480 640 -640 427 -640 427 -480 640 -640 480 -480 640 -640 428 -640 480 -640 330 -640 425 -640 360 -478 640 -500 333 -640 428 -480 640 -500 333 -640 480 -500 332 -640 428 -427 640 -640 480 -640 480 -640 427 -640 531 -640 361 -640 480 -640 429 -640 360 -640 512 -640 425 -424 500 -426 640 -640 427 -640 427 -640 473 -419 640 -640 532 -463 640 -640 480 -640 480 -640 427 -640 425 -640 480 -640 497 -640 480 -500 333 -640 480 -500 375 -640 517 -640 398 -612 612 -640 426 -425 640 -640 485 -640 480 -633 640 -640 427 -480 640 -406 610 -429 640 -640 519 -640 426 -427 640 -640 480 -640 425 -425 640 -500 375 -427 640 -500 375 -640 480 -640 427 -640 428 -640 480 -426 640 -640 480 -640 480 -640 479 -640 427 -640 424 -480 640 -500 400 -640 361 -640 480 -478 640 -640 425 -640 427 -480 640 -640 329 -640 446 -640 426 -640 428 -428 640 -612 612 -640 480 -640 480 -640 427 -480 640 -640 457 -587 640 -640 425 -640 427 -500 375 -640 427 -640 427 -640 639 -426 640 -640 480 -640 640 -640 427 -428 640 -640 457 -640 425 -640 427 -640 480 -427 640 -640 426 -640 480 -640 428 -640 478 -640 480 -480 640 -640 457 -478 640 -428 640 -640 487 -500 333 -640 480 -640 454 -368 640 -640 427 -372 640 -640 425 -640 426 -640 426 -640 480 -640 425 -640 480 -500 500 -425 640 -640 442 -500 335 -640 480 -640 427 -640 426 -640 427 -375 500 -500 336 -640 482 -640 396 -640 480 -640 480 -640 360 -352 288 -640 480 -640 480 -640 426 -640 480 -427 640 -640 475 -640 426 -375 500 -640 427 -640 425 -480 640 -640 640 -640 521 -640 427 -640 480 -640 400 -640 480 -375 500 -353 640 -375 500 -600 400 -640 425 -428 640 -640 512 -640 480 -640 478 -480 640 -500 480 -500 333 -480 640 -640 427 -640 640 -640 480 -640 428 -427 640 -600 450 -339 500 -426 640 -480 640 -640 427 -640 427 -640 428 -640 418 -500 332 -640 480 -640 426 -500 375 -640 480 -480 640 -640 426 -640 514 -640 436 -640 480 -622 640 -640 425 -500 500 -427 640 -640 425 -640 427 -480 640 -500 321 -640 480 -480 640 -424 640 -640 419 -640 428 -409 640 -640 478 -640 426 -640 430 -640 360 -480 640 -500 334 -400 500 -480 640 -640 427 -640 428 -640 421 -500 375 -480 640 -640 480 -480 640 -640 272 -640 427 -640 426 -640 480 -640 360 -640 480 -640 480 -640 482 -375 500 -640 425 -640 383 -640 480 -640 480 -640 480 -640 427 -640 480 -640 480 -640 427 -494 330 -640 428 -640 427 -640 428 -640 427 -640 427 -640 470 -640 425 -375 500 -426 640 -385 500 -640 425 -500 375 -640 458 -640 480 -640 214 -480 640 -640 541 -640 427 -480 640 -640 480 -640 427 -640 427 -500 381 -612 612 -640 435 -480 640 -640 503 -640 480 -500 387 -640 479 -640 478 -640 480 -640 480 -640 426 -640 427 -640 428 -640 480 -500 333 -640 480 -640 480 -424 640 -640 480 -640 435 -640 480 -457 640 -612 612 -640 427 -500 375 -640 425 -640 480 -640 517 -640 427 -640 266 -640 360 -476 640 -640 427 -640 413 -640 480 -640 480 -640 427 -480 640 -480 640 -500 303 -640 427 -500 375 -640 389 -480 640 -427 640 -427 640 -640 480 -640 480 -640 480 -640 308 -511 640 -640 523 -640 427 -424 640 -426 640 -640 480 -640 480 -375 500 -500 375 -500 375 -600 400 -512 640 -640 480 -640 480 -640 480 -640 425 -612 612 -640 427 -640 480 -427 640 -500 374 -640 480 -500 375 -640 426 -640 480 -612 612 -640 427 -640 424 -427 640 -480 640 -320 216 -499 640 -415 640 -374 500 -640 427 -640 480 -640 426 -640 360 -480 640 -640 480 -640 427 -341 500 -640 480 -640 480 -428 640 -480 640 -640 480 -640 480 -640 478 -428 640 -640 483 -424 640 -640 480 -640 426 -640 480 -640 359 -516 408 -640 480 -640 480 -480 640 -417 640 -640 478 -500 333 -640 480 -427 640 -640 360 -640 545 -640 480 -640 482 -640 506 -640 480 -640 480 -640 482 -640 480 -640 559 -427 640 -480 640 -480 640 -640 507 -500 335 -640 360 -550 400 -640 427 -640 480 -500 334 -480 640 -640 609 -500 333 -640 480 -640 426 -600 450 -640 480 -640 427 -640 480 -480 640 -640 480 -640 426 -512 640 -640 426 -640 425 -640 480 -480 640 -500 375 -640 381 -640 427 -640 427 -640 509 -640 427 -640 400 -640 480 -640 429 -480 640 -640 480 -640 618 -640 426 -427 640 -640 480 -640 427 -500 335 -603 640 -427 640 -640 480 -640 480 -582 640 -640 427 -500 332 -640 445 -478 640 -640 480 -640 400 -509 640 -612 612 -640 427 -640 425 -640 480 -640 480 -500 256 -640 427 -426 640 -640 426 -500 375 -640 480 -288 352 -640 480 -640 480 -480 640 -640 427 -500 375 -640 480 -480 640 -640 426 -640 427 -640 428 -500 375 -640 427 -640 640 -640 480 -640 427 -640 480 -640 480 -640 348 -640 425 -640 613 -427 640 -640 427 -500 500 -640 427 -480 640 -479 640 -640 639 -600 400 -640 480 -640 427 -320 240 -480 640 -500 375 -640 234 -640 427 -640 427 -640 427 -500 333 -500 375 -640 433 -640 427 -640 424 -640 480 -640 480 -612 612 -470 332 -640 322 -640 480 -640 521 -640 427 -640 427 -500 375 -640 480 -640 427 -640 480 -640 501 -640 424 -460 640 -640 419 -640 480 -640 480 -500 375 -640 427 -640 427 -333 500 -640 426 -375 500 -500 374 -640 512 -500 375 -640 425 -640 480 -480 640 -480 640 -427 640 -500 375 -640 427 -480 640 -640 427 -640 480 -612 612 -640 480 -480 640 -640 555 -457 640 -500 375 -480 640 -640 480 -500 323 -612 612 -640 480 -640 480 -640 406 -640 480 -640 427 -640 429 -640 426 -480 640 -500 332 -640 427 -640 480 -425 640 -426 640 -640 425 -375 500 -458 640 -640 427 -640 427 -640 427 -427 640 -640 445 -640 427 -640 427 -640 457 -500 500 -640 427 -640 427 -640 563 -640 419 -428 640 -500 375 -640 456 -640 480 -640 427 -427 640 -375 500 -640 427 -479 640 -640 426 -640 427 -500 335 -640 427 -640 383 -500 338 -640 426 -427 640 -640 480 -500 375 -426 640 -640 424 -500 332 -640 480 -424 640 -640 480 -421 640 -640 176 -640 480 -640 426 -640 639 -640 480 -480 640 -640 425 -640 480 -640 480 -640 429 -500 375 -612 612 -640 566 -640 427 -640 526 -480 640 -480 640 -427 640 -640 428 -425 640 -640 517 -640 433 -240 320 -640 426 -417 640 -640 428 -640 425 -361 500 -640 523 -640 480 -640 480 -640 478 -640 427 -640 427 -425 640 -500 332 -500 375 -640 427 -426 640 -640 427 -640 425 -500 333 -480 640 -427 640 -500 362 -640 480 -640 533 -640 428 -427 640 -640 480 -361 640 -500 375 -640 480 -640 522 -500 456 -427 640 -500 321 -640 480 -640 427 -640 425 -480 640 -640 480 -640 360 -640 480 -335 500 -480 640 -427 640 -500 375 -500 334 -478 640 -640 427 -640 480 -640 427 -425 640 -640 427 -375 500 -640 480 -640 427 -612 612 -640 429 -640 480 -437 640 -424 640 -480 640 -640 427 -640 426 -640 429 -640 480 -640 419 -426 640 -640 480 -640 428 -640 480 -640 480 -500 375 -640 480 -640 427 -640 457 -640 425 -640 427 -500 375 -640 395 -468 640 -640 407 -640 436 -640 427 -426 640 -640 427 -640 427 -480 640 -640 428 -500 375 -640 427 -640 425 -640 480 -375 500 -427 640 -500 375 -640 480 -612 612 -640 478 -640 426 -500 281 -640 480 -427 640 -425 640 -640 480 -640 425 -480 640 -268 640 -480 640 -640 426 -500 333 -640 427 -618 640 -500 333 -640 426 -640 420 -612 612 -640 575 -640 427 -640 427 -430 640 -427 640 -640 480 -480 640 -333 500 -640 427 -427 640 -640 480 -429 640 -640 319 -375 500 -640 428 -640 429 -640 427 -612 612 -640 480 -415 640 -640 426 -612 612 -640 480 -640 276 -640 640 -427 640 -640 427 -640 480 -640 480 -640 468 -640 426 -480 640 -640 508 -640 233 -443 640 -640 480 -640 480 -500 375 -640 427 -640 468 -640 427 -448 640 -480 640 -459 640 -640 426 -640 428 -640 428 -640 480 -426 640 -640 428 -640 480 -424 640 -640 425 -640 480 -333 500 -500 375 -640 425 -640 480 -640 425 -640 480 -500 335 -640 403 -640 480 -640 480 -640 480 -640 427 -640 425 -640 427 -500 333 -640 427 -640 480 -640 480 -640 480 -640 425 -640 480 -640 480 -640 480 -640 480 -640 428 -425 640 -640 426 -640 427 -640 256 -612 612 -640 427 -640 427 -640 480 -500 375 -480 640 -500 333 -640 567 -640 426 -339 500 -640 423 -640 480 -480 640 -640 533 -480 640 -640 428 -640 427 -640 480 -612 612 -640 480 -640 427 -426 640 -640 426 -640 436 -480 640 -640 427 -640 426 -640 480 -480 640 -640 478 -429 640 -640 427 -323 500 -500 375 -480 640 -500 494 -333 500 -500 375 -640 400 -427 640 -640 428 -240 180 -612 612 -598 640 -376 479 -640 480 -333 500 -427 640 -480 640 -640 458 -640 480 -480 640 -640 480 -480 640 -500 332 -640 310 -640 480 -500 375 -640 640 -640 427 -640 480 -640 427 -640 480 -500 375 -640 428 -427 640 -500 376 -426 640 -480 640 -640 480 -640 427 -640 428 -640 480 -640 439 -400 400 -425 640 -640 640 -640 431 -444 500 -500 333 -640 427 -640 425 -640 427 -559 640 -640 428 -426 640 -640 480 -471 640 -640 429 -640 427 -500 375 -480 640 -640 427 -640 480 -640 480 -640 427 -640 480 -480 640 -640 499 -426 640 -612 612 -500 375 -640 425 -427 640 -640 415 -640 427 -640 513 -640 480 -500 375 -640 434 -640 429 -640 480 -333 500 -640 427 -640 425 -640 480 -640 480 -500 375 -318 500 -480 640 -640 481 -500 375 -500 375 -640 480 -480 640 -500 306 -640 480 -640 480 -640 480 -436 640 -480 640 -640 480 -640 480 -640 426 -427 640 -640 427 -640 428 -500 400 -640 424 -333 500 -486 640 -480 640 -640 428 -640 444 -514 640 -640 406 -640 480 -480 640 -425 640 -640 378 -458 640 -640 426 -640 480 -500 375 -469 640 -480 640 -427 640 -640 480 -640 427 -478 640 -640 427 -334 500 -640 427 -500 443 -427 640 -640 480 -640 425 -502 640 -375 500 -640 427 -500 334 -500 375 -427 640 -480 640 -640 427 -640 429 -443 640 -640 441 -500 333 -449 640 -500 333 -640 424 -270 360 -640 498 -333 500 -480 640 -429 640 -640 478 -640 360 -640 480 -640 437 -480 640 -480 640 -640 640 -640 480 -640 426 -640 480 -640 480 -425 640 -640 480 -427 640 -640 480 -640 427 -640 479 -640 427 -500 500 -640 344 -640 354 -640 480 -427 640 -640 418 -640 427 -640 428 -640 485 -640 426 -500 376 -612 612 -500 375 -500 375 -640 499 -427 640 -480 640 -640 561 -640 429 -640 480 -480 640 -612 612 -500 332 -480 640 -640 427 -375 500 -480 640 -640 373 -480 640 -640 427 -640 418 -640 480 -640 426 -427 640 -640 480 -480 640 -433 640 -640 369 -640 427 -500 335 -640 495 -640 487 -612 612 -359 640 -640 480 -598 640 -500 400 -425 640 -640 427 -640 427 -500 336 -640 298 -640 480 -640 480 -412 640 -640 480 -640 595 -480 640 -375 500 -478 640 -640 480 -480 640 -500 375 -500 305 -500 326 -640 480 -640 383 -612 612 -640 424 -640 427 -640 428 -500 375 -640 512 -640 480 -571 640 -500 375 -500 375 -640 480 -640 427 -640 480 -640 429 -640 427 -428 640 -640 427 -640 427 -640 480 -480 640 -640 426 -640 427 -500 345 -640 480 -436 500 -640 480 -640 496 -640 480 -480 640 -640 426 -640 426 -640 424 -640 390 -640 425 -640 425 -640 427 -640 451 -640 480 -640 425 -640 428 -640 640 -640 480 -640 425 -640 479 -640 427 -640 427 -640 480 -640 480 -500 393 -640 427 -480 640 -640 453 -640 480 -640 480 -640 480 -640 395 -640 427 -640 598 -640 426 -640 427 -640 427 -500 375 -640 480 -640 480 -375 500 -375 500 -640 480 -640 427 -640 640 -640 480 -480 640 -640 480 -640 480 -640 422 -423 640 -640 443 -500 332 -640 480 -640 426 -640 480 -640 640 -480 640 -640 424 -640 427 -640 359 -640 424 -640 428 -640 424 -480 640 -427 640 -640 480 -376 640 -640 427 -640 480 -429 640 -640 443 -640 427 -480 640 -640 425 -480 640 -459 640 -640 361 -640 445 -225 225 -500 329 -640 480 -426 640 -640 480 -640 427 -428 640 -640 480 -640 426 -493 500 -640 480 -224 300 -640 427 -612 612 -640 480 -640 427 -640 426 -640 480 -640 640 -640 427 -640 451 -640 480 -640 425 -480 640 -500 333 -640 424 -640 451 -640 480 -640 427 -640 480 -640 480 -478 640 -400 600 -480 640 -640 480 -425 640 -640 480 -640 426 -346 640 -640 480 -500 270 -640 480 -640 480 -640 426 -640 559 -640 480 -428 640 -640 426 -640 391 -640 392 -612 612 -640 480 -633 640 -500 287 -480 640 -640 480 -640 512 -640 355 -427 640 -640 427 -640 428 -640 426 -640 543 -425 640 -500 333 -498 635 -640 480 -640 480 -640 429 -640 426 -640 428 -640 480 -640 478 -519 640 -640 428 -640 480 -640 426 -500 500 -640 427 -640 352 -360 480 -640 480 -640 240 -500 375 -427 640 -640 480 -500 333 -640 427 -480 640 -500 388 -500 334 -640 426 -640 480 -500 333 -640 480 -480 640 -640 480 -500 375 -640 480 -640 480 -500 375 -640 480 -640 426 -480 640 -640 480 -640 426 -640 376 -500 333 -640 427 -500 387 -333 500 -640 403 -640 480 -600 400 -640 480 -427 640 -384 640 -640 427 -500 329 -640 480 -640 425 -640 424 -640 544 -640 436 -640 426 -640 640 -640 427 -640 478 -640 427 -640 424 -365 640 -500 375 -640 427 -500 375 -640 427 -640 458 -640 480 -480 640 -500 375 -500 335 -480 640 -612 612 -446 640 -640 480 -640 480 -640 476 -600 402 -500 333 -500 334 -500 375 -426 640 -475 640 -500 350 -640 453 -529 640 -640 426 -640 248 -480 640 -554 640 -360 640 -640 427 -480 640 -500 375 -640 480 -640 480 -640 480 -640 427 -640 480 -640 439 -512 640 -500 333 -640 427 -640 428 -640 427 -640 480 -428 640 -500 375 -640 480 -640 480 -500 375 -640 399 -640 427 -640 480 -427 640 -480 640 -640 457 -640 427 -640 411 -640 480 -500 375 -640 480 -500 375 -640 437 -640 480 -640 360 -500 375 -640 479 -640 427 -640 427 -640 480 -332 500 -640 480 -640 480 -640 480 -500 255 -640 480 -427 640 -640 425 -640 427 -500 332 -640 480 -640 424 -640 453 -500 333 -480 640 -612 612 -640 480 -612 612 -528 512 -640 480 -640 480 -640 480 -471 640 -429 640 -640 640 -640 430 -640 425 -411 640 -640 428 -640 425 -640 427 -640 418 -500 375 -427 640 -640 427 -508 640 -640 425 -427 640 -640 360 -640 360 -424 283 -640 421 -640 479 -640 480 -429 640 -640 418 -640 427 -640 427 -375 500 -640 426 -375 500 -640 445 -640 440 -480 640 -640 451 -500 375 -640 510 -640 480 -640 480 -640 466 -640 334 -640 333 -480 640 -640 480 -640 480 -640 427 -640 640 -500 375 -640 480 -640 428 -640 428 -500 375 -640 426 -427 640 -640 426 -640 604 -612 612 -640 428 -640 426 -640 427 -640 428 -640 428 -500 500 -640 480 -478 640 -640 444 -640 426 -640 427 -640 480 -640 428 -480 640 -640 425 -640 494 -375 500 -640 480 -640 425 -359 640 -640 458 -640 426 -640 427 -640 480 -640 425 -333 500 -640 427 -500 320 -333 500 -500 375 -500 375 -500 375 -640 480 -640 640 -480 640 -351 234 -500 333 -500 375 -640 426 -480 640 -480 640 -640 427 -640 489 -640 480 -640 427 -640 480 -640 640 -640 640 -500 334 -640 480 -640 427 -640 427 -640 426 -640 426 -640 427 -640 427 -640 356 -640 480 -538 640 -640 360 -640 427 -640 427 -640 480 -640 427 -480 640 -640 299 -640 425 -640 480 -320 240 -640 426 -480 360 -640 480 -640 426 -640 480 -640 480 -640 427 -500 375 -640 111 -640 427 -480 640 -640 478 -640 448 -612 612 -640 425 -640 426 -640 427 -640 425 -333 500 -425 640 -640 425 -427 640 -500 334 -480 640 -480 640 -640 480 -640 427 -640 281 -640 428 -500 364 -640 480 -640 424 -640 480 -640 428 -640 426 -334 500 -500 375 -427 640 -640 480 -640 424 -442 640 -480 640 -333 500 -500 500 -500 375 -640 480 -631 640 -640 480 -427 640 -640 429 -640 426 -640 428 -480 640 -640 362 -640 480 -640 471 -640 480 -640 480 -640 640 -640 457 -640 425 -427 640 -640 464 -640 427 -640 427 -428 640 -640 480 -640 427 -428 640 -640 480 -640 480 -480 640 -640 439 -640 428 -332 500 -500 363 -640 424 -640 480 -640 427 -500 375 -640 425 -640 427 -427 640 -640 425 -640 480 -640 427 -471 640 -468 500 -640 427 -640 480 -375 500 -640 480 -640 426 -640 314 -640 427 -480 640 -640 427 -500 375 -640 480 -640 424 -640 480 -640 591 -438 640 -640 425 -640 425 -640 480 -427 640 -640 480 -425 640 -640 480 -500 375 -640 480 -640 429 -640 480 -427 640 -500 436 -478 640 -640 480 -500 375 -500 375 -500 333 -500 375 -397 500 -640 360 -500 375 -640 480 -640 427 -480 640 -640 427 -640 480 -640 470 -640 480 -640 428 -640 427 -640 480 -500 375 -427 640 -640 480 -640 458 -640 480 -640 425 -640 390 -640 549 -640 428 -640 480 -640 427 -500 333 -640 427 -426 640 -640 428 -640 428 -640 483 -640 455 -500 333 -426 640 -640 451 -500 301 -640 478 -424 640 -480 640 -640 480 -426 640 -640 364 -492 500 -640 480 -640 478 -640 480 -480 640 -500 375 -480 640 -640 429 -375 500 -640 268 -480 640 -427 640 -640 356 -640 358 -640 481 -640 480 -612 612 -640 424 -640 480 -612 612 -500 333 -326 500 -491 640 -640 491 -640 388 -640 478 -640 425 -640 480 -640 360 -500 375 -640 427 -480 640 -640 428 -640 426 -640 480 -480 640 -612 612 -640 480 -500 375 -640 386 -640 424 -424 640 -640 424 -425 640 -640 427 -640 480 -480 640 -640 427 -640 450 -640 480 -640 480 -640 640 -640 428 -427 640 -640 411 -640 514 -480 640 -480 640 -640 480 -640 426 -480 640 -640 480 -500 376 -425 640 -500 333 -640 427 -640 614 -640 427 -500 375 -640 426 -500 333 -640 480 -375 500 -500 375 -640 426 -317 398 -640 480 -640 512 -640 425 -500 333 -640 480 -640 578 -424 640 -640 480 -500 375 -640 480 -640 480 -480 640 -612 612 -640 425 -640 480 -640 480 -640 428 -640 480 -640 427 -640 426 -612 612 -640 427 -640 361 -640 424 -640 480 -480 640 -640 424 -500 333 -640 425 -640 480 -640 427 -640 434 -640 479 -640 425 -640 488 -640 478 -480 640 -334 500 -640 426 -640 424 -640 427 -427 640 -640 512 -640 419 -640 392 -500 375 -612 612 -640 480 -600 399 -640 427 -640 480 -500 339 -428 640 -640 427 -640 480 -480 640 -640 480 -640 606 -640 480 -640 427 -640 480 -640 427 -640 480 -500 333 -640 427 -500 375 -500 434 -640 404 -427 640 -640 426 -480 640 -640 427 -640 480 -500 358 -500 335 -500 313 -640 425 -500 375 -640 429 -500 375 -480 640 -640 427 -478 640 -640 481 -500 348 -640 427 -640 478 -480 640 -640 408 -632 640 -480 640 -640 355 -640 427 -375 500 -500 351 -640 426 -343 500 -640 480 -500 332 -640 480 -500 375 -500 375 -640 427 -640 428 -480 640 -640 426 -640 427 -640 480 -480 640 -640 480 -640 308 -640 427 -640 426 -640 480 -333 500 -640 426 -640 427 -640 427 -480 640 -640 480 -640 427 -375 500 -640 401 -640 426 -640 480 -500 281 -563 422 -640 426 -640 427 -640 427 -640 427 -640 425 -640 422 -640 427 -640 429 -640 480 -626 640 -480 640 -427 640 -640 480 -640 480 -640 416 -427 640 -640 480 -640 494 -500 333 -500 333 -640 448 -640 425 -480 640 -480 640 -640 480 -640 425 -500 331 -640 480 -640 515 -500 399 -640 428 -500 400 -640 480 -640 426 -640 428 -640 271 -640 480 -500 375 -427 640 -640 427 -640 428 -640 427 -640 470 -640 473 -640 427 -640 360 -333 500 -640 427 -427 640 -640 480 -480 640 -640 427 -500 384 -640 405 -640 480 -640 426 -640 480 -640 360 -640 448 -640 640 -640 425 -640 480 -640 480 -640 480 -640 425 -480 640 -640 489 -306 640 -640 383 -640 389 -480 640 -640 480 -500 327 -480 640 -358 640 -640 426 -640 458 -640 427 -640 428 -640 480 -640 480 -320 240 -640 412 -640 439 -640 427 -640 428 -640 540 -640 480 -640 480 -640 480 -612 612 -640 531 -640 480 -427 640 -640 480 -640 480 -480 640 -640 427 -640 424 -640 402 -332 500 -640 359 -640 427 -427 640 -640 427 -640 433 -640 360 -640 480 -640 480 -426 640 -640 427 -640 426 -480 640 -640 478 -500 375 -480 640 -640 480 -640 424 -640 480 -640 480 -640 427 -640 491 -640 480 -480 640 -400 300 -640 448 -640 480 -640 426 -640 427 -640 423 -640 427 -640 630 -640 480 -640 406 -640 429 -640 480 -640 480 -640 480 -640 479 -612 612 -427 640 -478 640 -640 427 -328 500 -640 360 -640 480 -480 320 -409 640 -640 427 -640 480 -640 426 -640 427 -640 480 -500 333 -640 428 -640 427 -640 480 -640 440 -640 480 -640 459 -640 480 -480 640 -640 480 -640 425 -640 501 -612 612 -640 480 -640 513 -640 480 -640 428 -640 482 -640 480 -640 480 -500 375 -488 500 -640 480 -561 640 -640 480 -500 375 -640 480 -640 480 -640 424 -612 612 -612 612 -640 429 -500 401 -640 427 -640 427 -480 640 -640 426 -480 640 -500 375 -640 480 -640 427 -640 360 -640 427 -640 480 -427 640 -425 640 -427 640 -640 480 -640 428 -640 426 -640 480 -640 480 -640 480 -603 640 -640 553 -640 449 -640 480 -640 427 -456 640 -478 640 -428 640 -640 424 -480 640 -640 428 -640 427 -640 438 -640 427 -500 333 -640 480 -500 334 -640 451 -480 640 -640 428 -500 382 -480 640 -640 480 -500 384 -640 427 -640 478 -640 480 -500 375 -351 500 -640 457 -479 640 -640 600 -518 640 -640 441 -480 640 -480 640 -640 426 -640 480 -480 640 -640 480 -426 640 -480 640 -612 612 -640 480 -640 433 -480 640 -500 375 -640 421 -640 480 -640 480 -640 480 -427 640 -480 640 -640 430 -450 450 -640 496 -640 480 -480 640 -480 640 -500 375 -640 427 -640 427 -640 491 -640 480 -640 480 -640 333 -640 427 -386 640 -500 336 -640 480 -600 357 -180 225 -640 480 -640 479 -500 373 -640 426 -500 334 -576 430 -333 500 -612 612 -332 500 -640 427 -480 640 -640 480 -478 640 -480 640 -640 640 -640 480 -640 533 -640 427 -640 480 -640 396 -640 512 -640 426 -640 480 -612 612 -300 200 -640 480 -640 480 -640 480 -640 480 -524 640 -640 320 -640 428 -640 433 -640 427 -640 480 -640 480 -500 375 -640 512 -500 375 -640 480 -427 640 -640 480 -427 640 -640 427 -428 640 -612 612 -640 427 -375 500 -500 333 -333 500 -640 481 -480 640 -640 424 -640 428 -640 480 -640 428 -426 640 -427 640 -399 500 -640 480 -612 612 -640 480 -640 427 -640 427 -427 640 -640 480 -333 500 -640 441 -640 480 -640 426 -640 640 -480 640 -481 640 -334 500 -640 480 -500 375 -375 500 -480 640 -480 640 -640 427 -640 554 -480 640 -640 403 -640 264 -640 480 -397 500 -640 480 -640 427 -640 427 -640 480 -640 428 -610 640 -640 561 -640 427 -480 640 -640 325 -640 480 -480 640 -480 640 -480 640 -640 480 -640 427 -640 480 -640 480 -640 457 -480 640 -640 640 -375 500 -640 427 -480 640 -500 333 -640 428 -640 425 -480 640 -427 640 -640 425 -640 640 -640 480 -478 640 -640 480 -640 429 -600 400 -500 500 -640 480 -640 481 -640 480 -385 308 -640 480 -640 427 -640 428 -640 640 -640 426 -500 375 -640 421 -375 500 -640 471 -640 404 -640 427 -375 500 -463 640 -553 640 -427 640 -418 500 -640 385 -478 640 -517 640 -640 478 -427 640 -640 400 -612 612 -640 271 -500 342 -640 466 -640 467 -640 480 -640 417 -640 427 -612 612 -513 640 -480 640 -640 511 -426 640 -640 425 -339 500 -640 480 -612 612 -480 640 -429 640 -640 458 -488 640 -612 612 -640 427 -640 571 -500 358 -640 425 -640 480 -640 427 -640 512 -640 425 -427 640 -640 480 -640 426 -505 640 -500 333 -640 426 -426 640 -425 640 -426 640 -500 375 -640 427 -640 427 -640 426 -640 608 -500 375 -454 640 -640 427 -640 360 -600 450 -425 640 -640 427 -640 481 -640 423 -640 426 -640 457 -640 480 -480 640 -640 426 -640 480 -640 425 -640 429 -424 640 -640 438 -500 375 -426 640 -428 640 -640 480 -640 427 -640 480 -480 640 -612 612 -500 379 -640 428 -640 480 -640 480 -295 480 -500 375 -640 398 -640 429 -612 612 -640 427 -480 640 -640 432 -640 480 -486 640 -640 480 -640 640 -425 640 -640 426 -640 436 -640 428 -640 454 -640 360 -612 612 -640 453 -612 612 -500 334 -425 640 -640 426 -640 427 -640 480 -480 640 -640 426 -640 463 -640 427 -640 428 -640 513 -640 480 -640 483 -640 425 -640 426 -640 512 -640 426 -470 500 -640 427 -640 359 -640 429 -640 426 -427 640 -640 480 -640 480 -640 447 -640 427 -462 640 -480 640 -640 480 -475 500 -640 480 -640 428 -612 612 -640 481 -640 480 -640 426 -500 375 -640 428 -640 480 -640 640 -296 352 -640 425 -640 480 -640 508 -640 429 -640 640 -640 428 -578 453 -500 375 -640 428 -640 360 -425 640 -640 480 -640 372 -500 334 -640 553 -640 480 -480 640 -640 551 -640 428 -640 427 -428 640 -640 427 -640 428 -640 427 -482 640 -427 640 -375 500 -640 480 -500 400 -640 427 -640 446 -480 640 -480 640 -640 480 -640 480 -427 640 -427 640 -640 480 -640 427 -640 480 -640 480 -640 484 -640 360 -640 480 -612 612 -640 480 -640 480 -640 426 -640 480 -612 612 -640 426 -640 639 -640 480 -640 428 -640 428 -640 427 -640 428 -640 427 -480 640 -640 427 -640 426 -480 640 -640 427 -640 640 -640 478 -640 480 -640 480 -640 427 -375 500 -612 612 -640 427 -640 520 -640 480 -640 427 -640 480 -427 640 -640 480 -480 640 -640 640 -640 426 -640 480 -427 640 -640 427 -640 436 -640 480 -427 640 -375 500 -640 480 -640 480 -640 480 -640 427 -640 427 -500 332 -640 472 -640 480 -640 427 -300 640 -640 480 -360 640 -427 640 -640 480 -640 416 -429 640 -480 640 -640 348 -640 427 -428 640 -640 425 -640 480 -480 640 -640 480 -480 640 -500 432 -640 428 -640 426 -640 428 -640 427 -640 480 -640 640 -427 640 -640 480 -640 468 -500 372 -629 640 -640 480 -500 333 -480 640 -480 640 -426 640 -640 480 -640 427 -480 640 -640 428 -427 640 -428 640 -332 500 -640 360 -612 612 -640 480 -640 480 -640 445 -640 398 -640 457 -640 426 -427 640 -640 426 -640 480 -640 640 -640 425 -640 480 -640 427 -425 640 -640 427 -640 424 -500 334 -640 442 -612 612 -385 289 -640 480 -428 640 -640 401 -500 375 -640 541 -640 428 -640 427 -500 375 -640 480 -500 375 -640 480 -640 408 -500 375 -300 451 -640 429 -500 375 -640 404 -612 612 -500 375 -640 427 -640 528 -640 480 -640 425 -427 640 -640 428 -434 640 -640 426 -392 640 -640 427 -480 640 -500 333 -640 427 -640 480 -640 360 -500 375 -640 480 -640 424 -640 426 -640 425 -430 640 -640 504 -640 480 -640 489 -640 480 -494 338 -398 640 -640 477 -640 425 -426 640 -640 426 -640 424 -640 563 -348 486 -640 480 -640 480 -480 640 -640 458 -640 480 -480 640 -413 481 -640 427 -640 458 -640 427 -640 428 -640 480 -586 640 -640 480 -640 333 -640 480 -640 469 -640 427 -426 640 -612 612 -500 333 -640 427 -480 640 -500 281 -640 415 -640 426 -640 480 -500 380 -640 428 -612 612 -640 427 -640 480 -640 480 -640 336 -375 500 -480 640 -640 426 -640 427 -640 492 -375 500 -448 621 -480 640 -427 640 -426 640 -500 375 -427 640 -640 427 -640 428 -640 416 -500 375 -640 427 -640 428 -480 640 -640 424 -500 375 -640 480 -640 480 -640 480 -640 480 -640 635 -427 640 -640 427 -640 424 -640 480 -640 428 -500 375 -640 427 -640 426 -640 480 -640 480 -500 500 -640 399 -640 361 -480 640 -640 480 -640 417 -500 332 -640 480 -640 427 -640 426 -426 640 -640 427 -640 480 -640 480 -480 640 -427 640 -598 640 -640 480 -333 500 -640 457 -640 425 -612 612 -427 640 -500 375 -640 480 -640 426 -478 640 -640 426 -640 427 -640 427 -500 321 -500 375 -640 481 -640 426 -640 453 -640 480 -640 427 -640 425 -640 480 -640 396 -640 457 -640 427 -640 480 -640 428 -450 500 -487 500 -427 640 -640 427 -500 375 -640 480 -640 480 -640 429 -640 480 -433 640 -640 427 -426 640 -640 425 -640 479 -640 480 -500 335 -640 469 -640 428 -427 640 -427 640 -500 333 -640 427 -640 480 -500 333 -640 480 -612 612 -640 480 -428 640 -500 375 -375 500 -480 640 -640 480 -640 427 -640 480 -516 640 -640 427 -640 479 -640 427 -612 612 -375 500 -640 428 -640 417 -429 640 -499 640 -640 480 -640 480 -427 640 -640 427 -500 375 -640 480 -640 640 -425 640 -480 640 -640 426 -640 480 -428 640 -600 400 -640 521 -640 426 -640 427 -640 427 -640 425 -500 375 -640 480 -640 425 -640 428 -480 640 -428 640 -640 427 -640 480 -640 480 -640 480 -640 480 -640 480 -640 344 -640 430 -479 640 -640 426 -427 640 -640 457 -640 427 -640 426 -640 478 -640 426 -640 513 -640 426 -640 427 -640 427 -480 640 -640 580 -640 433 -640 433 -640 427 -640 480 -640 425 -612 612 -640 546 -500 281 -640 361 -640 427 -427 640 -500 375 -640 401 -640 480 -500 375 -640 427 -640 424 -640 427 -640 423 -480 640 -640 480 -427 640 -367 500 -640 480 -640 480 -640 428 -425 640 -640 425 -480 640 -640 478 -607 640 -500 333 -500 375 -640 427 -640 480 -640 368 -640 428 -640 480 -640 427 -500 337 -640 480 -491 640 -640 427 -640 477 -500 375 -640 433 -640 480 -640 480 -640 427 -425 640 -640 427 -500 454 -555 640 -640 335 -640 480 -640 427 -640 480 -640 480 -640 480 -500 375 -640 427 -500 375 -640 426 -480 640 -640 480 -426 640 -426 640 -427 640 -640 423 -640 468 -640 427 -640 480 -480 640 -375 500 -640 427 -640 480 -500 375 -640 480 -640 480 -640 512 -427 640 -640 480 -640 480 -480 640 -428 640 -640 480 -337 500 -500 375 -640 480 -640 480 -640 440 -640 427 -640 360 -640 427 -640 640 -600 400 -640 480 -640 425 -461 500 -375 500 -480 640 -640 426 -640 480 -612 612 -640 478 -500 333 -375 500 -640 480 -441 640 -427 640 -640 480 -640 480 -640 493 -640 479 -500 375 -640 427 -640 480 -640 480 -640 480 -640 480 -640 480 -500 375 -640 429 -427 640 -640 480 -640 480 -640 361 -640 427 -358 500 -480 640 -640 427 -500 486 -640 213 -640 428 -640 427 -640 480 -640 427 -640 426 -633 640 -375 500 -640 427 -640 462 -640 428 -640 480 -640 427 -640 429 -640 480 -640 427 -375 500 -640 478 -640 480 -480 640 -640 480 -640 427 -459 640 -598 640 -500 375 -427 640 -640 425 -640 478 -640 426 -375 500 -640 426 -640 425 -640 424 -640 479 -640 480 -640 480 -640 259 -361 640 -427 640 -480 640 -640 548 -640 424 -640 425 -640 426 -640 424 -640 427 -612 612 -640 480 -500 313 -640 480 -640 480 -640 480 -478 640 -640 427 -640 480 -640 489 -640 428 -361 640 -428 640 -640 356 -640 418 -500 334 -612 612 -640 480 -396 500 -640 478 -640 427 -600 400 -426 640 -640 480 -500 375 -476 640 -480 640 -640 427 -480 640 -640 427 -640 426 -640 444 -430 640 -640 427 -500 375 -426 640 -480 640 -640 480 -640 480 -640 480 -640 640 -640 427 -640 480 -640 393 -640 480 -640 546 -640 475 -640 480 -640 427 -500 375 -640 423 -640 427 -640 425 -640 480 -640 360 -457 640 -375 500 -640 427 -425 640 -640 427 -480 640 -427 640 -640 425 -640 480 -640 480 -640 480 -640 480 -640 426 -424 640 -640 425 -640 480 -640 480 -500 334 -427 640 -426 640 -640 427 -480 640 -480 640 -640 457 -640 361 -640 428 -418 640 -428 640 -640 480 -640 397 -640 406 -500 342 -478 640 -640 640 -480 640 -640 480 -640 426 -612 612 -375 500 -640 480 -640 360 -640 457 -640 480 -640 428 -640 428 -640 428 -640 318 -640 427 -307 500 -612 612 -640 427 -640 427 -361 500 -480 640 -640 480 -480 640 -640 426 -640 427 -640 426 -640 424 -640 480 -640 513 -640 480 -640 427 -512 640 -612 612 -427 640 -429 640 -640 479 -640 427 -640 427 -640 431 -500 375 -640 360 -480 640 -427 640 -612 612 -640 480 -640 425 -480 640 -500 333 -511 640 -640 427 -640 454 -640 396 -640 360 -640 480 -640 478 -500 375 -640 480 -640 427 -640 358 -640 480 -640 399 -375 500 -640 512 -640 423 -427 640 -500 338 -480 640 -640 425 -428 640 -388 640 -500 375 -640 427 -500 400 -427 640 -640 426 -640 480 -640 427 -640 427 -640 480 -640 480 -640 640 -640 427 -480 640 -640 480 -612 612 -640 480 -417 640 -640 373 -640 479 -640 436 -640 428 -480 640 -640 428 -473 335 -640 479 -480 640 -640 436 -640 427 -640 524 -478 640 -640 480 -480 640 -500 240 -640 478 -640 309 -640 428 -640 480 -480 640 -640 602 -640 432 -427 640 -592 640 -640 427 -640 480 -361 640 -375 500 -600 399 -500 400 -427 640 -640 427 -640 431 -425 640 -640 425 -466 640 -640 427 -640 427 -640 480 -640 425 -640 433 -500 375 -500 332 -375 500 -640 427 -640 393 -500 375 -640 437 -640 360 -480 640 -640 477 -375 500 -612 612 -640 512 -480 640 -480 640 -480 640 -500 333 -426 640 -500 375 -468 640 -375 500 -640 480 -640 436 -640 480 -640 428 -640 429 -640 480 -500 375 -640 427 -419 640 -640 427 -640 524 -480 640 -427 640 -640 480 -640 480 -640 480 -640 423 -640 427 -427 640 -427 640 -469 500 -640 501 -532 640 -640 640 -640 481 -640 426 -640 361 -500 367 -640 393 -500 375 -640 480 -640 480 -640 480 -640 426 -640 425 -512 640 -640 426 -360 640 -375 500 -480 640 -640 424 -480 640 -480 640 -612 612 -500 375 -640 480 -427 640 -552 640 -640 427 -480 640 -612 612 -480 640 -640 480 -640 427 -640 480 -640 427 -640 426 -640 480 -300 400 -480 640 -500 375 -640 480 -360 480 -500 333 -640 386 -500 296 -640 480 -640 640 -640 428 -640 480 -640 427 -640 480 -640 480 -640 425 -500 334 -640 512 -640 480 -640 640 -640 480 -640 462 -640 428 -500 375 -640 480 -640 480 -408 640 -640 480 -640 428 -640 427 -450 313 -640 426 -640 480 -448 640 -640 357 -612 612 -640 425 -640 480 -640 480 -375 500 -640 480 -639 640 -640 480 -480 640 -500 375 -640 427 -640 427 -640 480 -640 425 -640 427 -640 640 -640 478 -640 480 -640 435 -612 612 -640 482 -640 478 -640 494 -500 383 -640 494 -640 416 -640 585 -500 333 -640 480 -480 640 -343 512 -640 410 -428 640 -640 485 -640 480 -428 640 -640 638 -640 480 -612 612 -640 425 -640 553 -640 426 -640 480 -640 479 -426 640 -640 427 -640 427 -640 453 -500 400 -400 500 -640 426 -640 480 -640 426 -200 145 -427 640 -640 480 -640 480 -640 480 -427 640 -640 427 -458 640 -458 640 -500 319 -640 427 -640 386 -640 480 -640 480 -640 427 -500 375 -640 429 -640 457 -640 425 -512 640 -640 426 -640 426 -351 640 -612 612 -375 500 -640 427 -640 480 -612 612 -480 640 -640 360 -456 640 -547 640 -500 333 -640 427 -640 480 -640 480 -640 427 -640 236 -426 640 -640 427 -640 480 -640 480 -640 427 -640 425 -640 378 -500 375 -640 480 -640 479 -640 469 -640 480 -500 311 -640 529 -375 500 -640 427 -640 480 -640 480 -640 226 -480 640 -640 480 -640 425 -377 500 -640 389 -360 640 -640 422 -640 440 -411 640 -640 458 -640 480 -640 480 -640 427 -640 426 -640 478 -640 426 -640 273 -640 480 -640 439 -640 414 -640 481 -640 428 -640 427 -640 480 -640 480 -640 426 -640 427 -387 500 -640 427 -640 480 -500 375 -640 512 -640 426 -640 480 -640 427 -480 640 -640 326 -500 375 -640 283 -512 640 -640 427 -640 480 -500 403 -640 427 -640 480 -640 381 -500 440 -500 375 -333 500 -427 640 -640 425 -640 480 -480 640 -640 427 -640 480 -640 402 -640 427 -640 480 -640 427 -480 640 -427 640 -640 425 -640 495 -640 453 -640 616 -426 640 -639 640 -470 640 -640 470 -640 426 -500 400 -480 640 -640 427 -640 425 -640 480 -640 480 -431 640 -640 427 -500 375 -640 427 -640 427 -512 640 -480 640 -640 259 -640 429 -512 640 -640 428 -640 427 -640 427 -640 427 -640 427 -640 433 -453 640 -500 375 -640 516 -500 375 -640 640 -640 480 -640 425 -640 407 -640 318 -640 480 -640 480 -480 640 -426 640 -462 640 -375 500 -640 360 -640 400 -640 426 -640 427 -640 458 -640 331 -500 375 -428 640 -640 479 -640 426 -640 427 -640 503 -640 427 -640 480 -619 413 -640 480 -512 640 -412 500 -480 640 -500 375 -640 480 -640 480 -480 640 -640 463 -640 480 -640 426 -480 640 -640 428 -374 640 -640 360 -640 480 -478 640 -424 640 -640 427 -426 640 -500 375 -375 500 -640 457 -640 427 -640 427 -427 640 -640 480 -461 500 -412 500 -640 480 -640 428 -301 500 -640 480 -640 480 -500 281 -500 375 -480 640 -640 426 -640 426 -500 375 -480 640 -457 640 -500 400 -640 425 -640 478 -640 640 -427 640 -512 640 -640 480 -500 375 -640 427 -640 480 -640 425 -612 612 -640 480 -640 427 -375 500 -416 640 -640 499 -500 400 -640 480 -640 480 -640 396 -640 480 -640 425 -640 393 -640 640 -640 480 -640 480 -500 442 -640 427 -640 480 -640 223 -640 480 -640 480 -640 480 -640 480 -640 428 -640 480 -640 379 -480 640 -640 427 -365 500 -640 427 -480 640 -640 428 -640 243 -640 480 -640 480 -500 375 -640 428 -426 640 -480 640 -427 640 -500 500 -478 640 -640 427 -480 640 -427 640 -375 500 -428 640 -640 425 -640 444 -640 426 -640 452 -640 427 -640 462 -500 375 -640 640 -640 480 -429 640 -500 500 -640 480 -640 430 -427 640 -375 500 -640 427 -375 500 -640 426 -640 439 -612 612 -640 436 -640 480 -640 428 -412 640 -640 480 -426 640 -640 454 -640 426 -640 480 -375 500 -640 480 -640 640 -640 480 -640 425 -480 640 -640 426 -640 480 -640 427 -500 375 -375 500 -640 468 -428 640 -428 640 -480 640 -480 640 -425 640 -640 428 -427 640 -640 427 -640 414 -612 612 -640 406 -640 480 -640 480 -640 435 -449 640 -640 427 -640 492 -640 480 -480 640 -640 516 -375 500 -640 480 -315 500 -640 426 -640 428 -500 375 -640 480 -428 640 -425 640 -640 426 -480 640 -640 360 -640 348 -640 479 -479 640 -385 289 -640 480 -640 427 -500 346 -374 500 -640 427 -640 427 -640 480 -640 428 -383 640 -640 480 -640 478 -640 428 -640 480 -428 640 -640 480 -202 360 -640 426 -640 375 -500 356 -640 480 -640 581 -640 427 -640 427 -640 640 -480 640 -640 425 -375 500 -500 375 -427 640 -640 400 -640 480 -640 480 -640 480 -335 500 -480 640 -640 424 -640 361 -640 427 -480 640 -375 500 -640 480 -640 480 -640 480 -500 375 -640 480 -480 640 -640 480 -332 500 -640 480 -640 480 -640 480 -427 640 -640 427 -612 612 -640 480 -640 640 -500 375 -640 480 -640 360 -640 427 -333 500 -640 475 -640 428 -640 426 -640 638 -451 640 -480 640 -640 427 -500 375 -480 640 -480 640 -640 480 -427 640 -640 360 -640 480 -640 355 -640 480 -640 480 -640 426 -640 480 -640 621 -640 480 -612 612 -640 428 -500 375 -640 480 -428 640 -640 480 -640 480 -428 640 -640 405 -500 333 -640 427 -480 640 -640 480 -640 424 -500 353 -640 480 -492 500 -640 480 -425 640 -640 428 -480 640 -640 360 -640 427 -614 409 -640 505 -640 427 -640 424 -500 333 -640 480 -500 375 -500 309 -640 516 -640 480 -640 480 -361 640 -426 640 -640 427 -480 640 -640 480 -640 480 -640 480 -640 480 -500 375 -640 396 -640 476 -612 612 -427 640 -640 480 -500 335 -640 428 -640 429 -640 480 -480 640 -640 480 -640 427 -640 427 -640 480 -640 427 -640 385 -427 640 -640 480 -640 480 -480 640 -640 480 -640 480 -500 375 -640 480 -640 480 -493 640 -640 427 -640 480 -640 425 -640 427 -333 500 -640 428 -480 640 -500 375 -500 375 -639 640 -640 596 -640 426 -640 480 -458 640 -640 631 -640 426 -640 400 -640 474 -640 428 -640 640 -640 424 -640 480 -480 640 -640 480 -640 480 -640 480 -640 480 -480 640 -640 480 -640 427 -640 426 -640 471 -640 426 -500 374 -640 482 -640 426 -640 480 -500 333 -640 426 -426 640 -640 427 -480 640 -640 424 -640 494 -640 478 -640 427 -640 480 -640 437 -640 359 -427 640 -640 480 -640 400 -640 480 -640 480 -425 640 -478 640 -640 420 -640 424 -640 425 -640 360 -640 446 -480 640 -480 640 -640 425 -640 427 -640 427 -640 640 -640 480 -640 450 -480 640 -359 640 -500 375 -426 640 -640 427 -640 480 -640 640 -640 480 -640 427 -640 640 -427 640 -500 333 -640 400 -428 640 -480 640 -640 480 -480 640 -640 480 -640 427 -400 500 -640 435 -640 427 -360 640 -425 640 -640 480 -375 500 -640 468 -640 480 -640 480 -425 640 -640 480 -640 388 -640 425 -640 427 -500 375 -640 427 -500 447 -640 427 -500 333 -640 477 -640 427 -640 426 -640 457 -428 640 -640 426 -500 400 -640 427 -478 640 -640 424 -640 425 -640 480 -427 640 -640 461 -640 427 -640 480 -640 494 -612 612 -640 629 -640 426 -427 640 -640 427 -426 640 -640 425 -640 427 -640 480 -640 425 -500 375 -640 480 -480 640 -640 427 -640 480 -480 640 -640 427 -480 640 -640 428 -640 480 -640 480 -480 640 -500 383 -640 424 -640 505 -640 480 -640 426 -376 500 -640 427 -640 494 -640 427 -375 500 -500 376 -480 640 -640 425 -640 480 -427 640 -640 442 -640 480 -640 427 -480 640 -640 427 -640 426 -480 640 -640 451 -640 480 -640 423 -640 640 -640 480 -427 640 -428 640 -500 375 -640 480 -640 389 -364 640 -640 482 -500 300 -427 640 -500 400 -640 427 -612 612 -640 359 -640 480 -640 480 -640 512 -640 406 -640 480 -640 480 -333 500 -640 565 -640 480 -375 500 -640 484 -334 500 -609 640 -640 480 -480 640 -640 480 -640 393 -640 480 -640 427 -640 480 -612 612 -640 359 -612 612 -640 360 -640 480 -640 423 -500 375 -640 427 -640 640 -341 500 -400 600 -427 640 -640 402 -394 640 -640 480 -480 640 -640 429 -640 432 -480 640 -640 480 -640 358 -640 427 -640 427 -480 640 -640 428 -640 480 -640 411 -640 480 -640 480 -640 425 -640 480 -640 480 -640 457 -427 640 -640 480 -480 640 -640 569 -480 640 -640 480 -640 427 -640 433 -640 426 -640 427 -500 375 -640 426 -427 640 -500 500 -640 640 -612 612 -640 480 -640 480 -640 478 -500 500 -640 427 -640 480 -427 640 -480 640 -640 426 -640 427 -500 332 -640 427 -640 425 -480 640 -640 451 -375 500 -480 640 -536 640 -640 481 -640 480 -427 640 -478 640 -339 500 -640 360 -640 480 -480 640 -480 640 -640 480 -640 480 -480 640 -438 640 -640 640 -640 640 -640 359 -640 480 -640 480 -640 427 -640 421 -640 428 -480 640 -471 640 -640 338 -640 539 -640 424 -409 500 -428 640 -640 480 -640 437 -500 332 -640 480 -640 434 -640 480 -640 480 -427 640 -427 640 -480 640 -640 427 -640 480 -640 427 -640 625 -640 480 -640 480 -640 480 -376 500 -640 426 -480 640 -640 640 -640 427 -640 427 -500 333 -424 640 -640 427 -480 640 -425 640 -640 480 -480 640 -640 427 -427 640 -640 427 -500 331 -500 331 -640 426 -640 480 -500 375 -640 480 -500 489 -640 414 -640 480 -480 640 -427 640 -334 640 -640 426 -478 640 -500 332 -428 640 -640 480 -640 359 -480 640 -500 333 -640 522 -640 427 -640 480 -560 640 -427 640 -640 480 -640 480 -640 480 -640 457 -500 375 -557 640 -427 640 -500 334 -640 480 -640 426 -640 488 -640 473 -640 425 -640 480 -500 417 -640 480 -425 640 -640 480 -640 426 -480 640 -500 334 -427 640 -640 428 -640 480 -479 640 -640 640 -640 480 -640 424 -500 500 -640 425 -640 427 -640 360 -375 500 -500 334 -640 427 -640 427 -500 400 -480 640 -640 480 -640 604 -640 480 -640 427 -500 281 -640 426 -333 500 -500 375 -640 480 -640 516 -640 427 -640 480 -640 480 -640 480 -480 640 -640 480 -640 480 -480 640 -426 640 -640 480 -535 480 -640 419 -640 480 -640 427 -427 640 -640 428 -604 453 -500 375 -640 427 -640 428 -612 612 -640 428 -428 640 -427 640 -480 640 -640 469 -640 427 -640 480 -612 612 -640 426 -375 500 -640 427 -640 427 -640 480 -500 375 -640 425 -640 359 -640 480 -640 480 -612 612 -640 439 -640 427 -425 640 -640 480 -640 426 -640 501 -480 640 -640 480 -612 612 -640 427 -333 500 -500 368 -640 427 -640 480 -640 428 -640 436 -640 480 -612 612 -640 444 -640 480 -640 360 -425 640 -640 428 -334 500 -640 517 -500 375 -640 494 -640 611 -640 480 -640 422 -640 426 -640 429 -478 640 -480 640 -640 480 -375 500 -640 640 -640 480 -427 640 -640 480 -480 640 -561 640 -500 375 -428 640 -640 281 -640 480 -640 428 -640 427 -480 640 -640 480 -425 640 -375 500 -600 469 -640 480 -640 427 -640 426 -640 427 -640 482 -587 640 -640 427 -640 426 -480 640 -640 491 -640 444 -640 426 -424 640 -640 480 -640 384 -426 640 -640 408 -640 425 -640 406 -640 427 -640 351 -640 425 -480 640 -375 500 -426 640 -640 425 -640 427 -339 500 -640 284 -480 640 -640 427 -480 640 -640 480 -640 479 -335 500 -640 478 -640 426 -375 500 -446 640 -640 429 -640 427 -427 640 -640 425 -640 480 -640 511 -427 640 -500 375 -640 425 -426 640 -640 640 -640 480 -480 640 -640 427 -640 448 -375 500 -427 640 -640 427 -640 480 -480 640 -640 531 -480 640 -640 480 -640 427 -640 480 -640 425 -640 480 -640 260 -640 427 -426 640 -640 427 -640 483 -333 500 -640 425 -640 434 -427 640 -500 378 -500 375 -640 383 -500 375 -480 640 -640 480 -428 640 -640 480 -640 428 -640 427 -640 427 -480 640 -640 494 -640 425 -640 480 -640 427 -640 427 -640 480 -640 480 -500 375 -640 480 -640 428 -640 480 -500 358 -500 375 -612 612 -500 333 -640 464 -500 279 -398 500 -640 429 -500 332 -480 640 -600 400 -500 375 -640 480 -480 640 -478 640 -375 500 -500 375 -640 480 -480 640 -381 500 -586 640 -640 390 -500 334 -640 480 -640 480 -640 424 -640 573 -640 512 -500 375 -640 360 -425 640 -640 480 -490 640 -471 640 -500 375 -640 426 -640 640 -640 480 -640 480 -640 427 -640 480 -640 427 -500 332 -640 480 -500 375 -640 480 -640 427 -640 495 -427 640 -640 480 -640 575 -640 398 -434 640 -640 480 -428 640 -427 640 -640 478 -640 426 -640 428 -500 326 -640 441 -640 418 -427 640 -479 640 -640 480 -612 612 -332 500 -375 500 -480 640 -425 640 -640 480 -500 313 -640 427 -640 426 -640 425 -640 480 -640 428 -427 640 -427 640 -640 480 -640 640 -640 427 -640 428 -640 480 -480 640 -640 427 -640 480 -640 416 -640 480 -640 426 -640 480 -427 640 -640 480 -640 480 -427 640 -428 640 -427 640 -480 640 -640 480 -640 480 -480 640 -640 427 -640 480 -640 480 -640 473 -500 375 -640 528 -427 640 -640 427 -640 427 -640 427 -500 333 -500 500 -426 640 -480 640 -500 375 -500 375 -287 500 -612 612 -640 427 -480 640 -640 480 -473 640 -573 640 -640 427 -480 640 -640 361 -500 333 -500 335 -480 640 -640 478 -640 480 -424 640 -640 428 -640 640 -640 480 -612 612 -640 531 -640 480 -640 480 -640 426 -640 435 -640 424 -640 346 -480 640 -640 427 -640 480 -640 427 -375 500 -640 480 -640 480 -640 480 -640 476 -500 320 -640 428 -640 480 -640 427 -612 612 -640 483 -439 640 -640 431 -500 375 -500 375 -640 480 -640 427 -480 640 -640 424 -640 426 -640 480 -640 436 -478 640 -640 427 -640 480 -640 350 -640 427 -640 427 -640 480 -640 480 -478 640 -640 480 -640 480 -480 640 -640 640 -640 425 -480 640 -640 427 -480 640 -480 640 -640 583 -640 427 -640 480 -640 480 -640 360 -640 480 -640 480 -640 480 -640 480 -640 480 -441 640 -640 480 -612 612 -640 480 -431 640 -640 426 -375 500 -640 481 -500 375 -640 480 -599 640 -640 426 -640 427 -500 300 -640 427 -640 480 -640 380 -500 333 -640 443 -426 640 -640 427 -364 500 -640 480 -640 480 -640 426 -427 640 -640 480 -640 480 -640 480 -424 640 -427 640 -640 480 -640 480 -612 612 -640 480 -640 324 -640 449 -640 329 -640 426 -640 360 -640 480 -500 332 -500 375 -640 480 -640 480 -640 480 -375 500 -640 360 -640 504 -560 640 -480 640 -500 327 -640 426 -640 426 -362 500 -427 640 -500 358 -640 428 -640 425 -640 480 -640 427 -640 351 -640 426 -640 428 -640 429 -640 427 -640 503 -640 427 -640 428 -640 480 -640 427 -640 480 -640 361 -640 360 -640 480 -375 500 -480 640 -640 480 -640 427 -640 428 -640 480 -640 480 -640 359 -640 360 -351 500 -434 640 -640 480 -426 640 -640 427 -640 428 -640 480 -640 427 -640 427 -640 429 -640 426 -640 424 -640 254 -387 604 -640 486 -640 480 -640 480 -640 480 -640 480 -640 480 -480 640 -359 640 -640 480 -480 640 -640 480 -427 640 -612 612 -640 321 -500 500 -640 428 -640 427 -640 480 -640 534 -640 479 -500 375 -640 480 -500 429 -640 428 -500 375 -640 640 -640 640 -640 425 -640 419 -514 597 -640 480 -612 612 -640 479 -640 511 -640 425 -640 427 -400 343 -640 428 -640 426 -640 427 -640 480 -640 426 -640 480 -640 640 -640 480 -640 413 -640 387 -640 426 -428 640 -640 480 -640 427 -640 427 -640 426 -640 480 -640 512 -425 640 -640 424 -640 488 -500 332 -640 426 -640 524 -480 640 -640 480 -500 375 -593 640 -640 427 -640 426 -478 640 -640 427 -408 640 -427 640 -640 480 -640 480 -640 428 -640 428 -640 485 -500 375 -640 480 -480 640 -640 427 -480 640 -640 408 -640 480 -500 399 -480 640 -480 640 -640 424 -640 480 -375 500 -500 375 -640 427 -640 480 -640 170 -640 415 -480 640 -640 402 -500 378 -480 640 -480 640 -500 332 -640 511 -640 427 -640 480 -640 427 -640 421 -640 428 -640 424 -640 388 -640 640 -640 480 -640 427 -640 425 -640 457 -640 427 -480 640 -640 427 -500 375 -640 480 -500 375 -640 428 -500 333 -480 640 -640 512 -480 640 -640 480 -427 640 -640 480 -640 480 -500 333 -640 427 -480 640 -640 428 -640 427 -601 640 -640 480 -500 315 -640 480 -640 425 -640 479 -478 640 -640 478 -612 612 -640 480 -427 640 -480 640 -640 396 -614 461 -640 360 -500 375 -640 400 -640 480 -640 468 -640 427 -480 640 -640 426 -640 480 -640 427 -478 640 -480 640 -640 481 -640 480 -500 375 -640 426 -640 329 -640 427 -640 480 -640 427 -640 480 -640 427 -640 427 -480 640 -640 431 -640 512 -640 428 -640 425 -640 480 -508 640 -480 640 -640 427 -480 640 -640 480 -640 425 -640 480 -640 480 -640 428 -640 425 -640 480 -640 427 -640 480 -640 480 -480 640 -640 431 -612 612 -500 333 -559 640 -640 427 -640 480 -640 480 -612 612 -640 480 -480 640 -640 469 -640 396 -640 480 -640 427 -640 480 -640 425 -640 480 -498 640 -640 318 -640 480 -640 480 -500 375 -484 640 -640 427 -640 640 -640 480 -640 427 -640 426 -640 427 -640 346 -640 427 -640 523 -640 428 -400 640 -500 343 -640 480 -640 425 -640 427 -427 640 -428 640 -375 500 -426 640 -640 426 -640 424 -640 462 -640 480 -375 500 -500 375 -640 328 -480 640 -640 359 -640 463 -640 640 -421 640 -640 480 -427 640 -640 564 -640 478 -640 640 -480 640 -640 427 -480 640 -448 299 -640 359 -612 612 -640 427 -640 480 -640 480 -640 427 -640 396 -640 480 -425 640 -640 480 -365 500 -500 375 -427 640 -480 640 -640 480 -300 351 -640 478 -640 480 -640 439 -640 401 -640 427 -640 427 -640 409 -640 512 -450 300 -500 375 -640 480 -480 640 -480 640 -640 427 -640 428 -500 375 -427 640 -500 400 -640 480 -480 640 -480 640 -640 426 -427 640 -640 426 -640 427 -500 375 -612 612 -375 500 -640 427 -640 486 -500 375 -500 332 -640 464 -640 428 -500 332 -640 640 -640 426 -640 481 -480 640 -640 480 -427 640 -500 375 -640 478 -640 480 -640 640 -640 512 -640 480 -640 427 -640 427 -640 480 -640 427 -640 480 -640 425 -500 332 -640 480 -425 640 -446 640 -614 640 -640 480 -640 480 -426 640 -640 428 -500 363 -640 480 -640 480 -640 428 -640 640 -640 480 -640 480 -640 482 -450 600 -640 424 -640 480 -376 500 -640 480 -480 640 -640 480 -640 427 -427 640 -640 480 -640 478 -640 478 -640 480 -640 479 -640 480 -457 640 -375 500 -428 640 -640 261 -640 400 -640 480 -477 640 -428 640 -640 426 -612 612 -480 640 -640 426 -428 640 -640 427 -640 427 -640 480 -500 500 -500 375 -442 640 -640 429 -640 480 -640 480 -480 640 -640 480 -411 411 -375 500 -640 478 -640 427 -640 480 -427 640 -500 375 -640 480 -427 640 -640 427 -640 480 -640 426 -640 463 -640 480 -640 480 -640 480 -427 640 -640 480 -480 640 -640 426 -500 375 -640 427 -640 480 -640 480 -640 434 -425 640 -640 480 -548 640 -333 500 -640 309 -640 480 -640 427 -640 480 -640 359 -640 480 -480 640 -640 360 -640 427 -480 640 -640 427 -640 480 -640 434 -640 480 -500 375 -640 480 -640 318 -640 427 -480 640 -640 427 -480 640 -408 640 -478 640 -500 356 -640 480 -640 428 -640 427 -640 426 -640 427 -640 427 -640 427 -640 480 -640 458 -640 480 -640 480 -427 640 -427 640 -480 640 -640 429 -640 480 -640 480 -640 427 -640 427 -640 480 -375 500 -375 500 -612 612 -640 428 -640 427 -612 612 -640 427 -640 439 -427 640 -640 427 -640 423 -427 640 -500 438 -446 640 -500 356 -640 427 -640 480 -640 480 -640 433 -640 480 -480 640 -640 427 -640 480 -640 426 -640 480 -640 329 -320 240 -640 512 -640 519 -640 427 -640 425 -640 426 -640 435 -640 426 -640 446 -640 480 -375 500 -640 428 -640 513 -640 425 -640 480 -640 423 -640 600 -480 640 -427 640 -480 640 -632 640 -640 480 -640 480 -640 480 -640 425 -427 640 -500 500 -480 640 -640 426 -640 423 -480 640 -427 640 -640 360 -612 612 -640 480 -640 480 -480 640 -640 441 -426 640 -375 500 -640 439 -640 424 -640 428 -640 480 -480 640 -640 453 -640 480 -640 480 -428 640 -640 427 -480 640 -335 500 -375 500 -427 640 -640 425 -500 333 -500 281 -500 375 -640 427 -640 480 -640 385 -640 431 -640 480 -640 480 -640 480 -425 640 -500 331 -640 426 -500 333 -480 640 -640 427 -640 425 -640 639 -640 480 -640 480 -375 500 -333 500 -640 399 -480 640 -640 429 -640 428 -640 478 -640 426 -480 640 -640 558 -640 427 -640 548 -558 640 -640 480 -427 640 -640 360 -640 428 -640 480 -640 428 -640 360 -480 640 -640 480 -640 480 -616 640 -640 427 -500 375 -423 640 -500 375 -375 500 -640 426 -640 428 -640 427 -427 640 -640 476 -640 360 -640 428 -640 426 -640 426 -640 480 -480 640 -500 375 -640 480 -500 400 -480 640 -640 454 -428 640 -640 421 -640 429 -640 480 -640 427 -640 425 -314 640 -640 480 -640 370 -640 427 -632 640 -640 478 -433 640 -640 480 -640 479 -640 427 -427 640 -500 375 -640 430 -333 500 -640 480 -478 640 -640 480 -640 480 -640 428 -612 612 -500 375 -640 400 -640 412 -640 481 -375 500 -333 500 -425 640 -480 640 -640 480 -640 422 -480 640 -432 640 -640 480 -640 359 -640 479 -427 640 -500 384 -640 480 -640 480 -500 400 -640 426 -640 480 -640 404 -640 478 -500 335 -640 480 -640 480 -640 360 -640 457 -640 518 -640 480 -640 381 -427 640 -640 427 -640 425 -640 427 -640 427 -640 427 -500 375 -480 640 -640 480 -640 480 -640 425 -640 425 -640 427 -500 375 -640 428 -640 480 -582 416 -640 388 -640 480 -500 333 -500 333 -640 512 -480 640 -640 425 -640 426 -640 480 -640 640 -640 428 -640 512 -640 426 -640 480 -500 336 -640 480 -427 640 -500 375 -425 640 -603 640 -427 640 -333 500 -612 612 -500 375 -640 480 -640 480 -640 512 -640 639 -640 500 -375 500 -640 426 -640 480 -640 427 -640 426 -640 480 -428 640 -640 480 -640 480 -474 640 -500 375 -480 640 -640 480 -480 640 -640 426 -640 480 -640 426 -640 427 -612 612 -426 640 -640 424 -375 500 -612 612 -640 427 -640 428 -640 427 -428 640 -399 640 -640 480 -421 640 -429 640 -640 406 -500 375 -500 361 -640 480 -640 481 -640 424 -401 500 -640 480 -640 480 -640 194 -640 554 -640 229 -640 462 -427 640 -480 640 -500 334 -500 375 -375 500 -640 516 -640 427 -640 426 -640 480 -640 480 -640 427 -640 359 -427 640 -640 427 -640 420 -425 640 -514 640 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -500 333 -640 453 -478 640 -640 318 -640 480 -640 480 -640 427 -640 480 -640 480 -500 290 -500 375 -640 480 -640 480 -640 427 -640 410 -337 500 -640 426 -640 480 -612 612 -640 480 -640 480 -640 640 -640 480 -421 640 -640 360 -640 427 -500 375 -500 332 -500 375 -640 480 -640 480 -640 480 -640 480 -640 426 -640 427 -500 375 -400 500 -640 427 -399 640 -640 427 -640 427 -640 480 -640 425 -640 431 -500 333 -640 480 -640 571 -640 640 -640 360 -436 640 -480 640 -640 480 -640 480 -480 640 -612 612 -640 553 -480 640 -640 480 -640 426 -479 640 -640 480 -640 480 -500 375 -427 640 -480 640 -640 518 -640 425 -480 640 -640 306 -640 427 -640 424 -640 427 -640 480 -333 500 -640 427 -640 405 -640 329 -457 640 -640 469 -500 375 -425 640 -436 640 -640 480 -494 500 -437 640 -640 480 -640 451 -640 480 -640 427 -500 281 -612 612 -640 480 -640 480 -640 427 -480 640 -640 460 -480 640 -640 427 -640 480 -640 426 -359 640 -500 380 -640 427 -427 640 -640 425 -640 480 -640 480 -640 480 -640 428 -640 424 -640 383 -480 640 -612 612 -640 427 -640 480 -384 640 -640 436 -640 480 -425 640 -479 640 -427 640 -640 478 -482 640 -640 426 -480 640 -640 480 -640 480 -457 640 -640 480 -640 427 -375 500 -517 640 -307 409 -612 612 -640 428 -640 428 -500 333 -640 503 -640 640 -640 616 -640 600 -640 480 -640 427 -640 480 -640 428 -500 375 -640 425 -640 480 -640 428 -640 478 -640 427 -640 421 -640 480 -640 480 -640 480 -500 375 -640 426 -640 423 -640 477 -640 609 -427 640 -427 640 -640 480 -500 311 -375 500 -480 640 -640 427 -640 427 -469 469 -640 480 -640 427 -500 370 -640 454 -640 480 -640 426 -640 427 -426 640 -427 640 -333 500 -426 640 -640 330 -491 500 -424 500 -640 480 -333 500 -413 450 -640 448 -411 640 -640 426 -410 310 -500 332 -640 424 -640 427 -640 640 -500 375 -410 640 -640 480 -380 500 -640 480 -640 480 -480 640 -640 426 -640 480 -478 640 -640 480 -640 429 -500 364 -640 226 -640 148 -480 640 -640 480 -389 640 -640 428 -640 424 -640 471 -480 640 -640 457 -640 513 -640 427 -480 640 -640 419 -316 500 -500 375 -640 427 -640 480 -640 480 -640 480 -428 640 -640 427 -640 427 -640 480 -500 333 -640 480 -500 333 -640 427 -383 500 -640 465 -640 427 -640 427 -500 375 -640 494 -612 612 -640 480 -640 480 -424 640 -640 480 -640 428 -640 480 -640 480 -640 427 -475 640 -640 566 -640 480 -640 427 -500 400 -640 383 -640 427 -612 612 -480 640 -500 400 -612 612 -640 480 -640 453 -480 640 -500 375 -640 427 -640 480 -640 427 -556 640 -480 640 -640 381 -640 480 -640 427 -640 418 -500 375 -500 281 -480 640 -360 640 -640 402 -640 427 -515 640 -500 500 -640 428 -640 427 -640 427 -640 480 -640 480 -618 640 -640 480 -640 480 -640 393 -640 480 -640 426 -640 640 -540 640 -640 640 -640 427 -500 375 -458 640 -640 427 -640 427 -640 481 -500 433 -426 640 -640 480 -640 416 -640 480 -480 640 -640 454 -500 421 -428 640 -640 480 -640 480 -426 640 -640 264 -459 640 -640 426 -640 444 -375 500 -640 467 -640 428 -500 334 -640 480 -427 640 -640 480 -640 478 -640 480 -426 640 -480 640 -375 500 -426 640 -640 480 -427 640 -427 640 -612 612 -640 436 -640 432 -428 640 -640 480 -480 640 -640 428 -640 480 -640 427 -640 480 -640 360 -424 640 -640 359 -640 480 -640 480 -640 427 -640 480 -640 480 -500 375 -500 375 -600 400 -640 480 -375 500 -640 480 -640 512 -480 640 -427 640 -640 480 -388 640 -640 480 -640 480 -640 427 -640 480 -500 375 -441 640 -478 640 -640 427 -425 640 -612 612 -640 428 -640 480 -640 404 -640 480 -640 480 -419 640 -427 640 -640 523 -640 427 -500 375 -640 427 -375 500 -500 381 -640 480 -640 361 -640 480 -640 480 -640 429 -640 480 -640 480 -500 375 -425 640 -612 612 -640 398 -480 640 -480 640 -600 450 -640 309 -500 403 -640 480 -640 480 -427 640 -480 640 -640 541 -640 478 -537 640 -640 427 -480 640 -640 480 -640 426 -640 360 -427 640 -427 640 -640 429 -427 640 -361 640 -640 427 -500 375 -640 340 -640 480 -640 428 -480 640 -640 334 -640 480 -640 273 -640 426 -640 426 -612 612 -500 375 -427 640 -640 480 -640 433 -640 480 -640 342 -640 457 -640 427 -640 480 -640 541 -480 640 -403 500 -480 640 -500 375 -480 640 -633 640 -640 427 -640 426 -640 424 -640 427 -640 480 -640 436 -640 425 -640 480 -480 640 -428 640 -500 375 -640 480 -360 270 -640 428 -640 361 -640 480 -640 480 -640 231 -640 512 -360 640 -640 603 -640 480 -640 428 -426 640 -640 480 -427 640 -640 427 -302 500 -426 640 -640 427 -640 427 -500 333 -640 427 -640 427 -640 426 -640 341 -500 341 -640 428 -480 640 -640 427 -500 447 -640 554 -640 480 -426 640 -640 480 -640 480 -567 470 -480 640 -640 428 -418 640 -480 640 -640 427 -640 480 -640 480 -640 480 -521 640 -640 480 -427 640 -500 334 -640 480 -640 480 -640 426 -640 480 -640 480 -640 477 -640 382 -480 640 -480 640 -640 429 -640 425 -640 427 -640 526 -500 375 -640 426 -640 427 -476 640 -640 480 -640 461 -375 500 -640 426 -640 480 -640 480 -640 294 -640 359 -469 640 -252 640 -640 427 -640 427 -640 480 -427 640 -500 375 -553 640 -640 450 -640 424 -640 480 -500 375 -426 640 -640 428 -427 640 -334 500 -350 640 -640 498 -500 333 -640 480 -640 480 -640 426 -480 640 -240 320 -640 640 -640 480 -640 427 -640 480 -640 531 -500 375 -480 640 -564 640 -640 480 -640 480 -500 473 -640 425 -640 406 -480 640 -640 480 -640 427 -500 375 -640 480 -480 640 -640 480 -360 640 -640 480 -578 640 -480 640 -640 426 -640 478 -640 427 -640 640 -640 480 -640 480 -480 640 -427 640 -640 427 -500 333 -425 640 -503 640 -375 500 -427 640 -640 427 -427 640 -480 640 -640 424 -640 480 -500 375 -640 427 -640 480 -640 479 -433 640 -640 425 -480 640 -458 640 -640 426 -636 478 -479 640 -640 572 -640 462 -640 425 -480 640 -640 480 -640 480 -640 480 -640 426 -640 480 -640 427 -640 480 -640 501 -640 480 -640 444 -640 457 -640 425 -640 427 -640 428 -640 388 -426 640 -640 424 -640 480 -640 386 -640 427 -333 500 -640 480 -480 640 -493 640 -426 640 -480 640 -640 427 -426 640 -640 480 -640 427 -640 511 -640 427 -640 640 -640 480 -458 640 -427 640 -480 640 -640 345 -640 480 -640 426 -480 640 -640 305 -640 480 -640 427 -640 428 -640 480 -640 427 -640 427 -640 427 -498 640 -500 332 -511 640 -478 640 -640 480 -640 480 -427 640 -640 427 -514 640 -424 640 -640 480 -640 425 -500 333 -640 425 -640 480 -500 375 -640 424 -640 360 -640 480 -640 480 -427 640 -640 480 -640 360 -640 480 -430 640 -640 480 -427 640 -640 480 -640 480 -375 500 -474 640 -640 425 -640 480 -640 593 -640 480 -640 425 -480 640 -640 425 -640 427 -500 375 -640 326 -500 375 -640 480 -640 427 -640 480 -612 612 -640 427 -640 458 -500 334 -640 411 -640 358 -500 375 -428 640 -427 640 -612 612 -480 640 -426 640 -526 640 -333 500 -426 640 -640 457 -500 374 -640 392 -612 612 -640 427 -640 393 -640 480 -480 640 -551 640 -612 612 -640 563 -640 427 -640 480 -640 640 -582 640 -640 480 -288 352 -640 427 -640 417 -640 425 -480 640 -500 375 -640 480 -640 470 -640 480 -640 480 -402 500 -640 428 -640 425 -640 428 -640 427 -427 640 -640 480 -640 480 -478 640 -640 480 -480 640 -480 640 -640 428 -640 453 -640 427 -640 427 -640 424 -500 375 -500 375 -427 640 -640 427 -480 640 -640 480 -640 426 -480 640 -400 600 -640 424 -401 401 -640 480 -500 335 -640 480 -640 480 -428 640 -640 480 -640 640 -640 427 -640 480 -640 450 -640 480 -640 480 -640 422 -612 612 -478 640 -640 429 -480 640 -480 640 -640 399 -640 466 -480 640 -640 427 -640 480 -428 640 -480 640 -640 480 -612 612 -480 640 -640 480 -480 640 -640 614 -640 457 -640 457 -640 425 -640 429 -500 375 -640 480 -333 500 -480 640 -634 640 -480 640 -640 359 -640 427 -640 480 -640 428 -500 375 -640 480 -640 426 -640 424 -640 328 -640 428 -375 500 -427 640 -640 427 -428 640 -640 429 -411 640 -427 640 -480 640 -480 640 -640 427 -640 433 -640 361 -333 500 -640 427 -480 640 -640 428 -427 640 -640 427 -640 427 -640 425 -480 640 -640 428 -640 640 -640 480 -640 426 -640 427 -640 480 -640 640 -640 480 -640 480 -612 612 -427 640 -375 500 -500 495 -640 411 -478 640 -612 612 -500 375 -640 480 -640 379 -640 426 -640 480 -480 640 -640 480 -640 479 -426 640 -480 640 -480 640 -640 424 -640 428 -640 425 -640 426 -640 480 -640 425 -427 640 -640 399 -640 423 -640 428 -640 427 -640 480 -640 430 -640 450 -640 480 -480 640 -640 427 -640 457 -640 480 -640 480 -480 640 -640 480 -640 480 -640 426 -640 426 -640 480 -640 421 -640 504 -640 427 -473 640 -640 480 -640 480 -640 480 -640 427 -427 640 -640 423 -500 398 -640 427 -640 427 -640 480 -500 386 -640 426 -640 480 -640 480 -640 428 -427 640 -640 461 -427 640 -640 427 -480 640 -480 640 -500 334 -640 427 -594 640 -488 640 -640 480 -400 604 -640 426 -500 334 -411 640 -640 482 -425 640 -640 359 -640 427 -480 640 -426 640 -640 443 -640 480 -640 445 -427 640 -640 425 -640 464 -427 640 -500 375 -640 480 -640 490 -640 480 -640 509 -640 360 -640 429 -640 639 -425 640 -640 427 -640 429 -640 360 -640 427 -500 375 -640 427 -640 480 -333 500 -640 480 -500 375 -640 480 -640 480 -500 334 -500 382 -557 640 -640 360 -640 427 -427 640 -640 425 -640 480 -640 478 -640 480 -500 461 -640 458 -640 426 -640 387 -640 427 -640 501 -640 480 -500 334 -640 426 -500 333 -640 425 -480 640 -375 500 -480 640 -640 427 -640 480 -640 417 -640 480 -500 375 -640 428 -426 640 -640 456 -640 429 -333 500 -612 612 -500 333 -640 427 -428 640 -331 500 -640 512 -427 640 -640 428 -640 480 -640 509 -640 427 -640 427 -500 333 -427 640 -640 481 -480 640 -480 640 -640 427 -409 640 -640 426 -426 640 -640 428 -640 480 -640 359 -640 427 -500 375 -640 476 -612 612 -425 640 -640 480 -640 480 -640 480 -640 480 -480 640 -640 359 -453 640 -600 422 -203 179 -640 427 -640 426 -640 463 -640 426 -640 425 -480 640 -480 640 -316 425 -640 469 -640 359 -457 640 -640 427 -640 640 -332 500 -640 480 -500 423 -500 500 -640 426 -415 640 -640 428 -640 480 -640 640 -538 640 -640 480 -640 427 -640 480 -500 352 -640 480 -640 436 -500 375 -640 425 -640 457 -400 400 -640 427 -640 427 -480 640 -427 640 -640 480 -486 640 -640 427 -480 640 -640 427 -640 427 -425 640 -640 359 -500 375 -640 480 -640 478 -480 640 -640 480 -640 480 -640 480 -640 298 -640 491 -640 480 -428 640 -640 359 -640 360 -427 640 -428 640 -640 480 -478 640 -478 640 -427 640 -640 480 -640 480 -640 425 -338 500 -500 375 -500 281 -640 480 -480 640 -640 427 -640 513 -428 640 -375 500 -500 375 -612 612 -640 422 -426 640 -425 640 -500 375 -537 640 -640 480 -640 480 -640 480 -427 640 -640 427 -612 612 -640 480 -640 450 -640 457 -640 480 -334 500 -480 640 -640 427 -640 480 -350 350 -427 640 -640 427 -640 427 -500 346 -640 480 -319 500 -336 500 -640 427 -612 612 -640 480 -640 480 -480 640 -527 640 -333 500 -640 512 -500 375 -500 375 -320 240 -640 480 -480 640 -640 480 -480 640 -640 428 -640 480 -480 640 -640 427 -640 423 -640 480 -640 480 -428 640 -640 480 -500 333 -640 480 -427 640 -427 640 -640 480 -640 481 -640 480 -640 427 -640 425 -406 640 -640 164 -640 480 -640 640 -640 428 -500 375 -500 375 -640 408 -640 480 -640 381 -640 425 -480 640 -427 640 -400 500 -640 425 -640 426 -333 500 -426 640 -480 640 -480 640 -640 480 -640 480 -640 425 -640 428 -640 427 -480 640 -640 480 -640 427 -640 424 -640 426 -640 478 -640 427 -426 640 -500 375 -640 480 -640 459 -640 428 -500 375 -640 426 -640 640 -427 640 -640 404 -640 426 -640 425 -360 640 -640 480 -640 426 -640 361 -500 375 -640 480 -640 480 -383 640 -640 427 -500 375 -480 640 -640 480 -640 480 -480 640 -640 428 -640 480 -640 480 -500 343 -640 426 -640 480 -424 640 -640 446 -426 640 -640 480 -600 399 -427 640 -300 225 -480 640 -363 640 -640 480 -640 434 -398 640 -640 426 -640 428 -480 640 -500 334 -425 640 -640 480 -640 427 -640 480 -480 640 -640 480 -640 480 -480 640 -640 428 -640 427 -640 427 -480 640 -640 480 -480 640 -427 640 -640 496 -480 640 -640 512 -640 480 -640 433 -640 427 -640 427 -426 640 -427 640 -352 288 -640 426 -640 427 -500 375 -640 426 -640 480 -640 427 -640 425 -427 640 -640 480 -640 426 -640 480 -500 434 -640 480 -640 426 -426 640 -375 500 -406 500 -427 640 -640 467 -476 640 -421 640 -640 480 -640 427 -500 375 -448 640 -640 480 -640 426 -640 418 -640 480 -500 375 -640 448 -427 640 -480 640 -640 373 -640 426 -640 443 -428 640 -640 466 -640 480 -640 480 -480 640 -640 480 -640 480 -640 480 -640 480 -640 427 -640 480 -640 427 -640 428 -600 450 -640 429 -375 500 -640 428 -426 640 -640 427 -640 512 -640 426 -640 480 -500 318 -640 428 -500 375 -500 376 -640 480 -640 427 -640 428 -448 336 -640 480 -640 480 -640 443 -640 480 -500 333 -500 333 -640 480 -422 640 -640 479 -500 333 -640 479 -640 480 -640 640 -640 425 -480 640 -640 425 -640 480 -441 640 -500 333 -640 570 -500 375 -640 429 -480 640 -640 481 -640 386 -640 437 -640 480 -640 428 -640 480 -640 425 -640 427 -640 320 -500 356 -500 286 -640 426 -427 640 -640 480 -640 480 -427 640 -640 480 -640 427 -628 640 -480 640 -640 427 -426 640 -640 480 -612 612 -640 480 -480 640 -640 639 -480 640 -375 500 -375 500 -640 480 -640 429 -640 426 -500 343 -640 480 -640 425 -426 640 -640 427 -640 480 -426 640 -500 375 -640 425 -640 427 -640 427 -434 296 -640 426 -612 612 -500 375 -640 480 -640 480 -640 426 -480 640 -640 480 -640 427 -640 546 -478 640 -640 480 -640 480 -480 640 -612 612 -640 427 -640 427 -640 480 -640 489 -500 333 -640 440 -640 427 -427 640 -640 426 -640 480 -640 427 -640 639 -640 480 -500 350 -467 640 -640 427 -426 640 -446 640 -640 481 -480 640 -640 426 -640 510 -640 480 -477 640 -640 427 -612 612 -640 480 -640 512 -640 480 -640 429 -640 427 -640 428 -509 640 -429 640 -640 299 -640 480 -640 480 -500 332 -640 480 -500 400 -640 401 -640 480 -640 480 -640 427 -640 480 -640 480 -640 538 -334 500 -480 640 -640 480 -640 424 -500 334 -640 480 -362 640 -640 360 -640 501 -640 457 -640 426 -640 428 -480 640 -640 425 -515 640 -640 480 -640 426 -640 480 -480 640 -640 429 -640 429 -480 640 -640 480 -640 480 -640 480 -500 375 -640 339 -640 372 -500 333 -640 480 -500 375 -427 640 -640 480 -369 520 -640 427 -640 480 -427 640 -500 334 -640 480 -640 480 -500 332 -640 480 -500 375 -640 428 -640 427 -640 480 -640 426 -640 480 -640 460 -640 480 -458 640 -640 480 -640 640 -640 387 -640 480 -640 428 -640 428 -640 480 -640 426 -640 480 -640 425 -640 379 -480 640 -427 640 -640 480 -640 427 -612 612 -640 276 -640 480 -640 426 -640 427 -640 427 -465 640 -640 480 -400 500 -640 476 -640 428 -640 480 -640 446 -640 480 -640 480 -376 500 -640 427 -640 427 -640 426 -500 333 -640 480 -500 375 -640 406 -640 361 -640 478 -612 612 -640 310 -500 496 -640 426 -640 427 -640 359 -640 480 -640 427 -640 480 -480 640 -640 360 -640 425 -604 453 -640 421 -500 354 -500 375 -640 467 -640 480 -500 335 -425 640 -640 427 -640 427 -480 640 -640 413 -640 427 -640 480 -640 518 -640 480 -640 427 -640 336 -640 480 -640 427 -427 640 -640 640 -566 640 -480 640 -500 346 -640 480 -480 640 -480 640 -427 640 -640 425 -426 640 -640 559 -640 480 -500 342 -500 500 -640 448 -640 380 -640 424 -426 640 -640 427 -640 427 -640 427 -640 427 -500 419 -480 640 -480 640 -640 427 -640 480 -640 427 -640 425 -640 427 -640 427 -500 333 -375 500 -640 480 -640 480 -640 434 -640 480 -426 640 -375 500 -612 612 -480 640 -640 427 -640 427 -480 640 -640 426 -640 427 -640 360 -640 480 -640 427 -640 427 -640 480 -600 402 -640 428 -428 640 -640 512 -640 428 -408 500 -640 480 -640 480 -640 427 -500 375 -426 640 -640 640 -480 640 -480 640 -640 360 -640 427 -640 427 -640 426 -640 424 -480 640 -640 433 -360 480 -500 375 -640 479 -640 480 -427 640 -640 480 -640 457 -640 640 -640 490 -500 333 -446 640 -640 480 -640 567 -640 480 -640 404 -640 427 -640 478 -640 426 -500 441 -357 640 -640 429 -640 425 -640 427 -640 427 -612 612 -640 480 -360 640 -640 424 -640 386 -640 480 -640 480 -500 335 -640 480 -640 484 -457 640 -640 436 -480 360 -640 427 -427 640 -500 375 -640 439 -640 427 -479 640 -640 427 -640 512 -354 500 -640 457 -500 375 -418 640 -480 640 -640 480 -427 640 -480 640 -640 360 -480 640 -612 612 -612 612 -375 500 -500 333 -640 428 -500 338 -640 480 -640 480 -640 480 -626 476 -448 640 -375 500 -640 360 -360 360 -640 425 -640 427 -640 426 -640 427 -640 428 -640 480 -480 640 -640 480 -640 427 -480 640 -640 480 -640 479 -640 480 -427 640 -375 500 -640 480 -612 612 -478 640 -640 313 -640 424 -373 640 -480 640 -640 480 -480 640 -640 480 -640 480 -640 427 -640 573 -640 427 -640 480 -640 435 -288 352 -640 480 -640 451 -548 640 -375 500 -640 428 -640 480 -640 476 -383 640 -640 360 -640 478 -640 480 -640 480 -640 426 -612 612 -640 328 -640 480 -480 640 -427 640 -640 403 -400 435 -640 480 -375 500 -640 480 -640 427 -480 640 -640 640 -640 424 -640 428 -480 640 -640 360 -426 640 -612 612 -375 500 -640 480 -640 444 -478 640 -480 640 -500 375 -426 640 -640 425 -640 480 -640 479 -640 429 -640 427 -640 426 -557 640 -640 480 -640 447 -640 480 -426 640 -500 375 -640 427 -640 616 -426 640 -500 332 -640 427 -640 480 -640 480 -428 640 -640 480 -500 405 -480 640 -640 502 -426 640 -640 480 -640 480 -640 424 -640 480 -640 480 -428 640 -640 425 -424 640 -380 285 -640 427 -640 480 -640 427 -427 640 -640 429 -640 480 -640 480 -427 640 -458 640 -537 640 -640 427 -640 640 -408 640 -640 467 -640 598 -375 500 -640 480 -640 480 -229 350 -640 480 -640 426 -480 640 -640 480 -375 500 -640 297 -640 480 -640 483 -640 428 -640 427 -612 612 -500 375 -640 426 -640 480 -640 427 -640 480 -480 640 -640 480 -500 375 -640 482 -640 427 -640 572 -640 516 -640 427 -640 427 -640 481 -640 480 -640 414 -640 427 -640 440 -640 480 -640 480 -500 320 -640 383 -640 354 -480 640 -640 427 -480 640 -640 480 -640 480 -640 480 -640 427 -473 640 -640 359 -640 480 -640 425 -500 334 -553 640 -560 640 -426 640 -640 480 -500 375 -640 480 -480 640 -640 444 -640 480 -640 480 -640 480 -413 640 -640 485 -332 500 -500 273 -375 500 -617 640 -640 480 -640 480 -500 375 -640 427 -500 375 -480 640 -640 425 -425 640 -409 640 -640 426 -640 480 -500 375 -640 480 -500 375 -640 427 -640 480 -334 500 -640 481 -640 445 -360 640 -500 375 -640 427 -640 480 -640 425 -480 640 -640 427 -372 464 -480 640 -640 428 -500 375 -500 375 -640 429 -469 640 -640 426 -500 375 -612 612 -640 427 -640 427 -640 480 -612 612 -640 427 -640 427 -640 361 -500 375 -640 427 -320 240 -640 362 -640 480 -640 428 -640 480 -640 429 -640 426 -640 480 -640 480 -640 480 -640 480 -500 359 -640 480 -480 640 -640 480 -640 480 -426 640 -461 640 -640 427 -427 640 -640 479 -640 480 -640 427 -426 640 -640 427 -333 500 -640 360 -612 612 -480 640 -640 428 -640 480 -640 427 -640 480 -640 429 -640 427 -640 303 -640 480 -500 375 -640 480 -640 424 -640 480 -640 480 -640 622 -640 480 -640 480 -640 480 -640 427 -375 500 -612 612 -332 500 -600 400 -427 640 -640 433 -640 480 -480 640 -350 500 -500 500 -480 640 -480 640 -612 612 -423 640 -640 427 -424 640 -478 640 -640 426 -640 427 -480 640 -422 640 -640 427 -500 333 -640 427 -640 425 -640 480 -500 375 -346 504 -640 480 -640 441 -500 342 -457 640 -640 426 -640 426 -640 480 -640 569 -426 640 -640 427 -640 438 -640 427 -640 429 -640 480 -640 427 -422 640 -503 640 -640 551 -640 573 -640 480 -640 463 -640 427 -426 640 -640 480 -500 334 -640 480 -640 480 -640 480 -427 640 -640 480 -640 446 -424 640 -640 428 -612 612 -612 612 -640 478 -640 428 -640 501 -640 427 -480 640 -640 425 -500 401 -640 427 -640 429 -640 429 -451 640 -640 427 -480 640 -500 333 -333 500 -640 424 -640 427 -500 500 -640 427 -480 640 -640 426 -480 640 -427 640 -612 612 -640 427 -640 480 -500 334 -480 640 -640 426 -640 428 -640 480 -500 375 -640 480 -640 426 -640 425 -424 640 -640 480 -640 425 -640 427 -640 493 -500 367 -375 500 -640 374 -640 480 -333 500 -480 640 -640 430 -640 480 -640 427 -500 375 -500 375 -640 381 -640 427 -640 480 -640 424 -480 640 -640 425 -640 427 -640 466 -640 480 -500 333 -640 480 -640 427 -640 428 -640 510 -640 427 -359 640 -426 640 -335 500 -425 640 -640 479 -480 640 -500 346 -640 427 -640 320 -500 334 -498 640 -500 400 -480 640 -500 375 -640 480 -500 375 -640 427 -640 480 -480 640 -640 480 -640 427 -640 186 -640 427 -640 427 -480 640 -640 426 -640 479 -480 640 -640 480 -640 429 -640 427 -640 427 -500 333 -640 427 -429 640 -640 480 -480 640 -375 500 -640 427 -640 480 -426 640 -385 308 -640 427 -640 480 -500 375 -640 478 -640 427 -640 427 -480 640 -500 375 -640 427 -640 360 -640 480 -640 427 -640 480 -640 427 -640 390 -640 427 -457 640 -500 500 -500 375 -359 640 -500 375 -640 431 -600 400 -640 509 -428 640 -427 640 -427 640 -640 428 -640 425 -612 612 -640 424 -375 500 -335 500 -640 425 -640 480 -500 405 -640 426 -640 480 -640 564 -640 427 -480 640 -408 500 -640 480 -640 640 -640 480 -640 480 -640 513 -640 480 -474 640 -640 427 -500 322 -508 640 -640 439 -425 640 -427 640 -640 480 -500 375 -320 240 -640 480 -332 500 -640 427 -640 426 -480 640 -640 427 -640 427 -640 512 -640 478 -640 480 -640 480 -640 427 -500 375 -640 480 -500 375 -425 640 -640 605 -640 480 -640 538 -640 360 -427 640 -334 500 -480 640 -640 425 -427 640 -640 426 -640 428 -640 640 -640 427 -640 480 -640 478 -640 424 -640 480 -640 425 -469 640 -426 640 -500 288 -640 359 -640 366 -640 427 -640 482 -640 428 -640 263 -640 427 -640 426 -640 479 -640 480 -328 500 -640 480 -480 640 -480 640 -640 427 -612 612 -634 640 -640 426 -478 640 -439 500 -640 426 -640 480 -640 460 -640 640 -346 500 -428 640 -500 375 -640 480 -640 480 -478 640 -640 468 -640 426 -500 333 -480 640 -640 381 -640 426 -640 480 -640 478 -640 426 -640 480 -640 428 -480 640 -640 480 -640 480 -335 500 -640 427 -640 425 -640 480 -640 418 -500 375 -640 640 -640 378 -640 443 -480 640 -480 640 -640 480 -640 480 -640 383 -640 427 -518 640 -640 627 -500 228 -640 426 -640 426 -427 640 -640 480 -612 612 -640 470 -640 480 -600 600 -640 480 -640 425 -640 480 -640 480 -640 480 -500 375 -480 640 -640 480 -640 482 -225 640 -428 640 -439 640 -640 480 -400 300 -489 640 -640 427 -640 204 -640 427 -640 396 -500 333 -640 481 -640 428 -640 428 -640 424 -500 375 -451 298 -640 425 -640 428 -500 375 -640 480 -500 375 -640 426 -474 640 -640 425 -640 424 -364 640 -500 333 -640 606 -427 640 -640 427 -497 640 -457 640 -640 427 -640 427 -640 427 -480 640 -640 480 -640 486 -640 427 -640 426 -640 433 -640 471 -479 640 -640 427 -640 426 -480 640 -640 480 -500 375 -375 500 -640 480 -640 480 -396 500 -500 375 -640 480 -640 480 -480 640 -640 427 -640 360 -429 640 -640 427 -640 427 -640 431 -612 612 -640 480 -640 429 -640 434 -500 333 -500 367 -640 480 -427 640 -427 640 -640 428 -480 640 -500 333 -640 427 -640 480 -640 259 -640 480 -640 428 -640 463 -640 426 -640 427 -375 500 -640 480 -584 640 -500 375 -640 640 -640 427 -640 480 -640 426 -480 640 -640 480 -480 640 -640 480 -426 640 -425 640 -640 426 -640 480 -640 427 -478 640 -640 484 -437 640 -640 427 -640 428 -500 333 -500 375 -640 453 -640 427 -480 640 -640 428 -640 427 -640 500 -480 640 -427 640 -500 375 -640 427 -640 480 -640 427 -500 332 -500 375 -502 640 -640 640 -640 425 -640 360 -640 426 -640 499 -640 359 -640 428 -640 480 -640 480 -640 251 -640 480 -640 427 -640 480 -640 427 -375 500 -480 640 -640 480 -640 480 -517 640 -640 480 -480 640 -612 612 -480 640 -640 424 -640 480 -640 480 -640 421 -427 640 -640 427 -640 480 -640 427 -640 387 -480 640 -640 407 -640 360 -640 439 -640 404 -640 482 -640 480 -427 640 -640 427 -640 480 -375 500 -640 428 -640 480 -640 391 -480 640 -640 480 -640 480 -640 427 -612 612 -640 480 -640 428 -400 325 -458 640 -640 442 -640 428 -427 640 -632 640 -640 622 -640 429 -427 640 -640 480 -427 640 -640 428 -548 411 -640 426 -484 640 -640 426 -640 480 -640 480 -514 640 -500 333 -500 500 -640 627 -424 640 -444 640 -640 426 -640 424 -640 427 -640 480 -640 426 -640 480 -480 640 -640 480 -333 500 -640 480 -640 480 -376 500 -640 426 -427 640 -640 426 -500 375 -429 640 -480 640 -640 480 -640 457 -640 374 -640 480 -640 480 -500 377 -640 373 -640 480 -500 375 -640 360 -640 485 -640 640 -640 480 -640 480 -333 500 -640 426 -640 426 -640 451 -640 480 -640 444 -640 523 -480 640 -480 640 -640 480 -375 500 -458 640 -480 640 -500 375 -640 426 -640 457 -640 480 -375 500 -640 418 -640 427 -640 434 -640 428 -640 425 -640 436 -640 426 -640 319 -640 480 -500 375 -640 427 -640 427 -500 332 -640 427 -375 500 -640 480 -640 495 -640 361 -478 640 -480 640 -640 424 -640 384 -612 612 -640 426 -640 480 -500 500 -640 356 -480 640 -426 640 -640 640 -500 375 -640 360 -640 478 -480 640 -640 480 -425 640 -640 423 -480 640 -480 640 -640 480 -640 427 -640 464 -483 640 -480 640 -640 359 -612 612 -640 531 -640 396 -640 427 -640 480 -640 480 -500 352 -640 480 -640 427 -640 480 -640 541 -640 427 -640 427 -480 640 -640 427 -640 427 -427 640 -640 555 -640 480 -640 426 -640 428 -424 640 -500 333 -640 426 -640 427 -512 640 -640 360 -640 427 -427 640 -500 198 -640 480 -375 500 -480 640 -640 426 -640 480 -640 428 -640 459 -640 427 -640 426 -640 480 -640 391 -640 480 -640 428 -640 480 -640 427 -480 640 -640 427 -640 427 -640 427 -640 478 -640 426 -640 480 -320 240 -480 640 -427 640 -640 480 -640 453 -640 428 -480 640 -480 640 -640 426 -640 478 -640 480 -640 480 -640 432 -640 483 -640 361 -640 427 -480 640 -480 640 -500 374 -640 480 -640 480 -640 359 -640 360 -480 640 -427 640 -430 640 -640 427 -640 408 -480 640 -333 500 -640 480 -428 640 -480 640 -640 427 -425 640 -640 480 -640 480 -375 500 -500 362 -332 500 -375 500 -640 400 -640 454 -435 640 -334 500 -424 640 -640 480 -500 375 -480 640 -640 424 -640 480 -640 427 -640 640 -640 378 -640 427 -640 480 -500 406 -640 360 -640 360 -424 640 -427 640 -640 427 -640 480 -640 427 -640 480 -640 458 -640 425 -640 459 -640 480 -640 480 -640 480 -480 640 -640 426 -640 480 -640 427 -640 426 -640 400 -640 480 -640 480 -640 427 -640 513 -500 361 -639 640 -481 640 -640 427 -640 425 -640 426 -500 308 -640 480 -640 458 -640 428 -612 612 -452 640 -640 426 -480 640 -511 640 -640 426 -640 480 -427 640 -640 480 -500 328 -640 480 -640 480 -383 640 -640 480 -500 330 -640 427 -500 375 -640 427 -500 332 -428 640 -640 502 -640 425 -640 426 -500 375 -640 480 -640 388 -640 427 -427 640 -639 640 -640 640 -640 427 -640 431 -640 480 -640 426 -640 428 -480 640 -640 426 -640 427 -500 375 -640 640 -640 475 -640 412 -640 428 -500 333 -640 480 -640 512 -375 500 -454 640 -500 371 -640 427 -640 425 -640 480 -640 640 -640 640 -640 360 -640 426 -640 426 -640 480 -612 612 -480 640 -640 428 -640 360 -640 480 -375 500 -478 640 -640 427 -640 480 -427 640 -360 640 -600 400 -612 612 -640 480 -640 482 -640 424 -640 480 -640 480 -640 340 -640 426 -640 427 -427 640 -640 427 -640 480 -480 640 -640 428 -495 640 -640 480 -640 480 -480 640 -640 480 -640 480 -480 640 -640 425 -640 427 -640 480 -427 640 -640 428 -640 640 -640 425 -480 640 -640 427 -640 480 -640 427 -640 512 -500 375 -640 427 -640 480 -640 412 -436 640 -640 426 -500 375 -640 428 -640 640 -640 360 -640 427 -640 480 -640 428 -640 427 -500 375 -640 480 -640 427 -640 480 -640 304 -500 375 -427 640 -640 428 -640 480 -640 481 -428 640 -480 640 -640 458 -500 375 -640 480 -640 480 -640 383 -640 425 -500 375 -640 426 -640 480 -640 427 -640 427 -427 640 -640 480 -640 480 -640 480 -640 640 -480 640 -640 426 -640 480 -640 483 -640 360 -640 478 -640 427 -640 424 -612 612 -640 481 -640 480 -640 426 -480 640 -640 426 -480 640 -640 428 -640 480 -375 500 -480 640 -640 480 -500 370 -640 480 -640 427 -500 368 -500 375 -640 543 -427 640 -500 361 -498 640 -640 427 -640 480 -500 356 -640 480 -640 462 -640 480 -480 640 -640 480 -640 480 -385 289 -640 480 -500 333 -478 640 -640 480 -640 383 -640 481 -640 457 -640 443 -640 425 -480 640 -640 480 -640 426 -640 480 -640 428 -480 640 -500 375 -500 375 -640 425 -640 361 -640 427 -640 480 -640 480 -500 400 -640 427 -640 478 -640 427 -640 427 -500 333 -640 421 -500 375 -640 425 -640 423 -480 640 -480 640 -500 375 -640 480 -640 399 -335 500 -640 480 -640 424 -427 640 -640 427 -640 480 -640 425 -335 500 -640 426 -640 426 -640 426 -640 480 -640 384 -640 374 -426 640 -333 500 -500 375 -480 640 -640 337 -640 459 -640 480 -640 358 -640 480 -629 640 -427 640 -640 426 -640 458 -640 640 -563 640 -640 497 -640 480 -480 640 -640 413 -640 426 -500 376 -640 427 -640 640 -426 640 -480 640 -640 480 -640 428 -640 426 -426 640 -480 640 -427 640 -640 480 -429 640 -480 640 -640 512 -427 640 -640 368 -640 480 -640 480 -640 480 -640 480 -640 428 -640 429 -640 426 -612 612 -640 480 -427 640 -480 640 -640 427 -640 360 -640 426 -640 480 -500 346 -640 621 -640 360 -640 480 -640 428 -640 399 -500 375 -640 480 -480 640 -640 475 -500 333 -640 424 -500 400 -640 360 -495 640 -640 484 -640 427 -640 427 -500 334 -640 480 -500 398 -640 449 -640 480 -501 640 -500 334 -640 427 -640 439 -640 427 -640 427 -640 480 -580 640 -640 480 -480 640 -640 360 -428 640 -513 640 -640 427 -640 480 -440 640 -640 427 -562 640 -640 427 -640 480 -500 375 -426 640 -640 427 -640 427 -640 416 -640 425 -640 512 -500 375 -478 640 -521 640 -500 375 -640 433 -640 513 -640 428 -640 383 -640 427 -640 454 -640 427 -640 483 -640 426 -458 640 -640 480 -640 480 -640 428 -612 612 -564 640 -640 480 -500 333 -640 424 -640 426 -509 640 -640 425 -427 640 -640 341 -500 375 -457 640 -480 640 -640 428 -500 334 -640 480 -480 640 -640 429 -640 425 -428 640 -500 333 -480 640 -404 640 -640 480 -640 480 -640 426 -640 502 -640 425 -527 640 -640 425 -640 427 -427 640 -640 428 -425 640 -640 434 -640 480 -640 480 -640 427 -640 424 -640 480 -640 440 -640 439 -640 424 -640 360 -640 427 -640 480 -640 480 -640 424 -478 640 -640 481 -640 426 -640 480 -640 480 -500 496 -640 373 -640 439 -640 310 -640 640 -500 393 -640 428 -640 478 -640 424 -640 480 -640 480 -640 427 -500 334 -640 426 -500 453 -516 640 -640 488 -500 375 -640 424 -640 427 -640 480 -333 500 -640 366 -640 425 -425 640 -500 333 -581 640 -427 640 -480 640 -640 480 -640 363 -612 612 -640 427 -640 480 -640 480 -640 480 -428 640 -640 360 -640 458 -640 400 -640 427 -304 500 -640 480 -500 375 -640 436 -640 425 -427 640 -640 480 -640 427 -640 463 -554 640 -500 344 -375 500 -500 500 -640 480 -500 375 -500 333 -640 433 -640 464 -426 640 -640 512 -480 640 -500 375 -640 554 -640 427 -640 469 -640 480 -640 512 -374 500 -480 640 -263 500 -640 427 -426 640 -609 640 -640 427 -640 360 -640 480 -640 480 -480 640 -640 512 -640 451 -640 480 -640 480 -426 640 -640 480 -640 457 -640 441 -612 612 -577 640 -640 480 -333 500 -640 427 -640 480 -640 425 -512 640 -640 512 -612 612 -640 360 -480 640 -640 480 -424 640 -640 480 -640 428 -640 427 -500 375 -423 640 -640 480 -640 480 -375 500 -640 501 -500 331 -640 425 -612 612 -640 640 -428 640 -500 375 -640 427 -640 441 -500 375 -640 480 -640 481 -425 640 -480 640 -640 425 -640 480 -640 480 -640 480 -480 640 -640 360 -640 480 -432 287 -640 427 -357 500 -640 427 -500 375 -457 640 -640 401 -640 426 -412 200 -427 640 -640 479 -612 612 -375 500 -478 640 -612 612 -640 423 -640 396 -500 333 -640 351 -500 333 -640 428 -500 375 -640 427 -640 434 -500 375 -640 428 -640 427 -346 500 -480 640 -608 640 -640 501 -640 480 -640 480 -640 480 -480 640 -640 392 -375 500 -640 427 -640 427 -480 640 -640 640 -460 640 -640 428 -500 455 -640 425 -640 427 -640 480 -640 480 -640 480 -640 465 -640 428 -500 375 -500 281 -640 427 -640 424 -612 612 -640 429 -500 416 -584 414 -480 640 -640 459 -640 426 -497 640 -425 640 -480 640 -640 427 -640 427 -640 360 -640 480 -426 640 -640 480 -640 427 -640 427 -480 640 -640 338 -640 480 -427 640 -640 424 -427 640 -480 640 -424 640 -480 640 -640 427 -640 480 -640 422 -640 458 -640 427 -640 480 -640 480 -612 612 -640 480 -640 428 -640 480 -640 364 -375 500 -640 640 -640 426 -480 640 -640 480 -640 481 -640 480 -640 480 -640 480 -640 534 -640 480 -640 426 -640 480 -640 480 -500 354 -640 425 -640 426 -427 640 -640 480 -640 480 -640 480 -640 480 -640 425 -478 640 -427 640 -640 573 -479 640 -640 480 -640 480 -640 360 -640 480 -640 441 -480 640 -500 333 -480 640 -480 640 -640 480 -640 427 -640 479 -640 399 -640 425 -640 493 -640 425 -480 640 -480 640 -400 533 -640 589 -640 480 -640 505 -640 426 -500 375 -640 426 -640 425 -375 500 -500 370 -385 289 -640 480 -640 427 -640 427 -640 480 -640 480 -640 480 -416 640 -500 375 -640 360 -640 480 -640 640 -480 640 -640 428 -640 457 -375 500 -640 480 -640 480 -612 612 -640 427 -640 480 -480 640 -640 481 -640 418 -640 415 -500 438 -640 431 -640 480 -640 428 -640 480 -640 480 -335 500 -640 480 -640 480 -640 427 -640 428 -640 478 -500 375 -640 480 -640 480 -640 416 -640 425 -640 427 -500 313 -640 464 -640 428 -640 480 -640 426 -640 486 -640 480 -640 480 -640 427 -276 500 -640 480 -457 640 -640 482 -640 428 -480 640 -500 374 -500 376 -500 332 -640 359 -393 500 -500 332 -458 640 -478 640 -640 478 -640 480 -640 399 -640 428 -436 640 -524 640 -640 480 -450 450 -640 427 -640 427 -640 426 -640 480 -640 480 -640 424 -428 640 -640 424 -450 600 -480 640 -640 320 -640 425 -350 500 -472 640 -640 640 -480 640 -640 514 -640 480 -640 603 -640 583 -568 320 -640 427 -500 400 -480 640 -640 427 -600 400 -612 612 -640 480 -640 480 -424 640 -640 389 -640 426 -480 640 -480 640 -640 480 -640 480 -640 406 -500 334 -640 480 -428 640 -640 438 -640 480 -550 640 -640 426 -500 332 -500 381 -640 424 -308 300 -640 472 -640 480 -375 500 -428 640 -640 427 -640 480 -612 612 -640 428 -427 640 -500 264 -480 640 -640 480 -640 427 -640 439 -500 335 -375 500 -381 500 -500 333 -640 425 -500 375 -640 480 -500 340 -640 480 -640 480 -640 480 -334 500 -640 472 -480 640 -640 425 -427 640 -640 426 -640 459 -640 480 -376 500 -500 375 -500 387 -411 640 -640 426 -427 640 -375 500 -480 640 -432 640 -640 480 -429 640 -500 375 -640 427 -566 640 -640 480 -640 480 -640 480 -500 333 -640 480 -640 480 -640 427 -640 473 -480 640 -640 427 -640 426 -640 640 -640 427 -640 640 -640 425 -640 478 -333 500 -640 480 -640 426 -640 621 -427 640 -640 429 -640 427 -466 640 -480 640 -640 425 -334 500 -427 640 -640 457 -427 640 -375 500 -640 423 -600 400 -640 427 -500 333 -375 500 -612 612 -427 640 -426 640 -640 480 -640 409 -640 480 -341 500 -640 426 -640 420 -383 640 -640 428 -640 480 -640 316 -640 427 -640 480 -640 480 -640 427 -480 640 -640 360 -500 353 -425 640 -640 480 -640 480 -640 427 -640 425 -375 500 -640 480 -640 427 -640 424 -500 332 -500 375 -480 640 -640 479 -640 480 -640 480 -500 375 -640 480 -500 283 -640 427 -500 375 -500 375 -640 360 -480 640 -640 353 -640 458 -433 640 -640 480 -640 480 -480 640 -640 424 -640 480 -378 640 -640 425 -640 414 -480 640 -640 480 -640 427 -612 612 -640 386 -640 360 -640 426 -375 500 -500 333 -500 400 -640 480 -480 640 -433 640 -144 190 -640 407 -640 427 -640 480 -640 480 -640 425 -640 480 -640 480 -640 426 -640 427 -500 333 -640 478 -640 425 -640 427 -500 375 -640 480 -427 640 -640 427 -640 538 -640 468 -500 375 -640 480 -500 375 -427 640 -500 375 -640 478 -426 640 -480 640 -640 425 -640 427 -480 640 -640 427 -640 426 -640 480 -511 640 -640 480 -640 480 -640 480 -640 480 -480 640 -640 427 -480 640 -640 426 -640 427 -640 426 -640 426 -500 375 -640 426 -500 375 -640 480 -640 425 -640 478 -640 427 -375 500 -500 375 -640 426 -385 289 -640 428 -640 427 -333 500 -640 426 -500 375 -334 500 -500 334 -500 375 -394 500 -640 427 -640 427 -640 480 -444 640 -640 480 -640 427 -640 480 -445 590 -640 425 -426 640 -552 640 -480 640 -640 413 -640 451 -640 427 -480 640 -428 640 -480 640 -640 429 -640 443 -640 640 -640 266 -427 640 -425 640 -640 427 -500 375 -500 333 -427 640 -480 640 -415 625 -500 375 -640 493 -640 461 -640 482 -640 434 -480 640 -640 400 -480 640 -500 375 -500 333 -454 342 -500 334 -640 428 -640 622 -640 480 -640 480 -427 640 -640 183 -640 420 -428 640 -640 426 -425 640 -640 427 -640 480 -640 427 -493 640 -640 480 -640 426 -640 480 -640 480 -612 612 -640 503 -640 427 -640 481 -640 480 -640 640 -480 640 -455 640 -640 480 -640 480 -500 375 -640 427 -480 640 -480 640 -640 428 -640 424 -640 426 -640 640 -427 640 -361 640 -427 640 -640 426 -640 427 -612 612 -427 640 -480 640 -375 500 -500 375 -640 427 -640 429 -640 427 -640 481 -640 480 -332 500 -640 421 -640 430 -640 481 -500 375 -640 458 -640 426 -480 640 -640 480 -640 427 -375 500 -640 428 -640 427 -480 640 -640 480 -640 426 -480 640 -640 480 -640 480 -640 468 -640 480 -426 640 -640 427 -636 640 -480 640 -427 640 -640 466 -640 489 -500 375 -500 337 -375 500 -640 426 -640 427 -494 640 -640 427 -640 480 -640 427 -375 500 -500 333 -640 427 -500 375 -640 426 -600 402 -640 480 -360 640 -640 427 -480 640 -640 480 -640 640 -640 426 -424 640 -640 480 -500 375 -640 480 -640 480 -640 480 -427 640 -640 458 -640 463 -480 640 -640 480 -640 480 -640 427 -640 480 -640 424 -427 640 -640 480 -612 612 -640 428 -500 375 -640 427 -426 640 -640 480 -333 500 -523 640 -427 640 -640 427 -511 640 -480 640 -612 612 -612 612 -480 640 -500 375 -480 640 -640 427 -640 427 -640 480 -526 640 -640 360 -333 500 -427 640 -640 628 -640 458 -640 428 -427 640 -500 305 -480 640 -375 500 -640 427 -640 480 -427 640 -640 480 -640 480 -355 500 -640 424 -640 487 -640 427 -375 500 -480 640 -500 375 -612 612 -500 375 -640 480 -640 427 -640 427 -640 429 -500 375 -640 378 -612 612 -426 640 -640 480 -632 640 -500 375 -418 640 -640 499 -640 478 -350 500 -640 427 -640 480 -640 480 -640 480 -640 425 -640 360 -640 480 -640 427 -640 427 -439 640 -473 600 -500 473 -640 408 -640 427 -640 480 -427 640 -640 427 -500 375 -640 640 -640 426 -640 427 -640 428 -500 333 -640 480 -640 427 -612 612 -427 640 -640 480 -640 480 -640 480 -640 425 -480 640 -640 410 -480 640 -640 427 -640 478 -640 427 -612 612 -640 427 -640 425 -640 470 -348 500 -599 640 -640 316 -427 640 -640 480 -640 480 -427 640 -442 640 -320 240 -640 425 -500 375 -427 640 -640 480 -500 500 -479 640 -500 333 -640 480 -426 640 -640 427 -640 640 -640 480 -640 427 -640 427 -640 429 -640 428 -375 500 -640 480 -640 426 -640 426 -640 425 -640 638 -640 429 -640 425 -480 640 -640 478 -640 360 -480 640 -480 640 -640 426 -500 333 -612 612 -480 640 -500 375 -640 427 -332 500 -500 375 -320 480 -640 423 -375 500 -640 425 -500 375 -640 480 -392 640 -640 569 -500 334 -640 425 -500 375 -480 640 -640 480 -640 427 -640 427 -640 480 -480 640 -640 306 -640 424 -500 348 -500 350 -500 332 -424 640 -640 425 -640 480 -428 640 -640 480 -500 286 -640 480 -640 480 -480 640 -640 401 -640 424 -640 427 -480 640 -386 500 -640 414 -640 414 -480 640 -640 489 -640 457 -480 640 -640 427 -640 526 -434 640 -478 640 -640 480 -640 279 -640 427 -425 640 -333 500 -640 360 -640 480 -457 640 -374 500 -500 375 -480 640 -640 435 -640 480 -316 500 -640 427 -333 500 -640 426 -474 640 -640 480 -640 478 -640 426 -640 424 -427 640 -640 480 -640 489 -416 500 -640 478 -640 480 -640 427 -640 427 -452 500 -400 400 -427 640 -336 254 -640 401 -333 500 -640 427 -640 366 -640 458 -480 640 -640 427 -500 375 -640 359 -500 375 -480 640 -480 640 -640 480 -640 424 -640 480 -640 429 -640 532 -640 478 -480 640 -640 426 -640 400 -640 359 -640 427 -640 512 -640 480 -640 427 -640 480 -640 481 -640 426 -640 432 -427 640 -500 375 -427 640 -640 480 -425 640 -480 640 -480 640 -640 430 -640 480 -640 480 -640 427 -600 450 -640 360 -640 480 -640 424 -640 425 -612 612 -640 482 -640 480 -640 429 -640 480 -640 480 -480 640 -640 480 -480 640 -640 427 -640 428 -640 480 -640 428 -640 545 -640 426 -480 640 -640 480 -410 500 -640 427 -640 597 -640 480 -640 427 -640 428 -612 612 -479 640 -640 482 -640 480 -500 375 -640 425 -640 480 -640 480 -640 480 -640 480 -612 612 -428 640 -500 375 -480 640 -640 428 -640 427 -500 375 -640 359 -640 426 -640 480 -640 478 -332 500 -640 480 -427 640 -640 480 -480 640 -640 427 -640 480 -640 480 -640 432 -500 333 -640 480 -480 640 -480 640 -526 640 -640 480 -640 480 -640 440 -500 334 -384 640 -640 354 -375 500 -480 640 -640 418 -640 480 -640 426 -640 427 -640 427 -640 424 -500 375 -480 640 -640 424 -500 398 -640 480 -640 427 -640 480 -640 480 -375 500 -424 640 -640 480 -640 478 -480 640 -427 640 -500 373 -425 640 -640 480 -640 427 -480 640 -484 640 -480 640 -640 426 -640 381 -480 640 -427 640 -640 512 -640 424 -426 640 -640 400 -640 480 -640 442 -640 480 -480 640 -500 375 -425 640 -640 457 -426 640 -640 432 -480 640 -640 480 -640 480 -427 640 -640 425 -375 500 -640 480 -427 640 -640 428 -612 612 -640 361 -640 466 -450 360 -640 624 -500 335 -428 640 -640 427 -480 640 -640 425 -640 427 -640 480 -500 375 -480 640 -640 298 -640 480 -500 449 -640 426 -336 448 -500 375 -640 480 -640 640 -427 640 -640 360 -640 427 -478 640 -640 427 -640 427 -640 476 -544 640 -640 480 -640 478 -426 640 -640 480 -640 426 -428 640 -480 640 -300 400 -640 603 -640 480 -428 640 -383 640 -480 640 -640 480 -640 418 -375 500 -640 439 -500 333 -640 427 -640 491 -640 482 -500 333 -640 428 -640 427 -427 640 -640 480 -639 640 -640 480 -640 473 -640 480 -640 480 -640 544 -640 456 -480 640 -640 384 -640 427 -500 281 -640 480 -640 312 -640 457 -640 427 -640 427 -500 348 -640 480 -427 640 -640 426 -640 425 -640 480 -640 480 -500 375 -480 640 -425 640 -640 588 -640 480 -640 434 -640 427 -367 500 -506 380 -375 500 -640 428 -640 424 -624 640 -425 640 -500 375 -639 640 -600 400 -500 375 -640 480 -400 600 -480 640 -500 375 -640 436 -640 480 -428 640 -640 452 -480 640 -640 428 -612 612 -640 512 -500 384 -375 500 -426 640 -479 640 -640 480 -640 411 -640 480 -640 427 -640 359 -640 478 -640 480 -337 500 -640 416 -427 640 -640 480 -640 480 -612 612 -612 612 -480 640 -375 500 -640 427 -640 480 -640 426 -425 640 -480 640 -640 480 -640 480 -640 427 -640 428 -640 427 -640 480 -480 640 -640 426 -640 501 -640 480 -480 640 -640 480 -549 640 -372 500 -640 480 -640 640 -426 640 -500 375 -640 482 -640 427 -640 426 -333 500 -426 640 -500 334 -640 439 -640 429 -640 480 -480 640 -640 426 -500 375 -333 500 -640 587 -500 375 -640 425 -640 426 -640 425 -640 427 -640 429 -500 375 -427 640 -640 480 -640 361 -427 640 -500 375 -640 480 -640 424 -452 640 -640 480 -640 480 -640 480 -640 480 -640 427 -500 375 -640 480 -433 640 -640 480 -640 480 -547 640 -640 428 -640 427 -640 428 -640 427 -640 545 -480 640 -640 640 -640 476 -640 480 -640 438 -500 424 -480 640 -428 640 -500 332 -457 640 -427 640 -500 375 -640 464 -513 640 -640 480 -640 427 -640 359 -640 426 -640 426 -640 428 -640 480 -640 480 -338 500 -457 640 -640 427 -500 375 -640 426 -500 375 -640 428 -640 480 -612 612 -640 425 -401 288 -640 425 -640 426 -640 425 -500 375 -640 512 -640 428 -513 640 -640 428 -474 640 -640 425 -322 214 -612 612 -640 480 -640 512 -640 480 -426 640 -640 513 -640 640 -640 480 -640 425 -427 640 -640 428 -640 480 -534 640 -640 480 -640 480 -400 640 -425 640 -640 428 -640 427 -640 480 -640 480 -640 428 -640 480 -427 640 -640 360 -640 427 -640 480 -640 480 -640 502 -640 588 -640 480 -640 480 -640 480 -640 427 -480 640 -375 500 -612 612 -640 480 -480 640 -427 640 -427 640 -500 332 -640 427 -500 375 -640 480 -640 427 -640 427 -480 640 -640 424 -640 480 -640 480 -640 480 -640 427 -640 529 -426 640 -640 329 -640 480 -640 480 -330 500 -640 429 -640 453 -640 383 -640 437 -640 457 -640 640 -500 375 -640 539 -640 427 -640 426 -640 425 -375 500 -640 427 -640 480 -500 300 -480 640 -500 335 -640 480 -640 427 -640 480 -640 427 -640 480 -640 480 -640 427 -638 394 -640 480 -640 427 -640 427 -479 640 -493 640 -480 640 -640 465 -500 375 -500 381 -640 478 -498 640 -473 640 -640 425 -640 480 -480 640 -640 428 -640 356 -640 426 -640 480 -640 425 -640 427 -480 640 -640 482 -480 640 -640 427 -640 480 -640 427 -640 426 -640 427 -427 640 -640 413 -640 480 -500 375 -640 424 -640 610 -371 640 -640 361 -500 375 -640 427 -640 480 -640 480 -640 426 -640 425 -500 312 -640 426 -427 640 -640 427 -640 480 -375 500 -640 480 -640 480 -640 427 -640 360 -640 480 -480 640 -640 427 -640 427 -640 427 -425 640 -640 427 -640 480 -640 427 -640 427 -333 500 -640 427 -375 500 -539 640 -640 478 -640 480 -640 427 -493 640 -640 427 -612 612 -334 500 -480 640 -640 558 -640 512 -640 480 -640 426 -640 480 -640 479 -480 640 -500 375 -640 480 -640 480 -640 478 -480 640 -612 612 -640 423 -500 334 -640 425 -640 478 -360 640 -513 640 -640 428 -640 425 -640 427 -427 640 -500 415 -640 427 -640 640 -640 427 -640 473 -500 375 -334 500 -640 480 -640 480 -640 428 -640 480 -640 499 -640 427 -640 450 -640 411 -640 481 -425 640 -427 640 -640 427 -480 640 -576 640 -640 480 -640 480 -500 375 -640 480 -640 429 -500 333 -640 480 -640 480 -480 640 -480 640 -640 424 -640 427 -640 413 -640 291 -500 375 -612 612 -640 425 -640 429 -640 480 -640 426 -640 640 -426 640 -640 480 -640 640 -640 480 -640 425 -640 428 -500 375 -640 480 -427 640 -640 426 -640 480 -640 427 -612 612 -640 427 -640 406 -640 479 -500 333 -640 480 -640 480 -375 500 -640 480 -640 360 -313 500 -480 640 -375 500 -640 480 -640 481 -640 428 -640 428 -480 640 -427 640 -640 360 -500 375 -640 359 -480 640 -361 640 -640 474 -640 427 -500 375 -640 426 -480 640 -640 396 -640 480 -640 480 -640 481 -480 640 -640 425 -640 480 -640 480 -443 640 -427 640 -640 480 -640 480 -640 426 -514 640 -426 640 -612 612 -500 333 -500 458 -640 423 -333 500 -640 458 -640 413 -640 486 -640 427 -500 333 -500 332 -612 612 -640 480 -425 640 -426 640 -640 480 -640 480 -640 513 -640 473 -640 480 -640 480 -640 428 -640 392 -333 500 -640 480 -640 480 -612 612 -640 401 -478 640 -640 427 -640 480 -640 427 -595 640 -500 352 -500 333 -640 426 -640 480 -640 480 -640 494 -640 480 -640 427 -640 480 -640 426 -480 640 -640 360 -640 428 -640 427 -450 600 -500 415 -640 480 -450 640 -640 480 -640 424 -351 640 -500 375 -640 427 -428 640 -640 415 -640 427 -612 612 -640 480 -640 426 -640 480 -640 480 -500 328 -640 480 -478 640 -640 487 -640 360 -480 640 -640 480 -640 424 -478 640 -480 640 -640 425 -427 640 -640 480 -640 480 -300 300 -640 480 -640 427 -427 640 -640 480 -640 426 -530 640 -640 480 -640 427 -640 425 -640 480 -640 427 -640 424 -640 478 -640 396 -480 640 -500 333 -640 480 -640 478 -640 484 -640 480 -640 427 -640 640 -640 428 -480 640 -500 331 -640 528 -426 640 -640 480 -640 478 -640 288 -640 428 -424 640 -256 200 -640 128 -640 425 -640 427 -500 500 -640 480 -333 500 -640 480 -640 480 -640 427 -640 480 -480 640 -640 544 -640 480 -640 339 -349 480 -426 640 -640 480 -336 450 -640 512 -500 400 -640 431 -640 480 -480 640 -640 457 -480 640 -640 428 -640 427 -640 451 -375 500 -640 480 -640 480 -640 425 -640 480 -640 428 -426 640 -427 640 -640 480 -640 480 -451 338 -500 332 -480 640 -500 375 -500 333 -333 500 -640 478 -427 640 -500 446 -640 425 -480 640 -640 427 -520 360 -427 640 -640 480 -356 500 -640 427 -640 427 -333 500 -500 375 -640 480 -640 609 -600 399 -640 485 -640 427 -500 492 -375 500 -640 480 -640 429 -375 500 -480 640 -427 640 -375 500 -640 427 -640 427 -640 480 -640 480 -640 480 -640 428 -640 427 -640 480 -640 426 -549 640 -480 640 -582 640 -640 529 -639 640 -640 428 -640 366 -640 480 -640 427 -640 640 -640 476 -640 480 -640 427 -500 333 -640 427 -640 426 -480 640 -640 427 -640 324 -640 427 -334 500 -640 480 -336 500 -494 367 -640 426 -640 425 -500 375 -634 640 -475 640 -640 480 -500 298 -640 480 -640 601 -640 480 -640 341 -640 485 -640 425 -432 640 -640 513 -640 428 -640 393 -640 425 -500 299 -640 426 -480 640 -480 640 -418 640 -640 480 -640 480 -480 640 -640 424 -640 360 -633 640 -480 640 -375 500 -426 640 -640 427 -480 640 -640 425 -426 640 -640 400 -640 361 -424 640 -640 480 -640 438 -640 480 -500 333 -640 399 -640 428 -319 640 -359 500 -640 360 -640 428 -480 640 -640 451 -640 480 -500 260 -640 480 -640 480 -640 427 -640 480 -640 427 -612 612 -375 500 -480 640 -640 480 -640 480 -480 640 -640 427 -427 640 -480 640 -640 426 -640 427 -640 420 -640 640 -375 500 -390 500 -640 377 -480 640 -640 480 -640 425 -375 500 -488 640 -640 427 -640 427 -500 407 -500 333 -640 426 -640 427 -480 640 -640 428 -640 378 -640 480 -427 640 -348 500 -428 640 -316 500 -640 512 -480 640 -640 480 -640 425 -640 480 -428 640 -500 384 -640 480 -640 360 -427 640 -640 426 -640 451 -640 360 -640 427 -482 640 -640 426 -479 640 -426 640 -640 480 -640 427 -640 361 -640 480 -500 375 -640 480 -500 375 -500 375 -640 426 -640 428 -480 640 -640 480 -425 640 -640 484 -640 453 -640 429 -426 640 -500 375 -480 640 -500 375 -640 312 -500 334 -640 427 -640 427 -640 427 -640 425 -640 616 -640 633 -640 569 -640 427 -640 426 -612 612 -500 375 -480 640 -640 425 -427 640 -640 425 -640 426 -640 427 -640 426 -512 640 -500 400 -480 640 -640 480 -640 457 -500 375 -640 427 -640 428 -640 400 -640 428 -375 500 -640 480 -640 426 -640 512 -640 480 -640 413 -640 480 -500 373 -467 640 -640 480 -640 426 -640 429 -480 640 -480 640 -640 427 -427 640 -463 640 -640 425 -640 383 -640 425 -640 480 -427 640 -640 427 -500 330 -500 333 -640 480 -480 640 -640 424 -640 428 -640 290 -640 480 -480 640 -640 480 -640 369 -640 480 -500 375 -640 480 -464 640 -428 640 -640 484 -640 480 -640 480 -640 427 -464 640 -612 612 -480 640 -640 427 -426 640 -480 640 -640 640 -640 480 -640 480 -640 311 -500 332 -640 454 -640 480 -480 640 -640 427 -480 360 -640 427 -500 375 -640 480 -375 500 -640 480 -640 366 -640 480 -640 558 -535 357 -640 480 -640 480 -427 640 -640 480 -426 640 -640 480 -612 612 -500 375 -480 640 -640 425 -640 480 -480 640 -640 480 -640 480 -427 640 -640 428 -640 174 -427 640 -640 457 -640 524 -640 480 -640 480 -640 480 -640 480 -640 640 -411 640 -640 427 -640 427 -427 640 -640 511 -640 480 -586 430 -480 640 -640 480 -640 480 -640 480 -640 361 -427 640 -640 480 -500 435 -612 612 -207 640 -425 640 -425 640 -640 427 -640 426 -480 640 -640 427 -480 640 -500 333 -640 436 -640 480 -640 427 -640 427 -640 480 -640 480 -640 480 -640 480 -612 612 -640 480 -640 427 -640 480 -452 640 -640 425 -640 475 -640 356 -500 375 -640 425 -427 640 -500 375 -640 427 -500 375 -640 427 -640 512 -640 423 -640 456 -480 640 -640 427 -500 335 -250 306 -416 640 -640 480 -640 515 -500 375 -500 333 -640 424 -427 640 -640 424 -500 375 -640 425 -466 640 -640 469 -640 480 -640 480 -640 480 -457 640 -480 640 -500 640 -427 640 -640 427 -640 480 -640 513 -480 640 -640 480 -640 427 -640 394 -640 360 -640 429 -500 375 -402 640 -640 427 -480 640 -640 427 -640 480 -640 360 -427 640 -500 375 -640 480 -500 375 -640 427 -500 375 -640 480 -640 478 -480 640 -478 640 -500 332 -640 439 -640 480 -640 480 -469 640 -333 500 -640 419 -640 194 -640 480 -640 480 -640 426 -612 612 -640 360 -640 428 -500 375 -640 425 -640 457 -640 480 -640 480 -640 425 -500 375 -600 416 -640 424 -500 375 -640 480 -640 480 -640 428 -640 480 -335 500 -640 640 -427 640 -640 428 -480 640 -500 331 -500 374 -375 500 -640 480 -640 426 -640 480 -640 366 -480 640 -640 427 -640 480 -640 480 -640 425 -640 424 -640 427 -640 428 -640 429 -640 492 -640 427 -640 480 -399 640 -640 480 -640 480 -640 480 -640 361 -640 427 -426 640 -640 425 -640 427 -640 640 -640 480 -640 427 -640 640 -640 426 -640 480 -640 480 -640 480 -500 410 -640 480 -640 427 -500 500 -383 640 -640 480 -640 480 -640 428 -360 439 -480 640 -500 480 -640 427 -422 640 -426 640 -500 375 -640 480 -596 640 -426 640 -640 480 -500 332 -612 612 -640 480 -640 480 -640 480 -640 278 -640 480 -640 426 -640 427 -640 427 -612 612 -311 308 -640 427 -640 429 -640 428 -640 480 -612 612 -500 335 -640 480 -640 427 -640 481 -500 333 -640 480 -640 480 -640 479 -640 480 -450 395 -640 480 -640 479 -640 427 -480 640 -640 480 -640 426 -426 640 -640 360 -427 640 -423 640 -640 480 -437 500 -640 481 -640 426 -640 480 -640 480 -640 427 -640 480 -640 480 -500 332 -640 480 -640 426 -640 480 -640 362 -640 479 -640 480 -640 426 -497 640 -640 427 -640 429 -640 427 -640 541 -480 640 -600 418 -640 480 -500 333 -640 480 -448 299 -640 427 -500 333 -640 480 -375 500 -375 500 -480 640 -640 480 -640 427 -640 480 -478 640 -640 426 -426 640 -427 640 -640 427 -640 427 -480 640 -640 280 -640 425 -375 500 -480 640 -640 447 -425 640 -640 426 -428 640 -640 480 -415 500 -640 640 -640 468 -427 640 -640 480 -640 464 -640 361 -640 480 -640 640 -612 612 -640 444 -640 427 -640 427 -640 427 -500 468 -640 442 -426 640 -640 388 -480 640 -640 480 -427 640 -640 444 -500 333 -427 640 -600 400 -640 427 -640 427 -640 435 -640 360 -640 426 -640 428 -480 640 -640 427 -640 428 -640 354 -640 186 -640 426 -640 430 -500 377 -480 640 -640 428 -640 480 -640 559 -427 640 -500 333 -640 427 -523 640 -640 426 -640 480 -640 480 -500 333 -500 375 -401 500 -375 500 -640 428 -480 640 -305 229 -480 640 -480 640 -640 426 -640 480 -640 409 -640 427 -640 425 -640 428 -375 500 -640 501 -500 375 -640 480 -500 375 -640 480 -640 480 -612 612 -640 425 -427 640 -424 640 -640 480 -640 480 -640 425 -427 640 -512 640 -640 428 -640 429 -640 427 -640 480 -640 427 -612 612 -640 480 -640 474 -612 612 -640 424 -405 640 -640 480 -612 612 -640 480 -640 480 -500 375 -640 616 -640 427 -480 640 -480 640 -500 333 -640 427 -500 375 -480 640 -640 480 -640 426 -640 424 -640 523 -640 427 -443 640 -640 427 -640 424 -640 421 -500 334 -640 640 -640 479 -427 640 -640 434 -401 640 -640 426 -640 428 -612 612 -491 640 -428 640 -480 640 -640 490 -640 480 -480 640 -640 427 -480 640 -500 375 -640 480 -640 481 -500 333 -640 480 -640 457 -419 640 -640 480 -640 427 -426 640 -640 427 -640 429 -500 375 -426 640 -640 401 -640 426 -480 640 -640 359 -374 500 -479 640 -500 333 -640 480 -640 504 -612 612 -640 457 -500 401 -640 429 -640 449 -500 298 -640 426 -500 375 -375 500 -640 412 -640 385 -640 406 -640 478 -640 427 -640 427 -500 375 -640 480 -640 440 -640 480 -640 530 -480 360 -480 640 -640 480 -640 480 -480 640 -640 429 -640 431 -640 481 -640 469 -640 479 -640 480 -481 640 -640 427 -640 480 -426 640 -640 480 -425 640 -480 640 -640 425 -500 375 -628 640 -640 565 -500 375 -330 500 -374 500 -500 333 -640 427 -500 333 -640 440 -640 426 -480 640 -612 612 -428 640 -480 640 -640 428 -575 640 -640 425 -640 427 -500 375 -500 366 -427 640 -500 281 -428 640 -398 640 -640 480 -640 427 -640 428 -640 428 -500 400 -500 373 -500 375 -640 426 -640 425 -640 424 -500 333 -640 418 -425 640 -640 427 -640 480 -640 583 -640 481 -640 349 -480 640 -640 428 -640 427 -640 480 -640 480 -640 640 -640 427 -640 427 -480 640 -640 480 -640 480 -640 463 -499 640 -640 426 -640 302 -427 640 -640 427 -640 480 -640 443 -500 333 -640 480 -511 640 -640 463 -426 640 -500 336 -640 480 -640 382 -640 480 -640 427 -640 513 -428 640 -479 640 -640 360 -640 425 -427 640 -640 427 -640 428 -480 640 -640 480 -640 502 -640 354 -500 375 -486 500 -500 333 -640 426 -480 640 -640 421 -640 427 -640 480 -640 480 -640 512 -640 427 -640 512 -500 333 -640 363 -640 427 -640 427 -402 640 -361 640 -427 640 -640 640 -500 375 -640 427 -500 333 -640 480 -640 594 -640 427 -456 640 -640 480 -640 434 -640 536 -640 427 -640 582 -640 549 -640 428 -640 516 -640 480 -640 480 -640 480 -640 480 -640 348 -640 480 -480 640 -640 425 -480 640 -480 640 -640 427 -640 425 -640 426 -640 427 -480 640 -640 427 -640 360 -427 640 -640 425 -640 480 -640 428 -640 480 -640 339 -427 640 -640 480 -640 480 -640 427 -640 423 -640 427 -640 426 -640 427 -640 428 -411 640 -640 420 -640 480 -488 640 -500 334 -431 640 -640 403 -640 428 -500 375 -500 375 -640 480 -327 500 -500 333 -480 640 -598 640 -500 375 -640 480 -500 375 -640 431 -640 480 -500 375 -640 480 -427 640 -640 480 -640 425 -480 640 -500 375 -640 480 -640 426 -640 480 -640 360 -640 480 -640 456 -500 375 -640 398 -471 640 -481 640 -640 359 -500 381 -640 524 -383 640 -640 427 -640 481 -640 480 -640 480 -428 640 -478 640 -500 329 -640 425 -375 500 -640 480 -640 426 -640 424 -500 455 -480 640 -612 612 -500 312 -640 480 -640 428 -640 480 -512 640 -640 434 -640 640 -478 640 -640 369 -640 480 -511 640 -500 332 -612 612 -640 281 -640 427 -427 640 -640 480 -640 428 -640 425 -640 480 -426 640 -640 640 -640 480 -425 640 -640 434 -640 514 -640 480 -480 640 -640 480 -640 484 -439 640 -640 431 -480 640 -371 500 -426 640 -640 334 -640 353 -427 640 -427 640 -427 640 -640 427 -480 640 -424 640 -426 640 -640 425 -640 480 -333 500 -426 640 -640 429 -640 640 -640 427 -500 375 -640 428 -640 480 -640 480 -427 640 -640 424 -552 640 -640 506 -640 424 -640 427 -640 480 -500 333 -500 375 -640 392 -640 570 -640 424 -640 427 -500 401 -640 427 -478 640 -640 425 -640 480 -640 480 -640 513 -640 480 -425 640 -640 640 -640 427 -640 480 -356 533 -500 375 -640 360 -427 640 -426 640 -640 427 -640 480 -640 480 -640 480 -640 480 -640 425 -640 480 -640 479 -640 425 -600 399 -640 366 -640 443 -500 375 -640 434 -640 428 -640 418 -640 480 -426 640 -513 640 -640 416 -640 428 -640 427 -500 375 -640 480 -519 640 -500 313 -640 480 -345 500 -640 334 -640 402 -640 427 -612 612 -480 640 -640 480 -640 413 -640 427 -640 426 -480 640 -640 426 -640 426 -427 640 -640 480 -612 612 -480 640 -500 375 -640 518 -640 480 -640 359 -500 375 -640 427 -500 375 -640 480 -640 480 -612 612 -640 429 -640 427 -640 427 -640 425 -640 426 -640 427 -640 428 -500 316 -640 480 -640 640 -640 436 -640 427 -480 640 -640 425 -640 480 -640 480 -479 640 -640 480 -640 427 -640 480 -427 640 -640 640 -640 359 -612 612 -640 480 -640 480 -640 480 -640 480 -425 640 -640 444 -640 480 -326 500 -457 640 -640 480 -579 640 -640 360 -640 435 -640 480 -362 500 -640 480 -428 640 -640 458 -375 500 -640 480 -480 640 -529 640 -375 500 -640 534 -640 480 -640 505 -640 428 -500 375 -640 426 -640 427 -500 375 -640 314 -640 480 -304 640 -640 480 -480 640 -468 405 -426 640 -519 640 -640 480 -640 480 -640 427 -640 480 -640 480 -640 426 -640 427 -500 375 -640 292 -640 480 -640 566 -427 640 -640 526 -640 480 -640 427 -427 640 -640 424 -640 427 -640 426 -640 480 -640 427 -640 426 -640 480 -428 640 -640 424 -640 425 -640 483 -429 640 -424 640 -640 426 -612 612 -640 480 -640 480 -640 430 -640 480 -512 640 -467 640 -640 426 -640 427 -500 241 -640 480 -640 480 -481 640 -427 640 -640 480 -640 326 -640 564 -640 640 -480 640 -640 286 -425 640 -480 640 -423 640 -640 424 -640 426 -640 428 -640 427 -640 426 -640 480 -480 640 -640 640 -375 500 -640 628 -640 426 -640 399 -640 428 -640 427 -612 612 -640 477 -640 425 -612 612 -640 480 -640 480 -640 427 -640 480 -640 480 -428 640 -480 640 -640 444 -640 501 -480 640 -500 333 -619 640 -640 427 -640 498 -640 480 -640 480 -426 640 -500 375 -640 426 -640 480 -640 640 -480 640 -640 426 -640 428 -468 640 -640 427 -640 480 -640 427 -375 500 -640 480 -640 427 -640 359 -640 427 -640 425 -640 426 -640 361 -640 480 -640 427 -389 640 -427 640 -640 393 -612 612 -480 640 -427 640 -640 428 -640 491 -428 640 -472 640 -640 427 -640 428 -508 640 -640 427 -433 640 -425 640 -588 640 -500 370 -640 427 -640 428 -640 480 -640 426 -640 448 -640 480 -640 499 -612 612 -640 427 -500 375 -578 640 -500 375 -640 426 -640 427 -640 480 -640 426 -640 640 -500 375 -640 480 -480 640 -480 640 -612 612 -640 427 -428 640 -640 427 -640 640 -480 640 -640 480 -640 480 -640 428 -640 480 -640 640 -640 480 -640 427 -640 640 -640 427 -640 481 -640 479 -320 240 -427 640 -640 427 -332 500 -500 500 -640 427 -640 480 -640 427 -640 480 -640 428 -640 376 -640 480 -333 500 -480 640 -640 428 -640 480 -640 480 -640 427 -480 640 -500 375 -640 480 -640 427 -426 640 -640 426 -640 640 -640 427 -640 494 -640 321 -640 425 -640 427 -500 375 -640 348 -640 238 -640 427 -640 453 -640 433 -640 427 -640 480 -640 480 -500 500 -640 480 -480 640 -640 480 -640 480 -480 640 -640 480 -640 480 -427 640 -640 360 -384 640 -480 640 -640 448 -500 375 -478 640 -375 500 -640 480 -640 480 -640 480 -640 424 -640 480 -640 480 -288 160 -640 468 -640 474 -427 640 -640 480 -640 480 -640 427 -640 468 -640 480 -640 427 -500 244 -640 427 -500 375 -640 222 -640 480 -640 480 -640 480 -640 427 -640 427 -640 480 -640 406 -480 640 -640 425 -640 480 -640 427 -640 429 -500 333 -640 427 -500 375 -640 391 -640 480 -640 480 -640 425 -640 427 -640 480 -480 640 -640 427 -640 480 -640 427 -640 427 -640 493 -640 428 -640 425 -640 480 -480 640 -426 640 -480 640 -480 640 -428 640 -425 640 -500 333 -500 375 -640 427 -640 427 -640 488 -640 480 -640 427 -514 640 -500 451 -640 480 -474 640 -640 425 -640 426 -640 425 -480 640 -640 498 -640 480 -640 480 -640 459 -640 480 -598 640 -640 480 -480 640 -429 640 -640 360 -500 500 -326 640 -640 427 -640 426 -640 427 -640 480 -640 428 -640 427 -640 425 -600 400 -640 619 -640 640 -426 640 -500 374 -640 480 -640 482 -480 640 -480 640 -640 428 -612 612 -640 480 -480 640 -480 640 -640 640 -640 427 -427 640 -640 480 -640 427 -640 480 -500 375 -640 569 -480 640 -640 461 -640 428 -480 640 -640 361 -640 429 -375 500 -640 427 -500 375 -640 384 -640 427 -640 428 -436 640 -600 450 -480 640 -427 640 -484 640 -640 480 -640 427 -427 640 -478 640 -480 640 -640 640 -640 480 -640 423 -500 333 -640 427 -480 640 -480 640 -640 453 -419 640 -426 640 -640 636 -640 480 -640 426 -640 427 -612 612 -640 478 -640 480 -640 427 -500 375 -640 480 -640 424 -427 640 -640 427 -640 486 -482 640 -512 640 -640 400 -427 640 -500 375 -347 500 -640 633 -640 426 -480 640 -500 336 -640 382 -640 484 -500 333 -640 425 -640 427 -640 427 -640 427 -640 427 -640 427 -640 427 -427 640 -640 512 -500 334 -640 427 -640 573 -425 640 -640 427 -480 640 -640 427 -640 480 -400 266 -640 480 -480 640 -640 427 -640 481 -640 480 -500 375 -640 640 -536 640 -640 480 -640 480 -640 480 -640 425 -640 480 -640 427 -270 360 -640 480 -640 480 -640 512 -394 401 -500 342 -320 240 -424 640 -500 333 -640 468 -383 640 -640 427 -425 640 -640 492 -640 425 -640 480 -640 416 -480 640 -640 427 -640 480 -640 453 -640 427 -640 427 -640 426 -640 489 -480 640 -426 640 -549 640 -640 427 -640 478 -640 427 -640 425 -480 640 -480 640 -640 428 -640 427 -640 440 -640 506 -500 375 -612 612 -640 426 -640 480 -640 352 -640 427 -480 640 -640 415 -640 480 -640 413 -640 504 -640 401 -500 375 -612 612 -500 375 -640 426 -427 640 -640 480 -640 359 -427 640 -640 480 -500 276 -500 375 -640 439 -640 427 -500 314 -480 640 -640 622 -640 423 -500 435 -640 432 -640 480 -640 640 -500 403 -375 500 -640 426 -500 375 -640 425 -640 425 -640 427 -640 640 -580 640 -640 313 -640 640 -612 612 -640 386 -640 427 -640 427 -640 480 -612 612 -640 427 -640 480 -640 424 -612 612 -640 517 -426 640 -640 433 -640 418 -640 441 -640 426 -640 425 -480 640 -640 360 -640 310 -640 425 -640 480 -640 425 -500 333 -640 427 -640 428 -480 640 -640 427 -640 428 -640 484 -481 640 -503 480 -640 159 -640 480 -425 640 -480 640 -640 427 -456 640 -640 354 -425 640 -552 640 -640 427 -640 552 -640 480 -640 427 -640 480 -640 426 -640 640 -640 427 -640 480 -640 480 -425 640 -640 480 -640 428 -640 480 -640 480 -640 640 -640 425 -640 415 -640 483 -640 361 -640 427 -640 427 -500 330 -640 425 -640 427 -640 426 -500 333 -640 480 -640 360 -640 427 -640 426 -640 426 -427 640 -425 640 -640 430 -640 480 -426 640 -640 427 -480 640 -612 612 -640 356 -375 500 -425 640 -640 480 -640 428 -640 360 -389 500 -500 375 -427 640 -640 427 -640 428 -640 423 -478 640 -640 427 -640 424 -640 427 -423 640 -334 500 -640 427 -640 427 -640 480 -640 480 -640 360 -640 519 -480 640 -640 390 -640 425 -500 325 -640 421 -478 640 -640 425 -500 375 -640 424 -640 422 -500 375 -640 640 -332 500 -640 426 -640 427 -640 308 -480 640 -457 640 -640 480 -612 612 -640 480 -640 434 -450 420 -640 480 -640 400 -640 428 -640 582 -640 427 -640 386 -500 400 -640 480 -640 427 -640 499 -640 480 -375 500 -640 425 -480 640 -480 640 -500 375 -640 390 -480 640 -640 425 -500 400 -425 640 -500 374 -640 480 -500 333 -640 469 -640 444 -640 428 -418 640 -640 431 -500 281 -640 426 -423 640 -413 640 -500 375 -425 640 -480 640 -640 427 -640 489 -500 325 -640 480 -500 340 -640 359 -640 427 -640 480 -480 640 -480 640 -640 427 -640 387 -480 640 -480 640 -400 280 -640 480 -640 480 -640 480 -331 500 -640 481 -640 454 -640 480 -640 480 -640 426 -640 480 -640 427 -640 360 -640 480 -640 480 -500 345 -640 427 -640 480 -428 640 -500 375 -640 427 -640 426 -640 426 -480 640 -612 612 -640 439 -640 427 -640 599 -640 428 -640 428 -500 375 -640 512 -427 640 -640 360 -640 427 -640 480 -500 375 -500 375 -500 291 -480 640 -480 640 -640 480 -500 375 -612 612 -443 640 -640 561 -640 427 -467 640 -427 640 -640 427 -640 426 -640 424 -480 640 -427 640 -375 500 -640 480 -640 427 -528 640 -640 360 -640 480 -640 427 -333 500 -640 478 -400 640 -500 375 -640 427 -640 481 -640 427 -480 640 -640 426 -640 480 -427 640 -640 480 -640 419 -640 427 -480 640 -640 428 -640 427 -640 534 -640 425 -640 480 -480 640 -640 480 -393 316 -640 445 -640 480 -480 640 -480 640 -427 640 -640 480 -640 417 -425 640 -640 427 -640 426 -500 281 -585 640 -640 480 -500 375 -640 480 -640 480 -640 427 -640 421 -640 427 -587 640 -640 452 -640 427 -640 480 -640 425 -640 640 -640 488 -480 640 -640 359 -640 503 -640 480 -500 332 -640 521 -427 640 -640 428 -640 480 -640 427 -640 480 -375 500 -640 367 -640 480 -640 480 -427 640 -640 480 -640 427 -640 512 -640 480 -500 333 -640 480 -640 427 -640 333 -640 424 -640 480 -640 427 -640 427 -640 480 -640 427 -640 425 -480 640 -500 375 -640 428 -640 427 -640 480 -612 612 -375 500 -500 375 -500 333 -500 375 -640 480 -640 427 -640 480 -500 375 -640 478 -640 426 -640 480 -500 400 -375 500 -640 428 -640 499 -640 360 -640 427 -640 480 -640 480 -640 427 -640 480 -640 485 -427 640 -375 500 -640 456 -640 464 -473 640 -640 359 -640 425 -612 612 -640 427 -444 640 -640 480 -640 428 -640 414 -500 375 -333 500 -500 333 -640 437 -612 612 -333 500 -640 548 -640 480 -640 512 -480 640 -640 428 -640 480 -375 500 -640 429 -333 500 -640 480 -640 438 -379 640 -640 427 -640 426 -479 640 -640 480 -500 375 -640 429 -500 375 -640 480 -640 426 -640 480 -640 480 -640 427 -640 467 -427 640 -640 426 -427 640 -640 434 -480 640 -612 612 -640 425 -640 427 -640 427 -442 640 -500 333 -480 640 -640 480 -640 431 -476 261 -640 427 -640 427 -480 640 -640 427 -480 640 -480 640 -640 640 -500 334 -640 425 -640 427 -427 640 -640 427 -480 640 -500 375 -640 427 -640 480 -478 640 -640 480 -640 466 -478 640 -512 640 -640 418 -640 478 -480 640 -640 427 -640 480 -640 480 -500 375 -500 375 -480 640 -640 480 -640 427 -480 640 -427 640 -375 500 -640 427 -640 480 -640 426 -480 640 -425 640 -640 428 -445 640 -640 427 -640 427 -427 640 -640 522 -500 334 -640 427 -640 360 -640 425 -480 640 -441 640 -640 480 -640 469 -640 427 -427 640 -612 612 -500 375 -400 600 -640 360 -426 640 -640 480 -640 480 -640 480 -640 356 -640 480 -640 480 -640 480 -640 426 -640 360 -640 426 -640 480 -640 480 -600 402 -640 480 -480 640 -385 289 -640 360 -640 480 -640 480 -640 480 -640 426 -640 480 -640 480 -640 426 -427 640 -640 479 -428 640 -480 640 -500 375 -640 406 -334 500 -640 413 -427 640 -375 500 -427 640 -480 640 -640 480 -636 640 -640 426 -500 375 -480 640 -480 640 -640 576 -640 640 -640 426 -612 612 -640 426 -640 429 -640 342 -428 640 -480 640 -480 640 -427 640 -640 480 -640 479 -640 427 -640 425 -500 400 -427 640 -500 375 -640 480 -640 427 -480 640 -640 478 -640 480 -480 640 -427 640 -640 428 -500 375 -640 396 -375 500 -300 500 -640 429 -428 640 -640 426 -480 640 -640 480 -480 640 -640 429 -640 389 -640 427 -640 428 -640 480 -480 640 -480 640 -426 640 -640 480 -640 480 -640 443 -640 480 -480 640 -640 494 -640 425 -427 640 -442 640 -640 424 -640 450 -640 286 -426 640 -480 640 -640 480 -640 480 -640 480 -640 480 -427 640 -640 480 -640 484 -500 375 -500 485 -640 427 -640 480 -640 427 -543 640 -640 427 -640 480 -640 480 -640 427 -500 376 -640 425 -640 480 -640 273 -480 640 -640 427 -640 426 -428 640 -640 360 -640 425 -640 480 -640 429 -500 368 -640 482 -640 480 -427 640 -640 427 -640 480 -640 427 -640 480 -640 479 -640 640 -640 428 -500 375 -640 427 -640 428 -500 333 -480 640 -396 297 -640 479 -640 425 -598 640 -640 582 -640 553 -640 480 -480 640 -640 480 -500 332 -640 425 -640 480 -427 640 -640 480 -500 335 -640 427 -640 480 -427 640 -640 480 -600 400 -427 640 -640 480 -640 426 -640 426 -640 427 -480 640 -480 640 -589 640 -640 480 -640 428 -640 424 -640 427 -428 640 -640 480 -640 454 -424 640 -640 427 -640 425 -640 480 -640 427 -640 427 -480 640 -612 612 -333 500 -640 480 -640 480 -572 640 -640 439 -640 427 -427 640 -640 426 -426 640 -640 480 -640 427 -640 480 -457 640 -640 419 -640 418 -480 640 -425 640 -480 640 -480 640 -500 332 -640 424 -640 396 -640 427 -640 640 -640 480 -640 406 -500 375 -640 512 -640 424 -640 480 -640 480 -640 374 -640 354 -640 427 -640 428 -500 375 -640 480 -480 640 -640 480 -640 480 -500 281 -640 539 -640 625 -426 640 -359 640 -640 427 -640 478 -428 640 -500 333 -375 500 -480 640 -640 426 -500 375 -640 458 -640 457 -640 427 -612 612 -500 375 -640 480 -640 478 -640 480 -640 400 -640 480 -375 500 -640 480 -426 640 -640 640 -612 612 -640 480 -640 424 -480 640 -640 480 -640 427 -640 427 -640 359 -640 427 -640 480 -640 480 -640 424 -640 427 -500 375 -612 612 -640 427 -427 640 -335 500 -640 480 -640 480 -640 427 -428 640 -640 427 -375 500 -500 375 -640 393 -640 546 -640 384 -640 480 -500 375 -333 500 -480 640 -640 428 -640 326 -640 360 -533 640 -640 427 -640 427 -640 422 -640 480 -427 640 -640 478 -640 360 -640 480 -600 398 -480 640 -640 480 -426 640 -640 427 -640 411 -480 640 -640 427 -461 640 -640 427 -480 640 -478 640 -640 480 -640 427 -640 428 -438 500 -426 640 -480 640 -480 640 -500 373 -500 375 -640 508 -640 480 -500 434 -640 480 -640 427 -640 480 -640 427 -426 640 -421 640 -640 383 -427 640 -640 480 -640 428 -500 334 -375 500 -640 480 -640 541 -640 424 -640 478 -426 640 -426 640 -480 640 -640 427 -640 480 -640 422 -640 360 -478 640 -640 476 -504 337 -528 400 -612 612 -500 333 -640 480 -640 480 -427 640 -480 640 -640 427 -480 640 -375 500 -612 612 -640 427 -474 640 -375 500 -640 381 -426 640 -500 375 -640 429 -375 500 -480 640 -640 480 -640 480 -640 480 -640 426 -335 500 -640 480 -640 427 -640 480 -612 612 -640 427 -640 512 -612 612 -640 480 -640 426 -640 427 -640 427 -640 480 -640 427 -425 640 -500 400 -640 636 -640 427 -640 427 -480 640 -640 427 -375 500 -640 413 -640 427 -640 427 -640 426 -640 480 -429 640 -640 480 -640 427 -480 640 -640 480 -640 427 -480 640 -640 427 -500 333 -495 640 -500 406 -640 427 -640 480 -640 480 -480 640 -640 303 -375 500 -612 612 -500 334 -640 528 -640 427 -640 480 -435 640 -640 289 -640 480 -640 480 -427 640 -640 496 -640 427 -612 612 -640 398 -448 640 -640 426 -640 426 -480 640 -640 427 -640 457 -640 427 -640 480 -640 427 -500 375 -333 500 -640 480 -640 295 -640 480 -640 480 -640 427 -500 334 -527 640 -640 558 -640 433 -332 500 -640 425 -500 333 -640 427 -480 640 -500 375 -640 429 -640 480 -640 480 -640 427 -640 480 -500 333 -640 426 -612 612 -500 375 -400 300 -640 428 -612 612 -640 480 -640 480 -640 480 -640 450 -640 427 -640 364 -640 433 -640 427 -640 427 -400 500 -640 428 -640 480 -640 480 -640 480 -640 640 -333 500 -426 640 -420 640 -640 480 -640 427 -640 480 -500 375 -640 478 -640 434 -480 640 -329 500 -640 480 -640 424 -640 426 -612 612 -640 480 -640 480 -640 427 -640 480 -427 640 -640 480 -640 480 -500 385 -427 640 -640 478 -640 376 -640 427 -478 640 -625 505 -640 388 -480 640 -640 433 -640 480 -640 426 -640 427 -640 480 -640 480 -500 295 -640 329 -332 291 -500 375 -640 480 -640 458 -640 426 -424 640 -640 427 -500 375 -500 376 -640 480 -640 246 -480 640 -640 427 -640 427 -640 480 -500 336 -359 640 -428 640 -640 426 -512 640 -640 480 -640 480 -640 450 -480 640 -480 640 -500 375 -640 427 -481 640 -375 500 -333 500 -640 428 -467 640 -500 434 -640 480 -480 640 -640 360 -640 414 -480 640 -480 640 -500 375 -640 427 -480 640 -640 426 -640 468 -500 375 -640 425 -640 426 -640 494 -640 427 -640 480 -640 427 -640 425 -478 640 -478 640 -640 488 -640 480 -640 426 -426 640 -640 427 -640 346 -640 480 -640 408 -640 426 -415 640 -640 480 -640 407 -640 480 -640 427 -640 427 -500 375 -640 480 -640 427 -640 419 -480 640 -640 499 -480 640 -425 640 -612 612 -640 639 -640 427 -640 495 -640 480 -480 640 -640 427 -640 480 -640 425 -427 640 -640 506 -640 480 -640 480 -640 448 -640 399 -640 480 -640 301 -640 481 -500 375 -640 514 -640 374 -640 359 -436 640 -640 427 -640 426 -640 441 -500 400 -428 640 -640 427 -640 480 -640 457 -640 428 -640 480 -640 480 -500 375 -640 427 -612 612 -500 333 -428 640 -640 480 -640 426 -640 427 -640 427 -640 426 -480 640 -640 478 -640 480 -640 480 -600 449 -640 480 -640 431 -640 480 -640 427 -480 640 -640 425 -480 640 -640 480 -426 640 -640 480 -640 480 -640 480 -640 418 -640 426 -640 535 -640 438 -426 640 -640 480 -640 498 -427 640 -640 440 -640 533 -426 640 -640 427 -612 612 -320 240 -640 513 -640 428 -640 480 -480 640 -480 640 -640 299 -500 334 -640 438 -500 375 -341 500 -640 372 -426 640 -640 512 -500 390 -640 480 -512 640 -640 640 -640 360 -375 500 -480 640 -480 640 -640 480 -640 480 -375 500 -607 640 -500 375 -640 445 -640 464 -480 640 -500 343 -640 480 -640 427 -640 427 -640 480 -640 480 -640 480 -640 480 -640 360 -427 640 -425 640 -500 333 -640 480 -640 428 -640 480 -524 640 -640 458 -500 375 -500 375 -561 640 -640 483 -640 457 -640 578 -478 640 -640 425 -640 480 -500 370 -500 375 -333 500 -640 429 -640 427 -500 333 -640 426 -500 375 -640 480 -640 480 -640 427 -480 640 -640 482 -640 480 -480 640 -480 640 -640 480 -640 480 -512 384 -640 426 -375 500 -640 417 -480 640 -640 426 -640 480 -375 500 -640 518 -640 427 -640 427 -640 480 -426 640 -640 427 -640 427 -640 496 -640 370 -640 359 -640 432 -640 480 -612 612 -426 640 -640 359 -383 640 -640 426 -640 426 -478 640 -640 480 -500 374 -427 640 -500 283 -612 612 -640 399 -640 480 -640 480 -640 427 -640 428 -500 375 -640 480 -483 640 -640 480 -385 308 -500 375 -480 640 -640 426 -640 426 -612 612 -332 500 -640 480 -640 426 -640 427 -640 426 -640 480 -640 478 -556 640 -500 375 -478 640 -640 428 -640 480 -425 640 -640 478 -640 480 -640 434 -640 427 -500 480 -640 427 -425 640 -640 429 -640 370 -512 640 -640 480 -640 426 -640 427 -640 427 -640 480 -640 480 -429 640 -640 480 -640 448 -640 480 -640 427 -426 640 -640 480 -640 426 -640 480 -640 426 -458 640 -500 375 -500 376 -640 480 -612 612 -480 640 -424 640 -640 480 -640 639 -640 427 -640 480 -500 333 -500 375 -640 503 -315 500 -333 500 -400 272 -640 480 -640 480 -500 333 -640 478 -640 591 -500 294 -640 426 -640 427 -640 425 -640 457 -480 640 -480 640 -640 427 -640 480 -480 640 -640 428 -640 432 -640 343 -428 640 -640 480 -640 429 -640 360 -640 480 -332 500 -640 480 -640 426 -640 640 -640 425 -640 427 -500 333 -500 375 -640 480 -640 480 -427 640 -640 480 -640 427 -480 640 -375 500 -640 426 -640 398 -640 427 -640 427 -640 427 -640 427 -453 640 -427 640 -640 480 -640 524 -640 427 -640 479 -640 480 -375 500 -640 480 -640 458 -640 522 -640 427 -500 375 -500 333 -500 375 -640 426 -640 480 -640 480 -640 426 -436 640 -500 375 -375 500 -500 375 -640 480 -640 480 -640 480 -500 321 -500 375 -640 426 -640 480 -640 427 -640 480 -426 640 -640 360 -413 640 -640 382 -640 425 -640 480 -640 480 -427 640 -640 383 -640 480 -478 640 -640 480 -427 640 -428 640 -500 333 -640 480 -612 612 -339 500 -640 427 -640 376 -640 360 -640 428 -480 640 -640 426 -640 480 -500 500 -269 480 -629 640 -640 480 -640 480 -612 612 -640 491 -640 480 -640 601 -640 480 -426 640 -640 480 -640 397 -640 426 -424 640 -480 640 -640 526 -640 386 -480 640 -375 500 -640 469 -640 601 -615 310 -640 480 -640 448 -547 640 -480 640 -480 640 -518 640 -640 427 -427 640 -433 640 -640 439 -640 480 -480 640 -612 612 -640 281 -640 480 -640 427 -640 480 -640 427 -640 428 -437 640 -640 428 -640 480 -640 480 -640 424 -500 336 -425 640 -500 308 -640 360 -640 424 -640 425 -446 640 -640 252 -640 483 -640 480 -640 627 -640 428 -500 480 -640 453 -612 612 -640 428 -375 500 -640 480 -640 480 -640 417 -640 378 -640 425 -640 480 -480 640 -640 481 -640 504 -595 640 -640 480 -640 597 -500 375 -640 427 -479 640 -640 512 -640 426 -500 416 -500 375 -640 400 -500 375 -472 640 -500 375 -500 375 -640 480 -480 640 -640 561 -427 640 -640 426 -640 480 -640 427 -480 640 -640 428 -640 480 -640 426 -640 562 -640 428 -500 334 -640 426 -640 427 -640 480 -640 425 -640 491 -500 375 -640 426 -396 640 -480 640 -640 426 -480 640 -640 480 -640 480 -427 640 -640 427 -500 337 -427 640 -457 640 -375 500 -612 612 -480 640 -640 480 -500 375 -612 612 -640 480 -640 427 -640 423 -612 612 -480 640 -378 500 -480 640 -500 238 -640 447 -640 480 -640 427 -640 480 -480 640 -640 480 -640 480 -640 368 -640 424 -640 427 -640 359 -500 375 -640 480 -640 362 -500 398 -640 514 -640 480 -640 480 -500 375 -480 640 -480 640 -478 640 -640 427 -640 427 -480 360 -380 500 -424 640 -640 426 -640 480 -640 320 -640 480 -640 428 -640 426 -335 500 -640 427 -375 500 -640 425 -640 478 -640 427 -426 640 -640 480 -427 640 -543 640 -483 640 -640 480 -640 480 -480 640 -500 375 -640 428 -424 640 -640 480 -427 640 -640 426 -640 434 -427 640 -500 334 -480 640 -640 480 -480 640 -426 640 -640 480 -640 425 -640 427 -640 480 -640 480 -500 272 -640 480 -640 480 -640 480 -428 640 -500 375 -424 640 -375 500 -640 360 -612 612 -640 427 -640 432 -425 640 -640 359 -426 640 -640 427 -640 430 -480 640 -640 427 -640 426 -339 500 -640 479 -640 427 -500 326 -500 333 -464 640 -463 640 -640 426 -640 480 -500 375 -640 427 -640 427 -640 427 -480 640 -640 423 -640 483 -640 479 -640 320 -640 608 -640 427 -640 425 -378 500 -426 640 -640 480 -640 480 -432 640 -640 480 -478 640 -640 415 -640 530 -640 372 -640 424 -640 360 -640 480 -480 640 -640 426 -395 640 -640 359 -640 427 -500 333 -640 480 -480 640 -640 360 -640 480 -500 334 -425 640 -640 480 -640 427 -640 480 -640 425 -500 374 -480 640 -640 429 -640 480 -640 426 -357 640 -496 640 -640 426 -640 425 -640 425 -640 480 -427 640 -640 427 -640 438 -480 640 -640 377 -640 480 -640 428 -640 480 -612 612 -640 527 -640 427 -375 500 -640 424 -640 480 -640 457 -500 334 -640 425 -525 640 -640 428 -333 500 -480 640 -640 419 -480 640 -640 426 -640 480 -640 426 -640 468 -640 480 -480 640 -640 425 -512 640 -640 427 -427 640 -500 375 -515 640 -480 640 -428 640 -331 500 -500 332 -480 640 -640 480 -640 427 -640 427 -640 480 -500 335 -640 480 -640 425 -640 360 -640 480 -625 640 -480 640 -480 640 -478 640 -640 426 -428 640 -640 480 -640 480 -640 396 -500 376 -506 640 -640 514 -500 333 -640 480 -480 640 -612 612 -480 640 -640 480 -425 640 -548 640 -640 427 -640 480 -640 480 -640 427 -640 429 -640 426 -640 427 -640 427 -640 480 -480 640 -640 427 -640 512 -640 480 -640 480 -324 328 -640 361 -640 480 -640 427 -640 428 -640 426 -640 480 -640 359 -640 480 -500 334 -480 640 -640 427 -640 480 -640 480 -640 427 -640 400 -640 561 -640 480 -640 360 -640 425 -640 480 -428 640 -480 640 -460 640 -480 640 -640 428 -334 500 -425 640 -640 428 -640 529 -640 427 -640 606 -305 229 -640 480 -640 361 -333 500 -640 480 -640 490 -640 424 -640 433 -640 425 -427 640 -640 428 -640 424 -558 558 -640 427 -640 480 -640 426 -640 480 -640 563 -375 500 -640 480 -335 500 -640 360 -640 424 -375 500 -573 640 -640 480 -640 480 -640 425 -425 640 -640 360 -640 480 -640 425 -640 480 -480 640 -640 360 -640 480 -640 426 -640 480 -640 427 -640 425 -640 424 -640 480 -426 640 -640 427 -375 500 -500 360 -500 375 -640 427 -500 257 -640 424 -356 500 -640 494 -426 640 -640 480 -412 640 -640 480 -433 640 -640 480 -427 640 -375 500 -500 369 -612 612 -640 480 -427 640 -396 640 -612 612 -640 480 -500 332 -480 640 -640 480 -640 428 -640 426 -640 397 -640 534 -500 375 -640 427 -640 480 -640 480 -480 640 -640 427 -427 640 -640 480 -640 480 -640 480 -640 359 -640 337 -480 640 -308 500 -375 500 -640 578 -640 480 -640 427 -360 640 -480 640 -640 480 -612 612 -640 443 -612 612 -640 480 -640 427 -500 500 -640 391 -478 640 -639 640 -332 500 -332 500 -428 640 -425 640 -640 480 -480 640 -640 480 -500 375 -640 480 -427 640 -640 480 -640 427 -640 428 -640 480 -640 381 -640 427 -612 612 -640 426 -640 427 -640 480 -640 427 -612 612 -248 500 -500 208 -640 544 -640 427 -640 427 -500 358 -640 428 -640 480 -640 427 -640 480 -640 360 -640 425 -500 375 -480 640 -640 427 -640 376 -640 480 -640 424 -640 360 -500 375 -640 427 -640 471 -640 360 -640 475 -640 428 -415 640 -640 334 -640 426 -640 427 -300 400 -640 480 -640 480 -612 612 -640 426 -640 425 -480 640 -640 452 -500 375 -640 476 -600 455 -640 480 -640 640 -640 480 -500 335 -479 640 -640 427 -500 375 -640 426 -428 640 -480 640 -640 480 -640 480 -640 427 -640 424 -640 428 -623 640 -640 425 -640 438 -640 480 -640 427 -640 425 -640 480 -640 640 -640 480 -640 480 -640 329 -591 640 -640 480 -427 640 -612 612 -399 600 -640 364 -640 489 -640 480 -375 500 -640 426 -426 640 -429 640 -427 640 -640 427 -640 427 -640 614 -640 427 -640 312 -640 427 -640 427 -504 640 -427 640 -427 640 -640 589 -426 640 -640 606 -640 427 -427 640 -640 640 -640 480 -640 427 -500 333 -464 640 -640 426 -427 640 -640 480 -640 480 -612 612 -640 480 -500 366 -640 480 -640 425 -640 640 -640 484 -500 375 -640 359 -351 500 -640 480 -640 320 -640 427 -640 473 -640 480 -640 427 -640 411 -500 331 -640 480 -480 640 -640 480 -612 612 -640 427 -640 470 -500 375 -512 640 -640 640 -640 480 -640 480 -640 427 -640 480 -500 375 -640 480 -480 640 -640 425 -640 425 -640 427 -640 464 -500 500 -640 427 -640 480 -640 423 -500 333 -640 311 -640 449 -640 427 -472 500 -640 640 -433 640 -640 383 -640 480 -640 427 -640 425 -427 640 -640 480 -640 480 -640 480 -640 480 -480 640 -640 504 -640 425 -640 478 -640 429 -640 426 -640 480 -426 640 -425 640 -500 375 -640 427 -500 375 -478 640 -500 375 -640 480 -480 640 -640 480 -640 429 -612 612 -428 640 -640 154 -640 427 -375 500 -640 480 -640 480 -640 480 -640 480 -640 427 -640 360 -640 395 -640 480 -640 640 -480 640 -640 480 -640 428 -640 480 -480 640 -640 480 -427 640 -500 478 -640 427 -612 612 -428 640 -640 480 -640 480 -640 456 -640 359 -640 450 -263 640 -640 427 -640 409 -640 480 -640 394 -640 480 -640 524 -640 511 -425 640 -640 427 -640 427 -640 426 -640 425 -427 640 -600 625 -640 427 -640 480 -600 400 -640 428 -640 426 -640 359 -500 335 -426 640 -500 336 -375 500 -640 480 -455 640 -321 500 -500 375 -353 640 -426 640 -450 216 -612 612 -454 640 -480 640 -427 640 -500 375 -500 375 -482 640 -640 480 -640 480 -612 612 -428 640 -640 480 -640 426 -640 480 -428 640 -640 480 -607 640 -640 428 -428 640 -640 480 -640 293 -640 433 -426 640 -640 428 -640 480 -640 411 -640 381 -480 640 -335 500 -450 302 -640 425 -640 480 -480 640 -457 640 -427 640 -480 640 -480 640 -500 375 -640 478 -640 427 -640 480 -640 427 -640 424 -640 360 -640 427 -640 480 -640 419 -640 480 -640 480 -640 494 -640 426 -640 423 -444 640 -640 480 -640 480 -640 480 -640 427 -500 375 -640 459 -640 428 -640 426 -640 481 -480 640 -640 425 -375 500 -515 640 -640 480 -640 480 -427 640 -640 413 -640 480 -640 480 -500 333 -427 640 -640 427 -640 428 -640 465 -480 640 -640 480 -640 428 -640 428 -640 214 -359 640 -640 478 -640 480 -640 320 -336 248 -500 400 -640 427 -640 529 -480 640 -640 427 -480 640 -640 427 -500 334 -481 640 -500 334 -480 640 -640 458 -427 640 -640 424 -640 426 -500 333 -640 523 -640 428 -640 487 -612 612 -500 375 -640 480 -640 517 -333 500 -348 500 -640 448 -640 428 -500 375 -500 375 -500 375 -640 426 -640 480 -640 480 -640 427 -640 414 -640 441 -640 480 -640 530 -640 640 -483 640 -640 480 -640 480 -427 640 -640 424 -640 428 -640 429 -375 500 -640 427 -640 480 -640 480 -640 512 -640 427 -479 640 -640 428 -640 408 -612 612 -640 480 -640 480 -375 500 -640 425 -640 427 -640 480 -480 640 -640 480 -480 640 -427 640 -640 480 -640 432 -640 427 -480 640 -640 480 -480 640 -640 480 -640 480 -640 480 -640 480 -640 480 -640 427 -449 640 -512 640 -427 640 -640 427 -500 375 -640 427 -640 519 -448 640 -640 427 -512 640 -640 391 -640 480 -640 480 -640 428 -424 640 -428 640 -640 427 -640 427 -640 425 -640 428 -447 640 -500 333 -500 334 -480 640 -640 446 -478 640 -640 480 -640 480 -640 425 -640 454 -640 426 -360 640 -500 334 -500 375 -640 427 -640 433 -480 640 -480 640 -640 426 -640 427 -640 359 -640 480 -640 480 -640 640 -500 375 -640 640 -480 640 -640 474 -640 480 -640 480 -640 427 -640 428 -500 375 -480 640 -640 480 -640 398 -427 640 -480 640 -500 375 -514 640 -500 375 -640 480 -640 427 -640 480 -500 375 -640 480 -640 480 -640 427 -480 640 -640 480 -640 425 -640 427 -640 480 -640 480 -640 424 -640 427 -640 438 -640 480 -640 427 -640 428 -424 640 -640 531 -480 640 -640 427 -500 333 -640 425 -640 425 -428 640 -480 640 -640 429 -640 480 -640 480 -375 500 -428 640 -500 375 -640 424 -640 480 -640 428 -425 640 -480 640 -640 425 -426 640 -640 480 -635 640 -500 332 -640 480 -640 480 -640 566 -640 480 -640 419 -426 640 -500 375 -425 640 -640 428 -334 500 -640 546 -519 640 -640 480 -500 375 -640 427 -612 612 -640 479 -614 640 -480 640 -480 640 -640 427 -640 480 -500 375 -640 480 -640 360 -640 480 -213 320 -500 406 -500 445 -480 640 -640 468 -640 427 -427 640 -640 427 -640 480 -500 486 -480 360 -640 428 -640 480 -480 640 -403 640 -640 480 -640 316 -425 640 -480 640 -640 429 -640 426 -640 427 -640 426 -500 375 -427 640 -612 612 -640 480 -640 480 -640 427 -640 418 -428 640 -500 324 -523 640 -640 426 -640 427 -640 427 -480 640 -640 427 -640 426 -500 500 -640 480 -640 427 -640 437 -480 640 -359 640 -640 428 -640 480 -640 424 -500 335 -500 375 -640 424 -427 640 -640 480 -405 640 -640 640 -427 640 -640 480 -333 500 -640 444 -640 426 -640 480 -500 375 -640 344 -640 394 -500 393 -375 500 -500 281 -477 558 -640 480 -640 428 -640 360 -426 640 -640 428 -640 480 -427 640 -640 480 -640 508 -640 427 -640 480 -640 480 -640 480 -640 427 -612 612 -640 428 -332 500 -640 427 -640 480 -428 640 -612 612 -640 425 -640 482 -640 419 -500 375 -640 486 -640 428 -640 428 -640 480 -500 333 -640 478 -360 640 -640 480 -640 428 -500 396 -640 424 -375 500 -640 480 -640 480 -612 612 -640 480 -640 428 -640 427 -640 447 -640 480 -640 640 -500 375 -640 480 -612 612 -640 427 -359 640 -640 424 -500 375 -640 480 -640 427 -640 479 -640 480 -640 428 -368 500 -640 640 -640 451 -544 640 -640 480 -640 439 -640 426 -640 425 -583 640 -640 429 -640 427 -640 480 -640 512 -640 480 -640 480 -640 427 -457 640 -640 429 -500 334 -640 480 -428 640 -428 640 -640 480 -480 640 -500 375 -427 640 -640 427 -406 640 -478 640 -640 480 -640 383 -612 612 -500 333 -640 427 -500 371 -612 612 -640 427 -375 500 -612 612 -468 640 -640 480 -426 640 -640 478 -640 480 -640 478 -640 480 -640 480 -640 411 -500 375 -640 427 -480 640 -640 449 -640 480 -640 480 -488 640 -640 480 -640 427 -480 640 -640 480 -480 640 -424 640 -577 640 -640 382 -480 640 -640 360 -640 480 -333 500 -333 500 -640 370 -640 480 -640 416 -640 480 -350 263 -640 480 -640 480 -640 427 -500 375 -640 516 -640 424 -426 640 -640 363 -480 640 -640 427 -640 426 -640 480 -640 425 -640 427 -640 546 -640 427 -640 427 -640 426 -375 500 -478 640 -640 480 -640 480 -480 640 -640 480 -640 480 -640 480 -640 427 -640 480 -640 480 -640 427 -500 356 -640 428 -640 428 -640 480 -640 427 -287 640 -640 480 -640 427 -640 427 -640 427 -640 427 -640 480 -375 500 -480 640 -480 640 -500 333 -500 240 -640 427 -640 428 -640 480 -500 350 -640 427 -640 480 -427 640 -361 500 -640 480 -426 640 -640 480 -375 500 -640 480 -640 480 -320 240 -640 480 -640 393 -480 640 -640 447 -500 454 -640 480 -640 428 -487 640 -640 480 -375 500 -640 480 -640 429 -640 480 -480 640 -176 144 -480 640 -640 480 -640 496 -474 640 -427 640 -612 612 -427 640 -640 480 -640 396 -640 480 -393 600 -612 612 -640 426 -640 480 -640 428 -640 480 -640 293 -640 287 -640 426 -500 375 -640 427 -480 640 -640 428 -640 427 -480 640 -640 480 -640 427 -333 500 -640 427 -640 480 -640 480 -500 336 -640 480 -640 427 -428 640 -480 640 -640 478 -640 512 -640 480 -640 480 -427 640 -640 480 -640 464 -640 426 -333 500 -500 378 -640 406 -640 427 -640 426 -426 640 -457 640 -640 478 -640 480 -640 480 -428 640 -500 375 -478 640 -500 333 -640 640 -640 426 -640 427 -640 457 -640 480 -640 398 -500 345 -640 480 -640 617 -640 361 -640 427 -640 426 -480 640 -640 640 -640 400 -640 480 -640 480 -640 480 -640 416 -480 640 -316 480 -640 429 -640 480 -640 425 -640 403 -640 425 -640 457 -640 480 -427 640 -333 500 -640 424 -640 427 -640 427 -460 640 -585 640 -640 480 -427 640 -640 479 -640 480 -500 375 -425 640 -640 480 -640 480 -640 480 -500 358 -640 480 -640 427 -640 480 -480 640 -500 375 -640 640 -427 640 -500 375 -640 428 -640 480 -640 344 -500 375 -640 480 -640 425 -640 426 -640 359 -640 469 -640 426 -480 640 -640 426 -500 375 -640 426 -480 640 -427 640 -500 375 -480 640 -640 480 -426 640 -426 640 -480 640 -426 640 -640 640 -508 640 -640 427 -427 640 -428 640 -640 480 -640 640 -480 640 -500 375 -640 480 -640 427 -640 400 -640 427 -640 480 -334 500 -409 640 -500 484 -640 424 -640 360 -612 612 -640 427 -500 327 -640 640 -640 360 -640 424 -640 428 -640 622 -640 480 -500 333 -427 640 -320 240 -640 480 -640 481 -427 640 -640 480 -640 424 -640 480 -640 480 -375 500 -640 425 -640 598 -640 425 -640 427 -612 612 -640 480 -640 215 -375 500 -537 640 -612 612 -640 480 -640 428 -640 427 -640 480 -550 640 -333 500 -640 371 -640 427 -612 612 -640 480 -480 640 -640 426 -640 427 -640 480 -415 640 -640 480 -640 480 -640 480 -640 426 -488 640 -640 428 -640 426 -640 427 -640 426 -480 640 -500 333 -512 640 -480 640 -496 640 -640 478 -618 640 -500 375 -640 480 -640 480 -589 640 -640 480 -640 426 -640 427 -640 512 -640 428 -640 480 -427 640 -640 421 -640 426 -640 611 -640 456 -640 429 -480 640 -640 480 -640 480 -375 500 -427 640 -640 480 -480 640 -640 427 -640 427 -500 375 -500 375 -500 375 -500 335 -640 309 -640 419 -640 459 -640 480 -640 518 -640 480 -640 480 -640 426 -640 480 -480 640 -427 640 -640 428 -640 480 -640 427 -640 489 -612 612 -413 640 -640 427 -640 602 -640 428 -480 640 -640 480 -500 375 -640 480 -640 481 -640 480 -640 427 -640 480 -640 480 -640 480 -640 361 -640 427 -480 640 -640 480 -640 428 -424 640 -588 640 -480 640 -500 333 -439 640 -640 427 -640 505 -640 480 -511 640 -427 640 -480 640 -480 640 -640 427 -612 612 -640 427 -432 640 -500 333 -640 480 -640 427 -640 480 -640 320 -640 427 -640 427 -640 426 -640 480 -500 375 -640 427 -480 640 -640 480 -640 425 -383 640 -612 612 -640 480 -427 640 -640 426 -375 500 -480 640 -612 612 -486 640 -640 462 -640 428 -640 426 -640 427 -427 640 -640 480 -612 612 -512 640 -640 428 -640 480 -640 478 -480 640 -640 407 -640 480 -640 480 -480 640 -428 640 -640 426 -640 428 -640 427 -640 480 -640 427 -640 504 -480 640 -640 427 -500 333 -640 427 -640 425 -640 481 -426 640 -640 427 -640 427 -640 425 -480 640 -480 640 -424 500 -640 427 -500 337 -640 480 -500 333 -427 640 -640 418 -640 354 -640 425 -640 427 -640 503 -640 427 -640 424 -500 333 -640 483 -640 426 -640 426 -640 480 -640 480 -640 426 -500 375 -640 427 -640 480 -480 640 -640 428 -427 640 -640 480 -426 640 -640 480 -640 480 -640 480 -500 375 -640 480 -640 480 -640 428 -640 428 -640 480 -640 480 -640 316 -640 513 -640 424 -480 640 -640 480 -640 428 -638 640 -640 425 -640 480 -640 480 -640 480 -640 427 -640 480 -640 478 -640 480 -640 427 -640 604 -640 361 -640 427 -480 640 -500 375 -640 480 -480 640 -640 427 -480 640 -640 429 -640 427 -640 420 -640 428 -640 427 -640 425 -640 426 -439 640 -640 480 -640 480 -640 427 -640 428 -640 427 -640 346 -640 427 -640 438 -640 427 -640 428 -500 375 -640 480 -640 431 -640 426 -640 480 -640 480 -333 500 -480 640 -640 480 -640 512 -640 340 -354 375 -640 424 -640 480 -640 480 -640 480 -640 425 -640 480 -427 640 -480 640 -500 375 -425 640 -640 480 -374 500 -500 476 -640 640 -640 427 -425 640 -400 302 -640 480 -463 500 -426 640 -640 480 -426 640 -640 427 -640 360 -640 480 -426 640 -640 480 -640 480 -640 427 -500 392 -640 378 -640 480 -640 343 -640 427 -640 426 -640 427 -640 426 -400 500 -500 333 -640 399 -640 512 -640 366 -612 612 -640 426 -640 480 -640 425 -598 640 -640 427 -480 640 -500 375 -508 640 -424 640 -640 427 -640 480 -480 640 -379 500 -640 318 -640 428 -427 640 -640 361 -640 427 -612 612 -640 427 -427 640 -480 640 -427 640 -640 427 -640 493 -640 425 -640 426 -612 612 -640 480 -640 427 -640 531 -500 333 -480 640 -640 425 -500 375 -640 399 -640 489 -640 426 -500 375 -640 427 -640 426 -640 480 -512 640 -427 640 -640 480 -406 640 -480 640 -612 612 -500 375 -640 480 -640 428 -480 640 -640 383 -640 480 -640 454 -640 480 -640 427 -425 640 -375 500 -640 480 -640 426 -640 480 -640 425 -640 427 -424 640 -469 640 -640 480 -640 480 -640 426 -375 500 -640 425 -640 457 -500 334 -640 426 -480 640 -640 480 -640 427 -640 480 -640 629 -480 640 -478 640 -480 640 -640 480 -640 426 -424 640 -640 427 -640 480 -640 480 -640 201 -640 480 -640 420 -640 480 -500 375 -640 478 -640 433 -482 640 -500 375 -640 480 -500 375 -375 500 -640 500 -640 481 -640 432 -640 425 -640 480 -640 480 -640 425 -640 400 -640 480 -640 414 -640 443 -640 425 -500 495 -640 480 -500 375 -640 480 -375 500 -640 427 -415 500 -640 427 -640 427 -500 333 -640 425 -612 612 -640 426 -426 640 -640 424 -500 290 -640 428 -640 357 -480 640 -480 640 -478 640 -640 427 -640 480 -500 333 -640 427 -640 426 -640 428 -640 569 -640 480 -457 640 -612 612 -640 428 -359 640 -640 428 -500 375 -453 640 -640 480 -640 427 -480 640 -640 427 -500 334 -333 500 -640 517 -640 425 -461 640 -490 640 -640 480 -500 375 -640 480 -480 640 -640 480 -480 640 -640 486 -640 480 -500 334 -640 480 -612 612 -640 427 -640 428 -640 310 -640 427 -612 612 -425 640 -427 640 -300 500 -640 438 -332 500 -640 427 -500 316 -427 640 -480 640 -640 480 -500 352 -640 428 -640 412 -640 480 -427 640 -413 640 -500 375 -640 226 -640 496 -640 612 -640 433 -640 464 -640 426 -640 480 -375 500 -502 640 -640 480 -500 375 -640 425 -640 480 -480 640 -640 480 -640 427 -640 480 -480 640 -480 640 -427 640 -640 393 -500 332 -640 360 -332 500 -640 427 -500 332 -640 428 -640 426 -500 375 -478 640 -640 427 -640 640 -640 427 -485 640 -478 640 -612 612 -640 425 -640 457 -545 640 -480 640 -500 375 -640 480 -512 640 -640 427 -333 500 -640 427 -640 480 -640 413 -640 480 -512 640 -640 433 -640 594 -426 640 -640 424 -480 640 -640 544 -640 427 -640 600 -640 480 -480 640 -640 349 -480 640 -334 500 -500 365 -333 500 -640 389 -640 480 -640 480 -640 421 -640 480 -375 500 -480 640 -478 640 -640 480 -640 480 -500 375 -640 425 -640 430 -640 360 -479 640 -480 640 -640 426 -640 480 -425 640 -640 480 -640 480 -640 480 -640 480 -500 335 -640 480 -480 640 -640 363 -486 640 -480 640 -640 427 -500 281 -640 416 -640 427 -480 640 -600 399 -500 350 -454 640 -640 427 -640 480 -640 480 -427 640 -640 480 -640 427 -640 461 -640 513 -640 427 -333 500 -640 427 -640 512 -640 480 -640 480 -612 612 -640 480 -500 333 -362 500 -640 427 -500 375 -500 334 -640 427 -640 425 -480 640 -640 425 -427 640 -640 427 -640 480 -448 640 -640 426 -640 427 -640 427 -480 640 -640 401 -640 427 -640 480 -640 480 -640 425 -640 435 -640 425 -640 427 -375 500 -640 480 -612 612 -640 427 -640 427 -640 480 -427 640 -640 480 -640 480 -427 640 -640 480 -640 427 -640 341 -581 640 -640 480 -480 640 -640 360 -640 409 -332 500 -640 429 -640 427 -433 640 -375 500 -640 480 -640 480 -640 512 -640 480 -640 427 -640 480 -640 427 -640 480 -640 426 -480 640 -640 480 -424 640 -640 428 -481 640 -640 426 -480 640 -640 480 -640 427 -500 375 -640 426 -640 480 -480 640 -640 480 -429 640 -640 480 -440 640 -480 640 -400 300 -640 426 -614 640 -500 455 -640 480 -640 427 -640 427 -640 425 -640 480 -640 480 -640 480 -480 640 -500 426 -500 375 -640 427 -500 335 -500 375 -500 375 -640 536 -640 640 -480 640 -640 426 -640 426 -429 640 -640 426 -640 427 -640 427 -480 640 -640 480 -640 499 -640 427 -483 640 -640 427 -640 477 -640 480 -640 512 -640 234 -640 427 -640 480 -640 480 -640 427 -640 424 -640 424 -480 640 -473 303 -500 375 -332 500 -640 427 -640 415 -478 640 -640 480 -640 425 -640 427 -640 427 -640 480 -500 333 -640 478 -640 422 -640 430 -640 480 -640 480 -500 375 -640 427 -640 480 -640 480 -640 480 -640 480 -640 480 -480 640 -500 375 -360 270 -393 640 -640 428 -478 640 -640 480 -557 640 -640 427 -333 500 -427 640 -317 500 -640 425 -480 640 -640 478 -640 427 -640 427 -640 374 -480 640 -640 480 -640 427 -375 500 -480 640 -427 640 -640 384 -640 480 -640 480 -394 640 -640 480 -640 480 -640 437 -640 427 -430 640 -640 160 -480 640 -427 640 -640 478 -640 354 -640 425 -500 333 -640 427 -427 640 -640 480 -500 375 -500 375 -640 428 -640 427 -640 478 -640 427 -480 640 -640 425 -640 480 -640 424 -640 457 -640 480 -500 333 -500 378 -375 500 -640 448 -500 333 -640 480 -640 423 -640 428 -640 494 -640 480 -480 640 -640 391 -640 479 -480 640 -640 510 -640 427 -425 640 -640 480 -427 640 -480 640 -480 640 -640 381 -640 480 -500 333 -518 640 -478 640 -640 640 -640 426 -640 414 -640 424 -372 500 -480 640 -480 640 -480 640 -640 480 -640 457 -427 640 -640 428 -640 360 -500 500 -612 499 -640 427 -480 640 -640 427 -426 640 -640 425 -640 411 -640 480 -640 480 -640 480 -640 428 -467 640 -640 480 -640 510 -640 427 -640 427 -640 427 -640 480 -640 428 -640 480 -640 426 -500 375 -333 500 -375 500 -640 480 -500 458 -640 640 -480 640 -640 427 -640 359 -640 480 -591 640 -464 640 -640 427 -384 500 -480 640 -480 640 -640 427 -640 427 -640 428 -640 428 -500 375 -378 500 -500 333 -640 480 -640 480 -640 360 -500 331 -640 480 -500 375 -501 640 -640 427 -426 640 -640 427 -640 480 -427 640 -640 404 -640 403 -427 640 -640 480 -640 427 -640 428 -640 480 -640 427 -427 640 -518 640 -463 640 -417 640 -640 640 -394 640 -640 310 -500 375 -426 640 -640 480 -426 640 -640 427 -640 178 -480 640 -640 480 -428 640 -640 480 -640 480 -640 428 -426 640 -640 480 -427 640 -612 612 -640 480 -427 640 -640 480 -640 480 -640 480 -480 640 -640 425 -427 640 -640 360 -640 427 -640 427 -640 427 -640 426 -640 427 -640 425 -640 427 -500 375 -480 640 -486 500 -600 600 -640 480 -640 425 -640 480 -640 436 -640 425 -480 640 -640 480 -640 360 -640 424 -640 426 -640 427 -500 375 -612 612 -640 425 -425 640 -496 640 -640 474 -500 375 -640 480 -640 396 -640 459 -480 640 -640 425 -427 640 -640 480 -480 640 -480 640 -640 427 -640 360 -640 425 -427 640 -500 334 -426 640 -429 640 -533 640 -640 428 -561 640 -334 500 -640 428 -480 320 -640 432 -640 424 -500 375 -640 427 -640 480 -426 640 -424 640 -640 446 -640 480 -640 426 -640 427 -500 333 -640 480 -640 427 -500 375 -480 640 -640 427 -375 500 -480 640 -640 426 -640 428 -640 427 -612 612 -640 428 -427 640 -640 480 -640 480 -448 640 -426 640 -640 425 -640 427 -640 464 -640 640 -425 640 -640 427 -384 500 -480 640 -480 640 -640 427 -500 358 -640 425 -640 480 -425 640 -417 640 -612 612 -640 480 -640 480 -640 480 -480 640 -640 359 -640 485 -640 640 -640 480 -300 225 -640 640 -640 480 -500 332 -640 423 -480 640 -640 480 -640 480 -640 424 -640 427 -640 425 -640 480 -640 427 -640 427 -640 457 -640 480 -427 640 -640 480 -640 419 -427 640 -640 427 -640 480 -640 480 -640 427 -500 360 -480 640 -640 480 -640 480 -640 480 -480 640 -640 427 -640 427 -640 428 -640 427 -640 427 -640 427 -640 330 -640 424 -640 386 -640 427 -640 480 -640 480 -640 480 -480 640 -375 500 -640 398 -640 426 -640 436 -640 426 -640 427 -640 480 -500 375 -640 426 -427 640 -640 426 -640 426 -640 359 -640 480 -640 427 -640 480 -640 428 -640 303 -519 631 -640 480 -640 480 -640 513 -640 360 -612 612 -480 640 -500 371 -640 480 -640 426 -640 427 -640 360 -640 512 -640 422 -640 427 -640 480 -640 480 -640 533 -640 426 -500 347 -397 640 -640 425 -640 480 -640 427 -640 640 -640 480 -640 534 -640 428 -640 480 -500 354 -640 427 -640 480 -640 425 -640 427 -480 640 -333 500 -639 640 -640 413 -640 508 -500 333 -640 427 -640 427 -480 640 -640 480 -640 429 -500 375 -480 640 -623 640 -452 640 -640 431 -480 640 -640 424 -640 427 -603 640 -500 375 -640 428 -640 376 -640 427 -640 427 -640 480 -640 426 -640 427 -480 640 -640 427 -640 426 -640 425 -640 427 -640 426 -640 451 -640 427 -480 640 -428 640 -636 477 -427 640 -640 389 -450 640 -640 480 -640 480 -426 640 -640 480 -640 427 -640 424 -480 640 -640 427 -489 640 -640 525 -640 425 -500 376 -640 427 -640 480 -640 446 -640 480 -640 427 -640 480 -500 375 -640 429 -480 640 -622 640 -640 428 -478 640 -640 426 -640 480 -640 360 -375 500 -500 375 -480 640 -640 480 -640 466 -500 375 -640 329 -541 640 -426 640 -640 640 -640 397 -640 425 -500 336 -640 359 -640 430 -640 427 -640 427 -480 640 -640 360 -640 480 -640 427 -591 640 -480 640 -640 428 -640 480 -428 640 -640 480 -375 500 -640 480 -640 480 -484 500 -612 612 -427 640 -640 383 -500 333 -640 427 -407 640 -640 433 -640 480 -500 375 -500 429 -425 640 -640 425 -612 612 -640 480 -500 375 -640 480 -640 480 -426 640 -500 348 -640 480 -488 500 -640 427 -500 375 -478 640 -640 480 -500 312 -333 500 -640 429 -640 480 -640 429 -640 427 -640 518 -640 474 -640 480 -640 480 -480 360 -640 427 -640 513 -622 640 -640 480 -398 640 -640 427 -640 426 -332 500 -469 640 -640 480 -640 429 -640 427 -640 375 -640 424 -426 640 -640 427 -640 480 -450 338 -480 640 -640 427 -640 640 -640 427 -640 427 -486 365 -427 640 -640 427 -640 480 -500 375 -640 428 -640 427 -640 425 -612 612 -640 423 -640 465 -640 511 -640 427 -640 480 -375 500 -640 424 -640 480 -640 425 -640 359 -500 335 -480 640 -640 480 -640 480 -640 427 -478 640 -640 480 -500 333 -640 640 -640 423 -640 427 -500 375 -640 426 -640 480 -411 640 -640 428 -640 427 -612 612 -640 480 -640 426 -424 640 -640 477 -640 423 -640 480 -640 416 -640 429 -640 481 -480 640 -640 449 -640 480 -640 427 -612 612 -500 333 -640 480 -640 472 -640 640 -640 480 -480 640 -640 426 -640 428 -480 640 -640 426 -480 640 -427 640 -640 480 -640 480 -375 500 -640 480 -360 640 -640 480 -640 486 -640 480 -640 480 -640 480 -425 640 -520 640 -640 426 -640 480 -640 480 -500 281 -500 375 -640 427 -427 640 -535 640 -612 612 -480 640 -360 640 -640 480 -640 480 -395 640 -579 640 -377 500 -640 480 -640 480 -640 427 -640 480 -500 375 -482 640 -427 640 -640 480 -480 640 -480 640 -500 375 -640 480 -400 266 -500 375 -640 480 -640 639 -640 480 -375 500 -480 640 -640 480 -426 640 -480 640 -427 640 -640 427 -426 640 -640 480 -640 289 -640 480 -640 427 -500 434 -640 637 -640 428 -640 480 -640 478 -640 383 -640 427 -440 500 -359 640 -640 480 -640 427 -425 640 -376 500 -427 640 -640 640 -640 356 -640 480 -236 236 -375 500 -640 427 -480 640 -640 480 -427 640 -415 500 -640 427 -640 427 -640 427 -640 466 -500 375 -640 480 -375 500 -480 640 -640 480 -480 640 -640 339 -640 251 -640 426 -427 640 -500 333 -640 459 -640 427 -640 419 -375 500 -426 640 -640 480 -640 480 -640 480 -421 640 -640 427 -333 500 -640 425 -640 425 -640 400 -640 426 -640 480 -500 332 -480 640 -640 480 -640 480 -640 523 -640 480 -640 480 -640 444 -540 640 -472 640 -500 333 -640 531 -640 425 -640 480 -640 478 -500 375 -640 480 -640 440 -640 480 -640 415 -640 455 -640 428 -359 640 -429 640 -640 480 -480 640 -640 480 -640 427 -427 640 -640 480 -512 640 -428 640 -480 640 -640 555 -640 429 -640 427 -359 640 -640 427 -640 427 -640 442 -500 375 -640 434 -428 640 -500 333 -640 426 -640 427 -640 427 -640 480 -640 424 -640 359 -640 590 -480 640 -640 360 -427 640 -512 640 -640 480 -511 640 -640 428 -640 447 -640 480 -640 428 -640 480 -640 480 -422 640 -640 480 -480 640 -500 375 -375 500 -640 425 -640 439 -640 480 -500 375 -375 500 -640 426 -500 338 -640 427 -640 480 -500 400 -640 360 -640 426 -640 640 -612 612 -640 360 -640 360 -500 375 -612 612 -640 427 -640 334 -640 428 -640 427 -640 425 -427 640 -428 640 -585 640 -500 344 -640 360 -426 640 -462 640 -640 427 -480 640 -513 640 -500 375 -500 377 -624 416 -427 640 -508 640 -640 480 -640 639 -640 428 -640 428 -640 428 -640 437 -375 500 -640 427 -640 427 -640 427 -640 360 -640 480 -640 428 -480 640 -640 425 -640 427 -480 640 -480 640 -640 427 -640 428 -425 640 -640 429 -500 375 -640 426 -640 427 -640 491 -640 480 -640 480 -427 640 -640 429 -640 426 -640 426 -640 480 -640 426 -640 392 -640 425 -458 640 -640 424 -640 480 -640 480 -640 480 -640 480 -640 480 -446 640 -640 480 -640 480 -500 333 -640 427 -640 428 -427 640 -477 640 -640 426 -640 496 -640 426 -640 428 -507 640 -640 427 -640 480 -480 640 -480 640 -640 427 -640 480 -334 500 -640 455 -640 431 -640 428 -512 326 -602 640 -640 485 -640 640 -612 612 -640 419 -480 640 -500 333 -333 500 -640 433 -640 480 -640 426 -640 427 -480 640 -427 640 -640 480 -640 427 -500 375 -640 480 -640 480 -640 480 -480 640 -640 480 -640 480 -640 480 -640 480 -640 429 -640 427 -640 427 -640 466 -500 332 -426 640 -480 640 -640 410 -640 480 -640 480 -640 359 -640 480 -424 640 -640 396 -640 427 -640 480 -640 427 -640 480 -480 640 -427 640 -480 640 -640 480 -440 640 -333 500 -640 427 -640 480 -640 427 -426 640 -640 427 -500 500 -640 427 -549 640 -500 300 -480 640 -640 427 -640 424 -640 427 -640 425 -480 640 -640 326 -428 640 -640 434 -480 640 -360 640 -480 640 -500 375 -640 427 -478 640 -640 427 -640 427 -640 640 -640 480 -640 456 -427 640 -640 480 -478 640 -375 500 -435 640 -640 425 -640 471 -640 404 -640 480 -480 640 -427 640 -640 480 -640 427 -640 481 -640 480 -640 480 -640 426 -640 480 -333 500 -640 480 -640 429 -500 333 -640 427 -606 640 -500 333 -640 427 -640 480 -640 428 -375 500 -640 427 -640 427 -640 425 -640 480 -640 480 -640 427 -640 181 -480 640 -640 480 -640 438 -640 480 -640 480 -640 480 -480 640 -640 425 -480 640 -500 333 -640 480 -375 500 -480 640 -359 640 -640 480 -480 640 -640 383 -500 304 -640 427 -640 480 -640 457 -640 428 -640 425 -480 640 -500 333 -480 640 -640 427 -383 640 -640 426 -480 640 -612 612 -640 480 -640 480 -426 640 -640 366 -375 500 -640 360 -640 427 -428 640 -640 427 -640 427 -640 401 -640 425 -640 427 -640 564 -640 481 -640 427 -500 333 -640 480 -383 640 -478 640 -640 640 -500 500 -640 432 -500 375 -427 640 -480 640 -640 424 -640 480 -640 426 -480 640 -640 480 -640 567 -640 429 -640 427 -500 334 -480 640 -640 480 -500 333 -640 480 -427 640 -640 424 -640 480 -640 480 -640 359 -640 421 -428 640 -640 427 -640 426 -640 427 -640 426 -579 640 -640 366 -640 426 -480 640 -640 480 -500 335 -480 640 -480 640 -640 480 -411 640 -427 640 -640 480 -375 500 -527 640 -500 374 -341 500 -500 375 -640 480 -427 640 -640 427 -421 640 -480 640 -640 480 -640 427 -492 500 -640 427 -640 425 -640 427 -640 480 -640 424 -640 424 -640 427 -640 481 -500 332 -640 441 -640 480 -403 640 -500 375 -480 640 -640 427 -432 640 -426 640 -640 428 -640 427 -500 375 -480 640 -640 426 -640 427 -455 640 -487 640 -640 427 -640 427 -428 640 -640 480 -500 500 -640 401 -640 480 -640 480 -640 427 -375 500 -640 464 -640 424 -612 612 -640 426 -640 426 -640 480 -640 426 -640 480 -427 640 -640 425 -612 612 -640 454 -640 427 -640 427 -500 332 -320 240 -453 640 -640 535 -640 539 -427 640 -480 640 -347 640 -480 640 -427 640 -427 640 -409 640 -480 640 -500 346 -427 640 -640 427 -426 640 -640 480 -640 480 -425 640 -500 332 -480 640 -500 375 -426 640 -426 640 -640 480 -640 480 -480 640 -640 427 -428 640 -375 500 -640 426 -500 209 -427 640 -640 427 -480 640 -640 425 -480 640 -436 640 -640 425 -640 438 -640 426 -640 495 -640 424 -500 333 -640 426 -480 640 -428 640 -640 427 -640 499 -640 480 -640 426 -640 480 -500 375 -640 480 -426 640 -640 555 -640 480 -640 483 -640 425 -375 500 -640 480 -500 333 -640 480 -640 426 -630 640 -425 640 -640 421 -480 640 -500 375 -480 640 -500 375 -640 427 -640 427 -640 427 -640 474 -333 500 -640 457 -640 480 -640 417 -442 442 -640 408 -640 427 -640 425 -640 360 -427 640 -476 640 -638 640 -640 425 -500 281 -500 375 -426 640 -640 480 -640 426 -338 500 -640 480 -640 427 -640 428 -640 480 -640 640 -640 427 -640 493 -640 427 -543 640 -640 360 -640 480 -640 480 -612 612 -425 640 -640 434 -640 480 -500 400 -500 325 -500 400 -640 480 -640 511 -640 457 -640 427 -640 480 -429 640 -640 425 -640 454 -640 428 -634 640 -612 612 -640 480 -640 479 -640 480 -640 480 -480 360 -640 427 -640 480 -640 425 -500 335 -513 640 -612 612 -640 527 -640 427 -640 343 -640 426 -612 612 -640 427 -640 480 -640 427 -640 360 -467 640 -640 359 -500 334 -640 480 -640 426 -640 480 -640 428 -640 343 -640 640 -640 424 -640 408 -476 640 -438 640 -479 640 -426 640 -480 640 -409 255 -640 428 -640 480 -640 427 -640 480 -500 333 -640 428 -480 640 -480 640 -640 426 -426 640 -640 426 -640 427 -373 495 -640 416 -480 640 -480 640 -640 425 -500 326 -640 426 -640 480 -500 400 -500 335 -640 480 -640 475 -640 480 -612 612 -640 480 -427 640 -640 427 -640 427 -640 480 -640 427 -428 640 -640 427 -640 640 -640 427 -640 398 -640 505 -640 427 -584 640 -640 480 -640 401 -500 281 -612 612 -500 375 -640 426 -500 375 -500 341 -640 424 -640 390 -500 307 -640 401 -640 424 -500 375 -640 427 -549 640 -640 427 -640 427 -500 375 -640 361 -375 500 -640 427 -424 640 -640 480 -640 213 -438 640 -640 442 -480 640 -640 428 -394 640 -640 424 -640 313 -640 480 -640 480 -640 480 -612 612 -480 640 -486 640 -640 413 -640 427 -625 640 -640 413 -640 512 -640 429 -640 426 -640 429 -640 480 -640 427 -500 333 -640 480 -640 436 -640 414 -500 375 -428 640 -640 425 -640 480 -480 640 -640 424 -480 640 -500 500 -640 480 -640 480 -640 427 -500 403 -640 480 -500 375 -640 480 -640 427 -640 480 -640 480 -640 360 -640 427 -375 500 -640 480 -640 427 -427 640 -640 480 -612 612 -427 640 -426 640 -640 425 -640 480 -640 427 -640 427 -640 426 -500 375 -640 480 -640 480 -640 439 -500 334 -640 480 -640 480 -500 333 -500 375 -500 375 -500 333 -640 427 -640 480 -402 500 -640 444 -640 426 -640 427 -458 640 -640 480 -640 427 -640 480 -640 478 -640 640 -640 480 -640 480 -640 480 -640 427 -640 482 -425 640 -640 427 -640 480 -640 480 -640 427 -640 480 -401 603 -640 640 -640 346 -640 384 -640 427 -640 480 -640 480 -640 510 -640 480 -419 640 -640 428 -640 427 -640 480 -640 480 -425 640 -640 478 -480 640 -640 427 -640 349 -640 640 -640 480 -640 427 -640 588 -640 434 -640 366 -640 480 -640 458 -480 640 -612 612 -480 640 -640 480 -640 427 -640 429 -640 480 -400 224 -640 428 -240 160 -500 385 -640 480 -640 414 -640 501 -640 480 -448 640 -375 500 -640 425 -640 426 -640 470 -640 480 -640 424 -640 480 -640 480 -640 428 -640 480 -640 358 -375 500 -640 480 -483 640 -480 640 -640 427 -640 483 -625 480 -640 480 -640 480 -640 425 -640 480 -640 427 -600 450 -500 336 -640 480 -640 427 -640 479 -640 480 -640 425 -480 640 -640 426 -640 427 -640 480 -640 433 -640 458 -640 436 -500 375 -500 332 -640 480 -427 640 -640 556 -640 428 -640 428 -640 475 -480 640 -375 500 -375 500 -640 428 -640 480 -640 427 -427 640 -640 474 -480 640 -480 640 -640 480 -640 457 -612 612 -500 333 -640 480 -640 480 -640 359 -480 640 -640 428 -375 500 -640 480 -640 440 -427 640 -500 313 -500 333 -640 427 -640 460 -640 426 -640 427 -427 640 -640 427 -640 480 -500 375 -426 640 -640 427 -500 425 -640 480 -480 640 -640 424 -496 640 -640 515 -640 360 -500 374 -640 640 -640 480 -458 640 -500 375 -640 433 -333 500 -640 360 -640 427 -640 427 -425 640 -640 427 -640 480 -640 429 -480 640 -500 422 -425 640 -480 640 -640 421 -640 480 -640 480 -500 375 -500 333 -640 518 -640 479 -640 471 -640 427 -640 480 -427 640 -640 427 -640 382 -500 375 -500 305 -640 350 -640 425 -427 640 -640 479 -640 426 -486 640 -640 512 -640 427 -480 640 -640 480 -640 480 -500 375 -640 480 -640 392 -478 640 -640 309 -612 612 -640 428 -247 500 -640 480 -640 480 -640 521 -640 427 -640 480 -640 480 -518 640 -640 480 -640 426 -500 375 -640 480 -640 480 -427 640 -640 480 -356 640 -600 400 -640 418 -640 480 -516 640 -640 256 -640 396 -640 484 -640 436 -382 500 -612 612 -640 426 -640 400 -480 640 -640 428 -640 422 -425 640 -612 612 -640 392 -640 426 -426 640 -640 428 -640 480 -480 640 -370 251 -640 427 -640 479 -427 640 -640 383 -640 425 -640 427 -640 480 -640 427 -640 425 -640 480 -480 640 -640 426 -640 386 -640 383 -612 612 -640 428 -640 425 -640 480 -428 640 -640 425 -640 480 -640 480 -480 640 -640 480 -640 425 -640 426 -534 640 -640 480 -640 426 -640 428 -500 375 -640 360 -500 333 -640 427 -480 640 -640 360 -500 400 -640 424 -500 330 -640 588 -640 480 -480 640 -640 347 -385 289 -640 480 -640 423 -640 480 -640 480 -640 450 -640 480 -480 640 -425 640 -640 480 -500 332 -640 480 -612 612 -640 457 -640 480 -468 304 -640 427 -425 640 -640 427 -640 480 -480 640 -640 425 -640 480 -640 427 -640 478 -500 500 -640 480 -500 375 -375 500 -640 480 -480 640 -640 425 -640 424 -640 480 -640 415 -640 480 -640 329 -640 425 -437 640 -640 427 -640 427 -480 640 -640 426 -500 375 -640 480 -333 500 -640 426 -640 446 -640 480 -480 640 -500 333 -482 625 -640 480 -480 640 -484 640 -466 640 -640 427 -640 480 -640 427 -640 424 -500 333 -640 480 -640 400 -640 480 -640 427 -480 640 -640 429 -640 480 -640 427 -640 427 -640 425 -480 640 -640 427 -480 640 -375 500 -500 333 -500 317 -640 427 -451 640 -480 640 -640 480 -427 640 -640 428 -640 426 -480 640 -320 240 -640 480 -640 427 -640 426 -640 480 -640 436 -640 429 -640 427 -640 480 -640 410 -500 360 -640 480 -640 480 -640 640 -640 427 -640 543 -428 640 -640 489 -640 570 -500 375 -613 640 -500 431 -640 432 -428 640 -640 479 -640 480 -640 480 -612 612 -640 480 -500 375 -640 480 -500 375 -640 421 -640 426 -640 424 -640 427 -476 640 -612 612 -640 480 -640 428 -640 480 -640 480 -480 640 -640 417 -480 640 -640 425 -640 480 -640 456 -640 480 -448 640 -588 640 -640 425 -500 375 -640 427 -640 480 -427 640 -424 640 -480 640 -640 428 -640 480 -480 640 -640 480 -500 375 -480 360 -480 640 -640 426 -480 640 -640 427 -640 426 -640 422 -427 640 -480 640 -640 427 -500 364 -640 428 -334 500 -375 500 -640 438 -427 640 -640 480 -640 480 -500 333 -640 435 -640 480 -500 333 -640 480 -427 640 -500 333 -640 480 -640 425 -640 480 -640 412 -480 640 -640 480 -464 640 -640 480 -480 640 -640 360 -640 428 -640 355 -640 427 -640 427 -640 480 -500 333 -640 480 -640 480 -500 375 -640 427 -375 500 -546 640 -339 500 -640 427 -640 429 -425 640 -640 427 -640 427 -640 361 -640 427 -640 321 -640 427 -640 426 -640 427 -640 480 -375 500 -640 425 -500 333 -640 480 -640 459 -640 490 -640 427 -640 480 -640 427 -640 425 -375 500 -320 408 -640 457 -500 366 -640 427 -640 512 -480 640 -640 588 -640 625 -427 640 -640 426 -480 640 -425 640 -612 612 -640 419 -640 480 -500 316 -635 640 -500 378 -640 424 -640 426 -640 360 -640 460 -640 480 -640 424 -500 375 -640 480 -640 480 -426 640 -427 640 -640 360 -640 479 -640 427 -640 480 -500 333 -640 426 -640 427 -612 612 -500 333 -640 429 -500 418 -427 640 -640 425 -480 640 -640 480 -640 428 -640 480 -640 480 -427 640 -640 420 -640 427 -640 427 -640 427 -500 357 -480 640 -480 640 -640 482 -500 375 -640 480 -640 433 -464 640 -467 640 -500 332 -500 375 -640 349 -640 427 -640 480 -640 480 -334 500 -375 500 -640 423 -640 480 -640 428 -500 451 -640 428 -640 427 -517 640 -640 426 -640 427 -480 640 -383 640 -480 640 -640 428 -640 426 -640 428 -479 640 -640 360 -335 198 -640 480 -640 426 -640 480 -510 640 -640 426 -612 612 -640 424 -630 640 -640 427 -640 427 -640 427 -640 428 -640 480 -480 640 -472 640 -500 375 -640 480 -425 640 -640 480 -640 428 -378 640 -427 640 -640 480 -375 500 -640 480 -427 640 -281 500 -640 436 -480 640 -375 500 -640 567 -640 427 -640 427 -375 500 -640 424 -640 480 -640 493 -640 360 -640 497 -258 344 -640 480 -640 427 -441 640 -333 500 -360 640 -500 375 -640 480 -427 640 -640 428 -640 427 -640 428 -500 375 -640 427 -500 289 -640 359 -640 301 -640 428 -428 640 -640 480 -473 640 -640 427 -640 426 -480 640 -612 612 -640 479 -640 427 -640 480 -640 480 -429 640 -640 480 -640 480 -500 375 -640 480 -640 480 -640 427 -427 640 -453 640 -500 390 -640 393 -500 375 -500 334 -640 346 -480 640 -640 480 -427 640 -640 427 -640 426 -640 427 -640 428 -640 480 -427 640 -640 480 -640 433 -640 425 -640 427 -640 480 -472 640 -640 480 -640 427 -640 640 -640 480 -639 640 -640 360 -361 640 -640 480 -333 500 -640 427 -640 480 -640 368 -426 640 -640 427 -480 640 -640 359 -427 640 -640 480 -640 408 -640 429 -640 478 -640 480 -640 417 -640 427 -640 426 -500 375 -640 480 -640 427 -640 480 -640 480 -640 409 -640 480 -640 427 -640 427 -480 640 -480 640 -640 480 -640 428 -612 612 -333 500 -640 438 -640 427 -616 640 -500 375 -640 480 -500 339 -640 427 -640 428 -640 480 -640 480 -640 480 -640 427 -640 480 -640 359 -640 428 -640 359 -640 480 -640 381 -640 480 -480 640 -640 360 -640 425 -640 479 -640 425 -640 485 -640 426 -640 427 -628 640 -500 375 -500 375 -640 427 -640 423 -425 640 -480 640 -500 375 -640 428 -458 640 -479 640 -640 480 -480 640 -640 480 -288 640 -640 427 -640 477 -640 427 -480 640 -640 480 -640 480 -640 480 -640 359 -640 428 -640 425 -640 449 -500 375 -640 428 -640 480 -640 481 -500 375 -500 333 -640 424 -640 430 -612 612 -640 424 -640 427 -500 375 -640 427 -640 453 -640 422 -640 424 -640 425 -640 425 -640 427 -480 640 -640 480 -640 359 -480 640 -640 426 -640 480 -640 427 -640 426 -640 427 -640 427 -480 640 -429 640 -408 640 -612 612 -427 640 -640 480 -640 480 -500 318 -640 534 -640 479 -640 406 -640 512 -640 427 -640 427 -640 388 -640 426 -640 478 -640 424 -640 480 -480 640 -640 427 -640 640 -640 480 -500 333 -640 433 -640 427 -640 426 -640 427 -640 480 -640 425 -640 428 -640 426 -425 640 -500 375 -640 480 -640 426 -640 434 -640 480 -640 441 -640 425 -640 425 -480 640 -640 427 -565 640 -427 640 -640 480 -640 480 -640 480 -640 427 -640 479 -427 640 -640 640 -500 337 -500 359 -480 640 -427 640 -640 480 -612 612 -640 427 -640 428 -425 640 -640 427 -480 640 -512 640 -640 513 -640 427 -640 480 -500 375 -640 425 -640 480 -428 640 -500 375 -640 425 -500 399 -427 640 -640 427 -500 333 -640 428 -640 428 -640 480 -640 427 -640 428 -413 500 -640 427 -640 424 -640 429 -640 480 -640 480 -640 478 -640 480 -640 452 -640 480 -500 292 -500 375 -640 480 -640 480 -640 480 -640 480 -640 427 -640 426 -480 640 -640 480 -640 427 -640 427 -640 360 -500 333 -640 477 -436 640 -640 426 -640 427 -640 427 -480 640 -612 612 -640 301 -640 311 -640 480 -427 640 -640 457 -640 427 -640 427 -640 480 -640 331 -500 375 -276 640 -640 424 -500 500 -478 640 -612 612 -640 381 -512 640 -433 640 -640 480 -480 640 -640 480 -480 640 -640 480 -427 640 -640 430 -640 480 -640 480 -640 428 -500 373 -640 428 -640 366 -640 475 -640 480 -427 640 -640 427 -500 375 -500 375 -375 500 -640 427 -427 640 -640 480 -640 480 -300 451 -640 383 -640 427 -500 375 -640 424 -500 375 -400 600 -640 478 -640 480 -375 500 -500 375 -640 480 -640 456 -640 427 -480 640 -480 640 -500 375 -500 415 -640 436 -375 500 -480 640 -427 640 -640 480 -640 428 -524 640 -640 489 -612 612 -480 640 -640 426 -640 426 -640 480 -640 425 -640 427 -640 427 -612 612 -640 445 -640 480 -640 427 -480 640 -640 361 -640 427 -640 454 -640 453 -427 640 -640 459 -500 283 -349 500 -640 480 -640 480 -640 480 -640 480 -640 480 -374 500 -480 640 -640 480 -480 640 -500 332 -500 332 -612 612 -640 426 -640 428 -500 333 -640 480 -640 480 -612 612 -640 427 -500 276 -500 332 -640 480 -640 427 -640 480 -640 480 -480 640 -640 480 -480 640 -640 429 -640 480 -640 512 -480 640 -640 480 -640 450 -640 426 -640 427 -640 480 -426 640 -640 427 -640 427 -640 480 -379 640 -640 425 -640 427 -640 400 -640 480 -640 427 -640 427 -640 480 -640 480 -640 427 -480 640 -640 424 -500 374 -640 480 -640 427 -640 480 -640 402 -640 480 -640 480 -640 640 -640 538 -640 480 -640 426 -640 480 -612 612 -480 640 -480 640 -640 427 -640 512 -640 480 -640 427 -640 439 -640 427 -480 640 -426 640 -612 612 -640 332 -500 375 -640 478 -640 433 -480 640 -450 600 -640 480 -640 480 -604 640 -640 243 -640 480 -424 640 -640 480 -401 640 -500 489 -640 397 -500 375 -500 345 -500 429 -481 640 -640 431 -640 366 -286 176 -640 427 -640 480 -428 640 -480 640 -437 500 -472 640 -640 458 -640 480 -612 612 -640 638 -480 640 -354 640 -640 427 -640 480 -640 480 -640 379 -480 640 -640 480 -478 640 -640 480 -640 428 -640 480 -640 480 -640 480 -640 425 -428 640 -640 428 -640 360 -480 640 -603 640 -640 559 -425 640 -640 480 -640 426 -640 427 -640 480 -640 427 -640 426 -640 480 -640 426 -640 360 -640 427 -640 426 -374 640 -480 640 -428 640 -478 640 -612 612 -640 427 -640 480 -640 486 -640 425 -500 363 -640 427 -640 425 -640 423 -533 640 -640 427 -640 428 -612 612 -444 440 -500 375 -425 640 -400 640 -640 480 -640 480 -640 428 -426 640 -640 480 -640 428 -640 480 -600 400 -425 640 -640 510 -500 333 -500 375 -640 427 -640 427 -640 427 -500 354 -640 480 -301 450 -360 640 -640 427 -512 640 -500 332 -427 640 -640 480 -640 427 -427 640 -640 480 -640 480 -500 375 -640 426 -640 384 -640 480 -500 333 -500 375 -640 480 -500 200 -640 480 -640 511 -640 478 -640 475 -500 375 -500 375 -640 480 -640 366 -640 480 -480 640 -640 423 -447 640 -640 640 -640 426 -640 480 -576 640 -360 640 -640 480 -500 281 -640 444 -640 640 -500 332 -560 175 -500 375 -640 366 -640 640 -640 341 -640 478 -640 428 -640 594 -640 363 -640 427 -640 425 -640 480 -590 640 -481 640 -640 640 -640 425 -640 427 -640 427 -640 427 -640 434 -375 500 -640 406 -640 360 -640 480 -640 480 -427 640 -396 640 -640 426 -640 531 -419 640 -640 426 -640 426 -640 480 -500 375 -640 428 -640 480 -640 480 -640 480 -480 640 -480 640 -444 640 -640 427 -320 240 -640 425 -640 480 -640 480 -425 640 -386 500 -640 480 -640 480 -500 333 -480 640 -422 282 -640 480 -640 443 -347 500 -640 480 -478 640 -480 640 -640 444 -640 640 -640 425 -478 640 -640 427 -640 427 -500 283 -640 480 -640 480 -640 412 -500 417 -427 640 -640 427 -640 323 -640 427 -640 471 -427 640 -640 427 -640 427 -368 500 -640 480 -640 427 -640 450 -640 426 -425 640 -640 427 -500 375 -640 427 -640 426 -640 480 -640 428 -640 360 -640 488 -640 425 -640 480 -398 640 -640 414 -640 399 -640 425 -640 480 -640 439 -427 640 -640 480 -428 640 -550 410 -640 427 -640 480 -640 480 -640 494 -428 640 -640 480 -500 375 -640 566 -640 480 -480 640 -640 478 -640 360 -640 427 -640 480 -480 640 -500 375 -500 333 -640 480 -425 640 -426 640 -640 425 -640 427 -640 279 -640 428 -640 376 -640 425 -640 353 -480 640 -640 464 -640 480 -640 492 -640 480 -640 480 -640 480 -640 480 -640 427 -640 480 -640 426 -640 427 -640 480 -640 427 -640 379 -500 390 -427 640 -640 510 -640 426 -640 480 -427 640 -480 640 -480 640 -640 469 -640 427 -500 375 -640 528 -427 640 -640 427 -640 519 -640 427 -428 640 -640 427 -640 414 -640 513 -640 427 -640 480 -427 640 -640 427 -640 480 -375 500 -500 375 -640 427 -640 428 -500 375 -640 427 -375 500 -640 480 -640 428 -500 333 -640 427 -640 480 -640 427 -640 427 -640 480 -427 640 -640 427 -640 480 -640 426 -500 375 -378 500 -640 565 -640 427 -640 427 -640 427 -640 480 -640 426 -640 452 -500 375 -640 427 -640 427 -640 480 -640 427 -427 640 -640 457 -640 428 -425 640 -640 480 -480 640 -640 383 -500 332 -640 595 -640 480 -640 404 -640 379 -500 498 -480 640 -640 480 -640 480 -375 500 -640 427 -640 427 -640 640 -640 480 -640 427 -640 427 -640 480 -480 640 -640 479 -640 325 -640 480 -427 640 -640 457 -640 428 -640 480 -640 427 -640 428 -640 480 -640 427 -346 500 -640 480 -640 427 -480 640 -480 320 -640 425 -640 474 -375 500 -478 640 -426 640 -640 426 -640 480 -500 400 -640 480 -640 427 -500 375 -640 426 -499 500 -640 426 -640 480 -640 480 -640 480 -640 427 -640 512 -375 500 -640 427 -480 640 -500 365 -640 480 -480 640 -640 426 -640 480 -640 427 -427 640 -480 640 -640 427 -640 480 -640 480 -425 640 -500 375 -500 338 -640 344 -640 427 -640 425 -640 480 -480 640 -427 640 -486 640 -503 640 -640 480 -427 640 -361 640 -640 457 -640 480 -640 427 -426 640 -640 480 -640 473 -640 361 -640 426 -375 500 -500 375 -640 427 -640 427 -640 431 -640 434 -640 480 -500 375 -640 428 -640 480 -371 640 -475 640 -640 476 -640 427 -500 375 -480 640 -640 426 -640 312 -640 480 -640 480 -640 480 -456 640 -640 427 -640 425 -632 640 -640 360 -640 424 -640 426 -403 640 -426 640 -480 640 -640 393 -359 640 -480 640 -612 612 -640 421 -640 425 -640 478 -640 422 -640 396 -500 375 -640 426 -640 427 -640 427 -640 478 -427 640 -500 336 -640 427 -640 640 -640 555 -612 612 -511 640 -428 640 -640 480 -493 640 -640 427 -640 425 -612 612 -478 640 -640 608 -400 308 -480 640 -640 427 -640 480 -640 512 -640 427 -480 640 -640 318 -480 640 -640 437 -500 385 -427 640 -500 374 -500 375 -640 481 -640 428 -640 289 -640 427 -640 427 -640 388 -480 640 -615 640 -640 480 -640 360 -428 640 -500 333 -640 480 -640 359 -355 640 -480 640 -612 612 -480 640 -640 480 -640 428 -640 480 -425 640 -640 425 -640 480 -640 270 -426 640 -640 480 -640 425 -640 408 -428 640 -640 400 -640 426 -622 640 -640 480 -500 375 -640 480 -640 393 -640 360 -640 428 -640 427 -357 500 -480 640 -640 480 -480 640 -400 500 -391 640 -640 480 -640 480 -640 480 -424 640 -640 427 -640 424 -500 339 -640 480 -640 480 -640 428 -427 640 -640 469 -427 640 -640 445 -640 428 -478 640 -375 500 -640 428 -640 425 -640 426 -427 640 -640 480 -640 480 -478 640 -500 375 -640 480 -500 400 -640 426 -640 512 -640 480 -640 457 -640 425 -640 476 -640 427 -500 375 -640 427 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -480 640 -500 375 -640 426 -640 480 -500 375 -640 427 -500 375 -480 640 -640 425 -597 640 -640 480 -640 481 -640 428 -640 512 -640 480 -640 480 -640 480 -427 640 -640 480 -500 334 -640 478 -640 480 -640 444 -480 640 -640 597 -640 427 -640 427 -640 425 -640 478 -640 427 -640 480 -640 427 -451 640 -628 640 -640 640 -500 335 -640 640 -640 318 -640 427 -640 480 -640 480 -640 480 -426 640 -427 640 -500 375 -320 240 -427 640 -640 480 -640 428 -640 429 -427 640 -480 640 -640 427 -640 415 -640 366 -407 500 -640 425 -640 427 -427 640 -480 640 -500 375 -500 360 -478 640 -640 427 -640 510 -640 425 -480 640 -500 334 -640 427 -640 480 -640 427 -333 500 -500 335 -640 427 -375 500 -640 360 -640 427 -640 459 -640 499 -640 473 -480 640 -478 640 -640 438 -640 426 -640 428 -640 441 -640 480 -640 480 -640 526 -640 480 -640 480 -640 480 -640 427 -640 425 -612 612 -398 640 -640 524 -640 478 -427 640 -640 499 -617 640 -640 428 -480 640 -640 423 -500 357 -478 640 -640 360 -640 427 -640 433 -640 425 -545 640 -640 482 -424 640 -640 480 -334 500 -483 640 -427 640 -640 480 -500 333 -500 375 -400 266 -375 500 -640 480 -480 640 -640 428 -500 375 -640 577 -446 640 -640 480 -480 640 -640 480 -640 480 -640 427 -640 426 -362 640 -640 480 -500 375 -500 333 -500 333 -640 426 -640 426 -640 480 -480 640 -640 478 -480 640 -640 427 -500 375 -640 640 -640 480 -640 425 -640 421 -640 427 -640 480 -640 426 -640 426 -640 352 -500 375 -480 640 -640 427 -480 640 -640 427 -426 640 -640 480 -320 400 -640 480 -427 640 -640 358 -640 430 -640 427 -640 426 -500 375 -480 640 -612 612 -480 640 -640 430 -512 512 -640 480 -480 640 -640 427 -640 478 -640 427 -640 427 -640 425 -640 480 -640 425 -640 427 -640 480 -640 427 -500 281 -640 480 -640 480 -428 640 -640 480 -640 480 -425 640 -640 480 -425 640 -480 640 -640 339 -640 427 -427 640 -480 640 -640 425 -427 640 -640 480 -640 423 -442 500 -640 480 -640 427 -480 640 -640 494 -494 500 -480 640 -480 640 -640 480 -640 640 -640 427 -640 480 -640 428 -640 428 -612 612 -480 640 -634 640 -500 333 -500 332 -423 640 -640 427 -480 640 -632 640 -500 323 -640 426 -640 480 -640 480 -640 480 -640 480 -640 480 -640 425 -640 427 -640 432 -332 500 -640 640 -640 478 -640 512 -640 512 -427 640 -500 375 -640 480 -640 480 -640 480 -640 428 -640 480 -640 480 -640 254 -640 480 -500 375 -640 427 -480 640 -640 474 -640 426 -640 480 -640 495 -480 640 -640 480 -640 427 -640 480 -500 333 -640 427 -640 480 -375 500 -640 427 -464 640 -640 480 -480 640 -612 612 -640 421 -640 480 -500 332 -640 480 -640 360 -640 480 -426 640 -500 375 -640 427 -612 612 -640 359 -640 428 -640 360 -640 480 -333 500 -640 360 -640 370 -640 427 -500 372 -640 426 -500 333 -478 640 -500 375 -640 480 -640 368 -500 368 -500 375 -500 332 -640 480 -640 427 -519 640 -640 434 -640 427 -424 640 -640 479 -425 640 -640 478 -640 515 -425 640 -500 375 -600 600 -640 428 -612 612 -640 427 -640 480 -640 466 -640 427 -546 640 -640 480 -640 403 -640 606 -561 640 -427 640 -500 372 -480 640 -477 358 -640 480 -640 428 -640 478 -427 640 -640 355 -640 480 -640 480 -640 512 -427 640 -375 500 -500 332 -480 640 -480 640 -640 473 -612 612 -640 428 -640 427 -640 480 -640 480 -500 400 -640 427 -640 427 -640 426 -640 480 -640 384 -640 427 -428 640 -640 426 -640 480 -640 481 -640 480 -640 480 -640 480 -500 375 -640 329 -333 500 -640 427 -640 348 -640 480 -500 375 -481 481 -640 424 -640 360 -640 427 -640 428 -640 480 -425 640 -640 427 -640 480 -500 375 -426 640 -640 427 -480 640 -500 373 -640 426 -640 480 -640 320 -640 426 -480 640 -426 640 -500 282 -640 417 -640 403 -426 640 -640 480 -640 427 -480 640 -640 425 -511 640 -375 500 -500 335 -640 412 -640 427 -640 427 -500 375 -640 480 -399 640 -640 426 -640 480 -500 375 -480 640 -427 640 -480 640 -360 640 -640 480 -640 427 -612 612 -640 571 -640 427 -640 427 -500 375 -640 429 -640 383 -427 640 -333 500 -640 480 -427 640 -478 640 -500 390 -640 480 -640 480 -640 427 -640 480 -500 328 -480 640 -640 480 -640 426 -456 640 -640 427 -640 427 -640 603 -612 612 -640 427 -480 640 -480 640 -640 480 -640 480 -480 640 -640 443 -640 427 -500 333 -640 427 -640 249 -640 480 -640 426 -640 480 -640 480 -282 454 -640 480 -640 427 -640 480 -427 640 -428 640 -640 425 -567 640 -500 333 -500 375 -640 480 -480 640 -446 640 -500 375 -640 480 -427 640 -427 640 -640 439 -480 640 -640 427 -375 500 -640 480 -640 427 -640 426 -640 426 -480 640 -640 480 -640 480 -612 612 -640 554 -480 640 -640 360 -500 375 -500 375 -640 423 -640 427 -480 640 -640 425 -640 427 -640 426 -640 480 -640 426 -640 427 -640 464 -640 414 -375 500 -482 482 -640 480 -389 640 -478 640 -640 427 -640 361 -640 480 -640 429 -640 427 -640 425 -640 480 -640 480 -640 483 -640 427 -640 427 -500 329 -640 444 -640 428 -640 480 -403 640 -500 333 -640 480 -640 427 -640 269 -640 480 -640 480 -640 360 -640 427 -444 640 -640 428 -640 480 -457 640 -480 640 -612 612 -640 427 -612 612 -333 500 -640 480 -426 640 -640 424 -640 427 -640 418 -500 375 -640 496 -640 457 -640 480 -640 426 -480 640 -640 424 -640 480 -576 640 -640 427 -640 480 -640 399 -480 640 -640 427 -640 480 -500 500 -640 427 -351 500 -640 427 -640 480 -640 640 -640 427 -427 640 -640 373 -500 380 -375 500 -640 480 -425 640 -640 406 -640 427 -640 480 -640 427 -640 427 -500 408 -640 480 -640 480 -640 480 -500 336 -640 480 -480 640 -640 473 -640 428 -640 428 -578 640 -480 640 -640 427 -640 424 -640 427 -404 640 -500 375 -640 400 -500 333 -480 640 -436 640 -409 640 -640 427 -640 523 -640 427 -640 418 -640 480 -640 480 -640 427 -640 426 -500 333 -640 427 -427 640 -640 412 -640 480 -640 427 -478 640 -640 480 -640 427 -332 500 -511 640 -478 640 -640 427 -334 500 -640 427 -640 427 -500 375 -640 480 -640 480 -500 375 -500 400 -640 480 -333 500 -480 640 -640 427 -640 360 -640 480 -640 480 -640 480 -640 388 -427 640 -500 375 -640 426 -640 480 -640 480 -640 480 -612 612 -478 640 -334 500 -640 427 -640 457 -640 480 -640 427 -426 640 -640 425 -500 375 -640 427 -640 416 -426 640 -480 640 -640 425 -640 426 -640 538 -480 640 -640 478 -500 375 -426 640 -480 640 -640 426 -640 428 -640 427 -480 640 -640 427 -500 228 -640 425 -640 480 -500 375 -640 427 -500 375 -640 427 -433 640 -480 640 -480 640 -640 426 -640 427 -612 612 -640 481 -640 480 -453 640 -500 333 -640 361 -640 424 -640 428 -640 478 -640 480 -640 427 -640 480 -425 640 -640 339 -426 640 -640 480 -640 480 -640 427 -500 375 -640 323 -640 640 -640 480 -640 427 -640 450 -320 240 -640 478 -640 640 -640 427 -426 640 -640 480 -640 424 -640 427 -612 612 -640 427 -640 425 -640 480 -640 480 -480 640 -640 480 -640 449 -640 479 -640 426 -480 640 -640 428 -640 478 -456 640 -640 427 -640 480 -428 443 -640 483 -640 423 -640 480 -640 480 -640 480 -640 427 -480 640 -640 424 -640 427 -500 202 -426 640 -640 427 -640 428 -640 480 -375 500 -427 640 -640 480 -460 640 -640 427 -640 427 -640 427 -640 480 -640 426 -640 484 -333 500 -640 427 -333 500 -640 401 -640 480 -640 429 -640 433 -427 640 -500 333 -640 320 -640 427 -640 427 -640 427 -640 415 -500 332 -457 640 -427 640 -640 434 -448 640 -640 480 -640 427 -640 425 -640 480 -640 480 -480 640 -612 612 -480 640 -640 480 -640 512 -640 480 -480 640 -480 640 -500 375 -640 427 -640 480 -480 640 -419 640 -427 640 -640 424 -640 428 -640 425 -640 427 -640 426 -640 426 -473 640 -640 426 -640 420 -640 480 -640 427 -500 290 -612 612 -640 427 -640 480 -426 640 -400 300 -314 500 -500 375 -640 360 -640 480 -640 427 -640 427 -480 640 -640 425 -500 375 -640 480 -640 480 -640 640 -500 375 -640 424 -612 612 -640 426 -640 487 -640 427 -640 480 -640 503 -640 458 -640 484 -640 480 -640 480 -640 427 -640 480 -640 457 -640 480 -427 640 -612 612 -640 526 -500 375 -640 480 -640 480 -400 500 -640 427 -640 480 -640 427 -640 427 -640 426 -640 480 -480 640 -428 640 -480 640 -480 640 -428 640 -640 406 -640 428 -640 491 -428 640 -500 375 -480 640 -480 640 -640 480 -640 427 -480 640 -640 479 -480 640 -640 426 -640 360 -640 360 -640 480 -500 375 -640 480 -640 428 -612 612 -640 425 -375 500 -640 427 -640 457 -640 427 -640 316 -640 480 -500 331 -640 480 -427 640 -480 640 -426 640 -640 425 -640 496 -640 389 -463 640 -640 468 -640 480 -640 480 -444 640 -640 424 -334 500 -500 375 -640 429 -500 332 -480 640 -640 480 -640 427 -640 480 -426 640 -640 386 -640 427 -500 375 -500 375 -640 427 -640 480 -640 427 -640 324 -500 375 -640 425 -640 363 -640 428 -426 640 -640 427 -467 640 -640 427 -640 427 -640 427 -640 230 -640 426 -640 359 -640 428 -640 480 -640 427 -640 427 -640 427 -500 375 -640 427 -612 612 -500 375 -500 375 -640 427 -640 434 -500 375 -640 640 -640 463 -612 612 -480 640 -640 427 -640 480 -640 568 -640 480 -480 640 -426 640 -640 480 -612 612 -640 480 -627 640 -344 500 -640 480 -640 442 -640 428 -640 480 -480 640 -640 480 -640 480 -640 433 -640 512 -427 640 -500 334 -640 254 -640 431 -612 612 -612 612 -640 512 -640 480 -640 424 -640 396 -640 480 -640 480 -480 640 -640 480 -427 640 -640 480 -640 427 -640 480 -640 480 -500 400 -500 375 -640 480 -640 480 -427 640 -640 480 -640 427 -480 640 -427 640 -640 427 -640 480 -640 427 -640 428 -426 640 -500 375 -640 366 -640 480 -640 480 -429 640 -479 320 -640 429 -500 399 -424 640 -538 640 -640 428 -640 431 -427 640 -554 312 -426 640 -640 480 -375 500 -640 427 -640 429 -480 384 -500 400 -333 500 -480 640 -500 484 -640 427 -477 304 -426 640 -640 480 -600 400 -500 500 -640 427 -480 640 -500 333 -500 334 -640 428 -640 486 -640 258 -640 480 -640 480 -519 640 -612 612 -500 333 -640 426 -640 427 -640 640 -640 508 -640 427 -480 640 -426 640 -500 375 -640 427 -500 334 -640 480 -437 640 -640 418 -640 427 -598 640 -378 500 -480 640 -640 593 -640 427 -480 640 -640 480 -333 500 -640 343 -640 420 -480 640 -640 480 -640 427 -333 500 -640 427 -426 640 -640 427 -640 424 -523 640 -480 640 -640 430 -640 480 -640 428 -640 480 -480 640 -640 480 -612 612 -427 640 -640 481 -640 407 -427 640 -640 426 -333 500 -640 480 -640 478 -640 480 -640 439 -640 403 -640 480 -640 480 -640 480 -640 419 -640 427 -640 427 -640 424 -640 382 -640 408 -500 375 -640 640 -640 480 -640 427 -640 428 -395 640 -480 640 -602 640 -640 480 -428 640 -640 400 -427 640 -640 427 -640 424 -640 480 -640 426 -640 480 -500 375 -640 480 -453 640 -640 443 -640 429 -640 360 -640 498 -640 480 -446 640 -640 476 -500 387 -640 640 -590 640 -640 425 -640 480 -427 640 -640 480 -426 640 -640 638 -439 640 -640 640 -437 640 -640 480 -640 640 -640 480 -640 495 -640 427 -500 375 -640 388 -640 480 -640 428 -640 427 -353 640 -427 640 -479 640 -500 334 -640 480 -640 427 -427 640 -512 640 -500 335 -426 640 -640 427 -640 200 -640 427 -640 427 -640 538 -512 640 -640 428 -450 319 -375 500 -640 480 -500 375 -640 480 -640 428 -640 452 -640 480 -640 480 -640 480 -640 640 -640 427 -640 480 -416 640 -640 426 -640 480 -427 640 -500 375 -640 295 -457 640 -640 425 -640 427 -500 500 -640 480 -640 480 -427 640 -375 500 -640 480 -640 434 -640 427 -433 640 -554 640 -640 427 -640 487 -640 428 -500 375 -640 424 -478 640 -640 480 -640 425 -640 427 -500 334 -640 467 -640 426 -640 427 -426 640 -640 427 -427 640 -480 640 -640 426 -409 640 -640 480 -425 640 -640 480 -640 428 -378 640 -427 640 -640 619 -425 640 -640 480 -640 428 -640 480 -640 480 -640 480 -640 429 -640 426 -640 425 -480 640 -640 478 -375 500 -640 436 -640 409 -640 423 -640 426 -640 427 -500 332 -500 375 -640 480 -640 428 -480 640 -640 425 -640 427 -640 480 -640 427 -640 480 -640 480 -640 480 -480 640 -500 337 -500 325 -640 427 -640 426 -640 400 -640 248 -640 427 -640 462 -640 480 -640 427 -640 508 -500 391 -480 640 -640 427 -640 480 -640 427 -427 640 -640 426 -427 640 -640 427 -457 640 -640 480 -640 480 -427 640 -427 640 -500 375 -424 640 -427 640 -640 427 -640 480 -640 480 -480 640 -640 480 -444 640 -640 424 -640 428 -640 460 -640 427 -640 428 -640 512 -640 427 -428 640 -640 427 -640 427 -640 478 -640 424 -640 480 -640 427 -640 339 -612 612 -640 480 -500 375 -480 640 -640 425 -640 427 -640 480 -427 640 -427 640 -640 480 -480 640 -640 480 -500 375 -640 480 -640 424 -640 480 -640 480 -640 480 -480 640 -612 612 -640 428 -427 640 -640 480 -612 612 -640 480 -640 424 -640 480 -640 480 -640 480 -640 480 -480 640 -427 640 -640 427 -640 424 -640 427 -640 427 -480 640 -640 480 -640 480 -640 424 -640 457 -427 640 -500 338 -640 427 -640 427 -356 640 -375 500 -505 640 -640 425 -400 600 -640 427 -426 640 -481 640 -640 480 -640 491 -640 480 -640 480 -640 369 -640 427 -500 333 -333 500 -500 313 -640 482 -640 491 -640 426 -640 426 -640 480 -640 427 -640 504 -640 426 -480 640 -480 640 -640 480 -640 457 -640 427 -640 427 -640 426 -640 427 -640 426 -640 480 -612 612 -640 480 -640 480 -500 332 -640 480 -480 640 -640 480 -640 426 -640 480 -500 305 -640 347 -640 427 -480 640 -500 335 -367 500 -640 427 -640 427 -640 427 -640 480 -640 512 -612 612 -640 427 -568 320 -640 426 -480 640 -480 640 -640 480 -480 640 -427 640 -640 428 -640 360 -348 500 -424 640 -480 640 -640 480 -480 640 -636 640 -427 640 -480 640 -640 427 -640 480 -333 500 -500 375 -640 427 -600 450 -640 480 -640 427 -640 480 -329 640 -640 360 -612 612 -640 480 -500 500 -640 480 -640 457 -640 426 -640 488 -640 479 -480 640 -640 428 -427 640 -640 480 -640 427 -640 480 -640 427 -640 633 -512 640 -480 640 -480 640 -500 332 -640 480 -640 427 -640 480 -500 375 -640 480 -640 480 -640 480 -640 424 -640 427 -426 640 -640 427 -427 640 -471 640 -640 425 -500 398 -640 369 -640 480 -640 480 -640 485 -640 480 -640 480 -640 399 -640 427 -480 640 -500 375 -640 480 -425 640 -640 429 -500 500 -500 332 -640 640 -640 480 -480 640 -640 480 -640 425 -640 379 -480 640 -640 408 -333 500 -640 421 -427 640 -383 640 -640 480 -640 419 -478 640 -640 418 -500 357 -435 480 -640 427 -640 480 -478 640 -640 428 -500 375 -640 427 -640 427 -640 316 -640 428 -640 424 -413 640 -640 438 -640 428 -640 393 -640 428 -375 500 -640 425 -640 423 -640 475 -640 427 -640 427 -376 500 -640 429 -640 480 -640 446 -640 480 -425 640 -640 359 -500 374 -427 640 -480 640 -640 421 -427 640 -640 427 -640 425 -640 640 -640 429 -640 480 -500 333 -640 427 -429 640 -333 500 -480 640 -335 500 -640 427 -480 640 -500 378 -640 629 -640 424 -640 464 -383 640 -640 513 -333 500 -640 480 -375 500 -612 612 -640 425 -640 480 -640 480 -640 360 -612 612 -640 425 -640 480 -640 428 -428 640 -640 478 -399 500 -480 640 -640 427 -640 427 -640 428 -480 640 -640 425 -640 426 -640 480 -381 640 -640 480 -640 480 -427 640 -640 556 -640 480 -480 640 -640 640 -640 429 -500 375 -640 427 -480 640 -640 458 -480 640 -640 427 -500 500 -333 500 -480 640 -500 334 -640 480 -640 428 -640 426 -394 500 -640 427 -480 640 -640 441 -640 484 -480 640 -640 480 -640 480 -640 478 -640 427 -640 478 -428 640 -501 640 -640 400 -512 640 -480 640 -640 291 -640 480 -500 375 -640 480 -429 640 -464 640 -640 480 -640 640 -426 640 -640 407 -480 640 -480 640 -640 426 -640 480 -640 640 -404 640 -500 306 -640 472 -500 377 -640 480 -500 375 -640 439 -500 375 -640 427 -480 640 -500 375 -640 640 -640 473 -481 640 -640 432 -640 480 -425 640 -640 425 -640 360 -640 427 -640 421 -640 427 -640 428 -640 427 -500 333 -640 443 -458 640 -612 612 -640 427 -640 303 -640 480 -480 640 -640 478 -423 640 -640 512 -640 427 -640 480 -640 427 -640 480 -640 360 -640 480 -640 478 -385 308 -640 427 -500 381 -640 427 -480 640 -500 334 -640 480 -500 375 -640 426 -640 426 -640 480 -640 425 -453 640 -640 476 -500 375 -640 425 -640 480 -480 640 -612 612 -333 500 -478 640 -502 640 -500 333 -640 471 -640 480 -427 640 -640 480 -640 480 -640 427 -640 480 -640 400 -500 375 -640 480 -640 480 -500 333 -426 640 -427 640 -429 640 -640 478 -480 640 -432 640 -640 480 -480 640 -428 640 -640 478 -500 305 -500 375 -640 426 -500 334 -640 428 -612 612 -640 480 -640 496 -427 640 -360 640 -640 427 -396 640 -640 425 -640 480 -411 640 -640 425 -640 480 -640 480 -640 480 -640 427 -500 335 -640 480 -426 640 -640 480 -640 427 -500 375 -640 480 -640 461 -640 480 -640 480 -480 640 -640 425 -640 480 -640 427 -500 375 -640 424 -640 480 -480 640 -427 640 -640 480 -640 433 -640 400 -500 333 -640 480 -640 412 -612 612 -640 480 -447 640 -640 425 -640 427 -420 223 -356 640 -500 375 -427 640 -640 428 -427 640 -500 375 -640 427 -640 439 -640 419 -640 400 -500 500 -500 375 -640 403 -500 375 -640 427 -640 480 -640 424 -640 480 -640 514 -640 480 -640 480 -640 480 -640 428 -640 414 -500 333 -640 228 -640 480 -640 360 -640 480 -640 445 -640 493 -640 482 -480 640 -640 427 -640 461 -640 427 -640 428 -640 480 -640 427 -640 430 -640 426 -600 400 -640 427 -640 427 -428 640 -426 640 -640 453 -640 464 -480 640 -480 640 -640 480 -640 480 -640 426 -640 480 -640 416 -640 427 -640 480 -640 403 -640 480 -640 488 -640 425 -480 640 -640 480 -640 425 -600 400 -640 489 -640 266 -640 426 -512 640 -640 427 -640 480 -640 427 -640 480 -375 500 -640 480 -640 515 -640 427 -500 375 -600 399 -640 429 -500 372 -640 480 -640 426 -428 640 -640 427 -640 480 -640 427 -640 401 -500 375 -640 427 -426 640 -427 640 -480 640 -481 640 -429 640 -480 640 -640 427 -640 414 -640 574 -480 640 -640 427 -640 640 -321 500 -640 425 -640 480 -500 375 -640 428 -640 356 -480 640 -335 500 -640 425 -361 640 -640 454 -640 438 -640 480 -480 640 -640 480 -427 640 -500 375 -640 480 -640 480 -640 480 -640 480 -640 461 -640 395 -480 640 -640 360 -640 480 -640 616 -500 333 -474 640 -640 427 -640 480 -640 457 -640 424 -427 640 -640 359 -640 480 -640 480 -640 480 -640 471 -640 480 -427 640 -640 480 -640 427 -640 248 -640 424 -500 332 -640 426 -480 640 -333 500 -640 480 -640 427 -640 359 -378 500 -640 427 -333 500 -640 480 -640 427 -640 480 -480 640 -640 360 -640 480 -500 375 -480 640 -402 600 -640 425 -480 640 -500 326 -640 426 -640 425 -500 375 -375 500 -612 612 -427 640 -500 375 -640 427 -640 480 -375 500 -640 425 -480 640 -640 480 -480 640 -640 427 -470 640 -640 424 -360 500 -640 435 -640 491 -640 480 -640 360 -640 480 -640 486 -640 439 -640 429 -640 640 -480 640 -640 480 -500 335 -365 500 -478 640 -640 427 -500 332 -640 424 -640 480 -640 480 -427 640 -425 640 -640 480 -640 480 -600 363 -640 480 -640 428 -640 480 -640 457 -640 480 -640 427 -333 500 -640 428 -375 500 -640 384 -640 478 -640 480 -640 426 -640 360 -640 453 -427 640 -640 480 -640 426 -640 424 -640 480 -338 500 -640 436 -640 426 -512 640 -500 375 -640 428 -625 425 -640 427 -518 640 -640 480 -500 375 -640 427 -640 480 -640 426 -480 640 -480 640 -640 431 -640 480 -640 480 -640 427 -640 427 -612 612 -640 480 -500 375 -640 427 -640 426 -640 431 -482 500 -640 426 -640 640 -640 203 -640 480 -640 603 -640 640 -500 375 -640 480 -640 427 -640 426 -400 500 -640 480 -640 625 -480 640 -427 640 -640 480 -427 640 -640 360 -640 480 -617 640 -640 425 -640 428 -640 361 -426 640 -640 480 -640 480 -640 425 -640 360 -640 428 -640 420 -640 425 -480 640 -640 427 -640 480 -480 640 -480 640 -626 586 -612 612 -318 500 -428 640 -500 375 -427 640 -640 427 -640 427 -640 426 -640 426 -428 640 -612 612 -500 332 -480 640 -640 426 -411 640 -500 333 -640 480 -500 285 -640 480 -640 426 -640 479 -640 385 -640 480 -638 640 -640 512 -640 480 -480 640 -640 479 -426 640 -640 428 -480 640 -640 480 -640 480 -640 427 -426 640 -500 333 -640 427 -640 480 -640 480 -640 427 -640 608 -640 427 -640 480 -640 427 -480 640 -428 640 -640 428 -640 426 -640 480 -640 480 -640 426 -500 333 -640 444 -426 640 -640 480 -640 424 -500 400 -640 468 -640 429 -640 427 -640 425 -480 640 -529 640 -640 425 -640 427 -640 426 -480 640 -640 427 -640 446 -640 480 -480 640 -427 640 -640 386 -640 480 -500 333 -640 428 -640 480 -640 454 -424 640 -640 428 -640 389 -427 640 -640 480 -640 480 -640 360 -640 480 -480 640 -640 427 -427 640 -640 480 -640 458 -640 480 -640 480 -640 416 -427 640 -640 427 -360 240 -640 480 -500 375 -640 426 -640 480 -640 425 -640 425 -640 427 -480 640 -640 425 -640 553 -427 640 -640 426 -480 640 -640 480 -500 334 -480 640 -640 576 -640 425 -427 640 -640 426 -478 640 -640 476 -428 640 -427 640 -640 339 -427 640 -640 424 -427 640 -640 427 -640 427 -640 362 -524 640 -640 478 -426 640 -640 427 -500 375 -640 480 -640 480 -640 213 -640 427 -640 460 -512 640 -640 480 -640 480 -640 384 -640 443 -640 480 -500 334 -320 240 -640 480 -479 640 -640 480 -612 612 -640 424 -640 455 -300 225 -640 428 -640 428 -640 437 -640 427 -480 640 -640 480 -427 640 -640 426 -640 480 -640 480 -480 640 -640 427 -612 612 -640 428 -640 427 -600 400 -640 427 -480 640 -612 612 -427 640 -499 640 -640 480 -640 153 -640 427 -640 480 -500 375 -500 375 -640 480 -640 427 -500 374 -640 480 -640 483 -640 480 -640 576 -640 448 -640 478 -500 333 -480 640 -640 427 -480 640 -640 303 -480 640 -640 427 -640 480 -500 333 -640 427 -640 426 -640 480 -489 640 -640 427 -640 424 -640 359 -427 640 -500 333 -640 480 -333 500 -480 640 -375 500 -640 426 -640 578 -640 480 -480 640 -416 640 -640 408 -640 480 -500 333 -640 203 -612 612 -612 612 -383 640 -640 338 -640 427 -640 480 -640 441 -640 427 -427 640 -640 480 -640 427 -640 480 -640 426 -640 427 -640 480 -333 500 -640 169 -640 426 -428 640 -500 375 -480 640 -428 640 -500 314 -640 383 -480 640 -640 427 -640 428 -428 640 -640 631 -375 500 -425 640 -640 427 -497 640 -640 366 -640 426 -390 500 -640 427 -500 493 -640 428 -640 427 -640 427 -640 359 -640 480 -640 427 -480 640 -442 640 -426 640 -640 480 -640 425 -427 640 -640 480 -375 500 -500 337 -640 298 -640 366 -640 425 -640 480 -640 428 -640 480 -640 480 -640 480 -640 426 -640 426 -640 480 -640 480 -640 428 -640 480 -640 480 -640 480 -431 640 -640 427 -500 234 -333 500 -640 423 -640 427 -612 612 -334 500 -500 333 -500 333 -640 480 -427 640 -640 480 -500 375 -612 612 -640 456 -640 480 -640 458 -640 426 -511 640 -640 637 -640 480 -640 429 -640 480 -360 270 -640 479 -640 559 -640 405 -468 640 -640 480 -427 640 -426 640 -640 429 -500 250 -500 277 -500 375 -640 427 -640 427 -640 436 -640 480 -388 500 -640 427 -360 640 -500 375 -640 425 -426 640 -438 640 -640 435 -640 502 -640 511 -480 640 -640 480 -640 480 -480 640 -640 427 -640 480 -333 500 -640 482 -640 484 -640 480 -640 480 -640 427 -640 480 -640 480 -441 640 -640 480 -640 480 -640 532 -640 429 -427 640 -480 640 -640 385 -427 640 -640 425 -640 416 -640 426 -640 426 -640 480 -550 539 -640 384 -640 479 -640 480 -500 334 -640 480 -640 425 -500 375 -640 480 -480 640 -480 640 -500 333 -326 640 -640 480 -480 640 -500 375 -512 640 -640 427 -640 426 -448 336 -640 480 -640 424 -480 640 -500 438 -478 640 -640 428 -480 640 -640 424 -640 480 -640 480 -426 640 -640 429 -640 480 -640 458 -640 429 -640 480 -500 375 -640 480 -427 640 -640 427 -640 639 -640 427 -640 480 -640 427 -424 640 -640 425 -640 424 -480 640 -640 479 -640 425 -640 428 -640 426 -421 640 -640 413 -640 480 -640 480 -480 640 -426 640 -224 500 -428 640 -462 462 -640 399 -481 500 -640 418 -449 600 -640 480 -640 427 -500 375 -640 427 -640 479 -640 480 -480 640 -640 394 -640 496 -501 640 -640 427 -640 480 -480 640 -640 427 -640 427 -591 640 -640 427 -612 612 -500 335 -478 640 -458 640 -493 640 -500 375 -430 500 -640 480 -640 480 -640 480 -640 415 -640 480 -640 480 -640 423 -500 333 -640 399 -500 375 -640 480 -640 480 -640 469 -500 210 -640 480 -500 375 -500 375 -640 408 -640 480 -428 640 -350 350 -640 480 -640 480 -640 480 -394 500 -428 640 -640 480 -640 480 -359 640 -640 426 -428 640 -640 427 -640 426 -640 426 -640 480 -640 453 -640 526 -640 480 -640 424 -484 640 -480 640 -640 426 -640 427 -640 427 -400 285 -429 640 -640 453 -427 640 -478 640 -480 640 -640 512 -640 427 -640 480 -500 339 -640 428 -333 500 -480 640 -640 427 -640 480 -612 612 -640 429 -640 427 -500 406 -640 427 -640 360 -427 640 -640 424 -640 427 -640 427 -427 640 -640 480 -480 640 -640 358 -375 500 -640 480 -480 640 -640 406 -424 351 -500 375 -500 333 -640 480 -640 426 -640 529 -640 427 -640 426 -427 640 -640 480 -640 427 -408 640 -361 640 -500 289 -612 612 -640 428 -480 640 -640 470 -500 333 -480 640 -500 375 -640 427 -640 637 -640 361 -500 375 -640 480 -500 460 -640 425 -426 640 -640 480 -427 640 -480 640 -640 426 -427 640 -640 400 -640 640 -266 412 -640 480 -640 360 -376 500 -427 640 -640 640 -640 426 -333 500 -478 640 -640 425 -427 640 -640 426 -480 640 -500 375 -500 334 -640 480 -500 473 -480 640 -640 427 -640 481 -360 480 -480 640 -640 530 -640 504 -640 499 -500 334 -640 427 -478 640 -526 640 -375 500 -640 480 -640 457 -500 332 -500 333 -640 550 -640 438 -640 446 -468 640 -640 408 -640 427 -427 640 -426 640 -640 480 -640 433 -640 366 -640 480 -500 375 -640 427 -640 480 -640 457 -375 500 -640 480 -500 375 -640 480 -640 640 -612 612 -640 425 -640 427 -427 640 -640 480 -480 640 -640 480 -640 419 -640 480 -640 360 -640 480 -640 480 -612 612 -640 421 -480 640 -640 427 -640 480 -427 640 -640 480 -640 240 -500 334 -427 640 -640 480 -375 500 -480 640 -321 500 -640 480 -426 640 -640 428 -220 176 -640 414 -480 640 -640 427 -640 480 -640 426 -640 427 -364 500 -640 480 -640 427 -427 640 -640 480 -640 429 -640 480 -480 640 -640 425 -640 428 -640 425 -640 427 -612 612 -640 427 -640 480 -640 428 -640 480 -640 480 -480 640 -640 640 -480 640 -640 480 -428 640 -480 640 -500 375 -500 500 -640 480 -640 427 -640 480 -640 458 -640 428 -612 612 -500 332 -640 383 -640 427 -640 426 -464 640 -640 480 -640 427 -640 427 -500 346 -640 480 -427 640 -375 500 -640 467 -470 640 -640 427 -500 458 -640 480 -640 480 -500 375 -426 640 -640 426 -327 640 -640 469 -640 428 -640 427 -640 480 -640 480 -640 423 -612 612 -640 427 -412 640 -298 448 -640 427 -640 480 -480 640 -640 480 -640 480 -640 480 -640 481 -640 426 -500 375 -612 612 -640 479 -640 219 -640 419 -480 640 -640 425 -640 427 -640 425 -500 500 -640 448 -640 427 -480 640 -640 480 -640 473 -640 426 -640 427 -500 284 -640 427 -640 458 -640 480 -640 480 -640 453 -500 375 -640 398 -500 375 -640 480 -640 468 -480 640 -640 464 -402 640 -640 480 -640 480 -640 424 -640 480 -500 375 -640 425 -431 640 -640 480 -640 427 -640 338 -640 427 -640 428 -639 428 -612 612 -427 640 -640 427 -500 333 -640 463 -640 425 -640 427 -640 374 -640 480 -640 480 -480 640 -640 427 -640 480 -640 428 -640 480 -640 480 -500 338 -480 640 -451 500 -640 427 -640 480 -427 640 -640 425 -427 640 -480 640 -480 640 -640 478 -640 480 -640 480 -640 427 -429 640 -425 640 -500 375 -640 294 -640 640 -429 640 -640 427 -426 640 -640 423 -480 640 -640 428 -640 424 -640 480 -640 427 -640 480 -500 375 -500 375 -480 640 -500 335 -427 640 -480 640 -640 383 -500 375 -428 640 -640 478 -494 640 -480 640 -392 591 -640 536 -344 500 -480 640 -640 480 -640 480 -500 500 -612 612 -640 504 -640 426 -640 480 -640 427 -640 423 -640 298 -375 500 -396 640 -640 427 -640 480 -640 480 -640 533 -375 500 -640 480 -640 425 -360 640 -640 425 -640 479 -424 640 -640 427 -457 640 -640 428 -640 467 -640 428 -640 427 -480 640 -640 427 -640 427 -640 480 -480 640 -640 480 -640 427 -500 375 -500 375 -640 480 -640 480 -480 640 -640 480 -426 640 -640 359 -640 352 -640 427 -640 480 -640 480 -500 400 -640 424 -640 480 -500 375 -640 480 -640 426 -500 333 -640 425 -640 480 -383 640 -640 428 -640 480 -640 427 -640 427 -640 425 -612 612 -640 480 -640 480 -640 511 -427 640 -640 359 -640 480 -640 480 -426 640 -640 480 -640 480 -640 427 -427 640 -640 480 -640 426 -500 375 -640 434 -480 640 -640 424 -640 480 -640 423 -640 427 -640 480 -612 612 -640 189 -478 640 -640 555 -640 478 -500 333 -500 375 -254 640 -480 640 -500 375 -429 640 -640 480 -640 360 -480 640 -612 612 -480 640 -640 638 -640 309 -640 480 -640 427 -612 612 -640 414 -640 427 -640 480 -500 332 -500 375 -500 489 -640 480 -480 640 -612 612 -640 425 -480 640 -612 612 -590 640 -640 426 -640 360 -640 480 -640 489 -640 425 -484 640 -640 427 -480 640 -640 480 -640 479 -500 299 -640 417 -640 373 -640 427 -612 612 -500 376 -640 427 -640 480 -640 415 -640 480 -480 640 -480 640 -640 480 -640 480 -640 569 -500 375 -640 480 -426 640 -640 426 -640 480 -640 480 -425 640 -640 640 -426 640 -640 480 -427 640 -428 640 -427 640 -640 425 -640 480 -324 500 -640 480 -640 428 -500 333 -640 426 -640 427 -640 480 -449 640 -640 480 -640 426 -480 640 -428 640 -424 640 -500 375 -640 427 -612 612 -640 480 -427 640 -640 480 -640 359 -640 478 -500 401 -640 480 -500 375 -640 480 -480 640 -480 640 -640 427 -640 480 -640 422 -640 484 -640 428 -640 478 -500 452 -640 366 -425 640 -640 427 -500 333 -640 427 -500 375 -640 426 -640 480 -640 427 -480 640 -500 375 -640 427 -640 426 -640 480 -640 427 -640 425 -640 480 -640 480 -640 426 -500 375 -500 400 -640 429 -640 465 -500 375 -640 480 -640 427 -375 500 -640 514 -640 445 -640 427 -640 480 -640 425 -500 400 -640 427 -640 427 -640 378 -640 481 -640 400 -640 480 -640 480 -640 426 -424 640 -640 360 -500 332 -640 384 -640 427 -500 374 -480 640 -640 480 -640 480 -427 640 -640 426 -375 500 -640 480 -640 427 -640 428 -500 375 -640 432 -480 640 -640 480 -480 640 -640 451 -640 480 -640 480 -615 640 -640 480 -640 480 -640 480 -480 640 -640 427 -640 427 -401 640 -640 480 -640 464 -500 375 -640 427 -640 427 -640 426 -640 480 -640 427 -636 640 -640 401 -640 428 -640 480 -500 333 -640 480 -500 333 -640 480 -564 640 -640 480 -480 640 -640 427 -500 375 -500 359 -640 439 -469 640 -640 360 -640 478 -640 480 -640 480 -640 430 -640 480 -640 480 -640 480 -640 420 -500 375 -426 640 -427 640 -333 500 -480 640 -640 384 -640 426 -640 480 -640 443 -640 631 -640 458 -640 480 -500 331 -480 640 -640 426 -519 640 -640 436 -401 640 -480 640 -640 485 -640 414 -640 427 -640 427 -640 426 -640 480 -640 480 -500 375 -640 325 -494 640 -480 640 -441 640 -640 480 -640 511 -640 428 -640 426 -586 640 -640 427 -640 427 -500 281 -640 480 -500 333 -640 428 -640 640 -640 425 -480 640 -500 333 -629 640 -426 640 -640 427 -544 408 -426 640 -640 427 -640 480 -375 500 -424 640 -428 640 -640 480 -431 640 -640 500 -640 480 -640 224 -374 500 -640 426 -500 343 -640 426 -640 480 -640 427 -480 640 -640 427 -480 640 -480 640 -640 480 -640 366 -444 640 -640 640 -640 480 -640 480 -423 640 -640 615 -640 480 -640 513 -427 640 -375 500 -640 429 -640 480 -500 375 -480 640 -500 371 -640 428 -500 333 -480 640 -612 612 -480 640 -427 640 -480 640 -640 427 -640 524 -640 480 -640 403 -640 429 -500 375 -640 480 -640 427 -640 414 -500 375 -640 480 -640 480 -640 480 -640 480 -400 600 -640 428 -427 640 -427 640 -427 640 -480 640 -500 375 -500 375 -375 500 -622 415 -480 640 -428 640 -640 366 -427 640 -480 640 -500 375 -640 480 -640 480 -500 375 -640 426 -640 425 -640 480 -640 480 -640 427 -640 480 -359 640 -427 640 -500 440 -427 640 -640 425 -427 640 -500 375 -640 480 -640 453 -500 375 -640 400 -640 427 -640 480 -480 640 -640 480 -640 435 -640 478 -480 640 -500 333 -640 480 -640 480 -640 480 -640 366 -640 480 -640 481 -640 427 -640 426 -640 480 -480 640 -500 333 -480 640 -640 480 -640 428 -640 218 -640 427 -500 333 -500 334 -640 427 -640 640 -480 640 -427 640 -640 481 -640 478 -640 426 -640 427 -640 425 -640 427 -333 500 -612 612 -640 480 -640 427 -640 491 -640 478 -640 360 -473 640 -612 612 -640 428 -640 427 -640 480 -640 426 -500 375 -500 375 -640 427 -640 480 -427 640 -640 480 -640 426 -350 500 -500 308 -640 608 -640 503 -640 480 -640 480 -500 375 -640 480 -640 480 -500 375 -416 640 -640 427 -612 612 -389 500 -480 640 -640 426 -640 424 -363 485 -640 549 -640 427 -500 337 -640 479 -640 426 -500 375 -640 427 -640 480 -640 426 -490 640 -640 427 -640 480 -640 427 -640 425 -465 640 -640 480 -500 334 -640 424 -640 426 -640 424 -640 479 -375 500 -640 427 -640 480 -428 640 -500 333 -640 480 -640 480 -640 480 -640 361 -640 425 -500 333 -640 480 -640 459 -640 403 -640 480 -640 480 -363 640 -500 374 -640 425 -640 427 -600 399 -640 427 -500 333 -640 469 -640 427 -640 424 -640 446 -640 427 -640 480 -640 480 -640 427 -640 389 -500 351 -640 425 -604 453 -640 427 -428 640 -500 375 -640 428 -500 375 -640 480 -640 421 -640 360 -401 640 -640 425 -640 426 -612 612 -640 480 -640 480 -375 500 -428 640 -640 426 -640 479 -640 427 -361 640 -427 640 -480 640 -640 480 -640 480 -640 459 -500 375 -640 426 -640 480 -426 640 -640 480 -640 480 -640 424 -640 480 -640 614 -640 480 -640 359 -640 427 -480 640 -640 480 -640 480 -640 427 -500 333 -375 500 -481 640 -640 480 -480 640 -500 375 -640 512 -640 480 -455 552 -640 427 -640 480 -640 427 -640 460 -640 480 -640 426 -640 301 -480 640 -478 640 -427 640 -640 441 -640 480 -612 612 -640 430 -640 480 -640 480 -640 480 -640 427 -640 426 -640 528 -640 320 -480 640 -640 564 -640 640 -640 480 -500 375 -431 640 -500 375 -428 640 -500 375 -354 500 -640 383 -480 640 -640 439 -640 480 -640 627 -640 427 -500 338 -480 640 -640 406 -640 480 -561 640 -640 480 -375 500 -640 480 -427 640 -640 480 -640 480 -640 401 -640 480 -640 435 -640 602 -640 480 -640 640 -640 480 -640 427 -500 489 -640 480 -640 424 -640 480 -640 457 -640 480 -640 480 -640 480 -500 375 -640 426 -640 478 -480 640 -427 640 -640 480 -640 480 -640 480 -640 378 -640 480 -640 480 -480 640 -427 640 -640 451 -640 631 -500 338 -640 480 -640 447 -500 333 -640 425 -640 426 -640 480 -428 640 -640 480 -640 479 -426 640 -640 427 -500 415 -438 640 -640 480 -640 468 -640 426 -640 480 -640 432 -640 425 -640 480 -428 640 -640 427 -640 426 -270 500 -640 480 -478 640 -640 467 -640 426 -500 372 -640 426 -480 640 -409 500 -640 480 -640 481 -640 480 -640 425 -640 427 -640 480 -640 480 -612 612 -493 640 -640 416 -640 480 -640 427 -640 427 -640 480 -427 640 -500 375 -640 426 -640 480 -640 480 -640 427 -480 640 -640 640 -640 425 -640 480 -640 480 -480 640 -640 427 -480 640 -480 640 -640 427 -415 640 -640 427 -640 427 -640 427 -640 480 -500 375 -640 425 -640 428 -480 640 -640 427 -640 424 -640 491 -640 424 -333 500 -640 480 -640 425 -640 427 -640 427 -500 375 -640 424 -640 425 -640 427 -640 640 -640 480 -500 375 -425 640 -640 480 -640 425 -500 305 -500 375 -640 480 -640 480 -320 240 -640 387 -640 480 -640 480 -640 480 -612 612 -640 480 -500 375 -272 500 -640 426 -640 512 -640 512 -640 480 -640 428 -480 640 -640 458 -640 360 -640 427 -640 480 -640 426 -640 427 -640 480 -640 427 -500 375 -500 332 -478 640 -640 298 -425 640 -481 640 -640 333 -640 480 -640 480 -640 244 -500 281 -640 376 -640 640 -640 480 -612 612 -640 426 -500 323 -508 640 -427 640 -480 640 -640 427 -640 427 -424 640 -500 334 -640 425 -640 476 -612 612 -433 640 -480 640 -640 480 -640 406 -568 640 -640 427 -346 500 -500 332 -500 333 -640 493 -473 640 -640 480 -640 513 -640 425 -640 427 -640 424 -480 640 -640 428 -640 426 -640 480 -640 427 -640 424 -640 428 -640 426 -640 480 -640 480 -640 427 -500 375 -639 640 -512 640 -612 612 -640 480 -640 480 -480 640 -429 640 -640 546 -640 480 -480 640 -640 424 -424 640 -332 500 -640 459 -640 480 -500 333 -640 425 -427 640 -640 427 -640 480 -640 427 -640 480 -640 480 -472 322 -640 424 -478 640 -640 431 -640 323 -640 427 -500 375 -480 640 -640 401 -480 640 -333 500 -640 480 -633 640 -427 640 -640 640 -640 480 -640 427 -500 411 -640 427 -500 353 -640 480 -640 480 -359 640 -640 427 -426 640 -482 640 -640 427 -427 640 -375 500 -500 375 -640 480 -427 640 -640 428 -640 481 -640 480 -640 427 -640 426 -500 375 -640 427 -428 640 -640 480 -640 480 -375 500 -640 427 -640 408 -500 400 -640 480 -640 449 -375 500 -453 640 -424 640 -640 427 -640 428 -640 480 -640 480 -640 480 -640 426 -640 425 -427 640 -640 459 -640 424 -612 612 -640 480 -640 427 -640 427 -640 427 -640 480 -640 427 -640 457 -640 480 -500 428 -429 640 -640 438 -640 427 -640 480 -426 640 -500 375 -640 384 -500 333 -500 281 -640 426 -640 431 -426 640 -500 375 -481 640 -640 480 -640 480 -640 480 -640 456 -426 640 -640 480 -640 396 -450 338 -495 640 -640 435 -500 408 -404 640 -640 427 -500 375 -476 640 -640 480 -640 427 -640 480 -640 480 -640 393 -640 480 -640 480 -640 480 -375 500 -495 533 -480 640 -480 640 -500 295 -480 640 -612 612 -640 478 -640 426 -612 612 -426 640 -640 480 -640 480 -640 427 -640 428 -640 486 -640 426 -640 481 -640 427 -640 426 -640 427 -640 428 -600 400 -640 409 -640 424 -640 426 -640 367 -640 480 -640 426 -612 612 -480 640 -640 480 -480 640 -640 480 -640 427 -640 427 -426 640 -640 427 -480 640 -640 426 -426 640 -640 427 -640 426 -500 375 -333 500 -612 612 -640 424 -640 480 -640 509 -640 427 -640 427 -500 239 -640 426 -640 427 -379 446 -640 427 -640 426 -640 478 -640 480 -427 640 -640 480 -627 640 -640 480 -500 375 -427 640 -640 478 -640 427 -612 612 -640 640 -500 356 -480 640 -640 427 -514 640 -640 458 -500 335 -640 480 -640 480 -640 516 -640 428 -640 427 -512 640 -333 500 -500 257 -640 360 -640 480 -640 480 -640 480 -375 500 -640 480 -427 640 -500 375 -640 427 -640 480 -480 640 -640 504 -480 640 -640 480 -427 640 -427 640 -640 480 -500 375 -500 333 -640 426 -640 257 -640 433 -500 333 -640 427 -640 360 -640 426 -640 427 -459 640 -640 296 -640 419 -360 640 -640 480 -480 640 -424 640 -375 500 -500 375 -428 640 -640 427 -640 428 -612 612 -480 640 -500 281 -640 349 -640 378 -640 480 -640 439 -427 640 -600 600 -480 640 -500 333 -427 640 -640 427 -640 427 -640 427 -640 453 -640 427 -640 427 -640 480 -640 427 -500 375 -640 480 -640 427 -640 425 -640 389 -640 480 -480 640 -640 480 -640 480 -640 480 -640 427 -640 516 -640 424 -640 480 -640 428 -480 640 -612 612 -640 477 -500 375 -480 640 -640 428 -480 640 -640 427 -375 500 -640 360 -640 480 -640 426 -640 427 -640 425 -640 428 -640 480 -640 426 -500 408 -640 428 -640 480 -425 640 -500 471 -480 640 -640 480 -480 640 -640 480 -640 480 -640 427 -478 640 -640 427 -640 513 -500 365 -640 508 -480 640 -640 480 -425 640 -640 480 -640 640 -640 425 -520 520 -640 424 -640 480 -640 483 -640 424 -480 640 -640 480 -612 612 -640 427 -640 427 -640 468 -640 427 -500 332 -640 480 -640 427 -640 480 -480 640 -640 480 -640 480 -500 422 -640 424 -448 299 -640 480 -480 640 -480 640 -375 500 -500 375 -640 480 -640 427 -640 427 -640 427 -500 332 -640 427 -640 428 -500 375 -640 427 -500 375 -640 478 -640 429 -375 500 -640 640 -427 640 -640 518 -640 428 -640 480 -480 640 -640 480 -480 640 -640 286 -640 466 -424 640 -640 480 -640 480 -424 640 -640 480 -500 332 -640 393 -640 427 -640 394 -640 471 -500 375 -500 390 -500 332 -640 640 -640 318 -640 427 -640 398 -480 640 -640 500 -425 640 -640 354 -640 480 -640 428 -640 478 -427 640 -500 492 -640 471 -640 427 -640 396 -640 427 -640 480 -612 612 -640 480 -500 375 -500 333 -640 427 -480 640 -640 426 -640 425 -640 427 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -480 640 -368 500 -375 500 -375 500 -640 428 -640 427 -640 427 -375 500 -640 480 -640 480 -640 590 -640 425 -482 640 -480 640 -640 424 -375 500 -640 360 -640 480 -480 640 -500 375 -520 640 -640 487 -425 640 -480 640 -640 463 -500 333 -500 375 -374 500 -482 500 -500 500 -640 441 -612 612 -640 480 -640 479 -640 323 -500 334 -526 640 -640 480 -427 640 -640 480 -640 427 -640 480 -640 424 -640 480 -640 444 -426 640 -640 574 -640 293 -640 480 -640 639 -640 427 -500 375 -640 427 -480 640 -640 360 -640 424 -640 480 -640 480 -640 427 -500 375 -480 640 -640 413 -640 428 -640 480 -640 428 -480 640 -640 480 -640 480 -640 428 -640 480 -427 640 -640 427 -480 640 -427 640 -478 640 -427 640 -612 612 -428 640 -640 480 -500 375 -480 640 -640 480 -640 480 -480 640 -640 480 -640 480 -630 379 -425 640 -640 439 -640 480 -480 640 -640 401 -500 500 -640 427 -428 640 -333 500 -640 463 -640 425 -640 433 -640 480 -640 480 -427 640 -428 640 -640 428 -425 640 -640 480 -423 640 -640 426 -500 333 -640 427 -500 375 -640 457 -480 640 -640 427 -426 640 -513 640 -640 426 -500 375 -640 397 -640 360 -426 640 -640 360 -640 427 -640 426 -640 422 -427 640 -640 480 -480 640 -640 478 -640 480 -640 426 -428 640 -640 480 -640 426 -477 640 -640 480 -640 427 -640 233 -640 426 -375 500 -500 333 -640 480 -640 426 -500 334 -500 375 -400 302 -500 332 -375 500 -640 284 -640 433 -500 332 -640 362 -640 480 -640 427 -640 480 -500 375 -640 480 -612 612 -426 640 -640 320 -640 424 -427 640 -640 480 -640 360 -427 640 -426 640 -640 426 -640 424 -640 427 -480 640 -640 480 -550 376 -640 480 -640 427 -640 428 -640 639 -640 640 -640 426 -480 640 -427 640 -640 428 -640 428 -640 480 -427 640 -480 640 -363 544 -640 480 -267 188 -500 375 -500 331 -500 334 -640 480 -640 428 -500 362 -476 640 -640 430 -640 480 -640 480 -640 433 -640 343 -406 500 -640 426 -500 375 -640 426 -640 480 -640 449 -320 240 -640 427 -500 375 -640 324 -640 428 -640 480 -500 452 -427 640 -500 500 -500 333 -640 480 -640 233 -640 427 -640 429 -417 640 -480 640 -450 381 -640 427 -640 421 -500 333 -640 640 -532 640 -456 640 -640 360 -640 480 -640 425 -640 480 -640 480 -640 606 -640 426 -640 426 -640 429 -640 428 -640 480 -480 640 -427 640 -640 480 -337 640 -640 426 -640 470 -640 427 -431 640 -640 640 -640 467 -470 640 -640 640 -480 640 -410 339 -427 640 -640 480 -640 447 -640 428 -480 640 -640 174 -612 612 -640 480 -640 360 -612 612 -640 428 -480 640 -375 500 -640 480 -640 424 -500 375 -600 400 -640 480 -640 426 -480 640 -640 281 -640 480 -500 375 -640 480 -640 400 -640 425 -640 480 -640 427 -640 429 -427 640 -640 446 -640 359 -612 612 -640 426 -427 640 -640 457 -640 427 -480 640 -426 640 -640 480 -576 396 -640 480 -640 427 -500 332 -640 393 -500 370 -640 426 -640 480 -640 427 -640 458 -640 480 -426 640 -500 314 -500 400 -640 426 -640 480 -640 427 -640 480 -600 410 -480 640 -640 480 -640 480 -640 426 -640 480 -500 375 -640 526 -640 427 -425 640 -640 482 -640 448 -640 480 -640 427 -640 480 -640 427 -640 426 -640 480 -500 357 -640 480 -640 360 -500 375 -640 480 -640 480 -640 364 -427 640 -640 427 -334 500 -640 427 -640 480 -500 375 -480 640 -478 640 -640 427 -640 480 -500 334 -640 480 -480 640 -640 425 -640 480 -640 425 -640 438 -640 425 -640 427 -640 480 -640 480 -375 500 -640 510 -450 600 -640 427 -375 500 -640 480 -480 640 -640 427 -640 480 -640 480 -248 640 -480 640 -640 427 -640 431 -640 480 -640 427 -416 640 -640 452 -640 640 -640 427 -640 480 -640 480 -478 640 -640 480 -372 500 -640 428 -640 427 -640 480 -640 480 -640 478 -640 640 -612 612 -500 375 -640 480 -640 478 -640 640 -640 473 -480 640 -640 427 -500 375 -640 480 -640 427 -640 640 -640 471 -640 480 -640 480 -480 640 -640 480 -640 486 -640 480 -640 391 -500 375 -426 640 -500 378 -640 428 -640 480 -640 480 -640 427 -480 640 -640 480 -640 456 -640 428 -500 333 -640 557 -640 457 -426 640 -640 480 -640 427 -640 476 -640 640 -640 491 -500 384 -640 403 -640 640 -640 439 -428 640 -640 480 -361 640 -612 612 -640 480 -481 640 -640 480 -565 640 -640 360 -640 426 -640 428 -640 429 -403 640 -640 480 -640 480 -640 427 -640 428 -640 425 -640 380 -640 426 -480 640 -640 480 -640 426 -640 480 -640 429 -548 640 -640 431 -500 375 -500 375 -640 474 -500 333 -480 640 -640 599 -480 640 -427 640 -640 428 -500 400 -500 375 -426 640 -427 640 -640 331 -480 640 -640 425 -640 480 -640 427 -500 333 -640 286 -500 333 -640 428 -375 500 -640 480 -417 640 -640 427 -640 480 -427 640 -640 480 -427 640 -640 426 -640 490 -640 427 -640 480 -336 448 -640 361 -640 360 -418 640 -480 640 -640 426 -500 375 -640 426 -305 229 -600 640 -426 640 -640 480 -640 480 -640 414 -640 427 -500 375 -500 446 -314 500 -640 480 -640 480 -640 480 -640 622 -480 640 -418 640 -428 640 -640 427 -500 352 -640 480 -640 480 -640 480 -640 359 -640 427 -640 566 -640 428 -640 426 -640 426 -640 425 -427 640 -612 612 -640 566 -640 427 -640 480 -640 480 -640 428 -480 640 -640 480 -640 429 -640 480 -429 640 -612 612 -640 424 -640 371 -495 640 -427 640 -640 640 -640 282 -640 427 -640 426 -500 335 -640 480 -480 640 -480 640 -500 376 -640 480 -425 640 -640 427 -500 333 -640 640 -332 500 -640 427 -640 527 -640 480 -640 426 -640 480 -640 419 -480 640 -640 238 -480 640 -640 480 -640 480 -640 480 -640 425 -640 427 -500 375 -425 640 -640 480 -478 640 -640 488 -640 480 -640 461 -374 500 -640 427 -640 427 -500 333 -612 612 -640 428 -426 640 -640 429 -640 427 -361 640 -428 640 -640 427 -640 427 -640 436 -640 293 -640 418 -640 480 -640 428 -640 480 -612 612 -612 612 -640 480 -426 640 -640 427 -500 375 -480 640 -640 640 -640 480 -427 640 -640 429 -640 427 -640 474 -427 640 -640 427 -640 426 -427 640 -414 640 -478 640 -640 480 -480 640 -640 427 -443 640 -640 480 -640 426 -500 334 -640 427 -640 480 -574 640 -480 640 -512 640 -640 480 -640 480 -640 464 -500 375 -640 428 -375 500 -640 480 -375 500 -640 480 -640 480 -640 434 -480 640 -612 612 -640 480 -640 426 -366 500 -480 640 -500 375 -640 425 -500 333 -640 479 -640 428 -640 480 -640 480 -640 360 -640 480 -640 427 -480 640 -640 480 -640 428 -640 427 -640 457 -481 640 -640 492 -480 640 -500 333 -597 455 -480 640 -354 500 -493 640 -640 480 -640 359 -640 480 -500 375 -640 480 -640 427 -500 375 -428 640 -640 360 -480 640 -640 427 -480 640 -640 480 -640 413 -427 640 -640 414 -640 384 -426 640 -640 389 -425 640 -640 427 -431 640 -640 427 -427 640 -640 427 -640 409 -426 640 -530 640 -640 390 -640 425 -640 427 -640 478 -415 324 -640 434 -427 640 -480 640 -426 640 -536 640 -640 427 -640 395 -640 427 -374 500 -640 426 -640 427 -176 144 -640 640 -640 354 -640 480 -500 343 -427 640 -640 426 -612 612 -640 425 -640 480 -375 500 -427 640 -640 480 -640 479 -640 360 -640 425 -640 425 -500 375 -640 480 -640 426 -640 427 -640 426 -480 640 -480 640 -640 480 -480 640 -640 428 -612 612 -425 640 -640 427 -640 359 -640 480 -640 431 -500 311 -640 480 -640 405 -428 640 -486 640 -640 480 -640 426 -375 500 -640 480 -640 427 -640 426 -427 640 -640 264 -500 375 -640 427 -640 425 -500 332 -640 427 -640 449 -640 399 -640 480 -640 480 -500 322 -639 640 -640 427 -640 480 -640 427 -480 640 -640 480 -640 426 -640 480 -640 360 -640 512 -640 424 -480 640 -640 425 -640 431 -480 640 -500 375 -500 334 -571 640 -480 640 -640 480 -612 612 -427 640 -359 640 -500 336 -640 427 -334 500 -500 375 -360 270 -500 375 -640 427 -640 457 -640 480 -480 640 -500 375 -612 612 -427 640 -388 640 -500 333 -640 480 -500 375 -640 438 -480 640 -480 640 -640 427 -640 480 -640 480 -480 640 -500 333 -640 479 -640 429 -500 375 -640 412 -640 480 -640 421 -640 480 -640 480 -480 640 -640 480 -640 480 -640 359 -640 366 -640 480 -427 640 -640 427 -640 426 -640 480 -480 640 -640 427 -640 378 -640 480 -640 480 -640 480 -640 428 -640 480 -480 640 -434 640 -640 413 -640 480 -640 480 -373 640 -640 428 -640 433 -500 375 -427 640 -640 480 -480 640 -640 503 -640 427 -640 480 -500 333 -640 429 -640 482 -460 640 -512 640 -612 612 -640 426 -640 480 -480 640 -640 278 -640 524 -640 479 -640 430 -640 480 -640 439 -375 500 -426 640 -640 428 -640 427 -480 640 -640 480 -640 480 -640 426 -640 512 -640 427 -640 480 -640 427 -640 424 -640 427 -640 427 -500 375 -640 480 -545 640 -637 640 -427 640 -427 640 -640 480 -426 640 -640 480 -408 640 -500 375 -640 480 -640 480 -480 640 -640 428 -640 640 -428 640 -640 480 -640 427 -640 480 -640 427 -640 483 -478 640 -640 480 -500 375 -612 612 -640 424 -436 640 -640 428 -640 480 -640 427 -612 612 -480 640 -383 640 -640 427 -500 334 -640 449 -640 427 -640 480 -640 427 -500 375 -500 375 -640 480 -640 478 -640 480 -427 640 -640 428 -640 480 -425 640 -640 480 -640 425 -612 612 -480 640 -640 360 -640 403 -427 640 -640 427 -612 612 -640 425 -640 480 -500 418 -640 480 -640 480 -640 351 -640 480 -640 480 -480 640 -500 375 -375 500 -640 480 -469 640 -640 425 -640 480 -640 623 -640 480 -640 427 -640 512 -480 640 -640 445 -359 239 -640 523 -640 427 -334 500 -640 425 -500 375 -640 427 -333 500 -640 359 -478 640 -500 375 -640 528 -640 426 -500 333 -640 480 -640 575 -480 640 -640 429 -640 580 -640 640 -640 480 -640 427 -640 480 -640 475 -640 480 -500 375 -640 480 -480 640 -640 426 -640 424 -640 480 -427 640 -500 362 -478 640 -480 640 -640 480 -640 480 -478 640 -640 414 -640 427 -500 343 -500 297 -640 428 -500 348 -640 480 -220 240 -640 425 -423 640 -640 425 -640 408 -640 411 -640 427 -640 437 -640 360 -640 385 -640 464 -640 480 -524 640 -640 480 -640 427 -500 333 -640 427 -640 431 -640 480 -640 427 -640 480 -640 480 -427 640 -640 438 -640 427 -640 480 -640 480 -480 640 -640 469 -640 428 -640 427 -640 428 -640 428 -426 639 -500 333 -640 480 -480 336 -334 500 -454 640 -500 375 -506 640 -640 640 -640 616 -640 480 -427 640 -640 468 -640 428 -640 423 -640 427 -427 640 -428 640 -400 500 -640 480 -640 427 -640 384 -640 348 -640 619 -357 500 -640 480 -640 428 -640 480 -500 405 -640 427 -441 500 -480 640 -640 480 -488 640 -500 375 -640 427 -432 324 -640 480 -640 503 -499 640 -640 480 -640 424 -612 612 -640 425 -640 427 -427 640 -640 435 -375 500 -495 640 -480 640 -424 640 -640 480 -600 400 -640 428 -640 427 -640 480 -640 480 -640 427 -417 640 -640 388 -640 425 -375 500 -481 640 -640 480 -640 427 -427 640 -500 332 -427 640 -640 504 -640 640 -500 375 -640 480 -640 427 -640 414 -480 640 -640 427 -640 480 -612 612 -640 487 -640 427 -640 429 -640 427 -400 640 -640 480 -640 480 -500 375 -478 640 -640 360 -640 418 -412 456 -640 425 -640 480 -640 427 -640 594 -640 409 -480 640 -640 428 -640 428 -640 480 -612 612 -640 427 -640 453 -640 480 -640 403 -500 400 -640 427 -640 480 -640 480 -640 480 -480 640 -500 375 -427 640 -500 375 -500 380 -612 612 -640 427 -640 400 -427 640 -640 426 -640 361 -640 433 -500 492 -640 427 -640 428 -640 427 -640 427 -640 424 -640 480 -640 457 -500 400 -640 425 -500 333 -640 628 -427 640 -640 427 -640 480 -640 427 -500 375 -640 427 -480 640 -640 426 -448 640 -640 480 -480 640 -640 480 -480 640 -640 480 -329 640 -480 640 -640 513 -640 457 -480 640 -640 360 -640 489 -640 466 -500 375 -640 480 -640 425 -640 427 -640 480 -640 480 -640 427 -427 640 -445 500 -640 549 -640 436 -640 554 -640 480 -480 640 -427 640 -389 640 -640 426 -428 640 -640 427 -640 454 -480 640 -640 640 -480 640 -640 480 -640 583 -640 425 -640 396 -500 375 -500 170 -640 427 -640 424 -640 428 -480 640 -640 480 -500 375 -500 313 -640 426 -640 457 -640 424 -640 427 -480 640 -640 427 -240 180 -640 480 -640 480 -640 427 -640 427 -375 500 -640 480 -329 500 -500 375 -640 478 -640 361 -480 640 -640 427 -640 480 -640 480 -500 375 -640 428 -640 427 -640 487 -640 480 -480 640 -640 427 -640 427 -640 480 -640 480 -500 333 -640 480 -425 640 -640 480 -640 467 -640 427 -640 427 -640 425 -640 480 -640 480 -640 426 -640 425 -480 640 -375 500 -640 373 -640 425 -500 375 -640 480 -500 423 -480 640 -640 426 -612 612 -640 480 -612 612 -375 500 -640 427 -640 640 -640 480 -500 375 -500 375 -375 500 -500 375 -640 454 -640 360 -478 640 -640 429 -575 640 -640 425 -640 424 -640 428 -562 640 -640 379 -240 320 -640 445 -422 640 -512 640 -640 426 -640 480 -429 640 -640 427 -480 640 -640 427 -640 425 -480 640 -480 640 -640 360 -640 427 -640 427 -640 293 -427 640 -640 427 -500 375 -640 426 -640 480 -455 500 -640 428 -640 301 -640 388 -640 427 -425 640 -500 375 -640 480 -640 480 -640 479 -480 640 -427 640 -640 448 -640 482 -453 640 -640 480 -471 640 -480 640 -640 480 -612 612 -640 426 -480 640 -480 640 -640 480 -640 429 -640 480 -640 393 -480 640 -640 429 -480 640 -427 640 -596 640 -640 428 -640 427 -427 640 -640 426 -333 500 -640 425 -640 428 -640 427 -640 480 -640 427 -640 480 -612 612 -640 480 -426 640 -426 640 -640 457 -500 352 -640 427 -612 612 -500 375 -640 428 -480 640 -640 360 -640 424 -640 427 -640 257 -480 640 -640 425 -640 427 -640 426 -500 333 -480 640 -640 480 -640 598 -640 480 -640 361 -480 640 -500 334 -640 453 -640 480 -640 428 -500 375 -640 243 -640 480 -640 427 -640 429 -500 375 -640 425 -640 427 -480 640 -640 428 -640 484 -640 480 -640 480 -640 480 -640 480 -427 640 -640 259 -493 640 -640 443 -640 427 -640 428 -640 480 -500 320 -640 480 -640 427 -500 243 -640 427 -640 427 -640 480 -640 428 -640 427 -500 375 -478 640 -480 640 -640 427 -640 427 -640 427 -427 640 -640 426 -640 480 -640 426 -640 480 -500 333 -500 375 -628 640 -485 640 -427 640 -451 640 -640 427 -612 612 -500 333 -631 640 -640 457 -480 640 -640 427 -640 427 -640 426 -500 400 -625 417 -375 500 -640 480 -480 640 -640 426 -640 430 -640 425 -640 480 -640 413 -640 512 -500 375 -478 640 -640 425 -640 469 -640 427 -640 480 -480 640 -480 640 -639 640 -640 427 -480 640 -375 500 -640 534 -640 495 -500 325 -640 427 -480 640 -500 375 -640 640 -640 427 -640 429 -640 389 -444 265 -640 480 -612 612 -640 480 -289 640 -480 640 -640 480 -640 435 -640 480 -640 530 -640 424 -640 424 -359 640 -640 427 -427 640 -426 640 -640 483 -640 427 -640 480 -640 429 -640 424 -500 375 -480 640 -640 427 -640 480 -640 480 -480 640 -427 640 -640 480 -640 426 -640 429 -640 480 -640 480 -640 428 -640 424 -640 480 -500 375 -500 375 -500 334 -473 640 -640 439 -640 426 -640 480 -333 500 -640 480 -555 640 -500 375 -640 427 -375 500 -478 500 -640 397 -640 480 -640 425 -640 427 -640 640 -640 425 -640 480 -425 640 -640 480 -640 480 -612 612 -480 640 -640 480 -640 428 -640 480 -640 427 -640 419 -439 640 -640 523 -640 370 -640 480 -435 640 -640 427 -375 500 -640 640 -480 640 -640 425 -375 500 -640 480 -640 480 -640 480 -480 640 -500 375 -640 480 -500 400 -640 480 -484 640 -640 423 -640 480 -640 427 -640 480 -640 481 -480 640 -427 640 -500 375 -640 426 -427 640 -612 612 -640 480 -640 640 -480 640 -480 640 -640 425 -500 392 -640 480 -640 427 -640 360 -640 428 -640 453 -480 640 -612 612 -640 480 -500 332 -640 366 -480 640 -480 640 -500 375 -640 480 -640 427 -480 640 -640 480 -480 640 -500 500 -640 427 -640 640 -640 547 -640 480 -640 480 -640 480 -640 426 -640 640 -640 428 -640 428 -640 499 -640 425 -640 480 -425 640 -500 356 -500 386 -640 351 -640 551 -640 423 -640 392 -640 427 -640 427 -640 425 -419 640 -640 426 -375 500 -612 612 -427 640 -640 426 -426 640 -427 640 -640 414 -640 426 -640 430 -505 640 -640 480 -640 425 -640 522 -640 427 -500 375 -640 480 -480 640 -640 424 -640 577 -640 434 -640 427 -640 428 -640 480 -612 612 -640 423 -500 333 -640 426 -427 640 -500 375 -640 436 -640 480 -640 487 -640 427 -480 640 -640 427 -640 480 -500 375 -640 427 -640 426 -612 612 -500 429 -426 640 -640 480 -640 480 -640 480 -640 428 -640 478 -640 427 -640 478 -428 640 -414 640 -600 402 -640 434 -640 480 -640 480 -640 370 -640 483 -640 480 -640 480 -640 427 -506 640 -500 375 -512 640 -426 640 -640 434 -640 281 -640 480 -640 360 -500 240 -640 386 -453 640 -640 425 -640 427 -359 640 -293 409 -500 375 -427 640 -500 375 -427 640 -424 640 -500 332 -640 360 -640 480 -640 427 -640 443 -640 480 -500 375 -427 640 -640 480 -513 640 -640 480 -640 429 -375 500 -595 640 -500 281 -500 375 -431 640 -480 640 -640 480 -640 533 -427 640 -419 640 -640 426 -640 480 -640 513 -640 440 -640 427 -640 428 -640 480 -500 333 -640 424 -480 640 -612 612 -500 375 -640 480 -640 425 -640 640 -640 640 -342 500 -640 424 -640 426 -640 428 -640 428 -480 640 -640 428 -500 375 -640 640 -640 480 -427 640 -640 426 -375 500 -426 640 -640 480 -640 640 -640 468 -480 640 -640 480 -640 480 -500 375 -640 480 -481 640 -640 480 -640 427 -640 427 -640 640 -640 428 -640 601 -640 443 -500 333 -427 640 -640 480 -612 612 -640 594 -375 500 -427 640 -640 478 -640 480 -640 427 -640 480 -640 428 -428 640 -640 457 -640 480 -375 500 -640 427 -428 640 -640 423 -475 435 -640 425 -640 322 -427 640 -529 640 -478 640 -612 612 -428 640 -640 480 -640 480 -640 480 -640 480 -500 375 -333 500 -480 640 -640 478 -240 320 -640 427 -640 427 -426 640 -453 640 -640 480 -375 500 -640 480 -640 480 -495 640 -427 640 -640 427 -500 375 -640 569 -640 427 -640 426 -640 425 -428 640 -640 427 -428 640 -640 360 -640 427 -612 612 -480 640 -500 354 -640 428 -640 426 -500 488 -640 480 -640 480 -640 480 -480 640 -640 360 -640 480 -500 375 -640 480 -640 424 -640 524 -640 480 -427 640 -640 427 -640 424 -296 640 -640 480 -500 375 -640 425 -500 373 -640 427 -338 640 -432 373 -612 612 -640 446 -640 331 -640 426 -640 480 -640 487 -506 640 -640 480 -640 425 -640 427 -640 497 -427 640 -640 476 -640 426 -640 480 -640 426 -640 426 -640 428 -640 492 -640 480 -480 640 -426 640 -480 640 -640 428 -640 478 -529 640 -640 480 -640 428 -640 480 -640 480 -640 428 -427 640 -640 619 -640 426 -480 640 -640 480 -640 396 -640 424 -640 480 -640 427 -640 427 -640 427 -640 426 -640 426 -478 640 -500 375 -640 480 -640 427 -640 391 -480 640 -640 480 -640 427 -443 640 -612 612 -640 529 -640 480 -640 480 -612 612 -640 480 -640 480 -640 308 -428 640 -640 427 -640 480 -640 480 -426 640 -640 455 -478 640 -375 500 -426 640 -427 640 -640 360 -640 480 -640 425 -640 480 -640 423 -640 427 -640 427 -320 240 -480 640 -640 423 -426 640 -640 520 -323 500 -480 640 -640 426 -612 612 -500 374 -640 427 -640 427 -640 360 -640 425 -640 480 -640 425 -640 426 -640 480 -500 375 -640 484 -426 640 -500 375 -640 480 -640 427 -640 430 -640 577 -428 640 -640 480 -425 640 -640 480 -640 428 -427 640 -640 448 -640 414 -640 480 -612 612 -518 640 -640 640 -640 481 -640 350 -640 480 -640 494 -424 640 -500 384 -424 640 -640 480 -500 216 -640 480 -500 375 -640 476 -640 480 -640 428 -640 480 -500 333 -427 640 -270 360 -640 480 -640 339 -640 426 -480 640 -612 612 -500 375 -500 375 -640 636 -640 480 -640 480 -480 640 -640 351 -640 480 -640 427 -640 480 -640 426 -480 640 -383 640 -640 480 -612 612 -640 428 -640 426 -640 511 -640 480 -640 480 -640 480 -427 640 -481 640 -424 640 -428 640 -640 476 -640 480 -375 500 -640 480 -640 459 -458 640 -640 398 -500 375 -478 640 -500 375 -500 500 -640 439 -640 426 -640 480 -640 427 -500 333 -640 366 -640 480 -640 427 -425 640 -640 640 -640 441 -640 427 -612 612 -566 640 -640 479 -640 427 -612 612 -493 640 -480 640 -500 499 -640 543 -640 427 -640 480 -640 427 -640 426 -335 500 -640 425 -640 420 -427 640 -612 612 -640 425 -640 428 -640 427 -501 640 -427 640 -640 480 -640 428 -640 427 -640 429 -427 640 -500 334 -500 332 -640 480 -640 426 -640 512 -640 491 -640 480 -640 401 -640 480 -640 428 -640 480 -424 640 -640 425 -640 426 -427 640 -640 480 -480 640 -640 640 -428 640 -640 429 -375 500 -640 446 -640 480 -427 640 -640 503 -640 345 -612 612 -640 426 -480 640 -640 374 -640 480 -480 640 -640 425 -640 480 -408 640 -640 427 -640 480 -640 433 -427 640 -564 640 -500 375 -500 333 -640 360 -640 639 -640 480 -500 375 -640 426 -640 425 -640 437 -640 427 -640 480 -640 480 -640 480 -500 375 -640 483 -640 424 -640 436 -500 375 -428 640 -500 375 -480 640 -427 640 -424 640 -640 360 -640 480 -480 640 -480 640 -640 480 -640 285 -500 375 -640 366 -640 429 -640 481 -640 480 -427 640 -640 480 -640 427 -640 424 -640 424 -640 427 -480 640 -604 453 -473 640 -640 480 -500 285 -480 640 -640 418 -640 425 -640 480 -529 640 -534 640 -640 339 -500 375 -640 416 -500 375 -640 480 -640 480 -640 425 -640 480 -640 480 -640 457 -640 424 -500 375 -480 640 -640 427 -500 333 -640 480 -640 480 -640 426 -640 457 -640 428 -640 424 -640 427 -640 421 -500 375 -612 612 -640 427 -640 427 -375 500 -640 435 -640 366 -495 640 -612 612 -512 640 -640 427 -500 375 -640 428 -640 480 -640 479 -500 375 -640 360 -334 500 -500 333 -640 471 -612 612 -640 425 -429 640 -427 640 -640 640 -427 640 -640 427 -640 428 -480 640 -640 428 -640 427 -640 316 -457 640 -320 240 -500 375 -612 612 -640 427 -500 393 -640 480 -640 480 -640 427 -640 480 -640 640 -640 441 -484 500 -640 474 -640 427 -640 427 -640 428 -640 458 -640 360 -468 640 -427 640 -640 425 -640 480 -500 333 -640 427 -640 427 -480 640 -640 480 -640 428 -640 428 -640 428 -640 480 -640 286 -480 640 -640 492 -640 480 -640 480 -640 425 -640 427 -270 360 -457 480 -640 480 -640 480 -500 375 -640 430 -640 480 -640 480 -500 333 -640 426 -500 334 -640 428 -640 427 -589 640 -640 426 -640 299 -427 640 -640 387 -640 427 -426 640 -640 427 -640 480 -640 426 -640 480 -640 406 -511 640 -640 448 -428 640 -500 377 -640 426 -480 640 -375 500 -640 427 -640 427 -640 480 -640 480 -640 427 -640 480 -500 513 -480 640 -427 640 -640 359 -640 395 -480 640 -426 640 -640 427 -359 640 -640 478 -640 406 -640 429 -640 480 -640 426 -640 427 -521 640 -400 400 -640 428 -480 640 -640 480 -640 512 -426 640 -478 640 -433 640 -429 640 -500 375 -640 426 -640 422 -640 480 -400 300 -640 426 -500 500 -640 359 -640 427 -640 478 -640 480 -640 427 -640 427 -500 375 -640 427 -500 375 -500 375 -640 358 -458 640 -480 640 -640 426 -640 480 -640 426 -401 640 -480 640 -640 480 -640 480 -500 375 -640 424 -640 480 -640 520 -640 360 -500 375 -640 427 -426 640 -640 427 -640 281 -500 375 -428 640 -640 426 -640 427 -640 480 -640 426 -640 525 -640 559 -640 458 -640 480 -480 640 -640 535 -640 480 -640 480 -640 493 -640 426 -640 427 -480 640 -375 500 -640 480 -640 480 -640 427 -480 640 -640 576 -640 425 -640 480 -427 640 -640 360 -640 433 -640 478 -426 640 -640 433 -640 406 -640 480 -640 427 -640 480 -640 480 -640 427 -500 375 -323 500 -640 427 -640 472 -375 500 -500 343 -640 483 -640 384 -424 640 -640 425 -424 640 -455 190 -640 427 -500 332 -480 640 -427 640 -640 424 -640 427 -640 480 -334 500 -427 640 -427 640 -426 640 -640 478 -640 425 -640 360 -640 427 -640 640 -640 360 -640 427 -640 427 -375 500 -640 471 -480 640 -640 275 -640 480 -640 480 -640 492 -640 376 -640 480 -640 426 -427 640 -640 480 -640 432 -640 469 -640 480 -640 427 -427 640 -375 500 -640 640 -640 428 -375 500 -596 640 -500 375 -500 330 -640 427 -640 480 -640 400 -480 640 -640 480 -640 480 -640 427 -640 480 -640 480 -337 500 -426 640 -640 425 -640 426 -478 640 -401 640 -640 427 -640 427 -480 640 -640 640 -480 640 -640 426 -640 480 -640 466 -480 640 -640 427 -383 640 -640 480 -640 640 -480 640 -640 480 -500 287 -500 375 -640 480 -640 427 -500 375 -640 478 -640 640 -640 416 -640 480 -640 427 -640 426 -324 500 -640 426 -640 428 -640 427 -640 480 -500 375 -640 480 -640 488 -640 335 -640 480 -612 612 -640 480 -640 314 -640 427 -424 640 -500 375 -640 397 -640 480 -500 375 -480 640 -500 375 -640 427 -640 480 -480 640 -500 263 -500 375 -500 375 -640 425 -640 480 -640 427 -375 500 -480 640 -500 333 -383 640 -640 391 -500 458 -640 427 -640 426 -480 640 -480 640 -640 480 -640 446 -500 375 -500 329 -640 480 -640 480 -612 612 -480 640 -431 640 -640 426 -480 640 -500 375 -640 480 -640 480 -640 426 -500 375 -640 480 -640 427 -500 375 -426 640 -640 480 -640 429 -500 375 -500 375 -640 480 -427 640 -480 640 -480 640 -640 481 -640 480 -500 375 -640 480 -332 500 -500 332 -500 500 -640 427 -640 480 -640 480 -333 500 -640 431 -640 424 -500 393 -640 480 -640 427 -640 480 -500 249 -640 512 -640 480 -640 425 -640 400 -640 427 -640 480 -640 480 -640 480 -640 427 -640 428 -427 640 -640 214 -640 640 -640 480 -500 333 -640 480 -640 439 -640 427 -480 640 -640 480 -640 424 -640 424 -640 480 -640 427 -480 640 -640 431 -640 425 -640 414 -480 640 -640 427 -640 428 -640 427 -640 426 -427 640 -480 640 -640 514 -375 500 -333 500 -640 457 -640 501 -640 427 -333 500 -640 360 -640 480 -425 640 -500 319 -640 361 -640 389 -640 325 -640 480 -500 344 -500 333 -397 640 -640 480 -480 640 -333 500 -640 326 -640 428 -640 477 -480 640 -640 426 -320 240 -640 426 -375 500 -640 400 -640 480 -640 338 -612 612 -640 427 -640 480 -640 640 -640 422 -640 428 -640 426 -640 640 -640 389 -640 425 -640 480 -640 480 -640 346 -480 640 -500 333 -640 428 -545 640 -400 500 -640 427 -640 480 -640 326 -480 640 -640 480 -640 425 -640 427 -640 427 -640 428 -333 500 -512 640 -409 640 -640 426 -640 425 -332 500 -640 480 -640 480 -640 361 -640 426 -640 478 -427 640 -360 270 -640 428 -478 640 -480 640 -640 427 -640 480 -480 640 -500 400 -410 555 -640 480 -333 500 -640 427 -640 480 -500 375 -640 480 -640 480 -428 640 -640 376 -640 480 -640 480 -479 640 -500 333 -640 480 -640 480 -428 640 -640 480 -640 478 -500 333 -640 480 -640 360 -640 426 -410 500 -500 375 -640 479 -480 640 -612 612 -640 425 -640 404 -612 612 -374 640 -500 375 -480 640 -427 640 -500 444 -426 640 -428 640 -640 427 -640 425 -640 479 -500 334 -500 375 -640 480 -640 359 -640 427 -480 640 -500 333 -425 640 -640 439 -640 480 -640 483 -480 640 -640 425 -640 481 -478 640 -427 640 -640 480 -500 333 -500 375 -640 640 -425 640 -500 375 -640 427 -500 333 -640 480 -640 426 -640 480 -640 640 -499 640 -480 640 -640 480 -480 640 -640 480 -640 427 -640 428 -640 548 -640 640 -500 375 -640 480 -640 426 -640 427 -500 169 -640 360 -640 480 -640 457 -480 640 -640 582 -640 480 -500 281 -640 425 -500 375 -640 480 -640 480 -640 480 -640 480 -640 480 -640 360 -333 500 -640 480 -457 640 -640 427 -640 407 -640 480 -640 480 -500 375 -500 329 -369 500 -640 480 -640 427 -426 640 -640 496 -640 427 -640 480 -475 405 -640 629 -640 426 -500 375 -640 427 -640 480 -640 335 -640 428 -640 512 -640 425 -612 612 -640 480 -640 480 -500 409 -640 412 -612 612 -640 427 -433 640 -640 427 -640 480 -640 474 -640 581 -500 482 -427 640 -640 427 -640 428 -379 500 -640 480 -482 500 -640 480 -640 480 -640 427 -500 323 -500 375 -426 640 -428 640 -640 480 -640 360 -640 427 -640 480 -640 480 -500 333 -640 640 -640 427 -640 480 -480 640 -640 427 -640 640 -640 417 -640 428 -640 429 -500 375 -500 375 -500 236 -428 640 -640 427 -500 375 -480 640 -640 427 -640 480 -640 480 -640 423 -640 427 -640 480 -640 424 -500 375 -426 640 -640 258 -640 516 -640 480 -640 480 -640 427 -640 480 -640 428 -500 375 -640 480 -640 480 -612 612 -640 426 -640 427 -640 286 -640 359 -500 375 -640 486 -480 640 -640 480 -640 402 -640 480 -427 640 -640 480 -640 486 -612 612 -640 480 -500 281 -333 500 -640 426 -640 480 -393 480 -333 500 -500 375 -640 480 -640 426 -640 411 -640 425 -640 426 -640 480 -640 480 -640 427 -400 500 -500 375 -640 429 -415 640 -640 480 -640 512 -640 425 -500 333 -500 263 -640 427 -480 640 -500 400 -640 611 -427 640 -640 480 -426 640 -375 500 -603 640 -428 640 -640 494 -640 480 -640 320 -640 480 -640 430 -500 333 -640 439 -640 480 -500 374 -640 426 -640 480 -500 250 -640 421 -640 480 -640 426 -480 640 -480 640 -640 455 -500 375 -640 640 -640 427 -375 500 -410 640 -334 500 -640 427 -640 480 -640 360 -480 640 -640 480 -480 640 -640 427 -640 480 -640 426 -500 375 -640 427 -640 426 -640 427 -459 258 -482 640 -640 480 -500 375 -640 480 -640 480 -427 640 -500 375 -640 360 -449 640 -480 640 -640 427 -640 428 -640 480 -640 480 -427 640 -640 427 -640 427 -640 453 -640 480 -480 640 -640 427 -640 427 -640 428 -640 464 -375 500 -480 640 -640 479 -640 473 -500 305 -480 640 -640 478 -640 480 -640 480 -640 480 -640 427 -640 426 -640 478 -426 640 -480 640 -500 333 -640 425 -640 468 -480 640 -333 500 -426 640 -640 478 -640 480 -640 427 -640 428 -640 480 -500 375 -640 429 -640 426 -576 640 -500 333 -640 419 -480 640 -640 480 -478 640 -640 396 -334 500 -640 480 -427 640 -467 640 -500 375 -640 427 -295 244 -640 640 -640 401 -427 640 -480 640 -640 478 -640 438 -640 427 -640 480 -640 448 -640 480 -640 426 -640 480 -500 375 -500 400 -500 332 -640 427 -640 427 -500 350 -640 412 -640 480 -640 524 -500 375 -500 333 -424 640 -640 480 -640 427 -640 480 -640 480 -480 640 -640 457 -426 640 -480 640 -640 480 -283 424 -426 640 -336 640 -640 480 -640 427 -500 342 -640 480 -640 480 -640 427 -640 606 -640 480 -640 478 -480 640 -427 640 -640 480 -640 360 -640 480 -640 427 -640 480 -640 426 -500 332 -375 500 -640 478 -427 640 -640 480 -640 480 -427 640 -640 461 -640 428 -640 429 -500 333 -481 640 -640 426 -640 408 -640 640 -480 640 -640 427 -640 480 -640 480 -640 481 -640 480 -500 375 -480 640 -640 427 -640 427 -640 427 -640 427 -500 375 -640 468 -640 480 -640 426 -640 548 -500 375 -640 425 -640 480 -640 480 -640 427 -640 426 -640 427 -567 640 -640 427 -640 457 -640 427 -600 354 -640 411 -640 620 -640 480 -640 480 -640 424 -469 640 -640 429 -640 480 -426 640 -359 640 -500 312 -640 480 -640 480 -640 427 -640 467 -640 586 -428 640 -640 427 -500 375 -427 640 -500 375 -500 375 -640 359 -640 493 -640 427 -500 375 -640 427 -298 500 -640 427 -640 541 -497 640 -375 500 -640 605 -640 451 -375 500 -500 375 -480 640 -640 480 -640 428 -640 480 -425 640 -640 478 -640 480 -640 483 -458 640 -640 541 -500 332 -500 281 -480 640 -426 640 -640 480 -427 640 -640 480 -640 427 -640 428 -640 480 -640 426 -480 640 -640 334 -640 400 -640 480 -640 426 -375 500 -640 480 -640 427 -640 428 -640 427 -640 480 -480 640 -640 640 -480 640 -480 640 -500 375 -640 480 -612 612 -640 480 -640 426 -512 640 -500 375 -427 640 -640 476 -640 480 -640 511 -640 360 -640 425 -640 480 -480 640 -640 448 -500 375 -640 480 -640 427 -640 425 -428 640 -640 640 -640 428 -521 421 -640 480 -640 640 -427 640 -500 400 -640 427 -500 375 -640 427 -640 457 -640 359 -640 430 -640 480 -500 375 -640 480 -640 427 -640 480 -640 425 -500 375 -528 640 -313 500 -600 400 -640 609 -640 480 -640 404 -640 480 -640 480 -640 424 -640 480 -640 427 -640 401 -500 375 -640 480 -490 640 -612 612 -640 427 -640 640 -640 480 -640 425 -480 640 -631 640 -500 333 -602 415 -640 512 -640 427 -640 480 -640 426 -640 480 -480 640 -640 480 -640 427 -640 403 -640 453 -640 480 -640 427 -640 480 -640 426 -426 640 -612 612 -640 480 -640 480 -640 480 -500 333 -640 640 -639 640 -612 612 -640 464 -640 480 -500 375 -405 500 -640 427 -640 512 -640 427 -480 640 -640 458 -640 428 -640 415 -480 640 -640 480 -427 640 -640 480 -430 500 -500 375 -640 480 -500 376 -640 304 -480 640 -500 375 -640 426 -640 480 -640 425 -480 640 -640 427 -428 640 -500 375 -500 500 -640 480 -640 419 -484 640 -640 480 -640 427 -640 480 -640 427 -640 480 -640 429 -500 319 -427 640 -500 375 -640 480 -358 640 -480 640 -500 375 -427 640 -640 359 -500 333 -448 299 -640 424 -612 612 -612 612 -640 426 -425 640 -344 500 -640 326 -640 513 -640 425 -640 640 -640 480 -640 427 -480 640 -500 336 -640 427 -640 480 -640 480 -640 427 -375 500 -640 429 -375 500 -513 640 -640 544 -640 480 -640 480 -640 432 -480 640 -333 500 -640 383 -500 375 -426 640 -640 480 -640 540 -640 480 -392 500 -480 640 -640 404 -640 640 -427 640 -640 480 -640 411 -640 499 -640 480 -640 480 -640 480 -640 427 -397 500 -427 640 -640 314 -500 360 -480 640 -640 409 -640 480 -640 480 -500 333 -478 640 -500 332 -640 427 -640 396 -640 480 -640 427 -640 427 -640 480 -428 640 -500 375 -640 428 -375 500 -640 504 -640 424 -629 640 -427 640 -500 375 -600 400 -640 425 -640 480 -426 640 -640 406 -640 480 -640 480 -640 480 -640 335 -480 640 -427 640 -500 375 -640 459 -612 612 -500 375 -480 640 -480 640 -640 480 -640 400 -429 640 -640 428 -640 480 -640 432 -640 426 -528 640 -640 426 -500 375 -640 480 -640 430 -640 478 -640 480 -640 427 -640 480 -426 640 -500 375 -640 488 -640 427 -640 407 -425 640 -640 549 -500 375 -612 612 -640 444 -640 426 -640 480 -494 327 -640 428 -640 449 -500 397 -640 479 -640 480 -640 431 -640 360 -509 640 -640 480 -640 480 -512 640 -640 426 -640 509 -612 612 -640 427 -425 640 -640 480 -427 640 -640 480 -640 511 -640 480 -640 480 -640 425 -500 310 -640 480 -612 612 -500 335 -640 480 -640 480 -480 640 -640 480 -500 333 -427 640 -640 480 -459 500 -640 480 -640 480 -640 427 -640 427 -500 375 -640 425 -428 640 -640 639 -500 325 -640 427 -640 506 -640 458 -469 640 -640 484 -500 375 -375 500 -427 640 -425 640 -338 500 -640 427 -480 640 -640 574 -640 480 -640 480 -640 480 -640 426 -640 425 -640 427 -612 612 -480 640 -427 640 -640 480 -640 427 -400 600 -640 427 -640 640 -612 612 -640 427 -480 640 -640 480 -640 480 -640 480 -375 500 -500 338 -426 640 -500 375 -500 333 -640 427 -640 480 -640 427 -640 255 -640 480 -640 401 -640 513 -640 427 -640 640 -375 500 -640 429 -640 425 -500 333 -640 424 -640 480 -640 480 -640 480 -480 640 -375 500 -640 480 -500 333 -500 375 -375 500 -480 640 -640 480 -640 478 -480 640 -640 427 -480 640 -640 480 -640 427 -427 640 -427 640 -640 480 -427 640 -640 427 -500 375 -640 480 -480 640 -640 427 -500 400 -500 333 -640 426 -471 640 -640 480 -640 427 -480 640 -433 640 -590 640 -640 427 -494 500 -328 640 -640 480 -512 400 -612 612 -480 640 -480 640 -640 425 -640 480 -640 480 -425 640 -640 427 -640 424 -640 426 -640 514 -425 640 -640 479 -508 640 -500 333 -640 433 -640 425 -640 480 -640 360 -480 640 -640 429 -640 480 -640 426 -426 640 -640 480 -640 426 -640 480 -427 640 -640 455 -640 480 -500 400 -640 427 -640 480 -640 480 -500 375 -640 554 -334 500 -640 360 -426 640 -500 470 -640 427 -640 480 -480 640 -640 427 -500 334 -427 640 -640 383 -640 426 -640 480 -480 640 -437 640 -640 425 -640 480 -640 480 -640 427 -640 427 -640 480 -612 612 -640 360 -425 640 -426 640 -640 241 -640 480 -640 640 -427 640 -612 612 -640 429 -500 375 -500 375 -500 324 -640 456 -640 427 -640 424 -640 480 -375 500 -640 427 -640 480 -480 640 -640 572 -640 480 -480 640 -640 427 -640 427 -640 427 -640 480 -500 375 -640 480 -375 500 -640 426 -640 426 -375 500 -640 480 -640 401 -640 458 -481 640 -640 480 -640 640 -640 480 -640 480 -640 502 -427 640 -428 640 -427 640 -427 640 -640 427 -359 640 -640 425 -640 427 -457 640 -640 436 -640 434 -640 480 -335 500 -497 500 -425 640 -480 640 -425 640 -640 480 -640 425 -640 311 -640 426 -640 428 -640 640 -640 425 -640 427 -640 480 -640 388 -640 426 -640 481 -640 398 -640 427 -640 427 -640 480 -640 640 -640 428 -640 463 -640 425 -427 640 -500 500 -640 368 -500 331 -500 375 -640 426 -385 500 -500 358 -640 480 -640 480 -640 480 -480 640 -640 427 -500 304 -640 427 -500 333 -640 457 -500 500 -640 360 -432 640 -640 576 -640 480 -640 401 -640 480 -640 360 -640 480 -640 498 -500 333 -640 480 -640 480 -640 427 -640 487 -480 640 -640 428 -359 640 -640 432 -640 480 -640 427 -480 640 -640 480 -640 426 -640 480 -500 333 -476 640 -640 480 -640 424 -427 640 -640 285 -427 640 -472 640 -500 312 -480 640 -640 478 -640 480 -640 480 -640 481 -612 612 -640 480 -612 612 -640 478 -640 480 -360 640 -640 427 -640 427 -640 480 -361 500 -640 428 -640 426 -333 250 -640 640 -458 640 -640 480 -640 427 -640 478 -640 480 -640 427 -640 426 -640 427 -640 480 -640 426 -451 500 -640 512 -640 428 -640 480 -612 612 -480 640 -640 471 -640 428 -500 375 -640 480 -506 640 -640 479 -427 640 -500 375 -640 427 -640 509 -640 480 -612 612 -640 427 -640 480 -640 392 -500 375 -640 640 -640 480 -500 378 -500 375 -500 375 -427 640 -640 427 -640 480 -640 446 -640 504 -640 480 -640 480 -478 640 -640 429 -640 424 -640 439 -640 480 -640 480 -640 427 -640 631 -427 640 -480 640 -640 480 -425 640 -640 426 -640 360 -640 424 -469 640 -640 426 -640 427 -640 425 -500 375 -500 373 -640 405 -640 481 -480 640 -640 480 -500 284 -640 480 -640 427 -640 480 -640 480 -480 640 -640 427 -426 640 -480 640 -640 480 -640 480 -427 640 -640 427 -640 523 -640 427 -640 480 -640 512 -640 427 -500 375 -640 480 -640 427 -480 640 -640 434 -640 399 -500 333 -640 480 -640 426 -640 480 -640 474 -640 493 -640 480 -568 640 -500 334 -640 480 -640 480 -640 459 -500 400 -640 480 -500 333 -640 430 -640 427 -640 478 -640 480 -640 433 -481 640 -640 367 -640 427 -612 612 -500 374 -640 480 -375 500 -550 365 -640 429 -500 333 -480 640 -640 640 -640 480 -640 480 -640 427 -640 480 -383 640 -640 427 -640 301 -427 640 -640 427 -640 425 -300 400 -480 640 -500 333 -518 640 -420 640 -480 640 -428 640 -333 500 -640 360 -500 333 -480 640 -471 640 -640 427 -640 480 -480 640 -640 480 -640 425 -640 480 -640 480 -640 425 -480 640 -640 474 -500 335 -640 480 -640 480 -640 360 -500 375 -640 478 -640 398 -500 375 -640 480 -640 428 -500 375 -500 375 -466 640 -458 640 -640 480 -640 477 -640 489 -375 500 -640 640 -480 640 -612 612 -640 480 -640 427 -640 350 -500 375 -640 480 -298 640 -480 640 -640 427 -480 640 -640 426 -640 480 -640 480 -640 480 -640 480 -640 427 -500 375 -478 640 -640 425 -640 472 -640 409 -375 500 -480 640 -640 425 -400 600 -640 480 -640 480 -480 640 -640 361 -426 640 -427 640 -447 640 -425 640 -640 426 -500 375 -640 427 -640 483 -480 640 -640 480 -640 480 -427 640 -640 480 -640 640 -640 427 -640 480 -640 427 -640 353 -640 640 -640 480 -374 500 -640 426 -384 640 -640 480 -480 640 -375 500 -375 500 -500 375 -640 480 -640 480 -640 428 -640 480 -640 429 -640 457 -640 424 -480 640 -640 480 -480 640 -640 626 -640 427 -640 480 -640 480 -458 640 -480 640 -500 398 -640 428 -640 425 -640 429 -640 427 -427 640 -512 640 -640 640 -640 426 -640 478 -458 640 -640 480 -640 480 -426 640 -640 480 -640 480 -500 281 -640 640 -640 427 -478 640 -640 426 -640 426 -640 458 -640 427 -500 356 -640 429 -473 640 -640 526 -640 480 -500 377 -640 426 -640 480 -640 480 -640 304 -640 480 -640 426 -640 427 -640 434 -426 640 -640 480 -480 640 -640 480 -640 428 -640 480 -500 382 -500 333 -375 500 -640 427 -640 427 -640 427 -640 480 -640 426 -480 640 -640 361 -640 474 -473 640 -427 640 -500 332 -640 427 -640 424 -640 480 -640 480 -343 500 -425 640 -640 480 -500 375 -640 427 -640 427 -500 373 -640 427 -427 640 -640 480 -508 640 -640 480 -640 480 -500 375 -640 426 -640 640 -640 400 -480 640 -547 640 -640 426 -640 427 -517 640 -375 500 -640 426 -640 325 -640 480 -640 426 -640 427 -640 558 -640 640 -640 520 -640 480 -640 480 -640 427 -640 401 -640 426 -640 412 -640 427 -640 425 -640 427 -500 375 -426 640 -491 640 -480 640 -640 428 -480 640 -640 480 -640 294 -480 640 -640 502 -640 427 -640 427 -640 640 -425 640 -640 480 -640 495 -640 426 -416 640 -640 426 -640 427 -640 359 -640 425 -427 640 -640 480 -640 427 -427 640 -612 612 -640 428 -640 361 -640 480 -640 427 -480 640 -640 426 -640 480 -478 640 -640 480 -426 640 -640 480 -640 482 -640 428 -361 640 -427 640 -640 480 -375 500 -640 427 -640 427 -500 329 -480 640 -555 640 -500 400 -516 520 -640 480 -640 427 -640 426 -480 640 -427 640 -640 428 -640 620 -500 375 -640 480 -480 640 -480 640 -427 640 -480 640 -500 375 -640 480 -640 427 -640 480 -480 640 -612 612 -640 480 -427 640 -426 640 -427 640 -426 640 -640 427 -640 450 -480 640 -640 426 -640 426 -597 640 -640 439 -375 500 -640 360 -500 393 -424 640 -640 427 -640 427 -513 640 -424 640 -480 640 -640 427 -640 427 -640 480 -333 500 -640 360 -640 480 -640 480 -640 480 -640 480 -640 427 -640 480 -640 480 -640 425 -640 453 -480 640 -640 426 -640 480 -640 426 -640 481 -480 640 -640 427 -480 640 -640 480 -640 480 -640 480 -457 640 -640 404 -512 640 -640 360 -640 480 -480 640 -640 427 -426 640 -640 513 -640 479 -640 427 -640 480 -640 480 -480 640 -500 391 -640 424 -375 500 -459 640 -640 547 -500 334 -640 359 -480 640 -640 427 -640 425 -626 640 -640 427 -640 423 -640 464 -612 612 -640 425 -640 480 -640 426 -640 480 -500 375 -480 640 -640 480 -640 560 -640 427 -640 422 -612 612 -612 612 -480 640 -625 640 -640 480 -612 612 -640 480 -480 640 -427 640 -333 500 -640 427 -404 640 -640 480 -375 500 -438 640 -500 375 -500 336 -640 427 -640 456 -640 427 -640 426 -640 480 -640 427 -427 640 -640 480 -480 640 -640 428 -425 640 -500 375 -640 481 -640 427 -640 427 -640 195 -500 375 -480 640 -640 425 -640 480 -640 426 -427 640 -514 640 -640 427 -640 480 -640 427 -640 425 -640 427 -500 375 -639 426 -640 504 -640 480 -427 640 -500 375 -640 463 -480 640 -640 427 -640 428 -427 640 -640 480 -500 333 -640 480 -640 480 -500 375 -640 480 -640 426 -640 426 -640 427 -640 480 -640 426 -640 427 -409 640 -640 468 -640 428 -500 332 -640 480 -640 489 -640 480 -640 363 -640 427 -640 478 -640 480 -640 360 -375 500 -640 529 -427 640 -640 427 -640 426 -427 640 -640 480 -640 478 -640 428 -640 480 -640 426 -640 427 -640 480 -396 640 -640 471 -428 640 -600 400 -500 375 -640 480 -640 425 -424 640 -480 640 -640 426 -425 640 -480 640 -500 375 -480 640 -512 640 -640 428 -480 640 -640 426 -640 480 -640 640 -640 499 -640 400 -640 427 -640 427 -500 375 -640 427 -640 480 -640 480 -640 426 -640 480 -500 375 -640 623 -494 640 -640 403 -426 640 -425 640 -640 428 -640 480 -640 427 -640 430 -640 640 -640 480 -480 640 -640 426 -640 514 -428 640 -272 480 -640 428 -640 454 -504 314 -338 500 -500 375 -640 480 -500 375 -640 426 -640 298 -640 480 -500 322 -500 333 -640 436 -640 480 -500 375 -500 375 -612 612 -640 427 -640 433 -428 640 -427 640 -500 333 -640 409 -640 480 -640 480 -480 640 -640 428 -640 427 -480 640 -427 640 -640 429 -636 640 -640 427 -640 428 -640 640 -640 400 -640 480 -640 480 -640 517 -480 640 -640 480 -533 640 -480 640 -640 199 -426 640 -640 480 -640 608 -640 424 -640 371 -480 640 -640 427 -640 368 -500 375 -640 427 -500 334 -640 480 -640 480 -640 480 -640 389 -640 480 -640 480 -640 478 -640 426 -640 480 -640 480 -640 480 -480 640 -500 332 -640 515 -480 640 -640 435 -480 640 -640 426 -375 500 -480 640 -640 480 -425 640 -480 640 -640 480 -640 419 -640 425 -640 480 -480 640 -640 480 -500 333 -476 640 -500 400 -512 640 -640 338 -640 360 -480 640 -640 427 -480 640 -640 427 -640 480 -480 640 -640 480 -640 427 -612 612 -640 478 -427 640 -640 427 -640 426 -640 480 -640 426 -640 508 -640 427 -640 427 -640 480 -640 480 -640 428 -640 426 -480 640 -500 375 -427 640 -640 371 -425 640 -640 427 -640 427 -640 480 -480 640 -613 640 -640 480 -640 480 -500 375 -640 424 -427 640 -640 480 -640 480 -640 480 -640 640 -640 480 -640 479 -640 427 -331 500 -640 359 -640 494 -640 480 -640 640 -640 427 -500 375 -640 480 -640 640 -640 429 -458 640 -640 425 -640 640 -640 465 -640 480 -488 640 -640 480 -640 480 -640 394 -426 640 -640 426 -423 640 -640 480 -427 640 -640 433 -335 500 -640 480 -640 396 -640 373 -640 427 -640 480 -640 426 -640 486 -425 640 -640 428 -500 285 -480 640 -640 480 -640 480 -428 640 -427 640 -640 426 -640 480 -640 389 -500 375 -375 500 -640 426 -480 640 -640 480 -640 474 -480 640 -640 427 -480 640 -640 480 -449 640 -640 432 -640 427 -640 480 -640 468 -427 640 -640 427 -640 458 -640 427 -640 427 -383 640 -640 640 -640 373 -640 427 -640 480 -640 486 -640 480 -480 640 -640 480 -640 480 -640 426 -480 640 -640 427 -640 480 -640 425 -640 480 -500 251 -640 480 -416 640 -640 480 -640 480 -640 640 -640 428 -425 640 -640 480 -640 480 -640 427 -640 480 -640 427 -640 429 -640 426 -640 640 -427 640 -640 427 -640 427 -640 427 -414 640 -500 375 -640 416 -500 332 -640 393 -640 360 -640 480 -500 333 -640 425 -640 427 -640 426 -640 427 -500 375 -640 360 -500 333 -424 640 -640 427 -478 640 -478 640 -429 640 -480 640 -640 425 -500 375 -640 365 -640 480 -480 640 -375 500 -640 426 -640 480 -640 480 -640 427 -640 480 -640 425 -640 480 -640 427 -640 427 -640 480 -640 427 -640 427 -640 480 -640 448 -500 375 -426 640 -480 640 -428 640 -612 612 -640 421 -500 333 -640 491 -640 480 -640 360 -640 397 -640 426 -478 640 -480 640 -640 424 -640 427 -640 427 -640 480 -640 427 -640 427 -640 426 -640 426 -640 426 -640 480 -640 427 -640 480 -640 480 -332 500 -640 428 -480 640 -428 640 -427 640 -640 351 -508 640 -640 427 -640 480 -500 375 -640 480 -640 480 -640 425 -640 420 -640 480 -500 375 -640 480 -640 425 -418 500 -500 375 -640 474 -640 425 -640 427 -640 480 -336 640 -640 427 -640 478 -640 425 -640 503 -333 500 -640 427 -640 480 -640 480 -612 612 -480 640 -640 404 -640 427 -640 503 -640 360 -640 427 -640 480 -640 381 -640 339 -428 640 -427 640 -640 425 -640 480 -640 480 -640 427 -426 640 -640 409 -640 427 -640 519 -360 640 -375 500 -640 427 -640 427 -640 427 -640 508 -640 428 -640 423 -640 427 -640 386 -500 333 -640 366 -480 640 -640 480 -640 427 -640 427 -640 427 -640 509 -500 375 -500 375 -640 418 -375 500 -640 353 -640 426 -640 427 -640 480 -612 612 -640 480 -640 478 -526 640 -387 500 -640 480 -640 427 -640 427 -640 480 -640 427 -640 425 -640 480 -500 376 -640 480 -640 480 -500 316 -640 427 -640 480 -640 480 -427 640 -640 427 -480 640 -640 427 -612 612 -480 640 -640 640 -334 500 -427 640 -500 335 -640 428 -640 426 -640 478 -480 640 -426 640 -640 426 -640 426 -500 334 -640 480 -640 443 -500 375 -640 480 -640 427 -640 479 -640 424 -640 480 -427 640 -640 428 -640 480 -640 480 -640 480 -640 424 -500 281 -640 480 -640 426 -426 640 -500 332 -640 480 -640 424 -480 640 -640 360 -334 500 -333 500 -640 427 -640 480 -640 427 -640 427 -480 640 -640 297 -500 487 -427 640 -640 426 -480 640 -640 480 -554 312 -640 454 -640 361 -640 516 -480 640 -640 640 -500 350 -640 640 -640 425 -640 640 -480 640 -640 480 -640 640 -640 426 -640 480 -640 587 -640 425 -640 480 -427 640 -640 529 -640 429 -640 480 -640 428 -640 427 -640 480 -640 480 -500 339 -500 375 -500 375 -640 427 -640 480 -640 444 -500 335 -640 512 -640 426 -640 480 -500 375 -640 480 -480 640 -640 480 -612 612 -375 500 -480 640 -640 599 -640 480 -640 480 -500 375 -500 332 -640 382 -640 480 -640 480 -427 640 -500 471 -640 426 -640 480 -426 640 -640 427 -640 480 -640 480 -640 427 -640 427 -640 417 -413 622 -480 640 -428 640 -640 426 -640 366 -425 640 -500 375 -500 345 -640 373 -489 500 -640 389 -478 640 -640 494 -427 640 -640 426 -640 480 -444 640 -640 427 -640 426 -427 640 -384 640 -640 426 -459 640 -640 479 -640 572 -640 480 -640 480 -468 640 -640 431 -425 640 -640 428 -640 428 -480 500 -640 427 -427 640 -426 640 -640 427 -429 640 -640 428 -480 640 -640 427 -640 425 -500 375 -401 640 -640 425 -500 331 -640 480 -640 512 -640 361 -640 428 -640 427 -500 375 -427 640 -640 427 -640 480 -480 640 -427 640 -640 425 -640 361 -640 424 -427 640 -640 479 -640 427 -640 425 -640 427 -640 360 -640 424 -640 544 -640 427 -375 500 -640 480 -640 480 -500 375 -640 425 -640 426 -375 500 -640 454 -640 428 -640 360 -480 640 -640 480 -435 640 -500 375 -640 640 -640 479 -640 480 -640 379 -640 480 -478 640 -500 282 -640 480 -640 480 -640 480 -640 427 -640 480 -640 425 -426 640 -513 640 -640 431 -640 425 -640 480 -511 640 -640 429 -640 480 -500 375 -640 480 -640 394 -640 427 -425 640 -640 430 -640 480 -640 425 -640 480 -640 480 -640 457 -640 480 -333 500 -640 480 -640 427 -640 425 -640 428 -379 500 -640 480 -640 484 -427 640 -640 427 -640 418 -640 428 -640 482 -640 483 -500 283 -640 476 -640 480 -144 144 -640 360 -640 480 -480 640 -640 360 -480 640 -640 480 -640 480 -640 426 -426 640 -426 640 -640 480 -640 480 -640 604 -640 445 -640 480 -640 480 -640 313 -640 331 -640 375 -640 480 -612 612 -505 640 -424 640 -640 361 -640 421 -640 400 -640 480 -640 454 -640 427 -500 375 -506 640 -426 640 -500 375 -480 640 -479 322 -640 424 -480 640 -480 640 -640 349 -639 426 -427 640 -500 333 -640 480 -424 640 -425 640 -640 480 -593 391 -640 427 -640 508 -480 640 -640 400 -640 428 -640 360 -640 427 -640 428 -640 480 -640 426 -640 506 -500 357 -640 480 -640 480 -640 428 -640 427 -640 424 -640 428 -640 427 -640 422 -640 480 -640 480 -500 375 -640 425 -640 480 -640 480 -640 537 -640 427 -640 428 -640 428 -640 480 -318 500 -640 480 -480 640 -500 333 -640 427 -500 375 -640 480 -480 640 -500 333 -640 480 -640 427 -640 427 -500 375 -640 426 -640 426 -640 427 -500 348 -640 427 -640 426 -640 546 -640 427 -640 427 -640 480 -640 425 -500 407 -500 300 -640 512 -480 640 -640 480 -500 281 -640 435 -640 426 -640 427 -640 478 -640 383 -375 500 -640 480 -640 424 -480 640 -640 427 -640 480 -640 480 -640 473 -640 475 -600 450 -450 265 -500 457 -341 640 -640 480 -640 425 -640 427 -375 500 -480 640 -543 640 -640 480 -457 640 -640 480 -640 490 -640 478 -427 640 -640 554 -427 640 -427 640 -640 480 -640 454 -640 427 -500 283 -640 480 -640 415 -640 480 -640 486 -640 425 -640 427 -333 500 -473 640 -640 480 -480 640 -640 478 -480 640 -427 640 -640 480 -612 612 -640 480 -500 325 -640 421 -640 480 -640 427 -640 480 -640 427 -640 281 -359 640 -458 640 -640 518 -640 360 -612 612 -640 480 -640 480 -640 480 -640 449 -640 480 -640 480 -640 480 -426 640 -640 427 -500 375 -640 427 -640 426 -640 599 -640 480 -495 640 -640 480 -500 281 -480 640 -427 640 -640 427 -640 427 -640 359 -640 429 -640 480 -640 426 -480 640 -640 430 -640 478 -480 640 -482 640 -640 426 -500 375 -640 319 -500 375 -500 375 -640 480 -500 333 -640 427 -640 480 -640 480 -640 480 -640 480 -612 612 -640 480 -640 360 -640 425 -426 640 -640 480 -640 480 -429 640 -333 500 -640 427 -640 425 -640 480 -640 427 -640 427 -640 480 -640 424 -640 480 -500 341 -500 334 -640 480 -640 480 -640 426 -375 500 -640 427 -500 333 -640 480 -640 480 -338 500 -334 500 -640 427 -456 640 -500 375 -640 426 -426 640 -640 480 -480 640 -480 640 -500 332 -640 426 -640 427 -426 640 -480 640 -640 429 -640 480 -640 384 -640 427 -359 500 -640 384 -500 375 -444 295 -427 640 -640 429 -427 640 -500 374 -480 640 -423 640 -500 375 -640 480 -640 480 -640 360 -640 640 -640 449 -640 427 -640 480 -640 480 -640 360 -640 484 -640 480 -640 480 -640 428 -500 375 -511 640 -372 500 -640 480 -500 333 -640 427 -612 612 -640 400 -640 427 -426 640 -480 640 -640 480 -500 333 -640 427 -640 480 -640 421 -640 480 -425 640 -427 640 -640 428 -640 428 -640 480 -493 500 -640 427 -640 427 -640 480 -640 480 -640 480 -640 538 -640 427 -640 427 -640 478 -640 480 -640 480 -500 357 -640 480 -640 425 -640 426 -640 480 -500 375 -640 404 -375 500 -640 640 -640 426 -640 480 -480 640 -480 640 -640 426 -427 640 -640 480 -480 640 -423 640 -612 612 -640 446 -640 423 -640 480 -476 640 -640 511 -640 427 -640 480 -640 480 -640 480 -480 640 -640 480 -640 566 -427 640 -640 518 -640 427 -426 640 -480 640 -612 612 -480 640 -640 426 -480 640 -520 640 -333 500 -427 640 -640 431 -640 480 -640 427 -640 426 -500 375 -640 480 -640 428 -425 640 -640 427 -640 480 -640 427 -640 569 -640 480 -640 427 -500 334 -500 338 -640 428 -640 481 -640 428 -640 427 -640 427 -640 424 -640 427 -333 500 -640 555 -640 428 -640 427 -640 496 -640 427 -640 480 -640 427 -640 480 -480 640 -640 480 -349 500 -640 480 -640 425 -640 429 -640 480 -612 612 -375 500 -640 410 -640 480 -612 612 -500 375 -640 425 -640 427 -500 375 -500 375 -450 300 -640 480 -640 427 -480 640 -499 500 -480 640 -640 425 -640 379 -640 427 -640 640 -640 426 -480 640 -500 375 -640 480 -480 640 -640 480 -640 457 -612 612 -480 640 -640 415 -640 480 -476 640 -640 427 -333 500 -500 333 -640 480 -640 480 -612 612 -640 426 -513 640 -333 500 -375 500 -640 480 -640 415 -640 424 -529 640 -640 480 -500 375 -640 360 -640 427 -640 428 -640 480 -640 480 -640 480 -640 480 -640 480 -640 480 -640 360 -383 640 -640 383 -640 419 -500 334 -640 457 -480 640 -400 300 -640 425 -640 480 -640 428 -500 375 -640 427 -640 480 -640 429 -640 425 -640 480 -640 480 -500 333 -500 365 -500 281 -334 500 -640 427 -428 640 -640 426 -640 427 -500 375 -640 426 -640 437 -640 484 -640 426 -640 427 -375 500 -375 500 -429 640 -640 480 -640 428 -640 480 -640 480 -374 500 -640 427 -640 480 -640 428 -587 391 -640 480 -640 480 -640 480 -640 428 -640 360 -500 375 -640 394 -375 500 -640 427 -500 374 -427 640 -640 424 -640 603 -640 480 -640 427 -640 480 -640 462 -500 375 -640 427 -500 356 -640 480 -640 425 -513 640 -640 427 -640 480 -640 478 -480 640 -640 436 -640 427 -640 480 -640 479 -640 480 -640 427 -640 480 -640 428 -640 360 -427 640 -480 640 -512 640 -640 480 -640 480 -640 422 -640 428 -413 640 -640 399 -640 426 -640 428 -333 500 -427 640 -427 640 -640 426 -434 640 -640 409 -640 480 -640 427 -333 500 -640 437 -640 512 -480 640 -480 640 -640 468 -640 427 -500 331 -480 640 -640 480 -640 478 -377 500 -333 500 -480 640 -428 640 -640 480 -640 237 -640 426 -640 480 -640 494 -640 426 -640 360 -640 360 -426 640 -601 601 -500 375 -480 640 -640 480 -446 640 -500 375 -640 480 -640 426 -640 427 -640 427 -500 375 -640 425 -640 427 -479 640 -612 612 -640 427 -640 427 -500 368 -640 313 -500 386 -640 523 -612 612 -480 640 -480 640 -640 453 -640 480 -640 480 -428 640 -480 640 -640 159 -640 426 -640 451 -640 427 -640 480 -426 640 -480 640 -500 333 -426 640 -640 427 -500 333 -427 640 -480 640 -640 427 -480 640 -457 640 -640 425 -640 427 -500 338 -640 480 -427 640 -612 612 -500 334 -640 451 -640 621 -640 461 -500 375 -640 480 -640 425 -640 428 -640 360 -640 519 -640 458 -640 416 -500 375 -500 375 -640 480 -640 425 -640 480 -612 612 -640 480 -428 640 -640 528 -640 427 -640 480 -640 480 -640 456 -640 480 -500 375 -640 427 -640 479 -612 612 -640 360 -500 375 -640 480 -640 480 -640 480 -640 480 -500 375 -640 480 -640 427 -640 480 -500 375 -600 600 -640 359 -640 426 -640 427 -640 456 -500 375 -443 640 -399 500 -640 498 -640 426 -375 500 -640 480 -426 640 -640 427 -640 455 -480 640 -500 375 -500 373 -429 640 -640 480 -640 360 -500 375 -480 640 -640 426 -640 427 -640 480 -331 500 -640 640 -640 429 -640 367 -640 427 -640 428 -500 335 -640 426 -500 375 -427 640 -640 424 -640 428 -640 640 -640 471 -640 479 -640 327 -640 427 -640 480 -640 425 -640 480 -640 427 -480 640 -640 413 -640 427 -640 433 -640 480 -640 480 -418 640 -640 463 -640 589 -427 640 -640 485 -640 426 -640 426 -448 443 -497 500 -640 427 -333 500 -640 428 -640 425 -640 480 -640 480 -640 480 -500 334 -640 480 -640 427 -640 427 -640 480 -640 480 -640 428 -640 480 -640 427 -640 480 -640 425 -640 480 -640 427 -640 480 -640 480 -480 640 -640 426 -640 426 -566 640 -640 425 -640 480 -640 424 -640 426 -640 336 -640 428 -640 427 -640 305 -640 423 -427 640 -480 640 -640 543 -500 334 -640 427 -640 428 -640 480 -500 500 -640 425 -500 289 -640 480 -640 480 -640 427 -640 480 -640 427 -600 400 -500 375 -640 425 -640 457 -640 480 -480 640 -640 427 -429 640 -500 375 -640 429 -640 426 -480 640 -480 640 -640 480 -480 640 -640 480 -640 480 -426 640 -640 426 -640 480 -640 483 -640 480 -640 428 -480 640 -480 640 -640 480 -640 480 -640 480 -640 426 -640 428 -640 480 -640 290 -640 480 -640 480 -640 512 -640 474 -640 427 -375 500 -640 480 -640 523 -640 427 -640 480 -640 480 -640 519 -500 373 -640 480 -640 480 -640 480 -640 439 -640 427 -640 383 -640 370 -480 640 -500 333 -640 427 -500 375 -640 480 -612 612 -640 426 -640 480 -640 428 -640 634 -640 480 -598 640 -640 480 -640 428 -640 469 -640 480 -571 640 -500 376 -640 378 -640 428 -375 500 -640 424 -480 640 -500 335 -640 445 -640 427 -640 480 -640 384 -640 425 -427 640 -640 480 -640 214 -640 427 -640 480 -640 426 -640 480 -640 426 -427 640 -640 480 -480 640 -640 478 -640 424 -454 640 -491 640 -500 318 -640 445 -338 500 -336 500 -640 427 -370 462 -640 480 -640 401 -640 425 -640 313 -640 480 -640 480 -480 640 -480 640 -640 429 -640 480 -640 399 -640 427 -640 480 -426 640 -640 480 -640 465 -500 340 -640 414 -480 640 -640 479 -640 480 -640 360 -640 480 -413 640 -640 414 -500 332 -375 500 -500 375 -640 427 -640 425 -500 336 -512 640 -375 500 -640 427 -425 640 -428 640 -640 480 -640 480 -500 375 -425 640 -640 480 -640 480 -640 480 -427 640 -640 428 -640 359 -332 500 -640 480 -427 640 -640 480 -640 426 -640 424 -640 619 -640 480 -424 640 -640 480 -640 425 -640 480 -640 444 -640 429 -640 426 -480 640 -640 480 -640 567 -427 640 -640 427 -612 612 -425 640 -640 480 -425 640 -640 427 -640 428 -478 640 -640 360 -640 427 -480 640 -500 375 -640 423 -640 480 -614 640 -490 350 -480 640 -640 427 -640 360 -479 640 -427 640 -640 423 -375 500 -640 480 -640 354 -640 480 -640 427 -352 640 -612 612 -500 334 -500 375 -500 421 -640 480 -640 498 -640 480 -640 429 -640 480 -640 427 -640 427 -612 612 -640 480 -500 332 -640 429 -453 640 -640 427 -478 640 -640 478 -640 427 -428 640 -640 508 -612 612 -640 426 -640 428 -640 480 -427 640 -640 426 -612 612 -480 640 -640 481 -500 375 -640 509 diff --git a/utils/datasets.py b/utils/datasets.py index 2da23e64..6c5a10d8 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -282,7 +282,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Rectangular Training https://github.com/ultralytics/yolov3/issues/232 if self.rect: # Read image shapes - sp = 'data' + os.sep + path.replace('.txt', '.shapes').split(os.sep)[-1] # shapefile path + sp = path.replace('.txt', '.shapes') # shapefile path try: with open(sp, 'r') as f: # read existing shapefile s = [x.split() for x in f.read().splitlines()] diff --git a/utils/utils.py b/utils/utils.py index 12874262..2f7ee396 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -658,7 +658,7 @@ def coco_class_count(path='../coco/labels/train2014/'): print(i, len(files)) -def coco_only_people(path='../coco/labels/val2014/'): +def coco_only_people(path='../coco/labels/train2017/'): # from utils.utils import *; coco_only_people() # Find images with only people files = sorted(glob.glob('%s/*.*' % path)) for i, file in enumerate(files): From 64c1ac3357d6cb4dcff4c364f4d8a68d734c0ef9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Dec 2019 19:10:57 -0800 Subject: [PATCH 1768/2595] updates --- data/get_coco2014.sh | 4 ++-- data/get_coco2017.sh | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data/get_coco2014.sh b/data/get_coco2014.sh index 37335aeb..cb2fe21e 100755 --- a/data/get_coco2014.sh +++ b/data/get_coco2014.sh @@ -18,8 +18,8 @@ rm ${filename} # Download images cd coco/images -wget -c http://images.cocodataset.org/zips/train2014.zip -wget -c http://images.cocodataset.org/zips/val2014.zip +curl http://images.cocodataset.org/zips/train2014.zip -o train2014.zip +curl http://images.cocodataset.org/zips/val2014.zip -o val2014.zip # Unzip images unzip -q train2014.zip diff --git a/data/get_coco2017.sh b/data/get_coco2017.sh index ba24151d..69a29761 100755 --- a/data/get_coco2017.sh +++ b/data/get_coco2017.sh @@ -17,8 +17,8 @@ rm ${filename} # Download images cd coco/images -wget -c http://images.cocodataset.org/zips/train2017.zip -wget -c http://images.cocodataset.org/zips/val2017.zip +curl http://images.cocodataset.org/zips/train2017.zip -o train2017.zip +curl http://images.cocodataset.org/zips/val2017.zip -o val2017.zip # Unzip images unzip -q train2017.zip From 8638317bbb63a523c3711d185fd6511541239f63 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Dec 2019 19:13:06 -0800 Subject: [PATCH 1769/2595] updates --- data/coco2014.data | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 data/coco2014.data diff --git a/data/coco2014.data b/data/coco2014.data new file mode 100644 index 00000000..422a3005 --- /dev/null +++ b/data/coco2014.data @@ -0,0 +1,4 @@ +classes=80 +train=../coco/trainvalno5k.txt +valid=../coco/5k.txt +names=data/coco.names From 0b19d4eb3ddbeeb60b45598f3ee73e22d4f07dfd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Dec 2019 19:31:50 -0800 Subject: [PATCH 1770/2595] updates --- test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index a7001312..92aa2262 100644 --- a/test.py +++ b/test.py @@ -184,7 +184,7 @@ def test(cfg, print('WARNING: missing pycocotools package, can not compute official COCO mAP. See requirements.txt.') # https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocoEvalDemo.ipynb - cocoGt = COCO('../coco/annotations/instances_val2014.json') # initialize COCO ground truth api + cocoGt = COCO(glob.glob('../coco/annotations/instances_val*.json')[0]) # initialize COCO ground truth api cocoDt = cocoGt.loadRes('results.json') # initialize COCO pred api cocoEval = COCOeval(cocoGt, cocoDt, 'bbox') @@ -204,7 +204,7 @@ def test(cfg, if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data', type=str, default='data/coco.data', help='coco.data file path') + parser.add_argument('--data', type=str, default='data/coco2017.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') From fa7a5fea2b692d9856013a91f71bb1ceb13fc022 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Dec 2019 19:32:09 -0800 Subject: [PATCH 1771/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 92aa2262..caffb552 100644 --- a/test.py +++ b/test.py @@ -204,7 +204,7 @@ def test(cfg, if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data', type=str, default='data/coco2017.data', help='coco.data file path') + parser.add_argument('--data', type=str, default='data/coco.data', help='coco.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') From 9c11bfe7920c6885aba6bc0f95e1883d820993a3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Dec 2019 23:09:31 -0800 Subject: [PATCH 1772/2595] updates --- data/coco1.data | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/data/coco1.data b/data/coco1.data index d97252f2..3c04a659 100644 --- a/data/coco1.data +++ b/data/coco1.data @@ -1,6 +1,4 @@ classes=80 -train=./data/coco_1img.txt -valid=./data/coco_1img.txt +train=data/coco1.txt +valid=data/coco1.txt names=data/coco.names -backup=backup/ -eval=coco From c0a7ace766138d36293ec394a4838b265a619486 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Dec 2019 23:15:56 -0800 Subject: [PATCH 1773/2595] updates --- data/{coco2017.data => coco.data} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename data/{coco2017.data => coco.data} (100%) diff --git a/data/coco2017.data b/data/coco.data similarity index 100% rename from data/coco2017.data rename to data/coco.data From df1be4c74864aa4fa45d33b8596d9263d747d76e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 14 Dec 2019 14:49:18 -0800 Subject: [PATCH 1774/2595] updates --- requirements.txt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index a6d8b92e..dfb5cd90 100755 --- a/requirements.txt +++ b/requirements.txt @@ -7,11 +7,14 @@ pycocotools tqdm Pillow -# Tensorboard pip requirements ------------------------------------------------- +# Nvidia Apex (optional) for mixed precision training -------------------------- +# git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex + +# Tensorboard (optional) pip requirements -------------------------------------- # tb-nightly # future -# Equivalent conda commands ---------------------------------------------------- +# Conda commands (in place of pip) --------------------------------------------- # conda update -n base -c defaults conda # conda install -yc anaconda numpy opencv matplotlib tqdm pillow ipython future # conda install -yc conda-forge scikit-image pycocotools onnx tensorboard From ddaa2976d775356fe72daedc45b768131b3c8a34 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 14 Dec 2019 15:15:20 -0800 Subject: [PATCH 1775/2595] updates --- utils/utils.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 2f7ee396..a8b6975b 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -957,13 +957,18 @@ def plot_results_overlay(start=0, stop=0): # from utils.utils import *; plot_re fig.savefig(f.replace('.txt', '.png'), dpi=200) -def plot_results(start=0, stop=0): # from utils.utils import *; plot_results() +def plot_results(start=0, stop=0, bucket='', id=()): # from utils.utils import *; plot_results() # Plot training results files 'results*.txt' fig, ax = plt.subplots(2, 5, figsize=(14, 7)) ax = ax.ravel() s = ['GIoU', 'Objectness', 'Classification', 'Precision', 'Recall', 'val GIoU', 'val Objectness', 'val Classification', 'mAP@0.5', 'F1'] - for f in sorted(glob.glob('results*.txt') + glob.glob('../../Downloads/results*.txt')): + + if bucket: + files = ['https://storage.googleapis.com/%s/results%g.txt' % (bucket, x) for x in id] + else: + files = glob.glob('results*.txt') + glob.glob('../../Downloads/results*.txt') + for f in sorted(files): results = np.loadtxt(f, usecols=[2, 3, 4, 8, 9, 12, 13, 14, 10, 11], ndmin=2).T n = results.shape[1] # number of rows x = range(start, min(stop, n) if stop else n) From eb70e4b751b2b3bd2ce63ddbf140b31e26f2bd37 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 14 Dec 2019 15:15:43 -0800 Subject: [PATCH 1776/2595] updates --- utils/utils.py | 1 - 1 file changed, 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index a8b6975b..1525de9d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -963,7 +963,6 @@ def plot_results(start=0, stop=0, bucket='', id=()): # from utils.utils import ax = ax.ravel() s = ['GIoU', 'Objectness', 'Classification', 'Precision', 'Recall', 'val GIoU', 'val Objectness', 'val Classification', 'mAP@0.5', 'F1'] - if bucket: files = ['https://storage.googleapis.com/%s/results%g.txt' % (bucket, x) for x in id] else: From 8c13717f4855299f18456f872b6d1b503719fe1b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 14 Dec 2019 15:40:01 -0800 Subject: [PATCH 1777/2595] updates --- train.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index 4fece807..4c1eaeeb 100644 --- a/train.py +++ b/train.py @@ -208,7 +208,8 @@ def train(): # Test Dataloader if not opt.prebias: - testloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path, img_size, batch_size, hyp=hyp, + testloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path, opt.img_size, batch_size, + hyp=hyp, rect=True, cache_labels=True, cache_images=opt.cache_images), From 8164b305e56bf84a363f9b277e756425c74fe819 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 14 Dec 2019 15:45:40 -0800 Subject: [PATCH 1778/2595] updates --- .dockerignore | 1 + .gitignore | 1 + 2 files changed, 2 insertions(+) diff --git a/.dockerignore b/.dockerignore index ce28aaba..5798fc6b 100644 --- a/.dockerignore +++ b/.dockerignore @@ -5,6 +5,7 @@ runs output coco +storage.googleapis.com data/samples/* !data/samples/zidane.jpg diff --git a/.gitignore b/.gitignore index 518a16be..a47bd3e4 100755 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ *.cfg !cfg/yolov3*.cfg +storage.googleapis.com runs/* data/* !data/samples/zidane.jpg From 03b5408e708ce6ce48b568111f4620b30fca9272 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 15 Dec 2019 12:15:56 -0800 Subject: [PATCH 1779/2595] updates --- utils/datasets.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 6c5a10d8..b88b769c 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -16,6 +16,7 @@ from tqdm import tqdm from utils.utils import xyxy2xywh, xywh2xyxy +help_url = 'https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data' img_formats = ['.bmp', '.jpg', '.jpeg', '.png', '.tif', '.dng'] vid_formats = ['.mov', '.avi', '.mp4'] @@ -258,14 +259,15 @@ class LoadImagesAndLabels(Dataset): # for training/testing def __init__(self, path, img_size=416, batch_size=16, augment=False, hyp=None, rect=False, image_weights=False, cache_labels=False, cache_images=False): path = str(Path(path)) # os-agnostic + assert os.path.isfile(path), 'File not found %s. See %s' % (path, help_url) with open(path, 'r') as f: self.img_files = [x.replace('/', os.sep) for x in f.read().splitlines() # os-agnostic if os.path.splitext(x)[-1].lower() in img_formats] n = len(self.img_files) + assert n > 0, 'No images found in %s. See %s' % (path, help_url) bi = np.floor(np.arange(n) / batch_size).astype(np.int) # batch index nb = bi[-1] + 1 # number of batches - assert n > 0, 'No images found in %s' % path self.n = n self.batch = bi # batch index of image @@ -375,7 +377,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing pbar.desc = 'Caching labels (%g found, %g missing, %g empty, %g duplicate, for %g images)' % ( nf, nm, ne, nd, n) - assert nf > 0, 'No labels found. Recommend correcting image and label paths.' + assert nf > 0, 'No labels found. See %s' % help_url # Cache images into memory for faster training (WARNING: Large datasets may exceed system RAM) if cache_images: # if training From d884c33d2116fc4f021751e6bd94873f2ea80d28 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 15 Dec 2019 12:43:30 -0800 Subject: [PATCH 1780/2595] updates --- data/{coco.data => coco2017.data} | 0 detect.py | 2 +- test.py | 4 ++-- train.py | 5 +++-- 4 files changed, 6 insertions(+), 5 deletions(-) rename data/{coco.data => coco2017.data} (100%) diff --git a/data/coco.data b/data/coco2017.data similarity index 100% rename from data/coco.data rename to data/coco2017.data diff --git a/detect.py b/detect.py index 6da45c3b..21ce7716 100644 --- a/detect.py +++ b/detect.py @@ -155,7 +155,7 @@ def detect(save_txt=False, save_img=False): if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data', type=str, default='data/coco.data', help='coco.data file path') + parser.add_argument('--data', type=str, default='data/coco2017.data', help='*.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--source', type=str, default='data/samples', help='source') # input file/folder, 0 for webcam parser.add_argument('--output', type=str, default='output', help='output folder') # output folder diff --git a/test.py b/test.py index caffb552..3cc52dd7 100644 --- a/test.py +++ b/test.py @@ -204,7 +204,7 @@ def test(cfg, if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data', type=str, default='data/coco.data', help='coco.data file path') + parser.add_argument('--data', type=str, default='data/coco2017.data', help='*.data file path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') @@ -225,4 +225,4 @@ if __name__ == '__main__': opt.iou_thres, opt.conf_thres, opt.nms_thres, - opt.save_json or (opt.data == 'data/coco.data')) + opt.save_json or any([x in opt.data for x in ['coco.data', 'coco2014.data', 'coco2017.data']])) diff --git a/train.py b/train.py index 4c1eaeeb..329d9443 100644 --- a/train.py +++ b/train.py @@ -324,13 +324,14 @@ def train(): print_model_biases(model) elif not opt.notest or final_epoch: # Calculate mAP with torch.no_grad(): + is_coco = any([x in data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) and model.nc == 80 results, maps = test.test(cfg, data, batch_size=batch_size, img_size=opt.img_size, model=model, conf_thres=0.001 if final_epoch else 0.1, # 0.1 for speed - save_json=final_epoch and 'coco.data' in data and model.nc == 80, + save_json=final_epoch and is_coco, dataloader=testloader) # Write epoch results @@ -419,7 +420,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=16) # effective bs = batch_size * accumulate = 16 * 4 = 64 parser.add_argument('--accumulate', type=int, default=4, help='batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data', type=str, default='data/coco.data', help='*.data file path') + parser.add_argument('--data', type=str, default='data/coco2017.data', help='*.data file path') parser.add_argument('--multi-scale', action='store_true', help='adjust (67% - 150%) img_size every 10 batches') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--rect', action='store_true', help='rectangular training') From 87c5e43e8cd9c17f74d24dfcf0ca22caba3845fd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 15 Dec 2019 12:47:53 -0800 Subject: [PATCH 1781/2595] updates --- detect.py | 14 +++++++------- test.py | 4 ++-- train.py | 4 ++-- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/detect.py b/detect.py index 21ce7716..4189bd86 100644 --- a/detect.py +++ b/detect.py @@ -67,9 +67,9 @@ def detect(save_txt=False, save_img=False): save_img = True dataset = LoadImages(source, img_size=img_size, half=half) - # Get classes and colors - classes = load_classes(parse_data_cfg(opt.data)['names']) - colors = [[random.randint(0, 255) for _ in range(3)] for _ in range(len(classes))] + # Get names and colors + names = load_classes(opt.names) + colors = [[random.randint(0, 255) for _ in range(3)] for _ in range(len(names))] # Run inference t0 = time.time() @@ -108,7 +108,7 @@ def detect(save_txt=False, save_img=False): # Print results for c in det[:, -1].unique(): n = (det[:, -1] == c).sum() # detections per class - s += '%g %ss, ' % (n, classes[int(c)]) # add to string + s += '%g %ss, ' % (n, names[int(c)]) # add to string # Write results for *xyxy, conf, _, cls in det: @@ -117,7 +117,7 @@ def detect(save_txt=False, save_img=False): file.write(('%g ' * 6 + '\n') % (*xyxy, cls, conf)) if save_img or view_img: # Add bbox to image - label = '%s %.2f' % (classes[int(cls)], conf) + label = '%s %.2f' % (names[int(cls)], conf) plot_one_box(xyxy, im0, label=label, color=colors[int(cls)]) print('%sDone. (%.3fs)' % (s, time.time() - t)) @@ -154,8 +154,8 @@ def detect(save_txt=False, save_img=False): if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data', type=str, default='data/coco2017.data', help='*.data file path') + parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path') + parser.add_argument('--names', type=str, default='data/coco.names', help='*.names path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--source', type=str, default='data/samples', help='source') # input file/folder, 0 for webcam parser.add_argument('--output', type=str, default='output', help='output folder') # output folder diff --git a/test.py b/test.py index 3cc52dd7..4274d0a6 100644 --- a/test.py +++ b/test.py @@ -203,8 +203,8 @@ def test(cfg, if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') - parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data', type=str, default='data/coco2017.data', help='*.data file path') + parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path') + parser.add_argument('--data', type=str, default='data/coco2017.data', help='*.data path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') diff --git a/train.py b/train.py index 329d9443..47defa37 100644 --- a/train.py +++ b/train.py @@ -419,8 +419,8 @@ if __name__ == '__main__': parser.add_argument('--epochs', type=int, default=273) # 500200 batches at bs 16, 117263 images = 273 epochs parser.add_argument('--batch-size', type=int, default=16) # effective bs = batch_size * accumulate = 16 * 4 = 64 parser.add_argument('--accumulate', type=int, default=4, help='batches to accumulate before optimizing') - parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='cfg file path') - parser.add_argument('--data', type=str, default='data/coco2017.data', help='*.data file path') + parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path') + parser.add_argument('--data', type=str, default='data/coco2017.data', help='*.data path') parser.add_argument('--multi-scale', action='store_true', help='adjust (67% - 150%) img_size every 10 batches') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--rect', action='store_true', help='rectangular training') From 9064d42b93aae66fddfc99d310c4834a8a357c8e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 15 Dec 2019 21:10:40 -0800 Subject: [PATCH 1782/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index bff616e0..da6a23bb 100755 --- a/models.py +++ b/models.py @@ -84,7 +84,7 @@ def create_modules(module_defs, img_size, arc): if arc == 'defaultpw' or arc == 'Fdefaultpw': # default with positive weights b = [-4, -3.6] # obj, cls elif arc == 'default': # default no pw (40 cls, 80 obj) - b = [-5.5, -4.0] + b = [-5.5, -5.0] elif arc == 'uBCE': # unified BCE (80 classes) b = [0, -8.5] elif arc == 'uCE': # unified CE (1 background + 80 classes) From d7b010c51414922554dc8bc523756070690d844d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Dec 2019 15:49:15 -0800 Subject: [PATCH 1783/2595] updates --- test.py | 21 ++++++++++++--------- utils/utils.py | 39 +++++++++++++++++---------------------- 2 files changed, 29 insertions(+), 31 deletions(-) diff --git a/test.py b/test.py index 4274d0a6..e23081db 100644 --- a/test.py +++ b/test.py @@ -13,7 +13,6 @@ def test(cfg, weights=None, batch_size=16, img_size=416, - iou_thres=0.5, conf_thres=0.001, nms_thres=0.5, save_json=False, @@ -49,6 +48,9 @@ def test(cfg, nc = int(data['classes']) # number of classes test_path = data['valid'] # path to test images names = load_classes(data['names']) # class names + iou_thres = torch.linspace(0.5, 0.95, 10).to(device) # for mAP@0.5:0.95 + iou_thres = iou_thres[0].view(1) # for mAP@0.5 + niou = iou_thres.numel() # Dataloader if dataloader is None: @@ -120,7 +122,7 @@ def test(cfg, clip_coords(pred, (height, width)) # Assign all predictions as incorrect - correct = [0] * len(pred) + correct = torch.zeros(len(pred), niou) if nl: detected = [] tcls_tensor = labels[:, 0] @@ -143,12 +145,13 @@ def test(cfg, # Best iou, index between pred and targets m = (pcls == tcls_tensor).nonzero().view(-1) - iou, bi = bbox_iou(pbox, tbox[m]).max(0) + iou, j = bbox_iou(pbox, tbox[m]).max(0) + m = m[j] - # If iou > threshold and class is correct mark as correct - if iou > iou_thres and m[bi] not in detected: # and pcls == tcls[bi]: - correct[i] = 1 - detected.append(m[bi]) + # Per iou_thres 'correct' vector + if iou > iou_thres[0] and m not in detected: + detected.append(m) + correct[i] = iou > iou_thres # Append statistics (correct, conf, pcls, tcls) stats.append((correct, pred[:, 4].cpu(), pred[:, 6].cpu(), tcls)) @@ -157,6 +160,8 @@ def test(cfg, stats = [np.concatenate(x, 0) for x in list(zip(*stats))] # to numpy if len(stats): p, r, ap, f1, ap_class = ap_per_class(*stats) + # if niou > 1: + # p, r, ap, f1 = p[:, 0], r[:, 0], ap[:, 0], ap.mean(1) # average across ious mp, mr, map, mf1 = p.mean(), r.mean(), ap.mean(), f1.mean() nt = np.bincount(stats[3].astype(np.int64), minlength=nc) # number of targets per class else: @@ -208,7 +213,6 @@ if __name__ == '__main__': parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') - parser.add_argument('--iou-thres', type=float, default=0.5, help='iou threshold required to qualify as detected') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') parser.add_argument('--save-json', action='store_true', help='save a cocoapi-compatible JSON results file') @@ -222,7 +226,6 @@ if __name__ == '__main__': opt.weights, opt.batch_size, opt.img_size, - opt.iou_thres, opt.conf_thres, opt.nms_thres, opt.save_json or any([x in opt.data for x in ['coco.data', 'coco2014.data', 'coco2017.data']])) diff --git a/utils/utils.py b/utils/utils.py index 1525de9d..67953488 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -152,10 +152,10 @@ def ap_per_class(tp, conf, pred_cls, target_cls): """ Compute the average precision, given the recall and precision curves. Source: https://github.com/rafaelpadilla/Object-Detection-Metrics. # Arguments - tp: True positives (list). - conf: Objectness value from 0-1 (list). - pred_cls: Predicted object classes (list). - target_cls: True object classes (list). + tp: True positives (nparray, nx1 or nx10). + conf: Objectness value from 0-1 (nparray). + pred_cls: Predicted object classes (nparray). + target_cls: True object classes (nparray). # Returns The average precision as computed in py-faster-rcnn. """ @@ -168,46 +168,41 @@ def ap_per_class(tp, conf, pred_cls, target_cls): unique_classes = np.unique(target_cls) # Create Precision-Recall curve and compute AP for each class - ap, p, r = [], [], [] - for c in unique_classes: + s = [len(unique_classes), tp.shape[1]] # number class, number iou thresholds (i.e. 10 for mAP0.5...0.95) + ap, p, r = np.zeros(s), np.zeros(s), np.zeros(s) + for ci, c in enumerate(unique_classes): i = pred_cls == c - n_gt = (target_cls == c).sum() # Number of ground truth objects - n_p = i.sum() # Number of predicted objects + n_gt = sum(target_cls == c) # Number of ground truth objects + n_p = sum(i) # Number of predicted objects - if n_p == 0 and n_gt == 0: + if n_p == 0 or n_gt == 0: continue - elif n_p == 0 or n_gt == 0: - ap.append(0) - r.append(0) - p.append(0) else: # Accumulate FPs and TPs - fpc = (1 - tp[i]).cumsum() - tpc = (tp[i]).cumsum() + fpc = (1 - tp[i]).cumsum(0) + tpc = tp[i].cumsum(0) # Recall recall = tpc / (n_gt + 1e-16) # recall curve - r.append(recall[-1]) + r[ci] = recall[-1] # Precision precision = tpc / (tpc + fpc) # precision curve - p.append(precision[-1]) + p[ci] = precision[-1] # AP from recall-precision curve - ap.append(compute_ap(recall, precision)) + for j in range(tp.shape[1]): + ap[ci, j] = compute_ap(recall[:, j], precision[:, j]) # Plot # fig, ax = plt.subplots(1, 1, figsize=(4, 4)) # ax.plot(np.concatenate(([0.], recall)), np.concatenate(([0.], precision))) - # ax.set_xlabel('YOLOv3-SPP') - # ax.set_xlabel('Recall') - # ax.set_ylabel('Precision') + # ax.set_title('YOLOv3-SPP'); ax.set_xlabel('Recall'); ax.set_ylabel('Precision') # ax.set_xlim(0, 1) # fig.tight_layout() # fig.savefig('PR_curve.png', dpi=300) # Compute F1 score (harmonic mean of precision and recall) - p, r, ap = np.array(p), np.array(r), np.array(ap) f1 = 2 * p * r / (p + r + 1e-16) return p, r, ap, f1, unique_classes.astype('int32') From 8666413c47be06697e63ddf6fdfb5f908fb2eacf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Dec 2019 16:29:40 -0800 Subject: [PATCH 1784/2595] updates --- test.py | 2 +- utils/utils.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index e23081db..5d14c4e7 100644 --- a/test.py +++ b/test.py @@ -197,7 +197,7 @@ def test(cfg, cocoEval.evaluate() cocoEval.accumulate() cocoEval.summarize() - map = cocoEval.stats[1] # update mAP to pycocotools mAP + mf1, map = cocoEval.stats[:2] # update to pycocotools results (mAP@0.5:0.95, mAP@0.5) # Return results maps = np.zeros(nc) + map diff --git a/utils/utils.py b/utils/utils.py index 67953488..793bf6ce 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -810,7 +810,7 @@ def apply_classifier(x, model, img, im0): def fitness(x): # Returns fitness (for use with results.txt or evolve.txt) - return x[:, 2] * 0.8 + x[:, 3] * 0.2 # weighted mAP and F1 combination + return x[:, 2] * 0.5 + x[:, 3] * 0.5 # weighted combination of x=[p, r, mAP@0.5, F1 or mAP@0.5:0.95] # Plotting functions --------------------------------------------------------------------------------------------------- From 9c03ac3b744f1b9b76f58e812493b1a0fddac470 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Dec 2019 16:36:12 -0800 Subject: [PATCH 1785/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 793bf6ce..e077d894 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -810,7 +810,7 @@ def apply_classifier(x, model, img, im0): def fitness(x): # Returns fitness (for use with results.txt or evolve.txt) - return x[:, 2] * 0.5 + x[:, 3] * 0.5 # weighted combination of x=[p, r, mAP@0.5, F1 or mAP@0.5:0.95] + return x[:, 2] * 0.1 + x[:, 3] * 0.9 # weighted combination of x=[p, r, mAP@0.5, F1 or mAP@0.5:0.95] # Plotting functions --------------------------------------------------------------------------------------------------- From ecce92d5d8b9cc918bc75019b507e69f24389e40 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Dec 2019 22:18:26 -0800 Subject: [PATCH 1786/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 5d14c4e7..7472fa98 100644 --- a/test.py +++ b/test.py @@ -97,7 +97,7 @@ def test(cfg, if pred is None: if nl: - stats.append(([], torch.Tensor(), torch.Tensor(), tcls)) + stats.append((torch.zeros(0, 1), torch.Tensor(), torch.Tensor(), tcls)) continue # Append to text file From a5677d3f90dc01b5da8bf364f549e6deb1878136 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 17 Dec 2019 10:14:18 -0800 Subject: [PATCH 1787/2595] updates --- utils/utils.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index e077d894..d7b27171 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -466,7 +466,10 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): Returns detections with shape: (x1, y1, x2, y2, object_conf, class_conf, class) """ + # NMS method https://github.com/ultralytics/yolov3/issues/679 'OR', 'AND', 'MERGE', 'VISION', 'VISION_BATCHED' + method = 'MERGE' if conf_thres <= 0.01 else 'VISION' # MERGE is highest mAP, VISION is fastest + # Box constraints min_wh, max_wh = 2, 10000 # (pixels) minimum and maximium box width and height output = [None] * len(prediction) @@ -516,10 +519,6 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): # Get detections sorted by decreasing confidence scores pred = pred[(-pred[:, 4]).argsort()] - # Set NMS method https://github.com/ultralytics/yolov3/issues/679 - # 'OR', 'AND', 'MERGE', 'VISION', 'VISION_BATCHED' - method = 'MERGE' if conf_thres <= 0.01 else 'VISION' # MERGE is highest mAP, VISION is fastest - # Batched NMS if method == 'VISION_BATCHED': i = torchvision.ops.boxes.batched_nms(boxes=pred[:, :4], From adc2663fe70aee3bb286dc79e9fe6eec20a47f87 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 17 Dec 2019 12:26:42 -0800 Subject: [PATCH 1788/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index da6a23bb..65bc20c2 100755 --- a/models.py +++ b/models.py @@ -86,7 +86,7 @@ def create_modules(module_defs, img_size, arc): elif arc == 'default': # default no pw (40 cls, 80 obj) b = [-5.5, -5.0] elif arc == 'uBCE': # unified BCE (80 classes) - b = [0, -8.5] + b = [0, -9.0] elif arc == 'uCE': # unified CE (1 background + 80 classes) b = [10, -0.1] elif arc == 'Fdefault': # Focal default no pw (28 cls, 21 obj, no pw) From 8385f613d24f7bd7f0cf3a599835098951dfacbd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 18 Dec 2019 09:45:34 -0800 Subject: [PATCH 1789/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 47defa37..49bd789b 100644 --- a/train.py +++ b/train.py @@ -485,7 +485,7 @@ if __name__ == '__main__': # Mutate np.random.seed(int(time.time())) - s = [.2, .2, .2, .2, .2, .2, .2, .0, .02, .2, .2, .2, .2, .2, .2, .2, .2, .2] # sigmas + s = np.array([1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 1, 1, 1, 1, 1, 1, 1, 1]) * 0.2 # sigmas for i, k in enumerate(hyp.keys()): x = (np.random.randn(1) * s[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) hyp[k] *= float(x) # vary by sigmas From ad73ce43341db6809e7d2cf3a0720b39f73eeb3b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 18 Dec 2019 10:24:10 -0800 Subject: [PATCH 1790/2595] updates --- train.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 49bd789b..3aeffe71 100644 --- a/train.py +++ b/train.py @@ -472,7 +472,7 @@ if __name__ == '__main__': if os.path.exists('evolve.txt'): # if evolve.txt exists: select best hyps and mutate # Select parent(s) x = np.loadtxt('evolve.txt', ndmin=2) - parent = 'weighted' # parent selection method: 'single' or 'weighted' + parent = 'single' # parent selection method: 'single' or 'weighted' if parent == 'single' or len(x) == 1: x = x[fitness(x).argmax()] elif parent == 'weighted': # weighted combination @@ -485,9 +485,10 @@ if __name__ == '__main__': # Mutate np.random.seed(int(time.time())) - s = np.array([1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 1, 1, 1, 1, 1, 1, 1, 1]) * 0.2 # sigmas + s = np.random.random() * 0.3 # sigma + g = [1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 1, 1, 1, 1, 1, 1, 1, 1] # gains for i, k in enumerate(hyp.keys()): - x = (np.random.randn(1) * s[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) + x = (np.random.randn() * s * g[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) hyp[k] *= float(x) # vary by sigmas # Clip to limits From eac2c010c461a2dffef211435dc27c8e6b34b321 Mon Sep 17 00:00:00 2001 From: Marc Date: Wed, 18 Dec 2019 16:13:20 -0500 Subject: [PATCH 1791/2595] return kmeans targets (#722) return kmeans targets --- utils/utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/utils.py b/utils/utils.py index d7b27171..6c6901fc 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -751,6 +751,7 @@ def kmeans_targets(path='../coco/trainvalno5k.txt', n=9, img_size=416): # from # Plot # plt.hist(biou.numpy().ravel(), 100) + return k def print_mutation(hyp, results, bucket=''): From f5cd3596f5e0eb9f69f457a21ebea12a76d5c521 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Dec 2019 18:09:13 -0800 Subject: [PATCH 1792/2595] updates --- detect.py | 2 +- models.py | 19 ++++++++++++------- test.py | 8 ++++---- utils/utils.py | 38 +++++++++++++------------------------- 4 files changed, 30 insertions(+), 37 deletions(-) diff --git a/detect.py b/detect.py index 4189bd86..051ca6fc 100644 --- a/detect.py +++ b/detect.py @@ -111,7 +111,7 @@ def detect(save_txt=False, save_img=False): s += '%g %ss, ' % (n, names[int(c)]) # add to string # Write results - for *xyxy, conf, _, cls in det: + for *xyxy, conf, cls in det: if save_txt: # Write to file with open(save_path + '.txt', 'a') as file: file.write(('%g ' * 6 + '\n') % (*xyxy, cls, conf)) diff --git a/models.py b/models.py index 65bc20c2..d540981a 100755 --- a/models.py +++ b/models.py @@ -149,8 +149,10 @@ class YOLOLayer(nn.Module): self.anchors = torch.Tensor(anchors) self.na = len(anchors) # number of anchors (3) self.nc = nc # number of classes (80) + self.no = nc + 5 # number of outputs self.nx = 0 # initialize number of x gridpoints self.ny = 0 # initialize number of y gridpoints + self.oi = [0, 1, 2, 3] + list(range(5, self.no)) # output indices self.arc = arc if ONNX_EXPORT: # grids must be computed in __init__ @@ -168,7 +170,7 @@ class YOLOLayer(nn.Module): create_grids(self, img_size, (nx, ny), p.device, p.dtype) # p.view(bs, 255, 13, 13) -- > (bs, 3, 13, 13, 85) # (bs, anchors, grid, grid, classes + xywh) - p = p.view(bs, self.na, self.nc + 5, self.ny, self.nx).permute(0, 1, 3, 4, 2).contiguous() # prediction + p = p.view(bs, self.na, self.no, self.ny, self.nx).permute(0, 1, 3, 4, 2).contiguous() # prediction if self.training: return p @@ -180,18 +182,18 @@ class YOLOLayer(nn.Module): grid_xy = self.grid_xy.repeat((1, self.na, 1, 1, 1)).view(1, m, 2) anchor_wh = self.anchor_wh.repeat((1, 1, self.nx, self.ny, 1)).view(1, m, 2) / ngu - p = p.view(m, 5 + self.nc) + p = p.view(m, self.no) xy = torch.sigmoid(p[..., 0:2]) + grid_xy[0] # x, y wh = torch.exp(p[..., 2:4]) * anchor_wh[0] # width, height p_conf = torch.sigmoid(p[:, 4:5]) # Conf - p_cls = F.softmax(p[:, 5:5 + self.nc], 1) * p_conf # SSD-like conf + p_cls = F.softmax(p[:, 5:self.no], 1) * p_conf # SSD-like conf return torch.cat((xy / ngu[0], wh, p_conf, p_cls), 1).t() - # p = p.view(1, m, 5 + self.nc) + # p = p.view(1, m, self.no) # xy = torch.sigmoid(p[..., 0:2]) + grid_xy # x, y # wh = torch.exp(p[..., 2:4]) * anchor_wh # width, height # p_conf = torch.sigmoid(p[..., 4:5]) # Conf - # p_cls = p[..., 5:5 + self.nc] + # p_cls = p[..., 5:self.no] # # Broadcasting only supported on first dimension in CoreML. See onnx-coreml/_operators.py # # p_cls = F.softmax(p_cls, 2) * p_conf # SSD-like conf # p_cls = torch.exp(p_cls).permute((2, 1, 0)) @@ -219,8 +221,11 @@ class YOLOLayer(nn.Module): if self.nc == 1: io[..., 5] = 1 # single-class model https://github.com/ultralytics/yolov3/issues/235 - # reshape from [1, 3, 13, 13, 85] to [1, 507, 85] - return io.view(bs, -1, 5 + self.nc), p + # compute conf + io[..., 5:] *= io[..., 4:5] # conf = obj_conf * cls_conf + + # reshape from [1, 3, 13, 13, 85] to [1, 507, 84], remove obj_conf + return io[..., self.oi].view(bs, -1, self.no - 1), p class Darknet(nn.Module): diff --git a/test.py b/test.py index 7472fa98..7e38acf8 100644 --- a/test.py +++ b/test.py @@ -114,7 +114,7 @@ def test(cfg, box[:, :2] -= box[:, 2:] / 2 # xy center to top-left corner for di, d in enumerate(pred): jdict.append({'image_id': image_id, - 'category_id': coco91class[int(d[6])], + 'category_id': coco91class[int(d[5])], 'bbox': [floatn(x, 3) for x in box[di]], 'score': floatn(d[4], 5)}) @@ -133,7 +133,7 @@ def test(cfg, tbox[:, [1, 3]] *= height # Search for correct predictions - for i, (*pbox, pconf, pcls_conf, pcls) in enumerate(pred): + for i, (*pbox, _, pcls) in enumerate(pred): # Break if all targets already located in image if len(detected) == nl: @@ -154,7 +154,7 @@ def test(cfg, correct[i] = iou > iou_thres # Append statistics (correct, conf, pcls, tcls) - stats.append((correct, pred[:, 4].cpu(), pred[:, 6].cpu(), tcls)) + stats.append((correct, pred[:, 4].cpu(), pred[:, 5].cpu(), tcls)) # Compute statistics stats = [np.concatenate(x, 0) for x in list(zip(*stats))] # to numpy @@ -209,7 +209,7 @@ def test(cfg, if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path') - parser.add_argument('--data', type=str, default='data/coco2017.data', help='*.data path') + parser.add_argument('--data', type=str, default='data/coco2014.data', help='*.data path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') diff --git a/utils/utils.py b/utils/utils.py index d7b27171..c3c3e926 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -464,7 +464,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): Removes detections with lower object confidence score than 'conf_thres' Non-Maximum Suppression to further filter detections. Returns detections with shape: - (x1, y1, x2, y2, object_conf, class_conf, class) + (x1, y1, x2, y2, object_conf, conf, class) """ # NMS method https://github.com/ultralytics/yolov3/issues/679 'OR', 'AND', 'MERGE', 'VISION', 'VISION_BATCHED' method = 'MERGE' if conf_thres <= 0.01 else 'VISION' # MERGE is highest mAP, VISION is fastest @@ -474,47 +474,35 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): output = [None] * len(prediction) for image_i, pred in enumerate(prediction): - # Experiment: Prior class size rejection - # x, y, w, h = pred[:, 0], pred[:, 1], pred[:, 2], pred[:, 3] - # a = w * h # area - # ar = w / (h + 1e-16) # aspect ratio - # n = len(w) - # log_w, log_h, log_a, log_ar = torch.log(w), torch.log(h), torch.log(a), torch.log(ar) - # shape_likelihood = np.zeros((n, 60), dtype=np.float32) - # x = np.concatenate((log_w.reshape(-1, 1), log_h.reshape(-1, 1)), 1) - # from scipy.stats import multivariate_normal - # for c in range(60): - # shape_likelihood[:, c] = - # multivariate_normal.pdf(x, mean=mat['class_mu'][c, :2], cov=mat['class_cov'][c, :2, :2]) + # Duplicate ambiguous + # b = pred[pred[:, 5:].sum(1) > 1.1] + # if len(b): + # b[range(len(b)), 5 + b[:, 5:].argmax(1)] = 0 + # pred = torch.cat((pred, b), 0) # Multiply conf by class conf to get combined confidence - class_conf, class_pred = pred[:, 5:].max(1) - pred[:, 4] *= class_conf + conf, cls = pred[:, 4:].max(1) # # Merge classes (optional) - # class_pred[(class_pred.view(-1,1) == torch.LongTensor([2, 3, 5, 6, 7]).view(1,-1)).any(1)] = 2 + # cls[(cls.view(-1,1) == torch.LongTensor([2, 3, 5, 6, 7]).view(1,-1)).any(1)] = 2 # # # Remove classes (optional) - # pred[class_pred != 2, 4] = 0.0 + # pred[cls != 2, 4] = 0.0 # Select only suitable predictions - i = (pred[:, 4] > conf_thres) & (pred[:, 2:4] > min_wh).all(1) & (pred[:, 2:4] < max_wh).all(1) & \ - torch.isfinite(pred).all(1) + i = (conf > conf_thres) & (pred[:, 2:4] > min_wh).all(1) & (pred[:, 2:4] < max_wh).all(1) & torch.isfinite( + pred).all(1) pred = pred[i] # If none are remaining => process next image if len(pred) == 0: continue - # Select predicted classes - class_conf = class_conf[i] - class_pred = class_pred[i].unsqueeze(1).float() - # Box (center x, center y, width, height) to (x1, y1, x2, y2) pred[:, :4] = xywh2xyxy(pred[:, :4]) - # Detections ordered as (x1y1x2y2, obj_conf, class_conf, class_pred) - pred = torch.cat((pred[:, :5], class_conf.unsqueeze(1), class_pred), 1) + # Detections ordered as (x1y1x2y2, conf, cls) + pred = torch.cat((pred[:, :4], conf[i].unsqueeze(1), cls[i].unsqueeze(1).float()), 1) # Get detections sorted by decreasing confidence scores pred = pred[(-pred[:, 4]).argsort()] From 674d0de1701780109f8122d7d83f387bb376e1ed Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Dec 2019 18:32:45 -0800 Subject: [PATCH 1793/2595] updates --- utils/utils.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 2e54870e..54adc05e 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -501,8 +501,13 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): # Box (center x, center y, width, height) to (x1, y1, x2, y2) pred[:, :4] = xywh2xyxy(pred[:, :4]) - # Detections ordered as (x1y1x2y2, conf, cls) - pred = torch.cat((pred[:, :4], conf[i].unsqueeze(1), cls[i].unsqueeze(1).float()), 1) + # Expand + expand = False + if expand: + i, j = (pred[:, 4:] > conf_thres).nonzero().t() + pred = torch.cat((pred[i, :4], pred[i, j].unsqueeze(1), j.float().unsqueeze(1)), 1) # (x1y1x2y2, conf, cls) + else: + pred = torch.cat((pred[:, :4], conf[i].unsqueeze(1), cls[i].unsqueeze(1).float()), 1) # Get detections sorted by decreasing confidence scores pred = pred[(-pred[:, 4]).argsort()] From aaaaa0615685c77db33bf1c263a4b5bf7bf06f8b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Dec 2019 18:55:48 -0800 Subject: [PATCH 1794/2595] updates --- utils/utils.py | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 54adc05e..c396be03 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -459,15 +459,15 @@ def build_targets(model, targets): return tcls, tbox, indices, av -def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): +def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=True, method='vision'): """ Removes detections with lower object confidence score than 'conf_thres' Non-Maximum Suppression to further filter detections. Returns detections with shape: (x1, y1, x2, y2, object_conf, conf, class) """ - # NMS method https://github.com/ultralytics/yolov3/issues/679 'OR', 'AND', 'MERGE', 'VISION', 'VISION_BATCHED' - method = 'MERGE' if conf_thres <= 0.01 else 'VISION' # MERGE is highest mAP, VISION is fastest + # NMS method https://github.com/ultralytics/yolov3/issues/679 'or', 'and', 'merge', 'vision', 'vision_batch' + # method = 'merge' if conf_thres <= 0.01 else 'vision' # MERGE is highest mAP, VISION is fastest # Box constraints min_wh, max_wh = 2, 10000 # (pixels) minimum and maximium box width and height @@ -501,19 +501,18 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): # Box (center x, center y, width, height) to (x1, y1, x2, y2) pred[:, :4] = xywh2xyxy(pred[:, :4]) - # Expand - expand = False - if expand: + # Multi-class + if multi_cls: i, j = (pred[:, 4:] > conf_thres).nonzero().t() - pred = torch.cat((pred[i, :4], pred[i, j].unsqueeze(1), j.float().unsqueeze(1)), 1) # (x1y1x2y2, conf, cls) + pred = torch.cat((pred[i, :4], pred[i, j + 4].unsqueeze(1), j.float().unsqueeze(1)), 1) else: - pred = torch.cat((pred[:, :4], conf[i].unsqueeze(1), cls[i].unsqueeze(1).float()), 1) + pred = torch.cat((pred[:, :4], conf[i].unsqueeze(1), cls[i].unsqueeze(1).float()), 1) # (xyxy, conf, cls) # Get detections sorted by decreasing confidence scores pred = pred[(-pred[:, 4]).argsort()] # Batched NMS - if method == 'VISION_BATCHED': + if method == 'vision_batch': i = torchvision.ops.boxes.batched_nms(boxes=pred[:, :4], scores=pred[:, 4], idxs=pred[:, 6], @@ -532,11 +531,11 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): elif n > 500: dc = dc[:500] # limit to first 500 boxes: https://github.com/ultralytics/yolov3/issues/117 - if method == 'VISION': + if method == 'vision': i = torchvision.ops.boxes.nms(dc[:, :4], dc[:, 4], nms_thres) det_max.append(dc[i]) - elif method == 'OR': # default + elif method == 'or': # default # METHOD1 # ind = list(range(len(dc))) # while len(ind): @@ -553,14 +552,14 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): iou = bbox_iou(dc[0], dc[1:]) # iou with other boxes dc = dc[1:][iou < nms_thres] # remove ious > threshold - elif method == 'AND': # requires overlap, single boxes erased + elif method == 'and': # requires overlap, single boxes erased while len(dc) > 1: iou = bbox_iou(dc[0], dc[1:]) # iou with other boxes if iou.max() > 0.5: det_max.append(dc[:1]) dc = dc[1:][iou < nms_thres] # remove ious > threshold - elif method == 'MERGE': # weighted mixture box + elif method == 'merge': # weighted mixture box while len(dc): if len(dc) == 1: det_max.append(dc) @@ -571,7 +570,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5): det_max.append(dc[:1]) dc = dc[i == 0] - elif method == 'SOFT': # soft-NMS https://arxiv.org/abs/1704.04503 + elif method == 'soft': # soft-NMS https://arxiv.org/abs/1704.04503 sigma = 0.5 # soft-nms sigma parameter while len(dc): if len(dc) == 1: From 9048d96c71ef5bdc56250109ab022e1a9b94352b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Dec 2019 18:56:40 -0800 Subject: [PATCH 1795/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index c396be03..5a1a4912 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -459,7 +459,7 @@ def build_targets(model, targets): return tcls, tbox, indices, av -def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=True, method='vision'): +def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=False, method='vision'): """ Removes detections with lower object confidence score than 'conf_thres' Non-Maximum Suppression to further filter detections. From ce9a2cb9d217d22440f4456815aa26fdba8a73aa Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Dec 2019 19:23:09 -0800 Subject: [PATCH 1796/2595] updates --- utils/utils.py | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 5a1a4912..6ffdfee8 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -474,24 +474,11 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Fal output = [None] * len(prediction) for image_i, pred in enumerate(prediction): - # Duplicate ambiguous - # b = pred[pred[:, 5:].sum(1) > 1.1] - # if len(b): - # b[range(len(b)), 5 + b[:, 5:].argmax(1)] = 0 - # pred = torch.cat((pred, b), 0) - - # Multiply conf by class conf to get combined confidence - conf, cls = pred[:, 4:].max(1) - - # # Merge classes (optional) - # cls[(cls.view(-1,1) == torch.LongTensor([2, 3, 5, 6, 7]).view(1,-1)).any(1)] = 2 - # - # # Remove classes (optional) - # pred[cls != 2, 4] = 0.0 + # Remove rows + pred = pred[(pred[:, 4:] > conf_thres).any(1)] # retain above threshold # Select only suitable predictions - i = (conf > conf_thres) & (pred[:, 2:4] > min_wh).all(1) & (pred[:, 2:4] < max_wh).all(1) & torch.isfinite( - pred).all(1) + i = (pred[:, 2:4] > min_wh).all(1) & (pred[:, 2:4] < max_wh).all(1) & torch.isfinite(pred).all(1) pred = pred[i] # If none are remaining => process next image @@ -505,11 +492,12 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Fal if multi_cls: i, j = (pred[:, 4:] > conf_thres).nonzero().t() pred = torch.cat((pred[i, :4], pred[i, j + 4].unsqueeze(1), j.float().unsqueeze(1)), 1) - else: - pred = torch.cat((pred[:, :4], conf[i].unsqueeze(1), cls[i].unsqueeze(1).float()), 1) # (xyxy, conf, cls) + else: # best class only + conf, j = pred[:, 4:].max(1) + pred = torch.cat((pred[:, :4], conf.unsqueeze(1), j.float().unsqueeze(1)), 1) # (xyxy, conf, cls) # Get detections sorted by decreasing confidence scores - pred = pred[(-pred[:, 4]).argsort()] + pred = pred[pred[:, 4].argsort(descending=True)] # Batched NMS if method == 'vision_batch': From 9309d35478ede9fb5c38829fc6fbfc32b6847f07 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Dec 2019 19:35:14 -0800 Subject: [PATCH 1797/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 6ffdfee8..6abd2b30 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -459,7 +459,7 @@ def build_targets(model, targets): return tcls, tbox, indices, av -def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=False, method='vision'): +def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=True, method='vision'): """ Removes detections with lower object confidence score than 'conf_thres' Non-Maximum Suppression to further filter detections. @@ -489,7 +489,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Fal pred[:, :4] = xywh2xyxy(pred[:, :4]) # Multi-class - if multi_cls: + if multi_cls or conf_thres < 0.01: i, j = (pred[:, 4:] > conf_thres).nonzero().t() pred = torch.cat((pred[i, :4], pred[i, j + 4].unsqueeze(1), j.float().unsqueeze(1)), 1) else: # best class only From 2e1c415e5955d56c0304674bc8da80757a4c5c83 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Dec 2019 20:07:58 -0800 Subject: [PATCH 1798/2595] updates --- utils/utils.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 6abd2b30..fc9abc67 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -501,10 +501,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Tru # Batched NMS if method == 'vision_batch': - i = torchvision.ops.boxes.batched_nms(boxes=pred[:, :4], - scores=pred[:, 4], - idxs=pred[:, 6], - iou_threshold=nms_thres) + i = torchvision.ops.boxes.batched_nms(pred[:, :4], pred[:, 4], pred[:, 5], nms_thres) output[image_i] = pred[i] continue From 8d54770859b2386e5c6d19c1c9fbc53fc7d07ec2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 20 Dec 2019 08:41:28 -0800 Subject: [PATCH 1799/2595] updates --- test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index 7e38acf8..1c98e4bc 100644 --- a/test.py +++ b/test.py @@ -46,7 +46,7 @@ def test(cfg, # Configure run data = parse_data_cfg(data) nc = int(data['classes']) # number of classes - test_path = data['valid'] # path to test images + path = data['valid'] # path to test images names = load_classes(data['names']) # class names iou_thres = torch.linspace(0.5, 0.95, 10).to(device) # for mAP@0.5:0.95 iou_thres = iou_thres[0].view(1) # for mAP@0.5 @@ -54,7 +54,7 @@ def test(cfg, # Dataloader if dataloader is None: - dataset = LoadImagesAndLabels(test_path, img_size, batch_size, rect=True) + dataset = LoadImagesAndLabels(path, img_size, batch_size, rect=True) batch_size = min(batch_size, len(dataset)) dataloader = DataLoader(dataset, batch_size=batch_size, From 2bc6683325559ee39034a13489b5059056cb629e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 20 Dec 2019 09:07:25 -0800 Subject: [PATCH 1800/2595] updates --- test.py | 45 +++++++++++++++++++++++++++++++-------------- train.py | 19 +++++++++---------- 2 files changed, 40 insertions(+), 24 deletions(-) diff --git a/test.py b/test.py index 1c98e4bc..4b33d761 100644 --- a/test.py +++ b/test.py @@ -78,12 +78,15 @@ def test(cfg, if batch_i == 0 and not os.path.exists('test_batch0.jpg'): plot_images(imgs=imgs, targets=targets, paths=paths, fname='test_batch0.jpg') - # Run model - inf_out, train_out = model(imgs) # inference and training outputs + # Disable gradients + with torch.no_grad(): - # Compute loss - if hasattr(model, 'hyp'): # if model has loss hyperparameters - loss += compute_loss(train_out, targets, model)[1][:3].cpu() # GIoU, obj, cls + # Run model + inf_out, train_out = model(imgs) # inference and training outputs + + # Compute loss + if hasattr(model, 'hyp'): # if model has loss hyperparameters + loss += compute_loss(train_out, targets, model)[1][:3].cpu() # GIoU, obj, cls # Run NMS output = non_max_suppression(inf_out, conf_thres=conf_thres, nms_thres=nms_thres) @@ -220,12 +223,26 @@ if __name__ == '__main__': opt = parser.parse_args() print(opt) - with torch.no_grad(): - test(opt.cfg, - opt.data, - opt.weights, - opt.batch_size, - opt.img_size, - opt.conf_thres, - opt.nms_thres, - opt.save_json or any([x in opt.data for x in ['coco.data', 'coco2014.data', 'coco2017.data']])) + # Test + test(opt.cfg, + opt.data, + opt.weights, + opt.batch_size, + opt.img_size, + opt.conf_thres, + opt.nms_thres, + opt.save_json or any([x in opt.data for x in ['coco.data', 'coco2014.data', 'coco2017.data']])) + + # # Parameter study + # y = [] + # x = np.arange(0.4, 0.81, 0.1) + # for v in x: + # y.append(test(opt.cfg, opt.data, opt.weights, opt.batch_size, opt.img_size, 0.1, v, True)[0]) + # y = np.stack(y, 0) + # + # fig, ax = plt.subplots(1, 1, figsize=(12, 6)) + # ax.plot(x, y[:, 2], marker='.', label='mAP@0.5') + # ax.plot(x, y[:, 3], marker='.', label='mAP@0.5:0.95') + # ax.legend() + # fig.tight_layout() + # plt.savefig('parameters.jpg', dpi=200) diff --git a/train.py b/train.py index 3aeffe71..936ba39e 100644 --- a/train.py +++ b/train.py @@ -323,16 +323,15 @@ def train(): if opt.prebias: print_model_biases(model) elif not opt.notest or final_epoch: # Calculate mAP - with torch.no_grad(): - is_coco = any([x in data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) and model.nc == 80 - results, maps = test.test(cfg, - data, - batch_size=batch_size, - img_size=opt.img_size, - model=model, - conf_thres=0.001 if final_epoch else 0.1, # 0.1 for speed - save_json=final_epoch and is_coco, - dataloader=testloader) + is_coco = any([x in data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) and model.nc == 80 + results, maps = test.test(cfg, + data, + batch_size=batch_size, + img_size=opt.img_size, + model=model, + conf_thres=0.001 if final_epoch else 0.1, # 0.1 for speed + save_json=final_epoch and is_coco, + dataloader=testloader) # Write epoch results with open(results_file, 'a') as f: From 442dbb6acfeaf8ebfd978da292dd2ace77bcc6db Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 20 Dec 2019 09:08:57 -0800 Subject: [PATCH 1801/2595] updates --- test.py | 47 +++++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/test.py b/test.py index 4b33d761..9eb0cf89 100644 --- a/test.py +++ b/test.py @@ -223,26 +223,29 @@ if __name__ == '__main__': opt = parser.parse_args() print(opt) - # Test - test(opt.cfg, - opt.data, - opt.weights, - opt.batch_size, - opt.img_size, - opt.conf_thres, - opt.nms_thres, - opt.save_json or any([x in opt.data for x in ['coco.data', 'coco2014.data', 'coco2017.data']])) + study = False + if not study: + # Test + test(opt.cfg, + opt.data, + opt.weights, + opt.batch_size, + opt.img_size, + opt.conf_thres, + opt.nms_thres, + opt.save_json or any([x in opt.data for x in ['coco.data', 'coco2014.data', 'coco2017.data']])) + else: + # Parameter study + y = [] + x = np.arange(0.4, 0.81, 0.1) + for v in x: + y.append(test(opt.cfg, opt.data, opt.weights, opt.batch_size, opt.img_size, 0.1, v, True)[0]) + y = np.stack(y, 0) - # # Parameter study - # y = [] - # x = np.arange(0.4, 0.81, 0.1) - # for v in x: - # y.append(test(opt.cfg, opt.data, opt.weights, opt.batch_size, opt.img_size, 0.1, v, True)[0]) - # y = np.stack(y, 0) - # - # fig, ax = plt.subplots(1, 1, figsize=(12, 6)) - # ax.plot(x, y[:, 2], marker='.', label='mAP@0.5') - # ax.plot(x, y[:, 3], marker='.', label='mAP@0.5:0.95') - # ax.legend() - # fig.tight_layout() - # plt.savefig('parameters.jpg', dpi=200) + # Plot + fig, ax = plt.subplots(1, 1, figsize=(10, 5)) + ax.plot(x, y[:, 2], marker='.', label='mAP@0.5') + ax.plot(x, y[:, 3], marker='.', label='mAP@0.5:0.95') + ax.legend() + fig.tight_layout() + plt.savefig('parameters.jpg', dpi=200) From 43e3bccc7366a3c9b1f929a71a53263b28d62c1c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 20 Dec 2019 09:10:35 -0800 Subject: [PATCH 1802/2595] updates --- test.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test.py b/test.py index 9eb0cf89..eed75e1d 100644 --- a/test.py +++ b/test.py @@ -237,7 +237,7 @@ if __name__ == '__main__': else: # Parameter study y = [] - x = np.arange(0.4, 0.81, 0.1) + x = np.arange(0.3, 0.9, 0.02) for v in x: y.append(test(opt.cfg, opt.data, opt.weights, opt.batch_size, opt.img_size, 0.1, v, True)[0]) y = np.stack(y, 0) @@ -247,5 +247,7 @@ if __name__ == '__main__': ax.plot(x, y[:, 2], marker='.', label='mAP@0.5') ax.plot(x, y[:, 3], marker='.', label='mAP@0.5:0.95') ax.legend() + ax.set_xlabel('nms_thr') + ax.set_ylabel('mAP') fig.tight_layout() plt.savefig('parameters.jpg', dpi=200) From 9420b4d4bccd9fc8cf4d46835ba72b3005fdf622 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 20 Dec 2019 09:23:33 -0800 Subject: [PATCH 1803/2595] updates --- test.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index eed75e1d..e30f93ee 100644 --- a/test.py +++ b/test.py @@ -221,6 +221,7 @@ if __name__ == '__main__': parser.add_argument('--save-json', action='store_true', help='save a cocoapi-compatible JSON results file') parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') opt = parser.parse_args() + opt.save_json = opt.save_json or any([x in opt.data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) print(opt) study = False @@ -233,13 +234,16 @@ if __name__ == '__main__': opt.img_size, opt.conf_thres, opt.nms_thres, - opt.save_json or any([x in opt.data for x in ['coco.data', 'coco2014.data', 'coco2017.data']])) + opt.save_json) else: # Parameter study y = [] x = np.arange(0.3, 0.9, 0.02) for v in x: - y.append(test(opt.cfg, opt.data, opt.weights, opt.batch_size, opt.img_size, 0.1, v, True)[0]) + t = time.time() + r = test(opt.cfg, opt.data, opt.weights, opt.batch_size, opt.img_size, opt.conf_thres, v, opt.save_json)[0] + dt = [time.time() - t] + y.append(r + dt) y = np.stack(y, 0) # Plot From 25580dfb84965bfaf654deb3785d5a362ae3345e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 20 Dec 2019 09:44:21 -0800 Subject: [PATCH 1804/2595] updates --- test.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/test.py b/test.py index e30f93ee..a9d69dce 100644 --- a/test.py +++ b/test.py @@ -238,12 +238,11 @@ if __name__ == '__main__': else: # Parameter study y = [] - x = np.arange(0.3, 0.9, 0.02) + x = np.arange(0.3, 0.9, 0.1) for v in x: t = time.time() r = test(opt.cfg, opt.data, opt.weights, opt.batch_size, opt.img_size, opt.conf_thres, v, opt.save_json)[0] - dt = [time.time() - t] - y.append(r + dt) + y.append(r + (time.time() - t,)) y = np.stack(y, 0) # Plot From 05b1e437a0c88f27b5625ab84667a370190c271a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 20 Dec 2019 09:59:25 -0800 Subject: [PATCH 1805/2595] updates --- test.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/test.py b/test.py index a9d69dce..9968cb65 100644 --- a/test.py +++ b/test.py @@ -244,13 +244,17 @@ if __name__ == '__main__': r = test(opt.cfg, opt.data, opt.weights, opt.batch_size, opt.img_size, opt.conf_thres, v, opt.save_json)[0] y.append(r + (time.time() - t,)) y = np.stack(y, 0) + np.savetxt('study.txt', y, fmt='%10.4g') # Plot - fig, ax = plt.subplots(1, 1, figsize=(10, 5)) - ax.plot(x, y[:, 2], marker='.', label='mAP@0.5') - ax.plot(x, y[:, 3], marker='.', label='mAP@0.5:0.95') - ax.legend() - ax.set_xlabel('nms_thr') - ax.set_ylabel('mAP') + fig, ax = plt.subplots(2, 1, figsize=(6, 6)) + ax[0].plot(x, y[:, 2], marker='.', label='mAP@0.5') + ax[0].plot(x, y[:, 3], marker='.', label='mAP@0.5:0.95') + ax[0].legend() + ax[0].set_xlabel('nms_thr') + ax[0].set_ylabel('mAP') + ax[1].plot(x, y[:, -1], marker='.', label='time') + ax[1].set_xlabel('nms_thr') + ax[1].set_ylabel('time (s)') fig.tight_layout() - plt.savefig('parameters.jpg', dpi=200) + plt.savefig('study.jpg', dpi=200) From 821cf9a189fb256bfb0fdbf616c1d53d1ac198ff Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 20 Dec 2019 10:24:49 -0800 Subject: [PATCH 1806/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 9968cb65..e858d46d 100644 --- a/test.py +++ b/test.py @@ -238,7 +238,7 @@ if __name__ == '__main__': else: # Parameter study y = [] - x = np.arange(0.3, 0.9, 0.1) + x = np.arange(0.3, 0.9, 0.05) for v in x: t = time.time() r = test(opt.cfg, opt.data, opt.weights, opt.batch_size, opt.img_size, opt.conf_thres, v, opt.save_json)[0] From 3854b933c30ecbab4ee3d07cfb31d10805ab7b6a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 20 Dec 2019 11:18:55 -0800 Subject: [PATCH 1807/2595] updates --- test.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/test.py b/test.py index e858d46d..3cb7e992 100644 --- a/test.py +++ b/test.py @@ -238,7 +238,7 @@ if __name__ == '__main__': else: # Parameter study y = [] - x = np.arange(0.3, 0.9, 0.05) + x = np.arange(0.4, 0.9, 0.05) for v in x: t = time.time() r = test(opt.cfg, opt.data, opt.weights, opt.batch_size, opt.img_size, opt.conf_thres, v, opt.save_json)[0] @@ -247,14 +247,15 @@ if __name__ == '__main__': np.savetxt('study.txt', y, fmt='%10.4g') # Plot - fig, ax = plt.subplots(2, 1, figsize=(6, 6)) + fig, ax = plt.subplots(3, 1, figsize=(6, 6)) ax[0].plot(x, y[:, 2], marker='.', label='mAP@0.5') - ax[0].plot(x, y[:, 3], marker='.', label='mAP@0.5:0.95') - ax[0].legend() - ax[0].set_xlabel('nms_thr') ax[0].set_ylabel('mAP') - ax[1].plot(x, y[:, -1], marker='.', label='time') - ax[1].set_xlabel('nms_thr') - ax[1].set_ylabel('time (s)') + ax[1].plot(x, y[:, 3], marker='.', label='mAP@0.5:0.95') + ax[1].set_ylabel('mAP') + ax[2].plot(x, y[:, -1], marker='.', label='time') + ax[2].set_ylabel('time (s)') + for i in range(3): + ax[i].legend() + ax[i].set_xlabel('nms_thr') fig.tight_layout() plt.savefig('study.jpg', dpi=200) From 083d48256195b1028515d6ea4d63aeb31f6fbb56 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 20 Dec 2019 11:24:21 -0800 Subject: [PATCH 1808/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 3cb7e992..661bc249 100644 --- a/test.py +++ b/test.py @@ -244,7 +244,7 @@ if __name__ == '__main__': r = test(opt.cfg, opt.data, opt.weights, opt.batch_size, opt.img_size, opt.conf_thres, v, opt.save_json)[0] y.append(r + (time.time() - t,)) y = np.stack(y, 0) - np.savetxt('study.txt', y, fmt='%10.4g') + np.savetxt('study.txt', y, fmt='%10.4g') # y = np.loadtxt('study.txt') # Plot fig, ax = plt.subplots(3, 1, figsize=(6, 6)) From 587b7a8dd069e1c7249e3eabf6364498285ef89c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 21 Dec 2019 09:32:47 -0800 Subject: [PATCH 1809/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index fc9abc67..5c7dd82b 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -172,8 +172,8 @@ def ap_per_class(tp, conf, pred_cls, target_cls): ap, p, r = np.zeros(s), np.zeros(s), np.zeros(s) for ci, c in enumerate(unique_classes): i = pred_cls == c - n_gt = sum(target_cls == c) # Number of ground truth objects - n_p = sum(i) # Number of predicted objects + n_gt = (target_cls == c).sum() # Number of ground truth objects + n_p = i.sum() # Number of predicted objects if n_p == 0 or n_gt == 0: continue From 69da7e9da5a6fee87f90a7be1e11fc848c938264 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 21 Dec 2019 12:00:16 -0800 Subject: [PATCH 1810/2595] updates --- train.py | 4 +- utils/gcp.sh | 146 +++++++++++++++++++++++++++++++++++---------------- 2 files changed, 102 insertions(+), 48 deletions(-) diff --git a/train.py b/train.py index 936ba39e..a83fa1c0 100644 --- a/train.py +++ b/train.py @@ -467,7 +467,7 @@ if __name__ == '__main__': if opt.bucket: os.system('gsutil cp gs://%s/evolve.txt .' % opt.bucket) # download evolve.txt if exists - for _ in range(1): # generations to evolve + for _ in range(100): # generations to evolve if os.path.exists('evolve.txt'): # if evolve.txt exists: select best hyps and mutate # Select parent(s) x = np.loadtxt('evolve.txt', ndmin=2) @@ -484,7 +484,7 @@ if __name__ == '__main__': # Mutate np.random.seed(int(time.time())) - s = np.random.random() * 0.3 # sigma + s = np.random.random() * 0.15 # sigma g = [1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 1, 1, 1, 1, 1, 1, 1, 1] # gains for i, k in enumerate(hyp.keys()): x = (np.random.randn() * s * g[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) diff --git a/utils/gcp.sh b/utils/gcp.sh index d382dff0..3ee04ac9 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -5,14 +5,17 @@ rm -rf sample_data yolov3 git clone https://github.com/ultralytics/yolov3 git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex sudo conda install -yc conda-forge scikit-image pycocotools -python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('1WQT6SOktSe8Uw6r10-2JhbEhMY5DJaph','coco.zip')" -sudo reboot +python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('193Zp_ye-3qXMonR1nZj3YyxMtQkMy50k','coco2014.zip')" +python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('1WQT6SOktSe8Uw6r10-2JhbEhMY5DJaph','coco2017.zip')" +sudo shutdown # Re-clone rm -rf yolov3 # Warning: remove existing -git clone https://github.com/ultralytics/yolov3 && cd yolov3 # master +git clone https://github.com/ultralytics/yolov3 # master +bash yolov3/data/get_coco2017.sh # git clone -b test --depth 1 https://github.com/ultralytics/yolov3 test # branch -python3 train.py --img-size 320 --weights weights/darknet53.conv.74 --epochs 27 --batch-size 64 --accumulate 1 +cd yolov3 +python3 train.py --weights '' --epochs 27 --batch-size 32 --accumulate 2 --nosave --data coco2017.data # Train python3 train.py @@ -27,14 +30,24 @@ python3 detect.py python3 test.py --save-json # Evolve -export t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t +for i in 1 2 3 4 5 6 7 +do + export t=ultralytics/yolov3:v139 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 320 --epochs 27 --batch-size 64 --accumulate 1 --evolve --weights '' --pre --arc default --bucket yolov4/320_coco2014_27e --device $i + sleep 30 +done + +export t=ultralytics/yolov3:v139 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco16.data --img-size 320 --epochs 1 --batch-size 8 --accumulate 1 --evolve --weights '' --device 1 + + +export t=ultralytics/yolov3:v139 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t clear -sleep 200 +sleep 0 while true do - python3 train.py --data data/coco.data --img-size 416 --epochs 27 --batch-size 32 --accumulate 2 --evolve --weights '' --prebias --bucket yolov4/416_coco_27e --device 7 + python3 train.py --data coco2014.data --img-size 416 --epochs 27 --batch-size 32 --accumulate 2 --evolve --weights '' --pre --bucket yolov4/416_coco_27e --device 2 done + # Git pull git pull https://github.com/ultralytics/yolov3 # master git pull https://github.com/ultralytics/yolov3 test # branch @@ -93,52 +106,93 @@ sudo docker pull ultralytics/yolov3:v0 sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco ultralytics/yolov3:v0 -export t=ultralytics/yolov3:v70 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 70 --device 0 --multi -export t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 71 --device 0 --multi --img-weights +export t=ultralytics/yolov3:v70 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 70 --device 0 --multi +export t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 71 --device 0 --multi --img-weights -export t=ultralytics/yolov3:v73 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 73 --device 5 --cfg cfg/yolov3s.cfg -export t=ultralytics/yolov3:v74 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 74 --device 0 --cfg cfg/yolov3s.cfg -export t=ultralytics/yolov3:v75 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 75 --device 7 --cfg cfg/yolov3s.cfg -export t=ultralytics/yolov3:v76 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 76 --device 0 --cfg cfg/yolov3-spp.cfg +export t=ultralytics/yolov3:v73 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 73 --device 5 --cfg cfg/yolov3s.cfg +export t=ultralytics/yolov3:v74 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 74 --device 0 --cfg cfg/yolov3s.cfg +export t=ultralytics/yolov3:v75 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 75 --device 7 --cfg cfg/yolov3s.cfg +export t=ultralytics/yolov3:v76 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 76 --device 0 --cfg cfg/yolov3-spp.cfg -export t=ultralytics/yolov3:v79 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 79 --device 5 -export t=ultralytics/yolov3:v80 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 80 --device 0 -export t=ultralytics/yolov3:v81 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 81 --device 7 -export t=ultralytics/yolov3:v82 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 82 --device 0 --cfg cfg/yolov3s.cfg - -export t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 83 --device 1 --multi -export t=ultralytics/yolov3:v84 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 84 --device 0 --multi -export t=ultralytics/yolov3:v85 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 85 --device 0 --multi -export t=ultralytics/yolov3:v86 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 86 --device 1 --multi -export t=ultralytics/yolov3:v87 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 87 --device 2 --multi -export t=ultralytics/yolov3:v88 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 88 --device 3 --multi -export t=ultralytics/yolov3:v89 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 89 --device 1 -export t=ultralytics/yolov3:v90 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 90 --device 0 --cfg cfg/yolov3-spp-matrix.cfg -export t=ultralytics/yolov3:v91 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 91 --device 0 --cfg cfg/yolov3-spp-matrix.cfg - - -export t=ultralytics/yolov3:v92 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch-size 16 --accumulate 4 --prebias --bucket yolov4 --name 92 --device 0 +export t=ultralytics/yolov3:v79 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 79 --device 5 +export t=ultralytics/yolov3:v80 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 80 --device 0 +export t=ultralytics/yolov3:v81 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 81 --device 7 +export t=ultralytics/yolov3:v82 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 82 --device 0 --cfg cfg/yolov3s.cfg +export t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 83 --device 6 --multi --nosave +export t=ultralytics/yolov3:v84 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 84 --device 0 --multi +export t=ultralytics/yolov3:v85 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 85 --device 0 --multi +export t=ultralytics/yolov3:v86 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 86 --device 1 --multi +export t=ultralytics/yolov3:v87 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 87 --device 2 --multi +export t=ultralytics/yolov3:v88 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 88 --device 3 --multi +export t=ultralytics/yolov3:v89 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 89 --device 1 +export t=ultralytics/yolov3:v90 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 90 --device 0 --cfg cfg/yolov3-spp-matrix.cfg +export t=ultralytics/yolov3:v91 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 91 --device 0 --cfg cfg/yolov3-spp-matrix.cfg +export t=ultralytics/yolov3:v92 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 92 --device 0 +export t=ultralytics/yolov3:v93 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 93 --device 0 --cfg cfg/yolov3-spp-matrix.cfg #SM4 -export t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host --mount type=bind,source="$(pwd)"/data,target=/usr/src/data $t python3 train.py --weights 'ultralytics49.pt' --epochs 500 --img-size 320 --batch-size 32 --accumulate 2 --prebias --bucket yolov4 --name 78 --device 0 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data - - -export t=ultralytics/yolov3:v2 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t -clear -sleep 120 -while true -do - python3 train.py --weights '' --epochs 27 --batch-size 32 --accumulate 2 --prebias --evolve --device 7 --bucket yolov4/416_coco_27e -done - - -while true; do python3 train.py --data data/coco.data --img-size 320 --batch-size 64 --accumulate 1 --evolve --epochs 1 --adam --bucket yolov4/adamdefaultpw_coco_1e; done - - - +export t=ultralytics/yolov3:v96 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img-size 320 --batch 32 --accum 2 --pre --bucket yolov4 --name 96 --device 0 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave +export t=ultralytics/yolov3:v97 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img-size 320 --batch 32 --accum 2 --pre --bucket yolov4 --name 97 --device 4 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave +export t=ultralytics/yolov3:v98 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img-size 320 --batch 16 --accum 4 --pre --bucket yolov4 --name 98 --device 5 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave +export t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --pre --bucket yolov4 --name 101 --device 7 --multi --nosave + +export t=ultralytics/yolov3:v102 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 1000 --img-size 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 102 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache +export t=ultralytics/yolov3:v103 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img-size 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 103 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache +export t=ultralytics/yolov3:v104 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img-size 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 104 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache +export t=ultralytics/yolov3:v105 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img-size 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 105 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache +export t=ultralytics/yolov3:v106 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img-size 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 106 --device 0 --cfg cfg/yolov3-tiny-3cls-sm4.cfg --data ../data/sm4/out.data --nosave --cache +export t=ultralytics/yolov3:v107 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 107 --device 5 --nosave --cfg cfg/yolov3-spp3.cfg +export t=ultralytics/yolov3:v108 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 108 --device 7 --nosave + +export t=ultralytics/yolov3:v109 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 109 --device 4 --multi --nosave +export t=ultralytics/yolov3:v110 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 110 --device 3 --multi --nosave + +export t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 111 --device 0 +export t=ultralytics/yolov3:v112 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 112 --device 1 --nosave +export t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 113 --device 2 --nosave +export t=ultralytics/yolov3:v114 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 114 --device 2 --nosave +export t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 115 --device 5 --nosave --cfg cfg/yolov3-spp3.cfg +export t=ultralytics/yolov3:v116 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 116 --device 1 --nosave + +export t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --epochs 27 --pre --bucket yolov4 --name 117 --device 0 --nosave --multi +export t=ultralytics/yolov3:v118 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --epochs 27 --pre --bucket yolov4 --name 118 --device 5 --nosave --multi +export t=ultralytics/yolov3:v119 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 119 --device 1 --nosave +export t=ultralytics/yolov3:v120 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 120 --device 2 --nosave +export t=ultralytics/yolov3:v121 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 121 --device 0 --nosave --cfg cfg/csresnext50-panet-spp.cfg +export t=ultralytics/yolov3:v122 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 273 --pre --bucket yolov4 --name 122 --device 2 --nosave +export t=ultralytics/yolov3:v123 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 273 --pre --bucket yolov4 --name 123 --device 5 --nosave + +export t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 124 --device 0 --nosave --cfg yolov3-tiny +export t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 125 --device 1 --nosave --cfg yolov3-tiny2 +export t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 126 --device 1 --nosave --cfg yolov3-tiny3 +export t=ultralytics/yolov3:v127 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 127 --device 0 --nosave --cfg yolov3-tiny4 +export t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 273 --pre --bucket yolov4 --name 128 --device 1 --nosave --cfg yolov3-tiny2 --multi +export t=ultralytics/yolov3:v129 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 273 --pre --bucket yolov4 --name 129 --device 0 --nosave --cfg yolov3-tiny2 + +export t=ultralytics/yolov3:v130 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 130 --device 0 --nosave +export t=ultralytics/yolov3:v133 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 22 --accum 3 --epochs 250 --pre --bucket yolov4 --name 131 --device 0 --nosave --multi +export t=ultralytics/yolov3:v130 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 132 --device 0 --nosave --data coco2014.data +export t=ultralytics/yolov3:v133 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 22 --accum 3 --epochs 27 --pre --bucket yolov4 --name 133 --device 0 --nosave --multi +export t=ultralytics/yolov3:v134 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 134 --device 0 --nosave --data coco2014.data + +export t=ultralytics/yolov3:v135 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 24 --accum 3 --epochs 270 --pre --bucket yolov4 --name 135 --device 0 --nosave --multi --data coco2014.data +export t=ultralytics/yolov3:v136 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 24 --accum 3 --epochs 270 --pre --bucket yolov4 --name 136 --device 0 --nosave --multi --data coco2014.data + +export t=ultralytics/yolov3:v137 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 137 --device 7 --nosave --data coco2014.data +export t=ultralytics/yolov3:v137 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --bucket yolov4 --name 138 --device 6 --nosave --data coco2014.data + +export t=ultralytics/yolov3:v140 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 140 --device 1 --nosave --data coco2014.data --arc uBCE +export t=ultralytics/yolov3:v141 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 141 --device 0 --nosave --data coco2014.data --arc uBCE +export t=ultralytics/yolov3:v142 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 142 --device 1 --nosave --data coco2014.data --arc uBCE +export t=ultralytics/yolov3:v139 && sudo docker build -t $t . && sudo docker push $t +conda update -n base -c defaults conda +conda install -yc anaconda numpy opencv matplotlib tqdm pillow ipython future +conda install -yc conda-forge scikit-image pycocotools onnx tensorboard +conda install -yc spyder-ide spyder-line-profiler +conda install -yc pytorch pytorch torchvision \ No newline at end of file From 3e33adb93502e3b292a43ecd855e6882c8b1bd5d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 21 Dec 2019 19:23:50 -0800 Subject: [PATCH 1811/2595] updates --- data/get_coco2017.sh | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/data/get_coco2017.sh b/data/get_coco2017.sh index 69a29761..249a5454 100755 --- a/data/get_coco2017.sh +++ b/data/get_coco2017.sh @@ -15,17 +15,10 @@ unzip -q ${filename} # for coco.zip # tar -xzf ${filename} # for coco.tar.gz rm ${filename} -# Download images +# Download and unzip images cd coco/images -curl http://images.cocodataset.org/zips/train2017.zip -o train2017.zip -curl http://images.cocodataset.org/zips/val2017.zip -o val2017.zip - -# Unzip images -unzip -q train2017.zip -unzip -q val2017.zip - -# (optional) Delete zip files -rm -rf *.zip +f="train2017.zip" && curl http://images.cocodataset.org/zips/$f -o $f && unzip -q $f && rm $f +f="val2017.zip" && curl http://images.cocodataset.org/zips/$f -o $f && unzip -q $f && rm $f # cd out cd ../.. From d56efafee1b8e6e6e8f68936d3e8c26e3d12acda Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 21 Dec 2019 19:30:22 -0800 Subject: [PATCH 1812/2595] updates --- data/get_coco2014.sh | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/data/get_coco2014.sh b/data/get_coco2014.sh index cb2fe21e..300b690b 100755 --- a/data/get_coco2014.sh +++ b/data/get_coco2014.sh @@ -16,18 +16,10 @@ unzip -q ${filename} # for coco.zip # tar -xzf ${filename} # for coco.tar.gz rm ${filename} -# Download images +# Download and unzip images cd coco/images -curl http://images.cocodataset.org/zips/train2014.zip -o train2014.zip -curl http://images.cocodataset.org/zips/val2014.zip -o val2014.zip - -# Unzip images -unzip -q train2014.zip -unzip -q val2014.zip - -# (optional) Delete zip files -rm -rf *.zip +f="train2014.zip" && curl http://images.cocodataset.org/zips/$f -o $f && unzip -q $f && rm $f +f="val2014.zip" && curl http://images.cocodataset.org/zips/$f -o $f && unzip -q $f && rm $f # cd out cd ../.. - From 66fe3db8fbd59bec98d45e46b97db02ea914cbde Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 21 Dec 2019 19:39:45 -0800 Subject: [PATCH 1813/2595] updates --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index f53dc692..39ab1ee4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -44,13 +44,13 @@ COPY . /usr/src/app # --------------------------------------------------- Extras Below --------------------------------------------------- # Build and Push -# export t=ultralytics/yolov3:v0 && sudo docker build -t $t . && sudo docker push $t +# t=ultralytics/yolov3:v0 && sudo docker build -t $t . && sudo docker push $t # Run # sudo nvidia-docker run --ipc=host ultralytics/yolov3:v0 python3 detect.py # Pull and Run with local directory access -# export t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t +# t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t # Kill all # sudo docker kill "$(sudo docker ps -q)" From b7a53957b3500e2c8638a25604de468a1670cd47 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 21 Dec 2019 19:47:49 -0800 Subject: [PATCH 1814/2595] updates --- train.py | 2 +- utils/evolve.sh | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 utils/evolve.sh diff --git a/train.py b/train.py index a83fa1c0..20efba44 100644 --- a/train.py +++ b/train.py @@ -446,7 +446,7 @@ if __name__ == '__main__': mixed_precision = False # scale hyp['obj'] by img_size (evolved at 416) - hyp['obj'] *= opt.img_size / 416. + hyp['obj'] *= opt.img_size / 320. tb_writer = None if not opt.evolve: # Train normally diff --git a/utils/evolve.sh b/utils/evolve.sh new file mode 100644 index 00000000..34e3d223 --- /dev/null +++ b/utils/evolve.sh @@ -0,0 +1,10 @@ +#for i in 1 2 3 4 5 6 7 +#do +# t=ultralytics/yolov3:v139 && sudo docker pull $t && sudo nvidia-docker run --d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t utils/evolve.sh $i +# sleep 30 +# done + +while true +do + python3 train.py --data coco2014.data --img-size 320 --epochs 27 --batch-size 64 --accumulate 1 --evolve --weights '' --pre --bucket yolov4/320_coco2014_27e --device $1 +done \ No newline at end of file From 5e203d3b1a9c755fcee945ed871f47657b206c22 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 21 Dec 2019 19:48:07 -0800 Subject: [PATCH 1815/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 20efba44..a83fa1c0 100644 --- a/train.py +++ b/train.py @@ -446,7 +446,7 @@ if __name__ == '__main__': mixed_precision = False # scale hyp['obj'] by img_size (evolved at 416) - hyp['obj'] *= opt.img_size / 320. + hyp['obj'] *= opt.img_size / 416. tb_writer = None if not opt.evolve: # Train normally From acdbaa7702aa37c3df001aba82ceb43ca519c263 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 21 Dec 2019 19:56:52 -0800 Subject: [PATCH 1816/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index a83fa1c0..4db2afc3 100644 --- a/train.py +++ b/train.py @@ -467,7 +467,7 @@ if __name__ == '__main__': if opt.bucket: os.system('gsutil cp gs://%s/evolve.txt .' % opt.bucket) # download evolve.txt if exists - for _ in range(100): # generations to evolve + for _ in range(1): # generations to evolve if os.path.exists('evolve.txt'): # if evolve.txt exists: select best hyps and mutate # Select parent(s) x = np.loadtxt('evolve.txt', ndmin=2) @@ -484,7 +484,7 @@ if __name__ == '__main__': # Mutate np.random.seed(int(time.time())) - s = np.random.random() * 0.15 # sigma + s = np.random.random() * 0.10 # sigma g = [1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 1, 1, 1, 1, 1, 1, 1, 1] # gains for i, k in enumerate(hyp.keys()): x = (np.random.randn() * s * g[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) From efb3768fff92e71cc0930b33d1073d6789473580 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 21 Dec 2019 20:10:55 -0800 Subject: [PATCH 1817/2595] updates --- utils/evolve.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/utils/evolve.sh b/utils/evolve.sh index 34e3d223..08e0c38a 100644 --- a/utils/evolve.sh +++ b/utils/evolve.sh @@ -1,3 +1,5 @@ +#!/usr/bin/env bash + #for i in 1 2 3 4 5 6 7 #do # t=ultralytics/yolov3:v139 && sudo docker pull $t && sudo nvidia-docker run --d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t utils/evolve.sh $i From f00de5454630cd165ce7ba15a18504cdfd4ad5a2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 21 Dec 2019 20:17:56 -0800 Subject: [PATCH 1818/2595] updates --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 4db2afc3..374c8ffb 100644 --- a/train.py +++ b/train.py @@ -25,7 +25,7 @@ results_file = 'results.txt' hyp = {'giou': 3.54, # giou loss gain 'cls': 37.4, # cls loss gain 'cls_pw': 1.0, # cls BCELoss positive_weight - 'obj': 64.3, # obj loss gain (*=img_size/416 if img_size != 416) + 'obj': 49.5, # obj loss gain (*=img_size/320 if img_size != 320) 'obj_pw': 1.0, # obj BCELoss positive_weight 'iou_t': 0.225, # iou training threshold 'lr0': 0.00579, # initial learning rate (SGD=1E-3, Adam=9E-5) @@ -445,8 +445,8 @@ if __name__ == '__main__': if device.type == 'cpu': mixed_precision = False - # scale hyp['obj'] by img_size (evolved at 416) - hyp['obj'] *= opt.img_size / 416. + # scale hyp['obj'] by img_size (evolved at 320) + hyp['obj'] *= opt.img_size / 320. tb_writer = None if not opt.evolve: # Train normally From 707ce8cacb11e09723fdab50bfa4e9b303efc3b6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 21 Dec 2019 20:45:00 -0800 Subject: [PATCH 1819/2595] updates --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index d540981a..cf59daef 100755 --- a/models.py +++ b/models.py @@ -82,9 +82,9 @@ def create_modules(module_defs, img_size, arc): # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) try: if arc == 'defaultpw' or arc == 'Fdefaultpw': # default with positive weights - b = [-4, -3.6] # obj, cls + b = [-5.0, -5.0] # obj, cls elif arc == 'default': # default no pw (40 cls, 80 obj) - b = [-5.5, -5.0] + b = [-5.0, -5.0] elif arc == 'uBCE': # unified BCE (80 classes) b = [0, -9.0] elif arc == 'uCE': # unified CE (1 background + 80 classes) From c693219e57a530b66cbb464526e09fbb11d893cc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 22 Dec 2019 08:12:23 -0800 Subject: [PATCH 1820/2595] updates --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index dfb5cd90..08b1bdba 100755 --- a/requirements.txt +++ b/requirements.txt @@ -15,7 +15,7 @@ Pillow # future # Conda commands (in place of pip) --------------------------------------------- -# conda update -n base -c defaults conda +# conda update -yn base -c defaults conda # conda install -yc anaconda numpy opencv matplotlib tqdm pillow ipython future # conda install -yc conda-forge scikit-image pycocotools onnx tensorboard # conda install -yc spyder-ide spyder-line-profiler From 8aeef8da72a6231b14d54228a16a8dd48267c189 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 22 Dec 2019 11:08:02 -0800 Subject: [PATCH 1821/2595] updates --- data/get_coco2014.sh | 1 - data/get_coco2017.sh | 1 - 2 files changed, 2 deletions(-) diff --git a/data/get_coco2014.sh b/data/get_coco2014.sh index 300b690b..2125cf1f 100755 --- a/data/get_coco2014.sh +++ b/data/get_coco2014.sh @@ -6,7 +6,6 @@ # Download labels from Google Drive, accepting presented query filename="coco2014labels.zip" fileid="1s6-CmF5_SElM28r52P1OUrCcuXZN-SFo" - curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" > /dev/null curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${fileid}" -o ${filename} rm ./cookie diff --git a/data/get_coco2017.sh b/data/get_coco2017.sh index 249a5454..30f60b5b 100755 --- a/data/get_coco2017.sh +++ b/data/get_coco2017.sh @@ -22,4 +22,3 @@ f="val2017.zip" && curl http://images.cocodataset.org/zips/$f -o $f && unzip -q # cd out cd ../.. - From 5766b5c55509cb9ab31147020866c2e03ff01c22 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 22 Dec 2019 13:03:45 -0800 Subject: [PATCH 1822/2595] updates --- test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index 661bc249..5a85bbe4 100644 --- a/test.py +++ b/test.py @@ -88,8 +88,8 @@ def test(cfg, if hasattr(model, 'hyp'): # if model has loss hyperparameters loss += compute_loss(train_out, targets, model)[1][:3].cpu() # GIoU, obj, cls - # Run NMS - output = non_max_suppression(inf_out, conf_thres=conf_thres, nms_thres=nms_thres) + # Run NMS + output = non_max_suppression(inf_out, conf_thres=conf_thres, nms_thres=nms_thres) # Statistics per image for si, pred in enumerate(output): From 8a5c52029178156fce382a3ea89f2fd4d6f60e50 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 22 Dec 2019 13:04:05 -0800 Subject: [PATCH 1823/2595] updates --- test.py | 1 - 1 file changed, 1 deletion(-) diff --git a/test.py b/test.py index 5a85bbe4..bdcf8cf5 100644 --- a/test.py +++ b/test.py @@ -80,7 +80,6 @@ def test(cfg, # Disable gradients with torch.no_grad(): - # Run model inf_out, train_out = model(imgs) # inference and training outputs From a96285870de3a06f12842af33bd2b9e041375c9d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 22 Dec 2019 13:04:44 -0800 Subject: [PATCH 1824/2595] updates --- utils/utils.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 5c7dd82b..e3f1f7e5 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -466,8 +466,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Tru Returns detections with shape: (x1, y1, x2, y2, object_conf, conf, class) """ - # NMS method https://github.com/ultralytics/yolov3/issues/679 'or', 'and', 'merge', 'vision', 'vision_batch' - # method = 'merge' if conf_thres <= 0.01 else 'vision' # MERGE is highest mAP, VISION is fastest + # NMS methods https://github.com/ultralytics/yolov3/issues/679 'or', 'and', 'merge', 'vision', 'vision_batch' # Box constraints min_wh, max_wh = 2, 10000 # (pixels) minimum and maximium box width and height From e0833ed21e23ee21b9b4f67c1ce6e68f70398c01 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 22 Dec 2019 13:07:00 -0800 Subject: [PATCH 1825/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index e3f1f7e5..02bb8b2b 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -444,7 +444,7 @@ def build_targets(model, targets): gi, gj = gxy.long().t() # grid x, y indices indices.append((b, a, gj, gi)) - # GIoU + # Box gxy -= gxy.floor() # xy tbox.append(torch.cat((gxy, gwh), 1)) # xywh (grids) av.append(anchor_vec[a]) # anchor vec From 62516f191966617346b111436a7159ead537ffdf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 22 Dec 2019 13:26:46 -0800 Subject: [PATCH 1826/2595] updates --- utils/utils.py | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 02bb8b2b..35c040ff 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -284,21 +284,46 @@ def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False, DIoU=False, CIoU=False): return iou +def box_iou(boxes1, boxes2): + # https://github.com/pytorch/vision/blob/master/torchvision/ops/boxes.py + """ + Return intersection-over-union (Jaccard index) of boxes. + Both sets of boxes are expected to be in (x1, y1, x2, y2) format. + Arguments: + boxes1 (Tensor[N, 4]) + boxes2 (Tensor[M, 4]) + Returns: + iou (Tensor[N, M]): the NxM matrix containing the pairwise + IoU values for every element in boxes1 and boxes2 + """ + + def box_area(boxes): + return (boxes[:, 2] - boxes[:, 0]) * (boxes[:, 3] - boxes[:, 1]) + + area1 = box_area(boxes1) + area2 = box_area(boxes2) + + lt = torch.max(boxes1[:, None, :2], boxes2[:, :2]) # [N,M,2] + rb = torch.min(boxes1[:, None, 2:], boxes2[:, 2:]) # [N,M,2] + + wh = (rb - lt).clamp(min=0) # [N,M,2] + inter = wh[:, :, 0] * wh[:, :, 1] # [N,M] + + iou = inter / (area1[:, None] + area2 - inter) + return iou + + def wh_iou(box1, box2): - # Returns the IoU of wh1 to wh2. wh1 is 2, wh2 is nx2 - box2 = box2.t() + # Returns the IoU of wh1 to wh2. wh1 is 2, wh2 is 2xn # w, h = box1 w1, h1 = box1[0], box1[1] w2, h2 = box2[0], box2[1] # Intersection area - inter_area = torch.min(w1, w2) * torch.min(h1, h2) + inter = torch.min(w1, w2) * torch.min(h1, h2) - # Union Area - union_area = (w1 * h1 + 1e-16) + w2 * h2 - inter_area - - return inter_area / union_area # iou + return inter / (w1 * h1 + w2 * h2 - inter) # iou = inter / (area1 + area2 - inter) class FocalLoss(nn.Module): @@ -422,8 +447,9 @@ def build_targets(model, targets): # iou of targets-anchors t, a = targets, [] gwh = t[:, 4:6] * ng + gwht = gwh.t() if nt: - iou = torch.stack([wh_iou(x, gwh) for x in anchor_vec], 0) + iou = torch.stack([wh_iou(x, gwht) for x in anchor_vec], 0) if use_all_anchors: na = len(anchor_vec) # number of anchors From 654b9834c2930a1fe3fda0522f5942bd4a8113c2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 22 Dec 2019 13:28:51 -0800 Subject: [PATCH 1827/2595] updates --- utils/utils.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 35c040ff..cc314102 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -315,8 +315,6 @@ def box_iou(boxes1, boxes2): def wh_iou(box1, box2): # Returns the IoU of wh1 to wh2. wh1 is 2, wh2 is 2xn - - # w, h = box1 w1, h1 = box1[0], box1[1] w2, h2 = box2[0], box2[1] From a0b4d17f7efa8b6f4aa8ed4e33148004e4b77cf3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 22 Dec 2019 14:05:40 -0800 Subject: [PATCH 1828/2595] updates --- utils/utils.py | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index cc314102..18ccb514 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -313,15 +313,12 @@ def box_iou(boxes1, boxes2): return iou -def wh_iou(box1, box2): - # Returns the IoU of wh1 to wh2. wh1 is 2, wh2 is 2xn - w1, h1 = box1[0], box1[1] - w2, h2 = box2[0], box2[1] - - # Intersection area - inter = torch.min(w1, w2) * torch.min(h1, h2) - - return inter / (w1 * h1 + w2 * h2 - inter) # iou = inter / (area1 + area2 - inter) +def wh_iou(wh1, wh2): + # Returns the nxm IoU matrix. wh1 is nx2, wh2 is mx2 + wh1 = wh1[:, None] # [N,1,2] + wh2 = wh2[None] # [1,M,2] + inter = torch.min(wh1, wh2).prod(2) # [N,M] + return inter / (wh1.prod(2) + wh2.prod(2) - inter) # iou = inter / (area1 + area2 - inter) class FocalLoss(nn.Module): @@ -445,9 +442,8 @@ def build_targets(model, targets): # iou of targets-anchors t, a = targets, [] gwh = t[:, 4:6] * ng - gwht = gwh.t() if nt: - iou = torch.stack([wh_iou(x, gwht) for x in anchor_vec], 0) + iou = wh_iou(anchor_vec, gwh) if use_all_anchors: na = len(anchor_vec) # number of anchors From 0e54731bb8313dd37f9bae2c397e32ec8f8050b1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 22 Dec 2019 14:19:46 -0800 Subject: [PATCH 1829/2595] updates --- utils/utils.py | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 18ccb514..8d37e62b 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -253,21 +253,21 @@ def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False, DIoU=False, CIoU=False): b2_y1, b2_y2 = box2[1] - box2[3] / 2, box2[1] + box2[3] / 2 # Intersection area - inter_area = (torch.min(b1_x2, b2_x2) - torch.max(b1_x1, b2_x1)).clamp(0) * \ - (torch.min(b1_y2, b2_y2) - torch.max(b1_y1, b2_y1)).clamp(0) + inter = (torch.min(b1_x2, b2_x2) - torch.max(b1_x1, b2_x1)).clamp(0) * \ + (torch.min(b1_y2, b2_y2) - torch.max(b1_y1, b2_y1)).clamp(0) # Union Area w1, h1 = b1_x2 - b1_x1, b1_y2 - b1_y1 w2, h2 = b2_x2 - b2_x1, b2_y2 - b2_y1 - union_area = (w1 * h1 + 1e-16) + w2 * h2 - inter_area + union = (w1 * h1 + 1e-16) + w2 * h2 - inter - iou = inter_area / union_area # iou + iou = inter / union # iou if GIoU or DIoU or CIoU: cw = torch.max(b1_x2, b2_x2) - torch.min(b1_x1, b2_x1) # convex (smallest enclosing box) width ch = torch.max(b1_y2, b2_y2) - torch.min(b1_y1, b2_y1) # convex height if GIoU: # Generalized IoU https://arxiv.org/pdf/1902.09630.pdf c_area = cw * ch + 1e-16 # convex area - return iou - (c_area - union_area) / c_area # GIoU + return iou - (c_area - union) / c_area # GIoU if DIoU or CIoU: # Distance or Complete IoU https://arxiv.org/abs/1911.08287v1 # convex diagonal squared c2 = cw ** 2 + ch ** 2 + 1e-16 @@ -297,20 +297,18 @@ def box_iou(boxes1, boxes2): IoU values for every element in boxes1 and boxes2 """ - def box_area(boxes): - return (boxes[:, 2] - boxes[:, 0]) * (boxes[:, 3] - boxes[:, 1]) + def box_area(box): + # box = 4xn + return (box[2] - box[0]) * (box[3] - box[1]) - area1 = box_area(boxes1) - area2 = box_area(boxes2) + area1 = box_area(boxes1.t()) + area2 = box_area(boxes2.t()) lt = torch.max(boxes1[:, None, :2], boxes2[:, :2]) # [N,M,2] rb = torch.min(boxes1[:, None, 2:], boxes2[:, 2:]) # [N,M,2] - wh = (rb - lt).clamp(min=0) # [N,M,2] - inter = wh[:, :, 0] * wh[:, :, 1] # [N,M] - - iou = inter / (area1[:, None] + area2 - inter) - return iou + inter = (rb - lt).clamp(min=0).prod(2) # [N,M] + return inter / (area1[:, None] + area2 - inter) # iou = inter / (area1 + area2 - inter) def wh_iou(wh1, wh2): From 0e17fb5905ec5a335f86c5b17a945691c09d568e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 22 Dec 2019 16:05:43 -0800 Subject: [PATCH 1830/2595] updates --- test.py | 36 +++++++++++++++++------------------- 1 file changed, 17 insertions(+), 19 deletions(-) diff --git a/test.py b/test.py index bdcf8cf5..dc6c9f50 100644 --- a/test.py +++ b/test.py @@ -126,7 +126,7 @@ def test(cfg, # Assign all predictions as incorrect correct = torch.zeros(len(pred), niou) if nl: - detected = [] + detected = [] # target indices tcls_tensor = labels[:, 0] # target boxes @@ -134,26 +134,24 @@ def test(cfg, tbox[:, [0, 2]] *= width tbox[:, [1, 3]] *= height - # Search for correct predictions - for i, (*pbox, _, pcls) in enumerate(pred): + # Per target class + for cls in torch.unique(tcls_tensor): + ti = (cls == tcls_tensor).nonzero().view(-1) # prediction indices + pi = (cls == pred[:, 5]).nonzero().view(-1) # target indices - # Break if all targets already located in image - if len(detected) == nl: - break + # Search for detections + if len(pi): + # Prediction to target ious + ious, i = box_iou(pred[pi, :4], tbox[ti]).max(1) # best ious, indices - # Continue if predicted class not among image classes - if pcls.item() not in tcls: - continue - - # Best iou, index between pred and targets - m = (pcls == tcls_tensor).nonzero().view(-1) - iou, j = bbox_iou(pbox, tbox[m]).max(0) - m = m[j] - - # Per iou_thres 'correct' vector - if iou > iou_thres[0] and m not in detected: - detected.append(m) - correct[i] = iou > iou_thres + # Append detections + for j in (ious > iou_thres[0]).nonzero(): + d = ti[i[j]] # detected target + if d not in detected: + detected.append(d) + correct[pi[j]] = (ious[j] > iou_thres).float() # iou_thres is 1xn + if len(detected) == nl: # all targets already located in image + break # Append statistics (correct, conf, pcls, tcls) stats.append((correct, pred[:, 4].cpu(), pred[:, 5].cpu(), tcls)) From 52573eb0bc02fc4b7afa71fdd4c561d8c02a1bed Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 22 Dec 2019 16:21:17 -0800 Subject: [PATCH 1831/2595] updates --- test.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/test.py b/test.py index dc6c9f50..b05be9ad 100644 --- a/test.py +++ b/test.py @@ -130,9 +130,7 @@ def test(cfg, tcls_tensor = labels[:, 0] # target boxes - tbox = xywh2xyxy(labels[:, 1:5]) - tbox[:, [0, 2]] *= width - tbox[:, [1, 3]] *= height + tbox = xywh2xyxy(labels[:, 1:5]) * torch.Tensor([width, height, width, height]).to(device) # Per target class for cls in torch.unique(tcls_tensor): From d391f6d59b9dad9e222b0608d81d0662e9b0de3a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 22 Dec 2019 17:36:51 -0800 Subject: [PATCH 1832/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 374c8ffb..01c865a7 100644 --- a/train.py +++ b/train.py @@ -484,7 +484,7 @@ if __name__ == '__main__': # Mutate np.random.seed(int(time.time())) - s = np.random.random() * 0.10 # sigma + s = np.random.random() * 0.2 # sigma g = [1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 1, 1, 1, 1, 1, 1, 1, 1] # gains for i, k in enumerate(hyp.keys()): x = (np.random.randn() * s * g[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) From 80692334f45e75251b9ec20b7c67b22cfc8fba48 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 23 Dec 2019 08:25:40 -0800 Subject: [PATCH 1833/2595] updates --- utils/evolve.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/utils/evolve.sh b/utils/evolve.sh index 08e0c38a..b20623f4 100644 --- a/utils/evolve.sh +++ b/utils/evolve.sh @@ -1,5 +1,4 @@ -#!/usr/bin/env bash - +#!/bin/bash #for i in 1 2 3 4 5 6 7 #do # t=ultralytics/yolov3:v139 && sudo docker pull $t && sudo nvidia-docker run --d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t utils/evolve.sh $i @@ -9,4 +8,4 @@ while true do python3 train.py --data coco2014.data --img-size 320 --epochs 27 --batch-size 64 --accumulate 1 --evolve --weights '' --pre --bucket yolov4/320_coco2014_27e --device $1 -done \ No newline at end of file +done From 61009dbde89cb5f3feea257fe5a23e777f75b534 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 23 Dec 2019 08:27:21 -0800 Subject: [PATCH 1834/2595] updates --- utils/evolve.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/utils/evolve.sh b/utils/evolve.sh index b20623f4..dd89fbed 100644 --- a/utils/evolve.sh +++ b/utils/evolve.sh @@ -5,7 +5,6 @@ # sleep 30 # done -while true -do - python3 train.py --data coco2014.data --img-size 320 --epochs 27 --batch-size 64 --accumulate 1 --evolve --weights '' --pre --bucket yolov4/320_coco2014_27e --device $1 +while true; do +python3 train.py --data coco2014.data --img-size 320 --epochs 27 --batch-size 64 --accumulate 1 --evolve --weights '' --pre --bucket yolov4/320_coco2014_27e --device $1 done From dd5ead5b1db54faf565a3ab31b994999aab0ce26 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 23 Dec 2019 10:10:24 -0800 Subject: [PATCH 1835/2595] updates --- models.py | 8 ++------ utils/utils.py | 14 +++++++++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/models.py b/models.py index cf59daef..48815452 100755 --- a/models.py +++ b/models.py @@ -152,7 +152,6 @@ class YOLOLayer(nn.Module): self.no = nc + 5 # number of outputs self.nx = 0 # initialize number of x gridpoints self.ny = 0 # initialize number of y gridpoints - self.oi = [0, 1, 2, 3] + list(range(5, self.no)) # output indices self.arc = arc if ONNX_EXPORT: # grids must be computed in __init__ @@ -210,7 +209,7 @@ class YOLOLayer(nn.Module): io[..., :4] *= self.stride if 'default' in self.arc: # seperate obj and cls - torch.sigmoid_(io[..., 4:]) + torch.sigmoid_(io[..., 4]) elif 'BCE' in self.arc: # unified BCE (80 classes) torch.sigmoid_(io[..., 5:]) io[..., 4] = 1 @@ -221,11 +220,8 @@ class YOLOLayer(nn.Module): if self.nc == 1: io[..., 5] = 1 # single-class model https://github.com/ultralytics/yolov3/issues/235 - # compute conf - io[..., 5:] *= io[..., 4:5] # conf = obj_conf * cls_conf - # reshape from [1, 3, 13, 13, 85] to [1, 507, 84], remove obj_conf - return io[..., self.oi].view(bs, -1, self.no - 1), p + return io.view(bs, -1, self.no), p class Darknet(nn.Module): diff --git a/utils/utils.py b/utils/utils.py index 8d37e62b..c75d3077 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -492,9 +492,13 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Tru output = [None] * len(prediction) for image_i, pred in enumerate(prediction): # Remove rows - pred = pred[(pred[:, 4:] > conf_thres).any(1)] # retain above threshold + pred = pred[pred[:, 4] > conf_thres] # retain above threshold - # Select only suitable predictions + # compute conf + torch.sigmoid_(pred[..., 5:]) + pred[..., 5:] *= pred[..., 4:5] # conf = obj_conf * cls_conf + + # Apply width-height constraint i = (pred[:, 2:4] > min_wh).all(1) & (pred[:, 2:4] < max_wh).all(1) & torch.isfinite(pred).all(1) pred = pred[i] @@ -507,10 +511,10 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Tru # Multi-class if multi_cls or conf_thres < 0.01: - i, j = (pred[:, 4:] > conf_thres).nonzero().t() - pred = torch.cat((pred[i, :4], pred[i, j + 4].unsqueeze(1), j.float().unsqueeze(1)), 1) + i, j = (pred[:, 5:] > conf_thres).nonzero().t() + pred = torch.cat((pred[i, :4], pred[i, j + 5].unsqueeze(1), j.float().unsqueeze(1)), 1) else: # best class only - conf, j = pred[:, 4:].max(1) + conf, j = pred[:, 5:].max(1) pred = torch.cat((pred[:, :4], conf.unsqueeze(1), j.float().unsqueeze(1)), 1) # (xyxy, conf, cls) # Get detections sorted by decreasing confidence scores From a51d83df3393f23f3a59172578c5890d1474cac5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 23 Dec 2019 10:11:12 -0800 Subject: [PATCH 1836/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index c75d3077..ef372ee7 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -528,8 +528,8 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Tru # Non-maximum suppression det_max = [] - for c in pred[:, -1].unique(): - dc = pred[pred[:, -1] == c] # select class c + for c in j.unique(): + dc = pred[j == c] # select class c n = len(dc) if n == 1: det_max.append(dc) # No NMS required if only 1 prediction From a5160b44caf9c67e18addd3e9c0c6651783ae067 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 23 Dec 2019 10:13:20 -0800 Subject: [PATCH 1837/2595] updates --- utils/utils.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index ef372ee7..b9180e13 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -528,8 +528,9 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Tru # Non-maximum suppression det_max = [] - for c in j.unique(): - dc = pred[j == c] # select class c + cls = pred[:, -1] + for c in cls.unique(): + dc = pred[cls == c] # select class c n = len(dc) if n == 1: det_max.append(dc) # No NMS required if only 1 prediction From f995d6093c94fed34b68c85cb6b5167da30a0919 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 23 Dec 2019 10:22:07 -0800 Subject: [PATCH 1838/2595] updates --- utils/utils.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index b9180e13..3b72bbbc 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -491,16 +491,15 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Tru output = [None] * len(prediction) for image_i, pred in enumerate(prediction): - # Remove rows - pred = pred[pred[:, 4] > conf_thres] # retain above threshold + # Retain > conf + pred = pred[pred[:, 4] > conf_thres] # compute conf torch.sigmoid_(pred[..., 5:]) pred[..., 5:] *= pred[..., 4:5] # conf = obj_conf * cls_conf # Apply width-height constraint - i = (pred[:, 2:4] > min_wh).all(1) & (pred[:, 2:4] < max_wh).all(1) & torch.isfinite(pred).all(1) - pred = pred[i] + pred = pred[(pred[:, 2:4] > min_wh).all(1) & (pred[:, 2:4] < max_wh).all(1)] # If none are remaining => process next image if len(pred) == 0: @@ -517,6 +516,9 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Tru conf, j = pred[:, 5:].max(1) pred = torch.cat((pred[:, :4], conf.unsqueeze(1), j.float().unsqueeze(1)), 1) # (xyxy, conf, cls) + # Apply finite constraint + pred = pred[torch.isfinite(pred).all(1)] + # Get detections sorted by decreasing confidence scores pred = pred[pred[:, 4].argsort(descending=True)] From fd3a6a4cba36276ba38a97d29b7af075f5421815 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 23 Dec 2019 10:30:13 -0800 Subject: [PATCH 1839/2595] updates --- utils/utils.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 3b72bbbc..e8c83613 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -506,15 +506,15 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Tru continue # Box (center x, center y, width, height) to (x1, y1, x2, y2) - pred[:, :4] = xywh2xyxy(pred[:, :4]) + box = xywh2xyxy(pred[:, :4]) - # Multi-class + # Detections matrix nx6 (xyxy, conf, cls) if multi_cls or conf_thres < 0.01: i, j = (pred[:, 5:] > conf_thres).nonzero().t() - pred = torch.cat((pred[i, :4], pred[i, j + 5].unsqueeze(1), j.float().unsqueeze(1)), 1) + pred = torch.cat((box[i], pred[i, j + 5].unsqueeze(1), j.float().unsqueeze(1)), 1) else: # best class only conf, j = pred[:, 5:].max(1) - pred = torch.cat((pred[:, :4], conf.unsqueeze(1), j.float().unsqueeze(1)), 1) # (xyxy, conf, cls) + pred = torch.cat((box, conf.unsqueeze(1), j.float().unsqueeze(1)), 1) # Apply finite constraint pred = pred[torch.isfinite(pred).all(1)] From 209cc9e1243cbc25e1f6dfcaeea47ba1b9eaa290 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 23 Dec 2019 10:31:37 -0800 Subject: [PATCH 1840/2595] updates --- utils/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index e8c83613..f7a93716 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -494,14 +494,14 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Tru # Retain > conf pred = pred[pred[:, 4] > conf_thres] - # compute conf + # Compute conf torch.sigmoid_(pred[..., 5:]) pred[..., 5:] *= pred[..., 4:5] # conf = obj_conf * cls_conf # Apply width-height constraint pred = pred[(pred[:, 2:4] > min_wh).all(1) & (pred[:, 2:4] < max_wh).all(1)] - # If none are remaining => process next image + # If none remain process next image if len(pred) == 0: continue @@ -528,7 +528,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Tru output[image_i] = pred[i] continue - # Non-maximum suppression + # All other NMS methods det_max = [] cls = pred[:, -1] for c in cls.unique(): From 06e88fec088d84c57cb2b553e525da59d5f236a4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 23 Dec 2019 10:33:58 -0800 Subject: [PATCH 1841/2595] updates --- utils/utils.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index f7a93716..e721aa18 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -487,7 +487,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Tru # NMS methods https://github.com/ultralytics/yolov3/issues/679 'or', 'and', 'merge', 'vision', 'vision_batch' # Box constraints - min_wh, max_wh = 2, 10000 # (pixels) minimum and maximium box width and height + min_wh, max_wh = 2, 4096 # (pixels) minimum and maximium box width and height output = [None] * len(prediction) for image_i, pred in enumerate(prediction): @@ -524,8 +524,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Tru # Batched NMS if method == 'vision_batch': - i = torchvision.ops.boxes.batched_nms(pred[:, :4], pred[:, 4], pred[:, 5], nms_thres) - output[image_i] = pred[i] + output[image_i] = pred[torchvision.ops.boxes.batched_nms(pred[:, :4], pred[:, 4], pred[:, 5], nms_thres)] continue # All other NMS methods @@ -541,8 +540,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Tru dc = dc[:500] # limit to first 500 boxes: https://github.com/ultralytics/yolov3/issues/117 if method == 'vision': - i = torchvision.ops.boxes.nms(dc[:, :4], dc[:, 4], nms_thres) - det_max.append(dc[i]) + det_max.append(dc[torchvision.ops.boxes.nms(dc[:, :4], dc[:, 4], nms_thres)]) elif method == 'or': # default # METHOD1 From db26b08f5bf1b18a866970416303cb7cdf3fdd18 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 23 Dec 2019 11:05:55 -0800 Subject: [PATCH 1842/2595] updates --- utils/utils.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index e721aa18..02a3b6a6 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -491,13 +491,9 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Tru output = [None] * len(prediction) for image_i, pred in enumerate(prediction): - # Retain > conf + # Apply conf constraint pred = pred[pred[:, 4] > conf_thres] - # Compute conf - torch.sigmoid_(pred[..., 5:]) - pred[..., 5:] *= pred[..., 4:5] # conf = obj_conf * cls_conf - # Apply width-height constraint pred = pred[(pred[:, 2:4] > min_wh).all(1) & (pred[:, 2:4] < max_wh).all(1)] @@ -505,6 +501,10 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Tru if len(pred) == 0: continue + # Compute conf + torch.sigmoid_(pred[..., 5:]) + pred[..., 5:] *= pred[..., 4:5] # conf = obj_conf * cls_conf + # Box (center x, center y, width, height) to (x1, y1, x2, y2) box = xywh2xyxy(pred[:, :4]) From efc5ee480ca532e9501709db039ceaf2af84fa06 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 23 Dec 2019 11:13:00 -0800 Subject: [PATCH 1843/2595] updates --- utils/evolve.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/utils/evolve.sh b/utils/evolve.sh index dd89fbed..2f5321db 100644 --- a/utils/evolve.sh +++ b/utils/evolve.sh @@ -1,9 +1,11 @@ #!/bin/bash #for i in 1 2 3 4 5 6 7 #do -# t=ultralytics/yolov3:v139 && sudo docker pull $t && sudo nvidia-docker run --d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t utils/evolve.sh $i +# t=ultralytics/yolov3:v139 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t utils/evolve.sh $i # sleep 30 # done +# +# t=ultralytics/yolov3:v139 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 320 --epochs 1 --batch-size 64 --accumulate 1 --evolve --weights '' --pre --bucket yolov4/320_coco2014_27e --device 1 while true; do python3 train.py --data coco2014.data --img-size 320 --epochs 27 --batch-size 64 --accumulate 1 --evolve --weights '' --pre --bucket yolov4/320_coco2014_27e --device $1 From 6946a2a8fc8dfeaaa531a7dc5c5b9b5d4986c568 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 23 Dec 2019 11:14:34 -0800 Subject: [PATCH 1844/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 01c865a7..bc082afa 100644 --- a/train.py +++ b/train.py @@ -467,7 +467,7 @@ if __name__ == '__main__': if opt.bucket: os.system('gsutil cp gs://%s/evolve.txt .' % opt.bucket) # download evolve.txt if exists - for _ in range(1): # generations to evolve + for _ in range(100): # generations to evolve if os.path.exists('evolve.txt'): # if evolve.txt exists: select best hyps and mutate # Select parent(s) x = np.loadtxt('evolve.txt', ndmin=2) From 26ed5e2ddcf3b2a0324a25f1d2e5994f3ed447e4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 23 Dec 2019 11:25:15 -0800 Subject: [PATCH 1845/2595] updates --- detect.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/detect.py b/detect.py index 051ca6fc..034a1184 100644 --- a/detect.py +++ b/detect.py @@ -88,7 +88,7 @@ def detect(save_txt=False, save_img=False): # Apply NMS pred = non_max_suppression(pred, opt.conf_thres, opt.nms_thres) - # Apply + # Apply Classifier if classify: pred = apply_classifier(pred, modelc, img, im0s) @@ -105,6 +105,9 @@ def detect(save_txt=False, save_img=False): # Rescale boxes from img_size to im0 size det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round() + # Print time (inference + NMS) + print('%sDone. (%.3fs)' % (s, time.time() - t)) + # Print results for c in det[:, -1].unique(): n = (det[:, -1] == c).sum() # detections per class @@ -120,8 +123,6 @@ def detect(save_txt=False, save_img=False): label = '%s %.2f' % (names[int(cls)], conf) plot_one_box(xyxy, im0, label=label, color=colors[int(cls)]) - print('%sDone. (%.3fs)' % (s, time.time() - t)) - # Stream results if view_img: cv2.imshow(p, im0) From c459bc6d4ab562d6a5132cc1edfc3c2ef88a7570 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 23 Dec 2019 12:11:37 -0800 Subject: [PATCH 1846/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index bc082afa..ef48477a 100644 --- a/train.py +++ b/train.py @@ -467,7 +467,7 @@ if __name__ == '__main__': if opt.bucket: os.system('gsutil cp gs://%s/evolve.txt .' % opt.bucket) # download evolve.txt if exists - for _ in range(100): # generations to evolve + for _ in range(1000): # generations to evolve if os.path.exists('evolve.txt'): # if evolve.txt exists: select best hyps and mutate # Select parent(s) x = np.loadtxt('evolve.txt', ndmin=2) From 78dfa384ee27020ef72b9c2ddccad29a7a9ffcc1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 23 Dec 2019 12:24:48 -0800 Subject: [PATCH 1847/2595] updates --- utils/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 02a3b6a6..32484956 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -377,7 +377,8 @@ def compute_loss(p, targets, model): # predictions, targets, model # GIoU pxy = torch.sigmoid(ps[:, 0:2]) # pxy = pxy * s - (s - 1) / 2, s = 1.5 (scale_xy) - pbox = torch.cat((pxy, torch.exp(ps[:, 2:4]).clamp(max=1E3) * anchor_vec[i]), 1) # predicted box + pwh = torch.exp(ps[:, 2:4]).clamp(max=1E3) * anchor_vec[i] + pbox = torch.cat((pxy, pwh), 1) # predicted box giou = 1.0 - bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation lbox += giou.sum() if red == 'sum' else giou.mean() # giou loss From ba24e26f7ea3caef6a5387b2c414b5cd44af0637 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 23 Dec 2019 15:43:00 -0800 Subject: [PATCH 1848/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index ef48477a..5c939931 100644 --- a/train.py +++ b/train.py @@ -467,7 +467,7 @@ if __name__ == '__main__': if opt.bucket: os.system('gsutil cp gs://%s/evolve.txt .' % opt.bucket) # download evolve.txt if exists - for _ in range(1000): # generations to evolve + for _ in range(1): # generations to evolve if os.path.exists('evolve.txt'): # if evolve.txt exists: select best hyps and mutate # Select parent(s) x = np.loadtxt('evolve.txt', ndmin=2) @@ -484,7 +484,7 @@ if __name__ == '__main__': # Mutate np.random.seed(int(time.time())) - s = np.random.random() * 0.2 # sigma + s = np.random.random() * 0.15 # sigma g = [1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 1, 1, 1, 1, 1, 1, 1, 1] # gains for i, k in enumerate(hyp.keys()): x = (np.random.randn() * s * g[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) From f04fb9a9cdf15084cfd27f021b28c9610a146ee7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 23 Dec 2019 18:02:03 -0800 Subject: [PATCH 1849/2595] updates --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 39ab1ee4..dec7bc1f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Start FROM Nvidia PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorch -FROM nvcr.io/nvidia/pytorch:19.10-py3 +FROM nvcr.io/nvidia/pytorch:19.12-py3 # Install dependencies (pip or conda) RUN pip install -U gsutil From 61609b54b191304cc1019d1f47ee3fe689fa0450 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 23 Dec 2019 20:52:57 -0800 Subject: [PATCH 1850/2595] updates --- utils/evolve.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/evolve.sh b/utils/evolve.sh index 2f5321db..a2283980 100644 --- a/utils/evolve.sh +++ b/utils/evolve.sh @@ -8,5 +8,5 @@ # t=ultralytics/yolov3:v139 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 320 --epochs 1 --batch-size 64 --accumulate 1 --evolve --weights '' --pre --bucket yolov4/320_coco2014_27e --device 1 while true; do -python3 train.py --data coco2014.data --img-size 320 --epochs 27 --batch-size 64 --accumulate 1 --evolve --weights '' --pre --bucket yolov4/320_coco2014_27e --device $1 +python3 train.py --data coco2014.data --img-size 320 --epochs 27 --batch-size 64 --accumulate 1 --evolve --weights '' --arc defaultpw --pre --bucket yolov4/320_coco2014_27e --device $1 done From 05a9a6205f3142ff697a1250318112fb6b9df3dc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 23 Dec 2019 23:28:56 -0800 Subject: [PATCH 1851/2595] updates --- detect.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/detect.py b/detect.py index 034a1184..9df3a1c6 100644 --- a/detect.py +++ b/detect.py @@ -105,14 +105,14 @@ def detect(save_txt=False, save_img=False): # Rescale boxes from img_size to im0 size det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round() - # Print time (inference + NMS) - print('%sDone. (%.3fs)' % (s, time.time() - t)) - # Print results for c in det[:, -1].unique(): n = (det[:, -1] == c).sum() # detections per class s += '%g %ss, ' % (n, names[int(c)]) # add to string + # Print time (inference + NMS) + print('%sDone. (%.3fs)' % (s, time.time() - t)) + # Write results for *xyxy, conf, cls in det: if save_txt: # Write to file From 1e1cffae8b3726101dcbb1e563edae44d78b5d46 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 23 Dec 2019 23:34:30 -0800 Subject: [PATCH 1852/2595] updates --- models.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/models.py b/models.py index 48815452..c3bf5a18 100755 --- a/models.py +++ b/models.py @@ -182,11 +182,10 @@ class YOLOLayer(nn.Module): anchor_wh = self.anchor_wh.repeat((1, 1, self.nx, self.ny, 1)).view(1, m, 2) / ngu p = p.view(m, self.no) - xy = torch.sigmoid(p[..., 0:2]) + grid_xy[0] # x, y - wh = torch.exp(p[..., 2:4]) * anchor_wh[0] # width, height - p_conf = torch.sigmoid(p[:, 4:5]) # Conf - p_cls = F.softmax(p[:, 5:self.no], 1) * p_conf # SSD-like conf - return torch.cat((xy / ngu[0], wh, p_conf, p_cls), 1).t() + xy = torch.sigmoid(p[:, 0:2]) + grid_xy[0] # x, y + wh = torch.exp(p[:, 2:4]) * anchor_wh[0] # width, height + p_cls = F.softmax(p[:, 5:self.no], 1) * torch.sigmoid(p[:, 4:5]) # SSD-like conf + return torch.cat((xy / ngu[0], wh, p_cls), 1).t() # p = p.view(1, m, self.no) # xy = torch.sigmoid(p[..., 0:2]) + grid_xy # x, y @@ -203,7 +202,7 @@ class YOLOLayer(nn.Module): else: # inference # s = 1.5 # scale_xy (pxy = pxy * s - (s - 1) / 2) io = p.clone() # inference output - io[..., 0:2] = torch.sigmoid(io[..., 0:2]) + self.grid_xy # xy + io[..., :2] = torch.sigmoid(io[..., :2]) + self.grid_xy # xy io[..., 2:4] = torch.exp(io[..., 2:4]) * self.anchor_wh # wh yolo method # io[..., 2:4] = ((torch.sigmoid(io[..., 2:4]) * 2) ** 3) * self.anchor_wh # wh power method io[..., :4] *= self.stride @@ -270,7 +269,7 @@ class Darknet(nn.Module): elif ONNX_EXPORT: output = torch.cat(output, 1) # cat 3 layers 85 x (507, 2028, 8112) to 85 x 10647 nc = self.module_list[self.yolo_layers[0]].nc # number of classes - return output[5:5 + nc].t(), output[0:4].t() # ONNX scores, boxes + return output[4:4 + nc].t(), output[0:4].t() # ONNX scores, boxes else: io, p = list(zip(*output)) # inference output, training output return torch.cat(io, 1), p From 804f82a4b0fb3ba8a9f92429ac206a4714620cdf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 24 Dec 2019 12:26:35 -0800 Subject: [PATCH 1853/2595] updates --- utils/utils.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 32484956..22d8789c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -223,8 +223,7 @@ def compute_ap(recall, precision): mpre = np.concatenate(([0.], precision, [0.])) # Compute the precision envelope - for i in range(mpre.size - 1, 0, -1): - mpre[i - 1] = np.maximum(mpre[i - 1], mpre[i]) + mpre = np.flip(np.maximum.accumulate(np.flip(mpre))) # Integrate area under curve method = 'interp' # methods: 'continuous', 'interp' From 0f225afe330a190d48f2a864bde9c48ba9467b05 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 24 Dec 2019 12:42:22 -0800 Subject: [PATCH 1854/2595] updates --- test.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test.py b/test.py index b05be9ad..1461c714 100644 --- a/test.py +++ b/test.py @@ -106,6 +106,9 @@ def test(cfg, # with open('test.txt', 'a') as file: # [file.write('%11.5g' * 7 % tuple(x) + '\n') for x in pred] + # Clip boxes to image bounds + clip_coords(pred, (height, width)) + # Append to pycocotools JSON dictionary if save_json: # [{"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], "score": 0.236}, ... @@ -120,11 +123,8 @@ def test(cfg, 'bbox': [floatn(x, 3) for x in box[di]], 'score': floatn(d[4], 5)}) - # Clip boxes to image bounds - clip_coords(pred, (height, width)) - # Assign all predictions as incorrect - correct = torch.zeros(len(pred), niou) + correct = torch.zeros(len(pred), niou, dtype=torch.bool) if nl: detected = [] # target indices tcls_tensor = labels[:, 0] @@ -147,7 +147,7 @@ def test(cfg, d = ti[i[j]] # detected target if d not in detected: detected.append(d) - correct[pi[j]] = (ious[j] > iou_thres).float() # iou_thres is 1xn + correct[pi[j]] = ious[j] > iou_thres # iou_thres is 1xn if len(detected) == nl: # all targets already located in image break From 3c4e7751ed96e90498cecb08a3cf47a66ad53e3b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 24 Dec 2019 13:11:01 -0800 Subject: [PATCH 1855/2595] updates --- test.py | 2 +- train.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test.py b/test.py index 1461c714..8b9776fe 100644 --- a/test.py +++ b/test.py @@ -209,7 +209,7 @@ if __name__ == '__main__': parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path') parser.add_argument('--data', type=str, default='data/coco2014.data', help='*.data path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') - parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') + parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') diff --git a/train.py b/train.py index 5c939931..ee9caad2 100644 --- a/train.py +++ b/train.py @@ -213,7 +213,7 @@ def train(): rect=True, cache_labels=True, cache_images=opt.cache_images), - batch_size=batch_size, + batch_size=batch_size * 2, num_workers=nw, pin_memory=True, collate_fn=dataset.collate_fn) @@ -326,7 +326,7 @@ def train(): is_coco = any([x in data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) and model.nc == 80 results, maps = test.test(cfg, data, - batch_size=batch_size, + batch_size=batch_size * 2, img_size=opt.img_size, model=model, conf_thres=0.001 if final_epoch else 0.1, # 0.1 for speed From d595f0847d9155003015efe15fc3cb2ae5c3ec63 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 24 Dec 2019 13:41:52 -0800 Subject: [PATCH 1856/2595] updates --- utils/utils.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/utils/utils.py b/utils/utils.py index 22d8789c..7c57d71d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -126,6 +126,26 @@ def xywh2xyxy(x): return y +# def xywh2xyxy(box): +# # Convert nx4 boxes from [x, y, w, h] to [x1, y1, x2, y2] +# if isinstance(box, torch.Tensor): +# x, y, w, h = box.t() +# return torch.stack((x - w / 2, y - h / 2, x + w / 2, y + h / 2)).t() +# else: # numpy +# x, y, w, h = box.T +# return np.stack((x - w / 2, y - h / 2, x + w / 2, y + h / 2)).T +# +# +# def xyxy2xywh(box): +# # Convert nx4 boxes from [x1, y1, x2, y2] to [x, y, w, h] +# if isinstance(box, torch.Tensor): +# x1, y1, x2, y2 = box.t() +# return torch.stack(((x1 + x2) / 2, (y1 + y2) / 2, x2 - x1, y2 - y1)).t() +# else: # numpy +# x1, y1, x2, y2 = box.T +# return np.stack(((x1 + x2) / 2, (y1 + y2) / 2, x2 - x1, y2 - y1)).T + + def scale_coords(img1_shape, coords, img0_shape, ratio_pad=None): # Rescale coords (xyxy) from img1_shape to img0_shape if ratio_pad is None: # calculate from img0_shape From 8319011489beb339a69abe62404546158d12e586 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 24 Dec 2019 13:57:12 -0800 Subject: [PATCH 1857/2595] updates --- test.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/test.py b/test.py index 8b9776fe..00e7eec5 100644 --- a/test.py +++ b/test.py @@ -219,8 +219,8 @@ if __name__ == '__main__': opt.save_json = opt.save_json or any([x in opt.data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) print(opt) - study = False - if not study: + task = 'test' # 'test', 'study', 'benchmark' + if task == 'test': # Test test(opt.cfg, opt.data, @@ -230,7 +230,18 @@ if __name__ == '__main__': opt.conf_thres, opt.nms_thres, opt.save_json) - else: + + elif task == 'benchmark': + # mAPs at 320-608 at conf 0.5 and 0.7 + y = [] + for i in [320, 416, 512, 608]: + for j in [0.5, 0.7]: + t = time.time() + r = test(opt.cfg, opt.data, opt.weights, opt.batch_size, i, opt.conf_thres, j, opt.save_json)[0] + y.append(r + (time.time() - t,)) + np.savetxt('benchmark.txt', y, fmt='%10.4g') # y = np.loadtxt('study.txt') + + elif task == 'study': # Parameter study y = [] x = np.arange(0.4, 0.9, 0.05) @@ -238,11 +249,11 @@ if __name__ == '__main__': t = time.time() r = test(opt.cfg, opt.data, opt.weights, opt.batch_size, opt.img_size, opt.conf_thres, v, opt.save_json)[0] y.append(r + (time.time() - t,)) - y = np.stack(y, 0) np.savetxt('study.txt', y, fmt='%10.4g') # y = np.loadtxt('study.txt') # Plot fig, ax = plt.subplots(3, 1, figsize=(6, 6)) + y = np.stack(y, 0) ax[0].plot(x, y[:, 2], marker='.', label='mAP@0.5') ax[0].set_ylabel('mAP') ax[1].plot(x, y[:, 3], marker='.', label='mAP@0.5:0.95') From f7ac56db3919786ee65de071d27989b46e0ad420 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 24 Dec 2019 13:58:45 -0800 Subject: [PATCH 1858/2595] updates --- test.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test.py b/test.py index 00e7eec5..67476a81 100644 --- a/test.py +++ b/test.py @@ -214,13 +214,13 @@ if __name__ == '__main__': parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') parser.add_argument('--save-json', action='store_true', help='save a cocoapi-compatible JSON results file') + parser.add_argument('--task', default='test', help="'test', 'study', 'benchmark'") parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') opt = parser.parse_args() opt.save_json = opt.save_json or any([x in opt.data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) print(opt) - task = 'test' # 'test', 'study', 'benchmark' - if task == 'test': + if opt.task == 'test': # task = 'test', 'study', 'benchmark' # Test test(opt.cfg, opt.data, @@ -231,7 +231,7 @@ if __name__ == '__main__': opt.nms_thres, opt.save_json) - elif task == 'benchmark': + elif opt.task == 'benchmark': # mAPs at 320-608 at conf 0.5 and 0.7 y = [] for i in [320, 416, 512, 608]: @@ -241,7 +241,7 @@ if __name__ == '__main__': y.append(r + (time.time() - t,)) np.savetxt('benchmark.txt', y, fmt='%10.4g') # y = np.loadtxt('study.txt') - elif task == 'study': + elif opt.task == 'study': # Parameter study y = [] x = np.arange(0.4, 0.9, 0.05) From 2ee0d0c71462ee801408f5e39acd3a2b3774ab71 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 24 Dec 2019 13:59:20 -0800 Subject: [PATCH 1859/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 7c57d71d..312b8a95 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -497,7 +497,7 @@ def build_targets(model, targets): return tcls, tbox, indices, av -def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=True, method='vision'): +def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=True, method='vision_batch'): """ Removes detections with lower object confidence score than 'conf_thres' Non-Maximum Suppression to further filter detections. From cdc382e3131194c1e211b595e646e3943bd23c69 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 24 Dec 2019 14:11:31 -0800 Subject: [PATCH 1860/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 67476a81..4315d826 100644 --- a/test.py +++ b/test.py @@ -21,7 +21,7 @@ def test(cfg, # Initialize/load model and set device if model is None: device = torch_utils.select_device(opt.device, batch_size=batch_size) - verbose = True + verbose = opt.task == 'test' # Remove previous for f in glob.glob('test_batch*.jpg'): From 34d9392bac8a9a3a403e747c808f8ebfbfcffaa2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 25 Dec 2019 14:47:50 -0800 Subject: [PATCH 1861/2595] updates --- utils/utils.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 312b8a95..852f3d83 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -539,14 +539,15 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Tru # Apply finite constraint pred = pred[torch.isfinite(pred).all(1)] - # Get detections sorted by decreasing confidence scores - pred = pred[pred[:, 4].argsort(descending=True)] - # Batched NMS if method == 'vision_batch': output[image_i] = pred[torchvision.ops.boxes.batched_nms(pred[:, :4], pred[:, 4], pred[:, 5], nms_thres)] continue + # Sort by confidence + if not method.startswith('vision'): + pred = pred[pred[:, 4].argsort(descending=True)] + # All other NMS methods det_max = [] cls = pred[:, -1] From d1087f49870246d3f2d56ba86c2e0b6f320273ec Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 25 Dec 2019 14:55:11 -0800 Subject: [PATCH 1862/2595] updates --- utils/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 852f3d83..38ff9fd3 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -537,7 +537,8 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Tru pred = torch.cat((box, conf.unsqueeze(1), j.float().unsqueeze(1)), 1) # Apply finite constraint - pred = pred[torch.isfinite(pred).all(1)] + if not torch.isfinite(pred).all(): + pred = pred[torch.isfinite(pred).all(1)] # Batched NMS if method == 'vision_batch': From 8ae06ad7c346fd85c7414e917a824596703bc422 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 25 Dec 2019 19:58:20 -0800 Subject: [PATCH 1863/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index ee9caad2..f6411e27 100644 --- a/train.py +++ b/train.py @@ -208,7 +208,7 @@ def train(): # Test Dataloader if not opt.prebias: - testloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path, opt.img_size, batch_size, + testloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path, opt.img_size, batch_size * 2, hyp=hyp, rect=True, cache_labels=True, From fea54c4a85cb7d6fc958f7dd76508a9b4cb06ce8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Dec 2019 12:30:51 -0800 Subject: [PATCH 1864/2595] updates --- detect.py | 4 ++-- test.py | 10 +++++----- utils/utils.py | 14 +++++++------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/detect.py b/detect.py index 9df3a1c6..74838a49 100644 --- a/detect.py +++ b/detect.py @@ -86,7 +86,7 @@ def detect(save_txt=False, save_img=False): pred = pred.float() # Apply NMS - pred = non_max_suppression(pred, opt.conf_thres, opt.nms_thres) + pred = non_max_suppression(pred, opt.conf_thres, opt.iou_thres) # Apply Classifier if classify: @@ -162,7 +162,7 @@ if __name__ == '__main__': parser.add_argument('--output', type=str, default='output', help='output folder') # output folder parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.3, help='object confidence threshold') - parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') + parser.add_argument('--iou-thres', type=float, default=0.5, help='IOU threshold for NMS') parser.add_argument('--fourcc', type=str, default='mp4v', help='output video codec (verify ffmpeg support)') parser.add_argument('--half', action='store_true', help='half precision FP16 inference') parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') diff --git a/test.py b/test.py index 4315d826..19aca3c7 100644 --- a/test.py +++ b/test.py @@ -14,7 +14,7 @@ def test(cfg, batch_size=16, img_size=416, conf_thres=0.001, - nms_thres=0.5, + iou_thres=0.5, save_json=False, model=None, dataloader=None): @@ -88,7 +88,7 @@ def test(cfg, loss += compute_loss(train_out, targets, model)[1][:3].cpu() # GIoU, obj, cls # Run NMS - output = non_max_suppression(inf_out, conf_thres=conf_thres, nms_thres=nms_thres) + output = non_max_suppression(inf_out, conf_thres=conf_thres, iou_thres=iou_thres) # Statistics per image for si, pred in enumerate(output): @@ -212,7 +212,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') - parser.add_argument('--nms-thres', type=float, default=0.5, help='iou threshold for non-maximum suppression') + parser.add_argument('--iou-thres', type=float, default=0.5, help='IOU threshold for NMS') parser.add_argument('--save-json', action='store_true', help='save a cocoapi-compatible JSON results file') parser.add_argument('--task', default='test', help="'test', 'study', 'benchmark'") parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') @@ -228,7 +228,7 @@ if __name__ == '__main__': opt.batch_size, opt.img_size, opt.conf_thres, - opt.nms_thres, + opt.iou_thres, opt.save_json) elif opt.task == 'benchmark': @@ -262,6 +262,6 @@ if __name__ == '__main__': ax[2].set_ylabel('time (s)') for i in range(3): ax[i].legend() - ax[i].set_xlabel('nms_thr') + ax[i].set_xlabel('iou_thr') fig.tight_layout() plt.savefig('study.jpg', dpi=200) diff --git a/utils/utils.py b/utils/utils.py index 38ff9fd3..6a9d0861 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -497,7 +497,7 @@ def build_targets(model, targets): return tcls, tbox, indices, av -def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=True, method='vision_batch'): +def non_max_suppression(prediction, conf_thres=0.5, iou_thres=0.5, multi_cls=True, method='vision_batch'): """ Removes detections with lower object confidence score than 'conf_thres' Non-Maximum Suppression to further filter detections. @@ -542,7 +542,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Tru # Batched NMS if method == 'vision_batch': - output[image_i] = pred[torchvision.ops.boxes.batched_nms(pred[:, :4], pred[:, 4], pred[:, 5], nms_thres)] + output[image_i] = pred[torchvision.ops.boxes.batched_nms(pred[:, :4], pred[:, 4], pred[:, 5], iou_thres)] continue # Sort by confidence @@ -562,7 +562,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Tru dc = dc[:500] # limit to first 500 boxes: https://github.com/ultralytics/yolov3/issues/117 if method == 'vision': - det_max.append(dc[torchvision.ops.boxes.nms(dc[:, :4], dc[:, 4], nms_thres)]) + det_max.append(dc[torchvision.ops.boxes.nms(dc[:, :4], dc[:, 4], iou_thres)]) elif method == 'or': # default # METHOD1 @@ -570,7 +570,7 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Tru # while len(ind): # j = ind[0] # det_max.append(dc[j:j + 1]) # save highest conf detection - # reject = (bbox_iou(dc[j], dc[ind]) > nms_thres).nonzero() + # reject = (bbox_iou(dc[j], dc[ind]) > iou_thres).nonzero() # [ind.pop(i) for i in reversed(reject)] # METHOD2 @@ -579,21 +579,21 @@ def non_max_suppression(prediction, conf_thres=0.5, nms_thres=0.5, multi_cls=Tru if len(dc) == 1: # Stop if we're at the last detection break iou = bbox_iou(dc[0], dc[1:]) # iou with other boxes - dc = dc[1:][iou < nms_thres] # remove ious > threshold + dc = dc[1:][iou < iou_thres] # remove ious > threshold elif method == 'and': # requires overlap, single boxes erased while len(dc) > 1: iou = bbox_iou(dc[0], dc[1:]) # iou with other boxes if iou.max() > 0.5: det_max.append(dc[:1]) - dc = dc[1:][iou < nms_thres] # remove ious > threshold + dc = dc[1:][iou < iou_thres] # remove ious > threshold elif method == 'merge': # weighted mixture box while len(dc): if len(dc) == 1: det_max.append(dc) break - i = bbox_iou(dc[0], dc) > nms_thres # iou with other boxes + i = bbox_iou(dc[0], dc) > iou_thres # iou with other boxes weights = dc[i, 4:5] dc[0, :4] = (weights * dc[i, :4]).sum(0) / weights.sum() det_max.append(dc[:1]) From b4552091dc74ded4f7dabefa0ae2290374bf5d73 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Dec 2019 12:31:30 -0800 Subject: [PATCH 1865/2595] updates --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c8611590..2e884e0e 100755 --- a/README.md +++ b/README.md @@ -146,10 +146,11 @@ python3 test.py --weights ... --cfg ... |Size |COCO mAP
@0.5...0.95 |COCO mAP
@0.5 --- | --- | --- | --- -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |320 |14.0
28.7
30.5
**35.4** |29.1
51.8
52.3
**54.3** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |416 |16.0
31.2
33.9
**39.0** |33.0
55.4
56.9
**59.2** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |512 |16.6
32.7
35.6
**40.3** |34.9
57.7
59.5
**60.6** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
33.1
37.0
**40.9** |35.4
58.2
60.7
**60.9** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |320 |14.0
28.7
30.5
**35.5** |29.1
51.8
52.3
**55.4** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |416 |16.0
31.2
33.9
**39.2** |33.0
55.4
56.9
**59.9** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |512 |16.6
32.7
35.6
**40.5** |34.9
57.7
59.5
**61.4** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
33.1
37.0
**41.1** |35.4
58.2
60.7
**61.5** + ```bash $ python3 test.py --save-json --img-size 608 --nms-thres 0.5 --weights ultralytics68.pt From 326503425bc797c5f3fc2dd190309a9521b3eb1f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Dec 2019 12:52:25 -0800 Subject: [PATCH 1866/2595] updates --- README.md | 118 +++++++++--------------------------------------------- 1 file changed, 18 insertions(+), 100 deletions(-) diff --git a/README.md b/README.md index 2e884e0e..c44987e4 100755 --- a/README.md +++ b/README.md @@ -140,7 +140,7 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' python3 test.py --weights ... --cfg ... ``` -- mAP@0.5 run at `--nms-thres 0.5`, mAP@0.5...0.95 run at `--nms-thres 0.7` +- mAP@0.5 run at `--iou-thr 0.5`, mAP@0.5...0.95 run at `--iou-thr 0.7` - YOLOv3-SPP ultralytics is `ultralytics68.pt` with `yolov3-spp.cfg` - Darknet results: https://arxiv.org/abs/1804.02767 @@ -153,106 +153,24 @@ YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
```bash -$ python3 test.py --save-json --img-size 608 --nms-thres 0.5 --weights ultralytics68.pt +$ python3 test.py --img-size 608 --iou-thr 0.5 --weights ultralytics68.pt --cfg yolov3-spp.cfg -Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', device='1', img_size=608, iou_thres=0.5, nms_thres=0.7, save_json=True, weights='ultralytics68.pt') -Using CUDA device0 _CudaDeviceProperties(name='GeForce RTX 2080 Ti', total_memory=11019MB) - - Class Images Targets P R mAP@0.5 F1: 100%|███████████████████████████████████████████████████████████████████████████████████| 313/313 [09:46<00:00, 1.09it/s] - all 5e+03 3.58e+04 0.0823 0.798 0.595 0.145 - person 5e+03 1.09e+04 0.0999 0.903 0.771 0.18 - bicycle 5e+03 316 0.0491 0.782 0.56 0.0925 - car 5e+03 1.67e+03 0.0552 0.845 0.646 0.104 - motorcycle 5e+03 391 0.11 0.847 0.704 0.194 - airplane 5e+03 131 0.099 0.947 0.878 0.179 - bus 5e+03 261 0.142 0.874 0.825 0.244 - train 5e+03 212 0.152 0.863 0.806 0.258 - truck 5e+03 352 0.0849 0.682 0.514 0.151 - boat 5e+03 475 0.0498 0.787 0.504 0.0937 - traffic light 5e+03 516 0.0304 0.752 0.516 0.0584 - fire hydrant 5e+03 83 0.144 0.916 0.882 0.248 - stop sign 5e+03 84 0.0833 0.917 0.809 0.153 - parking meter 5e+03 59 0.0607 0.695 0.611 0.112 - bench 5e+03 473 0.0294 0.685 0.363 0.0564 - bird 5e+03 469 0.0521 0.716 0.524 0.0972 - cat 5e+03 195 0.252 0.908 0.78 0.395 - dog 5e+03 223 0.192 0.883 0.829 0.315 - horse 5e+03 305 0.121 0.911 0.843 0.214 - sheep 5e+03 321 0.114 0.854 0.724 0.201 - cow 5e+03 384 0.105 0.849 0.695 0.187 - elephant 5e+03 284 0.184 0.944 0.912 0.308 - bear 5e+03 53 0.358 0.925 0.875 0.516 - zebra 5e+03 277 0.176 0.935 0.858 0.297 - giraffe 5e+03 170 0.171 0.959 0.892 0.29 - backpack 5e+03 384 0.0426 0.708 0.392 0.0803 - umbrella 5e+03 392 0.0672 0.878 0.65 0.125 - handbag 5e+03 483 0.0238 0.629 0.242 0.0458 - tie 5e+03 297 0.0419 0.805 0.599 0.0797 - suitcase 5e+03 310 0.0823 0.855 0.628 0.15 - frisbee 5e+03 109 0.126 0.872 0.796 0.221 - skis 5e+03 282 0.0473 0.748 0.454 0.089 - snowboard 5e+03 92 0.0579 0.804 0.559 0.108 - sports ball 5e+03 236 0.057 0.733 0.622 0.106 - kite 5e+03 399 0.087 0.852 0.645 0.158 - baseball bat 5e+03 125 0.0496 0.776 0.603 0.0932 - baseball glove 5e+03 139 0.0511 0.734 0.563 0.0956 - skateboard 5e+03 218 0.0655 0.844 0.73 0.122 - surfboard 5e+03 266 0.0709 0.827 0.651 0.131 - tennis racket 5e+03 183 0.0694 0.858 0.759 0.128 - bottle 5e+03 966 0.0484 0.812 0.513 0.0914 - wine glass 5e+03 366 0.0735 0.738 0.543 0.134 - cup 5e+03 897 0.0637 0.788 0.538 0.118 - fork 5e+03 234 0.0411 0.662 0.487 0.0774 - knife 5e+03 291 0.0334 0.557 0.292 0.0631 - spoon 5e+03 253 0.0281 0.621 0.307 0.0537 - bowl 5e+03 620 0.0624 0.795 0.514 0.116 - banana 5e+03 371 0.052 0.83 0.41 0.0979 - apple 5e+03 158 0.0293 0.741 0.262 0.0564 - sandwich 5e+03 160 0.0913 0.725 0.522 0.162 - orange 5e+03 189 0.0382 0.688 0.32 0.0723 - broccoli 5e+03 332 0.0513 0.88 0.445 0.097 - carrot 5e+03 346 0.0398 0.766 0.362 0.0757 - hot dog 5e+03 164 0.0958 0.646 0.494 0.167 - pizza 5e+03 224 0.0886 0.875 0.699 0.161 - donut 5e+03 237 0.0925 0.827 0.64 0.166 - cake 5e+03 241 0.0658 0.71 0.539 0.12 - chair 5e+03 1.62e+03 0.0432 0.793 0.489 0.0819 - couch 5e+03 236 0.118 0.801 0.584 0.205 - potted plant 5e+03 431 0.0373 0.852 0.505 0.0714 - bed 5e+03 195 0.149 0.846 0.693 0.253 - dining table 5e+03 634 0.0546 0.82 0.49 0.102 - toilet 5e+03 179 0.161 0.95 0.81 0.275 - tv 5e+03 257 0.0922 0.903 0.79 0.167 - laptop 5e+03 237 0.127 0.869 0.744 0.222 - mouse 5e+03 95 0.0648 0.863 0.732 0.12 - remote 5e+03 241 0.0436 0.788 0.535 0.0827 - keyboard 5e+03 117 0.0668 0.923 0.755 0.125 - cell phone 5e+03 291 0.0364 0.704 0.436 0.0692 - microwave 5e+03 88 0.154 0.841 0.743 0.261 - oven 5e+03 142 0.0618 0.803 0.576 0.115 - toaster 5e+03 11 0.0565 0.636 0.191 0.104 - sink 5e+03 211 0.0439 0.853 0.544 0.0835 - refrigerator 5e+03 107 0.0791 0.907 0.742 0.145 - book 5e+03 1.08e+03 0.0399 0.667 0.233 0.0753 - clock 5e+03 292 0.0542 0.836 0.733 0.102 - vase 5e+03 353 0.0675 0.799 0.591 0.125 - scissors 5e+03 56 0.0397 0.75 0.461 0.0755 - teddy bear 5e+03 245 0.0995 0.882 0.669 0.179 - hair drier 5e+03 11 0.00508 0.0909 0.0475 0.00962 - toothbrush 5e+03 77 0.0371 0.74 0.418 0.0706 - - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.409 - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.600 - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.446 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.243 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.450 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.514 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.326 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.536 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.593 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.422 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.640 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.707 +Namespace(batch_size=32, cfg='yolov3-spp.cfg', conf_thres=0.001, data='data/coco2014.data', device='', img_size=608, iou_thres=0.5, save_json=True, task='test', weights='ultralytics68.pt') +Using CUDA device0 _CudaDeviceProperties(name='Tesla P100-PCIE-16GB', total_memory=16280MB) + Class Images Targets P R mAP@0.5 F1: 100% 157/157 [04:13<00:00, 1.16it/s] + all 5e+03 3.51e+04 0.0437 0.88 0.607 0.0822 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.406 + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.615 + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.431 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.238 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.444 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.516 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.337 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.548 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.592 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.418 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.635 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.729 ``` # Reproduce Our Results From a5f923d697e5933be82b680ae1b950b6d7c85e84 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Dec 2019 12:53:11 -0800 Subject: [PATCH 1867/2595] updates --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index c44987e4..2d81c11a 100755 --- a/README.md +++ b/README.md @@ -151,7 +151,6 @@ YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |416 |16.0
YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |512 |16.6
32.7
35.6
**40.5** |34.9
57.7
59.5
**61.4** YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
33.1
37.0
**41.1** |35.4
58.2
60.7
**61.5** - ```bash $ python3 test.py --img-size 608 --iou-thr 0.5 --weights ultralytics68.pt --cfg yolov3-spp.cfg From 4bbed32f01856edadf229c792586ab74cc09e8b5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Dec 2019 08:10:05 -0800 Subject: [PATCH 1868/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index f6411e27..cfa63ed1 100644 --- a/train.py +++ b/train.py @@ -471,7 +471,7 @@ if __name__ == '__main__': if os.path.exists('evolve.txt'): # if evolve.txt exists: select best hyps and mutate # Select parent(s) x = np.loadtxt('evolve.txt', ndmin=2) - parent = 'single' # parent selection method: 'single' or 'weighted' + parent = 'weighted' # parent selection method: 'single' or 'weighted' if parent == 'single' or len(x) == 1: x = x[fitness(x).argmax()] elif parent == 'weighted': # weighted combination From 0bdbe5648d79c5c12fec8d9e4f599afe92064563 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Dec 2019 08:16:18 -0800 Subject: [PATCH 1869/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 6a9d0861..68c9a82d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -831,7 +831,7 @@ def apply_classifier(x, model, img, im0): def fitness(x): # Returns fitness (for use with results.txt or evolve.txt) - return x[:, 2] * 0.1 + x[:, 3] * 0.9 # weighted combination of x=[p, r, mAP@0.5, F1 or mAP@0.5:0.95] + return x[:, 2] * 0.3 + x[:, 3] * 0.7 # weighted combination of x=[p, r, mAP@0.5, F1 or mAP@0.5:0.95] # Plotting functions --------------------------------------------------------------------------------------------------- From 2fe6c21ce897f8d5e8b62fc83a13056ef80d5be1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Dec 2019 09:28:10 -0800 Subject: [PATCH 1870/2595] updates --- test.py | 10 +++++----- train.py | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/test.py b/test.py index 19aca3c7..642fdbcf 100644 --- a/test.py +++ b/test.py @@ -48,9 +48,9 @@ def test(cfg, nc = int(data['classes']) # number of classes path = data['valid'] # path to test images names = load_classes(data['names']) # class names - iou_thres = torch.linspace(0.5, 0.95, 10).to(device) # for mAP@0.5:0.95 - iou_thres = iou_thres[0].view(1) # for mAP@0.5 - niou = iou_thres.numel() + # iou_thres = torch.linspace(0.5, 0.95, 10).to(device) # for mAP@0.5:0.95 + # iou_thres = iou_thres[0].view(1) # for mAP@0.5 + niou = 1 # len(iou_thres) # Dataloader if dataloader is None: @@ -245,9 +245,9 @@ if __name__ == '__main__': # Parameter study y = [] x = np.arange(0.4, 0.9, 0.05) - for v in x: + for i in x: t = time.time() - r = test(opt.cfg, opt.data, opt.weights, opt.batch_size, opt.img_size, opt.conf_thres, v, opt.save_json)[0] + r = test(opt.cfg, opt.data, opt.weights, opt.batch_size, opt.img_size, opt.conf_thres, i, opt.save_json)[0] y.append(r + (time.time() - t,)) np.savetxt('study.txt', y, fmt='%10.4g') # y = np.loadtxt('study.txt') diff --git a/train.py b/train.py index cfa63ed1..26e6f2b8 100644 --- a/train.py +++ b/train.py @@ -330,6 +330,7 @@ def train(): img_size=opt.img_size, model=model, conf_thres=0.001 if final_epoch else 0.1, # 0.1 for speed + iou_thres=0.6 if opt.evolve else 0.5, save_json=final_epoch and is_coco, dataloader=testloader) From b58f41ef530327f04e396418470fa9d4e7acc499 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Dec 2019 09:29:09 -0800 Subject: [PATCH 1871/2595] updates --- utils/datasets.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index b88b769c..c7d6a017 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -584,10 +584,10 @@ def load_mosaic(self, index): # Augment # img4 = img4[s // 2: int(s * 1.5), s // 2:int(s * 1.5)] # center crop (WARNING, requires box pruning) img4, labels4 = random_affine(img4, labels4, - degrees=self.hyp['degrees'] * 0, - translate=self.hyp['translate'] * 0, - scale=self.hyp['scale'] * 0, - shear=self.hyp['shear'] * 0, + degrees=self.hyp['degrees'] * 1, + translate=self.hyp['translate'] * 1, + scale=self.hyp['scale'] * 1, + shear=self.hyp['shear'] * 1, border=-s // 2) # border to remove return img4, labels4 From 1c07b1906cfa80867c4e5cd991f62bf3a29d00cf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Dec 2019 09:41:19 -0800 Subject: [PATCH 1872/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 68c9a82d..a7e67b0c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -529,7 +529,7 @@ def non_max_suppression(prediction, conf_thres=0.5, iou_thres=0.5, multi_cls=Tru box = xywh2xyxy(pred[:, :4]) # Detections matrix nx6 (xyxy, conf, cls) - if multi_cls or conf_thres < 0.01: + if multi_cls: i, j = (pred[:, 5:] > conf_thres).nonzero().t() pred = torch.cat((box[i], pred[i, j + 5].unsqueeze(1), j.float().unsqueeze(1)), 1) else: # best class only From 440769b954637a74d86f48eb882cc1ac4c2a94f3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Dec 2019 09:55:10 -0800 Subject: [PATCH 1873/2595] updates --- test.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test.py b/test.py index 642fdbcf..7cd13011 100644 --- a/test.py +++ b/test.py @@ -50,7 +50,9 @@ def test(cfg, names = load_classes(data['names']) # class names # iou_thres = torch.linspace(0.5, 0.95, 10).to(device) # for mAP@0.5:0.95 # iou_thres = iou_thres[0].view(1) # for mAP@0.5 - niou = 1 # len(iou_thres) + if isinstance(iou_thres, float): + iou_thres = torch.Tensor([iou_thres]).to(device) # convert to array + niou = iou_thres.numel() # Dataloader if dataloader is None: From 45b7dfc0542824a97d9ea7cc9363e4c84aea4858 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Dec 2019 10:08:58 -0800 Subject: [PATCH 1874/2595] updates --- Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Dockerfile b/Dockerfile index dec7bc1f..5bd6b088 100644 --- a/Dockerfile +++ b/Dockerfile @@ -55,5 +55,8 @@ COPY . /usr/src/app # Kill all # sudo docker kill "$(sudo docker ps -q)" +# Kill all image-based +# sudo docker kill $(sudo docker ps -a -q --filter ancestor=ultralytics/yolov3:v0) + # Run bash for loop # sudo nvidia-docker run --ipc=host ultralytics/yolov3:v0 while true; do python3 train.py --evolve; done From 2cc805eddaffa3cf67c14d890d3e1c067a518a05 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Dec 2019 10:31:12 -0800 Subject: [PATCH 1875/2595] updates --- test.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/test.py b/test.py index 7cd13011..c5e166bb 100644 --- a/test.py +++ b/test.py @@ -14,7 +14,7 @@ def test(cfg, batch_size=16, img_size=416, conf_thres=0.001, - iou_thres=0.5, + iou_thres=0.5, # for nms save_json=False, model=None, dataloader=None): @@ -48,11 +48,9 @@ def test(cfg, nc = int(data['classes']) # number of classes path = data['valid'] # path to test images names = load_classes(data['names']) # class names - # iou_thres = torch.linspace(0.5, 0.95, 10).to(device) # for mAP@0.5:0.95 - # iou_thres = iou_thres[0].view(1) # for mAP@0.5 - if isinstance(iou_thres, float): - iou_thres = torch.Tensor([iou_thres]).to(device) # convert to array - niou = iou_thres.numel() + iouv = torch.linspace(0.5, 0.95, 10).to(device) # iou vector for mAP@0.5:0.95 + iouv = iouv[0].view(1) # for mAP@0.5 + niou = iouv.numel() # Dataloader if dataloader is None: @@ -145,11 +143,11 @@ def test(cfg, ious, i = box_iou(pred[pi, :4], tbox[ti]).max(1) # best ious, indices # Append detections - for j in (ious > iou_thres[0]).nonzero(): + for j in (ious > iouv[0]).nonzero(): d = ti[i[j]] # detected target if d not in detected: detected.append(d) - correct[pi[j]] = ious[j] > iou_thres # iou_thres is 1xn + correct[pi[j]] = ious[j] > iouv # iou_thres is 1xn if len(detected) == nl: # all targets already located in image break From 56d7261083286850cf021ab603d60f8321a51951 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Dec 2019 10:52:19 -0800 Subject: [PATCH 1876/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 26e6f2b8..5fb31e25 100644 --- a/train.py +++ b/train.py @@ -330,7 +330,7 @@ def train(): img_size=opt.img_size, model=model, conf_thres=0.001 if final_epoch else 0.1, # 0.1 for speed - iou_thres=0.6 if opt.evolve else 0.5, + iou_thres=0.6 if final_epoch and is_coco else 0.5, save_json=final_epoch and is_coco, dataloader=testloader) From 043a0e457cb4b981e95bd909b42ac7fa302ed7a7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Dec 2019 11:30:27 -0800 Subject: [PATCH 1877/2595] updates --- README.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 2d81c11a..248795dd 100755 --- a/README.md +++ b/README.md @@ -152,24 +152,24 @@ YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |512 |16.6
YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
33.1
37.0
**41.1** |35.4
58.2
60.7
**61.5** ```bash -$ python3 test.py --img-size 608 --iou-thr 0.5 --weights ultralytics68.pt --cfg yolov3-spp.cfg +$ python3 test.py --img-size 608 --iou-thr 0.6 --weights ultralytics68.pt --cfg yolov3-spp.cfg -Namespace(batch_size=32, cfg='yolov3-spp.cfg', conf_thres=0.001, data='data/coco2014.data', device='', img_size=608, iou_thres=0.5, save_json=True, task='test', weights='ultralytics68.pt') -Using CUDA device0 _CudaDeviceProperties(name='Tesla P100-PCIE-16GB', total_memory=16280MB) - Class Images Targets P R mAP@0.5 F1: 100% 157/157 [04:13<00:00, 1.16it/s] - all 5e+03 3.51e+04 0.0437 0.88 0.607 0.0822 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.406 +Namespace(batch_size=32, cfg='yolov3-spp.cfg', conf_thres=0.001, data='data/coco2014.data', device='', img_size=608, iou_thres=0.6, save_json=True, task='test', weights='ultralytics68.pt') +Using CUDA device0 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', total_memory=16130MB) + Class Images Targets P R mAP@0.5 F1: 100% 157/157 [03:30<00:00, 1.16it/s] + all 5e+03 3.51e+04 0.0353 0.891 0.606 0.0673 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.409 Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.615 - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.431 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.238 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.444 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.516 + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.437 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.242 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.448 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.519 Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.337 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.548 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.592 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.418 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.635 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.729 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.557 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.612 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.438 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.658 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.746 ``` # Reproduce Our Results From 59de209ab26e6898b0599b0afb39d5c29fea77fe Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Dec 2019 11:51:27 -0800 Subject: [PATCH 1878/2595] updates --- utils/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index a7e67b0c..7448496c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -391,15 +391,15 @@ def compute_loss(p, targets, model): # predictions, targets, model if nb: # number of targets ng += nb ps = pi[b, a, gj, gi] # prediction subset corresponding to targets - tobj[b, a, gj, gi] = 1.0 # obj # ps[:, 2:4] = torch.sigmoid(ps[:, 2:4]) # wh power loss (uncomment) # GIoU pxy = torch.sigmoid(ps[:, 0:2]) # pxy = pxy * s - (s - 1) / 2, s = 1.5 (scale_xy) pwh = torch.exp(ps[:, 2:4]).clamp(max=1E3) * anchor_vec[i] pbox = torch.cat((pxy, pwh), 1) # predicted box - giou = 1.0 - bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation - lbox += giou.sum() if red == 'sum' else giou.mean() # giou loss + giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation + lbox += (1.0 - giou).sum() if red == 'sum' else (1.0 - giou).mean() # giou loss + tobj[b, a, gj, gi] = 1.0 # giou.type(tobj.dtype) # obj if 'default' in arc and model.nc > 1: # cls loss (only if multiple classes) t = torch.zeros_like(ps[:, 5:]) # targets From 7ef7501c362d8180c6432e5dbec7daa8223b1b81 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Dec 2019 12:14:01 -0800 Subject: [PATCH 1879/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 7448496c..ba22e6b2 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -436,7 +436,7 @@ def compute_loss(p, targets, model): # predictions, targets, model lcls *= h['cls'] if red == 'sum': lbox *= 3 / ng - lobj *= 3 / np + lobj *= 3 / np * 2 lcls *= 3 / ng / model.nc loss = lbox + lobj + lcls From d859957c66295dab8174a36e43a7c62c79a29855 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Dec 2019 12:34:29 -0800 Subject: [PATCH 1880/2595] updates --- utils/datasets.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index c7d6a017..b88b769c 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -584,10 +584,10 @@ def load_mosaic(self, index): # Augment # img4 = img4[s // 2: int(s * 1.5), s // 2:int(s * 1.5)] # center crop (WARNING, requires box pruning) img4, labels4 = random_affine(img4, labels4, - degrees=self.hyp['degrees'] * 1, - translate=self.hyp['translate'] * 1, - scale=self.hyp['scale'] * 1, - shear=self.hyp['shear'] * 1, + degrees=self.hyp['degrees'] * 0, + translate=self.hyp['translate'] * 0, + scale=self.hyp['scale'] * 0, + shear=self.hyp['shear'] * 0, border=-s // 2) # border to remove return img4, labels4 From d7ea668c42043837fa0ddc1564c2cc27b6eb56e9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Dec 2019 12:41:51 -0800 Subject: [PATCH 1881/2595] updates --- .dockerignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.dockerignore b/.dockerignore index 5798fc6b..a3dab683 100644 --- a/.dockerignore +++ b/.dockerignore @@ -11,6 +11,7 @@ data/samples/* !data/samples/zidane.jpg !data/samples/bus.jpg **/results*.txt +*.jpg # Neural Network weights ----------------------------------------------------------------------------------------------- **/*.weights From 4843cc4e087d7e7a09371e0144eae8902a26ee8d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Dec 2019 12:52:01 -0800 Subject: [PATCH 1882/2595] updates --- train.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/train.py b/train.py index 5fb31e25..3e903c03 100644 --- a/train.py +++ b/train.py @@ -192,7 +192,7 @@ def train(): augment=True, hyp=hyp, # augmentation hyperparameters rect=opt.rect, # rectangular training - image_weights=opt.img_weights, + image_weights=False, cache_labels=epochs > 10, cache_images=opt.cache_images and not opt.prebias) @@ -430,7 +430,6 @@ if __name__ == '__main__': parser.add_argument('--notest', action='store_true', help='only test final epoch') parser.add_argument('--evolve', action='store_true', help='evolve hyperparameters') parser.add_argument('--bucket', type=str, default='', help='gsutil bucket') - parser.add_argument('--img-weights', action='store_true', help='select training images by weight') parser.add_argument('--cache-images', action='store_true', help='cache images for faster training') parser.add_argument('--weights', type=str, default='weights/ultralytics68.pt', help='initial weights') parser.add_argument('--arc', type=str, default='default', help='yolo architecture') # defaultpw, uCE, uBCE From 162ddcf6c717e0362fd76b731e2501b967ec5930 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Dec 2019 13:04:46 -0800 Subject: [PATCH 1883/2595] updates --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 3e903c03..7a9d2d07 100644 --- a/train.py +++ b/train.py @@ -403,15 +403,15 @@ def train(): def prebias(): # trains output bias layers for 1 epoch and creates new backbone if opt.prebias: - a = opt.img_weights # save settings - opt.img_weights = False # disable settings + # opt_0 = opt # save settings + # opt.rect = False # update settings (if any) train() # transfer-learn yolo biases for 1 epoch create_backbone(last) # saved results as backbone.pt + # opt = opt_0 # reset settings opt.weights = wdir + 'backbone.pt' # assign backbone opt.prebias = False # disable prebias - opt.img_weights = a # reset settings if __name__ == '__main__': From e5b5d6a880fcd354e515c8d3b6d7eb2861b4422d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Dec 2019 14:58:31 -0800 Subject: [PATCH 1884/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 7a9d2d07..65151cec 100644 --- a/train.py +++ b/train.py @@ -142,9 +142,9 @@ def train(): if opt.prebias: for p in optimizer.param_groups: # lower param count allows more aggressive training settings: i.e. SGD ~0.1 lr0, ~0.9 momentum - p['lr'] *= 100 # lr gain + p['lr'] = 0.1 # learning rate if p.get('momentum') is not None: # for SGD but not Adam - p['momentum'] *= 0.9 + p['momentum'] = 0.9 for p in model.parameters(): if opt.prebias and p.numel() == nf: # train (yolo biases) From 609a9d94cf7c6fea4ef420e71dd9fc1ff540e40f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Dec 2019 20:32:01 -0800 Subject: [PATCH 1885/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index ba22e6b2..b9194f9f 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -399,7 +399,7 @@ def compute_loss(p, targets, model): # predictions, targets, model pbox = torch.cat((pxy, pwh), 1) # predicted box giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation lbox += (1.0 - giou).sum() if red == 'sum' else (1.0 - giou).mean() # giou loss - tobj[b, a, gj, gi] = 1.0 # giou.type(tobj.dtype) # obj + tobj[b, a, gj, gi] = 1.0 # giou.detach().type(tobj.dtype) * 0.5 + 0.5 # obj if 'default' in arc and model.nc > 1: # cls loss (only if multiple classes) t = torch.zeros_like(ps[:, 5:]) # targets From 2e680fb5449334cff8fb20a8f2f3b85c08950994 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 28 Dec 2019 20:22:44 -0800 Subject: [PATCH 1886/2595] updates --- utils/gcp.sh | 185 ++++++++++++++++++++++++++----------------------- utils/utils.py | 2 +- 2 files changed, 99 insertions(+), 88 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 3ee04ac9..c26015ac 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -15,7 +15,7 @@ git clone https://github.com/ultralytics/yolov3 # master bash yolov3/data/get_coco2017.sh # git clone -b test --depth 1 https://github.com/ultralytics/yolov3 test # branch cd yolov3 -python3 train.py --weights '' --epochs 27 --batch-size 32 --accumulate 2 --nosave --data coco2017.data +python3 test.py --weights ultralytics68.pt --task benchmark # Train python3 train.py @@ -30,21 +30,12 @@ python3 detect.py python3 test.py --save-json # Evolve -for i in 1 2 3 4 5 6 7 +t=ultralytics/yolov3:v148 +sudo docker kill $(sudo docker ps -a -q --filter ancestor=$t) +for i in 0 1 2 3 4 5 6 7 do - export t=ultralytics/yolov3:v139 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 320 --epochs 27 --batch-size 64 --accumulate 1 --evolve --weights '' --pre --arc default --bucket yolov4/320_coco2014_27e --device $i - sleep 30 -done - -export t=ultralytics/yolov3:v139 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco16.data --img-size 320 --epochs 1 --batch-size 8 --accumulate 1 --evolve --weights '' --device 1 - - -export t=ultralytics/yolov3:v139 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t -clear -sleep 0 -while true -do - python3 train.py --data coco2014.data --img-size 416 --epochs 27 --batch-size 32 --accumulate 2 --evolve --weights '' --pre --bucket yolov4/416_coco_27e --device 2 + sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i + sleep 10 done @@ -106,93 +97,113 @@ sudo docker pull ultralytics/yolov3:v0 sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco ultralytics/yolov3:v0 -export t=ultralytics/yolov3:v70 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 70 --device 0 --multi -export t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 71 --device 0 --multi --img-weights +t=ultralytics/yolov3:v70 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 70 --device 0 --multi +t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 71 --device 0 --multi --img-weights -export t=ultralytics/yolov3:v73 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 73 --device 5 --cfg cfg/yolov3s.cfg -export t=ultralytics/yolov3:v74 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 74 --device 0 --cfg cfg/yolov3s.cfg -export t=ultralytics/yolov3:v75 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 75 --device 7 --cfg cfg/yolov3s.cfg -export t=ultralytics/yolov3:v76 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 76 --device 0 --cfg cfg/yolov3-spp.cfg +t=ultralytics/yolov3:v73 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 73 --device 5 --cfg cfg/yolov3s.cfg +t=ultralytics/yolov3:v74 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 74 --device 0 --cfg cfg/yolov3s.cfg +t=ultralytics/yolov3:v75 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 75 --device 7 --cfg cfg/yolov3s.cfg +t=ultralytics/yolov3:v76 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 76 --device 0 --cfg cfg/yolov3-spp.cfg -export t=ultralytics/yolov3:v79 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 79 --device 5 -export t=ultralytics/yolov3:v80 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 80 --device 0 -export t=ultralytics/yolov3:v81 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 81 --device 7 -export t=ultralytics/yolov3:v82 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 82 --device 0 --cfg cfg/yolov3s.cfg +t=ultralytics/yolov3:v79 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 79 --device 5 +t=ultralytics/yolov3:v80 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 80 --device 0 +t=ultralytics/yolov3:v81 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 81 --device 7 +t=ultralytics/yolov3:v82 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 82 --device 0 --cfg cfg/yolov3s.cfg -export t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 83 --device 6 --multi --nosave -export t=ultralytics/yolov3:v84 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 84 --device 0 --multi -export t=ultralytics/yolov3:v85 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 85 --device 0 --multi -export t=ultralytics/yolov3:v86 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 86 --device 1 --multi -export t=ultralytics/yolov3:v87 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 87 --device 2 --multi -export t=ultralytics/yolov3:v88 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 88 --device 3 --multi -export t=ultralytics/yolov3:v89 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 89 --device 1 -export t=ultralytics/yolov3:v90 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 90 --device 0 --cfg cfg/yolov3-spp-matrix.cfg -export t=ultralytics/yolov3:v91 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 91 --device 0 --cfg cfg/yolov3-spp-matrix.cfg +t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 83 --device 6 --multi --nosave +t=ultralytics/yolov3:v84 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 84 --device 0 --multi +t=ultralytics/yolov3:v85 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 85 --device 0 --multi +t=ultralytics/yolov3:v86 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 86 --device 1 --multi +t=ultralytics/yolov3:v87 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 87 --device 2 --multi +t=ultralytics/yolov3:v88 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 88 --device 3 --multi +t=ultralytics/yolov3:v89 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 89 --device 1 +t=ultralytics/yolov3:v90 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 90 --device 0 --cfg cfg/yolov3-spp-matrix.cfg +t=ultralytics/yolov3:v91 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 91 --device 0 --cfg cfg/yolov3-spp-matrix.cfg -export t=ultralytics/yolov3:v92 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 92 --device 0 -export t=ultralytics/yolov3:v93 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 93 --device 0 --cfg cfg/yolov3-spp-matrix.cfg +t=ultralytics/yolov3:v92 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 92 --device 0 +t=ultralytics/yolov3:v93 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 93 --device 0 --cfg cfg/yolov3-spp-matrix.cfg #SM4 -export t=ultralytics/yolov3:v96 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img-size 320 --batch 32 --accum 2 --pre --bucket yolov4 --name 96 --device 0 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave -export t=ultralytics/yolov3:v97 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img-size 320 --batch 32 --accum 2 --pre --bucket yolov4 --name 97 --device 4 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave -export t=ultralytics/yolov3:v98 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img-size 320 --batch 16 --accum 4 --pre --bucket yolov4 --name 98 --device 5 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave -export t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --pre --bucket yolov4 --name 101 --device 7 --multi --nosave +t=ultralytics/yolov3:v96 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img-size 320 --batch 32 --accum 2 --pre --bucket yolov4 --name 96 --device 0 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave +t=ultralytics/yolov3:v97 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img-size 320 --batch 32 --accum 2 --pre --bucket yolov4 --name 97 --device 4 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave +t=ultralytics/yolov3:v98 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img-size 320 --batch 16 --accum 4 --pre --bucket yolov4 --name 98 --device 5 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave +t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --pre --bucket yolov4 --name 101 --device 7 --multi --nosave -export t=ultralytics/yolov3:v102 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 1000 --img-size 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 102 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache -export t=ultralytics/yolov3:v103 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img-size 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 103 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache -export t=ultralytics/yolov3:v104 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img-size 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 104 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache -export t=ultralytics/yolov3:v105 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img-size 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 105 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache -export t=ultralytics/yolov3:v106 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img-size 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 106 --device 0 --cfg cfg/yolov3-tiny-3cls-sm4.cfg --data ../data/sm4/out.data --nosave --cache -export t=ultralytics/yolov3:v107 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 107 --device 5 --nosave --cfg cfg/yolov3-spp3.cfg -export t=ultralytics/yolov3:v108 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 108 --device 7 --nosave +t=ultralytics/yolov3:v102 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 1000 --img-size 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 102 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache +t=ultralytics/yolov3:v103 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img-size 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 103 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache +t=ultralytics/yolov3:v104 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img-size 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 104 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache +t=ultralytics/yolov3:v105 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img-size 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 105 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache +t=ultralytics/yolov3:v106 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img-size 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 106 --device 0 --cfg cfg/yolov3-tiny-3cls-sm4.cfg --data ../data/sm4/out.data --nosave --cache +t=ultralytics/yolov3:v107 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 107 --device 5 --nosave --cfg cfg/yolov3-spp3.cfg +t=ultralytics/yolov3:v108 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 108 --device 7 --nosave -export t=ultralytics/yolov3:v109 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 109 --device 4 --multi --nosave -export t=ultralytics/yolov3:v110 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 110 --device 3 --multi --nosave +t=ultralytics/yolov3:v109 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 109 --device 4 --multi --nosave +t=ultralytics/yolov3:v110 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 110 --device 3 --multi --nosave -export t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 111 --device 0 -export t=ultralytics/yolov3:v112 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 112 --device 1 --nosave -export t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 113 --device 2 --nosave -export t=ultralytics/yolov3:v114 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 114 --device 2 --nosave -export t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 115 --device 5 --nosave --cfg cfg/yolov3-spp3.cfg -export t=ultralytics/yolov3:v116 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 116 --device 1 --nosave +t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 111 --device 0 +t=ultralytics/yolov3:v112 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 112 --device 1 --nosave +t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 113 --device 2 --nosave +t=ultralytics/yolov3:v114 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 114 --device 2 --nosave +t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 115 --device 5 --nosave --cfg cfg/yolov3-spp3.cfg +t=ultralytics/yolov3:v116 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 116 --device 1 --nosave -export t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --epochs 27 --pre --bucket yolov4 --name 117 --device 0 --nosave --multi -export t=ultralytics/yolov3:v118 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --epochs 27 --pre --bucket yolov4 --name 118 --device 5 --nosave --multi -export t=ultralytics/yolov3:v119 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 119 --device 1 --nosave -export t=ultralytics/yolov3:v120 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 120 --device 2 --nosave -export t=ultralytics/yolov3:v121 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 121 --device 0 --nosave --cfg cfg/csresnext50-panet-spp.cfg -export t=ultralytics/yolov3:v122 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 273 --pre --bucket yolov4 --name 122 --device 2 --nosave -export t=ultralytics/yolov3:v123 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 273 --pre --bucket yolov4 --name 123 --device 5 --nosave +t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --epochs 27 --pre --bucket yolov4 --name 117 --device 0 --nosave --multi +t=ultralytics/yolov3:v118 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --epochs 27 --pre --bucket yolov4 --name 118 --device 5 --nosave --multi +t=ultralytics/yolov3:v119 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 119 --device 1 --nosave +t=ultralytics/yolov3:v120 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 120 --device 2 --nosave +t=ultralytics/yolov3:v121 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 121 --device 0 --nosave --cfg cfg/csresnext50-panet-spp.cfg +t=ultralytics/yolov3:v122 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 273 --pre --bucket yolov4 --name 122 --device 2 --nosave +t=ultralytics/yolov3:v123 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 273 --pre --bucket yolov4 --name 123 --device 5 --nosave -export t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 124 --device 0 --nosave --cfg yolov3-tiny -export t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 125 --device 1 --nosave --cfg yolov3-tiny2 -export t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 126 --device 1 --nosave --cfg yolov3-tiny3 -export t=ultralytics/yolov3:v127 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 127 --device 0 --nosave --cfg yolov3-tiny4 -export t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 273 --pre --bucket yolov4 --name 128 --device 1 --nosave --cfg yolov3-tiny2 --multi -export t=ultralytics/yolov3:v129 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 273 --pre --bucket yolov4 --name 129 --device 0 --nosave --cfg yolov3-tiny2 +t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 124 --device 0 --nosave --cfg yolov3-tiny +t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 125 --device 1 --nosave --cfg yolov3-tiny2 +t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 126 --device 1 --nosave --cfg yolov3-tiny3 +t=ultralytics/yolov3:v127 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 127 --device 0 --nosave --cfg yolov3-tiny4 +t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 273 --pre --bucket yolov4 --name 128 --device 1 --nosave --cfg yolov3-tiny2 --multi +t=ultralytics/yolov3:v129 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 273 --pre --bucket yolov4 --name 129 --device 0 --nosave --cfg yolov3-tiny2 -export t=ultralytics/yolov3:v130 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 130 --device 0 --nosave -export t=ultralytics/yolov3:v133 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 22 --accum 3 --epochs 250 --pre --bucket yolov4 --name 131 --device 0 --nosave --multi -export t=ultralytics/yolov3:v130 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 132 --device 0 --nosave --data coco2014.data -export t=ultralytics/yolov3:v133 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 22 --accum 3 --epochs 27 --pre --bucket yolov4 --name 133 --device 0 --nosave --multi -export t=ultralytics/yolov3:v134 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 134 --device 0 --nosave --data coco2014.data +t=ultralytics/yolov3:v130 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 130 --device 0 --nosave +t=ultralytics/yolov3:v133 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 22 --accum 3 --epochs 250 --pre --bucket yolov4 --name 131 --device 0 --nosave --multi +t=ultralytics/yolov3:v130 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 132 --device 0 --nosave --data coco2014.data +t=ultralytics/yolov3:v133 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 22 --accum 3 --epochs 27 --pre --bucket yolov4 --name 133 --device 0 --nosave --multi +t=ultralytics/yolov3:v134 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 134 --device 0 --nosave --data coco2014.data -export t=ultralytics/yolov3:v135 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 24 --accum 3 --epochs 270 --pre --bucket yolov4 --name 135 --device 0 --nosave --multi --data coco2014.data -export t=ultralytics/yolov3:v136 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 24 --accum 3 --epochs 270 --pre --bucket yolov4 --name 136 --device 0 --nosave --multi --data coco2014.data +t=ultralytics/yolov3:v135 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 24 --accum 3 --epochs 270 --pre --bucket yolov4 --name 135 --device 0 --nosave --multi --data coco2014.data +t=ultralytics/yolov3:v136 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 24 --accum 3 --epochs 270 --pre --bucket yolov4 --name 136 --device 0 --nosave --multi --data coco2014.data -export t=ultralytics/yolov3:v137 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 137 --device 7 --nosave --data coco2014.data -export t=ultralytics/yolov3:v137 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --bucket yolov4 --name 138 --device 6 --nosave --data coco2014.data +t=ultralytics/yolov3:v137 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 137 --device 7 --nosave --data coco2014.data +t=ultralytics/yolov3:v137 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --bucket yolov4 --name 138 --device 6 --nosave --data coco2014.data -export t=ultralytics/yolov3:v140 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 140 --device 1 --nosave --data coco2014.data --arc uBCE -export t=ultralytics/yolov3:v141 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 141 --device 0 --nosave --data coco2014.data --arc uBCE -export t=ultralytics/yolov3:v142 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 142 --device 1 --nosave --data coco2014.data --arc uBCE +t=ultralytics/yolov3:v140 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 140 --device 1 --nosave --data coco2014.data --arc uBCE +t=ultralytics/yolov3:v141 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 141 --device 0 --nosave --data coco2014.data --arc uBCE +t=ultralytics/yolov3:v142 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 142 --device 1 --nosave --data coco2014.data --arc uBCE + +t=ultralytics/yolov3:v146 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 146 --device 0 --nosave --data coco2014.data +t=ultralytics/yolov3:v147 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 147 --device 1 --nosave --data coco2014.data +t=ultralytics/yolov3:v148 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 148 --device 2 --nosave --data coco2014.data +t=ultralytics/yolov3:v149 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 149 --device 3 --nosave --data coco2014.data +t=ultralytics/yolov3:v150 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 150 --device 4 --nosave --data coco2014.data +t=ultralytics/yolov3:v151 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 151 --device 5 --nosave --data coco2014.data +t=ultralytics/yolov3:v152 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 152 --device 6 --nosave --data coco2014.data +t=ultralytics/yolov3:v153 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 153 --device 7 --nosave --data coco2014.data + +t=ultralytics/yolov3:v154 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 154 --device 0 --nosave --data coco2014.data +t=ultralytics/yolov3:v155 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 155 --device 0 --nosave --data coco2014.data --arc defaultpw + +t=ultralytics/yolov3:v156 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 156 --device 5 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v157 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 157 --device 6 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v158 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 158 --device 7 --nosave --data coco2014.data --arc defaultpw + +t=ultralytics/yolov3:v159 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 159 --device 0 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v160 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 160 --device 1 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v161 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 161 --device 2 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v162 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 162 --device 3 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v163 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 163 --device 4 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v164 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 164 --device 5 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v165 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 165 --device 6 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v166 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 166 --device 6 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v167 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 167 --device 7 --nosave --data coco2014.data --arc defaultpw -export t=ultralytics/yolov3:v139 && sudo docker build -t $t . && sudo docker push $t - -conda update -n base -c defaults conda -conda install -yc anaconda numpy opencv matplotlib tqdm pillow ipython future -conda install -yc conda-forge scikit-image pycocotools onnx tensorboard -conda install -yc spyder-ide spyder-line-profiler -conda install -yc pytorch pytorch torchvision \ No newline at end of file +t=ultralytics/yolov3:v143 && sudo docker build -t $t . && sudo docker push $t diff --git a/utils/utils.py b/utils/utils.py index b9194f9f..dcb684b2 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -399,7 +399,7 @@ def compute_loss(p, targets, model): # predictions, targets, model pbox = torch.cat((pxy, pwh), 1) # predicted box giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation lbox += (1.0 - giou).sum() if red == 'sum' else (1.0 - giou).mean() # giou loss - tobj[b, a, gj, gi] = 1.0 # giou.detach().type(tobj.dtype) * 0.5 + 0.5 # obj + tobj[b, a, gj, gi] = 1.0 # giou.detach().type(tobj.dtype) if 'default' in arc and model.nc > 1: # cls loss (only if multiple classes) t = torch.zeros_like(ps[:, 5:]) # targets From 5f9229ecaf3f6d6310e2ecfcfb4ed6ea5b33c629 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 28 Dec 2019 21:58:05 -0800 Subject: [PATCH 1887/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index dcb684b2..6f3dfabf 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -372,8 +372,8 @@ def compute_loss(p, targets, model): # predictions, targets, model # Define criteria BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']]), reduction=red) BCEobj = nn.BCEWithLogitsLoss(pos_weight=ft([h['obj_pw']]), reduction=red) - BCE = nn.BCEWithLogitsLoss() - CE = nn.CrossEntropyLoss() # weight=model.class_weights + BCE = nn.BCEWithLogitsLoss(reduction=red) + CE = nn.CrossEntropyLoss(reduction=red) # weight=model.class_weights if 'F' in arc: # add focal loss g = h['fl_gamma'] From f964f2956743e08aae141a0301ad040f3d1f068b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 29 Dec 2019 10:02:41 -0800 Subject: [PATCH 1888/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 6f3dfabf..5be021b9 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -783,7 +783,7 @@ def print_mutation(hyp, results, bucket=''): print('\n%s\n%s\nEvolved fitness: %s\n' % (a, b, c)) if bucket: - os.system('gsutil cp gs://%s/evolve.txt .' % bucket) # download evolve.txt + os.system('rm evolve.txt && gsutil cp gs://%s/evolve.txt .' % bucket) # download evolve.txt with open('evolve.txt', 'a') as f: # append result f.write(c + b + '\n') From 894218390b44fa48f19875b4f5b89f23a788158e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 29 Dec 2019 14:28:56 -0800 Subject: [PATCH 1889/2595] updates --- models.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/models.py b/models.py index c3bf5a18..c4e751a5 100755 --- a/models.py +++ b/models.py @@ -260,8 +260,7 @@ class Darknet(nn.Module): elif mtype == 'shortcut': x = x + layer_outputs[int(mdef['from'])] elif mtype == 'yolo': - x = module(x, img_size) - output.append(x) + output.append(module(x, img_size)) layer_outputs.append(x if i in self.routs else []) if self.training: From d13312b751d81f0036de70ae58faeb48daa2674a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 29 Dec 2019 14:54:08 -0800 Subject: [PATCH 1890/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index c4e751a5..3304a506 100755 --- a/models.py +++ b/models.py @@ -13,7 +13,7 @@ def create_modules(module_defs, img_size, arc): hyperparams = module_defs.pop(0) output_filters = [int(hyperparams['channels'])] module_list = nn.ModuleList() - routs = [] # list of layers which rout to deeper layes + routs = [] # list of layers which rout to deeper layers yolo_index = -1 for i, mdef in enumerate(module_defs): From f3e87862a40fba4d01edb8dc7eec3eadfa2d1c3f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 29 Dec 2019 15:31:57 -0800 Subject: [PATCH 1891/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 5be021b9..feba4183 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -507,7 +507,7 @@ def non_max_suppression(prediction, conf_thres=0.5, iou_thres=0.5, multi_cls=Tru # NMS methods https://github.com/ultralytics/yolov3/issues/679 'or', 'and', 'merge', 'vision', 'vision_batch' # Box constraints - min_wh, max_wh = 2, 4096 # (pixels) minimum and maximium box width and height + min_wh, max_wh = 2, 4096 # (pixels) minimum and maximum box width and height output = [None] * len(prediction) for image_i, pred in enumerate(prediction): From b636f7f7ab66bd40d8f86f60e2fe31d8c0d54ea6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 30 Dec 2019 11:57:36 -0800 Subject: [PATCH 1892/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index feba4183..06d0b799 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -760,7 +760,7 @@ def kmeans_targets(path='../coco/trainvalno5k.txt', n=9, img_size=416): # from # ax[0].plot(np.arange(1, 21), np.array(d) ** 2, marker='.') # Measure IoUs - iou = torch.stack([wh_iou(torch.Tensor(wh).T, torch.Tensor(x).T) for x in k], 0) + iou = wh_iou(torch.Tensor(wh), torch.Tensor(k)) biou = iou.max(0)[0] # closest anchor IoU print('Best possible recall: %.3f' % (biou > 0.2635).float().mean()) # BPR (best possible recall) From 88579bd24e68bd4d284a19f7e3685ccb560d4958 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 30 Dec 2019 12:01:52 -0800 Subject: [PATCH 1893/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 06d0b799..1544d874 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -734,7 +734,7 @@ def coco_single_class_labels(path='../coco/labels/train2014/', label_class=43): shutil.copyfile(src=img_file, dst='new/images/' + Path(file).name.replace('txt', 'jpg')) # copy images -def kmeans_targets(path='../coco/trainvalno5k.txt', n=9, img_size=416): # from utils.utils import *; kmeans_targets() +def kmeans_targets(path='data/coco64.txt', n=9, img_size=416): # from utils.utils import *; kmeans_targets() # Produces a list of target kmeans suitable for use in *.cfg files from utils.datasets import LoadImagesAndLabels from scipy import cluster @@ -762,7 +762,7 @@ def kmeans_targets(path='../coco/trainvalno5k.txt', n=9, img_size=416): # from # Measure IoUs iou = wh_iou(torch.Tensor(wh), torch.Tensor(k)) biou = iou.max(0)[0] # closest anchor IoU - print('Best possible recall: %.3f' % (biou > 0.2635).float().mean()) # BPR (best possible recall) + print('Best Possible Recall (BPR): %.3f' % (biou > 0.2635).float().mean()) # BPR (best possible recall) # Print print('kmeans anchors (n=%g, img_size=%g, IoU=%.2f/%.2f/%.2f-min/mean/best): ' % From e4a797fc1ec612704ec7d5eae1e7b696b850e2c0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 30 Dec 2019 13:09:16 -0800 Subject: [PATCH 1894/2595] updates --- utils/utils.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 1544d874..c017bc81 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -744,7 +744,9 @@ def kmeans_targets(path='data/coco64.txt', n=9, img_size=416): # from utils.uti for s, l in zip(dataset.shapes, dataset.labels): l[:, [1, 3]] *= s[0] # normalized to pixels l[:, [2, 4]] *= s[1] - l[:, 1:] *= img_size / max(s) * random.uniform(0.5, 1.5) # nominal img_size for training + l[:, 1:] *= img_size / max(s) + l = l.repeat(10, axis=0) # augment 10x + l *= np.random.uniform(0.5, 1.5, size=(l.shape[0], 1)) # multi-scale box wh = np.concatenate(dataset.labels, 0)[:, 3:5] # wh from cxywh # Kmeans calculation @@ -762,7 +764,7 @@ def kmeans_targets(path='data/coco64.txt', n=9, img_size=416): # from utils.uti # Measure IoUs iou = wh_iou(torch.Tensor(wh), torch.Tensor(k)) biou = iou.max(0)[0] # closest anchor IoU - print('Best Possible Recall (BPR): %.3f' % (biou > 0.2635).float().mean()) # BPR (best possible recall) + print('Best Possible Recall (BPR): %.3f' % (biou > 0.225).float().mean()) # BPR (best possible recall) # Print print('kmeans anchors (n=%g, img_size=%g, IoU=%.2f/%.2f/%.2f-min/mean/best): ' % From 121526aa9866ad752be222e9e1c619744c1d6bbf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 30 Dec 2019 13:15:10 -0800 Subject: [PATCH 1895/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index c017bc81..ab27baf5 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -746,7 +746,7 @@ def kmeans_targets(path='data/coco64.txt', n=9, img_size=416): # from utils.uti l[:, [2, 4]] *= s[1] l[:, 1:] *= img_size / max(s) l = l.repeat(10, axis=0) # augment 10x - l *= np.random.uniform(0.5, 1.5, size=(l.shape[0], 1)) # multi-scale box + l *= np.random.uniform(288, 640, size=(l.shape[0], 1)) / img_size # multi-scale box wh = np.concatenate(dataset.labels, 0)[:, 3:5] # wh from cxywh # Kmeans calculation From ad20ccce65b7925bb53fe370cf9e643b1ab88e42 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 30 Dec 2019 13:28:32 -0800 Subject: [PATCH 1896/2595] updates --- utils/utils.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index ab27baf5..5fc59a5a 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -740,14 +740,14 @@ def kmeans_targets(path='data/coco64.txt', n=9, img_size=416): # from utils.uti from scipy import cluster # Get label wh + wh = [] dataset = LoadImagesAndLabels(path, augment=True, rect=True, cache_labels=True) for s, l in zip(dataset.shapes, dataset.labels): - l[:, [1, 3]] *= s[0] # normalized to pixels - l[:, [2, 4]] *= s[1] - l[:, 1:] *= img_size / max(s) + l = l[:, 3:5] * (s / max(s)) # image normalized to letterbox normalized wh l = l.repeat(10, axis=0) # augment 10x - l *= np.random.uniform(288, 640, size=(l.shape[0], 1)) / img_size # multi-scale box - wh = np.concatenate(dataset.labels, 0)[:, 3:5] # wh from cxywh + l *= np.random.uniform(img_size[0], img_size[1], size=(l.shape[0], 1)) # normalized to pixels (multi-scale) + wh.append(l) + wh = np.concatenate(wh, 0) # wh from cxywh # Kmeans calculation k, dist = cluster.vq.kmeans(wh, n) # points, mean distance @@ -767,7 +767,7 @@ def kmeans_targets(path='data/coco64.txt', n=9, img_size=416): # from utils.uti print('Best Possible Recall (BPR): %.3f' % (biou > 0.225).float().mean()) # BPR (best possible recall) # Print - print('kmeans anchors (n=%g, img_size=%g, IoU=%.2f/%.2f/%.2f-min/mean/best): ' % + print('kmeans anchors (n=%g, img_size=%s, IoU=%.2f/%.2f/%.2f-min/mean/best): ' % (n, img_size, biou.min(), iou.mean(), biou.mean()), end='') for i, x in enumerate(k): print('%i,%i' % (round(x[0]), round(x[1])), end=', ' if i < len(k) - 1 else '\n') # use in *.cfg From 017a5ddad0ac97154aac6be1a3685350b31cfeeb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 30 Dec 2019 13:28:46 -0800 Subject: [PATCH 1897/2595] updates --- cfg/yolov3-spp.cfg | 4 +++ train.py | 2 +- utils/gcp.sh | 81 ++++++++++++++++++++++++++-------------------- utils/utils.py | 2 +- 4 files changed, 52 insertions(+), 37 deletions(-) diff --git a/cfg/yolov3-spp.cfg b/cfg/yolov3-spp.cfg index bb4e893b..c55de0fa 100644 --- a/cfg/yolov3-spp.cfg +++ b/cfg/yolov3-spp.cfg @@ -813,6 +813,10 @@ activation=linear [yolo] mask = 0,1,2 anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +anchors = +13,14, 26,40, 66,39, 49,94, 126,83, 94,177, 235,135, 179,286, 364,245 +13,14, 27,39, 68,40, 48,93, 126,84, 93,177, 234,135, 179,286, 364,244 +12,13, 27,37, 69,41, 47,90, 129,85, 90,172, 240,136, 173,282, 361,251 classes=80 num=9 jitter=.3 diff --git a/train.py b/train.py index 65151cec..4039e29f 100644 --- a/train.py +++ b/train.py @@ -446,7 +446,7 @@ if __name__ == '__main__': mixed_precision = False # scale hyp['obj'] by img_size (evolved at 320) - hyp['obj'] *= opt.img_size / 320. + # hyp['obj'] *= opt.img_size / 320. tb_writer = None if not opt.evolve: # Train normally diff --git a/utils/gcp.sh b/utils/gcp.sh index c26015ac..a0b28f5f 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -30,9 +30,9 @@ python3 detect.py python3 test.py --save-json # Evolve -t=ultralytics/yolov3:v148 +t=ultralytics/yolov3:v176 sudo docker kill $(sudo docker ps -a -q --filter ancestor=$t) -for i in 0 1 2 3 4 5 6 7 +for i in 0 do sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i sleep 10 @@ -66,9 +66,9 @@ gsutil cp results.png gs://ultralytics sudo shutdown # Reproduce mAP -python3 test.py --save-json --img-size 608 -python3 test.py --save-json --img-size 416 -python3 test.py --save-json --img-size 320 +python3 test.py --save-json --img 608 +python3 test.py --save-json --img 416 +python3 test.py --save-json --img 320 sudo shutdown # Benchmark script @@ -125,16 +125,16 @@ t=ultralytics/yolov3:v93 && sudo docker pull $t && sudo nvidia-docker run -it -- #SM4 -t=ultralytics/yolov3:v96 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img-size 320 --batch 32 --accum 2 --pre --bucket yolov4 --name 96 --device 0 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave -t=ultralytics/yolov3:v97 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img-size 320 --batch 32 --accum 2 --pre --bucket yolov4 --name 97 --device 4 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave -t=ultralytics/yolov3:v98 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img-size 320 --batch 16 --accum 4 --pre --bucket yolov4 --name 98 --device 5 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave +t=ultralytics/yolov3:v96 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img 320 --batch 32 --accum 2 --pre --bucket yolov4 --name 96 --device 0 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave +t=ultralytics/yolov3:v97 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img 320 --batch 32 --accum 2 --pre --bucket yolov4 --name 97 --device 4 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave +t=ultralytics/yolov3:v98 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img 320 --batch 16 --accum 4 --pre --bucket yolov4 --name 98 --device 5 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --pre --bucket yolov4 --name 101 --device 7 --multi --nosave -t=ultralytics/yolov3:v102 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 1000 --img-size 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 102 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache -t=ultralytics/yolov3:v103 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img-size 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 103 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache -t=ultralytics/yolov3:v104 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img-size 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 104 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache -t=ultralytics/yolov3:v105 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img-size 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 105 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache -t=ultralytics/yolov3:v106 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img-size 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 106 --device 0 --cfg cfg/yolov3-tiny-3cls-sm4.cfg --data ../data/sm4/out.data --nosave --cache +t=ultralytics/yolov3:v102 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 1000 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 102 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache +t=ultralytics/yolov3:v103 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 103 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache +t=ultralytics/yolov3:v104 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 104 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache +t=ultralytics/yolov3:v105 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 105 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache +t=ultralytics/yolov3:v106 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 106 --device 0 --cfg cfg/yolov3-tiny-3cls-sm4.cfg --data ../data/sm4/out.data --nosave --cache t=ultralytics/yolov3:v107 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 107 --device 5 --nosave --cfg cfg/yolov3-spp3.cfg t=ultralytics/yolov3:v108 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 108 --device 7 --nosave @@ -179,31 +179,42 @@ t=ultralytics/yolov3:v140 && sudo docker pull $t && sudo nvidia-docker run -it - t=ultralytics/yolov3:v141 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 141 --device 0 --nosave --data coco2014.data --arc uBCE t=ultralytics/yolov3:v142 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 142 --device 1 --nosave --data coco2014.data --arc uBCE -t=ultralytics/yolov3:v146 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 146 --device 0 --nosave --data coco2014.data -t=ultralytics/yolov3:v147 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 147 --device 1 --nosave --data coco2014.data -t=ultralytics/yolov3:v148 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 148 --device 2 --nosave --data coco2014.data -t=ultralytics/yolov3:v149 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 149 --device 3 --nosave --data coco2014.data -t=ultralytics/yolov3:v150 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 150 --device 4 --nosave --data coco2014.data -t=ultralytics/yolov3:v151 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 151 --device 5 --nosave --data coco2014.data -t=ultralytics/yolov3:v152 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 152 --device 6 --nosave --data coco2014.data -t=ultralytics/yolov3:v153 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 153 --device 7 --nosave --data coco2014.data +t=ultralytics/yolov3:v146 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 146 --device 0 --nosave --data coco2014.data +t=ultralytics/yolov3:v147 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 147 --device 1 --nosave --data coco2014.data +t=ultralytics/yolov3:v148 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 148 --device 2 --nosave --data coco2014.data +t=ultralytics/yolov3:v149 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 149 --device 3 --nosave --data coco2014.data +t=ultralytics/yolov3:v150 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 150 --device 4 --nosave --data coco2014.data +t=ultralytics/yolov3:v151 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 151 --device 5 --nosave --data coco2014.data +t=ultralytics/yolov3:v152 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 152 --device 6 --nosave --data coco2014.data +t=ultralytics/yolov3:v153 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 153 --device 7 --nosave --data coco2014.data -t=ultralytics/yolov3:v154 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 154 --device 0 --nosave --data coco2014.data -t=ultralytics/yolov3:v155 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 155 --device 0 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v154 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 154 --device 0 --nosave --data coco2014.data +t=ultralytics/yolov3:v155 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 155 --device 0 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v156 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 156 --device 5 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v157 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 157 --device 6 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v158 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 158 --device 7 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v156 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 156 --device 5 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v157 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 157 --device 6 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v158 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 158 --device 7 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v159 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 159 --device 0 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v160 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 160 --device 1 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v161 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 161 --device 2 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v162 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 162 --device 3 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v163 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 163 --device 4 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v164 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 164 --device 5 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v165 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 165 --device 6 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v166 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 166 --device 6 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v167 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img-size 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 167 --device 7 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v159 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 159 --device 0 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v160 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 160 --device 1 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v161 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 161 --device 2 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v162 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 162 --device 3 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v163 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 163 --device 4 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v164 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 164 --device 5 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v165 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 165 --device 6 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v166 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 166 --device 6 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v167 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 167 --device 7 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v168 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 168 --device 5 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v169 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 169 --device 6 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v170 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 170 --device 7 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v171 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 171 --device 4 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v172 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 172 --device 3 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v173 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 173 --device 2 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v174 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 174 --device 1 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v175 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 175 --device 0 --nosave --data coco2014.data --arc defaultpw + +t=ultralytics/yolov3:v177 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 416 --batch 22 --accum 3 --epochs 273 --pre --bucket yolov4 --name 177 --device 0 --nosave --data coco2014.data --multi +t=ultralytics/yolov3:v178 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 416 --batch 22 --accum 3 --epochs 273 --pre --bucket yolov4 --name 178 --device 0 --nosave --data coco2014.data --multi t=ultralytics/yolov3:v143 && sudo docker build -t $t . && sudo docker push $t diff --git a/utils/utils.py b/utils/utils.py index 5fc59a5a..da494056 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -734,7 +734,7 @@ def coco_single_class_labels(path='../coco/labels/train2014/', label_class=43): shutil.copyfile(src=img_file, dst='new/images/' + Path(file).name.replace('txt', 'jpg')) # copy images -def kmeans_targets(path='data/coco64.txt', n=9, img_size=416): # from utils.utils import *; kmeans_targets() +def kmean_anchors(path='data/coco64.txt', n=9, img_size=(288, 640)): # from utils.utils import *; kmean_anchors() # Produces a list of target kmeans suitable for use in *.cfg files from utils.datasets import LoadImagesAndLabels from scipy import cluster From 14ac814cf9a0f0c35cd96574211f56374a3a5c8c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 30 Dec 2019 13:30:58 -0800 Subject: [PATCH 1898/2595] updates --- cfg/yolov3-spp.cfg | 4 ---- 1 file changed, 4 deletions(-) diff --git a/cfg/yolov3-spp.cfg b/cfg/yolov3-spp.cfg index c55de0fa..bb4e893b 100644 --- a/cfg/yolov3-spp.cfg +++ b/cfg/yolov3-spp.cfg @@ -813,10 +813,6 @@ activation=linear [yolo] mask = 0,1,2 anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -anchors = -13,14, 26,40, 66,39, 49,94, 126,83, 94,177, 235,135, 179,286, 364,245 -13,14, 27,39, 68,40, 48,93, 126,84, 93,177, 234,135, 179,286, 364,244 -12,13, 27,37, 69,41, 47,90, 129,85, 90,172, 240,136, 173,282, 361,251 classes=80 num=9 jitter=.3 From 9e581919839da2e7810416410b0dc321450a0a9b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 30 Dec 2019 13:31:32 -0800 Subject: [PATCH 1899/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 4039e29f..65151cec 100644 --- a/train.py +++ b/train.py @@ -446,7 +446,7 @@ if __name__ == '__main__': mixed_precision = False # scale hyp['obj'] by img_size (evolved at 320) - # hyp['obj'] *= opt.img_size / 320. + hyp['obj'] *= opt.img_size / 320. tb_writer = None if not opt.evolve: # Train normally From cf92235b8db7319e87c9e0d0c5d3920ee418aec8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 30 Dec 2019 13:39:25 -0800 Subject: [PATCH 1900/2595] updates --- utils/utils.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index da494056..3464a2fe 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -743,13 +743,12 @@ def kmean_anchors(path='data/coco64.txt', n=9, img_size=(288, 640)): # from uti wh = [] dataset = LoadImagesAndLabels(path, augment=True, rect=True, cache_labels=True) for s, l in zip(dataset.shapes, dataset.labels): - l = l[:, 3:5] * (s / max(s)) # image normalized to letterbox normalized wh - l = l.repeat(10, axis=0) # augment 10x - l *= np.random.uniform(img_size[0], img_size[1], size=(l.shape[0], 1)) # normalized to pixels (multi-scale) - wh.append(l) - wh = np.concatenate(wh, 0) # wh from cxywh + wh.append(l[:, 3:5] * (s / s.max())) # image normalized to letterbox normalized wh + wh = np.concatenate(wh, 0).repeat(10, axis=0) # augment 10x + wh *= np.random.uniform(img_size[0], img_size[1], size=(wh.shape[0], 1)) # normalized to pixels (multi-scale) # Kmeans calculation + print('Running kmeans...') k, dist = cluster.vq.kmeans(wh, n) # points, mean distance k = k[np.argsort(k.prod(1))] # sort small to large From 7b6bd39c9e8170d614fe8d20c1ed3e6a89d170c0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 30 Dec 2019 13:46:21 -0800 Subject: [PATCH 1901/2595] updates --- utils/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 3464a2fe..1a9fe5db 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -762,7 +762,8 @@ def kmean_anchors(path='data/coco64.txt', n=9, img_size=(288, 640)): # from uti # Measure IoUs iou = wh_iou(torch.Tensor(wh), torch.Tensor(k)) - biou = iou.max(0)[0] # closest anchor IoU + biou = iou.max(1)[0] # closest anchor IoU + print(biou.shape) print('Best Possible Recall (BPR): %.3f' % (biou > 0.225).float().mean()) # BPR (best possible recall) # Print From 2cf31ab7bc644b2b5bdecefc39a9c8e954cf45a0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 30 Dec 2019 13:46:40 -0800 Subject: [PATCH 1902/2595] updates --- utils/utils.py | 1 - 1 file changed, 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 1a9fe5db..8b033520 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -763,7 +763,6 @@ def kmean_anchors(path='data/coco64.txt', n=9, img_size=(288, 640)): # from uti # Measure IoUs iou = wh_iou(torch.Tensor(wh), torch.Tensor(k)) biou = iou.max(1)[0] # closest anchor IoU - print(biou.shape) print('Best Possible Recall (BPR): %.3f' % (biou > 0.225).float().mean()) # BPR (best possible recall) # Print From d30e4eea37a25f0ba7e073f9a8e10dd7bbc4145e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 30 Dec 2019 15:39:17 -0800 Subject: [PATCH 1903/2595] updates --- utils/utils.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 8b033520..6f1301aa 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -734,7 +734,7 @@ def coco_single_class_labels(path='../coco/labels/train2014/', label_class=43): shutil.copyfile(src=img_file, dst='new/images/' + Path(file).name.replace('txt', 'jpg')) # copy images -def kmean_anchors(path='data/coco64.txt', n=9, img_size=(288, 640)): # from utils.utils import *; kmean_anchors() +def kmean_anchors(path='../coco/train2017.txt', n=12, img_size=(320, 640)): # from utils.utils import *; kmean_anchors() # Produces a list of target kmeans suitable for use in *.cfg files from utils.datasets import LoadImagesAndLabels from scipy import cluster @@ -762,12 +762,14 @@ def kmean_anchors(path='data/coco64.txt', n=9, img_size=(288, 640)): # from uti # Measure IoUs iou = wh_iou(torch.Tensor(wh), torch.Tensor(k)) - biou = iou.max(1)[0] # closest anchor IoU - print('Best Possible Recall (BPR): %.3f' % (biou > 0.225).float().mean()) # BPR (best possible recall) + max_iou = iou.max(1)[0] # best IoU + min_iou = iou.min(1)[0] # worst IoU + print('Best Possible Recall (BPR): %.3f' % (max_iou > 0.225).float().mean()) # BPR (best possible recall) + print('Mean anchors over threshold: %.3f' % ((iou > 0.225).float().mean() * n)) # BPR (best possible recall) # Print print('kmeans anchors (n=%g, img_size=%s, IoU=%.2f/%.2f/%.2f-min/mean/best): ' % - (n, img_size, biou.min(), iou.mean(), biou.mean()), end='') + (n, img_size, min_iou.mean(), iou.mean(), max_iou.mean()), end='') for i, x in enumerate(k): print('%i,%i' % (round(x[0]), round(x[1])), end=', ' if i < len(k) - 1 else '\n') # use in *.cfg From 9dd1316a70dac982bd32d58b0d1a03e1b6d50b63 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 30 Dec 2019 15:41:47 -0800 Subject: [PATCH 1904/2595] updates --- utils/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 6f1301aa..2c6be163 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -435,8 +435,9 @@ def compute_loss(p, targets, model): # predictions, targets, model lobj *= h['obj'] lcls *= h['cls'] if red == 'sum': + bs = tobj.shape[0] # batch size lbox *= 3 / ng - lobj *= 3 / np * 2 + lobj *= 3 / (6300 * bs) * 2 # 3 / np * 2 lcls *= 3 / ng / model.nc loss = lbox + lobj + lcls From 6290f9fdb73f68989a94d70fbeab703cac94261d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 30 Dec 2019 16:13:06 -0800 Subject: [PATCH 1905/2595] updates --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 65151cec..c6ad9048 100644 --- a/train.py +++ b/train.py @@ -137,7 +137,7 @@ def train(): cutoff = load_darknet_weights(model, weights) if opt.transfer or opt.prebias: # transfer learning edge (yolo) layers - nf = int(model.module_defs[model.yolo_layers[0] - 1]['filters']) # yolo layer size (i.e. 255) + nf = [int(model.module_defs[x - 1]['filters']) for x in model.yolo_layers] # yolo layer size (i.e. 255) if opt.prebias: for p in optimizer.param_groups: @@ -147,9 +147,9 @@ def train(): p['momentum'] = 0.9 for p in model.parameters(): - if opt.prebias and p.numel() == nf: # train (yolo biases) + if opt.prebias and p.numel() in nf: # train (yolo biases) p.requires_grad = True - elif opt.transfer and p.shape[0] == nf: # train (yolo biases+weights) + elif opt.transfer and p.shape[0] in nf: # train (yolo biases+weights) p.requires_grad = True else: # freeze layer p.requires_grad = False From 935bbfcc2bc8d7b07e61e6d2cd6d5d968c22bdfa Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 31 Dec 2019 12:07:31 -0800 Subject: [PATCH 1906/2595] updates --- utils/utils.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 2c6be163..c7da014c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -735,7 +735,8 @@ def coco_single_class_labels(path='../coco/labels/train2014/', label_class=43): shutil.copyfile(src=img_file, dst='new/images/' + Path(file).name.replace('txt', 'jpg')) # copy images -def kmean_anchors(path='../coco/train2017.txt', n=12, img_size=(320, 640)): # from utils.utils import *; kmean_anchors() +def kmean_anchors(path='data/coco64.txt', n=12, img_size=(320, 640)): + # from utils.utils import *; _ = kmean_anchors(n=9) # Produces a list of target kmeans suitable for use in *.cfg files from utils.datasets import LoadImagesAndLabels from scipy import cluster @@ -763,10 +764,10 @@ def kmean_anchors(path='../coco/train2017.txt', n=12, img_size=(320, 640)): # f # Measure IoUs iou = wh_iou(torch.Tensor(wh), torch.Tensor(k)) - max_iou = iou.max(1)[0] # best IoU - min_iou = iou.min(1)[0] # worst IoU - print('Best Possible Recall (BPR): %.3f' % (max_iou > 0.225).float().mean()) # BPR (best possible recall) - print('Mean anchors over threshold: %.3f' % ((iou > 0.225).float().mean() * n)) # BPR (best possible recall) + min_iou, max_iou = iou.min(1)[0], iou.max(1)[0] + for x in [0.10, 0.15, 0.20, 0.25, 0.30, 0.35]: # iou thresholds + print('%.2f iou_thr: %.3f best possible recall, %.3f anchors > thr' % + (x, (max_iou > x).float().mean(), (iou > x).float().mean() * n)) # BPR (best possible recall) # Print print('kmeans anchors (n=%g, img_size=%s, IoU=%.2f/%.2f/%.2f-min/mean/best): ' % From d92b75aec819a45680fe40e133d8e3c29d0b6a40 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 1 Jan 2020 12:44:33 -0800 Subject: [PATCH 1907/2595] updates --- detect.py | 9 +++++---- utils/utils.py | 6 +++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/detect.py b/detect.py index 74838a49..da919b37 100644 --- a/detect.py +++ b/detect.py @@ -86,7 +86,7 @@ def detect(save_txt=False, save_img=False): pred = pred.float() # Apply NMS - pred = non_max_suppression(pred, opt.conf_thres, opt.iou_thres) + pred = non_max_suppression(pred, opt.conf_thres, opt.iou_thres, classes=opt.classes) # Apply Classifier if classify: @@ -110,9 +110,6 @@ def detect(save_txt=False, save_img=False): n = (det[:, -1] == c).sum() # detections per class s += '%g %ss, ' % (n, names[int(c)]) # add to string - # Print time (inference + NMS) - print('%sDone. (%.3fs)' % (s, time.time() - t)) - # Write results for *xyxy, conf, cls in det: if save_txt: # Write to file @@ -123,6 +120,9 @@ def detect(save_txt=False, save_img=False): label = '%s %.2f' % (names[int(cls)], conf) plot_one_box(xyxy, im0, label=label, color=colors[int(cls)]) + # Print time (inference + NMS) + print('%sDone. (%.3fs)' % (s, time.time() - t)) + # Stream results if view_img: cv2.imshow(p, im0) @@ -167,6 +167,7 @@ if __name__ == '__main__': parser.add_argument('--half', action='store_true', help='half precision FP16 inference') parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') parser.add_argument('--view-img', action='store_true', help='display results') + parser.add_argument('--classes', nargs='+', type=int, help='filter by class') opt = parser.parse_args() print(opt) diff --git a/utils/utils.py b/utils/utils.py index c7da014c..684fbf48 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -498,7 +498,7 @@ def build_targets(model, targets): return tcls, tbox, indices, av -def non_max_suppression(prediction, conf_thres=0.5, iou_thres=0.5, multi_cls=True, method='vision_batch'): +def non_max_suppression(prediction, conf_thres=0.5, iou_thres=0.5, multi_cls=True, method='vision_batch', classes=None): """ Removes detections with lower object confidence score than 'conf_thres' Non-Maximum Suppression to further filter detections. @@ -537,6 +537,10 @@ def non_max_suppression(prediction, conf_thres=0.5, iou_thres=0.5, multi_cls=Tru conf, j = pred[:, 5:].max(1) pred = torch.cat((box, conf.unsqueeze(1), j.float().unsqueeze(1)), 1) + # Filter by class + if classes: + pred = pred[(j.view(-1, 1) == torch.Tensor(classes)).any(1)] + # Apply finite constraint if not torch.isfinite(pred).all(): pred = pred[torch.isfinite(pred).all(1)] From 77850a2198132b2cab0919088f219ba23e3c87b6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 1 Jan 2020 22:44:21 -0800 Subject: [PATCH 1908/2595] updates --- utils/gcp.sh | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index a0b28f5f..55fb3f82 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -6,7 +6,7 @@ git clone https://github.com/ultralytics/yolov3 git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex sudo conda install -yc conda-forge scikit-image pycocotools python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('193Zp_ye-3qXMonR1nZj3YyxMtQkMy50k','coco2014.zip')" -python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('1WQT6SOktSe8Uw6r10-2JhbEhMY5DJaph','coco2017.zip')" +# python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('1WQT6SOktSe8Uw6r10-2JhbEhMY5DJaph','coco2017.zip')" sudo shutdown # Re-clone @@ -17,6 +17,13 @@ bash yolov3/data/get_coco2017.sh cd yolov3 python3 test.py --weights ultralytics68.pt --task benchmark +# Mount local SSD +lsblk +sudo mkfs.ext4 -F /dev/nvme0n1 +sudo mkdir -p /mnt/disks/nvme0n1 +sudo mount /dev/nvme0n1 /mnt/disks/nvme0n1 +sudo chmod a+w /mnt/disks/nvme0n1 + # Train python3 train.py @@ -30,11 +37,11 @@ python3 detect.py python3 test.py --save-json # Evolve -t=ultralytics/yolov3:v176 +t=ultralytics/yolov3:v179 sudo docker kill $(sudo docker ps -a -q --filter ancestor=$t) for i in 0 do - sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i + sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i sleep 10 done @@ -216,5 +223,8 @@ t=ultralytics/yolov3:v175 && sudo docker pull $t && sudo nvidia-docker run -it - t=ultralytics/yolov3:v177 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 416 --batch 22 --accum 3 --epochs 273 --pre --bucket yolov4 --name 177 --device 0 --nosave --data coco2014.data --multi t=ultralytics/yolov3:v178 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 416 --batch 22 --accum 3 --epochs 273 --pre --bucket yolov4 --name 178 --device 0 --nosave --data coco2014.data --multi +t=ultralytics/yolov3:v179 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 416 --batch 22 --accum 3 --epochs 273 --pre --bucket yolov4 --name 179 --device 0 --nosave --data coco2014.data --multi --cfg yolov3s-18a.cfg t=ultralytics/yolov3:v143 && sudo docker build -t $t . && sudo docker push $t + +t=ultralytics/yolov3:v179 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 detect.py From 23288236a6192736d1e98548705e1f98a2d64f02 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 2 Jan 2020 09:50:11 -0800 Subject: [PATCH 1909/2595] updates --- detect.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index da919b37..b9ddbf0f 100644 --- a/detect.py +++ b/detect.py @@ -6,9 +6,9 @@ from utils.datasets import * from utils.utils import * -def detect(save_txt=False, save_img=False): +def detect(save_img=False): img_size = (320, 192) if ONNX_EXPORT else opt.img_size # (320, 192) or (416, 256) or (608, 352) for (height, width) - out, source, weights, half, view_img = opt.output, opt.source, opt.weights, opt.half, opt.view_img + out, source, weights, half, view_img, save_txt = opt.output, opt.source, opt.weights, opt.half, opt.view_img, opt.save_txt webcam = source == '0' or source.startswith('rtsp') or source.startswith('http') or source.endswith('.txt') # Initialize @@ -167,6 +167,7 @@ if __name__ == '__main__': parser.add_argument('--half', action='store_true', help='half precision FP16 inference') parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') parser.add_argument('--view-img', action='store_true', help='display results') + parser.add_argument('--save-txt', action='store_true', help='display results') parser.add_argument('--classes', nargs='+', type=int, help='filter by class') opt = parser.parse_args() print(opt) From 8841c4980cb88a430b715658fdef20b410140b76 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 2 Jan 2020 10:03:22 -0800 Subject: [PATCH 1910/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 684fbf48..5d97f33f 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -770,7 +770,7 @@ def kmean_anchors(path='data/coco64.txt', n=12, img_size=(320, 640)): iou = wh_iou(torch.Tensor(wh), torch.Tensor(k)) min_iou, max_iou = iou.min(1)[0], iou.max(1)[0] for x in [0.10, 0.15, 0.20, 0.25, 0.30, 0.35]: # iou thresholds - print('%.2f iou_thr: %.3f best possible recall, %.3f anchors > thr' % + print('%.2f iou_thr: %.3f best possible recall, %.1f anchors > thr' % (x, (max_iou > x).float().mean(), (iou > x).float().mean() * n)) # BPR (best possible recall) # Print From 0883d2fda1cffa3ce74086ebe5c1a3f23bc857b1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 2 Jan 2020 11:09:10 -0800 Subject: [PATCH 1911/2595] updates --- utils/utils.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 5d97f33f..295fada2 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -739,29 +739,31 @@ def coco_single_class_labels(path='../coco/labels/train2014/', label_class=43): shutil.copyfile(src=img_file, dst='new/images/' + Path(file).name.replace('txt', 'jpg')) # copy images -def kmean_anchors(path='data/coco64.txt', n=12, img_size=(320, 640)): +def kmean_anchors(path='data/coco64.txt', n=9, img_size=(320, 640)): # from utils.utils import *; _ = kmean_anchors(n=9) # Produces a list of target kmeans suitable for use in *.cfg files from utils.datasets import LoadImagesAndLabels - from scipy import cluster + from scipy.cluster.vq import kmeans # Get label wh wh = [] dataset = LoadImagesAndLabels(path, augment=True, rect=True, cache_labels=True) + nr = 1 if img_size[0] == img_size[1] else 10 # number augmentation repetitions for s, l in zip(dataset.shapes, dataset.labels): wh.append(l[:, 3:5] * (s / s.max())) # image normalized to letterbox normalized wh - wh = np.concatenate(wh, 0).repeat(10, axis=0) # augment 10x + wh = np.concatenate(wh, 0).repeat(nr, axis=0) # augment 10x wh *= np.random.uniform(img_size[0], img_size[1], size=(wh.shape[0], 1)) # normalized to pixels (multi-scale) # Kmeans calculation print('Running kmeans...') - k, dist = cluster.vq.kmeans(wh, n) # points, mean distance - k = k[np.argsort(k.prod(1))] # sort small to large + s = wh.std(0) # sigmas for whitening + k, dist = kmeans(wh / s, n, iter=30) # points, mean distance + k = k[np.argsort(k.prod(1))] * s # sort small to large # # Plot # k, d = [None] * 20, [None] * 20 # for i in tqdm(range(1, 21)): - # k[i-1], d[i-1] = cluster.vq.kmeans(wh, i) # points, mean distance + # k[i-1], d[i-1] = kmeans(wh / s, i) # points, mean distance # fig, ax = plt.subplots(1, 2, figsize=(14, 7)) # ax = ax.ravel() # ax[0].plot(np.arange(1, 21), np.array(d) ** 2, marker='.') @@ -769,8 +771,8 @@ def kmean_anchors(path='data/coco64.txt', n=12, img_size=(320, 640)): # Measure IoUs iou = wh_iou(torch.Tensor(wh), torch.Tensor(k)) min_iou, max_iou = iou.min(1)[0], iou.max(1)[0] - for x in [0.10, 0.15, 0.20, 0.25, 0.30, 0.35]: # iou thresholds - print('%.2f iou_thr: %.3f best possible recall, %.1f anchors > thr' % + for x in [0.10, 0.20, 0.30]: # iou thresholds + print('%.2f iou_thr: %.3f best possible recall, %.2f anchors > thr' % (x, (max_iou > x).float().mean(), (iou > x).float().mean() * n)) # BPR (best possible recall) # Print From e0e8b7173cd47898b0fc0e5af7362471c194289b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 2 Jan 2020 11:11:18 -0800 Subject: [PATCH 1912/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 295fada2..05655db5 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -755,7 +755,7 @@ def kmean_anchors(path='data/coco64.txt', n=9, img_size=(320, 640)): wh *= np.random.uniform(img_size[0], img_size[1], size=(wh.shape[0], 1)) # normalized to pixels (multi-scale) # Kmeans calculation - print('Running kmeans...') + print('Running kmeans on %g boxes...' % len(wh)) s = wh.std(0) # sigmas for whitening k, dist = kmeans(wh / s, n, iter=30) # points, mean distance k = k[np.argsort(k.prod(1))] * s # sort small to large From 0b242a438b88448b1889c0db3260f1f4a9d671b8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 2 Jan 2020 11:11:45 -0800 Subject: [PATCH 1913/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 05655db5..190dfdcf 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -755,7 +755,7 @@ def kmean_anchors(path='data/coco64.txt', n=9, img_size=(320, 640)): wh *= np.random.uniform(img_size[0], img_size[1], size=(wh.shape[0], 1)) # normalized to pixels (multi-scale) # Kmeans calculation - print('Running kmeans on %g boxes...' % len(wh)) + print('Running kmeans on %g points...' % len(wh)) s = wh.std(0) # sigmas for whitening k, dist = kmeans(wh / s, n, iter=30) # points, mean distance k = k[np.argsort(k.prod(1))] * s # sort small to large From d9568a2239ca5d32c03dc88b41d59489598e67f7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 2 Jan 2020 12:39:20 -0800 Subject: [PATCH 1914/2595] updates --- utils/gcp.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 55fb3f82..e5f3355d 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -23,6 +23,7 @@ sudo mkfs.ext4 -F /dev/nvme0n1 sudo mkdir -p /mnt/disks/nvme0n1 sudo mount /dev/nvme0n1 /mnt/disks/nvme0n1 sudo chmod a+w /mnt/disks/nvme0n1 +cp -r coco /mnt/disks/nvme0n1 # Train python3 train.py @@ -41,7 +42,8 @@ t=ultralytics/yolov3:v179 sudo docker kill $(sudo docker ps -a -q --filter ancestor=$t) for i in 0 do - sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i + # sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i + sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v /mnt/disks/nvme0n1/coco:/usr/src/coco $t bash utils/evolve.sh $i sleep 10 done @@ -228,3 +230,6 @@ t=ultralytics/yolov3:v179 && sudo docker pull $t && sudo nvidia-docker run -it - t=ultralytics/yolov3:v143 && sudo docker build -t $t . && sudo docker push $t t=ultralytics/yolov3:v179 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 detect.py +t=ultralytics/yolov3:v179 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host $t python3 detect.py + + From c0095c2bc98b91f203830709f4e0f0c24f95a04e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 2 Jan 2020 21:00:38 -0800 Subject: [PATCH 1915/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 248795dd..fb92e719 100755 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ The https://github.com/ultralytics/yolov3 repo contains inference and training c Python 3.7 or later with the following `pip3 install -U -r requirements.txt` packages: - `numpy` -- `torch >= 1.1.0` +- `torch >= 1.3` - `opencv-python` - `tqdm` From eca1a25dcdb09711bcbf05b04dad9d2f780d922d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 3 Jan 2020 09:19:18 -0800 Subject: [PATCH 1916/2595] updates --- train.py | 2 +- utils/utils.py | 68 ++++++++++++++++++++++++++++++++------------------ 2 files changed, 45 insertions(+), 25 deletions(-) diff --git a/train.py b/train.py index c6ad9048..eda88c23 100644 --- a/train.py +++ b/train.py @@ -446,7 +446,7 @@ if __name__ == '__main__': mixed_precision = False # scale hyp['obj'] by img_size (evolved at 320) - hyp['obj'] *= opt.img_size / 320. + # hyp['obj'] *= opt.img_size / 320. tb_writer = None if not opt.evolve: # Train normally diff --git a/utils/utils.py b/utils/utils.py index 190dfdcf..0ece2b3c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -367,7 +367,7 @@ def compute_loss(p, targets, model): # predictions, targets, model tcls, tbox, indices, anchor_vec = build_targets(model, targets) h = model.hyp # hyperparameters arc = model.arc # # (default, uCE, uBCE) detection architectures - red = 'mean' # Loss reduction (sum or mean) + red = 'sum' # Loss reduction (sum or mean) # Define criteria BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']]), reduction=red) @@ -399,7 +399,7 @@ def compute_loss(p, targets, model): # predictions, targets, model pbox = torch.cat((pxy, pwh), 1) # predicted box giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation lbox += (1.0 - giou).sum() if red == 'sum' else (1.0 - giou).mean() # giou loss - tobj[b, a, gj, gi] = 1.0 # giou.detach().type(tobj.dtype) + tobj[b, a, gj, gi] = giou.detach().type(tobj.dtype) if 'default' in arc and model.nc > 1: # cls loss (only if multiple classes) t = torch.zeros_like(ps[:, 5:]) # targets @@ -739,11 +739,28 @@ def coco_single_class_labels(path='../coco/labels/train2014/', label_class=43): shutil.copyfile(src=img_file, dst='new/images/' + Path(file).name.replace('txt', 'jpg')) # copy images -def kmean_anchors(path='data/coco64.txt', n=9, img_size=(320, 640)): - # from utils.utils import *; _ = kmean_anchors(n=9) +def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(320, 640)): + # from utils.utils import *; _ = kmean_anchors() # Produces a list of target kmeans suitable for use in *.cfg files from utils.datasets import LoadImagesAndLabels - from scipy.cluster.vq import kmeans + thr = 0.20 # IoU threshold + + def print_results(thr, wh, k): + k = k[np.argsort(k.prod(1))] # sort small to large + iou = wh_iou(torch.Tensor(wh), torch.Tensor(k)) + max_iou, min_iou = iou.max(1)[0], iou.min(1)[0] + bpr, aat = (max_iou > thr).float().mean(), (iou > thr).float().mean() * n # best possible recall, anch > thr + print('%.2f iou_thr: %.3f best possible recall, %.2f anchors > thr' % (thr, bpr, aat)) + print('kmeans anchors (n=%g, img_size=%s, IoU=%.3f/%.3f/%.3f-min/mean/best): ' % + (n, img_size, min_iou.mean(), iou.mean(), max_iou.mean()), end='') + for i, x in enumerate(k): + print('%i,%i' % (round(x[0]), round(x[1])), end=', ' if i < len(k) - 1 else '\n') # use in *.cfg + return k + + def fitness(thr, wh, k): # mutation fitness + iou = wh_iou(wh, torch.Tensor(k)).max(1)[0] # max iou + bpr = (iou > thr).float().mean() # best possible recall + return iou.mean() * 0.80 + bpr * 0.20 # weighted combination # Get label wh wh = [] @@ -754,11 +771,18 @@ def kmean_anchors(path='data/coco64.txt', n=9, img_size=(320, 640)): wh = np.concatenate(wh, 0).repeat(nr, axis=0) # augment 10x wh *= np.random.uniform(img_size[0], img_size[1], size=(wh.shape[0], 1)) # normalized to pixels (multi-scale) - # Kmeans calculation - print('Running kmeans on %g points...' % len(wh)) - s = wh.std(0) # sigmas for whitening - k, dist = kmeans(wh / s, n, iter=30) # points, mean distance - k = k[np.argsort(k.prod(1))] * s # sort small to large + # Darknet yolov3.cfg anchors + if n == 9: + k = np.array([[10, 13], [16, 30], [33, 23], [30, 61], [62, 45], [59, 119], [116, 90], [156, 198], [373, 326]]) + k = print_results(thr, wh, k) + else: + # Kmeans calculation + from scipy.cluster.vq import kmeans + print('Running kmeans on %g points...' % len(wh)) + s = wh.std(0) # sigmas for whitening + k, dist = kmeans(wh / s, n, iter=20) # points, mean distance + k *= s + k = print_results(thr, wh, k) # # Plot # k, d = [None] * 20, [None] * 20 @@ -768,21 +792,17 @@ def kmean_anchors(path='data/coco64.txt', n=9, img_size=(320, 640)): # ax = ax.ravel() # ax[0].plot(np.arange(1, 21), np.array(d) ** 2, marker='.') - # Measure IoUs - iou = wh_iou(torch.Tensor(wh), torch.Tensor(k)) - min_iou, max_iou = iou.min(1)[0], iou.max(1)[0] - for x in [0.10, 0.20, 0.30]: # iou thresholds - print('%.2f iou_thr: %.3f best possible recall, %.2f anchors > thr' % - (x, (max_iou > x).float().mean(), (iou > x).float().mean() * n)) # BPR (best possible recall) + # Evolve + wh = torch.Tensor(wh) + f, ng = fitness(thr, wh, k), 1000 # fitness, generations + for _ in tqdm(range(ng), desc='Evolving anchors'): + kg = (k.copy() * (1 + np.random.random() * np.random.randn(*k.shape) * 0.20)).clip(min=2.0) + fg = fitness(thr, wh, kg) + if fg > f: + f, k = fg, kg.copy() + print(fg, list(k.round().reshape(-1))) + k = print_results(thr, wh, k) - # Print - print('kmeans anchors (n=%g, img_size=%s, IoU=%.2f/%.2f/%.2f-min/mean/best): ' % - (n, img_size, min_iou.mean(), iou.mean(), max_iou.mean()), end='') - for i, x in enumerate(k): - print('%i,%i' % (round(x[0]), round(x[1])), end=', ' if i < len(k) - 1 else '\n') # use in *.cfg - - # Plot - # plt.hist(biou.numpy().ravel(), 100) return k From 4fe9c90514c22e815281ab2275c920dbe365f6cd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 3 Jan 2020 11:53:02 -0800 Subject: [PATCH 1917/2595] updates --- train.py | 2 +- utils/utils.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index eda88c23..c6ad9048 100644 --- a/train.py +++ b/train.py @@ -446,7 +446,7 @@ if __name__ == '__main__': mixed_precision = False # scale hyp['obj'] by img_size (evolved at 320) - # hyp['obj'] *= opt.img_size / 320. + hyp['obj'] *= opt.img_size / 320. tb_writer = None if not opt.evolve: # Train normally diff --git a/utils/utils.py b/utils/utils.py index 0ece2b3c..52638c0f 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -367,7 +367,7 @@ def compute_loss(p, targets, model): # predictions, targets, model tcls, tbox, indices, anchor_vec = build_targets(model, targets) h = model.hyp # hyperparameters arc = model.arc # # (default, uCE, uBCE) detection architectures - red = 'sum' # Loss reduction (sum or mean) + red = 'mean' # Loss reduction (sum or mean) # Define criteria BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']]), reduction=red) From 07c40a3f1407e30b82776ff6061276fa0db6732d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 3 Jan 2020 14:36:39 -0800 Subject: [PATCH 1918/2595] updates --- train.py | 2 +- utils/utils.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index c6ad9048..eda88c23 100644 --- a/train.py +++ b/train.py @@ -446,7 +446,7 @@ if __name__ == '__main__': mixed_precision = False # scale hyp['obj'] by img_size (evolved at 320) - hyp['obj'] *= opt.img_size / 320. + # hyp['obj'] *= opt.img_size / 320. tb_writer = None if not opt.evolve: # Train normally diff --git a/utils/utils.py b/utils/utils.py index 52638c0f..0ece2b3c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -367,7 +367,7 @@ def compute_loss(p, targets, model): # predictions, targets, model tcls, tbox, indices, anchor_vec = build_targets(model, targets) h = model.hyp # hyperparameters arc = model.arc # # (default, uCE, uBCE) detection architectures - red = 'mean' # Loss reduction (sum or mean) + red = 'sum' # Loss reduction (sum or mean) # Define criteria BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']]), reduction=red) From c948a4054c92b33d997ab03c4b8431e560b32a43 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 3 Jan 2020 15:41:01 -0800 Subject: [PATCH 1919/2595] updates --- utils/evolve.sh | 3 ++- utils/gcp.sh | 13 +++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/utils/evolve.sh b/utils/evolve.sh index a2283980..a41a74ad 100644 --- a/utils/evolve.sh +++ b/utils/evolve.sh @@ -8,5 +8,6 @@ # t=ultralytics/yolov3:v139 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 320 --epochs 1 --batch-size 64 --accumulate 1 --evolve --weights '' --pre --bucket yolov4/320_coco2014_27e --device 1 while true; do -python3 train.py --data coco2014.data --img-size 320 --epochs 27 --batch-size 64 --accumulate 1 --evolve --weights '' --arc defaultpw --pre --bucket yolov4/320_coco2014_27e --device $1 + python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --evolve --weights '' --arc defaultpw --pre --bucket yolov4/640ms_coco2014_10e --device $1 --multi + # python3 train.py --data coco2014.data --img-size 320 --epochs 27 --batch-size 64 --accumulate 1 --evolve --weights '' --arc defaultpw --pre --bucket yolov4/320_coco2014_27e --device $1 done diff --git a/utils/gcp.sh b/utils/gcp.sh index e5f3355d..b98bc3d8 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -42,8 +42,8 @@ t=ultralytics/yolov3:v179 sudo docker kill $(sudo docker ps -a -q --filter ancestor=$t) for i in 0 do - # sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i - sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v /mnt/disks/nvme0n1/coco:/usr/src/coco $t bash utils/evolve.sh $i + sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i + # sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v /mnt/disks/nvme0n1/coco:/usr/src/coco $t bash utils/evolve.sh $i sleep 10 done @@ -229,7 +229,12 @@ t=ultralytics/yolov3:v179 && sudo docker pull $t && sudo nvidia-docker run -it - t=ultralytics/yolov3:v143 && sudo docker build -t $t . && sudo docker push $t -t=ultralytics/yolov3:v179 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 detect.py -t=ultralytics/yolov3:v179 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host $t python3 detect.py +t=ultralytics/yolov3:v179 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 179 +t=ultralytics/yolov3:v180 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 180 +t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 181 --cfg yolov3s9a-640.cfg +t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 182 --cfg yolov3s9a-320-640.cfg +t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 183 --cfg yolov3s15a-640.cfg +t=ultralytics/yolov3:v185 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 185 +t=ultralytics/yolov3:v186 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 186 From efe3c319b56588e4d1948cdfbff877013559f621 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 3 Jan 2020 18:06:59 -0800 Subject: [PATCH 1920/2595] updates --- train.py | 40 ++++++++++++---------------------------- 1 file changed, 12 insertions(+), 28 deletions(-) diff --git a/train.py b/train.py index eda88c23..48d8c041 100644 --- a/train.py +++ b/train.py @@ -65,8 +65,8 @@ def train(): # Initialize init_seeds() if opt.multi_scale: - img_sz_min = round(img_size / 32 / 1.5) - img_sz_max = round(img_size / 32 * 1.5) + img_sz_min = 9 # round(img_size / 32 / 1.5) + img_sz_max = 21 # round(img_size / 32 * 1.5) img_size = img_sz_max * 32 # initiate with maximum multi_scale size print('Using multi-scale %g - %g' % (img_sz_min * 32, img_size)) @@ -136,23 +136,15 @@ def train(): # possible weights are '*.weights', 'yolov3-tiny.conv.15', 'darknet53.conv.74' etc. cutoff = load_darknet_weights(model, weights) - if opt.transfer or opt.prebias: # transfer learning edge (yolo) layers - nf = [int(model.module_defs[x - 1]['filters']) for x in model.yolo_layers] # yolo layer size (i.e. 255) + if opt.prebias: + # Update params (bias-only training allows more aggressive settings: i.e. SGD ~0.1 lr0, ~0.9 momentum) + for p in optimizer.param_groups: + p['lr'] = 0.1 # learning rate + if p.get('momentum') is not None: # for SGD but not Adam + p['momentum'] = 0.9 - if opt.prebias: - for p in optimizer.param_groups: - # lower param count allows more aggressive training settings: i.e. SGD ~0.1 lr0, ~0.9 momentum - p['lr'] = 0.1 # learning rate - if p.get('momentum') is not None: # for SGD but not Adam - p['momentum'] = 0.9 - - for p in model.parameters(): - if opt.prebias and p.numel() in nf: # train (yolo biases) - p.requires_grad = True - elif opt.transfer and p.shape[0] in nf: # train (yolo biases+weights) - p.requires_grad = True - else: # freeze layer - p.requires_grad = False + for name, p in model.named_parameters(): + p.requires_grad = True if name.endswith('.bias') else False # Scheduler https://github.com/ultralytics/yolov3/issues/238 # lf = lambda x: 1 - x / epochs # linear ramp to zero @@ -235,13 +227,6 @@ def train(): model.train() print(('\n' + '%10s' * 8) % ('Epoch', 'gpu_mem', 'GIoU', 'obj', 'cls', 'total', 'targets', 'img_size')) - # Freeze backbone at epoch 0, unfreeze at epoch 1 (optional) - freeze_backbone = False - if freeze_backbone and epoch < 2: - for name, p in model.named_parameters(): - if int(name.split('.')[1]) < cutoff: # if layer < 75 - p.requires_grad = False if epoch == 0 else True - # Update image weights (optional) if dataset.image_weights: w = model.class_weights.cpu().numpy() * (1 - maps) ** 2 # class weights @@ -406,7 +391,7 @@ def prebias(): # opt_0 = opt # save settings # opt.rect = False # update settings (if any) - train() # transfer-learn yolo biases for 1 epoch + train() # train model biases create_backbone(last) # saved results as backbone.pt # opt = opt_0 # reset settings @@ -425,7 +410,6 @@ if __name__ == '__main__': parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--rect', action='store_true', help='rectangular training') parser.add_argument('--resume', action='store_true', help='resume training from last.pt') - parser.add_argument('--transfer', action='store_true', help='transfer learning') parser.add_argument('--nosave', action='store_true', help='only save final checkpoint') parser.add_argument('--notest', action='store_true', help='only test final epoch') parser.add_argument('--evolve', action='store_true', help='evolve hyperparameters') @@ -433,7 +417,7 @@ if __name__ == '__main__': parser.add_argument('--cache-images', action='store_true', help='cache images for faster training') parser.add_argument('--weights', type=str, default='weights/ultralytics68.pt', help='initial weights') parser.add_argument('--arc', type=str, default='default', help='yolo architecture') # defaultpw, uCE, uBCE - parser.add_argument('--prebias', action='store_true', help='transfer-learn yolo biases prior to training') + parser.add_argument('--prebias', action='store_true', help='pretrain model biases') parser.add_argument('--name', default='', help='renames results.txt to results_name.txt if supplied') parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1 or cpu)') parser.add_argument('--adam', action='store_true', help='use adam optimizer') From d197c0be75452e62e8ec9b343616b83d65ea1bc5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 4 Jan 2020 11:36:36 -0800 Subject: [PATCH 1921/2595] updates --- utils/gcp.sh | 11 +++++++---- utils/utils.py | 4 ++-- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index b98bc3d8..01770fb3 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -3,10 +3,10 @@ # New VM rm -rf sample_data yolov3 git clone https://github.com/ultralytics/yolov3 -git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex +#git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex sudo conda install -yc conda-forge scikit-image pycocotools -python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('193Zp_ye-3qXMonR1nZj3YyxMtQkMy50k','coco2014.zip')" -# python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('1WQT6SOktSe8Uw6r10-2JhbEhMY5DJaph','coco2017.zip')" +# python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('193Zp_ye-3qXMonR1nZj3YyxMtQkMy50k','coco2014.zip')" +python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('1WQT6SOktSe8Uw6r10-2JhbEhMY5DJaph','coco2017.zip')" sudo shutdown # Re-clone @@ -38,7 +38,7 @@ python3 detect.py python3 test.py --save-json # Evolve -t=ultralytics/yolov3:v179 +t=ultralytics/yolov3:v189 sudo docker kill $(sudo docker ps -a -q --filter ancestor=$t) for i in 0 do @@ -234,7 +234,10 @@ t=ultralytics/yolov3:v180 && sudo docker pull $t && sudo nvidia-docker run -it - t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 181 --cfg yolov3s9a-640.cfg t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 182 --cfg yolov3s9a-320-640.cfg t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 183 --cfg yolov3s15a-640.cfg +t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 184 --cfg yolov3s15a-320-640.cfg t=ultralytics/yolov3:v185 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 185 t=ultralytics/yolov3:v186 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 186 +n=187 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n + diff --git a/utils/utils.py b/utils/utils.py index 0ece2b3c..cf5157c5 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -778,7 +778,7 @@ def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(320, 640)): else: # Kmeans calculation from scipy.cluster.vq import kmeans - print('Running kmeans on %g points...' % len(wh)) + print('Running kmeans for %g anchors on %g points...' % (n, len(wh))) s = wh.std(0) # sigmas for whitening k, dist = kmeans(wh / s, n, iter=20) # points, mean distance k *= s @@ -800,7 +800,7 @@ def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(320, 640)): fg = fitness(thr, wh, kg) if fg > f: f, k = fg, kg.copy() - print(fg, list(k.round().reshape(-1))) + print_results(thr, wh, k) k = print_results(thr, wh, k) return k From 8ef441616d9aea55b52d8dc26fa0b80eaffee283 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 4 Jan 2020 12:26:02 -0800 Subject: [PATCH 1922/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index cf5157c5..b724ccbd 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -810,7 +810,7 @@ def print_mutation(hyp, results, bucket=''): # Print mutation results to evolve.txt (for use with train.py --evolve) a = '%10s' * len(hyp) % tuple(hyp.keys()) # hyperparam keys b = '%10.3g' * len(hyp) % tuple(hyp.values()) # hyperparam values - c = '%10.3g' * len(results) % results # results (P, R, mAP, F1, test_loss) + c = '%10.4g' * len(results) % results # results (P, R, mAP, F1, test_loss) print('\n%s\n%s\nEvolved fitness: %s\n' % (a, b, c)) if bucket: From 1aedf27886b6d10541280afab7792cca5f93f9b8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 5 Jan 2020 06:11:00 -0800 Subject: [PATCH 1923/2595] updates --- utils/datasets.py | 4 ++-- utils/gcp.sh | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index b88b769c..2cf8c8ba 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -689,7 +689,7 @@ def random_affine(img, targets=(), degrees=10, translate=.1, scale=.1, shear=10, area = w * h area0 = (targets[:, 3] - targets[:, 1]) * (targets[:, 4] - targets[:, 2]) ar = np.maximum(w / (h + 1e-16), h / (w + 1e-16)) # aspect ratio - i = (w > 4) & (h > 4) & (area / (area0 + 1e-16) > 0.1) & (ar < 10) + i = (w > 4) & (h > 4) & (area / (area0 + 1e-16) > 0.2) & (ar < 10) targets = targets[i] targets[:, 1:5] = xy[i] @@ -703,7 +703,7 @@ def cutout(image, labels): # https://towardsdatascience.com/when-conventional-wisdom-fails-revisiting-data-augmentation-for-self-driving-cars-4831998c5509 h, w = image.shape[:2] - def bbox_ioa(box1, box2, x1y1x2y2=True): + def bbox_ioa(box1, box2): # Returns the intersection over box2 area given box1, box2. box1 is 4, box2 is nx4. boxes are x1y1x2y2 box2 = box2.transpose() diff --git a/utils/gcp.sh b/utils/gcp.sh index 01770fb3..7bb52149 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -239,5 +239,18 @@ t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it - t=ultralytics/yolov3:v185 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 185 t=ultralytics/yolov3:v186 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 186 n=187 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +t=ultralytics/yolov3:v189 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 188 --cfg yolov3s15a-320-640.cfg +n=190 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=191 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=192 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=193 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=194 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=195 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=196 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n + +n=197 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=198 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=199 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=200 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n From 04a0a6f6094dfae88cf04a4b2c5e0819e8665acc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 5 Jan 2020 12:50:58 -0800 Subject: [PATCH 1924/2595] updates --- train.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 48d8c041..8baf79da 100644 --- a/train.py +++ b/train.py @@ -367,8 +367,10 @@ def train(): # end epoch ---------------------------------------------------------------------------------------------------- # end training - if len(opt.name) and not opt.prebias: - fresults, flast, fbest = 'results%s.txt' % opt.name, 'last%s.pt' % opt.name, 'best%s.pt' % opt.name + n = opt.name + if len(n) and not opt.prebias: + n = '_' + n if not n.isnumeric() else n + fresults, flast, fbest = 'results%s.txt' % n, 'last%s.pt' % n, 'best%s.pt' % n os.rename('results.txt', fresults) os.rename(wdir + 'last.pt', wdir + flast) if os.path.exists(wdir + 'last.pt') else None os.rename(wdir + 'best.pt', wdir + fbest) if os.path.exists(wdir + 'best.pt') else None From 3b1caf9a431d5509880a777d5dd00e3ac2797d52 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 6 Jan 2020 11:57:12 -0800 Subject: [PATCH 1925/2595] updates --- train.py | 2 +- utils/gcp.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 8baf79da..ceabfeb3 100644 --- a/train.py +++ b/train.py @@ -403,7 +403,7 @@ def prebias(): if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument('--epochs', type=int, default=273) # 500200 batches at bs 16, 117263 images = 273 epochs + parser.add_argument('--epochs', type=int, default=273) # 500200 batches at bs 16, 117263 COCO images = 273 epochs parser.add_argument('--batch-size', type=int, default=16) # effective bs = batch_size * accumulate = 16 * 4 = 64 parser.add_argument('--accumulate', type=int, default=4, help='batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path') diff --git a/utils/gcp.sh b/utils/gcp.sh index 7bb52149..2ac4e37f 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -38,7 +38,7 @@ python3 detect.py python3 test.py --save-json # Evolve -t=ultralytics/yolov3:v189 +t=ultralytics/yolov3:v176 sudo docker kill $(sudo docker ps -a -q --filter ancestor=$t) for i in 0 do @@ -249,7 +249,7 @@ n=194 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker r n=195 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n n=196 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=197 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=197 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 273 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n n=198 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n n=199 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n n=200 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n From 09ff72bc7b4f11a67f8680cdb21a2963a39dc34d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 6 Jan 2020 12:35:10 -0800 Subject: [PATCH 1926/2595] updates --- utils/utils.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index b724ccbd..5bc84fff 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -436,9 +436,10 @@ def compute_loss(p, targets, model): # predictions, targets, model lcls *= h['cls'] if red == 'sum': bs = tobj.shape[0] # batch size - lbox *= 3 / ng lobj *= 3 / (6300 * bs) * 2 # 3 / np * 2 - lcls *= 3 / ng / model.nc + if ng: + lcls *= 3 / ng / model.nc + lbox *= 3 / ng loss = lbox + lobj + lcls return loss, torch.cat((lbox, lobj, lcls, loss)).detach() From af23270482fd807dcf06e329b29c3d722b71d2a9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 6 Jan 2020 13:57:20 -0800 Subject: [PATCH 1927/2595] updates --- utils/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 5bc84fff..2171d15b 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -773,7 +773,8 @@ def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(320, 640)): wh *= np.random.uniform(img_size[0], img_size[1], size=(wh.shape[0], 1)) # normalized to pixels (multi-scale) # Darknet yolov3.cfg anchors - if n == 9: + use_darknet = False + if use_darknet: k = np.array([[10, 13], [16, 30], [33, 23], [30, 61], [62, 45], [59, 119], [116, 90], [156, 198], [373, 326]]) k = print_results(thr, wh, k) else: From fd0769c4766626213c308e826b1156c5197cf133 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 6 Jan 2020 13:59:08 -0800 Subject: [PATCH 1928/2595] updates --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 2171d15b..0a99f861 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -782,7 +782,7 @@ def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(320, 640)): from scipy.cluster.vq import kmeans print('Running kmeans for %g anchors on %g points...' % (n, len(wh))) s = wh.std(0) # sigmas for whitening - k, dist = kmeans(wh / s, n, iter=20) # points, mean distance + k, dist = kmeans(wh / s, n, iter=30) # points, mean distance k *= s k = print_results(thr, wh, k) @@ -798,7 +798,7 @@ def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(320, 640)): wh = torch.Tensor(wh) f, ng = fitness(thr, wh, k), 1000 # fitness, generations for _ in tqdm(range(ng), desc='Evolving anchors'): - kg = (k.copy() * (1 + np.random.random() * np.random.randn(*k.shape) * 0.20)).clip(min=2.0) + kg = (k.copy() * (1 + np.random.random() * np.random.randn(*k.shape) * 0.30)).clip(min=2.0) fg = fitness(thr, wh, kg) if fg > f: f, k = fg, kg.copy() From 3b5ca2ea90e082c5882ae666c2b2a077bf5c5715 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 6 Jan 2020 14:16:23 -0800 Subject: [PATCH 1929/2595] updates --- utils/utils.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 0a99f861..059fba84 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -776,7 +776,6 @@ def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(320, 640)): use_darknet = False if use_darknet: k = np.array([[10, 13], [16, 30], [33, 23], [30, 61], [62, 45], [59, 119], [116, 90], [156, 198], [373, 326]]) - k = print_results(thr, wh, k) else: # Kmeans calculation from scipy.cluster.vq import kmeans @@ -784,7 +783,7 @@ def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(320, 640)): s = wh.std(0) # sigmas for whitening k, dist = kmeans(wh / s, n, iter=30) # points, mean distance k *= s - k = print_results(thr, wh, k) + k = print_results(thr, wh, k) # # Plot # k, d = [None] * 20, [None] * 20 From bf42c31d9ee10090a61ebfa2192098d6d6383695 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 6 Jan 2020 14:25:11 -0800 Subject: [PATCH 1930/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 059fba84..60efd25a 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -761,7 +761,7 @@ def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(320, 640)): def fitness(thr, wh, k): # mutation fitness iou = wh_iou(wh, torch.Tensor(k)).max(1)[0] # max iou bpr = (iou > thr).float().mean() # best possible recall - return iou.mean() * 0.80 + bpr * 0.20 # weighted combination + return iou.mean() * bpr # product # Get label wh wh = [] From 11ce877bdff2a355cc25a0c96fd5c23eb47a644b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 8 Jan 2020 09:42:01 -0800 Subject: [PATCH 1931/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 60efd25a..83ccd601 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -540,7 +540,7 @@ def non_max_suppression(prediction, conf_thres=0.5, iou_thres=0.5, multi_cls=Tru # Filter by class if classes: - pred = pred[(j.view(-1, 1) == torch.Tensor(classes)).any(1)] + pred = pred[(j.view(-1, 1) == torch.tensor(classes, device=j.device)).any(1)] # Apply finite constraint if not torch.isfinite(pred).all(): From 3e5b007e3ab6e317b8ac9c89eac7a30c2a93d539 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 8 Jan 2020 16:36:35 -0800 Subject: [PATCH 1932/2595] updates --- test.py | 4 ++-- utils/utils.py | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/test.py b/test.py index c5e166bb..894ad185 100644 --- a/test.py +++ b/test.py @@ -158,8 +158,8 @@ def test(cfg, stats = [np.concatenate(x, 0) for x in list(zip(*stats))] # to numpy if len(stats): p, r, ap, f1, ap_class = ap_per_class(*stats) - # if niou > 1: - # p, r, ap, f1 = p[:, 0], r[:, 0], ap[:, 0], ap.mean(1) # average across ious + if niou > 1: + p, r, ap, f1 = p[:, 0], r[:, 0], ap.mean(1), ap[:, 0] # [P, R, AP@0.5:0.95, AP@0.5] mp, mr, map, mf1 = p.mean(), r.mean(), ap.mean(), f1.mean() nt = np.bincount(stats[3].astype(np.int64), minlength=nc) # number of targets per class else: diff --git a/utils/utils.py b/utils/utils.py index 83ccd601..502688b4 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -863,7 +863,8 @@ def apply_classifier(x, model, img, im0): def fitness(x): # Returns fitness (for use with results.txt or evolve.txt) - return x[:, 2] * 0.3 + x[:, 3] * 0.7 # weighted combination of x=[p, r, mAP@0.5, F1 or mAP@0.5:0.95] + w = [0.1, 0.1, 0.6, 0.2] # weights for [P, R, mAP, F1]@0.5 or [P, R, mAP@0.5:0.95, mAP@0.5] + return (x[:, :4] * np.array([w])).sum(1) # Plotting functions --------------------------------------------------------------------------------------------------- From fd8cd377c30bdd9651fbb3e28627fdc65e20a0c1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 8 Jan 2020 16:39:59 -0800 Subject: [PATCH 1933/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 502688b4..c93cecdf 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -864,7 +864,7 @@ def apply_classifier(x, model, img, im0): def fitness(x): # Returns fitness (for use with results.txt or evolve.txt) w = [0.1, 0.1, 0.6, 0.2] # weights for [P, R, mAP, F1]@0.5 or [P, R, mAP@0.5:0.95, mAP@0.5] - return (x[:, :4] * np.array([w])).sum(1) + return (x[:, :4] * w).sum(1) # Plotting functions --------------------------------------------------------------------------------------------------- From c1527e4ab137e0882d3ce605432541c81d2e14a4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 8 Jan 2020 18:48:41 -0800 Subject: [PATCH 1934/2595] updates --- test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index 894ad185..4be1121d 100644 --- a/test.py +++ b/test.py @@ -99,7 +99,7 @@ def test(cfg, if pred is None: if nl: - stats.append((torch.zeros(0, 1), torch.Tensor(), torch.Tensor(), tcls)) + stats.append((torch.zeros(0, niou, dtype=torch.bool), torch.Tensor(), torch.Tensor(), tcls)) continue # Append to text file @@ -147,7 +147,7 @@ def test(cfg, d = ti[i[j]] # detected target if d not in detected: detected.append(d) - correct[pi[j]] = ious[j] > iouv # iou_thres is 1xn + correct[pi[j]] = (ious[j] > iouv).cpu() # iou_thres is 1xn if len(detected) == nl: # all targets already located in image break From 0afcd9db8a81496cdb7fc040dc617f95f7eafbea Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 9 Jan 2020 09:56:16 -0800 Subject: [PATCH 1935/2595] updates --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index fb92e719..ab3f8049 100755 --- a/README.md +++ b/README.md @@ -26,12 +26,11 @@ The https://github.com/ultralytics/yolov3 repo contains inference and training c # Requirements -Python 3.7 or later with the following `pip3 install -U -r requirements.txt` packages: +Python 3.7 or later with the following `pip3 install -U -r requirements.txt` packages, including: -- `numpy` - `torch >= 1.3` - `opencv-python` -- `tqdm` +- `Pillow` # Tutorials From 5e5f3467d449f1c0bb260d610b185673af005377 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 9 Jan 2020 09:57:07 -0800 Subject: [PATCH 1936/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ab3f8049..0d9c7edd 100755 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ The https://github.com/ultralytics/yolov3 repo contains inference and training c # Requirements -Python 3.7 or later with the following `pip3 install -U -r requirements.txt` packages, including: +Python 3.7 or later with all of the `pip install -U -r requirements.txt` packages including: - `torch >= 1.3` - `opencv-python` From 6b2153d334b38105b26de911d82527d0bf6a0cf8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 9 Jan 2020 09:59:53 -0800 Subject: [PATCH 1937/2595] updates --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0d9c7edd..9e8d8ad6 100755 --- a/README.md +++ b/README.md @@ -27,11 +27,14 @@ The https://github.com/ultralytics/yolov3 repo contains inference and training c # Requirements Python 3.7 or later with all of the `pip install -U -r requirements.txt` packages including: - - `torch >= 1.3` - `opencv-python` - `Pillow` +All dependencies are included in the associated docker images. Docker requirements are: +- `nvidia-docker` +- Nvidia Driver Version >= 440.44 + # Tutorials * [GCP Quickstart](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) From bb9c6e7a8f10d08cd6dd645bce9413169649be1f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 9 Jan 2020 10:10:20 -0800 Subject: [PATCH 1938/2595] updates --- utils/evolve.sh | 7 ++-- utils/gcp.sh | 107 ++++++++++++++++++++++++++---------------------- 2 files changed, 63 insertions(+), 51 deletions(-) diff --git a/utils/evolve.sh b/utils/evolve.sh index a41a74ad..003312f5 100644 --- a/utils/evolve.sh +++ b/utils/evolve.sh @@ -5,9 +5,10 @@ # sleep 30 # done # -# t=ultralytics/yolov3:v139 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 320 --epochs 1 --batch-size 64 --accumulate 1 --evolve --weights '' --pre --bucket yolov4/320_coco2014_27e --device 1 +#t=ultralytics/yolov3:v199 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 672 --epochs 10 --batch 16 --accum 4 --weights '' --arc defaultpw --device 0 --multi while true; do - python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --evolve --weights '' --arc defaultpw --pre --bucket yolov4/640ms_coco2014_10e --device $1 --multi - # python3 train.py --data coco2014.data --img-size 320 --epochs 27 --batch-size 64 --accumulate 1 --evolve --weights '' --arc defaultpw --pre --bucket yolov4/320_coco2014_27e --device $1 + python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --evolve --device $1 --cfg yolov3-tiny-3cls.cfg + # python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --evolve --weights '' --arc defaultpw --pre --bucket yolov4/640ms_coco2014_10e --device $1 --multi + # python3 train.py --data coco2014.data --img-size 320 --epochs 27 --batch 64 --accum 1 --evolve --weights '' --arc defaultpw --pre --bucket yolov4/320_coco2014_27e --device $1 done diff --git a/utils/gcp.sh b/utils/gcp.sh index 2ac4e37f..f5975f6d 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -38,13 +38,14 @@ python3 detect.py python3 test.py --save-json # Evolve -t=ultralytics/yolov3:v176 +t=ultralytics/yolov3:v206 sudo docker kill $(sudo docker ps -a -q --filter ancestor=$t) -for i in 0 +for i in 0 1 2 3 4 5 6 7 do - sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i - # sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v /mnt/disks/nvme0n1/coco:/usr/src/coco $t bash utils/evolve.sh $i - sleep 10 + sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t bash utils/evolve.sh $i + # sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i + # sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v /mnt/disks/nvme0n1/coco:/usr/src/coco $t bash utils/evolve.sh $i + sleep 1 done @@ -106,30 +107,30 @@ sudo docker pull ultralytics/yolov3:v0 sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco ultralytics/yolov3:v0 -t=ultralytics/yolov3:v70 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 70 --device 0 --multi -t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 71 --device 0 --multi --img-weights +t=ultralytics/yolov3:v70 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 70 --device 0 --multi +t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 71 --device 0 --multi --img-weights -t=ultralytics/yolov3:v73 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 73 --device 5 --cfg cfg/yolov3s.cfg -t=ultralytics/yolov3:v74 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 74 --device 0 --cfg cfg/yolov3s.cfg -t=ultralytics/yolov3:v75 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 75 --device 7 --cfg cfg/yolov3s.cfg -t=ultralytics/yolov3:v76 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 76 --device 0 --cfg cfg/yolov3-spp.cfg +t=ultralytics/yolov3:v73 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 73 --device 5 --cfg cfg/yolov3s.cfg +t=ultralytics/yolov3:v74 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 74 --device 0 --cfg cfg/yolov3s.cfg +t=ultralytics/yolov3:v75 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 75 --device 7 --cfg cfg/yolov3s.cfg +t=ultralytics/yolov3:v76 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 76 --device 0 --cfg cfg/yolov3-spp.cfg -t=ultralytics/yolov3:v79 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 79 --device 5 -t=ultralytics/yolov3:v80 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 80 --device 0 -t=ultralytics/yolov3:v81 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 81 --device 7 -t=ultralytics/yolov3:v82 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 82 --device 0 --cfg cfg/yolov3s.cfg +t=ultralytics/yolov3:v79 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 79 --device 5 +t=ultralytics/yolov3:v80 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 80 --device 0 +t=ultralytics/yolov3:v81 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 81 --device 7 +t=ultralytics/yolov3:v82 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 82 --device 0 --cfg cfg/yolov3s.cfg -t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 83 --device 6 --multi --nosave -t=ultralytics/yolov3:v84 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 84 --device 0 --multi -t=ultralytics/yolov3:v85 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 85 --device 0 --multi -t=ultralytics/yolov3:v86 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 86 --device 1 --multi -t=ultralytics/yolov3:v87 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 87 --device 2 --multi -t=ultralytics/yolov3:v88 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 88 --device 3 --multi -t=ultralytics/yolov3:v89 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 89 --device 1 -t=ultralytics/yolov3:v90 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 90 --device 0 --cfg cfg/yolov3-spp-matrix.cfg -t=ultralytics/yolov3:v91 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 91 --device 0 --cfg cfg/yolov3-spp-matrix.cfg +t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 83 --device 6 --multi --nosave +t=ultralytics/yolov3:v84 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 84 --device 0 --multi +t=ultralytics/yolov3:v85 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 85 --device 0 --multi +t=ultralytics/yolov3:v86 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 86 --device 1 --multi +t=ultralytics/yolov3:v87 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 87 --device 2 --multi +t=ultralytics/yolov3:v88 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 88 --device 3 --multi +t=ultralytics/yolov3:v89 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 89 --device 1 +t=ultralytics/yolov3:v90 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 90 --device 0 --cfg cfg/yolov3-spp-matrix.cfg +t=ultralytics/yolov3:v91 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 91 --device 0 --cfg cfg/yolov3-spp-matrix.cfg -t=ultralytics/yolov3:v92 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 92 --device 0 +t=ultralytics/yolov3:v92 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 92 --device 0 t=ultralytics/yolov3:v93 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 93 --device 0 --cfg cfg/yolov3-spp-matrix.cfg @@ -147,8 +148,8 @@ t=ultralytics/yolov3:v106 && sudo docker pull $t && sudo nvidia-docker run -it - t=ultralytics/yolov3:v107 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 107 --device 5 --nosave --cfg cfg/yolov3-spp3.cfg t=ultralytics/yolov3:v108 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 108 --device 7 --nosave -t=ultralytics/yolov3:v109 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 109 --device 4 --multi --nosave -t=ultralytics/yolov3:v110 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accumulate 4 --pre --bucket yolov4 --name 110 --device 3 --multi --nosave +t=ultralytics/yolov3:v109 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 109 --device 4 --multi --nosave +t=ultralytics/yolov3:v110 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 110 --device 3 --multi --nosave t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 111 --device 0 t=ultralytics/yolov3:v112 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 112 --device 1 --nosave @@ -229,28 +230,38 @@ t=ultralytics/yolov3:v179 && sudo docker pull $t && sudo nvidia-docker run -it - t=ultralytics/yolov3:v143 && sudo docker build -t $t . && sudo docker push $t -t=ultralytics/yolov3:v179 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 179 -t=ultralytics/yolov3:v180 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 180 -t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 181 --cfg yolov3s9a-640.cfg -t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 182 --cfg yolov3s9a-320-640.cfg -t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 183 --cfg yolov3s15a-640.cfg -t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 184 --cfg yolov3s15a-320-640.cfg +t=ultralytics/yolov3:v179 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 179 +t=ultralytics/yolov3:v180 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 180 +t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 181 --cfg yolov3s9a-640.cfg +t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 182 --cfg yolov3s9a-320-640.cfg +t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 183 --cfg yolov3s15a-640.cfg +t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 184 --cfg yolov3s15a-320-640.cfg -t=ultralytics/yolov3:v185 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 185 -t=ultralytics/yolov3:v186 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 186 -n=187 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -t=ultralytics/yolov3:v189 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 188 --cfg yolov3s15a-320-640.cfg -n=190 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=191 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=192 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +t=ultralytics/yolov3:v185 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 185 +t=ultralytics/yolov3:v186 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 186 +n=187 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +t=ultralytics/yolov3:v189 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 188 --cfg yolov3s15a-320-640.cfg +n=190 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=191 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=192 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=193 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=194 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=195 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=196 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=193 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=194 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=195 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=196 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=197 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 273 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=198 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=199 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=200 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch-size 22 --accumulate 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=197 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 273 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=198 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 273 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n + +# knife +n=199 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 0 +n=200 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 6 +n=207 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 7 + +# sm4 +n=201 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 0 --cfg yolov3-tiny-3cls.cfg +n=202 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 1 --cfg yolov3-tiny-3cls-sm4.cfg +n=203 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights '' --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 2 --cfg yolov3-tiny-3cls-sm4.cfg +n=204 && t=ultralytics/yolov3:v202 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 3 --cfg yolov3-tiny-3cls-sm4.cfg +n=205 && t=ultralytics/yolov3:v202 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights '' --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 4 --cfg yolov3-tiny-3cls-sm4.cfg From 759d27501760271d6ba1774ed277bb3fc93548fc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 9 Jan 2020 14:07:55 -0800 Subject: [PATCH 1939/2595] updates --- utils/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index c93cecdf..70e40667 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -840,13 +840,13 @@ def apply_classifier(x, model, img, im0): d[:, :4] = xywh2xyxy(b).long() # Rescale boxes from img_size to im0 size - scale_coords(img.shape[2:], d[:, :4], im0.shape) + scale_coords(img.shape[2:], d[:, :4], im0[i].shape) # Classes - pred_cls1 = d[:, 6].long() + pred_cls1 = d[:, 5].long() ims = [] for j, a in enumerate(d): # per item - cutout = im0[int(a[1]):int(a[3]), int(a[0]):int(a[2])] + cutout = im0[i][int(a[1]):int(a[3]), int(a[0]):int(a[2])] im = cv2.resize(cutout, (224, 224)) # BGR # cv2.imwrite('test%i.jpg' % j, cutout) From 0219eb094e1f5f0477ce23d7ccbac6467df51539 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 9 Jan 2020 21:05:26 -0800 Subject: [PATCH 1940/2595] updates --- utils/datasets.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 2cf8c8ba..430d34e6 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -283,7 +283,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Rectangular Training https://github.com/ultralytics/yolov3/issues/232 if self.rect: - # Read image shapes + # Read image shapes (wh) sp = path.replace('.txt', '.shapes') # shapefile path try: with open(sp, 'r') as f: # read existing shapefile @@ -299,7 +299,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing i = ar.argsort() self.img_files = [self.img_files[i] for i in i] self.label_files = [self.label_files[i] for i in i] - self.shapes = s[i] + self.shapes = s[i] # wh ar = ar[i] # Set training image shapes From 793f6389dc003153c2171f88a45b71e3b9cd21d9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 10 Jan 2020 09:30:05 -0800 Subject: [PATCH 1941/2595] updates --- detect.py | 3 ++- utils/utils.py | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/detect.py b/detect.py index b9ddbf0f..09bb7311 100644 --- a/detect.py +++ b/detect.py @@ -86,7 +86,7 @@ def detect(save_img=False): pred = pred.float() # Apply NMS - pred = non_max_suppression(pred, opt.conf_thres, opt.iou_thres, classes=opt.classes) + pred = non_max_suppression(pred, opt.conf_thres, opt.iou_thres, classes=opt.classes, agnostic=opt.agnostic_nms) # Apply Classifier if classify: @@ -169,6 +169,7 @@ if __name__ == '__main__': parser.add_argument('--view-img', action='store_true', help='display results') parser.add_argument('--save-txt', action='store_true', help='display results') parser.add_argument('--classes', nargs='+', type=int, help='filter by class') + parser.add_argument('--agnostic-nms', action='store_true', help='class-agnostic NMS') opt = parser.parse_args() print(opt) diff --git a/utils/utils.py b/utils/utils.py index 70e40667..91dc62a9 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -499,7 +499,7 @@ def build_targets(model, targets): return tcls, tbox, indices, av -def non_max_suppression(prediction, conf_thres=0.5, iou_thres=0.5, multi_cls=True, method='vision_batch', classes=None): +def non_max_suppression(prediction, conf_thres=0.5, iou_thres=0.5, multi_cls=True, classes=None, agnostic=False): """ Removes detections with lower object confidence score than 'conf_thres' Non-Maximum Suppression to further filter detections. @@ -511,6 +511,7 @@ def non_max_suppression(prediction, conf_thres=0.5, iou_thres=0.5, multi_cls=Tru # Box constraints min_wh, max_wh = 2, 4096 # (pixels) minimum and maximum box width and height + method = 'vision_batch' output = [None] * len(prediction) for image_i, pred in enumerate(prediction): # Apply conf constraint @@ -548,7 +549,8 @@ def non_max_suppression(prediction, conf_thres=0.5, iou_thres=0.5, multi_cls=Tru # Batched NMS if method == 'vision_batch': - output[image_i] = pred[torchvision.ops.boxes.batched_nms(pred[:, :4], pred[:, 4], pred[:, 5], iou_thres)] + c = j * 0 if agnostic else j # class-agnostic NMS + output[image_i] = pred[torchvision.ops.boxes.batched_nms(pred[:, :4], pred[:, 4], c, iou_thres)] continue # Sort by confidence From 6235d76976193264a6d2d9a7469f83078cbabed0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 10 Jan 2020 10:12:40 -0800 Subject: [PATCH 1942/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 91dc62a9..4a7e969a 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -549,7 +549,7 @@ def non_max_suppression(prediction, conf_thres=0.5, iou_thres=0.5, multi_cls=Tru # Batched NMS if method == 'vision_batch': - c = j * 0 if agnostic else j # class-agnostic NMS + c = pred[:, 5] * 0 if agnostic else pred[:, 5] # class-agnostic NMS output[image_i] = pred[torchvision.ops.boxes.batched_nms(pred[:, :4], pred[:, 4], c, iou_thres)] continue From 6e52f985fe4c689b46b71c36c4703d806c1a1a38 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 10 Jan 2020 11:45:51 -0800 Subject: [PATCH 1943/2595] updates --- utils/datasets.py | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 430d34e6..d0ee7660 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -379,12 +379,13 @@ class LoadImagesAndLabels(Dataset): # for training/testing nf, nm, ne, nd, n) assert nf > 0, 'No labels found. See %s' % help_url - # Cache images into memory for faster training (WARNING: Large datasets may exceed system RAM) + # Cache images into memory for faster training (WARNING: large datasets may exceed system RAM) if cache_images: # if training gb = 0 # Gigabytes of cached images pbar = tqdm(range(len(self.img_files)), desc='Caching images') + self.img_hw0, self.img_hw = [None] * n, [None] * n for i in pbar: # max 10k images - self.imgs[i] = load_image(self, i) + self.imgs[i], self.img_hw0[i], self.img_hw[i] = load_image(self, i) # img, hw_original, hw_resized gb += self.imgs[i].nbytes pbar.desc = 'Caching images (%.1fGB)' % (gb / 1E9) @@ -419,15 +420,13 @@ class LoadImagesAndLabels(Dataset): # for training/testing if mosaic: # Load mosaic img, labels = load_mosaic(self, index) - h, w = img.shape[:2] - ratio, pad = None, None + h0, w0, ratio, pad = None, None, None, None else: # Load image - img = load_image(self, index) + img, (h0, w0), (h, w) = load_image(self, index) # Letterbox - h, w = img.shape[:2] shape = self.batch_shapes[self.batch[index]] if self.rect else self.img_size # final letterboxed shape img, ratio, pad = letterbox(img, shape, auto=False, scaleup=self.augment) @@ -495,7 +494,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416 img = np.ascontiguousarray(img) - return torch.from_numpy(img), labels_out, img_path, ((h, w), (ratio, pad)) + return torch.from_numpy(img), labels_out, img_path, ((h0, w0), (ratio, pad)) @staticmethod def collate_fn(batch): @@ -506,17 +505,18 @@ class LoadImagesAndLabels(Dataset): # for training/testing def load_image(self, index): - # loads 1 image from dataset - img = self.imgs[index] - if img is None: + # loads 1 image from dataset, returns img, original hw, resized hw + if self.imgs[index] is None: # not cached img_path = self.img_files[index] img = cv2.imread(img_path) # BGR assert img is not None, 'Image Not Found ' + img_path - r = self.img_size / max(img.shape) # resize image to img_size + h0, w0 = img.shape[:2] # orig hw + r = self.img_size / max(h0, w0) # resize image to img_size if self.augment and (r != 1): # always resize down, only resize up if training with augmentation - h, w = img.shape[:2] - return cv2.resize(img, (int(w * r), int(h * r)), interpolation=cv2.INTER_LINEAR) # _LINEAR fastest - return img + h, w = int(h0 * r), int(w0 * r) + return cv2.resize(img, (w, h), interpolation=cv2.INTER_LINEAR), (h0, w0), (h, w) # _LINEAR fastest + else: # cached + return self.imgs[index], self.img_hw0[index], self.img_hw[index] # img, hw def augment_hsv(img, hgain=0.5, sgain=0.5, vgain=0.5): @@ -535,8 +535,7 @@ def load_mosaic(self, index): indices = [index] + [random.randint(0, len(self.labels) - 1) for _ in range(3)] # 3 additional image indices for i, index in enumerate(indices): # Load image - img = load_image(self, index) - h, w, _ = img.shape + img, _, (h, w) = load_image(self, index) # place img in img4 if i == 0: # top left From 3505b57421322cb1d38dd9774a92d7a0ec79c53c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 10 Jan 2020 11:55:54 -0800 Subject: [PATCH 1944/2595] updates --- utils/datasets.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index d0ee7660..f1dccc8e 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -506,17 +506,18 @@ class LoadImagesAndLabels(Dataset): # for training/testing def load_image(self, index): # loads 1 image from dataset, returns img, original hw, resized hw - if self.imgs[index] is None: # not cached + img = self.imgs[index] + if img is None: # not cached img_path = self.img_files[index] img = cv2.imread(img_path) # BGR assert img is not None, 'Image Not Found ' + img_path h0, w0 = img.shape[:2] # orig hw r = self.img_size / max(h0, w0) # resize image to img_size - if self.augment and (r != 1): # always resize down, only resize up if training with augmentation - h, w = int(h0 * r), int(w0 * r) - return cv2.resize(img, (w, h), interpolation=cv2.INTER_LINEAR), (h0, w0), (h, w) # _LINEAR fastest - else: # cached - return self.imgs[index], self.img_hw0[index], self.img_hw[index] # img, hw + if r < 1 or (self.augment and (r != 1)): # always resize down, only resize up if training with augmentation + img = cv2.resize(img, (int(w0 * r), int(h0 * r)), interpolation=cv2.INTER_LINEAR) # _LINEAR fastest + return img, (h0, w0), img.shape[:2] # img, hw_original, hw_resized + else: + return self.imgs[index], self.img_hw0[index], self.img_hw[index] # img, hw_original, hw_resized def augment_hsv(img, hgain=0.5, sgain=0.5, vgain=0.5): From c8a67adeccc277223f965ac8043ecfca27575e05 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 10 Jan 2020 12:49:22 -0800 Subject: [PATCH 1945/2595] updates --- train.py | 4 ++-- utils/utils.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index ceabfeb3..d387839f 100644 --- a/train.py +++ b/train.py @@ -470,7 +470,7 @@ if __name__ == '__main__': # Mutate np.random.seed(int(time.time())) - s = np.random.random() * 0.15 # sigma + s = np.random.random() * 0.2 # sigma g = [1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 1, 1, 1, 1, 1, 1, 1, 1] # gains for i, k in enumerate(hyp.keys()): x = (np.random.randn() * s * g[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) @@ -478,7 +478,7 @@ if __name__ == '__main__': # Clip to limits keys = ['lr0', 'iou_t', 'momentum', 'weight_decay', 'hsv_s', 'hsv_v', 'translate', 'scale', 'fl_gamma'] - limits = [(1e-5, 1e-2), (0.00, 0.70), (0.60, 0.98), (0, 0.001), (0, .9), (0, .9), (0, .9), (0, .9), (0, 3)] + limits = [(1e-5, 1e-2), (0.00, 0.70), (0.60, 0.99), (0, 0.001), (0, .9), (0, .9), (0, .9), (0, .9), (0, 3)] for k, v in zip(keys, limits): hyp[k] = np.clip(hyp[k], v[0], v[1]) diff --git a/utils/utils.py b/utils/utils.py index 4a7e969a..301a852d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -865,7 +865,7 @@ def apply_classifier(x, model, img, im0): def fitness(x): # Returns fitness (for use with results.txt or evolve.txt) - w = [0.1, 0.1, 0.6, 0.2] # weights for [P, R, mAP, F1]@0.5 or [P, R, mAP@0.5:0.95, mAP@0.5] + w = [0.0, 0.0, 0.8, 0.2] # weights for [P, R, mAP, F1]@0.5 or [P, R, mAP@0.5:0.95, mAP@0.5] return (x[:, :4] * w).sum(1) From b7a25e60ce2681b6325fc18cf1291bc28535e9b1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 10 Jan 2020 13:41:47 -0800 Subject: [PATCH 1946/2595] updates --- utils/datasets.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index f1dccc8e..4061af81 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -420,7 +420,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing if mosaic: # Load mosaic img, labels = load_mosaic(self, index) - h0, w0, ratio, pad = None, None, None, None + shapes = None else: # Load image @@ -429,6 +429,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Letterbox shape = self.batch_shapes[self.batch[index]] if self.rect else self.img_size # final letterboxed shape img, ratio, pad = letterbox(img, shape, auto=False, scaleup=self.augment) + shapes = (h0, w0), ((h / h0, w / w0), pad) # for COCO mAP rescaling # Load labels labels = [] @@ -494,7 +495,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416 img = np.ascontiguousarray(img) - return torch.from_numpy(img), labels_out, img_path, ((h0, w0), (ratio, pad)) + return torch.from_numpy(img), labels_out, img_path, shapes @staticmethod def collate_fn(batch): From ba265d91b2c174cefff09e76859afe92086397ad Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 10 Jan 2020 16:09:36 -0800 Subject: [PATCH 1947/2595] updates --- train.py | 87 +++++++++++++++++++++---------------------------- utils/evolve.sh | 4 ++- utils/gcp.sh | 9 +++-- utils/utils.py | 4 +-- 4 files changed, 49 insertions(+), 55 deletions(-) diff --git a/train.py b/train.py index d387839f..a0a1cde2 100644 --- a/train.py +++ b/train.py @@ -53,7 +53,7 @@ def train(): cfg = opt.cfg data = opt.data img_size = opt.img_size - epochs = 1 if opt.prebias else opt.epochs # 500200 batches at bs 64, 117263 images = 273 epochs + epochs = opt.epochs # 500200 batches at bs 64, 117263 images = 273 epochs batch_size = opt.batch_size accumulate = opt.accumulate # effective bs = batch_size * accumulate = 16 * 4 = 64 weights = opt.weights # initial training weights @@ -65,8 +65,8 @@ def train(): # Initialize init_seeds() if opt.multi_scale: - img_sz_min = 9 # round(img_size / 32 / 1.5) - img_sz_max = 21 # round(img_size / 32 * 1.5) + img_sz_min = round(img_size / 32 / 1.5) + img_sz_max = round(img_size / 32 * 1.5) img_size = img_sz_max * 32 # initiate with maximum multi_scale size print('Using multi-scale %g - %g' % (img_sz_min * 32, img_size)) @@ -136,16 +136,6 @@ def train(): # possible weights are '*.weights', 'yolov3-tiny.conv.15', 'darknet53.conv.74' etc. cutoff = load_darknet_weights(model, weights) - if opt.prebias: - # Update params (bias-only training allows more aggressive settings: i.e. SGD ~0.1 lr0, ~0.9 momentum) - for p in optimizer.param_groups: - p['lr'] = 0.1 # learning rate - if p.get('momentum') is not None: # for SGD but not Adam - p['momentum'] = 0.9 - - for name, p in model.named_parameters(): - p.requires_grad = True if name.endswith('.bias') else False - # Scheduler https://github.com/ultralytics/yolov3/issues/238 # lf = lambda x: 1 - x / epochs # linear ramp to zero # lf = lambda x: 10 ** (hyp['lrf'] * x / epochs) # exp ramp @@ -186,7 +176,7 @@ def train(): rect=opt.rect, # rectangular training image_weights=False, cache_labels=epochs > 10, - cache_images=opt.cache_images and not opt.prebias) + cache_images=opt.cache_images) # Dataloader batch_size = min(batch_size, len(dataset)) @@ -198,17 +188,16 @@ def train(): pin_memory=True, collate_fn=dataset.collate_fn) - # Test Dataloader - if not opt.prebias: - testloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path, opt.img_size, batch_size * 2, - hyp=hyp, - rect=True, - cache_labels=True, - cache_images=opt.cache_images), - batch_size=batch_size * 2, - num_workers=nw, - pin_memory=True, - collate_fn=dataset.collate_fn) + # Testloader + testloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path, opt.img_size, batch_size * 2, + hyp=hyp, + rect=True, + cache_labels=True, + cache_images=opt.cache_images), + batch_size=batch_size * 2, + num_workers=nw, + pin_memory=True, + collate_fn=dataset.collate_fn) # Start training nb = len(dataloader) @@ -222,11 +211,26 @@ def train(): t0 = time.time() torch_utils.model_info(model, report='summary') # 'full' or 'summary' print('Using %g dataloader workers' % nw) - print('Starting %s for %g epochs...' % ('prebias' if opt.prebias else 'training', epochs)) - for epoch in range(start_epoch, epochs): # epoch ------------------------------------------------------------------ + print('Starting training for %g epochs...' % epochs) + for epoch in range(start_epoch - 1 if opt.prebias else start_epoch, epochs): # epoch ------------------------------ model.train() print(('\n' + '%10s' * 8) % ('Epoch', 'gpu_mem', 'GIoU', 'obj', 'cls', 'total', 'targets', 'img_size')) + # Prebias + if opt.prebias: + if epoch < 0: # prebias + ps = 0.1, 0.9, False # prebias settings (lr=0.1, momentum=0.9, requires_grad=False) + else: # normal training + ps = hyp['lr0'], hyp['momentum'], True # normal training settings + opt.prebias = False + + for p in optimizer.param_groups: + p['lr'] = ps[0] # learning rate + if p.get('momentum') is not None: # for SGD but not Adam + p['momentum'] = ps[1] + for name, p in model.named_parameters(): + p.requires_grad = True if name.endswith('.bias') else ps[2] + # Update image weights (optional) if dataset.image_weights: w = model.class_weights.cpu().numpy() * (1 - maps) ** 2 # class weights @@ -300,13 +304,11 @@ def train(): # end batch ------------------------------------------------------------------------------------------------ - # Update scheduler - scheduler.step() - # Process epoch results final_epoch = epoch + 1 == epochs if opt.prebias: print_model_biases(model) + continue elif not opt.notest or final_epoch: # Calculate mAP is_coco = any([x in data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) and model.nc == 80 results, maps = test.test(cfg, @@ -319,10 +321,13 @@ def train(): save_json=final_epoch and is_coco, dataloader=testloader) + # Update scheduler + scheduler.step() + # Write epoch results with open(results_file, 'a') as f: f.write(s + '%10.3g' * 7 % results + '\n') # P, R, mAP, F1, test_losses=(GIoU, obj, cls) - if len(opt.name) and opt.bucket and not opt.prebias: + if len(opt.name) and opt.bucket: os.system('gsutil cp results.txt gs://%s/results%s.txt' % (opt.bucket, opt.name)) # Write Tensorboard results @@ -339,7 +344,7 @@ def train(): best_fitness = fitness # Save training results - save = (not opt.nosave) or (final_epoch and not opt.evolve) or opt.prebias + save = (not opt.nosave) or (final_epoch and not opt.evolve) if save: with open(results_file, 'r') as f: # Create checkpoint @@ -368,7 +373,7 @@ def train(): # end training n = opt.name - if len(n) and not opt.prebias: + if len(n): n = '_' + n if not n.isnumeric() else n fresults, flast, fbest = 'results%s.txt' % n, 'last%s.pt' % n, 'best%s.pt' % n os.rename('results.txt', fresults) @@ -387,20 +392,6 @@ def train(): return results -def prebias(): - # trains output bias layers for 1 epoch and creates new backbone - if opt.prebias: - # opt_0 = opt # save settings - # opt.rect = False # update settings (if any) - - train() # train model biases - create_backbone(last) # saved results as backbone.pt - - # opt = opt_0 # reset settings - opt.weights = wdir + 'backbone.pt' # assign backbone - opt.prebias = False # disable prebias - - if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--epochs', type=int, default=273) # 500200 batches at bs 16, 117263 COCO images = 273 epochs @@ -444,7 +435,6 @@ if __name__ == '__main__': except: pass - prebias() # optional train() # train normally else: # Evolve hyperparameters (optional) @@ -483,7 +473,6 @@ if __name__ == '__main__': hyp[k] = np.clip(hyp[k], v[0], v[1]) # Train mutation - prebias() results = train() # Write mutation results diff --git a/utils/evolve.sh b/utils/evolve.sh index 003312f5..afcc0ba6 100644 --- a/utils/evolve.sh +++ b/utils/evolve.sh @@ -8,7 +8,9 @@ #t=ultralytics/yolov3:v199 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 672 --epochs 10 --batch 16 --accum 4 --weights '' --arc defaultpw --device 0 --multi while true; do - python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --evolve --device $1 --cfg yolov3-tiny-3cls.cfg + python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --evolve --device $1 --cfg yolov3-tiny-3cls.cfg --cache + # python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ult/athena --evolve --device $1 + # python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --evolve --weights '' --arc defaultpw --pre --bucket yolov4/640ms_coco2014_10e --device $1 --multi # python3 train.py --data coco2014.data --img-size 320 --epochs 27 --batch 64 --accum 1 --evolve --weights '' --arc defaultpw --pre --bucket yolov4/320_coco2014_27e --device $1 done diff --git a/utils/gcp.sh b/utils/gcp.sh index f5975f6d..378e794c 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -40,12 +40,13 @@ python3 test.py --save-json # Evolve t=ultralytics/yolov3:v206 sudo docker kill $(sudo docker ps -a -q --filter ancestor=$t) -for i in 0 1 2 3 4 5 6 7 +for i in 0 1 2 3 do - sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t bash utils/evolve.sh $i + sudo docker pull $t && sudo docker run --gpus all -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t bash utils/evolve.sh $i + # sudo docker pull $t && sudo docker run --gpus all -d --ipc=host -v "$(pwd)"/out:/usr/src/out $t bash utils/evolve.sh $i # sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i # sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v /mnt/disks/nvme0n1/coco:/usr/src/coco $t bash utils/evolve.sh $i - sleep 1 + sleep 120 done @@ -257,6 +258,7 @@ n=198 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker r n=199 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 0 n=200 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 6 n=207 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 7 +n=208 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 # sm4 n=201 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 0 --cfg yolov3-tiny-3cls.cfg @@ -265,3 +267,4 @@ n=203 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo nvidia-docker n=204 && t=ultralytics/yolov3:v202 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 3 --cfg yolov3-tiny-3cls-sm4.cfg n=205 && t=ultralytics/yolov3:v202 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights '' --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 4 --cfg yolov3-tiny-3cls-sm4.cfg +n=206 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --notest --nosave --cache --device 0 --cfg yolov3-tiny-3cls.cfg diff --git a/utils/utils.py b/utils/utils.py index 301a852d..b08744d8 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -633,7 +633,7 @@ def get_yolo_layers(model): def print_model_biases(model): # prints the bias neurons preceding each yolo layer - print('\nModel Bias Summary (per output layer):') + print('\nModel Bias Summary:') multi_gpu = type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) for l in model.yolo_layers: # print pretrained biases if multi_gpu: @@ -642,7 +642,7 @@ def print_model_biases(model): else: na = model.module_list[l].na b = model.module_list[l - 1][0].bias.view(na, -1) # bias 3x85 - print('regression: %5.2f+/-%-5.2f ' % (b[:, :4].mean(), b[:, :4].std()), + print('layer %3g regression: %5.2f+/-%-5.2f ' % (l, b[:, :4].mean(), b[:, :4].std()), 'objectness: %5.2f+/-%-5.2f ' % (b[:, 4].mean(), b[:, 4].std()), 'classification: %5.2f+/-%-5.2f' % (b[:, 5:].mean(), b[:, 5:].std())) From fc0748f876fd570a9583c95d26a01d764e4d10d5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 10 Jan 2020 23:28:54 -0800 Subject: [PATCH 1948/2595] updates --- train.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/train.py b/train.py index a0a1cde2..c36b0e00 100644 --- a/train.py +++ b/train.py @@ -451,24 +451,22 @@ if __name__ == '__main__': if parent == 'single' or len(x) == 1: x = x[fitness(x).argmax()] elif parent == 'weighted': # weighted combination - n = min(10, x.shape[0]) # number to merge + n = min(10, len(x)) # number to merge x = x[np.argsort(-fitness(x))][:n] # top n mutations w = fitness(x) - fitness(x).min() # weights - x = (x[:n] * w.reshape(n, 1)).sum(0) / w.sum() # new parent - for i, k in enumerate(hyp.keys()): - hyp[k] = x[i + 7] + x = (x * w.reshape(n, 1)).sum(0) / w.sum() # new parent # Mutate np.random.seed(int(time.time())) s = np.random.random() * 0.2 # sigma g = [1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 1, 1, 1, 1, 1, 1, 1, 1] # gains + g = (np.random.randn(len(g)) * np.array(g) * s + 1) ** 2.0 # plt.hist(x.ravel(), 300) for i, k in enumerate(hyp.keys()): - x = (np.random.randn() * s * g[i] + 1) ** 2.0 # plt.hist(x.ravel(), 300) - hyp[k] *= float(x) # vary by sigmas + hyp[k] = x[i + 7] * g[i] # mutate parent # Clip to limits keys = ['lr0', 'iou_t', 'momentum', 'weight_decay', 'hsv_s', 'hsv_v', 'translate', 'scale', 'fl_gamma'] - limits = [(1e-5, 1e-2), (0.00, 0.70), (0.60, 0.99), (0, 0.001), (0, .9), (0, .9), (0, .9), (0, .9), (0, 3)] + limits = [(1e-5, 1e-2), (0.00, 0.70), (0.60, 0.98), (0, 0.001), (0, .9), (0, .9), (0, .9), (0, .9), (0, 3)] for k, v in zip(keys, limits): hyp[k] = np.clip(hyp[k], v[0], v[1]) From 1638ab71cd9a5f2e4d8507690718764d5d1583f3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 10 Jan 2020 23:31:25 -0800 Subject: [PATCH 1949/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 4be1121d..54fc15d3 100644 --- a/test.py +++ b/test.py @@ -49,7 +49,7 @@ def test(cfg, path = data['valid'] # path to test images names = load_classes(data['names']) # class names iouv = torch.linspace(0.5, 0.95, 10).to(device) # iou vector for mAP@0.5:0.95 - iouv = iouv[0].view(1) # for mAP@0.5 + iouv = iouv[0].view(1) # comment for mAP@0.5:0.95 niou = iouv.numel() # Dataloader From 5cda317902a65f82675d7dbb1dc0038c5c98c08e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 11 Jan 2020 13:11:30 -0800 Subject: [PATCH 1950/2595] updates --- models.py | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/models.py b/models.py index 3304a506..9ce72ece 100755 --- a/models.py +++ b/models.py @@ -177,27 +177,14 @@ class YOLOLayer(nn.Module): elif ONNX_EXPORT: # Constants CAN NOT BE BROADCAST, ensure correct shape! m = self.na * self.nx * self.ny - ngu = self.ng.repeat((1, m, 1)) - grid_xy = self.grid_xy.repeat((1, self.na, 1, 1, 1)).view(1, m, 2) - anchor_wh = self.anchor_wh.repeat((1, 1, self.nx, self.ny, 1)).view(1, m, 2) / ngu + grid_xy = self.grid_xy.repeat((1, self.na, 1, 1, 1)).view(m, 2) + anchor_wh = self.anchor_wh.repeat((1, 1, self.nx, self.ny, 1)).view(m, 2) / self.ng p = p.view(m, self.no) - xy = torch.sigmoid(p[:, 0:2]) + grid_xy[0] # x, y - wh = torch.exp(p[:, 2:4]) * anchor_wh[0] # width, height - p_cls = F.softmax(p[:, 5:self.no], 1) * torch.sigmoid(p[:, 4:5]) # SSD-like conf - return torch.cat((xy / ngu[0], wh, p_cls), 1).t() - - # p = p.view(1, m, self.no) - # xy = torch.sigmoid(p[..., 0:2]) + grid_xy # x, y - # wh = torch.exp(p[..., 2:4]) * anchor_wh # width, height - # p_conf = torch.sigmoid(p[..., 4:5]) # Conf - # p_cls = p[..., 5:self.no] - # # Broadcasting only supported on first dimension in CoreML. See onnx-coreml/_operators.py - # # p_cls = F.softmax(p_cls, 2) * p_conf # SSD-like conf - # p_cls = torch.exp(p_cls).permute((2, 1, 0)) - # p_cls = p_cls / p_cls.sum(0).unsqueeze(0) * p_conf.permute((2, 1, 0)) # F.softmax() equivalent - # p_cls = p_cls.permute(2, 1, 0) - # return torch.cat((xy / ngu, wh, p_conf, p_cls), 2).squeeze().t() + xy = torch.sigmoid(p[:, 0:2]) + grid_xy # x, y + wh = torch.exp(p[:, 2:4]) * anchor_wh # width, height + p_cls = torch.sigmoid(p[:, 5:self.no]) * torch.sigmoid(p[:, 4:5]) # conf + return p_cls, xy / self.ng, wh else: # inference # s = 1.5 # scale_xy (pxy = pxy * s - (s - 1) / 2) @@ -266,9 +253,8 @@ class Darknet(nn.Module): if self.training: return output elif ONNX_EXPORT: - output = torch.cat(output, 1) # cat 3 layers 85 x (507, 2028, 8112) to 85 x 10647 - nc = self.module_list[self.yolo_layers[0]].nc # number of classes - return output[4:4 + nc].t(), output[0:4].t() # ONNX scores, boxes + x = [torch.cat(x, 0) for x in zip(*output)] + return x[0], torch.cat(x[1:3], 1) # scores, boxes: 3780x80, 3780x4 else: io, p = list(zip(*output)) # inference output, training output return torch.cat(io, 1), p From 9b8488577571fb96823e617dc328b65d17707a67 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 11 Jan 2020 13:12:58 -0800 Subject: [PATCH 1951/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 54fc15d3..b0954720 100644 --- a/test.py +++ b/test.py @@ -155,7 +155,7 @@ def test(cfg, stats.append((correct, pred[:, 4].cpu(), pred[:, 5].cpu(), tcls)) # Compute statistics - stats = [np.concatenate(x, 0) for x in list(zip(*stats))] # to numpy + stats = [np.concatenate(x, 0) for x in zip(*stats)] # to numpy if len(stats): p, r, ap, f1, ap_class = ap_per_class(*stats) if niou > 1: From 4b56a370e6af1ccabc69398954c3549d842aae93 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 11 Jan 2020 13:13:57 -0800 Subject: [PATCH 1952/2595] updates --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 4061af81..4c0e3b20 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -499,7 +499,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing @staticmethod def collate_fn(batch): - img, label, path, shapes = list(zip(*batch)) # transposed + img, label, path, shapes = zip(*batch) # transposed for i, l in enumerate(label): l[:, 0] = i # add target image index for build_targets() return torch.stack(img, 0), torch.cat(label, 0), path, shapes From 77034467f6beab5528f14567fedd3ccfa7bb6102 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 11 Jan 2020 20:13:29 -0800 Subject: [PATCH 1953/2595] updates --- utils/datasets.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 4c0e3b20..bd87dd19 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -515,7 +515,8 @@ def load_image(self, index): h0, w0 = img.shape[:2] # orig hw r = self.img_size / max(h0, w0) # resize image to img_size if r < 1 or (self.augment and (r != 1)): # always resize down, only resize up if training with augmentation - img = cv2.resize(img, (int(w0 * r), int(h0 * r)), interpolation=cv2.INTER_LINEAR) # _LINEAR fastest + interp = cv2.INTER_LINEAR if self.augment else cv2.INTER_AREA # LINEAR for training, AREA for testing + img = cv2.resize(img, (int(w0 * r), int(h0 * r)), interpolation=interp) return img, (h0, w0), img.shape[:2] # img, hw_original, hw_resized else: return self.imgs[index], self.img_hw0[index], self.img_hw[index] # img, hw_original, hw_resized From 01d485831fa77a31a6425e22bd5e7dd3e78ff5f7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 11 Jan 2020 20:15:41 -0800 Subject: [PATCH 1954/2595] updates --- train.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/train.py b/train.py index c36b0e00..373b709c 100644 --- a/train.py +++ b/train.py @@ -174,8 +174,7 @@ def train(): augment=True, hyp=hyp, # augmentation hyperparameters rect=opt.rect, # rectangular training - image_weights=False, - cache_labels=epochs > 10, + cache_labels=True, cache_images=opt.cache_images) # Dataloader From aeac9b78eb6c541d34dd07e25ad52f1310adefad Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 11 Jan 2020 21:20:55 -0800 Subject: [PATCH 1955/2595] updates --- utils/gcp.sh | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 378e794c..ad85b403 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -3,10 +3,11 @@ # New VM rm -rf sample_data yolov3 git clone https://github.com/ultralytics/yolov3 +sudo apt-get install zip #git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex sudo conda install -yc conda-forge scikit-image pycocotools # python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('193Zp_ye-3qXMonR1nZj3YyxMtQkMy50k','coco2014.zip')" -python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('1WQT6SOktSe8Uw6r10-2JhbEhMY5DJaph','coco2017.zip')" +python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('1WQT6SOktSe8Uw6r10-2JhbEhMY5DJaph','coco2014.zip')" sudo shutdown # Re-clone @@ -38,15 +39,16 @@ python3 detect.py python3 test.py --save-json # Evolve -t=ultralytics/yolov3:v206 -sudo docker kill $(sudo docker ps -a -q --filter ancestor=$t) -for i in 0 1 2 3 +t=ultralytics/yolov3:v208 +# sudo docker kill $(sudo docker ps -a -q --filter ancestor=$t) +for i in 2 3 do - sudo docker pull $t && sudo docker run --gpus all -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t bash utils/evolve.sh $i - # sudo docker pull $t && sudo docker run --gpus all -d --ipc=host -v "$(pwd)"/out:/usr/src/out $t bash utils/evolve.sh $i + # sudo docker pull $t && sudo docker run --gpus all -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t bash utils/evolve.sh $i + sudo docker pull $t && sudo docker run --gpus all -d --ipc=host -v "$(pwd)"/out:/usr/src/out $t bash utils/evolve.sh $i + # sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i # sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v /mnt/disks/nvme0n1/coco:/usr/src/coco $t bash utils/evolve.sh $i - sleep 120 + sleep 180 done @@ -259,6 +261,7 @@ n=199 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker r n=200 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 6 n=207 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 7 n=208 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 +n=211 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n # sm4 n=201 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 0 --cfg yolov3-tiny-3cls.cfg @@ -266,5 +269,6 @@ n=202 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo nvidia-docker n=203 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights '' --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 2 --cfg yolov3-tiny-3cls-sm4.cfg n=204 && t=ultralytics/yolov3:v202 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 3 --cfg yolov3-tiny-3cls-sm4.cfg n=205 && t=ultralytics/yolov3:v202 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights '' --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 4 --cfg yolov3-tiny-3cls-sm4.cfg - n=206 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --notest --nosave --cache --device 0 --cfg yolov3-tiny-3cls.cfg +n=209 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --nosave --cache --device 3 --cfg yolov3-tiny-3cls.cfg +n=210 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --nosave --cache --device 1 --cfg yolov3-tiny-3cls.cfg From b890ccecfc4e3ded5c998f00e9611c48a6e5cf60 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 12 Jan 2020 12:01:58 -0800 Subject: [PATCH 1956/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 9ce72ece..ae861cec 100755 --- a/models.py +++ b/models.py @@ -206,7 +206,7 @@ class YOLOLayer(nn.Module): if self.nc == 1: io[..., 5] = 1 # single-class model https://github.com/ultralytics/yolov3/issues/235 - # reshape from [1, 3, 13, 13, 85] to [1, 507, 84], remove obj_conf + # reshape from [1, 3, 13, 13, 85] to [1, 507, 85] return io.view(bs, -1, self.no), p From 5ac3eb42b69de0f210f66c04462736c8869d01a4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 12 Jan 2020 15:56:42 -0800 Subject: [PATCH 1957/2595] updates --- train.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index 373b709c..2ec9db9b 100644 --- a/train.py +++ b/train.py @@ -446,7 +446,7 @@ if __name__ == '__main__': if os.path.exists('evolve.txt'): # if evolve.txt exists: select best hyps and mutate # Select parent(s) x = np.loadtxt('evolve.txt', ndmin=2) - parent = 'weighted' # parent selection method: 'single' or 'weighted' + parent = 'single' # parent selection method: 'single' or 'weighted' if parent == 'single' or len(x) == 1: x = x[fitness(x).argmax()] elif parent == 'weighted': # weighted combination @@ -456,12 +456,21 @@ if __name__ == '__main__': x = (x * w.reshape(n, 1)).sum(0) / w.sum() # new parent # Mutate + mutate_version = 2 np.random.seed(int(time.time())) - s = np.random.random() * 0.2 # sigma - g = [1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 1, 1, 1, 1, 1, 1, 1, 1] # gains - g = (np.random.randn(len(g)) * np.array(g) * s + 1) ** 2.0 # plt.hist(x.ravel(), 300) + s = 0.2 # 20% sigma + g = np.array([1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 1, 1, 1, 1, 1, 1, 1, 1]) # gains + ng = len(g) + if mutate_version == 1: + s *= np.random.random() # sigma + v = (np.random.randn(ng) * g * s + 1) ** 2.0 # plt.hist(x.ravel(), 300) + else: + v = np.ones(ng) + while all(v == 1): # mutate untill a change occurs (prevent duplicates) + r = (np.random.random(ng) < 0.1) * np.random.randn(ng) # 10% mutation probability + v = (g * s * r + 1) ** 2.0 # plt.hist(x.ravel(), 300) for i, k in enumerate(hyp.keys()): - hyp[k] = x[i + 7] * g[i] # mutate parent + hyp[k] = x[i + 7] * v[i] # mutate # Clip to limits keys = ['lr0', 'iou_t', 'momentum', 'weight_decay', 'hsv_s', 'hsv_v', 'translate', 'scale', 'fl_gamma'] From 33264f55679560284900f76c385fa54a7e0f86b3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 12 Jan 2020 16:18:29 -0800 Subject: [PATCH 1958/2595] updates --- train.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index 2ec9db9b..44ac3708 100644 --- a/train.py +++ b/train.py @@ -383,7 +383,8 @@ def train(): if opt.bucket: os.system('gsutil cp %s %s gs://%s' % (fresults, wdir + flast, opt.bucket)) - plot_results() # save as results.png + if not opt.evolve: + plot_results() # save as results.png print('%g epochs completed in %.3f hours.\n' % (epoch - start_epoch + 1, (time.time() - t0) / 3600)) dist.destroy_process_group() if torch.cuda.device_count() > 1 else None torch.cuda.empty_cache() From 25ccf54a94ca43dfbd045b5353a6c4220d3b18b2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 12 Jan 2020 17:05:03 -0800 Subject: [PATCH 1959/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 44ac3708..dbb389da 100644 --- a/train.py +++ b/train.py @@ -460,7 +460,7 @@ if __name__ == '__main__': mutate_version = 2 np.random.seed(int(time.time())) s = 0.2 # 20% sigma - g = np.array([1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 1, 1, 1, 1, 1, 1, 1, 1]) # gains + g = np.array([1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 0, 1, 1, 1, 1, 1, 1, 1]) # gains ng = len(g) if mutate_version == 1: s *= np.random.random() # sigma From c67ba502669330c3adf1a4becf9d988441a26140 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 13 Jan 2020 20:59:59 -0800 Subject: [PATCH 1960/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index b08744d8..a19e594e 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -817,7 +817,7 @@ def print_mutation(hyp, results, bucket=''): print('\n%s\n%s\nEvolved fitness: %s\n' % (a, b, c)) if bucket: - os.system('rm evolve.txt && gsutil cp gs://%s/evolve.txt .' % bucket) # download evolve.txt + os.system('gsutil cp gs://%s/evolve.txt .' % bucket) # download evolve.txt with open('evolve.txt', 'a') as f: # append result f.write(c + b + '\n') From c5d7ff27e6180d6f6608ee420360899f87d7d577 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 13 Jan 2020 22:19:45 -0800 Subject: [PATCH 1961/2595] updates --- utils/evolve.sh | 2 +- utils/gcp.sh | 293 +++++++++++++++++++++++++----------------------- 2 files changed, 155 insertions(+), 140 deletions(-) diff --git a/utils/evolve.sh b/utils/evolve.sh index afcc0ba6..bdc0a2c0 100644 --- a/utils/evolve.sh +++ b/utils/evolve.sh @@ -9,7 +9,7 @@ while true; do python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --evolve --device $1 --cfg yolov3-tiny-3cls.cfg --cache - # python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ult/athena --evolve --device $1 + # python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ult/athena --evolve --device $1 --cfg yolov3-spp-1cls.cfg # python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --evolve --weights '' --arc defaultpw --pre --bucket yolov4/640ms_coco2014_10e --device $1 --multi # python3 train.py --data coco2014.data --img-size 320 --epochs 27 --batch 64 --accum 1 --evolve --weights '' --arc defaultpw --pre --bucket yolov4/320_coco2014_27e --device $1 diff --git a/utils/gcp.sh b/utils/gcp.sh index ad85b403..c1c731e0 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -39,18 +39,30 @@ python3 detect.py python3 test.py --save-json # Evolve -t=ultralytics/yolov3:v208 -# sudo docker kill $(sudo docker ps -a -q --filter ancestor=$t) -for i in 2 3 +sudo -s +t=ultralytics/yolov3:v206 +docker kill $(docker ps -a -q --filter ancestor=$t) +for i in 6 7 do - # sudo docker pull $t && sudo docker run --gpus all -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t bash utils/evolve.sh $i - sudo docker pull $t && sudo docker run --gpus all -d --ipc=host -v "$(pwd)"/out:/usr/src/out $t bash utils/evolve.sh $i - - # sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i - # sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v /mnt/disks/nvme0n1/coco:/usr/src/coco $t bash utils/evolve.sh $i + docker pull $t && docker run --gpus all -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t bash utils/evolve.sh $i + # docker pull $t && docker run --gpus all -d --ipc=host -v "$(pwd)"/out:/usr/src/out $t bash utils/evolve.sh $i + # docker pull $t && nvidia-docker run -d -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i + # docker pull $t && nvidia-docker run -d -v /mnt/disks/nvme0n1/coco:/usr/src/coco $t bash utils/evolve.sh $i sleep 180 done +# Evolve +sudo -s +t=ultralytics/yolov3:v208 +docker kill $(docker ps -a -q --filter ancestor=$t) +for i in 0 +do + # docker pull $t && docker run --gpus all -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t bash utils/evolve.sh $i + docker pull $t && docker run --gpus all -it --ipc=host -v "$(pwd)"/out:/usr/src/out $t bash utils/evolve.sh $i + # docker pull $t && nvidia-docker run -d -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i + # docker pull $t && nvidia-docker run -d -v /mnt/disks/nvme0n1/coco:/usr/src/coco $t bash utils/evolve.sh $i + sleep 180 +done # Git pull git pull https://github.com/ultralytics/yolov3 # master @@ -107,168 +119,171 @@ rm -rf darknet && git clone https://github.com/AlexeyAB/darknet && cd darknet && #Docker sudo docker kill "$(sudo docker ps -q)" sudo docker pull ultralytics/yolov3:v0 -sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco ultralytics/yolov3:v0 +sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco ultralytics/yolov3:v0 -t=ultralytics/yolov3:v70 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 70 --device 0 --multi -t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 71 --device 0 --multi --img-weights +t=ultralytics/yolov3:v70 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 70 --device 0 --multi +t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 71 --device 0 --multi --img-weights -t=ultralytics/yolov3:v73 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 73 --device 5 --cfg cfg/yolov3s.cfg -t=ultralytics/yolov3:v74 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 74 --device 0 --cfg cfg/yolov3s.cfg -t=ultralytics/yolov3:v75 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 75 --device 7 --cfg cfg/yolov3s.cfg -t=ultralytics/yolov3:v76 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 76 --device 0 --cfg cfg/yolov3-spp.cfg +t=ultralytics/yolov3:v73 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 73 --device 5 --cfg cfg/yolov3s.cfg +t=ultralytics/yolov3:v74 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 74 --device 0 --cfg cfg/yolov3s.cfg +t=ultralytics/yolov3:v75 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 75 --device 7 --cfg cfg/yolov3s.cfg +t=ultralytics/yolov3:v76 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 76 --device 0 --cfg cfg/yolov3-spp.cfg -t=ultralytics/yolov3:v79 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 79 --device 5 -t=ultralytics/yolov3:v80 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 80 --device 0 -t=ultralytics/yolov3:v81 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 81 --device 7 -t=ultralytics/yolov3:v82 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 82 --device 0 --cfg cfg/yolov3s.cfg +t=ultralytics/yolov3:v79 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 79 --device 5 +t=ultralytics/yolov3:v80 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 80 --device 0 +t=ultralytics/yolov3:v81 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 81 --device 7 +t=ultralytics/yolov3:v82 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 82 --device 0 --cfg cfg/yolov3s.cfg -t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 83 --device 6 --multi --nosave -t=ultralytics/yolov3:v84 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 84 --device 0 --multi -t=ultralytics/yolov3:v85 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 85 --device 0 --multi -t=ultralytics/yolov3:v86 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 86 --device 1 --multi -t=ultralytics/yolov3:v87 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 87 --device 2 --multi -t=ultralytics/yolov3:v88 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 88 --device 3 --multi -t=ultralytics/yolov3:v89 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 89 --device 1 -t=ultralytics/yolov3:v90 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 90 --device 0 --cfg cfg/yolov3-spp-matrix.cfg -t=ultralytics/yolov3:v91 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 91 --device 0 --cfg cfg/yolov3-spp-matrix.cfg +t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 83 --device 6 --multi --nosave +t=ultralytics/yolov3:v84 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 84 --device 0 --multi +t=ultralytics/yolov3:v85 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 85 --device 0 --multi +t=ultralytics/yolov3:v86 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 86 --device 1 --multi +t=ultralytics/yolov3:v87 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 87 --device 2 --multi +t=ultralytics/yolov3:v88 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 88 --device 3 --multi +t=ultralytics/yolov3:v89 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 89 --device 1 +t=ultralytics/yolov3:v90 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 90 --device 0 --cfg cfg/yolov3-spp-matrix.cfg +t=ultralytics/yolov3:v91 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 91 --device 0 --cfg cfg/yolov3-spp-matrix.cfg -t=ultralytics/yolov3:v92 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 92 --device 0 -t=ultralytics/yolov3:v93 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 93 --device 0 --cfg cfg/yolov3-spp-matrix.cfg +t=ultralytics/yolov3:v92 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 92 --device 0 +t=ultralytics/yolov3:v93 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 93 --device 0 --cfg cfg/yolov3-spp-matrix.cfg #SM4 -t=ultralytics/yolov3:v96 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img 320 --batch 32 --accum 2 --pre --bucket yolov4 --name 96 --device 0 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave -t=ultralytics/yolov3:v97 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img 320 --batch 32 --accum 2 --pre --bucket yolov4 --name 97 --device 4 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave -t=ultralytics/yolov3:v98 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img 320 --batch 16 --accum 4 --pre --bucket yolov4 --name 98 --device 5 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave -t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --pre --bucket yolov4 --name 101 --device 7 --multi --nosave +t=ultralytics/yolov3:v96 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img 320 --batch 32 --accum 2 --pre --bucket yolov4 --name 96 --device 0 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave +t=ultralytics/yolov3:v97 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img 320 --batch 32 --accum 2 --pre --bucket yolov4 --name 97 --device 4 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave +t=ultralytics/yolov3:v98 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img 320 --batch 16 --accum 4 --pre --bucket yolov4 --name 98 --device 5 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave +t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --pre --bucket yolov4 --name 101 --device 7 --multi --nosave -t=ultralytics/yolov3:v102 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 1000 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 102 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache -t=ultralytics/yolov3:v103 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 103 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache -t=ultralytics/yolov3:v104 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 104 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache -t=ultralytics/yolov3:v105 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 105 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache -t=ultralytics/yolov3:v106 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 106 --device 0 --cfg cfg/yolov3-tiny-3cls-sm4.cfg --data ../data/sm4/out.data --nosave --cache -t=ultralytics/yolov3:v107 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 107 --device 5 --nosave --cfg cfg/yolov3-spp3.cfg -t=ultralytics/yolov3:v108 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 108 --device 7 --nosave +t=ultralytics/yolov3:v102 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 1000 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 102 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache +t=ultralytics/yolov3:v103 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 103 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache +t=ultralytics/yolov3:v104 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 104 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache +t=ultralytics/yolov3:v105 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 105 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache +t=ultralytics/yolov3:v106 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 106 --device 0 --cfg cfg/yolov3-tiny-3cls-sm4.cfg --data ../data/sm4/out.data --nosave --cache +t=ultralytics/yolov3:v107 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 107 --device 5 --nosave --cfg cfg/yolov3-spp3.cfg +t=ultralytics/yolov3:v108 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 108 --device 7 --nosave -t=ultralytics/yolov3:v109 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 109 --device 4 --multi --nosave -t=ultralytics/yolov3:v110 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 110 --device 3 --multi --nosave +t=ultralytics/yolov3:v109 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 109 --device 4 --multi --nosave +t=ultralytics/yolov3:v110 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 110 --device 3 --multi --nosave -t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 111 --device 0 -t=ultralytics/yolov3:v112 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 112 --device 1 --nosave -t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 113 --device 2 --nosave -t=ultralytics/yolov3:v114 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 114 --device 2 --nosave -t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 115 --device 5 --nosave --cfg cfg/yolov3-spp3.cfg -t=ultralytics/yolov3:v116 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 116 --device 1 --nosave +t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 111 --device 0 +t=ultralytics/yolov3:v112 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 112 --device 1 --nosave +t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 113 --device 2 --nosave +t=ultralytics/yolov3:v114 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 114 --device 2 --nosave +t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 115 --device 5 --nosave --cfg cfg/yolov3-spp3.cfg +t=ultralytics/yolov3:v116 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 116 --device 1 --nosave -t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --epochs 27 --pre --bucket yolov4 --name 117 --device 0 --nosave --multi -t=ultralytics/yolov3:v118 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --epochs 27 --pre --bucket yolov4 --name 118 --device 5 --nosave --multi -t=ultralytics/yolov3:v119 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 119 --device 1 --nosave -t=ultralytics/yolov3:v120 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 120 --device 2 --nosave -t=ultralytics/yolov3:v121 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 121 --device 0 --nosave --cfg cfg/csresnext50-panet-spp.cfg -t=ultralytics/yolov3:v122 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 273 --pre --bucket yolov4 --name 122 --device 2 --nosave -t=ultralytics/yolov3:v123 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 273 --pre --bucket yolov4 --name 123 --device 5 --nosave +t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --epochs 27 --pre --bucket yolov4 --name 117 --device 0 --nosave --multi +t=ultralytics/yolov3:v118 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --epochs 27 --pre --bucket yolov4 --name 118 --device 5 --nosave --multi +t=ultralytics/yolov3:v119 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 119 --device 1 --nosave +t=ultralytics/yolov3:v120 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 120 --device 2 --nosave +t=ultralytics/yolov3:v121 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 121 --device 0 --nosave --cfg cfg/csresnext50-panet-spp.cfg +t=ultralytics/yolov3:v122 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 273 --pre --bucket yolov4 --name 122 --device 2 --nosave +t=ultralytics/yolov3:v123 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 273 --pre --bucket yolov4 --name 123 --device 5 --nosave -t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 124 --device 0 --nosave --cfg yolov3-tiny -t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 125 --device 1 --nosave --cfg yolov3-tiny2 -t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 126 --device 1 --nosave --cfg yolov3-tiny3 -t=ultralytics/yolov3:v127 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 127 --device 0 --nosave --cfg yolov3-tiny4 -t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 273 --pre --bucket yolov4 --name 128 --device 1 --nosave --cfg yolov3-tiny2 --multi -t=ultralytics/yolov3:v129 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 273 --pre --bucket yolov4 --name 129 --device 0 --nosave --cfg yolov3-tiny2 +t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 124 --device 0 --nosave --cfg yolov3-tiny +t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 125 --device 1 --nosave --cfg yolov3-tiny2 +t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 126 --device 1 --nosave --cfg yolov3-tiny3 +t=ultralytics/yolov3:v127 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 127 --device 0 --nosave --cfg yolov3-tiny4 +t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 273 --pre --bucket yolov4 --name 128 --device 1 --nosave --cfg yolov3-tiny2 --multi +t=ultralytics/yolov3:v129 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 273 --pre --bucket yolov4 --name 129 --device 0 --nosave --cfg yolov3-tiny2 -t=ultralytics/yolov3:v130 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 130 --device 0 --nosave -t=ultralytics/yolov3:v133 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 22 --accum 3 --epochs 250 --pre --bucket yolov4 --name 131 --device 0 --nosave --multi -t=ultralytics/yolov3:v130 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 132 --device 0 --nosave --data coco2014.data -t=ultralytics/yolov3:v133 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 22 --accum 3 --epochs 27 --pre --bucket yolov4 --name 133 --device 0 --nosave --multi -t=ultralytics/yolov3:v134 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 134 --device 0 --nosave --data coco2014.data +t=ultralytics/yolov3:v130 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 130 --device 0 --nosave +t=ultralytics/yolov3:v133 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 22 --accum 3 --epochs 250 --pre --bucket yolov4 --name 131 --device 0 --nosave --multi +t=ultralytics/yolov3:v130 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 132 --device 0 --nosave --data coco2014.data +t=ultralytics/yolov3:v133 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 22 --accum 3 --epochs 27 --pre --bucket yolov4 --name 133 --device 0 --nosave --multi +t=ultralytics/yolov3:v134 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 134 --device 0 --nosave --data coco2014.data -t=ultralytics/yolov3:v135 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 24 --accum 3 --epochs 270 --pre --bucket yolov4 --name 135 --device 0 --nosave --multi --data coco2014.data -t=ultralytics/yolov3:v136 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 24 --accum 3 --epochs 270 --pre --bucket yolov4 --name 136 --device 0 --nosave --multi --data coco2014.data +t=ultralytics/yolov3:v135 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 24 --accum 3 --epochs 270 --pre --bucket yolov4 --name 135 --device 0 --nosave --multi --data coco2014.data +t=ultralytics/yolov3:v136 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 24 --accum 3 --epochs 270 --pre --bucket yolov4 --name 136 --device 0 --nosave --multi --data coco2014.data -t=ultralytics/yolov3:v137 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 137 --device 7 --nosave --data coco2014.data -t=ultralytics/yolov3:v137 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --bucket yolov4 --name 138 --device 6 --nosave --data coco2014.data +t=ultralytics/yolov3:v137 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 137 --device 7 --nosave --data coco2014.data +t=ultralytics/yolov3:v137 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --bucket yolov4 --name 138 --device 6 --nosave --data coco2014.data -t=ultralytics/yolov3:v140 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 140 --device 1 --nosave --data coco2014.data --arc uBCE -t=ultralytics/yolov3:v141 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 141 --device 0 --nosave --data coco2014.data --arc uBCE -t=ultralytics/yolov3:v142 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 142 --device 1 --nosave --data coco2014.data --arc uBCE +t=ultralytics/yolov3:v140 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 140 --device 1 --nosave --data coco2014.data --arc uBCE +t=ultralytics/yolov3:v141 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 141 --device 0 --nosave --data coco2014.data --arc uBCE +t=ultralytics/yolov3:v142 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 142 --device 1 --nosave --data coco2014.data --arc uBCE -t=ultralytics/yolov3:v146 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 146 --device 0 --nosave --data coco2014.data -t=ultralytics/yolov3:v147 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 147 --device 1 --nosave --data coco2014.data -t=ultralytics/yolov3:v148 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 148 --device 2 --nosave --data coco2014.data -t=ultralytics/yolov3:v149 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 149 --device 3 --nosave --data coco2014.data -t=ultralytics/yolov3:v150 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 150 --device 4 --nosave --data coco2014.data -t=ultralytics/yolov3:v151 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 151 --device 5 --nosave --data coco2014.data -t=ultralytics/yolov3:v152 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 152 --device 6 --nosave --data coco2014.data -t=ultralytics/yolov3:v153 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 153 --device 7 --nosave --data coco2014.data +t=ultralytics/yolov3:v146 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 146 --device 0 --nosave --data coco2014.data +t=ultralytics/yolov3:v147 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 147 --device 1 --nosave --data coco2014.data +t=ultralytics/yolov3:v148 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 148 --device 2 --nosave --data coco2014.data +t=ultralytics/yolov3:v149 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 149 --device 3 --nosave --data coco2014.data +t=ultralytics/yolov3:v150 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 150 --device 4 --nosave --data coco2014.data +t=ultralytics/yolov3:v151 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 151 --device 5 --nosave --data coco2014.data +t=ultralytics/yolov3:v152 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 152 --device 6 --nosave --data coco2014.data +t=ultralytics/yolov3:v153 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 153 --device 7 --nosave --data coco2014.data -t=ultralytics/yolov3:v154 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 154 --device 0 --nosave --data coco2014.data -t=ultralytics/yolov3:v155 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 155 --device 0 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v154 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 154 --device 0 --nosave --data coco2014.data +t=ultralytics/yolov3:v155 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 155 --device 0 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v156 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 156 --device 5 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v157 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 157 --device 6 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v158 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 158 --device 7 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v156 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 156 --device 5 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v157 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 157 --device 6 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v158 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 158 --device 7 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v159 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 159 --device 0 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v160 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 160 --device 1 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v161 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 161 --device 2 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v162 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 162 --device 3 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v163 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 163 --device 4 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v164 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 164 --device 5 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v165 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 165 --device 6 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v166 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 166 --device 6 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v167 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 167 --device 7 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v159 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 159 --device 0 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v160 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 160 --device 1 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v161 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 161 --device 2 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v162 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 162 --device 3 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v163 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 163 --device 4 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v164 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 164 --device 5 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v165 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 165 --device 6 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v166 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 166 --device 6 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v167 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 167 --device 7 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v168 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 168 --device 5 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v169 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 169 --device 6 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v170 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 170 --device 7 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v171 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 171 --device 4 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v172 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 172 --device 3 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v173 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 173 --device 2 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v174 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 174 --device 1 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v175 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 175 --device 0 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v168 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 168 --device 5 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v169 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 169 --device 6 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v170 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 170 --device 7 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v171 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 171 --device 4 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v172 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 172 --device 3 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v173 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 173 --device 2 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v174 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 174 --device 1 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v175 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 175 --device 0 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v177 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 416 --batch 22 --accum 3 --epochs 273 --pre --bucket yolov4 --name 177 --device 0 --nosave --data coco2014.data --multi -t=ultralytics/yolov3:v178 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 416 --batch 22 --accum 3 --epochs 273 --pre --bucket yolov4 --name 178 --device 0 --nosave --data coco2014.data --multi -t=ultralytics/yolov3:v179 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 416 --batch 22 --accum 3 --epochs 273 --pre --bucket yolov4 --name 179 --device 0 --nosave --data coco2014.data --multi --cfg yolov3s-18a.cfg +t=ultralytics/yolov3:v177 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 416 --batch 22 --accum 3 --epochs 273 --pre --bucket yolov4 --name 177 --device 0 --nosave --data coco2014.data --multi +t=ultralytics/yolov3:v178 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 416 --batch 22 --accum 3 --epochs 273 --pre --bucket yolov4 --name 178 --device 0 --nosave --data coco2014.data --multi +t=ultralytics/yolov3:v179 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 416 --batch 22 --accum 3 --epochs 273 --pre --bucket yolov4 --name 179 --device 0 --nosave --data coco2014.data --multi --cfg yolov3s-18a.cfg t=ultralytics/yolov3:v143 && sudo docker build -t $t . && sudo docker push $t -t=ultralytics/yolov3:v179 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 179 -t=ultralytics/yolov3:v180 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 180 -t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 181 --cfg yolov3s9a-640.cfg -t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 182 --cfg yolov3s9a-320-640.cfg -t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 183 --cfg yolov3s15a-640.cfg -t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 184 --cfg yolov3s15a-320-640.cfg +t=ultralytics/yolov3:v179 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 179 +t=ultralytics/yolov3:v180 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 180 +t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 181 --cfg yolov3s9a-640.cfg +t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 182 --cfg yolov3s9a-320-640.cfg +t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 183 --cfg yolov3s15a-640.cfg +t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 184 --cfg yolov3s15a-320-640.cfg -t=ultralytics/yolov3:v185 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 185 -t=ultralytics/yolov3:v186 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 186 -n=187 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -t=ultralytics/yolov3:v189 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 188 --cfg yolov3s15a-320-640.cfg -n=190 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=191 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=192 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +t=ultralytics/yolov3:v185 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 185 +t=ultralytics/yolov3:v186 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 186 +n=187 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +t=ultralytics/yolov3:v189 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 188 --cfg yolov3s15a-320-640.cfg +n=190 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=191 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=192 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=193 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=194 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=195 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=196 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=193 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=194 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=195 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=196 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=197 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 273 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=198 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 273 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=197 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 273 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=198 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 273 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n # knife -n=199 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 0 -n=200 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 6 -n=207 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 7 -n=208 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 -n=211 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n +n=199 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 0 +n=200 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 6 +n=207 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 7 +n=208 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 +n=211 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n --cfg yolov3-spp-1cls.cfg +n=212 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n --cfg yolov3-spp-1cls.cfg +n=213 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n --cfg yolov3-spp-1cls.cfg +n=214 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n --cfg yolov3-spp-1cls.cfg # sm4 -n=201 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 0 --cfg yolov3-tiny-3cls.cfg -n=202 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 1 --cfg yolov3-tiny-3cls-sm4.cfg -n=203 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights '' --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 2 --cfg yolov3-tiny-3cls-sm4.cfg -n=204 && t=ultralytics/yolov3:v202 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 3 --cfg yolov3-tiny-3cls-sm4.cfg -n=205 && t=ultralytics/yolov3:v202 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights '' --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 4 --cfg yolov3-tiny-3cls-sm4.cfg -n=206 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --notest --nosave --cache --device 0 --cfg yolov3-tiny-3cls.cfg -n=209 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --nosave --cache --device 3 --cfg yolov3-tiny-3cls.cfg -n=210 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --nosave --cache --device 1 --cfg yolov3-tiny-3cls.cfg +n=201 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 0 --cfg yolov3-tiny-3cls.cfg +n=202 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 1 --cfg yolov3-tiny-3cls-sm4.cfg +n=203 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights '' --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 2 --cfg yolov3-tiny-3cls-sm4.cfg +n=204 && t=ultralytics/yolov3:v202 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 3 --cfg yolov3-tiny-3cls-sm4.cfg +n=205 && t=ultralytics/yolov3:v202 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights '' --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 4 --cfg yolov3-tiny-3cls-sm4.cfg +n=206 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --notest --nosave --cache --device 0 --cfg yolov3-tiny-3cls.cfg +n=209 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --nosave --cache --device 3 --cfg yolov3-tiny-3cls.cfg +n=210 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --nosave --cache --device 1 --cfg yolov3-tiny-3cls.cfg From 78ac3bdcfb636123575106e2533167f83cc91565 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 14 Jan 2020 17:26:22 -0800 Subject: [PATCH 1962/2595] updates --- utils/utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/utils.py b/utils/utils.py index a19e594e..5c45e1ad 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -1015,6 +1015,7 @@ def plot_results(start=0, stop=0, bucket='', id=()): # from utils.utils import s = ['GIoU', 'Objectness', 'Classification', 'Precision', 'Recall', 'val GIoU', 'val Objectness', 'val Classification', 'mAP@0.5', 'F1'] if bucket: + os.system('rm -rf storage.googleapis.com') files = ['https://storage.googleapis.com/%s/results%g.txt' % (bucket, x) for x in id] else: files = glob.glob('results*.txt') + glob.glob('../../Downloads/results*.txt') From c6b44befde5cafe326ff0bbcf582229bd34f954e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 14 Jan 2020 22:11:09 -0800 Subject: [PATCH 1963/2595] updates --- utils/utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/utils.py b/utils/utils.py index 5c45e1ad..5647702e 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -1027,6 +1027,7 @@ def plot_results(start=0, stop=0, bucket='', id=()): # from utils.utils import y = results[i, x] if i in [0, 1, 2, 5, 6, 7]: y[y == 0] = np.nan # dont show zero loss values + # y /= y[0] # normalize ax[i].plot(x, y, marker='.', label=Path(f).stem) ax[i].set_title(s[i]) if i in [5, 6, 7]: # share train and val loss y axes From 01dbdc45d7e7b8a66c251993c19513891461c439 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 14 Jan 2020 22:22:24 -0800 Subject: [PATCH 1964/2595] updates --- train.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/train.py b/train.py index dbb389da..c754bca4 100644 --- a/train.py +++ b/train.py @@ -457,20 +457,21 @@ if __name__ == '__main__': x = (x * w.reshape(n, 1)).sum(0) / w.sum() # new parent # Mutate - mutate_version = 2 - np.random.seed(int(time.time())) + method = 2 s = 0.2 # 20% sigma + np.random.seed(int(time.time())) g = np.array([1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 0, 1, 1, 1, 1, 1, 1, 1]) # gains ng = len(g) - if mutate_version == 1: - s *= np.random.random() # sigma - v = (np.random.randn(ng) * g * s + 1) ** 2.0 # plt.hist(x.ravel(), 300) - else: + if method == 1: + v = (np.random.randn(ng) * np.random.random() * g * s + 1) ** 2.0 + elif method == 2: + v = (np.random.randn(ng) * np.random.random(ng) * g * s + 1) ** 2.0 + elif method == 3: v = np.ones(ng) while all(v == 1): # mutate untill a change occurs (prevent duplicates) r = (np.random.random(ng) < 0.1) * np.random.randn(ng) # 10% mutation probability - v = (g * s * r + 1) ** 2.0 # plt.hist(x.ravel(), 300) - for i, k in enumerate(hyp.keys()): + v = (g * s * r + 1) ** 2.0 + for i, k in enumerate(hyp.keys()): # plt.hist(v.ravel(), 300) hyp[k] = x[i + 7] * v[i] # mutate # Clip to limits From 5831d2d6bad7f8a639abf278ed6b44a41336a234 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 15 Jan 2020 09:28:58 -0800 Subject: [PATCH 1965/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index c754bca4..1dc05bf1 100644 --- a/train.py +++ b/train.py @@ -457,7 +457,7 @@ if __name__ == '__main__': x = (x * w.reshape(n, 1)).sum(0) / w.sum() # new parent # Mutate - method = 2 + method = 3 s = 0.2 # 20% sigma np.random.seed(int(time.time())) g = np.array([1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 0, 1, 1, 1, 1, 1, 1, 1]) # gains From 53e3d55a1e002be343d49936e92c229e1d18fa58 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 15 Jan 2020 10:22:59 -0800 Subject: [PATCH 1966/2595] updates --- detect.py | 2 +- utils/utils.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index 09bb7311..3b2d17ea 100644 --- a/detect.py +++ b/detect.py @@ -167,7 +167,7 @@ if __name__ == '__main__': parser.add_argument('--half', action='store_true', help='half precision FP16 inference') parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') parser.add_argument('--view-img', action='store_true', help='display results') - parser.add_argument('--save-txt', action='store_true', help='display results') + parser.add_argument('--save-txt', action='store_true', help='save results to *.txt') parser.add_argument('--classes', nargs='+', type=int, help='filter by class') parser.add_argument('--agnostic-nms', action='store_true', help='class-agnostic NMS') opt = parser.parse_args() diff --git a/utils/utils.py b/utils/utils.py index 5647702e..51d4127b 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -830,7 +830,7 @@ def print_mutation(hyp, results, bucket=''): def apply_classifier(x, model, img, im0): # applies a second stage classifier to yolo outputs - + im0 = [im0] if isinstance(im0, np.ndarray) else im0 for i, d in enumerate(x): # per image if d is not None and len(d): d = d.clone() From 6f777e2bc5853e13fad9f6a3fd9c6732f8fc6dc0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 15 Jan 2020 11:22:06 -0800 Subject: [PATCH 1967/2595] updates --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5bd6b088..91da5878 100644 --- a/Dockerfile +++ b/Dockerfile @@ -47,10 +47,10 @@ COPY . /usr/src/app # t=ultralytics/yolov3:v0 && sudo docker build -t $t . && sudo docker push $t # Run -# sudo nvidia-docker run --ipc=host ultralytics/yolov3:v0 python3 detect.py +# sudo docker run --gpus all --ipc=host ultralytics/yolov3:v0 python3 detect.py # Pull and Run with local directory access -# t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t +# t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo docker run --gpus all -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t # Kill all # sudo docker kill "$(sudo docker ps -q)" @@ -59,4 +59,4 @@ COPY . /usr/src/app # sudo docker kill $(sudo docker ps -a -q --filter ancestor=ultralytics/yolov3:v0) # Run bash for loop -# sudo nvidia-docker run --ipc=host ultralytics/yolov3:v0 while true; do python3 train.py --evolve; done +# sudo docker run --gpus all --ipc=host ultralytics/yolov3:v0 while true; do python3 train.py --evolve; done From 4459a9474e5da9ce3f96d09fe561e8e7ff10dca5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 15 Jan 2020 12:27:54 -0800 Subject: [PATCH 1968/2595] updates --- utils/torch_utils.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index d984dfca..d615e2a8 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -5,8 +5,6 @@ import torch def init_seeds(seed=0): torch.manual_seed(seed) - torch.cuda.manual_seed(seed) - torch.cuda.manual_seed_all(seed) # Remove randomness (may be slower on Tesla GPUs) # https://pytorch.org/docs/stable/notes/randomness.html if seed == 0: From 75933e93a1f5a2bfc545193032e4907494f9ab8f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 16 Jan 2020 09:47:33 -0800 Subject: [PATCH 1969/2595] updates --- requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 08b1bdba..8b657254 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ # pip install -U -r requirements.txt numpy -opencv-python -torch >= 1.3 +opencv-python >= 4.1 +torch >= 1.4 matplotlib pycocotools tqdm From c0cde1edf0afc0bc575c644d3cd56b4a8caaf893 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 16 Jan 2020 13:25:18 -0800 Subject: [PATCH 1970/2595] updates --- utils/datasets.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index bd87dd19..f9f5459c 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -215,6 +215,12 @@ class LoadStreams: # multiple IP or RTSP cameras thread.start() print('') # newline + # check for common shapes + s = np.stack([letterbox(x, new_shape=self.img_size)[0].shape for x in self.imgs], 0) # inference shapes + self.rect = np.unique(s, axis=0).shape[0] == 1 # rect inference if all shapes equal + if not self.rect: + print('WARNING: Different stream shapes detected. For optimal performance supply similarly-shaped streams.') + def update(self, index, cap): # Read next stream frame in a daemon thread n = 0 @@ -239,7 +245,7 @@ class LoadStreams: # multiple IP or RTSP cameras raise StopIteration # Letterbox - img = [letterbox(x, new_shape=self.img_size, interp=cv2.INTER_LINEAR)[0] for x in img0] + img = [letterbox(x, new_shape=self.img_size, auto=self.rect, interp=cv2.INTER_LINEAR)[0] for x in img0] # Stack img = np.stack(img, 0) From 1bc50ebfabaa7ac196e38be1308321fca8b4845b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 17 Jan 2020 10:49:07 -0800 Subject: [PATCH 1971/2595] updates --- utils/utils.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 51d4127b..74663bb2 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -633,7 +633,7 @@ def get_yolo_layers(model): def print_model_biases(model): # prints the bias neurons preceding each yolo layer - print('\nModel Bias Summary:') + print('\nModel Bias Summary: %8s%18s%18s%18s' % ('layer', 'regression', 'objectness', 'classification')) multi_gpu = type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) for l in model.yolo_layers: # print pretrained biases if multi_gpu: @@ -642,9 +642,9 @@ def print_model_biases(model): else: na = model.module_list[l].na b = model.module_list[l - 1][0].bias.view(na, -1) # bias 3x85 - print('layer %3g regression: %5.2f+/-%-5.2f ' % (l, b[:, :4].mean(), b[:, :4].std()), - 'objectness: %5.2f+/-%-5.2f ' % (b[:, 4].mean(), b[:, 4].std()), - 'classification: %5.2f+/-%-5.2f' % (b[:, 5:].mean(), b[:, 5:].std())) + print(' ' * 20 + '%8g %18s%18s%18s' % (l, '%5.2f+/-%-5.2f' % (b[:, :4].mean(), b[:, :4].std()), + '%5.2f+/-%-5.2f' % (b[:, 4].mean(), b[:, 4].std()), + '%5.2f+/-%-5.2f' % (b[:, 5:].mean(), b[:, 5:].std()))) def strip_optimizer(f='weights/last.pt'): # from utils.utils import *; strip_optimizer() From a8e13900280fe1381f38e0e2cb009b46f8b8e498 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 17 Jan 2020 10:55:30 -0800 Subject: [PATCH 1972/2595] updates --- detect.py | 2 +- models.py | 2 -- test.py | 2 +- train.py | 17 ++++++++++------- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/detect.py b/detect.py index 3b2d17ea..2d826a49 100644 --- a/detect.py +++ b/detect.py @@ -25,7 +25,7 @@ def detect(save_img=False): if weights.endswith('.pt'): # pytorch format model.load_state_dict(torch.load(weights, map_location=device)['model']) else: # darknet format - _ = load_darknet_weights(model, weights) + load_darknet_weights(model, weights) # Second-stage classifier classify = False diff --git a/models.py b/models.py index ae861cec..e93171f5 100755 --- a/models.py +++ b/models.py @@ -351,8 +351,6 @@ def load_darknet_weights(self, weights, cutoff=-1): conv_layer.weight.data.copy_(conv_w) ptr += num_w - return cutoff - def save_weights(self, path='model.weights', cutoff=-1): # Converts a PyTorch model to Darket format (*.pt to *.weights) diff --git a/test.py b/test.py index b0954720..bd859580 100644 --- a/test.py +++ b/test.py @@ -35,7 +35,7 @@ def test(cfg, if weights.endswith('.pt'): # pytorch format model.load_state_dict(torch.load(weights, map_location=device)['model']) else: # darknet format - _ = load_darknet_weights(model, weights) + load_darknet_weights(model, weights) if torch.cuda.device_count() > 1: model = nn.DataParallel(model) diff --git a/train.py b/train.py index 1dc05bf1..ad723a9c 100644 --- a/train.py +++ b/train.py @@ -84,12 +84,15 @@ def train(): model = Darknet(cfg, arc=opt.arc).to(device) # Optimizer - pg0, pg1 = [], [] # optimizer parameter groups + pg0, pg1, pg2 = [], [], [] # optimizer parameter groups for k, v in dict(model.named_parameters()).items(): - if 'Conv2d.weight' in k: - pg1 += [v] # parameter group 1 (apply weight_decay) + print(k) + if '.bias' in k: + pg2 += [v] # biases + elif 'Conv2d.weight' in k: + pg1 += [v] # apply weight_decay else: - pg0 += [v] # parameter group 0 + pg0 += [v] # all else if opt.adam: optimizer = optim.Adam(pg0, lr=hyp['lr0']) @@ -97,12 +100,12 @@ def train(): else: optimizer = optim.SGD(pg0, lr=hyp['lr0'], momentum=hyp['momentum'], nesterov=True) optimizer.add_param_group({'params': pg1, 'weight_decay': hyp['weight_decay']}) # add pg1 with weight_decay - del pg0, pg1 + optimizer.add_param_group({'params': pg2}) # add pg2 + del pg0, pg1, pg2 # https://github.com/alphadl/lookahead.pytorch # optimizer = torch_utils.Lookahead(optimizer, k=5, alpha=0.5) - cutoff = -1 # backbone reaches to cutoff layer start_epoch = 0 best_fitness = float('inf') attempt_download(weights) @@ -134,7 +137,7 @@ def train(): elif len(weights) > 0: # darknet format # possible weights are '*.weights', 'yolov3-tiny.conv.15', 'darknet53.conv.74' etc. - cutoff = load_darknet_weights(model, weights) + load_darknet_weights(model, weights) # Scheduler https://github.com/ultralytics/yolov3/issues/238 # lf = lambda x: 1 - x / epochs # linear ramp to zero From 831d2b3dcc12aa53b7012b3516c68d1582e96086 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 17 Jan 2020 11:17:18 -0800 Subject: [PATCH 1973/2595] updates --- train.py | 1 - 1 file changed, 1 deletion(-) diff --git a/train.py b/train.py index ad723a9c..b49f40dd 100644 --- a/train.py +++ b/train.py @@ -86,7 +86,6 @@ def train(): # Optimizer pg0, pg1, pg2 = [], [], [] # optimizer parameter groups for k, v in dict(model.named_parameters()).items(): - print(k) if '.bias' in k: pg2 += [v] # biases elif 'Conv2d.weight' in k: From 1ba9bd746b67665ff9a813b108bc307a177143e5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 17 Jan 2020 11:17:52 -0800 Subject: [PATCH 1974/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index b49f40dd..58006c45 100644 --- a/train.py +++ b/train.py @@ -99,7 +99,7 @@ def train(): else: optimizer = optim.SGD(pg0, lr=hyp['lr0'], momentum=hyp['momentum'], nesterov=True) optimizer.add_param_group({'params': pg1, 'weight_decay': hyp['weight_decay']}) # add pg1 with weight_decay - optimizer.add_param_group({'params': pg2}) # add pg2 + optimizer.add_param_group({'params': pg2}) # add pg2 (biases) del pg0, pg1, pg2 # https://github.com/alphadl/lookahead.pytorch From cdb4680390e4140810518432dab0d8c4d37fb8d1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 17 Jan 2020 17:44:22 -0800 Subject: [PATCH 1975/2595] updates --- models.py | 2 +- utils/utils.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index e93171f5..12c355b3 100755 --- a/models.py +++ b/models.py @@ -195,7 +195,7 @@ class YOLOLayer(nn.Module): io[..., :4] *= self.stride if 'default' in self.arc: # seperate obj and cls - torch.sigmoid_(io[..., 4]) + torch.sigmoid_(io[..., 4:]) elif 'BCE' in self.arc: # unified BCE (80 classes) torch.sigmoid_(io[..., 5:]) io[..., 4] = 1 diff --git a/utils/utils.py b/utils/utils.py index 74663bb2..0b81fcec 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -512,6 +512,8 @@ def non_max_suppression(prediction, conf_thres=0.5, iou_thres=0.5, multi_cls=Tru min_wh, max_wh = 2, 4096 # (pixels) minimum and maximum box width and height method = 'vision_batch' + nc = prediction[0].shape[1] - 5 # number of classes + multi_cls = multi_cls and (nc > 1) output = [None] * len(prediction) for image_i, pred in enumerate(prediction): # Apply conf constraint @@ -525,7 +527,6 @@ def non_max_suppression(prediction, conf_thres=0.5, iou_thres=0.5, multi_cls=Tru continue # Compute conf - torch.sigmoid_(pred[..., 5:]) pred[..., 5:] *= pred[..., 4:5] # conf = obj_conf * cls_conf # Box (center x, center y, width, height) to (x1, y1, x2, y2) From dec2c7d9a6bc2c856f93307404be6f01e6c8cf9a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 17 Jan 2020 17:52:28 -0800 Subject: [PATCH 1976/2595] updates --- test.py | 9 ++++++--- train.py | 44 ++++++++++++++++++++++---------------------- utils/datasets.py | 5 +++-- utils/evolve.sh | 4 ++-- utils/gcp.sh | 34 +++++++++++++++++++++++++++++++--- 5 files changed, 64 insertions(+), 32 deletions(-) diff --git a/test.py b/test.py index bd859580..68b636b1 100644 --- a/test.py +++ b/test.py @@ -17,7 +17,8 @@ def test(cfg, iou_thres=0.5, # for nms save_json=False, model=None, - dataloader=None): + dataloader=None, + single_cls=False): # Initialize/load model and set device if model is None: device = torch_utils.select_device(opt.device, batch_size=batch_size) @@ -45,7 +46,7 @@ def test(cfg, # Configure run data = parse_data_cfg(data) - nc = int(data['classes']) # number of classes + nc = 1 if single_cls else int(data['classes']) # number of classes path = data['valid'] # path to test images names = load_classes(data['names']) # class names iouv = torch.linspace(0.5, 0.95, 10).to(device) # iou vector for mAP@0.5:0.95 @@ -216,6 +217,7 @@ if __name__ == '__main__': parser.add_argument('--save-json', action='store_true', help='save a cocoapi-compatible JSON results file') parser.add_argument('--task', default='test', help="'test', 'study', 'benchmark'") parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') + parser.add_argument('--single-cls', action='store_true', help='train as single-class dataset') opt = parser.parse_args() opt.save_json = opt.save_json or any([x in opt.data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) print(opt) @@ -229,7 +231,8 @@ if __name__ == '__main__': opt.img_size, opt.conf_thres, opt.iou_thres, - opt.save_json) + opt.save_json, + opt.single_cls) elif opt.task == 'benchmark': # mAPs at 320-608 at conf 0.5 and 0.7 diff --git a/train.py b/train.py index 58006c45..158cbbef 100644 --- a/train.py +++ b/train.py @@ -74,7 +74,7 @@ def train(): data_dict = parse_data_cfg(data) train_path = data_dict['train'] test_path = data_dict['valid'] - nc = int(data_dict['classes']) # number of classes + nc = 1 if opt.single_cls else int(data_dict['classes']) # number of classes # Remove previous results for f in glob.glob('*_batch*.jpg') + glob.glob(results_file): @@ -177,7 +177,8 @@ def train(): hyp=hyp, # augmentation hyperparameters rect=opt.rect, # rectangular training cache_labels=True, - cache_images=opt.cache_images) + cache_images=opt.cache_images, + single_cls=opt.single_cls) # Dataloader batch_size = min(batch_size, len(dataset)) @@ -194,7 +195,8 @@ def train(): hyp=hyp, rect=True, cache_labels=True, - cache_images=opt.cache_images), + cache_images=opt.cache_images, + single_cls=opt.single_cls), batch_size=batch_size * 2, num_workers=nw, pin_memory=True, @@ -202,6 +204,7 @@ def train(): # Start training nb = len(dataloader) + prebias = start_epoch == 0 model.nc = nc # attach number of classes to model model.arc = opt.arc # attach yolo architecture model.hyp = hyp # attach hyperparameters to model @@ -213,24 +216,22 @@ def train(): torch_utils.model_info(model, report='summary') # 'full' or 'summary' print('Using %g dataloader workers' % nw) print('Starting training for %g epochs...' % epochs) - for epoch in range(start_epoch - 1 if opt.prebias else start_epoch, epochs): # epoch ------------------------------ + for epoch in range(start_epoch, epochs): # epoch ------------------------------ model.train() - print(('\n' + '%10s' * 8) % ('Epoch', 'gpu_mem', 'GIoU', 'obj', 'cls', 'total', 'targets', 'img_size')) # Prebias - if opt.prebias: - if epoch < 0: # prebias - ps = 0.1, 0.9, False # prebias settings (lr=0.1, momentum=0.9, requires_grad=False) + if prebias: + if epoch < 20: # prebias + ps = 0.1, 0.9 # prebias settings (lr=0.1, momentum=0.9) else: # normal training - ps = hyp['lr0'], hyp['momentum'], True # normal training settings - opt.prebias = False + ps = hyp['lr0'], hyp['momentum'] # normal training settings + print_model_biases(model) + prebias = False - for p in optimizer.param_groups: - p['lr'] = ps[0] # learning rate - if p.get('momentum') is not None: # for SGD but not Adam - p['momentum'] = ps[1] - for name, p in model.named_parameters(): - p.requires_grad = True if name.endswith('.bias') else ps[2] + # Bias optimizer settings + optimizer.param_groups[2]['lr'] = ps[0] + if optimizer.param_groups[2].get('momentum') is not None: # for SGD but not Adam + optimizer.param_groups[2]['momentum'] = ps[1] # Update image weights (optional) if dataset.image_weights: @@ -239,6 +240,7 @@ def train(): dataset.indices = random.choices(range(dataset.n), weights=image_weights, k=dataset.n) # rand weighted idx mloss = torch.zeros(4).to(device) # mean losses + print(('\n' + '%10s' * 8) % ('Epoch', 'gpu_mem', 'GIoU', 'obj', 'cls', 'total', 'targets', 'img_size')) pbar = tqdm(enumerate(dataloader), total=nb) # progress bar for i, (imgs, targets, paths, _) in pbar: # batch ------------------------------------------------------------- ni = i + nb * epoch # number integrated batches (since train start) @@ -307,10 +309,7 @@ def train(): # Process epoch results final_epoch = epoch + 1 == epochs - if opt.prebias: - print_model_biases(model) - continue - elif not opt.notest or final_epoch: # Calculate mAP + if not opt.notest or final_epoch: # Calculate mAP is_coco = any([x in data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) and model.nc == 80 results, maps = test.test(cfg, data, @@ -320,7 +319,8 @@ def train(): conf_thres=0.001 if final_epoch else 0.1, # 0.1 for speed iou_thres=0.6 if final_epoch and is_coco else 0.5, save_json=final_epoch and is_coco, - dataloader=testloader) + dataloader=testloader, + single_cls=opt.single_cls) # Update scheduler scheduler.step() @@ -412,10 +412,10 @@ if __name__ == '__main__': parser.add_argument('--cache-images', action='store_true', help='cache images for faster training') parser.add_argument('--weights', type=str, default='weights/ultralytics68.pt', help='initial weights') parser.add_argument('--arc', type=str, default='default', help='yolo architecture') # defaultpw, uCE, uBCE - parser.add_argument('--prebias', action='store_true', help='pretrain model biases') parser.add_argument('--name', default='', help='renames results.txt to results_name.txt if supplied') parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1 or cpu)') parser.add_argument('--adam', action='store_true', help='use adam optimizer') + parser.add_argument('--single-cls', action='store_true', help='train as single-class dataset') parser.add_argument('--var', type=float, help='debug variable') opt = parser.parse_args() opt.weights = last if opt.resume else opt.weights diff --git a/utils/datasets.py b/utils/datasets.py index f9f5459c..3f8a8304 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -263,7 +263,7 @@ class LoadStreams: # multiple IP or RTSP cameras class LoadImagesAndLabels(Dataset): # for training/testing def __init__(self, path, img_size=416, batch_size=16, augment=False, hyp=None, rect=False, image_weights=False, - cache_labels=False, cache_images=False): + cache_labels=False, cache_images=False, single_cls=False): path = str(Path(path)) # os-agnostic assert os.path.isfile(path), 'File not found %s. See %s' % (path, help_url) with open(path, 'r') as f: @@ -343,7 +343,8 @@ class LoadImagesAndLabels(Dataset): # for training/testing assert (l[:, 1:] <= 1).all(), 'non-normalized or out of bounds coordinate labels: %s' % file if np.unique(l, axis=0).shape[0] < l.shape[0]: # duplicate rows nd += 1 # print('WARNING: duplicate rows in %s' % self.label_files[i]) # duplicate rows - + if single_cls: + l[:, 0] = 0 # force dataset into single-class mode self.labels[i] = l nf += 1 # file found diff --git a/utils/evolve.sh b/utils/evolve.sh index bdc0a2c0..f1a96a5e 100644 --- a/utils/evolve.sh +++ b/utils/evolve.sh @@ -8,8 +8,8 @@ #t=ultralytics/yolov3:v199 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 672 --epochs 10 --batch 16 --accum 4 --weights '' --arc defaultpw --device 0 --multi while true; do - python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --evolve --device $1 --cfg yolov3-tiny-3cls.cfg --cache - # python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ult/athena --evolve --device $1 --cfg yolov3-spp-1cls.cfg + # python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc default --pre --multi --bucket ult/wer --evolve --device $1 --cfg yolov3-tiny-3cls.cfg --cache + python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc default --pre --multi --bucket ult/athena --evolve --device $1 --cfg yolov3-spp-1cls.cfg # python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --evolve --weights '' --arc defaultpw --pre --bucket yolov4/640ms_coco2014_10e --device $1 --multi # python3 train.py --data coco2014.data --img-size 320 --epochs 27 --batch 64 --accum 1 --evolve --weights '' --arc defaultpw --pre --bucket yolov4/320_coco2014_27e --device $1 diff --git a/utils/gcp.sh b/utils/gcp.sh index c1c731e0..407c2e7a 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -38,11 +38,17 @@ python3 detect.py # Test python3 test.py --save-json +# Kill All +t=ultralytics/yolov3:v206 +docker kill $(docker ps -a -q --filter ancestor=$t) +t=ultralytics/yolov3:v208 +docker kill $(docker ps -a -q --filter ancestor=$t) + # Evolve sudo -s t=ultralytics/yolov3:v206 docker kill $(docker ps -a -q --filter ancestor=$t) -for i in 6 7 +for i in 4 5 6 7 do docker pull $t && docker run --gpus all -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t bash utils/evolve.sh $i # docker pull $t && docker run --gpus all -d --ipc=host -v "$(pwd)"/out:/usr/src/out $t bash utils/evolve.sh $i @@ -55,10 +61,10 @@ done sudo -s t=ultralytics/yolov3:v208 docker kill $(docker ps -a -q --filter ancestor=$t) -for i in 0 +for i in 0 1 do # docker pull $t && docker run --gpus all -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t bash utils/evolve.sh $i - docker pull $t && docker run --gpus all -it --ipc=host -v "$(pwd)"/out:/usr/src/out $t bash utils/evolve.sh $i + docker pull $t && docker run --gpus all -d --ipc=host -v "$(pwd)"/out:/usr/src/out $t bash utils/evolve.sh $i # docker pull $t && nvidia-docker run -d -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i # docker pull $t && nvidia-docker run -d -v /mnt/disks/nvme0n1/coco:/usr/src/coco $t bash utils/evolve.sh $i sleep 180 @@ -277,6 +283,19 @@ n=211 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gp n=212 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n --cfg yolov3-spp-1cls.cfg n=213 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n --cfg yolov3-spp-1cls.cfg n=214 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n --cfg yolov3-spp-1cls.cfg +n=215 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n --cfg yolov3-spp-1cls.cfg +n=217 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc default --pre --multi --device 6 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg +n=219 && t=ultralytics/yolov3:v215 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc default --pre --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg +n=220 && t=ultralytics/yolov3:v215 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 20 --batch 8 --accum 8 --weights ultralytics68.pt --arc default --pre --multi --device 1 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg +n=221 && t=ultralytics/yolov3:v215 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 30 --batch 8 --accum 8 --weights ultralytics68.pt --arc default --pre --multi --device 2 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg +n=222 && t=ultralytics/yolov3:v215 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 40 --batch 8 --accum 8 --weights ultralytics68.pt --arc default --pre --multi --device 3 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg +n=223 && t=ultralytics/yolov3:v215 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg +n=224 && t=ultralytics/yolov3:v215 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 20 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 1 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg +n=225 && t=ultralytics/yolov3:v215 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 30 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg +n=226 && t=ultralytics/yolov3:v215 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 40 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg +n=227 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg +n=228 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 20 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg +n=229 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 20 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg # sm4 n=201 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 0 --cfg yolov3-tiny-3cls.cfg @@ -287,3 +306,12 @@ n=205 && t=ultralytics/yolov3:v202 && sudo docker pull $t && sudo nvidia-docker n=206 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --notest --nosave --cache --device 0 --cfg yolov3-tiny-3cls.cfg n=209 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --nosave --cache --device 3 --cfg yolov3-tiny-3cls.cfg n=210 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --nosave --cache --device 1 --cfg yolov3-tiny-3cls.cfg +n=216 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-3cls.cfg +n=218 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc default --pre --multi --bucket ult/wer --name $n --nosave --cache --device 7 --cfg yolov3-tiny-3cls.cfg +n=230 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc default --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single +n=231 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc default --multi --bucket ult/wer --name $n --nosave --cache --device 1 --cfg yolov3-tiny-1cls.cfg --single + + +n=206 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 10 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --nosave --cache --device 0 --cfg yolov3-tiny-3cls.cfg +n=206 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 10 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --nosave --cache --device 1 --cfg yolov3-tiny-3cls.cfg + From a4b8815ed934ce295b99c348b201f35e94ffd45f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 17 Jan 2020 17:58:37 -0800 Subject: [PATCH 1977/2595] updates --- test.py | 4 ++-- train.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test.py b/test.py index 68b636b1..7f809a5c 100644 --- a/test.py +++ b/test.py @@ -16,9 +16,9 @@ def test(cfg, conf_thres=0.001, iou_thres=0.5, # for nms save_json=False, + single_cls=False, model=None, - dataloader=None, - single_cls=False): + dataloader=None): # Initialize/load model and set device if model is None: device = torch_utils.select_device(opt.device, batch_size=batch_size) diff --git a/train.py b/train.py index 158cbbef..859368af 100644 --- a/train.py +++ b/train.py @@ -319,8 +319,8 @@ def train(): conf_thres=0.001 if final_epoch else 0.1, # 0.1 for speed iou_thres=0.6 if final_epoch and is_coco else 0.5, save_json=final_epoch and is_coco, - dataloader=testloader, - single_cls=opt.single_cls) + single_cls=opt.single_cls, + dataloader=testloader) # Update scheduler scheduler.step() From bab855507a1e99e6c943292eab7f2ffd2de059b2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 17 Jan 2020 18:05:28 -0800 Subject: [PATCH 1978/2595] updates --- train.py | 2 +- utils/datasets.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index 859368af..195e4a6c 100644 --- a/train.py +++ b/train.py @@ -221,7 +221,7 @@ def train(): # Prebias if prebias: - if epoch < 20: # prebias + if epoch < 1: # prebias ps = 0.1, 0.9 # prebias settings (lr=0.1, momentum=0.9) else: # normal training ps = hyp['lr0'], hyp['momentum'] # normal training settings diff --git a/utils/datasets.py b/utils/datasets.py index 3f8a8304..f83a17be 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -593,10 +593,10 @@ def load_mosaic(self, index): # Augment # img4 = img4[s // 2: int(s * 1.5), s // 2:int(s * 1.5)] # center crop (WARNING, requires box pruning) img4, labels4 = random_affine(img4, labels4, - degrees=self.hyp['degrees'] * 0, - translate=self.hyp['translate'] * 0, - scale=self.hyp['scale'] * 0, - shear=self.hyp['shear'] * 0, + degrees=self.hyp['degrees'] * 1, + translate=self.hyp['translate'] * 1, + scale=self.hyp['scale'] * 1, + shear=self.hyp['shear'] * 1, border=-s // 2) # border to remove return img4, labels4 From 3bac3c63b152f187d3c184a0671e36e5d5c79e5c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 17 Jan 2020 19:42:04 -0800 Subject: [PATCH 1979/2595] updates --- test.py | 2 +- train.py | 16 ++++++++-------- utils/gcp.sh | 6 ++++-- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/test.py b/test.py index 7f809a5c..96248f72 100644 --- a/test.py +++ b/test.py @@ -213,7 +213,7 @@ if __name__ == '__main__': parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') - parser.add_argument('--iou-thres', type=float, default=0.5, help='IOU threshold for NMS') + parser.add_argument('--iou-thres', type=float, default=0.6, help='IOU threshold for NMS') parser.add_argument('--save-json', action='store_true', help='save a cocoapi-compatible JSON results file') parser.add_argument('--task', default='test', help="'test', 'study', 'benchmark'") parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') diff --git a/train.py b/train.py index 195e4a6c..3c113289 100644 --- a/train.py +++ b/train.py @@ -52,7 +52,7 @@ if f: def train(): cfg = opt.cfg data = opt.data - img_size = opt.img_size + img_size, img_size_test = opt.img_size if len(opt.img_size) == 2 else opt.img_size * 2 # train, test sizes epochs = opt.epochs # 500200 batches at bs 64, 117263 images = 273 epochs batch_size = opt.batch_size accumulate = opt.accumulate # effective bs = batch_size * accumulate = 16 * 4 = 64 @@ -191,7 +191,7 @@ def train(): collate_fn=dataset.collate_fn) # Testloader - testloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path, opt.img_size, batch_size * 2, + testloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path, img_size_test, batch_size * 2, hyp=hyp, rect=True, cache_labels=True, @@ -221,7 +221,7 @@ def train(): # Prebias if prebias: - if epoch < 1: # prebias + if epoch < 3: # prebias ps = 0.1, 0.9 # prebias settings (lr=0.1, momentum=0.9) else: # normal training ps = hyp['lr0'], hyp['momentum'] # normal training settings @@ -314,10 +314,10 @@ def train(): results, maps = test.test(cfg, data, batch_size=batch_size * 2, - img_size=opt.img_size, + img_size=img_size_test, model=model, - conf_thres=0.001 if final_epoch else 0.1, # 0.1 for speed - iou_thres=0.6 if final_epoch and is_coco else 0.5, + conf_thres=0.001 if final_epoch and is_coco else 0.1, # 0.1 for speed + iou_thres=0.6, save_json=final_epoch and is_coco, single_cls=opt.single_cls, dataloader=testloader) @@ -402,7 +402,7 @@ if __name__ == '__main__': parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path') parser.add_argument('--data', type=str, default='data/coco2017.data', help='*.data path') parser.add_argument('--multi-scale', action='store_true', help='adjust (67% - 150%) img_size every 10 batches') - parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') + parser.add_argument('--img-size', nargs='+', type=int, default=[416], help='train and test image-sizes') parser.add_argument('--rect', action='store_true', help='rectangular training') parser.add_argument('--resume', action='store_true', help='resume training from last.pt') parser.add_argument('--nosave', action='store_true', help='only save final checkpoint') @@ -425,7 +425,7 @@ if __name__ == '__main__': mixed_precision = False # scale hyp['obj'] by img_size (evolved at 320) - # hyp['obj'] *= opt.img_size / 320. + # hyp['obj'] *= opt.img_size[0] / 320. tb_writer = None if not opt.evolve: # Train normally diff --git a/utils/gcp.sh b/utils/gcp.sh index 407c2e7a..f066df5c 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -308,8 +308,10 @@ n=209 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gp n=210 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --nosave --cache --device 1 --cfg yolov3-tiny-3cls.cfg n=216 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-3cls.cfg n=218 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc default --pre --multi --bucket ult/wer --name $n --nosave --cache --device 7 --cfg yolov3-tiny-3cls.cfg -n=230 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc default --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single -n=231 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc default --multi --bucket ult/wer --name $n --nosave --cache --device 1 --cfg yolov3-tiny-1cls.cfg --single +n=230 && t=ultralytics/athena:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single +n=231 && t=ultralytics/athena:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi --bucket ult/wer --name $n --nosave --cache --device 1 --cfg yolov3-tiny-1cls.cfg --single +n=232 && t=ultralytics/athena:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single +n=233 && t=ultralytics/athena:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single n=206 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 10 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --nosave --cache --device 0 --cfg yolov3-tiny-3cls.cfg From 43956d63050a43c71ca837fefaf3cb4fe81d1c13 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 17 Jan 2020 23:30:17 -0800 Subject: [PATCH 1980/2595] updates --- train.py | 4 ++-- utils/utils.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index 3c113289..43a0465d 100644 --- a/train.py +++ b/train.py @@ -221,7 +221,7 @@ def train(): # Prebias if prebias: - if epoch < 3: # prebias + if epoch < 1: # prebias ps = 0.1, 0.9 # prebias settings (lr=0.1, momentum=0.9) else: # normal training ps = hyp['lr0'], hyp['momentum'] # normal training settings @@ -278,7 +278,7 @@ def train(): pred = model(imgs) # Compute loss - loss, loss_items = compute_loss(pred, targets, model) + loss, loss_items = compute_loss(pred, targets, model, not prebias) if not torch.isfinite(loss): print('WARNING: non-finite loss, ending training ', loss_items) return results diff --git a/utils/utils.py b/utils/utils.py index 0b81fcec..b53fa9d7 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -361,7 +361,7 @@ class FocalLoss(nn.Module): return loss -def compute_loss(p, targets, model): # predictions, targets, model +def compute_loss(p, targets, model, giou_flag=True): # predictions, targets, model ft = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor lcls, lbox, lobj = ft([0]), ft([0]), ft([0]) tcls, tbox, indices, anchor_vec = build_targets(model, targets) @@ -399,7 +399,7 @@ def compute_loss(p, targets, model): # predictions, targets, model pbox = torch.cat((pxy, pwh), 1) # predicted box giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation lbox += (1.0 - giou).sum() if red == 'sum' else (1.0 - giou).mean() # giou loss - tobj[b, a, gj, gi] = giou.detach().type(tobj.dtype) + tobj[b, a, gj, gi] = giou.detach().type(tobj.dtype) if giou_flag else 1.0 if 'default' in arc and model.nc > 1: # cls loss (only if multiple classes) t = torch.zeros_like(ps[:, 5:]) # targets From 85fbb903f7bfa4c0bb22191e3555e75a1f79d89c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 18 Jan 2020 11:52:26 -0800 Subject: [PATCH 1981/2595] updates --- requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 8b657254..d935ea6b 100755 --- a/requirements.txt +++ b/requirements.txt @@ -17,6 +17,7 @@ Pillow # Conda commands (in place of pip) --------------------------------------------- # conda update -yn base -c defaults conda # conda install -yc anaconda numpy opencv matplotlib tqdm pillow ipython future -# conda install -yc conda-forge scikit-image pycocotools onnx tensorboard +# conda install -yc conda-forge scikit-image pycocotools tensorboard # conda install -yc spyder-ide spyder-line-profiler # conda install -yc pytorch pytorch torchvision +# conda install -yc conda-forge protobuf numpy && pip install onnx # https://github.com/onnx/onnx#linux-and-macos From 3d1db0b5acee444085aeec488c15f543ca26ca79 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 19 Jan 2020 11:37:12 -0800 Subject: [PATCH 1982/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 43a0465d..0db2f89b 100644 --- a/train.py +++ b/train.py @@ -221,7 +221,7 @@ def train(): # Prebias if prebias: - if epoch < 1: # prebias + if epoch < 3: # prebias ps = 0.1, 0.9 # prebias settings (lr=0.1, momentum=0.9) else: # normal training ps = hyp['lr0'], hyp['momentum'] # normal training settings From 723431d6c3272409559e2e7138395807583362af Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 19 Jan 2020 12:15:42 -0800 Subject: [PATCH 1983/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index b53fa9d7..21b42e76 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -513,7 +513,7 @@ def non_max_suppression(prediction, conf_thres=0.5, iou_thres=0.5, multi_cls=Tru method = 'vision_batch' nc = prediction[0].shape[1] - 5 # number of classes - multi_cls = multi_cls and (nc > 1) + multi_cls = multi_cls and (nc > 1) # allow multiple classes per anchor output = [None] * len(prediction) for image_i, pred in enumerate(prediction): # Apply conf constraint From 51b5b3288f4267237b35ae1749c91bc9778c6a30 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 19 Jan 2020 14:59:07 -0800 Subject: [PATCH 1984/2595] updates --- train.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 0db2f89b..43388078 100644 --- a/train.py +++ b/train.py @@ -20,7 +20,7 @@ last = wdir + 'last.pt' best = wdir + 'best.pt' results_file = 'results.txt' -# Hyperparameters (results68: 59.2 mAP@0.5 yolov3-spp-416) https://github.com/ultralytics/yolov3/issues/310 +# Hyperparameters (results68: 59.9 mAP@0.5 yolov3-spp-416) https://github.com/ultralytics/yolov3/issues/310 hyp = {'giou': 3.54, # giou loss gain 'cls': 37.4, # cls loss gain @@ -28,7 +28,7 @@ hyp = {'giou': 3.54, # giou loss gain 'obj': 49.5, # obj loss gain (*=img_size/320 if img_size != 320) 'obj_pw': 1.0, # obj BCELoss positive_weight 'iou_t': 0.225, # iou training threshold - 'lr0': 0.00579, # initial learning rate (SGD=1E-3, Adam=9E-5) + 'lr0': 0.00579, # initial learning rate (SGD=5E-3, Adam=5E-4) 'lrf': -4., # final LambdaLR learning rate = lr0 * (10 ** lrf) 'momentum': 0.937, # SGD momentum 'weight_decay': 0.000484, # optimizer weight decay @@ -94,6 +94,7 @@ def train(): pg0 += [v] # all else if opt.adam: + hyp['lr0'] *= 0.1 # reduce lr (i.e. SGD=5E-3, Adam=5E-4) optimizer = optim.Adam(pg0, lr=hyp['lr0']) # optimizer = AdaBound(pg0, lr=hyp['lr0'], final_lr=0.1) else: From abbf9fa2d400a116479dbbc472b4c3f3efbb53f4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 19 Jan 2020 15:37:56 -0800 Subject: [PATCH 1985/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 43388078..03b09f62 100644 --- a/train.py +++ b/train.py @@ -471,7 +471,7 @@ if __name__ == '__main__': v = (np.random.randn(ng) * np.random.random(ng) * g * s + 1) ** 2.0 elif method == 3: v = np.ones(ng) - while all(v == 1): # mutate untill a change occurs (prevent duplicates) + while all(v == 1): # mutate until a change occurs (prevent duplicates) r = (np.random.random(ng) < 0.1) * np.random.randn(ng) # 10% mutation probability v = (g * s * r + 1) ** 2.0 for i, k in enumerate(hyp.keys()): # plt.hist(v.ravel(), 300) From 19f75f986dc30236197c93eca82864731a6529d3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 19 Jan 2020 16:54:49 -0800 Subject: [PATCH 1986/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 03b09f62..ba1ed5a0 100644 --- a/train.py +++ b/train.py @@ -463,7 +463,7 @@ if __name__ == '__main__': method = 3 s = 0.2 # 20% sigma np.random.seed(int(time.time())) - g = np.array([1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 0, 1, 1, 1, 1, 1, 1, 1]) # gains + g = np.array([0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) # gains ng = len(g) if method == 1: v = (np.random.randn(ng) * np.random.random() * g * s + 1) ** 2.0 From c91ffee8524bbc639aa343bfc29856a806d5174b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 19 Jan 2020 16:55:29 -0800 Subject: [PATCH 1987/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index ba1ed5a0..e9987474 100644 --- a/train.py +++ b/train.py @@ -94,7 +94,7 @@ def train(): pg0 += [v] # all else if opt.adam: - hyp['lr0'] *= 0.1 # reduce lr (i.e. SGD=5E-3, Adam=5E-4) + # hyp['lr0'] *= 0.1 # reduce lr (i.e. SGD=5E-3, Adam=5E-4) optimizer = optim.Adam(pg0, lr=hyp['lr0']) # optimizer = AdaBound(pg0, lr=hyp['lr0'], final_lr=0.1) else: From d3738f53302ff98229294b00a2cc5ec8d6a76df1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 19 Jan 2020 16:56:32 -0800 Subject: [PATCH 1988/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index e9987474..03fd0904 100644 --- a/train.py +++ b/train.py @@ -463,7 +463,7 @@ if __name__ == '__main__': method = 3 s = 0.2 # 20% sigma np.random.seed(int(time.time())) - g = np.array([0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) # gains + g = np.array([1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 0, 1, 1, 1, 1, 1, 1, 1]) # gains ng = len(g) if method == 1: v = (np.random.randn(ng) * np.random.random() * g * s + 1) ** 2.0 From 20e381edb422b5217a044b9ac14b1113407e1ec1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 20 Jan 2020 22:43:37 -0800 Subject: [PATCH 1989/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 03fd0904..73b08ac4 100644 --- a/train.py +++ b/train.py @@ -461,7 +461,7 @@ if __name__ == '__main__': # Mutate method = 3 - s = 0.2 # 20% sigma + s = 0.3 # 20% sigma np.random.seed(int(time.time())) g = np.array([1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 0, 1, 1, 1, 1, 1, 1, 1]) # gains ng = len(g) From 6ccf19038de2bb6bef9b69ce5fa1fa180ec7e2c9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 21 Jan 2020 16:18:24 -0800 Subject: [PATCH 1990/2595] updates --- train.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 73b08ac4..2249c45a 100644 --- a/train.py +++ b/train.py @@ -365,8 +365,8 @@ def train(): torch.save(chkpt, best) # Save backup every 10 epochs (optional) - if epoch > 0 and epoch % 10 == 0: - torch.save(chkpt, wdir + 'backup%g.pt' % epoch) + # if epoch > 0 and epoch % 10 == 0: + # torch.save(chkpt, wdir + 'backup%g.pt' % epoch) # Delete checkpoint del chkpt @@ -384,7 +384,8 @@ def train(): # save to cloud if opt.bucket: - os.system('gsutil cp %s %s gs://%s' % (fresults, wdir + flast, opt.bucket)) + os.system('gsutil cp %s gs://%s/results' % (fresults, opt.bucket)) + os.system('gsutil cp %s gs://%s/weights' % (wdir + flast, opt.bucket)) if not opt.evolve: plot_results() # save as results.png From 5d73b190b053e8c3b87efb7fb1adc48496a04d01 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 21 Jan 2020 17:23:35 -0800 Subject: [PATCH 1991/2595] updates --- models.py | 8 ++------ train.py | 6 +----- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/models.py b/models.py index 12c355b3..eefa5b9f 100755 --- a/models.py +++ b/models.py @@ -81,17 +81,13 @@ def create_modules(module_defs, img_size, arc): # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) try: - if arc == 'defaultpw' or arc == 'Fdefaultpw': # default with positive weights + if arc == 'default' or arc == 'Fdefault': # default b = [-5.0, -5.0] # obj, cls - elif arc == 'default': # default no pw (40 cls, 80 obj) - b = [-5.0, -5.0] elif arc == 'uBCE': # unified BCE (80 classes) b = [0, -9.0] elif arc == 'uCE': # unified CE (1 background + 80 classes) b = [10, -0.1] - elif arc == 'Fdefault': # Focal default no pw (28 cls, 21 obj, no pw) - b = [-2.1, -1.8] - elif arc == 'uFBCE' or arc == 'uFBCEpw': # unified FocalBCE (5120 obj, 80 classes) + elif arc == 'uFBCE': # unified FocalBCE (5120 obj, 80 classes) b = [0, -6.5] elif arc == 'uFCE': # unified FocalCE (64 cls, 1 background + 80 classes) b = [7.7, -1.1] diff --git a/train.py b/train.py index 2249c45a..a9b7f185 100644 --- a/train.py +++ b/train.py @@ -58,10 +58,6 @@ def train(): accumulate = opt.accumulate # effective bs = batch_size * accumulate = 16 * 4 = 64 weights = opt.weights # initial training weights - if 'pw' not in opt.arc: # remove BCELoss positive weights - hyp['cls_pw'] = 1. - hyp['obj_pw'] = 1. - # Initialize init_seeds() if opt.multi_scale: @@ -413,7 +409,7 @@ if __name__ == '__main__': parser.add_argument('--bucket', type=str, default='', help='gsutil bucket') parser.add_argument('--cache-images', action='store_true', help='cache images for faster training') parser.add_argument('--weights', type=str, default='weights/ultralytics68.pt', help='initial weights') - parser.add_argument('--arc', type=str, default='default', help='yolo architecture') # defaultpw, uCE, uBCE + parser.add_argument('--arc', type=str, default='default', help='yolo architecture') # default, uCE, uBCE parser.add_argument('--name', default='', help='renames results.txt to results_name.txt if supplied') parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1 or cpu)') parser.add_argument('--adam', action='store_true', help='use adam optimizer') From b9c2386ff0588a1b01aa633df8f9f4c821569a80 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 21 Jan 2020 19:46:12 -0800 Subject: [PATCH 1992/2595] updates --- utils/evolve.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/utils/evolve.sh b/utils/evolve.sh index f1a96a5e..f0ad5b81 100644 --- a/utils/evolve.sh +++ b/utils/evolve.sh @@ -8,9 +8,10 @@ #t=ultralytics/yolov3:v199 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 672 --epochs 10 --batch 16 --accum 4 --weights '' --arc defaultpw --device 0 --multi while true; do - # python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc default --pre --multi --bucket ult/wer --evolve --device $1 --cfg yolov3-tiny-3cls.cfg --cache - python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc default --pre --multi --bucket ult/athena --evolve --device $1 --cfg yolov3-spp-1cls.cfg + # python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --evolve --cache --device $1 --cfg yolov3-tiny-1cls.cfg --single --adam + # python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --multi --bucket ult/athena --evolve --device $1 --cfg yolov3-spp-1cls.cfg - # python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --evolve --weights '' --arc defaultpw --pre --bucket yolov4/640ms_coco2014_10e --device $1 --multi - # python3 train.py --data coco2014.data --img-size 320 --epochs 27 --batch 64 --accum 1 --evolve --weights '' --arc defaultpw --pre --bucket yolov4/320_coco2014_27e --device $1 + # python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --evolve --weights '' --bucket yolov4/640ms_coco2014_10e --device $1 --multi + # python3 train.py --data coco2014.data --img-size 320 --epochs 27 --batch 64 --accum 1 --evolve --weights '' --bucket yolov4/320_coco2014_27e --device $1 + python3 train.py --data coco2014.data --img-size 384 --epochs 27 --batch 64 --accum 1 --evolve --weights '' --bucket ult/coco --device $1 --cache done From 6ba6181534f28e426423fc6d904efd333f5d22d4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 21 Jan 2020 19:47:48 -0800 Subject: [PATCH 1993/2595] updates --- utils/evolve.sh | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/utils/evolve.sh b/utils/evolve.sh index f0ad5b81..8174ecef 100644 --- a/utils/evolve.sh +++ b/utils/evolve.sh @@ -1,11 +1,9 @@ #!/bin/bash -#for i in 1 2 3 4 5 6 7 +#for i in 0 1 2 3 #do # t=ultralytics/yolov3:v139 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t utils/evolve.sh $i # sleep 30 -# done -# -#t=ultralytics/yolov3:v199 && sudo docker pull $t && sudo nvidia-docker run -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 672 --epochs 10 --batch 16 --accum 4 --weights '' --arc defaultpw --device 0 --multi +#done while true; do # python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --evolve --cache --device $1 --cfg yolov3-tiny-1cls.cfg --single --adam From 578e7f9500bb94d36e5a7d72b2402d6933189969 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 21 Jan 2020 23:18:34 -0800 Subject: [PATCH 1994/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index a9b7f185..3c43f0d7 100644 --- a/train.py +++ b/train.py @@ -326,7 +326,7 @@ def train(): with open(results_file, 'a') as f: f.write(s + '%10.3g' * 7 % results + '\n') # P, R, mAP, F1, test_losses=(GIoU, obj, cls) if len(opt.name) and opt.bucket: - os.system('gsutil cp results.txt gs://%s/results%s.txt' % (opt.bucket, opt.name)) + os.system('gsutil cp results.txt gs://%s/results/results%s.txt' % (opt.bucket, opt.name)) # Write Tensorboard results if tb_writer: From dc1f0a0d4f1aa5c09aa179e7cf4c201197dd9814 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 22 Jan 2020 10:53:36 -0800 Subject: [PATCH 1995/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 21b42e76..b10b815c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -866,7 +866,7 @@ def apply_classifier(x, model, img, im0): def fitness(x): # Returns fitness (for use with results.txt or evolve.txt) - w = [0.0, 0.0, 0.8, 0.2] # weights for [P, R, mAP, F1]@0.5 or [P, R, mAP@0.5:0.95, mAP@0.5] + w = [0.01, 0.01, 0.78, 0.20] # weights for [P, R, mAP, F1]@0.5 or [P, R, mAP@0.5:0.95, mAP@0.5] return (x[:, :4] * w).sum(1) From c7bf7f3d60e00392dc0071070d782fedb12523c5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 22 Jan 2020 10:55:39 -0800 Subject: [PATCH 1996/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index b10b815c..b8e41df2 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -866,7 +866,7 @@ def apply_classifier(x, model, img, im0): def fitness(x): # Returns fitness (for use with results.txt or evolve.txt) - w = [0.01, 0.01, 0.78, 0.20] # weights for [P, R, mAP, F1]@0.5 or [P, R, mAP@0.5:0.95, mAP@0.5] + w = [0.01, 0.01, 0.75, 0.23] # weights for [P, R, mAP, F1]@0.5 or [P, R, mAP@0.5:0.95, mAP@0.5] return (x[:, :4] * w).sum(1) From f18913736b058221668a3538f54b87a1ece4bb96 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 22 Jan 2020 11:06:52 -0800 Subject: [PATCH 1997/2595] updates --- train.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index 3c43f0d7..4535c0d5 100644 --- a/train.py +++ b/train.py @@ -446,13 +446,13 @@ if __name__ == '__main__': for _ in range(1): # generations to evolve if os.path.exists('evolve.txt'): # if evolve.txt exists: select best hyps and mutate # Select parent(s) - x = np.loadtxt('evolve.txt', ndmin=2) parent = 'single' # parent selection method: 'single' or 'weighted' + x = np.loadtxt('evolve.txt', ndmin=2) + n = min(3, len(x)) # number of previous results to consider + x = x[np.argsort(-fitness(x))][:n] # top n mutations if parent == 'single' or len(x) == 1: - x = x[fitness(x).argmax()] + x = x[random.randint(0, n - 1)] # select one of the top n elif parent == 'weighted': # weighted combination - n = min(10, len(x)) # number to merge - x = x[np.argsort(-fitness(x))][:n] # top n mutations w = fitness(x) - fitness(x).min() # weights x = (x * w.reshape(n, 1)).sum(0) / w.sum() # new parent From 3de61b1fa597fc01b692316fa6c277b9ea484320 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 22 Jan 2020 11:08:03 -0800 Subject: [PATCH 1998/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 4535c0d5..97bbc773 100644 --- a/train.py +++ b/train.py @@ -452,9 +452,9 @@ if __name__ == '__main__': x = x[np.argsort(-fitness(x))][:n] # top n mutations if parent == 'single' or len(x) == 1: x = x[random.randint(0, n - 1)] # select one of the top n - elif parent == 'weighted': # weighted combination + elif parent == 'weighted': w = fitness(x) - fitness(x).min() # weights - x = (x * w.reshape(n, 1)).sum(0) / w.sum() # new parent + x = (x * w.reshape(n, 1)).sum(0) / w.sum() # select weighted combination # Mutate method = 3 From e6ec7c041c3f03ba9d7165eeda699c95e4bcc913 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 22 Jan 2020 11:23:16 -0800 Subject: [PATCH 1999/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 97bbc773..be92c514 100644 --- a/train.py +++ b/train.py @@ -448,7 +448,7 @@ if __name__ == '__main__': # Select parent(s) parent = 'single' # parent selection method: 'single' or 'weighted' x = np.loadtxt('evolve.txt', ndmin=2) - n = min(3, len(x)) # number of previous results to consider + n = min(5, len(x)) # number of previous results to consider x = x[np.argsort(-fitness(x))][:n] # top n mutations if parent == 'single' or len(x) == 1: x = x[random.randint(0, n - 1)] # select one of the top n From 9bb51aaf8ca585b90c3f877972a39eb1e0f3821f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 22 Jan 2020 18:17:08 -0800 Subject: [PATCH 2000/2595] updates --- train.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index be92c514..ae4b3515 100644 --- a/train.py +++ b/train.py @@ -448,13 +448,14 @@ if __name__ == '__main__': # Select parent(s) parent = 'single' # parent selection method: 'single' or 'weighted' x = np.loadtxt('evolve.txt', ndmin=2) - n = min(5, len(x)) # number of previous results to consider + n = min(8, len(x)) # number of previous results to consider x = x[np.argsort(-fitness(x))][:n] # top n mutations + w = fitness(x) - fitness(x).min() # weights if parent == 'single' or len(x) == 1: - x = x[random.randint(0, n - 1)] # select one of the top n + # x = x[random.randint(0, n - 1)] # random selection + x = x[random.choices(range(n), weights=w)[0]] # weighted selection elif parent == 'weighted': - w = fitness(x) - fitness(x).min() # weights - x = (x * w.reshape(n, 1)).sum(0) / w.sum() # select weighted combination + x = (x * w.reshape(n, 1)).sum(0) / w.sum() # weighted combination # Mutate method = 3 From 52041cffb9e784bf8e59fc0cc42f1dae78f974e5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 22 Jan 2020 18:19:42 -0800 Subject: [PATCH 2001/2595] updates --- utils/evolve.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/evolve.sh b/utils/evolve.sh index 8174ecef..1c420f5e 100644 --- a/utils/evolve.sh +++ b/utils/evolve.sh @@ -7,9 +7,9 @@ while true; do # python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --evolve --cache --device $1 --cfg yolov3-tiny-1cls.cfg --single --adam - # python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --multi --bucket ult/athena --evolve --device $1 --cfg yolov3-spp-1cls.cfg + python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --multi --bucket ult/athena --evolve --device $1 --cfg yolov3-spp-1cls.cfg --adam # python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --evolve --weights '' --bucket yolov4/640ms_coco2014_10e --device $1 --multi # python3 train.py --data coco2014.data --img-size 320 --epochs 27 --batch 64 --accum 1 --evolve --weights '' --bucket yolov4/320_coco2014_27e --device $1 - python3 train.py --data coco2014.data --img-size 384 --epochs 27 --batch 64 --accum 1 --evolve --weights '' --bucket ult/coco --device $1 --cache + # python3 train.py --data coco2014.data --img-size 384 --epochs 27 --batch 64 --accum 1 --evolve --weights '' --bucket ult/coco --device $1 --cache --cfg yolov3.cfg done From ee4f7a324dec18a5beafa4b88f0a4c4f5c79d040 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 23 Jan 2020 12:24:52 -0800 Subject: [PATCH 2002/2595] updates --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index d935ea6b..a4684389 100755 --- a/requirements.txt +++ b/requirements.txt @@ -5,7 +5,7 @@ torch >= 1.4 matplotlib pycocotools tqdm -Pillow +pillow # Nvidia Apex (optional) for mixed precision training -------------------------- # git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex From 07c8a03aa076856c6994f971ac9ec975e8b7aa08 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 23 Jan 2020 13:52:17 -0800 Subject: [PATCH 2003/2595] updates --- models.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index eefa5b9f..4be680ee 100755 --- a/models.py +++ b/models.py @@ -224,6 +224,9 @@ class Darknet(nn.Module): img_size = x.shape[-2:] layer_outputs = [] output = [] + verbose = False + if verbose: + print('0', x.shape) for i, (mdef, module) in enumerate(zip(self.module_defs, self.module_list)): mtype = mdef['type'] @@ -241,10 +244,15 @@ class Darknet(nn.Module): x = torch.cat([layer_outputs[i] for i in layers], 1) # print(''), [print(layer_outputs[i].shape) for i in layers], print(x.shape) elif mtype == 'shortcut': - x = x + layer_outputs[int(mdef['from'])] + j = int(mdef['from']) + if verbose: + print('shortcut adding layer %g-%s to %g-%s' % (j, layer_outputs[j].shape, i - 1, x.shape)) + x = x + layer_outputs[j] elif mtype == 'yolo': output.append(module(x, img_size)) layer_outputs.append(x if i in self.routs else []) + if verbose: + print(i, x.shape) if self.training: return output From d498193456a6676acbc383525b9dc30a23dddbbc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 23 Jan 2020 15:15:53 -0800 Subject: [PATCH 2004/2595] updates --- models.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/models.py b/models.py index 4be680ee..ee7f7c47 100755 --- a/models.py +++ b/models.py @@ -222,8 +222,7 @@ class Darknet(nn.Module): def forward(self, x, var=None): img_size = x.shape[-2:] - layer_outputs = [] - output = [] + output, layer_outputs = [], [] verbose = False if verbose: print('0', x.shape) From 629b1b237a000686939f984478ce1b776c32d987 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 23 Jan 2020 16:36:53 -0800 Subject: [PATCH 2005/2595] updates --- cfg/yolov3-tiny3-1cls.cfg | 227 ++++++++++++++++++++++++++++++++++++++ cfg/yolov3-tiny3.cfg | 227 ++++++++++++++++++++++++++++++++++++++ utils/evolve.sh | 4 +- 3 files changed, 456 insertions(+), 2 deletions(-) create mode 100644 cfg/yolov3-tiny3-1cls.cfg create mode 100644 cfg/yolov3-tiny3.cfg diff --git a/cfg/yolov3-tiny3-1cls.cfg b/cfg/yolov3-tiny3-1cls.cfg new file mode 100644 index 00000000..bd5fd0ba --- /dev/null +++ b/cfg/yolov3-tiny3-1cls.cfg @@ -0,0 +1,227 @@ +[net] +# Testing +# batch=1 +# subdivisions=1 +# Training +batch=64 +subdivisions=16 +width=608 +height=608 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 200000 +policy=steps +steps=180000,190000 +scales=.1,.1 + + +[convolutional] +batch_normalize=1 +filters=16 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=1 + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +########### + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=18 +activation=linear + + + +[yolo] +mask = 6,7,8 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=1 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 8 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=18 +activation=linear + +[yolo] +mask = 3,4,5 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=1 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = -3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 6 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=18 +activation=linear + +[yolo] +mask = 0,1,2 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=1 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 diff --git a/cfg/yolov3-tiny3.cfg b/cfg/yolov3-tiny3.cfg new file mode 100644 index 00000000..85d6787f --- /dev/null +++ b/cfg/yolov3-tiny3.cfg @@ -0,0 +1,227 @@ +[net] +# Testing +# batch=1 +# subdivisions=1 +# Training +batch=64 +subdivisions=16 +width=608 +height=608 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 200000 +policy=steps +steps=180000,190000 +scales=.1,.1 + + +[convolutional] +batch_normalize=1 +filters=16 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=1 + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +########### + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + + +[yolo] +mask = 6,7,8 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 8 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + +[yolo] +mask = 3,4,5 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = -3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 6 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + +[yolo] +mask = 0,1,2 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 diff --git a/utils/evolve.sh b/utils/evolve.sh index 1c420f5e..3d022303 100644 --- a/utils/evolve.sh +++ b/utils/evolve.sh @@ -6,8 +6,8 @@ #done while true; do - # python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --evolve --cache --device $1 --cfg yolov3-tiny-1cls.cfg --single --adam - python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --multi --bucket ult/athena --evolve --device $1 --cfg yolov3-spp-1cls.cfg --adam + python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --evolve --cache --device $1 --cfg yolov3-tiny3-1cls.cfg --single --adam + # python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --multi --bucket ult/athena --evolve --device $1 --cfg yolov3-spp-1cls.cfg --adam # python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --evolve --weights '' --bucket yolov4/640ms_coco2014_10e --device $1 --multi # python3 train.py --data coco2014.data --img-size 320 --epochs 27 --batch 64 --accum 1 --evolve --weights '' --bucket yolov4/320_coco2014_27e --device $1 From dd3cf27ececafc17136cce82c8dd502ce4dae6d0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 23 Jan 2020 17:26:05 -0800 Subject: [PATCH 2006/2595] updates --- utils/evolve.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/evolve.sh b/utils/evolve.sh index 3d022303..01790b69 100644 --- a/utils/evolve.sh +++ b/utils/evolve.sh @@ -6,7 +6,7 @@ #done while true; do - python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --evolve --cache --device $1 --cfg yolov3-tiny3-1cls.cfg --single --adam + python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.conv.15 --multi --bucket ult/wer --evolve --cache --device $1 --cfg yolov3-tiny3-1cls.cfg --single --adam # python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --multi --bucket ult/athena --evolve --device $1 --cfg yolov3-spp-1cls.cfg --adam # python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --evolve --weights '' --bucket yolov4/640ms_coco2014_10e --device $1 --multi From cb0f4bbfe7ef5b7bef1c3c224a40f25628eb6640 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 27 Jan 2020 16:08:20 -0500 Subject: [PATCH 2007/2595] updates --- utils/evolve.sh | 8 ++--- utils/gcp.sh | 81 ++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 66 insertions(+), 23 deletions(-) diff --git a/utils/evolve.sh b/utils/evolve.sh index 01790b69..f69e81e2 100644 --- a/utils/evolve.sh +++ b/utils/evolve.sh @@ -6,10 +6,8 @@ #done while true; do - python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.conv.15 --multi --bucket ult/wer --evolve --cache --device $1 --cfg yolov3-tiny3-1cls.cfg --single --adam - # python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --multi --bucket ult/athena --evolve --device $1 --cfg yolov3-spp-1cls.cfg --adam + # python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.conv.15 --multi --bucket ult/wer --evolve --cache --device $1 --cfg yolov3-tiny3-1cls.cfg --single --adam + # python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --multi --bucket ult/athena --evolve --device $1 --cfg yolov3-spp-1cls.cfg - # python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --evolve --weights '' --bucket yolov4/640ms_coco2014_10e --device $1 --multi - # python3 train.py --data coco2014.data --img-size 320 --epochs 27 --batch 64 --accum 1 --evolve --weights '' --bucket yolov4/320_coco2014_27e --device $1 - # python3 train.py --data coco2014.data --img-size 384 --epochs 27 --batch 64 --accum 1 --evolve --weights '' --bucket ult/coco --device $1 --cache --cfg yolov3.cfg + python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --evolve --weights '' --bucket ult/coco --device $1 --cfg yolov3-spp.cfg --multi done diff --git a/utils/gcp.sh b/utils/gcp.sh index f066df5c..6a6f69f8 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -6,8 +6,7 @@ git clone https://github.com/ultralytics/yolov3 sudo apt-get install zip #git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex sudo conda install -yc conda-forge scikit-image pycocotools -# python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('193Zp_ye-3qXMonR1nZj3YyxMtQkMy50k','coco2014.zip')" -python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('1WQT6SOktSe8Uw6r10-2JhbEhMY5DJaph','coco2014.zip')" +python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('193Zp_ye-3qXMonR1nZj3YyxMtQkMy50k','coco2014.zip')" sudo shutdown # Re-clone @@ -39,35 +38,39 @@ python3 detect.py python3 test.py --save-json # Kill All -t=ultralytics/yolov3:v206 +t=ultralytics/yolov3:v240 docker kill $(docker ps -a -q --filter ancestor=$t) t=ultralytics/yolov3:v208 docker kill $(docker ps -a -q --filter ancestor=$t) -# Evolve +# Evolve wer sudo -s t=ultralytics/yolov3:v206 docker kill $(docker ps -a -q --filter ancestor=$t) -for i in 4 5 6 7 +for i in 0 1 2 3 0 1 2 3 do - docker pull $t && docker run --gpus all -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t bash utils/evolve.sh $i - # docker pull $t && docker run --gpus all -d --ipc=host -v "$(pwd)"/out:/usr/src/out $t bash utils/evolve.sh $i - # docker pull $t && nvidia-docker run -d -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i - # docker pull $t && nvidia-docker run -d -v /mnt/disks/nvme0n1/coco:/usr/src/coco $t bash utils/evolve.sh $i + docker pull $t && docker run -d --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t bash utils/evolve.sh $i sleep 180 done -# Evolve +# Evolve athena sudo -s t=ultralytics/yolov3:v208 docker kill $(docker ps -a -q --filter ancestor=$t) for i in 0 1 do - # docker pull $t && docker run --gpus all -d --ipc=host -v "$(pwd)"/data:/usr/src/data $t bash utils/evolve.sh $i docker pull $t && docker run --gpus all -d --ipc=host -v "$(pwd)"/out:/usr/src/out $t bash utils/evolve.sh $i - # docker pull $t && nvidia-docker run -d -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i - # docker pull $t && nvidia-docker run -d -v /mnt/disks/nvme0n1/coco:/usr/src/coco $t bash utils/evolve.sh $i - sleep 180 + sleep 120 +done + +# Evolve coco +sudo -s +t=ultralytics/yolov3:v256 +docker kill $(docker ps -a -q --filter ancestor=$t) +for i in 0 +do + docker pull $t && docker run --gpus all -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i + sleep 120 done # Git pull @@ -274,6 +277,7 @@ n=196 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker r n=197 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 273 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n n=198 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 273 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n + # knife n=199 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 0 n=200 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 6 @@ -296,6 +300,23 @@ n=226 && t=ultralytics/yolov3:v215 && sudo docker pull $t && sudo docker run -d n=227 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg n=228 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 20 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg n=229 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 20 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg +n=240 && t=ultralytics/yolov3:v240 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg --var 0 +n=241 && t=ultralytics/yolov3:v240 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 1 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg --var 1 +n=242 && t=ultralytics/yolov3:v240 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 2 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg --var 3 +n=243 && t=ultralytics/yolov3:v240 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 3 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg --var 5 +n=244 && t=ultralytics/yolov3:v240 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 4 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg --var 7 +n=245 && t=ultralytics/yolov3:v245 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights '' --arc defaultpw --multi --device 5 --bucket ult/athena --name $n --nosave --cfg yolov3-1cls.cfg +n=246 && t=ultralytics/yolov3:v245 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights '' --arc defaultpw --multi --device 6 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg +n=247 && t=ultralytics/yolov3:v245 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights '' --arc defaultpw --multi --device 7 --bucket ult/athena --name $n --nosave --cfg yolov3-spp3-1cls.cfg +n=248 && t=ultralytics/yolov3:v245 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights darknet53.conv.74 --arc defaultpw --multi --device 5 --bucket ult/athena --name $n --nosave --cfg yolov3-1cls.cfg +n=249 && t=ultralytics/yolov3:v245 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights darknet53.conv.74 --arc defaultpw --multi --device 6 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg +n=250 && t=ultralytics/yolov3:v245 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights darknet53.conv.74 --arc defaultpw --multi --device 7 --bucket ult/athena --name $n --nosave --cfg yolov3-spp3-1cls.cfg +n=251 && t=ultralytics/yolov3:v240 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 3 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg --var 9 +n=252 && t=ultralytics/yolov3:v240 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 4 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg --var 100 +n=253 && t=ultralytics/yolov3:v245 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 60 --batch 8 --accum 8 --weights darknet53.conv.74 --arc defaultpw --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-1cls.cfg +n=254 && t=ultralytics/yolov3:v245 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 60 --batch 8 --accum 8 --weights darknet53.conv.74 --arc defaultpw --multi --device 1 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg +n=255 && t=ultralytics/yolov3:v245 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 60 --batch 8 --accum 8 --weights darknet53.conv.74 --arc defaultpw --multi --device 2 --bucket ult/athena --name $n --nosave --cfg yolov3-spp3-1cls.cfg + # sm4 n=201 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 0 --cfg yolov3-tiny-3cls.cfg @@ -310,10 +331,34 @@ n=216 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gp n=218 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc default --pre --multi --bucket ult/wer --name $n --nosave --cache --device 7 --cfg yolov3-tiny-3cls.cfg n=230 && t=ultralytics/athena:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single n=231 && t=ultralytics/athena:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi --bucket ult/wer --name $n --nosave --cache --device 1 --cfg yolov3-tiny-1cls.cfg --single -n=232 && t=ultralytics/athena:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single -n=233 && t=ultralytics/athena:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single +n=232 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single +n=233 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single +n=234 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 416 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single +n=235 && t=ultralytics/yolov3:v206 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi 1.2 --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single +n=236 && t=ultralytics/yolov3:v206 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi 1.4 --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single +n=237 && t=ultralytics/yolov3:v206 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi 1.6 --bucket ult/wer --name $n --nosave --device 1 --cfg yolov3-tiny-1cls.cfg --single +n=238 && t=ultralytics/yolov3:v206 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi 1.8 --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single +n=239 && t=ultralytics/yolov3:v206 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi 2.0 --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single +n=256 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 500 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi --bucket ult/wer --name $n --nosave --cache --device 6 --cfg yolov3-tiny-1cls.cfg --single +n=257 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 500 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi --bucket ult/wer --name $n --nosave --cache --device 7 --cfg yolov3-tiny-1cls.cfg --single --adam -n=206 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 10 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --nosave --cache --device 0 --cfg yolov3-tiny-3cls.cfg -n=206 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 10 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --nosave --cache --device 1 --cfg yolov3-tiny-3cls.cfg +#coco +n=3 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 30 --batch 32 --accum 2 --weights '' --device 0 --cfg yolov3.cfg --nosave --bucket ult/coco --name $n +n=4 && t=ultralytics/coco:v3 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 30 --batch 32 --accum 2 --weights '' --device 1 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n +n=5 && t=ultralytics/coco:v3 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 30 --batch 32 --accum 2 --weights '' --device 2 --cfg yolov3-spp3.cfg --nosave --bucket ult/coco --name $n +sudo shutdown + + +# sm4 +n=18 && t=ultralytics/wer:v18 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.conv.15 --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single --adam +n=19 && t=ultralytics/wer:v18 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.conv.15 --multi --bucket ult/wer --name $n --nosave --cache --device 1 --cfg yolov3-tiny-3l-1cls.cfg --single --adam +n=20 && t=ultralytics/wer:v18 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.conv.15 --multi --bucket ult/wer --name $n --nosave --cache --device 2 --cfg yolov3-tiny-prnc-1cls.cfg --single --adam +n=21 && t=ultralytics/wer:v18 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.conv.15 --multi --bucket ult/wer --name $n --nosave --cache --device 3 --cfg yolov3-tiny-prn-1cls.cfg --single --adam +n=22 && t=ultralytics/wer:v18 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights '' --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-3l-1cls.cfg --single --adam +n=23 && t=ultralytics/wer:v18 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights '' --multi --bucket ult/wer --name $n --nosave --cache --device 1 --cfg yolov3-tinyr-3l-1cls.cfg --single --adam +n=24 && t=ultralytics/wer:v24 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights '' --multi --bucket ult/wer --name $n --nosave --cache --device 3 --cfg yolov3-tiny-3l-1cls.cfg --single --adam +n=25 && t=ultralytics/wer:v25 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --name $n --nosave --cache --device 2 --cfg yolov3-tiny3-1cls.cfg --single --adam +n=26 && t=ultralytics/wer:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny3-1cls.cfg --single --adam + From 72680a599282462b40e3c9a748dd939241b34403 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 27 Jan 2020 16:52:40 -0500 Subject: [PATCH 2008/2595] updates --- train.py | 2 +- utils/utils.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index ae4b3515..59240cca 100644 --- a/train.py +++ b/train.py @@ -459,7 +459,7 @@ if __name__ == '__main__': # Mutate method = 3 - s = 0.3 # 20% sigma + s = 0.3 # 30% sigma np.random.seed(int(time.time())) g = np.array([1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 0, 1, 1, 1, 1, 1, 1, 1]) # gains ng = len(g) diff --git a/utils/utils.py b/utils/utils.py index b8e41df2..e7ce39e0 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -798,9 +798,10 @@ def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(320, 640)): # Evolve wh = torch.Tensor(wh) - f, ng = fitness(thr, wh, k), 1000 # fitness, generations + f, ng = fitness(thr, wh, k), 1000 # fitness, mutation probability, generations for _ in tqdm(range(ng), desc='Evolving anchors'): - kg = (k.copy() * (1 + np.random.random() * np.random.randn(*k.shape) * 0.30)).clip(min=2.0) + v = ((np.random.random(n) < 0.1) * np.random.randn(n) * 0.3 + 1) ** 2.0 # 0.1 mutation probability, 0.3 sigma + kg = (k.copy() * v).clip(min=2.0) fg = fitness(thr, wh, kg) if fg > f: f, k = fg, kg.copy() From 19616781772bc45f3d085201ca1585ddf9cd9ddc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 27 Jan 2020 17:03:27 -0500 Subject: [PATCH 2009/2595] updates --- models.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/models.py b/models.py index ee7f7c47..cf5435b5 100755 --- a/models.py +++ b/models.py @@ -233,6 +233,8 @@ class Darknet(nn.Module): x = module(x) elif mtype == 'route': layers = [int(x) for x in mdef['layers'].split(',')] + if verbose: + print('route concatenating %s' % ([layer_outputs[i].shape for i in layers])) if len(layers) == 1: x = layer_outputs[layers[0]] else: From 5a09c0e6afc141cf81e7959540a67569da25c1eb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 27 Jan 2020 17:41:07 -0500 Subject: [PATCH 2010/2595] updates --- utils/utils.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index e7ce39e0..c83ebb07 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -798,9 +798,11 @@ def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(320, 640)): # Evolve wh = torch.Tensor(wh) - f, ng = fitness(thr, wh, k), 1000 # fitness, mutation probability, generations + f, sh, ng, mp, s = fitness(thr, wh, k), k.shape, 1000, 0.1, 0.3 # fitness, generations, mutation probability, sigma for _ in tqdm(range(ng), desc='Evolving anchors'): - v = ((np.random.random(n) < 0.1) * np.random.randn(n) * 0.3 + 1) ** 2.0 # 0.1 mutation probability, 0.3 sigma + v = np.ones(sh) + while (v == 1).all(): # mutate until a change occurs (prevent duplicates) + v = ((np.random.random(sh) < mp) * np.random.randn(*sh) * s + 1) ** 2.0 kg = (k.copy() * v).clip(min=2.0) fg = fitness(thr, wh, kg) if fg > f: From 639fa308578d6927c403d633716d214daf9bf635 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 29 Jan 2020 10:29:37 -0800 Subject: [PATCH 2011/2595] updates --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 91da5878..7aebe10a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Start FROM Nvidia PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorch -FROM nvcr.io/nvidia/pytorch:19.12-py3 +FROM nvcr.io/nvidia/pytorch:20.01-py3 # Install dependencies (pip or conda) RUN pip install -U gsutil From 4e7d1053cfe4a8e28534d84cd3c1165d03b20e3e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 29 Jan 2020 10:30:13 -0800 Subject: [PATCH 2012/2595] updates --- train.py | 11 ++++++----- utils/evolve.sh | 6 ++++++ utils/gcp.sh | 31 +++++++++++++++++++++---------- 3 files changed, 33 insertions(+), 15 deletions(-) diff --git a/train.py b/train.py index 59240cca..cea08aa5 100644 --- a/train.py +++ b/train.py @@ -103,7 +103,7 @@ def train(): # optimizer = torch_utils.Lookahead(optimizer, k=5, alpha=0.5) start_epoch = 0 - best_fitness = float('inf') + best_fitness = 0.0 attempt_download(weights) if weights.endswith('.pt'): # pytorch format # possible weights are '*.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt' etc. @@ -337,9 +337,9 @@ def train(): tb_writer.add_scalar(title, xi, epoch) # Update best mAP - fitness = sum(results[4:]) # total loss - if fitness < best_fitness: - best_fitness = fitness + fi = fitness(np.array(results).reshape(1, -1)) # fitness_i = weighted combination of [P, R, mAP, F1] + if fi > best_fitness: + best_fitness = fi # Save training results save = (not opt.nosave) or (final_epoch and not opt.evolve) @@ -357,7 +357,7 @@ def train(): torch.save(chkpt, last) # Save best checkpoint - if best_fitness == fitness: + if best_fitness == fi: torch.save(chkpt, best) # Save backup every 10 epochs (optional) @@ -382,6 +382,7 @@ def train(): if opt.bucket: os.system('gsutil cp %s gs://%s/results' % (fresults, opt.bucket)) os.system('gsutil cp %s gs://%s/weights' % (wdir + flast, opt.bucket)) + os.system('gsutil cp %s gs://%s/weights' % (wdir + fbest, opt.bucket)) if not opt.evolve: plot_results() # save as results.png diff --git a/utils/evolve.sh b/utils/evolve.sh index f69e81e2..3f81d6a0 100644 --- a/utils/evolve.sh +++ b/utils/evolve.sh @@ -11,3 +11,9 @@ while true; do python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --evolve --weights '' --bucket ult/coco --device $1 --cfg yolov3-spp.cfg --multi done + + +# coco epoch times --img-size 416 608 --epochs 27 --batch 16 --accum 4 +# 36:34 2080ti +# 21:58 V100 +# 63:00 T4 \ No newline at end of file diff --git a/utils/gcp.sh b/utils/gcp.sh index 6a6f69f8..ec7a337e 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -65,11 +65,11 @@ done # Evolve coco sudo -s -t=ultralytics/yolov3:v256 +t=ultralytics/yolov3:v189 docker kill $(docker ps -a -q --filter ancestor=$t) -for i in 0 +for i in 0 1 2 3 4 5 6 7 do - docker pull $t && docker run --gpus all -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i + docker pull $t && docker run --gpus all -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i sleep 120 done @@ -278,7 +278,7 @@ n=197 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker r n=198 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 273 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -# knife +# athena n=199 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 0 n=200 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 6 n=207 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 7 @@ -318,7 +318,7 @@ n=254 && t=ultralytics/yolov3:v245 && sudo docker pull $t && sudo docker run -d n=255 && t=ultralytics/yolov3:v245 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 60 --batch 8 --accum 8 --weights darknet53.conv.74 --arc defaultpw --multi --device 2 --bucket ult/athena --name $n --nosave --cfg yolov3-spp3-1cls.cfg -# sm4 +# wer n=201 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 0 --cfg yolov3-tiny-3cls.cfg n=202 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 1 --cfg yolov3-tiny-3cls-sm4.cfg n=203 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights '' --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 2 --cfg yolov3-tiny-3cls-sm4.cfg @@ -344,13 +344,25 @@ n=257 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it #coco -n=3 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 30 --batch 32 --accum 2 --weights '' --device 0 --cfg yolov3.cfg --nosave --bucket ult/coco --name $n -n=4 && t=ultralytics/coco:v3 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 30 --batch 32 --accum 2 --weights '' --device 1 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n -n=5 && t=ultralytics/coco:v3 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 30 --batch 32 --accum 2 --weights '' --device 2 --cfg yolov3-spp3.cfg --nosave --bucket ult/coco --name $n +n=3 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 27 --batch 32 --accum 2 --weights '' --device 1 --cfg yolov3.cfg --nosave --bucket ult/coco --name $n +n=4 && t=ultralytics/coco:v3 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 27 --batch 32 --accum 2 --weights '' --device 2 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n +n=5 && t=ultralytics/coco:v3 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 27 --batch 32 --accum 2 --weights '' --device 3 --cfg yolov3-spp3.cfg --nosave --bucket ult/coco --name $n +n=6 && t=ultralytics/coco:v3 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 27 --batch 32 --accum 2 --weights '' --device 0 --cfg yolov4.cfg --nosave --bucket ult/coco --name $n +n=7 && t=ultralytics/coco:v3 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 27 --batch 32 --accum 2 --weights '' --device 1 --cfg yolov4s.cfg --nosave --bucket ult/coco --name $n +n=8 && t=ultralytics/coco:v8 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 27 --batch 32 --accum 2 --weights '' --device 0 --cfg yolov4.cfg --nosave --bucket ult/coco --name $n +n=9 && t=ultralytics/coco:v9 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 22 --accum 3 --weights '' --device 0 --cfg yolov4a.cfg --nosave --bucket ult/coco --name $n --multi +n=10 && t=ultralytics/coco:v9 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 22 --accum 3 --weights '' --device 0 --cfg yolov4b.cfg --nosave --bucket ult/coco --name $n --multi + + sudo shutdown -# sm4 +# athena +n=32 && t=ultralytics/athena:v32 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg +n=33 && t=ultralytics/athena:v33 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights darknet53.conv.74 --multi --device 1 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg + + +# wer n=18 && t=ultralytics/wer:v18 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.conv.15 --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single --adam n=19 && t=ultralytics/wer:v18 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.conv.15 --multi --bucket ult/wer --name $n --nosave --cache --device 1 --cfg yolov3-tiny-3l-1cls.cfg --single --adam n=20 && t=ultralytics/wer:v18 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.conv.15 --multi --bucket ult/wer --name $n --nosave --cache --device 2 --cfg yolov3-tiny-prnc-1cls.cfg --single --adam @@ -361,4 +373,3 @@ n=24 && t=ultralytics/wer:v24 && sudo docker pull $t && sudo docker run -it --gp n=25 && t=ultralytics/wer:v25 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --name $n --nosave --cache --device 2 --cfg yolov3-tiny3-1cls.cfg --single --adam n=26 && t=ultralytics/wer:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny3-1cls.cfg --single --adam - From b2be56414525cf94aaa440d89ad2688bc3694ca0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 29 Jan 2020 10:33:36 -0800 Subject: [PATCH 2013/2595] updates --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7aebe10a..b6c8e356 100644 --- a/Dockerfile +++ b/Dockerfile @@ -47,10 +47,10 @@ COPY . /usr/src/app # t=ultralytics/yolov3:v0 && sudo docker build -t $t . && sudo docker push $t # Run -# sudo docker run --gpus all --ipc=host ultralytics/yolov3:v0 python3 detect.py +# t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo docker run --gpus all -it $t # Pull and Run with local directory access -# t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo docker run --gpus all -it --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t +# t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo docker run --gpus all -it -v "$(pwd)"/coco:/usr/src/coco $t # Kill all # sudo docker kill "$(sudo docker ps -q)" From f405d450437380671eb09b131727d988feb624d1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 29 Jan 2020 10:34:51 -0800 Subject: [PATCH 2014/2595] updates --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index b6c8e356..20662e99 100644 --- a/Dockerfile +++ b/Dockerfile @@ -47,10 +47,10 @@ COPY . /usr/src/app # t=ultralytics/yolov3:v0 && sudo docker build -t $t . && sudo docker push $t # Run -# t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo docker run --gpus all -it $t +# t=ultralytics/coco:v8 && sudo docker pull $t && sudo docker run -it $t # Pull and Run with local directory access -# t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo docker run --gpus all -it -v "$(pwd)"/coco:/usr/src/coco $t +# t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo docker run -it -v "$(pwd)"/coco:/usr/src/coco $t # Kill all # sudo docker kill "$(sudo docker ps -q)" From 9e97c4cadb3def7222c2e7462864afe2e6dc3b6e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 29 Jan 2020 11:58:32 -0800 Subject: [PATCH 2015/2595] updates --- utils/utils.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index c83ebb07..2b3ff82b 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -216,9 +216,11 @@ def ap_per_class(tp, conf, pred_cls, target_cls): # Plot # fig, ax = plt.subplots(1, 1, figsize=(4, 4)) - # ax.plot(np.concatenate(([0.], recall)), np.concatenate(([0.], precision))) - # ax.set_title('YOLOv3-SPP'); ax.set_xlabel('Recall'); ax.set_ylabel('Precision') - # ax.set_xlim(0, 1) + # ax.plot(recall, precision) + # ax.set_xlabel('Recall') + # ax.set_ylabel('Precision') + # ax.set_xlim(0, 1.01) + # ax.set_ylim(0, 1.01) # fig.tight_layout() # fig.savefig('PR_curve.png', dpi=300) From 8fac566a87587c519e0252b4db60c43986e6ca4b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 29 Jan 2020 14:18:45 -0800 Subject: [PATCH 2016/2595] updates --- utils/utils.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 2b3ff82b..a0a29815 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -799,12 +799,13 @@ def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(320, 640)): # ax[0].plot(np.arange(1, 21), np.array(d) ** 2, marker='.') # Evolve + npr = np.random wh = torch.Tensor(wh) - f, sh, ng, mp, s = fitness(thr, wh, k), k.shape, 1000, 0.1, 0.3 # fitness, generations, mutation probability, sigma + f, sh, ng, mp, s = fitness(thr, wh, k), k.shape, 1000, 0.9, 0.1 # fitness, generations, mutation probability, sigma for _ in tqdm(range(ng), desc='Evolving anchors'): v = np.ones(sh) while (v == 1).all(): # mutate until a change occurs (prevent duplicates) - v = ((np.random.random(sh) < mp) * np.random.randn(*sh) * s + 1) ** 2.0 + v = ((npr.random(sh) < mp) * npr.random() * npr.randn(*sh) * s + 1).clip(0.3, 3.0) # 98.6, 61.6 kg = (k.copy() * v).clip(min=2.0) fg = fitness(thr, wh, kg) if fg > f: From 3ee6eb438a22d725a70763e8c97c7c3faa89d68e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 29 Jan 2020 14:26:37 -0800 Subject: [PATCH 2017/2595] updates --- train.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/train.py b/train.py index cea08aa5..c4902b8d 100644 --- a/train.py +++ b/train.py @@ -449,7 +449,7 @@ if __name__ == '__main__': # Select parent(s) parent = 'single' # parent selection method: 'single' or 'weighted' x = np.loadtxt('evolve.txt', ndmin=2) - n = min(8, len(x)) # number of previous results to consider + n = min(5, len(x)) # number of previous results to consider x = x[np.argsort(-fitness(x))][:n] # top n mutations w = fitness(x) - fitness(x).min() # weights if parent == 'single' or len(x) == 1: @@ -459,20 +459,20 @@ if __name__ == '__main__': x = (x * w.reshape(n, 1)).sum(0) / w.sum() # weighted combination # Mutate - method = 3 - s = 0.3 # 30% sigma - np.random.seed(int(time.time())) + method, mp, s = 3, 0.9, 0.1 # method, mutation probability, sigma + npr = np.random + npr.seed(int(time.time())) g = np.array([1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 0, 1, 1, 1, 1, 1, 1, 1]) # gains ng = len(g) if method == 1: - v = (np.random.randn(ng) * np.random.random() * g * s + 1) ** 2.0 + v = (npr.randn(ng) * npr.random() * g * s + 1) ** 2.0 elif method == 2: - v = (np.random.randn(ng) * np.random.random(ng) * g * s + 1) ** 2.0 + v = (npr.randn(ng) * npr.random(ng) * g * s + 1) ** 2.0 elif method == 3: v = np.ones(ng) while all(v == 1): # mutate until a change occurs (prevent duplicates) - r = (np.random.random(ng) < 0.1) * np.random.randn(ng) # 10% mutation probability - v = (g * s * r + 1) ** 2.0 + # v = (g * (npr.random(ng) < mp) * npr.randn(ng) * s + 1) ** 2.0 + v = (g * (npr.random(ng) < mp) * npr.randn(ng) * npr.random() * s + 1).clip(0.3, 3.0) for i, k in enumerate(hyp.keys()): # plt.hist(v.ravel(), 300) hyp[k] = x[i + 7] * v[i] # mutate From db4ac86ebab09865df52b7ab4cec0ab159681794 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 29 Jan 2020 14:28:48 -0800 Subject: [PATCH 2018/2595] updates --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 20662e99..b44772d1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -47,7 +47,7 @@ COPY . /usr/src/app # t=ultralytics/yolov3:v0 && sudo docker build -t $t . && sudo docker push $t # Run -# t=ultralytics/coco:v8 && sudo docker pull $t && sudo docker run -it $t +# t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo docker run -it $t # Pull and Run with local directory access # t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo docker run -it -v "$(pwd)"/coco:/usr/src/coco $t From 9b78f4aa1b47f62e03d7d43f7c008ad3a0f7667c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 29 Jan 2020 15:31:19 -0800 Subject: [PATCH 2019/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index c4902b8d..3f1b9461 100644 --- a/train.py +++ b/train.py @@ -459,7 +459,7 @@ if __name__ == '__main__': x = (x * w.reshape(n, 1)).sum(0) / w.sum() # weighted combination # Mutate - method, mp, s = 3, 0.9, 0.1 # method, mutation probability, sigma + method, mp, s = 3, 0.9, 0.2 # method, mutation probability, sigma npr = np.random npr.seed(int(time.time())) g = np.array([1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 0, 1, 1, 1, 1, 1, 1, 1]) # gains From 2cf171465c6bd9f25a33291f2ce02c524d875d45 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 29 Jan 2020 21:17:31 -0800 Subject: [PATCH 2020/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 3f1b9461..a03ec26b 100644 --- a/train.py +++ b/train.py @@ -382,7 +382,7 @@ def train(): if opt.bucket: os.system('gsutil cp %s gs://%s/results' % (fresults, opt.bucket)) os.system('gsutil cp %s gs://%s/weights' % (wdir + flast, opt.bucket)) - os.system('gsutil cp %s gs://%s/weights' % (wdir + fbest, opt.bucket)) + # os.system('gsutil cp %s gs://%s/weights' % (wdir + fbest, opt.bucket)) if not opt.evolve: plot_results() # save as results.png From ce11ef28f8f2098672f184219683af4d7039666e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 29 Jan 2020 21:52:00 -0800 Subject: [PATCH 2021/2595] updates --- models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index cf5435b5..4a57ef59 100755 --- a/models.py +++ b/models.py @@ -179,7 +179,8 @@ class YOLOLayer(nn.Module): p = p.view(m, self.no) xy = torch.sigmoid(p[:, 0:2]) + grid_xy # x, y wh = torch.exp(p[:, 2:4]) * anchor_wh # width, height - p_cls = torch.sigmoid(p[:, 5:self.no]) * torch.sigmoid(p[:, 4:5]) # conf + p_cls = torch.sigmoid(p[:, 4:5]) if self.nc == 1 else \ + torch.sigmoid(p[:, 5:self.no]) * torch.sigmoid(p[:, 4:5]) # conf return p_cls, xy / self.ng, wh else: # inference From ff7ee7f1f133b7be04e72d84f30a505c24f8bf3e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 30 Jan 2020 12:12:04 -0800 Subject: [PATCH 2022/2595] updates --- detect.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 2d826a49..d14ca47f 100644 --- a/detect.py +++ b/detect.py @@ -36,14 +36,16 @@ def detect(save_img=False): # Fuse Conv2d + BatchNorm2d layers # model.fuse() + # torch_utils.model_info(model, report='summary') # 'full' or 'summary' # Eval mode model.to(device).eval() # Export mode if ONNX_EXPORT: + model.fuse() img = torch.zeros((1, 3) + img_size) # (1, 3, 320, 192) - torch.onnx.export(model, img, 'weights/export.onnx', verbose=False, opset_version=10) + torch.onnx.export(model, img, 'weights/export.onnx', verbose=False, opset_version=11) # Validate exported model import onnx From 27c75b521084039f2b555c5873832e3a41928c80 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 30 Jan 2020 12:37:47 -0800 Subject: [PATCH 2023/2595] updates --- detect.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index d14ca47f..889ca689 100644 --- a/detect.py +++ b/detect.py @@ -45,7 +45,7 @@ def detect(save_img=False): if ONNX_EXPORT: model.fuse() img = torch.zeros((1, 3) + img_size) # (1, 3, 320, 192) - torch.onnx.export(model, img, 'weights/export.onnx', verbose=False, opset_version=11) + torch.onnx.export(model, img, 'weights/export.onnx', verbose=False, opset_version=10) # Validate exported model import onnx @@ -159,7 +159,7 @@ if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path') parser.add_argument('--names', type=str, default='data/coco.names', help='*.names path') - parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') + parser.add_argument('--weights', type=str, default='weights/ultralytics68.pt', help='path to weights file') parser.add_argument('--source', type=str, default='data/samples', help='source') # input file/folder, 0 for webcam parser.add_argument('--output', type=str, default='output', help='output folder') # output folder parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') From 999463fbbdc23a9b4d944bdf74acba4e14f93d7c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 30 Jan 2020 12:39:54 -0800 Subject: [PATCH 2024/2595] updates --- models.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index 4a57ef59..f77c1cdb 100755 --- a/models.py +++ b/models.py @@ -51,7 +51,11 @@ def create_modules(module_defs, img_size, arc): modules = maxpool elif mdef['type'] == 'upsample': - modules = nn.Upsample(scale_factor=int(mdef['stride']), mode='nearest') + if ONNX_EXPORT: # explicitly state size, avoid scale_factor + g = (yolo_index + 1) * 2 + modules = nn.Upsample(size=(10 * g, 6 * g), mode='nearest') # assume img_size = (320, 192) + else: + modules = nn.Upsample(scale_factor=int(mdef['stride']), mode='nearest') elif mdef['type'] == 'route': # nn.Sequential() placeholder for 'route' layer layers = [int(x) for x in mdef['layers'].split(',')] From 2e4650e013498b0f91cf5d26add55ec72c1043b2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 30 Jan 2020 12:40:05 -0800 Subject: [PATCH 2025/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index f77c1cdb..0b513f37 100755 --- a/models.py +++ b/models.py @@ -52,7 +52,7 @@ def create_modules(module_defs, img_size, arc): elif mdef['type'] == 'upsample': if ONNX_EXPORT: # explicitly state size, avoid scale_factor - g = (yolo_index + 1) * 2 + g = (yolo_index + 1) * 2 # gain modules = nn.Upsample(size=(10 * g, 6 * g), mode='nearest') # assume img_size = (320, 192) else: modules = nn.Upsample(scale_factor=int(mdef['stride']), mode='nearest') From ac8d78382a78585cd2c575d3ad0e7c0df7828012 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 30 Jan 2020 14:29:58 -0800 Subject: [PATCH 2026/2595] updates --- train.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/train.py b/train.py index a03ec26b..4b0e8a5d 100644 --- a/train.py +++ b/train.py @@ -377,9 +377,7 @@ def train(): os.rename('results.txt', fresults) os.rename(wdir + 'last.pt', wdir + flast) if os.path.exists(wdir + 'last.pt') else None os.rename(wdir + 'best.pt', wdir + fbest) if os.path.exists(wdir + 'best.pt') else None - - # save to cloud - if opt.bucket: + if opt.bucket: # save to cloud os.system('gsutil cp %s gs://%s/results' % (fresults, opt.bucket)) os.system('gsutil cp %s gs://%s/weights' % (wdir + flast, opt.bucket)) # os.system('gsutil cp %s gs://%s/weights' % (wdir + fbest, opt.bucket)) From 4b9d73f9318451630f4172d40ba446b0fd7e94c1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 30 Jan 2020 14:32:10 -0800 Subject: [PATCH 2027/2595] updates --- train.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/train.py b/train.py index 4b0e8a5d..8f09bae3 100644 --- a/train.py +++ b/train.py @@ -437,8 +437,7 @@ if __name__ == '__main__': train() # train normally else: # Evolve hyperparameters (optional) - opt.notest = True # only test final epoch - opt.nosave = True # only save final checkpoint + opt.notest, opt.nosave = True, True # only test/save final epoch if opt.bucket: os.system('gsutil cp gs://%s/evolve.txt .' % opt.bucket) # download evolve.txt if exists From 20b0601fa72665abf97939aa460cc81305b3562a Mon Sep 17 00:00:00 2001 From: Piotr Skalski Date: Fri, 31 Jan 2020 00:48:26 +0100 Subject: [PATCH 2028/2595] change of test batch image format from .jpg to .png, due to matplotlib bug (#817) Co-authored-by: Glenn Jocher --- test.py | 5 +++-- train.py | 4 ++-- utils/utils.py | 7 ++++--- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/test.py b/test.py index 96248f72..a5cec3b4 100644 --- a/test.py +++ b/test.py @@ -76,8 +76,9 @@ def test(cfg, _, _, height, width = imgs.shape # batch size, channels, height, width # Plot images with bounding boxes - if batch_i == 0 and not os.path.exists('test_batch0.jpg'): - plot_images(imgs=imgs, targets=targets, paths=paths, fname='test_batch0.jpg') + if batch_i == 0 and not os.path.exists('test_batch0.png'): + plot_images(imgs=imgs, targets=targets, paths=paths, fname='test_batch0.png') + # Disable gradients with torch.no_grad(): diff --git a/train.py b/train.py index 8f09bae3..15a6d2ad 100644 --- a/train.py +++ b/train.py @@ -73,7 +73,7 @@ def train(): nc = 1 if opt.single_cls else int(data_dict['classes']) # number of classes # Remove previous results - for f in glob.glob('*_batch*.jpg') + glob.glob(results_file): + for f in glob.glob('*_batch*.png') + glob.glob(results_file): os.remove(f) # Initialize model @@ -255,7 +255,7 @@ def train(): # Plot images with bounding boxes if ni == 0: - fname = 'train_batch%g.jpg' % i + fname = 'train_batch%g.png' % i plot_images(imgs=imgs, targets=targets, paths=paths, fname=fname) if tb_writer: tb_writer.add_image(fname, cv2.imread(fname)[:, :, ::-1], dataformats='HWC') diff --git a/utils/utils.py b/utils/utils.py index a0a29815..82b80cde 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -911,7 +911,8 @@ def plot_wh_methods(): # from utils.utils import *; plot_wh_methods() fig.savefig('comparison.png', dpi=200) -def plot_images(imgs, targets, paths=None, fname='images.jpg'): + +def plot_images(imgs, targets, paths=None, fname='images.png'): # Plots training images overlaid with targets imgs = imgs.cpu().numpy() targets = targets.cpu().numpy() @@ -947,13 +948,13 @@ def plot_test_txt(): # from utils.utils import *; plot_test() ax.hist2d(cx, cy, bins=600, cmax=10, cmin=0) ax.set_aspect('equal') fig.tight_layout() - plt.savefig('hist2d.jpg', dpi=300) + plt.savefig('hist2d.png', dpi=300) fig, ax = plt.subplots(1, 2, figsize=(12, 6)) ax[0].hist(cx, bins=600) ax[1].hist(cy, bins=600) fig.tight_layout() - plt.savefig('hist1d.jpg', dpi=200) + plt.savefig('hist1d.png', dpi=200) def plot_targets_txt(): # from utils.utils import *; plot_targets_txt() From 6f769081d1a8b72ea7ee2d696a0b39fc12a06c25 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 30 Jan 2020 16:03:34 -0800 Subject: [PATCH 2029/2595] updates --- utils/utils.py | 1 - 1 file changed, 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 82b80cde..6402f84b 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -911,7 +911,6 @@ def plot_wh_methods(): # from utils.utils import *; plot_wh_methods() fig.savefig('comparison.png', dpi=200) - def plot_images(imgs, targets, paths=None, fname='images.png'): # Plots training images overlaid with targets imgs = imgs.cpu().numpy() From 0c7af1a4d293b40de08613468369e2f5d9b143fa Mon Sep 17 00:00:00 2001 From: LinCoce <328655009@qq.com> Date: Fri, 31 Jan 2020 13:58:26 +0800 Subject: [PATCH 2030/2595] fusedconv bug fix, https://github.com/ultralytics/yolov3/issues/807 (#818) Looks good. Thanks for catching the bug @LinCoce! --- utils/torch_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index d615e2a8..9b321724 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -61,7 +61,7 @@ def fuse_conv_and_bn(conv, bn): else: b_conv = torch.zeros(conv.weight.size(0)) b_bn = bn.bias - bn.weight.mul(bn.running_mean).div(torch.sqrt(bn.running_var + bn.eps)) - fusedconv.bias.copy_(b_conv + b_bn) + fusedconv.bias.copy_(torch.mm(w_bn, b_conv.reshape(-1, 1)).reshape(-1) + b_bn) return fusedconv From 189c7044fb57b05ce97106951756653f2a4787f5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 31 Jan 2020 09:00:45 -0800 Subject: [PATCH 2031/2595] updates --- utils/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 6402f84b..1fd88e9c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -343,13 +343,13 @@ def wh_iou(wh1, wh2): class FocalLoss(nn.Module): # Wraps focal loss around existing loss_fcn() https://arxiv.org/pdf/1708.02002.pdf # i.e. criteria = FocalLoss(nn.BCEWithLogitsLoss(), gamma=2.5) - def __init__(self, loss_fcn, gamma=0.5, alpha=1, reduction='mean'): + def __init__(self, loss_fcn, gamma=0.5, alpha=1): super(FocalLoss, self).__init__() - loss_fcn.reduction = 'none' # required to apply FL to each element self.loss_fcn = loss_fcn self.gamma = gamma self.alpha = alpha - self.reduction = reduction + self.reduction = loss_fcn.reduction + self.loss_fcn.reduction = 'none' # required to apply FL to each element def forward(self, input, target): loss = self.loss_fcn(input, target) From f7772c791de0d5e488e82b52c2bcf46ee33727e2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 31 Jan 2020 09:27:40 -0800 Subject: [PATCH 2032/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 1fd88e9c..f78534da 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -872,7 +872,7 @@ def apply_classifier(x, model, img, im0): def fitness(x): # Returns fitness (for use with results.txt or evolve.txt) - w = [0.01, 0.01, 0.75, 0.23] # weights for [P, R, mAP, F1]@0.5 or [P, R, mAP@0.5:0.95, mAP@0.5] + w = [0.0, 0.01, 0.99, 0.0] # weights for [P, R, mAP, F1]@0.5 or [P, R, mAP@0.5:0.95, mAP@0.5] return (x[:, :4] * w).sum(1) From d23f721dcf9eb26949f07b15f5534ee2918c7fc8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 31 Jan 2020 09:36:28 -0800 Subject: [PATCH 2033/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 15a6d2ad..01c3107e 100644 --- a/train.py +++ b/train.py @@ -313,7 +313,7 @@ def train(): batch_size=batch_size * 2, img_size=img_size_test, model=model, - conf_thres=0.001 if final_epoch and is_coco else 0.1, # 0.1 for speed + conf_thres=1E-3 if opt.evolve or (final_epoch and is_coco) else 0.1, # 0.1 faster iou_thres=0.6, save_json=final_epoch and is_coco, single_cls=opt.single_cls, From 8b18beb3dbd6041fd8224ee40b8d7519ba7849ab Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 2 Feb 2020 08:55:34 -0800 Subject: [PATCH 2034/2595] updates --- models.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/models.py b/models.py index 0b513f37..ea262375 100755 --- a/models.py +++ b/models.py @@ -18,6 +18,8 @@ def create_modules(module_defs, img_size, arc): for i, mdef in enumerate(module_defs): modules = nn.Sequential() + # if i == 0: + # modules.add_module('BatchNorm2d_0', nn.BatchNorm2d(output_filters[-1], momentum=0.1)) if mdef['type'] == 'convolutional': bn = int(mdef['batch_normalize']) From 785bfec286b7367492097d4ce3a99eb27cc7c504 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 2 Feb 2020 09:19:44 -0800 Subject: [PATCH 2035/2595] updates --- utils/utils.py | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index f78534da..4bf0080a 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -751,22 +751,22 @@ def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(320, 640)): from utils.datasets import LoadImagesAndLabels thr = 0.20 # IoU threshold - def print_results(thr, wh, k): + def print_results(wh, k): k = k[np.argsort(k.prod(1))] # sort small to large iou = wh_iou(torch.Tensor(wh), torch.Tensor(k)) - max_iou, min_iou = iou.max(1)[0], iou.min(1)[0] + max_iou = iou.max(1)[0] bpr, aat = (max_iou > thr).float().mean(), (iou > thr).float().mean() * n # best possible recall, anch > thr print('%.2f iou_thr: %.3f best possible recall, %.2f anchors > thr' % (thr, bpr, aat)) - print('kmeans anchors (n=%g, img_size=%s, IoU=%.3f/%.3f/%.3f-min/mean/best): ' % - (n, img_size, min_iou.mean(), iou.mean(), max_iou.mean()), end='') + print('n=%g, img_size=%s, IoU_all=%.3f/%.3f-mean/best, IoU>thr=%.3f-mean: ' % + (n, img_size, iou.mean(), max_iou.mean(), iou[iou > thr].mean()), end='') for i, x in enumerate(k): print('%i,%i' % (round(x[0]), round(x[1])), end=', ' if i < len(k) - 1 else '\n') # use in *.cfg return k - def fitness(thr, wh, k): # mutation fitness - iou = wh_iou(wh, torch.Tensor(k)).max(1)[0] # max iou - bpr = (iou > thr).float().mean() # best possible recall - return iou.mean() * bpr # product + def fitness(wh, k): # mutation fitness + iou = wh_iou(wh, torch.Tensor(k)) # iou + max_iou = iou.max(1)[0] + return max_iou.mean() # product # Get label wh wh = [] @@ -776,6 +776,7 @@ def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(320, 640)): wh.append(l[:, 3:5] * (s / s.max())) # image normalized to letterbox normalized wh wh = np.concatenate(wh, 0).repeat(nr, axis=0) # augment 10x wh *= np.random.uniform(img_size[0], img_size[1], size=(wh.shape[0], 1)) # normalized to pixels (multi-scale) + wh = wh[(wh > 2.0).all(1)] # remove below threshold boxes (< 2 pixels wh) # Darknet yolov3.cfg anchors use_darknet = False @@ -788,7 +789,7 @@ def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(320, 640)): s = wh.std(0) # sigmas for whitening k, dist = kmeans(wh / s, n, iter=30) # points, mean distance k *= s - k = print_results(thr, wh, k) + k = print_results(wh, k) # # Plot # k, d = [None] * 20, [None] * 20 @@ -797,21 +798,26 @@ def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(320, 640)): # fig, ax = plt.subplots(1, 2, figsize=(14, 7)) # ax = ax.ravel() # ax[0].plot(np.arange(1, 21), np.array(d) ** 2, marker='.') + # fig, ax = plt.subplots(1, 2, figsize=(14, 7)) # plot wh + # ax[0].hist(wh[wh[:, 0]<100, 0],400) + # ax[1].hist(wh[wh[:, 1]<100, 1],400) + # fig.tight_layout() + # fig.savefig('wh.png', dpi=200) # Evolve npr = np.random wh = torch.Tensor(wh) - f, sh, ng, mp, s = fitness(thr, wh, k), k.shape, 1000, 0.9, 0.1 # fitness, generations, mutation probability, sigma + f, sh, ng, mp, s = fitness(wh, k), k.shape, 1000, 0.9, 0.1 # fitness, generations, mutation prob, sigma for _ in tqdm(range(ng), desc='Evolving anchors'): v = np.ones(sh) while (v == 1).all(): # mutate until a change occurs (prevent duplicates) v = ((npr.random(sh) < mp) * npr.random() * npr.randn(*sh) * s + 1).clip(0.3, 3.0) # 98.6, 61.6 kg = (k.copy() * v).clip(min=2.0) - fg = fitness(thr, wh, kg) + fg = fitness(wh, kg) if fg > f: f, k = fg, kg.copy() - print_results(thr, wh, k) - k = print_results(thr, wh, k) + print_results(wh, k) + k = print_results(wh, k) return k From 888cad1e31e6c1264b3c8ee20a71a7b4fd05041d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 2 Feb 2020 23:35:03 -0800 Subject: [PATCH 2036/2595] updates --- utils/gcp.sh | 34 +++++++++++++++++++++++----------- utils/utils.py | 22 +++++++++++----------- 2 files changed, 34 insertions(+), 22 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index ec7a337e..e918123d 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -3,11 +3,12 @@ # New VM rm -rf sample_data yolov3 git clone https://github.com/ultralytics/yolov3 -sudo apt-get install zip +# sudo apt-get install zip #git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex sudo conda install -yc conda-forge scikit-image pycocotools python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('193Zp_ye-3qXMonR1nZj3YyxMtQkMy50k','coco2014.zip')" -sudo shutdown +python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('1C3HewOG9akA3y456SZLBJZfNDPkBwAto','knife.zip')" +python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('13g3LqdpkNE8sPosVJT6KFXlfoMypzRP4','sm4.zip')" # Re-clone rm -rf yolov3 # Warning: remove existing @@ -67,10 +68,10 @@ done sudo -s t=ultralytics/yolov3:v189 docker kill $(docker ps -a -q --filter ancestor=$t) -for i in 0 1 2 3 4 5 6 7 +for i in 0 1 do docker pull $t && docker run --gpus all -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i - sleep 120 + sleep 30 done # Git pull @@ -350,16 +351,28 @@ n=5 && t=ultralytics/coco:v3 && sudo docker pull $t && sudo docker run -d --gpus n=6 && t=ultralytics/coco:v3 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 27 --batch 32 --accum 2 --weights '' --device 0 --cfg yolov4.cfg --nosave --bucket ult/coco --name $n n=7 && t=ultralytics/coco:v3 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 27 --batch 32 --accum 2 --weights '' --device 1 --cfg yolov4s.cfg --nosave --bucket ult/coco --name $n n=8 && t=ultralytics/coco:v8 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 27 --batch 32 --accum 2 --weights '' --device 0 --cfg yolov4.cfg --nosave --bucket ult/coco --name $n -n=9 && t=ultralytics/coco:v9 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 22 --accum 3 --weights '' --device 0 --cfg yolov4a.cfg --nosave --bucket ult/coco --name $n --multi -n=10 && t=ultralytics/coco:v9 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 22 --accum 3 --weights '' --device 0 --cfg yolov4b.cfg --nosave --bucket ult/coco --name $n --multi - - -sudo shutdown +n=9 && t=ultralytics/coco:v9 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 20 --accum 3 --weights '' --device 0 --cfg yolov4a.cfg --nosave --bucket ult/coco --name $n --multi +n=10 && t=ultralytics/coco:v9 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 20 --accum 3 --weights '' --device 0 --cfg yolov4b.cfg --nosave --bucket ult/coco --name $n --multi +n=11 && t=ultralytics/coco:v9 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 20 --accum 3 --weights '' --device 0 --cfg yolov4c.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=12 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 20 --accum 3 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi +n=13 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 20 --accum 3 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi +n=14 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 20 --accum 3 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi +n=15 && t=ultralytics/coco:v14 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi +n=16 && t=ultralytics/coco:v9 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov4a.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=17 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov4d.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=18 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov4a.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=19 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov4e.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=20 && t=ultralytics/coco:v14 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=21 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppe.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=22 && t=ultralytics/coco:v14 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 27 --batch 12 --accum 6 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=23 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown # athena n=32 && t=ultralytics/athena:v32 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg -n=33 && t=ultralytics/athena:v33 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights darknet53.conv.74 --multi --device 1 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg +n=33 && t=ultralytics/athena:v33 && sudo docker pull $t && sudo docker run --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg +n=34 && t=ultralytics/athena:v33 && sudo docker pull $t && sudo docker run --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 20 --batch 8 --accum 8 --weights ultralytics68.pt --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg +n=35 && t=ultralytics/athena:v33 && sudo docker pull $t && sudo docker run --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 30 --batch 8 --accum 8 --weights ultralytics68.pt --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg && sudo shutdown # wer @@ -372,4 +385,3 @@ n=23 && t=ultralytics/wer:v18 && sudo docker pull $t && sudo docker run -it --gp n=24 && t=ultralytics/wer:v24 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights '' --multi --bucket ult/wer --name $n --nosave --cache --device 3 --cfg yolov3-tiny-3l-1cls.cfg --single --adam n=25 && t=ultralytics/wer:v25 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --name $n --nosave --cache --device 2 --cfg yolov3-tiny3-1cls.cfg --single --adam n=26 && t=ultralytics/wer:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny3-1cls.cfg --single --adam - diff --git a/utils/utils.py b/utils/utils.py index 4bf0080a..61890c2e 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -745,15 +745,15 @@ def coco_single_class_labels(path='../coco/labels/train2014/', label_class=43): shutil.copyfile(src=img_file, dst='new/images/' + Path(file).name.replace('txt', 'jpg')) # copy images -def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(320, 640)): +def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(608, 608)): # from utils.utils import *; _ = kmean_anchors() # Produces a list of target kmeans suitable for use in *.cfg files from utils.datasets import LoadImagesAndLabels thr = 0.20 # IoU threshold - def print_results(wh, k): + def print_results(k): k = k[np.argsort(k.prod(1))] # sort small to large - iou = wh_iou(torch.Tensor(wh), torch.Tensor(k)) + iou = wh_iou(wh, torch.Tensor(k)) max_iou = iou.max(1)[0] bpr, aat = (max_iou > thr).float().mean(), (iou > thr).float().mean() * n # best possible recall, anch > thr print('%.2f iou_thr: %.3f best possible recall, %.2f anchors > thr' % (thr, bpr, aat)) @@ -763,7 +763,7 @@ def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(320, 640)): print('%i,%i' % (round(x[0]), round(x[1])), end=', ' if i < len(k) - 1 else '\n') # use in *.cfg return k - def fitness(wh, k): # mutation fitness + def fitness(k): # mutation fitness iou = wh_iou(wh, torch.Tensor(k)) # iou max_iou = iou.max(1)[0] return max_iou.mean() # product @@ -780,7 +780,7 @@ def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(320, 640)): # Darknet yolov3.cfg anchors use_darknet = False - if use_darknet: + if use_darknet and n == 9: k = np.array([[10, 13], [16, 30], [33, 23], [30, 61], [62, 45], [59, 119], [116, 90], [156, 198], [373, 326]]) else: # Kmeans calculation @@ -789,7 +789,8 @@ def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(320, 640)): s = wh.std(0) # sigmas for whitening k, dist = kmeans(wh / s, n, iter=30) # points, mean distance k *= s - k = print_results(wh, k) + wh = torch.Tensor(wh) + k = print_results(k) # # Plot # k, d = [None] * 20, [None] * 20 @@ -806,18 +807,17 @@ def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(320, 640)): # Evolve npr = np.random - wh = torch.Tensor(wh) - f, sh, ng, mp, s = fitness(wh, k), k.shape, 1000, 0.9, 0.1 # fitness, generations, mutation prob, sigma + f, sh, ng, mp, s = fitness(k), k.shape, 1000, 0.9, 0.1 # fitness, generations, mutation prob, sigma for _ in tqdm(range(ng), desc='Evolving anchors'): v = np.ones(sh) while (v == 1).all(): # mutate until a change occurs (prevent duplicates) v = ((npr.random(sh) < mp) * npr.random() * npr.randn(*sh) * s + 1).clip(0.3, 3.0) # 98.6, 61.6 kg = (k.copy() * v).clip(min=2.0) - fg = fitness(wh, kg) + fg = fitness(kg) if fg > f: f, k = fg, kg.copy() - print_results(wh, k) - k = print_results(wh, k) + print_results(k) + k = print_results(k) return k From e185719bd795e33ffde909b2de8f36743acac374 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 4 Feb 2020 21:22:20 -0800 Subject: [PATCH 2037/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index ea262375..74bfe8e7 100755 --- a/models.py +++ b/models.py @@ -268,7 +268,7 @@ class Darknet(nn.Module): x = [torch.cat(x, 0) for x in zip(*output)] return x[0], torch.cat(x[1:3], 1) # scores, boxes: 3780x80, 3780x4 else: - io, p = list(zip(*output)) # inference output, training output + io, p = zip(*output) # inference output, training output return torch.cat(io, 1), p def fuse(self): From ec942bd23ce1b6998ce37af890f3da30068cad42 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 5 Feb 2020 20:27:01 -0800 Subject: [PATCH 2038/2595] updates --- train.py | 5 ++--- utils/gcp.sh | 12 ++++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 01c3107e..108051b7 100644 --- a/train.py +++ b/train.py @@ -297,9 +297,8 @@ def train(): # Print batch results mloss = (mloss * i + loss_items) / (i + 1) # update mean losses - mem = torch.cuda.memory_cached() / 1E9 if torch.cuda.is_available() else 0 # (GB) - s = ('%10s' * 2 + '%10.3g' * 6) % ( - '%g/%g' % (epoch, epochs - 1), '%.3gG' % mem, *mloss, len(targets), img_size) + mem = '%.3gG' % (torch.cuda.memory_cached() / 1E9 if torch.cuda.is_available() else 0) # (GB) + s = ('%10s' * 2 + '%10.3g' * 6) % ('%g/%g' % (epoch, epochs - 1), mem, *mloss, len(targets), img_size) pbar.set_description(s) # end batch ------------------------------------------------------------------------------------------------ diff --git a/utils/gcp.sh b/utils/gcp.sh index e918123d..07a5b100 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -366,6 +366,18 @@ n=20 && t=ultralytics/coco:v14 && sudo docker pull $t && sudo docker run -it --g n=21 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppe.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown n=22 && t=ultralytics/coco:v14 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 27 --batch 12 --accum 6 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown n=23 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=24 && t=ultralytics/coco:v24 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=25 && t=ultralytics/coco:v24 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 27 --batch 12 --accum 6 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=26 && t=ultralytics/coco:v24 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=27 && t=ultralytics/coco:v24 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=28 && t=ultralytics/coco:v24 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 273 --batch 12 --accum 6 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=29 && t=ultralytics/coco:v24 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 15 --accum 4 --weights '' --device 0 --cfg yolov4a.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=30 && t=ultralytics/coco:v24 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 273 --batch 12 --accum 6 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown + +n=31 && t=ultralytics/coco:v31 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppf.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=32 && t=ultralytics/coco:v31 && sudo docker pull $t && sudo docker run --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppg.cfg --nosave --bucket ult/coco --name $n --multi +n=33 && t=ultralytics/coco:v33 && sudo docker pull $t && sudo docker run --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppf.cfg --nosave --bucket ult/coco --name $n --multi +n=34 && t=ultralytics/coco:v33 && sudo docker pull $t && sudo docker run --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppg.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown # athena From d778bf3c7ac1f4aabb54fdb0e3b68e1d5923cde6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 5 Feb 2020 20:35:54 -0800 Subject: [PATCH 2039/2595] updates --- train.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/train.py b/train.py index 108051b7..dc82ceef 100644 --- a/train.py +++ b/train.py @@ -244,22 +244,6 @@ def train(): imgs = imgs.to(device).float() / 255.0 # uint8 to float32, 0 - 255 to 0.0 - 1.0 targets = targets.to(device) - # Multi-Scale training - if opt.multi_scale: - if ni / accumulate % 10 == 0: #  adjust (67% - 150%) every 10 batches - img_size = random.randrange(img_sz_min, img_sz_max + 1) * 32 - sf = img_size / max(imgs.shape[2:]) # scale factor - if sf != 1: - ns = [math.ceil(x * sf / 32.) * 32 for x in imgs.shape[2:]] # new shape (stretched to 32-multiple) - imgs = F.interpolate(imgs, size=ns, mode='bilinear', align_corners=False) - - # Plot images with bounding boxes - if ni == 0: - fname = 'train_batch%g.png' % i - plot_images(imgs=imgs, targets=targets, paths=paths, fname=fname) - if tb_writer: - tb_writer.add_image(fname, cv2.imread(fname)[:, :, ::-1], dataformats='HWC') - # Hyperparameter burn-in # n_burn = nb - 1 # min(nb // 5 + 1, 1000) # number of burn-in batches # if ni <= n_burn: @@ -271,6 +255,22 @@ def train(): # x['lr'] = hyp['lr0'] * g # x['weight_decay'] = hyp['weight_decay'] * g + # Plot images with bounding boxes + if ni == 0: + fname = 'train_batch%g.png' % i + plot_images(imgs=imgs, targets=targets, paths=paths, fname=fname) + if tb_writer: + tb_writer.add_image(fname, cv2.imread(fname)[:, :, ::-1], dataformats='HWC') + + # Multi-Scale training + if opt.multi_scale: + if ni / accumulate % 10 == 0: #  adjust (67% - 150%) every 10 batches + img_size = random.randrange(img_sz_min, img_sz_max + 1) * 32 + sf = img_size / max(imgs.shape[2:]) # scale factor + if sf != 1: + ns = [math.ceil(x * sf / 32.) * 32 for x in imgs.shape[2:]] # new shape (stretched to 32-multiple) + imgs = F.interpolate(imgs, size=ns, mode='bilinear', align_corners=False) + # Run model pred = model(imgs) From dca80f6f98cd0a440f846b1d590e55477076880b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 6 Feb 2020 16:13:10 -0800 Subject: [PATCH 2040/2595] updates --- utils/datasets.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index f83a17be..1f9b9e3f 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -370,7 +370,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing if not os.path.exists(Path(f).parent): os.makedirs(Path(f).parent) # make new output folder - b = x[1:] * np.array([w, h, w, h]) # box + b = x[1:] * [w, h, w, h] # box b[2:] = b[2:].max() # rectangle to square b[2:] = b[2:] * 1.3 + 30 # pad b = xywh2xyxy(b.reshape(-1, 4)).ravel().astype(np.int) @@ -731,7 +731,7 @@ def cutout(image, labels): return inter_area / box2_area # create random masks - scales = [0.5] * 1 # + [0.25] * 4 + [0.125] * 16 + [0.0625] * 64 + [0.03125] * 256 # image size fraction + scales = [0.5] * 1 + [0.25] * 2 + [0.125] * 4 + [0.0625] * 8 + [0.03125] * 16 # image size fraction for s in scales: mask_h = random.randint(1, int(h * s)) mask_w = random.randint(1, int(w * s)) @@ -743,14 +743,13 @@ def cutout(image, labels): ymax = min(h, ymin + mask_h) # apply random color mask - mask_color = [random.randint(0, 255) for _ in range(3)] - image[ymin:ymax, xmin:xmax] = mask_color + image[ymin:ymax, xmin:xmax] = [random.randint(64, 191) for _ in range(3)] # return unobscured labels if len(labels) and s > 0.03: box = np.array([xmin, ymin, xmax, ymax], dtype=np.float32) ioa = bbox_ioa(box, labels[:, 1:5]) # intersection over area - labels = labels[ioa < 0.90] # remove >90% obscured labels + labels = labels[ioa < 0.60] # remove >60% obscured labels return labels From 145ea67a2e9d2443174f535c6137e3b24cbcea3f Mon Sep 17 00:00:00 2001 From: Yonghye Kwon Date: Sat, 8 Feb 2020 02:14:55 +0900 Subject: [PATCH 2041/2595] modify h range clip range in hsv augmentation (#825) * h range clip range edit in hsv augmentation h range is [0., 179,] * Update datasets.py reduced indexing operations and used inplace clip for hsv. Two clips are used unfortunately (double clip of axis 0), but the overall effect should be improved speed. Co-authored-by: Glenn Jocher --- utils/datasets.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 1f9b9e3f..fee8ceab 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -530,8 +530,9 @@ def load_image(self, index): def augment_hsv(img, hgain=0.5, sgain=0.5, vgain=0.5): - x = (np.random.uniform(-1, 1, 3) * np.array([hgain, sgain, vgain]) + 1).astype(np.float32) # random gains - img_hsv = (cv2.cvtColor(img, cv2.COLOR_BGR2HSV) * x.reshape((1, 1, 3))).clip(None, 255).astype(np.uint8) + x = np.random.uniform(-1, 1, 3) * [hgain, sgain, vgain] + 1 # random gains + img_hsv = (cv2.cvtColor(img, cv2.COLOR_BGR2HSV) * x).clip(None, 255).astype(np.uint8) + np.clip(img_hsv[:, :, 0], None, 179, out=img_hsv[:, :, 0]) # inplace hue clip (0 - 179 deg) cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) # no return needed From 106b1961b620d8479f52736e817a0b7f68f4912b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 7 Feb 2020 10:53:09 -0800 Subject: [PATCH 2042/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index dc82ceef..46bcdd11 100644 --- a/train.py +++ b/train.py @@ -264,7 +264,7 @@ def train(): # Multi-Scale training if opt.multi_scale: - if ni / accumulate % 10 == 0: #  adjust (67% - 150%) every 10 batches + if ni / accumulate % 1 == 0: #  adjust (67% - 150%) every 10 batches img_size = random.randrange(img_sz_min, img_sz_max + 1) * 32 sf = img_size / max(imgs.shape[2:]) # scale factor if sf != 1: From 58f04daec6a88a06cf667049bb53d44bbbf8fd57 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 8 Feb 2020 09:47:01 -0800 Subject: [PATCH 2043/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9e8d8ad6..8018c0be 100755 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ The https://github.com/ultralytics/yolov3 repo contains inference and training c # Requirements Python 3.7 or later with all of the `pip install -U -r requirements.txt` packages including: -- `torch >= 1.3` +- `torch >= 1.4` - `opencv-python` - `Pillow` From daddc560f6481687adc1e1eac0e566e0ab76aefa Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 8 Feb 2020 09:48:28 -0800 Subject: [PATCH 2044/2595] updates --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8018c0be..cdd8850a 100755 --- a/README.md +++ b/README.md @@ -32,8 +32,8 @@ Python 3.7 or later with all of the `pip install -U -r requirements.txt` package - `Pillow` All dependencies are included in the associated docker images. Docker requirements are: -- `nvidia-docker` -- Nvidia Driver Version >= 440.44 +- Nvidia Driver >= 440.44 +- Docker Engine - CE >= 19.03 # Tutorials From ca4960f7ff7667995ce1df3413a1d618bc8f24c9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 8 Feb 2020 13:28:47 -0800 Subject: [PATCH 2045/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 61890c2e..85dd3658 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -878,7 +878,7 @@ def apply_classifier(x, model, img, im0): def fitness(x): # Returns fitness (for use with results.txt or evolve.txt) - w = [0.0, 0.01, 0.99, 0.0] # weights for [P, R, mAP, F1]@0.5 or [P, R, mAP@0.5:0.95, mAP@0.5] + w = [0.0, 0.01, 0.99, 0.00] # weights for [P, R, mAP, F1]@0.5 or [P, R, mAP@0.5, mAP@0.5:0.95] return (x[:, :4] * w).sum(1) From 8bc7648b388c0b9b4946c425e653bcebee4a3d59 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 8 Feb 2020 21:51:31 -0800 Subject: [PATCH 2046/2595] updates --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 74bfe8e7..2d267a9c 100755 --- a/models.py +++ b/models.py @@ -177,7 +177,7 @@ class YOLOLayer(nn.Module): return p elif ONNX_EXPORT: - # Constants CAN NOT BE BROADCAST, ensure correct shape! + # Avoid broadcasting for ANE operations m = self.na * self.nx * self.ny grid_xy = self.grid_xy.repeat((1, self.na, 1, 1, 1)).view(m, 2) anchor_wh = self.anchor_wh.repeat((1, 1, self.nx, self.ny, 1)).view(m, 2) / self.ng @@ -187,7 +187,7 @@ class YOLOLayer(nn.Module): wh = torch.exp(p[:, 2:4]) * anchor_wh # width, height p_cls = torch.sigmoid(p[:, 4:5]) if self.nc == 1 else \ torch.sigmoid(p[:, 5:self.no]) * torch.sigmoid(p[:, 4:5]) # conf - return p_cls, xy / self.ng, wh + return p_cls, xy / self.ng.repeat((m, 1)), wh else: # inference # s = 1.5 # scale_xy (pxy = pxy * s - (s - 1) / 2) From 8bc9f56564f94bc59dab5a2f22935bbdbeb5774e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 9 Feb 2020 09:12:45 -0800 Subject: [PATCH 2047/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 46bcdd11..abf547b5 100644 --- a/train.py +++ b/train.py @@ -264,7 +264,7 @@ def train(): # Multi-Scale training if opt.multi_scale: - if ni / accumulate % 1 == 0: #  adjust (67% - 150%) every 10 batches + if ni / accumulate % 1 == 0: #  adjust img_size (67% - 150%) every 1 batch img_size = random.randrange(img_sz_min, img_sz_max + 1) * 32 sf = img_size / max(imgs.shape[2:]) # scale factor if sf != 1: From 0958d81580a8a0086ac3326feeba4f6db20b70a5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 9 Feb 2020 11:17:31 -0800 Subject: [PATCH 2048/2595] updates --- models.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 2d267a9c..edc3bf15 100755 --- a/models.py +++ b/models.py @@ -179,15 +179,16 @@ class YOLOLayer(nn.Module): elif ONNX_EXPORT: # Avoid broadcasting for ANE operations m = self.na * self.nx * self.ny + ng = 1 / self.ng.repeat((m, 1)) grid_xy = self.grid_xy.repeat((1, self.na, 1, 1, 1)).view(m, 2) - anchor_wh = self.anchor_wh.repeat((1, 1, self.nx, self.ny, 1)).view(m, 2) / self.ng + anchor_wh = self.anchor_wh.repeat((1, 1, self.nx, self.ny, 1)).view(m, 2) * ng p = p.view(m, self.no) xy = torch.sigmoid(p[:, 0:2]) + grid_xy # x, y wh = torch.exp(p[:, 2:4]) * anchor_wh # width, height p_cls = torch.sigmoid(p[:, 4:5]) if self.nc == 1 else \ torch.sigmoid(p[:, 5:self.no]) * torch.sigmoid(p[:, 4:5]) # conf - return p_cls, xy / self.ng.repeat((m, 1)), wh + return p_cls, xy * ng, wh else: # inference # s = 1.5 # scale_xy (pxy = pxy * s - (s - 1) / 2) From ca22b5e40b1f845ef60683f0ba9d164b04f12f30 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Feb 2020 14:27:31 -0800 Subject: [PATCH 2049/2595] save git info in docker images --- .dockerignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.dockerignore b/.dockerignore index a3dab683..5a2495bc 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,5 +1,5 @@ # Repo-specific DockerIgnore ------------------------------------------------------------------------------------------- -.git +# .git .cache .idea runs From 11bcd0f9885ce548c7c123c611921fe63bebe592 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Feb 2020 15:19:06 -0800 Subject: [PATCH 2050/2595] updates --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index b44772d1..baccd70b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -47,10 +47,10 @@ COPY . /usr/src/app # t=ultralytics/yolov3:v0 && sudo docker build -t $t . && sudo docker push $t # Run -# t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo docker run -it $t +# t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo docker run -it $t bash # Pull and Run with local directory access -# t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo docker run -it -v "$(pwd)"/coco:/usr/src/coco $t +# t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo docker run -it -v "$(pwd)"/coco:/usr/src/coco $t bash # Kill all # sudo docker kill "$(sudo docker ps -q)" From 740cd177dc5d1832c447ab85a6794720ea8e76da Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 14 Feb 2020 21:26:16 -0800 Subject: [PATCH 2051/2595] updates --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index cdd8850a..6dba20e4 100755 --- a/README.md +++ b/README.md @@ -148,10 +148,10 @@ python3 test.py --weights ... --cfg ... |Size |COCO mAP
@0.5...0.95 |COCO mAP
@0.5 --- | --- | --- | --- -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |320 |14.0
28.7
30.5
**35.5** |29.1
51.8
52.3
**55.4** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |416 |16.0
31.2
33.9
**39.2** |33.0
55.4
56.9
**59.9** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |512 |16.6
32.7
35.6
**40.5** |34.9
57.7
59.5
**61.4** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
33.1
37.0
**41.1** |35.4
58.2
60.7
**61.5** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |320 |14.0
28.7
30.5
**35.6** |29.1
51.8
52.3
**55.4** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |416 |16.0
31.2
33.9
**39.1** |33.0
55.4
56.9
**59.6** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |512 |16.6
32.7
35.6
**40.6** |34.9
57.7
59.5
**61.4** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
33.1
37.0
**41.1** |35.4
58.2
60.7
**61.7** ```bash $ python3 test.py --img-size 608 --iou-thr 0.6 --weights ultralytics68.pt --cfg yolov3-spp.cfg From 57798278ad8d21653cc9f7ea884eb6fe3ed87d0d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 14 Feb 2020 21:32:29 -0800 Subject: [PATCH 2052/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 889ca689..d3eff739 100644 --- a/detect.py +++ b/detect.py @@ -45,7 +45,7 @@ def detect(save_img=False): if ONNX_EXPORT: model.fuse() img = torch.zeros((1, 3) + img_size) # (1, 3, 320, 192) - torch.onnx.export(model, img, 'weights/export.onnx', verbose=False, opset_version=10) + torch.onnx.export(model, img, 'weights/export.onnx', verbose=False, opset_version=11) # Validate exported model import onnx From e840b7c781fd37e465bf95635ca9551862af59ea Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 16 Feb 2020 23:12:07 -0800 Subject: [PATCH 2053/2595] add yolov3-spp-ultralytics.pt --- README.md | 42 +++++++++++++++++++++--------------------- detect.py | 2 +- models.py | 3 ++- test.py | 2 +- train.py | 2 +- utils/utils.py | 2 +- 6 files changed, 27 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 6dba20e4..9c083dd9 100755 --- a/README.md +++ b/README.md @@ -139,39 +139,39 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' # mAP ```bash -python3 test.py --weights ... --cfg ... +$ python3 test.py --cfg yolov3-spp.cfg --weights yolov3-spp-ultralytics.pt ``` - mAP@0.5 run at `--iou-thr 0.5`, mAP@0.5...0.95 run at `--iou-thr 0.7` -- YOLOv3-SPP ultralytics is `ultralytics68.pt` with `yolov3-spp.cfg` - Darknet results: https://arxiv.org/abs/1804.02767 |Size |COCO mAP
@0.5...0.95 |COCO mAP
@0.5 --- | --- | --- | --- -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |320 |14.0
28.7
30.5
**35.6** |29.1
51.8
52.3
**55.4** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |416 |16.0
31.2
33.9
**39.1** |33.0
55.4
56.9
**59.6** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |512 |16.6
32.7
35.6
**40.6** |34.9
57.7
59.5
**61.4** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**YOLOv3-SPP ultralytics** |608 |16.6
33.1
37.0
**41.1** |35.4
58.2
60.7
**61.7** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |320 |14.0
28.7
30.5
**36.3** |29.1
51.8
52.3
**55.5** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |416 |16.0
31.2
33.9
**39.8** |33.0
55.4
56.9
**59.6** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |512 |16.6
32.7
35.6
**41.3** |34.9
57.7
59.5
**61.3** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |608 |16.6
33.1
37.0
**41.7** |35.4
58.2
60.7
**61.5** ```bash -$ python3 test.py --img-size 608 --iou-thr 0.6 --weights ultralytics68.pt --cfg yolov3-spp.cfg +$ python3 test.py --cfg yolov3-spp.cfg --weights yolov3-spp-ultralytics.pt --img 608 -Namespace(batch_size=32, cfg='yolov3-spp.cfg', conf_thres=0.001, data='data/coco2014.data', device='', img_size=608, iou_thres=0.6, save_json=True, task='test', weights='ultralytics68.pt') -Using CUDA device0 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', total_memory=16130MB) - Class Images Targets P R mAP@0.5 F1: 100% 157/157 [03:30<00:00, 1.16it/s] - all 5e+03 3.51e+04 0.0353 0.891 0.606 0.0673 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.409 +Namespace(batch_size=32, cfg='yolov3-spp.cfg', conf_thres=0.001, data='data/coco2014.data', device='', img_size=608, iou_thres=0.6, save_json=True, single_cls=False, task='test', weights='last54.pt') +Using CUDA device0 _CudaDeviceProperties(name='Tesla P100-PCIE-16GB', total_memory=16280MB) + + Class Images Targets P R mAP@0.5 F1: 100% 157/157 [04:25<00:00, 1.04it/s] + all 5e+03 3.51e+04 0.0467 0.886 0.607 0.0875 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.415 Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.615 - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.437 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.242 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.448 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.519 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.337 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.557 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.612 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.438 + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.443 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.245 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.458 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.531 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.341 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.559 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.611 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.441 Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.658 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.746 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.748 ``` # Reproduce Our Results diff --git a/detect.py b/detect.py index d3eff739..ca6a3873 100644 --- a/detect.py +++ b/detect.py @@ -159,7 +159,7 @@ if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path') parser.add_argument('--names', type=str, default='data/coco.names', help='*.names path') - parser.add_argument('--weights', type=str, default='weights/ultralytics68.pt', help='path to weights file') + parser.add_argument('--weights', type=str, default='weights/yolov3-spp-ultralytics.pt', help='weights path') parser.add_argument('--source', type=str, default='data/samples', help='source') # input file/folder, 0 for webcam parser.add_argument('--output', type=str, default='output', help='output folder') # output folder parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') diff --git a/models.py b/models.py index edc3bf15..65f95450 100755 --- a/models.py +++ b/models.py @@ -434,7 +434,8 @@ def attempt_download(weights): 'darknet53.conv.74': '1WUVBid-XuoUBmvzBVUCBl_ELrzqwA8dJ', 'yolov3-tiny.conv.15': '1Bw0kCpplxUqyRYAJr9RY9SGnOJbo9nEj', 'ultralytics49.pt': '158g62Vs14E3aj7oPVPuEnNZMKFNgGyNq', - 'ultralytics68.pt': '1Jm8kqnMdMGUUxGo8zMFZMJ0eaPwLkxSG'} + 'ultralytics68.pt': '1Jm8kqnMdMGUUxGo8zMFZMJ0eaPwLkxSG', + 'yolov3-spp-ultralytics.pt': '1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4'} file = Path(weights).name if file in d: diff --git a/test.py b/test.py index a5cec3b4..e1a80967 100644 --- a/test.py +++ b/test.py @@ -210,7 +210,7 @@ if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path') parser.add_argument('--data', type=str, default='data/coco2014.data', help='*.data path') - parser.add_argument('--weights', type=str, default='weights/yolov3-spp.weights', help='path to weights file') + parser.add_argument('--weights', type=str, default='weights/yolov3-spp-ultralytics.pt', help='weights path') parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') diff --git a/train.py b/train.py index abf547b5..cb17b946 100644 --- a/train.py +++ b/train.py @@ -406,7 +406,7 @@ if __name__ == '__main__': parser.add_argument('--evolve', action='store_true', help='evolve hyperparameters') parser.add_argument('--bucket', type=str, default='', help='gsutil bucket') parser.add_argument('--cache-images', action='store_true', help='cache images for faster training') - parser.add_argument('--weights', type=str, default='weights/ultralytics68.pt', help='initial weights') + parser.add_argument('--weights', type=str, default='weights/yolov3-spp-ultralytics.pt', help='initial weights path') parser.add_argument('--arc', type=str, default='default', help='yolo architecture') # default, uCE, uBCE parser.add_argument('--name', default='', help='renames results.txt to results_name.txt if supplied') parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1 or cpu)') diff --git a/utils/utils.py b/utils/utils.py index 85dd3658..f877a7ce 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -369,7 +369,7 @@ def compute_loss(p, targets, model, giou_flag=True): # predictions, targets, mo tcls, tbox, indices, anchor_vec = build_targets(model, targets) h = model.hyp # hyperparameters arc = model.arc # # (default, uCE, uBCE) detection architectures - red = 'sum' # Loss reduction (sum or mean) + red = 'mean' # Loss reduction (sum or mean) # Define criteria BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']]), reduction=red) From cca620208eff32f40c857a2b6ea5d6bd7919264e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 16 Feb 2020 23:13:34 -0800 Subject: [PATCH 2054/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index cb17b946..917fbda8 100644 --- a/train.py +++ b/train.py @@ -25,7 +25,7 @@ results_file = 'results.txt' hyp = {'giou': 3.54, # giou loss gain 'cls': 37.4, # cls loss gain 'cls_pw': 1.0, # cls BCELoss positive_weight - 'obj': 49.5, # obj loss gain (*=img_size/320 if img_size != 320) + 'obj': 64.3, # obj loss gain (*=img_size/320 if img_size != 320) 'obj_pw': 1.0, # obj BCELoss positive_weight 'iou_t': 0.225, # iou training threshold 'lr0': 0.00579, # initial learning rate (SGD=5E-3, Adam=5E-4) From 49d47adf17419fd8b9df6e5eeeed5870f19779bd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 16 Feb 2020 23:30:14 -0800 Subject: [PATCH 2055/2595] updates --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index ca6a3873..22f927c2 100644 --- a/detect.py +++ b/detect.py @@ -164,7 +164,7 @@ if __name__ == '__main__': parser.add_argument('--output', type=str, default='output', help='output folder') # output folder parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.3, help='object confidence threshold') - parser.add_argument('--iou-thres', type=float, default=0.5, help='IOU threshold for NMS') + parser.add_argument('--iou-thres', type=float, default=0.6, help='IOU threshold for NMS') parser.add_argument('--fourcc', type=str, default='mp4v', help='output video codec (verify ffmpeg support)') parser.add_argument('--half', action='store_true', help='half precision FP16 inference') parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') From aa45dc05b349df002db601ab696c47b3a9094c6b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 16 Feb 2020 23:57:39 -0800 Subject: [PATCH 2056/2595] updates --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9c083dd9..7aa89f1e 100755 --- a/README.md +++ b/README.md @@ -178,9 +178,9 @@ Using CUDA device0 _CudaDeviceProperties(name='Tesla P100-PCIE-16GB', total_memo This command trains `yolov3-spp.cfg` from scratch to our mAP above. Training takes about one week on a 2080Ti. ```bash -$ python3 train.py --weights '' --cfg yolov3-spp.cfg --epochs 273 --batch 16 --accum 4 --multi --pre +$ python3 train.py --weights '' --cfg yolov3-spp.cfg --epochs 273 --batch 16 --accum 4 --multi ``` - + # Reproduce Our Environment From 426d5b82c645b26ec7bbf5de35a2b447ca9bd596 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 17 Feb 2020 12:36:11 -0800 Subject: [PATCH 2057/2595] updates --- models.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/models.py b/models.py index 65f95450..69bf0c9b 100755 --- a/models.py +++ b/models.py @@ -54,10 +54,10 @@ def create_modules(module_defs, img_size, arc): elif mdef['type'] == 'upsample': if ONNX_EXPORT: # explicitly state size, avoid scale_factor - g = (yolo_index + 1) * 2 # gain - modules = nn.Upsample(size=(10 * g, 6 * g), mode='nearest') # assume img_size = (320, 192) + g = (yolo_index + 1) * 2 / 32 # gain + modules = nn.Upsample(size=tuple(int(x * g) for x in img_size)) # img_size = (320, 192) else: - modules = nn.Upsample(scale_factor=int(mdef['stride']), mode='nearest') + modules = nn.Upsample(scale_factor=int(mdef['stride'])) elif mdef['type'] == 'route': # nn.Sequential() placeholder for 'route' layer layers = [int(x) for x in mdef['layers'].split(',')] From 9880dcd6cde81d277486b452dba266b23eeae0e6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 17 Feb 2020 15:10:11 -0800 Subject: [PATCH 2058/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 69bf0c9b..a48f35d2 100755 --- a/models.py +++ b/models.py @@ -67,8 +67,8 @@ def create_modules(module_defs, img_size, arc): # modules = nn.Upsample(scale_factor=1/float(mdef[i+1]['stride']), mode='nearest') # reorg3d elif mdef['type'] == 'shortcut': # nn.Sequential() placeholder for 'shortcut' layer - filters = output_filters[int(mdef['from'])] layer = int(mdef['from']) + filters = output_filters[layer] routs.extend([i + layer if layer < 0 else layer]) elif mdef['type'] == 'reorg3d': # yolov3-spp-pan-scale From 45ce01f8597dfb8d26a6d41966c88e1e346234a2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 17 Feb 2020 15:28:11 -0800 Subject: [PATCH 2059/2595] updates --- models.py | 19 ++++++++++--------- utils/parse_config.py | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/models.py b/models.py index a48f35d2..f8ed9449 100755 --- a/models.py +++ b/models.py @@ -67,9 +67,9 @@ def create_modules(module_defs, img_size, arc): # modules = nn.Upsample(scale_factor=1/float(mdef[i+1]['stride']), mode='nearest') # reorg3d elif mdef['type'] == 'shortcut': # nn.Sequential() placeholder for 'shortcut' layer - layer = int(mdef['from']) - filters = output_filters[layer] - routs.extend([i + layer if layer < 0 else layer]) + layers = [int(x) for x in mdef['from'].split(',')] + filters = output_filters[layers[0]] + routs.extend([i + l if l < 0 else l for l in layers]) elif mdef['type'] == 'reorg3d': # yolov3-spp-pan-scale # torch.Size([16, 128, 104, 104]) @@ -239,10 +239,10 @@ class Darknet(nn.Module): mtype = mdef['type'] if mtype in ['convolutional', 'upsample', 'maxpool']: x = module(x) - elif mtype == 'route': + elif mtype == 'route': # concat layers = [int(x) for x in mdef['layers'].split(',')] if verbose: - print('route concatenating %s' % ([layer_outputs[i].shape for i in layers])) + print('route/concatenate %s' % ([layer_outputs[i].shape for i in layers])) if len(layers) == 1: x = layer_outputs[layers[0]] else: @@ -252,11 +252,12 @@ class Darknet(nn.Module): layer_outputs[layers[1]] = F.interpolate(layer_outputs[layers[1]], scale_factor=[0.5, 0.5]) x = torch.cat([layer_outputs[i] for i in layers], 1) # print(''), [print(layer_outputs[i].shape) for i in layers], print(x.shape) - elif mtype == 'shortcut': - j = int(mdef['from']) + elif mtype == 'shortcut': # sum + layers = [int(x) for x in mdef['from'].split(',')] if verbose: - print('shortcut adding layer %g-%s to %g-%s' % (j, layer_outputs[j].shape, i - 1, x.shape)) - x = x + layer_outputs[j] + print('shortcut/add %s' % ([layer_outputs[i].shape for i in layers])) + for j in layers: + x = x + layer_outputs[j] elif mtype == 'yolo': output.append(module(x, img_size)) layer_outputs.append(x if i in self.routs else []) diff --git a/utils/parse_config.py b/utils/parse_config.py index 5d3c20fb..2516388a 100644 --- a/utils/parse_config.py +++ b/utils/parse_config.py @@ -33,7 +33,7 @@ def parse_model_cfg(path): # Check all fields are supported supported = ['type', 'batch_normalize', 'filters', 'size', 'stride', 'pad', 'activation', 'layers', 'groups', 'from', 'mask', 'anchors', 'classes', 'num', 'jitter', 'ignore_thresh', 'truth_thresh', 'random', - 'stride_x', 'stride_y'] + 'stride_x', 'stride_y', 'weights_type', 'weights_normalization'] f = [] # fields for x in mdefs[1:]: From 4fa0a32d05fff126dcd171109b5ca1d2f3b37cb0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 17 Feb 2020 17:02:37 -0800 Subject: [PATCH 2060/2595] updates --- models.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/models.py b/models.py index f8ed9449..2c55c74c 100755 --- a/models.py +++ b/models.py @@ -70,6 +70,7 @@ def create_modules(module_defs, img_size, arc): layers = [int(x) for x in mdef['from'].split(',')] filters = output_filters[layers[0]] routs.extend([i + l if l < 0 else l for l in layers]) + # modules = weightedFeatureFusion(layers=layers) elif mdef['type'] == 'reorg3d': # yolov3-spp-pan-scale # torch.Size([16, 128, 104, 104]) @@ -117,6 +118,21 @@ def create_modules(module_defs, img_size, arc): return module_list, routs +class weightedFeatureFusion(nn.Module): # weighted sum of layers https://arxiv.org/abs/1911.09070 + def __init__(self, layers): + super(weightedFeatureFusion, self).__init__() + self.n = len(layers) # number of layers + self.layers = layers # layer indices + self.w = torch.nn.Parameter(torch.zeros(self.n + 1)) # layer weights + + def forward(self, x, outputs): + w = torch.sigmoid(self.w) * (2 / self.n) # sigmoid weights (0-1) + x = x * w[0] + for i in range(self.n): + x = x + outputs[self.layers[i]] * w[i + 1] + return x + + class SwishImplementation(torch.autograd.Function): @staticmethod def forward(ctx, i): @@ -253,6 +269,7 @@ class Darknet(nn.Module): x = torch.cat([layer_outputs[i] for i in layers], 1) # print(''), [print(layer_outputs[i].shape) for i in layers], print(x.shape) elif mtype == 'shortcut': # sum + # x = module(x, layer_outputs) # weightedFeatureFusion() layers = [int(x) for x in mdef['from'].split(',')] if verbose: print('shortcut/add %s' % ([layer_outputs[i].shape for i in layers])) From a971b33b746807e37c32bec988b74d5c50278fff Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 17 Feb 2020 17:34:40 -0800 Subject: [PATCH 2061/2595] updates --- utils/parse_config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/parse_config.py b/utils/parse_config.py index 2516388a..1a5d1126 100644 --- a/utils/parse_config.py +++ b/utils/parse_config.py @@ -33,7 +33,7 @@ def parse_model_cfg(path): # Check all fields are supported supported = ['type', 'batch_normalize', 'filters', 'size', 'stride', 'pad', 'activation', 'layers', 'groups', 'from', 'mask', 'anchors', 'classes', 'num', 'jitter', 'ignore_thresh', 'truth_thresh', 'random', - 'stride_x', 'stride_y', 'weights_type', 'weights_normalization'] + 'stride_x', 'stride_y', 'weights_type', 'weights_normalization', 'scale_x_y'] f = [] # fields for x in mdefs[1:]: From b022648716f5dbb0549747357928c0d865da2a1b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 18 Feb 2020 20:13:18 -0800 Subject: [PATCH 2062/2595] updates --- models.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/models.py b/models.py index 2c55c74c..abfbf98a 100755 --- a/models.py +++ b/models.py @@ -118,19 +118,21 @@ def create_modules(module_defs, img_size, arc): return module_list, routs -class weightedFeatureFusion(nn.Module): # weighted sum of layers https://arxiv.org/abs/1911.09070 +class weightedFeatureFusion(nn.Module): # weighted sum of 2 or more layers https://arxiv.org/abs/1911.09070 def __init__(self, layers): super(weightedFeatureFusion, self).__init__() - self.n = len(layers) # number of layers + self.n = len(layers) + 1 # number of layers self.layers = layers # layer indices - self.w = torch.nn.Parameter(torch.zeros(self.n + 1)) # layer weights + self.w = torch.nn.Parameter(torch.zeros(self.n)) # layer weights def forward(self, x, outputs): w = torch.sigmoid(self.w) * (2 / self.n) # sigmoid weights (0-1) - x = x * w[0] - for i in range(self.n): - x = x + outputs[self.layers[i]] * w[i + 1] - return x + if self.n == 2: + return x * w[0] + outputs[self.layers[0]] * w[1] + elif self.n == 3: + return x * w[0] + outputs[self.layers[0]] * w[1] + outputs[self.layers[1]] * w[2] + else: + raise ValueError('weightedFeatureFusion() supports up to 3 layer inputs, %g attempted' % self.n) class SwishImplementation(torch.autograd.Function): From ddd892dc205c36c029ac9272e92be56fe654415b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 18 Feb 2020 21:04:58 -0800 Subject: [PATCH 2063/2595] updates --- utils/parse_config.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/parse_config.py b/utils/parse_config.py index 1a5d1126..8f2a6773 100644 --- a/utils/parse_config.py +++ b/utils/parse_config.py @@ -33,7 +33,8 @@ def parse_model_cfg(path): # Check all fields are supported supported = ['type', 'batch_normalize', 'filters', 'size', 'stride', 'pad', 'activation', 'layers', 'groups', 'from', 'mask', 'anchors', 'classes', 'num', 'jitter', 'ignore_thresh', 'truth_thresh', 'random', - 'stride_x', 'stride_y', 'weights_type', 'weights_normalization', 'scale_x_y'] + 'stride_x', 'stride_y', 'weights_type', 'weights_normalization', 'scale_x_y', 'beta_nms', 'nms_kind', + 'iou_loss', 'iou_normalizer', 'cls_normalizer', 'iou_thresh'] f = [] # fields for x in mdefs[1:]: From f4a9e5cd5839d00163d135be0ea8c53984d864d8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 19 Feb 2020 12:59:56 -0800 Subject: [PATCH 2064/2595] updates --- models.py | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/models.py b/models.py index abfbf98a..f425a9e9 100755 --- a/models.py +++ b/models.py @@ -70,7 +70,7 @@ def create_modules(module_defs, img_size, arc): layers = [int(x) for x in mdef['from'].split(',')] filters = output_filters[layers[0]] routs.extend([i + l if l < 0 else l for l in layers]) - # modules = weightedFeatureFusion(layers=layers) + modules = weightedFeatureFusion(layers=layers, weight='weights_type' in mdef) elif mdef['type'] == 'reorg3d': # yolov3-spp-pan-scale # torch.Size([16, 128, 104, 104]) @@ -119,20 +119,26 @@ def create_modules(module_defs, img_size, arc): class weightedFeatureFusion(nn.Module): # weighted sum of 2 or more layers https://arxiv.org/abs/1911.09070 - def __init__(self, layers): + def __init__(self, layers, weight=False): super(weightedFeatureFusion, self).__init__() self.n = len(layers) + 1 # number of layers self.layers = layers # layer indices - self.w = torch.nn.Parameter(torch.zeros(self.n)) # layer weights + self.weight = weight # apply weights boolean + if weight: + self.w = torch.nn.Parameter(torch.zeros(self.n)) # layer weights def forward(self, x, outputs): - w = torch.sigmoid(self.w) * (2 / self.n) # sigmoid weights (0-1) - if self.n == 2: - return x * w[0] + outputs[self.layers[0]] * w[1] - elif self.n == 3: - return x * w[0] + outputs[self.layers[0]] * w[1] + outputs[self.layers[1]] * w[2] + if self.weight: + w = torch.sigmoid(self.w) * (2 / self.n) # sigmoid weights (0-1) + if self.n == 2: + return x * w[0] + outputs[self.layers[0]] * w[1] + elif self.n == 3: + return x * w[0] + outputs[self.layers[0]] * w[1] + outputs[self.layers[1]] * w[2] else: - raise ValueError('weightedFeatureFusion() supports up to 3 layer inputs, %g attempted' % self.n) + if self.n == 2: + return x + outputs[self.layers[0]] + elif self.n == 3: + return x + outputs[self.layers[0]] + outputs[self.layers[1]] class SwishImplementation(torch.autograd.Function): @@ -257,6 +263,10 @@ class Darknet(nn.Module): mtype = mdef['type'] if mtype in ['convolutional', 'upsample', 'maxpool']: x = module(x) + elif mtype == 'shortcut': # sum + x = module(x, layer_outputs) # weightedFeatureFusion() + if verbose: + print('shortcut/add %s' % ([layer_outputs[i].shape for i in module.layers])) elif mtype == 'route': # concat layers = [int(x) for x in mdef['layers'].split(',')] if verbose: @@ -270,25 +280,18 @@ class Darknet(nn.Module): layer_outputs[layers[1]] = F.interpolate(layer_outputs[layers[1]], scale_factor=[0.5, 0.5]) x = torch.cat([layer_outputs[i] for i in layers], 1) # print(''), [print(layer_outputs[i].shape) for i in layers], print(x.shape) - elif mtype == 'shortcut': # sum - # x = module(x, layer_outputs) # weightedFeatureFusion() - layers = [int(x) for x in mdef['from'].split(',')] - if verbose: - print('shortcut/add %s' % ([layer_outputs[i].shape for i in layers])) - for j in layers: - x = x + layer_outputs[j] elif mtype == 'yolo': output.append(module(x, img_size)) layer_outputs.append(x if i in self.routs else []) if verbose: print(i, x.shape) - if self.training: + if self.training: # train return output - elif ONNX_EXPORT: + elif ONNX_EXPORT: # export x = [torch.cat(x, 0) for x in zip(*output)] return x[0], torch.cat(x[1:3], 1) # scores, boxes: 3780x80, 3780x4 - else: + else: # test io, p = zip(*output) # inference output, training output return torch.cat(io, 1), p From a9cbc28214f8022a096297ffe4fd0011fdd3da78 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 19 Feb 2020 14:57:58 -0800 Subject: [PATCH 2065/2595] updates --- models.py | 45 ++++++++++++++++++++------------------------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/models.py b/models.py index f425a9e9..5585c1d2 100755 --- a/models.py +++ b/models.py @@ -264,9 +264,9 @@ class Darknet(nn.Module): if mtype in ['convolutional', 'upsample', 'maxpool']: x = module(x) elif mtype == 'shortcut': # sum - x = module(x, layer_outputs) # weightedFeatureFusion() if verbose: - print('shortcut/add %s' % ([layer_outputs[i].shape for i in module.layers])) + print('shortcut/add %s + %s' % (x.shape, [layer_outputs[i].shape for i in module.layers])) + x = module(x, layer_outputs) # weightedFeatureFusion() elif mtype == 'route': # concat layers = [int(x) for x in mdef['layers'].split(',')] if verbose: @@ -354,38 +354,33 @@ def load_darknet_weights(self, weights, cutoff=-1): ptr = 0 for i, (mdef, module) in enumerate(zip(self.module_defs[:cutoff], self.module_list[:cutoff])): if mdef['type'] == 'convolutional': - conv_layer = module[0] + conv = module[0] if mdef['batch_normalize']: # Load BN bias, weights, running mean and running variance - bn_layer = module[1] - num_b = bn_layer.bias.numel() # Number of biases + bn = module[1] + nb = bn.bias.numel() # number of biases # Bias - bn_b = torch.from_numpy(weights[ptr:ptr + num_b]).view_as(bn_layer.bias) - bn_layer.bias.data.copy_(bn_b) - ptr += num_b + bn.bias.data.copy_(torch.from_numpy(weights[ptr:ptr + nb]).view_as(bn.bias)) + ptr += nb # Weight - bn_w = torch.from_numpy(weights[ptr:ptr + num_b]).view_as(bn_layer.weight) - bn_layer.weight.data.copy_(bn_w) - ptr += num_b + bn.weight.data.copy_(torch.from_numpy(weights[ptr:ptr + nb]).view_as(bn.weight)) + ptr += nb # Running Mean - bn_rm = torch.from_numpy(weights[ptr:ptr + num_b]).view_as(bn_layer.running_mean) - bn_layer.running_mean.data.copy_(bn_rm) - ptr += num_b + bn.running_mean.data.copy_(torch.from_numpy(weights[ptr:ptr + nb]).view_as(bn.running_mean)) + ptr += nb # Running Var - bn_rv = torch.from_numpy(weights[ptr:ptr + num_b]).view_as(bn_layer.running_var) - bn_layer.running_var.data.copy_(bn_rv) - ptr += num_b + bn.running_var.data.copy_(torch.from_numpy(weights[ptr:ptr + nb]).view_as(bn.running_var)) + ptr += nb else: # Load conv. bias - num_b = conv_layer.bias.numel() - conv_b = torch.from_numpy(weights[ptr:ptr + num_b]).view_as(conv_layer.bias) - conv_layer.bias.data.copy_(conv_b) - ptr += num_b + nb = conv.bias.numel() + conv_b = torch.from_numpy(weights[ptr:ptr + nb]).view_as(conv.bias) + conv.bias.data.copy_(conv_b) + ptr += nb # Load conv. weights - num_w = conv_layer.weight.numel() - conv_w = torch.from_numpy(weights[ptr:ptr + num_w]).view_as(conv_layer.weight) - conv_layer.weight.data.copy_(conv_w) - ptr += num_w + nw = conv.weight.numel() # number of weights + conv.weight.data.copy_(torch.from_numpy(weights[ptr:ptr + nw]).view_as(conv.weight)) + ptr += nw def save_weights(self, path='model.weights', cutoff=-1): From 00862e47ef0822914b1458eaad9d5909482ba6f8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 19 Feb 2020 15:16:00 -0800 Subject: [PATCH 2066/2595] updates --- models.py | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/models.py b/models.py index 5585c1d2..3e5947f4 100755 --- a/models.py +++ b/models.py @@ -254,7 +254,7 @@ class Darknet(nn.Module): def forward(self, x, var=None): img_size = x.shape[-2:] - output, layer_outputs = [], [] + yolo_out, out = [], [] verbose = False if verbose: print('0', x.shape) @@ -265,34 +265,34 @@ class Darknet(nn.Module): x = module(x) elif mtype == 'shortcut': # sum if verbose: - print('shortcut/add %s + %s' % (x.shape, [layer_outputs[i].shape for i in module.layers])) - x = module(x, layer_outputs) # weightedFeatureFusion() + print('shortcut/add %s + %s' % (list(x.shape), [list(out[i].shape) for i in module.layers])) + x = module(x, out) # weightedFeatureFusion() elif mtype == 'route': # concat layers = [int(x) for x in mdef['layers'].split(',')] if verbose: - print('route/concatenate %s' % ([layer_outputs[i].shape for i in layers])) + print('route/concatenate %s + %s' % (list(x.shape), [list(out[i].shape) for i in layers])) if len(layers) == 1: - x = layer_outputs[layers[0]] + x = out[layers[0]] else: try: - x = torch.cat([layer_outputs[i] for i in layers], 1) + x = torch.cat([out[i] for i in layers], 1) except: # apply stride 2 for darknet reorg layer - layer_outputs[layers[1]] = F.interpolate(layer_outputs[layers[1]], scale_factor=[0.5, 0.5]) - x = torch.cat([layer_outputs[i] for i in layers], 1) - # print(''), [print(layer_outputs[i].shape) for i in layers], print(x.shape) + out[layers[1]] = F.interpolate(out[layers[1]], scale_factor=[0.5, 0.5]) + x = torch.cat([out[i] for i in layers], 1) + # print(''), [print(out[i].shape) for i in layers], print(x.shape) elif mtype == 'yolo': - output.append(module(x, img_size)) - layer_outputs.append(x if i in self.routs else []) + yolo_out.append(module(x, img_size)) + out.append(x if i in self.routs else []) if verbose: - print(i, x.shape) + print(i, list(x.shape)) if self.training: # train - return output + return yolo_out elif ONNX_EXPORT: # export - x = [torch.cat(x, 0) for x in zip(*output)] + x = [torch.cat(x, 0) for x in zip(*yolo_out)] return x[0], torch.cat(x[1:3], 1) # scores, boxes: 3780x80, 3780x4 else: # test - io, p = zip(*output) # inference output, training output + io, p = zip(*yolo_out) # inference output, training output return torch.cat(io, 1), p def fuse(self): From f92ad043bd0bd2e06265bc6099d4300fcc4780db Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 19 Feb 2020 16:05:57 -0800 Subject: [PATCH 2067/2595] updates --- models.py | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/models.py b/models.py index 3e5947f4..4de0ad97 100755 --- a/models.py +++ b/models.py @@ -121,24 +121,34 @@ def create_modules(module_defs, img_size, arc): class weightedFeatureFusion(nn.Module): # weighted sum of 2 or more layers https://arxiv.org/abs/1911.09070 def __init__(self, layers, weight=False): super(weightedFeatureFusion, self).__init__() - self.n = len(layers) + 1 # number of layers self.layers = layers # layer indices self.weight = weight # apply weights boolean + self.n = len(layers) + 1 # number of layers if weight: self.w = torch.nn.Parameter(torch.zeros(self.n)) # layer weights def forward(self, x, outputs): + # Weights if self.weight: w = torch.sigmoid(self.w) * (2 / self.n) # sigmoid weights (0-1) - if self.n == 2: - return x * w[0] + outputs[self.layers[0]] * w[1] - elif self.n == 3: - return x * w[0] + outputs[self.layers[0]] * w[1] + outputs[self.layers[1]] * w[2] - else: - if self.n == 2: - return x + outputs[self.layers[0]] - elif self.n == 3: - return x + outputs[self.layers[0]] + outputs[self.layers[1]] + x = x * w[0] + + # Fusion + nc = x.shape[1] # number of channels + for i in range(self.n - 1): + a = outputs[self.layers[i]] # feature to add + dc = nc - a.shape[1] # delta channels + + # Adjust channels + if dc > 0: # pad + pad = nn.ZeroPad2d((0, 0, 0, 0, 0, dc)) + a = pad(a) + elif dc < 0: # slice + a = a[:, :nc] + + # Sum + x = x + a * w[i + 1] if self.weight else x + a + return x class SwishImplementation(torch.autograd.Function): From 6fbab656c82f5539538125022292b1e8ed71e375 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 19 Feb 2020 17:08:03 -0800 Subject: [PATCH 2068/2595] updates --- models.py | 31 +++++++++++++++---------------- utils/parse_config.py | 10 ++++++++-- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/models.py b/models.py index 4de0ad97..9e57a68f 100755 --- a/models.py +++ b/models.py @@ -22,17 +22,16 @@ def create_modules(module_defs, img_size, arc): # modules.add_module('BatchNorm2d_0', nn.BatchNorm2d(output_filters[-1], momentum=0.1)) if mdef['type'] == 'convolutional': - bn = int(mdef['batch_normalize']) - filters = int(mdef['filters']) - size = int(mdef['size']) - stride = int(mdef['stride']) if 'stride' in mdef else (int(mdef['stride_y']), int(mdef['stride_x'])) - pad = (size - 1) // 2 if int(mdef['pad']) else 0 + bn = mdef['batch_normalize'] + filters = mdef['filters'] + size = mdef['size'] + stride = mdef['stride'] if 'stride' in mdef else (mdef['stride_y'], mdef['stride_x']) modules.add_module('Conv2d', nn.Conv2d(in_channels=output_filters[-1], out_channels=filters, kernel_size=size, stride=stride, - padding=pad, - groups=int(mdef['groups']) if 'groups' in mdef else 1, + padding=(size - 1) // 2 if mdef['pad'] else 0, + groups=mdef['groups'] if 'groups' in mdef else 1, bias=not bn)) if bn: modules.add_module('BatchNorm2d', nn.BatchNorm2d(filters, momentum=0.1)) @@ -43,9 +42,9 @@ def create_modules(module_defs, img_size, arc): modules.add_module('activation', Swish()) elif mdef['type'] == 'maxpool': - size = int(mdef['size']) - stride = int(mdef['stride']) - maxpool = nn.MaxPool2d(kernel_size=size, stride=stride, padding=int((size - 1) // 2)) + size = mdef['size'] + stride = mdef['stride'] + maxpool = nn.MaxPool2d(kernel_size=size, stride=stride, padding=(size - 1) // 2) if size == 2 and stride == 1: # yolov3-tiny modules.add_module('ZeroPad2d', nn.ZeroPad2d((0, 1, 0, 1))) modules.add_module('MaxPool2d', maxpool) @@ -57,17 +56,17 @@ def create_modules(module_defs, img_size, arc): g = (yolo_index + 1) * 2 / 32 # gain modules = nn.Upsample(size=tuple(int(x * g) for x in img_size)) # img_size = (320, 192) else: - modules = nn.Upsample(scale_factor=int(mdef['stride'])) + modules = nn.Upsample(scale_factor=mdef['stride']) elif mdef['type'] == 'route': # nn.Sequential() placeholder for 'route' layer - layers = [int(x) for x in mdef['layers'].split(',')] + layers = mdef['layers'] filters = sum([output_filters[i + 1 if i > 0 else i] for i in layers]) routs.extend([l if l > 0 else l + i for l in layers]) # if mdef[i+1]['type'] == 'reorg3d': # modules = nn.Upsample(scale_factor=1/float(mdef[i+1]['stride']), mode='nearest') # reorg3d elif mdef['type'] == 'shortcut': # nn.Sequential() placeholder for 'shortcut' layer - layers = [int(x) for x in mdef['from'].split(',')] + layers = mdef['from'] filters = output_filters[layers[0]] routs.extend([i + l if l < 0 else l for l in layers]) modules = weightedFeatureFusion(layers=layers, weight='weights_type' in mdef) @@ -79,9 +78,9 @@ def create_modules(module_defs, img_size, arc): elif mdef['type'] == 'yolo': yolo_index += 1 - mask = [int(x) for x in mdef['mask'].split(',')] # anchor mask + mask = mdef['mask'] # anchor mask modules = YOLOLayer(anchors=mdef['anchors'][mask], # anchor list - nc=int(mdef['classes']), # number of classes + nc=mdef['classes'], # number of classes img_size=img_size, # (416, 416) yolo_index=yolo_index, # 0, 1 or 2 arc=arc) # yolo architecture @@ -278,7 +277,7 @@ class Darknet(nn.Module): print('shortcut/add %s + %s' % (list(x.shape), [list(out[i].shape) for i in module.layers])) x = module(x, out) # weightedFeatureFusion() elif mtype == 'route': # concat - layers = [int(x) for x in mdef['layers'].split(',')] + layers = mdef['layers'] if verbose: print('route/concatenate %s + %s' % (list(x.shape), [list(out[i].shape) for i in layers])) if len(layers) == 1: diff --git a/utils/parse_config.py b/utils/parse_config.py index 8f2a6773..36ea42d7 100644 --- a/utils/parse_config.py +++ b/utils/parse_config.py @@ -25,10 +25,16 @@ def parse_model_cfg(path): key, val = line.split("=") key = key.rstrip() - if 'anchors' in key: + if key == 'anchors': # return nparray mdefs[-1][key] = np.array([float(x) for x in val.split(',')]).reshape((-1, 2)) # np anchors + elif key in ['from', 'layers', 'mask']: # return array + mdefs[-1][key] = [int(x) for x in val.split(',')] else: - mdefs[-1][key] = val.strip() + val = val.strip() + if val.isnumeric(): # return int or float + mdefs[-1][key] = int(val) if (int(val) - float(val)) == 0 else float(val) + else: + mdefs[-1][key] = val # return string # Check all fields are supported supported = ['type', 'batch_normalize', 'filters', 'size', 'stride', 'pad', 'activation', 'layers', 'groups', From 7f1b2bfe088ce4d2029ea782f7bb32f78969761c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 19 Feb 2020 18:06:53 -0800 Subject: [PATCH 2069/2595] updates --- models.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 9e57a68f..149b0c1e 100755 --- a/models.py +++ b/models.py @@ -274,7 +274,9 @@ class Darknet(nn.Module): x = module(x) elif mtype == 'shortcut': # sum if verbose: - print('shortcut/add %s + %s' % (list(x.shape), [list(out[i].shape) for i in module.layers])) + l = [i] + module.layers # layers + s = [list(x.shape)] + [list(out[i].shape) for i in module.layers] # shapes + print('shortcut/add: ' + ' + '.join(['layer %g %s' % x for x in zip(l, s)])) x = module(x, out) # weightedFeatureFusion() elif mtype == 'route': # concat layers = mdef['layers'] @@ -293,7 +295,7 @@ class Darknet(nn.Module): yolo_out.append(module(x, img_size)) out.append(x if i in self.routs else []) if verbose: - print(i, list(x.shape)) + print('%g/%g -' % (i, len(self.module_list)), list(x.shape)) if self.training: # train return yolo_out From 1043832493c01a50a7f5318e84405b978a1daa0a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 19 Feb 2020 18:26:45 -0800 Subject: [PATCH 2070/2595] updates --- models.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/models.py b/models.py index 149b0c1e..0e9aa117 100755 --- a/models.py +++ b/models.py @@ -67,7 +67,7 @@ def create_modules(module_defs, img_size, arc): elif mdef['type'] == 'shortcut': # nn.Sequential() placeholder for 'shortcut' layer layers = mdef['from'] - filters = output_filters[layers[0]] + filters = output_filters[-1] routs.extend([i + l if l < 0 else l for l in layers]) modules = weightedFeatureFusion(layers=layers, weight='weights_type' in mdef) @@ -266,6 +266,7 @@ class Darknet(nn.Module): yolo_out, out = [], [] verbose = False if verbose: + str = '' print('0', x.shape) for i, (mdef, module) in enumerate(zip(self.module_defs, self.module_list)): @@ -274,14 +275,16 @@ class Darknet(nn.Module): x = module(x) elif mtype == 'shortcut': # sum if verbose: - l = [i] + module.layers # layers + l = [i - 1] + module.layers # layers s = [list(x.shape)] + [list(out[i].shape) for i in module.layers] # shapes - print('shortcut/add: ' + ' + '.join(['layer %g %s' % x for x in zip(l, s)])) + str = ' >> ' + ' + '.join(['layer %g %s' % x for x in zip(l, s)]) x = module(x, out) # weightedFeatureFusion() elif mtype == 'route': # concat layers = mdef['layers'] if verbose: - print('route/concatenate %s + %s' % (list(x.shape), [list(out[i].shape) for i in layers])) + l = [i - 1] + layers # layers + s = [list(x.shape)] + [list(out[i].shape) for i in layers] # shapes + str = ' >> ' + ' + '.join(['layer %g %s' % x for x in zip(l, s)]) if len(layers) == 1: x = out[layers[0]] else: @@ -295,7 +298,8 @@ class Darknet(nn.Module): yolo_out.append(module(x, img_size)) out.append(x if i in self.routs else []) if verbose: - print('%g/%g -' % (i, len(self.module_list)), list(x.shape)) + print('%g/%g %s -' % (i, len(self.module_list), mtype), list(x.shape), str) + str = '' if self.training: # train return yolo_out From 328ad4da0402c69563f7112995eec00496a3ea24 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 19 Feb 2020 18:37:17 -0800 Subject: [PATCH 2071/2595] updates --- models.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/models.py b/models.py index 0e9aa117..7a870e0a 100755 --- a/models.py +++ b/models.py @@ -140,8 +140,7 @@ class weightedFeatureFusion(nn.Module): # weighted sum of 2 or more layers http # Adjust channels if dc > 0: # pad - pad = nn.ZeroPad2d((0, 0, 0, 0, 0, dc)) - a = pad(a) + a = nn.ZeroPad2d((0, 0, 0, 0, 0, dc))(a) elif dc < 0: # slice a = a[:, :nc] From afbc2f8d78530cf72d5809f95c410c8e6ed61964 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 21 Feb 2020 15:10:50 -0800 Subject: [PATCH 2072/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index f877a7ce..17a949e8 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -1023,7 +1023,7 @@ def plot_results_overlay(start=0, stop=0): # from utils.utils import *; plot_re def plot_results(start=0, stop=0, bucket='', id=()): # from utils.utils import *; plot_results() # Plot training results files 'results*.txt' - fig, ax = plt.subplots(2, 5, figsize=(14, 7)) + fig, ax = plt.subplots(2, 5, figsize=(12, 6)) ax = ax.ravel() s = ['GIoU', 'Objectness', 'Classification', 'Precision', 'Recall', 'val GIoU', 'val Objectness', 'val Classification', 'mAP@0.5', 'F1'] From fa8882c98e68f30fe917c4115baf532da6ee94d4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 21 Feb 2020 15:11:11 -0800 Subject: [PATCH 2073/2595] updates --- utils/gcp.sh | 303 +++++++++++++++++++++++++++++---------------------- 1 file changed, 170 insertions(+), 133 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 07a5b100..433c248d 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -9,6 +9,7 @@ sudo conda install -yc conda-forge scikit-image pycocotools python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('193Zp_ye-3qXMonR1nZj3YyxMtQkMy50k','coco2014.zip')" python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('1C3HewOG9akA3y456SZLBJZfNDPkBwAto','knife.zip')" python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('13g3LqdpkNE8sPosVJT6KFXlfoMypzRP4','sm4.zip')" +sudo shutdown # Re-clone rm -rf yolov3 # Warning: remove existing @@ -66,14 +67,18 @@ done # Evolve coco sudo -s -t=ultralytics/yolov3:v189 -docker kill $(docker ps -a -q --filter ancestor=$t) -for i in 0 1 +t=ultralytics/yolov3:evolve +# docker kill $(docker ps -a -q --filter ancestor=$t) +for i in 0 1 6 7 do docker pull $t && docker run --gpus all -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i sleep 30 done + +t=ultralytics/yolov3:evolve && docker pull $t && docker run --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh 2 + + # Git pull git pull https://github.com/ultralytics/yolov3 # master git pull https://github.com/ultralytics/yolov3 test # branch @@ -129,160 +134,158 @@ rm -rf darknet && git clone https://github.com/AlexeyAB/darknet && cd darknet && #Docker sudo docker kill "$(sudo docker ps -q)" sudo docker pull ultralytics/yolov3:v0 -sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco ultralytics/yolov3:v0 +sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco ultralytics/yolov3:v0 -t=ultralytics/yolov3:v70 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 70 --device 0 --multi -t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 71 --device 0 --multi --img-weights +t=ultralytics/yolov3:v70 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 32 --accum 2 --pre --bucket yolov4 --name 70 --device 0 --multi +t=ultralytics/yolov3:v73 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 73 --device 5 --cfg cfg/yolov3s.cfg +t=ultralytics/yolov3:v74 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 74 --device 0 --cfg cfg/yolov3s.cfg +t=ultralytics/yolov3:v75 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 75 --device 7 --cfg cfg/yolov3s.cfg +t=ultralytics/yolov3:v76 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 76 --device 0 --cfg cfg/yolov3-spp.cfg -t=ultralytics/yolov3:v73 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 73 --device 5 --cfg cfg/yolov3s.cfg -t=ultralytics/yolov3:v74 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 74 --device 0 --cfg cfg/yolov3s.cfg -t=ultralytics/yolov3:v75 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 75 --device 7 --cfg cfg/yolov3s.cfg -t=ultralytics/yolov3:v76 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 76 --device 0 --cfg cfg/yolov3-spp.cfg +t=ultralytics/yolov3:v79 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 79 --device 5 +t=ultralytics/yolov3:v80 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 80 --device 0 +t=ultralytics/yolov3:v81 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 81 --device 7 +t=ultralytics/yolov3:v82 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 82 --device 0 --cfg cfg/yolov3s.cfg -t=ultralytics/yolov3:v79 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 79 --device 5 -t=ultralytics/yolov3:v80 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 80 --device 0 -t=ultralytics/yolov3:v81 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 81 --device 7 -t=ultralytics/yolov3:v82 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 82 --device 0 --cfg cfg/yolov3s.cfg +t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 83 --device 6 --multi --nosave +t=ultralytics/yolov3:v84 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 84 --device 0 --multi +t=ultralytics/yolov3:v85 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 85 --device 0 --multi +t=ultralytics/yolov3:v86 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 86 --device 1 --multi +t=ultralytics/yolov3:v87 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 87 --device 2 --multi +t=ultralytics/yolov3:v88 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 88 --device 3 --multi +t=ultralytics/yolov3:v89 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 89 --device 1 +t=ultralytics/yolov3:v90 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 90 --device 0 --cfg cfg/yolov3-spp-matrix.cfg +t=ultralytics/yolov3:v91 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 91 --device 0 --cfg cfg/yolov3-spp-matrix.cfg -t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 83 --device 6 --multi --nosave -t=ultralytics/yolov3:v84 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 84 --device 0 --multi -t=ultralytics/yolov3:v85 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 85 --device 0 --multi -t=ultralytics/yolov3:v86 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 86 --device 1 --multi -t=ultralytics/yolov3:v87 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 87 --device 2 --multi -t=ultralytics/yolov3:v88 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 88 --device 3 --multi -t=ultralytics/yolov3:v89 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 89 --device 1 -t=ultralytics/yolov3:v90 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 90 --device 0 --cfg cfg/yolov3-spp-matrix.cfg -t=ultralytics/yolov3:v91 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 91 --device 0 --cfg cfg/yolov3-spp-matrix.cfg - -t=ultralytics/yolov3:v92 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 92 --device 0 -t=ultralytics/yolov3:v93 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 93 --device 0 --cfg cfg/yolov3-spp-matrix.cfg +t=ultralytics/yolov3:v92 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 92 --device 0 +t=ultralytics/yolov3:v93 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 93 --device 0 --cfg cfg/yolov3-spp-matrix.cfg #SM4 -t=ultralytics/yolov3:v96 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img 320 --batch 32 --accum 2 --pre --bucket yolov4 --name 96 --device 0 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave -t=ultralytics/yolov3:v97 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img 320 --batch 32 --accum 2 --pre --bucket yolov4 --name 97 --device 4 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave -t=ultralytics/yolov3:v98 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img 320 --batch 16 --accum 4 --pre --bucket yolov4 --name 98 --device 5 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave -t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --pre --bucket yolov4 --name 101 --device 7 --multi --nosave +t=ultralytics/yolov3:v96 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img 320 --batch 32 --accum 2 --pre --bucket yolov4 --name 96 --device 0 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave +t=ultralytics/yolov3:v97 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img 320 --batch 32 --accum 2 --pre --bucket yolov4 --name 97 --device 4 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave +t=ultralytics/yolov3:v98 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img 320 --batch 16 --accum 4 --pre --bucket yolov4 --name 98 --device 5 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave +t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --pre --bucket yolov4 --name 101 --device 7 --multi --nosave -t=ultralytics/yolov3:v102 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 1000 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 102 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache -t=ultralytics/yolov3:v103 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 103 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache -t=ultralytics/yolov3:v104 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 104 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache -t=ultralytics/yolov3:v105 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 105 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache -t=ultralytics/yolov3:v106 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 106 --device 0 --cfg cfg/yolov3-tiny-3cls-sm4.cfg --data ../data/sm4/out.data --nosave --cache -t=ultralytics/yolov3:v107 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 107 --device 5 --nosave --cfg cfg/yolov3-spp3.cfg -t=ultralytics/yolov3:v108 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 108 --device 7 --nosave +t=ultralytics/yolov3:v102 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 1000 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 102 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache +t=ultralytics/yolov3:v103 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 103 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache +t=ultralytics/yolov3:v104 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 104 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache +t=ultralytics/yolov3:v105 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 105 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache +t=ultralytics/yolov3:v106 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 106 --device 0 --cfg cfg/yolov3-tiny-3cls-sm4.cfg --data ../data/sm4/out.data --nosave --cache +t=ultralytics/yolov3:v107 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 107 --device 5 --nosave --cfg cfg/yolov3-spp3.cfg +t=ultralytics/yolov3:v108 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 108 --device 7 --nosave -t=ultralytics/yolov3:v109 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 109 --device 4 --multi --nosave -t=ultralytics/yolov3:v110 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 110 --device 3 --multi --nosave +t=ultralytics/yolov3:v109 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 109 --device 4 --multi --nosave +t=ultralytics/yolov3:v110 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 110 --device 3 --multi --nosave -t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 111 --device 0 -t=ultralytics/yolov3:v112 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 112 --device 1 --nosave -t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 113 --device 2 --nosave -t=ultralytics/yolov3:v114 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 114 --device 2 --nosave -t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 115 --device 5 --nosave --cfg cfg/yolov3-spp3.cfg -t=ultralytics/yolov3:v116 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 116 --device 1 --nosave +t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 111 --device 0 +t=ultralytics/yolov3:v112 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 112 --device 1 --nosave +t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 113 --device 2 --nosave +t=ultralytics/yolov3:v114 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 114 --device 2 --nosave +t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 115 --device 5 --nosave --cfg cfg/yolov3-spp3.cfg +t=ultralytics/yolov3:v116 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 116 --device 1 --nosave -t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --epochs 27 --pre --bucket yolov4 --name 117 --device 0 --nosave --multi -t=ultralytics/yolov3:v118 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --epochs 27 --pre --bucket yolov4 --name 118 --device 5 --nosave --multi -t=ultralytics/yolov3:v119 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 119 --device 1 --nosave -t=ultralytics/yolov3:v120 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 120 --device 2 --nosave -t=ultralytics/yolov3:v121 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 121 --device 0 --nosave --cfg cfg/csresnext50-panet-spp.cfg -t=ultralytics/yolov3:v122 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 273 --pre --bucket yolov4 --name 122 --device 2 --nosave -t=ultralytics/yolov3:v123 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 273 --pre --bucket yolov4 --name 123 --device 5 --nosave +t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --epochs 27 --pre --bucket yolov4 --name 117 --device 0 --nosave --multi +t=ultralytics/yolov3:v118 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --epochs 27 --pre --bucket yolov4 --name 118 --device 5 --nosave --multi +t=ultralytics/yolov3:v119 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 119 --device 1 --nosave +t=ultralytics/yolov3:v120 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 120 --device 2 --nosave +t=ultralytics/yolov3:v121 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 121 --device 0 --nosave --cfg cfg/csresnext50-panet-spp.cfg +t=ultralytics/yolov3:v122 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 273 --pre --bucket yolov4 --name 122 --device 2 --nosave +t=ultralytics/yolov3:v123 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 273 --pre --bucket yolov4 --name 123 --device 5 --nosave -t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 124 --device 0 --nosave --cfg yolov3-tiny -t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 125 --device 1 --nosave --cfg yolov3-tiny2 -t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 126 --device 1 --nosave --cfg yolov3-tiny3 -t=ultralytics/yolov3:v127 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 127 --device 0 --nosave --cfg yolov3-tiny4 -t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 273 --pre --bucket yolov4 --name 128 --device 1 --nosave --cfg yolov3-tiny2 --multi -t=ultralytics/yolov3:v129 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 273 --pre --bucket yolov4 --name 129 --device 0 --nosave --cfg yolov3-tiny2 +t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 124 --device 0 --nosave --cfg yolov3-tiny +t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 125 --device 1 --nosave --cfg yolov3-tiny2 +t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 126 --device 1 --nosave --cfg yolov3-tiny3 +t=ultralytics/yolov3:v127 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 127 --device 0 --nosave --cfg yolov3-tiny4 +t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 273 --pre --bucket yolov4 --name 128 --device 1 --nosave --cfg yolov3-tiny2 --multi +t=ultralytics/yolov3:v129 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 273 --pre --bucket yolov4 --name 129 --device 0 --nosave --cfg yolov3-tiny2 -t=ultralytics/yolov3:v130 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 130 --device 0 --nosave -t=ultralytics/yolov3:v133 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 22 --accum 3 --epochs 250 --pre --bucket yolov4 --name 131 --device 0 --nosave --multi -t=ultralytics/yolov3:v130 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 132 --device 0 --nosave --data coco2014.data -t=ultralytics/yolov3:v133 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 22 --accum 3 --epochs 27 --pre --bucket yolov4 --name 133 --device 0 --nosave --multi -t=ultralytics/yolov3:v134 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 134 --device 0 --nosave --data coco2014.data +t=ultralytics/yolov3:v130 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 130 --device 0 --nosave +t=ultralytics/yolov3:v133 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 22 --accum 3 --epochs 250 --pre --bucket yolov4 --name 131 --device 0 --nosave --multi +t=ultralytics/yolov3:v130 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 132 --device 0 --nosave --data coco2014.data +t=ultralytics/yolov3:v133 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 22 --accum 3 --epochs 27 --pre --bucket yolov4 --name 133 --device 0 --nosave --multi +t=ultralytics/yolov3:v134 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 134 --device 0 --nosave --data coco2014.data -t=ultralytics/yolov3:v135 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 24 --accum 3 --epochs 270 --pre --bucket yolov4 --name 135 --device 0 --nosave --multi --data coco2014.data -t=ultralytics/yolov3:v136 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 24 --accum 3 --epochs 270 --pre --bucket yolov4 --name 136 --device 0 --nosave --multi --data coco2014.data +t=ultralytics/yolov3:v135 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 24 --accum 3 --epochs 270 --pre --bucket yolov4 --name 135 --device 0 --nosave --multi --data coco2014.data +t=ultralytics/yolov3:v136 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 24 --accum 3 --epochs 270 --pre --bucket yolov4 --name 136 --device 0 --nosave --multi --data coco2014.data -t=ultralytics/yolov3:v137 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 137 --device 7 --nosave --data coco2014.data -t=ultralytics/yolov3:v137 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --bucket yolov4 --name 138 --device 6 --nosave --data coco2014.data +t=ultralytics/yolov3:v137 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 137 --device 7 --nosave --data coco2014.data +t=ultralytics/yolov3:v137 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --bucket yolov4 --name 138 --device 6 --nosave --data coco2014.data -t=ultralytics/yolov3:v140 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 140 --device 1 --nosave --data coco2014.data --arc uBCE -t=ultralytics/yolov3:v141 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 141 --device 0 --nosave --data coco2014.data --arc uBCE -t=ultralytics/yolov3:v142 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 142 --device 1 --nosave --data coco2014.data --arc uBCE +t=ultralytics/yolov3:v140 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 140 --device 1 --nosave --data coco2014.data --arc uBCE +t=ultralytics/yolov3:v141 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 141 --device 0 --nosave --data coco2014.data --arc uBCE +t=ultralytics/yolov3:v142 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 142 --device 1 --nosave --data coco2014.data --arc uBCE -t=ultralytics/yolov3:v146 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 146 --device 0 --nosave --data coco2014.data -t=ultralytics/yolov3:v147 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 147 --device 1 --nosave --data coco2014.data -t=ultralytics/yolov3:v148 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 148 --device 2 --nosave --data coco2014.data -t=ultralytics/yolov3:v149 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 149 --device 3 --nosave --data coco2014.data -t=ultralytics/yolov3:v150 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 150 --device 4 --nosave --data coco2014.data -t=ultralytics/yolov3:v151 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 151 --device 5 --nosave --data coco2014.data -t=ultralytics/yolov3:v152 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 152 --device 6 --nosave --data coco2014.data -t=ultralytics/yolov3:v153 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 153 --device 7 --nosave --data coco2014.data +t=ultralytics/yolov3:v146 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 146 --device 0 --nosave --data coco2014.data +t=ultralytics/yolov3:v147 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 147 --device 1 --nosave --data coco2014.data +t=ultralytics/yolov3:v148 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 148 --device 2 --nosave --data coco2014.data +t=ultralytics/yolov3:v149 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 149 --device 3 --nosave --data coco2014.data +t=ultralytics/yolov3:v150 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 150 --device 4 --nosave --data coco2014.data +t=ultralytics/yolov3:v151 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 151 --device 5 --nosave --data coco2014.data +t=ultralytics/yolov3:v152 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 152 --device 6 --nosave --data coco2014.data +t=ultralytics/yolov3:v153 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 153 --device 7 --nosave --data coco2014.data -t=ultralytics/yolov3:v154 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 154 --device 0 --nosave --data coco2014.data -t=ultralytics/yolov3:v155 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 155 --device 0 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v154 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 154 --device 0 --nosave --data coco2014.data +t=ultralytics/yolov3:v155 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 155 --device 0 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v156 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 156 --device 5 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v157 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 157 --device 6 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v158 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 158 --device 7 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v156 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 156 --device 5 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v157 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 157 --device 6 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v158 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 158 --device 7 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v159 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 159 --device 0 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v160 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 160 --device 1 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v161 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 161 --device 2 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v162 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 162 --device 3 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v163 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 163 --device 4 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v164 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 164 --device 5 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v165 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 165 --device 6 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v166 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 166 --device 6 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v167 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 167 --device 7 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v159 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 159 --device 0 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v160 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 160 --device 1 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v161 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 161 --device 2 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v162 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 162 --device 3 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v163 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 163 --device 4 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v164 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 164 --device 5 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v165 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 165 --device 6 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v166 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 166 --device 6 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v167 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 167 --device 7 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v168 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 168 --device 5 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v169 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 169 --device 6 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v170 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 170 --device 7 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v171 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 171 --device 4 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v172 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 172 --device 3 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v173 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 173 --device 2 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v174 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 174 --device 1 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v175 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 175 --device 0 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v168 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 168 --device 5 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v169 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 169 --device 6 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v170 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 170 --device 7 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v171 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 171 --device 4 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v172 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 172 --device 3 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v173 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 173 --device 2 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v174 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 174 --device 1 --nosave --data coco2014.data --arc defaultpw +t=ultralytics/yolov3:v175 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 175 --device 0 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v177 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 416 --batch 22 --accum 3 --epochs 273 --pre --bucket yolov4 --name 177 --device 0 --nosave --data coco2014.data --multi -t=ultralytics/yolov3:v178 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 416 --batch 22 --accum 3 --epochs 273 --pre --bucket yolov4 --name 178 --device 0 --nosave --data coco2014.data --multi -t=ultralytics/yolov3:v179 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 416 --batch 22 --accum 3 --epochs 273 --pre --bucket yolov4 --name 179 --device 0 --nosave --data coco2014.data --multi --cfg yolov3s-18a.cfg +t=ultralytics/yolov3:v177 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 416 --batch 22 --accum 3 --epochs 273 --pre --bucket yolov4 --name 177 --device 0 --nosave --data coco2014.data --multi +t=ultralytics/yolov3:v178 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 416 --batch 22 --accum 3 --epochs 273 --pre --bucket yolov4 --name 178 --device 0 --nosave --data coco2014.data --multi +t=ultralytics/yolov3:v179 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 416 --batch 22 --accum 3 --epochs 273 --pre --bucket yolov4 --name 179 --device 0 --nosave --data coco2014.data --multi --cfg yolov3s-18a.cfg t=ultralytics/yolov3:v143 && sudo docker build -t $t . && sudo docker push $t -t=ultralytics/yolov3:v179 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 179 -t=ultralytics/yolov3:v180 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 180 -t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 181 --cfg yolov3s9a-640.cfg -t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 182 --cfg yolov3s9a-320-640.cfg -t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 183 --cfg yolov3s15a-640.cfg -t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 184 --cfg yolov3s15a-320-640.cfg +t=ultralytics/yolov3:v179 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 179 +t=ultralytics/yolov3:v180 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 180 +t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 181 --cfg yolov3s9a-640.cfg +t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 182 --cfg yolov3s9a-320-640.cfg +t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 183 --cfg yolov3s15a-640.cfg +t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 184 --cfg yolov3s15a-320-640.cfg -t=ultralytics/yolov3:v185 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 185 -t=ultralytics/yolov3:v186 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 186 -n=187 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -t=ultralytics/yolov3:v189 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 188 --cfg yolov3s15a-320-640.cfg -n=190 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=191 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=192 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +t=ultralytics/yolov3:v185 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 185 +t=ultralytics/yolov3:v186 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 186 +n=187 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +t=ultralytics/yolov3:v189 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 188 --cfg yolov3s15a-320-640.cfg +n=190 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=191 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=192 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=193 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=194 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=195 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=196 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=193 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=194 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=195 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=196 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=197 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 273 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=198 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 273 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=197 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 273 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n +n=198 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 273 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n # athena -n=199 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 0 -n=200 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 6 -n=207 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo nvidia-docker run -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 7 +n=199 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 0 +n=200 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 6 +n=207 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 7 n=208 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 n=211 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n --cfg yolov3-spp-1cls.cfg n=212 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n --cfg yolov3-spp-1cls.cfg @@ -320,11 +323,11 @@ n=255 && t=ultralytics/yolov3:v245 && sudo docker pull $t && sudo docker run -it # wer -n=201 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 0 --cfg yolov3-tiny-3cls.cfg -n=202 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 1 --cfg yolov3-tiny-3cls-sm4.cfg -n=203 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights '' --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 2 --cfg yolov3-tiny-3cls-sm4.cfg -n=204 && t=ultralytics/yolov3:v202 && sudo docker pull $t && sudo nvidia-docker run -d -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 3 --cfg yolov3-tiny-3cls-sm4.cfg -n=205 && t=ultralytics/yolov3:v202 && sudo docker pull $t && sudo nvidia-docker run -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights '' --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 4 --cfg yolov3-tiny-3cls-sm4.cfg +n=201 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 0 --cfg yolov3-tiny-3cls.cfg +n=202 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 1 --cfg yolov3-tiny-3cls-sm4.cfg +n=203 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights '' --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 2 --cfg yolov3-tiny-3cls-sm4.cfg +n=204 && t=ultralytics/yolov3:v202 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 3 --cfg yolov3-tiny-3cls-sm4.cfg +n=205 && t=ultralytics/yolov3:v202 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights '' --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 4 --cfg yolov3-tiny-3cls-sm4.cfg n=206 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --notest --nosave --cache --device 0 --cfg yolov3-tiny-3cls.cfg n=209 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --nosave --cache --device 3 --cfg yolov3-tiny-3cls.cfg n=210 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --nosave --cache --device 1 --cfg yolov3-tiny-3cls.cfg @@ -345,6 +348,7 @@ n=257 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it #coco +n=2 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --nosave --bucket ult/coco --name $n --device 0 --multi n=3 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 27 --batch 32 --accum 2 --weights '' --device 1 --cfg yolov3.cfg --nosave --bucket ult/coco --name $n n=4 && t=ultralytics/coco:v3 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 27 --batch 32 --accum 2 --weights '' --device 2 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n n=5 && t=ultralytics/coco:v3 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 27 --batch 32 --accum 2 --weights '' --device 3 --cfg yolov3-spp3.cfg --nosave --bucket ult/coco --name $n @@ -373,11 +377,44 @@ n=27 && t=ultralytics/coco:v24 && sudo docker pull $t && sudo docker run -it --g n=28 && t=ultralytics/coco:v24 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 273 --batch 12 --accum 6 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown n=29 && t=ultralytics/coco:v24 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 15 --accum 4 --weights '' --device 0 --cfg yolov4a.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown n=30 && t=ultralytics/coco:v24 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 273 --batch 12 --accum 6 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown - n=31 && t=ultralytics/coco:v31 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppf.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown n=32 && t=ultralytics/coco:v31 && sudo docker pull $t && sudo docker run --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppg.cfg --nosave --bucket ult/coco --name $n --multi -n=33 && t=ultralytics/coco:v33 && sudo docker pull $t && sudo docker run --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppf.cfg --nosave --bucket ult/coco --name $n --multi -n=34 && t=ultralytics/coco:v33 && sudo docker pull $t && sudo docker run --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppg.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=33 && t=ultralytics/coco:v33 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 273 --batch 12 --accum 6 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=34 && t=ultralytics/coco:v34 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 273 --batch 12 --accum 6 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=35 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi +n=36 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 1 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi +n=37 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 2 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi +n=38 && t=ultralytics/coco:v35 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 10 --accum 8 --weights '' --device 3 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi +n=39 && t=ultralytics/coco:v35 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 10 --accum 6 --weights '' --device 4 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi +n=40 && t=ultralytics/coco:v35 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 8 --weights '' --device 5 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi +n=41 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 6 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi +n=42 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 7 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi +n=45 && t=ultralytics/coco:v45 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 16 --weights '' --device 2 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi +n=46 && t=ultralytics/coco:v45 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 4 --weights '' --device 6 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi +n=47 && t=ultralytics/coco:v45 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 2 --weights '' --device 7 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi +n=48 && t=ultralytics/coco:v45 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 8 --weights '' --device 3 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi +n=49 && t=ultralytics/coco:v45 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 32 --weights '' --device 4 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi +n=50 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 8 --weights '' --device 3 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi +n=51 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 8 --weights '' --device 4 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi +n=52 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 8 --weights '' --device 2 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi +n=53 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 27 --batch 8 --accum 8 --weights '' --device 5 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n +n=54 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --nosave --bucket ult/coco --name $n --device 0 --multi +n=55 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --nosave --bucket ult/coco --name $n --device 2 --multi +n=56 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 3 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi +n=57 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 4 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi +n=58 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi +n=59 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi +n=60 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 1 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi +n=61 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi +n=62 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi +n=63 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi +n=64 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 1 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi +n=65 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=66 && t=ultralytics/coco:v65 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 8 --accum 8 --weights '' --device 0 --cfg darknet53-bifpn3.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=67 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 15 --accum 4 --weights '' --device 0 --cfg csdarknet53-bifpn-optimal.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=68 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=69 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 15 --accum 4 --weights '' --device 0 --cfg csdarknet53-bifpn-optimal.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=70 && t=ultralytics/coco:v69 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 15 --accum 4 --weights '' --device 0 --cfg csresnext50-bifpn-optimal.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown # athena From b97b88b659a63a0b9a50b0c8ca70c903e9e4579f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 21 Feb 2020 17:16:34 -0800 Subject: [PATCH 2074/2595] updates --- README.md | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 7aa89f1e..7977c7a5 100755 --- a/README.md +++ b/README.md @@ -147,31 +147,31 @@ $ python3 test.py --cfg yolov3-spp.cfg --weights yolov3-spp-ultralytics.pt |Size |COCO mAP
@0.5...0.95 |COCO mAP
@0.5 --- | --- | --- | --- -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |320 |14.0
28.7
30.5
**36.3** |29.1
51.8
52.3
**55.5** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |416 |16.0
31.2
33.9
**39.8** |33.0
55.4
56.9
**59.6** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |512 |16.6
32.7
35.6
**41.3** |34.9
57.7
59.5
**61.3** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |608 |16.6
33.1
37.0
**41.7** |35.4
58.2
60.7
**61.5** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |320 |14.0
28.7
30.5
**36.4** |29.1
51.8
52.3
**55.7** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |416 |16.0
31.2
33.9
**40.0** |33.0
55.4
56.9
**60.0** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |512 |16.6
32.7
35.6
**41.5** |34.9
57.7
59.5
**61.4** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |608 |16.6
33.1
37.0
**41.9** |35.4
58.2
60.7
**61.6** ```bash -$ python3 test.py --cfg yolov3-spp.cfg --weights yolov3-spp-ultralytics.pt --img 608 +$ python3 test.py --cfg yolov3-spp.cfg --weights yolov3-spp-ultralytics.pt --img 608 -Namespace(batch_size=32, cfg='yolov3-spp.cfg', conf_thres=0.001, data='data/coco2014.data', device='', img_size=608, iou_thres=0.6, save_json=True, single_cls=False, task='test', weights='last54.pt') -Using CUDA device0 _CudaDeviceProperties(name='Tesla P100-PCIE-16GB', total_memory=16280MB) +Namespace(batch_size=32, cfg='yolov3-spp.cfg', conf_thres=0.001, data='data/coco2014.data', device='', img_size=608, iou_thres=0.6, save_json=True, single_cls=False, task='test', weights='yolov3-spp-ultralytics.pt') +Using CUDA device0 _CudaDeviceProperties(name='Tesla T4', total_memory=15079MB) - Class Images Targets P R mAP@0.5 F1: 100% 157/157 [04:25<00:00, 1.04it/s] - all 5e+03 3.51e+04 0.0467 0.886 0.607 0.0875 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.415 - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.615 - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.443 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.245 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.458 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.531 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.341 + Class Images Targets P R mAP@0.5 F1: 100% 157/157 [04:25<00:00, 1.01s/it] + all 5e+03 3.51e+04 0.0453 0.885 0.609 0.0852 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.417 + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.616 + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.448 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.242 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.462 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.522 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.337 Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.559 Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.611 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.441 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.658 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.748 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.436 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.659 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.741 ``` # Reproduce Our Results From b70e39ab9b287e8731efe8d84eb59bf49e456b7c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 22 Feb 2020 12:48:24 -0800 Subject: [PATCH 2075/2595] updates --- models.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/models.py b/models.py index 7a870e0a..6ebfa495 100755 --- a/models.py +++ b/models.py @@ -133,19 +133,24 @@ class weightedFeatureFusion(nn.Module): # weighted sum of 2 or more layers http x = x * w[0] # Fusion - nc = x.shape[1] # number of channels + nc = x.shape[1] # input channels for i in range(self.n - 1): a = outputs[self.layers[i]] # feature to add - dc = nc - a.shape[1] # delta channels + ac = a.shape[1] # feature channels + dc = nc - ac # delta channels # Adjust channels - if dc > 0: # pad - a = nn.ZeroPad2d((0, 0, 0, 0, 0, dc))(a) - elif dc < 0: # slice - a = a[:, :nc] - - # Sum - x = x + a * w[i + 1] if self.weight else x + a + if dc > 0: # slice input + # a = nn.ZeroPad2d((0, 0, 0, 0, 0, dc))(a) + x[:, :ac] = x[:, :ac] + (a * w[i + 1] if self.weight else a) + elif dc < 0: # slice feature + if self.n == 2: + return x + (a[:, :nc] * w[i + 1] if self.weight else a[:, :nc]) + x = x + (a[:, :nc] * w[i + 1] if self.weight else a[:, :nc]) + else: # same shape + if self.n == 2: + return x + (a * w[i + 1] if self.weight else a) + x = x + (a * w[i + 1] if self.weight else a) return x From 2d9bc6252679c74c9c73a4587a96400a27132999 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 22 Feb 2020 12:54:09 -0800 Subject: [PATCH 2076/2595] updates --- models.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/models.py b/models.py index 6ebfa495..6a3a4ea7 100755 --- a/models.py +++ b/models.py @@ -135,22 +135,22 @@ class weightedFeatureFusion(nn.Module): # weighted sum of 2 or more layers http # Fusion nc = x.shape[1] # input channels for i in range(self.n - 1): - a = outputs[self.layers[i]] # feature to add + a = outputs[self.layers[i]] * w[i + 1] if self.weight else outputs[self.layers[i]] # feature to add ac = a.shape[1] # feature channels dc = nc - ac # delta channels # Adjust channels if dc > 0: # slice input # a = nn.ZeroPad2d((0, 0, 0, 0, 0, dc))(a) - x[:, :ac] = x[:, :ac] + (a * w[i + 1] if self.weight else a) + x[:, :ac] = x[:, :ac] + a elif dc < 0: # slice feature if self.n == 2: - return x + (a[:, :nc] * w[i + 1] if self.weight else a[:, :nc]) - x = x + (a[:, :nc] * w[i + 1] if self.weight else a[:, :nc]) + return x + a[:, :nc] + x = x + a[:, :nc] else: # same shape if self.n == 2: - return x + (a * w[i + 1] if self.weight else a) - x = x + (a * w[i + 1] if self.weight else a) + return x + a + x = x + a return x From 3cf8a13910b26eacbdc5e9bdf3965648b807d149 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 22 Feb 2020 12:56:20 -0800 Subject: [PATCH 2077/2595] updates --- models.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/models.py b/models.py index 6a3a4ea7..9214bfc2 100755 --- a/models.py +++ b/models.py @@ -141,15 +141,10 @@ class weightedFeatureFusion(nn.Module): # weighted sum of 2 or more layers http # Adjust channels if dc > 0: # slice input - # a = nn.ZeroPad2d((0, 0, 0, 0, 0, dc))(a) - x[:, :ac] = x[:, :ac] + a + x[:, :ac] = x[:, :ac] + a # or a = nn.ZeroPad2d((0, 0, 0, 0, 0, dc))(a); x = x + a elif dc < 0: # slice feature - if self.n == 2: - return x + a[:, :nc] x = x + a[:, :nc] else: # same shape - if self.n == 2: - return x + a x = x + a return x From 76080475311f70d24b06ec11d8f3e5fe61c550ba Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 22 Feb 2020 17:43:11 -0800 Subject: [PATCH 2078/2595] updates --- train.py | 3 -- utils/torch_utils.py | 71 -------------------------------------------- 2 files changed, 74 deletions(-) diff --git a/train.py b/train.py index 917fbda8..0b459286 100644 --- a/train.py +++ b/train.py @@ -99,9 +99,6 @@ def train(): optimizer.add_param_group({'params': pg2}) # add pg2 (biases) del pg0, pg1, pg2 - # https://github.com/alphadl/lookahead.pytorch - # optimizer = torch_utils.Lookahead(optimizer, k=5, alpha=0.5) - start_epoch = 0 best_fitness = 0.0 attempt_download(weights) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 9b321724..b984b265 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -94,74 +94,3 @@ def load_classifier(name='resnet101', n=2): model.last_linear.weight = torch.nn.Parameter(torch.zeros(n, filters)) model.last_linear.out_features = n return model - - -from collections import defaultdict -from torch.optim import Optimizer - - -class Lookahead(Optimizer): - def __init__(self, optimizer, k=5, alpha=0.5): - self.optimizer = optimizer - self.k = k - self.alpha = alpha - self.param_groups = self.optimizer.param_groups - self.state = defaultdict(dict) - self.fast_state = self.optimizer.state - for group in self.param_groups: - group["counter"] = 0 - - def update(self, group): - for fast in group["params"]: - param_state = self.state[fast] - if "slow_param" not in param_state: - param_state["slow_param"] = torch.zeros_like(fast.data) - param_state["slow_param"].copy_(fast.data) - slow = param_state["slow_param"] - slow += (fast.data - slow) * self.alpha - fast.data.copy_(slow) - - def update_lookahead(self): - for group in self.param_groups: - self.update(group) - - def step(self, closure=None): - loss = self.optimizer.step(closure) - for group in self.param_groups: - if group["counter"] == 0: - self.update(group) - group["counter"] += 1 - if group["counter"] >= self.k: - group["counter"] = 0 - return loss - - def state_dict(self): - fast_state_dict = self.optimizer.state_dict() - slow_state = { - (id(k) if isinstance(k, torch.Tensor) else k): v - for k, v in self.state.items() - } - fast_state = fast_state_dict["state"] - param_groups = fast_state_dict["param_groups"] - return { - "fast_state": fast_state, - "slow_state": slow_state, - "param_groups": param_groups, - } - - def load_state_dict(self, state_dict): - slow_state_dict = { - "state": state_dict["slow_state"], - "param_groups": state_dict["param_groups"], - } - fast_state_dict = { - "state": state_dict["fast_state"], - "param_groups": state_dict["param_groups"], - } - super(Lookahead, self).load_state_dict(slow_state_dict) - self.optimizer.load_state_dict(fast_state_dict) - self.fast_state = self.optimizer.state - - def add_param_group(self, param_group): - param_group["counter"] = 0 - self.optimizer.add_param_group(param_group) From bc741f30e893706ed70374fefdb2cd7884a3cdc3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 22 Feb 2020 18:18:38 -0800 Subject: [PATCH 2079/2595] updates --- detect.py | 13 ++++++------- utils/datasets.py | 20 +++++++------------- 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/detect.py b/detect.py index 22f927c2..dbf32028 100644 --- a/detect.py +++ b/detect.py @@ -64,10 +64,10 @@ def detect(save_img=False): if webcam: view_img = True torch.backends.cudnn.benchmark = True # set True to speed up constant image size inference - dataset = LoadStreams(source, img_size=img_size, half=half) + dataset = LoadStreams(source, img_size=img_size) else: save_img = True - dataset = LoadImages(source, img_size=img_size, half=half) + dataset = LoadImages(source, img_size=img_size) # Get names and colors names = load_classes(opt.names) @@ -77,15 +77,14 @@ def detect(save_img=False): t0 = time.time() for path, img, im0s, vid_cap in dataset: t = time.time() - - # Get detections img = torch.from_numpy(img).to(device) + img = img.half() if half else img.float() # uint8 to fp16/32 + img /= 255.0 # 0 - 255 to 0.0 - 1.0 if img.ndimension() == 3: img = img.unsqueeze(0) - pred = model(img)[0] - if opt.half: - pred = pred.float() + # Inference + pred = model(img)[0].float() if half else model(img)[0] # Apply NMS pred = non_max_suppression(pred, opt.conf_thres, opt.iou_thres, classes=opt.classes, agnostic=opt.agnostic_nms) diff --git a/utils/datasets.py b/utils/datasets.py index fee8ceab..b465a2e6 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -42,7 +42,7 @@ def exif_size(img): class LoadImages: # for inference - def __init__(self, path, img_size=416, half=False): + def __init__(self, path, img_size=416): path = str(Path(path)) # os-agnostic files = [] if os.path.isdir(path): @@ -59,7 +59,6 @@ class LoadImages: # for inference self.nF = nI + nV # number of files self.video_flag = [False] * nI + [True] * nV self.mode = 'images' - self.half = half # half precision fp16 images if any(videos): self.new_video(videos[0]) # new video else: @@ -104,8 +103,7 @@ class LoadImages: # for inference # Convert img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416 - img = np.ascontiguousarray(img, dtype=np.float16 if self.half else np.float32) # uint8 to fp16/fp32 - img /= 255.0 # 0 - 255 to 0.0 - 1.0 + img = np.ascontiguousarray(img) # cv2.imwrite(path + '.letterbox.jpg', 255 * img.transpose((1, 2, 0))[:, :, ::-1]) # save letterbox image return path, img, img0, self.cap @@ -120,9 +118,8 @@ class LoadImages: # for inference class LoadWebcam: # for inference - def __init__(self, pipe=0, img_size=416, half=False): + def __init__(self, pipe=0, img_size=416): self.img_size = img_size - self.half = half # half precision fp16 images if pipe == '0': pipe = 0 # local camera @@ -177,8 +174,7 @@ class LoadWebcam: # for inference # Convert img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416 - img = np.ascontiguousarray(img, dtype=np.float16 if self.half else np.float32) # uint8 to fp16/fp32 - img /= 255.0 # 0 - 255 to 0.0 - 1.0 + img = np.ascontiguousarray(img) return img_path, img, img0, None @@ -187,10 +183,9 @@ class LoadWebcam: # for inference class LoadStreams: # multiple IP or RTSP cameras - def __init__(self, sources='streams.txt', img_size=416, half=False): + def __init__(self, sources='streams.txt', img_size=416): self.mode = 'images' self.img_size = img_size - self.half = half # half precision fp16 images if os.path.isfile(sources): with open(sources, 'r') as f: @@ -251,9 +246,8 @@ class LoadStreams: # multiple IP or RTSP cameras img = np.stack(img, 0) # Convert - img = img[:, :, :, ::-1].transpose(0, 3, 1, 2) # BGR to RGB, to 3x416x416, uint8 to float32 - img = np.ascontiguousarray(img, dtype=np.float16 if self.half else np.float32) - img /= 255.0 # 0 - 255 to 0.0 - 1.0 + img = img[:, :, :, ::-1].transpose(0, 3, 1, 2) # BGR to RGB, to bsx3x416x416 + img = np.ascontiguousarray(img) return self.sources, img, img0, None From 817c0bfeed617f50e5fa1d23d038770d49a624e8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 22 Feb 2020 21:17:38 -0800 Subject: [PATCH 2080/2595] updates --- train.py | 1 + 1 file changed, 1 insertion(+) diff --git a/train.py b/train.py index 0b459286..8d3a25d7 100644 --- a/train.py +++ b/train.py @@ -136,6 +136,7 @@ def train(): # lf = lambda x: 1 - x / epochs # linear ramp to zero # lf = lambda x: 10 ** (hyp['lrf'] * x / epochs) # exp ramp # lf = lambda x: 1 - 10 ** (hyp['lrf'] * (1 - x / epochs)) # inverse exp ramp + # lf = lambda x: 0.5 * (1 + math.cos(x * math.pi / epochs)) # cosine https://arxiv.org/pdf/1812.01187.pdf # scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf) # scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=range(59, 70, 1), gamma=0.8) # gradual fall to 0.1*lr0 scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=[round(opt.epochs * x) for x in [0.8, 0.9]], gamma=0.1) From b052085cc49ce7dc7d9ab3424e2a735d05fdb55b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 22 Feb 2020 21:21:45 -0800 Subject: [PATCH 2081/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 8d3a25d7..9c8fed87 100644 --- a/train.py +++ b/train.py @@ -139,7 +139,7 @@ def train(): # lf = lambda x: 0.5 * (1 + math.cos(x * math.pi / epochs)) # cosine https://arxiv.org/pdf/1812.01187.pdf # scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf) # scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=range(59, 70, 1), gamma=0.8) # gradual fall to 0.1*lr0 - scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=[round(opt.epochs * x) for x in [0.8, 0.9]], gamma=0.1) + scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=[round(epochs * x) for x in [0.8, 0.9]], gamma=0.1) scheduler.last_epoch = start_epoch - 1 # # Plot lr schedule From 2624d55623c9b1f8af5ff1e65af6311b7a0b2615 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 22 Feb 2020 21:24:56 -0800 Subject: [PATCH 2082/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 9c8fed87..0c63a514 100644 --- a/train.py +++ b/train.py @@ -147,7 +147,7 @@ def train(): # for _ in range(epochs): # scheduler.step() # y.append(optimizer.param_groups[0]['lr']) - # plt.plot(y, label='LambdaLR') + # plt.plot(y, '.-', label='LambdaLR') # plt.xlabel('epoch') # plt.ylabel('LR') # plt.tight_layout() From a3671bde94f8cb82089482202951be35e94705a9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 23 Feb 2020 18:33:32 -0800 Subject: [PATCH 2083/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 17a949e8..2b5f34cb 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -1041,7 +1041,7 @@ def plot_results(start=0, stop=0, bucket='', id=()): # from utils.utils import if i in [0, 1, 2, 5, 6, 7]: y[y == 0] = np.nan # dont show zero loss values # y /= y[0] # normalize - ax[i].plot(x, y, marker='.', label=Path(f).stem) + ax[i].plot(x, y, marker='.', label=Path(f).stem, linewidth=2, markersize=8) ax[i].set_title(s[i]) if i in [5, 6, 7]: # share train and val loss y axes ax[i].get_shared_y_axes().join(ax[i], ax[i - 5]) From ef3bd7e12b27b653d89a7fd0fed9913c8c9e3ea0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 24 Feb 2020 09:06:17 -0800 Subject: [PATCH 2084/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 0c63a514..24a2f7ab 100644 --- a/train.py +++ b/train.py @@ -140,7 +140,7 @@ def train(): # scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf) # scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=range(59, 70, 1), gamma=0.8) # gradual fall to 0.1*lr0 scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=[round(epochs * x) for x in [0.8, 0.9]], gamma=0.1) - scheduler.last_epoch = start_epoch - 1 + scheduler.last_epoch = start_epoch # # Plot lr schedule # y = [] From 24957dca986a635aa160a49256c5534ce484072a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 24 Feb 2020 12:21:47 -0800 Subject: [PATCH 2085/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 24a2f7ab..4208b4cd 100644 --- a/train.py +++ b/train.py @@ -211,13 +211,13 @@ def train(): torch_utils.model_info(model, report='summary') # 'full' or 'summary' print('Using %g dataloader workers' % nw) print('Starting training for %g epochs...' % epochs) - for epoch in range(start_epoch, epochs): # epoch ------------------------------ + for epoch in range(start_epoch, epochs): # epoch ------------------------------------------------------------------ model.train() # Prebias if prebias: if epoch < 3: # prebias - ps = 0.1, 0.9 # prebias settings (lr=0.1, momentum=0.9) + ps = np.interp(epoch, [0, 3], [0.1, hyp['lr0']]), 0.0 # prebias settings (lr=0.1, momentum=0.0) else: # normal training ps = hyp['lr0'], hyp['momentum'] # normal training settings print_model_biases(model) From 4b720013d1ef496200dd1022484c39b2f9473212 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 24 Feb 2020 12:43:13 -0800 Subject: [PATCH 2086/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 2b5f34cb..911d3f1a 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -401,7 +401,7 @@ def compute_loss(p, targets, model, giou_flag=True): # predictions, targets, mo pbox = torch.cat((pxy, pwh), 1) # predicted box giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation lbox += (1.0 - giou).sum() if red == 'sum' else (1.0 - giou).mean() # giou loss - tobj[b, a, gj, gi] = giou.detach().type(tobj.dtype) if giou_flag else 1.0 + tobj[b, a, gj, gi] = giou.detach().clamp(0).type(tobj.dtype) if giou_flag else 1.0 if 'default' in arc and model.nc > 1: # cls loss (only if multiple classes) t = torch.zeros_like(ps[:, 5:]) # targets From f743235fac9571a8ef8fdf873fd480c2abf5930d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 24 Feb 2020 12:44:22 -0800 Subject: [PATCH 2087/2595] updates --- train.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index 4208b4cd..5d8d3dc3 100644 --- a/train.py +++ b/train.py @@ -288,7 +288,7 @@ def train(): else: loss.backward() - # Accumulate gradient for x batches before optimizing + # Optimize accumulated gradient if ni % accumulate == 0: optimizer.step() optimizer.zero_grad() @@ -301,6 +301,9 @@ def train(): # end batch ------------------------------------------------------------------------------------------------ + # Update scheduler + scheduler.step() + # Process epoch results final_epoch = epoch + 1 == epochs if not opt.notest or final_epoch: # Calculate mAP @@ -316,9 +319,6 @@ def train(): single_cls=opt.single_cls, dataloader=testloader) - # Update scheduler - scheduler.step() - # Write epoch results with open(results_file, 'a') as f: f.write(s + '%10.3g' * 7 % results + '\n') # P, R, mAP, F1, test_losses=(GIoU, obj, cls) From 4f3d07f6898cfddf724b4c974e09e298a93b3540 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 25 Feb 2020 20:04:05 -0800 Subject: [PATCH 2088/2595] updates --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index a47bd3e4..5a95798f 100755 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,17 @@ # Repo-specific GitIgnore ---------------------------------------------------------------------------------------------- *.jpg +*.jpeg *.png *.bmp *.tif +*.tiff *.heic *.JPG +*.JPEG *.PNG +*.BMP *.TIF +*.TIFF *.HEIC *.mp4 *.mov From b12f1a9abe92288c98bfe7da00118ae81a7805e0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 25 Feb 2020 22:58:26 -0800 Subject: [PATCH 2089/2595] updates --- detect.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index dbf32028..64a7867d 100644 --- a/detect.py +++ b/detect.py @@ -45,11 +45,12 @@ def detect(save_img=False): if ONNX_EXPORT: model.fuse() img = torch.zeros((1, 3) + img_size) # (1, 3, 320, 192) - torch.onnx.export(model, img, 'weights/export.onnx', verbose=False, opset_version=11) + f = opt.weights.replace(opt.weights.split('.')[-1], 'onnx') # *.onnx filename + torch.onnx.export(model, img, f, verbose=False, opset_version=11) # Validate exported model import onnx - model = onnx.load('weights/export.onnx') # Load the ONNX model + model = onnx.load(f) # Load the ONNX model onnx.checker.check_model(model) # Check that the IR is well formed print(onnx.helper.printable_graph(model.graph)) # Print a human readable representation of the graph return From 2baa67cde2094c474fdc84c6eaa483416bea3459 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 26 Feb 2020 13:40:17 -0800 Subject: [PATCH 2090/2595] updates --- test.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test.py b/test.py index e1a80967..d7cc4294 100644 --- a/test.py +++ b/test.py @@ -25,7 +25,7 @@ def test(cfg, verbose = opt.task == 'test' # Remove previous - for f in glob.glob('test_batch*.jpg'): + for f in glob.glob('test_batch*.png'): os.remove(f) # Initialize model @@ -76,9 +76,9 @@ def test(cfg, _, _, height, width = imgs.shape # batch size, channels, height, width # Plot images with bounding boxes - if batch_i == 0 and not os.path.exists('test_batch0.png'): - plot_images(imgs=imgs, targets=targets, paths=paths, fname='test_batch0.png') - + f = 'test_batch%g.png' % batch_i # filename + if batch_i < 1 and not os.path.exists(f): + plot_images(imgs=imgs, targets=targets, paths=paths, fname=f) # Disable gradients with torch.no_grad(): From 7d7c22cb7ea60c825fc99aa9916a229f19457108 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 26 Feb 2020 13:42:50 -0800 Subject: [PATCH 2091/2595] updates --- train.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index 5d8d3dc3..3a35d65c 100644 --- a/train.py +++ b/train.py @@ -254,11 +254,11 @@ def train(): # x['weight_decay'] = hyp['weight_decay'] * g # Plot images with bounding boxes - if ni == 0: - fname = 'train_batch%g.png' % i - plot_images(imgs=imgs, targets=targets, paths=paths, fname=fname) + if ni < 1: + f = 'train_batch%g.png' % i # filename + plot_images(imgs=imgs, targets=targets, paths=paths, fname=f) if tb_writer: - tb_writer.add_image(fname, cv2.imread(fname)[:, :, ::-1], dataformats='HWC') + tb_writer.add_image(f, cv2.imread(f)[:, :, ::-1], dataformats='HWC') # Multi-Scale training if opt.multi_scale: From 764514e44da961b4f5a8df59a67f1a9496af9a71 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 26 Feb 2020 13:52:33 -0800 Subject: [PATCH 2092/2595] updates --- utils/adabound.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/adabound.py b/utils/adabound.py index 142b1262..8baa3780 100644 --- a/utils/adabound.py +++ b/utils/adabound.py @@ -1,7 +1,7 @@ import math import torch -from torch.optim import Optimizer +from torch.optim.optimizer import Optimizer class AdaBound(Optimizer): From e7f85bcfb9c6040db919187cf3b26b56aa9d0146 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 27 Feb 2020 11:29:38 -0800 Subject: [PATCH 2093/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index d7cc4294..1be99214 100644 --- a/test.py +++ b/test.py @@ -14,7 +14,7 @@ def test(cfg, batch_size=16, img_size=416, conf_thres=0.001, - iou_thres=0.5, # for nms + iou_thres=0.6, # for nms save_json=False, single_cls=False, model=None, From 7e92f70e052210c849f6d16786e31cd3239f6f98 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 27 Feb 2020 12:19:06 -0800 Subject: [PATCH 2094/2595] updates --- utils/google_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/google_utils.py b/utils/google_utils.py index 92fde590..cbfa3ec6 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -23,7 +23,7 @@ def gdrive_download(id='1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO', name='coco.zip'): "curl -Lb ./cookie -s \"https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=%s\" -o %s" % ( id, name), 'rm ./cookie'] - r = sum([os.system(x) for x in s]) # run commands, get return zeros + r = sum([os.system(x) for x in s][:2]) # run commands, get return zeros # Attempt small file download if not os.path.exists(name): # file size < 40MB From f3d3295f90531e064c50901319443a7feeb33bc9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 27 Feb 2020 12:38:14 -0800 Subject: [PATCH 2095/2595] updates --- utils/google_utils.py | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/utils/google_utils.py b/utils/google_utils.py index cbfa3ec6..820f4e08 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -15,25 +15,23 @@ def gdrive_download(id='1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO', name='coco.zip'): t = time.time() print('Downloading https://drive.google.com/uc?export=download&id=%s as %s... ' % (id, name), end='') - if os.path.exists(name): # remove existing - os.remove(name) + os.remove(name) if os.path.exists(name) else None # remove existing + os.remove('cookie') if os.path.exists('cookie') else None - # Attempt large file download - s = ["curl -c ./cookie -s -L \"https://drive.google.com/uc?export=download&id=%s\" > /dev/null" % id, - "curl -Lb ./cookie -s \"https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=%s\" -o %s" % ( - id, name), - 'rm ./cookie'] - r = sum([os.system(x) for x in s][:2]) # run commands, get return zeros - - # Attempt small file download - if not os.path.exists(name): # file size < 40MB + # Attempt file download + os.system("curl -c ./cookie -s -L \"https://drive.google.com/uc?export=download&id=%s\" > /dev/null" % id) + if os.path.exists('cookie'): # large file + s = "curl -Lb ./cookie -s \"https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=%s\" -o %s" % ( + id, name) + else: # small file s = 'curl -f -L -o %s https://drive.google.com/uc?export=download&id=%s' % (name, id) - r = os.system(s) + r = os.system(s) # execute, capture return values + os.remove('cookie') if os.path.exists('cookie') else None # Error check if r != 0: - os.system('rm ' + name) # remove partial downloads - print('ERROR: Download failure ') + os.remove(name) if os.path.exists(name) else None # remove partial + print('Download error ') # raise Exception('Download error') return r # Unzip if archive From de3e53960944a725e43dc234b2eb835a4626417a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 27 Feb 2020 12:49:01 -0800 Subject: [PATCH 2096/2595] updates --- utils/google_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/google_utils.py b/utils/google_utils.py index 820f4e08..20c3a3ba 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -24,7 +24,7 @@ def gdrive_download(id='1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO', name='coco.zip'): s = "curl -Lb ./cookie -s \"https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=%s\" -o %s" % ( id, name) else: # small file - s = 'curl -f -L -o %s https://drive.google.com/uc?export=download&id=%s' % (name, id) + s = "curl -f -L -o %s 'https://drive.google.com/uc?export=download&id=%s'" % (name, id) r = os.system(s) # execute, capture return values os.remove('cookie') if os.path.exists('cookie') else None From 6a99e39bd559ea265089e27efc938302b7568b74 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 27 Feb 2020 12:57:10 -0800 Subject: [PATCH 2097/2595] updates --- utils/google_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/google_utils.py b/utils/google_utils.py index 20c3a3ba..f7e2cac8 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -24,7 +24,7 @@ def gdrive_download(id='1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO', name='coco.zip'): s = "curl -Lb ./cookie -s \"https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=%s\" -o %s" % ( id, name) else: # small file - s = "curl -f -L -o %s 'https://drive.google.com/uc?export=download&id=%s'" % (name, id) + s = "curl -s -L -o %s 'https://drive.google.com/uc?export=download&id=%s'" % (name, id) r = os.system(s) # execute, capture return values os.remove('cookie') if os.path.exists('cookie') else None From 3a1ca6454c065b786b37c4b1cc660f9f16e76bb4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 27 Feb 2020 13:00:00 -0800 Subject: [PATCH 2098/2595] updates --- utils/google_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/google_utils.py b/utils/google_utils.py index f7e2cac8..1679f0fe 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -21,7 +21,7 @@ def gdrive_download(id='1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO', name='coco.zip'): # Attempt file download os.system("curl -c ./cookie -s -L \"https://drive.google.com/uc?export=download&id=%s\" > /dev/null" % id) if os.path.exists('cookie'): # large file - s = "curl -Lb ./cookie -s \"https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=%s\" -o %s" % ( + s = "curl -Lb ./cookie \"https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=%s\" -o %s" % ( id, name) else: # small file s = "curl -s -L -o %s 'https://drive.google.com/uc?export=download&id=%s'" % (name, id) From 0fb4a46ace6d32b323039ee40cddc0566ef6b0b8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 27 Feb 2020 13:30:23 -0800 Subject: [PATCH 2099/2595] updates --- cfg/yolov4-tiny-1cls.cfg | 233 +++++++++++++++++++++++++++++++++++++++ cfg/yolov4-tiny.cfg | 233 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 466 insertions(+) create mode 100644 cfg/yolov4-tiny-1cls.cfg create mode 100644 cfg/yolov4-tiny.cfg diff --git a/cfg/yolov4-tiny-1cls.cfg b/cfg/yolov4-tiny-1cls.cfg new file mode 100644 index 00000000..7cf2dd4e --- /dev/null +++ b/cfg/yolov4-tiny-1cls.cfg @@ -0,0 +1,233 @@ +# Generated by Glenn Jocher (glenn.jocher@ultralytics.com) for https://github.com/ultralytics/yolov3 +# def kmean_anchors(path='../coco/train2017.txt', n=12, img_size=(320, 640)): # from utils.utils import *; kmean_anchors() +# Evolving anchors: 100%|██████████| 1000/1000 [41:15<00:00, 2.48s/it] +# 0.20 iou_thr: 0.992 best possible recall, 4.25 anchors > thr +# kmeans anchors (n=12, img_size=(320, 640), IoU=0.005/0.184/0.634-min/mean/best): 6,9, 15,16, 17,35, 37,26, 36,67, 63,42, 57,100, 121,81, 112,169, 241,158, 195,310, 426,359 + +[net] +# Testing +# batch=1 +# subdivisions=1 +# Training +batch=64 +subdivisions=16 +width=608 +height=608 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 200000 +policy=steps +steps=180000,190000 +scales=.1,.1 + + +[convolutional] +batch_normalize=1 +filters=16 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=1 + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +########### + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=24 +activation=linear + + + +[yolo] +mask = 8,9,10,11 +anchors = 6,9, 15,16, 17,35, 37,26, 36,67, 63,42, 57,100, 121,81, 112,169, 241,158, 195,310, 426,359 +classes=1 +num=12 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 8 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=24 +activation=linear + +[yolo] +mask = 4,5,6,7 +anchors = 6,9, 15,16, 17,35, 37,26, 36,67, 63,42, 57,100, 121,81, 112,169, 241,158, 195,310, 426,359 +classes=1 +num=12 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = -3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 6 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=24 +activation=linear + +[yolo] +mask = 0,1,2,3 +anchors = 6,9, 15,16, 17,35, 37,26, 36,67, 63,42, 57,100, 121,81, 112,169, 241,158, 195,310, 426,359 +classes=1 +num=12 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 diff --git a/cfg/yolov4-tiny.cfg b/cfg/yolov4-tiny.cfg new file mode 100644 index 00000000..5548ca60 --- /dev/null +++ b/cfg/yolov4-tiny.cfg @@ -0,0 +1,233 @@ +# Generated by Glenn Jocher (glenn.jocher@ultralytics.com) for https://github.com/ultralytics/yolov3 +# def kmean_anchors(path='../coco/train2017.txt', n=12, img_size=(320, 640)): # from utils.utils import *; kmean_anchors() +# Evolving anchors: 100%|██████████| 1000/1000 [41:15<00:00, 2.48s/it] +# 0.20 iou_thr: 0.992 best possible recall, 4.25 anchors > thr +# kmeans anchors (n=12, img_size=(320, 640), IoU=0.005/0.184/0.634-min/mean/best): 6,9, 15,16, 17,35, 37,26, 36,67, 63,42, 57,100, 121,81, 112,169, 241,158, 195,310, 426,359 + +[net] +# Testing +# batch=1 +# subdivisions=1 +# Training +batch=64 +subdivisions=16 +width=608 +height=608 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.001 +burn_in=1000 +max_batches = 200000 +policy=steps +steps=180000,190000 +scales=.1,.1 + + +[convolutional] +batch_normalize=1 +filters=16 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[maxpool] +size=2 +stride=1 + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=1 +pad=1 +activation=leaky + +########### + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=340 +activation=linear + + + +[yolo] +mask = 8,9,10,11 +anchors = 6,9, 15,16, 17,35, 37,26, 36,67, 63,42, 57,100, 121,81, 112,169, 241,158, 195,310, 426,359 +classes=80 +num=12 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 8 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=340 +activation=linear + +[yolo] +mask = 4,5,6,7 +anchors = 6,9, 15,16, 17,35, 37,26, 36,67, 63,42, 57,100, 121,81, 112,169, 241,158, 195,310, 426,359 +classes=80 +num=12 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 + + + +[route] +layers = -3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 6 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=340 +activation=linear + +[yolo] +mask = 0,1,2,3 +anchors = 6,9, 15,16, 17,35, 37,26, 36,67, 63,42, 57,100, 121,81, 112,169, 241,158, 195,310, 426,359 +classes=80 +num=12 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 From d5815ebfd28ef44deeae0b61c8dc41e18f4197cf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 27 Feb 2020 13:40:14 -0800 Subject: [PATCH 2100/2595] updates --- train.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index 3a35d65c..c38d375b 100644 --- a/train.py +++ b/train.py @@ -132,6 +132,10 @@ def train(): # possible weights are '*.weights', 'yolov3-tiny.conv.15', 'darknet53.conv.74' etc. load_darknet_weights(model, weights) + # Mixed precision training https://github.com/NVIDIA/apex + if mixed_precision: + model, optimizer = amp.initialize(model, optimizer, opt_level='O1', verbosity=0) + # Scheduler https://github.com/ultralytics/yolov3/issues/238 # lf = lambda x: 1 - x / epochs # linear ramp to zero # lf = lambda x: 10 ** (hyp['lrf'] * x / epochs) # exp ramp @@ -153,10 +157,6 @@ def train(): # plt.tight_layout() # plt.savefig('LR.png', dpi=300) - # Mixed precision training https://github.com/NVIDIA/apex - if mixed_precision: - model, optimizer = amp.initialize(model, optimizer, opt_level='O1', verbosity=0) - # Initialize distributed training if device.type != 'cpu' and torch.cuda.device_count() > 1: dist.init_process_group(backend='nccl', # 'distributed backend' From b3ecfb10bcefbe6ed4513cbc4249dc0d45b56578 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 27 Feb 2020 22:50:26 -0800 Subject: [PATCH 2101/2595] updates --- utils/torch_utils.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index b984b265..a93b79d1 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -1,6 +1,7 @@ import os import torch +import torch.backends.cudnn as cudnn def init_seeds(seed=0): @@ -8,8 +9,8 @@ def init_seeds(seed=0): # Remove randomness (may be slower on Tesla GPUs) # https://pytorch.org/docs/stable/notes/randomness.html if seed == 0: - torch.backends.cudnn.deterministic = True - torch.backends.cudnn.benchmark = False + cudnn.deterministic = True + cudnn.benchmark = False def select_device(device='', apex=False, batch_size=None): From cc08e09219960f70f4a70ef5ee0c13dfafe3832a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 28 Feb 2020 10:06:35 -0800 Subject: [PATCH 2102/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 9214bfc2..fe21ad50 100755 --- a/models.py +++ b/models.py @@ -35,7 +35,7 @@ def create_modules(module_defs, img_size, arc): bias=not bn)) if bn: modules.add_module('BatchNorm2d', nn.BatchNorm2d(filters, momentum=0.1)) - if mdef['activation'] == 'leaky': # TODO: activation study https://github.com/ultralytics/yolov3/issues/441 + if mdef['activation'] == 'leaky': # activation study https://github.com/ultralytics/yolov3/issues/441 modules.add_module('activation', nn.LeakyReLU(0.1, inplace=True)) # modules.add_module('activation', nn.PReLU(num_parameters=1, init=0.10)) elif mdef['activation'] == 'swish': From e6cda0fea41c32d4f3f6d1d2a8808eeea0ab19d2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 29 Feb 2020 01:15:23 -0800 Subject: [PATCH 2103/2595] updates --- README.md | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 7977c7a5..a9d6d920 100755 --- a/README.md +++ b/README.md @@ -147,31 +147,31 @@ $ python3 test.py --cfg yolov3-spp.cfg --weights yolov3-spp-ultralytics.pt |Size |COCO mAP
@0.5...0.95 |COCO mAP
@0.5 --- | --- | --- | --- -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |320 |14.0
28.7
30.5
**36.4** |29.1
51.8
52.3
**55.7** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |416 |16.0
31.2
33.9
**40.0** |33.0
55.4
56.9
**60.0** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |512 |16.6
32.7
35.6
**41.5** |34.9
57.7
59.5
**61.4** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |608 |16.6
33.1
37.0
**41.9** |35.4
58.2
60.7
**61.6** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |320 |14.0
28.7
30.5
**36.6** |29.1
51.8
52.3
**56.0** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |416 |16.0
31.2
33.9
**40.4** |33.0
55.4
56.9
**60.2** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |512 |16.6
32.7
35.6
**41.6** |34.9
57.7
59.5
**61.7** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |608 |16.6
33.1
37.0
**42.1** |35.4
58.2
60.7
**61.7** ```bash $ python3 test.py --cfg yolov3-spp.cfg --weights yolov3-spp-ultralytics.pt --img 608 -Namespace(batch_size=32, cfg='yolov3-spp.cfg', conf_thres=0.001, data='data/coco2014.data', device='', img_size=608, iou_thres=0.6, save_json=True, single_cls=False, task='test', weights='yolov3-spp-ultralytics.pt') -Using CUDA device0 _CudaDeviceProperties(name='Tesla T4', total_memory=15079MB) +Namespace(batch_size=32, cfg='yolov3-spp', conf_thres=0.001, data='data/coco2014.data', device='', img_size=608, iou_thres=0.6, save_json=True, single_cls=False, task='test', weights='last82.pt') +Using CUDA device0 _CudaDeviceProperties(name='Tesla P100-PCIE-16GB', total_memory=16280MB) - Class Images Targets P R mAP@0.5 F1: 100% 157/157 [04:25<00:00, 1.01s/it] - all 5e+03 3.51e+04 0.0453 0.885 0.609 0.0852 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.417 - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.616 + Class Images Targets P R mAP@0.5 F1: 100% 157/157 [03:12<00:00, 1.50it/s] + all 5e+03 3.51e+04 0.0573 0.871 0.611 0.106 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.419 + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.618 Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.448 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.242 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.247 Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.462 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.522 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.337 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.559 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.611 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.436 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.659 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.741 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.534 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.341 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.557 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.606 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.440 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.649 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.735 ``` # Reproduce Our Results From 7823473d2f865536bdc267d9752785cba91189a3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 1 Mar 2020 20:55:20 -0800 Subject: [PATCH 2104/2595] updates --- train.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/train.py b/train.py index c38d375b..1a32e3c0 100644 --- a/train.py +++ b/train.py @@ -97,6 +97,7 @@ def train(): optimizer = optim.SGD(pg0, lr=hyp['lr0'], momentum=hyp['momentum'], nesterov=True) optimizer.add_param_group({'params': pg1, 'weight_decay': hyp['weight_decay']}) # add pg1 with weight_decay optimizer.add_param_group({'params': pg2}) # add pg2 (biases) + optimizer.param_groups[2]['lr'] *= 2.0 # bias lr del pg0, pg1, pg2 start_epoch = 0 @@ -140,10 +141,9 @@ def train(): # lf = lambda x: 1 - x / epochs # linear ramp to zero # lf = lambda x: 10 ** (hyp['lrf'] * x / epochs) # exp ramp # lf = lambda x: 1 - 10 ** (hyp['lrf'] * (1 - x / epochs)) # inverse exp ramp - # lf = lambda x: 0.5 * (1 + math.cos(x * math.pi / epochs)) # cosine https://arxiv.org/pdf/1812.01187.pdf - # scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf) - # scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=range(59, 70, 1), gamma=0.8) # gradual fall to 0.1*lr0 - scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=[round(epochs * x) for x in [0.8, 0.9]], gamma=0.1) + lf = lambda x: 0.5 * (1 + math.cos(x * math.pi / epochs)) # cosine https://arxiv.org/pdf/1812.01187.pdf + scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf) + # scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=[round(epochs * x) for x in [0.8, 0.9]], gamma=0.1) scheduler.last_epoch = start_epoch # # Plot lr schedule @@ -216,10 +216,10 @@ def train(): # Prebias if prebias: - if epoch < 3: # prebias - ps = np.interp(epoch, [0, 3], [0.1, hyp['lr0']]), 0.0 # prebias settings (lr=0.1, momentum=0.0) - else: # normal training - ps = hyp['lr0'], hyp['momentum'] # normal training settings + ne = 3 # number of prebias epochs + ps = np.interp(epoch, [0, ne], [0.1, hyp['lr0'] * 2]), \ + np.interp(epoch, [0, ne], [0.9, hyp['momentum']]) # prebias settings (lr=0.1, momentum=0.9) + if epoch == ne: print_model_biases(model) prebias = False From 84371f68117cae975eabfa78cdf8a2aa1b78e4ba Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 1 Mar 2020 21:33:16 -0800 Subject: [PATCH 2105/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 1a32e3c0..88cf3c42 100644 --- a/train.py +++ b/train.py @@ -158,7 +158,7 @@ def train(): # plt.savefig('LR.png', dpi=300) # Initialize distributed training - if device.type != 'cpu' and torch.cuda.device_count() > 1: + if device.type != 'cpu' and torch.cuda.device_count() > 1 and torch.distributed.is_available(): dist.init_process_group(backend='nccl', # 'distributed backend' init_method='tcp://127.0.0.1:9999', # distributed training init method world_size=1, # number of nodes for distributed training From 44daace4caa901efe9b5151b99d86f083a428039 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 2 Mar 2020 14:07:09 -0800 Subject: [PATCH 2106/2595] updates --- test.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/test.py b/test.py index 1be99214..53fa7836 100644 --- a/test.py +++ b/test.py @@ -223,8 +223,8 @@ if __name__ == '__main__': opt.save_json = opt.save_json or any([x in opt.data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) print(opt) - if opt.task == 'test': # task = 'test', 'study', 'benchmark' - # Test + # task = 'test', 'study', 'benchmark' + if opt.task == 'test': # (default) test normally test(opt.cfg, opt.data, opt.weights, @@ -235,20 +235,18 @@ if __name__ == '__main__': opt.save_json, opt.single_cls) - elif opt.task == 'benchmark': - # mAPs at 320-608 at conf 0.5 and 0.7 + elif opt.task == 'benchmark': # mAPs at 320-608 at conf 0.5 and 0.7 y = [] - for i in [320, 416, 512, 608]: - for j in [0.5, 0.7]: + for i in [320, 416, 512, 608]: # img-size + for j in [0.5, 0.7]: # iou-thres t = time.time() r = test(opt.cfg, opt.data, opt.weights, opt.batch_size, i, opt.conf_thres, j, opt.save_json)[0] y.append(r + (time.time() - t,)) np.savetxt('benchmark.txt', y, fmt='%10.4g') # y = np.loadtxt('study.txt') - elif opt.task == 'study': - # Parameter study + elif opt.task == 'study': # Parameter study y = [] - x = np.arange(0.4, 0.9, 0.05) + x = np.arange(0.4, 0.9, 0.05) # iou-thres for i in x: t = time.time() r = test(opt.cfg, opt.data, opt.weights, opt.batch_size, opt.img_size, opt.conf_thres, i, opt.save_json)[0] From 2774c1b398230718816fc46ae2a6413febcb9922 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 2 Mar 2020 14:28:08 -0800 Subject: [PATCH 2107/2595] updates --- test.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test.py b/test.py index 53fa7836..caa4284c 100644 --- a/test.py +++ b/test.py @@ -55,7 +55,8 @@ def test(cfg, # Dataloader if dataloader is None: - dataset = LoadImagesAndLabels(path, img_size, batch_size, rect=True) + dataset = LoadImagesAndLabels(path, img_size, batch_size, rect=True, single_cls=opt.single_cls, + cache_labels=True) batch_size = min(batch_size, len(dataset)) dataloader = DataLoader(dataset, batch_size=batch_size, From dce753ead4a8378055fc07be54c3f54bcf55e2ed Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 2 Mar 2020 14:30:01 -0800 Subject: [PATCH 2108/2595] updates --- test.py | 3 +-- train.py | 2 -- utils/datasets.py | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/test.py b/test.py index caa4284c..6bcf3d07 100644 --- a/test.py +++ b/test.py @@ -55,8 +55,7 @@ def test(cfg, # Dataloader if dataloader is None: - dataset = LoadImagesAndLabels(path, img_size, batch_size, rect=True, single_cls=opt.single_cls, - cache_labels=True) + dataset = LoadImagesAndLabels(path, img_size, batch_size, rect=True, single_cls=opt.single_cls) batch_size = min(batch_size, len(dataset)) dataloader = DataLoader(dataset, batch_size=batch_size, diff --git a/train.py b/train.py index 88cf3c42..9e919f88 100644 --- a/train.py +++ b/train.py @@ -171,7 +171,6 @@ def train(): augment=True, hyp=hyp, # augmentation hyperparameters rect=opt.rect, # rectangular training - cache_labels=True, cache_images=opt.cache_images, single_cls=opt.single_cls) @@ -189,7 +188,6 @@ def train(): testloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path, img_size_test, batch_size * 2, hyp=hyp, rect=True, - cache_labels=True, cache_images=opt.cache_images, single_cls=opt.single_cls), batch_size=batch_size * 2, diff --git a/utils/datasets.py b/utils/datasets.py index b465a2e6..ff053856 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -257,7 +257,7 @@ class LoadStreams: # multiple IP or RTSP cameras class LoadImagesAndLabels(Dataset): # for training/testing def __init__(self, path, img_size=416, batch_size=16, augment=False, hyp=None, rect=False, image_weights=False, - cache_labels=False, cache_images=False, single_cls=False): + cache_labels=True, cache_images=False, single_cls=False): path = str(Path(path)) # os-agnostic assert os.path.isfile(path), 'File not found %s. See %s' % (path, help_url) with open(path, 'r') as f: From 308f7c856330235470c4725dbb8e87a92eb24c24 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 3 Mar 2020 19:16:13 -0800 Subject: [PATCH 2109/2595] updates --- utils/utils.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 911d3f1a..62e2cf49 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -524,10 +524,6 @@ def non_max_suppression(prediction, conf_thres=0.5, iou_thres=0.5, multi_cls=Tru # Apply width-height constraint pred = pred[(pred[:, 2:4] > min_wh).all(1) & (pred[:, 2:4] < max_wh).all(1)] - # If none remain process next image - if len(pred) == 0: - continue - # Compute conf pred[..., 5:] *= pred[..., 4:5] # conf = obj_conf * cls_conf @@ -550,6 +546,10 @@ def non_max_suppression(prediction, conf_thres=0.5, iou_thres=0.5, multi_cls=Tru if not torch.isfinite(pred).all(): pred = pred[torch.isfinite(pred).all(1)] + # If none remain process next image + if not pred.shape[0]: + continue + # Batched NMS if method == 'vision_batch': c = pred[:, 5] * 0 if agnostic else pred[:, 5] # class-agnostic NMS From 166f8c0e5378c68e718a89420efbab66d3cf9f18 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Mar 2020 00:07:19 -0800 Subject: [PATCH 2110/2595] updates --- utils/utils.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 62e2cf49..607cfb1b 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -501,7 +501,7 @@ def build_targets(model, targets): return tcls, tbox, indices, av -def non_max_suppression(prediction, conf_thres=0.5, iou_thres=0.5, multi_cls=True, classes=None, agnostic=False): +def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_cls=True, classes=None, agnostic=False): """ Removes detections with lower object confidence score than 'conf_thres' Non-Maximum Suppression to further filter detections. @@ -513,7 +513,8 @@ def non_max_suppression(prediction, conf_thres=0.5, iou_thres=0.5, multi_cls=Tru # Box constraints min_wh, max_wh = 2, 4096 # (pixels) minimum and maximum box width and height - method = 'vision_batch' + method = 'fast_batch' + batched = 'batch' in method # run once per image, all classes simultaneously nc = prediction[0].shape[1] - 5 # number of classes multi_cls = multi_cls and (nc > 1) # allow multiple classes per anchor output = [None] * len(prediction) @@ -550,16 +551,24 @@ def non_max_suppression(prediction, conf_thres=0.5, iou_thres=0.5, multi_cls=Tru if not pred.shape[0]: continue - # Batched NMS - if method == 'vision_batch': - c = pred[:, 5] * 0 if agnostic else pred[:, 5] # class-agnostic NMS - output[image_i] = pred[torchvision.ops.boxes.batched_nms(pred[:, :4], pred[:, 4], c, iou_thres)] - continue - # Sort by confidence if not method.startswith('vision'): pred = pred[pred[:, 4].argsort(descending=True)] + # Batched NMS + if batched: + c = pred[:, 5] * 0 if agnostic else pred[:, 5] # class-agnostic NMS + boxes, scores = pred[:, :4].clone(), pred[:, 4] + if method == 'vision_batch': + i = torchvision.ops.boxes.batched_nms(boxes, scores, c, iou_thres) + elif method == 'fast_batch': # FastNMS from https://github.com/dbolya/yolact + boxes += c.view(-1, 1) * max_wh + iou = box_iou(boxes, boxes).triu_(diagonal=1) # zero upper triangle iou matrix + i = iou.max(dim=0)[0] < iou_thres + + output[image_i] = pred[i] + continue + # All other NMS methods det_max = [] cls = pred[:, -1] From f915bf175c02911a1f40fbd2de8494963d4e7914 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Mar 2020 00:08:18 -0800 Subject: [PATCH 2111/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 607cfb1b..1c1368b3 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -513,7 +513,7 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_cls=Tru # Box constraints min_wh, max_wh = 2, 4096 # (pixels) minimum and maximum box width and height - method = 'fast_batch' + method = 'vision_batch' batched = 'batch' in method # run once per image, all classes simultaneously nc = prediction[0].shape[1] - 5 # number of classes multi_cls = multi_cls and (nc > 1) # allow multiple classes per anchor From be01fc357b67da6af1018dd309215d7f297b0eb5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Mar 2020 00:22:01 -0800 Subject: [PATCH 2112/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 1c1368b3..65ffbb1c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -563,7 +563,7 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_cls=Tru i = torchvision.ops.boxes.batched_nms(boxes, scores, c, iou_thres) elif method == 'fast_batch': # FastNMS from https://github.com/dbolya/yolact boxes += c.view(-1, 1) * max_wh - iou = box_iou(boxes, boxes).triu_(diagonal=1) # zero upper triangle iou matrix + iou = box_iou(boxes, boxes).triu_(diagonal=1) # upper triangular iou matrix i = iou.max(dim=0)[0] < iou_thres output[image_i] = pred[i] From eb81c0b9ae9592da3c801da8ca25a961127484ce Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Mar 2020 01:47:31 -0800 Subject: [PATCH 2113/2595] updates --- test.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/test.py b/test.py index 6bcf3d07..bfbdb09d 100644 --- a/test.py +++ b/test.py @@ -74,6 +74,7 @@ def test(cfg, imgs = imgs.to(device).float() / 255.0 # uint8 to float32, 0 - 255 to 0.0 - 1.0 targets = targets.to(device) _, _, height, width = imgs.shape # batch size, channels, height, width + whwh = torch.Tensor([width, height, width, height]).to(device) # Plot images with bounding boxes f = 'test_batch%g.png' % batch_i # filename @@ -126,13 +127,13 @@ def test(cfg, 'score': floatn(d[4], 5)}) # Assign all predictions as incorrect - correct = torch.zeros(len(pred), niou, dtype=torch.bool) + correct = torch.zeros(len(pred), niou, dtype=torch.bool, device=device) if nl: detected = [] # target indices tcls_tensor = labels[:, 0] # target boxes - tbox = xywh2xyxy(labels[:, 1:5]) * torch.Tensor([width, height, width, height]).to(device) + tbox = xywh2xyxy(labels[:, 1:5]) * whwh # Per target class for cls in torch.unique(tcls_tensor): @@ -140,7 +141,7 @@ def test(cfg, pi = (cls == pred[:, 5]).nonzero().view(-1) # target indices # Search for detections - if len(pi): + if pi.shape[0]: # Prediction to target ious ious, i = box_iou(pred[pi, :4], tbox[ti]).max(1) # best ious, indices @@ -149,12 +150,12 @@ def test(cfg, d = ti[i[j]] # detected target if d not in detected: detected.append(d) - correct[pi[j]] = (ious[j] > iouv).cpu() # iou_thres is 1xn + correct[pi[j]] = ious[j] > iouv # iou_thres is 1xn if len(detected) == nl: # all targets already located in image break # Append statistics (correct, conf, pcls, tcls) - stats.append((correct, pred[:, 4].cpu(), pred[:, 5].cpu(), tcls)) + stats.append((correct.cpu(), pred[:, 4].cpu(), pred[:, 5].cpu(), tcls)) # Compute statistics stats = [np.concatenate(x, 0) for x in zip(*stats)] # to numpy From e482392161c30d4e4dbf4b4eebdb4672fcc6a134 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Mar 2020 09:00:48 -0800 Subject: [PATCH 2114/2595] updates --- test.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/test.py b/test.py index bfbdb09d..52a29061 100644 --- a/test.py +++ b/test.py @@ -67,7 +67,7 @@ def test(cfg, model.eval() coco91class = coco80_to_coco91_class() s = ('%20s' + '%10s' * 6) % ('Class', 'Images', 'Targets', 'P', 'R', 'mAP@0.5', 'F1') - p, r, f1, mp, mr, map, mf1 = 0., 0., 0., 0., 0., 0., 0. + p, r, f1, mp, mr, map, mf1, t0, t1 = 0., 0., 0., 0., 0., 0., 0., 0., 0. loss = torch.zeros(3) jdict, stats, ap, ap_class = [], [], [], [] for batch_i, (imgs, targets, paths, shapes) in enumerate(tqdm(dataloader, desc=s)): @@ -84,14 +84,18 @@ def test(cfg, # Disable gradients with torch.no_grad(): # Run model + t = time.time() inf_out, train_out = model(imgs) # inference and training outputs + t0 += time.time() - t # Compute loss if hasattr(model, 'hyp'): # if model has loss hyperparameters loss += compute_loss(train_out, targets, model)[1][:3].cpu() # GIoU, obj, cls # Run NMS + t = time.time() output = non_max_suppression(inf_out, conf_thres=conf_thres, iou_thres=iou_thres) + t1 += time.time() - t # Statistics per image for si, pred in enumerate(output): @@ -177,6 +181,11 @@ def test(cfg, for i, c in enumerate(ap_class): print(pf % (names[c], seen, nt[c], p[i], r[i], ap[i], f1[i])) + # Print profile results + if opt.profile: + t = tuple(x / seen * 1E3 for x in (t0, t1, t0 + t1)) + print('Profile results: %.1f/%.1f/%.1f ms inference/NMS/total per image' % t) + # Save JSON if save_json and map and len(jdict): imgIds = [int(Path(x).stem.split('_')[-1]) for x in dataloader.dataset.img_files] @@ -220,6 +229,7 @@ if __name__ == '__main__': parser.add_argument('--task', default='test', help="'test', 'study', 'benchmark'") parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') parser.add_argument('--single-cls', action='store_true', help='train as single-class dataset') + parser.add_argument('--profile', action='store_true', help='profile inference and NMS times') opt = parser.parse_args() opt.save_json = opt.save_json or any([x in opt.data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) print(opt) From 35eae3ace984595981136b899a76563a638f2a5b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Mar 2020 09:53:02 -0800 Subject: [PATCH 2115/2595] updates --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 65ffbb1c..2f38ba73 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -523,7 +523,7 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_cls=Tru pred = pred[pred[:, 4] > conf_thres] # Apply width-height constraint - pred = pred[(pred[:, 2:4] > min_wh).all(1) & (pred[:, 2:4] < max_wh).all(1)] + pred = pred[((pred[:, 2:4] > min_wh) & (pred[:, 2:4] < max_wh)).all(1)] # Compute conf pred[..., 5:] *= pred[..., 4:5] # conf = obj_conf * cls_conf From 1430a1e4083609ab197cf1947a12ab8692b20593 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Mar 2020 10:26:35 -0800 Subject: [PATCH 2116/2595] updates --- test.py | 10 +++++----- utils/torch_utils.py | 6 ++++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/test.py b/test.py index 52a29061..1c04af78 100644 --- a/test.py +++ b/test.py @@ -84,18 +84,18 @@ def test(cfg, # Disable gradients with torch.no_grad(): # Run model - t = time.time() + t = torch_utils.time_synchronized() inf_out, train_out = model(imgs) # inference and training outputs - t0 += time.time() - t + t0 += torch_utils.time_synchronized() - t # Compute loss if hasattr(model, 'hyp'): # if model has loss hyperparameters loss += compute_loss(train_out, targets, model)[1][:3].cpu() # GIoU, obj, cls # Run NMS - t = time.time() - output = non_max_suppression(inf_out, conf_thres=conf_thres, iou_thres=iou_thres) - t1 += time.time() - t + t = torch_utils.time_synchronized() + output = non_max_suppression(inf_out, conf_thres=conf_thres, iou_thres=iou_thres) # nms + t1 += torch_utils.time_synchronized() - t # Statistics per image for si, pred in enumerate(output): diff --git a/utils/torch_utils.py b/utils/torch_utils.py index a93b79d1..869575de 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -1,4 +1,5 @@ import os +import time import torch import torch.backends.cudnn as cudnn @@ -40,6 +41,11 @@ def select_device(device='', apex=False, batch_size=None): return torch.device('cuda:0' if cuda else 'cpu') +def time_synchronized(): + torch.cuda.synchronize() if torch.cuda.is_available() else None + return time.time() + + def fuse_conv_and_bn(conv, bn): # https://tehnokv.com/posts/fusing-batchnorm-and-conv/ with torch.no_grad(): From 3e633783d8c877f1b383d1e189642d2afac11180 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Mar 2020 11:36:21 -0800 Subject: [PATCH 2117/2595] updates --- test.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index 1c04af78..49ea0a2b 100644 --- a/test.py +++ b/test.py @@ -17,6 +17,7 @@ def test(cfg, iou_thres=0.6, # for nms save_json=False, single_cls=False, + profile=False, model=None, dataloader=None): # Initialize/load model and set device @@ -182,7 +183,7 @@ def test(cfg, print(pf % (names[c], seen, nt[c], p[i], r[i], ap[i], f1[i])) # Print profile results - if opt.profile: + if profile: t = tuple(x / seen * 1E3 for x in (t0, t1, t0 + t1)) print('Profile results: %.1f/%.1f/%.1f ms inference/NMS/total per image' % t) @@ -244,7 +245,8 @@ if __name__ == '__main__': opt.conf_thres, opt.iou_thres, opt.save_json, - opt.single_cls) + opt.single_cls, + opt.profile) elif opt.task == 'benchmark': # mAPs at 320-608 at conf 0.5 and 0.7 y = [] From 9c661e2d53bcaf57fe5db9092e1fd872ffc52bc4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Mar 2020 12:17:37 -0800 Subject: [PATCH 2118/2595] updates --- test.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test.py b/test.py index 49ea0a2b..c0034779 100644 --- a/test.py +++ b/test.py @@ -69,7 +69,7 @@ def test(cfg, coco91class = coco80_to_coco91_class() s = ('%20s' + '%10s' * 6) % ('Class', 'Images', 'Targets', 'P', 'R', 'mAP@0.5', 'F1') p, r, f1, mp, mr, map, mf1, t0, t1 = 0., 0., 0., 0., 0., 0., 0., 0., 0. - loss = torch.zeros(3) + loss = torch.zeros(3, device=device) jdict, stats, ap, ap_class = [], [], [], [] for batch_i, (imgs, targets, paths, shapes) in enumerate(tqdm(dataloader, desc=s)): imgs = imgs.to(device).float() / 255.0 # uint8 to float32, 0 - 255 to 0.0 - 1.0 @@ -91,7 +91,7 @@ def test(cfg, # Compute loss if hasattr(model, 'hyp'): # if model has loss hyperparameters - loss += compute_loss(train_out, targets, model)[1][:3].cpu() # GIoU, obj, cls + loss += compute_loss(train_out, targets, model)[1][:3] # GIoU, obj, cls # Run NMS t = torch_utils.time_synchronized() @@ -132,7 +132,7 @@ def test(cfg, 'score': floatn(d[4], 5)}) # Assign all predictions as incorrect - correct = torch.zeros(len(pred), niou, dtype=torch.bool, device=device) + correct = torch.zeros(pred.shape[0], niou, dtype=torch.bool, device=device) if nl: detected = [] # target indices tcls_tensor = labels[:, 0] @@ -214,7 +214,7 @@ def test(cfg, maps = np.zeros(nc) + map for i, c in enumerate(ap_class): maps[c] = ap[i] - return (mp, mr, map, mf1, *(loss / len(dataloader)).tolist()), maps + return (mp, mr, map, mf1, *(loss.cpu() / len(dataloader)).tolist()), maps if __name__ == '__main__': From 6ab753a9e7a9c88ff26530ffa23d7350f3bda552 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Mar 2020 13:06:31 -0800 Subject: [PATCH 2119/2595] updates --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 9e919f88..b2d6cb10 100644 --- a/train.py +++ b/train.py @@ -28,7 +28,7 @@ hyp = {'giou': 3.54, # giou loss gain 'obj': 64.3, # obj loss gain (*=img_size/320 if img_size != 320) 'obj_pw': 1.0, # obj BCELoss positive_weight 'iou_t': 0.225, # iou training threshold - 'lr0': 0.00579, # initial learning rate (SGD=5E-3, Adam=5E-4) + 'lr0': 0.01, # initial learning rate (SGD=5E-3, Adam=5E-4) 'lrf': -4., # final LambdaLR learning rate = lr0 * (10 ** lrf) 'momentum': 0.937, # SGD momentum 'weight_decay': 0.000484, # optimizer weight decay @@ -141,7 +141,7 @@ def train(): # lf = lambda x: 1 - x / epochs # linear ramp to zero # lf = lambda x: 10 ** (hyp['lrf'] * x / epochs) # exp ramp # lf = lambda x: 1 - 10 ** (hyp['lrf'] * (1 - x / epochs)) # inverse exp ramp - lf = lambda x: 0.5 * (1 + math.cos(x * math.pi / epochs)) # cosine https://arxiv.org/pdf/1812.01187.pdf + lf = lambda x: (1 + math.cos(x * math.pi / epochs)) / 2 * 0.99 + 0.01 # cosine https://arxiv.org/pdf/1812.01187.pdf scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf) # scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=[round(epochs * x) for x in [0.8, 0.9]], gamma=0.1) scheduler.last_epoch = start_epoch @@ -311,7 +311,7 @@ def train(): batch_size=batch_size * 2, img_size=img_size_test, model=model, - conf_thres=1E-3 if opt.evolve or (final_epoch and is_coco) else 0.1, # 0.1 faster + conf_thres=0.001, # 0.001 if opt.evolve or (final_epoch and is_coco) else 0.01, iou_thres=0.6, save_json=final_epoch and is_coco, single_cls=opt.single_cls, From 981b452b1d2616cf53cb94ad439043fbb0a2efcf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Mar 2020 13:20:08 -0800 Subject: [PATCH 2120/2595] updates --- train.py | 3 ++- utils/utils.py | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index b2d6cb10..96b2bd25 100644 --- a/train.py +++ b/train.py @@ -211,6 +211,7 @@ def train(): print('Starting training for %g epochs...' % epochs) for epoch in range(start_epoch, epochs): # epoch ------------------------------------------------------------------ model.train() + model.hyps['gr'] = 1 - (1 + math.cos(min(epoch * 2, epochs) * math.pi / epochs)) / 2 # GIoU <-> 1.0 ratio # Prebias if prebias: @@ -271,7 +272,7 @@ def train(): pred = model(imgs) # Compute loss - loss, loss_items = compute_loss(pred, targets, model, not prebias) + loss, loss_items = compute_loss(pred, targets, model) if not torch.isfinite(loss): print('WARNING: non-finite loss, ending training ', loss_items) return results diff --git a/utils/utils.py b/utils/utils.py index 2f38ba73..5416455a 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -363,7 +363,7 @@ class FocalLoss(nn.Module): return loss -def compute_loss(p, targets, model, giou_flag=True): # predictions, targets, model +def compute_loss(p, targets, model): # predictions, targets, model ft = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor lcls, lbox, lobj = ft([0]), ft([0]), ft([0]) tcls, tbox, indices, anchor_vec = build_targets(model, targets) @@ -401,7 +401,7 @@ def compute_loss(p, targets, model, giou_flag=True): # predictions, targets, mo pbox = torch.cat((pxy, pwh), 1) # predicted box giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation lbox += (1.0 - giou).sum() if red == 'sum' else (1.0 - giou).mean() # giou loss - tobj[b, a, gj, gi] = giou.detach().clamp(0).type(tobj.dtype) if giou_flag else 1.0 + tobj[b, a, gj, gi] = (1.0 - h['gr']) + h['gr'] * giou.detach().clamp(0).type(tobj.dtype) # giou ratio if 'default' in arc and model.nc > 1: # cls loss (only if multiple classes) t = torch.zeros_like(ps[:, 5:]) # targets From 305c07bac8a1be6a055e3e438c1ec3c57ec78e7d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Mar 2020 13:24:18 -0800 Subject: [PATCH 2121/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 96b2bd25..ef3faca2 100644 --- a/train.py +++ b/train.py @@ -211,7 +211,7 @@ def train(): print('Starting training for %g epochs...' % epochs) for epoch in range(start_epoch, epochs): # epoch ------------------------------------------------------------------ model.train() - model.hyps['gr'] = 1 - (1 + math.cos(min(epoch * 2, epochs) * math.pi / epochs)) / 2 # GIoU <-> 1.0 ratio + model.hyp['gr'] = 1 - (1 + math.cos(min(epoch * 2, epochs) * math.pi / epochs)) / 2 # GIoU <-> 1.0 loss ratio # Prebias if prebias: From cdb229fc76242806779b845621130bec49242350 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Mar 2020 13:30:27 -0800 Subject: [PATCH 2122/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index fe21ad50..2034169b 100755 --- a/models.py +++ b/models.py @@ -88,7 +88,7 @@ def create_modules(module_defs, img_size, arc): # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) try: if arc == 'default' or arc == 'Fdefault': # default - b = [-5.0, -5.0] # obj, cls + b = [-3.0, -6.0] # obj, cls elif arc == 'uBCE': # unified BCE (80 classes) b = [0, -9.0] elif arc == 'uCE': # unified CE (1 background + 80 classes) From 2e88a5663555eb3e75d7bf49cef898b9aa9db743 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Mar 2020 14:02:42 -0800 Subject: [PATCH 2123/2595] updates --- models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index 2034169b..32f5176b 100755 --- a/models.py +++ b/models.py @@ -87,8 +87,9 @@ def create_modules(module_defs, img_size, arc): # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) try: + p = math.log(1 / (modules.nc - 1)) # class probability -> sigmoid(p) = 1/nc if arc == 'default' or arc == 'Fdefault': # default - b = [-3.0, -6.0] # obj, cls + b = [-5.0, p] # obj, cls elif arc == 'uBCE': # unified BCE (80 classes) b = [0, -9.0] elif arc == 'uCE': # unified CE (1 background + 80 classes) From 1d45ec84bc95617b36a38ff1ae33a4237df2fa73 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Mar 2020 14:12:31 -0800 Subject: [PATCH 2124/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 32f5176b..493229e7 100755 --- a/models.py +++ b/models.py @@ -87,7 +87,7 @@ def create_modules(module_defs, img_size, arc): # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) try: - p = math.log(1 / (modules.nc - 1)) # class probability -> sigmoid(p) = 1/nc + p = math.log(1 / (modules.nc - 0.99)) # class probability -> sigmoid(p) = 1/nc if arc == 'default' or arc == 'Fdefault': # default b = [-5.0, p] # obj, cls elif arc == 'uBCE': # unified BCE (80 classes) From 4a5159710f77943d1a13e81943e89476668622dc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Mar 2020 14:55:56 -0800 Subject: [PATCH 2125/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 493229e7..ec192c33 100755 --- a/models.py +++ b/models.py @@ -89,7 +89,7 @@ def create_modules(module_defs, img_size, arc): try: p = math.log(1 / (modules.nc - 0.99)) # class probability -> sigmoid(p) = 1/nc if arc == 'default' or arc == 'Fdefault': # default - b = [-5.0, p] # obj, cls + b = [-4.5, p] # obj, cls elif arc == 'uBCE': # unified BCE (80 classes) b = [0, -9.0] elif arc == 'uCE': # unified CE (1 background + 80 classes) From 8b6c8a53182b2415fd61459fc9a0ccbdef8dc904 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 4 Mar 2020 16:33:14 -0800 Subject: [PATCH 2126/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index ef3faca2..5ca0efe4 100644 --- a/train.py +++ b/train.py @@ -215,7 +215,7 @@ def train(): # Prebias if prebias: - ne = 3 # number of prebias epochs + ne = max(round(30 / nb), 3) # number of prebias epochs ps = np.interp(epoch, [0, ne], [0.1, hyp['lr0'] * 2]), \ np.interp(epoch, [0, ne], [0.9, hyp['momentum']]) # prebias settings (lr=0.1, momentum=0.9) if epoch == ne: From b8b89a31329da9ba4146493e73f4762abca741e4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 5 Mar 2020 09:54:41 -0800 Subject: [PATCH 2127/2595] updates --- utils/utils.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/utils/utils.py b/utils/utils.py index 5416455a..482f8974 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -525,6 +525,10 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_cls=Tru # Apply width-height constraint pred = pred[((pred[:, 2:4] > min_wh) & (pred[:, 2:4] < max_wh)).all(1)] + # If none remain process next image + if not pred.shape[0]: + continue + # Compute conf pred[..., 5:] *= pred[..., 4:5] # conf = obj_conf * cls_conf From 1dc1761f45fe46f077694e1a70472cd7eb788e0c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 5 Mar 2020 10:20:08 -0800 Subject: [PATCH 2128/2595] updates --- train.py | 2 +- utils/utils.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 5ca0efe4..b12b2b41 100644 --- a/train.py +++ b/train.py @@ -211,7 +211,7 @@ def train(): print('Starting training for %g epochs...' % epochs) for epoch in range(start_epoch, epochs): # epoch ------------------------------------------------------------------ model.train() - model.hyp['gr'] = 1 - (1 + math.cos(min(epoch * 2, epochs) * math.pi / epochs)) / 2 # GIoU <-> 1.0 loss ratio + model.gr = 1 - (1 + math.cos(min(epoch * 2, epochs) * math.pi / epochs)) / 2 # GIoU <-> 1.0 loss ratio # Prebias if prebias: diff --git a/utils/utils.py b/utils/utils.py index 482f8974..f3403120 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -401,7 +401,7 @@ def compute_loss(p, targets, model): # predictions, targets, model pbox = torch.cat((pxy, pwh), 1) # predicted box giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation lbox += (1.0 - giou).sum() if red == 'sum' else (1.0 - giou).mean() # giou loss - tobj[b, a, gj, gi] = (1.0 - h['gr']) + h['gr'] * giou.detach().clamp(0).type(tobj.dtype) # giou ratio + tobj[b, a, gj, gi] = (1.0 - model.gr) + model.gr * giou.detach().clamp(0).type(tobj.dtype) # giou ratio if 'default' in arc and model.nc > 1: # cls loss (only if multiple classes) t = torch.zeros_like(ps[:, 5:]) # targets From 378f08c6d5b356ce25d5672e5ff9ee5b19d344af Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 5 Mar 2020 12:30:11 -0800 Subject: [PATCH 2129/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index b12b2b41..e73849f7 100644 --- a/train.py +++ b/train.py @@ -389,7 +389,7 @@ def train(): if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument('--epochs', type=int, default=273) # 500200 batches at bs 16, 117263 COCO images = 273 epochs + parser.add_argument('--epochs', type=int, default=300) # 500200 batches at bs 16, 117263 COCO images = 273 epochs parser.add_argument('--batch-size', type=int, default=16) # effective bs = batch_size * accumulate = 16 * 4 = 64 parser.add_argument('--accumulate', type=int, default=4, help='batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path') From e2f235cf1ee92d7c9817f1051bc47222b5c51ba1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 5 Mar 2020 13:22:10 -0800 Subject: [PATCH 2130/2595] Create stale.yml --- .github/workflows/stale.yml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 .github/workflows/stale.yml diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 00000000..5f3865da --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,21 @@ +name: Mark stale issues and pull requests + +on: + schedule: + - cron: "0 0 * * *" + +jobs: + stale: + + runs-on: ubuntu-latest + + steps: + - uses: actions/stale@1.0.0 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: 'This issue appears stale as no activity has been seen for some time. We will close this issue in the next few days.' + stale-pr-message: 'This PR appears stale as no activity has been seen for some time. We will close this PR in the next few days.' + stale-issue-label: 'Stale' + stale-pr-label: 'Stale' + days-before-stale: 10 + days-before-close: 3 From 2e8cee9fcb3e24fd2d1bf1ed418dd9b3c065e562 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 5 Mar 2020 13:26:48 -0800 Subject: [PATCH 2131/2595] Update stale.yml --- .github/workflows/stale.yml | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 5f3865da..598a1449 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -1,21 +1,16 @@ -name: Mark stale issues and pull requests - +name: "Close stale issues" on: schedule: - cron: "0 0 * * *" jobs: stale: - runs-on: ubuntu-latest - steps: - - uses: actions/stale@1.0.0 + - uses: actions/stale@v1 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - stale-issue-message: 'This issue appears stale as no activity has been seen for some time. We will close this issue in the next few days.' - stale-pr-message: 'This PR appears stale as no activity has been seen for some time. We will close this PR in the next few days.' - stale-issue-label: 'Stale' - stale-pr-label: 'Stale' - days-before-stale: 10 - days-before-close: 3 + stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days' + stale-pr-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days' + days-before-stale: 30 + days-before-close: 5 From 818d0b9f006acbd3bb6ea68530f8b31ad06e3620 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 5 Mar 2020 13:48:29 -0800 Subject: [PATCH 2132/2595] Update stale.yml --- .github/workflows/stale.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 598a1449..280a0d02 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -14,3 +14,4 @@ jobs: stale-pr-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days' days-before-stale: 30 days-before-close: 5 + exempt-issue-label: 'tutorial' From 692b006f4dda066a81800b94a34ec51c574c380f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 5 Mar 2020 14:20:52 -0800 Subject: [PATCH 2133/2595] updates --- utils/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index f3403120..b2dad445 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -501,7 +501,7 @@ def build_targets(model, targets): return tcls, tbox, indices, av -def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_cls=True, classes=None, agnostic=False): +def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=True, classes=None, agnostic=False): """ Removes detections with lower object confidence score than 'conf_thres' Non-Maximum Suppression to further filter detections. @@ -516,7 +516,7 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_cls=Tru method = 'vision_batch' batched = 'batch' in method # run once per image, all classes simultaneously nc = prediction[0].shape[1] - 5 # number of classes - multi_cls = multi_cls and (nc > 1) # allow multiple classes per anchor + multi_label &= nc > 1 # multiple labels per box output = [None] * len(prediction) for image_i, pred in enumerate(prediction): # Apply conf constraint @@ -536,7 +536,7 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_cls=Tru box = xywh2xyxy(pred[:, :4]) # Detections matrix nx6 (xyxy, conf, cls) - if multi_cls: + if multi_label: i, j = (pred[:, 5:] > conf_thres).nonzero().t() pred = torch.cat((box[i], pred[i, j + 5].unsqueeze(1), j.float().unsqueeze(1)), 1) else: # best class only From 65eeb1bae5ea1f7d7249c0caf581e95de0dc1637 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 5 Mar 2020 17:08:14 -0800 Subject: [PATCH 2134/2595] updates --- .github/workflows/stale.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 280a0d02..f0d75cb4 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -1,4 +1,4 @@ -name: "Close stale issues" +name: Close stale issues on: schedule: - cron: "0 0 * * *" @@ -10,8 +10,8 @@ jobs: - uses: actions/stale@v1 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days' - stale-pr-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days' + stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove Stale label or comment or this will be closed in 5 days.' + stale-pr-message: 'This pull request is stale because it has been open 30 days with no activity. Remove Stale label or comment or this will be closed in 5 days.' days-before-stale: 30 days-before-close: 5 exempt-issue-label: 'tutorial' From feea9c1a65c73475803847c83545b5e7ee6c528c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 7 Mar 2020 10:26:08 -0800 Subject: [PATCH 2135/2595] P and R evaluated at 0.5 score --- utils/utils.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index b2dad445..d59527c9 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -188,6 +188,7 @@ def ap_per_class(tp, conf, pred_cls, target_cls): unique_classes = np.unique(target_cls) # Create Precision-Recall curve and compute AP for each class + pr_score = 0.5 # score to evaluate P and R https://github.com/ultralytics/yolov3/issues/898 s = [len(unique_classes), tp.shape[1]] # number class, number iou thresholds (i.e. 10 for mAP0.5...0.95) ap, p, r = np.zeros(s), np.zeros(s), np.zeros(s) for ci, c in enumerate(unique_classes): @@ -204,18 +205,18 @@ def ap_per_class(tp, conf, pred_cls, target_cls): # Recall recall = tpc / (n_gt + 1e-16) # recall curve - r[ci] = recall[-1] + r[ci] = np.interp(-pr_score, -conf[i], recall[:, 0]) # r at pr_score, negative x, xp because xp decreases # Precision precision = tpc / (tpc + fpc) # precision curve - p[ci] = precision[-1] + p[ci] = np.interp(-pr_score, -conf[i], precision[:, 0]) # p at pr_score # AP from recall-precision curve for j in range(tp.shape[1]): ap[ci, j] = compute_ap(recall[:, j], precision[:, j]) # Plot - # fig, ax = plt.subplots(1, 1, figsize=(4, 4)) + # fig, ax = plt.subplots(1, 1, figsize=(5, 5)) # ax.plot(recall, precision) # ax.set_xlabel('Recall') # ax.set_ylabel('Precision') From 4317335795c49c2a6e4ecd6fb3687edc74a6a9b4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Mar 2020 11:43:05 -0700 Subject: [PATCH 2136/2595] updates --- test.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/test.py b/test.py index c0034779..b1d9819d 100644 --- a/test.py +++ b/test.py @@ -17,7 +17,6 @@ def test(cfg, iou_thres=0.6, # for nms save_json=False, single_cls=False, - profile=False, model=None, dataloader=None): # Initialize/load model and set device @@ -182,11 +181,6 @@ def test(cfg, for i, c in enumerate(ap_class): print(pf % (names[c], seen, nt[c], p[i], r[i], ap[i], f1[i])) - # Print profile results - if profile: - t = tuple(x / seen * 1E3 for x in (t0, t1, t0 + t1)) - print('Profile results: %.1f/%.1f/%.1f ms inference/NMS/total per image' % t) - # Save JSON if save_json and map and len(jdict): imgIds = [int(Path(x).stem.split('_')[-1]) for x in dataloader.dataset.img_files] @@ -210,6 +204,11 @@ def test(cfg, cocoEval.summarize() mf1, map = cocoEval.stats[:2] # update to pycocotools results (mAP@0.5:0.95, mAP@0.5) + # Print speeds + if verbose: + t = tuple(x / seen * 1E3 for x in (t0, t1, t0 + t1)) + (img_size, img_size, batch_size) # tuple + print('Speed: %.1f/%.1f/%.1f ms inference/NMS/total per %gx%g image at batch-size %g' % t) + # Return results maps = np.zeros(nc) + map for i, c in enumerate(ap_class): @@ -230,7 +229,6 @@ if __name__ == '__main__': parser.add_argument('--task', default='test', help="'test', 'study', 'benchmark'") parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') parser.add_argument('--single-cls', action='store_true', help='train as single-class dataset') - parser.add_argument('--profile', action='store_true', help='profile inference and NMS times') opt = parser.parse_args() opt.save_json = opt.save_json or any([x in opt.data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) print(opt) @@ -245,8 +243,7 @@ if __name__ == '__main__': opt.conf_thres, opt.iou_thres, opt.save_json, - opt.single_cls, - opt.profile) + opt.single_cls) elif opt.task == 'benchmark': # mAPs at 320-608 at conf 0.5 and 0.7 y = [] From 3122f1fe8204f75d69c7fe0ce00375c74f59725c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Mar 2020 11:52:35 -0700 Subject: [PATCH 2137/2595] updates --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a9d6d920..b0eff517 100755 --- a/README.md +++ b/README.md @@ -155,11 +155,11 @@ YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive. ```bash $ python3 test.py --cfg yolov3-spp.cfg --weights yolov3-spp-ultralytics.pt --img 608 -Namespace(batch_size=32, cfg='yolov3-spp', conf_thres=0.001, data='data/coco2014.data', device='', img_size=608, iou_thres=0.6, save_json=True, single_cls=False, task='test', weights='last82.pt') -Using CUDA device0 _CudaDeviceProperties(name='Tesla P100-PCIE-16GB', total_memory=16280MB) +Namespace(batch_size=32, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco2014.data', device='', img_size=608, iou_thres=0.6, save_json=True, single_cls=False, task='test', weights='weights/yolov3-spp-ultralytics.pt') +Using CUDA device0 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', total_memory=16130MB) - Class Images Targets P R mAP@0.5 F1: 100% 157/157 [03:12<00:00, 1.50it/s] - all 5e+03 3.51e+04 0.0573 0.871 0.611 0.106 + Class Images Targets P R mAP@0.5 F1: 100%|█████| 157/157 [02:46<00:00, 1.06s/it] + all 5e+03 3.51e+04 0.822 0.433 0.611 0.551 Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.419 Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.618 Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.448 From a4662bf306c72d6989ccfb96316a83c26b0bd232 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Mar 2020 11:53:18 -0700 Subject: [PATCH 2138/2595] updates --- utils/evolve.sh | 2 +- utils/gcp.sh | 25 +++++++++++++++++++++++++ utils/utils.py | 5 ----- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/utils/evolve.sh b/utils/evolve.sh index 3f81d6a0..3ff9c75c 100644 --- a/utils/evolve.sh +++ b/utils/evolve.sh @@ -9,7 +9,7 @@ while true; do # python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.conv.15 --multi --bucket ult/wer --evolve --cache --device $1 --cfg yolov3-tiny3-1cls.cfg --single --adam # python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --multi --bucket ult/athena --evolve --device $1 --cfg yolov3-spp-1cls.cfg - python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --evolve --weights '' --bucket ult/coco --device $1 --cfg yolov3-spp.cfg --multi + python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 8 --evolve --weights '' --bucket ult/coco/sppa_512 --device $1 --cfg yolov3-sppa.cfg --multi done diff --git a/utils/gcp.sh b/utils/gcp.sh index 433c248d..4d58b143 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -415,6 +415,29 @@ n=67 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --g n=68 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown n=69 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 15 --accum 4 --weights '' --device 0 --cfg csdarknet53-bifpn-optimal.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown n=70 && t=ultralytics/coco:v69 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 15 --accum 4 --weights '' --device 0 --cfg csresnext50-bifpn-optimal.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=71 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=72 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=73 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=74 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=75 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=76 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=77 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=78 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=79 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=80 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=81 && t=ultralytics/coco:v76 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2017.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=82 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=83 && t=ultralytics/coco:v82 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=84 && t=ultralytics/coco:v82 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=85 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=86 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=87 && t=ultralytics/coco:v85 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 8 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=88 && t=ultralytics/coco:v86 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 8 --weights '' --device 1 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=89 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 8 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=90 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 8 --weights '' --device 1 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=91 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=92 && t=ultralytics/coco:v91 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 225 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=93 && t=ultralytics/coco:v86 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown # athena @@ -434,3 +457,5 @@ n=23 && t=ultralytics/wer:v18 && sudo docker pull $t && sudo docker run -it --gp n=24 && t=ultralytics/wer:v24 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights '' --multi --bucket ult/wer --name $n --nosave --cache --device 3 --cfg yolov3-tiny-3l-1cls.cfg --single --adam n=25 && t=ultralytics/wer:v25 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --name $n --nosave --cache --device 2 --cfg yolov3-tiny3-1cls.cfg --single --adam n=26 && t=ultralytics/wer:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny3-1cls.cfg --single --adam +n=27 && t=ultralytics/test:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 416 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --name $n --nosave --cache --device 1 --cfg yolov4-tiny-1cls.cfg --single --adam +n=28 && t=ultralytics/test:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 416 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov4-tiny-1cls.cfg --single --adam diff --git a/utils/utils.py b/utils/utils.py index d59527c9..efb56891 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -410,11 +410,6 @@ def compute_loss(p, targets, model): # predictions, targets, model lcls += BCEcls(ps[:, 5:], t) # BCE # lcls += CE(ps[:, 5:], tcls[i]) # CE - # Instance-class weighting (use with reduction='none') - # nt = t.sum(0) + 1 # number of targets per class - # lcls += (BCEcls(ps[:, 5:], t) / nt).mean() * nt.mean() # v1 - # lcls += (BCEcls(ps[:, 5:], t) / nt[tcls[i]].view(-1,1)).mean() * nt.mean() # v2 - # Append targets to text file # with open('targets.txt', 'a') as file: # [file.write('%11.5g ' * 4 % tuple(x) + '\n') for x in torch.cat((txy[i], twh[i]), 1)] From 17fbd6ed8c9c417272d9e988cd5fdadd270c137a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Mar 2020 11:56:37 -0700 Subject: [PATCH 2139/2595] updates --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index baccd70b..cdf022a3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -47,10 +47,10 @@ COPY . /usr/src/app # t=ultralytics/yolov3:v0 && sudo docker build -t $t . && sudo docker push $t # Run -# t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo docker run -it $t bash +# t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host $t bash # Pull and Run with local directory access -# t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo docker run -it -v "$(pwd)"/coco:/usr/src/coco $t bash +# t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash # Kill all # sudo docker kill "$(sudo docker ps -q)" From 952df070db4d8106085902fa241d0e082cfc365d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Mar 2020 12:05:42 -0700 Subject: [PATCH 2140/2595] updates --- test.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/test.py b/test.py index b1d9819d..75d527ca 100644 --- a/test.py +++ b/test.py @@ -181,8 +181,14 @@ def test(cfg, for i, c in enumerate(ap_class): print(pf % (names[c], seen, nt[c], p[i], r[i], ap[i], f1[i])) + # Print speeds + if verbose: + t = tuple(x / seen * 1E3 for x in (t0, t1, t0 + t1)) + (img_size, img_size, batch_size) # tuple + print('Speed: %.1f/%.1f/%.1f ms inference/NMS/total per %gx%g image at batch-size %g' % t) + # Save JSON if save_json and map and len(jdict): + print('COCO mAP with pycocotools...') imgIds = [int(Path(x).stem.split('_')[-1]) for x in dataloader.dataset.img_files] with open('results.json', 'w') as file: json.dump(jdict, file) @@ -204,11 +210,6 @@ def test(cfg, cocoEval.summarize() mf1, map = cocoEval.stats[:2] # update to pycocotools results (mAP@0.5:0.95, mAP@0.5) - # Print speeds - if verbose: - t = tuple(x / seen * 1E3 for x in (t0, t1, t0 + t1)) + (img_size, img_size, batch_size) # tuple - print('Speed: %.1f/%.1f/%.1f ms inference/NMS/total per %gx%g image at batch-size %g' % t) - # Return results maps = np.zeros(nc) + map for i, c in enumerate(ap_class): From 23389da9ecd62edcad9ec364280b47c3dafe0d98 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Mar 2020 12:35:04 -0700 Subject: [PATCH 2141/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 75d527ca..2b6b8f23 100644 --- a/test.py +++ b/test.py @@ -188,7 +188,7 @@ def test(cfg, # Save JSON if save_json and map and len(jdict): - print('COCO mAP with pycocotools...') + print('\nCOCO mAP with pycocotools...') imgIds = [int(Path(x).stem.split('_')[-1]) for x in dataloader.dataset.img_files] with open('results.json', 'w') as file: json.dump(jdict, file) From 0037254bf266285c122649339c898dc7f330255d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Mar 2020 13:20:31 -0700 Subject: [PATCH 2142/2595] updates --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b0eff517..b10092a0 100755 --- a/README.md +++ b/README.md @@ -155,11 +155,12 @@ YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive. ```bash $ python3 test.py --cfg yolov3-spp.cfg --weights yolov3-spp-ultralytics.pt --img 608 -Namespace(batch_size=32, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco2014.data', device='', img_size=608, iou_thres=0.6, save_json=True, single_cls=False, task='test', weights='weights/yolov3-spp-ultralytics.pt') +Namespace(batch_size=32, cfg='yolov3-spp.cfg', conf_thres=0.001, data='data/coco2014.data', device='', img_size=608, iou_thres=0.6, save_json=True, single_cls=False, task='test', weights='weights/yolov3-spp-ultralytics.pt') Using CUDA device0 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', total_memory=16130MB) Class Images Targets P R mAP@0.5 F1: 100%|█████| 157/157 [02:46<00:00, 1.06s/it] all 5e+03 3.51e+04 0.822 0.433 0.611 0.551 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.419 Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.618 Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.448 @@ -172,6 +173,8 @@ Using CUDA device0 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', total_memo Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.440 Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.649 Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.735 + +Speed: 6.6/1.6/8.2 ms inference/NMS/total per 608x608 image at batch-size 32 ``` # Reproduce Our Results From 1d43b2a55aabf5afca1c6392fcacff061d0be00e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Mar 2020 16:13:56 -0700 Subject: [PATCH 2143/2595] updates --- utils/utils.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index efb56891..9522ad4d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -405,8 +405,15 @@ def compute_loss(p, targets, model): # predictions, targets, model tobj[b, a, gj, gi] = (1.0 - model.gr) + model.gr * giou.detach().clamp(0).type(tobj.dtype) # giou ratio if 'default' in arc and model.nc > 1: # cls loss (only if multiple classes) - t = torch.zeros_like(ps[:, 5:]) # targets - t[range(nb), tcls[i]] = 1.0 + smooth = False # class label smoothing https://arxiv.org/pdf/1902.04103.pdf eqn 3 + if smooth: + e = 0.1 #  class label smoothing epsilon + cp, cn = 1.0 - e, e / (model.nc - 0.99) # class positive and negative labels + else: + cp, cn = 1.0, 0.0 + + t = torch.zeros_like(ps[:, 5:]) + cn # targets + t[range(nb), tcls[i]] = cp lcls += BCEcls(ps[:, 5:], t) # BCE # lcls += CE(ps[:, 5:], tcls[i]) # CE From 4a90221e79fbed6b952411b95dd8f06823c526fc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 8 Mar 2020 16:15:41 -0700 Subject: [PATCH 2144/2595] updates --- utils/utils.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 9522ad4d..52d45918 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -378,6 +378,14 @@ def compute_loss(p, targets, model): # predictions, targets, model BCE = nn.BCEWithLogitsLoss(reduction=red) CE = nn.CrossEntropyLoss(reduction=red) # weight=model.class_weights + # class label smoothing https://arxiv.org/pdf/1902.04103.pdf eqn 3 + smooth = False + if smooth: + e = 0.1 #  class label smoothing epsilon + cp, cn = 1.0 - e, e / (model.nc - 0.99) # class positive and negative labels + else: + cp, cn = 1.0, 0.0 + if 'F' in arc: # add focal loss g = h['fl_gamma'] BCEcls, BCEobj, BCE, CE = FocalLoss(BCEcls, g), FocalLoss(BCEobj, g), FocalLoss(BCE, g), FocalLoss(CE, g) @@ -405,13 +413,6 @@ def compute_loss(p, targets, model): # predictions, targets, model tobj[b, a, gj, gi] = (1.0 - model.gr) + model.gr * giou.detach().clamp(0).type(tobj.dtype) # giou ratio if 'default' in arc and model.nc > 1: # cls loss (only if multiple classes) - smooth = False # class label smoothing https://arxiv.org/pdf/1902.04103.pdf eqn 3 - if smooth: - e = 0.1 #  class label smoothing epsilon - cp, cn = 1.0 - e, e / (model.nc - 0.99) # class positive and negative labels - else: - cp, cn = 1.0, 0.0 - t = torch.zeros_like(ps[:, 5:]) + cn # targets t[range(nb), tcls[i]] = cp lcls += BCEcls(ps[:, 5:], t) # BCE From 071d4113f6d8f70852f50c0af50a44f1f1fed75a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Mar 2020 10:43:49 -0700 Subject: [PATCH 2145/2595] updates --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index ec192c33..0b203c82 100755 --- a/models.py +++ b/models.py @@ -191,8 +191,8 @@ class YOLOLayer(nn.Module): if ONNX_EXPORT: # grids must be computed in __init__ stride = [32, 16, 8][yolo_index] # stride of this layer - nx = int(img_size[1] / stride) # number x grid points - ny = int(img_size[0] / stride) # number y grid points + nx = img_size[1] // stride # number x grid points + ny = img_size[0] // stride # number y grid points create_grids(self, img_size, (nx, ny)) def forward(self, p, img_size, var=None): From cd76a1a9827ec9a2506f272aeae76c13b895746f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Mar 2020 10:46:59 -0700 Subject: [PATCH 2146/2595] updates --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 0b203c82..4c94a676 100755 --- a/models.py +++ b/models.py @@ -189,7 +189,7 @@ class YOLOLayer(nn.Module): self.ny = 0 # initialize number of y gridpoints self.arc = arc - if ONNX_EXPORT: # grids must be computed in __init__ + if ONNX_EXPORT: stride = [32, 16, 8][yolo_index] # stride of this layer nx = img_size[1] // stride # number x grid points ny = img_size[0] // stride # number y grid points From 6bd51b75eac4c6fd5b4f8f960d11bcb20e22156e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Mar 2020 11:20:22 -0700 Subject: [PATCH 2147/2595] updates --- utils/torch_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 869575de..941c22a4 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -77,7 +77,7 @@ def model_info(model, report='summary'): # Plots a line-by-line description of a PyTorch model n_p = sum(x.numel() for x in model.parameters()) # number parameters n_g = sum(x.numel() for x in model.parameters() if x.requires_grad) # number gradients - if report is 'full': + if report == 'full': print('%5s %40s %9s %12s %20s %10s %10s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) for i, (name, p) in enumerate(model.named_parameters()): name = name.replace('module_list.', '') From 5fb661b7d43021f841bf84d6c10eed69970fa257 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Mar 2020 13:33:23 -0700 Subject: [PATCH 2148/2595] updates --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 2b6b8f23..f6a68859 100644 --- a/test.py +++ b/test.py @@ -38,7 +38,7 @@ def test(cfg, else: # darknet format load_darknet_weights(model, weights) - if torch.cuda.device_count() > 1: + if device.type != 'cpu' and torch.cuda.device_count() > 1: model = nn.DataParallel(model) else: # called by train.py device = next(model.parameters()).device # get model device From 67e7ac221fcb36d75579bc9269d72b7b06286506 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Mar 2020 14:20:38 -0700 Subject: [PATCH 2149/2595] updates --- models.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/models.py b/models.py index 4c94a676..80976a66 100755 --- a/models.py +++ b/models.py @@ -195,7 +195,7 @@ class YOLOLayer(nn.Module): ny = img_size[0] // stride # number y grid points create_grids(self, img_size, (nx, ny)) - def forward(self, p, img_size, var=None): + def forward(self, p, img_size): if ONNX_EXPORT: bs = 1 # batch size else: @@ -261,10 +261,9 @@ class Darknet(nn.Module): self.version = np.array([0, 2, 5], dtype=np.int32) # (int32) version info: major, minor, revision self.seen = np.array([0], dtype=np.int64) # (int64) number of images seen during training - def forward(self, x, var=None): + def forward(self, x, verbose=False): img_size = x.shape[-2:] yolo_out, out = [], [] - verbose = False if verbose: str = '' print('0', x.shape) From 6130b70fe7df8ecf542924b1014b2f90b77a0880 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Mar 2020 16:00:05 -0700 Subject: [PATCH 2150/2595] updates --- models.py | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/models.py b/models.py index 80976a66..9c651342 100755 --- a/models.py +++ b/models.py @@ -87,24 +87,13 @@ def create_modules(module_defs, img_size, arc): # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) try: - p = math.log(1 / (modules.nc - 0.99)) # class probability -> sigmoid(p) = 1/nc - if arc == 'default' or arc == 'Fdefault': # default - b = [-4.5, p] # obj, cls - elif arc == 'uBCE': # unified BCE (80 classes) - b = [0, -9.0] - elif arc == 'uCE': # unified CE (1 background + 80 classes) - b = [10, -0.1] - elif arc == 'uFBCE': # unified FocalBCE (5120 obj, 80 classes) - b = [0, -6.5] - elif arc == 'uFCE': # unified FocalCE (64 cls, 1 background + 80 classes) - b = [7.7, -1.1] + bo = -4.5 #  obj bias + bc = math.log(1 / (modules.nc - 0.99)) # cls bias: class probability is sigmoid(p) = 1/nc bias = module_list[-1][0].bias.view(len(mask), -1) # 255 to 3x85 - bias[:, 4] += b[0] - bias[:, 4].mean() # obj - bias[:, 5:] += b[1] - bias[:, 5:].mean() # cls - # bias = torch.load('weights/yolov3-spp.bias.pt')[yolo_index] # list of tensors [3x85, 3x85, 3x85] - module_list[-1][0].bias = torch.nn.Parameter(bias.view(-1)) - # utils.print_model_biases(model) + bias[:, 4] += bo - bias[:, 4].mean() # obj + bias[:, 5:] += bc - bias[:, 5:].mean() # cls + module_list[-1][0].bias = torch.nn.Parameter(bias.view(-1)) # utils.print_model_biases(model) except: print('WARNING: smart bias initialization failure.') From 204594f2997ac7ca28fcc9b67dc52d30878648f1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Mar 2020 16:44:26 -0700 Subject: [PATCH 2151/2595] updates --- models.py | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/models.py b/models.py index 9c651342..c71aaf13 100755 --- a/models.py +++ b/models.py @@ -169,7 +169,6 @@ class Mish(nn.Module): # https://github.com/digantamisra98/Mish class YOLOLayer(nn.Module): def __init__(self, anchors, nc, img_size, yolo_index, arc): super(YOLOLayer, self).__init__() - self.anchors = torch.Tensor(anchors) self.na = len(anchors) # number of anchors (3) self.nc = nc # number of classes (80) @@ -213,27 +212,12 @@ class YOLOLayer(nn.Module): return p_cls, xy * ng, wh else: # inference - # s = 1.5 # scale_xy (pxy = pxy * s - (s - 1) / 2) io = p.clone() # inference output io[..., :2] = torch.sigmoid(io[..., :2]) + self.grid_xy # xy io[..., 2:4] = torch.exp(io[..., 2:4]) * self.anchor_wh # wh yolo method - # io[..., 2:4] = ((torch.sigmoid(io[..., 2:4]) * 2) ** 3) * self.anchor_wh # wh power method io[..., :4] *= self.stride - - if 'default' in self.arc: # seperate obj and cls - torch.sigmoid_(io[..., 4:]) - elif 'BCE' in self.arc: # unified BCE (80 classes) - torch.sigmoid_(io[..., 5:]) - io[..., 4] = 1 - elif 'CE' in self.arc: # unified CE (1 background + 80 classes) - io[..., 4:] = F.softmax(io[..., 4:], dim=4) - io[..., 4] = 1 - - if self.nc == 1: - io[..., 5] = 1 # single-class model https://github.com/ultralytics/yolov3/issues/235 - - # reshape from [1, 3, 13, 13, 85] to [1, 507, 85] - return io.view(bs, -1, self.no), p + torch.sigmoid_(io[..., 4:]) + return io.view(bs, -1, self.no), p # view [1, 3, 13, 13, 85] as [1, 507, 85] class Darknet(nn.Module): From 207cf14df46776f753059888178325d03b8d9f41 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Mar 2020 18:03:34 -0700 Subject: [PATCH 2152/2595] updates --- models.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/models.py b/models.py index c71aaf13..a326d7d6 100755 --- a/models.py +++ b/models.py @@ -41,6 +41,9 @@ def create_modules(module_defs, img_size, arc): elif mdef['activation'] == 'swish': modules.add_module('activation', Swish()) + if not bn: # detection output layer + routs.append(i) + elif mdef['type'] == 'maxpool': size = mdef['size'] stride = mdef['stride'] From 25ad727a3d93c12ecf3c83f9bfe49c01ab6187df Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Mar 2020 18:22:42 -0700 Subject: [PATCH 2153/2595] updates --- models.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/models.py b/models.py index a326d7d6..0a212853 100755 --- a/models.py +++ b/models.py @@ -95,8 +95,7 @@ def create_modules(module_defs, img_size, arc): bias = module_list[-1][0].bias.view(len(mask), -1) # 255 to 3x85 bias[:, 4] += bo - bias[:, 4].mean() # obj - bias[:, 5:] += bc - bias[:, 5:].mean() # cls - module_list[-1][0].bias = torch.nn.Parameter(bias.view(-1)) # utils.print_model_biases(model) + bias[:, 5:] += bc - bias[:, 5:].mean() # cls, view with utils.print_model_biases(model) except: print('WARNING: smart bias initialization failure.') From f7f435446b618f9819b2db3515851a3bab33bff6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Mar 2020 18:24:20 -0700 Subject: [PATCH 2154/2595] updates --- models.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/models.py b/models.py index 0a212853..568b1267 100755 --- a/models.py +++ b/models.py @@ -81,8 +81,7 @@ def create_modules(module_defs, img_size, arc): elif mdef['type'] == 'yolo': yolo_index += 1 - mask = mdef['mask'] # anchor mask - modules = YOLOLayer(anchors=mdef['anchors'][mask], # anchor list + modules = YOLOLayer(anchors=mdef['anchors'][mdef['mask']], # anchor list nc=mdef['classes'], # number of classes img_size=img_size, # (416, 416) yolo_index=yolo_index, # 0, 1 or 2 @@ -93,7 +92,7 @@ def create_modules(module_defs, img_size, arc): bo = -4.5 #  obj bias bc = math.log(1 / (modules.nc - 0.99)) # cls bias: class probability is sigmoid(p) = 1/nc - bias = module_list[-1][0].bias.view(len(mask), -1) # 255 to 3x85 + bias = module_list[-1][0].bias.view(modules.na, -1) # 255 to 3x85 bias[:, 4] += bo - bias[:, 4].mean() # obj bias[:, 5:] += bc - bias[:, 5:].mean() # cls, view with utils.print_model_biases(model) except: From 821a72b2d342df7c3e6453021212bfd675ff915a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Mar 2020 18:39:00 -0700 Subject: [PATCH 2155/2595] updates --- detect.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index 64a7867d..d4ad635e 100644 --- a/detect.py +++ b/detect.py @@ -77,7 +77,6 @@ def detect(save_img=False): # Run inference t0 = time.time() for path, img, im0s, vid_cap in dataset: - t = time.time() img = torch.from_numpy(img).to(device) img = img.half() if half else img.float() # uint8 to fp16/32 img /= 255.0 # 0 - 255 to 0.0 - 1.0 @@ -85,7 +84,9 @@ def detect(save_img=False): img = img.unsqueeze(0) # Inference + t1 = torch_utils.time_synchronized() pred = model(img)[0].float() if half else model(img)[0] + t2 = torch_utils.time_synchronized() # Apply NMS pred = non_max_suppression(pred, opt.conf_thres, opt.iou_thres, classes=opt.classes, agnostic=opt.agnostic_nms) @@ -123,7 +124,7 @@ def detect(save_img=False): plot_one_box(xyxy, im0, label=label, color=colors[int(cls)]) # Print time (inference + NMS) - print('%sDone. (%.3fs)' % (s, time.time() - t)) + print('%sDone. (%.3fs)' % (s, t2 - t1)) # Stream results if view_img: From d8370d13eae5d33a589bc61b4c7bcfc40f7f4e78 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Mar 2020 18:49:35 -0700 Subject: [PATCH 2156/2595] updates --- models.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/models.py b/models.py index 568b1267..f7632267 100755 --- a/models.py +++ b/models.py @@ -35,15 +35,15 @@ def create_modules(module_defs, img_size, arc): bias=not bn)) if bn: modules.add_module('BatchNorm2d', nn.BatchNorm2d(filters, momentum=0.1)) + else: + routs.append(i) # detection output (goes into yolo layer) + if mdef['activation'] == 'leaky': # activation study https://github.com/ultralytics/yolov3/issues/441 modules.add_module('activation', nn.LeakyReLU(0.1, inplace=True)) # modules.add_module('activation', nn.PReLU(num_parameters=1, init=0.10)) elif mdef['activation'] == 'swish': modules.add_module('activation', Swish()) - if not bn: # detection output layer - routs.append(i) - elif mdef['type'] == 'maxpool': size = mdef['size'] stride = mdef['stride'] From 17a06dcf83e0d179ac49821877679390fa0ef97f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Mar 2020 18:55:17 -0700 Subject: [PATCH 2157/2595] updates --- models.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/models.py b/models.py index f7632267..652cd713 100755 --- a/models.py +++ b/models.py @@ -81,18 +81,20 @@ def create_modules(module_defs, img_size, arc): elif mdef['type'] == 'yolo': yolo_index += 1 + l = mdef['from'] if 'from' in mdef else [] modules = YOLOLayer(anchors=mdef['anchors'][mdef['mask']], # anchor list nc=mdef['classes'], # number of classes img_size=img_size, # (416, 416) - yolo_index=yolo_index, # 0, 1 or 2 - arc=arc) # yolo architecture + yolo_index=yolo_index, # 0, 1, 2... + layers=l) # output layers # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) try: bo = -4.5 #  obj bias bc = math.log(1 / (modules.nc - 0.99)) # cls bias: class probability is sigmoid(p) = 1/nc - bias = module_list[-1][0].bias.view(modules.na, -1) # 255 to 3x85 + j = l[yolo_index] if 'from' in mdef else -1 + bias = module_list[j][0].bias.view(modules.na, -1) # 255 to 3x85 bias[:, 4] += bo - bias[:, 4].mean() # obj bias[:, 5:] += bc - bias[:, 5:].mean() # cls, view with utils.print_model_biases(model) except: @@ -168,15 +170,17 @@ class Mish(nn.Module): # https://github.com/digantamisra98/Mish class YOLOLayer(nn.Module): - def __init__(self, anchors, nc, img_size, yolo_index, arc): + def __init__(self, anchors, nc, img_size, yolo_index, layers): super(YOLOLayer, self).__init__() self.anchors = torch.Tensor(anchors) + self.index = yolo_index # index of this layer in layers + self.layers = layers # model output layer indices + self.nl = len(layers) # number of output layers (3) self.na = len(anchors) # number of anchors (3) self.nc = nc # number of classes (80) - self.no = nc + 5 # number of outputs + self.no = nc + 5 # number of outputs (85) self.nx = 0 # initialize number of x gridpoints self.ny = 0 # initialize number of y gridpoints - self.arc = arc if ONNX_EXPORT: stride = [32, 16, 8][yolo_index] # stride of this layer @@ -184,7 +188,7 @@ class YOLOLayer(nn.Module): ny = img_size[0] // stride # number y grid points create_grids(self, img_size, (nx, ny)) - def forward(self, p, img_size): + def forward(self, p, img_size, out): if ONNX_EXPORT: bs = 1 # batch size else: @@ -268,7 +272,7 @@ class Darknet(nn.Module): x = torch.cat([out[i] for i in layers], 1) # print(''), [print(out[i].shape) for i in layers], print(x.shape) elif mtype == 'yolo': - yolo_out.append(module(x, img_size)) + yolo_out.append(module(x, img_size, out)) out.append(x if i in self.routs else []) if verbose: print('%g/%g %s -' % (i, len(self.module_list), mtype), list(x.shape), str) From d55dbc1f2913794495763d6f31936364f40918a8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Mar 2020 20:08:19 -0700 Subject: [PATCH 2158/2595] updates --- models.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index 652cd713..69618066 100755 --- a/models.py +++ b/models.py @@ -94,9 +94,11 @@ def create_modules(module_defs, img_size, arc): bc = math.log(1 / (modules.nc - 0.99)) # cls bias: class probability is sigmoid(p) = 1/nc j = l[yolo_index] if 'from' in mdef else -1 - bias = module_list[j][0].bias.view(modules.na, -1) # 255 to 3x85 + bias_ = module_list[j][0].bias # shape(255,) + bias = bias_[:modules.no * modules.na].view(modules.na, -1) # shape(3,85) bias[:, 4] += bo - bias[:, 4].mean() # obj bias[:, 5:] += bc - bias[:, 5:].mean() # cls, view with utils.print_model_biases(model) + module_list[j][0].bias = torch.nn.Parameter(bias_, requires_grad=bias_.requires_grad) except: print('WARNING: smart bias initialization failure.') From 7a83574022e6c5551b798e773d89dccf7aa876da Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 10 Mar 2020 12:17:23 -0700 Subject: [PATCH 2159/2595] updates --- train.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/train.py b/train.py index e73849f7..d3e20aa8 100644 --- a/train.py +++ b/train.py @@ -36,10 +36,10 @@ hyp = {'giou': 3.54, # giou loss gain 'hsv_h': 0.0138, # image HSV-Hue augmentation (fraction) 'hsv_s': 0.678, # image HSV-Saturation augmentation (fraction) 'hsv_v': 0.36, # image HSV-Value augmentation (fraction) - 'degrees': 1.98, # image rotation (+/- deg) - 'translate': 0.05, # image translation (+/- fraction) - 'scale': 0.05, # image scale (+/- gain) - 'shear': 0.641} # image shear (+/- deg) + 'degrees': 1.98 * 0, # image rotation (+/- deg) + 'translate': 0.05 * 0, # image translation (+/- fraction) + 'scale': 0.05 * 0, # image scale (+/- gain) + 'shear': 0.641 * 0} # image shear (+/- deg) # Overwrite hyp with hyp*.txt (optional) f = glob.glob('hyp*.txt') @@ -197,7 +197,7 @@ def train(): # Start training nb = len(dataloader) - prebias = start_epoch == 0 + prebias = False # start_epoch == 0 model.nc = nc # attach number of classes to model model.arc = opt.arc # attach yolo architecture model.hyp = hyp # attach hyperparameters to model @@ -211,7 +211,7 @@ def train(): print('Starting training for %g epochs...' % epochs) for epoch in range(start_epoch, epochs): # epoch ------------------------------------------------------------------ model.train() - model.gr = 1 - (1 + math.cos(min(epoch * 2, epochs) * math.pi / epochs)) / 2 # GIoU <-> 1.0 loss ratio + model.gr = 1 - (1 + math.cos(min(epoch * 1, epochs) * math.pi / epochs)) / 2 # GIoU <-> 1.0 loss ratio # Prebias if prebias: From 585064f300fa2d4bb80667927adc12caf1dbcc30 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 10 Mar 2020 13:33:14 -0700 Subject: [PATCH 2160/2595] updates --- utils/datasets.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index ff053856..b462aa3a 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -276,6 +276,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing self.hyp = hyp self.image_weights = image_weights self.rect = False if image_weights else rect + self.mosaic = self.augment and not self.rect # load 4 images at a time into a mosaic (only during training) # Define labels self.label_files = [x.replace('images', 'labels').replace(os.path.splitext(x)[-1], '.txt') @@ -417,8 +418,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing label_path = self.label_files[index] hyp = self.hyp - mosaic = True and self.augment # load 4 images at a time into a mosaic (only during training) - if mosaic: + if self.mosaic: # Load mosaic img, labels = load_mosaic(self, index) shapes = None @@ -450,7 +450,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing if self.augment: # Augment imagespace - if not mosaic: + if not self.mosaic: img, labels = random_affine(img, labels, degrees=hyp['degrees'], translate=hyp['translate'], From 320f9c6601ae1bddae036a5094dfe81ac1441cc3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Mar 2020 12:18:03 -0700 Subject: [PATCH 2161/2595] updates --- train.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/train.py b/train.py index d3e20aa8..30313894 100644 --- a/train.py +++ b/train.py @@ -138,15 +138,11 @@ def train(): model, optimizer = amp.initialize(model, optimizer, opt_level='O1', verbosity=0) # Scheduler https://github.com/ultralytics/yolov3/issues/238 - # lf = lambda x: 1 - x / epochs # linear ramp to zero - # lf = lambda x: 10 ** (hyp['lrf'] * x / epochs) # exp ramp - # lf = lambda x: 1 - 10 ** (hyp['lrf'] * (1 - x / epochs)) # inverse exp ramp lf = lambda x: (1 + math.cos(x * math.pi / epochs)) / 2 * 0.99 + 0.01 # cosine https://arxiv.org/pdf/1812.01187.pdf - scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf) - # scheduler = lr_scheduler.MultiStepLR(optimizer, milestones=[round(epochs * x) for x in [0.8, 0.9]], gamma=0.1) - scheduler.last_epoch = start_epoch + scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf, last_epoch=start_epoch - 1) + # scheduler = lr_scheduler.MultiStepLR(optimizer, [round(epochs * x) for x in [0.8, 0.9]], 0.1, start_epoch - 1) - # # Plot lr schedule + # Plot lr schedule # y = [] # for _ in range(epochs): # scheduler.step() From 4089735c5e515698b0b3b60e8726e6d601cfc090 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Mar 2020 14:50:50 -0700 Subject: [PATCH 2162/2595] updates --- train.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/train.py b/train.py index 30313894..d4bfc08d 100644 --- a/train.py +++ b/train.py @@ -238,15 +238,10 @@ def train(): targets = targets.to(device) # Hyperparameter burn-in - # n_burn = nb - 1 # min(nb // 5 + 1, 1000) # number of burn-in batches - # if ni <= n_burn: - # for m in model.named_modules(): - # if m[0].endswith('BatchNorm2d'): - # m[1].momentum = 1 - i / n_burn * 0.99 # BatchNorm2d momentum falls from 1 - 0.01 - # g = (i / n_burn) ** 4 # gain rises from 0 - 1 + # n_burn = 100 # number of burn-in batches + # if ni < n_burn: # for x in optimizer.param_groups: - # x['lr'] = hyp['lr0'] * g - # x['weight_decay'] = hyp['weight_decay'] * g + # x['lr'] = x['initial_lr'] * (ni / n_burn) ** 4 # gain rises from 0 - 1 # Plot images with bounding boxes if ni < 1: From e40d4c87f2e77e9169399c1c3e17295c42db88c4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Mar 2020 15:57:37 -0700 Subject: [PATCH 2163/2595] updates --- train.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index d4bfc08d..9cd25a39 100644 --- a/train.py +++ b/train.py @@ -237,11 +237,15 @@ def train(): imgs = imgs.to(device).float() / 255.0 # uint8 to float32, 0 - 255 to 0.0 - 1.0 targets = targets.to(device) - # Hyperparameter burn-in - # n_burn = 100 # number of burn-in batches - # if ni < n_burn: - # for x in optimizer.param_groups: - # x['lr'] = x['initial_lr'] * (ni / n_burn) ** 4 # gain rises from 0 - 1 + # Hyperparameter Burn-in + n_burn = 100 # number of burn-in batches + if ni <= n_burn: + g = (ni / n_burn) ** 4 # gain + for x in model.named_modules(): + if x[0].endswith('BatchNorm2d'): + x[1].momentum = 1 - 0.9 * g # momentum falls from 1 - 0.1 + for x in optimizer.param_groups: + x['lr'] = x['initial_lr'] * g # gain rises from 0 - 1 # Plot images with bounding boxes if ni < 1: From e76d4d0ffc904ef678c23cc41fcdeca20b66894a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Mar 2020 17:13:40 -0700 Subject: [PATCH 2164/2595] updates --- train.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 9cd25a39..85dd8c6b 100644 --- a/train.py +++ b/train.py @@ -238,12 +238,13 @@ def train(): targets = targets.to(device) # Hyperparameter Burn-in - n_burn = 100 # number of burn-in batches + n_burn = 200 # number of burn-in batches if ni <= n_burn: g = (ni / n_burn) ** 4 # gain for x in model.named_modules(): if x[0].endswith('BatchNorm2d'): - x[1].momentum = 1 - 0.9 * g # momentum falls from 1 - 0.1 + # x[1].momentum = 1 - 0.9 * g # momentum falls from 1 - 0.1 + x[1].track_running_stats = ni == n_burn for x in optimizer.param_groups: x['lr'] = x['initial_lr'] * g # gain rises from 0 - 1 From 673a1d037ddbfe8d6c305ad5b751bf219ba01455 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Mar 2020 18:12:54 -0700 Subject: [PATCH 2165/2595] Create greetings.yml --- .github/workflows/greetings.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .github/workflows/greetings.yml diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml new file mode 100644 index 00000000..f550a8a1 --- /dev/null +++ b/.github/workflows/greetings.yml @@ -0,0 +1,13 @@ +name: Greetings + +on: [pull_request, issues] + +jobs: + greeting: + runs-on: ubuntu-latest + steps: + - uses: actions/first-interaction@v1 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + pr-message: 'Hello **#**! Thank you for submitting a PR. We will respond as soon as possible.' + issue-message: "Hello **#**! Thank you for your interest in our work! Please visit our [Custom Training Tutorial](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) to get started, and see our [Google Colab Notebook](https://colab.research.google.com/drive/1G8T-VFxQkjDe4idzN8F-hbIBqkkkQnxw), [Docker Image](https://hub.docker.com/r/ultralytics/yolov3), and [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) for example environments. If this is a bug report, please provide screenshots and **minimum viable code to reproduce your issue**, otherwise we can not help you." From 997cd7f70b0550fded97880086b4ed1b7d0880a4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Mar 2020 20:35:52 -0700 Subject: [PATCH 2166/2595] Update greetings.yml --- .github/workflows/greetings.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index f550a8a1..9c7323de 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -9,5 +9,8 @@ jobs: - uses: actions/first-interaction@v1 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - pr-message: 'Hello **#**! Thank you for submitting a PR. We will respond as soon as possible.' - issue-message: "Hello **#**! Thank you for your interest in our work! Please visit our [Custom Training Tutorial](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) to get started, and see our [Google Colab Notebook](https://colab.research.google.com/drive/1G8T-VFxQkjDe4idzN8F-hbIBqkkkQnxw), [Docker Image](https://hub.docker.com/r/ultralytics/yolov3), and [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) for example environments. If this is a bug report, please provide screenshots and **minimum viable code to reproduce your issue**, otherwise we can not help you." + pr-message: 'Thank you for submitting a PR. We will respond as soon as possible.' + issue-message: > + Thank you for your interest in our work! Please visit our [Custom Training Tutorial](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) to get started, and see our [Google Colab Notebook](https://colab.research.google.com/drive/1G8T-VFxQkjDe4idzN8F-hbIBqkkkQnxw), [Docker Image](https://hub.docker.com/r/ultralytics/yolov3), and [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) for example environments. + + If this is a bug report, please provide screenshots and **minimum viable code to reproduce your issue**, otherwise we can not help you. From 75e88561cb480fc2422372f71081db1586ee0c5a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Mar 2020 20:45:14 -0700 Subject: [PATCH 2167/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 85dd8c6b..d35407fb 100644 --- a/train.py +++ b/train.py @@ -240,13 +240,13 @@ def train(): # Hyperparameter Burn-in n_burn = 200 # number of burn-in batches if ni <= n_burn: - g = (ni / n_burn) ** 4 # gain + g = (ni / n_burn) ** 2 # gain for x in model.named_modules(): if x[0].endswith('BatchNorm2d'): # x[1].momentum = 1 - 0.9 * g # momentum falls from 1 - 0.1 x[1].track_running_stats = ni == n_burn for x in optimizer.param_groups: - x['lr'] = x['initial_lr'] * g # gain rises from 0 - 1 + x['lr'] = x['initial_lr'] * lf(epoch) * g # gain rises from 0 - 1 # Plot images with bounding boxes if ni < 1: From 6ca8277de26e5587821bd778bea3a61feb1c8d15 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Mar 2020 21:30:47 -0700 Subject: [PATCH 2168/2595] updates --- README.md | 2 +- utils/utils.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b10092a0..3119e277 100755 --- a/README.md +++ b/README.md @@ -159,7 +159,7 @@ Namespace(batch_size=32, cfg='yolov3-spp.cfg', conf_thres=0.001, data='data/coco Using CUDA device0 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', total_memory=16130MB) Class Images Targets P R mAP@0.5 F1: 100%|█████| 157/157 [02:46<00:00, 1.06s/it] - all 5e+03 3.51e+04 0.822 0.433 0.611 0.551 + all 5e+03 3.51e+04 0.51 0.667 0.611 0.574 Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.419 Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.618 diff --git a/utils/utils.py b/utils/utils.py index 52d45918..16e0c8bf 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -188,7 +188,7 @@ def ap_per_class(tp, conf, pred_cls, target_cls): unique_classes = np.unique(target_cls) # Create Precision-Recall curve and compute AP for each class - pr_score = 0.5 # score to evaluate P and R https://github.com/ultralytics/yolov3/issues/898 + pr_score = 0.1 # score to evaluate P and R https://github.com/ultralytics/yolov3/issues/898 s = [len(unique_classes), tp.shape[1]] # number class, number iou thresholds (i.e. 10 for mAP0.5...0.95) ap, p, r = np.zeros(s), np.zeros(s), np.zeros(s) for ci, c in enumerate(unique_classes): From 41bf46a4191cf04bfeda78a3e82bc24c2cd6ffb0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 11 Mar 2020 22:11:19 -0700 Subject: [PATCH 2169/2595] updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index d35407fb..36cef234 100644 --- a/train.py +++ b/train.py @@ -240,7 +240,7 @@ def train(): # Hyperparameter Burn-in n_burn = 200 # number of burn-in batches if ni <= n_burn: - g = (ni / n_burn) ** 2 # gain + g = ni / n_burn # gain for x in model.named_modules(): if x[0].endswith('BatchNorm2d'): # x[1].momentum = 1 - 0.9 * g # momentum falls from 1 - 0.1 From 8a1f35eac66083840a5170695d2a7fd7ade914ed Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 12 Mar 2020 01:09:17 -0700 Subject: [PATCH 2170/2595] updates --- utils/utils.py | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 16e0c8bf..c36d82f4 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -364,6 +364,11 @@ class FocalLoss(nn.Module): return loss +def smooth_BCE(eps=0.1): # https://github.com/ultralytics/yolov3/issues/238#issuecomment-598028441 + # return positive, negative label smoothing BCE targets + return 1.0 - 0.5 * eps, 0.5 * eps + + def compute_loss(p, targets, model): # predictions, targets, model ft = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor lcls, lbox, lobj = ft([0]), ft([0]), ft([0]) @@ -379,12 +384,7 @@ def compute_loss(p, targets, model): # predictions, targets, model CE = nn.CrossEntropyLoss(reduction=red) # weight=model.class_weights # class label smoothing https://arxiv.org/pdf/1902.04103.pdf eqn 3 - smooth = False - if smooth: - e = 0.1 #  class label smoothing epsilon - cp, cn = 1.0 - e, e / (model.nc - 0.99) # class positive and negative labels - else: - cp, cn = 1.0, 0.0 + cp, cn = smooth_BCE(eps=0.0) if 'F' in arc: # add focal loss g = h['fl_gamma'] @@ -656,15 +656,18 @@ def print_model_biases(model): print('\nModel Bias Summary: %8s%18s%18s%18s' % ('layer', 'regression', 'objectness', 'classification')) multi_gpu = type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) for l in model.yolo_layers: # print pretrained biases - if multi_gpu: - na = model.module.module_list[l].na # number of anchors - b = model.module.module_list[l - 1][0].bias.view(na, -1) # bias 3x85 - else: - na = model.module_list[l].na - b = model.module_list[l - 1][0].bias.view(na, -1) # bias 3x85 - print(' ' * 20 + '%8g %18s%18s%18s' % (l, '%5.2f+/-%-5.2f' % (b[:, :4].mean(), b[:, :4].std()), - '%5.2f+/-%-5.2f' % (b[:, 4].mean(), b[:, 4].std()), - '%5.2f+/-%-5.2f' % (b[:, 5:].mean(), b[:, 5:].std()))) + try: + if multi_gpu: + na = model.module.module_list[l].na # number of anchors + b = model.module.module_list[l - 1][0].bias.view(na, -1) # bias 3x85 + else: + na = model.module_list[l].na + b = model.module_list[l - 1][0].bias.view(na, -1) # bias 3x85 + print(' ' * 20 + '%8g %18s%18s%18s' % (l, '%5.2f+/-%-5.2f' % (b[:, :4].mean(), b[:, :4].std()), + '%5.2f+/-%-5.2f' % (b[:, 4].mean(), b[:, 4].std()), + '%5.2f+/-%-5.2f' % (b[:, 5:].mean(), b[:, 5:].std()))) + except: + pass def strip_optimizer(f='weights/last.pt'): # from utils.utils import *; strip_optimizer() From 1ca2b8712a6b0a3dcd8112035d3056b77ad97022 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 12 Mar 2020 13:34:27 -0700 Subject: [PATCH 2171/2595] Update greetings.yml --- .github/workflows/greetings.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index 9c7323de..4c887177 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -9,8 +9,8 @@ jobs: - uses: actions/first-interaction@v1 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - pr-message: 'Thank you for submitting a PR. We will respond as soon as possible.' + pr-message: 'Hello @${{ github.actor }}, thank you for submitting a PR! We will respond as soon as possible.' issue-message: > - Thank you for your interest in our work! Please visit our [Custom Training Tutorial](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) to get started, and see our [Google Colab Notebook](https://colab.research.google.com/drive/1G8T-VFxQkjDe4idzN8F-hbIBqkkkQnxw), [Docker Image](https://hub.docker.com/r/ultralytics/yolov3), and [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) for example environments. + Hello @${{ github.actor }}, thank you for your interest in our work! Please visit our [Custom Training Tutorial](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) to get started, and see our [Google Colab Notebook](https://colab.research.google.com/drive/1G8T-VFxQkjDe4idzN8F-hbIBqkkkQnxw), [Docker Image](https://hub.docker.com/r/ultralytics/yolov3), and [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) for example environments. If this is a bug report, please provide screenshots and **minimum viable code to reproduce your issue**, otherwise we can not help you. From 32404890e93242b07596613fed71713ec8c2c733 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 12 Mar 2020 13:35:21 -0700 Subject: [PATCH 2172/2595] Update greetings.yml --- .github/workflows/greetings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index 4c887177..f9535cd2 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -12,5 +12,5 @@ jobs: pr-message: 'Hello @${{ github.actor }}, thank you for submitting a PR! We will respond as soon as possible.' issue-message: > Hello @${{ github.actor }}, thank you for your interest in our work! Please visit our [Custom Training Tutorial](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) to get started, and see our [Google Colab Notebook](https://colab.research.google.com/drive/1G8T-VFxQkjDe4idzN8F-hbIBqkkkQnxw), [Docker Image](https://hub.docker.com/r/ultralytics/yolov3), and [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) for example environments. - + If this is a bug report, please provide screenshots and **minimum viable code to reproduce your issue**, otherwise we can not help you. From a2786230671415e4d5c95a5c4f930fed3438b156 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Mar 2020 10:06:17 -0700 Subject: [PATCH 2173/2595] replaced floatn() with round() --- test.py | 4 ++-- utils/utils.py | 4 ---- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/test.py b/test.py index f6a68859..5e505491 100644 --- a/test.py +++ b/test.py @@ -127,8 +127,8 @@ def test(cfg, for di, d in enumerate(pred): jdict.append({'image_id': image_id, 'category_id': coco91class[int(d[5])], - 'bbox': [floatn(x, 3) for x in box[di]], - 'score': floatn(d[4], 5)}) + 'bbox': [round(x, 3) for x in box[di]], + 'score': round(d[4], 5)}) # Assign all predictions as incorrect correct = torch.zeros(pred.shape[0], niou, dtype=torch.bool, device=device) diff --git a/utils/utils.py b/utils/utils.py index c36d82f4..9fb0d0e5 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -26,10 +26,6 @@ np.set_printoptions(linewidth=320, formatter={'float_kind': '{:11.5g}'.format}) cv2.setNumThreads(0) -def floatn(x, n=3): # format floats to n decimals - return float(format(x, '.%gf' % n)) - - def init_seeds(seed=0): random.seed(seed) np.random.seed(seed) From 5362e8254e934bc90eca8520de313a58dff02eff Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Mar 2020 10:20:52 -0700 Subject: [PATCH 2174/2595] updates --- test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index 5e505491..845abfb3 100644 --- a/test.py +++ b/test.py @@ -127,8 +127,8 @@ def test(cfg, for di, d in enumerate(pred): jdict.append({'image_id': image_id, 'category_id': coco91class[int(d[5])], - 'bbox': [round(x, 3) for x in box[di]], - 'score': round(d[4], 5)}) + 'bbox': [round(x, 3) for x in box[di].tolist()], + 'score': round(d[4].item(), 5)}) # Assign all predictions as incorrect correct = torch.zeros(pred.shape[0], niou, dtype=torch.bool, device=device) From 731305142b6a0c18a3736de9b0b2f8fae81bc85f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Mar 2020 10:35:58 -0700 Subject: [PATCH 2175/2595] json dict bug fixes and speed improvements --- test.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test.py b/test.py index 845abfb3..b7d33d37 100644 --- a/test.py +++ b/test.py @@ -124,11 +124,11 @@ def test(cfg, scale_coords(imgs[si].shape[1:], box, shapes[si][0], shapes[si][1]) # to original shape box = xyxy2xywh(box) # xywh box[:, :2] -= box[:, 2:] / 2 # xy center to top-left corner - for di, d in enumerate(pred): + for p, b in zip(pred.tolist(), box.tolist()): jdict.append({'image_id': image_id, - 'category_id': coco91class[int(d[5])], - 'bbox': [round(x, 3) for x in box[di].tolist()], - 'score': round(d[4].item(), 5)}) + 'category_id': coco91class[int(p[5])], + 'bbox': [round(x, 3) for x in b], + 'score': round(p[4], 5)}) # Assign all predictions as incorrect correct = torch.zeros(pred.shape[0], niou, dtype=torch.bool, device=device) From 6aae5aca64e153afd24446c55f619613f5a62c27 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Mar 2020 10:47:00 -0700 Subject: [PATCH 2176/2595] inplace clip_coords() clamp --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 9fb0d0e5..5b9d4b43 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -160,8 +160,8 @@ def scale_coords(img1_shape, coords, img0_shape, ratio_pad=None): def clip_coords(boxes, img_shape): # Clip bounding xyxy bounding boxes to image shape (height, width) - boxes[:, [0, 2]] = boxes[:, [0, 2]].clamp(min=0, max=img_shape[1]) # clip x - boxes[:, [1, 3]] = boxes[:, [1, 3]].clamp(min=0, max=img_shape[0]) # clip y + boxes[:, [0, 2]].clamp_(0, img_shape[1]) # clip x + boxes[:, [1, 3]].clamp_(0, img_shape[0]) # clip y def ap_per_class(tp, conf, pred_cls, target_cls): From 0de07da61287f764cce440986ddf8ff6d4d3a8ff Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Mar 2020 11:03:39 -0700 Subject: [PATCH 2177/2595] updates --- README.md | 2 +- utils/utils.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3119e277..20042ff8 100755 --- a/README.md +++ b/README.md @@ -174,7 +174,7 @@ Using CUDA device0 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', total_memo Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.649 Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.735 -Speed: 6.6/1.6/8.2 ms inference/NMS/total per 608x608 image at batch-size 32 +Speed: 6.6/1.5/8.1 ms inference/NMS/total per 608x608 image at batch-size 32 ``` # Reproduce Our Results diff --git a/utils/utils.py b/utils/utils.py index 5b9d4b43..01f25878 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -325,7 +325,7 @@ def box_iou(boxes1, boxes2): lt = torch.max(boxes1[:, None, :2], boxes2[:, :2]) # [N,M,2] rb = torch.min(boxes1[:, None, 2:], boxes2[:, 2:]) # [N,M,2] - inter = (rb - lt).clamp(min=0).prod(2) # [N,M] + inter = (rb - lt).clamp(0).prod(2) # [N,M] return inter / (area1[:, None] + area2 - inter) # iou = inter / (area1 + area2 - inter) From f30a8706e518f3e1fc67c7a1ba3cfb2182015f6a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Mar 2020 12:06:48 -0700 Subject: [PATCH 2178/2595] update to coco results82 --- train.py | 27 +++++++++++++-------------- utils/utils.py | 6 +++--- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/train.py b/train.py index 36cef234..fe4d8a44 100644 --- a/train.py +++ b/train.py @@ -97,7 +97,6 @@ def train(): optimizer = optim.SGD(pg0, lr=hyp['lr0'], momentum=hyp['momentum'], nesterov=True) optimizer.add_param_group({'params': pg1, 'weight_decay': hyp['weight_decay']}) # add pg1 with weight_decay optimizer.add_param_group({'params': pg2}) # add pg2 (biases) - optimizer.param_groups[2]['lr'] *= 2.0 # bias lr del pg0, pg1, pg2 start_epoch = 0 @@ -138,7 +137,7 @@ def train(): model, optimizer = amp.initialize(model, optimizer, opt_level='O1', verbosity=0) # Scheduler https://github.com/ultralytics/yolov3/issues/238 - lf = lambda x: (1 + math.cos(x * math.pi / epochs)) / 2 * 0.99 + 0.01 # cosine https://arxiv.org/pdf/1812.01187.pdf + lf = lambda x: (1 + math.cos(x * math.pi / epochs)) / 2 # cosine https://arxiv.org/pdf/1812.01187.pdf scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf, last_epoch=start_epoch - 1) # scheduler = lr_scheduler.MultiStepLR(optimizer, [round(epochs * x) for x in [0.8, 0.9]], 0.1, start_epoch - 1) @@ -192,8 +191,8 @@ def train(): collate_fn=dataset.collate_fn) # Start training - nb = len(dataloader) - prebias = False # start_epoch == 0 + nb = len(dataloader) # number of batches + prebias = start_epoch == 0 model.nc = nc # attach number of classes to model model.arc = opt.arc # attach yolo architecture model.hyp = hyp # attach hyperparameters to model @@ -207,14 +206,15 @@ def train(): print('Starting training for %g epochs...' % epochs) for epoch in range(start_epoch, epochs): # epoch ------------------------------------------------------------------ model.train() - model.gr = 1 - (1 + math.cos(min(epoch * 1, epochs) * math.pi / epochs)) / 2 # GIoU <-> 1.0 loss ratio # Prebias if prebias: - ne = max(round(30 / nb), 3) # number of prebias epochs - ps = np.interp(epoch, [0, ne], [0.1, hyp['lr0'] * 2]), \ - np.interp(epoch, [0, ne], [0.9, hyp['momentum']]) # prebias settings (lr=0.1, momentum=0.9) + ne = 3 # number of prebias epochs + ps = 0.1, 0.9 # prebias settings (lr=0.1, momentum=0.9) + model.gr = 0.0 # giou loss ratio (obj_loss = 1.0) if epoch == ne: + ps = hyp['lr0'], hyp['momentum'] # normal training settings + model.gr = 1.0 # giou loss ratio (obj_loss = giou) print_model_biases(model) prebias = False @@ -240,13 +240,12 @@ def train(): # Hyperparameter Burn-in n_burn = 200 # number of burn-in batches if ni <= n_burn: - g = ni / n_burn # gain - for x in model.named_modules(): + # g = ni / n_burn # gain + for x in model.named_modules(): # initial stats may be poor, wait to track if x[0].endswith('BatchNorm2d'): - # x[1].momentum = 1 - 0.9 * g # momentum falls from 1 - 0.1 x[1].track_running_stats = ni == n_burn - for x in optimizer.param_groups: - x['lr'] = x['initial_lr'] * lf(epoch) * g # gain rises from 0 - 1 + # for x in optimizer.param_groups: + # x['lr'] = x['initial_lr'] * lf(epoch) * g # gain rises from 0 - 1 # Plot images with bounding boxes if ni < 1: @@ -308,7 +307,7 @@ def train(): batch_size=batch_size * 2, img_size=img_size_test, model=model, - conf_thres=0.001, # 0.001 if opt.evolve or (final_epoch and is_coco) else 0.01, + conf_thres=0.001 if final_epoch else 0.01, # 0.001 for best mAP, 0.01 for speed iou_thres=0.6, save_json=final_epoch and is_coco, single_cls=opt.single_cls, diff --git a/utils/utils.py b/utils/utils.py index 01f25878..99e44665 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -406,7 +406,7 @@ def compute_loss(p, targets, model): # predictions, targets, model pbox = torch.cat((pxy, pwh), 1) # predicted box giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation lbox += (1.0 - giou).sum() if red == 'sum' else (1.0 - giou).mean() # giou loss - tobj[b, a, gj, gi] = (1.0 - model.gr) + model.gr * giou.detach().clamp(0).type(tobj.dtype) # giou ratio + tobj[b, a, gj, gi] = (1.0 - model.gr) + model.gr * giou.detach().type(tobj.dtype) # giou ratio if 'default' in arc and model.nc > 1: # cls loss (only if multiple classes) t = torch.zeros_like(ps[:, 5:]) + cn # targets @@ -563,10 +563,10 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T if batched: c = pred[:, 5] * 0 if agnostic else pred[:, 5] # class-agnostic NMS boxes, scores = pred[:, :4].clone(), pred[:, 4] + boxes += c.view(-1, 1) * max_wh if method == 'vision_batch': - i = torchvision.ops.boxes.batched_nms(boxes, scores, c, iou_thres) + i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) elif method == 'fast_batch': # FastNMS from https://github.com/dbolya/yolact - boxes += c.view(-1, 1) * max_wh iou = box_iou(boxes, boxes).triu_(diagonal=1) # upper triangular iou matrix i = iou.max(dim=0)[0] < iou_thres From 208b9a73fede99aef1d348db3dc25a7ed677bbf2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Mar 2020 16:08:49 -0700 Subject: [PATCH 2179/2595] updates --- train.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/train.py b/train.py index fe4d8a44..0a1d5525 100644 --- a/train.py +++ b/train.py @@ -240,12 +240,14 @@ def train(): # Hyperparameter Burn-in n_burn = 200 # number of burn-in batches if ni <= n_burn: - # g = ni / n_burn # gain + # g = (ni / n_burn) ** 2 # gain for x in model.named_modules(): # initial stats may be poor, wait to track if x[0].endswith('BatchNorm2d'): x[1].track_running_stats = ni == n_burn # for x in optimizer.param_groups: # x['lr'] = x['initial_lr'] * lf(epoch) * g # gain rises from 0 - 1 + # if 'momentum' in x: + # x['momentum'] = hyp['momentum'] * g # Plot images with bounding boxes if ni < 1: From 418269d739b0fc990565e54e7c55128674a313f2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Mar 2020 16:51:30 -0700 Subject: [PATCH 2180/2595] FocalLoss() gamma and alpha default values --- train.py | 2 +- utils/utils.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index 0a1d5525..b34c2293 100644 --- a/train.py +++ b/train.py @@ -32,7 +32,7 @@ hyp = {'giou': 3.54, # giou loss gain 'lrf': -4., # final LambdaLR learning rate = lr0 * (10 ** lrf) 'momentum': 0.937, # SGD momentum 'weight_decay': 0.000484, # optimizer weight decay - 'fl_gamma': 0.5, # focal loss gamma + 'fl_gamma': 1.5, # focal loss gamma 'hsv_h': 0.0138, # image HSV-Hue augmentation (fraction) 'hsv_s': 0.678, # image HSV-Saturation augmentation (fraction) 'hsv_v': 0.36, # image HSV-Value augmentation (fraction) diff --git a/utils/utils.py b/utils/utils.py index 99e44665..788fd63d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -340,7 +340,7 @@ def wh_iou(wh1, wh2): class FocalLoss(nn.Module): # Wraps focal loss around existing loss_fcn() https://arxiv.org/pdf/1708.02002.pdf # i.e. criteria = FocalLoss(nn.BCEWithLogitsLoss(), gamma=2.5) - def __init__(self, loss_fcn, gamma=0.5, alpha=1): + def __init__(self, loss_fcn, gamma=1.5, alpha=0.25): super(FocalLoss, self).__init__() self.loss_fcn = loss_fcn self.gamma = gamma From a52c0abf8dfb9707df2baade03a7de80932d7692 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Mar 2020 20:12:54 -0700 Subject: [PATCH 2181/2595] updates --- train.py | 12 ++++++++--- utils/torch_utils.py | 47 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index b34c2293..e2ba4b0b 100644 --- a/train.py +++ b/train.py @@ -190,13 +190,19 @@ def train(): pin_memory=True, collate_fn=dataset.collate_fn) - # Start training - nb = len(dataloader) # number of batches - prebias = start_epoch == 0 + # Model parameters model.nc = nc # attach number of classes to model model.arc = opt.arc # attach yolo architecture model.hyp = hyp # attach hyperparameters to model + model.gr = 0.0 # giou loss ratio (obj_loss = 1.0 or giou) model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights + + # Model EMA + # ema = torch_utils.ModelEMA(model, decay=0.9997) + + # Start training + nb = len(dataloader) # number of batches + prebias = start_epoch == 0 maps = np.zeros(nc) # mAP per class # torch.autograd.set_detect_anomaly(True) results = (0, 0, 0, 0, 0, 0, 0) # 'P', 'R', 'mAP', 'F1', 'val GIoU', 'val Objectness', 'val Classification' diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 941c22a4..c706f7f5 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -1,8 +1,10 @@ import os import time +from copy import deepcopy import torch import torch.backends.cudnn as cudnn +import torch.nn as nn def init_seeds(seed=0): @@ -101,3 +103,48 @@ def load_classifier(name='resnet101', n=2): model.last_linear.weight = torch.nn.Parameter(torch.zeros(n, filters)) model.last_linear.out_features = n return model + + +class ModelEMA: + """ Model Exponential Moving Average from https://github.com/rwightman/pytorch-image-models + Keep a moving average of everything in the model state_dict (parameters and buffers). + This is intended to allow functionality like + https://www.tensorflow.org/api_docs/python/tf/train/ExponentialMovingAverage + A smoothed version of the weights is necessary for some training schemes to perform well. + E.g. Google's hyper-params for training MNASNet, MobileNet-V3, EfficientNet, etc that use + RMSprop with a short 2.4-3 epoch decay period and slow LR decay rate of .96-.99 requires EMA + smoothing of weights to match results. Pay attention to the decay constant you are using + relative to your update count per epoch. + To keep EMA from using GPU resources, set device='cpu'. This will save a bit of memory but + disable validation of the EMA weights. Validation will have to be done manually in a separate + process, or after the training stops converging. + This class is sensitive where it is initialized in the sequence of model init, + GPU assignment and distributed training wrappers. + I've tested with the sequence in my own train.py for torch.DataParallel, apex.DDP, and single-GPU. + """ + + def __init__(self, model, decay=0.9998, device=''): + # make a copy of the model for accumulating moving average of weights + self.ema = deepcopy(model) + self.ema.eval() + self.decay = decay + self.device = device # perform ema on different device from model if set + if device: + self.ema.to(device=device) + for p in self.ema.parameters(): + p.requires_grad_(False) + + def update(self, model): + d = self.decay + with torch.no_grad(): + if type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel): + msd, esd = model.module.state_dict(), self.ema.module.state_dict() + else: + msd, esd = model.state_dict(), self.ema.state_dict() + + # self.ema.load_state_dict( + # {k: esd[k] * d + (1 - d) * v.detach() for k, v in model.items() if v.dtype.is_floating_point}) + for k in msd.keys(): + if esd[k].dtype.is_floating_point: + esd[k] *= d + esd[k] += (1. - d) * msd[k].detach() From 666ba85ed33e6b1864cdc37b5787c77c5a38bed7 Mon Sep 17 00:00:00 2001 From: Falak Date: Sun, 15 Mar 2020 04:05:59 +0530 Subject: [PATCH 2182/2595] Comment updates on box coordinates (#852) * Update utils.py Reusing function defined above * Update utils.py * Reverting change which break bbox coordinate computation * Update utils.py Co-authored-by: Glenn Jocher --- utils/utils.py | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 788fd63d..ec997b2a 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -103,22 +103,22 @@ def weights_init_normal(m): def xyxy2xywh(x): - # Convert bounding box format from [x1, y1, x2, y2] to [x, y, w, h] + # Transform box coordinates from [x1, y1, x2, y2] (where xy1=top-left, xy2=bottom-right) to [x, y, w, h] y = torch.zeros_like(x) if isinstance(x, torch.Tensor) else np.zeros_like(x) - y[:, 0] = (x[:, 0] + x[:, 2]) / 2 - y[:, 1] = (x[:, 1] + x[:, 3]) / 2 - y[:, 2] = x[:, 2] - x[:, 0] - y[:, 3] = x[:, 3] - x[:, 1] + y[:, 0] = (x[:, 0] + x[:, 2]) / 2 # x center + y[:, 1] = (x[:, 1] + x[:, 3]) / 2 # y center + y[:, 2] = x[:, 2] - x[:, 0] # width + y[:, 3] = x[:, 3] - x[:, 1] # height return y def xywh2xyxy(x): - # Convert bounding box format from [x, y, w, h] to [x1, y1, x2, y2] + # Transform box coordinates from [x, y, w, h] to [x1, y1, x2, y2] (where xy1=top-left, xy2=bottom-right) y = torch.zeros_like(x) if isinstance(x, torch.Tensor) else np.zeros_like(x) - y[:, 0] = x[:, 0] - x[:, 2] / 2 - y[:, 1] = x[:, 1] - x[:, 3] / 2 - y[:, 2] = x[:, 0] + x[:, 2] / 2 - y[:, 3] = x[:, 1] + x[:, 3] / 2 + y[:, 0] = x[:, 0] - x[:, 2] / 2 # top left x + y[:, 1] = x[:, 1] - x[:, 3] / 2 # top left y + y[:, 2] = x[:, 0] + x[:, 2] / 2 # bottom right x + y[:, 3] = x[:, 1] + x[:, 3] / 2 # bottom right y return y @@ -264,7 +264,7 @@ def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False, DIoU=False, CIoU=False): if x1y1x2y2: # x1, y1, x2, y2 = box1 b1_x1, b1_y1, b1_x2, b1_y2 = box1[0], box1[1], box1[2], box1[3] b2_x1, b2_y1, b2_x2, b2_y2 = box2[0], box2[1], box2[2], box2[3] - else: # x, y, w, h = box1 + else: # transform from xywh to xyxy b1_x1, b1_x2 = box1[0] - box1[2] / 2, box1[0] + box1[2] / 2 b1_y1, b1_y2 = box1[1] - box1[3] / 2, box1[1] + box1[3] / 2 b2_x1, b2_x2 = box2[0] - box2[2] / 2, box2[0] + box2[2] / 2 @@ -670,8 +670,6 @@ def strip_optimizer(f='weights/last.pt'): # from utils.utils import *; strip_op # Strip optimizer from *.pt files for lighter files (reduced by 2/3 size) x = torch.load(f, map_location=torch.device('cpu')) x['optimizer'] = None - # x['training_results'] = None # uncomment to create a backbone - # x['epoch'] = -1 # uncomment to create a backbone torch.save(x, f) @@ -1038,7 +1036,7 @@ def plot_results_overlay(start=0, stop=0): # from utils.utils import *; plot_re def plot_results(start=0, stop=0, bucket='', id=()): # from utils.utils import *; plot_results() - # Plot training results files 'results*.txt' + # Plot training 'results*.txt' as seen in https://github.com/ultralytics/yolov3#training fig, ax = plt.subplots(2, 5, figsize=(12, 6)) ax = ax.ravel() s = ['GIoU', 'Objectness', 'Classification', 'Precision', 'Recall', From b89cc396af3218828f6915722280c67f711496f0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 14 Mar 2020 16:23:14 -0700 Subject: [PATCH 2183/2595] EMA class updates --- train.py | 5 ++--- utils/torch_utils.py | 16 ++++++++++------ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/train.py b/train.py index e2ba4b0b..18d2d0f1 100644 --- a/train.py +++ b/train.py @@ -217,7 +217,6 @@ def train(): if prebias: ne = 3 # number of prebias epochs ps = 0.1, 0.9 # prebias settings (lr=0.1, momentum=0.9) - model.gr = 0.0 # giou loss ratio (obj_loss = 1.0) if epoch == ne: ps = hyp['lr0'], hyp['momentum'] # normal training settings model.gr = 1.0 # giou loss ratio (obj_loss = giou) @@ -307,6 +306,7 @@ def train(): scheduler.step() # Process epoch results + # ema.update_attr(model) final_epoch = epoch + 1 == epochs if not opt.notest or final_epoch: # Calculate mAP is_coco = any([x in data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) and model.nc == 80 @@ -348,8 +348,7 @@ def train(): chkpt = {'epoch': epoch, 'best_fitness': best_fitness, 'training_results': f.read(), - 'model': model.module.state_dict() if type( - model) is nn.parallel.DistributedDataParallel else model.state_dict(), + 'model': model.module.state_dict() if hasattr(model, 'module') else model.state_dict(), 'optimizer': None if final_epoch else optimizer.state_dict()} # Save last checkpoint diff --git a/utils/torch_utils.py b/utils/torch_utils.py index c706f7f5..b394b642 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -141,10 +141,14 @@ class ModelEMA: msd, esd = model.module.state_dict(), self.ema.module.state_dict() else: msd, esd = model.state_dict(), self.ema.state_dict() + # self.ema.load_state_dict({k: esd[k] * d + (1 - d) * v.detach() for k, v in model.items() if v.dtype.is_floating_point}) + for k, v in esd.items(): + if v.dtype.is_floating_point: + v *= d + v += (1. - d) * msd[k].detach() - # self.ema.load_state_dict( - # {k: esd[k] * d + (1 - d) * v.detach() for k, v in model.items() if v.dtype.is_floating_point}) - for k in msd.keys(): - if esd[k].dtype.is_floating_point: - esd[k] *= d - esd[k] += (1. - d) * msd[k].detach() + def update_attr(self, model): + # Assign attributes (which may change during training) + for k in model.__dict__.keys(): + if not k.startswith('_'): + self.ema.__setattr__(k, model.getattr(k)) From 9ce4ec48a7ede61a51515cecbfd6f966c242cd2a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 14 Mar 2020 16:46:54 -0700 Subject: [PATCH 2184/2595] model.info() method implemented --- detect.py | 1 - models.py | 7 ++++++- train.py | 1 - utils/torch_utils.py | 4 ++-- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/detect.py b/detect.py index d4ad635e..06083988 100644 --- a/detect.py +++ b/detect.py @@ -36,7 +36,6 @@ def detect(save_img=False): # Fuse Conv2d + BatchNorm2d layers # model.fuse() - # torch_utils.model_info(model, report='summary') # 'full' or 'summary' # Eval mode model.to(device).eval() diff --git a/models.py b/models.py index 69618066..04224ac0 100755 --- a/models.py +++ b/models.py @@ -240,6 +240,7 @@ class Darknet(nn.Module): # Darknet Header https://github.com/AlexeyAB/darknet/issues/2914#issuecomment-496675346 self.version = np.array([0, 2, 5], dtype=np.int32) # (int32) version info: major, minor, revision self.seen = np.array([0], dtype=np.int64) # (int64) number of images seen during training + self.info() # print model description def forward(self, x, verbose=False): img_size = x.shape[-2:] @@ -291,6 +292,7 @@ class Darknet(nn.Module): def fuse(self): # Fuse Conv2d + BatchNorm2d layers throughout model + print('Fusing Conv2d() and BatchNorm2d() layers...') fused_list = nn.ModuleList() for a in list(self.children())[0]: if isinstance(a, nn.Sequential): @@ -303,7 +305,10 @@ class Darknet(nn.Module): break fused_list.append(a) self.module_list = fused_list - # model_info(self) # yolov3-spp reduced from 225 to 152 layers + self.info() # yolov3-spp reduced from 225 to 152 layers + + def info(self, verbose=False): + torch_utils.model_info(self, verbose) def get_yolo_layers(model): diff --git a/train.py b/train.py index 18d2d0f1..2e4a9744 100644 --- a/train.py +++ b/train.py @@ -207,7 +207,6 @@ def train(): # torch.autograd.set_detect_anomaly(True) results = (0, 0, 0, 0, 0, 0, 0) # 'P', 'R', 'mAP', 'F1', 'val GIoU', 'val Objectness', 'val Classification' t0 = time.time() - torch_utils.model_info(model, report='summary') # 'full' or 'summary' print('Using %g dataloader workers' % nw) print('Starting training for %g epochs...' % epochs) for epoch in range(start_epoch, epochs): # epoch ------------------------------------------------------------------ diff --git a/utils/torch_utils.py b/utils/torch_utils.py index b394b642..98e80345 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -75,11 +75,11 @@ def fuse_conv_and_bn(conv, bn): return fusedconv -def model_info(model, report='summary'): +def model_info(model, verbose=False): # Plots a line-by-line description of a PyTorch model n_p = sum(x.numel() for x in model.parameters()) # number parameters n_g = sum(x.numel() for x in model.parameters() if x.requires_grad) # number gradients - if report == 'full': + if verbose: print('%5s %40s %9s %12s %20s %10s %10s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) for i, (name, p) in enumerate(model.named_parameters()): name = name.replace('module_list.', '') From ea4c26b32d621286610a21949eed3d506cad95c9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 14 Mar 2020 16:54:04 -0700 Subject: [PATCH 2185/2595] BatchNorm2d() to EfficientDet defaults: decay=0.997 eps=1e-4 --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 04224ac0..1d9dae0e 100755 --- a/models.py +++ b/models.py @@ -34,7 +34,7 @@ def create_modules(module_defs, img_size, arc): groups=mdef['groups'] if 'groups' in mdef else 1, bias=not bn)) if bn: - modules.add_module('BatchNorm2d', nn.BatchNorm2d(filters, momentum=0.1)) + modules.add_module('BatchNorm2d', nn.BatchNorm2d(filters, momentum=0.003, eps=1E-4)) else: routs.append(i) # detection output (goes into yolo layer) From 5ebbb2db28cb59d226fbc079c305670d7117c4ad Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 14 Mar 2020 17:04:38 -0700 Subject: [PATCH 2186/2595] ASFF implementation --- models.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index 1d9dae0e..e9675f89 100755 --- a/models.py +++ b/models.py @@ -191,7 +191,27 @@ class YOLOLayer(nn.Module): create_grids(self, img_size, (nx, ny)) def forward(self, p, img_size, out): - if ONNX_EXPORT: + ASFF = False # https://arxiv.org/abs/1911.09516 + if ASFF: + i, n = self.index, self.nl # index in layers, number of layers + p = out[self.layers[i]] + bs, _, ny, nx = p.shape # bs, 255, 13, 13 + if (self.nx, self.ny) != (nx, ny): + create_grids(self, img_size, (nx, ny), p.device, p.dtype) + + # outputs and weights + # w = F.softmax(p[:, -n:], 1) # normalized weights + w = torch.sigmoid(p[:, -n:]) * (2 / n) # sigmoid weights (faster) + # w = w / w.sum(1).unsqueeze(1) # normalize across layer dimension + + # weighted ASFF sum + p = out[self.layers[i]][:, :-n] * w[:, i:i + 1] + for j in range(n): + if j != i: + p += w[:, j:j + 1] * \ + F.interpolate(out[self.layers[j]][:, :-n], size=[ny, nx], mode='bilinear', align_corners=False) + + elif ONNX_EXPORT: bs = 1 # batch size else: bs, _, ny, nx = p.shape # bs, 255, 13, 13 From d91469a516837f66741f83f82b30e8a22bed0aa1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 14 Mar 2020 17:33:29 -0700 Subject: [PATCH 2187/2595] EMA class updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 2e4a9744..a41a3179 100644 --- a/train.py +++ b/train.py @@ -198,7 +198,7 @@ def train(): model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights # Model EMA - # ema = torch_utils.ModelEMA(model, decay=0.9997) + # ema = torch_utils.ModelEMA(model, decay=0.9998) # Start training nb = len(dataloader) # number of batches From 851c9b98839b18f867e37521d09a5688da90f095 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 14 Mar 2020 17:34:13 -0700 Subject: [PATCH 2188/2595] EMA class updates --- train.py | 1 + 1 file changed, 1 insertion(+) diff --git a/train.py b/train.py index a41a3179..83f51552 100644 --- a/train.py +++ b/train.py @@ -292,6 +292,7 @@ def train(): if ni % accumulate == 0: optimizer.step() optimizer.zero_grad() + # ema.update(model) # Print batch results mloss = (mloss * i + loss_items) / (i + 1) # update mean losses From adba66c3a64a98e29914668a14cabfbb2ed1b919 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 14 Mar 2020 18:08:48 -0700 Subject: [PATCH 2189/2595] EMA class updates --- utils/torch_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 98e80345..36ab9ead 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -151,4 +151,4 @@ class ModelEMA: # Assign attributes (which may change during training) for k in model.__dict__.keys(): if not k.startswith('_'): - self.ema.__setattr__(k, model.getattr(k)) + setattr(model, k, getattr(model, k)) From 07d2f0ad03d1c6a0dcff1737c320e983c1d5a01f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 15 Mar 2020 18:39:54 -0700 Subject: [PATCH 2190/2595] test/inference time augmentation --- test.py | 15 ++++++++++++++- utils/torch_utils.py | 11 +++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/test.py b/test.py index b7d33d37..d9439f6b 100644 --- a/test.py +++ b/test.py @@ -73,7 +73,7 @@ def test(cfg, for batch_i, (imgs, targets, paths, shapes) in enumerate(tqdm(dataloader, desc=s)): imgs = imgs.to(device).float() / 255.0 # uint8 to float32, 0 - 255 to 0.0 - 1.0 targets = targets.to(device) - _, _, height, width = imgs.shape # batch size, channels, height, width + nb, _, height, width = imgs.shape # batch size, channels, height, width whwh = torch.Tensor([width, height, width, height]).to(device) # Plot images with bounding boxes @@ -83,11 +83,24 @@ def test(cfg, # Disable gradients with torch.no_grad(): + aug = False # augment https://github.com/ultralytics/yolov3/issues/931 + if aug: + imgs = torch.cat((imgs, + imgs.flip(3), # flip-lr + torch_utils.scale_img(imgs, 0.7), # scale + ), 0) + # Run model t = torch_utils.time_synchronized() inf_out, train_out = model(imgs) # inference and training outputs t0 += torch_utils.time_synchronized() - t + if aug: + x = torch.split(inf_out, nb, dim=0) + x[1][..., 0] = width - x[1][..., 0] # flip lr + x[2][..., :4] /= 0.7 # scale + inf_out = torch.cat(x, 1) + # Compute loss if hasattr(model, 'hyp'): # if model has loss hyperparameters loss += compute_loss(train_out, targets, model)[1][:3] # GIoU, obj, cls diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 36ab9ead..187d5142 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -5,6 +5,7 @@ from copy import deepcopy import torch import torch.backends.cudnn as cudnn import torch.nn as nn +import torch.nn.functional as F def init_seeds(seed=0): @@ -105,6 +106,16 @@ def load_classifier(name='resnet101', n=2): return model +def scale_img(img, r=1.0): # img(16,3,256,416), r=ratio + # scales a batch of pytorch images while retaining same input shape (cropped or grey-padded) + h, w = img.shape[2:] + s = (int(h * r), int(w * r)) # new size + p = h - s[0], w - s[1] # pad/crop pixels + img = F.interpolate(img, size=s, mode='bilinear', align_corners=False) # resize + return F.pad(img, [0, p[1], 0, p[0]], value=0.5) if r < 1.0 else img[:, :, :p[0], :p[1]] # pad/crop + # cv2.imwrite('scaled.jpg', np.array(img[0].permute((1, 2, 0)) * 255.0)) + + class ModelEMA: """ Model Exponential Moving Average from https://github.com/rwightman/pytorch-image-models Keep a moving average of everything in the model state_dict (parameters and buffers). From c4047000fe6708fc4468774ad4416043cb4dd499 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Mar 2020 14:03:50 -0700 Subject: [PATCH 2191/2595] FocalLoss() updated to match TF --- utils/utils.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index ec997b2a..929f6ba4 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -338,19 +338,25 @@ def wh_iou(wh1, wh2): class FocalLoss(nn.Module): - # Wraps focal loss around existing loss_fcn() https://arxiv.org/pdf/1708.02002.pdf - # i.e. criteria = FocalLoss(nn.BCEWithLogitsLoss(), gamma=2.5) + # Wraps focal loss around existing loss_fcn(), i.e. criteria = FocalLoss(nn.BCEWithLogitsLoss(), gamma=1.5) def __init__(self, loss_fcn, gamma=1.5, alpha=0.25): super(FocalLoss, self).__init__() - self.loss_fcn = loss_fcn + self.loss_fcn = loss_fcn # must be nn.BCEWithLogitsLoss() self.gamma = gamma self.alpha = alpha self.reduction = loss_fcn.reduction self.loss_fcn.reduction = 'none' # required to apply FL to each element - def forward(self, input, target): - loss = self.loss_fcn(input, target) - loss *= self.alpha * (1.000001 - torch.exp(-loss)) ** self.gamma # non-zero power for gradient stability + def forward(self, pred, true): + loss = self.loss_fcn(pred, true) + # loss *= self.alpha * (1.000001 - torch.exp(-loss)) ** self.gamma # non-zero power for gradient stability + + # TF implementation https://github.com/tensorflow/addons/blob/v0.7.1/tensorflow_addons/losses/focal_loss.py + pred_prob = torch.sigmoid(pred) # prob from logits + p_t = true * pred_prob + (1 - true) * (1 - pred_prob) + alpha_factor = true * self.alpha + (1 - true) * (1 - self.alpha) + modulating_factor = (1.0 - p_t) ** self.gamma + loss = alpha_factor * modulating_factor * loss if self.reduction == 'mean': return loss.mean() From c09fcfc4fe3a5b478cecf5c26de88468bc4ab1d9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Mar 2020 14:18:56 -0700 Subject: [PATCH 2192/2595] EMA class updates --- utils/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 929f6ba4..82b75d41 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -349,7 +349,8 @@ class FocalLoss(nn.Module): def forward(self, pred, true): loss = self.loss_fcn(pred, true) - # loss *= self.alpha * (1.000001 - torch.exp(-loss)) ** self.gamma # non-zero power for gradient stability + # p_t = torch.exp(-loss) + # loss *= self.alpha * (1.000001 - p_t) ** self.gamma # non-zero power for gradient stability # TF implementation https://github.com/tensorflow/addons/blob/v0.7.1/tensorflow_addons/losses/focal_loss.py pred_prob = torch.sigmoid(pred) # prob from logits From 2a12a91245127ff0f23ff360a5b522b5249dc2c4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Mar 2020 15:19:58 -0700 Subject: [PATCH 2193/2595] nvcr.io/nvidia/pytorch:20.02-py3 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index cdf022a3..d1667cd3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Start FROM Nvidia PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorch -FROM nvcr.io/nvidia/pytorch:20.01-py3 +FROM nvcr.io/nvidia/pytorch:20.02-py3 # Install dependencies (pip or conda) RUN pip install -U gsutil From f1208f784e7f47c3fbe3ed7a6cc7f94bfa8d6751 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Mar 2020 15:36:56 -0700 Subject: [PATCH 2194/2595] updated run history --- utils/gcp.sh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 4d58b143..932852c4 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -6,7 +6,8 @@ git clone https://github.com/ultralytics/yolov3 # sudo apt-get install zip #git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex sudo conda install -yc conda-forge scikit-image pycocotools -python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('193Zp_ye-3qXMonR1nZj3YyxMtQkMy50k','coco2014.zip')" +# python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('193Zp_ye-3qXMonR1nZj3YyxMtQkMy50k','coco2014.zip')" +python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('1WQT6SOktSe8Uw6r10-2JhbEhMY5DJaph','coco2017.zip')" python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('1C3HewOG9akA3y456SZLBJZfNDPkBwAto','knife.zip')" python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('13g3LqdpkNE8sPosVJT6KFXlfoMypzRP4','sm4.zip')" sudo shutdown @@ -438,6 +439,15 @@ n=90 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --g n=91 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown n=92 && t=ultralytics/coco:v91 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 225 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown n=93 && t=ultralytics/coco:v86 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=94 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=95 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=96 && t=ultralytics/coco:v94 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 64 --accum 1 --weights '' --device 0 --cfg yolov4-tiny.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=97 && t=ultralytics/coco:v94 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 64 --accum 1 --weights '' --device 1 --cfg yolov4-tiny-spp.cfg --nosave --bucket ult/coco --name $n --multi +n=98 && t=ultralytics/coco:v94 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 64 --accum 1 --weights '' --device 0 --cfg yolov4-tiny-spp-dn53.cfg --nosave --bucket ult/coco --name $n --multi --cache && sudo shutdown +n=99 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov4-asff.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=100 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=101 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown +n=102 && t=ultralytics/coco:v101 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi --arc Fdefault && sudo shutdown # athena @@ -459,3 +469,4 @@ n=25 && t=ultralytics/wer:v25 && sudo docker pull $t && sudo docker run -it --gp n=26 && t=ultralytics/wer:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny3-1cls.cfg --single --adam n=27 && t=ultralytics/test:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 416 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --name $n --nosave --cache --device 1 --cfg yolov4-tiny-1cls.cfg --single --adam n=28 && t=ultralytics/test:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 416 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov4-tiny-1cls.cfg --single --adam +n=29 && t=ultralytics/wer:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights '' --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov4-tiny-spp-1cls-dn53.cfg --single --adam From 1a12667ce1f0af92b68987e4b48b060a6f738248 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Mar 2020 17:31:37 -0700 Subject: [PATCH 2195/2595] loss function cleanup --- utils/utils.py | 29 +++++++---------------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 82b75d41..7bb8babb 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -377,21 +377,19 @@ def compute_loss(p, targets, model): # predictions, targets, model lcls, lbox, lobj = ft([0]), ft([0]), ft([0]) tcls, tbox, indices, anchor_vec = build_targets(model, targets) h = model.hyp # hyperparameters - arc = model.arc # # (default, uCE, uBCE) detection architectures + arc = model.arc # architecture red = 'mean' # Loss reduction (sum or mean) # Define criteria BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']]), reduction=red) BCEobj = nn.BCEWithLogitsLoss(pos_weight=ft([h['obj_pw']]), reduction=red) - BCE = nn.BCEWithLogitsLoss(reduction=red) - CE = nn.CrossEntropyLoss(reduction=red) # weight=model.class_weights # class label smoothing https://arxiv.org/pdf/1902.04103.pdf eqn 3 cp, cn = smooth_BCE(eps=0.0) - if 'F' in arc: # add focal loss - g = h['fl_gamma'] - BCEcls, BCEobj, BCE, CE = FocalLoss(BCEcls, g), FocalLoss(BCEobj, g), FocalLoss(BCE, g), FocalLoss(CE, g) + # focal loss + if 'F' in arc: + BCEcls, BCEobj = FocalLoss(BCEcls, h['fl_gamma']), FocalLoss(BCEobj, h['fl_gamma']) # Compute losses np, ng = 0, 0 # number grid points, targets @@ -415,8 +413,8 @@ def compute_loss(p, targets, model): # predictions, targets, model lbox += (1.0 - giou).sum() if red == 'sum' else (1.0 - giou).mean() # giou loss tobj[b, a, gj, gi] = (1.0 - model.gr) + model.gr * giou.detach().type(tobj.dtype) # giou ratio - if 'default' in arc and model.nc > 1: # cls loss (only if multiple classes) - t = torch.zeros_like(ps[:, 5:]) + cn # targets + if model.nc > 1: # cls loss (only if multiple classes) + t = torch.full_like(ps[:, 5:], cn) # targets t[range(nb), tcls[i]] = cp lcls += BCEcls(ps[:, 5:], t) # BCE # lcls += CE(ps[:, 5:], tcls[i]) # CE @@ -425,20 +423,7 @@ def compute_loss(p, targets, model): # predictions, targets, model # with open('targets.txt', 'a') as file: # [file.write('%11.5g ' * 4 % tuple(x) + '\n') for x in torch.cat((txy[i], twh[i]), 1)] - if 'default' in arc: # separate obj and cls - lobj += BCEobj(pi[..., 4], tobj) # obj loss - - elif 'BCE' in arc: # unified BCE (80 classes) - t = torch.zeros_like(pi[..., 5:]) # targets - if nb: - t[b, a, gj, gi, tcls[i]] = 1.0 - lobj += BCE(pi[..., 5:], t) - - elif 'CE' in arc: # unified CE (1 background + 80 classes) - t = torch.zeros_like(pi[..., 0], dtype=torch.long) # targets - if nb: - t[b, a, gj, gi] = tcls[i] + 1 - lcls += CE(pi[..., 4:].view(-1, model.nc + 1), t.view(-1)) + lobj += BCEobj(pi[..., 4], tobj) # obj loss lbox *= h['giou'] lobj *= h['obj'] From 77c6c01970495a1636dce4090ff57f80c44eb72a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Mar 2020 17:51:40 -0700 Subject: [PATCH 2196/2595] EMA class updates --- utils/torch_utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 187d5142..ac38249c 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -152,7 +152,7 @@ class ModelEMA: msd, esd = model.module.state_dict(), self.ema.module.state_dict() else: msd, esd = model.state_dict(), self.ema.state_dict() - # self.ema.load_state_dict({k: esd[k] * d + (1 - d) * v.detach() for k, v in model.items() if v.dtype.is_floating_point}) + for k, v in esd.items(): if v.dtype.is_floating_point: v *= d @@ -162,4 +162,4 @@ class ModelEMA: # Assign attributes (which may change during training) for k in model.__dict__.keys(): if not k.startswith('_'): - setattr(model, k, getattr(model, k)) + setattr(self.ema, k, getattr(model, k)) From 448c4a6e1fce54354d3134c53da10387ac54d20d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Mar 2020 20:46:25 -0700 Subject: [PATCH 2197/2595] Remove deprecated --arc architecture options, implement --arc default for all cases --- models.py | 6 +++--- train.py | 6 ++---- utils/utils.py | 6 +++--- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/models.py b/models.py index e9675f89..767847b4 100755 --- a/models.py +++ b/models.py @@ -7,7 +7,7 @@ from utils.utils import * ONNX_EXPORT = False -def create_modules(module_defs, img_size, arc): +def create_modules(module_defs, img_size): # Constructs module list of layer blocks from module configuration in module_defs hyperparams = module_defs.pop(0) @@ -250,11 +250,11 @@ class YOLOLayer(nn.Module): class Darknet(nn.Module): # YOLOv3 object detection model - def __init__(self, cfg, img_size=(416, 416), arc='default'): + def __init__(self, cfg, img_size=(416, 416)): super(Darknet, self).__init__() self.module_defs = parse_model_cfg(cfg) - self.module_list, self.routs = create_modules(self.module_defs, img_size, arc) + self.module_list, self.routs = create_modules(self.module_defs, img_size) self.yolo_layers = get_yolo_layers(self) # Darknet Header https://github.com/AlexeyAB/darknet/issues/2914#issuecomment-496675346 diff --git a/train.py b/train.py index 83f51552..cf016b56 100644 --- a/train.py +++ b/train.py @@ -32,7 +32,7 @@ hyp = {'giou': 3.54, # giou loss gain 'lrf': -4., # final LambdaLR learning rate = lr0 * (10 ** lrf) 'momentum': 0.937, # SGD momentum 'weight_decay': 0.000484, # optimizer weight decay - 'fl_gamma': 1.5, # focal loss gamma + 'fl_gamma': 0.0, # focal loss gamma (efficientDet default is gamma=1.5) 'hsv_h': 0.0138, # image HSV-Hue augmentation (fraction) 'hsv_s': 0.678, # image HSV-Saturation augmentation (fraction) 'hsv_v': 0.36, # image HSV-Value augmentation (fraction) @@ -77,7 +77,7 @@ def train(): os.remove(f) # Initialize model - model = Darknet(cfg, arc=opt.arc).to(device) + model = Darknet(cfg).to(device) # Optimizer pg0, pg1, pg2 = [], [], [] # optimizer parameter groups @@ -192,7 +192,6 @@ def train(): # Model parameters model.nc = nc # attach number of classes to model - model.arc = opt.arc # attach yolo architecture model.hyp = hyp # attach hyperparameters to model model.gr = 0.0 # giou loss ratio (obj_loss = 1.0 or giou) model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights @@ -406,7 +405,6 @@ if __name__ == '__main__': parser.add_argument('--bucket', type=str, default='', help='gsutil bucket') parser.add_argument('--cache-images', action='store_true', help='cache images for faster training') parser.add_argument('--weights', type=str, default='weights/yolov3-spp-ultralytics.pt', help='initial weights path') - parser.add_argument('--arc', type=str, default='default', help='yolo architecture') # default, uCE, uBCE parser.add_argument('--name', default='', help='renames results.txt to results_name.txt if supplied') parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1 or cpu)') parser.add_argument('--adam', action='store_true', help='use adam optimizer') diff --git a/utils/utils.py b/utils/utils.py index 7bb8babb..4bcb8f2f 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -377,7 +377,6 @@ def compute_loss(p, targets, model): # predictions, targets, model lcls, lbox, lobj = ft([0]), ft([0]), ft([0]) tcls, tbox, indices, anchor_vec = build_targets(model, targets) h = model.hyp # hyperparameters - arc = model.arc # architecture red = 'mean' # Loss reduction (sum or mean) # Define criteria @@ -388,8 +387,9 @@ def compute_loss(p, targets, model): # predictions, targets, model cp, cn = smooth_BCE(eps=0.0) # focal loss - if 'F' in arc: - BCEcls, BCEobj = FocalLoss(BCEcls, h['fl_gamma']), FocalLoss(BCEobj, h['fl_gamma']) + g = h['fl_gamma'] # focal loss gamma + if g > 0: + BCEcls, BCEobj = FocalLoss(BCEcls, g), FocalLoss(BCEobj, g) # Compute losses np, ng = 0, 0 # number grid points, targets From b3adc896f993fee3d3886b4918f0f144ada7f311 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 16 Mar 2020 21:40:57 -0700 Subject: [PATCH 2198/2595] focal and obj loss speed/stability --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 4bcb8f2f..37dacaf6 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -357,7 +357,7 @@ class FocalLoss(nn.Module): p_t = true * pred_prob + (1 - true) * (1 - pred_prob) alpha_factor = true * self.alpha + (1 - true) * (1 - self.alpha) modulating_factor = (1.0 - p_t) ** self.gamma - loss = alpha_factor * modulating_factor * loss + loss *= alpha_factor * modulating_factor if self.reduction == 'mean': return loss.mean() @@ -411,7 +411,7 @@ def compute_loss(p, targets, model): # predictions, targets, model pbox = torch.cat((pxy, pwh), 1) # predicted box giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation lbox += (1.0 - giou).sum() if red == 'sum' else (1.0 - giou).mean() # giou loss - tobj[b, a, gj, gi] = (1.0 - model.gr) + model.gr * giou.detach().type(tobj.dtype) # giou ratio + tobj[b, a, gj, gi] = (1.0 - model.gr) + model.gr * giou.detach().clamp(0).type(tobj.dtype) # giou ratio if model.nc > 1: # cls loss (only if multiple classes) t = torch.full_like(ps[:, 5:], cn) # targets From 60c8d194cd7476607d1bd912bea1da0c957aa0ff Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Mar 2020 11:52:52 -0700 Subject: [PATCH 2199/2595] FocalLoss() and obj loss speed and stability update --- utils/utils.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 37dacaf6..d7b99549 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -969,10 +969,8 @@ def plot_test_txt(): # from utils.utils import *; plot_test() def plot_targets_txt(): # from utils.utils import *; plot_targets_txt() - # Plot test.txt histograms - x = np.loadtxt('targets.txt', dtype=np.float32) - x = x.T - + # Plot targets.txt histograms + x = np.loadtxt('targets.txt', dtype=np.float32).T s = ['x targets', 'y targets', 'width targets', 'height targets'] fig, ax = plt.subplots(2, 2, figsize=(8, 8)) ax = ax.ravel() From 20454990ce0fd67454b0d59a7daa9f799c9ac2a4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Mar 2020 12:30:07 -0700 Subject: [PATCH 2200/2595] FLOPS report --- utils/torch_utils.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index ac38249c..18664b3a 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -88,6 +88,11 @@ def model_info(model, verbose=False): (i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) print('Model Summary: %g layers, %g parameters, %g gradients' % (len(list(model.parameters())), n_p, n_g)) + # Report FLOPS + # from thop import profile + # macs, params = profile(model, inputs=(torch.zeros(1, 3, 608, 608),)) + # print('%.3f FLOPS' % (macs / 1E9 * 2)) + def load_classifier(name='resnet101', n=2): # Loads a pretrained model reshaped to n-class output From 83c9cfb7de4c0f1359198da0de74daf9b9ac125b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Mar 2020 12:30:37 -0700 Subject: [PATCH 2201/2595] FocalLoss() and obj loss speed and stability update --- utils/torch_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 18664b3a..0b7013b0 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -88,7 +88,7 @@ def model_info(model, verbose=False): (i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) print('Model Summary: %g layers, %g parameters, %g gradients' % (len(list(model.parameters())), n_p, n_g)) - # Report FLOPS + # FLOPS report # from thop import profile # macs, params = profile(model, inputs=(torch.zeros(1, 3, 608, 608),)) # print('%.3f FLOPS' % (macs / 1E9 * 2)) From 1b68fe7fde19fd161685a5412ddd971913ccd086 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Mar 2020 16:23:44 -0700 Subject: [PATCH 2202/2595] cleanup --- models.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/models.py b/models.py index 767847b4..6b1dddf3 100755 --- a/models.py +++ b/models.py @@ -63,10 +63,8 @@ def create_modules(module_defs, img_size): elif mdef['type'] == 'route': # nn.Sequential() placeholder for 'route' layer layers = mdef['layers'] - filters = sum([output_filters[i + 1 if i > 0 else i] for i in layers]) - routs.extend([l if l > 0 else l + i for l in layers]) - # if mdef[i+1]['type'] == 'reorg3d': - # modules = nn.Upsample(scale_factor=1/float(mdef[i+1]['stride']), mode='nearest') # reorg3d + filters = sum([output_filters[l + 1 if l > 0 else l] for l in layers]) + routs.extend([i + l if l < 0 else l for l in layers]) elif mdef['type'] == 'shortcut': # nn.Sequential() placeholder for 'shortcut' layer layers = mdef['from'] @@ -75,8 +73,6 @@ def create_modules(module_defs, img_size): modules = weightedFeatureFusion(layers=layers, weight='weights_type' in mdef) elif mdef['type'] == 'reorg3d': # yolov3-spp-pan-scale - # torch.Size([16, 128, 104, 104]) - # torch.Size([16, 64, 208, 208]) <-- # stride 2 interpolate dimensions 2 and 3 to cat with prior layer pass elif mdef['type'] == 'yolo': From fff45c39a83d444a9d5dda5c9f846416a0274bd6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Mar 2020 16:41:42 -0700 Subject: [PATCH 2203/2595] cleanup/speedup --- models.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/models.py b/models.py index 6b1dddf3..4a815e7d 100755 --- a/models.py +++ b/models.py @@ -105,7 +105,10 @@ def create_modules(module_defs, img_size): module_list.append(modules) output_filters.append(filters) - return module_list, routs + routs_binary = [False] * (i + 1) + for i in routs: + routs_binary[i] = True + return module_list, routs_binary class weightedFeatureFusion(nn.Module): # weighted sum of 2 or more layers https://arxiv.org/abs/1911.09070 @@ -292,7 +295,7 @@ class Darknet(nn.Module): # print(''), [print(out[i].shape) for i in layers], print(x.shape) elif mtype == 'yolo': yolo_out.append(module(x, img_size, out)) - out.append(x if i in self.routs else []) + out.append(x if self.routs[i] else []) if verbose: print('%g/%g %s -' % (i, len(self.module_list), mtype), list(x.shape), str) str = '' @@ -342,7 +345,7 @@ def create_grids(self, img_size=416, ng=(13, 13), device='cpu', type=torch.float # build wh gains self.anchor_vec = self.anchors.to(device) / self.stride - self.anchor_wh = self.anchor_vec.view(1, self.na, 1, 1, 2).to(device).type(type) + self.anchor_wh = self.anchor_vec.view(1, self.na, 1, 1, 2).type(type) self.ng = torch.Tensor(ng).to(device) self.nx = nx self.ny = ny From 89b63777231b51d5ca60db6b4361bcf159218cb4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Mar 2020 18:11:08 -0700 Subject: [PATCH 2204/2595] Fuse by default when test.py called directly (faster) --- models.py | 2 +- test.py | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 4a815e7d..ee9b98c3 100755 --- a/models.py +++ b/models.py @@ -311,7 +311,7 @@ class Darknet(nn.Module): def fuse(self): # Fuse Conv2d + BatchNorm2d layers throughout model - print('Fusing Conv2d() and BatchNorm2d() layers...') + print('Fusing layers...') fused_list = nn.ModuleList() for a in list(self.children())[0]: if isinstance(a, nn.Sequential): diff --git a/test.py b/test.py index d9439f6b..991448c3 100644 --- a/test.py +++ b/test.py @@ -29,7 +29,7 @@ def test(cfg, os.remove(f) # Initialize model - model = Darknet(cfg, img_size).to(device) + model = Darknet(cfg, img_size) # Load weights attempt_download(weights) @@ -38,6 +38,10 @@ def test(cfg, else: # darknet format load_darknet_weights(model, weights) + # Fuse + model.fuse() + model.to(device) + if device.type != 'cpu' and torch.cuda.device_count() > 1: model = nn.DataParallel(model) else: # called by train.py From 3265d50f69bc0e48aff87b27acefedd0b464c9ae Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 19 Mar 2020 18:15:09 -0700 Subject: [PATCH 2205/2595] speed update --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 20042ff8..10318d0b 100755 --- a/README.md +++ b/README.md @@ -174,7 +174,7 @@ Using CUDA device0 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', total_memo Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.649 Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.735 -Speed: 6.6/1.5/8.1 ms inference/NMS/total per 608x608 image at batch-size 32 +Speed: 6.5/1.5/8.1 ms inference/NMS/total per 608x608 image at batch-size 32 ``` # Reproduce Our Results From aa0c64b5ac170212b87f1a77795378b3528233d0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 25 Mar 2020 23:24:57 -0700 Subject: [PATCH 2206/2595] merge_batch NMS method --- utils/utils.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index d7b99549..134cf6ef 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -558,9 +558,15 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T boxes += c.view(-1, 1) * max_wh if method == 'vision_batch': i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) + elif method == 'merge_batch': # Merge NMS + i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) + iou = box_iou(boxes, boxes[i]).tril_() # upper triangular iou matrix + weights = (iou > conf_thres) * scores.view(-1, 1) + weights /= weights.sum(0) + pred[i, :4] = torch.matmul(weights.T, pred[:, :4]) # merged_boxes(n,4) = weights(n,n) * boxes(n,4) elif method == 'fast_batch': # FastNMS from https://github.com/dbolya/yolact iou = box_iou(boxes, boxes).triu_(diagonal=1) # upper triangular iou matrix - i = iou.max(dim=0)[0] < iou_thres + i = iou.max(0)[0] < iou_thres output[image_i] = pred[i] continue @@ -577,10 +583,7 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T elif n > 500: dc = dc[:500] # limit to first 500 boxes: https://github.com/ultralytics/yolov3/issues/117 - if method == 'vision': - det_max.append(dc[torchvision.ops.boxes.nms(dc[:, :4], dc[:, 4], iou_thres)]) - - elif method == 'or': # default + if method == 'or': # default # METHOD1 # ind = list(range(len(dc))) # while len(ind): @@ -629,7 +632,7 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T if len(det_max): det_max = torch.cat(det_max) # concatenate - output[image_i] = det_max[(-det_max[:, 4]).argsort()] # sort + output[image_i] = det_max[det_max[:, 4].argsort(descending=True)] # sort return output From 23b34f4db8598d3916cdaa4c659baf9acfe01c3c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 25 Mar 2020 23:29:33 -0700 Subject: [PATCH 2207/2595] merge_batch NMS method --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 134cf6ef..b7f11f56 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -561,7 +561,7 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T elif method == 'merge_batch': # Merge NMS i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) iou = box_iou(boxes, boxes[i]).tril_() # upper triangular iou matrix - weights = (iou > conf_thres) * scores.view(-1, 1) + weights = (iou > iou_thres) * scores.view(-1, 1) weights /= weights.sum(0) pred[i, :4] = torch.matmul(weights.T, pred[:, :4]) # merged_boxes(n,4) = weights(n,n) * boxes(n,4) elif method == 'fast_batch': # FastNMS from https://github.com/dbolya/yolact From c71ab7d506ca4fbe61f58da012e0b5b896af3041 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Mar 2020 11:25:44 -0700 Subject: [PATCH 2208/2595] augmented testing --- test.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test.py b/test.py index 991448c3..939dd059 100644 --- a/test.py +++ b/test.py @@ -87,8 +87,7 @@ def test(cfg, # Disable gradients with torch.no_grad(): - aug = False # augment https://github.com/ultralytics/yolov3/issues/931 - if aug: + if opt.augment: # augmented testing https://github.com/ultralytics/yolov3/issues/931 imgs = torch.cat((imgs, imgs.flip(3), # flip-lr torch_utils.scale_img(imgs, 0.7), # scale @@ -99,7 +98,7 @@ def test(cfg, inf_out, train_out = model(imgs) # inference and training outputs t0 += torch_utils.time_synchronized() - t - if aug: + if opt.augment: x = torch.split(inf_out, nb, dim=0) x[1][..., 0] = width - x[1][..., 0] # flip lr x[2][..., :4] /= 0.7 # scale @@ -247,6 +246,7 @@ if __name__ == '__main__': parser.add_argument('--task', default='test', help="'test', 'study', 'benchmark'") parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') parser.add_argument('--single-cls', action='store_true', help='train as single-class dataset') + parser.add_argument('--augment', action='store_true', help='augmented testing') opt = parser.parse_args() opt.save_json = opt.save_json or any([x in opt.data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) print(opt) From f91b1fb13a0f264effdc5a17dd0e3957924f905a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Mar 2020 11:28:46 -0700 Subject: [PATCH 2209/2595] merge_batch NMS method --- test.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/test.py b/test.py index 939dd059..a1e36b88 100644 --- a/test.py +++ b/test.py @@ -17,6 +17,7 @@ def test(cfg, iou_thres=0.6, # for nms save_json=False, single_cls=False, + augment=False, model=None, dataloader=None): # Initialize/load model and set device @@ -87,7 +88,7 @@ def test(cfg, # Disable gradients with torch.no_grad(): - if opt.augment: # augmented testing https://github.com/ultralytics/yolov3/issues/931 + if augment: # augmented testing https://github.com/ultralytics/yolov3/issues/931 imgs = torch.cat((imgs, imgs.flip(3), # flip-lr torch_utils.scale_img(imgs, 0.7), # scale @@ -98,7 +99,7 @@ def test(cfg, inf_out, train_out = model(imgs) # inference and training outputs t0 += torch_utils.time_synchronized() - t - if opt.augment: + if augment: x = torch.split(inf_out, nb, dim=0) x[1][..., 0] = width - x[1][..., 0] # flip lr x[2][..., :4] /= 0.7 # scale @@ -261,7 +262,8 @@ if __name__ == '__main__': opt.conf_thres, opt.iou_thres, opt.save_json, - opt.single_cls) + opt.single_cls, + opt.augment) elif opt.task == 'benchmark': # mAPs at 320-608 at conf 0.5 and 0.7 y = [] From 94344f5beaeb952b1caea383d9d6b785f911ee79 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Mar 2020 11:34:32 -0700 Subject: [PATCH 2210/2595] test augmentation comments --- test.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test.py b/test.py index a1e36b88..272584ae 100644 --- a/test.py +++ b/test.py @@ -88,7 +88,8 @@ def test(cfg, # Disable gradients with torch.no_grad(): - if augment: # augmented testing https://github.com/ultralytics/yolov3/issues/931 + # Augment images + if augment: # https://github.com/ultralytics/yolov3/issues/931 imgs = torch.cat((imgs, imgs.flip(3), # flip-lr torch_utils.scale_img(imgs, 0.7), # scale @@ -99,6 +100,7 @@ def test(cfg, inf_out, train_out = model(imgs) # inference and training outputs t0 += torch_utils.time_synchronized() - t + # De-augment results if augment: x = torch.split(inf_out, nb, dim=0) x[1][..., 0] = width - x[1][..., 0] # flip lr From eac07f9da34af04b111bb4076141f405af491acb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Mar 2020 12:20:01 -0700 Subject: [PATCH 2211/2595] Merge NMS update --- utils/utils.py | 104 +++++++++---------------------------------------- 1 file changed, 18 insertions(+), 86 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index b7f11f56..ecb669c7 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -505,8 +505,7 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T # Box constraints min_wh, max_wh = 2, 4096 # (pixels) minimum and maximum box width and height - method = 'vision_batch' - batched = 'batch' in method # run once per image, all classes simultaneously + method = 'vision' nc = prediction[0].shape[1] - 5 # number of classes multi_label &= nc > 1 # multiple labels per box output = [None] * len(prediction) @@ -548,93 +547,26 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T continue # Sort by confidence - if not method.startswith('vision'): - pred = pred[pred[:, 4].argsort(descending=True)] + # if method == 'fast_batch': + # pred = pred[pred[:, 4].argsort(descending=True)] # Batched NMS - if batched: - c = pred[:, 5] * 0 if agnostic else pred[:, 5] # class-agnostic NMS - boxes, scores = pred[:, :4].clone(), pred[:, 4] - boxes += c.view(-1, 1) * max_wh - if method == 'vision_batch': - i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) - elif method == 'merge_batch': # Merge NMS - i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) - iou = box_iou(boxes, boxes[i]).tril_() # upper triangular iou matrix - weights = (iou > iou_thres) * scores.view(-1, 1) - weights /= weights.sum(0) - pred[i, :4] = torch.matmul(weights.T, pred[:, :4]) # merged_boxes(n,4) = weights(n,n) * boxes(n,4) - elif method == 'fast_batch': # FastNMS from https://github.com/dbolya/yolact - iou = box_iou(boxes, boxes).triu_(diagonal=1) # upper triangular iou matrix - i = iou.max(0)[0] < iou_thres + c = pred[:, 5] * 0 if agnostic else pred[:, 5] # classes + boxes, scores = pred[:, :4].clone(), pred[:, 4] + boxes += c.view(-1, 1) * max_wh # offset boxes by class + if method == 'vision': + i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) + elif method == 'merge': # Merge NMS (boxes merged using weighted mean) + i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) + iou = box_iou(boxes, boxes[i]).tril_() # lower triangular iou matrix + weights = (iou > iou_thres) * scores.view(-1, 1) + weights /= weights.sum(0) + pred[i, :4] = torch.matmul(weights.T, pred[:, :4]) # merged_boxes(n,4) = weights(n,n) * boxes(n,4) + elif method == 'fast': # FastNMS from https://github.com/dbolya/yolact + iou = box_iou(boxes, boxes).triu_(diagonal=1) # upper triangular iou matrix + i = iou.max(0)[0] < iou_thres - output[image_i] = pred[i] - continue - - # All other NMS methods - det_max = [] - cls = pred[:, -1] - for c in cls.unique(): - dc = pred[cls == c] # select class c - n = len(dc) - if n == 1: - det_max.append(dc) # No NMS required if only 1 prediction - continue - elif n > 500: - dc = dc[:500] # limit to first 500 boxes: https://github.com/ultralytics/yolov3/issues/117 - - if method == 'or': # default - # METHOD1 - # ind = list(range(len(dc))) - # while len(ind): - # j = ind[0] - # det_max.append(dc[j:j + 1]) # save highest conf detection - # reject = (bbox_iou(dc[j], dc[ind]) > iou_thres).nonzero() - # [ind.pop(i) for i in reversed(reject)] - - # METHOD2 - while dc.shape[0]: - det_max.append(dc[:1]) # save highest conf detection - if len(dc) == 1: # Stop if we're at the last detection - break - iou = bbox_iou(dc[0], dc[1:]) # iou with other boxes - dc = dc[1:][iou < iou_thres] # remove ious > threshold - - elif method == 'and': # requires overlap, single boxes erased - while len(dc) > 1: - iou = bbox_iou(dc[0], dc[1:]) # iou with other boxes - if iou.max() > 0.5: - det_max.append(dc[:1]) - dc = dc[1:][iou < iou_thres] # remove ious > threshold - - elif method == 'merge': # weighted mixture box - while len(dc): - if len(dc) == 1: - det_max.append(dc) - break - i = bbox_iou(dc[0], dc) > iou_thres # iou with other boxes - weights = dc[i, 4:5] - dc[0, :4] = (weights * dc[i, :4]).sum(0) / weights.sum() - det_max.append(dc[:1]) - dc = dc[i == 0] - - elif method == 'soft': # soft-NMS https://arxiv.org/abs/1704.04503 - sigma = 0.5 # soft-nms sigma parameter - while len(dc): - if len(dc) == 1: - det_max.append(dc) - break - det_max.append(dc[:1]) - iou = bbox_iou(dc[0], dc[1:]) # iou with other boxes - dc = dc[1:] - dc[:, 4] *= torch.exp(-iou ** 2 / sigma) # decay confidences - dc = dc[dc[:, 4] > conf_thres] # https://github.com/ultralytics/yolov3/issues/362 - - if len(det_max): - det_max = torch.cat(det_max) # concatenate - output[image_i] = det_max[det_max[:, 4].argsort(descending=True)] # sort - - return output + output[image_i] = pred[i] def get_yolo_layers(model): From 171b4129b5488e82ee8c116f12ddafdeca3ba74f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Mar 2020 12:33:12 -0700 Subject: [PATCH 2212/2595] Merge NMS update --- utils/utils.py | 53 ++++++++++++++++++++++++-------------------------- 1 file changed, 25 insertions(+), 28 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index ecb669c7..b6b15b84 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -495,78 +495,75 @@ def build_targets(model, targets): def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=True, classes=None, agnostic=False): """ - Removes detections with lower object confidence score than 'conf_thres' - Non-Maximum Suppression to further filter detections. + Performs Non-Maximum Suppression on inference results Returns detections with shape: - (x1, y1, x2, y2, object_conf, conf, class) + nx6 (x1, y1, x2, y2, conf, cls) """ - # NMS methods https://github.com/ultralytics/yolov3/issues/679 'or', 'and', 'merge', 'vision', 'vision_batch' # Box constraints min_wh, max_wh = 2, 4096 # (pixels) minimum and maximum box width and height - method = 'vision' + method = 'merge' nc = prediction[0].shape[1] - 5 # number of classes multi_label &= nc > 1 # multiple labels per box output = [None] * len(prediction) - for image_i, pred in enumerate(prediction): + for xi, x in enumerate(prediction): # image index, image inference # Apply conf constraint - pred = pred[pred[:, 4] > conf_thres] + x = x[x[:, 4] > conf_thres] # Apply width-height constraint - pred = pred[((pred[:, 2:4] > min_wh) & (pred[:, 2:4] < max_wh)).all(1)] + x = x[((x[:, 2:4] > min_wh) & (x[:, 2:4] < max_wh)).all(1)] # If none remain process next image - if not pred.shape[0]: + if not x.shape[0]: continue # Compute conf - pred[..., 5:] *= pred[..., 4:5] # conf = obj_conf * cls_conf + x[..., 5:] *= x[..., 4:5] # conf = obj_conf * cls_conf # Box (center x, center y, width, height) to (x1, y1, x2, y2) - box = xywh2xyxy(pred[:, :4]) + box = xywh2xyxy(x[:, :4]) # Detections matrix nx6 (xyxy, conf, cls) if multi_label: - i, j = (pred[:, 5:] > conf_thres).nonzero().t() - pred = torch.cat((box[i], pred[i, j + 5].unsqueeze(1), j.float().unsqueeze(1)), 1) + i, j = (x[:, 5:] > conf_thres).nonzero().t() + x = torch.cat((box[i], x[i, j + 5].unsqueeze(1), j.float().unsqueeze(1)), 1) else: # best class only - conf, j = pred[:, 5:].max(1) - pred = torch.cat((box, conf.unsqueeze(1), j.float().unsqueeze(1)), 1) + conf, j = x[:, 5:].max(1) + x = torch.cat((box, conf.unsqueeze(1), j.float().unsqueeze(1)), 1) # Filter by class if classes: - pred = pred[(j.view(-1, 1) == torch.tensor(classes, device=j.device)).any(1)] + x = x[(j.view(-1, 1) == torch.tensor(classes, device=j.device)).any(1)] # Apply finite constraint - if not torch.isfinite(pred).all(): - pred = pred[torch.isfinite(pred).all(1)] + if not torch.isfinite(x).all(): + x = x[torch.isfinite(x).all(1)] # If none remain process next image - if not pred.shape[0]: + if not x.shape[0]: continue # Sort by confidence # if method == 'fast_batch': - # pred = pred[pred[:, 4].argsort(descending=True)] + # x = x[x[:, 4].argsort(descending=True)] # Batched NMS - c = pred[:, 5] * 0 if agnostic else pred[:, 5] # classes - boxes, scores = pred[:, :4].clone(), pred[:, 4] - boxes += c.view(-1, 1) * max_wh # offset boxes by class - if method == 'vision': - i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) - elif method == 'merge': # Merge NMS (boxes merged using weighted mean) + c = x[:, 5] * 0 if agnostic else x[:, 5] # classes + boxes, scores = x[:, :4].clone() + c.view(-1, 1) * max_wh, x[:, 4] # boxes (offset by class), scores + if method == 'merge': # Merge NMS (boxes merged using weighted mean) i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) iou = box_iou(boxes, boxes[i]).tril_() # lower triangular iou matrix weights = (iou > iou_thres) * scores.view(-1, 1) weights /= weights.sum(0) - pred[i, :4] = torch.matmul(weights.T, pred[:, :4]) # merged_boxes(n,4) = weights(n,n) * boxes(n,4) + x[i, :4] = torch.mm(weights.T, x[:, :4]) # merged_boxes(n,4) = weights(n,n) * boxes(n,4) + elif method == 'vision': + i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) elif method == 'fast': # FastNMS from https://github.com/dbolya/yolact iou = box_iou(boxes, boxes).triu_(diagonal=1) # upper triangular iou matrix i = iou.max(0)[0] < iou_thres - output[image_i] = pred[i] + output[xi] = x[i] def get_yolo_layers(model): From a322fc5d4beb0cffc1b3582945bf44ef32a66baa Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Mar 2020 12:48:00 -0700 Subject: [PATCH 2213/2595] Merge NMS update --- utils/utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/utils.py b/utils/utils.py index b6b15b84..820bd936 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -564,6 +564,7 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T i = iou.max(0)[0] < iou_thres output[xi] = x[i] + return output def get_yolo_layers(model): From 4a7d9bdba9cea2d009d40aa3352c7fb5a80ab541 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Mar 2020 14:14:52 -0700 Subject: [PATCH 2214/2595] mAP increases --- README.md | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 10318d0b..95e0555a 100755 --- a/README.md +++ b/README.md @@ -147,34 +147,34 @@ $ python3 test.py --cfg yolov3-spp.cfg --weights yolov3-spp-ultralytics.pt |Size |COCO mAP
@0.5...0.95 |COCO mAP
@0.5 --- | --- | --- | --- -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |320 |14.0
28.7
30.5
**36.6** |29.1
51.8
52.3
**56.0** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |416 |16.0
31.2
33.9
**40.4** |33.0
55.4
56.9
**60.2** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |512 |16.6
32.7
35.6
**41.6** |34.9
57.7
59.5
**61.7** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |608 |16.6
33.1
37.0
**42.1** |35.4
58.2
60.7
**61.7** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |320 |14.0
28.7
30.5
**38.9** |29.1
51.8
52.3
**56.9** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |416 |16.0
31.2
33.9
**42.5** |33.0
55.4
56.9
**61.1** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |512 |16.6
32.7
35.6
**43.6** |34.9
57.7
59.5
**62.5** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |608 |16.6
33.1
37.0
**44.0** |35.4
58.2
60.7
**62.6** ```bash $ python3 test.py --cfg yolov3-spp.cfg --weights yolov3-spp-ultralytics.pt --img 608 -Namespace(batch_size=32, cfg='yolov3-spp.cfg', conf_thres=0.001, data='data/coco2014.data', device='', img_size=608, iou_thres=0.6, save_json=True, single_cls=False, task='test', weights='weights/yolov3-spp-ultralytics.pt') +Namespace(batch_size=16, cfg='yolov3-spp.cfg', conf_thres=0.001, data='data/coco2014.data', device='', img_size=608, iou_thres=0.6, save_json=True, single_cls=False, task='test', weights='weights/yolov3-spp-ultralytics.pt') Using CUDA device0 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', total_memory=16130MB) Class Images Targets P R mAP@0.5 F1: 100%|█████| 157/157 [02:46<00:00, 1.06s/it] - all 5e+03 3.51e+04 0.51 0.667 0.611 0.574 + all 5e+03 3.51e+04 0.515 0.665 0.61 0.577 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.419 - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.618 - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.448 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.247 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.462 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.534 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.341 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.557 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.606 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.440 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.649 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.735 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.434 + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.626 + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.469 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.263 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.480 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.547 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.346 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.617 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.786 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.730 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.836 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.863 -Speed: 6.5/1.5/8.1 ms inference/NMS/total per 608x608 image at batch-size 32 +Speed: 6.9/2.1/9.0 ms inference/NMS/total per 608x608 image at batch-size 16 ``` # Reproduce Our Results From a4721e90f885cc8a7a93b9ec0e615e0bce72f2a6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Mar 2020 14:22:59 -0700 Subject: [PATCH 2215/2595] defult batch-size to 16 --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 272584ae..916ab45e 100644 --- a/test.py +++ b/test.py @@ -241,7 +241,7 @@ if __name__ == '__main__': parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path') parser.add_argument('--data', type=str, default='data/coco2014.data', help='*.data path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp-ultralytics.pt', help='weights path') - parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') + parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') parser.add_argument('--iou-thres', type=float, default=0.6, help='IOU threshold for NMS') From 20b2671de05b713541b25fe299b8a46bf40b0244 Mon Sep 17 00:00:00 2001 From: Yonghye Kwon Date: Fri, 27 Mar 2020 06:46:17 +0900 Subject: [PATCH 2216/2595] cleanup (#963) * cleanup cleanup * Update train.py Co-authored-by: Glenn Jocher --- train.py | 1 - 1 file changed, 1 deletion(-) diff --git a/train.py b/train.py index cf016b56..7512730e 100644 --- a/train.py +++ b/train.py @@ -409,7 +409,6 @@ if __name__ == '__main__': parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1 or cpu)') parser.add_argument('--adam', action='store_true', help='use adam optimizer') parser.add_argument('--single-cls', action='store_true', help='train as single-class dataset') - parser.add_argument('--var', type=float, help='debug variable') opt = parser.parse_args() opt.weights = last if opt.resume else opt.weights print(opt) From 470371ba592af7264924d47117bf0fc88e3432e3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Mar 2020 16:20:06 -0700 Subject: [PATCH 2217/2595] Test augment update --- test.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test.py b/test.py index 916ab45e..e41f998f 100644 --- a/test.py +++ b/test.py @@ -91,7 +91,7 @@ def test(cfg, # Augment images if augment: # https://github.com/ultralytics/yolov3/issues/931 imgs = torch.cat((imgs, - imgs.flip(3), # flip-lr + torch_utils.scale_img(imgs.flip(3), 0.9), # flip-lr and scale torch_utils.scale_img(imgs, 0.7), # scale ), 0) @@ -103,6 +103,7 @@ def test(cfg, # De-augment results if augment: x = torch.split(inf_out, nb, dim=0) + x[1][..., :4] /= 0.9 # scale x[1][..., 0] = width - x[1][..., 0] # flip lr x[2][..., :4] /= 0.7 # scale inf_out = torch.cat(x, 1) From 9568d4562d6a2b697a04890ab99dbe9102551b86 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Mar 2020 16:22:58 -0700 Subject: [PATCH 2218/2595] mAP updates --- README.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 95e0555a..f00bccde 100755 --- a/README.md +++ b/README.md @@ -153,28 +153,28 @@ YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive. YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |608 |16.6
33.1
37.0
**44.0** |35.4
58.2
60.7
**62.6** ```bash -$ python3 test.py --cfg yolov3-spp.cfg --weights yolov3-spp-ultralytics.pt --img 608 +$ python3 test.py --cfg yolov3-spp.cfg --weights yolov3-spp-ultralytics.pt --img 608 --augment -Namespace(batch_size=16, cfg='yolov3-spp.cfg', conf_thres=0.001, data='data/coco2014.data', device='', img_size=608, iou_thres=0.6, save_json=True, single_cls=False, task='test', weights='weights/yolov3-spp-ultralytics.pt') +Namespace(augment=True, batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='coco2014.data', device='', img_size=608, iou_thres=0.7, save_json=True, single_cls=False, task='test', weights='weights/yolov3-spp-ultralytics.pt') Using CUDA device0 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', total_memory=16130MB) - Class Images Targets P R mAP@0.5 F1: 100%|█████| 157/157 [02:46<00:00, 1.06s/it] - all 5e+03 3.51e+04 0.515 0.665 0.61 0.577 + Class Images Targets P R mAP@0.5 F1: 100%|█████████| 313/313 [03:00<00:00, 1.74it/s] + all 5e+03 3.51e+04 0.357 0.727 0.622 0.474 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.434 - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.626 - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.469 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.263 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.480 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.547 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.346 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.617 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.786 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.730 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.836 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.863 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.454 + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.631 + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.498 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.265 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.498 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.605 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.357 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.619 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.827 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.770 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.859 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.896 -Speed: 6.9/2.1/9.0 ms inference/NMS/total per 608x608 image at batch-size 16 +Speed: 20.2/2.4/22.6 ms inference/NMS/total per 608x608 image at batch-size 16 ``` # Reproduce Our Results From faab52913c510c719df4ec80dd08ee482d3c3417 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Mar 2020 16:35:46 -0700 Subject: [PATCH 2219/2595] mAP updates --- README.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index f00bccde..c527cd00 100755 --- a/README.md +++ b/README.md @@ -153,28 +153,28 @@ YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive. YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |608 |16.6
33.1
37.0
**44.0** |35.4
58.2
60.7
**62.6** ```bash -$ python3 test.py --cfg yolov3-spp.cfg --weights yolov3-spp-ultralytics.pt --img 608 --augment +$ python3 test.py --cfg yolov3-spp.cfg --weights yolov3-spp-ultralytics.pt --img 640 --augment Namespace(augment=True, batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='coco2014.data', device='', img_size=608, iou_thres=0.7, save_json=True, single_cls=False, task='test', weights='weights/yolov3-spp-ultralytics.pt') Using CUDA device0 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', total_memory=16130MB) Class Images Targets P R mAP@0.5 F1: 100%|█████████| 313/313 [03:00<00:00, 1.74it/s] - all 5e+03 3.51e+04 0.357 0.727 0.622 0.474 + all 5e+03 3.51e+04 0.35 0.737 0.624 0.47 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.454 - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.631 - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.498 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.265 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.498 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.605 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.357 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.619 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.827 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.770 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.859 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.896 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.457 + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.635 + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.502 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.282 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.501 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.589 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.359 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.621 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.828 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.772 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.861 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.893 -Speed: 20.2/2.4/22.6 ms inference/NMS/total per 608x608 image at batch-size 16 +Speed: 21.6/2.6/24.1 ms inference/NMS/total per 640x640 image at batch-size 16 ``` # Reproduce Our Results From dad59220f1074464e3214134f26ead118f72aeb3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Mar 2020 18:34:20 -0700 Subject: [PATCH 2220/2595] speed and comments update --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 820bd936..d3a7ecf5 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -457,10 +457,10 @@ def build_targets(model, targets): t, a = targets, [] gwh = t[:, 4:6] * ng if nt: - iou = wh_iou(anchor_vec, gwh) + iou = wh_iou(anchor_vec, gwh) # iou(3,n) = wh_iou(anchor_vec(3,2), gwh(n,2)) if use_all_anchors: - na = len(anchor_vec) # number of anchors + na = anchor_vec.shape[0] # number of anchors a = torch.arange(na).view((-1, 1)).repeat([1, nt]).view(-1) t = targets.repeat([na, 1]) gwh = gwh.repeat([na, 1]) From 01ee0c5e95593e5f2c9143b2872096f43ab28069 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Mar 2020 18:41:04 -0700 Subject: [PATCH 2221/2595] Merge NMS update --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index d3a7ecf5..f023893c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -442,7 +442,7 @@ def compute_loss(p, targets, model): # predictions, targets, model def build_targets(model, targets): # targets = [image, class, x, y, w, h] - nt = len(targets) + nt = targets.shape[0] tcls, tbox, indices, av = [], [], [], [] multi_gpu = type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) reject, use_all_anchors = True, True From 4a63b24b0913569fafe008f0530a9b9add2f1eb6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Mar 2020 19:50:29 -0700 Subject: [PATCH 2222/2595] Merge NMS update --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index f023893c..f8f192b4 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -555,7 +555,7 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) iou = box_iou(boxes, boxes[i]).tril_() # lower triangular iou matrix weights = (iou > iou_thres) * scores.view(-1, 1) - weights /= weights.sum(0) + weights /= weights.sum(0) + 1E-6 x[i, :4] = torch.mm(weights.T, x[:, :4]) # merged_boxes(n,4) = weights(n,n) * boxes(n,4) elif method == 'vision': i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) From 582de735ad7f27463572774747c390db0593dfcb Mon Sep 17 00:00:00 2001 From: GoogleWiki Date: Sat, 28 Mar 2020 04:09:10 +0800 Subject: [PATCH 2223/2595] utils.clip_coords doesn't work as expected. (#961) * utils.clip_coords doesn't work as expected. Box coords may be negative or exceed borders. * Update utils.py Co-authored-by: Glenn Jocher --- utils/utils.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index f8f192b4..c2ac95fc 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -160,8 +160,10 @@ def scale_coords(img1_shape, coords, img0_shape, ratio_pad=None): def clip_coords(boxes, img_shape): # Clip bounding xyxy bounding boxes to image shape (height, width) - boxes[:, [0, 2]].clamp_(0, img_shape[1]) # clip x - boxes[:, [1, 3]].clamp_(0, img_shape[0]) # clip y + boxes[:, 0].clamp_(0, img_shape[1]) # x1 + boxes[:, 1].clamp_(0, img_shape[0]) # y1 + boxes[:, 2].clamp_(0, img_shape[1]) # x2 + boxes[:, 3].clamp_(0, img_shape[0]) # y2 def ap_per_class(tp, conf, pred_cls, target_cls): From f9d34587da17bf820c7a77c35b42075be07ba315 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Mar 2020 13:11:24 -0700 Subject: [PATCH 2224/2595] Merge NMS update --- utils/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index c2ac95fc..9eee669c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -555,10 +555,10 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T boxes, scores = x[:, :4].clone() + c.view(-1, 1) * max_wh, x[:, 4] # boxes (offset by class), scores if method == 'merge': # Merge NMS (boxes merged using weighted mean) i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) - iou = box_iou(boxes, boxes[i]).tril_() # lower triangular iou matrix + iou = box_iou(boxes, boxes).tril_() # lower triangular iou matrix weights = (iou > iou_thres) * scores.view(-1, 1) - weights /= weights.sum(0) + 1E-6 - x[i, :4] = torch.mm(weights.T, x[:, :4]) # merged_boxes(n,4) = weights(n,n) * boxes(n,4) + weights /= weights.sum(0) + x[:, :4] = torch.mm(weights.T, x[:, :4]) # merged_boxes(n,4) = weights(n,n) * boxes(n,4) elif method == 'vision': i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) elif method == 'fast': # FastNMS from https://github.com/dbolya/yolact From ce17c26759d7a2fae689fe6b22c98cb59a95dd7f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Mar 2020 13:52:07 -0700 Subject: [PATCH 2225/2595] mAP updates --- README.md | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index c527cd00..024ae595 100755 --- a/README.md +++ b/README.md @@ -147,34 +147,34 @@ $ python3 test.py --cfg yolov3-spp.cfg --weights yolov3-spp-ultralytics.pt |Size |COCO mAP
@0.5...0.95 |COCO mAP
@0.5 --- | --- | --- | --- -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |320 |14.0
28.7
30.5
**38.9** |29.1
51.8
52.3
**56.9** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |416 |16.0
31.2
33.9
**42.5** |33.0
55.4
56.9
**61.1** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |512 |16.6
32.7
35.6
**43.6** |34.9
57.7
59.5
**62.5** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |608 |16.6
33.1
37.0
**44.0** |35.4
58.2
60.7
**62.6** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |320 |14.0
28.7
30.5
**37.0** |29.1
51.8
52.3
**56.0** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |416 |16.0
31.2
33.9
**40.7** |33.0
55.4
56.9
**60.4** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |512 |16.6
32.7
35.6
**42.0** |34.9
57.7
59.5
**61.9** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |608 |16.6
33.1
37.0
**42.4** |35.4
58.2
60.7
**62.0** ```bash $ python3 test.py --cfg yolov3-spp.cfg --weights yolov3-spp-ultralytics.pt --img 640 --augment -Namespace(augment=True, batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='coco2014.data', device='', img_size=608, iou_thres=0.7, save_json=True, single_cls=False, task='test', weights='weights/yolov3-spp-ultralytics.pt') +Namespace(augment=True, batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='coco2014.data', device='', img_size=640, iou_thres=0.6, save_json=True, single_cls=False, task='test', weights='weight Using CUDA device0 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', total_memory=16130MB) Class Images Targets P R mAP@0.5 F1: 100%|█████████| 313/313 [03:00<00:00, 1.74it/s] - all 5e+03 3.51e+04 0.35 0.737 0.624 0.47 + all 5e+03 3.51e+04 0.396 0.731 0.634 0.509 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.457 - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.635 - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.502 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.282 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.501 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.589 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.359 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.621 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.828 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.772 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.861 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.893 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.447 + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.641 + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.485 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.271 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.492 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.583 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.357 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.587 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.652 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.488 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.701 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.787 -Speed: 21.6/2.6/24.1 ms inference/NMS/total per 640x640 image at batch-size 16 +Speed: 21.3/3.0/24.4 ms inference/NMS/total per 640x640 image at batch-size 16 ``` # Reproduce Our Results From dc8e56b9f367e85cf13de6e73b92dffb6bc49e5d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 28 Mar 2020 16:03:46 -0700 Subject: [PATCH 2226/2595] mAP update --- README.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 024ae595..c0bc8cbc 100755 --- a/README.md +++ b/README.md @@ -138,13 +138,6 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' # mAP -```bash -$ python3 test.py --cfg yolov3-spp.cfg --weights yolov3-spp-ultralytics.pt -``` - -- mAP@0.5 run at `--iou-thr 0.5`, mAP@0.5...0.95 run at `--iou-thr 0.7` -- Darknet results: https://arxiv.org/abs/1804.02767 - |Size |COCO mAP
@0.5...0.95 |COCO mAP
@0.5 --- | --- | --- | --- YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |320 |14.0
28.7
30.5
**37.0** |29.1
51.8
52.3
**56.0** @@ -152,6 +145,9 @@ YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive. YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |512 |16.6
32.7
35.6
**42.0** |34.9
57.7
59.5
**61.9** YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |608 |16.6
33.1
37.0
**42.4** |35.4
58.2
60.7
**62.0** +- mAP@0.5 run at `--iou-thr 0.5`, mAP@0.5...0.95 run at `--iou-thr 0.7` +- Darknet results: https://arxiv.org/abs/1804.02767 + ```bash $ python3 test.py --cfg yolov3-spp.cfg --weights yolov3-spp-ultralytics.pt --img 640 --augment From 9c5e76b93d7e5784ef7c34153efb7cb9495b8bbf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 29 Mar 2020 13:14:54 -0700 Subject: [PATCH 2227/2595] EMA implemented by default --- train.py | 12 ++++++------ utils/torch_utils.py | 9 ++++++--- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/train.py b/train.py index 7512730e..67fc65fd 100644 --- a/train.py +++ b/train.py @@ -197,7 +197,7 @@ def train(): model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights # Model EMA - # ema = torch_utils.ModelEMA(model, decay=0.9998) + ema = torch_utils.ModelEMA(model) # Start training nb = len(dataloader) # number of batches @@ -291,7 +291,7 @@ def train(): if ni % accumulate == 0: optimizer.step() optimizer.zero_grad() - # ema.update(model) + ema.update(model) # Print batch results mloss = (mloss * i + loss_items) / (i + 1) # update mean losses @@ -305,7 +305,7 @@ def train(): scheduler.step() # Process epoch results - # ema.update_attr(model) + ema.update_attr(model) final_epoch = epoch + 1 == epochs if not opt.notest or final_epoch: # Calculate mAP is_coco = any([x in data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) and model.nc == 80 @@ -313,7 +313,7 @@ def train(): data, batch_size=batch_size * 2, img_size=img_size_test, - model=model, + model=ema.ema, conf_thres=0.001 if final_epoch else 0.01, # 0.001 for best mAP, 0.01 for speed iou_thres=0.6, save_json=final_epoch and is_coco, @@ -347,7 +347,7 @@ def train(): chkpt = {'epoch': epoch, 'best_fitness': best_fitness, 'training_results': f.read(), - 'model': model.module.state_dict() if hasattr(model, 'module') else model.state_dict(), + 'model': ema.ema.module.state_dict() if hasattr(model, 'module') else ema.ema.state_dict(), 'optimizer': None if final_epoch else optimizer.state_dict()} # Save last checkpoint @@ -377,7 +377,7 @@ def train(): if opt.bucket: # save to cloud os.system('gsutil cp %s gs://%s/results' % (fresults, opt.bucket)) os.system('gsutil cp %s gs://%s/weights' % (wdir + flast, opt.bucket)) - # os.system('gsutil cp %s gs://%s/weights' % (wdir + fbest, opt.bucket)) + os.system('gsutil cp %s gs://%s/weights' % (wdir + fbest, opt.bucket)) if not opt.evolve: plot_results() # save as results.png diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 0b7013b0..56e5bba6 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -1,3 +1,4 @@ +import math import os import time from copy import deepcopy @@ -139,11 +140,12 @@ class ModelEMA: I've tested with the sequence in my own train.py for torch.DataParallel, apex.DDP, and single-GPU. """ - def __init__(self, model, decay=0.9998, device=''): + def __init__(self, model, decay=0.9999, device=''): # make a copy of the model for accumulating moving average of weights self.ema = deepcopy(model) self.ema.eval() - self.decay = decay + self.updates = 0 # number of EMA updates + self.decay = lambda x: decay * (1 - math.exp(-x / 1000)) # decay exponential ramp (to help early epochs) self.device = device # perform ema on different device from model if set if device: self.ema.to(device=device) @@ -151,7 +153,8 @@ class ModelEMA: p.requires_grad_(False) def update(self, model): - d = self.decay + self.updates += 1 + d = self.decay(self.updates) with torch.no_grad(): if type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel): msd, esd = model.module.state_dict(), self.ema.module.state_dict() From c6b59a0e8add370da9132062a64dbe42c4a04dbb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 29 Mar 2020 13:29:06 -0700 Subject: [PATCH 2228/2595] LR schedule to 0.05 min --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 67fc65fd..a1f2fe1a 100644 --- a/train.py +++ b/train.py @@ -20,7 +20,7 @@ last = wdir + 'last.pt' best = wdir + 'best.pt' results_file = 'results.txt' -# Hyperparameters (results68: 59.9 mAP@0.5 yolov3-spp-416) https://github.com/ultralytics/yolov3/issues/310 +# Hyperparameters https://github.com/ultralytics/yolov3/issues/310 hyp = {'giou': 3.54, # giou loss gain 'cls': 37.4, # cls loss gain @@ -29,7 +29,7 @@ hyp = {'giou': 3.54, # giou loss gain 'obj_pw': 1.0, # obj BCELoss positive_weight 'iou_t': 0.225, # iou training threshold 'lr0': 0.01, # initial learning rate (SGD=5E-3, Adam=5E-4) - 'lrf': -4., # final LambdaLR learning rate = lr0 * (10 ** lrf) + 'lrf': 0.0005, # final learning rate (with cos scheduler) 'momentum': 0.937, # SGD momentum 'weight_decay': 0.000484, # optimizer weight decay 'fl_gamma': 0.0, # focal loss gamma (efficientDet default is gamma=1.5) @@ -137,7 +137,7 @@ def train(): model, optimizer = amp.initialize(model, optimizer, opt_level='O1', verbosity=0) # Scheduler https://github.com/ultralytics/yolov3/issues/238 - lf = lambda x: (1 + math.cos(x * math.pi / epochs)) / 2 # cosine https://arxiv.org/pdf/1812.01187.pdf + lf = lambda x: (((1 + math.cos(x * math.pi / epochs)) / 2) ** 1.0) * 0.95 + 0.05 # cosine https://arxiv.org/pdf/1812.01187.pdf scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf, last_epoch=start_epoch - 1) # scheduler = lr_scheduler.MultiStepLR(optimizer, [round(epochs * x) for x in [0.8, 0.9]], 0.1, start_epoch - 1) From eb151a881ef382cae133e802982c53bf3d16eaf6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 29 Mar 2020 20:41:32 -0700 Subject: [PATCH 2229/2595] NMS and test batch_size updates --- train.py | 6 +++--- utils/utils.py | 12 +++++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/train.py b/train.py index a1f2fe1a..33adb52e 100644 --- a/train.py +++ b/train.py @@ -180,12 +180,12 @@ def train(): collate_fn=dataset.collate_fn) # Testloader - testloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path, img_size_test, batch_size * 2, + testloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path, img_size_test, batch_size, hyp=hyp, rect=True, cache_images=opt.cache_images, single_cls=opt.single_cls), - batch_size=batch_size * 2, + batch_size=batch_size, num_workers=nw, pin_memory=True, collate_fn=dataset.collate_fn) @@ -311,7 +311,7 @@ def train(): is_coco = any([x in data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) and model.nc == 80 results, maps = test.test(cfg, data, - batch_size=batch_size * 2, + batch_size=batch_size, img_size=img_size_test, model=ema.ema, conf_thres=0.001 if final_epoch else 0.01, # 0.001 for best mAP, 0.01 for speed diff --git a/utils/utils.py b/utils/utils.py index 9eee669c..80b25d94 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -543,7 +543,8 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T x = x[torch.isfinite(x).all(1)] # If none remain process next image - if not x.shape[0]: + n = x.shape[0] # number of boxes + if not n: continue # Sort by confidence @@ -555,10 +556,11 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T boxes, scores = x[:, :4].clone() + c.view(-1, 1) * max_wh, x[:, 4] # boxes (offset by class), scores if method == 'merge': # Merge NMS (boxes merged using weighted mean) i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) - iou = box_iou(boxes, boxes).tril_() # lower triangular iou matrix - weights = (iou > iou_thres) * scores.view(-1, 1) - weights /= weights.sum(0) - x[:, :4] = torch.mm(weights.T, x[:, :4]) # merged_boxes(n,4) = weights(n,n) * boxes(n,4) + if n < 1000: # update boxes + iou = box_iou(boxes, boxes).tril_() # lower triangular iou matrix + weights = (iou > iou_thres) * scores.view(-1, 1) + weights /= weights.sum(0) + x[:, :4] = torch.mm(weights.T, x[:, :4]) # merged_boxes(n,4) = weights(n,n) * boxes(n,4) elif method == 'vision': i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) elif method == 'fast': # FastNMS from https://github.com/dbolya/yolact From f6fc9634ab9e47eefab82401ad99b07a26127f9b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 30 Mar 2020 11:37:38 -0700 Subject: [PATCH 2230/2595] mAP updates --- README.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index c0bc8cbc..539373b5 100755 --- a/README.md +++ b/README.md @@ -140,10 +140,10 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' |Size |COCO mAP
@0.5...0.95 |COCO mAP
@0.5 --- | --- | --- | --- -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |320 |14.0
28.7
30.5
**37.0** |29.1
51.8
52.3
**56.0** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |416 |16.0
31.2
33.9
**40.7** |33.0
55.4
56.9
**60.4** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |512 |16.6
32.7
35.6
**42.0** |34.9
57.7
59.5
**61.9** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |608 |16.6
33.1
37.0
**42.4** |35.4
58.2
60.7
**62.0** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |320 |14.0
28.7
30.5
**37.5** |29.1
51.8
52.3
**56.8** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |416 |16.0
31.2
33.9
**41.1** |33.0
55.4
56.9
**60.6** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |512 |16.6
32.7
35.6
**42.6** |34.9
57.7
59.5
**62.3** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |608 |16.6
33.1
37.0
**42.8** |35.4
58.2
60.7
**62.5** - mAP@0.5 run at `--iou-thr 0.5`, mAP@0.5...0.95 run at `--iou-thr 0.7` - Darknet results: https://arxiv.org/abs/1804.02767 @@ -155,20 +155,20 @@ Namespace(augment=True, batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.00 Using CUDA device0 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', total_memory=16130MB) Class Images Targets P R mAP@0.5 F1: 100%|█████████| 313/313 [03:00<00:00, 1.74it/s] - all 5e+03 3.51e+04 0.396 0.731 0.634 0.509 + all 5e+03 3.51e+04 0.372 0.743 0.636 0.49 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.447 - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.641 - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.485 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.271 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.492 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.583 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.357 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.587 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.652 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.488 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.450 + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.643 + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.486 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.265 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.498 + Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.577 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.361 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.593 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.654 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.486 Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.701 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.787 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.804 Speed: 21.3/3.0/24.4 ms inference/NMS/total per 640x640 image at batch-size 16 ``` From de52a008a587d5d0e2f5c962864b320f3bac08da Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 30 Mar 2020 11:46:20 -0700 Subject: [PATCH 2231/2595] default --img-size to 512 --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 06083988..bf8d2e4d 100644 --- a/detect.py +++ b/detect.py @@ -162,7 +162,7 @@ if __name__ == '__main__': parser.add_argument('--weights', type=str, default='weights/yolov3-spp-ultralytics.pt', help='weights path') parser.add_argument('--source', type=str, default='data/samples', help='source') # input file/folder, 0 for webcam parser.add_argument('--output', type=str, default='output', help='output folder') # output folder - parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') + parser.add_argument('--img-size', type=int, default=512, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.3, help='object confidence threshold') parser.add_argument('--iou-thres', type=float, default=0.6, help='IOU threshold for NMS') parser.add_argument('--fourcc', type=str, default='mp4v', help='output video codec (verify ffmpeg support)') From 105882b3c672729218c2b7cf5b9637aee98e284c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 30 Mar 2020 15:30:53 -0700 Subject: [PATCH 2232/2595] GFLOPs correction --- utils/torch_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 56e5bba6..c194e0f0 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -92,7 +92,7 @@ def model_info(model, verbose=False): # FLOPS report # from thop import profile # macs, params = profile(model, inputs=(torch.zeros(1, 3, 608, 608),)) - # print('%.3f FLOPS' % (macs / 1E9 * 2)) + # print('%.3f GFLOPs' % (macs / 1E9 * 2)) def load_classifier(name='resnet101', n=2): From 108334db29e45a80f43b12a8dde24712257290cc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 30 Mar 2020 16:04:08 -0700 Subject: [PATCH 2233/2595] FLOPs update --- utils/torch_utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index c194e0f0..e4490a70 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -89,9 +89,9 @@ def model_info(model, verbose=False): (i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) print('Model Summary: %g layers, %g parameters, %g gradients' % (len(list(model.parameters())), n_p, n_g)) - # FLOPS report + # FLOPs # from thop import profile - # macs, params = profile(model, inputs=(torch.zeros(1, 3, 608, 608),)) + # macs, params = profile(model, inputs=(torch.zeros(1, 3, 640, 640),)) # print('%.3f GFLOPs' % (macs / 1E9 * 2)) From ac2aa56e0a03f6278a4a84752cca416021667a24 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 30 Mar 2020 17:53:17 -0700 Subject: [PATCH 2234/2595] feature fusion update --- models.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/models.py b/models.py index ee9b98c3..049c6584 100755 --- a/models.py +++ b/models.py @@ -127,19 +127,19 @@ class weightedFeatureFusion(nn.Module): # weighted sum of 2 or more layers http x = x * w[0] # Fusion - nc = x.shape[1] # input channels + nx = x.shape[1] # input channels for i in range(self.n - 1): a = outputs[self.layers[i]] * w[i + 1] if self.weight else outputs[self.layers[i]] # feature to add - ac = a.shape[1] # feature channels - dc = nc - ac # delta channels + na = a.shape[1] # feature channels # Adjust channels - if dc > 0: # slice input - x[:, :ac] = x[:, :ac] + a # or a = nn.ZeroPad2d((0, 0, 0, 0, 0, dc))(a); x = x + a - elif dc < 0: # slice feature - x = x + a[:, :nc] - else: # same shape + if nx == na: # same shape x = x + a + elif nx > na: # slice input + x[:, :na] = x[:, :na] + a # or a = nn.ZeroPad2d((0, 0, 0, 0, 0, dc))(a); x = x + a + else: # slice feature + x = x + a[:, :nx] + return x From b2d9f1898f062aa3b00cbb8aeeec33a27b646607 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 30 Mar 2020 19:27:42 -0700 Subject: [PATCH 2235/2595] burnin lr ramp 300 iterations --- train.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/train.py b/train.py index 33adb52e..f37eb77b 100644 --- a/train.py +++ b/train.py @@ -241,23 +241,16 @@ def train(): targets = targets.to(device) # Hyperparameter Burn-in - n_burn = 200 # number of burn-in batches + n_burn = 300 # number of burn-in batches if ni <= n_burn: - # g = (ni / n_burn) ** 2 # gain + g = (ni / n_burn) ** 2 # gain for x in model.named_modules(): # initial stats may be poor, wait to track if x[0].endswith('BatchNorm2d'): x[1].track_running_stats = ni == n_burn - # for x in optimizer.param_groups: - # x['lr'] = x['initial_lr'] * lf(epoch) * g # gain rises from 0 - 1 - # if 'momentum' in x: - # x['momentum'] = hyp['momentum'] * g - - # Plot images with bounding boxes - if ni < 1: - f = 'train_batch%g.png' % i # filename - plot_images(imgs=imgs, targets=targets, paths=paths, fname=f) - if tb_writer: - tb_writer.add_image(f, cv2.imread(f)[:, :, ::-1], dataformats='HWC') + for x in optimizer.param_groups: + x['lr'] = x['initial_lr'] * lf(epoch) * g # gain rises from 0 - 1 + if 'momentum' in x: + x['momentum'] = hyp['momentum'] * g # Multi-Scale training if opt.multi_scale: @@ -299,6 +292,14 @@ def train(): s = ('%10s' * 2 + '%10.3g' * 6) % ('%g/%g' % (epoch, epochs - 1), mem, *mloss, len(targets), img_size) pbar.set_description(s) + # Plot images with bounding boxes + if ni < 1: + f = 'train_batch%g.png' % i # filename + plot_images(imgs=imgs, targets=targets, paths=paths, fname=f) + if tb_writer: + tb_writer.add_image(f, cv2.imread(f)[:, :, ::-1], dataformats='HWC') + # tb_writer.add_graph(model, imgs) + # end batch ------------------------------------------------------------------------------------------------ # Update scheduler From 16862ea846c1ed49310cec4a22b0035fb66b6a3c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 30 Mar 2020 21:21:45 -0700 Subject: [PATCH 2236/2595] update 'reproduce our results' --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 539373b5..7bbcbf86 100755 --- a/README.md +++ b/README.md @@ -177,9 +177,9 @@ Speed: 21.3/3.0/24.4 ms inference/NMS/total per 640x640 image at batch-size 16 This command trains `yolov3-spp.cfg` from scratch to our mAP above. Training takes about one week on a 2080Ti. ```bash -$ python3 train.py --weights '' --cfg yolov3-spp.cfg --epochs 273 --batch 16 --accum 4 --multi +$ python3 train.py --weights '' --cfg yolov3-spp.cfg --epochs 300 --batch 16 --accum 4 --multi ``` - + # Reproduce Our Environment From 98271eb6ed9f6b2e215df498311f3ed546b5791b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 31 Mar 2020 14:27:10 -0700 Subject: [PATCH 2237/2595] remove deprecated models --- models.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/models.py b/models.py index 049c6584..fee58077 100755 --- a/models.py +++ b/models.py @@ -469,8 +469,6 @@ def attempt_download(weights): 'yolov3-tiny.pt': '10m_3MlpQwRtZetQxtksm9jqHrPTHZ6vo', 'darknet53.conv.74': '1WUVBid-XuoUBmvzBVUCBl_ELrzqwA8dJ', 'yolov3-tiny.conv.15': '1Bw0kCpplxUqyRYAJr9RY9SGnOJbo9nEj', - 'ultralytics49.pt': '158g62Vs14E3aj7oPVPuEnNZMKFNgGyNq', - 'ultralytics68.pt': '1Jm8kqnMdMGUUxGo8zMFZMJ0eaPwLkxSG', 'yolov3-spp-ultralytics.pt': '1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4'} file = Path(weights).name From 992e0d7cb48e99b677a337f942c4376bcd544696 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 31 Mar 2020 14:36:25 -0700 Subject: [PATCH 2238/2595] default test --conf to 0.001 --- train.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/train.py b/train.py index f37eb77b..9df15801 100644 --- a/train.py +++ b/train.py @@ -315,8 +315,6 @@ def train(): batch_size=batch_size, img_size=img_size_test, model=ema.ema, - conf_thres=0.001 if final_epoch else 0.01, # 0.001 for best mAP, 0.01 for speed - iou_thres=0.6, save_json=final_epoch and is_coco, single_cls=opt.single_cls, dataloader=testloader) From f4eecef700717d1b569ad4534b3105a67177ebda Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 31 Mar 2020 15:37:23 -0700 Subject: [PATCH 2239/2595] merge NMS speed/memory improvements --- utils/utils.py | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 80b25d94..a8286780 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -304,14 +304,14 @@ def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False, DIoU=False, CIoU=False): return iou -def box_iou(boxes1, boxes2): +def box_iou(box1, box2): # https://github.com/pytorch/vision/blob/master/torchvision/ops/boxes.py """ Return intersection-over-union (Jaccard index) of boxes. Both sets of boxes are expected to be in (x1, y1, x2, y2) format. Arguments: - boxes1 (Tensor[N, 4]) - boxes2 (Tensor[M, 4]) + box1 (Tensor[N, 4]) + box2 (Tensor[M, 4]) Returns: iou (Tensor[N, M]): the NxM matrix containing the pairwise IoU values for every element in boxes1 and boxes2 @@ -321,13 +321,11 @@ def box_iou(boxes1, boxes2): # box = 4xn return (box[2] - box[0]) * (box[3] - box[1]) - area1 = box_area(boxes1.t()) - area2 = box_area(boxes2.t()) + area1 = box_area(box1.t()) + area2 = box_area(box2.t()) - lt = torch.max(boxes1[:, None, :2], boxes2[:, :2]) # [N,M,2] - rb = torch.min(boxes1[:, None, 2:], boxes2[:, 2:]) # [N,M,2] - - inter = (rb - lt).clamp(0).prod(2) # [N,M] + # inter(N,M) = (rb(N,M,2) - lt(N,M,2)).clamp(0).prod(2) + inter = (torch.min(box1[:, None, 2:], box2[:, 2:]) - torch.max(box1[:, None, :2], box2[:, :2])).clamp(0).prod(2) return inter / (area1[:, None] + area2 - inter) # iou = inter / (area1 + area2 - inter) @@ -509,6 +507,7 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T nc = prediction[0].shape[1] - 5 # number of classes multi_label &= nc > 1 # multiple labels per box output = [None] * len(prediction) + for xi, x in enumerate(prediction): # image index, image inference # Apply conf constraint x = x[x[:, 4] > conf_thres] @@ -556,10 +555,9 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T boxes, scores = x[:, :4].clone() + c.view(-1, 1) * max_wh, x[:, 4] # boxes (offset by class), scores if method == 'merge': # Merge NMS (boxes merged using weighted mean) i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) - if n < 1000: # update boxes - iou = box_iou(boxes, boxes).tril_() # lower triangular iou matrix - weights = (iou > iou_thres) * scores.view(-1, 1) - weights /= weights.sum(0) + if n < 5000: # update boxes + weights = (box_iou(boxes, boxes).tril_() > iou_thres) * scores.view(-1, 1) # box weights + weights /= weights.sum(0) # normalize x[:, :4] = torch.mm(weights.T, x[:, :4]) # merged_boxes(n,4) = weights(n,n) * boxes(n,4) elif method == 'vision': i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) From 02802e67f24e72374a1a4bcef4e5241b9e3b2add Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 31 Mar 2020 18:18:08 -0700 Subject: [PATCH 2240/2595] merge NMS full matrix --- utils/utils.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index a8286780..109c78bd 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -555,10 +555,11 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T boxes, scores = x[:, :4].clone() + c.view(-1, 1) * max_wh, x[:, 4] # boxes (offset by class), scores if method == 'merge': # Merge NMS (boxes merged using weighted mean) i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) - if n < 5000: # update boxes - weights = (box_iou(boxes, boxes).tril_() > iou_thres) * scores.view(-1, 1) # box weights - weights /= weights.sum(0) # normalize - x[:, :4] = torch.mm(weights.T, x[:, :4]) # merged_boxes(n,4) = weights(n,n) * boxes(n,4) + # weights = (box_iou(boxes, boxes).tril_() > iou_thres) * scores.view(-1, 1) # box weights + # weights /= weights.sum(0) # normalize + # x[:, :4] = torch.mm(weights.T, x[:, :4]) + weights = (box_iou(boxes[i], boxes) > iou_thres) * scores[None] # box weights + x[i, :4] = torch.mm(weights / weights.sum(1, keepdim=True), x[:, :4]) # boxes(i,4) = w(i,n) * boxes(n,4) elif method == 'vision': i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) elif method == 'fast': # FastNMS from https://github.com/dbolya/yolact From 8d788e10c43066921ad92082520d086f82502dc6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 31 Mar 2020 19:07:41 -0700 Subject: [PATCH 2241/2595] mAP updates --- README.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 7bbcbf86..2444700d 100755 --- a/README.md +++ b/README.md @@ -140,10 +140,10 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' |Size |COCO mAP
@0.5...0.95 |COCO mAP
@0.5 --- | --- | --- | --- -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |320 |14.0
28.7
30.5
**37.5** |29.1
51.8
52.3
**56.8** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |416 |16.0
31.2
33.9
**41.1** |33.0
55.4
56.9
**60.6** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |512 |16.6
32.7
35.6
**42.6** |34.9
57.7
59.5
**62.3** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |608 |16.6
33.1
37.0
**42.8** |35.4
58.2
60.7
**62.5** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |320 |14.0
28.7
30.5
**37.6** |29.1
51.8
52.3
**56.8** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |416 |16.0
31.2
33.9
**41.1** |33.0
55.4
56.9
**60.7** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |512 |16.6
32.7
35.6
**42.7** |34.9
57.7
59.5
**62.6** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |608 |16.6
33.1
37.0
**42.9** |35.4
58.2
60.7
**62.6** - mAP@0.5 run at `--iou-thr 0.5`, mAP@0.5...0.95 run at `--iou-thr 0.7` - Darknet results: https://arxiv.org/abs/1804.02767 @@ -155,20 +155,20 @@ Namespace(augment=True, batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.00 Using CUDA device0 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', total_memory=16130MB) Class Images Targets P R mAP@0.5 F1: 100%|█████████| 313/313 [03:00<00:00, 1.74it/s] - all 5e+03 3.51e+04 0.372 0.743 0.636 0.49 + all 5e+03 3.51e+04 0.373 0.744 0.637 0.491 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.450 - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.643 - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.486 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.265 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.498 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.454 + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.644 + Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.497 + Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.270 + Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.504 Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.577 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.361 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.593 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.654 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.486 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.701 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.804 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.363 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.599 + Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.668 + Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.502 + Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.724 + Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.805 Speed: 21.3/3.0/24.4 ms inference/NMS/total per 640x640 image at batch-size 16 ``` From 300e9a7ad68b021e723fe27fc3d2d6bfddc0545a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 31 Mar 2020 21:31:09 -0700 Subject: [PATCH 2242/2595] merge NMS full matrix --- utils/utils.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 109c78bd..d434ccf4 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -555,11 +555,12 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T boxes, scores = x[:, :4].clone() + c.view(-1, 1) * max_wh, x[:, 4] # boxes (offset by class), scores if method == 'merge': # Merge NMS (boxes merged using weighted mean) i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) - # weights = (box_iou(boxes, boxes).tril_() > iou_thres) * scores.view(-1, 1) # box weights - # weights /= weights.sum(0) # normalize - # x[:, :4] = torch.mm(weights.T, x[:, :4]) - weights = (box_iou(boxes[i], boxes) > iou_thres) * scores[None] # box weights - x[i, :4] = torch.mm(weights / weights.sum(1, keepdim=True), x[:, :4]) # boxes(i,4) = w(i,n) * boxes(n,4) + if n < 1E4: # update boxes + # weights = (box_iou(boxes, boxes).tril_() > iou_thres) * scores.view(-1, 1) # box weights + # weights /= weights.sum(0) # normalize + # x[:, :4] = torch.mm(weights.T, x[:, :4]) + weights = (box_iou(boxes[i], boxes) > iou_thres) * scores[None] # box weights + x[i, :4] = torch.mm(weights / weights.sum(1, keepdim=True), x[:, :4]) # boxes(i,4) = w(i,n) * boxes(n,4) elif method == 'vision': i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) elif method == 'fast': # FastNMS from https://github.com/dbolya/yolact From 5b322b6038626b56fb16bb58b2fffbb1bef98297 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 1 Apr 2020 09:57:00 -0700 Subject: [PATCH 2243/2595] nvcr update --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index d1667cd3..f21cf49e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Start FROM Nvidia PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorch -FROM nvcr.io/nvidia/pytorch:20.02-py3 +FROM nvcr.io/nvidia/pytorch:20.03-py3 # Install dependencies (pip or conda) RUN pip install -U gsutil From 765b8f3a3bae4c8ae99c882fdaccfd806c47d25d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 1 Apr 2020 12:12:14 -0700 Subject: [PATCH 2244/2595] documentation update --- README.md | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 2444700d..047536f8 100755 --- a/README.md +++ b/README.md @@ -37,25 +37,21 @@ All dependencies are included in the associated docker images. Docker requiremen # Tutorials -* [GCP Quickstart](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) -* [Transfer Learning](https://github.com/ultralytics/yolov3/wiki/Example:-Transfer-Learning) -* [Train Single Image](https://github.com/ultralytics/yolov3/wiki/Example:-Train-Single-Image) +* [Train Custom Data](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) ** << recommended** * [Train Single Class](https://github.com/ultralytics/yolov3/wiki/Example:-Train-Single-Class) -* [Train Custom Data](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) - -# Jupyter Notebook - -Our Jupyter [notebook](https://colab.research.google.com/github/ultralytics/yolov3/blob/master/examples.ipynb) provides quick training, inference and testing examples. +* [Google Colab Notebook](https://colab.research.google.com/drive/1G8T-VFxQkjDe4idzN8F-hbIBqkkkQnxw) with quick training, inference and testing examples +* [GCP Quickstart](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) +* [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) # Training -**Start Training:** `python3 train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. Each epoch trains on 117,263 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. +**Start Training:** `python3 train.py` to begin training after downloading COCO data with `data/get_coco2017.sh`. Each epoch trains on 117,263 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. **Resume Training:** `python3 train.py --resume` to resume training from `weights/last.pt`. -**Plot Training:** `from utils import utils; utils.plot_results()` plots training results from `coco_16img.data`, `coco_64img.data`, 2 example datasets available in the `data/` folder, which train and test on the first 16 and 64 images of the COCO2014-trainval dataset. +**Plot Training:** `from utils import utils; utils.plot_results()` - + ## Image Augmentation From ea80ba65aff8169fb1d5e56d35a431f42b53edd4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 1 Apr 2020 12:16:37 -0700 Subject: [PATCH 2245/2595] documentation updates --- README.md | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 047536f8..6cdcd40c 100755 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ All dependencies are included in the associated docker images. Docker requiremen # Tutorials -* [Train Custom Data](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) ** << recommended** +* [Train Custom Data](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) < highly recommended!! * [Train Single Class](https://github.com/ultralytics/yolov3/wiki/Example:-Train-Single-Class) * [Google Colab Notebook](https://colab.research.google.com/drive/1G8T-VFxQkjDe4idzN8F-hbIBqkkkQnxw) with quick training, inference and testing examples * [GCP Quickstart](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) @@ -55,17 +55,7 @@ All dependencies are included in the associated docker images. Docker requiremen ## Image Augmentation -`datasets.py` applies random OpenCV-powered (https://opencv.org/) augmentation to the input images in accordance with the following specifications. Augmentation is applied **only** during training, not during inference. Bounding boxes are automatically tracked and updated with the images. 416 x 416 examples pictured below. - -Augmentation | Description ---- | --- -Translation | +/- 10% (vertical and horizontal) -Rotation | +/- 5 degrees -Shear | +/- 2 degrees (vertical and horizontal) -Scale | +/- 10% -Reflection | 50% probability (horizontal-only) -H**S**V Saturation | +/- 50% -HS**V** Intensity | +/- 50% +`datasets.py` applies OpenCV-powered (https://opencv.org/) augmentation to the input image. We use a **mosaic dataloader** (pictured below) to increase image variability during training. @@ -89,8 +79,6 @@ V100 |1
2| 32 x 2
64 x 1 | 122
**178** | 16 min
**11 min** | **$0. # Inference -`detect.py` runs inference on any sources: - ```bash python3 detect.py --source ... ``` @@ -102,15 +90,13 @@ python3 detect.py --source ... - RTSP stream: `--source rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa` - HTTP stream: `--source http://wmccpinetop.axiscam.net/mjpg/video.mjpg` -To run a specific models: - -**YOLOv3:** `python3 detect.py --cfg cfg/yolov3.cfg --weights yolov3.weights` +**YOLOv3:** `python3 detect.py --cfg cfg/yolov3.cfg --weights yolov3.pt` -**YOLOv3-tiny:** `python3 detect.py --cfg cfg/yolov3-tiny.cfg --weights yolov3-tiny.weights` +**YOLOv3-tiny:** `python3 detect.py --cfg cfg/yolov3-tiny.cfg --weights yolov3-tiny.pt` -**YOLOv3-SPP:** `python3 detect.py --cfg cfg/yolov3-spp.cfg --weights yolov3-spp.weights` +**YOLOv3-SPP:** `python3 detect.py --cfg cfg/yolov3-spp.cfg --weights yolov3-spp.pt` From 4ac60018f6e6c1e24b496485f126a660d9c793d8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 1 Apr 2020 14:05:41 -0700 Subject: [PATCH 2246/2595] FLOPS report --- utils/torch_utils.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index e4490a70..94ca9ded 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -87,12 +87,15 @@ def model_info(model, verbose=False): name = name.replace('module_list.', '') print('%5g %40s %9s %12g %20s %10.3g %10.3g' % (i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) - print('Model Summary: %g layers, %g parameters, %g gradients' % (len(list(model.parameters())), n_p, n_g)) - # FLOPs - # from thop import profile - # macs, params = profile(model, inputs=(torch.zeros(1, 3, 640, 640),)) - # print('%.3f GFLOPs' % (macs / 1E9 * 2)) + try: # FLOPS + from thop import profile + macs, _ = profile(model, inputs=(torch.zeros(1, 3, 640, 640),)) + fs = ', %.1f GFLOPS' % (macs / 1E9 * 2) + except: + fs = '' + + print('Model Summary: %g layers, %g parameters, %g gradients%s' % (len(list(model.parameters())), n_p, n_g, fs)) def load_classifier(name='resnet101', n=2): From 27c7334e8176d1b0de0aab9e8616c48ba21903f8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 2 Apr 2020 12:22:15 -0700 Subject: [PATCH 2247/2595] new layers.py file --- models.py | 67 +++---------------------------------------------- utils/layers.py | 62 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 64 deletions(-) create mode 100644 utils/layers.py diff --git a/models.py b/models.py index fee58077..089b6034 100755 --- a/models.py +++ b/models.py @@ -1,8 +1,6 @@ -import torch.nn.functional as F - from utils.google_utils import * +from utils.layers import * from utils.parse_config import * -from utils.utils import * ONNX_EXPORT = False @@ -70,7 +68,7 @@ def create_modules(module_defs, img_size): layers = mdef['from'] filters = output_filters[-1] routs.extend([i + l if l < 0 else l for l in layers]) - modules = weightedFeatureFusion(layers=layers, weight='weights_type' in mdef) + modules = WeightedFeatureFusion(layers=layers, weight='weights_type' in mdef) elif mdef['type'] == 'reorg3d': # yolov3-spp-pan-scale pass @@ -111,65 +109,6 @@ def create_modules(module_defs, img_size): return module_list, routs_binary -class weightedFeatureFusion(nn.Module): # weighted sum of 2 or more layers https://arxiv.org/abs/1911.09070 - def __init__(self, layers, weight=False): - super(weightedFeatureFusion, self).__init__() - self.layers = layers # layer indices - self.weight = weight # apply weights boolean - self.n = len(layers) + 1 # number of layers - if weight: - self.w = torch.nn.Parameter(torch.zeros(self.n)) # layer weights - - def forward(self, x, outputs): - # Weights - if self.weight: - w = torch.sigmoid(self.w) * (2 / self.n) # sigmoid weights (0-1) - x = x * w[0] - - # Fusion - nx = x.shape[1] # input channels - for i in range(self.n - 1): - a = outputs[self.layers[i]] * w[i + 1] if self.weight else outputs[self.layers[i]] # feature to add - na = a.shape[1] # feature channels - - # Adjust channels - if nx == na: # same shape - x = x + a - elif nx > na: # slice input - x[:, :na] = x[:, :na] + a # or a = nn.ZeroPad2d((0, 0, 0, 0, 0, dc))(a); x = x + a - else: # slice feature - x = x + a[:, :nx] - - return x - - -class SwishImplementation(torch.autograd.Function): - @staticmethod - def forward(ctx, i): - ctx.save_for_backward(i) - return i * torch.sigmoid(i) - - @staticmethod - def backward(ctx, grad_output): - sigmoid_i = torch.sigmoid(ctx.saved_variables[0]) - return grad_output * (sigmoid_i * (1 + ctx.saved_variables[0] * (1 - sigmoid_i))) - - -class MemoryEfficientSwish(nn.Module): - def forward(self, x): - return SwishImplementation.apply(x) - - -class Swish(nn.Module): - def forward(self, x): - return x.mul_(torch.sigmoid(x)) - - -class Mish(nn.Module): # https://github.com/digantamisra98/Mish - def forward(self, x): - return x.mul_(F.softplus(x).tanh()) - - class YOLOLayer(nn.Module): def __init__(self, anchors, nc, img_size, yolo_index, layers): super(YOLOLayer, self).__init__() @@ -277,7 +216,7 @@ class Darknet(nn.Module): l = [i - 1] + module.layers # layers s = [list(x.shape)] + [list(out[i].shape) for i in module.layers] # shapes str = ' >> ' + ' + '.join(['layer %g %s' % x for x in zip(l, s)]) - x = module(x, out) # weightedFeatureFusion() + x = module(x, out) # WeightedFeatureFusion() elif mtype == 'route': # concat layers = mdef['layers'] if verbose: diff --git a/utils/layers.py b/utils/layers.py new file mode 100644 index 00000000..cb72d67b --- /dev/null +++ b/utils/layers.py @@ -0,0 +1,62 @@ +import torch.nn.functional as F + +from utils.utils import * + + +class WeightedFeatureFusion(nn.Module): # weighted sum of 2 or more layers https://arxiv.org/abs/1911.09070 + def __init__(self, layers, weight=False): + super(WeightedFeatureFusion, self).__init__() + self.layers = layers # layer indices + self.weight = weight # apply weights boolean + self.n = len(layers) + 1 # number of layers + if weight: + self.w = torch.nn.Parameter(torch.zeros(self.n), requires_grad=True) # layer weights + + def forward(self, x, outputs): + # Weights + if self.weight: + w = torch.sigmoid(self.w) * (2 / self.n) # sigmoid weights (0-1) + x = x * w[0] + + # Fusion + nx = x.shape[1] # input channels + for i in range(self.n - 1): + a = outputs[self.layers[i]] * w[i + 1] if self.weight else outputs[self.layers[i]] # feature to add + na = a.shape[1] # feature channels + + # Adjust channels + if nx == na: # same shape + x = x + a + elif nx > na: # slice input + x[:, :na] = x[:, :na] + a # or a = nn.ZeroPad2d((0, 0, 0, 0, 0, dc))(a); x = x + a + else: # slice feature + x = x + a[:, :nx] + + return x + + +class SwishImplementation(torch.autograd.Function): + @staticmethod + def forward(ctx, i): + ctx.save_for_backward(i) + return i * torch.sigmoid(i) + + @staticmethod + def backward(ctx, grad_output): + sigmoid_i = torch.sigmoid(ctx.saved_variables[0]) + return grad_output * (sigmoid_i * (1 + ctx.saved_variables[0] * (1 - sigmoid_i))) + + +class MemoryEfficientSwish(nn.Module): + def forward(self, x): + return SwishImplementation.apply(x) + + +class Swish(nn.Module): + def forward(self, x): + return x.mul_(torch.sigmoid(x)) + + +class Mish(nn.Module): # https://github.com/digantamisra98/Mish + def forward(self, x): + return x.mul_(F.softplus(x).tanh()) From 9155ef3f4f61b6e79e2af6b5573afb3f00f0f649 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 2 Apr 2020 14:08:21 -0700 Subject: [PATCH 2248/2595] burnin merged with prebias --- train.py | 42 ++++++++++++++---------------------------- 1 file changed, 14 insertions(+), 28 deletions(-) diff --git a/train.py b/train.py index 9df15801..edb6d749 100644 --- a/train.py +++ b/train.py @@ -137,7 +137,8 @@ def train(): model, optimizer = amp.initialize(model, optimizer, opt_level='O1', verbosity=0) # Scheduler https://github.com/ultralytics/yolov3/issues/238 - lf = lambda x: (((1 + math.cos(x * math.pi / epochs)) / 2) ** 1.0) * 0.95 + 0.05 # cosine https://arxiv.org/pdf/1812.01187.pdf + lf = lambda x: (((1 + math.cos( + x * math.pi / epochs)) / 2) ** 1.0) * 0.95 + 0.05 # cosine https://arxiv.org/pdf/1812.01187.pdf scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf, last_epoch=start_epoch - 1) # scheduler = lr_scheduler.MultiStepLR(optimizer, [round(epochs * x) for x in [0.8, 0.9]], 0.1, start_epoch - 1) @@ -193,7 +194,7 @@ def train(): # Model parameters model.nc = nc # attach number of classes to model model.hyp = hyp # attach hyperparameters to model - model.gr = 0.0 # giou loss ratio (obj_loss = 1.0 or giou) + model.gr = 1.0 # giou loss ratio (obj_loss = 1.0 or giou) model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights # Model EMA @@ -201,7 +202,7 @@ def train(): # Start training nb = len(dataloader) # number of batches - prebias = start_epoch == 0 + n_burn = max(3 * nb, 300) # burn-in iterations, max(3 epochs, 300 iterations) maps = np.zeros(nc) # mAP per class # torch.autograd.set_detect_anomaly(True) results = (0, 0, 0, 0, 0, 0, 0) # 'P', 'R', 'mAP', 'F1', 'val GIoU', 'val Objectness', 'val Classification' @@ -211,21 +212,6 @@ def train(): for epoch in range(start_epoch, epochs): # epoch ------------------------------------------------------------------ model.train() - # Prebias - if prebias: - ne = 3 # number of prebias epochs - ps = 0.1, 0.9 # prebias settings (lr=0.1, momentum=0.9) - if epoch == ne: - ps = hyp['lr0'], hyp['momentum'] # normal training settings - model.gr = 1.0 # giou loss ratio (obj_loss = giou) - print_model_biases(model) - prebias = False - - # Bias optimizer settings - optimizer.param_groups[2]['lr'] = ps[0] - if optimizer.param_groups[2].get('momentum') is not None: # for SGD but not Adam - optimizer.param_groups[2]['momentum'] = ps[1] - # Update image weights (optional) if dataset.image_weights: w = model.class_weights.cpu().numpy() * (1 - maps) ** 2 # class weights @@ -240,17 +226,17 @@ def train(): imgs = imgs.to(device).float() / 255.0 # uint8 to float32, 0 - 255 to 0.0 - 1.0 targets = targets.to(device) - # Hyperparameter Burn-in - n_burn = 300 # number of burn-in batches + # Burn-in if ni <= n_burn: - g = (ni / n_burn) ** 2 # gain - for x in model.named_modules(): # initial stats may be poor, wait to track - if x[0].endswith('BatchNorm2d'): - x[1].track_running_stats = ni == n_burn - for x in optimizer.param_groups: - x['lr'] = x['initial_lr'] * lf(epoch) * g # gain rises from 0 - 1 + model.gr = np.interp(ni, [0, n_burn], [0.0, 1.0]) # giou loss ratio (obj_loss = 1.0 or giou) + if ni == n_burn: # burnin complete + print_model_biases(model) + + for j, x in enumerate(optimizer.param_groups): + # bias lr falls from 0.1 to lr0, all other lrs rise from 0.0 to lr0 + x['lr'] = np.interp(ni, [0, n_burn], [0.1 if j == 2 else 0.0, x['initial_lr'] * lf(epoch)]) if 'momentum' in x: - x['momentum'] = hyp['momentum'] * g + x['momentum'] = np.interp(ni, [0, n_burn], [0.9, hyp['momentum']]) # Multi-Scale training if opt.multi_scale: @@ -353,7 +339,7 @@ def train(): torch.save(chkpt, last) # Save best checkpoint - if best_fitness == fi: + if (best_fitness == fi) and not final_epoch: torch.save(chkpt, best) # Save backup every 10 epochs (optional) From aa4591d7e92db91a3f03bbd601218034b398f6b5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 2 Apr 2020 14:10:45 -0700 Subject: [PATCH 2249/2595] batchnorm momentum to 0.03 --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 089b6034..9d2538e6 100755 --- a/models.py +++ b/models.py @@ -32,7 +32,7 @@ def create_modules(module_defs, img_size): groups=mdef['groups'] if 'groups' in mdef else 1, bias=not bn)) if bn: - modules.add_module('BatchNorm2d', nn.BatchNorm2d(filters, momentum=0.003, eps=1E-4)) + modules.add_module('BatchNorm2d', nn.BatchNorm2d(filters, momentum=0.03, eps=1E-4)) else: routs.append(i) # detection output (goes into yolo layer) From 207c6fcff9a40c55773b382b3f8f51a656082bff Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 2 Apr 2020 18:53:40 -0700 Subject: [PATCH 2250/2595] merge NMS full matrix --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index d434ccf4..e5a4c526 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -555,12 +555,12 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T boxes, scores = x[:, :4].clone() + c.view(-1, 1) * max_wh, x[:, 4] # boxes (offset by class), scores if method == 'merge': # Merge NMS (boxes merged using weighted mean) i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) - if n < 1E4: # update boxes + if n < 1E4: # update boxes as boxes(i,4) = weights(i,n) * boxes(n,4) # weights = (box_iou(boxes, boxes).tril_() > iou_thres) * scores.view(-1, 1) # box weights # weights /= weights.sum(0) # normalize # x[:, :4] = torch.mm(weights.T, x[:, :4]) weights = (box_iou(boxes[i], boxes) > iou_thres) * scores[None] # box weights - x[i, :4] = torch.mm(weights / weights.sum(1, keepdim=True), x[:, :4]) # boxes(i,4) = w(i,n) * boxes(n,4) + x[i, :4] = torch.mm(weights / weights.sum(1, keepdim=True), x[:, :4]).float() # merged boxes elif method == 'vision': i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) elif method == 'fast': # FastNMS from https://github.com/dbolya/yolact From 91f563c2a2baa5a120a81e91da19f29e9d37b42f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 2 Apr 2020 19:10:51 -0700 Subject: [PATCH 2251/2595] create_grids() to YOLOLayer method --- models.py | 52 ++++++++++++++++++++++++---------------------------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/models.py b/models.py index 9d2538e6..772430f6 100755 --- a/models.py +++ b/models.py @@ -8,6 +8,7 @@ ONNX_EXPORT = False def create_modules(module_defs, img_size): # Constructs module list of layer blocks from module configuration in module_defs + img_size = [img_size] * 2 if isinstance(img_size, int) else img_size # expand if necessary hyperparams = module_defs.pop(0) output_filters = [int(hyperparams['channels'])] module_list = nn.ModuleList() @@ -75,12 +76,13 @@ def create_modules(module_defs, img_size): elif mdef['type'] == 'yolo': yolo_index += 1 - l = mdef['from'] if 'from' in mdef else [] + stride = [32, 16, 8, 4, 2][yolo_index] # P3-P7 stride modules = YOLOLayer(anchors=mdef['anchors'][mdef['mask']], # anchor list nc=mdef['classes'], # number of classes img_size=img_size, # (416, 416) yolo_index=yolo_index, # 0, 1, 2... - layers=l) # output layers + layers=mdef['from'] if 'from' in mdef else [], # output layers + stride=stride) # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) try: @@ -110,23 +112,34 @@ def create_modules(module_defs, img_size): class YOLOLayer(nn.Module): - def __init__(self, anchors, nc, img_size, yolo_index, layers): + def __init__(self, anchors, nc, img_size, yolo_index, layers, stride): super(YOLOLayer, self).__init__() self.anchors = torch.Tensor(anchors) self.index = yolo_index # index of this layer in layers self.layers = layers # model output layer indices + self.stride = stride # layer stride self.nl = len(layers) # number of output layers (3) self.na = len(anchors) # number of anchors (3) self.nc = nc # number of classes (80) self.no = nc + 5 # number of outputs (85) - self.nx = 0 # initialize number of x gridpoints - self.ny = 0 # initialize number of y gridpoints + self.nx, self.ny = 0, 0 # initialize number of x, y gridpoints + self.anchor_vec = self.anchors / self.stride + self.anchor_wh = self.anchor_vec.view(1, self.na, 1, 1, 2) if ONNX_EXPORT: - stride = [32, 16, 8][yolo_index] # stride of this layer - nx = img_size[1] // stride # number x grid points - ny = img_size[0] // stride # number y grid points - create_grids(self, img_size, (nx, ny)) + self.create_grids((img_size[1] // stride, img_size[0] // stride)) # number x, y grid points + + def create_grids(self, ng=(13, 13), device='cpu'): + self.nx, self.ny = ng # x and y grid size + self.ng = torch.Tensor(ng).to(device) + + # build xy offsets + yv, xv = torch.meshgrid([torch.arange(self.ny), torch.arange(self.nx)]) + self.grid_xy = torch.stack((xv, yv), 2).to(device).view((1, 1, self.ny, self.nx, 2)) + + if self.anchor_vec.device != device: + self.anchor_vec = self.anchor_vec.to(device) + self.anchor_wh = self.anchor_wh.to(device) def forward(self, p, img_size, out): ASFF = False # https://arxiv.org/abs/1911.09516 @@ -135,7 +148,7 @@ class YOLOLayer(nn.Module): p = out[self.layers[i]] bs, _, ny, nx = p.shape # bs, 255, 13, 13 if (self.nx, self.ny) != (nx, ny): - create_grids(self, img_size, (nx, ny), p.device, p.dtype) + self.create_grids((nx, ny), p.device) # outputs and weights # w = F.softmax(p[:, -n:], 1) # normalized weights @@ -154,7 +167,7 @@ class YOLOLayer(nn.Module): else: bs, _, ny, nx = p.shape # bs, 255, 13, 13 if (self.nx, self.ny) != (nx, ny): - create_grids(self, img_size, (nx, ny), p.device, p.dtype) + self.create_grids((nx, ny), p.device) # p.view(bs, 255, 13, 13) -- > (bs, 3, 13, 13, 85) # (bs, anchors, grid, grid, classes + xywh) p = p.view(bs, self.na, self.no, self.ny, self.nx).permute(0, 1, 3, 4, 2).contiguous() # prediction @@ -273,23 +286,6 @@ def get_yolo_layers(model): return [i for i, x in enumerate(model.module_defs) if x['type'] == 'yolo'] # [82, 94, 106] for yolov3 -def create_grids(self, img_size=416, ng=(13, 13), device='cpu', type=torch.float32): - nx, ny = ng # x and y grid size - self.img_size = max(img_size) - self.stride = self.img_size / max(ng) - - # build xy offsets - yv, xv = torch.meshgrid([torch.arange(ny), torch.arange(nx)]) - self.grid_xy = torch.stack((xv, yv), 2).to(device).type(type).view((1, 1, ny, nx, 2)) - - # build wh gains - self.anchor_vec = self.anchors.to(device) / self.stride - self.anchor_wh = self.anchor_vec.view(1, self.na, 1, 1, 2).type(type) - self.ng = torch.Tensor(ng).to(device) - self.nx = nx - self.ny = ny - - def load_darknet_weights(self, weights, cutoff=-1): # Parses and loads the weights stored in 'weights' From 93055a9d58009ce5d780eb27f04d96d49cf9de48 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 2 Apr 2020 20:23:55 -0700 Subject: [PATCH 2252/2595] create_grids() to YOLOLayer method --- models.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/models.py b/models.py index 772430f6..59dff6d8 100755 --- a/models.py +++ b/models.py @@ -134,8 +134,9 @@ class YOLOLayer(nn.Module): self.ng = torch.Tensor(ng).to(device) # build xy offsets - yv, xv = torch.meshgrid([torch.arange(self.ny), torch.arange(self.nx)]) - self.grid_xy = torch.stack((xv, yv), 2).to(device).view((1, 1, self.ny, self.nx, 2)) + if not self.training: + yv, xv = torch.meshgrid([torch.arange(self.ny, device=device), torch.arange(self.nx, device=device)]) + self.grid = torch.stack((xv, yv), 2).view((1, 1, self.ny, self.nx, 2)) if self.anchor_vec.device != device: self.anchor_vec = self.anchor_vec.to(device) @@ -179,11 +180,11 @@ class YOLOLayer(nn.Module): # Avoid broadcasting for ANE operations m = self.na * self.nx * self.ny ng = 1 / self.ng.repeat((m, 1)) - grid_xy = self.grid_xy.repeat((1, self.na, 1, 1, 1)).view(m, 2) + grid = self.grid.repeat((1, self.na, 1, 1, 1)).view(m, 2) anchor_wh = self.anchor_wh.repeat((1, 1, self.nx, self.ny, 1)).view(m, 2) * ng p = p.view(m, self.no) - xy = torch.sigmoid(p[:, 0:2]) + grid_xy # x, y + xy = torch.sigmoid(p[:, 0:2]) + grid # x, y wh = torch.exp(p[:, 2:4]) * anchor_wh # width, height p_cls = torch.sigmoid(p[:, 4:5]) if self.nc == 1 else \ torch.sigmoid(p[:, 5:self.no]) * torch.sigmoid(p[:, 4:5]) # conf @@ -191,7 +192,7 @@ class YOLOLayer(nn.Module): else: # inference io = p.clone() # inference output - io[..., :2] = torch.sigmoid(io[..., :2]) + self.grid_xy # xy + io[..., :2] = torch.sigmoid(io[..., :2]) + self.grid # xy io[..., 2:4] = torch.exp(io[..., 2:4]) * self.anchor_wh # wh yolo method io[..., :4] *= self.stride torch.sigmoid_(io[..., 4:]) From 41a002e798258114b05d0472864d330c266f0260 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 3 Apr 2020 12:38:08 -0700 Subject: [PATCH 2253/2595] grid.float() --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 59dff6d8..3ead81f9 100755 --- a/models.py +++ b/models.py @@ -136,7 +136,7 @@ class YOLOLayer(nn.Module): # build xy offsets if not self.training: yv, xv = torch.meshgrid([torch.arange(self.ny, device=device), torch.arange(self.nx, device=device)]) - self.grid = torch.stack((xv, yv), 2).view((1, 1, self.ny, self.nx, 2)) + self.grid = torch.stack((xv, yv), 2).view((1, 1, self.ny, self.nx, 2)).float() if self.anchor_vec.device != device: self.anchor_vec = self.anchor_vec.to(device) From 682c2b27e7018c1ff3aae4607c48a2f742a985fe Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 3 Apr 2020 12:42:09 -0700 Subject: [PATCH 2254/2595] smart bias bug fix --- models.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 3ead81f9..5558dee3 100755 --- a/models.py +++ b/models.py @@ -77,11 +77,12 @@ def create_modules(module_defs, img_size): elif mdef['type'] == 'yolo': yolo_index += 1 stride = [32, 16, 8, 4, 2][yolo_index] # P3-P7 stride + layers = mdef['from'] if 'from' in mdef else [] modules = YOLOLayer(anchors=mdef['anchors'][mdef['mask']], # anchor list nc=mdef['classes'], # number of classes img_size=img_size, # (416, 416) yolo_index=yolo_index, # 0, 1, 2... - layers=mdef['from'] if 'from' in mdef else [], # output layers + layers=layers, # output layers stride=stride) # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) @@ -89,7 +90,7 @@ def create_modules(module_defs, img_size): bo = -4.5 #  obj bias bc = math.log(1 / (modules.nc - 0.99)) # cls bias: class probability is sigmoid(p) = 1/nc - j = l[yolo_index] if 'from' in mdef else -1 + j = layers[yolo_index] if 'from' in mdef else -1 bias_ = module_list[j][0].bias # shape(255,) bias = bias_[:modules.no * modules.na].view(modules.na, -1) # shape(3,85) bias[:, 4] += bo - bias[:, 4].mean() # obj From eb9fb245aae0bbd4ce26abaec62582f24010345f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 3 Apr 2020 14:21:47 -0700 Subject: [PATCH 2255/2595] add support for standalone BatchNorm2d() --- models.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/models.py b/models.py index 5558dee3..88107179 100755 --- a/models.py +++ b/models.py @@ -9,16 +9,14 @@ def create_modules(module_defs, img_size): # Constructs module list of layer blocks from module configuration in module_defs img_size = [img_size] * 2 if isinstance(img_size, int) else img_size # expand if necessary - hyperparams = module_defs.pop(0) - output_filters = [int(hyperparams['channels'])] + _ = module_defs.pop(0) # cfg training hyperparams (unused) + output_filters = [3] # input channels module_list = nn.ModuleList() routs = [] # list of layers which rout to deeper layers yolo_index = -1 for i, mdef in enumerate(module_defs): modules = nn.Sequential() - # if i == 0: - # modules.add_module('BatchNorm2d_0', nn.BatchNorm2d(output_filters[-1], momentum=0.1)) if mdef['type'] == 'convolutional': bn = mdef['batch_normalize'] @@ -43,6 +41,10 @@ def create_modules(module_defs, img_size): elif mdef['activation'] == 'swish': modules.add_module('activation', Swish()) + elif mdef['type'] == 'BatchNorm2d': + filters = output_filters[-1] + modules = nn.BatchNorm2d(filters, momentum=0.03, eps=1E-4) + elif mdef['type'] == 'maxpool': size = mdef['size'] stride = mdef['stride'] From 00c1fdd805a0c6bbf07d311167abbd516ff95d8b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 3 Apr 2020 20:03:44 -0700 Subject: [PATCH 2256/2595] add MixConv2d() layer --- Dockerfile | 2 +- models.py | 22 +++++++++++++++------- utils/layers.py | 29 +++++++++++++++++++++++++++++ utils/parse_config.py | 2 +- 4 files changed, 46 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index f21cf49e..da91e035 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM nvcr.io/nvidia/pytorch:20.03-py3 # Install dependencies (pip or conda) -RUN pip install -U gsutil +RUN pip install -U gsutil thop # RUN pip install -U -r requirements.txt # RUN conda update -n base -c defaults conda # RUN conda install -y -c anaconda future numpy opencv matplotlib tqdm pillow diff --git a/models.py b/models.py index 88107179..fdde9dd7 100755 --- a/models.py +++ b/models.py @@ -23,13 +23,21 @@ def create_modules(module_defs, img_size): filters = mdef['filters'] size = mdef['size'] stride = mdef['stride'] if 'stride' in mdef else (mdef['stride_y'], mdef['stride_x']) - modules.add_module('Conv2d', nn.Conv2d(in_channels=output_filters[-1], - out_channels=filters, - kernel_size=size, - stride=stride, - padding=(size - 1) // 2 if mdef['pad'] else 0, - groups=mdef['groups'] if 'groups' in mdef else 1, - bias=not bn)) + if isinstance(size, int): # single-size conv + modules.add_module('Conv2d', nn.Conv2d(in_channels=output_filters[-1], + out_channels=filters, + kernel_size=size, + stride=stride, + padding=(size - 1) // 2 if mdef['pad'] else 0, + groups=mdef['groups'] if 'groups' in mdef else 1, + bias=not bn)) + else: # multiple-size conv + modules.add_module('MixConv2d', MixConv2d(in_ch=output_filters[-1], + out_ch=filters, + k=size, + stride=stride, + bias=not bn)) + if bn: modules.add_module('BatchNorm2d', nn.BatchNorm2d(filters, momentum=0.03, eps=1E-4)) else: diff --git a/utils/layers.py b/utils/layers.py index cb72d67b..1f19279d 100644 --- a/utils/layers.py +++ b/utils/layers.py @@ -35,6 +35,35 @@ class WeightedFeatureFusion(nn.Module): # weighted sum of 2 or more layers http return x +class MixConv2d(nn.Module): # MixConv: Mixed Depthwise Convolutional Kernels https://arxiv.org/abs/1907.09595 + def __init__(self, in_ch, out_ch, k=(3, 5, 7), stride=1, dilation=1, bias=True, method='equal_params'): + super(MixConv2d, self).__init__() + + groups = len(k) + if method == 'equal_ch': # equal channels per group + i = torch.linspace(0, groups - 1E-6, out_ch).floor() # out_ch indices + ch = [(i == g).sum() for g in range(groups)] + else: # 'equal_params': equal parameter count per group + b = [out_ch] + [0] * groups + a = np.eye(groups + 1, groups, k=-1) + a -= np.roll(a, 1, axis=1) + a *= np.array(k) ** 2 + a[0] = 1 + ch = np.linalg.lstsq(a, b, rcond=None)[0].round().astype(int) # solve for equal weight indices, ax = b + + self.m = nn.ModuleList([torch.nn.Conv2d(in_channels=in_ch, + out_channels=ch[g], + kernel_size=k[g], + stride=stride, + padding=(k[g] - 1) // 2, # 'same' pad + dilation=dilation, + bias=bias) for g in range(groups)]) + + def forward(self, x): + return torch.cat([m(x) for m in self.m], 1) + + +# Activation functions below ------------------------------------------------------------------------------------------- class SwishImplementation(torch.autograd.Function): @staticmethod def forward(ctx, i): diff --git a/utils/parse_config.py b/utils/parse_config.py index 36ea42d7..4208748e 100644 --- a/utils/parse_config.py +++ b/utils/parse_config.py @@ -27,7 +27,7 @@ def parse_model_cfg(path): if key == 'anchors': # return nparray mdefs[-1][key] = np.array([float(x) for x in val.split(',')]).reshape((-1, 2)) # np anchors - elif key in ['from', 'layers', 'mask']: # return array + elif (key in ['from', 'layers', 'mask']) or (key == 'size' and ',' in val): # return array mdefs[-1][key] = [int(x) for x in val.split(',')] else: val = val.strip() From 41246aa0427eccba5f617daed1224616fab0ffa3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 4 Apr 2020 19:34:39 -0700 Subject: [PATCH 2257/2595] tensorboard updates --- train.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/train.py b/train.py index edb6d749..6a8bd176 100644 --- a/train.py +++ b/train.py @@ -284,7 +284,7 @@ def train(): plot_images(imgs=imgs, targets=targets, paths=paths, fname=f) if tb_writer: tb_writer.add_image(f, cv2.imread(f)[:, :, ::-1], dataformats='HWC') - # tb_writer.add_graph(model, imgs) + # tb_writer.add_graph(model, imgs) # add model to tensorboard # end batch ------------------------------------------------------------------------------------------------ @@ -313,11 +313,11 @@ def train(): # Write Tensorboard results if tb_writer: - x = list(mloss) + list(results) - titles = ['GIoU', 'Objectness', 'Classification', 'Train loss', - 'Precision', 'Recall', 'mAP', 'F1', 'val GIoU', 'val Objectness', 'val Classification'] - for xi, title in zip(x, titles): - tb_writer.add_scalar(title, xi, epoch) + tags = ['train/giou_loss', 'train/obj_loss', 'train/cls_loss', + 'metrics/precision', 'metrics/recall', 'metrics/mAP_0.5', 'metrics/F1', + 'val/giou_loss', 'val/obj_loss', 'val/cls_loss'] + for x, tag in zip(list(mloss[:-1]) + list(results), tags): + tb_writer.add_scalar(tag, x, epoch) # Update best mAP fi = fitness(np.array(results).reshape(1, -1)) # fitness_i = weighted combination of [P, R, mAP, F1] From 6203340888d4ebce5b24e744a2b8594d97238c5f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 5 Apr 2020 11:05:49 -0700 Subject: [PATCH 2258/2595] detect.py multi_label default False --- detect.py | 3 ++- utils/utils.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index bf8d2e4d..7be56115 100644 --- a/detect.py +++ b/detect.py @@ -88,7 +88,8 @@ def detect(save_img=False): t2 = torch_utils.time_synchronized() # Apply NMS - pred = non_max_suppression(pred, opt.conf_thres, opt.iou_thres, classes=opt.classes, agnostic=opt.agnostic_nms) + pred = non_max_suppression(pred, opt.conf_thres, opt.iou_thres, + multi_label=False, classes=opt.classes, agnostic=opt.agnostic_nms) # Apply Classifier if classify: diff --git a/utils/utils.py b/utils/utils.py index e5a4c526..c5da3a27 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -828,7 +828,7 @@ def fitness(x): # Plotting functions --------------------------------------------------------------------------------------------------- def plot_one_box(x, img, color=None, label=None, line_thickness=None): # Plots one bounding box on image img - tl = line_thickness or round(0.002 * (img.shape[0] + img.shape[1]) / 2) + 1 # line thickness + tl = line_thickness or max(round(0.002 * (img.shape[0] + img.shape[1]) / 2), 1) # line thickness color = color or [random.randint(0, 255) for _ in range(3)] c1, c2 = (int(x[0]), int(x[1])), (int(x[2]), int(x[3])) cv2.rectangle(img, c1, c2, color, thickness=tl) From a19b1a3b94d57bfb69df02ef2ce6883f2d294157 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 5 Apr 2020 11:10:05 -0700 Subject: [PATCH 2259/2595] line thickness --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index c5da3a27..51e10da9 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -828,7 +828,7 @@ def fitness(x): # Plotting functions --------------------------------------------------------------------------------------------------- def plot_one_box(x, img, color=None, label=None, line_thickness=None): # Plots one bounding box on image img - tl = line_thickness or max(round(0.002 * (img.shape[0] + img.shape[1]) / 2), 1) # line thickness + tl = line_thickness or round(0.002 * (img.shape[0] + img.shape[1]) / 2) + 1 # line/font thickness color = color or [random.randint(0, 255) for _ in range(3)] c1, c2 = (int(x[0]), int(x[1])), (int(x[2]), int(x[3])) cv2.rectangle(img, c1, c2, color, thickness=tl) From e81a152a9206f29c514ed8346b69b96a5a96d74f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 5 Apr 2020 13:35:58 -0700 Subject: [PATCH 2260/2595] tensorboard notice and model verbose option --- models.py | 4 ++-- train.py | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index fdde9dd7..f67b4b54 100755 --- a/models.py +++ b/models.py @@ -213,7 +213,7 @@ class YOLOLayer(nn.Module): class Darknet(nn.Module): # YOLOv3 object detection model - def __init__(self, cfg, img_size=(416, 416)): + def __init__(self, cfg, img_size=(416, 416), verbose=False): super(Darknet, self).__init__() self.module_defs = parse_model_cfg(cfg) @@ -223,7 +223,7 @@ class Darknet(nn.Module): # Darknet Header https://github.com/AlexeyAB/darknet/issues/2914#issuecomment-496675346 self.version = np.array([0, 2, 5], dtype=np.int32) # (int32) version info: major, minor, revision self.seen = np.array([0], dtype=np.int64) # (int64) number of images seen during training - self.info() # print model description + self.info(verbose) # print model description def forward(self, x, verbose=False): img_size = x.shape[-2:] diff --git a/train.py b/train.py index 6a8bd176..802997ac 100644 --- a/train.py +++ b/train.py @@ -411,6 +411,7 @@ if __name__ == '__main__': from torch.utils.tensorboard import SummaryWriter tb_writer = SummaryWriter() + print('Tensorboard started at http://localhost:6006/') except: pass From d04738a27cf299ae5d6a7006eebfaccfbc74b081 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 5 Apr 2020 13:49:13 -0700 Subject: [PATCH 2261/2595] forward updated if-else --- models.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/models.py b/models.py index f67b4b54..de4ad892 100755 --- a/models.py +++ b/models.py @@ -234,9 +234,7 @@ class Darknet(nn.Module): for i, (mdef, module) in enumerate(zip(self.module_defs, self.module_list)): mtype = mdef['type'] - if mtype in ['convolutional', 'upsample', 'maxpool']: - x = module(x) - elif mtype == 'shortcut': # sum + if mtype == 'shortcut': # sum if verbose: l = [i - 1] + module.layers # layers s = [list(x.shape)] + [list(out[i].shape) for i in module.layers] # shapes @@ -259,6 +257,9 @@ class Darknet(nn.Module): # print(''), [print(out[i].shape) for i in layers], print(x.shape) elif mtype == 'yolo': yolo_out.append(module(x, img_size, out)) + else: # run module directly, i.e. mtype = 'convolutional', 'upsample', 'maxpool', 'batchnorm2d' etc. + x = module(x) + out.append(x if self.routs[i] else []) if verbose: print('%g/%g %s -' % (i, len(self.module_list), mtype), list(x.shape), str) From 968b2ec004fce0957f4c034b7ac94325261e80a8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 5 Apr 2020 14:05:12 -0700 Subject: [PATCH 2262/2595] .fuse() after .eval() --- detect.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/detect.py b/detect.py index 7be56115..f2501970 100644 --- a/detect.py +++ b/detect.py @@ -34,12 +34,12 @@ def detect(save_img=False): modelc.load_state_dict(torch.load('weights/resnet101.pt', map_location=device)['model']) # load weights modelc.to(device).eval() - # Fuse Conv2d + BatchNorm2d layers - # model.fuse() - # Eval mode model.to(device).eval() + # Fuse Conv2d + BatchNorm2d layers + # model.fuse() + # Export mode if ONNX_EXPORT: model.fuse() From a657345b4594a448c293300c31de365cece026db Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 5 Apr 2020 14:47:41 -0700 Subject: [PATCH 2263/2595] add FeatureConcat() module --- models.py | 20 +++----------------- utils/layers.py | 10 ++++++++++ 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/models.py b/models.py index de4ad892..f84da507 100755 --- a/models.py +++ b/models.py @@ -74,6 +74,7 @@ def create_modules(module_defs, img_size): layers = mdef['layers'] filters = sum([output_filters[l + 1 if l > 0 else l] for l in layers]) routs.extend([i + l if l < 0 else l for l in layers]) + modules = FeatureConcat(layers=layers) elif mdef['type'] == 'shortcut': # nn.Sequential() placeholder for 'shortcut' layer layers = mdef['from'] @@ -234,27 +235,12 @@ class Darknet(nn.Module): for i, (mdef, module) in enumerate(zip(self.module_defs, self.module_list)): mtype = mdef['type'] - if mtype == 'shortcut': # sum + if mtype in ['shortcut', 'route']: # sum, concat if verbose: l = [i - 1] + module.layers # layers s = [list(x.shape)] + [list(out[i].shape) for i in module.layers] # shapes str = ' >> ' + ' + '.join(['layer %g %s' % x for x in zip(l, s)]) - x = module(x, out) # WeightedFeatureFusion() - elif mtype == 'route': # concat - layers = mdef['layers'] - if verbose: - l = [i - 1] + layers # layers - s = [list(x.shape)] + [list(out[i].shape) for i in layers] # shapes - str = ' >> ' + ' + '.join(['layer %g %s' % x for x in zip(l, s)]) - if len(layers) == 1: - x = out[layers[0]] - else: - try: - x = torch.cat([out[i] for i in layers], 1) - except: # apply stride 2 for darknet reorg layer - out[layers[1]] = F.interpolate(out[layers[1]], scale_factor=[0.5, 0.5]) - x = torch.cat([out[i] for i in layers], 1) - # print(''), [print(out[i].shape) for i in layers], print(x.shape) + x = module(x, out) # WeightedFeatureFusion(), FeatureConcat() elif mtype == 'yolo': yolo_out.append(module(x, img_size, out)) else: # run module directly, i.e. mtype = 'convolutional', 'upsample', 'maxpool', 'batchnorm2d' etc. diff --git a/utils/layers.py b/utils/layers.py index 1f19279d..6424fba7 100644 --- a/utils/layers.py +++ b/utils/layers.py @@ -3,6 +3,16 @@ import torch.nn.functional as F from utils.utils import * +class FeatureConcat(nn.Module): + def __init__(self, layers): + super(FeatureConcat, self).__init__() + self.layers = layers # layer indices + self.multiple = len(layers) > 1 # multiple layers flag + + def forward(self, x, outputs): + return torch.cat([outputs[i] for i in self.layers], 1) if self.multiple else outputs[self.layers[0]] + + class WeightedFeatureFusion(nn.Module): # weighted sum of 2 or more layers https://arxiv.org/abs/1911.09070 def __init__(self, layers, weight=False): super(WeightedFeatureFusion, self).__init__() From bb59ffe68f3c1b7cfbe384a12cea626efb64a9cf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 5 Apr 2020 15:22:32 -0700 Subject: [PATCH 2264/2595] model forward() zip() removal --- models.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/models.py b/models.py index f84da507..557fe187 100755 --- a/models.py +++ b/models.py @@ -230,25 +230,25 @@ class Darknet(nn.Module): img_size = x.shape[-2:] yolo_out, out = [], [] if verbose: - str = '' print('0', x.shape) + str = '' - for i, (mdef, module) in enumerate(zip(self.module_defs, self.module_list)): - mtype = mdef['type'] - if mtype in ['shortcut', 'route']: # sum, concat + for i, module in enumerate(self.module_list): + name = module.__class__.__name__ + if name in ['WeightedFeatureFusion', 'FeatureConcat']: # sum, concat if verbose: l = [i - 1] + module.layers # layers s = [list(x.shape)] + [list(out[i].shape) for i in module.layers] # shapes str = ' >> ' + ' + '.join(['layer %g %s' % x for x in zip(l, s)]) x = module(x, out) # WeightedFeatureFusion(), FeatureConcat() - elif mtype == 'yolo': + elif name == 'YOLOLayer': yolo_out.append(module(x, img_size, out)) else: # run module directly, i.e. mtype = 'convolutional', 'upsample', 'maxpool', 'batchnorm2d' etc. x = module(x) out.append(x if self.routs[i] else []) if verbose: - print('%g/%g %s -' % (i, len(self.module_list), mtype), list(x.shape), str) + print('%g/%g %s -' % (i, len(self.module_list), name), list(x.shape), str) str = '' if self.training: # train From 4da5c6c1142810950bfea1e324955f4a55855277 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 5 Apr 2020 16:06:27 -0700 Subject: [PATCH 2265/2595] rect padding to 64, mAP increase 42.7 to 42.9 --- utils/datasets.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index b462aa3a..2d151f22 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -313,7 +313,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing elif mini > 1: shapes[i] = [1, 1 / mini] - self.batch_shapes = np.ceil(np.array(shapes) * img_size / 32.).astype(np.int) * 32 + self.batch_shapes = np.ceil(np.array(shapes) * img_size / 64.).astype(np.int) * 64 # Preload labels (required for weighted CE training) self.imgs = [None] * n @@ -614,7 +614,7 @@ def letterbox(img, new_shape=(416, 416), color=(128, 128, 128), new_unpad = int(round(shape[1] * r)), int(round(shape[0] * r)) dw, dh = new_shape[1] - new_unpad[0], new_shape[0] - new_unpad[1] # wh padding if auto: # minimum rectangle - dw, dh = np.mod(dw, 32), np.mod(dh, 32) # wh padding + dw, dh = np.mod(dw, 64), np.mod(dh, 64) # wh padding elif scaleFill: # stretch dw, dh = 0.0, 0.0 new_unpad = new_shape From c6d4e8033591fea67a580de97a0df269ee900fa6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 5 Apr 2020 17:14:26 -0700 Subject: [PATCH 2266/2595] move inference augmentation to model.forward() --- detect.py | 7 ++++++- models.py | 25 ++++++++++++++++++++----- test.py | 19 ++----------------- 3 files changed, 28 insertions(+), 23 deletions(-) diff --git a/detect.py b/detect.py index f2501970..25c71600 100644 --- a/detect.py +++ b/detect.py @@ -84,9 +84,13 @@ def detect(save_img=False): # Inference t1 = torch_utils.time_synchronized() - pred = model(img)[0].float() if half else model(img)[0] + pred = model(img, augment=opt.augment)[0] t2 = torch_utils.time_synchronized() + # to float + if half: + pred = pred.float() + # Apply NMS pred = non_max_suppression(pred, opt.conf_thres, opt.iou_thres, multi_label=False, classes=opt.classes, agnostic=opt.agnostic_nms) @@ -173,6 +177,7 @@ if __name__ == '__main__': parser.add_argument('--save-txt', action='store_true', help='save results to *.txt') parser.add_argument('--classes', nargs='+', type=int, help='filter by class') parser.add_argument('--agnostic-nms', action='store_true', help='class-agnostic NMS') + parser.add_argument('--augment', action='store_true', help='augmented inference') opt = parser.parse_args() print(opt) diff --git a/models.py b/models.py index 557fe187..c4a29aee 100755 --- a/models.py +++ b/models.py @@ -226,13 +226,21 @@ class Darknet(nn.Module): self.seen = np.array([0], dtype=np.int64) # (int64) number of images seen during training self.info(verbose) # print model description - def forward(self, x, verbose=False): - img_size = x.shape[-2:] + def forward(self, x, augment=False, verbose=False): + img_size = x.shape[-2:] # height, width yolo_out, out = [], [] if verbose: print('0', x.shape) str = '' + # Augment images (inference and test only) + if augment: # https://github.com/ultralytics/yolov3/issues/931 + nb = x.shape[0] # batch size + x = torch.cat((x, + torch_utils.scale_img(x.flip(3), 0.9), # flip-lr and scale + torch_utils.scale_img(x, 0.7), # scale + ), 0) + for i, module in enumerate(self.module_list): name = module.__class__.__name__ if name in ['WeightedFeatureFusion', 'FeatureConcat']: # sum, concat @@ -256,9 +264,16 @@ class Darknet(nn.Module): elif ONNX_EXPORT: # export x = [torch.cat(x, 0) for x in zip(*yolo_out)] return x[0], torch.cat(x[1:3], 1) # scores, boxes: 3780x80, 3780x4 - else: # test - io, p = zip(*yolo_out) # inference output, training output - return torch.cat(io, 1), p + else: # inference or test + x, p = zip(*yolo_out) # inference output, training output + x = torch.cat(x, 1) # cat yolo outputs + if augment: # de-augment results + x = torch.split(x, nb, dim=0) + x[1][..., :4] /= 0.9 # scale + x[1][..., 0] = img_size[1] - x[1][..., 0] # flip lr + x[2][..., :4] /= 0.7 # scale + x = torch.cat(x, 1) + return x, p def fuse(self): # Fuse Conv2d + BatchNorm2d layers throughout model diff --git a/test.py b/test.py index e41f998f..9e03c051 100644 --- a/test.py +++ b/test.py @@ -88,26 +88,11 @@ def test(cfg, # Disable gradients with torch.no_grad(): - # Augment images - if augment: # https://github.com/ultralytics/yolov3/issues/931 - imgs = torch.cat((imgs, - torch_utils.scale_img(imgs.flip(3), 0.9), # flip-lr and scale - torch_utils.scale_img(imgs, 0.7), # scale - ), 0) - # Run model t = torch_utils.time_synchronized() - inf_out, train_out = model(imgs) # inference and training outputs + inf_out, train_out = model(imgs, augment=augment) # inference and training outputs t0 += torch_utils.time_synchronized() - t - # De-augment results - if augment: - x = torch.split(inf_out, nb, dim=0) - x[1][..., :4] /= 0.9 # scale - x[1][..., 0] = width - x[1][..., 0] # flip lr - x[2][..., :4] /= 0.7 # scale - inf_out = torch.cat(x, 1) - # Compute loss if hasattr(model, 'hyp'): # if model has loss hyperparameters loss += compute_loss(train_out, targets, model)[1][:3] # GIoU, obj, cls @@ -250,7 +235,7 @@ if __name__ == '__main__': parser.add_argument('--task', default='test', help="'test', 'study', 'benchmark'") parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') parser.add_argument('--single-cls', action='store_true', help='train as single-class dataset') - parser.add_argument('--augment', action='store_true', help='augmented testing') + parser.add_argument('--augment', action='store_true', help='augmented inference') opt = parser.parse_args() opt.save_json = opt.save_json or any([x in opt.data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) print(opt) From b70cfa9a297e77f738774ee3ed87e235a5321e84 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 5 Apr 2020 17:18:24 -0700 Subject: [PATCH 2267/2595] mAP updates for rect inference 64 commit --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 6cdcd40c..c3550840 100755 --- a/README.md +++ b/README.md @@ -122,10 +122,10 @@ Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' |Size |COCO mAP
@0.5...0.95 |COCO mAP
@0.5 --- | --- | --- | --- -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |320 |14.0
28.7
30.5
**37.6** |29.1
51.8
52.3
**56.8** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |416 |16.0
31.2
33.9
**41.1** |33.0
55.4
56.9
**60.7** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |512 |16.6
32.7
35.6
**42.7** |34.9
57.7
59.5
**62.6** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |608 |16.6
33.1
37.0
**42.9** |35.4
58.2
60.7
**62.6** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |320 |14.0
28.7
30.5
**37.7** |29.1
51.8
52.3
**56.8** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |416 |16.0
31.2
33.9
**41.2** |33.0
55.4
56.9
**60.6** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |512 |16.6
32.7
35.6
**42.6** |34.9
57.7
59.5
**62.4** +YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |608 |16.6
33.1
37.0
**43.1** |35.4
58.2
60.7
**62.8** - mAP@0.5 run at `--iou-thr 0.5`, mAP@0.5...0.95 run at `--iou-thr 0.7` - Darknet results: https://arxiv.org/abs/1804.02767 @@ -154,6 +154,7 @@ Using CUDA device0 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', total_memo Speed: 21.3/3.0/24.4 ms inference/NMS/total per 640x640 image at batch-size 16 ``` + # Reproduce Our Results From 4f6843e2492ea233454624a69a15d5b341700bbd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 8 Apr 2020 12:28:10 -0700 Subject: [PATCH 2288/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 72e67588..3eddb784 100755 --- a/README.md +++ b/README.md @@ -155,7 +155,7 @@ Using CUDA device0 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', total_memo Speed: 17.5/2.5/20.1 ms inference/NMS/total per 640x640 image at batch-size 16 ``` - + # Reproduce Our Results From 8f71b7865b28474872a005cddc1476125565ce3e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 8 Apr 2020 20:43:51 -0700 Subject: [PATCH 2289/2595] run once to remove initial timing effects --- detect.py | 1 + test.py | 1 + 2 files changed, 2 insertions(+) diff --git a/detect.py b/detect.py index 25c71600..97eccd48 100644 --- a/detect.py +++ b/detect.py @@ -75,6 +75,7 @@ def detect(save_img=False): # Run inference t0 = time.time() + _ = model(torch.zeros((1, 3, img_size, img_size), device=device)) if device.type != 'cpu' else None # run once for path, img, im0s, vid_cap in dataset: img = torch.from_numpy(img).to(device) img = img.half() if half else img.float() # uint8 to fp16/32 diff --git a/test.py b/test.py index 9e03c051..164a580d 100644 --- a/test.py +++ b/test.py @@ -70,6 +70,7 @@ def test(cfg, seen = 0 model.eval() + _ = model(torch.zeros((1, 3, img_size, img_size), device=device)) if device.type != 'cpu' else None # run once coco91class = coco80_to_coco91_class() s = ('%20s' + '%10s' * 6) % ('Class', 'Images', 'Targets', 'P', 'R', 'mAP@0.5', 'F1') p, r, f1, mp, mr, map, mf1, t0, t1 = 0., 0., 0., 0., 0., 0., 0., 0., 0. From c7f5b6cc216208ab5f8d51d6be9de86bf0451e96 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 8 Apr 2020 20:53:17 -0700 Subject: [PATCH 2290/2595] speed update --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3eddb784..cc15a917 100755 --- a/README.md +++ b/README.md @@ -153,9 +153,10 @@ Using CUDA device0 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', total_memo Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.719 Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.810 -Speed: 17.5/2.5/20.1 ms inference/NMS/total per 640x640 image at batch-size 16 +Speed: 17.5/2.3/19.9 ms inference/NMS/total per 640x640 image at batch-size 16 ``` - + + # Reproduce Our Results From 4120ac3aa685969ea3f729b1b127bbb72a16de7f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 8 Apr 2020 21:01:58 -0700 Subject: [PATCH 2291/2595] training updates --- train.py | 6 +++--- utils/torch_utils.py | 2 +- utils/utils.py | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/train.py b/train.py index c4629f36..6c204b7f 100644 --- a/train.py +++ b/train.py @@ -209,7 +209,7 @@ def train(): # Start training nb = len(dataloader) # number of batches - n_burn = max(3 * nb, 300) # burn-in iterations, max(3 epochs, 300 iterations) + n_burn = max(3 * nb, 500) # burn-in iterations, max(3 epochs, 300 iterations) maps = np.zeros(nc) # mAP per class # torch.autograd.set_detect_anomaly(True) results = (0, 0, 0, 0, 0, 0, 0) # 'P', 'R', 'mAP', 'F1', 'val GIoU', 'val Objectness', 'val Classification' @@ -234,8 +234,8 @@ def train(): targets = targets.to(device) # Burn-in - if ni <= n_burn: - model.gr = np.interp(ni, [0, n_burn], [0.0, 1.0]) # giou loss ratio (obj_loss = 1.0 or giou) + if ni <= n_burn * 2: + model.gr = np.interp(ni, [0, n_burn * 2], [0.0, 1.0]) # giou loss ratio (obj_loss = 1.0 or giou) if ni == n_burn: # burnin complete print_model_biases(model) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 34ebfe65..5819e68e 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -149,7 +149,7 @@ class ModelEMA: self.ema = deepcopy(model) self.ema.eval() self.updates = 0 # number of EMA updates - self.decay = lambda x: decay * (1 - math.exp(-x / 1000)) # decay exponential ramp (to help early epochs) + self.decay = lambda x: decay * (1 - math.exp(-x / 2000)) # decay exponential ramp (to help early epochs) self.device = device # perform ema on different device from model if set if device: self.ema.to(device=device) diff --git a/utils/utils.py b/utils/utils.py index 51e10da9..4a1a07ab 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -688,11 +688,11 @@ def coco_single_class_labels(path='../coco/labels/train2014/', label_class=43): shutil.copyfile(src=img_file, dst='new/images/' + Path(file).name.replace('txt', 'jpg')) # copy images -def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(608, 608)): +def kmean_anchors(path='../coco/train2017.txt', n=12, img_size=(320, 1024)): # from utils.utils import *; _ = kmean_anchors() - # Produces a list of target kmeans suitable for use in *.cfg files + # Creaters kmeans anchors for use in *.cfg files from utils.datasets import LoadImagesAndLabels - thr = 0.20 # IoU threshold + thr = 0.225 # IoU threshold def print_results(k): k = k[np.argsort(k.prod(1))] # sort small to large @@ -709,7 +709,7 @@ def kmean_anchors(path='../coco/train2017.txt', n=9, img_size=(608, 608)): def fitness(k): # mutation fitness iou = wh_iou(wh, torch.Tensor(k)) # iou max_iou = iou.max(1)[0] - return max_iou.mean() # product + return (max_iou * (max_iou > thr).float()).mean() # product # Get label wh wh = [] From d1601ae0f31de5a8b0a273a6a1d04ca172e7acd8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 8 Apr 2020 21:34:34 -0700 Subject: [PATCH 2292/2595] training updates --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 6c204b7f..5c470e3e 100644 --- a/train.py +++ b/train.py @@ -209,7 +209,7 @@ def train(): # Start training nb = len(dataloader) # number of batches - n_burn = max(3 * nb, 500) # burn-in iterations, max(3 epochs, 300 iterations) + n_burn = max(3 * nb, 500) # burn-in iterations, max(3 epochs, 500 iterations) maps = np.zeros(nc) # mAP per class # torch.autograd.set_detect_anomaly(True) results = (0, 0, 0, 0, 0, 0, 0) # 'P', 'R', 'mAP', 'F1', 'val GIoU', 'val Objectness', 'val Classification' From bc74822540d9e77ec71816980022a7f134ea411c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 9 Apr 2020 14:33:24 -0700 Subject: [PATCH 2293/2595] notebook update --- README.md | 2 +- tutorial.ipynb | 495 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 496 insertions(+), 1 deletion(-) create mode 100644 tutorial.ipynb diff --git a/README.md b/README.md index cc15a917..249bd739 100755 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ All dependencies are included in the associated docker images. Docker requiremen * [Train Custom Data](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) < highly recommended!! * [Train Single Class](https://github.com/ultralytics/yolov3/wiki/Example:-Train-Single-Class) -* [Google Colab Notebook](https://colab.research.google.com/drive/1G8T-VFxQkjDe4idzN8F-hbIBqkkkQnxw) with quick training, inference and testing examples +* [Google Colab Notebook](https://colab.research.google.com/github/ultralytics/yolov3/blob/master/tutorial.ipynb) with quick training, inference and testing examples * [GCP Quickstart](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) * [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) * [A TensorRT Implementation of YOLOv3-SPP](https://github.com/wang-xinyu/tensorrtx/tree/master/yolov3-spp) diff --git a/tutorial.ipynb b/tutorial.ipynb new file mode 100644 index 00000000..7da272bc --- /dev/null +++ b/tutorial.ipynb @@ -0,0 +1,495 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "HvhYZrIZCEyo" + }, + "source": [ + "\n", + "\n", + "
\n", + " \n", + " View source on github\n", + " \n", + "\n", + " \n", + " Run in Google Colab\n", + "
\n", + "\n", + "This notebook contains software developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information please visit https://github.com/ultralytics/yolov3 and https://www.ultralytics.com.\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "colab_type": "code", + "id": "e5ylFIvlCEym", + "outputId": "fbc88edd-7b26-4735-83bf-b404b76f9c90" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "PyTorch 1.1.0 _CudaDeviceProperties(name='Tesla K80', major=3, minor=7, total_memory=11441MB, multi_processor_count=13)\n" + ] + } + ], + "source": [ + "import time\n", + "import glob\n", + "import torch\n", + "import os\n", + "\n", + "from IPython.display import Image, clear_output \n", + "print('PyTorch %s %s' % (torch.__version__, torch.cuda.get_device_properties(0) if torch.cuda.is_available() else 'CPU'))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "7mGmQbAO5pQb" + }, + "source": [ + "Clone repository and download COCO 2014 dataset (20GB):" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 221 + }, + "colab_type": "code", + "id": "tIFv0p1TCEyj", + "outputId": "e9230cff-ede4-491a-a74d-063ce77f21cd" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cloning into 'yolov3'...\n", + "remote: Enumerating objects: 61, done.\u001b[K\n", + "remote: Counting objects: 100% (61/61), done.\u001b[K\n", + "remote: Compressing objects: 100% (44/44), done.\u001b[K\n", + "remote: Total 4781 (delta 35), reused 37 (delta 17), pack-reused 4720\u001b[K\n", + "Receiving objects: 100% (4781/4781), 4.74 MiB | 6.95 MiB/s, done.\n", + "Resolving deltas: 100% (3254/3254), done.\n", + " % Total % Received % Xferd Average Speed Time Time Time Current\n", + " Dload Upload Total Spent Left Speed\n", + "100 388 0 388 0 0 2455 0 --:--:-- --:--:-- --:--:-- 2440\n", + "100 18.8G 0 18.8G 0 0 189M 0 --:--:-- 0:01:42 --:--:-- 174M\n", + "/content/yolov3\n" + ] + } + ], + "source": [ + "!git clone https://github.com/ultralytics/yolov3 # clone\n", + "!bash yolov3/data/get_coco_dataset_gdrive.sh # copy COCO2014 dataset (19GB)\n", + "%cd yolov3" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "N3qM6T0W53gh" + }, + "source": [ + "Run `detect.py` to perform inference on images in `data/samples` folder:" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 477 + }, + "colab_type": "code", + "id": "zR9ZbuQCH7FX", + "outputId": "49268b66-125d-425e-dbd0-17b108914c51" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Namespace(cfg='cfg/yolov3-spp.cfg', conf_thres=0.5, data='data/coco.data', fourcc='mp4v', images='data/samples', img_size=416, nms_thres=0.5, output='output', weights='weights/yolov3-spp.weights')\n", + "Using CUDA with Apex device0 _CudaDeviceProperties(name='Tesla K80', total_memory=11441MB)\n", + "\n", + "image 1/2 data/samples/bus.jpg: 416x320 3 persons, 1 buss, 1 handbags, Done. (0.119s)\n", + "image 2/2 data/samples/zidane.jpg: 256x416 2 persons, 1 ties, Done. (0.085s)\n", + "Results saved to /content/yolov3/output\n" + ] + }, + { + "data": { + "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYF\nBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoK\nCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCALQBQADASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD8347F\n5pkSP5t38P3ttaFjZzR2rzOMjfs+/wDNVi10+5kh877Gqv8AwfP96tOz0+2b99sw0e1drfxV87HY\n+wjHm94z4bOZ2WZ4dgV9vzN81Tx6a8jHvu+bd/DV+HT51uHd0Up95Pl21bhtfIkH2ncqfN8q/e21\nNS0dUbU4/ZMf7Oi52OzMu1UVU+an/wBjlW3w7l2t8y/3q3pNPRl2I+1tn/AqZZ280cXk3Nrub+7v\n+6tefKtLl5onZGm48qMqbQ3k/wBJeb5lb5PMf5l/2aZcaW6tshhyzffZn3ba3biHzI5USFfmX7tQ\nyWc3zTXltuWPb+8jT+LbXJWxVWO534XDxkchrmm/KZt+d3yvurBm0maHLvu2su1G/vV3OsWsMe5x\nyWTd5bVh3VikkLJ5Pyqu7b/easaNacX7x6nsYyicrJYws3nom1m/vf3qWC3uYW32zr8v95v/AEGt\nK6s5I9iJuDMu51aq62827502Nt3Jur6zAylKUTlqREj+0wsiI7OzNuRW/wBr+7ViSPy4/wBzud9+\n1vm+Wq0aurIJtxdf4qtLayeX8nyusu5mb+KvqMPSlKJ58qnvco65uHaNpvlTdt2fJ8y0kjSbER3V\ntq7tzJtqbyPtDLDNtx96nTKjR/Ii7t38X3a9D2fKebUkoy5SHyXjnP75l/i/3amSSVm+0v5joqbf\nv/Ky/wB6i3/fRrv+9911j+6rUsMMuxvJufu/fXZXPKXLE4OaUuaxPBv3b9n+r/hjl3LVqH9zJ/qV\n2t823/eqtbwpHGkP+qVn+dY/l/4FVuzZLqRI5plV13b12fdX+GvLxHvF04825p2cm1Ucopdvl+V9\ntaVvDcSSK6fd+ZXrN0+GGS637F+V1aXd/d/hq7b75mX51Db9zMr/AC/7Py14WIqSNadHuaVjNLJC\nsP2pmTfuddvzNU8jO3yQ7X2/e/iaq8IeGNPLRW+bbu2fdq95n2OZXhhV2b5V3V4dap7+h6VOnHqW\nob792yI6o6orfLVCZJpPnudrBf4v97+KpmuIWmDzTKsrfdXft+7VCS5dpmR5o3/vq392uJSjztQO\nlx928hzbIZXSFFLs7fMqf6yopmubzY63jIVb7qrU32OGSP8AhRPveXHSyKluy/J975VXf/FWkqnN\nqLk5fdEntdy/3vl2eZs/76pU3yQyJsYeX8if3lqwsE0iy2zzfuvl/d/7VVr6O6WTf8yfe/d7/u1n\n71TRSMK0R8d1cxwrvRQv3dzfdWoprp75hNc3cjtHtSLzG+61OaGaS3RJnV1+88bVVkkRlKWtthlf\n+GspRhKRjH3Y8rKuoXtvHteN8qy7X/vVga9cXisrpcthkVfm/u1pXk00zAu+R/d/utWDq14+5n34\n2/6rav3a78PFRj8JyVqhj6lM/wC8+8f/AB3dXManN82/fjd/CtdBqW+4bM0/Gzc1Yd48Pls/Vm+X\nb/FXsUYy5NDxsVLmiYF9avt+07F21QVXmuNmzb/utW9cWbyR56hVqnHp7rMJvJ8xK9CnKMeU82T5\nhljlWZE3fN9//ZrodI3x7ntn+Rk2srfM1V9N03bGOdu7/wAdrVhs4I5BGiMk0f8ADJ8tEqhrToz+\nI1NLtUinR9+fLf5F/wDsa7bQZnjwibU2/N+7X5VrjdH/AHKxBE3f367TRZE+x7E2/wB1dv3mqo1P\nfOj2fuWOu0W4k+ziF5sOzfxfw11ui6uNyu6Mrqu1/Mfb8v8As1wWk3KOuy28xVVvnb+7W/puqQxs\nU3/eiVmj+9XZGpzmMoyj8R3Wn6kQN8Myh1f/AEfb93/eatXT9am8ve+1vvbmrgrHWd0iXOcFfl3L\n/F/wGtCHxB5K+d8wSR9qKq/M3/Aa6OYw9+J2q69C3zpZttX5Ub+9/vUybV4IYd+//WbtzL/Ctcqu\ntbYf3fmHc+1/mqvcawk3ybJCu/b9/wC9U/DAfunT/wBtusCv0/2d/wDDWbqGuosbO8jEt91tvyst\nYN9q226ldH2xtt8qNX3f8B3VVvtUm2l3TLsnzLu/i/hqJRjI25vslPxRNDdZm85iv3fLb+GuMvJ3\ndXR/uK23/erW1PVHuomQXLFpJfkZvur/ALNZGqQ/aFb5G+V/3sa1x1I8x0UeaOjOa1SG2ml85Pv/\nAMO5vlWqtvbupYOmPLf5d3yturcbTkjdt6Mxb/lm38NQXWnpJcM8iSO38Un8K1nKn7p2RqQ5tTPW\nFJpD5czIn97726mTWVzIHfez+Z/yz/vVZa1eSTZDCqqqNu+fbSLYwzRuXhxufd9/71cNSnI0lUM2\nSN1CwpMuyT5tv/stJbxurI/nL+8ba0cn92tXybaOSHyYfuxbtrN8v3qq3Eltu+0+T86tt+VK5q1P\n3tCoVOXWRbtWdcoltv2tu2t8u6uj01na3TZuAVt27+61YNu7s0jzbWlb5U/hrQ0+aGObzo3bzl+X\n7/y7q+Ox1GXNKTPewtT4ZI7LT2T/AFM03mt8q7v4a0WuvLUI+6H5v9Wvzbv+BVzVnfTeSH/55q25\nd/3m/wBmp/7UdpI+Nqt8rbWr5DEYeUqp9DRrfDzG5cXySsN9zuVot6qybvu1m3mpRrD5iO0KSRbv\nlf5aqSal8zbNuPm2/J8q1Uk1QSM73KKrrF8nlr8u6tKOHUZe8dvtOhPeahD5yc7v3X975t1Zs0zr\nsfo2/wCZW/h/4FS3F4jKkEyMXX5X3fdaqzLBNJscrsZNqqv8NexhcPGPuozqVOWHKJe+c0hf7Tv3\nfL8tVri3DSPD9pUyr/F91d1aEljH/wAvMylG+4yp91aktdPeRc+Tv+f5fk3V9XluH5dTwcdiIx+0\n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\nvn8zZsVQ331rqpxkfP4rFc0C2s/nRsgdgrfw02OQM3kTOqt81Uo5jAm9HXYrVKt09w29H+Zf/Hq6\n4xPm8VWjI0beR1ZXebFaFu6Kqv53y/x/7VY+nnzGdH/v7fv1q2UcMi42ZVf4auPvfEeTKsadnI7f\n3lVtvzLWtp6vcSNvfd/C+5vvLWdpsMfmb4YeG2/NJW1pdn/HNGuF+7toiebKpzGvZWc0kTfOoST+\nFfvV0+l2u2ON/wB5Ky1l6HYv8joinau35v4a6Tw7ZpbrsuYV2xr83z/dqjGUjf0uzRVTemNybkX+\n7WvZWjyLseHLM27dHTNDs5PLjSG227k3L/tV0ljYoy7Id29VbfuSuj4jn9oYk1ik0Lby2Nq/L/da\npnsYWjWHft+Xc6t/C1a0ejzTbYZodu7+L+GoptPdZGd9yfwfK/zbaXL9o6aMvfMWKzmaQXPzOW+X\ndv8Au7aelj/pBmmm2CTbv/vbavrZpC3k23mfvP4ZPvLUV1Y7YV8t8lU+6y1Mox5eY97Cy90z9Qs7\naRlmRGdftG1Gb+H/AGq5vWtPmWRtk38X3lauwuI4f40k2/wMv96uY1SL7Ll9i/MzfKrbvmpxjCXv\nHvYaPwqR57r1i80LzQv5yM3yM3/oNcT4k099zJvY7vl+X71eoeIIdyt8jL8/7pv7tcZrln50bokb\nfL8yNXJWl/MerHC83vHtWnw20Ku8ybx5v3l+8rVLbxPcM6eTH5SuzRMvysrVWguIFZjZupSNvvMv\n3m/+Jqe3vv8ASPJ+zM+1V3V40Y8sD572nKX7G1eNv9JRX+Xcn8VaMLQyKfJf+DaisvzL/wACrPju\nPJbY8n7pn3LGqfd/4FV6Fu1y+EVdyN/tV59eT/lO6lU5pXEuo4VkKPtY+UqusbfN838VRR2rxyK7\nuwZanuJE+0OkiKX2b/lT5ZGpjWyKrnyVf+P5W+Va4qlSUdz0Kceb4RtqsMzTb4ZG3S7fJb/0Kh7X\na4he58pG/wBarN92kjj3fvnTciozOq/LtqaKGCSM74ZHf76/L/s159SpyzPQox9zmMKSzS8mm8l1\n+V9sUjferOuLeSa4NzsyVXbu+X71dFfQzKpuUmhXbKvy7KzJreGNXTyV+aqo83tTo5onNXivDIzu\nq4/gbZ92sjyUuJNjzSbYfufPXVala/u96bvu/MrL/DWDcaanyv5ap8vyf3mr7DLeaMtTGpy/ZKK2\n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\n91Ur6Wn8B4GKrTj8RXW3dbcTO6kr/wCg1T1DYq+c83nBk+6q/NurUkXylTyYdi7W+bf97/erM1KO\nTzGhkddq/fVfvLXVznjS/eTKU0yRqiOjK23bu30xmRZHh85W3Ju3NTm2Qwsm+NV3/Kzfw/7NUJIJ\ntu9Eb7tYVqnLA66VHl91FqzmEkgR3+Vm27Vras1SNv3j7hs+da5+GN1WJH/v1rWsiLMEdGRf7zfN\n8tfO4yoviieph6b/AO3Td09vLVN9xwv/ACz21pwyP5n+uVdv8TN93/drHt5h5KnzlVt38X92rX2j\nY3zzZSTn/a2/7NeBiKnMe1Rp0oxsaDfvo2R3X73+81PmvppJnhRI1T5W/efN8u2srzh9jHkzMj+b\ntVmX+H/drQW8dbcojq7sirukrzub3To9n7pct5NyiH5Xb7q/JVi2uFmkV7l8+ZFsX+8u2qNuqSXH\n3Nu1/l2/K27b96tGG1/ePO9z8nyq7L92n8RxyjOPvGlpsbtbrBvU7fm+arG2aO5EiOy7m+6v8W6q\n9v5MS+T5Ko+5W3M//stWVtX8z9zI29kb5aJSl8jGMPaTlcfFb+Wzw79219u6RtzK1CrBJGs002W+\n98qfK1TKUlVXmTZ8q7lX+Ko2t7xWZ3s1Rvv/ADP96s5QjHYdpcvKQNcwzWr3Lwsqqm75fvVZ+yws\np/cyB9n3f4qdHJMd6OmPlX5VT5mplwlzbyJNs27tv7xX3NWkY88uU5a0fd1MTUJLPS4d6I2WT59y\nbtrVz2oD7ZI3+jNuX+JvustdLr8b3FwbyHa6q+1/nrmtQjhj3Qr8r7PutXp4enzR0ieFiJc0vdMG\nSNGmfy0+79xtlV5rP9800O1/78f8X+9WtdbJMujx/c+ZlWqSq8LP8/zfdx/Etepy/ZPPqSIPLmk+\nSH+/tl8xKm8sTWod4WdN38K09Y3bHljcy/f/ANqrNrF9on8ma8YBf7vzbf8AgNHs/dLoy5oFTyxt\n/fQqd3ysrfLt/wB2q7WKRxtvRn3N/vbq2pFSZg8Kb1Vtu1v4mqvHY/vS8lsqH7zyRvUS9064/EUd\nPs/vIYedvyK38NXYI/KjdJY1wzUW8yfczj/aX/e+7UazPbt5PzP5bbvm/u1hGUo/CdX2UmWW85t0\nyfMi/f2/LVnT7qG3j2I+FX/lnJ/DWbDJNcyM7pl2b5Pn+X/vmq8175LedPNhfu/NXXRqSOSpH+U2\n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\nG3aT52R2/iZ91WbG4ubxU3oqtCnO3+L/AHqY0aeYfk4/jVk3bqs2qouxLby3Zv7v8VaSj9k5o80f\neiXFluYIymzfuRmVm+XbVG6uEudnyMv97/7KrtxJPas1siKdy/8AAf8AdqqzblPz7W+8i/3v9mue\nVOJ3U6k46kdmm6B3dF3btqN/eqK3kht0875R95UVnqeOzdW++q+Z8ybX+7VW4tXaFvO279/+r27d\n1cUjujIja82qZktpB/eX7u3/AGt1Z1zN5zNsmbcz7nXbuq81unk/vofvJ8se/wC9WfcRurb0fau/\nbtq6fu+8jOt7xUk1B1WTyfM/up822rljefbEV9/+rX+5urMurV2kXzo96t/E33VatDSLd7WPyfJb\n5fl3b91d9OUZHl4j3S6slzcXH+kou35WRo/vbq19PsXk8rO0r/dZfm3VX0ux8xvnRiy/Kir/AAtW\n7b2rtdxfeP8A0zVf4v8Aarsp7nl1JGjpOmuqrMjrI392T/2Wu/8AC+gyTQpC8LItx/qtz/d/2mrn\n/C2hwrIp34+TcsjMv3q7nw3pqN5Oy6jl8tNyK33V/wBmu6MfcMpS5Td8N6Gka/cXK/K7L826uisd\nFSOTzrN87n3IzfK3/Af71L4ftk+WZIWXyU27W+827722uv0vT7NcTW0PzKu6L+L/AHq1j/eMJVDH\ns9DeNkm/eMy/f3Nt+WrUfh547dtu75XZvMjeunsdLSZRvh3rJ8u3f81XLXQvs9u+9Pn3/wASfLU+\nzjIXtDgtQ8L7Zg8N43zbnZpG/iZawbjQ3tVXy0/1f3F3bt1el6l4fmkm+eH5W2q9ZWoeH/L/AHz2\n0brH9xlT5ttPllFEfWOb3Ueb3Wg+XC37nfF837uT7y7v7tULjQ4Zt3yZVf4ZE+9/vV6LeaO8kISZ\nFVlRvvJ/3ytZF94deOMTb13qittWplTgP2nvcqPPrrQ/OVXhkZEVf7tVL7RUmj/cvuZfvrurtbrS\n38mS1/eK33vm+6tZFxZ+XDJDZ7mf+8y/w/3q87EUzuoyOUuofJDQ+S26T/Wt/wAtG/3agns3jkUz\nOySRp8n8Lba2ptNRsXj/ACvv2hZPl3VUvkdt0z/Kd+xdr7lrxsRRly+6e3h6nKUP7NhkjZHm3CRP\n4W+VmWkRfsrRW0MbDzPm3ebtWpNQ+ztH8kOxpG3Oq/doS+RpNko/65K391axpYfm3Oz238pdt7N9\n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\nO/i/vf3dtZ95dfaIVhtvn8v5mVlr0InDUo80TOW18tok8n5pP+BLS2qwySb4XVhu2eY3y+XSsqeY\nzo+Fb5f+BVFBM+4QuVVt252at/sHNKny6lqa3gVfJR2O7/x6k+xp5aOk27/Zao4ZJo7jydmdvzKz\nJ8rf7NWLFXZGhk25b7lY1Iy5CqPuysxzWKXEJTydq/eVaoXcP/Lbeu/+8zVqws8MZePlGfb81Ubq\nNFYQfNmvN5pRm7ndy/CZkmn3KIj71/iXa3zMv+1UNxp6bvJ+6rfwtWxb27+YvnJt+b7qru3U8Wby\nO/7lTHH8q/J8u2p+1Y1lH3eYxI9D3KEtvL2bmbbJ/D/u1paboMKyqgfJXa0XyfM1ai2KK290/wBc\nvybl3eXWja2Hl7NkLfwrtrqjzR2PLxEeYraXob2uLqZGdvvLt+Xa1bGj6Sizfvty+Z9/5Pu1Lpun\npuKQwfOu5vmb5dtbGm2aSGLfCzIvy7d6/N/vV6VH3Tx60eXcvaRZWzTJMiRukfy7v4dtdv4ftkWN\nXt/lVvm+X5ttY+m2MMe1Lb54ViX5tm75v7tdh4fsbbzYXg+UMvzf7VenH4DzK0v7x1GhrN5imZGd\nfN+TdXa6LbwxRmFIWV9n+98tc34dVI5IYXm2szfIv3v++v7tdzp9ukE3/HzJumi2+Yq7q15TjlKW\nxcs9Lgjj+zQpG0m1d8n8W2tLb5luk3kqzeVsfcvy/wC9/vUy3tbbcPvff27l+XctXriFI7dnR8hf\nl8ur92RMako6uRz0kE0yO6RYfd8m7+7/ABM1Z91paLJK6QsRvXdt+6tdHLY+cuxEb7m5vmqnNbwL\n++N4ybk3P/wKp+EdOXNPU5TVNMhmf/j2yypt3M/ytWZe6akcOy3dUSRdv3/u/wC9XUSWPnMsPRPm\n+Zv4m/vVi6pDNbnzoX2DY33f4f8AaaspbnXTp+9zHI6lZ/vvn8tmX77bNq/7O2sK+08Nu2IrTN/d\n+XdXW6zsmt08yGNPM3bJNlYOoWm5WSaHZ8v3o5f/AB6uKodtPc5XVLMNl0TL7W+X/arCvLWGORUT\na3l/Nt/2tv8A47XXalb2DRvD58yFU3K0fy/N/drC1iz25d9qSfefdXnVNzvoylE5uaFI5vO+VGb5\ntrS7qVrBHUpv81YUVt38S1eutPS4vI9/Kr9zau2oGi+xvsfzNzfLtX+7/vVivdj7x3RlIns2SMtb\n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\n393zLtqzp9r5yoj8srbn2ptatJbWf59+7ayr5TbPlq3baO903n21h5rTJ+9k37a6nhf5jj+tdYme\ntvcs0qWzrGiy79u/5VWrEem37R8WzNFG/wAjf7O3dW9a6M93a/Y4eNsS7f73+7Wuvhua3t0RIcBl\n+8ybmWulYWO6iZ/Wub4jgLrTZplfYnyx/K8f3GX/AOKrIvtFSa6WdIVDNE37tv4a9Pm8N2zfunSP\n5U+by/vVmXmgpIXZIVUK6/M3y/ereOHN6dblhyyPOW02ZmX7TDGhX5vMX5qik0l7ryZEfD797Kv9\n6uuuvD940bJNBmL5t6x/eaof7F8pQ7wqfk2rG1dEafLLQ1jaUTiNW093Xy9/H3W/vVjXXnWse+GF\nflf96rV2uraLcyXCfaU2/J80kf8ADXO6lb2zSPDMm4bl+8vzM1acvML4b2OcvJYdzzfc2/8ALP72\n2qYW2WZnmm+T+Nlf7vy1q61YJaxl3mUbpVX5fvNWHJcTsxtrNMbvmRtm5dv8VLm5jCpHmNFdjTBE\ndgrLtdo2+Vammme1tWT7Sy/N+63LurJsbqcyL86k7vnX+9VxZHWNn8ltzN97d93/AGawlHuc3uxi\nW5Lzasczool+6/8Atf8AxNX7fWJoWFmlziRf4f73/Aqwn1Ldsd03Lv3Mqp93/ZqzDeQtGzojfK+3\nb/CtedUpx59TSNTrE3ZLzbbh5pvnki+997bR/aM3lnei7/8Anmr/APs1ZjXXlL5cKZiVF+9821aR\nbyeaRnRFdpPvt/DUU4zJlLlNL7a8kozt+XdvZf8A0GtDT5t0K3LzfL/tPWJY3XmIUwqf8D+61aOn\nxJN5X3d+1tq/7VehRX948utLlN21V1kkkvHj2fLs2/7tXdLjfzmd4chfk+b7sf8AtVjW83lxhPPz\nu+/H/Fu/vVs2u+ZDM8zP86r8qbd1eth4nj4iUZbnUabsZkj3/M3ypu+Wur0e4S1kRIZv9Yn3m+Wu\nO0ny5LtIZH+dfli3fxVp6ffIMJOke3ft+b5q9OMfcPFrSlGVz0XR791txNG+3b8u5v4q7LQb+aNX\nud+Ek2/w7v8AgNeX6HqyfZd8nlqI3VX/AL3/AHzXVaLrkELOm+QKyfPItEo+7YzteVz0GHWnjuok\n+Xav31/9mrSXWoVUbHjmb73l7vvVwNj4gs7phZ3LyMyxM0TKny/8Cq3a6kjRpvfYy/JLtrlqS+yd\n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\nwnDUqcpd0nQflZ4dqCT5t2xa6XS/D/2WRT5KylovlXf92m+G7Hy42R4Y/lX5Y2+81dRpemz3DedH\nCqKq7WWuiMYxOTnItJ0mGHGyFX3fc2vu+b+Kt6Hw+nmJ5NsrPs3RM/y7avaXDDEqOkO6Rf7q/M39\n6tSNWUeT5Mgfyv8AVslVyoPacpzt5oqfaH3x7P73yVz+vaf5N4IZvl875tv96u8uNnlq8yM77G3/\nAN2uY1y1toZQmxim3dub7tR9s05uY5HVLNId3nXO1PK3/wC1/u1y2rxwzXDXnlfIqfupG+9/wKuy\n1OzdZEROYZH+eRVrl/EEbrOdm7dJ8rM33flpcstzrpz5ZnC69Gk0PyQ7VZP4vl3V5n42jtrWN5rW\nFSvm/Ntr1HXGtrje947YjZvm+7XlHjBf9KdXdW3fw/dWplycp0U6kzzTxhHN9n/dzRj593y/e21w\n2vSbt0Pn7UVN3+9XZ+KrhLjzNj/OqNu2/NXmPii6fzCgfmuTlnUNpYiKj7xkapq339n3l+X5aybj\nVo5o3uTNsbft3bqra1evv3pt/wB5aw7jUn3bHf7v96q5f5ThrYj2kTrbbXAu0Qvtdfm3fw1M2tbm\n/dvt/wDZq4qDVnXcm/5W/iar1vqHmN8s2zb83zVPs4GPtpHVtrGzDo+4slH2xOHTr/HtauZXUjEr\nfx7akW+SSX5Hb+9RGPLIylUlL3Tp7e82yNNC/wC8X5W3fw1o2+pbmS6d13L/AMCrkbPVIWj3b/8A\ngX+1V2z1KaR12Ps/2W+XdW0Y++Zne6frUisk33l/u7a1G1rzo94uWZfu/d27WribHUHCqkz/ADt8\n1aNvq02GTdtT+9XVE5PiOzt/ELzY2eWxVfmZvurUq+IkDNs++v31/u/7VcnDqE0e2GP/AIDIv3at\nRsny/ZptjfxL/eWtfQw9mdtpesTSRLDNPuRl27V+Vv8Aeras9afckO+R/wCL+8v+zXDWM3mKrveN\nv2bXZvurW3Yx3iQo9tN5u51ZmZf4a46lTlOqjTj0O5s9Whjt/tKcv/Eq/Ntq0uuTSQib5n+fb/vb\nq5axurmH/j2T7ybmZfvf981oWupQxwh0fbD/ABs396vKxFTljc9jC0eaVuU2LzxAkbeTDu2x8O38\nVU7jWHtY97zYWR/ut/erKa886b7Sjrs3Mu3+9ULMklm9tN8gjb5Nv96vHrYjmie9h8L7xp/2k95n\n7THt8v5YlX7rf71QNqk0m3ztvy/3v+Wf/wAVVNbp2iDoi7Ff96v+zTJrvzGWGH5l2fI2yuKnUO6N\nGP2R8l09xDLM7t8ybflrCvG8xvJ+aLd/e+b5q0Zri5EbW29QjfcZv4qyLxv3Ozeys3y7v9mt6dT2\nmiMKlGMdzO1LfD+57b2+Vn+6tZF1Hc3HyJCzIv8AD/E1aF1cQtCm7978+35qq3F8scnkww+Udu1t\n396uzmlGN0cnL7xm/YdzMiJhtu35kq3Z8Q/+O/LTFm3TFPll3L91W+ZalhZ7e4X59u37lRKfLoOn\nTL1qsO9eVX/erQ0/93Ku/wC6tZO55JGSZPu/+O1saDeJ5fkv50oj3b2kT71EIyj7xrKPtNDqNBuE\n8tUdGZlbduX7tdZoN5IJmkT5nb7i7flrh9NuEjZEd8Kvzf7VdLY6k+5U3yCX5djRsv3a9bD1PePK\nrU/d5TvtHktvs7Ojs+59qQ+btWP/AGq3dN1KaNlufO3sqfdb+KuG0rUvMjMzuyuu392ybv8AgNbO\nn3XlqUSZdvzf7NejTqHmVKPKdha6p5ln/rmj2vtdZF/i/wBmte11S8gjF5ZzM7r8sqtFtVa4qHU9\nsIn+Vmj+VlZ923/ep1nrUzTGQXPPyqzNXo05dzzq1PmPQofEsMDRJC7AsrN8qfepsfif7R+5R1/e\nP/D/ABLXDN4ke1d4LZ/l/jZv/QVqOTxZCpVPOZEX7m2u2PJLY8+UYRmdvNrkLW/2mF2A+YeT/tVg\n6xrhWFd/BZv9Yr/NXNzeKdu57P5fn2u0kvyrWZJ4phaGVLmZfOVtrL/C1RUjy6E+/L3jZu9YSQvs\n3OF27v7zf7VY2s6w9vs3uvmf8tdr/LtrBuvFUFu72yXMau38P8VYN94kmuI2beqrGvzturjqR5pa\nHTTl7ps614ghs45pnmUmN/4W+9XD+IdcmkmkTf8ALv3JI3zbt1V9a8VJIHebbvb5mZa5PWPERaby\nUC7PvJ83zLXBU/lOyPLI3bjWrazh3/ad7N/yzX/2Wsq81bzGBTb8z1iTalukR/Oyv91qrTXDvIzw\nvH+8b726uCpH2nxHVGR1Fvd4VZt6lm/u/LVu11KSP59+w/e3f3lrk7fUJliVPJ3fP8nzVPJqk1tl\nHm27V3fN97dXFKnyw909CnUj7tzdk1VJo3+8zM+1t3y/LUlvqaMvnJbR/N/Cv/s1c+2sTNt2TKnm\nfMm6nw6w7SRuibXX7259qtXPKpLl+E7qcuWWp19rqE0i/PCqbn+Zl+9WlBeW0ciuibtv/Aq5Wx1y\nHzFeS5XYz/6vZ81XV1jEbybFVV+6396ojzSOo6GORPMiREY/L91v7tX9ri6TZ9zZ93f8yt/erDs9\nS8zbvdcKnzs1X7HVIbi4+zFGRmX5G2/d+WkOPvbmpD9m8tvMeMbkXYsnzVahg8lRCjq+1GV12fd/\n3ayLdvL2Q/KV+VvmXdWozJBHsdG2r8zfP8v+zTqe78JMafN8Q2TTYV2XPzD5921nr9CP+CTwkH7O\n2tLI4bHja5wyjGR9ktK/PmaZLpikO5EVP3vz/dr9Bv8Agk9A0H7Ousqz5z40uTj+7/olnxX4545z\nb4Bmn/z8p/mz4zj6lKHD0mtuaJ+eZjhhtXk8mZWb+GobqPzo9ju3y/LuX5lZquyXE15bxIm5gq7f\nMb5dv+1VC6Z/L8iHcqL8yMr/APfVfplStKofptHDwpmJfW7yN++mYJH8u1fmrKu43juH43eX/qtv\n/s1dDNGkMj3f3127fl/irB1S2maHe4UFmXcv+1/DUxqR5uVs9Knh+aPwnPahcStI3yLEFdlZv9ms\nS8m8lwruuW/i/hroNRt32yIU+fdj5v4a53VI0bh9qbfl3f3q76MohUwkdzE1i4eRTbw7UVn+dmf7\n1Ymob2U73XK/Lu/hrW1SP5FKTcK21G/u1i3zRbRv+Z/uu38NepR948nFYOXN7pj3rbVbybb5F+V2\njrNvFQp/tfw1qzM679m3Yy/drLmRPM3v/C33a9SnE8arg+WQmmw7WbydrfP92uo0G3dso7yNtT5P\nk+6tY2nwvE4d0X7nzba6nw/b7o2d5mI2f3K6oy94mOF983dGt/JVEf5y33Pnrt9Dt0mhZ9m3b99V\nrm/D9vMFR02jb/Fsrt9DtXbZwu7/AGv/AEKorS93mPWwtGMjV0uwtvLjTtJFu2snzLXT6Tpc0LNv\nRVEyf6z/ANlrK0VUa4SG2f52Xa7fe+Wup0OyuY2dJnZyrrsZf7tcMuaR6WHw8blu1s/Lk+zb127t\nvlq/y7v96voH9kHxFJ4J8YWF/DD9qm+0bYo/urH/ALVeJWVrZ3BSa2hyW/vf+hV6n+z7HqS+LrZ7\nDa6+aq7mibarblrKp7pGaYfmwckfqh8LfD/hXwH4J1fx/pVzu1TVnkuLq4aLaqq38K/3mrtPC3jL\n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\nVpW+oJcPBMiSIn8aq/3q7qcuY5pUY/EdtpervpMqJMissjsvzfw1srre5VZLlcyf7P8ADXnMPiJG\nYJOjMVf91tX7taUPjCZv9DmmUqv3W2fNur0aMjzsRTjKJ3y69bLPstppCZP9n71RtrDxxu8w+RZd\nu1f7tcdb+JEmkTZNhl3bm2/KtMm8TIq/vpvl3N8u77zV6NOR5NSmdtqGsPNHss79dn3tq1mzeIP9\nIZ3T5I9u+uWXxDprTKj7lRvvSbv/AGWoJPETxNtQrK025vl/u/w7q6I1OXaRzSw/Mb154kh8yb99\nu3P/AHvurWbf+JrmZSjzbP4om2f+hVz154i+ZkeOMyx/3X+9WFqHiRF/c75DF/dWlUrR6GX1flN7\nUvFT7N6OoZfmddnzVkap4ij8lraGZWbf86x/w1zGoeJNsex3UqrbXZqyrrWPLVoUfb/uvXNKpLmN\nY4fl2NbVvEEsa+S87bv7yp/47WHcahuZkSZVXf8AIu/dVSbUnkwm/wCZf4WqpNM8fz4Xaz1y1pSk\na+y5S4t9c+WWSRWLfN/vVJHM/mb/ADo/l+ZN33ayFvHSNpvO+X/ZqKbVHZhsfluG21zfF7pfwnQX\nGpTMqzfL/d+/R/aU20fOqNJ/C1YMl8Zl+f5dv3WqSO4m8xf9W3+033mrmlL7J0xlym3HqTySK8if\nIq/PUzXXmsdkONq/xNu3VjR3iSKIXh5/3ttTW918qJ97++2+sZR5T0KdSMjbh1C5Rk+VWRfm8z/2\nWtfT9Ufbs2Y/uSVzEa/NvTcR95fmq3YX21m3zN833Y1/hrmlGSOyMjs7HUH3b0m+VV+ZVaug0ed1\nhF07/ei27m/iritH1Pcyo74ZW+T5N1dBpupeduh+zKdr73/hrGUpm1OnzHRWt35cfyO2I2+Td8zV\nox3j+YvyfIz7fm/9CrHs7hL5ofnjikk+Vl/2v96r8MnmMkLorfP83+9WPNym0Izl8Rf8ybcm/a/l\n/eb+LdX6Gf8ABJos37OetSsm3f41uG2+n+h2dfnY+JGiR/lf/c+Wv0T/AOCTSIn7OesmM5U+NLgr\n/wCAdnX4544Sb4Gnf/n5D82fJeIkf+MZk/70fzPz+vI/3MVs/wByRF3f3az5IZlmlTyVCRttX+7t\nrUks3uFO9OFfcm3/ANBqFtnnQ74flV9su56/TJVOb7R+tUcL/dMe8t3LG2hfYzJ5vy/dZaxdQkRY\n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\na38K/wDs1NVUaT+78u3/AHqljt3jkR3+VWTa8lOb5V+RPm/3KXtOb4Thlh+WWpDGrxyN911Z/u0e\nY/mNv5p7Q+YV/u7flZajf5lSN7bYzfxUvi5jHl5pEi3zxvs28t/FVuC+hjQQh9v/ALNWdte1k85J\nmbdT4JrZpkdwvy/Ku7+Gsqkfc1NqcuWZsWt0jNsRGq9pbxRzM6PtRvm+VKyLe48uRXd9zf8AoVXL\neZ23b9u1f7tcnvyjqelRqcp0+mzus2+OZVWRvnWuhs7h1X7Sm1V+7t3ba4yzk8uFZkm+Vvv7q3rO\n6dsQ/KyRpu+b5t1RL4bndTkdlpd4/no7/Kv3tsdbVn5KzBE6fe+ZPu1yvhu/H8aM5+78q10+nxu0\nbpdeZvZl2fL95a87ESlzHoYWMZRL/wBhmhYb02Cb54tr/er9Ff8AglHsP7O+sPGGCt4zuCA3/XnZ\n1+ednBtuFmmfJVdu1vurX6Hf8EpnVv2d9YRFICeM7hRk5zi0tOa/HPGuTlwTO/8APD8z5PxKgocJ\nTS/nh+Z8DrHDHIyI8m1tqurfxfLRJawjLw7W+78v+1VmO3hkVPtLsiq3ybfm+al+y/aI9kyMw+b5\nlRv4a/Tox9/3T9pwdEwr7S3ib50kAbd8sbbV3Vk61HtjLzbn2/Nt+6zV1l3DumdELC2X5UZl+81c\n7qEKSRum9i0n95664noU8PDmOJ1ZR87/ADLCqbn2ru2/7Nc7qVrti3vtZ9u3av3dtdl4h0e5WPZ5\nasrfNtVvmrn9S0vdH5yIyFk37f7tdVOXuxPQhh48kjjrqNI8w71kdfmb/ZrOmtYfLXY7Z37nXdur\npNSt4Wjf54wZF3fd+ZqzVt0WPf8Ac2pt+5XpUebTsctbDwkYE9nuuN5THnP/AA1DJauZNibsN/Cy\n/LWvJbpG48nn+L/aqOb51XZEzn7u3+7XqUZRX2T5/FUYRKVvDPGvy7drfwtWtY/vG2PCq7f4l+7V\nOSNI5TIk24/dX+9UliNszOn3v7y/erf7B41SUU9Tq/D+wbUjfd/tNXb6DeSSMkNzMsUX3VZYq4HR\nbuPzjDsZHb5dy/eWut0O+dWZJpmfb8u3d96r5eaPvER7RPRNBvLOOd7OB1fzG27tnzV1nh++ZrX7\nNvXeqfJCzbd3+1XnOj6o8OxI0+dfmbav/jtdXod07H7S8+dz7vL3bd1c3tOU7KNTljynpOk3rxyJ\nNMkaGOLbt+9ur1L4L6pb2PiBdSufnW3tZHTan+z8u3/arxPRdU3NHczTKn8LrXo/w1mubrULiwtk\nWVpImaJo/wDdrxs6lKWXTUex6+VS5sxgz0r4S/Dv4b6t8CLzVfHMy2Nz428UMr6hqFwqyeXG33l/\nu1L8A9J+G/gn9rC3+Hvw68cw69pEbRtut23Rxybvu183ft5fEB/Dfgnwd4A0PWPKkh0triVYdy+X\n5jfN8396vbv+CCX7MN38SvjNefEXWZ5JdN0q2W4vGkf7u35l/wC+mr80y6nifY66HpcVyoT5qjP1\nw/avlis/g7Y6jJDJDBDZxokcf/LNttfn38T/ABY/iy+udSv3+SP5YpGbarNt/i/2a+4f2v8A4y2U\n3hmHwrDZx/ZIEOVkX7zbflr8wPix4wvbrxdc/vtkPmsrRqm1Vrrx+IjXlGMJHzvC2BnhcNKpVjy8\nx0V/oug6xa77+G3eOOL55I/kkZv97+Kvlj9o74f6ba2Vyng+5WS8mumWX7RZbfl/2Wr6J+HviTRt\nauI7DVUkitbdmW48l/mk/wC+q6rxV8AdN+I2kteaBpUdpbwozLNM27zK1y+pBztM3ziPL70T8hPi\nRB4h063mS5hkikX5X3JXlV1qHiTSbeTYkgWT70m2v0j8Wfsv6JeeJLu28RfZ38l/kkk+78tfPvx4\n+D9np6zvomgq8X/PPZ91a+zy/FYf4ZRPgcZhcVVjzQPkm11bWNWuPJf53/2q2tY8K6xpNolyUX7n\n3a328I6DpOopeW0MyFmb920TfLUXijXpry3+wIi7Vi27ttenXrKUowhE8SGFrxfvs4htU+0L5PmK\npX79afheSa6uPJT5T93dVKw8Ove33yfMGTd8q16p8KfhLf3UyXj2zbW+5trOtKlTgXQjVqVTvP2b\nfhTc+MvGVroL2citcPsim2blX/ar1/8Abi/YV8efs5/Duz+LvifSpLfRLqeOCK8uGX95I33VX+Ku\n1/ZH8Ev4X8ZWGpalZR4Vl+ZvlZq+zP8Agtt8Gdc/aJ/4JreFPFXhKLzrrwn4ghvLrbJ8zR+X5bNt\n/wBmvkKtSU8xjB+7Fn3EsHy5R7SOp+IWta5punwj7S6r/c3VufDX4mfDfRdQhutY0+O5ZX+7u27l\n/vVyXjb4P+NodW2alo9wIm+VGkq98L/2ffEPiDxJFYPpsiiRvnZvu19M8BhfYc058p8vPG1adWLh\nS5j9K/2JvE/7J3xZeF/BOr2Ol61G+37HfIqtJ/tV93WXw78E+OPCv/CN+JNHt57y1t9kV0sCqy7a\n/Iv4d/8ABPf41LqFt4k+DLyQ3MLrLEqt8zf5av0S/ZR1j9pbTdXsvA3xp8JTaXeRqqvdRv8ALcL/\nABfe/ir43NMPWpR56U+aJ9hl88NjaVq0OSZ7f8EfD+u+Dbe40f7TI1n9o2o0jfdr3T4O69bf8JZb\nb42dftG1l2tWHa+CbOHTBqBhYJM6s25NzM1afwW8a6V4T+J+PEFur6fY2811Pc3G1fLWNWbdXy0K\nNOti4Rl/Mj1K8fZ5VP8Awn5xf8Fxv2vNH+O3x0s/gn4F8QyXFj4BnkivWh3K32yT/Wf7235Vr4u0\n+3hmuvOSHft4l3Ju+auv+M2oJ42+OXjDxPC7eVqHii+uIJJE+aSOSRmX5v8Adqhb6WjKHkfC7/nV\nf4q/ZaVGNKlGEeh8HgsPzU+YjXT0jwjw7xs3JGr/ACq1Xo7FFyieZ/us9WrOz8mTZ9mZyz1PHC7T\nb03BG+9Ht+7WFb3vdPbp0eWPuxMu4tXe3V3hXZt+f+Ksq803crpMF2/eRlXa1dPNC8cgTf8AJ93a\n38VY2rW6TMzujBv+ee77tZUf5ZGVSjzQ0+I47ULMKzTb2D/eWsbX45FmX5227V3ttrqdStdrO6dN\nm52/hVa5/VPO+0M7zM6qm1I9tdlOPvWkeRUj7uhyOrWsMnm7OGZt3y1y2uWO5i/8TfL81d3qFl80\ng+VFrn9R00bW38fwrXo048rPJrU+55/q1jbRx7NtfaX/AAb52Edv+2/4pniXaD8Lb1dvb/kJab0r\n5J1rScqTsbG/+L+KvsT/AIIBWjW37aniYnv8ML3/ANOOnV8Z4q6+HWZf9e3+aPl+JFbJq7/ungX/\nAAW1aQf8FOPiYEGcjRv4f+oLY18ptdeX8n8VfWf/AAW0t5h/wUx+I8427SNG6/8AYGsa+SpFxJvd\nMnftr1uA434Gyq//AEDUP/TUToyZxeT4f/BD/wBJQ+ObbNvhRdrfw7KtQ3nXc64WqG141+T5l/vb\nqdDP82x4fl/hr6nl6Hp/FL3jbsbxPlLx7l37srV9dSDK3kurN/B8n8Nc5BN5ce+F+W/hWrEdw6yM\niblSiXxcxEpcx09nqTzYhhRd33d1Wf7eeNVSba235a5WG8mjP2aN9p+8+2ntfbRlNpP95qfNy/CY\n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\nrNNBbMixxbtv3v8AvqvnqkvdPr6dP2h0Oi+EfCVrC2t+J7C1eSayZIpLj7sf+0q/3q+Y/jZ8G9N1\nTxauq/2VNJbzXDJFGsW5lXd8tfTHiDx54W8E6olheIuovsZpVWLcsNcVfeL9N1hZB9khc/M+6T7s\nNezlsv3Wp4WaU+Wryo+ddS/Zd0HT45bm8sIYhv8Am3f7v96vBPixoug+EZHSO8/1e7eyt8v/AAGv\nb/2lfjVeaDaromlWc0sU25vMaX5a+LviN42v77UjbXjsyyOzfM25d1exGdSUdDx/Z0sP702Qa14y\n3Xh+xvJFGr/wv/DWJdeOJrVtiTMwb5V3NXPapr3mNJC6bv8AarlbzXHuJkREby2fa+7/ANCrpp0f\nb/ZOCtjYU3aMj6h/ZN+FPi34uao+qpDN/Z1n8txcfdXd/d3V9Y+Afg7eWviCC5sHbYzqm1ov/Hq+\navhd/wAFA9B/ZU+Eei+FPASWtxcfY2/tS6mtVl85m/3q6C9/4KqWHijwWLvS5oYdRX7/ANni2ttr\njrRqX92kevh5YeEPeqx5j7D+P3ii2+HOi2fg+515ppL7bJEq/Kscf95lr6y/4Jca5Y6t4CutFgK/\naZbZhE8VxuWRfm+avwlm/a08V+LPFreJ/E/iG+vLmaXa0l5cfKy/wrtr7u/4J6/ts3Pgm6trxNV8\n5WlX92su1VX+Ja83FVKtCUZzjsdeFnQxNKdGlL3mffHin9rrwf4B+IF78IvEOpLb3bRbYmml+6u7\nb92vP/E3jLSfiRpMvhW8mWaxVvkkZfmkb+Fq8E/4Kha54Y1r4Xr+1F4Pv47TWNNv4/tUa/6yaFvv\nKteN/s2/tOX/AIkuIEu9TuJ5mdVlWR/lb/drhXPKPtYP3ZH0FHD4eUOWovePqr4E/s9+LU8bPNo+\npXFxEt/t+zzfd2/wr838NfUd5rGq+GvDcOlXmiRw3bJuna3Tay/w/LVD9kb+yNb0K31Sa2VZWbcz\nRv8Avd395q7j40rpqsUis2+WJl+VvmanWjGNByXxHlVpSjjFTPCvF99NqV5/xMkaTb/E1eFftreI\nLzR/2dZbaGLybPWNRhggWSLd5kit/Du/u19DeJNNttL0b7fNGw3fek+6y/7NfG/7dnjC88SeINE8\nAXM0ktjpdu14qw3G6NZJF+X5f71HDWH+sZvGUvsl53iPZ5e4r7R8+WukXm1v30YZU3fvErW02F22\n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\n9tjfa1aS61vt/Oe83MzqryMn+zXFWeqQ3CsnnbVX/no1WG1RzGjpMzM3zbY/ljrx6y5tT2qNTlgd\nguqbVS5jT94yt8zNTJNUyzO9zv8Au+aq1zy688Nn/rsGRNn+WqRdWmiVv+mibNq1Eaci6lSB0K3D\nySsju22b7lKt1Zxqu+b51X51jTdWLb3zvGqO8ilX2/7W3+9UlvcJcSH5/N3blebbt3KtR7Mj2kPh\nLc10l2rzTSs0Tf3V21hXzTSxrNbSMn3ldW/vVtbIZoVffuEaf6vd95ao3du8cLu+1kbb+7j+9Vxj\ny+6ElzHO6nNftH9jc733fd/2a5vULf5pkmmbau1kVv4q7C+heFvO8mTDJ97/AGq5/XNPSSTy3h3f\n7SrXVRqRj7qOSVHm1kcvqFq8MmyF2f8A2v4dtYmpfKzTbPmX5UbZ8tdRq1r5e77u1fvVgatMgGx+\niv8APt/irrjU5pjjh+aPKctfW825n+638CstZ+oWzvGwT5n37vmrcvlMg/1Pyt/47WXf2TyK3zso\n+9XbGXumNTD8pjzK8ch9KW1t3jbfNHt3fNVjyUbO/wCb+KpY7UM2x33nb8tac3Kc/sZ/EWNPV/m8\nlGDf3m+7XQ6Xapa3EWxPm+6zL92s7TbVIdnnQsG2bv8Aero9LhSSP54Vbd9xmSvPrVoHRToy5zV0\n+FF2Om7d93/Z3V0NnHNGyb5FD7PvKlY9isIi8nLfN9zb/DWxZx/IyvMz+Z827+7Xmyfvczid0Y8v\nwmtZq8cfyTfe/iZf4q1dPUMrfut8UafMy/3qz7Fprjy4U2nam35f4q1LFXb/AEZwuPuurVjKXu8x\n1R980IUfa8Lw7yzbauTrM0cUybc/d27vu0Wq+XiaaH5fKbbHGn3lp+n2u0lEhb7/AN5q5fe+KB0r\nljo5Fmz861VHRF3bPn3fNVqzV5mSa2TY2397HIu5ajs4ZoULvCriTd95v/Qa19Lsd0iujtsXa77f\n4V/u1pCXvSOyPN7L3S/pdq8W3y4Y9n3ZW+7/AN81uafpqKv75Pu/L8v92q2i6bNbqqzXO+LezS7l\n3blroLWzSaRXiRXEPy16dKPuXiZfDIpx2LyTLsT/AFny/NWno+kfu/n6t9xd+3btq0unpGFTerlf\nuRwruVq17Oy8va8yNv8A7u3+L/2WuuEo0xylKUit/ZnmWI2bVTY29W/hqS30kt+5h27Nu7c396ti\n303zt80w4jb5WX+Jv7u2rckf2iNftO1F2L8rJXdHkqSKl7sfeOdXQ91xv+Vm+Xbu+9VXUNH2yBHR\nlCt+9ZvmVq7WGztvtDTJZ+c8bbX2v/FTLrSXaYvH95V+Rmf5f+BVrH3ZGNaS5PePMdS8Ox+e4ROF\n/hX/AGv9msO+07yNttM6wjb+6+WvTdQ0Hyo5bx0/2m2p97d/FurlvEGh2ckvz9G/1W2uXEVI/Cef\nGUJTPO9Q02TzI4oY1VtzfL97d/tVN4d+HuveLNaj0HRLZria8fyrWG3iaRppP7u1a6jQvAWpeNNY\nt/D2laJcTXdw6wQR28W55GZq/ZL/AIJgf8E0fDH7Nnhiz+J3xLsYb7xdcRLJBG8S7NNVl+6v/TT/\nAGq4oyVSrGETnx2NpYWlJs+f/wBgD/gg1o91o1p8R/2vIGcTRRyWXhqF8M0f3l85v4f92v0Htfh/\n4K+DnhdPBXw08H6foejxRbYrPSbVYl2/7TfxV6gypsIFee/GbXYNGsC0z7R/F/tVzcQr6tgdPmfN\n4GtUxeOjznmfjHX7e2ysQaXb/wA865STxBCzKdi7G+b723a1ZXiv4laJBIYUv4dzK37uR9tcRJ4u\nttVulvBqXlIr7dqv8rV+SYj2amfsWXYOhGl7zPSbvxJCIR9muMtt/wBX/do0/wAWac6Jb3MzROzM\nvzfdry/UPG2NNkMNzC5aVdtwr7lVao6f4s1Wz/0bUvLzHL961b5WX+GuX2nLC6PVjl9CUfiPZria\nCKY3KHzpP+WSxvS/20n2WS2uYVlST5fJkTcrf8BavGbHx5r3h23vtS1XWPt8Mcu6KG3i2yQru+7/\nALVbVv8AE6a8jlfyGVWi/wBHkZvvf7taU6s1Exll8Ho3cpfG79h79i79oBoj8YPgjpbX7RNEuraO\nn2WdVb+80f3mr4u+N/8AwQd0jR7x9V/Zk+N8l1Cyt5Gg+LItrbv4VWZf/Qmr6/1r4qPafZg6NdPJ\n8sse/ay//FVNB8RptPW4Se5jlSO3Zk8mXcytXpYbP8dRvC/MZ0cNPCy56M5KX4H47/Gz9lX4/fs3\nzRQ/GP4b32mJv2JfQr5tpJIrbf8AWL8tcNcW4bbDDMpX+Nt/3Vr91I/GmieOtLHgzxzpVjqWlXCf\n6fp95ErxTL/wKvjL9tn/AIJLeEdUsJvjF+xLqRtwqM9/4D1W6z53977I/wD7TavpMDm2Fxq5Je7P\nsejRz+rF+zxcdP5l+p+et1+5kCDy2VXbYzfe/wD2ax75Ybht29V2v89bPibT9V8O69c+G/FWlXGl\nahZy7LrT7638uW3b/aWse62fanR/kP8AE38Neh9qxljcRSr+9CXumX8m50toWHz7mbbu20v2G5Wb\nZM6qyp/f+Vqv2sflRFNuGX7rf3qmW3Sabejtt/2lq1LllGx8djKftOZFf+zzv2Jb7fM2/NTls90L\nMnyqvyosdaENnNtDvCqBd2z5tzNTreJ42Pkw/LJ8/wA33t1Epe0PI9nGNjEvrHy43mcNu2bVWsXU\nLV418wR7WX+Jq6y83rMd9tyzf71YOoW94uoSvsjxvXb83/j1dEeXm0J9n7pztwftmJkRf725k+Zm\nqose6T5/vr8zr/drSvNNe4ke5875t/8AF/7LVNtPmhkabYrmT7n92umNSPNyyOP2ciWzje8uFd3b\n92y7VVq7jSbdF23O1T5ibfmrjtItXjuEeSHa6/ejruPCtvub7TJ821P9W33WrWMvc0J986LSbVFY\nb3ZFX5WZq39JV5A32x18lW2Is3zKy/7NQ6Fp8M3+kzTMu7a3l7PvV0On2Lyx/vkj85n+SPZ/D/s1\npE46sZfFEfaq0bIX8x02LvkX+9/dr7t/4JkAD4A6phmP/FXXP3uo/wBHtuK+ItPsfs8ivNCysrbW\n/wBpa+5v+CbqhPgdq0eVLL4snDsjZBP2a15r8l8dYP8A4h/OX/Tyn+bPh+PJ/wDGOuP96J8VJDMt\n0X3/ADTffaT/ANBq3G0M0azQIqv833f/AImnwwrDJ50yTfc+Xam5t1P0mx2u14qfP/Erfw1+0xp+\n7c+yjihlxG9zbr5UzP8AeXarfw1j65bzeS7u7M33UZU+7XQXyvbQq8vlp/zyjjSsDxNO9nbu+xQF\n+bb/ABVvGidkcw96xwHipUa1kdLlmXft/u7mrzDxVdJJdfOjKqtteNf4a9L8XJ5kMqQpHvX5tq/d\nWvMPFW9mM/3Vb5n+T5mauqjGETphmHLGyMO8k3LvSZo33fN/FUDXTblf7q/xNVa4urlZHTbu2/fa\nq8vnMrfPhfvbVauqPuxOLE5lKUh13cbZGdHjI3/erH1KbzJPO3sp2f3/AJanvrh5B5aPhm+422sy\n+Z/lTfu/vbf4q0lE8utjOb3Sss3lyfOFZf4qn0u+2zNJ83/xNZ90ySME3qP9laWzuE+VN+35/u/3\nqylHmOP61Lm0On02fbIUR2O7+Fv4a6DT9SSOMF+f71cda3SRx7H+793/AHa3NJuP3nkvPXLKPK2d\nFHEfzHV6fcQwSb4f+BVtWt9583nPMzMv3vl+Vq5GzvPmTNypVvl/2a3LHUnMifOrblriqR+0ehRr\nS2Ox8P3n2iPzndU+b7q/eroLPVvs8gdHkZNm1G/u1w2n3U3yYMajz/nkV9rL/wABresdURmaOTb5\nv8Ekn/oNY8sTf2nNGx9Lfsi+Kv7S+IWlaDrfiHfayapGjQq+2L71frt+198PfD+s+E/D3iWyZiPC\n1rE1rIrfLGrR4r8NfgTqVzD44tprOGTzGuIWi/i+bd95f7tfsZ8RfGnirWv2WtB8VeJ9PnWDWLVb\nOBm+X95Gvy/+g14eb4Wv7K8I80T0Mnr0JY2CnLllc+Wvjj4qh/4SQI7ySy3W37rbttdT8F7Ow0+x\nkxfqfMt9zKrV4v8AE7xY+nyNM7s87Sqss0j/ADLtb7tdr8K/GSQ+Gft81ssKMjIzM23/AIFX5/Uc\n+XlP1Oi4+0sznP2gPHlh4V1ZUsLzPnT7EVYv738VcTa/GDStJ0+W8v02RRxbX/vTVxvx8+LE39uX\nN/c6lC+66ZYl2bWZV/ir518bfGS5Vm+zXMnmK7Nu37VXdXrYOjLlikeZmVSHNJmt+0h8YIdavJLr\nzpJdrt5Vv93yVr5Z8TeIZry6ebzv+WrMqt/DXSfEbx1f6ur/AGmaR2Z/nk3ferzDXtcC3Hkptz91\nP9qvo8PT5pcp8BmOOUZchZ8y51a4WztfMLs+3dXrXw1+Aum6lYj+3ttu7fN5knzKtcl4Dt9H0izh\n1XUryPzpP4f7teg6X4sT7C6Q3nlJu27l+9XpSqRp+5Dc86jH2kueqYnxK/Y/udT0trzwxrEMu378\nK14lcfBXx54bvG/0CQqrbXaPc1fWPhvxhbWMKOmps25fnVvu7q0tD8QaPb6xCJtPt5kb5nZk/hX5\nmq6ePlCPLKJliMDGdTmhI8b+Af7OPxI+K2uJ4e8PeGL68vIX+eFYvmX/AGvmr6h/4d5/tpfDaxs7\nLRPCU2lHVG3fbGZZNq/7q/dr2j/gl38e/CutftcarNqtrapDcWawW7Miqq7V/u1+oWoat4Mvkh1X\nWbaGYR3H+jxr91V/3q8nGY/ByrOM4G+CeKw8lOMj8j/j1+xr+0Dov7Lr6Nd+MLjVHkaO41fzNzO0\na/djWvl74K+KtS8A+KI7CfzLea3nVfmZvlX/AHa/fz4/aT4Y8UeD/wCytH02FILhd8qxru3f3d1f\nin/wUf8AhvD+z7+0Vaa3Z2bW9lrErblVfkWRV/vVxezoTpezpn0tPNq8asakpeR+ln/BP/4yPqWl\n2tqLnZNs/wBY0v8ArNtfT/irX7LxH/p9yio7NuWRvurX5af8E9/jFDq0kNtvjR1bYkiy/NX6DaLr\nUv2OGzvfOTy4lb9591q+flzUacoTPqcPL6xX9qWvixJDa6DDbTPvg+Zpdqbv++Vr80vGHiK28ZeP\ntY1t7zf5l/IkTM3yrGvyqtffHx28XPp/gHUNVvJtsNjYTSqq/KzfL/DX5w+H795LOGGbcks251+T\n+8275q+p4QwsVKdU8HiLER9rCkbdm0MkKuiK7Mm15F+6tW7G1e3mBhRZG/vb/l21Db3Ttsm3723b\nvLX/ANCrW0e33Y86b7y7vuf+O195yRPGo1I8msjQsdP+1YmR2Xa6t935WrQg09JGedJlO7c277v/\nAHzTNPtXkV/3O5vlZI2b5f8AdrYtbOZWYon+u+Taqfd/3a05fcNJVubWP2SCz0t/v3JVEb5VX/d/\niqzJp7/7TbU27V/9lrQ02xS62zXPy3DfxM+7atXbe3kktmmdMj+Dcv3q1pxhsY+093mZ7n+xhaR2\nfww1COIEKdfkKqRggfZ4OK+OtS8OzXCzQ/Zt23/ar7R/ZKjEfw6vtqkBtclKgtnA8mGvmVvDc0cy\n+SiwqvzJtr8T8NIX8R+KP+vlD8qp+d8Oq/EebPtKn/7eePax4d3O8Odrsm3a38LVyWueGfvIieW6\nv/c27q9y1Pwq6XEr7G/dvuWRf4q5TVPCaXEjwvYSO+/ekjfw1+604+8fR1qh4xrHhHMZhRFxJ/Et\nfQP/AASR0P8Asv8Aah1yUR4/4oS5Untn7bZHj24rg9Q8Ou262SaPdG7blWJq9v8A+Camhtpv7QWq\nXLkgv4NuMo3Vc3dp/hXwPi1G/hvmb/6dP80fHcT1Iyyiv/hPm/8A4Km+Hkvv21PG9xE7CaQ6Zswv\npplqP6V8k+JvCe1t9zMx3ffVV+Wvuz/go94flvf2ufFtwpVvNWwGP7o+wWw+avlzxR4UtmWV3tsi\nRq9bgKN+Acq/7BqH/pqAspl/wlUP8Ef/AElHzx4g0dzM3ONv8OyqFvpM25XRFZv9r+7XrPibweiq\n1yiMP9muYbwncrJ8ib/9lq+llE9HmRlabo87KyfL838VdNpegou13RVO3b8tX9F0Gdl+e22/3Vrp\n9H8Nu0i70yi/ejrL3pe6VzGbo/hH92rwbULPW7F4HtoZN6bXVYvn2r8y10+i+G7aNW3wyO/93d92\ntu10OFpgjpJEW+Z44/vVXLyyMjg4/Bu5WSzTcm3duZfmqez8Mzbd6QfL93aq/wAVelW/hv7WjeSf\nkjlXd8m1mrSt/B73C/IjD/Z2bVWjlhImUpnnWn+CX+X5G3rt/wBW27dXRab4ZRX2eTudflVZK9B0\n34e/ZyJksG+b78zfNu/2tta+leBUa6kmmdtv3fmi+838NZypm0akonA6f4RcsJns2Hy7dq/dq5J4\nHuftGyY7Fb5dzfdWvRovBaXSog+Qxv8AdVq07TwPZiMWz2bFGT7zVzVKcjqjUieQal4IdVf7NCsq\n+VuVY/4mWua1b4e/uT56eZJ95v8AZr6EuvAtsFlmeGMPHF8rMnzLWFrXgeGRn+dV8xdvyxfdb/aq\nJU+Y2jU/lOUhV1jVEk2tvbe0j/KtQSb7TYiW28TM37yNvl/4FRNcPbzY+YxMrKm77q/3az7jULmT\ndsRsq/z/AD/drzuWUT9Bj3Jo4/OmV3253MzMr1W1Szh8n/j5WIN/e/8AZanju3fe9mIUfZ8v+7/v\nVHcXUL75bm2VDvVdytu21Xs+VaF1Knu8sjntSs3aF96RlGTb838P+1XH+IlRo5kfb/d8yP8Au129\n9K8lq6We3e27Z5n3WWuO8UQxzbk+zYVX+f8Ah/3ttZ+xPJrR5feOH1JvLk2b2IpY5rZtvr935v4q\nXUlijzMkzI0nzJ/u1S+2IWRIflf/AJ6bfu1lKPNA5eb7Rt2MibSUP/fVbGhtJHIedifeXdXOabNJ\nGqQvOuP7zferVs7pJGE0Lsw2N8rVn7P3feJjJOfMdD9uO132cbP+BVZWR5IWT7i+V95vururFh1C\nGaF7bfu/dbtv93/gVSxXUMLC23/KqbfmbdUezny25S4VOWVyxcSPbx/6Sm/b/F/7NWdqN9NHZskL\n7iq7k3feb/aqxfXW5fJ2cblVGZ6y9Wkdbh32bUZNu5aqMZc1hVKn8pnalq/nyFE5XZ97+7WDeXMM\ncQ+zIy7fl3bqv6pNtkZIZv3bfK//AAGsPUpkmzsh+f723+6tejGn7p5spe97xTutWf7QsLurH+8t\nZuoX3lgrv3bflqG+uvJkd/Mx/drIvNVTdh5sOzfxV20jy61blLN1qCR7djsE+9t31Yh17y7cIj7v\n9pfutXPTakm4u+1QrU23vk+Z/O3f3lWto+Zze0n8R1UOpJJIrwur7v8Ax2v14/4L4TCL9jzw4GOF\nf4k2asfb+z9Qr8Z9Lk3SLsfaV/vPX7J/8F+3Cfsc+GiQTn4l2fT/ALB2o1+L+JGniNwv/wBfK35U\nj5PO5c2dYD/FL/20/Jc3nnMrvu3L9/56WG4mm/vLu+VqpQsnmb/4G/i/iq5aLPtZN/3q/aJSPq6f\nxaGlZyP/ABn5v4dtXLW68uP5OP8AZ/u1mwTPDIIZvu/3v4au2rbvuOxX7tYyj/Md9OPU3IbhZmTf\ntRV/iX+9V6zvtsw+f5VVty7vlasO3wqrJPMqIzfLWgt4WJTeqbvur/FXNKMDup80feNu1unWzR0f\nMjbtnyf+OtVuz1GNIdibd38e7cy1zf26aPd8m3d83zVbsdQ+VEdl+VtyR159aJ3UakeY6Bbh5ttl\nc7nRfu7U/wDHavLcf6Qk1t5iN95W27qwY7iZY/nmZl/i+atGG6dVV3DY/jVfurWcoy5dDSpym5Jd\nTKUCBlDS/vWZfvVbtZEmk2Qov8P7yP8A5aVkWcyTXqJMkjo3zJWpawzRqZofkRf++t1YSjHl+Ifx\nTLqx+fDsR1Ta/wB5f71F5Dtb7Mjt5Ujrs2/N81OM263RHdvufvWk+VaerXjKNiMhVPk+Tcu3+7ur\nOpzx906Y8stjIvFmXd5MvmeSjKjfw1iahbpJC7pctlVZmWul1Cx8lZTZ+WI/7sfzfNWHdWrhRBcp\n/tfKm2lGP2izl9Tt3WF0eFVuN27dJ93btrlry1eNi83Ndz4itXVtkKbn2/J/drlrq1eaR3hhV933\ntvyrXXTqe7cuUeXY5TWLWbcqxuyj723+7WbdQ7mPz7m/vVvXlj9qmZH8z5f4aq3Gnv8A3/8AdWuy\nnU5dDn5eYwPsqDcifdb+JvvVcsbHDRl15/u1ba3TcqCNWZfm+Zau2Nn/AMs3fcrJu3f3aVSt/KXT\noxj8RY02xjVt/nK0v92tezhTzA8KMu7+9/DVezsYY/Kfycv91WX5q1Y7J7Xcj9Pvf8CrzpSibSpw\nLVvb7pFfZh1+X5f4q1NPheObzoU3bm2t8ny1Vt12yb1fKyJ/F81aljG6t874f5dsa0+blhocvL75\n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\nvc2tJt4ZG85OkPyfL/eb+9Xb6Pa7oUD7iV+X5q5jS7BLf99sZpvm+Vf/AEJa6vw5D5caQu8hRtu9\nv4vmr1sLHmgedWlKnI2rO1v4WbyYdp+95jJ91f7ta2n6b5kqCFJDui+8v3ZKn0u322rJs3K3y/vP\n4q3ND024t7ZLa52r5m1nb7q7f9mvTo05bHDKsZ9lpd55Zd9u3/lqq/dq5HpsUOOJJn+ZW/h27q3b\nPS0bfCvCK6/e/u1eh8NpNO6XKbt23yo1/wDQq6+X3iIVpS0OPutLSa2aG5dnWT5W/wBn/ZrjtT8M\nv4m8Yf2NZ6rCkdi6u9vN/E38P+7XrfirQ303w7fTb4UZV2xSSf8APRvlWubsfh7beBbe21XWE+z3\nn+qulkdW85t33vM+9trxM6xEcPQt/MVXxE5fuzE8eXUFrobM6Wtpc71RGh+8zfxf7v8AerwLWrq8\nj1q4ub+88x9vyMz/ACxr/druPi5Z39nqWp2E7xvNNLt3ebu/4Furze6tbm+WPR7C2Z5Gibd5n3Vb\ndXylBSlscUve9057xtY3k1mk9rDHsWJn/wBnd/erzfxhMY4Wmhud1zsXd6LXq/i5bzRdLh0S8ud6\nxtuVY4vmb5fu7q4C+8L3OuBM+dH5j7drJ8rf71dVGpGM/IKkZShynAQ6akl2u9FZ4X82WRn+61UN\nSv5Li+Wa2Tj7jt/E3+1XobfD25vLUQq6q7PtXc235v8Aa/2aydR0PStJjSz1W/tftbbvNkj/AOWf\n+zXrxlQlI4KlOUYHAeIrKG1kifzpJkZN26Ntu2s1Y3tYpX+0tvVt21mrqtet7G1kR9/mBvmdv4dv\n+zXLapqENxL+4SN/7jbvmWolKEjL3ojvO1Web5H3Rybdnz/NXQaPYa9JGdh80bvl3L/DXP6XqFhK\n2x5sS7921vl212ek606sjpCqQt/t1wYyo6cYnXh/3kviNLQ7waVMX/drc7du2RvlWu/8D65Msge5\n2vcNtXaqf+PVyVrJpWoYhhmt9330aT+9WhperTabfeTc6lCySN/yz/hr56vKNaUrn2eV2pSjzHu/\nhnxNNbRl7n7mz96v8O3+9Xtfwl8baVrmjtZ/uZRt3eY396vk2x8QOy/udVbayMvzf3a7L4b+OLzw\nzcJZW1+tonmr82/5W3V42I5afun29CrSjLl7n1VHoNnIq3MUKymPdt8t9q1Vk0fT9F1a2v4YWaGR\nv9H8yVmaRv4m/wBpawvAPjL7ZpOy/vI0MMrLtX5d3+1Q3ipJr5YrmbeluzeV8zf+O1NGtyz941rY\nWFY+r/Avg3w9rWoW3iHR7NYryS1VHkjby441/i+WvRLf4ewxxywpYSbWfajbl/76r5t/Z3+JlhqX\niqzs7m8maLb8kc33Y2/9mr7t8HaX4f1jQEfR4hM6xL/pTNtVv+A17uBrVK0LwkfDZ7lcacuZnkV9\n8NbbS7lLm2voXlb5Z1+823b91q+O/wDgrN+xXefETwHceM/AGmx2eo6HF9ugjZGaSRY13Mqt/dav\nv3x94d0fw+st1dQrCVfc3l/Ksny1zepalomvaQLzXrNb22m/0Py2bcv7xWXc1byxHs6/PfY8elhJ\nyjf7J/PZa6hNNZw3Nzp/2d5ol3/N91q1beR1j3ww7ZY1VX8z73zfxV6b+2h8E5vgt+0Rq/hg6aza\nXcfv7C8VPkk+Zt22vO7eT7Of3CYX+HdXq06ntoqS6nr0+fkJs3UjBHfcNm3dt/hpZJLmFpZprb9x\nt2xTK+3c1OjldmW2fzFdl3Lt+61MuN+1XuYfkb/x1f8AarenH3y5VIkFxCkm+2mTedu7cz/xU3Z5\nMgd5mVd3zbnqGS6m+0O6P/sr5n+1QGhmuHtndWeP5v8AZrrpxl8Jw1JQ+IkhW58tHhRfN+ZXXZ8t\ndBose7Y+9lk3f3vlX5axLVfOm2Qo27b/ALtdJpMaLJ5NteKHX5ZWZfvV6uHjynmYjlfK7mzo8iR3\nX2afdvVF+ZvustbcdjBDDmGFZG+/tb5qzNP2SKqb9m376t91q3bMm+jSGZFHl/xK+1mWuqMvtHmV\nI/EmETTeXE80zDc6r5i/dX/gNfaP/BPFJ4/gzqy3AXI8V3AUr0IFvbCvjZbF7eTfDNhm+V5P4dtf\nZH/BO7zh8EtSSZSGXxROOTnP+j29fjnj1GEfD6dv+flP82fD8bx5Mja/vRPku1WFWk2QxgL8qK3z\nbf71IzJJM1yiM3l/Ltb7rL/epV2faEm+zbf95Pu1E135iqg+Z9/zRr8u3+781fr8uaL0PsOX3Sne\nbI7NnTa0vzbP9n+7XNapvZ2G+TDbd/lpXQrD9oZgiLu/i/vNWdqFnDasribbH911/wBqto+7Afs+\nb7JxeraSkUdw6IzOv/LTZ8zVzOrWYiZnh2uzf63+8v8AvV6Bq9r9lkESPv8A9r/erJ/sTzLhnSBV\nDff2p95qcZe9ymn1fm2OV0fwrNcLvm3ZX5kVf+WldJovgtLiNPs1tJKJP9bu+Xb/ALVdf4f8N+Yq\nQuknmwuu1Vi/9CrttI8Hu6RTbIyN38S/Nurtox940+r8uh5va+A4Ws032fCr/F95m3UN8P3Yr/oe\nUjfcklexx+DUuJvntmE0cvzeWn3v92luvA9tbx74Y5JPMl+638NdHu05kypT+0eK3XhD5Wgez3Rt\n95l+9XP6h4TS181I7ZmXZt3f3v8Adr32bwPDbWflzQqsm5v9rbWJr3glLXfcPDCU2f6z+7/tLS5o\nyOeVPljeR8/Xng/arQzW3+kfe/dt/wCO0zw78NZtU1ZLJLZpmkZY4ljTc25v4a9K1rTYb5dmg2fn\nMrbbi4/hjX+81XNH8aeEvhra7/D1t9v1nytqX0abY7dvu/LWqjGMdTycViI0/hL0Oh6D+z34Lvra\n8SM+IL5VWeFf+XeH+63+1Xy98TvFFtdalc3NskPzfwqv8Vek/EK68VeLtQa8v7mTZv3PNI7bpGb7\n1cBr+i6JbwhJrxS3+0lL4tWefzylI8l1KW/muFvNNeRJY33JtX+KtbXfi94w1+zXRNevLi4lWL5J\nGf8Ahqz4o1y2hdhYQqyrLtVlT/x6uL1bxA8Umx9uf9mo5ff5jSPMcF42jv5LwvNc5Kt/FV34a+Kr\nmxZ7ab7jNt/eVD40b7VIxTaV2bk21zVrcXMLb0fDq/3t9XH+6OXmel641s0bujq4ZdztWBY6lc6L\nqi6lZvt+T96qt96oND8SPdW/2aZ/mX+Km3kKMrTfKV+7RKMKnuyHGpOlPmiem6x4g1WTw7DqTpus\n5tv77/arndN8Y3drdN/q9jfd+SvTP2E/Fnw38Ra5N+z98YLOGPRPFG21t9Wm/wBZp90zfu5F/wBm\nuf8A2zv2SfiR+xj8XJ/Afjl2u9OuH8/RtWhX91eQt91lavMrZVS5ZTpRPWo51V5488il/wAJMl9a\nvCjxszffbZ/6DVjw3qiQ3S2e9WG35GZd1ecQ6tcxqqJNn+L5q1dN1qRpvOf5GX+HdXiSo+z5nI9O\nnilKXMz0nWJ7aS1COiqv8bf+g0zRdRSGT7T8qbfl+WuIm8WblW1f5f8Ax6kh8RPDHsxtbduT5vvV\nlToTlCx3LG0nI9P03XrC4vEmhvPKmWX5v7rV9q/sj/GT+z7XT9BeZZNtxG3mL91t38NfnN4b8ST3\nF9/pMy/vG3bttfUP7NPiS4s7iz+xzL8sqr8z7fl/vV5eYU5xjqfQ5PjKVaXLzH7SfDX4gaV4o0F9\nI1KaFwsStbtv2tt/u1h6tDpVr4gkd7ZfIk+bzJPlVW/u18t/CH4qXNjMjzXjTQNuXbHLtZl/vV6t\n4f8AiTeeJtNb/T2nt1uNz7n/APQq+VxWItCXMfVU6dCMrqR1GteLLOXUuXjihV/3Tb//AB6vB/it\n4fsPEHjgXNmipbSbllkXbuZf96uy+LGn+JNS00HQRseb5VZf/Httefalb6r4T8L32v8AjO88mK1t\nW2xr8zNJ/C1eBQjOriLx+0eHmFSNSrblPEP2ofilYTTxfD3w3N8lqm66kWdd3/XP5a800GG18tpr\nxGD71+X/AHqzLrUpfEGtzarNt824Zt25f4d1bOlw21xM73k3k/dVK/ZMow9LCYeK+0fJYyd6tzY0\nux+zTbJtvyt/ndXR6bBtk2Rwb/7qr/E1YunWrmPZ9s3J/GrN96uh0tUtWhRCsq7fkkV/utX0FPkk\neNKR1fheOaPy98DK/lbXaaVf/Ha7LSWmhXZCWR1ZdzN8ystcZpt5bLiREkdf41bau3/drorHWLZY\n2RN25Zf7ny13U/g905ZShI7nw7J5l0jzQ53bvNbf8qtt+Wup0GSe4sY7l/LZ5P4m/wBmuC03WEVv\nJeZVDbdi/wATNXVafqkLKvkP/q/mf+61bRlzC96J3WmzvGuyHywv3dyv95a0LGRJ5D5CL5qv+9WT\n5q5XT9UT5N7/ADfe+atSG+S3ka8hkXYqLvbd81a/CZ80v5j1n4XhR4flKyh83jEsDnnatZGn+TNG\n6IkgLO3lKv8AEtaXwjnFx4amYMpIvWBCjodicVi6PqkKsjpJ8rPX4f4Y/wDJyeKv+vlD8qp8jlD/\nAOFrHr+9H/246/SfJnt0y+11T541/iWrlxGnlh4YVXa+5FX5qzNPuraKb9zMu5vm+58yrWh9oh3K\n+/G5d23bX71H4eY9yXumVqWm/unm+Uuyfeb7tN8MWb2muyRTSRNIloN/l/7RB/pUl1fbbiWG2mVw\nvytHIn3WqXw+TJqUsrIAxhAYp93qK/PfFtW8Ms0/69P80eFn0of2XVt2OW8facb/AMRXWWTChBk9\nR8i1y2o+H0WH+FNqbdyp8zf7Veg+JoBLrM8mFIVF+Q/xNtFc/dabeH/j2tWfzG+aNn+6te14ff8A\nJvso/wCwbD/+moGmVy/2Cj/gj+SPP77R4ZpJUa2b9zt3bovlZaztQ8PpbsUSzj+b77M/zL/s7a7m\nZUj8xNmfL/hb+KqGqWCTDfcw/O3zbmevpa2x7FOR59qXh+zjjeG2Ta6/xVl31n5kfk+dJ8u1fLZa\n6/WreN97wvtdf7v8S1hXnkwu2ydpAq/Nt+WuGRr8WxQ0/TP3aJDtV/45G+9urpdI0/y1R3Tb/s7v\n/QqxluJpI0eBGXy/l/us1dJ4faG4j2J5ybv7yfKzVn74Gto+mukaJ5Kp5ku1G/56VsR7IwqfMn73\na275adYxpJbrN5O/btVPn2tSzW/mSb5vJKbfn3N91qr7GpjKX8pbivU+07X27F+9HH8u6ie4Rrho\ndm1d/wDC+5ayotSSORoU+aZvmRW+9StqSW+794oP92sqkuUkl1CO5jkaaHy8Mm7bI/3f9msy+3sx\ne2RVeRl8pt33f7zU++1SGSbYk3ytFtRpEX5qrQzec0XyL/eRW/hqJe9sbRkWLi1mmbyUk3/35JP4\nqrN4fSSN3nfJ2fd+7ura023mkjR7xFUN8zsr1PdaX5iu8abg33dz/drGUTaB+O1rfJcMj+f8+3ci\ntWtY+TDh05Zvm3VztkrxyRiaGNdvy/7v+1W9p7uy70fG75k/3q832h9xUxEpcxqQ3D2N0m/ayyP/\nALvzf3almmmuo/Ojv49/zfu5Gqq15MrN5PEse0v/AL396q95deWv2n5S7PuRv7v96qqVDnjTcjO1\na8fZIEmZ3+0fMrfw/wCzXPahM7B/nZR/ufKtbWpNNNPvjnbM27+P5azGh+V0h+Ysm79591mrD23N\nH3i40ShZ2KSfMif7KN/eroNDh8u6RJtqsv8ADVSzt4bNmSbbu+9/utVvT5LZlLvuHzbkZf4ax5kV\nHljy3OhsrfyIzMj/ACsn71l+9tqe3aFitzsZXj/h27araZN5kZmf5dy7dzVI10keEfncu3c397/Z\nrojEmpKERVmmjbe9yuyR9qrJF8y1FI00ibE+VmXa7N/dps06Qr52xfl2sy7/APx2o5LpHUJNCrJN\n8yL/ABba0j73unNKRU1DZcR/vvn+Tak0b1hatJFZwtDbQr9z5/8AZatO+ukWRoUh+RV+Xa/3q5vU\n7rc+x9rM3zbdv3q1pxhHYipIx9SunZmGz7qVg3lxwrzOyHd8n96rmqTPBcNCkzMGfd838P8As1ia\npqTtJsfax2fw/wAVdMfegefUlCWhm6lGnmPcb8/P81VlXbIrom5KJmeSRoX3YX/vmnK0K7E8n/gV\nZlU4/ZkXYbLdsdEVF+8y/wB6rthbwv8AJ+8Xcm35f4apWc6LMvbd91a1tL86FvM2MV3/APAqyqSO\n/D07F+zhS1j8lHXO3+Gv1s/4LfoJP2VPDiMmc/EW0HTp/oF/zX5PWYT/AFPQ/wC7X61f8FrUlf8A\nZZ8P+SuSPiBan/yRvq/DfEabXH3Dcn/z8rflSPnOI6S/1lylLrKf5QPzEtLHaF2I3/AVqzNpsPlq\n8KfIzbf723/ap+i2uzOyb7r/ADq33q13sZGiCTbWbftdm/ir9VlWP0+WFhyWMCSx8uZfJdtzLtp1\nnamOZkT733njZPvf7VbtxZpHMr/f8v5U3PVaS3RWXfD975vlWuWpU94iFGPNcp2a7ZEmhRtzLt3f\nw1pWtjumZ4bZm+dW3NTI9N2LsmudsW7bEy/xVejkhj3wwptRtvlKzfdrGVTm909GjRjuyKS1eK4X\nznbh/wCH+Kr9qsyr+5mVgv31/u1AtrDJ8kzsyK/8P96p4lfzD5c275Nv3dtKVT7Juqf94mVfIH3P\nMRvu/wAX+9V+zkhjuE2Iv3V+6n3qz47t/l+0zLt+6irWlp86MybEb5W3My/w1PMi/Yx5vhNW1t4V\nYeRDJcL/AOg1oWLokyeTCzbf9iqVmIXbZDLv+fduj/hrXhb7PCnnXO3/AHU+bbWcfeCVGZJHNM3u\nfNberJtVf7u2pJPMcIls67VXa6/+zUscaCXfvUOr/wDstJNJDDI3kuzOu373y0/4Zh7PmJJpPJkW\n5eGNvkVfLX/Wbv8Aaqpqf+uCfY9zSLuZf4VqW4n8vdNbbSzL87Mu5mqqyvI339q/x+Yu6j3iyhIl\nz9lVAiwurfvVVd3y/wANY2o6b5hPkuqMrtvZl/1i/wCzXSSWszyKnyquzdu+9u/u1X+y3gmmf7u7\n5/mb/wBBren72xySly+6clPZwqrQx+YVV921vmpk32m1i2TOpST738X/AHzXQ32l7o/nRdknzbt/\n3qzJtJSNfkT+Lc23+JaqMYLY461SRiPZ3KQrsRfm3b1Wqdza+WzJCm5vvP5n8Lf7Nbslm9wzJC6o\nivv/ANr/AGqq/Z5prhYUh/vL8y/+PVtH4ziqSlKOhkrDtZkeaNv7zfxK1R/Z4Zts8Lq8n8P+1WlJ\naz7pU8mM7X2/N96qu4o2yaFUaP50+Stoc3NzM5JSIdLs5rMv5MaqJIv9W33Vatyz2W7hB8/yKjyL\n81Z1jb20kjzIiov3mrQ023SOZvnbzfuv/dZaxxEeY2w/vG3Cq28jTSbSzIqquzburV0+RFkVNke7\n+Dd/FWTaxPI/kzfKn3Yv7y/7VbUNn5yrv5RWVn3fKqtt/hrglzcvwndT+I17NZ71U2JlpHw/y/Lu\nrahhdW3vx/7Mv8VZdnvjQuXwV+5t+7urY0GSFt0f7t1b5UZv4aI8nNblO77HMX9PtYJJP3MPyt83\nmK3y7a6PTbWzkkF4ibdvyrtT5mrN03Tfs7L5ab0/jXZ91a6PR7JLVUTfIFV/3XzV2UaXVHPW92Ja\nt7d92PlEv8Lf3VrrPD6wrJG+/c3zfN93bWZpapN5vnozru/e7k2s1b+h2Mx2/Ou2OVt+5Pm2/wAN\nezhY8vunl4iUuXmOn8Oy+dIULx7f41+83+9XS2a7oWaZMLv2xLs3bq5bw/G7TPOgYf3m/wCBfdrr\ntNkTzVmhdtq/fj2169OPKeTKUueRs6fG8kPnbI1Vfvsv8Vb2nw23zI+4+d8sUm3ay1n6O1tdTI6I\ns6L8u1V+Vt1bem27Nb/I6sv3K6OX3R+SM3xR4ah8RTado+xti3Sz3EK/N5yr/ermfjZa3+pa5cTW\ntnbtbWsS+V/Cyt/Cteha9efYdPTfcwxG3tWdJPK3SRrXlfijVNS1TTQ+q20breXCrLJHuX5V/ir8\n/wCIakvrtvskU5SqTueL+PPDs2ta5NrFt8iq6rLGr/dbb96uUk8MvY3hvIbbZJN8ssiv/wCPV3Pi\n7T5m8QCz+2LDaLLubcu3dWb8QFe3LahYI0aeUsUX9xpP/Za8aM+SOhr7OftThPF1jc6gtnpsKZih\ni3PJt27m/i+aud1zQ9K0e4t7k7mTfuuI5n+VmX+Kuo8W/adP017mGbeNqq6/+hba881zVJo7eTzn\nVl/h8z5mpU6nu3O2nh5I4/x1rzw6s9yl4sy+b+68tvlVa4C4vr/Utaeab97t+8q/ear/AIuuLbdI\n8j7du7fH95a4u+8WJax/ZrN23KiszR/fr0qNSmoeZ5uIpykXvFN26zf6S8caTRKyrI/zVzWoM9xf\nKls+/wCT7qrWRea5c3Vw/nXLbF+ZFaks/ET2NuJEdd2/738VdVP3Y2OOpGL1H3Elyt4k29RLv2s3\n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\nalcr58aM1rIsvysrfw1tXV9tjHzr8qbnbfurKn7p6MqlKtHmjsXF1KZZt80zLtl+9u/8dp9xrXys\n8Lr8vy/3flrmdS1BJZkn+1Mm1N27+9WZN4k+b9y/8X72uuNQ8+UeY6uPXry1kZMr977392pV8QNM\nyTTTK3z/ACrv+WuKXXIVmMPnN+8XajN96o5PEH75XSFSkafxPtolUj8REY8p30fiSe1hP2l42Tfu\n/eVeXxs8Kq4WMiRPuq/ytXmDeJJpNvzsqUyPxI9uoTzl3q/3d9R7Y05Zn6yf8Em9TGrfs56zcCQt\nt8aXC89v9Dszj9a+B9H8beTdNM9y2yRlby9/ytX2z/wRY1Qav+y3r92Ccf8ACwLpcHt/oNjX5q2/\niq5mkVIbmMIr/N8vzfdr8O8OKnL4i8UP/p5Q/KqfNZHCTznHpd4/+3Hueh+MrCZk+TfEzfeZv9XX\nd+H/ABqlxH/obsis6q67fvf7tfPHh/WvL2PP5bsybkZf/ia9C8O+KHjaPfMyL99I1f7rV+zSxHNr\nE+tjRme42fiC8mkiSGbb83yQyfe2/wATV7f+xTqw1H4qakhJBTQpsAjG79/Bk/59a+UNH8RXM377\n7Ssj/e+b5dtfRX/BPjXm1j4x6gsu3ePC0zNsbIP+k23P61+f+Kle/h3mUf8Ap2/zR5XENCX9h15f\n3TQ/aW1qWz+OOuwWrZZDa71/7dYq4CTxNDHu2Px9123/ADbq0P2xfEq6f+0T4isFaNWK2nzP/wBe\nkJry7/hMPORoYbDadnzNXqcC17cD5Wv+oah/6aideS0JPKsO/wDp3D/0lHeTeKpoZkR7nO5N27+9\nVebxTNKodHUp8y7v9quEt/Ek0nlzXMaxHdudo/m+WrH9sTBm8mZkG/dt2/LX0csV757n1Xm942tU\n1aPbMjwsf4tq/wB7/ZrB1K4eRpnZ5F8ld3lr8zVFc6vczbZjtIb50b+FaytSvHkYv9sYfN80K/wr\n/eqPrEpbFyw8YwJLq6hWSF0/ii/1jN935qyZPEG5nTf937zN/FS6ldeZG+/ciM3yfxfLtrBvj5it\nNs8zavzbm2s1bU6hy1MPH4jqI/ElnHsmmf5tmzzP937tQyeKkvpmRJlO5G+ZWrhm15FkT5Nqxy7t\nqt/s/wB6q3/CSOq703A/xNvrU5+Q6q+8RQyRrDC+9vu/L/drHu9YhH+jIi+X5X977tc/Jr/mQtNZ\n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\nffnc+3btqexscqtsifJ95GZN1c1bY6KdHlnyl21uiu1Hh3bfvxtu3bt1dRo95Csezflty/vJHrlr\nWF41Kedh/l3bn+7/AMCrY064f5LZ33sqfumb7v8As15sj0Y05RV2dbcQ7XFz5K71fcm5apXdz+8V\n327/AOJdldDeae6xl5o1dv4dqfdWsjUtOhWP7ZM6om372z+Kvj/tH6RRpycfdOauP31uru8ZK/xN\n8q1z2rfvJWmR8Kr7pV8r5m/3Wrqtajs1bZDDkN822T+KsTVI7maPe6NuVNywq3y10U/dPZwuF5jj\n76/CjYk2Xj+ZFWKse+3szbNqs3+3XQatZ/u3SHcm5Pnbd92svUI4ZFZLlIyyqqtIv3q2p1PZ+6fQ\nYfL+b4jltStZmmV0dWeP7i1l6lA+4QzOqMy/d/irptRWzhX7T5rbN+5I1Tcq1g30cGfJ8lmdm/1m\nz7td1GtzCxWWx5TFmsXWMpvVXV9qbqiht5pG+zOm5ldfm2VfkCQjZv8Alj+b+826n2tiI1OyNsr/\nABN/FXrU63LD3j4TNsv5eYfp9nut1+T5t/8Aq99a1vo9xcRjyRu2/L5cn8VR6fboscXnJuf7396t\ny3XzZE37QWRl+X+7/eo9pLm0PjMRR9nAq2eltJsdIdqRuy7f4lrY02zn8iTa6j51+XZVi3t3ZTC/\nzRL83mL/ABLWnpq+dhIXZ4VXc7eVtrH+9I8mty9QsdNhmkWF3Xztv+7urd0/S3mh+SGRH2bW3fwt\nS2unQzLHNDYec8e3/Wbd3+0tdD4dsYVkUiFl3bt25Pu1PtJfEc9OPtJe8VYdPMkkaeSpZfvN92tB\nrVIoG32ap8+7du+9/srWlb2aW6uiQRyNJ8sXmPUk1mjN8+13Vm2/L8q1yyqe9zHfRpxjqjnG02ZS\nNm1ZP+WrbvmX+78tL9l/dmwmjV5Nu75f4V/iram0m5mVZkTcfK/v7W+9SR6S6zY8jYqurM33lVf9\nqolL2kbSOmj2MD7H9nZLmHps+ZVr72/4KxQmb9nLR1EQfHjO3OCcY/0S75r4ijtUZndJlWNnb5V+\nbd/tV9z/APBUqNZv2ftHhaQLu8Y24GTjJ+yXfft9a/HePH/xnXD3/Xyr+VM+R4mvLiXKLfz1P/bD\n83bzTXlaS8mfIZtvzfd+X/ZrOmsfmX7NtKL/ALFdndaK/wBoVEEe7+JWf5Vqh/ZdmsLQ+TudpWVZ\n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\nInzM1W21WwsbO4vLn5fLt9qKvyq3/Aq8w0vSX1bWLnVYXjXazN8vyrJX1+Q4Hm/fSPheKc0i/wDZ\nIfM7b9pXw74G+N/w1vNK0rQY4tRtZd1vNJa7XZlX+8tfHfw5vLybw7qvwK8To1tex7p9IaSL958v\n8NfW+i+JrbQ9WiS5jmeVtu6ORvu15l+118M3+1Wnxj8DWarqOmy+fcLCvyzKv3t1fUfFSPhIynFH\nj/wz1a28UaXceA9S+ZpFZbeRk+bzF/vVx/ijRb/wrrk0PQx/I25vu1f8SahbaH4oi8Z6I/7u6VX2\nx/Ltb+Ja2/iFqlh46t7fxClgsRVF3f7TVnGXKXGPL8JyEfktZrv+Xb83zNurlPEVxC6vC/zVv6he\nJCXtvm3f3v4a43XriG4kfzudtUXGJi30O5ZE3/LVPzPl/d7WFXLry1Yon9/+/VGNf3jQIm3+9VfE\naxEaHd8+/wCX7zK1Q3C/3z/3yKvTW7rGE+Zw38NVLpf+mfzLUlFCTezvsP3ajkbc1S3R3NsCc1B8\n4Ul/4aBx3DMm3p8rVKqzbtny/dqEtkLn1qRJPm96BDmZV+QBc7fvVF5zt8mKbIu1qWNfmGXoHysX\n7w+SmDeuAHxuqYbIz89FspmnRMc/+y0RCO5YaX7PZ70++3ypt/u0trlvn2VBdMjXB2fN/dqS3j8x\nv9dtZv7tHxEyOq8Mr5brNDtU16t4XuL+a3/1yqipXlPh9fsixzTOrbf/AB6u6s/E0zWaWdlbbP8A\ngdae7GJhKPMVfi1qW6xKTTK7L9ytz9gf4W3Pxk/aM8K+CbZP32reI7WCJW+Zf9Yvy15f8RNTmkvN\nk024/wAK19rf8G/XgP8A4S7/AIKAfD55oVMVrqn2h2/3V3VphY/vEY4uXs8Mz+sj4WeFbDwP4E0j\nwhplv5UGmadDbRqv+yqrX4Sf8HqVjMPih8ANV2KYvsGqQfe2nc0kdfvbpF5i1V33D5f4q/FP/g8x\n+Hk/ib9n34WfFy2i3R+GvFc1reSKu4Itwvy5b/gNY14Tlzm+CrUqcYIw/wDgl348ttM+COkPDM26\nG1j/AHKy/e+X71fT3jL9qq6ure4s3RbhI7fZ5Myfd3V+Zv8AwTl+Lj6f8EdLtdiuY4tr3S/L8v8A\ndr13W/jVNdXDJc3LLFv2ttX5mWvxLF04xxs4n7Xgqt8PCoe/ahr3wi8QWtz9vtmiuWib5VRWS3+b\n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\n9N1C28GfErVo9S06+02JVRbiT7y/N8v3vvV+qXirxXbXnhOx+K2iSKj6d804+9+7b+Fq9PHUlOpG\nrH7R5GEqyjTlSn9iX/kuzP5Qv+C1n/BOfXP2A/23vE3w1ttOZPDmsyNqvg+4VfkktZG3eXu/vRt8\ntfGv2e50+TZMm5vu/d+7X9Wf/BfT9hDwp/wUR/Ybv/iz8PbeK58ZfD+yk1TSGgX95NCq7poP++dz\nV/Lfq1r5LPDfw8M23d/ErVzV4qpFVV1+L1PQwdd0p+ylt9nzR13wrmfUrV9N+953y1z3izRZoby6\ns5k+aN90W771a/wniSx1NEj4j3Ku6ui+Lnh/+z76LW9N2sky7ZV/hrk5uY7ZcvOeR+GdUm8N+IIk\ndvkZv71fUPw71i11nRdn2zLNF91fu180+MtBSzkF/Cm0bNyf3a9I/Z78aIzCwuXjH8KM1RKMoy5i\nuWNQ9Q1SxRVd97KP738Ve7/sz+Mv+Eg0v+x7y5b7Xa/Kir95q8W1S3SVH/iT+Jo60PhF4u/4Qvxl\nb38160NtHL+9/wCudRiKftKWprg60qFWNj7EtdNmt137VVN/97/x5quQ2O7ykvbmFlk/ij+VttX/\nAA2tnqmlw3lo/mJdIrq3+9V+axf7U/nQx/KrbGb+GvGj9qJ9pDljCMjGaxDTTXKczN8qbX/9lpbf\nS5mk/fWyu0nzPt+Xy/7tbdhb3KyJvtv3Tf61vl3M3+zU8en+X5v2Z9rLu3Mybl/3q6qceUqUYS95\nH0h+wxAbf4R38ZQqf+EglJUnJB+z29fIN5oNwjM6JtdX3O0afdr7J/YyhWL4YX7KuBJr8rAjoQYI\nOR7V8r3FmizLM6MTG3ybXr8Z8OU34h8UNf8APyj+VU+L4bgp8RZpfbmh/wC3nDa9o8Nu2y2H3vm2\n1yOrWdtNcP5zqpX+7Xo3iKPy1dLb7q/P/u7q4PXF/guUj3790qr95q/XcRE/QcLTcZabGVMuza6J\n8y/L/s7a+jP+CZHnf8L/ANYE0W1h4QuARtxx9qtMV85ySbbfZZuyxq33pG+Za+h/+CXsjS/HvWSz\n7iPCEw3Z6n7Va5r8t8ToyXAuP/69v80cHGMZLhXFv+4/zRzP7dl1IP2qfFcSkfK1iEAbksbC3ryS\n3vHVZZnm+825PLb5l2/3q9L/AG/LlIf2s/FZCZ+awBHv9gt8NXksdxZxr5c0yp8zN8v3qjhRW4Oy\n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\nS+L4jDlG+Y/ll361JCvmIvdv7tJHC8iZ+9/srWrpWjvcMNkLZq/iHIhsdO3Irl2bdW1p+ks0m9E3\nLtrc0Xwe6w+c8G5f9qtVtNTTVbzEXP8AdrXl5Y8pj8UuY5y4s3tVLhG3NWbOu6TeB92tfWrpGVnh\nbDKn3awJpZpJGfeu2spSKjHmIbiaRmGxGb/aals1dWZHT/aZqRpP3a7wxanQ27sdjvvXZuo+Ef2D\nT09ftLKm9VVf7yVsNp8zWu+H5i336xdPuNs+zy/k/jauks5LYQ7N+0NVcxMtjM+xzQsPMTa6t/31\nWnpLOtyPu/K/zrS3SQ8eTz8+1/n+7TY5Idy+T8prOPvByx6noul6Ho+raemybaVTb8teP/GDT30f\nxMLZ3Zfl/wB6u50e4eO2ZLN2Vl3K/wA+5WrhfjJNcTX1tNO6lvK2s1IcY++Zfhi58y62TP8Ax7q9\n48EzbvD4j8xWC7flr500G7eG6D/Ka91+G139q8OzP8w8lNzsv3qv4Qlz7GP8WtQdtLebqjbv+AtX\nicm+SYu235q9M+MmpbbYW3n8Nu+X+9XmKcMKZdOPLG50Xg9Q1xGm/Zu+81fQ3wzkeTR1hhTPyfNt\nr5/8HxvJNG6fd3/xV9DfDe3hj099o+Tyvl/2qOb7JjL4x/jC8hkjPySAxrs2t/FXh3xC8MvcNLqV\ntbNlWr2PxNHc6hMz3KSD59u5qyW8KvfL9mezZ/4lk2U48hl73PzFj9nHXJNQ8Oy6U94vmW+1ljb+\n7XdalYbo3uUfJ/iVU+7Xk/gWN/APxOht5nYQ3j7fMb7qtXs7XLhdm/8Aj2/N/EtT8PumkuWXvHE6\nhBNDcOjvvRk+X/Zr1b9kP9pTxh+zP8TLDx54buZIfs9wrXEMb/6yPd8y15xr1ikNzI6bZEkZmf8A\n6Z/7NVrVfLuBJvw33drf3aenJymHvn9KPjT4ffC3/gsv+whpXiLwzqwi8TaZa/atB1VWXzIbtV+6\n237u5l21k/sy/tXeNtK/Zz174b/GnQb5/FXhu1m0PxHpcNr+8VlXbFcbf9pa/Mf/AIIH/wDBTC5/\nZL/aJi+AnxJ1jZ4Q8ST7YJppf+POZv8A2Wv2/wD2hPgH4Z8S3kf7QPw/vFtLqWCP+3JLOHf/AGlY\nt947f4m2/dau/AV4zthqz93oebjaFWCeIpfF9r07nj3/AAT6+M9h4p8QXnw38QXRNtrunGH7K7bl\nZtrL/F/s1/Mx+1F8O9E0X9oz4n+DNHRWttB8f6pa2rR/d8tbhtqrX78ePYdU/Y2+OFl8Wr63Ww0G\naK8vfDrTP+8S1WFtu7/ar+enXvGV54k+MnifxDqVy0jeINcvLyVmTb80kzN/7NVY2MsPUf8ALIrL\n6kK1OPN8UbnLeDVudF1ZVmTdCsvz/wALba9Z8SaTba94JuHSFi7IrRMvzV5+1mlvqT+cjMG/4E1e\nmeD7h7zR4tMd12Mm3a38NcEfiPRqS908VmtodW06awuUZXj3LuauY8GapL4T8VGGZ8bZfl3V3HjD\nT30HxhP8i+XcPtRV/u/3a4X4gaV9g1BdXtk+Tf8AO392iXve6aUZS5uY+nfDt6niDw9HeO+Fbb8q\n/wDoVVNQheO4kmh/hX+H+7XD/AXxg+oaWtg82/8A2Wbb8td9rET2q7ETe237yvUc3u2CpHllzH1l\n+xv8Un8ZeCW8PXlzun019nl/eZo9vy17D5bsXTy/mb7vnV8Qfsv+PH+HvxSs7y8m8uyuv3V02/7u\n77u6vuqUpcTeYk0ctvIi/vI1+WT+7XDWjyysfVZTW9pQ5ZDtLhmbzQiZXZU9sl4ykwp8y/L/ALy1\nZsYYVj2bNif3d9WLXTUjXfCjK+/am2iK5j1PaS92J9B/sgqE+Gt8BHtH9uS8fSGEf0r5cvLV1kkS\na23ivqj9k4Mvw7vlYjjW5AABjA8mHivmq6s/3b7522t83mV+NeG0L+IvFDXSpQ/KqfGcNTkuJM0U\nesof+3nDeIls45PtOGzIv3lrznxFdQ2twYbZGLt8yNJXpPiaBFZHhSQJCjbI5F+Xd/vV5nrVjNCT\n/q3Te235vm3f71fsGIjDlP0nC+8c5Os1vcbIX3jd88i/+g19H/8ABLKdD+0VrUEa/KfBty4b63dp\nXzXdW9tumR7mZEVd0qq//s1fQv8AwScuHP7R2tWxOVHgm4ZW3Z/5fLOvyjxQafA2YJf8+3+aPJ4x\njfhLFv8AuP8ANHOf8FA5gv7W3i6N2bH+gEY7f6BbV4vDeFZmEL/OyfxJu3V6r/wUUuriP9sTxdFG\nBtb+zwxZuP8AkH21eGyakJpvO+bbGzKrL8qtWnB8ebg3L/8ArxR/9NxO3hp8vD2C/wCvVP8A9IRt\nxyJHqGd6/Nub5auR6xD5mxJJGZfmT+H/AHWrkLjXHhX9y+GVtqfN96hvE0DQ7HlVJtn8Pzba+hjT\n5j2PaHZtrG1RNNN+9bdvX73zfxVZsfESM7fuWUxxfupmfau2vP5vEAuI0Tf+9aL5/L+XdTP+Eimh\n2/Oz7vlT591EqcpaBHFcmp6ba+JJtyp8qLHu3t/e/wB2pLXVppGd3uV2t8m5fmbdXmtv4shZVtpn\n/wDsa1P+Ene3m+RI2G7b+7f7zVv7OXUKeIhKZ6Tp+rQtcCFHZ0jTb/d2r/eq5p+sJJbyeS7FWb7u\n+vM7fxY8MrmDcV27vv8A/jrVoaX4mfzPPSbbt+Zlb722s+adM7qFaEp3PSPtjzRqm/8A5ZfMrfw1\nYkktr6z8yF2O77u3+7XE2Pie2+0Qu95tRl+ba25mq/b+LEt5F2PsTyvvN8rbaVPEcr0PRpx943Lz\n5pEfZuX7v3qydSmtpJo7Fpldvm2/Lt2/7W6sW+8QPIGeymVdz/M2zdWLfeNPNX5Jm/dvtdfu1lUq\ne9zRO2Mealc1tW1rzIWtkDfKnz7ovvf8CrKi1zzhF5MzMmzait/DWDqniqa53Ijqzqn+r37du5qy\npvE22IobnYi/Mjf7VdOHrHl4qnynpnh3VLbbFbI6l/vf71dho+rfdheZUDL8zL83zV5L4Z16Fm+e\nb7v8P92u103VN0LIjr8zbq+zlT93mPySnipxkdbb6pN57JNNIvz/AL3zF+Xb/erSSZLiSIJ93722\nP5d1ctaXm7zNnmMv3Uaata1uvMjV5nbEbbl2/dWsZUYy2PcweYVYm/G32i6e587zQ0W1l3/dqby0\nkZ0R12/e3Kn/AI7VbR50jd5ntlZfuvu+6y1NZxzSXC38O10X7q/dXb/FXnVKdrn0+HzKXKmUL61h\nluPnf+H5W+7WLqFrZyQlLl2Ib+Jq3dQ/fLv2Lt37Ub7u2su4VI5lmf5n+Zdu6vExEeWR7FPGfurn\nG61p+xl3uz/3F2VjzaOtwqzbNg2bXZfutXWX0aNItmm4fvdzbqg+w2ybkR925m+Zf4q8+pLlCnW9\nscHqmgvIzTP+6X70rN8y7qxb7RdsDPsw33dq132p280cbwum5VT5VZfvNu+9WLq2lzeYXmRQsKf6\ntU+7uo9p7p0YenGU7nD6po6W8mXTavy/LVNtJcsybJE/e/d27q7HUNPEjL56bP4dv8S1nTWKbt77\nvm+ZGo5pcnKfY5fThGJh2tk9veJbfZt/ztvZn+6tb+m6fM0e/wAnLK+1VZtvzUlvYbbjZ9mVdzf9\n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\ncJM02397uf8AhrKMuY9WjL3tTkbqxdXld081flVPk+aqc2nwwq3kq3+wtdPdafDLveHdG/8Aeb5t\n1ZeoWKRp/eO9W3baXN759Rg8UYNva/MiCBiY/v8Anfeb/drU0mH9586ZX/nn/FTb7yZJP9fJ8vyq\n0f8AFRYyT27D7NC2Pm3bm+bdWXKj6TD4ilKBu2sbx26oltsdlb7zbalhDtMf3ezb/wAtEX5W/wCB\nVU0+6M0J3o2z727+LdV2w3+WEd9m5/njZvlbb/drTm5TzcyxUeX3S3YwpJvKTNFufc+6rSxwrHut\nn2r/AAKqfdqBY9sDzPcQ7V/hVP4qsR+crM9tCqq3y1rGU4+8fEYzEe2lygv7jy/tP323Oq19o/8A\nBS9C/wACNKKkBl8WwFSemfst1Xxxb27tHxbKzx7lik3bmr7O/wCCkUaSfA3SxITtHiuAsB3/ANGu\nfzr8s44qf8Zxw9L/AKeVfypn43xjGUuKsoVt5VPygfCF3b7VdLlPkk+ZGWoI9NSV/kRmGxdi7/lW\ntO4sXkWQ7GTazfNJ8tWNN0V7eP7S6ZWbb93/AJaMtfrX1iXL7x9p9XnGRnw2eVe2mmbGzft/u/3a\nsNp7tiF0ZG/iZmrVXT/lXcixKz/xJ8u3/eq4mkwyM0LzKrb90S/wtXB7R8+/um9OjLmszkLzSYY7\nd7mY7V2/NGz/AHq4j4P+NYdH8SeO5nha2Vp4V3Q7WVty7V/3Wrq/idqj6TqEemwoyssTP+7f+7Xz\np4b8UPpvijxJZzJMWvrVm8uOX/lorfLX2+SUKlPDe1f2j4PiCvGeL9nH7JW+KV59n8ZXMLxyReZK\nzeZJ95q8+8WSPY30V5D5h3Nt/eVtePNa+2XFvreyTO3ZK0j7tzf3q5/WribUrP7S8ylGRm2/3v8A\nZr3IylI8L3TlPF2oTTaozptCsn3qzrySFbYzTbfl+4rfxUniK4VZN7p8+2ud1rVnkh8k7g397+9V\n/aKH+Il84iZ0wrf3axIpvJZofmrZgc3uijzDny2rMkj3Sb4PvUfCEfeIpP3f393+9TJB5kf3OP71\nSXCBl+5yv8NQTcMqb9w/urRI05eaRAx29ak2Oyq9RuN5yaVfu7PMpc0S+VCx7Nxy3SrWmSPHL9/7\n38NU6ktWCzLu6UhSidJbSSeTs7L/ABU2RXjZtnzbvvVHZzPJDsTbT93k4RUyn+1T93cxG/eOzO1v\n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\nsjjZu+X71Mvptuz+JF+Z2X+9UP2zzj9ptpF+X7i7vm21rGUj16NOMhGm/wBHCFJA/wB7bJ/CtMms\n0hX/AJZszfOn+1TFmtpoRsTKxptTdSeZD52Uf7q7V/iZq1p/EceOp9Ty7VbB7G4dE/hT72za1Ys0\njtvjQYP/ADzr1LxN4V8xVn2Kv8Xy/erjtZ8KTWcnnJt/ef7NfSU8R0PxfEYaUdTntLuJrNt8KMfk\n27f96us0XULpow+/dtXbtVP++qyI9NmiZd+0My1t6TYzRypawpj7rM33f96ipWOajS5Ze8db4fkh\njVbmZ2+b5dqt92u20nUsSfI7PuT738VcBpdi8MbPG/nfxJXV6be/ZofO34eP76rXnVPelzcx7OFj\n7P3ju9FvprPbvRW/vtXX6FrCXCr/AKtF2fxfLXl1jqUMkaJbeYp3q3zPW1Z69LtV7l4dm/a275ZG\nb+GuKpRlKZ6lHEcp6WurW00LeSkgj3fKyptXdUd1qiLN882xG+4y/wB5a5LS/EEzRu7u2z7qNH8y\n7qh1bXXt7rf9p+b+Bo3+X/d21jHDz7ndHFc0feOg1a+jWT98/LfKjfe3VkX148h2PMxP92P7u6sa\n68TOc/adrfwov8VUf7etpt8iOzlX+Tb91aqVGXL75p9cpRloaN5ffNLDN95W+dvu7VrIuryGZ879\npZfvM/8AFUGpeILaFd/nSfN8vlt/6FWXeX0zN9xXbfu+b5af1X3YlSzKKL7XF5dK1sky/N83mMi1\nXWN2YQwouPlWVf7tMtbzbHKnnblVNz/3qs2O9pR8iun91vlqJRlHTlOeWO9pqzV0tfs6hE+Z2b5m\nb5vl/hrdsbM+W3nIwjjfKNv3bmrH0t0WHzPtKpL/AM82+81asMsKzJC7s7Qv8393c1efKpLnNIYr\nmhymxpP7yR4ekke1n877rbq27MJcKU8lklZP4X+Va5u1vJrdVTyM7m3JV6G4k8n/AI+WZ1b/AHa5\nq1P97znbh+aUpSOhtbqG+j2edGd331b7y7a+zP28XiT4SaWJQMN4liAycc/ZrmvhqG/eSSLZbbdv\n8P3fmr7d/wCCgVybX4NaZIIlcnxNCBuOMf6Pc81+ScaxcOMsia/nq/lTPhOK1y8X5L/jqflA+ZLW\n4hk2wj5Ek/hZvu/7VasLW0zb4PnSNNv95q4iHVkhZnM+f73ybm/75rVtdVdXR4V4Xav/AAGv0+MY\n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\nvtkuZEXzdyqrblrnNY0WaNmTyfMSH5v3f/s1dNGtKXxH5hiMPC55jceHYZGDp8wV9su5P7tW9Pt4\nY4V2bQzP8jN95lrpL3T5riT59ztGm2X91tqvb2cMMxhe2XG/Kt/FWn1j3fiOP6vKNX3SGzsZFb9z\nDvDfNtrStbGbcu+LIb7+1/lWp1j8mzCIm1o/m+X+Ld/eqSCaYW8R+zM/8P3KUanNGyNI0+X4iaPZ\nC3kw7f3jf3fu0LPDCwR5vl37t392s1vOjl8mGdj8/wB7f92i4uv3zujq6fx7fu7dtaU4395SM5VI\nm9Hqzx7fJTZ/teb8rLVDUtcuVDPNMzL/AA7qwf7Qmb5JkZ5WRV+V/l/2aLy48lgn2n7vy/draMYx\n0MpVJcvxF9tYnvGZ5rn5f4V37tzVJHqTyK9y9yqeX91W/irnW1JI5j5brTP7URVeGby3i2q6R1pK\nnzQsc3tpxkbsmpOq/anvF+Zv3Ucm35v9moI5kupHuZpmZ1+9tesua8S4kSa5Xem7918u7a1Tw3SR\nyF96qnyr8v8ADWVTlUCI4iUo6m3aum9YYfMQf7P3WrSt1dUXUk2v8/7qNl2qtY9ncJ8qJy2/c+2r\n0N3DJ+9mdmXeq/u1rza0pOXNA7acubc6fT5N00dtszK3y7ZP/Qt1XZLpFm8l5l3b9y1zFvqT/ax5\nMzStsZfm+Vavzah837sSZX+HburyK3P7e/LoevQ5JRN2HU3dfO8pY2X5fmepGuPtCpClyqNs/e+Y\n/wAzLXMyah5kwT78TN8219rLVv7XMzfvjvWP/wAerLllKPMerTrcvuo6e31a2hhhT5pX/vf3v9qv\nuv8A4KQ366f8ENJleLeG8WQLt+trdV+fEeobY4k+438Db/lX+9X3z/wVCu4LP4BaPJPLsz4xtwrc\n9fst0R0+lflPGtNrjPIe3PV/KmfC8WTvxZkrv9up+UD4zbXJl+SzhjVfveYrfMtWtO1p42LpMpDR\nfMzfNXIR3XmTfvH3hl+Zl+VatR6n5NwERP4P4a/WFT5tj9E55KRJ8bPHj6D4BvLmG8aOWSDykaP5\nm+avjbWrp4ZG+dnT73zfer2T9oTxpNqGtJ4ehfy7e3i3S7fvf71eM6sySM3dV3f7zL/tV97keH+r\n4Xml9o/NOJcZ9bx3LHaJyvi2L7RalNm/cv3a5fR9Y2q1hNIyj7u3+7XT68u7d96VfK27vu7a4PxB\n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\nu/LU1tp+795sUfxbVWp5UORDHHt+d92V+6uyrml6XLfAbE+7/FVi1s5ribZ5H3vl3KlddoOgwxwD\n+Jdn9z+Kuimclcz9J8MvLl4f4V2/N/E1blr4Z3TbEmaUx/Mv+9XSeH/CkNxJ9o8jj7yLs/irobHw\nik0Y2Kqu3zblWrlE4vafynE22i3MK7PJZm/g2p92tVNPmt8edNsZV3f7O2u3bwnf2rRulszM0Xze\nX92qF94TMavM6Rjy/urIrN8zfw1nUjzfCbR5/tD9Wa/adn8lcMvz/wB2sCa/m+1H51xs/uV0d9HM\n0MrzFl3Pt2t/DXL6lDDbt8779392voY4WHJ5nFHFS5iWHVjbtGmyT5vm8z73zVu6fr3l242O3yvu\n2t/drkVnSFT95H+VUZqtJdTFAifeX5ty1Ty+MvsmscdKOp3f/CUPI29Jo96orIq/+zf7VWo/Ejze\na6XO/an+r/8AZq4CG/mRWd+DN9xvvVN9s2M298SK67FX+7RSyvmi7FSzC8LncQ+Lv9WgdmX+Py3+\nZv8AZpj6g8is5mhXc/3ZG2yf73+1XLW+oC623M6eW7fK6t/7LWrpaxxS/wCk7SrfKka/eVa0/s3l\nMvr3MbC3C3s2yFFD/dVm/iqa3t7lZIvOuVcN8rwqn8NV7ezhXytjthX3Izf3q2rWzX7ULaZ2x95m\n2Vay/lOf657xd0exmkmj+dW2/Mi79rbv9qumtdJKsIXeNn+98r7lXdUOg6P+5aZ0jZF+42z5ttdh\npGnpax+TMjNFJtbdJ96pjg77DljOWPvGHH4bTy2eSH545fkbyvvf7LVch8PzCP8AfI3+q3bo/uq3\n92ui+xw7fJk+Z/NXymb+FauLovzO8KLv+b5mqo0OWJP1jmOUm026urhXm2od33pP7tUNY0na2+H5\nvMX733l3V111pHlxvNs2lZf4n3bv9qsfUrGGPZ5Ls+7czL/FVRwvu8wvrnvHA6xZ7Yc/ciZGV/4q\n5m8h8yH9xuG5NjMyf+PV3viCH92uxFXbubatcXqcbwhpHdjK33/3X3a1p4fsOpiOU4/WrfdIf3Ox\nF+VmZ/vf3a56+haPa7vuX5VdVrrNatd0zQ+Tvj2fPt+7urndQjdmSQ22759u7d/7LXTHA8sbKJhH\nES+Iy/ImZWfeyMzfer9B/wDgvLDLcfsZaRBEQN/j+0DZ9PsN9mvz+23P2j59p+T5o/7tfoH/AMF3\n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\njzM6I7ZV9u2tvw1I6zeTcuqqv3FZ/vVz6tBNJsT5dqbqvaTqD2rq77W2v/c3fLWNRe77pvzcp7T4\nHunjgV7yaNnV1+7/ABL/ALVe3/D+8doYXmdXdfn8xfm3V84+CtaSM/ZkmVWj/ib+LdXsXgLxAlvL\nbwvMxST5vlb5VWueXPLUmXwnr+m3j3Vx9mubbcPvfaFSttredk/1LOV+aJm/9mrj/DurabcbHhuW\n3LLsRt/+d1dHpOpQqwR7ba/mtukb5d1Yy5vdfKcXumjZbNx86T/f/wBmkjjkhmZ0myPuRR/w024u\nHmhVbb5fvfNVDUtbe1h8l5o2k27tv3VrT2kdwPinUr50ZrZHXaz/ADs38NItu99cGaZ22xrulZdr\nbmrDGpXNwvyXKlWf7v8AEzV0Hh23kUpcvD919z+W3mKrV+qxxXunyVPC+7c1dH0fc2Niuu1flauk\n0/w7Gqpcuke5V+7TNHsknmV158tPnkk+XdXT6bY7Yw72ylP+en/j1ctbHSlHSR2SwvwmcvhO2uNj\nx2zBI/m/4FS3HgtFy9ydu1/ljb7ys392u00fT5poRM+5hIu5G+7/AOO0TafbRloQVUfKit977v3t\n1cUswlGV+YxlhIxPO7zQ4Y40mJYmbcnzfeh/3qzL3SUa4H2PdGrfdZn3fw13+o6W7SNbQ+YE27lZ\nl+Vt1YmpaX9jy8Ntimsw9pvImOFlDY5ZXht7hEdFcL/e+8zUR3W3zHfzFT/ZSrd1ZzWsk2x/nml3\nIzf3azrya2kgPk/cVdrrt+9SliveNPqfcvWOtPp+N+7f919z/wANWbPxMlvI+ybcP7rVyVxcpb26\n2qbdsf8AdRvl/wB2oG1p1jSJ/k3fLuVK0ljubYyhhe53reLkmjdw67V2/LTG8XQWbEJub59rNv8A\n4q4Btc8qNn3su1PkZqzZPFm2NbnfJsmXcytVfXOcpYeUT0+bxl5cOyzvJvN+78zfe/2az7zxJbTM\nZkmZjJ/ra8yuPGybW/fMflb5V/i2/wANXrHxBc3EIeSeMMy/db+Kn9YiqVmKWHnGXunbLqUMzNM9\nzJtVfm+b7y1HPqPzD52fzE27Vf7tctY6w6rvtpmbzNyMrJ/6DWjb3KbldPLYb1X5flZm2/xVEsZy\nx5UXHDXleZo7nkjTzvM/uszfN5dI2+RmTezbU+X5f4qhs2hk23KTf3kb5/lqyykSI/y7Y4tu5fu1\nnUxnKdEcPKRUuI4XbeifL8v3m3fNX2n/AMF5lU/sLGR4ywj8VQtgH/pyvK+Mb6PzI0gh+ZmRv3i/\ndr7X/wCC6Nobv9h2RSoKx+JYpHXuQLO8PHvX4B4sYj23iPwlrtUxH5UTxcfQVPN8H5yl+h+EmrR+\ndYr8zNuRWRWX/ZrlriF7W43p/ertdaX7HpsU3mNtZfl3f7tcNqFx50pP8W6v1b3T7KPxBDqk0Lq6\nzN8tdL4f+I+v6fMjw6lJuX7jbq5BULNtq1p9u7NsfcB/eqSuWB6hZ/FzxXNEIbnUmmi2N+7uF8zb\n/wB9UXHibR9QZ/7Y0GxuVaL5NsW3/wBBrhPOmjVkR+Vq1b3T/Kyc7v7v8NVGXLIylsb8mk+Br799\nbaJNb7U3fu5/u1dhuLaSza1h3Ou3b8yfNWJazO4+5tVvmbbWnpczrPvnmbC/3Vq4ilL+Uh1zwreX\nUMWxFaPZ91l+81cfq3gzVdPlO22k2r/d+bbXrWrLba5ouz5kfb8jK+1lrzvVtS8SeHZpLWab93/e\nX+L/AHqn4RxlPmOUKzW7fPwy0+4uvPGyZPmXvW1/wk1hcnZqWlRt/tL96s7WmsAwa2Tll/h/ho5o\nm3xFCiiioLG+X70qrtpaKr4QCiiinHYAooopgFFFFABRRRQAUUUUuVAKq7u9b2mTTW+kl027awVO\nG+f5q6CyjkQRpDtxtXg0SiY1T6L/AOCd+nzab4s1Px4kK/aY7P7LYXDfehkZtzN/3ytf1DfDj40w\n/HH9nfwr8R9D1hZbbVvCtvFcQ+V80c0caxyf+PV/OP4F+Gt/+zvp/hvwTqr7dQvNIh1a/haLa0P2\nhdyr/wB87a/Zf/gh/wDFKHx/8G/F/wAHbzVVkuPC91b6ja2rfNttZv8AWMrf738NdGHlyzPnsVUl\nUlofVkd8/g3ULLR7+88ma+sGngk3/wCsaP8Au14t408D6b40+K0HiiHw9CHjWQSyW8S+a0n96u2/\nbAvNS0fxH4O1vSraR4rWWaB5FX7qyLXEfFr4veDP2cfAL+PPHPiqPS7toma1t1TdPeSbflWFf71d\ntSpCj7xx04zlofDHxdv7Lwt+17Lqt9OsVvp3iKwmnd8ARoghZs9hgA/lXmv7WH7XnjD42XVz4b8E\n3rWuhb2+1XH3ZLj5W/1f91aj+I3j4/E/VNY+IN1p8lsNTaaZoJm+dRgj5j6kDJ+teHePPG1hpeiz\n+RtlZlkbaq/N8qt8zVXFmKlHD4Jxejpp/gj9L4zjJ5flK/6h4flE+MfCljNeeINYuXDFW1eb+P73\nzV2Nu3kr5PzfL/DXG/DeN76zmmmfa81/I+5v9pmrs/JTcmE3Oq/Jz8q/71eRS+A+XfUfNC8kO/Yu\nJPl+ao22L8jwq4+7/u1NcHdD8n/AttUmj27/ADkZlb7u2r+ID1/4A+KPDfgrw34h8Q+IYY5biP7O\nulqzfN5m7c22uM+JXjK88Xaxc+IdSufLT5nePd8qrVDQJENiyPt2L/d/9mrzD4+/Eh7iY+EtKmUL\n/wAvTR/+g14lajKti7HPHD+2q/3Q+HXjR/Ff7TfgVbZ/9Fh8Z6WsQ/vf6XF81e5/8Fbv+af/APcW\n/wDbOvmf9nP/AJOE8Cf9jnpf/pXFX0x/wVu/5p//ANxb/wBs6+6y6EYcMYpR7x/NH6TlUIx4Kxyj\n/NT/APSonxrQW280UjLur5o+OFoooquYAoopPn9qoBaKKKXKgCgNu5pU+8KNqKo2fepRAaowMVoe\nHr99PvPtMfXbtqhWx4I8O3vibxDbaHpsavcXUqxQKzbRuZttPm5feIqe9Cxqza5e6lqiXM0zZ3L9\n771faHwzsPgV46+F/wAN9V/a0h8eXPgnwK9w32Xw7qKt/osknmSwxrJ91pG/iWvmzU/glp3w/wDi\n1/wrXxp8TvD8N3byxrPeafdfa4I5G+bbuX7391q9G/as+KfivX/CGlfs+eGvCOhwXWl2qyXl14fu\nd32i3+6q7f738VZ168ZWgt2ctFa3Z6f/AMFPNT/Zm/aA+COi/Hv9nj4kaD4L8I6JeLpPgP4HWcvm\n3VlZ/wDLS6uWRv8Aj6kb94zN/srur4El37uKdqFleabePYX9s0M0b7ZY5F2srU1mTjfTjGUTtGsN\nslDO7Sb0FIxy3FSW6/Mc/wANBHwmv4R0/wDtLxJpump8pur+3i/76kVa/pe8TrDa2trpriZkh0iz\niWP+H5beNa/nO/Zt8O3Pib48+CPDyQ+c+oeL9NiSFfvf8fC/dr+ibx1ffY/EF5bb9zLKyIzfN8q/\nKtcuIfwxOat0OUurxJrhoXtmTy/7zbVrndUaaNmRPl3bm+at3UGkkaV7lI1XbtZV+ZqwdabzF3vu\nJZfkk+61c0vdiXH4zj/Elv8AarcI5VFXaz7vm2tXDeIlmXels7f7e77tei64sK7/ADhGEjRfN3fe\n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\nAKDSx3zxSfJ8m7+FWrMa6e3VNiK23arr97dU26Zm2JJHhdzO2yo5eU2lI7fwrrv2dvLe5Vw1emeC\n/FSQ2ohmufn2fKsn3tu6vB9L1Z44RND8m35v+BV1Gk+JkVVe52r8v+sX5vmqJR+1EyqSjyn074X8\nVbV+zedlGT/Vt91W/hrrtN8VFlxc3LSCNtyRq38P8VfN+h+OvJ/dzTbVZflbd81dlpfjf5kSGb7v\nzrI38VRKPc5JS949r/4TR4bMwQosifegXftZv9msfVvGTvHK/lrsb7/8X8P3a8+m8cPIw2XWW/vb\n9q1h6t8QPLiaa5mWJm+8vmtWUqfNEXNCJ5Ho+oeZJHvSNV/jj3fKtdr4ZkjjjJSONF3bWhj+Xd/t\nLXmmizWccbTTTfu9+35fvNur0Lwu32ZYn3/d+XdJ/F/vV9ZWxXL8JhTw8fhO58O/JCsIjVNyfdb7\n1ddoMiYZHTy2+7FHsritLjhnkExdZtv35N/8P92um0u5aGNJrr5UVtyfNubb/DXHLFSlqbSoxO10\neaZm/wBJm/u7JNu2rs1qjZuYQuybd5q7/wDx6szRbi2+yb4JmmaP5nX+GtKO3S82pMcFk3eWv3Vr\niqYocaRn6pZuqo+zeYUZtqvuVqwNXtnk+5bSK0m35f8AZrs1VPLSN3/e/MvkslY+sWbr5ttDNu3P\n+6j/APsq5vr0YyKjheaWh554mjSVmubban73ZuX5q5fUZptrQJ8p/vbK7nXLOGBXj85Wbezfd3Lu\nrldQtYPlmhdmlb5W+X5W3f7VV9el3CWF974TjtWvoYv+XZWeNNrSfMv/AAKuZm1h2kVPtLZXcrt9\n1a6bxJapHbtC7soX5drfxV5/rn+jXTp8zP8Ae2s/yr8tdVHGe0OepQlEs3XiKa3VHd/3qtt+X/0K\nsfUtcu4/3jzM3z/dqjNrk1vcfIi/c+fdWTretQyxs79VrqjiP5TCVHlNWz1SNrhnm3Ntdtv+zXTa\nHfR+Wjvu2feRZK8z03Uo/tG/zm+b5q7fwnqU/l+T52Xb7isn3ar2yD2fwnZWcyRsj37qqf3l/h3V\nr6e32fZD/rG+8vmf3awdPmn+0RPNMrrs3PtSt6wuvJbznfn+7s/irCVbll8RtGP8xsaX5KlU+88n\n3of9n+9VltkjM+xSrfeX+H/ZqnYrNcMzvtaLbu+X+Gr0bIsLTf8ALuv93727/drmljJfaNqdMjk8\niOLekOyX7zbd21f9mvt//gt5HHL+xS0MhI3+JIlU4yATZ3g5HcV8UTXDx2bOkLD5f4q+1v8Agt9c\nNafsSvdLbiQx+JYGyWxs/wBFuvmr8O8SK8qniLwu+1Sv+VI+ezulyZxgV5y/9tPwj+Kl9DZ29vYQ\no3yr83+9XAM38dbfj3WX1fWXmR8isvTtPmvrkRRoxr9wjE+kj7sbhY2/nygbe9b1vp7w2/B3M1bO\ng+BX+y75E2u1Q6+0OlwsiDJ3bavl5TPmjIxv33nMjupO/wC7WhpNqm754WrDuNURmOxG+Wki8TXl\nvIHR+KXwi9+R3lnojyf6naE+9u/i/wB2pI9Njt1i33Knb8zs38NcpY/EK/DeTO+1W++y1c1rTLnV\n4vPsdaDI23YgpylzClHlOuF5YSL9j/tKEj/rrUV9pMOuWv2aYK8ez5JF+avO5vDWuxMXhDOF/iV6\nm0xPHdsv+hw3RVfm2/w1MecqMY7lXxLoNxouovCfu7vlrKkZ87Grc1vWdSuBs1WxIdV/5aJ/FWHM\n7yNuakaxFopFbPBpav4ihv3/AGxSMu2nKu2hl3VAC0UUVcZAFFIrZ4NLRHYApeVNN53b91LUAAbd\nzRSKu2lrQAooooAfHHukXf0avW/2VvA2m/EX46eFvBmq7fsE2qRy37M/3YY28xv/AEGvKLH95IN/\nG2vev2WfDepWV5P4wsJZEmX91ayMn3W/i2/8BqZe77xx4qShE+sv2ttY/wCEm+M0/iq2mV7aZVit\n2V/uwrtVV/4Dtr7F/wCDf74jWfhL9q7WvDd5qvlL4i8HzQMsn7xZGjbctfn7pdrc3V5/aXiR8xwp\n92RPvN/er3f9gH9oCH9nv4+W3xatoVuIdJsrj/R5H2rM0ke1VrGnUtLnkeI5c5+wv7ZX7SnwZ+G/\nwz/4TDx7ryxLp9xG1rZx/wCtvJl/5ZrX5F/tFftQfEP9pLxxJ4w1hJokjdl021uLjdFZx/dXy1/3\nfvVmfH74jfEj9pD4gXvxF+KPxFjkVrpv7I8P2cXl21jD/Cq/3m/vNXmcmi6Pasz/ANvXU6MrblWX\n5V3f3a48Zjp1fQuMfZnqOlRFvhnLDe3ivmxuBJNG3GPnzg+39K8h8dah4S0DwXqjpNG5a1mbdGm5\nmby69T8L29lZ/Bt4IogIF0+7+QtnK5kJrw341eILXRfhnqt/ZwqhXS5otrL8vzLtr3eKFz4fLWv+\nfMfyR+gcX64PKV/1Dw/KJ86fDO3ePw7BN5PMm5tzf71dTJvhzsT5fvfN/FXP+B/9B8M2cKQ/6yJd\nm1q2lmeWP998p/utXPCOh8pU+ImjjS3jaZJmK7F2rVSS48kF5Plb723+GoLrXLaPMP2nZtfbtasa\n+8RIvyQ7Sn96l9rQXLGRqeIviU/g3wfdJbJH9ouG/dTfxL/u14TeXc1/dSXly7O8jbnZq6D4iatL\nfXsMH2reiqx2BuFaubqY04xlKR2UafLE7L9nP/k4TwJ/2Oel/wDpXFX0x/wVu/5p/wD9xb/2zr5n\n/Zz/AOThPAn/AGOel/8ApXFX0x/wVu/5p/8A9xb/ANs6+nwX/JNYr/FH80fcZZ/yReP/AMUP/Son\nxrRRRXyx8WFFFFACMMjiloorQBFXbS0UFd3FT9oAooZfmye1FPlQCt+7au1+BWr6bo/jb7Zf7d/2\nC4W1Zv8AlnN5fytXE0b3Vg6Nyv8AdqZRJ5UbUWnzLdPc3k2597M0m/7zf3quW8F42rrq763J5i7d\nszP8/wD31WENVuQhTPBqM31y38bCr9zlMOSrzXub3xDvbLVtcTUbYbpZrZWum37t0n96sBd67t9G\n4NIzvTJF+bmp5TeO4L8nCPU0bKmE6bv71RbTu+SrEMM0mfumpJaufS3/AASn8K/8Jh+338LdKmto\n5IYfEa3T+Z/0xjaT/wBlr9w/Fd1CLyWZ33edcMySL/eavyN/4IS+CpNY/besfEkyRvD4b8L6hes0\nn/LNmj8uP/gXzV+sd9Ntt/kfeJPvKz/xf71ediJe8Yv3nymRdN+7d/m+V/7n3qyNSie4ZY3s22sv\n975lrS1BrZbqSGO8Zwvzbf8A2VarXiw3UaTfbP3f/LKNflaSubm6s6oR945XVrVxG6PbZf8A5a7n\n+Vv96uS1LSUhYiZ23yP8vlv81d/qcJaRke2XLbvNb+Jq5i8sZppJSzyJMqfJtiX5f9ms5e9E6qcT\nzTVNHcRo6Iqtt2urL92sSTT3jZ7Peqn7zbl/75r0DUrFBueZY5TMrK23+GsO6tLZQ1s88hRtvzNV\n/YOnlOVW3uo4/J2fMsv72T+FarFZlZJ98ed27zFb5q3NUtUWHfbQt838O/5WrNuP3yt9p3IJNv3f\nm2tXLKjKUtS170feM2SZJVdEdkZpd25futt/hr7f/wCCZgI+BOsKUxjxfPz6/wCi2vPvXxFJHtaV\n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\n/wDj1ee+KPDbrumRFLLuVGb+7/dr6/C+9HU+IxUZc/wnlEmkzRzNC8K7q7b4f2sMl8qXj+X8mxd3\n+7UMmiwrOHdF37v4m+7XReDdLmWbf23rsWvYj7sDx6z7HZeHdN8ny2fyxt+VW/vV2vh2ztmsykaS\nHc+3dIn3lrH8Pwu0kcMI+dvu12Wh6a8d0zuikyLu/wB2uWQR93QrWenwiZtj7hJu31YhhSOGaG2f\nzZm2qjM+1dtaVxZu0zwvCuz7u5fu1FYWsNvumvF2Q/eaRk3bdtcdWnGWjOynLljzEniKzfwn4Tl8\nc3KKyw/urfcv3pP92voz/g4GRW/Ym0VpIDIq/EaxZlAzkfYr6vk/9qTVnb+xPDsbzfZPs/n+WrbV\nk+X5Wr63/wCC+8dxL+xHpyWgJk/4Tu12BRk5+w31fi3iDCMPEPhZf9Pa/wCVI+Yzip7TOMF25pf+\n2n45+JviFNofhs2ulPs3Lt2x15DeWuta3e/aphJI0jfxV1Ta9pv2iKHU+V3L5qt/6DXsfwu8ffs0\n6PCH8VeFbi8l8raixsq7f92v3OPKpXkfSS9rH4D5/wBN+HPiHULhE+xvhm27tlddL8ONF+H1n9v8\neSeTNs/0ezX5pJG/vN/dr174hftIfD3SbO4sPg98PbW2m8rbb3l187r/ALq/3q+bvFF14h8QatLq\nus3M000j7mkmatfaR2gKn7WWtQl1zxN/bV4ttDttrb+COH7tQMqbWS2/76rJWN9x+RhRHJcq2yN2\nqNfiNuX+UvJZlW+d1ct/eqwtvDCux32t96qEM0zN8/y7fldqvW7PMy/e2/3m/iqjOXulu3td0Y8z\nrXcfDXQ4Lq4abZ86xMyLt/irkbE2y/O78t/DXf8Age6/s2MO/wAiM3zs1KK5SeX2m4y88P21jm81\nKZlTzd27dXDazrU2u6t9gs5pPJjf5F/hWuh+JniIaxeyab4c3GST7+1/lVawrfwvqXhvw9N4hubZ\ni4X5G/u0x/DI5vxQ0J1hvI/hVQ/+9WbvX1p80jyuzzNlmfczVEy7aDoQ+iims2G49KBjqKKKXxAI\nq45NLRRR8QBRRRRyoBFXbS0qru5TpQy7TimAY249f4qlt4/3io/FRLwu+rOnIJJgnks5Zv4aXMiJ\nS5UftF/waW6JeeHfi18RfGGzamqeDZrJmZFZfLh2yfe/vbmr76+OUk2jeLnvHdvKml2QMqbVVq+P\n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\nf4dvzbf9mp4ftKr5zn5G/iV/vf71MwqR5veIpLXzJPkTcu7+L5adHbw/Nbfd/ubamkj8lmd02bfv\nfxUNb7pN6Ozf3G2bflropy+yeNiqc+a5VlRVjXcfl3Ns3VRvFRYWfYvzVpXSo2zzNrfN91X/AIqo\nXkKW8n7vbtk/hrXm933TljH3vePN45Nred5zbmf5Vq1Z3HmRs8yMPLXbu3/erN+0TSSI/ULVu1k3\nR/I7Lt/iavLj8J7cDZs7942CbF2qv8Lfd/3qvWd55LLMkzbv7yvWBZ3T+c1s6f6xd1aNo23CQx8f\nd2/xUvscpvTlzHYaT4keT5EmkLL92u28O6lqBVdki4k+Xa38Neb+H1fzn8yHd/wPbXa+G7ry23wX\nMaOrr95a8rGR/lPoMD71rno3h26m8zZNcsu1NsX93dXceHYnvJC/2zfKq7XXZuVq880O6RVHlou5\npV+0SSJub/gNeh+FJk/dI+5X3fJ5a181iKfLGXMfWYOXwo7HT4XkjR5uFZfkVU+XdWgsKJIsOxlP\n3k/2VqLw7bvHHF5w+Zfm2/3q6GOGZfnyrq3zeWv8NebDmjOx63LHl5jm76xSCJZrZFWRd37yR6wN\nQt/LtxNeW375nZlZW3fxV2OqadCzN/Au3d9zdtrH1i1hWEQ/ZlLqv3lX7y17WF/d7Hh5gubWxwmt\nW+63mTYvms+373ytXE+ItDtpoWTyVTzPu7fm216X4m0lLWTZND87fws23y65q+sYVt3hto2Mrfc/\nir6vCSjy8yPh8dHml7x5bfeH0SYPMm1N+7c33WWtrSdJTzNnkqWb5kb+Hb/DWvcaCk0m+aHYirtl\nVvu1Y0zT0hiDwoodv4v4dte7CXNC0j5TEaVbo3PD+lsix3LosW7/AMd/2q63TbObc3yW+9UVd275\nmrnNLaGHykdN275d0f8A7NXR6TIlwwS2dm3f+Pf7tYy/uii+UsrGLxTNlkRfllVfl27a5LxX4403\nWLi503RppGgsdqyxxy/6xv4v+BUfFv4jQeA/D8xs7mE39xEyRQr/AMs/l+9XnfwjM0Oj/wBq3nmF\ntUlZ4mb5d395qwlz850VJe6dd8ep31jwn4O8cwzMdP1rTt8X2hdzRsu5dv8As7dtfav/AAXekRP2\nP9BVxkN8RLQD/wAAL8/0r4K8Xak958F7/wADanqTNc+DdWmn07d/y0t5Pm2r/s195f8ABeJ4o/2Q\n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\n8k+827+8q197XEk0cJmMDf7v92vgc9xcqmM5Pso/QOHMv9nhPbS+0Zd5dFf9GmdX3S7E3N826s+4\nuHjLQ2ybv4n3fdq1fTPCsyJCwT5WfcnzbqqTL5jOmyOXdt/3vu/drxvby5/7p6lbCxqcyZPZw/MP\n9Tv/APQastH9li/f7RG3937y1nxslvMieS33dztv/iq4l1ugX7TDtT7zru+7XbTx/tDyamB5djPv\nvlaO58jcGfbtZvmZa5y8jtlhUuV3+a3y7/vbm+7urqdcuraSMzTP/HtXb/DXK6tdQq0mLzlfuLs/\n8er3sDiO54uOwzjuV7qSH7Pv6tG/yqv8P+zVZtReONv9Zuk+/UF5qVszF3diknzI38LLWHfaw8dx\n5KO2N+1vl+Va9unUj/MeBUjOJfvtWCyeT5zI+z/nr81YmratuJhCKr7t3+t3K1ZM18/nN9p+XdLt\n2r93bWXfX3l3bJ9pX/pkrf8AxVavYx5i1qF4dvmWyLG7L+92/Nur7d/4Je3C3P7P+rMu75fF9wp3\nHP8Ay62lfAc2sBtqXKbGbd8q/K+6vvL/AIJUTrP+z5rZRSAnjW5QEnOcWlmM1+J+P0Irw9m1/wA/\nKf5s+c4snfJmv7yPg+4vkhkEYGVVWZ/9lqoX11cx6bcu6ea/lf8AAv8AeamR3kNxMZn+VZNzbV+7\nHWX4svEs9Dub9LnY7Iy/K+35f7tfr06cef4T7CnW5YHy9+0V4sTRZpYV/wBdcKyozf8ALP8A3a8Y\n1SP7VHHc787k3bq3v2hPFH9ueMpIYV2xRt8nz1zml3D3Gm+S/wDDXr83LCNjhl73vFKNfKYps/jo\nkjG7e74q3JabUfYjMf49v8NQyL91Nmf9qtPc+Ikgb93j+KlhkdpN/nfL/dqCSR1U9/nqJpHVagqM\neY19Njea6XZNw38NbE2lu/8Aq0rntLvPs8yu74rqtL1y2lt/L+6f71V9ozlsZtxoT/O6I3/Aqrf2\nbeQuudu//ZrpPMT5f4v9mpo7e2Zf9R8y0+VBzGFpuqaxZ7U85lZX+Sum0fxtqsPyTBgWf52b5qzm\nghZd+xflf7rU5ZfJ+5D977lHLKIpSO90vULPWI/Jum8p5F2vIvytXSaVZa3bSRxWd+0oZNv3/l/4\nFXl+n/afOT+997czV634D1j+x9DfVdV+5t+Vf/ZaPhgTLl5uY8//AGlfC1zNpFtrY2sYfll2t93/\n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\nD5bP83ypudY/vbv71c3q1zi387exLbvmb+JlqTUvECTRvbIilpE+9G1YF9rkMjb03NJt/if5a9Wn\nzS5TyKnITX2qPNHHNDtbbF97+Ja/Qf8A4JKPv/Zx1rE/mY8a3PzZz/y52dfm0upQyfcdt3+y/wAt\nfoz/AMEe5PM/Zn1w7GXHjq6+93/0Oy5r8b+kCreHVT/r5T/Nny3FTvlTfmj89re58zZ9mm3LNK3y\n/wB2uW+LOqTQ+Gbn7G+3dFt/3a0obw28Z+8pbds2/wDoVeffFLxVDbtJps213mTd5bf7tftHLLmP\npoylI+UfHSvJrlxcv99pW+ZqoaNefZpmL/datTxtvk1iV3+4z7q59ZTFOrJ8wV91dEY+7ymkTp/J\nkjV38nG7+9WVfSPHhH3Y/wBmtCG8S6sU3zfe/u1mXnzbnR2Lf3ar+6Ry++U5Gy3u1RyY/g+7Ukkj\nswTYtRbTu+SpNIg29pPMd8GrFrqE0Lb/ADm2/wB2omhmYb/vUpt3X5O/+1Vf4gNyw8UOijem4f7V\nben+I3kZoU2ruriI43b5NjVdtfNjZZtjf7tLm5SZHZeZ9obfsVW+7tqeytd2Zsq/+zWPo94nkL87\nH/erb0+8QN5KJ97+Ja15uaJiafh3T/t1x9m2bPnVV3f3a6/4gf2lHpNtoltayBIYt0rf+g1zfhO7\nhj1KFLnanzbXZv8Aer1S+bTW0dtVSH7YWiVWVnp8xHNHnPCNem+z2svyYTZ8y7a84mYtMX2Y3V7n\n4/j8N6tapbQ2EltIy7vL+9Xj3iLw/NpVxvSFvKb5qj4fiNqcrmVSqz7tlJToVQSLv3UHSa/h218x\n/kHP8VWvGEwjjhs0udyL822p/DFskamZ3XGzd92sPXL57y/d96srP95aX2zHl5plMnzGrR0+aeO3\nOx/mrPjH7zD1s6SsKxsNn/AmqAkXtLvHe1MLvvdqbqU1zb7tnziordU8w+S/zLUupfvpxCjtv2f8\nBoI+H3kV9P1a5uG8n7v8PzVfurxLeNn2bf4dy1Hb2MNrGZKjvmSSEwvyfvfLWgub3x1vqW6RXeZc\nN/DWxYpuhlmhdii1ztvp73TLhPu11WgzPZ27o6KEZPmVaA+IzZL77L7q33qI7hJ1Pl7R/ElWtUsb\nZm3pG23ft+7VKPS3jmZN+0M+1Kr4hfEMXWE8zy3fO3+9WjDveH7T03fcrMt9JRm2fKSv3/7taMdw\n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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 26, + "metadata": { + "image/jpeg": { + "width": 600 + }, + "tags": [] + }, + "output_type": "execute_result" + } + ], + "source": [ + "!python3 detect.py\n", + "Image(filename='output/zidane.jpg', width=600)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "ijTFlKcp6JVy" + }, + "source": [ + "Run `train.py` to train YOLOv3-SPP starting from a darknet53 backbone:" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "Mupsoa0lzSPo" + }, + "outputs": [], + "source": [ + "!python3 train.py --data data/coco_64img.data --img-size 320 --epochs 3 --nosave" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "0eq1SMWl6Sfn" + }, + "source": [ + "Run `test.py` to evaluate the performance of a trained darknet or PyTorch model:" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "colab_type": "code", + "id": "0v0RFtO-WG9o", + "outputId": "6791f795-cb10-4da3-932f-c4ac47574601" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', img_size=416, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='weights/yolov3-spp.weights')\n", + "Using CUDA device0 _CudaDeviceProperties(name='Tesla K80', total_memory=11441MB)\n", + "\n", + "Downloading https://pjreddie.com/media/files/yolov3-spp.weights\n", + " % Total % Received % Xferd Average Speed Time Time Time Current\n", + " Dload Upload Total Spent Left Speed\n", + "100 240M 100 240M 0 0 17.9M 0 0:00:13 0:00:13 --:--:-- 20.3M\n", + " Class Images Targets P R mAP F1: 100% 313/313 [11:14<00:00, 3.02s/it]\n", + " all 5e+03 3.58e+04 0.107 0.749 0.557 0.182\n", + " person 5e+03 1.09e+04 0.138 0.846 0.723 0.238\n", + " bicycle 5e+03 316 0.0663 0.696 0.474 0.121\n", + " car 5e+03 1.67e+03 0.0682 0.781 0.586 0.125\n", + " motorcycle 5e+03 391 0.149 0.785 0.657 0.25\n", + " airplane 5e+03 131 0.17 0.931 0.853 0.287\n", + " bus 5e+03 261 0.177 0.824 0.778 0.291\n", + " train 5e+03 212 0.18 0.892 0.832 0.3\n", + " truck 5e+03 352 0.106 0.656 0.497 0.183\n", + " boat 5e+03 475 0.0851 0.724 0.483 0.152\n", + " traffic light 5e+03 516 0.0448 0.723 0.485 0.0844\n", + " fire hydrant 5e+03 83 0.183 0.904 0.861 0.304\n", + " stop sign 5e+03 84 0.0838 0.881 0.791 0.153\n", + " parking meter 5e+03 59 0.066 0.627 0.508 0.119\n", + " bench 5e+03 473 0.0329 0.609 0.338 0.0625\n", + " bird 5e+03 469 0.0836 0.623 0.47 0.147\n", + " cat 5e+03 195 0.275 0.821 0.735 0.412\n", + " dog 5e+03 223 0.219 0.834 0.771 0.347\n", + " horse 5e+03 305 0.149 0.872 0.806 0.254\n", + " sheep 5e+03 321 0.199 0.822 0.693 0.321\n", + " cow 5e+03 384 0.155 0.753 0.65 0.258\n", + " elephant 5e+03 284 0.219 0.933 0.897 0.354\n", + " bear 5e+03 53 0.414 0.868 0.837 0.561\n", + " zebra 5e+03 277 0.205 0.884 0.831 0.333\n", + " giraffe 5e+03 170 0.202 0.929 0.882 0.331\n", + " backpack 5e+03 384 0.0457 0.63 0.333 0.0853\n", + " umbrella 5e+03 392 0.0874 0.819 0.596 0.158\n", + " handbag 5e+03 483 0.0244 0.592 0.214 0.0468\n", + " tie 5e+03 297 0.0611 0.727 0.492 0.113\n", + " suitcase 5e+03 310 0.13 0.803 0.56 0.223\n", + " frisbee 5e+03 109 0.134 0.862 0.778 0.232\n", + " skis 5e+03 282 0.0624 0.695 0.406 0.114\n", + " snowboard 5e+03 92 0.0958 0.717 0.504 0.169\n", + " sports ball 5e+03 236 0.0715 0.716 0.622 0.13\n", + " kite 5e+03 399 0.142 0.744 0.533 0.238\n", + " baseball bat 5e+03 125 0.0807 0.712 0.576 0.145\n", + " baseball glove 5e+03 139 0.0606 0.655 0.482 0.111\n", + " skateboard 5e+03 218 0.0926 0.794 0.684 0.166\n", + " surfboard 5e+03 266 0.0806 0.789 0.606 0.146\n", + " tennis racket 5e+03 183 0.106 0.836 0.734 0.188\n", + " bottle 5e+03 966 0.0653 0.712 0.441 0.12\n", + " wine glass 5e+03 366 0.0912 0.667 0.49 0.161\n", + " cup 5e+03 897 0.0707 0.708 0.486 0.128\n", + " fork 5e+03 234 0.0521 0.594 0.404 0.0958\n", + " knife 5e+03 291 0.0375 0.526 0.266 0.0701\n", + " spoon 5e+03 253 0.0309 0.553 0.22 0.0585\n", + " bowl 5e+03 620 0.0754 0.763 0.492 0.137\n", + " banana 5e+03 371 0.0922 0.69 0.368 0.163\n", + " apple 5e+03 158 0.0492 0.639 0.227 0.0914\n", + " sandwich 5e+03 160 0.104 0.662 0.454 0.179\n", + " orange 5e+03 189 0.052 0.598 0.265 0.0958\n", + " broccoli 5e+03 332 0.0898 0.774 0.373 0.161\n", + " carrot 5e+03 346 0.0534 0.659 0.272 0.0989\n", + " hot dog 5e+03 164 0.121 0.604 0.484 0.201\n", + " pizza 5e+03 224 0.109 0.804 0.637 0.192\n", + " donut 5e+03 237 0.149 0.755 0.594 0.249\n", + " cake 5e+03 241 0.0964 0.643 0.495 0.168\n", + " chair 5e+03 1.62e+03 0.0597 0.712 0.424 0.11\n", + " couch 5e+03 236 0.125 0.767 0.567 0.214\n", + " potted plant 5e+03 431 0.0531 0.791 0.473 0.0996\n", + " bed 5e+03 195 0.185 0.826 0.725 0.302\n", + " dining table 5e+03 634 0.062 0.801 0.502 0.115\n", + " toilet 5e+03 179 0.209 0.95 0.835 0.342\n", + " tv 5e+03 257 0.115 0.922 0.773 0.204\n", + " laptop 5e+03 237 0.172 0.814 0.714 0.284\n", + " mouse 5e+03 95 0.0716 0.853 0.696 0.132\n", + " remote 5e+03 241 0.058 0.772 0.506 0.108\n", + " keyboard 5e+03 117 0.0813 0.897 0.7 0.149\n", + " cell phone 5e+03 291 0.0381 0.646 0.396 0.072\n", + " microwave 5e+03 88 0.155 0.841 0.727 0.262\n", + " oven 5e+03 142 0.073 0.824 0.556 0.134\n", + " toaster 5e+03 11 0.121 0.636 0.212 0.203\n", + " sink 5e+03 211 0.0581 0.848 0.579 0.109\n", + " refrigerator 5e+03 107 0.0827 0.897 0.755 0.151\n", + " book 5e+03 1.08e+03 0.0519 0.564 0.166 0.0951\n", + " clock 5e+03 292 0.083 0.818 0.731 0.151\n", + " vase 5e+03 353 0.0817 0.745 0.522 0.147\n", + " scissors 5e+03 56 0.0494 0.625 0.427 0.0915\n", + " teddy bear 5e+03 245 0.14 0.816 0.635 0.24\n", + " hair drier 5e+03 11 0.0714 0.273 0.106 0.113\n", + " toothbrush 5e+03 77 0.043 0.61 0.305 0.0803\n", + "loading annotations into memory...\n", + "Done (t=5.40s)\n", + "creating index...\n", + "index created!\n", + "Loading and preparing results...\n", + "DONE (t=2.65s)\n", + "creating index...\n", + "index created!\n", + "Running per image evaluation...\n", + "Evaluate annotation type *bbox*\n", + "DONE (t=58.87s).\n", + "Accumulating evaluation results...\n", + "DONE (t=7.76s).\n", + " Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.337\n", + " Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.568\n", + " Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.350\n", + " Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.152\n", + " Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.359\n", + " Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.496\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.279\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.432\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.460\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.257\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.494\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.623\n" + ] + } + ], + "source": [ + "!python3 test.py --data data/coco.data --save-json --img-size 416 # 0.565 mAP" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "VUOiNLtMP5aG" + }, + "source": [ + "Reproduce tutorial training runs and plot training results:" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 417 + }, + "colab_type": "code", + "id": "LA9qqd_NCEyB", + "outputId": "1521c334-92ef-4f9f-bb8a-916ad5e2d9c2" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAACvAAAAV4CAYAAAB8IQgEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAewgAAHsIBbtB1PgAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xd0FNX///HXbkhCIKEHCIQaEkBB\naujVCnwoKiCiHwS/KoqoYPmpoAgKImBDlA+IIHxEsYEFRawE6VUIQSD0HkIIJRASQpL5/cFhPrsh\nuztpm0Sej3P2nLm7d+7cnXCY98687702wzAMAQAAAAAAAAAAAAAAAAAAAPAKe2F3AAAAAAAAAAAA\nAAAAAAAAALiekMALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAA\nAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAA\nAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAA\nAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAA\nAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcAL\nAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJ\nvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAX\nkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAA\neBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAA\nAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAA\nAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAK3fnz57Vs2TIt\n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\nde3aVWfOnDHfq1+/vvr166fatWvr3LlzWrZsmX7++WdlZmYqMzNTzz//vHx9fTVy5EhLx4iPj1fv\n3r114sQJlSlTRnfddZeaN2+u0qVL68CBA/rss8908OBBSVeW9x42bJi+/fbba9oJCwsztw8dOqT0\n9HRJUuXKlRUUFORUNzQ0NKenwjRz5ky99tprZtlut6tbt266+eabVbZsWe3fv19ffvml9u/frxkz\nZqhChQqW27506ZJuv/12rV692nyvUqVK6tOnj5o0aaLSpUvr8OHD+uabbxQTEyNJ+v3333X33Xdr\n6dKllpaFunjxovr06aPdu3erZMmS6t27t9q0aaOyZcvq2LFj+uqrr7R9+3ZJUkJCgh544AGtX7/e\n7bLfsbGx6tixoxISEsz3ypcvr549e6pJkyaqUKGCkpKStGvXLi1fvly7du1y28fExER16NBBsbGx\n5nuhoaG688471aBBA/n7+2vv3r36+uuvtX//fknS/PnzFRAQoA8//NDjOQAAOPNmbJEbN9xwg9q2\nbauGDRuqfPnySktL0/79+7VkyRLt2LFDknTmzBn16dNH27ZtU82aNbNt5+LFi7rrrruc4ppOnTqp\nS5cuCg0Nla+vr5KSkrR3715t3LhRGzZsUGZmZoG3ZUXt2rVVosSV28THjh1TamqqpCvX25zEGp4k\nJCSobdu22rdvn/le6dKl1a1bN7Vq1UqVKlVScnKy9u3bp5UrV+qvv/6y1K7NZlPz5s3Vpk0bhYWF\nqVy5ckpJSdGuXbv0ww8/mLHe4cOH1atXL0VHR6tMmTLXtHM13jt9+rR57kuWLKnq1atne9y8nJvi\nFAcDAIqfq/csJMnHx8dlvbS0NPXv31979+6Vj4+Punfvrk6dOqlixYo6deqUfvvtt2t+r+/du1cd\nO3bUiRMnzPciIiLUu3dvhYWFyW63a8eOHfryyy/NOhMnTlRgYKBGjRrltt8jRozQtGnTnN5r1aqV\nbrvtNtWoUUM2m00nTpzQxo0b9ccffzjFmLkRFxenAQMG6NKlS5KunKvbb79d7dq1U0hIiOx2u86e\nPavY2FitW7dO0dHReTqeo7feekujR482yz4+PurWrZu6du2qsmXL6uDBg/r666+1e/dus69dunTR\n+vXrne5RufPpp59qzJgxkqSGDRuqT58+qlu3ri5fvqwNGzbo888/V1pamiRp+vTpuv3229W7d+98\n+44AABSWzMxMp9/bvr6+buunpqbq1ltv1bp168z3goOD1adPH910000qVaqUDh8+rEWLFunvv/+W\nJP3yyy/q37+/fvzxR7dtf/755xo0aJAyMjLM98LCwtSzZ0+FhYWpdOnSOnXqlLZu3ao//vhDJ0+e\ntPQdg4KC1KFDB7Vs2VJVq1ZVQECATp06pQ0bNuiHH34w45vPPvtM1apV05QpUyy1C6CQFHYGMYB/\nNseZzUqWLGmkpaV55bhyGFXkbnT1k08+6VTX1Ww1V02cONGpvqsZhZmBFwBQXD311FNO159NmzYV\nyHEyMjKumX1t3Lhx2S47tGLFCqNixYpmPX9/f2P79u0u23aceezqrC3du3fPdtnklJQUo2fPnk79\n2LZtm9u+O85SZ+Uab3UG3iNHjhiBgYFm3fLlyxt//vnnNfXS0tKM4cOHO32/qy93M709/fTTTnWH\nDRtmnD9//pp6mZmZxpQpU5zqzpgxw2W7jrPaXO1Py5Yts+1Lenq68eijjzq1/f3337tsOzU11Wja\ntOk1/T537pzLfTZv3mz069fPOHToULaf33333WZbNpvNePXVV7MdgX7p0iVj5MiRTsdeunSpy+MC\nALLnrdjCMKzPwHvfffcZjz/+uNt4wjAMY968eU4zst1zzz0u686ZM8esFxAQYPz+++9u246LizNe\ne+21bGf2zc+2DCNnqwFkncHVE6sz8GZmZhrdu3d3qtu3b1+3s77GxsYaDz/8sLFq1apsP+/SpYsx\nevRot/FPenq6MXnyZKeZ555//nm33yk3y18bhvUZeItzHAwA8K7cPCNISEhwuu517drV6XPH65xj\nfOBqVllHly9fNlq1amXu5+fnZ8ycOTPba1hSUpIxYMAAs66vr6/b68wXX3zh1KcaNWoYy5Ytc1k/\nKSnJmD59uvHSSy9l+7mVGXjHjBlj1gkODvZ4Dvbv3288++yzxq5du7L93GoMER0dbfj6+pp1q1Sp\nku2Kj+np6caoUaOczkvHjh2NzMzMbNvNGovY7XbDx8fHmDZtWrZ/o61btzotv92sWTO33x8AgMKQ\nm3jozz//dNqnZ8+ebutnzRl54oknjAsXLlxTLyMjw3jjjTec6n700Ucu242NjTVKly7t9Jv+ww8/\nzPa6bBhXYq3vvvvOGDBgQLafb9myxWjcuLGxYMECt7P/Hj161OjUqZNTTOAqfrmKGXiBwkUCL4AC\n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\nKysJdu/eXdOnT/e48uCePXs0btw4l0mv/v7+TjPexcfHq2PHjlq+fLnLNpOTkzVz5sw8DfStV6+e\nhgwZolWrVrkdWLRz506n5OVWrVo5JRzn1IQJE8zVKdLT09WrVy+tW7fumnoZGRl65ZVXNGPGDPO9\nTp06Oc0UCAAAXHv22Wfl5+dnlrObhbdp06ZOE4k8//zzeuqpp3TmzBm3bSckJGjmzJm68cYbtXHj\nxmzrvPPOO+Yzn8zMTPXp00cfffSRyxWCMjIy9OOPPzpN9nLVbbfdZm4nJibqoYceyvZ+2qVLl/TC\nCy9oypQplu+DACh8JQq7AwCuH35+fvr444/VunVrjRs3TidOnJB0JYhYtmyZli1b5rENm82mvn37\navLkyU5LKufFgAEDdOnSJT388MPmjaaoqCiXs94FBQXp+++/V9u2bT22HRgYqFWrVumee+7RH3/8\nIenK912yZInHGWJuvfVWffnll05LOwAA4C02m01fffWVhg4dqnnz5km6MvjmmWee0ZgxY3TzzTer\nRYsWCg4Olr+/v+Lj43X48GH9+uuvOnDggMf27Xa75s6dqzZt2pg3Ql555RV9/vnn6tevn2rVqqVz\n584pKipKS5cudUpemTRpklPSxj9FaGio3nzzTQ0bNkzSlfPdpUsX9ejRQzfffLPKlCmjAwcO6Isv\nvtC+ffskXUnEtZrEMWnSJMXExJijvP/zn/9o3rx56tatmyIjIxUcHCxJOnv2rPbu3astW7Zo06ZN\nbhOHCpqfn5+++OILdejQQSdPnjT7/cUXX6hnz55q2rSpypcvr6SkJO3evVt//vmntm/fLkmaPHly\ntm1+/PHH2rt3r6Kjo5WRkaFx48bpvffeU7du3dS8eXNVqFBBGRkZOnPmjGJjY7V582ZFR0d77TsD\nwD9VQccWVj3//PPm7/Hk5GTdfPPN6tWrl7p06aJy5copISFBUVFR+uWXX5SZmalq1aqpd+/emjlz\nptt2MzMz9d133+m7775TpUqV1L59ezVv3lyVK1dWQECAEhMTtWnTJn3//fe6ePGiud/kyZOveaCS\nn20VJXPnzlW7du20Z88eSdLChQu1dOlS9ejRQ61atVLFihV18eJF7d+/X6tWrTJXJ7r33nuvaeuF\nF17QAw88IOlKkk+LFi3Ut29ftW3bVqVLl9bx48f166+/asWKFZKkxo0bq0GDBvr666899rN69eq6\n7bbbzJhpypQpmjZtmmrXri1/f3+z3mOPPZarGfCIgwEAxZWvr6++/vprtW/fXocPH1ZKSoqeeOIJ\nvf766+rWrZsaN26s8uXL69KlSzp9+rR27NihjRs3KjY21mPbffv21ciRIzV16lRJV1Yr7Nq1q1q3\nbq3bb79doaGhstvtOnHihDZv3qzffvtNycnJGjx4cK6/T3p6uv773//qv//9r6pXr6727durSZMm\nqlSpknx9fXXy5EmtXbtWS5YsMVfjsdlsmjJlSq6PKUk33XSTJk6caK70cOLECXXo0EE9evRQ165d\nVaZMGR06dEhfffWV07mrUKGCPv74Y3OgEQAAcK969er697//ba5qs3jxYm3ZskXNmjVzqvfmm29q\n+/btZj7H+++/r48//lh33HGH+ezEMIxrnp24SsS9ql69epozZ47uu+8+ZWRkKDU1VUOHDtXkyZPV\nq1cv1atXT6VKlVJiYqK2bdum33//XXFxcQoLC7umrTZt2qhTp07mfY4vv/xS69ev14ABAxQREaG0\ntDTt2rVLixYtMichGTdunF555ZU8n0cAXmAAQCG4ePGi8e677xpt27Y1SpQoYUhy+fLx8TGaNGli\nvPbaa8ahQ4cste+4/+DBgy3ts3PnTqN3794u+1OyZElj8ODBxrFjx3L8fTMyMoyvv/7aaNOmjWG3\n211+V7vdbrRp08ZYuHChkZmZmePjAABQED744AOjUqVKbq/Xrq5rDz30kHH8+HGXbW/ZssWoUqWK\npfZsNpsxZcoUj/3t3Lmzuc/YsWMtfceoqCinY7lTq1Yts97cuXM9tj137lyzfq1atTzWHzNmjKXz\nMXz4cOPAgQNO7x04cMBt22lpacbQoUNz/LeUZKxYsSLbNgcPHpzjuCun/d67d68RERGRo/66a/P8\n+fNG7969c3UerMajAADXCiq2cKwbFRXl8vivvvqqpeMFBwcb69atM8aOHWu+17lz52zbdIwPrMY1\nEydOLPC2DCNnsUhO46icxFCGYRgnT540WrdunaPv5+pv+X//93+W9q9bt66xZ8+eHMUs+/btM2rW\nrOm23aznJ6fxTXGMgwEA3uV4DfcU31hlJa7x5MSJE0bbtm1zFct5Mm7cOLfPULK+XF3TrVz3c9p/\nPz8/45NPPnHZ95ye24kTJxo2m83SsUNCQoxt27a5bS+nschVubmvAwCAt+Q1Htq1a5dTbNGnT59s\n66WlpRkPPfRQjuMDScaaNWvc9mHx4sVGYGCg5fbCwsKybefw4cNG9erVLbXx0EMPGWlpaU7vrVy5\n0mUfHdudP3++y3rt27c3640fP97t9wZgXdGdkgHAP1pAQIBGjhypNWvW6PTp0/r99981f/58TZ06\nVRMmTNC0adM0f/58rVixQufOndPWrVs1ZswYl0ssZWUYhvm6OrOPJw0aNND333+vhIQEffvtt/rg\ngw/0+uuva8aMGfrpp5+UmJioefPmqVq1ajn+vna7Xf369dPatWuVmJioJUuWaNasWZo0aZImTZqk\nWbNmacmSJTp16pTWrl2rvn37MooaAFBkDB8+XPv379frr7+uZs2aebxG1ahRQy+88IJ27typ2bNn\nKyQkxGXdpk2baufOnXrqqacUFBSUbR273a6uXbtq/fr15uwk/2SvvfaaFi9enO0oa0mqWbOm5syZ\n47S8pFW+vr768MMPtXbtWvXo0cNp+ajs1KtXT08++aQ2bNigjh075vh4+SUsLEzbtm3Tm2++qRo1\narit27hxY7399ttuY7bAwEB9//33+umnn9SxY0ePsxU2atRIL774onbu3Gk5HgUAuFaQsYUVr7zy\nij799FOX1xR/f38NGDBA0dHRat26taU2p0+frsGDB6t69epu69ntdt1xxx1as2aNRo0aVeBtFTXB\nwcFas2aN5syZo4iICLd169Wrp3Hjxl0zM85Vs2fP1rvvvquKFStm+3lgYKAeffRRbdmyRfXq1ctR\nP+vWravo6Gi99dZbuuWWW1S1alWVLFkyR214QhwMACiuqlSpolWrVmnBggUur9NX2e12RUZGavz4\n8ZZWVRg7dqz++usv9ezZU76+vi7rBQUF6b777tNTTz2V4/5f9emnn+qee+5RpUqV3Nbz8/NTv379\ntHXrVg0aNCjXx8tq1KhRWrt2rbp06eIyHi5TpoxGjhypHTt2qHHjxvl2bAAArhf169fXXXfdZZa/\n//57bdmy5Zp6vr6+mj17tlavXq1u3bq5jUMkKTw8XE899ZQ2bdrkceXmXr16ac+ePXrsscdUpkwZ\nl/V8fX1166236q233sr28xo1amjTpk3q16+fy9ghIiJC8+fP1+zZs8k3AYoRm2EYRmF3AgAAAEDx\nkZCQoI0bN+rkyZM6deqU0tPTVa5cOYWEhKhFixYKDQ3NVbtpaWlauXKl9u/fr1OnTql06dIKCQlR\n586dVbly5Xz+FkWfYRhat26dYmJilJiYqMqVKys8PFwdOnTIt+WxL1y4oNWrV+vw4cNKTEyUJJUr\nV0516tRRo0aNPCYOFZaYmBht3bpVJ0+eVGpqqsqUKaM6deqoefPmuRpsdebMGa1atUrHjx9XYmKi\nSpQooXLlyqlevXpq3LixgoODC+BbAACuKqjYwpP09HStW7dO0dHROnfunMqXL6/q1aurU6dOKleu\nXK7bPXTokHbs2KGDBw/q7NmzMgxDZcqUUVhYmCIjIz0miRRUW0XR3r17tXHjRsXHx+vChQsKCgpS\nzZo11bRpU9WpU8dSG6mpqVq1apV27NihCxcuqFKlSqpRo4Y6d+6sUqVKFfA3yB/EwQCA4uzEiRNa\ns2aNTpw4oTNnzsjf318VKlRQeHi4GjdunOu4KikpSStXrtSRI0eUmJgoPz8/Va5cWQ0bNlSzZs08\nJtbkxJ49e7Rz504dPnxYSUlJstlsKleunCIiItSyZUuVLVs2346Vnfj4eK1YsUJxcXFKTk5WpUqV\nFBYWpg4dOngcfA0AAPLfhQsXtGrVKjMOsdlsKlu2rOrUqaPGjRvn6jmEJF2+fFlr1qzR3r17lZCQ\nIEkqX768GXO4GuCb1bFjx7RixQodPXpUkhQSEqIbbrhBzZs3z1W/ABQuEngBAAAAAAAAAAAAAAAA\nAAAAL8qfaZsAAAAAAAAAAAAAAAAAAAAAWEICLwAAAAAAAAAAAAAAAAAAAOBFJPACAAAAAAAAAAAA\nAAAAAAAAXkQCLwAAAAAAAAAAAAAAAAAAAOBFJPACAAAAAAAAAAAAAAAAAAAAXkQCLwAAAAAAAAAA\nAAAAAAAAAOBFJPACAAAAAAAAAAAAAAAAAAAAXkQCLwAAAAAAAAAAAAAAAAAAAOBFJPACAAAAAAAA\nAAAAAAAAAAAAXkQCLwAAAAAAAAAAAAAAAAAAAOBFJPACAAAAAAAAAAAAAAAAAAAAXkQCLwAAAAAA\nAAAAAAAAAAAAAOBFJQq7A/if1NRUxcTESJKCg4NVogR/HgDAP1N6eroSEhIkSY0bN1bJkiULuUdw\nhxgFAHA9IU4pXohTAADXC2KU4oUYBQBwPSFOKV6IUwAA14viEqNwJS5CYmJi1KpVq8LuBgAAXrVh\nwwZFRkYWdjfgBjEKAOB6RZxS9BGnAACuR8QoRR8xCgDgekWcUvQRpwAArkdFOUaxF3YHAAAAAAAA\nAAAAAAAAAAAAgOsJM/AWIcHBweb2hg0bFBISUoi9AQCg4MTFxZmjex2vfyiaiFEAANcT4pTihTgF\nAHC9IEYpXohRAADXk+IYp2RkZGjnzp3atGmTNm/erE2bNik6OlopKSmSpMGDB2vevHkFcuzFixdr\n/vz52rhxo06cOKEyZdTiC2QAACAASURBVMqoXr16uuuuu/Too4+qTJkyBXLcq4hTAADXi+ISo5DA\nW4SUKPG/P0dISIhCQ0MLsTcAAHiH4/UPRRMxCgDgekWcUvQRpwAArkfEKEUfMQoA4HpVXOKUe+65\nR998841Xj3nhwgXdf//9Wrx4sdP7CQkJSkhI0Nq1a/X+++/rq6++Ups2bQqsH8QpAIDrUVGOUeyF\n3QEAAAAAAAAAAAAAAADAGzIyMpzKFSpUUHh4eIEer3///mbybpUqVfTyyy9rwYIF+uCDD9S+fXtJ\n0pEjR9SjRw/t3LmzwPoCAACKlqKbWgwAAAAAAAAAAAAAAADko1atWqlhw4Zq0aKFWrRooTp16mje\nvHl68MEHC+R4s2fP1s8//yxJuuGGG7Rs2TJVqVLF/Hz48OF67rnn9Pbbb+vMmTN69NFHtWLFigLp\nCwAAKFpI4AUAAAAAAAAAAAAAAMB1YfTo0V47VkZGhl599VWzPH/+fKfk3asmT56sP/74Q1u3btXK\nlSv166+/6vbbb/daPwEAQOGwF3YHAAAAAAAAAAAAAAAAgH+aFStWKC4uTpLUuXNnNW/ePNt6Pj4+\neuqpp8zy559/7pX+AQCAwkUCLwAAAAAAAAAAAAAAAJDPli5dam736NHDbd3u3btnux8AAPjnIoEX\nAAAAAAAAAAAAAAAAyGcxMTHmdmRkpNu6VatWVY0aNSRJ8fHxSkhIKNC+AQCAwleisDsAAAAAAAAA\nAAAAAAAA/NPExsaa23Xq1PFYv06dOjpy5Ii5b3BwcI6Od/ToUbefx8XF5ag9AABQsEjgBQAAAAAA\nAAAAAAAAAPLZ2bNnze1KlSp5rF+xYsVs97Xq6gy+AACgeLAXdgcAAAAAAAAAAAAAAACAf5oLFy6Y\n2yVLlvRYPyAgwNw+f/58gfQJAAAUHczACwAAAAAAAAAAAAAAABRzR44ccft5XFycWrVq5aXeAAAA\nT0jgBQAAAAAAAAAAAAAAAPJZYGCgzpw5I0lKTU1VYGCg2/opKSnmdlBQUI6PFxoamuN9AABA4SGB\n9zqSmZmpCxcuKCkpSWlpacrIyCjsLgEAihkfHx/5+fmpTJkyCgwMlN1uL+wuAQAAAAAAAAAAAEVS\nuXLlzATeU6dOeUzgTUxMdNoXAAD8s5HAe504f/68jh07JsMwCrsrAIBiLD09XZcuXdL58+dls9lU\nvXr1XI3+BQAAAAAAAAAAAP7p6tevrwMHDkiSDhw4oNq1a7utf7Xu1X0BAMA/Gwm814HskndtNpt8\nfHwKsVcAgOIoIyPDvJ4YhqFjx46RxAsAAAAAwP9n777DoyjXPo5/t6RCQg+BhA6igQAqIiBIUVoO\nEpqAIkUh0hQ9wsvhKAfhWI5KUWmKBkQBKdIRAig9CIhAQkJCaAklhQQD6YFsef9YdtlNNn1TuT/X\nxZXZmWdmntkN2dnZ39yPEEIIIYQQQljh7e3Nnj17ADh16hQ9evTIte2tW7e4ceMGAG5ubtSpU6dU\n+iiEEEKIsiMB3kpOp9NZhHerVq1KzZo1cXZ2RqFQlHHvhBBCVDR6vZ709HQSExNJTU01hXgfe+wx\nlEplWXdPCCGEEEIIIYQQQgghhBBCiHKjb9++zJs3D4CAgABmzJiRa9vdu3ebpn18fEq8b0IIIYQo\ne5K0qeSM4SowhHc9PT2pUqWKhHeFEEIUiUKhoEqVKnh6elK1alXAEOpNTU0t454JIYQQQgghhBBC\nCCGEEEIIUb5069YNd3d3AA4dOsSZM2esttNqtSxatMj0eMSIEaXSPyGEEEKULQnwVnLJSUmg1wFQ\ns2ZNCe4KIYSwCYVCQc2aNU2Pk5OTy7A3osLS6eB+muGnEEIIIUR5IecoQgghhBBCCCEqEvkcW2ZW\nrVqFQqFAoVDQvXt3q21UKhWzZ882PR49ejTx8fE52s2cOZOgoCAAnnvuOfr06VMifRZCiMpCp9OT\nfl+DRqMjNTOL1Mwsi2mdTm9qYz6dvU1Fkf1YrB1z9unsx16RjvdRoi7rDogSEhcCx5dy3+5xqNkS\nRVU3nO8lgL0C7JzLundCCCEqAWdnZxQKBXq9nvv375d1d0RF8uA8hbDtkJVuODfx8oVOU8Ddu6x7\nJ4QQQohHlZyjCCGEEEIIIYSoSORzbJFFRkayYsUKi3nnzp0zTZ89e5ZZs2ZZLO/Zsyc9e/Ys0v78\n/PzYunUrv/32G+fPn6dt27b4+fnh5eVFYmIi69atIzAwEIDq1auzfPnyIu1HCCEeBWExyfgHXmXX\nuVjuaXK/eUUBKBSg04NKoUCPnuz5VZVSQffH6jCtd0u86ruWbMeLyHi8ASFxZGRpUQL6B/8KQqkw\nFGjT6vQ42ano5+3O+C5Ny+3xPookwFsZhWyCrRNAp0Hb4X+gUKJSgCLzDmTeheoNwblm/tsRQggh\n8qBQKFCpVGg0GrRabVl3R1QUZucpJlnpELwOQn6BQcvBe2jZ9U8IIYQQjyY5RxFCCCGEEEIIURJ0\nOtBkgNoJlDYaIFmng6C18Ou71j/HntsIA5fBEy/Zdr+VyLVr1/jkk09yXX7u3DmLQC+AWq0ucoBX\nrVazefNmXn31VX799Vfi4uL46KOPcrTz9PRkw4YNtGrVqkj7EUKIym57UDTTNgajKUAlWT2gf9BM\nq7feXqvTs/9CPAcj4vlyeDt823nYsLcP6XR6MjVaHNUqlEqFaV76fcP7uKNaRaZGm2P69/B4pv9i\nebyFrbevM3siMrK0bDkTzfaz0fxviDeD23ma9uVsb4iRZu+ntWMx9tvZXp1rO2vHb69UWhznfZ0O\nR7UKwOK5MM4vyLYrAwnwVjZxITm/cALDbQUA6OHudbBzlEq8QgghhChduZ2nGOk0huV1Wkp1ACGE\nEEKUHjlHEUIIIYQQQghhayVRHTcuBA58DBf3kWd8R681fI7dOgHUjtBqkFTlLQdcXFzYuXMn27dv\n56effuLUqVPEx8fj4uJCs2bNGDx4MBMmTKBatWpl3VUhhCiXwmKSeW9jMNoChHcLS6eH9zYG08LN\npVCVafMLs4bFJON/9CoBoYbquU52Kjo1rUlypoaz1+/mGiwuaVo9zNgUwoxNIaZ55hWLrVXqDYtJ\nZv6+CA5HJJj6rVRA1+a1efuFFrTzrJ4jhHwhLoW1J66zOzT3asnGZyz7M+GgVvKPNvUeiWrBEuCt\nbI4vzf0LJxM9pCZAjUal0iUhhBBCCKBg5yk6DRxfBoO+KZ0+CSGEEELIOYoQQgghhBBCCFvKa5SX\ncxth8HfQanDhKvOGbIItfqAvZN09TaaMLmNF9+7d0dsgNDV27FjGjh1bqHV8fX3x9fUt9r6FEMLI\nWnXXgqyTX/VX8+mCVlotKWExyYxacbJEwrtGWp2eFYGRLBjWNt+256OTmLcvgqMXb+caZl1y8DJf\n779kEUzNyNJyICKhhI6geMwrFhsr9e4IijE9H//cEET2p1+nh8OXbnP40u1i7deaexqdRR9Kqjpy\neSAB3spEpzPcwVcQmXdB39AQnRdCCCGEKGmFOU8J2wa+S2VYLyGEEEKUPDlHEUIIIYQQQghhCzqd\nIZB7+3Leo7zotbB5HGybBNr7hsq8TwyAZ8aBR/uHnzl1OshKM6Ra/r4CW94sfHjXon8a2OwHtZpB\n7ccKHhwWQghRboXFJOMfeJWAkIfVXbNXTbW2TvYqqgWhUiro/lgdpvVuWerVULcHRfPP9UF51Z63\nmd0hscwb2ibXsHJYTDIf7gjlVNSdHMtsEWYtbzQ6Pe+uDzJV5i2rPkwrQnXkikQCvJWJJsNw515B\n6HWGfwpVyfZJCCGEEAIKd56SlW5ob1+lZPskhBBClKGUlBT27dvHwYMHOXPmDJcuXeLu3bs4OTlR\nv359OnTowKuvvkqfPn1Q2Pjm2x07drB69WpOnTpFXFwcrq6uNG/enEGDBjFhwgRcXQt+Eezy5css\nX76cgIAAbty4gVarxcPDgxdffBE/Pz/atWtn077bnJyjCCGEEEIIIYQojrgQw8guYdsNnxsVKkNI\nNz/a+4afWelwbr3hn8oemvaAzCS4eapg2ykUHXzX3TCpdoRWg6DTFHD3tvF+hBBCQNEq4xbU9qBo\npm0MRmOWqsxeNfWlNvUt9r89KNpqFdWC0Or07L8Qz4EL8Swc3pY+rdxL5LiyC4tJZtrG4FIJ74Lh\nObydlomznRpHtYr7Op3pOLedjWbaxiC0ZRRkLSvmlXnLiqYQ1ZErIgnwViZqJ8MdegX44kmPEoVC\n7qgTQgghRCkpxHkKds6G9kIIIUQltXDhQj744AMyMzNzLEtJSSEiIoKIiAhWr15N165dWbNmDQ0b\nNiz2flNTUxk5ciQ7duywmJ+QkEBCQgLHjx9n8eLFbNy4kY4dO+a7ve+++453332XjIwMi/kXL17k\n4sWLLF++nNmzZzN79uxi973EFOIcRaNyQi3nKEIIIYQQQgghjEI25ay2W5zQrfY+XNpb/H4VhCYT\ngtdByC8waDl4Dy2d/QohxCOgKJVxC7v97OFdcxqdnnfWBzFj0znuaXQ4qpV0blaLgxEJFDeHqQf+\nuSEYCLb5cVnjf/RqrsdZUjp8csDisZ1KQc0q9txKvleq/RCW8quOXJFJgrMyUSrBy7dATe/qnbmb\nkVXCHRIid3PmzEGhUKBQKDh06FBZd0eIQomKijL9/o4dO7asuyNExVCI8xS8BsrQXUIIISq1ixcv\nmsK7Hh4ejBkzhkWLFrF+/XpWrVrFxIkTqVq1KgBHjx6le/fuxMfHF2ufWq2Wl19+2RTerVu3LrNm\nzeLnn39myZIlPPfccwDcuHEDHx8fwsPD89zemjVrmDBhAhkZGSiVSl599VVWrFjBjz/+yJtvvomD\ngwNarZYPP/yQzz//vFh9L1GFOEfZfv8ZwuJSS7hDQgghhBBCCCEqhLgQ2PqmZXi3ItJpDCHkuJCy\n7okQQlQK24OiGbAkkC1nosnIMtzUYayMO2BJINuDoou9jwX7IgoUar2nMdStzdToOGCD8G52tj4u\nc2Exyfxzw1m2nLXtdosiS6uX8G45kJGlJVNj69EJygepwFvJXGk+loZBG7FT5P4Lq9NDgr4a9xIz\ncFCrcLJXlWIPhSi4OXPmANC4cWMJST7CoqKiOH36NH/99RenT5/m9OnTJCYmAtCoUSOioqKKtF2N\nRsOmTZvYunUrp0+fJi4uDjAEGZo2bUq3bt3o379/+R/yV4iKpNMUw938eV3QVKqh0+TS65MQQghR\nBhQKBb1792b69Om88MILKLPduDJmzBhmzpxJnz59iIiIIDIykpkzZ7Jy5coi79Pf3589e/YA4OXl\nxYEDB6hbt65p+ZQpU5g+fToLFizgzp07TJgwgSNHjljdVkJCAlOmTAFAqVSydetWBgwYYFo+evRo\nXn/9dV544QXS09OZNWsWAwcOpGXLlkXuf4nqNAVt8EZU5H4tJUuvxF/TD69KPEyXEEIIIYQQQogH\ndDrQZBhGbTH/zG4+f/cM0FWSEIlOA8eXwaBvyronQghRoRWkMu60jcG0cHMpcsXarWdvsv9C8Yo9\n2Jotjsvc9qDoPJ9H8WhyslPhqK6cGUcpbVbJLA13ZFrWJLL01n9hdXq4qXcjE3v06LmdKncIiPJr\n7ty5zJ07l1WrVpV1V0QZWbx4MU2aNGHo0KF89tln/Pbbb6bwbnGcOHGCJ598kldeeYWNGzdy5coV\n0tLSSEtL4+rVq/z+++/85z//MYXIhRA24u5tGIpLkcspqFJtWO7uXbr9EkIIIUrZJ598wt69e+nV\nq1eO8K5Ro0aN2LBhg+nxhg0bSE9PL9L+tFotc+fONT1evXq1RXjX6PPPPzfdwHb06FH27dtndXvz\n588nOTkZMAR/zcO7Rh07duSjjz4CDDfPme+/vNG5tWa6ZjIafe5DbymBFopodofEopMLx0IIIYQQ\nQghROcUEw+bx8D8P+LS+4efWiRC6xfDTOP8Td7j+R1n31rbCthkCykIIIYrMP/BqvqFTjU7PisDI\nIm0/LCaZ6RuDi7RuSSvOcZnLLwQtHl0+3vVQKnO/hl+RSYC3EtHp9ASExLFD15kB9z8mTlfDYnm6\n3p7Leg/uUsU0LykjC71e/ugJIconrdbyzmUnJyfatGlTrG3u3buXnj17EhoaCkCXLl345JNPWL16\nNRs2bGDx4sWMGzeOevXq5bqNxo0bo9fr0ev1EjAXorC8h0KXf1rOUyih7avw5iHDciGEEKKSq1mz\nZoHatW3b1lS1Nj09ncuXLxdpf0eOHCE2NhaAbt268dRTT1ltp1KpmDp1qunxunXrrLYzDxb/85//\ntNoGwM/PjypVDNcgduzYQUZGRqH7XhqCbtzlgrY+kPvFP5VCxwK7b2isuVpph+kSQgghhBBCiEdW\nXAis7AvfPW8YRS7rwQ20WekQvA42vW74aZyvrYRFsrLSDdWFhRBCFIkxs1UQRS0S4B94FW05jnjZ\novhBQULQ4tGjVioY16VJWXejxKjLugPCdjI1WjKyDF8ihesbEaxvRlOz5clUIRN7i3V0ej06Pagq\nZ0BdCFHBNW7cmClTpvD000/z9NNP06pVK27cuEGTJkV7Y758+TKDBw8mIyODGjVqsH79enr37m21\nrV6vJzo6ujjdF0LkpnpDy8ce7WVoLiGEECIXrq4PhxwragA2ICDANO3j45Nn2379+lldzygsLIxr\n164B8MQTT+R5bu7i4kLXrl3Zs2cPaWlpHD58mL59+xa2+yVu9Ykoxqt3o1bkXWnITqFlnDqAfed9\nGfikRyn1TgghhKgcduzYwerVqzl16hRxcXG4urrSvHlzBg0axIQJEyzOeWwhKiqKFStWcPDgQS5c\nuEBSUhIODg64ubnRrl07Bg8ezPDhw7Gzs7PpfoUQQlRAIZtgy5ugf8Rv1rRzBrVTWfdCCCEqLPPM\nVn4ysrRkarQ42xc8tleYgHBZKcpxmSvOMSqAJxtW58z1u0Vav6JSAvOGtaGPlzsA/9l2nq1BlSvn\nolYqWDCsLV71bXvdoDyRAG8l4qhW4WSnMr0h3MPywpOSnHcoKBUKKml1aSFEJTBw4EAGDhxos+2N\nHz+e9PR0VCoVv/76K507d861rUKhwNPT02b7FkKYUWY7BX3UL4wKIYQQubh//z4XL140PW7UqFGR\nthMSEmKafuaZZ/Js6+7uToMGDbhx4wa3bt0iISGBOnXqFGlbxjZ79uwxrVveArw6nZ69obF8ovyz\nQO19lCdp+8tZHqvrUqkvGAohhBC2kpqaysiRI9mxY4fF/ISEBBISEjh+/DiLFy9m48aNdOzY0Sb7\nXLhwIe+//z737llWR9RoNERGRhIZGcnWrVv5+OOP2bRpE61bt7bJfoUQQlRAcSGwdYJcowbwGghK\nGcBZCFH+6XR6MjVaHNUqlOUo8JQ9s5UXB7USR7Uqx3zjsdkrlaZRwIxh2MT0ewUOCJcVB5UCjUZH\nqi4LR7UqxzHk9brpdPpiHeMvkzoyyv9U0TtfwTjZqfDxrse4Lk0srlP7Pd+UnediKkUVYwe1kv5t\n6uc4xspIAryViFKpoJ+3O1vOGJL0mXrLarsKKwHeak52KBTl4w2tvL7J2tqhQ4fo0aMHAB9++CFz\n5szh0qVLfPvtt+zZs4fo6GiSkpJMy8xduXKF77//nv379xMVFUVSUhI1atSgVatW+Pr64ufnh7Oz\nc577Dw4O5vvvv+fo0aNERUWRnp5OtWrVqF27Nh4eHjz77LMMHTo0x5CqUVFRpspKY8aMYdWqVXnu\np3Hjxly7do1GjRoRFRVVqOco++/k4cOHrf6e/vDDD4wdO9Zi3q5du1izZg2nTp0iNjYWjUZDzZo1\nqV27Nk2bNqVr166MGDGiRIOZx44dY+3atRw9epTo6GhSUlJwcXGhRYsWdO7cmSFDhtClS5dc14+J\niWHZsmXs27ePq1evkpKSQs2aNU2v8/jx43FyKtgdsFFRUfj7+3PgwAGuXLnCnTt3cHBwoFGjRrRv\n357+/fszYMAA7O3tra6fkZHBihUr2L59O6Ghofz999+4uLjQtGlT+vTpw+TJk6lfv36RnqfSduLE\nCQ4fPgzAyJEj8wzv5qcg/x+6d+9u2p9er0ev17N69Wp+/PFHzp8/T3JyMo0bN2bgwIFMmzaNWrVq\nmdZNTk7G39+fdevWcfXqVTIzM2nRogWvvfYaU6dOzfX1MhcYGMjSpUs5evQot2/fplatWrRt25Zx\n48YxZMiQQv+fFsKmFNk+kOo0ZdMPIYQQopz7+eefSUpKAuCpp57C3d29SNuJiIgwTRdkNIsmTZpw\n48YN07rmAd6ibMvaugV18+bNPJfHxsYWepvmMjVa9FkZODsWbPhTZ8U91Lp7rAiMZMGwtsXatxBC\nCFHZabVaXn75ZdPNPHXr1sXPzw8vLy8SExNZt24dx44d48aNG/j4+HDs2DGeeOKJYu1zyZIlTJs2\nzfS4c+fODBgwgAYNGpCcnMz58+dZtWoVqampRERE0KNHD0JCQop8niWEEKKCO7608lyfVqgM5Qd1\nRQg+KdXQabLNuySEELYUFpOMf+BVAkLiyMjS4mSnop+3O+O7NC3RcF9Bs0wX4lJwti9YgPeeRse3\nh68wuUdz4OGx7ToXyz2N5ShhCkChgIqQx7yn1dPmv7/lmG9+DNlft+yva1E42al4vK5ruQ845+ad\nns15u2cLU+DZUa0i6OZdVh+/xr6wW2RkaXFUK/HxrscbXZrQtE6VXH8fveq7smBYW6ZtDC53IV57\nlYJ/eNdjZEdDoZKfT14nIDTOdHy9veoyunNj2nlW575OV+nzg+YkwFvJjO/SlB1BhiR99gq82QO8\nChTUrupQmt2zqqzeZMuLNWvW8Oabb+Y5FKpOp2PWrFnMmzcPjcbyQ2R8fDzx8fEcPHiQ+fPns23b\nNp5++mmr2/noo4+YM2cOOp3lG/7ff//N33//TUREBAcOHGDHjh2EhoYW/+BKUUZGBsOHD2fnzp05\nlsXFxREXF0doaCg7duwgKiqKJUuW2LwPiYmJjBkzhl9//TXHsjt37vDnn3/y559/8tVXXxEUFETb\ntjm/7F25ciVvv/026enpVo9h//79zJs3jy1bttC+fftc+6LVapk1axYLFiwgKyvLYllWVhbnz5/n\n/Pnz/Pjjj3z11Ve88847ObZx6tQphgwZYvri3vw4ExMT+euvv/jyyy9ZvHgxb7zxRp7PTXmwYsUK\n0/SoUaNKdd+pqakMGTKEffv2WcwPDw8nPDycDRs2cOjQIRo0aMDFixfp378/ly5dsmgbHBxMcHAw\nu3btIiAgAEdHx1z3N2PGDObPn49e//DvfkxMDDExMQQEBDBixAg++ugj2x6kEIWRvQJvUS4oCiGE\nEJVcQkIC//rXv0yPZ82aVeRt3b37cNiw2rVr59ve/OYy83Vtva2CaNCgQaHXKQxHtQqFnRPpegec\nFfmHeNP1DmRiz+6QWOYNbfPIXEAUQgghisLf398U3vXy8uLAgQPUrVvXtHzKlClMnz6dBQsWcOfO\nHSZMmMCRI0eKvL+MjAzef/990+Pvv/+e8ePH52g3e/ZsXnjhBUJCQrh9+zZffPEFCxcuLPJ+hRBC\nVFA6HYRtL+teFF+DTjBqM6gfFP/RZEDEHtg8DqwU+MpBqYZBy8Hdu0S7KYQQxbE9KDpHIDEjS8uW\nM9HsCIphwbC2+LbzsOk+w2KS8T961RQwzCvLtD0omvc2BKEtRF7yi70R6PV66rg48P7W0FzDlnpA\nX75ymIVmfgzG12372WhGdmzEzyevFzto6uNdD2d7dYErIJcUZS5Ba6UCnm5YA1cnO/648rdFIHd8\n14e/T1XVDyvht29ck/aNaxapGKZvOw9auLmwIjCS3SGxZGRpsVMp0Gj1BTkzKDClAhYMa0uvJwyf\n882rLmefthbIbd+4JvNftn58ah6tUQEkwFvJmCfpswd4lTwMbSpQ0KCmE072OUuyl6ayeJMtT/74\n4w8++eQTFAoFY8aMoWvXrlSpUoXLly/TsGFDU7sxY8awZs0aAGrWrMnw4cN5+umncXV1JT4+3hTo\nu3nzJj169OCvv/7iscces9jXjh07mD17NgCOjo4MGDCALl26UKdOHXQ6HbGxsZw9e5bffst5N0xp\n27p1KwCDBg0CoFWrVnz88cc52plXCf7ggw9M4d06deowfPhwWrVqRa1atcjMzCQyMpI///yTgwcP\nlkifExMT6dSpk2l4W2dnZ4YNG0anTp2oUaMGKSkphIaGsmfPHsLDwy2ClUYrVqywuKDcq1cvBg4c\nSK1atYiKimL16tWcP3+eGzdu0L17d/744w/atGmTYzt6vZ5XXnmFX375BTBUNO7Xrx+9evWifv36\n3Lt3j8uXL3Po0CECAwOt9uXcuXP06NGDtLQ0wHCBfdSoUTRp0oTExES2bdvGvn37SE9PZ9y4cej1\nesaNG2eT57KkGKvhKhQKOnToQFJSEosXL2bz5s1cuXIFnU5H/fr16datGxMnTsw1CF8Ub7zxBvv2\n7ePZZ59l+PDheHh4EBMTw3fffUd4eDhXr15l1KhRbNu2jRdffJGbN28ydOhQevfuTbVq1Th//jyL\nFy/mzp07HDp0iE8//ZT//ve/Vvf18ccfM2/ePNOxDh48mL59+1K1alUuXrzIypUrWb9+fY4gvxCl\nSpm9Aq8EeIUQQghz9+/fZ8iQIcTHxwMwcOBA0+ejokhNTTVN53UjmJH5iB8pKSkltq3yQKlU0Ne7\nPgEhHRiiOppv+926Z9GjJCNLS6ZGaxr+TQghhBCWtFotc+fONT1evXq1RXjX6PPPP2f//v0EBQVx\n9OhR9u3bR+/evYu0z2PHjpnON5555hmr4V0wXD/+3//+R//+/QGKFRoWQghRgWkyICs9/3blmUIF\n/5gH9lUezrOvAt5DAD1snZB3heG2rxoq70p4VwhRjoXFJOdZTVSj0zNtYzAt3FxsViRw2cHLzNsb\nYRF2NGaZtp2J7/3LogAAIABJREFUZt6wNvRrXQ9HtYoLcSlM2xhcqPCu0bx9F23SX1v4bEhr+nvX\ntwherjoWxfzfSqaPWj38dPxasbejVioY16VJjlHr89KhcU1ORSXaLMyqVipYMKwtL7WpT/p9w/uu\n+fPobK82hVMLG8hVKhVFugZtzA/OG9rGtL8LcSkWoV4nOxU+3vXo0bIOByMS+PVcTI4K0NaolAp6\ntKzDe71a5vg/Zx5CNp/OLZBb1OOrbOQZqISMSfqYzbss5isf/Omp4qCmfjXL8K5Op+dO+v1S7efF\nWym8tzEYbR5vsu9tDMbNxYHH6rqUSp9qONuXavWc3377DTc3N3777TerQUyA5cuXm8K7L730Ej/9\n9BPVq1e3aDNlyhS2bNnC8OHDSUlJ4Y033iAwMNCizXfffQeAWq3m2LFjFuFXc1qtlhMnThT30Ipl\n4MCBFo9r166dY545rVbLypUrAWjWrBmnTp2iRo0aVtsmJydz5coV23X2gbFjx5rCux07dmTLli3U\nq1cvR7uFCxfyxx9/5BiS7dq1a0ydOhUwhC79/f1zVLWdNm0aEyZMYOXKlaSlpTFy5EiCg4NRKi3f\n6L788ktTeLdu3bps27aNjh07Wu13ZGQkd+7csZin0+kYOXKkKbw7fvx4vvnmG9Tqh28ZkyZNYsWK\nFfj5+aHX65k6dSovvPACjRs3zu+pKhNJSUmmirbVqlXjypUr+Pr65qgufOnSJS5duoS/vz9Tp05l\n4cKFqFTFv9Hhl19+4cMPP2TOnDkW8/38/OjYsSOhoaEcPnyYF198kYSEBPbs2ZPjiwpjcD8zM5Ml\nS5Ywa9Ys7O3tLdpcvHjRFOy1s7Nj06ZNDBgwwKLN9OnTGThwIBs3biz2cQlRZDkq8FaSIcqEEEII\nG9DpdLzxxhscPWoIkzZr1sz0eedRlP2cPbvY2Fg6dOhQrH2M79KUGcH/YIDyD+wUud9YlKVXsULT\nDwA7lQJHddneFC2EEEKUZ0eOHCE2NhaAbt265Xo9WqVSMXXqVNO10HXr1hU5wGu8+QmgRYsWebY1\nX25+g5IQQohHiNoJ7JxLN8SrVBkKWqidoFFXUCnhygHQ5vE9vUIJeithmvwq53oPhTot4fgyCNuW\n8ziVdjDom6IfixBC2Ji1YGNYTDIT1/yVb4VWjU7PisBIFgzLOQpyYS07eJkv9kbk3k9g2sZzTNt4\nDge1EjdXh2JXkC1ri0e04yWz4orG4OVbL7RAqVTk+XyUtfkvtzWFSM1Hrc+NWqlgzoBWAPzfpmDO\nxyQXed92KgUD2nowrkuTh1V0HR8W2zQPsBqVdmDVfH/WQr3G/2v929Y3zbdXKrmv02GvVFqtqGse\nSBa2IQHeSsqrvitebRpxKe3hPMWDAK+ro12Oyrt30u/z9Me/l2YXC0Sr0/PK9ydLbX+nZ71IraoO\npbY/MAR0cwvv3rt3z1Sl4IknnmDTpk05AntGgwcPZsaMGXz66accO3aMkydP8uyzz5qWX758GYAn\nn3wy14ulYLhg+txzzxX1cMpEQkICSUlJgOF5yC28C+Dq6sqTTz5p0/2fPHnSVP3X09OT3bt359mH\nzp0755i3aNEi0tMNH5wnTZqUI7wLhvD18uXLOXXqFCEhIYSGhrJz5058fX1NbdLS0vj0008Bw2uZ\nV3gXoEmTJjRp0sRi3q5duwgNDQWgTZs2fPvtt1ZDrOPGjeOvv/7i22+/JT09na+//povv/wy132V\npbi4ONO0TqfDx8eHuLg4mjRpwuuvv85jjz1GcnIye/bsYevWrej1ehYtWmT6WVy9evXKEd4FqFKl\nCjNnzuS1114D4PTp03z22WdWv6Tw8vJi5MiRrFixgjt37nDy5Em6du1q0WbJkiVkZWUBhqBu9vAu\nGKpD//zzz7Ro0aJIQxgLYRM5KvBKgFcIIYQAw2gaEydOZO3atQA0bNiQ33//Pc/PFwVRtWpV0417\nmZmZVK1aNc/2GRkZpmkXF8sbas3XzczMzHffeW2rIDw9PQu9TmF51XfF7+UB/N+mm8xTfWM1xKvR\nK5mWNYlwfSPDY62eC3EpNqvqIYQQQlQ2AQEBpmkfH5882/br18/qeoXl5uZmmjYWW8iN+fJWrVoV\neZ9CCCEqqLgQOL4UNPdKb59KNfgdgFrNDQFeY4EenQ6i/4K/VkLYdkPQVu0EXgOh8xRDG/MQrp2z\nYVlBKue6extCur5L4eYpWGn+/VPFDpsJISqG3KqNms+/EJeCf+BVAkLiTFVB+7auS+NaVVi0/1KB\nK9vuDoll3tA2xQoWhsUkM68QYdV7Gh03EjPyb1iOdWhc0yK8m93kHs3p2LQWg7/5oxR7VXC9Wz0c\n6cV81HprIV5jpVzjNd1dU7tyPjqJ745cZV9YHBlZOhzVSrzquRIcnZRrQcr2Davx/j9a0a5B9QoZ\nZM0tRGw+31gxN7eKusK2JMBbmaktg6jGAK9Ghk0vNxo1amQRvsxu3759pioF7777bq7hXaMxY8aY\nwpt79+61CPBWqWIYOuXKlSvcvXs3RxXfiszZ2dk0febMmVLf/+rVq03TM2bMKNKX61u2bAEM1Xdn\nzJiRazu1Ws3//d//MXr0aNN65r9DAQEB/P333wD4+vrmGd7Nry9gqPqbVwXamTNnsnz5cvR6PVu2\nbCm3AV7zKsPJyckkJyfTt29ftmzZYjGkr5+fH9u2bWPo0KFotVoWL17Mq6++WqTn0dzbb7+d67Iu\nXbqYplUqFRMnTsy1bdeuXVmxYgUAYWFhOQK827ZtA0CpVJoqOltTu3ZtRo0axeLFiwvUfyFsLkcF\n3twr3QkhhBCPCr1ez+TJk/n+++8BQ3D1wIEDNhnlonr16qZz4tu3b+cb4DV+pjCum31bRrdv3853\n33ltqzwxjGb0Lz7+1RvvG2sZojyCwuza64eaMezQPbwZUw82q+ohhBBCVEYhISGm6WeeeSbPtu7u\n7jRo0IAbN25w69YtEhISqFOnTqH32aVLF2rXrs3t27f566+/8Pf3Z/z48TnaJSQk8P777wOG62jv\nvfdeofclhBCiAgvZBFsnlG5hCWO13HpWPkMqldCgg+Gf7zLQZFgGfOFhCNfasgLtXwn2zpbz9BLg\nFUKUnLCYZPyPXiUg9GEot5+3Oz1bunEgIt4U1rVTKtDo9Ba3FGRkadl6NqbQ+8zI0pKp0Raruun3\nR69UmtsbFIBCAXkVB1YpMFWjzUu7BtVxslORkVW+vtN1slPlGCXNOGr9isBIdofEmn7/fLzrWVTK\nNWrlUY2vX3kyR9g8LCbZYhuOaiV9Wrnj93xTWntUK83DFI8ACfBWZmpH4OEfT6UxwFvQ21NEiXvu\nuedQKHK/G+PIkSOm6ZSUFFM4LzfGyptgCPeZ6927N2fOnCExMZHnn3+eGTNm0L9//3L9BWpBubq6\n0rFjR06cOMH+/fsZMGAAb731Ft27d8839GwLxqFtgTwD2bmJj48nKioKgMcee4xGjRrl2b5Pnz6m\n6RMnTti0L2CoKGyU33B1jRo14vHHHyc8PJzr168TGxtLvXr1irTfkqTLduNC9erVWbt2rUV412jg\nwIFMnTrVFEb++uuvix3gzWt9d3d303TLli2pVi33kz3ztuahZIBbt26Zhhd+4oknLNpa06NHDwnw\nirKTvQKvvnx92BNCCCFKm16vZ8qUKXz77bcAeHh4cPDgQZo1a2aT7bds2ZLIyEgAIiMj8w0FG9sa\n182+LWvtirKt8sarvisfjh/O4/+pxuOKa7RWXDMt05LzxkZbVPUQQgghKquIiIdVq7KPAGZNkyZN\nTNe2IiIiihTgdXR05Ntvv2XEiBFoNBr8/PxYtWoVAwYMoEGDBiQnJxMaGsqPP/5ISkoKVatWxd/f\nv0gj0t28eTPP5cbCHEIIIcqZuJBSCO8qDIW2NJmFq5YLD4K2VQq/rKD9siCZASFEyVh28DLz9kbk\nCOVuORPNljPRFm2z8kqXFpK1MGdh6HR6AkLi8m9YzqmUCga282BclyZcik8pcDXavCiVCvp5u+d4\n/cqaj3c9q9dmjZV45w1tY7UCtDXZq9IWZRtCFJUEeCsztQOQbnporMCbpZUKvOVFfkOBGkOdANOn\nTy/UthMTEy0ez5w5k127dhESEkJISAijRo1CqVTSpk0bOnXqRLdu3ejXrx+urhVz+M+lS5fSs2dP\nkpKS2LlzJzt37sTJyYlnnnmGzp0707NnT3r06IFabfs/e8aLtVWqVKFhw4aFXt/8Yu5jjz2Wb3s3\nNzeqVatGUlJSjgvB5heOvby8Ct0X8/64uLjkGwIFQ5/Dw8NN65bHAG/2oXpffvllatasmWv7CRMm\nmAK8Bw4cKPb+a9WqlesyBweHArXL3jb7cMUxMQ/vQixI0KNp06b5thGixOSowFuKlQ6EEEKIcsYY\n3v3mm28AqF+/PgcPHqR58+Y224e3tzd79uwB4NSpU/To0SPXtuY3hrm5ueUIz3h7P/zC8dSpU/nu\n27xN69atC9XvspCp0XJfqyNZaVmZ6CP1DzyjjMBf40O43nDTpS2qegghhBCV1d27d03TtWvXzre9\n+XUx83ULa8iQIfz+++9MmTKF8+fPc+zYMY4dO2bRxs7Ojg8++IAJEybQoEGDIu2nqOsJIYQoY8eX\nluz1aGOl3VaDi14tt6RkLyolFXiFECVg2cHLfLE3Iv+GJcDH271YActMjZZMTcXOU6kUsH3Kc6YK\nsV71XQtVjTYv47s0ZUdQjNUwcFlQKxWM65L3zaLZQ7lFYYttCJEf+Q2rzNROmAd4jRV4U+9puJGY\nTu2qDjjZG+4+qeFsz+lZL5Zq92ZvP8+ukPzvQu/fph5zC1Cy3RZqOJd8tVZz1qp/mivOhcr79+9b\nPK5WrRrHjx9n3rx5fP/998TExKDT6QgKCiIoKIhvvvkGR0dHxo0bxyeffJJnFdDy6KmnniI4OJi5\nc+eyceNG0tLSyMjI4MiRIxw5coTPPvuMunXrMnPmTKZOnYrShh+Wk5OTAfIdhjY3KSkppukqVQp2\n52zVqlVJSkoiNTXVal9s0Z/C9CX7uuVNjRo1LB4//fTTebZv2bIlVatWJTU1lfj4eFJTU4v8fAIF\n/n0rzu9lWlqaadrZ2TmPlgYFfX2FKBES4BVCCCGAnOHdevXqcfDgQVq0aGHT/fTt25d58+YBEBAQ\nwIwZM3Jtu3v3btO0j49PjuVeXl40bNiQ69evEx4eTlRUVK4VfVNTU02jhDg7O9OtW7diHEXpcFSr\nGGJ/go6KCxbz7RRahqiOMkD5B9OyJrFD1xmAfedvMfBJj7LoqhBCCFGumV+3dHR0zLe9+bXy4l5j\nfP7551myZAnvvfceZ8+ezbE8KyuLpUuXkpaWxqeffprvdXohhBCVhE4HYdtLZtsqe2g91LLSbrGq\n5ZYARfbvoMpHAEsIUXmExSQzr4zCuwAjO+YstqbT6Um/b/ge0lGtIlOjRafTo1QqcFSruK/TmSqr\nOqpVONmpyMiquCOHLhjWzhTeNbJVJVnjdt7bEERZD/xemOrBQlQEEuCtzNQOFg8VZifhd9Lvczc9\niwY1najubI9SqaBWVYfsWyhRU3o0Z+/5uDzvzlArFUzu3rzU+1ZemAcGz507Z1HpqCiqVKnCnDlz\n+PDDDwkJCeHYsWP88ccf7N+/n9jYWDIzM1m6dCmHDx/mxIkTxQr4abWlf1LTqFEjVq5cyTfffMPJ\nkyc5fvw4gYGBHDp0iNTUVG7dusU///lPgoOD+eGHH2y2X1dXVxITE3OEaQvKvDqseQgzL8Z9ZQ+V\nmldQLk5/7t69W+i+GNctjzw8PEyBXKBAAfVq1aqZ2icnJxcrwFsazP+/pqen59HSoKCvrxAlQpFt\n+BoJ8AohhHhEvfXWW6bwrru7OwcPHizQqByF1a1bN9zd3YmLi+PQoUOcOXOGp556Kkc7rVbLokWL\nTI9HjBhhdXvDhw83BYIXLlxosY657777znTeOWDAgALdaFbWlPGhfKFcaroJOjs7hZYFdt9w6b4H\n4fpGTP8lmMfqusjFYiGEEKKcuH37NsOGDePgwYPUqFGDL7/8kgEDBtCgQQPS09M5ffo0CxYsYPfu\n3Xz11Vf88ccf7N69O9+RsbIzjliQm9jYWDp06FCcQxFCCGFrmgzIyv/7k0Kp3hiGfA8e7ctPpd1c\nWQlr6fU5K/MKIUQR6HR6vj18uUxvDVhz/DqOajWPu7sQdPMOS/Zf4fDFBLT5VBx3UCvx8XZnVMfG\ndG5Wi/0X4kupx7b1wuNueRYasEUlWd92HrRwc2HOjvP8GZWY/wolZOPEjjzVMPcRl4WoaMr7WaQo\nhuvJlqXds3/5pEfPjcQMMu6Xzd0jxrsz1Lnc2SF3TICnp6dpOr8LgoWhUCho06YNkyZNYvXq1URH\nR7Nv3z7TsF+hoaF8++23Fus4ODwMUWev7pudXq8nMbHs3qwdHBx4/vnn+de//sXOnTtJSEhg+fLl\n2NnZAbBq1SpOnz5ts/0ZX6e0tDSuX79e6PXr1atnmr506VK+7ePj40lKSgIMw+ta6wtAWFhYofti\n3p+UlBRu3bqVb/uLFy+aprP3p7ww/s4bGZ+/vJhXM64IFanNn/srV67k2/7q1asl2R0h8pajAm/F\nvZNVCCGEKKq3336bZcuWAYbw7qFDh2jZsmWht7Nq1SoUCgUKhYLu3btbbaNSqZg9e7bp8ejRo4mP\nz3kheubMmQQFBQHw3HPP0adPH6vbmz59uunmvaVLl7Jjx44cbU6ePMl//vMfANRqNR9++GGhjqvM\nHF+KirzPTewUWsapAwDQ6PSsCIwsjZ4JIYQQFYr5zfCZmZn5ts/IyDBNF7VIQHp6Ol27djWFd0+e\nPMm7775L06ZNsbOzo1q1avTs2ZNdu3YxZcoUAP7880/efvvtQu/L09Mzz3/m13yFEEKUE2qnByPY\n2tCINdCgQwUI72I9qJtPqE0IIfITFpPMexuD8Jq9hx3B+Y/AXZK2nI3mH4uO0uKDAAYvO86BiPh8\nw7sA9zQ6tp6NYfA3f1TY8K5KqWBa78JfWy4Kr/qubJzYiV1vd6FHyzqoSvlGECc7Fe08a+TfsCTo\ndHA/zfBTCBuqAGeSoqh2hd+xeKywcq+LHj23U++VVpdy8G3nwY63ujDkKU+c7AzV+JzsVAx5ypMd\nb3XBt92jPQyl+fCiAQEBJbYfhUJBr169LKomGYc5NapevbppOjo6Os/tBQUFFagCaEH6BYZAcHE4\nOjry5ptvMnnyZNO87MdXHM8//7xpevv2wg+94+bmZhpyNiIigmvXruXZfu/evabpZ5991qZ9yb7N\nffv25dn2+vXrXLhgGFq2YcOGuLu7F2mfpcF8+N/8AtwRERGmofo8PDyKVY26tNStW9cUwg8PDycu\nLi7P9gcPHiyNbglhnTJ7BV4J8AohhHi0zJo1iyVLlgCGzz3vvPMO4eHhbNu2Lc9/Rblh0MjPz49e\nvXoBcP78edq2bcvs2bNZv349y5Yto2vXrsyfPx8wfP5bvnx5rttyc3Nj8eLFAOh0OgYNGsTIkSNZ\ntWoVq1evZuLEiXTv3t30uXDu3Lk8/vjjRe57qSnEcKo+ypMoMFyo3R0Siy6P0YWEEEKIR5H59eTb\nt2/n2/7vv/+2um5hLFu2zHStcvr06bRo0SLXtp9//rlpPxs2bMj3WpoQQohKQKkEL1/bbe+FD8G9\neKOnli5rASv5LCuEKLptZ6MZsCSQLWeiydSUj0CjHgoU2i1tudQ1tNm2F5ZBccRWHtX44fUOXPqk\nH6FzehM6pzeXP344/eXLuRd0LA4fb3eUJfmEWhMXAlsnwv884NP6hp9bJxrmC2EDEuCtpHQ6PUcj\nUyzm5Tb8Y1JGVrEDksVhrMR7fm4fwv7bh/Nz+zzylXeN+vXrR506dQBYuXIlly9fLtH9NWnSxDSt\n0VgOZ+7k5ETTpk0BQ1UC8+qk2S1cuNAm/TFWaTAOuVpceR1fcYwaNco0/cUXX3Dnzp08Wls3ZMgQ\nwBBWNg5Fa41GozF9qW6+nlG/fv2oXbs2YAjwnjhxosh9AViwYAFabe7Bus8//9z09yN7X8qbESNG\noFIZQoO//PJLnlWizcMK/fr1K/G+2Yqvr+HCk06ny3UYYzB8abJ69erS6pYQOeWowGu7v8lCCCFE\nRRAYGGia1uv1/Pvf/2bQoEH5/jtw4ECR96lWq9m8eTP9+/cHIC4ujo8++ohXXnmFKVOmmPrk6enJ\nrl27aNWqVZ7bGzNmDMuWLcPR0RGdTsfPP//M66+/zujRo1m+fDmZmZmmyr/vv/9+kftdqgoxnKqz\n4h6OGEanycjSkqmRG5KEEEIIc+YjC0RG5l+t3rxNUUYlAPj1119N0717986zbZUqVejcuTNguJZ2\n6tSpIu1TCCFEBdP5LawHWQtDAS/Mga7v2aBDpUhhJRpSDkNuQojyLywmmTdWneLdDUFo5Kb2fKmV\nCnq0dCtw+4JmUxXAi0+48evbXcu0OKJSqaCqox1VHe1Qq5Wm6UFPe+Yo6GgLIzs2tNm2CiRkE3zX\nHYLXPbx2nJVuePxdd8NyIYpJAryVVKZGS7LG8g+gtQq8ADq9nvLwnqpUKnC2V5f+nRLlWJUqVZgz\nZw5gGP6rT58+nD17Ns91Ll++zHvvvZdjOFQ/Pz/OnTuX57rffPONabpdu3Y5lhuDjJmZmfz73/+2\nuo2vvvqKNWvW5LmfgjIGbi9cuGAxhFp2Z8+eZe7cucTG5j4kQ1paGj/99JPpsbXjK6oOHTqYgpM3\nb97Ex8cnz76cOHEiR0WHt99+G2dnZ8DwOqxatSrHehqNhsmTJ5tex9atW5u+fDdydnbmgw8+AECr\n1TJw4MA8Q7zXrl3L8Tvl4+ODt7fhjuHg4GAmTZpkNfC8atUqvv32W9N+33nnnVz3Ux40a9aMcePG\nAXD37l1ee+01q8P3bdu2zRR+ValUTJs2rVT7WRxvvfUWdnZ2AMyfP9/qUMbp6em8+uqr3L17t7S7\nJ8RDOSrwSoBXCCGEKA0uLi7s3LmTbdu2MXjwYBo0aICDgwO1a9fm2Wef5fPPPyc0NNQUZsnPpEmT\nOHfuHO+99x5eXl64uLhQpUoVWrRowcSJEzl16hRz584t4aOyIbUT2DkXqGm63oFM7AHDSEKOattd\nhBZCCCEqA+P1RSDfcOytW7e4ceMGYKj0byxqUVgxMTGm6WrVquXb3rzSb2pqapH2KYQQogJy8yra\neioHaPMKTDwKXf9p2z6VBmtDnOvLR8VMIUTFsT3IUHX3wIX4/BsL1EoFC4a1ZVrvlvlWo1UCWyZ1\nZudbXQrUdufbXfAf80y5Lo6YvaBjz5ZF+6xnZKdS0M6zho16VwBxIbB1Qu7fZes0huVlVYlXp4P7\naYafokJT599EVESOahUKtSOQZZqnVOitjoKhVChKtFy7KJ7Jkydz+vRpVq5cydWrV3n66afp06cP\nL7zwAp6enigUChITEwkPD+fo0aMEBQUB8N57lnd9+vv74+/vz+OPP07Pnj1p3bo1tWrVIjMzk+vX\nr/PLL7+YgqE1atRg0qRJOfryzjvvsGLFCjIzM1m2bBkXL17k5ZdfpkaNGty4cYNNmzZx/PhxunXr\nxuXLl4mOji7Wsb/44oucO3eOtLQ0XnrpJUaPHk2dOnVQPPiA6e3tjYeHB0lJScyZM4f//ve/dO7c\nmc6dO9OyZUtcXV25e/cuFy5cYN26daYLuB07dqRnz57F6lt2K1eupGPHjly6dIkTJ07QvHlzhg8f\nTqdOnahRowYpKSmEh4ezZ88eQkJCOHv2LO7u7qb1GzVqxKJFixg/fjw6nY7XX3+d9evX4+vrS61a\ntbh27Ro//fQToaGhgCHcvXbtWpTKnPdhvPPOOxw7doxNmzZx69YtOnfujI+PD7169aJevXrcv3+f\nq1evcvjwYQ4fPsz8+fN58sknTesrlUrWrFlD586dSUtL4/vvv+f48eOMGjWKxo0bk5iYyPbt29mz\nZ49pnUWLFtGoUSObPqdGs2bNsniclJRkmr57926O5U2aNDEFdbP73//+x9GjRwkPDycgIAAvLy/G\njRtHixYtSE5OJiAggK1bt5qqCn/22WcVY6jfB1q2bMns2bP5z3/+Q1ZWFgMHDmTw4MH07dsXFxcX\nIiIi+OGHH4iKimLYsGFs3LgRwOrvkRAlKnsFXvSGDxbyuyiEEOIRcejQIZtta+zYsYwdO7ZQ6/j6\n+ppuQiyuFi1asGDBAhYsWGCT7ZUp43Cqwevybbpb9yz6B/fF+3jXk5uRhRBCiGz69u1rGmksICCA\nGTNm5Np29+7dpmkfH58i79PFxcU0fePGDVq0aJFn+2vXrpmma9WqVeT9CiGEqCBCNuUdwslOoYIB\ni6HNcNDeM9z0WemuYZeDKl9CiFKn0+nJ1GhxVKsKdU0rLCaZaRuDpepuATiolfRvU59xXZqYArYL\nhrXN9fkzBn2falSjwG1be+R/02J5YSzoOL3P4xyMSCjyu8+Ath6lex32+NL8zxt0Gji+DAZ9k3c7\nW4oLMfQtbLuhGrCds+G6dqcp4NYKstIMb/H2VSzPXXQ6wyh0KodKfG5TMUmAt5JSKhU829IDiLKc\njx5dtmFBqjnZmQKRonzy9/enZcuWzJ07l/T0dPbs2WMRnsyudu3aODo6Wl124cIFLly4kOu6DRs2\nZPPmzXh45Cyx36JFC77//nvGjh2LVqvl999/5/fff7do8/zzz7NlyxaeeuqpAh5d7qZNm8batWu5\ndesW+/fvZ//+/RbLf/jhB8aOHWv6/dXpdAQGBloMR5vd888/z6ZNm2weWKxZsybHjx9n5MiR7N27\nl/T0dH744Qd++OEHq+2t7d8YOp06dSrp6ens3buXvXv35mjn6enJli1baNOmjdVtKxQK1q9fz4wZ\nM/j666/RarXs2rWLXbt2Fbgvbdq04eDBgwwePJibN28SGhrKv/71rxztnJ2dWbRoUa6BWVv45JNP\ncl2WlJTZF8gqAAAgAElEQVSUY3m3bt1y7U/NmjXZt28fw4YN4/jx40RGRuYIAAPY2dnxxRdf8O67\n7xav82Vg1qxZJCUlsWDBAvR6PZs3b2bz5s0WbUaMGMGHH35oCvCaf7khRKnIEeAF9FpkcAghhBBC\nlLlOUyDklzwvzGbpVazQGEaoUSsVjOvSpLR6J4QQQlQY3bp1w93dnbi4OA4dOsSZM2esXjPWarWm\n0bDAcN2qqLy9vTlz5gwAa9euzbOIw+XLlzl58iRguD7avn37Iu9XCCFEBRAXAlvfBJ02/7ZqR2g1\nGDpNBvcHFeVVlSBWYbUCr4TwhHiUhMUk4x94lYCQODKytDjZqejn7c74Lk0LVMXVP/DqIx/etVMp\n0Oux+jwogXnD2tCvdT2r4Wjfdh60cHNhRWAku0NiTa+Bj3c9i6BvYdtWJF71Xfm/Pi35Ym9Eodct\n0euwOl3O0KtOZwjIFkTYNvBdWrQwrDFUW5AwrU4HQWvh13ctr19npRuKUgSvA4XyYYV9hRKa9oDW\nQyDysKGfmnsP11M7QqtBhmvi7t7YlPlxwcPn187JMN84LUFiQAK8ldqwZ5vDpSiLeQr0YBbgVaCg\ndlWH0u2YKDSFQsGMGTN4/fXXWblyJb///jthYWH8/fffgGGor+bNm9O+fXt69epF7969sbOzs9hG\ndHQ0e/fuJTAwkHPnzhEZGUlSUhIqlYo6derQpk0bfH19GTVqFE5OTrn25bXXXsPb25v58+dz+PBh\nbt26haurK15eXowePZqxY8eiUtlm6ND69etz5swZFixYwO+//05kZCSpqamm6qhG3bp1IyQkhN9+\n+43jx49z/vx5bt68SVpaGo6Ojnh4eNC+fXtGjBjBSy+9ZJO+WVOrVi327NnDgQMHWLt2LYGBgcTG\nxpKRkUG1atVo3rw5Xbp0YdiwYbmGb8eNG0e/fv1YtmwZe/fu5erVq6SkpFCzZk1atWqFr68vfn5+\neb5GACqVigULFjBhwgT8/f3Zv38/UVFRJCUl4ezsTKNGjejQoQO+vr65VrV45plnuHjxIv7+/mzf\nvp3Q0FASExOpWrUqTZs2pU+fPkyZMoX69esX+7krTZ6engQGBrJhwwbWr1/P2bNnuXXrFk5OTjRu\n3JhevXrx1ltvlVhF4dIwb948BgwYwJIlSwgMDOT27dvUqlWLtm3bMn78eIYMGWL6ggIMwWYhSpXS\nyvuETgMqu5zzhRBCCCFKk7s3DFqea1WmLL2KaVmTCNc3MlW7qKgXzIUQQoiSpFKpmD17NpMnTwZg\n9OjRHDhwADc3N4t2M2fONI0q99xzz9GnTx+r21u1ahWvv/46YLgebG1Eg1dffZUff/wRMBR/6Ny5\ns9Ub/ePi4hg2bBgajeG9vn///nJ9TAghKrvdMwoW3m09DAYvr6QhEmsFvR7tIJ4Qj5LtQdE5Krpm\nZGnZciaaHUExzHu5DX1auedalVen0xMQEleaXS6XBrStz7guTYscrPWq78qCYW2ZN7RNvlWQC9O2\nIpncozkA8/ZGFPhdqESuw+p0EP0XHJkPl39/UGwKQ+i1WU94/v8MwdiCyEo3BFQdClE4LS4E/lgC\n4dsh60HQ9fH+8NzbUK9tzrYHPoaL+wBd3tvV6yynr+w3/LNGk/kg+LsBBiyCtq8YwrU6neF5yF7B\n1xrz8LOdE0Sfhj+/g4jdD54/JYaFebzaKgfwGgjPvGGoIPwIBnsV+uxJOFFmbt68SYMGDQDD8E6e\nnp7F22B6IpcOrUdToxlql9q0qKkkXNeQLAyhGQUKGtR0orqzfXG7LoQQooJZvHgxU6dOBWDr1q0M\nHDiwSNu5dOkSGo0GtVqd77CE5mz+nidKlM1fr7s34KvWlvP+fbNwH2qEEEKIEiLnKRVLib1ecSGw\ndRLcCjHN0uthv+5JFmiGkVL9cb4b1V7Cu0IIIUpNRTxH0Wg0+Pj48NtvvwHg7u6On58fXl5eJCYm\nsm7dOtNoatWrVycwMJBWrVpZ3VZBArwAL7/8Mps2bTI97tatG76+vnh6epKRkcFff/3F6tWruXv3\nLmAoynDixAmaN29uq8MGKubrJYQQlVZsMCx/vmBt7Zzh39GVMyxy5xp8na3A0PuxYO9c7E3L+17F\nIq/XoycsJpkBSwILVD03t6q86fc1eM3OOXrwo2bL5E481dBw859Op69UwdrSFhaTzIrAq+x+UBFa\npVCgR4/5r6mDWkn/NvVtW3U4LgSOL4XQzaC9n3db82q2+bFzBi/fglWzPboQ9v+XXEOtDTqBz+dQ\nqzmE/wrbJha8HzalhGY9oNsM8GhvWTk3+jQc/gKuHnwYfrY1G1QIrijveVKBtzJTO+aYpXjwn99B\nraRhzSo42dumUqoQQoiKIysri+XLlwNgZ2fHc889V8Y9Eo8cpZVT0DyGqRZCCCGEKHUJERAfZjFL\noYAXVWfppjzHYrtpeNXPfVhuIYQQQoBarWbz5s28+uqr/Prrr8TFxfHRRx/laOfp6cmGDRtyDe8W\nxpo1a3B1dWXlypUAHD58mMOHD1tt27JlS9avX2/z8K4QQohy5tjigrfNSjeEU+yrlFx/yorCSris\nTMJAQojSpNPpWX7kSoHCu/CwKu/2s9H8b4g3Q59qQHhsMsuPXCnhnpZ/dioF7TxrmB4rlQqc7SV2\nV2A6neE99kFVVUOF4XbMG/ogCK1SQFYGmQp77FVq7ut0tg9Hh2zKdeQ1qwrzPpmVbqhmG/KLYYQ3\n76HW2x39EvbPzXtbN44X/OajEpVPBd+SZqwQnN9zWgmU678kO3bsYPXq1Zw6dYq4uDhcXV1p3rw5\ngwYNYsKECbi62rbKSVRUFCtWrODgwYNcuHCBpKQkHBwccHNzo127dgwePJjhw4djZ1dBhnfOI8Dr\naKeS8K4QQlRC8fHx3L59Gy8vL6vLMzMz8fPz4/z58wAMHTqUOnXqlGYXhcglwFtCd+YJIYQQQhRW\nXIjhQm4ulQPsFFqmJi8g48Y/cPBoKxU2hBBCiDy4uLiwc+dOtm/fzk8//cSpU6eIj4/HxcWFZs2a\nMXjwYCZMmEC1atVssj8HBwdWrFjB22+/zapVqzh27BhXr14lOTkZe3t73NzcePrppxk4cCDDhg3D\n3l5GKBRCiEpNp4MLvxa8vZ2zIVhUKVn77CqDNQtRWYXFJOMfeJXd52LJ1BQ+rK/Vw4xNIfxrU0iJ\n/qWo5+pIfOo9tAUMGIPhr1lZ/PUa0NZDrgMWhbHibdh2Q8jVzhmeGADPjAOP9ijjz+Nsttz5QSVb\ntXnV1Wzh30Ixrnv7cuHCu0Wl0xj2U6dlzqqxcSH5h3dFTnk9p5VEuQzwpqamMnLkSHbs2GExPyEh\ngYSEBI4fP87ixYvZuHEjHTt2tMk+Fy5cyPvvv8+9e/cs5ms0GiIjI4mMjGTr1q18/PHHbNq0idat\nW+eypXJEqcxxJ53ywdtYYd78hBBCVBzXr1/nmWeeoX379rzwwgu0bNkSV1dXUlJSOHfuHOvXryc2\n9v/Zu+/4pqr/j+OvjG5aoJtSloJgoRRRlD0FpCIFREQU2SJLf4oDFQXnV4QqIggoIAqKIrKUIcoG\nAUGklg1StEDLKqN0QJvk98c1oWnSNkmTNm0/z8ejD27uPfeek9DmJve+7+emAMotAqdOnVrKIxYV\nktrKRUQS4BVCCCGEu9g5s8gDuVp0rPjsdV4zjOLBxtUsbisohBBCCHNxcXHExcU5vP6gQYMYNGiQ\nze2bNGnCtGnTHO5PCCFEOZGbpfzYqkF3+4NBZYXVCrySGRCivNDr/6tiqtWwKuEsL3yfYHPV3cK4\n8l1Co4J5g5px/Hw645bYNl6tWsW0R5uw/M8zbDhy3qF+3+oRxaQfD2HPy6NVqxjauo5D/VU4ecO2\nB5dZhmZzMuGvb5Uflea/KrcG8+UJi+GvJdDhNbh03Dz8GxUHecO9BckfHFZpCizY4HT6XNj5KfSa\nZT7/txnIxTMOKug1LSfcLsCr0+l45JFHWLduHQBhYWEMHz6cqKgo0tLSWLx4MTt27CA5OZnY2Fh2\n7NjBnXfeWaw+Z8yYwbhx40yPW7ZsSY8ePahRowbXrl3j4MGDLFiwgOvXr3P06FE6dOhAYmIi4eHh\nxeq3RKjMAzIqlCtrdPJhXAguXrzI9u3bHV6/Zs2aNG3a1IkjKh/+/fdf9u3b5/D6DRo0oEGDBk4c\nUcW0d+9e9u7dW+DyOnXqsHLlSiIiIkpwVEL8x2oFXhdf7SiEEEIIYQu9Xjmoa4NY9W5evPEUy/ad\nYdX+s8T3jSGuSXUXD1AIIYQQQgghhM20PkrYJyfTtvYtxrh2PKVJZS2YLJkBIco6Y6XdtYmpZOXo\nUAP219steVq1ivi+MURFBBAVEUC9UH/mbU9iVcIZcnTW35uM63SPiWDDkXMO9eulVfPWT4ftCu8C\nTH0kpmJevJ83jAuFV8HNH5jVekPuDQrd1xQWqDXoYONb5vPyhnt7zYZGfayP6a8lsGKk+fnnkgrv\nGh1aAXEzb41LlwsHl5fsGMqb/K9pOeJ2Ad65c+eawrtRUVFs3LiRsLAw0/LRo0fzwgsvEB8fz+XL\nlxkxYgRbt251uL+srCxeffVV0+PPP/+cYcOGWbR744036NSpE4mJiVy8eJEPPviADz/80OF+S0y+\nD+JSgVeIWw4cOECvXr0cXn/gwIEsWLDAeQMqJzZu3MjgwYMdXn/ixIlMmjTJeQOqYKKjo1m8eDHr\n1q0jISGBCxcucOnSJQCCg4O56667eOihhxg4cKDcIlCUHqsVeCXAK4QQQgg3kJtl84ldX9UNvLlJ\nFt7k6g2MW5JAvVD/inkwXwghhBBCCCHckVoNddrCsXVFt63ZEiJiXD+mUmOtAm9ZiPkJIQqycv8Z\ni8q17v5X7eOhITa6GkNb1zE7hhYVEUB83xim9GnM/tOX+XrXv6z5L5Scfx293sDaxFSH+g8L8Obf\nNBsv6vhPpwah9Lyrgl20b616rQrljqrWquAmLrWstJub7brxGXSwbDgsf1qZNo6pXhf46zvb9vuu\nlpOpHGtOO6m8ln99DwY5H14sxtfU06+0R+J0bhXg1el0vPnmm6bHCxcuNAvvGk2ePJkNGzawf/9+\ntm3bxvr16+nSpYtDfe7YsYP09HQAmjVrZjW8CxASEsL//vc/unfvDlCs0HCJypc6V/0X4NVLgFcI\nIcolLy8v+vXrR79+/Up7KEIUTCrwCiGEEMJd2VGdKdPgRTa3LorL1RuYtz2J+L7l+YSvEEIIIYQQ\nQpQRej3s/xqO/1J0W5UGYj9w/ZhKk8pagFcyA0KUVYfOXrMI77ozb62avRPux9dTi1pt5f3oP2q1\niqY1A2laM5ApfQxk5+rw1mrM1snO1ZGda39UWaOCc9fsC5Vq1SrGdalvd19lmrUwrkF3q5CusQpu\n4vfQaw6E1LdsX1KMVXWNY0pYXPJjKIiHLxxZbVkJWDjOw/dWNehyxq1qCm/dupWUlBQA2rVrV+Ct\n6TUaDc8884zp8eLFjv8Bnj9/3jRdr169QtvmXX79+nWH+yxRBVbgBYN8IBcVXPv27TEYDA7/SPVd\n6wYNGlSs11Wq7wpRAVgL8MqV/kIIIYRwB2q1Uq3BBmv092HId2htTWKKXDQthBBCCCGEEKUpNRG+\neRTeCoJVY4q+ZbZaA70/u1VFsNwqODAnhCh75m4/WWbCuwAPNo6gkrdHoeHd/NRqldXAr7dWg4+H\nlbt9FkKrVvG/h6O5YUfwV6tWEd83pmLdbSs10fYwrj5XabvxHQmoWlOnnYR3nS2qp0Uh0/LCrZ7V\n2rVrTdOxsbGFtu3WrZvV9ewVGhpqmj527FihbfMub9iwocN9liiV+U7LWIHXgIEytC8XQgghRHmi\nsvIRVL68CCGEEMJdtBht/YKjPHIMGubldrOYn5WjIzu3iJPDQgghhBBCCCFcI3EpzGn7362zbQxp\n1e0C0X1cOiy3IBV4hSg39HoDaxNTS3sYNtOqVQxtXcdp21OrVXSLDre5/f13hrJqTGv6NK1hc/BX\no1KxcnQr4ppUd3SY7k+vh5sZyr9GO2fad85WnwsnbKh0XxFdOyvnv51JrYUWo0p7FC7jVgHexMRE\n03SzZs0KbRseHk6NGjUAOHfuHBcuXHCoz9atWxMcHAzA3r17mTt3rtV2Fy5c4NVXXwVArVbz/PPP\nO9RfictfgVd160O4ThK8QgghhCgNKpXFRUbyBUYIIYQQbiM8GnrNwVBAiDfHoGFczkgOG2pZLPPx\n0OCtta8CiBBCCCGEEEIIJ0hNhGVP2X+3t6Qt5uGl8spaYQ25M54Qbk2vN5B5M9fibk/ZuTqycsrG\nBeSuqmI7rPVtaG2o5vtilzuYO7AZUREBdgV/e95VnYbVKxd3mO4pNRGWPw3/qw7vRSj/Ln8aUhLg\n4HL7t6cvG7+LJS41oYQ6UmFWZV+lhsj7oEZzy/PxZZVaC73mlOu7JRReTqSEHT161DRdp07RV1/U\nqVOH5ORk07ohISF29+nt7c3s2bPp168fubm5DB8+nAULFtCjRw9q1KjBtWvXOHDgAF9++SXp6elU\nqlSJuXPn0qpVK7v7KhX5SkcbK/AC6OSKOiGEEEKUFrUWdHm+0EmAVwghhBDuJLoPqpD6HPvqGe7I\n3GeanWHwos/NSVbDuwCx0dXsuhWgEEIIIYQQQggn2TkTDA6EiHIyITcLPP2cPya3Yu27quQFhHBH\nh85eY+72k6xNTCUrR4ePh4Zu0eEMa30bUREBeGs1+Hho3C7Eq1GpQKUUE/Tx0BAbXY2hres4PbwL\nEBURQHzfGMYtSSDXSvFCFfBi1/qM6lDXbP6w1rexav9Zq+sYObtisFtJXArLR5ifl83JhITFyo8o\nI1TQazbc+RBofZRZORnKbt3T71ZWUK+/Nd/DB3Q34OIJ2D0bDi6D3GwXD1OtXCyk9YH63eG+YVD9\nHuVzV+oh+GM+HFoOuTesr6/1hoa9lcq75Ti8C24W4L1y5Ypp2lgVtzBBQUFW17XXww8/zK+//sro\n0aM5ePAgO3bsYMeOHWZtPDw8eO211xgxYoSp8q+9Tp8+XejylJQUh7ZbqPwVePN8CM9/lY4QQggh\nRIlRa5UvCUZydaYQQggh3E14NB73vwarHjbN0qEuMLxbrg/uCyGEEEIIIYQ70+vh4ArH1vXwvRV+\nKc9UVgK8UvBLCLezcv8Zi1BqVo6OZfvOsGr/WeL7xhDXpDrdosNZtu9MKY7U3LKRLWlSowqgVAj2\n1mpcfpF7XJPq1Av1Z972JNYkppCVo8NbqyY2uhrD2txmNThcVPDXrorBer0SRNT6WBRXLFbb4iqo\nr9REy/CuKFvUGqjbBTq+Zhlo9fK30l5tPl+jhYgY6DUL4mYqvycaL+VfY8g3NwtSD8DWeDi5seiL\no1RquK0jtHvxVjjXGCQG67+LGn+odZ/y03OW9XHobpTM34ubcKsA7/Xr103T3t7eRbb38bn1QTo9\nPb1Yfbdt25YZM2bw/PPP8+eff1osz8nJYebMmWRkZPDee++Z9W0rR4O/xZKvHLZZBV4J8AohhBCi\ntOS/JbUEeIUQQgjhhupEVjd7HKDKQo0ePeYHDl11O0AhhBBCCCGEEDbIzVJ+HBEVV2HCIZYkLyCE\nOzl09lqBwVKAXL2BcUsSqBfqb1Ml2ZJSP9yfprWqmh77epZcFM0YyJ3Sp7HNwWFrwV+7KganJipV\n3w+tVKrXevgq+5IWoy1Dldba3tkDmg1Vwo559z/FDfkWNi6A756Q8K5NVJTO/lEFfebB0XVw5Cfl\n/1DrA3fGQbPBENrQvLpucanVt0K2mrwhX3+o1QIGLLWs4Js/6Ju/4m/+bUHRdzgocBxuFWl1uYr1\nbAtw8eJF+vbty6ZNm6hatSofffQRPXr0oEaNGmRmZvLHH38QHx/PmjVrmDZtGr/99htr1qwxqwDs\ntgqpwOsOO3IhhBBCVFBq84uM5AujEEIIIdySdxWLWQFkcIVbBxMbRgQwpY+Ed4UQQgghhBCi1Gh9\nlB9HQrz3DHH+eNyRykrgRyrwCuFW5m4/WWSOJ1dvYN72JOL7xvDyAw14d83hEhpdweqGVCrtIaBW\nq+wKDjsS/AUgcallFducTEhYDH8tgd6fQXSfwtv+9a3yo/GERg9DvS5wfL1l8Lb5SAiqa1ugt7Bx\nJXyLEkrV2/ryVFwevvDQx7BipPVz1yoN9PwUfnpOeX2dqdMbyu9Do4dLtmJzYSwq+BYwLYrNrQK8\nlSpV4vLlywBkZ2dTqVLhb/JZWbc+gPv7O/aLkZmZSZs2bThy5AhVq1Zl9+7d1KtXz7S8cuXKdOzY\nkY4dOzJmzBhmzpzJ77//ztixY/nmm2/s6is5ObnQ5SkpKdx7770OPY8C5fsgnrcC75krWWTcyCW4\nkhc+npr8awohhBBCuI4EeIUQQghRFnhXtpjVJ6oScw/denxvnUAJ7wohhBBCCCFEaVKroWFPJahk\nD42nUgGxIlBZCaYZJMwlhLvQ6w38lJBiU9s1iSlM6dOY20KKqGxZQvy93Sp6Zhe7gr+piZYh2bwM\nOvhhKOhyIDSq8LYAupv/BWzz7btMwdv/5mt9oP6DcN9wiLzXMtBZ1LgwIBXXbRTVExr3hdA7Yeen\ncGhFnlB1T2gxSqmyfHKz/Z85CqSCThOhzXO3ZuWtSisqBLd6F61SpYopwHvx4sUiA7yXLl0yW9cR\nn376KUeOHAHghRdeMAvv5jd58mS+/vprrly5wnfffceHH35IeHi4zX1FRkY6NMZisajAe+tDuMFg\n4HLmTa5k5lAj0Icqvp4lPTohhBCiTElPT2f9+vVs2rSJffv2cfz4ca5cuYKPjw8RERHce++99O/f\nn65du6KydjCsGFatWsXChQvZs2cPqampBAQEULduXXr16sWIESMICChjoRF1vo+hEuAVQgghhDvy\n8FFO6OpummZV97kJeJkeX7p+08qKQgghhBBCCCFKVIvRSvVDg872dRr1Kd3KdiXK2jkLCXQJ4S72\nJ1/hps62UH1Wjo79py/zv7VHnDoGHw8NWTk6PNQqcvUGm98hynKA14y1qqd55+2cadv5zBVPo7zn\nOuk9NjcLDi5VflBB3U5KtdawaGXZbzPkPKszqLVKQBeUkG6vWRA303ol3BajIfF7J7zuanhqM0TE\nFHM7oqxzq3fR+vXrk5SUBEBSUhK1a9cutL2xrXFdR/z000+m6S5duhTa1s/Pj5YtW7JmzRr0ej17\n9uzhoYcecqjfEqPXQZ73kEDSUasMXDBUJhslsGvAQHJaFl5ajVTiFUIIIQrw4Ycf8tprr5GdnW2x\nLD09naNHj3L06FEWLlxImzZtWLRoETVr1ix2v9evX+fxxx9n1apVZvMvXLjAhQsX2LlzJ5988glL\nliyhefPmxe6vxOQP8MqV/kIIIYRwRyoVeFeBjPOmWWEe2eQN8KZlSIBXCCGEEEIIIUpdeLRy6/If\nhmFTaCpvUKcisFqBVwK8QriLhbtO2dzWQ6Oi7+xd5Oqd9zesVkHixC7c1Ovx1mo4kprOvO1JrElM\nIStHh4+Hhm6Nwln25xmLdf29PZw2jlKRmqiEcw+tvFVttU5bZVnSVmWexsvsAv+iuer91QAnflV+\nVGo5v+osai30mqN8ljCbX0Al3PBopf0PQ4vXb0w/Ce8KwM0CvNHR0axbtw6APXv20KFDhwLbnjt3\njuTkZABCQ0MJCQlxqM+zZ8+apitXtrwtYn55K/1ev37doT5LTOJSuH4eqtxumqVSQVWuU5nrnDaE\ncgXljcaAgYvXb1Aj0Le0RiuEEEK4tWPHjpnCu9WrV+f+++/n7rvvJjQ0lOzsbHbt2sWiRYu4fv06\n27Zto3379uzatYvQ0FCH+9TpdDzyyCOmz0dhYWEMHz6cqKgo0tLSWLx4MTt27CA5OZnY2Fh27NjB\nnXfe6ZTn63LqfBcNyZWhQgghhHBX3pXNAryBmizg1jGki9dvlMKghBBCCCGEEEJYiO4DB5bB0dWF\ntysoqFOuSQVeIdyVXm9g3YFzNrfP1dleHddWof5eaLVqtP9VCIyKCCC+bwxT+jQmO1eHt1aDWq1i\n49HzXMnMMVu3TFfgTVwKy0eYn6fMyYRj68zb6dzw+F+FDe+qoGZzOL3HtvPLag10eB0uHoODyyA3\nT7EurTc07K1c0GPvZ4KGvWHlaPPt2aOiXUgkCuVW76IPPPAAU6ZMAWDt2rW89NJLBbZds2aNaTo2\nNtbhPv39/U3TycnJ1KtXr9D2//zzj2k6KCjI4X5dLjVR2cnc87bVxWoVRHKebEN1UyXeq1k5RBoM\nTr/ltxBCCFEeqFQqunTpwgsvvECnTp1Q57ut1sCBAxk/fjxdu3bl6NGjJCUlMX78eObPn+9wn3Pn\nzjWFd6Oioti4cSNhYWGm5aNHj+aFF14gPj6ey5cvM2LECLZu3epwfyVKJQFeIYQQQpQRPlXMHlZV\nZ5g9lgq8QgghhBBCCOEm9HrQmwfLCG0Il5NuVVWM6ulYUKesU6kt51XY8JcQ7iU7V0dWjs7m9q6I\n3kdVs17wUK1W4et5K1oW6OdpJcBbRivwGnNVco6y7KjVErp9oOzDl42Av74tep26XaDNc8p03EzI\nzfqvovIN0PooVXYdkZvleHgXVQW8kEgUxsHfQtdo164d4eHhAGzevJl9+/ZZbafT6Zg+fbrpcb9+\n/RzuMzr61h/D119/XWjbEydOsHv3bgDUajX33HOPw/263M6ZRe5k1CoIVl01PdYbDDixwr4QQghR\nrrz77rv8/PPPdO7c2SK8a1SrVi2+++470+PvvvuOzMxMh/rT6XS8+eabpscLFy40C+8aTZ48mSZN\nmgCwbds21q9f71B/JU6d7zoy+XIshBBCCHflbR7gDcAywGuQ244KIYQQQgghROlJTYTlT8P/qsPx\nfMfImw2FV87Aq2eVf3vNqpiBGWtFvOS7rBBuwVurwcdDU3RDF6od7GdTuyA/T4t5ZbYCrw25KuFC\nHu24pP4AACAASURBVL5QtbZtbavUghFbYfBaZR+u18PhVbatm7RFaQ9KWNfTDzRa5V9Hw7ughH89\nHLzL/cPzlLsGCPEftwrwajQa3njjDdPjJ598kvPnz1u0Gz9+PPv37wegVatWdO3a1er2FixYgEql\nQqVS0b59e6tt+vfvb5r+4osvmDdvntV2qamp9O3bl9xc5c27e/fuBAYG2vS8SpxeD4dW2tS0cp6T\nTmqVCrUU3xVCCCGssnW/HxMTQ/369QHIzMzkxIkTDvW3detWUlJSAOUip6ZNm1ptp9FoeOaZZ0yP\nFy9e7FB/Jc4iwGv7lcVCCCGEECXK27wCSSWDeYA3V28g9Wo2erkqWgghhBBCCCFKXuJS+Kw9JCxW\nquzmd/HYrcBOcYI6ZZ61IIB8jxXCHajVKrpFh5fqGKr62lZFN7CsBHj1eriZcSu4aW35gR9KdkxC\n0fixWxfVPLrI8pxxfioN9PsaqsXcmpebZX2fb01OptLe2dRqiIqzf72aLSH6YeePR5RpbvcuOnz4\ncJYvX84vv/zCwYMHiYmJYfjw4URFRZGWlsbixYvZvn07AFWqVGHOnDnF6q9Lly706dOHpUuXYjAY\nGDZsGAsXLiQuLo7IyEiysrLYu3cvCxcu5MqVKwAEBQURHx9f7OfqMna8UWlUBtQGA3pUVPbxQGXt\nyjshhBBC2CUgIMA0nZXl2BeCtWvXmqZjY2MLbdutWzer67k1db4riSXAK4QQQgh35WNegfdG+iWL\nJi3e34iXVs2DjasxrPVtREUEWLQRQgghhBBCCOFkttz+/PfP4a4nKmbV3bykAq8QbkmvN5Cdq2No\nqzqs2n+WXBdfIN77rupU9vHgi99Omc3fcOQ8ne4MK/KYlrVM0dxtSVTx8XSP42GpiUpl3UMrldyU\nh68Ssmwx2nw/cGYv6G6W3jjLLRWFXhyi1kLL0cpFNaD8n/SaU/C+XK1Vluffhxur39qSjfPwVdq7\nQovRkPi97ZWcVRqI/cA1YxFlmttdYqbVavnhhx/o3r07oFS+ffvtt3nssccYPXq0KbwbGRnJ6tWr\nadiwYbH7XLRoEUOGDDE93rJlC88//zx9+/Zl4MCBfPLJJ6bwbv369fn111+pW7dusft1GTvKdOsM\nKvSoUKEiuJKXiwcmxC2TJk0yVcjevHlzaQ9HCLucOnXK9Ps7aNCg0h6OcDM3b97k2LFjpse1atVy\naDuJiYmm6WbNmhXaNjw8nBo1agBw7tw5Lly44FCfJcoiwCu3qBFCCCGEm/I2D/DuPvS31WY3cvUs\n23eGHjO2s3L/mZIYmRBCCCGEEEJUbLbc/tygg52flsx43JnKSjREArxClJpDZ6/x/JL9NJz4M1Fv\n/Eyf2Tu5q2aVolcsBq1aRd3QSny585TFsv3JV4o8prVy/xl+PphqMX/jkfPucTzMWkX2nEzl8Wft\nleVGW6eWxgjLN7UWOr1ReEXdDhMsw7jRfeCpzRDT/1bWzcNXefzUZmW5RV92VL+N6um6CvzGAHJR\nVYRBadP7M7mgSFjldhV4Afz9/fnxxx9ZuXIlX331FXv27OH8+fP4+/tz++2307t3b0aMGEHlypWL\n3pgNvLy8mDdvHmPHjmXBggXs2LGDkydPcu3aNTw9PQkNDeXuu++mZ8+e9O3bF09Py5LwbsX4RpVQ\n9C20r+KHChU1An3w8dQU2V6IkjRp0iQAateuLSFJAcCZM2dYtGgRq1ev5u+//+bixYsEBAQQFhZG\nTEwMHTp0oHfv3gQGBtq13QsXLhAVFcXFixdN85KSkqhdu7aTn4GoCL755huuXr0KQNOmTQkPd+yW\nN0ePHjVN16lTp8j2derUITk52bRuSEiIzX2dPn260OUpKSk2b8tm+b/ISIBXCCGEEO4qXyWHB9S/\nE+8xi7m5sRw2WF6slas3MG5JAvVC/d2j8ogQQgghhBBClEd6vVJh0RaHVkDcTNcFeMoEa3filQCv\nEKVh5f4zjFuSYFZtNytHx55Tl13Wp1at4vnOd/DhL8coqMhvYce0Dp29xrglCQXm/kv9eFhRFdn1\nucrykPpw7iAc/7lkx+e2NIAdd0lVawuvlGsM2254C6v7mE3vQJUalqHc8GjoNUvZV+dmKYUri9pn\n21L9Vq2FFqMK305xRfdRfq92fqp83sjJVCrtqlDuQOvhq4SIW4yS8K4okFsGeI3i4uKIi7MxMW/F\noEGD7Ar9NWnShGnTpjncn1sxvlEVQm+AS4bK+Htr8dJKeFe4nzfffBOAdu3aSYC3gjMYDEyZMoW3\n3nqLjIwMs2UXL17k4sWLHDx4kG+++Ybg4GB69uxp1/bHjBljFt4VwlEXLlzg5ZdfNj2eMGGCw9sy\nVv8HCA4OLrJ9UFCQ1XVtYazeW6IkwCuEEEKIsiBxKeyebTZLozLwsGYbPdS/MS5nJKv0LS1Wy9Ub\nmLc9ifi+MSU1UiGEEEIIIYSoWHKzbLt1NijtcrNu3bK7IrJy23upwCtEyTMGYXMLStEWkxq4u3ZV\nDpy5RlaODh8PDbHR1Rjaug5zt58sst+CjmkVZ90SYUtFdn0ufN0X0s+WzJjKBANovSE3u+imHr4w\neJ1yrNQYVM0fTk1NhE3vUuAFInmD1NbCrGq17ftqY/XbgoLbxlBxSYRmrQWQwfYwsqjw3DrAK4rB\n+EZ12vottPUGOG0IJQtPsrJzSM/OpUagD1V83by6sBCiwtHr9YwYMYK5c+cC4OvrS+/evWnRogUh\nISHcvHmTU6dOsX37djZt2mT39lesWMGSJUtQq9V4enqSnV30h9PatWtjkIMaIp+bN2/y8MMPc/78\neQB69uxJr169HN7e9evXTdPe3t5Ftvfx8TFNp6enO9xvickf4DXoS2ccQgghhBAFMVbuKOBziodK\nR7zHLI7frG61Eu+axBSm9GmMWm2typEQQgghhBBCiGLR+ijBIVtCvB6+t8I0FZZU4BXCHdgShHXU\nw00jGdq6DlERAej1BrJzdXhrNajVKvR6A2sTU23aTv5jWsVZt0TYU5Fdwrv56MG/GlxOKrppVE+I\niCm8Uq6tQeqdnyrbKS5r1W9Ls+Jt/gByRb5wSNhFArzlWXQfUO2D6+ZVJdMN3qQYgsjmVljXgIHk\ntCy8tBp8PKUarxDCfUyePNkU3u3UqROLFi0iPDzcatvr16+Tk5Nj87YvX77MyJEjARg7diwrVqzg\nn3/+Kf6gRYWj1+sZMmQI27ZtA+D2229n/vz5pTwq2yUnJxe6PCUlhXvvvde5narzfd6QCrxCCCGE\ncDc2HHD2UOkYql3LCzlPWyzLytGRnavD11MOvwkhhBBCCCGE06nVEBUHCYuLbhvVU6rfSQVeIUqd\nPUFYe0VW9TarfKtWq8yOSWXn6sjK0dm0rfzHtIqzbomwpyK7sJSeohReKuw4qFqrBGJNj61UyrUn\nSH1ohRICdsa+2Vr124q+zxdljvzGlnde/qD2MJt1lUpm4V0jAwYuXr9RUiMTQogiHT16lEmTJgEQ\nExPDmjVrCgzvAlSqVImqVavavP3/+7//IzU1lVq1avHuu+8Wd7iigjIYDDz99NN8/fXXANSsWZNf\nf/3Vrt9FaypVqmSatqUydFZWlmna39/frr4iIyML/alWrZpd27OJSgK8QgghhHBjdhxwjlXvRoVl\nlV4fDw3eWrlIWgghhBBCCCFcpsVoy7u9WRNcz/VjcXdWA7xyZzwhSpI9QVh7+Xl6FLrcW6vBx8O2\n41T5j2kVZ90SYazIXh5pvSGmP3SaaNv+zhG52fDQxwVvX61V7gBfVDVbe4LUOZlKe2cyhoolvCvK\nIPmtrQjyVbjTUvAHgqtZOXJbeBfbvHkzKpUKlUplCiYeP36ccePG0bBhQ6pUqWK2LK+///6b8ePH\n06xZM0JCQvD09CQsLIyOHTvy8ccfk5lZ9M4wISGBMWPGEBMTQ+XKlfHw8CA4OJgGDRrQqVMnXn31\nVfbt22ex3qlTp0zjHjRoUJH91K5dG5VKRe3atYtsm5+xH6MtW7aY5uX9WbBggcW6q1ev5rHHHqNu\n3br4+fnh5eVFtWrViI6OJi4ujqlTp3L69Gm7x2SPHTt2MGrUKKKjowkMDMTDw4PAwEDuu+8+nnvu\nObZv317o+mfPnmXChAnce++9BAcHm57D/fffzyeffGIW0ivKqVOnmDBhAi1btiQsLAxPT0/8/f1p\n1KgRgwYNYunSpdy8ebPA9bOyspgxYwadO3emWrVqeHp6EhQURLNmzZgwYQJnz7r2FhMfffSRaXwf\nffQRnp6WFx84au3atXz11VcAzJ49Gz8/229fYMvfQ/v27c1+lw0GA1999RWdOnUiPDwcX19foqKi\nePXVV7l06ZLZuteuXePDDz+kWbNmBAUF4efnR5MmTZg6dWqh/195bd++nccee4zIyEi8vb2pXr06\nsbGx/PDDDzY/B1E0g8HAqFGj+PzzzwElCLtx40aH3vvyq1Klimn64sWLhbRU5P09yruu28r/JVAC\nvEIIIYRwJ3YccPZV3cAby8/psdHVSvZ2gUIIIYQQQghR0YRHQ4cJRbfb9C6kJrp+PG4v/3dUyQUI\nUZLsCcLaq6g7bavVKrpFF1woK6/8x7SKs65L6fVwM0OZjoormT6dwdYgrtYHXjmjVJdt8zw8tVkJ\n8zo7rOzhq2w3//bzzo/uY9t4bR2bh6/SXggBgNzDrwIw5Ktw50HBARm9wYDeAJrSOL+k11fIcuaL\nFi3iqaeeKjSUqdfrmTBhAlOmTCE31/z/7/z585w/f55NmzYxdepUVqxYwd133211O2+//TaTJk1C\nrze/mvLSpUtcunSJo0ePsnHjRlatWsWBAweK/+RKUFZWFo8++ig//vijxbLU1FRSU1M5cOAAq1at\n4tSpU8yYMcPpY0hLS2PgwIH89NNPFssuX77M77//zu+//860adPYv38/MTExFu3mz5/P2LFjLcLY\nxuewYcMGpkyZwrJly7jnnnsKHItOp2PChAnEx8eTk5NjtiwnJ4eDBw9y8OBBvvzyS6ZNm8azzz5r\nsY09e/bw8MMPk5ycbPE809LS2Lt3Lx999BGffPIJQ4YMKfS1ccSNGzdMFU0jIyNp376907Z97do1\nRowYAUD//v154IEHnLZta65fv87DDz/M+vXrzeYfPnyYw4cP891337F582Zq1KjBsWPH6N69O8eP\nHzdrm5CQQEJCAqtXr2bt2rV4e3sX2N9LL73E1KlTzS7IOHv2LGfPnmXt2rX069ePt99+27lPsgIy\nGAyMHj2a2bNnA1C9enU2bdrE7bff7pTt169fn6SkJACSkpKKDAUb2xrXdXsWAV7XXHEshBBCCOEQ\n4wFnG0K8mQYvizsdadUqhrau46rRCSGEEEIIIYQwuni06Db6XNj5qRKCqshUKshbzEsKewlRooxB\n2GX7zjh9275FBHgBhrW+jVX7z5KrL/hvv6BjWsVZ1+lSE2HnTOXuWTmZyjG8Om2V4oZufb5RpVTS\nPX8QEr8vunnDXqDJcz41PFrZj8XNVLJVR1bD8hHFr6Ye1VPJaOXfvr3ZLbVaCVInLLa9TyEEIAHe\nCkFlRwVetUpFiReHsbZzjYpTbnlSVAn2Mu63337j3XffRaVSMXDgQNq0aYOfnx8nTpygZs2apnYD\nBw5k0aJFAAQGBvLoo49y9913ExAQwPnz502BvtOnT9OhQwf27t3LHXfcYdbXqlWreOONNwDw9vam\nR48etG7dmpCQEPR6PSkpKfz555/88ssvJfcCFGD58uUA9OrVC4CGDRvyzjvvWLRr2rSpafq1114z\nhXdDQkJ49NFHadiwIUFBQWRnZ5OUlMTvv//Opk2bXDLmtLQ0WrRowbFjxwDw9fWlb9++tGjRgqpV\nq5Kens6BAwdYt24dhw8ftlrpet68eQwbNsz0uHPnzvTs2ZOgoCBOnTrFwoULOXjwIMnJybRv357f\nfvuNxo0bW2zHYDDw2GOP8f33yoc+lUpFt27d6Ny5MxEREdy4cYMTJ06wefNmtm/fbnUsf/31Fx06\ndCAjQ7liLSoqigEDBlCnTh3S0tJYsWIF69evJzMzk6FDh2IwGBg6dKhTXkujP/74g+vXrwNw7733\nolKp+OOPP5gxYwabNm0iJSUFf39/7rjjDh588EFGjRpF1apVbdr2iy++SHJyMkFBQUybNs2p47Zm\nyJAhrF+/nvvuu49HH32U6tWrc/bsWT777DMOHz7MyZMnGTBgACtWrOD+++/n9OnT9OnThy5dulC5\ncmUOHjzIJ598wuXLl9m8eTPvvfceb731ltW+3nnnHaZMmQIo//e9e/fmgQceoFKlShw7doz58+fz\n7bffWgT5hX2M4d1Zs5SDfREREWzatIm6des6rY/o6GjWrVsHKIH6Dh06FNj23LlzprB9aGgoISEh\nThuHy+T7fOLeX6iFEEIIUeHYccB5jf4+DHlucqVVq4jvG0NURIArRyiEEEIIIYQQpa+0CzTp9co5\nZlscWqGEkip0YEgq8ApR2mwJwtpChflfsC0B3qiIAOL7xjBuSYLV/gs7plWcdZ0qcakSWs17Z8+c\nTDi2DlQl/f6e/3+hAFofJbDa8r8MVGpi0QFetRZajCpgmRo8/aBxXwi9Eza+C8fXg8GBc63W+jFu\n3xEtRivPrbA7rxb23ISooCTAWyGY7zACyKSG6gIXDJUtKsToDQauZuVQxdd5t6kvVEE714TFypt6\nrzm2lWIvo3755RdCQ0P55ZdfrAYxAebMmWMK7z700EN89dVXFrdGHz16NMuWLePRRx8lPT2dIUOG\nsH37drM2n332GQBarZYdO3aYhV/z0ul07Nq1q7hPrVh69uxp9jg4ONhiXl46nY758+cDcPvtt7Nn\nz54Cg5zXrl3j77//dt5g/zNo0CBTeLd58+YsW7aMatWqWbT78MMP+e233wgPN7/FxD///MMzzzwD\nKKHLuXPnWlS1HTduHCNGjGD+/PlkZGTw+OOPk5CQgDrfgYaPPvrIFN4NCwtjxYoVNG/e3Oq4k5KS\nuHz5stk8vV7P448/bgrvDhs2jFmzZqHV3tpljBw5knnz5jF8+HAMBgPPPPMMnTp1KrJCqD327t1r\nmq5ZsyaTJ0/mtddeQ6e79cHz0qVL7Ny5k507dxIfH893331H586dC93uxo0b+fzzzwHltSqJoOP3\n33/PxIkTmTRpktn84cOH07x5cw4cOMCWLVu4//77uXDhAuvWraNLly5mbY3B/ezsbGbMmMGECRPw\n9DR/rz527Jgp2Ovh4cHSpUvp0aOHWZsXXniBnj17smTJEuc/0Qoif3i3WrVqbNq0iXr16jm1nwce\neMAUxl67di0vvfRSgW3XrFljmo6NjXXqOFzGIsBbyBc5IYQQQojSYMMB5xyDhnm53UyPI6p4M/fJ\nZhLeFUIIIYQQQpRv7lKgKTfLpjunAEq73CzHQ0nlgUptHvAqbtVGIYTdjEHYZ7/d7/A28hfTBvDx\ntC3+FdekOvVC/Zm3PYk1iSlk5ejw8dAQG12Noa3rFHpMqzjrOkVqomW+KK+SfE9Ta6HDa7DpXevj\nUWuh5yxo8KDlRS7h0eAXChnnC952rzm27U/Do6H/t8oFLTkZSjxszQvw17c2PAmV7f3YKjxa2WZB\n/0/2PDchKhAJ8JZ36alwIws8gkyzVCqoynUqc53ThlCu4AcGPZpsJcR39kwaXsF++NhwhU6xnD9c\n+M5Vn6ssrxSmXDVSEnwCS/yqyzlz5hQY3r1x4wZvvvkmAHfeeSdLly61COwZ9e7dm5deeon33nuP\nHTt2sHv3bu677z7T8hMnTgBw1113FRjeBdBoNLRq1crRp1MqLly4wNWrVwHldSisCmtAQAB33XWX\nU/vfvXu3qfpvZGQka9asKXQMLVu2tJg3ffp0MjOVAwwjR460CO+CEr6eM2cOe/bsITExkQMHDvDj\njz8SFxdnapORkcF7770HKP+XhYV3AerUqUOdOua3sVi9ejUHDhwAoHHjxsyePRuNxvL9YOjQoezd\nu5fZs2eTmZnJxx9/zEcffVRgX/ZKSUkxTa9du5ajR5VbIHXr1o0ePXoQGBjIyZMn+fLLLzly5AiX\nL1/mwQcfZOvWrQU+54yMDIYNG4bBYKBr164MGDDAaeMtTOfOnS3CuwB+fn6MHz+eJ554AlCqDr//\n/vsW4V1QqiA//vjjzJs3j8uXL7N7927atGlj1mbGjBnk5OQASlA3f3gXlOrQ33zzDfXq1ePKlStO\neHYVz5gxY0zh3fDwcDZt2mRR9dwZ2rVrR3h4OKmpqWzevJl9+/ZZff/W6XRMnz7d9Lhfv35OH4tL\nqPN9DJUArxBCCCHcTREHnA1qLb9FvcPhvbfuoBPo6ynhXSGEEEIIIUT55k4FmrQ+SnjYlhCvh6/S\nviJT5avAa+UunUII14trUp3ZW/7mcEq62fyGEQEcPHutyPWt/eleuJZtc//GEPGUPo3JztXhrdWg\ntvFW3cVZt9h2znT9+USVuuggsDGEGt0H6nWGnZ8qVd5NF7T0VCrMFhZSrWQtwKuCOx6Ajq/ZH3BV\nq8HLX5luOQYOLC3itVJBn/nQqLd9/dgiug+E1HfsdRGigpIAb3mWmgjnDkCV26wuVqsgkvNkG6qT\nk51Ow68LDnWWGn0ufNm95Pp78W/wCy6x7mrVqmUWvsxv/fr1phDj//3f/xUY3jUaOHCgKbz5888/\nmwV4/fyUq0n//vtvrly5YlHFtyzz9fU1Te/bt6/E+1+4cKFp+qWXXio0vFuQZcuWAUr13cKqbGq1\nWl588UWefPJJ03p5f4fWrl3LpUuXAIiLiys0vFvUWECp+mstvGs0fvx45syZg8FgYNmyZU4N8Oat\nDGwM786fP5/BgwebtRs3bhxPPvkk3377LTk5OQwZMoSDBw+iyn8QAnjllVdISkrCz8+P2bNnO22s\nRRk7dmyBy1q3bm2a1mg0PP300wW2bdOmDfPmzQPg0KFDFgHeFStWAKBWq00Vna0JDg5mwIABfPLJ\nJzaNX9wyduxYPv30U0AJ727evJn69evbvZ0FCxaYfpfbtWvH5s2bLdpoNBreeOMNRo1SbiHy5JNP\nsnHjRkJDQ83ajR8/nv37lat0W7VqRdeuXe0eT6mQAK8QQgghygLjAeev+0L62Vvzwxuj6vkp/yT5\nw96DptkHzl7j+SX7Gdb6NgnyCiGEEEIIIcqfoqofGgs0hdQvmYCOWg0NukOiDXcdjOpZ4oWc3E/+\nc2cS4BWitPhZqZgbU6OKTQFea3afSuPQ2Wt2HY9Sq1X42li515nr2s1YXfbQyhLoTAV3dIOkLUrw\nVKVR3jr1Oush1PBo6DUL4mYqVd7zV9u1JnEpnDtoZYEBTvyiHI8szj60qCq4Kg30/sw14V2zMdj5\nughRgUmAtzzbORO8rFd2NVKrIJirpCBvlKWhVatWVkOGRlu3bjVNp6enm8J5BTFW3gQl3JdXly5d\n2LdvH2lpabRt25aXXnqJ7t27l4sgb0BAAM2bN2fXrl1s2LCBHj16MGbMGNq3b19k6NkZtm3bZpou\nLJBdkPPnz3Pq1CkA7rjjDmrVqlVo+7zhvF27djl1LKBUFDayVgk2r1q1atGgQQMOHz7Mv//+S0pK\nCtWqVXOo3/z0evMr2wYMGGAR3gXw8PBg3rx5bNu2jTNnznD48GHWr19vEWLcsWMHM2fOBODtt9+m\ndu3aThmnLQoLUoeHh5um69evT+XKlW1qmzfgDHDu3DmSk5MBpWJ33rbWdOjQQQK8dpowYQIzZswA\nlLD9s88+y+HDhzl8+HCh6zVt2pSaNWsW2qYgw4cPZ/ny5fzyyy8cPHiQmJgYhg8fTlRUFGlpaSxe\nvJjt27cDUKVKFebMmeNQP6VCne/iALlVlxBCCCHcVXg03N4B9n99a16tVqxMDeTNHxMsmi/bd4ZV\n+88S3zeGuCbVS3CgQgghhBBCCOFitlQ/1OcqVfd6zSqZMTV5rOgAr1qrBK4qOqnAK4TbyNVb/v2d\nuZzl8PYMBpi3PYn4vjHFGZZ7SU1U9juHVtpWad0ZDDrwqQqvnLkVPIWiQ6hqNXj6Fb1944UwBV1A\n4awLYdylCq6tr4sQFZwEeMsrvV7Zid1VeIAXoDIZpOBfAoMS+UVGRha63BjqBHjhhRfs2nZaWprZ\n4/Hjx7N69WoSExNJTExkwIABqNVqGjduTIsWLWjXrh3dunUjIKBsVgiaOXMmHTt25OrVq/z444/8\n+OOP+Pj40KxZM1q2bEnHjh3p0KEDWq3z3/ZOnz4NKFWOHQnpGassgxLgLUpoaCiVK1fm6tWrZuvm\nHQtAVFSU3WPJOx5/f/8iQ6CgjNkYYHRmgNff3/x9qbDKtL6+vgwYMID3338fgI0bN5oFeLOzsxky\nZAh6vZ5mzZoVWp3WFYKCggpc5uXlZVO7/G2zs81vg3L27K1qYLfffnuRY7rtNuvV2UXBjEFZAIPB\nwCuvvGLTel988QWDBg1yqE+tVssPP/xA//79+emnn0hNTeXtt9+2aBcZGcl3331Hw4YNHeqnVKjy\nBXilAq8QQggh3Fm+u/VcvZTCuG0J6KycbAHlJMy4JQnUC/WXSrxCCCGEEEKI8sF4/tkWh1YoVfdK\notqeb+HnVky3OpdbdiMVeIVwH5k3Lc+L7fv3spWWtluTmMKUPo1RqwsuIldmJC4tvOK7Kxn3YXmD\np84KoZbkhTBSBVeIMkP+Msur3Cybr0DRqAyo5cN5qfDx8Sl0+ZUrVxze9s2bN80eV65cmZ07dzJx\n4kQiIiIApcLp/v37mTVrFv369SMsLIwxY8Zw9epVh/stLU2bNiUhIYHBgwfj56d8eMrKymLr1q28\n//77dOnShcjISKZNm2ZR2bW4rl1TbmNRqVIlh9ZPT083TRvHXhRjX9evX7c6FmeMx96x5F3XGapW\nrWr2+O677y60/T333GOa/vvvv82WvfHGGxw7dgytVsvcuXPRaDT5V3cptY0fhG1tZ01GRoZpRjk4\nuQAAIABJREFU2tfXt8j2tv7/itLn7+/Pjz/+yIoVK+jduzc1atTAy8uL4OBg7rvvPiZPnsyBAwdo\n2bJlaQ/VPup8F1RIgFcIIYQQ7szXPMCbmpJstVJKXrl6A/O2J7lyVEIIIYQQQghRcuw4/0xOptLe\n1VITYf0b1pd5+EJMf3hqs1KJUIAq33koqcArRKnJuKGzmJeeXbxzZVk5OrJzLbdb5hir1JbWuUNX\n7cPsvRDGWbkWYxVcCe8K4bakAm95pfVRvpTYwGAAP29PDj6+zzSvio8H1avatr7D1rwAB5cX3a5h\nb4id4tqxGPkElkw/NsobjPzrr7+Iji7elaF+fn5MmjSJiRMnkpiYyI4dO/jtt9/YsGEDKSkpZGdn\nM3PmTLZs2cKuXbuKFfDT6Ur+g2GtWrWYP38+s2bNYvfu3ezcuZPt27ezefNmrl+/zrlz53juuedI\nSEjgiy++cFq/AQEBpKWlWYRpbZW30mzeEGZhjH3lD+nmraBcnPFcuXLF7rEY13WWBg0amKa9vLzM\nqs9aU7lyZdN03iAzwOeffw4o1YJXrVrFqlWrrG4jb3h9xowZVKlSBYC+ffvaVB25NOX9e83MLPoA\nmq3/v+KWzZs3O21bgwYNsrsqb1xcHHFxcU4bQ6mTAK8QQgghyhK/ELOH+usXbVqtXFU+EUIIIYQQ\nQlRsxvPPtoR4PXxv3XbcVQqrzqjSwEMfQ+O+rh1DWaPK991UArxClJr07Bynb9PHQ4O3tmQLWbmE\nLVVqXclV+zBHLoRxVuVfIYRbkwBveaVWQ5RtIR+VCiLVlzjhU51sPFGhIjC0Eni6eMfeZhwc/rHw\nHa9aC22et7hVZUURGRlpmk5OTi52gNdIpVLRuHFjGjduzMiRIzEYDPz6668MHTqU5ORkDhw4wOzZ\nsxk3bpxpnbzhyfzVffMzGAykpaU5ZayO8PLyom3btrRt25aXX36Z7OxsvvrqK8aMGUNOTg4LFixg\nzJgxRVZ0tVVkZCRpaWlkZGTw77//UrNmTbvWr1atmmn6+PHjRbY/f/68KWhqrKacdyxGhw4dMqtK\na894rly5Qnp6OufOnSMsLKzQ9seOHTNN5x9PccTExJimb9y4wY0bNwoN8eYN3+YN84LyOwnKa/L6\n66/b1H98fLxpulGjRm4f4M372uevQGzNyZMnXTkcIYpmEeAtB1cECyGEEHbQ6XQcPnyYvXv38scf\nf7B3714SEhLIylKqOwwcOJAFCxY4pa9Jkybx5ptv2r1eu3btrF7EtGDBAgYPHmzzdiZOnMikSZPs\n7t+t5DsuEYhtd64xVj7x9ZRDcEIIIYQQQogyznj+OWFx0W2jerq20l9R1RkNOlgxEkLvVG4hLv6T\n/+JSCfAKURoMBgMZN51/Xiw2ulrZvIhcr1fCqsbQrK1Val3FVfswd7sQRgjhNqQ+dnnWYrTlVXQF\nUKsgWHUVFSpqBPrg4+rwLihflnrNsQzwmAalVZZX4C9V7dq1M02vXbvWZf2oVCo6d+7M9OnTTfO2\nbdtm1sZYiRTgzJkzhW5v//79NlUAtWVccCt86Shvb2+eeuopRo0aZZqX//kVR9u2bU3TK1fa/2Ey\nNDSU2rVrA3D06FH++eefQtv//PPPpun77rvPqWPJv83169cX2vbff//lyJEjANSsWZPw8HCH+rSm\nXr161KtXz/T4jz/+KLT93r17TdP169d32jjKirCwMGrUqAHA4cOHSU1NLbT9pk2bSmJYQhRMne+z\nhgR4hRBCVDB9+/YlOjqawYMHM2PGDHbt2mUK77qL2267rbSH4D4sArzp2HKis9xUPhFCCCGEEEII\nUM4/F3Ru10ithRajCm/jKL0ebmbAbzOKrs6oz4Wdn7pmHGWVVOAVwi3cyNWj0zv370+tgqGt6zh1\nmy6XmgjLn4b/VYf3IpR/lw23vUqtK7hyH2ZHIUaXXwgjhHArUv6jPAuPhrDLcMO2E4BVVBn4hPjh\nU5JVYaL7QEh95cvToRXKjtjDV9kZtRhVocO7AN26dSMkJIQLFy4wf/58nn32WerWreuy/urUufWB\nLjfX/Euvj48Pt912GydPnuT333/n2rVrBAQEWN3Ohx9+6JTxVKpUifT0dDIyMpyyvcKeX3EMGDCA\nGTNmAPDBBx/wxBNPULVqVbu28fDDDxMfH4/BYGDKlCmm7eWXm5vL1KlTzdbLq1u3bgQHB3Px4kVW\nrlzJrl27aN68ud1jMVb6io+Pp3///mg01k84T5482RSwzj8WZ3j88cdNlbpmz55Ny5YtrbbLzMxk\n4cKFpsfdunUzW37lyhWb+qtdu7YpQJ2UlGQKVpcVcXFxzJgxA71ez/Tp03nvvfestrt48aLZ6yVE\nqbAI8JbirXCEEEKIUqDTmV+8EhgYSFBQkE135bBXv379aNKkSZHtcnJyeOKJJ0x3XRkyZEiR64wd\nO5aOHTsW2qZBgwa2DdSd+ZoHeD1UOgLI4BqVCl2tzFY+EUIIIYQQQghrjAWaCqp+66oCTamJyi3V\nD620L9h1aAXEzZQQlJFFgFdfOuMQooK7fsP558Sebnc7URHW8xtuKXGp5b4kJxMOLC29MZVEkcEW\noyHx+6LvVO6qELEQwi3JJ9Xyzi/U5qZqDPhoS+GkUng09JoFr5yBV88q//aaVeHDuwB+fn6m8GJm\nZiZdu3blzz//LHSdEydO8Pzzz3P+/Hmz+cOHD+evv/4qdN1Zs2aZpq2d3DWGIrOzs3nllVesbmPa\ntGksWrSo0H5sZQzcHjlypNBKVH/++SdvvvkmKSkpBbbJyMjgq6++Mj225eS1re69917i4pQrpU6f\nPk1sbGyhY9m1a5dFddSxY8fi6+sLKP8P1m6Vm5uby6hRo0z/j40aNaJ79+5mbXx9fXnttdcAJRDQ\ns2dPdu3aVeBY/vnnH4vfqdjYWKKjlb+/hIQERo4caTXwvGDBAmbPnm3q99lnny2wH0c999xzhISE\nALBw4cICX5ehQ4eaKkO3atWKVq1aOX0sZcGYMWPw8PAAYOrUqaxatcqiTWZmJv3797c51CyEy+Sv\n0iABXiGEEBXMvffey/jx4/n+++85efIkly5d4tVXX3VJXw0aNKBnz55F/mi1WlN4t379+rRu3brI\nbTdt2rTI7ZaLAO/1cxazpnp8xp2qgu+golWryl7lEyGEEEIIIYQoSnQfGLDCcn5YI3hqs7LcmRKX\nwmftIWGx/VUZczKV27KL/+TPAkgFXiFKQ4YLAryd7gxz+jZdJjWx4AtBSkt0X9fsw/KTO5ULIayQ\nCrzlnVoDKtty2gbUqGxs6xJqNXj6lV7/bmrUqFH88ccfzJ8/n5MnT3L33XfTtWtXOnXqRGRkJCqV\nirS0NA4fPsy2bdvYv38/AM8//7zZdubOncvcuXNp0KABHTt2pFGjRgQFBZGdnc2///7L999/bwqG\nVq1alZEjR1qM5dlnn2XevHlkZ2fz6aefcuzYMR555BGqVq1KcnIyS5cuZefOnbRr144TJ06YApWO\nuv/++/nrr7/IyMjgoYce4sknnyQkJATVf1eHRkdHU716da5evcqkSZN46623aNmyJS1btqR+/foE\nBARw5coVjhw5wuLFizl79iwAzZs3L7JClL3mz59P8+bNOX78OLt27aJu3bo8+uijtGjRgqpVq5Ke\nns7hw4dZt24diYmJ/Pnnn4SHh5vWr1WrFtOnT2fYsGHo9XoGDx7Mt99+S1xcHEFBQfzzzz989dVX\nHDhwAFDC3V9//TVqK1cMP/vss+zYsYOlS5dy7tw5WrZsSWxsLJ07d6ZatWrcvHmTkydPsmXLFrZs\n2cLUqVO56667TOur1WoWLVpEy5YtycjI4PPPP2fnzp0MGDCA2rVrk5aWxsqVK1m3bp1pnenTp1Or\nVi2nvqYAAQEBzJ8/n169epGbm8vgwYP5/vvv6dGjB1WrViUpKYkFCxZw5MgRAKpUqWI15FtR1K9f\nnzfeeIPXX3+dnJwcevbsSe/evXnggQfw9/fn6NGjfPHFF5w6dYq+ffuyZMkSAKu/R0K4nAR4hRBC\nVHCuCusWx/z5803TtlTfrTCMFUHy6aLZSwf1n4zLGckqvfndQrRqFfF9Y8pW5RMhhBBCCCGEsFWg\nlYsV73zINZV3ixPy8vAFrY9zx1SWWVTglQCvEKXBFRV4fT2t31HXLe2c6V7nBbU+/4VqS+icudyp\nXAiRjwR4KwIP276U5HoG4JH/Q7twC3PnzqV+/fq8+eabZGZmsm7dOrPwZH7BwcF4e3tbXXbkyBFT\n2NGamjVr8sMPP1C9enWLZfXq1ePzzz9n0KBB6HQ6fv31V3799VezNm3btmXZsmU0bdrUxmdXsHHj\nxvH1119z7tw5NmzYwIYNG8yWf/HFFwwaNMgU6NXr9Wzfvp3t27cXuM22bduydOlSpwcWAwMD2blz\nJ48//jg///wzmZmZfPHFF3zxxRdW21vrf+jQoQA888wzZGZm8vPPP/Pzzz9btIuMjGTZsmU0btzY\n6rZVKhXffvstL730Eh9//DE6nY7Vq1ezevVqm8fSuHFjNm3aRO/evTl9+jQHDhzg5Zdftmjn6+vL\n9OnTTWN3he7du7N48WKeeuopLl++zJo1a1izZo1Fu9tvv53ly5dTt25dl42lLJgwYQJXr14lPj4e\ng8HADz/8wA8//GDWpl+/fkycONEU4PX39y+NoYqKTp3vQILcqksIIYQoVSkpKaxduxYArVbLk08+\nWcojchNFnCz2UOn4yHMWx29U57Dh1kWNXw65l1Z1g0tqlEIIIYQQQghRsnKyrcx0wXnm4oa8onqW\nXCCrTJAKvEK4g4wbOqdvs8wEePV6OPBD0e1KUsNeJb+vMN6pPG6mUile6yP7KyEqMPnrrwi8ig5m\n6Q2Q7RVUAoMRjlCpVLz00kucOnWK999/n/vvv5+IiAi8vLzw8vIiLCyMVq1a8eyzz/LTTz9x9uxZ\ngoPNTxSeOXOG+fPnM2TIEO655x6CgoLQarV4eXkRGRlJbGwsc+bM4ciRI9xzzz0FjuWJJ57gjz/+\n4IknnqBGjRp4enoSHBxM27ZtmTt3Lhs3biQwMNApzzsiIoJ9+/bx/PPP07hxY/z9/U1h3bzatWtH\nYmIiH374IY888ghRUVEEBASg0Wjw8/PjjjvuoH///qxatYotW7YQEhLilPHlFxQUxLp169iwYQND\nhgzhjjvuwN/fH61WS1BQEPfddx/jxo1j9+7dBYZvhw4dyvHjx3nttde45557CAwMxMPDg7CwMDp2\n7MjHH3/MsWPHaNasWaFj0Wg0xMfHc+jQIV588UWaNm1KYGAgGo0Gf39/GjVqxJAhQ1i5ciWjRo2y\nuo1mzZpx7Ngxpk+fTqdOnQgLC8PDw4OqVaty99138+qrr3L8+HGXhneN+vTpw+HDh3nrrbdMv7/G\n16Vr167MmTOHQ4cOER0tV6MBTJkyhS1bttC3b18iIiLw9PSkWrVqPPDAAyxdupTFixdz9epVU3tn\n/c0KYRdVvgMJ7nSlrRBCCFEBffnll+h0ysmDBx980OyOIRWaDSeLNegYql1rNq+Sl1wzL4QQQggh\nhCjHcq0FeAsIg+r1cDND+dceej0cWmn30EzUWqWSobgl/914pbCGEKUiwwUVeH08ykiA98xe0N0s\n7VHcUtr7CuOdyiW8K0SFJmcTKgKNJ6g8gJtY++KkN8BpQyh+Kq8SH1pF1L59ewwO3o4kJCSEl19+\n2Wol1KJEREQwePBgBg8e7FDfecXExLBw4cJC25w6darQ5ZMmTWLSpElF9hUREUF8fHyR7Ro1akSj\nRo147rnnimzrah07dqRjx44Orx8REcE777zDO++8U+yx3HHHHXzwwQcOr+/j48PYsWMZO3ZsscdS\nXGFhYbz++uu8/vrrLuujqN9bo9q1axf5d7x582ab+7X1PcGe9482bdrQpk2bApf//vvvpumYmBib\ntimEU6nzfQyVAK8QQghRqvLePcSei/Q+/fRTJk+eTHJyMnq9nuDgYJo0aUK3bt0YOHAgvr6+rhhu\nybDjZPGDmt28mPMUhv+ulT99OZOYGlVcOTohhBBCCCGEKD25N4qel5qoXBR5aGWe24PHQYvRtt0e\nPDdLWc8Raq1yO3S5Dbm5/IWSHDxnLYQonnRXBHhLqgKvXq+8P2u8QHfD/sqxe+a5bmyO6DlL9hVC\niFInAd6KQuMBwbXh4lGz2dcMvqQaqpKNJ97yAV0IISqEnJwc5syZA4CHhwetWrUq5RGJCkkCvEII\nIYTb2LZtG8eOHQOgWrVqxMbG2rzunj17zB4nJyeTnJzMjz/+yMSJE5k/fz7du3d36nhLjB0ni324\ngTc3ycIbgP/7bj8bjpxnWOvbiIoIcOUohRDi/9m78/go6vt/4K+ZPXKQhBsCISooAoEY6oECoVIt\ntURNACGltlUUEC3WtmKPr1+L9Vu/+rUa218LUi2hKCqCSEyqQW29CeCFCQsB1IoIOSBc5trN7uzM\n749hN9l7Zo9kk309Hw+a3Z3PzOcTKrs7M6/P+0NERETU/fxV4O0a4LVsAcqWeV73dbQDNRsBy4tq\nuDZ3fvA+jClq6FdviDfvRrWaIgNZfnivdMp8AFFP0FKBVxD0ZexTzTGOf7kmZewr8/wMMCQBE+cC\n0+4M/r4ry4CjDdhfEdtx6nHhbOCi4p4eBRERA7wJxZyqhmW6nCidUDJggxkAIMv8gk5E1NsdP34c\nJ06cQE5Ojt/tNpsNS5cuxb59+wAA8+fPx9ChQ7tziEQqnwCvs2fGQURERFi3bp378c033wyDIXTF\nDoPBgKlTp2LGjBm48MILkZaWhjNnzuCTTz7B5s2bcerUKTQ1NaGwsBDPPfccfvjDH4Y1tqNHjwbd\n3tDQENZxNdFxs7hdSXJfXwEAh1PB1t11qKiuR0lxHoomZ8VunERERERERN1Nsvq+5jwb4G20+IZ3\nu5IldfvQcaFDtuOvVQO/WmVeBMxdo719omEFXqK4oCXAW5Q3Eq/saYCkMcdjEL0D+lHkb1KGi7MD\n2PMCsGcTcPX9wIwuKybLMlD3sVp1d39F+FXVY0E0Alf9d0+PgogIAAO8iUcwAOj8UDVAdj92MsBL\nRNTrff3117jssstw6aWX4uqrr8a4ceOQkZGBlpYW7NmzBy+88II75DB48GA89thjPTxiSliiVzCI\nAV4iIqIe0dLSghdf7LwZeuutt4bcJz8/H1999RVGjRrls23JkiX44x//iKVLl2LTpk1QFAW33nor\npk+fjnPOOUf3+LKzs3XvEzWiqC7vWrMxZNNK+XIo8F0uUJIVrNhcg7HD0lmJl4iIiIiI+o6u1XZd\nHDbA3gbsWBV6xTVZAnY+4T9s66ryWFuuP+zVP7bnkLKswCY5kWxUr2+329Xf01X50iY5YRZF2GUZ\nyUYDxFgG6sLCCrxE8aBVQ4C34Rsb/vyDyXj7YBMqLQ2wOnroPlqoSRluCvDm79WfY2ep7+N7XwKc\n9m4YJIDsqUDdR9pW/BSNaiV4VmonojjBAG+iEY2dsx8BGAWn+3u5Uw6wD1EfdeLECWzfvj3s/c85\n5xxcfPHFURxR3/D1119j9+7dYe8/fvx4jB8/PoojSkwff/wxPv7444DbR48ejfLycowcObIbR0XU\nhU+AV8MJNREREUXdpk2b0NbWBgCYMWMGxo4dG3KfCy64IOj29PR0PPfcczh27Bjeeecd2Gw2PPLI\nI1i9enVUxtytpi5Xqz0F+a7iUAwolWYH3C7JCkq3H0JJcV4sRkhERERERNT9ui6f7lKzEah+Vvsx\nal8GilarkyddglV51KLuEzVsFuVQVm19M9Zu/xLbLI2wOpwQod5i7xp/FbyeJxlFXHvRCCzJHxPW\nhE5ZVjwCwlEJAwteE08VBgSIeoKWCrwfHDqFTw6fRklxHmaMHYJfbKoO2v7uzdVhv98EtXO1vvfk\nNx8A3n6wewv3iEbg2kfVxzufUD9fHO2AMRlIHwG0NKifW6ZUIGcOMPWnDO8SUVxhgDfReIVlPCrw\ncokMSjB79+7F3Llzw97/5ptvxvr166M3oD7irbfewi233BL2/vfffz9+//vfR29ACSY3NxcbN27E\na6+9hpqaGjQ1NeHkyZMAgCFDhuBb3/oWrr/+etx8880wm80hjkYUQ6LX11AGeImIiHrEunXr3I8X\nL14cteMaDAY8+OCDyM/PBwC88sorYQV4jxw5EnR7Q0MDpkyZEtYYNcnMVStyBLiB7FAMWOG4A/uV\nc4MeptLSgEfnXxSH1ZeIiIiIiIjC4PAT4FV0hrUc7YBkBcz91OeaqzwG0doIPHUlMPcpIHd++Mfp\nory6Dis213gsY+8v9up9p71DkrF1dx3KP63DwzfkYv7F2ZrOCWvrm/HYGwfx7sEm9/17UQBmXDAE\ny6+6ADkjMpBsNMAmqX/feh6nAp5rxzAeQNQjWju0vV9KsoK7N1UDQuj3jq2761BRXY+S4jwUTc6K\ndIgqWVaroever5vDu12r6c5do04OkayAMUWdJCLLns+JiOIMA7yJxissY0DnB6dTVqAoCmRFPQkQ\nNHwJICKi+JKUlISFCxdi4cKFPT0UouC8A7x6L+4SERFRxA4cOICdO3cCADIyMrBgwYKoHn/q1KlI\nTk6GzWbD119/jfb2dqSmpuo6xqhRo6I6prDkzgeGjgPe/SOwv8Jj0w/t9+JjZULIQ1gdTvVmqZmX\n4oiIiIiIqA/wV4FXL1OqGqZy0VvlMRDZqQaBh46LuMJibX2zT3hXL6cC/HqLBb97eZ+7Iu/4zHTY\nJCeSjQaPUG95dR1+uaka3t3JCvDu5yfw7ucnwh4HAFQldSCrSwTgqfe+QH6/KdGv2ElEAdXWN+P9\nz5s0t3cqADQW45NkBSs212DssPTo/LuWrOpki7ghAMak0NV0RbFzcoi/50REcYZ3DRKNV1jG2GV+\nYIfDiX31zZAVBaIgoH+KCUPSkpBiNngfhahPmDlzJhRWno66RYsWYdGiRT09DCKKdz4VeBngJSIi\n6m6lpaXuxwsXLtQdrg1FFEUMGjQI9fX1AIAzZ85EvY9uk5kL3LAWeHCYx8s24wDAEXp3k0FAspHX\nV4iIiIiIqI+QOiI/Rs6czkqIsgzsK4v8mC6ypC6jPndNRIdZu/3LiMK7Xbkq8pbtroPJIMLulJFi\nMmB2biaW5I8BANztJ7wbTQo8C3jt+M8J/HHV9uhW7CSigPxV9I42SVZQuv0QSorzIj/YyS8iP0ZU\nKUDOXOC6ElbTJaI+he9miUb0vFlk6BLgdSoK5LNhRllRcLrdji+Ot+JMu71bh0hEREQJQPD6GhqN\nygpERESkmSRJ2LBhg/v54sWLo96HLMs4ffq0+/mAAQOi3ke3MiYBKQM9Xrp2tLbViySnggONLbEY\nFRERERERUfTJMmBvU3/6E2lFRtGoVk10qX4uOlV9u6p9OfD4NZBlBdssjVEckEoBYHeq47I6nNi6\nuw6Fq7bj/oq9aqXNGFIUz3NYEYq7YmdtfXNsOydKcNGo6K1VpaUBstMZ/H1ci12RTYKIif3lDO8S\nUZ/Dd7RE41XtzoDg1e4UKDhyygqrnVXxiIiIKIp8KvAywEtERNSdXn31VRw7dgwAMGnSJEyZMiXq\nfezatQtWqxUAMGrUqN5bfbertEyPp4XnG6AlwqsAKN1+KCZDIiIiIiIiippGC1B2O/BwFvDQSPVn\n2e3q613ZW8PvQzQCc59UVzpptADP/wCouDOycfvjaFeXfw+TTXLC6uiee+SSrOCjr06Hbhgh79ig\ncPYVV8VOIoqdaFb0DmaCcBgPYhWE/xsV/H08FFkGastjM8hIRPjeTkQUjxjgTTReFXiNIQK8gBri\nPdEahWVQiIiIiFwY4CUiIupRpaWl7sexqr67cuVK9/Prrrsu6n30iPThHk9HiKdhMmi7vFZpaYDc\nDTdqiIiIiIiIwmLZAjw1E6jZ2Flh19GuPn9qprrdRQ4z2DrofOC2d4Dc+Z39ffZaRMMOyJSqVmkM\nU7LRgBSTIXTDXkTxmoLa9Vkin7NWVFRgwYIFOO+885CcnIxhw4Zh2rRpePTRR9HcHP3KxF999RV+\n97vfIT8/H0OGDIHJZEJaWhrGjBmDefPm4dlnn4XD4Yh6v9RzYlXR21uhuAMV5vtwg+F9CKHex0Op\n+zjyauuxEOF7OxFRPGKAN9F4nUyZISFbaEIy7EF3+8bqgKIk5hd2IiIiigGfAG8ES/gQERElsPXr\n10MQBAiCgJkzZ2rap7GxEdu2bQMAmM1m/PjHP9bc386dO/HUU0/BZgu8tGlbWxtuuukmvPnmmwCA\npKQk/OY3v9HcR1wzJHk8Fd5+EA+LqzFBOBxyV6vDCZvEFY6IiIiIiCgONVqAsmWBCy3IkrrdVcFR\nCrP4U+YktfJufU3w/qIhZ05ES6yLooDZuZmhG/YivgHezvv/iXjO2traiqKiIhQVFWHLli04fPgw\nOjo60NTUhJ07d+LXv/41Jk2ahF27dkWtz8cffxzjx4/Hgw8+iKqqKpw8eRKSJKGtrQ2HDh1CWVkZ\nfvKTnyA3Nxd79+6NWr/UsyKp6G0QAIMYev2nCcJhlJjWwCQE6Mf7fTwYyxZg3fd1jrSbRPjeTkQU\nj4yhm1Cf0X4KyjdHPL6WCwIwEK3oj1YcVYbhDPr53VVWFMiK+uWAiIiIKGLeJ9eswEtERAnm0KFD\nHlVwAWDPnj3ux59++inuu+8+j+1XXXUVrrrqqoj7fuaZZyBJ6mdvUVERhgwZonnfY8eOYdmyZVix\nYgVmzZqFSy65BNnZ2ejXrx+++eYb7N69Gy+88AJOnjwJABAEAWvXrsV5550X8bh7nGUL8MW/PF4S\nZAk3GN5HobgDKxx3oEKeFnD3FJMByca+Vb2JiIiIiIj6iJ2rQ1+jlSVg5xNA0WqgoyW8fs4cVZdy\n37MZUGIYFhWNwNSfRnyYJfljUFFd3y3L3ncH79+ia4A30c5ZnU4nFixYgNdeUytADx/vcAPmAAAg\nAElEQVQ+HEuXLkVOTg5OnTqFjRs3oqqqCkeOHEFBQQGqqqowYcKEiPpctWoVVqxY4X4+bdo0FBYW\nIjs7G83Nzdi3bx/Wr1+P1tZWHDx4EN/5zndgsViQmdm3guSJpra+GX9//z9h7SsAePwHkwEAKzbX\nBH0vWmKsDBzedXG9j89dE7iNa0JHLN+jwxWl93YionjDAG+iUJzAma8RKH8rCsAoHIdNyYINZj/b\nBWiY1ENERESkjU8FXgZ4iYgosRw+fBj/+7//G3D7nj17PAK9AGA0GqMS4F23bp378eLFi8M6Rmtr\nK8rKylBWVhawTWZmJtauXYtrr702rD7iivvmhf9VA0yCEyWmNfjcnoX9yrl+2xTkjoDIiytERERE\nRBRtsgxIVnVJ8XCqEsoyUFuure2eTUDty+Evq17/ifonlkQjMPdJtdKvTrKswCY5kWw0QBQF5IzM\nQElxHn7+QnUMBtr9ZK8FmrsGeBPtnHXt2rXu8G5OTg7eeustDB8+3L19+fLluOeee1BSUoLTp09j\n2bJleO+998Luz2q14t5773U///vf/44lS5b4tFu5ciWuvvpqWCwWnDhxAn/84x/x+OOPh90v9azy\n6rqQwdtABAB//eG3cF3eSADA2GHpKN1+CBU1dXA4Fa+2MmaLH2o78L4ydSJGoM8LLRM6YkqA73QD\nRPTeTkQU7xjgTRSSHX4/5LoQBWAIvsFRZajPtv4pJghC4nxhJyIiohhjgJeIiKhHVFVV4eDBgwCA\n7OxszJo1S9f+3/3ud1FeXo4PPvgAH374IY4cOYKTJ0/izJkzSE1NxbBhw3DxxRfj2muvRXFxMZKT\nk2Pxa3Q/DTcvTIITi43bcI/jdp9tRlHA4vzRsRodERERERElokaLeq5SW64Gak2pQE4RMHW5voCT\nZNUeyFWc4Yd3Y+Zs2MuUqi6tPvWnmn9/V2D3UFMbSrcfwra9jbA6nEgxGTA7NxNL8sfgqvHDYjv8\nHuS6+59o56xOpxMPPPCA+/mGDRs8wrsujzzyCN58801UV1fj/fffxxtvvIHvfe97YfVZVVWFlha1\ncvVll13mN7wLAEOHDsXDDz+M6667DgAiCg1Tz6qtbw47vGsQ1Mq7rvAuAPeEgkfnX4Tqo6fx3K6v\nUWlR37MGmpxIFTq0HVyyAmW3AdN/7vteKctqwLeniEZg3t+Bz//VOVkkjPd2IqLehgHePs5gMEBy\nOOCUHFAUIWQItz/acBS+Ad5B/Xyr8hIRUWJTFAVOp7p8isGQOMsqUZR4B3jjcSkeIiKiGJo5cyYU\nJfIlOBctWoRFixZpbj99+vSI+k1LS0NhYSEKCwvDPkavo6MaVYH4AX6F26B0qWokCkBJcR5yRmbE\naoRERERERNSbhVNB17JFXSWk60RDRztQsxGwvKhWKcydr+1YxhQ1IBV3wVyNRl0G3PSyrr+/2vpm\nrN3+JbadDb95szqc2Lq7DuWf1mH8iODncgWThqNy77Gwht7dFK/1egUoMIpCwp2zvvfee2hoaAAA\nXHnllbj44ov9tjMYDLjrrrtw6623AgA2btwYdoD3+PHj7sdjx44N2rbr9tbW1rD6o563dvuXusO7\nZoOI6/NGYnH+6ID/JkVRwMXnDMLF5wzCo/PPVg03CMD/6Xgft7yoBnW9PytqNgKSTdeYo8ZVYXfS\nPPVP0erIqssTEfUiDPD2cWazGR02KxQA7Q4gVA7XICgQFQVyly/vgiAg1cxgFhEReWpvb3eHP8xm\nTvQgnXwq8DLAS0RERHFKRzWqVKEDybDDis7KwwZRwLufNWHssPSEuiFKREREREQhhFtBt9HiG97t\nSpbU7UPHha5W6AoPTygE9rwQ/u/SkzJGAuZ+mpvrWdLeqQD76psDbk8yirjzqguRbDJi66d1msfQ\nU7wDvFeMGYSfFeQn3Lnqtm3b3I8LCgqCtp09e7bf/fQaNqyzkvNnn30WtG3X7RMnTgy7T+o5sqxg\nm6VRc/t53xqJH19xHiZnD4Aoal8ZWxQFpJrP3m/LKVIDuJoH6fVZUV8DVPxM+/7REqjCrijqem8n\nIurNGODt4zIyMtDS3Aw4HThlMyHVhKBVeJ2K4BHeBQCTQYDNISOFIV4iIjpLURScOnXK/TwjI7Eu\n7lAUCF6zZUMsSU1ERETUY3RUo5IMKbDBc3Kbw6lg6+46VFTXo6Q4D0WTs2I1UiIiIiIi6i0iqaC7\nc3Xo66myBOx8Api7xv927/CwMRmAACDylWK63fH96u+jYWn1V2rq8YsXqqP2W3ZIMgpXbcfdsy6E\nURR0V9vUI8kg4IN7r4bRICLZaIBNUotiaH28+8hpyP/wzAHcfEU2kGDhXQCwWCzux5dddlnQtpmZ\nmcjOzsaRI0dw7NgxNDU1YehQ3xWNQ8nPz8eQIUNw4sQJfPzxx1i7di2WLFni066pqQn33nsvAEAU\nRdx99926+6KeZ5Ocfqt7B/Lg3NzOIG64pi5XPz/03G+TJeDVe4CB56n7dudqmcYU4J7P1ZAuK+wS\nUYJjgLePS0tLgyCKUBw2tIpGHAUwKBkBg7xtSPF5zS7J+OJ4K7IHpWBAKissEhElMkVR0N7ejlOn\nTrmX7REEAWlpaT08Mup1fCrwMsBLREREcUoUNVcxKbdfBgX+bzpIsoIVm2tYiZeIiIiIKNFFUkFX\nltXQrRa1L6tLkHsHo/yFh3tqyfRoOHEQeGpm8NAz1Mq70Qzvukiygsf/9RnunnUhHv/XZzEL8V6X\nl4UB/ZLcz9OMoq7H/ZKMPhV4ofTCwHYUHDx40P149OjRIduPHj0aR44cce8bToA3OTkZf/vb37Bw\n4UJIkoSlS5di/fr1KCwsRHZ2Npqbm7F37148/fTTaGlpQVpaGtauXYvp06fr7uvo0aNBtzc0NOg+\nJumTbDQgxWTQFOI1iAKSjVEoppeZq74Pbl0KKLL2/Y7sUv90t4lzgeT07u+XiCgOMcDbx4miiKys\nLNTZ26E016FVHopWuwkCAIOgwPs7OpRWCLDD4ec/jS9PA/3MBl0l+4mIqG9xOp1QulzQEQQBWVlZ\nEDkzkvRigJeIiIh6Ew1VTJwQsVaaHXA7oN7YLd1+CCXFedEeIRERERER9RaRVNCVrJpWBwGgtpOs\nnkuQhwoP91bBQs8Aauubcfem6Id3XSRZwX+a2lBxZz5Ktx9CpaUBVocTKSYDCnJH4DvjhuLtg8dR\naWnUVZXTxSAKWJwfOmgajCgIvbG+ckycOXPG/XjIkCEh2w8ePNjvvnrdcMMN+Pe//43ly5dj3759\nqKqqQlVVlUcbk8mE//7v/8ayZcuQnZ0dVj/h7kfRI4oCZudmYuvuupBtRw/pF70MTu58oKEG2PGX\n6BwvVkQjMPWnPT0KIqK4wQBvAkhPT0fW6LGo+9wK5dQhwJgExZQCyXvp6rMMEHBKGQC7n/88bGYD\nBvZjFV4iIuoM76anc3YkhcE7wAuo1SMYBiciIqJ4pKWKiQKMFeqwXzk36KEqLQ14dP5FnCBNRERE\nRJSIGmoAy2Ztbf1V0DWmAKZUbSFeU6ravist4eHeKlDoGcDa7V/CGeP0qutcr6Q4D4/Ovwg2yYlk\nY2dxrOvyRuLR+Yr79TXv/gePvX4wZKhWFIDHi/MiXslFEMAKvGe5VpgE1Mq4oaSkdP47amlpiajv\nb3/721i1ahXuvvtufPrppz7bHQ4HVq9ejba2Njz00EMefVPvsiR/DCqq60NW5Z5+/uCg23UzpUb3\neIEIIgBF//uIaFSvsfmZbEFElKgY4E0Q6enpuHDyVLRWVKC5Q4Y9NRNOQ+Ave6IyCF8p5/i+LgDf\nvrCbPvCJiCjuGAwGmM1mZGRkIC0tjZV3KXyin+WAZAkQOVGIiIiI4tTQca47nn4ZBBklpjX43J4V\nNMRrdThhk5xINfOyHBERERFRQrFsAbbeBigaK7D6q6ArikBOEVCzMfT+OXPUn/a2ziBvbbm+MXc3\ngxlw2gFTKg6axmNc+259+/sJPcuygm2WxigP1FfXcz1RFPye83V9ffl3LsB3xg1D6fYv8cqeBnRI\nnpNFDaKA74wbirtnjYs4vAsAAgTIPgHeABNUKSZOnDiB4uJivP322xg4cCD+9Kc/obCwENnZ2Whv\nb8cnn3yCkpISVFZW4s9//jN27NiByspKjwrAWhw5ciTo9oaGBkyZMiWSX4U0yBmZgZLiPPxiU3XQ\njGs0/n17sH0T3eP54wrhDh0HbPsNcLhKwz4mIHeBWnmX4V0iIg+8U5BARAAZ+55BhoYZmVlKEm7q\nKIUC32BW7awpvMlEREREkQkU4AUDvERERBSndq4G5OA32k2CE4uN23CP4/aAbVJMBiQb/XwXIiIi\nIiKivqvRApQt0x7eBfxX0AWAqcsBy4vBK+kKBsB6Cng4Sw0Cm1KBcddqq9zbk25YC1zwXcj7X8WY\nrbfDO28akp/Qs01ywurQ8fcepnDO9dSA32Q8Oj8PNskJsyjCJqljdQWBo0UUAIfXX6ii+ER6E0Ja\nWhpOnz4NALDZbEhLSwva3mq1uh+Huyple3s7ZsyYgQMHDmDgwIH44IMPMHbsWPf2/v3746qrrsJV\nV12FO++8E6tXr8aHH36In/3sZ3j++ed19TVq1KiwxkjRVzQ5Cy99chTvfX4iYJshaUnR7TTWAd4L\nvw9cdV9nCPeWSmDPZuDlOwJ/Ls28F/j2r7gKJxFRAHx3TCSSVfNJWarQgWTYfV7nTSYiIiKKCtHP\nZKC+unQbERER9X6yrLlSVYH4AQQErmJUkDsiqjdhiYiIiIioF9i5Wv/1z5w5/sNOmblq5UMhwK1+\n1+ufvdZ5b9jRDux9UV//PSF9BHDqSwjld8AkhBG69RN6/rKpDYZuOAeL5FzPVZnXaBSRlmxCWrIp\n6ueN/haUUYKVBe3DBgwY4H584kTgYKXLyZMn/e6rxxNPPIEDBw4AAO655x6P8K63Rx55xN3Ppk2b\n0NgY+wrSFDuCEPzf8rO7DqO2vjl6HdrORO9Y/sxf51tB96Ji4LZ3gLwb1fdhQH0vvuiHwO3bgZm/\nYXiXiCgIvkMmEmNK54dlCO1KEmx+KuDxJhMRERFFhb8Ar57qE0RERETdKQqTogHAKApYnD86miMj\nIiIiIqJ4p2NCoJtoVJcZ93csexswcR5wxZ2+28/NP5vU7J3XWuXUoZCq/goh3GIPXqHn8uo6zFld\nBacc26Bq7zjXE6D41NtNzADvuHHj3I8PHToUsn3XNl331eOVV15xP/7e974XtG2/fv0wbdo0AIAs\ny/joo4/C6pPiw+GTbUG3v32wCYWrtqO8ui46HcayAm+gyvDA2ckla4D/qgPurVf/zPubb9iXiIh8\nMMCbSEQRyCnS1LRSvhyK138evePEg4iIiHoFvxV4e+dFZSIiIkoAUZgUbRQFlBTnIWdkRrRHR0RE\nRERE8UzHhECVAHznPs/QU6MFKLsdeDgLeGik+vPQ2767mlN79XXWV//fTyHt2RrezqIR8uV3oN0u\nQZYV1NY3Y8XmGkjdEN7tDed6agVezwBvolbgzc3t/LcVKhx77NgxHDlyBAAwbNgwDB06NKw+6+vr\n3Y/79+8fsn3XSr+tra1h9Uk9r7a+GV+dDP3+L8kKVmyuiU4l3pYYVmwOVBm+K1EEzP1YcZeISAe+\nYyaaqcv9B2a6cCgGlEqzPV7rLSceRERE1Es0HfB97dUV6oVoIiIionijY1K0fdz16JfkGeC9Yswg\nVNyZj6LJWbEYHRERERERxTMdEwJVCvD2g4Bli/rUsgV4aiZQs7EzCOxo938t9dC7kY62R10v7kCy\n4NC9nyIYsWHEf2HimnrkrHwdE+9/Hbc/+3HMw7s3XJzVa871RMG3Aq+iyD00mp71/e9/3/1427Zt\nQdtWVla6HxcUFITdZ3p6uvuxKxAczOHDh92PBw8eHHa/1LPWbv9Sc1tJVlC6PXRF6JBaGiI/hj+B\nKsMTEVHEGOBNNJm5wNwnA4Z4ZcGIFY47sF851/1abzrxICIiol7AsgV4xk8ApvZl9UK068I0ERER\nUTzRMCkaohEDrvoFLhiW5vHy9XkjOSmaiIiIiChR6ZgQ6CZLQNkyYO9W9acsadtP6tA/vmhLHdJt\nXUmGFHydPQfX2x/E7/4zAVaHWn3Y6nDi61PWmPf/hzmTes25ngA/FXjlxAzwXnnllcjMzAQAvPPO\nO9i9e7ffdk6nE3/5y1/czxcuXBh2n12r/j733HNB237xxRf44IMPAACiKOLSSy8Nu1/qObKsYJtF\nXzXcSksD5EgmHsiyzorvOsxZ41kZnoiIooYB3kSUOx+47R3AmOz5+ugrcXzha6iQp3m8/EBR7znx\nICIiojjXaAl+wdl1YZqVeImIiCjehJgUDdGobs/MxcBUk8emM+36K0gREREREVEfomVCoDdZAt78\nH+3hXQAwJOnrIwZ2mS/vln7OXDAHn916AFf95wfY6zynW/rsKsVkQLLR0O39hksQAJ9YoBLbCsXx\nymAwYOXKle7nN910E44fP+7T7re//S2qq6sBANOnT8c111zj93jr16+HIAgQBAEzZ8702+bGG290\nP/7HP/6B0tJSv+0aGxtRXFwMSVL/3V933XUYNGiQpt+L4otNcronFWhldThhk/Tt46GjJfx9Qxl/\nbeyOTUSU4BjgTVSZucDQ8Z6vTboBKdmTfZo2W3mTiYiIiKJk5+rQF5xlCdj5RPeMh4iIiEgP16To\ncz0nPyMpQ309dz4AYGCq2WPzmXZ7d4yOiIiIiIjilWtCoF6ndS6nnnWJ/j6i7F9NA2LehwIBA757\nD9ZWfQUpkmqVESjIHQFRFEI3jBOiIPhU4PUT6U0YS5cuxaxZswAA+/btQ15eHlauXIkXXngBTzzx\nBGbMmIHHHnsMADBgwAA8+WQY/367+N73vof589VrBoqiYMmSJZg5cyb+9Kc/4cUXX8QzzzyDu+66\nCxMmTMCnn34KABg8eDBKSkoi6pd6TrLRgGSTvkhWxBMD5Bhle0ypgDElNscmIiLonOZHfUr6CKCh\nuvN5SyPSkn3/k2ix6ZjVSURERBSILAO15dra1r4MFK1Wl5cjIiIiiieZuUD+3cDhHZ2vmdM8lhEc\n4BXgPc0KvERERERElDsfeHUFYDsTuz7GXAkc/VBf1d4oO64MjHkfZ9IuQPqQidhmeSPiY837Vhac\nioLy6nrN+xhFAYvzR0fcd3fzDvAqstxDI+l5RqMRL730Em688Ua88soraGxsxB/+8AefdqNGjcKm\nTZswceLEiPt89tlnkZGRgXXr1gEA3n33Xbz77rt+244bNw4vvPACLrjggoj7pZ4higJmXjgMr+1r\n1LxPxBMDOprD3zeYnDm8X0dEFEN8h01k6Zmez1saYBAF9DN7zuhpsfEmExEREUWBZAUc7draOtrV\n9kRERETxKCnD87nXDZKBqSaP56zAS0REREREAABzv9gev98QtdKv2HN1vCaJX0blOFbFhJ3OCX63\nfdYxEDn3v6Z7eXp/rho/DMu+fT6MGkNzRlFASXEeckZmhG4cRwQBkL0DvEriVuAFgPT0dPzzn//E\nyy+/jHnz5iE7OxtJSUkYMmQILr/8cjzyyCPYu3cvpk2bFvpgGiQlJaG0tBSffvopfv7zn+PSSy/F\noEGDYDQakZqaivPOOw833HADNmzYgD179mDyZN/Vk6l3ue6iEZrbhjUxQJYBe5v6EwBs3+jbXwvR\nCEz9afSPS0REbqzAm8jSvb4sNDeoLyeb0GbvPNlhBV4iIiKKCmOKusyOlhAvl+MhIiKieJbsdaPW\n3grITkBUJ0UP8ArwsgIvEREREREBAAym0G26GjgaOH1Ie3uHDbhsvnrO8twCfX1FyWLDa1E5zqvy\nVJQ5p2OqYb/PthM2wO6MTvj0F5uqUVKch5LiPKzYXANJ9n9ck0FAYV4WFueP7nXhXQAQBMG3Ai8S\nO8DrUlRUhKKiorD3X7RoERYtWqS5/eTJk/HnP/857P6o9xicZg7dCGFMDGi0ADtXq6teOtrVe2o5\nRUD/UeENVDAAip8JEaJRnRTSZdUpIiKKPgZ4E5ns9QH8xRtA2e3IM12BRgx1v9zMCrxEREQUDaKo\nXkCo2Ri6LZfjISIionjmXYEXUKvwpqhLxQ5I9bxBwwq8REREREQEwPf+bDCiEbh6JbB1KSBrLLjk\nWtUsZZD+sUWJUZAjPoZDMaBUmg0z/N+ntkNnEDoISVawYnMNKu7MR8Wd+SjdfgiVlgZYHU4kG0XM\nnpSJn0w9D5OzB0S2tH0P8zv0BK/ASxQrtfXNWLv9S7yypyFouySjiOsuGqlvYoBlC1C2zPNzwdGu\n7d5boKBu8dPAgUqg9uUugeA5auVdhneJiGKOAd5EZdkCvP+Y52uKDNRsxGpsxt3iHaiQ1aUgWIGX\niIiIouXtQQuQr2yGSQhyoZrL8RAREVG8867ACwC2zgDvQJ8ALydHExERERERtK1OBnRWPZw0T72H\n6x3WCkTqOPvTFv4Ye5ikiFjhuAP7lXMxTqz328auRC/AC6gh3tLth9yVeB+dfxFskhPJRkOvDu12\nJcBPBV4GeImirry6Lmg17z/Oz8W8yaNgl2X97zGNFu2fBz5E4EcvAs/O8910zjRgwvVA0Wp1Iogx\nhUV2iIi6Ed9xE5HrQ93fzBoARjhRYlqDCcJhAAzwEhERUXTU1jdj6esdWOG4Aw7F4LeNQzHg6Mw/\ncUYvERERxTdzGiB4XVbraHY/HJDqeTP5jNXBG6NERERERPFKlgF7m/oz1hzW0G0yRgG3vQPkzlef\n585Xnxs0LMXuOr6tOXi7OKQowAfO8bje/r+okKfhhotH4a+Lvu23rV1jnTIRgEHQFo6rtDRAPhu4\nE0UBqWZjnwnvAoAgALLi9ft0x3/zRAmktr45aHgXAO7duhefHW8N7z1m5+oww7sAIAN7NvnfdHZC\nOkQRMPdjeJeIqJvxXTcRafhQNwlOLDZuAwA021glhoiIiCK3dvuXkGQFFfI0FNofxAnFs3LdJ/JY\nFNofxJ8a83pohEREREQaCQKQlO75Wpcb5AP7ed5Yd8oKmjlBmoiIiIgovjRagLLbgYezgIdGqj/L\nbldfj0SgQLCiaKvAmz68s8CB61jDJmrr21V51/aN9vH2BMGgLtEOQDGmoMw5Hdfa/xc/cKzEfuVc\nAEBJcR4uPGeE393t0FaB12gQ4NQ4mdLqcMImBVk5rpcTBPhW4AUDvETR5LoPFoyr4rdusgzUloc5\nsrMC7X98X2THJSKiiDDAm2h0fKgXiB9AgIwWBniJiIgoQrKsYJul0f18v3IuauVzPdpUOqdgv3Ku\nR6UDIiIioriV1N/zeZcKvI3f+FbV+vWWGtTW974qWEREREREfZJlC/DUTKBmY2eo1tGuPn9qprpd\nr1CBYC3VdwGg5Zj/Yzntofd1B3jP6B9/d7roB6hdtB+/Hf8aJnaswy8dy1GrjPZtZ07zu7vWCrx2\np/brzCkmA5KN/leO6wsECPD+2+BKMUTR430fLJiw7oNJVm2TQIIew+b/9XA/94iIKCriOsBbUVGB\nBQsW4LzzzkNycjKGDRuGadOm4dFHH0Vzc3RuePz+97+HIAi6/8ycOTMq/Xc7HR/qqUIHkmFHCyvE\nEBERUYRskhNWh2f1AiuSPJ6nokN9vY9XOiAiIqI+ItlzNQFXBd7y6jr84MldPs1f33cMhau2o7y6\nrjtGR0REREREgTRagLJlgVcslSV1u55KvFoCwZoDvA3+j6VF89nw2InPtI89ykJG0kQj3h40H4Wr\nd+CF6lNodwTew6kAbUqSz+taK/DqUZA7Qv9y9r2Ivwq8YICXKGr83QcLJKz7YMYUd+XyqAvnc4+I\niKImLgO8ra2tKCoqQlFREbZs2YLDhw+jo6MDTU1N2LlzJ379619j0qRJ2LXL92ZIdxkzZkyP9R0R\nHR/q7UoSbDAzwEtEREQRSzYakGLyrF5ghefS0qmCGuDt65UOiIiIqI9I8g7wfoPa+mas2FwTcLlE\nSVawYjMr8RIRERER9aidqwOHd11kCdj5hLbjaQ0E1+/WdjzFGXp8gTQdUH9+VRXe/lGgpAwBxADX\nd0Ujjs78E5a+3hFymfnF6z/CpN+/gTak+GzrULRV4NXKKApYnO+nAnAfIsA3wKsocs8MhqgP8ncf\nLBCTQdB/H0wUgZyiMEamkZ7PPSIiiqrofrONAqfTiQULFuC1114DAAwfPhxLly5FTk4OTp06hY0b\nN6KqqgpHjhxBQUEBqqqqMGHChLD7W7hwISZPnhyyncPhwI9//GPY7erSJLfeemvYffYo14d6zcaQ\nTSvly6FARIvNEbCNLCuwSU4kGw19ekYiERERRUYUBczOzcTW3Z0V59q9KieknK3A29crHRAREVEf\n4V2Bt+MbrN3+Zcib0JKsoHT7IZQU58VwcERERERE5JcsA7Xl2trWvgwUrVbvrwajNRD8yT+09RuJ\nlnrAKQGnvoh9XwGI1hOAYADOnQbUV6vVg02pQM4cYOpP8fh7Tkhy6JVJ3jxwHADQYk7BMOGMx7Zo\nVuA1igJKivOQMzIjdONeTBQEVuAliiF/98ECkZwKDjS26H/fmbocsLwY/iSPULR+7hERUVTFXYB3\n7dq17vBuTk4O3nrrLQwfPty9ffny5bjnnntQUlKC06dPY9myZXjvvffC7m/8+PEYP358yHZlZWXu\n8O64ceOQn58fdp89TsOHukMxoFSaDQBotvoGeGvrm7F2+5fYZmmE1eFEismA2bmZWJI/ps+f3BAR\nEVF4luSPQUV1vTvUYkWyx/ZUdCREpQMiIiLqI5L7ezxVrM3YZmnUtGulpQGPzr+Ik5aIiIiIiLqb\nZFUDpVo42tX25n6B2+gJBH/xprZ2kVBkwHoakHUuzR71cTiBIx8CS98CBl+grhIripBlBdssr+s6\nVJvXdWQAsEcp5vDdCcNw96xxCXF/WxD8VeBlgJcompbkj0HZ7jqE+pelAOFN7pPrdwsAACAASURB\nVM7MBeY+Cby0ONwhBqflc4+IiKIurqZNOJ1OPPDAA+7nGzZs8AjvujzyyCPuqrnvv/8+3njjjZiP\nbd26de7Hvbb6rovrQ130f2KjANgtX+B+/tmxVty9udq9vOPLn9ahcNV2bN1dB6tDPfmzOpzYult9\nvbw69IwiIiIiSjw5IzNQUpwHw9mgSjs8K/D2EzoSotIBERER9RFJnt9ZJOs37uskoVgdTtikHr6h\nTkRERESUiIwpajVYLUypavtg9ASCJZu2dpEQRCBloPozWscLlywBu/6mBsHOVnO0SU7N500ubYrv\n/wfRqsDbP8WcMNejBQi+oUIGeImianxmOkwGbe+blZYGyCFWcfIrd77OHQTA6DsRwi8tn3tERBR1\ncRXgfe+999DQ0AAAuPLKK3HxxRf7bWcwGHDXXXe5n2/cuDGm42poaMC2bdsAAEajETfddFNM++sW\nufOB294BRl3ms0kAcLnhICrM96FQ3AEFwNbddbj+r+/j2r+8h19sqg64HKQkK1ixucYd9iUiIiLq\nqmhyFv7+k0sBAFbFM8D77dH9UDQ5qyeGRURERKRfsudNXqO9GSkmg6ZdU0wGJBu1tSUiIiIioigS\nRSCnSFvbnDn+lxGXZcDepv7UEwg2JIVuE6mkDMBg9JlwGBbRCIwriOwYtS+rf09nJRsNms+bXFrh\nJ8CrRKcCb9gBut7ITwVeKLL/tkQUFpvkhN2p7d9V2JO7HVadOyjAeTO0NQ30uUdERDEVV++8rpAs\nABQUBD8ZmD17tt/9YuHpp5+G06l+cF577bXIzMyMaX/dqv7TgJtMghMlpicwQTgMAHAqwL76lpCH\nlGQFpdsPRW2IRERE1Ldcct5AAL4VeNNFe08Mh4iIiCg8ds8qW8L+cjwzaJ37OkowBbkjIIpCyHZE\nRERERBQDU5cHXKnUTTQCU3/q+VqjBSi7HXg4C3hopPqz/KfA6G9r63d4Tnjj1cOcpv406ggLpw4B\n8m7sDCKbUtXnt73jtxiULq7l2M8SRQHTzh+s6xCt8K0cGa0KvIm0OoooALJXgFdhBV6iqNIzSUH3\n5G7X5JHW4/oHJhrC+9wjIqJuEVcBXovF4n582WXBTwYyMzORnZ0NADh27BiamppiNq5//OMf7seL\nFy+OWT/dbudqdemSIEyCjN+bntZ96ISarUhERES6pCcZIQi+AV7NS80RERER9TTLFuDDJz1fU2Rc\n9s3r7hWNAjGKAhbnj47xAImIiIiIKKDMXGDuk4HDTKJR3Z6Z2/maZQvw1EygZmPndUxHu/r8838B\nQogQlmgE5G4Iijra1KBx+0nt+yT3B+auAf6rDri3Xv05d436+5v7RTYer+XYy6vr8M5BfeGzNsVf\ngFf9/85siGxiZCKtjiIIgk8FXgZ4iaJLFAXMztVWEFDz5G7vySOrwphYceg9YM4afZ97RETUbeIq\nwHvw4EH349GjQ9/I6Nqm677R9P777+Ozzz4DAIwYMSJkZeBeQ5aB2nJNTacIB5Aj6Kuoa3U4UX30\ndDgjIyIioj5OFAX0TzHBqngFeO0M8BIREVEv0GgBypYFXGpUXdFojd9KvEZRQElxHnJGRmE5WyIi\nIiIiCl/ufOBHW3xfH3S+Wnk2d37na65zgECFkRQngCBBSNGoBqeaDkQwYI2sp4EnrwxZxMmD+Wzl\nXVFUA7tdl0+PNMDbZTn22vpmrNhcA6fOzGgrUnxec1XgHZcZ2blVIq2OInT5X7cA57VEFL4l+WMQ\n6m1F8+Ruf5NHnB36B+VoB8Zfq36+Baq43vVzj4iIulWIGund68yZM+7HQ4YMCdl+8ODO5TW67htN\n69atcz+++eabYTCEPwPv6NGjQbc3NDSEfWzdJKvmKneCACw1VuKXjuW6uij+2y6UFOehaHJWOCMk\nIiKiPqx/igntNu8KvG09MxgiIiIiPTStaOTE74e+gx8cv9nj9Sd/cgmunjA8lqMjIiIiIiKt+mf7\nvjbmSt8KhBrOAdQgpAjAKxCZd6O6JPmgMcDWpZGMVjtFZ6VfU5CQrivk5a8bQYQQLADqtRz72u1f\nQgpjBddWxTfA23E2wDt2WBosdd/oPiaQeKujiILgEzNXggXPiSgsOSMzcOWFQ/H2Qf+riGue3B1q\n8ogermromblqhfWi1WpmyJjiOWmDiIh6RFwFeFtbW92Pk5N9l8LwlpLS+WW9paUl6uNpaWnBiy++\n6H5+6623RnS87Gw/J4E9xZii/pGsmppfI34MATIUHUWbJVnBis01GDssnZVliIiIyMOAFBPaT3t9\n32MFXiIiIop3OlY0utz6PtLNi9Bi77whmmTiTREiIiIiorhh93N/2TuQquMcwCe8C6hBKddxRBMg\nO3QNsVuYA4d0YU4LuOnzMTdj9BfPwCT4CQx7Lccuywq2WRrDGl4bfHMDdkWNOVwwLPD4gknE1VEE\nAZC97/XLrMBLFAvnDPJ9X00xGVCQOwKL80dre+/RMnlEqy7V0AF0VlwnIqK4wLsGQWzatAltbWol\nuBkzZmDs2LE9PKIoEkVg/HWam6cKHUiGXXc3kqygdPsh3fsRERFR39Y/1Qyr4l2BlwFeIiIiinM6\nVjSCox0j+3mumXjLPz7G3ZurUVvfHIPBERERERGRLnY/K4JJXkuT6zkH8McVkBRFYEh83mtWTKlo\nt0uQ/VXHDRLuPTzwChTaH8QW57fRfvZab7uShJrBBT7LsdskJ6wOnZWBz2qFbwVe+9kKvOcNDhI+\n9sNsEHHDxaNQcWd+Qq4i6/v/MCvwEsWC3en5b+tHl5+DfQ9co33igK7JIyF4VUMnIqL4E1cVeNPS\n0nD69GkAgM1mQ1pa8BlzVmtn9dj09PSoj2fdunXux4sXL474eEeOHAm6vaGhAVOmTIm4H82m/wzY\n+2LodgAkRcRooQG1iv5lRCotDXh0/kUQRSF0YyIiIkoI/VNMaISfAK8sc7keIiIiil/GFHXZQQ03\n8CVDCj4/LaHr/HmHU8bW3XWoqK5HSXFeQt4wJiIiIiKKGx2tvq9JNs/nOs4B/JKsnVUOh+cCx2vD\nO04M/bP2G9xV/TpSTAbMzs3EkvwxnQGzIBUaWyQD9ivn4h7H7fgVbkMy7LDBjB+OOg95ZyvvuiQb\nDUgxGcIK8Q6Ab6Xku4xb8bi0AAbDxZqPYzYIqH3gGhiNiXn9WRAABZ736xWFAV6iWLBLntWtU80G\n7XmZRguw/f9Fp+iNVzV0IiKKT3H17XTAgAHuxydOnAjZ/uTJk373jYYDBw5g586dAICMjAwsWLAg\n4mOOGjUq6J8RI0ZE3IcuI/KAc6ZpamoUZJSbV6JQ3KG7G6vDieqjp3XvR0RERH3XgBQTrDD7bpCs\nvq8RERERxQtRBHKKNDUtt1/muzzpWZKsYMXmGlbiJSIiIiLqSXZ/AV6vFUl1nAMAfsJZji6BYLNv\nJdl4MBGfY4JwGFaHE1t316Fw1XaUV9epG82BC2594+isFaZAhBXJUCCivcN3yXdRFDA7N1P32ArF\nHfiNcZPP67MMu1Fhvg/bnl+l+Vh2pwK7LIdu2EeJguBbb5cBXqKYcDg932tMBo3RLMsW4KmZmgvx\n+RDO9mNKBfJu9KmGTkRE8SmuArzjxo1zPz506FDI9l3bdN03GkpLS92PFy5ciNRUfctv9BoFfwRE\ng6amJsGJEtMaTBAO6+6m+G+7Ok/0iIiIKOENSDXBqiT7brBHYUYxERERUSxNXa5WMAnCCQPWSrOD\ntpFkBaXbQ1//IiIiIiKiGLG3+b7mXYEX0HQOANHYGZzqqmsFRYdX8QLXMU2pQHo3F3rq4nyxERXm\n+9yFnDwmHJoC3yM/4/AfNWiz+6+yuyR/DIw6VmydIBxGiWkNjIL/0K1JcOJRo/Z71ykmA5KN2u6L\n90UC/FXgTdxAM1EseQd4zVoqfzdagLJlgOw7CUKz7GnAvfXAf9UBc9ew8i4RUS8RVwHe3NzOD4+P\nPvooaNtjx47hyJEjAIBhw4Zh6NChURuHJEnYsGGD+/nixYujduy4k5kLzH0q9EnnWSbBicXGbbq7\nYWUZIiIi6qp/igntSPLd4PBz0ZyIiIgonmTmqssPBriWoohG/Fpejv3KuSEPVWlpgCyz4hERERER\nUY/wW4G3w/c11zmAv4Cuy6gpgL8wZNfQrvdy6DPuUYNWvz0CWHt2NVPvQk7uCYenA4djdx728/cH\noN0uQZYV90+XnJEZKCnOg0HQFuJdYqyESfAfBu46bq33rgtyR2hfwr4PEgTBJ8DLCrxEsRFWBd6d\nqyML7wLAsRrg1Jdq9XgiIuo14upd+/vf/7778bZtwb9oV1ZWuh8XFBREdRyvvvoqjh07BgCYNGkS\npkyZEtXjx53c+cDSt4KfdHZRIH4AAfpn47GyDBEREbn0TzHBCrPvBlbgJSIiot4gd766DKHB6/vM\n+VfDdsubeMl+habDWB1O2KTgN6SJiIiIiChGtFbgBdRzgCm3BT7W1zsA+AlDdg3tel/7NKcC5n6A\nsyNwv4Gclw/lbHXcaEUwfcKwe7dAefragO0vbPFfkKv66zOYeP/ryFn5Oibe/zru3lztLvJUNDkL\nv/r+hSHHIkDGbPFDTePWcu/aKApYnD9a0/H6KlHwrcDLAC9RbHRIXhV4QwV4ZRmoLY9Cxy3AUzMB\ny5bIj0VERN0mrgK8V155JTIzMwEA77zzDnbv3u23ndPpxF/+8hf384ULF0Z1HKWlpe7Hfbr6bleD\nL/A/K9SPVKEDybCH1Q0ryxAREREANFsdUCDCqniGXg41NPXQiIiIiIh0yswF0jI9X5tyG5Ky8pBi\n0rYsa6Iv4UpEREREFFOyrIZ05QD3QDtafF/zV4HXpf2U/jE4rGeXRb8d+PJtz23WM+pPY4r6R4eD\nTVbMs/0OE2zrICnRu+XvCsNOEA7j/4TVEIJUg7zf9LS7Ym9XbXYnrA51oqLV4cTW3XUoXLUd5dV1\nAID+KX4KO3hJhh2pQpD/L7oIde/aKAooKc5DzsgMTcfrq/xV4FWiFv8moq58K/CGqP4tWX2rtIdL\nloCyZepnDxER9QpxFeA1GAxYuXKl+/lNN92E48eP+7T77W9/i+rqagDA9OnTcc011/g93vr16yEI\nAgRBwMyZMzWNobGx0V3912w248c//rHO36KXOvmF5qaKAswSPw6rG1aWISIiovLqOjy07QAAoB1J\nHtt+9+IH7gu5REREfZnT6cTevXuxfv16/OxnP8PUqVORmprqvo6xaNGiqPY3c+ZM97G1/Pnqq680\nHfeLL77Ar371K0yaNAn9+/dHWloaxo0bh+XLl7uv3fRp5n6ez+2tEEUBs3Mz/bf3kuhLuBIRERER\nxYQrMPtwFvDQSPVn2e2+YSY9FXgB4Mgu/WP57HW1GmLNRt9iSlV/VqskiiIwPnClW3/GtX2CzeJ9\nmCXuRiv0hX+DcYVhlxgrYRKC39M1CbJnxd4gJFnBis01qK1vRovNEbK9DWa0K0kh2wFAu5IEm7/V\n3gAYBAHly6ejaHKWpmP1dT5xXVbgJYoJh9Pz35Y51ORtYwpgTI7eAGQJ2PlE9I5HREQxFVcBXgBY\nunQpZs2aBQDYt28f8vLysHLlSrzwwgt44oknMGPGDDz22GMAgAEDBuDJJ5+Mav/PPPMMJEmdSVhU\nVIQhQ4ZE9fhxa9cazU0FASgxPel3RmUorCxDRESU2Grrm7Ficw2cZyvyW70CvEmKzX0hl4iIqC8r\nLi5Gbm4ubrnlFqxatQq7du2C1Wrt6WHp8tRTT+Giiy7CY489hn379qG5uRltbW347LPP8MQTT+DS\nSy/F//zP//T0MGMrKc3zub0VALAkfwyMIYK5XMKViIiIiOisUJVy9bBs6QzMuqoZOtrV597Lip/9\n/u4hUAVeWQa+Oap/PDv+ogap/FFkYOttarB42l26D20SnCgxrYEdxqDtHIoIWQxd9RZQw7AdMGK2\n+KGm9q6KvVpIsoLS7YfQbA1c1ddFgYht8hRNx62UL4cSIPbgVBSMHtrP77ZE5PP3pHGFXiLSR3cF\n3n1bg08gCUfty9H5XCUiopgL/m2+BxiNRrz00ku48cYb8corr6CxsRF/+MMffNqNGjUKmzZtwsSJ\nE6Pa/7p169yPFy9eHNVjxy1ZBmrLde1iEpxYbNyGexy369ovN6s/K8sQERElsLXbv4Qkd848bleS\n0HXVrlR0uC/klhTn9cAIiYiIuofT6VnJaNCgQRg8eDA+//zzmPddVlYWss2wYcOCbn/22WexbNky\nAIAoili4cCGuvvpqGI1GVFVV4emnn0ZHRwfuv/9+JCUl4Te/+U1Uxh53vCvwdqgBgJyRGSgpzsOK\nzTUe331cuIQrERElmoqKCmzYsAEfffQRGhsbkZGRgQsuuABz587FsmXLkJERm8/ETz/9FM8//zz+\n/e9/4+jRo2hubsaQIUMwYsQIXHHFFZg5cybmzp0Lg4GFR4h6RKMF2LlavU/paAdMqUBOETB1OZCZ\nG97xypYFDsy6lhUfOk49vp4KvJI1vLCjEmJlUsUJVP4auHUbIJoAOXR12q5MghODlcDFEGRFQIlU\njKsHnMZl37we8niV8uVIgoRUIUCQ2YurYq8V2ipHVloasOASbdVw10oFKDTsgAmB/w4digGl0uyA\n21lcypvnfXqFFXiJYsIueX5emI1Baiu6PruizdGufnZ5X7siIqK4E3cBXgBIT0/HP//5T5SXl+OZ\nZ57BRx99hOPHjyM9PR3nn38+5s2bh2XLlqF///5R7beqqgoHDx4EAGRnZ7srAfd5krVzBqoOBeIH\n+BVuCzij0Z9Pvj6N2vpm3qAiIiJKQLKsYJul0eO1dq8KvClnLwxXWhrw6PyLOPGHiIj6rClTpmDC\nhAm45JJLcMkll2D06NFYv349brnllpj3PWfOnIj2b2pqwvLlywGo4d2ysjIUFha6t99000245ZZb\ncPXVV6O9vR333Xcf5syZg3HjxkXUb1wye1fg7QwAFE3Owthh6Vj41E402zoDBJedNxAPFE7itREi\nIkoIra2t+NGPfoSKigqP15uamtDU1ISdO3fir3/9KzZv3owrrrgiav02Nzfj5z//OZ5++mmfcFJ9\nfT3q6+vxySefYPXq1Th9+jQGDBgQtb6JSCPLFt+wratSruVFYO6TQO58fcfcuTpweNfFtaz43DVA\nR4vvdmeA4KoxRd9Y9Ph6B1BfAyRnAO0nde9uFAKHMEVBwQrji3j+1CxcavCOb3pyhWFtMKNdSdIU\n4rUqJtigrbovAFgdTpxp1xZS3q+ci0eSf4F7O/4fRMX3/1eHYsAKxx3Yr5wb8BgFuSN4jbkLn/9S\nWIGXKCbsPhV4g2RqtHx2hcOUGtvPLiIiipq4DPC6FBUVoaioKOz9Fy1ahEWLFmluP3369MScZWZM\nUT+8dYZ49c6oBAAnK+oRERElLJvkhNXhWS3B+9ryg8Z/4HLxANZKBbBJTqSa4/rrKhERUdjuvffe\nnh5C2B577DE0N6sVnpYvX+4R3nW54oor8Ic//AErVqyAJEl44IEH8Pzzz3f3UGPPJ8DrGQDIGZmB\nSVn9seM/nTfhv5eTyfAuERElBKfTiQULFuC1114DAAwfPhxLly5FTk4OTp06hY0bN6KqqgpHjhxB\nQUEBqqqqMGHChIj7PXXqFK655hp8/PHHAICsrCzMmzcPeXl56N+/P1paWvD555/jX//6Fz755JOI\n+yOiMOitlKuFnhVHa18GilYHqMAbILRaF+P3i52r1CqJYQR4QzEJTvxEfD1oeFdRgBJpvjsMu02e\nghsM74c8dhIkXC/uQoU8TdNYUkwGtNlDVCXuombAdyHOmYszb/0ZKZ+/giTFhnYlCa8pl2OtYzZq\ng4R3jaKAxfmjNfeVEASvCrw9NAyivs6hNcAry8Del2IziJw5gKi9GB8REfUcJiJI/dDOKVJntOrQ\nriTpmlHpwop6REREiSnZaECKyeAO8RaKO5ArfunRxixIuMHwPgrFHTAcGApctKAnhkpERERBbNq0\nyf34l7/8ZcB2S5cuxcqVK9HW1oaKigpYrVakpPSxyh9JgSvwugxO81xx4GSbPZYjIiIiihtr1651\nh3dzcnLw1ltvYfjw4e7ty5cvxz333IOSkhKcPn0ay5Ytw3vvvRdxvzfeeKM7vLtixQo8+OCDSE72\nLUTy0EMPob6+HmlpaT7biCjG9FbK9XhdVlcXNaZ4BpP0rDjqWlbc3uq7TbKpaVZX0LHRAlT+Cvh6\np7Zjh+vAK0D/c2J2eDFIlV5A/XUvEBuAs9natVIBCsUdMAnBw7aioKDEtAaf27OCVsJ1KcgdgaOn\ntReVGphqBjJzMeDGUkCWIdvbAcGMOSYTDHvqsWJzDSTZ93czigJKivM4edKL4h3jllmBlygWHJLn\n+5LZGCBIW/cx4AzjOpFgAJQg78+iEZj6U/3HJSKiHsHpFqSaulz9ENehUr4cShj/CVkdTtgk7TMr\niYiIqG8QRQGzczMBABOEwygxrUGg+TwmwQnx5dvVC+REREQUN2pra3H48GEAwIQJEzB6dOBqRunp\n6ZgxYwYAoK2tDe+++263jLFbmft5Pu/wDQAM7uc5+flUW+hlaImIiHo7p9OJBx54wP18w4YNHuFd\nl0ceeQSTJ08GALz//vt44403Iup3/fr1eP311wEAd9xxBx577DG/4V2XkSNHwmhkrRuibqW3Uq4r\nYNhoAcpuBx7OAh4aqf4s63L90LXiqBauZcX9VeAFOsNUli3Ak1fGPrwLqKFiU89OeCwQP4AA9e97\nv3IuVjjugKyELshkEpxYbNwWsp2rIm6zTftS8YO6nk+JIsTkNKQmmSGKAoomZ6HiznzccPEopJgM\nANQKvzdcPAoVd+ajaHKW5n4ShU+AFwzwEsWCbwXeAO+lH5XqO7BgAG4oBeY9FTjfIxqBuU9qr2BP\nREQ9jgFeUmXmqh/iGkO8DsWAUml2WF0ZBAGHmgKcEBMREVGftiR/DIyigCXGypDVG9xVNoiIiCiq\nrrvuOmRlZcFsNmPgwIGYOHEilv5/9u49PorybgP+NbOzh2xIACEhJKACIhCIQUAwmFYEFUktAUH0\ntbVqQRHB2oq2Vm2tfdTWauz7WhEPwdJHKxWRQ6oB7SOiHD1BQiSIiEiRJAqC5rDZ7GHm/WPYzc7u\n7O7sIefr+/nwye7MPTN3AmzmcN2/++ab8c4770TdtqqqdXDNBRdcELV9YJvAbbsNS5r2vV4F3qAA\n77eNrMBLRETd33vvvYfa2loAwMUXX4xx48bptjOZTPjFL37hf79qVWwzBQZ79NFHAQC9evXCn//8\n54T2RURtJJ5KuVVrgOemqLOJ+rZ1O9T3z01R1/tmHDUid5b61Vkfpo/O04HhhZErHAZKOcNYuzAc\nihXHXeaE9pEou9ACG1qvV/4tXwiXwQl9A8O/egIr4jY43Yb71Dc18mywudnpKJmXj30PTkf1H6dj\n34PTWXk3gpAAb+TCzEQUJ1dQgNdi0olmyTKwv8z4TvsOARa+C+TNVf/csgXIv6518IrZrr6/ZYu6\nnoiIugwGeKlV4C95U/iLIbdiwlL3IkPToOjxKgqKl23Hhopj8fWTiIiIuqzc7HSUXJ2HGeIHhtrL\n+9ZxGi8iIqIke+ONN1BTUwO3243vvvsO1dXVKC0txdSpUzFt2jR/2EbPgQMH/K8jVd/VaxO4bbcR\nXIHX1RDS5IxeQQHeJgZ4iYio+9u4sbUSY1FRUcS2M2a0FgsJ3C5W27dvx6effgoAKC4uRno6w1tE\nnVKslXJPfK4GaeUwVVtlj7q+rsr4jKNf71Mr+LZ8r7/e0wLsXBb+mHpawoSB7f0NbV4uT0Ll8Y6d\nwdShWOFE6/WLDS7YBGNh2+DwbyABwIbFF/kr4jbEUIF328ETqK4J87MNIIoC7BYJYrgp3+i04J8P\nE7xEbcHlCa7AqxPNimVAC6BW3Q2sqpuVB8xeDvz2GHBvjfp19nJW3iUi6oIY4CUt3y/5+74GZv5N\ns0pRgDXeH2Km6yGUyZMTOoxHVnDnKxXYfeQUZJkXBkRERD1J8egzYBeMTR0teprVmxhERESUsL59\n+2LevHn4y1/+gn/+85/417/+hZKSEhQVFUEQ1Id4mzdvRkFBAerq6nT38d133/lf9+8f/UF0v379\ndLc16quvvor4J1LYuF1Ye2nf61bgtWref9tk7DyIiIioK4ulan9WVhYGDx4MAPj6669x/PjxuI75\n7rvv+l9PmjQJALB27VoUFRUhKysLVqsV2dnZ+NGPfoS///3v8HhiCOYRUfLEWin3/eXRg7S+mbyy\n8oBL7o++37rKyKEptwOo3mCsj4F90JMa/brJN/Npk2KN2hYAZNGCL+VM411TjIVay+VJUALiA05Y\n4DDYp+DwbyAFwJAMdfCjoihobDH++Vt17HvMfGobC0Mli6D9t6AoLJ5B1BbcwRV4JZ1oViwDWkwW\nIGeC/jpRVAeYi4x/ERF1VcbmvKCeRxSBM7UhXUEA7nXPhwvJmb7FqwBXLd+BFLMJM/KysKBwKKcz\nISIi6gFkkw1OxWooxOtQrLCZbBx1RkRElKA//elPGD9+PCyW0Aeqd955Jz766CPMmTMH//3vf3Hk\nyBH8/Oc/R3l5eUjbxsZG/2ubzRb1uCkpKf7XDQ2h1Wmj8YV5Oq3gCrwtjSFN+gVX4G1ggJeIiLq/\neKr2Hz161L9tRkZGzMf86KOP/K8HDBiAOXPmYO3atZo2tbW1qK2tRXl5Of76179iw4YNhvpHRElW\nsBioejVyMFeUgAtvBV64wtg+q9cDxcuAE0mY+cNZH1tVRAAQREAvDFkfedBh4MynRgO8wswnseiV\nUyiz3A+zELlqr0cR8bhnHpZKr0Zs6wsRB1IgYqM8EXNMW6P2KTj8G0gUAJtkAgA4XF54Yyzu5JEV\nLF1dieGZaXyWnCAluAKvwkJbRMnmlRUEf8zpVuD1DWipXBV9p2PmMqBLjUltsAAAIABJREFURNSN\n8ROewrOFXgClQf9iNZHJSJrdXqzdfYyjJ4mIiHoIp1fBRnmiobbl8iQ4vbyJSERElKiCggLd8K7P\nhAkTsGnTJlit6gPjjRs34sMPP2yv7nVdljTte50KvN81aaeRdbhl3PGvPYamgSUiIuqq2rtqPwBN\nZf7f//73WLt2LSwWCxYsWICVK1fin//8J37961/jjDPOAKBWCb7kkktw8uTJmI/V6WcJIOrssvKA\n4qfDrxclYPazQL9zjAdp3Q7A3RR75Vw9B/9jvCqij6WX/vKW7zVvfdVwHYo1ZOZTB6IPkgQAlC3B\ncOEYlroXwa2YdJsoCvC+dyR+7HoYz3hnRmwbGCIOVuopCrtd4PbB4d9AvawSRFH9vhuc8VU/98gK\nVmw7HNe21Co0wMsKvETJFlx9FwAsegFeQB3QIkapuyhKQMFtSegZERF1VqzAS+FZdQK8ggPfKr1D\nlitQQ7xmkwiXzgmJERw9SURE1DPYJBNexJWYqeyIWvXhJfwIV0mRbxATERFRcowaNQrXX389SktL\nAQCvv/56yJTXvXq1PpR2Op1R99nc3Ox/nZaWFqGlPl8lvnBqa2sxcaKxgUFtIrgCr0tbZXhDxTEs\nXV0ZstmGihq8sbcWJfPyUTw2py17SERE1CHau2o/AJw6dcr/+sCBA+jbty/efvttnH/++f7l1113\nHX71q19h2rRpqK6uxpEjR3DvvffimWeeielYnX6WAKKuYMgP9JfnX6cGlbLygNrQc+mwzHb1gWWs\nlXP1vPMwMPwy4LNNxreRjT0frVP64DbXL1GpDAupWOuAwQq8sgcl5uWY6XoIM10PYb60EUXi+7AL\nLXAoFrwpX4DnPUU4gKHwnq6wWiZPxkFXTlBbK8rlSVjhmaEb3gWA/cpZWOpehBLzct17uZHCvz4m\nsTU0Wu90G/oe9ZRX1eKxuef5w8AUB0H7s1PA4hlEyaaXlzFLOp9bdVXAzmVqBfdwfANasvKS2EMi\nIupsWIGXwjPb4Ba01XnS0BymsXpN7JVlrLm1ACnm+II2HD1JRETU/YmigKF5F2KpexG8iv7pqO/G\n77C8At6QJSIiakeXXHKJ//X+/ftD1vfp08f/+sSJE1H39+233+pua9SgQYMi/hk4cGDM+0wqa1CV\nLVeTfwrS6pp6LF1dCU+Y6WF9A5lZiZeIiCg55KDw3OOPP64J7/pkZWXh5Zdf9r9fuXIl6uv5+5io\n3TXoVKq29QVmL28NKu1abnx/ubPUAXaxVs7Vo3gBCNGrIgZyN0ZvAyBbPIVXLX/Ej8VdIescisEK\nvADMghfzpY3Yr5yFu9y3YnTLCoxyvoDRLS/gV+7FqFaG4JYfDtXUWw1tuwJ3uW+NGL4F1PDvTNdD\nWOP9IRyK9XRfQysIh9PU4oVy+jqp8uipiG0jaXZ74fSELwhB0YVW4O2YfhB1Zy6PgQq8VWuA56YA\nlasAryukPURJHdByyxYgb25bdJOIiDoRBngpohaTtpJMmhB51KpXAVZ9cBQz8rLiPuYbe2sgh3m4\nRURERN3DgsKhKMdFeMTz/2iWywr8N37LcRHmFw7poB4SERH1TBkZGf7XetNXjxgxwv/68OHoA3AD\n2wRu220ET5MrewBPCwCgdNsXYcO7PhzITERE3VV7V+0P3i41NRU//elPw7bNz8/HhRdeCABoaWnB\n9u3bYzrW0aNHI/754IMP4voeiHqUhrrQZYHVc2UZqN5gfH+TbgVEEcgtTrxvAHD4XWDWckBI/uxg\nZsGLEvNyjBKOaJa3CMYDvABQJL4PAWpQTIGIZtg0VX3HndUXwzJ7hWyn1zaaSOFfkwCkWsL/nFxe\nGXuOnsLVz+zA3WuqYvgOtVLMJtg4W1tyKQxEEyWbW7cCb8DnbV0VsG6heg8pHEVurUZPRETdHgO8\nFJHHrL1Rlo7o086UV9Vi/kVDgsfvGeb0yPjV6gpWoCEiIurGcrPTUTIvH4cU7ZSTx9Ebd7lvxUHh\nbJTMy0dudnrHdJCIiKiHCqyqq1cxNy+v9cHBhx9+GHV/gW3GjBmTYO86oeAALwC4miDLCjZW6QQS\ndJRX1XIgMxERdTvtXbUfAPr27et/nZeXB4vFEqE1MGHCBP/rQ4cOxXSsTj9LAFFXoFeB19sCeN3q\na0+zNtAbTf9z1K8Fi4G4n1IGcDuAkT8CLvuf0HVj5gGDL0xo974Kuj4CgMLRkSvhBrMLLbBBp3Lj\naS0eLxqdEQJicdAL//7qsnMxe1xOxO3mLt+JD7+Mv/ouABTlDeRsbQkKCW3zUpQo6dye0P9Ymgq8\nO5dFDu8CaoB359NJ7hkREXVWDPBSRMEB3mgVeAF1+pIhGanIHxzfTTYA2FBRg5lPbcOGimNx74OI\niIg6t+KxOfjZlFzNshS4MGfcIJQtKUTx2Mg3fYmIiCj53nnnHf9rvYq5ubm5OPPMMwEA+/fvx5df\nfhl2X42Njdi6dSsAwG634+KLL05uZzsDS2roMlcDnB4vmt3GKhlxGlgiIuqOOqJq/8iRI/2ve/fu\nHbV9YJv6ehYUIWp3ehV4AaClQf0qpQBmu/H9vX6nWtUwKw/oc2bi/TPb1T7YgqqCDxwLzH0e6J34\nvUttBV1g/Sehs6BE4lCscCL8YIUvjjfh26aWRLpoiN0iIdUiRWyT6JhFSRQ4W1syCNoAtKKEVgol\nosS49Crw+gK8sVSXr16vticiom6PAV6KyClqH0QZqcDrm77kzDNiuKjW4ZEVLF1dyUq8RERE3dhZ\nWf017+1oweNz81h5l4iIqAN89tlnePHFF/3vr7zySt1211xzjf/1E088EXZ/zz33HJqamgAAM2fO\nhN2e2H2CTslsR0h1L1cTbJIJKWZjU7tyGlgiIuqOYqna//XXX+Po0aMAgMzMTGRkZMR1zPz8fP/r\n77//Pmr7wDZGAr9EFIUsA64mY2Gjuiqgao3+Olej+lUUgdxi48ff+y/guSnqfiWrfhtbHxiuzps7\nS+2D46R2ub2f+lVvNo4YBVfQ7YPon12ByuVJoRVVA7y1rw5ub9uXWLVbTLBHCfAmQhIFztaWJErQ\nv3+BJXiJks7l0f4eNIkCTL7q4bFUl3c71PZERNTtMcBLYW2oOIaqb7XLjFTgLcobiH/vrcHre2sS\n7oNHVrBiW/TR+URERNQ12ezaChaSIKO5xdlBvSEiIup6Vq5cCUEQIAgCpkyZotvmySefxI4dOyLu\nZ8+ePZg+fTqcTvX38OWXX45Jkybptr3rrruQlqb+Dl+2bBnKyspC2rz//vv43e9+BwCQJAkPPPCA\n0W+paxHF0Cq8LY0QRQEz8rIM7YLTwBIRUXd0xRVX+F9v3LgxQkugvLzc/7qoqCjuY86YMQPC6cqC\nVVVVcLnCTysPAB999JH/dbxVf4kIahh33a3An3KAR7LVr+tuVZfrea8EeOYHwKkwz/8+Wdv6umAx\nIMYQDJU9wLqFgOOU/vqMkUDxsuj7EUSg4Db1dXNwgPcM9as1qDJvHAIr6M4Ud+AB6X8Nb+tWTFjh\nmRGxzf66hoT6Z1SKxYRUa/IGJUqnr49SzCbO1pZ0QdeeCgO8RMnmDqrAazYF/L+Lpbq8rxI8ERF1\ne203FI66tOqaeixdXYmHRe3JQxoij/CRRAGXjMjAL1+pSHgqFJ/yqlo8Nvc8PswiIiLqhlJSQ290\nNzXWw57SDSv0ERERBTh8+DBWrFihWbZ3717/6z179uD+++/XrJ86dSqmTp0a87E2b96MO+64A8OG\nDcOll16KMWPGoF+/fjCZTKipqcHbb7+N8vJyyKcrZZ111ln4+9//HnZ/mZmZ+Nvf/oYbb7wRsixj\n9uzZuPbaa3HZZZfBZDJh+/bt+Mc//uEPAz/44IOaKa27lboqNSQQaMsjwOUPYUHhUJRV1MAT4QaJ\nAOCSEfFVGSQiIurMLr74YmRlZaGurg5btmzB7t27MW7cuJB2Xq8XTz75pP/9tddeG/cxBw0ahIsv\nvhhbtmxBU1MTXnrpJfz85z/XbVtZWYldu3YBANLS0nDRRRfFfVyiHq1qjRqYDTwndjuAylVA1avA\n7GeBvLnq8roqYP1tQN1e/X35vP1H4JxpQFae+mf2s8Br8433SfYAzu/017kagWGXRN/HedeoxwZC\nK/Cm9FW/WhIP8Poq6I4SjqDEvBySYGyqdLdiwlL3IuxXzorYzpush7VRpJhNSLUmL3aw8IdDsHjq\ncNgkE58PJ5kiCAgsuqswwEuUdKEB3oC6ir7q8pWrou9o4Fi1PRERdXsM8JKu0m1fwCMraBC1I3rS\n0YgUOOGEJWRKFt/0JZsPfBPx4VSsmt1eOD3eNp16hYiIiDqGPTV02rPmpgYgw1jFOiIioq7qyJEj\nePjhh8Ou37t3rybQC6iVbOMJ8PocOnQIhw4dithm+vTpeOGFF5CdnR2x3Q033ACHw4E777wTTqcT\nL7/8Ml5++WVNG5PJhPvuuw/33ntv3H3u1PTCCgDwxRbguSnInf0sSuYVYOnqyrD3SRQAv3ylAl5F\nYUUpIiLqVkwmE37/+9/jttvUCpY/+9nPsHnzZmRmZmra3XPPPaioqAAAXHTRRZg+fbru/lauXImb\nbroJAPwhXT2PPPIIJk+eDECdNeD888/H+eefr2nz9ddf4yc/+Yn//S9+8QukpLC6GVHMPlkLvLYA\nmjRgIF813IwRwPEDwNpbAMUbfb+KF9j5NDB7uRr6Pfif2Psmu/WXtzQALgNTl2eOan3dHFTNN+V0\nBV7JFnu/AigK8IJH/cxbIJXDLBj42YgmyGPmYfbH+fhEPjOh4yeT3SKh2W2g/wZZzRKfC7eZ4EA0\nA7xEyeYKCvBaTEEh3ILFwN7V0X8nfvW++nvQN6CEiIi6LZ75UghZVrCxqg4A0KBoq9/NNm3H1dJW\nOBQrNsoTUeopwpfSUBTlDcT8wiEYmZWGe14LMyVOnFLMJtik5E27QkRERJ2H1d4rZJmzqX2mdiMi\nIuopSkpK8OMf/xjvv/8+Kisr8c033+DEiRNoaWlB7969cfbZZ6OgoAA/+clPMGnSJMP7XbRoES69\n9FI888wz2LRpE44ePQpZlpGdnY1p06bhlltuCQnMdBt1VfrhXZ/TYYXiW7bAdM1Y3L5qT9jHoh5Z\nwdLVlRiemYbc7NDBTURERF3VzTffjHXr1uE///kP9u3bh/z8fNx8883Izc3FyZMnsWrVKmzbtg0A\n0KdPHzz77LMJH7OgoAC/+c1v8Oijj+LUqVO48MILccMNN6CwsBBmsxkVFRUoLS3FyZNqRc0JEyaE\nzHpARAZUrYkc3vWRPcDbDwGH/s9YeNener1aKXf9ovDn3PFoaQCajmuXCRIw/FLgs02tyzwtra+D\nA7z20wFee9+EuiIIwGFlIATImCF+YGibFlnC+XtmwuHtXKHLFIsJqe7kxQ7MwWE3SholOMDLCrxE\nSecO+ozW/Uyz9QaaT4YuDyQHDGghIqJujQFeCuH0eP2jJBugDfD6pm6xCy2YY9qKmeIOeIufhm3c\nFQAAh8uT1BGWAFCUN5DToxAREXVTgmSFGyaY0Xr+4HQwwEtERN3flClTkjJV5Y033ogbb7wxYpth\nw4Zh2LBhmD8/hmlnDRo+fDhKSkpQUlKS9H13ajuXRQ8SyB5g59PY7F4YtaaRR1awYtthlMzLT1oX\niYiIOpokSXjttddw3XXX4fXXX0ddXR3+53/+J6TdoEGD8Morr2D06NFJOe6f//xnmEwmPProo3C5\nXHj++efx/PPPh7SbPn06Vq1aBZstsSqaRD1OXZVaTddo5c6Dm6K3CeZ2JD+8C6hhqb9foV1mTQUs\nQUUGPM7W146ggJWvAq+td0JdcShWOGGBDS7YhZboGwCwogWKuxlA5/rcsltMaPEkrxiT2cTnwm1G\nCA7wyvrtiChuLk9QBV4pIMC79Qng7QeN76x6PVC8DBA5sIGIqDvjpzyFsEkmpJjVi6xeiDyNjFnw\nwvr6YvViPWjbZJBEAfMLhyRtf0RERNT5OGHVvHc3M8BLREREnZgsA9UbDDVVqtdjU1WNobblVbWQ\nZVY/IiKi7iUtLQ3//ve/sX79elx11VUYPHgwrFYr+vfvj0mTJuHRRx/FJ598gsmTJyf1uA8//DA+\n/vhj3H777Rg5ciTS0tJgs9lw5pln4tprr0V5eTk2bdqEvn0Tq6BJ1G5kGXA1qV872s5lsVXTjYdg\nSn54N+yxREAKCsRqKvAGBXh9lXetoTOLxaJcngQFIpywwKFYo2+A1tBvZ2O3mJBqSV7dMKvECEPb\nYQVeorbm9mp/V/sHJWz9a2zhXUAd0OJpTlLPiIios2IFXgohigJm5GVh7e5jmGbaE7W9cLqiDGYv\n12ybKEkUUDIvn9NHEhERdXMtgg1pSuugIVdzYwf2hoiIiCgKT7P6AMUAwe0wXCGr2e2F0+OFPYkP\nvomIiDqL4uJiFBcXx729kVkHguXn5+PJJ5+M+5hEnUJdlRqYrd6gnoOa7UBuMVCwGMjKa//+xDCY\nLSECDBf4Dd3WFFvAuPkU4AoqKOCrwKso4SvwWuN/fulWTFjhmaEeAiI2yhMxx7Q16na+0G84JgHw\ndkAeM8ViCgmsJUJ3unlKCiU4wBv3fzQiCic0wCuqv89jDe8C6u99KSVJPSMios6KZ7+ka0HhUMyW\ntuM84QtjG1Sv94/6XVA4FJKY+NQmGxZfhOKxOQnvh4iIiDo3l6gNtLidDPASERFRJyalqA9QDFDM\ndghmYw9aUswm2KTkzWpERERERF1c1RrguSlA5arWAWRuh/r+uSnq+vYWw2C2hMgJVPjNHBn7Nt98\nqn3vC/Ae/QCQ3dp1255Qg1gNdXF1T1GApe6F2K+c5V9W6imCW4l8LRAY+tVjk0T8rOCssOvbkt0i\nxTUQURIF3KDTZwZ4244isAIvUVtzebQBXoskAjueQlyB+dxZgMjPRCKi7o6f9KQrVzyCEukZBJ/D\nhxVQuj83Ox0l8/ITDvGe3d/YwzAiIiLq2lyiNtTidTZ1UE+IiIiIDBBFteqZAULuLFyRl22obVHe\nQIhJGBBNRERERN1AXRWwbiEge/TXyx51fV1V+/YrhsFsccuZkNgxvt4X+zYnD2nfe1rUgPTKotC2\n+/8NPPtD4NUb4ure/8njUCYXanepnIWl7kVQRP0QrFsxYal7kSb0G8zpkWEzd8yAwBSzCakxBnjP\nOsOOsiWFKBjWP2SdWWKEoe1orzkVVuAlSjp3UCl0q4j4qteLElBwW3I6RUREnRrPfknfzmUQEcPo\n1qDS/cVjc1C2pBBzxg2C2RTfw6d/V9bGtR0RERF1LR5TUIC3hQFeIiIi6uQKFqsPUiI5/aDFyExF\nkihgfuGQJHaQiIiIiLq0ncvCh3d9ZA+w8+n26Y9PDIPZ4tZ/eNsfI1jwz7rh68gBakVW/8TIrZjw\nhOdq3XVv4CIoC94B8q/zB5gVsx3r5Isx0/UQyuTJEfedYjahly32KriJskoiTKIAu9V4eFgEsPyn\n45GbnQ6rOTSuYInz2TIZEFKBN/Z/x0QUmcujzdmkih5/MTzDRAmY/SyQlZfEnhERUWfFAC+FkuXY\nRwDplO7PzU7H/MIhcc+8cd/6T1BdUx/fxkRERNRleIMCvIqLAV4iIiLq5LLy1Acp4UK8AQ9aos1U\nJIkCSublIzc7vQ07TERERERdRizP6arXq+3bsi+uJu0xjAxmS0RLQ9sfI5gQdKwvt0YPUMcoWhXd\nrHQrxOzzgNnLgd8eA+6tgfDbY9g65o8RK+/6TB7WDzZz+wd47RY1uGs2ibCYDEYPBODgNw0A1ABw\nMLPR/VDMFAQHeFmBlyjZgivwKmZbbJXl+w4BbtkC5M1Nar+IiKjz4tkvhfI0A26H8fYRSveXbvsC\nHjm+E3+vrGDFtsNxbUtERERdhywF3bhwxXAeQkRERNRR8uaqD1SGT9cuF0Tg5nc0D1qKx+Zg3W2h\nFbMuzx2AsiWFKB6b07Z9JSIiIqKuI5bndG5H7FX9jKirAtbdCvwpB3gkW/267lZ1ebTBbLEYMw+4\ncLF2matRPcYl9yW+f6OU4LBu8kKNspSC17w/jFpFNyPN2vpGFAFLKiCKhmb0AIAtnx3Hp3XtXxjJ\nbmn9d2B0VlZZAZaurkR1TT2sUmjlXotOqJeSJfjviAFeomRzebUDa4Z4vwR6ZRrfwTUvsvIuEVEP\nw7NfCiWlxDYCaNZy3RMIWVawsaouoa6UV9VCjjMATERERF2DHHze4WYFXiIiIuoisvKAor9olyky\n0PfskKZ5g/qEPIhefMk5rLxLRERERFpSCmCyGGtrtqvtk6lqDfDcFKByVWuQ2O1Q3z83RV2fNxe4\nqjT8PoyEe/sMAeY+D2Scq13e0qge452H4/0OOo+7Pod4bw2kOc/g0yhVdL1hCin7ZvSIlo31ygpe\n+/irODsavxRLawBXEIwFeAHAc7qQ07FToWH159/7grO0tpXgvyNW4CVKOnfAB/pMcQd+V3MbcOpL\nYxtPe4DhXSKiHogBXgolikBusbG2584Azpunu8rp8aLZ7U2oK81uL5yexPZBREREnZxZ+5BBjGUm\nACIiIqKOlpoRuqzpuH5Ti7a6lMPFex5EREREFOSbfYDXbaxt7iz1uV6y1FUB6xYCcnBF2tNkj7q+\nrgroPSj8fi5/KPqxep0+j7b00i5v/CZyH7oKsx2w9wNEEcVjc3DmGUH3QINylN83h/87Lx6bgykj\noldv7IiaSHZNgDe2bcsqj+FXqytDlr938ARmPrUNGyqOJdo9CqIEVeAVlDDJcSIyRJYVOFweTVE6\nX4B3lHAEJeblMMHIvR8BmPYH4Ad3tk1HiYioU0vC3CbULRUsBqpejXxxLErA1PDT19gkE1LMpoRC\nvDZJhCwrkGUFooHpYYiIiKjrESzaCrymtpj2j4iIiKitWFLVqmeB5zCOb4F+w0Ka2i0STjlaH8w7\nXF08lEBEREREybdzGYxNay8ABbcl/9jRgrOyB9j5NJB/Tfg2Q6cAfYcCp74I38aapn51fKtd/v1/\njfQUEEyA0okHxAWEq/fVfI+jp7T3PM8d0Auf1jX639c7wwd4ZVnBjkPfhl3fkQJDa7E+yXV7w/87\n98gKlq6uxPDMNM5akkyxpqyJSFd1TT1Kt32BjVV1aHZ7kWI2YUZeFhYUDoXLI0OAjIXSv2EWDPye\n6nM2cO1LrLxLRNSDsQIv6cvKA2Y/G3mKm0vuj3gSIYoCZuRlJdSNFo+MMX94C6MfeBN3rq7gdClE\nRETdkGhN1b73OjuoJ0RERERxCq7C23RCt5mdFXiJiIiIKBJZBqo3GGtrMgOZozvm2NXrgZbG8Otd\nTUBK78j7sPYCqtYAG39jvI+BTJb4tmsPgugPV2+oOIaZT20PqY4bGN4FgPpmtyYMGygZs562lX01\n9f5KuckuxuSRFazYdjip+yTt35HCCrxEMVM/17dh7e5j/s/mZrcXa3cfw6+X/RMX7/sd9ll/jlmm\nHcZ22PRNcn+fExFRl8MAL4WXNxe4ZQuQf506zUuwQeOj7mJB4VBICVys+S5TfSc8nC6FiIg6ktfr\nxSeffIKVK1fi9ttvR0FBAex2OwRBgCAIuPHGG5N6vClTpvj3beTPl19+mdTjtxfRqp0mz+xlBV4i\nIiLqYlL7ad83HddtZrdqB0qzAi8RERERaXiaAbfDWFuvSzsLRKxkWQ3aynLsx3Y7AOf34de7GiMX\nCQIArwdYewuMVRvW4WlWZ8LoCIKoVgAO54Kbgaw8VNfUY+nqSnjDBHMDyQrQdPr6IHhKdt+sp52R\nAmDp6kpU19RDbIPqruVVtWGDzRQPVuAlSoTvc92j87k0U9yBddJ9KHT8H+yCy/hO3Y7Efp8TEVGX\nF+XKiXq8rDxg9nKgeBnwt/OBU1+2rnOcjLp5bnY6Sublhz2JiZVHVnDnKxWcLoWIiDrEvHnzsHbt\n2o7uRrdT7zFr3gseB+5cXYEFhUP5+56IiIi6Bnt/7ftwAd6gh+5NLZ2zihYRERERdRApRS2qYyRI\na7bHF2CtqwJ2LlOr7bod6n5GzQQm3BTbsWV3+PUuB+CJMsvWtwcBJYHzYbMdsPRq39CTaALyrvFX\n18UbdwFHd4W2O3c6AKB02xcxPR/9+MgplFXW6E7JfsWYLKzb0zmLHPkq5Xq9ya/m2uz2wunxwm5h\nrCEZlOCQNSvwEsUk3Of6KOEISszLYRbi/L124nMgOz/B3hERUVfFM10yRhTVh1GBAd7m6AFeACge\nm4PhmWlYse0wyqtq/RecRXkDccmIDPzlzQP470mDI3oBeBXg1pc+xjM/Hc9QDxERtSuvV3vhfcYZ\nZ6Bfv344ePBgmx973bp1UdtkZma2eT+SbUPFMeyoOokJAWelKWjB2t3HUFZRg5J5+Sgem9NxHSQi\nIiIyIri62JY/Ad9+DhQsVgdHn5Zq1QZ4O+s0uERERETUQUQRyC0GKldFb5s7S20fi6o1wLqFgBww\nE4TbAez9l/rHaHXO3FmAO0JA19UUeT0AfPuFsWNF6sNXH6hTjydCMBkPEo+7Ebjyidb3U34DvDg7\ntJ2tN2RZwcaqupi6Mv8fH2mq9fpmKC2rqMHiS4ZF3d4kCoaq/baFsspjcHuNHdskACZRhMtA4DfF\nbIJN6pzVh7sm7f9xQWF1YyKjIn2uL5DK4w/vAsD7z6iF9YiIqEdigJeMs5+hfW+gAq+PrxLvY3PP\ng9PjhU0yQRQFyLKCu9fsjbkr/z3pwMyntjHUQ0RE7WrixIkYNWoUxo8fj/Hjx2PIkCFYuXIlbrrp\npjY/9qxZs9r8GO3NN9XQFbBqltvRAkCt3LB0dSUr7xMREVHnVrUGOPimdpnsUUMXVa8Cs58F8uYC\nAFKCqkY1tXhARERERKRRsFg9j5QjnCuKUmsVWKPqqkLDuyEMhvmaTwInD4Vf72qMXoFXSeBc2Pf9\nl+2Pfx8+P1gKbHsizM9FgOZnYg6qeJw2UH+f1nQ4Pd6YB+yFC9/aFXfbAAAgAElEQVR6ZAVPvRPh\n5w1AEgXcPX0E/rTx05iOmSxGwrtWScSV52VjfuEQlG77Amt3R68oXJQ3EKJoMFhOUSlCcOifAV4i\no8J9rguQMUP8ILGdV69XZ8WOdWAOERF1CwzwknEpQQHe5lMx70IUBc0UJ/FcvPow1ENERO3t3nvv\n7egudCu+qYYcojbAmyK0+F/7pl8rmcepg4iIiKgT8oUgwk07KnvU9RkjgKw8pFq0laMcLlbgJSIi\nIqIgWXnqILC1t4SvDDv7Wc1MD4bsXBYlvBuDzzYhYrVeVxPgbo68D9EMyO7Yjy1Krd+/NS327YON\nLAJyZwL/Www4vm1dnjMBsKUDhza3LgsJ8Gbp79OWDptkQorZlLRZN8KFe32zns4vHILa76P8zDvY\nj/IG+u/zLigcirKKGt2p6H0kUcD8wiHt1b2eiRV4iQwL97lugwv2gOdacXE7AE8zYElNbD9ERNQl\ncfgGGZfSV/s+jgBvMN9JTrx8oR4iIiLqWgKnGmoOqcCrvdFcXlULuYOmfiMiIiKKyEgIQvYAO58G\nAKSEBHhZgZeIiIiIdOTNBab9Tn+dIPlneDBMloHqDYn3SyPC/Tq3I3oF3kETYjyeAORfB9yypfX7\ntyahwE99jRoGPmuydvnQKYBk0y6TtPcxYeujv09bb4iigBl5YQK+SbLvwcux78HpKJmXj9zsdLz2\n8VcJ7c9sattKtxs/qfPf5/XN3iqFqa4riYL/+6IkEoJ/3rzvTmRUuM91JyxwKFadLWJgtgNSSvR2\nRETULTHAS8bZgyrwNn2r3y4Gybh4ZaiHiIio6wmswp8J7aCgvmhCiXk5RglHAADNbi+cHlanIyIi\nok4mlhBE9XpAlpFq0U6GxQq8RERERBRWaqb+csUDeGOsXOtpVkO17cXVGL0C76hiQIihyM/AfGD2\ncm3l4WQEeDf+Rp1ZI22gdnlDXWgIOThcFRKGPO31XwJ1VVhQOBSmMAHVRNktJqRazRBP71+WFWw+\n8E1C+7znipG4ZERGMrqnK/g+b/HYHJQtKcSccYP8BZ9SzCbMGTcIZUsKUTw2p8360nMF/XsMN5sM\nEelaUDg0ZOCBAhEb5YmJ7Th3FiAyvkVE1FPxNwAZF3yh/flbwLpb1YvaBOid5MSCoR4iIuoJrrzy\nSuTk5MBisaBv374YPXo0br75Zrzzzjsd3bW4+KrwzxR3oMT8jGadIABzTFtRZrkfM8UdSDGbYJPi\nr9hPRERE1CZiCUGcngoxtAIv72cQERERURieCAFYV1Ns+5JS1Op+7aX5O0CJcq6bNRq46jlAMPi4\nWm9acWta7H0L9v1R4LkpQNMJ7fKGWsAdHOANqrBYtUZ/n5X/Ap6bgvTP1+OcjF6J91GHPejawunx\nwulOLIz56dcN2HLgeEL7iETvPq+vEu++B6ej+o/TNRWFKfmUkP9vLJJFFItw1cNLPUVwK3E+xxIl\noOC2JPSOiIi6KgZ4yZiqNcD2/0+7TJGBylXqRW24C1QDok2REg1DPURE1BO88cYbqKmpgdvtxnff\nfYfq6mqUlpZi6tSpmDZtGmprazu6izERRQHzhzeixLwckqB/Y9kseFFiXo75w5v8lSSIiIiIOo1Y\nQhCnp0JMDQnwetqgY0RERETULUSqYBtrNV1RBHKLE+tPLBwGZvG09ALy5gIL3wPOnYGQyqDBmr8L\nXZaMAC8AyB511oxA9bWhFXjNARV466qAdQsj7nPA27+E+M0nyeljEJtZe23hK5iQiNc+/qpN45xF\neQPD3ucVRQF2i8T7wG0uuAIvA7xEsSoem4PnfzZBs2y/chbuct8a+38pUQJmP6utLk9ERD2OFL0J\n9Xi+C9BwI2Vlj7o+Y0TcJxbFY3MwPDMNS1dXYH9dQ0zbRrrYIyIi6ur69u2Lyy67DBMmTEBOTg5M\nJhOOHTuGt99+Gxs3boSiKNi8eTMKCgqwa9cuZGVlxXyMr776KuL6tgoHLzBthFmIXInDLHixQCoH\nMKdN+kBEREQUN18IonJV9Lanp0K0W7W34liBl4iIiIjCCq7+GsgVY4AXAAoWA1Wvqs/12pqRAK/1\ndIXVrDxg6n3A5/+J3LdvqtVnloHPIiNVIpZsoQHcSJSgIgPHqwFb79B9+uxcFvVnaRa8mC9txF3u\nW433IwxRAOSAYFhwBV5RFDAjLwtrdx+Lui+TKEBRFM3+AIS8TyZJFDC/cEjbHYAMCn6mzgAvUTz6\np1lClr0lj4cQa2zlpo3A4InJ6RQREXVZrMBL0Rm4AIXsAXY+ndBhcrPTUZQ3MKZteLFHRETd2Z/+\n9CfU1dXhlVdewd13343rrrsO11xzDe6880688cYb+OCDD3DmmWcCAI4cOYKf//zncR1n8ODBEf9M\nnNgGNw9kGX2+LDfUtM/hckBObPo3IiIiojZRsFitlhKJYPJPhRj8kJ0BXiIiIiIKyxOpAm+E4Go4\nWXlqlb9o56/J0HQiehtrr9bXRp5FQtE+i6xaA3zwbPjmGSOj9yEa5/fa974ArywD1RsM7aJIfB8C\nEru3KYkCrrlgsGaZXrXdBYVDo+7LJAAbFl+EXtb2q/MliQJK5uUjNzu93Y5JYYTkdxngJYrHt42u\nkGVOWNCixFAJ3WwHciZEb0dERN0eA7wUWQwXoKhen1C4ZkPFMfy/bx803J4Xe0RE1N0VFBTAYgkd\nxeszYcIEbNq0CVarFQCwceNGfPjhh+3VvcR4mo1P9ed2RH5gQURERNRRfCEIIcottuMHAACplqAK\nvC3tUP2MiIiIiLomd4T7YfFU4AWAvLnA9Qaf+yXCYSDAe/D/1K/xPIv0zx4a4blkXRUgxhCkMsIX\n4I3h3qZdaIENoUEvoy46px/KlhRi1EDt81CbToA3NzsdqZbw37MkCnjimrEYk9MbVp3tEzVtZCbm\njBvkDxenmE2YM24QypYUonhsTtKPR3EIvnZlgJcoLi0e/d8/B5TBust1nZ6tiYiIqP2G1lHXFE+4\nxpIa82Gqa+qxdHUlvAbnZpkxJgu3Tx3O8C4REfV4o0aNwvXXX4/S0lIAwOuvv44LLrggpn0cPXo0\n4vra2trkV+GVUtTRxUbOM8x2tT0RERFRZ5QxAhCE8DOPKl41XJAxAimWbM2qJlbgJSIiIqJwIgV4\njT6709NnUPzbGtV8Knqb1+8AsvOBM4bG/izSSMVexQsMngwcfV99nQzm0wHeGO5tOhQrnAhfpCGa\n6y88G7nZ6Xjv4HHN8uDZPXx62aSQ6wyrJOLK87Ixv3CI/9mqVUpuaEwSBSy9fARys9Px2Nzz4PR4\nYZNMEMVY55OntqSEluDtkH4QdXVNAQOyRwlHsEAqxwzxA9iFFmM7EFtnayIiIuJwDorMdwFqRALh\nmtJtX8BjMLwLAL+67FyGd4mIiE675JJL/K/3798f8/aDBg2K+GfgwIHJ7K5KFIHcYmNtOQqZiIiI\nOrOdywA5SiBA9gA7nw6pwNvMAC8RERERheNxhl+XSID32J74t02m0+fIMT+LNFmNV+ytrQBufgfo\nOyT+fgYynQ7ixnBvs1yeBCWBR/ItHvWaIfjaISVMgNehc43x1q9+GDKraTIDvMGzpoqiALtFYni3\nExKCA7yswEsUl/pmNwBgprgDZZb7Mce01Xh4VzABs59TZ3UiIiICA7wUTTuEa2RZwcaqupi20bv4\nJCIi6qkyMjL8r7/77rsO7EmMChYDYpQJIUSJo5CJiIio84pxut8Us/Zhqcsrw+2NMO0vEREREfVc\nkSrwuhII8Fa8FP+2ybZvrfo1lmeR3pbYKvb2Pwe45sXo9yENCTifN3Bv062YsMIzw8jewvrieCMA\noNmtfTZqM4cGeKtr6tHgDK1M7AuaBbJKodubhMg9MgnApaMykXL62ClmE+aMG4SyJYUoHpsTcVvq\nHJSgv2OBFXiJ4tLg9GCUcAQl5uUwC+GzK4EZeY8iQjn3CmDhu0De3HboJRERdRUM8FJ0bRyucXq8\nIRed0ThaokyLQ0RE1IOcOHHC/7pPnz4d2JMYZeUBs58Ne56hiJK6nqOQiYiIqLPyNMcUHuhlcoUs\n5iBlIiIiItIVKcDrbopvn7IMHN4a37ZtweMEKl829ixSENVnkfHMHhrlPqRhKQH3XqPs062YsNS9\nCPuVs8Luzkh08t3P1Hu/wRV47UEVeDdUHMPMp7bp7mP20zuwoeKYZpnNHBoTuH3qOZDCVM2VRAFP\nXDMWpTdcgH0PTkf1H6dj34PTQyr7UmcXXIGXA0qJ4tHQ4sECqTxieBcABAFY552MXGcphrf8L5rn\n/pPPvIiIKAQDvBRdtIvaBMM1NsnkH6lpVGOLBw6XB7LMUYFERETvvPOO//WIESM6sCdxyJsL3LIF\n3rRBmsXV8pn47qdvcRQyERERdW4xhgdSUtJCFjtcHKRMRERERDo8bVCB19OsVrDtTP59h/o1WsD2\nvGvVZ5Hxzh56+j4k8q9rPYc324G+Q4z31Zyifa+zT4dixRrvDzHT9RDK5MnG9x3GvprvIctKSDGk\nwGer1TX1WLq6Ep4wz009soKlqytRXVPvX6ZXgfeSkZkoW1KIOeMGRayyK4oC7BYJYpiwL3VewRV4\njcXIiShYY3MLZogfGGo7XfwYzbDBZjbDpvPZS0RElIy5QqgnyJsLZIwAXrkeOHW4dXn/EcDcFQmN\nEhJFATPysrB297HojU9b8vIeuLwyUswmzMjLwoLCoRzdSUREPdJnn32GF1980f/+yiuv7MDexCkr\nD8KwKZrp+96XR2FSyjno23G9IiIiIorOFx6oXBW9be4spFjNIYtZgZeIiIiIdLmdEdbFGeCVUgCT\nBfCGzgzRYWQPsPNpYPZy9Vnkyh8DzlOh7c4qaH1dsBioelXdNhzBFDp7aFaeepziZWqYWUoBvtkH\nPDcl8r58JDXAK8sKnB4vbJIJYsA+HY4GjH7oPShJrKHl9qrHCq7Am2Jpfcxfuu2LsOFdH4+sYMW2\nwyiZlw8AsOpU4DWbRORmp6NkXj4em3te6/fIoG63IQhBf+8KA7xE8Wh2NMEuGBsQYxdaYIMLRXln\n8vOUiIh0sQIvGZeVB4wKCgUNzE9Kif8FhUPDTsmix+VVp/Nodnuxdrc6JUzw1C9ERESd1cqVKyEI\nAgRBwJQpU3TbPPnkk9ixY0fE/ezZswfTp0+H06nezL/88ssxadKkZHe3XYiB088BSBccmL1sB+5c\nXaGpDEFERETU6RiZ7leUgILb8Pk3jQi+/fHw6/t5vkNEREREodyRKvA2xbdPUQQGjIlv27ZUvR6Q\nZfWZ44DR+m0CZ77wzR4aHEYMdvyA/nJRBCyp6tdoM5EG2H/ChTtXV2D0A28i9/dvYvQDb7bevxRF\n2OzpsJlDB+0lQhIF2CRT2Aq8sqxgY1WdoX2VV9X6ZzeVRL0Ab+vFCqvs9hQM8BLF49sWEQ7Faqht\ns2KGR7RifmEMFd+JiKhHYQVeio29v/Z90/Gk7NY3mjPS9C6R+KZ+GZ6ZhpFZaRwRSkREbeLw4cNY\nsWKFZtnevXv9r/fs2YP7779fs37q1KmYOnVqzMfavHkz7rjjDgwbNgyXXnopxowZg379+sFkMqGm\npgZvv/02ysvLIcvqoJazzjoLf//73+P4rjqH/acEjAp4nwYHWjwy1u4+hrKKGpTMy/dP0UZERETU\nqfge+K9bqF+1SzABs5/FhrozsHT1NgTf9th84Bu8d/A4z3eIiIiISMsTIcAbbwVeAMgZD9Tsjn/7\ntuB2qN+vJRWw9tJvI9m07zNGAIIQPn+oeNVz9IwR0YsR+WYiLf818N/wRRWef/5JrPUU+t/7Cg0F\n3r80OuvomWfY8d+T0f8eh/RPhSgKoRV4T1fQdXq8IeHecJrdXjg9XtgtEkw62Wez3kLqXoJC7wIr\n8BLFpb5FxkZ5IuaYtkZta4UHqybXcEZpIiIKiwFeik1qhva940TSdl08NgfDM9OwYtthlFfVotnt\nRYrZhKK8gXj3s29wojHydD4eWcGtL32M4w0t/m1n5GVhQeFQngwREVFSHDlyBA8//HDY9Xv37tUE\negFAkqS4Arw+hw4dwqFDhyK2mT59Ol544QVkZ2fHfZyOVF1Tj1c/qccDAWem6ULrzevAgTr8nU5E\nRESdku+B/85lQOUq7TrRhO/2bsTz1cfhkc/U3ZznO0REREQUwu0Mv86VQIDXYo/epr2Z7YCUor62\npoVpk6J9v3MZIEcJrsoeYOfTwOzlxvrx1QcRVz9qehb7vYOxXzlLszzwfH5B4VCUVdRELFgkiQJ+\nPX0EfvlKRdTCRucOUAPNjqCQrt2i3ky1SSakmEMr9OpJMZtgk9TKvSadIkhmiQHenocBXqJ41Dvd\nKPUUYaa4A2Yh8uevKCiYsPu3wISCpMxuTURE3Q/Pwik2qcEVeL9N6u59lXj3PTgd1X+cjn0PTsdj\nc8/DKYfb0Pb/PenwX6D6Rr3OfGobNlREH+lKRETUmZSUlKC0tBQ333wzJk6ciLPPPhu9evWC2WxG\n//79MWHCBNx+++3YtWsXNm3a1GXDuwBQuu0LfCdrHxykQ/sQwiMrWLHtcHt2i4iIiCg2WXnAOZeG\nLve60OfgGqyT7sNMMXw1L57vEBEREZFGxAq8TfHvt6VR+16UtF87Qu4sQDz92NoSpgJvYIBXloHq\nDcb2Xb1ebR/NzmX6M2oEdkHwYr60UXed73ze96wz3ByhkiigZF4+rszPRsm8fEhRZhNNOR3UdQZV\n4LVZ1CCuKAqYkZcVcR8+RXkD/bOXioJOgNfEmU27OyWoAi9YgZcoLg1OD/YrZ2GpexFkxcBnp29A\nCRERkQ4GeCk2IQHe421yYi+KAuwWCaIowOnxwhtl9GkkvlGv1TX1SewhERH1RFOmTIGiKDH9+cMf\n/hCynxtvvNG/fsuWLbrHGjZsGObPn4/nnnsO77//Pg4fPoyGhga4XC4cP34cH374IZ588klMmjSp\nbb/pNibLCjZW1aEeQQFeIfQhRHlVLeQEzgmIiIiI2lRdlTpFbxhmwYsS83KMEo6EbcPzHSIiIiLy\nc0cI8CZSgdcVFOCdtAi4t0b92hFECSi4rfW9kQq8nmbAbfBn4HZEDkMDMQWCi8T3IUA/EOw7ny8e\nm4PJw/pp1kmigDnjBqFsSSGKx+YAUGcnLVtSiHRb+PC00+2FLCtodGmLHaWYTf7XCwqHRg0CS6KA\n+YVD/O91A7wiowPdX/DfO68/iWJVXVOPbxtbAAD/li+Ey+jE50YHlBARUY/Ds3CKjT0owCu7gZa2\nDcbaJFPUi85oWMWGiIioc3J6vGh2e9GgRK7AC6jV9Z2e6FPBEREREXWIBCt2ATzfISIiIqLTFCVy\ngNdoeFVPcAVeWzpgSQVSese/z3iJEjD7We2U4uECvFKK9rXZrt8umNmu3VZPDIFgu9ACG1y66wLP\n5y2S9jH8nZedi5J5+cjNTtcsz81Ox5CMMFWHAXx85BRGP/Amjp1yavthaQ3w+qr+hnue6qv6G3hs\nvaZmidGBbi8kuM0AL1EsNlSoM0D7xl7b4IJNMDabtKEBJURE1CPxLJxiE1yBFwAav2nTQ4qigHMy\nw1+4GsUqNkRERJ2PTTIhxWxCPVI1y3uhOaSSRYrZBJtkAhEREVGnk6SKXTzfISIiIiIAgNeFiMG6\n4BBuLFwN2veW08/grOmhbZNKACSb+tJsB/KvA27ZAuTN1TYLW4HX1vpaFIHcYmOHzZ2lto8khkCw\nQ7HCCYvuusDz+RZP0L1NS/jzfLs5/Lra751odocO8nvojWrN7KO+ar5zxg3yV+dNMZtCqv76iDoJ\nXrMpsYJK1PkJQQFeoQ1m2u2KysrKcPXVV+Pss8+GzWZDZmYmJk+ejMceewz19W1XzGzPnj24++67\ncf755yMjIwNWqxU5OTmYMGEClixZgjVr1sDr5SDfzqK6ph5LV1fCE5A5ccKCZkX/d0IIIwNKiIio\nRzJYy53oNEuqenHtCRjl+cxFwOirgILF2hGySXTh0DPwaV1D9IYR+Ea92i38Z09ERNRZiKKAGXlZ\n2LX7a+1yQUEamjXB3qK8gbo3lomIiIg6XBwVu5phC1nH8x0iIiIiAhD93LK2Alh3a3zP5oLDv9b2\nCvAqQO5s4MoSNcAULlRrCVPUJzhgW7AYqHo18iwYogQU3Ba9a75AcOWqqE3L5UlQwtTImjEmC06P\nFzbJFBLgtUYYqGePEO4NZ39tA3781DY8MS/fH871VeJ9bO55/n6Eu74whVRiBczRgs7U5YX+2+3Z\nAd7Gxkb85Cc/QVlZmWb58ePHcfz4cezcuRN/+9vfsHr1alx44YVJO259fT3uuOMO/OMf/4ASFKKu\nqalBTU0NPv74YyxbtgynTp1Cnz59knZsil/pti804V1A/T+1XR6NS017ou/AyIASIiLqkfjbgWJT\ntUYb3gUAT4t6QfvcFHV9GxjSP/EKvCZBwOHjTUnoDRERESXTgsKhcIipIcvT0PqgQhIFzC8c0p7d\nIiIiIjIuCRW7eL5DRERE1APJMuBqUr8Gcjv12/sp8T+bcwUFeP0VeMNUvk2m/Rsih3cj9UMKGgCX\nlQfMflYN6eoRJXW90YBzweLw+zrNrZiwwjNDd50A4I2qWuT+/k2MfuBNfP6N9udslcJ/z7Y4ArwA\n4JUVLF1dqanEC6hFE+wWKeLgwO+bQ6d8v2tN6L6om2EFXj+v14urr77aH94dMGAA7r//frz88st4\n6qmncNFFFwEAjh49iqKiIuzfvz8pxz158iSmTZuGlStXQlEU5OTk4Pbbb0dpaSleffVVvPDCC/jt\nb3+LCRMmhFRMpo4jywo2VtXpriv3Toy+A6MDSoiIqEdiKVIyrq4KWLcw/HrZo67PGJH0SryRppUx\nyqsoKF62HSUBI1GJiIio4+Vmp+PBqyfBu16ASWi9YZguOHBMUcMsJfPykZvd1lVAiIiIiOKUYMUu\nnu8QERER9TB1VcDOZUD1BrXartmunk/6Kup6mo3tJ55ncyEVeE8HZm3tcC7qdqjfmyV0MH9rf8JV\n4NWZdjxvrvq973waqF4f8LOcpQalYnle6QsEr1uoW9VXgYC7vYuwXzlLd3MF8FfdbXZ70ezWTntv\nM0eowBthXTQeWcGKbYdRMi/f8DYbKo7hP/u/Dlm+dvcxlFXU8FlqdxYSCO25Ad7S0lJs2rQJAJCb\nm4vNmzdjwIAB/vWLFy/GXXfdhZKSEpw6dQoLFy7Ee++9l/Bxr7vuOnz00UcAgKVLl+Khhx6CzRY6\nQ88jjzyCmpoa9OqVeKEzSpzTE/q57nMcfSNvHOuAEiIi6nFYgZeM27ks8jQ0gLp+59NJP3SqJTlZ\nc0+YkahERETUsYrPHxzykCAdDlxwdl+ULSnkDWMiIiLq/AxU7FIECQeGXB+y/H/nT+T5DhEREVFP\nUbVGrZxbuUoNnALq18CKulEr8AaI9dlcR1bgNdvVCryRWHWCxKIEmMz67bPygNnLgd8eA+6tUb/O\nXh5fUCpvLnDLFt3ZNYTBkzB1bvzVEyNV4E20kFF5VS1k2VgQs7qmHktXVyJc4VU+S+3uggK8iqzf\nrJvzer148MEH/e9ffPFFTXjX59FHH8XYsWMBAFu3bsVbb72V0HFXrlyJN998EwCwaNEiPP7447rh\nXZ/s7GxIEmvydQY2yYSUMIMt7GjRvPd9HDsUKz7sfYX6eyVvbtt2kIiIurROHeAtKyvD1VdfjbPP\nPhs2mw2ZmZmYPHkyHnvsMdTXt91Fw549e3D33Xfj/PPPR0ZGBqxWK3JycjBhwgQsWbIEa9asgder\nP7qm25JldRSwEZ+sCZ3qJ0H2JFTg9fGNRCUiIqLOxZTSR/O+t9CIHw7vz0p0RERE1DUYmMJXuOpZ\n3HPj1QieyTaZ9z2IiIiIqBPzzXYZrmCOr6Ju3Sex7bd6vbFnc4oSGuD1Vbyt158aPKlyZ6mzV0Ri\n0ak2abJG37coqpV9o+0/mqw8oP+5octT+yMzPXzQLppIFXgTDfA2u71weow9uy7d9gU8UcK+fJba\ncwg9tALve++9h9raWgDAxRdfjHHjxum2M5lM+MUvfuF/v2pV9Fl3Inn00UcBAL169cKf//znhPZF\n7UsUBUwe1k93XUpQgPdT5UyMcr6A0S0r8LOTN0HOHNMeXSQioi6sUwZ4GxsbUVxcjOLiYqxZswZH\njhxBS0sLjh8/jp07d+LXv/41xowZg127diX1uPX19bjpppswfvx4PP7446ioqMCJEyfgcrlQU1OD\njz/+GMuWLcPVV1+NhoaGpB670/M0t44CjsbrAo59lNTDJ3rhGiyWkahERETUTkwWzdu/mf+GnC13\n4vH/XcOKD0RE1O14vV588sknWLlyJW6//XYUFBTAbrdDEAQIgoAbb7wxqcdraGjAa6+9hiVLlmDy\n5MnIyMiA2WxGeno6Ro4ciZ/97GfYtGkTlHBlmAKsXLnS308jf/7whz8k9Xvp1HwVu9IGapcPzPdX\nXDGJAvr30gYQ5j2zC3euruA5DxEREVF3Z3S2y73/im2/bof6LM9Iu+CKm5ZeatXf1T+N7ZixEkxA\ngYEKtnqVgNu7SmhqRugycwqaWqL83UVgloSw68JVdTQqxWyCTYq+D1lWsLHKWFCbz1K7KSH430nP\n/DveuHGj/3VRUVHEtjNmzNDdLlbbt2/Hp59+CgAoLi5GejoLl3QlGyqOYcuBb3TXpQraqvkO2NAM\nGxSIMQ2wICKinqvT1dv3er24+uqrsWnTJgDAgAEDcPPNNyM3NxcnT57EqlWrsH37dhw9ehRFRUXY\nvn07Ro0alfBxT548ienTp+Ojj9TgaU5ODq666irk5+ejd+/eaGhowMGDB/Gf//wHH3/8ccLH63Kk\nFHW6GKMh3o9eAAZPTNrhE71wDeY7UbJbOt1/ASIiop6pag2Ubz/XTOBlFTy4yrQV7kM7cPdni3DJ\n3Ns4tTQREXUb8+bNw9q1a9vlWE888QTuu+8+OJ2h0/A2NH3p2KgAACAASURBVDTgwIEDOHDgAF58\n8UX84Ac/wEsvvYQzzzyzXfrWLWXlAcOmAhX/bF02+EL/FL4bKo7heIO2OovLK2Pt7mMoq6hBybx8\nnvMQERERdUexzHb55bbY9m22q8/yojn6YeiyN+4EDr8LyO0QMDp+wH9eHJZVpwJvtNBzsqX2D10m\nWdGYQIA3fHw38Rk5ivIGQgye5kOH0+NFs9vY3zOfpXZTwf9MemZ+F1VVVf7XF1xwQcS2WVlZGDx4\nMI4ePYqvv/4ax48fR0aGTsg/infffdf/etKkSQCAtWvXorS0FLt378apU6fQr18/nH/++Zg7dy6u\nv/56SBL//3UG1TX1WLq6Et4w/1+CK/A6lNZB20YHWBARUc/W6X7jl5aW+sO7ubm52Lx5MwYMGOBf\nv3jxYtx1110oKSnBqVOnsHDhQrz33nsJH/e6667zh3eXLl2Khx56CDZb6DQojzzyCGpqatCrl87F\nY3cmisComcZH/FZvAIqfTnyaGv/ho190xsIkCDh8vAmjc3ondb9EREQUh7oqKGsXhp2uyyx48Zhp\nOWa/OgjDM3+C3GyOTCcioq7P69U+ND3jjDPQr18/HDx4MOnH+uyzz/zh3ZycHFx66aUYP348MjMz\n4XQ6sWvXLrz00ktobGzE1q1bMWXKFOzatQuZmZlR93377bdj6tSpEduMHDkyKd9Hl9JrgPZ9o1rl\nyvfQJ9wzUo+sYOnqSgzPTOM5DxEREVF3E9Nsly3R2wTKnRX9mVzVGmDdwtDlhzbHdiw9Zjsw5GLg\n4FuAEiYgqnjV42eMiBzitehU4JXdifcxFroB3hQ0tcQfck5PMYddl5JASFYSBcwvHGKorU0yIcVs\nMhTiZeisexKCJmgW0M7VrTuJAwcO+F8PGRL9/8+QIUNw9OhR/7bxBHh9WRRALWI3Z86ckIHdtbW1\nqK2tRXl5Of76179iw4YNhvoX7Kuvvoq4vra2NuZ99mSl276AJ0xFcgEy0tGkWdaM1gCv0QEWRETU\ns3WqAK/X68WDDz7of//iiy9qwrs+jz76KN5++21UVFRg69ateOutt3D55ZfHfdyVK1fizTffBAAs\nWrQIjz/+eMT22dnZcR+rS7tgvvEAr2+qHktqUg59Rmr4i9p4eBUFxcu2s6oNERFRZ7BzGQQlcvUK\ns+DFjWI5VmybjJJ5+e3UMSIiorYzceJEjBo1CuPHj8f48eMxZMgQrFy5EjfddFPSjyUIAi6//HLc\nddddmDZtGsSgB/s33HAD7rnnHkyfPh0HDhzA4cOHcc899+CFF16Iuu9x48Zh1qxZSe9zl5eWpX3f\n8DWAyA99fDyyghXbDvOch4iIiKi7iWW2S5MF8LqM7VeUgILbIrepq1LDs21RyfauzwF7P2DDbeHD\nuz6yB9j5NDD7/2fv3uObKPP9gX9mkrRJL1wFCy2ieEGK2WJXV9ByRF0Pgv5aEETF/bEsIqhFz67o\nUTn8cL3LWes5xxVYbqt7URRZoHW3VfeIqFW8LbZGiqgLIrYUEAqlbdJcZn5/DEmbZpLMTC5N28/7\n9eLVZOaZeZ4WSmbm+T7f76rwbUwpMH2doZ6BtzWGDLyRqo0arURqFgWUzSrQvPhPFAVMsedg8876\nqG0ZdNY7ySEZePtmCt7jx48HXp92msrvexeDBw9WPVaPzkGzy5Ytw549e5CWloY5c+agqKgIFosF\ntbW1WLduHY4dOwaHw4ErrrgCO3fuxKBBg3T1NWLECENjpFCSJKPK0RiyfYywH/PNlZgifowMIXjR\nTSuURIF6FlgQEVHfFp/0qHHy7rvvBi5cLr/8chQWFqq2M5lMuPvuuwPvN2zYEFO/y5cvBwBkZWXh\nqaeeiulcvVruRcoDAy20lurRKCstvgG8QEdWm7qG5rifm4iIiDSSJMgaSwdOFT9ClaMeUpSgFyIi\nop5gyZIlePLJJzFz5kxD2VT0ePzxx/HGG2/g6quvDgne9Rs5ciReeeWVwPtXXnkFbW0as4NRqK4Z\neE8eDDvpo6ailtc8RERERL2OKAL5JdraDhun8ZxmYPrqyBltAWDHisQE71oylOBdQKnOqUXdVkBK\n8ayfmSrZNS02tMQQwGuNEKSbkaYvgNdmMWFGYR4qFhXpTlQ0v2gUzFECcxl01osJXf+t9c37zpaW\nlsBrtarMXdlsHXEPJ0+eNNRnU1NT4PWePXswcOBAfPjhh1i7di1+/vOfY/bs2Vi+fDl27dqF/Px8\nAMD+/fuxZMkSQ/1RfLi8vpCs5cViNSrSlmKG6b2Q4F0AGIom3QssiIiob0upAN6qqqrA66lTp0Zs\nO2XKFNXj9Hr//ffx5ZdfAgBKSkrQrx8/QMMSReCCGdraainVo4NN542rVv6sNkRERNRNvE4IGksH\nZgjtkD1OuLzGS9URERH1RVoztRQUFGD06NEAgLa2NnzzzTeJHFbv5g4un4jj+yFtXogzvXs1He7x\nyaj5vil6QyIiIiLqWSaUKkG3kYhmYOSlwduGXwigS9DledcAt20DRk+JHBArSdqDa/Xyzwd6ndoy\nCwMdVTzDaXTo254Imfoy8GpJVJtuDj9vqicD787/91Pseniy4cCw/OH9UDarIGwQL4PO+hahjwbw\ndgepy//TTz/9NC688MKQdjk5OXjppZcC71944QU0N+tLSHbgwIGIfz7++GNj30QfZDWbAv9HjxH2\nY53lN/gfy0pYhPDzVJea6vDGzYNYCZqIiDRLqQBeh6Pjxuviiy+O2DYnJyeQ+v/QoUM4cuSIoT7f\neeedwOtLLrkEALB582ZMnToVOTk5SE9Px/Dhw3Httdfi+eefh9ebgNWpPYnWBwvRSvXo9M3hluiN\nDKp0HGRWGyIiou5itkG2ZGhq2i6bIVhssJoTs7CHiIiIELSw2emMMKlO4Tk2Aa/dHbLZ/MUrqEhb\nimLxA02nefHD7+I9MiIiIiLqbjl2JWOuEGaKVjQDVywF9r4dvP1kY2jlS8kH/P4a4InhwJO5wJbb\n1YNc6z/VHlyrR+f5QLNNycarRaQqno5NwJpJ6vvWTFL2J1hdQzP+tP3zkO3Oz8uRfeJL1WO0ZKtN\nj/BMU2siI6tFxKDMdIhaIoYjKBmXi4pFRZhRmBcITIslqy/1IEKXfzt9dIo8Kysr8NrlckVt3/n5\nSHZ2tqE+Ox+XmZmJn/3sZ2HbFhQUYPz48QCA9vZ2vP/++7r6ysvLi/hn2LBhhr6HvkgUBUyx56BY\n/AAVaUvxU9NnIb9GIcdAxtnf/CE5AyQiol4hpQJ49+zZE3itpXxk5zadj9Xj008/Dbw+/fTTMWPG\nDMyYMQNVVVU4dOgQ3G43Dh48iMrKSsybNw+FhYXYt68PZ2z1P1gIF8SrtVSPDuU19Sh+rjpu5+vK\n6fExkx8REVF3EUUIGksHWuDDvHOdMT+gJiIiInVutxtfffVV4P3IkSOjHrNy5UqMGTMGWVlZyMjI\nwBlnnIHi4mKsWrUKbW0JCBJIdY0OYMvCsOWJLYIPZZZVGCPsj3qqSkcjFxwTERERpTpJUqovRMqA\n25V9JnDRvNDtZ04ErvgP4O3HgIO1wftOHgS8Xa6vv/l7R2Cupw2o3RAa5OrYpAT5xlvX+UBRBDQ+\n4wtbxTPKtTQkr7I/gZl4y2vqsWblctxc/0TIPtsPDpR+PV91QZ7bG/3vPx4ZePvbLJraaeHPxLvr\n4cmoe2RyTFl9qScRurzT8X9XLzJgwIDA6x9++CFq+6NHj6oeq8fAgQMDr+12O9LS0iK2v+iiiwKv\n//nPfxrqk+KjdIwLZZZVEbPuhqjbqu/agIiI+rQoqVST6/jx44HXp52mUpqki8GDB6seq8fBgwcD\nr5ctW4Y9e/YgLS0Nc+bMQVFRESwWC2pra7Fu3TocO3YMDocDV1xxBXbu3Km5BKXf999/r3ksKc0+\nExgyGqi8D/huR8f29H7ALyrjGrxb19CMxRtr4U3ghJXNYmImPyIiou40oRRy7ctRy3WJgoz55koA\nM5IzLiIioj7mpZdewokTJwAAhYWFyMnJiXrMJ598EvTeX47xtddew0MPPYTf//73uO666wyPqcc9\nS9mxInzAwSkWwYdbzVW413N7xHb+BccZaSn1+I6IiIiIACWIdMcKoK5cCZ61ZCgBrBNKtc2TiSqB\nmKOuBN5+POr1ZET+INcho5X3WxYCcqxJbATAZAF87lPf5zQl827X73NCKeB4NfL4I1Xx1HAtDckL\n7FgJTF+l71vQoK6hGWtfrcAW8yqYBfWgKzOUBXlfu3OxW+5Y8PjdsciLF9NMYsSkBBkaM/DGM4DX\nTxQF3nP0IUJI6tC+uWh09OjRgaRt+/btw5lnnhmxfecEb6NHjzbU5/nnn4+33noLANC/f/+o7Tu3\naW5uNtQnxcfZ37wA6AneBZRrA68TSMtMyJiIiKh3Samr8ZaWlsBrq9Uatb3N1lFe5eTJk4b6bGpq\nCrzes2cPBg4ciLfeegsXXnhhYPvs2bPxq1/9CldddRXq6uqwf/9+LFmyBL/73e909TVixAhDY0xJ\nOXbgqmXA81M6tnndwJDzlZXGZpv66lmd1lXvTWjwLgBMtQ9jJj8iIqLuNHQsBP8kQBQD9lUqq5bj\ncJ1BREREHY4cOYL7778/8H7p0qUR25tMJkyYMAETJ07Eeeedh6ysLBw/fhz/+Mc/sHHjRhw7dgxH\njhxBcXExXnzxRdx8882GxtWjnqVIkhLAocFU8SPchwWQIxTH4oJjIiIiohTl2BSaKdafAdfxqpKZ\n1j4z8jmcx0K3fVUVW/Cunz/IFbK+8wkm4Nx/Bfa90yko+VSw7tCxSiBSpPk/fxXPcFl0I1Xx1HEt\njbqtQMmKuD8fXFe9F78Q/xY1w6LagrwDTc6Ix5hNkechbd0YwEt9iyx0+b2R+2YAr91ux+uvvw5A\nWZh8xRVXhG176NAhHDhwAAAwdOhQDBkyxFCfBQUFgdf+xdORdG6jJeCXEkTP51NnlgzlM5OIiEiD\nPh/5IHVJW//0008HBe/65eTk4KWXXgq8f+GFF7jSqX+XSTSfC3j0NOCJ4cATw4Att8dUxkaSZFQ5\nGmMcZGRmUcCtRWcltA8iIiKKwuvUFLwLoGPVMhEREcWN2+3GjBkzcPjwYQDAtGnTMH369LDti4qK\n8O233+K9997DE088gblz52LmzJmYP38+Vq1ahW+//RY33ngjAECWZcybNw/fffddUr6XbuV1dpQw\njiJDaIcVka9/uOCYiIiIKAU1OsIHqAIdGXCjzY+1qQTwHvws9vH57dqiL+BINAPXrwFmvww8WA8s\naVC+Tl+lBNyKopJFMFrQrH0msGA7UDBbCV4ClK8Fs5Xt4QKbdVxLJ+L5oCTJeN3RgCnix5raTxU/\ngoCOOeZoGXjb3D6U19SH3W+zaA3gTdPUjig8IcK7vuOaa64JvK6qqorYtrKyMvB66tSphvucMmVK\nIAOyw+GA2x35mcCnn34aeG006y/FgZ7Pp87ypzERDRERaZZSnxhZWVmB1y6XK2p7p7Pj5iw7O9tQ\nn52Py8zMxM9+9rOwbQsKCjB+/HgAQHt7O95//31dffnLSIb78/HH2m4KU8b+D8Lv87qUlcZrJikr\nkQ1weX1weoyX9bFEWc1qFgWUzSpA/vB+hvsgIiKiODDbOh7oR8NVy0RERHElSRLmzZuH9957DwBw\n9tln4/e//33EY8455xzk5eWF3Z+dnY0XX3wRkyZNAqA841m+fLmh8fWoZyk6rmna5HS4EH7ynQuO\niYiIiFLUjhXRs9oGMuBGoJaB1+cxPq6u9AYc/aKqI7hWa7BuODl2JfBXLRA4nG5+Pujy+iB7nMgQ\n2jW177ogz+2VIrRWLN5Yi7oG9eRQGWnaiuYyAy/Fyh9AGngvR/+32xtdfvnlyMnJAQBs374dO3fu\nVG3n8/nw7LPPBt7fdNNNhvvMy8vD5ZdfDgBobW3Fn//857Bta2tr8eGHHwJQnrFcdtllhvulGOn5\nfPITTEr2eiIiIo1SKoB3wIABgdc//PBD1PZHjx5VPVaPgQMHBl7b7XakpUVeuXjRRRcFXv/zn//U\n1VdeXl7EP8OGDdM3+O7U6ADKNVx0aF1prMJqNmlecarmwhEDIq4avOfq81AyLtfw+YmIiChORBHI\nL9HWlquWiYiI4kaWZdx+++148cUXAQBnnHEG/vd//zfoWYlRJpMJjz32WOD9X//6V0Pn6VHPUnRc\n0/xwxhSYRPVnHlxwTERERJSi9JTRrtuqtA9HLQOvGMfgTL0BsbkXRW+nl55A4G5+Pmg1myBYbGiT\n0zW1j7YgT41XkrG+ep/qvnSztu+HAbwUM6Hr7LncLcPobiaTCcuWLQu8nzNnTqAqUWcPPPAAampq\nAACXXXYZJk+erHq+F154AYIgQBCEwGJmNU888UTg9b333ovPPgvNvH7o0CHccsstgfd33303bDYm\nNek2ej6f/C78v5EXrRAREXWRUtEPnVP/79unfgPTWec2RssGnH/++YHX/fv3j9q+c5vmZvVVkn2C\nlhXGflpWGqsQRQFT7Dm6j/P7+NumiLccz/z9q7ArXYmIiCjJJpQqpfoiEc1ctUxERBQnsizjzjvv\nxNq1awEogbLbtm3DmWeeGbc+JkyYAKvVCgD47rvv0NZmoORgT6PlmgYCzrikBBWLinDu0KygPSMH\nZ6BiUREXHBMRERGlIj1ZbT1tSvtwnE2h2waPMjYuNWOn97wF8934fFAUBVxjH44q6Sea2ldKl0A2\nMM1e6TgISQqdvRTFyFVF/QZkMICXYtX1323fDOAFgNtuuw1XX301AGDXrl0oKCjAsmXL8PLLL2Pl\nypWYOHEinn76aQBKMrnVq1fH3OeECRNw//33AwCampowfvx4LFiwAH/84x+xYcMG3H///cjPz8eu\nXbsAKMnlli5dGnO/FCNNz3o6aWlM3FiIiKhXSoG7sQ52e8cqlE8++SRi20OHDuHAgQMAgKFDh2LI\nkCGG+iwoKAi8PnHiRNT2ndtoCfjtlfSsMPaLttI4jPlFo2DWeNOqV6SVrkRERJRkOXZg+urwD0FE\ns7Kfq5aJiIhiJssySktL8bvf/Q4AkJubi7fffhtnn312XPsRRRGDBg0KvD9+/Hhcz5+Sol3TAABk\nYPNtyD/6JqZcELxw+YLh/Zl5l4iIiChV6clqa7Yp82Jqc2OSD3CpzEkOOV9fgFA4/iBXLQFHgpg6\nC+Y1PB+Upv0ObYPGqAbBxmp+0Sg8L10Ljxy5OqhHNmG9d4qhPpweH1xen6FjAWbgpTjokoE3MbPw\nPYPZbMZf/vIXXHfddQCAxsZGPProo7j55ptRWlqK6upqAMqC57/97W8YO3ZsXPp96qmnsGTJEphM\nJrjdbqxduxY///nPMXv2bPznf/4njh1TMrRPnjwZb775ZmBhNHWjHDswbZX2cPe92w3FxhARUd+V\nUgG811xzTeB1VVVVxLaVlZWB11OnTjXc55QpUyCculB1OBxwu90R23/66aeB10az/vZ4elYY+0Vb\naRxG/vB+KJtVkLAg3nArXYmIiKgb2GcCC7bjhOX0oM3fp58DLNiu7CciIqKY+IN3V61aBQAYPnw4\n3n77bZxzzjlx70uSJDQ1dWQWGzBgQNz7SEn2mcD1axFxKlTyAlsWIs+9N2hzm1tjtSMiIiIiSj49\nZbQlN/BUHvBkLrDldqDR0bHPeRyqWS8P1ioBtWFpmCvrugg+98eR248pTq0F86eeD6JgdkewtCUD\nx8+biafPXI2xr2Yjf9kbGPvQG7hnY03cKm3WNTRjXfVe7MFILPbcETaI1yObsNhzB3bLIw31Y7OY\nYDVHDhCO5K+fN7C6KMWmSwAv5L49T56dnY3XXnsNW7duxfXXX48RI0YgPT0dp512Gi655BIsX74c\nX3zxBS699NK49vv444/jH//4B+666y6cf/75yM7OhtVqxRlnnIGbbroJlZWVeP311zFw4MC49ksx\nOP9a7QHvXhdQ/2n0dkRERKfEYRln/Fx++eXIyclBY2Mjtm/fjp07d6KwsDCknc/nw7PPPht4f9NN\nNxnuMy8vD5dffjm2b9+O1tZW/PnPf8a8efNU29bW1uLDDz8EoFzMXXbZZYb77dH8K4z1BPFaMpTj\nDCgZl4tzh2ZjffU+VDoOwukxvjK1K/9K14y0lPpVICIi6rty7KgfeDH6H/5rYNNu6zjkpdJEAhER\nUQ/VNXh32LBhePvtt3HuuecmpL8PP/wQTqeymDcvLw8ZGRqzlfUGX7+JqKVIJS8KG14C0PFcq9Ud\nv2ceRERERJQAE0oBx6vKgqxIpFPXdZ42oHaDcsz01UqAqvOY+jFN34Y/X8HNgLMJ+Or18G0EUQl+\nzbEDjk3AloXRx5l3UeT93SHHDkxfBZSsALxOlO86hsWvOuCVZADKz9Xp8WHzznpU1DSgbFYBSsbl\nGu6uvKYeizfWnjo/UIFL8bU7F7eaqzBV/AgZQjva5HRUSpdgvXeK4eBdAJhqHwYxhqRFn3zbhOLn\nqmP+nqnvEkIy8DJLKACUlJSgpETjAg0Vc+fOxdy5c3UdU1BQEBTzQinObINktkHUmrTu+Skdn/tE\nRERRpFQGXpPJhGXLlgXez5kzB4cPHw5p98ADD6CmpgYAcNlll2Hy5Mmq53vhhRcgCAIEQcCkSZPC\n9vvEE08EXt9777347LPPQtocOnQIt9xyS+D93XffDZvNWEBqj6dnhbFf/jTlOIP8mXh3PTwZX/z6\nX2GzGF+d2lmsK12JiIgo/qT04LLRad6T3TQSIiKi3mXRokWB4N2cnBy8/fbbOO+88xLSlyRJQc94\n/CUp+wRJAurKNTU989DfgyZMnQzgJSIiIkptOXYlIEcvyQtsXqBk2T3wif7jJ5QC2TmR28gSMPAs\nJduvluBdADCncGl2UUTdD75OwbuhvJKMxRtrDWelrWtoDgre9dstj8S9ntsxtn09xrh+j7Ht63Gv\n5/aYgnfNooBbi84yfLxfrN8z9XVdA8j7dgZeIs1EEa0jrtDe/lTlpaAM/ERERGGkVAAvANx22224\n+uqrAQC7du1CQUEBli1bhpdffhkrV67ExIkT8fTTTwNQSi+uXm3gJrmLCRMm4P777wcANDU1Yfz4\n8ViwYAH++Mc/YsOGDbj//vuRn5+PXbt2AQAuuugiLF26NOZ+e7QJpdBUqgdQ2k24My7diqKALKsF\nU+xRHlJoFOtKVyIiIoo/Ob1/0HsG8BIREYWndfHyXXfdhZUrVwJQgne3b9+O0aNH6+5vx44dWLNm\nDVwuV9g2ra2tmDNnDt566y0AQHp6euC5S5/gdWquWmT2OWGFO/C+1a0hyIKIiIiIupd9JtDPQPZT\n2QesuRwoNzBntmOltmDb1sPAjhXagncBpYJmCpEkGW1uL6RTAbXrqveGDd7180oy1lfvM9RftPPL\nEOGEFXKMU+oCgLJZBcgf3i9qWy1i+Z6pjxOC/y0LjN8l0uzoWf9H3wGSV/n8JiIiisLc3QPoymw2\n4y9/+Qtmz56Nv/71r2hsbMSjjz4a0i4vLw+vvPIKxo4dG5d+n3rqKZhMJixfvhxutxtr167F2rVr\nQ9pNnjwZGzZsgNWawitSk2HoWMBkAXzu6G0BJftMHM0vGoWKmoaoN+2RiEBcVroSERFRnFmDA3it\nvtZuGggREVHi7Nu3D+vXrw/a9vnnnwdef/bZZyGLh6+88kpceeWVuvtaunQpnnvuOQBKucx/+7d/\nw+7du7F79+6IxxUWFuKMM84I2nbo0CEsXLgQixcvxtVXX40f//jHGDFiBDIzM3HixAns3LkTL7/8\nMo4ePRrob926dTjzzDN1j7vHMtuUQAgNQbw+kw0upAXeMwMvERERUQ9hNPBVNjivVbcVuHh+9HYn\nD2muBgEAMKcbG0+c1TU0Y131XlQ5GuH0+GCzmHDNBaej0tGo6fhKx0H8ZuaPdCXtkSQZVRrPH6ur\n809HybjwQd9bPvte9zmNfM9EgsAMvERGOa1D9B9UtxUoWRFTtWoiIur9Ui6AFwCys7Px2muvoby8\nHH/84x/xySef4PDhw8jOzsbZZ5+N66+/HgsXLkT//v2jn0yHxx9/HLNmzcL69evx97//HfX19fB4\nPBg6dCguvfRSzJkzB1OmTIlrnz2W16k9eBeysqL4qoeAib+KS/f5w/uhbFaBalkbrQRRwLrqvZhf\nNCpuK16JiIgodqJtQNB7m6+lm0ZCRESUOPv378fjjz8edv/nn38eFNALKIuejQTwVldXB17LsowH\nH3xQ03HPP/885s6dq7qvpaUFW7ZswZYtW8Ien5OTg3Xr1uHaa6/VNd4eTxSB/BKgdkPUpsfOnAp5\nV8ckTms7M/ASERER9QhykhdeedoA0RS9XfP3mqtBAADE7p8qLq+pD5nvc3p82PJZg+ZzOD0+uLw+\nZKRp/35cXh+cnuT8Peb0D58Yqq6hGfdurNV9TiPfMxG6BPAKiG8SLqLezOc0UC3S06bE1qRlxn9A\nRETUa6T0FX1JSQlKSkoMHz937tywE03hFBQU4NlnnzXcZ5+hI5uMQgbe+rXydeI9cRlCybhcmAQB\nd234LOLaQAGASRRCAn19kozNO+tRUdOAslkFEVe+EhERUfKYMoIX1mTKzMBLRESUKn7605+ivLwc\nH330ET7++GMcOHAAR48exfHjx5GRkYGhQ4eisLAQ1157LWbNmtV3KxhNKAUcr0YtXZzuOYExwn7s\nlkcCANqYgZeIiIioZ2jvhgXnx76N3sZ5XN/8nTW+yZL0qmtojilZj5/NYoLVHDnAWZJktLmV6/OM\nNDOsZhNsFlNSgnjTzeEzL66r3gufgW9fy/dMFCIkgJcZeIm0klzN+g+yZCixNURERBGkdAAvpTAd\n2WSCvPUIcO7VQI49LsPYtudw1NsKGUqwbjheScbijbU4d2g2M/ESERGlAHPGwKD3WQzgJSKiXmjS\npEmQjZbP7UTL4uXt27fH3I9fVlYWiouLUVxcHLdzVghknwAAIABJREFU9ko5dmD6amDLwohBvP2+\n+19UpL2NxZ47UCFdCq8kw+2VkBZhgp+IiIiIUkC7gSx8sdpdHr1NyxF983dpWbGNKUbrqvfGHLwL\nAFPtwyCKguq+uoZmPP3mHryz5wh8p+7BTKKASecNwaVnD8ZbXx6Ouf9oTGHGJkkyqhyNhs4Z6Xsm\nCkvocq/J+F0i7Yx89udPU2JriIiIIuAnBRk3odRAaR0Z2PZYXLrXc1Mb7d7DK8lYX70v9kERERFR\nzNKyggN4s9EKr5fZ6IiIiKiHsc8EFmwH0rMjNrMIPpRZVmGMsB8AAlnBiIiIiChF+bxKOexkkzWU\nuq8uA5xNgKgxM6ul+7ICxhK82plZFHBr0Vmq+8pr6nHdb9/Dti8PB4J3ASXxz1tfHsa2Lw8jGTGw\nmWnqfx8ur89QBuBI3zNRZMzAS2SU3CWAN+pvj2gGJtyZsPEQEVHvwQBeMs6fTUbQWZ7lq9eB2pdj\n7t7oTW04lY6DkOKwypeIiIhiY80ODuA1CxLa2gyUJiIiIiLqbjl2TVnNLIIPt5qrAABtbi5cIiIi\nIkpp7m7IvquV5FXm4SQNwb5AtwbwxmOezywKKJtVoFphs66hGfe8UoNIU3/yqT+JjuG1paknRLKa\nTbBZ9M2zRvqeiaISugbwavy/goggdPn8/8Z8bviEd6JZiaWJU2VqIiLq3RjAS7GxzwQWvB1abiOa\nLQuBl24EGh2GuzZyUxuJ0+ODi9n9iIiIul169uCQbc6TTd0wEiIiIqIYSRLQqq0k71TxIwiQmIGX\niIiIKNW1t3T3CDTQmLDGkpHYYUSgZ57PrJImd9LoIahYVISScbmqx6yr3gufhh+DLANZVr0VR/VJ\nN6vPo4qigCn2HE3nEAVgRmFexO+ZKBpBSELKaaJeSnAHf/4ftIxUKi8VzO74PLVkKO8XbFdiaYiI\niDRgAC/FblgBYJ+l/7ivXgfWTAIcmwx1q+emVgubxQSrOX4BwURERGRMRtaAkG3tDOAlIiKinsjr\nBCRti4UzhHZY4WYGXiIiIiKjJAlwt2rPPmtUewpn4NXLYu22rvXM8xWMCH1eeNvEUWGz0EqSjMrP\nD2oeS4srsYvo0iMEKs8vGqUaoNyZSQAqFhUx8y7FrmtSLpnVaYm0MnmCA3jd5sxTVatXAQ/WA0sa\nlK/TVzHzLhER6cIAXoqPSxfBUIEZyatk4zWYiVfLTa3WUU21D4MY5VxERESUeBaLBSfl4PJ97pZj\n3TQaIiIiohiYbYBo0dS0TU6HC2lobWcALxEREZEujQ5gy+3Ak7nAE8OVr1tuj6kKZES9KoC3+zLw\nAtrm+cyigEtGDQrZ7oyw8M3l9cHl1R7InegQxlc/PYC6hmbVffnD+6FsVkHYn4NZFPDMjeNwQW7/\nRA6R+gihy8y5kPB//US9h6lLBl6PKbPjjSgCaZnKVyIiIp346UHxkWMHrnrI2LGSF9ix0tChWm5q\n75s8WtPN/61FZxkaAxEREcVfixA8eeBhAC8RERH1RKII5BZqalopXQIZItrcic3+RURERNSrODYp\n1R5rNwCeNmWbp015H0MVyAC1rL7u3hLAKwCmtLieUZJktLm9kCRtQYFa5vnKZhVgUEboOJ2e8AG8\nVrMJVnPqTIN/8m0Tip+rRnlNver+knG5qFhUhBmFebCdytZrs5gwozAPFYuKUDIuN5nDpV5MFrr+\nrjGAl0grs7c16L3XkhmmJRERkT7m7h4A9SITfwXIErDtEf3H1m0FSlYYWpFUMi4X5w7Nxvrqfah0\nHITT44PNYsJU+zDcWnQW8of3Q+5AGxZvrIVX5YGB/+afJWeIiIhShwfBD+VHv1sKNL0NTChl6SEi\nIiLqWS6YARz4KGITj2zCeu8UAEBbhExiRERERNRJo0Op8iiFWQDlrwI5ZLT+50mNDmDHCqCuXAkI\ntmQA+SXKs6nuyMArmABBBCRP/M5pyQBCgvmMqWtoxrrqvahyNAbm6abYczC/aFTU+Tf/PN/UZ98L\n2Ve+6DKMHd4fz237OmRfpABeURQw9UfDsHmnesBsd/BKMhZvrMW5Q7NVfyb+YObfzPwRXF4frGYT\nK4dS3AldfudFBvASaRYSwGvO6qaREBFRb5M6Sw+pd/iXxcB51+g/ztMGeJ2Gu/Xf1O56eDLqHpmM\nXQ9PDgrKLRmXi/JFl4U8h7jy/KFcuUpERJRqHJswAgeDNomSJ36ZU4iIiIiSKfeiiLu9MGGx5w7s\nlkcCADPwEhEREWm1Y0X44F0/I1Ugo2X1/ed2A4M1yJQGFMwGFr4DnHNVfM9tscXlNOU19Sh+rhqb\nd9YHgmqdHh8276yPmHW2s3BBvnkDMwLn68oZZeHb/KJRMGmIf01mjKxXkrG+el/ENqIoICPNzOBd\nSoiuAbyQGcBLpJWlSwCvz8IAXiIiig8G8FL8XbFE/zGWDMAc+4OCSDe1Y4f3x+nZ1qBtPxt/BjPv\nEhERpZJTmVPCPp72Z05pdCRzVERERETGtR0Nv+/cyfiPIb9FhXRpR3Nm4CUiIiKKTpKU7Lha1G1V\n2muhJavvZ3/Udq54kHzAhDuVDMIX/t/4njstI+ZT1DU0h62ACXRkna1raI56LrV41eNtbgCAyxP6\n9xcpAy+gBAU/c+O4qH3OKzor6ti6iiW0ttJxEFKYnxdRwgnB4SECM/ASaZbmCw7gldMYwEtERPHB\nAF6Kv8Hn6D8mfxogJv6f46DM4HLcR1vcCe+TiIiIdEhU5hQiIiKi7uDYBLx8c/j9p4/F0azzgjYx\ngJeIiIhIA6+zIztuNHqqQGp5NiVrDAaOB9nX8Rwsxx7fc1tiD+BdV703bPCun5ass3KYLKBNbR4A\ngMtABl5AqdB55flDVfeNHJyBZ2+6EDv3N0U9T2dmUcB9k0fDbDBDrtPjg8vLa37qHiEZeBnAS6RZ\nuhQcwCsxgJeIiOKEAbwUf2abvpt+0aysHk6CwVldAnhbGcBLRESUMiQJ0q6t2pru2qI9cwoRERFR\nd4iWvQ0A3v8fnCN9G7SptT1KwAgRERER6ZuL0loFUk9W32TyZxA2W6O31cMSW2VMSZJR5WjU1DZa\n1tl2rwS13U2nMvCqZdtVC+pVEy7M9szBmfjlKzXY+d1xTecBlODdslkFuPOKc1CxqAgzCvNgs5g0\nHw8ANosJVrO+Y4jiR+jyjgG8RJo0OpDpC84m/5ODL7FaJBERxQUDeCn+RBHIL9HYWACmr47/quEw\nBnfJwHuMAbxERESpw+uEqDEbiuh1as+cQkRERNQdNGVv8+HqE5uCNjEDLxEREZEGeuaitFaB1JPV\nN5n8GYQtYQJ4BQ3fm2gO3RZjBl6X16caWKsmWtbZcIvYjp8K4G33hC7k19r3CadHdfu7Xx+Jmj3Y\nL80kYkZhHioWFaFkXC4AIH94P5TNKsCuhyej7pHJuP7CXE3nmmofBtFg9l6imHX5/0JkAC9RdI5N\nwJpJIb8vZzW9D6yZpOwnIiKKAQN4KTEmlKo/DOhq5u8B+8zEj+eUQZnpQe+PtjCAl4iIKFVIJiva\n5PToDQG0yemQTHHOOkJEREQULzqyt9mbt0NAR0BCa7t6gAERERERdaFlLkpPFUi9FSaTxZ9BOFwG\n3kkPAuf/n8jnuObJ0G0xZvS1mk2as89GyzobbhFbU6tybayWbdepceFbuABeWUfcok+ScGvRWcgf\n3i9knygKyEgzY/7EUTBHCcw1iwJuLTpLe8dE8SYweJxIl2jVlSSvsp+ZeImIKAYM4KXEyLErmXUj\nPTix3wBccH3yxgRgcFZwBt6jre1J7Z+IiIjCc/lkVEk/0dS2UroELh+zAxAREVGK0pG9LU1ywYqO\nBcabdzbgno01qGtojnAUEREREUWdixLN2qtASpJyDTemOL5jjAd/BmFTmvr+YQXAjLWRz3Ha6NBt\nWjL3RiCKAqbYczS1jZZ1ttUdJgPvqeBbtey9WjPwHg8TwKuHTwbWV++L2MafkTdcEK9ZFFA2q0A1\nCJgoWQS133s90exEfY2W6kqSF9ixMjnjISKiXokBvJQ49pnAgu1AwWz1FcsDzkj2iDA4s0sAbwsD\neImIiFKF1WzCn3AdPHLkzB0e2YQ/ydciTUvpQyIiIqLuoCN7W5ucDhc6nlf4ZBmbd9aj+LlqlNfU\nJ2qERERERL2DfaYSpNuVbaAyRxWtCmSjA9hyO/BkLvDEcKBuayJGaVznDMKCAJhUqldlDAYsNsA2\nKPx5Bo0K3SZLodt0ml8Un6yzre3qwbjH25SFbmrZdtWy8qoJl4FXr0rHQUhS5EDHknG5qFhUhBmF\neYHsxDaLCTMK81CxqAgl43LjMhYiw9Qy8DKAl0idjupKqNuqtCciIjKAUQ+UWDl2YPoq4MF6YNzP\ngvc5jyd9OK3twaujvqhvDspqI0ky2tzeqDfgREREFH+iKGCUfTwWe+6AV1a/TPXIJiz23IFa7wjY\nH36T2emIiIgoNYkikF+iqWmldAlklUd0XknG4o21vNYhIiIiisY2IHRben8laDVSMI1jE7BmElC7\noaN6gteVkCEaNm1VcAZhtaDbjFOBu/3DBIea04HmhtDtcQjg9WedNcWYdbalXT3I9lirEsDr8oSO\nVUsGXpfHB7c3PgFVTo9PNRNwV/6fya6HJ6PukcnY9fBkZt6llCFALYCXQYdEqnRUV4KnTWlPRERk\nQJiaMkRxJopA1pDgbc6mpA6hvKYeT1R9GbRNBrB5Zz3KP6tH4ciB+KK+GU6PDzaLCVPsOZhfNIo3\n1EREREk0v2gUimsuw/fu07A5/ddB+6p8F+NZ7/XYLY8EoDw037yzHhU1DSibVcAMFkRERJRaJpQC\njlcjllqUZAHrvVPC7vdKMtZX70PZrIJEjJCIiIiod2g9Grrt+LdKRl1LhrKwakJpcCBsowPYsjB6\nWezudv61we8llUDXjMHK13DBx9524HmVa87DdcrPofPPxYCScbnIsJhw25/+EbT9vNOz8N83Xhhx\nnq2uoRnrqvfir7UHVfdXOg7ino01OOFyh+xzun2QJBkurw9pogi3JMFqNkHsFEx8vC0+2XcBJZOu\n1Ry5clhnoiggI41T8ZRaBNVgeya2IlLlr66kJYjXkqG0JyIiMoAZeCl5bAOD37uSl4G3rqEZizfW\nwhcms65PBj75timwWtcfEMRylURERMnlz1DxuXAenHJa0L613msDwbudMTsdERERpaQcu1LOWQw/\nab9LPlP1+qYzLaV6iYiIiPq0th/C7/O0KRl210xSMu767ViR+sG7WoOB0vsB7/0X8MPX4dvIKplj\nWw6F/lwMyhuUEbJt/KjBEYN3y2uUebjNO+vh9qlnAJVkJRFPfVNocPI/j7RizLLXkb/sDZyztAr5\ny97AmGWvB1XsOuEMH8CrnjM4vKn2YUHBwUQ9kVr1F8i83yRSpaO6EvKnKe2JiIgM4CcIJY+1Swkj\nZ/ICeNdV74XXwGQXA4KIiIiSr2RcLioWTUST0D9o+2nCibDH+LPTEREREaUU+0xgwXagYLYSgNFF\nixw9IENrqV4iIiKiPqs1QgCvn+RVMu42OgBJAurKEz+uWGkNBjr0BfDWw8b66PxziUG7NzQAt6U9\nfIC0P/GOkbk7vxNOT0i/7V4pKEFPpADeUadlwqwxINcsCri16CzDYyVKGQIz8BLpMqE04sJsAMr+\nCXcmZzxERNQrMYCXkqdrBl5nU1K6lSQZVY5Gw8czIIiIiCj5vj58Eoel4Awdg4XIC2qYnY6IiIhS\nUo4dmL4KeLAeuPa/gnZlCdHLMOot1UtERETU57Qd1dZO8gI7VgJep7Zy2PEmmoHr1wK3/t1YMFC4\nINu3HkVMAXj+n0sM2j2hC85aXOEDeI0m3tHKn6DH8X34ZELZNgvKF10W9VxmUUDZrIKI2YSJegpB\nLYBXVs+ATUToqK4khAmtEs3K/hx7csdFRES9CgN4KXlsXTLwupKTgdfl9cGp8uBADwYEERERJY8/\nA8cRuUsGXoTPwAswOx0RERGlOFEEMk8L2pSJ0FLAXbFULxEREVEUWjLw+tVtBUzpqtUR4sZsBQae\npXwFlL4KZiuVGX40CxjxEyXYJ1wQr1owkGMTsGaSevuv34h9zHVblczEBunJwBtr4h2tvJKMyi/C\n9+PxSTh7SFbIdqtZmT63WUyYUZiHikVFKBmXm7BxEiWTegAv58CJIrLPhDTqiqBNHtmE5tE3KJ/t\n9pndMiwiIuo9oizvJIqjkAy8x5WHAVrK/8TAajbBZjHFFMTrDwjKSOOvDBERUaL5M3AcFYOzWpwm\nRF78w+x0RERElPLSgwMEsgVn1EPOHpKZqNEQERER9Q4th7W39bQpFSLHFAOfvxzfcQgmYN7rQO5F\nytyXJCnZfs220Lkw+0xgyGgl823dVmVclgwgf5qSebdz8G6jA9iyUMmUmyieNmWsacauPdUCeE+G\nycAbj8Q7Wu38Lnw1ULdXQrsndNzb7p2EARkWWM0mLqSj3kc1iygDeImikX3Bn2nLvTfi55PL0G9Q\nAhcEERFRn8EMvJQ81i4ZeCED7ZFLYceDKAqYYs+J6RwmQcC+I62QJBltbi+z8RIRESVI5wwcXT9t\nbzFtQ5llFcYI+1WPnWrP4UN1IiIiSm3pwQuUBpjaox7yzN+/Ql1D4p+fEBEREfVIjQ7gyG59xzx9\njhI0izg+RxLNwPVrlOy6/mBdUVQCYsMlssmxA9NXAQ/WA0salK/TV4WW4d6xIrHBu4ASPGy2GT7c\npRKQGy4Drz/xTjJESizq8UmqgcQZaSZkpJn5nJF6JUHt/z1m4CVSJ0mAuxWQJLhOHAradUzuhyer\ndvN5DRERxQXTiVLydM3ACyirnG1dA3vjb37RKJR/Vg+fwfsPnyzjut9Ww2IS4fZJsFlMmGLPwfyi\nUcgf3i/6CYiIiEgTfwaOYvEDzDK9E7TPLEiYYXoPxeIHWOy5AxXSpUH7bxl/RjKHSkRERKRfenbQ\nW4vkggk++BA+gMErySh7cw/Wz7040aMjIiIi6lkcm4xnpvW64jMG0QLYbwjNmqvrHGL4zLeSBNSV\nGx+fVvnTYqqYqScDrz/xzuad9Yb7i4c2t0818NiapOBiom6hFpguh/7+EvVpjQ5l8UxdOeBpg9dk\ng+j1Bq37OYZ+2O5oxJu7DqFsVgFKxuV233iJiKjHYwZeSp5jexGymrnqfuUCKMHyh/fDkzMMPjg5\nRQbg9ik3ME6PD5t31qP4uWqU13TvAwYiIqLexGo2YZzlAMosq2AS1FfeWARfSCZei0nAuDyVxUJE\nREREqSQtK2RTJpxRD3vry8PY+hmfPxAREREFNDqMB+/GU95FsQXvRuN1Ap62xJzbTzQr30MM2r1q\nGXg9YdvPLxoFczdnuD3h9MDVZdyCAKSbOX1OvZcgqP37ZgZeogDHJmDNJKB2Q+Dz1+xzwiYEf6Yd\nlZUkb15JxuKNtczES0REMeEdCCWHYxOw9gqE3AB8/YZyAeTYlPAhzCwcEfebbl6QERERxZcoCviP\nQdtgEUIf+ndmEXy41VwVeF9ckMuydkRERJT6umTgBYDTcAIComc8uvdVPn8gIiIiCtixovuDdwHg\nux2Jnecy2wBLRuznUQ3agxK8O311zAHI7Z7Q61mXR4LHp36dmz+8H8pmFXRN+5NU7V4Jbe7gZ5Dp\nZhGCwGeM1JupZeBlAC8RAF2Lg5rQ8XzHK8lYX70vkSMjIqJejgG8lHjRLnQkr7I/wZl4RVHAtT8a\nFvfz8oKMiIgojiQJP259V1PTqeJHECDBLAq4teisBA+MiIiIKA6OhT4/2Ga9D7vTfxFSYaArPn8g\nIiIiOkWSlLLWqSKR81yiCOSXaGt73hSgYHZHwK/ZBvzoZuD2amDhu8H7LBnK+wXbAfvMmIfZ7lUP\n1G1tDx8EVTIuFwUj+sfcdyyancEZFa0WUzeNhChJVAPUGcBLBEDX4qCjcvAC7UrHQUgSf5eIiMgY\nBvBS4mm50JG8wI6VCR/K/KJRMCVg4SwvyIiIiOLE64TojV5GGgAyhHZY4UbZrALkD++X4IERERER\nxcixCVh3peouq+DBDNN7qEhbimLxg7Cn4PMHIiIiIgBeZ6CsdcpI5DzXhFIlU24kohm48j+A6auA\nB+uBJQ3Kn+t/p2TXzbEH73uwXnkfY+Zdv3avejWtk67I84NmsXunqn1dMo9azQzgpd5NVPudYwZe\nIl2Lg2QZcCEtaJvT44MrzGchERFRNAzgpcTSswq6bqvSPoHyh/dD4ciBcT8vL8iIiIjiREdZQFkG\npllrUDIuN8GDIiIiIoqRxjKMFsEXMRMvnz8QERERQdfzo6RK1DxXjh2Yvjp8EK9oVvb7g3FFEUjL\nVL6GtI2wLwbhMvBGC+ANd1yyuD3B/dvSGMBLvZxaBl4G8BLpWhwkCIAV7qBtNouJi0CIiMgwBvBS\nYulZBe1pU9onkCTJ+KK+Oe7n5QUZERFRnOgoCygIwCPyisSUJyQiIiKKJx1lGC2CD7eaq1T38fkD\nEREREXQ9P0qqRM5z2WcCC7YDBbM7gpctGcr7BduV/d2o3aMeiNvSHvka+MhJVyKGo1nXAON0M6fO\nqXcToFaqlgG8RDDbAFNa9HZQYt7PEg4GbZtqHwZRTEApaCIi6hN4F0KJpXcV9Ie/S9xYALi8Pjg9\n8c9UM9U+DADQ5vaylCUREVGstJQFPMUi+CDvWJHgARERERHFQE91olOmih9BQGgQBCeEiIiIiE7R\n8fwoaSwZyrxYouTYgemrgAfrgSUNytfpqzoy73aj9jBVIlraPWGPqWtoRmNze6KGpEmzK3h8VgsX\ny1Evp5Z9mxl4iYDDuwBf+M+szgQBKE9bhmLxAwCAWRRwa9FZiRwdERH1cgzgpcTSuwp62yPAe88k\nbDhWswm2ON98mwTgeJsbYx96A/nL3sDYh97APRtrUNcQ/0y/REREfUKOHZi2Snv7uvLElCckIiIi\nigc91YlOyRDaQ8oxckKIiIiIqJMcOzB9NaCaTbKb5E9TD46LN1EE0jKT05dG7V71Z3NdM9x2tq56\nb6KGo1lzl/FZLanzMyVKBEFgBl4iVTtWQM/vgkXwocyyCheYvkPZrALkD++XuLEREVGvx7sQSjy9\nq6DfeiRhpbBFUcAUe078zicol3FvfXk4kNnX6fFh8856FD9XjfKa+rj1RURE1Kecf63mpkIiyxMS\nERERxUpvdSIAbXI6XOgo3WgWBU4IEREREXVlnwmcN9n48f1yAdug+IxFNAMT7ozPuXqgcAG8XTPc\n+kmSjCpHYyKHpEmzkxl4qa9Ry8DL5BjUxxmonAQoQbx/HvspSsblJmBQRETUlzCAlxJPbxY9yKdW\nOCXG/KJRMMeh3ORV5w+FIAiQwizE8koyFm+sZSZeIiIiI3QEukhmW2LLExIRERHFQm91IgCV0iWQ\nTz22u/ZHw1CxqIgTQkRERERqhBgCLjOHAM6m2McgmpVswDn22M/VQ7WfSnLT1SOv1alWrXR5fYHE\nON2pa4Cx1cwAXurdVDPwyszAS32cgcpJfgP2VbJCJBERxYwBvJQcOrLoAQDqtibsQid/eD+UzSoI\nG8RrFgXMuigv6nmyrGb4wkXvnuKVZKyv3mdonERERH2ajkCXlnOuS6mSgUREREQhdFQn8sgmrPdO\nCbz/98mjmXmXiIiIKBzXCePHHqxBTKXjLTagYDawYLuSDbgPC5eB1+OTVatWWs0m2FIg2+1Jlzfo\nvS2t+8dElEiC6mN0BvBSH/fl34wfywqRREQUB4x0oOTQmxnP40zohU7JuFxULCrCjMK8wAMCm8WE\nGYV5qFhUhJ+OOT3qOd7Ypa20T6XjIKQogb5ERESkQkOgi0c24XD+rUkaEBEREZFBOXYlK1uUaxtZ\nMOHffbdjtzwysK21vfszkxERERGlrHhk0DXCkgU8WA9MX9WnM+/6HW1pj7i/a9VKURRwzQU5yRha\nkK6pfY63uYPeWy2cOqfeTYBKkDoz8FJf1ugAtt5h/HhLBitEEhFRzHgXQsmht1yk2aZk4E1guQF/\nJt5dD09G3SOTsevhySibVYD84f0wOCst6vEuj7axOT0+uLycbCMiItItx45PC5+ER1bPfOGRTVjs\nuQNN/UYneWBEREREBthnKtnZCmYDZqtqE0H24UnzGpRZVmGMsB8A0Or2qrYlIiIiIgDOY93TrygC\nh+u6p+8UVH88elIeryRj3Xt70eb2QpJk/Gz8GUkYWYcRg2xIMwdPjX/ybXAAeLqZGXipd5MFtQq1\nDOClPmzHCkCK4blL/jRWiCQiopjxk4SS59JFCF3bGobPDTyVBzyZC2y5XVn5lCCiKCAjzQxR7Bjb\noMz0qMelm7X9+tgsJlh5w09ERKRbXUMzbvogD8Xux9AsBwe5+GQB70g/wtdyLr48eLKbRkhERESk\nU45dydJW/FtAUH9WYIUHM0zvoSJtKYrFD9DazgBeIiIiorC6ZuA95+rk9NveDKyZBDg2Jae/FCZJ\nMo47PZrabv6sHvnL3sDYh97A8+9/m9iBdTFyUGbUWcoDTW1JGQtRdxHVAg3lxCXUIkppkgTUlRs/\nXjQDE+6M33iIiKjPYgAvJU+OHbjqIW1t5VMZaz1tQO2GpD8E0ZKB1+PTdjMz1T4sKDiYiIiItFlX\nvRdeSca5Qj2yEFyGzyTI+KnpM1SkLUXTRy920wiJiIiIDPCXZ5QjV+uxCD6UWVbBdHhXkgZGRESU\nOBUVFbjhhhtw5plnwmq1YujQobj00kvxm9/8Bs3NzUkZw9y5cyEIQuDPr3/966T0SwnkcQJeV/C2\nn/46ef1LXmDLwoQmoekJXF4fZJ0JPJ0eH/76+UHVfVaNCXT0kmUZLm/kub23vzyMuobk/J9ElDL0\n/gIT9RZepxKPYoAsiMD01UoMDBERUYwYwEvJNfFX2oN4O0vyQ5DsdDMspshBt5KGexmzKODWorPi\nNCoiIqK+Q5JkVDkaMUbYjzLLKoiC+gevRfBBJgLRAAAgAElEQVThjqanITV8nuQREhERERmkozyj\nRfBhxJ7nEzwgIiKixGlpaUFJSQlKSkqwadMm7N+/H+3t7Thy5Ah27NiBf//3f8cFF1yADz/8MKHj\nqKqqwh/+8IeE9kFJIkmAu1X52nYsdH92DmDJSOJ4vMCOlcnrL8VIkgxJkrXW34xq5//7Kb749WSk\nmeI/hV1/3Bm1jSQD66v3xb1volQhCGq/WwzgpT7KbIvhmkEAhoyO63CIiKjvYgAvJd/Ee4DzrtF/\nXBIfggiCgH5WS0znMIsCymYVIH94vziNioiIqO9weX1wenyYb66ERYienU7asSJJIyMiIooPn8+H\nL774Ai+88ALuuusuTJgwARkZGYGMcHPnzk1Y3/HMgPfNN9/gvvvuwwUXXID+/fsjKysLo0ePRmlp\nKWpqahL0HfRgBsoz5ja8oRxHRETUw/h8Ptxwww2oqKgAAJx++ulYunQpXnrpJTz33HO47LLLAAAH\nDhzA1KlTsXv37oSMo7m5GQsXLgQAZGZmJqQPSoJGB7DlduDJXOCJ4crXv93TpZEA2AYCw8Yld2x1\nW/vc9VpdQzPu2ViDsQ+9gQt+/Wbcwv8GZqThq8Mtmqtg6vF9U/QAXgCodByEpCWLD1FPpFY1lhl4\nqa8SRSC/xNChguzr0wt4iIgovszdPQDqgyQJ2PeusWPrtgIlK5SLqc7n8zqVFVJifGLSy2vqcbTV\nbfj4807Pwn/feCGDd4mIiAyymk3IsAiYIn6sqb3pywpAWhW3awEiIqJEmzVrFjZv3pzUPltaWnDL\nLbcEgmj8jhw5EsiC99vf/hYbN27E+PHjo55vzZo1+OUvfwmnM3gi/KuvvsJXX32F1atXY9myZVi2\nbFlcv48ezUB5RovkUo5LY8ARERH1LOvWrcPrr78OAMjPz8e2bdtw+umnB/aXlpbi3nvvRVlZGZqa\nmrBw4UK8+67BuYMI7rvvPhw4cAAjRozADTfcgGeeeSbufVCCOTYpVRo7VzHwtAFfvR7cztofOFwH\nHPgouePztPWp67Xymnos3lgLb5yDXM2ikmBnXfXehOQD1Tpep8cHl9eHjDROo1PvI6pl4JX71gIE\noiATSgHHq5orJQVRi10hIiIygJ8klHwGJqsC/A9BAPXV1ltuV7bHoK6hGYs31sZ0jguG948avCtJ\nMtrcXq7iJSIiUiGKAorHDkSG0K6pvdD5GoGIiKgH8PmCM8wPGjQI5557bkL7i2cGvD//+c9YuHAh\nnE4nRFHE7NmzsX79evzhD3/AggULkJ6eDp/Ph4ceegjLly9P2PfV4xgoz+gRrcpxREREPYjP58PD\nDz8ceP+nP/0pKHjXb/ny5Rg3TsmW+t577+HNN9+M6zi2bduGtWvXAgBWrlyJ7OzsuJ6fkqDRERq8\nG05aJrBjBSBHruYUd5aMPnO95p9Di3fwLgB4JWDLZ9+jytEY93MDgMWkknlUhc1igtVsSsgYiLqf\ntt8Doj4jxw5MXw2IBhZtcF6KiIjihAG8lHwGJqsC/A9BHJuANZOA2g0dwcCeNuX9mknKfoPWVe+N\n+cHDDy3hg406lxXKX/YGxj70Bu7ZWIO6Bn1lSomIiHq7ORPHoE1O19a4D02UEBFR7/CTn/wEDzzw\nAF599VXs3bsXR48exZIlSxLWX9cMeLW1tXj00Udx8803o7S0FNXV1Vi8eDEABDLghXPkyBGUlpYC\nAERRxJYtW/Diiy9i3rx5mDNnDlavXo3t27cjI0O591+6dCn27NmTsO+tRzFQnnHXwCuZzYWIiHqc\nd999FwcPHgQAXH755SgsLFRtZzKZcPfddwfeb9iwIW5jaGtrw2233QZZlnHjjTfiuuuui9u5KYl2\nrNCeFa+5Pqb5IcPyp/WZ67V4zKFFcu/GWjg9iQnALsgboKndVPswiCKDHKmXUvu3LTPZFPVx9plA\n8Qrdh3lNNs5LERFRXPSNu0lKLQYmqwLypwGHd0VebS15lf0GMvFKkhyXlb1NbW7V7eU19Sh+rhqb\nd9YHHkA4PT5s3qlsL6+pj7lvIiKi3iI/dwB+OOMajY37zkQJERH1DkuWLMGTTz6JmTNn4qyzzkpo\nX/HOgPf000+juVlZhFpaWori4uKQNuPHj8ejjz4KAPB6vUH993kTSjVndvHIJmwfcEOCB0RERBR/\nVVVVgddTp06N2HbKlCmqx8XqwQcfxN69ezFo0CD8z//8T9zOS0kkSUBduc5jPIkZSziiGZhwZ3L7\n7CbxmkOLxCcDpgQFz061D4uae9QkCLi1KLH3Z0TdSRTUnqEzgJcIafoT0JW7L0ZdY0sCBkNERH0N\noxyoe+iYrAoQROUhiJbV1pIX2LFS97BcXl9cVvYeaw19QBStrJBXkrF4Yy0z8RIREXVyxrX3QRYi\nXzP4YOozEyVERERGxDsD3iuvvBJ4/atf/Spsv7fddhsyMzMBABUVFXA6WVYQgObyjB7ZhMWeO/CN\n6czkjIuIiCiOHI6OBBsXX3xxxLY5OTkYMWIEAODQoUM4cuRIzP1/8MEHeO655wAoi4/UFi9RD+B1\ndlRhTEWiWbmuy7F390iSwugcmllvQG6CYgkz0004Z2hWxDZ3XnE28of3S8wAiFKBWgCvLCV/HESp\n5mTwApVoH0Ue2YR13ilYX70vcWMiIqI+gwG81D00TlaFeP+3wK4t2trWbVVWZ+tgNZtgs5j0jUnF\nsdbQDLxaygp5JZkXeURERJ3l2CFcH/6awSOb8KdhS/rMRAkREZER8cyAV1dXh/379wMAxowZEzF7\ncHZ2NiZOnAgAaG1txTvvvKNr3L2afSawYDtQMBswW0N2fy0NR7H7MVRIl6K1XWPJaCIiohSyZ8+e\nwGst1QY6t+l8rBEulwvz5s2DJEm46qqr8Itf/CKm86n5/vvvI/7xL56iGJltgEV/RjzdBAMZXwtu\nVq7n7DPjPZqUZXQObel1Y3S198my/qBfDf77f79GP5slYpufjmGwP/Vugtr/dzIz8BLhZPC1W610\nDjyy+meef8H1bnkkKh0HIUWJASEiIoqGAbzUfewzgdu2AVEL1pwiS4DjFcDr0tbe06asztZBFAVM\nsefoOkaN0+NDm7tjgk1PWSFe5BEREXXhD3AZNCpo8zfSMBS7H0O1dVJ3jIqIiKjHiGcGPD3n6tqm\n87GEU4ubVwFLDgKX3h2065/ycOyWRwIAWt2xVwoiIiJKtuPHjwden3baaVHbDx48WPVYI5YtW4Y9\ne/bAZrNh9erVMZ0rnBEjRkT885Of/CQh/fY5ogjklyS+n/zpgKAzMPXasj63oNzoHNpTlV/qam+z\nmPD0DQVhg3hNAnDxyAG6x3HwhAs79zdFbGONQ5IfolQmqM7Lc16aqGsA707pHBS7H8Mm37+gTU4H\nALTJ6djk+5fAgmtAiQtxefnchoiIYsMAXupejV8gYTcFggn44Rvdh80vGhWXlb1HWzqy8OopK8SL\nPCIiIhU5dmDs9KBNe+QR2C2PhMtA6T4iIqK+JJ4Z8Lozm16vJYqAOT1o07+K/0CZZRXGCPuDFggT\nERH1FC0tLYHXVmtotvmubDZb4PXJkycN9/vJJ5/gmWeeAQA8/PDDOPvssw2fi1LEhFL91Rz1aj4I\nXL8GEDUGb1oylOzAfZCROTSXV1+1zKn2YZh2YS4qFhVhRmFeIOuvzWLCjMI8vHbXRPzh1kt0ndMv\n2oyk1cKpc+rdBFHl3zgz8FJf1+gA/rktaNMlJuUZ1r2e2zG2fT3GuH6Pse3rca/n9sCCa0D5bLKa\nufiDiIhik+A7XqIIGh1AxV2JO7/sA9ZdCUxfrauEUf7wfiibVYDFG2vhjSET7rLyL3Df5PORP7xf\noKyQliBeXuQRERGFkTk06O1pQjMAMKiFiIgoinhmwEt2Nr3vv/8+4v5eUZ7asQl475mgTaIgY4bp\nPRSLH2B5yy8BTOyesREREfUgbrcb8+bNg8/nQ2FhIe65556E9XXgwIGI+w8ePMgsvPGSY1fmeTbf\nplRq1MpsVRaD15UrFRstGcCwccB3OxASxnlgB1D/CZB3CfDdB9HPnT9NWYTVB/nn0P7t5ZqEnN8s\nCri16Kygvn4z80dweX2wmk0QTwUPS5Ksed5ND2bgpd5OEABJFiAKnf8fZAAv9WGOTcCWhYAUPM80\nVtiHirSlWOy5AxXSpXBCfUHaVPuwwGcTERGRUQzgpe6zY4USZJtIkle54BoyWlcpo5JxuTh3aDZm\nrd6BlnZjQUFv7zmC977+AWWzClAyLhdT7DnYvLM+6nG8yCMiIgojMzhI6DScAAC0saw0ERFRRPHM\ngJfsbHojRozQfUyP0uhQnluEeT5iEXx4oP2/gcbpfa5EMxER9WxZWVloalJK1btcLmRlZUVs73Q6\nA6+zs7MN9fnYY4/hiy++gMlkwtq1a2EyJS4QLy8vL2HnJhX2mUD9P4APV2o/Zuz1wPRVQMlKwOtU\nKjauuxJhA9UkL3DgIyULrxThWZNoBibcqWv4vU3JuFw88BdH3INnBQBlswqQP7xf0HZRFJCRZg7Z\npnXeTQ8m2KHeToDK/4J6FkcQ9SZfbAb+Mh/hrg0sgg9lllX42p0blHXXr/OiEyIiolj0zeWh1P0k\nSVn1nJS+vMAOHQ91Tskf3g8Fef1j6toryVi8sRZ1Dc2aygrxIo+IiCiCrOAMvINPZeDd03gS92ys\nQV1Dc3eMioiIiMi4HStCsrx0ZYbP0HMNIiKi7jRgwIDA6x9++CFq+6NHj6oeq1VtbS2eeuopAMA9\n99yDwsL/z969h0dR3f8Df8/sbrIJBFEgBBKUixRJWEPjFUwL4iUSKeFepf1ayr1ibQvWx7aWS7Va\nfxjbKpeiYLF+vyIRgQRMQCtQCBeLjQlLgqhAEXOBKGAI2U12Z+b3x7JLNnub3exsNsn79Tw83cuZ\nmRMq2dlzPud9MoI+B0W52G6B2zg1L7IVRSCmC/DR6oD3XVAkRwqv6CP/SNQ70oC5sEoT3/tOL+QM\nT1bdXs28W7AWFxzlGCN1aIIgQEGLfzcKE3ipEzJvAjbNRKAEaoMgYZa+yON1vSh4XXRCREQUCibw\nUtuwWxxbFkVKxVYgZ2XQWxoZY1q/0tYuK1hXfAq509KROy0dv9pYCtnLfSBv8oiIiALo4l7A2124\nDAPssEGPzSWVKCitciXfExER0VXhTMBrfqzVag147dam6XXo7amDWNysVGyFEMK4BhERUVsZMmQI\nTp06BQA4deoU+vfv77e9s63z2GCtX78eNpsNoijCYDDg2Wef9dpu7969bo+d7YYMGYKpU6cGfV2K\noKb6wG0A70W2wYTKVJcCs3cBH/3NMbdkawAM8UDqBEdRMIt3AQCSBgV/iQmxQbVP7dsNudPSsSiv\nDHZvE28hyC+twntHqjnGSB2WKAByywLeAAWMRB1OjRnYPBdq/9vPFj/CrzEXypV8xMkZKZiVOYB1\nHUREFDYs4KW2oY9zDHhEqojX1uAoGo7povqQ/NJK7Dp2LiyXLzRXY/mUm5EzPBn7Pv8am/7zldv7\nIwf1wNMPpvImj4iIyI/j9Ua0nMLrgW9Rgx4AribfD05M4GcqERFRM927d3cV8H799dcBC3j9JeBF\nOk2vQ29PHcTiZiGEcQ0iIqK2ZDKZsGPHDgDA4cOHcffdd/tse/bsWdeincTERPTq1Svo6ylXigll\nWcZzzz2n6pjdu3dj9+7dAICcnBwW8Ea7QAW8/opsgwmVsTUAPW8EJq52BMPYLY45LS6kciOHqWC2\nuVh98H/HOcOTMTgxAeuKT2H7kSo02uVW94NjjNSRCQKYwEt0cKUjdV+leKERRjTBAiOGJiUgd1q6\nhp0jIqLOiN82qW2IIpCaE7nrGeIdAywqVVTVYVFeWdjWG1psEqx2x02gQee5nc/UW1M4CEBERBTA\ntn3/9kixf9bwOoYKp13Pncn3REREdFXzFLvm6Xa++EvAC+e5Oj3n4mYVGgUjKmptGneIiIgofB54\n4AHX46Iiz22HmyssLHQ9zs7O1qxP1M41+ing/WkR8JtKR9Gtt4TcIO673OaTRNGxgIrFu24a7VLY\nEm+bq2+0h3ScM4n32B8ewOZHR0Aves7DBYtjjNRRCRAAjwLe1he+E7UbwaTyX9GgxMKKGABA0jVG\nLXpFRESdHL9xUtsZscCxlVEkpE4IaoBlbfHJsA4+xOpFGPU6AMCFy54TbpesoQ1KEBERdRbykXfw\ni5Pz0XL8/V7dJyiIeRrjxQOu1wrN1ZqkgBAREbVXJtPVIobDhw/7bRsoAS+Yc7VsM2zYMFX97TSC\nWNy8zX47xq88gPzSSo07RUREFB6jRo1CUlISAGDPnj0oKSnx2k6SJLz88suu5w899FBI1/vLX/4C\nRVEC/lmyZInrmCVLlrhe37p1a0jXpQhquuz7vesG+p8DCiZUJsj5pM5IqzmtT6svtep4URSQcf11\nyJ2W7rOIN5jSXo4xUkfkSOBtif+dUycSTCr/FYXyHVCulFaxgJeIiLTAb6DUdpJMwMQ12hfxinrH\nlkkqybKCInNNWLvQZJex7UgVAOCipcnjfRbwEhER+VFjhrB1PgyC9y2NDIKEXMNqVxJv8+R7IiIi\nCm8CXmpqKq6//noAwLFjx/Df//7X57nq6+uxb98+AEB8fDxGjRoVTLc7BxWLm22KDuvsY11b+VZU\n1UWoc0RERKHT6XRYvHix6/kjjzyCc+fOebR76qmnUFpaCgC46667kJWV5fV869evhyAIEAQBo0eP\n1qTPFOWa/CTwdunl+z0nNaEyQc4ndVZ1Fm12hjhRWx+Wgtmc4ckoeCwTkzNSEGdwhOvEGXSYnJGC\n6Xf0U30ejjFSRyQIAhSPBN626QtRmwgmlR+ABMeYjFNiAgt4iYgo/KK6gLegoABTp05F//79YTQa\nkZiYiJEjR2L58uWoqwvfZMXo0aNdAz9q/vibnKIgmaYAc/cA6dODulEKygQfWyb5YLVLsNjC+4Vc\nAbAorwxHK7/F+XoW8BIREQXl4EoIsv/PSoMgYZbeUZAUZ9C5ku+JiIgo/Al4P/zhD12PX3rpJZ/X\nffXVV3H5siMpbfz48YiP1+h7f3sWYHGzogAl8o2u53ZZQe77xyPVOyIiolaZM2cO7rvvPgBAeXk5\n0tPTsXjxYrz99ttYtWoVvve97+HFF18EAHTv3h1r1qxpy+5StPNXwHuuIvDxgUJlRL3jfZXzSbKs\noKHJ3uETWr39nHUazWnZZSVsBbOpfbshd1o6ypdloeIPWShfloXcaeno36OL6nNwjJE6IgGA7JFF\n3bF/jxG5CSKVX4GAp4XHcEy5wfXa3s9qubCaiIjCLioLeOvr65GTk4OcnBxs2rQJp0+fRmNjI2pr\na3Hw4EE8+eSTGDZsGA4dOtTWXaVwSDIBE1cDT50BDHHhPffgB4CbHgRkWfUhRr3OtSI3nOyygpyV\n+/HZOc9BpktWbVYrExERtXuyDFTkq2qaLX4EATKyTX0g+tgmj4iIqKNRk0YX7gS8J554AgkJCQCA\nlStXoqCgwKPNRx99hN///vcAAL1e77ZdNbVgmgJ59m4clm+C0mLeVBCAO3THURDzNMaLBwAAH356\nDls/qWyDjhIREQVHr9fj3Xffxbhx4wAANTU1eOaZZ/Dwww9jwYIFKC4uBgCkpKTgvffeQ1paWlt2\nl6JdXbXv914dDZg3BT6Ht1AZQ7zj+dw9jvcDqKiqw8K8UqQt2YnUxTuRtmQnFuaVdrhiHn8/p1YJ\nvAadEPaCWVEUEB+jd40VxgYx/8cxRuqIBAFeEnjVz6MTdQgqUvkVCHjc9nNssNzh9vonZy5i/Ipi\n5JdyXIaIiMInwF4xkSdJEqZOnYodO3YAAHr37o05c+YgNTUV58+fx4YNG7B//36cOXMG2dnZ2L9/\nP4YOHRq262/ZsiVgm8TExLBdj5qRGgGbJbznPLUHeK6vYwAmNcdxM5aYBtgtju0RRM8adlEUMNaU\nhM0l4b/pknysxPaVwCtfWW1s1Os4SEBERJ2T3QLYGlQ1jRca0VW0YVbmAI07RURE1HqnTp3CunXr\n3F47cuSI6/Enn3yCp59+2u39MWPGYMyYMSFdb86cOdiyZQs++OADVwJey/EWZxFNoAS8xMREvPLK\nK5gxYwZkWcbEiRPx0EMP4b777oNOp8P+/fvxxhtvwGq1AgCWLVuGm266KaR+dxaNkozhwucQfHz1\nNwgScg2r8XlTMo4pN+CJd8rwnd4JSO3bLbIdJSIiClJCQgK2bduG/Px8/OMf/8Dhw4dx7tw5JCQk\nYNCgQZg0aRLmzZuHa665pq27StGsxgzU1/h+X7YDW+YBvYYETtB1hsrkrPQ7V+RNfmklFuWVwd5s\nrsdik7C5pBIFpVXInZaOnOHJqs4VzQL9nD++83pNrjss+RrN58JqLzWqaqcXBY4xUockCoKXAl4m\n8FIn40zl3zLPcQ/RggIdfmX/GbZJd3o93C4rWJRXhsGJHJchIqLwiLoC3rVr17qKd1NTU7Fr1y70\n7t3b9f6CBQvwxBNPIDc3FxcuXMC8efOwd+/esF1/woQJYTsXBUkf5yi0VVmko4rdMVkIWwNQtgEo\nexvQGQCpyb2ot8WAzuzMgSgorXIbnGhJJwo+C3KDVf2te+FyRVUd1hafRJG5BhabhDiDDmNNSZid\nOZA3gURE1LkEcX+gKMDfR9Tys5KIiNqF06dP449//KPP948cOeJW0As4UuxCLeB1JuBNnz4d27dv\ndyXgtZSSkoKNGzcGTMD7yU9+goaGBixcuBBWqxVvvfUW3nrrLbc2Op0Ov/vd7/Db3/42pD53JsbD\nqyEI/rcLNggSZumL8IRtPuyygnXFp5A7LT1CPSQiImod566LoZoxYwZmzJjR6n4sXboUS5cubfV5\nKMIOrgzcRrYDB1c5inPVEEUgpovqLlRU1XkUtTbXUYp51Pyc/zh4WpNr3z1E2wCl/NJKrNz9RcB2\nelFA7rT0dv3/I5EvAgDPf90s4KVOyDTFsfBn3f3u808DRiFXeARbK/zvHM1xGSIiCid1S0ojRJIk\nLFu2zPX8zTffdCvedXrhhRcwfPhwAMC+ffvw/vvvR6yPpCFRdBTUakpxFO8CV4t6vWytlNq3G3Kn\npUPvY6WvXhQw/fbwrTA+WXvZ9Ti/tBLjVxRjc0klLDbH5J1zZfMPXtmHLZ98FbbrEhERRb0g7g8E\nAbj1k986UlmIiIjIgzMBb+vWrZg0aRL69euH2NhY9OzZE3fccQdeeOEFHD16FCNHjlR1vp/97Gc4\ncuQIFi5ciNTUVCQkJKBLly4YPHgw5s+fj8OHD7uN85APsgzhWIGqptniRxDg2N600FwNOUwLi4mI\niIiiliwDFfnq2lZsdbTXwNrik35DX4CrxTztmZqfU6tb0AE91RdUB8tZmByo7/cOTUTBY5kdIkmZ\nyCsBTOAlckoyAboYt5fk7z+JdZ93VXU4x2WIiChcoiqBd+/evaiurgYAjBo1ChkZGV7b6XQ6PP74\n45g5cyYAYMOGDbj//vsj1k/S0IgFgPkdr1sVaMbH1ko5w5MxODEB64pPodBc7UrCzTb1wd1DeuGX\nG0vD1oXzDU2QZQWf1lzyu7JZUoBfbSzD9rJqLLp/CFf/EhFR5xDM/UGwaStERERtZPTo0VDCMEkW\nShpdaxPwmhs8eDByc3ORm5sblvN1SnaL6t2I4oVGGNEEC4yw2CRY7RLiY6JqeI+IiIgovIK4V4Kt\nwdE+iGRdNWRZQZG5RlXbQnM1lk+5GaKPgJhoFszP2Rp6UfA6Dxar1y53Sk1hMgBcExfDuTfq0ERB\n8CzgZQIvdWYt7jEadXGw2L5VdSjHZYiIKFyiKoG3qKjI9Tg7O9tv27Fjx3o9jtq5JBMwcQ0gRvgm\nR7YDB1YCTZfdVmc7k3jLl2Wh4g9ZKF+Whdxp6dh1/JyqL/pqKQpwvqERa/epG0D48NNzGL+iGPml\nlWHrAxERUdRKMgETgijI1TBthYiIiCjs9HGAIV5V0wYlFlY40mHiDDoY9Tote0ZERETU9vRxjj9q\nGOLVtw2C1S65dkwMxFnM0x4F83P642t3S6fUPgmY870BHq/HGrS5tw22AJtpitSRCfCWwMuxdOqk\n7E1Xd2++ItaYgDiVn0cclyEionCJqgJes/nqdse33Xab37ZJSUno168fAODs2bOora0NSx/GjRuH\n5ORkxMTE4Nprr0VaWhrmzJmD3bt3h+X8pIJpCjB3D/CdsYFahteRDcBzfYHnk4Et89223xZFAfEx\neoiioNkK5Fuf/RCbP1FfkGuXFSzKK0NFVV3Y+0JERBR1bnpQfVtn2goRERFReyCKQKq6RORC+Q4o\nV4bzsk192mWyGxEREVFQRBG48R51bVMnONqHmVGv6xTFPMH8nP788t7Bft8/UlmHtftOeby+bt9J\nTea8OksBNpEagiB45u2GYXcgonbJdtnjJdHYFWNNSaoO57gMERGFS1QV8B4/ftz1eMAAz5WXLTVv\n0/zY1njvvfdQVVUFm82GixcvoqKiAmvXrsWYMWNwzz33oLq6OizXoQCSTMD0t4FJr0U+jdfWAJRt\nAF4dDZg3ebwdrhXI4WCXFawr9hzkICIi6nCCSKbTKm2FiIiISDMjFgQc/1AU4Au5DwBHqtmszMBj\nZ0REREQdwrDJgduIemDEo5pcXhSFDl3MI8sKGprsAKD65/Tnz//8PGAbb+WCez//WpPdJztLATaR\nGoLgJYHX679Iok6gqcHzNUM8ZmcODJgmz3EZIiIKpwhXRvp38eJF1+OePXsGbN+jRw+vx4bi2muv\nxX333Ydbb70VycnJ0Ol0qKysxIcffoiioiIoioJdu3ZhxIgROHToEJKSgv8C+9VXX/l9n8XBXtw8\nDUgcChxc5dgO29YACDrH/h6y5CjQ6dobuKBBEatsB7bMA3oNcRQUX+H8oh8tRbyF5mosn3JzuxsQ\nIiIiCoozma5sQ+C2GqWtEBEREWkmyZbKNJUAACAASURBVATc/TTw4VKfTQQBWKTfhGJ8F3Omjkdq\n326R6x8RERFRW0ro4/99UQ9MXOM2lxNuszMHoqC0CnbZd6Fbeyvmqaiqw9rikygy18BikxBn0GHE\noB7QiQIkPz9nIK051rn75ODEhLDd7zoLsDeXBC4Mbo8F2ETBEAVAblnAywRe6qyaPBN4EdMFqX0N\nyJ2Wjl9tLIW3jzS9KCB3WjrHZYiIKGyiqoC3vr7e9dhoNAZsHxd3NVnt0qVLIV/3+eefxy233IKY\nmBiP9xYuXIiPP/4YkydPxpdffonTp09j5syZKCwsDPo6/fr1C7mPnVqSCZi4GshZ6dgO25moZ7cA\nuljgTxr+vcp2R/HwxNWul4L5og8A8TE6NDRpV+zr3M4nPiaq/jkTEXVIkiTh2LFj+Pjjj/Gf//wH\nH3/8McrKymCxWAAAP/nJT7B+/XpNrl1QUIA333wThw8fRk1NDbp164Ybb7wREydOxLx589CtWycY\nKBixADC/4/h89kXDtBUiIiIiTX0deHcpgyDhf9M+RvfhP4tAh4iIiIiihEeBjQBAcYS8pE5wjAVp\nWLwLAKl9uyF3WjoW5pV5LVBtb8U8+aWVWJRX5laQbLFJ2PXpOYiC62+4TTh3n8ydlh62c3bEAmyi\n0AhX/jSjyG3SE6I211Tv/lwXC+gMAICc4cnY9ek55JdWXX1bFDBheDJmZQ5oN5/3RETUPrDiD8CI\nESP8vn/rrbdix44d+O53v4vGxkYUFRXh8OHDuO222yLUQwLgSNKL6XL1eUwXx6CNzcvWBuFUsdVR\nPNwsyU/NF30nLYt3AW7nQ0QUSdOmTcPmzZsjes36+nr86Ec/QkFBgdvrtbW1qK2txcGDB/HKK68g\nLy8Pd955Z0T7FnFJJkeaypZ5Xot4JehQPfrPSNF4woaIiIgo7GQZqMhX1bT7ye2O9txxgIiIiDqL\nlgU21w0C5u91BL5E8J4oZ3gy6q12/G7rUbfXb73hWvwhZ1i7KeapqKrzKN5trhUBumET7t0nnQXY\nvn7u9laATRQqQQCUlgW8bVauT9TGWtaZxMS7PTXo3O8xHrnzBiwZn6Z1r4iIqBOKqpH+rl27uh5b\nrdaA7Z1pdwCQkJCgSZ+chg4div/5n/9xPd++fXvQ5zhz5ozfP//+97/D2eXOQR/nWGGtJVuDI+23\nGecXfX0UbKOTbXJsHdXQZIccDaMqREQdmCS5L8q47rrrMHjwYE2vN3XqVFfxbu/evfH000/jrbfe\nwooVK3DXXXcBcNxjZGdn49ixY5r1JWqYpmD3qDyUyO5/7xeULhjX+CxG7+iJ/FJ1KflEREREUcNu\nUb9A2W4Fyt7Stj9ERERE0aRlAa8xwRHy0gYLmq7t4rmb56SMlHZV+Jn7/nFVATVtybn7ZDjlDE9G\nwWOZmJyRgjiDIxgnzqDD5IwUFDyWiZzhyWG9HlE0EgXBs1xXie7fB0SaaZnwH9PV7eklq83tebc4\ng9Y9IiKiTiqqEni7d++OCxcuAAC+/vprt4Jeb7755hu3Y7V29913Y+3atQAQUoFMSkpKuLtEogik\n5gBlG7S7hiHeUSjcQs7wZAxOTMC64lMoNFfDYpMQZ9Dh7iG9UHi0Rrv+NKMTgIsNTUhbstN1/bGm\nJMzOHNiuBouIiNqL22+/HUOHDsUtt9yCW265BQMGDMD69evx05/+VJPrrV27Fjt27AAApKamYteu\nXejdu7fr/QULFuCJJ55Abm4uLly4gHnz5mHv3r2a9CVaVFTVYc7ORozAZLwZ8ye3944pNwCKgkV5\nZRicmMDPQiIiImo/nAuU1RbxbvsF0Cdd862iiYiIiKJCgAKbSKqz2DxeawpzoamWtnzyFT789Fxb\ndyMgrXafdAb0LJ9yM6x2CUa9Lmwpv0TtgQBA9sh4YwEvdVItFwg13w0awCWr+06QLOAlIiKtRFUC\n75AhQ1yPT506FbB98zbNj9VKr169XI8vXryo+fVIpRELAFHDWvTUCT5XcTu/6Jcvy0LFH7JQviwL\n80YN1K4vzYiC4+vUh5+eg8XmGByy2CRsLqnE+BXFTB8kItLAb3/7Wzz//POYMmUKBgwYoOm1JEnC\nsmXLXM/ffPNNt+JdpxdeeAHDhw8HAOzbtw/vv/++pv1qa2uLT8IuK4iF+2TJtcJl/NXwCoYKp2GX\nFawrDnwvSURERBQ1nAuU1ZLtwMFV2vWHiIiIKFrUmIFP/tf9tfMnHK+3gTqrlwJeSW6DngSvoqoO\nT+SVtXU3VMk29dG0sFYUBcTH6Fm8S52OIHgp12X9LnVWTS0WUbfY+bnlZ36CMaryEYmIqAOJqgJe\nk+lqasjhw4f9tj179izOnDkDAEhMTHQrrtXK119/7XocicRfUinJBExco00Rr6gHRjwauNmVL/rb\njlRh4soD4e9HC8Ov7w5BEOBrhyO77EgfrKiq07wvRESkjb1796K6uhoAMGrUKGRkZHhtp9Pp8Pjj\nj7ueb9igYSp9G5NlBUXmGowXD2C14S8e7+foDqIg5mmMFw+g0FwNOcq3AiQiIiJyM2IBIASRMlax\nFZDbR7EIERERUUjMm4BXRwM1R9xfr6tyvG7eFPEu1VnsHq812dvHPdna4pOQ2sFwmV4UMCtT2/AE\nos5KgAAFLQrXlfbxO4wo7DwS/gMk8LKAl4iINBJVBbwPPPCA63FRUZHftoWFha7H2dnZmvWpud27\nd7seRyLxl4JgmgLM3QOkT/dYGdUqE1ar3o6yoqoOi/LKEImvOLE6EVKAoiSmDxIRtW/N74UC3euM\nHTvW63EdjdUuob/9JHINq2EQvG9NaBAk5BpWo7/9JKztaPtCIiIiIiSZgPGvqG9vawDsFu36Q0RE\nRNSWqsqAzXMdOw94I9uBLfMinsTrLYG3sR0U8DoXxre1GJ2I2/tfB52P5Fu9KCB3WjpS+3aLcM+I\nOgdHAm/Lf3/toLKfSAtN9e7PY7q6PW1ZwJtgNGjdIyIi6qSiqoB31KhRSEpKAgDs2bMHJSUlXttJ\nkoSXX37Z9fyhhx7SvG+fffYZ3nzzTdfzcePGaX5NClKSCZi4GvhNJfCbr8JTyHvTg77fk2XHqqwr\naTfOLb0joeTLC6raMX2QiKj9MpuvTj7cdtttftsmJSWhX79+ABy7FNTW1mrat7Zi1Oswz1Dks3jX\nySBImGvYAaM+iAQ7IiIiomiQ/jCgN6pra4gH9HHa9oeIiIgo0mrMwJb5wGujASXA4mzZDhxcFZFu\nOdVZPAt420MCr9UuwWJrm8XucQYdJn03GZt/NhKfPvMA8uaPwLbHMjE5IwVxBp2rzeSMFBQ8lomc\n4clt0k+izkDwVjuvcC6ZOilbg/vzmKv1JYqi4FKLRTvdWMBLREQaiaoCXp1Oh8WLF7ueP/LIIzh3\n7pxHu6eeegqlpaUAgLvuugtZWVlez7d+/XoIggBBEDB69GivbV5++WUcOHDAb78++eQTZGVlwWq1\nAgDuv/9+3HHHHWp+JGoLogjEJgCpOa07j6+JsKoy4N3ZwPPJwHN9geeToWyeh5PmQ627XhBsKvc4\nstgkpg8SEbVTx48fdz0eMCDwlnHN2zQ/tiMRoWCs7t+q2mbrPoLI5AAiIiJqb0QRSJuorm3qBEd7\nIiIioo7CvAl4dTRQtkH9lu4VW11BK5FQZ/VMBI72BF5ZViDLiqtYNpI+fvoelC/Lwks/HI6MG66F\neCV5N7VvN+ROS0f5sixU/CEL5cuymLxLFAECBMgKE3hbKigowNSpU9G/f38YjUYkJiZi5MiRWL58\nOerq6iLShxkzZrhqWwRBwNKlSyNy3U6t6bL785gurodWm+xRk5Fg1EeiV0RE1AlF3SfMnDlzsGXL\nFnzwwQcoLy9Heno65syZg9TUVJw/fx4bNmxAcXExAKB79+5Ys2ZNq663a9cu/OIXv8CgQYNw7733\nYtiwYejRowd0Oh2qqqrw4YcforCwEPKVL/833HAD/v73v7f656QIGLEAML/je3ulQFpOhNWYgcJf\nA18edG9na4Bw5G28I76DReLPUCCPDL3PYWbUi4jhZB4RUbt08eJF1+OePXsGbN+jRw+vx6rx1Vdf\n+X2/uro6qPNpxm5BrGJV1TRWsTq2lG424EJERETULqgZzxD1wIhHI9cnIiIiIq3VmIEt84Kf07E1\nRHQMyGsCrxSdBbwVVXVYW3wSReYaWGwSdF6jN7UTZ9DhuvhYV9GuN6IoID4m6qariTosUQQUtPg3\nqXbBRAdUX1+PH/3oRygoKHB7vba2FrW1tTh48CBeeeUV5OXl4c4779SsH0VFRXjjjTc0Oz/50FTv\n/jymq+thy/RdgAW8RESknaj7hNHr9Xj33Xcxffp0bN++HTU1NXjmmWc82qWkpGDjxo1IS0sLy3VP\nnDiBEydO+G2TlZWF119/HX379g3LNUljSSZg4prQBnwAwHLeMWCUZHKs+t481+92TQZBQq5hNT5v\nSsYx5YZWdDx8rHYZpmXvY6wpCbMzB3LlMhFRO1Jff3XgwGgMvI1yXNzV1PhLly4Fda1+/foF1b7N\n6OMcCfkttzXyQtbFQuSW0kRERNQeBRrPEPWO95NMke8bERERkVYOrgxtLsfXbooaqfNS0NMUhQm8\n+aWVWJRXBrt8NT1QUiKbsplt6uO3eJeIIk+A4KWAt3Mm8EqShKlTp2LHjh0AgN69e3sEy+3fvx9n\nzpxBdnY29u/fj6FDh4a9H3V1dZg3bx4AoEuXLrh8+XKAIyhsmlrMNRniXQ+9Je4nGA1a94iIiDqp\nqIzmTEhIwLZt27B161ZMmjQJ/fr1Q2xsLHr27Ik77rgDL7zwAo4ePYqRI1ufdJqbm4u1a9dizpw5\nuP3229G/f3907doVBoMBPXv2xK233oqf//znOHToEHbs2MHi3fbGNAWYuwe4NvDW4x4+2+HYqmnf\nnx2TZn6Kd50MgoRZ+qLgr6Uhi03C5pJKjF9RjPzSyrbuDhERUehEEUjNUdfW3oSPC9dq2x8iIiIi\nrVwZz7gcn+z2sqwA5fG34wRS2qZfRERERFqQZaAiP7Rjbxrnvpuixi55KeiJtgLeiqo6j+LdSNOL\nAmZlhjA3R0SaEgSg5W8GpZMm8K5du9ZVvJuamoqysjI888wzePjhh7FgwQIUFxdj0aJFAIALFy64\nimzD7de//jXOnDmDfv36aXYN8qGpRbF0szT/lgt2jAYRMfqoLK8iIqIOIOoSeJvLyclBTo7KIg0v\nZsyYgRkzZvhtM2jQIAwaNAizZs0K+ToU5RLTgPqzoR0r24EPl8Hzq4xv2eJH+DXmQvFRH68TBSy6\n7zs4UXsZheZqWGyBC4PDwS4rWJRXhsGJCUziJSJqB7p27YoLFy4AAKxWK7p27eq3vcVicT1OSEgI\n6lpnzpzx+351dTVuv/32oM6pGTVbSgMQBQXph5/CiRtuxiCTdltbEREREWnl448P4ruXq9A8HEkU\ngLT6A7BtysbHp/+EW8fNbbsOEhEREYWL3aJqxyWvRjwW3r4EUGfxTOBttIc2zyPLCqx2CUa9LqxJ\ntWuLT7Z58W7utHTORRFFIQGA3GIOW1E8Mnk7PEmSsGzZMtfzN998E7179/Zo98ILL+DDDz9EaWkp\n9u3bh/fffx/3339/2Pqxa9cuvPbaawCAVatW4eOPPw7buUkFPwW8LRfsMH2XiIi0xCUi1PG1ZuAH\nQDDFuwAQLzTCiCav793e/1pseywTj959I3KnpaN8WRaezRnWir4Fxy4rWFd8KmLXIyKi0HXv3t31\n+Ouvvw7Y/ptvvvF6rBopKSl+//Tp0yeo82nqypbSsoohRYMg4cx7yyPQKSIiIqLwOmE+hPTDT0En\neB+TMAgS0g8/hX/t3RXhnhERERFpQB/ntm21atePBPqmh78/PtglGZebPIt1g03graiqw8K8UqQt\n2YnUxTuRtmQnFuaVoqKqrtV9lGUFReaaVp9HDRHAvUMTEWfQAQDiDDpMzkhBwWOZyBme7P9gImoT\nguA5rq4obVfw31b27t2L6upqAMCoUaOQkZHhtZ1Op8Pjjz/uer5hw4aw9aGhoQFz5syBoij44Q9/\niHHjxoXt3KSSzV8Br/uCnQRjVGcjEhFRO8cCXur4Qh34CZGsM2Lc8P6uAQujXkROel9s/3km8uaP\ndFtxLIoCenWLjVjfAKDQXA25DVdeExGROkOGDHE9PnUq8OKL5m2aH9sRyakT0aSoGyy53bIP5V9d\n0LhHREREROF1/p8vwSD4T3IzCBJqP/gz8ksrI9QrIiIiIo2IIpAa5I6cgg7I/n/a9MeHlml8Tk2S\n+gLe/NJKjF9RjM0lla4dGi02CZtLHK+39t7OapcitvOjDOCauBiUL8tCxR+yUL4si8m7RFFOEACP\nvF0luEUIHUFRUZHrcXZ2tt+2Y8eO9Xpca/3mN7/ByZMncd111+Gvf/1r2M5LQQgigbcbE3iJiEhD\nLOClji+UgZ/WXE6yYvmJcaj47hYcW5CMij88gL8+/F0MS77Ga/tr4iJ7s2exSbCGuJ0TERFFjslk\ncj0+fPiw37Znz57FmTNnAACJiYno1auXpn1ra1ZLPYyC53aF3sQLjXhj7zGNe0REREQUPrIkIe3i\nHlVtHxQP4om8T8KS1kZEREQUMbLsKJqRmxWNjVgAiCrT7UQ9MOlVx05NEVTypfdF4hcbvO/K2FJF\nVR0W5ZXB7iNkxS4rWLixdUm8J2svQycG3rkqXArNjgTL+Bg9xAhel4hCI8CzgLczJvCazWbX49tu\nu81v26SkJPTr1w+AYy6mtra21dc/cOAAVqxYAQB48cUX0bt371afk0LQsoDX4Cjgraiqw/99dNrt\nraqLFo69EBGRZljAS51DMAM/4WBrgHDkbcS9Pgbi0Xf8Nu0eH9kC3jiDDka9zm8bWVbQ0GRnUi8R\nURt64IEHXI8DreouLCx0PQ60WrwjMMZ1RYOiLsG+QYnF9mMX+ZlGRERE7YbVUo94oVFV2zjBhvH4\nF9YVB96xgYiIiKjN1ZiBLfOB55OB5/o6/nfLfMfrSSZ8nPE8ZMV3EagCADeMBObuAUxTItRph/zS\nSsx98z9e3yuvuqQqOXdt8UmfxbtOkgIsLSgPuY8TVu6HFMFxMIbGELUvoiCg5W8IpRMm8B4/ftz1\neMCAAQHbN2/T/NhQWK1WzJw5E7Is45577sFPf/rTVp3Pm6+++srvn+rq6rBfs92pMQP159xf++hv\n2P2vDzF+RTGOVroX65671BiWpHwiIiJvIljRSNSGkkzAxDXA5rmAEsGBBEUCNs8BjmwE7lkM9En3\naBLpBN5sUx+fq6Arquqwtvgkisw1sNgkxBl0GGtKwuzMga4tj2RZgdUuwajXtXo1dTjPRUTU0Ywa\nNQpJSUmoqanBnj17UFJSgoyMDI92kiTh5Zdfdj1/6KGHItnNNiHqdDBfMwp31L0fsK1ZGYAGm+Pz\nJj6Gt75EREQU/ZyLldQW8f7JsA5TzYMgT7mZ362JiIgoepk3AVvmAXKzLaltDUDZBsD8Dr4a/Wcs\nPSgh38/wjQBA+fLfLTd/15wzOddfYeyivDIMTkxwzaW0JMsKisw1qq737/+eR3nlt0jzsbOjvz4G\nKhAONzWhMUQUPQQBkFtkvHXGBN6LFy+6Hvfs2TNg+x49eng9NhSLFy/G8ePHERcXhzVr1rTqXL44\nE4PJB2/3JABw4kNkfrEH2fgZCjDS4zC7rAT8vCciIgoFE3ip8zBNAeb9C7je82ZLc1/8E1jzfeD1\nsY7VXM3UfGuNWDf0ooBZmd5XEeaXVmL8imJsLqmExeYocrbYJGwucby+avcXWJhXirQlO5G6eCfS\nluzEwrzQtnKqqKrDwo3hORcRUXu0fv16CIIAQRAwevRor210Oh0WL17sev7II4/g3LlzHu2eeuop\nlJaWAgDuuusuZGVladLnaNPj3oWwKYFvZW8RPsNwwxlOJBAREVG7Iep0KO8+WnV7gyDhx3iPyWdE\nREQUvWrM3gtlnGQ7+uz6JX4pboRO8F9IJih24OAqDTrpm5rkXLus+N0VwWqXXHMvary276TqtoC6\nPmrBX2gMEUUfAZ4JvOiEBbz19fWux0ajMWD7uLg41+NLly6FfN3Dhw/jpZdeAgAsW7YMgwYNCvlc\nFKIA9yQGQUKuYTWGCqe9vh/o856IiCgUjCGjziXJBMwsAqrKgIMrgE+3O1Z4R8qXB4BXRwETXwVM\nU5BfWolFeWURubQA4NmJabgpKcHjvUArs+2ygv+30307EGdxb0FpFXKnpSNneLKqfqza/QWW7zzu\n9uUw1HMREUXaqVOnsG7dOrfXjhw54nr8ySef4Omnn3Z7f8yYMRgzZkxI15szZw62bNmCDz74AOXl\n5UhPT8ecOXOQmpqK8+fPY8OGDSguLgYAdO/eXbPV2tHoxptHoGJbKlJtR/220wsyfnfdboji/Aj1\njIiIiKj1rrt3IWybPoBBULeVabb4EYw6Fk4QERFRlDq40nfx7hU6SBgtqpsvUSq2QshZCYja5xQF\nk5xbaK7Gch+7Ihj1Ohj1Iqx2dfd3O8vPQpYVVcWxwfQxnPyFxhBRdBIEAC1yzBVF3e8lap2mpibM\nnDkTkiQhIyMDCxcu1OxaZ86c8ft+dXU1br/9ds2uH9VU3JMYBAmz9EV4wuZ9Xsnf5z0REVEoWMBL\nnVPfdGDya4AsA7bLwPIbAXuEknBlCdgyDyeQgkV55yO2IloB8NS7R/G7LeUY/Z1eWHT/ENfWDq1Z\nmR3MVhGrdn/hUQgc6rmIiNrC6dOn8cc//tHn+0eOHHEr6AUAvV4fcgGvXq/Hu+++i+nTp2P79u2o\nqanBM88849EuJSUFGzduRFpaWkjXaZdkGTcpJ1Q1veXyvxyf+RGY1CEiIiIKh0GmO1Fy8hlkfPI7\nVe3jhUZAsgK6Lhr3jIiIiChIsgxU5Ktqqle5eEmwNQB2CxCj/b1PMMm5FpsEq11CfIzn9KsoCrg/\nrTcKyqpbfa7W9DEYBp0Au6R4pnXCUbybOy2dczlE7YwgAIpHAW/nS+Dt2rUrLly4AACwWq3o2rWr\n3/YWi8X1OCHBMyxLjWeffRZHjx6FTqfDa6+9Bp1Ou10DU1JSNDt3uxbEPUm2+BF+jblQvGxqHsxn\nNBERkRqsYqDOTRSB2AQgbWJkryvb8c0//9wm2xlJsoIPPz2Hca/sQ35pZVhWZqvZKqKiqg7L/RTv\nBnMuIqLOJCEhAdu2bcPWrVsxadIk9OvXD7GxsejZsyfuuOMOvPDCCzh69ChGjhzZ1l2NLLsFot0S\nuB3gaKeyLREREVG0yPjBo5DEWFVtbaIR0McFbkhEREQUaXZL2HdCVAzxEbv3Mep1iDOoK7KKM+hg\n1PtuO/f76rdKD3Su5oLpo1qHfjsGx58Zi/ce/x4mZ6S4zh9n0GFyRgoKHsvkbopE7ZAgCJBZwIvu\n3bu7Hn/99dcB23/zzTdej1WrrKwMf/rTnwAACxcuREZGRtDnoDAI4p4kXmiEEU1e3wvmM5qIiEgN\nLgkhAoARCwDzOwG3SwinYRd3Q8CPva7aigRZARbmlaHftfFhWZkdaKuI1/ad8LpKO5RzERG1ldGj\nR4dlMGvGjBmYMWNGUMfk5OQgJyen1dfuMPRxgCFe3WBLBCd1iIiIiMJGFKEzTQLKNgRsWmLvj4Sa\neiagERERUfQJZgxHJSF1QsR2WhJFAWNNSdhcUhmwbbapj995jWHJ12B4v2tQeubbVp8r1D6qYdSL\n6J1ghCAISO3bDbnT0rF8ys2w2iUY9TrO3RC1YwLgOV+rqEs/70iGDBmCU6ccgVKnTp1C//79/bZ3\ntnUeG6z169fDZrNBFEUYDAY8++yzXtvt3bvX7bGz3ZAhQzB16tSgr0stBHFP0qDEwooYr+8F8xlN\nRESkBgt4iQAgyQTc/TTw4dKIXdK5assCY8Su2ZIkK/jfQ6cRZ9C1uojX31YRwab8ctsJIiIKSBSB\n1BxVBS2I4KQOERERUViNWACpbCN08D+heovwGf7yzw+Q+sjkCHWMiIiISAVZdqTdDR0PHHk7LKdU\nBD2EEY+G5Vxqzc4ciILSKr+7KupFAbMyBwQ814yRA/DLjaUB2w3q1SXoPuaXVkEK086Px6ovuS0O\nE0WBczZEHYAoCFCYwAuTyYQdO3YAAA4fPoy7777bZ9uzZ8/izJkzAIDExET06tUr6Os5/45lWcZz\nzz2n6pjdu3dj9+7dABwBLyzgDQNRBAZ8H/hsR8CmhfIdXoPY1H7eExERBYOVDEROXx+P6OX8rdqK\npKKjNRg7LKnV5/G3VYTVLsFqV796k9tOEBGRKiMWAGKAiQNRD0R4UoeIiIgoXOTEYShRvhOwnV6Q\nMeiLNyCHqWCDiIiIqFVqzMCW+cDzycBzfYGKrQBan1QnC3oIk9Y4QlkiyJlC6+8nWD7lZlW7IRgN\n6uY+XvrgM1RU1ansIfD5uUthK8Kz2mWMX1GM/NLwJPoSUfQQBHgU8KITFvA+8MADrsdFRUV+2xYW\nFroeZ2dna9YnigDzJuDzDwI2syk6rLOP9XhdLwrInZbO3Y+IiCjsWMBLBDhWgVfkR/SSR7vf7XXV\nVqRZbBJ+POJ66Fu5zYOvrSJkWYEsK4hTOSjlOFcSt50gIqLAkkzAxDU+i3gVQed4P8KTOkRERETh\nYrXZkIZTgRsCyBIOwWqzadwjIiIiogDMm4BXRzt2TXJuUW23wsum7ao1CkZc/M4UiPP2AKYp4ehl\n0HKGJ+POgdf5fD9LZVBK9bcWVe3ssoJ1xeruAyuq6rAorwzhXMtllxUsyisLqoiYiKKfAM/fxoqi\nPoSpoxg1ahSSkhy/t/fs2YOSkhKv7SRJwssvv+x6/tBDD4V0vb/85S9QFCXgnyVLlriOWbJkiev1\nrVu3hnRdaqbGDGyZBygBdiUWdTh7z19w2jDQ7eURg3qg4LFM5AxP1rCTRETUWbV99SBRNLBbrg4k\nRYKgQ497fxWwaFYnADovbQTIoC9YwgAAIABJREFUiIMVQoAtNNWIM+gwPOXagKvHA5l5V3+35xVV\ndViYV4q0JTsxbOn7aFKZwCsAmJU5MGA7IiIiAI5Jm7l7gPSHPQYejw5fDDmN20gTERFR+2VUmhAv\nNKpqGy80wqg0adwjIiIiIj+cxTGyPWyn/GnTEzjySDm6T1/X5ou0daLvaVU1cyAVVXV469Bp1dcr\nNFer2mFhbfFJ2DXYiSGYImIiaicEeARMhSu9uz3R6XRYvHix6/kjjzyCc+fOebR76qmnUFpaCgC4\n6667kJWV5fV869evhyAIEAQBo0eP1qTP1EoHV6q7P7nxfqR8/xEkGN2DY+aPGsTkXSIi0gwLeIkA\nQB8HGOIjdz1BxKAv1uO1rFifRbx6UcBLPxyOl6alu9oMFU4j17Aa5bGzcMw4E+Wxs5BrWI2hwumQ\n/zE7k3NzhifjlhuuDfEswIBeXVyP80srMX5FMTaXVMJic6xik1R++ft11hDe/BIRUXCSTMDEv6EK\n7kknQ0qeQcHS8XjxH5uYFkJERETtkhgTj0bBqKpto2CEGBPBsQ0iIiKiltQWxwThvNINjeE9Zcgu\nN/nuSKACXue8yee1l1Vfz2KTYLX7TwqUZQVF5hrV5wyW2iJiImofREHwzEPvhAm8ADBnzhzcd999\nAIDy8nKkp6dj8eLFePvtt7Fq1Sp873vfw4svvggA6N69O9asWdOW3aXWCGY35lP/AmTZ43M9RsfS\nKiIi0o73/YaJOhtRBFJzHFs6RYJsA8o24G7xHex54M/4c006Cs3VsNgkxBl0yDb1wazMAa5C1sGJ\nCSh57zX88Ks/wiBcHayJFxoxWbcPE3QHUHX3X3D/PxNdBbNq6EQBszIHuJ6LQmgZvHEGHYx6HYCr\nWzWFstp70f3fwaN33xhSH9qCLCuw2iUY9TqIAdKUiYhIY+ZN6IOzbi/FCHZMEPbCdmI/fv3Zz3D3\nlEe5vRERERG1L6IIy43jEPv5poBNLYPHIdZPKhwRERGRpoIpjglCPeJgDWLeQ0uX/VQSN/op4A11\n3qT53IsvVrsU1LxQsJxFxPExnFIm6ggEAEqLPVk7YwIvAOj1erz77ruYPn06tm/fjpqaGjzzzDMe\n7VJSUrBx40akpaW1QS8pLILZjdnWANgtHp/rsQaOtxARkXb4bYvIacQCwPxO2FeH+yXbkbLnV8id\nuwfLp2T5LAZNFU8jtfo5QPA+CKODhH7/+hVmDV6DFRVxqi4tCsBL09JdRcKyrKC+0RbSj+FM8QVa\nt1XTlFtSQjou0iqq6rC2+CSKzDWuouuxpiTMzhzI9GAiorZQY4ayeR5Ez+wAAIBBkLBctxoT30nB\n4MQf8Xc1ERERtSvd7/kl5C+2QlR8j1fIgh7dx/wygr0iIiIiaiGY4pggXFLi/RbHRtLlRt+Fsk2S\n7z6GOm/SfO7FF6NehziDTrMiXjVFxETUfgiCwALeZhISErBt2zbk5+fjH//4Bw4fPoxz584hISEB\ngwYNwqRJkzBv3jxcc801bd1Vag3nbsxq7lMM8YA+jgm8REQUUfyUIXJKMgET1wCir7p2AdDFOB4a\n4oHrRwJiGAYtZDtwYCVEUUB8jN77YIyabadkO2bri6BXkQTbzajDpvkj8YOb+6Kiqg4L80qRtmQn\nKqovBd19fbMU39Zu1XSurjHkYyPFuc3V5pJK14CYxSZhc4nj9fzSyjbuIRFRJ3RwJQQ/BS2Ao4h3\nhliIdcWnItQpIiIiojBJMkGctAaK4H28QoEO4qQ1jnENIiIiorbiLI4Js3rEodEeHQm8DU2+x59a\nFvo4hTpvom+xg6IvoihgrCkp6PMnGNVlPKkpIiai9kMUALlFAS86cQGvU05ODt599118+eWXsFqt\nqK2txaFDh/Dkk0+qKt6dMWMGFEWBoijYs2dPyP1YunSp6zxLly4N+TzUgnM3ZjVSJ0CC4LHwJlbP\n0ioiItIOP2WImjNNAebuAdKnXx1oMsQ7ns/fB/zuLPDbKuA3lcDMImDuvxzv6Y2tu+6RDcDmeUCN\n2fM9WQbKt6g6TfdThcidagpYxFvfKGHS6gMY8vsiPPjyPrdi1GCIApDbLMW3tVs11V6K7gLeQNtc\n2WUFi/LKUFFVF+GeERF1YrIMReX2jNniRyg88hXsUZLaQkRERKSaaQqEeXtwtl+2x1uCTg988U/v\nYwpEREREkRJMcYxKsiKgAbGw2qJjLOdyk+/5D18pwaHMm+hEwW3uJZDZmQNVhbs0l9w9LuAxaouI\niaj90J0rxwCh2u01Y/nb/D5JHd+IBX6C3K4Q9cCIR70uyollGj0REWmIBbxELSWZgImrHUW6zmLd\niasdr4siENPF8b/N26ZOaP11j7wNvDoaMG9yf730/wC7Vd05bA3ISbsOBY9lYnJGCuIMjhvJlls6\nOOtPbZLiY7NxdX6Q3hc5w5Ndz51bNYXqXJQX8KrZ5souK0x3JCKKJLsFgsrtGeOFRsBuhWnZ+1iY\nV8oFF0RERNS+JJnQOOgBz3AkqREo2+B9TIGIiIgoktQUxwShHnEAhKhI4LVJss+UXcB7Aq8sK5Bl\nJeh5k5empbvNvQSS2rcbcqelB3WNpGuMyJ2W7rOIVx9kETERtQPmTej6j3vRS3AfF4+pKeH3Ser4\nkkzAhNW+d1gW9Y7dmpNMXj/TY5jAS0REGuKnDJEvLYt1fZFl4FhBeK4p24EtV5J4a8zAWz8ECh5T\nf7whHtDHuQZrypdloeIPWXhmYlp4+tdCfIz7Da4oChg5qEfI5ztbZ/F4TZYVNDTZIQconNVaMNtc\nFZqr27y/RESdhj4OjYK6JPwGJRZWxMBik7C5pBLjVxQjv7RS4w4SERERhUmNGf32LoTgKyhNtgOb\n5zI5iYiIiNpOkslR/CKEJ6XuEuIAICoSeBsa/RcRNy/2qaiqw8K8UqQt2YlhS9/3W/jrjTGEoJSx\nw/oE1T7BaEDO8GSPQJg4gw6TM1JQ8FhmUEXERBTlaszAlnkQZLv395vPURN1NDVmYMt8YNsvANnL\n53n6w45dmk1TAACNkmebWBbwEhGRhsK3DJaos7JbAJXJf6rIdqDwSeCrfzseByN1glvBsSgKiI/R\n458VZ8PXv2YaWmwXlV9aiT3Hz4V8vhW7T+DMBQtmZw4E4Ei8LTLXwGKTEGfQYawpCbMzB7bJiu9g\ntrmy2CRY7RLiY/grlohIazIEFEm3Y4K4N2BbszIASrP1a3ZZwaK8MgxOTGCaCBEREUW/gyt9T7Y6\nKZJjTGFmUWT6RERERNSSaQrQdBnY9nirT1WvOAp4oyGB93KT//uwpivFPvmllViUV+a2m5/ksYWC\nf5UXgptzqqiqw5//+VlQx3QzOuYvnIEwy6fcDKtdglGvg+gjlZeI2rGDKwPPO8t24OAqx+6zRB2F\neZOjON3Xf/9x1wET/+b2UqOXhUNM4CUiIi3xU4aotfRxjuTbcPryQPDFu6IeGPGox8uyrGDf51+H\nqWPuLM0KeLeXVeGXb5dCakXwrCQr2FxSiXGv7MO4V/Zhc0mlq2i2rdMSjXqd6m2u4gw6GPXhSRgg\nIiL/rHYJa2xjYVMC39beInyGocJpt9fssoJ1xae06h4RERFReMgyUJGvru2XB4CqMm37Q0RERORP\nt75hOU1P4VsMFU5HRwJvoAJeu4yKqjqP4t1QPFf4KRbmlaKiqi5g2/xSx7zJB0EGuXSLM7g9dwbC\nsHiXqAMK5vtkxVZHe6KO4ErytN+6C8sFj+TpJokFvEREFFn8lCFqLVEEUnPauhfAD/7q2J6qBatd\nUjW4JUBGHKwQoP5LmbO4Nr+0Ej/f8AnUDEk5V3X7IyuOP9440xLVDFyFkygKGGtKUtU229SHg1xE\nRBFi1OvwX/1AlMiDA7bVCzJm6T3T6ArN1ZBbObFCREREpKlgd/85uEK7vhAREREFEqZdC3sIl1AQ\n8zQGn2v73QUuN/pPAW60y1hbfDKo4l2dKOD2/teh5WyC/UrYSaBAk9YUDCeomKshog4imO+TtgZH\ne6KOQE3yNBRH8nQzTXb3eglRAPSc+yciIg2xgJcoHEYscCTgthW9EUif7vWtQMmxQ4XTyDWsRnns\nLBwzzkR57CzkGlZ7JBR6Y2mSUFFVh4UbS1UV7wLAJWuQycJetFVa4uzMgQFvzvWigFmZAyLUIyIi\nEkUB2cMSYRL/q6p9tviRx2IVi01C6VcXNOgdERGROgUFBZg6dSr69+8Po9GIxMREjBw5EsuXL0dd\nXXgWLy5duhSCIAT9Z/To0V7Pt379+qDOs3Tp0rD8HJ2WPs7xR61PtzM1iYiIiNqOLUDxlz7eMaeh\niw14KoMgYcKpZzzS8SLtcoAE3m8tNhSZa4I65/Tb+6Hkyws+51cCBZoEWzDcXDejIXAjIuoYgtlN\n1hAf3HdPomgVTPJ0+Wa3MZTGFgW8MXoRgsACXiIi0g4LeInCIckETFzTdkW8aZMcScBe+EuOHS8e\nQEHM05is24d4oREAEC80YrJuHwpinsZ48YDfy15utGPN3hOQghgfCle+oZq0RFlW0NBkD1uqYmrf\nbsidlg5fNbx6UUDutHSk9u0WlusREZE6s+/s6/ocCyReaIQRTR6vT/vbIb+JJkRERFqor69HTk4O\ncnJysGnTJpw+fRqNjY2ora3FwYMH8eSTT2LYsGE4dOhQm/Vx4MCBbXZtakYUcfGGLPXtmZpERERE\nbSlQ0mO3JGDiauBH76g6nQ6SRzpepAVK4F2cX+7atVCtiupLAQtwfQWayLISdMFwc0zgJepEgtlN\nNnWCzzlnonYlmORpuxUoe8v1tGUCb4yO/yaIiEhb/HZGFC6mKUCvIY5BpIqtjhtCQzwwYBTw+U5A\n0TD55o75ft+enTkQm0vci5KcybsGwfuAkkGQkGtYhS+a+qBC8Z4oe6zmEo7VXAqtz61ksUmw2iXE\nx3j+GquoqsPa4pMoMtfAYpMQZ9BhrCkJszMHtrq4Nmd4Mkq/vIi/H/iv2+u33nAt/pAzjMW7RERt\nYGi/RNh1cdBLgYtUFAW4T/wYBXKm2+vORJPBiQn8XU5ERBEhSRKmTp2KHTt2AAB69+6NOXPmIDU1\nFefPn8eGDRuwf/9+nDlzBtnZ2di/fz+GDh0a8vUeeughDB8+PGA7m82GH//4x2hqcix4mTlzZsBj\nfv7zn2PMmDF+29x0003qOko+rZUfxCJlK1SFvjA1iYiIiNpSoAReQxfH/xqDGIOp2ArkrAxrYZks\nK7DaJRj1OogBdt9rCJDAGwpz5beq2hWaq7F8ys1ufbTapaALhpvrFscEXqJOZcQCwPwOIPv5XSbq\ngRGPRq5PRFpyJk+rLeLd9gugTzqQZPIo4I31s9sxERFROLCAlyickkyOVeM5Kx2ruvRxjsEk8ybg\n3dkIX/5sC936OrZ18DFw9fk5zyLb2fpCn8W7TgZBRkHM75Ev34W19mwcU24IS3fDIVYvwqj3vFnO\nL63Eorwyt1XrFpuEzSWVKCitQu60dOQMT27VtQ16z7/nnO8ms+CLiKitiCL0wyYAZRsCNhUEINew\nBp839fP4XHMmmuROS9eqp0RERC5r1651Fe+mpqZi165d6N27t+v9BQsW4IknnkBubi4uXLiAefPm\nYe/evSFf76abblJVRLtlyxZX8e6QIUOQmZkZ4AggIyMDEyZMCLlvFJgsK1j3RTd8D0Nwh+54wPZK\nag4EpiYRERFRWwlULHP2qGPepHdqcOe0W4CYLq3rG0ILAQmUwBuKlgVCvrQMNCmv/BZr9p5o1bW7\nMYGXqHO5spussmUeBG9FvKLesdtskinyfSPSgjN5WsW8EQBHcfvBVcDE1Wi0u3/mM4GXiIi0xk8a\nIi2IomMQyTlZZpoCTHkdgJqYnBC8eCPwfDKwZT5QY3Z7q6KqDovyytxeEyBjrPhvVafWCzIm6/ah\nIOZpjBcPhK3LrdVkl7HtSJXba86f1deWU850xYqqulZd+5t6z63XrU3hG7yTZQUNTXbIAbbOIiKi\nZkYsgCKqm3gwCBJm6Yu8vldorubvXyIi0pwkSVi2bJnr+ZtvvulWvOv0wgsvuFJz9+3bh/fff1/z\nvr3++uuux2rSdykynAlrS+0zYFf8D+fZFB2st/rfqYeIiIhIUxdOB2igAFvmAZe/Vn/OMO0wkF9a\nifErirG5pNKVYOsMARm/ohj5pZVej9MigVcto16ELCsor/wWU/92AA++UoyCsupWnfNve060eq6E\niNoZ0xRIs3Zhk/R9NCixAIAGJRZ1N00F5u5xzGcTdSQjFgBCEOm5FVsBWfZM4PUS7kVERBRO/KQh\nipRhk4DJa4O7SQyGrcGxguzV0Y6V61esLT4Ju6xAgIw4WCFAhhFNiBcagzq9QZCQa1iNoUKggTff\nwrmiWwE8inGdP6s/znTF1rjQ4FnA25qtqpwqquqwMK8UaUt2InXxTqQt2YmFeaUcRCMiUiPJhKZx\nK6CorL3NFj+CAM+UE2eiCRERkZb27t2L6mrHhPuoUaOQkZHhtZ1Op8Pjjz/uer5hg8rUkBBVV1ej\nqMixyEWv1+ORRx7R9HqknlGvQ5xBh2PKDVhoexQ2xfvYgk3R4UnpZ4hN5o4CRERE1IbOqAgQke3A\nJ/+n/pypE3zuQqhWa0JAtEjgVcsmKxi29H08+EoxDv/3QljO+cGxc34LlomoYxL63IwnbPOR1rgO\nQ62vI61xHc6N+TOTd6ljSjIB419R3/5K2n+T5D53FMMCXiIi0hg/aYgiyTQFmLsbEDUq4gUcg15b\n5gE1ZsiygpPmQ8g1rEZ57CwcM85EeewsPGtYB6tiCPrU/hIL1aizqluhrjanuHkxriwrKDLXqDqu\ntemK31wOfwFvqKv+iYjoKkPqDyCo/BCJFxphhOfvc4NOgFGv4ec0ERER4CqSBYDs7Gy/bceOHev1\nOC288cYbkCTH95EHH3wQSUlJml6P1BNFAWNNjv8/CuSRGN/0LD6Q3Au/FQWY0vR7bLWPxKc1l9qi\nm0RERESALAPnT6hrW75ZVaquHTpgxKOt7FjrQkAut2ECr6TRblHh2rWQiNoP5/C5AhEWGKFAVB2K\nQdQupT8M6GLVtb2S9t9oYwIvERFFFj9piCKtTzpgmqbtNWQ7cHAVbGV5eEf8LSbr9rkSd+OFRkzW\n7YdRsIV0al+JhaHqe43R/Xl3o+riK+BqMa5zO1E1WpuueMFbAW9T6Odrzap/IiK6SoyJR6NgDNwQ\njq3BrIjxeN0uKSx4ISIizZnNZtfj2267zW/bpKQk9OvXDwBw9uxZ1NbWatavv//9767Hs2bNUn3c\nqlWrMHToUHTt2hXx8fG4/vrrMX78eKxevRoNDQ1adLVTmp050DXZeky5Ab+0LXB7XxCAt2P+iBcN\nq1H4zw8i30EiIiIiALBbHHMUakhNgOJ/vsGm6LA87letTodsbQjI5ca2K+ANRZ9u6sbIwrFrIRG1\nH97mYFm/Sx2aKAID/z97dx4fRZ3nj/9VV6e7QwAFQriGQxQJhCCjuEBcT1QybgJyeOyuOgRERWd3\nQJ3RZVFH5/CHcWZnOQYN/nScUUEEEhyCuuMwEsFjBhMDQdABORLCIUeAvrvq+0fTnfRd1enO0Xk9\nH4886K76VNUnoNXVn8/7835fq6/thWz/TmbgJSKiNsZPGqL2MGE+9OeZTdCudTBtfAiKkNyyTtEy\nFiZqaO/MoPdHzjhgZDG5PxjXX05UD4sitSq74skIAbyOVmTgbc2qfyIiakEUYR9+m66mm9SroUV4\nFNYA3m+JiCjl9uzZE3g9dOjQuO1btml5bDJt3boVe/fuBQD069cvbmbglj7//HN89dVXOH/+POx2\nOw4dOoSNGzfioYcewpAhQ/Duu+8m3K/Dhw/H/Dly5EjC5+5sLs/JgiI1P7/cKH4RlinJIrgxXdqK\n//jHXKhfvt3GPSQiIiKCL6OuYGD83euMuqvcOwFFruewWSxodbdamwTE1ookHu1h3Pd66G7b2qqF\nRNR5CBEieJmBl9LesBvitxHlQLZ/lyc0Ay+rNhIRUWrJ7d0Boi4pexQgKb7V5anicaQkRDhaxsJE\nbd/3XdB7o18S/cG4/nKi63bUxz2mMK8fRDGxvx2nx4tzEVba6x34C2V01f+SGWMS7jsRUVfQ88b/\nhOfr9ZAR/b7s1iSs8kyJup/3WyIiSrXTp08HXvfu3Ttu+169ekU8NpleeeWVwOt7770XkhR/ckKS\nJEyYMAHXXHMNLrvsMnTr1g2nT5/G3//+d6xZswYnT57E8ePHUVRUhD/+8Y+46667DPfLn32YfEEn\nrgtZYEYKB1CqrIhawUYRvNA2PABkX97qbHVEREREhogikNkHOKdv3DsaTQNWem7Dbm0wctytrwro\nTwKiZyw/NAlIXUMTPgmZy0g2SRTgTVIQrQDAYtIfbOQPWLaaOG1M1BUIQvB8rMoIXkp3Spys9KIM\nTFsZGD9xhiziYQZeIiJKNX7SELUHjz21wbspFC1jYaJaOx7VMhh3eJ9ucdvLooCSgvAMV6qqweby\nQFW1oNehTp13Rzyv/cLq+1jHRtLaVf9ERBRMzR6Nn6jz4dYiT1K4NQkL3Q9itzY46jl4vyUiolQ7\nd+5c4LXZHL+0rcViCbw+e/Zs0vtz9uxZvP12c7bW2bNnxz2moKAA3377LbZu3Ypf/OIXuO+++zBj\nxgzMmTMHK1aswLfffos77rgDAKBpGmbPno2DBw8mve9dScvKM3PkTXEr7giqB9i+vC26RkRERBQs\ns0+rTyEIwGz5PQBIyjiNPwmIHi3nHcqr61G0tApHzjha3YdYhvayJu1cvbqZ0M2s6G7f2qqFRNS5\nhK4DZfwupb1zR4Pf+ysFKFYg/27g/i1A3ozA7tAMvCaJYVVERJRaXEpJ1B5ki++B0G1r754YEi9j\nYVtrGYxb19CEFz/YG/eYBZMvQ27/7oH3dQ1NKKvah8raRtjdXkiCAAiAV9VgUSRMycvBnIJhgWP+\n9u3JiOc9cNKGBWuqA+eJdGwkrVn1T0RE4RweL95x/RPqhH5YrvwGQ8XmgZl/qP3wsPtHMYN3Ad5v\niYio61m9ejXOnz8PALjmmmtw6aWXxj1m+PDhMfdnZWXhj3/8I44ePYotW7bA4XDg+eefx7Jlywz1\n7dChQzH3HzlyBOPHjzd0zs7KH3SyfschTBE/03dQ3QageJkvEx4RERFRWxGTM/1YKH6Kx3A/nEnI\nwAsAcwqGoaK6AZ4YCTgEANeP8AUg1zU0YeGampjtk0EWBYwfejG+OX4+Kee7rG8WFAPBRq2pWkhE\nnY8oCEFZdzUwgpfSXGgA7xX/Btz6S1/MRoTxktAA3gyFYypERJRa/KQhag+iCOQWt3cvDNE0YIca\ne4K2LcmigNJZ+YHg2LKqfboG0f7RYgDMv3J+3Y76QACtV9MCZarsbi/W7fC1Ka+uR3l1Pf7jreqI\n593TeDboPKHHRpPoqn8iIorMvzBitzYY673XBO07oPWNG7wL8H5LRESp161bc/UQhyN+Ji+73R54\nnZWVlfT+vPLKK4HXJSUlSTuvJEl47rnnAu/fffddw+cYOHBgzJ9+/folrb+dwZyCYegmumEVnPoO\ncNt8VYCIiIiI2pInOdlqrYITZrjg9HihJSFFZG7/7iidlQ85xriPBuA/V1ejvLpe97xDa/jnOkYN\n6JG0cw7ulQlB0De2Fa1qIRGlr9DbAzPwUlprrAX2vhe8rf7vwMl9URc7O5mBl4iI2hg/aYjay4T5\nSVuF3hYEAbha2oMK0yIUidvatS89zDIqHi5A8dgBAABV1VBZ26jr2E21R6CqmqGV8x5Vw4LV1Viw\npgZeg99iPaqGhWtqUNfQFLXNnIJhMQcMAQ6iERHp1XJhRAN6Be3rJ5yIezzvt0RE1BZ69uwZeH3i\nRPzPp++++y7iscnw1VdfYfv27QCA7t27Y+bMmUk9/4QJE2A2mwEABw8ehM3WuSrRdDS5/bvjuZlX\nwaZl6DtAsfoyyhARERG1pSRVH7RpGXDABFUD3N7kRJgVjx2AX96eF7ONf07gT18eSco1IzErIqaP\nGxiY6+iVqfP5ToeLMxWcPB9/wVdoohQi6hoEBM9JMoCX0lbtWuCl64CmkGRbR3f6tteujXhYaAZe\nk8ywKiIiSi1+0hC1l5w8YNrKThXECwCK4EWpsgIjhQMQoMICBwQEP8RG254s44deHBhQUlUNn+w/\nEch8G4/d7YXD4zW8ct6rIZCZ1yiPqmFV1f6o+/2r/qUoQbwcRCMiMsa/MEJC8GfD5cJh/EZZilwh\n8j2Z91siImorI0aMCLzevz/6d4VIbVoemwyrVq0KvL7zzjthtVqTen5RFHHxxRcH3p8+fTqp5++K\niq8YBNdl/6Kr7cGcm6NmlCEiIiJKGXdyKgBsUq+GdmEq0+nRNwegx1/2HIvbxquFZ+BLph2LJgeN\nQ/XqZkrauetP2bFuR/TKgCYpOHiYiLqWsAy8YAQvpaHGWmD9PED1RN6venz7G2vDdoUG8GbIUip6\nSEREFMARfKL2lDcDuH8LkH+3LyuOLu3/v60ieLFC+TV2ZZRgt3k2dmXMxm+UpfiBuA2lyooW20sC\nwb7J5PCoqGtowoI11Rjx35W4++XPdB9rUSSYRFF3xt5k8Wf+jaZ47AA8H2HVf+9MEwfRiIgMyu3f\nHW9NPIyfy68EbRcEYKq0DX8y/RdWK8+EfT6te2gi77dERNQm8vKan/0///zzmG2PHj2KQ4cOAQCy\ns7PRp0+fpPXD4/Hg9ddfD7wvKSlJ2rn9VFXFqVOnAu+TnUG4q/puzFy4tdgTSJoGvLXfHLMiDBER\nEVFKhAbwDp/cPAeiWIHLpgBi7GcZryZglWdK4P2p8+6YY+x6qaqGD7+KH8CbSj2tCqwZwcldLrIm\nL4C3vKYBsf6qvKqKkoKhXMRO1EWFBfAyfpfS0fZl0YN3/VQPsH152ObQRUPMwEtERKnGTxqi9paT\nB0xbATxRDzzZANz+cvRmwSX0AAAgAElEQVSsvKIM3L7SQLBv6gwRj8Eq+EowWQUXpkrbsFRZiunS\n1hbbnZgubUWFaRGKxG1Ju/bexrMoWlqFdTvqDZfNKszrB5eq6s7Ymyz+zL+xhA7YAUB2dzMH0YiI\njGqsxZU7noAsRM6SIgjA1dIebDT9V9DnU69uyStVSEREFMutt94aeF1ZWRmz7aZNmwKvCwsLk9qP\nP/3pTzh69CgAYPTo0Rg/fnxSzw8An3zyCex2XwDHwIEDk57ht6tattuMUs/MmBOtggD8WHobm/7v\ng7brGBEREREAuG3B729c3DwH8kQ9cPdbwLSXYlYoPKhlB73/5yV/wain3sOCNdWtWqDk8HjhcKcu\ns64efbPMYdsuzkxeAG+8YDyvhphVA4kovQkIjuBVGcFL6UZVgbpyfW3rNvjat+DyBr9nAC8REaUa\nP2mIOgpRBEyZwJhZ4Vl5Favv/f1bfPtzi9uvnzGErtj0UwRvUjPxHj3rhCeBlfayKKCkYCjMsgSL\n0valLhat3xlzYPFYkyNsm80VZ2UgERGF07OyGoAsqChVlgc+n45GuA8TERGlwrXXXoucnBwAwJYt\nW7Bjx46I7bxeL377298G3t95551J7ceqVasCr1OVfXfx4sWB97fddlvSr9EVqaqGTV8ewaVifdTv\n4X6K4MUV3yxLSrY6IiIiIl28bkALSWahWJvnQMQLU5P+CoXfmxjxNEPFo2HJQexuL9btqEfR0iqU\nV9cn1D2zLCFDZyCOCEAS4zxwJaBvj/AA3obT9ggtUyde1UAiSl9hGXjbpxtEqeOxhy8misZt87Vv\nweUJDuDV+9xARESUKH7SEHVEoVl5n6j3vc+5UGZ1wnxAaPsA1NZQBC9K5NiZpVJt0W0jkdu/O0RR\nwJS8nDa//rovggcWVVWDzeUJDJIdO+sMO+a8q20zBRMRdXpGVlYDUAQVTyuvAQCOtPFECRERdV2S\nJAUFtt5zzz04diy8jO9Pf/pTVFdXAwAmTZqEW265JeL5Xn31VQiCAEEQcN111+nqQ2NjYyD7r8lk\nwr/927/p7v/27dvx0ksvweGIvvjl/PnzuOeee/DnP/8ZAJCRkYGf/OQnuq9B0Tk8Xjg9HkwRP9PV\n/gbh73BXr05xr4iIiIguiBQwo1iitz8c/ZkmWnIQj6ph4ZqahDLxiqKA8UMv1tVWBaBpGqKF8AoA\npHgrqiI4cOJ8UN/Lq+sxddnHhs/TGnqqBhJRehJD7ltMwEtpR7YAks7M9orV174FJwN4iYiojUWv\nTUNE7c+/Ij1UTh5w+0vAO3PQmdZFFoqf4jHcDy1k7YAAFWa44IApbF8yXT20V+D17ElDsW6H/hX6\nkgBAEOBt5Yp0j6phwepqlFc3YPs/voPd7YVFkTAlLwdNdndY+/NOZuAlIjLEyMrqC8YLXyFX2I//\nXC3gz18dw5yCYcjt3z1FHSQiIvKZO3cu1q9fjw8++AC7du1Cfn4+5s6di9zcXJw8eRJvvvkmqqqq\nAAA9e/bEypUrk3r93//+9/B4fN83iouL0bt3b93HHj16FPPmzcPChQsxefJkfP/738egQYOQmZmJ\nM2fOYMeOHXjrrbfw3XffAQAEQUBZWRmGDBmS1N+hqzLLEnrKHliF8EWgkQgCYHp3PtB/VPPCYCIi\nIqJUcUdYIB0tgFdHFSV/cpBH3Q8EbfeoGlZV7UfprHzDXbzx8mxs/fqErraRpgQkUcDUsQNQUjAU\nmqahaNnHhuYODpy0oWhpFUpn5ePS7CwsXFOTUNXB1rAoEsxy50oUQ0TJEbrsQGMEL6WbY7t8FQH0\nyJ3aXB3ggtAAXhMDeImIKMUYwEvUWeXNAAQRWPvD9u6JblbBCTNcsMNXHmqkcABz5E2YIn4Gq+CE\nTctApToeZZ5C7NYGJ/36Z1oEyA7rEyEwOoZfTR8DkyziP96qbnU/vBrw4VfN2bX8Zb8isbm8UFUN\nYgrKdBERpSXZ4lsxbSCIVxCAufIm/Ng9H+t21KOiugGls/JRPHZACjtKRERdnSzLeOedd3D33Xfj\n3XffRWNjI5599tmwdgMHDsTq1asxatSopF7/lVdeCbwuKSlJ6Bznzp3D+vXrsX79+qhtcnJyUFZW\nhh/84AcJXYPCiaKAG/IGw1aXoT+IV/UA25f7qvsQERERpVLEDLzW8G0GqihFSw6yqfYIlswYY3j8\nvHdWhqH2oR65fjj+c/JlAIAFa6oTSvzhzyJ87WV92jx4FwAK8/px3oGoqwr5X5/hu5R2ti+Dvv+y\nBWDCQ2FbXczAS0REbYyfNESd2ejbgemrfIG8nYBNy4ADvnIVxdI2VJgWYbq0NTDhaBWcmC5tRYVp\nEYrEbUm/fssAXrMswaLoW12eIYuYPm4giscOwOCLY5T6SpG1Ow63+TWJiDotUQRyiw0fdov4Nwjw\nDcr4s6UnUoaRiIjIiKysLGzcuBEbNmzA7bffjkGDBiEjIwO9e/fG1Vdfjeeffx47d+7ExIkTk3rd\njz/+GHv27AEADBo0CJMnTzZ0/E033YTy8nI8+eSTuOmmmzBixAj07t0bsiyje/fuGD58OGbNmoXX\nXnsN+/fvZ/BuCpRcMxyb1fHGDqrb4AuUISIiIkqlsAy8AiBHCJg1UEXJnxwklN3thcPjNdxFu8v4\nMS1V1DSgrqEJqqqhsrYx4fN4VA1b9h5vVV8SIYsCSgqGtvl1iahjEIXgCF4m4KW0YmCBECQFyA5f\nMM8MvERE1NaYgZeos8ubAfQZAXz4c+Dr9wGtdQNPqfSe9k+YdsUgPNy3FkO3LIMQZeWbInhRqqzA\n164BSc3E2zKAVxQF3JSbjY01R+Ied9uY/oGV6J52mOt8Yl0tRvfvwXLuRER6TZgP1L4dtwRjS6FZ\n4r0a8FT5Trz9YHIDpoiIiCIpLi5GcbHxBSh+9913H+677z7d7SdNmtSqEpndunVDUVERioqKEj4H\ntU5u/+44etOP4f7wYyiCzi+qbpsvUMZkrCINERERkSGhAbyKxVf+KJSBKkotk4O0ZFEkmGV9iTpa\ncrhbN4+y78R5/MvSKvzy9tGwt/JciWTvbQ1ZFFA6K5/zDURdWOgtuTXjA0QdjoEFQvC6Io6TuEIW\nB5kk488aRERERnCpCFE6yMkD7n4L+O8TwMK97d2biDRRRvEDz+HF3G8wbMsjUYN3/RTBixK5Mql9\nOGMLXqH/L2P6xz1GClmJftbhjtE6NbyqhlVV+9v8uh2VqmqwuTxQ26GsGBF1Ejl5wLSVMPKoG2ki\n6PMDp1Dy6ufMxEtEREQd0vXX3oijN/xaf7lTxeoLlCEiIiJKpdCgGSXK84eBKkqb1KuhRRjnKczr\nF0i+oZeqakHJPhLlVTU88U5thy+rLV34+7EoEqaPG4iKhwtQPHZAO/eKiNpT6F2T022UVvwLhPSI\nMk7i8gYvlO7on/VERNT5MQMvUToRRSCzDyBIHSsTryhDmLYSgigA6+4HdE4v/kD6FI+57484MJeI\n5zfvwe7Gs5hTMAy5/bujh0WJe8yjN1+Gy3OyYHN5kCGJOOfUn80xmTbVHsGSGWMMD0amk7qGJpRV\n7UNlbSPsbi8sioQpeTmBf08ioiD+DPWvTwPOxy9F+J56ZcTtf/7qGP669zhKZ+VzcoOIiIg6nIHX\n3gfUVwJ7N8dvnDvVN25ARERElEqhGXhjLSDSUUXJrUlY5ZkStl0OSb4RT+j4cjJ4NWBAdzMOntSZ\n6S8CSRDgTVH2S1kUsGH+JAzrkwmzLHXp+QUiaiaEpODV9C8LJer4/AuEat6M3zbKOInTHRzAa2IA\nLxERpRg/aYjSjSgCF+sftEo9AZjzoS+QavsyQ4HFFjjRTUxexluPqmHdjnoULa1CeXU9jp9zhvY0\nzKf7TmLUU+8hd/F7GP30++22CtXu9sLh6UBB2W2svNr377ZuR31gcNXu9gb9exIRhcnJA/59vW9h\nSwyaBkyTPsaujBKUKiswUjgQtN+jali4poaZeImIiKhjumERVCHOGn1BAiY81Db9ISIioq7t+FfB\n75vqgfUPAI214W39VZTEyM8ybk3CQveD2K0NDtouiwJKZ+XrSuygqhre/tuhsPHlZDna5IDcisDY\n60b0Sfj4u8YPinqs/+9o9IAesJpkBu8SUUDY7YDxu5RuJsyP+mwRIMpRx0lCM/AygJeIiFKNnzRE\n6WjoP7d3DwJcmf2A/vmAqgJ15YaO9QgKfjYjckbEeASosMABAWrYPn8g1s7DZ4K2Xzn4ImRnBZdP\n37L3eFDAaHuxKBLMcuwAtHRV19CEhWtq4IkSPc3AOiKKKScPuP2lmIM1/oQDVsGJ6dJWVJgWoUjc\nFtTGo2pYVbU/lT0lIiIiSkxOHk5M/h94tDhBGcf3tE1/iIiIqOuqXQv839MhGzVfFryXrvPtD5U3\nA7h/C5B/NzySL1uvTcvAWu8/o8j1HCrUiUHNBQC/uWNs3EpJdQ1NWLCmGiMXb8Zja7+MOr7cWk6P\nil/enpdQEK4sClh48wiUzsqHlEB87f4T5/GbO8Zi+riBsCi++QOLImH6uIGoeLiA1aSIKIrgG057\nJS8iSpmcPOD6J6PvF2XfAqKcvIi7XZ7g+IIMBvASEVGKxVl2QkSdUpSHzfZwwp2B/gDgsQNuY2Wk\nJM2DW/ucxI8NHDNSOIA58iZMET+DVXDCpmWgUr0Kr3smo0a7BABghgsO1YQ3PjsYdGzDGTuUDvoA\nXpjXL+4KeVXV4PB4064UVlnVvriDq/7AutJZ+W3UKyLqVPJmAH1GAH/+GfD1+3GbK4IXpcoKfO0a\nEJThZVPtESyZMSat7rFERESUHroNHA3fJGyU706aF1g/z/dM1IHGDIiIiCiNNNb6nje08KQaAADV\nE/15JCcPmLYCs7+7B59/0wAHTNCi5CDSAPxlz3Hclt8/alfKq+tjJoVIJn/A7Kj+PbCqaj/e/bIB\nTk+Uv4MWWmYRzu3fHZdmZ+Hpil347NuTuq/9yb6T+Nu3p1A6Kx9LZoxJy/kBIko+IeQWoTEFL6Wj\n3iPCtylWIHeqL/NujLGR0M9xZuAlIqJUYwAvUTpy2SNvF8Tog2ep4jwD1XEOomL2PRQbCOIVoMHx\n0f/CoszUlf22SNyGUmUFFKG5rS+bYhWmS1XwagI0CJAF1RfY6x2PMqEwEJxVf9ph/PdrA6IAlBQM\njbq/rqEJZVX7UFnbCLvbC4siYUpeDuYUDNNVQqwjU1UNlbWNutoysI6IYsrJAwqXAP8TP4AX8AXx\nlsiVeNT9QGCb3e2Fw+OF1cRHaCIiIupYrH//HSDE+b6veoDty4FpK9qmU0RERNS1bF/me96IJcbz\niKpq+OTb03DBHPdSscaC41V0SzZ/8o3c/t2DAmkPnbLhll9vDWsvALh93ECUFAwNGr/P7d8dax6Y\ngF31Z/Dy1n14b9dR2N1eZMgiXB41anidv0LdpdlZnX4+gIjaRuitU2P8LqWjM4eD3w+4Eij5ABBj\nB+N6vCq8Ic8QzMBLRESpxk8aonRTuxb44L8j79MACFL8c8hm4HsTfQG/rdQPJyH+agDwq0FAt2zD\nx2fs3Yi8/t3ithspHAgL3g0lCRrkCxOascqkdzTFYwcEDbypqgabywNV1VBeXY+ipVVYt6M+EORs\nd3uxbodve3l1fXt1OykcHq+u4G2gObCOiCiqTGOfQ4XipxDQHAhjUSSYZR2fo0RERERtSVWBunJ9\nbes2+NoTERERJVMSnkccHm9YyepoYo0F66noliyyKIQl3xBFAVaTjMwoC8DHfa9nIPNuJKMG9MBv\n7rwCu565BXU/uwU/yOsXNzemv0IdEZEeAoIjeBm/S2mnsRb4+yvB284fB47tinuoyxv+LJLBeSEi\nIkoxpg8jSieBElXRghhVACIgSoAaoY0gAUX/C+Tf5Vt9dqQGeOm6VmXtDZRhcduAU98aPt4qOFF3\n8Cgk0RK22q2lOfKmmMG70UQrk+4nQIUZrpglu1JtaC8rgPBMu11h5b1ZlmBRJF1BvAysI6K4TFZA\nyQTc53U1twpOmOGC/ULml1tG9WWWbyIiIup4PHb91W7cNl97U2Zq+0RERERdSxKeR8yyBJMkRgyc\nCRVtLNhIRbfWkkUhZiButGCf7hZF1/lFUYBZllC5kxXqiCi5hJDbhMoUvJROatf64iVCqwKcPuCL\ne5i2EsibEf3ww2fCtv2ycjcevv7STjvfTkREHR8z8BKlEz0lqjQVGH4zkH83oPgCQ6FYfe/n/RW4\n4l+bS0f0ywcu/0Fq+xyHRxPxPRzByJysqG0EqJgifpbwNfxl0lvyZ/TdlVGC3ebZ2JVRglJlBUYK\nBxK+TqLOODwRM+06YwTv+nX2lfeiKGBKXo6utv5SZUREMWX20d3UpmXAAVPg/Y2XG88kT0RERJRq\ndcfdsGkZ+hrLZkC2pLZDRERE1PXIlub5hngUa8TnEVEUkD+oh65TRBsLNlLRLVEmScT0cQNR8XAB\niscOiNouQ4k8BZtl1hfAC7BCHRGlRtjdk/G7lC78yc6ixUuoHt/+xtqIu8ur63F32adh2zfVNqZF\n5VsiIuq4GMBLlC6MlKja/1egeBnwRD3wZIPvz2krgJy88Lb9xia3nwbJgopy02IMP7o5ahszXLAK\nzlZdp2WZ9CJxGypMizBd2ho4r1VwYrq0FRWmRSgSt0U9jwAVFjiCSq63VuNpOxauqUm47Nem2iNQ\n26hkWCrMKRgGOU5gbqRSZUREEYn6M3VvUq8Oyr7+4zU1HKAhIiKiDqfs429RqY7X1VbzOIFd61Lc\nIyIiIupyRBHILdbXNndqcxKREJOG9457uCAg6liwv6JbssmigNuvGIB1D07EV8/eGjPzrl+GHC2A\nV39xVCO/DyvUEZFeQkgKXo0RvJQu9CQ7Uz3A9uVhm+samrBwTU3UisD+yrd1DU3J6CkREVEQBvAS\npYtESlSJoq9MVZTBMjTWAlt+mbw+JkgRvFgiR89+64BJf7ahKPxl0v2ZdxUh8kp1RfBGzMQbLWPv\nONOhVvULAGobziQcvAvoW3mvqhpsLk/MQF89bVIht393lM7KR7QY3nilyoiIAhprgZP7dDV1axJW\neaYEbfOoGhasruYADREREXUY/jLRZZ5CuLX4ARsCNGjromebISIiIkrYhPmAGCc4VZSBCQ9F3d0n\nK/44/9VDLo46FmykopsRD153CV68YyzGDb5IdxU4kxR53qWbgQBeVqgjolQIid+FmrycRETtx0iy\ns7oNYf/hl1Xtizsf39kr3xIRUcfVoQN4KyoqMHPmTAwZMgRmsxnZ2dmYOHEilixZgqamtgmcuO++\n+yAIQuDn6aefbpPrEhmWhBJVYfSsUmsjiuBFiVwJwJfl1gobrLBBgAoNou5sQ9H4y6TPkTdFDd6N\n1BcgdsbeNeKTMTP26lF/yt6q42OtvK9raMKCNdUY9dR7yF38HkY99R4WrAkOTtPTJtWKxw7Ag9dd\nErZ9cm7fuKXKiIgCNj0OPfXAVE3AQveD2K0NDtvn1YAH/vB3BvESERFRh+Avq7xbG4yF7gehavGD\nNgTNg4N/eqENekdERERdSk4eMG1l9P2i7NsfqRLgBS5PcDBNpHjUXnGCfPVUdDMqM0N/0K2fIAgR\ns/B2NyuGzsMKdUSUbKEBvMy/S2khkWRnF/gXR+vR2SvfEhFRx9QhA3jPnTuH4uJiFBcXY+3atThw\n4ACcTieOHz+O7du34/HHH8fo0aPxySefpLQflZWVeO2111J6DaKkSVKJqgAjq9TayA/EbXhF+RW+\nzrgHdeY5qDPPwdcZ/45XlF/hQ2++rmxD0WxSrwYATBE/09W+UPwUAtS4GXtlRM7Ya4S3ld8Boq28\nL6+uR9HSKqzbUQ+729d/u9uLdTt828ur63W1aSu9u4UPzD5yw3Bm3iUifY7UAAf1LahwQsZG9Z+i\n7j940tbm90AiIiKiSMyyBPOFwJCN6j/BBX3BJb0PVqKu/nQqu0ZERERdUd4MwNwzeJuUAeTfDdy/\nxbc/Brc3OIB30vDe+PFNlwVtszljJx2JV9EtERYlsbmHSAG8WQYy8ALNv0+0IF5WqCMio8SQCF5N\nYzAipYFWJDvzL47WQ0/lWyIiIqM6XACv1+vFzJkzUVFRAQDo27cvFi1ahDfeeANLly7FpEmTAACH\nDh1CYWEhdu/enZJ+NDU1Yd68eQCAzMzMlFyDKOmSUKIqwMgqtTZiETy4QfoSstA8iCcLGm6QvsRS\nZSkOaNm6sg2F8pdJN8MVyKAbj1VwwgxXQhl721K0lfd1DU1YuKYmaikQf5n4BXHaLFxT02ZZKJ2e\n8Bo+Djfr+hCRTh//r+6mFsENM1wx27T1PZCIiIgokpZllc1wwSy4dR1nFZx4fetXqewaERERdUWq\nCjhDxkpK3gemrYiZedfPHZLNIkMWcVFmcMba8674QTPFYwdg4iW94/dXJ4spwQDeCIG/RgN4Ad/v\nU/FwAaaPGxgIJrYoEqaPG8gKdURkWOhMKsN3KS20ItmZWZZ0L9aJVfmWiIgoUR0ugLesrAybN28G\nAOTm5qKmpgbPPvss7rrrLsyfPx9VVVVYuHAhAODUqVOBINtke+yxx3Do0CEMGjQoZdcgSjp/iapo\nQbw6SlQFGFml1gEIAjBcPAKjXzPdmhQok+6ACTYtdvktP5uWASdkwxl725IkAEtmjom48r6sal/U\nwFw/rwZ447TxqBpWVe1vVT/1Ci2fBgAOnashiaiLU1Xgq3d1N7dpGXDAFLddW94DiYiIiKKZe80l\nEADD32nLd51k2UciIiJKLucZQAsZx83UH0gbmsTBJIuwmoLnO+w6AnjrGpqw7R8ndF83nqRm4M1Q\nIrSMz5+Jd9czt6DuZ7dg1zO3MPMuESVEYAZeSlcJJjtruTg6nmiVb4mIiFqjQwXwer1ePPPMM4H3\nr7/+Ovr27RvW7vnnn8fYsWMBAFu3bsX777+f1H58+OGHePnllwEAy5cvR1ZWVlLPT5RSeTN8pajy\n724OwFWsuktUBRhZpdaBGHle/qt3DIpcz6FCnQgA0CCiUh2v69hN6tXIgMdwxt62IgkCvBrw5Lqd\nWLCmOihDpKpqqKxtTNq1NtUeaZNJX2eEciR6y5kQURfnsft+dHpPvRKazsfktroHEhEREUWT2787\nHrtlhKHvtLXaUNjcGss+EhERUXLZToZvs1ys69C6hiZs3nkkaFvt4TM4dT54DP68yxP3XGVV+5DM\n4Rprohl4IwXwJpCBtyVRFGA1yQweIqKEhWXg5fA2pQt/sjMhyud2jGRncwqGQY7z2Rqt8i0REVFr\ndagA3o8++ghHjvi+nF977bUYN25cxHaSJOFHP/pR4P2bb76ZtD7YbDbMnTsXmqbhjjvuwG233Za0\ncxO1mZw8X0mqJ+qBJxt8f+osURVEzyq1Tuwd7zX4VusbyIw7UjiAHjgX94uqW5OwyjPFcHYjPdkc\nk8V74Zewu71Yt6MeRUurUF5dDwBweLxJDXy1u71tMunrdDMDLxElyEBWeU0DXvYU6j51W90DiYiI\niGJ56PrheOzmy1DmKYRbiz/c931hL8Yqh1j2kYiIiJIrNIBXtgCm+GMy5dW+Mey9R88FbT90yo5f\nVe4JvoQz9jhMshNYAIAlwQBeU4RnrSxzYhl4iYiSJSQBr8HapkQdXN4MoPD/C9koxE125s90Hy2G\nVxYFZr4nIqKU6VABvJWVlYHXhYWxAyemTJkS8bjWeuKJJ7Bv3z5cfPHF+J//+Z+knZeoXYgiYMr0\n/ZkI/yq1NA3ifUFZid3m2diVUYLVpmew0fRfuEn6IuyLa0tuTcJC94PYrQ02nLEXACxwBAKGk6Gn\nRcGgiyxx23lUDQvX1KCuoQlmWUq45FckFkWKOumrqhpsLk9SslOGlk8DIgf1EhGFMZBV3m7qiTpN\n/wrqWPdAIiIiorY0/4ZL0X/EVdihXhq3rSyoeK5HOTO3ERERUXLZvgt+b+0V95C6hiYsXFMDT5Qx\nZG9Ixo1oGXj9Y9E2lyfpldsSHU/3quHj163NwEtE1FpCyESoyhS8lG665QS/v2iIrmRnxWMH4L6J\nQ4K2iQIwfdxAVDxcgOKxA5LbTyIiogs61LfE2trawOurrroqZtucnBwMGjQIhw4dwtGjR3H8+HH0\n6dOnVdfftm0bli5dCgB44YUX0Ldv31adjygt5M0A+owAti8H6jYAbpuv7IQAQPX6Mhr2Gwsc/tT3\nvhMxCb6BPqvgxNXCnjitga/VfviR+0fYrQ0ObPuz9wpME7dGXY0HAG5NRE+cxa6MElgFJ2xaBirV\n8fj/1ULkXHYVPv7mu4QHFM85PZB0xmd7VA2rqvajdFY+puTlYN2O+oSuGaowr1/YpG9dQxPKqvah\nsrYRdrcXFkXClLwczCkYlvDKRFeEAF5mvSQi3SbMB2rfBtTYZRYb5YGGThvpHkhERETUXhZOvhRD\n9n+rq+2oc9uAL9cAY2altlNERETUddhDMvBaL4p7SFnVvqjBu5Gcd3pw3umGRZEhikLYWLRZFiGJ\nArxJSCrhZzUlNp0aaUybAbxE1N5CR7MZv0tpx20Pfq+zQiMAdAvJlH/LqL4onZWfjF4RERFF1aG+\nJe7Z0xxAN3Ro/MxnQ4cOxaFDhwLHtiaA1+FwYPbs2VBVFTfeeCN++MMfJnwuorSTk+dblVa8DPDY\nfWWvgObXogg01vqCfHet923XS7ECuVOBhi+A47tT0/8kuURoxBx5E8o8hditDUaRuA2lyoqYwbse\nTYAI4Cbpi8A2q+DEdGkrisRteHTvg/jFjAcxeWRfXPnc/8ERYUAvFo+q4eR5t+72m2qPYMmMMZhT\nMAwV1Q0xB0YlAYAQe6BTFgWUFATfr8ur68MyJtjdXqzbUY+K6gaUzspPaIWiM0KwriPJmRSIKI35\ns8qvnxcziLfJ5tR9ykj3QCIiIqL2lNtHAQR9zzMCAGx4EMgeGTcLDREREZEutpAAXsvFMZurqobK\n2kZDl1A1YNRT72Ls6CIAACAASURBVMOiSBg9oDt2HDwdNIZtdIxdj0Qz8EYK4O2W0aGmZomoCxJD\nMvAyfpfSTmisgmLWfag9JNO/1aREaUlERJQ8OvM2to3Tp08HXvfu3Ttu+169mkvvtDw2EYsXL8ae\nPXtgsViwcuXKVp0rmsOHD8f8OXLkSEquS5Q0ogiYMn1/tnwNNAf5Pvq1sXM+utd3XI9Bye9vkomC\nhunSVlSYFuEBqQKlygooQvQAUlUDBAiQhMgDhorgxQvyCpSt3YiDJ+0oHNPPcJ8EGPtibXd74fB4\nkdu/e8zVgrIo4MU7xuLFOG1KZ+UHZdSNV+7Mo2pYuKYGdQ1NBnrt44ww2Gl3JX8wlojSWN4M4P4t\nQP7dzSuuJVNQkyztnO7TPXLD8ISzihMRERGlhGwxlFkGqse3GJeIiIgoGWzfBb+39orc7oLqQ6cT\nrk5nd3vx+benkpppNxqLKcEAXm9432S9JfWIiFIkJH4XGlPwUrpxO4LfGxgnOe8Kfi7JzEjsGYCI\niMiIDvUt8dy55oAJszn+KhiLxRJ4ffbs2YSv+/nnn+PFF18EADzzzDO45JJLEj5XLIMGDYr5M378\n+JRcl6hNmTL1PwQrVkDJ9L3OjD2Q15EoghePy6tjBu8CgCggavBuy3P9UNyEVVX7MadgmC/rrQFG\nv1KbZRGqqkFVNdycmxOxze1X9MeaeRPwL2P6R82UO33cQFQ8XBC2X0+5M4+qYVXVfoM9j5ytwBEh\nK28kqqrB5vJAbYPBXCLq4PwLTp6oB55sAO56K2h3T+G87lP974ffoLy6Ptk9JCIiIkqcKAK5xcaO\nqdsAqFwcSURERElgD8nAa42egbe8uh4zf7ctxR1Kjgw5senU0Cx+ALBgTXVCCS6IiFKF8buUdty2\n4Pey/gy8NmdoBl5mziciotTr8p82LpcLs2fPhtfrxbhx47BgwYL27hJR5+afLKx5M37b3KnNGXw7\n2WShKCTv22yh+CkW19ZjyYwxePGOsfjx6mqkKs7U5VUx+mlfebGCSyNnOq/ceRTrvmiARZEwJS9y\nkG+k7L1Gyp1tqj2CJTPGQBT1RyxHysDriJOdoa6hCWVV+1BZ2wi72xv4neYUDGPWTKKuzp9JPmQi\nyRfAq+FCUemY/FnFL83O4j2FiIiIOo4J84Ev1wCazmx2bpuvvKQpM7X9IiIiovTWWAt883/B2w5+\n4tuekxe02V/JLUKC2g4pNFulHuXV9WFZ/ABg3Y56VFQ3oHRWftQEGkREqSSE3NQ0w+mCiDo4T2gG\nXkvkdhHYQj67rQlm4SciIjKiQ2Xg7datW+C1w+GI0dLHbrcHXmdlZSV0zeeeew47d+6EJEl4+eWX\nIUmp+wA+dOhQzJ/PPvssZdcmalMT5gNinPUBogxMeMj3unYtsPNtw5c5qqZHsJRVcMLsPg2H243i\nsQPw7iPX4MbLs3WEjhnnDwy2u734oO5oxDb+kmV2txfrdkTOLBktG67ecmd2t1d39lw/Z4T2Dnf0\nwO/y6noULa3Cuh31Yb9T0dIqZs0kIh/LRUFvJXjRQ3TAAgcExF9ckmhWcSIiIqKUyckDpv3O2DEn\nvklNX4iIiKhrqF0LvHQdcOZw8PajO33ba9cGbdZTya0jyTSYfc8foByNf1E4M/ESUXsIza3DDLyU\ndkIz8DKAl4iIOrgOFcDbs2fPwOsTJ07Ebf/dd99FPFavmpoa/OpXvwIALFiwAOPGjTN8DiMGDhwY\n86dfv34pvT5Rm8nJA6atjB7EK8q+/Tl5vtX36+cBmrEMvF5BQR8hPQa3NA3YYX4QlhcGA+sfQK54\nAKvuuwr/+EUh1j4wAb0ylfbuYphIgbpmWYJF0fclxqJIMMvGvvBEy8CrqhpsLg/UFgO+/gHSaIPA\nHCAlooCmhrBNX2TMxW7zbOzKKEGpsgIjhQMxT7Gp9kjQPYiIiIio3Y2ZhbPfu0l/+08NBvwSERER\n+fnH+FVP5P2qx7e/sdb31kAlt45AkQRDleQAfQHKXBRORO0lNKs4h7Yp7bhDkgXKZt2HnncFP89k\nZnT5ouZERNQGOtSnzYgRI7B/v+/L6v79+zFkyJCY7f1t/cca9eqrr8LtdkMURSiKgueeey5iu48+\n+ijotb/diBEjMHPmTMPXJeoS8mYAfUYA25cDdRt8K90UK5A71Zd5118ya/uy6AN7MUiaW091807B\n/0VZcNuAmjeB2reBaSsh5s3AlUMuxsThfbCxJjzArD3ZXV70sAQHFn/VeBZ9skw4eNIe5ahmhXn9\nDA96Rsr6+9n+7zDqqfdgd3thUSRMycvBnIJhhgZIS2flG+oHEaWR2rW+CaQQ4oVFJVbBienSVhSJ\n27DQ/SAq1IkRT+PPKm41mI2FiIiIKJVWSndgofZ/+ko+120AipcBYoda609ERESdgZ4xftXjmyuY\ntsJQJbeOoKfFWIINIwHKm2qPYMmMMYbHyomIWkMImWDVmIKX0o0nZK5aseo+1M4MvERE1A46VJRB\nXl4eNm/eDAD4/PPPcf3110dte/ToURw6dAgAkJ2djT59+hi+nv9hVFVV/OIXv9B1zF/+8hf85S9/\nAQAUFxczgJcolpw8YNoK3ySgxw7IluDJQFUF6srbr38dlT8jQZ8RQE5eh8zAawtZfVheXR8z421L\nkgCUFAw1fM1IGXjrTzevoLS7vVi3ox7lX9RD0jnpzAFSoi4sXnaYFhTBi1JlBb52DcBubXDY/gxZ\nNJxVnIiIiCiVVFXDG9+Y8KjeRxS3zfe93ZSZ0n4RERFRmjEyxn9hwZC/kltnCeLNMhjAayRAmYvC\niag9hE6JMXyX0o47NIA38Qy8/IwmIqK20KHSatx6662B15WVlTHbbtq0KfC6sLAwZX0ioiQQRd8k\nYGhQpcfumyQ0SugCQVL+jAQAelpNug8ToMICBwSEB7smU8sByLqGJt3BuwAgiSLKqvahrqHJ0DWd\nOgc9vRrg8ur7/f0DpETUBRnMAK8IXpTIkZ9PXR4VG7/sWJnSiYiIqGtzeLw45ZZg0zJ0tdcUq2/R\nLREREZERRsb4LywYEkUBU/JyUtuvJDKaec8foKyHRZG4KJyI2p7ADLyU5sICePVn4LU5g+eNM5mB\nl4iI2kCHCuC99tprkZPj+9K+ZcsW7NixI2I7r9eL3/72t4H3d955Z0LX+81vfgNN0+L+PPXUU4Fj\nnnrqqcD2DRs2JHRdIrpAthh6YA7QukjAZd0GQFXRr0f8VYEjhQMoVVZgV0YJdptnY1dGCUqVFRgp\nHEhJ1/zlQ+oamvDAH/6mO3gX8AXXrttRj3/5361Y/8VhQ8clGwdIibqoBDPAF4qfRlwgoQFYuKbG\n8MIEIiIiolQxyxLMioJKdby+A4b+c/iiWyIiIqJ4jIzxt1gwNLxPtxR2yribRmbj3UcKsOJfrwjb\npzcY189IgHJhXj9WhyOiNhd612H8LqWd0ABeWX8GXpsrOA7BwgBeIiJqAx1qZF6SJCxevDjw/p57\n7sGxY8fC2v30pz9FdXU1AGDSpEm45ZZbIp7v1VdfhSAIEAQB1113XUr6TEStIIpAbrHx4wSDty6j\n7TuKCxkJsrvH/lJRJG5DhWkRpktbYRWcAACr4MR0aSsqTItQJG5LetdsLi/Kq31BuAdP2uMfEIFX\nA368ugYlr36uK+jN6U5+AC8HSIm6qAQzwFsFJ8xwRT6lqqFs6z7YXB6oBhY1EBEREaWCP3CkzFMI\ntxZ/skn45gOgdm0b9IyIiIjSiigC/cbqa5s7FRBF1DU04cUP9qa2XzpJAvDrO/JRdu9VGD2gB3pE\nqIZnSaB09pyCYZDjjDvLooCSgqGGz01E1FohCXjB0WxKOx5H8HtFX8Uhr6oFVaEFgMwM488BRERE\nRnW4qLa5c+di8uTJAIBdu3YhPz8fixcvxltvvYXly5fjmmuuwQsvvAAA6NmzJ1auXNme3SWi1pow\nHxANPvhqBgI5i5cDc7cYv4b/UgkdlSSCBJz4Bmft7qhN/Jl3FSFyVmJF8KYkE+/eo2excE0NvEn4\nC/rzV8dQtLQK5dX1Mds5PckN4OUAKVEXlmAGeJuWAQfCJ3L81n1Rj9zF72HUU+9hwZpqZuQlIiKi\ndjWnYBj2YjAWuh+EW4szBKh6gfXzgMbatukcERERpYfGWuDQp/HbiRIw4SEAQFnVPkMV3ZJl6tj+\ngWy6FkXC9HEDsfGRazDtioGBNuYI2XYtivGp1Nz+3VE6Kz9qEK8sCiidlY/c/t0Nn5uIqLXEkAhe\nZuCltBOagVdnAG9o8C4AWJmBl4iI2kCHWy4iyzLeeecd3H333Xj33XfR2NiIZ599NqzdwIEDsXr1\naowaNaodeklESZOTB0xb6ZsoVD3JPfdFlwBX/Kvv9bSVwLr7AS1yoGs0wqW3Al9vTm6/9NK8UF++\nAR+6HwAwsblPUGGGCw6YMEfeFDV4108RvCiRK/Go+4Gkde29XY1JHWT1qBoWrqnBpdlZEQctVVWD\ny2ssgFeRBKiab7VkKA6QEnVx/gzwNW8aOmyTOh6ajvVvdrcX63bUo6K6AaWz8lE8dkCiPSUiIiJK\nWG7/7hg3+CJUfDsRRerHuEn6IvYBqgfYvhyYtqJtOkhERESd3/Zl+sbcB14N5ORBVTVU1jamvl8R\nvDjLlynY4fHCLEsRK7OZ5fAgHWsCGXgBoHjsAFyanYVVVfuxqfYI7G4vLIqEwrx+KCkYyrFpImo3\noXc/lRG8lG5CA3jl2NVu/Wyu8FiFRJ8DiIiIjOiQnzZZWVnYuHEjysvL8fvf/x6ff/45jh07hqys\nLFxyySW4/fbbMW/ePPTo0aO9u0pEyZA3A+gzwjdRWLfBV9ZckAwH24a56HvB1+h9KfDy9b7MQnqI\nMjDxkfYL4AUgah4skVZgj9cX/DVH3oQp4mewCk7YNBNM0Bf0XCh+gsW4B3aYdQWf+XU3y2hyhF+j\n+tBp3efQy6NqWFW1H6Wz8sP2GQ3eBYCi/AEYO6gn/rt8Z9D2Ib2sWP6v3+cAKVFXN2E+8OUaQ581\nf/DcaOgS8RYnEBEREaWSqmrYWd8EASominX6DqrbABQv8y14IiIiIopFVYG6cn1tj1QDqgqHR42Y\n3S7VzIoYCNiNFYhjiZBlT4qSRVcPfybeJTPGxAwcJiJqK3UNTdh/4nzQtrV/P4xx37uIY9iUPjyh\nGXj1VWS0OZmBl4iI2keHHo0vLi7GO++8g4MHD8LhcOD48eP45JNP8Pjjj+sK3r3vvvugaRo0TcOW\nLVsS7sfTTz8dOM/TTz+d8HmIKIacPF+WnyfqgScOA3KGvuMEKfpDtykz+H2/fCBvls4OCb6svUMm\nAUL7rnVQBC+eVl5DhWkRpktbYRWcAACr4IIs6AtstQou1JnnYFdGCUqVFRgpHNB1nM0VeTDV7U3N\natxNtUegRsiY6/QYC+CVRQElBUORZQ7/txszsCcHIYjowufO73Q3d2oyarThhi/jX5xARERE1NYc\nHi/sbi/McAW+R8bltoVPdBERESVBRUUFZs6ciSFDhsBsNiM7OxsTJ07EkiVL0NTUlLTrnD17Fu+8\n8w4efvhhTJw4EX369IGiKOjevTsuv/xy3HPPPdi8eTM0ZhtsPY/d9+ygx4VnDLMswaK0fSCM3mua\nlfBp02SE24qiAKtJZvAuEbWr8up6FC2twnfnXUHbqw+dRtHSKpRX17dTz4iSLDQDr6IvA+/5kAy8\nkiggQ+7QIVVERJQm+GlDRB2LKAKCqH/gT/MCj+4Fbv55+D5Tt/BtE+b7MuvGJAAzXvFl7d35DqDp\ny3ILAMjsg1TcWscLX0ERWp+ZwCo4MV3aigrTIhSJ2+K290QIpgV8AbLJIkCFBQ4I8GVfcHjCf09n\nhG3RyKKA0ln5yO3fHadsrrD90YKSiagLGjMLuOxWXU03qhMNZTBvKdriBCIiIqJU8gfIOGCCTdO5\nSFYyAbIltR0jIqIu5dy5cyguLkZxcTHWrl2LAwcOwOl04vjx49i+fTsef/xxjB49Gp988kmrr/Xi\niy8iOzsbM2bMwLJly7B9+3acOHECHo8HZ8+exZ49e/D6669jypQpuPbaa3Hw4MEk/IZdmGzRndEO\nihWQLRBFAVPychK6XGsCf/UeG6mdwJhbIkoDdQ1NWLimJuq8n7+aXF1D8hbVELUbtyP4vc5xDnvI\nHLJVkSDwQYCIiNoAA3iJqOMxOvCnZEbeV/83oLE2eFtOni+zbrQgXkECppcBo2/3Hbt+nv5+CxLw\n7+uBy27Wf4zeUyf5u4EieKNm4m0ZUBtNnyydk78xzjtSOIBSZQV2ZZRgt3k2dmWU4Dem38F8Iry0\nq0tnBl6TJKDi4QIUjx0AADh1PjyA1+42EJBNROnvhkVxF3ZoEPF79QcJXyLa4gQiIiKiVPIHyGgQ\nUamO13eQ1w0c25XajhERUZfh9Xoxc+ZMVFRUAAD69u2LRYsW4Y033sDSpUsxadIkAMChQ4dQWFiI\n3bt3t+p6e/fuhcPhC9gYMGAA7r33Xvz2t7/FW2+9hVdffRUPPPAAunXzJX3YunUrrrvuOhw7dqxV\n1+zSRBHILdbXNneqrz2AOQXDDCeIsCgSap+6GVcOvshoLwEAZp0BvN+GlJUHgM/2n2RAGxF1emVV\n+6IG7/qxmhyljdDKQoq+AN7zoQG8GW1fNYCIiLomBvASUcdjdOBv1zrgg8Xh+777BnjpOqB2bfD2\nvBnA/VuA/LubA4UVq+/9vL/69gPA9mWAqjPYU5SA218CskcB+z/Sd0w7UwQvSuTKwPtIAbXRgnyP\nnHFA0jnIGum8q03PYKPpvzBd2hoo5WoVnJgqfgSx7PqwfzOnzgDeDEVCbv/ugfcnmYGXiOKJt7AD\nAEQR94rvRrwf6mFRJJhlDvQQERFR2/MHyJR5CqFqer7DacD25SnvFxERdQ1lZWXYvHkzACA3Nxc1\nNTV49tlncdddd2H+/PmoqqrCwoULAQCnTp3CvHkGkilEIAgCbr75Zrz//vs4ePAgXn31VTzyyCO4\n4447cO+992LFihXYuXMnRowYAQDYv38/fvrTn7bul+zq9FS8E2VgwkOBt7n9u6N0Vr7u8WUAKMzr\nB1kW0c0cr7peZHoCeMur6zHjd9vDtn/7nY2l5YmoU1NVDZW1jbraspocdXqqF/CGzA/rDOC1OYPj\nAjJNiT13EBERGcUAXiLqmPQO/F062ZclV4sSlKl6fPsjZuJdATxRDzzZ4Ptz2grfdgBQVaCuXH9/\nh0/2Bf567IDbpv+4dlYofgoBKorEbagwLQoLqJ0ubUWFaRGKxG1hx3p1fIGPdt6rxT2QhShBuS3+\nzVRVg83lCStZEk1on07Z3GFt9J6LiLqQlgs7JFPYbkH1xLwfxlOY1w+iwcwyRERERMngD5D5GoPg\nhs4FRbvW+b4TExERtYLX68UzzzwTeP/666+jb9++Ye2ef/55jB07FoAvK+7777+f8DV//vOf4733\n3sPkyZMhipGnvwYPHozVq1cH3q9evRo2W+cZz+1wcvKA234dfb8o+xZO+8fdLygeOwDPTR2l6xKy\nKKCkYCgAJLxA2mKKfRxLyxNROnN4vLC79c2NsZocdXpue/g22azr0NAkUPGeH4iIiJKFAbxE1DHF\ny4joH/j7+v34WXJVT/QMQqIImDID5bsCjAbi7v+rb4JTtkQM/uqorIIT44XdKFVWQBEifyFXBG/U\nTLyx+DPvRjtvTKoHn735HEY99R5yF7+H6Sv0Bcy5PCo0rXmQ9dR5ZuAlIp1y8nzZYLTowSq+++Fy\nQ/dDSQB+OGlIEjpIRERElJjisQMw+dIeyBB0VpjxOICaN1LbKSIiSnsfffQRjhw5AgC49tprMW7c\nuIjtJEnCj370o8D7N998M+FrXnzxxbra5efnB7Lw2mw2fPPNNwlfkwAM+H74NsXiWyh9/5bminch\ncnrEz4YniwJKZ+UHqq4lGkhjiZOBl6XliSidmWUp7n3Qj9XkqNOLFMDrr8gbh83FDLxERNQ+GMBL\nRB1Xy4yI/gdrxdo88Dfqdv1Zcus2GMsgJFt8P3q57b6g32O7AG941teOStOA1Rk/jxtkqwhelMiV\nus4pQIUFDsyR/5RY8O4Fo0//BQ637+/S6dH3b+dRtaC2JxnAS0RGbF8Wd1GIIqh4WnlN9ym9GjDz\nd9uxYE01s7QQERFRu1BVDX/dfw42LUP/QRv/I7ySDRERkQGVlc1jiYWFhTHbTpkyJeJxqdS9e/fA\na7s9QqAHxaeqgOs8cCpkoXNmNvBEQ3DFuwic7uAx38yM5gAziyJh+riBqHi4AMVjBwTamJXY05rZ\nWZGfd2Idx9LyRJTuRFHAlLwcXW1ZTY46PU+kAN74GXjrGpqw+m+HgrYdOHme8zpERNQmGMBLRB1b\nTp5voO+JeuDJBt+f/oE/I1ly3bbID+zRiCKQW6y/vWL1BfxuXwag8wzgCQa+g08Vq5ArRM8w4M+4\nuyujBLvNs3G7WNWqvlkFJ8wID8CNp8neHEB92hYeTO3QWSaIiLoYVdW9KGS88FXM+2Eou9uLdTvq\nUbS0CuXV9Yn2kIiI0lhFRQVmzpyJIUOGwGw2Izs7GxMnTsSSJUvQ1JS8iYLrrrsOgiDo/vn22291\nnfebb77BY489htGjR6NHjx7o1q0bRowYgfnz56O6ujpp/afEODxe2NwaKtXx+g+KVcmGiIhIh9ra\n5oUgV111Vcy2OTk5GDRoEADg6NGjOH78eEr75nK5sHfv3sD7wYMHp/R6aaexFlj/APDLAcAv+gOr\n7w7er3p9iS7icIaUaB/Y04pdz9yCup/dgl3P3BKUedfPHCODZKZJQu9u0QJ4ox/H0vJE1BXMKRgG\nOU5griwKKCkY2kY9IkoRtyN8W5ykXeXVvvmbnfXBY3BHm5yc1yEiojbBAF4i6hxEETBl+v70ky26\nS14EAmyNmPgwAJ0RrrlTfX/qzQjcCcmCinLTYhSJ28L2FYnbUGFahOnSVlgFJwBjwcGR2LQMOGAy\nfNyZCwG8uxrO4NjZ8C9p550eaFrnCbImojZiYFGIIABz5U3GL6FqWLimhiu2iYgo4Ny5cyguLkZx\ncTHWrl2LAwcOwOl04vjx49i+fTsef/xxjB49Gp988kl7dzWql156CWPGjMELL7yAXbt2oampCefP\nn8fevXuxfPlyXHnllfjZz37W3t3s0vzlUss8hXBrBoYCjVayISIiamHPnj2B10OHxg8Gatmm5bGp\n8MYbb+DMmTMAgHHjxiEnR19WwpYOHz4c8+fIkSPJ7nbHULsWeOk6oObN5nGU0LFW+3e+NrVrY54q\ntOpahiJCFAVYTXLU7I+xAnG7WxRcnBl5PDlW6XiWlieiriC3f3eUzsqPGsQri0LEhRNEnU7oPI+o\nAJIctXldQxMWrqmBJ0qGfc7rEBFRW4j+SUVE1NH5s+TWvBm/be7U4OBfPXLygBufAv78dJx+yMCE\nh4xlBO6kFMGLUmUFvnYNwG7Nl5nCn3lXEZKbeWCTejW0BNaZNDncKK+ux8I1NYj0XUsD8M6Ow5jx\n/UGt7yQRpQ/Z4vvRma39FvFvEKAavk95VA2rqvajdFZ+Ir0kIqI04vV6MXPmTGzevBkA0LdvX8yd\nOxe5ubk4efIk3nzzTXz88cc4dOgQCgsL8fHHH2PkyJFJu/769evjtsnOzo65/w9/+APmzZsHABBF\nEXfeeSduvPFGyLKMjz/+GK+99hqcTieeeuopZGRk4Cc/+UlS+k7G+MulrtvhxRPuuXjBtFLfgf5K\nNqbM1HaQiIjS0unTpwOve/fuHbd9r169Ih6bbMePHw96Jlm0aFFC5/FnDO5SGmuB9fN8mfrjUT2+\ntn1G+MbZI3CFBvDK8cdYYgXadjcr6GlVIu77+8FTqGtoihiY1vysFD+7HkvLE1FnVjx2AC7NzsKq\nqv3YVHsEdrcXFkVCYV4/lBQMZfAupQdPSHInJXaCr7KqfVGDdwOn5LwOERGlGAN4iahzmzAfqH07\n9qChP8A2Edf8GIAG/Plnvj8jnXvaSt8gpKr6Mv12gSDeErkSj7ofAADMkTclPXjXrUlY5ZmS0LE7\n65vw7Lt1Mb9s/fSdWuT268HBCCJqJorA5bcBO9/W1dwqOGGGC3aYDV9qU+0RLJkxhhM+RERdXFlZ\nWSB4Nzc3Fx9++CH69u0b2D9//nw8+uijKC0txalTpzBv3jx89NFHSbv+1KlTW3X88ePHMX/+fAC+\n4N3169ejqKgosP+ee+7BD3/4Q9x4442w2WxYtGgRpk6dihEjRrTqupSY2ZOGYt2OeryjXoPntFdg\nFtxxj3EKZmQYrWRDRER0wblz5wKvzeb4350tlubPnLNnz6akTy6XC9OnT8exY8cA+J6Hpk2blpJr\npaXty/QF7/qpHmD7cmDaioi7wzLw6shsGzOA1yKj/lTkhdn7jp9H0dIqlM7KR/HYAWH75xQMQ0V1\nQ8wxZZaWJ6J04M/Eu2TGGDg8XphliePUlF5C5+ljBPCqqobK2kZdp+W8DhERpZLx1IZERB1JTp4v\ngFaMsh6hZYBtoq5ZADywFci/q/khX7EC+XcD928B8mZcuNaFjMBdQKH4KQSo+H/s3XtcVHX+P/DX\nOTMDAwlqKo7gNTQVnHAtNcy+alkmmXhBa+27rt8MzbT6rlZbW9mau7+2Wvrtz7yW3dbddSVvoIFa\nqSneolVYEtNyTYmL4i1QZmBmzvn9cWJkmNuZGyK8no8Hj86c8zmfz4f+wDmf8/683wnCKaSK+4La\nt0XWYIFljj3Dr6+WfPGd6p2SREQO7npKddMaORxmuC7L6I3JYoPZGtyND0REdGOx2WxYtGiR/fOa\nNWscgnfrvfHGGxg4cCAAYO/evdixY0eTzdGbP//5z6iqUsoHzp071yF4t96dd96JxYsXAwCsVqvD\n70xN65ZOShZdGSI+le5Udc+/bb0ggS+miIioZZAkCY899hj27t0LAIiPj8cHH3zgd38lJSUef776\n6qtgTb150HGzigAAIABJREFUkCSgOMv3+4o3K/e6UNtobURNBl69zn2bi1frcKTEffZmTyWwWVqe\niFobURQQGaZlMCK1PJZGGXi17jeSma02mCzq3tXwvQ4REYUSA3iJ6MZnTFMCaZOmKYG1gOsA20AY\njMDElcCLZcDvyoAXS5XMAY0Dg5Pnug8mrid4zyTQ3EUKtZgk7kFW2CvQCq4XYP0hycAzlrnIloZB\ngIQImCHAt/4vXK1T1S6nqBySl0BfImpluiQB3YeparpfSoTs51fpCJ0GehVZZYiIqOXas2cPysvL\nAQAjRozAoEGDXLbTaDR4+umn7Z/Xrl3bJPNTY926dfbj3/zmN27bpaen46ablODR7OxsmEyus6JR\naOm1GnvGutXWFFhk799jbheO4Yc9a0I9NSIiaqHatGljPzabzR5aKhp+R4iKigrqXGRZxhNPPIG/\n//3vAIDu3bvj888/R/v27f3us2vXrh5/unTpEqzpNw9Wk3+V5yw1yr0u1FoaZeD1EJxbT+8hA+/J\nyqte7/eU2CF1YByy5w3H5EFd7d+bInQaTB7UFdnzhrvM3EtERETNTOPvHfWxAy40XCvxhu91iIgo\nlBjAS0Qtg8GoBNS+WOo5wDZQogiE3aT81+08vGUEXunxYeFGYJK1+JPufeiCGLwLAKIATNTkIUO3\nAkfDZ+KY/jEcDZ+JDN0K9BdOB3Us7pQkIpdS3gRE74sw92oL8Yf4b1Vlh3EawmhgZgMiolYuNzfX\nfpySkuKx7dixY13edz0VFxfj9Gnl+3n//v3Rq5f7UsJRUVG4++67AQBXr17Fl19+2SRzJEeiKGCs\n0QAAOCb3wGGpj/d7BKDnrqfx9dZ3Qz09IiJqgdq1a2c/Pn/+vNf2Fy5ccHlvoGRZxpNPPon33nsP\ngBJ4u3PnTvTs2TNoY7QK2gj/1rR1kcq9LtRaGwXwqgiK8RTAq5anxA71mXiPLhqD4tfG4OiiMcy8\nS0REdCOxNArg1Ya7bdpwrcSbFGMXvtchIqKQYQAvEbUs3gJsm4K3jMC3TQUSUq/f/IIgHFbohNAE\nv44WD2OyZi8ihVoASrbfyZq9yA57GePF/UEbhzslicglgxGY+K7XbOmCbMN/l/8fpPfxnt2lsUfv\n7O7v7IiIqIUoKiqyHw8ePNhjW4PBgG7dugEAzp49i8rKyqDMYdy4cYiLi0NYWBjat2+PxMREpKen\nY9euXV7v9WX+jds0vJea1uPDb4FWFCBAglH8QdU9oiAjKf8FnCw6GNrJERFRi9O3b1/78alTrjOe\nNtSwTcN7AyHLMubOnYuVK1cCAOLi4rBr1y7Ex8cHpf9WRRT9W9PuN87tWn1to+QKYRrva/pqs+R5\noiaxA0vLExER3aAunHT8XPFvYNMTQIXr9aj6tRJPtKKAmcPdb14nIiIKFAN4iYhCwVtG4OS57rP0\n3gBCuW4puOlbJ9iCmomXOyWJyC1jGtDnPu/tJCviT/7Vp651GgEDu/pfopOIiFqG48eP2489Za91\n1abhvYH49NNPUVZWBovFgsuXL6O4uBirV6/GPffcg3vvvRfl5eVu720O8yff1WeUi0SdfcOkGjrB\nhouf/98QzoyIiFoio/FaZbT8/HyPbc+ePYuSkhIAQExMDDp16hTw+PXBuytWrAAAxMbGYteuXejd\nu3fAfbdayXO9bnh2vmee20tOGXh1KgJ4wwIP4GViByIiohaqaD2w7y+O52QJKFwLvDtSud5I/VqJ\nuyBerSgwGz8REYUcA3iJiELJXUZggxGYuMr3IF5N2LVMvjrXpceaG9l1NTK/6AQbZmoDLxssCuBO\nSSJyT5KAU3tUNX1I2IsEwXsmIXv722JhttrclmokIqLW4fLly/bjjh07em3foUMHl/f6o3379pg6\ndSrefPNN/P3vf8c///lPZGRkICUlBcLPu+l27tyJ5ORkVFRUXPf5//jjjx5/PAUak7PUgXFY88RI\n1MjuS0i6knh5FyRbaKqwEBFRy/TAAw/Yj3NzPa/n5eTk2I9TUlICHrtx8G6XLl2wa9cu9OnTJ+C+\nWzWDEZj0LgCVSRG6DwNik9xerrU0CuDVen9lqVcR5OtNitHAxA5EREQtTUURsGm2ErDrimRVrrvI\nxJs6MA4b5gxzOn9/QmdkzxuO1IFxwZ4tERGRgxs3/SMR0Y3OmAZ06gscWA4UbwYsNd7vkWxA8pPK\nYmnCBGXHoBdWWYAIOaRZc5tSingIz2EW5AD2oDwyuBt3ShKRe1aTur/JALSChKywhVhgmYNsyXmB\npyEBwKdF5dh4pBQROg3GGg14fPgt/HtERNQKXblyxX6s1+u9to+IuLZ5r7q62u9xX3/9ddx+++0I\nCwtzujZ//nx8/fXXmDx5Ms6cOYPTp0/jsccecwioqdeU8+/WrZtP7cm7gd1vRrY8FBMEdRuWACBS\nqEWN6Qoi27QN4cyIiKglGTFiBAwGAyoqKrB7924cPnwYgwYNcmpns9mwZMkS++dHHnkk4LHnzZtn\nD941GAzYtWsXbr311oD7JShr2j/mA4dWem4naICUNz02qbU6bg4KV5EVV68LLHOuAGDm8FsC6oOI\niIiaoQPLlCBdTySr8l5+4gqnS3HtnRNn/WHiAMREeV/3IiIiChQz8BIRXU8Go/KQ8GIpYJzivb1s\nUx4sAKVkmZcMvhZZxG5p4HUN3hWCPHakUAs96nybAyREwAwRVkTAjH6GNsGdFBG1LNoIQBepurlO\nsCFDtxz9hdMe28m4Vh7SZLFh4+FSjF+ah6yC0kBmS0REpFpycrLL4N16d9xxB7Zt24bwcCU7a25u\nrteS13TjEUUB3/f+NSyy+mXBGjkc+gg+RxERkXoajQYLFy60f54+fTrOnTvn1O6FF15AQUEBAOCu\nu+7CmDFjXPb30UcfQRAECIKAkSNHuh33qaeewvLlyvqpwWDA7t270bdv3wB+E3LS0UsmY1GrZOo1\nGD02q7P6k4HXfQCvmmXo58b05UZqIiJykp2djSlTpqBnz57Q6/WIiYnBsGHD8NZbb6Gqqipo41RX\nV2PDhg2YN28ehg0bhk6dOkGn0yE6Ohr9+vXD9OnTsW3bNsjBLG/aGkgSUJylrm3xZqV9Iz+ZLE7n\n2kboAp0ZERGRKszAS0TUXHz7qbp2xZuB1GU/B/+uUsp9uNhRaJE1eNbyBF7XrVbVrSwHP9g2FGrk\ncJjhPuigof7CaTyuzUGKeBARgsX+O1o/DwfOTlKCoL0sJBNRKySKQEKqqizn9XSChN/rPsbDdQu9\nN27AKslYkFmI+E5tcEunm6DXaljGkYioFWjTpg0uXboEADCbzWjTxnNgpMlksh9HRUWFdG79+/fH\nr371K6xerTxHbN26FYMHD3Zo03C+ZrPZa5+BzL+kpMTj9fLycgwZMsSnPglIGX0/njvxJN7WLIMo\neH8x+FXE3RipCSzjHRERtT7p6enYtGkTPvvsMxw9ehRJSUlIT09HQkICLl68iLVr1yIvLw8A0K5d\nO6xatSqg8V5++WUsXboUACAIAp555hkcO3YMx44d83jfoEGD0L1794DGblVqLjl+FjRK4gldpFI1\nrr6CnBe1jQN4dd4DeCM8BPB6+kYjQAnefXJUb69jEBFR63HlyhU8+uijyM7OdjhfWVmJyspKHDhw\nAO+88w4yMzNx5513BjTW22+/jZdeesnlOkp1dTWOHz+O48ePY82aNbj77rvxt7/9jd9P1PKhqiIs\nNUr7sJscTlc1CuDV60RV1QGIiIiCgQG8RETNgb8PFsY0oFNfJStv8WbAUgNZF4n8yP/Cq+dG4Ae5\nM/6fsExVt4KgZOzVCc67DpuTIrkXZBUJ5MeLecjQrYJOuFaKrT5AWSvVKoF5RZ8oQdDGtFBNl4hu\nVHfO8SmAFwCGCN8iQTiFYrmXT/dZJRmpy/bBJsmI0Gkw1mjA48NvYUYYIqIWrF27dvYA3vPnz3sN\n4L1w4YLDvaE2atQoewCvq4CXhnM4f/681/4CmX/Xrl19ak/qJMRGY1Tak3j6ExFLtO94DOKVZeBg\n9c24UliGcUmxTThLIiK60Wm1WmzYsAHTpk3D1q1bUVFRgcWLFzu169q1K9atW4fExMSAxqsPBgYA\nWZbx4osvqrrvww8/xIwZMwIau1UxNQrgNU4FxmUoFY1E9Rn+a602h89qgmTOXPC+hi4ACNOKqLVK\n0GtFpBi74PG7uc5CRESObDYbpkyZgm3btgEAOnfu7LTRaN++fSgpKUFKSgr27duH/v37+z3eiRMn\n7MG7cXFxGD16NG6//XbExMTAbDbj4MGD+Nvf/oYrV65g7969GDlyJA4ePIiYmJig/L4tWn1VRTXv\n2nWRSvtGGmfgjdYz+y4RETUd9U/SREQUOr6Ua2/8YGEwAhNXAC+WAr8rg/BiKdo8/B6+E3rCjDDU\nyOGquq2RwzG17hXf5x5EairC3C6c8Fimvr9wGqt1b+H/6ZY7BO+6JFmBjbOAiiIfZ0pELV4H3zOy\nCALwhC4XAKCi6qMDm6T8ATRZbNh4uBTjl+Yhq6DU5zkQEdGNoWEZ51OnTnlt37BNU5SA7tSpk/34\n8uXLTteb+/xJndSBcXhy7nNYKkzz+CwmCMBvtZnQr5+GdVtymm6CRETUIkRFRWHLli3YvHkzJk2a\nhG7duiE8PBwdO3bE0KFD8cYbb+Cbb77BsGHDrvdUSa3GAbw3dVCSTfgQvAu4yMCrYjFlbf4Zr21k\nAA8au6D4tTEofu0BvP3wQAbvEhGRk9WrV9uDdxMSElBYWIjFixfjl7/8JebOnYu8vDwsWLAAAHDp\n0iXMnj07oPEEQcD999+PHTt24MyZM/joo4/w1FNP4eGHH8avf/1rrFixAt9884193eTUqVN44YUX\nAvslW4v6qopqJExw+s4iSTLOVTtmRm4bwQBeIiJqOgzgJSJqDgJ8sLD38fNCaUJsNDKmJkEjapAr\nqSsnmyMNRYHcR3XAbygIKqrGawUJM7W5Lq+NF/cjO+xljNYcUdUXAKW8W87z6idJRK2DLxsrGngo\n/DA2zhkKW4DJzK2SjAWZhSguqwqsIyIiapaMxmslhfPz8z22PXv2LEpKSgAAMTExDsG1odIwq66r\njLm+zL9xmwEDBgQ4OwqmfoYodJdKvD4/CQIwWnMEk75+FDv+uaRpJkdERC1KamoqNmzYgDNnzsBs\nNqOyshIHDx7E888/j7Zt23q9f8aMGZBlGbIsY/fu3S7b7N69297Glx9m3/WR6aLj5wj/KkTUWhoF\n8Oo8v7KUJBk7jp5V1XfuNxXQazUQRbWLxERE1JrYbDYsWrTI/nnNmjXo3LmzU7s33ngDAwcOBADs\n3bsXO3bs8HvMP/7xj9i+fTvuu+8+iG42vfTo0QPr1q2zf163bh1qalRWcG3tkucCopcC5KIWSH7S\n/rG4rArzMwuQ+Op2PL/eMdkTA3iJiKgpMYCXiKi58OPBwpPUgXHInjccp/r8Dyyy5/JjFlmD961j\nIUNUHfB7PaWIhyDAcYG3v3AaGboV3rPuunJmP1BWGKTZEVGL4MvGigYESw3W7T8BFQnFvbJKMt7P\n857VkIiIbjwPPPCA/Tg31/XmtHo5OdcynqakpIRsTg3t2rXLfuwqY25CQgK6d+8OADh27Bh++OEH\nt33Vl34EgMjISIwYMSK4k6WAmC0W3C8cUt1eJ0i479grqP5gMiuZEBERtVaNM/BGtPerm1qr4zpu\nuNbzGrbZaoPJom7t12SxwWz1Y52YiIhahT179qC8vBwAMGLECAwaNMhlO41Gg6efftr+ee3atX6P\nefPNN6tql5SUZF+Lqampwffff+/3mK2KwQhMXOX+uqhVrhuUTelZBUolxI2HS11+v6hR+Z2DiIgo\nGBjAS0TUXNQ/WLgL4m30YKFGQmw0np0+GZrJqyC76dcia7DAMgfH5B4AgNXWFK8Bv9dbpFALPeoc\nzj2uzfEveLfegaUBzoqIWhw1GysakXWRyD56yXtDlXKKyiFJwQgHJiKi5mTEiBEwGAwAlExxhw8f\ndtnOZrNhyZJr2U4feeSRkM/txIkTWLNmjf3zuHHjXLZ7+OGH7cdvv/222/7effddXL16FQAwfvx4\nREb6nuGeQkcv1yFSqPXpHkEAos58DnnVSKBofWgmRkRERM2XUwCvuoCkxmqtjgkawjSeX1nqtRpE\n6NStW0foNNB7CQgmIqLWq+Fmam+bpceOHevyvlCKjo62H5tMpiYZs0VInASgUfZ9rR5ImgbM2g0Y\n0wAomXcXZBbC6uHdy7GyKlZIJCKiJsMAXiKi5sSYpjxAJE27VrpdF+n0YOEr8bYpEFz0e6bbBEy0\n/hHZ0jB722NyDyywzIEkN9/yYjVyOMwIs38WIGGs+FVgnX67FZACrHlPRC2Lt40VLtj6jYfJGrwp\nMGMMEVHLpNFosHDhQvvn6dOn49y5c07tXnjhBRQUFAAA7rrrLowZM8Zlfx999BEEQYAgCBg5cqTL\nNkuWLMH+/fs9zuvIkSMYM2YMzGYzAOD+++/H0KFDXbZ99tlnERUVBQBYtmwZsrOzndocOnQIr7zy\nCgBAq9Xi1Vdf9Tg+NT0xLBK1gt6vewXZCmnjbGbiJSIiam1qLjp+9jsDr+NabLjO8ytLURQw1mhQ\n1XeKsQtEsfmubxMR0fVVVHTtOXbw4MEe2xoMBnTr1g0AcPbsWVRWVoZ0bnV1dThx4oT9c48ePUI6\nXotS+xPQuD7ivHxg4gqHBFmr8/7jMXgXP/fCColERNRUfEspRkREoWcwKg8SqcsAqwnQRiil3EPQ\nb3dRxJtlVXg/7xRyisphstgQodMgbEAacOI9wOZbJqamkiMNhdxgD4oevmeNcmKpUf6/hN0U4OyI\nqEUxpgGd+gI7/wic8LK7XtRCTJ6LiIIy1SUdvWHGGCKilis9PR2bNm3CZ599hqNHjyIpKQnp6elI\nSEjAxYsXsXbtWuTl5QEA2rVrh1WrPJQBVGHnzp145plnEB8fj9GjR2PAgAHo0KEDNBoNysrK8MUX\nXyAnJwfSz5vaevTogQ8//NBtfzExMXjnnXcwY8YMSJKEiRMn4pFHHsF9990HjUaDffv24eOPP7YH\nAy9atAj9+vUL6HegEBBFmHqPQ/h3/mXSFWUrLu/8C9pNez/IEyMiIqJmSZZdZOD1L4C3rnEAr4r1\nj3v6xmDj4VKPbbSigJnDe/k1JyIiah2OHz9uP+7Vy/u/Gb169UJJSYn93k6dOoVsbv/4xz/w008/\nAQAGDRpkr+BEKjT+jgIAkR0dPkqSjNyiClXd5RSV462027gpiIiIQo4BvEREzZUohiaYtFG/CbHR\nyJiahLfSboPZaoNeq4ForQH+T/MM3rXIGrxvHetwzoww1MjhAQXxStoIiNqIQKdHRC2RwQhM+yfw\n70xg8xxAcpNit+sQezaYjYdLIUCCHnUwI8xh04Evxg4wcHGIiKiF0mq12LBhA6ZNm4atW7eioqIC\nixcvdmrXtWtXrFu3DomJiUEZ9+TJkzh58qTHNmPGjMEHH3yA2NhYj+1+/etfo6amBvPnz4fZbMY/\n/vEP/OMf/3Boo9Fo8NJLL+F3v/tdwHOn0Gh37/9C+m4TRPi3ASniu5+rmQRj4ykRERE1b7XVgNzo\nO0Pkzf511ajiULjW83eJrIJSLMgs9NhGKwrImJqEhNhoj+2IiKh1u3z5sv24Y8eOHloqOnTo4PLe\nYKusrMRvf/tb++eXX37Zr35+/PFHj9fLy8v96rfZq2kUwKsJB3SO737NVpvqBCz1FRIjwxhWRURE\nocV/aYiICIBSgsz+AKKNAHSRSlZaP8gyIIQg3swia/Cs5QmcljshEjUwQQ8ZImSIyJWGYLJmr999\nb6odDO2/y5E6MC6IM6aWLDs7G2vWrEF+fj4qKioQHR2N3r17Y+LEiZg9ezaio4PzomDkyJH48ssv\nVbc/deoUevbsGZSxqZHbpgIx/YFPnwVKDjpfP7MfeHckfnv7AgzX7ccD4leIFGpRI4cjVxqC1dYU\nHJN9K3f1aVE5IACPD7+FL5+IiFqgqKgobNmyBVlZWfjrX/+K/Px8nDt3DlFRUYiPj8ekSZMwe/Zs\ntG3bNuCxMjIy8NBDD+HQoUMoLCzEuXPncP78edTW1qJt27bo2bMnkpOT8eijj2Lo0KGq+50zZw5G\njx6NlStXYtu2bSgpKYEkSYiNjcW9996LWbNm4Re/+EXA86cQMhghTloJeWM6/HmMC5fNkOpqIOrb\nBH1qRERE1MycOeB87vNFwPD/dShN7Y0sy6htnIFX5z6At7isCgsyCz2WuxYA/OXhgRiX5HkTGhER\n0ZUrV+zHer3ea/uIiGtBoNXV1SGZU11dHSZPnoxz584BACZMmICJEyf61Ve3bt2CObUbR+MMvJE3\nO72w1ms1iNBpVAXxskIiERE1FQbwEhGRM1EEElKBwrV+3S4IQKUUjY5CVdACeWUIOCL3QYZuBbSC\nsrhrlUXslpKQYZ2K76Q4yKJ/gcMWWYPV1rH4LrMQfWKiGCRHHl25cgWPPvoosrOzHc5XVlaisrIS\nBw4cwDvvvIPMzEzceeed12mWFFKlX7u/JlnROf8NTGqwphMp1GKyZi/Gi/uxwDIH2dIw1UPVWiVs\nPFyKrCOlePvhgdxkQETUQqWmpiI1NdXv+2fMmIEZM2Z4bBMfH4/4+HjMnDnT73Hc6dOnDzIyMpCR\nkRH0vqmJ3DYVwjcbgBPbfL61Rg4HhDBEhmBaRERE1IwUrQc2znI+/816oHgzMHEVYExT1ZXFJkNu\nFIsb7iFAZnXefzwG7wKADGDX8UoG8BIR0Q1HkiQ89thj2LtXSVQUHx+PDz744DrP6gZkuuj4OaK9\nU5OGVRS9GRbfgRUSiYioSTCAl4iIXEueCxR94r5UvBc3CbWYZ5mLd3TLEIxnGwEyhojfOpzTChJG\na45glFgAQPA7eHeBZY6SFVOW8X7eKWRMTQp8wtQi2Ww2TJkyBdu2KYENnTt3Rnp6OhISEnDx4kWs\nXbsW+/btQ0lJCVJSUrBv3z70798/aONv2rTJa5uYmJigjUcuHFjm999FnWBDhm4FvquL8zkTr00G\n/vefBdAIAl9EERERUWjc8zLk7z+H4ON3ne3yUKTqdCGaFBERETULFUXAptmA7CZbnWRVrnfqqyoT\nb63VuZ9wresMvJIkI7eoQtU0c4rK8VbabQy2ISIij9q0aYNLl5RsrWazGW3aeK4oYzKZ7MdRUVFB\nnYssy3jiiSfw97//HQDQvXt3fP7552jf3jn4VK2SkhKP18vLyzFkyBC/+2+2GmfgdRHACygVD7ML\nyrxuDtp9ohJZBaVMrEJERCHHAF4iInLNYFSyJmya7VewWqRQi/s0R4ISvOuNRpCh5FjwTJLhMJ8y\n6WbMtDznEEjHRV7yZPXq1fbg3YSEBOzcuROdO3e2X587dy6effZZZGRk4NKlS5g9ezb27NkTtPEn\nTJgQtL7ID5IEFGcF1IVOsGGmNhfPWp7w+V4ZwFNrj8Amy1wwIiIiouAzGFE3binCsp5QvTlSloEo\nXMHbf9uAlNH3s5oJERFRS6VmQ7NkBQ4sByaucH1ZkmG22qDXalBrlZyuuwvgNVttqspcA4DJYoPZ\nakNkGF9/EhGRe+3atbMH8J4/f95rAO+FCxcc7g0WWZbx5JNP4r333gMAdO3aFTt37kTPnj0D6rdr\n165BmN0NqMZ7Bl4ASIiNRsbUJMxfVwCbh9fLNknGAlZvJSKiJuD6aZiIiAhQSp7N2g207+XzrVZR\nj/vFfwV9SoFo/A66FB2dsmDWL/ISNWaz2bBo0SL75zVr1jgE79Z74403MHDgQADA3r17sWPHjiab\nI4WY1QRYagLuJkU8BAHOL6rUkAEsyCxEcVlVwPMgIiIiakyX8JBPlU0EARgtHsYzJ2fh3eVvIKvA\newlKIiIiusH4sqG5eLPSvuGpsirMzyxA4qvbkbBwOxJf3Y6XN3/jdGu4TuOyS71Wgwg31xqL0Gmg\n16prS0RErVffvn3tx6dOnfLavmGbhvcGQpZlzJ07FytXrgQAxMXFYdeuXYiPjw9K/61KRRGw6Qlg\n758dz8vuo3NTB8ZhZF/vFS2tklK9lYiIKJQYwEtERJ7FJAJXzvp8mzZhPCKF2hBMyH+NX0RHwzkQ\nj4u85M6ePXtQXl4OABgxYgQGDRrksp1Go8HTTz9t/7x27dommR81AW2E8hOgSKEWetT5fT8XjIiI\niChUxLBI1Ap6n+/TCTa8pVmB9z7J5kYjIiKilsaXDc2WGqX9z7IKSjF+aR42Hi61Z9E1WWzY9k2F\n061hGtevLEVRwFijQdXwKcYurKxGREReGY1G+3F+fr7HtmfPnkVJSQkAICYmBp06dQp4/Prg3RUr\nlKz1sbGx2LVrF3r37h1w361O0Xrg3ZFA4VrnagEncpXrLkiSjP0nz6saIqeoHJLkvRIsERGRvxjA\nS0REnvmTcVLUAnfNA3SRoZlTkLQVrjqd4yIvuZObm2s/TklJ8dh27NixLu+jG5woAv3GBdyNSdbB\njLCA+uCCEREREYWEKMLU27/vOzrBhhliDjcaERERtTTaCPXrvLpI++bn4rIqLMgshFXF+oUgADqN\n+zXZx4ffAq2XNVutKGDmcN8ryRERUevzwAMP2I+9vcPJycmxH3t7N6RG4+DdLl26YNeuXejTp0/A\nfbc6FUXAptnOgbv1ZAnYOEtp14jZaoPJoq5SIqu3EhFRqDGAl4iIPPNlgRZQgncnrgK6JAEJqaGb\nVxC0hWMALxd5yZOiomsP+IMHD/bY1mAwoFu3bgCU3dmVlZVBmcO4ceMQFxeHsLAwtG/fHomJiUhP\nT8euXbuC0j+pcNdTAXcRDiseEg8G1AcXjIiIiChU2t37v5AErV/3poiHkFtUyo1GRERELYkoql/n\nTZigtAewOu8/qoJ3ASBcK0JoXD6tYbex0ciYmuQ2iFcrCsiYmoSE2Gh18yQiolZtxIgRMBiU7O67\nd+/9nd6oAAAgAElEQVTG4cOHXbaz2WxYsmSJ/fMjjzwS8Njz5s2zB+8aDAbs2rULt956a8D9tkoH\nlrkP3q0n24Cc551O67UahGvVhUuxeisREYUaA3iJiMgzXxZo2/cCZu0GjGnK5+S5SkBvMxUh1CEM\nFgCAhou85MXx48ftx716eQ/0btim4b2B+PTTT1FWVgaLxYLLly+juLgYq1evxj333IN7770X5eXl\nfvX7448/evzxt98WqUsS0H1YQF2IgowM3Qr0F0773QcXjIiIiChkDEaIk1ZB9iOIN1KohWwxcaMR\nERFRS6NmnVfUAslPAlDKUucWVajuPkzj/XVl6sA4ZM8bjsmDuiJCp6yJROg0mDyoK7LnDUfqwDjV\n4xERUeum0WiwcOFC++fp06fj3LlzTu1eeOEFFBQUAADuuusujBkzxmV/H330EQRBgCAIGDlypNtx\nn3rqKSxfvhyAEry7e/du9O3bN4DfpBWTJKA4S13bM/uBskKHU6Io4M5bOqi6ndVbiYgo1JpvVBUR\nETUfyXOBok8872IUNMDDawCD8do5g1HJxuupfMl11hZXYYjrjjcmM3iXPLt8+bL9uGPHjl7bd+hw\n7cG/4b3+aN++Pe677z7ccccdiIuLg0ajQWlpKb744gvk5uZClmXs3LkTycnJOHjwoH3nuFr12YJJ\npZQ3gVX/pZRf8pNOsGGmNhfPWp7wbwpcMCIiIqJQMqbB3K43Pn33FTwk7kO4oC4gt0YOh6CL4EYj\nIiKilqjjrcC5YtfX6quy/bw2rJSlVr+hR20GvPpMvG+l3Qaz1Qa9VsP1ESIi8kt6ejo2bdqEzz77\nDEePHkVSUhLS09ORkJCAixcvYu3atcjLywMAtGvXDqtWrQpovJdffhlLly4FAAiCgGeeeQbHjh3D\nsWPHPN43aNAgdO/ePaCxWySrCbDUqG9/YCkw+T2HU6P6dcKXJzxX0GT1ViIiagoM4CUiIu+8BeI2\nWqB1YEwDOvUFDiwHijcrD1O6SKWcmukicGJb6OfvQbRwFQsfSmTwLnl15coV+7Fer/faPiIiwn5c\nXV3t97ivv/46br/9doSFhTldmz9/Pr7++mtMnjwZZ86cwenTp/HYY48hJyfH7/FIBYMRmPQesOFx\nAP6Xh54g5uEDYQyKZd8Xfy7X1KG4rIp/u4iIiChkwuOS8Dc8iFTsU31PjjQUY42xDKQhIiJqSYrW\ne07Q0GMYMPZNh7VhvVaDCJ1GdRBvuM63gqGiKCAyjK84iYjIf1qtFhs2bMC0adOwdetWVFRUYPHi\nxU7tunbtinXr1iExMTGg8eqDgQFAlmW8+OKLqu778MMPMWPGjIDGbpG0EcqP1aSu/bdblay94rXv\nHO0jnd+7OQzB6q1ERNRE+HRLRETqeArETX7SdfBuPYMRmLgCSF2mPEhpI5QHpIoi4PvPr2t23ra4\niss1lus2PpE3ycnJHq/fcccd2LZtG37xi1+gtrYWubm5yM/Px+DBg1WPUVJS4vF6eXk5hgwZorq/\nVsGYBggisP5//O5CK0jICluIBZY5yJaGAQAEABpRgFXyHBj8xbfn8OWJSmRMTWKJSCIiIgoJURTw\n0s07oftJXeCNLAPfS11w4So3GhEREbUYFUXeq6uVfOV0ShQFjDUasPFwqaph9Dq+riQioqYXFRWF\nLVu2ICsrC3/961+Rn5+Pc+fOISoqCvHx8Zg0aRJmz56Ntm3bXu+pUmOiCPQbB3zzibr2lhrlHXXY\nTfZTVSbH98OiAEgyEKHTIMXYBTOH9+LaBhERNQk+ERMRkXruAnHVEkWHByOvmX2bQLRwFT+ZGMBL\n3rVp0waXLl0CAJjNZrRp08Zje5Pp2q7fqKiokM6tf//++NWvfoXVq1cDALZu3epTAG/Xrl1DNbWW\nLWECoJkN2Or87kIn2JChW4Hv6uLwndATGVOT8NBtsSj48RKmvXsQZqv7QF6rJGP+ugL0iYniIhIR\nEREFnyTh9qt7VDcXBGCBdj3GnxiI8d+d50YjIiKiluDAMu/rtpJVSfowcYXD6ceH34LsgjKvm5QB\nIFzrWwZeIiKiYEpNTUVqaqrf98+YMcNrltzdu3f73T+5cddT6gN4dZHKe+0GqsyO33FG3NoJyx4d\nBL1Ww8pCRETUpPhETEREvqsPxPUleNcdYxowazeQNE15eAKUByihaf6JUjLw+h98R61Hu3bt7Mfn\nz5/32v7ChQsu7w2VUaNG2Y+PHTsW8vEIykaGAIJ36+kEG16L+RLZ84YjdWAcRFHAoO43IyrCc/km\nALDJwHOfFAQ8ByIiIiInVhNEtaUof6YTbJipzYVVkrEgsxDFZVUhmhwRERGFnCQBxVnq2hZvVto3\nkBAbjYypSdCoCIBhAC8RERH5rEsS0O1OdW0TJji9165uFMAbHaFDZJiWwbtERNTk+ERMRETXX31m\n3xdLgd+VAb/aDMiS9/t8oYtUgoQNSQ6n2wpXnUqkELnSt29f+/GpU6e8tm/YpuG9odKpUyf78eXL\nl0M+HkHZbFC/8SBAg2v2IMFwLauzJMm4eKVW1b1Hy6vx4JK9+Kb0J9TUWSGpyGxDRERE5JWf33VS\nxEMQIMEqyXg/z/v3ZiIiImqmrCal3LQa9WWpG0kdGIdF4xOdzjcOiwnT8HUlERER+WHEc97biFog\n+Umn09Vmx/fDUXoWMCciouuDT8RERNR81Gf2/deHQepPC0x6TwkKfrFUCRJu61jCNRpXcZkBvKSC\n0Wi0H+fn53tse/bsWZSUlAAAYmJiHIJrQ6VhVuCmyPhLUP5mJfhfVstBoxdd6w+XwOZDHO7RsiqM\neycPCQu3I/HV7ZifWYDisipIksygXiIiIvKPn991IoVa6KFUKcgpKuf3ECIiohuVL5t5XJSlrhcT\nFe50rvG3g69+uGhfyyAiIiJSLbyt5+uiFpi4Skkm1UhV4wy8el0wZ0ZERKQaA3iJiKh5kSTgWHbg\n/Qga4PGdwG1TlaDg+rIosuPy8DPajRj3/SKgoijwMalFe+CBB+zHubm5Htvm5OTYj1NSUkI2p4Z2\n7dplP26KjL/0s+S5ygJQoBq86Couq8KLG/z/m2Sy2LDxcCkeXLIX/V7Z5hTUS0RERKSaH991TLIO\nZoQpxxYbzFZbKGZGREREoebLZh4XZanrmSzevwtIMrDxcCnGL81DVkGpL7MkIiKi1qy6rNGJn/P8\n11dmnbUbMKa5vtUpAy8DeImI6PpgAC8RETUvvpRm8+S2h4HYJMdzReuB77Y7nNIJEoZU7wBW3g3s\n/b+Bj0st1ogRI2AwGAAAu3fvxuHDh122s9lsWLJkif3zI488EvK5nThxAmvWrLF/HjduXMjHpJ8Z\njMru7UCDeBu86Fqd9x+fsu+6IwOos0kArgX18kUYERER+cSP7zrhsOIh8SAAIEKngV6rCdXsiIiI\nKNTUbOZxU5a6Xq1FUj2cVZKxILOQG5CJiIhInapGAbzdhjpWZnWRebdedaMMvFH6ICRrISIi8gMD\neImIqHnxpTSbO64WjSuKgE2zAdndgrEMfPF7YO/bgY1NLZZGo8HChQvtn6dPn45z5845tXvhhRdQ\nUFAAALjrrrswZswYl/199NFHEAQBgiBg5MiRLtssWbIE+/fv9zivI0eOYMyYMTCbzQCA+++/H0OH\nDlXzK1GwGNOUXdxJ0679/arf3R1/n/f7BY3yN0uSIJmvYFtR4x3jwcMXYUREROSz+u86t45V1VwU\nZGToVqC/cBopxi4QRSGk0yMiIqIQqt/MI7h5neihLHU9NRl4G7JKMt7PO+XTPURERNQKVRQB//rI\n8VxVGXDxP24rAzg0NTlm4I2OYAZeIiK6PriFhIiImpf60myFa/28382i8YFlgGR1fU9DX7wG9LnP\n46IztV7p6enYtGkTPvvsMxw9ehRJSUlIT09HQkICLl68iLVr1yIvLw8A0K5dO6xatSqg8Xbu3Iln\nnnkG8fHxGD16NAYMGIAOHTpAo9GgrKwMX3zxBXJyciBJSmB6jx498OGHHwb8e5IfDEZlN3fqMiWT\nuDZC+Xu2/SXg5Gee7xUEYN1/A9UVEK1mfC2GI1c3BKutKTgm9wj6VOtfhGVMTfLemIiIiAhQvutM\n+yekwkxg4yyIgudyATrBhpnaXOTWDEZxWRUSYqObaKJEREQUdMY0oPRfwMHl184JInDbI8qGZC/r\nqDV1KtZkG8kpKsdbabdxIxARERG5VrReSdzU+N3vT2eAd0cq74qNaW5vLy6rQsklx4qw//zqDHp3\nasM1DCIianIM4CUiouYneS5Q9InngFtBA/S5Hzj1JWCpUbJdJkxwvWgsSUBxlsrBZSXYd+JKSJIM\ns9UGvVbDxWICAGi1WmzYsAHTpk3D1q1bUVFRgcWLFzu169q1K9atW4fExMSgjHvy5EmcPHnSY5sx\nY8bggw8+QGxsbFDGJD+JIhB2k3JctB44uML7PZIVuPSD/WOkUIvJmr0YL+7HAsscZEvDgj5Nvggj\nIiIif5j7TYCIJ6GHxWvbFPEQnvu2Al+eqMRbU27DmEQDn62IiIhuVKLG8XPiZGUjswpXan0P4DVZ\nbDBbbYgM42tMIiIiaqSiCNg0C5DcZPmXrEpwb6e+LjcaZRWUYkFmIayS4+bk/ScvYPzSPGRMTULq\nwLhQzJyIiMglPvkSEVHzU1+azdXOSeBall1jmhKc2zDbpStWkxLkq5J0dDOeq5uFnG/OwWSxIUKn\nwVijAY8Pv4W7LglRUVHYsmULsrKy8Ne//hX5+fk4d+4coqKiEB8fj0mTJmH27Nlo27ZtwGNlZGTg\noYcewqFDh1BYWIhz587h/PnzqK2tRdu2bdGzZ08kJyfj0UcfxdChQ4Pw21HQVBQpf8Nk38pENqQT\nbMjQrcB3dXFBz8TLF2FERETkD71cB1HwHrwLKJuS9KiDSdLjN+sKARTy2YqIiOhGdaXS8XObGNW3\nWmySz8NF6DTQazXeGxIREVHrk/O8++DdepIVOLDcacNRcVmVy+DdelZJxoLMQvSJieK6BRERNRm+\nsScioubJmKbsjDywHCje7D7LbsNsl+5oI5Qfq0nV0KLVhJwjp2CCHoAS6LbxcCmyC8q465LsUlNT\nkZqa6vf9M2bMwIwZMzy2iY+PR3x8PGbOnOn3OHSdHFjmOYu4SvXlp5+1PBGESV3DF2FERETkDzEs\nErWCHuGy2WtbWQY+1L2BRdYZ9s1IfLYiIiK6QV1tHMDbSfWttRbfA3hTjF2YtZ+IiIiclRcCZ/ar\na1u8GUhd5pAAanXef9wG79azSjLezzuFjKlJgcyUiIhINTepComIiJoBg1HZGfliKfC7MuW/E1e4\nLHfikSgCCeoDLWvkcJgR5nS+ftdlcVmVb+MTUesiSUBxVtC6myDuRaJwMmj9AZ5fhEmSjJo6KyQv\ni1hERETUCokiTL3HqWoqCMCdmuPYGvYSxouOL9f4bEVERHSDaRzAe5P6AF6TxbfqRFpRwMzhvXy6\nh4iIiFqJfe+ob2upcUjuJEkycosqVN2aU1TOdyRERNRkGMBLRETNX32WXTGAf7aGzYMEdVkb9kmJ\nkN38E1m/65KIyC2rSVkYChKtIGNr2Cv4JPw1jGp3NuD+NALwP3f1dArSLS6rwvzMAiS+uh0JC7cj\n8dXtmJ9ZwMAaIiIictDunqfhyyssjSDhbd1y9BdOO5znsxUREdEN5Op5x88+BPCafcjAqxUFZExN\nYslqIiIiciZJwLdb1bfXRSoVWn9mttpUbywyWWwwW33bhEREROQvBvASEVGrIMUMwNvSI5BVvGke\nJRY4ZYhqiLsuicgjbYSyMBREggAMFr7FB7XPYoJWZXkoN2wyMGn5focg3eW7vsf4pXnYeLjUvoBV\nX+J6/NI8ZBWUBuPXICIiopagQ2+VWyOv0QoS5ms/cTrPZysiIqIbgCy7yMDbUfXtagJlwrUiJg/q\niux5w5E6MM7XGRIREVFrYDU5ZNT1qt84h+RQeq0GETqNqlsjdBroteraEhERBYoBvERE1CqYrTYs\nrXsIb1gfhrf3w1pBQoZuhVOGqHrcdUlEHokikJAakq4F2Ya3dSsxQHMmoH7qbEr2m/og3Te3H4fV\nzR9HlrgmIiIiB35uVhotHsYTms0O5/hsRUREdAM4sx+QLI7n8v4CVBSput3sJYBXIwB/mmxk5l0i\nIiLyzNf1iOR5Dh9FUcBYo0HVrSnGLhBFX7cvExER+YcBvERE1CrU76pcaUvFTukXXtvrBBtmanNd\nXuOuSyLyKnkuIGpD0rUoW/G3xK8xpOfNIenfFZa4JiIiIjs/NysJAvBbbSae0GTZz+k0Ap+tiIiI\nmrOi9cDHDzmfP5YNvDtSue7Fxau1Hq/bZOC5T/7NjcNERETkmS/rEd2HAbFJTqcfH34LtF4Cc7Wi\ngJnDe/kzQyIiIr8wgJeIiFqF+l2VAiQME4tV3ZMiHoIAyfm8yl2XkiSjps7KkrBErZHBCExcFbIg\n3ujvs3DkzIWQ9O0OS1wTERGRXfJcQPA98FYQgOe1mfZqJ1abjG8rqoM9OyIiIgqGiiJg02xAcpNB\nV7Iq171k4i29ZPY6FDcOExERkSpqkqcIGiDlTZeXEmKjkTE1Ce5e82pFgVUBiIioyTGAl4iIWo3H\nh9+Cm4Q6RAqesz7UixRqoUedwzk1uy6Ly6owP7MAia9uR8LC7Uh8dTvmZxYwiwRRa2NMA2btBpKm\nAZqwoHYtShYkyt8FtU9vXJW45kYFIiKiVspgBCa9C8D3cpKiIGOmNgcAIANY9eVJfpcgIiJqjg4s\nU4J0PZGswIHl7i9LMn4yWVQNx43DRERE5JXBCExY4f66qFXWKwxGt01SB8YhxdjF4ZxGFDB5UFdk\nzxuO1IFxwZotERGRKgzgJSKiViMhNhoLJ92OGjlcVfsaORxmXAu6U7PrMqugFOOX5mHj4VKYLEqg\nm8liw8bDyvmsgtLAfgkiurEYjMDEFcBLZ4GZnwG3PhC0rv+iW27PXueJAAkRMLvMKO4LvVZEmKg8\nPnCjAhEREcGYBqR94NetDaudZBWWof/CbfwuQURE1JxIElCcpa5t8WalvQtmqw1qQ3JdbRwmIiIi\ncnLLSOdz2gglmcqs3cp6hY9m3d2LmXeJiOi6CU1N3yDJzs7GmjVrkJ+fj4qKCkRHR6N3796YOHEi\nZs+ejejo4PzjmZ+fj6+++gr5+fk4evQoKisrcf78eVgsFrRr1w79+/fHqFGjMGPGDPTo0SMoYxIR\n0fWRdnsPZG0ZionCHq9tc6ShkBvsdfnLwwMxLinWbfvisiosyCyE1U2mCKskY0FmIfrERPEBkKi1\nEUWg2xBg2jrg35nAxlmA6ldYrvUUzyE77CU8a5mDLOkup+v9hdN4XJuDseJXiBRqUSOHI1cagtXW\nFByTff9Oa7ZKMC7agQFx0Th85jJsDf7W1W9UyC4oQ8bUJO5QJyIiai0GTAJkCdjwOHz5bhMp1EGP\nOpigBwDUWiVsPFyKrCOl+PPUJEz8RdcQTZiIiIhUsZoAS426tpYapX3YTU6X9FqN6iEjdBqf2hMR\nEVErVV3e6IQAvFgCaHSqu7hc41gh4Oab1CV/IiIiCoVmmYH3ypUrSE1NRWpqKtavX4/Tp0+jtrYW\nlZWVOHDgAJ5//nkMGDAABw8eDMp4o0aNwrx58/Dxxx/j66+/xunTp3H16lXU1dXh3Llz+PLLL/H7\n3/8effv2xeuvvx6UMYmI6PoQRQEne/8aFtnzYrBF1uB961iHczu/PeexVPzqvP+4Dd6tZ5VkvJ93\nyrdJE1HLctvUn7PV+V5yujGdIOEvumVYrXvLIRvveHE/ssNexmTNXkQKtQCASKEWkzV7kR32MsaL\n+/0az2SxIf+HSw7Buw3Vb1Rg9jwiIqJWxJgGPLEXiHK/2bGxxtVO6tlk4DfrCjHzo3x+nyAiIrqe\nvv1UfVtdpJL1zgVRFKAR1a1/pBi7QFTZloiIiFqx6rOOn9t09il4FwAu1dQ5fG4X6dv9REREwdTs\nMvDabDZMmTIF27ZtAwB07twZ6enpSEhIwMWLF7F27Vrs27cPJSUlSElJwb59+9C/f/+Ax42JicGQ\nIUOQlJSEXr16oW3btrBYLPjhhx/w6aefYt++faitrcXvfvc7WCwWLFy4MOAxiYjo+kgZfT+eOzEH\nb2lWQCc4l2WzyBossMxxylC58UgpNh4pRYROg7FGAx4ffos9k64kycgtqlA1fk5ROd5Ku40L0kSt\nWX22uo2zADmw8pCCAIzWHMEI8d9YYJmD7+Q4ZOhc/30DAJ1gQ4ZuBb6ri/MrE6839RsVMqYmBb1v\nIiIiaqYMRuDRTGDl3VCTiXeflOhQ7aSxL749hy9PVDKzPxER0fVQUQRsnqO+fcIEpfKQC7Isu90E\n3JBWFDBzeC/1YxIREVHrdaXR+9iozj53cemqYwDvzTc5bzImIiJqKs0uA+/q1avtwbsJCQkoLCzE\n4sWL8ctf/hJz585FXl4eFixYAAC4dOkSZs+eHfCYBw8eREVFBbZs2YI//OEPmDlzJtLS0vDLX/4S\nL774IvLy8vDxxx9DEJRAq8WLF6OsrCzgcYmI6PpIiI3GqLQnMdH6R1yU2zhc+5fUB+Pr/oBsaZjb\n++tLxY9fmoesglIAgNlqg8miLgjPZLHBbA0sYI+IWgBjGvDYtqB1pwTmLscCbabb4N2GbWdqc4M2\ndmM5ReVus5UTERFRC2UwAve+qqrpKPEIUsV9Htswsz8REdF1cmAZIFnVtRW1QPKTbi/X2SSvXWhF\nARlTk+yJEoiIiIg8qm4cwNvF5y4u1VgcPreLZAAvERFdP80qgNdms2HRokX2z2vWrEHnzs67Zd54\n4w0MHDgQALB3717s2LEjoHEHDBhgD851Z/r06Rg3bhwAwGq12oOMiYjoxpQ6MA5vzn0UZVGOGSL3\nSkbVGSkbvlDWazWI0GlU3Reh00CvVdeWiFq4uDuUUpNBohMk3CMeUdU2RTwEAd5fpPmDGxWIiIha\nqbt/oyqIVyvI+ItuGVbr3kJ/4bTbdvWZ/YmIiKiJSBJQnKW+/YQVyiYeN8x1zusOep3yajJCp8Hk\nQV2RPW84M+4TERGROhVFwL/XOZ47/51yXiWzxTkpU/tIXTBmR0RE5JdmFcC7Z88elJeXAwBGjBiB\nQYMGuWyn0Wjw9NNP2z+vXbu2SeaXmJhoP66oUFcmnYiImq+E2GgM6NfP4VwMLvnUR/0LZVEUMNZo\nUHVPirELRNHzxhEiaiVEEUhIDW6XKv+8RAq10KPOe0M/qNmoIEkyauqszNRLRETU0tw9H7j1Aa/N\nBAEYrTmC7LCXPGbjZWZ/IiKiJmQ1AZYa9e37Pejx8tU650y+B164F8WvjcHRRWOYeZeIiIjUK1oP\nvDsSuPC94/mLJ5XzRetVdXOpxvm9yM03MQMvERFdP80qgDc391oZ35SUFI9tx44d6/K+UPr++2tf\nBAwGdUFaRETUzDUqq9JZ8C2AF7j2QnnmXb2g9RI5pxUFzBzey+cxiKgFS56rlJxsYjVyGGoRmnE9\nbVQoLqvC/MwCJL66HQkLtyPx1e2Yn1nA8thEREQthSQBp/aobq4TJI/ZeJnZn4iIqAlpI9RXCtJF\nKu1dqH/2v+fPu52uRYZrEBmmZYIDIiIiUq+iCNg0G5CcNwcBUM5vmq0qE++lqxaHz6IAROuZgZeI\niK6fZhXAW1R07R/TwYMHe2xrMBjQrVs3AMDZs2dRWVkZ0rlt2bIFmzZtAgDo9Xo8+KDnXcVERHSD\naPSgN0osRIZuhccyro2ZLDb8JrMAaSsPwOohM5RWFJhVgoicGYzAxFVNHsQbKdThm/B0n//meaMV\nBfzPXT1dZtfNKijF+KV52Hi41F6iymSxYeNh5XxWQWnQ5kFERETXia+Z+9AwG+/LGC/ud7imJrM/\nERERBYkvlYISJijtG2n47G+2Sk7XtxWxwiURERH56MAy98G79SQrcGC5xybFZVV4PfeYwzmtKODb\niupAZ0hEROS3pk/15cHx48ftx716ec9O2KtXL5SUlNjv7dSpU8Bz2LNnDy5evAgAqKurQ0lJCXbs\n2IEdO3YAALRaLVauXInOnTsHPBYREV1nResh73kLDXM9iIKMyZq9GC/uxwLLHGRLw1R1lVVQ5vH6\noO7t8IcJRgbvEpFrxjSgU19lcal4sxL0ImgAObTZ5iKFWr/+5rmjEYBfdG+HKSsPwGSxQa8VMdZo\nQPrd8QCABZmFbjc6WCUZCzIL0Scmin8riYiIbmTaCOXHavL5Vp1gQ4ZuBb6ri8MxuQcAz5n9iYiI\nKASS5wJFn3gOkhG1QPKTTqeLy6o8PvsDwIJPCtGnM5/9iYiISCVJAoqz1LUt3gykLnO7ycjV95Q6\nm4zxS/OQMTUJqQPjgjFjIiIinzSrAN7Lly/bjzt27Oi1fYcOHVzeG4jnn38ehw4dcjovCAJGjBiB\nRYsW4b/+67/86vvHH3/0eL28vNyvfomIyA8/l1oR3ATHuXpxHIgHBhi4KE1EnhmMwMQVyuKS1QSc\n/x5YfY/3XeVBEKy/eTKA/B8u2T+brRI2HSnD5iNlSIiN9vgCD1CCeN/PO4WMqUl+z4GIiIiuM1EE\n+o0DvvnEr9t1gg0ztTl41jIHGgGYOdz7Jn8iIiIKovpKQRvTAdk5gy5ErXLdYHS6tDrvP3z2JyIi\nouDypdKPpUZpH3aTw2lvm4yYYISIiK4n520n19GVK1fsx3q93mv7iIgI+3F1dWhT2sfFxeG+++5D\nnz59/O6jW7duHn+GDBkSxBkTEZFHKkqtKC+Oc4My3JXa0GbRJKIWRBSVxaXYJGDCiiYbNhh/89y9\no5MBHC2rUtVHTlE5JC8v+1yOLcmoqbP6dS8REREF2V1PBXT7ZHEvMnTL0RencfxsFf+dJyIiamrG\nNGDgfzueEzRA0jRg1m7leiOSJCO3qEJV9/4++xMREVErpI0AdJHq2uoilfaN+LLJiIiIqKk1q1p/\nZOgAACAASURBVADe5uDgwYOQZRmyLOPKlSsoKCjAa6+9hurqarz00kswGo34/PPPr/c0iYgoED6U\nWkkRD0GAi0wTPqo2WQLug4haoX4PNulwwfqbFwiTxQazVdn0oCZYp7isCvMzC5D46nYkLNyOxFe3\nY35mAYpVBgwTERFRCHRJAroP8/t2QQAma/KQFfYydn2yAr1fykHCwu1IWLgNT689jG9KfwriZImI\niMilxskP7pipVA5ykXkXAMxWG0wWdUkMGj77ExEREXkkikBCqrq2CROU9g1wkxERETV3zSqAt02b\nNvZjs9nstb3JZLIfR0VFBX0+N910E5KSkvDKK6/gyJEjiI2NxYULF/Dggw+iqKjI5/5KSko8/nz1\n1VdB/x2IiMgFH0qtRAq10KMu4CHPXFBZ2oWIqCFfdpYHQbD+5gUiQqfBqcqrqoJyswpKMX5pHjYe\nLrW/JDRZbNh4WDmfVVB6PX4FIiKfZWdnY8qUKejZsyf0ej1iYmIwbNgwvPXWW6iqCt6GhOrqamzY\nsAHz5s3DsGHD0KlTJ+h0OkRHR6Nfv36YPn06tm3bBln2/qLio48+giAIqn9+//vfB+33oBtEypuA\nqAmoC51gQ4ZuBfriNADAbJWQXViOce/kYcrK/dywQ0REFEpVPzp+btfVY3O9VoMInbp/+8O1IvTa\nwL4nEBERUSuSPBcQtZ7biFog+Umn09xkREREzV2zCuBt166d/fj8+fNe21+4cMHlvaHQq1cv/OlP\nfwIA1NXV4Y9//KPPfXTt2tXjT5cuXYI9bSIicsWHgLgaORxmhAU85LdnQ/9imWVliVogX3aWB0GN\nHBaUv3mBMMa1ReqyfV6DcovLqrAgs9Bt2SurJGNBZiEDe4ioWbty5QpSU1ORmpqK9evX4/Tp06it\nrUVlZSUOHDiA559/HgMGDMDBgwcDHuvtt99GTEwM0tLSsGzZMhw4cADnz5+H1WpFdXU1jh8/jjVr\n1mDs2LEYMWIEzpw5E4TfkFo1gxGY+K73F2xe6AQb5ms/cTqf/8MlPMQNO0RERKHzU6N/Y6PjPDYX\nRQFjjQZVXddZJWz5d5m/MyMiIqLWxmAEJq4CBDcbgEStct1FpQBfNhlF6DTcZERERE0usBX0IOvb\nty9OnToFADh16hR69uzpsX192/p7Q23s2LH24927d4d8PCIiCpH6gLjCtV6b5khDIQdhv0v5T2ZI\nkgxRFALuq7HisiqszvsPcosqYLLYEKHTYKzRgMeH34KE2Oigj0dETSx5LlD0iXPpyhAIgxV/1q3E\nGut9KJTj7X//BEjQow5mhAXlb6I7GgH415lLsHkJyu0TE4XVef9xG7zbsP37eaeQMTUpFNMlIgqI\nzWbDlClTsG3bNgBA586dkZ6ejoSEBFy8eBFr1679/+zdeXxU9b3/8dc5M5NNwaWKYRNxowRDkCqK\n4I4LARMQSltvf60VEBHb3gJ1qVa72Ntam/ZW2bRgN3sRRCBRg9gqVMKiWEgIBHEDhIQIKoiYbWbO\n+f0xzJDJ7JMJCfB+Ph48zMz5nnO+WZyzvb+fL6tXr2bXrl3k5+ezevVq+vbtm/T+3n333cBsR927\nd2fYsGF87Wtfo0uXLjQ0NLBu3TqeffZZDh06xKpVq7jmmmtYt24dXbp0ibnt73//+1x33XVR23z1\nq19Nuu9yDMsdC2f2gdd/Be8uS3ozw8wNFJhllFhDg973Njs30LWPiIhICu3ZBPt3BL9XPt93XA8T\njPGbMPRcSsprYl6v26BjuIiIiCQmdyx8UQuvPtjsTQPyvuWrvBvhHMU/yGjxhtgDgPNzu7bJs1wR\nEZFoOlSANzc3N/Dgav369Vx77bUR23788cfs2rULgC5dunDmmWe2ef86deoU+Hr//v1tvj8REWlD\ncQTi3LaDZzzDIy5PhGX7pmjJcDoC/03FBWBxeXVIBUp/pcqS8hqKxuVROCB6dQwR6eD8I8sX3wl2\n207d5DQsxjjKGOMoo9F2ssry3fC6wqwiy2ikzk5nmTWIuZ58ttq9Urtv0+Dis09l/Y7o59key2bu\nqg9Ztrk2ru2WVu7h8bH9ddNNRDqcuXPnBu6B5OTk8Prrr3PWWWcFlk+ZMoXp06dTVFTE/v37mTRp\nEm+88UbS+zMMgxtvvJHp06dz/fXXY5rBAzK++93vcv/993PTTTexbds2tm/fzv33388zzzwTc9sD\nBw5k1KhRSfdNjnPZuXDbc7BpISydnNSgJMOAItdTvNfUM+QcRAN2REREUqxyESyZFHoP4oN/wfaV\nvnsUuWPDrprTrTNF4/L44XPlMXejY7iIiIgkLOv04NfZuTB6dszV4hlk5DQNxg/t3doeioiIJKzt\nymcl4eabbw58vWxZ9KocpaWlga/z8/PbrE/Nvffee4Gvj0ZgWERE2pA/EBdhOle3bbKg+0/47T3/\nFfe0KrE8tGQz/R5ZTs7Dy+n3yHKmLixv1dTumj5e5ASSOxYm/RtOO3o3j9IND8McGxnm2EiW0QhA\nltHIGMcqStIeosBck7J9XffVLiydMoTN1fF9Xr28qYZ6d3xh5nq3lwZP2wafRUQS5fV6+fnPfx54\n/fe//z0ovOv32GOPMWDAAABWrVrFq6++mvQ+f/WrX7F8+XJuuOGGkPCuX69evViwYEHg9YIFC6ir\nq0t6nyJB+o+DO1cmfT7jMryMd4a/X1hSUY0Vo9KfiIiIxKG20hfejTTgxvL4ltdWRtzELf274Yhz\nEG1p5R4dw0VERCR+jV8Ev844Ja7V/IOMHEb4cxSnaVA0Lk8zA4iISLvoUAHeq6++muzsbABWrlzJ\nhg0bwrbzer088cQTgdff/OY3j0r/5syZE/h6yJAhR2WfIiLShnLH+h4gX3Bj0Ns24DIsvr2viIve\nuo/xFxxKye4Wb6wOBM78VXILZpRRXB57ypZwEpk+XkSOA9m58I2/Rxx4cDS5DC9Frtn0NXamZHvf\nvvxszj3zpLhDuY3exB7uvbrl42S6JSLSZt544w327NkD+O6FDBw4MGw7h8PBD37wg8Dr+fPnJ73P\n008/PXYjIC8vjz59+gBQV1fH+++/n/Q+RUJ06QeHkj8u32KuwcAKed/ttSnfrdmyREREWm3tzNjV\n8i0PrJ0VcXFdkwdvnKFcDboVERGRhDS2KAKS3il8uzAKB3RnyrXnBb1nGDBmYA9K7hmqGU1FRKTd\ndKgAr8Ph4OGHHw68/s53vsPevXtD2t1///2Ul/um3xkyZAg33XRT2O395S9/wTAMDMPgmmuuCdtm\nzpw5rFixAtuOfDPB6/Xym9/8hlmzjtyQuPvuu+P5lkREpKPLzoXC4BvOgbGX7jqomM+07ZMY5Uxd\npcnmkq2Sa1k2yyrjnz5elSxEjhMxqocfTdGq4CXqk0NNfLjvy7gr9CRq+vOqRi4iHUvzWYdizSo0\nfPjwsOu1pc6dj1Qbqa+vPyr7lBOEp953nZWkdMNDoVkWdtnM1z9IersiIiICWBZUFcfXtmqpr33z\nt2oOMnVhOZc8+q+4d5npcpDhTM3sZyIiInICaGxRdCmBAG9VzUFe2Rz8bLVr53TGD+2tyrsiItKu\n2v/JfwsTJ05kyZIl/POf/2TLli3k5eUxceJEcnJy+Oyzz5g/fz5lZb4b9aeeeipPPfVUq/a3bt06\nJk+eTM+ePbnhhhvIzc2lS5cupKWlceDAATZv3kxxcTE7duwIrPPAAw9w9dVXt2q/IiLSgXyxJ+pi\nw/bwe9cc3rd7sNl7dsp376+SWzQuL+51GjzehKePz0rrcId9EUlG7lg4sw+8/it49+gEuSLJN9/k\nx9yJ3cpxgc+99RGbdn8ed4WeRCXzOSsi0pYqK49MOXzppZdGbZudnU3Pnj3ZtWsXH3/8Mfv27ePM\nM89ss741NTXx7rvvBl736tUr5jqzZs3iscceY9euXViWxRlnnMGAAQMYPnw43/3ud8nKymqz/sox\nxpkJrqxWhXj/4JpDtucAc7wFQe+/9s5elm6spiCvGw0eLxlOB2YbDQ4SERE5LiUy0MZd52ufdhIA\nxeXVTFtYEXO2sJbyc7vqeC0iIiLxa/wi+HWcAd5I5yo1nzdSMKOMonF5qsArIiLtpsMleZxOJy+8\n8AK33XYbL730ErW1tfzyl78MadejRw8WLFhAv379UrLfXbt28cwzz0Rtc8opp/DrX/+ayZMnp2Sf\nIiLSQSy7L2YT0/bwbL+3+aXzChZv3E2Uwu1JKa3cw+Nj+8d9wzrD6SDT5YgrxKtKFiLHoexcuO05\nqHgOlkxqt25kGY1k0EQ9Ga3azoaPDqSoR5El+jkrItKWtm3bFvi6d+/eMdv37t2bXbt2BdZtywDv\n//3f//H5558DMHDgQLKzs2Ous379+qDXu3btYteuXbz44os88sgjPPPMM4wcOTKp/uzevTvq8j17\nog/Gkw7GNCGnECrmJ70Jw4D7nM8BNnO8hUHL/ntBOfe9sIlGj0Wmy8Hw3GwmDD2XnG6dsSxbwV4R\nEZFoEhlo48rytcdXzS6Z8K7TNBg/NPa5sIiIiEhAEgHeWOcq/tlSL+jSSZV4RUSkXXS4AC9Ap06d\nePHFFykuLuZvf/sb69evZ+/evXTq1InzzjuPW2+9lUmTJnHKKae0el9PPPEEhYWFvPHGG2zcuJEP\nPviATz75BLfbzcknn8xZZ51F//79uemmm/j617+ekn2KiEgHsqcCPloTV9NTt5dS9MCfuGPIORTM\nXJ3SSpH1bi91TR5M04jrgbJpGgzPzWbxhuqY21YlC5HjWN43YfNieG95u+y+zk6ngbTAawOLDJpo\nIC1Qlbf5e0DQ8nDt20q928tndY2cnpUe9JmoMI+ItIcDB44MXDjjjDNitv/KV74Sdt1U27dvH/fd\nd2Rw20MPPRS1vcPhYPDgwVx55ZVceOGFnHzyyRw4cID//Oc/LFy4kM8++4x9+/ZRUFDAP/7xD771\nrW8l3KeePXsmvI50cIOnQOXzYHmS3oRhwL3OhfzbGsBWO7hKdKPHN513vdvL4g3VFG+sZmCv09hc\nfZB6tzck2CsiIiKHJTLQJmeUrz0wt+zDpMK7RePydCwWERGRxLQM8KadHHOVeM5VNIufiIi0pw4Z\n4PUrLCyksLAwdsMIbr/9dm6//faobTp37szo0aMZPXp00vsREZFj2Oon4297eGq4ft1P4ffj8pKq\nLBGJwzC49FevxfVA2R82Gz+kNyXlNVH74DBISSULBdxEOrDrfwrvvQqkuDR4HEqty7Ax6WvsZILz\nZYabb5FlNFFnp7PGygHgCrOKLKMRj+17sOc0LOptJ3vt0znL2E+G4abOTuNV6xKe9oygyo79mZVs\n8PeSR18LfMZe16cLr2/by7LKWoV5ROSoO3ToUODrjIzYVcwzMzMDX3/xxRdRWiavqamJMWPGsHfv\nXgBGjRoV9V7J0KFD2bFjBz169AhZNmHCBH77298yceJEFixYgG3b3HHHHQwZMoSzzz67Tfovx5Ds\nXBj9lG8WgVaEeE3DZryzlOnu6DNleW1Yv2N/4LU/2FtSXqMpMkVERFqKZ6CN6YTBdwO+e4bLKmvj\n3nymy0F+blfGD+2ta28RERFJXEgF3ujnE4mcq2gWPxERaS8dOsArIiLSpiwL3nkp/vbOjMDUcIUD\nunNBl07MK9tOaeUe6t1e0pwmTYerPSXKa9vUu71AcKWoX4/JZezAnpimQVXNQeaWfRgImzkMA8uO\nHtgzDYM5/36fO686j4u6h68ib1k2dU2+m/JZac6gC9OW+1TATaQDys6F6x+B1352VHdrA307u3n0\n8z9zm+NfmMaRz6Mso5Fhjo1B7Z3Gkc/HTMNDL2Nvs/ZNjHKsodBcw1vWhfzM872QanrA4aBw6eGg\ncCN1djrLrEHM9eSHbR+O/zO2ZQVzhXlE5ERmWRZ33HEHq1atAuC8887jmWeeibrO+eefH3V5p06d\n+Mc//sHHH3/MypUraWho4LHHHmPmzJkJ9W3Xrl1Rl+/Zs4dBgwYltE3pAHLHwpl9YO0sqFrqGyxp\nOMD2JrSZUeZqnjFujmsAUEuaIlNERCSCMy6EvVXhl5lO30Cc7FwAGjzewD3NePysIIdvXKoBXSIi\nIpKkxoPBr9M7RW2eyLlKvdtLg8dLVppiVCIicnTpyCMiIicuT73vX9ztG2HLYt/DZiCnW2eKxuXx\n+Nj+NHi8vPfxIQpnrk5Z97w23Luokp8u3UL/Hqew4aMDeJtV2/XGCO8CuC2bkoo9lFTs4dJzTuPn\nBRcFHk5X1Rzkd69u49/b9gW25TANrrnwTKbd2If39n4RUmVYATeRDurKHwE2vPYLjlYlXgPo9+Va\n+qXwisIw4DLHu7xsPsBvPd9kjrcgsKzAXEORazYu48jNtiyjkTGOVRSYa5jmnkyJdUWYfiZWrVdh\nHhE5Gk4++WT27/dVBG1oaODkk6NP91dff+SctVOn6A8mEmXbNnfddRf/+Mc/ADj77LP517/+xWmn\nndbqbTscDh599FGGDh0KwEsvvZRwgDdchV85TmTnwujZUDjTd132yfvwp2sTCvE6DYvitJ8y3T2Z\nYmtIwl3QFJkiIiLNVC6KXiG/1xUw/LeB8C5AhtNBpssRdzDmwSWbye1+qq63RUREJDkhFXij3ydL\n5Fwl0+Ugw+loTe9ERESSEv98syIiIscbZya4shJYwfbdxK6tDHrXNA2y0px06Zye2v4d1uixWL9j\nf1B4Nxnrd+znlhllFJdXU1xezcgnV/H6O3uDgsBey+a1d/Yy4olV/GhBeVB4tzl/wK2q5mDY5SLS\nDq6cCnetgrxv+SqGH8NMA+5zPsddjqWAr/Juy/Bucy7DS5FrNn2NnYH3/OtsSR/P1ow72JI+PqRN\nJB7LZu6qD1PzzYiIhHHqqacGvv7kk09itv/000/Drttatm1z991386c//QnwhWVff/11zjnnnJTt\nY/DgwWRk+I5LH330EXV1dSnbthwnTBPSToJueXDr0wmv7jIs/tc1k7mux+lr7MTAIpMGDOKbHaWk\nohqrlddaIiIix7zayujhXYBdb4W8ZZoGw3Oz496Nf/CMiIiISFISDPAmcq6Sn9s1aJZSERGRo0UB\nXhEROXGZJuQUJraO5fFN8xrGV05qmwBvKnktm6kLyvnRgnKiPaO2Iepy0A13kQ4pOxdGz4EHqsGV\n2d69aRXDgPucC5nr+i0/dj4XMbzr5zK8jHcuA3zVekvSHmKMYxVZRiNwpFpvSdpDFJhrgvcVJuiz\neGM1UxeUa6CCiLSJPn36BL7evj32+VTzNs3XbQ3btpkyZQpz5swBoHv37qxYsYLzzjsvJdv3M02T\n008/PfD6wIEDKd2+HGdyx8LYPye8mmHAMMdGXk77Ce+k357Q4B2316Z89/5keywiInJ8WDszengX\nIt4XnTD0XBwJZF1KK/do8IyIiIgkJ8EAL/jOVZwxgrlO02D80N6t6ZmIiEjSFOAVEZET2+ApYCY4\n//vmRWCFVnNKcx4bh1WvHTucGy/dcBfpoBxOyBnV3r1oNV8Yp5zrHBVxtc833yTH2B53td5YVXoX\nb6ym4HDlchGRVMrNPTLt8Pr166O2/fjjj9m1axcAXbp04cwzz2z1/v3h3dmzZwPQrVs3VqxYwfnn\nn9/qbbdkWRb79x8JR6aygrAcpy66Fa7/WVKrmoZNuuELH0UbvNPSD+ZvZHP150ntU0RE5JhnWVBV\nHF/bqqUh90VzunXm12NyI6wQqt7tpcETexprERERkSCeRvA2Br+X3jnmajndOlM0Lo9IGV6naVA0\nLo+cbrG3JSIi0haOjaSRiIhIW8nOhdFPgeGIfx1vE1S/HfL2iRjw0g13kQ4srgEKBpiuo9KdoyHL\naORO58txVev9meuvcVXp9Vg20xZWtHklXsuyqWvyaFCEyAni5ptvDny9bNmyqG1LS0sDX+fn57d6\n3y3Du127dmXFihVccMEFrd52OOvWraO+vh6AHj16kJWV1Sb7kePMlT+C6x5OyaaaD96JZPf+BkY+\nWcbX56xR9X0RETnxeOrBXRdfW3edr30LYwf2JM0R3yPHTJeDDGcC92JFREREABoPhb4XRwVegMIB\n3RnZv1vQew7TYMzAHpTcM5TCAd1T0UMREZGkKMArIiKSOxbuXAFmAjeOVxUFvayqOci0hfFViDye\n6Ia7SAfmH6AQKcRrOmHMXHhoL9yxPLHPwA6qyTa40QwdYBHOIOOduKr0gi/EO6+s2RT3lgVNX4at\nxp4Iy7LZ8NFnTF1QTr9HlpPz8HL6PbKcqQvLFR4SOc5dffXVZGdnA7By5Uo2bNgQtp3X6+WJJ54I\nvP7mN7/Z6n3fc889gfBudnY2K1as4MILL2z1dsOxLIuHHz4Swhw5cmSb7EeOU5fflbJNuQwv453R\nw/IA63fs5xZV3xcRkRONMxNccQ6ycmX52rdgmgaXnXt6XJvIz+2KGWMaaxEREZEQjWHumccZ4AVC\nKvCOH3KOKu+KiEiHoACviIgIQNc8uOjr8bd/9xWoeC7wcm7Zh3hOwKqJuuEu0sHljoU7V0LebUce\nxrmyfK/vXOlbbppw9uWQO679+pkiLmyyjKa42hoxPrpaBn1e3rQba+ebsHgS/Lo7/E8333+X3AW1\nlQn1s6rmIFMXltPnp8u4ddZaFm+spsHtJpMGGtxuFm+opkDhIZHjmsPhCAq2fuc732Hv3r0h7e6/\n/37Ky8sBGDJkCDfddFPY7f3lL3/BMAwMw+Caa66JuN/vf//7zJo1C/CFd1euXEmfPn0S7v/atWt5\n+umnaWhoiNjmyy+/5Dvf+Q6vvfYaAOnp6dx3330J70tOYImEieKQb64jizoMog/A8Vo2UxeUs2n3\nAVXHFxGRE4NpQk5hfG1zRvnahzEs56yYqztNg/FDeyfSOxERERGfxi9avGGCK3RgUSSf1bmDXp92\nUnoKOiUiItJ6sebUFREROXFcOh42PRe7nd+SSbBlCdY1D7Kssrbt+tVB6Ya7yDEiOxdGz4bCmb5p\nLp2Z4R+2DZ4Clc+D5Tn6fUyRWKHcROWbb/KMcRPjna8w0lyL+ecWPxt3HVTM9/3cRj/lC0SHY1mB\nn33xpj1MW1gRGPTR19jJBGcpw823yDIaqbPTWWYNYq4nn2kL4YIunVQBQOQ4NXHiRJYsWcI///lP\ntmzZQl5eHhMnTiQnJ4fPPvuM+fPnU1ZWBsCpp57KU0891ar9PfTQQ8yYMQMAwzD44Q9/yNatW9m6\ndWvU9QYOHMjZZ58d9N7HH3/MpEmTmDZtGjfccANf+9rX6NmzJyeddBKff/45GzZs4LnnnuPTTz8N\n7G/u3Lmcc845rfoe5ATjDxNVzE/J5rKMJqoyJgQda7favcK29dpQMGM1AOlOkxH9uzJh6Lk6JouI\nyPErnnsCphMG3x1x8VmdoodgnKahKnciIiKSvD0tZ0K1YOlk33lMdm7M1Q/UBRf/OC3LlcLOiYiI\nJE8BXhEREb/ul4AjDbzxVW8E4N1XMN7/Fzd476KEK9qubx2MbriLHINME9JOirw8O9cXQl0y6ZgO\n8aZSltFIcdrDuAxv9IaWx/dzO7NP8I3C2kpYOxOqisFdh+XMxNt4CRfY+WylFwXmGopcs4O2n2U0\nMsaxigJzDdPck5lX1p2icXlt9B2KSHtyOp288MIL3Hbbbbz00kvU1tbyy1/+MqRdjx49WLBgAf36\n9WvV/vxhYADbtnnggQfiWu/Pf/4zt99+e9hlhw4dYsmSJSxZsiTi+tnZ2cydO5cRI0Yk1F8RoE0G\nGLU81pZY0a/jGj0WizdUU1JeQ9G4PAoHdMeybBo8XjKcDs1IIiIixz7/tasRZdJO0+m7ZxAlHNPg\nDq5ybxhg25DpcpCf25XxQ3vrXqKIiIgkp3IRvPjD0PfjKbBx2P4WAd5Ts9JS2UMREZGkKcArIiLi\nZ5pw0ZiEKzwZloci1yzea+oesYLT8eZ/vzGAkXnd2rsbIpJquWN9IdS1s6Bqqa/CrCMdsr4CX9S0\nd+9Sxrbjq9Zr28QO7/pZHt/PbfRs3+vKRSFhaNNTz62OVdxirqHI83WmOZ+PuH2X4aXINZuvV/bE\nGtu/Q4WDFFoSSZ1OnTrx4osvUlxczN/+9jfWr1/P3r176dSpE+eddx633norkyZN4pRTTmnvrgYZ\nNmwYxcXFvPnmm7z11lvs2rWLTz/9lAMHDpCVlUWXLl0YOHAgI0aMYNy4cWRkZLR3l+VY1YYDjHzH\n2viv4zyWzdQF5ZSU17Dmg0+pd3vJdDkYnput6rwiInLsCnPtGiLvNl/l3RiV7erdwde3/bufwvw7\nL9e1o4iIiLRObaXvfMWOcK8+UoGNFg586Q56rQq8IiLSUSjAKyIi0tzgKbBpYeSLwAhchsVs1x+Y\n7P7RCRHiXbFtnwK8Iser7FxfCLVwJnjqwZnpG+CwaaFvOqqkwzMmXH0v/Ps3Ke1uMiwMHNgx28UT\n8g1StdT3c9u7JeoDUJfh5V7nAkwjeh9chpdv8zINnglkpbX/pVtVzUHmln3IssraDhVaUqBYjgeF\nhYUUFhYmvf7tt98esUqu38qVK5Pefksnn3wyBQUFFBQUpGybIhH5Bxi9/it4d1lKN+2/jrvb/UO2\n211pIA2byNUHvTa89s7ewOt6tzekOq+IiMgxwx+GiXWdH0d4F6ChRYA3K83ZIa5lRURE5Bi3dmbs\n85WWBTZacHstvmgM3sZpJ6kCr4iIdAxR5sMRERE5AWXnwug5Sa16jrmXkrSHKDDXAGBgkUkDBlaM\nNY89pZV7sKzY4TcROYaZJqSd5PsvQP9xcOdKX+UdR4I3tkwnXP8wrPpdqnuZFEeM4Cz4qu8mzF1H\nXd0X2GtmxLyhGCu86zfKLIM9FcGfuZYFTV/6/psEy7Kpa/Ik9DleXF5NwYwyFm+oDlRV8oeWCmaU\nUVxenVRfWqOq5iBTF5bT75Hl5Dy8nH6PLGfqwnKqag4e9b6IiEgby86F256DW/8EhiOlfEy3PQAA\nIABJREFUmz7H3MvLaQ+yNeMOtqSPp8g1m77GzoS24a/Oq2OQiIgcU+IJw4AvDBOHBnfwNWqGS48g\nRUREpJUsC6qK42tbtTTiPfMDde6Q905VBV4REekgNPRVRESkpf7jYPML8O4rCa/qn4a1wFrNFWYV\nWUYjdXY6y6xBzPXkHzfVeevdXsp372fg2ae3d1dE5GhqXp23+m14+xnfzTN3HbiyoPfVvnbb/33k\nvZxRvmo98T4Y7CASrr4L1NkuBj26jA3pi0hLUSFYp2FhP3MDP7an0PX8PCY4lnHqjtJmP99CX/X4\nOKohJVtBt6rmINMWVuCJEPj1WDbTFlZwQZdOR60Sb3F5dUifjkYVRFX7FRFpZ/3H+arx/ulasBKb\nNSUa/3E/y2hkjGMVBeYaprknU2JdEfc2vDY8UryZ5yeHrqPjh4iIdDiJhmEKZx4Z4BtBywq8Ga7U\nDroRERGRE5Cn3ncvPB7uOl/7tJNCFh2oawp579RMVeAVEZGOQQFeERGRcK57CN5dDnFMsd6Sy7AY\n5tgYeN2ah8DxSHOY3JLXjWWb91DXlLqH2LGMm7NO08SKnKhME3oO8v0rnOW7KebMPPIwz7KC30vk\nweAxLMtwszljUsq36zK8PMaT8IGB02hWQcBdBxXzofJ5GP2Ub4pxCP3507rA69yyDyOGd/08ls28\nsu0Ujctr3Tcbh/YIFCcbfhYRkTbQNQ9yx/mOgW3ENzBzNu83dWW73ZUG0rDjmMhs/c79jP/Leqbd\n2Iecbp11/BARkY4rRWGY5ho8CvCKiIhIijkzfYUs4jlvcWX52oexv0UF3k7pTtKcmi1AREQ6BgV4\nRUREwunSDxwu8IaOyEyWy/Dyx/Q5fNDUgy3es1u9vUt7ncoD+TkM6Hkqpmmw+v1PjmqAtz0qLopI\nB2SaoQ/xWr6XyINBCctp2EQcVGJ5YMkkMEx479Xgqsg5hXxw/u1MX/gJLqsRb5gAUrTPc8uyWVZZ\nG1cfX9pUw+Nj+7dZZUF/9cK5q45uoLi9qv2KiEgUg6f4BrC0YXV/l+HlxbSf4jCshGZVee2dvazc\ntpdvXtaTBW/t1vFDREQ6phSFYZprdAdPWZ3hUihGREREWsk0fbPQxTOIN2dU2BkDqmoO8vt/bgt6\nz2vbVNUc1PNNERHpEHT1LCIiEo6nPqXhXT/D9jDBfBEDK3ZjwGHApeecRubhihUZTpPCvG689P2h\nPD95CAN7nRYISmWlHf2qFv6AlIhIVP4Hg9J2LA8susN3I9P/APZwhd7eL9zMZtd32ZpxB1vSx1Pk\nmk1fY2fQ6pE+zxs8Xurd8Q0OafRYvLBhd6u/lZaqag4ydWE5/R5ZTs7Dy1m8sTqu9Uor92DFCPpG\nYlk2dU0etlR/Hle136qag0ntR0REkpSd66s+b7ZtbQLH4cr3/llVStIeosBcE3M9rw3/WLcr6vFj\n6oJyHT9ERKT9+MMw8YgQhmmpvkVhgXSnKvCKiIhICgyeEvv633TC4LtD3i4ur6ZgRhnrPvws6P26\nJi8FM8ooLo/vXrOIiEhbUoBXREQknDYMm412rI4YoGrOYRiU3DOU5++6gi0/v4mqX9xE1S9u5o/f\nupiLup8S0j6zHQK80LqAlIicIBJ5MCitEP6z2MQm3fBVKGwZQDKwyKQBAyvs53mG0xEYRBKPBxZX\npjSM5L/BunhDddxBYr96tzdkCtdYWoaFC2asjrvar4iIHGW5Y+HOlZB3GxhH51rIZXgpcs2Keh0X\nL68Ndz37n4SOm/4BJrr+EhGRlIgnDGOYYcMw4bS8/mqve5UiIiJynMnOhRFFkZebTt8g3+zcoLer\nag6qOIOIiBwTFOAVEREJp43DZvFUcBp1cXf6HQ7qmqZBVpoz6rTk7VGBF5ILSInICSieB4Ny1LgM\nL//rmsnW9O8FKvM+ygwaqyuC2pmmQf5FXQIh31hSGWZtfoO1edA4EX8u2xF323BhYa8dX0Aq2mAW\nha1ERNpQdi6Mng0TVxy18wyXYTHb9YegEG+yx6mPPqvjlidXsfDtj6IeJ1oOMOn3yHKmLlQFXxER\naaVARfso9xQvGhsShomkocWgywxV4BUREZHWqq2EJXfBsvtCl7myfIN671zpG+TbwtyyD1WcQURE\njgl6gi4iIhLJ4ClQ+bxvWvI24qvgNJv3mrqz1e4VeN9pGowf2juhbWWmtc9hPdPl0A15EYnN/2Bw\nyaTUfK76K+3ZGkCQLNOwycANHBlYYj9zHdao2Zh538Cq2YS1dgaPv1dCUUY9dXY6y6xBzPXkBx2z\nwBdcyqCJBtIordzDY7fm0mRZZDgdUQefhGNZNg0eL3NXfcgF9g4muEoZbr5FltEYtQ/hPP7qNgwD\n7r72/KjtYlVjiMU/mCWr2bG4quYgc8s+ZFllLfVuL5kuB8Nzs5kw9FxyunVOaj8dif/3lMzvWEQk\n5brlpfY8I4ZzzL2UpP2EJz230sv8mOHm+sPHqTRetS7hac8Iquz4rue8Nty7qJKfLt3CiP5dQ44T\nxeXVIceoereXxRuqKSmvoWhcHoUDuqf8exQRkRNE7ljwNEDxlPDLe18V96Ya3MEDWTJcqiEkIiIi\nrVC5KPp1/i1/hP7jwi6yLJtllbVx7aa0cg+Pj+2ve5wiItJuFOAVERGJJNVhswhchpfxzmVMd98F\n+MK7RePyEg73nNROFXjzc7vqolZE4pM7Fs7sA2tnQdVScNeBMwM8jUC04KQBznTfQ0VXFuSM8k3h\nuW/bUQvqnCgM2wuL72Tb0l9znrUTp3HkAaw/5FtgrmGaezIl1hX0NXYywRkasB378x2Uu3tGDK22\nDH9alk357v08u/Yjlm32BV4LzDWUpM3GZXij9iHke2gWJrYxeXz5Nq7p0yXqcTWeagzRtBzMcjyH\nrY73YLKIHMPCnWcYDsCCOCuqJ8Jl2Ex1vRD0XpbRxCjHGgrNNbxlXcjPPN+La8AJQKPHYvGGaoo3\nVvO7cXnc1C+b7fu+jGu6zwu6dNJnsIiIJC/rK5GXZcR/fAmpwOvSgH8RERFJUm1l7Hv/S+6CLn3D\nzhbQ4PEGZlmLJVxxBhERkaNJRyAREZFo/A+BX/8VvLuszXaTb77Jw67JDM/tzvihvZN6+JrZDgHe\nZCoFi8gJzj/VdeFM8NSDMxO2LI58M850+gZT9Lv1SHvTPLKtFkEdNy4ctgfTSH1Q50RhGNDH3g4R\nxmb4q8d38+xjmnNR+ICtvYZp5mRK3FcEhZH6nNU5KPyZ7jQ5q3M6NQcagsJJfY2dFLmCw7vh+vBe\nU3fesXuSQRO9jT2Md74StlrvvLLuFI0bEFi/eYAYiLsaQyS53U8JDGaJVc03atjKskL/zlsh1VVy\nkwkmq1KviBxV4c4zAKrfhsUTYf+Oo9INw4DLHO/ysvkAv/V8gznewrjX9drwowUVQAUOw8AbI3zs\nn+6zaFxeK3stIiInrIbPIy9Lb02AVxV4RUREJElrZ8Yu3GF7ofReuCP0+W2G00GmyxFXiFczjYqI\nSHtTgFdERCSW7Fy47TnYtNA3mrMNpmvPMhrZ/OBVmBknJ7+NVgZ4TQMSKT6YbKVgERHAF05MO8n3\ndbiKec0r7fpH0PvbN9ciqPPePjf3zprP7WYp+eabZBmN2LYvSCOp4zK83OtcGDEo7QvYzuL9pq5s\ntXuRZjcxdcFGwAyqtdzosfjos/qgdfsaO5nj+kPE8G7zfcx2/YEuxgGyjKaQ33Pzar33b56CNTaP\nd2q/CKkee2PfM8D9Jcbhir3J+M9H+6mqOUhOt85xVfMNCVvVVvpuSlcVN/v7L4TBU8JWkIilLark\nJhpMTrYPCvyKSEo0P88A6DkIvvEsPHV1m1zPReyGAfc5FzDC8Sb3uifFXY3XL1Z410/TfYqISKvU\nH4i8LKEKvFbQa1XgFRERkaRYlu8+aTw+WgM1FdAteFCraRoMz81m8YbqmJvQTKMiItLeFOAVERGJ\nV/9xvoDZn64FK8UPfV1ZmGlZrdpEa6d2MYBhfbuw6r1PaPQcueHuchh0OyWT2oMNNHosMl0O8nO7\nJl0pWEQkrHAV8xKpQHo4qJPTHSZ+vYBpC3vxY/ednMYXbMiY3Hb9PoHFqnLsMixeSnsQCxOnYQVV\nxN1q98LAIoMmGpoFZwvMNRS5ZuEyrKjb9jvH3Bv4OlJI22V4+Q0zKf3XUP57pTcQQO1r7GQCpQzf\n9hZ/zGgM6V88At+Dlca8su08PrZ/3NV8A2GrLS+EVqB210HFfKh83leBOndsYFGsgGsyVXJbCreP\nRILJV114RsJ9aIvQsYhIkOxcuPVpeGECcPQq9RsG5Bo7eDHtQaa676bEuiLsMbA16t1ePqtr5PSs\ndD10FBGRxEWrwJtxavyb8bSswKsAr4iIiCTIsqDuU9/90XitnQFj/hTy9oSh51JSXhP1nqZmGhUR\nkY5AAV4REZFEdM2D3HG+UE0q9RnZ6k20tgKv14ZTMtPY+oubafB4STNNmiwrEN5RRTwROSpaVsxL\nQuGA7lzQpRPzyrazrLKaOjudLKMx5nqq1Jt6pgEmvjDukYq4ZWy0LuQicwdZxpHg7GveiylyzY47\nvJsIl+GlYdUMPNZdABSYZRS5ngqq8tu8Yu8092RKrCtCtuMPXPU29jDe+QrDzbcC38Ormy+j4bJf\nxDUtG/jCVo3VFWS2DO82Z3l84d4z+1Bl9YoZcE20Sm5LkUK0dwzpHXcwecmG3Swtr8abQB9SEToW\nEYlL7lgwTFh0B0czxAvgNCyKXDMpsFZzhVl1+PiRxqvWJTztGUGV3boHhpc8+poGP4iISHKiBXhf\n+yVcNS2umUEa3ArwioiISJJazlCWiHde8gV/WxQEyenWmaJxeUxdUBF2hhvNNCoiIh1F60s8iIiI\nnGgGTwEjxTegNy+EX3eHxZNg11u+C80E7f+yqdXdKK3cA/iq+TqdJllpzkBY1zSNoNciIh2Z/+bc\n5p8PJ63/qLjWecvuw6jGn7HIeyWN9tEf6xijuOlxw2XYDHJsC4Sq/cHZGa4ngwK1qZZvvkmOsZ25\nrsf5o2tWxH25DC9FrlkMMN7DOBw+7mvspMg1my3p49macQcvpz3IGMeqoO9hlPkGmX8dxpi0dXH1\nJ9PlIGP97MjhXT/Lw0cv/46CGWUs3lAdCAj7A64FM8ooLvdNBRetSq6BRSYNeC0v88q2hywvLq+O\nuI/CGWVxB5MtiBje9fNX6oX4Q8dVNQfj2r+ISEwX3Qpj5oJ59I/1LsNmmGNjs+NHE6Mca3g57UEW\nuH5GjrGdTBoCxx848vnd/L1IWh4bLMumrsmDdaKcZIiISHIaDkReVrUEnr4GKhfF3ow7+FiV4dQj\nSBEREYlD5SLf+UbF/MTDu+Bbx1MfdlHhgO7ceVXwgFnTgDEDe1Byz1AVDRARkQ5BFXhFREQS1VZT\nr7rrYNNzvn+ONLhojC8sHEeFi+Lyav6+bmeru1Dv9tLg8ZKVplMEETk+mKaBOeT7sOWFqEFJ23Dw\na/sOyu2elLsv5MdMIs94n287XyP/cJXVtuS2HTzhGc00V+yHoscr02jbcFGW0Uhx2sNxhYRdhsXS\n9Eeos9OptM/ha8Z7OJtVBo5UqdmwPPzWnEmV0ZWtdq+o+xhx0VkYW0vi6vsZH5WSZo3ES0bIVOv+\ngOt5Z54ctkpuX2MnE5ylIdWC6y77BRk9B2CaRswQrbcNfjWllXt4fGz/qKFjP3/gt2hcXuo7IiIn\nptyxcGYfWDsLNi0Au+0GkMTDMOAyx7u8bD6IYUCdncY6qy8WZrNqvb6K9XM9+TGPMR7L5r+fK+fe\nRZto9FhkOE2G52Yz8crzolYW0qwrIiInqAO7oi9vNjNItPuUqsArIiIiCaut9J1nxCpyEI0rC5yZ\nIW9X1Rzkd69uY8U7e4Pe/8pJaYwf2luVd0VEpMPQ8FcREZFk5I6Fsc8AbfRQ09vkG2kaR4ULf+gm\nFUWVMl0OMpy6uS4ix5nsXBj9VORKe6YT49anOTf38sBbNibl9oVMd0+mX+M8chrmUmenp7xrTbaD\nRd6rKGh6lBneUe1S+fdEYdskXOE3y2jkMnNbUHg3Fgdepjufi1op0WXaTPjaKXFXlMgymqjKmMCW\n9PEUuWbT1wgetOOxbP70xochVXILzDWUpD0Utlqw65nr+fHPHuaOv6znjr+sjxmiTbV6t5e6Jk/Y\n0HE4pZV7QipIqrKkiLRKdi6Mng0TV7RLNd5w/ANEsowmrnNUtKjW66tYX5L2IIXm6pjbsoFGj4WB\nheGpY+nG3Yx4YhWzVrwf0raq5iBTF5bT75Hl5Dy8nJyHX+FHCzaq+rmIyIli3zux21ge38CXSIst\nm0ZPiwq8CvCKiIhILGtnti68C5AzCszg6FNxeTUjn1zF6+/sDSnFtO9QEyOfXBWY1UxERKS9dYy7\n0yIiIseii24F22r9yNBo4qhwEU/lunjl53ZVpSUROT41r7RXtdQXnHRl+W7uDb4bsnOZ8JWDlJTX\nhHym2pjUkcUyaxBjHKuS7oJtE6iqV2oN4lnPDVTY5wVVVH3JGtyqfUhkkarmtoXrHRW8Y97OS9bl\n/L3Z7znH2M4k58uMSNuI89nw07pF4w9vFZirme6eTLE1JLBs+ZZaMl2OQIi3r7GTItfsiKFll+Hl\nN8ykYFtXamNUcmwrL1fuCQkdR+KfJSDD6WDDR/v529od/LNqL/VuL5kuB8Nzs5kw9FxVzhCRxHXL\n8w30acvruhRyGRb/65rJLdZqfu/5OtvtrjSQFjifMLDIoInexh7GO18JqsC+zBrE3FfzsW2bKdec\nB556ird8xrTnK4POfxo8Fks37mb5xg+558Zc7r7uwvb6dkVEpK1ZFny5L762VUuhcGZIQAYICe+C\nr1CAiIiISESWBVXFrduG6fTd32+mquYgUxeURy18ZNkwdWEFF3TppPuJIiLS7hTgFRERaY1IgbCT\nu8D+HanZh7/CxejZoYssO+7KdbE4TYPxQ3unZFsiIh2Sv9Je4Uzw1Pum1Wr24DGnW2eKxuUxbWFF\n2IERf7ZGMNq5FtNOLtxjGLDEO4Sp7slBod1Ml4N7rjuf3y3fxlxPPgXmmoQrxUrHk254GOMoY4yj\njCbb5HP7ZM4wDvqCxK389R4Jb62hyDOOrXYvGjwWhQO6UVxeA8AEZ2nMvyOX4eVO50shf5OJ8ofF\nmgfI4vGTxZWkO82wD/tbSnea3POPjazYFlo1o97tZfGGakrKaygal0fhgO4JfgcicsKLNtDnjPNh\nxf90qHCvYcAwRznXm+WHBwels8bKAeAKs4osozEwcMiv+SCQDSv+QuOqHaTbjdxgp/OYYxBz7Xy2\n2r3oa+xkgrP0SPD33+m8s20YXx39QNRp05NhWXZgcIYGkoqItBNPPYScYUfgrvO1TzspZFFdU+hx\nMsOlSUBFREQkCk993DOUhWU6fQNyW1yrzi37EG8cpzdey2Ze2XaKxuUl3wcREZEUUIBXRESktVoG\nwhzp8Jueqd3H5heg4ElwBB+6G9xucH+JEWdgxmkaYUNpTtOgaFyeRpmKyInBNMM+cAQoHNCdC7p0\nYl7ZdkoPVwfNdDnIz+3K+KFXYn56Zqsq9N1kvh3yXn5uV6Zcez7X9unCvLLu3L95Cr9hZtjwpds2\nsTBJNzpOiEhiSzMszjRSOw25L7y1kavNCqa7J/Oq4yruvPJcXt60hz72+3FNrw4w2rGa4eZbvGxd\nzjzPzSGVHKMJCXn5qzt6fCGwWLw2dO+cwUefxb5R3+ixeH3b3ojLDSxcVhPTF25U5QwRSU60gT4X\n3OgL925+AbyN7dvPZvwB3SyjkWGOjWGXteQyLC5zbAtktY4Ee9fwf97ruM3xetA5SJbRyFc/fhn7\nqeXYo2Zh9h0ZMggqUVU1B5lb9iHLKmtVSV1EpL050uNv68ryHQOa8X+ml1buCWmergq8IiIiEo0z\n0/fPk/hMZVw4HK57MCS8a1k2pZtCz0siKa3cw+Nj+2tQqYiItCsFeEVERFLFHwhr+rJ1I0bD8TbC\n/3SFi8bA4Cm+99bOJLOqmK0ZdXEFZjJdDhZNuoxny7ZRvOUz6tx2s1Babz0oFRE5zF+J9/Gx/UOr\nwnULU6EvgZuMWUYjGTRRTwYQXP3ct98BWGPzaKwew6E3niT93RcDwchS6zLmeYYzwVnKGMeqNvne\n5djjr8Zb1Wkj/fbXsS77Sb7y6YaIwa1wMgw3YxyruNVcFajkGOu8osBcQ5FrdkjIy1/dcbp7MsXW\nkJj7/vhgQ8QBRvHIMbZzp/NlbjT/E/h/ZcuCa+BbP015pUgROUGEG+jTPNy75E6ofL59+taGXIaX\n7zj+GfH4YdgeWHwnGGA5MjD6jqRh0BTSe1yc0IPO4vLqkNkOVEldRKQd1FbC2pmJTVudMypoAEe4\nz/Tm/lVVy5ivpbjIgYiIiBw/TBNyCmHTc4mvm3lq2Ht/DR4vDXHM9uVX7/bS4PGSlabolIiItB8d\nhURERFLNmemrSJHyEG8TVMyHTQsAA2wv/sekzasmTXNPpsS6ImjVvsZOfnH6Svr99Xv82l3H/2Rk\n4R1wC+bgezC79U9tP0VEjhOmaYS/cRep8nocn/t1djoNpAGRq5+bpkFmzwFk/tc8ijfu4qHn13PI\ncgUqos715FNgrglboVdOTIYB/Q6tgUVrOAMgyYIRzSs5xjqvaBnebc4fKr7FWk2R5xtRq/E2eiwe\nH9ufexdtimviXgOLDJrobezhEdffGGRsC5ki/tLPl2M//RrG6Kcgd2wcWxURiZNpwpAfwpYlSVfj\n78hiDf7wLze9DbB5ERmVi3jb7sMbZ0/h5uuH0a9XVyyMIwOgsMFTj+XIoMHjZceeT5m+cCMe68iO\n/J/rjThxWR6mLdigSuoiIm2tclHiM8uYThh8d+BlVc3BqOFdgPteqKRv11P0mS4iIiKRXXHP4eee\nCQ7ur1oKhbNCZofJcDrIcJpxh3gzXQ4ynJo1QERE2pcCvCIiIqnmHzFaMb9ttm9Hvuh0GV6KXLN5\nr6l7ICwTqJD3+ZGQjeGuw1m5ALa8AAq3iIgkp3mFvjg/90uty8hwueKufl54cU8uOOsU5pVtp7Ry\nD/VuL9sdvZlxyjTu+bxIIV5pU77zillB5xUAE5ylMf/2DAOGOcq5zqzgt55vMMdbELZdpsvBmIu7\n8eyqrWz6uDEQVA/aFhZ5xvv8P+e/GG6uJ8toxLajB80My+MLJZzZR5V4RSS1snN911CJBp+OQ4YB\nlxrbuHT3D+Cv4MGgzOrP854rucFZwXDHW6TbjVi2SRqQY1hUuHxV3l/zXsz1jg3km+vINDyBz/UG\n28WKeUMwRkynT87FmGlZIQ9kAbAs30AqZ2b45SHN7dCZFURETkS1lcmFd0c/FXRePbfsw5izaHgs\nm3ll2ykal5dsb0VEROR4l50LV3wf1jyR2Hruet81YYsZdEzTIL9/VxZvqI5rM/m5XXWNKCIi7U4B\nXhERkbYweIpvWtV2eKDrMryMdy5juvuumBXyULhFRCQ14vjct00nI8b/klu75yV0UzCnW2eKxuXx\n+Nj+zYInw/mg8npqXyni4kP/JstopN52kY4H00iwWoFIFC7DYrbrD0x2/4h37J5k0sBw86241zcN\nm/uczwEWf/XeTANpgZCuf4YA4zffo9hdR116Gq9al/C0ZwRVdm/6GjuZ4CxlpLmWdCP4/61YVSIB\n3/+Pa2f5KmaLiKRS7ljfNdTaWb6qP+463ywsOaPgjAvg9UfBPvEG2Tixucas4GpXhe9z+vApidM4\nMgjVX+X9VnNV0Ge5/+sMw81w70rs4pUYJdBIOod638Rpw6Zhdh8ANRWw9kl45+XAz93uW0DDpZNJ\n7+4LiNU1+Y4ZWWlO3qn9grllH7KsspYGt5vTXF6uvehsxl95fnIVIRMMDkfflELFItIO1s5M7H7l\nhcPhugeD7htals2yytq4Vi+t3MPjY/vrc05ERETCq62EPRWJr+fK8l2XhTFh6Lks3VhNjLFGOEyD\n8UN7J75vERGRFFOAV0REpC20c1WmfPNNHnZN5henrwyqvBuWwi0iIq0X63PfdGKMforMngOS3oVp\nGmSlHbmEOy/3cs7LfZ6lG3bx00XrOWS5uMVcF3HgRqyKpX6WbeDGQXqzaniJSGYd6djOMffyctoD\nuHGGBGnjYRhwn3Mh97sWUmenscy6lB3WWfzAWRx0npJlNDHKsYZCcw0f2F05x/g4KPSVlKqlUDiz\n1SErEZEQ2bm+a6jCmaGBzgtugNJ74aM17dvHdhLPeUCsNv7l6TSSvr0E++kS6s0sMuw6glZ112Fs\neg5nxULuc0/kBetKrMMDRfwh4q8aO3nUWcrw9LfIMhqpq0rjn5sv4ePrp3L1VcPiC9HWVvpCb1XF\nzQLbhXD5ZPjK+VEDvS2DulU1BwOh4nq3l0yXg+G52UwYeq6mmReRtmVZvs+xRGSeFjLov8Hjpd4d\n30CVereXBo836FpWREREBIDKRck/R80ZFfEaLKdbZ743pDfzyrZHXN004Pfj8nQNJiIiHYKumEVE\nRNqKvyrTmpmwKfa06qmUZTSy+SdDMX/33fhWULhFRKT1olXjG3x3m1U6HzWwJxdmn8K8su2UVroo\naOrOna5XyHe8SbrdQJ2dTql1Ge9bXZnmXBSxKnuj7eRF6wrmeYbzjt2TDJrobezhR84XGGZuiCuM\n47VNnvVez22O1yNXf5djkmlAOskPSvL//WQZTYxxrAZH9LbnG3uS3lcQd13Y6fRERFLGNEM/Y7Jz\n4Y5lvmqxrz8K77/aPn07jhgGZNp1EZe7DIvH057il/Y8XrEG8bRnBFvtXowx/82vXc8EnZdkGU0U\nOtZgr1jD26/34Vfu23jXeSHDL8pmwmXZ9M3u5Pud+q+PNy2EpZODHyq766Bivu8fHAn0Dp4SOOcL\nF9S9qHtnNn70GS6rkQbSAJN6t5fFG6p5sXw3f7i1DyMv7g3expRU+RURCeKp932SS1gdAAAgAElE\nQVR+JSLMPcMP930Z9+rpTpMMZ5STfxERETkx1VYmH941nb777RFU1Rzkze2fhl3mMA2u7XMmU2/o\no/CuiIh0GArwioiItKXsXBhZdNQDvDgyMKv/A96m+Nor3CIikhrRqvG1oZxunSkal8fjY/sfrvA2\nGRMbPPXs2Odm7eqdlFbu4d9NA5joWsbNxpu+CnR2OqXWIJ71DKPCPg+bI32tJ4MquzcT3dMpMMso\ncj0VMZTrtQ1ety7m956vs9XuxXPe6xjvXMYt5pqIFVvdtsEOqyvnmzWq2CttJ8p0eiIiba5bHnz7\n+fAB0AATeg6C2k2Jh6okRIbhCVRzt/ENQInEMOBSYxtL0x/Ba4NRBebWwwtNB/QY5JtaYNe62Dv2\nB3orn4fRT7HUfVlghgT/+dU5ng/5ZvXL/NX1FllGE3V2OsusQbzmvZjrHRvIN9eR+ZIH+yV8VYYd\n6dBvNFxxT+sHglnWUT03FZEOypnpOz9O5HgT5p7hM6sjV7Nrqclj8eKmGgoHdE+kpyIiInK8Wzsz\n+fDu6KciXiMVl1czbWEFHssOXRX43df7M/riHonvV0REpA0pwCsiItLWkrk53lreBnh2VPzt/eEW\nPdQTEUmNcNX4jspujWZTkxqQdhI53aFo3KlB4d4XK3bz0PPBoRI/p2kw4OxTeXvH/sB7JdZQ3mvq\nyXjnMvJNf/g3jeXWJfzNcwPl9gVB29lq92K6+y5+zJ3kGe/zbedr5JtvNQsNX8Y8z3C22r2ihoMt\nG2wMHEboDdfWsu34pviWY1yU6fRERI6a/uOgS9/oVfr912KfvA9vzobNi8Drbu+eH7MM43AINk6O\nlo0tL3y0NvEdWx6sF8Zzs+1iVJqbOjuNZdalfGln8m3Ha5jNzmmyjEbGOFZxq7kq6Jwk8KW3ETY9\n5/t33cNw1bRm+2l27Q7hvzZNXxXotU/COy83+7sLrhQc3P9j+56AZdmHz3cdmNHS2yInotpKX1DG\n05jYei0GxFmWzbLK2rhXt4FpCyu4oEsnVbkTERERH8uCquLE1oljpruqmoMRw7sAFvDj5zfR56zO\nOi8REZEORQFeERGRtmaavgdkFUe5Cm8iel8FxXf7LpjjeagnIiLHnObh3sKLe3LBWacwr2w7pZV7\nAtM65+d2ZfzQ3gAUzCgLutnZPJSbQRMNpIWEf1uyMSm3L6TcfSE/ZlLY9SKFg30h33wApjqfZ5i5\nIWWBW8uG33rG8QNnMVlGgg+w5dgRYzo9EZGjKlaVfv/gn255MHoOFM6C6rfh7WeOXKdh4ItCSUdm\nAhmGL3ydZTQxxrE6avu4zm9e/wVsXgKDJ8MHr8O2Ut/fhHF4WnrbG/y1Ix0yOsGXnwRv53ClYLti\nAfYtf8S8+Nu+96vfhvVzYWsJuA//ffYZAZdN9FUiBt/frSPdFyz2h/ncX/oevhuH/37jCf0mGhKO\no31VzUHmln3IssrawHnt8NxsJgw9N+aD+ZSGfo/xALQcxyoXJT9FdYsBcQ0eL/Xu8DOzROKxbOaV\nbadoXF7i+xcREZHjj6c+saJH09+HrK/EPMeeW/ZhxPBuYNc6LxERkQ5IAV4REZGjYfAU31SasW6U\nGybY1tHpU3PvLifoQXCL6T/JHXv0+yQiIm0qp1tnisblNavMGxxaKBqXF7ZigY1JPRkMOuc0vjP4\nHFZs20dJRTVub/Sbo/71wmkeDs6kifoWId+J7umMdq6myDUH007sYXFzzYPBW+1eXGDuYYxjVRxr\nKjB1rPHYJuUDf80lGogkIh1NvFX6TRN6DvL9K5x1JBRYWwlrZ/gq+Xqb2r6/0nHsrfQNvG2u+XlR\n86+9jfBl5EFKBhbGi9/HfvH7h1+34KmHLYtgyyJswAg5Fwo9N7Ix8fa+BvPqezF7Xnok6Ot/yO6v\n/ukPpDsz4asjYcj3oWuzh+ctq1HHaN98ilwDi0yaaHCnsXhDNS+W7+YPt/Zh5MDzQh72tyb0G6Ll\n96ZB0WGVlJTw97//nfXr11NbW0vnzp05//zzGT16NJMmTaJz59RXQWuPfXY4mxfDCxNI6nomzIC4\nDKeDTJcj4RBvaeUeHh/bX9WxRUSkQ9J5ylH26fvxt3VlxRXeTWSWAJ2XiIhIR2PYtq2nkB3E7t27\n6dmzJwC7du2iR48e7dwjERFJqWjVLgwH9LwMPlpz9PsVi+mEO1em9KGTjnnHFv2+RE5cVTUHg6r0\nZjhNbuqXzcSrzuWi7qcE2lmWTfnu/fxj3UeUHg5BpDtNmjxWQo+JnabB/35jACu27QtbGTjH3Bk0\n/bgvUBJbnZ3GJY2zqCcjKBjc19hJSdpDuIwoD59NJ1z7IPaKX2EkWLHKtuOsqicptc/uzHeaHuA9\n4xxK7hmacAhHx71ji35fcsKyLF/V1FVF8N4/g8ObIu3Mf45mO9IhZxRNp51PWtljEc+l7B6X0Zj3\n/0jfuRK2lWLEOs/rORhGPE6V1YvCGW9wkf0u33W+yo3mBrKMRuptF3vt0zjL2E+G4cZyZmLmFMKl\n46HbQF7a8AE/WVLJIctFOp6gGSKcpkHRuDwKB3Q/sr8wlXUty6ausQln5XOkvzI17Pdmm07sUXMw\n+3892R9lkGP1mHfo0CH+67/+i5KSkohtevbsycKFC7n88suP2X221CF+X5WLWhfejTCof+rCchZv\nqE54k1W/uCkwK4yIiBxfOsRxLwk6T2mn39eSu+KftTTvNt9sNjHUNXnIeXh53F3QeYmIyImh3Y95\ncVKAtwM5Vv5oRESkFWorg4JHvqoso+Dyu+CZmxObMuZoyrst8lSvSdAx79ii35eIJDK1cPO2L26q\nCVvFN5yWYYmo+zwcovCU/DfOzQtjbnuR9yqmu+8Ku6zAXEORa3b4EG/zh9a1lbw1/1EuOrCCLKOR\nOjudSrs3XzPexWmEVs932yb/572e2xyvh922xzYwMHCEWReOhH8bbCcZRhJT3YZh2XAiFJaos9Pp\n1zgPG5MxA3skPCWejnvHFv2+RPAdF91fQm0V/DU/jinS/QeD0OOzPzTpsU0MLBwnwHFD2l5bDGqy\ngb2uHpzRVI3DiP8RR/NgcPPzrZety3jWM4xtdk+ajAwW3jWUAa5dmOtmwtZicPvuhxw4+0aeP3Ah\nX9m3luHmOjJjnKe5bYNZvWdyww0jyOl+atLfLxybxzyv18vIkSN55ZVXADjrrLOYOHEiOTk5fPbZ\nZ8yfP5/Vq1cDcNppp7F69Wr69u17zO0znHb/fdVWwlNXJzfA48LhcN2DEQfzV9UcpGBGWVzXeX6Z\nLgdbfn6TKt2JiByn2v24lwSdp7TT78uy+P/s3Xt4FFW+9v27ujvkYAIRSAgk4TCIgUAkIiqCPuAR\niCMgDsroOxB1R1TUmVFU9uiIjDr7cSu++/KMiqI4stHNKMgGPAwgkBc0o0YREHQIGjCEcJKEJCTd\nXe8fIWUOnc6pknSnv5/r4rI6vWqtFSlYN51frdJ/JDb956G3bJT6NP7Zntdraui8D5r0lAByCQCE\njmDJKNxSAgBAe0pIq7pTtG4xbMWJwC3elaruhN3+d8ldzqMgASAEORxGk3ckqNl2cnqiBsXH1NrF\nN9zlUELXCB04Xq6Tbm/tHXZr7JTqd8xTjx93jL5TlduW+91Bt9J0apF7YoPvr/SO1ncVifo31xr9\n2vWZws3yX26wueD2X9a6hDRFX/eyhj+7US7vSWuntiHGD7rZtUYZjk+twt7V3vO1yD1RO81++m/P\nJQ2+L8nHe+fpTfdl+tocoHC5dVIufROepSij4cdgN0Wl6dScylv1H2GvtLqvQBdlnFSEKlSmCB6J\nByA0OBxSeIzU7/yqG08aevKLHNKkp6X0G6SD22vvau+KlFIny7jgdqnHGXI4I1Ra4dbWjR/o+OaF\nmuD4TFFGBbvLo0Xa4poxJPWq3Ne0xzHUOc86PvUiwnDrGme2rnFWFUu4TUN7F8VLRmHtE9xlit2z\nQlmS5GzaeGGGqd/vvV3lL4Xpx74Z6nvlvSH1Wcorr7xiFaikpqZq3bp16tWrl/X+7NmzNWfOHC1Y\nsEBHjx7VrFmztHHjxqAbMyBtea7lu7NHnu73Ok3t01WPXj1Mc5dva3KXGWm9yeQAgIBCTukg7rLm\n/Ty05xlNauZwGJqYltCkpwSQSwAAgYYdeANIsFR9AwDaQHPvOA0Efh6l1xjWvODC7xcAO9TdUbc5\nu/r6s+TlJzV93199FvFWmk7dU3mbVnpH+zzXaUjLZl2gwQkxiurikkNmo7vNr8jd73NXYUNeRaii\n1iOYG3vfkBTmdKjS49bpYR5dPLSvfjuqvyTprU9/1JpvDqis0qP/6vKipjha9mG9aUofe0foKfc0\n7TT7aUHYC7rGualFfQWLmjvwSs1/JB7rXnDh9wvwoaEnv9S8MaXaqV3t/a19O346rvkrtunrHw5o\ngFGgm1wfWDeflJkuhcsdEju8A3bwGi45pobGZykej0fJyckqKCiQJH3++ecaMWKEz3YjR45Ubm6u\nJOmDDz7QFVdcETRjNiSodrarKyxK+vf9fp/AteOn48p4umn/rnA5DK2848JaN2wCADoXckpgjtmQ\noMkpTcgkNTXlKQHkEgAILcGSUVr3/GsAAGAPh6NqV9tg4nVX7ex0oOm7bQAAQlf1jrrVxbp1X7fU\nOVfeoqvdj+l/PP9HpWa4pKoCzv/x/B9Nqni0weJdl8PQU9ela2T/7oqOCKuax6mdff19KDw5PVEr\n77hQ14xIUmRY1dZrkWFOTRqepDJF+CzelSRTjlrvT0nvo/+96yJ9+8gEbf/LRP1z/mQtmD5CI/t3\n18j+3fXUdenaPn+8dvxlvCbd+ljVjTPNVGk69IfK2cqqnKOdZj9J0ivuDFWaTdwyLkit9p5v/X+O\nDHMqwtW5v18AqKf6yS//vl/6009V/736Bd+7KTZh7Uvt01XLbhuj/7nzMp05fIz+rNkaenKR0t2L\nNTHqbd3juaPBtcVrSifNqjXMbRqq+XNUt2noG29fuU0+okbocJhuef8eGp+lbNy40SpQGTt2rM8C\nFUlyOp266667rNdLly4NqjHbk9fjUWnJz3JXVKjk5yMq+fmI7+MjP7Vuk4DKUpWUHFdJeaXcbq9K\nyivrHe89XNKkrlwOQwuuHU6RDAAgoJBT7Of1ePznk+rj4mOqPGNC0/ocMlklFR6/maTm8Znx0frr\n1cMa7I9cAgAIVM3/CSAAAGgbF8yWtr3TwKNOA5TXXbWz09UvdPRMAAAhKrVPV2VNm6R73u6neytv\nqbfLrdOQzul3urbtP66ySo8iw5zKSOutmy8c0OIPa1P7dNWCa4frid+cZe0iLEkf7ihUWWXjj6mN\ncDn01LXpVvFyQ7vDVhc5q89Zfh+JXmka+sKbojRHnqKMkyo1w3W430Td9q9R+sbbt1bbnWY/3VN5\nmxaEveBz12KvaahSToUb7qB8THql6dQi90TrNY/EAxDSqotzbTI0sZv+a/rZPnbVv0Qn90+TM+dF\nmTvek9NdplIzXKu952uRe6K+NZOt9VmSIlUuSdaNLUOMH3Sza42udGxRpFFprT8nTZcKzO7qbRyp\ntS6dNJ06bp6mnsbxoFunAKmqiPfYuv9S7PWLOnoqbWrNmjXWcUZGht+2Eyf+kt9qnhcMY7aHf23b\nqiMfP6Vhx9Yp6tTfk9Gn/v7zd9zSvyNLzXCl/XVTgzcn+hId7tSoX/VQ9veHbft3FwAAbYWcYp9/\nbduq4/87T2llnyna8Eryn0+amlUqTacm5ZylnZ992Oo5OgzpksHxuvvyFHIJACAgUcALAECgSEjz\nW5wTsHa8J01+rsmPsAEAwG6T0xM1KD5GizbnafW2Apk+fmBct9jIDlaB7SkT0xL09y/2N3relWf1\naf4c0n4jxaVIW56X+5t35fLULo7aafaTIa+iHZV6dNq5mnx2srJy9+uet7+q99i4ld7R+q4iUTe7\n1liPQPdVaPUrY79WdJkn16kP3wOd23TonsrbrN2GXQ5DN184oINnBQCdT931z+EwFJmcLiW/KE15\nXnKXKcIZoQyPqSFFJ/Rq9l6t+vonme6q9aRUUZIkQ1U/SN1p9tOfNVtbhszXRQOilZ13XP/Yvk9H\nK50y5ZAhryJUoZNyKVxu60adVCNPWa7VGu/4p6KMk35/AFz9XjDenILOKfK7VVWPD+7En6Vs2/bL\nLsPnnnuu37YJCQlKTk5Wfn6+CgsLVVRUpLi4uKAYs639c9VLGp4zVwMNT9VfnKr991hTjpur5hMt\nmqrkpEfrvj2oBdcO1/ihCbb+uwsAALuRU+zxz1UvKT3nPrkM08opUuuzSqXprPUZX2t5TWnDriJd\nNbwPBbwAgIBEAS8AAIGkRnGOtr8rucs6ekaNqyytmqeNOzsBANBcvnbFrfkD47rFRm3h3y78lVbm\n/lSvYLamVhWVnnokumvyc9qZf1CLthbof78pVJlZXbCcVGuHq8npiXIahu5c+qXqzmin2U9zKm/V\nvaq/a7FUtSviHjOx2cW7lUYX5XoG6mxjl89zK02HHJKcNhYFm6b0mXewHnbPrFW8yyPxAKADnNr1\n1yEpylm1a2/N9bmLw6Fyd9UO8NXrct11e8r5ktd7jsrdHn24vVBz3vlKZd4ISVJZjY+zd5gD9MfK\n2VaB7wCjQDe71mqi41NFGRUqNbvoA+9IveG+XF+ZAxUutwYYBbrJ9YF1A4vbrFr7XIZXJ02nwuSV\nw6i/jlcX/lbd8HKe/ua+RJL0l7DFGmb8YFtRsGlKJ8xwnWacpNC4kws3y+WtKJUjIrqjp9Jmdu3a\nZR0PGNB4/h0wYIDy8/Otc1tSpNIRY7alf23bquE5c30+OaOt1H2iRXN4TWnOO18rpVdXcjgAIKCR\nU1qvKqfcX1W8ayOvKf2+crZWe0fZ2q/ba+qet7/SoPgYcgoAIOBQwAsAQKA5VZyjSc9I/zdJqgzw\nIt6wKMkV2dGzAABAUvsU6jakuojY1663ko1FpQ6HhvRL0JP9EvSf0/zvLLxu18F6xbs1mXKoTBE+\n3ytXF5Wa4YoyTjZtXpOeVVj6DTpHhk7u/0rOf74oY8cKqbK01g6/g4z9WhD2gs9ChAZ3RnS4pIsf\nlA7trtr9v7JUckXqWP/xesXzay36PqZGITOP6gWAQFNzfY521d7V0de6Xd1+ytmJOrPXL7vsl1V6\nrI2dTKutU6PPTNbsiy9RevJsfVvws5Zs+lYrth9RaeUvq2CZXNphDqh3A4sk63iwkV9nh/ouWu09\nX6+6JyjP7F3vhperKv5Dtznf072ud3wW/jbEa0qmDDlPneM2DX3iPUsL3NdqhzmgRX0iuJSa4ZLR\n5dR+1J3TsWPHrOOePXs22r5Hjx4+zw3UMfft2+f3/YKCgmb158uRj5+q2nm3ndR9okVLeLymFm3O\n04Jrh9s4MwAA7EVOsSun2P/ULochXeLMtb2AV6oq4iWnAAACEQW8AAAEKqdLSp0ifbW0o2fiX+rk\nTv3IRwAAmmNyeqIGxdcuNGrLolJ/Bcter6k12w60uG9TDq31nqepzk2NNz5zojTid1Vzkn55lPrk\nqkep//ndXVr+ZdUPB3aa/fRdRWKdAqmqAt91nnRd7vpKGc5PFW6WV90olDpFuuD2qpucJGnyc1W7\n/7siFetwaI6ku73+C5kBAMHL1y77klRa4ZZUVQBc8+/+1MRY/cf0UXrs1NqQV3RCr2bv1aqvf9JJ\nd9UPmE05VOmIUHJslPYfLVWZWXUzS2M71PvygmeKNnjP1s2u1afWtQprp97NnmG60LlNGY7Pany9\n6oaWb81kRapcUtXO9zXHqdnnlY4tijTctW5yqSoAdshpeGvtIuwxDTlktmr3Xs+pp9+ynLatD8xR\nmhwW1tHTaFMlJSXWcUSE7xvGaoqM/OXm8OLi4oAfMzk5uVntm8vr8WjosQ21HkfdVnw90aI1Vm8r\n0BO/OYtcDgAIWOSU1qnKKevbLKdkOD7Vvbql0X+LtQQ5BQAQiCjgBQAgkF0wW9r2juR1N9zGcEqD\nrpDyPqnaja69jbyp/ccEACCA+So06ogPhcvdHpVVtnzHLpfD0OmX/VH6ZIv/LOJwSZc80MB7VY9S\nv/miM7TiqwPWzsS+CqQchkPv3Dpa6cmxcsi0inTr3Sh0qs/aX+q4nZcBAO2j7t/10RH+ix+r2w9N\n7FZrXe7icKjC67XWZ6/XVO6+o3pzy49a882Bql1+DYcqjEiZXlMRLoeG9umq3H0/y+Njh32pel27\nTfdqVr3C3/e8F+le3eqzILjUz/6rdfs8KZciVCFJ1u75vnYRHmL8oCzXao13/FNRxkmVmWEqNLsr\nwTiiCKNSpWYXbfEOkSFplOPbGjsNn6c33ZfrK3OgJCnd+E4zXB9pvOPzU/24TvVz1OrnA+9IbfIM\n05XOTzXWsU2uNtiBqzOqNJ361xkzKRqAX+VlJU1/EkYrrPSM0ovuq7TDbPxR3k1VVulRudtDPgcA\noJOqyikVbdZ/lHFSEapo8KlhrUFOAQAEIlYlAAACWUKadPVC6d1ZvgtnHK6q99N+I3m9UuUJ6ckz\n26+Q19lFShzZPmMBABBkOrqoNMLlVGSYs0lFvE7DUBeXw/eOwd2bkEWqd8dtQHVR8z1vf2UV8UpV\nuweWKUIuh6EF1w7XiH6nn3rHqFek25mtXLlSS5YsUU5Ojg4cOKCuXbvqjDPO0NVXX61Zs2apa1d7\nd262e8zvv/9eCxcu1Jo1a5Sfny+Px6PExERddtllysrKUnp6uu3zB4Dmqrkuu2oU0Tochkb07a4R\nfbvryWlmrV1+a96Is+On47V22HcahmRUPS6+ugyzel1zOgxdnBKnKemJemPLD/ps7xGfP3x2SErp\nHaPdB0rkMX0XB1f3KUmldT7Or9ln9fEOc4D+WDlbhry1iobrvpbk82vVvjRT9GVlSpP6+bt3nAx5\nFalypRj5mhv23zrP2NXgTsCVpkP7zZ7qbRxRuM/dhQ05DdP6+knTpeNmlHoax1u1u3AgqDSdutdz\nm2657PKOnkqbi46O1tGjRyVJ5eXlio6O9tu+rKzMOo6JiQn4MfPz8/2+X1BQoPPOO69ZfdYUERmt\nUjO8TYt4S80u+n3lHbbvbhcZ5rT+HgUAIBCRU+zIKV3arIi31Ay3blS0GzkFABCIKOAFACDQpf1G\nikuRtjwv7XivqjjX1+OkHQ4pPEZKnSx9tbR95jbsN/V3xQMAAAHB4TA0MS1Bf/9if6Ntp5yd2PCO\nwU3NIo2YnJ6oQfExtYqf6hULh5iSkhLdcMMNWrlyZa2vFxUVqaioSFu2bNEzzzyjt99+W6NGjQrI\nMV966SX94Q9/qPWDJUnavXu3du/erYULF+qhhx7SQw89ZMv8AaAt1b35puaxrx32JdU6Lq1wW+dV\nr6W/Ht5H2/f/rJc37dEH2wt9rn9er1nrXEn1dgWOcDk0oOdp+vZAsXyX+tZWs/BXkgzDoTIzQk7D\nkCnzVKGso9FdrarbhDkM/fqs3hpzRk8t/exHff7jsXrtShWlL80UXVcxT6lGXq2dgOvu8luzGLih\n3YVPyqVwua1i4VQjT/e43tFYx9fWbr9u09C3ZpIGG/ubvANwpWnoGfdU9XUU6krHVkXWKSL2+f/B\nlExJ1RGpur3HNGTKkMvwqsx06YgZowTjmJyGWatduRmmVd4LtNiboaxpk0Ii98TGxlpFKocOHWq0\nSOXw4cO1zg30MZOSkpo/wWZwOJ3aHjtO5/78QZuNsdo7qk0eTZ2R1psdpgEAAY2c0jpVOeXiNssp\nq73nt0lGkcgpAIDARAEvAADBICFNuvoFafJzDT9OutoFs6Vt7/h/1LXhlAxJ3pY/VlsOV1XRDgAA\nCFj/duGvtDL3p1q73tblchi6+cIB/ncMbk4W8cNX8VOofmju8Xg0bdo0rV27VpLUq1cvZWVlKTU1\nVUeOHNHSpUuVnZ2t/Px8ZWRkKDs7W0OGDAmoMd98803NmjVLkuRwODR9+nRdeumlcrlcys7O1uuv\nv66TJ09q3rx5Cg8P1/3339+q+QNAIPBX5BsdEebznKGJ3fRf08+W12v6XP8cDqPeub52Bf5lJ+A9\nWr3tl8Le8UMTdOmQeH2y+5B1k0yEy6ErUntpxuj+GtG3aof7uoXHH2w7oHuXf91gTujidOjXZ/XW\n/zOqn9KTY605/2Zkcr2i5Jo7EjsNQ7uMX+mPlbMVFWZo7IBouR3h2vyvoyozPQp3OdSra4QKj5er\nzO2Q0zBUJpdqbkJcXchbVuNHGDvMAbq58j5rt9/qdqYcGmL8oJtda5Th+PRUwXC4sr1DJUljHNut\nr632nq9F7onaafaTPNK9utUqFh5u/Et3uN7TWMe2WgXCn3jP0gL3tdpp9rPGLVcXRcit60YNUv7R\nMm3dvV8nzDCZcshpeDU6KVIxES59srdE3sqTMsIiNTEtUf8ZQjctpaSkKC8vT5KUl5en/v37+21f\n3bb63GAZsy11v+xuVf7PxwozWvH5XQMqTacWuSfa3q/z1L8tAAAIZOSU1qvKKR8prIk30TWV23S0\nSUaRfvkMFACAQEMBLwAAwcThaPxx0glpVY+ybuxR11LDbQyn1ONX0qHvGphH0x6XDQAAOlZ1wew9\nb3/lszjH5TC04NrhTS8kaUoWaVI3foqFQ8Qrr7xiFdKmpqZq3bp16tWrl/X+7NmzNWfOHC1YsEBH\njx7VrFmztHHjxoAZs6ioSLNnz5ZUVbz77rvvatKkSdb7M2bM0I033qhLL71UpaWlevDBBzVlypSA\n/KETALSXlqx/dc+pWtvT9cRv6hcDT0r3s6O+VK/w+OpzkpTSu2u93fEnDkuoV7Rbl6+iZKl+kXDN\nedQtYK57bu6+o/rb1h9rFSdfkdpL/+fMOP1//zps7UYc7nLp8qFn1Cpa3lnZT/e7b9P9ukVdzApr\n115J1k6/tb8mhTkdqvBIFUakDEP60pui27xz1Ts6XMeLj+mk26uTRlWBcMvtg7kAACAASURBVHWM\nKlWUujgNTTmrj/7tol9ZGaruLsoNfc+hJC0tzcodOTk5uvjiixtsW1hYaD3qOT4+XnFxcUEzZlsa\nmDZK//zh/2p4zlxbi3grTafuqbytqpDdRg5Deqo5/7YAAKCDkFNaryqnPK70nPvkMpryjJDGeUyH\n7q683faMIrXgM1AAANpRaP+0DACAzqqpj7purM1PX0lbnpW+XdXix2UDAICONTk9UYPiY+oV59R8\ndDfal8fj0fz5863XS5YsqVVIW+3xxx/XP/7xD+Xm5mrTpk368MMPdcUVVwTEmE8++aSOHz8uqarw\nt2bxbrVRo0bpkUce0T333CO326358+frrbfeatH8AQC1NVQM3Nwi4dbuju9vR+K686jbtu7r6l2H\nfRUn/2Zkcr3diKX6RctSVeFwF4dDFV6v8opO6NXsvVq9rUBmnQw0OCGmwYJjX4XJ1X36+n/kaxdl\nX99jKJkwYYKeeOIJSdKaNWt03333Ndh29erV1nFGRkZQjdnWRv76Fv2r31k68vH/q2HH/qFIo1Km\nKRmnLsHmHJebYVrlveCXXaht4nQYujglTndfnsK/LQAAQYGcYo/qnHL8fx9WWtmn1lMsmptV3KZD\n673peso9zfbi3XCXQ78+qw+fgQIAApphmqY9t8Og1fbt26fk5GRJUn5+vpKSkjp4RgCATsHrbfxR\n1421aUofzcCaF1z4/QKAziOUd4FrqvZY99avX69LLrlEkjR27Fht2LChwbavvfaabrrpJklSZmam\nXnvttYAYs3///vrhhx8kSXv27NGAAb4fQVhcXKzevXvrxIkTOu2001RUVKTIyMgWfQ++kFMAAE3R\nGTJQsK15Ho9HSUlJOnDggCTp888/14gRI3y2GzlypHJzcyVJa9eu1fjx44NmzIa0xe+X1+NReVmJ\nunSJVHlZiSQpIjK6acflpVJYpCLCwlTurtrNN8LltOW45q7TAIDQRE4JzDEb0lY5pbTkZ0nNyCfV\nx1FdVe6pKluyK59EuJwN3nwHAAgdwZJRWl+B04ZWrlypadOmqX///oqIiFB8fLxGjx6tJ554wtrl\nxQ7FxcVavny57rjjDo0ePVpxcXEKCwtT165dNXjwYM2YMUNr164Vtc4AgKBU/ahrf4W3jbVpSh8A\nACDgVe8CxwfXHWvNmjXWcWM7qUycONHneR055o4dO6zi3SFDhjRYvCtJMTExuuiiiyRJJ06c0Cef\nfNKseQMAYAcyUPtzOp166KGHrNczZszQwYMH67WbO3euVaAyZsyYBgtUFi9eLMMwZBiGxo0b1y5j\nBhqH06mo6G5ydemi6G7dFd2te9OPu8YqOjJcLpdD0RFhio4Is+2YP1cAgGBDTrGfw+lsfj6pPg5z\n2Z5PXC4H+R8AEDQC8tlNJSUluuGGG7Ry5cpaXy8qKlJRUZG2bNmiZ555Rm+//bZGjRrVqrGeeuop\nPfDAAyovL6/3XnFxsXbt2qVdu3ZpyZIluuiii/Tmm2+qb9++rRoTAAAAAACErm3btlnH5557rt+2\nCQkJSk5OVn5+vgoLC1VUVKS4uLgOHbM5fVW3Wbt2rXXuhAkTmjt9AAAQhLKysvTuu+/qo48+0vbt\n2zV8+HBlZWUpNTVVR44c0dKlS7V582ZJUmxsrBYuXBiUYwIAgOBDTgEAAIEi4Ap4PR6Ppk2bZv1g\np1evXvVCS3Z2tvLz85WRkaHs7GwNGTKkxePt3r3bKt5NTEzUZZddpnPOOUfx8fEqLy/X1q1b9eab\nb6qkpESbNm3SuHHjtHXrVsXHx9vy/QIAAAAAgNCya9cu69jf7rU12+Tn51vntqSA184xW9KXr3MB\nAEDn5nK5tHz5cl1//fVatWqVDhw4oEceeaReu6SkJC1btkxDhw4NyjEBAEDwIacAAIBAEXAFvK+8\n8opVvJuamqp169apV69e1vuzZ8/WnDlztGDBAh09elSzZs3Sxo0bWzyeYRi64oorNGfOHF166aVy\n1Hk0+MyZMzV37lyNHz9eu3btUl5enubOnatXX321xWMCAAAAAIDQdezYMeu4Z8+ejbbv0aOHz3M7\nasz2nP++ffv8vl9QUNCs/gAAQPuKiYnR+++/rxUrVuiNN95QTk6ODh48qJiYGA0cOFBTp07VrFmz\n1K1bt6AeEwAABB9yCgAACAQBVcDr8Xg0f/586/WSJUtqFe9We/zxx/WPf/xDubm52rRpkz788ENd\nccUVLRrzscceU/fu3f226devn5YtW6b09HRJ0rJly/Tss88qKiqqRWMCAAAAAIDQVVJSYh1HREQ0\n2j4yMtI6Li4u7vAx23P+ycnJzWoPAAAC0+TJkzV58uQWn5+ZmanMzMx2HRMAAIQGcgoAAOhIjsab\ntJ+NGzdaO6eMHTtWI0aM8NnO6XTqrrvusl4vXbq0xWM2Vrxbbfjw4UpJSZEklZaW6vvvv2/xmAAA\nAAAAAAAAAAAAAAAAAAhdAbUD75o1a6zjjIwMv20nTpzo87y21LVrV+u4rKysXcYEAAAAAACdS3R0\ntI4ePSpJKi8vV3R0tN/2NT+DiImJ6fAxa55bXl7e6NitmX9+fr7f9wsKCnTeeec1q08AAAAAAAAA\nAIBAEFAFvNu2bbOOzz33XL9tExISlJycrPz8fBUWFqqoqEhxcXFtNreKigrt3r3bet2vX782GwsA\nAAAAAHResbGxVjHtoUOHGi2mPXz4cK1zO3rMmq8PHTrU6NitmX9SUlKz2gMAAAAAAAAAAAQLR0dP\noKZdu3ZZxwMGDGi0fc02Nc9tC2+99ZZ+/vlnSdKIESOUkJDQpuMBAIDAtnLlSk2bNk39+/dXRESE\n4uPjNXr0aD3xxBM6fvx4pxkTAADYLyUlxTrOy8trtH3NNjXP7agxO2L+AAAAAAAAAAAAnU1A7cB7\n7Ngx67hnz56Ntu/Ro4fPc+1WVFSk+++/33r94IMPtqifffv2+X2/oKCgRf0CAID2U1JSohtuuEEr\nV66s9fWioiIVFRVpy5YteuaZZ/T2229r1KhRQTsmAABoO2lpaVq7dq0kKScnRxdffHGDbQsLC5Wf\nny9Jio+Pb/HTh+wcMy0tzTrOyclpdOyabYYNG9aseQMAAAAAAAAAAHRWAbUDb0lJiXUcERHRaPvI\nyEjruLi4uE3mVFFRoWuuuUYHDx6UJE2ZMkVXX311i/pKTk72++u8886zc+oAAMBmHo9H06ZNswpp\ne/XqpQcffFBvvfWWnn32WY0ZM0aSlJ+fr4yMDO3cuTMoxwQAAG1rwoQJ1vGaNWv8tl29erV1nJGR\nERBjpqamqm/fvpKknTt3au/evQ32VVJSok2bNkmSoqKiNHbs2OZMGwAAAAAAAAAAoNMKqALeQOP1\nenXTTTdZP2gaOHCgXn311Q6eFQAA6CivvPKKtXNdamqqvvrqKz3yyCP67W9/q9mzZ2vz5s265557\nJElHjx7VrFmzgnJMAADQtsaOHauEhARJ0oYNG/TFF1/4bOfxePT0009br6dPnx4wY1533XXW8VNP\nPdXguC+99JJOnDghSZo0aZKioqKaPXcAAAAAAAAAAIDOKKAKeKOjo63j8vLyRtuXlZVZxzExMbbO\nxTRN3Xrrrfrb3/4mSerbt68+/vhjnX766S3uMz8/3++vzz77zK7pAwAAm3k8Hs2fP996vWTJEvXq\n1ateu8cff1zp6emSpE2bNunDDz8MqjEBAEDbczqdeuihh6zXM2bMsJ78U9PcuXOVm5srSRozZozG\njx/vs7/FixfLMAwZhqFx48a1y5hz5syxPot57rnnrKcF1PTpp5/qz3/+syTJ5XJp3rx5PvsCAAAA\nAAAAAAAIRa6OnkBNsbGxOnr0qCTp0KFDtQp6fTl8+HCtc+1imqZuv/12vfzyy5KkpKQkrVu3Tv37\n929Vv0lJSTbMDgAAdISNGzeqoKBAUtUOdiNGjPDZzul06q677tJNN90kSVq6dKmuuOKKoBkTAAC0\nj6ysLL377rv66KOPtH37dg0fPlxZWVlKTU3VkSNHtHTpUm3evFlS1WceCxcuDKgx4+Pj9cwzzygz\nM1Ner1dXX321pk+frssvv1xOp1PZ2dl6/fXXrRu058+fr8GDB7f6ewAAAAAAAAAAAOgsAqqANyUl\nRXl5eZKkvLy8Rgtmq9tWn2sH0zQ1e/Zsvfjii5KkxMRErV+/XgMHDrSlfwAAEJzWrFljHWdkZPht\nO3HiRJ/nBcOYAACgfbhcLi1fvlzXX3+9Vq1apQMHDuiRRx6p1y4pKUnLli3T0KFDA27MmTNnqrS0\nVHfffbfKy8v11ltv6a233qrVxul06oEHHtCf/vSnVs8fAAAAAAAAAACgM3F09ARqSktLs45zcnL8\nti0sLFR+fr6kql1f4uLiWj1+dfHuCy+8IEnq06eP1q9frzPOOKPVfQMAgOC2bds26/jcc8/12zYh\nIUHJycmSqjJLUVFR0IwJAADaT0xMjN5//3299957mjp1qpKTkxUeHq6ePXvq/PPP1+OPP65vvvlG\no0ePDtgxb7vtNn399de6++67lZqaqpiYGJ122mkaNGiQbr31VuXk5Gj+/Pm2zR8AAAAAAAAAAKCz\nCKgdeCdMmKAnnnhCUtXOcffdd1+DbVevXm0dN7YjXVPULd7t3bu31q9fr0GDBrW676Zyu93WcfXj\nsgEA6IxqrnM1179AtmvXLut4wIABjbYfMGCAdbPRrl27WnSzUUeM6QsZBQAQSjoip0yePFmTJ09u\n8fmZmZnKzMxs1zFrGjRokBYsWKAFCxbY0l9zkFMAAKEiGD9LCWVkFABAKCGnBBdyCgAgVARLRgmo\nAt6xY8cqISFBBw4c0IYNG/TFF19oxIgR9dp5PB49/fTT1uvp06e3euw77rjDKt5NSEjQ+vXrdeaZ\nZ7a63+aouVPeeeed165jAwDQUYqKitS/f/+Onkajjh07Zh337Nmz0fY9evTweW4gjrlv3z6/73/z\nzTfWMRkFABBKgiWnhDI+SwEAhCIySuAjowAAQhU5JfCRUwAAoSiQM4qjoydQk9Pp1EMPPWS9njFj\nhg4ePFiv3dy5c5WbmytJGjNmjMaPH++zv8WLF8swDBmGoXHjxjU47p133qnnn39eUlXx7oYNG5SS\nktKK7wQAAHQ2JSUl1nFERESj7SMjI63j4uLigB4zOTnZ76+rrrqqeRMHAAAAAAAAAAAAAACAXwG1\nA68kZWVl6d1339VHH32k7du3a/jw4crKylJqaqqOHDmipUuXavPmzZKk2NhYLVy4sFXjPfjgg3r2\n2WclSYZh6Pe//7127typnTt3+j1vxIgR6tu3b6vGristLU2fffaZJCkuLk4uV+t+ewoKCqw7pj77\n7DP17t271XNEaOOagt24pkKX2+227vBNS0vr4NmgqT777DNbMorEn3/Yi+sJduOaCm3klODCZykI\ndFxTsBvXVOgiowQXMgoCHdcU7MY1FdrIKcGFnIJAxzUFu3FNha5gySgBV8Drcrm0fPlyXX/99Vq1\napUOHDigRx55pF67pKQkLVu2TEOHDm3VeNXFwJJkmqb+/d//vUnnvfbaa8rMzGzV2HVFRETo3HPP\ntbXPar1791ZSUlKb9I3QxDUFu3FNhZ5AfTxBQ6Kjo3X06FFJUnl5uaKjo/22Lysrs45jYmICesz8\n/PwmtWurP6P8+YeduJ5gN66p0BRsOSWU8VkKggnXFOzGNRV6yCjBg4yCYMI1BbtxTYUmckrwIKcg\nmHBNwW5cU6EnGDJKwBXwSlUFJ++//75WrFihN954Qzk5OTp48KBiYmI0cOBATZ06VbNmzVK3bt06\neqoAACBExMbGWsW0hw4darSY9vDhw7XODeQx+UcKAAAAAAAAAAAAAABA+wrIAt5qkydP1uTJk1t8\nfmZmZqO75G7YsKHF/QMAgNCRkpKivLw8SVJeXl6jd2pVt60+N1jGBAAAAAAAAAAAAAAAQNtzdPQE\nAAAAgkFaWpp1nJOT47dtYWGh8vPzJUnx8fGKi4sLmjEBAAAAAAAAAAAAAADQ9ijgBQAAaIIJEyZY\nx2vWrPHbdvXq1dZxRkZGUI0JAAAAAAAAAAAAAACAtkcBLwAAQBOMHTtWCQkJkqQNGzboiy++8NnO\n4/Ho6aeftl5Pnz49qMYEAAAAAAAAAAAAAABA26OAFwAAoAmcTqceeugh6/WMGTN08ODBeu3mzp2r\n3NxcSdKYMWM0fvx4n/0tXrxYhmHIMAyNGzeuXcYEAAAAAAAAAAAAAABAYHB19AQAAACCRVZWlt59\n91199NFH2r59u4YPH66srCylpqbqyJEjWrp0qTZv3ixJio2N1cKFC4NyTAAAAAAAAAAAAAAAALQt\nwzRNs6MnAQAAECyKi4t1/fXXa9WqVQ22SUpK0rJlyzR69OgG2yxevFg33nijJGns2LHasGFDm48J\nAAAAAAAAAAAAAACAwODo6AkAAAAEk5iYGL3//vt67733NHXqVCUnJys8PFw9e/bU+eefr8cff1zf\nfPONrYW0HTEmAAAAAAAAAAAAAAAA2g478AIAAAAAAAAAAAAAAAAAAADtiB14AQAAAAAAAAAAAAAA\nAAAAgHZEAS8AAAAAAAAAAAAAAAAAAADQjijgBQAAAAAAAAAAAAAAAAAAANoRBbwAAAAAAAAAAAAA\nAAAAAABAO6KAFwAAAAAAAAAAAAAAAAAAAGhHFPACAAAAAAAAAAAAAAAAAAAA7YgCXgAAAAAAAAAA\nAAAAAAAAAKAdUcDbSa1cuVLTpk1T//79FRERofj4eI0ePVpPPPGEjh8/3tHTQxvxeDz65ptvtHjx\nYt1555264IILFBUVJcMwZBiGMjMzm93n999/r3vvvVfDhg1Tt27dFB0drZSUFM2ePVu5ubnN6uvk\nyZN64YUXdMkll6h3794KDw9XUlKSrrzySr355pvyer3Nnh/aVnFxsZYvX6477rhDo0ePVlxcnMLC\nwtS1a1cNHjxYM2bM0Nq1a2WaZpP75JoCQhsZJXSRU2A3cgoAO5FRQhcZBXYjowCwGzkldJFTYCcy\nCgC7kVFCFxkFdiOnIOSZ6FSKi4vNSZMmmZIa/JWcnGxu2bKlo6eKNjB16lS/v/czZ85sVn8LFy40\nIyMjG+zP6XSa8+fPb1JfO3fuNFNTU/3O78ILLzQPHDjQgu8cbWHBggVmRESE39+z6l8XXXSR+cMP\nPzTaJ9cUELrIKCCnwE7kFAB2IaOAjAI7kVEA2ImcAnIK7EJGAWAnMgrIKLATOQUwTZfQaXg8Hk2b\nNk1r166VJPXq1UtZWVlKTU3VkSNHtHTpUmVnZys/P18ZGRnKzs7WkCFDOnjWsJPH46n1unv37urR\no4e+++67Zvf15ptvatasWZIkh8Oh6dOn69JLL5XL5VJ2drZef/11nTx5UvPmzVN4eLjuv//+Bvsq\nKCjQ+PHj9eOPP0qSzjrrLM2cOVN9+vTRnj17tGjRIu3Zs0ebN2/WlVdeqU8++USnnXZas+cMe+3e\nvVvl5eWSpMTERF122WU655xzFB8fr/Lycm3dulVvvvmmSkpKtGnTJo0bN05bt25VfHy8z/64poDQ\nRUaBRE6BvcgpAOxARoFERoG9yCgA7EJOgUROgX3IKADsQkaBREaBvcgpgMQOvJ3Iiy++aFX3p6am\n+qzuv+eee2rdmYDO5bHHHjPnzp1rvvPOO+aePXtM0zTN1157rdl3Oh08eNDs2rWrKcl0OBzmihUr\n6rXZsmWLGRUVZUoyXS6X+e233zbY3/Tp0605TJ8+3aysrKz1fnFxsTl27FirzYMPPtj0bxpt5tZb\nbzWvuOIK88MPPzQ9Ho/PNnv37jVTUlKs37sbb7zRZzuuKSC0kVFgmuQU2IucAsAOZBSYJhkF9iKj\nALALOQWmSU6BfcgoAOxCRoFpklFgL3IKYJoU8HYSbrfb7N27t/WXwueff95gu/T0dKvdBx980M4z\nRXtrSVC67777rHPuvPPOBtstWLDAavfb3/7WZ5vt27ebhmGYkszevXubxcXFPtvt27fP2hY/KirK\nPHr0aJPmirZz+PDhJrXLzc21roOoqCjzxIkT9dpwTQGhi4wCf8gpaClyCoDWIqPAHzIKWoqMAsAO\n5BT4Q05BS5BRANiBjAJ/yChoKXIKYJoOoVPYuHGjCgoKJEljx47ViBEjfLZzOp266667rNdLly5t\nl/khuCxbtsw6/uMf/9hgu6ysLGv795UrV6qsrMxnX6ZpSpJuueUWRUdH++wrMTFR1157rSSptLRU\nK1asaPH8YY/u3bs3qd3w4cOVkpIiqer37vvvv6/XhmsKCF1kFNiNNQUSOQVA65FRYDfWE0hkFAD2\nIKfAbqwpIKMAsAMZBXZjTYFETgEkiQLeTmLNmjXWcUZGht+2EydO9HkeIEk7duzQDz/8IEkaMmSI\nBgwY0GDbmJgYXXTRRZKkEydO6JNPPqnXpjnXZs33uTaDS9euXa3juuGGawoIbWQU2Ik1BS1BTgHg\nCxkFdmI9QUuQUQA0hJwCO7GmoLnIKAAaQkaBnVhT0BLkFHRWFPB2Etu2bbOOzz33XL9tExISlJyc\nLEkqLCxUUVFRm84NwaU511LdNjXPlSTTNLV9+3ZJVXfanX322S3uC4GroqJCu3fvtl7369ev1vtc\nU0BoI6PATqwpaC5yCoCGkFFgJ9YTNBcZBYA/5BTYiTUFzUFGAeAPGQV2Yk1Bc5FT0JlRwNtJ7Nq1\nyzr2dxeBrzY1zwXsvJby8/NVWloqSUpKSlJYWJjfvpKTk+V0OiVJ3333nbUdPQLbW2+9pZ9//lmS\nNGLECCUkJNR6n2sKCG1kFNiJNQXNRU4B0BAyCuzEeoLmIqMA8IecAjuxpqA5yCgA/CGjwE6sKWgu\ncgo6Mwp4O4ljx45Zxz179my0fY8ePXyeC9h5LTW3r7CwMGvL+8rKSp04caLRc9CxioqKdP/991uv\nH3zwwXptuKaA0EZGgZ1YU9Ac5BQA/pBRYCfWEzQHGQVAY8gpsBNrCpqKjAKgMWQU2Ik1Bc1BTkFn\nRwFvJ1FSUmIdR0RENNo+MjLSOi4uLm6TOSE42XktNbevxvpDYKmoqNA111yjgwcPSpKmTJmiq6++\nul47rikgtJFRYCfWFDQVOQVAY8gosBPrCZqKjAKgKcgpsBNrCpqCjAKgKcgosBNrCpqKnIJQQAEv\nAKDZvF6vbrrpJm3atEmSNHDgQL366qsdPCsAAAByCgAACExkFAAAEIjIKAAAIFCRUxAqKODtJKKj\no63j8vLyRtuXlZVZxzExMW0yJwQnO6+l5vbVWH8IDKZp6tZbb9Xf/vY3SVLfvn318ccf6/TTT/fZ\nnmsKCG1kFNiJNQWNIacAaCoyCuzEeoLGkFEANAc5BXZiTYE/ZBQAzUFGgZ1YU9AYcgpCCQW8nURs\nbKx1fOjQoUbbHz582Oe5gJ3XUnP7crvdOn78uCQpLCxMp512WqPnoH2Zpqnbb79dL7/8siQpKSlJ\n69atU//+/Rs8h2sKCG1kFNiJNQX+kFMANAcZBXZiPYE/ZBQAzUVOgZ1YU9AQMgqA5iKjwE6sKfCH\nnIJQQwFvJ5GSkmId5+XlNdq+Zpua5wJ2XkvJycmKioqSJO3bt0+VlZV++/rxxx/l8XgkSYMGDZJh\nGE2eN9qeaZqaPXu2XnzxRUlSYmKi1q9fr4EDB/o9j2sKCG1kFNiJNQUNIacAaC4yCuzEeoKGkFEA\ntAQ5BXZiTYEvZBQALUFGgZ1YU9AQcgpCEQW8nURaWpp1nJOT47dtYWGh8vPzJUnx8fGKi4tr07kh\nuDTnWqrbZtiwYbXeMwxDQ4cOlSR5PB59+eWXLe4LHas6JL3wwguSpD59+mj9+vU644wzGj2XawoI\nbWQU2Ik1Bb6QUwC0BBkFdmI9gS9kFAAtRU6BnVhTUBcZBUBLkVFgJ9YU+EJOQaiigLeTmDBhgnW8\nZs0av21Xr15tHWdkZLTZnBCcUlNT1bdvX0nSzp07tXfv3gbblpSUaNOmTZKkqKgojR07tl4brs3g\nVzck9e7dW+vXr9egQYOadD7XFBDa+DMLO7GmoC5yCoCW4s8r7MR6grrIKABagz+zsBNrCmoiowBo\nDf7Mwk6sKaiLnIJQRgFvJzF27FglJCRIkjZs2KAvvvjCZzuPx6Onn37aej19+vR2mR+Cy3XXXWcd\nP/XUUw22e+mll3TixAlJ0qRJk6wt5Bvqa+HChVb7uvbv36+3335bkhQZGanJkye3aO6w3x133GGF\npISEBK1fv15nnnlms/rgmgJCFxkFdmNNQU3kFAAtRUaB3VhPUBMZBUBrkFNgN9YUVCOjAGgNMgrs\nxpqCmsgpCGkmOo3nn3/elGRKMocOHWoWFhbWazNnzhyrzZgxYzpglmhvr732mvV7PnPmzCadU1hY\naMbExJiSTIfDYa5YsaJem61bt5pRUVGmJNPlcpk7d+5ssL9rr73WmsNvf/tbs7Kystb7xcXF5tix\nY602DzzwQLO+R7SdO+64w/p9SUhIML/99tsW9cM1BYQ2MgoaQk5Ba5BTALQWGQUNIaOgNcgoAOxA\nTkFDyCloKTIKADuQUdAQMgpag5yCUGeYpmn6L/FFsHC73crIyNBHH30kqeqOhKysLKWmpurIkSNa\nunSpNm/eLEmKjY3V5s2bNXTo0I6cMmyWl5enRYsW1fra119/rffff1+SdNZZZ+mqq66q9f4ll1yi\nSy65pF5fr7/+ujIzMyVJDodD06dP1+WXXy6n06ns7Gy9/vrrKi8vlyQ99thj+tOf/tTgvPbv369R\no0Zp37591jwyMzPVp08f7dmzR6+88or27NkjSUpPT9emTZsUHR3dsv8JsM2DDz6oxx57TJJkGIb+\n+te/avDgwY2eN2LECOvRBDVxTQGhi4wCiZwCe5FTANiBjAKJjAJ7kVEA2IWcAomcAvuQUQDYhYwC\niYwCe5FTALEDb2dz/Phx89e//rVV3e/rV1JSkpmdnd3RU0UbWL9+VYNa5wAAIABJREFUvd/fe1+/\n5s2b12B/zz//vBkREdHguU6n03zooYeaNLft27ebgwcP9juX0aNHmwUFBTb930Br1bxTqDm/Xnvt\ntQb75JoCQhcZBeQU2ImcAsAuZBSQUWAnMgoAO5FTQE6BXcgoAOxERgEZBXYipwCm6RI6lZiYGL3/\n/vtasWKF3njjDeXk5OjgwYOKiYnRwIEDNXXqVM2aNUvdunXr6KkiCNx222267LLL9OKLL2rt2rXK\nz8+X1+tVnz59dOmll+qWW27R2Wef3aS+UlNT9eWXX2rRokV655139O233+ro0aPq2bOnzjrrLF1/\n/fW64YYb5HA42vi7QkfimgJCFxkFdmNNgd24poDQREaB3VhPYDeuKSB0kVNgN9YU2InrCQhdZBTY\njTUFduOaQrAxTNM0O3oSAAAAAAAAAAAAAAAAAAAAQKig/BsAAAAAAAAAAAAAAAAAAABoRxTwAgAA\nAAAAAAAAAAAAAAAAAO2IAl4AAAAAAAAAAAAAAAAAAACgHVHACwAAAAAAAAAAAAAAAAAAALQjCngB\nAAAAAAAAAAAAAAAAAACAdkQBLwAAAAAAAAAAAAAAAAAAANCOKOAFAAAAAAAAAAAAAAAAAAAA2hEF\nvAAAAAAAAAAAAAAAAAAAAEA7ooAXAAAAAAAAAAAAAAAAAAAAaEcU8AIAAAAAAAAAAAAAAAAAAADt\niAJeAAAAAAAAAAAAAAAAAAAAoB1RwAsAAAAAAAAAAAAAAAAAAAC0Iwp4AQAAAAAAAAAAAAAAAAAA\ngHZEAS8AAAAAAAAAAAAAAAAAAADQjijgBQAAAAAAAAAAAAAAAAAAANoRBbwAAAAAAAAAAAAAAAAA\nAABAO6KAFwAAAAAAAAAAAAAAAAAAAGhHFPACAAAAAAAAAAAAAAAAAAAA7YgCXgAAAAAAAAAAAAAA\nAAAAAKAdUcALAAAAAAAAAAAAAAAAAAAAtCMKeAEAAAAAAAAAAAAAAAAAAIB2RAEvAAAAAAAAAAAA\nAAAAAAAA0I4o4AUAAAAAAAAAAAAAAAAAAADaEQW8AAAAAAAAAAAAAAAAAAAAQDuigBcAAAAAAAAA\nAAAAAAAAAABoRxTwAgAAAAAAAAAAAAAAAAAAAO2IAl4AAAAAAAAAAAAAAAAAAACgHVHACwAAAAAA\nAAAAAAAAAAAAALQjCngBAAAAAAAAAAAAAAAAAACAdkQBLwAAAAAAAAAAAAAAAAAAANCOKOAFAAAA\nAAAAAAAAAAAAAAAA2hEFvAAAAAAAAAAAAAAAAAAAAEA7ooAXAAAAAAAAAAAAAAAAAAAAaEcU8AIA\nAAAAAAAAAAAAAAAAAADtiAJeAAAAAAAAAAAAAAAAAAAAoB1RwAsAAAAAAAAAAAAAAAAAAAC0Iwp4\nAQAAAAAAAAAAAAAAAAAAgHZEAS8AAAAAAAAAAAAAAAAAAADQjijgBQAAAAAAAAAAAAAAAAAAANoR\nBbwAAs7ixYtlGIYMw1D//v07ejoAAMAP1u2OlZeXpzlz5uicc87R6aefLqfTaf1+ZGZmWu0efvhh\n6+vjxo2zdQ4bNmyw+jYMw9a+AQChJ5izxd69e2utiXv37u3oKQWMlmSRwsJCzZs3TxdccIF69Ogh\nl8vls49gvmbsRi4DAAAAAAAAgouroycAAIHiyJEjysnJ0cGDB3Xo0CGVlZWpW7duio2N1eDBgzVs\n2DCFh4d39DQBAICkffv2KTc3V0VFRSoqKpIknX766UpMTNTIkSMVHx/fwTNse8uXL9fvfvc7lZWV\ndfRUAAAIemSLwLJ582ZNmTJFhw8f7uipAACAIHfy5En16dNHR44csb72wAMP6NFHH212X5mZmXr9\n9dcbfN8wDHXt2lXdu3fXsGHDdOGFF+p3v/udevfu3aK5AwCAwLB48WLdeOONLT7fNE2fX/d4PNqx\nY4dycnKsX19//bUqKyutNnl5eSF/wzLQ2VHACyCkHTt2TM8884zee+895ebmyuv1Ntg2LCxM5513\nnqZNm6Zrr7220Q9c9u7dqwEDBliv582bp4cfftiuqTdJ3SC5fv36Zu+69/DDD2v+/PnWawIiAKCj\nFBUV6amnntKKFSu0c+dOv20HDRqkG264QTNnzuyU61ZeXl694t3Y2Fh1797d2m2tV69eHTU9AACC\nAtkiMB0/flzXXHNNreLd6OhoxcXFyeGoeqBcYmJiR02vXVR/TiVJ6enpmjJlSgfPCACA4LVy5cpa\nxbuStGTJEv3lL3+xsoVdTNPUzz//rJ9//ll5eXl6//339cADD+j3v/+9Hn30UUVERNg6HgAACF5T\np07VBx98oNLS0o6eCoAORgEvgJDk9Xr1n//5n3r88cd17NixJp1TWVmp7OxsZWdn67777lNWVpYe\neOAB7pwGAKCNeTwePfroo3ryySdVUlLSpHO+++47Pfzww3rsscd02223ad68eerevXsbz7T9PP/8\n81bxblxcnP7+97/rwgsv7OBZAQAQHMgWgW3JkiU6ePCgJCkyMlL//d//rauuusq6SSkUvPfee9bu\nfjNnzqSAFwCAVnjttdfqfe3HH3/UunXrdNlll7Wq74EDB9Z6bZqmjh49qqNHj1pfc7vdWrBggXJz\nc7VmzRqFhYW1akwAANDx+vTpo8jIyFb18cUXX1C8C0ASBbwAQlBxcbGuv/56rVq1qtbXo6KidNFF\nF2nkyJHq2bOnunXrpsOHD6uwsFA5OTnKzs6W2+2WJFVUVOi5555TRESEnnzyyY74NgAACAnFxcW6\n9tprtXbt2lpfj42N1eWXX65hw4YpLi5OLpdLBQUFysvL09q1a3XgwAFJVTfgPP300xowYID+8Ic/\ndMS30CbWrVtnHf/xj39stHj34YcfbvcnAQAAEIjIFh2jOVmkZs753e9+p0mTJvltn5mZqczMzFbM\nrvMYN25cg4/lBAAgFP3000/68MMPrde/+tWvtGfPHklVhb2tLeD9/vvvfX79hx9+0Msvv6z/n737\nDovqWP8A/t1CUwQEaXbFSkQUxK7Y27XGGrv3qjHXFBM1MYlXYzQmJjHNNBONmNhNrFHUxIYYaxQE\nQRRBRQVcFSnCUnbP7w9+nOzCVtilyPfzPPvkzO7Me+YcMDPsvjvz8ccfi1tgHz16FMuWLcOKFSvK\ndE4iIiKqeJs3bzZ752NDHBwc0K5dOwQFBeHmzZs4cOCAxWITUeXHBF4iqlby8vLQv39/nDt3TnzO\n29sb7777LmbOnAk7Ozu9bdPT07Fz506sXLkSiYmJ5dFdIiKiai03Nxf9+vXD+fPnxefq1q2L5cuX\nY9q0aZDJZDrbCYKA06dPY+nSpVoJIM+Sog+bAMDf378Ce0JERFR1cG5RNXCeQ0RERJbyyy+/QKVS\nAShcLXflypUYP348AGD37t3IyMiAk5OTxc/bqFEjrFixAj169MC//vUvsQ9ffPEFFi5cCGdnZ4uf\nk4iIiKqWqVOnomHDhggKCsJzzz0Hubwwhe+9995jAi9RNcMEXiKqVl5//XWt5N0uXbpg3759qFOn\njtG2zs7OmDlzJqZPn461a9di4cKF1uwqERFRtbdgwQKtBJtOnTrh4MGDRrerlkgk6N69O44ePYr9\n+/c/kyuyZWRkiMc1atSowJ4QERFVHZxbVA2c5xARET0bFAoFwsLCcPfuXeTk5KBJkybo27evwc9j\nkpOTERYWhtu3b0MqlaJhw4YYMGAAXFxcStWHkJAQ8XjSpEkYPnw4nJ2dkZ6ejpycHGzbtg2zZ88u\nVWxTDBw4EFOnTsWGDRsAAE+fPsWxY8cwatQoq52TiIiIqob333+/ortARJUEE3iJyCLS0tJw5coV\nXL9+HY8fP4YgCHBzc4OPjw+6dOkCBweHiu4ijh07hm+//VYs+/r64ujRo2b3TS6XY+7cuQgODtb6\n4M/SHjx4gFOnTiE5ORmZmZlwd3eHj48PunfvDhsbG6udl4iInn1VYdw+efIkvv76a7HcokUL/Pnn\nn3B0dDQrzrBhw3DhwgXcuHHDpPrZ2dniB0WPHz+Gi4sL6tWrh+DgYIutjnLr1i2cO3cOSUlJkMlk\naNCgAfr27YvatWubHEOtVlukL8aoVCqEhYUhLi4O6enp8Pb2hq+vLzp06GCxc1y/fh1///03UlNT\nkZeXB09PT7Rv3x5t27a1SPzU1FScOnUKSUlJUKlUqFu3Lnr37g1vb+8yxY2KisKVK1egUCjw9OlT\nODs7w8fHB4GBgfDw8DA7XmRkJKKiopCamgpBEODl5YXOnTujWbNmZeonEVF54NyibFJTUxEVFYX4\n+Hg8efIEUqkUbm5uaNWqFTp27Fjq9wAePXqE8+fP4+bNm8jIyIBUKoWjoyMaNGiAVq1aoUWLFpBI\nJOUey5iiFerKS3x8PC5evAiFQoGMjAw4OjqiSZMmaN++PRo0aGBynKSkJERFRSExMRHp6emws7OD\nm5sb/Pz80L59e0ilUiteRdlVlXkwERFVLtOnT8fGjRsBANOmTUNISAgePnyIV155Bb/99hvy8/O1\n6tvZ2eG1117DBx98IK4yBwD37t3D66+/jt9++63Eex62trZ48803sXTpUq02xpw5cwbXrl0Ty5Mn\nT4a9vT3GjBmD9evXAyhM8LVmAi8AjBkzRkzgBYDLly8zgZeIiIiIiP4hENEzq3///gIAAYDQs2dP\ns9omJycLMplMbL927doSdRISEoT3339faN++vSCVSsW6xR+2trbCjBkzhFu3bpl07g0bNohtGzVq\nZFa/DdG8H1KpVPj7778tFluXxMRErfuwdOlSk9qdO3dO6NWrl9576uTkJLz++uvCkydPjMbSvJcA\nhOPHj5t9HUuXLtWKkZiYaHYMIiIyjuO2tkGDBolxJRKJ8Ndff1ksti53794Vpk6dKjg4OOi8LzY2\nNsLIkSOF69evmxSvUaNGYtsNGzYIgiAI169fFwYMGCBIJJIS8WUymfDSSy8JGRkZOuMVn1cYewQH\nB2u11xzPi7+mz/r16wVvb2+d8X19fYV9+/YJgiAIx48f13rNFCqVSli3bp3QvHlzvdfQrFkzYdu2\nbSbFCw4OLjHnSk5OFsaOHSvI5fISsSUSiTBu3DghOTnZpPhFMjMzhffff1+oW7eu3n5LJBIhMDBQ\n+Prrr43GUyqVwscffyzUr19fb7x27doJf/zxh1n9JCISBM4tiiuPuUXx8drQ389RUVHCm2++KbRu\n3drgmF6zZk3h9ddfFx48eGByP2JjY4URI0boHAM1H25ubsL06dMFhUJh9VjG5iLmzHOK/16U5ncm\nNzdXWLNmjeDj42PwXK1btxY+/PBDQalU6oxz5swZYe7cuUKTJk0MxnF1dRWWLVsmZGZm6u2TufM9\nzXlmkdLMyyr7PJiIiCq3adOmif9PnzZtmhAbG2vwb9yix6hRowS1Wi0IgiBcvnxZcHd3N9pmypQp\nZvVt1qxZYtuOHTuKzxcfL69du1aq6zV1rI2NjdVqM2fOHLOug4iIiCqeJfIuTMX8DKLqp3J/7Z+I\nymTSpEni8alTp3Dnzh2T227btk1c8cTW1hZjx44tUWfhwoVYsmQJLl++bHAVuLy8PGzYsAHt27fH\nyZMnzbgCy4mOjsYff/whlgcPHoyAgIAK6YshH374ITp37owTJ07ovacZGRn4/PPP0bp1a0RHR5dz\nD4mIyFo4bv8jNjYWhw4dEsv9+/dHly5drHa+P//8E61atcLPP/+MnJwcnXXy8/OxZ88etGnTBlu3\nbjX7HIcPH0ZgYCCOHDkCQRBKvK5SqfDdd99hwIABePr0qdnxLUkQBMyYMQP/+c9/kJycrLNOTEwM\nRowYgY8++sjs+A8fPkS3bt0wc+ZMg6sXxsfHY8KECZg6darZK/FdunQJ7du3x86dO1FQUFDidUEQ\nsGPHDvTo0QMpKSkmxbx48SJatmyJJUuW4P79+3rrCYKAv//+Gy+//LLBeAkJCWjbti3efPNN3L17\nV2+9iIgI9O/fH++++65J/SQiKsK5xT/Ke25hiunTp+Pjjz9GbGyswXpPnz7F559/jg4dOpj0HkBo\naCjatWuHvXv36hwDNT169AghISF6xyFLxqpMEhIS4O/vj1deeQU3b940WDc2NhZvv/223jnR0KFD\n8c033yAxMdFgnMePH2Pp0qXo1q1bpbpHnAcTEZElZWVl4fnnn8fdu3dRq1YtzJgxA1999RV+/PFH\nzJs3T2vF9d27d+OHH35ASkoKBg8eDIVCgVq1amH69Ol62/zyyy/YuXOnSX3JycnBjh07xPLkyZPF\n4+DgYDRs2FAsh4SElOGqjSs+j5LJZFY9HxERERERVS2m7zNCRFXO888/j5deegk5OTkQBAFbt27F\nW2+9ZVLbzZs3i8dDhgwxupWdr68vunTpgtatW6N27drIy8tDQkICDhw4gJiYGACFW2qOGDECV65c\n0XpzpDxoflAHADNnzizX85vi008/xTvvvCOWZTIZBg0ahN69e8PZ2Rm3bt3Czp07cf36dQBAcnIy\nevXqhXPnzsHHx6eiuk1ERBbCcfsfBw8e1Cpbc9wODw/H0KFDkZubKz4XGBiIESNGoG7dulAoFAgN\nDUVYWBiAwiSkyZMnw9bWFqNHjzbpHLGxsXj11VeRmZkJDw8PjB49Gs899xzs7OwQGxuLTZs24cGD\nBwCAs2fPYvHixfj888+1YtjY2GiN95rJJnXr1i2xNXm9evXMuxEa3n77ba0Pr2xtbTFy5Eh07doV\nDg4OuHbtGrZt24bk5GS88847ePvtt02O/ejRI3Tv3h1xcXHic/Xr18fIkSPRqlUr2NnZIT4+Hjt3\n7kRCQgKAwg/oHBwcsHbtWpPOkZqaiuHDhyMlJQVOTk4YNWoUAgICULNmTSQmJmLz5s24desWgMIk\n4Zdeegm7d+82GDM8PBwDBw5Edna2+Jy3tzeGDRuG1q1bw9nZGWlpaYiOjsaxY8dw+/Ztg/Hi4+NL\nJA+3aNECw4cPh4+PD6RSKWJiYrB9+3axzsqVK+Ho6GjW/Sai6o1zi3+U59zCXBKJBAEBAejcuTN8\nfHzg4uKCnJwcXLt2Dfv37xfHrDt37mDYsGGIjIyEk5OTzljJyckYP368OK+RyWQYMGAAunbtCm9v\nb0ilUjx58gRxcXE4e/YsIiMj9fbLkrFMoTnPuX37tpjo4uHhgVq1amnVrV+/fqnPExcXhx49ekCh\nUIjP1a5dG0OHDoW/vz9cXV2RkZGBa9eu4cSJE1rbbhsik8nQuXNndOzYEY0aNYKzszOysrIQFRWF\nPXv2iHO9K1euYPTo0Th9+nSJLcA153sPHjxAZmYmAKBWrVrw8PDQeV59vwumqCrzYCIiqjp27doF\nQRDQvXt37NixA97e3lqvL1y4EN27dxe/+PLhhx/i0KFDSElJQc+ePbF9+3Z4eXlptVmwYAG6d+8u\nzok++OADnV8u09WX9PR0AIBcLseECRPE1yQSCSZOnCh+Kfnnn3/GihUrrJZYq/keCAC94zoRERER\nEVVTFbb2LxGVi/Hjx4tL6/v5+ZnUJi4uTmtJ/l9//VVnvYkTJwr//e9/hejoaIPxQkJCBDs7OzHe\nuHHjDNa3xnaZw4YN07qmx48fWySuIcW3PizazlmXyMhIwcbGRqzr6empczvPgoIC4e2339aK26NH\nD3GrqeIssZUDt2ggIio/HLcLDR8+XOuaDG3rXBZZWVlC06ZNtbbv/eGHH3TW/e233wR7e3uxrpub\nm5CSkqI3tubWwUXbik+fPl3ntsmPHz8WOnTooLVN8cOHDw323dzx3di21UUuXryotQ1648aNhStX\nrpSol5GRIYwePVrr+ooehjz//PNiPYlEIixbtkzIzc0tUS83N1eYN2+eVtzQ0FC9cYODg0vc78GD\nB+vcbjwnJ0cYOnSoVmxd11jk4cOHQr169Ur0W99W2mq1Wjhx4oTQr18/na/n5+cLHTt2FOPZ2toK\n33//vaBSqUrUzcjI0Pr/go2NjcG+EhEVx7lFofKaWxR/H8DQ38+9evUS3nnnHYN1CgoKhFWrVgkS\niUSM+eabb+qt/7///U+s5+7uLly+fNlgfxMSEoT58+fr3DbakrEEwfS5iCBoz6M2bNhgsK4gmP47\no1QqhXbt2mn9jF566SUhPT1db5u///5bGDNmjHD79m2dr7dq1UpYtWqVwXmhUqkUXnvtNa3zfvvt\ntwavqfh25KYqviW4PlV5HkxERJWL5pgFQPDx8dH5//wie/bs0aoPQGjevLmQlZWlt83u3bu16uub\nb2jq27evWH/IkCElXr969arJ7zkYul5TjBo1qlTnIiIiosrDEnkXpmJ+BlH1wwReomfc/v37TU5O\nKLJkyRKxvrOzs97khJycHJP7sX79eq0345OTk/XWtcaHdV5eXlpvIJUHcxJ4NROM5XK5cOHCBYOx\nZ8+erRV79+7dOusxgZeIqGrhuF3I29tbjNm4cWOLxNRl9erVWvf7iy++MFh/y5YtWvVfe+01vXU1\nExcACCNHjjQYOy4uTpDJZGL977//3mB9c8d3U5NmBg4cKNazs7MTrl69qrdubm6uViKqsQ+vQkND\nteqtXr3aaL8nTpwo1u/QoYPeepoJvACEoKAgIS8vT2/9R48eCc7OzmL9RYsW6a376quvasX+7rvv\njPbbkO+++04rnr7EuCIFBQVCjx49xPpjxowp0/mJqHrh3KJQec0tzEngNef+aSbTurm56f2ZaI4X\nX375pbndt1osQagcCbyfffaZ1s/nrbfeMu8idDDn5zhlyhTx3G3atDFY19oJvFV5HkxERJVL8YRW\nY3/j5ufnCy4uLlptfvvtN6NtNP+G//nnnw3Wv337ttYXoLZs2aKzXkBAgFhn/Pjxhi/0/5mbwLtu\n3Tqt+m5ubkJ2drZJ5yIiIqLKo3jehakPf39/s8/F/Ayi6kcKInqmDRo0CHXq1BHLmttg6rNlyxbx\neMyYMbCzs9NZz97e3uR+zJgxQ9wGMD8/H8eOHTO5rSU8fPhQPG7UqFG5ntuYpKQkre08Z8+ejQ4d\nOhhss2rVKri6uorl7777zmr9IyKi8sNxu5DmlsZNmjSx2nnWrl0rHrdp0wavvPKKwfovvPAC+vTp\nI5Y3btyInJwco+eRy+X4+uuvDdZp0aIFgoODxfL58+eNxrW0u3fv4o8//hDLc+fOha+vr976tra2\n+OKLL0yOr1k3KCgIb7zxhtE2n332GWxsbAAAFy9exOXLl00615o1a8R2uri6umpt/azvfj958gQ/\n/fSTWB40aBDmzJljUh90EQQBX375pVgeO3as0S2oZTKZ1r3bu3evuNU0EZExnFsUKq+5hTnMuX+L\nFi2Co6MjAODRo0f4+++/ddZLSUkRj5s3b16m/lkyVmWgUqm0xmA/Pz+sWLGizHHN+Tlqni86Ohr3\n798v8/lLi/NgIiKyBicnJ4wYMcJgHblcDj8/P602w4cPN9qmbdu2YjkuLs5g/Y0bN0IQBABArVq1\n9PZp8uTJ4vGePXvw5MkTg3FNIQgC0tLScPz4cUycOBEzZ87Uen3x4sVwcHAo83mIiIiIiOjZwQRe\nomecXC7HuHHjxPLWrVvFNy50OX/+POLj48XypEmTLNIPiUSC3r17i2V9HzZZQ3p6OgoKCsSys7Nz\nuZ3bFIcOHYJKpRLLs2fPNtrGxcUFL7zwglg+fvw4lEqlVfpHRETlh+N2+Y3bN27cwPXr18XyzJkz\nIZUa//PopZdeEo+fPHmCv/76y2ibfv36oV69ekbrde7cWTw29mGUNRw8eBBqtVosF/+QSZcuXbrg\nueeeM1ovLS0NR44cEcuvvfaaSX3y9PRE//79xfLRo0eNtmnVqhU6depktJ4p9/vw4cPIysoSywsX\nLjQa15DIyEhcu3ZNLJt6HwICAsRk6vz8fISFhZWpH0RUfXBuUfnfEzBFjRo1tMYtffevRo0a4vHZ\ns2fLfE5LxaoMLl68iNu3b4vlefPmQS6Xl2sfGjZsiGbNmonl8vx3oInzYCIispb27dubNL56enqK\nxwEBAWa3MZRoKwgCQkJCxPKoUaO05jWaXnjhBchkMgBAbm4utm7darQfxUkkEq2HVCqFq6sr+vTp\nUyLe5MmTTX4fgIiIiCq3unXrwsfHx+ijYcOGFd1VIqoCmMBLVA1ofov4zp07OHXqlN66mqvx1K9f\nX2sFjLLSfIPl3r17FotrTGZmpla5Zs2aJrX7/fffS7z5outx4sSJMvVPc2URLy8v+Pv7m9RuyJAh\n4nF+fr7JK9IREVHlxnFbe9wuWm3O0oqv7DVo0CCT2g0aNAgSiURvHF1MSSYFCt/wKWKJVV/MdeHC\nBfG4Xr16aN26tUntBgwYYLTOX3/9pZUwZur9BoCOHTvq7KM+lrzf4eHh4rGzs7NW8llpnD59Wite\nly5dTG5r7n0gIirCuUX5zC2szZT7165dO/H4ww8/xLp165Cfn1+q81kyVmWgOaYDwMiRIyukHxX1\n70AT58FERGQtXl5eJtXT/IxGc2w0tc3Tp0/11gsLC0NCQoJY1pwLF+fl5YV+/fqJ5Q0bNpjUF3O5\nublhzZo1+Pnnn7XGUiIiIqq6Nm/ejPj4eKOPffv2VXRXiagKKN9lBoioQnTp0gVNmzYV37TYvHkz\nevbsWaKeSqXC9u3bxfILL7xg0gocT548wa+//oqjR48iKioKKSkpyMjIMPjBTnp6eimupHRq1aql\nVTb05k5FuHHjhnisuXWUMZpbRhXFMScJhIiIKieO2+UzbmuOv/b29iZvDe3o6IimTZvi5s2bJeLo\nU5oPsCpivqK5Epspq+oWadOmjdE6V65cEY/d3d3h5uZmcnzND/Pu3r1rtL4l73dsbKx43L59+zJ/\n0KZ5H1q0aGHSv9ki5t4HIqIinFtU7vcEUlNTsW3bNoSFhSE6OhoKhQKZmZlaqwYXp+/+zZ49Gxs3\nbgRQ+EXfWbNm4d1338WwYcPQp08f9OzZE/Xr1zepX5aMVRl7IIMhAAAgAElEQVRojumNGzeGq6ur\nRePfunULW7duxV9//YWYmBg8evQImZmZWrsbFFee/w40cR5MRETWYm9vXy5tDO0ooZmE6+3tjb59\n+xqMNWXKFBw+fBhA4ZdlY2JixB1wTOHj46NVlkqlcHR0hKurK9q0aYPu3btj2LBhsLOzMzkmERER\nERFVL0zgJaomJk2ahOXLlwMAdu7ciTVr1sDW1larzp9//onU1FStNoYIgoDPP/8cS5cu1dpa2BRK\npdKs+mXh5OQEmUwGlUoFwPQPSGrWrFnizRegcPWeBw8eWKx/aWlp4rG7u7vJ7YrX1YxDRERVG8ft\nf8Zta63ApTluurq6mpVI6e7uLiYumDL+WvrDKGvRvNdlmZPo8ujRI/FYoVCUOhHWlN+H0txvfTT7\nbWoCiqnxLly4YNX7QESkiXML688tzJWXl4f33nsPq1evRl5enllt9d2/rl27YsWKFVi8eLH43IMH\nD7B+/XqsX78eANC8eXMMHjwYU6dORWBgoN5zWDJWZWDpMb1IRkYGFixYgHXr1pk9fyvPfweaOA8m\nIqJnVVZWFn799VexbMoX0kaNGgVHR0dxPrthwwZ88sknJp8zPj6+dJ0lIiIiIiL6f6a/O0dEVZrm\nNkFpaWkIDQ0tUWfLli3icZs2beDv728w5ty5czF//vwSH9RJJBLUqVMHDRo0gI+Pj/ioXbu2WKc8\n34yXSCRaiSV37twxqV3v3r11bnOwatUqi/ZPc2WRGjVqmNzOzs4OMplMLOv6wLR4Ukhp7nvxNtzi\niYjI+qr7uO3h4SGWb9++bZXzlHb8BbRXCDM3Yaky07wnDg4OJrcz5f5ZaoW57Oxsi8Qxlea265bY\ncr2q3gciqvo4t7D+3MIcKpUKY8aMwYcfflgieVcmk8HDwwMNGzbUun+aKwkbun/vvvsuQkND0b59\ne52v37hxA1999RU6dOiAwYMHIykpqVxiVTRLj+lA4Tywf//++PHHH0v8TGxsbODp6YnGjRtr/Rw1\nE1orKlGV82AiInpW7dy5U2uc++yzzyCRSAw+atasqTWmbdq0SfziFxERERERUXlgAi9RNdGiRQt0\n6NBBLG/evFnr9ZycHOzevVssG1tp58CBA/juu+/EctOmTfHll1/i6tWryM3NhUKhwJ07d7QSX195\n5RULXY35goKCxOObN29WmhV3AO0PjsxJxsjNzdV6I0nXB1DFP4gpzTaExT+Q0fywhoiIrIPj9j/j\ndkJCAh4/fmzxc5R2/AW0x1NLJYBUBppjfE5OjsntTLl/mnMSGxsbrUQWcx6NGjUy76LKSDNZyhJJ\nKpr3wcHBodT3oW7dumXuCxFVL5xbWH9uYY7vv/8e+/fvF8v+/v5Yt24d4uPjkZubi9TUVNy+fVvr\n/o0aNcrk+IMGDcKlS5dw+fJlrFy5EgMGDNAa04ocOnQIQUFBBpOaLRmrIll6TAeAZcuW4fz582K5\nR48e2LJlC+7cuQOlUomUlBQkJiZq/Rw7duxokXOXBefBRET0rNqwYUOZY6SkpOj8shsREREREZG1\nyCu6A0RUfiZPnoyLFy8CAPbv34+MjAw4OTkBAPbt2yeuRiKRSDBx4kSDsb766ivxuE2bNjh9+rQY\nS5+KTJrt0aOH+OGYIAg4efIkRowYUWH90aS5CpFCoTC5XfG6mnGKuLi4aJVN2d6wuOI/t+IxiYjI\nOqrzuN2zZ0/s27dPLB8/fhyjR4+26Dk0x83Hjx9DrVabvH2w5hisa/ytqjTH+LLMSXRxc3MTjz09\nPavMFpOa/U5JSbFovMDAQJw6darMMYmITMW5hXXnFubQvH/9+vXDgQMHYGtra7BNae5fu3bt0K5d\nO7z99tsoKCjAuXPn8OuvvyIkJESMl5qainnz5mklcFs7VkWw9Jiel5eHtWvXiuXp06fjp59+Mrpr\nUWX4QjnnwURE9Cy6efOm1t/YdevWNWt3odTUVPFLPiEhIRg6dKjF+0hERERERKQLV+AlqkYmTJgA\nmUwGAFAqldi1a5f4mubqOz169EDDhg31xlGr1Thx4oRYXrx4sdEP6gAgMTGxFL22jMGDB2uV169f\nX0E9KalZs2bicVRUlMntrly5olVu3rx5iTr16tXTKl+7ds3M3gGxsbHisYeHB+RyfveDiKg8VOdx\ne8iQIVrldevWWfwcmuOvUqnE9evXTWqXlZWFhIQEsaxr/K2qWrRoIR5fvXrV5HbR0dFG67Rs2VI8\nVigUyM/PN69zFcTX11c8vnz5cpm3uta8D/fu3StTLCIic3Fu8Q9rzC1Mde/ePa15x4oVK4wm7wJl\nv39yuRzdunXD559/jhs3bqB169bia7///ruYwF3escqL5ph+69atMq/CfOHCBa2k95UrVxpN3hUE\noVKsUMx5MBERPYtCQkLEY7lcjsjISK1V8I093n33XbH9/v378ejRowq4CiIiIiIiqo6YwEtUjXh6\neqJfv35iuegDusePH+PQoUPi88a2ynz06BHy8vLEsr+/v9Fz5+Xl4fTp0+Z22WLatGmjde0HDx5E\nREREhfVHU6dOncTjlJQUREZGmtROcxsnGxsbtG/fvkSdVq1awdnZWSyfOXPGrL5lZ2dr9Uezr0RE\nZF3Vedxu3bo1Bg0aJJaPHDmitT2xJRQf0w4fPmxSu8OHD2slcT5LY6Pm9uL37t0z+Ys/R44cMVon\nODhYPM7NzcXZs2fN72AF6NGjh3icnp6O48ePlyme5n1ITExEUlJSmeIREZmDcwvrzi1Mdf/+fa2y\nKfdPoVCY9eUaY+rUqYMPP/xQLBcUFODGjRsVHsuaNMd0ANizZ0+Z4mn+HD08PODt7W20zaVLl5Ce\nnm5SfBsbG/FYrVab30EDOA8mIqJnjVqtxsaNG8Vy3759UadOHbNijB8/XjzOy8vDli1bLNY/IiIi\nIiIiQ5jAS1TNTJ48WTw+duwYkpOTsXPnTnEVNFtbW4wdO9ZgjOIrjymVSqPn3bp1a5lXNymrRYsW\niccqlQpTpkwxqe/WNmjQIHEVJABaWzDqk56ejq1bt4rlvn37wt7evkQ9qVSqlShy8uRJsxJFdu/e\njezsbLHcp08fk9sSEVHZVedx+6233hKP1Wo1pk+frjUmmSMhIaFEYkKzZs20VkNdt26dSckR33//\nvXhcu3ZtdOnSpVR9qowGDx6stX2yKTsWnDt3zqSEIi8vL3Tv3l0sf/3116XrZDkbOHAgatWqJZY/\n/fTTMsULCgpC48aNxXJVuQ9E9Ozg3KKQNeYWpirN/fv2228tnsSpufI+UJh4WxliWUtgYCCaNm0q\nlr/44osy9VPz55ibm2tSG3PGfUdHR/E4IyPD9I6ZgPNgIiJ61hw9elTrc48JEyaYHaNJkybo2LGj\nWNZc0ZeIiIiIiMiamMBLVM2MHDkSNWrUAFD4gdW2bdu0tsocMmQIateubTCGm5ubGAMADhw4YLD+\n/fv3sXDhwjL02jL69u2LF198USxHR0ejf//+SEtLq8BeAfXr19fazvPHH3/ExYsXDbZ5++23tbZw\nmjNnjt66c+fOFY/VajXmzZtn0vbPGRkZWttG1axZE9OmTTPajoiILKc6j9u9evXCyy+/LJZjY2NL\nNW7//vvvCAoKQmxsbInXZs+eLR5HR0djzZo1BmPt2LEDf/75p1ieNm0aHBwczOpPZdagQQP0799f\nLH/99dcGV+HNz8/HvHnzTI6v+WWqHTt2aH0ZyRQqlarcE4KcnJwwc+ZMsRwaGqqVvGIumUyGBQsW\niOUvvvgCJ0+eNCtGZfgCGhFVXZxbWHduYYoGDRpolY3dv6ioKHz00Ucmxb59+7bJ/YiKitIqN2zY\n0GqxKgOpVIrXXntNLEdFReF///tfqeNp/hyfPHlidIXpI0eOaK0MaEyjRo3E4+joaPM7aATnwURE\n9CzZsGGDeGxra4uRI0eWKo7mKryXLl0qMcchIiIiIiKyBibwElUzjo6OWm9erFmzBuHh4WJZczUe\nfWQyGXr37i2WP/zwQ72JBxEREejZsycUCoXWim4V5csvv0SHDh3Ecnh4ONq2bYu1a9dqbQGqz7lz\n57TeDLKUFStWiNsjFhQUYNiwYTq3llapVFiyZAm+++478bmePXti+PDhemMPGDAAPXv2FMu7du3C\n1KlTtRKAi4uNjUWvXr20PrCbP3++0Q9yiYjIsqr7uP3pp59qrX7y119/oW3btggJCYFKpdLbThAE\nhIeHo1+/fhg2bJjeFf/mzJmjtRLb/Pnz9a46u3fvXkyfPl0su7m5aSWkPis++OAD8WevVCoxZMgQ\nnUkjWVlZmDRpEs6ePWvy78q//vUvjB49WixPmTIFy5Ytw9OnTw22u3v3LlavXg0fHx/cvXvXjKux\njP/9739aSTr//e9/sXz5coOr7YWHh2PgwIE6X5s9ezY6d+4MoHBbzsGDB+Obb74RV7/U58aNG3jv\nvfcqZVIUEVUdnFtYd25hCm9vbzz33HNief78+XpXsz927Bj69u0LpVJp0v1r1qwZpk+fjvDwcINf\n3I2NjdX6QknHjh3h5eVltViVxZw5cxAQECCWP/roI8ydO9fgCreRkZEYP3487ty5o/V8hw4d4OLi\nIpZnzpypd56yfft2jBo1CoIgmPzvoFOnTuLxzZs38dVXX1n0i0ycBxMR0bMiPT0de/bsEcsDBw7U\nGqPNMW7cOEgkErFsjc+CiIiIiIrs2rULzZo1K/H46quvtOr16tVLZz0ienbIK7oDRFT+Jk+ejC1b\ntgAAEhMTxeednZ0xdOhQk2K8+eab4ioxT58+RZ8+fTBs2DD06tULLi4uUCgUOH78OA4fPgy1Wo26\ndeti+PDhZVqxzBLs7Oxw9OhRTJgwAaGhoQAKk0LmzJmDBQsWoGfPnggMDESdOnXg7OwMpVKJx48f\nIy4uDmFhYVr3CwBq1aoFd3f3Mverbdu2WLlypbgqUUpKCrp3744hQ4agd+/ecHJywu3bt7Fjxw7E\nxcWJ7VxdXfHTTz9pvamky9atWxEYGIiUlBQAwKZNm7B3714MHDgQQUFBcHNzQ0FBAVJSUhAeHo5j\nx45pbZ/Yu3dvLFmypMzXSURE5qvu4/aff/6JcePG4dChQwAKx+0ZM2bgjTfeQP/+/dGmTRu4u7tD\nJpMhJSUFCQkJOHTokDjmGVKjRg1s3LgR/fr1Q25uLlQqFWbOnInvv/8eI0aMQN26dfHw4UOEhobi\nxIkTYjupVIq1a9fC09PTWpdeYQIDA7Fw4UKsWrUKQOHvXIcOHTBq1Ch06dIFDg4OiIuLw5YtW5Cc\nnAyJRIJFixZh5cqVJsX/6aefEB8fj8jISKhUKrz33nv48ssvMWjQIAQEBMDV1RUqlQppaWmIi4vD\n33//jcjISGteslG1a9fGtm3bMGDAADx9+hSCIIhfqBo+fDhat24NZ2dnPHnyBFevXsWxY8eQkJCg\nN56NjQ127tyJbt264c6dO8jJycHLL7+MDz74AIMGDYKfnx9q166N3NxcPH78GDExMbhw4YLWHJCI\nqCw4t7De3MJUb731FqZOnQoASE1NRWBgIEaPHo0uXbqgZs2auH//Po4cOYKwsDAAgJ+fH1q1aoWd\nO3cajFtQUICNGzdi48aNqFevHrp16wZ/f3/UqVMHNjY2ePDgAc6cOYMDBw6IyaASiQQff/yxVWNV\nFra2tti2bRu6d++OBw8eAAC+/fZbbNu2DUOHDkW7du1Qu3ZtZGRk4Pr16zh58qT4RaaiuVERGxsb\nvPHGG+J7JdeuXYOvry8mTJiAgIAA2NjY4M6dO/j9999x6dIlAED//v2hVCpx6tQpo33t3LkzWrZs\nKY7/r732Gt599100bNhQ/AI4ALz//vsGv9StD+fBRET0rNi2bRtycnLE8oQJE0odq379+ujWrZv4\nBbfNmzfj448/hlzOj9OJiIjI8jIyMnDz5k2j9czZJYmIqiiBiKqd/Px8wcPDQwCg9fjPf/5jVpxl\ny5aViKHr4e7uLpw9e1ZYunSp+FxwcLDeuBs2bBDrNWrUqGwXq0dBQYGwfPlywdnZ2aRrKP6wsbER\nZs2aJaSmpuo9R2JiolabpUuXGu3XypUrBYlEYlIfvL29hStXrph8zbdu3RLatWtn9rVOnDhRyM7O\nNvk8RERkWRy3C8ftpUuXCo6OjmaPY3Z2dsKCBQuEJ0+e6I1/5MgRk2Pb2NgImzdvNtrnRo0aiW02\nbNhg0nWacy81+3T8+HGjsU39eQqCIKjVamHatGlG74VEIhFWrVolHD9+XOt5YzIzM4Xhw4eXag52\n+/ZtnTGDg4PNmnMJgmB2v8+fPy94eXmZ1V9DUlJShC5duph9D6RSqUnXR0SkD+cW1ptbFH8fIDEx\nUW8f/v3vf5t0vqZNmwo3btzQGpunTZumM6a512Jrayv8/PPPVo8lCObNRcydR5n7OxMfHy+0aNHC\nrOvT9bPMz88XBgwYYFL7gIAAQaFQmDVnOXfunODq6mowbvH7Y+78pirOg4mIqHIxZY5izTadOnUS\nn3dwcBAyMzPNvwgNa9as0Rr/9uzZo7cfpoy1RERE9GzQ/LsVMO1zGXNjmvsgomdHxe9dR0TlTi6X\nY/z48SWenzRpkllxlixZgk2bNmltKazJzs4O48ePR2RkpNbWf5WBTCbD4sWLcevWLSxbtgzt27c3\nuoqtra0tOnXqhM8++wz37t3DDz/8AA8PD4v26+2338aZM2fQq1cvvf1xcnLCvHnzEBMTAz8/P5Nj\nN2rUCOfPn8e6deuMtpPL5ejXrx/++OMPbN68GQ4ODmZdBxERWQ7H7cJx+7333kNCQgLeeusttGrV\nymibli1bYvny5YiPj8cnn3wCZ2dnvXX79++Pa9euYcqUKbC3t9dZx8bGBiNHjkR0dDQmTpxY6mup\nCiQSCUJCQrBu3Tp4e3vrrNO6dWvs27cPb775ptnxHR0dsXfvXhw8eBA9evQwupV0mzZtsGjRIsTG\nxqJhw4Zmn89SgoKCEBcXh3feecfgDgxSqRSdO3fGjz/+aDCep6cnwsPDsWXLFrRv395gXalUiqCg\nICxfvrzEjhBERObi3ML6cwtTrFu3Dp9//jnc3Nx0vu7o6IgXX3wRly9fNnlbxE2bNmHcuHGoU6eO\nwXq2trYYM2YMIiIiMGXKFKvHqmx8fHxw5coVfPLJJ3p/f4v4+flh9erVqFu3bonX5HI5fv/9d7zz\nzjuoWbOmzvZubm5YtGgRzpw5Y/ReFtexY0dER0fjvffeQ/fu3eHu7g5bW1uzYhjDeTAREZVVSEgI\nBEGAIAgICQkp9zZnz54Vn8/Ozoajo6P5F6Hh5ZdfFuMJgoARI0bo7YcgCGU6FxEREVUd06dP15oD\n9OrVy+IxzX0Q0bNDIvBfNRGVUUFBAc6ePYvIyEikp6ejdu3aqFevHnr27AkXF5eK7p7JHj16hAsX\nLuDBgwd4+PAhlEolnJ2dUbt2bTRr1gz+/v6ws7Mrt/6kpqYiLCwMycnJePr0KerUqQMfHx90797d\nIh/YpKam4uzZs0hJSUFaWhpkMhlcXV3RqFEjdO7cucxvdBERUeX0rIzbSUlJiIiIgEKhgEKhgEQi\ngYuLC+rXr48OHTqU+ks2T58+xcmTJ3Hnzh08fvwYzs7OqF+/PoKDg6vU/bEUlUqFkydPIi4uDunp\n6fD29oavry+CgoIsdo60tDSEh4fj/v37ePToEeRyOVxcXNCsWTP4+fkZTJatKGq1GhcvXkRMTAwU\nCgXy8/Ph4uICHx8fBAYGmp2gAwApKSn466+/xLmZnZ0dXF1d0bx5c/j5+VXL3z8iqho4tygbpVKJ\n8PBwxMTEICsrC3Xq1EGDBg0QHByMGjVqlDrujRs3EBsbizt37iAjI0O8nhYtWqBDhw5mJSBbMlZl\nFBUVhYiICDx48ABKpRJOTk5o0qQJAgICdCbu6pKZmYmwsDDcuHEDOTk58PT0RKNGjdCzZ0/Y2NhY\n+Qosg/NgIiIiIiIiIiKi8scEXiIiIiIiIiIiIiIiIiIiIiIiIiIionJkeK9SIiIiIiIiIiIiIiIi\nIiIiIiIiIiIisigm8BIREREREREREREREREREREREREREZUjJvASERERERERERERERERERERERER\nERGVIybwEhERERERERERERERERERERERERERlSMm8BIREREREREREREREREREREREREREZUjJvAS\nERERERERERERERGRxalUKkRHRyMkJASvvPIKunTpgho1akAikUAikWD69OlWO/e+ffswduxYNG7c\nGPb29vDw8EDXrl3xySefICMjw2rnJSIiIiIiIiIylbyiO0BERERERERERERERETPnnHjxmHXrl3l\nes6srCxMmjQJ+/bt03peoVBAoVDgzJkzWLNmDXbs2IHOnTuXa9+IiIiIiIiIiDRxBV4iIiIiIiIi\nIiIiIiKyOJVKpVV2dXVF8+bNrXq+sWPHism7np6eWLx4MbZs2YKvv/4a3bp1AwAkJSVhyJAhiI2N\ntVpfiIiIiIiIiIiM4Qq8REREREREREREREREZHEdO3ZE69atERgYiMDAQDRp0gQhISGYMWOGVc63\nbt06HDp0CADg6+uLY8eOwdPTU3x97ty5WLBgAVavXo20tDS8+OKLCAsLs0pfiIiIiIiIiIiMkQiC\nIFR0J4iIiIiIiIiIiIiIiOjZp5nAO23aNISEhFgkrkqlQoMGDZCcnAwA+PvvvxEQEKCzXocOHRAR\nEQEAOHz4MAYMGGCRPhARERERERERmUNa0R0gIiIiIiIiIiIiIiIiKouwsDAxeTc4OFhn8i4AyGQy\nvPrqq2J569at5dI/IiIiIiIiIqLimMBLREREREREREREREREVVpoaKh4PGTIEIN1Bw8erLMdERER\nEREREVF5kld0B+gfSqUSUVFRAAB3d3fI5fzxEBHRs6mgoAAKhQIA4OfnB3t7+wruERnCOQoREVUn\nnKdULZynEBFRdcE5inFFcwIACAoKMljXy8sLDRo0QFJSElJTU6FQKODu7m6xvnCOQkRE1QnnKVUL\n5ylERFRdVJU5CkfiSiQqKgodO3as6G4QERGVq/Pnzxv9UIUqFucoRERUXXGeUvlxnkJERNUR5yi6\nxcXFicdNmjQxWr9JkyZISkoS25qTwHv37l2Dr0dERGDYsGEmxyMiInpWcJ5S+fG9FCIiqo4q8xyF\nCbxERERERERERERERERUpT158kQ8rlOnjtH6bm5uOtuaokGDBmbVJyIiIiIiIiLShQm8lYjmt7vP\nnz8Pb2/vCuwNERGR9SQnJ4vf7rXk9oRkHZyjEBFRdcJ5StXCeQoREVUXnKMYl5WVJR6bsi2mg4OD\neJyZmWmVPgGcoxAR0bOP85Sqhe+lEBFRdVFV5ihM4K1E5PJ/fhze3t6oX79+BfaGiIiofGiOf1Q5\ncY5CRETVFecplR/nKUREVB1xjlLxkpKSDL6u+SEh5yhERFSdcJ5S+fG9FCIiqo4q8xyl8vaMiIiI\niIiIiIiIiIiIyASOjo5IS0sDACiVSjg6Ohqsn5OTIx7XqlXLrHMx0YWIiIiIiIiILEFa0R0gIiIi\nIiIiIiIiIiIiKgsXFxfx+OHDh0brP3r0SGdbIiIiIiIiIqLywgReIiIiIiIiIiIiIiIiqtJatmwp\nHicmJhqtr1lHsy0RERERERERUXlhAi8RERERERERERERERFVaX5+fuLxhQsXDNZNTU1FUlISAMDD\nwwPu7u5W7RsRERERERERkS5M4CUiIiIiIiIiIiIiIqIqbdCgQeJxaGiowboHDx4Uj4cMGWK1PhER\nERERERERGcIEXiIiIiIiIiIiIiIiIqrSgoOD4eXlBQA4ceIELl26pLOeSqXCV199JZYnTJhQLv0j\nIiIiIiIiIiqOCbxERERERERERERERERUaYWEhEAikUAikaBXr14668hkMixZskQsT506FQ8ePChR\nb9GiRYiIiAAAdOvWDQMHDrRKn4mIiIiIiIiIjJFXdAeIiIiIiIiIiIiIiIjo2ZOYmIj169drPXfl\nyhXx+PLly1i8eLHW63369EGfPn1Kdb5Zs2Zh9+7d+OOPP3D16lX4+/tj1qxZ8PX1xePHj7F161aE\nh4cDAFxcXLB27dpSnYeIiIiIiIiIyBKYwEtEREREREREREREREQWd/v2bXzwwQd6X79y5YpWQi8A\nyOXyUifwyuVy/Pbbb5g4cSJ+//13pKSkYPny5SXq1a9fH9u3b8dzzz1XqvMQEREREREREVmCtKI7\nQERERERERERERERERGQJtWrVwv79+7Fnzx48//zzaNCgAezs7FCnTh106tQJq1atQnR0NLp27VrR\nXSUiIiIiIiKiao4r8BIREREREREREREREZHF9erVC4IglDnO9OnTMX36dLPajBgxAiNGjCjzuYmI\niIiIiIiIrIUr8BIREREREREREREREREREREREREREZUjJvASERERERERERERERERERERERERERGV\nIybwEhERERERERERERERERERERERERERlSMm8BIREREREREREREREREREREREREREZUjJvASERER\nERERERERERERERERERERERGVIybwEhERERERERERERERERERUZWmVgvIziuAWi1UdFeIiIiICADU\naiDvaeF/SSd5RXeAiIiIiIiIiIiIiIiIiIiIqDRi7mdgXXgCQqNSkJOvgoONDIP9vDCze1P41nUC\nUJjcqyxQwVYqhbJABQCoYSuHVCrRet1eLhOfKyt9MU05V1EycvF+EhEREVUJKVHAmW+AmL1AfjZg\nUwPwHQF0mQt4+VV07yoVJvASERERERERERERERERERFRlbM34h7m74hEgcaquzn5Kuy6dA/7Iu7j\njf4tEK/IwoErycgt0F75TSoBAhrWhpODDc7cfKQ3+ddcxROK7eVSDGrjiR7NPXA6/iFCo/UnGsfc\n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\niIhIaPJW+uYswYR3AbxuOLzHN7/x7xuBm4laie32RQzmoyorSNSn1I6mnKj6G0bADy/pEXJ4t/lV\nm7TbqsArrdlV0yHvpcD/MJpO312cIiIiIiIiItIsrrzySgYMGMBll13GZZddRp8+fViyZAk/+tGP\nIt7XRRddFFSIdvXq1f7wbnJyMkOHDq13n8GDBzN27NgGj7EtqRHg/dbdTCMRERERkbbAsuwqS9ma\npsHo1ERW7TrY3EOr1wDjc6Y4sxltbifOOIXH9gUJnIYVVuWyVsnywLYFvgqylUUqjBpKldz6VA/h\nqniUiIhI21ecF0YA1/bNb666q92Fd922g9+6bwdgWdRDdDaCm4dlW9/BpvHnSg7TYPLQPo3eT6TZ\n1QO8qAKvtGaJqb6lWOr6B9J0+l6vWIJFRERERERERJrc7Nmzm3sINTzzzDP+7WCq70rtzj7LVeWx\nKvCKiIiISDjyi0pYlPMp6/OKKXN7iXU5GJ2ayIjkBI6XtvybxMaY75DlWlilMpnTOFNJq12Edyvk\nr4GM+Y0TcA2lSm59agvhqniUiIhI27ZtfngB3Pw1viqp7Si867FNZrp/wl77fAD22efzXWNvvfu5\nbQeLPaMbe3iYBszNTCOlR8dG7yviqn05MFSBV1q91Im+pVje+C188uaZ5w0nTN0E3S9ptqGJiIiI\niIiISMtz6NAh1q9fD4DT6eS2225r5hG1XjUq8CrAKyIiIiIhWpt7kJkrduOxzlSeKnN7WbXrYKup\nvFs9vNuuuUt9lXIjUXG3ulCq5AY8Th0hXBWPEhERabssC/LXhrevuxT2hrqvQXNWVg13BQjbhu3W\nRfzWc7s/vAtQYtc/t3Pbjiqh38ZgGjDiogRmXJfcOsO7AEb7XslBAd62KjEVbsiC/0s785ztgc69\nmm9MIiIiIiIiItIiPffcc3i9vovrP/zhD0lMTGzmEbVeNQK837qxbRujXZUYExEREZFw5ReV1Ajv\ntha/uj6ZhzfsZ4ozW+Hdylxxvkq5jSWYKrmG6UusWLX8XOoL4VYUj9q2wFdtz13qe08pY32hX4V3\nRUREWidPWfhV/J2x4C4Lvn3cuZD+Z1g1tdmq9hpGgBCv6YTh98PRA/75jseM4VX3ZfzVk06+3adK\nc6dpcE6XBDhWe1+ldjTZ1ndY7BkdkfDuyh9fxbLthWTnHaLM7SXGaTIypRu3DenN4PPOxjRb+7nn\n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\nhNtrjG2pTu/qyvzNiYfn7/766B5TNDB27Nhi7li+fHk++9nPNtl3/fr1qaurS5IMGTIkgwcP7jJz\ntre/+puv5/8cdWLe+eX/n0+8+6v0rdh+ADdBV//lJujJJb9197NjBuc7nx/TY/Y3AF2bnFIau3PK\ne//rf2Tstv/Y57do7G97R6Eyi3eelFt3TC1pRknSI3M4AF2PAl4AAACAMmpoaMj1119ffH3//ffv\nVUi720033ZRf/epXWbFiRZYuXZonn3wyZ511VqeY8/vf/37ee++9JLsKf/cs3t3t1FNPzQ033JAr\nr7wyO3bsyPXXX58HH3ywTesHoGWVlRXpd9Cub/lXZ1eRb2tu//1ou61j7C4o3rmzUCwo7ohC4s4y\nxoc7d6ZPdVUqKyvSk5xzzjm5+eabkyQLFy7M1Vdf3WTfJ554otiePHlyl5qzHEaPPTWjx87PzoaG\nbN22JQcd1Df127YkSfr07b9/7fqtSa++Ob9Xr5xzAF8HjbX7HVTd4/Y3AF2bnFI6o8eemoxdlJ0N\nDdmy5c9JWpFPdrf7DchnGgr5eUqXT3pyDgeg6/H7rwEAAADK6JlnnsnatWuTJBMnTsz48eMb7VdV\nVZUrrrii+HrevHmdZs758+cX29/+9rebnHfGjBk5+OBdv8VhwYIF2bZtW6vXDkDXtLuguLq6Mv37\n9Er/Pr3a1O7qY/TU4saJEydm2LBhSZIlS5bkxRdfbLRfQ0NDbrvttuLradOmdak5y6myqir9+h+S\n6oMOSv9DDk3/Qw7d//aAgenft/cBfx001u6J+xuArk1OKb3KqqrW55Pd7V7VJc8nPTmHA9D1dOoC\n3gULFmTq1KkZNWpU+vTpkyFDhmTChAm5+eabi7e8lMLmzZvz8MMP5/LLL8+ECRMyePDg9OrVKwMG\nDMhxxx2XSy65JIsWLUqhUCjZnAAAAEDPtHDhwmK7pZtUzj333Eaf68g5f/e73+WNN95Ikhx//PE5\n+uijmxyrpqYmp59+epLk/fffz69//etWrRsA6JqqqqoyZ86c4utLLrkkGzZs2Kff7Nmzs2LFiiTJ\naaedlrPPPrvR8e69995UVFSkoqIikyZNKsucAED3JKcAAJ1JdUcvoDFbtmzJxRdfnAULFuz15xs3\nbszGjRvz3HPP5fbbb89DDz2UU0899YDmuvXWW/O9730v9fX1+7y3efPmrF69OqtXr87999+f008/\n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\n8CxevDjHHnvsfj1vn0H34muQcnB2sD9kFOCjfB3S3pwd7C85BSglX8OUkjOGPckswIHwNUspOVP4\nKDmFnkwBbycxceLEDBs2LEmyZMmSvPjii432a2hoyG233VZ8PW3atLKsj+7jy1/+crF96623Ntnv\nRz/6Ud5///0kyXnnnVe8Hr6psebOnVvs/1F/+tOf8tBDDyVJ+vbtmylTprRp7ZTH5ZdfXgxFw4YN\ny+LFi/Pxj3+8VWPYZ9B9yCiUi7ODlsgowEfJKZSDs4P9IacApSTjUGrOGHaTWYADIaNQas4U9iSn\n0KMV6DTuuOOOQpJCksIJJ5xQWL9+/T59rrrqqmKf0047rQNWSWdyzz33FPfDpZdeul/PrF+/vlBT\nU1NIUqisrCw8+uij+/R5/vnnC/369SskKVRXVxdWrVrV5Hhf+tKXimv4yle+Uti+ffte72/evLkw\nceLEYp/vfe97rfocKa/LL7+8+Hc1bNiwwiuvvNKmcewz6F5kFFpLRqHUZBSgKXIKrSGj0B7kFKA9\nyDg0RZ6hrWQWoBRkFJoio3Ag5BR6uopCoVBovsSXctmxY0cmT56cp556KsmunyiYMWNGamtr8847\n72TevHl59tlnkyQDBw7Ms88+mxNOOKEjl0wZrVmzJnffffdef/bb3/42jz32WJLkxBNPzN/+7d/u\n9f7nPve5fO5zn9tnrPvuuy/Tp09PklRWVmbatGn5/Oc/n6qqqixbtiz33Xdf6uvrkyQ33nhjvvvd\n7za5rj/96U859dRT8+abbxbXMX369Bx++OF5/fXXc9ddd+X1119Pkpx00klZunRp+vfv37b/EWhX\n1157bW688cYkSUVFRf7lX/4lxx13XIvPjR8/vvirCPZkn0H3IaPQHBmF9iajAM2RU2iKjEI5yClA\ne5FxSOQZSkdmAUpFRiGRUSgtOQXiBt7O5r333iv8zd/8TbE6v7GPESNGFJYtW9bRS6XMFi9e3Oy+\naOzjuuuua3K8O+64o9CnT58mn62qqirMmTNnv9a2cuXKwnHHHdfsWiZMmFBYu3Ztif7XoD3s+ZNB\nrfm45557mhzTPoPuQ0ahKTIK7U1GAVoip9AYGYVykFOA9iTjIM9QKjILUEoyCjIKpSSnQKFQHTqV\nmpqaPPbYY3n00Ufz05/+NMuXL8+GDRtSU1OT0aNH58ILL8zMmTNzyCGHdPRS6eK+8Y1v5Mwzz8yd\nd96ZRYsWpa6uLjt37szhhx+eM844I1//+tfzyU9+cr/Gqq2tzW9+85vcfffd+fnPf55XXnklmzZt\nyqBBg3LiiSfmoosuysUXX5zKysp2/qzobOwz6D5kFMrF2UE52GfQvcgplIOzg3Kx14DdZBxKzRlD\nKdlP0HPJKJSaM4VSs6foaioKhUKhoxcBAAAAAAAAAAAAAD2F8m8AAAAAAAAAAAAAKCMFvAAAAAAA\nAAAAAABQRgp4AQAAAAAAAAAAAKCMFPACAAAAAAAAAAAAQBkp4AUAAAAAAAAAAACAMlLACwAAAAAA\nAAAAAABlpIAXAAAAAAAAAAAAAMpIAS8AAAAAAAAAAAAAlJECXgAAAAAAAAAAAAAoIwW8AAAAAAAA\nAAAAAFBGCngBAAAAAAAAAAAAoIwU8AIAAAAAAAAAAABAGSngBQAAAAAAAAAAAIAyUsALAAAAAAAA\nAAAAAGWkgBcAAAAAAAAAAAAAykgBLwAAAAAAAAAAAACUkQJeAAAAAAAAAAAAACgjBbwAAAAAAAAA\nAAAAUEYKeAEAAAAAAAAAAACgjBTwAgAAAAAAAAAAAEAZKeAFAAAAAAAAAAAAgDJSwAsAAAAAAAAA\nAAAAZaSAFwAAAAAAAAAAAADKSAEvAAAAAAAAAAAAAJSRAl4AAAAAAAAAAAAAKCMFvAAAAAAAAAAA\nAABQRgp4AQAAAAAAAAAAAKCMFPACAAAAAAAAAAAAQBkp4AUAAAAAAAAAAACAMlLACwAAAAAAAAAA\nAABlpIAXAAAAAAAAAAAAAMpIAS8AAAAAAAAAAAAAlJECXgAAAAAAAAAAAAAoIwW8AAAAAAAAAAAA\nAFBGCngBAAAAAAAAAAAAoIwU8AIAAAAAAAAAAABAGSngBQAAAAAAAAAAAIAyUsALAAAAAAAAAAAA\nAGWkgBcAAAAAAAAAAAAAyuj/Ak+HcVyOTkwvAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": { + "image/png": { + "width": 800 + }, + "tags": [] + }, + "output_type": "execute_result" + } + ], + "source": [ + "!python3 train.py --data data/coco_16img.data --batch-size 16 --accumulate 1 --nosave && mv results.txt results_coco_16img.txt # CUSTOM TRAINING EXAMPLE\n", + "!python3 train.py --data data/coco_64img.data --batch-size 16 --accumulate 1 --nosave && mv results.txt results_coco_64img.txt \n", + "!python3 -c \"from utils import utils; utils.plot_results()\" # plot training results\n", + "Image(filename='results.png', width=800)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "14mT7T7Q6erR" + }, + "source": [ + "Extras below\n", + "\n", + "---\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "42_zEpW6W_N1" + }, + "outputs": [], + "source": [ + "!git pull" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "9bVTcveIOzDd" + }, + "outputs": [], + "source": [ + "%cd yolov3" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "odMr0JFnCEyb" + }, + "outputs": [], + "source": [ + "%ls" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "uB3v5hj_CEyI" + }, + "outputs": [], + "source": [ + "# Unit Tests\n", + "!python3 detect.py # detect 2 persons, 1 tie\n", + "!python3 test.py --data data/coco_32img.data # test mAP = 0.8\n", + "!python3 train.py --data data/coco_32img.data --epochs 3 --nosave # train 3 epochs" + ] + }, + { + "cell_type": "code", + "execution_count": 0, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "6D0si0TNCEx5" + }, + "outputs": [], + "source": [ + "# Evolve Hyperparameters\n", + "!python3 train.py --data data/coco.data --img-size 320 --epochs 1 --evolve" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "collapsed_sections": [], + "name": "ultralytics/YOLOv3", + "provenance": [], + "version": "0.3.2" + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} From 6e19245dc8dd9a16d8e48a9b9493f53384b8bbd1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 9 Apr 2020 19:53:29 -0700 Subject: [PATCH 2294/2595] auto strip optimizer from best.pt after training --- train.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/train.py b/train.py index 5c470e3e..04292736 100644 --- a/train.py +++ b/train.py @@ -362,14 +362,13 @@ def train(): n = opt.name if len(n): n = '_' + n if not n.isnumeric() else n - fresults, flast, fbest = 'results%s.txt' % n, 'last%s.pt' % n, 'best%s.pt' % n - os.rename('results.txt', fresults) - os.rename(wdir + 'last.pt', wdir + flast) if os.path.exists(wdir + 'last.pt') else None - os.rename(wdir + 'best.pt', wdir + fbest) if os.path.exists(wdir + 'best.pt') else None - if opt.bucket: # save to cloud - os.system('gsutil cp %s gs://%s/results' % (fresults, opt.bucket)) - os.system('gsutil cp %s gs://%s/weights' % (wdir + flast, opt.bucket)) - os.system('gsutil cp %s gs://%s/weights' % (wdir + fbest, opt.bucket)) + fresults, flast, fbest = 'results%s.txt' % n, wdir + 'last%s.pt' % n, wdir + 'best%s.pt' % n + for f1, f2 in zip([wdir + 'last.pt', wdir + 'best.pt', 'results.txt'], [flast, fbest, fresults]): + if os.path.exists(f1): + os.rename(f1, f2) # rename + ispt = f2.endswith('.pt') # is *.pt + strip_optimizer(f2) if ispt else None # strip optimizer + os.system('gsutil cp %s gs://%s/weights' % (f2, opt.bucket)) if opt.bucket and ispt else None # upload if not opt.evolve: plot_results() # save as results.png From b98ce11d3a1d5905dcacb5d7cf28c5746ed5d967 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 9 Apr 2020 20:20:23 -0700 Subject: [PATCH 2295/2595] add MixConv2d() layer --- examples.ipynb | 471 ------------------------------------------------- 1 file changed, 471 deletions(-) delete mode 100644 examples.ipynb diff --git a/examples.ipynb b/examples.ipynb deleted file mode 100644 index bebc3088..00000000 --- a/examples.ipynb +++ /dev/null @@ -1,471 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "ultralytics/YOLOv3", - "version": "0.3.2", - "provenance": [], - "collapsed_sections": [] - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "accelerator": "GPU" - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "HvhYZrIZCEyo" - }, - "source": [ - "\n", - "\n", - "This notebook contains software developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information please visit https://github.com/ultralytics/yolov3 and https://www.ultralytics.com.\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "id": "e5ylFIvlCEym", - "outputId": "fbc88edd-7b26-4735-83bf-b404b76f9c90", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 - } - }, - "source": [ - "import time\n", - "import glob\n", - "import torch\n", - "import os\n", - "\n", - "from IPython.display import Image, clear_output \n", - "print('PyTorch %s %s' % (torch.__version__, torch.cuda.get_device_properties(0) if torch.cuda.is_available() else 'CPU'))" - ], - "execution_count": 2, - "outputs": [ - { - "output_type": "stream", - "text": [ - "PyTorch 1.1.0 _CudaDeviceProperties(name='Tesla K80', major=3, minor=7, total_memory=11441MB, multi_processor_count=13)\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "7mGmQbAO5pQb", - "colab_type": "text" - }, - "source": [ - "Clone repository and download COCO 2014 dataset (20GB):" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "id": "tIFv0p1TCEyj", - "outputId": "e9230cff-ede4-491a-a74d-063ce77f21cd", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 221 - } - }, - "source": [ - "!git clone https://github.com/ultralytics/yolov3 # clone\n", - "!bash yolov3/data/get_coco_dataset_gdrive.sh # copy COCO2014 dataset (19GB)\n", - "%cd yolov3" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Cloning into 'yolov3'...\n", - "remote: Enumerating objects: 61, done.\u001b[K\n", - "remote: Counting objects: 100% (61/61), done.\u001b[K\n", - "remote: Compressing objects: 100% (44/44), done.\u001b[K\n", - "remote: Total 4781 (delta 35), reused 37 (delta 17), pack-reused 4720\u001b[K\n", - "Receiving objects: 100% (4781/4781), 4.74 MiB | 6.95 MiB/s, done.\n", - "Resolving deltas: 100% (3254/3254), done.\n", - " % Total % Received % Xferd Average Speed Time Time Time Current\n", - " Dload Upload Total Spent Left Speed\n", - "100 388 0 388 0 0 2455 0 --:--:-- --:--:-- --:--:-- 2440\n", - "100 18.8G 0 18.8G 0 0 189M 0 --:--:-- 0:01:42 --:--:-- 174M\n", - "/content/yolov3\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "N3qM6T0W53gh", - "colab_type": "text" - }, - "source": [ - "Run `detect.py` to perform inference on images in `data/samples` folder:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "zR9ZbuQCH7FX", - "colab_type": "code", - "outputId": "49268b66-125d-425e-dbd0-17b108914c51", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 477 - } - }, - "source": [ - "!python3 detect.py\n", - "Image(filename='output/zidane.jpg', width=600)" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Namespace(cfg='cfg/yolov3-spp.cfg', conf_thres=0.5, data='data/coco.data', fourcc='mp4v', images='data/samples', img_size=416, nms_thres=0.5, output='output', weights='weights/yolov3-spp.weights')\n", - "Using CUDA with Apex device0 _CudaDeviceProperties(name='Tesla K80', total_memory=11441MB)\n", - "\n", - "image 1/2 data/samples/bus.jpg: 416x320 3 persons, 1 buss, 1 handbags, Done. (0.119s)\n", - "image 2/2 data/samples/zidane.jpg: 256x416 2 persons, 1 ties, Done. (0.085s)\n", - "Results saved to /content/yolov3/output\n" - ], - "name": "stdout" - }, - { - "output_type": "execute_result", - "data": { - "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYF\nBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoK\nCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCALQBQADASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD8347F\n5pkSP5t38P3ttaFjZzR2rzOMjfs+/wDNVi10+5kh877Gqv8AwfP96tOz0+2b99sw0e1drfxV87HY\n+wjHm94z4bOZ2WZ4dgV9vzN81Tx6a8jHvu+bd/DV+HT51uHd0Up95Pl21bhtfIkH2ncqfN8q/e21\nNS0dUbU4/ZMf7Oi52OzMu1UVU+an/wBjlW3w7l2t8y/3q3pNPRl2I+1tn/AqZZ280cXk3Nrub+7v\n+6tefKtLl5onZGm48qMqbQ3k/wBJeb5lb5PMf5l/2aZcaW6tshhyzffZn3ba3biHzI5USFfmX7tQ\nyWc3zTXltuWPb+8jT+LbXJWxVWO534XDxkchrmm/KZt+d3yvurBm0maHLvu2su1G/vV3OsWsMe5x\nyWTd5bVh3VikkLJ5Pyqu7b/easaNacX7x6nsYyicrJYws3nom1m/vf3qWC3uYW32zr8v95v/AEGt\nK6s5I9iJuDMu51aq62827502Nt3Jur6zAylKUTlqREj+0wsiI7OzNuRW/wBr+7ViSPy4/wBzud9+\n1vm+Wq0aurIJtxdf4qtLayeX8nyusu5mb+KvqMPSlKJ58qnvco65uHaNpvlTdt2fJ8y0kjSbER3V\ntq7tzJtqbyPtDLDNtx96nTKjR/Ii7t38X3a9D2fKebUkoy5SHyXjnP75l/i/3amSSVm+0v5joqbf\nv/Ky/wB6i3/fRrv+9911j+6rUsMMuxvJufu/fXZXPKXLE4OaUuaxPBv3b9n+r/hjl3LVqH9zJ/qV\n2t823/eqtbwpHGkP+qVn+dY/l/4FVuzZLqRI5plV13b12fdX+GvLxHvF04825p2cm1Ucopdvl+V9\ntaVvDcSSK6fd+ZXrN0+GGS637F+V1aXd/d/hq7b75mX51Db9zMr/AC/7Py14WIqSNadHuaVjNLJC\nsP2pmTfuddvzNU8jO3yQ7X2/e/iaq8IeGNPLRW+bbu2fdq95n2OZXhhV2b5V3V4dap7+h6VOnHqW\nob792yI6o6orfLVCZJpPnudrBf4v97+KpmuIWmDzTKsrfdXft+7VCS5dpmR5o3/vq392uJSjztQO\nlx928hzbIZXSFFLs7fMqf6yopmubzY63jIVb7qrU32OGSP8AhRPveXHSyKluy/J975VXf/FWkqnN\nqLk5fdEntdy/3vl2eZs/76pU3yQyJsYeX8if3lqwsE0iy2zzfuvl/d/7VVr6O6WTf8yfe/d7/u1n\n71TRSMK0R8d1cxwrvRQv3dzfdWoprp75hNc3cjtHtSLzG+61OaGaS3RJnV1+88bVVkkRlKWtthlf\n+GspRhKRjH3Y8rKuoXtvHteN8qy7X/vVga9cXisrpcthkVfm/u1pXk00zAu+R/d/utWDq14+5n34\n2/6rav3a78PFRj8JyVqhj6lM/wC8+8f/AB3dXManN82/fjd/CtdBqW+4bM0/Gzc1Yd48Pls/Vm+X\nb/FXsUYy5NDxsVLmiYF9avt+07F21QVXmuNmzb/utW9cWbyR56hVqnHp7rMJvJ8xK9CnKMeU82T5\nhljlWZE3fN9//ZrodI3x7ntn+Rk2srfM1V9N03bGOdu7/wAdrVhs4I5BGiMk0f8ADJ8tEqhrToz+\nI1NLtUinR9+fLf5F/wDsa7bQZnjwibU2/N+7X5VrjdH/AHKxBE3f367TRZE+x7E2/wB1dv3mqo1P\nfOj2fuWOu0W4k+ziF5sOzfxfw11ui6uNyu6Mrqu1/Mfb8v8As1wWk3KOuy28xVVvnb+7W/puqQxs\nU3/eiVmj+9XZGpzmMoyj8R3Wn6kQN8Myh1f/AEfb93/eatXT9am8ve+1vvbmrgrHWd0iXOcFfl3L\n/F/wGtCHxB5K+d8wSR9qKq/M3/Aa6OYw9+J2q69C3zpZttX5Ub+9/vUybV4IYd+//WbtzL/Ctcqu\ntbYf3fmHc+1/mqvcawk3ybJCu/b9/wC9U/DAfunT/wBtusCv0/2d/wDDWbqGuosbO8jEt91tvyst\nYN9q226ldH2xtt8qNX3f8B3VVvtUm2l3TLsnzLu/i/hqJRjI25vslPxRNDdZm85iv3fLb+GuMvJ3\ndXR/uK23/erW1PVHuomQXLFpJfkZvur/ALNZGqQ/aFb5G+V/3sa1x1I8x0UeaOjOa1SG2ml85Pv/\nAMO5vlWqtvbupYOmPLf5d3yturcbTkjdt6Mxb/lm38NQXWnpJcM8iSO38Un8K1nKn7p2RqQ5tTPW\nFJpD5czIn97726mTWVzIHfez+Z/yz/vVZa1eSTZDCqqqNu+fbSLYwzRuXhxufd9/71cNSnI0lUM2\nSN1CwpMuyT5tv/stJbxurI/nL+8ba0cn92tXybaOSHyYfuxbtrN8v3qq3Eltu+0+T86tt+VK5q1P\n3tCoVOXWRbtWdcoltv2tu2t8u6uj01na3TZuAVt27+61YNu7s0jzbWlb5U/hrQ0+aGObzo3bzl+X\n7/y7q+Ox1GXNKTPewtT4ZI7LT2T/AFM03mt8q7v4a0WuvLUI+6H5v9Wvzbv+BVzVnfTeSH/55q25\nd/3m/wBmp/7UdpI+Nqt8rbWr5DEYeUqp9DRrfDzG5cXySsN9zuVot6qybvu1m3mpRrD5iO0KSRbv\nlf5aqSal8zbNuPm2/J8q1Uk1QSM73KKrrF8nlr8u6tKOHUZe8dvtOhPeahD5yc7v3X975t1Zs0zr\nsfo2/wCZW/h/4FS3F4jKkEyMXX5X3fdaqzLBNJscrsZNqqv8NexhcPGPuozqVOWHKJe+c0hf7Tv3\nfL8tVri3DSPD9pUyr/F91d1aEljH/wAvMylG+4yp91aktdPeRc+Tv+f5fk3V9XluH5dTwcdiIx+0\nYLK6tvfcKry6bN5ezZ+7b/lpG+35q7BfDiNa+XNC37xtq7m27qdY+DXuN0m/hX/1f8NfY4ej7lz5\nXGYjm+E5C10e/Ece+2+fdtXb81XF8P7bqPztwkVGV9vyrt/2a7ux8KzRyJCkLM6/Nt3/ACtU7eDX\nkmj811Ty2+f91ub5q1lTjGZwRrcp5wuihpJIPmZGf/v2tQDwrMzHyXbZ93aqV6ovg/y5FT7zL99V\nT7y0kngvM3nfZmQbWZFWuKpR5vdN6dbl+0eUyeG7mO4Dp0Zf/Hqfp+jzQtLNczZK/wAP92vS28Hm\naOL/AEXa21n/AOA1m3HhWaxmm32fySIv+1uX/drxsVR+yejh63N7xysmnwxqrwp5rtztV/4f/iqJ\nLRLVVT7HIo2bd27+Kuqj8Nos29BiKRdySN/d/u1UvrN/MhhmtmH/AE0rzJRl9hnbGpLm1Obmt5Lf\nPkoxdvmdqpGzTzks33MrRbvL37WrevtPmkuNk3zLI27958tZd1bJZ3mz94Xk/vN8taxl9kr4vhM9\nYUt2SFJtq/8AXX5vlqb7PNdTPNM6r5iLsVf4f9qnzW8KM72yKpX+KrDWf7vYJtoXb95vmrS8fi5i\nPe5iCGSZrdYfObYvy7v7zLUNxcFVaNHaM/Mu3/ZqzInkxhGm+79xf7tZN1I7L9/HzfPu/irejTlU\nkYyqcseWRDM0Plu8kzfc+6v8VZ0cszN87qPm+fy/m2rVm6Z7iTyfl2xpt8yNdu6qk0nlqXh2hG+4\ny161GmeZWqSjL3SNpEZfJjhXb/D/ALVIq/ut83zf3fmpkbIrDftC7P4fvbqVVTCPHBtH8MbN/FXV\n7P7RjGt7xGq3O48Z2/N8vy7qfIszRq6Pj+9u+9VhbXbJs3/MqfP8u75qVbVMt5j/ADfe2rTfvfEb\nxqe5ykSXj/Y3DzSBv4Kt2zIsa70y+/dtb/0KmW8aW6tcvM21fl3bPutWlHYO1vvmhYf3JF/irel8\nISrT5CssYM/7l2Rm/vfLUNxpsysNm4fLtfd92tVdI+UvezbXZP71dh8Gf2evif8AtCeKbjwd8HfC\nI1rUrWwN7PaPfQW+2BXRGfdO6KfmkQYBzz04NdGJx2Ey/DSxGKqRp04q7lJqMUu7baSXqebiMVRw\n8HOo0kt29F955hJpL7WO9mfd8vzfdrIvrF5LqZNjDb8u2vrCb/glj+285Uj4EnI6k+J9Mx/6U1Qv\n/wDglJ+3Wdv2X4GF/lw3/FTaWP53VeFHj/gP/obYb/wfS/8AkzwqmcZRL/l/D/wKP+Z8happLra7\n3Zt6/MjLXNapppb/AG/vLX2def8ABJP9vabKJ8BDhhlj/wAJVpXX/wACqxb3/gj5/wAFBXLR2/7P\nQ2Hp/wAVZpP/AMlVUfEDgP7WbYb/AMH0v/kzhqZplkv+X8P/AAKP+Z8Q6pa3NvIyOnyr/FVLyZpB\n/E275nVa+zNV/wCCMP8AwUang2Wv7OSZxj/kbtI/+S6w5P8AgiZ/wUvPyD9m3j+8vjHRh/7eVUvE\nDgLlv/a2G/8AB9L/AOTMv7Ty3b28P/Ao/wCZ8oRw+Wd+9v8Adq5a200lxseZmVv71fU0X/BFD/gp\nYrDf+zYT7/8ACZaN/wDJlaFp/wAEYP8AgpGg8yb9mlA+Mf8AI3aN/wDJlcVXxA4GcdM1w3/g+l/8\nmdEczyr/AJ/w/wDAo/5nzBb2fksr/wDjqtWna27zKqP8rN9z5ttfTtt/wRs/4KMoyk/s7bABkgeL\ntI6/+BdX4v8Agjv/AMFDI1dv+GehuP3f+Kr0j/5Lrklx9wN/0NMP/wCD6X/yR2QzTKHviKf/AIHH\n/M+ZI4ZI22I+6tC1idv3zuy7v4d33a+k4P8AgkD/AMFCndhc/s+MAq4UnxZpJ3f+TdWLb/gkR/wU\nHjAZv2fgGAYL/wAVXpPA/wDAqueXHvBX2czw/wD4Op//ACR1U81yaP8AzE0//A4/5nzesL7Wmw3+\n1uo8zdIj72UfLs8yvppf+CSP/BQAIQnwAKtsblvFek43f+BVB/4JHf8ABQBwqyfAQEKuP+Ro0r/5\nKrFcdcFc2uaYf/wdT/8AkjvjnOSLbFU//A4/5nzdCtzNIRDtbb/DJUMizKuwQ7dqfe/iVq+lm/4J\nJ/8ABQHgJ+z4wx0P/CW6T/8AJVW9H/4I4/8ABSTxReDTPDf7MF5fy4yYbTxJpcjEepC3RwK6KfHH\nBtaooU8xoSk9kq1Nt+i5jelnGSVKlliqd3/fj/mfK80cLfJ8xZfmRm+9u/vU2aSaNlfYruqbfv19\nTeKf+CK3/BTHwiwi8Qfstajp8kxyqXniPS48j2LXQz+FYz/8Ehv+Ch4fzE/Z3PzdR/wlukcf+TdV\nU424QoTdOtmNCMlunWppr5ORVTOMnpy5ZYqmmv78f8z5waZ2IRp9ir/CtT28yNhPuv8AxfNX0LJ/\nwSE/4KJ5DJ+zvztwf+Kr0jj/AMm62PDX/BE7/gqV4nSS/wDDn7JWo30cJ+ee18RaZIv4lbo/lXRh\n+M+D8XLko5jQlLsq1Nv7lIqnneT1J8sMTTb8pxf6nzjDqE1nMUd1dmTH975a0rfUH8sO7sW+8te4\nSf8ABIT/AIKPadeyR3v7O8kc0b7ZIZfFOkqyn0IN1wat6P8A8Egf+Cker3g0vSf2a7i7nkP7m3tv\nFGlO+fYC6JNaUuOuCvacqzPDuW1vbU737W5tzmeeZS6lliad/wDHH/M8Fk1JIf8AUuqszbmaoG1Z\n5lbznyd/zLG9fTuqf8EQv+CsWkWP2/V/2PtYtreJf3k8mtaYNi+hP2rge9cN45/4Jg/t3/Dvwjq3\nxD8W/A4W2k6Hpk+oapdHxNpj/Z7aGNpJX2pclm2orHCgk4wATxXbV4r4SoVo06uPoRnLaLq003fR\nWTld66aGdbOMuhNRlWgm9lzK/wCZ4XqGoJMrbPlXb/E9ULjWCtsE6j+9WfNep5g42/8AA6q3WqJl\n03/Ls+balfSRjy7k1sVLoWpNQdo1cIzBqzbrUnaQ54Gzcu7+JqryXnymaF9vy/K1Zd1rAWNvny39\n2nI541uXQt3V9Nu3iZUVl+fa9Z810kjfO7AfwNVO41K4k6ou3+7VVrzb86H/AL5rnqc0T0KOK940\nJL54X3xozBf4qHvtzLO833qzTM/mfPNx/dqWO4Rpv3P8NcVaJ9LhcRzcqUjQe480bEf5m+9uqS1n\neNtjvkL91qz/ADkkkZ0+8yfIrVatbe5kmRP7v8VcdSPLE9/D4jlL8bvIdkzb/wDe/hq15KNH8j42\n1Sh+Vt6f3vmq5GqLGzI7Mzfw/wB2uWUeU96jiOYeq+Tt2J/v7v4qkkkm85N//Ad1RNG4j2TPu3fd\nqZVeOIJM/wB1vm3VhKJ3xrR2BfmZ4H6K/wD49UrzP5Imd8u393+GoNrx8oeGahm2q3dt21KUuY2+\ntFtW24CTfL/7NUYmT+NPmjeoWknaNk87LL821fvU1pEXPyKv8LN/epxo8wfWubQknuHVWd3V1b/x\n2oPMeQeYr/xfdpNruzQ/L/8AFVXZvJk3om0r8rfPW/s+WJyVcZy6sszTIuHSHd/C1MWTarbHYP8A\n3d9UmukVj5W7/bWo/tyFedybv4mreMZHnYjGRsXJtQm+V/JVWb5mqrcTeYp3zcVG0ybm2fMv8FVG\nvn8zZsVQ331rqpxkfP4rFc0C2s/nRsgdgrfw02OQM3kTOqt81Uo5jAm9HXYrVKt09w29H+Zf/Hq6\n4xPm8VWjI0beR1ZXebFaFu6Kqv53y/x/7VY+nnzGdH/v7fv1q2UcMi42ZVf4auPvfEeTKsadnI7f\n3lVtvzLWtp6vcSNvfd/C+5vvLWdpsMfmb4YeG2/NJW1pdn/HNGuF+7toiebKpzGvZWc0kTfOoST+\nFfvV0+l2u2ON/wB5Ky1l6HYv8joinau35v4a6Tw7ZpbrsuYV2xr83z/dqjGUjf0uzRVTemNybkX+\n7WvZWjyLseHLM27dHTNDs5PLjSG227k3L/tV0ljYoy7Id29VbfuSuj4jn9oYk1ik0Lby2Nq/L/da\npnsYWjWHft+Xc6t/C1a0ejzTbYZodu7+L+GoptPdZGd9yfwfK/zbaXL9o6aMvfMWKzmaQXPzOW+X\ndv8Au7aelj/pBmmm2CTbv/vbavrZpC3k23mfvP4ZPvLUV1Y7YV8t8lU+6y1Mox5eY97Cy90z9Qs7\naRlmRGdftG1Gb+H/AGq5vWtPmWRtk38X3lauwuI4f40k2/wMv96uY1SL7Ll9i/MzfKrbvmpxjCXv\nHvYaPwqR57r1i80LzQv5yM3yM3/oNcT4k099zJvY7vl+X71eoeIIdyt8jL8/7pv7tcZrln50bokb\nfL8yNXJWl/MerHC83vHtWnw20Ku8ybx5v3l+8rVLbxPcM6eTH5SuzRMvysrVWguIFZjZupSNvvMv\n3m/+Jqe3vv8ASPJ+zM+1V3V40Y8sD572nKX7G1eNv9JRX+Xcn8VaMLQyKfJf+DaisvzL/wACrPju\nPJbY8n7pn3LGqfd/4FV6Fu1y+EVdyN/tV59eT/lO6lU5pXEuo4VkKPtY+UqusbfN838VRR2rxyK7\nuwZanuJE+0OkiKX2b/lT5ZGpjWyKrnyVf+P5W+Va4qlSUdz0Kceb4RtqsMzTb4ZG3S7fJb/0Kh7X\na4he58pG/wBarN92kjj3fvnTciozOq/LtqaKGCSM74ZHf76/L/s159SpyzPQox9zmMKSzS8mm8l1\n+V9sUjferOuLeSa4NzsyVXbu+X71dFfQzKpuUmhXbKvy7KzJreGNXTyV+aqo83tTo5onNXivDIzu\nq4/gbZ92sjyUuJNjzSbYfufPXVala/u96bvu/MrL/DWDcaanyv5ap8vyf3mr7DLeaMtTGpy/ZKK2\n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\n91Ur6Wn8B4GKrTj8RXW3dbcTO6kr/wCg1T1DYq+c83nBk+6q/NurUkXylTyYdi7W+bf97/erM1KO\nTzGhkddq/fVfvLXVznjS/eTKU0yRqiOjK23bu30xmRZHh85W3Ju3NTm2Qwsm+NV3/Kzfw/7NUJIJ\ntu9Eb7tYVqnLA66VHl91FqzmEkgR3+Vm27Vras1SNv3j7hs+da5+GN1WJH/v1rWsiLMEdGRf7zfN\n8tfO4yoviieph6b/AO3Td09vLVN9xwv/ACz21pwyP5n+uVdv8TN93/drHt5h5KnzlVt38X92rX2j\nY3zzZSTn/a2/7NeBiKnMe1Rp0oxsaDfvo2R3X73+81PmvppJnhRI1T5W/efN8u2srzh9jHkzMj+b\ntVmX+H/drQW8dbcojq7sirukrzub3To9n7pct5NyiH5Xb7q/JVi2uFmkV7l8+ZFsX+8u2qNuqSXH\n3Nu1/l2/K27b96tGG1/ePO9z8nyq7L92n8RxyjOPvGlpsbtbrBvU7fm+arG2aO5EiOy7m+6v8W6q\n9v5MS+T5Ko+5W3M//stWVtX8z9zI29kb5aJSl8jGMPaTlcfFb+Wzw79219u6RtzK1CrBJGs002W+\n98qfK1TKUlVXmTZ8q7lX+Ko2t7xWZ3s1Rvv/ADP96s5QjHYdpcvKQNcwzWr3Lwsqqm75fvVZ+yws\np/cyB9n3f4qdHJMd6OmPlX5VT5mplwlzbyJNs27tv7xX3NWkY88uU5a0fd1MTUJLPS4d6I2WT59y\nbtrVz2oD7ZI3+jNuX+JvustdLr8b3FwbyHa6q+1/nrmtQjhj3Qr8r7PutXp4enzR0ieFiJc0vdMG\nSNGmfy0+79xtlV5rP9800O1/78f8X+9WtdbJMujx/c+ZlWqSq8LP8/zfdx/Etepy/ZPPqSIPLmk+\nSH+/tl8xKm8sTWod4WdN38K09Y3bHljcy/f/ANqrNrF9on8ma8YBf7vzbf8AgNHs/dLoy5oFTyxt\n/fQqd3ysrfLt/wB2q7WKRxtvRn3N/vbq2pFSZg8Kb1Vtu1v4mqvHY/vS8lsqH7zyRvUS9064/EUd\nPs/vIYedvyK38NXYI/KjdJY1wzUW8yfczj/aX/e+7UazPbt5PzP5bbvm/u1hGUo/CdX2UmWW85t0\nyfMi/f2/LVnT7qG3j2I+FX/lnJ/DWbDJNcyM7pl2b5Pn+X/vmq8175LedPNhfu/NXXRqSOSpH+U2\n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\nG3aT52R2/iZ91WbG4ubxU3oqtCnO3+L/AHqY0aeYfk4/jVk3bqs2qouxLby3Zv7v8VaSj9k5o80f\neiXFluYIymzfuRmVm+XbVG6uEudnyMv97/7KrtxJPas1siKdy/8AAf8AdqqzblPz7W+8i/3v9mue\nVOJ3U6k46kdmm6B3dF3btqN/eqK3kht0875R95UVnqeOzdW++q+Z8ybX+7VW4tXaFvO279/+r27d\n1cUjujIja82qZktpB/eX7u3/AGt1Z1zN5zNsmbcz7nXbuq81unk/vofvJ8se/wC9WfcRurb0fau/\nbtq6fu+8jOt7xUk1B1WTyfM/up822rljefbEV9/+rX+5urMurV2kXzo96t/E33VatDSLd7WPyfJb\n5fl3b91d9OUZHl4j3S6slzcXH+kou35WRo/vbq19PsXk8rO0r/dZfm3VX0ux8xvnRiy/Kir/AAtW\n7b2rtdxfeP8A0zVf4v8Aarsp7nl1JGjpOmuqrMjrI392T/2Wu/8AC+gyTQpC8LItx/qtz/d/2mrn\n/C2hwrIp34+TcsjMv3q7nw3pqN5Oy6jl8tNyK33V/wBmu6MfcMpS5Td8N6Gka/cXK/K7L826uisd\nFSOTzrN87n3IzfK3/Af71L4ftk+WZIWXyU27W+827722uv0vT7NcTW0PzKu6L+L/AHq1j/eMJVDH\ns9DeNkm/eMy/f3Nt+WrUfh547dtu75XZvMjeunsdLSZRvh3rJ8u3f81XLXQvs9u+9Pn3/wASfLU+\nzjIXtDgtQ8L7Zg8N43zbnZpG/iZawbjQ3tVXy0/1f3F3bt1el6l4fmkm+eH5W2q9ZWoeH/L/AHz2\n0brH9xlT5ttPllFEfWOb3Ueb3Wg+XC37nfF837uT7y7v7tULjQ4Zt3yZVf4ZE+9/vV6LeaO8kISZ\nFVlRvvJ/3ytZF94deOMTb13qittWplTgP2nvcqPPrrQ/OVXhkZEVf7tVL7RUmj/cvuZfvrurtbrS\n38mS1/eK33vm+6tZFxZ+XDJDZ7mf+8y/w/3q87EUzuoyOUuofJDQ+S26T/Wt/wAtG/3agns3jkUz\nOySRp8n8Lba2ptNRsXj/ACvv2hZPl3VUvkdt0z/Kd+xdr7lrxsRRly+6e3h6nKUP7NhkjZHm3CRP\n4W+VmWkRfsrRW0MbDzPm3ebtWpNQ+ztH8kOxpG3Oq/doS+RpNko/65K391axpYfm3Oz238pdt7N9\n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\nO/i/vf3dtZ95dfaIVhtvn8v5mVlr0InDUo80TOW18tok8n5pP+BLS2qwySb4XVhu2eY3y+XSsqeY\nzo+Fb5f+BVFBM+4QuVVt252at/sHNKny6lqa3gVfJR2O7/x6k+xp5aOk27/Zao4ZJo7jydmdvzKz\nJ8rf7NWLFXZGhk25b7lY1Iy5CqPuysxzWKXEJTydq/eVaoXcP/Lbeu/+8zVqws8MZePlGfb81Ubq\nNFYQfNmvN5pRm7ndy/CZkmn3KIj71/iXa3zMv+1UNxp6bvJ+6rfwtWxb27+YvnJt+b7qru3U8Wby\nO/7lTHH8q/J8u2p+1Y1lH3eYxI9D3KEtvL2bmbbJ/D/u1paboMKyqgfJXa0XyfM1ai2KK290/wBc\nvybl3eXWja2Hl7NkLfwrtrqjzR2PLxEeYraXob2uLqZGdvvLt+Xa1bGj6Sizfvty+Z9/5Pu1Lpun\npuKQwfOu5vmb5dtbGm2aSGLfCzIvy7d6/N/vV6VH3Tx60eXcvaRZWzTJMiRukfy7v4dtdv4ftkWN\nXt/lVvm+X5ttY+m2MMe1Lb54ViX5tm75v7tdh4fsbbzYXg+UMvzf7VenH4DzK0v7x1GhrN5imZGd\nfN+TdXa6LbwxRmFIWV9n+98tc34dVI5IYXm2szfIv3v++v7tdzp9ukE3/HzJumi2+Yq7q15TjlKW\nxcs9Lgjj+zQpG0m1d8n8W2tLb5luk3kqzeVsfcvy/wC9/vUy3tbbcPvff27l+XctXriFI7dnR8hf\nl8ur92RMako6uRz0kE0yO6RYfd8m7+7/ABM1Z91paLJK6QsRvXdt+6tdHLY+cuxEb7m5vmqnNbwL\n++N4ybk3P/wKp+EdOXNPU5TVNMhmf/j2yypt3M/ytWZe6akcOy3dUSRdv3/u/wC9XUSWPnMsPRPm\n+Zv4m/vVi6pDNbnzoX2DY33f4f8AaaspbnXTp+9zHI6lZ/vvn8tmX77bNq/7O2sK+08Nu2IrTN/d\n+XdXW6zsmt08yGNPM3bJNlYOoWm5WSaHZ8v3o5f/AB6uKodtPc5XVLMNl0TL7W+X/arCvLWGORUT\na3l/Nt/2tv8A47XXalb2DRvD58yFU3K0fy/N/drC1iz25d9qSfefdXnVNzvoylE5uaFI5vO+VGb5\ntrS7qVrBHUpv81YUVt38S1eutPS4vI9/Kr9zau2oGi+xvsfzNzfLtX+7/vVivdj7x3RlIns2SMtb\n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\n393zLtqzp9r5yoj8srbn2ptatJbWf59+7ayr5TbPlq3baO903n21h5rTJ+9k37a6nhf5jj+tdYme\ntvcs0qWzrGiy79u/5VWrEem37R8WzNFG/wAjf7O3dW9a6M93a/Y4eNsS7f73+7Wuvhua3t0RIcBl\n+8ybmWulYWO6iZ/Wub4jgLrTZplfYnyx/K8f3GX/AOKrIvtFSa6WdIVDNE37tv4a9Pm8N2zfunSP\n5U+by/vVmXmgpIXZIVUK6/M3y/ereOHN6dblhyyPOW02ZmX7TDGhX5vMX5qik0l7ryZEfD797Kv9\n6uuuvD940bJNBmL5t6x/eaof7F8pQ7wqfk2rG1dEafLLQ1jaUTiNW093Xy9/H3W/vVjXXnWse+GF\nflf96rV2uraLcyXCfaU2/J80kf8ADXO6lb2zSPDMm4bl+8vzM1acvML4b2OcvJYdzzfc2/8ALP72\n2qYW2WZnmm+T+Nlf7vy1q61YJaxl3mUbpVX5fvNWHJcTsxtrNMbvmRtm5dv8VLm5jCpHmNFdjTBE\ndgrLtdo2+Vammme1tWT7Sy/N+63LurJsbqcyL86k7vnX+9VxZHWNn8ltzN97d93/AGawlHuc3uxi\nW5Lzasczool+6/8Atf8AxNX7fWJoWFmlziRf4f73/Aqwn1Ldsd03Lv3Mqp93/ZqzDeQtGzojfK+3\nb/CtedUpx59TSNTrE3ZLzbbh5pvnki+997bR/aM3lnei7/8Anmr/APs1ZjXXlL5cKZiVF+9821aR\nbyeaRnRFdpPvt/DUU4zJlLlNL7a8kozt+XdvZf8A0GtDT5t0K3LzfL/tPWJY3XmIUwqf8D+61aOn\nxJN5X3d+1tq/7VehRX948utLlN21V1kkkvHj2fLs2/7tXdLjfzmd4chfk+b7sf8AtVjW83lxhPPz\nu+/H/Fu/vVs2u+ZDM8zP86r8qbd1eth4nj4iUZbnUabsZkj3/M3ypu+Wur0e4S1kRIZv9Yn3m+Wu\nO0ny5LtIZH+dfli3fxVp6ffIMJOke3ft+b5q9OMfcPFrSlGVz0XR791txNG+3b8u5v4q7LQb+aNX\nud+Ek2/w7v8AgNeX6HqyfZd8nlqI3VX/AL3/AHzXVaLrkELOm+QKyfPItEo+7YzteVz0GHWnjuok\n+Xav31/9mrSXWoVUbHjmb73l7vvVwNj4gs7phZ3LyMyxM0TKny/8Cq3a6kjRpvfYy/JLtrlqS+yd\n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\nwnDUqcpd0nQflZ4dqCT5t2xa6XS/D/2WRT5KylovlXf92m+G7Hy42R4Y/lX5Y2+81dRpemz3DedH\nCqKq7WWuiMYxOTnItJ0mGHGyFX3fc2vu+b+Kt6Hw+nmJ5NsrPs3RM/y7avaXDDEqOkO6Rf7q/M39\n6tSNWUeT5Mgfyv8AVslVyoPacpzt5oqfaH3x7P73yVz+vaf5N4IZvl875tv96u8uNnlq8yM77G3/\nAN2uY1y1toZQmxim3dub7tR9s05uY5HVLNId3nXO1PK3/wC1/u1y2rxwzXDXnlfIqfupG+9/wKuy\n1OzdZEROYZH+eRVrl/EEbrOdm7dJ8rM33flpcstzrpz5ZnC69Gk0PyQ7VZP4vl3V5n42jtrWN5rW\nFSvm/Ntr1HXGtrje947YjZvm+7XlHjBf9KdXdW3fw/dWplycp0U6kzzTxhHN9n/dzRj593y/e21w\n2vSbt0Pn7UVN3+9XZ+KrhLjzNj/OqNu2/NXmPii6fzCgfmuTlnUNpYiKj7xkapq339n3l+X5aybj\nVo5o3uTNsbft3bqra1evv3pt/wB5aw7jUn3bHf7v96q5f5ThrYj2kTrbbXAu0Qvtdfm3fw1M2tbm\n/dvt/wDZq4qDVnXcm/5W/iar1vqHmN8s2zb83zVPs4GPtpHVtrGzDo+4slH2xOHTr/HtauZXUjEr\nfx7akW+SSX5Hb+9RGPLIylUlL3Tp7e82yNNC/wC8X5W3fw1o2+pbmS6d13L/AMCrkbPVIWj3b/8A\ngX+1V2z1KaR12Ps/2W+XdW0Y++Zne6frUisk33l/u7a1G1rzo94uWZfu/d27WribHUHCqkz/ADt8\n1aNvq02GTdtT+9XVE5PiOzt/ELzY2eWxVfmZvurUq+IkDNs++v31/u/7VcnDqE0e2GP/AIDIv3at\nRsny/ZptjfxL/eWtfQw9mdtpesTSRLDNPuRl27V+Vv8Aeras9afckO+R/wCL+8v+zXDWM3mKrveN\nv2bXZvurW3Yx3iQo9tN5u51ZmZf4a46lTlOqjTj0O5s9Whjt/tKcv/Eq/Ntq0uuTSQib5n+fb/vb\nq5axurmH/j2T7ybmZfvf981oWupQxwh0fbD/ABs396vKxFTljc9jC0eaVuU2LzxAkbeTDu2x8O38\nVU7jWHtY97zYWR/ut/erKa886b7Sjrs3Mu3+9ULMklm9tN8gjb5Nv96vHrYjmie9h8L7xp/2k95n\n7THt8v5YlX7rf71QNqk0m3ztvy/3v+Wf/wAVVNbp2iDoi7Ff96v+zTJrvzGWGH5l2fI2yuKnUO6N\nGP2R8l09xDLM7t8ybflrCvG8xvJ+aLd/e+b5q0Zri5EbW29QjfcZv4qyLxv3Ozeys3y7v9mt6dT2\nmiMKlGMdzO1LfD+57b2+Vn+6tZF1Hc3HyJCzIv8AD/E1aF1cQtCm7978+35qq3F8scnkww+Udu1t\n396uzmlGN0cnL7xm/YdzMiJhtu35kq3Z8Q/+O/LTFm3TFPll3L91W+ZalhZ7e4X59u37lRKfLoOn\nTL1qsO9eVX/erQ0/93Ku/wC6tZO55JGSZPu/+O1saDeJ5fkv50oj3b2kT71EIyj7xrKPtNDqNBuE\n8tUdGZlbduX7tdZoN5IJmkT5nb7i7flrh9NuEjZEd8Kvzf7VdLY6k+5U3yCX5djRsv3a9bD1PePK\nrU/d5TvtHktvs7Ojs+59qQ+btWP/AGq3dN1KaNlufO3sqfdb+KuG0rUvMjMzuyuu392ybv8AgNbO\nn3XlqUSZdvzf7NejTqHmVKPKdha6p5ln/rmj2vtdZF/i/wBmte11S8gjF5ZzM7r8sqtFtVa4qHU9\nsIn+Vmj+VlZ923/ep1nrUzTGQXPPyqzNXo05dzzq1PmPQofEsMDRJC7AsrN8qfepsfif7R+5R1/e\nP/D/ABLXDN4ke1d4LZ/l/jZv/QVqOTxZCpVPOZEX7m2u2PJLY8+UYRmdvNrkLW/2mF2A+YeT/tVg\n6xrhWFd/BZv9Yr/NXNzeKdu57P5fn2u0kvyrWZJ4phaGVLmZfOVtrL/C1RUjy6E+/L3jZu9YSQvs\n3OF27v7zf7VY2s6w9vs3uvmf8tdr/LtrBuvFUFu72yXMau38P8VYN94kmuI2beqrGvzturjqR5pa\nHTTl7ps614ghs45pnmUmN/4W+9XD+IdcmkmkTf8ALv3JI3zbt1V9a8VJIHebbvb5mZa5PWPERaby\nUC7PvJ83zLXBU/lOyPLI3bjWrazh3/ad7N/yzX/2Wsq81bzGBTb8z1iTalukR/Oyv91qrTXDvIzw\nvH+8b726uCpH2nxHVGR1Fvd4VZt6lm/u/LVu11KSP59+w/e3f3lrk7fUJliVPJ3fP8nzVPJqk1tl\nHm27V3fN97dXFKnyw909CnUj7tzdk1VJo3+8zM+1t3y/LUlvqaMvnJbR/N/Cv/s1c+2sTNt2TKnm\nfMm6nw6w7SRuibXX7259qtXPKpLl+E7qcuWWp19rqE0i/PCqbn+Zl+9WlBeW0ciuibtv/Aq5Wx1y\nHzFeS5XYz/6vZ81XV1jEbybFVV+6396ojzSOo6GORPMiREY/L91v7tX9ri6TZ9zZ93f8yt/erDs9\nS8zbvdcKnzs1X7HVIbi4+zFGRmX5G2/d+WkOPvbmpD9m8tvMeMbkXYsnzVahg8lRCjq+1GV12fd/\n3ayLdvL2Q/KV+VvmXdWozJBHsdG2r8zfP8v+zTqe78JMafN8Q2TTYV2XPzD5921nr9CP+CTwkH7O\n2tLI4bHja5wyjGR9ktK/PmaZLpikO5EVP3vz/dr9Bv8Agk9A0H7Ousqz5z40uTj+7/olnxX4545z\nb4Bmn/z8p/mz4zj6lKHD0mtuaJ+eZjhhtXk8mZWb+GobqPzo9ju3y/LuX5lZquyXE15bxIm5gq7f\nMb5dv+1VC6Z/L8iHcqL8yMr/APfVfplStKofptHDwpmJfW7yN++mYJH8u1fmrKu43juH43eX/qtv\n/s1dDNGkMj3f3127fl/irB1S2maHe4UFmXcv+1/DUxqR5uVs9Knh+aPwnPahcStI3yLEFdlZv9ms\nS8m8lwruuW/i/hroNRt32yIU+fdj5v4a53VI0bh9qbfl3f3q76MohUwkdzE1i4eRTbw7UVn+dmf7\n1Ymob2U73XK/Lu/hrW1SP5FKTcK21G/u1i3zRbRv+Z/uu38NepR948nFYOXN7pj3rbVbybb5F+V2\njrNvFQp/tfw1qzM679m3Yy/drLmRPM3v/C33a9SnE8arg+WQmmw7WbydrfP92uo0G3dso7yNtT5P\nk+6tY2nwvE4d0X7nzba6nw/b7o2d5mI2f3K6oy94mOF983dGt/JVEf5y33Pnrt9Dt0mhZ9m3b99V\nrm/D9vMFR02jb/Fsrt9DtXbZwu7/AGv/AEKorS93mPWwtGMjV0uwtvLjTtJFu2snzLXT6Tpc0LNv\nRVEyf6z/ANlrK0VUa4SG2f52Xa7fe+Wup0OyuY2dJnZyrrsZf7tcMuaR6WHw8blu1s/Lk+zb127t\nvlq/y7v96voH9kHxFJ4J8YWF/DD9qm+0bYo/urH/ALVeJWVrZ3BSa2hyW/vf+hV6n+z7HqS+LrZ7\nDa6+aq7mibarblrKp7pGaYfmwckfqh8LfD/hXwH4J1fx/pVzu1TVnkuLq4aLaqq38K/3mrtPC3jL\n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\nVpW+oJcPBMiSIn8aq/3q7qcuY5pUY/EdtpervpMqJMissjsvzfw1srre5VZLlcyf7P8ADXnMPiJG\nYJOjMVf91tX7taUPjCZv9DmmUqv3W2fNur0aMjzsRTjKJ3y69bLPstppCZP9n71RtrDxxu8w+RZd\nu1f7tcdb+JEmkTZNhl3bm2/KtMm8TIq/vpvl3N8u77zV6NOR5NSmdtqGsPNHss79dn3tq1mzeIP9\nIZ3T5I9u+uWXxDprTKj7lRvvSbv/AGWoJPETxNtQrK025vl/u/w7q6I1OXaRzSw/Mb154kh8yb99\nu3P/AHvurWbf+JrmZSjzbP4om2f+hVz154i+ZkeOMyx/3X+9WFqHiRF/c75DF/dWlUrR6GX1flN7\nUvFT7N6OoZfmddnzVkap4ij8lraGZWbf86x/w1zGoeJNsex3UqrbXZqyrrWPLVoUfb/uvXNKpLmN\nY4fl2NbVvEEsa+S87bv7yp/47WHcahuZkSZVXf8AIu/dVSbUnkwm/wCZf4WqpNM8fz4Xaz1y1pSk\na+y5S4t9c+WWSRWLfN/vVJHM/mb/ADo/l+ZN33ayFvHSNpvO+X/ZqKbVHZhsfluG21zfF7pfwnQX\nGpTMqzfL/d+/R/aU20fOqNJ/C1YMl8Zl+f5dv3WqSO4m8xf9W3+033mrmlL7J0xlym3HqTySK8if\nIq/PUzXXmsdkONq/xNu3VjR3iSKIXh5/3ttTW918qJ97++2+sZR5T0KdSMjbh1C5Rk+VWRfm8z/2\nWtfT9Ufbs2Y/uSVzEa/NvTcR95fmq3YX21m3zN833Y1/hrmlGSOyMjs7HUH3b0m+VV+ZVaug0ed1\nhF07/ei27m/iritH1Pcyo74ZW+T5N1dBpupeduh+zKdr73/hrGUpm1OnzHRWt35cfyO2I2+Td8zV\nox3j+YvyfIz7fm/9CrHs7hL5ofnjikk+Vl/2v96r8MnmMkLorfP83+9WPNym0Izl8Rf8ybcm/a/l\n/eb+LdX6Gf8ABJos37OetSsm3f41uG2+n+h2dfnY+JGiR/lf/c+Wv0T/AOCTSIn7OesmM5U+NLgr\n/wCAdnX4544Sb4Gnf/n5D82fJeIkf+MZk/70fzPz+vI/3MVs/wByRF3f3az5IZlmlTyVCRttX+7t\nrUks3uFO9OFfcm3/ANBqFtnnQ74flV9su56/TJVOb7R+tUcL/dMe8t3LG2hfYzJ5vy/dZaxdQkRY\n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\na38K/wDs1NVUaT+78u3/AHqljt3jkR3+VWTa8lOb5V+RPm/3KXtOb4Thlh+WWpDGrxyN911Z/u0e\nY/mNv5p7Q+YV/u7flZajf5lSN7bYzfxUvi5jHl5pEi3zxvs28t/FVuC+hjQQh9v/ALNWdte1k85J\nmbdT4JrZpkdwvy/Ku7+Gsqkfc1NqcuWZsWt0jNsRGq9pbxRzM6PtRvm+VKyLe48uRXd9zf8AoVXL\neZ23b9u1f7tcnvyjqelRqcp0+mzus2+OZVWRvnWuhs7h1X7Sm1V+7t3ba4yzk8uFZkm+Vvv7q3rO\n6dsQ/KyRpu+b5t1RL4bndTkdlpd4/no7/Kv3tsdbVn5KzBE6fe+ZPu1yvhu/H8aM5+78q10+nxu0\nbpdeZvZl2fL95a87ESlzHoYWMZRL/wBhmhYb02Cb54tr/er9Ff8AglHsP7O+sPGGCt4zuCA3/XnZ\n1+ednBtuFmmfJVdu1vurX6Hf8EpnVv2d9YRFICeM7hRk5zi0tOa/HPGuTlwTO/8APD8z5PxKgocJ\nTS/nh+Z8DrHDHIyI8m1tqurfxfLRJawjLw7W+78v+1VmO3hkVPtLsiq3ybfm+al+y/aI9kyMw+b5\nlRv4a/Tox9/3T9pwdEwr7S3ib50kAbd8sbbV3Vk61HtjLzbn2/Nt+6zV1l3DumdELC2X5UZl+81c\n7qEKSRum9i0n95664noU8PDmOJ1ZR87/ADLCqbn2ru2/7Nc7qVrti3vtZ9u3av3dtdl4h0e5WPZ5\nasrfNtVvmrn9S0vdH5yIyFk37f7tdVOXuxPQhh48kjjrqNI8w71kdfmb/ZrOmtYfLXY7Z37nXdur\npNSt4Wjf54wZF3fd+ZqzVt0WPf8Ac2pt+5XpUebTsctbDwkYE9nuuN5THnP/AA1DJauZNibsN/Cy\n/LWvJbpG48nn+L/aqOb51XZEzn7u3+7XqUZRX2T5/FUYRKVvDPGvy7drfwtWtY/vG2PCq7f4l+7V\nOSNI5TIk24/dX+9UliNszOn3v7y/erf7B41SUU9Tq/D+wbUjfd/tNXb6DeSSMkNzMsUX3VZYq4HR\nbuPzjDsZHb5dy/eWut0O+dWZJpmfb8u3d96r5eaPvER7RPRNBvLOOd7OB1fzG27tnzV1nh++ZrX7\nNvXeqfJCzbd3+1XnOj6o8OxI0+dfmbav/jtdXod07H7S8+dz7vL3bd1c3tOU7KNTljynpOk3rxyJ\nNMkaGOLbt+9ur1L4L6pb2PiBdSufnW3tZHTan+z8u3/arxPRdU3NHczTKn8LrXo/w1mubrULiwtk\nWVpImaJo/wDdrxs6lKWXTUex6+VS5sxgz0r4S/Dv4b6t8CLzVfHMy2Nz428UMr6hqFwqyeXG33l/\nu1L8A9J+G/gn9rC3+Hvw68cw69pEbRtut23Rxybvu183ft5fEB/Dfgnwd4A0PWPKkh0triVYdy+X\n5jfN8396vbv+CCX7MN38SvjNefEXWZ5JdN0q2W4vGkf7u35l/wC+mr80y6nifY66HpcVyoT5qjP1\nw/avlis/g7Y6jJDJDBDZxokcf/LNttfn38T/ABY/iy+udSv3+SP5YpGbarNt/i/2a+4f2v8A4y2U\n3hmHwrDZx/ZIEOVkX7zbflr8wPix4wvbrxdc/vtkPmsrRqm1Vrrx+IjXlGMJHzvC2BnhcNKpVjy8\nx0V/oug6xa77+G3eOOL55I/kkZv97+Kvlj9o74f6ba2Vyng+5WS8mumWX7RZbfl/2Wr6J+HviTRt\nauI7DVUkitbdmW48l/mk/wC+q6rxV8AdN+I2kteaBpUdpbwozLNM27zK1y+pBztM3ziPL70T8hPi\nRB4h063mS5hkikX5X3JXlV1qHiTSbeTYkgWT70m2v0j8Wfsv6JeeJLu28RfZ38l/kkk+78tfPvx4\n+D9np6zvomgq8X/PPZ91a+zy/FYf4ZRPgcZhcVVjzQPkm11bWNWuPJf53/2q2tY8K6xpNolyUX7n\n3a328I6DpOopeW0MyFmb920TfLUXijXpry3+wIi7Vi27ttenXrKUowhE8SGFrxfvs4htU+0L5PmK\npX79afheSa6uPJT5T93dVKw8Ove33yfMGTd8q16p8KfhLf3UyXj2zbW+5trOtKlTgXQjVqVTvP2b\nfhTc+MvGVroL2citcPsim2blX/ar1/8Abi/YV8efs5/Duz+LvifSpLfRLqeOCK8uGX95I33VX+Ku\n1/ZH8Ev4X8ZWGpalZR4Vl+ZvlZq+zP8Agtt8Gdc/aJ/4JreFPFXhKLzrrwn4ghvLrbJ8zR+X5bNt\n/wBmvkKtSU8xjB+7Fn3EsHy5R7SOp+IWta5punwj7S6r/c3VufDX4mfDfRdQhutY0+O5ZX+7u27l\n/vVyXjb4P+NodW2alo9wIm+VGkq98L/2ffEPiDxJFYPpsiiRvnZvu19M8BhfYc058p8vPG1adWLh\nS5j9K/2JvE/7J3xZeF/BOr2Ol61G+37HfIqtJ/tV93WXw78E+OPCv/CN+JNHt57y1t9kV0sCqy7a\n/Iv4d/8ABPf41LqFt4k+DLyQ3MLrLEqt8zf5av0S/ZR1j9pbTdXsvA3xp8JTaXeRqqvdRv8ALcL/\nABfe/ir43NMPWpR56U+aJ9hl88NjaVq0OSZ7f8EfD+u+Dbe40f7TI1n9o2o0jfdr3T4O69bf8JZb\nb42dftG1l2tWHa+CbOHTBqBhYJM6s25NzM1afwW8a6V4T+J+PEFur6fY2811Pc3G1fLWNWbdXy0K\nNOti4Rl/Mj1K8fZ5VP8Awn5xf8Fxv2vNH+O3x0s/gn4F8QyXFj4BnkivWh3K32yT/Wf7235Vr4u0\n+3hmuvOSHft4l3Ju+auv+M2oJ42+OXjDxPC7eVqHii+uIJJE+aSOSRmX5v8Adqhb6WjKHkfC7/nV\nf4q/ZaVGNKlGEeh8HgsPzU+YjXT0jwjw7xs3JGr/ACq1Xo7FFyieZ/us9WrOz8mTZ9mZyz1PHC7T\nb03BG+9Ht+7WFb3vdPbp0eWPuxMu4tXe3V3hXZt+f+Ksq803crpMF2/eRlXa1dPNC8cgTf8AJ93a\n38VY2rW6TMzujBv+ee77tZUf5ZGVSjzQ0+I47ULMKzTb2D/eWsbX45FmX5227V3ttrqdStdrO6dN\nm52/hVa5/VPO+0M7zM6qm1I9tdlOPvWkeRUj7uhyOrWsMnm7OGZt3y1y2uWO5i/8TfL81d3qFl80\ng+VFrn9R00bW38fwrXo048rPJrU+55/q1jbRx7NtfaX/AAb52Edv+2/4pniXaD8Lb1dvb/kJab0r\n5J1rScqTsbG/+L+KvsT/AIIBWjW37aniYnv8ML3/ANOOnV8Z4q6+HWZf9e3+aPl+JFbJq7/ungX/\nAAW1aQf8FOPiYEGcjRv4f+oLY18ptdeX8n8VfWf/AAW0t5h/wUx+I8427SNG6/8AYGsa+SpFxJvd\nMnftr1uA434Gyq//AEDUP/TUToyZxeT4f/BD/wBJQ+ObbNvhRdrfw7KtQ3nXc64WqG141+T5l/vb\nqdDP82x4fl/hr6nl6Hp/FL3jbsbxPlLx7l37srV9dSDK3kurN/B8n8Nc5BN5ce+F+W/hWrEdw6yM\niblSiXxcxEpcx09nqTzYhhRd33d1Wf7eeNVSba235a5WG8mjP2aN9p+8+2ntfbRlNpP95qfNy/CY\n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\nrNNBbMixxbtv3v8AvqvnqkvdPr6dP2h0Oi+EfCVrC2t+J7C1eSayZIpLj7sf+0q/3q+Y/jZ8G9N1\nTxauq/2VNJbzXDJFGsW5lXd8tfTHiDx54W8E6olheIuovsZpVWLcsNcVfeL9N1hZB9khc/M+6T7s\nNezlsv3Wp4WaU+Wryo+ddS/Zd0HT45bm8sIYhv8Am3f7v96vBPixoug+EZHSO8/1e7eyt8v/AAGv\nb/2lfjVeaDaromlWc0sU25vMaX5a+LviN42v77UjbXjsyyOzfM25d1exGdSUdDx/Z0sP702Qa14y\n3Xh+xvJFGr/wv/DWJdeOJrVtiTMwb5V3NXPapr3mNJC6bv8AarlbzXHuJkREby2fa+7/ANCrpp0f\nb/ZOCtjYU3aMj6h/ZN+FPi34uao+qpDN/Z1n8txcfdXd/d3V9Y+Afg7eWviCC5sHbYzqm1ov/Hq+\navhd/wAFA9B/ZU+Eei+FPASWtxcfY2/tS6mtVl85m/3q6C9/4KqWHijwWLvS5oYdRX7/ANni2ttr\njrRqX92kevh5YeEPeqx5j7D+P3ii2+HOi2fg+515ppL7bJEq/Kscf95lr6y/4Jca5Y6t4CutFgK/\naZbZhE8VxuWRfm+avwlm/a08V+LPFreJ/E/iG+vLmaXa0l5cfKy/wrtr7u/4J6/ts3Pgm6trxNV8\n5WlX92su1VX+Ja83FVKtCUZzjsdeFnQxNKdGlL3mffHin9rrwf4B+IF78IvEOpLb3bRbYmml+6u7\nb92vP/E3jLSfiRpMvhW8mWaxVvkkZfmkb+Fq8E/4Kha54Y1r4Xr+1F4Pv47TWNNv4/tUa/6yaFvv\nKteN/s2/tOX/AIkuIEu9TuJ5mdVlWR/lb/drhXPKPtYP3ZH0FHD4eUOWovePqr4E/s9+LU8bPNo+\npXFxEt/t+zzfd2/wr838NfUd5rGq+GvDcOlXmiRw3bJuna3Tay/w/LVD9kb+yNb0K31Sa2VZWbcz\nRv8Avd395q7j40rpqsUis2+WJl+VvmanWjGNByXxHlVpSjjFTPCvF99NqV5/xMkaTb/E1eFftreI\nLzR/2dZbaGLybPWNRhggWSLd5kit/Du/u19DeJNNttL0b7fNGw3fek+6y/7NfG/7dnjC88SeINE8\nAXM0ktjpdu14qw3G6NZJF+X5f71HDWH+sZvGUvsl53iPZ5e4r7R8+WukXm1v30YZU3fvErW02F22\n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\n9tjfa1aS61vt/Oe83MzqryMn+zXFWeqQ3CsnnbVX/no1WG1RzGjpMzM3zbY/ljrx6y5tT2qNTlgd\nguqbVS5jT94yt8zNTJNUyzO9zv8Au+aq1zy688Nn/rsGRNn+WqRdWmiVv+mibNq1Eaci6lSB0K3D\nySsju22b7lKt1Zxqu+b51X51jTdWLb3zvGqO8ilX2/7W3+9UlvcJcSH5/N3blebbt3KtR7Mj2kPh\nLc10l2rzTSs0Tf3V21hXzTSxrNbSMn3ldW/vVtbIZoVffuEaf6vd95ao3du8cLu+1kbb+7j+9Vxj\ny+6ElzHO6nNftH9jc733fd/2a5vULf5pkmmbau1kVv4q7C+heFvO8mTDJ97/AGq5/XNPSSTy3h3f\n7SrXVRqRj7qOSVHm1kcvqFq8MmyF2f8A2v4dtYmpfKzTbPmX5UbZ8tdRq1r5e77u1fvVgatMgGx+\niv8APt/irrjU5pjjh+aPKctfW825n+638CstZ+oWzvGwT5n37vmrcvlMg/1Pyt/47WXf2TyK3zso\n+9XbGXumNTD8pjzK8ch9KW1t3jbfNHt3fNVjyUbO/wCb+KpY7UM2x33nb8tac3Kc/sZ/EWNPV/m8\nlGDf3m+7XQ6Xapa3EWxPm+6zL92s7TbVIdnnQsG2bv8Aero9LhSSP54Vbd9xmSvPrVoHRToy5zV0\n+FF2Om7d93/Z3V0NnHNGyb5FD7PvKlY9isIi8nLfN9zb/DWxZx/IyvMz+Z827+7Xmyfvczid0Y8v\nwmtZq8cfyTfe/iZf4q1dPUMrfut8UafMy/3qz7Fprjy4U2nam35f4q1LFXb/AEZwuPuurVjKXu8x\n1R980IUfa8Lw7yzbauTrM0cUybc/d27vu0Wq+XiaaH5fKbbHGn3lp+n2u0lEhb7/AN5q5fe+KB0r\nljo5Fmz861VHRF3bPn3fNVqzV5mSa2TY2397HIu5ajs4ZoULvCriTd95v/Qa19Lsd0iujtsXa77f\n4V/u1pCXvSOyPN7L3S/pdq8W3y4Y9n3ZW+7/AN81uafpqKv75Pu/L8v92q2i6bNbqqzXO+LezS7l\n3blroLWzSaRXiRXEPy16dKPuXiZfDIpx2LyTLsT/AFny/NWno+kfu/n6t9xd+3btq0unpGFTerlf\nuRwruVq17Oy8va8yNv8A7u3+L/2WuuEo0xylKUit/ZnmWI2bVTY29W/hqS30kt+5h27Nu7c396ti\n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\nZuoX3lgrv3bflqG+uvJkd/Mx/drIvNVTdh5sOzfxV20jy61blLN1qCR7djsE+9t31Yh17y7cIj7v\n9pfutXPTakm4u+1QrU23vk+Z/O3f3lWto+Zze0n8R1UOpJJIrwur7v8Ax2v14/4L4TCL9jzw4GOF\nf4k2asfb+z9Qr8Z9Lk3SLsfaV/vPX7J/8F+3Cfsc+GiQTn4l2fT/ALB2o1+L+JGniNwv/wBfK35U\nj5PO5c2dYD/FL/20/Jc3nnMrvu3L9/56WG4mm/vLu+VqpQsnmb/4G/i/iq5aLPtZN/3q/aJSPq6f\nxaGlZyP/ABn5v4dtXLW68uP5OP8AZ/u1mwTPDIIZvu/3v4au2rbvuOxX7tYyj/Md9OPU3IbhZmTf\ntRV/iX+9V6zvtsw+f5VVty7vlasO3wqrJPMqIzfLWgt4WJTeqbvur/FXNKMDup80feNu1unWzR0f\nMjbtnyf+OtVuz1GNIdibd38e7cy1zf26aPd8m3d83zVbsdQ+VEdl+VtyR159aJ3UakeY6Bbh5ttl\nc7nRfu7U/wDHavLcf6Qk1t5iN95W27qwY7iZY/nmZl/i+atGG6dVV3DY/jVfurWcoy5dDSpym5Jd\nTKUCBlDS/vWZfvVbtZEmk2Qov8P7yP8A5aVkWcyTXqJMkjo3zJWpawzRqZofkRf++t1YSjHl+Ifx\nTLqx+fDsR1Ta/wB5f71F5Dtb7Mjt5Ujrs2/N81OM263RHdvufvWk+VaerXjKNiMhVPk+Tcu3+7ur\nOpzx906Y8stjIvFmXd5MvmeSjKjfw1iahbpJC7pctlVZmWul1Cx8lZTZ+WI/7sfzfNWHdWrhRBcp\n/tfKm2lGP2izl9Tt3WF0eFVuN27dJ93btrlry1eNi83Ndz4itXVtkKbn2/J/drlrq1eaR3hhV933\ntvyrXXTqe7cuUeXY5TWLWbcqxuyj723+7WbdQ7mPz7m/vVvXlj9qmZH8z5f4aq3Gnv8A3/8AdWuy\nnU5dDn5eYwPsqDcifdb+JvvVcsbHDRl15/u1ba3TcqCNWZfm+Zau2Nn/AMs3fcrJu3f3aVSt/KXT\noxj8RY02xjVt/nK0v92tezhTzA8KMu7+9/DVezsYY/Kfycv91WX5q1Y7J7Xcj9Pvf8CrzpSibSpw\nLVvb7pFfZh1+X5f4q1NPheObzoU3bm2t8ny1Vt12yb1fKyJ/F81aljG6t874f5dsa0+blhocvL75\n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\nvc2tJt4ZG85OkPyfL/eb+9Xb6Pa7oUD7iV+X5q5jS7BLf99sZpvm+Vf/AEJa6vw5D5caQu8hRtu9\nv4vmr1sLHmgedWlKnI2rO1v4WbyYdp+95jJ91f7ta2n6b5kqCFJDui+8v3ZKn0u322rJs3K3y/vP\n4q3ND024t7ZLa52r5m1nb7q7f9mvTo05bHDKsZ9lpd55Zd9u3/lqq/dq5HpsUOOJJn+ZW/h27q3b\nPS0bfCvCK6/e/u1eh8NpNO6XKbt23yo1/wDQq6+X3iIVpS0OPutLSa2aG5dnWT5W/wBn/ZrjtT8M\nv4m8Yf2NZ6rCkdi6u9vN/E38P+7XrfirQ303w7fTb4UZV2xSSf8APRvlWubsfh7beBbe21XWE+z3\nn+qulkdW85t33vM+9trxM6xEcPQt/MVXxE5fuzE8eXUFrobM6Wtpc71RGh+8zfxf7v8AerwLWrq8\nj1q4ub+88x9vyMz/ACxr/druPi5Z39nqWp2E7xvNNLt3ebu/4Furze6tbm+WPR7C2Z5Gibd5n3Vb\ndXylBSlscUve9057xtY3k1mk9rDHsWJn/wBnd/erzfxhMY4Wmhud1zsXd6LXq/i5bzRdLh0S8ud6\nxtuVY4vmb5fu7q4C+8L3OuBM+dH5j7drJ8rf71dVGpGM/IKkZShynAQ6akl2u9FZ4X82WRn+61UN\nSv5Li+Wa2Tj7jt/E3+1XobfD25vLUQq6q7PtXc235v8Aa/2aydR0PStJjSz1W/tftbbvNkj/AOWf\n+zXrxlQlI4KlOUYHAeIrKG1kifzpJkZN26Ntu2s1Y3tYpX+0tvVt21mrqtet7G1kR9/mBvmdv4dv\n+zXLapqENxL+4SN/7jbvmWolKEjL3ojvO1Web5H3Rybdnz/NXQaPYa9JGdh80bvl3L/DXP6XqFhK\n2x5sS7921vl212ek606sjpCqQt/t1wYyo6cYnXh/3kviNLQ7waVMX/drc7du2RvlWu/8D65Msge5\n2vcNtXaqf+PVyVrJpWoYhhmt9330aT+9WhperTabfeTc6lCySN/yz/hr56vKNaUrn2eV2pSjzHu/\nhnxNNbRl7n7mz96v8O3+9Xtfwl8baVrmjtZ/uZRt3eY396vk2x8QOy/udVbayMvzf3a7L4b+OLzw\nzcJZW1+tonmr82/5W3V42I5afun29CrSjLl7n1VHoNnIq3MUKymPdt8t9q1Vk0fT9F1a2v4YWaGR\n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\naz7pU8mM7X2/N96qu4o2yaFUaP50+Stoc3NzM5JSIdLs5rMv5MaqJIv9W33Vatyz2W7hB8/yKjyL\n81Z1jb20kjzIiov3mrQ023SOZvnbzfuv/dZaxxEeY2w/vG3Cq28jTSbSzIqquzburV0+RFkVNke7\n+Dd/FWTaxPI/kzfKn3Yv7y/7VbUNn5yrv5RWVn3fKqtt/hrglzcvwndT+I17NZ71U2JlpHw/y/Lu\nrahhdW3vx/7Mv8VZdnvjQuXwV+5t+7urY0GSFt0f7t1b5UZv4aI8nNblO77HMX9PtYJJP3MPyt83\nmK3y7a6PTbWzkkF4ibdvyrtT5mrN03Tfs7L5ab0/jXZ91a6PR7JLVUTfIFV/3XzV2UaXVHPW92Ja\nt7d92PlEv8Lf3VrrPD6wrJG+/c3zfN93bWZpapN5vnozru/e7k2s1b+h2Mx2/Ou2OVt+5Pm2/wAN\nezhY8vunl4iUuXmOn8Oy+dIULx7f41+83+9XS2a7oWaZMLv2xLs3bq5bw/G7TPOgYf3m/wCBfdrr\ntNkTzVmhdtq/fj2169OPKeTKUueRs6fG8kPnbI1Vfvsv8Vb2nw23zI+4+d8sUm3ay1n6O1tdTI6I\ns6L8u1V+Vt1bem27Nb/I6sv3K6OX3R+SM3xR4ah8RTado+xti3Sz3EK/N5yr/ermfjZa3+pa5cTW\ntnbtbWsS+V/Cyt/Cteha9efYdPTfcwxG3tWdJPK3SRrXlfijVNS1TTQ+q20breXCrLJHuX5V/ir8\n/wCIakvrtvskU5SqTueL+PPDs2ta5NrFt8iq6rLGr/dbb96uUk8MvY3hvIbbZJN8ssiv/wCPV3Pi\n7T5m8QCz+2LDaLLubcu3dWb8QFe3LahYI0aeUsUX9xpP/Za8aM+SOhr7OftThPF1jc6gtnpsKZih\ni3PJt27m/i+aud1zQ9K0e4t7k7mTfuuI5n+VmX+Kuo8W/adP017mGbeNqq6/+hba881zVJo7eTzn\nVl/h8z5mpU6nu3O2nh5I4/x1rzw6s9yl4sy+b+68tvlVa4C4vr/Utaeab97t+8q/ear/AIuuLbdI\n8j7du7fH95a4u+8WJax/ZrN23KiszR/fr0qNSmoeZ5uIpykXvFN26zf6S8caTRKyrI/zVzWoM9xf\nKls+/wCT7qrWRea5c3Vw/nXLbF+ZFaks/ET2NuJEdd2/738VdVP3Y2OOpGL1H3Elyt4k29RLv2s3\n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\nalcr58aM1rIsvysrfw1tXV9tjHzr8qbnbfurKn7p6MqlKtHmjsXF1KZZt80zLtl+9u/8dp9xrXys\n8Lr8vy/3flrmdS1BJZkn+1Mm1N27+9WZN4k+b9y/8X72uuNQ8+UeY6uPXry1kZMr977392pV8QNM\nyTTTK3z/ACrv+WuKXXIVmMPnN+8XajN96o5PEH75XSFSkafxPtolUj8REY8p30fiSe1hP2l42Tfu\n/eVeXxs8Kq4WMiRPuq/ytXmDeJJpNvzsqUyPxI9uoTzl3q/3d9R7Y05Zn6yf8Em9TGrfs56zcCQt\nt8aXC89v9Dszj9a+B9H8beTdNM9y2yRlby9/ytX2z/wRY1Qav+y3r92Ccf8ACwLpcHt/oNjX5q2/\niq5mkVIbmMIr/N8vzfdr8O8OKnL4i8UP/p5Q/KqfNZHCTznHpd4/+3Hueh+MrCZk+TfEzfeZv9XX\nd+H/ABqlxH/obsis6q67fvf7tfPHh/WvL2PP5bsybkZf/ia9C8O+KHjaPfMyL99I1f7rV+zSxHNr\nE+tjRme42fiC8mkiSGbb83yQyfe2/wATV7f+xTqw1H4qakhJBTQpsAjG79/Bk/59a+UNH8RXM377\n7Ssj/e+b5dtfRX/BPjXm1j4x6gsu3ePC0zNsbIP+k23P61+f+Kle/h3mUf8Ap2/zR5XENCX9h15f\n3TQ/aW1qWz+OOuwWrZZDa71/7dYq4CTxNDHu2Px9123/ADbq0P2xfEq6f+0T4isFaNWK2nzP/wBe\nkJry7/hMPORoYbDadnzNXqcC17cD5Wv+oah/6aideS0JPKsO/wDp3D/0lHeTeKpoZkR7nO5N27+9\nVebxTNKodHUp8y7v9quEt/Ek0nlzXMaxHdudo/m+WrH9sTBm8mZkG/dt2/LX0csV757n1Xm942tU\n1aPbMjwsf4tq/wB7/ZrB1K4eRpnZ5F8ld3lr8zVFc6vczbZjtIb50b+FaytSvHkYv9sYfN80K/wr\n/eqPrEpbFyw8YwJLq6hWSF0/ii/1jN935qyZPEG5nTf937zN/FS6ldeZG+/ciM3yfxfLtrBvj5it\nNs8zavzbm2s1bU6hy1MPH4jqI/ElnHsmmf5tmzzP937tQyeKkvpmRJlO5G+ZWrhm15FkT5Nqxy7t\nqt/s/wB6q3/CSOq703A/xNvrU5+Q6q+8RQyRrDC+9vu/L/drHu9YhH+jIi+X5X977tc/Jr/mQtNZ\n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\nffnc+3btqexscqtsifJ95GZN1c1bY6KdHlnyl21uiu1Hh3bfvxtu3bt1dRo95Csezflty/vJHrlr\nWF41Kedh/l3bn+7/AMCrY064f5LZ33sqfumb7v8As15sj0Y05RV2dbcQ7XFz5K71fcm5apXdz+8V\n327/AOJdldDeae6xl5o1dv4dqfdWsjUtOhWP7ZM6om372z+Kvj/tH6RRpycfdOauP31uru8ZK/xN\n8q1z2rfvJWmR8Kr7pV8r5m/3Wrqtajs1bZDDkN822T+KsTVI7maPe6NuVNywq3y10U/dPZwuF5jj\n76/CjYk2Xj+ZFWKse+3szbNqs3+3XQatZ/u3SHcm5Pnbd92svUI4ZFZLlIyyqqtIv3q2p1PZ+6fQ\nYfL+b4jltStZmmV0dWeP7i1l6lA+4QzOqMy/d/irptRWzhX7T5rbN+5I1Tcq1g30cGfJ8lmdm/1m\nz7td1GtzCxWWx5TFmsXWMpvVXV9qbqiht5pG+zOm5ldfm2VfkCQjZv8Alj+b+826n2tiI1OyNsr/\nABN/FXrU63LD3j4TNsv5eYfp9nut1+T5t/8Aq99a1vo9xcRjyRu2/L5cn8VR6fboscXnJuf7396t\ny3XzZE37QWRl+X+7/eo9pLm0PjMRR9nAq2eltJsdIdqRuy7f4lrY02zn8iTa6j51+XZVi3t3ZTC/\nzRL83mL/ABLWnpq+dhIXZ4VXc7eVtrH+9I8mty9QsdNhmkWF3Xztv+7urd0/S3mh+SGRH2bW3fwt\nS2unQzLHNDYec8e3/Wbd3+0tdD4dsYVkUiFl3bt25Pu1PtJfEc9OPtJe8VYdPMkkaeSpZfvN92tB\nrVIoG32ap8+7du+9/srWlb2aW6uiQRyNJ8sXmPUk1mjN8+13Vm2/L8q1yyqe9zHfRpxjqjnG02ZS\nNm1ZP+WrbvmX+78tL9l/dmwmjV5Nu75f4V/iram0m5mVZkTcfK/v7W+9SR6S6zY8jYqurM33lVf9\nqolL2kbSOmj2MD7H9nZLmHps+ZVr72/4KxQmb9nLR1EQfHjO3OCcY/0S75r4ijtUZndJlWNnb5V+\nbd/tV9z/APBUqNZv2ftHhaQLu8Y24GTjJ+yXfft9a/HePH/xnXD3/Xyr+VM+R4mvLiXKLfz1P/bD\n83bzTXlaS8mfIZtvzfd+X/ZrOmsfmX7NtKL/ALFdndaK/wBoVEEe7+JWf5Vqh/ZdmsLQ+TudpWVZ\n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\nInzM1W21WwsbO4vLn5fLt9qKvyq3/Aq8w0vSX1bWLnVYXjXazN8vyrJX1+Q4Hm/fSPheKc0i/wDZ\nIfM7b9pXw74G+N/w1vNK0rQY4tRtZd1vNJa7XZlX+8tfHfw5vLybw7qvwK8To1tex7p9IaSL958v\n8NfW+i+JrbQ9WiS5jmeVtu6ORvu15l+118M3+1Wnxj8DWarqOmy+fcLCvyzKv3t1fUfFSPhIynFH\nj/wz1a28UaXceA9S+ZpFZbeRk+bzF/vVx/ijRb/wrrk0PQx/I25vu1f8SahbaH4oi8Z6I/7u6VX2\nx/Ltb+Ja2/iFqlh46t7fxClgsRVF3f7TVnGXKXGPL8JyEfktZrv+Xb83zNurlPEVxC6vC/zVv6he\nJCXtvm3f3v4a43XriG4kfzudtUXGJi30O5ZE3/LVPzPl/d7WFXLry1Yon9/+/VGNf3jQIm3+9VfE\naxEaHd8+/wCX7zK1Q3C/3z/3yKvTW7rGE+Zw38NVLpf+mfzLUlFCTezvsP3ajkbc1S3R3NsCc1B8\n4Ul/4aBx3DMm3p8rVKqzbtny/dqEtkLn1qRJPm96BDmZV+QBc7fvVF5zt8mKbIu1qWNfmGXoHysX\n7w+SmDeuAHxuqYbIz89FspmnRMc/+y0RCO5YaX7PZ70++3ypt/u0trlvn2VBdMjXB2fN/dqS3j8x\nv9dtZv7tHxEyOq8Mr5brNDtU16t4XuL+a3/1yqipXlPh9fsixzTOrbf/AB6u6s/E0zWaWdlbbP8A\ngdae7GJhKPMVfi1qW6xKTTK7L9ytz9gf4W3Pxk/aM8K+CbZP32reI7WCJW+Zf9Yvy15f8RNTmkvN\nk024/wAK19rf8G/XgP8A4S7/AIKAfD55oVMVrqn2h2/3V3VphY/vEY4uXs8Mz+sj4WeFbDwP4E0j\nwhplv5UGmadDbRqv+yqrX4Sf8HqVjMPih8ANV2KYvsGqQfe2nc0kdfvbpF5i1V33D5f4q/FP/g8x\n+Hk/ib9n34WfFy2i3R+GvFc1reSKu4Itwvy5b/gNY14Tlzm+CrUqcYIw/wDgl348ttM+COkPDM26\nG1j/AHKy/e+X71fT3jL9qq6ure4s3RbhI7fZ5Myfd3V+Zv8AwTl+Lj6f8EdLtdiuY4tr3S/L8v8A\ndr13W/jVNdXDJc3LLFv2ttX5mWvxLF04xxs4n7Xgqt8PCoe/ahr3wi8QWtz9vtmiuWib5VRWS3+b\n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\n9N1C28GfErVo9S06+02JVRbiT7y/N8v3vvV+qXirxXbXnhOx+K2iSKj6d804+9+7b+Fq9PHUlOpG\nrH7R5GEqyjTlSn9iX/kuzP5Qv+C1n/BOfXP2A/23vE3w1ttOZPDmsyNqvg+4VfkktZG3eXu/vRt8\ntfGv2e50+TZMm5vu/d+7X9Wf/BfT9hDwp/wUR/Ybv/iz8PbeK58ZfD+yk1TSGgX95NCq7poP++dz\nV/Lfq1r5LPDfw8M23d/ErVzV4qpFVV1+L1PQwdd0p+ylt9nzR13wrmfUrV9N+953y1z3izRZoby6\ns5k+aN90W771a/wniSx1NEj4j3Ku6ui+Lnh/+z76LW9N2sky7ZV/hrk5uY7ZcvOeR+GdUm8N+IIk\ndvkZv71fUPw71i11nRdn2zLNF91fu180+MtBSzkF/Cm0bNyf3a9I/Z78aIzCwuXjH8KM1RKMoy5i\nuWNQ9Q1SxRVd97KP738Ve7/sz+Mv+Eg0v+x7y5b7Xa/Kir95q8W1S3SVH/iT+Jo60PhF4u/4Qvxl\nb38160NtHL+9/wCudRiKftKWprg60qFWNj7EtdNmt137VVN/97/x5quQ2O7ykvbmFlk/ij+VttX/\nAA2tnqmlw3lo/mJdIrq3+9V+axf7U/nQx/KrbGb+GvGj9qJ9pDljCMjGaxDTTXKczN8qbX/9lpbf\nS5mk/fWyu0nzPt+Xy/7tbdhb3KyJvtv3Tf61vl3M3+zU8en+X5v2Z9rLu3Mybl/3q6qceUqUYS95\nH0h+wxAbf4R38ZQqf+EglJUnJB+z29fIN5oNwjM6JtdX3O0afdr7J/YyhWL4YX7KuBJr8rAjoQYI\nOR7V8r3FmizLM6MTG3ybXr8Z8OU34h8UNf8APyj+VU+L4bgp8RZpfbmh/wC3nDa9o8Nu2y2H3vm2\n1yOrWdtNcP5zqpX+7Xo3iKPy1dLb7q/P/u7q4PXF/guUj3790qr95q/XcRE/QcLTcZabGVMuza6J\n8y/L/s7a+jP+CZHnf8L/ANYE0W1h4QuARtxx9qtMV85ySbbfZZuyxq33pG+Za+h/+CXsjS/HvWSz\n7iPCEw3Z6n7Va5r8t8ToyXAuP/69v80cHGMZLhXFv+4/zRzP7dl1IP2qfFcSkfK1iEAbksbC3ryS\n3vHVZZnm+825PLb5l2/3q9L/AG/LlIf2s/FZCZ+awBHv9gt8NXksdxZxr5c0yp8zN8v3qjhRW4Oy\n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\nS+L4jDlG+Y/ll361JCvmIvdv7tJHC8iZ+9/srWrpWjvcMNkLZq/iHIhsdO3Irl2bdW1p+ks0m9E3\nLtrc0Xwe6w+c8G5f9qtVtNTTVbzEXP8AdrXl5Y8pj8UuY5y4s3tVLhG3NWbOu6TeB92tfWrpGVnh\nbDKn3awJpZpJGfeu2spSKjHmIbiaRmGxGb/aals1dWZHT/aZqRpP3a7wxanQ27sdjvvXZuo+Ef2D\nT09ftLKm9VVf7yVsNp8zWu+H5i336xdPuNs+zy/k/jauks5LYQ7N+0NVcxMtjM+xzQsPMTa6t/31\nWnpLOtyPu/K/zrS3SQ8eTz8+1/n+7TY5Idy+T8prOPvByx6noul6Ho+raemybaVTb8teP/GDT30f\nxMLZ3Zfl/wB6u50e4eO2ZLN2Vl3K/wA+5WrhfjJNcTX1tNO6lvK2s1IcY++Zfhi58y62TP8Ax7q9\n48EzbvD4j8xWC7flr500G7eG6D/Ka91+G139q8OzP8w8lNzsv3qv4Qlz7GP8WtQdtLebqjbv+AtX\nicm+SYu235q9M+MmpbbYW3n8Nu+X+9XmKcMKZdOPLG50Xg9Q1xGm/Zu+81fQ3wzkeTR1hhTPyfNt\nr5/8HxvJNG6fd3/xV9DfDe3hj099o+Tyvl/2qOb7JjL4x/jC8hkjPySAxrs2t/FXh3xC8MvcNLqV\ntbNlWr2PxNHc6hMz3KSD59u5qyW8KvfL9mezZ/4lk2U48hl73PzFj9nHXJNQ8Oy6U94vmW+1ljb+\n7XdalYbo3uUfJ/iVU+7Xk/gWN/APxOht5nYQ3j7fMb7qtXs7XLhdm/8Aj2/N/EtT8PumkuWXvHE6\nhBNDcOjvvRk+X/Zr1b9kP9pTxh+zP8TLDx54buZIfs9wrXEMb/6yPd8y15xr1ikNzI6bZEkZmf8A\n6Z/7NVrVfLuBJvw33drf3aenJymHvn9KPjT4ffC3/gsv+whpXiLwzqwi8TaZa/atB1VWXzIbtV+6\n237u5l21k/sy/tXeNtK/Zz174b/GnQb5/FXhu1m0PxHpcNr+8VlXbFcbf9pa/Mf/AIIH/wDBTC5/\nZL/aJi+AnxJ1jZ4Q8ST7YJppf+POZv8A2Wv2/wD2hPgH4Z8S3kf7QPw/vFtLqWCP+3JLOHf/AGlY\nt947f4m2/dau/AV4zthqz93oebjaFWCeIpfF9r07nj3/AAT6+M9h4p8QXnw38QXRNtrunGH7K7bl\nZtrL/F/s1/Mx+1F8O9E0X9oz4n+DNHRWttB8f6pa2rR/d8tbhtqrX78ePYdU/Y2+OFl8Wr63Ww0G\naK8vfDrTP+8S1WFtu7/ar+enXvGV54k+MnifxDqVy0jeINcvLyVmTb80kzN/7NVY2MsPUf8ALIrL\n6kK1OPN8UbnLeDVudF1ZVmTdCsvz/wALba9Z8SaTba94JuHSFi7IrRMvzV5+1mlvqT+cjMG/4E1e\nmeD7h7zR4tMd12Mm3a38NcEfiPRqS908VmtodW06awuUZXj3LuauY8GapL4T8VGGZ8bZfl3V3HjD\nT30HxhP8i+XcPtRV/u/3a4X4gaV9g1BdXtk+Tf8AO392iXve6aUZS5uY+nfDt6niDw9HeO+Fbb8q\n/wDoVVNQheO4kmh/hX+H+7XD/AXxg+oaWtg82/8A2Wbb8td9rET2q7ETe237yvUc3u2CpHllzH1l\n+xv8Un8ZeCW8PXlzun019nl/eZo9vy17D5bsXTy/mb7vnV8Qfsv+PH+HvxSs7y8m8uyuv3V02/7u\n77u6vuqUpcTeYk0ctvIi/vI1+WT+7XDWjyysfVZTW9pQ5ZDtLhmbzQiZXZU9sl4ykwp8y/L/ALy1\nZsYYVj2bNif3d9WLXTUjXfCjK+/am2iK5j1PaS92J9B/sgqE+Gt8BHtH9uS8fSGEf0r5cvLV1kkS\na23ivqj9k4Mvw7vlYjjW5AABjA8mHivmq6s/3b7522t83mV+NeG0L+IvFDXSpQ/KqfGcNTkuJM0U\nesof+3nDeIls45PtOGzIv3lrznxFdQ2twYbZGLt8yNJXpPiaBFZHhSQJCjbI5F+Xd/vV5nrVjNCT\n/q3Te235vm3f71fsGIjDlP0nC+8c5Os1vcbIX3jd88i/+g19H/8ABLKdD+0VrUEa/KfBty4b63dp\nXzXdW9tumR7mZEVd0qq//s1fQv8AwScuHP7R2tWxOVHgm4ZW3Z/5fLOvyjxQafA2YJf8+3+aPJ4x\njfhLFv8AuP8ANHOf8FA5gv7W3i6N2bH+gEY7f6BbV4vDeFZmEL/OyfxJu3V6r/wUUuriP9sTxdFG\nBtb+zwxZuP8AkH21eGyakJpvO+bbGzKrL8qtWnB8ebg3L/8ArxR/9NxO3hp8vD2C/wCvVP8A9IRt\nxyJHqGd6/Nub5auR6xD5mxJJGZfmT+H/AHWrkLjXHhX9y+GVtqfN96hvE0DQ7HlVJtn8Pzba+hjT\n5j2PaHZtrG1RNNN+9bdvX73zfxVZsfESM7fuWUxxfupmfau2vP5vEAuI0Tf+9aL5/L+XdTP+Eimh\n2/Oz7vlT591EqcpaBHFcmp6ba+JJtyp8qLHu3t/e/wB2pLXVppGd3uV2t8m5fmbdXmtv4shZVtpn\n/wDsa1P+Ene3m+RI2G7b+7f7zVv7OXUKeIhKZ6Tp+rQtcCFHZ0jTb/d2r/eq5p+sJJbyeS7FWb7u\n+vM7fxY8MrmDcV27vv8A/jrVoaX4mfzPPSbbt+Zlb722s+adM7qFaEp3PSPtjzRqm/8A5ZfMrfw1\nYkktr6z8yF2O77u3+7XE2Pie2+0Qu95tRl+ba25mq/b+LEt5F2PsTyvvN8rbaVPEcr0PRpx943Lz\n5pEfZuX7v3qydSmtpJo7Fpldvm2/Lt2/7W6sW+8QPIGeymVdz/M2zdWLfeNPNX5Jm/dvtdfu1lUq\ne9zRO2Mealc1tW1rzIWtkDfKnz7ovvf8CrKi1zzhF5MzMmzait/DWDqniqa53Ijqzqn+r37du5qy\npvE22IobnYi/Mjf7VdOHrHl4qnynpnh3VLbbFbI6l/vf71dho+rfdheZUDL8zL83zV5L4Z16Fm+e\nb7v8P92u103VN0LIjr8zbq+zlT93mPySnipxkdbb6pN57JNNIvz/AL3zF+Xb/erSSZLiSIJ93722\nP5d1ctaXm7zNnmMv3Uaata1uvMjV5nbEbbl2/dWsZUYy2PcweYVYm/G32i6e587zQ0W1l3/dqby0\nkZ0R12/e3Kn/AI7VbR50jd5ntlZfuvu+6y1NZxzSXC38O10X7q/dXb/FXnVKdrn0+HzKXKmUL61h\nluPnf+H5W+7WLqFrZyQlLl2Ib+Jq3dQ/fLv2Lt37Ub7u2su4VI5lmf5n+Zdu6vExEeWR7FPGfurn\nG61p+xl3uz/3F2VjzaOtwqzbNg2bXZfutXWX0aNItmm4fvdzbqg+w2ybkR925m+Zf4q8+pLlCnW9\nscHqmgvIzTP+6X70rN8y7qxb7RdsDPsw33dq132p280cbwum5VT5VZfvNu+9WLq2lzeYXmRQsKf6\ntU+7uo9p7p0YenGU7nD6po6W8mXTavy/LVNtJcsybJE/e/d27q7HUNPEjL56bP4dv8S1nTWKbt77\nvm+ZGo5pcnKfY5fThGJh2tk9veJbfZt/ztvZn+6tb+m6fM0e/wAnLK+1VZtvzUlvYbbjZ9mVdzf9\n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\ncJM02397uf8AhrKMuY9WjL3tTkbqxdXld081flVPk+aqc2nwwq3kq3+wtdPdafDLveHdG/8Aeb5t\n1ZeoWKRp/eO9W3baXN759Rg8UYNva/MiCBiY/v8Anfeb/drU0mH9586ZX/nn/FTb7yZJP9fJ8vyq\n0f8AFRYyT27D7NC2Pm3bm+bdWXKj6TD4ilKBu2sbx26oltsdlb7zbalhDtMf3ezb/wAtEX5W/wCB\nVU0+6M0J3o2z727+LdV2w3+WEd9m5/njZvlbb/drTm5TzcyxUeX3S3YwpJvKTNFufc+6rSxwrHut\nn2r/AAKqfdqBY9sDzPcQ7V/hVP4qsR+crM9tCqq3y1rGU4+8fEYzEe2lygv7jy/tP323Oq19o/8A\nBS9C/wACNKKkBl8WwFSemfst1Xxxb27tHxbKzx7lik3bmr7O/wCCkUaSfA3SxITtHiuAsB3/ANGu\nfzr8s44qf8Zxw9L/AKeVfypn43xjGUuKsoVt5VPygfCF3b7VdLlPkk+ZGWoI9NSV/kRmGxdi7/lW\ntO4sXkWQ7GTazfNJ8tWNN0V7eP7S6ZWbb93/AJaMtfrX1iXL7x9p9XnGRnw2eVe2mmbGzft/u/3a\nsNp7tiF0ZG/iZmrVXT/lXcixKz/xJ8u3/eq4mkwyM0LzKrb90S/wtXB7R8+/um9OjLmszkLzSYY7\nd7mY7V2/NGz/AHq4j4P+NYdH8SeO5nha2Vp4V3Q7WVty7V/3Wrq/idqj6TqEemwoyssTP+7f+7Xz\np4b8UPpvijxJZzJMWvrVm8uOX/lorfLX2+SUKlPDe1f2j4PiCvGeL9nH7JW+KV59n8ZXMLxyReZK\nzeZJ95q8+8WSPY30V5D5h3Nt/eVtePNa+2XFvreyTO3ZK0j7tzf3q5/WribUrP7S8ylGRm2/3v8A\nZr3IylI8L3TlPF2oTTaozptCsn3qzrySFbYzTbfl+4rfxUniK4VZN7p8+2ud1rVnkh8k7g397+9V\n/aKH+Il84iZ0wrf3axIpvJZofmrZgc3uijzDny2rMkj3Sb4PvUfCEfeIpP3f393+9TJB5kf3OP71\nSXCBl+5yv8NQTcMqb9w/urRI05eaRAx29ak2Oyq9RuN5yaVfu7PMpc0S+VCx7Nxy3SrWmSPHL9/7\n38NU6ktWCzLu6UhSidJbSSeTs7L/ABU2RXjZtnzbvvVHZzPJDsTbT93k4RUyn+1T93cxG/eOzO1v\n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\nsjjZu+X71Mvptuz+JF+Z2X+9UP2zzj9ptpF+X7i7vm21rGUj16NOMhGm/wBHCFJA/wB7bJ/CtMms\n0hX/AJZszfOn+1TFmtpoRsTKxptTdSeZD52Uf7q7V/iZq1p/EceOp9Ty7VbB7G4dE/hT72za1Ys0\njtvjQYP/ADzr1LxN4V8xVn2Kv8Xy/erjtZ8KTWcnnJt/ef7NfSU8R0PxfEYaUdTntLuJrNt8KMfk\n27f96us0XULpow+/dtXbtVP++qyI9NmiZd+0My1t6TYzRypawpj7rM33f96ipWOajS5Ze8db4fkh\njVbmZ2+b5dqt92u20nUsSfI7PuT738VcBpdi8MbPG/nfxJXV6be/ZofO34eP76rXnVPelzcx7OFj\n7P3ju9FvprPbvRW/vtXX6FrCXCr/AKtF2fxfLXl1jqUMkaJbeYp3q3zPW1Z69LtV7l4dm/a275ZG\nb+GuKpRlKZ6lHEcp6WurW00LeSkgj3fKyptXdUd1qiLN882xG+4y/wB5a5LS/EEzRu7u2z7qNH8y\n7qh1bXXt7rf9p+b+Bo3+X/d21jHDz7ndHFc0feOg1a+jWT98/LfKjfe3VkX148h2PMxP92P7u6sa\n68TOc/adrfwov8VUf7etpt8iOzlX+Tb91aqVGXL75p9cpRloaN5ffNLDN95W+dvu7VrIuryGZ879\npZfvM/8AFUGpeILaFd/nSfN8vlt/6FWXeX0zN9xXbfu+b5af1X3YlSzKKL7XF5dK1sky/N83mMi1\nXWN2YQwouPlWVf7tMtbzbHKnnblVNz/3qs2O9pR8iun91vlqJRlHTlOeWO9pqzV0tfs6hE+Z2b5m\nb5vl/hrdsbM+W3nIwjjfKNv3bmrH0t0WHzPtKpL/AM82+81asMsKzJC7s7Qv8393c1efKpLnNIYr\nmhymxpP7yR4ekke1n877rbq27MJcKU8lklZP4X+Va5u1vJrdVTyM7m3JV6G4k8n/AI+WZ1b/AHa5\nq1P97znbh+aUpSOhtbqG+j2edGd331b7y7a+zP28XiT4SaWJQMN4liAycc/ZrmvhqG/eSSLZbbdv\n8P3fmr7d/wCCgVybX4NaZIIlcnxNCBuOMf6Pc81+ScaxcOMsia/nq/lTPhOK1y8X5L/jqflA+ZLW\n4hk2wj5Ek/hZvu/7VasLW0zb4PnSNNv95q4iHVkhZnM+f73ybm/75rVtdVdXR4V4Xav/AAGv0+MY\n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\nvtkuZEXzdyqrblrnNY0WaNmTyfMSH5v3f/s1dNGtKXxH5hiMPC55jceHYZGDp8wV9su5P7tW9Pt4\nY4V2bQzP8jN95lrpL3T5riT59ztGm2X91tqvb2cMMxhe2XG/Kt/FWn1j3fiOP6vKNX3SGzsZFb9z\nDvDfNtrStbGbcu+LIb7+1/lWp1j8mzCIm1o/m+X+Ld/eqSCaYW8R+zM/8P3KUanNGyNI0+X4iaPZ\nC3kw7f3jf3fu0LPDCwR5vl37t392s1vOjl8mGdj8/wB7f92i4uv3zujq6fx7fu7dtaU4395SM5VI\nm9Hqzx7fJTZ/teb8rLVDUtcuVDPNMzL/AA7qwf7Qmb5JkZ5WRV+V/l/2aLy48lgn2n7vy/draMYx\n0MpVJcvxF9tYnvGZ5rn5f4V37tzVJHqTyK9y9yqeX91W/irnW1JI5j5brTP7URVeGby3i2q6R1pK\nnzQsc3tpxkbsmpOq/anvF+Zv3Ucm35v9moI5kupHuZpmZ1+9tesua8S4kSa5Xem7918u7a1Tw3SR\nyF96qnyr8v8ADWVTlUCI4iUo6m3aum9YYfMQf7P3WrSt1dUXUk2v8/7qNl2qtY9ncJ8qJy2/c+2r\n0N3DJ+9mdmXeq/u1rza0pOXNA7acubc6fT5N00dtszK3y7ZP/Qt1XZLpFm8l5l3b9y1zFvqT/ax5\nMzStsZfm+Vavzah837sSZX+HburyK3P7e/LoevQ5JRN2HU3dfO8pY2X5fmepGuPtCpClyqNs/e+Y\n/wAzLXMyah5kwT78TN8219rLVv7XMzfvjvWP/wAerLllKPMerTrcvuo6e31a2hhhT5pX/vf3v9qv\nuv8A4KQ366f8ENJleLeG8WQLt+trdV+fEeobY4k+438Db/lX+9X3z/wVCu4LP4BaPJPLsz4xtwrc\n9fst0R0+lflPGtNrjPIe3PV/KmfC8WTvxZkrv9up+UD4zbXJl+SzhjVfveYrfMtWtO1p42LpMpDR\nfMzfNXIR3XmTfvH3hl+Zl+VatR6n5NwERP4P4a/WFT5tj9E55KRJ8bPHj6D4BvLmG8aOWSDykaP5\nm+avjbWrp4ZG+dnT73zfer2T9oTxpNqGtJ4ehfy7e3i3S7fvf71eM6sySM3dV3f7zL/tV97keH+r\n4Xml9o/NOJcZ9bx3LHaJyvi2L7RalNm/cv3a5fR9Y2q1hNIyj7u3+7XT68u7d96VfK27vu7a4PxB\n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\nu/LU1tp+795sUfxbVWp5UORDHHt+d92V+6uyrml6XLfAbE+7/FVi1s5ribZ5H3vl3KlddoOgwxwD\n+Jdn9z+Kuimclcz9J8MvLl4f4V2/N/E1blr4Z3TbEmaUx/Mv+9XSeH/CkNxJ9o8jj7yLs/irobHw\nik0Y2Kqu3zblWrlE4vafynE22i3MK7PJZm/g2p92tVNPmt8edNsZV3f7O2u3bwnf2rRulszM0Xze\nX92qF94TMavM6Rjy/urIrN8zfw1nUjzfCbR5/tD9Wa/adn8lcMvz/wB2sCa/m+1H51xs/uV0d9HM\n0MrzFl3Pt2t/DXL6lDDbt8779392voY4WHJ5nFHFS5iWHVjbtGmyT5vm8z73zVu6fr3l242O3yvu\n2t/drkVnSFT95H+VUZqtJdTFAifeX5ty1Ty+MvsmscdKOp3f/CUPI29Jo96orIq/+zf7VWo/Ejze\na6XO/an+r/8AZq4CG/mRWd+DN9xvvVN9s2M298SK67FX+7RSyvmi7FSzC8LncQ+Lv9WgdmX+Py3+\nZv8AZpj6g8is5mhXc/3ZG2yf73+1XLW+oC623M6eW7fK6t/7LWrpaxxS/wCk7SrfKka/eVa0/s3l\nMvr3MbC3C3s2yFFD/dVm/iqa3t7lZIvOuVcN8rwqn8NV7ezhXytjthX3Izf3q2rWzX7ULaZ2x95m\n2Vay/lOf657xd0exmkmj+dW2/Mi79rbv9qumtdJKsIXeNn+98r7lXdUOg6P+5aZ0jZF+42z5ttdh\npGnpax+TMjNFJtbdJ96pjg77DljOWPvGHH4bTy2eSH545fkbyvvf7LVch8PzCP8AfI3+q3bo/uq3\n92ui+xw7fJk+Z/NXymb+FauLovzO8KLv+b5mqo0OWJP1jmOUm026urhXm2od33pP7tUNY0na2+H5\nvMX733l3V111pHlxvNs2lZf4n3bv9qsfUrGGPZ5Ls+7czL/FVRwvu8wvrnvHA6xZ7Yc/ciZGV/4q\n5m8h8yH9xuG5NjMyf+PV3viCH92uxFXbubatcXqcbwhpHdjK33/3X3a1p4fsOpiOU4/WrfdIf3Ox\nF+VmZ/vf3a56+haPa7vuX5VdVrrNatd0zQ+Tvj2fPt+7urndQjdmSQ22759u7d/7LXTHA8sbKJhH\nES+Iy/ImZWfeyMzfer9B/wDgvLDLcfsZaRBEQN/j+0DZ9PsN9mvz+23P2j59p+T5o/7tfoH/AMF3\n2ZP2PdCKzFD/AMLDtOQM5/0C/wCK/njxhoex8R+E/OpiPyonmYyopZrg/KUv0Pw+1zT7aZpUL/de\nubvLNI9zptwtaWvak8mpSq74bf8AdWol/fJsyuG/8dr9R+LRH2Ufh94pwyuqq+xVVU+9/tVbZkvI\nGCSbnb+KoprVw37wsVb5dtQrII5ETY3y/cXdTiEokFwrxzbNilf71RtMm3Y6fKv3WqS6dJC2xP8A\nfqheTvHiRH+aq9wI3+EsyQvcLmNPu/daqlxC0a7MfN/G1JHePFh0PLfe+arUciTLv6t/dNZlyly6\nmdCxhk391r0TwbrWm+KtFm0HU/8AXeVtib+7XB3VjMi+cnK07R9VudDvlvIdymgekjS1TSbrRdQk\ns7lGXa/3m/iqtND5LB05Vkrrr6O28caONVh+W5jXazfdrlWV7WR4ZpGyv8LUcv2iYiWtxmPbPu/3\naz9Qj8uQun3f9qrV5Im5nRP+BVnzPukzv+WrjIqIwNu5opFXbS0zUKKQ/L8+KWgApu3b82aen3hS\nVPugFFNz92lPzfJmiIC0UUUfEAUjLnkUtFHKAVq+D1dtYTY+Kyq0/Ce/+1V2Jkr/AA1IpfCdpcMi\n2o+b/Wbvm/u1gaxJt3bOv9371bd5I6wNH91VrA8mbUtWgs4YWJklVflol/MYHqvwf01Lfw3Z216/\n/HxK0srL/DXq1rHubej7omf+7t2rWJ4R0CztbNPJ+RI7ddq7NrK235q6Kxh8uSOTzpGXZ86sn8Vc\ncqkebQ8uVaPtT3XwtEP+GYruIEuDoeo44xnJmr528E2L3Hii0m012z5u1tv/AKC1fRfg6OS9/Zru\nre2BDyaRqKRgHJzumApf2Tf2TfEPjTVlntvCt1dXUzK9nb28W35v+ekn+zX1+dUpVMPgbf8APqP5\nI+342rxo5blf/XiH5RPJP+CkPxB8T2/7MPw8+C+qQ3CQXXiKbUovMf5f3cfl/wDs1fPvhfENnDsh\nVVjT71fUv/BcPwOfhn8T/hf8N9Rv1utTXQ7q/wBS8l9yQtJIqqq/9818y6LGixokPzou3Yrferwu\nX3z5KnOTpQubtqYfL3zTMw+9upVmRoRCU+b/AHKu+GfDN/4k1S10HSoZri5urhY4reOLduZv4VrQ\n+JXwx8Z/CfxF/Y/i3Svs029tse5ZN3/Al/ipxlylfbPSv2U/3OqX80LRr/ou3dIvy/71e1LeXOrX\nDw6UnzRvteaZPkXdXjv7JOm22qXmow38MjpHbrLKv/Avlr1zxJ4qs7O4/srTYI43X7qx/eX/AHq8\nnHSpRq8x5daXLVsSI2n6Rq1rFLObi7kuVjJzlFywHyjtWd8c55bKws9RgkVXhSYgt0/gqpolvdza\n7aTXU6kG6jcNnP8AEOKr/tMXr2+naXaL92Z5t/0AT/GvawVST4Nxzl/NT/8ASon3eTvm8P8AMv8A\nHT/9LgeM3TeZFNNcws7N83l7/wCGuJ8aeKljjezs5tyN8zM38NbHijxM6q+lW020fdfbXiHxj8cx\nWDy+HtMmZrmT5biT+FV/u18VhcPPETsfE4ejOtPQ5n4meNn12+/s61uWe2h+Uf7VckuMcUrAt1NI\nq7a+no0404csT3Ix9nHlBVxyaWkY4HFCturX4SxaKKKcdgCiiimA6OPzJVQ/xUNE+1n2ZC/xU2lj\nkePcidGrMBKkhm2sod9q1HRV8qAkmkRm3p8tOtpzFKGUcCoakt433f7NQKUTvvBusPNavbTO21k/\nh/iqtql48eZtn3f7v3qxvDupJayb5n2/3aNY1x5pvucb6cvdMeU+qf8Agi947Hg7/gpn8MJfO2DV\nru60uf8A3ZoWVf8Ax6v3I17QUsfPsEh+aOVkZZvvfer+d/8A4J8eIX8Pftz/AAk1p5mZrfx9p/zL\n/tTKv/s1f0ieNLNF1bUBNCyt9qkb5m/2q8jHUeaRvTqcsTynxLo9ndK/kwyQsvytu+ZlrjNWhhjn\nmR03LH8u3yvvfL96vSfEnnLbtG8zKzfxf3f9la4jVLPdC01s+V8r5/M+9XiVqPL7rienRxXLueU+\nIrOaOR4fJ2rJ/wAtJPu1wuuWCbpd8Ox1+VV/h/3q9R8UWyTSOkfmJu++zfxVwmtWsMMc0zv86t95\nq4+WlL3Ue3hcRzHnmsWuY3y+77y/3WqhumEaPNZ8qq/L/E1b2qWs1ncfudr7fl+ZtytWVJawtMk3\nnMu3d8rf3qynT5XaMdD141PdKsMbztLDMkezbvbcvzf8Bardnb+YqP1Zfm+7UVvp/wBokea8RRIz\n/JtrWhV1s/3MOdvyvH/dq+WMpxM5S5feD+z3jkRJvu7d+6NvmVq+z/8AgnFbS23wQ1VZGyG8Vzsh\n2Y4+zWw/pXyJpsLssfyLn+9s+Wvsn9gGGCH4OaktsDsPiaYjI/6d7evy/wAbaXJ4f1H/ANPKf5s/\nPfESrz8PNf3o/mfiprXj6bT9Dn02a827ZWDRr91W/wBmvAfHGvXmrXzvNNld39+vX/2mLeHw/wCM\nrvTbO2WGKZ2ZFX/e+avKLfw7dahJve2Urv8A4q/o2mvaUomVSPs6sjk4bGa6k84Q/L/erodL0LbG\nty6bdrbq6C38M2Om7t7rvX+GszXNas7FWSGbB2fNWxn8Ql1qEOmrshCg/e21zmsa48jmCSbn+9vq\njqWuPdM7ojZ2/K1UW+b53+9/tUubmKjEttcJ5gRHz8vy1Zt/nUbE+f8AjaqcMbySBE6Vrabpcs21\n0Rs/x1HLMXwharMw37Pl+781aWmr5zfOjKu75amt9H8ja8zsd33t38TVoafZ7ZfndV21oRzcupd0\ne38tV3zf7SNWo2reSqu/3t/3tn8VZy3VtDHshTc1N/tCBS2/5f8Apnu+9/tUpBLmOg0/T5tVbZ99\n2+X/AIFXdaD4Ts9BsRNcuu/+633v+BV5/oPiSz09Vmmf5l+bar1p3XxEub6Bre3feG3Ntk/u1Mve\n1iHLKXKcL+0dqVtcX0Ftbzb9v8S/dauG0K2+Xf5O7d/DWn8TL651DXl+0/KFT7tQ6PGlurD5Sdn3\nd9I1+GGpNrV89rCsMLthk+da5q8mMzY2cf3qv6xfPNJ9/IX5aypHTdgJtp/D7o6cZCOdhwaRhkcU\nP9007cm3NOJoxKKKAdvbn+GpKHL8zfOcVL5in503Nt/vUxVRlz82aev/AI7QZkkaxtGr/Nn+Ordn\nv8zzjGxG/wC7VTcix79+T935avaYz8FNwb/aquUmRv6ary7d/wB3721Vqx4o1RIdJKYw235G3/NU\nmi253K7/ACrWN8RrtWkjto/l/wBmnFcpH2zk3+6a6P4e6b9q1ZZnTdt+7/s1ztdr8O7UWtjNfyf3\ndtM2qfCQ+MNU3ag0PnbxGu37/wB2pdB1jyVSFXXZ/ErVz+rN5l/JN82GlZql0+aSHcn3krMy+GB2\nl1bWGpWrNIin/erD1jwF5ys9smD/AAruqbTtVeT/AJYbPL/vfxV0+k30d0uDCpb+Bf7tVzGf96J5\nW1tf6XcMjhlZa6Hw14se1jCTfN823c1dP4m8L2GqWr39sq7v7v8AFXE3mi3mmt53ksqr92nL+aJf\ntOY9F0vWrbVF8l3yPvbV/vVJqGj741ubbaP4dtcBoesXNjMvzso313Hh/wAQQ6hiGZ/uvu3f3qcZ\ne6RMtaPb3LN++Hyr8u2uX8d2/wBl1SGZIWws9dlNb+TJ9ptnb5n+TbWD420+a+WK8uUb5fmZVqox\n/lFLmPv/APYlmm+Kfwr8I2dzZw2Y0nTrrTrqSzb95N95lWSsL/gnx4gs9L/aAsZteubiDTW1SaB7\nOz3K0m6Ty9vy/Mu2uz/4Jap4A8XfsX+OdE8Ow3U3ijSfFun37ySfL5On7W86Rf8A0GvMvh7eal4P\n/aW1628PXjWzWurtPZMrfN5LNu20RjzUZchyyjKVc+5/FP7RPiL/AII+/HHxJ4mb9muC5sPiF4Qu\nZ/Cr6zOIvs8kbMquy/xYZv8AgW6vzh+E8mpapoN9rGq+T9tvr+S6uo4V2xeZJI0jKv8Ad27q7/8A\n4K4eMvj78QPj74Y8cfGr4lanrq3HhqO08PrOFjitbNVVvLWNf9r+KuM+CNq83heRJtrL9oX5f9pV\n+9XPGjKnG51YSnGnVP0//wCCQCFf2aNbLYBbxxckqvRf9CsuK/NebSkWQ2sXzq33tqV+mH/BJCLy\nf2cNbGME+N7kkY6H7HZ1+ccivbyPNv3bd23b91v9mvxbwzjzeI/FH/Xyh+VU8DK5cubY7/FH/wBu\nOXms3aQ2bwr8sX3l+VaqLp6Kvmp9z+Jlrdvl2LsM3+sX5mVf/Hahk01IZmdORt2/7NfvX2bM6aku\nareJgrawt8iJt/idm/hr65/4Ir2cdv8AtZeIHWRST8PbsYX/AK/rCvli4j+V5n3b2ZVVv9mvq/8A\n4IuRFP2pPELhwyv4EvCpC/8AT9Y1+d+Lf/Jtsz/69P8ANHl5rLmy6o/I8k/4Kw2+/wDbx8eHZlT/\nAGWXX+9/xK7Svma8sUlmTZCpb5dq7a+s/wDgqHo0lz+3T45uFmChv7MOD3xploK+fLjwzCzK81sy\nf3Wr1fD+PNwHlN/+gah/6aidGXVbYGkv7sfyR59JZ+ZC++Ntzf6r+HbVW403ayDYuf41ru77wtNb\njem10+ZUVqx7rQ4WCbE+8/z7q+t9z4T0qcve+I5ZreZcpCjfM33f7tPXT33J8ny/xfN/F/u1tTaO\n+7yfO2rv+Xy/uqtRLprtMYX27925f9quWUT0sPU93lM2PT32b3Xb833Wf5qmWyeNdi7S33ttaUMK\nRtsSFSv96nQQvGyo6Ns/vMtYyiehT3MtbF5NzQow+T7v+1V+1sXmVEhCr/D838VSwLHIWSGFvmb7\nzJW5pelpKpe25P3fmqJfyjkTaFpPl2+9/u/3dld34Z8LmT959mjYf+PVR8M6Huj8mdGHmJt3bdzb\nf9mvV/BvhdDl/J8uLYqPHGnzNWlPkictT3iDQfBrraxQmFmEi7t237tdboPgd2V/MtmH8PmeV96u\nm0PwrDZwtNclvmZdkbfw11lnpNtaqHeHEUjbNuzdtrOVb7Jj7CBwX/Cv/MVrY20m+T5opI/m+asj\nXPA9suUhTd/F/u17Ja6TZzK3z71V9qbf71UNQ8F2CwvCls2N3zf3aIy5viFKmfN+oWf2eMGa2bbs\n+6tcvrli6xujw4K/drvNc015pGgSHKq7NtX+7XHatborbIU5ZW27n/hr9F+r+6fKU63LI5Zi7XCp\nDMr+Z8u1v4dtPWGaFVgdGETfM+1/mb5qdcK8kjwlGYL99tn96pLeGFdltbWzbY12/vK6KeHtC8Tb\n23tPdHSWaKpdHZmaX7u77tOW1IzN827Z8vl/NSWilpPubhu2/K/3aey2y3ZjheQqvy7vu7a6KOHt\n9k55VvcLOk2cLSecZmfzH3ba6HSZEWZ/nX7qlfk+ZVrmrNbmRh8+4fxbkrotNaa4TeiK+1/mZfla\nqlg5R+Mn6xze6dDpce24/fOu1l+Vdn8NdDp8aNcRTfaWY7fLfc1YWlsiMjo/m/J+9WT5a6jw7GV2\nQz20af8AAqwqUYRNIy9w6/wfZvFD9mk2na7Lu/vL/vV2GmWME0KI6SbI/wDVLJXK+GWhh/gk2yRf\nNGv3q7PS5NsKPNuKrtX5n+b/AIFXDUjyyvH4S4yjKNi41ik24JDG7L/E396pFtXkjEPR9/zstPSR\nPtE0bvGyfw/w7WpyMlxbpeTPIx2bN2/b8tLl7ESlylK+tbO1k+eHzfL+X73ytWJrVgjNPN8pfZ8q\nr96uokjhWNvJRX2rt2yJXPalJ5kbSQJkw/cVYvmVquMfsyFzRfvHCa9a201m6JGyySbkVW+X/wDZ\nrj9Yuvsao+z5o9qvGq7vmrvNctY2kdHfD/Myqy/NurkNStPsTI7urJt+6rf99V1U6Y+b7RxusPDe\nySzO+X835l+6zVyOpRwNIz7JIy27fu/hrttUj8n5EkmL/wB1v7tcrqFm94vnfZlVWb/WK/8A47Xo\nYWPxKRnze+Y7w2SyG5fd/Cv+9/tV98/8F4YfP/Y/0CPufiJa7TnGD/Z+oYr4Slh3TH5GRWTbtavv\nH/gu0hH7H2g3hiDra/EaxmfJxhRaXoJz261/NvjhBf8AESOEIx/5+Yn8qBw1Jv8AtbC83Rv9D8If\nEFr9j1SV3f5llbfT7NkDb0Rju+5W98ZvD02n+IpryGFvJkffF/u1zeltuZtjt/u193H+8ff/ABFq\naQ7f7q/xN/drPuv4kwv+8r1ZvJkRTv3L/tVQmk85j/tf+PU/hkEoxI5G80LsRVX/AGao3CiTbv4Z\nqtzfdVA+B/s1WZyJNmxmp8vulRKkv+sKULNNH/Hg1cbTflaR+lVXt2UHI+760uY05oyLtjqzySiG\nb5k/3KuXmmw3f75P7n9ysNT5Yzmuq8DPZ6kjafc7fM2/IzUSIlH+UzvD+tXOg6hs37o2f5/9qtjV\no7PUo/t+m7ct/wAs6yPEWi/Zboom0bf4v71ZttqFzp/COy/7S1PLzFe8O1BXUHfx/s1TX5fvVZvr\nn7VL5u/NVvv+2Kr+6VERW2nNPDbuab5fvSqu2iJQtFFFOWwBRRSK26j3AFoZd2KKKYCszty9JRSK\n29sVmAKu2loooAK2PBa/8TRZo/vLWMrZ4NbXg2DdcPN2WrjsKXwm/qzOsLPJ0b+7Wv8AAPwjN4u+\nIFtsT91as07Mzfd21z3iCf8Ad7E/ir7T/wCCQ/7Gfjz9oSTWdS8MaDNc7mW3ik8j/VqvzMzVPs5V\nPcR5+KqexocxgaXoN5NeLbQ23DfxN8tekfCn9nXxJ8TPElh4S8K6bdaxqWof8een6bF5kjSfw7v7\ntfdfhH/gkm+l+KdMudZubeOKNV/tubVIv3div+6v3mb+7XbjTfhv8LfjBo/wh/Z4mbRJtFuo2vdU\nt7PZLNcM3y/N/d2/w1rRwcKWsz5320qkdD5i8Cfs2+I/gf8AELQv2cfivp7QX8Oq2cOsWkUokeMX\njpOUz0LBJ8fUV9y+E/h7pXw18Oy2fhXQZNCtVi/4+r75rmRf95a8D/aEvryP/gooNQl1N9YuI/FW\niM9wMBrmRYrTIHbqMCvePiddeM9ek+zXszQW0m5Xs7WJpZd3+033a+uzhOOFwqiv+Xa/JH6FxxT5\nsDlDf/QPD8on42/8FuNW/tL9vrTtB+0ySx6X4Os2iZm3fNIzM1eEafauree//LT+9Xp3/BTizdv+\nCjPifSrx5Fex0y0ifzm3Nu8vd/7NXnFnD50gR7lV8tq+Sl8R4EY/uos9w/ZL077DrOp+MEmjSe1s\nmgt/Ofay+Yv7yRf9pVqD9o+O21bwnYaqmpRn7LOvlKsu+Ty923c397dXN/B/4saJ8NdWmufHlg17\npMibbiO33b1+X5WX+9/u1f8A2jfj14Y+K11plh4G0eS10uzsIUnkayWL7RIv3dq/eVVqJe9UsZR5\n/iNb9mu4177Pd2empI/mJtaSP/e/9Br1xtKs9J82/mRWmZN26T+KvKv2W7h7ZdRntnVf3S/N5v8A\ne/hr0m4uEmkffu8lYv3u7+Gvnszi/rN4nm1ufmLelk3WuWd7sQxG6Tbt6k7xgmuU/bH1WXT4NAgh\ngZjOLv5gcbceT/jVQ/EmG28e6N4f00yI9xrFqJXC5VlaZVIz9Kqft7a/Y+G9E0HU72RRtW8EaN/E\nf3FfR5Wva8G4+P8Aep/+lRPvcjUpeH+ZLrz0/wD0qB80fE7xtb+CbCWOO8zfzf6iNfm+9/FXhN3e\nXGoXL3lzKzySNlmarnizxLd+JdXm1G5kY7m/dq38K1meZ7Vw4PDRw8PM8HD0fYwHBt3NFIq7aWuw\n6AoooqeYAoooqgChjt60UjLuoAWiiigAoooqbTAX7rVLGdqM7P8A/ZUs0KLapMH+b+7TF+b7/wB3\n71HKZj1km++DhqFZ5GO98mmSNlvkp6bBx0qQO7/Zk1afQ/2iPAWr2svlvb+N9LkWRv8Ar6jr+oX4\nhQpca9e+TZqqLcM0Tb/9ZX8rfw+1BtK8b6NqqNh7PWbWVW2/3Zlav6nPGGoJcXVvf7F23WnWs/8A\nvM1vG1ceKp83LIiUuX3jgvEE26NkkTcI2+ba/wB2uL8ULDb7rXfHN8vy/wCzXZa5cTKsuyFZfMZv\nlj+XbXE+IvJ/5bQqn9xl/hrza1Hm0N6dSUpHA65HM19vHyvHF/wFq4XW7d/Md96puX96rP8AMrV3\n/iaZGZ/JRdjfL5i1wniDekK+S/nMyssqt/dX+KvNnSjRlc9jD1JROD1CGFfNeabZEr/dasmZZpFT\n5FV1l27Wf71bOqXkMP8AqX2bn3J/FtrJZom+R3ZHZ/vLFUex5pc3MepTxHuBZwzXkKTJCodU3S+T\n92rmn2s27yfMk+Z9m3b97dRp9nbJDtf5F+9u/wBqrtrvt7hXSZnT73kr8v8AwJqVOny1dB1KnLHm\nLenxpa2c1nDc48t/kZn3Mrf3Vr7F/YNR0+EGoiR8k+I5T9P9Ht+K+QLOGZ4403xh5tzPGq7vl/hr\n69/YJXZ8HdQTOSviOYNxjkW9uOnavyrxza/1CqJf8/Kf5s+C46qOeQyb/mifh1+0RqFtr/xSu0d5\nH2vtT+L5q4q4utN0G18m5dR/tL81W/GWvPda/c6lN/rZpWavN/El9PdXDfvGC72r+iYR/dRR01Je\n0qylIveJvG73RlQv/B8rL/FXHXWoTXUu+Sbc23bU7Wt5cMvlo3/fNa2j+BdSvmREtmfd/FtqoxuT\nGRzkFvNJ9yFmrX0vwteXTJ+5b5n+7sr0nwP8A9WvF+03Nq2z+LatdlceB9A8E6atzqsCxRL8qs33\nq05YU5e8Z+09/wB08x0P4b3Jj86/RlT+P5f/AGWtaS10Pw/ZfcXez/I38W2q3i74rabbzNb6JC2F\n+Xds+9XFy61rGsTec/X/AGqiUuY096Wpualr0MknnJ1qhJr1z5fyFg33dq0xbW1hBmv3Zdv96trw\nfceHrxXMNg0u1PvSfeb/AHanm5SPfMBbzxDcbtkMg2/3k+9UDQeJ92/7HIv+01eoWOraHZsAmnR7\nF++s1X77V/CV9CpfR1R/vfu/us1Iv3vsnktnda2v/HzbN/e+atWz1p5lG99vyfJt/hrvFtvAd8T5\nKXEQ/wBpN1VrzwHol5bG50y5xt/h27a0+H4SJHmfij/iaa4JvLbCr/31TLqR4YQflX+9/e21d1jZ\nHrT+T0hfZurE1bUEaZxvb+792o+37poZt1L5khG9iFeoKXrk0lP4jaIcEUirjgUKu2nJ94VQSBl2\n7qYo2rvIqT7zFKao29KA5h0bfMESpLjfHuTrTaeruqbB83+9QSPhbzFbs396tLSYEk2/Puas23Vw\nz70zWxoMaGZE/vf3qCZHUW6TR263KTbQqbd23dXC+KdTfVNUeffuC/Lurtdd1BNL0Nn+VDs+Rd1e\ndF2cl267uaiPOOAsKmWUIn8TV6Rpdqmm+G4kCf675q4DRLb7Rfon+1Xc6tqCf6Npse1PLRW3U/tB\nUl9kydU0r5vOk4Zaymj8tUKbR8235q61ZLa8t96Iz7Wb7yVjalYow/1ON33KfxQMfh94g0+4Ytsf\nr96tmzmeNlcfK33l2vWJHDNbbd6f+P7q1bP5m376I7D5jo7K++QI77tq/wBypNQ0m21CEuiK52/d\nrHtZHXc5f/c+etWzuvLK/d+WtTLlkcnq3hu4sZj95N3zVJpd2beRE+ZStd/qGl22tWXyQru/hZa4\n/WNDezm2Q7i38W1Ky5UaR/lZ1tjq32jS4kd9/wAv3V/hqDWl+1W/91GrD8N332VhC+3av3K39QkS\n4s3dHUfxKtVGX8xnUjOR9if8EWdW1XVPiN4z+CFheeUPGHgi8giaP5WaSP5lWrf/AAhqL4p/4Sqz\nSNJrVvKut27zWZW2t83/AAGvDf8AgnH8Vtb+EP7W3gXxVZzR25bXo7O6aSXav2eb923/AKFXv/xg\nk174L/tReNPh7co0ljp+tzeVDJ8q7ZG8xW3fxfe+9W1GPNKSOWp7soM5v/gplJpXiZfAPiHTLyaa\nbT/D6xXCyS7tsjSN/wB81zH7PsLr4G+0zQ+an2j5l2fdar/7QVunijRfO8+PyVg3RQxpuZW/u0vw\nH002fwrs3udyPJLI7r/EvzfdauepFxid1GMvan6Yf8EnGdv2ddaLxbD/AMJrc8Zz/wAulnX5xaoy\nQqmybEX3mX+61fo9/wAEnmjk/Z11qSLhW8bXJC5zt/0S04r8y9c1BIGkTztvz7d38LNX4l4Yr/jY\n3FLf/Pyh+VU+YwMms3x1v5o/+3FW6unVvOm2/M+3dUUl5t2pC6jb99t1UZtQRnOxNqfe+akMiNJs\n3/e+bdX70dXNOMveLyxQ3jeSj/K3zO3/AMTX1v8A8EbLVbf9pbW9mNo8BXIXLZb/AI/bKvku1byv\nnTc6K235vvbdtfXH/BHI7/2ltblSAon/AAgl0Blcf8vtlX5z4t6eG2Z/9e3+aPPzX/kXVPQ4b/gp\ncxH7a3jQpbCVhJpvX+H/AIllrXhF1HbNmN0Ztqfe/hr3z/gpNC3/AA2v41kjdw5bTflC8Ff7Nta8\nRs4YZ8TIm9fvbV/u17Hh9L/jBMq/7BqH/pqBtgnFYGkv7sfyRkXGn+c6pBCoP3/Mb/x6qOoaLbNj\nfbLu+7XRyW8LZcvN+7dtjSJ/C1KNNeSAo9t95dy7n+avq5S5djpj7vvHBXWgujfc3bn+ZqpSaTCq\n75o2PlvtTbXZalofkyJs+VG+Xy93zVkXFn5e5IYWST7v+zWFSM+Y9rB1OaJzv9nwxt58O4vv27V/\nvVN9heXdvRnH3dy/dWtBrG5+V3di/wB3cvy7lpiWkMaPvG5/vblfbWEonrUY+8VLOx8mTYjthf4p\nF/1ldH4ds7ZcJHD8v3l+T71Y9vbozZ2b1/2v9quo0CzhW4E25sKq7/8A7GsJfGbyjGO0TvfAunor\nLNHC29fldZE/h/2a9i8J+H7O4t4X+9u/iX71eceB9NeRVuftLLuVVRZP4f8A9qvZvBdnNJGiCCNl\n2ru/vK1ZyqGNSMOpsWemTQrsdPM27VSPbWxHZ7pE85/nklbzWX7rbaks1e0Vpprb7ybUVn+ZasRw\n3Kr+5EcZk+40kX3f71c0ZSlLmOeXu7iW9nDJ5Uz/ACIzbkj+6zNU02nzXUchWHa0P3V/iZf4atxr\n+5eaBIwu/Zt2/eq1ZrtZnW2kRdi/d+6y1tGpymfLynyJ4gb7Qd/3trr919qt/vVyeuQ7ZHmfl97f\nKtb+qahmzZEdVC/cb726uX1SREy/k8Ltby/4v96v2Gn72h8NHlUbsxZPOVtibS6/eZvvLT4bdLeF\n3eFvm+b79X49Nma9d/JXLbf3lW7fw55jFJ0kA/vfxVqpUoijzxMaRWg7xpFt+8v8VSw281xtR/7n\nzyRp8rV0LeFXmhTybbcuxV2tTZPDM0O1GhkXdu+Xf97+KtvaUvskL4jAhjeOQwpu+X7+7+GtvS5P\nMVZsKPmZdtRS6W9vHvlhmZ1fd9yraWr2sg85G/ePt+WorYiMoijH3/dNvTbhGjRHjZgz/wC7urp9\nHvvtCoj7tkf93+H/AGa5K1X7OzI6NsWXdFuf7vy1saTqCRK0Pk7W2blb+81cPtoG3LLqejeF79Fu\nETYqy/xL/s112n6xDC0sKfM7SqssK/w15Zp+teZCJp/mf7rf7X/Aq27HxVNH87yfe+Xdu/vVy1Im\nkfM9IsdYtplCJCvyv87Kn8X+1VptUe8j3wbd6vt+avPbfxE/l/uXjzH/ABN/FV6PxRNI2+bayt8u\n6P8AhaspS5ZGsY8x2E2vpt+T78f3mb5V/wB2sfVNXht5HkeTZI3+t8t6xLjxVM8zvM+xY/7sX/oV\nYGta958g3vJs+98rVpTj73NKRnKMY+6WdXvry6ka5QMkTKyvJsrjb7UEuJprO5Rv9j5P4v8AZqbW\nNQuWk8yGaZArL8slULjUt0MyJDh2bdK0f8S/7NddGUIx94mpy+6ZWqedcMdiSLMsW1FasDUoZnIh\nm4ZX/iT5f/2q3bryXZ/K8yLb8y/Pu3LWTfQeXMIfL4+VkZX3R1rHFQjqXKjORmQw/u28542Gxvu/\neavvX/guDafbf2MYIQ2G/wCEriZG3Ywwsb05r4UkW2t2O/bhX27dvzbq+5/+C5Mpi/Yut22gg+L4\nA2fT7HeV/OnjTWjLxN4P8qmJ/wDSaJ51am1mWEXm/wBD8cfCtx4e+KXhNPDHiG8WHVbVfkmm/wCW\ni15543+GviHwHq/2e/tpljaX5WVPlZf71Zuqahqeh6p9s00tEd38Ndz4a/aIh1C1/sn4haPDqKSI\no8xl+ZVWvuVroffcvLscNNbw3UJ2Rszr83zViTL++KBa9ks/CHwl8VXLT+HvFn2B5G+ezuPuqv8A\nvVjeLvgT4htYzeaPDHeorbd1rKrN/wB81pH+6Tzcx5ezOvyb8bqY29f9T/49/FV7WPC+vaTN/pmj\n3Cbk3J5kDLtrN2vHHl/vf7S0vsm5o2V5CrL9pqaSTR7pikkyj5du6suyilup1hCfM38VXb3wdqUC\n70jZtoy7VPIT7oy60O2eNvsdyp/2V/iqnptxPpmoJMCyMrYzUctrqWmtvdJE/utTJbiabh33VUij\noPElx5jQ36Pu8xPnZq56aXzF8tK07e5i1W0FlO21l+43+1WXNC8EjQvwy1MRxiNpjNuOacrZ4NJ5\nfvQWOoLbeaKRl3VoAtFIxwOKRG7H8KAHUUUUvhAKV/vGkBxyKA27ml8RMQooop/bKCiiilygFb3g\n04Wd/wC8lYNb3huMLp7unX/fqZES+AsT77i+CJCx+dfl/ir+iT/ggH4T8MfBP9kUX/i3Smh0/wDt\nS3fVNYjt90jXE3zeS3+6tfhF+x38NLP4xftH+E/AGpKv2e+16FrxpP8AVrCsitJu/wBnbX9Zfwy/\nZA+Hv7Mnw813wV4Zvo7rwrrUyapb6bcxL/o9x5Kr97+7W0aMqkXyytI8PMK8oyjG3ungX7btr8Q/\nEvj9fEP7NfjCKHwWtqtxq9vc3CweTdL/ABLu+ZlZak+HOg/staD4P0r456br3/CQ+J5v9HvLhn8y\nOO42/M1cB/wUQ/ZJ+NmreDR8S/2dbq4vkum+z+INDhl2yRqq/K0S/wAVeb/sb+JI9U8O6j8JfEkM\n2m301gtxFb30HlLHcR/LIu3725lrtoU50oxT948ycqcqnwnI/GvxPY+If2+IfE8ZQ28nibRWPkDj\nasdqDj/vk19Q614ssFje2025a3Dfw7d27a33Wr4z8TWlzB+1HZ2ioolGv6aqiIcZ/c4xX1PfQpod\nul5f3PlPu3utw+3aq172fSlHD4X/AK9r8kfo/Gdv7Pyj/sHh/wCkxPw5/wCCgOvTeKP+CjfxR1S8\nvPPaPVFt9y/w7Y1XbXJaTGk21H+6q7v+BUv7QeuJ4o/bB+KPjCGVZEuPFt0qyR/d2q21dtN09vlW\nZOG2fNtr5SMeY+bn8EYkt4oZhD8p+f738NQq3/LZ0+b7qL93b/tVMsyN+5/vN87NTZpPl3vwu771\nHxES/dx909Z/Z7Wzt4b7e672iX5pJdu2un8WeKHhtXhtnwv/AC1kV/vVw3wfa5Nrcw2CSO7Ku2Pb\nu3Nu+7Wr4yjTSbiT+3nWLy03eW1fOZpKftzzMRH95ci8HzuvxK0LUtXvPMll1e0jjjTsGmQKW/Os\nX/grPqM9rY+BbGNsLO+pl/fb9l/xrnvD/jKe8+MPhG6u5VSN/FmnW1uinG/dcxjp+NbP/BW7p8P/\nAPuK/wDtnX2PD9NrhXGc/WUPzifpPDsF/qNj2+sqf/pUT41oopGbHAryz5sFXHJpaKKqIAG3c0Ui\nrtpaoAooooAXe3rSUUitupfEA7an8FAQyNxSVc0nT5tSm8mHr96nH3pkylyleOB2bb/FW/4B+Fnj\nz4neKLPwV8PfDGoazq99LttdP021aWWRv9lVpNN0Gb+1orDcu6R1+Zlr6C8a/Bj46/srfs9+BP2m\nvCGq/wBjxfEfU9QsdE1DTbpo76NbXasrLt+ZVbd96qqcsYnP7SUp8sT518XeENb8G376Tr1s8U0M\nrRSq38MittZf95ay12eXX1r4f8Hx+J/+CWfxD+InxT1WNE0X4g6XZ/DzzoFae8vZvMa9VZPvMqx7\nWb73zV8ksyK2/wDhrnjLmibRYwlHbeBgVIuxmXZ96olHzY9KmhaHf8n8NV6FS3LmkTvFfR3ScPDL\nG6/7yyLX9Sd1qFzeeGdBvLz5pG8Pae3lqn3la1jr+Wyy2SuhY/elj/8AQlr+nW+1SGz8H6DZ/M80\nnhfTf9YjbVjW1j/irnxHwnLiPhMvxFcQq2yZ2i2/daP5fmrh/El0kau6Iyy/d3NW1rmsPwnkq7K2\n5tvzba4/XNQdVDzzeYvzb2Zf71cfs+b3hwlKxz2uXiR3Dvc2yqV+VW3/AHa4XxJeorTJbPNH5m39\n596un8TXU0PyT7UXZ/rG+b71cRrk3k3EiO+futFt+6rV5+Ij7x6mHqcpy+pzJJI7o6l/P3bWT7q1\nQaaNWbKSEblaX5PljX/Zq5r0z/8ALFN/z7tyfLuZqzWjS1i33O4rGu51WX7rf+zVzf4j06crw0Ld\nmr9Hm2bflSSR9zba1tP3zW8bzI2Zk+f+7Iv+9WJazFtijbiT5vMVdrf8CrQs7h4/v+dGrJ8ix7WV\nvmrSNOOhp7Q2tNW5gx5O1fLT7y/wr/dr6+/YFlM3wc1FiDx4kmGW6n/R7fmvji1vn+ztDDuMi7l3\nN/FX2J/wT/cP8H9VAn8zHiiYE4xj/Rrbivx3xyV+Aqkv+nlP82fFccT5sjl/iifz665J9qummhlZ\n/wDa/vVQt/DP9pTBz1Z6i1HUHhVHj/3a0/CPi7TbOQfbE3Df91q/o2Ox1S55HVeA/gimsSo/k/Ir\nfMzJt3V7R4R+EPhLR4VudTeP7yovz7WX/arzOz+MltpMKpYeX5a/d2/erE8VfHbUplk8m53bk/v0\n/be77kTP2c5S5j1P4tfGfwr8N9HaHRzGbzyGVD8tfK/jr4qeJfF9881/eN5e75V3UzxFq2q+KtQe\n5mmZ9tU4/DIkAd/u/wB2lL3o8zNqcY0/slCGOS4k3/MXX7tbiqljZpMz8f8AoLVBHYJaLs2fMv8A\nD/DUVx9svsIn3fuutHKg8zP1TVrjUr7Z82zf8tdJ4fvI9NtRl13fe3VnWehpbt50yfN91VrUt7Oz\n2qjvn/Zb7tHKF/esWRfXl8zJ5bKrff8A9qug0fQblrVHdGUfeTdVfwnp9neTN9mtvMdWXYq/dWrv\ni6GG6vDDc6rN9xVlt4W27f8AZqvcJ5ubYtXEnh7R499/qtuk0b7vLV6yfFHxQ0qx09bDw3ua4kT9\n6zJ8qt/s1zPjTwK8diuq6V5jIq/OrPuZa5fT96qyO7LWZUf5jRmuttu7o+5m+Z2/2qwrqR5Zi71c\nvrjb8joy7qziTvI96DWMQpvyL706ir5UaBRRRTAXY3pQvQ/Shm3UKdppS2I5WPhXd87vUkap5lRq\nzx/wblp0Ik3btnNLlJkWbeOZn+T/AL5/vV0Wix7V/eJlV/2KxtNh23CunNdRp6pp9u91/CqfeojL\nlM5S5jE8fagk0cVgsO3+LdXNVb1zUJtQ1KSaR9wX5UqpVG8fdibfgS1abWUcJkr83y1reIJBNqjz\nbNjL/D/dqr4GWO3t7i7CfOq/J/vVauF3RtM77i33/wC7TjHnMpS94fpd99nXY/T7y1dWK2vI22Bt\nuysXc6xj5tn+01aml3CNthdG+X+Kj4SPiKtxY/PvdP8Avmm2s3kTKj9P9qtjyd6tI+7/AIDVKSxQ\nSB0+dl+8tTH+YktW6pcSM8LqP7+6pBdTRtvd9rbqr2cscVxsdKuXEaXH93a38W37tMDb0HWiu37y\n/wALbv4qv32npqkLI/3vvfL92uTt5JrdWeFN237i7vvV02h326Mb0yn/ALNRLm59TMwLjT/sN15J\nT5d3zKv3q0GYzWZh8lfmT+781aupWMN4rOiKh3bV/vVkzRvYfPKnP+1QaFn4f+Krnwv4usdYs/8A\nj5sb+G5t/wDejZWr9QP2lvhjonxs/aN0X4kImy08aeBbHUoLj7Uqp53k7WVv91lr8mtUvIIboO6f\numb52av0V+C3ijXvif8Asi/C7xnYXjS3fhHXptEuJJm/5Y7d0a7f7tdOCl/tK8znxUP3Vzz610ua\nSa88LzJHL5cskXmbPvbW+8tdVN4dm8I+HbSH7GsMLRbvJk/iatm88Pwt4iv7OZ7NL+a6a4RVVl3K\n38K1ufFTWofF37POg39t4Vayl8L3k1lq1x5v/H00jfKzf7q1eMp8tWRWHqc1L4j7C/4JJzLN+zjr\nbBQP+K2uQcf9ednX5VaxrXlzOkke9P7zf3q/UX/gjlNPP+zV4ieZcY+IF0EG7Py/YrHFfkveX3+k\nDfz/ALzV+EeGK5vEfin/AK+UPyqnzWAnKOaY3l7x/wDbi2dQ3bvOK/N96rtndfvhGEZV+7urnG1B\nFkff5bo395Kv2Nx5a7C/3v7tfu3+E9OUTqNPvkkjaEcf7X96vsX/AII33DXP7TOtSM7H/igbrALZ\nH/H7ZV8VWd8nyQ/K/wA3zLX2Z/wRjuBcftP66xVFI8AXQ2o2f+X2xr858W/+TcZn/wBen+aPLzVW\ny6o/I5H/AIKWiFP23vGUx8wsBp+AHwmf7NteteHRzeXMqI+wsrLuX7u2vaf+CmF15X7cfjhnQ7I1\n03cD0b/iWWteHxXTxyfvnVyr7kVvlavZ8P8A/kg8p/7BqH/pqBtgpR+o0v8ADH8kX5ML8lq7Oiou\n7d/eq3uSP544WbdFt+b7y1mw3KSR70TLR7mX+HbU8dxcparvf/a+b7yr/dr6/lOjl5vhG6oqRxs6\nPxt2/NWPdMkNu2y23/Lu3Rv93dWjeXCLbyo6Nj5mbzP/AGWse4uH8pAjxlvu7m/irnqcx6WDl+8K\nl5IJG2JaqjfdSqscf+kZmhZ/m2pU100Mkyu/z7fl3L8u6q00m6TyX2/f3Mq/xLXHKUY+6fQU9h8M\njzM6I7ZV9u2tvw1I6zeTcuqqv3FZ/vVz6tBNJsT5dqbqvaTqD2rq77W2v/c3fLWNRe77pvzcp7T4\nHunjgV7yaNnV1+7/ABL/ALVe3/D+8doYXmdXdfn8xfm3V84+CtaSM/ZkmVWj/ib+LdXsXgLxAlvL\nbwvMxST5vlb5VWueXPLUmXwnr+m3j3Vx9mubbcPvfaFSttredk/1LOV+aJm/9mrj/DurabcbHhuW\n3LLsRt/+d1dHpOpQqwR7ba/mtukb5d1Yy5vdfKcXumjZbNx86T/f/wBmkjjkhmZ0myPuRR/w024u\nHmhVbb5fvfNVDUtbe1h8l5o2k27tv3VrT2kdwPinUr50ZrZHXaz/ADs38NItu99cGaZ22xrulZdr\nbmrDGpXNwvyXKlWf7v8AEzV0Hh23kUpcvD919z+W3mKrV+qxxXunyVPC+7c1dH0fc2Niuu1flauk\n0/w7Gqpcuke5V+7TNHsknmV158tPnkk+XdXT6bY7Yw72ylP+en/j1ctbHSlHSR2SwvwmcvhO2uNj\nx2zBI/m/4FS3HgtFy9ydu1/ljb7ys392u00fT5poRM+5hIu5G+7/AOO0TafbRloQVUfKit977v3t\n1cUswlGV+YxlhIxPO7zQ4Y40mJYmbcnzfeh/3qzL3SUa4H2PdGrfdZn3fw13+o6W7SNbQ+YE27lZ\nl+Vt1YmpaX9jy8Ntimsw9pvImOFlDY5ZXht7hEdFcL/e+8zUR3W3zHfzFT/ZSrd1ZzWsk2x/nml3\nIzf3azrya2kgPk/cVdrrt+9SliveNPqfcvWOtPp+N+7f919z/wANWbPxMlvI+ybcP7rVyVxcpb26\n2qbdsf8AdRvl/wB2oG1p1jSJ/k3fLuVK0ljubYyhhe53reLkmjdw67V2/LTG8XQWbEJub59rNv8A\n4q4Btc8qNn3su1PkZqzZPFm2NbnfJsmXcytVfXOcpYeUT0+bxl5cOyzvJvN+78zfe/2az7zxJbTM\nZkmZjJ/ra8yuPGybW/fMflb5V/i2/wANXrHxBc3EIeSeMMy/db+Kn9YiqVmKWHnGXunbLqUMzNM9\nzJtVfm+b7y1HPqPzD52fzE27Vf7tctY6w6rvtpmbzNyMrJ/6DWjb3KbldPLYb1X5flZm2/xVEsZy\nx5UXHDXleZo7nkjTzvM/uszfN5dI2+RmTezbU+X5f4qhs2hk23KTf3kb5/lqyykSI/y7Y4tu5fu1\nnUxnKdEcPKRUuI4XbeifL8v3m3fNX2n/AMF5lU/sLGR4ywj8VQtgH/pyvK+Mb6PzI0gh+ZmRv3i/\ndr7X/wCC6Nobv9h2RSoKx+JYpHXuQLO8PHvX4B4sYj23iPwlrtUxH5UTxcfQVPN8H5yl+h+EmrR+\ndYr8zNuRWRWX/ZrlriF7W43p/ertdaX7HpsU3mNtZfl3f7tcNqFx50pP8W6v1b3T7KPxBDqk0Lq6\nzN8tdL4f+I+v6fMjw6lJuX7jbq5BULNtq1p9u7NsfcB/eqSuWB6hZ/FzxXNEIbnUmmi2N+7uF8zb\n/wB9UXHibR9QZ/7Y0GxuVaL5NsW3/wBBrhPOmjVkR+Vq1b3T/Kyc7v7v8NVGXLIylsb8mk+Br799\nbaJNb7U3fu5/u1dhuLaSza1h3Ou3b8yfNWJazO4+5tVvmbbWnpczrPvnmbC/3Vq4ilL+Uh1zwreX\nUMWxFaPZ91l+81cfq3gzVdPlO22k2r/d+bbXrWrLba5ouz5kfb8jK+1lrzvVtS8SeHZpLWab93/e\nX+L/AHqn4RxlPmOUKzW7fPwy0+4uvPGyZPmXvW1/wk1hcnZqWlRt/tL96s7WmsAwa2Tll/h/ho5o\nm3xFCiiioLG+X70qrtpaKr4QCiiinHYAooopgFFFFABRRRQAUUUUuVAKq7u9b2mTTW+kl027awVO\nG+f5q6CyjkQRpDtxtXg0SiY1T6L/AOCd+nzab4s1Px4kK/aY7P7LYXDfehkZtzN/3ytf1DfDj40w\n/HH9nfwr8R9D1hZbbVvCtvFcQ+V80c0caxyf+PV/OP4F+Gt/+zvp/hvwTqr7dQvNIh1a/haLa0P2\nhdyr/wB87a/Zf/gh/wDFKHx/8G/F/wAHbzVVkuPC91b6ja2rfNttZv8AWMrf738NdGHlyzPnsVUl\nUlofVkd8/g3ULLR7+88ma+sGngk3/wCsaP8Au14t408D6b40+K0HiiHw9CHjWQSyW8S+a0n96u2/\nbAvNS0fxH4O1vSraR4rWWaB5FX7qyLXEfFr4veDP2cfAL+PPHPiqPS7toma1t1TdPeSbflWFf71d\ntSpCj7xx04zlofDHxdv7Lwt+17Lqt9OsVvp3iKwmnd8ARoghZs9hgA/lXmv7WH7XnjD42XVz4b8E\n3rWuhb2+1XH3ZLj5W/1f91aj+I3j4/E/VNY+IN1p8lsNTaaZoJm+dRgj5j6kDJ+teHePPG1hpeiz\n+RtlZlkbaq/N8qt8zVXFmKlHD4Jxejpp/gj9L4zjJ5flK/6h4flE+MfCljNeeINYuXDFW1eb+P73\nzV2Nu3kr5PzfL/DXG/DeN76zmmmfa81/I+5v9pmrs/JTcmE3Oq/Jz8q/71eRS+A+XfUfNC8kO/Yu\nJPl+ao22L8jwq4+7/u1NcHdD8n/AttUmj27/ADkZlb7u2r+ID1/4A+KPDfgrw34h8Q+IYY5biP7O\nulqzfN5m7c22uM+JXjK88Xaxc+IdSufLT5nePd8qrVDQJENiyPt2L/d/9mrzD4+/Eh7iY+EtKmUL\n/wAvTR/+g14lajKti7HPHD+2q/3Q+HXjR/Ff7TfgVbZ/9Fh8Z6WsQ/vf6XF81e5/8Fbv+af/APcW\n/wDbOvmf9nP/AJOE8Cf9jnpf/pXFX0x/wVu/5p//ANxb/wBs6+6y6EYcMYpR7x/NH6TlUIx4Kxyj\n/NT/APSonxrQW280UjLur5o+OFoooquYAoopPn9qoBaKKKXKgCgNu5pU+8KNqKo2fepRAaowMVoe\nHr99PvPtMfXbtqhWx4I8O3vibxDbaHpsavcXUqxQKzbRuZttPm5feIqe9Cxqza5e6lqiXM0zZ3L9\n771faHwzsPgV46+F/wAN9V/a0h8eXPgnwK9w32Xw7qKt/osknmSwxrJ91pG/iWvmzU/glp3w/wDi\n1/wrXxp8TvD8N3byxrPeafdfa4I5G+bbuX7391q9G/as+KfivX/CGlfs+eGvCOhwXWl2qyXl14fu\nd32i3+6q7f738VZ168ZWgt2ctFa3Z6f/AMFPNT/Zm/aA+COi/Hv9nj4kaD4L8I6JeLpPgP4HWcvm\n3VlZ/wDLS6uWRv8Aj6kb94zN/srur4El37uKdqFleabePYX9s0M0b7ZY5F2srU1mTjfTjGUTtGsN\nslDO7Sb0FIxy3FSW6/Mc/wANBHwmv4R0/wDtLxJpump8pur+3i/76kVa/pe8TrDa2trpriZkh0iz\niWP+H5beNa/nO/Zt8O3Pib48+CPDyQ+c+oeL9NiSFfvf8fC/dr+ibx1ffY/EF5bb9zLKyIzfN8q/\nKtcuIfwxOat0OUurxJrhoXtmTy/7zbVrndUaaNmRPl3bm+at3UGkkaV7lI1XbtZV+ZqwdabzF3vu\nJZfkk+61c0vdiXH4zj/Elv8AarcI5VFXaz7vm2tXDeIlmXels7f7e77tei64sK7/ADhGEjRfN3fe\n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\nAKDSx3zxSfJ8m7+FWrMa6e3VNiK23arr97dU26Zm2JJHhdzO2yo5eU2lI7fwrrv2dvLe5Vw1emeC\n/FSQ2ohmufn2fKsn3tu6vB9L1Z44RND8m35v+BV1Gk+JkVVe52r8v+sX5vmqJR+1EyqSjyn074X8\nVbV+zedlGT/Vt91W/hrrtN8VFlxc3LSCNtyRq38P8VfN+h+OvJ/dzTbVZflbd81dlpfjf5kSGb7v\nzrI38VRKPc5JS949r/4TR4bMwQosifegXftZv9msfVvGTvHK/lrsb7/8X8P3a8+m8cPIw2XWW/vb\n9q1h6t8QPLiaa5mWJm+8vmtWUqfNEXNCJ5Ho+oeZJHvSNV/jj3fKtdr4ZkjjjJSONF3bWhj+Xd/t\nLXmmizWccbTTTfu9+35fvNur0Lwu32ZYn3/d+XdJ/F/vV9ZWxXL8JhTw8fhO58O/JCsIjVNyfdb7\n1ddoMiYZHTy2+7FHsritLjhnkExdZtv35N/8P92um0u5aGNJrr5UVtyfNubb/DXHLFSlqbSoxO10\neaZm/wBJm/u7JNu2rs1qjZuYQuybd5q7/wDx6szRbi2+yb4JmmaP5nX+GtKO3S82pMcFk3eWv3Vr\niqYocaRn6pZuqo+zeYUZtqvuVqwNXtnk+5bSK0m35f8AZrs1VPLSN3/e/MvkslY+sWbr5ttDNu3P\n+6j/APsq5vr0YyKjheaWh554mjSVmubban73ZuX5q5fUZptrQJ8p/vbK7nXLOGBXj85Wbezfd3Lu\nrldQtYPlmhdmlb5W+X5W3f7VV9el3CWF974TjtWvoYv+XZWeNNrSfMv/AAKuZm1h2kVPtLZXcrt9\n1a6bxJapHbtC7soX5drfxV5/rn+jXTp8zP8Ae2s/yr8tdVHGe0OepQlEs3XiKa3VHd/3qtt+X/0K\nsfUtcu4/3jzM3z/dqjNrk1vcfIi/c+fdWTretQyxs79VrqjiP5TCVHlNWz1SNrhnm3Ntdtv+zXTa\nHfR+Wjvu2feRZK8z03Uo/tG/zm+b5q7fwnqU/l+T52Xb7isn3ar2yD2fwnZWcyRsj37qqf3l/h3V\nr6e32fZD/rG+8vmf3awdPmn+0RPNMrrs3PtSt6wuvJbznfn+7s/irCVbll8RtGP8xsaX5KlU+88n\n3of9n+9VltkjM+xSrfeX+H/ZqnYrNcMzvtaLbu+X+Gr0bIsLTf8ALuv93727/drmljJfaNqdMjk8\niOLekOyX7zbd21f9mvt//gt5HHL+xS0MhI3+JIlU4yATZ3g5HcV8UTXDx2bOkLD5f4q+1v8Agt9c\nNafsSvdLbiQx+JYGyWxs/wBFuvmr8O8SK8qniLwu+1Sv+VI+ezulyZxgV5y/9tPwj+Kl9DZ29vYQ\no3yr83+9XAM38dbfj3WX1fWXmR8isvTtPmvrkRRoxr9wjE+kj7sbhY2/nygbe9b1vp7w2/B3M1bO\ng+BX+y75E2u1Q6+0OlwsiDJ3bavl5TPmjIxv33nMjupO/wC7WhpNqm754WrDuNURmOxG+Wki8TXl\nvIHR+KXwi9+R3lnojyf6naE+9u/i/wB2pI9Njt1i33Knb8zs38NcpY/EK/DeTO+1W++y1c1rTLnV\n4vPsdaDI23YgpylzClHlOuF5YSL9j/tKEj/rrUV9pMOuWv2aYK8ez5JF+avO5vDWuxMXhDOF/iV6\nm0xPHdsv+hw3RVfm2/w1MecqMY7lXxLoNxouovCfu7vlrKkZ87Grc1vWdSuBs1WxIdV/5aJ/FWHM\n7yNuakaxFopFbPBpav4ihv3/AGxSMu2nKu2hl3VAC0UUVcZAFFIrZ4NLRHYApeVNN53b91LUAAbd\nzRSKu2lrQAooooAfHHukXf0avW/2VvA2m/EX46eFvBmq7fsE2qRy37M/3YY28xv/AEGvKLH95IN/\nG2vev2WfDepWV5P4wsJZEmX91ayMn3W/i2/8BqZe77xx4qShE+sv2ttY/wCEm+M0/iq2mV7aZVit\n2V/uwrtVV/4Dtr7F/wCDf74jWfhL9q7WvDd5qvlL4i8HzQMsn7xZGjbctfn7pdrc3V5/aXiR8xwp\n92RPvN/er3f9gH9oCH9nv4+W3xatoVuIdJsrj/R5H2rM0ke1VrGnUtLnkeI5c5+wv7ZX7SnwZ+G/\nwz/4TDx7ryxLp9xG1rZx/wCtvJl/5ZrX5F/tFftQfEP9pLxxJ4w1hJokjdl021uLjdFZx/dXy1/3\nfvVmfH74jfEj9pD4gXvxF+KPxFjkVrpv7I8P2cXl21jD/Cq/3m/vNXmcmi6Pasz/ANvXU6MrblWX\n5V3f3a48Zjp1fQuMfZnqOlRFvhnLDe3ivmxuBJNG3GPnzg+39K8h8dah4S0DwXqjpNG5a1mbdGm5\nmby69T8L29lZ/Bt4IogIF0+7+QtnK5kJrw341eILXRfhnqt/ZwqhXS5otrL8vzLtr3eKFz4fLWv+\nfMfyR+gcX64PKV/1Dw/KJ86fDO3ePw7BN5PMm5tzf71dTJvhzsT5fvfN/FXP+B/9B8M2cKQ/6yJd\nm1q2lmeWP998p/utXPCOh8pU+ImjjS3jaZJmK7F2rVSS48kF5Plb723+GoLrXLaPMP2nZtfbtasa\n+8RIvyQ7Sn96l9rQXLGRqeIviU/g3wfdJbJH9ouG/dTfxL/u14TeXc1/dSXly7O8jbnZq6D4iatL\nfXsMH2reiqx2BuFaubqY04xlKR2UafLE7L9nP/k4TwJ/2Oel/wDpXFX0x/wVu/5p/wD9xb/2zr5n\n/Zz/AOThPAn/AGOel/8ApXFX0x/wVu/5p/8A9xb/ANs6+nwX/JNYr/FH80fcZZ/yReP/AMUP/Son\nxrRRRXyx8WFFFFACMMjiloorQBFXbS0UFd3FT9oAooZfmye1FPlQCt+7au1+BWr6bo/jb7Zf7d/2\nC4W1Zv8AlnN5fytXE0b3Vg6Nyv8AdqZRJ5UbUWnzLdPc3k2597M0m/7zf3quW8F42rrq763J5i7d\nszP8/wD31WENVuQhTPBqM31y38bCr9zlMOSrzXub3xDvbLVtcTUbYbpZrZWum37t0n96sBd67t9G\n4NIzvTJF+bmp5TeO4L8nCPU0bKmE6bv71RbTu+SrEMM0mfumpJaufS3/AASn8K/8Jh+338LdKmto\n5IYfEa3T+Z/0xjaT/wBlr9w/Fd1CLyWZ33edcMySL/eavyN/4IS+CpNY/besfEkyRvD4b8L6hes0\nn/LNmj8uP/gXzV+sd9Ntt/kfeJPvKz/xf71ediJe8Yv3nymRdN+7d/m+V/7n3qyNSie4ZY3s22sv\n975lrS1BrZbqSGO8Zwvzbf8A2VarXiw3UaTfbP3f/LKNflaSubm6s6oR945XVrVxG6PbZf8A5a7n\n+Vv96uS1LSUhYiZ23yP8vlv81d/qcJaRke2XLbvNb+Jq5i8sZppJSzyJMqfJtiX5f9ms5e9E6qcT\nzTVNHcRo6Iqtt2urL92sSTT3jZ7Peqn7zbl/75r0DUrFBueZY5TMrK23+GsO6tLZQ1s88hRtvzNV\n/YOnlOVW3uo4/J2fMsv72T+FarFZlZJ98ed27zFb5q3NUtUWHfbQt838O/5WrNuP3yt9p3IJNv3f\nm2tXLKjKUtS170feM2SZJVdEdkZpd25futt/hr7f/wCCZgI+BOsKUxjxfPz6/wCi2vPvXxFJHtaV\n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\n/wDj1ee+KPDbrumRFLLuVGb+7/dr6/C+9HU+IxUZc/wnlEmkzRzNC8K7q7b4f2sMl8qXj+X8mxd3\n+7UMmiwrOHdF37v4m+7XReDdLmWbf23rsWvYj7sDx6z7HZeHdN8ny2fyxt+VW/vV2vh2ztmsykaS\nHc+3dIn3lrH8Pwu0kcMI+dvu12Wh6a8d0zuikyLu/wB2uWQR93QrWenwiZtj7hJu31YhhSOGaG2f\nzZm2qjM+1dtaVxZu0zwvCuz7u5fu1FYWsNvumvF2Q/eaRk3bdtcdWnGWjOynLljzEniKzfwn4Tl8\nc3KKyw/urfcv3pP92voz/g4GRW/Ym0VpIDIq/EaxZlAzkfYr6vk/9qTVnb+xPDsbzfZPs/n+WrbV\nk+X5Wr63/wCC+8dxL+xHpyWgJk/4Tu12BRk5+w31fi3iDCMPEPhZf9Pa/wCVI+Yzip7TOMF25pf+\n2n45+JviFNofhs2ulPs3Lt2x15DeWuta3e/aphJI0jfxV1Ta9pv2iKHU+V3L5qt/6DXsfwu8ffs0\n6PCH8VeFbi8l8raixsq7f92v3OPKpXkfSS9rH4D5/wBN+HPiHULhE+xvhm27tlddL8ONF+H1n9v8\neSeTNs/0ezX5pJG/vN/dr174hftIfD3SbO4sPg98PbW2m8rbb3l187r/ALq/3q+bvFF14h8QatLq\nus3M000j7mkmatfaR2gKn7WWtQl1zxN/bV4ttDttrb+COH7tQMqbWS2/76rJWN9x+RhRHJcq2yN2\nqNfiNuX+UvJZlW+d1ct/eqwtvDCux32t96qEM0zN8/y7fldqvW7PMy/e2/3m/iqjOXulu3td0Y8z\nrXcfDXQ4Lq4abZ86xMyLt/irkbE2y/O78t/DXf8Age6/s2MO/wAiM3zs1KK5SeX2m4y88P21jm81\nKZlTzd27dXDazrU2u6t9gs5pPJjf5F/hWuh+JniIaxeyab4c3GST7+1/lVawrfwvqXhvw9N4hubZ\ni4X5G/u0x/DI5vxQ0J1hvI/hVQ/+9WbvX1p80jyuzzNlmfczVEy7aDoQ+iims2G49KBjqKKKXxAI\nq45NLRRR8QBRRRRyoBFXbS0qru5TpQy7TimAY249f4qlt4/3io/FRLwu+rOnIJJgnks5Zv4aXMiJ\nS5UftF/waW6JeeHfi18RfGGzamqeDZrJmZFZfLh2yfe/vbmr76+OUk2jeLnvHdvKml2QMqbVVq+P\nP+Dea0s/g58OvGOoaq7Qy2/h+3tftEa/euriTzGj/wC/arX1d8aviJ4eutLXUrq8hfyWZoo2dV3V\n2U6sPZHyWKcqlY+WP2uPFmm2vjCz+23W77VB+9jh/wBn+KvFtQ8ZWF9uhO1Sqfwv/D/u1e/aY+JW\nleNfHxtobCREt4ttvMqbl+Zvm2tXlmqeIobXc8L/ACqrbG2fM1eLWxHNPlN4e6jZ1C+8+4+SZSu9\nvl+7uqr9uRpv7/zbUbbXLNqUzyNM74MfzfL/ABLWhazPcsro8aFfmdv977teXUrSjHUIy5z0nRpm\nPg1py/mHyZjk9/mbj+lfIP8AwUA1SOVfDGjrcyM7Xk08sLPuX7vytX1fod26fCuS8uJA7JY3LO6d\n8F8n9K+Gv2wtaudW+IWlWkzfLb2sjRfPu+Vm+9X2mfOLpZcv+nMfyR+mcVL/AGPKv+weH5RPMbqb\ncoT7tVbi6RcQJ9773y0XEjqrb34/u7qrXUvlxh0hrype8fJ25ZWK2oXm5d/as+8m27d/3atXU237\n7/K392qTb2j3um5dlV7pUSr/AMtaKTb82aWj4Tc7L9nP/k4TwJ/2Oel/+lcVfTH/AAVu/wCaf/8A\ncW/9s6+Z/wBnP/k4TwJ/2Oel/wDpXFX0x/wVu/5p/wD9xb/2zr6XAr/jGsV/ih+aPtMs/wCSLx/+\nKH/pUT41oopqN2P4V838R8WOooYbutFQAUU1RlcU4ru4oAKKKKvlQBRQW280irtpgLwRS7Tt3UK2\n3tQAxxlc0vhJkDHcaSk3fNilplBS7jt20MNq4oXDfJ3rMmO5Jbq4Zf8Aarf8OWE2o30VhZ83E0qw\nRbf4mZtv/s1YMaIoBc19Cf8ABOX4QWfxn/a08C+ENQhZ7P8AtuO91H91uXybf943/oK1FapGnTlL\nsKMZVKsYo/aD4WeGU+FPwV8E/DSG2WJNB8KWdnK33fm8vc3y/wC81WNW1R5NyIkZi+8u1tvy0zxZ\nrk11rlzPf7nEl1uiXev+rb7u2ub1K43fIk24/wAP97/gVfKRq+0nzPqetVo+zVix9qmkmV3eN1X5\nWX+9/doW+L3CeTMy/wALrs+Vqy2mS6hbzbjJ3t8q1LayeVcKj7flX5JP71ehGXNL3jnjT5TZjZ5L\nTZsw+zbFUcy/Z1dJP9lZfn+VqihummX/AF251/iX+Goo5rZVXfy7O29l+ZWo5o/EdHL/ACjmhfyX\nS2/drJ8zf3lWsq4tY7q3lf7vyNsZq0P9GbLwJuK/Lu3VVvoYV3zpt+986/3aqnsKpLlOavLPYzb5\ntzM6ttZP9XtrntR01HzbJ+62y7vM/wBqup1b5V2IGdm+4rfKzL/s1zGqRvCrOfMxI26Jt25f+BV0\n25Y6nHze97ph3xdpejFGbanmf+y19ff8E6kaP4KasrIqn/hK58qv8P8Ao1txXyPfX1tJI1tNcqrR\nxfJ8+2vrf/gnQ6v8FtXCzb9viycE+h+zWvFfh3jzCnHgKdlr7Sn+bPn+MpKWQS1+1E+A2h23E32a\nzVD5vz/9NK8s/ac8F/8ACReCbm5aFXkjVn/3Vr2WZVuLoJ/CsW7cqbtzVzfiTQbDWtHntrxJP9Ii\nZJY2Td5fy1+oRlKNWLifocqca2F5D8zNa0n+zdQms3j3eW33t1UMOrHf8u3/AGK9A+OnhH/hF/FV\nzD93dK3y7a89kb957V9nS/eQiz5CUeSfKyLzEWM9/m+9Vu11QISj/MuyqO0K3yfepyrJuXYefvU+\nUo3Le+RsfPj+6tPaSPzmfZktWNHHNu8tP97dVq1utsmyZ1Ut/FVRMuVF7bN2TP8AtVMsjsq7Bn+F\n1aoIrj7qf3nqeH/SG8taoPcNrwzfJa3Su6Y2/wANeyeD/GkKwpbPHlo03Kq14XZxvDMjmbc3+y9d\nNomqXVq3mPux/tNSj7vxGdSPN8J67q3jC8urrzoYVVV+bav96se61TUdWuDNM7E7tqR/3a5uPxvp\nrY84tvb+JfurW3oXxB8Nwqk0yLI6v87fdp81ifh+ySfETS7y4+G97YeQwWSD7zJ81fM0sbRysjDl\neGr7Gm8WeHvFnhV9Ks7qNX2M3lt/er5P8caNLovia7spE27bhttBtQ92XKY9FFFB0hRSMcDiloAV\nPvCpYVdi3+7USjcanhX7orMiW5q6DA8jKmz/AHKn8X3jw2iWZflvv1a8Mxoyqkybd38TVz/iS8F7\nqkkicKvyrVe6RH3ijWhodukkrPNu/wBjbVKKB5nGzmtPTVRJhbP0z96qKqS+yav+tX76r/7NVdv3\njb/J+6/yVfWGOSNqzLrfbzbPm+b+GlzRjEx9ma+lzJJKN6YDfLU95b+ZGEfa5VP4f4ay9Jvk87Z9\n0t/erXhZJoz8+w7vmaiOxUomLdQvHcq6fdb761Y0++eLCeZ96rl1ao2Zkbd/tVm3n+jts8n5l/io\n+ImMvsm3a3zyKEmT/wCyqVo0k23KJt2tu21h2d9tm/iKr825vu1tRXkEkZEM2Sy0c3LEXLyzK8Mb\nwsfOT71Wl2tGHTc3+9/DSrbuzMm9V3f+O02OOeFm3/Nu+VFX+Gj4g5eUfHDJB8/WrMKzSR7dm35P\nkqFI7lgmzp/dqaNnW5++3/AqcvdIiIzeW3k7dzMnzNR5m2Nhjb8nzMtOmjmaRXebj+FmWoriZPJd\nJ3w396lJcwfCYOsbN0r78lv7tcpdsJG2J/49XTatM8anem07PvVy9wxkY7z/ABUf4TanuT6NcfZL\n9Jt2Pmr9l/8Agkn+0YmtfAH/AIRL+1ZppFVre6aP5W+X5lr8XdzKd69a+0/+CSPxofwx8VU8H3kj\nbNQ2rFGrfek//Zrnr051KUuU87PMM6+Bmkfu18Etf1PX/BKnVLgyNaXLQR5OdqbVcDPflyfxr8uv\n+C/Xwh0rUPiVqnxF8H3MdzbWd6sqNa/MrW83y7q/T/4FWtpbeErg2Thkk1AvuBzk+VEDn34r4S/a\nr8Av8TvDupaDdv8AJrGjSJLJNu+Vl+Zdv+1ur8M8JsVLC8f8S0au8qlG/wAlV/zPz3IcVKjjXGXW\n34f8OfjtIqK7fIyv/danxsm3fsbc38NTaxpeoaTqV1pV4m2WznaB1/2lbbUUMb/3NrbP++a/f5R6\nH6TGXNG5YjVJGYJzur9A/wDg3VjUftreKJFXGfhbe/8Apy02vgGNUVTvGVr9Af8Ag3aRk/bV8ThC\nDH/wqy9wR6/2lptfnniypLw4zP8A69v80efnjtlNVeR5r/wWaRD/AMFLviO3kktu0b5v+4NY18zK\n7qpfZ8391a+nP+CzCkf8FLPiKxXjfo5/8o1jXzR5fzeWqN8z7kavY8P2v9RcqX/UNQ/9NRDLub+z\nqP8Agj+SEhk2rvTd8zfdp7N5279xt2/xNU0UE3yps2/xfL/dohgPzP8ANhv738NfW/YO37YQxO0z\nHftX7z1oWavJJ8iLtX7lVo7d4/vuv97dVm2ZCwT74ao+yaxj7+hoRnyY9nys392rlmz7hv2tt+bc\nzVRtm3SfIm1v4GarUNvtkCXO5mX77LXPKPMenSiXY1Rt8ny7W+6qtViz+aHzH3I235lb5t1VYY3W\nRZoYf49taNuzs2/f8v3flT71R7stjsUuYkt0RvKmcfJs+6v8VSJavIxcXjOsKfOuz7tLHC6xo6fO\nf4dvzbf9mp4ftKr5zn5G/iV/vf71MwqR5veIpLXzJPkTcu7+L5adHbw/Nbfd/ubamkj8lmd02bfv\nfxUNb7pN6Ozf3G2bflropy+yeNiqc+a5VlRVjXcfl3Ns3VRvFRYWfYvzVpXSo2zzNrfN91X/AIqo\nXkKW8n7vbtk/hrXm933TljH3vePN45Nred5zbmf5Vq1Z3HmRs8yMPLXbu3/erN+0TSSI/ULVu1k3\nR/I7Lt/iavLj8J7cDZs7942CbF2qv8Lfd/3qvWd55LLMkzbv7yvWBZ3T+c1s6f6xd1aNo23CQx8f\nd2/xUvscpvTlzHYaT4keT5EmkLL92u28O6lqBVdki4k+Xa38Neb+H1fzn8yHd/wPbXa+G7ry23wX\nMaOrr95a8rGR/lPoMD71rno3h26m8zZNcsu1NsX93dXceHYnvJC/2zfKq7XXZuVq880O6RVHlou5\npV+0SSJub/gNeh+FJk/dI+5X3fJ5a181iKfLGXMfWYOXwo7HT4XkjR5uFZfkVU+XdWgsKJIsOxlP\n3k/2VqLw7bvHHF5w+Zfm2/3q6GOGZfnyrq3zeWv8NebDmjOx63LHl5jm76xSCJZrZFWRd37yR6wN\nQt/LtxNeW375nZlZW3fxV2OqadCzN/Au3d9zdtrH1i1hWEQ/ZlLqv3lX7y17WF/d7Hh5gubWxwmt\nW+63mTYvms+373ytXE+ItDtpoWTyVTzPu7fm216X4m0lLWTZND87fws23y65q+sYVt3hto2Mrfc/\nir6vCSjy8yPh8dHml7x5bfeH0SYPMm1N+7c33WWtrSdJTzNnkqWb5kb+Hb/DWvcaCk0m+aHYirtl\nVvu1Y0zT0hiDwoodv4v4dte7CXNC0j5TEaVbo3PD+lsix3LosW7/AMd/2q63TbObc3yW+9UVd275\nmrnNLaGHykdN275d0f8A7NXR6TIlwwS2dm3f+Pf7tYy/uii+UsrGLxTNlkRfllVfl27a5LxX4403\nWLi503RppGgsdqyxxy/6xv4v+BUfFv4jQeA/D8xs7mE39xEyRQr/AMs/l+9XnfwjM0Oj/wBq3nmF\ntUlZ4mb5d395qwlz850VJe6dd8ep31jwn4O8cwzMdP1rTt8X2hdzRsu5dv8As7dtfav/AAXekRP2\nP9BVxkN8RLQD/wAAL8/0r4K8Xak958F7/wADanqTNc+DdWmn07d/y0t5Pm2r/s195f8ABeJ4o/2Q\n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\n8k+827+8q197XEk0cJmMDf7v92vgc9xcqmM5Pso/QOHMv9nhPbS+0Zd5dFf9GmdX3S7E3N826s+4\nuHjLQ2ybv4n3fdq1fTPCsyJCwT5WfcnzbqqTL5jOmyOXdt/3vu/drxvby5/7p6lbCxqcyZPZw/MP\n9Tv/APQastH9li/f7RG3937y1nxslvMieS33dztv/iq4l1ugX7TDtT7zru+7XbTx/tDyamB5djPv\nvlaO58jcGfbtZvmZa5y8jtlhUuV3+a3y7/vbm+7urqdcuraSMzTP/HtXb/DXK6tdQq0mLzlfuLs/\n8er3sDiO54uOwzjuV7qSH7Pv6tG/yqv8P+zVZtReONv9Zuk+/UF5qVszF3diknzI38LLWHfaw8dx\n5KO2N+1vl+Va9unUj/MeBUjOJfvtWCyeT5zI+z/nr81YmratuJhCKr7t3+t3K1ZM18/nN9p+XdLt\n2r93bWXfX3l3bJ9pX/pkrf8AxVavYx5i1qF4dvmWyLG7L+92/Nur7d/4Je3C3P7P+rMu75fF9wp3\nHP8Ay62lfAc2sBtqXKbGbd8q/K+6vvL/AIJUTrP+z5rZRSAnjW5QEnOcWlmM1+J+P0Irw9m1/wA/\nKf5s+c4snfJmv7yPg+4vkhkEYGVVWZ/9lqoX11cx6bcu6ea/lf8AAv8AeamR3kNxMZn+VZNzbV+7\nHWX4svEs9Dub9LnY7Iy/K+35f7tfr06cef4T7CnW5YHy9+0V4sTRZpYV/wBdcKyozf8ALP8A3a8Y\n1SP7VHHc787k3bq3v2hPFH9ueMpIYV2xRt8nz1zml3D3Gm+S/wDDXr83LCNjhl73vFKNfKYps/jo\nkjG7e74q3JabUfYjMf49v8NQyL91Nmf9qtPc+Ikgb93j+KlhkdpN/nfL/dqCSR1U9/nqJpHVagqM\neY19Njea6XZNw38NbE2lu/8Aq0rntLvPs8yu74rqtL1y2lt/L+6f71V9ozlsZtxoT/O6I3/Aqrf2\nbeQuudu//ZrpPMT5f4v9mpo7e2Zf9R8y0+VBzGFpuqaxZ7U85lZX+Sum0fxtqsPyTBgWf52b5qzm\nghZd+xflf7rU5ZfJ+5D977lHLKIpSO90vULPWI/Jum8p5F2vIvytXSaVZa3bSRxWd+0oZNv3/l/4\nFXl+n/afOT+997czV634D1j+x9DfVdV+5t+Vf/ZaPhgTLl5uY8//AGlfC1zNpFtrY2sYfll2t93/\n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\nD5bP83ypudY/vbv71c3q1zi387exLbvmb+JlqTUvECTRvbIilpE+9G1YF9rkMjb03NJt/if5a9Wn\nzS5TyKnITX2qPNHHNDtbbF97+Ja/Qf8A4JKPv/Zx1rE/mY8a3PzZz/y52dfm0upQyfcdt3+y/wAt\nfoz/AMEe5PM/Zn1w7GXHjq6+93/0Oy5r8b+kCreHVT/r5T/Nny3FTvlTfmj89re58zZ9mm3LNK3y\n/wB2uW+LOqTQ+Gbn7G+3dFt/3a0obw28Z+8pbds2/wDoVeffFLxVDbtJps213mTd5bf7tftHLLmP\npoylI+UfHSvJrlxcv99pW+ZqoaNefZpmL/datTxtvk1iV3+4z7q59ZTFOrJ8wV91dEY+7ymkTp/J\nkjV38nG7+9WVfSPHhH3Y/wBmtCG8S6sU3zfe/u1mXnzbnR2Lf3ar+6Ry++U5Gy3u1RyY/g+7Ukkj\nswTYtRbTu+SpNIg29pPMd8GrFrqE0Lb/ADm2/wB2omhmYb/vUpt3X5O/+1Vf4gNyw8UOijem4f7V\nben+I3kZoU2ruriI43b5NjVdtfNjZZtjf7tLm5SZHZeZ9obfsVW+7tqeytd2Zsq/+zWPo94nkL87\nH/erb0+8QN5KJ97+Ja15uaJiafh3T/t1x9m2bPnVV3f3a6/4gf2lHpNtoltayBIYt0rf+g1zfhO7\nhj1KFLnanzbXZv8Aer1S+bTW0dtVSH7YWiVWVnp8xHNHnPCNem+z2svyYTZ8y7a84mYtMX2Y3V7n\n4/j8N6tapbQ2EltIy7vL+9Xj3iLw/NpVxvSFvKb5qj4fiNqcrmVSqz7tlJToVQSLv3UHSa/h218x\n/kHP8VWvGEwjjhs0udyL822p/DFskamZ3XGzd92sPXL57y/d96srP95aX2zHl5plMnzGrR0+aeO3\nOx/mrPjH7zD1s6SsKxsNn/AmqAkXtLvHe1MLvvdqbqU1zb7tnziordU8w+S/zLUupfvpxCjtv2f8\nBoI+H3kV9P1a5uG8n7v8PzVfurxLeNn2bf4dy1Hb2MNrGZKjvmSSEwvyfvfLWgub3x1vqW6RXeZc\nN/DWxYpuhlmhdii1ztvp73TLhPu11WgzPZ27o6KEZPmVaA+IzZL77L7q33qI7hJ1Pl7R/ElWtUsb\nZm3pG23ft+7VKPS3jmZN+0M+1Kr4hfEMXWE8zy3fO3+9WjDveH7T03fcrMt9JRm2fKSv3/7taMdw\n9tGEfbj7u2lKMYyuP7JLb715mh3j+9UkiwsyO6YMny1WmupxJvRN27+7/DUSzTSXCQujAN/FSCUe\nUsXFv/tsG2/981XjV/L3+cxH8dP+0Otx9/7r7aY3yqqb9yf3mpe90F7vMJIz52PMp/8AZaztUVVk\n+5u2/wAS1oyW6XG7ZuWmNoc80X8P96iUSzm5rN2k+Tgf3qhNjM67Nm75f4a6f/hH/JVUf/gdSN4T\n8pd8L8N93/ZpxiZ83KchaadNcXXkJGxPtWveafNp6xxPDsZfv7q3fh/ottdePIbJ3V/nVX/u16F+\n1DrXgjxFq/h7w14D8Bw6MPD+ltbatqH23zW1S4Zt3mf7Kqv3VrOUQnUvyn6xf8G5cZj/AGGvEQJ6\n/E+9OPT/AIl2m8V+SNrPNpNwuq2b7Zo/9U392v1y/wCDdRif2H/EaspBX4n3oIP/AGDtOr8k7iOS\nNpT5Py/d3LX4v4Zf8nG4p/6+UPyqnzGWRUs2xq84/wDtx9g/sW/tzalYyWfg/wAba81pNCn+gal5\nu1t38KrXb/8ABU7QdV+OPw7b4y6lpTTajpMSs81vF/ro9v3mavgDT7q80m6S5tnb9z8y7fvV9R/A\n39sB/EXwz1L4OeP7+NnutNa3iurrdtZf9r/ar90jWnS0+yelVw8Z+/1Pkfy/JXZ833/4kr72/wCD\ne9gf2yvEilcMPhfef+nHTq+GdZ037DrFzbW1yrpDOyKyvuVl3V9zf8G+St/w2f4ncqBj4Y3oyP8A\nsI6dX514tf8AJt8z/wCvT/NHPm7l/ZFW/Y4D/gsAyD/go98RlMTBv+JQVcd/+JPZV83R2/nMrvGu\nd+7d/er6R/4LCqh/4KM/EUlsHOkfN6f8Siyr5xjX942z7q/3Xr1+AP8Akg8q/wCwah/6agXlzX9n\n0f8ADH8kIFdbgQyfK391fmqXakjeTsYtt+7v27ae0LtHvgfbt+7SiEtDs/ePt+98nzNX1f2DujKW\n8iNdm5k37fm+9UCypCVRPm+fazbNy1buFQ7odm1tm5Vaq7RC3dnfzAI/4mquZBH4rC+Z5f8ApIh+\nZabaMkirs/vfxVFM23915P8A8TUm3bcMiSbdybaxkd8dizDcP9nZHg3/ADbUbf8AdqeOaHaPn+X+\nCqTFNqu7t8y7akVkaFpEdW/uVly/aOqPOaX2tI4fJ6bl/herNjL5kaTP83ytu3VlR/6pN/JX5t1X\nI38lldHZfk2/7NLlQpSka1tJ5y53/d/h/vVYt23K80yKNr/LtfdWbazbtjv8u5Pk21ds5trM7lUZ\nvmZWet4nHW5ehoWMxVV2PufZtWNflplysGwo6Mxk+WmRsDIiQphdm7dJ/DSMyKzb3zt+Xy1+7/vV\nf+E4Pdl7pxl9a+S7TPu27v79S2K74/O8lW3fc/2lqxqkafPNvyNn3adbx7VWNU42/IypUexnynt0\nZcpPa26TNl4f4f8AvmtW1Z4WX99uX+7VKGN47f8Acup/2a0bVfm2eTtG2vPrUZRPawtT/wACLtjH\nuVWm/wCWn8TL8y1o6bcedLs8mP5fur93cv8A8VWbb3KRsX3r/wB91dtZEutjwpsMnzfc+XdXj4in\nL7J7NOtKUuVyOg02R45g+xSzP/F/CtdFpt8kcKIj7W2bt3/xVclYt9njimuQq7dysyt95q147zbi\naS52ovzblT/ZryanvSPRpuMTsbW62tvd/M3Mquu/+Gug0vUPs00XnQ7k3bn3VxOl655bLv8A9IWR\nP3rK+1l+X5Vrd0nUplji2PDjeq7ZG+7XLKPKd8akTvtJ1GG3YvN0/ur/ALVaS6tYRtIibX8uL55N\n23+LbXE6frjmRnRFYxozbd/zNWjJqkMLI7p/rE3fe+Wrw/PGRjiJQkaeuXEP2hEuZtiNKyfN93/e\nrntQ1K2hm8mN8Ov8Wz5WqXWL+Z42hfaRvVkZvm/8erB1S8RbfzZm3MqfLu+9Xu4Wt7nvHzGLp80n\nITxBrc1pCfJvFLMn3m+by/8AdrgfiF4nfSdHewjmaK4vl+ZZPvSL/erammfdFFNMzyTPuRm+6teY\nfEzxBB4g8XXO+58yGNlg2t91dv3mWvSw/NUn7sT5/GP7RT0WG51DUEtrN1BX5vm/u11PiDULbTbV\nYYejfu9rVneHbODTtPW5d2aST7jL95Vql4kvkuJpE85g6/xNXqL3ZXPLp83N8Rg6vqyWrnfM38S7\nY/4f/sa4PXtQSa6/ib5926tLxJqky3BRJN39+Na5DUNW8zcm/A/u0v7xUZfzDrrUIbON5njYttb5\nf7tfsX/wcc2j3n7EHhaONgCPipYsCf8AsG6nX4uNM8z73fhq/eT/AILU/swfHf8Aay/ZY0L4c/s9\neBP+Eh1uy8fWupXFl/adrabLZLG+iaTfcyxocPNGNoJb5s4wCR+FeKuOwmB4+4YxWJqRp041K7lK\nTUYpWo6tuyS9T5rOp06WZ4KU2kk5avRfZPwFnn+z2jwui7933qybiTDb0TNfYE//AAQ6/wCCoNzI\nZ5P2Y8E/eX/hNNE+b/ydqrP/AMENf+Co77TH+y3gf3f+E20T5f8Aydr9H/184F/6GuG/8H0v/kz3\nP7Vyzl/jw/8AAo/5nyQrfZ23p8uf/Ha6TwnqSXjbH25b5f8Aar6Nb/ghj/wVR80sn7L/AAf+p20P\n/wCTalsf+CG//BVC3kSQ/sxshVsgr420Pj/ydqv9feBVr/auG/8AB9L/AOSFLNMq/wCf8P8AwJf5\nnheqeE/tlm95bQ70j/iVa4rWvD9zaZd0yP8AZr7t8C/8EgP+Cl9ggt9f/Zo2JjD58Y6M278rw1Z8\nT/8ABFH9vjVo5Db/AABBZ33Kv/CVaSAv53VH+vvAb0Wa4b/wfS/+SMlmuXQndVoW/wAS/wAz89t3\ny+XJ8v8Avfw0iL95Ef8A75r7I1z/AIIW/wDBTV33af8As1iUBsj/AIrPRh/O8rMX/ghZ/wAFUYwW\nT9l75vbxvof/AMm1L484FX/M1w3/AIPpf/JG6zbK3tXh/wCBR/zPkuNkbKOWHzULvXKd/wC81fWy\n/wDBDP8A4Ko87/2WOv8A1O+h/wDybQ//AAQw/wCCqJkyP2XuP+x20P8A+Taf+vvAvL/yNcN/4Ppf\n/JD/ALVyv/n/AA/8Cj/mfJ6syw/O+1v4amt2f+P7396vqo/8ELf+CpwYFf2X+B2/4TbQ/wD5NqVf\n+CG3/BU6MZT9lzn/ALHbQ/8A5Npf6+cC/wDQ1w3/AIPpf/Jk/wBq5ZHavD/wKP8AmfMWnyOqh/vD\n71dRpOsQtZrudVX7v7tq9/sf+CIX/BUuEAS/su4Pf/ittE/+Ta07X/gih/wU6t1BH7MIyPvY8Z6L\n83/k7TXHvAtv+Rrhv/B9L/5In+1Ms/5/w/8AAo/5nyrrFwJJmf7x3/Iy0yFU+zq7n5V/u/3q+oX/\nAOCIn/BUW5u1upv2Zdu3+H/hNNF/+Tavj/giT/wU0I2n9mwgD5jnxlovzf7P/H5R/r7wLy/8jXDf\n+D6X/wAkKWZ5V/z/AIf+BR/zPi/xBp9zbzLcvFxJ/EtZtfbF3/wRT/4Kl3TCM/swfu1+6reNdEx/\n6W1m6r/wQp/4KeSj7Rp/7Mm1+8f/AAmmif8AybSfH/A0v+Zrhv8AwfS/+SNY5tln/P8Ah/4FH/M+\nOaK+t/8AhxV/wVS/6Na/8vfQ/wD5No/4cVf8FUv+jWv/AC99D/8Ak2q/1+4F/wChrhv/AAfS/wDk\ni/7Wyv8A5/w/8Cj/AJnyXD8x/hrf8G+D9R8WaxFptnbSMWZd7L/DX1Dpn/BCj/gqGbhEvP2ZhGvd\n28a6KVX8Bek17X8NP+CNP7cHgW2VV+A6iYp+/k/4SfSz5jf+BNZVPELgiEdM0w7/AO49L/5I5q2c\n5bHSNaP/AIEv8z5y8L+CofC+mpo9rbRho/8AWt/eatVv9FuN6fJIv8K19QL/AMErP26FQg/AZGJO\nDu8TaZ0/8Carz/8ABKb9uxkXyvgCobzN5P8AwlOl/wDyTXL/AK/8Ey3zPD/+Dqf/AMkcX9p5e960\nf/Al/mc78E9eS+0F7B0Z967nZk+Va7KFbXi885tzPtibZXT/AAa/4JwftueFp508V/B+REkUDcvi\nLTWB/Bbkmu6T9gn9q+2Qm3+Fe45wofXLHp6/6+plx1wN/wBDTD/+D6f/AMkcccfgVde1j/4Ev8z5\n31y1v9L1KXybnhtybY/l+9VSPxBc2bbJkaUQpt/d/LX0Lf8A7AX7XMt5vh+EIMcgy23XdPGxvxnq\nve/8E8P2sJgir8IAyD76DXrAFv8AyPXDV414Ne2aYf8A8H0v/khvHYJf8vY/+BL/ADPnVvFVzNIP\nn2uy/I22qi+JNRvWFmlsrSbWXc1fQTf8E0/2tJdzN8IwCTlVOvWBX/0fV3Tf+Ccv7V2lQGSP4Qq7\nnrGNc08Z/wCBfaKmnxrwZy+9meH/APB1P/5Ip47Af8/Y/wDgS/zPm648I3N9BNeahftLt/8AHfl/\nu14l4iXUrHVJbXUvvea37xfvba+9b/8A4J7ftn3BbyPgyEUptAXxBp3P1zcVw3jf/glH+2b4msmR\nPgYvnhWKSp4l01efTH2nFbf66cDykubM8Pp/0+p//JGscxwC2qx/8CX+Zy3wo8N3Xjb9kCTwfpMy\nLPq+h6pZ20l2xCh5ZLhFLkAkDLDOATjsa8e039gP4y2UYRvE3hk7fugXlx/8Yr1bwr/wTk/4LCfD\nrXZrT4ffCCWw0q5ZXuIj4o0GaNnAxuCS3LFCRgEqAWCrnO0Y7mx/Yq/4LCFx9t+HYC9/+Jx4fz+k\n1foVPxQ8KsXgaEMVmNHmpxUdK9G2it1qLe3Y/TXxhwHmOXYanmDlz0oKHuzhbRJX+NPW19tNtdz5\n8H7CXxdbJfxL4cXIx8lzPx/5BqyP2FfiSQkZ1vw9tVNuRdT5/wDRNfQS/sVf8Fdd3zfDsYB/6C+g\nfMP+/wBVi3/Yo/4KzqGa4+Hu47vlUavoPT/v9U/8RC8Gv+hjS/8AB9H/AOWHK888LHv7T/wOH/yZ\n84f8MH/E6ONkg8QeHxkYXddz8f8AkGsvxV/wT/8AjTrWiz2Gn+JvDCTTJt3SXtyAM9elua+pz+xT\n/wAFXzJn/hXhClOQNX0L5T/3+rB+I37Fn/BZX+wCfh98N2+3+YuB/bHh3G3v/rJsUf8AEQ/Bu3/I\nxpf+D6P/AMsKjnnhbdW9p/4HD/5M+Ov+HVv7Qn/Q4+DP/Bhd/wDyLR/w6t/aE/6HHwZ/4MLv/wCR\na+hf+GLf+Dg3/omv/lZ8Kf8Ax6j/AIYt/wCDg3/omv8A5WfCn/x6l/xETwb/AOhjT/8AB9H/AOWH\nT/b3hh/NP/wOH/yZ418J/wDgmv8AHTwJ8U/DXjfV/FfhOS00bxBZ311HbX10ZGjhnSRgoa3ALEKc\nAkDPcVp/8Fbxn/hX4P8A1Fv/AGzr1I/sW/8ABwb/ANE2/wDKz4T/APj1edfEv/gj5/wWR+MPih/G\nXxJ+AE2qai0KQieXxpoCKkaj5UREvFRFyScKACzMx5Yk1ifFDwuhllTC4PMqK52r81ej0af877Dx\nnF/BdLJK2By+dnUcW3OcLKzT6Sfa1vO9z4nVccmhlzyK+uP+HFX/AAVS/wCjWv8Ay99D/wDk2j/h\nxV/wVS/6Na/8vfQ//k2vl/8AXzgX/oa4b/wfS/8Akz4r+1sr/wCf8P8AwKP+Z8kUV9b/APDir/gq\nl/0a1/5e+h//ACbSN/wQo/4KpN/za1/5e+h//JtH+vvAz/5muG/8H0v/AJIP7Wyv/n/D/wACj/mf\nJNN29+v419c/8OKv+CqX/RrX/l76H/8AJtH/AA4q/wCCqX/RrX/l76H/APJtV/r9wL/0NcN/4Ppf\n/JB/a2V/8/4f+BR/zPkiivrf/hxV/wAFUv8Ao1r/AMvfQ/8A5No/4cVf8FUv+jWv/L30P/5Npf6/\n8C/9DXDf+D6X/wAmH9rZX/z/AIf+BR/zPkiivrc/8EKv+CqeOP2Wv/L30P8A+TaRv+CFP/BVMjA/\nZa/8vfQ//k2n/r9wL/0NcN/4Ppf/ACQf2tlf/P8Ah/4FH/M+SaK+t/8AhxV/wVS/6Na/8vfQ/wD5\nNpf+HFn/AAVU/wCjW/8Ay99D/wDk2j/X7gX/AKGuG/8AB9L/AOSD+1sr/wCf8P8AwKP+Z8jbfm35\npa+yE/4IV/8ABTq+08i5/ZkMFzEMxFvGmiMrj+7xenFZx/4IUf8ABVHcSP2XB17+N9D5H/gbS/1/\n4G/6GmG/8H0v/kg/tbK/+f8AD/wKP+Z8l28fnSBcda/T/wD4JC/CdPCvw11L4nTQR+dq1wtlaq0X\nzNHt3SNu/wC+a8G8M/8ABDH/AIKfQatFLqn7MQiiDgu3/CaaIR9MC9Jr9OPgr+xX8afhN8P9F8D2\nXw9XyrLTgtxv1K1OJiMt0l55r57iLj7g6eD9nSzKhJvtWpv8pHv8O5pkP17nxGKpxS7zivzZ0Wiz\nIqsmzcyttb5/mrotLsvtFwyTW25W2/NJ8tLoXwF+MFpAI7vwb5Y/jRdQtzu/KSur0b4WfEe2jEF5\n4ZZoxHtVXvoT/J6/O5cV8Myj/v1H/wAGw/8Akj9KjxPwtKKvj6P/AINh/wDJGda6Hum2Qw72/wBn\n+FatzaPDcRtNDD975mXb91f4q6Kz+HXi+FUMmkMfL/g+1R/N/wCPVdj8A+IV3J/ZWFPQidMj/wAe\nrKPFfDUf+Y2j/wCDYf8AyRtDifhJKzx9H/wbT/8AkjzjVNH8uR3RONm1W2/Nt/hrltb0uZo1f5UP\n8e7+KvY7r4ceK5NzxaKQ4/1TC4j+X/x6uT1X4I/Ey8ZxHoQJYkrL9ph4H9379aw4s4aW2Oo/+DYf\n/JGVXifhZx0x9H/wbD/5I8I8SWsMd0/nuzbdzfdrzvXE86QfvvK2p/q1T5tu6vojxJ+zT8a725Vr\nLwYJFYYdv7Rthj85K47Wf2QP2iryUyx/D3zPvKD/AGtaKSPX/W16+D4w4Wp6yzCh/wCDaf8A8keH\nic/4ZqXSxtH/AMGQ/wDkj5z8QSXFu0kOze8b/Pt+8zf3mrltcvplmbzpswsn7ryU27W/2q+htW/Y\na/alleZrT4VAtKPmlTW7EMw9OZ647Vf+Ce/7Z9yzvD8IWIZuY/8AhIdOCkf+BFfVYPjfgzeeZYdf\n9xqf/wAkfH47OMklJqOKpv8A7fj/AJngWsaskm77NMq/w+Yz/Lurn7u8kkbe9yqszbmaP5v++a94\n1H/gmz+3TM6Na/BNQVHJPiTTeT/4E1ky/wDBMb9vSeRnf4GBS39zxNpeP/SmvoKHHfAqjrmuG/8A\nB9L/AOSPn6+a5W1pXh/4FH/M8YW6mkwifLF/F/8AtV+lv/BG2RZP2YtdYOp/4ry6B2tn/lzsq+P7\nP/gmP+3VAojf4Erg/fI8TaZz/wCTNfdf/BM74FfFL9n34E6v4O+LnhL+xtSu/F1xfQ2v26C43QNa\n2sYfdC7qMtG4wTnjpgivyXx14r4WzfgKeHwGOo1antKb5YVYTlZN3doybsup8pxFjcJXy1xhUjJ3\nWiaf5M/KbULqGG33wzbNy/MrfeWvEPiV4iGoeOvsaP8A8e9qzP8ALX3Brn/BMX9uWbTxaWHwPMjH\ncWY+J9MHJ+tzXhl7/wAEdP8Agp1qPje+1qb9mYiCRGjgkbxpoxyv0+2ZFfrkePOBVqs1w3/g+l/8\nkfR08yyxR/jw/wDAo/5nxT4qk3ahKiSbvnrnn+8a+yNX/wCCHX/BUi4nee2/Zi8wt1LeNdEGf/J2\ns4/8ELP+CqRbd/wy1/5e+h//ACbV/wCv3Av/AENcN/4Ppf8AyRtTzPK1/wAv4f8AgUf8z5j8L/vr\neVH2gL/eqG8kfzPnfd8/3lr640X/AIId/wDBUG1gYXP7MW12/wCp00Q/yvaS+/4Icf8ABUFzug/Z\nkBP+z4z0Qfzvaj/X/gb/AKGuG/8AB9L/AOSIlmmWc/8AHh/4FH/M+O/L+9vTNKqnP3FWvrpf+CGX\n/BUjKBv2YRj+P/itNE/+Taef+CF//BUFlx/wzJj5f+h10T/5No/194F/6GuG/wDB9L/5Ir+1ss/5\n/wAP/Ao/5nyR5fzbNi1P9jRsP826vrWH/gh1/wAFRUJD/sxjj7rjxpon/wAm0kn/AARA/wCCpRXE\nf7L2Pmz/AMjton/ybT/184F/6GuG/wDB9L/5MX9rZav+X8P/AAKP+Z8nNbwxt8/FJHJtAhT5lWvq\n6X/gh5/wVOdiw/ZfJPq3jbRP/k2mJ/wQ5/4KnF8yfsvcf9jton/ybTXHvAtv+Rrhv/B9L/5IbzTL\nOleH/gUf8z5gt7tIdqJ/3zWxp877d8KLuavo2H/gh1/wVHjG3/hmFsen/CbaJ/8AJtamjf8ABFD/\nAIKeWzkXf7MRCj/qdNFOf/J2n/r9wL/0NcN/4Ppf/JE/2pln/P8Ah/4FH/M8E0WFLiQfudr7PnZq\n6zwz42vNJ82yvEZk/hX+Fq9+8O/8Ebv+Ci9upGpfs6+WT1/4q7SD/K7rfsf+CNP7de/Y/wAEFgGx\ngHbxNpbY/AXNOPHvAf8A0NcN/wCD6X/yRjPM8tWirQ/8Cj/meO6bp3g/xTCjjRIXkZ/lkX5dq/3a\nxfEXwN0fUpJrN7ZVDbl+/wDdr6r0P/glT+234etoYIPgMJGjH3ovE+mKM/jc1pf8Ozf27Hia5T4I\nCOYkjafEumHg9f8Al5qv9f8Agbb+1cN/4Ppf/Jh/auXf8/of+BL/ADPy0+JPgS88CeIZNNlH7tvm\ngk/vLWPpcL3FwIdm75q/Qn41f8EZv+ChHj47tK/Z3i3wjELjxVpK5H43YrzbTP8Aghx/wVEspC3/\nAAzBj0P/AAmuif8AybUy484E/wChrhv/AAfS/wDkjanm+W8vvVof+BR/zPmqZX03R2fYrFl2pXIX\nhMdx9zB/u19rah/wRO/4Kf3CJbR/syEovUt400Xn/wAnayr3/ghl/wAFQrhwyfsxdOh/4TXRP/k2\nl/r9wL/0NcN/4Ppf/JF/2rlf/P8Ah/4FH/M+PY13yK/ffWvH+7t2mdPl/wBmvqRP+CF3/BUpGwf2\nXVZf+x10T/5NrStf+CHn/BTuK08hv2YyPb/hNtF/+TKX+v3AvXNcN/4Ppf8AyRMs2yz/AJ/w/wDA\no/5nyE0syyZ2Nt/hq1bXE0ke9q+sX/4Ic/8ABTuXAP7MjKo/h/4TTRP/AJNpsf8AwQ6/4KhxNvT9\nmXllww/4TTRf/k2q/wBfuBY/8zXDf+D6X/yQf2rlkpfx4f8AgUf8z5ZtbyHy2cuzf7O2qdxPM1xs\n2bN1fWsf/BEH/gqGo3N+zAvHVf8AhNNE+b/ydpLj/gh//wAFQbglz+zAysOm3xvonP8A5O1n/r7w\nL/0NcN/4Ppf/ACQf2plkf+X8P/Ao/wCZ8taTL5e2U/7vzV0NmIZLd4Zh833q+ibH/giL/wAFQoV3\nyfsxjP8Adbxpop/9va0Yf+CKn/BTNM7v2YsZ67fGei//ACZR/r7wL/0NcN/4Ppf/ACQv7Uyz/n/D\n/wACj/mfLt5IgHnI7f8AAf71MSZJo/3m7O77tfUR/wCCKf8AwU724X9mYj5/+hz0X7v/AIGVEv8A\nwRO/4Kemc7f2ZNif9jpov/yZV/6+8Cxd/wC1cN/4Ppf/ACQv7Syv/n/D/wACj/mfL8bbWOx1/u0M\nkjL8kKlq+qrb/gin/wAFMI4wsn7MeTvyR/wmei//ACZUqf8ABFr/AIKXCUTN+zEAc4wvjLRflH/g\nZWn+v3An/Q1w3/g+l/8AJC/tLLP+f8P/AAKP+Z8oQ2tzuX5dv+9Tprf98r/wrX1j/wAOXP8AgpeG\nDH9mwkg5H/FY6N8v/k5Tf+HLP/BS1l3/APDNOG9P+Ex0b/5MrP8A1+4F/wChrhv/AAfS/wDkglmu\nWr4a8P8AwKP+Z8p29qk0eHTd/cojs9nz71C/3Wr6rj/4Iu/8FNE2sn7M+Nn8DeNNG+b/AMnKRv8A\ngiz/AMFNZcvJ+zXGuRwi+L9G4P8A4GU3x7wGts1w3/g+l/8AJB/amXcv8eH/AIFH/M+Xo4YfL+dF\nZ6j+3Qxs29PvfLtr6lX/AIItf8FNDwf2a8A/eH/CZaN/8mU2T/gir/wUwaRXb9mkNhskDxhoo/8A\nbyhcecCbvNcN/wCD6X/yQf2tl8f+X8P/AAKP+Z8ux3X2iSKP7Mqt/HurZ8lDYl9i/wC9X0Za/wDB\nFn/gplBctP8A8M2cbsqreMdG/wDkytFP+CNP/BSv7M+/9nQb9jYX/hL9H5P/AIF014gcCuX/ACNc\nN/4Ppf8AyQpZnlv/AD/h/wCBR/zPkz4V2aXniy8ue8e7Yy1v+ItFVWd3TfLu3fNX0V8Mv+CLX/BS\nbw7Jc3er/s2mGRywjH/CZaO3Df7t4a6DVv8Agj7/AMFGLiCKOD9nDzHQYZz4w0gZ/O7qJce8C/8A\nQ1w3/g+l/wDJBLMss5o/v4f+BR/zPtT/AIN4HRv2KvE+zt8Ub4H6/wBnabX5MXEf7nYnzf7VftX/\nAMEd/wBmb4z/ALKn7Mmt/D346eCBoGsXvjq61KGzGo211vt3s7KNZN9vJIoy8MgwTn5c4wQT+dU/\n/BHr/gokzkp+zsCpXG3/AIS3SP8A5Lr8i8O+K+FcFx5xJiMVjqMKdWpRcJSqwUZpKrdwbklJK6va\n9rrufOZfjcJHNMXUlUik3GzbVnvtrqfLsywx/c+b+GqzNNHIQnyfJ93dX1E//BHX/go84wf2dEXn\nJK+LdI5/8m6h/wCHN/8AwUeJkP8AwzgoL/8AU36P/wDJdfsv+v8AwHt/auG/8H0v/kz1vr+X838a\nH/gS/wAz5gC/chdf9pq+7/8Ag33Ij/bI8SwqVI/4Vjenpg/8hHTq8yH/AARx/wCCjbKXf9nH5/fx\nfo//AMl19W/8Ee/2Bf2sP2Wf2mtc+Inx2+E50HSL3wJc6db3X9vWF0HuWvbKVU2288jDKRSHJG35\ncZyQD8F4ncacIZhwDmGHwuY0KlSVNqMY1qcpN3WiSk236I482xuCnllSEK0W2tlJP9T5c/4K/SIP\n+CjvxGRxu/5BHHp/xKLKvnK3/eN1VP77bPvV9E/8Fg3Kf8FHviKFZQzf2Rt+Xn/kD2VfONvJ5a/v\nn3qv8WyvvfD/AP5ITKr/APQNQ/8ATUTty53y+jH+7H8kXT9mXBdNnyfe30t0qeWJk/ufwvUH2hGb\ne8KsjfLuZKiurh2jZ0fB/wBn7u2vrPe+0eh7saRLcXe6T5EjH8KN/FtqC4jSHA+bY395qTznZnhd\nFPyfI396o5JpljT5Gwv8LLSlKXwoKdPm94X7Qk+U2KdvzOrUz7QkbN+53f3Wp1xJDFGqOi7m+aq7\nXG355k3N95FX+KsZbHfTt9olj3ySGZPk/wCmbN96p18hodn8P+zVP7RDIu9/vVMsyNtRB86/+O1B\nuXoW+zrvG1V/jXfVy3mkjk3um9W+Xa1Z0LfaG2XUK/N/FV+KTZJ9mm2srfcqdp8wpf3S7BdFmNt9\nmVwu1t2/+KtC2kSOYFEZWb+FV+bdWbD23/K277uyrkdx5rffZP4nbrWsY825wVpSjLQ1VuE8lU8n\nK/xL/FTFaf8Ad7JtjfwfLtbb/tVFZzybm3vvXZuT/ZpzXEPnJNMm51+V9r1ry8vwnJze8f/Z\n", - "text/plain": [ - "" - ] - }, - "metadata": { - "tags": [], - "image/jpeg": { - "width": 600 - } - }, - "execution_count": 26 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ijTFlKcp6JVy", - "colab_type": "text" - }, - "source": [ - "Run `train.py` to train YOLOv3-SPP starting from a darknet53 backbone:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "Mupsoa0lzSPo", - "colab_type": "code", - "colab": {} - }, - "source": [ - "!python3 train.py --data data/coco_64img.data --img-size 320 --epochs 3 --nosave" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "0eq1SMWl6Sfn", - "colab_type": "text" - }, - "source": [ - "Run `test.py` to evaluate the performance of a trained darknet or PyTorch model:" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "0v0RFtO-WG9o", - "colab_type": "code", - "outputId": "6791f795-cb10-4da3-932f-c4ac47574601", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 1000 - } - }, - "source": [ - "!python3 test.py --data data/coco.data --save-json --img-size 416 # 0.565 mAP" - ], - "execution_count": 0, - "outputs": [ - { - "output_type": "stream", - "text": [ - "Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', img_size=416, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='weights/yolov3-spp.weights')\n", - "Using CUDA device0 _CudaDeviceProperties(name='Tesla K80', total_memory=11441MB)\n", - "\n", - "Downloading https://pjreddie.com/media/files/yolov3-spp.weights\n", - " % Total % Received % Xferd Average Speed Time Time Time Current\n", - " Dload Upload Total Spent Left Speed\n", - "100 240M 100 240M 0 0 17.9M 0 0:00:13 0:00:13 --:--:-- 20.3M\n", - " Class Images Targets P R mAP F1: 100% 313/313 [11:14<00:00, 3.02s/it]\n", - " all 5e+03 3.58e+04 0.107 0.749 0.557 0.182\n", - " person 5e+03 1.09e+04 0.138 0.846 0.723 0.238\n", - " bicycle 5e+03 316 0.0663 0.696 0.474 0.121\n", - " car 5e+03 1.67e+03 0.0682 0.781 0.586 0.125\n", - " motorcycle 5e+03 391 0.149 0.785 0.657 0.25\n", - " airplane 5e+03 131 0.17 0.931 0.853 0.287\n", - " bus 5e+03 261 0.177 0.824 0.778 0.291\n", - " train 5e+03 212 0.18 0.892 0.832 0.3\n", - " truck 5e+03 352 0.106 0.656 0.497 0.183\n", - " boat 5e+03 475 0.0851 0.724 0.483 0.152\n", - " traffic light 5e+03 516 0.0448 0.723 0.485 0.0844\n", - " fire hydrant 5e+03 83 0.183 0.904 0.861 0.304\n", - " stop sign 5e+03 84 0.0838 0.881 0.791 0.153\n", - " parking meter 5e+03 59 0.066 0.627 0.508 0.119\n", - " bench 5e+03 473 0.0329 0.609 0.338 0.0625\n", - " bird 5e+03 469 0.0836 0.623 0.47 0.147\n", - " cat 5e+03 195 0.275 0.821 0.735 0.412\n", - " dog 5e+03 223 0.219 0.834 0.771 0.347\n", - " horse 5e+03 305 0.149 0.872 0.806 0.254\n", - " sheep 5e+03 321 0.199 0.822 0.693 0.321\n", - " cow 5e+03 384 0.155 0.753 0.65 0.258\n", - " elephant 5e+03 284 0.219 0.933 0.897 0.354\n", - " bear 5e+03 53 0.414 0.868 0.837 0.561\n", - " zebra 5e+03 277 0.205 0.884 0.831 0.333\n", - " giraffe 5e+03 170 0.202 0.929 0.882 0.331\n", - " backpack 5e+03 384 0.0457 0.63 0.333 0.0853\n", - " umbrella 5e+03 392 0.0874 0.819 0.596 0.158\n", - " handbag 5e+03 483 0.0244 0.592 0.214 0.0468\n", - " tie 5e+03 297 0.0611 0.727 0.492 0.113\n", - " suitcase 5e+03 310 0.13 0.803 0.56 0.223\n", - " frisbee 5e+03 109 0.134 0.862 0.778 0.232\n", - " skis 5e+03 282 0.0624 0.695 0.406 0.114\n", - " snowboard 5e+03 92 0.0958 0.717 0.504 0.169\n", - " sports ball 5e+03 236 0.0715 0.716 0.622 0.13\n", - " kite 5e+03 399 0.142 0.744 0.533 0.238\n", - " baseball bat 5e+03 125 0.0807 0.712 0.576 0.145\n", - " baseball glove 5e+03 139 0.0606 0.655 0.482 0.111\n", - " skateboard 5e+03 218 0.0926 0.794 0.684 0.166\n", - " surfboard 5e+03 266 0.0806 0.789 0.606 0.146\n", - " tennis racket 5e+03 183 0.106 0.836 0.734 0.188\n", - " bottle 5e+03 966 0.0653 0.712 0.441 0.12\n", - " wine glass 5e+03 366 0.0912 0.667 0.49 0.161\n", - " cup 5e+03 897 0.0707 0.708 0.486 0.128\n", - " fork 5e+03 234 0.0521 0.594 0.404 0.0958\n", - " knife 5e+03 291 0.0375 0.526 0.266 0.0701\n", - " spoon 5e+03 253 0.0309 0.553 0.22 0.0585\n", - " bowl 5e+03 620 0.0754 0.763 0.492 0.137\n", - " banana 5e+03 371 0.0922 0.69 0.368 0.163\n", - " apple 5e+03 158 0.0492 0.639 0.227 0.0914\n", - " sandwich 5e+03 160 0.104 0.662 0.454 0.179\n", - " orange 5e+03 189 0.052 0.598 0.265 0.0958\n", - " broccoli 5e+03 332 0.0898 0.774 0.373 0.161\n", - " carrot 5e+03 346 0.0534 0.659 0.272 0.0989\n", - " hot dog 5e+03 164 0.121 0.604 0.484 0.201\n", - " pizza 5e+03 224 0.109 0.804 0.637 0.192\n", - " donut 5e+03 237 0.149 0.755 0.594 0.249\n", - " cake 5e+03 241 0.0964 0.643 0.495 0.168\n", - " chair 5e+03 1.62e+03 0.0597 0.712 0.424 0.11\n", - " couch 5e+03 236 0.125 0.767 0.567 0.214\n", - " potted plant 5e+03 431 0.0531 0.791 0.473 0.0996\n", - " bed 5e+03 195 0.185 0.826 0.725 0.302\n", - " dining table 5e+03 634 0.062 0.801 0.502 0.115\n", - " toilet 5e+03 179 0.209 0.95 0.835 0.342\n", - " tv 5e+03 257 0.115 0.922 0.773 0.204\n", - " laptop 5e+03 237 0.172 0.814 0.714 0.284\n", - " mouse 5e+03 95 0.0716 0.853 0.696 0.132\n", - " remote 5e+03 241 0.058 0.772 0.506 0.108\n", - " keyboard 5e+03 117 0.0813 0.897 0.7 0.149\n", - " cell phone 5e+03 291 0.0381 0.646 0.396 0.072\n", - " microwave 5e+03 88 0.155 0.841 0.727 0.262\n", - " oven 5e+03 142 0.073 0.824 0.556 0.134\n", - " toaster 5e+03 11 0.121 0.636 0.212 0.203\n", - " sink 5e+03 211 0.0581 0.848 0.579 0.109\n", - " refrigerator 5e+03 107 0.0827 0.897 0.755 0.151\n", - " book 5e+03 1.08e+03 0.0519 0.564 0.166 0.0951\n", - " clock 5e+03 292 0.083 0.818 0.731 0.151\n", - " vase 5e+03 353 0.0817 0.745 0.522 0.147\n", - " scissors 5e+03 56 0.0494 0.625 0.427 0.0915\n", - " teddy bear 5e+03 245 0.14 0.816 0.635 0.24\n", - " hair drier 5e+03 11 0.0714 0.273 0.106 0.113\n", - " toothbrush 5e+03 77 0.043 0.61 0.305 0.0803\n", - "loading annotations into memory...\n", - "Done (t=5.40s)\n", - "creating index...\n", - "index created!\n", - "Loading and preparing results...\n", - "DONE (t=2.65s)\n", - "creating index...\n", - "index created!\n", - "Running per image evaluation...\n", - "Evaluate annotation type *bbox*\n", - "DONE (t=58.87s).\n", - "Accumulating evaluation results...\n", - "DONE (t=7.76s).\n", - " Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.337\n", - " Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.568\n", - " Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.350\n", - " Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.152\n", - " Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.359\n", - " Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.496\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.279\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.432\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.460\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.257\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.494\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.623\n" - ], - "name": "stdout" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "VUOiNLtMP5aG", - "colab_type": "text" - }, - "source": [ - "Reproduce tutorial training runs and plot training results:" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "id": "LA9qqd_NCEyB", - "outputId": "1521c334-92ef-4f9f-bb8a-916ad5e2d9c2", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 417 - } - }, - "source": [ - "!python3 train.py --data data/coco_16img.data --batch-size 16 --accumulate 1 --nosave && mv results.txt results_coco_16img.txt # CUSTOM TRAINING EXAMPLE\n", - "!python3 train.py --data data/coco_64img.data --batch-size 16 --accumulate 1 --nosave && mv results.txt results_coco_64img.txt \n", - "!python3 -c \"from utils import utils; utils.plot_results()\" # plot training results\n", - "Image(filename='results.png', width=800)" - ], - "execution_count": 8, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAACvAAAAV4CAYAAAB8IQgEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAewgAAHsIBbtB1PgAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xd0FNX///HXbkhCIKEHCIQaEkBB\naujVCnwoKiCiHwS/KoqoYPmpoAgKImBDlA+IIHxEsYEFRawE6VUIQSD0HkIIJRASQpL5/cFhPrsh\nuztpm0Sej3P2nLm7d+7cnXCY98687702wzAMAQAAAAAAAAAAAAAAAAAAAPAKe2F3AAAAAAAAAAAA\nAAAAAAAAALiekMALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAA\nAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAA\nAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAA\nAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAA\nAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcAL\nAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJ\nvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAX\nkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAA\neBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAA\nAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAA\nAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAK3fnz57Vs2TIt\n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\nde3aVWfOnDHfq1+/vvr166fatWvr3LlzWrZsmX7++WdlZmYqMzNTzz//vHx9fTVy5EhLx4iPj1fv\n3r114sQJlSlTRnfddZeaN2+u0qVL68CBA/rss8908OBBSVeW9x42bJi+/fbba9oJCwsztw8dOqT0\n9HRJUuXKlRUUFORUNzQ0NKenwjRz5ky99tprZtlut6tbt266+eabVbZsWe3fv19ffvml9u/frxkz\nZqhChQqW27506ZJuv/12rV692nyvUqVK6tOnj5o0aaLSpUvr8OHD+uabbxQTEyNJ+v3333X33Xdr\n6dKllpaFunjxovr06aPdu3erZMmS6t27t9q0aaOyZcvq2LFj+uqrr7R9+3ZJUkJCgh544AGtX7/e\n7bLfsbGx6tixoxISEsz3ypcvr549e6pJkyaqUKGCkpKStGvXLi1fvly7du1y28fExER16NBBsbGx\n5nuhoaG688471aBBA/n7+2vv3r36+uuvtX//fknS/PnzFRAQoA8//NDjOQAAOPNmbJEbN9xwg9q2\nbauGDRuqfPnySktL0/79+7VkyRLt2LFDknTmzBn16dNH27ZtU82aNbNt5+LFi7rrrruc4ppOnTqp\nS5cuCg0Nla+vr5KSkrR3715t3LhRGzZsUGZmZoG3ZUXt2rVVosSV28THjh1TamqqpCvX25zEGp4k\nJCSobdu22rdvn/le6dKl1a1bN7Vq1UqVKlVScnKy9u3bp5UrV+qvv/6y1K7NZlPz5s3Vpk0bhYWF\nqVy5ckpJSdGuXbv0ww8/mLHe4cOH1atXL0VHR6tMmTLXtHM13jt9+rR57kuWLKnq1atne9y8nJvi\nFAcDAIqfq/csJMnHx8dlvbS0NPXv31979+6Vj4+Punfvrk6dOqlixYo6deqUfvvtt2t+r+/du1cd\nO3bUiRMnzPciIiLUu3dvhYWFyW63a8eOHfryyy/NOhMnTlRgYKBGjRrltt8jRozQtGnTnN5r1aqV\nbrvtNtWoUUM2m00nTpzQxo0b9ccffzjFmLkRFxenAQMG6NKlS5KunKvbb79d7dq1U0hIiOx2u86e\nPavY2FitW7dO0dHReTqeo7feekujR482yz4+PurWrZu6du2qsmXL6uDBg/r666+1e/dus69dunTR\n+vXrne5RufPpp59qzJgxkqSGDRuqT58+qlu3ri5fvqwNGzbo888/V1pamiRp+vTpuv3229W7d+98\n+44AABSWzMxMp9/bvr6+buunpqbq1ltv1bp168z3goOD1adPH910000qVaqUDh8+rEWLFunvv/+W\nJP3yyy/q37+/fvzxR7dtf/755xo0aJAyMjLM98LCwtSzZ0+FhYWpdOnSOnXqlLZu3ao//vhDJ0+e\ntPQdg4KC1KFDB7Vs2VJVq1ZVQECATp06pQ0bNuiHH34w45vPPvtM1apV05QpUyy1C6CQFHYGMYB/\nNseZzUqWLGmkpaV55bhyGFXkbnT1k08+6VTX1Ww1V02cONGpvqsZhZmBFwBQXD311FNO159NmzYV\nyHEyMjKumX1t3Lhx2S47tGLFCqNixYpmPX9/f2P79u0u23aceezqrC3du3fPdtnklJQUo2fPnk79\n2LZtm9u+O85SZ+Uab3UG3iNHjhiBgYFm3fLlyxt//vnnNfXS0tKM4cOHO32/qy93M709/fTTTnWH\nDRtmnD9//pp6mZmZxpQpU5zqzpgxw2W7jrPaXO1Py5Yts+1Lenq68eijjzq1/f3337tsOzU11Wja\ntOk1/T537pzLfTZv3mz069fPOHToULaf33333WZbNpvNePXVV7MdgX7p0iVj5MiRTsdeunSpy+MC\nALLnrdjCMKzPwHvfffcZjz/+uNt4wjAMY968eU4zst1zzz0u686ZM8esFxAQYPz+++9u246LizNe\ne+21bGf2zc+2DCNnqwFkncHVE6sz8GZmZhrdu3d3qtu3b1+3s77GxsYaDz/8sLFq1apsP+/SpYsx\nevRot/FPenq6MXnyZKeZ555//nm33yk3y18bhvUZeItzHAwA8K7cPCNISEhwuu517drV6XPH65xj\nfOBqVllHly9fNlq1amXu5+fnZ8ycOTPba1hSUpIxYMAAs66vr6/b68wXX3zh1KcaNWoYy5Ytc1k/\nKSnJmD59uvHSSy9l+7mVGXjHjBlj1gkODvZ4Dvbv3288++yzxq5du7L93GoMER0dbfj6+pp1q1Sp\nku2Kj+np6caoUaOczkvHjh2NzMzMbNvNGovY7XbDx8fHmDZtWrZ/o61btzotv92sWTO33x8AgMKQ\nm3jozz//dNqnZ8+ebutnzRl54oknjAsXLlxTLyMjw3jjjTec6n700Ucu242NjTVKly7t9Jv+ww8/\nzPa6bBhXYq3vvvvOGDBgQLafb9myxWjcuLGxYMECt7P/Hj161OjUqZNTTOAqfrmKGXiBwkUCL4AC\n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\nKysJdu/eXdOnT/e48uCePXs0btw4l0mv/v7+TjPexcfHq2PHjlq+fLnLNpOTkzVz5sw8DfStV6+e\nhgwZolWrVrkdWLRz506n5OVWrVo5JRzn1IQJE8zVKdLT09WrVy+tW7fumnoZGRl65ZVXNGPGDPO9\nTp06Oc0UCAAAXHv22Wfl5+dnlrObhbdp06ZOE4k8//zzeuqpp3TmzBm3bSckJGjmzJm68cYbtXHj\nxmzrvPPOO+Yzn8zMTPXp00cfffSRyxWCMjIy9OOPPzpN9nLVbbfdZm4nJibqoYceyvZ+2qVLl/TC\nCy9oypQplu+DACh8JQq7AwCuH35+fvr444/VunVrjRs3TidOnJB0JYhYtmyZli1b5rENm82mvn37\navLkyU5LKufFgAEDdOnSJT388MPmjaaoqCiXs94FBQXp+++/V9u2bT22HRgYqFWrVumee+7RH3/8\nIenK912yZInHGWJuvfVWffnll05LOwAA4C02m01fffWVhg4dqnnz5km6MvjmmWee0ZgxY3TzzTer\nRYsWCg4Olr+/v+Lj43X48GH9+uuvOnDggMf27Xa75s6dqzZt2pg3Ql555RV9/vnn6tevn2rVqqVz\n584pKipKS5cudUpemTRpklPSxj9FaGio3nzzTQ0bNkzSlfPdpUsX9ejRQzfffLPKlCmjAwcO6Isv\nvtC+ffskXUnEtZrEMWnSJMXExJijvP/zn/9o3rx56tatmyIjIxUcHCxJOnv2rPbu3astW7Zo06ZN\nbhOHCpqfn5+++OILdejQQSdPnjT7/cUXX6hnz55q2rSpypcvr6SkJO3evVt//vmntm/fLkmaPHly\ntm1+/PHH2rt3r6Kjo5WRkaFx48bpvffeU7du3dS8eXNVqFBBGRkZOnPmjGJjY7V582ZFR0d77TsD\nwD9VQccWVj3//PPm7/Hk5GTdfPPN6tWrl7p06aJy5copISFBUVFR+uWXX5SZmalq1aqpd+/emjlz\nptt2MzMz9d133+m7775TpUqV1L59ezVv3lyVK1dWQECAEhMTtWnTJn3//fe6ePGiud/kyZOveaCS\nn20VJXPnzlW7du20Z88eSdLChQu1dOlS9ejRQ61atVLFihV18eJF7d+/X6tWrTJXJ7r33nuvaeuF\nF17QAw88IOlKkk+LFi3Ut29ftW3bVqVLl9bx48f166+/asWKFZKkxo0bq0GDBvr666899rN69eq6\n7bbbzJhpypQpmjZtmmrXri1/f3+z3mOPPZarGfCIgwEAxZWvr6++/vprtW/fXocPH1ZKSoqeeOIJ\nvf766+rWrZsaN26s8uXL69KlSzp9+rR27NihjRs3KjY21mPbffv21ciRIzV16lRJV1Yr7Nq1q1q3\nbq3bb79doaGhstvtOnHihDZv3qzffvtNycnJGjx4cK6/T3p6uv773//qv//9r6pXr6727durSZMm\nqlSpknx9fXXy5EmtXbtWS5YsMVfjsdlsmjJlSq6PKUk33XSTJk6caK70cOLECXXo0EE9evRQ165d\nVaZMGR06dEhfffWV07mrUKGCPv74Y3OgEQAAcK969er697//ba5qs3jxYm3ZskXNmjVzqvfmm29q\n+/btZj7H+++/r48//lh33HGH+ezEMIxrnp24SsS9ql69epozZ47uu+8+ZWRkKDU1VUOHDtXkyZPV\nq1cv1atXT6VKlVJiYqK2bdum33//XXFxcQoLC7umrTZt2qhTp07mfY4vv/xS69ev14ABAxQREaG0\ntDTt2rVLixYtMichGTdunF555ZU8n0cAXmAAQCG4ePGi8e677xpt27Y1SpQoYUhy+fLx8TGaNGli\nvPbaa8ahQ4cste+4/+DBgy3ts3PnTqN3794u+1OyZElj8ODBxrFjx3L8fTMyMoyvv/7aaNOmjWG3\n211+V7vdbrRp08ZYuHChkZmZmePjAABQED744AOjUqVKbq/Xrq5rDz30kHH8+HGXbW/ZssWoUqWK\npfZsNpsxZcoUj/3t3Lmzuc/YsWMtfceoqCinY7lTq1Yts97cuXM9tj137lyzfq1atTzWHzNmjKXz\nMXz4cOPAgQNO7x04cMBt22lpacbQoUNz/LeUZKxYsSLbNgcPHpzjuCun/d67d68RERGRo/66a/P8\n+fNG7969c3UerMajAADXCiq2cKwbFRXl8vivvvqqpeMFBwcb69atM8aOHWu+17lz52zbdIwPrMY1\nEydOLPC2DCNnsUhO46icxFCGYRgnT540WrdunaPv5+pv+X//93+W9q9bt66xZ8+eHMUs+/btM2rW\nrOm23aznJ6fxTXGMgwEA3uV4DfcU31hlJa7x5MSJE0bbtm1zFct5Mm7cOLfPULK+XF3TrVz3c9p/\nPz8/45NPPnHZ95ye24kTJxo2m83SsUNCQoxt27a5bS+nschVubmvAwCAt+Q1Htq1a5dTbNGnT59s\n66WlpRkPPfRQjuMDScaaNWvc9mHx4sVGYGCg5fbCwsKybefw4cNG9erVLbXx0EMPGWlpaU7vrVy5\n0mUfHdudP3++y3rt27c3640fP97t9wZgXdGdkgHAP1pAQIBGjhypNWvW6PTp0/r99981f/58TZ06\nVRMmTNC0adM0f/58rVixQufOndPWrVs1ZswYl0ssZWUYhvm6OrOPJw0aNND333+vhIQEffvtt/rg\ngw/0+uuva8aMGfrpp5+UmJioefPmqVq1ajn+vna7Xf369dPatWuVmJioJUuWaNasWZo0aZImTZqk\nWbNmacmSJTp16pTWrl2rvn37MooaAFBkDB8+XPv379frr7+uZs2aebxG1ahRQy+88IJ27typ2bNn\nKyQkxGXdpk2baufOnXrqqacUFBSUbR273a6uXbtq/fr15uwk/2SvvfaaFi9enO0oa0mqWbOm5syZ\n47S8pFW+vr768MMPtXbtWvXo0cNp+ajs1KtXT08++aQ2bNigjh075vh4+SUsLEzbtm3Tm2++qRo1\narit27hxY7399ttuY7bAwEB9//33+umnn9SxY0ePsxU2atRIL774onbu3Gk5HgUAuFaQsYUVr7zy\nij799FOX1xR/f38NGDBA0dHRat26taU2p0+frsGDB6t69epu69ntdt1xxx1as2aNRo0aVeBtFTXB\nwcFas2aN5syZo4iICLd169Wrp3Hjxl0zM85Vs2fP1rvvvquKFStm+3lgYKAeffRRbdmyRfXq1ctR\nP+vWravo6Gi99dZbuuWWW1S1alWVLFkyR214QhwMACiuqlSpolWrVmnBggUur9NX2e12RUZGavz4\n8ZZWVRg7dqz++usv9ezZU76+vi7rBQUF6b777tNTTz2V4/5f9emnn+qee+5RpUqV3Nbz8/NTv379\ntHXrVg0aNCjXx8tq1KhRWrt2rbp06eIyHi5TpoxGjhypHTt2qHHjxvl2bAAArhf169fXXXfdZZa/\n//57bdmy5Zp6vr6+mj17tlavXq1u3bq5jUMkKTw8XE899ZQ2bdrkceXmXr16ac+ePXrsscdUpkwZ\nl/V8fX1166236q233sr28xo1amjTpk3q16+fy9ghIiJC8+fP1+zZs8k3AYoRm2EYRmF3AgAAAEDx\nkZCQoI0bN+rkyZM6deqU0tPTVa5cOYWEhKhFixYKDQ3NVbtpaWlauXKl9u/fr1OnTql06dIKCQlR\n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\n115J1k6/tb8mhTkdqvBIFUakDEP60pui27xz1Ts6XMeLj+mk26uTRlWBcMvtg7kAACAASURBVHWM\nKlWUujgNTTmrj/7tol9ZGaruLsoNfc+hJC0tzcodOTk5uvjiixtsW1hYaD3qOT4+XnFxcUEzZlsa\nmDZK//zh/2p4zlxbi3grTafuqbytqpDdRg5Deqo5/7YAAKCDkFNaryqnPK70nPvkMpryjJDGeUyH\n7q683faMIrXgM1AAANpRaP+0DACAzqqpj7purM1PX0lbnpW+XdXix2UDAICONTk9UYPiY+oV59R8\ndDfal8fj0fz5863XS5YsqVVIW+3xxx/XP/7xD+Xm5mrTpk368MMPdcUVVwTEmE8++aSOHz8uqarw\nt2bxbrVRo0bpkUce0T333CO326358+frrbfeatH8AQC1NVQM3Nwi4dbuju9vR+K686jbtu7r6l2H\nfRUn/2Zkcr3diKX6RctSVeFwF4dDFV6v8opO6NXsvVq9rUBmnQw0OCGmwYJjX4XJ1X36+n/kaxdl\nX99jKJkwYYKeeOIJSdKaNWt03333Ndh29erV1nFGRkZQjdnWRv76Fv2r31k68vH/q2HH/qFIo1Km\nKRmnLsHmHJebYVrlveCXXaht4nQYujglTndfnsK/LQAAQYGcYo/qnHL8fx9WWtmn1lMsmptV3KZD\n673peso9zfbi3XCXQ78+qw+fgQIAApphmqY9t8Og1fbt26fk5GRJUn5+vpKSkjp4RgCATsHrbfxR\n1421aUofzcCaF1z4/QKAziOUd4FrqvZY99avX69LLrlEkjR27Fht2LChwbavvfaabrrpJklSZmam\nXnvttYAYs3///vrhhx8kSXv27NGAAb4fQVhcXKzevXvrxIkTOu2001RUVKTIyMgWfQ++kFMAAE3R\nGTJQsK15Ho9HSUlJOnDggCTp888/14gRI3y2GzlypHJzcyVJa9eu1fjx44NmzIa0xe+X1+NReVmJ\nunSJVHlZiSQpIjK6acflpVJYpCLCwlTurtrNN8LltOW45q7TAIDQRE4JzDEb0lY5pbTkZ0nNyCfV\nx1FdVe6pKluyK59EuJwN3nwHAAgdwZJRWl+B04ZWrlypadOmqX///oqIiFB8fLxGjx6tJ554wtrl\nxQ7FxcVavny57rjjDo0ePVpxcXEKCwtT165dNXjwYM2YMUNr164Vtc4AgKBU/ahrf4W3jbVpSh8A\n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\nBEGAIAgICQkp9zZnz54Vn8/Ozoajo6P5F6Hh5ZdfFuMJgoARI0bo7YcgCGU6FxEREVUd06dP15oD\n9OrVy+IxzX0Q0bNDIvBfNRGVUUFBAc6ePYvIyEikp6ejdu3aqFevHnr27AkXF5eK7p7JHj16hAsX\nLuDBgwd4+PAhlEolnJ2dUbt2bTRr1gz+/v6ws7Mrt/6kpqYiLCwMycnJePr0KerUqQMfHx90797d\nIh/YpKam4uzZs0hJSUFaWhpkMhlcXV3RqFEjdO7cucxvdBERUeX0rIzbSUlJiIiIgEKhgEKhgEQi\ngYuLC+rXr48OHTqU+ks2T58+xcmTJ3Hnzh08fvwYzs7OqF+/PoKDg6vU/bEUlUqFkydPIi4uDunp\n6fD29oavry+CgoIsdo60tDSEh4fj/v37ePToEeRyOVxcXNCsWTP4+fkZTJatKGq1GhcvXkRMTAwU\nCgXy8/Ph4uICHx8fBAYGmp2gAwApKSn466+/xLmZnZ0dXF1d0bx5c/j5+VXL3z8iqho4tygbpVKJ\n8PBwxMTEICsrC3Xq1EGDBg0QHByMGjVqlDrujRs3EBsbizt37iAjI0O8nhYtWqBDhw5mJSBbMlZl\nFBUVhYiICDx48ABKpRJOTk5o0qQJAgICdCbu6pKZmYmwsDDcuHEDOTk58PT0RKNGjdCzZ0/Y2NhY\n+Qosg/NgIiIiIiIiIiKi8scEXiIiIiIiIiIiIiIiIiIiIiIiIiIionJkeK9SIiIiIiIiIiIiIiIi\nIiIiIiIiIiIisigm8BIREREREREREREREREREREREREREZUjJvASERERERERERERERERERERERER\nERGVIybwEhERERERERERERERERERERERERERlSMm8BIREREREREREREREREREREREREREZUjJvAS\nERERERERERERERGRxalUKkRHRyMkJASvvPIKunTpgho1akAikUAikWD69OlWO/e+ffswduxYNG7c\nGPb29vDw8EDXrl3xySefICMjw2rnJSIiIiIiIiIylbyiO0BERERERERERERERETPnnHjxmHXrl3l\nes6srCxMmjQJ+/bt03peoVBAoVDgzJkzWLNmDXbs2IHOnTuXa9+IiIiIiIiIiDRxBV4iIiIiIiIi\nIiIiIiKyOJVKpVV2dXVF8+bNrXq+sWPHism7np6eWLx4MbZs2YKvv/4a3bp1AwAkJSVhyJAhiI2N\ntVpfiIiIiIiIiIiM4Qq8REREREREREREREREZHEdO3ZE69atERgYiMDAQDRp0gQhISGYMWOGVc63\nbt06HDp0CADg6+uLY8eOwdPTU3x97ty5WLBgAVavXo20tDS8+OKLCAsLs0pfiIiIiIiIiIiMkQiC\nIFR0J4iIiIiIiIiIiIiIiOjZp5nAO23aNISEhFgkrkqlQoMGDZCcnAwA+PvvvxEQEKCzXocOHRAR\nEQEAOHz4MAYMGGCRPhARERERERERmUNa0R0gIiIiIiIiIiIiIiIiKouwsDAxeTc4OFhn8i4AyGQy\nvPrqq2J569at5dI/IiIiIiIiIqLimMBLREREREREREREREREVVpoaKh4PGTIEIN1Bw8erLMdERER\nEREREVF5kld0B+gfSqUSUVFRAAB3d3fI5fzxEBHRs6mgoAAKhQIA4OfnB3t7+wruERnCOQoREVUn\nnKdULZynEBFRdcE5inFFcwIACAoKMljXy8sLDRo0QFJSElJTU6FQKODu7m6xvnCOQkRE1QnnKVUL\n5ylERFRdVJU5CkfiSiQqKgodO3as6G4QERGVq/Pnzxv9UIUqFucoRERUXXGeUvlxnkJERNUR5yi6\nxcXFicdNmjQxWr9JkyZISkoS25qTwHv37l2Dr0dERGDYsGEmxyMiInpWcJ5S+fG9FCIiqo4q8xyF\nCbxERERERERERERERERUpT158kQ8rlOnjtH6bm5uOtuaokGDBmbVJyIiIiIiIiLShQm8lYjmt7vP\nnz8Pb2/vCuwNERGR9SQnJ4vf7rXk9oRkHZyjEBFRdcJ5StXCeQoREVUXnKMYl5WVJR6bsi2mg4OD\neJyZmWmVPgGcoxAR0bOP85Sqhe+lEBFRdVFV5ihM4K1E5PJ/fhze3t6oX79+BfaGiIiofGiOf1Q5\ncY5CRETVFecplR/nKUREVB1xjlLxkpKSDL6u+SEh5yhERFSdcJ5S+fG9FCIiqo4q8xyl8vaMiIiI\niIiIiIiIiIiIyASOjo5IS0sDACiVSjg6Ohqsn5OTIx7XqlXLrHMx0YWIiIiIiIiILEFa0R0gIiIi\nIiIiIiIiIiIiKgsXFxfx+OHDh0brP3r0SGdbIiIiIiIiIqLywgReIiIiIiIiIiIiIiIiqtJatmwp\nHicmJhqtr1lHsy0RERERERERUXlhAi8RERERERERERERERFVaX5+fuLxhQsXDNZNTU1FUlISAMDD\nwwPu7u5W7RsRERERERERkS5M4CUiIiIiIiIiIiIiIqIqbdCgQeJxaGiowboHDx4Uj4cMGWK1PhER\nERERERERGcIEXiIiIiIiIiIiIiIiIqrSgoOD4eXlBQA4ceIELl26pLOeSqXCV199JZYnTJhQLv0j\nIiIiIiIiIiqOCbxERERERERERERERERUaYWEhEAikUAikaBXr14668hkMixZskQsT506FQ8ePChR\nb9GiRYiIiAAAdOvWDQMHDrRKn4mIiIiIiIiIjJFXdAeIiIiIiIiIiIiIiIjo2ZOYmIj169drPXfl\nyhXx+PLly1i8eLHW63369EGfPn1Kdb5Zs2Zh9+7d+OOPP3D16lX4+/tj1qxZ8PX1xePHj7F161aE\nh4cDAFxcXLB27dpSnYeIiIiIiIiIyBKYwEtEREREREREREREREQWd/v2bXzwwQd6X79y5YpWQi8A\nyOXyUifwyuVy/Pbbb5g4cSJ+//13pKSkYPny5SXq1a9fH9u3b8dzzz1XqvMQEREREREREVmCtKI7\nQERERERERERERERERGQJtWrVwv79+7Fnzx48//zzaNCgAezs7FCnTh106tQJq1atQnR0NLp27VrR\nXSUiIiIiIiKiao4r8BIREREREREREREREZHF9erVC4IglDnO9OnTMX36dLPajBgxAiNGjCjzuYmI\niIiIiIiIrIUr8BIREREREREREREREREREREREREREZUjJvASERERERERERERERERERERERERERGV\nIybwEhERERERERERERERERERERERERERlSMm8BIREREREREREREREREREREREREREZUjJvASERER\nERERERERERERERERERERERGVIybwEhERERERERERERERERERUZWmVgvIziuAWi1UdFeIiIiICADU\naiDvaeF/SSd5RXeAiIiIiIiIiIiIiIiIiIiIqDRi7mdgXXgCQqNSkJOvgoONDIP9vDCze1P41nUC\nUJjcqyxQwVYqhbJABQCoYSuHVCrRet1eLhOfKyt9MU05V1EycvF+EhEREVUJKVHAmW+AmL1AfjZg\nUwPwHQF0mQt4+VV07yoVJvASERERERERERERERERERFRlbM34h7m74hEgcaquzn5Kuy6dA/7Iu7j\njf4tEK/IwoErycgt0F75TSoBAhrWhpODDc7cfKQ3+ddcxROK7eVSDGrjiR7NPXA6/iFCo/UnGsfc\n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\niIhIaPJW+uYswYR3AbxuOLzHN7/x7xuBm4laie32RQzmoyorSNSn1I6mnKj6G0bADy/pEXJ4t/lV\nm7TbqsArrdlV0yHvpcD/MJpO312cIiIiIiIiItIsrrzySgYMGMBll13GZZddRp8+fViyZAk/+tGP\nIt7XRRddFFSIdvXq1f7wbnJyMkOHDq13n8GDBzN27NgGj7EtqRHg/dbdTCMRERERkbbAsuwqS9ma\npsHo1ERW7TrY3EOr1wDjc6Y4sxltbifOOIXH9gUJnIYVVuWyVsnywLYFvgqylUUqjBpKldz6VA/h\nqniUiIhI21ecF0YA1/bNb666q92Fd922g9+6bwdgWdRDdDaCm4dlW9/BpvHnSg7TYPLQPo3eT6TZ\n1QO8qAKvtGaJqb6lWOr6B9J0+l6vWIJFRERERERERJrc7Nmzm3sINTzzzDP+7WCq70rtzj7LVeWx\nKvCKiIiISDjyi0pYlPMp6/OKKXN7iXU5GJ2ayIjkBI6XtvybxMaY75DlWlilMpnTOFNJq12Edyvk\nr4GM+Y0TcA2lSm59agvhqniUiIhI27ZtfngB3Pw1viqp7Si867FNZrp/wl77fAD22efzXWNvvfu5\nbQeLPaMbe3iYBszNTCOlR8dG7yviqn05MFSBV1q91Im+pVje+C188uaZ5w0nTN0E3S9ptqGJiIiI\niIiISMtz6NAh1q9fD4DT6eS2225r5hG1XjUq8CrAKyIiIiIhWpt7kJkrduOxzlSeKnN7WbXrYKup\nvFs9vNuuuUt9lXIjUXG3ulCq5AY8Th0hXBWPEhERabssC/LXhrevuxT2hrqvQXNWVg13BQjbhu3W\nRfzWc7s/vAtQYtc/t3Pbjiqh38ZgGjDiogRmXJfcOsO7AEb7XslBAd62KjEVbsiC/0s785ztgc69\nmm9MIiIiIiIiItIiPffcc3i9vovrP/zhD0lMTGzmEbVeNQK837qxbRujXZUYExEREZFw5ReV1Ajv\ntha/uj6ZhzfsZ4ozW+Hdylxxvkq5jSWYKrmG6UusWLX8XOoL4VYUj9q2wFdtz13qe08pY32hX4V3\nRUREWidPWfhV/J2x4C4Lvn3cuZD+Z1g1tdmq9hpGgBCv6YTh98PRA/75jseM4VX3ZfzVk06+3adK\nc6dpcE6XBDhWe1+ldjTZ1ndY7BkdkfDuyh9fxbLthWTnHaLM7SXGaTIypRu3DenN4PPOxjRb+7nn\n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\nhNtrjG2pTu/qyvzNiYfn7/766B5TNDB27Nhi7li+fHk++9nPNtl3/fr1qaurS5IMGTIkgwcP7jJz\ntre/+puv5/8cdWLe+eX/n0+8+6v0rdh+ADdBV//lJujJJb9197NjBuc7nx/TY/Y3AF2bnFIau3PK\ne//rf2Tstv/Y57do7G97R6Eyi3eelFt3TC1pRknSI3M4AF2PAl4AAACAMmpoaMj1119ffH3//ffv\nVUi720033ZRf/epXWbFiRZYuXZonn3wyZ511VqeY8/vf/37ee++9JLsKf/cs3t3t1FNPzQ033JAr\nr7wyO3bsyPXXX58HH3ywTesHoGWVlRXpd9Cub/lXZ1eRb2tu//1ou61j7C4o3rmzUCwo7ohC4s4y\nxoc7d6ZPdVUqKyvSk5xzzjm5+eabkyQLFy7M1Vdf3WTfJ554otiePHlyl5qzHEaPPTWjx87PzoaG\nbN22JQcd1Df127YkSfr07b9/7fqtSa++Ob9Xr5xzAF8HjbX7HVTd4/Y3AF2bnFI6o8eemoxdlJ0N\nDdmy5c9JWpFPdrf7DchnGgr5eUqXT3pyDgeg6/H7rwEAAADK6JlnnsnatWuTJBMnTsz48eMb7VdV\nVZUrrrii+HrevHmdZs758+cX29/+9rebnHfGjBk5+OBdv8VhwYIF2bZtW6vXDkDXtLuguLq6Mv37\n9Er/Pr3a1O7qY/TU4saJEydm2LBhSZIlS5bkxRdfbLRfQ0NDbrvttuLradOmdak5y6myqir9+h+S\n6oMOSv9DDk3/Qw7d//aAgenft/cBfx001u6J+xuArk1OKb3KqqrW55Pd7V7VJc8nPTmHA9D1dOoC\n3gULFmTq1KkZNWpU+vTpkyFDhmTChAm5+eabi7e8lMLmzZvz8MMP5/LLL8+ECRMyePDg9OrVKwMG\nDMhxxx2XSy65JIsWLUqhUCjZnAAAAEDPtHDhwmK7pZtUzj333Eaf68g5f/e73+WNN95Ikhx//PE5\n+uijmxyrpqYmp59+epLk/fffz69//etWrRsA6JqqqqoyZ86c4utLLrkkGzZs2Kff7Nmzs2LFiiTJ\naaedlrPPPrvR8e69995UVFSkoqIikyZNKsucAED3JKcAAJ1JdUcvoDFbtmzJxRdfnAULFuz15xs3\nbszGjRvz3HPP5fbbb89DDz2UU0899YDmuvXWW/O9730v9fX1+7y3efPmrF69OqtXr87999+f008/\n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\n8CxevDjHHnvsfj1vn0H34muQcnB2sD9kFOCjfB3S3pwd7C85BSglX8OUkjOGPckswIHwNUspOVP4\nKDmFnkwBbycxceLEDBs2LEmyZMmSvPjii432a2hoyG233VZ8PW3atLKsj+7jy1/+crF96623Ntnv\nRz/6Ud5///0kyXnnnVe8Hr6psebOnVvs/1F/+tOf8tBDDyVJ+vbtmylTprRp7ZTH5ZdfXgxFw4YN\ny+LFi/Pxj3+8VWPYZ9B9yCiUi7ODlsgowEfJKZSDs4P9IacApSTjUGrOGHaTWYADIaNQas4U9iSn\n0KMV6DTuuOOOQpJCksIJJ5xQWL9+/T59rrrqqmKf0047rQNWSWdyzz33FPfDpZdeul/PrF+/vlBT\nU1NIUqisrCw8+uij+/R5/vnnC/369SskKVRXVxdWrVrV5Hhf+tKXimv4yle+Uti+ffte72/evLkw\nceLEYp/vfe97rfocKa/LL7+8+Hc1bNiwwiuvvNKmcewz6F5kFFpLRqHUZBSgKXIKrSGj0B7kFKA9\nyDg0RZ6hrWQWoBRkFJoio3Ag5BR6uopCoVBovsSXctmxY0cmT56cp556KsmunyiYMWNGamtr8847\n72TevHl59tlnkyQDBw7Ms88+mxNOOKEjl0wZrVmzJnffffdef/bb3/42jz32WJLkxBNPzN/+7d/u\n9f7nPve5fO5zn9tnrPvuuy/Tp09PklRWVmbatGn5/Oc/n6qqqixbtiz33Xdf6uvrkyQ33nhjvvvd\n7za5rj/96U859dRT8+abbxbXMX369Bx++OF5/fXXc9ddd+X1119Pkpx00klZunRp+vfv37b/EWhX\n1157bW688cYkSUVFRf7lX/4lxx13XIvPjR8/vvirCPZkn0H3IaPQHBmF9iajAM2RU2iKjEI5yClA\ne5FxSOQZSkdmAUpFRiGRUSgtOQXiBt7O5r333iv8zd/8TbE6v7GPESNGFJYtW9bRS6XMFi9e3Oy+\naOzjuuuua3K8O+64o9CnT58mn62qqirMmTNnv9a2cuXKwnHHHdfsWiZMmFBYu3Ztif7XoD3s+ZNB\nrfm45557mhzTPoPuQ0ahKTIK7U1GAVoip9AYGYVykFOA9iTjIM9QKjILUEoyCjIKpSSnQKFQHTqV\nmpqaPPbYY3n00Ufz05/+NMuXL8+GDRtSU1OT0aNH58ILL8zMmTNzyCGHdPRS6eK+8Y1v5Mwzz8yd\nd96ZRYsWpa6uLjt37szhhx+eM844I1//+tfzyU9+cr/Gqq2tzW9+85vcfffd+fnPf55XXnklmzZt\nyqBBg3LiiSfmoosuysUXX5zKysp2/qzobOwz6D5kFMrF2UE52GfQvcgplIOzg3Kx14DdZBxKzRlD\nKdlP0HPJKJSaM4VSs6foaioKhUKhoxcBAAAAAAAAAAAAAD2F8m8AAAAAAAAAAAAAKCMFvAAAAAAA\nAAAAAABQRgp4AQAAAAAAAAAAAKCMFPACAAAAAAAAAAAAQBkp4AUAAAAAAAAAAACAMlLACwAAAAAA\nAAAAAABlpIAXAAAAAAAAAAAAAMpIAS8AAAAAAAAAAAAAlJECXgAAAAAAAAAAAAAoIwW8AAAAAAAA\nAAAAAFBGCngBAAAAAAAAAAAAoIwU8AIAAAAAAAAAAABAGSngBQAAAAAAAAAAAIAyUsALAAAAAAAA\nAAAAAGWkgBcAAAAAAAAAAAAAykgBLwAAAAAAAAAAAACUkQJeAAAAAAAAAAAAACgjBbwAAAAAAAAA\nAAAAUEYKeAEAAAAAAAAAAACgjBTwAgAAAAAAAAAAAEAZKeAFAAAAAAAAAAAAgDJSwAsAAAAAAAAA\nAAAAZaSAFwAAAAAAAAAAAADKSAEvAAAAAAAAAAAAAJSRAl4AAAAAAAAAAAAAKCMFvAAAAAAAAAAA\nAABQRgp4AQAAAAAAAAAAAKCMFPACAAAAAAAAAAAAQBkp4AUAAAAAAAAAAACAMlLACwAAAAAAAAAA\nAABlpIAXAAAAAAAAAAAAAMpIAS8AAAAAAAAAAAAAlJECXgAAAAAAAAAAAAAoIwW8AAAAAAAAAAAA\nAFBGCngBAAAAAAAAAAAAoIwU8AIAAAAAAAAAAABAGSngBQAAAAAAAAAAAIAyUsALAAAAAAAAAAAA\nAGWkgBcAAAAAAAAAAAAAyuj/Ak+HcVyOTkwvAAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": { - "tags": [], - "image/png": { - "width": 800 - } - }, - "execution_count": 8 - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "14mT7T7Q6erR", - "colab_type": "text" - }, - "source": [ - "Extras below\n", - "\n", - "---\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "42_zEpW6W_N1", - "colab_type": "code", - "colab": {} - }, - "source": [ - "!git pull" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "9bVTcveIOzDd", - "colab_type": "code", - "colab": {} - }, - "source": [ - "%cd yolov3" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "id": "odMr0JFnCEyb", - "colab": {} - }, - "source": [ - "%ls" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "id": "uB3v5hj_CEyI", - "colab": {} - }, - "source": [ - "# Unit Tests\n", - "!python3 detect.py # detect 2 persons, 1 tie\n", - "!python3 test.py --data data/coco_32img.data # test mAP = 0.8\n", - "!python3 train.py --data data/coco_32img.data --epochs 3 --nosave # train 3 epochs" - ], - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab_type": "code", - "id": "6D0si0TNCEx5", - "colab": {} - }, - "source": [ - "# Evolve Hyperparameters\n", - "!python3 train.py --data data/coco.data --img-size 320 --epochs 1 --evolve" - ], - "execution_count": 0, - "outputs": [] - } - ] -} From 6736d7d125b574cdb6b18db4d52a7ee96dcf2233 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 10 Apr 2020 12:47:07 -0700 Subject: [PATCH 2296/2595] swap cv2.INTER_AREA for cv2.INTER_LINEAR --- utils/datasets.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 4fa74ac3..3d831e71 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -240,7 +240,7 @@ class LoadStreams: # multiple IP or RTSP cameras raise StopIteration # Letterbox - img = [letterbox(x, new_shape=self.img_size, auto=self.rect, interp=cv2.INTER_LINEAR)[0] for x in img0] + img = [letterbox(x, new_shape=self.img_size, auto=self.rect)[0] for x in img0] # Stack img = np.stack(img, 0) @@ -508,8 +508,7 @@ def load_image(self, index): h0, w0 = img.shape[:2] # orig hw r = self.img_size / max(h0, w0) # resize image to img_size if r < 1 or (self.augment and (r != 1)): # always resize down, only resize up if training with augmentation - interp = cv2.INTER_LINEAR if self.augment else cv2.INTER_AREA # LINEAR for training, AREA for testing - img = cv2.resize(img, (int(w0 * r), int(h0 * r)), interpolation=interp) + img = cv2.resize(img, (int(w0 * r), int(h0 * r)), interpolation=cv2.INTER_LINEAR) return img, (h0, w0), img.shape[:2] # img, hw_original, hw_resized else: return self.imgs[index], self.img_hw0[index], self.img_hw[index] # img, hw_original, hw_resized @@ -589,8 +588,7 @@ def load_mosaic(self, index): return img4, labels4 -def letterbox(img, new_shape=(416, 416), color=(114, 114, 114), - auto=True, scaleFill=False, scaleup=True, interp=cv2.INTER_AREA): +def letterbox(img, new_shape=(416, 416), color=(114, 114, 114), auto=True, scaleFill=False, scaleup=True): # Resize image to a 32-pixel-multiple rectangle https://github.com/ultralytics/yolov3/issues/232 shape = img.shape[:2] # current shape [height, width] if isinstance(new_shape, int): @@ -616,7 +614,7 @@ def letterbox(img, new_shape=(416, 416), color=(114, 114, 114), dh /= 2 if shape[::-1] != new_unpad: # resize - img = cv2.resize(img, new_unpad, interpolation=interp) # INTER_AREA is better, INTER_LINEAR is faster + img = cv2.resize(img, new_unpad, interpolation=cv2.INTER_LINEAR) top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1)) left, right = int(round(dw - 0.1)), int(round(dw + 0.1)) img = cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color) # add border @@ -651,9 +649,8 @@ def random_affine(img, targets=(), degrees=10, translate=.1, scale=.1, shear=10, # Combined rotation matrix M = S @ T @ R # ORDER IS IMPORTANT HERE!! - changed = (border != 0) or (M != np.eye(3)).any() - if changed: - img = cv2.warpAffine(img, M[:2], dsize=(width, height), flags=cv2.INTER_AREA, borderValue=(114, 114, 114)) + if (border != 0) or (M != np.eye(3)).any(): # image changed + img = cv2.warpAffine(img, M[:2], dsize=(width, height), flags=cv2.INTER_LINEAR, borderValue=(114, 114, 114)) # Transform label coordinates n = len(targets) From aa8b1098dd4a3776e2f3ce588d7047932f2f7d74 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 10 Apr 2020 16:28:59 -0700 Subject: [PATCH 2297/2595] adapt mosaic to img channel count --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 3d831e71..8f1341e3 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -527,7 +527,6 @@ def load_mosaic(self, index): labels4 = [] s = self.img_size xc, yc = [int(random.uniform(s * 0.5, s * 1.5)) for _ in range(2)] # mosaic center x, y - img4 = np.full((s * 2, s * 2, 3), 114, dtype=np.uint8) # base image with 4 tiles indices = [index] + [random.randint(0, len(self.labels) - 1) for _ in range(3)] # 3 additional image indices for i, index in enumerate(indices): # Load image @@ -535,6 +534,7 @@ def load_mosaic(self, index): # place img in img4 if i == 0: # top left + img4 = np.full((s * 2, s * 2, img.shape[2]), 114, dtype=np.uint8) # base image with 4 tiles x1a, y1a, x2a, y2a = max(xc - w, 0), max(yc - h, 0), xc, yc # xmin, ymin, xmax, ymax (large image) x1b, y1b, x2b, y2b = w - (x2a - x1a), h - (y2a - y1a), w, h # xmin, ymin, xmax, ymax (small image) elif i == 1: # top right From 398f8eadec34f814fa0eb43fb4f7120a568b1bc7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 10 Apr 2020 16:34:32 -0700 Subject: [PATCH 2298/2595] add thr=0.10 to kmean_anchors() --- utils/utils.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 4a1a07ab..ab121c64 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -688,11 +688,12 @@ def coco_single_class_labels(path='../coco/labels/train2014/', label_class=43): shutil.copyfile(src=img_file, dst='new/images/' + Path(file).name.replace('txt', 'jpg')) # copy images -def kmean_anchors(path='../coco/train2017.txt', n=12, img_size=(320, 1024)): - # from utils.utils import *; _ = kmean_anchors() - # Creaters kmeans anchors for use in *.cfg files +def kmean_anchors(path='../coco/train2017.txt', n=12, img_size=(320, 1024), thr=0.10): + # Creates kmeans anchors for use in *.cfg files: from utils.utils import *; _ = kmean_anchors() + # n: number of anchors + # img_size: (min, max) image size used for multi-scale training (can be same values) + # thr: IoU threshold hyperparameter used for training (0.0 - 1.0) from utils.datasets import LoadImagesAndLabels - thr = 0.225 # IoU threshold def print_results(k): k = k[np.argsort(k.prod(1))] # sort small to large From 9bc3a551d97aaf93d9b36f4b539653a6ed7df80a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 10 Apr 2020 17:24:49 -0700 Subject: [PATCH 2299/2595] histogram equalization added to augmentation --- utils/datasets.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/utils/datasets.py b/utils/datasets.py index 8f1341e3..efd21f02 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -520,6 +520,11 @@ def augment_hsv(img, hgain=0.5, sgain=0.5, vgain=0.5): np.clip(img_hsv[:, :, 0], None, 179, out=img_hsv[:, :, 0]) # inplace hue clip (0 - 179 deg) cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) # no return needed + # Histogram equalization + if random.random() < 0.2: + for i in range(3): + img[:, :, i] = cv2.equalizeHist(img[:, :, i]) + def load_mosaic(self, index): # loads images in a mosaic From 4bbfda5cdef05e8f841a8dfe03cf2c93d66a4f14 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 10 Apr 2020 17:29:57 -0700 Subject: [PATCH 2300/2595] hist equalization --- utils/datasets.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index efd21f02..1755b177 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -521,9 +521,9 @@ def augment_hsv(img, hgain=0.5, sgain=0.5, vgain=0.5): cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) # no return needed # Histogram equalization - if random.random() < 0.2: - for i in range(3): - img[:, :, i] = cv2.equalizeHist(img[:, :, i]) + # if random.random() < 0.2: + # for i in range(3): + # img[:, :, i] = cv2.equalizeHist(img[:, :, i]) def load_mosaic(self, index): From 2cf23c4aee2917793f2b1a0a7b5b71cb3bad4b0a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 10 Apr 2020 18:58:34 -0700 Subject: [PATCH 2301/2595] add MixConv2d() layer --- utils/datasets.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 1755b177..e2af1aae 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -507,8 +507,9 @@ def load_image(self, index): assert img is not None, 'Image Not Found ' + img_path h0, w0 = img.shape[:2] # orig hw r = self.img_size / max(h0, w0) # resize image to img_size - if r < 1 or (self.augment and (r != 1)): # always resize down, only resize up if training with augmentation - img = cv2.resize(img, (int(w0 * r), int(h0 * r)), interpolation=cv2.INTER_LINEAR) + if r < 1 or (self.augment and r != 1): # always resize down, only resize up if training with augmentation + interp = cv2.INTER_AREA if r < 1 and not self.augment else cv2.INTER_LINEAR + img = cv2.resize(img, (int(w0 * r), int(h0 * r)), interpolation=interp) return img, (h0, w0), img.shape[:2] # img, hw_original, hw_resized else: return self.imgs[index], self.img_hw0[index], self.img_hw[index] # img, hw_original, hw_resized From 58edfc4a84719366a8448c6c989ec6118d4a92d1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 11 Apr 2020 10:45:33 -0700 Subject: [PATCH 2302/2595] kaiming weight init --- models.py | 1 + utils/torch_utils.py | 9 +++++++++ utils/utils.py | 9 --------- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/models.py b/models.py index 683c3a7f..4ecf99e6 100755 --- a/models.py +++ b/models.py @@ -225,6 +225,7 @@ class Darknet(nn.Module): self.module_defs = parse_model_cfg(cfg) self.module_list, self.routs = create_modules(self.module_defs, img_size) self.yolo_layers = get_yolo_layers(self) + # torch_utils.initialize_weights(self) # Darknet Header https://github.com/AlexeyAB/darknet/issues/2914#issuecomment-496675346 self.version = np.array([0, 2, 5], dtype=np.int32) # (int32) version info: major, minor, revision diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 5819e68e..f63bc110 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -50,6 +50,15 @@ def time_synchronized(): return time.time() +def initialize_weights(model): + for m in model.modules(): + if isinstance(m, nn.Conv2d): + nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu') + elif isinstance(m, nn.BatchNorm2d): + m.weight.data.fill_(1) + m.bias.data.zero_() + + def fuse_conv_and_bn(conv, bn): # https://tehnokv.com/posts/fusing-batchnorm-and-conv/ with torch.no_grad(): diff --git a/utils/utils.py b/utils/utils.py index ab121c64..60443b0d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -93,15 +93,6 @@ def coco80_to_coco91_class(): # converts 80-index (val2014) to 91-index (paper) return x -def weights_init_normal(m): - classname = m.__class__.__name__ - if classname.find('Conv') != -1: - torch.nn.init.normal_(m.weight.data, 0.0, 0.03) - elif classname.find('BatchNorm2d') != -1: - torch.nn.init.normal_(m.weight.data, 1.0, 0.03) - torch.nn.init.constant_(m.bias.data, 0.0) - - def xyxy2xywh(x): # Transform box coordinates from [x1, y1, x2, y2] (where xy1=top-left, xy2=bottom-right) to [x, y, w, h] y = torch.zeros_like(x) if isinstance(x, torch.Tensor) else np.zeros_like(x) From dcc2e99fb25251a4e7363a814f6e3b038987c48a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 11 Apr 2020 10:55:49 -0700 Subject: [PATCH 2303/2595] get_yolo_layers() --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 4ecf99e6..90d94ebe 100755 --- a/models.py +++ b/models.py @@ -334,7 +334,7 @@ class Darknet(nn.Module): def get_yolo_layers(model): - return [i for i, x in enumerate(model.module_defs) if x['type'] == 'yolo'] # [82, 94, 106] for yolov3 + return [i for i, m in enumerate(model.module_list) if m.__class__.__name__ == 'YOLOLayer'] # [89, 101, 1113] def load_darknet_weights(self, weights, cutoff=-1): From 7be71b02e2013a2b4be32511002f1ea6987afaca Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 11 Apr 2020 10:56:20 -0700 Subject: [PATCH 2304/2595] get_yolo_layers() --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 90d94ebe..dea75221 100755 --- a/models.py +++ b/models.py @@ -334,7 +334,7 @@ class Darknet(nn.Module): def get_yolo_layers(model): - return [i for i, m in enumerate(model.module_list) if m.__class__.__name__ == 'YOLOLayer'] # [89, 101, 1113] + return [i for i, m in enumerate(model.module_list) if m.__class__.__name__ == 'YOLOLayer'] # [89, 101, 113] def load_darknet_weights(self, weights, cutoff=-1): From b574f765ce9ef87be6b33c67e1aa867b0209fbe0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 11 Apr 2020 11:04:10 -0700 Subject: [PATCH 2305/2595] add warning to plot_results() --- utils/utils.py | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 60443b0d..202fa734 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -966,18 +966,21 @@ def plot_results(start=0, stop=0, bucket='', id=()): # from utils.utils import else: files = glob.glob('results*.txt') + glob.glob('../../Downloads/results*.txt') for f in sorted(files): - results = np.loadtxt(f, usecols=[2, 3, 4, 8, 9, 12, 13, 14, 10, 11], ndmin=2).T - n = results.shape[1] # number of rows - x = range(start, min(stop, n) if stop else n) - for i in range(10): - y = results[i, x] - if i in [0, 1, 2, 5, 6, 7]: - y[y == 0] = np.nan # dont show zero loss values - # y /= y[0] # normalize - ax[i].plot(x, y, marker='.', label=Path(f).stem, linewidth=2, markersize=8) - ax[i].set_title(s[i]) - if i in [5, 6, 7]: # share train and val loss y axes - ax[i].get_shared_y_axes().join(ax[i], ax[i - 5]) + try: + results = np.loadtxt(f, usecols=[2, 3, 4, 8, 9, 12, 13, 14, 10, 11], ndmin=2).T + n = results.shape[1] # number of rows + x = range(start, min(stop, n) if stop else n) + for i in range(10): + y = results[i, x] + if i in [0, 1, 2, 5, 6, 7]: + y[y == 0] = np.nan # dont show zero loss values + # y /= y[0] # normalize + ax[i].plot(x, y, marker='.', label=Path(f).stem, linewidth=2, markersize=8) + ax[i].set_title(s[i]) + if i in [5, 6, 7]: # share train and val loss y axes + ax[i].get_shared_y_axes().join(ax[i], ax[i - 5]) + except: + print('Warning: Plotting error for %s, skipping file' % f) fig.tight_layout() ax[1].legend() From a34219a54bbe80a5de2dcb67f90f213e5a006c9e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 11 Apr 2020 12:18:54 -0700 Subject: [PATCH 2306/2595] pading from (k-1) // 2 to k // 2 --- models.py | 2 +- utils/layers.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index dea75221..905797d2 100755 --- a/models.py +++ b/models.py @@ -28,7 +28,7 @@ def create_modules(module_defs, img_size): out_channels=filters, kernel_size=size, stride=stride, - padding=(size - 1) // 2 if mdef['pad'] else 0, + padding=size // 2 if mdef['pad'] else 0, groups=mdef['groups'] if 'groups' in mdef else 1, bias=not bn)) else: # multiple-size conv diff --git a/utils/layers.py b/utils/layers.py index 6424fba7..dce3fed2 100644 --- a/utils/layers.py +++ b/utils/layers.py @@ -65,7 +65,7 @@ class MixConv2d(nn.Module): # MixConv: Mixed Depthwise Convolutional Kernels ht out_channels=ch[g], kernel_size=k[g], stride=stride, - padding=(k[g] - 1) // 2, # 'same' pad + padding=k[g] // 2, # 'same' pad dilation=dilation, bias=bias) for g in range(groups)]) From ed1d4f5ae7c03a271d8e02466a5560b0366c5c05 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 11 Apr 2020 12:37:03 -0700 Subject: [PATCH 2307/2595] k for kernel_size --- models.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/models.py b/models.py index 905797d2..01dc1edd 100755 --- a/models.py +++ b/models.py @@ -21,20 +21,20 @@ def create_modules(module_defs, img_size): if mdef['type'] == 'convolutional': bn = mdef['batch_normalize'] filters = mdef['filters'] - size = mdef['size'] + k = mdef['size'] # kernel size stride = mdef['stride'] if 'stride' in mdef else (mdef['stride_y'], mdef['stride_x']) - if isinstance(size, int): # single-size conv + if isinstance(k, int): # single-size conv modules.add_module('Conv2d', nn.Conv2d(in_channels=output_filters[-1], out_channels=filters, - kernel_size=size, + kernel_size=k, stride=stride, - padding=size // 2 if mdef['pad'] else 0, + padding=k // 2 if mdef['pad'] else 0, groups=mdef['groups'] if 'groups' in mdef else 1, bias=not bn)) else: # multiple-size conv modules.add_module('MixConv2d', MixConv2d(in_ch=output_filters[-1], out_ch=filters, - k=size, + k=k, stride=stride, bias=not bn)) @@ -58,10 +58,10 @@ def create_modules(module_defs, img_size): modules.running_var = torch.tensor([0.0524, 0.0502, 0.0506]) elif mdef['type'] == 'maxpool': - size = mdef['size'] + k = mdef['size'] # kernel size stride = mdef['stride'] - maxpool = nn.MaxPool2d(kernel_size=size, stride=stride, padding=(size - 1) // 2) - if size == 2 and stride == 1: # yolov3-tiny + maxpool = nn.MaxPool2d(kernel_size=k, stride=stride, padding=(k - 1) // 2) + if k == 2 and stride == 1: # yolov3-tiny modules.add_module('ZeroPad2d', nn.ZeroPad2d((0, 1, 0, 1))) modules.add_module('MaxPool2d', maxpool) else: From ada29581053109b07cafb587105b74f735ba1e3d Mon Sep 17 00:00:00 2001 From: "Timothy M. Shead" Date: Sun, 12 Apr 2020 11:00:50 -0600 Subject: [PATCH 2308/2595] Fix argparse string escapes in train.py. (#1045) --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 04292736..9f21b190 100644 --- a/train.py +++ b/train.py @@ -386,7 +386,7 @@ if __name__ == '__main__': parser.add_argument('--accumulate', type=int, default=4, help='batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path') parser.add_argument('--data', type=str, default='data/coco2017.data', help='*.data path') - parser.add_argument('--multi-scale', action='store_true', help='adjust (67% - 150%) img_size every 10 batches') + parser.add_argument('--multi-scale', action='store_true', help='adjust (67%% - 150%%) img_size every 10 batches') parser.add_argument('--img-size', nargs='+', type=int, default=[416], help='train and test image-sizes') parser.add_argument('--rect', action='store_true', help='rectangular training') parser.add_argument('--resume', action='store_true', help='resume training from last.pt') From eda31c8bd0ee76e6c19ad13a94e13cd2943fa3e4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 12 Apr 2020 10:20:21 -0700 Subject: [PATCH 2309/2595] print speeds for save_json --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 164a580d..67006c75 100644 --- a/test.py +++ b/test.py @@ -188,7 +188,7 @@ def test(cfg, print(pf % (names[c], seen, nt[c], p[i], r[i], ap[i], f1[i])) # Print speeds - if verbose: + if verbose or save_json: t = tuple(x / seen * 1E3 for x in (t0, t1, t0 + t1)) + (img_size, img_size, batch_size) # tuple print('Speed: %.1f/%.1f/%.1f ms inference/NMS/total per %gx%g image at batch-size %g' % t) From efc754a794d3796055b12bfd6dfe3dbfbd6603db Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 12 Apr 2020 12:49:23 -0700 Subject: [PATCH 2310/2595] add generations arg to kmeans() --- utils/utils.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 202fa734..11fd4c61 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -679,11 +679,12 @@ def coco_single_class_labels(path='../coco/labels/train2014/', label_class=43): shutil.copyfile(src=img_file, dst='new/images/' + Path(file).name.replace('txt', 'jpg')) # copy images -def kmean_anchors(path='../coco/train2017.txt', n=12, img_size=(320, 1024), thr=0.10): +def kmean_anchors(path='../coco/train2017.txt', n=12, img_size=(320, 1024), thr=0.10, gen=1000): # Creates kmeans anchors for use in *.cfg files: from utils.utils import *; _ = kmean_anchors() # n: number of anchors # img_size: (min, max) image size used for multi-scale training (can be same values) # thr: IoU threshold hyperparameter used for training (0.0 - 1.0) + # gen: generations to evolve anchors using genetic algorithm from utils.datasets import LoadImagesAndLabels def print_results(k): @@ -742,8 +743,8 @@ def kmean_anchors(path='../coco/train2017.txt', n=12, img_size=(320, 1024), thr= # Evolve npr = np.random - f, sh, ng, mp, s = fitness(k), k.shape, 1000, 0.9, 0.1 # fitness, generations, mutation prob, sigma - for _ in tqdm(range(ng), desc='Evolving anchors'): + f, sh, mp, s = fitness(k), k.shape, 0.9, 0.1 # fitness, generations, mutation prob, sigma + for _ in tqdm(range(gen), desc='Evolving anchors'): v = np.ones(sh) while (v == 1).all(): # mutate until a change occurs (prevent duplicates) v = ((npr.random(sh) < mp) * npr.random() * npr.randn(*sh) * s + 1).clip(0.3, 3.0) # 98.6, 61.6 From 46726dad139b1cad31b9942b417b6c3e29aa63f7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 12 Apr 2020 13:02:00 -0700 Subject: [PATCH 2311/2595] torch.tensor(ng, device=device) --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 01dc1edd..7884e603 100755 --- a/models.py +++ b/models.py @@ -138,7 +138,7 @@ class YOLOLayer(nn.Module): self.na = len(anchors) # number of anchors (3) self.nc = nc # number of classes (80) self.no = nc + 5 # number of outputs (85) - self.nx, self.ny = 0, 0 # initialize number of x, y gridpoints + self.nx, self.ny, self.ng = 0, 0, 0 # initialize number of x, y gridpoints self.anchor_vec = self.anchors / self.stride self.anchor_wh = self.anchor_vec.view(1, self.na, 1, 1, 2) @@ -148,7 +148,7 @@ class YOLOLayer(nn.Module): def create_grids(self, ng=(13, 13), device='cpu'): self.nx, self.ny = ng # x and y grid size - self.ng = torch.Tensor(ng).to(device) + self.ng = torch.tensor(ng, device=device) # build xy offsets if not self.training: From 1038b0d2693cbcf62c1f209451ecedf29d9baa1a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 12 Apr 2020 18:22:54 -0700 Subject: [PATCH 2312/2595] multi-scale update --- train.py | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/train.py b/train.py index 9f21b190..56b383a0 100644 --- a/train.py +++ b/train.py @@ -56,23 +56,27 @@ if hyp['fl_gamma']: def train(): cfg = opt.cfg data = opt.data - img_size, img_size_test = opt.img_size if len(opt.img_size) == 2 else opt.img_size * 2 # train, test sizes epochs = opt.epochs # 500200 batches at bs 64, 117263 images = 273 epochs batch_size = opt.batch_size accumulate = opt.accumulate # effective bs = batch_size * accumulate = 16 * 4 = 64 weights = opt.weights # initial training weights + imgsz_min, imgsz_max, img_size_test = opt.img_size # img sizes (min, max, test) - # Initialize - gs = 32 # (pixels) grid size - assert math.fmod(img_size, gs) == 0, '--img-size must be a %g-multiple' % gs - init_seeds() + # Image Sizes + gs = 64 # (pixels) grid size + assert math.fmod(imgsz_min, gs) == 0, '--img-size %g must be a %g-multiple' % (imgsz_min, gs) + opt.multi_scale |= imgsz_min != imgsz_max # multi if different (min, max) if opt.multi_scale: - img_sz_min = round(img_size / gs / 1.5) + 1 - img_sz_max = round(img_size / gs * 1.5) - img_size = img_sz_max * gs # initiate with maximum multi_scale size - print('Using multi-scale %g - %g' % (img_sz_min * gs, img_size)) + if imgsz_min == imgsz_max: + imgsz_min //= 1.5 + imgsz_max //= 0.667 + grid_min, grid_max = imgsz_min // gs, imgsz_max // gs + imgsz_max = grid_max * gs # initialize with maximum multi_scale size + print('Using multi-scale %g - %g' % (grid_min * gs, imgsz_max)) + img_size = imgsz_max # Configure run + init_seeds() data_dict = parse_data_cfg(data) train_path = data_dict['train'] test_path = data_dict['valid'] @@ -248,7 +252,7 @@ def train(): # Multi-Scale training if opt.multi_scale: if ni / accumulate % 1 == 0: #  adjust img_size (67% - 150%) every 1 batch - img_size = random.randrange(img_sz_min, img_sz_max + 1) * gs + img_size = random.randrange(grid_min, grid_max + 1) * gs sf = img_size / max(imgs.shape[2:]) # scale factor if sf != 1: ns = [math.ceil(x * sf / gs) * gs for x in imgs.shape[2:]] # new shape (stretched to 32-multiple) @@ -387,7 +391,7 @@ if __name__ == '__main__': parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path') parser.add_argument('--data', type=str, default='data/coco2017.data', help='*.data path') parser.add_argument('--multi-scale', action='store_true', help='adjust (67%% - 150%%) img_size every 10 batches') - parser.add_argument('--img-size', nargs='+', type=int, default=[416], help='train and test image-sizes') + parser.add_argument('--img-size', nargs='+', type=int, default=[512], help='[min_train, max-train, test] img sizes') parser.add_argument('--rect', action='store_true', help='rectangular training') parser.add_argument('--resume', action='store_true', help='resume training from last.pt') parser.add_argument('--nosave', action='store_true', help='only save final checkpoint') @@ -403,6 +407,7 @@ if __name__ == '__main__': opt = parser.parse_args() opt.weights = last if opt.resume else opt.weights print(opt) + opt.img_size.extend([opt.img_size[-1]] * (3 - len(opt.img_size))) # extend to 3 sizes (min, max, test) device = torch_utils.select_device(opt.device, apex=mixed_precision, batch_size=opt.batch_size) if device.type == 'cpu': mixed_precision = False From 77e6bdd3c1ea410b25c407fef1df1dab98f9c27b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 12 Apr 2020 18:44:18 -0700 Subject: [PATCH 2313/2595] FLOPs at 480x640, BN init --- utils/torch_utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index f63bc110..9d2491f3 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -55,8 +55,8 @@ def initialize_weights(model): if isinstance(m, nn.Conv2d): nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu') elif isinstance(m, nn.BatchNorm2d): - m.weight.data.fill_(1) - m.bias.data.zero_() + m.eps = 1e-4 + m.momentum = 0.03 def fuse_conv_and_bn(conv, bn): @@ -99,7 +99,7 @@ def model_info(model, verbose=False): try: # FLOPS from thop import profile - macs, _ = profile(model, inputs=(torch.zeros(1, 3, 640, 640),)) + macs, _ = profile(model, inputs=(torch.zeros(1, 3, 480, 640),)) fs = ', %.1f GFLOPS' % (macs / 1E9 * 2) except: fs = '' From b8574add3738afdee403125e26ade94711a559aa Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 13 Apr 2020 17:48:30 -0700 Subject: [PATCH 2314/2595] new find_modules() fcn --- models.py | 6 +----- utils/torch_utils.py | 5 +++++ 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/models.py b/models.py index 7884e603..616cb924 100755 --- a/models.py +++ b/models.py @@ -224,7 +224,7 @@ class Darknet(nn.Module): self.module_defs = parse_model_cfg(cfg) self.module_list, self.routs = create_modules(self.module_defs, img_size) - self.yolo_layers = get_yolo_layers(self) + self.yolo_layers = torch_utils.find_modules(self, mclass=YOLOLayer) # torch_utils.initialize_weights(self) # Darknet Header https://github.com/AlexeyAB/darknet/issues/2914#issuecomment-496675346 @@ -333,10 +333,6 @@ class Darknet(nn.Module): torch_utils.model_info(self, verbose) -def get_yolo_layers(model): - return [i for i, m in enumerate(model.module_list) if m.__class__.__name__ == 'YOLOLayer'] # [89, 101, 113] - - def load_darknet_weights(self, weights, cutoff=-1): # Parses and loads the weights stored in 'weights' diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 9d2491f3..0e1ade3a 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -59,6 +59,11 @@ def initialize_weights(model): m.momentum = 0.03 +def find_modules(model, mclass=nn.Conv2d): + # finds layer indices matching module class 'mclass' + return [i for i, m in enumerate(model.module_list) if isinstance(m, mclass)] + + def fuse_conv_and_bn(conv, bn): # https://tehnokv.com/posts/fusing-batchnorm-and-conv/ with torch.no_grad(): From ca3a9fcb0baab7a3363312b41934f90833616e11 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 13 Apr 2020 17:56:12 -0700 Subject: [PATCH 2315/2595] return get_yolo_layers() --- models.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index 616cb924..7884e603 100755 --- a/models.py +++ b/models.py @@ -224,7 +224,7 @@ class Darknet(nn.Module): self.module_defs = parse_model_cfg(cfg) self.module_list, self.routs = create_modules(self.module_defs, img_size) - self.yolo_layers = torch_utils.find_modules(self, mclass=YOLOLayer) + self.yolo_layers = get_yolo_layers(self) # torch_utils.initialize_weights(self) # Darknet Header https://github.com/AlexeyAB/darknet/issues/2914#issuecomment-496675346 @@ -333,6 +333,10 @@ class Darknet(nn.Module): torch_utils.model_info(self, verbose) +def get_yolo_layers(model): + return [i for i, m in enumerate(model.module_list) if m.__class__.__name__ == 'YOLOLayer'] # [89, 101, 113] + + def load_darknet_weights(self, weights, cutoff=-1): # Parses and loads the weights stored in 'weights' From 0dd5f8eee8174ba8b89bf4ff0771b166b2e69cce Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 13 Apr 2020 18:25:59 -0700 Subject: [PATCH 2316/2595] code cleanup --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index 7884e603..853522bc 100755 --- a/models.py +++ b/models.py @@ -159,7 +159,7 @@ class YOLOLayer(nn.Module): self.anchor_vec = self.anchor_vec.to(device) self.anchor_wh = self.anchor_wh.to(device) - def forward(self, p, img_size, out): + def forward(self, p, out): ASFF = False # https://arxiv.org/abs/1911.09516 if ASFF: i, n = self.index, self.nl # index in layers, number of layers @@ -287,7 +287,7 @@ class Darknet(nn.Module): str = ' >> ' + ' + '.join(['layer %g %s' % x for x in zip(l, sh)]) x = module(x, out) # WeightedFeatureFusion(), FeatureConcat() elif name == 'YOLOLayer': - yolo_out.append(module(x, img_size, out)) + yolo_out.append(module(x, out)) else: # run module directly, i.e. mtype = 'convolutional', 'upsample', 'maxpool', 'batchnorm2d' etc. x = module(x) From 76fb8d48d43da1a46fcbe1d7142a1947ef162da6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 13 Apr 2020 21:25:03 -0700 Subject: [PATCH 2317/2595] ng dependence removed from build_targets() --- models.py | 2 +- utils/utils.py | 25 ++++++++++++------------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/models.py b/models.py index 853522bc..cd07f49e 100755 --- a/models.py +++ b/models.py @@ -148,7 +148,7 @@ class YOLOLayer(nn.Module): def create_grids(self, ng=(13, 13), device='cpu'): self.nx, self.ny = ng # x and y grid size - self.ng = torch.tensor(ng, device=device) + self.ng = torch.tensor(ng) # build xy offsets if not self.training: diff --git a/utils/utils.py b/utils/utils.py index 11fd4c61..8a14f6d9 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -366,7 +366,7 @@ def smooth_BCE(eps=0.1): # https://github.com/ultralytics/yolov3/issues/238#iss def compute_loss(p, targets, model): # predictions, targets, model ft = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor lcls, lbox, lobj = ft([0]), ft([0]), ft([0]) - tcls, tbox, indices, anchor_vec = build_targets(model, targets) + tcls, tbox, indices, anchor_vec = build_targets(p, targets, model) h = model.hyp # hyperparameters red = 'mean' # Loss reduction (sum or mean) @@ -430,42 +430,41 @@ def compute_loss(p, targets, model): # predictions, targets, model return loss, torch.cat((lbox, lobj, lcls, loss)).detach() -def build_targets(model, targets): +def build_targets(p, targets, model): # targets = [image, class, x, y, w, h] nt = targets.shape[0] tcls, tbox, indices, av = [], [], [], [] multi_gpu = type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) reject, use_all_anchors = True, True + gain = torch.ones(6, device=targets.device) # normalized to gridspace gain for i in model.yolo_layers: # get number of grid points and anchor vec for this yolo layer - if multi_gpu: - ng, anchor_vec = model.module.module_list[i].ng, model.module.module_list[i].anchor_vec - else: - ng, anchor_vec = model.module_list[i].ng, model.module_list[i].anchor_vec + anchor_vec = model.module.module_list[i].anchor_vec if multi_gpu else model.module_list[i].anchor_vec # iou of targets-anchors - t, a = targets, [] - gwh = t[:, 4:6] * ng + gain[2:] = torch.tensor(p[0].shape)[[2, 3, 2, 3]] # xyxy gain + t, a = targets * gain, [] + gwh = t[:, 4:6] if nt: iou = wh_iou(anchor_vec, gwh) # iou(3,n) = wh_iou(anchor_vec(3,2), gwh(n,2)) if use_all_anchors: na = anchor_vec.shape[0] # number of anchors - a = torch.arange(na).view((-1, 1)).repeat([1, nt]).view(-1) - t = targets.repeat([na, 1]) - gwh = gwh.repeat([na, 1]) + a = torch.arange(na).view(-1, 1).repeat(1, nt).view(-1) + t = targets.repeat(na, 1) else: # use best anchor only iou, a = iou.max(0) # best iou and anchor # reject anchors below iou_thres (OPTIONAL, increases P, lowers R) if reject: j = iou.view(-1) > model.hyp['iou_t'] # iou threshold hyperparameter - t, a, gwh = t[j], a[j], gwh[j] + t, a = t[j], a[j] # Indices b, c = t[:, :2].long().t() # target image, class - gxy = t[:, 2:4] * ng # grid x, y + gxy = t[:, 2:4] # grid x, y + gwh = t[:, 4:6] # grid w, h gi, gj = gxy.long().t() # grid x, y indices indices.append((b, a, gj, gi)) From 835b0da68a6329f533ab96f3f8f21f4666a1b93e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 14 Apr 2020 01:20:57 -0700 Subject: [PATCH 2318/2595] new modules and init weights --- utils/layers.py | 22 ++++++++++++++++++++++ utils/torch_utils.py | 7 +++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/utils/layers.py b/utils/layers.py index dce3fed2..7662c6bd 100644 --- a/utils/layers.py +++ b/utils/layers.py @@ -3,6 +3,28 @@ import torch.nn.functional as F from utils.utils import * +def make_divisible(v, divisor): + # Function ensures all layers have a channel number that is divisible by 8 + # https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet/mobilenet.py + return math.ceil(v / divisor) * divisor + + +class Flatten(nn.Module): + # Use after nn.AdaptiveAvgPool2d(1) to remove last 2 dimensions + def forward(self, x): + return x.view(x.size(0), -1) + + +class Concat(nn.Module): + # Concatenate a list of tensors along dimension + def __init__(self, dimension=1): + super(Concat, self).__init__() + self.d = dimension + + def forward(self, x): + return torch.cat(x, self.d) + + class FeatureConcat(nn.Module): def __init__(self, layers): super(FeatureConcat, self).__init__() diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 0e1ade3a..e5286cd0 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -52,11 +52,14 @@ def time_synchronized(): def initialize_weights(model): for m in model.modules(): - if isinstance(m, nn.Conv2d): + t = type(m) + if t is nn.Conv2d: nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu') - elif isinstance(m, nn.BatchNorm2d): + elif t is nn.BatchNorm2d: m.eps = 1e-4 m.momentum = 0.03 + elif t in [nn.LeakyReLU, nn.ReLU, nn.ReLU6]: + m.inplace = True def find_modules(model, mclass=nn.Conv2d): From 25725c85692893366d5ce9caaa6aa8abadd5f6c6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 14 Apr 2020 03:13:30 -0700 Subject: [PATCH 2319/2595] bug fix --- utils/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 8a14f6d9..4e4440d6 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -438,12 +438,12 @@ def build_targets(p, targets, model): multi_gpu = type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) reject, use_all_anchors = True, True gain = torch.ones(6, device=targets.device) # normalized to gridspace gain - for i in model.yolo_layers: + for j, i in enumerate(model.yolo_layers): # get number of grid points and anchor vec for this yolo layer anchor_vec = model.module.module_list[i].anchor_vec if multi_gpu else model.module_list[i].anchor_vec # iou of targets-anchors - gain[2:] = torch.tensor(p[0].shape)[[2, 3, 2, 3]] # xyxy gain + gain[2:] = torch.tensor(p[j].shape)[[2, 3, 2, 3]] # xyxy gain t, a = targets * gain, [] gwh = t[:, 4:6] if nt: @@ -452,7 +452,7 @@ def build_targets(p, targets, model): if use_all_anchors: na = anchor_vec.shape[0] # number of anchors a = torch.arange(na).view(-1, 1).repeat(1, nt).view(-1) - t = targets.repeat(na, 1) + t = t.repeat(na, 1) else: # use best anchor only iou, a = iou.max(0) # best iou and anchor From 198a5a591d9e2f28c3bce9cc542d3f3cdaa50a6e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 14 Apr 2020 04:15:05 -0700 Subject: [PATCH 2320/2595] code cleanup --- utils/utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 4e4440d6..def70e26 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -435,12 +435,12 @@ def build_targets(p, targets, model): nt = targets.shape[0] tcls, tbox, indices, av = [], [], [], [] - multi_gpu = type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) reject, use_all_anchors = True, True gain = torch.ones(6, device=targets.device) # normalized to gridspace gain - for j, i in enumerate(model.yolo_layers): + multi_gpu = type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) + for i, j in enumerate(model.yolo_layers): # get number of grid points and anchor vec for this yolo layer - anchor_vec = model.module.module_list[i].anchor_vec if multi_gpu else model.module_list[i].anchor_vec + anchor_vec = model.module.module_list[j].anchor_vec if multi_gpu else model.module_list[j].anchor_vec # iou of targets-anchors gain[2:] = torch.tensor(p[j].shape)[[2, 3, 2, 3]] # xyxy gain From 16812495884a38fa6724aea5c136b6ee4ed93e26 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 14 Apr 2020 04:15:53 -0700 Subject: [PATCH 2321/2595] cleanup --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index def70e26..ef77e345 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -443,7 +443,7 @@ def build_targets(p, targets, model): anchor_vec = model.module.module_list[j].anchor_vec if multi_gpu else model.module_list[j].anchor_vec # iou of targets-anchors - gain[2:] = torch.tensor(p[j].shape)[[2, 3, 2, 3]] # xyxy gain + gain[2:] = torch.tensor(p[i].shape)[[2, 3, 2, 3]] # xyxy gain t, a = targets * gain, [] gwh = t[:, 4:6] if nt: From 029e137bc2024f730d5ddc90c8a0e80aa9ff2bfd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 14 Apr 2020 04:34:40 -0700 Subject: [PATCH 2322/2595] bug fix --- utils/utils.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index ef77e345..468fdf8c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -437,13 +437,17 @@ def build_targets(p, targets, model): tcls, tbox, indices, av = [], [], [], [] reject, use_all_anchors = True, True gain = torch.ones(6, device=targets.device) # normalized to gridspace gain + + # m = list(model.modules())[-1] + # for i in range(m.nl): + # anchor_vec = m.anchor_vec[i] multi_gpu = type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) for i, j in enumerate(model.yolo_layers): # get number of grid points and anchor vec for this yolo layer anchor_vec = model.module.module_list[j].anchor_vec if multi_gpu else model.module_list[j].anchor_vec # iou of targets-anchors - gain[2:] = torch.tensor(p[i].shape)[[2, 3, 2, 3]] # xyxy gain + gain[2:] = torch.tensor(p[i].shape)[[3, 2, 3, 2]] # xyxy gain t, a = targets * gain, [] gwh = t[:, 4:6] if nt: From 763cdd5ae2f0089c5b802e535b804bfc10633252 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 14 Apr 2020 11:51:19 -0700 Subject: [PATCH 2323/2595] detailed image sizes report --- train.py | 12 ++++++------ utils/utils.py | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/train.py b/train.py index 56b383a0..bfb3e7ff 100644 --- a/train.py +++ b/train.py @@ -60,7 +60,7 @@ def train(): batch_size = opt.batch_size accumulate = opt.accumulate # effective bs = batch_size * accumulate = 16 * 4 = 64 weights = opt.weights # initial training weights - imgsz_min, imgsz_max, img_size_test = opt.img_size # img sizes (min, max, test) + imgsz_min, imgsz_max, imgsz_test = opt.img_size # img sizes (min, max, test) # Image Sizes gs = 64 # (pixels) grid size @@ -71,9 +71,9 @@ def train(): imgsz_min //= 1.5 imgsz_max //= 0.667 grid_min, grid_max = imgsz_min // gs, imgsz_max // gs - imgsz_max = grid_max * gs # initialize with maximum multi_scale size - print('Using multi-scale %g - %g' % (grid_min * gs, imgsz_max)) - img_size = imgsz_max + imgsz_min, imgsz_max = grid_min * gs, grid_max * gs + print('Training image sizes %g - %g, testing image size %g' % (imgsz_min, imgsz_max, imgsz_test)) + img_size = imgsz_max # initialize with max size # Configure run init_seeds() @@ -192,7 +192,7 @@ def train(): collate_fn=dataset.collate_fn) # Testloader - testloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path, img_size_test, batch_size, + testloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path, imgsz_test, batch_size, hyp=hyp, rect=True, cache_images=opt.cache_images, @@ -310,7 +310,7 @@ def train(): results, maps = test.test(cfg, data, batch_size=batch_size, - img_size=img_size_test, + img_size=imgsz_test, model=ema.ema, save_json=final_epoch and is_coco, single_cls=opt.single_cls, diff --git a/utils/utils.py b/utils/utils.py index 468fdf8c..7331d413 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -573,9 +573,9 @@ def get_yolo_layers(model): def print_model_biases(model): # prints the bias neurons preceding each yolo layer print('\nModel Bias Summary: %8s%18s%18s%18s' % ('layer', 'regression', 'objectness', 'classification')) - multi_gpu = type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) - for l in model.yolo_layers: # print pretrained biases - try: + try: + multi_gpu = type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) + for l in model.yolo_layers: # print pretrained biases if multi_gpu: na = model.module.module_list[l].na # number of anchors b = model.module.module_list[l - 1][0].bias.view(na, -1) # bias 3x85 From f5a2682a817c101e260e546a7fcfd00c873d318a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 14 Apr 2020 12:02:08 -0700 Subject: [PATCH 2324/2595] image sizes report --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index bfb3e7ff..71dcbb05 100644 --- a/train.py +++ b/train.py @@ -72,7 +72,7 @@ def train(): imgsz_max //= 0.667 grid_min, grid_max = imgsz_min // gs, imgsz_max // gs imgsz_min, imgsz_max = grid_min * gs, grid_max * gs - print('Training image sizes %g - %g, testing image size %g' % (imgsz_min, imgsz_max, imgsz_test)) + print('Image sizes %g - %g train, %g test' % (imgsz_min, imgsz_max, imgsz_test)) img_size = imgsz_max # initialize with max size # Configure run From ac4c90c817b87427c74e4d5bdbcf01964c62268f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 14 Apr 2020 13:08:00 -0700 Subject: [PATCH 2325/2595] cleanup --- utils/utils.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 7331d413..d45d14cd 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -440,21 +440,21 @@ def build_targets(p, targets, model): # m = list(model.modules())[-1] # for i in range(m.nl): - # anchor_vec = m.anchor_vec[i] + # anchors = m.anchors[i] multi_gpu = type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) for i, j in enumerate(model.yolo_layers): # get number of grid points and anchor vec for this yolo layer - anchor_vec = model.module.module_list[j].anchor_vec if multi_gpu else model.module_list[j].anchor_vec + anchors = model.module.module_list[j].anchor_vec if multi_gpu else model.module_list[j].anchor_vec # iou of targets-anchors gain[2:] = torch.tensor(p[i].shape)[[3, 2, 3, 2]] # xyxy gain t, a = targets * gain, [] gwh = t[:, 4:6] if nt: - iou = wh_iou(anchor_vec, gwh) # iou(3,n) = wh_iou(anchor_vec(3,2), gwh(n,2)) + iou = wh_iou(anchors, gwh) # iou(3,n) = wh_iou(anchors(3,2), gwh(n,2)) if use_all_anchors: - na = anchor_vec.shape[0] # number of anchors + na = anchors.shape[0] # number of anchors a = torch.arange(na).view(-1, 1).repeat(1, nt).view(-1) t = t.repeat(na, 1) else: # use best anchor only @@ -475,7 +475,7 @@ def build_targets(p, targets, model): # Box gxy -= gxy.floor() # xy tbox.append(torch.cat((gxy, gwh), 1)) # xywh (grids) - av.append(anchor_vec[a]) # anchor vec + av.append(anchors[a]) # anchor vec # Class tcls.append(c) @@ -585,8 +585,8 @@ def print_model_biases(model): print(' ' * 20 + '%8g %18s%18s%18s' % (l, '%5.2f+/-%-5.2f' % (b[:, :4].mean(), b[:, :4].std()), '%5.2f+/-%-5.2f' % (b[:, 4].mean(), b[:, 4].std()), '%5.2f+/-%-5.2f' % (b[:, 5:].mean(), b[:, 5:].std()))) - except: - pass + except: + pass def strip_optimizer(f='weights/last.pt'): # from utils.utils import *; strip_optimizer() From a49ea80218f21e1c5d3b9340a75bb3d2deb106a3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 14 Apr 2020 15:58:32 -0700 Subject: [PATCH 2326/2595] update initialize_weights() --- utils/torch_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index e5286cd0..c6690924 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -54,7 +54,7 @@ def initialize_weights(model): for m in model.modules(): t = type(m) if t is nn.Conv2d: - nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu') + pass # nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu') elif t is nn.BatchNorm2d: m.eps = 1e-4 m.momentum = 0.03 From 628028c617c503224f3ad542bd229111906ee973 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 15 Apr 2020 11:50:54 -0700 Subject: [PATCH 2327/2595] bias init --- models.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/models.py b/models.py index cd07f49e..f2b8b15a 100755 --- a/models.py +++ b/models.py @@ -102,14 +102,11 @@ def create_modules(module_defs, img_size): # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) try: - bo = -4.5 #  obj bias - bc = math.log(1 / (modules.nc - 0.99)) # cls bias: class probability is sigmoid(p) = 1/nc - j = layers[yolo_index] if 'from' in mdef else -1 bias_ = module_list[j][0].bias # shape(255,) bias = bias_[:modules.no * modules.na].view(modules.na, -1) # shape(3,85) - bias[:, 4] += bo - bias[:, 4].mean() # obj - bias[:, 5:] += bc - bias[:, 5:].mean() # cls, view with utils.print_model_biases(model) + bias[:, 4] += -4.5 # obj + bias[:, 5:] += math.log(0.6 / (modules.nc - 0.99)) # cls (sigmoid(p) = 1/nc) module_list[j][0].bias = torch.nn.Parameter(bias_, requires_grad=bias_.requires_grad) except: print('WARNING: smart bias initialization failure.') From b8c3644a18996e827c32c9dff81362864473b254 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 15 Apr 2020 12:12:59 -0700 Subject: [PATCH 2328/2595] ONNX export update --- models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models.py b/models.py index f2b8b15a..84b6af88 100755 --- a/models.py +++ b/models.py @@ -227,7 +227,7 @@ class Darknet(nn.Module): # Darknet Header https://github.com/AlexeyAB/darknet/issues/2914#issuecomment-496675346 self.version = np.array([0, 2, 5], dtype=np.int32) # (int32) version info: major, minor, revision self.seen = np.array([0], dtype=np.int64) # (int64) number of images seen during training - self.info(verbose) # print model description + self.info(verbose) if not ONNX_EXPORT else None # print model description def forward(self, x, augment=False, verbose=False): @@ -324,7 +324,7 @@ class Darknet(nn.Module): break fused_list.append(a) self.module_list = fused_list - self.info() # yolov3-spp reduced from 225 to 152 layers + self.info() if not ONNX_EXPORT else None # yolov3-spp reduced from 225 to 152 layers def info(self, verbose=False): torch_utils.model_info(self, verbose) From 20a094ccb97fb30680219503eeb409b1c21946aa Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 15 Apr 2020 12:25:42 -0700 Subject: [PATCH 2329/2595] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 249bd739..62a5e08d 100755 --- a/README.md +++ b/README.md @@ -140,8 +140,8 @@ Using CUDA device0 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', total_memo Class Images Targets P R mAP@0.5 F1: 100%|█████████| 313/313 [03:00<00:00, 1.74it/s] all 5e+03 3.51e+04 0.375 0.743 0.64 0.492 - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.455 - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.646 + Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.456 + Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.647 Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.496 Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.263 Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.501 From 510eadcfa59eefc17dd0f373bb45d3e8ebe68533 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 15 Apr 2020 12:54:56 -0700 Subject: [PATCH 2330/2595] Apex and 'git pull' suggestions --- train.py | 1 + utils/utils.py | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/train.py b/train.py index 71dcbb05..7ca006b9 100644 --- a/train.py +++ b/train.py @@ -13,6 +13,7 @@ mixed_precision = True try: # Mixed precision training https://github.com/NVIDIA/apex from apex import amp except: + print('Apex recommended for mixed precision and faster training: https://github.com/NVIDIA/apex') mixed_precision = False # not installed wdir = 'weights' + os.sep # weights dir diff --git a/utils/utils.py b/utils/utils.py index d45d14cd..adda3dcb 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -3,6 +3,7 @@ import math import os import random import shutil +import subprocess from pathlib import Path import cv2 @@ -18,6 +19,11 @@ from . import torch_utils # , google_utils matplotlib.rc('font', **{'size': 11}) +# Suggest 'git pull' +s = subprocess.check_output('git status -uno', shell=True).decode('utf-8') +if 'Your branch is behind' in s: + print(s[s.find('Your branch is behind'):s.find('\n\n')] + '\n') + # Set printoptions torch.set_printoptions(linewidth=320, precision=5, profile='long') np.set_printoptions(linewidth=320, formatter={'float_kind': '{:11.5g}'.format}) # format short g, %precision=5 From 716e618a18f9f0dffd9dc891522c370209204e94 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 15 Apr 2020 13:14:54 -0700 Subject: [PATCH 2331/2595] Update greetings.yml --- .github/workflows/greetings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index f9535cd2..36346262 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -11,6 +11,6 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} pr-message: 'Hello @${{ github.actor }}, thank you for submitting a PR! We will respond as soon as possible.' issue-message: > - Hello @${{ github.actor }}, thank you for your interest in our work! Please visit our [Custom Training Tutorial](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) to get started, and see our [Google Colab Notebook](https://colab.research.google.com/drive/1G8T-VFxQkjDe4idzN8F-hbIBqkkkQnxw), [Docker Image](https://hub.docker.com/r/ultralytics/yolov3), and [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) for example environments. + Hello @${{ github.actor }}, thank you for your interest in our work! Please visit our [Custom Training Tutorial](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) to get started, and see our [Google Colab Notebook](https://github.com/ultralytics/yolov3/blob/master/tutorial.ipynb), [Docker Image](https://hub.docker.com/r/ultralytics/yolov3), and [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) for example environments. If this is a bug report, please provide screenshots and **minimum viable code to reproduce your issue**, otherwise we can not help you. From c3edf8daf43b4cf31cff231bd35f1f7e5b32a6e6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 15 Apr 2020 22:03:51 -0700 Subject: [PATCH 2332/2595] move image size report --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 7ca006b9..09d42fec 100644 --- a/train.py +++ b/train.py @@ -73,7 +73,6 @@ def train(): imgsz_max //= 0.667 grid_min, grid_max = imgsz_min // gs, imgsz_max // gs imgsz_min, imgsz_max = grid_min * gs, grid_max * gs - print('Image sizes %g - %g train, %g test' % (imgsz_min, imgsz_max, imgsz_test)) img_size = imgsz_max # initialize with max size # Configure run @@ -219,6 +218,7 @@ def train(): # torch.autograd.set_detect_anomaly(True) results = (0, 0, 0, 0, 0, 0, 0) # 'P', 'R', 'mAP', 'F1', 'val GIoU', 'val Objectness', 'val Classification' t0 = time.time() + print('Image sizes %g - %g train, %g test' % (imgsz_min, imgsz_max, imgsz_test)) print('Using %g dataloader workers' % nw) print('Starting training for %g epochs...' % epochs) for epoch in range(start_epoch, epochs): # epoch ------------------------------------------------------------------ From bf1061c146167599b01612bbe3c10a65cc5cf905 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 16 Apr 2020 16:12:23 -0700 Subject: [PATCH 2333/2595] cleanup --- utils/layers.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/utils/layers.py b/utils/layers.py index 7662c6bd..fee81ca1 100644 --- a/utils/layers.py +++ b/utils/layers.py @@ -42,7 +42,7 @@ class WeightedFeatureFusion(nn.Module): # weighted sum of 2 or more layers http self.weight = weight # apply weights boolean self.n = len(layers) + 1 # number of layers if weight: - self.w = torch.nn.Parameter(torch.zeros(self.n), requires_grad=True) # layer weights + self.w = nn.Parameter(torch.zeros(self.n), requires_grad=True) # layer weights def forward(self, x, outputs): # Weights @@ -83,13 +83,13 @@ class MixConv2d(nn.Module): # MixConv: Mixed Depthwise Convolutional Kernels ht a[0] = 1 ch = np.linalg.lstsq(a, b, rcond=None)[0].round().astype(int) # solve for equal weight indices, ax = b - self.m = nn.ModuleList([torch.nn.Conv2d(in_channels=in_ch, - out_channels=ch[g], - kernel_size=k[g], - stride=stride, - padding=k[g] // 2, # 'same' pad - dilation=dilation, - bias=bias) for g in range(groups)]) + self.m = nn.ModuleList([nn.Conv2d(in_channels=in_ch, + out_channels=ch[g], + kernel_size=k[g], + stride=stride, + padding=k[g] // 2, # 'same' pad + dilation=dilation, + bias=bias) for g in range(groups)]) def forward(self, x): return torch.cat([m(x) for m in self.m], 1) From 693c06b26ca24f3cb24241ed3cf2a3cf03899341 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 18 Apr 2020 12:07:44 -0700 Subject: [PATCH 2334/2595] bug fix issues/1067 --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index e2af1aae..bb2b21ae 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -601,7 +601,7 @@ def letterbox(img, new_shape=(416, 416), color=(114, 114, 114), auto=True, scale new_shape = (new_shape, new_shape) # Scale ratio (new / old) - r = max(new_shape) / max(shape) + r = min(new_shape[0] / shape[0], new_shape[1] / shape[1]) if not scaleup: # only scale down, do not scale up (for better test mAP) r = min(r, 1.0) From accce6b56532f6242215fbdd8df612e51aae091b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 18 Apr 2020 18:06:11 -0700 Subject: [PATCH 2335/2595] git status check bug fix --- utils/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index adda3dcb..41302a75 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -20,7 +20,7 @@ from . import torch_utils # , google_utils matplotlib.rc('font', **{'size': 11}) # Suggest 'git pull' -s = subprocess.check_output('git status -uno', shell=True).decode('utf-8') +s = subprocess.check_output('if [ -d .git ]; then git status -uno; fi', shell=True).decode('utf-8') if 'Your branch is behind' in s: print(s[s.find('Your branch is behind'):s.find('\n\n')] + '\n') @@ -561,6 +561,7 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T # x[:, :4] = torch.mm(weights.T, x[:, :4]) weights = (box_iou(boxes[i], boxes) > iou_thres) * scores[None] # box weights x[i, :4] = torch.mm(weights / weights.sum(1, keepdim=True), x[:, :4]).float() # merged boxes + elif method == 'vision': i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) elif method == 'fast': # FastNMS from https://github.com/dbolya/yolact From be3f322375b26ed0beb30192e42b2f4cbab95d44 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 20 Apr 2020 09:57:15 -0700 Subject: [PATCH 2336/2595] Tensorboard out of try, iou_t to 0.10 --- train.py | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/train.py b/train.py index 09d42fec..c4bab231 100644 --- a/train.py +++ b/train.py @@ -3,6 +3,7 @@ import argparse import torch.distributed as dist import torch.optim as optim import torch.optim.lr_scheduler as lr_scheduler +from torch.utils.tensorboard import SummaryWriter import test # import test.py to get mAP after each epoch from models import * @@ -13,7 +14,7 @@ mixed_precision = True try: # Mixed precision training https://github.com/NVIDIA/apex from apex import amp except: - print('Apex recommended for mixed precision and faster training: https://github.com/NVIDIA/apex') + print('Apex recommended for faster mixed precision training: https://github.com/NVIDIA/apex') mixed_precision = False # not installed wdir = 'weights' + os.sep # weights dir @@ -28,7 +29,7 @@ hyp = {'giou': 3.54, # giou loss gain 'cls_pw': 1.0, # cls BCELoss positive_weight 'obj': 64.3, # obj loss gain (*=img_size/320 if img_size != 320) 'obj_pw': 1.0, # obj BCELoss positive_weight - 'iou_t': 0.225, # iou training threshold + 'iou_t': 0.1, # iou training threshold 'lr0': 0.01, # initial learning rate (SGD=5E-3, Adam=5E-4) 'lrf': 0.0005, # final learning rate (with cos scheduler) 'momentum': 0.937, # SGD momentum @@ -418,15 +419,8 @@ if __name__ == '__main__': tb_writer = None if not opt.evolve: # Train normally - try: - # Start Tensorboard with "tensorboard --logdir=runs", view at http://localhost:6006/ - from torch.utils.tensorboard import SummaryWriter - - tb_writer = SummaryWriter() - print("Run 'tensorboard --logdir=runs' to view tensorboard at http://localhost:6006/") - except: - pass - + print('Start Tensorboard with "tensorboard --logdir=runs", view at http://localhost:6006/') + tb_writer = SummaryWriter() train() # train normally else: # Evolve hyperparameters (optional) From cdb69d59293eb5d6e889f1c3bfb7d1da3e694946 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 20 Apr 2020 16:34:00 -0700 Subject: [PATCH 2337/2595] cfg cleanup --- cfg/{yolov3s.cfg => yolov3-asff.cfg} | 441 +++++++++++++-------------- cfg/yolov4-tiny-1cls.cfg | 233 -------------- cfg/yolov4-tiny.cfg | 233 -------------- 3 files changed, 212 insertions(+), 695 deletions(-) rename cfg/{yolov3s.cfg => yolov3-asff.cfg} (75%) delete mode 100644 cfg/yolov4-tiny-1cls.cfg delete mode 100644 cfg/yolov4-tiny.cfg diff --git a/cfg/yolov3s.cfg b/cfg/yolov3-asff.cfg similarity index 75% rename from cfg/yolov3s.cfg rename to cfg/yolov3-asff.cfg index 0517b09e..ec47ea3a 100644 --- a/cfg/yolov3s.cfg +++ b/cfg/yolov3-asff.cfg @@ -1,3 +1,9 @@ +# Generated by Glenn Jocher (glenn.jocher@ultralytics.com) for https://github.com/ultralytics/yolov3 +# def kmean_anchors(path='../coco/train2017.txt', n=12, img_size=(320, 640)): # from utils.utils import *; kmean_anchors() +# Evolving anchors: 100%|██████████| 1000/1000 [41:15<00:00, 2.48s/it] +# 0.20 iou_thr: 0.992 best possible recall, 4.25 anchors > thr +# kmeans anchors (n=12, img_size=(320, 640), IoU=0.005/0.184/0.634-min/mean/best): 6,9, 15,16, 17,35, 37,26, 36,67, 63,42, 57,100, 121,81, 112,169, 241,158, 195,310, 426,359 + [net] # Testing # batch=1 @@ -28,7 +34,7 @@ filters=32 size=3 stride=1 pad=1 -activation=swish +activation=leaky # Downsample @@ -38,7 +44,7 @@ filters=64 size=3 stride=2 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -46,7 +52,7 @@ filters=32 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -54,7 +60,7 @@ filters=64 size=3 stride=1 pad=1 -activation=swish +activation=leaky [shortcut] from=-3 @@ -68,7 +74,7 @@ filters=128 size=3 stride=2 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -76,7 +82,7 @@ filters=64 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -84,7 +90,7 @@ filters=128 size=3 stride=1 pad=1 -activation=swish +activation=leaky [shortcut] from=-3 @@ -96,7 +102,7 @@ filters=64 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -104,7 +110,7 @@ filters=128 size=3 stride=1 pad=1 -activation=swish +activation=leaky [shortcut] from=-3 @@ -118,7 +124,7 @@ filters=256 size=3 stride=2 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -126,7 +132,7 @@ filters=128 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -134,7 +140,7 @@ filters=256 size=3 stride=1 pad=1 -activation=swish +activation=leaky [shortcut] from=-3 @@ -146,7 +152,7 @@ filters=128 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -154,7 +160,7 @@ filters=256 size=3 stride=1 pad=1 -activation=swish +activation=leaky [shortcut] from=-3 @@ -166,7 +172,7 @@ filters=128 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -174,7 +180,7 @@ filters=256 size=3 stride=1 pad=1 -activation=swish +activation=leaky [shortcut] from=-3 @@ -186,7 +192,7 @@ filters=128 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -194,28 +200,7 @@ filters=256 size=3 stride=1 pad=1 -activation=swish - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=swish - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=swish +activation=leaky [shortcut] from=-3 @@ -227,7 +212,7 @@ filters=128 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -235,7 +220,7 @@ filters=256 size=3 stride=1 pad=1 -activation=swish +activation=leaky [shortcut] from=-3 @@ -247,7 +232,7 @@ filters=128 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -255,7 +240,7 @@ filters=256 size=3 stride=1 pad=1 -activation=swish +activation=leaky [shortcut] from=-3 @@ -267,7 +252,7 @@ filters=128 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -275,7 +260,27 @@ filters=256 size=3 stride=1 pad=1 -activation=swish +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky [shortcut] from=-3 @@ -289,7 +294,7 @@ filters=512 size=3 stride=2 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -297,7 +302,7 @@ filters=256 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -305,70 +310,7 @@ filters=512 size=3 stride=1 pad=1 -activation=swish - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=swish - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=swish - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=swish - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=swish - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=swish - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=swish +activation=leaky [shortcut] from=-3 @@ -380,7 +322,7 @@ filters=256 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -388,49 +330,7 @@ filters=512 size=3 stride=1 pad=1 -activation=swish - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=swish - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=swish - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=swish - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=swish +activation=leaky [shortcut] from=-3 @@ -442,7 +342,7 @@ filters=256 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -450,7 +350,107 @@ filters=512 size=3 stride=1 pad=1 -activation=swish +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky [shortcut] from=-3 @@ -464,7 +464,7 @@ filters=1024 size=3 stride=2 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -472,7 +472,7 @@ filters=512 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -480,7 +480,7 @@ filters=1024 size=3 stride=1 pad=1 -activation=swish +activation=leaky [shortcut] from=-3 @@ -492,7 +492,7 @@ filters=512 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -500,7 +500,7 @@ filters=1024 size=3 stride=1 pad=1 -activation=swish +activation=leaky [shortcut] from=-3 @@ -512,7 +512,7 @@ filters=512 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -520,7 +520,7 @@ filters=1024 size=3 stride=1 pad=1 -activation=swish +activation=leaky [shortcut] from=-3 @@ -532,7 +532,7 @@ filters=512 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -540,7 +540,7 @@ filters=1024 size=3 stride=1 pad=1 -activation=swish +activation=leaky [shortcut] from=-3 @@ -554,7 +554,7 @@ filters=512 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -562,7 +562,7 @@ size=3 stride=1 pad=1 filters=1024 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -570,9 +570,9 @@ filters=512 size=1 stride=1 pad=1 -activation=swish +activation=leaky -### SPP ### +# SPP -------------------------------------------------------------------------- [maxpool] stride=1 size=5 @@ -593,8 +593,7 @@ size=13 [route] layers=-1,-3,-5,-6 - -### End SPP ### +# SPP -------------------------------------------------------------------------- [convolutional] batch_normalize=1 @@ -602,8 +601,7 @@ filters=512 size=1 stride=1 pad=1 -activation=swish - +activation=leaky [convolutional] batch_normalize=1 @@ -611,7 +609,7 @@ size=3 stride=1 pad=1 filters=1024 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -619,7 +617,7 @@ filters=512 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -627,29 +625,19 @@ size=3 stride=1 pad=1 filters=1024 -activation=swish +activation=leaky [convolutional] size=1 stride=1 pad=1 -filters=255 +filters=258 activation=linear - -[yolo] -mask = 6,7,8 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - +# YOLO ------------------------------------------------------------------------- [route] -layers = -4 +layers = -3 [convolutional] batch_normalize=1 @@ -657,7 +645,7 @@ filters=256 size=1 stride=1 pad=1 -activation=swish +activation=leaky [upsample] stride=2 @@ -665,15 +653,13 @@ stride=2 [route] layers = -1, 61 - - [convolutional] batch_normalize=1 filters=256 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -681,7 +667,7 @@ size=3 stride=1 pad=1 filters=512 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -689,7 +675,7 @@ filters=256 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -697,7 +683,7 @@ size=3 stride=1 pad=1 filters=512 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -705,7 +691,7 @@ filters=256 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -713,30 +699,19 @@ size=3 stride=1 pad=1 filters=512 -activation=swish +activation=leaky [convolutional] size=1 stride=1 pad=1 -filters=255 +filters=258 activation=linear - -[yolo] -mask = 3,4,5 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - +# YOLO ------------------------------------------------------------------------- [route] -layers = -4 +layers = -3 [convolutional] batch_normalize=1 @@ -744,7 +719,7 @@ filters=128 size=1 stride=1 pad=1 -activation=swish +activation=leaky [upsample] stride=2 @@ -752,15 +727,13 @@ stride=2 [route] layers = -1, 36 - - [convolutional] batch_normalize=1 filters=128 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -768,7 +741,7 @@ size=3 stride=1 pad=1 filters=256 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -776,7 +749,7 @@ filters=128 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -784,7 +757,7 @@ size=3 stride=1 pad=1 filters=256 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -792,7 +765,7 @@ filters=128 size=1 stride=1 pad=1 -activation=swish +activation=leaky [convolutional] batch_normalize=1 @@ -800,22 +773,32 @@ size=3 stride=1 pad=1 filters=256 -activation=swish +activation=leaky [convolutional] size=1 stride=1 pad=1 -filters=255 +filters=258 activation=linear - [yolo] -mask = 0,1,2 +from=88,99,110 +mask = 8,9,10,11 anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 classes=80 num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 + +[yolo] +from=88,99,110 +mask = 4,5,6,7 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 + +[yolo] +from=88,99,110 +mask = 0,1,2,3 +anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 +classes=80 +num=9 \ No newline at end of file diff --git a/cfg/yolov4-tiny-1cls.cfg b/cfg/yolov4-tiny-1cls.cfg deleted file mode 100644 index 7cf2dd4e..00000000 --- a/cfg/yolov4-tiny-1cls.cfg +++ /dev/null @@ -1,233 +0,0 @@ -# Generated by Glenn Jocher (glenn.jocher@ultralytics.com) for https://github.com/ultralytics/yolov3 -# def kmean_anchors(path='../coco/train2017.txt', n=12, img_size=(320, 640)): # from utils.utils import *; kmean_anchors() -# Evolving anchors: 100%|██████████| 1000/1000 [41:15<00:00, 2.48s/it] -# 0.20 iou_thr: 0.992 best possible recall, 4.25 anchors > thr -# kmeans anchors (n=12, img_size=(320, 640), IoU=0.005/0.184/0.634-min/mean/best): 6,9, 15,16, 17,35, 37,26, 36,67, 63,42, 57,100, 121,81, 112,169, 241,158, 195,310, 426,359 - -[net] -# Testing -# batch=1 -# subdivisions=1 -# Training -batch=64 -subdivisions=16 -width=608 -height=608 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=1000 -max_batches = 200000 -policy=steps -steps=180000,190000 -scales=.1,.1 - - -[convolutional] -batch_normalize=1 -filters=16 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=1 - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -########### - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=24 -activation=linear - - - -[yolo] -mask = 8,9,10,11 -anchors = 6,9, 15,16, 17,35, 37,26, 36,67, 63,42, 57,100, 121,81, 112,169, 241,158, 195,310, 426,359 -classes=1 -num=12 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 8 - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=24 -activation=linear - -[yolo] -mask = 4,5,6,7 -anchors = 6,9, 15,16, 17,35, 37,26, 36,67, 63,42, 57,100, 121,81, 112,169, 241,158, 195,310, 426,359 -classes=1 -num=12 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - - -[route] -layers = -3 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 6 - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=24 -activation=linear - -[yolo] -mask = 0,1,2,3 -anchors = 6,9, 15,16, 17,35, 37,26, 36,67, 63,42, 57,100, 121,81, 112,169, 241,158, 195,310, 426,359 -classes=1 -num=12 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 diff --git a/cfg/yolov4-tiny.cfg b/cfg/yolov4-tiny.cfg deleted file mode 100644 index 5548ca60..00000000 --- a/cfg/yolov4-tiny.cfg +++ /dev/null @@ -1,233 +0,0 @@ -# Generated by Glenn Jocher (glenn.jocher@ultralytics.com) for https://github.com/ultralytics/yolov3 -# def kmean_anchors(path='../coco/train2017.txt', n=12, img_size=(320, 640)): # from utils.utils import *; kmean_anchors() -# Evolving anchors: 100%|██████████| 1000/1000 [41:15<00:00, 2.48s/it] -# 0.20 iou_thr: 0.992 best possible recall, 4.25 anchors > thr -# kmeans anchors (n=12, img_size=(320, 640), IoU=0.005/0.184/0.634-min/mean/best): 6,9, 15,16, 17,35, 37,26, 36,67, 63,42, 57,100, 121,81, 112,169, 241,158, 195,310, 426,359 - -[net] -# Testing -# batch=1 -# subdivisions=1 -# Training -batch=64 -subdivisions=16 -width=608 -height=608 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=1000 -max_batches = 200000 -policy=steps -steps=180000,190000 -scales=.1,.1 - - -[convolutional] -batch_normalize=1 -filters=16 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=1 - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -########### - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=340 -activation=linear - - - -[yolo] -mask = 8,9,10,11 -anchors = 6,9, 15,16, 17,35, 37,26, 36,67, 63,42, 57,100, 121,81, 112,169, 241,158, 195,310, 426,359 -classes=80 -num=12 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 8 - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=340 -activation=linear - -[yolo] -mask = 4,5,6,7 -anchors = 6,9, 15,16, 17,35, 37,26, 36,67, 63,42, 57,100, 121,81, 112,169, 241,158, 195,310, 426,359 -classes=80 -num=12 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - - -[route] -layers = -3 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 6 - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=340 -activation=linear - -[yolo] -mask = 0,1,2,3 -anchors = 6,9, 15,16, 17,35, 37,26, 36,67, 63,42, 57,100, 121,81, 112,169, 241,158, 195,310, 426,359 -classes=80 -num=12 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 From 8b45360e28d7c4eaff180f49f000d10e2d18aa0a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 20 Apr 2020 16:47:28 -0700 Subject: [PATCH 2338/2595] detect cleanup --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 97eccd48..b9eb3d85 100644 --- a/detect.py +++ b/detect.py @@ -156,7 +156,7 @@ def detect(save_img=False): if save_txt or save_img: print('Results saved to %s' % os.getcwd() + os.sep + out) if platform == 'darwin': # MacOS - os.system('open ' + out + ' ' + save_path) + os.system('open ' + save_path) print('Done. (%.3fs)' % (time.time() - t0)) From 22a6c441ce90a1ea9a916ed49cd1649c4b1799e2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 21 Apr 2020 00:39:06 -0700 Subject: [PATCH 2339/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 62a5e08d..c9166862 100755 --- a/README.md +++ b/README.md @@ -171,7 +171,7 @@ $ python3 train.py --weights '' --cfg yolov3-spp.cfg --epochs 300 --batch 16 --a To access an up-to-date working environment (with all dependencies including CUDA/CUDNN, Python and PyTorch preinstalled), consider a: - **GCP** Deep Learning VM with $300 free credit offer: See our [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) -- **Google Colab Notebook** with 12 hours of free GPU time: [Google Colab Notebook](https://colab.research.google.com/drive/1G8T-VFxQkjDe4idzN8F-hbIBqkkkQnxw) +- **Google Colab Notebook** with 12 hours of free GPU time: [Google Colab Notebook](https://colab.sandbox.google.com/github/ultralytics/yolov3/blob/master/tutorial.ipynb) - **Docker Image** from https://hub.docker.com/r/ultralytics/yolov3. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) # Citation From 6aed6c5fd0b31b1053d538095d4488eff8d5ad88 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 21 Apr 2020 09:13:38 -0700 Subject: [PATCH 2340/2595] attempt_download() update for '' weights --- models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index 84b6af88..9d0d7de5 100755 --- a/models.py +++ b/models.py @@ -441,9 +441,10 @@ def convert(cfg='cfg/yolov3-spp.cfg', weights='weights/yolov3-spp.weights'): def attempt_download(weights): # Attempt to download pretrained weights if not found locally + weights = weights.strip() msg = weights + ' missing, try downloading from https://drive.google.com/open?id=1LezFG5g3BCW6iYaV89B2i64cqEUZD7e0' - if weights and not os.path.isfile(weights): + if len(weights) > 0 and not os.path.isfile(weights): d = {'yolov3-spp.weights': '16lYS4bcIdM2HdmyJBVDOvt3Trx6N3W2R', 'yolov3.weights': '1uTlyDWlnaqXcsKOktP5aH_zRDbfcDp-y', 'yolov3-tiny.weights': '1CCF-iNIIkYesIDzaPvdwlcf7H9zSsKZQ', From a5bd0fe567db07a0f3a248a40c0935912233ed3b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 21 Apr 2020 12:19:29 -0700 Subject: [PATCH 2341/2595] tensorboard comment=opt.name --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index c4bab231..c002be25 100644 --- a/train.py +++ b/train.py @@ -420,7 +420,7 @@ if __name__ == '__main__': tb_writer = None if not opt.evolve: # Train normally print('Start Tensorboard with "tensorboard --logdir=runs", view at http://localhost:6006/') - tb_writer = SummaryWriter() + tb_writer = SummaryWriter(comment=opt.name) train() # train normally else: # Evolve hyperparameters (optional) From 03c6a2d6fa426df6db346637e69ab57879a6b3db Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 21 Apr 2020 12:31:37 -0700 Subject: [PATCH 2342/2595] cleanup --- utils/gcp.sh | 442 +-------------------------------------------------- 1 file changed, 5 insertions(+), 437 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 932852c4..98c4ded7 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -3,6 +3,7 @@ # New VM rm -rf sample_data yolov3 git clone https://github.com/ultralytics/yolov3 +# git clone -b test --depth 1 https://github.com/ultralytics/yolov3 test # branch # sudo apt-get install zip #git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex sudo conda install -yc conda-forge scikit-image pycocotools @@ -12,14 +13,6 @@ python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_downlo python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('13g3LqdpkNE8sPosVJT6KFXlfoMypzRP4','sm4.zip')" sudo shutdown -# Re-clone -rm -rf yolov3 # Warning: remove existing -git clone https://github.com/ultralytics/yolov3 # master -bash yolov3/data/get_coco2017.sh -# git clone -b test --depth 1 https://github.com/ultralytics/yolov3 test # branch -cd yolov3 -python3 test.py --weights ultralytics68.pt --task benchmark - # Mount local SSD lsblk sudo mkfs.ext4 -F /dev/nvme0n1 @@ -28,43 +21,9 @@ sudo mount /dev/nvme0n1 /mnt/disks/nvme0n1 sudo chmod a+w /mnt/disks/nvme0n1 cp -r coco /mnt/disks/nvme0n1 -# Train -python3 train.py - -# Resume -python3 train.py --resume - -# Detect -python3 detect.py - -# Test -python3 test.py --save-json - # Kill All -t=ultralytics/yolov3:v240 +t=ultralytics/yolov3:v1 docker kill $(docker ps -a -q --filter ancestor=$t) -t=ultralytics/yolov3:v208 -docker kill $(docker ps -a -q --filter ancestor=$t) - -# Evolve wer -sudo -s -t=ultralytics/yolov3:v206 -docker kill $(docker ps -a -q --filter ancestor=$t) -for i in 0 1 2 3 0 1 2 3 -do - docker pull $t && docker run -d --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t bash utils/evolve.sh $i - sleep 180 -done - -# Evolve athena -sudo -s -t=ultralytics/yolov3:v208 -docker kill $(docker ps -a -q --filter ancestor=$t) -for i in 0 1 -do - docker pull $t && docker run --gpus all -d --ipc=host -v "$(pwd)"/out:/usr/src/out $t bash utils/evolve.sh $i - sleep 120 -done # Evolve coco sudo -s @@ -76,397 +35,6 @@ do sleep 30 done - -t=ultralytics/yolov3:evolve && docker pull $t && docker run --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh 2 - - -# Git pull -git pull https://github.com/ultralytics/yolov3 # master -git pull https://github.com/ultralytics/yolov3 test # branch - -# Test Darknet training -python3 test.py --weights ../darknet/backup/yolov3.backup - -# Copy last.pt TO bucket -gsutil cp yolov3/weights/last1gpu.pt gs://ultralytics - -# Copy last.pt FROM bucket -gsutil cp gs://ultralytics/last.pt yolov3/weights/last.pt -wget https://storage.googleapis.com/ultralytics/yolov3/last_v1_0.pt -O weights/last_v1_0.pt -wget https://storage.googleapis.com/ultralytics/yolov3/best_v1_0.pt -O weights/best_v1_0.pt - -# Reproduce tutorials -rm results*.txt # WARNING: removes existing results -python3 train.py --nosave --data data/coco_1img.data && mv results.txt results0r_1img.txt -python3 train.py --nosave --data data/coco_10img.data && mv results.txt results0r_10img.txt -python3 train.py --nosave --data data/coco_100img.data && mv results.txt results0r_100img.txt -# python3 train.py --nosave --data data/coco_100img.data --transfer && mv results.txt results3_100imgTL.txt -python3 -c "from utils import utils; utils.plot_results()" -# gsutil cp results*.txt gs://ultralytics -gsutil cp results.png gs://ultralytics -sudo shutdown - -# Reproduce mAP -python3 test.py --save-json --img 608 -python3 test.py --save-json --img 416 -python3 test.py --save-json --img 320 -sudo shutdown - -# Benchmark script -git clone https://github.com/ultralytics/yolov3 # clone our repo -git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex # install nvidia apex -python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO','coco.zip')" # download coco dataset (20GB) -cd yolov3 && clear && python3 train.py --epochs 1 # run benchmark (~30 min) - -# Unit tests -python3 detect.py # detect 2 persons, 1 tie -python3 test.py --data data/coco_32img.data # test mAP = 0.8 -python3 train.py --data data/coco_32img.data --epochs 5 --nosave # train 5 epochs -python3 train.py --data data/coco_1cls.data --epochs 5 --nosave # train 5 epochs -python3 train.py --data data/coco_1img.data --epochs 5 --nosave # train 5 epochs - -# AlexyAB Darknet -gsutil cp -r gs://sm6/supermarket2 . # dataset from bucket -rm -rf darknet && git clone https://github.com/AlexeyAB/darknet && cd darknet && wget -c https://pjreddie.com/media/files/darknet53.conv.74 # sudo apt install libopencv-dev && make -./darknet detector calc_anchors data/coco_img64.data -num_of_clusters 9 -width 320 -height 320 # kmeans anchor calculation -./darknet detector train ../supermarket2/supermarket2.data ../yolo_v3_spp_pan_scale.cfg darknet53.conv.74 -map -dont_show # train spp -./darknet detector train ../yolov3/data/coco.data ../yolov3-spp.cfg darknet53.conv.74 -map -dont_show # train spp coco - -#Docker -sudo docker kill "$(sudo docker ps -q)" -sudo docker pull ultralytics/yolov3:v0 -sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco ultralytics/yolov3:v0 - - -t=ultralytics/yolov3:v70 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 32 --accum 2 --pre --bucket yolov4 --name 70 --device 0 --multi -t=ultralytics/yolov3:v73 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 73 --device 5 --cfg cfg/yolov3s.cfg -t=ultralytics/yolov3:v74 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 74 --device 0 --cfg cfg/yolov3s.cfg -t=ultralytics/yolov3:v75 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 75 --device 7 --cfg cfg/yolov3s.cfg -t=ultralytics/yolov3:v76 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 76 --device 0 --cfg cfg/yolov3-spp.cfg - -t=ultralytics/yolov3:v79 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 79 --device 5 -t=ultralytics/yolov3:v80 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 80 --device 0 -t=ultralytics/yolov3:v81 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 81 --device 7 -t=ultralytics/yolov3:v82 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 82 --device 0 --cfg cfg/yolov3s.cfg - -t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 83 --device 6 --multi --nosave -t=ultralytics/yolov3:v84 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 84 --device 0 --multi -t=ultralytics/yolov3:v85 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 85 --device 0 --multi -t=ultralytics/yolov3:v86 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 86 --device 1 --multi -t=ultralytics/yolov3:v87 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 87 --device 2 --multi -t=ultralytics/yolov3:v88 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 88 --device 3 --multi -t=ultralytics/yolov3:v89 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 89 --device 1 -t=ultralytics/yolov3:v90 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 90 --device 0 --cfg cfg/yolov3-spp-matrix.cfg -t=ultralytics/yolov3:v91 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 91 --device 0 --cfg cfg/yolov3-spp-matrix.cfg - -t=ultralytics/yolov3:v92 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 92 --device 0 -t=ultralytics/yolov3:v93 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 27 --batch 16 --accum 4 --pre --bucket yolov4 --name 93 --device 0 --cfg cfg/yolov3-spp-matrix.cfg - - -#SM4 -t=ultralytics/yolov3:v96 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img 320 --batch 32 --accum 2 --pre --bucket yolov4 --name 96 --device 0 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave -t=ultralytics/yolov3:v97 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img 320 --batch 32 --accum 2 --pre --bucket yolov4 --name 97 --device 4 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave -t=ultralytics/yolov3:v98 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'ultralytics68.pt' --epochs 1000 --img 320 --batch 16 --accum 4 --pre --bucket yolov4 --name 98 --device 5 --multi --cfg cfg/yolov3-spp-3cls.cfg --data ../data/sm4/out.data --nosave -t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --pre --bucket yolov4 --name 101 --device 7 --multi --nosave - -t=ultralytics/yolov3:v102 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 1000 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 102 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache -t=ultralytics/yolov3:v103 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 103 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache -t=ultralytics/yolov3:v104 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 104 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache -t=ultralytics/yolov3:v105 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 105 --device 0 --cfg cfg/yolov3-tiny-3cls.cfg --data ../data/sm4/out.data --nosave --cache -t=ultralytics/yolov3:v106 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --weights 'yolov3-tiny.pt' --epochs 500 --img 320 --batch 64 --accum 1 --pre --bucket yolov4 --name 106 --device 0 --cfg cfg/yolov3-tiny-3cls-sm4.cfg --data ../data/sm4/out.data --nosave --cache -t=ultralytics/yolov3:v107 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 107 --device 5 --nosave --cfg cfg/yolov3-spp3.cfg -t=ultralytics/yolov3:v108 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 108 --device 7 --nosave - -t=ultralytics/yolov3:v109 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 109 --device 4 --multi --nosave -t=ultralytics/yolov3:v110 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --bucket yolov4 --name 110 --device 3 --multi --nosave - -t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 111 --device 0 -t=ultralytics/yolov3:v112 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 112 --device 1 --nosave -t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 113 --device 2 --nosave -t=ultralytics/yolov3:v114 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 114 --device 2 --nosave -t=ultralytics/yolov3:v113 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 115 --device 5 --nosave --cfg cfg/yolov3-spp3.cfg -t=ultralytics/yolov3:v116 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 116 --device 1 --nosave - -t=ultralytics/yolov3:v83 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --epochs 27 --pre --bucket yolov4 --name 117 --device 0 --nosave --multi -t=ultralytics/yolov3:v118 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 16 --accum 4 --epochs 27 --pre --bucket yolov4 --name 118 --device 5 --nosave --multi -t=ultralytics/yolov3:v119 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 119 --device 1 --nosave -t=ultralytics/yolov3:v120 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 120 --device 2 --nosave -t=ultralytics/yolov3:v121 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 121 --device 0 --nosave --cfg cfg/csresnext50-panet-spp.cfg -t=ultralytics/yolov3:v122 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 273 --pre --bucket yolov4 --name 122 --device 2 --nosave -t=ultralytics/yolov3:v123 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 273 --pre --bucket yolov4 --name 123 --device 5 --nosave - -t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 124 --device 0 --nosave --cfg yolov3-tiny -t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 125 --device 1 --nosave --cfg yolov3-tiny2 -t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 126 --device 1 --nosave --cfg yolov3-tiny3 -t=ultralytics/yolov3:v127 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 127 --device 0 --nosave --cfg yolov3-tiny4 -t=ultralytics/yolov3:v124 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 273 --pre --bucket yolov4 --name 128 --device 1 --nosave --cfg yolov3-tiny2 --multi -t=ultralytics/yolov3:v129 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 64 --accum 1 --epochs 273 --pre --bucket yolov4 --name 129 --device 0 --nosave --cfg yolov3-tiny2 - -t=ultralytics/yolov3:v130 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 130 --device 0 --nosave -t=ultralytics/yolov3:v133 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 22 --accum 3 --epochs 250 --pre --bucket yolov4 --name 131 --device 0 --nosave --multi -t=ultralytics/yolov3:v130 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 132 --device 0 --nosave --data coco2014.data -t=ultralytics/yolov3:v133 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 22 --accum 3 --epochs 27 --pre --bucket yolov4 --name 133 --device 0 --nosave --multi -t=ultralytics/yolov3:v134 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 134 --device 0 --nosave --data coco2014.data - -t=ultralytics/yolov3:v135 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 24 --accum 3 --epochs 270 --pre --bucket yolov4 --name 135 --device 0 --nosave --multi --data coco2014.data -t=ultralytics/yolov3:v136 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 24 --accum 3 --epochs 270 --pre --bucket yolov4 --name 136 --device 0 --nosave --multi --data coco2014.data - -t=ultralytics/yolov3:v137 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 137 --device 7 --nosave --data coco2014.data -t=ultralytics/yolov3:v137 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --bucket yolov4 --name 138 --device 6 --nosave --data coco2014.data - -t=ultralytics/yolov3:v140 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 140 --device 1 --nosave --data coco2014.data --arc uBCE -t=ultralytics/yolov3:v141 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 141 --device 0 --nosave --data coco2014.data --arc uBCE -t=ultralytics/yolov3:v142 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --batch 32 --accum 2 --epochs 27 --pre --bucket yolov4 --name 142 --device 1 --nosave --data coco2014.data --arc uBCE - -t=ultralytics/yolov3:v146 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 146 --device 0 --nosave --data coco2014.data -t=ultralytics/yolov3:v147 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 147 --device 1 --nosave --data coco2014.data -t=ultralytics/yolov3:v148 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 148 --device 2 --nosave --data coco2014.data -t=ultralytics/yolov3:v149 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 149 --device 3 --nosave --data coco2014.data -t=ultralytics/yolov3:v150 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 150 --device 4 --nosave --data coco2014.data -t=ultralytics/yolov3:v151 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 151 --device 5 --nosave --data coco2014.data -t=ultralytics/yolov3:v152 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 152 --device 6 --nosave --data coco2014.data -t=ultralytics/yolov3:v153 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 153 --device 7 --nosave --data coco2014.data - -t=ultralytics/yolov3:v154 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 154 --device 0 --nosave --data coco2014.data -t=ultralytics/yolov3:v155 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 155 --device 0 --nosave --data coco2014.data --arc defaultpw - -t=ultralytics/yolov3:v156 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 156 --device 5 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v157 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 157 --device 6 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v158 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 158 --device 7 --nosave --data coco2014.data --arc defaultpw - -t=ultralytics/yolov3:v159 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 159 --device 0 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v160 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 160 --device 1 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v161 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 161 --device 2 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v162 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 162 --device 3 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v163 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 163 --device 4 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v164 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 164 --device 5 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v165 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 165 --device 6 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v166 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 166 --device 6 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v167 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 167 --device 7 --nosave --data coco2014.data --arc defaultpw - -t=ultralytics/yolov3:v168 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 168 --device 5 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v169 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 169 --device 6 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v170 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 170 --device 7 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v171 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 171 --device 4 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v172 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 172 --device 3 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v173 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 173 --device 2 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v174 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 174 --device 1 --nosave --data coco2014.data --arc defaultpw -t=ultralytics/yolov3:v175 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 320 --batch 64 --accum 1 --epochs 27 --pre --bucket yolov4 --name 175 --device 0 --nosave --data coco2014.data --arc defaultpw - -t=ultralytics/yolov3:v177 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 416 --batch 22 --accum 3 --epochs 273 --pre --bucket yolov4 --name 177 --device 0 --nosave --data coco2014.data --multi -t=ultralytics/yolov3:v178 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 416 --batch 22 --accum 3 --epochs 273 --pre --bucket yolov4 --name 178 --device 0 --nosave --data coco2014.data --multi -t=ultralytics/yolov3:v179 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --img 416 --batch 22 --accum 3 --epochs 273 --pre --bucket yolov4 --name 179 --device 0 --nosave --data coco2014.data --multi --cfg yolov3s-18a.cfg - -t=ultralytics/yolov3:v143 && sudo docker build -t $t . && sudo docker push $t - -t=ultralytics/yolov3:v179 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 179 -t=ultralytics/yolov3:v180 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 180 -t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 181 --cfg yolov3s9a-640.cfg -t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 182 --cfg yolov3s9a-320-640.cfg -t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 183 --cfg yolov3s15a-640.cfg -t=ultralytics/yolov3:v183 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 184 --cfg yolov3s15a-320-640.cfg - -t=ultralytics/yolov3:v185 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 185 -t=ultralytics/yolov3:v186 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 186 -n=187 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -t=ultralytics/yolov3:v189 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name 188 --cfg yolov3s15a-320-640.cfg -n=190 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=191 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=192 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n - -n=193 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=194 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=195 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=196 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 10 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n - -n=197 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 273 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n -n=198 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 640 --epochs 273 --batch 22 --accum 3 --weights '' --arc defaultpw --pre --multi --bucket yolov4 --name $n - - -# athena -n=199 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 0 -n=200 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 6 -n=207 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --bucket ultralytics/athena --name $n --device 7 -n=208 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 -n=211 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n --cfg yolov3-spp-1cls.cfg -n=212 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n --cfg yolov3-spp-1cls.cfg -n=213 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n --cfg yolov3-spp-1cls.cfg -n=214 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n --cfg yolov3-spp-1cls.cfg -n=215 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n --cfg yolov3-spp-1cls.cfg -n=217 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --arc default --pre --multi --device 6 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg -n=219 && t=ultralytics/yolov3:v215 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc default --pre --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg -n=220 && t=ultralytics/yolov3:v215 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 20 --batch 8 --accum 8 --weights ultralytics68.pt --arc default --pre --multi --device 1 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg -n=221 && t=ultralytics/yolov3:v215 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 30 --batch 8 --accum 8 --weights ultralytics68.pt --arc default --pre --multi --device 2 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg -n=222 && t=ultralytics/yolov3:v215 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 40 --batch 8 --accum 8 --weights ultralytics68.pt --arc default --pre --multi --device 3 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg -n=223 && t=ultralytics/yolov3:v215 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg -n=224 && t=ultralytics/yolov3:v215 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 20 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 1 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg -n=225 && t=ultralytics/yolov3:v215 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 30 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg -n=226 && t=ultralytics/yolov3:v215 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 40 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --pre --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg -n=227 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg -n=228 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 20 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg -n=229 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 20 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg -n=240 && t=ultralytics/yolov3:v240 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg --var 0 -n=241 && t=ultralytics/yolov3:v240 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 1 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg --var 1 -n=242 && t=ultralytics/yolov3:v240 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 2 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg --var 3 -n=243 && t=ultralytics/yolov3:v240 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 3 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg --var 5 -n=244 && t=ultralytics/yolov3:v240 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 4 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg --var 7 -n=245 && t=ultralytics/yolov3:v245 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights '' --arc defaultpw --multi --device 5 --bucket ult/athena --name $n --nosave --cfg yolov3-1cls.cfg -n=246 && t=ultralytics/yolov3:v245 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights '' --arc defaultpw --multi --device 6 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg -n=247 && t=ultralytics/yolov3:v245 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights '' --arc defaultpw --multi --device 7 --bucket ult/athena --name $n --nosave --cfg yolov3-spp3-1cls.cfg -n=248 && t=ultralytics/yolov3:v245 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights darknet53.conv.74 --arc defaultpw --multi --device 5 --bucket ult/athena --name $n --nosave --cfg yolov3-1cls.cfg -n=249 && t=ultralytics/yolov3:v245 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights darknet53.conv.74 --arc defaultpw --multi --device 6 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg -n=250 && t=ultralytics/yolov3:v245 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights darknet53.conv.74 --arc defaultpw --multi --device 7 --bucket ult/athena --name $n --nosave --cfg yolov3-spp3-1cls.cfg -n=251 && t=ultralytics/yolov3:v240 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 3 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg --var 9 -n=252 && t=ultralytics/yolov3:v240 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --arc defaultpw --multi --device 4 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg --var 100 -n=253 && t=ultralytics/yolov3:v245 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 60 --batch 8 --accum 8 --weights darknet53.conv.74 --arc defaultpw --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-1cls.cfg -n=254 && t=ultralytics/yolov3:v245 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 60 --batch 8 --accum 8 --weights darknet53.conv.74 --arc defaultpw --multi --device 1 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg -n=255 && t=ultralytics/yolov3:v245 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 60 --batch 8 --accum 8 --weights darknet53.conv.74 --arc defaultpw --multi --device 2 --bucket ult/athena --name $n --nosave --cfg yolov3-spp3-1cls.cfg - - -# wer -n=201 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 0 --cfg yolov3-tiny-3cls.cfg -n=202 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 1 --cfg yolov3-tiny-3cls-sm4.cfg -n=203 && t=ultralytics/yolov3:v201 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights '' --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 2 --cfg yolov3-tiny-3cls-sm4.cfg -n=204 && t=ultralytics/yolov3:v202 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 3 --cfg yolov3-tiny-3cls-sm4.cfg -n=205 && t=ultralytics/yolov3:v202 && sudo docker pull $t && sudo docker run -it --gpus all -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights '' --arc defaultpw --pre --multi --bucket ult/wer --name $n --device 4 --cfg yolov3-tiny-3cls-sm4.cfg -n=206 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --notest --nosave --cache --device 0 --cfg yolov3-tiny-3cls.cfg -n=209 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --nosave --cache --device 3 --cfg yolov3-tiny-3cls.cfg -n=210 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --nosave --cache --device 1 --cfg yolov3-tiny-3cls.cfg -n=216 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --pre --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-3cls.cfg -n=218 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc default --pre --multi --bucket ult/wer --name $n --nosave --cache --device 7 --cfg yolov3-tiny-3cls.cfg -n=230 && t=ultralytics/athena:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single -n=231 && t=ultralytics/athena:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi --bucket ult/wer --name $n --nosave --cache --device 1 --cfg yolov3-tiny-1cls.cfg --single -n=232 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single -n=233 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single -n=234 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run --gpus all --ipc=host -it -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 416 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single -n=235 && t=ultralytics/yolov3:v206 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi 1.2 --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single -n=236 && t=ultralytics/yolov3:v206 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi 1.4 --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single -n=237 && t=ultralytics/yolov3:v206 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi 1.6 --bucket ult/wer --name $n --nosave --device 1 --cfg yolov3-tiny-1cls.cfg --single -n=238 && t=ultralytics/yolov3:v206 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi 1.8 --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single -n=239 && t=ultralytics/yolov3:v206 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi 2.0 --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single -n=256 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 500 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi --bucket ult/wer --name $n --nosave --cache --device 6 --cfg yolov3-tiny-1cls.cfg --single -n=257 && t=ultralytics/yolov3:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 500 --batch 64 --accum 1 --weights yolov3-tiny.pt --arc defaultpw --multi --bucket ult/wer --name $n --nosave --cache --device 7 --cfg yolov3-tiny-1cls.cfg --single --adam - - -#coco -n=2 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --nosave --bucket ult/coco --name $n --device 0 --multi -n=3 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 27 --batch 32 --accum 2 --weights '' --device 1 --cfg yolov3.cfg --nosave --bucket ult/coco --name $n -n=4 && t=ultralytics/coco:v3 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 27 --batch 32 --accum 2 --weights '' --device 2 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n -n=5 && t=ultralytics/coco:v3 && sudo docker pull $t && sudo docker run -d --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 27 --batch 32 --accum 2 --weights '' --device 3 --cfg yolov3-spp3.cfg --nosave --bucket ult/coco --name $n -n=6 && t=ultralytics/coco:v3 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 27 --batch 32 --accum 2 --weights '' --device 0 --cfg yolov4.cfg --nosave --bucket ult/coco --name $n -n=7 && t=ultralytics/coco:v3 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 27 --batch 32 --accum 2 --weights '' --device 1 --cfg yolov4s.cfg --nosave --bucket ult/coco --name $n -n=8 && t=ultralytics/coco:v8 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 384 --epochs 27 --batch 32 --accum 2 --weights '' --device 0 --cfg yolov4.cfg --nosave --bucket ult/coco --name $n -n=9 && t=ultralytics/coco:v9 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 20 --accum 3 --weights '' --device 0 --cfg yolov4a.cfg --nosave --bucket ult/coco --name $n --multi -n=10 && t=ultralytics/coco:v9 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 20 --accum 3 --weights '' --device 0 --cfg yolov4b.cfg --nosave --bucket ult/coco --name $n --multi -n=11 && t=ultralytics/coco:v9 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 20 --accum 3 --weights '' --device 0 --cfg yolov4c.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=12 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 20 --accum 3 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi -n=13 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 20 --accum 3 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi -n=14 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 20 --accum 3 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi -n=15 && t=ultralytics/coco:v14 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi -n=16 && t=ultralytics/coco:v9 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov4a.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=17 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov4d.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=18 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov4a.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=19 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov4e.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=20 && t=ultralytics/coco:v14 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=21 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppe.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=22 && t=ultralytics/coco:v14 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 27 --batch 12 --accum 6 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=23 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=24 && t=ultralytics/coco:v24 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=25 && t=ultralytics/coco:v24 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 27 --batch 12 --accum 6 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=26 && t=ultralytics/coco:v24 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=27 && t=ultralytics/coco:v24 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=28 && t=ultralytics/coco:v24 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 273 --batch 12 --accum 6 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=29 && t=ultralytics/coco:v24 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 15 --accum 4 --weights '' --device 0 --cfg yolov4a.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=30 && t=ultralytics/coco:v24 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 273 --batch 12 --accum 6 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=31 && t=ultralytics/coco:v31 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppf.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=32 && t=ultralytics/coco:v31 && sudo docker pull $t && sudo docker run --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppg.cfg --nosave --bucket ult/coco --name $n --multi -n=33 && t=ultralytics/coco:v33 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 273 --batch 12 --accum 6 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=34 && t=ultralytics/coco:v34 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 273 --batch 12 --accum 6 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=35 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi -n=36 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 1 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi -n=37 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 2 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi -n=38 && t=ultralytics/coco:v35 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 10 --accum 8 --weights '' --device 3 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi -n=39 && t=ultralytics/coco:v35 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 10 --accum 6 --weights '' --device 4 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi -n=40 && t=ultralytics/coco:v35 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 8 --weights '' --device 5 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi -n=41 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 6 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi -n=42 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 7 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi -n=45 && t=ultralytics/coco:v45 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 16 --weights '' --device 2 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi -n=46 && t=ultralytics/coco:v45 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 4 --weights '' --device 6 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi -n=47 && t=ultralytics/coco:v45 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 2 --weights '' --device 7 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi -n=48 && t=ultralytics/coco:v45 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 8 --weights '' --device 3 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi -n=49 && t=ultralytics/coco:v45 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 32 --weights '' --device 4 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi -n=50 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 8 --weights '' --device 3 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi -n=51 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 8 --weights '' --device 4 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi -n=52 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 8 --weights '' --device 2 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi -n=53 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 27 --batch 8 --accum 8 --weights '' --device 5 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n -n=54 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --nosave --bucket ult/coco --name $n --device 0 --multi -n=55 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --weights '' --epochs 273 --batch 16 --accum 4 --pre --nosave --bucket ult/coco --name $n --device 2 --multi -n=56 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 3 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi -n=57 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 4 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi -n=58 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi -n=59 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi -n=60 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 608 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 1 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi -n=61 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi -n=62 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi -n=63 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi -n=64 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 1 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi -n=65 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=66 && t=ultralytics/coco:v65 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 8 --accum 8 --weights '' --device 0 --cfg darknet53-bifpn3.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=67 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 15 --accum 4 --weights '' --device 0 --cfg csdarknet53-bifpn-optimal.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=68 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=69 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 15 --accum 4 --weights '' --device 0 --cfg csdarknet53-bifpn-optimal.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=70 && t=ultralytics/coco:v69 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 15 --accum 4 --weights '' --device 0 --cfg csresnext50-bifpn-optimal.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=71 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=72 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=73 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=74 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=75 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=76 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=77 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=78 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=79 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=80 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=81 && t=ultralytics/coco:v76 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2017.data --img-size 512 608 --epochs 27 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=82 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=83 && t=ultralytics/coco:v82 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=84 && t=ultralytics/coco:v82 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=85 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=86 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=87 && t=ultralytics/coco:v85 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 8 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=88 && t=ultralytics/coco:v86 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 8 --weights '' --device 1 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=89 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 8 --weights '' --device 0 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=90 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 8 --weights '' --device 1 --cfg yolov3-sppa.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=91 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=92 && t=ultralytics/coco:v91 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 225 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=93 && t=ultralytics/coco:v86 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=94 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=95 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=96 && t=ultralytics/coco:v94 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 64 --accum 1 --weights '' --device 0 --cfg yolov4-tiny.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=97 && t=ultralytics/coco:v94 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 64 --accum 1 --weights '' --device 1 --cfg yolov4-tiny-spp.cfg --nosave --bucket ult/coco --name $n --multi -n=98 && t=ultralytics/coco:v94 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 64 --accum 1 --weights '' --device 0 --cfg yolov4-tiny-spp-dn53.cfg --nosave --bucket ult/coco --name $n --multi --cache && sudo shutdown -n=99 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov4-asff.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=100 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=101 && t=ultralytics/coco:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi && sudo shutdown -n=102 && t=ultralytics/coco:v101 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 416 608 --epochs 273 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n --multi --arc Fdefault && sudo shutdown - - -# athena -n=32 && t=ultralytics/athena:v32 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 100 --batch 8 --accum 8 --weights ultralytics68.pt --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg -n=33 && t=ultralytics/athena:v33 && sudo docker pull $t && sudo docker run --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg -n=34 && t=ultralytics/athena:v33 && sudo docker pull $t && sudo docker run --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 20 --batch 8 --accum 8 --weights ultralytics68.pt --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg -n=35 && t=ultralytics/athena:v33 && sudo docker pull $t && sudo docker run --gpus all --ipc=host -v "$(pwd)"/out:/usr/src/out $t python3 train.py --data ../out/data.data --img-size 608 --epochs 30 --batch 8 --accum 8 --weights ultralytics68.pt --multi --device 0 --bucket ult/athena --name $n --nosave --cfg yolov3-spp-1cls.cfg && sudo shutdown - - -# wer -n=18 && t=ultralytics/wer:v18 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.conv.15 --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-1cls.cfg --single --adam -n=19 && t=ultralytics/wer:v18 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.conv.15 --multi --bucket ult/wer --name $n --nosave --cache --device 1 --cfg yolov3-tiny-3l-1cls.cfg --single --adam -n=20 && t=ultralytics/wer:v18 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.conv.15 --multi --bucket ult/wer --name $n --nosave --cache --device 2 --cfg yolov3-tiny-prnc-1cls.cfg --single --adam -n=21 && t=ultralytics/wer:v18 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.conv.15 --multi --bucket ult/wer --name $n --nosave --cache --device 3 --cfg yolov3-tiny-prn-1cls.cfg --single --adam -n=22 && t=ultralytics/wer:v18 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights '' --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny-3l-1cls.cfg --single --adam -n=23 && t=ultralytics/wer:v18 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights '' --multi --bucket ult/wer --name $n --nosave --cache --device 1 --cfg yolov3-tinyr-3l-1cls.cfg --single --adam -n=24 && t=ultralytics/wer:v24 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights '' --multi --bucket ult/wer --name $n --nosave --cache --device 3 --cfg yolov3-tiny-3l-1cls.cfg --single --adam -n=25 && t=ultralytics/wer:v25 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --name $n --nosave --cache --device 2 --cfg yolov3-tiny3-1cls.cfg --single --adam -n=26 && t=ultralytics/wer:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov3-tiny3-1cls.cfg --single --adam -n=27 && t=ultralytics/test:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 416 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --name $n --nosave --cache --device 1 --cfg yolov4-tiny-1cls.cfg --single --adam -n=28 && t=ultralytics/test:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 416 --epochs 1000 --batch 64 --accum 1 --weights yolov3-tiny.pt --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov4-tiny-1cls.cfg --single --adam -n=29 && t=ultralytics/wer:v$n && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/data:/usr/src/data $t python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 1000 --batch 64 --accum 1 --weights '' --multi --bucket ult/wer --name $n --nosave --cache --device 0 --cfg yolov4-tiny-spp-1cls-dn53.cfg --single --adam +#COCO training +n=131 && t=ultralytics/coco:v131 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 256 768 768 --epochs 300 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n && sudo shutdown +n=132 && t=ultralytics/coco:v131 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 256 768 768 --epochs 300 --batch 64 --accum 1 --weights '' --device 0 --cfg yolov3-tiny.cfg --nosave --bucket ult/coco --name $n && sudo shutdown From 2f636d5740df8b22c3a47460002953f7c148ab56 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 22 Apr 2020 10:46:26 -0700 Subject: [PATCH 2343/2595] .half() bug fix --- detect.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/detect.py b/detect.py index b9eb3d85..b94903c1 100644 --- a/detect.py +++ b/detect.py @@ -75,7 +75,8 @@ def detect(save_img=False): # Run inference t0 = time.time() - _ = model(torch.zeros((1, 3, img_size, img_size), device=device)) if device.type != 'cpu' else None # run once + img = torch.zeros((1, 3, img_size, img_size), device=device) # init img + _ = model(img.half() if half else img.float()) if device.type != 'cpu' else None # run once for path, img, im0s, vid_cap in dataset: img = torch.from_numpy(img).to(device) img = img.half() if half else img.float() # uint8 to fp16/32 From 77b3829d56a88e6f4494f7b33a7c08d4b58ea2de Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 22 Apr 2020 11:02:09 -0700 Subject: [PATCH 2344/2595] check_git_status() to train.py --- train.py | 3 +-- utils/utils.py | 15 ++++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/train.py b/train.py index c002be25..b0885308 100644 --- a/train.py +++ b/train.py @@ -23,7 +23,6 @@ best = wdir + 'best.pt' results_file = 'results.txt' # Hyperparameters https://github.com/ultralytics/yolov3/issues/310 - hyp = {'giou': 3.54, # giou loss gain 'cls': 37.4, # cls loss gain 'cls_pw': 1.0, # cls BCELoss positive_weight @@ -54,7 +53,6 @@ if f: if hyp['fl_gamma']: print('Using FocalLoss(gamma=%g)' % hyp['fl_gamma']) - def train(): cfg = opt.cfg data = opt.data @@ -408,6 +406,7 @@ if __name__ == '__main__': parser.add_argument('--single-cls', action='store_true', help='train as single-class dataset') opt = parser.parse_args() opt.weights = last if opt.resume else opt.weights + check_git_status() print(opt) opt.img_size.extend([opt.img_size[-1]] * (3 - len(opt.img_size))) # extend to 3 sizes (min, max, test) device = torch_utils.select_device(opt.device, apex=mixed_precision, batch_size=opt.batch_size) diff --git a/utils/utils.py b/utils/utils.py index 41302a75..7adfa76a 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -17,16 +17,10 @@ from tqdm import tqdm from . import torch_utils # , google_utils -matplotlib.rc('font', **{'size': 11}) - -# Suggest 'git pull' -s = subprocess.check_output('if [ -d .git ]; then git status -uno; fi', shell=True).decode('utf-8') -if 'Your branch is behind' in s: - print(s[s.find('Your branch is behind'):s.find('\n\n')] + '\n') - # Set printoptions torch.set_printoptions(linewidth=320, precision=5, profile='long') np.set_printoptions(linewidth=320, formatter={'float_kind': '{:11.5g}'.format}) # format short g, %precision=5 +matplotlib.rc('font', **{'size': 11}) # Prevent OpenCV from multithreading (to use PyTorch DataLoader) cv2.setNumThreads(0) @@ -38,6 +32,13 @@ def init_seeds(seed=0): torch_utils.init_seeds(seed=seed) +def check_git_status(): + # Suggest 'git pull' if repo is out of date + s = subprocess.check_output('if [ -d .git ]; then git fetch && git status -uno; fi', shell=True).decode('utf-8') + if 'Your branch is behind' in s: + print(s[s.find('Your branch is behind'):s.find('\n\n')] + '\n') + + def load_classes(path): # Loads *.names file at 'path' with open(path, 'r') as f: From 7cbac5a3ea4f6531d471e7a408b340f1a95f844a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 22 Apr 2020 11:34:34 -0700 Subject: [PATCH 2345/2595] train.py iou_t to 0.20 --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index b0885308..253f1b18 100644 --- a/train.py +++ b/train.py @@ -28,7 +28,7 @@ hyp = {'giou': 3.54, # giou loss gain 'cls_pw': 1.0, # cls BCELoss positive_weight 'obj': 64.3, # obj loss gain (*=img_size/320 if img_size != 320) 'obj_pw': 1.0, # obj BCELoss positive_weight - 'iou_t': 0.1, # iou training threshold + 'iou_t': 0.20, # iou training threshold 'lr0': 0.01, # initial learning rate (SGD=5E-3, Adam=5E-4) 'lrf': 0.0005, # final learning rate (with cos scheduler) 'momentum': 0.937, # SGD momentum From 82a12e2c8e6afa54115a2bd605bfb8f18ec26f65 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 22 Apr 2020 11:38:48 -0700 Subject: [PATCH 2346/2595] docker train update --- utils/gcp.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index 98c4ded7..ad99d8e4 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -36,5 +36,5 @@ do done #COCO training -n=131 && t=ultralytics/coco:v131 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 256 768 768 --epochs 300 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n && sudo shutdown -n=132 && t=ultralytics/coco:v131 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 256 768 768 --epochs 300 --batch 64 --accum 1 --weights '' --device 0 --cfg yolov3-tiny.cfg --nosave --bucket ult/coco --name $n && sudo shutdown +n=131 && t=ultralytics/coco:v131 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 320 640 --epochs 300 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n && sudo shutdown +n=132 && t=ultralytics/coco:v131 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 320 640 --epochs 300 --batch 64 --accum 1 --weights '' --device 0 --cfg yolov3-tiny.cfg --nosave --bucket ult/coco --name $n && sudo shutdown From 345d65d18f96a6f2f3908fb613c71130c05fa060 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 22 Apr 2020 14:32:05 -0700 Subject: [PATCH 2347/2595] updated train default img_size 320-640 --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 253f1b18..c0f21dfa 100644 --- a/train.py +++ b/train.py @@ -391,7 +391,7 @@ if __name__ == '__main__': parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path') parser.add_argument('--data', type=str, default='data/coco2017.data', help='*.data path') parser.add_argument('--multi-scale', action='store_true', help='adjust (67%% - 150%%) img_size every 10 batches') - parser.add_argument('--img-size', nargs='+', type=int, default=[512], help='[min_train, max-train, test] img sizes') + parser.add_argument('--img-size', nargs='+', type=int, default=[320, 640], help='[min_train, max-train, test] img sizes') parser.add_argument('--rect', action='store_true', help='rectangular training') parser.add_argument('--resume', action='store_true', help='resume training from last.pt') parser.add_argument('--nosave', action='store_true', help='only save final checkpoint') From 748f60baaec2657c94a8672567bc3b974f1de994 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 22 Apr 2020 14:32:51 -0700 Subject: [PATCH 2348/2595] updated test default img_size 512 --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 67006c75..75568a03 100644 --- a/test.py +++ b/test.py @@ -229,7 +229,7 @@ if __name__ == '__main__': parser.add_argument('--data', type=str, default='data/coco2014.data', help='*.data path') parser.add_argument('--weights', type=str, default='weights/yolov3-spp-ultralytics.pt', help='weights path') parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') - parser.add_argument('--img-size', type=int, default=416, help='inference size (pixels)') + parser.add_argument('--img-size', type=int, default=512, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') parser.add_argument('--iou-thres', type=float, default=0.6, help='IOU threshold for NMS') parser.add_argument('--save-json', action='store_true', help='save a cocoapi-compatible JSON results file') From dda0afa22e938b6641665ebf88ccb3b87e4f2461 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 22 Apr 2020 16:00:20 -0700 Subject: [PATCH 2349/2595] onnx export IO layer names update --- detect.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/detect.py b/detect.py index b94903c1..635d7059 100644 --- a/detect.py +++ b/detect.py @@ -45,7 +45,8 @@ def detect(save_img=False): model.fuse() img = torch.zeros((1, 3) + img_size) # (1, 3, 320, 192) f = opt.weights.replace(opt.weights.split('.')[-1], 'onnx') # *.onnx filename - torch.onnx.export(model, img, f, verbose=False, opset_version=11) + torch.onnx.export(model, img, f, verbose=False, opset_version=11, + input_names=['images'], output_names=['classes', 'boxes']) # Validate exported model import onnx From aa854ecaa97c49a25ab2d956f8f1b05e7e37e254 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 22 Apr 2020 17:54:56 -0700 Subject: [PATCH 2350/2595] torch >= 1.5 --- README.md | 7 +------ requirements.txt | 2 +- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index c9166862..fb19abfa 100755 --- a/README.md +++ b/README.md @@ -26,12 +26,7 @@ The https://github.com/ultralytics/yolov3 repo contains inference and training c # Requirements -Python 3.7 or later with all of the `pip install -U -r requirements.txt` packages including: -- `torch >= 1.4` -- `opencv-python` -- `Pillow` - -All dependencies are included in the associated docker images. Docker requirements are: +Python 3.7 or later with all of the `pip install -U -r requirements.txt` packages including `torch >= 1.5`. Docker images come with all dependencies preinstalled. Docker requirements are: - Nvidia Driver >= 440.44 - Docker Engine - CE >= 19.03 diff --git a/requirements.txt b/requirements.txt index a4684389..e705c8c0 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ # pip install -U -r requirements.txt numpy opencv-python >= 4.1 -torch >= 1.4 +torch >= 1.5 matplotlib pycocotools tqdm From c29be7f85d7c974c6f5a2edc0a14093385be9033 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 22 Apr 2020 17:55:23 -0700 Subject: [PATCH 2351/2595] torch >= 1.5 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fb19abfa..d58ba32d 100755 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ The https://github.com/ultralytics/yolov3 repo contains inference and training c # Requirements -Python 3.7 or later with all of the `pip install -U -r requirements.txt` packages including `torch >= 1.5`. Docker images come with all dependencies preinstalled. Docker requirements are: +Python 3.7 or later with all `pip install -U -r requirements.txt` packages including `torch >= 1.5`. Docker images come with all dependencies preinstalled. Docker requirements are: - Nvidia Driver >= 440.44 - Docker Engine - CE >= 19.03 From b3dfd89878397fc347f74cec9e782cb1c3ca049f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 23 Apr 2020 10:35:08 -0700 Subject: [PATCH 2352/2595] scheduler resume bug fix --- train.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/train.py b/train.py index c0f21dfa..e65161e5 100644 --- a/train.py +++ b/train.py @@ -146,11 +146,11 @@ def train(): if mixed_precision: model, optimizer = amp.initialize(model, optimizer, opt_level='O1', verbosity=0) - # Scheduler https://github.com/ultralytics/yolov3/issues/238 - lf = lambda x: (((1 + math.cos( - x * math.pi / epochs)) / 2) ** 1.0) * 0.95 + 0.05 # cosine https://arxiv.org/pdf/1812.01187.pdf - scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf, last_epoch=start_epoch - 1) - # scheduler = lr_scheduler.MultiStepLR(optimizer, [round(epochs * x) for x in [0.8, 0.9]], 0.1, start_epoch - 1) + # Scheduler https://arxiv.org/pdf/1812.01187.pdf + lf = lambda x: (((1 + math.cos(x * math.pi / epochs)) / 2) ** 1.0) * 0.95 + 0.05 # cosine + scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf) + scheduler.last_epoch=start_epoch - 1 # see link below + # https://discuss.pytorch.org/t/a-problem-occured-when-resuming-an-optimizer/28822 # Plot lr schedule # y = [] From 5a8efa5c1d5f8a0099f649e3af0d3853f3334b50 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 23 Apr 2020 14:32:28 -0700 Subject: [PATCH 2353/2595] auto --accumulate --- train.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/train.py b/train.py index e65161e5..ddeda1a7 100644 --- a/train.py +++ b/train.py @@ -58,7 +58,7 @@ def train(): data = opt.data epochs = opt.epochs # 500200 batches at bs 64, 117263 images = 273 epochs batch_size = opt.batch_size - accumulate = opt.accumulate # effective bs = batch_size * accumulate = 16 * 4 = 64 + accumulate = max(round(64 / batch_size), 1) # accumulate n times before optimizer update (bs 64) weights = opt.weights # initial training weights imgsz_min, imgsz_max, imgsz_test = opt.img_size # img sizes (min, max, test) @@ -387,7 +387,6 @@ if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--epochs', type=int, default=300) # 500200 batches at bs 16, 117263 COCO images = 273 epochs parser.add_argument('--batch-size', type=int, default=16) # effective bs = batch_size * accumulate = 16 * 4 = 64 - parser.add_argument('--accumulate', type=int, default=4, help='batches to accumulate before optimizing') parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path') parser.add_argument('--data', type=str, default='data/coco2017.data', help='*.data path') parser.add_argument('--multi-scale', action='store_true', help='adjust (67%% - 150%%) img_size every 10 batches') From 3554ab07fbedc05d91d9e6907b96a62512d931d5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 24 Apr 2020 11:00:01 -0700 Subject: [PATCH 2354/2595] anchor correction --- cfg/yolov3-asff.cfg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cfg/yolov3-asff.cfg b/cfg/yolov3-asff.cfg index ec47ea3a..343e19fa 100644 --- a/cfg/yolov3-asff.cfg +++ b/cfg/yolov3-asff.cfg @@ -784,21 +784,21 @@ activation=linear [yolo] from=88,99,110 -mask = 8,9,10,11 +mask = 6,7,8 anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 classes=80 num=9 [yolo] from=88,99,110 -mask = 4,5,6,7 +mask = 3,4,5 anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 classes=80 num=9 [yolo] from=88,99,110 -mask = 0,1,2,3 +mask = 0,1,2 anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 classes=80 num=9 \ No newline at end of file From 754a1b5bf8d65f552fadd4c083e53c17e79cece4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 25 Apr 2020 21:15:30 -0700 Subject: [PATCH 2355/2595] reduce merge limit to 3000 --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 7adfa76a..4547de31 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -556,7 +556,7 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T boxes, scores = x[:, :4].clone() + c.view(-1, 1) * max_wh, x[:, 4] # boxes (offset by class), scores if method == 'merge': # Merge NMS (boxes merged using weighted mean) i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) - if n < 1E4: # update boxes as boxes(i,4) = weights(i,n) * boxes(n,4) + if n < 3E3: # update boxes as boxes(i,4) = weights(i,n) * boxes(n,4) # weights = (box_iou(boxes, boxes).tril_() > iou_thres) * scores.view(-1, 1) # box weights # weights /= weights.sum(0) # normalize # x[:, :4] = torch.mm(weights.T, x[:, :4]) From daedfc5487ec78c8f9c89f4f358150789b1eab32 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Apr 2020 11:22:29 -0700 Subject: [PATCH 2356/2595] reduce merge limit to 3000 --- .github/ISSUE_TEMPLATE/--bug-report.md | 28 ++++++++++++++++---------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/--bug-report.md b/.github/ISSUE_TEMPLATE/--bug-report.md index 7a589675..ecc096f8 100644 --- a/.github/ISSUE_TEMPLATE/--bug-report.md +++ b/.github/ISSUE_TEMPLATE/--bug-report.md @@ -7,14 +7,25 @@ assignees: '' --- +Before submitting a bug report, please ensure that you are using the latest versions of: + - python + - torch + - this repo (run `git status` and `git pull`) + +**Your issue must be reproducible on a public dataset (i.e COCO) using the latest version of the repository, and you must supply code to reproduce, or we can not help you.** + +If this is a custom training question we suggest you include your `train_batch0.png` and `results.png` figures. + + ## 🐛 Bug A clear and concise description of what the bug is. ## To Reproduce -Steps to reproduce the behavior: -1. -2. -3. +**REQUIRED**: Code to reproduce your issue below +``` +python train.py ... +``` + ## Expected behavior A clear and concise description of what you expected to happen. @@ -22,14 +33,9 @@ A clear and concise description of what you expected to happen. ## Environment If applicable, add screenshots to help explain your problem. -**Desktop (please complete the following information):** - - OS: [e.g. iOS] - - Version [e.g. 22] + - OS: [e.g. Ubuntu] + - GPU [e.g. 2080 Ti] -**Smartphone (please complete the following information):** - - Device: [e.g. iPhoneXS] - - OS: [e.g. iOS8.1] - - Version [e.g. 22] ## Additional context Add any other context about the problem here. From 3bf0cb9c605db8976eac20466afd6b36539c498f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Apr 2020 12:41:15 -0700 Subject: [PATCH 2357/2595] remove tb-nightly --- requirements.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/requirements.txt b/requirements.txt index e705c8c0..9577e7be 100755 --- a/requirements.txt +++ b/requirements.txt @@ -10,10 +10,6 @@ pillow # Nvidia Apex (optional) for mixed precision training -------------------------- # git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex -# Tensorboard (optional) pip requirements -------------------------------------- -# tb-nightly -# future - # Conda commands (in place of pip) --------------------------------------------- # conda update -yn base -c defaults conda # conda install -yc anaconda numpy opencv matplotlib tqdm pillow ipython future From efbeb283c4953501f31d005619ced9bef7886a2c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Apr 2020 14:01:20 -0700 Subject: [PATCH 2358/2595] ONNX grid float --- models.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/models.py b/models.py index 9d0d7de5..5e1ac1b3 100755 --- a/models.py +++ b/models.py @@ -145,7 +145,7 @@ class YOLOLayer(nn.Module): def create_grids(self, ng=(13, 13), device='cpu'): self.nx, self.ny = ng # x and y grid size - self.ng = torch.tensor(ng) + self.ng = torch.tensor(ng, dtype=torch.float) # build xy offsets if not self.training: @@ -193,9 +193,9 @@ class YOLOLayer(nn.Module): elif ONNX_EXPORT: # Avoid broadcasting for ANE operations m = self.na * self.nx * self.ny - ng = 1 / self.ng.repeat((m, 1)) - grid = self.grid.repeat((1, self.na, 1, 1, 1)).view(m, 2) - anchor_wh = self.anchor_wh.repeat((1, 1, self.nx, self.ny, 1)).view(m, 2) * ng + ng = 1. / self.ng.repeat(m, 1) + grid = self.grid.repeat(1, self.na, 1, 1, 1).view(m, 2) + anchor_wh = self.anchor_wh.repeat(1, 1, self.nx, self.ny, 1).view(m, 2) * ng p = p.view(m, self.no) xy = torch.sigmoid(p[:, 0:2]) + grid # x, y From 55757421de4e4a6bd72c5596d021595f390719b8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Apr 2020 14:09:12 -0700 Subject: [PATCH 2359/2595] remove future --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 9577e7be..586d12ed 100755 --- a/requirements.txt +++ b/requirements.txt @@ -12,7 +12,7 @@ pillow # Conda commands (in place of pip) --------------------------------------------- # conda update -yn base -c defaults conda -# conda install -yc anaconda numpy opencv matplotlib tqdm pillow ipython future +# conda install -yc anaconda numpy opencv matplotlib tqdm pillow ipython # conda install -yc conda-forge scikit-image pycocotools tensorboard # conda install -yc spyder-ide spyder-line-profiler # conda install -yc pytorch pytorch torchvision From 11f228eb00fca8a6b0192e4ef965533b8d953ff4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Apr 2020 16:07:29 -0700 Subject: [PATCH 2360/2595] yolov4.cfg from alexeyab/darknet --- cfg/yolov4.cfg | 1155 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1155 insertions(+) create mode 100644 cfg/yolov4.cfg diff --git a/cfg/yolov4.cfg b/cfg/yolov4.cfg new file mode 100644 index 00000000..5e1ac822 --- /dev/null +++ b/cfg/yolov4.cfg @@ -0,0 +1,1155 @@ +[net] +# Testing +#batch=1 +#subdivisions=1 +# Training +batch=64 +subdivisions=8 +width=608 +height=608 +channels=3 +momentum=0.949 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.00261 +burn_in=1000 +max_batches = 500500 +policy=steps +steps=400000,450000 +scales=.1,.1 + +#cutmix=1 +mosaic=1 + +#:104x104 54:52x52 85:26x26 104:13x13 for 416 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=mish + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=mish + +[route] +layers = -2 + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=mish + +[route] +layers = -1,-7 + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=mish + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=mish + +[route] +layers = -2 + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=mish + +[route] +layers = -1,-10 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=mish + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=mish + +[route] +layers = -2 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=mish + +[route] +layers = -1,-28 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=mish + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=mish + +[route] +layers = -2 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=mish + +[route] +layers = -1,-28 + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=mish + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=mish + +[route] +layers = -2 + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=mish + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=mish + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=mish + +[route] +layers = -1,-16 + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=mish + +########################## + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +### SPP ### +[maxpool] +stride=1 +size=5 + +[route] +layers=-2 + +[maxpool] +stride=1 +size=9 + +[route] +layers=-4 + +[maxpool] +stride=1 +size=13 + +[route] +layers=-1,-3,-5,-6 +### End SPP ### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = 85 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1, -3 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = 54 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1, -3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +########################## + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 0,1,2 +anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +scale_x_y = 1.2 +iou_thresh=0.213 +cls_normalizer=1.0 +iou_normalizer=0.07 +iou_loss=ciou +nms_kind=greedynms +beta_nms=0.6 + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +size=3 +stride=2 +pad=1 +filters=256 +activation=leaky + +[route] +layers = -1, -16 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 3,4,5 +anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +scale_x_y = 1.1 +iou_thresh=0.213 +cls_normalizer=1.0 +iou_normalizer=0.07 +iou_loss=ciou +nms_kind=greedynms +beta_nms=0.6 + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +size=3 +stride=2 +pad=1 +filters=512 +activation=leaky + +[route] +layers = -1, -37 + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 6,7,8 +anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 +scale_x_y = 1.05 +iou_thresh=0.213 +cls_normalizer=1.0 +iou_normalizer=0.07 +iou_loss=ciou +nms_kind=greedynms +beta_nms=0.6 From 18d4ebfd12fd32a8d98a6427054f9b816b0a4333 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Apr 2020 16:25:46 -0700 Subject: [PATCH 2361/2595] add Mish() support --- models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index 5e1ac1b3..5a437027 100755 --- a/models.py +++ b/models.py @@ -45,9 +45,10 @@ def create_modules(module_defs, img_size): if mdef['activation'] == 'leaky': # activation study https://github.com/ultralytics/yolov3/issues/441 modules.add_module('activation', nn.LeakyReLU(0.1, inplace=True)) - # modules.add_module('activation', nn.PReLU(num_parameters=1, init=0.10)) elif mdef['activation'] == 'swish': modules.add_module('activation', Swish()) + elif mdef['activation'] == 'mish': + modules.add_module('activation', Mish()) elif mdef['type'] == 'BatchNorm2d': filters = output_filters[-1] From a0a3bab9e6ea767d392f89c7ee95c3bb44ad522e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Apr 2020 16:31:21 -0700 Subject: [PATCH 2362/2595] add Mish() support --- utils/layers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/layers.py b/utils/layers.py index fee81ca1..a3630020 100644 --- a/utils/layers.py +++ b/utils/layers.py @@ -115,9 +115,9 @@ class MemoryEfficientSwish(nn.Module): class Swish(nn.Module): def forward(self, x): - return x.mul_(torch.sigmoid(x)) + return x.mul(torch.sigmoid(x)) class Mish(nn.Module): # https://github.com/digantamisra98/Mish def forward(self, x): - return x.mul_(F.softplus(x).tanh()) + return x.mul(F.softplus(x).tanh()) From 4a4bfb20deba3c88ce12c44e7837eada95a42e25 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 26 Apr 2020 16:31:57 -0700 Subject: [PATCH 2363/2595] FLOPS verbose=False --- utils/torch_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index c6690924..215772bf 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -107,7 +107,7 @@ def model_info(model, verbose=False): try: # FLOPS from thop import profile - macs, _ = profile(model, inputs=(torch.zeros(1, 3, 480, 640),)) + macs, _ = profile(model, inputs=(torch.zeros(1, 3, 480, 640),), verbose=False) fs = ', %.1f GFLOPS' % (macs / 1E9 * 2) except: fs = '' From 18702c96084557d020cccf11fc77d8db2e44c073 Mon Sep 17 00:00:00 2001 From: Josh Veitch-Michaelis Date: Mon, 27 Apr 2020 17:21:34 +0100 Subject: [PATCH 2364/2595] add tensorboard to requirements (#1100) In a clean environment running training fails if tensorboard is not installed e.g. ``` Traceback (most recent call last): File "/home/josh/miniconda3/envs/ultralytics/lib/python3.7/site-packages/torch/utils/tensorboard/__init__.py", line 2, in from tensorboard.summary.writer.record_writer import RecordWriter # noqa F401 ModuleNotFoundError: No module named 'tensorboard' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "train.py", line 6, in from torch.utils.tensorboard import SummaryWriter File "/home/josh/miniconda3/envs/ultralytics/lib/python3.7/site-packages/torch/utils/tensorboard/__init__.py", line 4, in raise ImportError('TensorBoard logging requires TensorBoard with Python summary writer installed. ' ImportError: TensorBoard logging requires TensorBoard with Python summary writer installed. This should be available in 1.14 or above. ``` --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 586d12ed..c82ddd8d 100755 --- a/requirements.txt +++ b/requirements.txt @@ -6,6 +6,7 @@ matplotlib pycocotools tqdm pillow +tensorboard >= 1.14 # Nvidia Apex (optional) for mixed precision training -------------------------- # git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex From f799c156119bf9ea6cfed1fd201817606718e67e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 27 Apr 2020 11:20:27 -0700 Subject: [PATCH 2365/2595] result not updated from pycocotools --- test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test.py b/test.py index 75568a03..a4e1ce81 100644 --- a/test.py +++ b/test.py @@ -214,7 +214,7 @@ def test(cfg, cocoEval.evaluate() cocoEval.accumulate() cocoEval.summarize() - mf1, map = cocoEval.stats[:2] # update to pycocotools results (mAP@0.5:0.95, mAP@0.5) + # mf1, map = cocoEval.stats[:2] # update to pycocotools results (mAP@0.5:0.95, mAP@0.5) # Return results maps = np.zeros(nc) + map From 3aa347a3212861293193a79866bfe3634143b517 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 27 Apr 2020 13:08:24 -0700 Subject: [PATCH 2366/2595] add HardSwish() --- utils/layers.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/utils/layers.py b/utils/layers.py index a3630020..81d3408c 100644 --- a/utils/layers.py +++ b/utils/layers.py @@ -118,6 +118,11 @@ class Swish(nn.Module): return x.mul(torch.sigmoid(x)) +class HardSwish(nn.Module): # https://arxiv.org/pdf/1905.02244.pdf + def forward(self, x): + return x * F.hardtanh(x + 3, 0., 6., True) / 6. + + class Mish(nn.Module): # https://github.com/digantamisra98/Mish def forward(self, x): return x.mul(F.softplus(x).tanh()) From 2518868508b138ccbb7fb00d1a8e7a83582bcfd6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 27 Apr 2020 13:51:21 -0700 Subject: [PATCH 2367/2595] MemoryEfficientMish() --- utils/layers.py | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/utils/layers.py b/utils/layers.py index 81d3408c..35c13c9f 100644 --- a/utils/layers.py +++ b/utils/layers.py @@ -98,14 +98,29 @@ class MixConv2d(nn.Module): # MixConv: Mixed Depthwise Convolutional Kernels ht # Activation functions below ------------------------------------------------------------------------------------------- class SwishImplementation(torch.autograd.Function): @staticmethod - def forward(ctx, i): - ctx.save_for_backward(i) - return i * torch.sigmoid(i) + def forward(ctx, x): + ctx.save_for_backward(x) + return x * torch.sigmoid(x) @staticmethod def backward(ctx, grad_output): - sigmoid_i = torch.sigmoid(ctx.saved_variables[0]) - return grad_output * (sigmoid_i * (1 + ctx.saved_variables[0] * (1 - sigmoid_i))) + x = ctx.saved_tensors[0] + sx = torch.sigmoid(x) # sigmoid(ctx) + return grad_output * (sx * (1 + x * (1 - sx))) + + +class MishImplementation(torch.autograd.Function): + @staticmethod + def forward(ctx, x): + ctx.save_for_backward(x) + return x.mul(torch.tanh(F.softplus(x))) # x * tanh(ln(1 + exp(x))) + + @staticmethod + def backward(ctx, grad_output): + x = ctx.saved_tensors[0] + sx = torch.sigmoid(x) + fx = F.softplus(x).tanh() + return grad_output * (fx + x * sx * (1 - fx * fx)) class MemoryEfficientSwish(nn.Module): @@ -113,9 +128,14 @@ class MemoryEfficientSwish(nn.Module): return SwishImplementation.apply(x) +class MemoryEfficientMish(nn.Module): + def forward(self, x): + return MishImplementation.apply(x) + + class Swish(nn.Module): def forward(self, x): - return x.mul(torch.sigmoid(x)) + return x * torch.sigmoid(x) class HardSwish(nn.Module): # https://arxiv.org/pdf/1905.02244.pdf @@ -125,4 +145,4 @@ class HardSwish(nn.Module): # https://arxiv.org/pdf/1905.02244.pdf class Mish(nn.Module): # https://github.com/digantamisra98/Mish def forward(self, x): - return x.mul(F.softplus(x).tanh()) + return x * F.softplus(x).tanh() From e9d41bb56626da4b61c4bab8fdba5a1aceddb296 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 27 Apr 2020 15:06:26 -0700 Subject: [PATCH 2368/2595] Speed updated --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index d58ba32d..efdca8d2 100755 --- a/README.md +++ b/README.md @@ -60,17 +60,17 @@ Python 3.7 or later with all `pip install -U -r requirements.txt` packages inclu https://cloud.google.com/deep-learning-vm/ **Machine type:** preemptible [n1-standard-16](https://cloud.google.com/compute/docs/machine-types) (16 vCPUs, 60 GB memory) **CPU platform:** Intel Skylake -**GPUs:** K80 ($0.20/hr), T4 ($0.35/hr), V100 ($0.83/hr) CUDA with [Nvidia Apex](https://github.com/NVIDIA/apex) FP16/32 -**HDD:** 1 TB SSD +**GPUs:** K80 ($0.14/hr), T4 ($0.11/hr), V100 ($0.74/hr) CUDA with [Nvidia Apex](https://github.com/NVIDIA/apex) FP16/32 +**HDD:** 1 TB SSD **Dataset:** COCO train 2014 (117,263 images) **Model:** `yolov3-spp.cfg` **Command:** `python3 train.py --img 416 --batch 32 --accum 2` GPU |n| `--batch --accum` | img/s | epoch
time | epoch
cost --- |--- |--- |--- |--- |--- -K80 |1| 32 x 2 | 11 | 175 min | $0.58 -T4 |1
2| 32 x 2
64 x 1 | 41
61 | 48 min
32 min | $0.28
$0.36 -V100 |1
2| 32 x 2
64 x 1 | 122
**178** | 16 min
**11 min** | **$0.23**
$0.31 +K80 |1| 32 x 2 | 11 | 175 min | $0.41 +T4 |1
2| 32 x 2
64 x 1 | 41
61 | 48 min
32 min | $0.09
$0.11 +V100 |1
2| 32 x 2
64 x 1 | 122
**178** | 16 min
**11 min** | **$0.21**
$0.28 2080Ti |1
2| 32 x 2
64 x 1 | 81
140 | 24 min
14 min | -
- # Inference From 8521c3cff952e9ae5f32ff69580bfdae726afb6f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 27 Apr 2020 15:22:36 -0700 Subject: [PATCH 2369/2595] cleanup --- train.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/train.py b/train.py index ddeda1a7..d32f59e0 100644 --- a/train.py +++ b/train.py @@ -249,7 +249,7 @@ def train(): if 'momentum' in x: x['momentum'] = np.interp(ni, [0, n_burn], [0.9, hyp['momentum']]) - # Multi-Scale training + # Multi-Scale if opt.multi_scale: if ni / accumulate % 1 == 0: #  adjust img_size (67% - 150%) every 1 batch img_size = random.randrange(grid_min, grid_max + 1) * gs @@ -258,38 +258,36 @@ def train(): ns = [math.ceil(x * sf / gs) * gs for x in imgs.shape[2:]] # new shape (stretched to 32-multiple) imgs = F.interpolate(imgs, size=ns, mode='bilinear', align_corners=False) - # Run model + # Forward pred = model(imgs) - # Compute loss + # Loss loss, loss_items = compute_loss(pred, targets, model) if not torch.isfinite(loss): print('WARNING: non-finite loss, ending training ', loss_items) return results - # Scale loss by nominal batch_size of 64 - loss *= batch_size / 64 - - # Compute gradient + # Backward + loss *= batch_size / 64 # scale loss if mixed_precision: with amp.scale_loss(loss, optimizer) as scaled_loss: scaled_loss.backward() else: loss.backward() - # Optimize accumulated gradient + # Optimize if ni % accumulate == 0: optimizer.step() optimizer.zero_grad() ema.update(model) - # Print batch results + # Print mloss = (mloss * i + loss_items) / (i + 1) # update mean losses mem = '%.3gG' % (torch.cuda.memory_cached() / 1E9 if torch.cuda.is_available() else 0) # (GB) s = ('%10s' * 2 + '%10.3g' * 6) % ('%g/%g' % (epoch, epochs - 1), mem, *mloss, len(targets), img_size) pbar.set_description(s) - # Plot images with bounding boxes + # Plot if ni < 1: f = 'train_batch%g.png' % i # filename plot_images(imgs=imgs, targets=targets, paths=paths, fname=f) From 02ae0e3bbd5c30aa353ca75dfa61acefa065eb52 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 27 Apr 2020 21:05:19 -0700 Subject: [PATCH 2370/2595] reproduce results update --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index efdca8d2..85d169a2 100755 --- a/README.md +++ b/README.md @@ -157,7 +157,7 @@ Speed: 17.5/2.3/19.9 ms inference/NMS/total per 640x640 image at batch-size 16 This command trains `yolov3-spp.cfg` from scratch to our mAP above. Training takes about one week on a 2080Ti. ```bash -$ python3 train.py --weights '' --cfg yolov3-spp.cfg --epochs 300 --batch 16 --accum 4 --multi +$ python3 train.py --weights '' --cfg yolov3-spp.cfg --epochs 300 --batch-size 16 --img 320 640 ``` From b1d385a8deb6d78ee677653f6a9d83c22c32344b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 27 Apr 2020 21:19:22 -0700 Subject: [PATCH 2371/2595] yolov4-relu.cfg --- cfg/yolov4-relu.cfg | 1155 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1155 insertions(+) create mode 100644 cfg/yolov4-relu.cfg diff --git a/cfg/yolov4-relu.cfg b/cfg/yolov4-relu.cfg new file mode 100644 index 00000000..c2821b7e --- /dev/null +++ b/cfg/yolov4-relu.cfg @@ -0,0 +1,1155 @@ +[net] +# Testing +#batch=1 +#subdivisions=1 +# Training +batch=64 +subdivisions=8 +width=608 +height=608 +channels=3 +momentum=0.949 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.00261 +burn_in=1000 +max_batches = 500500 +policy=steps +steps=400000,450000 +scales=.1,.1 + +#cutmix=1 +mosaic=1 + +#:104x104 54:52x52 85:26x26 104:13x13 for 416 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -2 + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1,-7 + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -2 + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1,-10 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -2 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1,-28 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -2 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1,-28 + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -2 + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1,-16 + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=leaky + +########################## + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +### SPP ### +[maxpool] +stride=1 +size=5 + +[route] +layers=-2 + +[maxpool] +stride=1 +size=9 + +[route] +layers=-4 + +[maxpool] +stride=1 +size=13 + +[route] +layers=-1,-3,-5,-6 +### End SPP ### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = 85 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1, -3 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = 54 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1, -3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +########################## + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 0,1,2 +anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +scale_x_y = 1.2 +iou_thresh=0.213 +cls_normalizer=1.0 +iou_normalizer=0.07 +iou_loss=ciou +nms_kind=greedynms +beta_nms=0.6 + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +size=3 +stride=2 +pad=1 +filters=256 +activation=leaky + +[route] +layers = -1, -16 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 3,4,5 +anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +scale_x_y = 1.1 +iou_thresh=0.213 +cls_normalizer=1.0 +iou_normalizer=0.07 +iou_loss=ciou +nms_kind=greedynms +beta_nms=0.6 + + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +size=3 +stride=2 +pad=1 +filters=512 +activation=leaky + +[route] +layers = -1, -37 + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 6,7,8 +anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 +scale_x_y = 1.05 +iou_thresh=0.213 +cls_normalizer=1.0 +iou_normalizer=0.07 +iou_loss=ciou +nms_kind=greedynms +beta_nms=0.6 From 15f1343dfc203968b4c048ce7a6c5bd7e2387b13 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 28 Apr 2020 11:07:26 -0700 Subject: [PATCH 2372/2595] uncached label removal --- utils/datasets.py | 161 +++++++++++++++++++++------------------------- 1 file changed, 75 insertions(+), 86 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index bb2b21ae..4fc33e87 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -257,7 +257,7 @@ class LoadStreams: # multiple IP or RTSP cameras class LoadImagesAndLabels(Dataset): # for training/testing def __init__(self, path, img_size=416, batch_size=16, augment=False, hyp=None, rect=False, image_weights=False, - cache_labels=True, cache_images=False, single_cls=False): + cache_images=False, single_cls=False): path = str(Path(path)) # os-agnostic assert os.path.isfile(path), 'File not found %s. See %s' % (path, help_url) with open(path, 'r') as f: @@ -315,71 +315,69 @@ class LoadImagesAndLabels(Dataset): # for training/testing self.batch_shapes = np.ceil(np.array(shapes) * img_size / 64.).astype(np.int) * 64 - # Preload labels (required for weighted CE training) + # Cache labels self.imgs = [None] * n - self.labels = [None] * n - if cache_labels or image_weights: # cache labels for faster training - self.labels = [np.zeros((0, 5))] * n - extract_bounding_boxes = False - create_datasubset = False - pbar = tqdm(self.label_files, desc='Caching labels') - nm, nf, ne, ns, nd = 0, 0, 0, 0, 0 # number missing, found, empty, datasubset, duplicate - for i, file in enumerate(pbar): - try: - with open(file, 'r') as f: - l = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) - except: - nm += 1 # print('missing labels for image %s' % self.img_files[i]) # file missing - continue + self.labels = [np.zeros((0, 5), dtype=np.float32)] * n + extract_bounding_boxes = False + create_datasubset = False + pbar = tqdm(self.label_files, desc='Caching labels') + nm, nf, ne, ns, nd = 0, 0, 0, 0, 0 # number missing, found, empty, datasubset, duplicate + for i, file in enumerate(pbar): + try: + with open(file, 'r') as f: + l = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) + except: + nm += 1 # print('missing labels for image %s' % self.img_files[i]) # file missing + continue - if l.shape[0]: - assert l.shape[1] == 5, '> 5 label columns: %s' % file - assert (l >= 0).all(), 'negative labels: %s' % file - assert (l[:, 1:] <= 1).all(), 'non-normalized or out of bounds coordinate labels: %s' % file - if np.unique(l, axis=0).shape[0] < l.shape[0]: # duplicate rows - nd += 1 # print('WARNING: duplicate rows in %s' % self.label_files[i]) # duplicate rows - if single_cls: - l[:, 0] = 0 # force dataset into single-class mode - self.labels[i] = l - nf += 1 # file found + if l.shape[0]: + assert l.shape[1] == 5, '> 5 label columns: %s' % file + assert (l >= 0).all(), 'negative labels: %s' % file + assert (l[:, 1:] <= 1).all(), 'non-normalized or out of bounds coordinate labels: %s' % file + if np.unique(l, axis=0).shape[0] < l.shape[0]: # duplicate rows + nd += 1 # print('WARNING: duplicate rows in %s' % self.label_files[i]) # duplicate rows + if single_cls: + l[:, 0] = 0 # force dataset into single-class mode + self.labels[i] = l + nf += 1 # file found - # Create subdataset (a smaller dataset) - if create_datasubset and ns < 1E4: - if ns == 0: - create_folder(path='./datasubset') - os.makedirs('./datasubset/images') - exclude_classes = 43 - if exclude_classes not in l[:, 0]: - ns += 1 - # shutil.copy(src=self.img_files[i], dst='./datasubset/images/') # copy image - with open('./datasubset/images.txt', 'a') as f: - f.write(self.img_files[i] + '\n') + # Create subdataset (a smaller dataset) + if create_datasubset and ns < 1E4: + if ns == 0: + create_folder(path='./datasubset') + os.makedirs('./datasubset/images') + exclude_classes = 43 + if exclude_classes not in l[:, 0]: + ns += 1 + # shutil.copy(src=self.img_files[i], dst='./datasubset/images/') # copy image + with open('./datasubset/images.txt', 'a') as f: + f.write(self.img_files[i] + '\n') - # Extract object detection boxes for a second stage classifier - if extract_bounding_boxes: - p = Path(self.img_files[i]) - img = cv2.imread(str(p)) - h, w = img.shape[:2] - for j, x in enumerate(l): - f = '%s%sclassifier%s%g_%g_%s' % (p.parent.parent, os.sep, os.sep, x[0], j, p.name) - if not os.path.exists(Path(f).parent): - os.makedirs(Path(f).parent) # make new output folder + # Extract object detection boxes for a second stage classifier + if extract_bounding_boxes: + p = Path(self.img_files[i]) + img = cv2.imread(str(p)) + h, w = img.shape[:2] + for j, x in enumerate(l): + f = '%s%sclassifier%s%g_%g_%s' % (p.parent.parent, os.sep, os.sep, x[0], j, p.name) + if not os.path.exists(Path(f).parent): + os.makedirs(Path(f).parent) # make new output folder - b = x[1:] * [w, h, w, h] # box - b[2:] = b[2:].max() # rectangle to square - b[2:] = b[2:] * 1.3 + 30 # pad - b = xywh2xyxy(b.reshape(-1, 4)).ravel().astype(np.int) + b = x[1:] * [w, h, w, h] # box + b[2:] = b[2:].max() # rectangle to square + b[2:] = b[2:] * 1.3 + 30 # pad + b = xywh2xyxy(b.reshape(-1, 4)).ravel().astype(np.int) - b[[0, 2]] = np.clip(b[[0, 2]], 0, w) # clip boxes outside of image - b[[1, 3]] = np.clip(b[[1, 3]], 0, h) - assert cv2.imwrite(f, img[b[1]:b[3], b[0]:b[2]]), 'Failure extracting classifier boxes' - else: - ne += 1 # print('empty labels for image %s' % self.img_files[i]) # file empty - # os.system("rm '%s' '%s'" % (self.img_files[i], self.label_files[i])) # remove + b[[0, 2]] = np.clip(b[[0, 2]], 0, w) # clip boxes outside of image + b[[1, 3]] = np.clip(b[[1, 3]], 0, h) + assert cv2.imwrite(f, img[b[1]:b[3], b[0]:b[2]]), 'Failure extracting classifier boxes' + else: + ne += 1 # print('empty labels for image %s' % self.img_files[i]) # file empty + # os.system("rm '%s' '%s'" % (self.img_files[i], self.label_files[i])) # remove - pbar.desc = 'Caching labels (%g found, %g missing, %g empty, %g duplicate, for %g images)' % ( - nf, nm, ne, nd, n) - assert nf > 0, 'No labels found in %s. See %s' % (os.path.dirname(file) + os.sep, help_url) + pbar.desc = 'Caching labels (%g found, %g missing, %g empty, %g duplicate, for %g images)' % ( + nf, nm, ne, nd, n) + assert nf > 0, 'No labels found in %s. See %s' % (os.path.dirname(file) + os.sep, help_url) # Cache images into memory for faster training (WARNING: large datasets may exceed system RAM) if cache_images: # if training @@ -432,7 +430,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Load labels labels = [] x = self.labels[index] - if x is not None and x.size > 0: + if x.size > 0: # Normalized xywh to pixel xyxy format labels = x.copy() labels[:, 1] = ratio[0] * w * (x[:, 1] - x[:, 3] / 2) + pad[0] # pad width @@ -502,9 +500,9 @@ def load_image(self, index): # loads 1 image from dataset, returns img, original hw, resized hw img = self.imgs[index] if img is None: # not cached - img_path = self.img_files[index] - img = cv2.imread(img_path) # BGR - assert img is not None, 'Image Not Found ' + img_path + path = self.img_files[index] + img = cv2.imread(path) # BGR + assert img is not None, 'Image Not Found ' + path h0, w0 = img.shape[:2] # orig hw r = self.img_size / max(h0, w0) # resize image to img_size if r < 1 or (self.augment and r != 1): # always resize down, only resize up if training with augmentation @@ -557,24 +555,15 @@ def load_mosaic(self, index): padw = x1a - x1b padh = y1a - y1b - # Load labels - label_path = self.label_files[index] - if os.path.isfile(label_path): - x = self.labels[index] - if x is None: # labels not preloaded - with open(label_path, 'r') as f: - x = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) - - if x.size > 0: - # Normalized xywh to pixel xyxy format - labels = x.copy() - labels[:, 1] = w * (x[:, 1] - x[:, 3] / 2) + padw - labels[:, 2] = h * (x[:, 2] - x[:, 4] / 2) + padh - labels[:, 3] = w * (x[:, 1] + x[:, 3] / 2) + padw - labels[:, 4] = h * (x[:, 2] + x[:, 4] / 2) + padh - else: - labels = np.zeros((0, 5), dtype=np.float32) - labels4.append(labels) + # Labels + x = self.labels[index] + labels = x.copy() + if x.size > 0: # Normalized xywh to pixel xyxy format + labels[:, 1] = w * (x[:, 1] - x[:, 3] / 2) + padw + labels[:, 2] = h * (x[:, 2] - x[:, 4] / 2) + padh + labels[:, 3] = w * (x[:, 1] + x[:, 3] / 2) + padw + labels[:, 4] = h * (x[:, 2] + x[:, 4] / 2) + padh + labels4.append(labels) # Concat/clip labels if len(labels4): @@ -585,10 +574,10 @@ def load_mosaic(self, index): # Augment # img4 = img4[s // 2: int(s * 1.5), s // 2:int(s * 1.5)] # center crop (WARNING, requires box pruning) img4, labels4 = random_affine(img4, labels4, - degrees=self.hyp['degrees'] * 1, - translate=self.hyp['translate'] * 1, - scale=self.hyp['scale'] * 1, - shear=self.hyp['shear'] * 1, + degrees=self.hyp['degrees'], + translate=self.hyp['translate'], + scale=self.hyp['scale'], + shear=self.hyp['shear'], border=-s // 2) # border to remove return img4, labels4 @@ -688,7 +677,7 @@ def random_affine(img, targets=(), degrees=10, translate=.1, scale=.1, shear=10, area = w * h area0 = (targets[:, 3] - targets[:, 1]) * (targets[:, 4] - targets[:, 2]) ar = np.maximum(w / (h + 1e-16), h / (w + 1e-16)) # aspect ratio - i = (w > 4) & (h > 4) & (area / (area0 + 1e-16) > 0.2) & (ar < 10) + i = (w > 4) & (h > 4) & (area / (area0 * s + 1e-16) > 0.2) & (ar < 10) targets = targets[i] targets[:, 1:5] = xy[i] From 992d8af24216bf9884ab41913f18d65c9def4b56 Mon Sep 17 00:00:00 2001 From: Josh Veitch-Michaelis Date: Tue, 28 Apr 2020 20:59:44 +0100 Subject: [PATCH 2373/2595] faster hsv augmentation (#1110) As per https://github.com/ultralytics/yolov3/issues/1096 --- utils/datasets.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 4fc33e87..3ea42031 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -514,9 +514,16 @@ def load_image(self, index): def augment_hsv(img, hgain=0.5, sgain=0.5, vgain=0.5): - x = np.random.uniform(-1, 1, 3) * [hgain, sgain, vgain] + 1 # random gains - img_hsv = (cv2.cvtColor(img, cv2.COLOR_BGR2HSV) * x).clip(None, 255).astype(np.uint8) - np.clip(img_hsv[:, :, 0], None, 179, out=img_hsv[:, :, 0]) # inplace hue clip (0 - 179 deg) + r = np.random.uniform(-1, 1, 3) * [hgain, sgain, vgain] + 1 # random gains + hue, sat, val = cv2.split(cv2.cvtColor(img, cv2.COLOR_BGR2HSV)) + dtype = img.dtype # uint8 + + x = np.arange(0, 256, dtype=np.int16) + lut_hue = ((x * r[0]) % 180).astype(dtype) + lut_sat = np.clip(x * r[1], 0, 255).astype(dtype) + lut_val = np.clip(x * r[2], 0, 255).astype(dtype) + + img_hsv = cv2.merge((cv2.LUT(hue, lut_hue), cv2.LUT(sat, lut_sat), cv2.LUT(val, lut_val))).astype(dtype) cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) # no return needed # Histogram equalization From 37cbe89ef060c4b9789617b3e539a4c58a56d457 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 28 Apr 2020 13:45:27 -0700 Subject: [PATCH 2374/2595] test/train jpg for png --- test.py | 4 ++-- train.py | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/test.py b/test.py index a4e1ce81..b79f1d1a 100644 --- a/test.py +++ b/test.py @@ -26,7 +26,7 @@ def test(cfg, verbose = opt.task == 'test' # Remove previous - for f in glob.glob('test_batch*.png'): + for f in glob.glob('test_batch*.jpg'): os.remove(f) # Initialize model @@ -83,7 +83,7 @@ def test(cfg, whwh = torch.Tensor([width, height, width, height]).to(device) # Plot images with bounding boxes - f = 'test_batch%g.png' % batch_i # filename + f = 'test_batch%g.jpg' % batch_i # filename if batch_i < 1 and not os.path.exists(f): plot_images(imgs=imgs, targets=targets, paths=paths, fname=f) diff --git a/train.py b/train.py index d32f59e0..ddd66588 100644 --- a/train.py +++ b/train.py @@ -53,6 +53,7 @@ if f: if hyp['fl_gamma']: print('Using FocalLoss(gamma=%g)' % hyp['fl_gamma']) + def train(): cfg = opt.cfg data = opt.data @@ -83,7 +84,7 @@ def train(): hyp['cls'] *= nc / 80 # update coco-tuned hyp['cls'] to current dataset # Remove previous results - for f in glob.glob('*_batch*.png') + glob.glob(results_file): + for f in glob.glob('*_batch*.jpg') + glob.glob(results_file): os.remove(f) # Initialize model @@ -149,7 +150,7 @@ def train(): # Scheduler https://arxiv.org/pdf/1812.01187.pdf lf = lambda x: (((1 + math.cos(x * math.pi / epochs)) / 2) ** 1.0) * 0.95 + 0.05 # cosine scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf) - scheduler.last_epoch=start_epoch - 1 # see link below + scheduler.last_epoch = start_epoch - 1 # see link below # https://discuss.pytorch.org/t/a-problem-occured-when-resuming-an-optimizer/28822 # Plot lr schedule @@ -289,7 +290,7 @@ def train(): # Plot if ni < 1: - f = 'train_batch%g.png' % i # filename + f = 'train_batch%g.jpg' % i # filename plot_images(imgs=imgs, targets=targets, paths=paths, fname=f) if tb_writer: tb_writer.add_image(f, cv2.imread(f)[:, :, ::-1], dataformats='HWC') @@ -388,7 +389,8 @@ if __name__ == '__main__': parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path') parser.add_argument('--data', type=str, default='data/coco2017.data', help='*.data path') parser.add_argument('--multi-scale', action='store_true', help='adjust (67%% - 150%%) img_size every 10 batches') - parser.add_argument('--img-size', nargs='+', type=int, default=[320, 640], help='[min_train, max-train, test] img sizes') + parser.add_argument('--img-size', nargs='+', type=int, default=[320, 640], + help='[min_train, max-train, test] img sizes') parser.add_argument('--rect', action='store_true', help='rectangular training') parser.add_argument('--resume', action='store_true', help='resume training from last.pt') parser.add_argument('--nosave', action='store_true', help='only save final checkpoint') From c6ea2b58ea5b4a1f563c8b14a7590be049cbf3f6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 28 Apr 2020 15:06:33 -0700 Subject: [PATCH 2375/2595] auto-accumulate update --- utils/gcp.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/gcp.sh b/utils/gcp.sh index ad99d8e4..12e2370c 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -36,5 +36,5 @@ do done #COCO training -n=131 && t=ultralytics/coco:v131 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 320 640 --epochs 300 --batch 16 --accum 4 --weights '' --device 0 --cfg yolov3-spp.cfg --nosave --bucket ult/coco --name $n && sudo shutdown -n=132 && t=ultralytics/coco:v131 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 320 640 --epochs 300 --batch 64 --accum 1 --weights '' --device 0 --cfg yolov3-tiny.cfg --nosave --bucket ult/coco --name $n && sudo shutdown +n=131 && t=ultralytics/coco:v131 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 320 640 --epochs 300 --batch 16 --weights '' --device 0 --cfg yolov3-spp.cfg --bucket ult/coco --name $n && sudo shutdown +n=132 && t=ultralytics/coco:v131 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 320 640 --epochs 300 --batch 64 --weights '' --device 0 --cfg yolov3-tiny.cfg --bucket ult/coco --name $n && sudo shutdown From 9cc4951d4fb8df0cf1c9fed5e60c01c150e78a0c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 28 Apr 2020 15:24:14 -0700 Subject: [PATCH 2376/2595] auto reverse-strides for yolov4/panet --- models.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/models.py b/models.py index 5a437027..afd5b87b 100755 --- a/models.py +++ b/models.py @@ -5,7 +5,7 @@ from utils.parse_config import * ONNX_EXPORT = False -def create_modules(module_defs, img_size): +def create_modules(module_defs, img_size, cfg): # Constructs module list of layer blocks from module configuration in module_defs img_size = [img_size] * 2 if isinstance(img_size, int) else img_size # expand if necessary @@ -92,14 +92,16 @@ def create_modules(module_defs, img_size): elif mdef['type'] == 'yolo': yolo_index += 1 - stride = [32, 16, 8, 4, 2][yolo_index] # P3-P7 stride + stride = [32, 16, 8] # P5, P4, P3 strides + if 'panet' in cfg or 'yolov4' in cfg: # stride order reversed + stride = list(reversed(stride)) layers = mdef['from'] if 'from' in mdef else [] modules = YOLOLayer(anchors=mdef['anchors'][mdef['mask']], # anchor list nc=mdef['classes'], # number of classes img_size=img_size, # (416, 416) yolo_index=yolo_index, # 0, 1, 2... layers=layers, # output layers - stride=stride) + stride=stride[yolo_index]) # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) try: @@ -221,7 +223,7 @@ class Darknet(nn.Module): super(Darknet, self).__init__() self.module_defs = parse_model_cfg(cfg) - self.module_list, self.routs = create_modules(self.module_defs, img_size) + self.module_list, self.routs = create_modules(self.module_defs, img_size, cfg) self.yolo_layers = get_yolo_layers(self) # torch_utils.initialize_weights(self) From 9f88f5cc21edce83cafb9bd8cf0f078daf3e6c02 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 29 Apr 2020 11:34:59 -0700 Subject: [PATCH 2377/2595] cleanup --- train.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/train.py b/train.py index ddd66588..5311cfc3 100644 --- a/train.py +++ b/train.py @@ -389,8 +389,7 @@ if __name__ == '__main__': parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path') parser.add_argument('--data', type=str, default='data/coco2017.data', help='*.data path') parser.add_argument('--multi-scale', action='store_true', help='adjust (67%% - 150%%) img_size every 10 batches') - parser.add_argument('--img-size', nargs='+', type=int, default=[320, 640], - help='[min_train, max-train, test] img sizes') + parser.add_argument('--img-size', nargs='+', type=int, default=[320, 640], help='[min_train, max-train, test]') parser.add_argument('--rect', action='store_true', help='rectangular training') parser.add_argument('--resume', action='store_true', help='resume training from last.pt') parser.add_argument('--nosave', action='store_true', help='only save final checkpoint') From d62d68929c59e006994fd252ba42d7ecc170dbb2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 29 Apr 2020 12:00:30 -0700 Subject: [PATCH 2378/2595] cleanup --- train.py | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/train.py b/train.py index 5311cfc3..bf9d6082 100644 --- a/train.py +++ b/train.py @@ -22,7 +22,7 @@ last = wdir + 'last.pt' best = wdir + 'best.pt' results_file = 'results.txt' -# Hyperparameters https://github.com/ultralytics/yolov3/issues/310 +# Hyperparameters hyp = {'giou': 3.54, # giou loss gain 'cls': 37.4, # cls loss gain 'cls_pw': 1.0, # cls BCELoss positive_weight @@ -315,13 +315,13 @@ def train(): single_cls=opt.single_cls, dataloader=testloader) - # Write epoch results + # Write with open(results_file, 'a') as f: f.write(s + '%10.3g' * 7 % results + '\n') # P, R, mAP, F1, test_losses=(GIoU, obj, cls) if len(opt.name) and opt.bucket: os.system('gsutil cp results.txt gs://%s/results/results%s.txt' % (opt.bucket, opt.name)) - # Write Tensorboard results + # Tensorboard if tb_writer: tags = ['train/giou_loss', 'train/obj_loss', 'train/cls_loss', 'metrics/precision', 'metrics/recall', 'metrics/mAP_0.5', 'metrics/F1', @@ -334,34 +334,25 @@ def train(): if fi > best_fitness: best_fitness = fi - # Save training results + # Save model save = (not opt.nosave) or (final_epoch and not opt.evolve) if save: - with open(results_file, 'r') as f: - # Create checkpoint + with open(results_file, 'r') as f: # create checkpoint chkpt = {'epoch': epoch, 'best_fitness': best_fitness, 'training_results': f.read(), 'model': ema.ema.module.state_dict() if hasattr(model, 'module') else ema.ema.state_dict(), 'optimizer': None if final_epoch else optimizer.state_dict()} - # Save last checkpoint + # Save last, best and delete torch.save(chkpt, last) - - # Save best checkpoint if (best_fitness == fi) and not final_epoch: torch.save(chkpt, best) - - # Save backup every 10 epochs (optional) - # if epoch > 0 and epoch % 10 == 0: - # torch.save(chkpt, wdir + 'backup%g.pt' % epoch) - - # Delete checkpoint del chkpt # end epoch ---------------------------------------------------------------------------------------------------- - # end training + n = opt.name if len(n): n = '_' + n if not n.isnumeric() else n @@ -378,7 +369,6 @@ def train(): print('%g epochs completed in %.3f hours.\n' % (epoch - start_epoch + 1, (time.time() - t0) / 3600)) dist.destroy_process_group() if torch.cuda.device_count() > 1 else None torch.cuda.empty_cache() - return results From f1d73a29e549654c99674bf07dd8f7a2f5c19d18 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 30 Apr 2020 12:26:02 -0700 Subject: [PATCH 2379/2595] Optimizer group report --- train.py | 1 + 1 file changed, 1 insertion(+) diff --git a/train.py b/train.py index bf9d6082..67c20aa3 100644 --- a/train.py +++ b/train.py @@ -108,6 +108,7 @@ def train(): optimizer = optim.SGD(pg0, lr=hyp['lr0'], momentum=hyp['momentum'], nesterov=True) optimizer.add_param_group({'params': pg1, 'weight_decay': hyp['weight_decay']}) # add pg1 with weight_decay optimizer.add_param_group({'params': pg2}) # add pg2 (biases) + print('Optimizer groups: %g .bias, %g Conv2d.weight, %g other' % (len(pg2), len(pg1), len(pg0))) del pg0, pg1, pg2 start_epoch = 0 From fb1b5e09b2452edbc57d629183527eeadb7851be Mon Sep 17 00:00:00 2001 From: Josh Veitch-Michaelis Date: Thu, 30 Apr 2020 21:37:04 +0100 Subject: [PATCH 2380/2595] faster and more informative training plots (#1114) * faster and more informative training plots * Update utils.py Looks good. Needs pep8 linting, I'll do that in PyCharm later once PR is in. * Update test.py * Update train.py f for the tb descriptor lets us plot several batches, i.e. to allow us to change L292 to 'if ni < 3' for 3 examples. Co-authored-by: Glenn Jocher --- test.py | 12 ++-- train.py | 4 +- utils/utils.py | 156 ++++++++++++++++++++++++++++++++++++++++++------- 3 files changed, 144 insertions(+), 28 deletions(-) diff --git a/test.py b/test.py index b79f1d1a..0dfd2149 100644 --- a/test.py +++ b/test.py @@ -82,11 +82,6 @@ def test(cfg, nb, _, height, width = imgs.shape # batch size, channels, height, width whwh = torch.Tensor([width, height, width, height]).to(device) - # Plot images with bounding boxes - f = 'test_batch%g.jpg' % batch_i # filename - if batch_i < 1 and not os.path.exists(f): - plot_images(imgs=imgs, targets=targets, paths=paths, fname=f) - # Disable gradients with torch.no_grad(): # Run model @@ -167,6 +162,13 @@ def test(cfg, # Append statistics (correct, conf, pcls, tcls) stats.append((correct.cpu(), pred[:, 4].cpu(), pred[:, 5].cpu(), tcls)) + # Plot images + if batch_i < 1: + f = 'test_batch%g_gt.jpg' % batch_i # filename + plot_images(images=imgs, targets=targets, paths=paths, names=names, fname=f) # ground truth + f = 'test_batch%g_pred.jpg' % batch_i # filename + plot_images(images=imgs, targets=output_to_target(output, width, height), paths=paths, names=names, fname=f) # predictions + # Compute statistics stats = [np.concatenate(x, 0) for x in zip(*stats)] # to numpy if len(stats): diff --git a/train.py b/train.py index 67c20aa3..5ee55f88 100644 --- a/train.py +++ b/train.py @@ -292,9 +292,9 @@ def train(): # Plot if ni < 1: f = 'train_batch%g.jpg' % i # filename - plot_images(imgs=imgs, targets=targets, paths=paths, fname=f) + res = plot_images(images=imgs, targets=targets, paths=paths, fname=f) if tb_writer: - tb_writer.add_image(f, cv2.imread(f)[:, :, ::-1], dataformats='HWC') + tb_writer.add_image(f, res, dataformats='HWC', global_step=epoch) # tb_writer.add_graph(model, imgs) # add model to tensorboard # end batch ------------------------------------------------------------------------------------------------ diff --git a/utils/utils.py b/utils/utils.py index 4547de31..1335e46b 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -829,6 +829,35 @@ def fitness(x): return (x[:, :4] * w).sum(1) +def output_to_target(output, width, height): + """ + Convert a YOLO model output to target format + + [batch_id, class_id, x, y, w, h, conf] + + """ + + if isinstance(output, torch.Tensor): + output = output.cpu().numpy() + + targets = [] + for i, o in enumerate(output): + + if o is not None: + for pred in o: + box = pred[:4] + w = (box[2]-box[0])/width + h = (box[3]-box[1])/height + x = box[0]/width + w/2 + y = box[1]/height + h/2 + conf = pred[4] + cls = int(pred[5]) + + targets.append([i, cls, x, y, w, h, conf]) + + return np.array(targets) + + # Plotting functions --------------------------------------------------------------------------------------------------- def plot_one_box(x, img, color=None, label=None, line_thickness=None): # Plots one bounding box on image img @@ -864,30 +893,115 @@ def plot_wh_methods(): # from utils.utils import *; plot_wh_methods() fig.savefig('comparison.png', dpi=200) -def plot_images(imgs, targets, paths=None, fname='images.png'): - # Plots training images overlaid with targets - imgs = imgs.cpu().numpy() - targets = targets.cpu().numpy() - # targets = targets[targets[:, 1] == 21] # plot only one class +def plot_images(images, targets, paths=None, fname='images.jpg', names=None, class_labels=True, confidence_labels=True, max_size=640, max_subplots=16): - fig = plt.figure(figsize=(10, 10)) - bs, _, h, w = imgs.shape # batch size, _, height, width - bs = min(bs, 16) # limit plot to 16 images - ns = np.ceil(bs ** 0.5) # number of subplots + if isinstance(images, torch.Tensor): + images = images.cpu().numpy() + + if isinstance(targets, torch.Tensor): + targets = targets.cpu().numpy() + + # un-normalise + if np.max(images[0]) <= 1: + images *= 255 + + bs, _, h, w = images.shape # batch size, _, height, width + bs = min(bs, max_subplots) # limit plot images + ns = np.ceil(bs ** 0.5) # number of subplots (square) + + # Check if we should resize + should_resize = False + if w > max_size or h > max_size: + scale_factor = max_size/max(h, w) + h = math.ceil(scale_factor*h) + w = math.ceil(scale_factor*w) + should_resize=True + + # Empty array for output + mosaic_width = int(ns*w) + mosaic_height = int(ns*h) + mosaic = 255*np.ones((mosaic_height, mosaic_width, 3), dtype=np.uint8) + + # Fix class - colour map + prop_cycle = plt.rcParams['axes.prop_cycle'] + # https://stackoverflow.com/questions/51350872/python-from-color-name-to-rgb + hex2rgb = lambda h : tuple(int(h[1+i:1+i+2], 16) for i in (0, 2, 4)) + color_lut = [hex2rgb(h) for h in prop_cycle.by_key()['color']] - for i in range(bs): - boxes = xywh2xyxy(targets[targets[:, 0] == i, 2:6]).T - boxes[[0, 2]] *= w - boxes[[1, 3]] *= h - plt.subplot(ns, ns, i + 1).imshow(imgs[i].transpose(1, 2, 0)) - plt.plot(boxes[[0, 2, 2, 0, 0]], boxes[[1, 1, 3, 3, 1]], '.-') - plt.axis('off') + for i, image in enumerate(images): + + # e.g. if the last batch has fewer images than we expect + if i == max_subplots: + break + + block_x = int(w * (i // ns)) + block_y = int(h * (i % ns)) + + image = image.transpose(1,2,0) + + if should_resize: + image = cv2.resize(image, (w, h)) + + mosaic[block_y:block_y+h, block_x:block_x+w,:] = image + + if targets is not None: + image_targets = targets[targets[:, 0] == i] + boxes = xywh2xyxy(image_targets[:,2:6]).T + classes = image_targets[:,1].astype('int') + + # Check if we have object confidences (gt vs pred) + confidences = None + if image_targets.shape[1] > 6: + confidences = image_targets[:,6] + + boxes[[0, 2]] *= w + boxes[[0, 2]] += block_x + + boxes[[1, 3]] *= h + boxes[[1, 3]] += block_y + + for j, box in enumerate(boxes.T): + color = color_lut[int(classes[j]) % len(color_lut)] + box = box.astype(int) + cv2.rectangle(mosaic, (box[0], box[1]), (box[2], box[3]), color, thickness=2) + + # Draw class label + if class_labels and max_size > 250: + label = str(classes[j]) if names is None else names[classes[j]] + if confidences is not None and confidence_labels: + label += " {:1.2f}".format(confidences[j]) + + font_scale = 0.4/10 * min(20, h * 0.05) + font_thickness = 2 if max(w, h) > 320 else 1 + + label_size, _ = cv2.getTextSize(label, cv2.FONT_HERSHEY_SIMPLEX, font_scale, font_thickness) + cv2.rectangle(mosaic, (box[0], box[1]), (box[0]+label_size[0], box[1]-label_size[1]), color, thickness=-1) + cv2.putText(mosaic, label, (box[0], box[1]), fontFace=cv2.FONT_HERSHEY_SIMPLEX, fontScale=font_scale, thickness=font_thickness, color=(255,255,255)) + + # Draw image filename labels if paths is not None: - s = Path(paths[i]).name - plt.title(s[:min(len(s), 40)], fontdict={'size': 8}) # limit to 40 characters - fig.tight_layout() - fig.savefig(fname, dpi=200) - plt.close() + # Trim to 40 chars + label = os.path.basename(paths[i])[:40] + + # Empirical calculation to fit label + # 0.4 is at most (13, 10) px per char at thickness = 1 + # Fit label to 20px high, or shrink if it would be too big + max_font_scale = (w/len(label))*(0.4/8) + font_scale = min(0.4 * 20/8.5, max_font_scale) + font_thickness = 1 + + label_size, baseline = cv2.getTextSize(label, cv2.FONT_HERSHEY_DUPLEX, font_scale, font_thickness) + + cv2.rectangle(mosaic, (block_x+5, block_y+label_size[1]+baseline+5), (block_x+label_size[0]+5, block_y), 0, thickness=-1) + cv2.putText(mosaic, label, (block_x+5, block_y+label_size[1]+5), cv2.FONT_HERSHEY_DUPLEX, font_scale, (255,255,255), font_thickness) + + # Image border + cv2.rectangle(mosaic, (block_x, block_y), (block_x+w, block_y+h), (255,255,255), thickness=3) + + if fname is not None: + cv2.imwrite(fname, cv2.cvtColor(mosaic, cv2.COLOR_BGR2RGB)) + + return mosaic def plot_test_txt(): # from utils.utils import *; plot_test() From 0ffbf5534e84be1600304413c6868901a70d65a5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 30 Apr 2020 14:53:57 -0700 Subject: [PATCH 2381/2595] cleanup for #1114 --- test.py | 6 +-- utils/utils.py | 123 ++++++++++++++++++------------------------------- 2 files changed, 49 insertions(+), 80 deletions(-) diff --git a/test.py b/test.py index 0dfd2149..0f968811 100644 --- a/test.py +++ b/test.py @@ -165,9 +165,9 @@ def test(cfg, # Plot images if batch_i < 1: f = 'test_batch%g_gt.jpg' % batch_i # filename - plot_images(images=imgs, targets=targets, paths=paths, names=names, fname=f) # ground truth - f = 'test_batch%g_pred.jpg' % batch_i # filename - plot_images(images=imgs, targets=output_to_target(output, width, height), paths=paths, names=names, fname=f) # predictions + plot_images(imgs, targets, paths=paths, names=names, fname=f) # ground truth + f = 'test_batch%g_pred.jpg' % batch_i + plot_images(imgs, output_to_target(output, width, height), paths=paths, names=names, fname=f) # predictions # Compute statistics stats = [np.concatenate(x, 0) for x in zip(*stats)] # to numpy diff --git a/utils/utils.py b/utils/utils.py index 1335e46b..642ebdba 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -836,7 +836,7 @@ def output_to_target(output, width, height): [batch_id, class_id, x, y, w, h, conf] """ - + if isinstance(output, torch.Tensor): output = output.cpu().numpy() @@ -846,10 +846,10 @@ def output_to_target(output, width, height): if o is not None: for pred in o: box = pred[:4] - w = (box[2]-box[0])/width - h = (box[3]-box[1])/height - x = box[0]/width + w/2 - y = box[1]/height + h/2 + w = (box[2] - box[0]) / width + h = (box[3] - box[1]) / height + x = box[0] / width + w / 2 + y = box[1] / height + h / 2 conf = pred[4] cls = int(pred[5]) @@ -893,111 +893,80 @@ def plot_wh_methods(): # from utils.utils import *; plot_wh_methods() fig.savefig('comparison.png', dpi=200) -def plot_images(images, targets, paths=None, fname='images.jpg', names=None, class_labels=True, confidence_labels=True, max_size=640, max_subplots=16): +def plot_images(images, targets, paths=None, fname='images.jpg', names=None, max_size=640, max_subplots=16): + tl = 3 # line thickness + tf = max(tl - 1, 1) # font thickness if isinstance(images, torch.Tensor): images = images.cpu().numpy() - + if isinstance(targets, torch.Tensor): targets = targets.cpu().numpy() - + # un-normalise if np.max(images[0]) <= 1: images *= 255 - + bs, _, h, w = images.shape # batch size, _, height, width bs = min(bs, max_subplots) # limit plot images ns = np.ceil(bs ** 0.5) # number of subplots (square) - + # Check if we should resize - should_resize = False - if w > max_size or h > max_size: - scale_factor = max_size/max(h, w) - h = math.ceil(scale_factor*h) - w = math.ceil(scale_factor*w) - should_resize=True - + scale_factor = max_size / max(h, w) + if scale_factor < 1: + h = math.ceil(scale_factor * h) + w = math.ceil(scale_factor * w) + # Empty array for output - mosaic_width = int(ns*w) - mosaic_height = int(ns*h) - mosaic = 255*np.ones((mosaic_height, mosaic_width, 3), dtype=np.uint8) - + mosaic = np.full((int(ns * h), int(ns * w), 3), 255, dtype=np.uint8) + # Fix class - colour map prop_cycle = plt.rcParams['axes.prop_cycle'] # https://stackoverflow.com/questions/51350872/python-from-color-name-to-rgb - hex2rgb = lambda h : tuple(int(h[1+i:1+i+2], 16) for i in (0, 2, 4)) + hex2rgb = lambda h: tuple(int(h[1 + i:1 + i + 2], 16) for i in (0, 2, 4)) color_lut = [hex2rgb(h) for h in prop_cycle.by_key()['color']] - for i, image in enumerate(images): - - # e.g. if the last batch has fewer images than we expect - if i == max_subplots: + for i, img in enumerate(images): + if i == max_subplots: # if last batch has fewer images than we expect break - + block_x = int(w * (i // ns)) block_y = int(h * (i % ns)) - - image = image.transpose(1,2,0) - - if should_resize: - image = cv2.resize(image, (w, h)) - - mosaic[block_y:block_y+h, block_x:block_x+w,:] = image - + + img = img.transpose(1, 2, 0) + if scale_factor < 1: + img = cv2.resize(img, (w, h)) + + mosaic[block_y:block_y + h, block_x:block_x + w, :] = img if targets is not None: image_targets = targets[targets[:, 0] == i] - boxes = xywh2xyxy(image_targets[:,2:6]).T - classes = image_targets[:,1].astype('int') - - # Check if we have object confidences (gt vs pred) - confidences = None - if image_targets.shape[1] > 6: - confidences = image_targets[:,6] - + boxes = xywh2xyxy(image_targets[:, 2:6]).T + classes = image_targets[:, 1].astype('int') + gt = image_targets.shape[1] == 6 # ground truth if no conf column + conf = None if gt else image_targets[:, 6] # check for confidence presence (gt vs pred) + boxes[[0, 2]] *= w boxes[[0, 2]] += block_x - boxes[[1, 3]] *= h boxes[[1, 3]] += block_y - for j, box in enumerate(boxes.T): - color = color_lut[int(classes[j]) % len(color_lut)] - box = box.astype(int) - cv2.rectangle(mosaic, (box[0], box[1]), (box[2], box[3]), color, thickness=2) - - # Draw class label - if class_labels and max_size > 250: - label = str(classes[j]) if names is None else names[classes[j]] - if confidences is not None and confidence_labels: - label += " {:1.2f}".format(confidences[j]) - - font_scale = 0.4/10 * min(20, h * 0.05) - font_thickness = 2 if max(w, h) > 320 else 1 + cls = int(classes[j]) + color = color_lut[cls % len(color_lut)] + cls = names[cls] if names else cls + if gt or conf[j] > 0.3: # 0.3 conf thresh + label = '%s' % cls if gt else '%s %.1f' % (cls, conf[j]) + plot_one_box(box, mosaic, label=label, color=color, line_thickness=tl) - label_size, _ = cv2.getTextSize(label, cv2.FONT_HERSHEY_SIMPLEX, font_scale, font_thickness) - cv2.rectangle(mosaic, (box[0], box[1]), (box[0]+label_size[0], box[1]-label_size[1]), color, thickness=-1) - cv2.putText(mosaic, label, (box[0], box[1]), fontFace=cv2.FONT_HERSHEY_SIMPLEX, fontScale=font_scale, thickness=font_thickness, color=(255,255,255)) - # Draw image filename labels if paths is not None: - # Trim to 40 chars - label = os.path.basename(paths[i])[:40] + label = os.path.basename(paths[i])[:40] # trim to 40 char + t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, thickness=tf)[0] + cv2.putText(mosaic, label, (block_x + 5, block_y + t_size[1] + 5), 0, tl / 3, [220, 220, 220], thickness=tf, + lineType=cv2.LINE_AA) - # Empirical calculation to fit label - # 0.4 is at most (13, 10) px per char at thickness = 1 - # Fit label to 20px high, or shrink if it would be too big - max_font_scale = (w/len(label))*(0.4/8) - font_scale = min(0.4 * 20/8.5, max_font_scale) - font_thickness = 1 - - label_size, baseline = cv2.getTextSize(label, cv2.FONT_HERSHEY_DUPLEX, font_scale, font_thickness) - - cv2.rectangle(mosaic, (block_x+5, block_y+label_size[1]+baseline+5), (block_x+label_size[0]+5, block_y), 0, thickness=-1) - cv2.putText(mosaic, label, (block_x+5, block_y+label_size[1]+5), cv2.FONT_HERSHEY_DUPLEX, font_scale, (255,255,255), font_thickness) - # Image border - cv2.rectangle(mosaic, (block_x, block_y), (block_x+w, block_y+h), (255,255,255), thickness=3) - + cv2.rectangle(mosaic, (block_x, block_y), (block_x + w, block_y + h), (255, 255, 255), thickness=3) + if fname is not None: cv2.imwrite(fname, cv2.cvtColor(mosaic, cv2.COLOR_BGR2RGB)) From b0629d622cf546fa60bd24b951857bb9b447cc35 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 30 Apr 2020 15:03:32 -0700 Subject: [PATCH 2382/2595] bug fix on #1114 --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 642ebdba..a317b6ee 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -938,7 +938,7 @@ def plot_images(images, targets, paths=None, fname='images.jpg', names=None, max img = cv2.resize(img, (w, h)) mosaic[block_y:block_y + h, block_x:block_x + w, :] = img - if targets is not None: + if len(targets) > 0: image_targets = targets[targets[:, 0] == i] boxes = xywh2xyxy(image_targets[:, 2:6]).T classes = image_targets[:, 1].astype('int') From be87b41aa2fe59be8e62f4b488052b24ad0bd450 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 30 Apr 2020 16:50:58 -0700 Subject: [PATCH 2383/2595] update image display per #1114 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 85d169a2..b0246edd 100755 --- a/README.md +++ b/README.md @@ -51,9 +51,9 @@ Python 3.7 or later with all `pip install -U -r requirements.txt` packages inclu ## Image Augmentation -`datasets.py` applies OpenCV-powered (https://opencv.org/) augmentation to the input image. We use a **mosaic dataloader** (pictured below) to increase image variability during training. +`datasets.py` applies OpenCV-powered (https://opencv.org/) augmentation to the input image. We use a **mosaic dataloader** to increase image variability during training. - + ## Speed From ee7cba65a5637a1d857b43743deee3aa55e371da Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 2 May 2020 09:20:19 -0700 Subject: [PATCH 2384/2595] kmeans() cleanup --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index a317b6ee..010f16de 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -690,7 +690,7 @@ def coco_single_class_labels(path='../coco/labels/train2014/', label_class=43): shutil.copyfile(src=img_file, dst='new/images/' + Path(file).name.replace('txt', 'jpg')) # copy images -def kmean_anchors(path='../coco/train2017.txt', n=12, img_size=(320, 1024), thr=0.10, gen=1000): +def kmean_anchors(path='./data/coco64.txt', n=9, img_size=(320, 1024), thr=0.20, gen=1000): # Creates kmeans anchors for use in *.cfg files: from utils.utils import *; _ = kmean_anchors() # n: number of anchors # img_size: (min, max) image size used for multi-scale training (can be same values) @@ -717,7 +717,7 @@ def kmean_anchors(path='../coco/train2017.txt', n=12, img_size=(320, 1024), thr= # Get label wh wh = [] - dataset = LoadImagesAndLabels(path, augment=True, rect=True, cache_labels=True) + dataset = LoadImagesAndLabels(path, augment=True, rect=True) nr = 1 if img_size[0] == img_size[1] else 10 # number augmentation repetitions for s, l in zip(dataset.shapes, dataset.labels): wh.append(l[:, 3:5] * (s / s.max())) # image normalized to letterbox normalized wh From add73a0e74fc6b18d0a6ecbf7516d691f0cc4a16 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 2 May 2020 10:23:40 -0700 Subject: [PATCH 2385/2595] speed update --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b0246edd..223101f5 100755 --- a/README.md +++ b/README.md @@ -58,15 +58,15 @@ Python 3.7 or later with all `pip install -U -r requirements.txt` packages inclu ## Speed https://cloud.google.com/deep-learning-vm/ -**Machine type:** preemptible [n1-standard-16](https://cloud.google.com/compute/docs/machine-types) (16 vCPUs, 60 GB memory) +**Machine type:** preemptible [n1-standard-8](https://cloud.google.com/compute/docs/machine-types) (8 vCPUs, 30 GB memory) **CPU platform:** Intel Skylake **GPUs:** K80 ($0.14/hr), T4 ($0.11/hr), V100 ($0.74/hr) CUDA with [Nvidia Apex](https://github.com/NVIDIA/apex) FP16/32 **HDD:** 1 TB SSD **Dataset:** COCO train 2014 (117,263 images) **Model:** `yolov3-spp.cfg` -**Command:** `python3 train.py --img 416 --batch 32 --accum 2` +**Command:** `python3 train.py --data coco2017.data --img 416 --batch 32` -GPU |n| `--batch --accum` | img/s | epoch
time | epoch
cost +GPU | n | `--batch-size` | img/s | epoch
time | epoch
cost --- |--- |--- |--- |--- |--- K80 |1| 32 x 2 | 11 | 175 min | $0.41 T4 |1
2| 32 x 2
64 x 1 | 41
61 | 48 min
32 min | $0.09
$0.11 From 23614b8c2ec2e07aabecdda74f3b27acae6544af Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 2 May 2020 10:24:26 -0700 Subject: [PATCH 2386/2595] speed update --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 223101f5..2ec31121 100755 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ https://cloud.google.com/deep-learning-vm/ **Machine type:** preemptible [n1-standard-8](https://cloud.google.com/compute/docs/machine-types) (8 vCPUs, 30 GB memory) **CPU platform:** Intel Skylake **GPUs:** K80 ($0.14/hr), T4 ($0.11/hr), V100 ($0.74/hr) CUDA with [Nvidia Apex](https://github.com/NVIDIA/apex) FP16/32 -**HDD:** 1 TB SSD +**HDD:** 300 GB SSD **Dataset:** COCO train 2014 (117,263 images) **Model:** `yolov3-spp.cfg` **Command:** `python3 train.py --data coco2017.data --img 416 --batch 32` From b0b52eec53e43548430f823e4d60032fab163228 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 2 May 2020 11:09:09 -0700 Subject: [PATCH 2387/2595] yolov4 tensorrt --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2ec31121..0329a135 100755 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ Python 3.7 or later with all `pip install -U -r requirements.txt` packages inclu * [Google Colab Notebook](https://colab.research.google.com/github/ultralytics/yolov3/blob/master/tutorial.ipynb) with quick training, inference and testing examples * [GCP Quickstart](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) * [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) -* [A TensorRT Implementation of YOLOv3-SPP](https://github.com/wang-xinyu/tensorrtx/tree/master/yolov3-spp) +* [A TensorRT Implementation of YOLOv3 and YOLOv4](https://github.com/wang-xinyu/tensorrtx/tree/master/yolov3-spp) # Training From 5d42cc1b9a90e26b0b9bffba61fae93f5d1691b9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 2 May 2020 18:44:31 -0700 Subject: [PATCH 2388/2595] Update README.md --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0329a135..06a3ecdd 100755 --- a/README.md +++ b/README.md @@ -155,11 +155,12 @@ Speed: 17.5/2.3/19.9 ms inference/NMS/total per 640x640 image at batch-size 16 # Reproduce Our Results -This command trains `yolov3-spp.cfg` from scratch to our mAP above. Training takes about one week on a 2080Ti. +Run commands below. Training takes about one week on a 2080Ti per model. ```bash -$ python3 train.py --weights '' --cfg yolov3-spp.cfg --epochs 300 --batch-size 16 --img 320 640 +$ python train.py --data coco2014.data --weights '' --batch-size 16 --cfg yolov3-spp.cfg +$ python train.py --data coco2014.data --weights '' --batch-size 32 --cfg yolov3-tiny.cfg ``` - + # Reproduce Our Environment From d40595989388e0c99b7ee7e391b2ca9a7edb7848 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 4 May 2020 13:33:34 -0700 Subject: [PATCH 2389/2595] cleanup --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 5ee55f88..1c70e193 100644 --- a/train.py +++ b/train.py @@ -72,7 +72,7 @@ def train(): imgsz_min //= 1.5 imgsz_max //= 0.667 grid_min, grid_max = imgsz_min // gs, imgsz_max // gs - imgsz_min, imgsz_max = grid_min * gs, grid_max * gs + imgsz_min, imgsz_max = int(grid_min * gs), int(grid_max * gs) img_size = imgsz_max # initialize with max size # Configure run From 832ceba55916e9c7fa15ff47dbf1edb573fcf6d6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 6 May 2020 10:14:31 -0700 Subject: [PATCH 2390/2595] update bug report template --- .github/ISSUE_TEMPLATE/--bug-report.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/--bug-report.md b/.github/ISSUE_TEMPLATE/--bug-report.md index ecc096f8..f430908d 100644 --- a/.github/ISSUE_TEMPLATE/--bug-report.md +++ b/.github/ISSUE_TEMPLATE/--bug-report.md @@ -8,13 +8,13 @@ assignees: '' --- Before submitting a bug report, please ensure that you are using the latest versions of: - - python - - torch - - this repo (run `git status` and `git pull`) + - Python + - PyTorch + - This repository (run `git status -uno` to check and `git pull` to update) **Your issue must be reproducible on a public dataset (i.e COCO) using the latest version of the repository, and you must supply code to reproduce, or we can not help you.** -If this is a custom training question we suggest you include your `train_batch0.png` and `results.png` figures. +If this is a custom training question we suggest you include your `train*.jpg`, `test*.jpg` and `results.png` figures. ## 🐛 Bug From 965155ee60b534e0f71029a1c7ddc0a2cad50f8d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 6 May 2020 10:26:28 -0700 Subject: [PATCH 2391/2595] CUBLAS bug fix #1139 --- utils/utils.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 010f16de..d6d9f947 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -556,13 +556,15 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T boxes, scores = x[:, :4].clone() + c.view(-1, 1) * max_wh, x[:, 4] # boxes (offset by class), scores if method == 'merge': # Merge NMS (boxes merged using weighted mean) i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) - if n < 3E3: # update boxes as boxes(i,4) = weights(i,n) * boxes(n,4) - # weights = (box_iou(boxes, boxes).tril_() > iou_thres) * scores.view(-1, 1) # box weights - # weights /= weights.sum(0) # normalize - # x[:, :4] = torch.mm(weights.T, x[:, :4]) - weights = (box_iou(boxes[i], boxes) > iou_thres) * scores[None] # box weights - x[i, :4] = torch.mm(weights / weights.sum(1, keepdim=True), x[:, :4]).float() # merged boxes - + if 1 < n < 3E3: # update boxes as boxes(i,4) = weights(i,n) * boxes(n,4) + try: + # weights = (box_iou(boxes, boxes).tril_() > iou_thres) * scores.view(-1, 1) # box weights + # weights /= weights.sum(0) # normalize + # x[:, :4] = torch.mm(weights.T, x[:, :4]) + weights = (box_iou(boxes[i], boxes) > iou_thres) * scores[None] # box weights + x[i, :4] = torch.mm(weights / weights.sum(1, keepdim=True), x[:, :4]).float() # merged boxes + except: # possible CUDA error https://github.com/ultralytics/yolov3/issues/1139 + pass elif method == 'vision': i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) elif method == 'fast': # FastNMS from https://github.com/dbolya/yolact From ae2bc020eb81f7a92d538c210d70d1a14a7645cc Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 9 May 2020 22:35:44 -0700 Subject: [PATCH 2392/2595] git status check - linux and darwin --- detect.py | 1 - utils/utils.py | 10 ++++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/detect.py b/detect.py index 635d7059..15582a5d 100644 --- a/detect.py +++ b/detect.py @@ -1,5 +1,4 @@ import argparse -from sys import platform from models import * # set ONNX_EXPORT in models.py from utils.datasets import * diff --git a/utils/utils.py b/utils/utils.py index d6d9f947..a07c430c 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -5,6 +5,7 @@ import random import shutil import subprocess from pathlib import Path +from sys import platform import cv2 import matplotlib @@ -33,10 +34,11 @@ def init_seeds(seed=0): def check_git_status(): - # Suggest 'git pull' if repo is out of date - s = subprocess.check_output('if [ -d .git ]; then git fetch && git status -uno; fi', shell=True).decode('utf-8') - if 'Your branch is behind' in s: - print(s[s.find('Your branch is behind'):s.find('\n\n')] + '\n') + if platform in ['linux', 'darwin']: + # Suggest 'git pull' if repo is out of date + s = subprocess.check_output('if [ -d .git ]; then git fetch && git status -uno; fi', shell=True).decode('utf-8') + if 'Your branch is behind' in s: + print(s[s.find('Your branch is behind'):s.find('\n\n')] + '\n') def load_classes(path): From 9f04e175f62dca079f2e6c829f97dbb32e66b33d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 10 May 2020 11:26:37 -0700 Subject: [PATCH 2393/2595] nms torch.mm() update --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index a07c430c..f7ce54f7 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -564,7 +564,7 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T # weights /= weights.sum(0) # normalize # x[:, :4] = torch.mm(weights.T, x[:, :4]) weights = (box_iou(boxes[i], boxes) > iou_thres) * scores[None] # box weights - x[i, :4] = torch.mm(weights / weights.sum(1, keepdim=True), x[:, :4]).float() # merged boxes + x[i, :4] = torch.mm(weights, x[:, :4]).float() / weights.sum(1, keepdim=True) # merged boxes except: # possible CUDA error https://github.com/ultralytics/yolov3/issues/1139 pass elif method == 'vision': From 894a3e54ca002f2296a91de3d07685f8b121b113 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 11 May 2020 11:14:34 -0700 Subject: [PATCH 2394/2595] Update --bug-report.md --- .github/ISSUE_TEMPLATE/--bug-report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/--bug-report.md b/.github/ISSUE_TEMPLATE/--bug-report.md index f430908d..500b606b 100644 --- a/.github/ISSUE_TEMPLATE/--bug-report.md +++ b/.github/ISSUE_TEMPLATE/--bug-report.md @@ -10,7 +10,7 @@ assignees: '' Before submitting a bug report, please ensure that you are using the latest versions of: - Python - PyTorch - - This repository (run `git status -uno` to check and `git pull` to update) + - This repository (run `git fetch && git status -uno` to check and `git pull` to update) **Your issue must be reproducible on a public dataset (i.e COCO) using the latest version of the repository, and you must supply code to reproduce, or we can not help you.** From 031c2144ecfc7931a4b9e34a26c4ae0b6dee021f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 12 May 2020 08:31:36 -0700 Subject: [PATCH 2395/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 06a3ecdd..baa2ccbf 100755 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ https://cloud.google.com/deep-learning-vm/ **Machine type:** preemptible [n1-standard-8](https://cloud.google.com/compute/docs/machine-types) (8 vCPUs, 30 GB memory) **CPU platform:** Intel Skylake **GPUs:** K80 ($0.14/hr), T4 ($0.11/hr), V100 ($0.74/hr) CUDA with [Nvidia Apex](https://github.com/NVIDIA/apex) FP16/32 -**HDD:** 300 GB SSD +**HDD:** 300 GB SSD **Dataset:** COCO train 2014 (117,263 images) **Model:** `yolov3-spp.cfg` **Command:** `python3 train.py --data coco2017.data --img 416 --batch 32` From 0cf88f046d1a00f92850566d13fa837edfb09c02 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 12 May 2020 09:53:13 -0700 Subject: [PATCH 2396/2595] hyp evolution bug fix #1160 --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 1c70e193..0f4997e1 100644 --- a/train.py +++ b/train.py @@ -54,7 +54,7 @@ if hyp['fl_gamma']: print('Using FocalLoss(gamma=%g)' % hyp['fl_gamma']) -def train(): +def train(hyp): cfg = opt.cfg data = opt.data epochs = opt.epochs # 500200 batches at bs 64, 117263 images = 273 epochs @@ -409,7 +409,7 @@ if __name__ == '__main__': if not opt.evolve: # Train normally print('Start Tensorboard with "tensorboard --logdir=runs", view at http://localhost:6006/') tb_writer = SummaryWriter(comment=opt.name) - train() # train normally + train(hyp) # train normally else: # Evolve hyperparameters (optional) opt.notest, opt.nosave = True, True # only test/save final epoch @@ -455,7 +455,7 @@ if __name__ == '__main__': hyp[k] = np.clip(hyp[k], v[0], v[1]) # Train mutation - results = train() + results = train(hyp.copy()) # Write mutation results print_mutation(hyp, results, opt.bucket) From b2fcfc573e5418c0b2ef0c0357bf51bc5cb027b6 Mon Sep 17 00:00:00 2001 From: IlyaOvodov <34230114+IlyaOvodov@users.noreply.github.com> Date: Wed, 13 May 2020 19:08:55 +0300 Subject: [PATCH 2397/2595] convert(...) changed to save converted file alongside the original file (#1167) --- README.md | 4 ++-- models.py | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index baa2ccbf..c1e62d0f 100755 --- a/README.md +++ b/README.md @@ -107,11 +107,11 @@ $ git clone https://github.com/ultralytics/yolov3 && cd yolov3 # convert darknet cfg/weights to pytorch model $ python3 -c "from models import *; convert('cfg/yolov3-spp.cfg', 'weights/yolov3-spp.weights')" -Success: converted 'weights/yolov3-spp.weights' to 'converted.pt' +Success: converted 'weights/yolov3-spp.weights' to 'weights/yolov3-spp.pt' # convert cfg/pytorch model to darknet weights $ python3 -c "from models import *; convert('cfg/yolov3-spp.cfg', 'weights/yolov3-spp.pt')" -Success: converted 'weights/yolov3-spp.pt' to 'converted.weights' +Success: converted 'weights/yolov3-spp.pt' to 'weights/yolov3-spp.weights' ``` # mAP diff --git a/models.py b/models.py index afd5b87b..ebe151b6 100755 --- a/models.py +++ b/models.py @@ -423,8 +423,9 @@ def convert(cfg='cfg/yolov3-spp.cfg', weights='weights/yolov3-spp.weights'): # Load weights and save if weights.endswith('.pt'): # if PyTorch format model.load_state_dict(torch.load(weights, map_location='cpu')['model']) - save_weights(model, path='converted.weights', cutoff=-1) - print("Success: converted '%s' to 'converted.weights'" % weights) + target = weights.rsplit('.', 1)[0] + '.weights' + save_weights(model, path=target, cutoff=-1) + print("Success: converted '%s' to '%s'" % (weights, target)) elif weights.endswith('.weights'): # darknet format _ = load_darknet_weights(model, weights) @@ -435,8 +436,9 @@ def convert(cfg='cfg/yolov3-spp.cfg', weights='weights/yolov3-spp.weights'): 'model': model.state_dict(), 'optimizer': None} - torch.save(chkpt, 'converted.pt') - print("Success: converted '%s' to 'converted.pt'" % weights) + target = weights.rsplit('.', 1)[0] + '.pt' + torch.save(chkpt, target) + print("Success: converted '%s' to '%'" % (weights, target)) else: print('Error: extension not supported.') From 6fe67595cb856fe9b8d8c745c241aec3f772731b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 15 May 2020 11:32:23 -0700 Subject: [PATCH 2398/2595] add stride order reversal for c53*.cfg --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index ebe151b6..a85bf987 100755 --- a/models.py +++ b/models.py @@ -93,7 +93,7 @@ def create_modules(module_defs, img_size, cfg): elif mdef['type'] == 'yolo': yolo_index += 1 stride = [32, 16, 8] # P5, P4, P3 strides - if 'panet' in cfg or 'yolov4' in cfg: # stride order reversed + if 'panet' in cfg or 'yolov4' or 'cd53' in cfg: # stride order reversed stride = list(reversed(stride)) layers = mdef['from'] if 'from' in mdef else [] modules = YOLOLayer(anchors=mdef['anchors'][mdef['mask']], # anchor list From 20891926c9f721a338ff6183514819f2fa8077f6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 15 May 2020 14:40:14 -0700 Subject: [PATCH 2399/2595] add stride order reversal for c53*.cfg --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index a85bf987..0c0d6fa0 100755 --- a/models.py +++ b/models.py @@ -93,7 +93,7 @@ def create_modules(module_defs, img_size, cfg): elif mdef['type'] == 'yolo': yolo_index += 1 stride = [32, 16, 8] # P5, P4, P3 strides - if 'panet' in cfg or 'yolov4' or 'cd53' in cfg: # stride order reversed + if any(x in cfg for x in ['panet', 'yolov4', 'cd53']): # stride order reversed stride = list(reversed(stride)) layers = mdef['from'] if 'from' in mdef else [] modules = YOLOLayer(anchors=mdef['anchors'][mdef['mask']], # anchor list From f6a19d5b32194996819f5ada1873b9fef412ec4a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 15 May 2020 16:20:04 -0700 Subject: [PATCH 2400/2595] add cd53-based *.cfg --- cfg/cd53s-yolov3.cfg | 1033 +++++++++++++++++++++++++++++++++++++ cfg/cd53s.cfg | 1155 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 2188 insertions(+) create mode 100644 cfg/cd53s-yolov3.cfg create mode 100644 cfg/cd53s.cfg diff --git a/cfg/cd53s-yolov3.cfg b/cfg/cd53s-yolov3.cfg new file mode 100644 index 00000000..431a2a08 --- /dev/null +++ b/cfg/cd53s-yolov3.cfg @@ -0,0 +1,1033 @@ +[net] +# Testing +#batch=1 +#subdivisions=1 +# Training +batch=64 +subdivisions=8 +width=512 +height=512 +channels=3 +momentum=0.949 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.00261 +burn_in=1000 +max_batches = 500500 +policy=steps +steps=400000,450000 +scales=.1,.1 + +#cutmix=1 +mosaic=1 + +#23:104x104 54:52x52 85:26x26 104:13x13 for 416 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +#[convolutional] +#batch_normalize=1 +#filters=64 +#size=1 +#stride=1 +#pad=1 +#activation=leaky + +#[route] +#layers = -2 + +#[convolutional] +#batch_normalize=1 +#filters=64 +#size=1 +#stride=1 +#pad=1 +#activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +#[convolutional] +#batch_normalize=1 +#filters=64 +#size=1 +#stride=1 +#pad=1 +#activation=leaky + +#[route] +#layers = -1,-7 + +#[convolutional] +#batch_normalize=1 +#filters=64 +#size=1 +#stride=1 +#pad=1 +#activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -2 + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1,-10 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -2 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1,-28 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -2 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1,-28 + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -2 + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1,-16 + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=leaky + +########################## + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +### SPP ### +[maxpool] +stride=1 +size=5 + +[route] +layers=-2 + +[maxpool] +stride=1 +size=9 + +[route] +layers=-4 + +[maxpool] +stride=1 +size=13 + +[route] +layers=-1,-3,-5,-6 +### End SPP ### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 6,7,8 +anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 +scale_x_y = 1.05 +iou_thresh=0.213 +cls_normalizer=1.0 +iou_normalizer=0.07 +iou_loss=ciou +nms_kind=greedynms +beta_nms=0.6 + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 79 + + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 3,4,5 +anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 +scale_x_y = 1.1 +iou_thresh=0.213 +cls_normalizer=1.0 +iou_normalizer=0.07 +iou_loss=ciou +nms_kind=greedynms +beta_nms=0.6 + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 48 + + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 0,1,2 +anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 +scale_x_y = 1.2 +iou_thresh=0.213 +cls_normalizer=1.0 +iou_normalizer=0.07 +iou_loss=ciou +nms_kind=greedynms +beta_nms=0.6 diff --git a/cfg/cd53s.cfg b/cfg/cd53s.cfg new file mode 100644 index 00000000..221b13bb --- /dev/null +++ b/cfg/cd53s.cfg @@ -0,0 +1,1155 @@ +[net] +# Testing +#batch=1 +#subdivisions=1 +# Training +batch=64 +subdivisions=8 +width=512 +height=512 +channels=3 +momentum=0.949 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.00261 +burn_in=1000 +max_batches = 500500 +policy=steps +steps=400000,450000 +scales=.1,.1 + +#cutmix=1 +mosaic=1 + +#23:104x104 54:52x52 85:26x26 104:13x13 for 416 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +#[convolutional] +#batch_normalize=1 +#filters=64 +#size=1 +#stride=1 +#pad=1 +#activation=leaky + +#[route] +#layers = -2 + +#[convolutional] +#batch_normalize=1 +#filters=64 +#size=1 +#stride=1 +#pad=1 +#activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +#[convolutional] +#batch_normalize=1 +#filters=64 +#size=1 +#stride=1 +#pad=1 +#activation=leaky + +#[route] +#layers = -1,-7 + +#[convolutional] +#batch_normalize=1 +#filters=64 +#size=1 +#stride=1 +#pad=1 +#activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -2 + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1,-10 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -2 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1,-28 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -2 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1,-28 + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +# Downsample + +[convolutional] +batch_normalize=1 +filters=1024 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -2 + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[shortcut] +from=-3 +activation=linear + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1,-16 + +[convolutional] +batch_normalize=1 +filters=1024 +size=1 +stride=1 +pad=1 +activation=leaky + +########################## + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +### SPP ### +[maxpool] +stride=1 +size=5 + +[route] +layers=-2 + +[maxpool] +stride=1 +size=9 + +[route] +layers=-4 + +[maxpool] +stride=1 +size=13 + +[route] +layers=-1,-3,-5,-6 +### End SPP ### + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = 79 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1, -3 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = 48 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1, -3 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +########################## + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=256 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 0,1,2 +anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 +scale_x_y = 1.05 +iou_thresh=0.213 +cls_normalizer=1.0 +iou_normalizer=0.07 +iou_loss=ciou +nms_kind=greedynms +beta_nms=0.6 + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +size=3 +stride=2 +pad=1 +filters=256 +activation=leaky + +[route] +layers = -1, -16 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=512 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 3,4,5 +anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 +scale_x_y = 1.05 +iou_thresh=0.213 +cls_normalizer=1.0 +iou_normalizer=0.07 +iou_loss=ciou +nms_kind=greedynms +beta_nms=0.6 + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +size=3 +stride=2 +pad=1 +filters=512 +activation=leaky + +[route] +layers = -1, -37 + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +size=3 +stride=1 +pad=1 +filters=1024 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + +[yolo] +mask = 6,7,8 +anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 +classes=80 +num=9 +jitter=.3 +ignore_thresh = .7 +truth_thresh = 1 +random=1 +scale_x_y = 1.05 +iou_thresh=0.213 +cls_normalizer=1.0 +iou_normalizer=0.07 +iou_loss=ciou +nms_kind=greedynms +beta_nms=0.6 From 3f27ef1253bf83429350cbaeb8e1d01aff9de7ae Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 15 May 2020 20:50:58 -0700 Subject: [PATCH 2401/2595] pycocotools and numpy 1.17 fix for #1182 --- requirements.txt | 3 ++- test.py | 25 +++++++++++++------------ 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/requirements.txt b/requirements.txt index c82ddd8d..08c696bb 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,6 @@ # pip install -U -r requirements.txt -numpy +# pycocotools requires numpy 1.17 https://github.com/cocodataset/cocoapi/issues/356 +numpy == 1.17 opencv-python >= 4.1 torch >= 1.5 matplotlib diff --git a/test.py b/test.py index 0f968811..a4b2ab6b 100644 --- a/test.py +++ b/test.py @@ -204,19 +204,20 @@ def test(cfg, try: from pycocotools.coco import COCO from pycocotools.cocoeval import COCOeval + + # https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocoEvalDemo.ipynb + cocoGt = COCO(glob.glob('../coco/annotations/instances_val*.json')[0]) # initialize COCO ground truth api + cocoDt = cocoGt.loadRes('results.json') # initialize COCO pred api + + cocoEval = COCOeval(cocoGt, cocoDt, 'bbox') + cocoEval.params.imgIds = imgIds # [:32] # only evaluate these images + cocoEval.evaluate() + cocoEval.accumulate() + cocoEval.summarize() + # mf1, map = cocoEval.stats[:2] # update to pycocotools results (mAP@0.5:0.95, mAP@0.5) except: - print('WARNING: missing pycocotools package, can not compute official COCO mAP. See requirements.txt.') - - # https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocoEvalDemo.ipynb - cocoGt = COCO(glob.glob('../coco/annotations/instances_val*.json')[0]) # initialize COCO ground truth api - cocoDt = cocoGt.loadRes('results.json') # initialize COCO pred api - - cocoEval = COCOeval(cocoGt, cocoDt, 'bbox') - cocoEval.params.imgIds = imgIds # [:32] # only evaluate these images - cocoEval.evaluate() - cocoEval.accumulate() - cocoEval.summarize() - # mf1, map = cocoEval.stats[:2] # update to pycocotools results (mAP@0.5:0.95, mAP@0.5) + print('WARNING: pycocotools must be installed with numpy==1.17 to run correctly. ' + 'See https://github.com/cocodataset/cocoapi/issues/356') # Return results maps = np.zeros(nc) + map From 3a71daf4bc2ecbb14c26842714f404dbed15fb24 Mon Sep 17 00:00:00 2001 From: orcund <50711354+orcund@users.noreply.github.com> Date: Sat, 16 May 2020 21:09:57 +0300 Subject: [PATCH 2402/2595] Pseudo Labeling (#1149) * Added pseudo labeling * Delete print_test.py * Refactor label generation * Update detect.py * Update detect.py * Update utils.py Co-authored-by: Glenn Jocher --- detect.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/detect.py b/detect.py index 15582a5d..d655e63d 100644 --- a/detect.py +++ b/detect.py @@ -102,7 +102,7 @@ def detect(save_img=False): pred = apply_classifier(pred, modelc, img, im0s) # Process detections - for i, det in enumerate(pred): # detections per image + for i, det in enumerate(pred): # detections for image i if webcam: # batch_size >= 1 p, s, im0 = path[i], '%g: ' % i, im0s[i] else: @@ -110,6 +110,7 @@ def detect(save_img=False): save_path = str(Path(out) / Path(p).name) s += '%gx%g ' % img.shape[2:] # print string + gn = torch.tensor(im0s.shape)[[1, 0, 1, 0]] #  normalization gain whwh if det is not None and len(det): # Rescale boxes from img_size to im0 size det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round() @@ -122,8 +123,9 @@ def detect(save_img=False): # Write results for *xyxy, conf, cls in det: if save_txt: # Write to file + xywh = (xyxy2xywh(torch.tensor(xyxy).view(1, 4)) / gn).view(-1).tolist() # normalized xywh with open(save_path + '.txt', 'a') as file: - file.write(('%g ' * 6 + '\n') % (*xyxy, cls, conf)) + file.write(('%g ' * 5 + '\n') % (cls, *xywh)) # label format if save_img or view_img: # Add bbox to image label = '%s %.2f' % (names[int(cls)], conf) From 27c7b02ffffc4cacdbd6cf4c257ca17d9353228a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 16 May 2020 11:51:49 -0700 Subject: [PATCH 2403/2595] --save-txt extension fix --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index d655e63d..46d6de76 100644 --- a/detect.py +++ b/detect.py @@ -124,7 +124,7 @@ def detect(save_img=False): for *xyxy, conf, cls in det: if save_txt: # Write to file xywh = (xyxy2xywh(torch.tensor(xyxy).view(1, 4)) / gn).view(-1).tolist() # normalized xywh - with open(save_path + '.txt', 'a') as file: + with open(save_path[:save_path.rfind('.')] + '.txt', 'a') as file: file.write(('%g ' * 5 + '\n') % (cls, *xywh)) # label format if save_img or view_img: # Add bbox to image From 37bd5490ef8e804a39840c84f2fb6518ec878e7c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 16 May 2020 22:25:21 -0700 Subject: [PATCH 2404/2595] iglob file-search improvements --- detect.py | 3 +++ test.py | 3 +++ train.py | 3 +++ 3 files changed, 9 insertions(+) diff --git a/detect.py b/detect.py index 46d6de76..67aceb19 100644 --- a/detect.py +++ b/detect.py @@ -183,6 +183,9 @@ if __name__ == '__main__': parser.add_argument('--agnostic-nms', action='store_true', help='class-agnostic NMS') parser.add_argument('--augment', action='store_true', help='augmented inference') opt = parser.parse_args() + opt.cfg = list(glob.iglob('./**/' + opt.cfg, recursive=True))[0] # find file + opt.names = list(glob.iglob('./**/' + opt.names, recursive=True))[0] # find file + opt.weights = list(glob.iglob('./**/' + opt.weights, recursive=True))[0] # find file print(opt) with torch.no_grad(): diff --git a/test.py b/test.py index a4b2ab6b..b902fb1b 100644 --- a/test.py +++ b/test.py @@ -242,6 +242,9 @@ if __name__ == '__main__': parser.add_argument('--augment', action='store_true', help='augmented inference') opt = parser.parse_args() opt.save_json = opt.save_json or any([x in opt.data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) + opt.weights = list(glob.iglob('./**/' + opt.weights, recursive=True))[0] # find file + opt.cfg = list(glob.iglob('./**/' + opt.cfg, recursive=True))[0] # find file + opt.data = list(glob.iglob('./**/' + opt.data, recursive=True))[0] # find file print(opt) # task = 'test', 'study', 'benchmark' diff --git a/train.py b/train.py index 0f4997e1..d3bd51fd 100644 --- a/train.py +++ b/train.py @@ -251,6 +251,7 @@ def train(hyp): if 'momentum' in x: x['momentum'] = np.interp(ni, [0, n_burn], [0.9, hyp['momentum']]) + # Multi-Scale if opt.multi_scale: if ni / accumulate % 1 == 0: #  adjust img_size (67% - 150%) every 1 batch @@ -396,6 +397,8 @@ if __name__ == '__main__': opt = parser.parse_args() opt.weights = last if opt.resume else opt.weights check_git_status() + opt.cfg = list(glob.iglob('./**/' + opt.cfg, recursive=True))[0] # find file + opt.data = list(glob.iglob('./**/' + opt.data, recursive=True))[0] # find file print(opt) opt.img_size.extend([opt.img_size[-1]] * (3 - len(opt.img_size))) # extend to 3 sizes (min, max, test) device = torch_utils.select_device(opt.device, apex=mixed_precision, batch_size=opt.batch_size) From 6bfb3a96c8fac5a53a5f625764d800f14fe640a7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 16 May 2020 22:43:12 -0700 Subject: [PATCH 2405/2595] iglob bug fix --- detect.py | 1 - test.py | 1 - 2 files changed, 2 deletions(-) diff --git a/detect.py b/detect.py index 67aceb19..d6504a9b 100644 --- a/detect.py +++ b/detect.py @@ -185,7 +185,6 @@ if __name__ == '__main__': opt = parser.parse_args() opt.cfg = list(glob.iglob('./**/' + opt.cfg, recursive=True))[0] # find file opt.names = list(glob.iglob('./**/' + opt.names, recursive=True))[0] # find file - opt.weights = list(glob.iglob('./**/' + opt.weights, recursive=True))[0] # find file print(opt) with torch.no_grad(): diff --git a/test.py b/test.py index b902fb1b..d997ea4a 100644 --- a/test.py +++ b/test.py @@ -242,7 +242,6 @@ if __name__ == '__main__': parser.add_argument('--augment', action='store_true', help='augmented inference') opt = parser.parse_args() opt.save_json = opt.save_json or any([x in opt.data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) - opt.weights = list(glob.iglob('./**/' + opt.weights, recursive=True))[0] # find file opt.cfg = list(glob.iglob('./**/' + opt.cfg, recursive=True))[0] # find file opt.data = list(glob.iglob('./**/' + opt.data, recursive=True))[0] # find file print(opt) From bbd82bb94daaad70773abc28b4fc1b9890f24f9a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 17 May 2020 14:30:12 -0700 Subject: [PATCH 2406/2595] updates --- utils/datasets.py | 4 ++-- utils/torch_utils.py | 6 +++--- utils/utils.py | 39 +++++++++------------------------------ 3 files changed, 14 insertions(+), 35 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 3ea42031..2b5a0bf3 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -626,9 +626,8 @@ def letterbox(img, new_shape=(416, 416), color=(114, 114, 114), auto=True, scale def random_affine(img, targets=(), degrees=10, translate=.1, scale=.1, shear=10, border=0): # torchvision.transforms.RandomAffine(degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-10, 10)) # https://medium.com/uruvideo/dataset-augmentation-with-random-homographies-a8f4b44830d4 + # targets = [cls, xyxy] - if targets is None: # targets = [cls, xyxy] - targets = [] height = img.shape[0] + border * 2 width = img.shape[1] + border * 2 @@ -637,6 +636,7 @@ def random_affine(img, targets=(), degrees=10, translate=.1, scale=.1, shear=10, a = random.uniform(-degrees, degrees) # a += random.choice([-180, -90, 0, 90]) # add 90deg rotations to small rotations s = random.uniform(1 - scale, 1 + scale) + # s = 2 ** random.uniform(-scale, scale) R[:2] = cv2.getRotationMatrix2D(angle=a, center=(img.shape[1] / 2, img.shape[0] / 2), scale=s) # Translation diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 215772bf..d4cd1e80 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -12,10 +12,10 @@ import torch.nn.functional as F def init_seeds(seed=0): torch.manual_seed(seed) - # Remove randomness (may be slower on Tesla GPUs) # https://pytorch.org/docs/stable/notes/randomness.html + # Reduce randomness (may be slower on Tesla GPUs) # https://pytorch.org/docs/stable/notes/randomness.html if seed == 0: - cudnn.deterministic = True - cudnn.benchmark = False + cudnn.deterministic = False + cudnn.benchmark = True def select_device(device='', apex=False, batch_size=None): diff --git a/utils/utils.py b/utils/utils.py index f7ce54f7..88c8c541 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -103,7 +103,7 @@ def coco80_to_coco91_class(): # converts 80-index (val2014) to 91-index (paper) def xyxy2xywh(x): - # Transform box coordinates from [x1, y1, x2, y2] (where xy1=top-left, xy2=bottom-right) to [x, y, w, h] + # Convert nx4 boxes from [x1, y1, x2, y2] to [x, y, w, h] where xy1=top-left, xy2=bottom-right y = torch.zeros_like(x) if isinstance(x, torch.Tensor) else np.zeros_like(x) y[:, 0] = (x[:, 0] + x[:, 2]) / 2 # x center y[:, 1] = (x[:, 1] + x[:, 3]) / 2 # y center @@ -113,7 +113,7 @@ def xyxy2xywh(x): def xywh2xyxy(x): - # Transform box coordinates from [x, y, w, h] to [x1, y1, x2, y2] (where xy1=top-left, xy2=bottom-right) + # Convert nx4 boxes from [x, y, w, h] to [x1, y1, x2, y2] where xy1=top-left, xy2=bottom-right y = torch.zeros_like(x) if isinstance(x, torch.Tensor) else np.zeros_like(x) y[:, 0] = x[:, 0] - x[:, 2] / 2 # top left x y[:, 1] = x[:, 1] - x[:, 3] / 2 # top left y @@ -122,26 +122,6 @@ def xywh2xyxy(x): return y -# def xywh2xyxy(box): -# # Convert nx4 boxes from [x, y, w, h] to [x1, y1, x2, y2] -# if isinstance(box, torch.Tensor): -# x, y, w, h = box.t() -# return torch.stack((x - w / 2, y - h / 2, x + w / 2, y + h / 2)).t() -# else: # numpy -# x, y, w, h = box.T -# return np.stack((x - w / 2, y - h / 2, x + w / 2, y + h / 2)).T -# -# -# def xyxy2xywh(box): -# # Convert nx4 boxes from [x1, y1, x2, y2] to [x, y, w, h] -# if isinstance(box, torch.Tensor): -# x1, y1, x2, y2 = box.t() -# return torch.stack(((x1 + x2) / 2, (y1 + y2) / 2, x2 - x1, y2 - y1)).t() -# else: # numpy -# x1, y1, x2, y2 = box.T -# return np.stack(((x1 + x2) / 2, (y1 + y2) / 2, x2 - x1, y2 - y1)).T - - def scale_coords(img1_shape, coords, img0_shape, ratio_pad=None): # Rescale coords (xyxy) from img1_shape to img0_shape if ratio_pad is None: # calculate from img0_shape @@ -187,7 +167,7 @@ def ap_per_class(tp, conf, pred_cls, target_cls): # Create Precision-Recall curve and compute AP for each class pr_score = 0.1 # score to evaluate P and R https://github.com/ultralytics/yolov3/issues/898 - s = [len(unique_classes), tp.shape[1]] # number class, number iou thresholds (i.e. 10 for mAP0.5...0.95) + s = [unique_classes.shape[0], tp.shape[1]] # number class, number iou thresholds (i.e. 10 for mAP0.5...0.95) ap, p, r = np.zeros(s), np.zeros(s), np.zeros(s) for ci, c in enumerate(unique_classes): i = pred_cls == c @@ -601,7 +581,7 @@ def print_model_biases(model): pass -def strip_optimizer(f='weights/last.pt'): # from utils.utils import *; strip_optimizer() +def strip_optimizer(f='weights/best.pt'): # from utils.utils import *; strip_optimizer() # Strip optimizer from *.pt files for lighter files (reduced by 2/3 size) x = torch.load(f, map_location=torch.device('cpu')) x['optimizer'] = None @@ -614,12 +594,11 @@ def create_backbone(f='weights/last.pt'): # from utils.utils import *; create_b x['optimizer'] = None x['training_results'] = None x['epoch'] = -1 - for p in x['model'].values(): - try: - p.requires_grad = True - except: - pass - torch.save(x, 'weights/backbone.pt') + for p in x['model'].parameters(): + p.requires_grad = True + s = 'weights/backbone.pt' + print('%s saved as %s' % (f, s)) + torch.save(x, s) def coco_class_count(path='../coco/labels/train2014/'): From c94019f159f6ac8148288a510f72ea9b33ce78b9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 17 May 2020 14:31:14 -0700 Subject: [PATCH 2407/2595] iglob bug fix --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index d3bd51fd..d573890c 100644 --- a/train.py +++ b/train.py @@ -398,7 +398,7 @@ if __name__ == '__main__': opt.weights = last if opt.resume else opt.weights check_git_status() opt.cfg = list(glob.iglob('./**/' + opt.cfg, recursive=True))[0] # find file - opt.data = list(glob.iglob('./**/' + opt.data, recursive=True))[0] # find file + # opt.data = list(glob.iglob('./**/' + opt.data, recursive=True))[0] # find file print(opt) opt.img_size.extend([opt.img_size[-1]] * (3 - len(opt.img_size))) # extend to 3 sizes (min, max, test) device = torch_utils.select_device(opt.device, apex=mixed_precision, batch_size=opt.batch_size) From 110ead20e63e4c10784284125f958b990d17fd54 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 17 May 2020 15:00:07 -0700 Subject: [PATCH 2408/2595] yolov5 regress updates to yolov3 --- utils/utils.py | 154 ++++++++++++++++++------------------------------- 1 file changed, 56 insertions(+), 98 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 88c8c541..e00f778b 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -76,20 +76,6 @@ def labels_to_image_weights(labels, nc=80, class_weights=np.ones(80)): return image_weights -def coco_class_weights(): # frequency of each class in coco train2014 - n = [187437, 4955, 30920, 6033, 3838, 4332, 3160, 7051, 7677, 9167, 1316, 1372, 833, 6757, 7355, 3302, 3776, 4671, - 6769, 5706, 3908, 903, 3686, 3596, 6200, 7920, 8779, 4505, 4272, 1862, 4698, 1962, 4403, 6659, 2402, 2689, - 4012, 4175, 3411, 17048, 5637, 14553, 3923, 5539, 4289, 10084, 7018, 4314, 3099, 4638, 4939, 5543, 2038, 4004, - 5053, 4578, 27292, 4113, 5931, 2905, 11174, 2873, 4036, 3415, 1517, 4122, 1980, 4464, 1190, 2302, 156, 3933, - 1877, 17630, 4337, 4624, 1075, 3468, 135, 1380] - weights = 1 / torch.Tensor(n) - weights /= weights.sum() - # with open('data/coco.names', 'r') as f: - # for k, v in zip(f.read().splitlines(), n): - # print('%20s: %g' % (k, v)) - return weights - - def coco80_to_coco91_class(): # converts 80-index (val2014) to 91-index (paper) # https://tech.amikelive.com/node-718/what-object-categories-labels-are-in-coco-dataset/ # a = np.loadtxt('data/coco.names', dtype='str', delimiter='\n') @@ -355,7 +341,7 @@ def smooth_BCE(eps=0.1): # https://github.com/ultralytics/yolov3/issues/238#iss def compute_loss(p, targets, model): # predictions, targets, model ft = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor lcls, lbox, lobj = ft([0]), ft([0]), ft([0]) - tcls, tbox, indices, anchor_vec = build_targets(p, targets, model) + tcls, tbox, indices, anchors = build_targets(p, targets, model) # targets h = model.hyp # hyperparameters red = 'mean' # Loss reduction (sum or mean) @@ -371,33 +357,33 @@ def compute_loss(p, targets, model): # predictions, targets, model if g > 0: BCEcls, BCEobj = FocalLoss(BCEcls, g), FocalLoss(BCEobj, g) - # Compute losses - np, ng = 0, 0 # number grid points, targets + # per output + nt = 0 # targets for i, pi in enumerate(p): # layer index, layer predictions b, a, gj, gi = indices[i] # image, anchor, gridy, gridx tobj = torch.zeros_like(pi[..., 0]) # target obj - np += tobj.numel() - # Compute losses - nb = len(b) - if nb: # number of targets - ng += nb + nb = b.shape[0] # number of targets + if nb: + nt += nb ps = pi[b, a, gj, gi] # prediction subset corresponding to targets # ps[:, 2:4] = torch.sigmoid(ps[:, 2:4]) # wh power loss (uncomment) # GIoU - pxy = torch.sigmoid(ps[:, 0:2]) # pxy = pxy * s - (s - 1) / 2, s = 1.5 (scale_xy) - pwh = torch.exp(ps[:, 2:4]).clamp(max=1E3) * anchor_vec[i] + pxy = torch.sigmoid(ps[:, 0:2]) + pwh = torch.exp(ps[:, 2:4]).clamp(max=1E3) * anchors[i] pbox = torch.cat((pxy, pwh), 1) # predicted box - giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou computation + giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou(prediction, target) lbox += (1.0 - giou).sum() if red == 'sum' else (1.0 - giou).mean() # giou loss + + # Obj tobj[b, a, gj, gi] = (1.0 - model.gr) + model.gr * giou.detach().clamp(0).type(tobj.dtype) # giou ratio + # Class if model.nc > 1: # cls loss (only if multiple classes) t = torch.full_like(ps[:, 5:], cn) # targets t[range(nb), tcls[i]] = cp lcls += BCEcls(ps[:, 5:], t) # BCE - # lcls += CE(ps[:, 5:], tcls[i]) # CE # Append targets to text file # with open('targets.txt', 'a') as file: @@ -410,26 +396,24 @@ def compute_loss(p, targets, model): # predictions, targets, model lcls *= h['cls'] if red == 'sum': bs = tobj.shape[0] # batch size - lobj *= 3 / (6300 * bs) * 2 # 3 / np * 2 - if ng: - lcls *= 3 / ng / model.nc - lbox *= 3 / ng + g = 3.0 # loss gain + lobj *= g / bs + if nt: + lcls *= g / nt / model.nc + lbox *= g / nt loss = lbox + lobj + lcls return loss, torch.cat((lbox, lobj, lcls, loss)).detach() def build_targets(p, targets, model): - # targets = [image, class, x, y, w, h] - + # Build targets for compute_loss(), input targets(image,class,x,y,w,h) nt = targets.shape[0] - tcls, tbox, indices, av = [], [], [], [] + tcls, tbox, indices, anch = [], [], [], [] reject, use_all_anchors = True, True gain = torch.ones(6, device=targets.device) # normalized to gridspace gain - # m = list(model.modules())[-1] - # for i in range(m.nl): - # anchors = m.anchors[i] + multi_gpu = type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) for i, j in enumerate(model.yolo_layers): # get number of grid points and anchor vec for this yolo layer @@ -455,16 +439,15 @@ def build_targets(p, targets, model): t, a = t[j], a[j] # Indices - b, c = t[:, :2].long().t() # target image, class - gxy = t[:, 2:4] # grid x, y - gwh = t[:, 4:6] # grid w, h - gi, gj = gxy.long().t() # grid x, y indices + b, c = t[:, :2].long().t() # image, class + gxy = t[:, 2:4] # grid xy + gwh = t[:, 4:6] # grid wh + gi, gj = gxy.long().t() # grid xy indices indices.append((b, a, gj, gi)) # Box - gxy -= gxy.floor() # xy - tbox.append(torch.cat((gxy, gwh), 1)) # xywh (grids) - av.append(anchors[a]) # anchor vec + tbox.append(torch.cat((gxy % 1., gwh), 1)) # xywh (grids) + anch.append(anchors[a]) # anchor vec # Class tcls.append(c) @@ -473,7 +456,7 @@ def build_targets(p, targets, model): 'See https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data' % ( model.nc, model.nc - 1, c.max()) - return tcls, tbox, indices, av + return tcls, tbox, indices, anch def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=True, classes=None, agnostic=False): @@ -486,17 +469,14 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T # Box constraints min_wh, max_wh = 2, 4096 # (pixels) minimum and maximum box width and height - method = 'merge' nc = prediction[0].shape[1] - 5 # number of classes multi_label &= nc > 1 # multiple labels per box - output = [None] * len(prediction) - + merge = True # merge for best mAP + output = [None] * prediction.shape[0] for xi, x in enumerate(prediction): # image index, image inference - # Apply conf constraint - x = x[x[:, 4] > conf_thres] - - # Apply width-height constraint - x = x[((x[:, 2:4] > min_wh) & (x[:, 2:4] < max_wh)).all(1)] + # Apply constraints + x = x[x[:, 4] > conf_thres] # confidence + # x = x[((x[:, 2:4] > min_wh) & (x[:, 2:4] < max_wh)).all(1)] # width-height # If none remain process next image if not x.shape[0]: @@ -521,8 +501,8 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T x = x[(j.view(-1, 1) == torch.tensor(classes, device=j.device)).any(1)] # Apply finite constraint - if not torch.isfinite(x).all(): - x = x[torch.isfinite(x).all(1)] + # if not torch.isfinite(x).all(): + # x = x[torch.isfinite(x).all(1)] # If none remain process next image n = x.shape[0] # number of boxes @@ -530,28 +510,21 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T continue # Sort by confidence - # if method == 'fast_batch': - # x = x[x[:, 4].argsort(descending=True)] + # x = x[x[:, 4].argsort(descending=True)] # Batched NMS c = x[:, 5] * 0 if agnostic else x[:, 5] # classes boxes, scores = x[:, :4].clone() + c.view(-1, 1) * max_wh, x[:, 4] # boxes (offset by class), scores - if method == 'merge': # Merge NMS (boxes merged using weighted mean) - i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) - if 1 < n < 3E3: # update boxes as boxes(i,4) = weights(i,n) * boxes(n,4) - try: - # weights = (box_iou(boxes, boxes).tril_() > iou_thres) * scores.view(-1, 1) # box weights - # weights /= weights.sum(0) # normalize - # x[:, :4] = torch.mm(weights.T, x[:, :4]) - weights = (box_iou(boxes[i], boxes) > iou_thres) * scores[None] # box weights - x[i, :4] = torch.mm(weights, x[:, :4]).float() / weights.sum(1, keepdim=True) # merged boxes - except: # possible CUDA error https://github.com/ultralytics/yolov3/issues/1139 - pass - elif method == 'vision': - i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) - elif method == 'fast': # FastNMS from https://github.com/dbolya/yolact - iou = box_iou(boxes, boxes).triu_(diagonal=1) # upper triangular iou matrix - i = iou.max(0)[0] < iou_thres + i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) + if merge and (1 < n < 3E3): # Merge NMS (boxes merged using weighted mean) + try: # update boxes as boxes(i,4) = weights(i,n) * boxes(n,4) + iou = box_iou(boxes[i], boxes) > iou_thres # iou matrix + weights = iou * scores[None] # box weights + x[i, :4] = torch.mm(weights, x[:, :4]).float() / weights.sum(1, keepdim=True) # merged boxes + # i = i[iou.sum(1) > 1] # require redundancy + except: # possible CUDA error https://github.com/ultralytics/yolov3/issues/1139 + print(x, i, x.shape, i.shape) + pass output[xi] = x[i] return output @@ -621,13 +594,6 @@ def coco_only_people(path='../coco/labels/train2017/'): # from utils.utils impo print(labels.shape[0], file) -def select_best_evolve(path='evolve*.txt'): # from utils.utils import *; select_best_evolve() - # Find best evolved mutation - for file in sorted(glob.glob(path)): - x = np.loadtxt(file, dtype=np.float32, ndmin=2) - print(file, x[fitness(x).argmax()]) - - def crop_images_random(path='../images/', scale=0.50): # from utils.utils import *; crop_images_random() # crops images into random squares up to scale fraction # WARNING: overwrites images! @@ -708,17 +674,12 @@ def kmean_anchors(path='./data/coco64.txt', n=9, img_size=(320, 1024), thr=0.20, wh *= np.random.uniform(img_size[0], img_size[1], size=(wh.shape[0], 1)) # normalized to pixels (multi-scale) wh = wh[(wh > 2.0).all(1)] # remove below threshold boxes (< 2 pixels wh) - # Darknet yolov3.cfg anchors - use_darknet = False - if use_darknet and n == 9: - k = np.array([[10, 13], [16, 30], [33, 23], [30, 61], [62, 45], [59, 119], [116, 90], [156, 198], [373, 326]]) - else: - # Kmeans calculation - from scipy.cluster.vq import kmeans - print('Running kmeans for %g anchors on %g points...' % (n, len(wh))) - s = wh.std(0) # sigmas for whitening - k, dist = kmeans(wh / s, n, iter=30) # points, mean distance - k *= s + # Kmeans calculation + from scipy.cluster.vq import kmeans + print('Running kmeans for %g anchors on %g points...' % (n, len(wh))) + s = wh.std(0) # sigmas for whitening + k, dist = kmeans(wh / s, n, iter=30) # points, mean distance + k *= s wh = torch.Tensor(wh) k = print_results(k) @@ -741,7 +702,7 @@ def kmean_anchors(path='./data/coco64.txt', n=9, img_size=(320, 1024), thr=0.20, for _ in tqdm(range(gen), desc='Evolving anchors'): v = np.ones(sh) while (v == 1).all(): # mutate until a change occurs (prevent duplicates) - v = ((npr.random(sh) < mp) * npr.random() * npr.randn(*sh) * s + 1).clip(0.3, 3.0) # 98.6, 61.6 + v = ((npr.random(sh) < mp) * npr.random() * npr.randn(*sh) * s + 1).clip(0.3, 3.0) kg = (k.copy() * v).clip(min=2.0) fg = fitness(kg) if fg > f: @@ -815,17 +776,13 @@ def fitness(x): def output_to_target(output, width, height): """ Convert a YOLO model output to target format - [batch_id, class_id, x, y, w, h, conf] - """ - if isinstance(output, torch.Tensor): output = output.cpu().numpy() targets = [] for i, o in enumerate(output): - if o is not None: for pred in o: box = pred[:4] @@ -951,6 +908,7 @@ def plot_images(images, targets, paths=None, fname='images.jpg', names=None, max cv2.rectangle(mosaic, (block_x, block_y), (block_x + w, block_y + h), (255, 255, 255), thickness=3) if fname is not None: + mosaic = cv2.resize(mosaic, (int(ns * w * 0.5), int(ns * h * 0.5)), interpolation=cv2.INTER_AREA) cv2.imwrite(fname, cv2.cvtColor(mosaic, cv2.COLOR_BGR2RGB)) return mosaic @@ -993,7 +951,7 @@ def plot_evolution_results(hyp): # from utils.utils import *; plot_evolution_re # Plot hyperparameter evolution results in evolve.txt x = np.loadtxt('evolve.txt', ndmin=2) f = fitness(x) - weights = (f - f.min()) ** 2 # for weighted results + # weights = (f - f.min()) ** 2 # for weighted results fig = plt.figure(figsize=(12, 10)) matplotlib.rc('font', **{'size': 8}) for i, (k, v) in enumerate(hyp.items()): @@ -1055,8 +1013,8 @@ def plot_results(start=0, stop=0, bucket='', id=()): # from utils.utils import # y /= y[0] # normalize ax[i].plot(x, y, marker='.', label=Path(f).stem, linewidth=2, markersize=8) ax[i].set_title(s[i]) - if i in [5, 6, 7]: # share train and val loss y axes - ax[i].get_shared_y_axes().join(ax[i], ax[i - 5]) + # if i in [5, 6, 7]: # share train and val loss y axes + # ax[i].get_shared_y_axes().join(ax[i], ax[i - 5]) except: print('Warning: Plotting error for %s, skipping file' % f) From c8f4ee6c46ef0eb1d04c1720ce70c21087b2de34 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 17 May 2020 15:10:31 -0700 Subject: [PATCH 2409/2595] yolov5 regress updates to yolov3 - build_targets() --- utils/utils.py | 62 ++++++++++++++++++++++++++++---------------------- 1 file changed, 35 insertions(+), 27 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index e00f778b..ee64026f 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -408,49 +408,57 @@ def compute_loss(p, targets, model): # predictions, targets, model def build_targets(p, targets, model): # Build targets for compute_loss(), input targets(image,class,x,y,w,h) + nt = targets.shape[0] tcls, tbox, indices, anch = [], [], [], [] - reject, use_all_anchors = True, True gain = torch.ones(6, device=targets.device) # normalized to gridspace gain + off = torch.tensor([[1, 0], [0, 1], [-1, 0], [0, -1]], device=targets.device).float() # overlap offsets - + style = None multi_gpu = type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) for i, j in enumerate(model.yolo_layers): # get number of grid points and anchor vec for this yolo layer anchors = model.module.module_list[j].anchor_vec if multi_gpu else model.module_list[j].anchor_vec - - # iou of targets-anchors gain[2:] = torch.tensor(p[i].shape)[[3, 2, 3, 2]] # xyxy gain - t, a = targets * gain, [] - gwh = t[:, 4:6] + na = anchors.shape[0] # number of anchors + at = torch.arange(na).view(na, 1).repeat(1, nt) # anchor tensor, same as .repeat_interleave(nt) + + # Match targets to anchors + a, t, offsets = [], targets * gain, 0 if nt: - iou = wh_iou(anchors, gwh) # iou(3,n) = wh_iou(anchors(3,2), gwh(n,2)) + # r = t[None, :, 4:6] / anchors[:, None] # wh ratio + # j = torch.max(r, 1. / r).max(2)[0] < model.hyp['anchor_t'] # compare + j = wh_iou(anchors, t[:, 4:6]) > model.hyp['iou_t'] # iou(3,n) = wh_iou(anchors(3,2), gwh(n,2)) + a, t = at[j], t.repeat(na, 1, 1)[j] # filter - if use_all_anchors: - na = anchors.shape[0] # number of anchors - a = torch.arange(na).view(-1, 1).repeat(1, nt).view(-1) - t = t.repeat(na, 1) - else: # use best anchor only - iou, a = iou.max(0) # best iou and anchor + # overlaps + gxy = t[:, 2:4] # grid xy + z = torch.zeros_like(gxy) + if style == 'rect2': + g = 0.2 # offset + j, k = ((gxy % 1. < g) & (gxy > 1.)).T + a, t = torch.cat((a, a[j], a[k]), 0), torch.cat((t, t[j], t[k]), 0) + offsets = torch.cat((z, z[j] + off[0], z[k] + off[1]), 0) * g - # reject anchors below iou_thres (OPTIONAL, increases P, lowers R) - if reject: - j = iou.view(-1) > model.hyp['iou_t'] # iou threshold hyperparameter - t, a = t[j], a[j] + elif style == 'rect4': + g = 0.5 # offset + j, k = ((gxy % 1. < g) & (gxy > 1.)).T + l, m = ((gxy % 1. > (1 - g)) & (gxy < (gain[[2, 3]] - 1.))).T + a, t = torch.cat((a, a[j], a[k], a[l], a[m]), 0), torch.cat((t, t[j], t[k], t[l], t[m]), 0) + offsets = torch.cat((z, z[j] + off[0], z[k] + off[1], z[l] + off[2], z[m] + off[3]), 0) * g - # Indices - b, c = t[:, :2].long().t() # image, class + # Define + b, c = t[:, :2].long().T # image, class gxy = t[:, 2:4] # grid xy gwh = t[:, 4:6] # grid wh - gi, gj = gxy.long().t() # grid xy indices - indices.append((b, a, gj, gi)) + gij = (gxy - offsets).long() + gi, gj = gij.T # grid xy indices - # Box - tbox.append(torch.cat((gxy % 1., gwh), 1)) # xywh (grids) - anch.append(anchors[a]) # anchor vec - - # Class - tcls.append(c) + # Append + indices.append((b, a, gj, gi)) # image, anchor, grid indices + tbox.append(torch.cat((gxy - gij, gwh), 1)) # box + anch.append(anchors[a]) # anchors + tcls.append(c) # class if c.shape[0]: # if any targets assert c.max() < model.nc, 'Model accepts %g classes labeled from 0-%g, however you labelled a class %g. ' \ 'See https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data' % ( From 316d99c377170a996d6a45378f086db86610ca62 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 17 May 2020 15:19:33 -0700 Subject: [PATCH 2410/2595] yolov5 regress updates to yolov3 --- detect.py | 14 +++++++------- test.py | 40 ++++++++-------------------------------- train.py | 4 ++-- utils/utils.py | 6 ++---- 4 files changed, 19 insertions(+), 45 deletions(-) diff --git a/detect.py b/detect.py index d6504a9b..3c9dd982 100644 --- a/detect.py +++ b/detect.py @@ -6,7 +6,7 @@ from utils.utils import * def detect(save_img=False): - img_size = (320, 192) if ONNX_EXPORT else opt.img_size # (320, 192) or (416, 256) or (608, 352) for (height, width) + imgsz = (320, 192) if ONNX_EXPORT else opt.img_size # (320, 192) or (416, 256) or (608, 352) for (height, width) out, source, weights, half, view_img, save_txt = opt.output, opt.source, opt.weights, opt.half, opt.view_img, opt.save_txt webcam = source == '0' or source.startswith('rtsp') or source.startswith('http') or source.endswith('.txt') @@ -17,7 +17,7 @@ def detect(save_img=False): os.makedirs(out) # make new output folder # Initialize model - model = Darknet(opt.cfg, img_size) + model = Darknet(opt.cfg, imgsz) # Load weights attempt_download(weights) @@ -42,7 +42,7 @@ def detect(save_img=False): # Export mode if ONNX_EXPORT: model.fuse() - img = torch.zeros((1, 3) + img_size) # (1, 3, 320, 192) + img = torch.zeros((1, 3) + imgsz) # (1, 3, 320, 192) f = opt.weights.replace(opt.weights.split('.')[-1], 'onnx') # *.onnx filename torch.onnx.export(model, img, f, verbose=False, opset_version=11, input_names=['images'], output_names=['classes', 'boxes']) @@ -64,10 +64,10 @@ def detect(save_img=False): if webcam: view_img = True torch.backends.cudnn.benchmark = True # set True to speed up constant image size inference - dataset = LoadStreams(source, img_size=img_size) + dataset = LoadStreams(source, img_size=imgsz) else: save_img = True - dataset = LoadImages(source, img_size=img_size) + dataset = LoadImages(source, img_size=imgsz) # Get names and colors names = load_classes(opt.names) @@ -75,7 +75,7 @@ def detect(save_img=False): # Run inference t0 = time.time() - img = torch.zeros((1, 3, img_size, img_size), device=device) # init img + img = torch.zeros((1, 3, imgsz, imgsz), device=device) # init img _ = model(img.half() if half else img.float()) if device.type != 'cpu' else None # run once for path, img, im0s, vid_cap in dataset: img = torch.from_numpy(img).to(device) @@ -112,7 +112,7 @@ def detect(save_img=False): s += '%gx%g ' % img.shape[2:] # print string gn = torch.tensor(im0s.shape)[[1, 0, 1, 0]] #  normalization gain whwh if det is not None and len(det): - # Rescale boxes from img_size to im0 size + # Rescale boxes from imgsz to im0 size det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round() # Print results diff --git a/test.py b/test.py index d997ea4a..ab122973 100644 --- a/test.py +++ b/test.py @@ -12,7 +12,7 @@ def test(cfg, data, weights=None, batch_size=16, - img_size=416, + imgsz=416, conf_thres=0.001, iou_thres=0.6, # for nms save_json=False, @@ -30,7 +30,7 @@ def test(cfg, os.remove(f) # Initialize model - model = Darknet(cfg, img_size) + model = Darknet(cfg, imgsz) # Load weights attempt_download(weights) @@ -60,7 +60,7 @@ def test(cfg, # Dataloader if dataloader is None: - dataset = LoadImagesAndLabels(path, img_size, batch_size, rect=True, single_cls=opt.single_cls) + dataset = LoadImagesAndLabels(path, imgsz, batch_size, rect=True, single_cls=opt.single_cls) batch_size = min(batch_size, len(dataset)) dataloader = DataLoader(dataset, batch_size=batch_size, @@ -70,7 +70,7 @@ def test(cfg, seen = 0 model.eval() - _ = model(torch.zeros((1, 3, img_size, img_size), device=device)) if device.type != 'cpu' else None # run once + _ = model(torch.zeros((1, 3, imgsz, imgsz), device=device)) if device.type != 'cpu' else None # run once coco91class = coco80_to_coco91_class() s = ('%20s' + '%10s' * 6) % ('Class', 'Images', 'Targets', 'P', 'R', 'mAP@0.5', 'F1') p, r, f1, mp, mr, map, mf1, t0, t1 = 0., 0., 0., 0., 0., 0., 0., 0., 0. @@ -191,7 +191,7 @@ def test(cfg, # Print speeds if verbose or save_json: - t = tuple(x / seen * 1E3 for x in (t0, t1, t0 + t1)) + (img_size, img_size, batch_size) # tuple + t = tuple(x / seen * 1E3 for x in (t0, t1, t0 + t1)) + (imgsz, imgsz, batch_size) # tuple print('Speed: %.1f/%.1f/%.1f ms inference/NMS/total per %gx%g image at batch-size %g' % t) # Save JSON @@ -259,35 +259,11 @@ if __name__ == '__main__': opt.single_cls, opt.augment) - elif opt.task == 'benchmark': # mAPs at 320-608 at conf 0.5 and 0.7 + elif opt.task == 'benchmark': # mAPs at 256-640 at conf 0.5 and 0.7 y = [] - for i in [320, 416, 512, 608]: # img-size - for j in [0.5, 0.7]: # iou-thres + for i in list(range(256, 640, 128)): # img-size + for j in [0.6, 0.7]: # iou-thres t = time.time() r = test(opt.cfg, opt.data, opt.weights, opt.batch_size, i, opt.conf_thres, j, opt.save_json)[0] y.append(r + (time.time() - t,)) np.savetxt('benchmark.txt', y, fmt='%10.4g') # y = np.loadtxt('study.txt') - - elif opt.task == 'study': # Parameter study - y = [] - x = np.arange(0.4, 0.9, 0.05) # iou-thres - for i in x: - t = time.time() - r = test(opt.cfg, opt.data, opt.weights, opt.batch_size, opt.img_size, opt.conf_thres, i, opt.save_json)[0] - y.append(r + (time.time() - t,)) - np.savetxt('study.txt', y, fmt='%10.4g') # y = np.loadtxt('study.txt') - - # Plot - fig, ax = plt.subplots(3, 1, figsize=(6, 6)) - y = np.stack(y, 0) - ax[0].plot(x, y[:, 2], marker='.', label='mAP@0.5') - ax[0].set_ylabel('mAP') - ax[1].plot(x, y[:, 3], marker='.', label='mAP@0.5:0.95') - ax[1].set_ylabel('mAP') - ax[2].plot(x, y[:, -1], marker='.', label='time') - ax[2].set_ylabel('time (s)') - for i in range(3): - ax[i].legend() - ax[i].set_xlabel('iou_thr') - fig.tight_layout() - plt.savefig('study.jpg', dpi=200) diff --git a/train.py b/train.py index d573890c..f7458e5b 100644 --- a/train.py +++ b/train.py @@ -32,7 +32,7 @@ hyp = {'giou': 3.54, # giou loss gain 'lr0': 0.01, # initial learning rate (SGD=5E-3, Adam=5E-4) 'lrf': 0.0005, # final learning rate (with cos scheduler) 'momentum': 0.937, # SGD momentum - 'weight_decay': 0.000484, # optimizer weight decay + 'weight_decay': 0.0005, # optimizer weight decay 'fl_gamma': 0.0, # focal loss gamma (efficientDet default is gamma=1.5) 'hsv_h': 0.0138, # image HSV-Hue augmentation (fraction) 'hsv_s': 0.678, # image HSV-Saturation augmentation (fraction) @@ -311,7 +311,7 @@ def train(hyp): results, maps = test.test(cfg, data, batch_size=batch_size, - img_size=imgsz_test, + imgsz=imgsz_test, model=ema.ema, save_json=final_epoch and is_coco, single_cls=opt.single_cls, diff --git a/utils/utils.py b/utils/utils.py index ee64026f..2240403d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -365,9 +365,8 @@ def compute_loss(p, targets, model): # predictions, targets, model nb = b.shape[0] # number of targets if nb: - nt += nb + nt += nb # cumulative targets ps = pi[b, a, gj, gi] # prediction subset corresponding to targets - # ps[:, 2:4] = torch.sigmoid(ps[:, 2:4]) # wh power loss (uncomment) # GIoU pxy = torch.sigmoid(ps[:, 0:2]) @@ -408,7 +407,6 @@ def compute_loss(p, targets, model): # predictions, targets, model def build_targets(p, targets, model): # Build targets for compute_loss(), input targets(image,class,x,y,w,h) - nt = targets.shape[0] tcls, tbox, indices, anch = [], [], [], [] gain = torch.ones(6, device=targets.device) # normalized to gridspace gain @@ -647,7 +645,7 @@ def coco_single_class_labels(path='../coco/labels/train2014/', label_class=43): shutil.copyfile(src=img_file, dst='new/images/' + Path(file).name.replace('txt', 'jpg')) # copy images -def kmean_anchors(path='./data/coco64.txt', n=9, img_size=(320, 1024), thr=0.20, gen=1000): +def kmean_anchors(path='./data/coco64.txt', n=9, img_size=(640, 640), thr=0.20, gen=1000): # Creates kmeans anchors for use in *.cfg files: from utils.utils import *; _ = kmean_anchors() # n: number of anchors # img_size: (min, max) image size used for multi-scale training (can be same values) From 5b572681fff6cb594705248f1904531814a3be9c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 17 May 2020 19:28:06 -0700 Subject: [PATCH 2411/2595] pseudo labeling bug fix --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 3c9dd982..7fc75c08 100644 --- a/detect.py +++ b/detect.py @@ -110,7 +110,7 @@ def detect(save_img=False): save_path = str(Path(out) / Path(p).name) s += '%gx%g ' % img.shape[2:] # print string - gn = torch.tensor(im0s.shape)[[1, 0, 1, 0]] #  normalization gain whwh + gn = torch.tensor(im0.shape)[[1, 0, 1, 0]] #  normalization gain whwh if det is not None and len(det): # Rescale boxes from imgsz to im0 size det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round() From 0c7d7427e47a61a82edb60a5c16e6d139d4ed88b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 17 May 2020 20:59:19 -0700 Subject: [PATCH 2412/2595] [conf > conf_thres] update --- utils/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 2240403d..68aab83e 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -482,7 +482,7 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T for xi, x in enumerate(prediction): # image index, image inference # Apply constraints x = x[x[:, 4] > conf_thres] # confidence - # x = x[((x[:, 2:4] > min_wh) & (x[:, 2:4] < max_wh)).all(1)] # width-height + x = x[((x[:, 2:4] > min_wh) & (x[:, 2:4] < max_wh)).all(1)] # width-height # If none remain process next image if not x.shape[0]: @@ -500,7 +500,7 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T x = torch.cat((box[i], x[i, j + 5].unsqueeze(1), j.float().unsqueeze(1)), 1) else: # best class only conf, j = x[:, 5:].max(1) - x = torch.cat((box, conf.unsqueeze(1), j.float().unsqueeze(1)), 1) + x = torch.cat((box, conf.unsqueeze(1), j.float().unsqueeze(1)), 1)[conf > conf_thres] # Filter by class if classes: From da40084b370e61ee6a9de219c86ee10b912ac8b6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 17 May 2020 21:03:36 -0700 Subject: [PATCH 2413/2595] burnin update --- train.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/train.py b/train.py index f7458e5b..3d4f355e 100644 --- a/train.py +++ b/train.py @@ -240,17 +240,16 @@ def train(hyp): targets = targets.to(device) # Burn-in - if ni <= n_burn * 2: - model.gr = np.interp(ni, [0, n_burn * 2], [0.0, 1.0]) # giou loss ratio (obj_loss = 1.0 or giou) - if ni == n_burn: # burnin complete - print_model_biases(model) - + if ni <= n_burn: + xi = [0, n_burn] # x interp + model.gr = np.interp(ni, xi, [0.0, 1.0]) # giou loss ratio (obj_loss = 1.0 or giou) + accumulate = max(1, np.interp(ni, xi, [1, 64 / batch_size]).round()) for j, x in enumerate(optimizer.param_groups): # bias lr falls from 0.1 to lr0, all other lrs rise from 0.0 to lr0 - x['lr'] = np.interp(ni, [0, n_burn], [0.1 if j == 2 else 0.0, x['initial_lr'] * lf(epoch)]) + x['lr'] = np.interp(ni, xi, [0.1 if j == 2 else 0.0, x['initial_lr'] * lf(epoch)]) + x['weight_decay'] = np.interp(ni, xi, [0.0, hyp['weight_decay'] if j == 1 else 0.0]) if 'momentum' in x: - x['momentum'] = np.interp(ni, [0, n_burn], [0.9, hyp['momentum']]) - + x['momentum'] = np.interp(ni, xi, [0.9, hyp['momentum']]) # Multi-Scale if opt.multi_scale: From bc9da228e0be00b15dac76a36e15c228be842604 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 17 May 2020 22:11:02 -0700 Subject: [PATCH 2414/2595] add stride order reversal for c53*.cfg --- utils/utils.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 68aab83e..74abd999 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -4,6 +4,7 @@ import os import random import shutil import subprocess +import time from pathlib import Path from sys import platform @@ -472,12 +473,14 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T nx6 (x1, y1, x2, y2, conf, cls) """ - # Box constraints + # Settings + merge = True # merge for best mAP min_wh, max_wh = 2, 4096 # (pixels) minimum and maximum box width and height + time_limit = 10.0 # seconds to quit after + t = time.time() nc = prediction[0].shape[1] - 5 # number of classes multi_label &= nc > 1 # multiple labels per box - merge = True # merge for best mAP output = [None] * prediction.shape[0] for xi, x in enumerate(prediction): # image index, image inference # Apply constraints @@ -533,6 +536,9 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=T pass output[xi] = x[i] + if (time.time() - t) > time_limit: + break # time limit exceeded + return output From eacded6a2c595c924ffa602ca13ada663b0c1a11 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 17 May 2020 22:45:48 -0700 Subject: [PATCH 2415/2595] add stride order reversal for c53*.cfg --- utils/utils.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/utils/utils.py b/utils/utils.py index 74abd999..93a9ada8 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -848,6 +848,8 @@ def plot_wh_methods(): # from utils.utils import *; plot_wh_methods() def plot_images(images, targets, paths=None, fname='images.jpg', names=None, max_size=640, max_subplots=16): tl = 3 # line thickness tf = max(tl - 1, 1) # font thickness + if os.path.isfile(fname): # do not overwrite + return None if isinstance(images, torch.Tensor): images = images.cpu().numpy() From cd5f6227d92fc92ecf6ca941b440285b3c12afd5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 18 May 2020 12:03:14 -0700 Subject: [PATCH 2416/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c1e62d0f..ead80fc2 100755 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ python3 detect.py --source ... - Directory: `--source dir/` - Webcam: `--source 0` - RTSP stream: `--source rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa` -- HTTP stream: `--source http://wmccpinetop.axiscam.net/mjpg/video.mjpg` +- HTTP stream: `--source http://112.50.243.8/PLTV/88888888/224/3221225900/1.m3u8` **YOLOv3:** `python3 detect.py --cfg cfg/yolov3.cfg --weights yolov3.pt` From 3ddaf3b63c99ac69a0dec7f658b2f10c2419ac5e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 May 2020 21:13:41 -0700 Subject: [PATCH 2417/2595] label *.npy saving for faster caching --- utils/datasets.py | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 2b5a0bf3..e2b03c9a 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -317,18 +317,28 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Cache labels self.imgs = [None] * n - self.labels = [np.zeros((0, 5), dtype=np.float32)] * n - extract_bounding_boxes = False - create_datasubset = False - pbar = tqdm(self.label_files, desc='Caching labels') + create_datasubset, extract_bounding_boxes = False, False nm, nf, ne, ns, nd = 0, 0, 0, 0, 0 # number missing, found, empty, datasubset, duplicate + np_labels_path = str(Path(self.label_files[0]).parent) + '.npy' # saved labels in *.npy file + if os.path.isfile(np_labels_path): + print('Loading labels from %s' % np_labels_path) + self.labels = list(np.load(np_labels_path, allow_pickle=True)) + labels_loaded = True + else: + self.labels = [np.zeros((0, 5), dtype=np.float32)] * n + labels_loaded = False + + pbar = tqdm(self.label_files, desc='Caching labels') for i, file in enumerate(pbar): - try: - with open(file, 'r') as f: - l = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) - except: - nm += 1 # print('missing labels for image %s' % self.img_files[i]) # file missing - continue + if labels_loaded: + l = self.labels[i] + else: + try: + with open(file, 'r') as f: + l = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) + except: + nm += 1 # print('missing labels for image %s' % self.img_files[i]) # file missing + continue if l.shape[0]: assert l.shape[1] == 5, '> 5 label columns: %s' % file @@ -378,6 +388,9 @@ class LoadImagesAndLabels(Dataset): # for training/testing pbar.desc = 'Caching labels (%g found, %g missing, %g empty, %g duplicate, for %g images)' % ( nf, nm, ne, nd, n) assert nf > 0, 'No labels found in %s. See %s' % (os.path.dirname(file) + os.sep, help_url) + if not labels_loaded: + print('Saving labels to %s for faster future loading' % np_labels_path) + np.save(np_labels_path, self.labels) # save for next time # Cache images into memory for faster training (WARNING: large datasets may exceed system RAM) if cache_images: # if training From 2cc2b2cf0d5bc3c0b9b4ece89cea5fd1f54d3e60 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 20 May 2020 21:39:18 -0700 Subject: [PATCH 2418/2595] label *.npy saving for faster caching --- utils/datasets.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index e2b03c9a..6da5eff8 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -317,16 +317,16 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Cache labels self.imgs = [None] * n - create_datasubset, extract_bounding_boxes = False, False + self.labels = [np.zeros((0, 5), dtype=np.float32)] * n + create_datasubset, extract_bounding_boxes, labels_loaded = False, False, False nm, nf, ne, ns, nd = 0, 0, 0, 0, 0 # number missing, found, empty, datasubset, duplicate np_labels_path = str(Path(self.label_files[0]).parent) + '.npy' # saved labels in *.npy file if os.path.isfile(np_labels_path): print('Loading labels from %s' % np_labels_path) - self.labels = list(np.load(np_labels_path, allow_pickle=True)) - labels_loaded = True - else: - self.labels = [np.zeros((0, 5), dtype=np.float32)] * n - labels_loaded = False + x = list(np.load(np_labels_path, allow_pickle=True)) + if len(x) == n: + self.labels = x + labels_loaded = True pbar = tqdm(self.label_files, desc='Caching labels') for i, file in enumerate(pbar): From 002884ae5ea5b5e5597c277143094699a948c214 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 21 May 2020 14:40:45 -0700 Subject: [PATCH 2419/2595] multi_label burnin addition --- test.py | 5 +++-- train.py | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/test.py b/test.py index ab122973..5d313efa 100644 --- a/test.py +++ b/test.py @@ -19,7 +19,8 @@ def test(cfg, single_cls=False, augment=False, model=None, - dataloader=None): + dataloader=None, + multi_label=True): # Initialize/load model and set device if model is None: device = torch_utils.select_device(opt.device, batch_size=batch_size) @@ -95,7 +96,7 @@ def test(cfg, # Run NMS t = torch_utils.time_synchronized() - output = non_max_suppression(inf_out, conf_thres=conf_thres, iou_thres=iou_thres) # nms + output = non_max_suppression(inf_out, conf_thres=conf_thres, iou_thres=iou_thres, multi_label=multi_label) t1 += torch_utils.time_synchronized() - t # Statistics per image diff --git a/train.py b/train.py index 3d4f355e..8ea7ed28 100644 --- a/train.py +++ b/train.py @@ -314,7 +314,8 @@ def train(hyp): model=ema.ema, save_json=final_epoch and is_coco, single_cls=opt.single_cls, - dataloader=testloader) + dataloader=testloader, + multi_label=ni > n_burn) # Write with open(results_file, 'a') as f: From 4879fd22e94c12cea4e74d3f70eb851ef38bbf68 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 22 May 2020 16:03:08 -0700 Subject: [PATCH 2420/2595] caching introspection update --- utils/datasets.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 6da5eff8..d5f3773a 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -322,13 +322,15 @@ class LoadImagesAndLabels(Dataset): # for training/testing nm, nf, ne, ns, nd = 0, 0, 0, 0, 0 # number missing, found, empty, datasubset, duplicate np_labels_path = str(Path(self.label_files[0]).parent) + '.npy' # saved labels in *.npy file if os.path.isfile(np_labels_path): - print('Loading labels from %s' % np_labels_path) + s = np_labels_path x = list(np.load(np_labels_path, allow_pickle=True)) if len(x) == n: self.labels = x labels_loaded = True + else: + s = path.replace('images', 'labels') - pbar = tqdm(self.label_files, desc='Caching labels') + pbar = tqdm(self.label_files) for i, file in enumerate(pbar): if labels_loaded: l = self.labels[i] From 16ea613628056855b3144fa0092c59e8f8856c99 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 22 May 2020 16:06:21 -0700 Subject: [PATCH 2421/2595] caching introspection update --- utils/datasets.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index d5f3773a..82a9a7eb 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -258,11 +258,16 @@ class LoadStreams: # multiple IP or RTSP cameras class LoadImagesAndLabels(Dataset): # for training/testing def __init__(self, path, img_size=416, batch_size=16, augment=False, hyp=None, rect=False, image_weights=False, cache_images=False, single_cls=False): - path = str(Path(path)) # os-agnostic - assert os.path.isfile(path), 'File not found %s. See %s' % (path, help_url) - with open(path, 'r') as f: - self.img_files = [x.replace('/', os.sep) for x in f.read().splitlines() # os-agnostic - if os.path.splitext(x)[-1].lower() in img_formats] + try: + path = str(Path(path)) # os-agnostic + if os.path.isfile(path): # file + with open(path, 'r') as f: + f = f.read().splitlines() + elif os.path.isdir(path): # folder + f = glob.iglob(path + os.sep + '*.*') + self.img_files = [x.replace('/', os.sep) for x in f if os.path.splitext(x)[-1].lower() in img_formats] + except: + raise Exception('Error loading data from %s. See %s' % (path, help_url)) n = len(self.img_files) assert n > 0, 'No images found in %s. See %s' % (path, help_url) @@ -387,8 +392,8 @@ class LoadImagesAndLabels(Dataset): # for training/testing ne += 1 # print('empty labels for image %s' % self.img_files[i]) # file empty # os.system("rm '%s' '%s'" % (self.img_files[i], self.label_files[i])) # remove - pbar.desc = 'Caching labels (%g found, %g missing, %g empty, %g duplicate, for %g images)' % ( - nf, nm, ne, nd, n) + pbar.desc = 'Caching labels %s (%g found, %g missing, %g empty, %g duplicate, for %g images)' % ( + s, nf, nm, ne, nd, n) assert nf > 0, 'No labels found in %s. See %s' % (os.path.dirname(file) + os.sep, help_url) if not labels_loaded: print('Saving labels to %s for faster future loading' % np_labels_path) From 23f85a68b870c8f35e318554f3598ffd2f1926fa Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 24 May 2020 10:51:35 -0700 Subject: [PATCH 2422/2595] tight_layout=True --- utils/utils.py | 68 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 50 insertions(+), 18 deletions(-) diff --git a/utils/utils.py b/utils/utils.py index 93a9ada8..32261520 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -5,6 +5,7 @@ import random import shutil import subprocess import time +from copy import copy from pathlib import Path from sys import platform @@ -370,8 +371,8 @@ def compute_loss(p, targets, model): # predictions, targets, model ps = pi[b, a, gj, gi] # prediction subset corresponding to targets # GIoU - pxy = torch.sigmoid(ps[:, 0:2]) - pwh = torch.exp(ps[:, 2:4]).clamp(max=1E3) * anchors[i] + pxy = ps[:, :2].sigmoid() + pwh = ps[:, 2:4].exp().clamp(max=1E3) * anchors[i] pbox = torch.cat((pxy, pwh), 1) # predicted box giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou(prediction, target) lbox += (1.0 - giou).sum() if red == 'sum' else (1.0 - giou).mean() # giou loss @@ -416,7 +417,6 @@ def build_targets(p, targets, model): style = None multi_gpu = type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) for i, j in enumerate(model.yolo_layers): - # get number of grid points and anchor vec for this yolo layer anchors = model.module.module_list[j].anchor_vec if multi_gpu else model.module_list[j].anchor_vec gain[2:] = torch.tensor(p[i].shape)[[3, 2, 3, 2]] # xyxy gain na = anchors.shape[0] # number of anchors @@ -573,7 +573,7 @@ def strip_optimizer(f='weights/best.pt'): # from utils.utils import *; strip_op torch.save(x, f) -def create_backbone(f='weights/last.pt'): # from utils.utils import *; create_backbone() +def create_backbone(f='weights/best.pt'): # from utils.utils import *; create_backbone() # create a backbone from a *.pt file x = torch.load(f, map_location=torch.device('cpu')) x['optimizer'] = None @@ -816,12 +816,12 @@ def plot_one_box(x, img, color=None, label=None, line_thickness=None): tl = line_thickness or round(0.002 * (img.shape[0] + img.shape[1]) / 2) + 1 # line/font thickness color = color or [random.randint(0, 255) for _ in range(3)] c1, c2 = (int(x[0]), int(x[1])), (int(x[2]), int(x[3])) - cv2.rectangle(img, c1, c2, color, thickness=tl) + cv2.rectangle(img, c1, c2, color, thickness=tl, lineType=cv2.LINE_AA) if label: tf = max(tl - 1, 1) # font thickness t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, thickness=tf)[0] c2 = c1[0] + t_size[0], c1[1] - t_size[1] - 3 - cv2.rectangle(img, c1, c2, color, -1) # filled + cv2.rectangle(img, c1, c2, color, -1, cv2.LINE_AA) # filled cv2.putText(img, label, (c1[0], c1[1] - 2), 0, tl / 3, [225, 255, 255], thickness=tf, lineType=cv2.LINE_AA) @@ -928,22 +928,34 @@ def plot_images(images, targets, paths=None, fname='images.jpg', names=None, max return mosaic +def plot_lr_scheduler(optimizer, scheduler, epochs=300): + # Plot LR simulating training for full epochs + optimizer, scheduler = copy(optimizer), copy(scheduler) # do not modify originals + y = [] + for _ in range(epochs): + scheduler.step() + y.append(optimizer.param_groups[0]['lr']) + plt.plot(y, '.-', label='LR') + plt.xlabel('epoch') + plt.ylabel('LR') + plt.tight_layout() + plt.savefig('LR.png', dpi=200) + + def plot_test_txt(): # from utils.utils import *; plot_test() # Plot test.txt histograms x = np.loadtxt('test.txt', dtype=np.float32) box = xyxy2xywh(x[:, :4]) cx, cy = box[:, 0], box[:, 1] - fig, ax = plt.subplots(1, 1, figsize=(6, 6)) + fig, ax = plt.subplots(1, 1, figsize=(6, 6), tight_layout=True) ax.hist2d(cx, cy, bins=600, cmax=10, cmin=0) ax.set_aspect('equal') - fig.tight_layout() plt.savefig('hist2d.png', dpi=300) - fig, ax = plt.subplots(1, 2, figsize=(12, 6)) + fig, ax = plt.subplots(1, 2, figsize=(12, 6), tight_layout=True) ax[0].hist(cx, bins=600) ax[1].hist(cy, bins=600) - fig.tight_layout() plt.savefig('hist1d.png', dpi=200) @@ -951,22 +963,45 @@ def plot_targets_txt(): # from utils.utils import *; plot_targets_txt() # Plot targets.txt histograms x = np.loadtxt('targets.txt', dtype=np.float32).T s = ['x targets', 'y targets', 'width targets', 'height targets'] - fig, ax = plt.subplots(2, 2, figsize=(8, 8)) + fig, ax = plt.subplots(2, 2, figsize=(8, 8), tight_layout=True) ax = ax.ravel() for i in range(4): ax[i].hist(x[i], bins=100, label='%.3g +/- %.3g' % (x[i].mean(), x[i].std())) ax[i].legend() ax[i].set_title(s[i]) - fig.tight_layout() plt.savefig('targets.jpg', dpi=200) +def plot_labels(labels): + # plot dataset labels + c, b = labels[:, 0], labels[:, 1:].transpose() # classees, boxes + + def hist2d(x, y, n=100): + xedges, yedges = np.linspace(x.min(), x.max(), n), np.linspace(y.min(), y.max(), n) + hist, xedges, yedges = np.histogram2d(x, y, (xedges, yedges)) + xidx = np.clip(np.digitize(x, xedges) - 1, 0, hist.shape[0] - 1) + yidx = np.clip(np.digitize(y, yedges) - 1, 0, hist.shape[1] - 1) + return hist[xidx, yidx] + + fig, ax = plt.subplots(2, 2, figsize=(8, 8), tight_layout=True) + ax = ax.ravel() + ax[0].hist(c, bins=int(c.max() + 1)) + ax[0].set_xlabel('classes') + ax[1].scatter(b[0], b[1], c=hist2d(b[0], b[1], 90), cmap='jet') + ax[1].set_xlabel('x') + ax[1].set_ylabel('y') + ax[2].scatter(b[2], b[3], c=hist2d(b[2], b[3], 90), cmap='jet') + ax[2].set_xlabel('width') + ax[2].set_ylabel('height') + plt.savefig('labels.png', dpi=200) + + def plot_evolution_results(hyp): # from utils.utils import *; plot_evolution_results(hyp) # Plot hyperparameter evolution results in evolve.txt x = np.loadtxt('evolve.txt', ndmin=2) f = fitness(x) # weights = (f - f.min()) ** 2 # for weighted results - fig = plt.figure(figsize=(12, 10)) + fig = plt.figure(figsize=(12, 10), tight_layout=True) matplotlib.rc('font', **{'size': 8}) for i, (k, v) in enumerate(hyp.items()): y = x[:, i + 7] @@ -977,7 +1012,6 @@ def plot_evolution_results(hyp): # from utils.utils import *; plot_evolution_re plt.plot(y, f, '.') plt.title('%s = %.3g' % (k, mu), fontdict={'size': 9}) # limit to 40 characters print('%15s: %.3g' % (k, mu)) - fig.tight_layout() plt.savefig('evolve.png', dpi=200) @@ -989,7 +1023,7 @@ def plot_results_overlay(start=0, stop=0): # from utils.utils import *; plot_re results = np.loadtxt(f, usecols=[2, 3, 4, 8, 9, 12, 13, 14, 10, 11], ndmin=2).T n = results.shape[1] # number of rows x = range(start, min(stop, n) if stop else n) - fig, ax = plt.subplots(1, 5, figsize=(14, 3.5)) + fig, ax = plt.subplots(1, 5, figsize=(14, 3.5), tight_layout=True) ax = ax.ravel() for i in range(5): for j in [i, i + 5]: @@ -1000,13 +1034,12 @@ def plot_results_overlay(start=0, stop=0): # from utils.utils import *; plot_re ax[i].set_title(t[i]) ax[i].legend() ax[i].set_ylabel(f) if i == 0 else None # add filename - fig.tight_layout() fig.savefig(f.replace('.txt', '.png'), dpi=200) def plot_results(start=0, stop=0, bucket='', id=()): # from utils.utils import *; plot_results() # Plot training 'results*.txt' as seen in https://github.com/ultralytics/yolov3#training - fig, ax = plt.subplots(2, 5, figsize=(12, 6)) + fig, ax = plt.subplots(2, 5, figsize=(12, 6), tight_layout=True) ax = ax.ravel() s = ['GIoU', 'Objectness', 'Classification', 'Precision', 'Recall', 'val GIoU', 'val Objectness', 'val Classification', 'mAP@0.5', 'F1'] @@ -1032,6 +1065,5 @@ def plot_results(start=0, stop=0, bucket='', id=()): # from utils.utils import except: print('Warning: Plotting error for %s, skipping file' % f) - fig.tight_layout() ax[1].legend() fig.savefig('results.png', dpi=200) From d6d6fb5e5bceb6e4bf7e5b0e05918b9de668219e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 24 May 2020 20:30:30 -0700 Subject: [PATCH 2423/2595] print('Optimizer stripped from %s' % f) --- utils/utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/utils.py b/utils/utils.py index 32261520..bad2cf02 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -570,6 +570,7 @@ def strip_optimizer(f='weights/best.pt'): # from utils.utils import *; strip_op # Strip optimizer from *.pt files for lighter files (reduced by 2/3 size) x = torch.load(f, map_location=torch.device('cpu')) x['optimizer'] = None + print('Optimizer stripped from %s' % f) torch.save(x, f) From d136ddeeba9304e011c11df0851820706f3c4555 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 25 May 2020 12:42:58 -0700 Subject: [PATCH 2424/2595] tight_layout=True --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ead80fc2..b194e89c 100755 --- a/README.md +++ b/README.md @@ -175,4 +175,4 @@ To access an up-to-date working environment (with all dependencies including CUD # Contact -**Issues should be raised directly in the repository.** For additional questions or comments please email Glenn Jocher at glenn.jocher@ultralytics.com or visit us at https://contact.ultralytics.com. +**Issues should be raised directly in the repository.** For business inquiries or professional support requests please visit us at https://contact.ultralytics.com. From 39a2d32c0f06a29ff40a442feb9ef479714be5f4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 27 May 2020 09:32:19 -0700 Subject: [PATCH 2425/2595] Bug fix #1247 --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 0c0d6fa0..0323b25e 100755 --- a/models.py +++ b/models.py @@ -438,7 +438,7 @@ def convert(cfg='cfg/yolov3-spp.cfg', weights='weights/yolov3-spp.weights'): target = weights.rsplit('.', 1)[0] + '.pt' torch.save(chkpt, target) - print("Success: converted '%s' to '%'" % (weights, target)) + print("Success: converted '%s' to 's%'" % (weights, target)) else: print('Error: extension not supported.') From e99ff3aad0a4f715235f83a4049e3574fcd16f2c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 28 May 2020 14:01:38 -0700 Subject: [PATCH 2426/2595] local path robustness --- utils/datasets.py | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 82a9a7eb..d741758c 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -260,11 +260,15 @@ class LoadImagesAndLabels(Dataset): # for training/testing cache_images=False, single_cls=False): try: path = str(Path(path)) # os-agnostic + parent = str(Path(path).parent) + os.sep if os.path.isfile(path): # file with open(path, 'r') as f: f = f.read().splitlines() + f = [x.replace('./', parent) for x in f if x.startswith('./')] # local to global path elif os.path.isdir(path): # folder f = glob.iglob(path + os.sep + '*.*') + else: + raise Exception('%s does not exist' % path) self.img_files = [x.replace('/', os.sep) for x in f if os.path.splitext(x)[-1].lower() in img_formats] except: raise Exception('Error loading data from %s. See %s' % (path, help_url)) @@ -274,7 +278,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing bi = np.floor(np.arange(n) / batch_size).astype(np.int) # batch index nb = bi[-1] + 1 # number of batches - self.n = n + self.n = n # number of images self.batch = bi # batch index of image self.img_size = img_size self.augment = augment @@ -290,7 +294,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Rectangular Training https://github.com/ultralytics/yolov3/issues/232 if self.rect: # Read image shapes (wh) - sp = path.replace('.txt', '.shapes') # shapefile path + sp = path.replace('.txt', '') + '.shapes' # shapefile path try: with open(sp, 'r') as f: # read existing shapefile s = [x.split() for x in f.read().splitlines()] @@ -302,11 +306,11 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Sort by aspect ratio s = np.array(s, dtype=np.float64) ar = s[:, 1] / s[:, 0] # aspect ratio - i = ar.argsort() - self.img_files = [self.img_files[i] for i in i] - self.label_files = [self.label_files[i] for i in i] - self.shapes = s[i] # wh - ar = ar[i] + irect = ar.argsort() + self.img_files = [self.img_files[i] for i in irect] + self.label_files = [self.label_files[i] for i in irect] + self.shapes = s[irect] # wh + ar = ar[irect] # Set training image shapes shapes = [[1, 1]] * nb @@ -327,8 +331,8 @@ class LoadImagesAndLabels(Dataset): # for training/testing nm, nf, ne, ns, nd = 0, 0, 0, 0, 0 # number missing, found, empty, datasubset, duplicate np_labels_path = str(Path(self.label_files[0]).parent) + '.npy' # saved labels in *.npy file if os.path.isfile(np_labels_path): - s = np_labels_path - x = list(np.load(np_labels_path, allow_pickle=True)) + s = np_labels_path # print string + x = np.load(np_labels_path, allow_pickle=True) if len(x) == n: self.labels = x labels_loaded = True @@ -339,6 +343,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing for i, file in enumerate(pbar): if labels_loaded: l = self.labels[i] + # np.savetxt(file, l, '%g') # save *.txt from *.npy file else: try: with open(file, 'r') as f: @@ -394,8 +399,8 @@ class LoadImagesAndLabels(Dataset): # for training/testing pbar.desc = 'Caching labels %s (%g found, %g missing, %g empty, %g duplicate, for %g images)' % ( s, nf, nm, ne, nd, n) - assert nf > 0, 'No labels found in %s. See %s' % (os.path.dirname(file) + os.sep, help_url) - if not labels_loaded: + assert nf > 0 or n == 20288, 'No labels found in %s. See %s' % (os.path.dirname(file) + os.sep, help_url) + if not labels_loaded and n > 1000: print('Saving labels to %s for faster future loading' % np_labels_path) np.save(np_labels_path, self.labels) # save for next time From cf7a4d31d37788023a9186a1a143a2dab0275ead Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 28 May 2020 20:50:02 -0700 Subject: [PATCH 2427/2595] bug fix in local to global path replacement --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index d741758c..5811142a 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -264,7 +264,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing if os.path.isfile(path): # file with open(path, 'r') as f: f = f.read().splitlines() - f = [x.replace('./', parent) for x in f if x.startswith('./')] # local to global path + f = [x.replace('./', parent) if x.startswith('./') else x for x in f] # local to global path elif os.path.isdir(path): # folder f = glob.iglob(path + os.sep + '*.*') else: From 8c533a92b0a824edc1168796255dab38acc4b546 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Jun 2020 11:22:28 -0700 Subject: [PATCH 2428/2595] remove dependency --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index da91e035..f21cf49e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM nvcr.io/nvidia/pytorch:20.03-py3 # Install dependencies (pip or conda) -RUN pip install -U gsutil thop +RUN pip install -U gsutil # RUN pip install -U -r requirements.txt # RUN conda update -n base -c defaults conda # RUN conda install -y -c anaconda future numpy opencv matplotlib tqdm pillow From 64b8960074c3038625d1bbb8f82a0ff227bef2b6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Jun 2020 21:45:33 -0700 Subject: [PATCH 2429/2595] remove dependency --- .github/workflows/greetings.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index 36346262..c4fd25c7 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -10,7 +10,14 @@ jobs: with: repo-token: ${{ secrets.GITHUB_TOKEN }} pr-message: 'Hello @${{ github.actor }}, thank you for submitting a PR! We will respond as soon as possible.' - issue-message: > + issue-message: | Hello @${{ github.actor }}, thank you for your interest in our work! Please visit our [Custom Training Tutorial](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) to get started, and see our [Google Colab Notebook](https://github.com/ultralytics/yolov3/blob/master/tutorial.ipynb), [Docker Image](https://hub.docker.com/r/ultralytics/yolov3), and [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) for example environments. If this is a bug report, please provide screenshots and **minimum viable code to reproduce your issue**, otherwise we can not help you. + + If this is a custom model or data training question, please note that Ultralytics does **not** provide free personal support. As a leader in vision ML and AI, we do offer professional consulting, from simple expert advice up to delivery of fully customized, end-to-end production solutions for our clients, such as: + - **Cloud-based AI** surveillance systems operating on **hundreds of HD video streams in realtime.** + - **Edge AI** integrated into custom iOS and Android apps for realtime **30 FPS video inference.** + - **Custom data training**, hyperparameter evolution, and model exportation to any destination. + + For more information please visit https://www.ultralytics.com. \ No newline at end of file From 82f653b0f579db97f8908800d45e8f5287f79bd3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 2 Jun 2020 23:59:03 -0700 Subject: [PATCH 2430/2595] webcam multiple bounding box bug fix #1188 --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 7fc75c08..b52f7826 100644 --- a/detect.py +++ b/detect.py @@ -104,7 +104,7 @@ def detect(save_img=False): # Process detections for i, det in enumerate(pred): # detections for image i if webcam: # batch_size >= 1 - p, s, im0 = path[i], '%g: ' % i, im0s[i] + p, s, im0 = path[i], '%g: ' % i, im0s[i].copy() else: p, s, im0 = path, '', im0s From 3cac096d7e973453378aa26e4f97b9c110947ddf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 9 Jun 2020 15:50:10 -0700 Subject: [PATCH 2431/2595] YOLOv5 greeting --- .github/workflows/greetings.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index c4fd25c7..53b13012 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -11,12 +11,19 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} pr-message: 'Hello @${{ github.actor }}, thank you for submitting a PR! We will respond as soon as possible.' issue-message: | - Hello @${{ github.actor }}, thank you for your interest in our work! Please visit our [Custom Training Tutorial](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) to get started, and see our [Google Colab Notebook](https://github.com/ultralytics/yolov3/blob/master/tutorial.ipynb), [Docker Image](https://hub.docker.com/r/ultralytics/yolov3), and [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) for example environments. + Hello @${{ github.actor }}, thank you for your interest in our work! **Ultralytics has publically released YOLOv5** at https://github.com/ultralytics/yolov5, featuring faster, lighter and more accurate object detection. YOLOv5 is recommended for all new projects. + +
+ + + + + To continue with this repo, please visit our [Custom Training Tutorial](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) to get started, and see our [Google Colab Notebook](https://github.com/ultralytics/yolov3/blob/master/tutorial.ipynb), [Docker Image](https://hub.docker.com/r/ultralytics/yolov3), and [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) for example environments. If this is a bug report, please provide screenshots and **minimum viable code to reproduce your issue**, otherwise we can not help you. If this is a custom model or data training question, please note that Ultralytics does **not** provide free personal support. As a leader in vision ML and AI, we do offer professional consulting, from simple expert advice up to delivery of fully customized, end-to-end production solutions for our clients, such as: - - **Cloud-based AI** surveillance systems operating on **hundreds of HD video streams in realtime.** + - **Cloud-based AI** systems operating on **hundreds of HD video streams in realtime.** - **Edge AI** integrated into custom iOS and Android apps for realtime **30 FPS video inference.** - **Custom data training**, hyperparameter evolution, and model exportation to any destination. From 0671f04e1f283aea6f059d066130d4543a320b47 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 9 Jun 2020 16:00:10 -0700 Subject: [PATCH 2432/2595] YOLOv5 greeting --- .github/workflows/greetings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index 53b13012..2a91bb72 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -11,7 +11,7 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} pr-message: 'Hello @${{ github.actor }}, thank you for submitting a PR! We will respond as soon as possible.' issue-message: | - Hello @${{ github.actor }}, thank you for your interest in our work! **Ultralytics has publically released YOLOv5** at https://github.com/ultralytics/yolov5, featuring faster, lighter and more accurate object detection. YOLOv5 is recommended for all new projects. + Hello @${{ github.actor }}, thank you for your interest in our work! **Ultralytics has publicly released YOLOv5** at https://github.com/ultralytics/yolov5, featuring faster, lighter and more accurate object detection. YOLOv5 is recommended for all new projects. From 936ac746ce1a3b7e9012ddf9429d1aa6b5ad0f96 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 10 Jun 2020 16:45:09 -0700 Subject: [PATCH 2433/2595] update README.md --- README.md | 63 ++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index b194e89c..b84d5441 100755 --- a/README.md +++ b/README.md @@ -16,30 +16,30 @@ -# Introduction -This directory contains PyTorch YOLOv3 software developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information please visit https://www.ultralytics.com. - -# Description +## Introduction The https://github.com/ultralytics/yolov3 repo contains inference and training code for YOLOv3 in PyTorch. The code works on Linux, MacOS and Windows. Training is done on the COCO dataset by default: https://cocodataset.org/#home. **Credit to Joseph Redmon for YOLO:** https://pjreddie.com/darknet/yolo/. -# Requirements -Python 3.7 or later with all `pip install -U -r requirements.txt` packages including `torch >= 1.5`. Docker images come with all dependencies preinstalled. Docker requirements are: -- Nvidia Driver >= 440.44 -- Docker Engine - CE >= 19.03 +## Requirements -# Tutorials +Python 3.7 or later with all `requirements.txt` dependencies installed, including `torch >= 1.5`. To install run: +```bash +$ pip install -U -r requirements.txt +``` + +## Tutorials + +* Open In Colab * [Train Custom Data](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) < highly recommended!! -* [Train Single Class](https://github.com/ultralytics/yolov3/wiki/Example:-Train-Single-Class) -* [Google Colab Notebook](https://colab.research.google.com/github/ultralytics/yolov3/blob/master/tutorial.ipynb) with quick training, inference and testing examples * [GCP Quickstart](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) * [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) * [A TensorRT Implementation of YOLOv3 and YOLOv4](https://github.com/wang-xinyu/tensorrtx/tree/master/yolov3-spp) -# Training + +## Training **Start Training:** `python3 train.py` to begin training after downloading COCO data with `data/get_coco2017.sh`. Each epoch trains on 117,263 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. @@ -49,13 +49,15 @@ Python 3.7 or later with all `pip install -U -r requirements.txt` packages inclu -## Image Augmentation + +### Image Augmentation `datasets.py` applies OpenCV-powered (https://opencv.org/) augmentation to the input image. We use a **mosaic dataloader** to increase image variability during training. -## Speed + +### Speed https://cloud.google.com/deep-learning-vm/ **Machine type:** preemptible [n1-standard-8](https://cloud.google.com/compute/docs/machine-types) (8 vCPUs, 30 GB memory) @@ -73,6 +75,7 @@ T4 |1
2| 32 x 2
64 x 1 | 41
61 | 48 min
32 min | $0.09
$0.11 V100 |1
2| 32 x 2
64 x 1 | 122
**178** | 16 min
**11 min** | **$0.21**
$0.28 2080Ti |1
2| 32 x 2
64 x 1 | 81
140 | 24 min
14 min | -
- + # Inference ```bash @@ -96,10 +99,11 @@ python3 detect.py --source ... -# Pretrained Weights +## Pretrained Checkpoints Download from: [https://drive.google.com/open?id=1LezFG5g3BCW6iYaV89B2i64cqEUZD7e0](https://drive.google.com/open?id=1LezFG5g3BCW6iYaV89B2i64cqEUZD7e0) + ## Darknet Conversion ```bash @@ -114,7 +118,8 @@ $ python3 -c "from models import *; convert('cfg/yolov3-spp.cfg', 'weights/yolo Success: converted 'weights/yolov3-spp.pt' to 'weights/yolov3-spp.weights' ``` -# mAP + +## mAP |Size |COCO mAP
@0.5...0.95 |COCO mAP
@0.5 --- | --- | --- | --- @@ -153,7 +158,7 @@ Speed: 17.5/2.3/19.9 ms inference/NMS/total per 640x640 image at batch-size 16 -# Reproduce Our Results +## Reproduce Our Results Run commands below. Training takes about one week on a 2080Ti per model. ```bash @@ -162,17 +167,31 @@ $ python train.py --data coco2014.data --weights '' --batch-size 32 --cfg yolov3 ``` -# Reproduce Our Environment + +## Reproduce Our Environment To access an up-to-date working environment (with all dependencies including CUDA/CUDNN, Python and PyTorch preinstalled), consider a: - **GCP** Deep Learning VM with $300 free credit offer: See our [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) -- **Google Colab Notebook** with 12 hours of free GPU time: [Google Colab Notebook](https://colab.sandbox.google.com/github/ultralytics/yolov3/blob/master/tutorial.ipynb) -- **Docker Image** from https://hub.docker.com/r/ultralytics/yolov3. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) +- **Google Colab Notebook** with 12 hours of free GPU time. Open In Colab +- **Docker Image** https://hub.docker.com/r/ultralytics/yolov5. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) + + # Citation [![DOI](https://zenodo.org/badge/146165888.svg)](https://zenodo.org/badge/latestdoi/146165888) -# Contact -**Issues should be raised directly in the repository.** For business inquiries or professional support requests please visit us at https://contact.ultralytics.com. +## About Us + +Ultralytics is a U.S.-based particle physics and AI startup with over 6 years of expertise supporting government, academic and business clients. We offer a wide range of vision AI services, spanning from simple expert advice up to delivery of fully customized, end-to-end production solutions, including: +- **Cloud-based AI** surveillance systems operating on **hundreds of HD video streams in realtime.** +- **Edge AI** integrated into custom iOS and Android apps for realtime **30 FPS video inference.** +- **Custom data training**, hyperparameter evolution, and model exportation to any destination. + +For business inquiries and professional support requests please visit us at https://www.ultralytics.com. + + +## Contact + +**Issues should be raised directly in the repository.** For business inquiries or professional support requests please visit https://www.ultralytics.com or email Glenn Jocher at glenn.jocher@ultralytics.com. From c4b0f986d195412e3a057aff1be3cb0da7e7d317 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 10 Jun 2020 16:46:22 -0700 Subject: [PATCH 2434/2595] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b84d5441..eef42f07 100755 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ V100 |1
2| 32 x 2
64 x 1 | 122
**178** | 16 min
**11 min** | **$0. 2080Ti |1
2| 32 x 2
64 x 1 | 81
140 | 24 min
14 min | -
- -# Inference +## Inference ```bash python3 detect.py --source ... @@ -177,7 +177,7 @@ To access an up-to-date working environment (with all dependencies including CUD - **Docker Image** https://hub.docker.com/r/ultralytics/yolov5. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) -# Citation +## Citation [![DOI](https://zenodo.org/badge/146165888.svg)](https://zenodo.org/badge/latestdoi/146165888) From c78d49f190c7ac2f5723f6a913aee39154106707 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Jun 2020 12:25:48 -0700 Subject: [PATCH 2435/2595] check_file() update from yolov5 --- detect.py | 4 ++-- test.py | 4 ++-- train.py | 4 ++-- utils/utils.py | 10 ++++++++++ 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/detect.py b/detect.py index b52f7826..0c4b17b3 100644 --- a/detect.py +++ b/detect.py @@ -183,8 +183,8 @@ if __name__ == '__main__': parser.add_argument('--agnostic-nms', action='store_true', help='class-agnostic NMS') parser.add_argument('--augment', action='store_true', help='augmented inference') opt = parser.parse_args() - opt.cfg = list(glob.iglob('./**/' + opt.cfg, recursive=True))[0] # find file - opt.names = list(glob.iglob('./**/' + opt.names, recursive=True))[0] # find file + opt.cfg = check_file(opt.cfg) # check file + opt.names = check_file(opt.names) # check file print(opt) with torch.no_grad(): diff --git a/test.py b/test.py index 5d313efa..ace09951 100644 --- a/test.py +++ b/test.py @@ -243,8 +243,8 @@ if __name__ == '__main__': parser.add_argument('--augment', action='store_true', help='augmented inference') opt = parser.parse_args() opt.save_json = opt.save_json or any([x in opt.data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) - opt.cfg = list(glob.iglob('./**/' + opt.cfg, recursive=True))[0] # find file - opt.data = list(glob.iglob('./**/' + opt.data, recursive=True))[0] # find file + opt.cfg = check_file(opt.cfg) # check file + opt.data = check_file(opt.data) # check file print(opt) # task = 'test', 'study', 'benchmark' diff --git a/train.py b/train.py index 8ea7ed28..f963fdf1 100644 --- a/train.py +++ b/train.py @@ -397,8 +397,8 @@ if __name__ == '__main__': opt = parser.parse_args() opt.weights = last if opt.resume else opt.weights check_git_status() - opt.cfg = list(glob.iglob('./**/' + opt.cfg, recursive=True))[0] # find file - # opt.data = list(glob.iglob('./**/' + opt.data, recursive=True))[0] # find file + opt.cfg = check_file(opt.cfg) # check file + opt.data = check_file(opt.data) # check file print(opt) opt.img_size.extend([opt.img_size[-1]] * (3 - len(opt.img_size))) # extend to 3 sizes (min, max, test) device = torch_utils.select_device(opt.device, apex=mixed_precision, batch_size=opt.batch_size) diff --git a/utils/utils.py b/utils/utils.py index bad2cf02..2643842d 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -43,6 +43,16 @@ def check_git_status(): print(s[s.find('Your branch is behind'):s.find('\n\n')] + '\n') +def check_file(file): + # Searches for file if not found locally + if os.path.isfile(file): + return file + else: + files = glob.glob('./**/' + file, recursive=True) # find file + assert len(files), 'File Not Found: %s' % file # assert file was found + return files[0] # return first file if multiple found + + def load_classes(path): # Loads *.names file at 'path' with open(path, 'r') as f: From 509644a6227b6ec50acbe34d87bc160ad22738d4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Jun 2020 12:27:03 -0700 Subject: [PATCH 2436/2595] greeting update --- .github/workflows/greetings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index 2a91bb72..2c5c5c70 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -11,7 +11,7 @@ jobs: repo-token: ${{ secrets.GITHUB_TOKEN }} pr-message: 'Hello @${{ github.actor }}, thank you for submitting a PR! We will respond as soon as possible.' issue-message: | - Hello @${{ github.actor }}, thank you for your interest in our work! **Ultralytics has publicly released YOLOv5** at https://github.com/ultralytics/yolov5, featuring faster, lighter and more accurate object detection. YOLOv5 is recommended for all new projects. + Hello @${{ github.actor }}, thank you for your interest in our work! Ultralytics has open-sourced YOLOv5 at https://github.com/ultralytics/yolov5, featuring faster, lighter and more accurate object detection. YOLOv5 is recommended for all new projects. From f51ace44f9c3014ec01e5a126dc3d5ed2e86826e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Jun 2020 12:28:16 -0700 Subject: [PATCH 2437/2595] update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index eef42f07..cba4a560 100755 --- a/README.md +++ b/README.md @@ -185,10 +185,9 @@ To access an up-to-date working environment (with all dependencies including CUD ## About Us Ultralytics is a U.S.-based particle physics and AI startup with over 6 years of expertise supporting government, academic and business clients. We offer a wide range of vision AI services, spanning from simple expert advice up to delivery of fully customized, end-to-end production solutions, including: -- **Cloud-based AI** surveillance systems operating on **hundreds of HD video streams in realtime.** +- **Cloud-based AI** systems operating on **hundreds of HD video streams in realtime.** - **Edge AI** integrated into custom iOS and Android apps for realtime **30 FPS video inference.** - **Custom data training**, hyperparameter evolution, and model exportation to any destination. - For business inquiries and professional support requests please visit us at https://www.ultralytics.com. From 89a3ecac4b09853c4101e049551ab32840d425b3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Jun 2020 12:30:12 -0700 Subject: [PATCH 2438/2595] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index cba4a560..39034ea6 100755 --- a/README.md +++ b/README.md @@ -188,6 +188,7 @@ Ultralytics is a U.S.-based particle physics and AI startup with over 6 years of - **Cloud-based AI** systems operating on **hundreds of HD video streams in realtime.** - **Edge AI** integrated into custom iOS and Android apps for realtime **30 FPS video inference.** - **Custom data training**, hyperparameter evolution, and model exportation to any destination. + For business inquiries and professional support requests please visit us at https://www.ultralytics.com. From a475620306a13cd8dc50c19211e929df6a4125f0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 15 Jun 2020 12:32:05 -0700 Subject: [PATCH 2439/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 39034ea6..9e47c567 100755 --- a/README.md +++ b/README.md @@ -174,7 +174,7 @@ To access an up-to-date working environment (with all dependencies including CUD - **GCP** Deep Learning VM with $300 free credit offer: See our [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) - **Google Colab Notebook** with 12 hours of free GPU time. Open In Colab -- **Docker Image** https://hub.docker.com/r/ultralytics/yolov5. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) +- **Docker Image** https://hub.docker.com/r/ultralytics/yolov3. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) ![Docker Pulls](https://img.shields.io/docker/pulls/ultralytics/yolov3?logo=docker) ## Citation From 512b518c2009373fd3d88c6419c0e853eeb0b42e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Jun 2020 12:39:33 -0700 Subject: [PATCH 2440/2595] update --bug-report.md --- .github/ISSUE_TEMPLATE/--bug-report.md | 34 ++++++++++++++++++-------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/--bug-report.md b/.github/ISSUE_TEMPLATE/--bug-report.md index 500b606b..392a125f 100644 --- a/.github/ISSUE_TEMPLATE/--bug-report.md +++ b/.github/ISSUE_TEMPLATE/--bug-report.md @@ -7,29 +7,43 @@ assignees: '' --- -Before submitting a bug report, please ensure that you are using the latest versions of: - - Python - - PyTorch - - This repository (run `git fetch && git status -uno` to check and `git pull` to update) +Before submitting a bug report, please be aware that your issue **must be reproducible** with all of the following, otherwise it is non-actionable, and we can not help you: + - **Current repository**: run `git fetch && git status -uno` to check and `git pull` to update your repo + - **Common dataset**: coco.yaml or coco128.yaml + - **Common environment**: Colab, Google Cloud, or Docker image. See https://github.com/ultralytics/yolov3#reproduce-our-environment -**Your issue must be reproducible on a public dataset (i.e COCO) using the latest version of the repository, and you must supply code to reproduce, or we can not help you.** - -If this is a custom training question we suggest you include your `train*.jpg`, `test*.jpg` and `results.png` figures. +If this is a custom dataset/training question you **must include** your `train*.jpg`, `test*.jpg` and `results.png` figures, or we can not help you. You can generate results.png with `utils.plot_results()`. ## 🐛 Bug A clear and concise description of what the bug is. -## To Reproduce -**REQUIRED**: Code to reproduce your issue below + +## To Reproduce (REQUIRED) + +Input: ``` -python train.py ... +import torch + +a = torch.tensor([5]) +c = a / 0 +``` + +Output: +``` +Traceback (most recent call last): + File "/Users/glennjocher/opt/anaconda3/envs/env1/lib/python3.7/site-packages/IPython/core/interactiveshell.py", line 3331, in run_code + exec(code_obj, self.user_global_ns, self.user_ns) + File "", line 5, in + c = a / 0 +RuntimeError: ZeroDivisionError ``` ## Expected behavior A clear and concise description of what you expected to happen. + ## Environment If applicable, add screenshots to help explain your problem. From 9fd02ae22403c763f72a3dc7d1dd3d021bf158be Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Jun 2020 12:40:26 -0700 Subject: [PATCH 2441/2595] update --bug-report.md --- .github/ISSUE_TEMPLATE/--bug-report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/--bug-report.md b/.github/ISSUE_TEMPLATE/--bug-report.md index 392a125f..eb659a29 100644 --- a/.github/ISSUE_TEMPLATE/--bug-report.md +++ b/.github/ISSUE_TEMPLATE/--bug-report.md @@ -9,7 +9,7 @@ assignees: '' Before submitting a bug report, please be aware that your issue **must be reproducible** with all of the following, otherwise it is non-actionable, and we can not help you: - **Current repository**: run `git fetch && git status -uno` to check and `git pull` to update your repo - - **Common dataset**: coco.yaml or coco128.yaml + - **Common dataset**: coco2017.data or coco64.data - **Common environment**: Colab, Google Cloud, or Docker image. See https://github.com/ultralytics/yolov3#reproduce-our-environment If this is a custom dataset/training question you **must include** your `train*.jpg`, `test*.jpg` and `results.png` figures, or we can not help you. You can generate results.png with `utils.plot_results()`. From dc068369683adf831eba165c2760ba7fb3418456 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 18 Jun 2020 12:45:19 -0700 Subject: [PATCH 2442/2595] update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9e47c567..9da58e5a 100755 --- a/README.md +++ b/README.md @@ -32,10 +32,10 @@ $ pip install -U -r requirements.txt ## Tutorials -* Open In Colab -* [Train Custom Data](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) < highly recommended!! +* [Notebook](https://github.com/ultralytics/yolov3/blob/master/tutorial.ipynb) Open In Colab +* [Train Custom Data](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) << highly recommended * [GCP Quickstart](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) -* [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) +* [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) ![Docker Pulls](https://img.shields.io/docker/pulls/ultralytics/yolov3?logo=docker) * [A TensorRT Implementation of YOLOv3 and YOLOv4](https://github.com/wang-xinyu/tensorrtx/tree/master/yolov3-spp) From 10dc08f91b4ec4767aa971e2f750d9476185b8ea Mon Sep 17 00:00:00 2001 From: FuLin Date: Fri, 19 Jun 2020 12:54:57 -0400 Subject: [PATCH 2443/2595] revert value of gs back to 32(from 64) (#1317) --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index f963fdf1..ca99daca 100644 --- a/train.py +++ b/train.py @@ -64,7 +64,7 @@ def train(hyp): imgsz_min, imgsz_max, imgsz_test = opt.img_size # img sizes (min, max, test) # Image Sizes - gs = 64 # (pixels) grid size + gs = 32 # (pixels) grid size assert math.fmod(imgsz_min, gs) == 0, '--img-size %g must be a %g-multiple' % (imgsz_min, gs) opt.multi_scale |= imgsz_min != imgsz_max # multi if different (min, max) if opt.multi_scale: From 183e3833d2e931e4f8ff73f1e87f915bea6966d0 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 20 Jun 2020 09:58:48 -0700 Subject: [PATCH 2444/2595] update datasets.py --- utils/datasets.py | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 5811142a..c68e8660 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -18,7 +18,7 @@ from utils.utils import xyxy2xywh, xywh2xyxy help_url = 'https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data' img_formats = ['.bmp', '.jpg', '.jpeg', '.png', '.tif', '.dng'] -vid_formats = ['.mov', '.avi', '.mp4'] +vid_formats = ['.mov', '.avi', '.mp4', '.mpg', '.mpeg', '.m4v', '.wmv', '.mkv'] # Get orientation exif tag for orientation in ExifTags.TAGS.keys(): @@ -63,7 +63,8 @@ class LoadImages: # for inference self.new_video(videos[0]) # new video else: self.cap = None - assert self.nF > 0, 'No images or videos found in ' + path + assert self.nF > 0, 'No images or videos found in %s. Supported formats are:\nimages: %s\nvideos: %s' % \ + (path, img_formats, vid_formats) def __iter__(self): self.count = 0 @@ -257,7 +258,7 @@ class LoadStreams: # multiple IP or RTSP cameras class LoadImagesAndLabels(Dataset): # for training/testing def __init__(self, path, img_size=416, batch_size=16, augment=False, hyp=None, rect=False, image_weights=False, - cache_images=False, single_cls=False): + cache_images=False, single_cls=False, pad=0.0): try: path = str(Path(path)) # os-agnostic parent = str(Path(path).parent) + os.sep @@ -291,20 +292,22 @@ class LoadImagesAndLabels(Dataset): # for training/testing self.label_files = [x.replace('images', 'labels').replace(os.path.splitext(x)[-1], '.txt') for x in self.img_files] + # Read image shapes (wh) + sp = path.replace('.txt', '') + '.shapes' # shapefile path + try: + with open(sp, 'r') as f: # read existing shapefile + s = [x.split() for x in f.read().splitlines()] + assert len(s) == n, 'Shapefile out of sync' + except: + s = [exif_size(Image.open(f)) for f in tqdm(self.img_files, desc='Reading image shapes')] + np.savetxt(sp, s, fmt='%g') # overwrites existing (if any) + + self.shapes = np.array(s, dtype=np.float64) + # Rectangular Training https://github.com/ultralytics/yolov3/issues/232 if self.rect: - # Read image shapes (wh) - sp = path.replace('.txt', '') + '.shapes' # shapefile path - try: - with open(sp, 'r') as f: # read existing shapefile - s = [x.split() for x in f.read().splitlines()] - assert len(s) == n, 'Shapefile out of sync' - except: - s = [exif_size(Image.open(f)) for f in tqdm(self.img_files, desc='Reading image shapes')] - np.savetxt(sp, s, fmt='%g') # overwrites existing (if any) - # Sort by aspect ratio - s = np.array(s, dtype=np.float64) + s = self.shapes # wh ar = s[:, 1] / s[:, 0] # aspect ratio irect = ar.argsort() self.img_files = [self.img_files[i] for i in irect] @@ -322,7 +325,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing elif mini > 1: shapes[i] = [1, 1 / mini] - self.batch_shapes = np.ceil(np.array(shapes) * img_size / 64.).astype(np.int) * 64 + self.batch_shapes = np.ceil(np.array(shapes) * img_size / 32. + pad).astype(np.int) * 32 # Cache labels self.imgs = [None] * n @@ -530,7 +533,7 @@ def load_image(self, index): assert img is not None, 'Image Not Found ' + path h0, w0 = img.shape[:2] # orig hw r = self.img_size / max(h0, w0) # resize image to img_size - if r < 1 or (self.augment and r != 1): # always resize down, only resize up if training with augmentation + if r != 1: # always resize down, only resize up if training with augmentation interp = cv2.INTER_AREA if r < 1 and not self.augment else cv2.INTER_LINEAR img = cv2.resize(img, (int(w0 * r), int(h0 * r)), interpolation=interp) return img, (h0, w0), img.shape[:2] # img, hw_original, hw_resized From ca7794ed05dccda8d216b9f35ce335750788425c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 20 Jun 2020 10:02:18 -0700 Subject: [PATCH 2445/2595] update test.py --- test.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index ace09951..3e739d8e 100644 --- a/test.py +++ b/test.py @@ -23,6 +23,7 @@ def test(cfg, multi_label=True): # Initialize/load model and set device if model is None: + is_training = False device = torch_utils.select_device(opt.device, batch_size=batch_size) verbose = opt.task == 'test' @@ -47,6 +48,7 @@ def test(cfg, if device.type != 'cpu' and torch.cuda.device_count() > 1: model = nn.DataParallel(model) else: # called by train.py + is_training = True device = next(model.parameters()).device # get model device verbose = False @@ -61,7 +63,7 @@ def test(cfg, # Dataloader if dataloader is None: - dataset = LoadImagesAndLabels(path, imgsz, batch_size, rect=True, single_cls=opt.single_cls) + dataset = LoadImagesAndLabels(path, imgsz, batch_size, rect=True, single_cls=opt.single_cls, pad=0.5) batch_size = min(batch_size, len(dataset)) dataloader = DataLoader(dataset, batch_size=batch_size, @@ -91,7 +93,7 @@ def test(cfg, t0 += torch_utils.time_synchronized() - t # Compute loss - if hasattr(model, 'hyp'): # if model has loss hyperparameters + if is_training: # if model has loss hyperparameters loss += compute_loss(train_out, targets, model)[1][:3] # GIoU, obj, cls # Run NMS From a97f350461287daaabaac3200d90b7eec440453f Mon Sep 17 00:00:00 2001 From: Oulbacha Reda Date: Mon, 22 Jun 2020 16:15:40 -0400 Subject: [PATCH 2446/2595] Non-output layer freeze in train.py (#1333) Freeze layers that aren't of type YOLOLayer and that aren't the conv layers preceeding them --- train.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/train.py b/train.py index ca99daca..5abcacf0 100644 --- a/train.py +++ b/train.py @@ -143,6 +143,16 @@ def train(hyp): elif len(weights) > 0: # darknet format # possible weights are '*.weights', 'yolov3-tiny.conv.15', 'darknet53.conv.74' etc. load_darknet_weights(model, weights) + + if opt.freeze_layers: + output_layer_indices = [idx - 1 for idx, module in enumerate(model.module_list) \ + if isinstance(module, YOLOLayer)] + freeze_layer_indices = [x for x in range(len(model.module_list)) if\ + (x not in output_layer_indices) and \ + (x - 1 not in output_layer_indices)] + for idx in freeze_layer_indices: + for parameter in model.module_list[idx].parameters(): + parameter.requires_grad_(False) # Mixed precision training https://github.com/NVIDIA/apex if mixed_precision: @@ -394,6 +404,7 @@ if __name__ == '__main__': parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1 or cpu)') parser.add_argument('--adam', action='store_true', help='use adam optimizer') parser.add_argument('--single-cls', action='store_true', help='train as single-class dataset') + parser.add_argument('--freeze-layers', action='store_true', help='Freeze non-output layers') opt = parser.parse_args() opt.weights = last if opt.resume else opt.weights check_git_status() From e276e3a1030a672fab6135c90a42f8b454713dc1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 22 Jun 2020 15:20:08 -0700 Subject: [PATCH 2447/2595] Update greetings.yml --- .github/workflows/greetings.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index 2c5c5c70..860c4a26 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -16,7 +16,7 @@ jobs: - + To continue with this repo, please visit our [Custom Training Tutorial](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) to get started, and see our [Google Colab Notebook](https://github.com/ultralytics/yolov3/blob/master/tutorial.ipynb), [Docker Image](https://hub.docker.com/r/ultralytics/yolov3), and [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) for example environments. @@ -27,4 +27,4 @@ jobs: - **Edge AI** integrated into custom iOS and Android apps for realtime **30 FPS video inference.** - **Custom data training**, hyperparameter evolution, and model exportation to any destination. - For more information please visit https://www.ultralytics.com. \ No newline at end of file + For more information please visit https://www.ultralytics.com. From 8a414743e2fd92d2bc471c1f92281f82cf31bc10 Mon Sep 17 00:00:00 2001 From: Chang Lee Date: Mon, 22 Jun 2020 22:07:51 -0400 Subject: [PATCH 2448/2595] Fixed string format error during weight conversion (#1334) --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index 0323b25e..d5cfc02a 100755 --- a/models.py +++ b/models.py @@ -438,7 +438,7 @@ def convert(cfg='cfg/yolov3-spp.cfg', weights='weights/yolov3-spp.weights'): target = weights.rsplit('.', 1)[0] + '.pt' torch.save(chkpt, target) - print("Success: converted '%s' to 's%'" % (weights, target)) + print("Success: converted '%s' to '%s'" % (weights, target)) else: print('Error: extension not supported.') From a587d39cd447b85219e761734b5f1d5cb30197d8 Mon Sep 17 00:00:00 2001 From: NanoCode012 Date: Thu, 25 Jun 2020 01:37:09 +0700 Subject: [PATCH 2449/2595] Fixed train.py SyntaxError due to last commit (#1336) Fixed unexpected character after line continuation character on line 148,150, and 151 --- train.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/train.py b/train.py index 5abcacf0..705b5198 100644 --- a/train.py +++ b/train.py @@ -145,10 +145,9 @@ def train(hyp): load_darknet_weights(model, weights) if opt.freeze_layers: - output_layer_indices = [idx - 1 for idx, module in enumerate(model.module_list) \ - if isinstance(module, YOLOLayer)] - freeze_layer_indices = [x for x in range(len(model.module_list)) if\ - (x not in output_layer_indices) and \ + output_layer_indices = [idx - 1 for idx, module in enumerate(model.module_list) if isinstance(module, YOLOLayer)] + freeze_layer_indices = [x for x in range(len(model.module_list)) if + (x not in output_layer_indices) and (x - 1 not in output_layer_indices)] for idx in freeze_layer_indices: for parameter in model.module_list[idx].parameters(): From e1fb453079eea03f4da2b572abeab6d4dced9900 Mon Sep 17 00:00:00 2001 From: Jason Nataprawira <52592216+jas-nat@users.noreply.github.com> Date: Thu, 25 Jun 2020 20:09:41 +0700 Subject: [PATCH 2450/2595] Update requirements.txt (#1339) Add torchvision --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 08c696bb..7b631ebe 100755 --- a/requirements.txt +++ b/requirements.txt @@ -3,6 +3,7 @@ numpy == 1.17 opencv-python >= 4.1 torch >= 1.5 +torchvision matplotlib pycocotools tqdm From 9b9715668c544f9fbb16bb95f6861cf73293d2e4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 27 Jun 2020 09:09:02 -0700 Subject: [PATCH 2451/2595] add yolov4-tiny.cfg #1350 --- cfg/yolov4-tiny.cfg | 281 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 281 insertions(+) create mode 100644 cfg/yolov4-tiny.cfg diff --git a/cfg/yolov4-tiny.cfg b/cfg/yolov4-tiny.cfg new file mode 100644 index 00000000..dc6f5bfb --- /dev/null +++ b/cfg/yolov4-tiny.cfg @@ -0,0 +1,281 @@ +[net] +# Testing +#batch=1 +#subdivisions=1 +# Training +batch=64 +subdivisions=1 +width=416 +height=416 +channels=3 +momentum=0.9 +decay=0.0005 +angle=0 +saturation = 1.5 +exposure = 1.5 +hue=.1 + +learning_rate=0.00261 +burn_in=1000 +max_batches = 500200 +policy=steps +steps=400000,450000 +scales=.1,.1 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=2 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1 +groups=2 +group_id=1 + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=32 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1,-2 + +[convolutional] +batch_normalize=1 +filters=64 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -6,-1 + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1 +groups=2 +group_id=1 + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=64 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1,-2 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -6,-1 + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers=-1 +groups=2 +group_id=1 + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=128 +size=3 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -1,-2 + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[route] +layers = -6,-1 + +[maxpool] +size=2 +stride=2 + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +################################## + +[convolutional] +batch_normalize=1 +filters=256 +size=1 +stride=1 +pad=1 +activation=leaky + +[convolutional] +batch_normalize=1 +filters=512 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + + + +[yolo] +mask = 3,4,5 +anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 +classes=80 +num=6 +jitter=.3 +scale_x_y = 1.05 +cls_normalizer=1.0 +iou_normalizer=0.07 +iou_loss=ciou +ignore_thresh = .7 +truth_thresh = 1 +random=0 +resize=1.5 +nms_kind=greedynms +beta_nms=0.6 + +[route] +layers = -4 + +[convolutional] +batch_normalize=1 +filters=128 +size=1 +stride=1 +pad=1 +activation=leaky + +[upsample] +stride=2 + +[route] +layers = -1, 23 + +[convolutional] +batch_normalize=1 +filters=256 +size=3 +stride=1 +pad=1 +activation=leaky + +[convolutional] +size=1 +stride=1 +pad=1 +filters=255 +activation=linear + +[yolo] +mask = 1,2,3 +anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 +classes=80 +num=6 +jitter=.3 +scale_x_y = 1.05 +cls_normalizer=1.0 +iou_normalizer=0.07 +iou_loss=ciou +ignore_thresh = .7 +truth_thresh = 1 +random=0 +resize=1.5 +nms_kind=greedynms +beta_nms=0.6 From eadc06bce8d835fd1c1736898179fc3195d64520 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 27 Jun 2020 23:52:45 -0700 Subject: [PATCH 2452/2595] Update README.md --- README.md | 24 +++--------------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 9da58e5a..84ca6864 100755 --- a/README.md +++ b/README.md @@ -1,25 +1,7 @@ - - - - - - -
- - - - - - - - - -
+ + - -## Introduction - -The https://github.com/ultralytics/yolov3 repo contains inference and training code for YOLOv3 in PyTorch. The code works on Linux, MacOS and Windows. Training is done on the COCO dataset by default: https://cocodataset.org/#home. **Credit to Joseph Redmon for YOLO:** https://pjreddie.com/darknet/yolo/. +This repo contains Ultralytics inference and training code for YOLOv3 in PyTorch. The code works on Linux, MacOS and Windows. **Credit to Joseph Redmon for YOLO:** https://pjreddie.com/darknet/yolo/. ## Requirements From fc0394e0382fdefe3c73c13babf4980140a304b1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 27 Jun 2020 23:54:46 -0700 Subject: [PATCH 2453/2595] Update README.md --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 84ca6864..b62dcad8 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,8 @@ - - + + +  -This repo contains Ultralytics inference and training code for YOLOv3 in PyTorch. The code works on Linux, MacOS and Windows. **Credit to Joseph Redmon for YOLO:** https://pjreddie.com/darknet/yolo/. +This repo contains Ultralytics inference and training code for YOLOv3 in PyTorch. The code works on Linux, MacOS and Windows. Credit to Joseph Redmon for YOLO https://pjreddie.com/darknet/yolo/. ## Requirements From 46575cfad5fca621d1a4247b33dc581f822fe98a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 27 Jun 2020 23:59:54 -0700 Subject: [PATCH 2454/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b62dcad8..bf4017d6 100755 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ - +   This repo contains Ultralytics inference and training code for YOLOv3 in PyTorch. The code works on Linux, MacOS and Windows. Credit to Joseph Redmon for YOLO https://pjreddie.com/darknet/yolo/. From f8e5338f0a1e73e4a53bb0adba92eee38d8c0179 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 30 Jun 2020 16:19:56 -0700 Subject: [PATCH 2455/2595] --resume epochs update --- train.py | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/train.py b/train.py index 705b5198..5402f707 100644 --- a/train.py +++ b/train.py @@ -116,29 +116,35 @@ def train(hyp): attempt_download(weights) if weights.endswith('.pt'): # pytorch format # possible weights are '*.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt' etc. - chkpt = torch.load(weights, map_location=device) + ckpt = torch.load(weights, map_location=device) # load model try: - chkpt['model'] = {k: v for k, v in chkpt['model'].items() if model.state_dict()[k].numel() == v.numel()} - model.load_state_dict(chkpt['model'], strict=False) + ckpt['model'] = {k: v for k, v in ckpt['model'].items() if model.state_dict()[k].numel() == v.numel()} + model.load_state_dict(ckpt['model'], strict=False) except KeyError as e: s = "%s is not compatible with %s. Specify --weights '' or specify a --cfg compatible with %s. " \ "See https://github.com/ultralytics/yolov3/issues/657" % (opt.weights, opt.cfg, opt.weights) raise KeyError(s) from e # load optimizer - if chkpt['optimizer'] is not None: - optimizer.load_state_dict(chkpt['optimizer']) - best_fitness = chkpt['best_fitness'] + if ckpt['optimizer'] is not None: + optimizer.load_state_dict(ckpt['optimizer']) + best_fitness = ckpt['best_fitness'] # load results - if chkpt.get('training_results') is not None: + if ckpt.get('training_results') is not None: with open(results_file, 'w') as file: - file.write(chkpt['training_results']) # write results.txt + file.write(ckpt['training_results']) # write results.txt - start_epoch = chkpt['epoch'] + 1 - del chkpt + # epochs + start_epoch = ckpt['epoch'] + 1 + if epochs < start_epoch: + print('%s has been trained for %g epochs. Fine-tuning for %g additional epochs.' % + (opt.weights, ckpt['epoch'], epochs)) + epochs += ckpt['epoch'] # finetune additional epochs + + del ckpt elif len(weights) > 0: # darknet format # possible weights are '*.weights', 'yolov3-tiny.conv.15', 'darknet53.conv.74' etc. @@ -349,17 +355,17 @@ def train(hyp): save = (not opt.nosave) or (final_epoch and not opt.evolve) if save: with open(results_file, 'r') as f: # create checkpoint - chkpt = {'epoch': epoch, + ckpt = {'epoch': epoch, 'best_fitness': best_fitness, 'training_results': f.read(), 'model': ema.ema.module.state_dict() if hasattr(model, 'module') else ema.ema.state_dict(), 'optimizer': None if final_epoch else optimizer.state_dict()} # Save last, best and delete - torch.save(chkpt, last) + torch.save(ckpt, last) if (best_fitness == fi) and not final_epoch: - torch.save(chkpt, best) - del chkpt + torch.save(ckpt, best) + del ckpt # end epoch ---------------------------------------------------------------------------------------------------- # end training From 63996a8bfe72e69da5f24c96cd4d3480e3beb737 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 30 Jun 2020 21:45:06 -0700 Subject: [PATCH 2456/2595] --resume update --- train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/train.py b/train.py index 5402f707..5915848a 100644 --- a/train.py +++ b/train.py @@ -411,7 +411,7 @@ if __name__ == '__main__': parser.add_argument('--single-cls', action='store_true', help='train as single-class dataset') parser.add_argument('--freeze-layers', action='store_true', help='Freeze non-output layers') opt = parser.parse_args() - opt.weights = last if opt.resume else opt.weights + opt.weights = last if opt.resume and not opt.weights else opt.weights check_git_status() opt.cfg = check_file(opt.cfg) # check file opt.data = check_file(opt.data) # check file From fa78fc4e3413eca7014450602781598c243fd95d Mon Sep 17 00:00:00 2001 From: tjiagoM Date: Thu, 2 Jul 2020 22:35:20 +0100 Subject: [PATCH 2457/2595] partial support for dropout layer (#1366) --- models.py | 6 ++++++ utils/parse_config.py | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/models.py b/models.py index d5cfc02a..dd2fd656 100755 --- a/models.py +++ b/models.py @@ -106,6 +106,9 @@ def create_modules(module_defs, img_size, cfg): # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) try: j = layers[yolo_index] if 'from' in mdef else -1 + # If previous layer is a dropout layer, get the one before + if module_list[j].__class__.__name__ == 'Dropout': + j -= 1 bias_ = module_list[j][0].bias # shape(255,) bias = bias_[:modules.no * modules.na].view(modules.na, -1) # shape(3,85) bias[:, 4] += -4.5 # obj @@ -114,6 +117,9 @@ def create_modules(module_defs, img_size, cfg): except: print('WARNING: smart bias initialization failure.') + elif mdef['type'] == 'dropout': + perc = float(mdef['probability']) + modules = nn.Dropout(p=perc) else: print('Warning: Unrecognized Layer Type: ' + mdef['type']) diff --git a/utils/parse_config.py b/utils/parse_config.py index 4208748e..88d7d7ed 100644 --- a/utils/parse_config.py +++ b/utils/parse_config.py @@ -31,6 +31,7 @@ def parse_model_cfg(path): mdefs[-1][key] = [int(x) for x in val.split(',')] else: val = val.strip() + # TODO: .isnumeric() actually fails to get the float case if val.isnumeric(): # return int or float mdefs[-1][key] = int(val) if (int(val) - float(val)) == 0 else float(val) else: @@ -40,7 +41,7 @@ def parse_model_cfg(path): supported = ['type', 'batch_normalize', 'filters', 'size', 'stride', 'pad', 'activation', 'layers', 'groups', 'from', 'mask', 'anchors', 'classes', 'num', 'jitter', 'ignore_thresh', 'truth_thresh', 'random', 'stride_x', 'stride_y', 'weights_type', 'weights_normalization', 'scale_x_y', 'beta_nms', 'nms_kind', - 'iou_loss', 'iou_normalizer', 'cls_normalizer', 'iou_thresh'] + 'iou_loss', 'iou_normalizer', 'cls_normalizer', 'iou_thresh', 'probability'] f = [] # fields for x in mdefs[1:]: From 2b0f4f6f9d8de147dd52cbcc668fed4011c0a6e3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 2 Jul 2020 16:42:45 -0700 Subject: [PATCH 2458/2595] update .dockerignore --- .dockerignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.dockerignore b/.dockerignore index 5a2495bc..a0d80d09 100644 --- a/.dockerignore +++ b/.dockerignore @@ -16,8 +16,10 @@ data/samples/* # Neural Network weights ----------------------------------------------------------------------------------------------- **/*.weights **/*.pt +**/*.pth **/*.onnx **/*.mlmodel +**/*.torchscript **/darknet53.conv.74 **/yolov3-tiny.conv.15 From bdf546150df5aaeacd1eb415b5dc830096079880 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 8 Jul 2020 21:33:10 -0700 Subject: [PATCH 2459/2595] Update requirements.txt #1339 --- requirements.txt | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/requirements.txt b/requirements.txt index 7b631ebe..e5b9d3da 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,22 +1,20 @@ # pip install -U -r requirements.txt -# pycocotools requires numpy 1.17 https://github.com/cocodataset/cocoapi/issues/356 -numpy == 1.17 -opencv-python >= 4.1 -torch >= 1.5 -torchvision +Cython +numpy==1.17 +opencv-python +torch>=1.5.1 matplotlib -pycocotools -tqdm pillow -tensorboard >= 1.14 +tensorboard +torchvision +scipy +tqdm +git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI -# Nvidia Apex (optional) for mixed precision training -------------------------- -# git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex - -# Conda commands (in place of pip) --------------------------------------------- +# Conda commands (in lieu of pip) --------------------------------------------- # conda update -yn base -c defaults conda # conda install -yc anaconda numpy opencv matplotlib tqdm pillow ipython # conda install -yc conda-forge scikit-image pycocotools tensorboard # conda install -yc spyder-ide spyder-line-profiler # conda install -yc pytorch pytorch torchvision -# conda install -yc conda-forge protobuf numpy && pip install onnx # https://github.com/onnx/onnx#linux-and-macos +# conda install -yc conda-forge protobuf numpy && pip install onnx==1.6.0 # https://github.com/onnx/onnx#linux-and-macos From 2861288b0396d86f87d21b3789574fe4950ff7ff Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 9 Jul 2020 17:44:01 -0700 Subject: [PATCH 2460/2595] update issue templates --- .github/ISSUE_TEMPLATE/--bug-report.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/--bug-report.md b/.github/ISSUE_TEMPLATE/--bug-report.md index eb659a29..6dc6e264 100644 --- a/.github/ISSUE_TEMPLATE/--bug-report.md +++ b/.github/ISSUE_TEMPLATE/--bug-report.md @@ -8,11 +8,11 @@ assignees: '' --- Before submitting a bug report, please be aware that your issue **must be reproducible** with all of the following, otherwise it is non-actionable, and we can not help you: - - **Current repository**: run `git fetch && git status -uno` to check and `git pull` to update your repo + - **Current repo**: run `git fetch && git status -uno` to check and `git pull` to update repo - **Common dataset**: coco2017.data or coco64.data - **Common environment**: Colab, Google Cloud, or Docker image. See https://github.com/ultralytics/yolov3#reproduce-our-environment -If this is a custom dataset/training question you **must include** your `train*.jpg`, `test*.jpg` and `results.png` figures, or we can not help you. You can generate results.png with `utils.plot_results()`. +If this is a custom dataset/training question you **must include** your `train*.jpg`, `test*.jpg` and `results.png` figures, or we can not help you. You can generate these with `utils.plot_results()`. ## 🐛 Bug From 8241bf67bb0cc1c11634bdb4cc76e06ac072192b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 9 Jul 2020 17:45:01 -0700 Subject: [PATCH 2461/2595] update issue templates Signed-off-by: Glenn Jocher --- .github/ISSUE_TEMPLATE/-question.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/-question.md diff --git a/.github/ISSUE_TEMPLATE/-question.md b/.github/ISSUE_TEMPLATE/-question.md new file mode 100644 index 00000000..2c22aea7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/-question.md @@ -0,0 +1,13 @@ +--- +name: "❓Question" +about: Ask a general question +title: '' +labels: question +assignees: '' + +--- + +## ❔Question + + +## Additional context From cec59f12c8b0800d00949ea15511469f667d45dd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 18 Jul 2020 10:48:33 -0700 Subject: [PATCH 2462/2595] =?UTF-8?q?windows=20=E2=80=93-weights=20''=20fi?= =?UTF-8?q?x=20#192?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Glenn Jocher --- models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models.py b/models.py index dd2fd656..54742b88 100755 --- a/models.py +++ b/models.py @@ -452,7 +452,7 @@ def convert(cfg='cfg/yolov3-spp.cfg', weights='weights/yolov3-spp.weights'): def attempt_download(weights): # Attempt to download pretrained weights if not found locally - weights = weights.strip() + weights = weights.strip().replace("'", '') msg = weights + ' missing, try downloading from https://drive.google.com/open?id=1LezFG5g3BCW6iYaV89B2i64cqEUZD7e0' if len(weights) > 0 and not os.path.isfile(weights): From f61fa7de2b4eb4b831ef396b93d9781eca9eb9c8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 20 Jul 2020 10:33:49 -0700 Subject: [PATCH 2463/2595] Update datasets.py --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index c68e8660..2a4ee63b 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -17,7 +17,7 @@ from tqdm import tqdm from utils.utils import xyxy2xywh, xywh2xyxy help_url = 'https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data' -img_formats = ['.bmp', '.jpg', '.jpeg', '.png', '.tif', '.dng'] +img_formats = ['.bmp', '.jpg', '.jpeg', '.png', '.tif', '.tiff','.dng'] vid_formats = ['.mov', '.avi', '.mp4', '.mpg', '.mpeg', '.m4v', '.wmv', '.mkv'] # Get orientation exif tag From e80cc2b80e3fd46395e8ec75f843960100927ff2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 20 Jul 2020 10:34:06 -0700 Subject: [PATCH 2464/2595] Update datasets.py --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 2a4ee63b..959fcb6c 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -17,7 +17,7 @@ from tqdm import tqdm from utils.utils import xyxy2xywh, xywh2xyxy help_url = 'https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data' -img_formats = ['.bmp', '.jpg', '.jpeg', '.png', '.tif', '.tiff','.dng'] +img_formats = ['.bmp', '.jpg', '.jpeg', '.png', '.tif', '.tiff', '.dng'] vid_formats = ['.mov', '.avi', '.mp4', '.mpg', '.mpeg', '.m4v', '.wmv', '.mkv'] # Get orientation exif tag From 8de13f114db3d95cfae2bfd928d2dbbcb2fccdcb Mon Sep 17 00:00:00 2001 From: e96031413 <30921855+e96031413@users.noreply.github.com> Date: Mon, 27 Jul 2020 14:50:05 +0800 Subject: [PATCH 2465/2595] Modify Line 104 on getting coco dataset (#1415) The correct command for downloading coco dataset 2014 is supposed to be "!bash yolov3/data/get_coco2014.sh" --- tutorial.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorial.ipynb b/tutorial.ipynb index 7da272bc..53e5cd1a 100644 --- a/tutorial.ipynb +++ b/tutorial.ipynb @@ -101,7 +101,7 @@ ], "source": [ "!git clone https://github.com/ultralytics/yolov3 # clone\n", - "!bash yolov3/data/get_coco_dataset_gdrive.sh # copy COCO2014 dataset (19GB)\n", + "!bash yolov3/data/get_coco2014.sh # copy COCO2014 dataset (19GB)\n", "%cd yolov3" ] }, From e0a5a6b411cca45f0d64aa932abffbf3c99b92b3 Mon Sep 17 00:00:00 2001 From: priteshgohil <43172056+priteshgohil@users.noreply.github.com> Date: Mon, 27 Jul 2020 19:29:45 +0200 Subject: [PATCH 2466/2595] edit in comments (#1417) Co-authored-by: Priteshkumar Bharatbhai Gohil --- test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test.py b/test.py index 3e739d8e..4d68438e 100644 --- a/test.py +++ b/test.py @@ -145,8 +145,8 @@ def test(cfg, # Per target class for cls in torch.unique(tcls_tensor): - ti = (cls == tcls_tensor).nonzero().view(-1) # prediction indices - pi = (cls == pred[:, 5]).nonzero().view(-1) # target indices + ti = (cls == tcls_tensor).nonzero().view(-1) # target indices + pi = (cls == pred[:, 5]).nonzero().view(-1) # prediction indices # Search for detections if pi.shape[0]: From c65e4d4446c63fc3380dbcc43138cc7274a6c0b7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 31 Jul 2020 00:05:49 -0700 Subject: [PATCH 2467/2595] Update stale.yml --- .github/workflows/stale.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index f0d75cb4..16b9de6b 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -1,17 +1,17 @@ name: Close stale issues on: schedule: - - cron: "0 0 * * *" + - cron: "0 0 * * *" jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v1 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove Stale label or comment or this will be closed in 5 days.' - stale-pr-message: 'This pull request is stale because it has been open 30 days with no activity. Remove Stale label or comment or this will be closed in 5 days.' - days-before-stale: 30 - days-before-close: 5 - exempt-issue-label: 'tutorial' + - uses: actions/stale@v1 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.' + stale-pr-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.' + days-before-stale: 30 + days-before-close: 5 + exempt-issue-label: 'documentation,tutorial' From 06138062869c41d3df130e07c5aa92fa5a01dad5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 31 Jul 2020 00:09:09 -0700 Subject: [PATCH 2468/2595] Update greetings.yml --- .github/workflows/greetings.yml | 45 ++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index 860c4a26..401a43ec 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -6,25 +6,36 @@ jobs: greeting: runs-on: ubuntu-latest steps: - - uses: actions/first-interaction@v1 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - pr-message: 'Hello @${{ github.actor }}, thank you for submitting a PR! We will respond as soon as possible.' - issue-message: | - Hello @${{ github.actor }}, thank you for your interest in our work! Ultralytics has open-sourced YOLOv5 at https://github.com/ultralytics/yolov5, featuring faster, lighter and more accurate object detection. YOLOv5 is recommended for all new projects. + - uses: actions/first-interaction@v1 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + pr-message: | + Hello @${{ github.actor }}, thank you for submitting a PR! To allow your work to be integrated as seamlessly as possible, we advise you to: + - Verify your PR is **up-to-date with origin/master.** If your PR is behind origin/master update by running the following, replacing 'feature' with the name of your local branch: + ```bash + git remote add upstream https://github.com/ultralytics/yolov3.git + git fetch upstream + git checkout feature # <----- replace 'feature' with local branch name + git rebase upstream/master + git push -u origin -f + ``` + - Verify all Continuous Integration (CI) **checks are passing**. + - Reduce changes to the absolute **minimum** required for your bug fix or feature addition. _"It is not daily increase but daily decrease, hack away the unessential. The closer to the source, the less wastage there is."_ -Bruce Lee + issue-message: | + Hello @${{ github.actor }}, thank you for your interest in our work! Ultralytics has open-sourced YOLOv5 at https://github.com/ultralytics/yolov5, featuring faster, lighter and more accurate object detection. YOLOv5 is recommended for all new projects. - - + + - + - To continue with this repo, please visit our [Custom Training Tutorial](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) to get started, and see our [Google Colab Notebook](https://github.com/ultralytics/yolov3/blob/master/tutorial.ipynb), [Docker Image](https://hub.docker.com/r/ultralytics/yolov3), and [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) for example environments. - - If this is a bug report, please provide screenshots and **minimum viable code to reproduce your issue**, otherwise we can not help you. + To continue with this repo, please visit our [Custom Training Tutorial](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) to get started, and see our [Google Colab Notebook](https://github.com/ultralytics/yolov3/blob/master/tutorial.ipynb), [Docker Image](https://hub.docker.com/r/ultralytics/yolov3), and [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) for example environments. - If this is a custom model or data training question, please note that Ultralytics does **not** provide free personal support. As a leader in vision ML and AI, we do offer professional consulting, from simple expert advice up to delivery of fully customized, end-to-end production solutions for our clients, such as: - - **Cloud-based AI** systems operating on **hundreds of HD video streams in realtime.** - - **Edge AI** integrated into custom iOS and Android apps for realtime **30 FPS video inference.** - - **Custom data training**, hyperparameter evolution, and model exportation to any destination. + If this is a bug report, please provide screenshots and **minimum viable code to reproduce your issue**, otherwise we can not help you. - For more information please visit https://www.ultralytics.com. + If this is a custom model or data training question, please note that Ultralytics does **not** provide free personal support. As a leader in vision ML and AI, we do offer professional consulting, from simple expert advice up to delivery of fully customized, end-to-end production solutions for our clients, such as: + - **Cloud-based AI** systems operating on **hundreds of HD video streams in realtime.** + - **Edge AI** integrated into custom iOS and Android apps for realtime **30 FPS video inference.** + - **Custom data training**, hyperparameter evolution, and model exportation to any destination. + + For more information please visit https://www.ultralytics.com. From ee82e3db5dfda38f7815071c24afd944b2301e02 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 3 Aug 2020 19:37:38 -0700 Subject: [PATCH 2469/2595] update requirements.txt (#1431) --- requirements.txt | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/requirements.txt b/requirements.txt index e5b9d3da..2656a96d 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,17 +1,18 @@ # pip install -U -r requirements.txt Cython -numpy==1.17 -opencv-python -torch>=1.5.1 -matplotlib +matplotlib>=3.2.2 +numpy>=1.18.5 +opencv-python>=4.1.2 pillow -tensorboard -torchvision -scipy -tqdm -git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI +# pycocotools>=2.0 +PyYAML>=5.3 +scipy>=1.4.1 +tensorboard>=2.2 +torch>=1.6.0 +torchvision>=0.7.0 +tqdm>=4.41.0 -# Conda commands (in lieu of pip) --------------------------------------------- +# Conda commands (in place of pip) --------------------------------------------- # conda update -yn base -c defaults conda # conda install -yc anaconda numpy opencv matplotlib tqdm pillow ipython # conda install -yc conda-forge scikit-image pycocotools tensorboard From 7163b5e89f03754e376e08976a55a9ae1bff56bb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 3 Aug 2020 19:53:06 -0700 Subject: [PATCH 2470/2595] update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bf4017d6..ca6d0499 100755 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ This repo contains Ultralytics inference and training code for YOLOv3 in PyTorch ## Requirements -Python 3.7 or later with all `requirements.txt` dependencies installed, including `torch >= 1.5`. To install run: +Python 3.8 or later with all `requirements.txt` dependencies installed, including `torch >= 1.6`. To install run: ```bash $ pip install -U -r requirements.txt ``` From 061806bb1f264dd1d44c541d02a10bc98b6aacf2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 3 Aug 2020 19:54:03 -0700 Subject: [PATCH 2471/2595] update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ca6d0499..69725b59 100755 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ This repo contains Ultralytics inference and training code for YOLOv3 in PyTorch ## Requirements -Python 3.8 or later with all `requirements.txt` dependencies installed, including `torch >= 1.6`. To install run: +Python 3.8 or later with all [requirements.txt](https://github.com/ultralytics/yolov3/blob/master/requirements.txt) dependencies installed, including `torch>=1.6`. To install run: ```bash $ pip install -U -r requirements.txt ``` From 2ba4ee32427e489c02e6460c05279a0c0ca398c1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 3 Aug 2020 19:54:27 -0700 Subject: [PATCH 2472/2595] update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 69725b59..4051eb8a 100755 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ This repo contains Ultralytics inference and training code for YOLOv3 in PyTorch Python 3.8 or later with all [requirements.txt](https://github.com/ultralytics/yolov3/blob/master/requirements.txt) dependencies installed, including `torch>=1.6`. To install run: ```bash -$ pip install -U -r requirements.txt +$ pip install -r requirements.txt ``` From af22cd7be34b6d0834a15363ec6b16c729a48fd9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 8 Aug 2020 11:12:19 -0700 Subject: [PATCH 2473/2595] add .gitattributes file --- .gitattributes | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..6c8722f6 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# remove notebooks from GitHub language stats +*.ipynb linguist-vendored From 2a74d1fd7d39f74d05cb76c94fbbb21e47e37ebb Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 8 Aug 2020 12:57:41 -0700 Subject: [PATCH 2474/2595] update requirements.txt --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 2656a96d..895cf6ca 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -# pip install -U -r requirements.txt +# pip install -r requirements.txt Cython matplotlib>=3.2.2 numpy>=1.18.5 From f14c143926c8faadb2a767201344dd2dfd8b138c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 11 Aug 2020 00:56:04 -0700 Subject: [PATCH 2475/2595] Update greetings.yml --- .github/workflows/greetings.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index 401a43ec..642e08d8 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -1,6 +1,6 @@ name: Greetings -on: [pull_request, issues] +on: [pull_request_target, issues] jobs: greeting: @@ -21,6 +21,7 @@ jobs: ``` - Verify all Continuous Integration (CI) **checks are passing**. - Reduce changes to the absolute **minimum** required for your bug fix or feature addition. _"It is not daily increase but daily decrease, hack away the unessential. The closer to the source, the less wastage there is."_ -Bruce Lee + issue-message: | Hello @${{ github.actor }}, thank you for your interest in our work! Ultralytics has open-sourced YOLOv5 at https://github.com/ultralytics/yolov5, featuring faster, lighter and more accurate object detection. YOLOv5 is recommended for all new projects. From 3d09ca366c84d5896b04b24e492c1a8a7d430c42 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 Aug 2020 13:51:10 -0700 Subject: [PATCH 2476/2595] reverse plotting low to high confidence (#1448) --- detect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/detect.py b/detect.py index 0c4b17b3..42e25763 100644 --- a/detect.py +++ b/detect.py @@ -121,7 +121,7 @@ def detect(save_img=False): s += '%g %ss, ' % (n, names[int(c)]) # add to string # Write results - for *xyxy, conf, cls in det: + for *xyxy, conf, cls in reversed(det): if save_txt: # Write to file xywh = (xyxy2xywh(torch.tensor(xyxy).view(1, 4)) / gn).view(-1).tolist() # normalized xywh with open(save_path[:save_path.rfind('.')] + '.txt', 'a') as file: From 3e7e1e16c58fdfc5a147b8ef34f9e2da6d2a2923 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 13 Aug 2020 14:43:37 -0700 Subject: [PATCH 2477/2595] Update greetings.yml --- .github/workflows/greetings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index 642e08d8..d44c685b 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -28,7 +28,7 @@ jobs: - + To continue with this repo, please visit our [Custom Training Tutorial](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) to get started, and see our [Google Colab Notebook](https://github.com/ultralytics/yolov3/blob/master/tutorial.ipynb), [Docker Image](https://hub.docker.com/r/ultralytics/yolov3), and [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) for example environments. From 0ad44bc7e85098184c901dc5ce010aa4b9014451 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 13 Aug 2020 14:49:54 -0700 Subject: [PATCH 2478/2595] Update greetings.yml --- .github/workflows/greetings.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index d44c685b..d9b709c4 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -27,7 +27,8 @@ jobs: - + +

To continue with this repo, please visit our [Custom Training Tutorial](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) to get started, and see our [Google Colab Notebook](https://github.com/ultralytics/yolov3/blob/master/tutorial.ipynb), [Docker Image](https://hub.docker.com/r/ultralytics/yolov3), and [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) for example environments. From 64ff05c499ddd22721e2ce8a4abadba42d680418 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 13 Aug 2020 14:56:52 -0700 Subject: [PATCH 2479/2595] Update greetings.yml --- .github/workflows/greetings.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index d9b709c4..c502351a 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -27,7 +27,6 @@ jobs: -

From bf34ae007fea165255c8be1b7a835dedc49a9613 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 22 Aug 2020 17:49:27 -0700 Subject: [PATCH 2480/2595] Global code reformat and optimize imports --- data/get_coco2014.sh | 8 ++++---- data/get_coco2017.sh | 8 ++++---- train.py | 28 ++++++++++++++-------------- utils/evolve.sh | 3 +-- utils/gcp.sh | 3 +-- 5 files changed, 24 insertions(+), 26 deletions(-) diff --git a/data/get_coco2014.sh b/data/get_coco2014.sh index 2125cf1f..02d059c5 100755 --- a/data/get_coco2014.sh +++ b/data/get_coco2014.sh @@ -6,13 +6,13 @@ # Download labels from Google Drive, accepting presented query filename="coco2014labels.zip" fileid="1s6-CmF5_SElM28r52P1OUrCcuXZN-SFo" -curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" > /dev/null -curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${fileid}" -o ${filename} +curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" >/dev/null +curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=$(awk '/download/ {print $NF}' ./cookie)&id=${fileid}" -o ${filename} rm ./cookie # Unzip labels -unzip -q ${filename} # for coco.zip -# tar -xzf ${filename} # for coco.tar.gz +unzip -q ${filename} # for coco.zip +# tar -xzf ${filename} # for coco.tar.gz rm ${filename} # Download and unzip images diff --git a/data/get_coco2017.sh b/data/get_coco2017.sh index 30f60b5b..3bf4069a 100755 --- a/data/get_coco2017.sh +++ b/data/get_coco2017.sh @@ -6,13 +6,13 @@ # Download labels from Google Drive, accepting presented query filename="coco2017labels.zip" fileid="1cXZR_ckHki6nddOmcysCuuJFM--T-Q6L" -curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" > /dev/null -curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=${fileid}" -o ${filename} +curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" >/dev/null +curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=$(awk '/download/ {print $NF}' ./cookie)&id=${fileid}" -o ${filename} rm ./cookie # Unzip labels -unzip -q ${filename} # for coco.zip -# tar -xzf ${filename} # for coco.tar.gz +unzip -q ${filename} # for coco.zip +# tar -xzf ${filename} # for coco.tar.gz rm ${filename} # Download and unzip images diff --git a/train.py b/train.py index 5915848a..1aba8d27 100644 --- a/train.py +++ b/train.py @@ -149,15 +149,15 @@ def train(hyp): elif len(weights) > 0: # darknet format # possible weights are '*.weights', 'yolov3-tiny.conv.15', 'darknet53.conv.74' etc. load_darknet_weights(model, weights) - - if opt.freeze_layers: - output_layer_indices = [idx - 1 for idx, module in enumerate(model.module_list) if isinstance(module, YOLOLayer)] - freeze_layer_indices = [x for x in range(len(model.module_list)) if - (x not in output_layer_indices) and - (x - 1 not in output_layer_indices)] - for idx in freeze_layer_indices: - for parameter in model.module_list[idx].parameters(): - parameter.requires_grad_(False) + + if opt.freeze_layers: + output_layer_indices = [idx - 1 for idx, module in enumerate(model.module_list) if isinstance(module, YOLOLayer)] + freeze_layer_indices = [x for x in range(len(model.module_list)) if + (x not in output_layer_indices) and + (x - 1 not in output_layer_indices)] + for idx in freeze_layer_indices: + for parameter in model.module_list[idx].parameters(): + parameter.requires_grad_(False) # Mixed precision training https://github.com/NVIDIA/apex if mixed_precision: @@ -356,10 +356,10 @@ def train(hyp): if save: with open(results_file, 'r') as f: # create checkpoint ckpt = {'epoch': epoch, - 'best_fitness': best_fitness, - 'training_results': f.read(), - 'model': ema.ema.module.state_dict() if hasattr(model, 'module') else ema.ema.state_dict(), - 'optimizer': None if final_epoch else optimizer.state_dict()} + 'best_fitness': best_fitness, + 'training_results': f.read(), + 'model': ema.ema.module.state_dict() if hasattr(model, 'module') else ema.ema.state_dict(), + 'optimizer': None if final_epoch else optimizer.state_dict()} # Save last, best and delete torch.save(ckpt, last) @@ -409,7 +409,7 @@ if __name__ == '__main__': parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1 or cpu)') parser.add_argument('--adam', action='store_true', help='use adam optimizer') parser.add_argument('--single-cls', action='store_true', help='train as single-class dataset') - parser.add_argument('--freeze-layers', action='store_true', help='Freeze non-output layers') + parser.add_argument('--freeze-layers', action='store_true', help='Freeze non-output layers') opt = parser.parse_args() opt.weights = last if opt.resume and not opt.weights else opt.weights check_git_status() diff --git a/utils/evolve.sh b/utils/evolve.sh index 3ff9c75c..6682d0ac 100644 --- a/utils/evolve.sh +++ b/utils/evolve.sh @@ -12,8 +12,7 @@ while true; do python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 8 --evolve --weights '' --bucket ult/coco/sppa_512 --device $1 --cfg yolov3-sppa.cfg --multi done - # coco epoch times --img-size 416 608 --epochs 27 --batch 16 --accum 4 # 36:34 2080ti # 21:58 V100 -# 63:00 T4 \ No newline at end of file +# 63:00 T4 diff --git a/utils/gcp.sh b/utils/gcp.sh index 12e2370c..0a78cea9 100755 --- a/utils/gcp.sh +++ b/utils/gcp.sh @@ -29,8 +29,7 @@ docker kill $(docker ps -a -q --filter ancestor=$t) sudo -s t=ultralytics/yolov3:evolve # docker kill $(docker ps -a -q --filter ancestor=$t) -for i in 0 1 6 7 -do +for i in 0 1 6 7; do docker pull $t && docker run --gpus all -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i sleep 30 done From 4d49957f5a0a04db1cda1d9306aeb47c48dda0d1 Mon Sep 17 00:00:00 2001 From: e96031413 <30921855+e96031413@users.noreply.github.com> Date: Fri, 11 Sep 2020 03:00:53 +0800 Subject: [PATCH 2481/2595] Update requirements.txt (#1481) * Update requirements.txt I found that if we would like to calculate FLOPS in this project, we must install thop. but there's no thop package inside the requirements.txt https://github.com/ultralytics/yolov3/blob/master/utils/torch_utils.py#L108 * Update requirements.txt Co-authored-by: Glenn Jocher --- requirements.txt | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/requirements.txt b/requirements.txt index 895cf6ca..50efbd10 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,10 +1,11 @@ # pip install -r requirements.txt + +# base ---------------------------------------- Cython matplotlib>=3.2.2 numpy>=1.18.5 opencv-python>=4.1.2 pillow -# pycocotools>=2.0 PyYAML>=5.3 scipy>=1.4.1 tensorboard>=2.2 @@ -12,10 +13,15 @@ torch>=1.6.0 torchvision>=0.7.0 tqdm>=4.41.0 -# Conda commands (in place of pip) --------------------------------------------- -# conda update -yn base -c defaults conda -# conda install -yc anaconda numpy opencv matplotlib tqdm pillow ipython -# conda install -yc conda-forge scikit-image pycocotools tensorboard -# conda install -yc spyder-ide spyder-line-profiler -# conda install -yc pytorch pytorch torchvision -# conda install -yc conda-forge protobuf numpy && pip install onnx==1.6.0 # https://github.com/onnx/onnx#linux-and-macos +# coco ---------------------------------------- +# pycocotools>=2.0 + +# export -------------------------------------- +# packaging # for coremltools +# coremltools==4.0b3 +# onnx>=1.7.0 +# scikit-learn==0.19.2 # for coreml quantization + +# extras -------------------------------------- +# thop # FLOPS computation +# seaborn # plotting From 54722d00bbe6139ed8bf1fa1b43f4a7f88e0b539 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 8 Oct 2020 11:50:52 +0200 Subject: [PATCH 2482/2595] Update stale.yml --- .github/workflows/stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 16b9de6b..f71aead9 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -14,4 +14,4 @@ jobs: stale-pr-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.' days-before-stale: 30 days-before-close: 5 - exempt-issue-label: 'documentation,tutorial' + exempt-issue-labels: 'documentation,tutorial' From cf652962fdd11b3e3ed164fc21ccb065101927aa Mon Sep 17 00:00:00 2001 From: Shiwei Song Date: Mon, 19 Oct 2020 18:17:14 +0800 Subject: [PATCH 2483/2595] fix padding for rectangular inference (#1524) Co-authored-by: swsong --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 959fcb6c..6bb81803 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -634,7 +634,7 @@ def letterbox(img, new_shape=(416, 416), color=(114, 114, 114), auto=True, scale new_unpad = int(round(shape[1] * r)), int(round(shape[0] * r)) dw, dh = new_shape[1] - new_unpad[0], new_shape[0] - new_unpad[1] # wh padding if auto: # minimum rectangle - dw, dh = np.mod(dw, 64), np.mod(dh, 64) # wh padding + dw, dh = np.mod(dw, 32), np.mod(dh, 32) # wh padding elif scaleFill: # stretch dw, dh = 0.0, 0.0 new_unpad = new_shape From ac601cf681d8890392f28b9ec5991cd90ae0d99c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 6 Nov 2020 13:38:13 +0100 Subject: [PATCH 2484/2595] Grid indices overflow bug fix (#1551) --- utils/utils.py | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/utils.py b/utils/utils.py index 2643842d..506d27b8 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -465,6 +465,7 @@ def build_targets(p, targets, model): # Append indices.append((b, a, gj, gi)) # image, anchor, grid indices + indices.append((b, a, gj.clamp_(0, gain[3]), gi.clamp_(0, gain[2]))) # image, anchor, grid indices tbox.append(torch.cat((gxy - gij, gwh), 1)) # box anch.append(anchors[a]) # anchors tcls.append(c) # class From 95460570d9094eae88db0f3e64c62c28305897e3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 6 Nov 2020 19:19:58 +0100 Subject: [PATCH 2485/2595] Grid indices overflow bug fix (#1551) --- utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 506d27b8..5841d142 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -465,7 +465,7 @@ def build_targets(p, targets, model): # Append indices.append((b, a, gj, gi)) # image, anchor, grid indices - indices.append((b, a, gj.clamp_(0, gain[3]), gi.clamp_(0, gain[2]))) # image, anchor, grid indices + indices.append((b, a, gj.clamp_(0, gain[3] - 1), gi.clamp_(0, gain[2] - 1))) # image, anchor, grid indices tbox.append(torch.cat((gxy - gij, gwh), 1)) # box anch.append(anchors[a]) # anchors tcls.append(c) # class From 46cd0d8cc4183806347af09f5df09231ad08b11d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Nov 2020 20:59:57 +0100 Subject: [PATCH 2486/2595] Grid indices overflow bug fix 2 (#1551) --- utils/utils.py | 1 - 1 file changed, 1 deletion(-) diff --git a/utils/utils.py b/utils/utils.py index 5841d142..08ece411 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -464,7 +464,6 @@ def build_targets(p, targets, model): gi, gj = gij.T # grid xy indices # Append - indices.append((b, a, gj, gi)) # image, anchor, grid indices indices.append((b, a, gj.clamp_(0, gain[3] - 1), gi.clamp_(0, gain[2] - 1))) # image, anchor, grid indices tbox.append(torch.cat((gxy - gij, gwh), 1)) # box anch.append(anchors[a]) # anchors From 98068efebc699e7a652fb495f3e7a23bf296affd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 13 Nov 2020 13:28:20 +0100 Subject: [PATCH 2487/2595] Update greetings.yml --- .github/workflows/greetings.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index c502351a..b0f9c58f 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -26,7 +26,7 @@ jobs: Hello @${{ github.actor }}, thank you for your interest in our work! Ultralytics has open-sourced YOLOv5 at https://github.com/ultralytics/yolov5, featuring faster, lighter and more accurate object detection. YOLOv5 is recommended for all new projects. - +

From 76807fae7104768650d380eaaa9dcb472f7c287d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 26 Nov 2020 20:24:00 +0100 Subject: [PATCH 2488/2595] YOLOv5 Forward Compatibility Update (#1569) * YOLOv5 forward compatibility update * add data dir * ci test yolov3 * update build_targets() * update build_targets() * update build_targets() * update yolov3-spp.yaml * add yolov3-tiny.yaml * add yolov3-tiny.yaml * Update yolov3-tiny.yaml * thop bug fix * Detection() device bug fix * Use torchvision.ops.nms() * Remove redundant download mirror * CI tests with yolov3-tiny * Update README.md * Synch train and test iou_thresh * update requirements.txt * Cat apriori autolabels * Confusion matrix * Autosplit * Autosplit * Update README.md * AP no plot * Update caching * Update caching * Caching bug fix * --image-weights bug fix * datasets bug fix * mosaic plots bug fix * plot_study * boxes.max() * boxes.max() * boxes.max() * boxes.max() * boxes.max() * boxes.max() * update * Update README * Update README * Update README.md * Update README.md * results png * Update README * Targets scaling bug fix * update plot_study * update plot_study * update plot_study * update plot_study * Targets scaling bug fix * Finish Readme.md * Finish Readme.md * Finish Readme.md * Update README.md * Creado con Colaboratory --- .../{--bug-report.md => bug-report.md} | 6 +- ...-feature-request.md => feature-request.md} | 2 +- .../{-question.md => question.md} | 0 .github/workflows/ci-testing.yml | 76 + .github/workflows/greetings.yml | 37 +- .github/workflows/rebase.yml | 21 + .github/workflows/stale.yml | 1 + Dockerfile | 62 +- README.md | 219 +-- cfg/cd53s-yolov3.cfg | 1033 ---------- cfg/cd53s.cfg | 1155 ----------- cfg/csresnext50-panet-spp.cfg | 1018 ---------- cfg/yolov3-1cls.cfg | 788 -------- cfg/yolov3-asff.cfg | 804 -------- cfg/yolov3-spp-1cls.cfg | 821 -------- cfg/yolov3-spp-3cls.cfg | 821 -------- cfg/yolov3-spp-matrix.cfg | 1115 ----------- cfg/yolov3-spp-pan-scale.cfg | 938 --------- cfg/yolov3-spp.cfg | 821 -------- cfg/yolov3-spp3.cfg | 870 --------- cfg/yolov3-tiny-1cls.cfg | 182 -- cfg/yolov3-tiny-3cls.cfg | 182 -- cfg/yolov3-tiny.cfg | 182 -- cfg/yolov3-tiny3-1cls.cfg | 227 --- cfg/yolov3-tiny3.cfg | 227 --- cfg/yolov3.cfg | 788 -------- cfg/yolov4-relu.cfg | 1155 ----------- cfg/yolov4-tiny.cfg | 281 --- cfg/yolov4.cfg | 1155 ----------- data/coco.names | 80 - data/coco.yaml | 35 + data/coco1.data | 4 - data/coco1.txt | 1 - data/coco128.yaml | 28 + data/coco16.data | 4 - data/coco16.txt | 16 - data/coco1cls.data | 4 - data/coco1cls.txt | 16 - data/coco2014.data | 4 - data/coco2017.data | 4 - data/coco64.data | 4 - data/coco64.txt | 64 - data/coco_paper.names | 91 - data/get_coco2014.sh | 24 - data/get_coco2017.sh | 24 - data/hyp.finetune.yaml | 38 + data/hyp.scratch.yaml | 33 + data/{samples => images}/bus.jpg | Bin data/{samples => images}/zidane.jpg | Bin data/scripts/get_coco.sh | 24 + data/scripts/get_voc.sh | 137 ++ data/voc.yaml | 21 + detect.py | 162 +- hubconf.py | 105 + models.py | 480 ----- models/__init__.py | 0 models/common.py | 252 +++ models/experimental.py | 152 ++ models/export.py | 94 + models/yolo.py | 287 +++ models/yolov3-spp.yaml | 51 + models/yolov3-tiny.yaml | 41 + models/yolov3.yaml | 51 + requirements.txt | 21 +- test.py | 352 ++-- train.py | 771 ++++---- tutorial.ipynb | 1687 ++++++++++++----- utils/activations.py | 72 + utils/adabound.py | 236 --- utils/autoanchor.py | 152 ++ utils/datasets.py | 696 ++++--- utils/evolve.sh | 18 - utils/gcp.sh | 39 - utils/general.py | 445 +++++ utils/google_app_engine/Dockerfile | 25 + .../additional_requirements.txt | 4 + utils/google_app_engine/app.yaml | 14 + utils/google_utils.py | 124 +- utils/layers.py | 148 -- utils/loss.py | 179 ++ utils/metrics.py | 203 ++ utils/parse_config.py | 71 - utils/plots.py | 379 ++++ utils/torch_utils.py | 218 ++- utils/utils.py | 1080 ----------- weights/download_weights.sh | 10 + weights/download_yolov3_weights.sh | 24 - 87 files changed, 5613 insertions(+), 18673 deletions(-) rename .github/ISSUE_TEMPLATE/{--bug-report.md => bug-report.md} (90%) rename .github/ISSUE_TEMPLATE/{--feature-request.md => feature-request.md} (95%) rename .github/ISSUE_TEMPLATE/{-question.md => question.md} (100%) create mode 100644 .github/workflows/ci-testing.yml create mode 100644 .github/workflows/rebase.yml delete mode 100644 cfg/cd53s-yolov3.cfg delete mode 100644 cfg/cd53s.cfg delete mode 100644 cfg/csresnext50-panet-spp.cfg delete mode 100755 cfg/yolov3-1cls.cfg delete mode 100644 cfg/yolov3-asff.cfg delete mode 100644 cfg/yolov3-spp-1cls.cfg delete mode 100644 cfg/yolov3-spp-3cls.cfg delete mode 100644 cfg/yolov3-spp-matrix.cfg delete mode 100644 cfg/yolov3-spp-pan-scale.cfg delete mode 100644 cfg/yolov3-spp.cfg delete mode 100644 cfg/yolov3-spp3.cfg delete mode 100644 cfg/yolov3-tiny-1cls.cfg delete mode 100644 cfg/yolov3-tiny-3cls.cfg delete mode 100644 cfg/yolov3-tiny.cfg delete mode 100644 cfg/yolov3-tiny3-1cls.cfg delete mode 100644 cfg/yolov3-tiny3.cfg delete mode 100755 cfg/yolov3.cfg delete mode 100644 cfg/yolov4-relu.cfg delete mode 100644 cfg/yolov4-tiny.cfg delete mode 100644 cfg/yolov4.cfg delete mode 100755 data/coco.names create mode 100644 data/coco.yaml delete mode 100644 data/coco1.data delete mode 100644 data/coco1.txt create mode 100644 data/coco128.yaml delete mode 100644 data/coco16.data delete mode 100644 data/coco16.txt delete mode 100644 data/coco1cls.data delete mode 100644 data/coco1cls.txt delete mode 100644 data/coco2014.data delete mode 100644 data/coco2017.data delete mode 100644 data/coco64.data delete mode 100644 data/coco64.txt delete mode 100644 data/coco_paper.names delete mode 100755 data/get_coco2014.sh delete mode 100755 data/get_coco2017.sh create mode 100644 data/hyp.finetune.yaml create mode 100644 data/hyp.scratch.yaml rename data/{samples => images}/bus.jpg (100%) rename data/{samples => images}/zidane.jpg (100%) create mode 100755 data/scripts/get_coco.sh create mode 100644 data/scripts/get_voc.sh create mode 100644 data/voc.yaml create mode 100644 hubconf.py delete mode 100755 models.py create mode 100644 models/__init__.py create mode 100644 models/common.py create mode 100644 models/experimental.py create mode 100644 models/export.py create mode 100644 models/yolo.py create mode 100644 models/yolov3-spp.yaml create mode 100644 models/yolov3-tiny.yaml create mode 100644 models/yolov3.yaml create mode 100644 utils/activations.py delete mode 100644 utils/adabound.py create mode 100644 utils/autoanchor.py delete mode 100644 utils/evolve.sh delete mode 100755 utils/gcp.sh create mode 100755 utils/general.py create mode 100644 utils/google_app_engine/Dockerfile create mode 100644 utils/google_app_engine/additional_requirements.txt create mode 100644 utils/google_app_engine/app.yaml delete mode 100644 utils/layers.py create mode 100644 utils/loss.py create mode 100644 utils/metrics.py delete mode 100644 utils/parse_config.py create mode 100644 utils/plots.py delete mode 100755 utils/utils.py create mode 100755 weights/download_weights.sh delete mode 100644 weights/download_yolov3_weights.sh diff --git a/.github/ISSUE_TEMPLATE/--bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md similarity index 90% rename from .github/ISSUE_TEMPLATE/--bug-report.md rename to .github/ISSUE_TEMPLATE/bug-report.md index 6dc6e264..3f7d83a4 100644 --- a/.github/ISSUE_TEMPLATE/--bug-report.md +++ b/.github/ISSUE_TEMPLATE/bug-report.md @@ -1,5 +1,5 @@ --- -name: "\U0001F41BBug report" +name: "🐛 Bug report" about: Create a report to help us improve title: '' labels: bug @@ -9,8 +9,8 @@ assignees: '' Before submitting a bug report, please be aware that your issue **must be reproducible** with all of the following, otherwise it is non-actionable, and we can not help you: - **Current repo**: run `git fetch && git status -uno` to check and `git pull` to update repo - - **Common dataset**: coco2017.data or coco64.data - - **Common environment**: Colab, Google Cloud, or Docker image. See https://github.com/ultralytics/yolov3#reproduce-our-environment + - **Common dataset**: coco.yaml or coco128.yaml + - **Common environment**: Colab, Google Cloud, or Docker image. See https://github.com/ultralytics/yolov3#environments If this is a custom dataset/training question you **must include** your `train*.jpg`, `test*.jpg` and `results.png` figures, or we can not help you. You can generate these with `utils.plot_results()`. diff --git a/.github/ISSUE_TEMPLATE/--feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md similarity index 95% rename from .github/ISSUE_TEMPLATE/--feature-request.md rename to .github/ISSUE_TEMPLATE/feature-request.md index b16020d2..87db3eac 100644 --- a/.github/ISSUE_TEMPLATE/--feature-request.md +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -1,5 +1,5 @@ --- -name: "\U0001F680Feature request" +name: "🚀 Feature request" about: Suggest an idea for this project title: '' labels: enhancement diff --git a/.github/ISSUE_TEMPLATE/-question.md b/.github/ISSUE_TEMPLATE/question.md similarity index 100% rename from .github/ISSUE_TEMPLATE/-question.md rename to .github/ISSUE_TEMPLATE/question.md diff --git a/.github/workflows/ci-testing.yml b/.github/workflows/ci-testing.yml new file mode 100644 index 00000000..69a5f239 --- /dev/null +++ b/.github/workflows/ci-testing.yml @@ -0,0 +1,76 @@ +name: CI CPU testing + +on: # https://help.github.com/en/actions/reference/events-that-trigger-workflows + push: + pull_request: + schedule: + - cron: "0 0 * * *" + +jobs: + cpu-tests: + + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + python-version: [3.8] + model: ['yolov3-tiny'] # models to test + + # Timeout: https://stackoverflow.com/a/59076067/4521646 + timeout-minutes: 50 + steps: + - uses: actions/checkout@v2 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + + # Note: This uses an internal pip API and may not always work + # https://github.com/actions/cache/blob/master/examples.md#multiple-oss-in-a-workflow + - name: Get pip cache + id: pip-cache + run: | + python -c "from pip._internal.locations import USER_CACHE_DIR; print('::set-output name=dir::' + USER_CACHE_DIR)" + + - name: Cache pip + uses: actions/cache@v1 + with: + path: ${{ steps.pip-cache.outputs.dir }} + key: ${{ runner.os }}-${{ matrix.python-version }}-pip-${{ hashFiles('requirements.txt') }} + restore-keys: | + ${{ runner.os }}-${{ matrix.python-version }}-pip- + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -qr requirements.txt -f https://download.pytorch.org/whl/cpu/torch_stable.html + pip install -q onnx + python --version + pip --version + pip list + shell: bash + + - name: Download data + run: | + # curl -L -o tmp.zip https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip + # unzip -q tmp.zip -d ../ + # rm tmp.zip + + - name: Tests workflow + run: | + # export PYTHONPATH="$PWD" # to run '$ python *.py' files in subdirectories + di=cpu # inference devices # define device + + # train + python train.py --img 256 --batch 8 --weights weights/${{ matrix.model }}.pt --cfg models/${{ matrix.model }}.yaml --epochs 1 --device $di + # detect + python detect.py --weights weights/${{ matrix.model }}.pt --device $di + python detect.py --weights runs/train/exp/weights/last.pt --device $di + # test + python test.py --img 256 --batch 8 --weights weights/${{ matrix.model }}.pt --device $di + python test.py --img 256 --batch 8 --weights runs/train/exp/weights/last.pt --device $di + + python models/yolo.py --cfg models/${{ matrix.model }}.yaml # inspect + python models/export.py --img 256 --batch 1 --weights weights/${{ matrix.model }}.pt # export + shell: bash diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index b0f9c58f..2cbd2080 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -23,20 +23,33 @@ jobs: - Reduce changes to the absolute **minimum** required for your bug fix or feature addition. _"It is not daily increase but daily decrease, hack away the unessential. The closer to the source, the less wastage there is."_ -Bruce Lee issue-message: | - Hello @${{ github.actor }}, thank you for your interest in our work! Ultralytics has open-sourced YOLOv5 at https://github.com/ultralytics/yolov5, featuring faster, lighter and more accurate object detection. YOLOv5 is recommended for all new projects. + Hello @${{ github.actor }}, thank you for your interest in 🚀 YOLOv3! Please visit our ⭐️ [Tutorials](https://github.com/ultralytics/yolov3/wiki#tutorials) to get started, where you can find quickstart guides for simple tasks like [Custom Data Training](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) all the way to advanced concepts like [Hyperparameter Evolution](https://github.com/ultralytics/yolov5/issues/607). - - -

- + If this is a 🐛 Bug Report, please provide screenshots and **minimum viable code to reproduce your issue**, otherwise we can not help you. - To continue with this repo, please visit our [Custom Training Tutorial](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) to get started, and see our [Google Colab Notebook](https://github.com/ultralytics/yolov3/blob/master/tutorial.ipynb), [Docker Image](https://hub.docker.com/r/ultralytics/yolov3), and [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) for example environments. + If this is a custom training ❓ Question, please provide as much information as possible, including dataset images, training logs, screenshots, and a public link to online [W&B logging](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data#visualize) if available. - If this is a bug report, please provide screenshots and **minimum viable code to reproduce your issue**, otherwise we can not help you. + For business inquiries or professional support requests please visit https://www.ultralytics.com or email Glenn Jocher at glenn.jocher@ultralytics.com. - If this is a custom model or data training question, please note that Ultralytics does **not** provide free personal support. As a leader in vision ML and AI, we do offer professional consulting, from simple expert advice up to delivery of fully customized, end-to-end production solutions for our clients, such as: - - **Cloud-based AI** systems operating on **hundreds of HD video streams in realtime.** - - **Edge AI** integrated into custom iOS and Android apps for realtime **30 FPS video inference.** - - **Custom data training**, hyperparameter evolution, and model exportation to any destination. + ## Requirements - For more information please visit https://www.ultralytics.com. + Python 3.8 or later with all [requirements.txt](https://github.com/ultralytics/yolov3/blob/master/requirements.txt) dependencies installed, including `torch>=1.7`. To install run: + ```bash + $ pip install -r requirements.txt + ``` + + ## Environments + + YOLOv3 may be run in any of the following up-to-date verified environments (with all dependencies including [CUDA](https://developer.nvidia.com/cuda)/[CUDNN](https://developer.nvidia.com/cudnn), [Python](https://www.python.org/) and [PyTorch](https://pytorch.org/) preinstalled): + + - **Google Colab Notebook** with free GPU: Open In Colab + - **Kaggle Notebook** with free GPU: [https://www.kaggle.com/ultralytics/yolov3](https://www.kaggle.com/ultralytics/yolov3) + - **Google Cloud** Deep Learning VM. See [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) + - **Docker Image** https://hub.docker.com/r/ultralytics/yolov3. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) ![Docker Pulls](https://img.shields.io/docker/pulls/ultralytics/yolov3?logo=docker) + + ## Status + + ![CI CPU testing](https://github.com/ultralytics/yolov3/workflows/CI%20CPU%20testing/badge.svg) + + If this badge is green, all [YOLOv3 GitHub Actions](https://github.com/ultralytics/yolov3/actions) Continuous Integration (CI) tests are currently passing. CI tests verify correct operation of YOLOv3 training ([train.py](https://github.com/ultralytics/yolov3/blob/master/train.py)), testing ([test.py](https://github.com/ultralytics/yolov3/blob/master/test.py)), inference ([detect.py](https://github.com/ultralytics/yolov3/blob/master/detect.py)) and export ([export.py](https://github.com/ultralytics/yolov3/blob/master/models/export.py)) on MacOS, Windows, and Ubuntu every 24 hours and on every commit. + diff --git a/.github/workflows/rebase.yml b/.github/workflows/rebase.yml new file mode 100644 index 00000000..e86c5774 --- /dev/null +++ b/.github/workflows/rebase.yml @@ -0,0 +1,21 @@ +name: Automatic Rebase +# https://github.com/marketplace/actions/automatic-rebase + +on: + issue_comment: + types: [created] + +jobs: + rebase: + name: Rebase + if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/rebase') + runs-on: ubuntu-latest + steps: + - name: Checkout the latest code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Automatic Rebase + uses: cirrus-actions/rebase@1.3.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index f71aead9..d4126b8b 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -15,3 +15,4 @@ jobs: days-before-stale: 30 days-before-close: 5 exempt-issue-labels: 'documentation,tutorial' + operations-per-run: 100 # The maximum number of operations per run, used to control rate limiting. diff --git a/Dockerfile b/Dockerfile index f21cf49e..e514893d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,32 +1,11 @@ # Start FROM Nvidia PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorch -FROM nvcr.io/nvidia/pytorch:20.03-py3 +FROM nvcr.io/nvidia/pytorch:20.10-py3 -# Install dependencies (pip or conda) -RUN pip install -U gsutil -# RUN pip install -U -r requirements.txt -# RUN conda update -n base -c defaults conda -# RUN conda install -y -c anaconda future numpy opencv matplotlib tqdm pillow -# RUN conda install -y -c conda-forge scikit-image tensorboard pycocotools - -## Install OpenCV with Gstreamer support -#WORKDIR /usr/src -#RUN pip uninstall -y opencv-python -#RUN apt-get update -#RUN apt-get install -y gstreamer1.0-tools gstreamer1.0-python3-dbg-plugin-loader libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev -#RUN git clone https://github.com/opencv/opencv.git && cd opencv && git checkout 4.1.1 && mkdir build -#RUN git clone https://github.com/opencv/opencv_contrib.git && cd opencv_contrib && git checkout 4.1.1 -#RUN cd opencv/build && cmake ../ \ -# -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ -# -D BUILD_OPENCV_PYTHON3=ON \ -# -D PYTHON3_EXECUTABLE=/opt/conda/bin/python \ -# -D PYTHON3_INCLUDE_PATH=/opt/conda/include/python3.6m \ -# -D PYTHON3_LIBRARIES=/opt/conda/lib/python3.6/site-packages \ -# -D WITH_GSTREAMER=ON \ -# -D WITH_FFMPEG=OFF \ -# && make && make install && ldconfig -#RUN cd /usr/local/lib/python3.6/site-packages/cv2/python-3.6/ && mv cv2.cpython-36m-x86_64-linux-gnu.so cv2.so -#RUN cd /opt/conda/lib/python3.6/site-packages/ && ln -s /usr/local/lib/python3.6/site-packages/cv2/python-3.6/cv2.so cv2.so -#RUN python3 -c "import cv2; print(cv2.getBuildInformation())" +# Install dependencies +RUN pip install --upgrade pip +# COPY requirements.txt . +# RUN pip install -r requirements.txt +RUN pip install gsutil # Create working directory RUN mkdir -p /usr/src/app @@ -38,25 +17,36 @@ COPY . /usr/src/app # Copy weights #RUN python3 -c "from models import *; \ #attempt_download('weights/yolov3.pt'); \ -#attempt_download('weights/yolov3-spp.pt')" +#attempt_download('weights/yolov3-spp.pt'); \ +#attempt_download('weights/yolov3-tiny.pt')" # --------------------------------------------------- Extras Below --------------------------------------------------- # Build and Push -# t=ultralytics/yolov3:v0 && sudo docker build -t $t . && sudo docker push $t +# t=ultralytics/yolov3:latest && sudo docker build -t $t . && sudo docker push $t +# for v in {300..303}; do t=ultralytics/coco:v$v && sudo docker build -t $t . && sudo docker push $t; done -# Run -# t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host $t bash +# Pull and Run +# t=ultralytics/yolov3:latest && sudo docker pull $t && sudo docker run -it --ipc=host $t # Pull and Run with local directory access -# t=ultralytics/yolov3:v0 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash +# t=ultralytics/yolov3:latest && sudo docker pull $t && sudo docker run -it --ipc=host --gpus all -v "$(pwd)"/coco:/usr/src/coco $t # Kill all -# sudo docker kill "$(sudo docker ps -q)" +# sudo docker kill $(sudo docker ps -q) # Kill all image-based -# sudo docker kill $(sudo docker ps -a -q --filter ancestor=ultralytics/yolov3:v0) +# sudo docker kill $(sudo docker ps -a -q --filter ancestor=ultralytics/yolov3:latest) -# Run bash for loop -# sudo docker run --gpus all --ipc=host ultralytics/yolov3:v0 while true; do python3 train.py --evolve; done +# Bash into running container +# sudo docker container exec -it ba65811811ab bash + +# Bash into stopped container +# sudo docker commit 092b16b25c5b usr/resume && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco --entrypoint=sh usr/resume + +# Send weights to GCP +# python -c "from utils.general import *; strip_optimizer('runs/train/exp0_*/weights/best.pt', 'tmp.pt')" && gsutil cp tmp.pt gs://*.pt + +# Clean up +# docker system prune -a --volumes diff --git a/README.md b/README.md index 4051eb8a..e8e05e11 100755 --- a/README.md +++ b/README.md @@ -1,13 +1,39 @@ - +   -This repo contains Ultralytics inference and training code for YOLOv3 in PyTorch. The code works on Linux, MacOS and Windows. Credit to Joseph Redmon for YOLO https://pjreddie.com/darknet/yolo/. +![CI CPU testing](https://github.com/ultralytics/yolov3/workflows/CI%20CPU%20testing/badge.svg) +BRANCH NOTICE: The [ultralytics/yolov3](https://github.com/ultralytics/yolov3) repository is now divided into two branches: +* [Master branch](https://github.com/ultralytics/yolov3/tree/master): Forward-compatible with all [YOLOv5](https://github.com/ultralytics/yolov5) models and methods (recommended). +```bash +$ git clone https://github.com/ultralytics/yolov3 # master branch (default) +``` +* [Archive branch](https://github.com/ultralytics/yolov3/tree/archive): Backwards-compatible with original [darknet](https://pjreddie.com/darknet/) *.cfg models (not recommended). +```bash +$ git clone -b archive https://github.com/ultralytics/yolov3 # archive branch +``` + +** GPU Speed measures end-to-end time per image averaged over 5000 COCO val2017 images using a V100 GPU with batch size 32, and includes image preprocessing, PyTorch FP16 inference, postprocessing and NMS. EfficientDet data from [google/automl](https://github.com/google/automl) at batch size 8. + + +## Pretrained Checkpoints + +| Model | APval | APtest | AP50 | SpeedGPU | FPSGPU || params | FLOPS | +|---------- |------ |------ |------ | -------- | ------| ------ |------ | :------: | +| [YOLOv3](https://github.com/ultralytics/yolov3/releases) | 43.3 | 43.3 | 63.0 | 4.8ms | 208 || 61.9M | 156.4B +| [YOLOv3-SPP](https://github.com/ultralytics/yolov3/releases) | **44.3** | **44.3** | **64.6** | 4.9ms | 204 || 63.0M | 157.0B +| [YOLOv3-tiny](https://github.com/ultralytics/yolov3/releases) | 17.6 | 34.9 | 34.9 | **1.7ms** | **588** || 8.9M | 13.3B + +** APtest denotes COCO [test-dev2017](http://cocodataset.org/#upload) server results, all other AP results denote val2017 accuracy. +** All AP numbers are for single-model single-scale without ensemble or TTA. **Reproduce mAP** by `python test.py --data coco.yaml --img 640 --conf 0.001 --iou 0.65` +** SpeedGPU averaged over 5000 COCO val2017 images using a GCP [n1-standard-16](https://cloud.google.com/compute/docs/machine-types#n1_standard_machine_types) V100 instance, and includes image preprocessing, FP16 inference, postprocessing and NMS. NMS is 1-2ms/img. **Reproduce speed** by `python test.py --data coco.yaml --img 640 --conf 0.25 --iou 0.45` +** All checkpoints are trained to 300 epochs with default settings and hyperparameters (no autoaugmentation). +** Test Time Augmentation ([TTA](https://github.com/ultralytics/yolov5/issues/303)) runs at 3 image sizes. **Reproduce TTA** by `python test.py --data coco.yaml --img 832 --iou 0.65 --augment` ## Requirements -Python 3.8 or later with all [requirements.txt](https://github.com/ultralytics/yolov3/blob/master/requirements.txt) dependencies installed, including `torch>=1.6`. To install run: +Python 3.8 or later with all [requirements.txt](https://github.com/ultralytics/yolov3/blob/master/requirements.txt) dependencies installed, including `torch>=1.7`. To install run: ```bash $ pip install -r requirements.txt ``` @@ -15,149 +41,90 @@ $ pip install -r requirements.txt ## Tutorials -* [Notebook](https://github.com/ultralytics/yolov3/blob/master/tutorial.ipynb) Open In Colab -* [Train Custom Data](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) << highly recommended -* [GCP Quickstart](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) -* [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) ![Docker Pulls](https://img.shields.io/docker/pulls/ultralytics/yolov3?logo=docker) -* [A TensorRT Implementation of YOLOv3 and YOLOv4](https://github.com/wang-xinyu/tensorrtx/tree/master/yolov3-spp) +* [Train Custom Data](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data)  🚀 RECOMMENDED +* [Weights & Biases Logging](https://github.com/ultralytics/yolov5/issues/1289)  🌟 NEW +* [Multi-GPU Training](https://github.com/ultralytics/yolov5/issues/475) +* [PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36)  ⭐ NEW +* [ONNX and TorchScript Export](https://github.com/ultralytics/yolov5/issues/251) +* [Test-Time Augmentation (TTA)](https://github.com/ultralytics/yolov5/issues/303) +* [Model Ensembling](https://github.com/ultralytics/yolov5/issues/318) +* [Model Pruning/Sparsity](https://github.com/ultralytics/yolov5/issues/304) +* [Hyperparameter Evolution](https://github.com/ultralytics/yolov5/issues/607) +* [Transfer Learning with Frozen Layers](https://github.com/ultralytics/yolov5/issues/1314)  ⭐ NEW +* [TensorRT Deployment](https://github.com/wang-xinyu/tensorrtx) -## Training +## Environments -**Start Training:** `python3 train.py` to begin training after downloading COCO data with `data/get_coco2017.sh`. Each epoch trains on 117,263 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. +YOLOv3 may be run in any of the following up-to-date verified environments (with all dependencies including [CUDA](https://developer.nvidia.com/cuda)/[CUDNN](https://developer.nvidia.com/cudnn), [Python](https://www.python.org/) and [PyTorch](https://pytorch.org/) preinstalled): -**Resume Training:** `python3 train.py --resume` to resume training from `weights/last.pt`. - -**Plot Training:** `from utils import utils; utils.plot_results()` - - - - -### Image Augmentation - -`datasets.py` applies OpenCV-powered (https://opencv.org/) augmentation to the input image. We use a **mosaic dataloader** to increase image variability during training. - - - - -### Speed - -https://cloud.google.com/deep-learning-vm/ -**Machine type:** preemptible [n1-standard-8](https://cloud.google.com/compute/docs/machine-types) (8 vCPUs, 30 GB memory) -**CPU platform:** Intel Skylake -**GPUs:** K80 ($0.14/hr), T4 ($0.11/hr), V100 ($0.74/hr) CUDA with [Nvidia Apex](https://github.com/NVIDIA/apex) FP16/32 -**HDD:** 300 GB SSD -**Dataset:** COCO train 2014 (117,263 images) -**Model:** `yolov3-spp.cfg` -**Command:** `python3 train.py --data coco2017.data --img 416 --batch 32` - -GPU | n | `--batch-size` | img/s | epoch
time | epoch
cost ---- |--- |--- |--- |--- |--- -K80 |1| 32 x 2 | 11 | 175 min | $0.41 -T4 |1
2| 32 x 2
64 x 1 | 41
61 | 48 min
32 min | $0.09
$0.11 -V100 |1
2| 32 x 2
64 x 1 | 122
**178** | 16 min
**11 min** | **$0.21**
$0.28 -2080Ti |1
2| 32 x 2
64 x 1 | 81
140 | 24 min
14 min | -
- +- **Google Colab Notebook** with free GPU: Open In Colab +- **Kaggle Notebook** with free GPU: [https://www.kaggle.com/ultralytics/yolov3](https://www.kaggle.com/ultralytics/yolov3) +- **Google Cloud** Deep Learning VM. See [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) +- **Docker Image** https://hub.docker.com/r/ultralytics/yolov3. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) ![Docker Pulls](https://img.shields.io/docker/pulls/ultralytics/yolov3?logo=docker) ## Inference +detect.py runs inference on a variety of sources, downloading models automatically from the [latest YOLOv3 release](https://github.com/ultralytics/yolov3/releases) and saving results to `runs/detect`. ```bash -python3 detect.py --source ... +$ python detect.py --source 0 # webcam + file.jpg # image + file.mp4 # video + path/ # directory + path/*.jpg # glob + rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa # rtsp stream + rtmp://192.168.1.105/live/test # rtmp stream + http://112.50.243.8/PLTV/88888888/224/3221225900/1.m3u8 # http stream ``` -- Image: `--source file.jpg` -- Video: `--source file.mp4` -- Directory: `--source dir/` -- Webcam: `--source 0` -- RTSP stream: `--source rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa` -- HTTP stream: `--source http://112.50.243.8/PLTV/88888888/224/3221225900/1.m3u8` - -**YOLOv3:** `python3 detect.py --cfg cfg/yolov3.cfg --weights yolov3.pt` - - -**YOLOv3-tiny:** `python3 detect.py --cfg cfg/yolov3-tiny.cfg --weights yolov3-tiny.pt` - - -**YOLOv3-SPP:** `python3 detect.py --cfg cfg/yolov3-spp.cfg --weights yolov3-spp.pt` - - - -## Pretrained Checkpoints - -Download from: [https://drive.google.com/open?id=1LezFG5g3BCW6iYaV89B2i64cqEUZD7e0](https://drive.google.com/open?id=1LezFG5g3BCW6iYaV89B2i64cqEUZD7e0) - - -## Darknet Conversion - +To run inference on example images in `data/images`: ```bash -$ git clone https://github.com/ultralytics/yolov3 && cd yolov3 +$ python detect.py --source data/images --weights yolov3.pt --conf 0.25 -# convert darknet cfg/weights to pytorch model -$ python3 -c "from models import *; convert('cfg/yolov3-spp.cfg', 'weights/yolov3-spp.weights')" -Success: converted 'weights/yolov3-spp.weights' to 'weights/yolov3-spp.pt' +Namespace(agnostic_nms=False, augment=False, classes=None, conf_thres=0.25, device='', exist_ok=False, img_size=640, iou_thres=0.45, name='exp', project='runs/detect', save_conf=False, save_txt=False, source='data/images/', update=False, view_img=False, weights=['yolov3.pt']) +Using torch 1.7.0+cu101 CUDA:0 (Tesla V100-SXM2-16GB, 16130MB) -# convert cfg/pytorch model to darknet weights -$ python3 -c "from models import *; convert('cfg/yolov3-spp.cfg', 'weights/yolov3-spp.pt')" -Success: converted 'weights/yolov3-spp.pt' to 'weights/yolov3-spp.weights' +Downloading https://github.com/ultralytics/yolov3/releases/download/v1.0/yolov3.pt to yolov3.pt... 100% 118M/118M [00:05<00:00, 24.2MB/s] + +Fusing layers... +Model Summary: 261 layers, 61922845 parameters, 0 gradients +image 1/2 /content/yolov3/data/images/bus.jpg: 640x480 4 persons, 1 buss, Done. (0.014s) +image 2/2 /content/yolov3/data/images/zidane.jpg: 384x640 2 persons, 3 ties, Done. (0.014s) +Results saved to runs/detect/exp +Done. (0.133s) +``` + + +### PyTorch Hub + +To run **batched inference** with YOLO3 and [PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36): +```python +import torch +from PIL import Image + +# Model +model = torch.hub.load('ultralytics/yolov3', 'yolov3', pretrained=True).autoshape() # for PIL/cv2/np inputs and NMS + +# Images +img1 = Image.open('zidane.jpg') +img2 = Image.open('bus.jpg') +imgs = [img1, img2] # batched list of images + +# Inference +prediction = model(imgs, size=640) # includes NMS ``` -## mAP - - |Size |COCO mAP
@0.5...0.95 |COCO mAP
@0.5 ---- | --- | --- | --- -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |320 |14.0
28.7
30.5
**37.7** |29.1
51.8
52.3
**56.8** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |416 |16.0
31.2
33.9
**41.2** |33.0
55.4
56.9
**60.6** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |512 |16.6
32.7
35.6
**42.6** |34.9
57.7
59.5
**62.4** -YOLOv3-tiny
YOLOv3
YOLOv3-SPP
**[YOLOv3-SPP-ultralytics](https://drive.google.com/open?id=1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4)** |608 |16.6
33.1
37.0
**43.1** |35.4
58.2
60.7
**62.8** - -- mAP@0.5 run at `--iou-thr 0.5`, mAP@0.5...0.95 run at `--iou-thr 0.7` -- Darknet results: https://arxiv.org/abs/1804.02767 +## Training +Download [COCO](https://github.com/ultralytics/yolov3/blob/master/data/scripts/get_coco.sh) and run command below. Training times for YOLOv3/YOLOv3-SPP/YOLOv3-tiny are 6/6/2 days on a single V100 (multi-GPU times faster). Use the largest `--batch-size` your GPU allows (batch sizes shown for 16 GB devices). ```bash -$ python3 test.py --cfg yolov3-spp.cfg --weights yolov3-spp-ultralytics.pt --img 640 --augment - -Namespace(augment=True, batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='coco2014.data', device='', img_size=640, iou_thres=0.6, save_json=True, single_cls=False, task='test', weights='weight -Using CUDA device0 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', total_memory=16130MB) - - Class Images Targets P R mAP@0.5 F1: 100%|█████████| 313/313 [03:00<00:00, 1.74it/s] - all 5e+03 3.51e+04 0.375 0.743 0.64 0.492 - - Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.456 - Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.647 - Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.496 - Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.263 - Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.501 - Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.596 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.361 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.597 - Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.666 - Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.492 - Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.719 - Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.810 - -Speed: 17.5/2.3/19.9 ms inference/NMS/total per 640x640 image at batch-size 16 +$ python train.py --data coco.yaml --cfg yolov3.yaml --weights '' --batch-size 24 + yolov3-spp.yaml 24 + yolov3-tiny.yaml 64 ``` - - - -## Reproduce Our Results - -Run commands below. Training takes about one week on a 2080Ti per model. -```bash -$ python train.py --data coco2014.data --weights '' --batch-size 16 --cfg yolov3-spp.cfg -$ python train.py --data coco2014.data --weights '' --batch-size 32 --cfg yolov3-tiny.cfg -``` - - - -## Reproduce Our Environment - -To access an up-to-date working environment (with all dependencies including CUDA/CUDNN, Python and PyTorch preinstalled), consider a: - -- **GCP** Deep Learning VM with $300 free credit offer: See our [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) -- **Google Colab Notebook** with 12 hours of free GPU time. Open In Colab -- **Docker Image** https://hub.docker.com/r/ultralytics/yolov3. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) ![Docker Pulls](https://img.shields.io/docker/pulls/ultralytics/yolov3?logo=docker) + ## Citation diff --git a/cfg/cd53s-yolov3.cfg b/cfg/cd53s-yolov3.cfg deleted file mode 100644 index 431a2a08..00000000 --- a/cfg/cd53s-yolov3.cfg +++ /dev/null @@ -1,1033 +0,0 @@ -[net] -# Testing -#batch=1 -#subdivisions=1 -# Training -batch=64 -subdivisions=8 -width=512 -height=512 -channels=3 -momentum=0.949 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.00261 -burn_in=1000 -max_batches = 500500 -policy=steps -steps=400000,450000 -scales=.1,.1 - -#cutmix=1 -mosaic=1 - -#23:104x104 54:52x52 85:26x26 104:13x13 for 416 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=2 -pad=1 -activation=leaky - -#[convolutional] -#batch_normalize=1 -#filters=64 -#size=1 -#stride=1 -#pad=1 -#activation=leaky - -#[route] -#layers = -2 - -#[convolutional] -#batch_normalize=1 -#filters=64 -#size=1 -#stride=1 -#pad=1 -#activation=leaky - -[convolutional] -batch_normalize=1 -filters=32 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -#[convolutional] -#batch_normalize=1 -#filters=64 -#size=1 -#stride=1 -#pad=1 -#activation=leaky - -#[route] -#layers = -1,-7 - -#[convolutional] -#batch_normalize=1 -#filters=64 -#size=1 -#stride=1 -#pad=1 -#activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -2 - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1,-10 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -2 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1,-28 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -2 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1,-28 - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -2 - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1,-16 - -[convolutional] -batch_normalize=1 -filters=1024 -size=1 -stride=1 -pad=1 -activation=leaky - -########################## - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -### SPP ### -[maxpool] -stride=1 -size=5 - -[route] -layers=-2 - -[maxpool] -stride=1 -size=9 - -[route] -layers=-4 - -[maxpool] -stride=1 -size=13 - -[route] -layers=-1,-3,-5,-6 -### End SPP ### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 6,7,8 -anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 -scale_x_y = 1.05 -iou_thresh=0.213 -cls_normalizer=1.0 -iou_normalizer=0.07 -iou_loss=ciou -nms_kind=greedynms -beta_nms=0.6 - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 79 - - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 3,4,5 -anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 -scale_x_y = 1.1 -iou_thresh=0.213 -cls_normalizer=1.0 -iou_normalizer=0.07 -iou_loss=ciou -nms_kind=greedynms -beta_nms=0.6 - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 48 - - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 0,1,2 -anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 -scale_x_y = 1.2 -iou_thresh=0.213 -cls_normalizer=1.0 -iou_normalizer=0.07 -iou_loss=ciou -nms_kind=greedynms -beta_nms=0.6 diff --git a/cfg/cd53s.cfg b/cfg/cd53s.cfg deleted file mode 100644 index 221b13bb..00000000 --- a/cfg/cd53s.cfg +++ /dev/null @@ -1,1155 +0,0 @@ -[net] -# Testing -#batch=1 -#subdivisions=1 -# Training -batch=64 -subdivisions=8 -width=512 -height=512 -channels=3 -momentum=0.949 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.00261 -burn_in=1000 -max_batches = 500500 -policy=steps -steps=400000,450000 -scales=.1,.1 - -#cutmix=1 -mosaic=1 - -#23:104x104 54:52x52 85:26x26 104:13x13 for 416 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=2 -pad=1 -activation=leaky - -#[convolutional] -#batch_normalize=1 -#filters=64 -#size=1 -#stride=1 -#pad=1 -#activation=leaky - -#[route] -#layers = -2 - -#[convolutional] -#batch_normalize=1 -#filters=64 -#size=1 -#stride=1 -#pad=1 -#activation=leaky - -[convolutional] -batch_normalize=1 -filters=32 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -#[convolutional] -#batch_normalize=1 -#filters=64 -#size=1 -#stride=1 -#pad=1 -#activation=leaky - -#[route] -#layers = -1,-7 - -#[convolutional] -#batch_normalize=1 -#filters=64 -#size=1 -#stride=1 -#pad=1 -#activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -2 - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1,-10 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -2 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1,-28 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -2 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1,-28 - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -2 - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1,-16 - -[convolutional] -batch_normalize=1 -filters=1024 -size=1 -stride=1 -pad=1 -activation=leaky - -########################## - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -### SPP ### -[maxpool] -stride=1 -size=5 - -[route] -layers=-2 - -[maxpool] -stride=1 -size=9 - -[route] -layers=-4 - -[maxpool] -stride=1 -size=13 - -[route] -layers=-1,-3,-5,-6 -### End SPP ### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = 79 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1, -3 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = 48 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1, -3 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -########################## - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 0,1,2 -anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 -scale_x_y = 1.05 -iou_thresh=0.213 -cls_normalizer=1.0 -iou_normalizer=0.07 -iou_loss=ciou -nms_kind=greedynms -beta_nms=0.6 - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -size=3 -stride=2 -pad=1 -filters=256 -activation=leaky - -[route] -layers = -1, -16 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 3,4,5 -anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 -scale_x_y = 1.05 -iou_thresh=0.213 -cls_normalizer=1.0 -iou_normalizer=0.07 -iou_loss=ciou -nms_kind=greedynms -beta_nms=0.6 - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -size=3 -stride=2 -pad=1 -filters=512 -activation=leaky - -[route] -layers = -1, -37 - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 6,7,8 -anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 -scale_x_y = 1.05 -iou_thresh=0.213 -cls_normalizer=1.0 -iou_normalizer=0.07 -iou_loss=ciou -nms_kind=greedynms -beta_nms=0.6 diff --git a/cfg/csresnext50-panet-spp.cfg b/cfg/csresnext50-panet-spp.cfg deleted file mode 100644 index 4cff3c37..00000000 --- a/cfg/csresnext50-panet-spp.cfg +++ /dev/null @@ -1,1018 +0,0 @@ -[net] -# Testing -#batch=1 -#subdivisions=1 -# Training -batch=64 -subdivisions=16 -width=416 -height=416 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=1000 -max_batches = 500500 -policy=steps -steps=400000,450000 -scales=.1,.1 - -#19:104x104 38:52x52 65:26x26 80:13x13 for 416 - -[convolutional] -batch_normalize=1 -filters=64 -size=7 -stride=2 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -2 - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -# 1-1 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -groups=32 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=linear - -[shortcut] -from=-4 -activation=leaky - -# 1-2 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -groups=32 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=linear - -[shortcut] -from=-4 -activation=leaky - -# 1-3 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -groups=32 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=linear - -[shortcut] -from=-4 -activation=leaky - -# 1-T - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1,-16 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -groups=32 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=linear - -[route] -layers = -2 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=linear - -# 2-1 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -groups=32 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=linear - -[shortcut] -from=-4 -activation=leaky - -# 2-2 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -groups=32 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=linear - -[shortcut] -from=-4 -activation=leaky - -# 2-3 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -groups=32 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=linear - -[shortcut] -from=-4 -activation=leaky - -# 2-T - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1,-16 - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -groups=32 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=linear - -[route] -layers = -2 - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=linear - -# 3-1 - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -groups=32 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=linear - -[shortcut] -from=-4 -activation=leaky - -# 3-2 - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -groups=32 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=linear - -[shortcut] -from=-4 -activation=leaky - -# 3-3 - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -groups=32 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=linear - -[shortcut] -from=-4 -activation=leaky - -# 3-4 - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -groups=32 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=linear - -[shortcut] -from=-4 -activation=leaky - -# 3-5 - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -groups=32 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=linear - -[shortcut] -from=-4 -activation=leaky - -# 3-T - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1,-24 - -[convolutional] -batch_normalize=1 -filters=1024 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -groups=32 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -2 - -[convolutional] -batch_normalize=1 -filters=1024 -size=1 -stride=1 -pad=1 -activation=leaky - -# 4-1 - -[convolutional] -batch_normalize=1 -filters=1024 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -groups=32 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=1 -stride=1 -pad=1 -activation=linear - -[shortcut] -from=-4 -activation=leaky - -# 4-2 - -[convolutional] -batch_normalize=1 -filters=1024 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -groups=32 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=1 -stride=1 -pad=1 -activation=linear - -[shortcut] -from=-4 -activation=leaky - -# 4-T - -[convolutional] -batch_normalize=1 -filters=1024 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1,-12 - -[convolutional] -batch_normalize=1 -filters=2048 -size=1 -stride=1 -pad=1 -activation=leaky - -########################## - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -### SPP ### -[maxpool] -stride=1 -size=5 - -[route] -layers=-2 - -[maxpool] -stride=1 -size=9 - -[route] -layers=-4 - -[maxpool] -stride=1 -size=13 - -[route] -layers=-1,-3,-5,-6 -### End SPP ### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = 65 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1, -3 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = 38 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1, -3 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -########################## - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 0,1,2 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -size=3 -stride=2 -pad=1 -filters=256 -activation=leaky - -[route] -layers = -1, -16 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 3,4,5 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -size=3 -stride=2 -pad=1 -filters=512 -activation=leaky - -[route] -layers = -1, -37 - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 6,7,8 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 diff --git a/cfg/yolov3-1cls.cfg b/cfg/yolov3-1cls.cfg deleted file mode 100755 index 00bad5d0..00000000 --- a/cfg/yolov3-1cls.cfg +++ /dev/null @@ -1,788 +0,0 @@ -[net] -# Testing -#batch=1 -#subdivisions=1 -# Training -batch=16 -subdivisions=1 -width=416 -height=416 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=1000 -max_batches = 500200 -policy=steps -steps=400000,450000 -scales=.1,.1 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=32 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -###################### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=18 -activation=linear - - -[yolo] -mask = 6,7,8 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=1 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 61 - - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=18 -activation=linear - - -[yolo] -mask = 3,4,5 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=1 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 36 - - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=18 -activation=linear - - -[yolo] -mask = 0,1,2 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=1 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 diff --git a/cfg/yolov3-asff.cfg b/cfg/yolov3-asff.cfg deleted file mode 100644 index 343e19fa..00000000 --- a/cfg/yolov3-asff.cfg +++ /dev/null @@ -1,804 +0,0 @@ -# Generated by Glenn Jocher (glenn.jocher@ultralytics.com) for https://github.com/ultralytics/yolov3 -# def kmean_anchors(path='../coco/train2017.txt', n=12, img_size=(320, 640)): # from utils.utils import *; kmean_anchors() -# Evolving anchors: 100%|██████████| 1000/1000 [41:15<00:00, 2.48s/it] -# 0.20 iou_thr: 0.992 best possible recall, 4.25 anchors > thr -# kmeans anchors (n=12, img_size=(320, 640), IoU=0.005/0.184/0.634-min/mean/best): 6,9, 15,16, 17,35, 37,26, 36,67, 63,42, 57,100, 121,81, 112,169, 241,158, 195,310, 426,359 - -[net] -# Testing -# batch=1 -# subdivisions=1 -# Training -batch=64 -subdivisions=16 -width=608 -height=608 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=1000 -max_batches = 500200 -policy=steps -steps=400000,450000 -scales=.1,.1 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=32 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -###################### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -# SPP -------------------------------------------------------------------------- -[maxpool] -stride=1 -size=5 - -[route] -layers=-2 - -[maxpool] -stride=1 -size=9 - -[route] -layers=-4 - -[maxpool] -stride=1 -size=13 - -[route] -layers=-1,-3,-5,-6 -# SPP -------------------------------------------------------------------------- - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=258 -activation=linear - -# YOLO ------------------------------------------------------------------------- - -[route] -layers = -3 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 61 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=258 -activation=linear - -# YOLO ------------------------------------------------------------------------- - -[route] -layers = -3 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 36 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=258 -activation=linear - -[yolo] -from=88,99,110 -mask = 6,7,8 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=80 -num=9 - -[yolo] -from=88,99,110 -mask = 3,4,5 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=80 -num=9 - -[yolo] -from=88,99,110 -mask = 0,1,2 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=80 -num=9 \ No newline at end of file diff --git a/cfg/yolov3-spp-1cls.cfg b/cfg/yolov3-spp-1cls.cfg deleted file mode 100644 index 88edcffb..00000000 --- a/cfg/yolov3-spp-1cls.cfg +++ /dev/null @@ -1,821 +0,0 @@ -[net] -# Testing -# batch=1 -# subdivisions=1 -# Training -batch=64 -subdivisions=16 -width=608 -height=608 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=100 -max_batches = 5000 -policy=steps -steps=4000,4500 -scales=.1,.1 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=32 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -###################### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -### SPP ### -[maxpool] -stride=1 -size=5 - -[route] -layers=-2 - -[maxpool] -stride=1 -size=9 - -[route] -layers=-4 - -[maxpool] -stride=1 -size=13 - -[route] -layers=-1,-3,-5,-6 - -### End SPP ### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=18 -activation=linear - - -[yolo] -mask = 6,7,8 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=1 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 61 - - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=18 -activation=linear - - -[yolo] -mask = 3,4,5 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=1 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 36 - - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=18 -activation=linear - - -[yolo] -mask = 0,1,2 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=1 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 diff --git a/cfg/yolov3-spp-3cls.cfg b/cfg/yolov3-spp-3cls.cfg deleted file mode 100644 index b5d4bdf2..00000000 --- a/cfg/yolov3-spp-3cls.cfg +++ /dev/null @@ -1,821 +0,0 @@ -[net] -# Testing -# batch=1 -# subdivisions=1 -# Training -batch=64 -subdivisions=16 -width=608 -height=608 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=100 -max_batches = 5000 -policy=steps -steps=4000,4500 -scales=.1,.1 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=32 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -###################### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -### SPP ### -[maxpool] -stride=1 -size=5 - -[route] -layers=-2 - -[maxpool] -stride=1 -size=9 - -[route] -layers=-4 - -[maxpool] -stride=1 -size=13 - -[route] -layers=-1,-3,-5,-6 - -### End SPP ### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=24 -activation=linear - - -[yolo] -mask = 6,7,8 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=3 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 61 - - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=24 -activation=linear - - -[yolo] -mask = 3,4,5 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=3 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 36 - - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=24 -activation=linear - - -[yolo] -mask = 0,1,2 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=3 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 diff --git a/cfg/yolov3-spp-matrix.cfg b/cfg/yolov3-spp-matrix.cfg deleted file mode 100644 index 14befdba..00000000 --- a/cfg/yolov3-spp-matrix.cfg +++ /dev/null @@ -1,1115 +0,0 @@ -[net] -# Testing -# batch=1 -# subdivisions=1 -# Training -batch=64 -subdivisions=16 -width=416 -height=416 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=1000 -max_batches = 500500 -policy=steps -steps=400000,450000 -scales=.1,.1 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=32 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -###################### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -### SPP ### -[maxpool] -stride=1 -size=5 - -[route] -layers=-2 - -[maxpool] -stride=1 -size=9 - -[route] -layers=-4 - -[maxpool] -stride=1 -size=13 - -[route] -layers=-1,-3,-5,-6 - -### End SPP ### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - -# 89 -[yolo] -mask = 6,7,8 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326, 10,7, 16,15, 33,12, 5,13, 8,30, 17,23, 30,31, 62,23, 59,60, 15,61, 31,45, 30,119, 116,45, 156,99, 373,163, 58,90, 78,198, 187,326 -classes=80 -num=27 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 61 - - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - -# 101 -[yolo] -mask = 3,4,5 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326, 10,7, 16,15, 33,12, 5,13, 8,30, 17,23, 30,31, 62,23, 59,60, 15,61, 31,45, 30,119, 116,45, 156,99, 373,163, 58,90, 78,198, 187,326 -classes=80 -num=27 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 36 - - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - -# 113 -[yolo] -mask = 0,1,2 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326, 10,7, 16,15, 33,12, 5,13, 8,30, 17,23, 30,31, 62,23, 59,60, 15,61, 31,45, 30,119, 116,45, 156,99, 373,163, 58,90, 78,198, 187,326 -classes=80 -num=27 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - -################## - -[route] -layers = 110 - -# 115 -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -# 116 -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride_x=1 -stride_y=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - -[yolo] -mask = 9,10,11 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326, 10,7, 16,15, 33,12, 5,13, 8,30, 17,23, 30,31, 62,23, 59,60, 15,61, 31,45, 30,119, 116,45, 156,99, 373,163, 58,90, 78,198, 187,326 -classes=80 -num=27 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - - -[route] -layers = 110 - -# 121 -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -# 122 -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride_x=2 -stride_y=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - -[yolo] -mask = 12,13,14 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326, 10,7, 16,15, 33,12, 5,13, 8,30, 17,23, 30,31, 62,23, 59,60, 15,61, 31,45, 30,119, 116,45, 156,99, 373,163, 58,90, 78,198, 187,326 -classes=80 -num=27 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - -################## - -[route] -layers = 98 - -[convolutional] -share_index=115 -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -share_index=116 -batch_normalize=1 -filters=128 -size=1 -stride_x=1 -stride_y=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - -[yolo] -mask = 15,16,17 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326, 10,7, 16,15, 33,12, 5,13, 8,30, 17,23, 30,31, 62,23, 59,60, 15,61, 31,45, 30,119, 116,45, 156,99, 373,163, 58,90, 78,198, 187,326 -classes=80 -num=27 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - - -[route] -layers = 98 - -[convolutional] -share_index=121 -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -share_index=122 -batch_normalize=1 -filters=128 -size=1 -stride_x=2 -stride_y=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - -[yolo] -mask = 18,19,20 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326, 10,7, 16,15, 33,12, 5,13, 8,30, 17,23, 30,31, 62,23, 59,60, 15,61, 31,45, 30,119, 116,45, 156,99, 373,163, 58,90, 78,198, 187,326 -classes=80 -num=27 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - -################## - -[route] -layers = 86 - -[convolutional] -share_index=115 -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -share_index=116 -batch_normalize=1 -filters=128 -size=1 -stride_x=1 -stride_y=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - -[yolo] -mask = 21,22,23 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326, 10,7, 16,15, 33,12, 5,13, 8,30, 17,23, 30,31, 62,23, 59,60, 15,61, 31,45, 30,119, 116,45, 156,99, 373,163, 58,90, 78,198, 187,326 -classes=80 -num=27 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - - -[route] -layers = 86 - -[convolutional] -share_index=121 -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -share_index=122 -batch_normalize=1 -filters=128 -size=1 -stride_x=2 -stride_y=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - -[yolo] -mask = 24,25,26 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326, 10,7, 16,15, 33,12, 5,13, 8,30, 17,23, 30,31, 62,23, 59,60, 15,61, 31,45, 30,119, 116,45, 156,99, 373,163, 58,90, 78,198, 187,326 -classes=80 -num=27 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 \ No newline at end of file diff --git a/cfg/yolov3-spp-pan-scale.cfg b/cfg/yolov3-spp-pan-scale.cfg deleted file mode 100644 index d95bd52b..00000000 --- a/cfg/yolov3-spp-pan-scale.cfg +++ /dev/null @@ -1,938 +0,0 @@ -[net] -# Testing -#batch=1 -#subdivisions=1 -# Training -batch=64 -subdivisions=32 -width=544 -height=544 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - - -learning_rate=0.001 -burn_in=1000 -max_batches = 10000 - -policy=steps -steps=8000,9000 -scales=.1,.1 - -#policy=sgdr -#sgdr_cycle=1000 -#sgdr_mult=2 -#steps=4000,6000,8000,9000 -#scales=1, 1, 0.1, 0.1 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=32 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -###################### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -### SPP ### -[maxpool] -stride=1 -size=5 - -[route] -layers=-2 - -[maxpool] -stride=1 -size=9 - -[route] -layers=-4 - -[maxpool] -stride=1 -size=13 - -[route] -layers=-1,-3,-5,-6 - -### End SPP ### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - - - -########### to [yolo-3] - - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 61 - - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - - -########### to [yolo-2] - - - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 36 - - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - - - -########### to [yolo-1] - - -########### features of different layers - - -[route] -layers=1 - -[reorg3d] -stride=2 - -[route] -layers=5,-1 - -[reorg3d] -stride=2 - -[route] -layers=12,-1 - -[reorg3d] -stride=2 - -[route] -layers=37,-1 - -[reorg3d] -stride=2 - -[route] -layers=62,-1 - - - -########### [yolo-1] - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=4 - -[route] -layers = -1,-12 - - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=340 -activation=linear - - -[yolo] -mask = 0,1,2,3 -anchors = 8,8, 10,13, 16,30, 33,23, 32,32, 30,61, 62,45, 64,64, 59,119, 116,90, 156,198, 373,326 -classes=80 -num=12 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -scale_x_y = 1.05 -random=0 - - - - -########### [yolo-2] - - -[route] -layers = -7 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1,-28 - - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=340 -activation=linear - - -[yolo] -mask = 4,5,6,7 -anchors = 8,8, 10,13, 16,30, 33,23, 32,32, 30,61, 62,45, 64,64, 59,119, 116,90, 156,198, 373,326 -classes=80 -num=12 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -scale_x_y = 1.1 -random=0 - - - -########### [yolo-3] - -[route] -layers = -14 - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1,-43 - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - - -[convolutional] -size=1 -stride=1 -pad=1 -filters=340 -activation=linear - - -[yolo] -mask = 8,9,10,11 -anchors = 8,8, 10,13, 16,30, 33,23, 32,32, 30,61, 62,45, 59,119, 80,80, 116,90, 156,198, 373,326 -classes=80 -num=12 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -scale_x_y = 1.2 -random=0 diff --git a/cfg/yolov3-spp.cfg b/cfg/yolov3-spp.cfg deleted file mode 100644 index bb4e893b..00000000 --- a/cfg/yolov3-spp.cfg +++ /dev/null @@ -1,821 +0,0 @@ -[net] -# Testing -# batch=1 -# subdivisions=1 -# Training -batch=64 -subdivisions=16 -width=608 -height=608 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=1000 -max_batches = 500200 -policy=steps -steps=400000,450000 -scales=.1,.1 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=32 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -###################### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -### SPP ### -[maxpool] -stride=1 -size=5 - -[route] -layers=-2 - -[maxpool] -stride=1 -size=9 - -[route] -layers=-4 - -[maxpool] -stride=1 -size=13 - -[route] -layers=-1,-3,-5,-6 - -### End SPP ### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 6,7,8 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 61 - - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 3,4,5 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 36 - - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 0,1,2 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 diff --git a/cfg/yolov3-spp3.cfg b/cfg/yolov3-spp3.cfg deleted file mode 100644 index ea601054..00000000 --- a/cfg/yolov3-spp3.cfg +++ /dev/null @@ -1,870 +0,0 @@ -[net] -# Testing -batch=1 -subdivisions=1 -# Training -# batch=64 -# subdivisions=16 -width=608 -height=608 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=1000 -max_batches = 120200 -policy=steps -steps=70000,100000 -scales=.1,.1 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=32 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -###################### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -### SPP ### -[maxpool] -stride=1 -size=5 - -[route] -layers=-2 - -[maxpool] -stride=1 -size=9 - -[route] -layers=-4 - -[maxpool] -stride=1 -size=13 - -[route] -layers=-1,-3,-5,-6 - -### End SPP ### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 6,7,8 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 61 - - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -### SPP ### -[maxpool] -stride=1 -size=5 - -[route] -layers=-2 - -[maxpool] -stride=1 -size=9 - -[route] -layers=-4 - -[maxpool] -stride=1 -size=13 - -[route] -layers=-1,-3,-5,-6 - -### End SPP ### - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 3,4,5 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 36 - - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -### SPP ### -[maxpool] -stride=1 -size=5 - -[route] -layers=-2 - -[maxpool] -stride=1 -size=9 - -[route] -layers=-4 - -[maxpool] -stride=1 -size=13 - -[route] -layers=-1,-3,-5,-6 - -### End SPP ### - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 0,1,2 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 diff --git a/cfg/yolov3-tiny-1cls.cfg b/cfg/yolov3-tiny-1cls.cfg deleted file mode 100644 index b441eae2..00000000 --- a/cfg/yolov3-tiny-1cls.cfg +++ /dev/null @@ -1,182 +0,0 @@ -[net] -# Testing -batch=1 -subdivisions=1 -# Training -# batch=64 -# subdivisions=2 -width=416 -height=416 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=1000 -max_batches = 500200 -policy=steps -steps=400000,450000 -scales=.1,.1 - -[convolutional] -batch_normalize=1 -filters=16 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=1 - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -########### - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=18 -activation=linear - - - -[yolo] -mask = 3,4,5 -anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 -classes=1 -num=6 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 8 - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=18 -activation=linear - -[yolo] -mask = 0,1,2 -anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 -classes=1 -num=6 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 diff --git a/cfg/yolov3-tiny-3cls.cfg b/cfg/yolov3-tiny-3cls.cfg deleted file mode 100644 index 97c3720f..00000000 --- a/cfg/yolov3-tiny-3cls.cfg +++ /dev/null @@ -1,182 +0,0 @@ -[net] -# Testing -batch=1 -subdivisions=1 -# Training -# batch=64 -# subdivisions=2 -width=416 -height=416 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=1000 -max_batches = 500200 -policy=steps -steps=400000,450000 -scales=.1,.1 - -[convolutional] -batch_normalize=1 -filters=16 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=1 - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -########### - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=24 -activation=linear - - - -[yolo] -mask = 3,4,5 -anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 -classes=3 -num=6 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 8 - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=24 -activation=linear - -[yolo] -mask = 0,1,2 -anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 -classes=3 -num=6 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 diff --git a/cfg/yolov3-tiny.cfg b/cfg/yolov3-tiny.cfg deleted file mode 100644 index 42c0fcf9..00000000 --- a/cfg/yolov3-tiny.cfg +++ /dev/null @@ -1,182 +0,0 @@ -[net] -# Testing -batch=1 -subdivisions=1 -# Training -# batch=64 -# subdivisions=2 -width=416 -height=416 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=1000 -max_batches = 500200 -policy=steps -steps=400000,450000 -scales=.1,.1 - -[convolutional] -batch_normalize=1 -filters=16 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=1 - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -########### - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - - -[yolo] -mask = 3,4,5 -anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 -classes=80 -num=6 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 8 - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - -[yolo] -mask = 1,2,3 -anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 -classes=80 -num=6 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 diff --git a/cfg/yolov3-tiny3-1cls.cfg b/cfg/yolov3-tiny3-1cls.cfg deleted file mode 100644 index bd5fd0ba..00000000 --- a/cfg/yolov3-tiny3-1cls.cfg +++ /dev/null @@ -1,227 +0,0 @@ -[net] -# Testing -# batch=1 -# subdivisions=1 -# Training -batch=64 -subdivisions=16 -width=608 -height=608 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=1000 -max_batches = 200000 -policy=steps -steps=180000,190000 -scales=.1,.1 - - -[convolutional] -batch_normalize=1 -filters=16 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=1 - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -########### - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=18 -activation=linear - - - -[yolo] -mask = 6,7,8 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=1 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 8 - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=18 -activation=linear - -[yolo] -mask = 3,4,5 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=1 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - - -[route] -layers = -3 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 6 - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=18 -activation=linear - -[yolo] -mask = 0,1,2 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=1 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 diff --git a/cfg/yolov3-tiny3.cfg b/cfg/yolov3-tiny3.cfg deleted file mode 100644 index 85d6787f..00000000 --- a/cfg/yolov3-tiny3.cfg +++ /dev/null @@ -1,227 +0,0 @@ -[net] -# Testing -# batch=1 -# subdivisions=1 -# Training -batch=64 -subdivisions=16 -width=608 -height=608 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=1000 -max_batches = 200000 -policy=steps -steps=180000,190000 -scales=.1,.1 - - -[convolutional] -batch_normalize=1 -filters=16 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[maxpool] -size=2 -stride=1 - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -########### - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - - -[yolo] -mask = 6,7,8 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 8 - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - -[yolo] -mask = 3,4,5 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - - -[route] -layers = -3 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 6 - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - -[yolo] -mask = 0,1,2 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 diff --git a/cfg/yolov3.cfg b/cfg/yolov3.cfg deleted file mode 100755 index 946e0154..00000000 --- a/cfg/yolov3.cfg +++ /dev/null @@ -1,788 +0,0 @@ -[net] -# Testing -#batch=1 -#subdivisions=1 -# Training -batch=16 -subdivisions=1 -width=416 -height=416 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.001 -burn_in=1000 -max_batches = 500200 -policy=steps -steps=400000,450000 -scales=.1,.1 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=32 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -# Downsample - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -###################### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 6,7,8 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 61 - - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 3,4,5 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 - - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 36 - - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 0,1,2 -anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 diff --git a/cfg/yolov4-relu.cfg b/cfg/yolov4-relu.cfg deleted file mode 100644 index c2821b7e..00000000 --- a/cfg/yolov4-relu.cfg +++ /dev/null @@ -1,1155 +0,0 @@ -[net] -# Testing -#batch=1 -#subdivisions=1 -# Training -batch=64 -subdivisions=8 -width=608 -height=608 -channels=3 -momentum=0.949 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.00261 -burn_in=1000 -max_batches = 500500 -policy=steps -steps=400000,450000 -scales=.1,.1 - -#cutmix=1 -mosaic=1 - -#:104x104 54:52x52 85:26x26 104:13x13 for 416 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -2 - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=32 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1,-7 - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -2 - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1,-10 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -2 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1,-28 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -2 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1,-28 - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -# Downsample - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -2 - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1,-16 - -[convolutional] -batch_normalize=1 -filters=1024 -size=1 -stride=1 -pad=1 -activation=leaky - -########################## - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -### SPP ### -[maxpool] -stride=1 -size=5 - -[route] -layers=-2 - -[maxpool] -stride=1 -size=9 - -[route] -layers=-4 - -[maxpool] -stride=1 -size=13 - -[route] -layers=-1,-3,-5,-6 -### End SPP ### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = 85 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1, -3 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = 54 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1, -3 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -########################## - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 0,1,2 -anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -scale_x_y = 1.2 -iou_thresh=0.213 -cls_normalizer=1.0 -iou_normalizer=0.07 -iou_loss=ciou -nms_kind=greedynms -beta_nms=0.6 - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -size=3 -stride=2 -pad=1 -filters=256 -activation=leaky - -[route] -layers = -1, -16 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 3,4,5 -anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -scale_x_y = 1.1 -iou_thresh=0.213 -cls_normalizer=1.0 -iou_normalizer=0.07 -iou_loss=ciou -nms_kind=greedynms -beta_nms=0.6 - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -size=3 -stride=2 -pad=1 -filters=512 -activation=leaky - -[route] -layers = -1, -37 - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 6,7,8 -anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 -scale_x_y = 1.05 -iou_thresh=0.213 -cls_normalizer=1.0 -iou_normalizer=0.07 -iou_loss=ciou -nms_kind=greedynms -beta_nms=0.6 diff --git a/cfg/yolov4-tiny.cfg b/cfg/yolov4-tiny.cfg deleted file mode 100644 index dc6f5bfb..00000000 --- a/cfg/yolov4-tiny.cfg +++ /dev/null @@ -1,281 +0,0 @@ -[net] -# Testing -#batch=1 -#subdivisions=1 -# Training -batch=64 -subdivisions=1 -width=416 -height=416 -channels=3 -momentum=0.9 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.00261 -burn_in=1000 -max_batches = 500200 -policy=steps -steps=400000,450000 -scales=.1,.1 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=2 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[route] -layers=-1 -groups=2 -group_id=1 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1,-2 - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -6,-1 - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[route] -layers=-1 -groups=2 -group_id=1 - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1,-2 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -6,-1 - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[route] -layers=-1 -groups=2 -group_id=1 - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1,-2 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -6,-1 - -[maxpool] -size=2 -stride=2 - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -################################## - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - - -[yolo] -mask = 3,4,5 -anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 -classes=80 -num=6 -jitter=.3 -scale_x_y = 1.05 -cls_normalizer=1.0 -iou_normalizer=0.07 -iou_loss=ciou -ignore_thresh = .7 -truth_thresh = 1 -random=0 -resize=1.5 -nms_kind=greedynms -beta_nms=0.6 - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = -1, 23 - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - -[yolo] -mask = 1,2,3 -anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319 -classes=80 -num=6 -jitter=.3 -scale_x_y = 1.05 -cls_normalizer=1.0 -iou_normalizer=0.07 -iou_loss=ciou -ignore_thresh = .7 -truth_thresh = 1 -random=0 -resize=1.5 -nms_kind=greedynms -beta_nms=0.6 diff --git a/cfg/yolov4.cfg b/cfg/yolov4.cfg deleted file mode 100644 index 5e1ac822..00000000 --- a/cfg/yolov4.cfg +++ /dev/null @@ -1,1155 +0,0 @@ -[net] -# Testing -#batch=1 -#subdivisions=1 -# Training -batch=64 -subdivisions=8 -width=608 -height=608 -channels=3 -momentum=0.949 -decay=0.0005 -angle=0 -saturation = 1.5 -exposure = 1.5 -hue=.1 - -learning_rate=0.00261 -burn_in=1000 -max_batches = 500500 -policy=steps -steps=400000,450000 -scales=.1,.1 - -#cutmix=1 -mosaic=1 - -#:104x104 54:52x52 85:26x26 104:13x13 for 416 - -[convolutional] -batch_normalize=1 -filters=32 -size=3 -stride=1 -pad=1 -activation=mish - -# Downsample - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=2 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=mish - -[route] -layers = -2 - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=32 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=mish - -[route] -layers = -1,-7 - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=mish - -# Downsample - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=2 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=mish - -[route] -layers = -2 - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=64 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=64 -size=1 -stride=1 -pad=1 -activation=mish - -[route] -layers = -1,-10 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=mish - -# Downsample - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=2 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=mish - -[route] -layers = -2 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=128 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=mish - -[route] -layers = -1,-28 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=mish - -# Downsample - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=2 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=mish - -[route] -layers = -2 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=256 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=mish - -[route] -layers = -1,-28 - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=mish - -# Downsample - -[convolutional] -batch_normalize=1 -filters=1024 -size=3 -stride=2 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=mish - -[route] -layers = -2 - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=mish - -[convolutional] -batch_normalize=1 -filters=512 -size=3 -stride=1 -pad=1 -activation=mish - -[shortcut] -from=-3 -activation=linear - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=mish - -[route] -layers = -1,-16 - -[convolutional] -batch_normalize=1 -filters=1024 -size=1 -stride=1 -pad=1 -activation=mish - -########################## - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -### SPP ### -[maxpool] -stride=1 -size=5 - -[route] -layers=-2 - -[maxpool] -stride=1 -size=9 - -[route] -layers=-4 - -[maxpool] -stride=1 -size=13 - -[route] -layers=-1,-3,-5,-6 -### End SPP ### - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = 85 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1, -3 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[upsample] -stride=2 - -[route] -layers = 54 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[route] -layers = -1, -3 - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=128 -size=1 -stride=1 -pad=1 -activation=leaky - -########################## - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=256 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 0,1,2 -anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -scale_x_y = 1.2 -iou_thresh=0.213 -cls_normalizer=1.0 -iou_normalizer=0.07 -iou_loss=ciou -nms_kind=greedynms -beta_nms=0.6 - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -size=3 -stride=2 -pad=1 -filters=256 -activation=leaky - -[route] -layers = -1, -16 - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=256 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=512 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 3,4,5 -anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -scale_x_y = 1.1 -iou_thresh=0.213 -cls_normalizer=1.0 -iou_normalizer=0.07 -iou_loss=ciou -nms_kind=greedynms -beta_nms=0.6 - - -[route] -layers = -4 - -[convolutional] -batch_normalize=1 -size=3 -stride=2 -pad=1 -filters=512 -activation=leaky - -[route] -layers = -1, -37 - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -batch_normalize=1 -filters=512 -size=1 -stride=1 -pad=1 -activation=leaky - -[convolutional] -batch_normalize=1 -size=3 -stride=1 -pad=1 -filters=1024 -activation=leaky - -[convolutional] -size=1 -stride=1 -pad=1 -filters=255 -activation=linear - - -[yolo] -mask = 6,7,8 -anchors = 12, 16, 19, 36, 40, 28, 36, 75, 76, 55, 72, 146, 142, 110, 192, 243, 459, 401 -classes=80 -num=9 -jitter=.3 -ignore_thresh = .7 -truth_thresh = 1 -random=1 -scale_x_y = 1.05 -iou_thresh=0.213 -cls_normalizer=1.0 -iou_normalizer=0.07 -iou_loss=ciou -nms_kind=greedynms -beta_nms=0.6 diff --git a/data/coco.names b/data/coco.names deleted file mode 100755 index 941cb4e1..00000000 --- a/data/coco.names +++ /dev/null @@ -1,80 +0,0 @@ -person -bicycle -car -motorcycle -airplane -bus -train -truck -boat -traffic light -fire hydrant -stop sign -parking meter -bench -bird -cat -dog -horse -sheep -cow -elephant -bear -zebra -giraffe -backpack -umbrella -handbag -tie -suitcase -frisbee -skis -snowboard -sports ball -kite -baseball bat -baseball glove -skateboard -surfboard -tennis racket -bottle -wine glass -cup -fork -knife -spoon -bowl -banana -apple -sandwich -orange -broccoli -carrot -hot dog -pizza -donut -cake -chair -couch -potted plant -bed -dining table -toilet -tv -laptop -mouse -remote -keyboard -cell phone -microwave -oven -toaster -sink -refrigerator -book -clock -vase -scissors -teddy bear -hair drier -toothbrush diff --git a/data/coco.yaml b/data/coco.yaml new file mode 100644 index 00000000..09e0a4f4 --- /dev/null +++ b/data/coco.yaml @@ -0,0 +1,35 @@ +# COCO 2017 dataset http://cocodataset.org +# Train command: python train.py --data coco.yaml +# Default dataset location is next to /yolov3: +# /parent_folder +# /coco +# /yolov3 + + +# download command/URL (optional) +download: bash data/scripts/get_coco.sh + +# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/] +train: ../coco/train2017.txt # 118287 images +val: ../coco/val2017.txt # 5000 images +test: ../coco/test-dev2017.txt # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794 + +# number of classes +nc: 80 + +# class names +names: ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light', + 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', + 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', + 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', + 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', + 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', + 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', + 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', + 'hair drier', 'toothbrush'] + +# Print classes +# with open('data/coco.yaml') as f: +# d = yaml.load(f, Loader=yaml.FullLoader) # dict +# for i, x in enumerate(d['names']): +# print(i, x) diff --git a/data/coco1.data b/data/coco1.data deleted file mode 100644 index 3c04a659..00000000 --- a/data/coco1.data +++ /dev/null @@ -1,4 +0,0 @@ -classes=80 -train=data/coco1.txt -valid=data/coco1.txt -names=data/coco.names diff --git a/data/coco1.txt b/data/coco1.txt deleted file mode 100644 index 268042e7..00000000 --- a/data/coco1.txt +++ /dev/null @@ -1 +0,0 @@ -../coco/images/train2017/000000109622.jpg diff --git a/data/coco128.yaml b/data/coco128.yaml new file mode 100644 index 00000000..abd129d9 --- /dev/null +++ b/data/coco128.yaml @@ -0,0 +1,28 @@ +# COCO 2017 dataset http://cocodataset.org - first 128 training images +# Train command: python train.py --data coco128.yaml +# Default dataset location is next to /yolov3: +# /parent_folder +# /coco128 +# /yolov3 + + +# download command/URL (optional) +download: https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip + +# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/] +train: ../coco128/images/train2017/ # 128 images +val: ../coco128/images/train2017/ # 128 images + +# number of classes +nc: 80 + +# class names +names: ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light', + 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', + 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', + 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', + 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', + 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', + 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', + 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', + 'hair drier', 'toothbrush'] diff --git a/data/coco16.data b/data/coco16.data deleted file mode 100644 index d3827348..00000000 --- a/data/coco16.data +++ /dev/null @@ -1,4 +0,0 @@ -classes=80 -train=data/coco16.txt -valid=data/coco16.txt -names=data/coco.names diff --git a/data/coco16.txt b/data/coco16.txt deleted file mode 100644 index 4fb69e99..00000000 --- a/data/coco16.txt +++ /dev/null @@ -1,16 +0,0 @@ -../coco/images/train2017/000000109622.jpg -../coco/images/train2017/000000160694.jpg -../coco/images/train2017/000000308590.jpg -../coco/images/train2017/000000327573.jpg -../coco/images/train2017/000000062929.jpg -../coco/images/train2017/000000512793.jpg -../coco/images/train2017/000000371735.jpg -../coco/images/train2017/000000148118.jpg -../coco/images/train2017/000000309856.jpg -../coco/images/train2017/000000141882.jpg -../coco/images/train2017/000000318783.jpg -../coco/images/train2017/000000337760.jpg -../coco/images/train2017/000000298197.jpg -../coco/images/train2017/000000042421.jpg -../coco/images/train2017/000000328898.jpg -../coco/images/train2017/000000458856.jpg diff --git a/data/coco1cls.data b/data/coco1cls.data deleted file mode 100644 index 509721f9..00000000 --- a/data/coco1cls.data +++ /dev/null @@ -1,4 +0,0 @@ -classes=1 -train=data/coco1cls.txt -valid=data/coco1cls.txt -names=data/coco.names diff --git a/data/coco1cls.txt b/data/coco1cls.txt deleted file mode 100644 index 87025739..00000000 --- a/data/coco1cls.txt +++ /dev/null @@ -1,16 +0,0 @@ -../coco/images/train2017/000000000901.jpg -../coco/images/train2017/000000001464.jpg -../coco/images/train2017/000000003220.jpg -../coco/images/train2017/000000003365.jpg -../coco/images/train2017/000000004772.jpg -../coco/images/train2017/000000009987.jpg -../coco/images/train2017/000000010498.jpg -../coco/images/train2017/000000012455.jpg -../coco/images/train2017/000000013992.jpg -../coco/images/train2017/000000014125.jpg -../coco/images/train2017/000000016314.jpg -../coco/images/train2017/000000016670.jpg -../coco/images/train2017/000000018412.jpg -../coco/images/train2017/000000021212.jpg -../coco/images/train2017/000000021826.jpg -../coco/images/train2017/000000030566.jpg diff --git a/data/coco2014.data b/data/coco2014.data deleted file mode 100644 index 422a3005..00000000 --- a/data/coco2014.data +++ /dev/null @@ -1,4 +0,0 @@ -classes=80 -train=../coco/trainvalno5k.txt -valid=../coco/5k.txt -names=data/coco.names diff --git a/data/coco2017.data b/data/coco2017.data deleted file mode 100644 index c9460056..00000000 --- a/data/coco2017.data +++ /dev/null @@ -1,4 +0,0 @@ -classes=80 -train=../coco/train2017.txt -valid=../coco/val2017.txt -names=data/coco.names diff --git a/data/coco64.data b/data/coco64.data deleted file mode 100644 index 159489ac..00000000 --- a/data/coco64.data +++ /dev/null @@ -1,4 +0,0 @@ -classes=80 -train=data/coco64.txt -valid=data/coco64.txt -names=data/coco.names diff --git a/data/coco64.txt b/data/coco64.txt deleted file mode 100644 index 7dbc28fc..00000000 --- a/data/coco64.txt +++ /dev/null @@ -1,64 +0,0 @@ -../coco/images/train2017/000000109622.jpg -../coco/images/train2017/000000160694.jpg -../coco/images/train2017/000000308590.jpg -../coco/images/train2017/000000327573.jpg -../coco/images/train2017/000000062929.jpg -../coco/images/train2017/000000512793.jpg -../coco/images/train2017/000000371735.jpg -../coco/images/train2017/000000148118.jpg -../coco/images/train2017/000000309856.jpg -../coco/images/train2017/000000141882.jpg -../coco/images/train2017/000000318783.jpg -../coco/images/train2017/000000337760.jpg -../coco/images/train2017/000000298197.jpg -../coco/images/train2017/000000042421.jpg -../coco/images/train2017/000000328898.jpg -../coco/images/train2017/000000458856.jpg -../coco/images/train2017/000000073824.jpg -../coco/images/train2017/000000252846.jpg -../coco/images/train2017/000000459590.jpg -../coco/images/train2017/000000273650.jpg -../coco/images/train2017/000000331311.jpg -../coco/images/train2017/000000156326.jpg -../coco/images/train2017/000000262985.jpg -../coco/images/train2017/000000253580.jpg -../coco/images/train2017/000000447976.jpg -../coco/images/train2017/000000378077.jpg -../coco/images/train2017/000000259913.jpg -../coco/images/train2017/000000424553.jpg -../coco/images/train2017/000000000612.jpg -../coco/images/train2017/000000267625.jpg -../coco/images/train2017/000000566012.jpg -../coco/images/train2017/000000196664.jpg -../coco/images/train2017/000000363331.jpg -../coco/images/train2017/000000057992.jpg -../coco/images/train2017/000000520047.jpg -../coco/images/train2017/000000453903.jpg -../coco/images/train2017/000000162083.jpg -../coco/images/train2017/000000268516.jpg -../coco/images/train2017/000000277436.jpg -../coco/images/train2017/000000189744.jpg -../coco/images/train2017/000000041128.jpg -../coco/images/train2017/000000527728.jpg -../coco/images/train2017/000000465269.jpg -../coco/images/train2017/000000246833.jpg -../coco/images/train2017/000000076784.jpg -../coco/images/train2017/000000323715.jpg -../coco/images/train2017/000000560463.jpg -../coco/images/train2017/000000006263.jpg -../coco/images/train2017/000000094701.jpg -../coco/images/train2017/000000521359.jpg -../coco/images/train2017/000000302903.jpg -../coco/images/train2017/000000047559.jpg -../coco/images/train2017/000000480583.jpg -../coco/images/train2017/000000050025.jpg -../coco/images/train2017/000000084512.jpg -../coco/images/train2017/000000508913.jpg -../coco/images/train2017/000000093708.jpg -../coco/images/train2017/000000070493.jpg -../coco/images/train2017/000000539270.jpg -../coco/images/train2017/000000474402.jpg -../coco/images/train2017/000000209842.jpg -../coco/images/train2017/000000028820.jpg -../coco/images/train2017/000000154257.jpg -../coco/images/train2017/000000342499.jpg diff --git a/data/coco_paper.names b/data/coco_paper.names deleted file mode 100644 index 5378c6cd..00000000 --- a/data/coco_paper.names +++ /dev/null @@ -1,91 +0,0 @@ -person -bicycle -car -motorcycle -airplane -bus -train -truck -boat -traffic light -fire hydrant -street sign -stop sign -parking meter -bench -bird -cat -dog -horse -sheep -cow -elephant -bear -zebra -giraffe -hat -backpack -umbrella -shoe -eye glasses -handbag -tie -suitcase -frisbee -skis -snowboard -sports ball -kite -baseball bat -baseball glove -skateboard -surfboard -tennis racket -bottle -plate -wine glass -cup -fork -knife -spoon -bowl -banana -apple -sandwich -orange -broccoli -carrot -hot dog -pizza -donut -cake -chair -couch -potted plant -bed -mirror -dining table -window -desk -toilet -door -tv -laptop -mouse -remote -keyboard -cell phone -microwave -oven -toaster -sink -refrigerator -blender -book -clock -vase -scissors -teddy bear -hair drier -toothbrush -hair brush \ No newline at end of file diff --git a/data/get_coco2014.sh b/data/get_coco2014.sh deleted file mode 100755 index 02d059c5..00000000 --- a/data/get_coco2014.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -# Zip coco folder -# zip -r coco.zip coco -# tar -czvf coco.tar.gz coco - -# Download labels from Google Drive, accepting presented query -filename="coco2014labels.zip" -fileid="1s6-CmF5_SElM28r52P1OUrCcuXZN-SFo" -curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" >/dev/null -curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=$(awk '/download/ {print $NF}' ./cookie)&id=${fileid}" -o ${filename} -rm ./cookie - -# Unzip labels -unzip -q ${filename} # for coco.zip -# tar -xzf ${filename} # for coco.tar.gz -rm ${filename} - -# Download and unzip images -cd coco/images -f="train2014.zip" && curl http://images.cocodataset.org/zips/$f -o $f && unzip -q $f && rm $f -f="val2014.zip" && curl http://images.cocodataset.org/zips/$f -o $f && unzip -q $f && rm $f - -# cd out -cd ../.. diff --git a/data/get_coco2017.sh b/data/get_coco2017.sh deleted file mode 100755 index 3bf4069a..00000000 --- a/data/get_coco2017.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/bin/bash -# Zip coco folder -# zip -r coco.zip coco -# tar -czvf coco.tar.gz coco - -# Download labels from Google Drive, accepting presented query -filename="coco2017labels.zip" -fileid="1cXZR_ckHki6nddOmcysCuuJFM--T-Q6L" -curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" >/dev/null -curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm=$(awk '/download/ {print $NF}' ./cookie)&id=${fileid}" -o ${filename} -rm ./cookie - -# Unzip labels -unzip -q ${filename} # for coco.zip -# tar -xzf ${filename} # for coco.tar.gz -rm ${filename} - -# Download and unzip images -cd coco/images -f="train2017.zip" && curl http://images.cocodataset.org/zips/$f -o $f && unzip -q $f && rm $f -f="val2017.zip" && curl http://images.cocodataset.org/zips/$f -o $f && unzip -q $f && rm $f - -# cd out -cd ../.. diff --git a/data/hyp.finetune.yaml b/data/hyp.finetune.yaml new file mode 100644 index 00000000..1b84cff9 --- /dev/null +++ b/data/hyp.finetune.yaml @@ -0,0 +1,38 @@ +# Hyperparameters for VOC finetuning +# python train.py --batch 64 --weights yolov5m.pt --data voc.yaml --img 512 --epochs 50 +# See tutorials for hyperparameter evolution https://github.com/ultralytics/yolov5#tutorials + + +# Hyperparameter Evolution Results +# Generations: 306 +# P R mAP.5 mAP.5:.95 box obj cls +# Metrics: 0.6 0.936 0.896 0.684 0.0115 0.00805 0.00146 + +lr0: 0.0032 +lrf: 0.12 +momentum: 0.843 +weight_decay: 0.00036 +warmup_epochs: 2.0 +warmup_momentum: 0.5 +warmup_bias_lr: 0.05 +box: 0.0296 +cls: 0.243 +cls_pw: 0.631 +obj: 0.301 +obj_pw: 0.911 +iou_t: 0.2 +anchor_t: 2.91 +# anchors: 3.63 +fl_gamma: 0.0 +hsv_h: 0.0138 +hsv_s: 0.664 +hsv_v: 0.464 +degrees: 0.373 +translate: 0.245 +scale: 0.898 +shear: 0.602 +perspective: 0.0 +flipud: 0.00856 +fliplr: 0.5 +mosaic: 1.0 +mixup: 0.243 diff --git a/data/hyp.scratch.yaml b/data/hyp.scratch.yaml new file mode 100644 index 00000000..44f26b66 --- /dev/null +++ b/data/hyp.scratch.yaml @@ -0,0 +1,33 @@ +# Hyperparameters for COCO training from scratch +# python train.py --batch 40 --cfg yolov5m.yaml --weights '' --data coco.yaml --img 640 --epochs 300 +# See tutorials for hyperparameter evolution https://github.com/ultralytics/yolov5#tutorials + + +lr0: 0.01 # initial learning rate (SGD=1E-2, Adam=1E-3) +lrf: 0.2 # final OneCycleLR learning rate (lr0 * lrf) +momentum: 0.937 # SGD momentum/Adam beta1 +weight_decay: 0.0005 # optimizer weight decay 5e-4 +warmup_epochs: 3.0 # warmup epochs (fractions ok) +warmup_momentum: 0.8 # warmup initial momentum +warmup_bias_lr: 0.1 # warmup initial bias lr +box: 0.05 # box loss gain +cls: 0.5 # cls loss gain +cls_pw: 1.0 # cls BCELoss positive_weight +obj: 1.0 # obj loss gain (scale with pixels) +obj_pw: 1.0 # obj BCELoss positive_weight +iou_t: 0.20 # IoU training threshold +anchor_t: 4.0 # anchor-multiple threshold +# anchors: 3 # anchors per output layer (0 to ignore) +fl_gamma: 0.0 # focal loss gamma (efficientDet default gamma=1.5) +hsv_h: 0.015 # image HSV-Hue augmentation (fraction) +hsv_s: 0.7 # image HSV-Saturation augmentation (fraction) +hsv_v: 0.4 # image HSV-Value augmentation (fraction) +degrees: 0.0 # image rotation (+/- deg) +translate: 0.1 # image translation (+/- fraction) +scale: 0.5 # image scale (+/- gain) +shear: 0.0 # image shear (+/- deg) +perspective: 0.0 # image perspective (+/- fraction), range 0-0.001 +flipud: 0.0 # image flip up-down (probability) +fliplr: 0.5 # image flip left-right (probability) +mosaic: 1.0 # image mosaic (probability) +mixup: 0.0 # image mixup (probability) diff --git a/data/samples/bus.jpg b/data/images/bus.jpg similarity index 100% rename from data/samples/bus.jpg rename to data/images/bus.jpg diff --git a/data/samples/zidane.jpg b/data/images/zidane.jpg similarity index 100% rename from data/samples/zidane.jpg rename to data/images/zidane.jpg diff --git a/data/scripts/get_coco.sh b/data/scripts/get_coco.sh new file mode 100755 index 00000000..2604e9b7 --- /dev/null +++ b/data/scripts/get_coco.sh @@ -0,0 +1,24 @@ +#!/bin/bash +# COCO 2017 dataset http://cocodataset.org +# Download command: bash data/scripts/get_coco.sh +# Train command: python train.py --data coco.yaml +# Default dataset location is next to /yolov3: +# /parent_folder +# /coco +# /yolov3 + +# Download/unzip labels +d='../' # unzip directory +url=https://github.com/ultralytics/yolov5/releases/download/v1.0/ +f='coco2017labels.zip' # 68 MB +echo 'Downloading' $url$f ' ...' && curl -L $url$f -o $f && unzip -q $f -d $d && rm $f # download, unzip, remove + +# Download/unzip images +d='../coco/images' # unzip directory +url=http://images.cocodataset.org/zips/ +f1='train2017.zip' # 19G, 118k images +f2='val2017.zip' # 1G, 5k images +f3='test2017.zip' # 7G, 41k images (optional) +for f in $f1 $f2; do + echo 'Downloading' $url$f ' ...' && curl -L $url$f -o $f && unzip -q $f -d $d && rm $f # download, unzip, remove +done diff --git a/data/scripts/get_voc.sh b/data/scripts/get_voc.sh new file mode 100644 index 00000000..6bdaa9bc --- /dev/null +++ b/data/scripts/get_voc.sh @@ -0,0 +1,137 @@ +#!/bin/bash +# PASCAL VOC dataset http://host.robots.ox.ac.uk/pascal/VOC/ +# Download command: bash data/scripts/get_voc.sh +# Train command: python train.py --data voc.yaml +# Default dataset location is next to /yolov5: +# /parent_folder +# /VOC +# /yolov5 + +start=$(date +%s) +mkdir -p ../tmp +cd ../tmp/ + +# Download/unzip images and labels +d='.' # unzip directory +url=https://github.com/ultralytics/yolov5/releases/download/v1.0/ +f1=VOCtrainval_06-Nov-2007.zip # 446MB, 5012 images +f2=VOCtest_06-Nov-2007.zip # 438MB, 4953 images +f3=VOCtrainval_11-May-2012.zip # 1.95GB, 17126 images +for f in $f1 $f2 $f3; do + echo 'Downloading' $url$f ' ...' && curl -L $url$f -o $f && unzip -q $f -d $d && rm $f # download, unzip, remove +done + +end=$(date +%s) +runtime=$((end - start)) +echo "Completed in" $runtime "seconds" + +echo "Splitting dataset..." +python3 - "$@" <train.txt +cat 2007_train.txt 2007_val.txt 2007_test.txt 2012_train.txt 2012_val.txt >train.all.txt + +python3 - "$@" <= 1 - p, s, im0 = path[i], '%g: ' % i, im0s[i].copy() + p, s, im0 = Path(path[i]), '%g: ' % i, im0s[i].copy() else: - p, s, im0 = path, '', im0s + p, s, im0 = Path(path), '', im0s - save_path = str(Path(out) / Path(p).name) + save_path = str(save_dir / p.name) + txt_path = str(save_dir / 'labels' / p.stem) + ('_%g' % dataset.frame if dataset.mode == 'video' else '') s += '%gx%g ' % img.shape[2:] # print string - gn = torch.tensor(im0.shape)[[1, 0, 1, 0]] #  normalization gain whwh - if det is not None and len(det): - # Rescale boxes from imgsz to im0 size + gn = torch.tensor(im0.shape)[[1, 0, 1, 0]] # normalization gain whwh + if len(det): + # Rescale boxes from img_size to im0 size det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round() # Print results @@ -124,19 +102,20 @@ def detect(save_img=False): for *xyxy, conf, cls in reversed(det): if save_txt: # Write to file xywh = (xyxy2xywh(torch.tensor(xyxy).view(1, 4)) / gn).view(-1).tolist() # normalized xywh - with open(save_path[:save_path.rfind('.')] + '.txt', 'a') as file: - file.write(('%g ' * 5 + '\n') % (cls, *xywh)) # label format + line = (cls, *xywh, conf) if opt.save_conf else (cls, *xywh) # label format + with open(txt_path + '.txt', 'a') as f: + f.write(('%g ' * len(line)).rstrip() % line + '\n') if save_img or view_img: # Add bbox to image label = '%s %.2f' % (names[int(cls)], conf) - plot_one_box(xyxy, im0, label=label, color=colors[int(cls)]) + plot_one_box(xyxy, im0, label=label, color=colors[int(cls)], line_thickness=3) # Print time (inference + NMS) print('%sDone. (%.3fs)' % (s, t2 - t1)) # Stream results if view_img: - cv2.imshow(p, im0) + cv2.imshow(str(p), im0) if cv2.waitKey(1) == ord('q'): # q to quit raise StopIteration @@ -150,42 +129,45 @@ def detect(save_img=False): if isinstance(vid_writer, cv2.VideoWriter): vid_writer.release() # release previous video writer + fourcc = 'mp4v' # output video codec fps = vid_cap.get(cv2.CAP_PROP_FPS) w = int(vid_cap.get(cv2.CAP_PROP_FRAME_WIDTH)) h = int(vid_cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) - vid_writer = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*opt.fourcc), fps, (w, h)) + vid_writer = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*fourcc), fps, (w, h)) vid_writer.write(im0) if save_txt or save_img: - print('Results saved to %s' % os.getcwd() + os.sep + out) - if platform == 'darwin': # MacOS - os.system('open ' + save_path) + s = f"\n{len(list(save_dir.glob('labels/*.txt')))} labels saved to {save_dir / 'labels'}" if save_txt else '' + print(f"Results saved to {save_dir}{s}") print('Done. (%.3fs)' % (time.time() - t0)) if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path') - parser.add_argument('--names', type=str, default='data/coco.names', help='*.names path') - parser.add_argument('--weights', type=str, default='weights/yolov3-spp-ultralytics.pt', help='weights path') - parser.add_argument('--source', type=str, default='data/samples', help='source') # input file/folder, 0 for webcam - parser.add_argument('--output', type=str, default='output', help='output folder') # output folder - parser.add_argument('--img-size', type=int, default=512, help='inference size (pixels)') - parser.add_argument('--conf-thres', type=float, default=0.3, help='object confidence threshold') - parser.add_argument('--iou-thres', type=float, default=0.6, help='IOU threshold for NMS') - parser.add_argument('--fourcc', type=str, default='mp4v', help='output video codec (verify ffmpeg support)') - parser.add_argument('--half', action='store_true', help='half precision FP16 inference') - parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') + parser.add_argument('--weights', nargs='+', type=str, default='yolov3.pt', help='model.pt path(s)') + parser.add_argument('--source', type=str, default='data/images', help='source') # file/folder, 0 for webcam + parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)') + parser.add_argument('--conf-thres', type=float, default=0.25, help='object confidence threshold') + parser.add_argument('--iou-thres', type=float, default=0.45, help='IOU threshold for NMS') + parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') parser.add_argument('--view-img', action='store_true', help='display results') parser.add_argument('--save-txt', action='store_true', help='save results to *.txt') - parser.add_argument('--classes', nargs='+', type=int, help='filter by class') + parser.add_argument('--save-conf', action='store_true', help='save confidences in --save-txt labels') + parser.add_argument('--classes', nargs='+', type=int, help='filter by class: --class 0, or --class 0 2 3') parser.add_argument('--agnostic-nms', action='store_true', help='class-agnostic NMS') parser.add_argument('--augment', action='store_true', help='augmented inference') + parser.add_argument('--update', action='store_true', help='update all models') + parser.add_argument('--project', default='runs/detect', help='save results to project/name') + parser.add_argument('--name', default='exp', help='save results to project/name') + parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment') opt = parser.parse_args() - opt.cfg = check_file(opt.cfg) # check file - opt.names = check_file(opt.names) # check file print(opt) with torch.no_grad(): - detect() + if opt.update: # update all models (to fix SourceChangeWarning) + for opt.weights in ['yolov3.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt']: + detect() + strip_optimizer(opt.weights) + else: + detect() diff --git a/hubconf.py b/hubconf.py new file mode 100644 index 00000000..9067d0bd --- /dev/null +++ b/hubconf.py @@ -0,0 +1,105 @@ +"""File for accessing YOLOv3 via PyTorch Hub https://pytorch.org/hub/ + +Usage: + import torch + model = torch.hub.load('ultralytics/yolov3', 'yolov3', pretrained=True, channels=3, classes=80) +""" + +from pathlib import Path + +import torch + +from models.yolo import Model +from utils.general import set_logging +from utils.google_utils import attempt_download + +dependencies = ['torch', 'yaml'] +set_logging() + + +def create(name, pretrained, channels, classes): + """Creates a specified YOLOv3 model + + Arguments: + name (str): name of model, i.e. 'yolov3_spp' + pretrained (bool): load pretrained weights into the model + channels (int): number of input channels + classes (int): number of model classes + + Returns: + pytorch model + """ + config = Path(__file__).parent / 'models' / f'{name}.yaml' # model.yaml path + try: + model = Model(config, channels, classes) + if pretrained: + fname = f'{name}.pt' # checkpoint filename + attempt_download(fname) # download if not found locally + ckpt = torch.load(fname, map_location=torch.device('cpu')) # load + state_dict = ckpt['model'].float().state_dict() # to FP32 + state_dict = {k: v for k, v in state_dict.items() if model.state_dict()[k].shape == v.shape} # filter + model.load_state_dict(state_dict, strict=False) # load + if len(ckpt['model'].names) == classes: + model.names = ckpt['model'].names # set class names attribute + # model = model.autoshape() # for PIL/cv2/np inputs and NMS + return model + + except Exception as e: + help_url = 'https://github.com/ultralytics/yolov5/issues/36' + s = 'Cache maybe be out of date, try force_reload=True. See %s for help.' % help_url + raise Exception(s) from e + + +def yolov3(pretrained=False, channels=3, classes=80): + """YOLOv3 model from https://github.com/ultralytics/yolov3 + + Arguments: + pretrained (bool): load pretrained weights into the model, default=False + channels (int): number of input channels, default=3 + classes (int): number of model classes, default=80 + + Returns: + pytorch model + """ + return create('yolov3', pretrained, channels, classes) + + +def yolov3_spp(pretrained=False, channels=3, classes=80): + """YOLOv3-SPP model from https://github.com/ultralytics/yolov3 + + Arguments: + pretrained (bool): load pretrained weights into the model, default=False + channels (int): number of input channels, default=3 + classes (int): number of model classes, default=80 + + Returns: + pytorch model + """ + return create('yolov3-spp', pretrained, channels, classes) + + +def yolov3_tiny(pretrained=False, channels=3, classes=80): + """YOLOv3-tiny model from https://github.com/ultralytics/yolov3 + + Arguments: + pretrained (bool): load pretrained weights into the model, default=False + channels (int): number of input channels, default=3 + classes (int): number of model classes, default=80 + + Returns: + pytorch model + """ + return create('yolov3-tiny', pretrained, channels, classes) + + +if __name__ == '__main__': + model = create(name='yolov3', pretrained=True, channels=3, classes=80) # example + model = model.fuse().autoshape() # for PIL/cv2/np inputs and NMS + + # Verify inference + from PIL import Image + + imgs = [Image.open(x) for x in Path('data/images').glob('*.jpg')] + results = model(imgs) + results.show() + results.print() diff --git a/models.py b/models.py deleted file mode 100755 index 54742b88..00000000 --- a/models.py +++ /dev/null @@ -1,480 +0,0 @@ -from utils.google_utils import * -from utils.layers import * -from utils.parse_config import * - -ONNX_EXPORT = False - - -def create_modules(module_defs, img_size, cfg): - # Constructs module list of layer blocks from module configuration in module_defs - - img_size = [img_size] * 2 if isinstance(img_size, int) else img_size # expand if necessary - _ = module_defs.pop(0) # cfg training hyperparams (unused) - output_filters = [3] # input channels - module_list = nn.ModuleList() - routs = [] # list of layers which rout to deeper layers - yolo_index = -1 - - for i, mdef in enumerate(module_defs): - modules = nn.Sequential() - - if mdef['type'] == 'convolutional': - bn = mdef['batch_normalize'] - filters = mdef['filters'] - k = mdef['size'] # kernel size - stride = mdef['stride'] if 'stride' in mdef else (mdef['stride_y'], mdef['stride_x']) - if isinstance(k, int): # single-size conv - modules.add_module('Conv2d', nn.Conv2d(in_channels=output_filters[-1], - out_channels=filters, - kernel_size=k, - stride=stride, - padding=k // 2 if mdef['pad'] else 0, - groups=mdef['groups'] if 'groups' in mdef else 1, - bias=not bn)) - else: # multiple-size conv - modules.add_module('MixConv2d', MixConv2d(in_ch=output_filters[-1], - out_ch=filters, - k=k, - stride=stride, - bias=not bn)) - - if bn: - modules.add_module('BatchNorm2d', nn.BatchNorm2d(filters, momentum=0.03, eps=1E-4)) - else: - routs.append(i) # detection output (goes into yolo layer) - - if mdef['activation'] == 'leaky': # activation study https://github.com/ultralytics/yolov3/issues/441 - modules.add_module('activation', nn.LeakyReLU(0.1, inplace=True)) - elif mdef['activation'] == 'swish': - modules.add_module('activation', Swish()) - elif mdef['activation'] == 'mish': - modules.add_module('activation', Mish()) - - elif mdef['type'] == 'BatchNorm2d': - filters = output_filters[-1] - modules = nn.BatchNorm2d(filters, momentum=0.03, eps=1E-4) - if i == 0 and filters == 3: # normalize RGB image - # imagenet mean and var https://pytorch.org/docs/stable/torchvision/models.html#classification - modules.running_mean = torch.tensor([0.485, 0.456, 0.406]) - modules.running_var = torch.tensor([0.0524, 0.0502, 0.0506]) - - elif mdef['type'] == 'maxpool': - k = mdef['size'] # kernel size - stride = mdef['stride'] - maxpool = nn.MaxPool2d(kernel_size=k, stride=stride, padding=(k - 1) // 2) - if k == 2 and stride == 1: # yolov3-tiny - modules.add_module('ZeroPad2d', nn.ZeroPad2d((0, 1, 0, 1))) - modules.add_module('MaxPool2d', maxpool) - else: - modules = maxpool - - elif mdef['type'] == 'upsample': - if ONNX_EXPORT: # explicitly state size, avoid scale_factor - g = (yolo_index + 1) * 2 / 32 # gain - modules = nn.Upsample(size=tuple(int(x * g) for x in img_size)) # img_size = (320, 192) - else: - modules = nn.Upsample(scale_factor=mdef['stride']) - - elif mdef['type'] == 'route': # nn.Sequential() placeholder for 'route' layer - layers = mdef['layers'] - filters = sum([output_filters[l + 1 if l > 0 else l] for l in layers]) - routs.extend([i + l if l < 0 else l for l in layers]) - modules = FeatureConcat(layers=layers) - - elif mdef['type'] == 'shortcut': # nn.Sequential() placeholder for 'shortcut' layer - layers = mdef['from'] - filters = output_filters[-1] - routs.extend([i + l if l < 0 else l for l in layers]) - modules = WeightedFeatureFusion(layers=layers, weight='weights_type' in mdef) - - elif mdef['type'] == 'reorg3d': # yolov3-spp-pan-scale - pass - - elif mdef['type'] == 'yolo': - yolo_index += 1 - stride = [32, 16, 8] # P5, P4, P3 strides - if any(x in cfg for x in ['panet', 'yolov4', 'cd53']): # stride order reversed - stride = list(reversed(stride)) - layers = mdef['from'] if 'from' in mdef else [] - modules = YOLOLayer(anchors=mdef['anchors'][mdef['mask']], # anchor list - nc=mdef['classes'], # number of classes - img_size=img_size, # (416, 416) - yolo_index=yolo_index, # 0, 1, 2... - layers=layers, # output layers - stride=stride[yolo_index]) - - # Initialize preceding Conv2d() bias (https://arxiv.org/pdf/1708.02002.pdf section 3.3) - try: - j = layers[yolo_index] if 'from' in mdef else -1 - # If previous layer is a dropout layer, get the one before - if module_list[j].__class__.__name__ == 'Dropout': - j -= 1 - bias_ = module_list[j][0].bias # shape(255,) - bias = bias_[:modules.no * modules.na].view(modules.na, -1) # shape(3,85) - bias[:, 4] += -4.5 # obj - bias[:, 5:] += math.log(0.6 / (modules.nc - 0.99)) # cls (sigmoid(p) = 1/nc) - module_list[j][0].bias = torch.nn.Parameter(bias_, requires_grad=bias_.requires_grad) - except: - print('WARNING: smart bias initialization failure.') - - elif mdef['type'] == 'dropout': - perc = float(mdef['probability']) - modules = nn.Dropout(p=perc) - else: - print('Warning: Unrecognized Layer Type: ' + mdef['type']) - - # Register module list and number of output filters - module_list.append(modules) - output_filters.append(filters) - - routs_binary = [False] * (i + 1) - for i in routs: - routs_binary[i] = True - return module_list, routs_binary - - -class YOLOLayer(nn.Module): - def __init__(self, anchors, nc, img_size, yolo_index, layers, stride): - super(YOLOLayer, self).__init__() - self.anchors = torch.Tensor(anchors) - self.index = yolo_index # index of this layer in layers - self.layers = layers # model output layer indices - self.stride = stride # layer stride - self.nl = len(layers) # number of output layers (3) - self.na = len(anchors) # number of anchors (3) - self.nc = nc # number of classes (80) - self.no = nc + 5 # number of outputs (85) - self.nx, self.ny, self.ng = 0, 0, 0 # initialize number of x, y gridpoints - self.anchor_vec = self.anchors / self.stride - self.anchor_wh = self.anchor_vec.view(1, self.na, 1, 1, 2) - - if ONNX_EXPORT: - self.training = False - self.create_grids((img_size[1] // stride, img_size[0] // stride)) # number x, y grid points - - def create_grids(self, ng=(13, 13), device='cpu'): - self.nx, self.ny = ng # x and y grid size - self.ng = torch.tensor(ng, dtype=torch.float) - - # build xy offsets - if not self.training: - yv, xv = torch.meshgrid([torch.arange(self.ny, device=device), torch.arange(self.nx, device=device)]) - self.grid = torch.stack((xv, yv), 2).view((1, 1, self.ny, self.nx, 2)).float() - - if self.anchor_vec.device != device: - self.anchor_vec = self.anchor_vec.to(device) - self.anchor_wh = self.anchor_wh.to(device) - - def forward(self, p, out): - ASFF = False # https://arxiv.org/abs/1911.09516 - if ASFF: - i, n = self.index, self.nl # index in layers, number of layers - p = out[self.layers[i]] - bs, _, ny, nx = p.shape # bs, 255, 13, 13 - if (self.nx, self.ny) != (nx, ny): - self.create_grids((nx, ny), p.device) - - # outputs and weights - # w = F.softmax(p[:, -n:], 1) # normalized weights - w = torch.sigmoid(p[:, -n:]) * (2 / n) # sigmoid weights (faster) - # w = w / w.sum(1).unsqueeze(1) # normalize across layer dimension - - # weighted ASFF sum - p = out[self.layers[i]][:, :-n] * w[:, i:i + 1] - for j in range(n): - if j != i: - p += w[:, j:j + 1] * \ - F.interpolate(out[self.layers[j]][:, :-n], size=[ny, nx], mode='bilinear', align_corners=False) - - elif ONNX_EXPORT: - bs = 1 # batch size - else: - bs, _, ny, nx = p.shape # bs, 255, 13, 13 - if (self.nx, self.ny) != (nx, ny): - self.create_grids((nx, ny), p.device) - - # p.view(bs, 255, 13, 13) -- > (bs, 3, 13, 13, 85) # (bs, anchors, grid, grid, classes + xywh) - p = p.view(bs, self.na, self.no, self.ny, self.nx).permute(0, 1, 3, 4, 2).contiguous() # prediction - - if self.training: - return p - - elif ONNX_EXPORT: - # Avoid broadcasting for ANE operations - m = self.na * self.nx * self.ny - ng = 1. / self.ng.repeat(m, 1) - grid = self.grid.repeat(1, self.na, 1, 1, 1).view(m, 2) - anchor_wh = self.anchor_wh.repeat(1, 1, self.nx, self.ny, 1).view(m, 2) * ng - - p = p.view(m, self.no) - xy = torch.sigmoid(p[:, 0:2]) + grid # x, y - wh = torch.exp(p[:, 2:4]) * anchor_wh # width, height - p_cls = torch.sigmoid(p[:, 4:5]) if self.nc == 1 else \ - torch.sigmoid(p[:, 5:self.no]) * torch.sigmoid(p[:, 4:5]) # conf - return p_cls, xy * ng, wh - - else: # inference - io = p.clone() # inference output - io[..., :2] = torch.sigmoid(io[..., :2]) + self.grid # xy - io[..., 2:4] = torch.exp(io[..., 2:4]) * self.anchor_wh # wh yolo method - io[..., :4] *= self.stride - torch.sigmoid_(io[..., 4:]) - return io.view(bs, -1, self.no), p # view [1, 3, 13, 13, 85] as [1, 507, 85] - - -class Darknet(nn.Module): - # YOLOv3 object detection model - - def __init__(self, cfg, img_size=(416, 416), verbose=False): - super(Darknet, self).__init__() - - self.module_defs = parse_model_cfg(cfg) - self.module_list, self.routs = create_modules(self.module_defs, img_size, cfg) - self.yolo_layers = get_yolo_layers(self) - # torch_utils.initialize_weights(self) - - # Darknet Header https://github.com/AlexeyAB/darknet/issues/2914#issuecomment-496675346 - self.version = np.array([0, 2, 5], dtype=np.int32) # (int32) version info: major, minor, revision - self.seen = np.array([0], dtype=np.int64) # (int64) number of images seen during training - self.info(verbose) if not ONNX_EXPORT else None # print model description - - def forward(self, x, augment=False, verbose=False): - - if not augment: - return self.forward_once(x) - else: # Augment images (inference and test only) https://github.com/ultralytics/yolov3/issues/931 - img_size = x.shape[-2:] # height, width - s = [0.83, 0.67] # scales - y = [] - for i, xi in enumerate((x, - torch_utils.scale_img(x.flip(3), s[0], same_shape=False), # flip-lr and scale - torch_utils.scale_img(x, s[1], same_shape=False), # scale - )): - # cv2.imwrite('img%g.jpg' % i, 255 * xi[0].numpy().transpose((1, 2, 0))[:, :, ::-1]) - y.append(self.forward_once(xi)[0]) - - y[1][..., :4] /= s[0] # scale - y[1][..., 0] = img_size[1] - y[1][..., 0] # flip lr - y[2][..., :4] /= s[1] # scale - - # for i, yi in enumerate(y): # coco small, medium, large = < 32**2 < 96**2 < - # area = yi[..., 2:4].prod(2)[:, :, None] - # if i == 1: - # yi *= (area < 96. ** 2).float() - # elif i == 2: - # yi *= (area > 32. ** 2).float() - # y[i] = yi - - y = torch.cat(y, 1) - return y, None - - def forward_once(self, x, augment=False, verbose=False): - img_size = x.shape[-2:] # height, width - yolo_out, out = [], [] - if verbose: - print('0', x.shape) - str = '' - - # Augment images (inference and test only) - if augment: # https://github.com/ultralytics/yolov3/issues/931 - nb = x.shape[0] # batch size - s = [0.83, 0.67] # scales - x = torch.cat((x, - torch_utils.scale_img(x.flip(3), s[0]), # flip-lr and scale - torch_utils.scale_img(x, s[1]), # scale - ), 0) - - for i, module in enumerate(self.module_list): - name = module.__class__.__name__ - if name in ['WeightedFeatureFusion', 'FeatureConcat']: # sum, concat - if verbose: - l = [i - 1] + module.layers # layers - sh = [list(x.shape)] + [list(out[i].shape) for i in module.layers] # shapes - str = ' >> ' + ' + '.join(['layer %g %s' % x for x in zip(l, sh)]) - x = module(x, out) # WeightedFeatureFusion(), FeatureConcat() - elif name == 'YOLOLayer': - yolo_out.append(module(x, out)) - else: # run module directly, i.e. mtype = 'convolutional', 'upsample', 'maxpool', 'batchnorm2d' etc. - x = module(x) - - out.append(x if self.routs[i] else []) - if verbose: - print('%g/%g %s -' % (i, len(self.module_list), name), list(x.shape), str) - str = '' - - if self.training: # train - return yolo_out - elif ONNX_EXPORT: # export - x = [torch.cat(x, 0) for x in zip(*yolo_out)] - return x[0], torch.cat(x[1:3], 1) # scores, boxes: 3780x80, 3780x4 - else: # inference or test - x, p = zip(*yolo_out) # inference output, training output - x = torch.cat(x, 1) # cat yolo outputs - if augment: # de-augment results - x = torch.split(x, nb, dim=0) - x[1][..., :4] /= s[0] # scale - x[1][..., 0] = img_size[1] - x[1][..., 0] # flip lr - x[2][..., :4] /= s[1] # scale - x = torch.cat(x, 1) - return x, p - - def fuse(self): - # Fuse Conv2d + BatchNorm2d layers throughout model - print('Fusing layers...') - fused_list = nn.ModuleList() - for a in list(self.children())[0]: - if isinstance(a, nn.Sequential): - for i, b in enumerate(a): - if isinstance(b, nn.modules.batchnorm.BatchNorm2d): - # fuse this bn layer with the previous conv2d layer - conv = a[i - 1] - fused = torch_utils.fuse_conv_and_bn(conv, b) - a = nn.Sequential(fused, *list(a.children())[i + 1:]) - break - fused_list.append(a) - self.module_list = fused_list - self.info() if not ONNX_EXPORT else None # yolov3-spp reduced from 225 to 152 layers - - def info(self, verbose=False): - torch_utils.model_info(self, verbose) - - -def get_yolo_layers(model): - return [i for i, m in enumerate(model.module_list) if m.__class__.__name__ == 'YOLOLayer'] # [89, 101, 113] - - -def load_darknet_weights(self, weights, cutoff=-1): - # Parses and loads the weights stored in 'weights' - - # Establish cutoffs (load layers between 0 and cutoff. if cutoff = -1 all are loaded) - file = Path(weights).name - if file == 'darknet53.conv.74': - cutoff = 75 - elif file == 'yolov3-tiny.conv.15': - cutoff = 15 - - # Read weights file - with open(weights, 'rb') as f: - # Read Header https://github.com/AlexeyAB/darknet/issues/2914#issuecomment-496675346 - self.version = np.fromfile(f, dtype=np.int32, count=3) # (int32) version info: major, minor, revision - self.seen = np.fromfile(f, dtype=np.int64, count=1) # (int64) number of images seen during training - - weights = np.fromfile(f, dtype=np.float32) # the rest are weights - - ptr = 0 - for i, (mdef, module) in enumerate(zip(self.module_defs[:cutoff], self.module_list[:cutoff])): - if mdef['type'] == 'convolutional': - conv = module[0] - if mdef['batch_normalize']: - # Load BN bias, weights, running mean and running variance - bn = module[1] - nb = bn.bias.numel() # number of biases - # Bias - bn.bias.data.copy_(torch.from_numpy(weights[ptr:ptr + nb]).view_as(bn.bias)) - ptr += nb - # Weight - bn.weight.data.copy_(torch.from_numpy(weights[ptr:ptr + nb]).view_as(bn.weight)) - ptr += nb - # Running Mean - bn.running_mean.data.copy_(torch.from_numpy(weights[ptr:ptr + nb]).view_as(bn.running_mean)) - ptr += nb - # Running Var - bn.running_var.data.copy_(torch.from_numpy(weights[ptr:ptr + nb]).view_as(bn.running_var)) - ptr += nb - else: - # Load conv. bias - nb = conv.bias.numel() - conv_b = torch.from_numpy(weights[ptr:ptr + nb]).view_as(conv.bias) - conv.bias.data.copy_(conv_b) - ptr += nb - # Load conv. weights - nw = conv.weight.numel() # number of weights - conv.weight.data.copy_(torch.from_numpy(weights[ptr:ptr + nw]).view_as(conv.weight)) - ptr += nw - - -def save_weights(self, path='model.weights', cutoff=-1): - # Converts a PyTorch model to Darket format (*.pt to *.weights) - # Note: Does not work if model.fuse() is applied - with open(path, 'wb') as f: - # Write Header https://github.com/AlexeyAB/darknet/issues/2914#issuecomment-496675346 - self.version.tofile(f) # (int32) version info: major, minor, revision - self.seen.tofile(f) # (int64) number of images seen during training - - # Iterate through layers - for i, (mdef, module) in enumerate(zip(self.module_defs[:cutoff], self.module_list[:cutoff])): - if mdef['type'] == 'convolutional': - conv_layer = module[0] - # If batch norm, load bn first - if mdef['batch_normalize']: - bn_layer = module[1] - bn_layer.bias.data.cpu().numpy().tofile(f) - bn_layer.weight.data.cpu().numpy().tofile(f) - bn_layer.running_mean.data.cpu().numpy().tofile(f) - bn_layer.running_var.data.cpu().numpy().tofile(f) - # Load conv bias - else: - conv_layer.bias.data.cpu().numpy().tofile(f) - # Load conv weights - conv_layer.weight.data.cpu().numpy().tofile(f) - - -def convert(cfg='cfg/yolov3-spp.cfg', weights='weights/yolov3-spp.weights'): - # Converts between PyTorch and Darknet format per extension (i.e. *.weights convert to *.pt and vice versa) - # from models import *; convert('cfg/yolov3-spp.cfg', 'weights/yolov3-spp.weights') - - # Initialize model - model = Darknet(cfg) - - # Load weights and save - if weights.endswith('.pt'): # if PyTorch format - model.load_state_dict(torch.load(weights, map_location='cpu')['model']) - target = weights.rsplit('.', 1)[0] + '.weights' - save_weights(model, path=target, cutoff=-1) - print("Success: converted '%s' to '%s'" % (weights, target)) - - elif weights.endswith('.weights'): # darknet format - _ = load_darknet_weights(model, weights) - - chkpt = {'epoch': -1, - 'best_fitness': None, - 'training_results': None, - 'model': model.state_dict(), - 'optimizer': None} - - target = weights.rsplit('.', 1)[0] + '.pt' - torch.save(chkpt, target) - print("Success: converted '%s' to '%s'" % (weights, target)) - - else: - print('Error: extension not supported.') - - -def attempt_download(weights): - # Attempt to download pretrained weights if not found locally - weights = weights.strip().replace("'", '') - msg = weights + ' missing, try downloading from https://drive.google.com/open?id=1LezFG5g3BCW6iYaV89B2i64cqEUZD7e0' - - if len(weights) > 0 and not os.path.isfile(weights): - d = {'yolov3-spp.weights': '16lYS4bcIdM2HdmyJBVDOvt3Trx6N3W2R', - 'yolov3.weights': '1uTlyDWlnaqXcsKOktP5aH_zRDbfcDp-y', - 'yolov3-tiny.weights': '1CCF-iNIIkYesIDzaPvdwlcf7H9zSsKZQ', - 'yolov3-spp.pt': '1f6Ovy3BSq2wYq4UfvFUpxJFNDFfrIDcR', - 'yolov3.pt': '1SHNFyoe5Ni8DajDNEqgB2oVKBb_NoEad', - 'yolov3-tiny.pt': '10m_3MlpQwRtZetQxtksm9jqHrPTHZ6vo', - 'darknet53.conv.74': '1WUVBid-XuoUBmvzBVUCBl_ELrzqwA8dJ', - 'yolov3-tiny.conv.15': '1Bw0kCpplxUqyRYAJr9RY9SGnOJbo9nEj', - 'yolov3-spp-ultralytics.pt': '1UcR-zVoMs7DH5dj3N1bswkiQTA4dmKF4'} - - file = Path(weights).name - if file in d: - r = gdrive_download(id=d[file], name=weights) - else: # download from pjreddie.com - url = 'https://pjreddie.com/media/files/' + file - print('Downloading ' + url) - r = os.system('curl -f ' + url + ' -o ' + weights) - - # Error check - if not (r == 0 and os.path.exists(weights) and os.path.getsize(weights) > 1E6): # weights exist and > 1MB - os.system('rm ' + weights) # remove partial downloads - raise Exception(msg) diff --git a/models/__init__.py b/models/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/models/common.py b/models/common.py new file mode 100644 index 00000000..f23faa1d --- /dev/null +++ b/models/common.py @@ -0,0 +1,252 @@ +# This file contains modules common to various models + +import math + +import numpy as np +import torch +import torch.nn as nn +from PIL import Image, ImageDraw + +from utils.datasets import letterbox +from utils.general import non_max_suppression, make_divisible, scale_coords, xyxy2xywh +from utils.plots import color_list + + +def autopad(k, p=None): # kernel, padding + # Pad to 'same' + if p is None: + p = k // 2 if isinstance(k, int) else [x // 2 for x in k] # auto-pad + return p + + +def DWConv(c1, c2, k=1, s=1, act=True): + # Depthwise convolution + return Conv(c1, c2, k, s, g=math.gcd(c1, c2), act=act) + + +class Conv(nn.Module): + # Standard convolution + def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True): # ch_in, ch_out, kernel, stride, padding, groups + super(Conv, self).__init__() + self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p), groups=g, bias=False) + self.bn = nn.BatchNorm2d(c2) + self.act = nn.LeakyReLU(0.1) if act else nn.Identity() + + def forward(self, x): + return self.act(self.bn(self.conv(x))) + + def fuseforward(self, x): + return self.act(self.conv(x)) + + +class Bottleneck(nn.Module): + # Standard bottleneck + def __init__(self, c1, c2, shortcut=True, g=1, e=0.5): # ch_in, ch_out, shortcut, groups, expansion + super(Bottleneck, self).__init__() + c_ = int(c2 * e) # hidden channels + self.cv1 = Conv(c1, c_, 1, 1) + self.cv2 = Conv(c_, c2, 3, 1, g=g) + self.add = shortcut and c1 == c2 + + def forward(self, x): + return x + self.cv2(self.cv1(x)) if self.add else self.cv2(self.cv1(x)) + + +class BottleneckCSP(nn.Module): + # CSP Bottleneck https://github.com/WongKinYiu/CrossStagePartialNetworks + def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ch_out, number, shortcut, groups, expansion + super(BottleneckCSP, self).__init__() + c_ = int(c2 * e) # hidden channels + self.cv1 = Conv(c1, c_, 1, 1) + self.cv2 = nn.Conv2d(c1, c_, 1, 1, bias=False) + self.cv3 = nn.Conv2d(c_, c_, 1, 1, bias=False) + self.cv4 = Conv(2 * c_, c2, 1, 1) + self.bn = nn.BatchNorm2d(2 * c_) # applied to cat(cv2, cv3) + self.act = nn.LeakyReLU(0.1, inplace=True) + self.m = nn.Sequential(*[Bottleneck(c_, c_, shortcut, g, e=1.0) for _ in range(n)]) + + def forward(self, x): + y1 = self.cv3(self.m(self.cv1(x))) + y2 = self.cv2(x) + return self.cv4(self.act(self.bn(torch.cat((y1, y2), dim=1)))) + + +class SPP(nn.Module): + # Spatial pyramid pooling layer used in YOLOv3-SPP + def __init__(self, c1, c2, k=(5, 9, 13)): + super(SPP, self).__init__() + c_ = c1 // 2 # hidden channels + self.cv1 = Conv(c1, c_, 1, 1) + self.cv2 = Conv(c_ * (len(k) + 1), c2, 1, 1) + self.m = nn.ModuleList([nn.MaxPool2d(kernel_size=x, stride=1, padding=x // 2) for x in k]) + + def forward(self, x): + x = self.cv1(x) + return self.cv2(torch.cat([x] + [m(x) for m in self.m], 1)) + + +class Focus(nn.Module): + # Focus wh information into c-space + def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True): # ch_in, ch_out, kernel, stride, padding, groups + super(Focus, self).__init__() + self.conv = Conv(c1 * 4, c2, k, s, p, g, act) + + def forward(self, x): # x(b,c,w,h) -> y(b,4c,w/2,h/2) + return self.conv(torch.cat([x[..., ::2, ::2], x[..., 1::2, ::2], x[..., ::2, 1::2], x[..., 1::2, 1::2]], 1)) + + +class Concat(nn.Module): + # Concatenate a list of tensors along dimension + def __init__(self, dimension=1): + super(Concat, self).__init__() + self.d = dimension + + def forward(self, x): + return torch.cat(x, self.d) + + +class NMS(nn.Module): + # Non-Maximum Suppression (NMS) module + conf = 0.25 # confidence threshold + iou = 0.45 # IoU threshold + classes = None # (optional list) filter by class + + def __init__(self): + super(NMS, self).__init__() + + def forward(self, x): + return non_max_suppression(x[0], conf_thres=self.conf, iou_thres=self.iou, classes=self.classes) + + +class autoShape(nn.Module): + # input-robust model wrapper for passing cv2/np/PIL/torch inputs. Includes preprocessing, inference and NMS + img_size = 640 # inference size (pixels) + conf = 0.25 # NMS confidence threshold + iou = 0.45 # NMS IoU threshold + classes = None # (optional list) filter by class + + def __init__(self, model): + super(autoShape, self).__init__() + self.model = model.eval() + + def forward(self, imgs, size=640, augment=False, profile=False): + # supports inference from various sources. For height=720, width=1280, RGB images example inputs are: + # opencv: imgs = cv2.imread('image.jpg')[:,:,::-1] # HWC BGR to RGB x(720,1280,3) + # PIL: imgs = Image.open('image.jpg') # HWC x(720,1280,3) + # numpy: imgs = np.zeros((720,1280,3)) # HWC + # torch: imgs = torch.zeros(16,3,720,1280) # BCHW + # multiple: imgs = [Image.open('image1.jpg'), Image.open('image2.jpg'), ...] # list of images + + p = next(self.model.parameters()) # for device and type + if isinstance(imgs, torch.Tensor): # torch + return self.model(imgs.to(p.device).type_as(p), augment, profile) # inference + + # Pre-process + if not isinstance(imgs, list): + imgs = [imgs] + shape0, shape1 = [], [] # image and inference shapes + batch = range(len(imgs)) # batch size + for i in batch: + imgs[i] = np.array(imgs[i]) # to numpy + if imgs[i].shape[0] < 5: # image in CHW + imgs[i] = imgs[i].transpose((1, 2, 0)) # reverse dataloader .transpose(2, 0, 1) + imgs[i] = imgs[i][:, :, :3] if imgs[i].ndim == 3 else np.tile(imgs[i][:, :, None], 3) # enforce 3ch input + s = imgs[i].shape[:2] # HWC + shape0.append(s) # image shape + g = (size / max(s)) # gain + shape1.append([y * g for y in s]) + shape1 = [make_divisible(x, int(self.stride.max())) for x in np.stack(shape1, 0).max(0)] # inference shape + x = [letterbox(imgs[i], new_shape=shape1, auto=False)[0] for i in batch] # pad + x = np.stack(x, 0) if batch[-1] else x[0][None] # stack + x = np.ascontiguousarray(x.transpose((0, 3, 1, 2))) # BHWC to BCHW + x = torch.from_numpy(x).to(p.device).type_as(p) / 255. # uint8 to fp16/32 + + # Inference + with torch.no_grad(): + y = self.model(x, augment, profile)[0] # forward + y = non_max_suppression(y, conf_thres=self.conf, iou_thres=self.iou, classes=self.classes) # NMS + + # Post-process + for i in batch: + if y[i] is not None: + y[i][:, :4] = scale_coords(shape1, y[i][:, :4], shape0[i]) + + return Detections(imgs, y, self.names) + + +class Detections: + # detections class for YOLOv5 inference results + def __init__(self, imgs, pred, names=None): + super(Detections, self).__init__() + self.imgs = imgs # list of images as numpy arrays + self.pred = pred # list of tensors pred[0] = (xyxy, conf, cls) + self.names = names # class names + self.xyxy = pred # xyxy pixels + self.xywh = [xyxy2xywh(x) for x in pred] # xywh pixels + d = pred[0].device # device + gn = [torch.tensor([*[im.shape[i] for i in [1, 0, 1, 0]], 1., 1.], device=d) for im in imgs] # normalizations + self.xyxyn = [x / g for x, g in zip(self.xyxy, gn)] # xyxy normalized + self.xywhn = [x / g for x, g in zip(self.xywh, gn)] # xywh normalized + self.n = len(self.pred) + + def display(self, pprint=False, show=False, save=False): + colors = color_list() + for i, (img, pred) in enumerate(zip(self.imgs, self.pred)): + str = f'Image {i + 1}/{len(self.pred)}: {img.shape[0]}x{img.shape[1]} ' + if pred is not None: + for c in pred[:, -1].unique(): + n = (pred[:, -1] == c).sum() # detections per class + str += f'{n} {self.names[int(c)]}s, ' # add to string + if show or save: + img = Image.fromarray(img.astype(np.uint8)) if isinstance(img, np.ndarray) else img # from np + for *box, conf, cls in pred: # xyxy, confidence, class + # str += '%s %.2f, ' % (names[int(cls)], conf) # label + ImageDraw.Draw(img).rectangle(box, width=4, outline=colors[int(cls) % 10]) # plot + if save: + f = f'results{i}.jpg' + str += f"saved to '{f}'" + img.save(f) # save + if show: + img.show(f'Image {i}') # show + if pprint: + print(str) + + def print(self): + self.display(pprint=True) # print results + + def show(self): + self.display(show=True) # show results + + def save(self): + self.display(save=True) # save results + + def __len__(self): + return self.n + + def tolist(self): + # return a list of Detections objects, i.e. 'for result in results.tolist():' + x = [Detections([self.imgs[i]], [self.pred[i]], self.names) for i in range(self.n)] + for d in x: + for k in ['imgs', 'pred', 'xyxy', 'xyxyn', 'xywh', 'xywhn']: + setattr(d, k, getattr(d, k)[0]) # pop out of list + return x + + +class Flatten(nn.Module): + # Use after nn.AdaptiveAvgPool2d(1) to remove last 2 dimensions + @staticmethod + def forward(x): + return x.view(x.size(0), -1) + + +class Classify(nn.Module): + # Classification head, i.e. x(b,c1,20,20) to x(b,c2) + def __init__(self, c1, c2, k=1, s=1, p=None, g=1): # ch_in, ch_out, kernel, stride, padding, groups + super(Classify, self).__init__() + self.aap = nn.AdaptiveAvgPool2d(1) # to x(b,c1,1,1) + self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p), groups=g, bias=False) # to x(b,c2,1,1) + self.flat = Flatten() + + def forward(self, x): + z = torch.cat([self.aap(y) for y in (x if isinstance(x, list) else [x])], 1) # cat if list + return self.flat(self.conv(z)) # flatten to x(b,c2) diff --git a/models/experimental.py b/models/experimental.py new file mode 100644 index 00000000..a2908a15 --- /dev/null +++ b/models/experimental.py @@ -0,0 +1,152 @@ +# This file contains experimental modules + +import numpy as np +import torch +import torch.nn as nn + +from models.common import Conv, DWConv +from utils.google_utils import attempt_download + + +class CrossConv(nn.Module): + # Cross Convolution Downsample + def __init__(self, c1, c2, k=3, s=1, g=1, e=1.0, shortcut=False): + # ch_in, ch_out, kernel, stride, groups, expansion, shortcut + super(CrossConv, self).__init__() + c_ = int(c2 * e) # hidden channels + self.cv1 = Conv(c1, c_, (1, k), (1, s)) + self.cv2 = Conv(c_, c2, (k, 1), (s, 1), g=g) + self.add = shortcut and c1 == c2 + + def forward(self, x): + return x + self.cv2(self.cv1(x)) if self.add else self.cv2(self.cv1(x)) + + +class C3(nn.Module): + # Cross Convolution CSP + def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ch_out, number, shortcut, groups, expansion + super(C3, self).__init__() + c_ = int(c2 * e) # hidden channels + self.cv1 = Conv(c1, c_, 1, 1) + self.cv2 = nn.Conv2d(c1, c_, 1, 1, bias=False) + self.cv3 = nn.Conv2d(c_, c_, 1, 1, bias=False) + self.cv4 = Conv(2 * c_, c2, 1, 1) + self.bn = nn.BatchNorm2d(2 * c_) # applied to cat(cv2, cv3) + self.act = nn.LeakyReLU(0.1, inplace=True) + self.m = nn.Sequential(*[CrossConv(c_, c_, 3, 1, g, 1.0, shortcut) for _ in range(n)]) + + def forward(self, x): + y1 = self.cv3(self.m(self.cv1(x))) + y2 = self.cv2(x) + return self.cv4(self.act(self.bn(torch.cat((y1, y2), dim=1)))) + + +class Sum(nn.Module): + # Weighted sum of 2 or more layers https://arxiv.org/abs/1911.09070 + def __init__(self, n, weight=False): # n: number of inputs + super(Sum, self).__init__() + self.weight = weight # apply weights boolean + self.iter = range(n - 1) # iter object + if weight: + self.w = nn.Parameter(-torch.arange(1., n) / 2, requires_grad=True) # layer weights + + def forward(self, x): + y = x[0] # no weight + if self.weight: + w = torch.sigmoid(self.w) * 2 + for i in self.iter: + y = y + x[i + 1] * w[i] + else: + for i in self.iter: + y = y + x[i + 1] + return y + + +class GhostConv(nn.Module): + # Ghost Convolution https://github.com/huawei-noah/ghostnet + def __init__(self, c1, c2, k=1, s=1, g=1, act=True): # ch_in, ch_out, kernel, stride, groups + super(GhostConv, self).__init__() + c_ = c2 // 2 # hidden channels + self.cv1 = Conv(c1, c_, k, s, None, g, act) + self.cv2 = Conv(c_, c_, 5, 1, None, c_, act) + + def forward(self, x): + y = self.cv1(x) + return torch.cat([y, self.cv2(y)], 1) + + +class GhostBottleneck(nn.Module): + # Ghost Bottleneck https://github.com/huawei-noah/ghostnet + def __init__(self, c1, c2, k, s): + super(GhostBottleneck, self).__init__() + c_ = c2 // 2 + self.conv = nn.Sequential(GhostConv(c1, c_, 1, 1), # pw + DWConv(c_, c_, k, s, act=False) if s == 2 else nn.Identity(), # dw + GhostConv(c_, c2, 1, 1, act=False)) # pw-linear + self.shortcut = nn.Sequential(DWConv(c1, c1, k, s, act=False), + Conv(c1, c2, 1, 1, act=False)) if s == 2 else nn.Identity() + + def forward(self, x): + return self.conv(x) + self.shortcut(x) + + +class MixConv2d(nn.Module): + # Mixed Depthwise Conv https://arxiv.org/abs/1907.09595 + def __init__(self, c1, c2, k=(1, 3), s=1, equal_ch=True): + super(MixConv2d, self).__init__() + groups = len(k) + if equal_ch: # equal c_ per group + i = torch.linspace(0, groups - 1E-6, c2).floor() # c2 indices + c_ = [(i == g).sum() for g in range(groups)] # intermediate channels + else: # equal weight.numel() per group + b = [c2] + [0] * groups + a = np.eye(groups + 1, groups, k=-1) + a -= np.roll(a, 1, axis=1) + a *= np.array(k) ** 2 + a[0] = 1 + c_ = np.linalg.lstsq(a, b, rcond=None)[0].round() # solve for equal weight indices, ax = b + + self.m = nn.ModuleList([nn.Conv2d(c1, int(c_[g]), k[g], s, k[g] // 2, bias=False) for g in range(groups)]) + self.bn = nn.BatchNorm2d(c2) + self.act = nn.LeakyReLU(0.1, inplace=True) + + def forward(self, x): + return x + self.act(self.bn(torch.cat([m(x) for m in self.m], 1))) + + +class Ensemble(nn.ModuleList): + # Ensemble of models + def __init__(self): + super(Ensemble, self).__init__() + + def forward(self, x, augment=False): + y = [] + for module in self: + y.append(module(x, augment)[0]) + # y = torch.stack(y).max(0)[0] # max ensemble + # y = torch.cat(y, 1) # nms ensemble + y = torch.stack(y).mean(0) # mean ensemble + return y, None # inference, train output + + +def attempt_load(weights, map_location=None): + # Loads an ensemble of models weights=[a,b,c] or a single model weights=[a] or weights=a + model = Ensemble() + for w in weights if isinstance(weights, list) else [weights]: + attempt_download(w) + model.append(torch.load(w, map_location=map_location)['model'].float().fuse().eval()) # load FP32 model + + # Compatibility updates + for m in model.modules(): + if type(m) in [nn.Hardswish, nn.LeakyReLU, nn.ReLU, nn.ReLU6]: + m.inplace = True # pytorch 1.7.0 compatibility + elif type(m) is Conv: + m._non_persistent_buffers_set = set() # pytorch 1.6.0 compatibility + + if len(model) == 1: + return model[-1] # return model + else: + print('Ensemble created with %s\n' % weights) + for k in ['names', 'stride']: + setattr(model, k, getattr(model[-1], k)) + return model # return ensemble diff --git a/models/export.py b/models/export.py new file mode 100644 index 00000000..7fbc3d95 --- /dev/null +++ b/models/export.py @@ -0,0 +1,94 @@ +"""Exports a YOLOv5 *.pt model to ONNX and TorchScript formats + +Usage: + $ export PYTHONPATH="$PWD" && python models/export.py --weights ./weights/yolov3.pt --img 640 --batch 1 +""" + +import argparse +import sys +import time + +sys.path.append('./') # to run '$ python *.py' files in subdirectories + +import torch +import torch.nn as nn + +import models +from models.experimental import attempt_load +from utils.activations import Hardswish +from utils.general import set_logging, check_img_size + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--weights', type=str, default='./yolov3.pt', help='weights path') # from yolov3/models/ + parser.add_argument('--img-size', nargs='+', type=int, default=[640, 640], help='image size') # height, width + parser.add_argument('--batch-size', type=int, default=1, help='batch size') + opt = parser.parse_args() + opt.img_size *= 2 if len(opt.img_size) == 1 else 1 # expand + print(opt) + set_logging() + t = time.time() + + # Load PyTorch model + model = attempt_load(opt.weights, map_location=torch.device('cpu')) # load FP32 model + labels = model.names + + # Checks + gs = int(max(model.stride)) # grid size (max stride) + opt.img_size = [check_img_size(x, gs) for x in opt.img_size] # verify img_size are gs-multiples + + # Input + img = torch.zeros(opt.batch_size, 3, *opt.img_size) # image size(1,3,320,192) iDetection + + # Update model + for k, m in model.named_modules(): + m._non_persistent_buffers_set = set() # pytorch 1.6.0 compatibility + if isinstance(m, models.common.Conv) and isinstance(m.act, nn.Hardswish): + m.act = Hardswish() # assign activation + # if isinstance(m, models.yolo.Detect): + # m.forward = m.forward_export # assign forward (optional) + model.model[-1].export = True # set Detect() layer export=True + y = model(img) # dry run + + # TorchScript export + try: + print('\nStarting TorchScript export with torch %s...' % torch.__version__) + f = opt.weights.replace('.pt', '.torchscript.pt') # filename + ts = torch.jit.trace(model, img) + ts.save(f) + print('TorchScript export success, saved as %s' % f) + except Exception as e: + print('TorchScript export failure: %s' % e) + + # ONNX export + try: + import onnx + + print('\nStarting ONNX export with onnx %s...' % onnx.__version__) + f = opt.weights.replace('.pt', '.onnx') # filename + torch.onnx.export(model, img, f, verbose=False, opset_version=12, input_names=['images'], + output_names=['classes', 'boxes'] if y is None else ['output']) + + # Checks + onnx_model = onnx.load(f) # load onnx model + onnx.checker.check_model(onnx_model) # check onnx model + # print(onnx.helper.printable_graph(onnx_model.graph)) # print a human readable model + print('ONNX export success, saved as %s' % f) + except Exception as e: + print('ONNX export failure: %s' % e) + + # CoreML export + try: + import coremltools as ct + + print('\nStarting CoreML export with coremltools %s...' % ct.__version__) + # convert model from torchscript and apply pixel scaling as per detect.py + model = ct.convert(ts, inputs=[ct.ImageType(name='image', shape=img.shape, scale=1 / 255.0, bias=[0, 0, 0])]) + f = opt.weights.replace('.pt', '.mlmodel') # filename + model.save(f) + print('CoreML export success, saved as %s' % f) + except Exception as e: + print('CoreML export failure: %s' % e) + + # Finish + print('\nExport complete (%.2fs). Visualize with https://github.com/lutzroeder/netron.' % (time.time() - t)) diff --git a/models/yolo.py b/models/yolo.py new file mode 100644 index 00000000..8978fb95 --- /dev/null +++ b/models/yolo.py @@ -0,0 +1,287 @@ +import argparse +import logging +import math +import sys +from copy import deepcopy +from pathlib import Path + +sys.path.append('./') # to run '$ python *.py' files in subdirectories +logger = logging.getLogger(__name__) + +import torch +import torch.nn as nn + +from models.common import Conv, Bottleneck, SPP, DWConv, Focus, BottleneckCSP, Concat, NMS, autoShape +from models.experimental import MixConv2d, CrossConv, C3 +from utils.autoanchor import check_anchor_order +from utils.general import make_divisible, check_file, set_logging +from utils.torch_utils import time_synchronized, fuse_conv_and_bn, model_info, scale_img, initialize_weights, \ + select_device, copy_attr + +try: + import thop # for FLOPS computation +except ImportError: + thop = None + + +class Detect(nn.Module): + stride = None # strides computed during build + export = False # onnx export + + def __init__(self, nc=80, anchors=(), ch=()): # detection layer + super(Detect, self).__init__() + self.nc = nc # number of classes + self.no = nc + 5 # number of outputs per anchor + self.nl = len(anchors) # number of detection layers + self.na = len(anchors[0]) // 2 # number of anchors + self.grid = [torch.zeros(1)] * self.nl # init grid + a = torch.tensor(anchors).float().view(self.nl, -1, 2) + self.register_buffer('anchors', a) # shape(nl,na,2) + self.register_buffer('anchor_grid', a.clone().view(self.nl, 1, -1, 1, 1, 2)) # shape(nl,1,na,1,1,2) + self.m = nn.ModuleList(nn.Conv2d(x, self.no * self.na, 1) for x in ch) # output conv + + def forward(self, x): + # x = x.copy() # for profiling + z = [] # inference output + self.training |= self.export + for i in range(self.nl): + x[i] = self.m[i](x[i]) # conv + bs, _, ny, nx = x[i].shape # x(bs,255,20,20) to x(bs,3,20,20,85) + x[i] = x[i].view(bs, self.na, self.no, ny, nx).permute(0, 1, 3, 4, 2).contiguous() + + if not self.training: # inference + if self.grid[i].shape[2:4] != x[i].shape[2:4]: + self.grid[i] = self._make_grid(nx, ny).to(x[i].device) + + y = x[i].sigmoid() + y[..., 0:2] = (y[..., 0:2] * 2. - 0.5 + self.grid[i].to(x[i].device)) * self.stride[i] # xy + y[..., 2:4] = (y[..., 2:4] * 2) ** 2 * self.anchor_grid[i] # wh + z.append(y.view(bs, -1, self.no)) + + return x if self.training else (torch.cat(z, 1), x) + + @staticmethod + def _make_grid(nx=20, ny=20): + yv, xv = torch.meshgrid([torch.arange(ny), torch.arange(nx)]) + return torch.stack((xv, yv), 2).view((1, 1, ny, nx, 2)).float() + + +class Model(nn.Module): + def __init__(self, cfg='yolov3.yaml', ch=3, nc=None): # model, input channels, number of classes + super(Model, self).__init__() + if isinstance(cfg, dict): + self.yaml = cfg # model dict + else: # is *.yaml + import yaml # for torch hub + self.yaml_file = Path(cfg).name + with open(cfg) as f: + self.yaml = yaml.load(f, Loader=yaml.FullLoader) # model dict + + # Define model + if nc and nc != self.yaml['nc']: + logger.info('Overriding model.yaml nc=%g with nc=%g' % (self.yaml['nc'], nc)) + self.yaml['nc'] = nc # override yaml value + self.model, self.save = parse_model(deepcopy(self.yaml), ch=[ch]) # model, savelist, ch_out + # print([x.shape for x in self.forward(torch.zeros(1, ch, 64, 64))]) + + # Build strides, anchors + m = self.model[-1] # Detect() + if isinstance(m, Detect): + s = 128 # 2x min stride + m.stride = torch.tensor([s / x.shape[-2] for x in self.forward(torch.zeros(1, ch, s, s))]) # forward + m.anchors /= m.stride.view(-1, 1, 1) + check_anchor_order(m) + self.stride = m.stride + self._initialize_biases() # only run once + # print('Strides: %s' % m.stride.tolist()) + + # Init weights, biases + initialize_weights(self) + self.info() + logger.info('') + + def forward(self, x, augment=False, profile=False): + if augment: + img_size = x.shape[-2:] # height, width + s = [1, 0.83, 0.67] # scales + f = [None, 3, None] # flips (2-ud, 3-lr) + y = [] # outputs + for si, fi in zip(s, f): + xi = scale_img(x.flip(fi) if fi else x, si) + yi = self.forward_once(xi)[0] # forward + # cv2.imwrite('img%g.jpg' % s, 255 * xi[0].numpy().transpose((1, 2, 0))[:, :, ::-1]) # save + yi[..., :4] /= si # de-scale + if fi == 2: + yi[..., 1] = img_size[0] - yi[..., 1] # de-flip ud + elif fi == 3: + yi[..., 0] = img_size[1] - yi[..., 0] # de-flip lr + y.append(yi) + return torch.cat(y, 1), None # augmented inference, train + else: + return self.forward_once(x, profile) # single-scale inference, train + + def forward_once(self, x, profile=False): + y, dt = [], [] # outputs + for m in self.model: + if m.f != -1: # if not from previous layer + x = y[m.f] if isinstance(m.f, int) else [x if j == -1 else y[j] for j in m.f] # from earlier layers + + if profile: + o = thop.profile(m, inputs=(x,), verbose=False)[0] / 1E9 * 2 if thop else 0 # FLOPS + t = time_synchronized() + for _ in range(10): + _ = m(x) + dt.append((time_synchronized() - t) * 100) + print('%10.1f%10.0f%10.1fms %-40s' % (o, m.np, dt[-1], m.type)) + + x = m(x) # run + y.append(x if m.i in self.save else None) # save output + + if profile: + print('%.1fms total' % sum(dt)) + return x + + def _initialize_biases(self, cf=None): # initialize biases into Detect(), cf is class frequency + # https://arxiv.org/abs/1708.02002 section 3.3 + # cf = torch.bincount(torch.tensor(np.concatenate(dataset.labels, 0)[:, 0]).long(), minlength=nc) + 1. + m = self.model[-1] # Detect() module + for mi, s in zip(m.m, m.stride): # from + b = mi.bias.view(m.na, -1) # conv.bias(255) to (3,85) + b[:, 4] += math.log(8 / (640 / s) ** 2) # obj (8 objects per 640 image) + b[:, 5:] += math.log(0.6 / (m.nc - 0.99)) if cf is None else torch.log(cf / cf.sum()) # cls + mi.bias = torch.nn.Parameter(b.view(-1), requires_grad=True) + + def _print_biases(self): + m = self.model[-1] # Detect() module + for mi in m.m: # from + b = mi.bias.detach().view(m.na, -1).T # conv.bias(255) to (3,85) + print(('%6g Conv2d.bias:' + '%10.3g' * 6) % (mi.weight.shape[1], *b[:5].mean(1).tolist(), b[5:].mean())) + + # def _print_weights(self): + # for m in self.model.modules(): + # if type(m) is Bottleneck: + # print('%10.3g' % (m.w.detach().sigmoid() * 2)) # shortcut weights + + def fuse(self): # fuse model Conv2d() + BatchNorm2d() layers + print('Fusing layers... ') + for m in self.model.modules(): + if type(m) is Conv and hasattr(m, 'bn'): + m.conv = fuse_conv_and_bn(m.conv, m.bn) # update conv + delattr(m, 'bn') # remove batchnorm + m.forward = m.fuseforward # update forward + self.info() + return self + + def nms(self, mode=True): # add or remove NMS module + present = type(self.model[-1]) is NMS # last layer is NMS + if mode and not present: + print('Adding NMS... ') + m = NMS() # module + m.f = -1 # from + m.i = self.model[-1].i + 1 # index + self.model.add_module(name='%s' % m.i, module=m) # add + self.eval() + elif not mode and present: + print('Removing NMS... ') + self.model = self.model[:-1] # remove + return self + + def autoshape(self): # add autoShape module + print('Adding autoShape... ') + m = autoShape(self) # wrap model + copy_attr(m, self, include=('yaml', 'nc', 'hyp', 'names', 'stride'), exclude=()) # copy attributes + return m + + def info(self, verbose=False, img_size=640): # print model information + model_info(self, verbose, img_size) + + +def parse_model(d, ch): # model_dict, input_channels(3) + logger.info('\n%3s%18s%3s%10s %-40s%-30s' % ('', 'from', 'n', 'params', 'module', 'arguments')) + anchors, nc, gd, gw = d['anchors'], d['nc'], d['depth_multiple'], d['width_multiple'] + na = (len(anchors[0]) // 2) if isinstance(anchors, list) else anchors # number of anchors + no = na * (nc + 5) # number of outputs = anchors * (classes + 5) + + layers, save, c2 = [], [], ch[-1] # layers, savelist, ch out + for i, (f, n, m, args) in enumerate(d['backbone'] + d['head']): # from, number, module, args + m = eval(m) if isinstance(m, str) else m # eval strings + for j, a in enumerate(args): + try: + args[j] = eval(a) if isinstance(a, str) else a # eval strings + except: + pass + + n = max(round(n * gd), 1) if n > 1 else n # depth gain + if m in [Conv, Bottleneck, SPP, DWConv, MixConv2d, Focus, CrossConv, BottleneckCSP, C3]: + c1, c2 = ch[f], args[0] + + # Normal + # if i > 0 and args[0] != no: # channel expansion factor + # ex = 1.75 # exponential (default 2.0) + # e = math.log(c2 / ch[1]) / math.log(2) + # c2 = int(ch[1] * ex ** e) + # if m != Focus: + + c2 = make_divisible(c2 * gw, 8) if c2 != no else c2 + + # Experimental + # if i > 0 and args[0] != no: # channel expansion factor + # ex = 1 + gw # exponential (default 2.0) + # ch1 = 32 # ch[1] + # e = math.log(c2 / ch1) / math.log(2) # level 1-n + # c2 = int(ch1 * ex ** e) + # if m != Focus: + # c2 = make_divisible(c2, 8) if c2 != no else c2 + + args = [c1, c2, *args[1:]] + if m in [BottleneckCSP, C3]: + args.insert(2, n) + n = 1 + elif m is nn.BatchNorm2d: + args = [ch[f]] + elif m is nn.ZeroPad2d: + args = [args] + c2 = ch[f] + elif m is Concat: + c2 = sum([ch[-1 if x == -1 else x + 1] for x in f]) + elif m is Detect: + args.append([ch[x + 1] for x in f]) + if isinstance(args[1], int): # number of anchors + args[1] = [list(range(args[1] * 2))] * len(f) + else: + c2 = ch[f] + + m_ = nn.Sequential(*[m(*args) for _ in range(n)]) if n > 1 else m(*args) # module + t = str(m)[8:-2].replace('__main__.', '') # module type + np = sum([x.numel() for x in m_.parameters()]) # number params + m_.i, m_.f, m_.type, m_.np = i, f, t, np # attach index, 'from' index, type, number params + logger.info('%3s%18s%3s%10.0f %-40s%-30s' % (i, f, n, np, t, args)) # print + save.extend(x % i for x in ([f] if isinstance(f, int) else f) if x != -1) # append to savelist + layers.append(m_) + ch.append(c2) + return nn.Sequential(*layers), sorted(save) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--cfg', type=str, default='yolov3.yaml', help='model.yaml') + parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') + opt = parser.parse_args() + opt.cfg = check_file(opt.cfg) # check file + set_logging() + device = select_device(opt.device) + + # Create model + model = Model(opt.cfg).to(device) + model.train() + + # Profile + # img = torch.rand(8 if torch.cuda.is_available() else 1, 3, 640, 640).to(device) + # y = model(img, profile=True) + + # Tensorboard + # from torch.utils.tensorboard import SummaryWriter + # tb_writer = SummaryWriter() + # print("Run 'tensorboard --logdir=models/runs' to view tensorboard at http://localhost:6006/") + # tb_writer.add_graph(model.model, img) # add model to tensorboard + # tb_writer.add_image('test', img[0], dataformats='CWH') # add model to tensorboard diff --git a/models/yolov3-spp.yaml b/models/yolov3-spp.yaml new file mode 100644 index 00000000..38dcc449 --- /dev/null +++ b/models/yolov3-spp.yaml @@ -0,0 +1,51 @@ +# parameters +nc: 80 # number of classes +depth_multiple: 1.0 # model depth multiple +width_multiple: 1.0 # layer channel multiple + +# anchors +anchors: + - [10,13, 16,30, 33,23] # P3/8 + - [30,61, 62,45, 59,119] # P4/16 + - [116,90, 156,198, 373,326] # P5/32 + +# darknet53 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [32, 3, 1]], # 0 + [-1, 1, Conv, [64, 3, 2]], # 1-P1/2 + [-1, 1, Bottleneck, [64]], + [-1, 1, Conv, [128, 3, 2]], # 3-P2/4 + [-1, 2, Bottleneck, [128]], + [-1, 1, Conv, [256, 3, 2]], # 5-P3/8 + [-1, 8, Bottleneck, [256]], + [-1, 1, Conv, [512, 3, 2]], # 7-P4/16 + [-1, 8, Bottleneck, [512]], + [-1, 1, Conv, [1024, 3, 2]], # 9-P5/32 + [-1, 4, Bottleneck, [1024]], # 10 + ] + +# YOLOv3-SPP head +head: + [[-1, 1, Bottleneck, [1024, False]], + [-1, 1, SPP, [512, [5, 9, 13]]], + [-1, 1, Conv, [1024, 3, 1]], + [-1, 1, Conv, [512, 1, 1]], + [-1, 1, Conv, [1024, 3, 1]], # 15 (P5/32-large) + + [-2, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 8], 1, Concat, [1]], # cat backbone P4 + [-1, 1, Bottleneck, [512, False]], + [-1, 1, Bottleneck, [512, False]], + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, Conv, [512, 3, 1]], # 22 (P4/16-medium) + + [-2, 1, Conv, [128, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P3 + [-1, 1, Bottleneck, [256, False]], + [-1, 2, Bottleneck, [256, False]], # 27 (P3/8-small) + + [[27, 22, 15], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5) + ] diff --git a/models/yolov3-tiny.yaml b/models/yolov3-tiny.yaml new file mode 100644 index 00000000..85f9fbd4 --- /dev/null +++ b/models/yolov3-tiny.yaml @@ -0,0 +1,41 @@ +# parameters +nc: 80 # number of classes +depth_multiple: 1.0 # model depth multiple +width_multiple: 1.0 # layer channel multiple + +# anchors +anchors: + - [10,14, 23,27, 37,58] # P4/16 + - [81,82, 135,169, 344,319] # P5/32 + +# YOLOv3-tiny backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [16, 3, 1]], # 0 + [-1, 1, nn.MaxPool2d, [2, 2, 0]], # 1-P1/2 + [-1, 1, Conv, [32, 3, 1]], + [-1, 1, nn.MaxPool2d, [2, 2, 0]], # 3-P2/4 + [-1, 1, Conv, [64, 3, 1]], + [-1, 1, nn.MaxPool2d, [2, 2, 0]], # 5-P3/8 + [-1, 1, Conv, [128, 3, 1]], + [-1, 1, nn.MaxPool2d, [2, 2, 0]], # 7-P4/16 + [-1, 1, Conv, [256, 3, 1]], + [-1, 1, nn.MaxPool2d, [2, 2, 0]], # 9-P5/32 + [-1, 1, Conv, [512, 3, 1]], + [-1, 1, nn.ZeroPad2d, [0, 1, 0, 1]], # 11 + [-1, 1, nn.MaxPool2d, [2, 1, 0]], # 12 + ] + +# YOLOv3-tiny head +head: + [[-1, 1, Conv, [1024, 3, 1]], + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, Conv, [512, 3, 1]], # 15 (P5/32-large) + + [-2, 1, Conv, [128, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 8], 1, Concat, [1]], # cat backbone P4 + [-1, 1, Conv, [256, 3, 1]], # 19 (P4/16-medium) + + [[19, 15], 1, Detect, [nc, anchors]], # Detect(P4, P5) + ] diff --git a/models/yolov3.yaml b/models/yolov3.yaml new file mode 100644 index 00000000..f2e76135 --- /dev/null +++ b/models/yolov3.yaml @@ -0,0 +1,51 @@ +# parameters +nc: 80 # number of classes +depth_multiple: 1.0 # model depth multiple +width_multiple: 1.0 # layer channel multiple + +# anchors +anchors: + - [10,13, 16,30, 33,23] # P3/8 + - [30,61, 62,45, 59,119] # P4/16 + - [116,90, 156,198, 373,326] # P5/32 + +# darknet53 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [32, 3, 1]], # 0 + [-1, 1, Conv, [64, 3, 2]], # 1-P1/2 + [-1, 1, Bottleneck, [64]], + [-1, 1, Conv, [128, 3, 2]], # 3-P2/4 + [-1, 2, Bottleneck, [128]], + [-1, 1, Conv, [256, 3, 2]], # 5-P3/8 + [-1, 8, Bottleneck, [256]], + [-1, 1, Conv, [512, 3, 2]], # 7-P4/16 + [-1, 8, Bottleneck, [512]], + [-1, 1, Conv, [1024, 3, 2]], # 9-P5/32 + [-1, 4, Bottleneck, [1024]], # 10 + ] + +# YOLOv3 head +head: + [[-1, 1, Bottleneck, [1024, False]], + [-1, 1, Conv, [512, [1, 1]]], + [-1, 1, Conv, [1024, 3, 1]], + [-1, 1, Conv, [512, 1, 1]], + [-1, 1, Conv, [1024, 3, 1]], # 15 (P5/32-large) + + [-2, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 8], 1, Concat, [1]], # cat backbone P4 + [-1, 1, Bottleneck, [512, False]], + [-1, 1, Bottleneck, [512, False]], + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, Conv, [512, 3, 1]], # 22 (P4/16-medium) + + [-2, 1, Conv, [128, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P3 + [-1, 1, Bottleneck, [256, False]], + [-1, 2, Bottleneck, [256, False]], # 27 (P3/8-small) + + [[27, 22, 15], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5) + ] diff --git a/requirements.txt b/requirements.txt index 50efbd10..f9fc9fc2 100755 --- a/requirements.txt +++ b/requirements.txt @@ -5,23 +5,26 @@ Cython matplotlib>=3.2.2 numpy>=1.18.5 opencv-python>=4.1.2 -pillow +Pillow PyYAML>=5.3 scipy>=1.4.1 tensorboard>=2.2 -torch>=1.6.0 -torchvision>=0.7.0 +torch>=1.7.0 +torchvision>=0.8.1 tqdm>=4.41.0 -# coco ---------------------------------------- -# pycocotools>=2.0 +# logging ------------------------------------- +# wandb + +# plotting ------------------------------------ +seaborn +pandas # export -------------------------------------- -# packaging # for coremltools -# coremltools==4.0b3 -# onnx>=1.7.0 +# coremltools==4.0 +# onnx>=1.8.0 # scikit-learn==0.19.2 # for coreml quantization # extras -------------------------------------- # thop # FLOPS computation -# seaborn # plotting +# pycocotools>=2.0 # COCO mAP diff --git a/test.py b/test.py index 4d68438e..d62afd7d 100644 --- a/test.py +++ b/test.py @@ -1,136 +1,170 @@ import argparse +import glob import json +import os +from pathlib import Path -from torch.utils.data import DataLoader +import numpy as np +import torch +import yaml +from tqdm import tqdm -from models import * -from utils.datasets import * -from utils.utils import * +from models.experimental import attempt_load +from utils.datasets import create_dataloader +from utils.general import coco80_to_coco91_class, check_dataset, check_file, check_img_size, box_iou, \ + non_max_suppression, scale_coords, xyxy2xywh, xywh2xyxy, set_logging, increment_path +from utils.loss import compute_loss +from utils.metrics import ap_per_class, ConfusionMatrix +from utils.plots import plot_images, output_to_target, plot_study_txt +from utils.torch_utils import select_device, time_synchronized -def test(cfg, - data, +def test(data, weights=None, - batch_size=16, - imgsz=416, + batch_size=32, + imgsz=640, conf_thres=0.001, - iou_thres=0.6, # for nms + iou_thres=0.6, # for NMS save_json=False, single_cls=False, augment=False, + verbose=False, model=None, dataloader=None, - multi_label=True): + save_dir=Path(''), # for saving images + save_txt=False, # for auto-labelling + save_conf=False, + plots=True, + log_imgs=0): # number of logged images + # Initialize/load model and set device - if model is None: - is_training = False - device = torch_utils.select_device(opt.device, batch_size=batch_size) - verbose = opt.task == 'test' - - # Remove previous - for f in glob.glob('test_batch*.jpg'): - os.remove(f) - - # Initialize model - model = Darknet(cfg, imgsz) - - # Load weights - attempt_download(weights) - if weights.endswith('.pt'): # pytorch format - model.load_state_dict(torch.load(weights, map_location=device)['model']) - else: # darknet format - load_darknet_weights(model, weights) - - # Fuse - model.fuse() - model.to(device) - - if device.type != 'cpu' and torch.cuda.device_count() > 1: - model = nn.DataParallel(model) - else: # called by train.py - is_training = True + training = model is not None + if training: # called by train.py device = next(model.parameters()).device # get model device - verbose = False - # Configure run - data = parse_data_cfg(data) - nc = 1 if single_cls else int(data['classes']) # number of classes - path = data['valid'] # path to test images - names = load_classes(data['names']) # class names + else: # called directly + set_logging() + device = select_device(opt.device, batch_size=batch_size) + save_txt = opt.save_txt # save *.txt labels + + # Directories + save_dir = Path(increment_path(Path(opt.project) / opt.name, exist_ok=opt.exist_ok)) # increment run + (save_dir / 'labels' if save_txt else save_dir).mkdir(parents=True, exist_ok=True) # make dir + + # Load model + model = attempt_load(weights, map_location=device) # load FP32 model + imgsz = check_img_size(imgsz, s=model.stride.max()) # check img_size + + # Multi-GPU disabled, incompatible with .half() https://github.com/ultralytics/yolov5/issues/99 + # if device.type != 'cpu' and torch.cuda.device_count() > 1: + # model = nn.DataParallel(model) + + # Half + half = device.type != 'cpu' # half precision only supported on CUDA + if half: + model.half() + + # Configure + model.eval() + is_coco = data.endswith('coco.yaml') # is COCO dataset + with open(data) as f: + data = yaml.load(f, Loader=yaml.FullLoader) # model dict + check_dataset(data) # check + nc = 1 if single_cls else int(data['nc']) # number of classes iouv = torch.linspace(0.5, 0.95, 10).to(device) # iou vector for mAP@0.5:0.95 - iouv = iouv[0].view(1) # comment for mAP@0.5:0.95 niou = iouv.numel() + # Logging + log_imgs, wandb = min(log_imgs, 100), None # ceil + try: + import wandb # Weights & Biases + except ImportError: + log_imgs = 0 + # Dataloader - if dataloader is None: - dataset = LoadImagesAndLabels(path, imgsz, batch_size, rect=True, single_cls=opt.single_cls, pad=0.5) - batch_size = min(batch_size, len(dataset)) - dataloader = DataLoader(dataset, - batch_size=batch_size, - num_workers=min([os.cpu_count(), batch_size if batch_size > 1 else 0, 8]), - pin_memory=True, - collate_fn=dataset.collate_fn) + if not training: + img = torch.zeros((1, 3, imgsz, imgsz), device=device) # init img + _ = model(img.half() if half else img) if device.type != 'cpu' else None # run once + path = data['test'] if opt.task == 'test' else data['val'] # path to val/test images + dataloader = create_dataloader(path, imgsz, batch_size, model.stride.max(), opt, pad=0.5, rect=True)[0] seen = 0 - model.eval() - _ = model(torch.zeros((1, 3, imgsz, imgsz), device=device)) if device.type != 'cpu' else None # run once + confusion_matrix = ConfusionMatrix(nc=nc) + names = {k: v for k, v in enumerate(model.names if hasattr(model, 'names') else model.module.names)} coco91class = coco80_to_coco91_class() - s = ('%20s' + '%10s' * 6) % ('Class', 'Images', 'Targets', 'P', 'R', 'mAP@0.5', 'F1') - p, r, f1, mp, mr, map, mf1, t0, t1 = 0., 0., 0., 0., 0., 0., 0., 0., 0. + s = ('%20s' + '%12s' * 6) % ('Class', 'Images', 'Targets', 'P', 'R', 'mAP@.5', 'mAP@.5:.95') + p, r, f1, mp, mr, map50, map, t0, t1 = 0., 0., 0., 0., 0., 0., 0., 0., 0. loss = torch.zeros(3, device=device) - jdict, stats, ap, ap_class = [], [], [], [] - for batch_i, (imgs, targets, paths, shapes) in enumerate(tqdm(dataloader, desc=s)): - imgs = imgs.to(device).float() / 255.0 # uint8 to float32, 0 - 255 to 0.0 - 1.0 + jdict, stats, ap, ap_class, wandb_images = [], [], [], [], [] + for batch_i, (img, targets, paths, shapes) in enumerate(tqdm(dataloader, desc=s)): + img = img.to(device, non_blocking=True) + img = img.half() if half else img.float() # uint8 to fp16/32 + img /= 255.0 # 0 - 255 to 0.0 - 1.0 targets = targets.to(device) - nb, _, height, width = imgs.shape # batch size, channels, height, width - whwh = torch.Tensor([width, height, width, height]).to(device) + nb, _, height, width = img.shape # batch size, channels, height, width - # Disable gradients with torch.no_grad(): # Run model - t = torch_utils.time_synchronized() - inf_out, train_out = model(imgs, augment=augment) # inference and training outputs - t0 += torch_utils.time_synchronized() - t + t = time_synchronized() + inf_out, train_out = model(img, augment=augment) # inference and training outputs + t0 += time_synchronized() - t # Compute loss - if is_training: # if model has loss hyperparameters - loss += compute_loss(train_out, targets, model)[1][:3] # GIoU, obj, cls + if training: + loss += compute_loss([x.float() for x in train_out], targets, model)[1][:3] # box, obj, cls # Run NMS - t = torch_utils.time_synchronized() - output = non_max_suppression(inf_out, conf_thres=conf_thres, iou_thres=iou_thres, multi_label=multi_label) - t1 += torch_utils.time_synchronized() - t + targets[:, 2:] *= torch.Tensor([width, height, width, height]).to(device) # to pixels + lb = [targets[targets[:, 0] == i, 1:] for i in range(nb)] if save_txt else [] # for autolabelling + t = time_synchronized() + output = non_max_suppression(inf_out, conf_thres=conf_thres, iou_thres=iou_thres, labels=lb) + t1 += time_synchronized() - t # Statistics per image for si, pred in enumerate(output): labels = targets[targets[:, 0] == si, 1:] nl = len(labels) tcls = labels[:, 0].tolist() if nl else [] # target class + path = Path(paths[si]) seen += 1 - if pred is None: + if len(pred) == 0: if nl: stats.append((torch.zeros(0, niou, dtype=torch.bool), torch.Tensor(), torch.Tensor(), tcls)) continue - # Append to text file - # with open('test.txt', 'a') as file: - # [file.write('%11.5g' * 7 % tuple(x) + '\n') for x in pred] + # Predictions + predn = pred.clone() + scale_coords(img[si].shape[1:], predn[:, :4], shapes[si][0], shapes[si][1]) # native-space pred - # Clip boxes to image bounds - clip_coords(pred, (height, width)) + # Append to text file + if save_txt: + gn = torch.tensor(shapes[si][0])[[1, 0, 1, 0]] # normalization gain whwh + for *xyxy, conf, cls in predn.tolist(): + xywh = (xyxy2xywh(torch.tensor(xyxy).view(1, 4)) / gn).view(-1).tolist() # normalized xywh + line = (cls, *xywh, conf) if save_conf else (cls, *xywh) # label format + with open(save_dir / 'labels' / (path.stem + '.txt'), 'a') as f: + f.write(('%g ' * len(line)).rstrip() % line + '\n') + + # W&B logging + if plots and len(wandb_images) < log_imgs: + box_data = [{"position": {"minX": xyxy[0], "minY": xyxy[1], "maxX": xyxy[2], "maxY": xyxy[3]}, + "class_id": int(cls), + "box_caption": "%s %.3f" % (names[cls], conf), + "scores": {"class_score": conf}, + "domain": "pixel"} for *xyxy, conf, cls in pred.tolist()] + boxes = {"predictions": {"box_data": box_data, "class_labels": names}} # inference-space + wandb_images.append(wandb.Image(img[si], boxes=boxes, caption=path.name)) # Append to pycocotools JSON dictionary if save_json: # [{"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], "score": 0.236}, ... - image_id = int(Path(paths[si]).stem.split('_')[-1]) - box = pred[:, :4].clone() # xyxy - scale_coords(imgs[si].shape[1:], box, shapes[si][0], shapes[si][1]) # to original shape - box = xyxy2xywh(box) # xywh + image_id = int(path.stem) if path.stem.isnumeric() else path.stem + box = xyxy2xywh(predn[:, :4]) # xywh box[:, :2] -= box[:, 2:] / 2 # xy center to top-left corner for p, b in zip(pred.tolist(), box.tolist()): jdict.append({'image_id': image_id, - 'category_id': coco91class[int(p[5])], + 'category_id': coco91class[int(p[5])] if is_coco else int(p[5]), 'bbox': [round(x, 3) for x in b], 'score': round(p[4], 5)}) @@ -141,22 +175,27 @@ def test(cfg, tcls_tensor = labels[:, 0] # target boxes - tbox = xywh2xyxy(labels[:, 1:5]) * whwh + tbox = xywh2xyxy(labels[:, 1:5]) + scale_coords(img[si].shape[1:], tbox, shapes[si][0], shapes[si][1]) # native-space labels + if plots: + confusion_matrix.process_batch(pred, torch.cat((labels[:, 0:1], tbox), 1)) # Per target class for cls in torch.unique(tcls_tensor): - ti = (cls == tcls_tensor).nonzero().view(-1) # target indices - pi = (cls == pred[:, 5]).nonzero().view(-1) # prediction indices + ti = (cls == tcls_tensor).nonzero(as_tuple=False).view(-1) # prediction indices + pi = (cls == pred[:, 5]).nonzero(as_tuple=False).view(-1) # target indices # Search for detections if pi.shape[0]: # Prediction to target ious - ious, i = box_iou(pred[pi, :4], tbox[ti]).max(1) # best ious, indices + ious, i = box_iou(predn[pi, :4], tbox[ti]).max(1) # best ious, indices # Append detections - for j in (ious > iouv[0]).nonzero(): + detected_set = set() + for j in (ious > iouv[0]).nonzero(as_tuple=False): d = ti[i[j]] # detected target - if d not in detected: + if d.item() not in detected_set: + detected_set.add(d.item()) detected.append(d) correct[pi[j]] = ious[j] > iouv # iou_thres is 1xn if len(detected) == nl: # all targets already located in image @@ -166,93 +205,105 @@ def test(cfg, stats.append((correct.cpu(), pred[:, 4].cpu(), pred[:, 5].cpu(), tcls)) # Plot images - if batch_i < 1: - f = 'test_batch%g_gt.jpg' % batch_i # filename - plot_images(imgs, targets, paths=paths, names=names, fname=f) # ground truth - f = 'test_batch%g_pred.jpg' % batch_i - plot_images(imgs, output_to_target(output, width, height), paths=paths, names=names, fname=f) # predictions + if plots and batch_i < 3: + f = save_dir / f'test_batch{batch_i}_labels.jpg' # filename + plot_images(img, targets, paths, f, names) # labels + f = save_dir / f'test_batch{batch_i}_pred.jpg' + plot_images(img, output_to_target(output), paths, f, names) # predictions # Compute statistics stats = [np.concatenate(x, 0) for x in zip(*stats)] # to numpy - if len(stats): - p, r, ap, f1, ap_class = ap_per_class(*stats) - if niou > 1: - p, r, ap, f1 = p[:, 0], r[:, 0], ap.mean(1), ap[:, 0] # [P, R, AP@0.5:0.95, AP@0.5] - mp, mr, map, mf1 = p.mean(), r.mean(), ap.mean(), f1.mean() + if len(stats) and stats[0].any(): + p, r, ap, f1, ap_class = ap_per_class(*stats, plot=plots, save_dir=save_dir, names=names) + p, r, ap50, ap = p[:, 0], r[:, 0], ap[:, 0], ap.mean(1) # [P, R, AP@0.5, AP@0.5:0.95] + mp, mr, map50, map = p.mean(), r.mean(), ap50.mean(), ap.mean() nt = np.bincount(stats[3].astype(np.int64), minlength=nc) # number of targets per class else: nt = torch.zeros(1) + # Plots + if plots: + confusion_matrix.plot(save_dir=save_dir, names=list(names.values())) + if wandb and wandb.run: + wandb.log({"Images": wandb_images}) + wandb.log({"Validation": [wandb.Image(str(f), caption=f.name) for f in sorted(save_dir.glob('test*.jpg'))]}) + # Print results - pf = '%20s' + '%10.3g' * 6 # print format - print(pf % ('all', seen, nt.sum(), mp, mr, map, mf1)) + pf = '%20s' + '%12.3g' * 6 # print format + print(pf % ('all', seen, nt.sum(), mp, mr, map50, map)) # Print results per class if verbose and nc > 1 and len(stats): for i, c in enumerate(ap_class): - print(pf % (names[c], seen, nt[c], p[i], r[i], ap[i], f1[i])) + print(pf % (names[c], seen, nt[c], p[i], r[i], ap50[i], ap[i])) # Print speeds - if verbose or save_json: - t = tuple(x / seen * 1E3 for x in (t0, t1, t0 + t1)) + (imgsz, imgsz, batch_size) # tuple + t = tuple(x / seen * 1E3 for x in (t0, t1, t0 + t1)) + (imgsz, imgsz, batch_size) # tuple + if not training: print('Speed: %.1f/%.1f/%.1f ms inference/NMS/total per %gx%g image at batch-size %g' % t) # Save JSON - if save_json and map and len(jdict): - print('\nCOCO mAP with pycocotools...') - imgIds = [int(Path(x).stem.split('_')[-1]) for x in dataloader.dataset.img_files] - with open('results.json', 'w') as file: - json.dump(jdict, file) + if save_json and len(jdict): + w = Path(weights[0] if isinstance(weights, list) else weights).stem if weights is not None else '' # weights + anno_json = glob.glob('../coco/annotations/instances_val*.json')[0] # annotations json + pred_json = str(save_dir / f"{w}_predictions.json") # predictions json + print('\nEvaluating pycocotools mAP... saving %s...' % pred_json) + with open(pred_json, 'w') as f: + json.dump(jdict, f) - try: + try: # https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocoEvalDemo.ipynb from pycocotools.coco import COCO from pycocotools.cocoeval import COCOeval - # https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocoEvalDemo.ipynb - cocoGt = COCO(glob.glob('../coco/annotations/instances_val*.json')[0]) # initialize COCO ground truth api - cocoDt = cocoGt.loadRes('results.json') # initialize COCO pred api - - cocoEval = COCOeval(cocoGt, cocoDt, 'bbox') - cocoEval.params.imgIds = imgIds # [:32] # only evaluate these images - cocoEval.evaluate() - cocoEval.accumulate() - cocoEval.summarize() - # mf1, map = cocoEval.stats[:2] # update to pycocotools results (mAP@0.5:0.95, mAP@0.5) - except: - print('WARNING: pycocotools must be installed with numpy==1.17 to run correctly. ' - 'See https://github.com/cocodataset/cocoapi/issues/356') + anno = COCO(anno_json) # init annotations api + pred = anno.loadRes(pred_json) # init predictions api + eval = COCOeval(anno, pred, 'bbox') + if is_coco: + eval.params.imgIds = [int(Path(x).stem) for x in dataloader.dataset.img_files] # image IDs to evaluate + eval.evaluate() + eval.accumulate() + eval.summarize() + map, map50 = eval.stats[:2] # update results (mAP@0.5:0.95, mAP@0.5) + except Exception as e: + print('ERROR: pycocotools unable to run: %s' % e) # Return results + if not training: + s = f"\n{len(list(save_dir.glob('labels/*.txt')))} labels saved to {save_dir / 'labels'}" if save_txt else '' + print(f"Results saved to {save_dir}{s}") + model.float() # for training maps = np.zeros(nc) + map for i, c in enumerate(ap_class): maps[c] = ap[i] - return (mp, mr, map, mf1, *(loss.cpu() / len(dataloader)).tolist()), maps + return (mp, mr, map50, map, *(loss.cpu() / len(dataloader)).tolist()), maps, t if __name__ == '__main__': parser = argparse.ArgumentParser(prog='test.py') - parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path') - parser.add_argument('--data', type=str, default='data/coco2014.data', help='*.data path') - parser.add_argument('--weights', type=str, default='weights/yolov3-spp-ultralytics.pt', help='weights path') - parser.add_argument('--batch-size', type=int, default=16, help='size of each image batch') - parser.add_argument('--img-size', type=int, default=512, help='inference size (pixels)') + parser.add_argument('--weights', nargs='+', type=str, default='yolov3.pt', help='model.pt path(s)') + parser.add_argument('--data', type=str, default='data/coco128.yaml', help='*.data path') + parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') + parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') parser.add_argument('--iou-thres', type=float, default=0.6, help='IOU threshold for NMS') - parser.add_argument('--save-json', action='store_true', help='save a cocoapi-compatible JSON results file') - parser.add_argument('--task', default='test', help="'test', 'study', 'benchmark'") - parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1) or cpu') - parser.add_argument('--single-cls', action='store_true', help='train as single-class dataset') + parser.add_argument('--task', default='val', help="'val', 'test', 'study'") + parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') + parser.add_argument('--single-cls', action='store_true', help='treat as single-class dataset') parser.add_argument('--augment', action='store_true', help='augmented inference') + parser.add_argument('--verbose', action='store_true', help='report mAP by class') + parser.add_argument('--save-txt', action='store_true', help='save results to *.txt') + parser.add_argument('--save-conf', action='store_true', help='save confidences in --save-txt labels') + parser.add_argument('--save-json', action='store_true', help='save a cocoapi-compatible JSON results file') + parser.add_argument('--project', default='runs/test', help='save to project/name') + parser.add_argument('--name', default='exp', help='save to project/name') + parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment') opt = parser.parse_args() - opt.save_json = opt.save_json or any([x in opt.data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) - opt.cfg = check_file(opt.cfg) # check file + opt.save_json |= opt.data.endswith('coco.yaml') opt.data = check_file(opt.data) # check file print(opt) - # task = 'test', 'study', 'benchmark' - if opt.task == 'test': # (default) test normally - test(opt.cfg, - opt.data, + if opt.task in ['val', 'test']: # run normally + test(opt.data, opt.weights, opt.batch_size, opt.img_size, @@ -260,13 +311,22 @@ if __name__ == '__main__': opt.iou_thres, opt.save_json, opt.single_cls, - opt.augment) + opt.augment, + opt.verbose, + save_txt=opt.save_txt, + save_conf=opt.save_conf, + ) - elif opt.task == 'benchmark': # mAPs at 256-640 at conf 0.5 and 0.7 - y = [] - for i in list(range(256, 640, 128)): # img-size - for j in [0.6, 0.7]: # iou-thres - t = time.time() - r = test(opt.cfg, opt.data, opt.weights, opt.batch_size, i, opt.conf_thres, j, opt.save_json)[0] - y.append(r + (time.time() - t,)) - np.savetxt('benchmark.txt', y, fmt='%10.4g') # y = np.loadtxt('study.txt') + elif opt.task == 'study': # run over a range of settings and save/plot + for weights in ['yolov3.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt']: + f = 'study_%s_%s.txt' % (Path(opt.data).stem, Path(weights).stem) # filename to save to + x = list(range(320, 800, 64)) # x axis + y = [] # y axis + for i in x: # img-size + print('\nRunning %s point %s...' % (f, i)) + r, _, t = test(opt.data, weights, opt.batch_size, i, opt.conf_thres, opt.iou_thres, opt.save_json, + plots=False) + y.append(r + t) # results and times + np.savetxt(f, y, fmt='%10.4g') # save + os.system('zip -r study.zip study_*.txt') + plot_study_txt(f, x) # plot diff --git a/train.py b/train.py index 1aba8d27..3471496b 100644 --- a/train.py +++ b/train.py @@ -1,442 +1,537 @@ import argparse +import logging +import math +import os +import random +import time +from pathlib import Path +from warnings import warn +import numpy as np import torch.distributed as dist +import torch.nn as nn +import torch.nn.functional as F import torch.optim as optim import torch.optim.lr_scheduler as lr_scheduler +import torch.utils.data +import yaml +from torch.cuda import amp +from torch.nn.parallel import DistributedDataParallel as DDP from torch.utils.tensorboard import SummaryWriter +from tqdm import tqdm import test # import test.py to get mAP after each epoch -from models import * -from utils.datasets import * -from utils.utils import * +from models.yolo import Model +from utils.autoanchor import check_anchors +from utils.datasets import create_dataloader +from utils.general import labels_to_class_weights, increment_path, labels_to_image_weights, init_seeds, \ + fitness, strip_optimizer, get_latest_run, check_dataset, check_file, check_git_status, check_img_size, \ + print_mutation, set_logging +from utils.google_utils import attempt_download +from utils.loss import compute_loss +from utils.plots import plot_images, plot_labels, plot_results, plot_evolution +from utils.torch_utils import ModelEMA, select_device, intersect_dicts, torch_distributed_zero_first -mixed_precision = True -try: # Mixed precision training https://github.com/NVIDIA/apex - from apex import amp -except: - print('Apex recommended for faster mixed precision training: https://github.com/NVIDIA/apex') - mixed_precision = False # not installed +logger = logging.getLogger(__name__) -wdir = 'weights' + os.sep # weights dir -last = wdir + 'last.pt' -best = wdir + 'best.pt' -results_file = 'results.txt' - -# Hyperparameters -hyp = {'giou': 3.54, # giou loss gain - 'cls': 37.4, # cls loss gain - 'cls_pw': 1.0, # cls BCELoss positive_weight - 'obj': 64.3, # obj loss gain (*=img_size/320 if img_size != 320) - 'obj_pw': 1.0, # obj BCELoss positive_weight - 'iou_t': 0.20, # iou training threshold - 'lr0': 0.01, # initial learning rate (SGD=5E-3, Adam=5E-4) - 'lrf': 0.0005, # final learning rate (with cos scheduler) - 'momentum': 0.937, # SGD momentum - 'weight_decay': 0.0005, # optimizer weight decay - 'fl_gamma': 0.0, # focal loss gamma (efficientDet default is gamma=1.5) - 'hsv_h': 0.0138, # image HSV-Hue augmentation (fraction) - 'hsv_s': 0.678, # image HSV-Saturation augmentation (fraction) - 'hsv_v': 0.36, # image HSV-Value augmentation (fraction) - 'degrees': 1.98 * 0, # image rotation (+/- deg) - 'translate': 0.05 * 0, # image translation (+/- fraction) - 'scale': 0.05 * 0, # image scale (+/- gain) - 'shear': 0.641 * 0} # image shear (+/- deg) - -# Overwrite hyp with hyp*.txt (optional) -f = glob.glob('hyp*.txt') -if f: - print('Using %s' % f[0]) - for k, v in zip(hyp.keys(), np.loadtxt(f[0])): - hyp[k] = v - -# Print focal loss if gamma > 0 -if hyp['fl_gamma']: - print('Using FocalLoss(gamma=%g)' % hyp['fl_gamma']) +try: + import wandb +except ImportError: + wandb = None + logger.info("Install Weights & Biases for experiment logging via 'pip install wandb' (recommended)") -def train(hyp): - cfg = opt.cfg - data = opt.data - epochs = opt.epochs # 500200 batches at bs 64, 117263 images = 273 epochs - batch_size = opt.batch_size - accumulate = max(round(64 / batch_size), 1) # accumulate n times before optimizer update (bs 64) - weights = opt.weights # initial training weights - imgsz_min, imgsz_max, imgsz_test = opt.img_size # img sizes (min, max, test) +def train(hyp, opt, device, tb_writer=None, wandb=None): + logger.info(f'Hyperparameters {hyp}') + save_dir, epochs, batch_size, total_batch_size, weights, rank = \ + Path(opt.save_dir), opt.epochs, opt.batch_size, opt.total_batch_size, opt.weights, opt.global_rank - # Image Sizes - gs = 32 # (pixels) grid size - assert math.fmod(imgsz_min, gs) == 0, '--img-size %g must be a %g-multiple' % (imgsz_min, gs) - opt.multi_scale |= imgsz_min != imgsz_max # multi if different (min, max) - if opt.multi_scale: - if imgsz_min == imgsz_max: - imgsz_min //= 1.5 - imgsz_max //= 0.667 - grid_min, grid_max = imgsz_min // gs, imgsz_max // gs - imgsz_min, imgsz_max = int(grid_min * gs), int(grid_max * gs) - img_size = imgsz_max # initialize with max size + # Directories + wdir = save_dir / 'weights' + wdir.mkdir(parents=True, exist_ok=True) # make dir + last = wdir / 'last.pt' + best = wdir / 'best.pt' + results_file = save_dir / 'results.txt' - # Configure run - init_seeds() - data_dict = parse_data_cfg(data) + # Save run settings + with open(save_dir / 'hyp.yaml', 'w') as f: + yaml.dump(hyp, f, sort_keys=False) + with open(save_dir / 'opt.yaml', 'w') as f: + yaml.dump(vars(opt), f, sort_keys=False) + + # Configure + plots = not opt.evolve # create plots + cuda = device.type != 'cpu' + init_seeds(2 + rank) + with open(opt.data) as f: + data_dict = yaml.load(f, Loader=yaml.FullLoader) # data dict + with torch_distributed_zero_first(rank): + check_dataset(data_dict) # check train_path = data_dict['train'] - test_path = data_dict['valid'] - nc = 1 if opt.single_cls else int(data_dict['classes']) # number of classes - hyp['cls'] *= nc / 80 # update coco-tuned hyp['cls'] to current dataset + test_path = data_dict['val'] + nc, names = (1, ['item']) if opt.single_cls else (int(data_dict['nc']), data_dict['names']) # number classes, names + assert len(names) == nc, '%g names found for nc=%g dataset in %s' % (len(names), nc, opt.data) # check - # Remove previous results - for f in glob.glob('*_batch*.jpg') + glob.glob(results_file): - os.remove(f) + # Model + pretrained = weights.endswith('.pt') + if pretrained: + with torch_distributed_zero_first(rank): + attempt_download(weights) # download if not found locally + ckpt = torch.load(weights, map_location=device) # load checkpoint + if hyp.get('anchors'): + ckpt['model'].yaml['anchors'] = round(hyp['anchors']) # force autoanchor + model = Model(opt.cfg or ckpt['model'].yaml, ch=3, nc=nc).to(device) # create + exclude = ['anchor'] if opt.cfg or hyp.get('anchors') else [] # exclude keys + state_dict = ckpt['model'].float().state_dict() # to FP32 + state_dict = intersect_dicts(state_dict, model.state_dict(), exclude=exclude) # intersect + model.load_state_dict(state_dict, strict=False) # load + logger.info('Transferred %g/%g items from %s' % (len(state_dict), len(model.state_dict()), weights)) # report + else: + model = Model(opt.cfg, ch=3, nc=nc).to(device) # create - # Initialize model - model = Darknet(cfg).to(device) + # Freeze + freeze = [] # parameter names to freeze (full or partial) + for k, v in model.named_parameters(): + v.requires_grad = True # train all layers + if any(x in k for x in freeze): + print('freezing %s' % k) + v.requires_grad = False # Optimizer + nbs = 64 # nominal batch size + accumulate = max(round(nbs / total_batch_size), 1) # accumulate loss before optimizing + hyp['weight_decay'] *= total_batch_size * accumulate / nbs # scale weight_decay + pg0, pg1, pg2 = [], [], [] # optimizer parameter groups - for k, v in dict(model.named_parameters()).items(): - if '.bias' in k: - pg2 += [v] # biases - elif 'Conv2d.weight' in k: - pg1 += [v] # apply weight_decay - else: - pg0 += [v] # all else + for k, v in model.named_modules(): + if hasattr(v, 'bias') and isinstance(v.bias, nn.Parameter): + pg2.append(v.bias) # biases + if isinstance(v, nn.BatchNorm2d): + pg0.append(v.weight) # no decay + elif hasattr(v, 'weight') and isinstance(v.weight, nn.Parameter): + pg1.append(v.weight) # apply decay if opt.adam: - # hyp['lr0'] *= 0.1 # reduce lr (i.e. SGD=5E-3, Adam=5E-4) - optimizer = optim.Adam(pg0, lr=hyp['lr0']) - # optimizer = AdaBound(pg0, lr=hyp['lr0'], final_lr=0.1) + optimizer = optim.Adam(pg0, lr=hyp['lr0'], betas=(hyp['momentum'], 0.999)) # adjust beta1 to momentum else: optimizer = optim.SGD(pg0, lr=hyp['lr0'], momentum=hyp['momentum'], nesterov=True) + optimizer.add_param_group({'params': pg1, 'weight_decay': hyp['weight_decay']}) # add pg1 with weight_decay optimizer.add_param_group({'params': pg2}) # add pg2 (biases) - print('Optimizer groups: %g .bias, %g Conv2d.weight, %g other' % (len(pg2), len(pg1), len(pg0))) + logger.info('Optimizer groups: %g .bias, %g conv.weight, %g other' % (len(pg2), len(pg1), len(pg0))) del pg0, pg1, pg2 - start_epoch = 0 - best_fitness = 0.0 - attempt_download(weights) - if weights.endswith('.pt'): # pytorch format - # possible weights are '*.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt' etc. - ckpt = torch.load(weights, map_location=device) + # Scheduler https://arxiv.org/pdf/1812.01187.pdf + # https://pytorch.org/docs/stable/_modules/torch/optim/lr_scheduler.html#OneCycleLR + lf = lambda x: ((1 + math.cos(x * math.pi / epochs)) / 2) * (1 - hyp['lrf']) + hyp['lrf'] # cosine + scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf) + # plot_lr_scheduler(optimizer, scheduler, epochs) - # load model - try: - ckpt['model'] = {k: v for k, v in ckpt['model'].items() if model.state_dict()[k].numel() == v.numel()} - model.load_state_dict(ckpt['model'], strict=False) - except KeyError as e: - s = "%s is not compatible with %s. Specify --weights '' or specify a --cfg compatible with %s. " \ - "See https://github.com/ultralytics/yolov3/issues/657" % (opt.weights, opt.cfg, opt.weights) - raise KeyError(s) from e + # Logging + if wandb and wandb.run is None: + opt.hyp = hyp # add hyperparameters + wandb_run = wandb.init(config=opt, resume="allow", + project='YOLOv3' if opt.project == 'runs/train' else Path(opt.project).stem, + name=save_dir.stem, + id=ckpt.get('wandb_id') if 'ckpt' in locals() else None) - # load optimizer + # Resume + start_epoch, best_fitness = 0, 0.0 + if pretrained: + # Optimizer if ckpt['optimizer'] is not None: optimizer.load_state_dict(ckpt['optimizer']) best_fitness = ckpt['best_fitness'] - # load results + # Results if ckpt.get('training_results') is not None: with open(results_file, 'w') as file: file.write(ckpt['training_results']) # write results.txt - # epochs + # Epochs start_epoch = ckpt['epoch'] + 1 + if opt.resume: + assert start_epoch > 0, '%s training to %g epochs is finished, nothing to resume.' % (weights, epochs) if epochs < start_epoch: - print('%s has been trained for %g epochs. Fine-tuning for %g additional epochs.' % - (opt.weights, ckpt['epoch'], epochs)) + logger.info('%s has been trained for %g epochs. Fine-tuning for %g additional epochs.' % + (weights, ckpt['epoch'], epochs)) epochs += ckpt['epoch'] # finetune additional epochs - del ckpt + del ckpt, state_dict - elif len(weights) > 0: # darknet format - # possible weights are '*.weights', 'yolov3-tiny.conv.15', 'darknet53.conv.74' etc. - load_darknet_weights(model, weights) + # Image sizes + gs = int(max(model.stride)) # grid size (max stride) + imgsz, imgsz_test = [check_img_size(x, gs) for x in opt.img_size] # verify imgsz are gs-multiples - if opt.freeze_layers: - output_layer_indices = [idx - 1 for idx, module in enumerate(model.module_list) if isinstance(module, YOLOLayer)] - freeze_layer_indices = [x for x in range(len(model.module_list)) if - (x not in output_layer_indices) and - (x - 1 not in output_layer_indices)] - for idx in freeze_layer_indices: - for parameter in model.module_list[idx].parameters(): - parameter.requires_grad_(False) + # DP mode + if cuda and rank == -1 and torch.cuda.device_count() > 1: + model = torch.nn.DataParallel(model) - # Mixed precision training https://github.com/NVIDIA/apex - if mixed_precision: - model, optimizer = amp.initialize(model, optimizer, opt_level='O1', verbosity=0) + # SyncBatchNorm + if opt.sync_bn and cuda and rank != -1: + model = torch.nn.SyncBatchNorm.convert_sync_batchnorm(model).to(device) + logger.info('Using SyncBatchNorm()') - # Scheduler https://arxiv.org/pdf/1812.01187.pdf - lf = lambda x: (((1 + math.cos(x * math.pi / epochs)) / 2) ** 1.0) * 0.95 + 0.05 # cosine - scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf) - scheduler.last_epoch = start_epoch - 1 # see link below - # https://discuss.pytorch.org/t/a-problem-occured-when-resuming-an-optimizer/28822 + # EMA + ema = ModelEMA(model) if rank in [-1, 0] else None - # Plot lr schedule - # y = [] - # for _ in range(epochs): - # scheduler.step() - # y.append(optimizer.param_groups[0]['lr']) - # plt.plot(y, '.-', label='LambdaLR') - # plt.xlabel('epoch') - # plt.ylabel('LR') - # plt.tight_layout() - # plt.savefig('LR.png', dpi=300) + # DDP mode + if cuda and rank != -1: + model = DDP(model, device_ids=[opt.local_rank], output_device=opt.local_rank) - # Initialize distributed training - if device.type != 'cpu' and torch.cuda.device_count() > 1 and torch.distributed.is_available(): - dist.init_process_group(backend='nccl', # 'distributed backend' - init_method='tcp://127.0.0.1:9999', # distributed training init method - world_size=1, # number of nodes for distributed training - rank=0) # distributed training node rank - model = torch.nn.parallel.DistributedDataParallel(model, find_unused_parameters=True) - model.yolo_layers = model.module.yolo_layers # move yolo layer indices to top level + # Trainloader + dataloader, dataset = create_dataloader(train_path, imgsz, batch_size, gs, opt, + hyp=hyp, augment=True, cache=opt.cache_images, rect=opt.rect, rank=rank, + world_size=opt.world_size, workers=opt.workers, + image_weights=opt.image_weights) + mlc = np.concatenate(dataset.labels, 0)[:, 0].max() # max label class + nb = len(dataloader) # number of batches + assert mlc < nc, 'Label class %g exceeds nc=%g in %s. Possible class labels are 0-%g' % (mlc, nc, opt.data, nc - 1) - # Dataset - dataset = LoadImagesAndLabels(train_path, img_size, batch_size, - augment=True, - hyp=hyp, # augmentation hyperparameters - rect=opt.rect, # rectangular training - cache_images=opt.cache_images, - single_cls=opt.single_cls) + # Process 0 + if rank in [-1, 0]: + ema.updates = start_epoch * nb // accumulate # set EMA updates + testloader = create_dataloader(test_path, imgsz_test, total_batch_size, gs, opt, + hyp=hyp, cache=opt.cache_images and not opt.notest, rect=True, + rank=-1, world_size=opt.world_size, workers=opt.workers)[0] # testloader - # Dataloader - batch_size = min(batch_size, len(dataset)) - nw = min([os.cpu_count(), batch_size if batch_size > 1 else 0, 8]) # number of workers - dataloader = torch.utils.data.DataLoader(dataset, - batch_size=batch_size, - num_workers=nw, - shuffle=not opt.rect, # Shuffle=True unless rectangular training is used - pin_memory=True, - collate_fn=dataset.collate_fn) + if not opt.resume: + labels = np.concatenate(dataset.labels, 0) + c = torch.tensor(labels[:, 0]) # classes + # cf = torch.bincount(c.long(), minlength=nc) + 1. # frequency + # model._initialize_biases(cf.to(device)) + if plots: + plot_labels(labels, save_dir=save_dir) + if tb_writer: + tb_writer.add_histogram('classes', c, 0) + if wandb: + wandb.log({"Labels": [wandb.Image(str(x), caption=x.name) for x in save_dir.glob('*labels*.png')]}) - # Testloader - testloader = torch.utils.data.DataLoader(LoadImagesAndLabels(test_path, imgsz_test, batch_size, - hyp=hyp, - rect=True, - cache_images=opt.cache_images, - single_cls=opt.single_cls), - batch_size=batch_size, - num_workers=nw, - pin_memory=True, - collate_fn=dataset.collate_fn) + # Anchors + if not opt.noautoanchor: + check_anchors(dataset, model=model, thr=hyp['anchor_t'], imgsz=imgsz) # Model parameters + hyp['cls'] *= nc / 80. # scale coco-tuned hyp['cls'] to current dataset model.nc = nc # attach number of classes to model model.hyp = hyp # attach hyperparameters to model - model.gr = 1.0 # giou loss ratio (obj_loss = 1.0 or giou) + model.gr = 1.0 # iou loss ratio (obj_loss = 1.0 or iou) model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights - - # Model EMA - ema = torch_utils.ModelEMA(model) + model.names = names # Start training - nb = len(dataloader) # number of batches - n_burn = max(3 * nb, 500) # burn-in iterations, max(3 epochs, 500 iterations) - maps = np.zeros(nc) # mAP per class - # torch.autograd.set_detect_anomaly(True) - results = (0, 0, 0, 0, 0, 0, 0) # 'P', 'R', 'mAP', 'F1', 'val GIoU', 'val Objectness', 'val Classification' t0 = time.time() - print('Image sizes %g - %g train, %g test' % (imgsz_min, imgsz_max, imgsz_test)) - print('Using %g dataloader workers' % nw) - print('Starting training for %g epochs...' % epochs) + nw = max(round(hyp['warmup_epochs'] * nb), 1000) # number of warmup iterations, max(3 epochs, 1k iterations) + # nw = min(nw, (epochs - start_epoch) / 2 * nb) # limit warmup to < 1/2 of training + maps = np.zeros(nc) # mAP per class + results = (0, 0, 0, 0, 0, 0, 0) # P, R, mAP@.5, mAP@.5-.95, val_loss(box, obj, cls) + scheduler.last_epoch = start_epoch - 1 # do not move + scaler = amp.GradScaler(enabled=cuda) + logger.info('Image sizes %g train, %g test\n' + 'Using %g dataloader workers\nLogging results to %s\n' + 'Starting training for %g epochs...' % (imgsz, imgsz_test, dataloader.num_workers, save_dir, epochs)) for epoch in range(start_epoch, epochs): # epoch ------------------------------------------------------------------ model.train() # Update image weights (optional) - if dataset.image_weights: - w = model.class_weights.cpu().numpy() * (1 - maps) ** 2 # class weights - image_weights = labels_to_image_weights(dataset.labels, nc=nc, class_weights=w) - dataset.indices = random.choices(range(dataset.n), weights=image_weights, k=dataset.n) # rand weighted idx + if opt.image_weights: + # Generate indices + if rank in [-1, 0]: + cw = model.class_weights.cpu().numpy() * (1 - maps) ** 2 # class weights + iw = labels_to_image_weights(dataset.labels, nc=nc, class_weights=cw) # image weights + dataset.indices = random.choices(range(dataset.n), weights=iw, k=dataset.n) # rand weighted idx + # Broadcast if DDP + if rank != -1: + indices = (torch.tensor(dataset.indices) if rank == 0 else torch.zeros(dataset.n)).int() + dist.broadcast(indices, 0) + if rank != 0: + dataset.indices = indices.cpu().numpy() - mloss = torch.zeros(4).to(device) # mean losses - print(('\n' + '%10s' * 8) % ('Epoch', 'gpu_mem', 'GIoU', 'obj', 'cls', 'total', 'targets', 'img_size')) - pbar = tqdm(enumerate(dataloader), total=nb) # progress bar + # Update mosaic border + # b = int(random.uniform(0.25 * imgsz, 0.75 * imgsz + gs) // gs * gs) + # dataset.mosaic_border = [b - imgsz, -b] # height, width borders + + mloss = torch.zeros(4, device=device) # mean losses + if rank != -1: + dataloader.sampler.set_epoch(epoch) + pbar = enumerate(dataloader) + logger.info(('\n' + '%10s' * 8) % ('Epoch', 'gpu_mem', 'box', 'obj', 'cls', 'total', 'targets', 'img_size')) + if rank in [-1, 0]: + pbar = tqdm(pbar, total=nb) # progress bar + optimizer.zero_grad() for i, (imgs, targets, paths, _) in pbar: # batch ------------------------------------------------------------- ni = i + nb * epoch # number integrated batches (since train start) - imgs = imgs.to(device).float() / 255.0 # uint8 to float32, 0 - 255 to 0.0 - 1.0 - targets = targets.to(device) + imgs = imgs.to(device, non_blocking=True).float() / 255.0 # uint8 to float32, 0-255 to 0.0-1.0 - # Burn-in - if ni <= n_burn: - xi = [0, n_burn] # x interp - model.gr = np.interp(ni, xi, [0.0, 1.0]) # giou loss ratio (obj_loss = 1.0 or giou) - accumulate = max(1, np.interp(ni, xi, [1, 64 / batch_size]).round()) + # Warmup + if ni <= nw: + xi = [0, nw] # x interp + # model.gr = np.interp(ni, xi, [0.0, 1.0]) # iou loss ratio (obj_loss = 1.0 or iou) + accumulate = max(1, np.interp(ni, xi, [1, nbs / total_batch_size]).round()) for j, x in enumerate(optimizer.param_groups): # bias lr falls from 0.1 to lr0, all other lrs rise from 0.0 to lr0 - x['lr'] = np.interp(ni, xi, [0.1 if j == 2 else 0.0, x['initial_lr'] * lf(epoch)]) - x['weight_decay'] = np.interp(ni, xi, [0.0, hyp['weight_decay'] if j == 1 else 0.0]) + x['lr'] = np.interp(ni, xi, [hyp['warmup_bias_lr'] if j == 2 else 0.0, x['initial_lr'] * lf(epoch)]) if 'momentum' in x: - x['momentum'] = np.interp(ni, xi, [0.9, hyp['momentum']]) + x['momentum'] = np.interp(ni, xi, [hyp['warmup_momentum'], hyp['momentum']]) - # Multi-Scale + # Multi-scale if opt.multi_scale: - if ni / accumulate % 1 == 0: #  adjust img_size (67% - 150%) every 1 batch - img_size = random.randrange(grid_min, grid_max + 1) * gs - sf = img_size / max(imgs.shape[2:]) # scale factor + sz = random.randrange(imgsz * 0.5, imgsz * 1.5 + gs) // gs * gs # size + sf = sz / max(imgs.shape[2:]) # scale factor if sf != 1: - ns = [math.ceil(x * sf / gs) * gs for x in imgs.shape[2:]] # new shape (stretched to 32-multiple) + ns = [math.ceil(x * sf / gs) * gs for x in imgs.shape[2:]] # new shape (stretched to gs-multiple) imgs = F.interpolate(imgs, size=ns, mode='bilinear', align_corners=False) # Forward - pred = model(imgs) - - # Loss - loss, loss_items = compute_loss(pred, targets, model) - if not torch.isfinite(loss): - print('WARNING: non-finite loss, ending training ', loss_items) - return results + with amp.autocast(enabled=cuda): + pred = model(imgs) # forward + loss, loss_items = compute_loss(pred, targets.to(device), model) # loss scaled by batch_size + if rank != -1: + loss *= opt.world_size # gradient averaged between devices in DDP mode # Backward - loss *= batch_size / 64 # scale loss - if mixed_precision: - with amp.scale_loss(loss, optimizer) as scaled_loss: - scaled_loss.backward() - else: - loss.backward() + scaler.scale(loss).backward() # Optimize if ni % accumulate == 0: - optimizer.step() + scaler.step(optimizer) # optimizer.step + scaler.update() optimizer.zero_grad() - ema.update(model) + if ema: + ema.update(model) # Print - mloss = (mloss * i + loss_items) / (i + 1) # update mean losses - mem = '%.3gG' % (torch.cuda.memory_cached() / 1E9 if torch.cuda.is_available() else 0) # (GB) - s = ('%10s' * 2 + '%10.3g' * 6) % ('%g/%g' % (epoch, epochs - 1), mem, *mloss, len(targets), img_size) - pbar.set_description(s) + if rank in [-1, 0]: + mloss = (mloss * i + loss_items) / (i + 1) # update mean losses + mem = '%.3gG' % (torch.cuda.memory_reserved() / 1E9 if torch.cuda.is_available() else 0) # (GB) + s = ('%10s' * 2 + '%10.4g' * 6) % ( + '%g/%g' % (epoch, epochs - 1), mem, *mloss, targets.shape[0], imgs.shape[-1]) + pbar.set_description(s) - # Plot - if ni < 1: - f = 'train_batch%g.jpg' % i # filename - res = plot_images(images=imgs, targets=targets, paths=paths, fname=f) - if tb_writer: - tb_writer.add_image(f, res, dataformats='HWC', global_step=epoch) - # tb_writer.add_graph(model, imgs) # add model to tensorboard + # Plot + if plots and ni < 3: + f = save_dir / f'train_batch{ni}.jpg' # filename + plot_images(images=imgs, targets=targets, paths=paths, fname=f) + # if tb_writer: + # tb_writer.add_image(f, result, dataformats='HWC', global_step=epoch) + # tb_writer.add_graph(model, imgs) # add model to tensorboard + elif plots and ni == 3 and wandb: + wandb.log({"Mosaics": [wandb.Image(str(x), caption=x.name) for x in save_dir.glob('train*.jpg')]}) # end batch ------------------------------------------------------------------------------------------------ + # end epoch ---------------------------------------------------------------------------------------------------- - # Update scheduler + # Scheduler + lr = [x['lr'] for x in optimizer.param_groups] # for tensorboard scheduler.step() - # Process epoch results - ema.update_attr(model) - final_epoch = epoch + 1 == epochs - if not opt.notest or final_epoch: # Calculate mAP - is_coco = any([x in data for x in ['coco.data', 'coco2014.data', 'coco2017.data']]) and model.nc == 80 - results, maps = test.test(cfg, - data, - batch_size=batch_size, - imgsz=imgsz_test, - model=ema.ema, - save_json=final_epoch and is_coco, - single_cls=opt.single_cls, - dataloader=testloader, - multi_label=ni > n_burn) + # DDP process 0 or single-GPU + if rank in [-1, 0]: + # mAP + if ema: + ema.update_attr(model, include=['yaml', 'nc', 'hyp', 'gr', 'names', 'stride']) + final_epoch = epoch + 1 == epochs + if not opt.notest or final_epoch: # Calculate mAP + results, maps, times = test.test(opt.data, + batch_size=total_batch_size, + imgsz=imgsz_test, + model=ema.ema, + single_cls=opt.single_cls, + dataloader=testloader, + save_dir=save_dir, + plots=plots and final_epoch, + log_imgs=opt.log_imgs if wandb else 0) - # Write - with open(results_file, 'a') as f: - f.write(s + '%10.3g' * 7 % results + '\n') # P, R, mAP, F1, test_losses=(GIoU, obj, cls) - if len(opt.name) and opt.bucket: - os.system('gsutil cp results.txt gs://%s/results/results%s.txt' % (opt.bucket, opt.name)) + # Write + with open(results_file, 'a') as f: + f.write(s + '%10.4g' * 7 % results + '\n') # P, R, mAP@.5, mAP@.5-.95, val_loss(box, obj, cls) + if len(opt.name) and opt.bucket: + os.system('gsutil cp %s gs://%s/results/results%s.txt' % (results_file, opt.bucket, opt.name)) - # Tensorboard - if tb_writer: - tags = ['train/giou_loss', 'train/obj_loss', 'train/cls_loss', - 'metrics/precision', 'metrics/recall', 'metrics/mAP_0.5', 'metrics/F1', - 'val/giou_loss', 'val/obj_loss', 'val/cls_loss'] - for x, tag in zip(list(mloss[:-1]) + list(results), tags): - tb_writer.add_scalar(tag, x, epoch) + # Log + tags = ['train/box_loss', 'train/obj_loss', 'train/cls_loss', # train loss + 'metrics/precision', 'metrics/recall', 'metrics/mAP_0.5', 'metrics/mAP_0.5:0.95', + 'val/box_loss', 'val/obj_loss', 'val/cls_loss', # val loss + 'x/lr0', 'x/lr1', 'x/lr2'] # params + for x, tag in zip(list(mloss[:-1]) + list(results) + lr, tags): + if tb_writer: + tb_writer.add_scalar(tag, x, epoch) # tensorboard + if wandb: + wandb.log({tag: x}) # W&B - # Update best mAP - fi = fitness(np.array(results).reshape(1, -1)) # fitness_i = weighted combination of [P, R, mAP, F1] - if fi > best_fitness: - best_fitness = fi + # Update best mAP + fi = fitness(np.array(results).reshape(1, -1)) # weighted combination of [P, R, mAP@.5, mAP@.5-.95] + if fi > best_fitness: + best_fitness = fi - # Save model - save = (not opt.nosave) or (final_epoch and not opt.evolve) - if save: - with open(results_file, 'r') as f: # create checkpoint - ckpt = {'epoch': epoch, - 'best_fitness': best_fitness, - 'training_results': f.read(), - 'model': ema.ema.module.state_dict() if hasattr(model, 'module') else ema.ema.state_dict(), - 'optimizer': None if final_epoch else optimizer.state_dict()} - - # Save last, best and delete - torch.save(ckpt, last) - if (best_fitness == fi) and not final_epoch: - torch.save(ckpt, best) - del ckpt + # Save model + save = (not opt.nosave) or (final_epoch and not opt.evolve) + if save: + with open(results_file, 'r') as f: # create checkpoint + ckpt = {'epoch': epoch, + 'best_fitness': best_fitness, + 'training_results': f.read(), + 'model': ema.ema, + 'optimizer': None if final_epoch else optimizer.state_dict(), + 'wandb_id': wandb_run.id if wandb else None} + # Save last, best and delete + torch.save(ckpt, last) + if best_fitness == fi: + torch.save(ckpt, best) + del ckpt # end epoch ---------------------------------------------------------------------------------------------------- # end training - n = opt.name - if len(n): - n = '_' + n if not n.isnumeric() else n - fresults, flast, fbest = 'results%s.txt' % n, wdir + 'last%s.pt' % n, wdir + 'best%s.pt' % n - for f1, f2 in zip([wdir + 'last.pt', wdir + 'best.pt', 'results.txt'], [flast, fbest, fresults]): - if os.path.exists(f1): + if rank in [-1, 0]: + # Strip optimizers + n = opt.name if opt.name.isnumeric() else '' + fresults, flast, fbest = save_dir / f'results{n}.txt', wdir / f'last{n}.pt', wdir / f'best{n}.pt' + for f1, f2 in zip([wdir / 'last.pt', wdir / 'best.pt', results_file], [flast, fbest, fresults]): + if f1.exists(): os.rename(f1, f2) # rename - ispt = f2.endswith('.pt') # is *.pt - strip_optimizer(f2) if ispt else None # strip optimizer - os.system('gsutil cp %s gs://%s/weights' % (f2, opt.bucket)) if opt.bucket and ispt else None # upload + if str(f2).endswith('.pt'): # is *.pt + strip_optimizer(f2) # strip optimizer + os.system('gsutil cp %s gs://%s/weights' % (f2, opt.bucket)) if opt.bucket else None # upload + # Finish + if plots: + plot_results(save_dir=save_dir) # save as results.png + if wandb: + files = ['results.png', 'precision_recall_curve.png', 'confusion_matrix.png'] + wandb.log({"Results": [wandb.Image(str(save_dir / f), caption=f) for f in files + if (save_dir / f).exists()]}) + logger.info('%g epochs completed in %.3f hours.\n' % (epoch - start_epoch + 1, (time.time() - t0) / 3600)) + else: + dist.destroy_process_group() - if not opt.evolve: - plot_results() # save as results.png - print('%g epochs completed in %.3f hours.\n' % (epoch - start_epoch + 1, (time.time() - t0) / 3600)) - dist.destroy_process_group() if torch.cuda.device_count() > 1 else None + wandb.run.finish() if wandb and wandb.run else None torch.cuda.empty_cache() return results if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument('--epochs', type=int, default=300) # 500200 batches at bs 16, 117263 COCO images = 273 epochs - parser.add_argument('--batch-size', type=int, default=16) # effective bs = batch_size * accumulate = 16 * 4 = 64 - parser.add_argument('--cfg', type=str, default='cfg/yolov3-spp.cfg', help='*.cfg path') - parser.add_argument('--data', type=str, default='data/coco2017.data', help='*.data path') - parser.add_argument('--multi-scale', action='store_true', help='adjust (67%% - 150%%) img_size every 10 batches') - parser.add_argument('--img-size', nargs='+', type=int, default=[320, 640], help='[min_train, max-train, test]') + parser.add_argument('--weights', type=str, default='yolov3.pt', help='initial weights path') + parser.add_argument('--cfg', type=str, default='', help='model.yaml path') + parser.add_argument('--data', type=str, default='data/coco128.yaml', help='data.yaml path') + parser.add_argument('--hyp', type=str, default='data/hyp.scratch.yaml', help='hyperparameters path') + parser.add_argument('--epochs', type=int, default=300) + parser.add_argument('--batch-size', type=int, default=16, help='total batch size for all GPUs') + parser.add_argument('--img-size', nargs='+', type=int, default=[640, 640], help='[train, test] image sizes') parser.add_argument('--rect', action='store_true', help='rectangular training') - parser.add_argument('--resume', action='store_true', help='resume training from last.pt') + parser.add_argument('--resume', nargs='?', const=True, default=False, help='resume most recent training') parser.add_argument('--nosave', action='store_true', help='only save final checkpoint') parser.add_argument('--notest', action='store_true', help='only test final epoch') + parser.add_argument('--noautoanchor', action='store_true', help='disable autoanchor check') parser.add_argument('--evolve', action='store_true', help='evolve hyperparameters') parser.add_argument('--bucket', type=str, default='', help='gsutil bucket') parser.add_argument('--cache-images', action='store_true', help='cache images for faster training') - parser.add_argument('--weights', type=str, default='weights/yolov3-spp-ultralytics.pt', help='initial weights path') - parser.add_argument('--name', default='', help='renames results.txt to results_name.txt if supplied') - parser.add_argument('--device', default='', help='device id (i.e. 0 or 0,1 or cpu)') - parser.add_argument('--adam', action='store_true', help='use adam optimizer') + parser.add_argument('--image-weights', action='store_true', help='use weighted image selection for training') + parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') + parser.add_argument('--multi-scale', action='store_true', help='vary img-size +/- 50%%') parser.add_argument('--single-cls', action='store_true', help='train as single-class dataset') - parser.add_argument('--freeze-layers', action='store_true', help='Freeze non-output layers') + parser.add_argument('--adam', action='store_true', help='use torch.optim.Adam() optimizer') + parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode') + parser.add_argument('--local_rank', type=int, default=-1, help='DDP parameter, do not modify') + parser.add_argument('--log-imgs', type=int, default=16, help='number of images for W&B logging, max 100') + parser.add_argument('--workers', type=int, default=8, help='maximum number of dataloader workers') + parser.add_argument('--project', default='runs/train', help='save to project/name') + parser.add_argument('--name', default='exp', help='save to project/name') + parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment') opt = parser.parse_args() - opt.weights = last if opt.resume and not opt.weights else opt.weights - check_git_status() - opt.cfg = check_file(opt.cfg) # check file - opt.data = check_file(opt.data) # check file - print(opt) - opt.img_size.extend([opt.img_size[-1]] * (3 - len(opt.img_size))) # extend to 3 sizes (min, max, test) - device = torch_utils.select_device(opt.device, apex=mixed_precision, batch_size=opt.batch_size) - if device.type == 'cpu': - mixed_precision = False - # scale hyp['obj'] by img_size (evolved at 320) - # hyp['obj'] *= opt.img_size[0] / 320. + # Set DDP variables + opt.total_batch_size = opt.batch_size + opt.world_size = int(os.environ['WORLD_SIZE']) if 'WORLD_SIZE' in os.environ else 1 + opt.global_rank = int(os.environ['RANK']) if 'RANK' in os.environ else -1 + set_logging(opt.global_rank) + if opt.global_rank in [-1, 0]: + check_git_status() - tb_writer = None - if not opt.evolve: # Train normally - print('Start Tensorboard with "tensorboard --logdir=runs", view at http://localhost:6006/') - tb_writer = SummaryWriter(comment=opt.name) - train(hyp) # train normally + # Resume + if opt.resume: # resume an interrupted run + ckpt = opt.resume if isinstance(opt.resume, str) else get_latest_run() # specified or most recent path + assert os.path.isfile(ckpt), 'ERROR: --resume checkpoint does not exist' + with open(Path(ckpt).parent.parent / 'opt.yaml') as f: + opt = argparse.Namespace(**yaml.load(f, Loader=yaml.FullLoader)) # replace + opt.cfg, opt.weights, opt.resume = '', ckpt, True + logger.info('Resuming training from %s' % ckpt) + else: + # opt.hyp = opt.hyp or ('hyp.finetune.yaml' if opt.weights else 'hyp.scratch.yaml') + opt.data, opt.cfg, opt.hyp = check_file(opt.data), check_file(opt.cfg), check_file(opt.hyp) # check files + assert len(opt.cfg) or len(opt.weights), 'either --cfg or --weights must be specified' + opt.img_size.extend([opt.img_size[-1]] * (2 - len(opt.img_size))) # extend to 2 sizes (train, test) + opt.name = 'evolve' if opt.evolve else opt.name + opt.save_dir = increment_path(Path(opt.project) / opt.name, exist_ok=opt.exist_ok | opt.evolve) # increment run - else: # Evolve hyperparameters (optional) + # DDP mode + device = select_device(opt.device, batch_size=opt.batch_size) + if opt.local_rank != -1: + assert torch.cuda.device_count() > opt.local_rank + torch.cuda.set_device(opt.local_rank) + device = torch.device('cuda', opt.local_rank) + dist.init_process_group(backend='nccl', init_method='env://') # distributed backend + assert opt.batch_size % opt.world_size == 0, '--batch-size must be multiple of CUDA device count' + opt.batch_size = opt.total_batch_size // opt.world_size + + # Hyperparameters + with open(opt.hyp) as f: + hyp = yaml.load(f, Loader=yaml.FullLoader) # load hyps + if 'box' not in hyp: + warn('Compatibility: %s missing "box" which was renamed from "giou" in %s' % + (opt.hyp, 'https://github.com/ultralytics/yolov5/pull/1120')) + hyp['box'] = hyp.pop('giou') + + # Train + logger.info(opt) + if not opt.evolve: + tb_writer = None # init loggers + if opt.global_rank in [-1, 0]: + logger.info(f'Start Tensorboard with "tensorboard --logdir {opt.project}", view at http://localhost:6006/') + tb_writer = SummaryWriter(opt.save_dir) # Tensorboard + train(hyp, opt, device, tb_writer, wandb) + + # Evolve hyperparameters (optional) + else: + # Hyperparameter evolution metadata (mutation scale 0-1, lower_limit, upper_limit) + meta = {'lr0': (1, 1e-5, 1e-1), # initial learning rate (SGD=1E-2, Adam=1E-3) + 'lrf': (1, 0.01, 1.0), # final OneCycleLR learning rate (lr0 * lrf) + 'momentum': (0.3, 0.6, 0.98), # SGD momentum/Adam beta1 + 'weight_decay': (1, 0.0, 0.001), # optimizer weight decay + 'warmup_epochs': (1, 0.0, 5.0), # warmup epochs (fractions ok) + 'warmup_momentum': (1, 0.0, 0.95), # warmup initial momentum + 'warmup_bias_lr': (1, 0.0, 0.2), # warmup initial bias lr + 'box': (1, 0.02, 0.2), # box loss gain + 'cls': (1, 0.2, 4.0), # cls loss gain + 'cls_pw': (1, 0.5, 2.0), # cls BCELoss positive_weight + 'obj': (1, 0.2, 4.0), # obj loss gain (scale with pixels) + 'obj_pw': (1, 0.5, 2.0), # obj BCELoss positive_weight + 'iou_t': (0, 0.1, 0.7), # IoU training threshold + 'anchor_t': (1, 2.0, 8.0), # anchor-multiple threshold + 'anchors': (2, 2.0, 10.0), # anchors per output grid (0 to ignore) + 'fl_gamma': (0, 0.0, 2.0), # focal loss gamma (efficientDet default gamma=1.5) + 'hsv_h': (1, 0.0, 0.1), # image HSV-Hue augmentation (fraction) + 'hsv_s': (1, 0.0, 0.9), # image HSV-Saturation augmentation (fraction) + 'hsv_v': (1, 0.0, 0.9), # image HSV-Value augmentation (fraction) + 'degrees': (1, 0.0, 45.0), # image rotation (+/- deg) + 'translate': (1, 0.0, 0.9), # image translation (+/- fraction) + 'scale': (1, 0.0, 0.9), # image scale (+/- gain) + 'shear': (1, 0.0, 10.0), # image shear (+/- deg) + 'perspective': (0, 0.0, 0.001), # image perspective (+/- fraction), range 0-0.001 + 'flipud': (1, 0.0, 1.0), # image flip up-down (probability) + 'fliplr': (0, 0.0, 1.0), # image flip left-right (probability) + 'mosaic': (1, 0.0, 1.0), # image mixup (probability) + 'mixup': (1, 0.0, 1.0)} # image mixup (probability) + + assert opt.local_rank == -1, 'DDP mode not implemented for --evolve' opt.notest, opt.nosave = True, True # only test/save final epoch + # ei = [isinstance(x, (int, float)) for x in hyp.values()] # evolvable indices + yaml_file = Path(opt.save_dir) / 'hyp_evolved.yaml' # save best result here if opt.bucket: os.system('gsutil cp gs://%s/evolve.txt .' % opt.bucket) # download evolve.txt if exists - for _ in range(1): # generations to evolve - if os.path.exists('evolve.txt'): # if evolve.txt exists: select best hyps and mutate + for _ in range(300): # generations to evolve + if Path('evolve.txt').exists(): # if evolve.txt exists: select best hyps and mutate # Select parent(s) parent = 'single' # parent selection method: 'single' or 'weighted' x = np.loadtxt('evolve.txt', ndmin=2) @@ -450,34 +545,30 @@ if __name__ == '__main__': x = (x * w.reshape(n, 1)).sum(0) / w.sum() # weighted combination # Mutate - method, mp, s = 3, 0.9, 0.2 # method, mutation probability, sigma + mp, s = 0.8, 0.2 # mutation probability, sigma npr = np.random npr.seed(int(time.time())) - g = np.array([1, 1, 1, 1, 1, 1, 1, 0, .1, 1, 0, 1, 1, 1, 1, 1, 1, 1]) # gains - ng = len(g) - if method == 1: - v = (npr.randn(ng) * npr.random() * g * s + 1) ** 2.0 - elif method == 2: - v = (npr.randn(ng) * npr.random(ng) * g * s + 1) ** 2.0 - elif method == 3: - v = np.ones(ng) - while all(v == 1): # mutate until a change occurs (prevent duplicates) - # v = (g * (npr.random(ng) < mp) * npr.randn(ng) * s + 1) ** 2.0 - v = (g * (npr.random(ng) < mp) * npr.randn(ng) * npr.random() * s + 1).clip(0.3, 3.0) + g = np.array([x[0] for x in meta.values()]) # gains 0-1 + ng = len(meta) + v = np.ones(ng) + while all(v == 1): # mutate until a change occurs (prevent duplicates) + v = (g * (npr.random(ng) < mp) * npr.randn(ng) * npr.random() * s + 1).clip(0.3, 3.0) for i, k in enumerate(hyp.keys()): # plt.hist(v.ravel(), 300) - hyp[k] = x[i + 7] * v[i] # mutate + hyp[k] = float(x[i + 7] * v[i]) # mutate - # Clip to limits - keys = ['lr0', 'iou_t', 'momentum', 'weight_decay', 'hsv_s', 'hsv_v', 'translate', 'scale', 'fl_gamma'] - limits = [(1e-5, 1e-2), (0.00, 0.70), (0.60, 0.98), (0, 0.001), (0, .9), (0, .9), (0, .9), (0, .9), (0, 3)] - for k, v in zip(keys, limits): - hyp[k] = np.clip(hyp[k], v[0], v[1]) + # Constrain to limits + for k, v in meta.items(): + hyp[k] = max(hyp[k], v[1]) # lower limit + hyp[k] = min(hyp[k], v[2]) # upper limit + hyp[k] = round(hyp[k], 5) # significant digits # Train mutation - results = train(hyp.copy()) + results = train(hyp.copy(), opt, device, wandb=wandb) # Write mutation results - print_mutation(hyp, results, opt.bucket) + print_mutation(hyp.copy(), results, yaml_file, opt.bucket) - # Plot results - # plot_evolution_results(hyp) + # Plot results + plot_evolution(yaml_file) + print(f'Hyperparameter evolution complete. Best results saved as: {yaml_file}\n' + f'Command to train a new model with these hyperparameters: $ python train.py --hyp {yaml_file}') diff --git a/tutorial.ipynb b/tutorial.ipynb index 53e5cd1a..5e190e21 100644 --- a/tutorial.ipynb +++ b/tutorial.ipynb @@ -1,495 +1,1212 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "HvhYZrIZCEyo" - }, - "source": [ - "\n", - "\n", - "
\n", - " \n", - " View source on github\n", - " \n", - "\n", - " \n", - " Run in Google Colab\n", - "
\n", - "\n", - "This notebook contains software developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information please visit https://github.com/ultralytics/yolov3 and https://www.ultralytics.com.\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { "colab": { - "base_uri": "https://localhost:8080/", - "height": 34 + "name": "YOLOv3 Tutorial", + "provenance": [], + "collapsed_sections": [], + "toc_visible": true, + "include_colab_link": true }, - "colab_type": "code", - "id": "e5ylFIvlCEym", - "outputId": "fbc88edd-7b26-4735-83bf-b404b76f9c90" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "PyTorch 1.1.0 _CudaDeviceProperties(name='Tesla K80', major=3, minor=7, total_memory=11441MB, multi_processor_count=13)\n" - ] + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "accelerator": "GPU", + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "b257add75888401ebf17767cdc9ed439": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "state": { + "_view_name": "HBoxView", + "_dom_classes": [], + "_model_name": "HBoxModel", + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.5.0", + "box_style": "", + "layout": "IPY_MODEL_4b685e8b26f3496db73186063e19f785", + "_model_module": "@jupyter-widgets/controls", + "children": [ + "IPY_MODEL_0980232d74a14bdfa353a3f248bbe8ff", + "IPY_MODEL_e981f3dfbf374643b58cba7dfbef3bca" + ] + } + }, + "4b685e8b26f3496db73186063e19f785": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "0980232d74a14bdfa353a3f248bbe8ff": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "state": { + "_view_name": "ProgressView", + "style": "IPY_MODEL_07bb32c950654e9fa401e35a0030eadc", + "_dom_classes": [], + "description": "100%", + "_model_name": "FloatProgressModel", + "bar_style": "success", + "max": 819257867, + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "value": 819257867, + "_view_count": null, + "_view_module_version": "1.5.0", + "orientation": "horizontal", + "min": 0, + "description_tooltip": null, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_ec3fce2f475b4f31b8caf1a0ca912af1" + } + }, + "e981f3dfbf374643b58cba7dfbef3bca": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "state": { + "_view_name": "HTMLView", + "style": "IPY_MODEL_9a1c27af326e43ca8a8b6b90cf0075db", + "_dom_classes": [], + "description": "", + "_model_name": "HTMLModel", + "placeholder": "​", + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "value": " 781M/781M [00:49<00:00, 16.7MB/s]", + "_view_count": null, + "_view_module_version": "1.5.0", + "description_tooltip": null, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_7cf92d6d6c704a8d8e7834783813228d" + } + }, + "07bb32c950654e9fa401e35a0030eadc": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "state": { + "_view_name": "StyleView", + "_model_name": "ProgressStyleModel", + "description_width": "initial", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "bar_color": null, + "_model_module": "@jupyter-widgets/controls" + } + }, + "ec3fce2f475b4f31b8caf1a0ca912af1": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "9a1c27af326e43ca8a8b6b90cf0075db": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "state": { + "_view_name": "StyleView", + "_model_name": "DescriptionStyleModel", + "description_width": "", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "_model_module": "@jupyter-widgets/controls" + } + }, + "7cf92d6d6c704a8d8e7834783813228d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "c1928794b5bd400da6e7817883a0ee9c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "state": { + "_view_name": "HBoxView", + "_dom_classes": [], + "_model_name": "HBoxModel", + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.5.0", + "box_style": "", + "layout": "IPY_MODEL_804fae06a69f4e11b919d8ab80822186", + "_model_module": "@jupyter-widgets/controls", + "children": [ + "IPY_MODEL_138cbb92b4fd4eaa9b7fdcbed1f57a4d", + "IPY_MODEL_28bb2eea5b114f82b201e5fa39fdfc58" + ] + } + }, + "804fae06a69f4e11b919d8ab80822186": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "138cbb92b4fd4eaa9b7fdcbed1f57a4d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "state": { + "_view_name": "ProgressView", + "style": "IPY_MODEL_aea8bd6f395845f696e3abedbff59423", + "_dom_classes": [], + "description": "100%", + "_model_name": "FloatProgressModel", + "bar_style": "success", + "max": 22090455, + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "value": 22090455, + "_view_count": null, + "_view_module_version": "1.5.0", + "orientation": "horizontal", + "min": 0, + "description_tooltip": null, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_0514774dafdf4e39bdd5a8833d1cbcb0" + } + }, + "28bb2eea5b114f82b201e5fa39fdfc58": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "state": { + "_view_name": "HTMLView", + "style": "IPY_MODEL_7dabd1f8236045729c90ae78a0d9af24", + "_dom_classes": [], + "description": "", + "_model_name": "HTMLModel", + "placeholder": "​", + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "value": " 21.1M/21.1M [00:02<00:00, 9.27MB/s]", + "_view_count": null, + "_view_module_version": "1.5.0", + "description_tooltip": null, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_227e357d925345f995aeea7b72750cf1" + } + }, + "aea8bd6f395845f696e3abedbff59423": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "state": { + "_view_name": "StyleView", + "_model_name": "ProgressStyleModel", + "description_width": "initial", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "bar_color": null, + "_model_module": "@jupyter-widgets/controls" + } + }, + "0514774dafdf4e39bdd5a8833d1cbcb0": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + }, + "7dabd1f8236045729c90ae78a0d9af24": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "state": { + "_view_name": "StyleView", + "_model_name": "DescriptionStyleModel", + "description_width": "", + "_view_module": "@jupyter-widgets/base", + "_model_module_version": "1.5.0", + "_view_count": null, + "_view_module_version": "1.2.0", + "_model_module": "@jupyter-widgets/controls" + } + }, + "227e357d925345f995aeea7b72750cf1": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "state": { + "_view_name": "LayoutView", + "grid_template_rows": null, + "right": null, + "justify_content": null, + "_view_module": "@jupyter-widgets/base", + "overflow": null, + "_model_module_version": "1.2.0", + "_view_count": null, + "flex_flow": null, + "width": null, + "min_width": null, + "border": null, + "align_items": null, + "bottom": null, + "_model_module": "@jupyter-widgets/base", + "top": null, + "grid_column": null, + "overflow_y": null, + "overflow_x": null, + "grid_auto_flow": null, + "grid_area": null, + "grid_template_columns": null, + "flex": null, + "_model_name": "LayoutModel", + "justify_items": null, + "grid_row": null, + "max_height": null, + "align_content": null, + "visibility": null, + "align_self": null, + "height": null, + "min_height": null, + "padding": null, + "grid_auto_rows": null, + "grid_gap": null, + "max_width": null, + "order": null, + "_view_module_version": "1.2.0", + "grid_template_areas": null, + "object_position": null, + "object_fit": null, + "grid_auto_columns": null, + "margin": null, + "display": null, + "left": null + } + } + } } - ], - "source": [ - "import time\n", - "import glob\n", - "import torch\n", - "import os\n", - "\n", - "from IPython.display import Image, clear_output \n", - "print('PyTorch %s %s' % (torch.__version__, torch.cuda.get_device_properties(0) if torch.cuda.is_available() else 'CPU'))" - ] }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "7mGmQbAO5pQb" - }, - "source": [ - "Clone repository and download COCO 2014 dataset (20GB):" - ] - }, - { - "cell_type": "code", - "execution_count": 0, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 221 - }, - "colab_type": "code", - "id": "tIFv0p1TCEyj", - "outputId": "e9230cff-ede4-491a-a74d-063ce77f21cd" - }, - "outputs": [ + "cells": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cloning into 'yolov3'...\n", - "remote: Enumerating objects: 61, done.\u001b[K\n", - "remote: Counting objects: 100% (61/61), done.\u001b[K\n", - "remote: Compressing objects: 100% (44/44), done.\u001b[K\n", - "remote: Total 4781 (delta 35), reused 37 (delta 17), pack-reused 4720\u001b[K\n", - "Receiving objects: 100% (4781/4781), 4.74 MiB | 6.95 MiB/s, done.\n", - "Resolving deltas: 100% (3254/3254), done.\n", - " % Total % Received % Xferd Average Speed Time Time Time Current\n", - " Dload Upload Total Spent Left Speed\n", - "100 388 0 388 0 0 2455 0 --:--:-- --:--:-- --:--:-- 2440\n", - "100 18.8G 0 18.8G 0 0 189M 0 --:--:-- 0:01:42 --:--:-- 174M\n", - "/content/yolov3\n" - ] - } - ], - "source": [ - "!git clone https://github.com/ultralytics/yolov3 # clone\n", - "!bash yolov3/data/get_coco2014.sh # copy COCO2014 dataset (19GB)\n", - "%cd yolov3" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "N3qM6T0W53gh" - }, - "source": [ - "Run `detect.py` to perform inference on images in `data/samples` folder:" - ] - }, - { - "cell_type": "code", - "execution_count": 0, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 477 - }, - "colab_type": "code", - "id": "zR9ZbuQCH7FX", - "outputId": "49268b66-125d-425e-dbd0-17b108914c51" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Namespace(cfg='cfg/yolov3-spp.cfg', conf_thres=0.5, data='data/coco.data', fourcc='mp4v', images='data/samples', img_size=416, nms_thres=0.5, output='output', weights='weights/yolov3-spp.weights')\n", - "Using CUDA with Apex device0 _CudaDeviceProperties(name='Tesla K80', total_memory=11441MB)\n", - "\n", - "image 1/2 data/samples/bus.jpg: 416x320 3 persons, 1 buss, 1 handbags, Done. (0.119s)\n", - "image 2/2 data/samples/zidane.jpg: 256x416 2 persons, 1 ties, Done. (0.085s)\n", - "Results saved to /content/yolov3/output\n" - ] - }, - { - "data": { - "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUGBgYF\nBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYHCgoKCgoK\nCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAARCALQBQADASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD8347F\n5pkSP5t38P3ttaFjZzR2rzOMjfs+/wDNVi10+5kh877Gqv8AwfP96tOz0+2b99sw0e1drfxV87HY\n+wjHm94z4bOZ2WZ4dgV9vzN81Tx6a8jHvu+bd/DV+HT51uHd0Up95Pl21bhtfIkH2ncqfN8q/e21\nNS0dUbU4/ZMf7Oi52OzMu1UVU+an/wBjlW3w7l2t8y/3q3pNPRl2I+1tn/AqZZ280cXk3Nrub+7v\n+6tefKtLl5onZGm48qMqbQ3k/wBJeb5lb5PMf5l/2aZcaW6tshhyzffZn3ba3biHzI5USFfmX7tQ\nyWc3zTXltuWPb+8jT+LbXJWxVWO534XDxkchrmm/KZt+d3yvurBm0maHLvu2su1G/vV3OsWsMe5x\nyWTd5bVh3VikkLJ5Pyqu7b/easaNacX7x6nsYyicrJYws3nom1m/vf3qWC3uYW32zr8v95v/AEGt\nK6s5I9iJuDMu51aq62827502Nt3Jur6zAylKUTlqREj+0wsiI7OzNuRW/wBr+7ViSPy4/wBzud9+\n1vm+Wq0aurIJtxdf4qtLayeX8nyusu5mb+KvqMPSlKJ58qnvco65uHaNpvlTdt2fJ8y0kjSbER3V\ntq7tzJtqbyPtDLDNtx96nTKjR/Ii7t38X3a9D2fKebUkoy5SHyXjnP75l/i/3amSSVm+0v5joqbf\nv/Ky/wB6i3/fRrv+9911j+6rUsMMuxvJufu/fXZXPKXLE4OaUuaxPBv3b9n+r/hjl3LVqH9zJ/qV\n2t823/eqtbwpHGkP+qVn+dY/l/4FVuzZLqRI5plV13b12fdX+GvLxHvF04825p2cm1Ucopdvl+V9\ntaVvDcSSK6fd+ZXrN0+GGS637F+V1aXd/d/hq7b75mX51Db9zMr/AC/7Py14WIqSNadHuaVjNLJC\nsP2pmTfuddvzNU8jO3yQ7X2/e/iaq8IeGNPLRW+bbu2fdq95n2OZXhhV2b5V3V4dap7+h6VOnHqW\nob792yI6o6orfLVCZJpPnudrBf4v97+KpmuIWmDzTKsrfdXft+7VCS5dpmR5o3/vq392uJSjztQO\nlx928hzbIZXSFFLs7fMqf6yopmubzY63jIVb7qrU32OGSP8AhRPveXHSyKluy/J975VXf/FWkqnN\nqLk5fdEntdy/3vl2eZs/76pU3yQyJsYeX8if3lqwsE0iy2zzfuvl/d/7VVr6O6WTf8yfe/d7/u1n\n71TRSMK0R8d1cxwrvRQv3dzfdWoprp75hNc3cjtHtSLzG+61OaGaS3RJnV1+88bVVkkRlKWtthlf\n+GspRhKRjH3Y8rKuoXtvHteN8qy7X/vVga9cXisrpcthkVfm/u1pXk00zAu+R/d/utWDq14+5n34\n2/6rav3a78PFRj8JyVqhj6lM/wC8+8f/AB3dXManN82/fjd/CtdBqW+4bM0/Gzc1Yd48Pls/Vm+X\nb/FXsUYy5NDxsVLmiYF9avt+07F21QVXmuNmzb/utW9cWbyR56hVqnHp7rMJvJ8xK9CnKMeU82T5\nhljlWZE3fN9//ZrodI3x7ntn+Rk2srfM1V9N03bGOdu7/wAdrVhs4I5BGiMk0f8ADJ8tEqhrToz+\nI1NLtUinR9+fLf5F/wDsa7bQZnjwibU2/N+7X5VrjdH/AHKxBE3f367TRZE+x7E2/wB1dv3mqo1P\nfOj2fuWOu0W4k+ziF5sOzfxfw11ui6uNyu6Mrqu1/Mfb8v8As1wWk3KOuy28xVVvnb+7W/puqQxs\nU3/eiVmj+9XZGpzmMoyj8R3Wn6kQN8Myh1f/AEfb93/eatXT9am8ve+1vvbmrgrHWd0iXOcFfl3L\n/F/wGtCHxB5K+d8wSR9qKq/M3/Aa6OYw9+J2q69C3zpZttX5Ub+9/vUybV4IYd+//WbtzL/Ctcqu\ntbYf3fmHc+1/mqvcawk3ybJCu/b9/wC9U/DAfunT/wBtusCv0/2d/wDDWbqGuosbO8jEt91tvyst\nYN9q226ldH2xtt8qNX3f8B3VVvtUm2l3TLsnzLu/i/hqJRjI25vslPxRNDdZm85iv3fLb+GuMvJ3\ndXR/uK23/erW1PVHuomQXLFpJfkZvur/ALNZGqQ/aFb5G+V/3sa1x1I8x0UeaOjOa1SG2ml85Pv/\nAMO5vlWqtvbupYOmPLf5d3yturcbTkjdt6Mxb/lm38NQXWnpJcM8iSO38Un8K1nKn7p2RqQ5tTPW\nFJpD5czIn97726mTWVzIHfez+Z/yz/vVZa1eSTZDCqqqNu+fbSLYwzRuXhxufd9/71cNSnI0lUM2\nSN1CwpMuyT5tv/stJbxurI/nL+8ba0cn92tXybaOSHyYfuxbtrN8v3qq3Eltu+0+T86tt+VK5q1P\n3tCoVOXWRbtWdcoltv2tu2t8u6uj01na3TZuAVt27+61YNu7s0jzbWlb5U/hrQ0+aGObzo3bzl+X\n7/y7q+Ox1GXNKTPewtT4ZI7LT2T/AFM03mt8q7v4a0WuvLUI+6H5v9Wvzbv+BVzVnfTeSH/55q25\nd/3m/wBmp/7UdpI+Nqt8rbWr5DEYeUqp9DRrfDzG5cXySsN9zuVot6qybvu1m3mpRrD5iO0KSRbv\nlf5aqSal8zbNuPm2/J8q1Uk1QSM73KKrrF8nlr8u6tKOHUZe8dvtOhPeahD5yc7v3X975t1Zs0zr\nsfo2/wCZW/h/4FS3F4jKkEyMXX5X3fdaqzLBNJscrsZNqqv8NexhcPGPuozqVOWHKJe+c0hf7Tv3\nfL8tVri3DSPD9pUyr/F91d1aEljH/wAvMylG+4yp91aktdPeRc+Tv+f5fk3V9XluH5dTwcdiIx+0\n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\nvn8zZsVQ331rqpxkfP4rFc0C2s/nRsgdgrfw02OQM3kTOqt81Uo5jAm9HXYrVKt09w29H+Zf/Hq6\n4xPm8VWjI0beR1ZXebFaFu6Kqv53y/x/7VY+nnzGdH/v7fv1q2UcMi42ZVf4auPvfEeTKsadnI7f\n3lVtvzLWtp6vcSNvfd/C+5vvLWdpsMfmb4YeG2/NJW1pdn/HNGuF+7toiebKpzGvZWc0kTfOoST+\nFfvV0+l2u2ON/wB5Ky1l6HYv8joinau35v4a6Tw7ZpbrsuYV2xr83z/dqjGUjf0uzRVTemNybkX+\n7WvZWjyLseHLM27dHTNDs5PLjSG227k3L/tV0ljYoy7Id29VbfuSuj4jn9oYk1ik0Lby2Nq/L/da\npnsYWjWHft+Xc6t/C1a0ejzTbYZodu7+L+GoptPdZGd9yfwfK/zbaXL9o6aMvfMWKzmaQXPzOW+X\ndv8Au7aelj/pBmmm2CTbv/vbavrZpC3k23mfvP4ZPvLUV1Y7YV8t8lU+6y1Mox5eY97Cy90z9Qs7\naRlmRGdftG1Gb+H/AGq5vWtPmWRtk38X3lauwuI4f40k2/wMv96uY1SL7Ll9i/MzfKrbvmpxjCXv\nHvYaPwqR57r1i80LzQv5yM3yM3/oNcT4k099zJvY7vl+X71eoeIIdyt8jL8/7pv7tcZrln50bokb\nfL8yNXJWl/MerHC83vHtWnw20Ku8ybx5v3l+8rVLbxPcM6eTH5SuzRMvysrVWguIFZjZupSNvvMv\n3m/+Jqe3vv8ASPJ+zM+1V3V40Y8sD572nKX7G1eNv9JRX+Xcn8VaMLQyKfJf+DaisvzL/wACrPju\nPJbY8n7pn3LGqfd/4FV6Fu1y+EVdyN/tV59eT/lO6lU5pXEuo4VkKPtY+UqusbfN838VRR2rxyK7\nuwZanuJE+0OkiKX2b/lT5ZGpjWyKrnyVf+P5W+Va4qlSUdz0Kceb4RtqsMzTb4ZG3S7fJb/0Kh7X\na4he58pG/wBarN92kjj3fvnTciozOq/LtqaKGCSM74ZHf76/L/s159SpyzPQox9zmMKSzS8mm8l1\n+V9sUjferOuLeSa4NzsyVXbu+X71dFfQzKpuUmhXbKvy7KzJreGNXTyV+aqo83tTo5onNXivDIzu\nq4/gbZ92sjyUuJNjzSbYfufPXVala/u96bvu/MrL/DWDcaanyv5ap8vyf3mr7DLeaMtTGpy/ZKK2\n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\n91Ur6Wn8B4GKrTj8RXW3dbcTO6kr/wCg1T1DYq+c83nBk+6q/NurUkXylTyYdi7W+bf97/erM1KO\nTzGhkddq/fVfvLXVznjS/eTKU0yRqiOjK23bu30xmRZHh85W3Ju3NTm2Qwsm+NV3/Kzfw/7NUJIJ\ntu9Eb7tYVqnLA66VHl91FqzmEkgR3+Vm27Vras1SNv3j7hs+da5+GN1WJH/v1rWsiLMEdGRf7zfN\n8tfO4yoviieph6b/AO3Td09vLVN9xwv/ACz21pwyP5n+uVdv8TN93/drHt5h5KnzlVt38X92rX2j\nY3zzZSTn/a2/7NeBiKnMe1Rp0oxsaDfvo2R3X73+81PmvppJnhRI1T5W/efN8u2srzh9jHkzMj+b\ntVmX+H/drQW8dbcojq7sirukrzub3To9n7pct5NyiH5Xb7q/JVi2uFmkV7l8+ZFsX+8u2qNuqSXH\n3Nu1/l2/K27b96tGG1/ePO9z8nyq7L92n8RxyjOPvGlpsbtbrBvU7fm+arG2aO5EiOy7m+6v8W6q\n9v5MS+T5Ko+5W3M//stWVtX8z9zI29kb5aJSl8jGMPaTlcfFb+Wzw79219u6RtzK1CrBJGs002W+\n98qfK1TKUlVXmTZ8q7lX+Ko2t7xWZ3s1Rvv/ADP96s5QjHYdpcvKQNcwzWr3Lwsqqm75fvVZ+yws\np/cyB9n3f4qdHJMd6OmPlX5VT5mplwlzbyJNs27tv7xX3NWkY88uU5a0fd1MTUJLPS4d6I2WT59y\nbtrVz2oD7ZI3+jNuX+JvustdLr8b3FwbyHa6q+1/nrmtQjhj3Qr8r7PutXp4enzR0ieFiJc0vdMG\nSNGmfy0+79xtlV5rP9800O1/78f8X+9WtdbJMujx/c+ZlWqSq8LP8/zfdx/Etepy/ZPPqSIPLmk+\nSH+/tl8xKm8sTWod4WdN38K09Y3bHljcy/f/ANqrNrF9on8ma8YBf7vzbf8AgNHs/dLoy5oFTyxt\n/fQqd3ysrfLt/wB2q7WKRxtvRn3N/vbq2pFSZg8Kb1Vtu1v4mqvHY/vS8lsqH7zyRvUS9064/EUd\nPs/vIYedvyK38NXYI/KjdJY1wzUW8yfczj/aX/e+7UazPbt5PzP5bbvm/u1hGUo/CdX2UmWW85t0\nyfMi/f2/LVnT7qG3j2I+FX/lnJ/DWbDJNcyM7pl2b5Pn+X/vmq8175LedPNhfu/NXXRqSOSpH+U2\n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\nG3aT52R2/iZ91WbG4ubxU3oqtCnO3+L/AHqY0aeYfk4/jVk3bqs2qouxLby3Zv7v8VaSj9k5o80f\neiXFluYIymzfuRmVm+XbVG6uEudnyMv97/7KrtxJPas1siKdy/8AAf8AdqqzblPz7W+8i/3v9mue\nVOJ3U6k46kdmm6B3dF3btqN/eqK3kht0875R95UVnqeOzdW++q+Z8ybX+7VW4tXaFvO279/+r27d\n1cUjujIja82qZktpB/eX7u3/AGt1Z1zN5zNsmbcz7nXbuq81unk/vofvJ8se/wC9WfcRurb0fau/\nbtq6fu+8jOt7xUk1B1WTyfM/up822rljefbEV9/+rX+5urMurV2kXzo96t/E33VatDSLd7WPyfJb\n5fl3b91d9OUZHl4j3S6slzcXH+kou35WRo/vbq19PsXk8rO0r/dZfm3VX0ux8xvnRiy/Kir/AAtW\n7b2rtdxfeP8A0zVf4v8Aarsp7nl1JGjpOmuqrMjrI392T/2Wu/8AC+gyTQpC8LItx/qtz/d/2mrn\n/C2hwrIp34+TcsjMv3q7nw3pqN5Oy6jl8tNyK33V/wBmu6MfcMpS5Td8N6Gka/cXK/K7L826uisd\nFSOTzrN87n3IzfK3/Af71L4ftk+WZIWXyU27W+827722uv0vT7NcTW0PzKu6L+L/AHq1j/eMJVDH\ns9DeNkm/eMy/f3Nt+WrUfh547dtu75XZvMjeunsdLSZRvh3rJ8u3f81XLXQvs9u+9Pn3/wASfLU+\nzjIXtDgtQ8L7Zg8N43zbnZpG/iZawbjQ3tVXy0/1f3F3bt1el6l4fmkm+eH5W2q9ZWoeH/L/AHz2\n0brH9xlT5ttPllFEfWOb3Ueb3Wg+XC37nfF837uT7y7v7tULjQ4Zt3yZVf4ZE+9/vV6LeaO8kISZ\nFVlRvvJ/3ytZF94deOMTb13qittWplTgP2nvcqPPrrQ/OVXhkZEVf7tVL7RUmj/cvuZfvrurtbrS\n38mS1/eK33vm+6tZFxZ+XDJDZ7mf+8y/w/3q87EUzuoyOUuofJDQ+S26T/Wt/wAtG/3agns3jkUz\nOySRp8n8Lba2ptNRsXj/ACvv2hZPl3VUvkdt0z/Kd+xdr7lrxsRRly+6e3h6nKUP7NhkjZHm3CRP\n4W+VmWkRfsrRW0MbDzPm3ebtWpNQ+ztH8kOxpG3Oq/doS+RpNko/65K391axpYfm3Oz238pdt7N9\n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\nO/i/vf3dtZ95dfaIVhtvn8v5mVlr0InDUo80TOW18tok8n5pP+BLS2qwySb4XVhu2eY3y+XSsqeY\nzo+Fb5f+BVFBM+4QuVVt252at/sHNKny6lqa3gVfJR2O7/x6k+xp5aOk27/Zao4ZJo7jydmdvzKz\nJ8rf7NWLFXZGhk25b7lY1Iy5CqPuysxzWKXEJTydq/eVaoXcP/Lbeu/+8zVqws8MZePlGfb81Ubq\nNFYQfNmvN5pRm7ndy/CZkmn3KIj71/iXa3zMv+1UNxp6bvJ+6rfwtWxb27+YvnJt+b7qru3U8Wby\nO/7lTHH8q/J8u2p+1Y1lH3eYxI9D3KEtvL2bmbbJ/D/u1paboMKyqgfJXa0XyfM1ai2KK290/wBc\nvybl3eXWja2Hl7NkLfwrtrqjzR2PLxEeYraXob2uLqZGdvvLt+Xa1bGj6Sizfvty+Z9/5Pu1Lpun\npuKQwfOu5vmb5dtbGm2aSGLfCzIvy7d6/N/vV6VH3Tx60eXcvaRZWzTJMiRukfy7v4dtdv4ftkWN\nXt/lVvm+X5ttY+m2MMe1Lb54ViX5tm75v7tdh4fsbbzYXg+UMvzf7VenH4DzK0v7x1GhrN5imZGd\nfN+TdXa6LbwxRmFIWV9n+98tc34dVI5IYXm2szfIv3v++v7tdzp9ukE3/HzJumi2+Yq7q15TjlKW\nxcs9Lgjj+zQpG0m1d8n8W2tLb5luk3kqzeVsfcvy/wC9/vUy3tbbcPvff27l+XctXriFI7dnR8hf\nl8ur92RMako6uRz0kE0yO6RYfd8m7+7/ABM1Z91paLJK6QsRvXdt+6tdHLY+cuxEb7m5vmqnNbwL\n++N4ybk3P/wKp+EdOXNPU5TVNMhmf/j2yypt3M/ytWZe6akcOy3dUSRdv3/u/wC9XUSWPnMsPRPm\n+Zv4m/vVi6pDNbnzoX2DY33f4f8AaaspbnXTp+9zHI6lZ/vvn8tmX77bNq/7O2sK+08Nu2IrTN/d\n+XdXW6zsmt08yGNPM3bJNlYOoWm5WSaHZ8v3o5f/AB6uKodtPc5XVLMNl0TL7W+X/arCvLWGORUT\na3l/Nt/2tv8A47XXalb2DRvD58yFU3K0fy/N/drC1iz25d9qSfefdXnVNzvoylE5uaFI5vO+VGb5\ntrS7qVrBHUpv81YUVt38S1eutPS4vI9/Kr9zau2oGi+xvsfzNzfLtX+7/vVivdj7x3RlIns2SMtb\n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\n393zLtqzp9r5yoj8srbn2ptatJbWf59+7ayr5TbPlq3baO903n21h5rTJ+9k37a6nhf5jj+tdYme\ntvcs0qWzrGiy79u/5VWrEem37R8WzNFG/wAjf7O3dW9a6M93a/Y4eNsS7f73+7Wuvhua3t0RIcBl\n+8ybmWulYWO6iZ/Wub4jgLrTZplfYnyx/K8f3GX/AOKrIvtFSa6WdIVDNE37tv4a9Pm8N2zfunSP\n5U+by/vVmXmgpIXZIVUK6/M3y/ereOHN6dblhyyPOW02ZmX7TDGhX5vMX5qik0l7ryZEfD797Kv9\n6uuuvD940bJNBmL5t6x/eaof7F8pQ7wqfk2rG1dEafLLQ1jaUTiNW093Xy9/H3W/vVjXXnWse+GF\nflf96rV2uraLcyXCfaU2/J80kf8ADXO6lb2zSPDMm4bl+8vzM1acvML4b2OcvJYdzzfc2/8ALP72\n2qYW2WZnmm+T+Nlf7vy1q61YJaxl3mUbpVX5fvNWHJcTsxtrNMbvmRtm5dv8VLm5jCpHmNFdjTBE\ndgrLtdo2+Vammme1tWT7Sy/N+63LurJsbqcyL86k7vnX+9VxZHWNn8ltzN97d93/AGawlHuc3uxi\nW5Lzasczool+6/8Atf8AxNX7fWJoWFmlziRf4f73/Aqwn1Ldsd03Lv3Mqp93/ZqzDeQtGzojfK+3\nb/CtedUpx59TSNTrE3ZLzbbh5pvnki+997bR/aM3lnei7/8Anmr/APs1ZjXXlL5cKZiVF+9821aR\nbyeaRnRFdpPvt/DUU4zJlLlNL7a8kozt+XdvZf8A0GtDT5t0K3LzfL/tPWJY3XmIUwqf8D+61aOn\nxJN5X3d+1tq/7VehRX948utLlN21V1kkkvHj2fLs2/7tXdLjfzmd4chfk+b7sf8AtVjW83lxhPPz\nu+/H/Fu/vVs2u+ZDM8zP86r8qbd1eth4nj4iUZbnUabsZkj3/M3ypu+Wur0e4S1kRIZv9Yn3m+Wu\nO0ny5LtIZH+dfli3fxVp6ffIMJOke3ft+b5q9OMfcPFrSlGVz0XR791txNG+3b8u5v4q7LQb+aNX\nud+Ek2/w7v8AgNeX6HqyfZd8nlqI3VX/AL3/AHzXVaLrkELOm+QKyfPItEo+7YzteVz0GHWnjuok\n+Xav31/9mrSXWoVUbHjmb73l7vvVwNj4gs7phZ3LyMyxM0TKny/8Cq3a6kjRpvfYy/JLtrlqS+yd\n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\nwnDUqcpd0nQflZ4dqCT5t2xa6XS/D/2WRT5KylovlXf92m+G7Hy42R4Y/lX5Y2+81dRpemz3DedH\nCqKq7WWuiMYxOTnItJ0mGHGyFX3fc2vu+b+Kt6Hw+nmJ5NsrPs3RM/y7avaXDDEqOkO6Rf7q/M39\n6tSNWUeT5Mgfyv8AVslVyoPacpzt5oqfaH3x7P73yVz+vaf5N4IZvl875tv96u8uNnlq8yM77G3/\nAN2uY1y1toZQmxim3dub7tR9s05uY5HVLNId3nXO1PK3/wC1/u1y2rxwzXDXnlfIqfupG+9/wKuy\n1OzdZEROYZH+eRVrl/EEbrOdm7dJ8rM33flpcstzrpz5ZnC69Gk0PyQ7VZP4vl3V5n42jtrWN5rW\nFSvm/Ntr1HXGtrje947YjZvm+7XlHjBf9KdXdW3fw/dWplycp0U6kzzTxhHN9n/dzRj593y/e21w\n2vSbt0Pn7UVN3+9XZ+KrhLjzNj/OqNu2/NXmPii6fzCgfmuTlnUNpYiKj7xkapq339n3l+X5aybj\nVo5o3uTNsbft3bqra1evv3pt/wB5aw7jUn3bHf7v96q5f5ThrYj2kTrbbXAu0Qvtdfm3fw1M2tbm\n/dvt/wDZq4qDVnXcm/5W/iar1vqHmN8s2zb83zVPs4GPtpHVtrGzDo+4slH2xOHTr/HtauZXUjEr\nfx7akW+SSX5Hb+9RGPLIylUlL3Tp7e82yNNC/wC8X5W3fw1o2+pbmS6d13L/AMCrkbPVIWj3b/8A\ngX+1V2z1KaR12Ps/2W+XdW0Y++Zne6frUisk33l/u7a1G1rzo94uWZfu/d27WribHUHCqkz/ADt8\n1aNvq02GTdtT+9XVE5PiOzt/ELzY2eWxVfmZvurUq+IkDNs++v31/u/7VcnDqE0e2GP/AIDIv3at\nRsny/ZptjfxL/eWtfQw9mdtpesTSRLDNPuRl27V+Vv8Aeras9afckO+R/wCL+8v+zXDWM3mKrveN\nv2bXZvurW3Yx3iQo9tN5u51ZmZf4a46lTlOqjTj0O5s9Whjt/tKcv/Eq/Ntq0uuTSQib5n+fb/vb\nq5axurmH/j2T7ybmZfvf981oWupQxwh0fbD/ABs396vKxFTljc9jC0eaVuU2LzxAkbeTDu2x8O38\nVU7jWHtY97zYWR/ut/erKa886b7Sjrs3Mu3+9ULMklm9tN8gjb5Nv96vHrYjmie9h8L7xp/2k95n\n7THt8v5YlX7rf71QNqk0m3ztvy/3v+Wf/wAVVNbp2iDoi7Ff96v+zTJrvzGWGH5l2fI2yuKnUO6N\nGP2R8l09xDLM7t8ybflrCvG8xvJ+aLd/e+b5q0Zri5EbW29QjfcZv4qyLxv3Ozeys3y7v9mt6dT2\nmiMKlGMdzO1LfD+57b2+Vn+6tZF1Hc3HyJCzIv8AD/E1aF1cQtCm7978+35qq3F8scnkww+Udu1t\n396uzmlGN0cnL7xm/YdzMiJhtu35kq3Z8Q/+O/LTFm3TFPll3L91W+ZalhZ7e4X59u37lRKfLoOn\nTL1qsO9eVX/erQ0/93Ku/wC6tZO55JGSZPu/+O1saDeJ5fkv50oj3b2kT71EIyj7xrKPtNDqNBuE\n8tUdGZlbduX7tdZoN5IJmkT5nb7i7flrh9NuEjZEd8Kvzf7VdLY6k+5U3yCX5djRsv3a9bD1PePK\nrU/d5TvtHktvs7Ojs+59qQ+btWP/AGq3dN1KaNlufO3sqfdb+KuG0rUvMjMzuyuu392ybv8AgNbO\nn3XlqUSZdvzf7NejTqHmVKPKdha6p5ln/rmj2vtdZF/i/wBmte11S8gjF5ZzM7r8sqtFtVa4qHU9\nsIn+Vmj+VlZ923/ep1nrUzTGQXPPyqzNXo05dzzq1PmPQofEsMDRJC7AsrN8qfepsfif7R+5R1/e\nP/D/ABLXDN4ke1d4LZ/l/jZv/QVqOTxZCpVPOZEX7m2u2PJLY8+UYRmdvNrkLW/2mF2A+YeT/tVg\n6xrhWFd/BZv9Yr/NXNzeKdu57P5fn2u0kvyrWZJ4phaGVLmZfOVtrL/C1RUjy6E+/L3jZu9YSQvs\n3OF27v7zf7VY2s6w9vs3uvmf8tdr/LtrBuvFUFu72yXMau38P8VYN94kmuI2beqrGvzturjqR5pa\nHTTl7ps614ghs45pnmUmN/4W+9XD+IdcmkmkTf8ALv3JI3zbt1V9a8VJIHebbvb5mZa5PWPERaby\nUC7PvJ83zLXBU/lOyPLI3bjWrazh3/ad7N/yzX/2Wsq81bzGBTb8z1iTalukR/Oyv91qrTXDvIzw\nvH+8b726uCpH2nxHVGR1Fvd4VZt6lm/u/LVu11KSP59+w/e3f3lrk7fUJliVPJ3fP8nzVPJqk1tl\nHm27V3fN97dXFKnyw909CnUj7tzdk1VJo3+8zM+1t3y/LUlvqaMvnJbR/N/Cv/s1c+2sTNt2TKnm\nfMm6nw6w7SRuibXX7259qtXPKpLl+E7qcuWWp19rqE0i/PCqbn+Zl+9WlBeW0ciuibtv/Aq5Wx1y\nHzFeS5XYz/6vZ81XV1jEbybFVV+6396ojzSOo6GORPMiREY/L91v7tX9ri6TZ9zZ93f8yt/erDs9\nS8zbvdcKnzs1X7HVIbi4+zFGRmX5G2/d+WkOPvbmpD9m8tvMeMbkXYsnzVahg8lRCjq+1GV12fd/\n3ayLdvL2Q/KV+VvmXdWozJBHsdG2r8zfP8v+zTqe78JMafN8Q2TTYV2XPzD5921nr9CP+CTwkH7O\n2tLI4bHja5wyjGR9ktK/PmaZLpikO5EVP3vz/dr9Bv8Agk9A0H7Ousqz5z40uTj+7/olnxX4545z\nb4Bmn/z8p/mz4zj6lKHD0mtuaJ+eZjhhtXk8mZWb+GobqPzo9ju3y/LuX5lZquyXE15bxIm5gq7f\nMb5dv+1VC6Z/L8iHcqL8yMr/APfVfplStKofptHDwpmJfW7yN++mYJH8u1fmrKu43juH43eX/qtv\n/s1dDNGkMj3f3127fl/irB1S2maHe4UFmXcv+1/DUxqR5uVs9Knh+aPwnPahcStI3yLEFdlZv9ms\nS8m8lwruuW/i/hroNRt32yIU+fdj5v4a53VI0bh9qbfl3f3q76MohUwkdzE1i4eRTbw7UVn+dmf7\n1Ymob2U73XK/Lu/hrW1SP5FKTcK21G/u1i3zRbRv+Z/uu38NepR948nFYOXN7pj3rbVbybb5F+V2\njrNvFQp/tfw1qzM679m3Yy/drLmRPM3v/C33a9SnE8arg+WQmmw7WbydrfP92uo0G3dso7yNtT5P\nk+6tY2nwvE4d0X7nzba6nw/b7o2d5mI2f3K6oy94mOF983dGt/JVEf5y33Pnrt9Dt0mhZ9m3b99V\nrm/D9vMFR02jb/Fsrt9DtXbZwu7/AGv/AEKorS93mPWwtGMjV0uwtvLjTtJFu2snzLXT6Tpc0LNv\nRVEyf6z/ANlrK0VUa4SG2f52Xa7fe+Wup0OyuY2dJnZyrrsZf7tcMuaR6WHw8blu1s/Lk+zb127t\nvlq/y7v96voH9kHxFJ4J8YWF/DD9qm+0bYo/urH/ALVeJWVrZ3BSa2hyW/vf+hV6n+z7HqS+LrZ7\nDa6+aq7mibarblrKp7pGaYfmwckfqh8LfD/hXwH4J1fx/pVzu1TVnkuLq4aLaqq38K/3mrtPC3jL\n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\nVpW+oJcPBMiSIn8aq/3q7qcuY5pUY/EdtpervpMqJMissjsvzfw1srre5VZLlcyf7P8ADXnMPiJG\nYJOjMVf91tX7taUPjCZv9DmmUqv3W2fNur0aMjzsRTjKJ3y69bLPstppCZP9n71RtrDxxu8w+RZd\nu1f7tcdb+JEmkTZNhl3bm2/KtMm8TIq/vpvl3N8u77zV6NOR5NSmdtqGsPNHss79dn3tq1mzeIP9\nIZ3T5I9u+uWXxDprTKj7lRvvSbv/AGWoJPETxNtQrK025vl/u/w7q6I1OXaRzSw/Mb154kh8yb99\nu3P/AHvurWbf+JrmZSjzbP4om2f+hVz154i+ZkeOMyx/3X+9WFqHiRF/c75DF/dWlUrR6GX1flN7\nUvFT7N6OoZfmddnzVkap4ij8lraGZWbf86x/w1zGoeJNsex3UqrbXZqyrrWPLVoUfb/uvXNKpLmN\nY4fl2NbVvEEsa+S87bv7yp/47WHcahuZkSZVXf8AIu/dVSbUnkwm/wCZf4WqpNM8fz4Xaz1y1pSk\na+y5S4t9c+WWSRWLfN/vVJHM/mb/ADo/l+ZN33ayFvHSNpvO+X/ZqKbVHZhsfluG21zfF7pfwnQX\nGpTMqzfL/d+/R/aU20fOqNJ/C1YMl8Zl+f5dv3WqSO4m8xf9W3+033mrmlL7J0xlym3HqTySK8if\nIq/PUzXXmsdkONq/xNu3VjR3iSKIXh5/3ttTW918qJ97++2+sZR5T0KdSMjbh1C5Rk+VWRfm8z/2\nWtfT9Ufbs2Y/uSVzEa/NvTcR95fmq3YX21m3zN833Y1/hrmlGSOyMjs7HUH3b0m+VV+ZVaug0ed1\nhF07/ei27m/iritH1Pcyo74ZW+T5N1dBpupeduh+zKdr73/hrGUpm1OnzHRWt35cfyO2I2+Td8zV\nox3j+YvyfIz7fm/9CrHs7hL5ofnjikk+Vl/2v96r8MnmMkLorfP83+9WPNym0Izl8Rf8ybcm/a/l\n/eb+LdX6Gf8ABJos37OetSsm3f41uG2+n+h2dfnY+JGiR/lf/c+Wv0T/AOCTSIn7OesmM5U+NLgr\n/wCAdnX4544Sb4Gnf/n5D82fJeIkf+MZk/70fzPz+vI/3MVs/wByRF3f3az5IZlmlTyVCRttX+7t\nrUks3uFO9OFfcm3/ANBqFtnnQ74flV9su56/TJVOb7R+tUcL/dMe8t3LG2hfYzJ5vy/dZaxdQkRY\n3dNo+6zrG/3mror63dmfYm5Fba3+0tZWsKkO2D7My7UZU8v73+7Tp+6erTp/3TkNciuZm+/Iqxt8\nzfd+b/2aud1Y+W32aZGTb/FXV6pZ7pPtLvnauxFZNytXM6l50bF5tpT+7XfR5fiNfqvuHMXuyRmR\nArLu2/LWTdR8l/uba3tWhSNsfwt8vlrWVPZuGk/csAq/LXs4eXLG5wVsHyxOdvLNLhn2Tbm3bl/3\naqx2H+lPI/8AwCteaz3M37n+H7tO+z+XBvk2/wCw2yu+NSUY8p49TBx5uaRFp9mkzfImFX7+7+Ku\nl0dZmjG9FQt8rMtY1jC6Kvztu3/3PlrotJj8tdiJu3f7f8NbRqchhLC8p0Xh2NBstn3Ff49v8Vdz\notv9o8t0RmeNFXay/d/3a43Q5HVkZIVQ13PhlnkkTu7f3vlWqlLmibUaMYy93qdPoNnGql4YZJXj\ni3Kse1a63So5vKt5kTb/ABOrfw1g6CqSRpDD5bKu7dJu/irrdDs3mt0fyV3L8z7X3bqya+0z0qdO\nJf0m3ma1+e23o3zfL/D/ALteq/s/s9n4usk8jzS0sfleYn3v3n3a4KzsYVs/O2b3V/3Hz7VVq7n4\nU280PiyGawtpkuJNqptf7zf3q8/F1OTC1JnVTwv1ycaEvtH6XfE3w3DafDKX4meDPFNhea1oFrC0\nmnSN5ka7f9n+L/dr5g+C/wATdb+LnjLVbO2eSTVLieS6uI7eLbuZm+6q18f+Gf2kvjl4J+K3iqOz\n1u4k0i31SRr+Gbcyx/Nt219n/sh/FzwDJqFh8QtBhh/tpb2OVY2g2rI1fD5Rm85KTq7Hi8UcIUMu\nUvYy5pLUyf2tvhD8S/Ct5pdlrfh68cXHzNIyfu42ZfutXzhceFbz+3podShWOKz+SL/e/u1+1nxX\nj0bxd4G/4TPx5pFjLA2nYgVl+XzmX+H+81fnB+0d8LfDeh2Cf2b5k00l1JPKqxfd/wCBV25/iqEa\nUVDeR85wpha9bFPT4TwnTVtrZUjSHypZJdu3b92vQPCvinwloMMcclzGJ5H/ANFVk+9Gv+skb/ZW\nvIPFWqX1rMlnbQt56/ckbd8q/wB6vNfit8aNS0PTdT0XQblmuL6D7FLdK3zRw/xbf96vlKcZVJcq\n3P0bEShh4cqPTfj5+1h4Y+J3iS51vXkkTwV4Pi8jS9NV9japdbv9cy/3dy18PfH79qzx58WvE009\nzf3FtYWe5NOtY5fljX+H5an+JHi6HUNHTw3YQ+TBv+f59zM395q8Z1LUHuJp4LZN7x/xf3q+hy3L\n4xk1I+TzbGSnC0ZEGvfGTxV5zQzO2z/e3f8AAqi8O/G69s7rfNctlvldd1ZGoabcxr517bY8z5tr\nNWReaTDKv2lNqt/s19HTwuGdLklGx8nKtioyvzHu3gz4vTahMLk3+9l+8qt/7NXpXhX4kT39w0yX\nkm3cv7vdXyDps9/prq1tcSJ/utXo/gH4lXliE3zN/t7v4q8rFZc43cD3MtzecfdqH1PZ/tOa38N9\nStZkubwWsO53hV93zNXrvxW/avTVNP8AB72yLHHNerLLJ5rbdzL93b/er4tm8UR+JNQi0+Obj721\nXrZ+I3jZ9P0vQNK+03BaxuGn2+b/ABbf4lryHhI6WPo4ZtKVN85+uX7K/wAZdH1rT1/t6bbFH8z/\nAL35l+X+Gvefhf8AEPwZpLf8JVqtnDJZruVZGn2orV+H3hv9tjxP4D0d7bR9SZZJPvs3zbv71RWv\n/BQ745LZ3+iaV4tuBDdJuijW33baxjhMXtBBic2w0Ufvp4e/bD/Zqt/Ej+G7zULeG5kn/wBGaQLt\njX/akr0rSPiJ4H8RQSXfg3xFZyovzPtut61/M94Z+LXx78Za00z+IdSu5bqX/Vwp/wB9LX31+xr+\n094w+HcNp4S8Y2F9DE3lq32q3ZWb/gVY1sNjsPDnqWZhl2OwmJq2l7p+qs2tf2lai5/1bs3zLt/i\nrtPgb4ilh8ReTchVKt8irXhfgP4jW3jDQYtVt5ldZl3LJHXofwp1a6h8SwvC7B1bc7L81eCsRONS\nLl/Me9mmHhUy6a/un0B8cPEzeGPB0uuXFytvam2ZbiZj8q/3a/mg/bq+LF58Zv2lPFvjFPElxeQt\nqTWtrG0vyRrG21vLWv2+/wCCvP7Ssfwk/ZKuN2pCK71aX7HYbPvs235mVf8AZr+fy6WHUtQS5v7n\nfN5rM0y/L5m5vm/4FX61hJRrUYzZ+PYLDfv5TMeHTYZG/wCWjM3zf8CqW40u58nZNDuX7rNH92te\n10dPMlTyf3bPuRpK0rXS4I/3L2zNuTd52ynUqezkfQ06PtDj202ZbX/RrZZE/g/2aoXGmv5fnbPn\n3/6v/ar0FrFI2b9yuz+Bf7tZOpadDbt5juqt95/92slX5o6j+qxjI4zUNKmaPfMjF1/iX+Ksu602\naNmRyyv/AHlauyuFRZWT7Mzhn2/3f+BVga3a7fN3fIy/dbZurqp1JHHUpw/mOC1LSQrSvMm5vm2N\n/FXL6ppKbQ78N/DXoup6fBJC+zaW/jauV1yz2iQfw/3a9GjznlYiPLK5wGpWc0Uhfr8/3lr7o/4N\n0oFh/bd8UkMST8K77r/2EtMr4s1i32/O8ON3yrX2z/wbuxeX+3D4o5z/AMWqvv8A05aZXxXip/yb\nnMv+vb/NHznEStklf/CeQf8ABa9jH/wU8+JTrKq/8gbhu/8AxJbGvlvait8icN/t19S/8FrpEH/B\nTv4lKzFctooyen/IFsK+WlZN293XG7bXr8B+7wLlf/YNQ/8ATUTsyZReT4d/3If+kouQzkfIh37f\n4q1bW+dfkRFZv7zVg2s0nKI6sP8AZarsN0I8fw7q+tPRlGETpbO8favyKxb/AMdrU0+4kjkLzHd/\nCnz1zVvebUXyX/g3fM9aen3Tr87zfL951agzqU7nWWd4fvyBfmXb5bf+hVdhuPMh3o8nzff+f/0G\nuat76NXWbzt/8NXbe+TcET5f97+Gr5v5TiqROijuoVUOYWQ7NqfNSSXztHwjKWT/AFbVkLqG7/XS\nL+7/ALtJFqkOU8l/uptl+fdurT4jD2ZpSSR52eZt2pt3b/lqCS9dWR/4aptqjyMUQxqP+ee2q8mq\nI6s6bW/h276nm/lNKcS1eXUMi7/m+5tT+Gsia6yy70+b/a/iptzeJ/G33mrPlvvMmd2fPyfNR7/x\nGsfeItWuodrb5t0n3v8AgVYF9I8kjO4Z933Kv31w8y7y6/L/AAt/FWXJLuY/Mw/9lrKUjWPIfRkc\ncilUmGd392nR2/2yb5IViCozN5n3map/L8t/Jf76y7t2/wC8v8NWfs6Rxpv6bm+WviKkZdT9fwuM\nlH3TNjhfb87/ADq23av8X+7UOoWqSRsd+5mfazSferZmsXjkiheFVWNtyKtVZtPSSQokfzfwLXPE\n7/bcu0jnb63mmuJR91VT/vqqN1azeYqOmNy7vlet66s5pHbZbfe/iX+7WLeRxtJ5235V+VK7IxOL\nEVpbmPeWrxrLs2/Mm19y1nyRusjQzKu2tq6jEaNvh4/utVKe3dZN/kqr7Pvf3Vr1aPNyHyWYVPaS\nI9Nk2svzttb/AGK2NOWaYpH93+82yqdnbou135C7W+b+Gtazj2r99st/FW0pezPMj70hI4XmZfs0\nzb1fburSj3wne8EiH+NZP/ZaZHb+T9xI8K+3/aZq0tPsYY1Z9+7d8zszfNXPKoXGMSt5PmMJPJYt\n837vZtqZbO5VdkCNEn3vlq7a2rrGyxvIpX51XZu+apLWGH7Qzz+YDI6qq/7VLm7F8vMZ15FC0yO8\ne5t+3b/FuqG7h8lfnhZtv8Wz5mrWmtZvmfv5v3v4qguo3khC3U3zs/zSb/u1H2yoxkZxt4I1WZ/l\n+Xd/tf7rU6NUklV0ePevyuqrVm6j8xVDzfLv27lWqsytZr9zhv4qcY83vFQJ1mdW/c7cbvn/AL1a\nlq0zSfI//bNvlrIhjRvL/d/N/A33WrY0248uEuj7m/6aPu21rGP8ocvNubmmrujCQ7g+/wCddn8N\nftN/wRd+Dmn/ABm/ZW8N6PquqXFnDZ6fqUwktoVyXOpXKqDnoMnJGOQCMjrX4n6PMk0nnb2IX+Fv\n4a/d3/g33Bk/Zz0OeIM0Y0XURvPPXV5sZP4H8q/PfEvK8LmuHyvC42HPTni4px1V/wBzXfTXdHx3\nFNCjiqWGo1VeLqq6/wC3Jn0F/wAKC/ZjGo/8IEfi3cf2/wD6nf8AaI/L8/ptxs25zxs37s/LnNeU\n/FL4R+J/hX4w/wCEU1SP7R55zp1zEvF0hOAQuSVOeCp5B9QQTi6jp2qv4pn0mOzmN6dQaJYAh8zz\nd5G3HXdnjHrX0b8drvRtN8afDC38ZRLNfQXUZ1B2QsCuYgScNyPMBPfoevIP8vrB5Jxbk2LqwwcM\nHPDVKUYyg5crjUnyOM+Zu8or3uZWbtrZb/lyo4LNcJVmqSpOnKKTV7NSla0r3u1vc5XSf2a/hl4C\n8OW2sftAePH068vlzFptrKoaI9wSA5kIGMlQFUnGTwaw/jP+zzo3hHwlF8T/AIbeKf7W8PzuobeQ\nzwhjtDb1wGG7KnhSpIGDzj1n4/8Axi8MfDnxVb6f4t+DVtrKzWga01K58ohgCdyDdG2NpPIz/ED3\nrjvHvxg8Q+MPgTf/APCGfA86ToFzKIrjUIZ08tBuBYrGiqfvAAv90Hg8nFfWcQZH4f4PD43KqUY+\n1oU5OPLTruupxSfNUnb2bhJvXRQSaaaVrepjsFkVGnWwsUuaEXa0Zud0t5O3K0+uySZR+G37KnhL\nxl8M9L+Imt+PJ9Pjm82fUt8UYjSBWK4DMfkI2kl2yMH7oxzm6/8AB/4K+LfEej+EPgj43v73UL27\nZb3z4TJFBAoy0pbamCADgDO7pleCd7xjql1Z/sR6DDaERrd3aQThSfmUTTN692QE9q8j+FL+N4fi\nBpl18OrB7nV4bgPawquQ/wDeD8gBCuQxJAAJ5HWvmc5fDOVzy7LKeWxn7elh51ZrnlVbnytqkubS\nTSfR3crWR52LeW4Z4fDRw6fPGm5NXcne1+XXRv8AG565qHwP/Za8H3p8KeMvivejVo8LcFZFRUYj\njIEbBPXBbjvXB/HH4E3Xwn1jT00fVW1XTtXQnT7lYgGLZH7s4JDHDKQRjOenFega38evhNr2rS6R\n8dPgf5GrQN5N/PBGjuHUYPOVcD0+ZuMYJqH4mfDXQvh98U/A3iSDV7288NXd7CltbX9w032MCRWW\nNAxBEeGBAOcYbOc4r1c9ybhvNcrryyyjQ5Kc6cVOm6tOrRUpqP7+FS/MraNrVS12udONwmX4nDTe\nGhC0ZRV480ZQTdvfjLftfoyvpP7NXwy8B+HLbWP2gPHj6beXy5i021lUGI9wSA5kIGMlQFUnGTkG\nsX4ufs56b4f8Kr8TfhT4k/tvw+3zTHejPbrwN24Y3jdkEbQy9weSJ/21bDXIPixFqGoJIbOfTYxp\n7kHbhc71B6ZDEk/7w+tdB+z5BPpn7NvjPUvFMLnSLiKb7IkiEh2ERVmUZGQW2DjHKnnjjOrlXDmM\nz7GcMRy9Uo0IVHGteXtVKnHm9pUbfK4T7cqSUla2llLDZfVxtXLVQUVBStO75rxV+aT2afa3VW6G\nB8EP2ZNH+Lnw9m8WXfi240+4TUTCoFsrxrGigsTkgkncMHIAwcg546Gy/Z3/AGc/HE9x4T+HfxSu\npdagiLB2kWaM7SAxwEUOOf4W9+RVb4fXl1B+xX4neG5dSL+SMFWPCM0AZfoQzZHufWuS/ZEd0+Ou\nmKrkBre5DAHqPJc4P4gflSwVHhfB1cly2eXU6ksZTpurUk583vzlD3LSSjJO7ut1ZWVkKjHLaMsH\nh3h4ydaMeaTbvq2tNdH5nner6XeaHqtzouoJtntLh4ZlHZ1Yqf1FV66r45Mz/GLxMXYk/wBtXAyT\n2DkCuVr8bzPDQwWZVsPB3UJyivRNr9D5HE01RxE6a2Ta+5nrv7FuhLqnxdbVHRCNO0yWVd2CQzFY\nwRnnox5H9a4L4p+KL7xl8RNY8Q39w0jTX8giJbO2NWKoo9goA/Cu9/Yt10aZ8XX0t2QDUdMliG7A\nJZSsgAzz0U8D+lcD8U/DF94O+ImseHr+2MTQX8hjBXAaNmLIw9ipB/Gvtcw5/wDiGWB9jfk+sVfa\ndufljyX/AO3L2+Z7Ne/+rlHk29pLm/xWVvwPXb66vfiF+xWt3qEwmuNBvVVZZWBbbHIFUZPQiOQD\n1IHvz4HXvl9aXnw+/YrWz1CFYbjXr1XEUqqGKySBlOD1JjjB9QD7V4fD4d8QXOjy+IbfQryTT4HC\nT3yWrmGNjjCs4G0HkcE9xWnH9KvVq5apxbrLB0nPRt6c1m+t1G17/MeexnKWHum5+yjzfjv8tz3j\n9nb7X/wzb4u/4Qcz/wBu+ZNv8v7/APql2+Xjvt3Y77unavIPg+fEX/C0tC/4RgzC+/tOLaYgSdu4\nb8/7O3duzxjOa2vgRrPxi8LX+oeK/hho019a2NsX1e3cEwOgBxuG4bnHJUL83XAxmvUPAn7Ud543\n8YWGgeDvhLY2urarcomoX4kDfuwcu52orHChjy3GO9e9l0sm4gwWTxxeIqYWpQ9yEVSnJVv3l1Kl\nKOim5WjJvrr017sO8Jj6OEVWpKnKGiXK2pe9vFrS99H5+hzX7amh2cXxZ066hudsuoabH54kwETE\njIG3E+g56YxnPPHpHxu8OfAXXItEHxO+IDWaWlht0+CxuVJkRgv7zCo5KkKMHgfWvNf2tpL7xt8d\nrLwZpAheeK0gtIVaVFzLIxYBmJGPvrwT/OvNviR8NvE/ws8Sv4X8Uwx+cI1kimgYtFMh/iQkAkZy\nOQDkGuzPs/eSZ3nk6eAjiKFWtCMpT5vZxnC7s0t25XfxLVJ9UjbG454PGY2UaCnCU0m3flTV3Z23\nu7vdHo/jj9mbwzf+ELj4gfA7xn/blnbAtcWLsjSIoGWIYbfmAwdhUMR0ycA/jZ/wcPDNx8Hfp4h/\n9xlftR+xJa6jb/8ACTa1fxuNFFkqXBdTseQZYgdiQhbP+8PXn8Xf+DixrSXU/hH9k/dwPL4iMSkY\nwudNwOp7e5r6Xw8wWWPjrh/OcJQWHeJWJ5qabcb06VRc8FK7UZX2vZW07vpyvDYaeZ4LFUocjqe0\nvFXt7sXqr62Z+b1j50hTz3VHX7tbdg0Mv3+Ds+RlWsW1h8wr95fn3K33vlrY0+0/dq8e5VX/AFu5\nK/sKpWP0eNHlka9ir/fCL/wKt3TVuZI96bVDJuf/AGaztKR9qfPsRm+T5fvVpWsLyKYU3HzP4q5a\nmKj8LO2jhZFuOzSNVnE2Iv8A0Jq0bNfsu5JoVdGXc/8Aep1jY+YscbhWX+H5qssiQzYhRZdr/wBy\nvNxGKjGNj2KOB5bMZbR/ZWTyU2ln2r5fzVZjmfy97vHtV9ySK9Dxu2Pkbf8Aw7v4v92pY7ORf3Lo\n2z+JfvV5dStKpGMT16NHl+EFZ4bf77Pubcjbf4f/AImoobqST5PJXZ/G0f3anuoHkjKQ7V+bbtVP\nmWnLYpDCyW0y75Pu/J96udx1O6NPlMiSZJJfs01tsVtyxbf71VWvHaRD0T5lZtlXZNPeFS73M3/X\nNv4agms7zb9mL/e+7Jv27q7VyHPKnyy93cpqrrKux8/Jt+X/ANCqWSNNQYo6MH3/AMP/AI9VldP3\nSNlFdtv73bUlnYvJGqWyMu3bu2/MzVvGnzGcozp7mbJYw7niMLI2xVRlXa3/AAFqnh0145G3orfL\nu3N97/drSax/04i5hYPs/ex/3f7u2pl01JJN+9l3fdbdXR7E5XGPvSOdvLXbbuJNysybvl/hWo10\ntLhoX/d72/4DW1NZpcXCps27X27l/wDZqS6s90iOj7ArfMy/dato0+WPunPU5pSM2PT3ikSGZ2yP\nmaSNNyr/ALNF1pu1t8srF1+VF/hathYdzfuZtw/gkWmappbrJ9sfb80XyNv/ANX/AMBrCUbcrNac\nehj+TCArzP8APs3Jtqy149oqTO/3dqttT/0Gob4ujLCm3Crtdm/u/wCzWfdXDzKkyIyxKu3atbRl\n9kKtOO8TVk1BGV40mZCrbvmqJdchbdMn35H/AIvvfLWTeXUMy/6M7MY0+eq9xfPDH8iMqN/FXoUJ\ne57x5Naj9o35Nak/13nfPt+aNVqu2vYXY9zJ/u765yXUHVh5L/Mz/wAVQ/2hIrM7vwvzP8td9OfN\nucksL7TU6qPWD5jP83y7d6s3y0681rbb9W+Zvuxtt+b/AOJrmo765Rd6TKN1Lc6lP5Ox3+b+Blq/\naRidNHL5ygXdQ1DzE2Juw38S/wB6sfUdSmhjGz7zPtdt+2o7jUHkVPnway7hnk3Gbcf97/0Ksvbc\nw/7NdP3uUZeahMrLh8Mz/N8lUJr55mV0RmT7qNVxo/tEmx3Xdsqs1iVhX73y7qwqVjR5bL4uUp/a\nJod/7z5m+5uT7tDXCM2//Z/5ZvU62e3e7opLf3mqOSweOHeif7Py/d/4FXLKt/Mc9TBTK6yfL8ob\na38K/wDs1NVUaT+78u3/AHqljt3jkR3+VWTa8lOb5V+RPm/3KXtOb4Thlh+WWpDGrxyN911Z/u0e\nY/mNv5p7Q+YV/u7flZajf5lSN7bYzfxUvi5jHl5pEi3zxvs28t/FVuC+hjQQh9v/ALNWdte1k85J\nmbdT4JrZpkdwvy/Ku7+Gsqkfc1NqcuWZsWt0jNsRGq9pbxRzM6PtRvm+VKyLe48uRXd9zf8AoVXL\neZ23b9u1f7tcnvyjqelRqcp0+mzus2+OZVWRvnWuhs7h1X7Sm1V+7t3ba4yzk8uFZkm+Vvv7q3rO\n6dsQ/KyRpu+b5t1RL4bndTkdlpd4/no7/Kv3tsdbVn5KzBE6fe+ZPu1yvhu/H8aM5+78q10+nxu0\nbpdeZvZl2fL95a87ESlzHoYWMZRL/wBhmhYb02Cb54tr/er9Ff8AglHsP7O+sPGGCt4zuCA3/XnZ\n1+ednBtuFmmfJVdu1vurX6Hf8EpnVv2d9YRFICeM7hRk5zi0tOa/HPGuTlwTO/8APD8z5PxKgocJ\nTS/nh+Z8DrHDHIyI8m1tqurfxfLRJawjLw7W+78v+1VmO3hkVPtLsiq3ybfm+al+y/aI9kyMw+b5\nlRv4a/Tox9/3T9pwdEwr7S3ib50kAbd8sbbV3Vk61HtjLzbn2/Nt+6zV1l3DumdELC2X5UZl+81c\n7qEKSRum9i0n95664noU8PDmOJ1ZR87/ADLCqbn2ru2/7Nc7qVrti3vtZ9u3av3dtdl4h0e5WPZ5\nasrfNtVvmrn9S0vdH5yIyFk37f7tdVOXuxPQhh48kjjrqNI8w71kdfmb/ZrOmtYfLXY7Z37nXdur\npNSt4Wjf54wZF3fd+ZqzVt0WPf8Ac2pt+5XpUebTsctbDwkYE9nuuN5THnP/AA1DJauZNibsN/Cy\n/LWvJbpG48nn+L/aqOb51XZEzn7u3+7XqUZRX2T5/FUYRKVvDPGvy7drfwtWtY/vG2PCq7f4l+7V\nOSNI5TIk24/dX+9UliNszOn3v7y/erf7B41SUU9Tq/D+wbUjfd/tNXb6DeSSMkNzMsUX3VZYq4HR\nbuPzjDsZHb5dy/eWut0O+dWZJpmfb8u3d96r5eaPvER7RPRNBvLOOd7OB1fzG27tnzV1nh++ZrX7\nNvXeqfJCzbd3+1XnOj6o8OxI0+dfmbav/jtdXod07H7S8+dz7vL3bd1c3tOU7KNTljynpOk3rxyJ\nNMkaGOLbt+9ur1L4L6pb2PiBdSufnW3tZHTan+z8u3/arxPRdU3NHczTKn8LrXo/w1mubrULiwtk\nWVpImaJo/wDdrxs6lKWXTUex6+VS5sxgz0r4S/Dv4b6t8CLzVfHMy2Nz428UMr6hqFwqyeXG33l/\nu1L8A9J+G/gn9rC3+Hvw68cw69pEbRtut23Rxybvu183ft5fEB/Dfgnwd4A0PWPKkh0triVYdy+X\n5jfN8396vbv+CCX7MN38SvjNefEXWZ5JdN0q2W4vGkf7u35l/wC+mr80y6nifY66HpcVyoT5qjP1\nw/avlis/g7Y6jJDJDBDZxokcf/LNttfn38T/ABY/iy+udSv3+SP5YpGbarNt/i/2a+4f2v8A4y2U\n3hmHwrDZx/ZIEOVkX7zbflr8wPix4wvbrxdc/vtkPmsrRqm1Vrrx+IjXlGMJHzvC2BnhcNKpVjy8\nx0V/oug6xa77+G3eOOL55I/kkZv97+Kvlj9o74f6ba2Vyng+5WS8mumWX7RZbfl/2Wr6J+HviTRt\nauI7DVUkitbdmW48l/mk/wC+q6rxV8AdN+I2kteaBpUdpbwozLNM27zK1y+pBztM3ziPL70T8hPi\nRB4h063mS5hkikX5X3JXlV1qHiTSbeTYkgWT70m2v0j8Wfsv6JeeJLu28RfZ38l/kkk+78tfPvx4\n+D9np6zvomgq8X/PPZ91a+zy/FYf4ZRPgcZhcVVjzQPkm11bWNWuPJf53/2q2tY8K6xpNolyUX7n\n3a328I6DpOopeW0MyFmb920TfLUXijXpry3+wIi7Vi27ttenXrKUowhE8SGFrxfvs4htU+0L5PmK\npX79afheSa6uPJT5T93dVKw8Ove33yfMGTd8q16p8KfhLf3UyXj2zbW+5trOtKlTgXQjVqVTvP2b\nfhTc+MvGVroL2citcPsim2blX/ar1/8Abi/YV8efs5/Duz+LvifSpLfRLqeOCK8uGX95I33VX+Ku\n1/ZH8Ev4X8ZWGpalZR4Vl+ZvlZq+zP8Agtt8Gdc/aJ/4JreFPFXhKLzrrwn4ghvLrbJ8zR+X5bNt\n/wBmvkKtSU8xjB+7Fn3EsHy5R7SOp+IWta5punwj7S6r/c3VufDX4mfDfRdQhutY0+O5ZX+7u27l\n/vVyXjb4P+NodW2alo9wIm+VGkq98L/2ffEPiDxJFYPpsiiRvnZvu19M8BhfYc058p8vPG1adWLh\nS5j9K/2JvE/7J3xZeF/BOr2Ol61G+37HfIqtJ/tV93WXw78E+OPCv/CN+JNHt57y1t9kV0sCqy7a\n/Iv4d/8ABPf41LqFt4k+DLyQ3MLrLEqt8zf5av0S/ZR1j9pbTdXsvA3xp8JTaXeRqqvdRv8ALcL/\nABfe/ir43NMPWpR56U+aJ9hl88NjaVq0OSZ7f8EfD+u+Dbe40f7TI1n9o2o0jfdr3T4O69bf8JZb\nb42dftG1l2tWHa+CbOHTBqBhYJM6s25NzM1afwW8a6V4T+J+PEFur6fY2811Pc3G1fLWNWbdXy0K\nNOti4Rl/Mj1K8fZ5VP8Awn5xf8Fxv2vNH+O3x0s/gn4F8QyXFj4BnkivWh3K32yT/Wf7235Vr4u0\n+3hmuvOSHft4l3Ju+auv+M2oJ42+OXjDxPC7eVqHii+uIJJE+aSOSRmX5v8Adqhb6WjKHkfC7/nV\nf4q/ZaVGNKlGEeh8HgsPzU+YjXT0jwjw7xs3JGr/ACq1Xo7FFyieZ/us9WrOz8mTZ9mZyz1PHC7T\nb03BG+9Ht+7WFb3vdPbp0eWPuxMu4tXe3V3hXZt+f+Ksq803crpMF2/eRlXa1dPNC8cgTf8AJ93a\n38VY2rW6TMzujBv+ee77tZUf5ZGVSjzQ0+I47ULMKzTb2D/eWsbX45FmX5227V3ttrqdStdrO6dN\nm52/hVa5/VPO+0M7zM6qm1I9tdlOPvWkeRUj7uhyOrWsMnm7OGZt3y1y2uWO5i/8TfL81d3qFl80\ng+VFrn9R00bW38fwrXo048rPJrU+55/q1jbRx7NtfaX/AAb52Edv+2/4pniXaD8Lb1dvb/kJab0r\n5J1rScqTsbG/+L+KvsT/AIIBWjW37aniYnv8ML3/ANOOnV8Z4q6+HWZf9e3+aPl+JFbJq7/ungX/\nAAW1aQf8FOPiYEGcjRv4f+oLY18ptdeX8n8VfWf/AAW0t5h/wUx+I8427SNG6/8AYGsa+SpFxJvd\nMnftr1uA434Gyq//AEDUP/TUToyZxeT4f/BD/wBJQ+ObbNvhRdrfw7KtQ3nXc64WqG141+T5l/vb\nqdDP82x4fl/hr6nl6Hp/FL3jbsbxPlLx7l37srV9dSDK3kurN/B8n8Nc5BN5ce+F+W/hWrEdw6yM\niblSiXxcxEpcx09nqTzYhhRd33d1Wf7eeNVSba235a5WG8mjP2aN9p+8+2ntfbRlNpP95qfNy/CY\n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\nrNNBbMixxbtv3v8AvqvnqkvdPr6dP2h0Oi+EfCVrC2t+J7C1eSayZIpLj7sf+0q/3q+Y/jZ8G9N1\nTxauq/2VNJbzXDJFGsW5lXd8tfTHiDx54W8E6olheIuovsZpVWLcsNcVfeL9N1hZB9khc/M+6T7s\nNezlsv3Wp4WaU+Wryo+ddS/Zd0HT45bm8sIYhv8Am3f7v96vBPixoug+EZHSO8/1e7eyt8v/AAGv\nb/2lfjVeaDaromlWc0sU25vMaX5a+LviN42v77UjbXjsyyOzfM25d1exGdSUdDx/Z0sP702Qa14y\n3Xh+xvJFGr/wv/DWJdeOJrVtiTMwb5V3NXPapr3mNJC6bv8AarlbzXHuJkREby2fa+7/ANCrpp0f\nb/ZOCtjYU3aMj6h/ZN+FPi34uao+qpDN/Z1n8txcfdXd/d3V9Y+Afg7eWviCC5sHbYzqm1ov/Hq+\navhd/wAFA9B/ZU+Eei+FPASWtxcfY2/tS6mtVl85m/3q6C9/4KqWHijwWLvS5oYdRX7/ANni2ttr\njrRqX92kevh5YeEPeqx5j7D+P3ii2+HOi2fg+515ppL7bJEq/Kscf95lr6y/4Jca5Y6t4CutFgK/\naZbZhE8VxuWRfm+avwlm/a08V+LPFreJ/E/iG+vLmaXa0l5cfKy/wrtr7u/4J6/ts3Pgm6trxNV8\n5WlX92su1VX+Ja83FVKtCUZzjsdeFnQxNKdGlL3mffHin9rrwf4B+IF78IvEOpLb3bRbYmml+6u7\nb92vP/E3jLSfiRpMvhW8mWaxVvkkZfmkb+Fq8E/4Kha54Y1r4Xr+1F4Pv47TWNNv4/tUa/6yaFvv\nKteN/s2/tOX/AIkuIEu9TuJ5mdVlWR/lb/drhXPKPtYP3ZH0FHD4eUOWovePqr4E/s9+LU8bPNo+\npXFxEt/t+zzfd2/wr838NfUd5rGq+GvDcOlXmiRw3bJuna3Tay/w/LVD9kb+yNb0K31Sa2VZWbcz\nRv8Avd395q7j40rpqsUis2+WJl+VvmanWjGNByXxHlVpSjjFTPCvF99NqV5/xMkaTb/E1eFftreI\nLzR/2dZbaGLybPWNRhggWSLd5kit/Du/u19DeJNNttL0b7fNGw3fek+6y/7NfG/7dnjC88SeINE8\nAXM0ktjpdu14qw3G6NZJF+X5f71HDWH+sZvGUvsl53iPZ5e4r7R8+WukXm1v30YZU3fvErW02F22\n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\n9tjfa1aS61vt/Oe83MzqryMn+zXFWeqQ3CsnnbVX/no1WG1RzGjpMzM3zbY/ljrx6y5tT2qNTlgd\nguqbVS5jT94yt8zNTJNUyzO9zv8Au+aq1zy688Nn/rsGRNn+WqRdWmiVv+mibNq1Eaci6lSB0K3D\nySsju22b7lKt1Zxqu+b51X51jTdWLb3zvGqO8ilX2/7W3+9UlvcJcSH5/N3blebbt3KtR7Mj2kPh\nLc10l2rzTSs0Tf3V21hXzTSxrNbSMn3ldW/vVtbIZoVffuEaf6vd95ao3du8cLu+1kbb+7j+9Vxj\ny+6ElzHO6nNftH9jc733fd/2a5vULf5pkmmbau1kVv4q7C+heFvO8mTDJ97/AGq5/XNPSSTy3h3f\n7SrXVRqRj7qOSVHm1kcvqFq8MmyF2f8A2v4dtYmpfKzTbPmX5UbZ8tdRq1r5e77u1fvVgatMgGx+\niv8APt/irrjU5pjjh+aPKctfW825n+638CstZ+oWzvGwT5n37vmrcvlMg/1Pyt/47WXf2TyK3zso\n+9XbGXumNTD8pjzK8ch9KW1t3jbfNHt3fNVjyUbO/wCb+KpY7UM2x33nb8tac3Kc/sZ/EWNPV/m8\nlGDf3m+7XQ6Xapa3EWxPm+6zL92s7TbVIdnnQsG2bv8Aero9LhSSP54Vbd9xmSvPrVoHRToy5zV0\n+FF2Om7d93/Z3V0NnHNGyb5FD7PvKlY9isIi8nLfN9zb/DWxZx/IyvMz+Z827+7Xmyfvczid0Y8v\nwmtZq8cfyTfe/iZf4q1dPUMrfut8UafMy/3qz7Fprjy4U2nam35f4q1LFXb/AEZwuPuurVjKXu8x\n1R980IUfa8Lw7yzbauTrM0cUybc/d27vu0Wq+XiaaH5fKbbHGn3lp+n2u0lEhb7/AN5q5fe+KB0r\nljo5Fmz861VHRF3bPn3fNVqzV5mSa2TY2397HIu5ajs4ZoULvCriTd95v/Qa19Lsd0iujtsXa77f\n4V/u1pCXvSOyPN7L3S/pdq8W3y4Y9n3ZW+7/AN81uafpqKv75Pu/L8v92q2i6bNbqqzXO+LezS7l\n3blroLWzSaRXiRXEPy16dKPuXiZfDIpx2LyTLsT/AFny/NWno+kfu/n6t9xd+3btq0unpGFTerlf\nuRwruVq17Oy8va8yNv8A7u3+L/2WuuEo0xylKUit/ZnmWI2bVTY29W/hqS30kt+5h27Nu7c396ti\n303zt80w4jb5WX+Jv7u2rckf2iNftO1F2L8rJXdHkqSKl7sfeOdXQ91xv+Vm+Xbu+9VXUNH2yBHR\nlCt+9ZvmVq7WGztvtDTJZ+c8bbX2v/FTLrSXaYvH95V+Rmf5f+BVrH3ZGNaS5PePMdS8Ox+e4ROF\n/hX/AGv9msO+07yNttM6wjb+6+WvTdQ0Hyo5bx0/2m2p97d/FurlvEGh2ckvz9G/1W2uXEVI/Cef\nGUJTPO9Q02TzI4oY1VtzfL97d/tVN4d+HuveLNaj0HRLZria8fyrWG3iaRppP7u1a6jQvAWpeNNY\nt/D2laJcTXdw6wQR28W55GZq/ZL/AIJgf8E0fDH7Nnhiz+J3xLsYb7xdcRLJBG8S7NNVl+6v/TT/\nAGq4oyVSrGETnx2NpYWlJs+f/wBgD/gg1o91o1p8R/2vIGcTRRyWXhqF8M0f3l85v4f92v0Htfh/\n4K+DnhdPBXw08H6foejxRbYrPSbVYl2/7TfxV6gypsIFee/GbXYNGsC0z7R/F/tVzcQr6tgdPmfN\n4GtUxeOjznmfjHX7e2ysQaXb/wA865STxBCzKdi7G+b723a1ZXiv4laJBIYUv4dzK37uR9tcRJ4u\nttVulvBqXlIr7dqv8rV+SYj2amfsWXYOhGl7zPSbvxJCIR9muMtt/wBX/do0/wAWac6Jb3MzROzM\nvzfdry/UPG2NNkMNzC5aVdtwr7lVao6f4s1Wz/0bUvLzHL961b5WX+GuX2nLC6PVjl9CUfiPZria\nCKY3KHzpP+WSxvS/20n2WS2uYVlST5fJkTcrf8BavGbHx5r3h23vtS1XWPt8Mcu6KG3i2yQru+7/\nALVbVv8AE6a8jlfyGVWi/wBHkZvvf7taU6s1Exll8Ho3cpfG79h79i79oBoj8YPgjpbX7RNEuraO\nn2WdVb+80f3mr4u+N/8AwQd0jR7x9V/Zk+N8l1Cyt5Gg+LItrbv4VWZf/Qmr6/1r4qPafZg6NdPJ\n8sse/ay//FVNB8RptPW4Se5jlSO3Zk8mXcytXpYbP8dRvC/MZ0cNPCy56M5KX4H47/Gz9lX4/fs3\nzRQ/GP4b32mJv2JfQr5tpJIrbf8AWL8tcNcW4bbDDMpX+Nt/3Vr91I/GmieOtLHgzxzpVjqWlXCf\n6fp95ErxTL/wKvjL9tn/AIJLeEdUsJvjF+xLqRtwqM9/4D1W6z53977I/wD7TavpMDm2Fxq5Je7P\nsejRz+rF+zxcdP5l+p+et1+5kCDy2VXbYzfe/wD2ax75Ybht29V2v89bPibT9V8O69c+G/FWlXGl\nahZy7LrT7638uW3b/aWse62fanR/kP8AE38Neh9qxljcRSr+9CXumX8m50toWHz7mbbu20v2G5Wb\nZM6qyp/f+Vqv2sflRFNuGX7rf3qmW3Sabejtt/2lq1LllGx8djKftOZFf+zzv2Jb7fM2/NTls90L\nMnyqvyosdaENnNtDvCqBd2z5tzNTreJ42Pkw/LJ8/wA33t1Epe0PI9nGNjEvrHy43mcNu2bVWsXU\nLV418wR7WX+Jq6y83rMd9tyzf71YOoW94uoSvsjxvXb83/j1dEeXm0J9n7pztwftmJkRf725k+Zm\nqose6T5/vr8zr/drSvNNe4ke5875t/8AF/7LVNtPmhkabYrmT7n92umNSPNyyOP2ciWzje8uFd3b\n92y7VVq7jSbdF23O1T5ibfmrjtItXjuEeSHa6/ejruPCtvub7TJ821P9W33WrWMvc0J986LSbVFY\nb3ZFX5WZq39JV5A32x18lW2Is3zKy/7NQ6Fp8M3+kzTMu7a3l7PvV0On2Lyx/vkj85n+SPZ/D/s1\npE46sZfFEfaq0bIX8x02LvkX+9/dr7t/4JkAD4A6phmP/FXXP3uo/wBHtuK+ItPsfs8ivNCysrbW\n/wBpa+5v+CbqhPgdq0eVLL4snDsjZBP2a15r8l8dYP8A4h/OX/Tyn+bPh+PJ/wDGOuP96J8VJDMt\n0X3/ADTffaT/ANBq3G0M0azQIqv833f/AImnwwrDJ50yTfc+Xam5t1P0mx2u14qfP/Erfw1+0xp+\n7c+yjihlxG9zbr5UzP8AeXarfw1j65bzeS7u7M33UZU+7XQXyvbQq8vlp/zyjjSsDxNO9nbu+xQF\n+bb/ABVvGidkcw96xwHipUa1kdLlmXft/u7mrzDxVdJJdfOjKqtteNf4a9L8XJ5kMqQpHvX5tq/d\nWvMPFW9mM/3Vb5n+T5mauqjGETphmHLGyMO8k3LvSZo33fN/FUDXTblf7q/xNVa4urlZHTbu2/fa\nq8vnMrfPhfvbVauqPuxOLE5lKUh13cbZGdHjI3/erH1KbzJPO3sp2f3/AJanvrh5B5aPhm+422sy\n+Z/lTfu/vbf4q0lE8utjOb3Sss3lyfOFZf4qn0u+2zNJ83/xNZ90ySME3qP9laWzuE+VN+35/u/3\nqylHmOP61Lm0On02fbIUR2O7+Fv4a6DT9SSOMF+f71cda3SRx7H+793/AHa3NJuP3nkvPXLKPK2d\nFHEfzHV6fcQwSb4f+BVtWt9583nPMzMv3vl+Vq5GzvPmTNypVvl/2a3LHUnMifOrblriqR+0ehRr\nS2Ox8P3n2iPzndU+b7q/eroLPVvs8gdHkZNm1G/u1w2n3U3yYMajz/nkV9rL/wABresdURmaOTb5\nv8Ekn/oNY8sTf2nNGx9Lfsi+Kv7S+IWlaDrfiHfayapGjQq+2L71frt+198PfD+s+E/D3iWyZiPC\n1rE1rIrfLGrR4r8NfgTqVzD44tprOGTzGuIWi/i+bd95f7tfsZ8RfGnirWv2WtB8VeJ9PnWDWLVb\nOBm+X95Gvy/+g14eb4Wv7K8I80T0Mnr0JY2CnLllc+Wvjj4qh/4SQI7ySy3W37rbttdT8F7Ow0+x\nkxfqfMt9zKrV4v8AE7xY+nyNM7s87Sqss0j/ADLtb7tdr8K/GSQ+Gft81ssKMjIzM23/AIFX5/Uc\n+XlP1Oi4+0sznP2gPHlh4V1ZUsLzPnT7EVYv738VcTa/GDStJ0+W8v02RRxbX/vTVxvx8+LE39uX\nN/c6lC+66ZYl2bWZV/ir518bfGS5Vm+zXMnmK7Nu37VXdXrYOjLlikeZmVSHNJmt+0h8YIdavJLr\nzpJdrt5Vv93yVr5Z8TeIZry6ebzv+WrMqt/DXSfEbx1f6ur/AGmaR2Z/nk3ferzDXtcC3Hkptz91\nP9qvo8PT5pcp8BmOOUZchZ8y51a4WztfMLs+3dXrXw1+Aum6lYj+3ttu7fN5knzKtcl4Dt9H0izh\n1XUryPzpP4f7teg6X4sT7C6Q3nlJu27l+9XpSqRp+5Dc86jH2kueqYnxK/Y/udT0trzwxrEMu378\nK14lcfBXx54bvG/0CQqrbXaPc1fWPhvxhbWMKOmps25fnVvu7q0tD8QaPb6xCJtPt5kb5nZk/hX5\nmq6ePlCPLKJliMDGdTmhI8b+Af7OPxI+K2uJ4e8PeGL68vIX+eFYvmX/AGvmr6h/4d5/tpfDaxs7\nLRPCU2lHVG3fbGZZNq/7q/dr2j/gl38e/CutftcarNqtrapDcWawW7Miqq7V/u1+oWoat4Mvkh1X\nWbaGYR3H+jxr91V/3q8nGY/ByrOM4G+CeKw8lOMj8j/j1+xr+0Dov7Lr6Nd+MLjVHkaO41fzNzO0\na/djWvl74K+KtS8A+KI7CfzLea3nVfmZvlX/AHa/fz4/aT4Y8UeD/wCytH02FILhd8qxru3f3d1f\nin/wUf8AhvD+z7+0Vaa3Z2bW9lrErblVfkWRV/vVxezoTpezpn0tPNq8asakpeR+ln/BP/4yPqWl\n2tqLnZNs/wBY0v8ArNtfT/irX7LxH/p9yio7NuWRvurX5af8E9/jFDq0kNtvjR1bYkiy/NX6DaLr\nUv2OGzvfOTy4lb9591q+flzUacoTPqcPL6xX9qWvixJDa6DDbTPvg+Zpdqbv++Vr80vGHiK28ZeP\ntY1t7zf5l/IkTM3yrGvyqtffHx28XPp/gHUNVvJtsNjYTSqq/KzfL/DX5w+H795LOGGbcks251+T\n+8275q+p4QwsVKdU8HiLER9rCkbdm0MkKuiK7Mm15F+6tW7G1e3mBhRZG/vb/l21Db3Ttsm3723b\nvLX/ANCrW0e33Y86b7y7vuf+O195yRPGo1I8msjQsdP+1YmR2Xa6t935WrQg09JGedJlO7c277v/\nAHzTNPtXkV/3O5vlZI2b5f8AdrYtbOZWYon+u+Taqfd/3a05fcNJVubWP2SCz0t/v3JVEb5VX/d/\niqzJp7/7TbU27V/9lrQ02xS62zXPy3DfxM+7atXbe3kktmmdMj+Dcv3q1pxhsY+093mZ7n+xhaR2\nfww1COIEKdfkKqRggfZ4OK+OtS8OzXCzQ/Zt23/ar7R/ZKjEfw6vtqkBtclKgtnA8mGvmVvDc0cy\n+SiwqvzJtr8T8NIX8R+KP+vlD8qp+d8Oq/EebPtKn/7eePax4d3O8Odrsm3a38LVyWueGfvIieW6\nv/c27q9y1Pwq6XEr7G/dvuWRf4q5TVPCaXEjwvYSO+/ekjfw1+604+8fR1qh4xrHhHMZhRFxJ/Et\nfQP/AASR0P8Asv8Aah1yUR4/4oS5Untn7bZHj24rg9Q8Ou262SaPdG7blWJq9v8A+Camhtpv7QWq\nXLkgv4NuMo3Vc3dp/hXwPi1G/hvmb/6dP80fHcT1Iyyiv/hPm/8A4Km+Hkvv21PG9xE7CaQ6Zswv\npplqP6V8k+JvCe1t9zMx3ffVV+Wvuz/go94flvf2ufFtwpVvNWwGP7o+wWw+avlzxR4UtmWV3tsi\nRq9bgKN+Acq/7BqH/pqAspl/wlUP8Ef/AElHzx4g0dzM3ONv8OyqFvpM25XRFZv9r+7XrPibweiq\n1yiMP9muYbwncrJ8ib/9lq+llE9HmRlabo87KyfL838VdNpegou13RVO3b8tX9F0Gdl+e22/3Vrp\n9H8Nu0i70yi/ejrL3pe6VzGbo/hH92rwbULPW7F4HtoZN6bXVYvn2r8y10+i+G7aNW3wyO/93d92\ntu10OFpgjpJEW+Z44/vVXLyyMjg4/Bu5WSzTcm3duZfmqez8Mzbd6QfL93aq/wAVelW/hv7WjeSf\nkjlXd8m1mrSt/B73C/IjD/Z2bVWjlhImUpnnWn+CX+X5G3rt/wBW27dXRab4ZRX2eTudflVZK9B0\n34e/ZyJksG+b78zfNu/2tta+leBUa6kmmdtv3fmi+838NZypm0akonA6f4RcsJns2Hy7dq/dq5J4\nHuftGyY7Fb5dzfdWvRovBaXSog+Qxv8AdVq07TwPZiMWz2bFGT7zVzVKcjqjUieQal4IdVf7NCsq\n+VuVY/4mWua1b4e/uT56eZJ95v8AZr6EuvAtsFlmeGMPHF8rMnzLWFrXgeGRn+dV8xdvyxfdb/aq\nJU+Y2jU/lOUhV1jVEk2tvbe0j/KtQSb7TYiW28TM37yNvl/4FRNcPbzY+YxMrKm77q/3az7jULmT\ndsRsq/z/AD/drzuWUT9Bj3Jo4/OmV3253MzMr1W1Szh8n/j5WIN/e/8AZanju3fe9mIUfZ8v+7/v\nVHcXUL75bm2VDvVdytu21Xs+VaF1Knu8sjntSs3aF96RlGTb838P+1XH+IlRo5kfb/d8yP8Au129\n9K8lq6We3e27Z5n3WWuO8UQxzbk+zYVX+f8Ah/3ttZ+xPJrR5feOH1JvLk2b2IpY5rZtvr935v4q\nXUlijzMkzI0nzJ/u1S+2IWRIflf/AJ6bfu1lKPNA5eb7Rt2MibSUP/fVbGhtJHIedifeXdXOabNJ\nGqQvOuP7zferVs7pJGE0Lsw2N8rVn7P3feJjJOfMdD9uO132cbP+BVZWR5IWT7i+V95vururFh1C\nGaF7bfu/dbtv93/gVSxXUMLC23/KqbfmbdUezny25S4VOWVyxcSPbx/6Sm/b/F/7NWdqN9NHZskL\n7iq7k3feb/aqxfXW5fJ2cblVGZ6y9Wkdbh32bUZNu5aqMZc1hVKn8pnalq/nyFE5XZ97+7WDeXMM\ncQ+zIy7fl3bqv6pNtkZIZv3bfK//AAGsPUpkmzsh+f723+6tejGn7p5spe97xTutWf7QsLurH+8t\nZuoX3lgrv3bflqG+uvJkd/Mx/drIvNVTdh5sOzfxV20jy61blLN1qCR7djsE+9t31Yh17y7cIj7v\n9pfutXPTakm4u+1QrU23vk+Z/O3f3lWto+Zze0n8R1UOpJJIrwur7v8Ax2v14/4L4TCL9jzw4GOF\nf4k2asfb+z9Qr8Z9Lk3SLsfaV/vPX7J/8F+3Cfsc+GiQTn4l2fT/ALB2o1+L+JGniNwv/wBfK35U\nj5PO5c2dYD/FL/20/Jc3nnMrvu3L9/56WG4mm/vLu+VqpQsnmb/4G/i/iq5aLPtZN/3q/aJSPq6f\nxaGlZyP/ABn5v4dtXLW68uP5OP8AZ/u1mwTPDIIZvu/3v4au2rbvuOxX7tYyj/Md9OPU3IbhZmTf\ntRV/iX+9V6zvtsw+f5VVty7vlasO3wqrJPMqIzfLWgt4WJTeqbvur/FXNKMDup80feNu1unWzR0f\nMjbtnyf+OtVuz1GNIdibd38e7cy1zf26aPd8m3d83zVbsdQ+VEdl+VtyR159aJ3UakeY6Bbh5ttl\nc7nRfu7U/wDHavLcf6Qk1t5iN95W27qwY7iZY/nmZl/i+atGG6dVV3DY/jVfurWcoy5dDSpym5Jd\nTKUCBlDS/vWZfvVbtZEmk2Qov8P7yP8A5aVkWcyTXqJMkjo3zJWpawzRqZofkRf++t1YSjHl+Ifx\nTLqx+fDsR1Ta/wB5f71F5Dtb7Mjt5Ujrs2/N81OM263RHdvufvWk+VaerXjKNiMhVPk+Tcu3+7ur\nOpzx906Y8stjIvFmXd5MvmeSjKjfw1iahbpJC7pctlVZmWul1Cx8lZTZ+WI/7sfzfNWHdWrhRBcp\n/tfKm2lGP2izl9Tt3WF0eFVuN27dJ93btrlry1eNi83Ndz4itXVtkKbn2/J/drlrq1eaR3hhV933\ntvyrXXTqe7cuUeXY5TWLWbcqxuyj723+7WbdQ7mPz7m/vVvXlj9qmZH8z5f4aq3Gnv8A3/8AdWuy\nnU5dDn5eYwPsqDcifdb+JvvVcsbHDRl15/u1ba3TcqCNWZfm+Zau2Nn/AMs3fcrJu3f3aVSt/KXT\noxj8RY02xjVt/nK0v92tezhTzA8KMu7+9/DVezsYY/Kfycv91WX5q1Y7J7Xcj9Pvf8CrzpSibSpw\nLVvb7pFfZh1+X5f4q1NPheObzoU3bm2t8ny1Vt12yb1fKyJ/F81aljG6t874f5dsa0+blhocvL75\n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\nvc2tJt4ZG85OkPyfL/eb+9Xb6Pa7oUD7iV+X5q5jS7BLf99sZpvm+Vf/AEJa6vw5D5caQu8hRtu9\nv4vmr1sLHmgedWlKnI2rO1v4WbyYdp+95jJ91f7ta2n6b5kqCFJDui+8v3ZKn0u322rJs3K3y/vP\n4q3ND024t7ZLa52r5m1nb7q7f9mvTo05bHDKsZ9lpd55Zd9u3/lqq/dq5HpsUOOJJn+ZW/h27q3b\nPS0bfCvCK6/e/u1eh8NpNO6XKbt23yo1/wDQq6+X3iIVpS0OPutLSa2aG5dnWT5W/wBn/ZrjtT8M\nv4m8Yf2NZ6rCkdi6u9vN/E38P+7XrfirQ303w7fTb4UZV2xSSf8APRvlWubsfh7beBbe21XWE+z3\nn+qulkdW85t33vM+9trxM6xEcPQt/MVXxE5fuzE8eXUFrobM6Wtpc71RGh+8zfxf7v8AerwLWrq8\nj1q4ub+88x9vyMz/ACxr/druPi5Z39nqWp2E7xvNNLt3ebu/4Furze6tbm+WPR7C2Z5Gibd5n3Vb\ndXylBSlscUve9057xtY3k1mk9rDHsWJn/wBnd/erzfxhMY4Wmhud1zsXd6LXq/i5bzRdLh0S8ud6\nxtuVY4vmb5fu7q4C+8L3OuBM+dH5j7drJ8rf71dVGpGM/IKkZShynAQ6akl2u9FZ4X82WRn+61UN\nSv5Li+Wa2Tj7jt/E3+1XobfD25vLUQq6q7PtXc235v8Aa/2aydR0PStJjSz1W/tftbbvNkj/AOWf\n+zXrxlQlI4KlOUYHAeIrKG1kifzpJkZN26Ntu2s1Y3tYpX+0tvVt21mrqtet7G1kR9/mBvmdv4dv\n+zXLapqENxL+4SN/7jbvmWolKEjL3ojvO1Web5H3Rybdnz/NXQaPYa9JGdh80bvl3L/DXP6XqFhK\n2x5sS7921vl212ek606sjpCqQt/t1wYyo6cYnXh/3kviNLQ7waVMX/drc7du2RvlWu/8D65Msge5\n2vcNtXaqf+PVyVrJpWoYhhmt9330aT+9WhperTabfeTc6lCySN/yz/hr56vKNaUrn2eV2pSjzHu/\nhnxNNbRl7n7mz96v8O3+9Xtfwl8baVrmjtZ/uZRt3eY396vk2x8QOy/udVbayMvzf3a7L4b+OLzw\nzcJZW1+tonmr82/5W3V42I5afun29CrSjLl7n1VHoNnIq3MUKymPdt8t9q1Vk0fT9F1a2v4YWaGR\n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\naz7pU8mM7X2/N96qu4o2yaFUaP50+Stoc3NzM5JSIdLs5rMv5MaqJIv9W33Vatyz2W7hB8/yKjyL\n81Z1jb20kjzIiov3mrQ023SOZvnbzfuv/dZaxxEeY2w/vG3Cq28jTSbSzIqquzburV0+RFkVNke7\n+Dd/FWTaxPI/kzfKn3Yv7y/7VbUNn5yrv5RWVn3fKqtt/hrglzcvwndT+I17NZ71U2JlpHw/y/Lu\nrahhdW3vx/7Mv8VZdnvjQuXwV+5t+7urY0GSFt0f7t1b5UZv4aI8nNblO77HMX9PtYJJP3MPyt83\nmK3y7a6PTbWzkkF4ibdvyrtT5mrN03Tfs7L5ab0/jXZ91a6PR7JLVUTfIFV/3XzV2UaXVHPW92Ja\nt7d92PlEv8Lf3VrrPD6wrJG+/c3zfN93bWZpapN5vnozru/e7k2s1b+h2Mx2/Ou2OVt+5Pm2/wAN\nezhY8vunl4iUuXmOn8Oy+dIULx7f41+83+9XS2a7oWaZMLv2xLs3bq5bw/G7TPOgYf3m/wCBfdrr\ntNkTzVmhdtq/fj2169OPKeTKUueRs6fG8kPnbI1Vfvsv8Vb2nw23zI+4+d8sUm3ay1n6O1tdTI6I\ns6L8u1V+Vt1bem27Nb/I6sv3K6OX3R+SM3xR4ah8RTado+xti3Sz3EK/N5yr/ermfjZa3+pa5cTW\ntnbtbWsS+V/Cyt/Cteha9efYdPTfcwxG3tWdJPK3SRrXlfijVNS1TTQ+q20breXCrLJHuX5V/ir8\n/wCIakvrtvskU5SqTueL+PPDs2ta5NrFt8iq6rLGr/dbb96uUk8MvY3hvIbbZJN8ssiv/wCPV3Pi\n7T5m8QCz+2LDaLLubcu3dWb8QFe3LahYI0aeUsUX9xpP/Za8aM+SOhr7OftThPF1jc6gtnpsKZih\ni3PJt27m/i+aud1zQ9K0e4t7k7mTfuuI5n+VmX+Kuo8W/adP017mGbeNqq6/+hba881zVJo7eTzn\nVl/h8z5mpU6nu3O2nh5I4/x1rzw6s9yl4sy+b+68tvlVa4C4vr/Utaeab97t+8q/ear/AIuuLbdI\n8j7du7fH95a4u+8WJax/ZrN23KiszR/fr0qNSmoeZ5uIpykXvFN26zf6S8caTRKyrI/zVzWoM9xf\nKls+/wCT7qrWRea5c3Vw/nXLbF+ZFaks/ET2NuJEdd2/738VdVP3Y2OOpGL1H3Elyt4k29RLv2s3\n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\nalcr58aM1rIsvysrfw1tXV9tjHzr8qbnbfurKn7p6MqlKtHmjsXF1KZZt80zLtl+9u/8dp9xrXys\n8Lr8vy/3flrmdS1BJZkn+1Mm1N27+9WZN4k+b9y/8X72uuNQ8+UeY6uPXry1kZMr977392pV8QNM\nyTTTK3z/ACrv+WuKXXIVmMPnN+8XajN96o5PEH75XSFSkafxPtolUj8REY8p30fiSe1hP2l42Tfu\n/eVeXxs8Kq4WMiRPuq/ytXmDeJJpNvzsqUyPxI9uoTzl3q/3d9R7Y05Zn6yf8Em9TGrfs56zcCQt\nt8aXC89v9Dszj9a+B9H8beTdNM9y2yRlby9/ytX2z/wRY1Qav+y3r92Ccf8ACwLpcHt/oNjX5q2/\niq5mkVIbmMIr/N8vzfdr8O8OKnL4i8UP/p5Q/KqfNZHCTznHpd4/+3Hueh+MrCZk+TfEzfeZv9XX\nd+H/ABqlxH/obsis6q67fvf7tfPHh/WvL2PP5bsybkZf/ia9C8O+KHjaPfMyL99I1f7rV+zSxHNr\nE+tjRme42fiC8mkiSGbb83yQyfe2/wATV7f+xTqw1H4qakhJBTQpsAjG79/Bk/59a+UNH8RXM377\n7Ssj/e+b5dtfRX/BPjXm1j4x6gsu3ePC0zNsbIP+k23P61+f+Kle/h3mUf8Ap2/zR5XENCX9h15f\n3TQ/aW1qWz+OOuwWrZZDa71/7dYq4CTxNDHu2Px9123/ADbq0P2xfEq6f+0T4isFaNWK2nzP/wBe\nkJry7/hMPORoYbDadnzNXqcC17cD5Wv+oah/6aideS0JPKsO/wDp3D/0lHeTeKpoZkR7nO5N27+9\nVebxTNKodHUp8y7v9quEt/Ek0nlzXMaxHdudo/m+WrH9sTBm8mZkG/dt2/LX0csV757n1Xm942tU\n1aPbMjwsf4tq/wB7/ZrB1K4eRpnZ5F8ld3lr8zVFc6vczbZjtIb50b+FaytSvHkYv9sYfN80K/wr\n/eqPrEpbFyw8YwJLq6hWSF0/ii/1jN935qyZPEG5nTf937zN/FS6ldeZG+/ciM3yfxfLtrBvj5it\nNs8zavzbm2s1bU6hy1MPH4jqI/ElnHsmmf5tmzzP937tQyeKkvpmRJlO5G+ZWrhm15FkT5Nqxy7t\nqt/s/wB6q3/CSOq703A/xNvrU5+Q6q+8RQyRrDC+9vu/L/drHu9YhH+jIi+X5X977tc/Jr/mQtNZ\n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\nffnc+3btqexscqtsifJ95GZN1c1bY6KdHlnyl21uiu1Hh3bfvxtu3bt1dRo95Csezflty/vJHrlr\nWF41Kedh/l3bn+7/AMCrY064f5LZ33sqfumb7v8As15sj0Y05RV2dbcQ7XFz5K71fcm5apXdz+8V\n327/AOJdldDeae6xl5o1dv4dqfdWsjUtOhWP7ZM6om372z+Kvj/tH6RRpycfdOauP31uru8ZK/xN\n8q1z2rfvJWmR8Kr7pV8r5m/3Wrqtajs1bZDDkN822T+KsTVI7maPe6NuVNywq3y10U/dPZwuF5jj\n76/CjYk2Xj+ZFWKse+3szbNqs3+3XQatZ/u3SHcm5Pnbd92svUI4ZFZLlIyyqqtIv3q2p1PZ+6fQ\nYfL+b4jltStZmmV0dWeP7i1l6lA+4QzOqMy/d/irptRWzhX7T5rbN+5I1Tcq1g30cGfJ8lmdm/1m\nz7td1GtzCxWWx5TFmsXWMpvVXV9qbqiht5pG+zOm5ldfm2VfkCQjZv8Alj+b+826n2tiI1OyNsr/\nABN/FXrU63LD3j4TNsv5eYfp9nut1+T5t/8Aq99a1vo9xcRjyRu2/L5cn8VR6fboscXnJuf7396t\ny3XzZE37QWRl+X+7/eo9pLm0PjMRR9nAq2eltJsdIdqRuy7f4lrY02zn8iTa6j51+XZVi3t3ZTC/\nzRL83mL/ABLWnpq+dhIXZ4VXc7eVtrH+9I8mty9QsdNhmkWF3Xztv+7urd0/S3mh+SGRH2bW3fwt\nS2unQzLHNDYec8e3/Wbd3+0tdD4dsYVkUiFl3bt25Pu1PtJfEc9OPtJe8VYdPMkkaeSpZfvN92tB\nrVIoG32ap8+7du+9/srWlb2aW6uiQRyNJ8sXmPUk1mjN8+13Vm2/L8q1yyqe9zHfRpxjqjnG02ZS\nNm1ZP+WrbvmX+78tL9l/dmwmjV5Nu75f4V/iram0m5mVZkTcfK/v7W+9SR6S6zY8jYqurM33lVf9\nqolL2kbSOmj2MD7H9nZLmHps+ZVr72/4KxQmb9nLR1EQfHjO3OCcY/0S75r4ijtUZndJlWNnb5V+\nbd/tV9z/APBUqNZv2ftHhaQLu8Y24GTjJ+yXfft9a/HePH/xnXD3/Xyr+VM+R4mvLiXKLfz1P/bD\n83bzTXlaS8mfIZtvzfd+X/ZrOmsfmX7NtKL/ALFdndaK/wBoVEEe7+JWf5Vqh/ZdmsLQ+TudpWVZ\n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\nInzM1W21WwsbO4vLn5fLt9qKvyq3/Aq8w0vSX1bWLnVYXjXazN8vyrJX1+Q4Hm/fSPheKc0i/wDZ\nIfM7b9pXw74G+N/w1vNK0rQY4tRtZd1vNJa7XZlX+8tfHfw5vLybw7qvwK8To1tex7p9IaSL958v\n8NfW+i+JrbQ9WiS5jmeVtu6ORvu15l+118M3+1Wnxj8DWarqOmy+fcLCvyzKv3t1fUfFSPhIynFH\nj/wz1a28UaXceA9S+ZpFZbeRk+bzF/vVx/ijRb/wrrk0PQx/I25vu1f8SahbaH4oi8Z6I/7u6VX2\nx/Ltb+Ja2/iFqlh46t7fxClgsRVF3f7TVnGXKXGPL8JyEfktZrv+Xb83zNurlPEVxC6vC/zVv6he\nJCXtvm3f3v4a43XriG4kfzudtUXGJi30O5ZE3/LVPzPl/d7WFXLry1Yon9/+/VGNf3jQIm3+9VfE\naxEaHd8+/wCX7zK1Q3C/3z/3yKvTW7rGE+Zw38NVLpf+mfzLUlFCTezvsP3ajkbc1S3R3NsCc1B8\n4Ul/4aBx3DMm3p8rVKqzbtny/dqEtkLn1qRJPm96BDmZV+QBc7fvVF5zt8mKbIu1qWNfmGXoHysX\n7w+SmDeuAHxuqYbIz89FspmnRMc/+y0RCO5YaX7PZ70++3ypt/u0trlvn2VBdMjXB2fN/dqS3j8x\nv9dtZv7tHxEyOq8Mr5brNDtU16t4XuL+a3/1yqipXlPh9fsixzTOrbf/AB6u6s/E0zWaWdlbbP8A\ngdae7GJhKPMVfi1qW6xKTTK7L9ytz9gf4W3Pxk/aM8K+CbZP32reI7WCJW+Zf9Yvy15f8RNTmkvN\nk024/wAK19rf8G/XgP8A4S7/AIKAfD55oVMVrqn2h2/3V3VphY/vEY4uXs8Mz+sj4WeFbDwP4E0j\nwhplv5UGmadDbRqv+yqrX4Sf8HqVjMPih8ANV2KYvsGqQfe2nc0kdfvbpF5i1V33D5f4q/FP/g8x\n+Hk/ib9n34WfFy2i3R+GvFc1reSKu4Itwvy5b/gNY14Tlzm+CrUqcYIw/wDgl348ttM+COkPDM26\nG1j/AHKy/e+X71fT3jL9qq6ure4s3RbhI7fZ5Myfd3V+Zv8AwTl+Lj6f8EdLtdiuY4tr3S/L8v8A\ndr13W/jVNdXDJc3LLFv2ttX5mWvxLF04xxs4n7Xgqt8PCoe/ahr3wi8QWtz9vtmiuWib5VRWS3+b\n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\n9N1C28GfErVo9S06+02JVRbiT7y/N8v3vvV+qXirxXbXnhOx+K2iSKj6d804+9+7b+Fq9PHUlOpG\nrH7R5GEqyjTlSn9iX/kuzP5Qv+C1n/BOfXP2A/23vE3w1ttOZPDmsyNqvg+4VfkktZG3eXu/vRt8\ntfGv2e50+TZMm5vu/d+7X9Wf/BfT9hDwp/wUR/Ybv/iz8PbeK58ZfD+yk1TSGgX95NCq7poP++dz\nV/Lfq1r5LPDfw8M23d/ErVzV4qpFVV1+L1PQwdd0p+ylt9nzR13wrmfUrV9N+953y1z3izRZoby6\ns5k+aN90W771a/wniSx1NEj4j3Ku6ui+Lnh/+z76LW9N2sky7ZV/hrk5uY7ZcvOeR+GdUm8N+IIk\ndvkZv71fUPw71i11nRdn2zLNF91fu180+MtBSzkF/Cm0bNyf3a9I/Z78aIzCwuXjH8KM1RKMoy5i\nuWNQ9Q1SxRVd97KP738Ve7/sz+Mv+Eg0v+x7y5b7Xa/Kir95q8W1S3SVH/iT+Jo60PhF4u/4Qvxl\nb38160NtHL+9/wCudRiKftKWprg60qFWNj7EtdNmt137VVN/97/x5quQ2O7ykvbmFlk/ij+VttX/\nAA2tnqmlw3lo/mJdIrq3+9V+axf7U/nQx/KrbGb+GvGj9qJ9pDljCMjGaxDTTXKczN8qbX/9lpbf\nS5mk/fWyu0nzPt+Xy/7tbdhb3KyJvtv3Tf61vl3M3+zU8en+X5v2Z9rLu3Mybl/3q6qceUqUYS95\nH0h+wxAbf4R38ZQqf+EglJUnJB+z29fIN5oNwjM6JtdX3O0afdr7J/YyhWL4YX7KuBJr8rAjoQYI\nOR7V8r3FmizLM6MTG3ybXr8Z8OU34h8UNf8APyj+VU+L4bgp8RZpfbmh/wC3nDa9o8Nu2y2H3vm2\n1yOrWdtNcP5zqpX+7Xo3iKPy1dLb7q/P/u7q4PXF/guUj3790qr95q/XcRE/QcLTcZabGVMuza6J\n8y/L/s7a+jP+CZHnf8L/ANYE0W1h4QuARtxx9qtMV85ySbbfZZuyxq33pG+Za+h/+CXsjS/HvWSz\n7iPCEw3Z6n7Va5r8t8ToyXAuP/69v80cHGMZLhXFv+4/zRzP7dl1IP2qfFcSkfK1iEAbksbC3ryS\n3vHVZZnm+825PLb5l2/3q9L/AG/LlIf2s/FZCZ+awBHv9gt8NXksdxZxr5c0yp8zN8v3qjhRW4Oy\n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\nS+L4jDlG+Y/ll361JCvmIvdv7tJHC8iZ+9/srWrpWjvcMNkLZq/iHIhsdO3Irl2bdW1p+ks0m9E3\nLtrc0Xwe6w+c8G5f9qtVtNTTVbzEXP8AdrXl5Y8pj8UuY5y4s3tVLhG3NWbOu6TeB92tfWrpGVnh\nbDKn3awJpZpJGfeu2spSKjHmIbiaRmGxGb/aals1dWZHT/aZqRpP3a7wxanQ27sdjvvXZuo+Ef2D\nT09ftLKm9VVf7yVsNp8zWu+H5i336xdPuNs+zy/k/jauks5LYQ7N+0NVcxMtjM+xzQsPMTa6t/31\nWnpLOtyPu/K/zrS3SQ8eTz8+1/n+7TY5Idy+T8prOPvByx6noul6Ho+raemybaVTb8teP/GDT30f\nxMLZ3Zfl/wB6u50e4eO2ZLN2Vl3K/wA+5WrhfjJNcTX1tNO6lvK2s1IcY++Zfhi58y62TP8Ax7q9\n48EzbvD4j8xWC7flr500G7eG6D/Ka91+G139q8OzP8w8lNzsv3qv4Qlz7GP8WtQdtLebqjbv+AtX\nicm+SYu235q9M+MmpbbYW3n8Nu+X+9XmKcMKZdOPLG50Xg9Q1xGm/Zu+81fQ3wzkeTR1hhTPyfNt\nr5/8HxvJNG6fd3/xV9DfDe3hj099o+Tyvl/2qOb7JjL4x/jC8hkjPySAxrs2t/FXh3xC8MvcNLqV\ntbNlWr2PxNHc6hMz3KSD59u5qyW8KvfL9mezZ/4lk2U48hl73PzFj9nHXJNQ8Oy6U94vmW+1ljb+\n7XdalYbo3uUfJ/iVU+7Xk/gWN/APxOht5nYQ3j7fMb7qtXs7XLhdm/8Aj2/N/EtT8PumkuWXvHE6\nhBNDcOjvvRk+X/Zr1b9kP9pTxh+zP8TLDx54buZIfs9wrXEMb/6yPd8y15xr1ikNzI6bZEkZmf8A\n6Z/7NVrVfLuBJvw33drf3aenJymHvn9KPjT4ffC3/gsv+whpXiLwzqwi8TaZa/atB1VWXzIbtV+6\n237u5l21k/sy/tXeNtK/Zz174b/GnQb5/FXhu1m0PxHpcNr+8VlXbFcbf9pa/Mf/AIIH/wDBTC5/\nZL/aJi+AnxJ1jZ4Q8ST7YJppf+POZv8A2Wv2/wD2hPgH4Z8S3kf7QPw/vFtLqWCP+3JLOHf/AGlY\nt947f4m2/dau/AV4zthqz93oebjaFWCeIpfF9r07nj3/AAT6+M9h4p8QXnw38QXRNtrunGH7K7bl\nZtrL/F/s1/Mx+1F8O9E0X9oz4n+DNHRWttB8f6pa2rR/d8tbhtqrX78ePYdU/Y2+OFl8Wr63Ww0G\naK8vfDrTP+8S1WFtu7/ar+enXvGV54k+MnifxDqVy0jeINcvLyVmTb80kzN/7NVY2MsPUf8ALIrL\n6kK1OPN8UbnLeDVudF1ZVmTdCsvz/wALba9Z8SaTba94JuHSFi7IrRMvzV5+1mlvqT+cjMG/4E1e\nmeD7h7zR4tMd12Mm3a38NcEfiPRqS908VmtodW06awuUZXj3LuauY8GapL4T8VGGZ8bZfl3V3HjD\nT30HxhP8i+XcPtRV/u/3a4X4gaV9g1BdXtk+Tf8AO392iXve6aUZS5uY+nfDt6niDw9HeO+Fbb8q\n/wDoVVNQheO4kmh/hX+H+7XD/AXxg+oaWtg82/8A2Wbb8td9rET2q7ETe237yvUc3u2CpHllzH1l\n+xv8Un8ZeCW8PXlzun019nl/eZo9vy17D5bsXTy/mb7vnV8Qfsv+PH+HvxSs7y8m8uyuv3V02/7u\n77u6vuqUpcTeYk0ctvIi/vI1+WT+7XDWjyysfVZTW9pQ5ZDtLhmbzQiZXZU9sl4ykwp8y/L/ALy1\nZsYYVj2bNif3d9WLXTUjXfCjK+/am2iK5j1PaS92J9B/sgqE+Gt8BHtH9uS8fSGEf0r5cvLV1kkS\na23ivqj9k4Mvw7vlYjjW5AABjA8mHivmq6s/3b7522t83mV+NeG0L+IvFDXSpQ/KqfGcNTkuJM0U\nesof+3nDeIls45PtOGzIv3lrznxFdQ2twYbZGLt8yNJXpPiaBFZHhSQJCjbI5F+Xd/vV5nrVjNCT\n/q3Te235vm3f71fsGIjDlP0nC+8c5Os1vcbIX3jd88i/+g19H/8ABLKdD+0VrUEa/KfBty4b63dp\nXzXdW9tumR7mZEVd0qq//s1fQv8AwScuHP7R2tWxOVHgm4ZW3Z/5fLOvyjxQafA2YJf8+3+aPJ4x\njfhLFv8AuP8ANHOf8FA5gv7W3i6N2bH+gEY7f6BbV4vDeFZmEL/OyfxJu3V6r/wUUuriP9sTxdFG\nBtb+zwxZuP8AkH21eGyakJpvO+bbGzKrL8qtWnB8ebg3L/8ArxR/9NxO3hp8vD2C/wCvVP8A9IRt\nxyJHqGd6/Nub5auR6xD5mxJJGZfmT+H/AHWrkLjXHhX9y+GVtqfN96hvE0DQ7HlVJtn8Pzba+hjT\n5j2PaHZtrG1RNNN+9bdvX73zfxVZsfESM7fuWUxxfupmfau2vP5vEAuI0Tf+9aL5/L+XdTP+Eimh\n2/Oz7vlT591EqcpaBHFcmp6ba+JJtyp8qLHu3t/e/wB2pLXVppGd3uV2t8m5fmbdXmtv4shZVtpn\n/wDsa1P+Ene3m+RI2G7b+7f7zVv7OXUKeIhKZ6Tp+rQtcCFHZ0jTb/d2r/eq5p+sJJbyeS7FWb7u\n+vM7fxY8MrmDcV27vv8A/jrVoaX4mfzPPSbbt+Zlb722s+adM7qFaEp3PSPtjzRqm/8A5ZfMrfw1\nYkktr6z8yF2O77u3+7XE2Pie2+0Qu95tRl+ba25mq/b+LEt5F2PsTyvvN8rbaVPEcr0PRpx943Lz\n5pEfZuX7v3qydSmtpJo7Fpldvm2/Lt2/7W6sW+8QPIGeymVdz/M2zdWLfeNPNX5Jm/dvtdfu1lUq\ne9zRO2Mealc1tW1rzIWtkDfKnz7ovvf8CrKi1zzhF5MzMmzait/DWDqniqa53Ijqzqn+r37du5qy\npvE22IobnYi/Mjf7VdOHrHl4qnynpnh3VLbbFbI6l/vf71dho+rfdheZUDL8zL83zV5L4Z16Fm+e\nb7v8P92u103VN0LIjr8zbq+zlT93mPySnipxkdbb6pN57JNNIvz/AL3zF+Xb/erSSZLiSIJ93722\nP5d1ctaXm7zNnmMv3Uaata1uvMjV5nbEbbl2/dWsZUYy2PcweYVYm/G32i6e587zQ0W1l3/dqby0\nkZ0R12/e3Kn/AI7VbR50jd5ntlZfuvu+6y1NZxzSXC38O10X7q/dXb/FXnVKdrn0+HzKXKmUL61h\nluPnf+H5W+7WLqFrZyQlLl2Ib+Jq3dQ/fLv2Lt37Ub7u2su4VI5lmf5n+Zdu6vExEeWR7FPGfurn\nG61p+xl3uz/3F2VjzaOtwqzbNg2bXZfutXWX0aNItmm4fvdzbqg+w2ybkR925m+Zf4q8+pLlCnW9\nscHqmgvIzTP+6X70rN8y7qxb7RdsDPsw33dq132p280cbwum5VT5VZfvNu+9WLq2lzeYXmRQsKf6\ntU+7uo9p7p0YenGU7nD6po6W8mXTavy/LVNtJcsybJE/e/d27q7HUNPEjL56bP4dv8S1nTWKbt77\nvm+ZGo5pcnKfY5fThGJh2tk9veJbfZt/ztvZn+6tb+m6fM0e/wAnLK+1VZtvzUlvYbbjZ9mVdzf9\n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\ncJM02397uf8AhrKMuY9WjL3tTkbqxdXld081flVPk+aqc2nwwq3kq3+wtdPdafDLveHdG/8Aeb5t\n1ZeoWKRp/eO9W3baXN759Rg8UYNva/MiCBiY/v8Anfeb/drU0mH9586ZX/nn/FTb7yZJP9fJ8vyq\n0f8AFRYyT27D7NC2Pm3bm+bdWXKj6TD4ilKBu2sbx26oltsdlb7zbalhDtMf3ezb/wAtEX5W/wCB\nVU0+6M0J3o2z727+LdV2w3+WEd9m5/njZvlbb/drTm5TzcyxUeX3S3YwpJvKTNFufc+6rSxwrHut\nn2r/AAKqfdqBY9sDzPcQ7V/hVP4qsR+crM9tCqq3y1rGU4+8fEYzEe2lygv7jy/tP323Oq19o/8A\nBS9C/wACNKKkBl8WwFSemfst1Xxxb27tHxbKzx7lik3bmr7O/wCCkUaSfA3SxITtHiuAsB3/ANGu\nfzr8s44qf8Zxw9L/AKeVfypn43xjGUuKsoVt5VPygfCF3b7VdLlPkk+ZGWoI9NSV/kRmGxdi7/lW\ntO4sXkWQ7GTazfNJ8tWNN0V7eP7S6ZWbb93/AJaMtfrX1iXL7x9p9XnGRnw2eVe2mmbGzft/u/3a\nsNp7tiF0ZG/iZmrVXT/lXcixKz/xJ8u3/eq4mkwyM0LzKrb90S/wtXB7R8+/um9OjLmszkLzSYY7\nd7mY7V2/NGz/AHq4j4P+NYdH8SeO5nha2Vp4V3Q7WVty7V/3Wrq/idqj6TqEemwoyssTP+7f+7Xz\np4b8UPpvijxJZzJMWvrVm8uOX/lorfLX2+SUKlPDe1f2j4PiCvGeL9nH7JW+KV59n8ZXMLxyReZK\nzeZJ95q8+8WSPY30V5D5h3Nt/eVtePNa+2XFvreyTO3ZK0j7tzf3q5/WribUrP7S8ylGRm2/3v8A\nZr3IylI8L3TlPF2oTTaozptCsn3qzrySFbYzTbfl+4rfxUniK4VZN7p8+2ud1rVnkh8k7g397+9V\n/aKH+Il84iZ0wrf3axIpvJZofmrZgc3uijzDny2rMkj3Sb4PvUfCEfeIpP3f393+9TJB5kf3OP71\nSXCBl+5yv8NQTcMqb9w/urRI05eaRAx29ak2Oyq9RuN5yaVfu7PMpc0S+VCx7Nxy3SrWmSPHL9/7\n38NU6ktWCzLu6UhSidJbSSeTs7L/ABU2RXjZtnzbvvVHZzPJDsTbT93k4RUyn+1T93cxG/eOzO1v\n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\nsjjZu+X71Mvptuz+JF+Z2X+9UP2zzj9ptpF+X7i7vm21rGUj16NOMhGm/wBHCFJA/wB7bJ/CtMms\n0hX/AJZszfOn+1TFmtpoRsTKxptTdSeZD52Uf7q7V/iZq1p/EceOp9Ty7VbB7G4dE/hT72za1Ys0\njtvjQYP/ADzr1LxN4V8xVn2Kv8Xy/erjtZ8KTWcnnJt/ef7NfSU8R0PxfEYaUdTntLuJrNt8KMfk\n27f96us0XULpow+/dtXbtVP++qyI9NmiZd+0My1t6TYzRypawpj7rM33f96ipWOajS5Ze8db4fkh\njVbmZ2+b5dqt92u20nUsSfI7PuT738VcBpdi8MbPG/nfxJXV6be/ZofO34eP76rXnVPelzcx7OFj\n7P3ju9FvprPbvRW/vtXX6FrCXCr/AKtF2fxfLXl1jqUMkaJbeYp3q3zPW1Z69LtV7l4dm/a275ZG\nb+GuKpRlKZ6lHEcp6WurW00LeSkgj3fKyptXdUd1qiLN882xG+4y/wB5a5LS/EEzRu7u2z7qNH8y\n7qh1bXXt7rf9p+b+Bo3+X/d21jHDz7ndHFc0feOg1a+jWT98/LfKjfe3VkX148h2PMxP92P7u6sa\n68TOc/adrfwov8VUf7etpt8iOzlX+Tb91aqVGXL75p9cpRloaN5ffNLDN95W+dvu7VrIuryGZ879\npZfvM/8AFUGpeILaFd/nSfN8vlt/6FWXeX0zN9xXbfu+b5af1X3YlSzKKL7XF5dK1sky/N83mMi1\nXWN2YQwouPlWVf7tMtbzbHKnnblVNz/3qs2O9pR8iun91vlqJRlHTlOeWO9pqzV0tfs6hE+Z2b5m\nb5vl/hrdsbM+W3nIwjjfKNv3bmrH0t0WHzPtKpL/AM82+81asMsKzJC7s7Qv8393c1efKpLnNIYr\nmhymxpP7yR4ekke1n877rbq27MJcKU8lklZP4X+Va5u1vJrdVTyM7m3JV6G4k8n/AI+WZ1b/AHa5\nq1P97znbh+aUpSOhtbqG+j2edGd331b7y7a+zP28XiT4SaWJQMN4liAycc/ZrmvhqG/eSSLZbbdv\n8P3fmr7d/wCCgVybX4NaZIIlcnxNCBuOMf6Pc81+ScaxcOMsia/nq/lTPhOK1y8X5L/jqflA+ZLW\n4hk2wj5Ek/hZvu/7VasLW0zb4PnSNNv95q4iHVkhZnM+f73ybm/75rVtdVdXR4V4Xav/AAGv0+MY\n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\nvtkuZEXzdyqrblrnNY0WaNmTyfMSH5v3f/s1dNGtKXxH5hiMPC55jceHYZGDp8wV9su5P7tW9Pt4\nY4V2bQzP8jN95lrpL3T5riT59ztGm2X91tqvb2cMMxhe2XG/Kt/FWn1j3fiOP6vKNX3SGzsZFb9z\nDvDfNtrStbGbcu+LIb7+1/lWp1j8mzCIm1o/m+X+Ld/eqSCaYW8R+zM/8P3KUanNGyNI0+X4iaPZ\nC3kw7f3jf3fu0LPDCwR5vl37t392s1vOjl8mGdj8/wB7f92i4uv3zujq6fx7fu7dtaU4395SM5VI\nm9Hqzx7fJTZ/teb8rLVDUtcuVDPNMzL/AA7qwf7Qmb5JkZ5WRV+V/l/2aLy48lgn2n7vy/draMYx\n0MpVJcvxF9tYnvGZ5rn5f4V37tzVJHqTyK9y9yqeX91W/irnW1JI5j5brTP7URVeGby3i2q6R1pK\nnzQsc3tpxkbsmpOq/anvF+Zv3Ucm35v9moI5kupHuZpmZ1+9tesua8S4kSa5Xem7918u7a1Tw3SR\nyF96qnyr8v8ADWVTlUCI4iUo6m3aum9YYfMQf7P3WrSt1dUXUk2v8/7qNl2qtY9ncJ8qJy2/c+2r\n0N3DJ+9mdmXeq/u1rza0pOXNA7acubc6fT5N00dtszK3y7ZP/Qt1XZLpFm8l5l3b9y1zFvqT/ax5\nMzStsZfm+Vavzah837sSZX+HburyK3P7e/LoevQ5JRN2HU3dfO8pY2X5fmepGuPtCpClyqNs/e+Y\n/wAzLXMyah5kwT78TN8219rLVv7XMzfvjvWP/wAerLllKPMerTrcvuo6e31a2hhhT5pX/vf3v9qv\nuv8A4KQ366f8ENJleLeG8WQLt+trdV+fEeobY4k+438Db/lX+9X3z/wVCu4LP4BaPJPLsz4xtwrc\n9fst0R0+lflPGtNrjPIe3PV/KmfC8WTvxZkrv9up+UD4zbXJl+SzhjVfveYrfMtWtO1p42LpMpDR\nfMzfNXIR3XmTfvH3hl+Zl+VatR6n5NwERP4P4a/WFT5tj9E55KRJ8bPHj6D4BvLmG8aOWSDykaP5\nm+avjbWrp4ZG+dnT73zfer2T9oTxpNqGtJ4ehfy7e3i3S7fvf71eM6sySM3dV3f7zL/tV97keH+r\n4Xml9o/NOJcZ9bx3LHaJyvi2L7RalNm/cv3a5fR9Y2q1hNIyj7u3+7XT68u7d96VfK27vu7a4PxB\n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\nu/LU1tp+795sUfxbVWp5UORDHHt+d92V+6uyrml6XLfAbE+7/FVi1s5ribZ5H3vl3KlddoOgwxwD\n+Jdn9z+Kuimclcz9J8MvLl4f4V2/N/E1blr4Z3TbEmaUx/Mv+9XSeH/CkNxJ9o8jj7yLs/irobHw\nik0Y2Kqu3zblWrlE4vafynE22i3MK7PJZm/g2p92tVNPmt8edNsZV3f7O2u3bwnf2rRulszM0Xze\nX92qF94TMavM6Rjy/urIrN8zfw1nUjzfCbR5/tD9Wa/adn8lcMvz/wB2sCa/m+1H51xs/uV0d9HM\n0MrzFl3Pt2t/DXL6lDDbt8779392voY4WHJ5nFHFS5iWHVjbtGmyT5vm8z73zVu6fr3l242O3yvu\n2t/drkVnSFT95H+VUZqtJdTFAifeX5ty1Ty+MvsmscdKOp3f/CUPI29Jo96orIq/+zf7VWo/Ejze\na6XO/an+r/8AZq4CG/mRWd+DN9xvvVN9s2M298SK67FX+7RSyvmi7FSzC8LncQ+Lv9WgdmX+Py3+\nZv8AZpj6g8is5mhXc/3ZG2yf73+1XLW+oC623M6eW7fK6t/7LWrpaxxS/wCk7SrfKka/eVa0/s3l\nMvr3MbC3C3s2yFFD/dVm/iqa3t7lZIvOuVcN8rwqn8NV7ezhXytjthX3Izf3q2rWzX7ULaZ2x95m\n2Vay/lOf657xd0exmkmj+dW2/Mi79rbv9qumtdJKsIXeNn+98r7lXdUOg6P+5aZ0jZF+42z5ttdh\npGnpax+TMjNFJtbdJ96pjg77DljOWPvGHH4bTy2eSH545fkbyvvf7LVch8PzCP8AfI3+q3bo/uq3\n92ui+xw7fJk+Z/NXymb+FauLovzO8KLv+b5mqo0OWJP1jmOUm026urhXm2od33pP7tUNY0na2+H5\nvMX733l3V111pHlxvNs2lZf4n3bv9qsfUrGGPZ5Ls+7czL/FVRwvu8wvrnvHA6xZ7Yc/ciZGV/4q\n5m8h8yH9xuG5NjMyf+PV3viCH92uxFXbubatcXqcbwhpHdjK33/3X3a1p4fsOpiOU4/WrfdIf3Ox\nF+VmZ/vf3a56+haPa7vuX5VdVrrNatd0zQ+Tvj2fPt+7urndQjdmSQ22759u7d/7LXTHA8sbKJhH\nES+Iy/ImZWfeyMzfer9B/wDgvLDLcfsZaRBEQN/j+0DZ9PsN9mvz+23P2j59p+T5o/7tfoH/AMF3\n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\njzM6I7ZV9u2tvw1I6zeTcuqqv3FZ/vVz6tBNJsT5dqbqvaTqD2rq77W2v/c3fLWNRe77pvzcp7T4\nHunjgV7yaNnV1+7/ABL/ALVe3/D+8doYXmdXdfn8xfm3V84+CtaSM/ZkmVWj/ib+LdXsXgLxAlvL\nbwvMxST5vlb5VWueXPLUmXwnr+m3j3Vx9mubbcPvfaFSttredk/1LOV+aJm/9mrj/DurabcbHhuW\n3LLsRt/+d1dHpOpQqwR7ba/mtukb5d1Yy5vdfKcXumjZbNx86T/f/wBmkjjkhmZ0myPuRR/w024u\nHmhVbb5fvfNVDUtbe1h8l5o2k27tv3VrT2kdwPinUr50ZrZHXaz/ADs38NItu99cGaZ22xrulZdr\nbmrDGpXNwvyXKlWf7v8AEzV0Hh23kUpcvD919z+W3mKrV+qxxXunyVPC+7c1dH0fc2Niuu1flauk\n0/w7Gqpcuke5V+7TNHsknmV158tPnkk+XdXT6bY7Yw72ylP+en/j1ctbHSlHSR2SwvwmcvhO2uNj\nx2zBI/m/4FS3HgtFy9ydu1/ljb7ys392u00fT5poRM+5hIu5G+7/AOO0TafbRloQVUfKit977v3t\n1cUswlGV+YxlhIxPO7zQ4Y40mJYmbcnzfeh/3qzL3SUa4H2PdGrfdZn3fw13+o6W7SNbQ+YE27lZ\nl+Vt1YmpaX9jy8Ntimsw9pvImOFlDY5ZXht7hEdFcL/e+8zUR3W3zHfzFT/ZSrd1ZzWsk2x/nml3\nIzf3azrya2kgPk/cVdrrt+9SliveNPqfcvWOtPp+N+7f919z/wANWbPxMlvI+ybcP7rVyVxcpb26\n2qbdsf8AdRvl/wB2oG1p1jSJ/k3fLuVK0ljubYyhhe53reLkmjdw67V2/LTG8XQWbEJub59rNv8A\n4q4Btc8qNn3su1PkZqzZPFm2NbnfJsmXcytVfXOcpYeUT0+bxl5cOyzvJvN+78zfe/2az7zxJbTM\nZkmZjJ/ra8yuPGybW/fMflb5V/i2/wANXrHxBc3EIeSeMMy/db+Kn9YiqVmKWHnGXunbLqUMzNM9\nzJtVfm+b7y1HPqPzD52fzE27Vf7tctY6w6rvtpmbzNyMrJ/6DWjb3KbldPLYb1X5flZm2/xVEsZy\nx5UXHDXleZo7nkjTzvM/uszfN5dI2+RmTezbU+X5f4qhs2hk23KTf3kb5/lqyykSI/y7Y4tu5fu1\nnUxnKdEcPKRUuI4XbeifL8v3m3fNX2n/AMF5lU/sLGR4ywj8VQtgH/pyvK+Mb6PzI0gh+ZmRv3i/\ndr7X/wCC6Nobv9h2RSoKx+JYpHXuQLO8PHvX4B4sYj23iPwlrtUxH5UTxcfQVPN8H5yl+h+EmrR+\ndYr8zNuRWRWX/ZrlriF7W43p/ertdaX7HpsU3mNtZfl3f7tcNqFx50pP8W6v1b3T7KPxBDqk0Lq6\nzN8tdL4f+I+v6fMjw6lJuX7jbq5BULNtq1p9u7NsfcB/eqSuWB6hZ/FzxXNEIbnUmmi2N+7uF8zb\n/wB9UXHibR9QZ/7Y0GxuVaL5NsW3/wBBrhPOmjVkR+Vq1b3T/Kyc7v7v8NVGXLIylsb8mk+Br799\nbaJNb7U3fu5/u1dhuLaSza1h3Ou3b8yfNWJazO4+5tVvmbbWnpczrPvnmbC/3Vq4ilL+Uh1zwreX\nUMWxFaPZ91l+81cfq3gzVdPlO22k2r/d+bbXrWrLba5ouz5kfb8jK+1lrzvVtS8SeHZpLWab93/e\nX+L/AHqn4RxlPmOUKzW7fPwy0+4uvPGyZPmXvW1/wk1hcnZqWlRt/tL96s7WmsAwa2Tll/h/ho5o\nm3xFCiiioLG+X70qrtpaKr4QCiiinHYAooopgFFFFABRRRQAUUUUuVAKq7u9b2mTTW+kl027awVO\nG+f5q6CyjkQRpDtxtXg0SiY1T6L/AOCd+nzab4s1Px4kK/aY7P7LYXDfehkZtzN/3ytf1DfDj40w\n/HH9nfwr8R9D1hZbbVvCtvFcQ+V80c0caxyf+PV/OP4F+Gt/+zvp/hvwTqr7dQvNIh1a/haLa0P2\nhdyr/wB87a/Zf/gh/wDFKHx/8G/F/wAHbzVVkuPC91b6ja2rfNttZv8AWMrf738NdGHlyzPnsVUl\nUlofVkd8/g3ULLR7+88ma+sGngk3/wCsaP8Au14t408D6b40+K0HiiHw9CHjWQSyW8S+a0n96u2/\nbAvNS0fxH4O1vSraR4rWWaB5FX7qyLXEfFr4veDP2cfAL+PPHPiqPS7toma1t1TdPeSbflWFf71d\ntSpCj7xx04zlofDHxdv7Lwt+17Lqt9OsVvp3iKwmnd8ARoghZs9hgA/lXmv7WH7XnjD42XVz4b8E\n3rWuhb2+1XH3ZLj5W/1f91aj+I3j4/E/VNY+IN1p8lsNTaaZoJm+dRgj5j6kDJ+teHePPG1hpeiz\n+RtlZlkbaq/N8qt8zVXFmKlHD4Jxejpp/gj9L4zjJ5flK/6h4flE+MfCljNeeINYuXDFW1eb+P73\nzV2Nu3kr5PzfL/DXG/DeN76zmmmfa81/I+5v9pmrs/JTcmE3Oq/Jz8q/71eRS+A+XfUfNC8kO/Yu\nJPl+ao22L8jwq4+7/u1NcHdD8n/AttUmj27/ADkZlb7u2r+ID1/4A+KPDfgrw34h8Q+IYY5biP7O\nulqzfN5m7c22uM+JXjK88Xaxc+IdSufLT5nePd8qrVDQJENiyPt2L/d/9mrzD4+/Eh7iY+EtKmUL\n/wAvTR/+g14lajKti7HPHD+2q/3Q+HXjR/Ff7TfgVbZ/9Fh8Z6WsQ/vf6XF81e5/8Fbv+af/APcW\n/wDbOvmf9nP/AJOE8Cf9jnpf/pXFX0x/wVu/5p//ANxb/wBs6+6y6EYcMYpR7x/NH6TlUIx4Kxyj\n/NT/APSonxrQW280UjLur5o+OFoooquYAoopPn9qoBaKKKXKgCgNu5pU+8KNqKo2fepRAaowMVoe\nHr99PvPtMfXbtqhWx4I8O3vibxDbaHpsavcXUqxQKzbRuZttPm5feIqe9Cxqza5e6lqiXM0zZ3L9\n771faHwzsPgV46+F/wAN9V/a0h8eXPgnwK9w32Xw7qKt/osknmSwxrJ91pG/iWvmzU/glp3w/wDi\n1/wrXxp8TvD8N3byxrPeafdfa4I5G+bbuX7391q9G/as+KfivX/CGlfs+eGvCOhwXWl2qyXl14fu\nd32i3+6q7f738VZ168ZWgt2ctFa3Z6f/AMFPNT/Zm/aA+COi/Hv9nj4kaD4L8I6JeLpPgP4HWcvm\n3VlZ/wDLS6uWRv8Aj6kb94zN/srur4El37uKdqFleabePYX9s0M0b7ZY5F2srU1mTjfTjGUTtGsN\nslDO7Sb0FIxy3FSW6/Mc/wANBHwmv4R0/wDtLxJpump8pur+3i/76kVa/pe8TrDa2trpriZkh0iz\niWP+H5beNa/nO/Zt8O3Pib48+CPDyQ+c+oeL9NiSFfvf8fC/dr+ibx1ffY/EF5bb9zLKyIzfN8q/\nKtcuIfwxOat0OUurxJrhoXtmTy/7zbVrndUaaNmRPl3bm+at3UGkkaV7lI1XbtZV+ZqwdabzF3vu\nJZfkk+61c0vdiXH4zj/Elv8AarcI5VFXaz7vm2tXDeIlmXels7f7e77tei64sK7/ADhGEjRfN3fe\n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\nAKDSx3zxSfJ8m7+FWrMa6e3VNiK23arr97dU26Zm2JJHhdzO2yo5eU2lI7fwrrv2dvLe5Vw1emeC\n/FSQ2ohmufn2fKsn3tu6vB9L1Z44RND8m35v+BV1Gk+JkVVe52r8v+sX5vmqJR+1EyqSjyn074X8\nVbV+zedlGT/Vt91W/hrrtN8VFlxc3LSCNtyRq38P8VfN+h+OvJ/dzTbVZflbd81dlpfjf5kSGb7v\nzrI38VRKPc5JS949r/4TR4bMwQosifegXftZv9msfVvGTvHK/lrsb7/8X8P3a8+m8cPIw2XWW/vb\n9q1h6t8QPLiaa5mWJm+8vmtWUqfNEXNCJ5Ho+oeZJHvSNV/jj3fKtdr4ZkjjjJSONF3bWhj+Xd/t\nLXmmizWccbTTTfu9+35fvNur0Lwu32ZYn3/d+XdJ/F/vV9ZWxXL8JhTw8fhO58O/JCsIjVNyfdb7\n1ddoMiYZHTy2+7FHsritLjhnkExdZtv35N/8P92um0u5aGNJrr5UVtyfNubb/DXHLFSlqbSoxO10\neaZm/wBJm/u7JNu2rs1qjZuYQuybd5q7/wDx6szRbi2+yb4JmmaP5nX+GtKO3S82pMcFk3eWv3Vr\niqYocaRn6pZuqo+zeYUZtqvuVqwNXtnk+5bSK0m35f8AZrs1VPLSN3/e/MvkslY+sWbr5ttDNu3P\n+6j/APsq5vr0YyKjheaWh554mjSVmubban73ZuX5q5fUZptrQJ8p/vbK7nXLOGBXj85Wbezfd3Lu\nrldQtYPlmhdmlb5W+X5W3f7VV9el3CWF974TjtWvoYv+XZWeNNrSfMv/AAKuZm1h2kVPtLZXcrt9\n1a6bxJapHbtC7soX5drfxV5/rn+jXTp8zP8Ae2s/yr8tdVHGe0OepQlEs3XiKa3VHd/3qtt+X/0K\nsfUtcu4/3jzM3z/dqjNrk1vcfIi/c+fdWTretQyxs79VrqjiP5TCVHlNWz1SNrhnm3Ntdtv+zXTa\nHfR+Wjvu2feRZK8z03Uo/tG/zm+b5q7fwnqU/l+T52Xb7isn3ar2yD2fwnZWcyRsj37qqf3l/h3V\nr6e32fZD/rG+8vmf3awdPmn+0RPNMrrs3PtSt6wuvJbznfn+7s/irCVbll8RtGP8xsaX5KlU+88n\n3of9n+9VltkjM+xSrfeX+H/ZqnYrNcMzvtaLbu+X+Gr0bIsLTf8ALuv93727/drmljJfaNqdMjk8\niOLekOyX7zbd21f9mvt//gt5HHL+xS0MhI3+JIlU4yATZ3g5HcV8UTXDx2bOkLD5f4q+1v8Agt9c\nNafsSvdLbiQx+JYGyWxs/wBFuvmr8O8SK8qniLwu+1Sv+VI+ezulyZxgV5y/9tPwj+Kl9DZ29vYQ\no3yr83+9XAM38dbfj3WX1fWXmR8isvTtPmvrkRRoxr9wjE+kj7sbhY2/nygbe9b1vp7w2/B3M1bO\ng+BX+y75E2u1Q6+0OlwsiDJ3bavl5TPmjIxv33nMjupO/wC7WhpNqm754WrDuNURmOxG+Wki8TXl\nvIHR+KXwi9+R3lnojyf6naE+9u/i/wB2pI9Njt1i33Knb8zs38NcpY/EK/DeTO+1W++y1c1rTLnV\n4vPsdaDI23YgpylzClHlOuF5YSL9j/tKEj/rrUV9pMOuWv2aYK8ez5JF+avO5vDWuxMXhDOF/iV6\nm0xPHdsv+hw3RVfm2/w1MecqMY7lXxLoNxouovCfu7vlrKkZ87Grc1vWdSuBs1WxIdV/5aJ/FWHM\n7yNuakaxFopFbPBpav4ihv3/AGxSMu2nKu2hl3VAC0UUVcZAFFIrZ4NLRHYApeVNN53b91LUAAbd\nzRSKu2lrQAooooAfHHukXf0avW/2VvA2m/EX46eFvBmq7fsE2qRy37M/3YY28xv/AEGvKLH95IN/\nG2vev2WfDepWV5P4wsJZEmX91ayMn3W/i2/8BqZe77xx4qShE+sv2ttY/wCEm+M0/iq2mV7aZVit\n2V/uwrtVV/4Dtr7F/wCDf74jWfhL9q7WvDd5qvlL4i8HzQMsn7xZGjbctfn7pdrc3V5/aXiR8xwp\n92RPvN/er3f9gH9oCH9nv4+W3xatoVuIdJsrj/R5H2rM0ke1VrGnUtLnkeI5c5+wv7ZX7SnwZ+G/\nwz/4TDx7ryxLp9xG1rZx/wCtvJl/5ZrX5F/tFftQfEP9pLxxJ4w1hJokjdl021uLjdFZx/dXy1/3\nfvVmfH74jfEj9pD4gXvxF+KPxFjkVrpv7I8P2cXl21jD/Cq/3m/vNXmcmi6Pasz/ANvXU6MrblWX\n5V3f3a48Zjp1fQuMfZnqOlRFvhnLDe3ivmxuBJNG3GPnzg+39K8h8dah4S0DwXqjpNG5a1mbdGm5\nmby69T8L29lZ/Bt4IogIF0+7+QtnK5kJrw341eILXRfhnqt/ZwqhXS5otrL8vzLtr3eKFz4fLWv+\nfMfyR+gcX64PKV/1Dw/KJ86fDO3ePw7BN5PMm5tzf71dTJvhzsT5fvfN/FXP+B/9B8M2cKQ/6yJd\nm1q2lmeWP998p/utXPCOh8pU+ImjjS3jaZJmK7F2rVSS48kF5Plb723+GoLrXLaPMP2nZtfbtasa\n+8RIvyQ7Sn96l9rQXLGRqeIviU/g3wfdJbJH9ouG/dTfxL/u14TeXc1/dSXly7O8jbnZq6D4iatL\nfXsMH2reiqx2BuFaubqY04xlKR2UafLE7L9nP/k4TwJ/2Oel/wDpXFX0x/wVu/5p/wD9xb/2zr5n\n/Zz/AOThPAn/AGOel/8ApXFX0x/wVu/5p/8A9xb/ANs6+nwX/JNYr/FH80fcZZ/yReP/AMUP/Son\nxrRRRXyx8WFFFFACMMjiloorQBFXbS0UFd3FT9oAooZfmye1FPlQCt+7au1+BWr6bo/jb7Zf7d/2\nC4W1Zv8AlnN5fytXE0b3Vg6Nyv8AdqZRJ5UbUWnzLdPc3k2597M0m/7zf3quW8F42rrq763J5i7d\nszP8/wD31WENVuQhTPBqM31y38bCr9zlMOSrzXub3xDvbLVtcTUbYbpZrZWum37t0n96sBd67t9G\n4NIzvTJF+bmp5TeO4L8nCPU0bKmE6bv71RbTu+SrEMM0mfumpJaufS3/AASn8K/8Jh+338LdKmto\n5IYfEa3T+Z/0xjaT/wBlr9w/Fd1CLyWZ33edcMySL/eavyN/4IS+CpNY/besfEkyRvD4b8L6hes0\nn/LNmj8uP/gXzV+sd9Ntt/kfeJPvKz/xf71ediJe8Yv3nymRdN+7d/m+V/7n3qyNSie4ZY3s22sv\n975lrS1BrZbqSGO8Zwvzbf8A2VarXiw3UaTfbP3f/LKNflaSubm6s6oR945XVrVxG6PbZf8A5a7n\n+Vv96uS1LSUhYiZ23yP8vlv81d/qcJaRke2XLbvNb+Jq5i8sZppJSzyJMqfJtiX5f9ms5e9E6qcT\nzTVNHcRo6Iqtt2urL92sSTT3jZ7Peqn7zbl/75r0DUrFBueZY5TMrK23+GsO6tLZQ1s88hRtvzNV\n/YOnlOVW3uo4/J2fMsv72T+FarFZlZJ98ed27zFb5q3NUtUWHfbQt838O/5WrNuP3yt9p3IJNv3f\nm2tXLKjKUtS170feM2SZJVdEdkZpd25futt/hr7f/wCCZgI+BOsKUxjxfPz6/wCi2vPvXxFJHtaV\n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\n/wDj1ee+KPDbrumRFLLuVGb+7/dr6/C+9HU+IxUZc/wnlEmkzRzNC8K7q7b4f2sMl8qXj+X8mxd3\n+7UMmiwrOHdF37v4m+7XReDdLmWbf23rsWvYj7sDx6z7HZeHdN8ny2fyxt+VW/vV2vh2ztmsykaS\nHc+3dIn3lrH8Pwu0kcMI+dvu12Wh6a8d0zuikyLu/wB2uWQR93QrWenwiZtj7hJu31YhhSOGaG2f\nzZm2qjM+1dtaVxZu0zwvCuz7u5fu1FYWsNvumvF2Q/eaRk3bdtcdWnGWjOynLljzEniKzfwn4Tl8\nc3KKyw/urfcv3pP92voz/g4GRW/Ym0VpIDIq/EaxZlAzkfYr6vk/9qTVnb+xPDsbzfZPs/n+WrbV\nk+X5Wr63/wCC+8dxL+xHpyWgJk/4Tu12BRk5+w31fi3iDCMPEPhZf9Pa/wCVI+Yzip7TOMF25pf+\n2n45+JviFNofhs2ulPs3Lt2x15DeWuta3e/aphJI0jfxV1Ta9pv2iKHU+V3L5qt/6DXsfwu8ffs0\n6PCH8VeFbi8l8raixsq7f92v3OPKpXkfSS9rH4D5/wBN+HPiHULhE+xvhm27tlddL8ONF+H1n9v8\neSeTNs/0ezX5pJG/vN/dr174hftIfD3SbO4sPg98PbW2m8rbb3l187r/ALq/3q+bvFF14h8QatLq\nus3M000j7mkmatfaR2gKn7WWtQl1zxN/bV4ttDttrb+COH7tQMqbWS2/76rJWN9x+RhRHJcq2yN2\nqNfiNuX+UvJZlW+d1ct/eqwtvDCux32t96qEM0zN8/y7fldqvW7PMy/e2/3m/iqjOXulu3td0Y8z\nrXcfDXQ4Lq4abZ86xMyLt/irkbE2y/O78t/DXf8Age6/s2MO/wAiM3zs1KK5SeX2m4y88P21jm81\nKZlTzd27dXDazrU2u6t9gs5pPJjf5F/hWuh+JniIaxeyab4c3GST7+1/lVawrfwvqXhvw9N4hubZ\ni4X5G/u0x/DI5vxQ0J1hvI/hVQ/+9WbvX1p80jyuzzNlmfczVEy7aDoQ+iims2G49KBjqKKKXxAI\nq45NLRRR8QBRRRRyoBFXbS0qru5TpQy7TimAY249f4qlt4/3io/FRLwu+rOnIJJgnks5Zv4aXMiJ\nS5UftF/waW6JeeHfi18RfGGzamqeDZrJmZFZfLh2yfe/vbmr76+OUk2jeLnvHdvKml2QMqbVVq+P\n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\nf4dvzbf9mp4ftKr5zn5G/iV/vf71MwqR5veIpLXzJPkTcu7+L5adHbw/Nbfd/ubamkj8lmd02bfv\nfxUNb7pN6Ozf3G2bflropy+yeNiqc+a5VlRVjXcfl3Ns3VRvFRYWfYvzVpXSo2zzNrfN91X/AIqo\nXkKW8n7vbtk/hrXm933TljH3vePN45Nred5zbmf5Vq1Z3HmRs8yMPLXbu3/erN+0TSSI/ULVu1k3\nR/I7Lt/iavLj8J7cDZs7942CbF2qv8Lfd/3qvWd55LLMkzbv7yvWBZ3T+c1s6f6xd1aNo23CQx8f\nd2/xUvscpvTlzHYaT4keT5EmkLL92u28O6lqBVdki4k+Xa38Neb+H1fzn8yHd/wPbXa+G7ry23wX\nMaOrr95a8rGR/lPoMD71rno3h26m8zZNcsu1NsX93dXceHYnvJC/2zfKq7XXZuVq880O6RVHlou5\npV+0SSJub/gNeh+FJk/dI+5X3fJ5a181iKfLGXMfWYOXwo7HT4XkjR5uFZfkVU+XdWgsKJIsOxlP\n3k/2VqLw7bvHHF5w+Zfm2/3q6GOGZfnyrq3zeWv8NebDmjOx63LHl5jm76xSCJZrZFWRd37yR6wN\nQt/LtxNeW375nZlZW3fxV2OqadCzN/Au3d9zdtrH1i1hWEQ/ZlLqv3lX7y17WF/d7Hh5gubWxwmt\nW+63mTYvms+373ytXE+ItDtpoWTyVTzPu7fm216X4m0lLWTZND87fws23y65q+sYVt3hto2Mrfc/\nir6vCSjy8yPh8dHml7x5bfeH0SYPMm1N+7c33WWtrSdJTzNnkqWb5kb+Hb/DWvcaCk0m+aHYirtl\nVvu1Y0zT0hiDwoodv4v4dte7CXNC0j5TEaVbo3PD+lsix3LosW7/AMd/2q63TbObc3yW+9UVd275\nmrnNLaGHykdN275d0f8A7NXR6TIlwwS2dm3f+Pf7tYy/uii+UsrGLxTNlkRfllVfl27a5LxX4403\nWLi503RppGgsdqyxxy/6xv4v+BUfFv4jQeA/D8xs7mE39xEyRQr/AMs/l+9XnfwjM0Oj/wBq3nmF\ntUlZ4mb5d395qwlz850VJe6dd8ep31jwn4O8cwzMdP1rTt8X2hdzRsu5dv8As7dtfav/AAXekRP2\nP9BVxkN8RLQD/wAAL8/0r4K8Xak958F7/wADanqTNc+DdWmn07d/y0t5Pm2r/s195f8ABeJ4o/2Q\n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\n8k+827+8q197XEk0cJmMDf7v92vgc9xcqmM5Pso/QOHMv9nhPbS+0Zd5dFf9GmdX3S7E3N826s+4\nuHjLQ2ybv4n3fdq1fTPCsyJCwT5WfcnzbqqTL5jOmyOXdt/3vu/drxvby5/7p6lbCxqcyZPZw/MP\n9Tv/APQastH9li/f7RG3937y1nxslvMieS33dztv/iq4l1ugX7TDtT7zru+7XbTx/tDyamB5djPv\nvlaO58jcGfbtZvmZa5y8jtlhUuV3+a3y7/vbm+7urqdcuraSMzTP/HtXb/DXK6tdQq0mLzlfuLs/\n8er3sDiO54uOwzjuV7qSH7Pv6tG/yqv8P+zVZtReONv9Zuk+/UF5qVszF3diknzI38LLWHfaw8dx\n5KO2N+1vl+Va9unUj/MeBUjOJfvtWCyeT5zI+z/nr81YmratuJhCKr7t3+t3K1ZM18/nN9p+XdLt\n2r93bWXfX3l3bJ9pX/pkrf8AxVavYx5i1qF4dvmWyLG7L+92/Nur7d/4Je3C3P7P+rMu75fF9wp3\nHP8Ay62lfAc2sBtqXKbGbd8q/K+6vvL/AIJUTrP+z5rZRSAnjW5QEnOcWlmM1+J+P0Irw9m1/wA/\nKf5s+c4snfJmv7yPg+4vkhkEYGVVWZ/9lqoX11cx6bcu6ea/lf8AAv8AeamR3kNxMZn+VZNzbV+7\nHWX4svEs9Dub9LnY7Iy/K+35f7tfr06cef4T7CnW5YHy9+0V4sTRZpYV/wBdcKyozf8ALP8A3a8Y\n1SP7VHHc787k3bq3v2hPFH9ueMpIYV2xRt8nz1zml3D3Gm+S/wDDXr83LCNjhl73vFKNfKYps/jo\nkjG7e74q3JabUfYjMf49v8NQyL91Nmf9qtPc+Ikgb93j+KlhkdpN/nfL/dqCSR1U9/nqJpHVagqM\neY19Njea6XZNw38NbE2lu/8Aq0rntLvPs8yu74rqtL1y2lt/L+6f71V9ozlsZtxoT/O6I3/Aqrf2\nbeQuudu//ZrpPMT5f4v9mpo7e2Zf9R8y0+VBzGFpuqaxZ7U85lZX+Sum0fxtqsPyTBgWf52b5qzm\nghZd+xflf7rU5ZfJ+5D977lHLKIpSO90vULPWI/Jum8p5F2vIvytXSaVZa3bSRxWd+0oZNv3/l/4\nFXl+n/afOT+997czV634D1j+x9DfVdV+5t+Vf/ZaPhgTLl5uY8//AGlfC1zNpFtrY2sYfll2t93/\n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\nD5bP83ypudY/vbv71c3q1zi387exLbvmb+JlqTUvECTRvbIilpE+9G1YF9rkMjb03NJt/if5a9Wn\nzS5TyKnITX2qPNHHNDtbbF97+Ja/Qf8A4JKPv/Zx1rE/mY8a3PzZz/y52dfm0upQyfcdt3+y/wAt\nfoz/AMEe5PM/Zn1w7GXHjq6+93/0Oy5r8b+kCreHVT/r5T/Nny3FTvlTfmj89re58zZ9mm3LNK3y\n/wB2uW+LOqTQ+Gbn7G+3dFt/3a0obw28Z+8pbds2/wDoVeffFLxVDbtJps213mTd5bf7tftHLLmP\npoylI+UfHSvJrlxcv99pW+ZqoaNefZpmL/datTxtvk1iV3+4z7q59ZTFOrJ8wV91dEY+7ymkTp/J\nkjV38nG7+9WVfSPHhH3Y/wBmtCG8S6sU3zfe/u1mXnzbnR2Lf3ar+6Ry++U5Gy3u1RyY/g+7Ukkj\nswTYtRbTu+SpNIg29pPMd8GrFrqE0Lb/ADm2/wB2omhmYb/vUpt3X5O/+1Vf4gNyw8UOijem4f7V\nben+I3kZoU2ruriI43b5NjVdtfNjZZtjf7tLm5SZHZeZ9obfsVW+7tqeytd2Zsq/+zWPo94nkL87\nH/erb0+8QN5KJ97+Ja15uaJiafh3T/t1x9m2bPnVV3f3a6/4gf2lHpNtoltayBIYt0rf+g1zfhO7\nhj1KFLnanzbXZv8Aer1S+bTW0dtVSH7YWiVWVnp8xHNHnPCNem+z2svyYTZ8y7a84mYtMX2Y3V7n\n4/j8N6tapbQ2EltIy7vL+9Xj3iLw/NpVxvSFvKb5qj4fiNqcrmVSqz7tlJToVQSLv3UHSa/h218x\n/kHP8VWvGEwjjhs0udyL822p/DFskamZ3XGzd92sPXL57y/d96srP95aX2zHl5plMnzGrR0+aeO3\nOx/mrPjH7zD1s6SsKxsNn/AmqAkXtLvHe1MLvvdqbqU1zb7tnziordU8w+S/zLUupfvpxCjtv2f8\nBoI+H3kV9P1a5uG8n7v8PzVfurxLeNn2bf4dy1Hb2MNrGZKjvmSSEwvyfvfLWgub3x1vqW6RXeZc\nN/DWxYpuhlmhdii1ztvp73TLhPu11WgzPZ27o6KEZPmVaA+IzZL77L7q33qI7hJ1Pl7R/ElWtUsb\nZm3pG23ft+7VKPS3jmZN+0M+1Kr4hfEMXWE8zy3fO3+9WjDveH7T03fcrMt9JRm2fKSv3/7taMdw\n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\n", - "text/plain": [ - "" - ] - }, - "execution_count": 26, - "metadata": { - "image/jpeg": { - "width": 600 + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" }, - "tags": [] - }, - "output_type": "execute_result" - } - ], - "source": [ - "!python3 detect.py\n", - "Image(filename='output/zidane.jpg', width=600)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "ijTFlKcp6JVy" - }, - "source": [ - "Run `train.py` to train YOLOv3-SPP starting from a darknet53 backbone:" - ] - }, - { - "cell_type": "code", - "execution_count": 0, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "Mupsoa0lzSPo" - }, - "outputs": [], - "source": [ - "!python3 train.py --data data/coco_64img.data --img-size 320 --epochs 3 --nosave" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "0eq1SMWl6Sfn" - }, - "source": [ - "Run `test.py` to evaluate the performance of a trained darknet or PyTorch model:" - ] - }, - { - "cell_type": "code", - "execution_count": 0, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 1000 - }, - "colab_type": "code", - "id": "0v0RFtO-WG9o", - "outputId": "6791f795-cb10-4da3-932f-c4ac47574601" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Namespace(batch_size=16, cfg='cfg/yolov3-spp.cfg', conf_thres=0.001, data='data/coco.data', img_size=416, iou_thres=0.5, nms_thres=0.5, save_json=True, weights='weights/yolov3-spp.weights')\n", - "Using CUDA device0 _CudaDeviceProperties(name='Tesla K80', total_memory=11441MB)\n", - "\n", - "Downloading https://pjreddie.com/media/files/yolov3-spp.weights\n", - " % Total % Received % Xferd Average Speed Time Time Time Current\n", - " Dload Upload Total Spent Left Speed\n", - "100 240M 100 240M 0 0 17.9M 0 0:00:13 0:00:13 --:--:-- 20.3M\n", - " Class Images Targets P R mAP F1: 100% 313/313 [11:14<00:00, 3.02s/it]\n", - " all 5e+03 3.58e+04 0.107 0.749 0.557 0.182\n", - " person 5e+03 1.09e+04 0.138 0.846 0.723 0.238\n", - " bicycle 5e+03 316 0.0663 0.696 0.474 0.121\n", - " car 5e+03 1.67e+03 0.0682 0.781 0.586 0.125\n", - " motorcycle 5e+03 391 0.149 0.785 0.657 0.25\n", - " airplane 5e+03 131 0.17 0.931 0.853 0.287\n", - " bus 5e+03 261 0.177 0.824 0.778 0.291\n", - " train 5e+03 212 0.18 0.892 0.832 0.3\n", - " truck 5e+03 352 0.106 0.656 0.497 0.183\n", - " boat 5e+03 475 0.0851 0.724 0.483 0.152\n", - " traffic light 5e+03 516 0.0448 0.723 0.485 0.0844\n", - " fire hydrant 5e+03 83 0.183 0.904 0.861 0.304\n", - " stop sign 5e+03 84 0.0838 0.881 0.791 0.153\n", - " parking meter 5e+03 59 0.066 0.627 0.508 0.119\n", - " bench 5e+03 473 0.0329 0.609 0.338 0.0625\n", - " bird 5e+03 469 0.0836 0.623 0.47 0.147\n", - " cat 5e+03 195 0.275 0.821 0.735 0.412\n", - " dog 5e+03 223 0.219 0.834 0.771 0.347\n", - " horse 5e+03 305 0.149 0.872 0.806 0.254\n", - " sheep 5e+03 321 0.199 0.822 0.693 0.321\n", - " cow 5e+03 384 0.155 0.753 0.65 0.258\n", - " elephant 5e+03 284 0.219 0.933 0.897 0.354\n", - " bear 5e+03 53 0.414 0.868 0.837 0.561\n", - " zebra 5e+03 277 0.205 0.884 0.831 0.333\n", - " giraffe 5e+03 170 0.202 0.929 0.882 0.331\n", - " backpack 5e+03 384 0.0457 0.63 0.333 0.0853\n", - " umbrella 5e+03 392 0.0874 0.819 0.596 0.158\n", - " handbag 5e+03 483 0.0244 0.592 0.214 0.0468\n", - " tie 5e+03 297 0.0611 0.727 0.492 0.113\n", - " suitcase 5e+03 310 0.13 0.803 0.56 0.223\n", - " frisbee 5e+03 109 0.134 0.862 0.778 0.232\n", - " skis 5e+03 282 0.0624 0.695 0.406 0.114\n", - " snowboard 5e+03 92 0.0958 0.717 0.504 0.169\n", - " sports ball 5e+03 236 0.0715 0.716 0.622 0.13\n", - " kite 5e+03 399 0.142 0.744 0.533 0.238\n", - " baseball bat 5e+03 125 0.0807 0.712 0.576 0.145\n", - " baseball glove 5e+03 139 0.0606 0.655 0.482 0.111\n", - " skateboard 5e+03 218 0.0926 0.794 0.684 0.166\n", - " surfboard 5e+03 266 0.0806 0.789 0.606 0.146\n", - " tennis racket 5e+03 183 0.106 0.836 0.734 0.188\n", - " bottle 5e+03 966 0.0653 0.712 0.441 0.12\n", - " wine glass 5e+03 366 0.0912 0.667 0.49 0.161\n", - " cup 5e+03 897 0.0707 0.708 0.486 0.128\n", - " fork 5e+03 234 0.0521 0.594 0.404 0.0958\n", - " knife 5e+03 291 0.0375 0.526 0.266 0.0701\n", - " spoon 5e+03 253 0.0309 0.553 0.22 0.0585\n", - " bowl 5e+03 620 0.0754 0.763 0.492 0.137\n", - " banana 5e+03 371 0.0922 0.69 0.368 0.163\n", - " apple 5e+03 158 0.0492 0.639 0.227 0.0914\n", - " sandwich 5e+03 160 0.104 0.662 0.454 0.179\n", - " orange 5e+03 189 0.052 0.598 0.265 0.0958\n", - " broccoli 5e+03 332 0.0898 0.774 0.373 0.161\n", - " carrot 5e+03 346 0.0534 0.659 0.272 0.0989\n", - " hot dog 5e+03 164 0.121 0.604 0.484 0.201\n", - " pizza 5e+03 224 0.109 0.804 0.637 0.192\n", - " donut 5e+03 237 0.149 0.755 0.594 0.249\n", - " cake 5e+03 241 0.0964 0.643 0.495 0.168\n", - " chair 5e+03 1.62e+03 0.0597 0.712 0.424 0.11\n", - " couch 5e+03 236 0.125 0.767 0.567 0.214\n", - " potted plant 5e+03 431 0.0531 0.791 0.473 0.0996\n", - " bed 5e+03 195 0.185 0.826 0.725 0.302\n", - " dining table 5e+03 634 0.062 0.801 0.502 0.115\n", - " toilet 5e+03 179 0.209 0.95 0.835 0.342\n", - " tv 5e+03 257 0.115 0.922 0.773 0.204\n", - " laptop 5e+03 237 0.172 0.814 0.714 0.284\n", - " mouse 5e+03 95 0.0716 0.853 0.696 0.132\n", - " remote 5e+03 241 0.058 0.772 0.506 0.108\n", - " keyboard 5e+03 117 0.0813 0.897 0.7 0.149\n", - " cell phone 5e+03 291 0.0381 0.646 0.396 0.072\n", - " microwave 5e+03 88 0.155 0.841 0.727 0.262\n", - " oven 5e+03 142 0.073 0.824 0.556 0.134\n", - " toaster 5e+03 11 0.121 0.636 0.212 0.203\n", - " sink 5e+03 211 0.0581 0.848 0.579 0.109\n", - " refrigerator 5e+03 107 0.0827 0.897 0.755 0.151\n", - " book 5e+03 1.08e+03 0.0519 0.564 0.166 0.0951\n", - " clock 5e+03 292 0.083 0.818 0.731 0.151\n", - " vase 5e+03 353 0.0817 0.745 0.522 0.147\n", - " scissors 5e+03 56 0.0494 0.625 0.427 0.0915\n", - " teddy bear 5e+03 245 0.14 0.816 0.635 0.24\n", - " hair drier 5e+03 11 0.0714 0.273 0.106 0.113\n", - " toothbrush 5e+03 77 0.043 0.61 0.305 0.0803\n", - "loading annotations into memory...\n", - "Done (t=5.40s)\n", - "creating index...\n", - "index created!\n", - "Loading and preparing results...\n", - "DONE (t=2.65s)\n", - "creating index...\n", - "index created!\n", - "Running per image evaluation...\n", - "Evaluate annotation type *bbox*\n", - "DONE (t=58.87s).\n", - "Accumulating evaluation results...\n", - "DONE (t=7.76s).\n", - " Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.337\n", - " Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.568\n", - " Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.350\n", - " Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.152\n", - " Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.359\n", - " Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.496\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.279\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.432\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.460\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.257\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.494\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.623\n" - ] - } - ], - "source": [ - "!python3 test.py --data data/coco.data --save-json --img-size 416 # 0.565 mAP" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "VUOiNLtMP5aG" - }, - "source": [ - "Reproduce tutorial training runs and plot training results:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 417 - }, - "colab_type": "code", - "id": "LA9qqd_NCEyB", - "outputId": "1521c334-92ef-4f9f-bb8a-916ad5e2d9c2" - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAACvAAAAV4CAYAAAB8IQgEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAewgAAHsIBbtB1PgAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzs3Xd0FNX///HXbkhCIKEHCIQaEkBB\naujVCnwoKiCiHwS/KoqoYPmpoAgKImBDlA+IIHxEsYEFRawE6VUIQSD0HkIIJRASQpL5/cFhPrsh\nuztpm0Sej3P2nLm7d+7cnXCY98687702wzAMAQAAAAAAAAAAAAAAAAAAAPAKe2F3AAAAAAAAAAAA\nAAAAAAAAALiekMALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAA\nAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAA\nAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAA\nAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAA\nAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcAL\nAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJ\nvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAX\nkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAA\neBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAA\nAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAA\nAAAAeBEJvAAAAAAAAAAAAAAAAAAAAIAXkcALAAAAAAAAAAAAAAAAAAAAeBEJvAAK3fnz57Vs2TIt\n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\nde3aVWfOnDHfq1+/vvr166fatWvr3LlzWrZsmX7++WdlZmYqMzNTzz//vHx9fTVy5EhLx4iPj1fv\n3r114sQJlSlTRnfddZeaN2+u0qVL68CBA/rss8908OBBSVeW9x42bJi+/fbba9oJCwsztw8dOqT0\n9HRJUuXKlRUUFORUNzQ0NKenwjRz5ky99tprZtlut6tbt266+eabVbZsWe3fv19ffvml9u/frxkz\nZqhChQqW27506ZJuv/12rV692nyvUqVK6tOnj5o0aaLSpUvr8OHD+uabbxQTEyNJ+v3333X33Xdr\n6dKllpaFunjxovr06aPdu3erZMmS6t27t9q0aaOyZcvq2LFj+uqrr7R9+3ZJUkJCgh544AGtX7/e\n7bLfsbGx6tixoxISEsz3ypcvr549e6pJkyaqUKGCkpKStGvXLi1fvly7du1y28fExER16NBBsbGx\n5nuhoaG688471aBBA/n7+2vv3r36+uuvtX//fknS/PnzFRAQoA8//NDjOQAAOPNmbJEbN9xwg9q2\nbauGDRuqfPnySktL0/79+7VkyRLt2LFDknTmzBn16dNH27ZtU82aNbNt5+LFi7rrrruc4ppOnTqp\nS5cuCg0Nla+vr5KSkrR3715t3LhRGzZsUGZmZoG3ZUXt2rVVosSV28THjh1TamqqpCvX25zEGp4k\nJCSobdu22rdvn/le6dKl1a1bN7Vq1UqVKlVScnKy9u3bp5UrV+qvv/6y1K7NZlPz5s3Vpk0bhYWF\nqVy5ckpJSdGuXbv0ww8/mLHe4cOH1atXL0VHR6tMmTLXtHM13jt9+rR57kuWLKnq1atne9y8nJvi\nFAcDAIqfq/csJMnHx8dlvbS0NPXv31979+6Vj4+Punfvrk6dOqlixYo6deqUfvvtt2t+r+/du1cd\nO3bUiRMnzPciIiLUu3dvhYWFyW63a8eOHfryyy/NOhMnTlRgYKBGjRrltt8jRozQtGnTnN5r1aqV\nbrvtNtWoUUM2m00nTpzQxo0b9ccffzjFmLkRFxenAQMG6NKlS5KunKvbb79d7dq1U0hIiOx2u86e\nPavY2FitW7dO0dHReTqeo7feekujR482yz4+PurWrZu6du2qsmXL6uDBg/r666+1e/dus69dunTR\n+vXrne5RufPpp59qzJgxkqSGDRuqT58+qlu3ri5fvqwNGzbo888/V1pamiRp+vTpuv3229W7d+98\n+44AABSWzMxMp9/bvr6+buunpqbq1ltv1bp168z3goOD1adPH910000qVaqUDh8+rEWLFunvv/+W\nJP3yyy/q37+/fvzxR7dtf/755xo0aJAyMjLM98LCwtSzZ0+FhYWpdOnSOnXqlLZu3ao//vhDJ0+e\ntPQdg4KC1KFDB7Vs2VJVq1ZVQECATp06pQ0bNuiHH34w45vPPvtM1apV05QpUyy1C6CQFHYGMYB/\nNseZzUqWLGmkpaV55bhyGFXkbnT1k08+6VTX1Ww1V02cONGpvqsZhZmBFwBQXD311FNO159NmzYV\nyHEyMjKumX1t3Lhx2S47tGLFCqNixYpmPX9/f2P79u0u23aceezqrC3du3fPdtnklJQUo2fPnk79\n2LZtm9u+O85SZ+Uab3UG3iNHjhiBgYFm3fLlyxt//vnnNfXS0tKM4cOHO32/qy93M709/fTTTnWH\nDRtmnD9//pp6mZmZxpQpU5zqzpgxw2W7jrPaXO1Py5Yts+1Lenq68eijjzq1/f3337tsOzU11Wja\ntOk1/T537pzLfTZv3mz069fPOHToULaf33333WZbNpvNePXVV7MdgX7p0iVj5MiRTsdeunSpy+MC\nALLnrdjCMKzPwHvfffcZjz/+uNt4wjAMY968eU4zst1zzz0u686ZM8esFxAQYPz+++9u246LizNe\ne+21bGf2zc+2DCNnqwFkncHVE6sz8GZmZhrdu3d3qtu3b1+3s77GxsYaDz/8sLFq1apsP+/SpYsx\nevRot/FPenq6MXnyZKeZ555//nm33yk3y18bhvUZeItzHAwA8K7cPCNISEhwuu517drV6XPH65xj\nfOBqVllHly9fNlq1amXu5+fnZ8ycOTPba1hSUpIxYMAAs66vr6/b68wXX3zh1KcaNWoYy5Ytc1k/\nKSnJmD59uvHSSy9l+7mVGXjHjBlj1gkODvZ4Dvbv3288++yzxq5du7L93GoMER0dbfj6+pp1q1Sp\nku2Kj+np6caoUaOczkvHjh2NzMzMbNvNGovY7XbDx8fHmDZtWrZ/o61btzotv92sWTO33x8AgMKQ\nm3jozz//dNqnZ8+ebutnzRl54oknjAsXLlxTLyMjw3jjjTec6n700Ucu242NjTVKly7t9Jv+ww8/\nzPa6bBhXYq3vvvvOGDBgQLafb9myxWjcuLGxYMECt7P/Hj161OjUqZNTTOAqfrmKGXiBwkUCL4AC\n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\nKysJdu/eXdOnT/e48uCePXs0btw4l0mv/v7+TjPexcfHq2PHjlq+fLnLNpOTkzVz5sw8DfStV6+e\nhgwZolWrVrkdWLRz506n5OVWrVo5JRzn1IQJE8zVKdLT09WrVy+tW7fumnoZGRl65ZVXNGPGDPO9\nTp06Oc0UCAAAXHv22Wfl5+dnlrObhbdp06ZOE4k8//zzeuqpp3TmzBm3bSckJGjmzJm68cYbtXHj\nxmzrvPPOO+Yzn8zMTPXp00cfffSRyxWCMjIy9OOPPzpN9nLVbbfdZm4nJibqoYceyvZ+2qVLl/TC\nCy9oypQplu+DACh8JQq7AwCuH35+fvr444/VunVrjRs3TidOnJB0JYhYtmyZli1b5rENm82mvn37\navLkyU5LKufFgAEDdOnSJT388MPmjaaoqCiXs94FBQXp+++/V9u2bT22HRgYqFWrVumee+7RH3/8\nIenK912yZInHGWJuvfVWffnll05LOwAA4C02m01fffWVhg4dqnnz5km6MvjmmWee0ZgxY3TzzTer\nRYsWCg4Olr+/v+Lj43X48GH9+uuvOnDggMf27Xa75s6dqzZt2pg3Ql555RV9/vnn6tevn2rVqqVz\n584pKipKS5cudUpemTRpklPSxj9FaGio3nzzTQ0bNkzSlfPdpUsX9ejRQzfffLPKlCmjAwcO6Isv\nvtC+ffskXUnEtZrEMWnSJMXExJijvP/zn/9o3rx56tatmyIjIxUcHCxJOnv2rPbu3astW7Zo06ZN\nbhOHCpqfn5+++OILdejQQSdPnjT7/cUXX6hnz55q2rSpypcvr6SkJO3evVt//vmntm/fLkmaPHly\ntm1+/PHH2rt3r6Kjo5WRkaFx48bpvffeU7du3dS8eXNVqFBBGRkZOnPmjGJjY7V582ZFR0d77TsD\nwD9VQccWVj3//PPm7/Hk5GTdfPPN6tWrl7p06aJy5copISFBUVFR+uWXX5SZmalq1aqpd+/emjlz\nptt2MzMz9d133+m7775TpUqV1L59ezVv3lyVK1dWQECAEhMTtWnTJn3//fe6ePGiud/kyZOveaCS\nn20VJXPnzlW7du20Z88eSdLChQu1dOlS9ejRQ61atVLFihV18eJF7d+/X6tWrTJXJ7r33nuvaeuF\nF17QAw88IOlKkk+LFi3Ut29ftW3bVqVLl9bx48f166+/asWKFZKkxo0bq0GDBvr666899rN69eq6\n7bbbzJhpypQpmjZtmmrXri1/f3+z3mOPPZarGfCIgwEAxZWvr6++/vprtW/fXocPH1ZKSoqeeOIJ\nvf766+rWrZsaN26s8uXL69KlSzp9+rR27NihjRs3KjY21mPbffv21ciRIzV16lRJV1Yr7Nq1q1q3\nbq3bb79doaGhstvtOnHihDZv3qzffvtNycnJGjx4cK6/T3p6uv773//qv//9r6pXr6727durSZMm\nqlSpknx9fXXy5EmtXbtWS5YsMVfjsdlsmjJlSq6PKUk33XSTJk6caK70cOLECXXo0EE9evRQ165d\nVaZMGR06dEhfffWV07mrUKGCPv74Y3OgEQAAcK969er697//ba5qs3jxYm3ZskXNmjVzqvfmm29q\n+/btZj7H+++/r48//lh33HGH+ezEMIxrnp24SsS9ql69epozZ47uu+8+ZWRkKDU1VUOHDtXkyZPV\nq1cv1atXT6VKlVJiYqK2bdum33//XXFxcQoLC7umrTZt2qhTp07mfY4vv/xS69ev14ABAxQREaG0\ntDTt2rVLixYtMichGTdunF555ZU8n0cAXmAAQCG4ePGi8e677xpt27Y1SpQoYUhy+fLx8TGaNGli\nvPbaa8ahQ4cste+4/+DBgy3ts3PnTqN3794u+1OyZElj8ODBxrFjx3L8fTMyMoyvv/7aaNOmjWG3\n211+V7vdbrRp08ZYuHChkZmZmePjAABQED744AOjUqVKbq/Xrq5rDz30kHH8+HGXbW/ZssWoUqWK\npfZsNpsxZcoUj/3t3Lmzuc/YsWMtfceoqCinY7lTq1Yts97cuXM9tj137lyzfq1atTzWHzNmjKXz\nMXz4cOPAgQNO7x04cMBt22lpacbQoUNz/LeUZKxYsSLbNgcPHpzjuCun/d67d68RERGRo/66a/P8\n+fNG7969c3UerMajAADXCiq2cKwbFRXl8vivvvqqpeMFBwcb69atM8aOHWu+17lz52zbdIwPrMY1\nEydOLPC2DCNnsUhO46icxFCGYRgnT540WrdunaPv5+pv+X//93+W9q9bt66xZ8+eHMUs+/btM2rW\nrOm23aznJ6fxTXGMgwEA3uV4DfcU31hlJa7x5MSJE0bbtm1zFct5Mm7cOLfPULK+XF3TrVz3c9p/\nPz8/45NPPnHZ95ye24kTJxo2m83SsUNCQoxt27a5bS+nschVubmvAwCAt+Q1Htq1a5dTbNGnT59s\n66WlpRkPPfRQjuMDScaaNWvc9mHx4sVGYGCg5fbCwsKybefw4cNG9erVLbXx0EMPGWlpaU7vrVy5\n0mUfHdudP3++y3rt27c3640fP97t9wZgXdGdkgHAP1pAQIBGjhypNWvW6PTp0/r99981f/58TZ06\nVRMmTNC0adM0f/58rVixQufOndPWrVs1ZswYl0ssZWUYhvm6OrOPJw0aNND333+vhIQEffvtt/rg\ngw/0+uuva8aMGfrpp5+UmJioefPmqVq1ajn+vna7Xf369dPatWuVmJioJUuWaNasWZo0aZImTZqk\nWbNmacmSJTp16pTWrl2rvn37MooaAFBkDB8+XPv379frr7+uZs2aebxG1ahRQy+88IJ27typ2bNn\nKyQkxGXdpk2baufOnXrqqacUFBSUbR273a6uXbtq/fr15uwk/2SvvfaaFi9enO0oa0mqWbOm5syZ\n47S8pFW+vr768MMPtXbtWvXo0cNp+ajs1KtXT08++aQ2bNigjh075vh4+SUsLEzbtm3Tm2++qRo1\narit27hxY7399ttuY7bAwEB9//33+umnn9SxY0ePsxU2atRIL774onbu3Gk5HgUAuFaQsYUVr7zy\nij799FOX1xR/f38NGDBA0dHRat26taU2p0+frsGDB6t69epu69ntdt1xxx1as2aNRo0aVeBtFTXB\nwcFas2aN5syZo4iICLd169Wrp3Hjxl0zM85Vs2fP1rvvvquKFStm+3lgYKAeffRRbdmyRfXq1ctR\nP+vWravo6Gi99dZbuuWWW1S1alWVLFkyR214QhwMACiuqlSpolWrVmnBggUur9NX2e12RUZGavz4\n8ZZWVRg7dqz++usv9ezZU76+vi7rBQUF6b777tNTTz2V4/5f9emnn+qee+5RpUqV3Nbz8/NTv379\ntHXrVg0aNCjXx8tq1KhRWrt2rbp06eIyHi5TpoxGjhypHTt2qHHjxvl2bAAArhf169fXXXfdZZa/\n//57bdmy5Zp6vr6+mj17tlavXq1u3bq5jUMkKTw8XE899ZQ2bdrkceXmXr16ac+ePXrsscdUpkwZ\nl/V8fX1166236q233sr28xo1amjTpk3q16+fy9ghIiJC8+fP1+zZs8k3AYoRm2EYRmF3AgAAAEDx\nkZCQoI0bN+rkyZM6deqU0tPTVa5cOYWEhKhFixYKDQ3NVbtpaWlauXKl9u/fr1OnTql06dIKCQlR\n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\n115J1k6/tb8mhTkdqvBIFUakDEP60pui27xz1Ts6XMeLj+mk26uTRlWBcMvtg7kAACAASURBVHWM\nKlWUujgNTTmrj/7tol9ZGaruLsoNfc+hJC0tzcodOTk5uvjiixtsW1hYaD3qOT4+XnFxcUEzZlsa\nmDZK//zh/2p4zlxbi3grTafuqbytqpDdRg5Deqo5/7YAAKCDkFNaryqnPK70nPvkMpryjJDGeUyH\n7q683faMIrXgM1AAANpRaP+0DACAzqqpj7purM1PX0lbnpW+XdXix2UDAICONTk9UYPiY+oV59R8\ndDfal8fj0fz5863XS5YsqVVIW+3xxx/XP/7xD+Xm5mrTpk368MMPdcUVVwTEmE8++aSOHz8uqarw\nt2bxbrVRo0bpkUce0T333CO326358+frrbfeatH8AQC1NVQM3Nwi4dbuju9vR+K686jbtu7r6l2H\nfRUn/2Zkcr3diKX6RctSVeFwF4dDFV6v8opO6NXsvVq9rUBmnQw0OCGmwYJjX4XJ1X36+n/kaxdl\nX99jKJkwYYKeeOIJSdKaNWt03333Ndh29erV1nFGRkZQjdnWRv76Fv2r31k68vH/q2HH/qFIo1Km\nKRmnLsHmHJebYVrlveCXXaht4nQYujglTndfnsK/LQAAQYGcYo/qnHL8fx9WWtmn1lMsmptV3KZD\n673peso9zfbi3XCXQ78+qw+fgQIAApphmqY9t8Og1fbt26fk5GRJUn5+vpKSkjp4RgCATsHrbfxR\n1421aUofzcCaF1z4/QKAziOUd4FrqvZY99avX69LLrlEkjR27Fht2LChwbavvfaabrrpJklSZmam\nXnvttYAYs3///vrhhx8kSXv27NGAAb4fQVhcXKzevXvrxIkTOu2001RUVKTIyMgWfQ++kFMAAE3R\nGTJQsK15Ho9HSUlJOnDggCTp888/14gRI3y2GzlypHJzcyVJa9eu1fjx44NmzIa0xe+X1+NReVmJ\nunSJVHlZiSQpIjK6acflpVJYpCLCwlTurtrNN8LltOW45q7TAIDQRE4JzDEb0lY5pbTkZ0nNyCfV\nx1FdVe6pKluyK59EuJwN3nwHAAgdwZJRWl+B04ZWrlypadOmqX///oqIiFB8fLxGjx6tJ554wtrl\nxQ7FxcVavny57rjjDo0ePVpxcXEKCwtT165dNXjwYM2YMUNr164Vtc4AgKBU/ahrf4W3jbVpSh8A\n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\nBEGAIAgICQkp9zZnz54Vn8/Ozoajo6P5F6Hh5ZdfFuMJgoARI0bo7YcgCGU6FxEREVUd06dP15oD\n9OrVy+IxzX0Q0bNDIvBfNRGVUUFBAc6ePYvIyEikp6ejdu3aqFevHnr27AkXF5eK7p7JHj16hAsX\nLuDBgwd4+PAhlEolnJ2dUbt2bTRr1gz+/v6ws7Mrt/6kpqYiLCwMycnJePr0KerUqQMfHx90797d\nIh/YpKam4uzZs0hJSUFaWhpkMhlcXV3RqFEjdO7cucxvdBERUeX0rIzbSUlJiIiIgEKhgEKhgEQi\ngYuLC+rXr48OHTqU+ks2T58+xcmTJ3Hnzh08fvwYzs7OqF+/PoKDg6vU/bEUlUqFkydPIi4uDunp\n6fD29oavry+CgoIsdo60tDSEh4fj/v37ePToEeRyOVxcXNCsWTP4+fkZTJatKGq1GhcvXkRMTAwU\nCgXy8/Ph4uICHx8fBAYGmp2gAwApKSn466+/xLmZnZ0dXF1d0bx5c/j5+VXL3z8iqho4tygbpVKJ\n8PBwxMTEICsrC3Xq1EGDBg0QHByMGjVqlDrujRs3EBsbizt37iAjI0O8nhYtWqBDhw5mJSBbMlZl\nFBUVhYiICDx48ABKpRJOTk5o0qQJAgICdCbu6pKZmYmwsDDcuHEDOTk58PT0RKNGjdCzZ0/Y2NhY\n+Qosg/NgIiIiIiIiIiKi8scEXiIiIiIiIiIiIiIiIiIiIiIiIiIionJkeK9SIiIiIiIiIiIiIiIi\nIiIiIiIiIiIisigm8BIREREREREREREREREREREREREREZUjJvASERERERERERERERERERERERER\nERGVIybwEhERERERERERERERERERERERERERlSMm8BIREREREREREREREREREREREREREZUjJvAS\nERERERERERERERGRxalUKkRHRyMkJASvvPIKunTpgho1akAikUAikWD69OlWO/e+ffswduxYNG7c\nGPb29vDw8EDXrl3xySefICMjw2rnJSIiIiIiIiIylbyiO0BERERERERERERERETPnnHjxmHXrl3l\nes6srCxMmjQJ+/bt03peoVBAoVDgzJkzWLNmDXbs2IHOnTuXa9+IiIiIiIiIiDRxBV4iIiIiIiIi\nIiIiIiKyOJVKpVV2dXVF8+bNrXq+sWPHism7np6eWLx4MbZs2YKvv/4a3bp1AwAkJSVhyJAhiI2N\ntVpfiIiIiIiIiIiM4Qq8REREREREREREREREZHEdO3ZE69atERgYiMDAQDRp0gQhISGYMWOGVc63\nbt06HDp0CADg6+uLY8eOwdPTU3x97ty5WLBgAVavXo20tDS8+OKLCAsLs0pfiIiIiIiIiIiMkQiC\nIFR0J4iIiIiIiIiIiIiIiOjZp5nAO23aNISEhFgkrkqlQoMGDZCcnAwA+PvvvxEQEKCzXocOHRAR\nEQEAOHz4MAYMGGCRPhARERERERERmUNa0R0gIiIiIiIiIiIiIiIiKouwsDAxeTc4OFhn8i4AyGQy\nvPrqq2J569at5dI/IiIiIiIiIqLimMBLREREREREREREREREVVpoaKh4PGTIEIN1Bw8erLMdERER\nEREREVF5kld0B+gfSqUSUVFRAAB3d3fI5fzxEBHRs6mgoAAKhQIA4OfnB3t7+wruERnCOQoREVUn\nnKdULZynEBFRdcE5inFFcwIACAoKMljXy8sLDRo0QFJSElJTU6FQKODu7m6xvnCOQkRE1QnnKVUL\n5ylERFRdVJU5CkfiSiQqKgodO3as6G4QERGVq/Pnzxv9UIUqFucoRERUXXGeUvlxnkJERNUR5yi6\nxcXFicdNmjQxWr9JkyZISkoS25qTwHv37l2Dr0dERGDYsGEmxyMiInpWcJ5S+fG9FCIiqo4q8xyF\nCbxERERERERERERERERUpT158kQ8rlOnjtH6bm5uOtuaokGDBmbVJyIiIiIiIiLShQm8lYjmt7vP\nnz8Pb2/vCuwNERGR9SQnJ4vf7rXk9oRkHZyjEBFRdcJ5StXCeQoREVUXnKMYl5WVJR6bsi2mg4OD\neJyZmWmVPgGcoxAR0bOP85Sqhe+lEBFRdVFV5ihM4K1E5PJ/fhze3t6oX79+BfaGiIiofGiOf1Q5\ncY5CRETVFecplR/nKUREVB1xjlLxkpKSDL6u+SEh5yhERFSdcJ5S+fG9FCIiqo4q8xyl8vaMiIiI\niIiIiIiIiIiIyASOjo5IS0sDACiVSjg6Ohqsn5OTIx7XqlXLrHMx0YWIiIiIiIiILEFa0R0gIiIi\nIiIiIiIiIiIiKgsXFxfx+OHDh0brP3r0SGdbIiIiIiIiIqLywgReIiIiIiIiIiIiIiIiqtJatmwp\nHicmJhqtr1lHsy0RERERERERUXlhAi8RERERERERERERERFVaX5+fuLxhQsXDNZNTU1FUlISAMDD\nwwPu7u5W7RsRERERERERkS5M4CUiIiIiIiIiIiIiIqIqbdCgQeJxaGiowboHDx4Uj4cMGWK1PhER\nERERERERGcIEXiIiIiIiIiIiIiIiIqrSgoOD4eXlBQA4ceIELl26pLOeSqXCV199JZYnTJhQLv0j\nIiIiIiIiIiqOCbxERERERERERERERERUaYWEhEAikUAikaBXr14668hkMixZskQsT506FQ8ePChR\nb9GiRYiIiAAAdOvWDQMHDrRKn4mIiIiIiIiIjJFXdAeIiIiIiIiIiIiIiIjo2ZOYmIj169drPXfl\nyhXx+PLly1i8eLHW63369EGfPn1Kdb5Zs2Zh9+7d+OOPP3D16lX4+/tj1qxZ8PX1xePHj7F161aE\nh4cDAFxcXLB27dpSnYeIiIiIiIiIyBKYwEtEREREREREREREREQWd/v2bXzwwQd6X79y5YpWQi8A\nyOXyUifwyuVy/Pbbb5g4cSJ+//13pKSkYPny5SXq1a9fH9u3b8dzzz1XqvMQEREREREREVmCtKI7\nQERERERERERERERERGQJtWrVwv79+7Fnzx48//zzaNCgAezs7FCnTh106tQJq1atQnR0NLp27VrR\nXSUiIiIiIiKiao4r8BIREREREREREREREZHF9erVC4IglDnO9OnTMX36dLPajBgxAiNGjCjzuYmI\niIiIiIiIrIUr8BIREREREREREREREREREREREREREZUjJvASERERERERERERERERERERERERERGV\nIybwEhERERERERERERERERERERERERERlSMm8BIREREREREREREREREREREREREREZUjJvASERER\nERERERERERERERERERERERGVIybwEhERERERERERERERERERUZWmVgvIziuAWi1UdFeIiIiICADU\naiDvaeF/SSd5RXeAiIiIiIiIiIiIiIiIiIiIqDRi7mdgXXgCQqNSkJOvgoONDIP9vDCze1P41nUC\nUJjcqyxQwVYqhbJABQCoYSuHVCrRet1eLhOfKyt9MU05V1EycvF+EhEREVUJKVHAmW+AmL1AfjZg\nUwPwHQF0mQt4+VV07yoVJvASERERERERERERERERERFRlbM34h7m74hEgcaquzn5Kuy6dA/7Iu7j\njf4tEK/IwoErycgt0F75TSoBAhrWhpODDc7cfKQ3+ddcxROK7eVSDGrjiR7NPXA6/iFCo/UnGsfc\n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\niIhIaPJW+uYswYR3AbxuOLzHN7/x7xuBm4laie32RQzmoyorSNSn1I6mnKj6G0bADy/pEXJ4t/lV\nm7TbqsArrdlV0yHvpcD/MJpO312cIiIiIiIiItIsrrzySgYMGMBll13GZZddRp8+fViyZAk/+tGP\nIt7XRRddFFSIdvXq1f7wbnJyMkOHDq13n8GDBzN27NgGj7EtqRHg/dbdTCMRERERkbbAsuwqS9ma\npsHo1ERW7TrY3EOr1wDjc6Y4sxltbifOOIXH9gUJnIYVVuWyVsnywLYFvgqylUUqjBpKldz6VA/h\nqniUiIhI21ecF0YA1/bNb666q92Fd922g9+6bwdgWdRDdDaCm4dlW9/BpvHnSg7TYPLQPo3eT6TZ\n1QO8qAKvtGaJqb6lWOr6B9J0+l6vWIJFRERERERERJrc7Nmzm3sINTzzzDP+7WCq70rtzj7LVeWx\nKvCKiIiISDjyi0pYlPMp6/OKKXN7iXU5GJ2ayIjkBI6XtvybxMaY75DlWlilMpnTOFNJq12Edyvk\nr4GM+Y0TcA2lSm59agvhqniUiIhI27ZtfngB3Pw1viqp7Si867FNZrp/wl77fAD22efzXWNvvfu5\nbQeLPaMbe3iYBszNTCOlR8dG7yviqn05MFSBV1q91Im+pVje+C188uaZ5w0nTN0E3S9ptqGJiIiI\niIiISMtz6NAh1q9fD4DT6eS2225r5hG1XjUq8CrAKyIiIiIhWpt7kJkrduOxzlSeKnN7WbXrYKup\nvFs9vNuuuUt9lXIjUXG3ulCq5AY8Th0hXBWPEhERabssC/LXhrevuxT2hrqvQXNWVg13BQjbhu3W\nRfzWc7s/vAtQYtc/t3Pbjiqh38ZgGjDiogRmXJfcOsO7AEb7XslBAd62KjEVbsiC/0s785ztgc69\nmm9MIiIiIiIiItIiPffcc3i9vovrP/zhD0lMTGzmEbVeNQK837qxbRujXZUYExEREZFw5ReV1Ajv\ntha/uj6ZhzfsZ4ozW+Hdylxxvkq5jSWYKrmG6UusWLX8XOoL4VYUj9q2wFdtz13qe08pY32hX4V3\nRUREWidPWfhV/J2x4C4Lvn3cuZD+Z1g1tdmq9hpGgBCv6YTh98PRA/75jseM4VX3ZfzVk06+3adK\nc6dpcE6XBDhWe1+ldjTZ1ndY7BkdkfDuyh9fxbLthWTnHaLM7SXGaTIypRu3DenN4PPOxjRb+7nn\n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\nhNtrjG2pTu/qyvzNiYfn7/766B5TNDB27Nhi7li+fHk++9nPNtl3/fr1qaurS5IMGTIkgwcP7jJz\ntre/+puv5/8cdWLe+eX/n0+8+6v0rdh+ADdBV//lJujJJb9197NjBuc7nx/TY/Y3AF2bnFIau3PK\ne//rf2Tstv/Y57do7G97R6Eyi3eelFt3TC1pRknSI3M4AF2PAl4AAACAMmpoaMj1119ffH3//ffv\nVUi720033ZRf/epXWbFiRZYuXZonn3wyZ511VqeY8/vf/37ee++9JLsKf/cs3t3t1FNPzQ033JAr\nr7wyO3bsyPXXX58HH3ywTesHoGWVlRXpd9Cub/lXZ1eRb2tu//1ou61j7C4o3rmzUCwo7ohC4s4y\nxoc7d6ZPdVUqKyvSk5xzzjm5+eabkyQLFy7M1Vdf3WTfJ554otiePHlyl5qzHEaPPTWjx87PzoaG\nbN22JQcd1Df127YkSfr07b9/7fqtSa++Ob9Xr5xzAF8HjbX7HVTd4/Y3AF2bnFI6o8eemoxdlJ0N\nDdmy5c9JWpFPdrf7DchnGgr5eUqXT3pyDgeg6/H7rwEAAADK6JlnnsnatWuTJBMnTsz48eMb7VdV\nVZUrrrii+HrevHmdZs758+cX29/+9rebnHfGjBk5+OBdv8VhwYIF2bZtW6vXDkDXtLuguLq6Mv37\n9Er/Pr3a1O7qY/TU4saJEydm2LBhSZIlS5bkxRdfbLRfQ0NDbrvttuLradOmdak5y6myqir9+h+S\n6oMOSv9DDk3/Qw7d//aAgenft/cBfx001u6J+xuArk1OKb3KqqrW55Pd7V7VJc8nPTmHA9D1dOoC\n3gULFmTq1KkZNWpU+vTpkyFDhmTChAm5+eabi7e8lMLmzZvz8MMP5/LLL8+ECRMyePDg9OrVKwMG\nDMhxxx2XSy65JIsWLUqhUCjZnAAAAEDPtHDhwmK7pZtUzj333Eaf68g5f/e73+WNN95Ikhx//PE5\n+uijmxyrpqYmp59+epLk/fffz69//etWrRsA6JqqqqoyZ86c4utLLrkkGzZs2Kff7Nmzs2LFiiTJ\naaedlrPPPrvR8e69995UVFSkoqIikyZNKsucAED3JKcAAJ1JdUcvoDFbtmzJxRdfnAULFuz15xs3\nbszGjRvz3HPP5fbbb89DDz2UU0899YDmuvXWW/O9730v9fX1+7y3efPmrF69OqtXr87999+f008/\n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\n8CxevDjHHnvsfj1vn0H34muQcnB2sD9kFOCjfB3S3pwd7C85BSglX8OUkjOGPckswIHwNUspOVP4\nKDmFnkwBbycxceLEDBs2LEmyZMmSvPjii432a2hoyG233VZ8PW3atLKsj+7jy1/+crF96623Ntnv\nRz/6Ud5///0kyXnnnVe8Hr6psebOnVvs/1F/+tOf8tBDDyVJ+vbtmylTprRp7ZTH5ZdfXgxFw4YN\ny+LFi/Pxj3+8VWPYZ9B9yCiUi7ODlsgowEfJKZSDs4P9IacApSTjUGrOGHaTWYADIaNQas4U9iSn\n0KMV6DTuuOOOQpJCksIJJ5xQWL9+/T59rrrqqmKf0047rQNWSWdyzz33FPfDpZdeul/PrF+/vlBT\nU1NIUqisrCw8+uij+/R5/vnnC/369SskKVRXVxdWrVrV5Hhf+tKXimv4yle+Uti+ffte72/evLkw\nceLEYp/vfe97rfocKa/LL7+8+Hc1bNiwwiuvvNKmcewz6F5kFFpLRqHUZBSgKXIKrSGj0B7kFKA9\nyDg0RZ6hrWQWoBRkFJoio3Ag5BR6uopCoVBovsSXctmxY0cmT56cp556KsmunyiYMWNGamtr8847\n72TevHl59tlnkyQDBw7Ms88+mxNOOKEjl0wZrVmzJnffffdef/bb3/42jz32WJLkxBNPzN/+7d/u\n9f7nPve5fO5zn9tnrPvuuy/Tp09PklRWVmbatGn5/Oc/n6qqqixbtiz33Xdf6uvrkyQ33nhjvvvd\n7za5rj/96U859dRT8+abbxbXMX369Bx++OF5/fXXc9ddd+X1119Pkpx00klZunRp+vfv37b/EWhX\n1157bW688cYkSUVFRf7lX/4lxx13XIvPjR8/vvirCPZkn0H3IaPQHBmF9iajAM2RU2iKjEI5yClA\ne5FxSOQZSkdmAUpFRiGRUSgtOQXiBt7O5r333iv8zd/8TbE6v7GPESNGFJYtW9bRS6XMFi9e3Oy+\naOzjuuuua3K8O+64o9CnT58mn62qqirMmTNnv9a2cuXKwnHHHdfsWiZMmFBYu3Ztif7XoD3s+ZNB\nrfm45557mhzTPoPuQ0ahKTIK7U1GAVoip9AYGYVykFOA9iTjIM9QKjILUEoyCjIKpSSnQKFQHTqV\nmpqaPPbYY3n00Ufz05/+NMuXL8+GDRtSU1OT0aNH58ILL8zMmTNzyCGHdPRS6eK+8Y1v5Mwzz8yd\nd96ZRYsWpa6uLjt37szhhx+eM844I1//+tfzyU9+cr/Gqq2tzW9+85vcfffd+fnPf55XXnklmzZt\nyqBBg3LiiSfmoosuysUXX5zKysp2/qzobOwz6D5kFMrF2UE52GfQvcgplIOzg3Kx14DdZBxKzRlD\nKdlP0HPJKJSaM4VSs6foaioKhUKhoxcBAAAAAAAAAAAAAD2F8m8AAAAAAAAAAAAAKCMFvAAAAAAA\nAAAAAABQRgp4AQAAAAAAAAAAAKCMFPACAAAAAAAAAAAAQBkp4AUAAAAAAAAAAACAMlLACwAAAAAA\nAAAAAABlpIAXAAAAAAAAAAAAAMpIAS8AAAAAAAAAAAAAlJECXgAAAAAAAAAAAAAoIwW8AAAAAAAA\nAAAAAFBGCngBAAAAAAAAAAAAoIwU8AIAAAAAAAAAAABAGSngBQAAAAAAAAAAAIAyUsALAAAAAAAA\nAAAAAGWkgBcAAAAAAAAAAAAAykgBLwAAAAAAAAAAAACUkQJeAAAAAAAAAAAAACgjBbwAAAAAAAAA\nAAAAUEYKeAEAAAAAAAAAAACgjBTwAgAAAAAAAAAAAEAZKeAFAAAAAAAAAAAAgDJSwAsAAAAAAAAA\nAAAAZaSAFwAAAAAAAAAAAADKSAEvAAAAAAAAAAAAAJSRAl4AAAAAAAAAAAAAKCMFvAAAAAAAAAAA\nAABQRgp4AQAAAAAAAAAAAKCMFPACAAAAAAAAAAAAQBkp4AUAAAAAAAAAAACAMlLACwAAAAAAAAAA\nAABlpIAXAAAAAAAAAAAAAMpIAS8AAAAAAAAAAAAAlJECXgAAAAAAAAAAAAAoIwW8AAAAAAAAAAAA\nAFBGCngBAAAAAAAAAAAAoIwU8AIAAAAAAAAAAABAGSngBQAAAAAAAAAAAIAyUsALAAAAAAAAAAAA\nAGWkgBcAAAAAAAAAAAAAyuj/Ak+HcVyOTkwvAAAAAElFTkSuQmCC\n", - "text/plain": [ - "" + "source": [ + "\"Open" ] - }, - "execution_count": 8, - "metadata": { - "image/png": { - "width": 800 + }, + { + "cell_type": "markdown", + "metadata": { + "id": "HvhYZrIZCEyo" }, - "tags": [] - }, - "output_type": "execute_result" + "source": [ + "\n", + "\n", + "This notebook was written by Ultralytics LLC, and is freely available for redistribution under the [GPL-3.0 license](https://choosealicense.com/licenses/gpl-3.0/). \n", + "For more information please visit https://github.com/ultralytics/yolov3 and https://www.ultralytics.com." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7mGmQbAO5pQb" + }, + "source": [ + "# Setup\n", + "\n", + "Clone repo, install dependencies and check PyTorch and GPU." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "wbvMlHd_QwMG", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "edc03bfa-6dd3-49ae-9095-405ba8cbe87d" + }, + "source": [ + "!git clone https://github.com/ultralytics/yolov3 # clone repo\n", + "%cd yolov3\n", + "%pip install -qr requirements.txt # install dependencies\n", + "\n", + "import torch\n", + "from IPython.display import Image, clear_output # to display images\n", + "\n", + "clear_output()\n", + "print('Setup complete. Using torch %s %s' % (torch.__version__, torch.cuda.get_device_properties(0) if torch.cuda.is_available() else 'CPU'))" + ], + "execution_count": 1, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Setup complete. Using torch 1.7.0+cu101 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', major=7, minor=0, total_memory=16130MB, multi_processor_count=80)\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4JnkELT0cIJg" + }, + "source": [ + "# 1. Inference\n", + "\n", + "`detect.py` runs inference on a variety of sources, downloading models automatically from the [latest YOLOv3 release](https://github.com/ultralytics/yolov3/releases)." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "zR9ZbuQCH7FX", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 587 + }, + "outputId": "44211008-da79-4175-f719-ac265dad26eb" + }, + "source": [ + "!python detect.py --weights yolov3.pt --img 640 --conf 0.25 --source data/images/\n", + "Image(filename='runs/detect/exp/zidane.jpg', width=600)" + ], + "execution_count": 2, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Namespace(agnostic_nms=False, augment=False, classes=None, conf_thres=0.25, device='', exist_ok=False, img_size=640, iou_thres=0.45, name='exp', project='runs/detect', save_conf=False, save_txt=False, source='data/images/', update=False, view_img=False, weights=['yolov3.pt'])\n", + "Using torch 1.7.0+cu101 CUDA:0 (Tesla V100-SXM2-16GB, 16130MB)\n", + "\n", + "Downloading https://github.com/ultralytics/yolov3/releases/download/v1.0/yolov3.pt to yolov3.pt...\n", + "100% 118M/118M [00:08<00:00, 14.6MB/s]\n", + "\n", + "Fusing layers... \n", + "Model Summary: 261 layers, 61922845 parameters, 0 gradients\n", + "image 1/2 /content/yolov3/data/images/bus.jpg: 640x480 4 persons, 1 buss, Done. (0.046s)\n", + "image 2/2 /content/yolov3/data/images/zidane.jpg: 384x640 2 persons, 3 ties, Done. (0.013s)\n", + "Results saved to runs/detect/exp\n", + "Done. (0.293s)\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "image/jpeg": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [], + "image/jpeg": { + "width": 600 + } + }, + "execution_count": 2 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4qbaa3iEcrcE" + }, + "source": [ + "Results are saved to `runs/detect`. A full list of available inference sources:\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0eq1SMWl6Sfn" + }, + "source": [ + "# 2. Test\n", + "Test a model on [COCO](https://cocodataset.org/#home) val or test-dev dataset to evaluate trained accuracy. Models are downloaded automatically from the [latest YOLOv3 release](https://github.com/ultralytics/yolov3/releases). To show results by class use the `--verbose` flag. Note that `pycocotools` metrics may be 1-2% better than the equivalent repo metrics, as is visible below, due to slight differences in mAP computation." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "eyTZYGgRjnMc" + }, + "source": [ + "## COCO val2017\n", + "Download [COCO val 2017](https://github.com/ultralytics/yolov5/blob/74b34872fdf41941cddcf243951cdb090fbac17b/data/coco.yaml#L14) dataset (1GB - 5000 images), and test model accuracy." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "WQPtK1QYVaD_", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 66, + "referenced_widgets": [ + "b257add75888401ebf17767cdc9ed439", + "4b685e8b26f3496db73186063e19f785", + "0980232d74a14bdfa353a3f248bbe8ff", + "e981f3dfbf374643b58cba7dfbef3bca", + "07bb32c950654e9fa401e35a0030eadc", + "ec3fce2f475b4f31b8caf1a0ca912af1", + "9a1c27af326e43ca8a8b6b90cf0075db", + "7cf92d6d6c704a8d8e7834783813228d" + ] + }, + "outputId": "2ac7a39f-8432-43e0-9d34-bc2c9a71ba21" + }, + "source": [ + "# Download COCO val2017\n", + "torch.hub.download_url_to_file('https://github.com/ultralytics/yolov5/releases/download/v1.0/coco2017val.zip', 'tmp.zip')\n", + "!unzip -q tmp.zip -d ../ && rm tmp.zip" + ], + "execution_count": 3, + "outputs": [ + { + "output_type": "display_data", + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "b257add75888401ebf17767cdc9ed439", + "version_minor": 0, + "version_major": 2 + }, + "text/plain": [ + "HBox(children=(FloatProgress(value=0.0, max=819257867.0), HTML(value='')))" + ] + }, + "metadata": { + "tags": [] + } + }, + { + "output_type": "stream", + "text": [ + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "X58w8JLpMnjH", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "6850c54e-b697-40c2-f9fc-9ffda2d7052a" + }, + "source": [ + "# Run YOLOv3 on COCO val2017\n", + "!python test.py --weights yolov3.pt --data coco.yaml --img 640 --iou 0.65" + ], + "execution_count": 4, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Namespace(augment=False, batch_size=32, conf_thres=0.001, data='./data/coco.yaml', device='', exist_ok=False, img_size=640, iou_thres=0.65, name='exp', project='runs/test', save_conf=False, save_json=True, save_txt=False, single_cls=False, task='val', verbose=False, weights=['yolov3.pt'])\n", + "Using torch 1.7.0+cu101 CUDA:0 (Tesla V100-SXM2-16GB, 16130MB)\n", + "\n", + "Fusing layers... \n", + "Model Summary: 261 layers, 61922845 parameters, 0 gradients\n", + "Scanning '../coco/labels/val2017' for images and labels... 4952 found, 48 missing, 0 empty, 0 corrupted: 100% 5000/5000 [00:01<00:00, 3373.28it/s]\n", + "New cache created: ../coco/labels/val2017.cache\n", + "Scanning '../coco/labels/val2017.cache' for images and labels... 4952 found, 48 missing, 0 empty, 0 corrupted: 100% 5000/5000 [00:00<00:00, 43690666.67it/s]\n", + " Class Images Targets P R mAP@.5 mAP@.5:.95: 100% 157/157 [01:19<00:00, 1.97it/s]\n", + " all 5e+03 3.63e+04 0.472 0.698 0.625 0.424\n", + "Speed: 3.6/1.6/5.2 ms inference/NMS/total per 640x640 image at batch-size 32\n", + "\n", + "Evaluating pycocotools mAP... saving runs/test/exp/yolov3_predictions.json...\n", + "loading annotations into memory...\n", + "Done (t=0.41s)\n", + "creating index...\n", + "index created!\n", + "Loading and preparing results...\n", + "DONE (t=3.78s)\n", + "creating index...\n", + "index created!\n", + "Running per image evaluation...\n", + "Evaluate annotation type *bbox*\n", + "DONE (t=78.99s).\n", + "Accumulating evaluation results...\n", + "DONE (t=11.77s).\n", + " Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.433\n", + " Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.630\n", + " Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.470\n", + " Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.283\n", + " Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.485\n", + " Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.538\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.346\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.581\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.634\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.473\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.687\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.766\n", + "Results saved to runs/test/exp\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rc_KbFk0juX2" + }, + "source": [ + "## COCO test-dev2017\n", + "Download [COCO test2017](https://github.com/ultralytics/yolov5/blob/74b34872fdf41941cddcf243951cdb090fbac17b/data/coco.yaml#L15) dataset (7GB - 40,000 images), to test model accuracy on test-dev set (20,000 images). Results are saved to a `*.json` file which can be submitted to the evaluation server at https://competitions.codalab.org/competitions/20794." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "V0AJnSeCIHyJ" + }, + "source": [ + "# Download COCO test-dev2017\n", + "torch.hub.download_url_to_file('https://github.com/ultralytics/yolov5/releases/download/v1.0/coco2017labels.zip', 'tmp.zip')\n", + "!unzip -q tmp.zip -d ../ && rm tmp.zip # unzip labels\n", + "!f=\"test2017.zip\" && curl http://images.cocodataset.org/zips/$f -o $f && unzip -q $f && rm $f # 7GB, 41k images\n", + "%mv ./test2017 ./coco/images && mv ./coco ../ # move images to /coco and move /coco next to /yolov3" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "29GJXAP_lPrt" + }, + "source": [ + "# Run YOLOv3 on COCO test-dev2017 using --task test\n", + "!python test.py --weights yolov3.pt --data coco.yaml --task test" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "VUOiNLtMP5aG" + }, + "source": [ + "# 3. Train\n", + "\n", + "Download [COCO128](https://www.kaggle.com/ultralytics/coco128), a small 128-image tutorial dataset, start tensorboard and train YOLOv3 from a pretrained checkpoint for 3 epochs (note actual training is typically much longer, around **300-1000 epochs**, depending on your dataset)." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Knxi2ncxWffW", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 66, + "referenced_widgets": [ + "c1928794b5bd400da6e7817883a0ee9c", + "804fae06a69f4e11b919d8ab80822186", + "138cbb92b4fd4eaa9b7fdcbed1f57a4d", + "28bb2eea5b114f82b201e5fa39fdfc58", + "aea8bd6f395845f696e3abedbff59423", + "0514774dafdf4e39bdd5a8833d1cbcb0", + "7dabd1f8236045729c90ae78a0d9af24", + "227e357d925345f995aeea7b72750cf1" + ] + }, + "outputId": "389207da-a1a0-4cbf-d9b8-a39546b1b76c" + }, + "source": [ + "# Download COCO128\n", + "torch.hub.download_url_to_file('https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip', 'tmp.zip')\n", + "!unzip -q tmp.zip -d ../ && rm tmp.zip" + ], + "execution_count": 5, + "outputs": [ + { + "output_type": "display_data", + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c1928794b5bd400da6e7817883a0ee9c", + "version_minor": 0, + "version_major": 2 + }, + "text/plain": [ + "HBox(children=(FloatProgress(value=0.0, max=22090455.0), HTML(value='')))" + ] + }, + "metadata": { + "tags": [] + } + }, + { + "output_type": "stream", + "text": [ + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_pOkGLv1dMqh" + }, + "source": [ + "Train a YOLOv3 model on [COCO128](https://www.kaggle.com/ultralytics/coco128) with `--data coco128.yaml`, starting from pretrained `--weights yolov3.pt`, or from randomly initialized `--weights '' --cfg yolov3.yaml`. Models are downloaded automatically from the [latest YOLOv3 release](https://github.com/ultralytics/yolov3/releases), and **COCO, COCO128, and VOC datasets are downloaded automatically** on first use.\n", + "\n", + "All training results are saved to `runs/train/` with incrementing run directories, i.e. `runs/train/exp2`, `runs/train/exp3` etc.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "bOy5KI2ncnWd" + }, + "source": [ + "# Tensorboard (optional)\n", + "%load_ext tensorboard\n", + "%tensorboard --logdir runs" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "2fLAV42oNb7M" + }, + "source": [ + "# Weights & Biases (optional)\n", + "%pip install -q wandb \n", + "!wandb login # use 'wandb disabled' or 'wandb enabled' to disable or enable" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "1NcFxRcFdJ_O", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "2132590a-ff5e-4ab8-a20d-f8bb8ea7c42b" + }, + "source": [ + "# Train YOLOv3 on COCO128 for 3 epochs\n", + "!python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov3.pt --nosave --cache" + ], + "execution_count": 6, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Using torch 1.7.0+cu101 CUDA:0 (Tesla V100-SXM2-16GB, 16130MB)\n", + "\n", + "Namespace(adam=False, batch_size=16, bucket='', cache_images=True, cfg='', data='./data/coco128.yaml', device='', epochs=3, evolve=False, exist_ok=False, global_rank=-1, hyp='data/hyp.scratch.yaml', image_weights=False, img_size=[640, 640], local_rank=-1, log_imgs=16, multi_scale=False, name='exp', noautoanchor=False, nosave=True, notest=False, project='runs/train', rect=False, resume=False, save_dir='runs/train/exp', single_cls=False, sync_bn=False, total_batch_size=16, weights='yolov3.pt', workers=8, world_size=1)\n", + "Start Tensorboard with \"tensorboard --logdir runs/train\", view at http://localhost:6006/\n", + "2020-11-26 18:51:45.386416: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1\n", + "Hyperparameters {'lr0': 0.01, 'lrf': 0.2, 'momentum': 0.937, 'weight_decay': 0.0005, 'warmup_epochs': 3.0, 'warmup_momentum': 0.8, 'warmup_bias_lr': 0.1, 'box': 0.05, 'cls': 0.5, 'cls_pw': 1.0, 'obj': 1.0, 'obj_pw': 1.0, 'iou_t': 0.2, 'anchor_t': 4.0, 'fl_gamma': 0.0, 'hsv_h': 0.015, 'hsv_s': 0.7, 'hsv_v': 0.4, 'degrees': 0.0, 'translate': 0.1, 'scale': 0.5, 'shear': 0.0, 'perspective': 0.0, 'flipud': 0.0, 'fliplr': 0.5, 'mosaic': 1.0, 'mixup': 0.0}\n", + "\n", + " from n params module arguments \n", + " 0 -1 1 928 models.common.Conv [3, 32, 3, 1] \n", + " 1 -1 1 18560 models.common.Conv [32, 64, 3, 2] \n", + " 2 -1 1 20672 models.common.Bottleneck [64, 64] \n", + " 3 -1 1 73984 models.common.Conv [64, 128, 3, 2] \n", + " 4 -1 2 164608 models.common.Bottleneck [128, 128] \n", + " 5 -1 1 295424 models.common.Conv [128, 256, 3, 2] \n", + " 6 -1 8 2627584 models.common.Bottleneck [256, 256] \n", + " 7 -1 1 1180672 models.common.Conv [256, 512, 3, 2] \n", + " 8 -1 8 10498048 models.common.Bottleneck [512, 512] \n", + " 9 -1 1 4720640 models.common.Conv [512, 1024, 3, 2] \n", + " 10 -1 4 20983808 models.common.Bottleneck [1024, 1024] \n", + " 11 -1 1 5245952 models.common.Bottleneck [1024, 1024, False] \n", + " 12 -1 1 525312 models.common.Conv [1024, 512, [1, 1]] \n", + " 13 -1 1 4720640 models.common.Conv [512, 1024, 3, 1] \n", + " 14 -1 1 525312 models.common.Conv [1024, 512, 1, 1] \n", + " 15 -1 1 4720640 models.common.Conv [512, 1024, 3, 1] \n", + " 16 -2 1 131584 models.common.Conv [512, 256, 1, 1] \n", + " 17 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n", + " 18 [-1, 8] 1 0 models.common.Concat [1] \n", + " 19 -1 1 1377792 models.common.Bottleneck [768, 512, False] \n", + " 20 -1 1 1312256 models.common.Bottleneck [512, 512, False] \n", + " 21 -1 1 131584 models.common.Conv [512, 256, 1, 1] \n", + " 22 -1 1 1180672 models.common.Conv [256, 512, 3, 1] \n", + " 23 -2 1 33024 models.common.Conv [256, 128, 1, 1] \n", + " 24 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n", + " 25 [-1, 6] 1 0 models.common.Concat [1] \n", + " 26 -1 1 344832 models.common.Bottleneck [384, 256, False] \n", + " 27 -1 2 656896 models.common.Bottleneck [256, 256, False] \n", + " 28 [27, 22, 15] 1 457725 models.yolo.Detect [80, [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]], [256, 512, 1024]]\n", + "Model Summary: 333 layers, 61949149 parameters, 61949149 gradients\n", + "\n", + "Transferred 440/440 items from yolov3.pt\n", + "Optimizer groups: 75 .bias, 75 conv.weight, 72 other\n", + "Scanning '../coco128/labels/train2017' for images and labels... 128 found, 0 missing, 2 empty, 0 corrupted: 100% 128/128 [00:00<00:00, 3001.29it/s]\n", + "New cache created: ../coco128/labels/train2017.cache\n", + "Scanning '../coco128/labels/train2017.cache' for images and labels... 128 found, 0 missing, 2 empty, 0 corrupted: 100% 128/128 [00:00<00:00, 985084.24it/s]\n", + "Caching images (0.1GB): 100% 128/128 [00:00<00:00, 194.34it/s]\n", + "Scanning '../coco128/labels/train2017.cache' for images and labels... 128 found, 0 missing, 2 empty, 0 corrupted: 100% 128/128 [00:00<00:00, 711087.30it/s]\n", + "Caching images (0.1GB): 100% 128/128 [00:00<00:00, 133.98it/s]\n", + "NumExpr defaulting to 2 threads.\n", + "\n", + "Analyzing anchors... anchors/target = 4.26, Best Possible Recall (BPR) = 0.9946\n", + "Image sizes 640 train, 640 test\n", + "Using 2 dataloader workers\n", + "Logging results to runs/train/exp\n", + "Starting training for 3 epochs...\n", + "\n", + " Epoch gpu_mem box obj cls total targets img_size\n", + " 0/2 8.88G 0.02999 0.02589 0.008271 0.06414 155 640: 100% 8/8 [00:06<00:00, 1.23it/s]\n", + " Class Images Targets P R mAP@.5 mAP@.5:.95: 100% 8/8 [00:06<00:00, 1.19it/s]\n", + " all 128 929 0.527 0.83 0.782 0.547\n", + "\n", + " Epoch gpu_mem box obj cls total targets img_size\n", + " 1/2 8.87G 0.02966 0.02563 0.008289 0.06358 190 640: 100% 8/8 [00:02<00:00, 3.09it/s]\n", + " Class Images Targets P R mAP@.5 mAP@.5:.95: 100% 8/8 [00:01<00:00, 5.90it/s]\n", + " all 128 929 0.528 0.831 0.784 0.55\n", + "\n", + " Epoch gpu_mem box obj cls total targets img_size\n", + " 2/2 8.87G 0.02947 0.02217 0.009194 0.06083 135 640: 100% 8/8 [00:02<00:00, 3.02it/s]\n", + " Class Images Targets P R mAP@.5 mAP@.5:.95: 100% 8/8 [00:02<00:00, 3.07it/s]\n", + " all 128 929 0.528 0.834 0.784 0.55\n", + "Optimizer stripped from runs/train/exp/weights/last.pt, 124.2MB\n", + "Optimizer stripped from runs/train/exp/weights/best.pt, 124.2MB\n", + "3 epochs completed in 0.009 hours.\n", + "\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "15glLzbQx5u0" + }, + "source": [ + "# 4. Visualize" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "DLI1JmHU7B0l" + }, + "source": [ + "## Weights & Biases Logging 🌟 NEW\n", + "\n", + "[Weights & Biases](https://www.wandb.com/) (W&B) is now integrated with YOLOv3 for real-time visualization and cloud logging of training runs. This allows for better run comparison and introspection, as well improved visibility and collaboration for teams. To enable W&B `pip install wandb`, and then train normally (you will be guided through setup on first use). \n", + "\n", + "During training you will see live updates at [https://wandb.ai/home](https://wandb.ai/home), and you can create and share detailed [Reports](https://wandb.ai/glenn-jocher/yolov5_tutorial/reports/YOLOv5-COCO128-Tutorial-Results--VmlldzozMDI5OTY) of your results. For more information see the [YOLOv5 Weights & Biases Tutorial](https://github.com/ultralytics/yolov5/issues/1289). \n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-WPvRbS5Swl6" + }, + "source": [ + "## Local Logging\n", + "\n", + "All results are logged by default to `runs/train`, with a new experiment directory created for each new training as `runs/train/exp2`, `runs/train/exp3`, etc. View train and test jpgs to see mosaics, labels, predictions and augmentation effects. Note a **Mosaic Dataloader** is used for training (shown below), a new concept developed by Ultralytics and first featured in [YOLOv4](https://arxiv.org/abs/2004.10934)." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "riPdhraOTCO0" + }, + "source": [ + "Image(filename='runs/train/exp/train_batch0.jpg', width=800) # train batch 0 mosaics and labels\n", + "Image(filename='runs/train/exp/test_batch0_labels.jpg', width=800) # test batch 0 labels\n", + "Image(filename='runs/train/exp/test_batch0_pred.jpg', width=800) # test batch 0 predictions" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OYG4WFEnTVrI" + }, + "source": [ + "> \n", + "`train_batch0.jpg` shows train batch 0 mosaics and labels\n", + "\n", + "> \n", + "`test_batch0_labels.jpg` shows test batch 0 labels\n", + "\n", + "> \n", + "`test_batch0_pred.jpg` shows test batch 0 _predictions_\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7KN5ghjE6ZWh" + }, + "source": [ + "Training losses and performance metrics are also logged to [Tensorboard](https://www.tensorflow.org/tensorboard) and a custom `results.txt` logfile which is plotted as `results.png` (below) after training completes. Here we show YOLOv3 trained on COCO128 to 300 epochs, starting from scratch (blue), and from pretrained `--weights yolov3.pt` (orange)." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "MDznIqPF7nk3" + }, + "source": [ + "from utils.plots import plot_results \n", + "plot_results(save_dir='runs/train/exp') # plot all results*.txt as results.png\n", + "Image(filename='runs/train/exp/results.png', width=800)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "lfrEegCSW3fK" + }, + "source": [ + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Zelyeqbyt3GD" + }, + "source": [ + "# Environments\n", + "\n", + "YOLOv3 may be run in any of the following up-to-date verified environments (with all dependencies including [CUDA](https://developer.nvidia.com/cuda)/[CUDNN](https://developer.nvidia.com/cudnn), [Python](https://www.python.org/) and [PyTorch](https://pytorch.org/) preinstalled):\n", + "\n", + "- **Google Colab Notebook** with free GPU: \"Open\n", + "- **Kaggle Notebook** with free GPU: [https://www.kaggle.com/ultralytics/yolov3](https://www.kaggle.com/ultralytics/yolov3)\n", + "- **Google Cloud** Deep Learning VM. See [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) \n", + "- **Docker Image** https://hub.docker.com/r/ultralytics/yolov3. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) ![Docker Pulls](https://img.shields.io/docker/pulls/ultralytics/yolov3?logo=docker)\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IEijrePND_2I" + }, + "source": [ + "# Appendix\n", + "\n", + "Optional extras below. Unit tests validate repo functionality and should be run on any PRs submitted.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "gI6NoBev8Ib1" + }, + "source": [ + "# Re-clone repo\n", + "%cd ..\n", + "%rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3\n", + "%cd yolov3" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "mcKoSIK2WSzj" + }, + "source": [ + "# Test all\n", + "%%shell\n", + "for x in yolov3 yolov3-spp yolov3-tiny; do\n", + " python test.py --weights $x.pt --data coco.yaml --img 640\n", + "done" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "FGH0ZjkGjejy" + }, + "source": [ + "# Unit tests\n", + "%%shell\n", + "export PYTHONPATH=\"$PWD\" # to run *.py. files in subdirectories\n", + "\n", + "rm -rf runs # remove runs/\n", + "for m in yolov3; do # models\n", + " python train.py --weights $m.pt --epochs 3 --img 320 --device 0 # train pretrained\n", + " python train.py --weights '' --cfg $m.yaml --epochs 3 --img 320 --device 0 # train scratch\n", + " for d in 0 cpu; do # devices\n", + " python detect.py --weights $m.pt --device $d # detect official\n", + " python detect.py --weights runs/train/exp/weights/best.pt --device $d # detect custom\n", + " python test.py --weights $m.pt --device $d # test official\n", + " python test.py --weights runs/train/exp/weights/best.pt --device $d # test custom\n", + " done\n", + " python hubconf.py # hub\n", + " python models/yolo.py --cfg $m.yaml # inspect\n", + " python models/export.py --weights $m.pt --img 640 --batch 1 # export\n", + "done" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "BSgFCAcMbk1R" + }, + "source": [ + "# VOC\n", + "for b, m in zip([24, 24, 64], ['yolov3', 'yolov3-spp', 'yolov3-tiny']): # zip(batch_size, model)\n", + " !python train.py --batch {b} --weights {m}.pt --data voc.yaml --epochs 50 --cache --img 512 --nosave --hyp hyp.finetune.yaml --project VOC --name {m}" + ], + "execution_count": null, + "outputs": [] } - ], - "source": [ - "!python3 train.py --data data/coco_16img.data --batch-size 16 --accumulate 1 --nosave && mv results.txt results_coco_16img.txt # CUSTOM TRAINING EXAMPLE\n", - "!python3 train.py --data data/coco_64img.data --batch-size 16 --accumulate 1 --nosave && mv results.txt results_coco_64img.txt \n", - "!python3 -c \"from utils import utils; utils.plot_results()\" # plot training results\n", - "Image(filename='results.png', width=800)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "colab_type": "text", - "id": "14mT7T7Q6erR" - }, - "source": [ - "Extras below\n", - "\n", - "---\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 0, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "42_zEpW6W_N1" - }, - "outputs": [], - "source": [ - "!git pull" - ] - }, - { - "cell_type": "code", - "execution_count": 0, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "9bVTcveIOzDd" - }, - "outputs": [], - "source": [ - "%cd yolov3" - ] - }, - { - "cell_type": "code", - "execution_count": 0, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "odMr0JFnCEyb" - }, - "outputs": [], - "source": [ - "%ls" - ] - }, - { - "cell_type": "code", - "execution_count": 0, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "uB3v5hj_CEyI" - }, - "outputs": [], - "source": [ - "# Unit Tests\n", - "!python3 detect.py # detect 2 persons, 1 tie\n", - "!python3 test.py --data data/coco_32img.data # test mAP = 0.8\n", - "!python3 train.py --data data/coco_32img.data --epochs 3 --nosave # train 3 epochs" - ] - }, - { - "cell_type": "code", - "execution_count": 0, - "metadata": { - "colab": {}, - "colab_type": "code", - "id": "6D0si0TNCEx5" - }, - "outputs": [], - "source": [ - "# Evolve Hyperparameters\n", - "!python3 train.py --data data/coco.data --img-size 320 --epochs 1 --evolve" - ] - } - ], - "metadata": { - "accelerator": "GPU", - "colab": { - "collapsed_sections": [], - "name": "ultralytics/YOLOv3", - "provenance": [], - "version": "0.3.2" - }, - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.7.4" - } - }, - "nbformat": 4, - "nbformat_minor": 1 -} + ] +} \ No newline at end of file diff --git a/utils/activations.py b/utils/activations.py new file mode 100644 index 00000000..ba6b854d --- /dev/null +++ b/utils/activations.py @@ -0,0 +1,72 @@ +# Activation functions + +import torch +import torch.nn as nn +import torch.nn.functional as F + + +# Swish https://arxiv.org/pdf/1905.02244.pdf --------------------------------------------------------------------------- +class Swish(nn.Module): # + @staticmethod + def forward(x): + return x * torch.sigmoid(x) + + +class Hardswish(nn.Module): # export-friendly version of nn.Hardswish() + @staticmethod + def forward(x): + # return x * F.hardsigmoid(x) # for torchscript and CoreML + return x * F.hardtanh(x + 3, 0., 6.) / 6. # for torchscript, CoreML and ONNX + + +class MemoryEfficientSwish(nn.Module): + class F(torch.autograd.Function): + @staticmethod + def forward(ctx, x): + ctx.save_for_backward(x) + return x * torch.sigmoid(x) + + @staticmethod + def backward(ctx, grad_output): + x = ctx.saved_tensors[0] + sx = torch.sigmoid(x) + return grad_output * (sx * (1 + x * (1 - sx))) + + def forward(self, x): + return self.F.apply(x) + + +# Mish https://github.com/digantamisra98/Mish -------------------------------------------------------------------------- +class Mish(nn.Module): + @staticmethod + def forward(x): + return x * F.softplus(x).tanh() + + +class MemoryEfficientMish(nn.Module): + class F(torch.autograd.Function): + @staticmethod + def forward(ctx, x): + ctx.save_for_backward(x) + return x.mul(torch.tanh(F.softplus(x))) # x * tanh(ln(1 + exp(x))) + + @staticmethod + def backward(ctx, grad_output): + x = ctx.saved_tensors[0] + sx = torch.sigmoid(x) + fx = F.softplus(x).tanh() + return grad_output * (fx + x * sx * (1 - fx * fx)) + + def forward(self, x): + return self.F.apply(x) + + +# FReLU https://arxiv.org/abs/2007.11824 ------------------------------------------------------------------------------- +class FReLU(nn.Module): + def __init__(self, c1, k=3): # ch_in, kernel + super().__init__() + self.conv = nn.Conv2d(c1, c1, k, 1, 1, groups=c1) + self.bn = nn.BatchNorm2d(c1) + + def forward(self, x): + return torch.max(x, self.bn(self.conv(x))) diff --git a/utils/adabound.py b/utils/adabound.py deleted file mode 100644 index 8baa3780..00000000 --- a/utils/adabound.py +++ /dev/null @@ -1,236 +0,0 @@ -import math - -import torch -from torch.optim.optimizer import Optimizer - - -class AdaBound(Optimizer): - """Implements AdaBound algorithm. - It has been proposed in `Adaptive Gradient Methods with Dynamic Bound of Learning Rate`_. - Arguments: - params (iterable): iterable of parameters to optimize or dicts defining - parameter groups - lr (float, optional): Adam learning rate (default: 1e-3) - betas (Tuple[float, float], optional): coefficients used for computing - running averages of gradient and its square (default: (0.9, 0.999)) - final_lr (float, optional): final (SGD) learning rate (default: 0.1) - gamma (float, optional): convergence speed of the bound functions (default: 1e-3) - eps (float, optional): term added to the denominator to improve - numerical stability (default: 1e-8) - weight_decay (float, optional): weight decay (L2 penalty) (default: 0) - amsbound (boolean, optional): whether to use the AMSBound variant of this algorithm - .. Adaptive Gradient Methods with Dynamic Bound of Learning Rate: - https://openreview.net/forum?id=Bkg3g2R9FX - """ - - def __init__(self, params, lr=1e-3, betas=(0.9, 0.999), final_lr=0.1, gamma=1e-3, - eps=1e-8, weight_decay=0, amsbound=False): - if not 0.0 <= lr: - raise ValueError("Invalid learning rate: {}".format(lr)) - if not 0.0 <= eps: - raise ValueError("Invalid epsilon value: {}".format(eps)) - if not 0.0 <= betas[0] < 1.0: - raise ValueError("Invalid beta parameter at index 0: {}".format(betas[0])) - if not 0.0 <= betas[1] < 1.0: - raise ValueError("Invalid beta parameter at index 1: {}".format(betas[1])) - if not 0.0 <= final_lr: - raise ValueError("Invalid final learning rate: {}".format(final_lr)) - if not 0.0 <= gamma < 1.0: - raise ValueError("Invalid gamma parameter: {}".format(gamma)) - defaults = dict(lr=lr, betas=betas, final_lr=final_lr, gamma=gamma, eps=eps, - weight_decay=weight_decay, amsbound=amsbound) - super(AdaBound, self).__init__(params, defaults) - - self.base_lrs = list(map(lambda group: group['lr'], self.param_groups)) - - def __setstate__(self, state): - super(AdaBound, self).__setstate__(state) - for group in self.param_groups: - group.setdefault('amsbound', False) - - def step(self, closure=None): - """Performs a single optimization step. - Arguments: - closure (callable, optional): A closure that reevaluates the model - and returns the loss. - """ - loss = None - if closure is not None: - loss = closure() - - for group, base_lr in zip(self.param_groups, self.base_lrs): - for p in group['params']: - if p.grad is None: - continue - grad = p.grad.data - if grad.is_sparse: - raise RuntimeError( - 'Adam does not support sparse gradients, please consider SparseAdam instead') - amsbound = group['amsbound'] - - state = self.state[p] - - # State initialization - if len(state) == 0: - state['step'] = 0 - # Exponential moving average of gradient values - state['exp_avg'] = torch.zeros_like(p.data) - # Exponential moving average of squared gradient values - state['exp_avg_sq'] = torch.zeros_like(p.data) - if amsbound: - # Maintains max of all exp. moving avg. of sq. grad. values - state['max_exp_avg_sq'] = torch.zeros_like(p.data) - - exp_avg, exp_avg_sq = state['exp_avg'], state['exp_avg_sq'] - if amsbound: - max_exp_avg_sq = state['max_exp_avg_sq'] - beta1, beta2 = group['betas'] - - state['step'] += 1 - - if group['weight_decay'] != 0: - grad = grad.add(group['weight_decay'], p.data) - - # Decay the first and second moment running average coefficient - exp_avg.mul_(beta1).add_(1 - beta1, grad) - exp_avg_sq.mul_(beta2).addcmul_(1 - beta2, grad, grad) - if amsbound: - # Maintains the maximum of all 2nd moment running avg. till now - torch.max(max_exp_avg_sq, exp_avg_sq, out=max_exp_avg_sq) - # Use the max. for normalizing running avg. of gradient - denom = max_exp_avg_sq.sqrt().add_(group['eps']) - else: - denom = exp_avg_sq.sqrt().add_(group['eps']) - - bias_correction1 = 1 - beta1 ** state['step'] - bias_correction2 = 1 - beta2 ** state['step'] - step_size = group['lr'] * math.sqrt(bias_correction2) / bias_correction1 - - # Applies bounds on actual learning rate - # lr_scheduler cannot affect final_lr, this is a workaround to apply lr decay - final_lr = group['final_lr'] * group['lr'] / base_lr - lower_bound = final_lr * (1 - 1 / (group['gamma'] * state['step'] + 1)) - upper_bound = final_lr * (1 + 1 / (group['gamma'] * state['step'])) - step_size = torch.full_like(denom, step_size) - step_size.div_(denom).clamp_(lower_bound, upper_bound).mul_(exp_avg) - - p.data.add_(-step_size) - - return loss - - -class AdaBoundW(Optimizer): - """Implements AdaBound algorithm with Decoupled Weight Decay (arxiv.org/abs/1711.05101) - It has been proposed in `Adaptive Gradient Methods with Dynamic Bound of Learning Rate`_. - Arguments: - params (iterable): iterable of parameters to optimize or dicts defining - parameter groups - lr (float, optional): Adam learning rate (default: 1e-3) - betas (Tuple[float, float], optional): coefficients used for computing - running averages of gradient and its square (default: (0.9, 0.999)) - final_lr (float, optional): final (SGD) learning rate (default: 0.1) - gamma (float, optional): convergence speed of the bound functions (default: 1e-3) - eps (float, optional): term added to the denominator to improve - numerical stability (default: 1e-8) - weight_decay (float, optional): weight decay (L2 penalty) (default: 0) - amsbound (boolean, optional): whether to use the AMSBound variant of this algorithm - .. Adaptive Gradient Methods with Dynamic Bound of Learning Rate: - https://openreview.net/forum?id=Bkg3g2R9FX - """ - - def __init__(self, params, lr=1e-3, betas=(0.9, 0.999), final_lr=0.1, gamma=1e-3, - eps=1e-8, weight_decay=0, amsbound=False): - if not 0.0 <= lr: - raise ValueError("Invalid learning rate: {}".format(lr)) - if not 0.0 <= eps: - raise ValueError("Invalid epsilon value: {}".format(eps)) - if not 0.0 <= betas[0] < 1.0: - raise ValueError("Invalid beta parameter at index 0: {}".format(betas[0])) - if not 0.0 <= betas[1] < 1.0: - raise ValueError("Invalid beta parameter at index 1: {}".format(betas[1])) - if not 0.0 <= final_lr: - raise ValueError("Invalid final learning rate: {}".format(final_lr)) - if not 0.0 <= gamma < 1.0: - raise ValueError("Invalid gamma parameter: {}".format(gamma)) - defaults = dict(lr=lr, betas=betas, final_lr=final_lr, gamma=gamma, eps=eps, - weight_decay=weight_decay, amsbound=amsbound) - super(AdaBoundW, self).__init__(params, defaults) - - self.base_lrs = list(map(lambda group: group['lr'], self.param_groups)) - - def __setstate__(self, state): - super(AdaBoundW, self).__setstate__(state) - for group in self.param_groups: - group.setdefault('amsbound', False) - - def step(self, closure=None): - """Performs a single optimization step. - Arguments: - closure (callable, optional): A closure that reevaluates the model - and returns the loss. - """ - loss = None - if closure is not None: - loss = closure() - - for group, base_lr in zip(self.param_groups, self.base_lrs): - for p in group['params']: - if p.grad is None: - continue - grad = p.grad.data - if grad.is_sparse: - raise RuntimeError( - 'Adam does not support sparse gradients, please consider SparseAdam instead') - amsbound = group['amsbound'] - - state = self.state[p] - - # State initialization - if len(state) == 0: - state['step'] = 0 - # Exponential moving average of gradient values - state['exp_avg'] = torch.zeros_like(p.data) - # Exponential moving average of squared gradient values - state['exp_avg_sq'] = torch.zeros_like(p.data) - if amsbound: - # Maintains max of all exp. moving avg. of sq. grad. values - state['max_exp_avg_sq'] = torch.zeros_like(p.data) - - exp_avg, exp_avg_sq = state['exp_avg'], state['exp_avg_sq'] - if amsbound: - max_exp_avg_sq = state['max_exp_avg_sq'] - beta1, beta2 = group['betas'] - - state['step'] += 1 - - # Decay the first and second moment running average coefficient - exp_avg.mul_(beta1).add_(1 - beta1, grad) - exp_avg_sq.mul_(beta2).addcmul_(1 - beta2, grad, grad) - if amsbound: - # Maintains the maximum of all 2nd moment running avg. till now - torch.max(max_exp_avg_sq, exp_avg_sq, out=max_exp_avg_sq) - # Use the max. for normalizing running avg. of gradient - denom = max_exp_avg_sq.sqrt().add_(group['eps']) - else: - denom = exp_avg_sq.sqrt().add_(group['eps']) - - bias_correction1 = 1 - beta1 ** state['step'] - bias_correction2 = 1 - beta2 ** state['step'] - step_size = group['lr'] * math.sqrt(bias_correction2) / bias_correction1 - - # Applies bounds on actual learning rate - # lr_scheduler cannot affect final_lr, this is a workaround to apply lr decay - final_lr = group['final_lr'] * group['lr'] / base_lr - lower_bound = final_lr * (1 - 1 / (group['gamma'] * state['step'] + 1)) - upper_bound = final_lr * (1 + 1 / (group['gamma'] * state['step'])) - step_size = torch.full_like(denom, step_size) - step_size.div_(denom).clamp_(lower_bound, upper_bound).mul_(exp_avg) - - if group['weight_decay'] != 0: - decayed_weights = torch.mul(p.data, group['weight_decay']) - p.data.add_(-step_size) - p.data.sub_(decayed_weights) - else: - p.data.add_(-step_size) - - return loss diff --git a/utils/autoanchor.py b/utils/autoanchor.py new file mode 100644 index 00000000..b678bbbd --- /dev/null +++ b/utils/autoanchor.py @@ -0,0 +1,152 @@ +# Auto-anchor utils + +import numpy as np +import torch +import yaml +from scipy.cluster.vq import kmeans +from tqdm import tqdm + + +def check_anchor_order(m): + # Check anchor order against stride order for YOLOv3 Detect() module m, and correct if necessary + a = m.anchor_grid.prod(-1).view(-1) # anchor area + da = a[-1] - a[0] # delta a + ds = m.stride[-1] - m.stride[0] # delta s + if da.sign() != ds.sign(): # same order + print('Reversing anchor order') + m.anchors[:] = m.anchors.flip(0) + m.anchor_grid[:] = m.anchor_grid.flip(0) + + +def check_anchors(dataset, model, thr=4.0, imgsz=640): + # Check anchor fit to data, recompute if necessary + print('\nAnalyzing anchors... ', end='') + m = model.module.model[-1] if hasattr(model, 'module') else model.model[-1] # Detect() + shapes = imgsz * dataset.shapes / dataset.shapes.max(1, keepdims=True) + scale = np.random.uniform(0.9, 1.1, size=(shapes.shape[0], 1)) # augment scale + wh = torch.tensor(np.concatenate([l[:, 3:5] * s for s, l in zip(shapes * scale, dataset.labels)])).float() # wh + + def metric(k): # compute metric + r = wh[:, None] / k[None] + x = torch.min(r, 1. / r).min(2)[0] # ratio metric + best = x.max(1)[0] # best_x + aat = (x > 1. / thr).float().sum(1).mean() # anchors above threshold + bpr = (best > 1. / thr).float().mean() # best possible recall + return bpr, aat + + bpr, aat = metric(m.anchor_grid.clone().cpu().view(-1, 2)) + print('anchors/target = %.2f, Best Possible Recall (BPR) = %.4f' % (aat, bpr), end='') + if bpr < 0.98: # threshold to recompute + print('. Attempting to improve anchors, please wait...') + na = m.anchor_grid.numel() // 2 # number of anchors + new_anchors = kmean_anchors(dataset, n=na, img_size=imgsz, thr=thr, gen=1000, verbose=False) + new_bpr = metric(new_anchors.reshape(-1, 2))[0] + if new_bpr > bpr: # replace anchors + new_anchors = torch.tensor(new_anchors, device=m.anchors.device).type_as(m.anchors) + m.anchor_grid[:] = new_anchors.clone().view_as(m.anchor_grid) # for inference + m.anchors[:] = new_anchors.clone().view_as(m.anchors) / m.stride.to(m.anchors.device).view(-1, 1, 1) # loss + check_anchor_order(m) + print('New anchors saved to model. Update model *.yaml to use these anchors in the future.') + else: + print('Original anchors better than new anchors. Proceeding with original anchors.') + print('') # newline + + +def kmean_anchors(path='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen=1000, verbose=True): + """ Creates kmeans-evolved anchors from training dataset + + Arguments: + path: path to dataset *.yaml, or a loaded dataset + n: number of anchors + img_size: image size used for training + thr: anchor-label wh ratio threshold hyperparameter hyp['anchor_t'] used for training, default=4.0 + gen: generations to evolve anchors using genetic algorithm + verbose: print all results + + Return: + k: kmeans evolved anchors + + Usage: + from utils.autoanchor import *; _ = kmean_anchors() + """ + thr = 1. / thr + + def metric(k, wh): # compute metrics + r = wh[:, None] / k[None] + x = torch.min(r, 1. / r).min(2)[0] # ratio metric + # x = wh_iou(wh, torch.tensor(k)) # iou metric + return x, x.max(1)[0] # x, best_x + + def anchor_fitness(k): # mutation fitness + _, best = metric(torch.tensor(k, dtype=torch.float32), wh) + return (best * (best > thr).float()).mean() # fitness + + def print_results(k): + k = k[np.argsort(k.prod(1))] # sort small to large + x, best = metric(k, wh0) + bpr, aat = (best > thr).float().mean(), (x > thr).float().mean() * n # best possible recall, anch > thr + print('thr=%.2f: %.4f best possible recall, %.2f anchors past thr' % (thr, bpr, aat)) + print('n=%g, img_size=%s, metric_all=%.3f/%.3f-mean/best, past_thr=%.3f-mean: ' % + (n, img_size, x.mean(), best.mean(), x[x > thr].mean()), end='') + for i, x in enumerate(k): + print('%i,%i' % (round(x[0]), round(x[1])), end=', ' if i < len(k) - 1 else '\n') # use in *.cfg + return k + + if isinstance(path, str): # *.yaml file + with open(path) as f: + data_dict = yaml.load(f, Loader=yaml.FullLoader) # model dict + from utils.datasets import LoadImagesAndLabels + dataset = LoadImagesAndLabels(data_dict['train'], augment=True, rect=True) + else: + dataset = path # dataset + + # Get label wh + shapes = img_size * dataset.shapes / dataset.shapes.max(1, keepdims=True) + wh0 = np.concatenate([l[:, 3:5] * s for s, l in zip(shapes, dataset.labels)]) # wh + + # Filter + i = (wh0 < 3.0).any(1).sum() + if i: + print('WARNING: Extremely small objects found. ' + '%g of %g labels are < 3 pixels in width or height.' % (i, len(wh0))) + wh = wh0[(wh0 >= 2.0).any(1)] # filter > 2 pixels + + # Kmeans calculation + print('Running kmeans for %g anchors on %g points...' % (n, len(wh))) + s = wh.std(0) # sigmas for whitening + k, dist = kmeans(wh / s, n, iter=30) # points, mean distance + k *= s + wh = torch.tensor(wh, dtype=torch.float32) # filtered + wh0 = torch.tensor(wh0, dtype=torch.float32) # unfiltered + k = print_results(k) + + # Plot + # k, d = [None] * 20, [None] * 20 + # for i in tqdm(range(1, 21)): + # k[i-1], d[i-1] = kmeans(wh / s, i) # points, mean distance + # fig, ax = plt.subplots(1, 2, figsize=(14, 7)) + # ax = ax.ravel() + # ax[0].plot(np.arange(1, 21), np.array(d) ** 2, marker='.') + # fig, ax = plt.subplots(1, 2, figsize=(14, 7)) # plot wh + # ax[0].hist(wh[wh[:, 0]<100, 0],400) + # ax[1].hist(wh[wh[:, 1]<100, 1],400) + # fig.tight_layout() + # fig.savefig('wh.png', dpi=200) + + # Evolve + npr = np.random + f, sh, mp, s = anchor_fitness(k), k.shape, 0.9, 0.1 # fitness, generations, mutation prob, sigma + pbar = tqdm(range(gen), desc='Evolving anchors with Genetic Algorithm') # progress bar + for _ in pbar: + v = np.ones(sh) + while (v == 1).all(): # mutate until a change occurs (prevent duplicates) + v = ((npr.random(sh) < mp) * npr.random() * npr.randn(*sh) * s + 1).clip(0.3, 3.0) + kg = (k.copy() * v).clip(min=2.0) + fg = anchor_fitness(kg) + if fg > f: + f, k = fg, kg.copy() + pbar.desc = 'Evolving anchors with Genetic Algorithm: fitness = %.4f' % f + if verbose: + print_results(k) + + return print_results(k) diff --git a/utils/datasets.py b/utils/datasets.py index 6bb81803..7203d962 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -1,9 +1,14 @@ +# Dataset utils and dataloaders + import glob +import logging import math import os import random import shutil import time +from itertools import repeat +from multiprocessing.pool import ThreadPool from pathlib import Path from threading import Thread @@ -14,11 +19,14 @@ from PIL import Image, ExifTags from torch.utils.data import Dataset from tqdm import tqdm -from utils.utils import xyxy2xywh, xywh2xyxy +from utils.general import xyxy2xywh, xywh2xyxy +from utils.torch_utils import torch_distributed_zero_first +# Parameters help_url = 'https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data' -img_formats = ['.bmp', '.jpg', '.jpeg', '.png', '.tif', '.tiff', '.dng'] -vid_formats = ['.mov', '.avi', '.mp4', '.mpg', '.mpeg', '.m4v', '.wmv', '.mkv'] +img_formats = ['bmp', 'jpg', 'jpeg', 'png', 'tif', 'tiff', 'dng'] # acceptable image suffixes +vid_formats = ['mov', 'avi', 'mp4', 'mpg', 'mpeg', 'm4v', 'wmv', 'mkv'] # acceptable video suffixes +logger = logging.getLogger(__name__) # Get orientation exif tag for orientation in ExifTags.TAGS.keys(): @@ -26,6 +34,11 @@ for orientation in ExifTags.TAGS.keys(): break +def get_hash(files): + # Returns a single hash value of a list of files + return sum(os.path.getsize(f) for f in files if os.path.isfile(f)) + + def exif_size(img): # Returns exif-corrected PIL size s = img.size # (width, height) @@ -41,37 +54,104 @@ def exif_size(img): return s -class LoadImages: # for inference - def __init__(self, path, img_size=416): - path = str(Path(path)) # os-agnostic - files = [] - if os.path.isdir(path): - files = sorted(glob.glob(os.path.join(path, '*.*'))) - elif os.path.isfile(path): - files = [path] +def create_dataloader(path, imgsz, batch_size, stride, opt, hyp=None, augment=False, cache=False, pad=0.0, rect=False, + rank=-1, world_size=1, workers=8, image_weights=False): + # Make sure only the first process in DDP process the dataset first, and the following others can use the cache + with torch_distributed_zero_first(rank): + dataset = LoadImagesAndLabels(path, imgsz, batch_size, + augment=augment, # augment images + hyp=hyp, # augmentation hyperparameters + rect=rect, # rectangular training + cache_images=cache, + single_cls=opt.single_cls, + stride=int(stride), + pad=pad, + rank=rank, + image_weights=image_weights) - images = [x for x in files if os.path.splitext(x)[-1].lower() in img_formats] - videos = [x for x in files if os.path.splitext(x)[-1].lower() in vid_formats] - nI, nV = len(images), len(videos) + batch_size = min(batch_size, len(dataset)) + nw = min([os.cpu_count() // world_size, batch_size if batch_size > 1 else 0, workers]) # number of workers + sampler = torch.utils.data.distributed.DistributedSampler(dataset) if rank != -1 else None + loader = torch.utils.data.DataLoader if image_weights else InfiniteDataLoader + # Use torch.utils.data.DataLoader() if dataset.properties will update during training else InfiniteDataLoader() + dataloader = loader(dataset, + batch_size=batch_size, + num_workers=nw, + sampler=sampler, + pin_memory=True, + collate_fn=LoadImagesAndLabels.collate_fn) + return dataloader, dataset + + +class InfiniteDataLoader(torch.utils.data.dataloader.DataLoader): + """ Dataloader that reuses workers + + Uses same syntax as vanilla DataLoader + """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + object.__setattr__(self, 'batch_sampler', _RepeatSampler(self.batch_sampler)) + self.iterator = super().__iter__() + + def __len__(self): + return len(self.batch_sampler.sampler) + + def __iter__(self): + for i in range(len(self)): + yield next(self.iterator) + + +class _RepeatSampler(object): + """ Sampler that repeats forever + + Args: + sampler (Sampler) + """ + + def __init__(self, sampler): + self.sampler = sampler + + def __iter__(self): + while True: + yield from iter(self.sampler) + + +class LoadImages: # for inference + def __init__(self, path, img_size=640): + p = str(Path(path)) # os-agnostic + p = os.path.abspath(p) # absolute path + if '*' in p: + files = sorted(glob.glob(p, recursive=True)) # glob + elif os.path.isdir(p): + files = sorted(glob.glob(os.path.join(p, '*.*'))) # dir + elif os.path.isfile(p): + files = [p] # files + else: + raise Exception('ERROR: %s does not exist' % p) + + images = [x for x in files if x.split('.')[-1].lower() in img_formats] + videos = [x for x in files if x.split('.')[-1].lower() in vid_formats] + ni, nv = len(images), len(videos) self.img_size = img_size self.files = images + videos - self.nF = nI + nV # number of files - self.video_flag = [False] * nI + [True] * nV + self.nf = ni + nv # number of files + self.video_flag = [False] * ni + [True] * nv self.mode = 'images' if any(videos): self.new_video(videos[0]) # new video else: self.cap = None - assert self.nF > 0, 'No images or videos found in %s. Supported formats are:\nimages: %s\nvideos: %s' % \ - (path, img_formats, vid_formats) + assert self.nf > 0, 'No images or videos found in %s. Supported formats are:\nimages: %s\nvideos: %s' % \ + (p, img_formats, vid_formats) def __iter__(self): self.count = 0 return self def __next__(self): - if self.count == self.nF: + if self.count == self.nf: raise StopIteration path = self.files[self.count] @@ -82,7 +162,7 @@ class LoadImages: # for inference if not ret_val: self.count += 1 self.cap.release() - if self.count == self.nF: # last video + if self.count == self.nf: # last video raise StopIteration else: path = self.files[self.count] @@ -90,14 +170,14 @@ class LoadImages: # for inference ret_val, img0 = self.cap.read() self.frame += 1 - print('video %g/%g (%g/%g) %s: ' % (self.count + 1, self.nF, self.frame, self.nframes, path), end='') + print('video %g/%g (%g/%g) %s: ' % (self.count + 1, self.nf, self.frame, self.nframes, path), end='') else: # Read image self.count += 1 img0 = cv2.imread(path) # BGR assert img0 is not None, 'Image Not Found ' + path - print('image %g/%g %s: ' % (self.count, self.nF, path), end='') + print('image %g/%g %s: ' % (self.count, self.nf, path), end='') # Padded resize img = letterbox(img0, new_shape=self.img_size)[0] @@ -106,7 +186,6 @@ class LoadImages: # for inference img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416 img = np.ascontiguousarray(img) - # cv2.imwrite(path + '.letterbox.jpg', 255 * img.transpose((1, 2, 0))[:, :, ::-1]) # save letterbox image return path, img, img0, self.cap def new_video(self, path): @@ -115,27 +194,19 @@ class LoadImages: # for inference self.nframes = int(self.cap.get(cv2.CAP_PROP_FRAME_COUNT)) def __len__(self): - return self.nF # number of files + return self.nf # number of files class LoadWebcam: # for inference - def __init__(self, pipe=0, img_size=416): + def __init__(self, pipe='0', img_size=640): self.img_size = img_size - if pipe == '0': - pipe = 0 # local camera + if pipe.isnumeric(): + pipe = eval(pipe) # local camera # pipe = 'rtsp://192.168.1.64/1' # IP camera # pipe = 'rtsp://username:password@192.168.1.64/1' # IP camera with login - # pipe = 'rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa' # IP traffic camera # pipe = 'http://wmccpinetop.axiscam.net/mjpg/video.mjpg' # IP golf camera - # https://answers.opencv.org/question/215996/changing-gstreamer-pipeline-to-opencv-in-pythonsolved/ - # pipe = '"rtspsrc location="rtsp://username:password@192.168.1.64/1" latency=10 ! appsink' # GStreamer - - # https://answers.opencv.org/question/200787/video-acceleration-gstremer-pipeline-in-videocapture/ - # https://stackoverflow.com/questions/54095699/install-gstreamer-support-for-opencv-python-package # install help - # pipe = "rtspsrc location=rtsp://root:root@192.168.0.91:554/axis-media/media.amp?videocodec=h264&resolution=3840x2160 protocols=GST_RTSP_LOWER_TRANS_TCP ! rtph264depay ! queue ! vaapih264dec ! videoconvert ! appsink" # GStreamer - self.pipe = pipe self.cap = cv2.VideoCapture(pipe) # video capture object self.cap.set(cv2.CAP_PROP_BUFFERSIZE, 3) # set buffer size @@ -184,7 +255,7 @@ class LoadWebcam: # for inference class LoadStreams: # multiple IP or RTSP cameras - def __init__(self, sources='streams.txt', img_size=416): + def __init__(self, sources='streams.txt', img_size=640): self.mode = 'images' self.img_size = img_size @@ -200,7 +271,7 @@ class LoadStreams: # multiple IP or RTSP cameras for i, s in enumerate(sources): # Start the thread to read frames from the video stream print('%g/%g: %s... ' % (i + 1, n, s), end='') - cap = cv2.VideoCapture(0 if s == '0' else s) + cap = cv2.VideoCapture(eval(s) if s.isnumeric() else s) assert cap.isOpened(), 'Failed to open %s' % s w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) @@ -256,55 +327,77 @@ class LoadStreams: # multiple IP or RTSP cameras return 0 # 1E12 frames = 32 streams at 30 FPS for 30 years +def img2label_paths(img_paths): + # Define label paths as a function of image paths + sa, sb = os.sep + 'images' + os.sep, os.sep + 'labels' + os.sep # /images/, /labels/ substrings + return [x.replace(sa, sb, 1).replace('.' + x.split('.')[-1], '.txt') for x in img_paths] + + class LoadImagesAndLabels(Dataset): # for training/testing - def __init__(self, path, img_size=416, batch_size=16, augment=False, hyp=None, rect=False, image_weights=False, - cache_images=False, single_cls=False, pad=0.0): - try: - path = str(Path(path)) # os-agnostic - parent = str(Path(path).parent) + os.sep - if os.path.isfile(path): # file - with open(path, 'r') as f: - f = f.read().splitlines() - f = [x.replace('./', parent) if x.startswith('./') else x for x in f] # local to global path - elif os.path.isdir(path): # folder - f = glob.iglob(path + os.sep + '*.*') - else: - raise Exception('%s does not exist' % path) - self.img_files = [x.replace('/', os.sep) for x in f if os.path.splitext(x)[-1].lower() in img_formats] - except: - raise Exception('Error loading data from %s. See %s' % (path, help_url)) - - n = len(self.img_files) - assert n > 0, 'No images found in %s. See %s' % (path, help_url) - bi = np.floor(np.arange(n) / batch_size).astype(np.int) # batch index - nb = bi[-1] + 1 # number of batches - - self.n = n # number of images - self.batch = bi # batch index of image + def __init__(self, path, img_size=640, batch_size=16, augment=False, hyp=None, rect=False, image_weights=False, + cache_images=False, single_cls=False, stride=32, pad=0.0, rank=-1): self.img_size = img_size self.augment = augment self.hyp = hyp self.image_weights = image_weights self.rect = False if image_weights else rect self.mosaic = self.augment and not self.rect # load 4 images at a time into a mosaic (only during training) + self.mosaic_border = [-img_size // 2, -img_size // 2] + self.stride = stride - # Define labels - self.label_files = [x.replace('images', 'labels').replace(os.path.splitext(x)[-1], '.txt') - for x in self.img_files] - - # Read image shapes (wh) - sp = path.replace('.txt', '') + '.shapes' # shapefile path try: - with open(sp, 'r') as f: # read existing shapefile - s = [x.split() for x in f.read().splitlines()] - assert len(s) == n, 'Shapefile out of sync' - except: - s = [exif_size(Image.open(f)) for f in tqdm(self.img_files, desc='Reading image shapes')] - np.savetxt(sp, s, fmt='%g') # overwrites existing (if any) + f = [] # image files + for p in path if isinstance(path, list) else [path]: + p = Path(p) # os-agnostic + if p.is_dir(): # dir + f += glob.glob(str(p / '**' / '*.*'), recursive=True) + elif p.is_file(): # file + with open(p, 'r') as t: + t = t.read().splitlines() + parent = str(p.parent) + os.sep + f += [x.replace('./', parent) if x.startswith('./') else x for x in t] # local to global path + else: + raise Exception('%s does not exist' % p) + self.img_files = sorted([x.replace('/', os.sep) for x in f if x.split('.')[-1].lower() in img_formats]) + assert self.img_files, 'No images found' + except Exception as e: + raise Exception('Error loading data from %s: %s\nSee %s' % (path, e, help_url)) - self.shapes = np.array(s, dtype=np.float64) + # Check cache + self.label_files = img2label_paths(self.img_files) # labels + cache_path = Path(self.label_files[0]).parent.with_suffix('.cache') # cached labels + if cache_path.is_file(): + cache = torch.load(cache_path) # load + if cache['hash'] != get_hash(self.label_files + self.img_files) or 'results' not in cache: # changed + cache = self.cache_labels(cache_path) # re-cache + else: + cache = self.cache_labels(cache_path) # cache - # Rectangular Training https://github.com/ultralytics/yolov3/issues/232 + # Display cache + [nf, nm, ne, nc, n] = cache.pop('results') # found, missing, empty, corrupted, total + desc = f"Scanning '{cache_path}' for images and labels... {nf} found, {nm} missing, {ne} empty, {nc} corrupted" + tqdm(None, desc=desc, total=n, initial=n) + assert nf > 0 or not augment, f'No labels found in {cache_path}. Can not train without labels. See {help_url}' + + # Read cache + cache.pop('hash') # remove hash + labels, shapes = zip(*cache.values()) + self.labels = list(labels) + self.shapes = np.array(shapes, dtype=np.float64) + self.img_files = list(cache.keys()) # update + self.label_files = img2label_paths(cache.keys()) # update + if single_cls: + for x in self.labels: + x[:, 0] = 0 + + n = len(shapes) # number of images + bi = np.floor(np.arange(n) / batch_size).astype(np.int) # batch index + nb = bi[-1] + 1 # number of batches + self.batch = bi # batch index of image + self.n = n + self.indices = range(n) + + # Rectangular Training if self.rect: # Sort by aspect ratio s = self.shapes # wh @@ -312,6 +405,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing irect = ar.argsort() self.img_files = [self.img_files[i] for i in irect] self.label_files = [self.label_files[i] for i in irect] + self.labels = [self.labels[i] for i in irect] self.shapes = s[irect] # wh ar = ar[irect] @@ -325,107 +419,65 @@ class LoadImagesAndLabels(Dataset): # for training/testing elif mini > 1: shapes[i] = [1, 1 / mini] - self.batch_shapes = np.ceil(np.array(shapes) * img_size / 32. + pad).astype(np.int) * 32 - - # Cache labels - self.imgs = [None] * n - self.labels = [np.zeros((0, 5), dtype=np.float32)] * n - create_datasubset, extract_bounding_boxes, labels_loaded = False, False, False - nm, nf, ne, ns, nd = 0, 0, 0, 0, 0 # number missing, found, empty, datasubset, duplicate - np_labels_path = str(Path(self.label_files[0]).parent) + '.npy' # saved labels in *.npy file - if os.path.isfile(np_labels_path): - s = np_labels_path # print string - x = np.load(np_labels_path, allow_pickle=True) - if len(x) == n: - self.labels = x - labels_loaded = True - else: - s = path.replace('images', 'labels') - - pbar = tqdm(self.label_files) - for i, file in enumerate(pbar): - if labels_loaded: - l = self.labels[i] - # np.savetxt(file, l, '%g') # save *.txt from *.npy file - else: - try: - with open(file, 'r') as f: - l = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) - except: - nm += 1 # print('missing labels for image %s' % self.img_files[i]) # file missing - continue - - if l.shape[0]: - assert l.shape[1] == 5, '> 5 label columns: %s' % file - assert (l >= 0).all(), 'negative labels: %s' % file - assert (l[:, 1:] <= 1).all(), 'non-normalized or out of bounds coordinate labels: %s' % file - if np.unique(l, axis=0).shape[0] < l.shape[0]: # duplicate rows - nd += 1 # print('WARNING: duplicate rows in %s' % self.label_files[i]) # duplicate rows - if single_cls: - l[:, 0] = 0 # force dataset into single-class mode - self.labels[i] = l - nf += 1 # file found - - # Create subdataset (a smaller dataset) - if create_datasubset and ns < 1E4: - if ns == 0: - create_folder(path='./datasubset') - os.makedirs('./datasubset/images') - exclude_classes = 43 - if exclude_classes not in l[:, 0]: - ns += 1 - # shutil.copy(src=self.img_files[i], dst='./datasubset/images/') # copy image - with open('./datasubset/images.txt', 'a') as f: - f.write(self.img_files[i] + '\n') - - # Extract object detection boxes for a second stage classifier - if extract_bounding_boxes: - p = Path(self.img_files[i]) - img = cv2.imread(str(p)) - h, w = img.shape[:2] - for j, x in enumerate(l): - f = '%s%sclassifier%s%g_%g_%s' % (p.parent.parent, os.sep, os.sep, x[0], j, p.name) - if not os.path.exists(Path(f).parent): - os.makedirs(Path(f).parent) # make new output folder - - b = x[1:] * [w, h, w, h] # box - b[2:] = b[2:].max() # rectangle to square - b[2:] = b[2:] * 1.3 + 30 # pad - b = xywh2xyxy(b.reshape(-1, 4)).ravel().astype(np.int) - - b[[0, 2]] = np.clip(b[[0, 2]], 0, w) # clip boxes outside of image - b[[1, 3]] = np.clip(b[[1, 3]], 0, h) - assert cv2.imwrite(f, img[b[1]:b[3], b[0]:b[2]]), 'Failure extracting classifier boxes' - else: - ne += 1 # print('empty labels for image %s' % self.img_files[i]) # file empty - # os.system("rm '%s' '%s'" % (self.img_files[i], self.label_files[i])) # remove - - pbar.desc = 'Caching labels %s (%g found, %g missing, %g empty, %g duplicate, for %g images)' % ( - s, nf, nm, ne, nd, n) - assert nf > 0 or n == 20288, 'No labels found in %s. See %s' % (os.path.dirname(file) + os.sep, help_url) - if not labels_loaded and n > 1000: - print('Saving labels to %s for faster future loading' % np_labels_path) - np.save(np_labels_path, self.labels) # save for next time + self.batch_shapes = np.ceil(np.array(shapes) * img_size / stride + pad).astype(np.int) * stride # Cache images into memory for faster training (WARNING: large datasets may exceed system RAM) - if cache_images: # if training + self.imgs = [None] * n + if cache_images: gb = 0 # Gigabytes of cached images - pbar = tqdm(range(len(self.img_files)), desc='Caching images') self.img_hw0, self.img_hw = [None] * n, [None] * n - for i in pbar: # max 10k images - self.imgs[i], self.img_hw0[i], self.img_hw[i] = load_image(self, i) # img, hw_original, hw_resized + results = ThreadPool(8).imap(lambda x: load_image(*x), zip(repeat(self), range(n))) # 8 threads + pbar = tqdm(enumerate(results), total=n) + for i, x in pbar: + self.imgs[i], self.img_hw0[i], self.img_hw[i] = x # img, hw_original, hw_resized = load_image(self, i) gb += self.imgs[i].nbytes pbar.desc = 'Caching images (%.1fGB)' % (gb / 1E9) - # Detect corrupted images https://medium.com/joelthchao/programmatically-detect-corrupted-image-8c1b2006c3d3 - detect_corrupted_images = False - if detect_corrupted_images: - from skimage import io # conda install -c conda-forge scikit-image - for file in tqdm(self.img_files, desc='Detecting corrupted images'): - try: - _ = io.imread(file) - except: - print('Corrupted image detected: %s' % file) + def cache_labels(self, path=Path('./labels.cache')): + # Cache dataset labels, check images and read shapes + x = {} # dict + nm, nf, ne, nc = 0, 0, 0, 0 # number missing, found, empty, duplicate + pbar = tqdm(zip(self.img_files, self.label_files), desc='Scanning images', total=len(self.img_files)) + for i, (im_file, lb_file) in enumerate(pbar): + try: + # verify images + im = Image.open(im_file) + im.verify() # PIL verify + shape = exif_size(im) # image size + assert (shape[0] > 9) & (shape[1] > 9), 'image size <10 pixels' + + # verify labels + if os.path.isfile(lb_file): + nf += 1 # label found + with open(lb_file, 'r') as f: + l = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) # labels + if len(l): + assert l.shape[1] == 5, 'labels require 5 columns each' + assert (l >= 0).all(), 'negative labels' + assert (l[:, 1:] <= 1).all(), 'non-normalized or out of bounds coordinate labels' + assert np.unique(l, axis=0).shape[0] == l.shape[0], 'duplicate labels' + else: + ne += 1 # label empty + l = np.zeros((0, 5), dtype=np.float32) + else: + nm += 1 # label missing + l = np.zeros((0, 5), dtype=np.float32) + x[im_file] = [l, shape] + except Exception as e: + nc += 1 + print('WARNING: Ignoring corrupted image and/or label %s: %s' % (im_file, e)) + + pbar.desc = f"Scanning '{path.parent / path.stem}' for images and labels... " \ + f"{nf} found, {nm} missing, {ne} empty, {nc} corrupted" + + if nf == 0: + print(f'WARNING: No labels found in {path}. See {help_url}') + + x['hash'] = get_hash(self.label_files + self.img_files) + x['results'] = [nf, nm, ne, nc, i + 1] + torch.save(x, path) # save for next time + logging.info(f"New cache created: {path}") + return x def __len__(self): return len(self.img_files) @@ -437,15 +489,22 @@ class LoadImagesAndLabels(Dataset): # for training/testing # return self def __getitem__(self, index): - if self.image_weights: - index = self.indices[index] + index = self.indices[index] # linear, shuffled, or image_weights hyp = self.hyp - if self.mosaic: + mosaic = self.mosaic and random.random() < hyp['mosaic'] + if mosaic: # Load mosaic img, labels = load_mosaic(self, index) shapes = None + # MixUp https://arxiv.org/pdf/1710.09412.pdf + if random.random() < hyp['mixup']: + img2, labels2 = load_mosaic(self, random.randint(0, self.n - 1)) + r = np.random.beta(8.0, 8.0) # mixup ratio, alpha=beta=8.0 + img = (img * r + img2 * (1 - r)).astype(np.uint8) + labels = np.concatenate((labels, labels2), 0) + else: # Load image img, (h0, w0), (h, w) = load_image(self, index) @@ -468,12 +527,13 @@ class LoadImagesAndLabels(Dataset): # for training/testing if self.augment: # Augment imagespace - if not self.mosaic: - img, labels = random_affine(img, labels, - degrees=hyp['degrees'], - translate=hyp['translate'], - scale=hyp['scale'], - shear=hyp['shear']) + if not mosaic: + img, labels = random_perspective(img, labels, + degrees=hyp['degrees'], + translate=hyp['translate'], + scale=hyp['scale'], + shear=hyp['shear'], + perspective=hyp['perspective']) # Augment colorspace augment_hsv(img, hgain=hyp['hsv_h'], sgain=hyp['hsv_s'], vgain=hyp['hsv_v']) @@ -484,28 +544,23 @@ class LoadImagesAndLabels(Dataset): # for training/testing nL = len(labels) # number of labels if nL: - # convert xyxy to xywh - labels[:, 1:5] = xyxy2xywh(labels[:, 1:5]) - - # Normalize coordinates 0 - 1 - labels[:, [2, 4]] /= img.shape[0] # height - labels[:, [1, 3]] /= img.shape[1] # width + labels[:, 1:5] = xyxy2xywh(labels[:, 1:5]) # convert xyxy to xywh + labels[:, [2, 4]] /= img.shape[0] # normalized height 0-1 + labels[:, [1, 3]] /= img.shape[1] # normalized width 0-1 if self.augment: - # random left-right flip - lr_flip = True - if lr_flip and random.random() < 0.5: - img = np.fliplr(img) - if nL: - labels[:, 1] = 1 - labels[:, 1] - - # random up-down flip - ud_flip = False - if ud_flip and random.random() < 0.5: + # flip up-down + if random.random() < hyp['flipud']: img = np.flipud(img) if nL: labels[:, 2] = 1 - labels[:, 2] + # flip left-right + if random.random() < hyp['fliplr']: + img = np.fliplr(img) + if nL: + labels[:, 1] = 1 - labels[:, 1] + labels_out = torch.zeros((nL, 6)) if nL: labels_out[:, 1:] = torch.from_numpy(labels) @@ -524,6 +579,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing return torch.stack(img, 0), torch.cat(label, 0), path, shapes +# Ancillary functions -------------------------------------------------------------------------------------------------- def load_image(self, index): # loads 1 image from dataset, returns img, original hw, resized hw img = self.imgs[index] @@ -565,8 +621,8 @@ def load_mosaic(self, index): labels4 = [] s = self.img_size - xc, yc = [int(random.uniform(s * 0.5, s * 1.5)) for _ in range(2)] # mosaic center x, y - indices = [index] + [random.randint(0, len(self.labels) - 1) for _ in range(3)] # 3 additional image indices + yc, xc = [int(random.uniform(-x, 2 * s + x)) for x in self.mosaic_border] # mosaic center x, y + indices = [index] + [self.indices[random.randint(0, self.n - 1)] for _ in range(3)] # 3 additional image indices for i, index in enumerate(indices): # Load image img, _, (h, w) = load_image(self, index) @@ -581,7 +637,7 @@ def load_mosaic(self, index): x1b, y1b, x2b, y2b = 0, h - (y2a - y1a), min(w, x2a - x1a), h elif i == 2: # bottom left x1a, y1a, x2a, y2a = max(xc - w, 0), yc, xc, min(s * 2, yc + h) - x1b, y1b, x2b, y2b = w - (x2a - x1a), 0, max(xc, w), min(y2a - y1a, h) + x1b, y1b, x2b, y2b = w - (x2a - x1a), 0, w, min(y2a - y1a, h) elif i == 3: # bottom right x1a, y1a, x2a, y2a = xc, yc, min(xc + w, s * 2), min(s * 2, yc + h) x1b, y1b, x2b, y2b = 0, 0, min(w, x2a - x1a), min(y2a - y1a, h) @@ -603,22 +659,39 @@ def load_mosaic(self, index): # Concat/clip labels if len(labels4): labels4 = np.concatenate(labels4, 0) - # np.clip(labels4[:, 1:] - s / 2, 0, s, out=labels4[:, 1:]) # use with center crop - np.clip(labels4[:, 1:], 0, 2 * s, out=labels4[:, 1:]) # use with random_affine + np.clip(labels4[:, 1:], 0, 2 * s, out=labels4[:, 1:]) # use with random_perspective + # img4, labels4 = replicate(img4, labels4) # replicate # Augment - # img4 = img4[s // 2: int(s * 1.5), s // 2:int(s * 1.5)] # center crop (WARNING, requires box pruning) - img4, labels4 = random_affine(img4, labels4, - degrees=self.hyp['degrees'], - translate=self.hyp['translate'], - scale=self.hyp['scale'], - shear=self.hyp['shear'], - border=-s // 2) # border to remove + img4, labels4 = random_perspective(img4, labels4, + degrees=self.hyp['degrees'], + translate=self.hyp['translate'], + scale=self.hyp['scale'], + shear=self.hyp['shear'], + perspective=self.hyp['perspective'], + border=self.mosaic_border) # border to remove return img4, labels4 -def letterbox(img, new_shape=(416, 416), color=(114, 114, 114), auto=True, scaleFill=False, scaleup=True): +def replicate(img, labels): + # Replicate labels + h, w = img.shape[:2] + boxes = labels[:, 1:].astype(int) + x1, y1, x2, y2 = boxes.T + s = ((x2 - x1) + (y2 - y1)) / 2 # side length (pixels) + for i in s.argsort()[:round(s.size * 0.5)]: # smallest indices + x1b, y1b, x2b, y2b = boxes[i] + bh, bw = y2b - y1b, x2b - x1b + yc, xc = int(random.uniform(0, h - bh)), int(random.uniform(0, w - bw)) # offset x, y + x1a, y1a, x2a, y2a = [xc, yc, xc + bw, yc + bh] + img[y1a:y2a, x1a:x2a] = img[y1b:y2b, x1b:x2b] # img4[ymin:ymax, xmin:xmax] + labels = np.append(labels, [[labels[i, 0], x1a, y1a, x2a, y2a]], axis=0) + + return img, labels + + +def letterbox(img, new_shape=(640, 640), color=(114, 114, 114), auto=True, scaleFill=False, scaleup=True): # Resize image to a 32-pixel-multiple rectangle https://github.com/ultralytics/yolov3/issues/232 shape = img.shape[:2] # current shape [height, width] if isinstance(new_shape, int): @@ -637,8 +710,8 @@ def letterbox(img, new_shape=(416, 416), color=(114, 114, 114), auto=True, scale dw, dh = np.mod(dw, 32), np.mod(dh, 32) # wh padding elif scaleFill: # stretch dw, dh = 0.0, 0.0 - new_unpad = new_shape - ratio = new_shape[0] / shape[1], new_shape[1] / shape[0] # width, height ratios + new_unpad = (new_shape[1], new_shape[0]) + ratio = new_shape[1] / shape[1], new_shape[0] / shape[0] # width, height ratios dw /= 2 # divide padding into 2 sides dh /= 2 @@ -651,13 +724,22 @@ def letterbox(img, new_shape=(416, 416), color=(114, 114, 114), auto=True, scale return img, ratio, (dw, dh) -def random_affine(img, targets=(), degrees=10, translate=.1, scale=.1, shear=10, border=0): +def random_perspective(img, targets=(), degrees=10, translate=.1, scale=.1, shear=10, perspective=0.0, border=(0, 0)): # torchvision.transforms.RandomAffine(degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-10, 10)) - # https://medium.com/uruvideo/dataset-augmentation-with-random-homographies-a8f4b44830d4 # targets = [cls, xyxy] - height = img.shape[0] + border * 2 - width = img.shape[1] + border * 2 + height = img.shape[0] + border[0] * 2 # shape(h,w,c) + width = img.shape[1] + border[1] * 2 + + # Center + C = np.eye(3) + C[0, 2] = -img.shape[1] / 2 # x translation (pixels) + C[1, 2] = -img.shape[0] / 2 # y translation (pixels) + + # Perspective + P = np.eye(3) + P[2, 0] = random.uniform(-perspective, perspective) # x perspective (about y) + P[2, 1] = random.uniform(-perspective, perspective) # y perspective (about x) # Rotation and Scale R = np.eye(3) @@ -665,22 +747,31 @@ def random_affine(img, targets=(), degrees=10, translate=.1, scale=.1, shear=10, # a += random.choice([-180, -90, 0, 90]) # add 90deg rotations to small rotations s = random.uniform(1 - scale, 1 + scale) # s = 2 ** random.uniform(-scale, scale) - R[:2] = cv2.getRotationMatrix2D(angle=a, center=(img.shape[1] / 2, img.shape[0] / 2), scale=s) - - # Translation - T = np.eye(3) - T[0, 2] = random.uniform(-translate, translate) * img.shape[0] + border # x translation (pixels) - T[1, 2] = random.uniform(-translate, translate) * img.shape[1] + border # y translation (pixels) + R[:2] = cv2.getRotationMatrix2D(angle=a, center=(0, 0), scale=s) # Shear S = np.eye(3) S[0, 1] = math.tan(random.uniform(-shear, shear) * math.pi / 180) # x shear (deg) S[1, 0] = math.tan(random.uniform(-shear, shear) * math.pi / 180) # y shear (deg) + # Translation + T = np.eye(3) + T[0, 2] = random.uniform(0.5 - translate, 0.5 + translate) * width # x translation (pixels) + T[1, 2] = random.uniform(0.5 - translate, 0.5 + translate) * height # y translation (pixels) + # Combined rotation matrix - M = S @ T @ R # ORDER IS IMPORTANT HERE!! - if (border != 0) or (M != np.eye(3)).any(): # image changed - img = cv2.warpAffine(img, M[:2], dsize=(width, height), flags=cv2.INTER_LINEAR, borderValue=(114, 114, 114)) + M = T @ S @ R @ P @ C # order of operations (right to left) is IMPORTANT + if (border[0] != 0) or (border[1] != 0) or (M != np.eye(3)).any(): # image changed + if perspective: + img = cv2.warpPerspective(img, M, dsize=(width, height), borderValue=(114, 114, 114)) + else: # affine + img = cv2.warpAffine(img, M[:2], dsize=(width, height), borderValue=(114, 114, 114)) + + # Visualize + # import matplotlib.pyplot as plt + # ax = plt.subplots(1, 2, figsize=(12, 6))[1].ravel() + # ax[0].imshow(img[:, :, ::-1]) # base + # ax[1].imshow(img2[:, :, ::-1]) # warped # Transform label coordinates n = len(targets) @@ -688,7 +779,11 @@ def random_affine(img, targets=(), degrees=10, translate=.1, scale=.1, shear=10, # warp points xy = np.ones((n * 4, 3)) xy[:, :2] = targets[:, [1, 2, 3, 4, 1, 4, 3, 2]].reshape(n * 4, 2) # x1y1, x2y2, x1y2, x2y1 - xy = (xy @ M.T)[:, :2].reshape(n, 8) + xy = xy @ M.T # transform + if perspective: + xy = (xy[:, :2] / xy[:, 2:3]).reshape(n, 8) # rescale + else: # affine + xy = xy[:, :2].reshape(n, 8) # create new boxes x = xy[:, [0, 2, 4, 6]] @@ -704,26 +799,28 @@ def random_affine(img, targets=(), degrees=10, translate=.1, scale=.1, shear=10, # h = (xy[:, 3] - xy[:, 1]) * reduction # xy = np.concatenate((x - w / 2, y - h / 2, x + w / 2, y + h / 2)).reshape(4, n).T - # reject warped points outside of image + # clip boxes xy[:, [0, 2]] = xy[:, [0, 2]].clip(0, width) xy[:, [1, 3]] = xy[:, [1, 3]].clip(0, height) - w = xy[:, 2] - xy[:, 0] - h = xy[:, 3] - xy[:, 1] - area = w * h - area0 = (targets[:, 3] - targets[:, 1]) * (targets[:, 4] - targets[:, 2]) - ar = np.maximum(w / (h + 1e-16), h / (w + 1e-16)) # aspect ratio - i = (w > 4) & (h > 4) & (area / (area0 * s + 1e-16) > 0.2) & (ar < 10) + # filter candidates + i = box_candidates(box1=targets[:, 1:5].T * s, box2=xy.T) targets = targets[i] targets[:, 1:5] = xy[i] return img, targets +def box_candidates(box1, box2, wh_thr=2, ar_thr=20, area_thr=0.1): # box1(4,n), box2(4,n) + # Compute candidate boxes: box1 before augment, box2 after augment, wh_thr (pixels), aspect_ratio_thr, area_ratio + w1, h1 = box1[2] - box1[0], box1[3] - box1[1] + w2, h2 = box2[2] - box2[0], box2[3] - box2[1] + ar = np.maximum(w2 / (h2 + 1e-16), h2 / (w2 + 1e-16)) # aspect ratio + return (w2 > wh_thr) & (h2 > wh_thr) & (w2 * h2 / (w1 * h1 + 1e-16) > area_thr) & (ar < ar_thr) # candidates + + def cutout(image, labels): - # https://arxiv.org/abs/1708.04552 - # https://github.com/hysts/pytorch_cutout/blob/master/dataloader.py - # https://towardsdatascience.com/when-conventional-wisdom-fails-revisiting-data-augmentation-for-self-driving-cars-4831998c5509 + # Applies image cutout augmentation https://arxiv.org/abs/1708.04552 h, w = image.shape[:2] def bbox_ioa(box1, box2): @@ -768,78 +865,69 @@ def cutout(image, labels): return labels -def reduce_img_size(path='../data/sm4/images', img_size=1024): # from utils.datasets import *; reduce_img_size() - # creates a new ./images_reduced folder with reduced size images of maximum size img_size - path_new = path + '_reduced' # reduced images path - create_folder(path_new) - for f in tqdm(glob.glob('%s/*.*' % path)): - try: - img = cv2.imread(f) - h, w = img.shape[:2] - r = img_size / max(h, w) # size ratio - if r < 1.0: - img = cv2.resize(img, (int(w * r), int(h * r)), interpolation=cv2.INTER_AREA) # _LINEAR fastest - fnew = f.replace(path, path_new) # .replace(Path(f).suffix, '.jpg') - cv2.imwrite(fnew, img) - except: - print('WARNING: image failure %s' % f) - - -def convert_images2bmp(): # from utils.datasets import *; convert_images2bmp() - # Save images - formats = [x.lower() for x in img_formats] + [x.upper() for x in img_formats] - # for path in ['../coco/images/val2014', '../coco/images/train2014']: - for path in ['../data/sm4/images', '../data/sm4/background']: - create_folder(path + 'bmp') - for ext in formats: # ['.bmp', '.jpg', '.jpeg', '.png', '.tif', '.dng'] - for f in tqdm(glob.glob('%s/*%s' % (path, ext)), desc='Converting %s' % ext): - cv2.imwrite(f.replace(ext.lower(), '.bmp').replace(path, path + 'bmp'), cv2.imread(f)) - - # Save labels - # for path in ['../coco/trainvalno5k.txt', '../coco/5k.txt']: - for file in ['../data/sm4/out_train.txt', '../data/sm4/out_test.txt']: - with open(file, 'r') as f: - lines = f.read() - # lines = f.read().replace('2014/', '2014bmp/') # coco - lines = lines.replace('/images', '/imagesbmp') - lines = lines.replace('/background', '/backgroundbmp') - for ext in formats: - lines = lines.replace(ext, '.bmp') - with open(file.replace('.txt', 'bmp.txt'), 'w') as f: - f.write(lines) - - -def recursive_dataset2bmp(dataset='../data/sm4_bmp'): # from utils.datasets import *; recursive_dataset2bmp() - # Converts dataset to bmp (for faster training) - formats = [x.lower() for x in img_formats] + [x.upper() for x in img_formats] - for a, b, files in os.walk(dataset): - for file in tqdm(files, desc=a): - p = a + '/' + file - s = Path(file).suffix - if s == '.txt': # replace text - with open(p, 'r') as f: - lines = f.read() - for f in formats: - lines = lines.replace(f, '.bmp') - with open(p, 'w') as f: - f.write(lines) - elif s in formats: # replace image - cv2.imwrite(p.replace(s, '.bmp'), cv2.imread(p)) - if s != '.bmp': - os.system("rm '%s'" % p) - - -def imagelist2folder(path='data/coco_64img.txt'): # from utils.datasets import *; imagelist2folder() - # Copies all the images in a text file (list of images) into a folder - create_folder(path[:-4]) - with open(path, 'r') as f: - for line in f.read().splitlines(): - os.system('cp "%s" %s' % (line, path[:-4])) - print(line) - - -def create_folder(path='./new_folder'): +def create_folder(path='./new'): # Create folder if os.path.exists(path): shutil.rmtree(path) # delete output folder os.makedirs(path) # make new output folder + + +def flatten_recursive(path='../coco128'): + # Flatten a recursive directory by bringing all files to top level + new_path = Path(path + '_flat') + create_folder(new_path) + for file in tqdm(glob.glob(str(Path(path)) + '/**/*.*', recursive=True)): + shutil.copyfile(file, new_path / Path(file).name) + + +def extract_boxes(path='../coco128/'): # from utils.datasets import *; extract_boxes('../coco128') + # Convert detection dataset into classification dataset, with one directory per class + + path = Path(path) # images dir + shutil.rmtree(path / 'classifier') if (path / 'classifier').is_dir() else None # remove existing + files = list(path.rglob('*.*')) + n = len(files) # number of files + for im_file in tqdm(files, total=n): + if im_file.suffix[1:] in img_formats: + # image + im = cv2.imread(str(im_file))[..., ::-1] # BGR to RGB + h, w = im.shape[:2] + + # labels + lb_file = Path(img2label_paths([str(im_file)])[0]) + if Path(lb_file).exists(): + with open(lb_file, 'r') as f: + lb = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) # labels + + for j, x in enumerate(lb): + c = int(x[0]) # class + f = (path / 'classifier') / f'{c}' / f'{path.stem}_{im_file.stem}_{j}.jpg' # new filename + if not f.parent.is_dir(): + f.parent.mkdir(parents=True) + + b = x[1:] * [w, h, w, h] # box + # b[2:] = b[2:].max() # rectangle to square + b[2:] = b[2:] * 1.2 + 3 # pad + b = xywh2xyxy(b.reshape(-1, 4)).ravel().astype(np.int) + + b[[0, 2]] = np.clip(b[[0, 2]], 0, w) # clip boxes outside of image + b[[1, 3]] = np.clip(b[[1, 3]], 0, h) + assert cv2.imwrite(str(f), im[b[1]:b[3], b[0]:b[2]]), f'box failure in {f}' + + +def autosplit(path='../coco128', weights=(0.9, 0.1, 0.0)): # from utils.datasets import *; autosplit('../coco128') + """ Autosplit a dataset into train/val/test splits and save path/autosplit_*.txt files + # Arguments + path: Path to images directory + weights: Train, val, test weights (list) + """ + path = Path(path) # images dir + files = list(path.rglob('*.*')) + n = len(files) # number of files + indices = random.choices([0, 1, 2], weights=weights, k=n) # assign each image to a split + txt = ['autosplit_train.txt', 'autosplit_val.txt', 'autosplit_test.txt'] # 3 txt files + [(path / x).unlink() for x in txt if (path / x).exists()] # remove existing + for i, img in tqdm(zip(indices, files), total=n): + if img.suffix[1:] in img_formats: + with open(path / txt[i], 'a') as f: + f.write(str(img) + '\n') # add image to txt file diff --git a/utils/evolve.sh b/utils/evolve.sh deleted file mode 100644 index 6682d0ac..00000000 --- a/utils/evolve.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash -#for i in 0 1 2 3 -#do -# t=ultralytics/yolov3:v139 && sudo docker pull $t && sudo nvidia-docker run -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t utils/evolve.sh $i -# sleep 30 -#done - -while true; do - # python3 train.py --data ../data/sm4/out.data --img-size 320 --epochs 100 --batch 64 --accum 1 --weights yolov3-tiny.conv.15 --multi --bucket ult/wer --evolve --cache --device $1 --cfg yolov3-tiny3-1cls.cfg --single --adam - # python3 train.py --data ../out/data.data --img-size 608 --epochs 10 --batch 8 --accum 8 --weights ultralytics68.pt --multi --bucket ult/athena --evolve --device $1 --cfg yolov3-spp-1cls.cfg - - python3 train.py --data coco2014.data --img-size 512 608 --epochs 27 --batch 8 --accum 8 --evolve --weights '' --bucket ult/coco/sppa_512 --device $1 --cfg yolov3-sppa.cfg --multi -done - -# coco epoch times --img-size 416 608 --epochs 27 --batch 16 --accum 4 -# 36:34 2080ti -# 21:58 V100 -# 63:00 T4 diff --git a/utils/gcp.sh b/utils/gcp.sh deleted file mode 100755 index 0a78cea9..00000000 --- a/utils/gcp.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env bash - -# New VM -rm -rf sample_data yolov3 -git clone https://github.com/ultralytics/yolov3 -# git clone -b test --depth 1 https://github.com/ultralytics/yolov3 test # branch -# sudo apt-get install zip -#git clone https://github.com/NVIDIA/apex && cd apex && pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" . --user && cd .. && rm -rf apex -sudo conda install -yc conda-forge scikit-image pycocotools -# python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('193Zp_ye-3qXMonR1nZj3YyxMtQkMy50k','coco2014.zip')" -python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('1WQT6SOktSe8Uw6r10-2JhbEhMY5DJaph','coco2017.zip')" -python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('1C3HewOG9akA3y456SZLBJZfNDPkBwAto','knife.zip')" -python3 -c "from yolov3.utils.google_utils import gdrive_download; gdrive_download('13g3LqdpkNE8sPosVJT6KFXlfoMypzRP4','sm4.zip')" -sudo shutdown - -# Mount local SSD -lsblk -sudo mkfs.ext4 -F /dev/nvme0n1 -sudo mkdir -p /mnt/disks/nvme0n1 -sudo mount /dev/nvme0n1 /mnt/disks/nvme0n1 -sudo chmod a+w /mnt/disks/nvme0n1 -cp -r coco /mnt/disks/nvme0n1 - -# Kill All -t=ultralytics/yolov3:v1 -docker kill $(docker ps -a -q --filter ancestor=$t) - -# Evolve coco -sudo -s -t=ultralytics/yolov3:evolve -# docker kill $(docker ps -a -q --filter ancestor=$t) -for i in 0 1 6 7; do - docker pull $t && docker run --gpus all -d --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t bash utils/evolve.sh $i - sleep 30 -done - -#COCO training -n=131 && t=ultralytics/coco:v131 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 320 640 --epochs 300 --batch 16 --weights '' --device 0 --cfg yolov3-spp.cfg --bucket ult/coco --name $n && sudo shutdown -n=132 && t=ultralytics/coco:v131 && sudo docker pull $t && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco $t python3 train.py --data coco2014.data --img-size 320 640 --epochs 300 --batch 64 --weights '' --device 0 --cfg yolov3-tiny.cfg --bucket ult/coco --name $n && sudo shutdown diff --git a/utils/general.py b/utils/general.py new file mode 100755 index 00000000..ca6a9f6b --- /dev/null +++ b/utils/general.py @@ -0,0 +1,445 @@ +# General utils + +import glob +import logging +import math +import os +import platform +import random +import re +import subprocess +import time +from pathlib import Path + +import cv2 +import matplotlib +import numpy as np +import torch +import torchvision +import yaml + +from utils.google_utils import gsutil_getsize +from utils.metrics import fitness +from utils.torch_utils import init_torch_seeds + +# Set printoptions +torch.set_printoptions(linewidth=320, precision=5, profile='long') +np.set_printoptions(linewidth=320, formatter={'float_kind': '{:11.5g}'.format}) # format short g, %precision=5 +matplotlib.rc('font', **{'size': 11}) + +# Prevent OpenCV from multithreading (to use PyTorch DataLoader) +cv2.setNumThreads(0) + + +def set_logging(rank=-1): + logging.basicConfig( + format="%(message)s", + level=logging.INFO if rank in [-1, 0] else logging.WARN) + + +def init_seeds(seed=0): + random.seed(seed) + np.random.seed(seed) + init_torch_seeds(seed) + + +def get_latest_run(search_dir='.'): + # Return path to most recent 'last.pt' in /runs (i.e. to --resume from) + last_list = glob.glob(f'{search_dir}/**/last*.pt', recursive=True) + return max(last_list, key=os.path.getctime) if last_list else '' + + +def check_git_status(): + # Suggest 'git pull' if repo is out of date + if platform.system() in ['Linux', 'Darwin'] and not os.path.isfile('/.dockerenv'): + s = subprocess.check_output('if [ -d .git ]; then git fetch && git status -uno; fi', shell=True).decode('utf-8') + if 'Your branch is behind' in s: + print(s[s.find('Your branch is behind'):s.find('\n\n')] + '\n') + + +def check_img_size(img_size, s=32): + # Verify img_size is a multiple of stride s + new_size = make_divisible(img_size, int(s)) # ceil gs-multiple + if new_size != img_size: + print('WARNING: --img-size %g must be multiple of max stride %g, updating to %g' % (img_size, s, new_size)) + return new_size + + +def check_file(file): + # Search for file if not found + if os.path.isfile(file) or file == '': + return file + else: + files = glob.glob('./**/' + file, recursive=True) # find file + assert len(files), 'File Not Found: %s' % file # assert file was found + assert len(files) == 1, "Multiple files match '%s', specify exact path: %s" % (file, files) # assert unique + return files[0] # return file + + +def check_dataset(dict): + # Download dataset if not found locally + val, s = dict.get('val'), dict.get('download') + if val and len(val): + val = [Path(x).resolve() for x in (val if isinstance(val, list) else [val])] # val path + if not all(x.exists() for x in val): + print('\nWARNING: Dataset not found, nonexistent paths: %s' % [str(x) for x in val if not x.exists()]) + if s and len(s): # download script + print('Downloading %s ...' % s) + if s.startswith('http') and s.endswith('.zip'): # URL + f = Path(s).name # filename + torch.hub.download_url_to_file(s, f) + r = os.system('unzip -q %s -d ../ && rm %s' % (f, f)) # unzip + else: # bash script + r = os.system(s) + print('Dataset autodownload %s\n' % ('success' if r == 0 else 'failure')) # analyze return value + else: + raise Exception('Dataset not found.') + + +def make_divisible(x, divisor): + # Returns x evenly divisible by divisor + return math.ceil(x / divisor) * divisor + + +def labels_to_class_weights(labels, nc=80): + # Get class weights (inverse frequency) from training labels + if labels[0] is None: # no labels loaded + return torch.Tensor() + + labels = np.concatenate(labels, 0) # labels.shape = (866643, 5) for COCO + classes = labels[:, 0].astype(np.int) # labels = [class xywh] + weights = np.bincount(classes, minlength=nc) # occurrences per class + + # Prepend gridpoint count (for uCE training) + # gpi = ((320 / 32 * np.array([1, 2, 4])) ** 2 * 3).sum() # gridpoints per image + # weights = np.hstack([gpi * len(labels) - weights.sum() * 9, weights * 9]) ** 0.5 # prepend gridpoints to start + + weights[weights == 0] = 1 # replace empty bins with 1 + weights = 1 / weights # number of targets per class + weights /= weights.sum() # normalize + return torch.from_numpy(weights) + + +def labels_to_image_weights(labels, nc=80, class_weights=np.ones(80)): + # Produces image weights based on class mAPs + n = len(labels) + class_counts = np.array([np.bincount(labels[i][:, 0].astype(np.int), minlength=nc) for i in range(n)]) + image_weights = (class_weights.reshape(1, nc) * class_counts).sum(1) + # index = random.choices(range(n), weights=image_weights, k=1) # weight image sample + return image_weights + + +def coco80_to_coco91_class(): # converts 80-index (val2014) to 91-index (paper) + # https://tech.amikelive.com/node-718/what-object-categories-labels-are-in-coco-dataset/ + # a = np.loadtxt('data/coco.names', dtype='str', delimiter='\n') + # b = np.loadtxt('data/coco_paper.names', dtype='str', delimiter='\n') + # x1 = [list(a[i] == b).index(True) + 1 for i in range(80)] # darknet to coco + # x2 = [list(b[i] == a).index(True) if any(b[i] == a) else None for i in range(91)] # coco to darknet + x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 67, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 90] + return x + + +def xyxy2xywh(x): + # Convert nx4 boxes from [x1, y1, x2, y2] to [x, y, w, h] where xy1=top-left, xy2=bottom-right + y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x) + y[:, 0] = (x[:, 0] + x[:, 2]) / 2 # x center + y[:, 1] = (x[:, 1] + x[:, 3]) / 2 # y center + y[:, 2] = x[:, 2] - x[:, 0] # width + y[:, 3] = x[:, 3] - x[:, 1] # height + return y + + +def xywh2xyxy(x): + # Convert nx4 boxes from [x, y, w, h] to [x1, y1, x2, y2] where xy1=top-left, xy2=bottom-right + y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x) + y[:, 0] = x[:, 0] - x[:, 2] / 2 # top left x + y[:, 1] = x[:, 1] - x[:, 3] / 2 # top left y + y[:, 2] = x[:, 0] + x[:, 2] / 2 # bottom right x + y[:, 3] = x[:, 1] + x[:, 3] / 2 # bottom right y + return y + + +def scale_coords(img1_shape, coords, img0_shape, ratio_pad=None): + # Rescale coords (xyxy) from img1_shape to img0_shape + if ratio_pad is None: # calculate from img0_shape + gain = min(img1_shape[0] / img0_shape[0], img1_shape[1] / img0_shape[1]) # gain = old / new + pad = (img1_shape[1] - img0_shape[1] * gain) / 2, (img1_shape[0] - img0_shape[0] * gain) / 2 # wh padding + else: + gain = ratio_pad[0][0] + pad = ratio_pad[1] + + coords[:, [0, 2]] -= pad[0] # x padding + coords[:, [1, 3]] -= pad[1] # y padding + coords[:, :4] /= gain + clip_coords(coords, img0_shape) + return coords + + +def clip_coords(boxes, img_shape): + # Clip bounding xyxy bounding boxes to image shape (height, width) + boxes[:, 0].clamp_(0, img_shape[1]) # x1 + boxes[:, 1].clamp_(0, img_shape[0]) # y1 + boxes[:, 2].clamp_(0, img_shape[1]) # x2 + boxes[:, 3].clamp_(0, img_shape[0]) # y2 + + +def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False, DIoU=False, CIoU=False, eps=1e-9): + # Returns the IoU of box1 to box2. box1 is 4, box2 is nx4 + box2 = box2.T + + # Get the coordinates of bounding boxes + if x1y1x2y2: # x1, y1, x2, y2 = box1 + b1_x1, b1_y1, b1_x2, b1_y2 = box1[0], box1[1], box1[2], box1[3] + b2_x1, b2_y1, b2_x2, b2_y2 = box2[0], box2[1], box2[2], box2[3] + else: # transform from xywh to xyxy + b1_x1, b1_x2 = box1[0] - box1[2] / 2, box1[0] + box1[2] / 2 + b1_y1, b1_y2 = box1[1] - box1[3] / 2, box1[1] + box1[3] / 2 + b2_x1, b2_x2 = box2[0] - box2[2] / 2, box2[0] + box2[2] / 2 + b2_y1, b2_y2 = box2[1] - box2[3] / 2, box2[1] + box2[3] / 2 + + # Intersection area + inter = (torch.min(b1_x2, b2_x2) - torch.max(b1_x1, b2_x1)).clamp(0) * \ + (torch.min(b1_y2, b2_y2) - torch.max(b1_y1, b2_y1)).clamp(0) + + # Union Area + w1, h1 = b1_x2 - b1_x1, b1_y2 - b1_y1 + eps + w2, h2 = b2_x2 - b2_x1, b2_y2 - b2_y1 + eps + union = w1 * h1 + w2 * h2 - inter + eps + + iou = inter / union + if GIoU or DIoU or CIoU: + cw = torch.max(b1_x2, b2_x2) - torch.min(b1_x1, b2_x1) # convex (smallest enclosing box) width + ch = torch.max(b1_y2, b2_y2) - torch.min(b1_y1, b2_y1) # convex height + if CIoU or DIoU: # Distance or Complete IoU https://arxiv.org/abs/1911.08287v1 + c2 = cw ** 2 + ch ** 2 + eps # convex diagonal squared + rho2 = ((b2_x1 + b2_x2 - b1_x1 - b1_x2) ** 2 + + (b2_y1 + b2_y2 - b1_y1 - b1_y2) ** 2) / 4 # center distance squared + if DIoU: + return iou - rho2 / c2 # DIoU + elif CIoU: # https://github.com/Zzh-tju/DIoU-SSD-pytorch/blob/master/utils/box/box_utils.py#L47 + v = (4 / math.pi ** 2) * torch.pow(torch.atan(w2 / h2) - torch.atan(w1 / h1), 2) + with torch.no_grad(): + alpha = v / ((1 + eps) - iou + v) + return iou - (rho2 / c2 + v * alpha) # CIoU + else: # GIoU https://arxiv.org/pdf/1902.09630.pdf + c_area = cw * ch + eps # convex area + return iou - (c_area - union) / c_area # GIoU + else: + return iou # IoU + + +def box_iou(box1, box2): + # https://github.com/pytorch/vision/blob/master/torchvision/ops/boxes.py + """ + Return intersection-over-union (Jaccard index) of boxes. + Both sets of boxes are expected to be in (x1, y1, x2, y2) format. + Arguments: + box1 (Tensor[N, 4]) + box2 (Tensor[M, 4]) + Returns: + iou (Tensor[N, M]): the NxM matrix containing the pairwise + IoU values for every element in boxes1 and boxes2 + """ + + def box_area(box): + # box = 4xn + return (box[2] - box[0]) * (box[3] - box[1]) + + area1 = box_area(box1.T) + area2 = box_area(box2.T) + + # inter(N,M) = (rb(N,M,2) - lt(N,M,2)).clamp(0).prod(2) + inter = (torch.min(box1[:, None, 2:], box2[:, 2:]) - torch.max(box1[:, None, :2], box2[:, :2])).clamp(0).prod(2) + return inter / (area1[:, None] + area2 - inter) # iou = inter / (area1 + area2 - inter) + + +def wh_iou(wh1, wh2): + # Returns the nxm IoU matrix. wh1 is nx2, wh2 is mx2 + wh1 = wh1[:, None] # [N,1,2] + wh2 = wh2[None] # [1,M,2] + inter = torch.min(wh1, wh2).prod(2) # [N,M] + return inter / (wh1.prod(2) + wh2.prod(2) - inter) # iou = inter / (area1 + area2 - inter) + + +def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, classes=None, agnostic=False, labels=()): + """Performs Non-Maximum Suppression (NMS) on inference results + + Returns: + detections with shape: nx6 (x1, y1, x2, y2, conf, cls) + """ + + nc = prediction[0].shape[1] - 5 # number of classes + xc = prediction[..., 4] > conf_thres # candidates + + # Settings + min_wh, max_wh = 2, 4096 # (pixels) minimum and maximum box width and height + max_det = 300 # maximum number of detections per image + time_limit = 10.0 # seconds to quit after + redundant = True # require redundant detections + multi_label = nc > 1 # multiple labels per box (adds 0.5ms/img) + merge = False # use merge-NMS + + t = time.time() + output = [torch.zeros(0, 6)] * prediction.shape[0] + for xi, x in enumerate(prediction): # image index, image inference + # Apply constraints + # x[((x[..., 2:4] < min_wh) | (x[..., 2:4] > max_wh)).any(1), 4] = 0 # width-height + x = x[xc[xi]] # confidence + + # Cat apriori labels if autolabelling + if labels and len(labels[xi]): + l = labels[xi] + v = torch.zeros((len(l), nc + 5), device=x.device) + v[:, :4] = l[:, 1:5] # box + v[:, 4] = 1.0 # conf + v[range(len(l)), l[:, 0].long() + 5] = 1.0 # cls + x = torch.cat((x, v), 0) + + # If none remain process next image + if not x.shape[0]: + continue + + # Compute conf + x[:, 5:] *= x[:, 4:5] # conf = obj_conf * cls_conf + + # Box (center x, center y, width, height) to (x1, y1, x2, y2) + box = xywh2xyxy(x[:, :4]) + + # Detections matrix nx6 (xyxy, conf, cls) + if multi_label: + i, j = (x[:, 5:] > conf_thres).nonzero(as_tuple=False).T + x = torch.cat((box[i], x[i, j + 5, None], j[:, None].float()), 1) + else: # best class only + conf, j = x[:, 5:].max(1, keepdim=True) + x = torch.cat((box, conf, j.float()), 1)[conf.view(-1) > conf_thres] + + # Filter by class + if classes: + x = x[(x[:, 5:6] == torch.tensor(classes, device=x.device)).any(1)] + + # Apply finite constraint + # if not torch.isfinite(x).all(): + # x = x[torch.isfinite(x).all(1)] + + # If none remain process next image + n = x.shape[0] # number of boxes + if not n: + continue + + # Sort by confidence + # x = x[x[:, 4].argsort(descending=True)] + + # Batched NMS + c = x[:, 5:6] * (0 if agnostic else max_wh) # classes + boxes, scores = x[:, :4] + c, x[:, 4] # boxes (offset by class), scores + i = torchvision.ops.nms(boxes, scores, iou_thres) # NMS + if i.shape[0] > max_det: # limit detections + i = i[:max_det] + if merge and (1 < n < 3E3): # Merge NMS (boxes merged using weighted mean) + # update boxes as boxes(i,4) = weights(i,n) * boxes(n,4) + iou = box_iou(boxes[i], boxes) > iou_thres # iou matrix + weights = iou * scores[None] # box weights + x[i, :4] = torch.mm(weights, x[:, :4]).float() / weights.sum(1, keepdim=True) # merged boxes + if redundant: + i = i[iou.sum(1) > 1] # require redundancy + + output[xi] = x[i] + if (time.time() - t) > time_limit: + break # time limit exceeded + + return output + + +def strip_optimizer(f='weights/best.pt', s=''): # from utils.general import *; strip_optimizer() + # Strip optimizer from 'f' to finalize training, optionally save as 's' + x = torch.load(f, map_location=torch.device('cpu')) + x['optimizer'] = None + x['training_results'] = None + x['epoch'] = -1 + x['model'].half() # to FP16 + for p in x['model'].parameters(): + p.requires_grad = False + torch.save(x, s or f) + mb = os.path.getsize(s or f) / 1E6 # filesize + print('Optimizer stripped from %s,%s %.1fMB' % (f, (' saved as %s,' % s) if s else '', mb)) + + +def print_mutation(hyp, results, yaml_file='hyp_evolved.yaml', bucket=''): + # Print mutation results to evolve.txt (for use with train.py --evolve) + a = '%10s' * len(hyp) % tuple(hyp.keys()) # hyperparam keys + b = '%10.3g' * len(hyp) % tuple(hyp.values()) # hyperparam values + c = '%10.4g' * len(results) % results # results (P, R, mAP@0.5, mAP@0.5:0.95, val_losses x 3) + print('\n%s\n%s\nEvolved fitness: %s\n' % (a, b, c)) + + if bucket: + url = 'gs://%s/evolve.txt' % bucket + if gsutil_getsize(url) > (os.path.getsize('evolve.txt') if os.path.exists('evolve.txt') else 0): + os.system('gsutil cp %s .' % url) # download evolve.txt if larger than local + + with open('evolve.txt', 'a') as f: # append result + f.write(c + b + '\n') + x = np.unique(np.loadtxt('evolve.txt', ndmin=2), axis=0) # load unique rows + x = x[np.argsort(-fitness(x))] # sort + np.savetxt('evolve.txt', x, '%10.3g') # save sort by fitness + + # Save yaml + for i, k in enumerate(hyp.keys()): + hyp[k] = float(x[0, i + 7]) + with open(yaml_file, 'w') as f: + results = tuple(x[0, :7]) + c = '%10.4g' * len(results) % results # results (P, R, mAP@0.5, mAP@0.5:0.95, val_losses x 3) + f.write('# Hyperparameter Evolution Results\n# Generations: %g\n# Metrics: ' % len(x) + c + '\n\n') + yaml.dump(hyp, f, sort_keys=False) + + if bucket: + os.system('gsutil cp evolve.txt %s gs://%s' % (yaml_file, bucket)) # upload + + +def apply_classifier(x, model, img, im0): + # applies a second stage classifier to yolo outputs + im0 = [im0] if isinstance(im0, np.ndarray) else im0 + for i, d in enumerate(x): # per image + if d is not None and len(d): + d = d.clone() + + # Reshape and pad cutouts + b = xyxy2xywh(d[:, :4]) # boxes + b[:, 2:] = b[:, 2:].max(1)[0].unsqueeze(1) # rectangle to square + b[:, 2:] = b[:, 2:] * 1.3 + 30 # pad + d[:, :4] = xywh2xyxy(b).long() + + # Rescale boxes from img_size to im0 size + scale_coords(img.shape[2:], d[:, :4], im0[i].shape) + + # Classes + pred_cls1 = d[:, 5].long() + ims = [] + for j, a in enumerate(d): # per item + cutout = im0[i][int(a[1]):int(a[3]), int(a[0]):int(a[2])] + im = cv2.resize(cutout, (224, 224)) # BGR + # cv2.imwrite('test%i.jpg' % j, cutout) + + im = im[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416 + im = np.ascontiguousarray(im, dtype=np.float32) # uint8 to float32 + im /= 255.0 # 0 - 255 to 0.0 - 1.0 + ims.append(im) + + pred_cls2 = model(torch.Tensor(ims).to(d.device)).argmax(1) # classifier prediction + x[i] = x[i][pred_cls1 == pred_cls2] # retain matching class detections + + return x + + +def increment_path(path, exist_ok=True, sep=''): + # Increment path, i.e. runs/exp --> runs/exp{sep}0, runs/exp{sep}1 etc. + path = Path(path) # os-agnostic + if (path.exists() and exist_ok) or (not path.exists()): + return str(path) + else: + dirs = glob.glob(f"{path}{sep}*") # similar paths + matches = [re.search(rf"%s{sep}(\d+)" % path.stem, d) for d in dirs] + i = [int(m.groups()[0]) for m in matches if m] # indices + n = max(i) + 1 if i else 2 # increment number + return f"{path}{sep}{n}" # update path diff --git a/utils/google_app_engine/Dockerfile b/utils/google_app_engine/Dockerfile new file mode 100644 index 00000000..0155618f --- /dev/null +++ b/utils/google_app_engine/Dockerfile @@ -0,0 +1,25 @@ +FROM gcr.io/google-appengine/python + +# Create a virtualenv for dependencies. This isolates these packages from +# system-level packages. +# Use -p python3 or -p python3.7 to select python version. Default is version 2. +RUN virtualenv /env -p python3 + +# Setting these environment variables are the same as running +# source /env/bin/activate. +ENV VIRTUAL_ENV /env +ENV PATH /env/bin:$PATH + +RUN apt-get update && apt-get install -y python-opencv + +# Copy the application's requirements.txt and run pip to install all +# dependencies into the virtualenv. +ADD requirements.txt /app/requirements.txt +RUN pip install -r /app/requirements.txt + +# Add the application source code. +ADD . /app + +# Run a WSGI server to serve the application. gunicorn must be declared as +# a dependency in requirements.txt. +CMD gunicorn -b :$PORT main:app diff --git a/utils/google_app_engine/additional_requirements.txt b/utils/google_app_engine/additional_requirements.txt new file mode 100644 index 00000000..5fcc3052 --- /dev/null +++ b/utils/google_app_engine/additional_requirements.txt @@ -0,0 +1,4 @@ +# add these requirements in your app on top of the existing ones +pip==18.1 +Flask==1.0.2 +gunicorn==19.9.0 diff --git a/utils/google_app_engine/app.yaml b/utils/google_app_engine/app.yaml new file mode 100644 index 00000000..bd162e44 --- /dev/null +++ b/utils/google_app_engine/app.yaml @@ -0,0 +1,14 @@ +runtime: custom +env: flex + +service: yolov3app + +liveness_check: + initial_delay_sec: 600 + +manual_scaling: + instances: 1 +resources: + cpu: 1 + memory_gb: 4 + disk_size_gb: 20 \ No newline at end of file diff --git a/utils/google_utils.py b/utils/google_utils.py index 1679f0fe..d50198fe 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -1,17 +1,60 @@ -# This file contains google utils: https://cloud.google.com/storage/docs/reference/libraries -# pip install --upgrade google-cloud-storage +# Google utils: https://cloud.google.com/storage/docs/reference/libraries import os +import platform +import subprocess import time +from pathlib import Path + +import torch -# from google.cloud import storage +def gsutil_getsize(url=''): + # gs://bucket/file size https://cloud.google.com/storage/docs/gsutil/commands/du + s = subprocess.check_output('gsutil du %s' % url, shell=True).decode('utf-8') + return eval(s.split(' ')[0]) if len(s) else 0 # bytes -def gdrive_download(id='1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO', name='coco.zip'): - # https://gist.github.com/tanaikech/f0f2d122e05bf5f971611258c22c110f - # Downloads a file from Google Drive, accepting presented query - # from utils.google_utils import *; gdrive_download() +def attempt_download(weights): + # Attempt to download pretrained weights if not found locally + weights = weights.strip().replace("'", '') + file = Path(weights).name.lower() + + msg = weights + ' missing, try downloading from https://github.com/ultralytics/yolov3/releases/' + models = ['yolov3.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt'] # available models + redundant = False # offer second download option + + if file in models and not os.path.isfile(weights): + # Google Drive + # d = {'yolov5s.pt': '1R5T6rIyy3lLwgFXNms8whc-387H0tMQO', + # 'yolov5m.pt': '1vobuEExpWQVpXExsJ2w-Mbf3HJjWkQJr', + # 'yolov5l.pt': '1hrlqD1Wdei7UT4OgT785BEk1JwnSvNEV', + # 'yolov5x.pt': '1mM8aZJlWTxOg7BZJvNUMrTnA2AbeCVzS'} + # r = gdrive_download(id=d[file], name=weights) if file in d else 1 + # if r == 0 and os.path.exists(weights) and os.path.getsize(weights) > 1E6: # check + # return + + try: # GitHub + url = 'https://github.com/ultralytics/yolov3/releases/download/v1.0/' + file + print('Downloading %s to %s...' % (url, weights)) + torch.hub.download_url_to_file(url, weights) + assert os.path.exists(weights) and os.path.getsize(weights) > 1E6 # check + except Exception as e: # GCP + print('Download error: %s' % e) + assert redundant, 'No secondary mirror' + url = 'https://storage.googleapis.com/ultralytics/yolov3/ckpt/' + file + print('Downloading %s to %s...' % (url, weights)) + r = os.system('curl -L %s -o %s' % (url, weights)) # torch.hub.download_url_to_file(url, weights) + finally: + if not (os.path.exists(weights) and os.path.getsize(weights) > 1E6): # check + os.remove(weights) if os.path.exists(weights) else None # remove partial downloads + print('ERROR: Download failure: %s' % msg) + print('') + return + + +def gdrive_download(id='1n_oKgR81BJtqk75b00eAjdv03qVCQn2f', name='coco128.zip'): + # Downloads a file from Google Drive. from utils.google_utils import *; gdrive_download() t = time.time() print('Downloading https://drive.google.com/uc?export=download&id=%s as %s... ' % (id, name), end='') @@ -19,13 +62,13 @@ def gdrive_download(id='1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO', name='coco.zip'): os.remove('cookie') if os.path.exists('cookie') else None # Attempt file download - os.system("curl -c ./cookie -s -L \"https://drive.google.com/uc?export=download&id=%s\" > /dev/null" % id) + out = "NUL" if platform.system() == "Windows" else "/dev/null" + os.system('curl -c ./cookie -s -L "drive.google.com/uc?export=download&id=%s" > %s ' % (id, out)) if os.path.exists('cookie'): # large file - s = "curl -Lb ./cookie \"https://drive.google.com/uc?export=download&confirm=`awk '/download/ {print $NF}' ./cookie`&id=%s\" -o %s" % ( - id, name) + s = 'curl -Lb ./cookie "drive.google.com/uc?export=download&confirm=%s&id=%s" -o %s' % (get_token(), id, name) else: # small file - s = "curl -s -L -o %s 'https://drive.google.com/uc?export=download&id=%s'" % (name, id) - r = os.system(s) # execute, capture return values + s = 'curl -s -L -o %s "drive.google.com/uc?export=download&id=%s"' % (name, id) + r = os.system(s) # execute, capture return os.remove('cookie') if os.path.exists('cookie') else None # Error check @@ -44,29 +87,36 @@ def gdrive_download(id='1HaXkef9z6y5l4vUnCYgdmEAj61c6bfWO', name='coco.zip'): return r -def upload_blob(bucket_name, source_file_name, destination_blob_name): - # Uploads a file to a bucket - # https://cloud.google.com/storage/docs/uploading-objects#storage-upload-object-python +def get_token(cookie="./cookie"): + with open(cookie) as f: + for line in f: + if "download" in line: + return line.split()[-1] + return "" - storage_client = storage.Client() - bucket = storage_client.get_bucket(bucket_name) - blob = bucket.blob(destination_blob_name) - - blob.upload_from_filename(source_file_name) - - print('File {} uploaded to {}.'.format( - source_file_name, - destination_blob_name)) - - -def download_blob(bucket_name, source_blob_name, destination_file_name): - # Uploads a blob from a bucket - storage_client = storage.Client() - bucket = storage_client.get_bucket(bucket_name) - blob = bucket.blob(source_blob_name) - - blob.download_to_filename(destination_file_name) - - print('Blob {} downloaded to {}.'.format( - source_blob_name, - destination_file_name)) +# def upload_blob(bucket_name, source_file_name, destination_blob_name): +# # Uploads a file to a bucket +# # https://cloud.google.com/storage/docs/uploading-objects#storage-upload-object-python +# +# storage_client = storage.Client() +# bucket = storage_client.get_bucket(bucket_name) +# blob = bucket.blob(destination_blob_name) +# +# blob.upload_from_filename(source_file_name) +# +# print('File {} uploaded to {}.'.format( +# source_file_name, +# destination_blob_name)) +# +# +# def download_blob(bucket_name, source_blob_name, destination_file_name): +# # Uploads a blob from a bucket +# storage_client = storage.Client() +# bucket = storage_client.get_bucket(bucket_name) +# blob = bucket.blob(source_blob_name) +# +# blob.download_to_filename(destination_file_name) +# +# print('Blob {} downloaded to {}.'.format( +# source_blob_name, +# destination_file_name)) diff --git a/utils/layers.py b/utils/layers.py deleted file mode 100644 index 35c13c9f..00000000 --- a/utils/layers.py +++ /dev/null @@ -1,148 +0,0 @@ -import torch.nn.functional as F - -from utils.utils import * - - -def make_divisible(v, divisor): - # Function ensures all layers have a channel number that is divisible by 8 - # https://github.com/tensorflow/models/blob/master/research/slim/nets/mobilenet/mobilenet.py - return math.ceil(v / divisor) * divisor - - -class Flatten(nn.Module): - # Use after nn.AdaptiveAvgPool2d(1) to remove last 2 dimensions - def forward(self, x): - return x.view(x.size(0), -1) - - -class Concat(nn.Module): - # Concatenate a list of tensors along dimension - def __init__(self, dimension=1): - super(Concat, self).__init__() - self.d = dimension - - def forward(self, x): - return torch.cat(x, self.d) - - -class FeatureConcat(nn.Module): - def __init__(self, layers): - super(FeatureConcat, self).__init__() - self.layers = layers # layer indices - self.multiple = len(layers) > 1 # multiple layers flag - - def forward(self, x, outputs): - return torch.cat([outputs[i] for i in self.layers], 1) if self.multiple else outputs[self.layers[0]] - - -class WeightedFeatureFusion(nn.Module): # weighted sum of 2 or more layers https://arxiv.org/abs/1911.09070 - def __init__(self, layers, weight=False): - super(WeightedFeatureFusion, self).__init__() - self.layers = layers # layer indices - self.weight = weight # apply weights boolean - self.n = len(layers) + 1 # number of layers - if weight: - self.w = nn.Parameter(torch.zeros(self.n), requires_grad=True) # layer weights - - def forward(self, x, outputs): - # Weights - if self.weight: - w = torch.sigmoid(self.w) * (2 / self.n) # sigmoid weights (0-1) - x = x * w[0] - - # Fusion - nx = x.shape[1] # input channels - for i in range(self.n - 1): - a = outputs[self.layers[i]] * w[i + 1] if self.weight else outputs[self.layers[i]] # feature to add - na = a.shape[1] # feature channels - - # Adjust channels - if nx == na: # same shape - x = x + a - elif nx > na: # slice input - x[:, :na] = x[:, :na] + a # or a = nn.ZeroPad2d((0, 0, 0, 0, 0, dc))(a); x = x + a - else: # slice feature - x = x + a[:, :nx] - - return x - - -class MixConv2d(nn.Module): # MixConv: Mixed Depthwise Convolutional Kernels https://arxiv.org/abs/1907.09595 - def __init__(self, in_ch, out_ch, k=(3, 5, 7), stride=1, dilation=1, bias=True, method='equal_params'): - super(MixConv2d, self).__init__() - - groups = len(k) - if method == 'equal_ch': # equal channels per group - i = torch.linspace(0, groups - 1E-6, out_ch).floor() # out_ch indices - ch = [(i == g).sum() for g in range(groups)] - else: # 'equal_params': equal parameter count per group - b = [out_ch] + [0] * groups - a = np.eye(groups + 1, groups, k=-1) - a -= np.roll(a, 1, axis=1) - a *= np.array(k) ** 2 - a[0] = 1 - ch = np.linalg.lstsq(a, b, rcond=None)[0].round().astype(int) # solve for equal weight indices, ax = b - - self.m = nn.ModuleList([nn.Conv2d(in_channels=in_ch, - out_channels=ch[g], - kernel_size=k[g], - stride=stride, - padding=k[g] // 2, # 'same' pad - dilation=dilation, - bias=bias) for g in range(groups)]) - - def forward(self, x): - return torch.cat([m(x) for m in self.m], 1) - - -# Activation functions below ------------------------------------------------------------------------------------------- -class SwishImplementation(torch.autograd.Function): - @staticmethod - def forward(ctx, x): - ctx.save_for_backward(x) - return x * torch.sigmoid(x) - - @staticmethod - def backward(ctx, grad_output): - x = ctx.saved_tensors[0] - sx = torch.sigmoid(x) # sigmoid(ctx) - return grad_output * (sx * (1 + x * (1 - sx))) - - -class MishImplementation(torch.autograd.Function): - @staticmethod - def forward(ctx, x): - ctx.save_for_backward(x) - return x.mul(torch.tanh(F.softplus(x))) # x * tanh(ln(1 + exp(x))) - - @staticmethod - def backward(ctx, grad_output): - x = ctx.saved_tensors[0] - sx = torch.sigmoid(x) - fx = F.softplus(x).tanh() - return grad_output * (fx + x * sx * (1 - fx * fx)) - - -class MemoryEfficientSwish(nn.Module): - def forward(self, x): - return SwishImplementation.apply(x) - - -class MemoryEfficientMish(nn.Module): - def forward(self, x): - return MishImplementation.apply(x) - - -class Swish(nn.Module): - def forward(self, x): - return x * torch.sigmoid(x) - - -class HardSwish(nn.Module): # https://arxiv.org/pdf/1905.02244.pdf - def forward(self, x): - return x * F.hardtanh(x + 3, 0., 6., True) / 6. - - -class Mish(nn.Module): # https://github.com/digantamisra98/Mish - def forward(self, x): - return x * F.softplus(x).tanh() diff --git a/utils/loss.py b/utils/loss.py new file mode 100644 index 00000000..4893c999 --- /dev/null +++ b/utils/loss.py @@ -0,0 +1,179 @@ +# Loss functions + +import torch +import torch.nn as nn + +from utils.general import bbox_iou +from utils.torch_utils import is_parallel + + +def smooth_BCE(eps=0.1): # https://github.com/ultralytics/yolov3/issues/238#issuecomment-598028441 + # return positive, negative label smoothing BCE targets + return 1.0 - 0.5 * eps, 0.5 * eps + + +class BCEBlurWithLogitsLoss(nn.Module): + # BCEwithLogitLoss() with reduced missing label effects. + def __init__(self, alpha=0.05): + super(BCEBlurWithLogitsLoss, self).__init__() + self.loss_fcn = nn.BCEWithLogitsLoss(reduction='none') # must be nn.BCEWithLogitsLoss() + self.alpha = alpha + + def forward(self, pred, true): + loss = self.loss_fcn(pred, true) + pred = torch.sigmoid(pred) # prob from logits + dx = pred - true # reduce only missing label effects + # dx = (pred - true).abs() # reduce missing label and false label effects + alpha_factor = 1 - torch.exp((dx - 1) / (self.alpha + 1e-4)) + loss *= alpha_factor + return loss.mean() + + +class FocalLoss(nn.Module): + # Wraps focal loss around existing loss_fcn(), i.e. criteria = FocalLoss(nn.BCEWithLogitsLoss(), gamma=1.5) + def __init__(self, loss_fcn, gamma=1.5, alpha=0.25): + super(FocalLoss, self).__init__() + self.loss_fcn = loss_fcn # must be nn.BCEWithLogitsLoss() + self.gamma = gamma + self.alpha = alpha + self.reduction = loss_fcn.reduction + self.loss_fcn.reduction = 'none' # required to apply FL to each element + + def forward(self, pred, true): + loss = self.loss_fcn(pred, true) + # p_t = torch.exp(-loss) + # loss *= self.alpha * (1.000001 - p_t) ** self.gamma # non-zero power for gradient stability + + # TF implementation https://github.com/tensorflow/addons/blob/v0.7.1/tensorflow_addons/losses/focal_loss.py + pred_prob = torch.sigmoid(pred) # prob from logits + p_t = true * pred_prob + (1 - true) * (1 - pred_prob) + alpha_factor = true * self.alpha + (1 - true) * (1 - self.alpha) + modulating_factor = (1.0 - p_t) ** self.gamma + loss *= alpha_factor * modulating_factor + + if self.reduction == 'mean': + return loss.mean() + elif self.reduction == 'sum': + return loss.sum() + else: # 'none' + return loss + + +def compute_loss(p, targets, model): # predictions, targets, model + device = targets.device + lcls, lbox, lobj = torch.zeros(1, device=device), torch.zeros(1, device=device), torch.zeros(1, device=device) + tcls, tbox, indices, anchors = build_targets(p, targets, model) # targets + h = model.hyp # hyperparameters + + # Define criteria + BCEcls = nn.BCEWithLogitsLoss(pos_weight=torch.Tensor([h['cls_pw']])).to(device) + BCEobj = nn.BCEWithLogitsLoss(pos_weight=torch.Tensor([h['obj_pw']])).to(device) + + # Class label smoothing https://arxiv.org/pdf/1902.04103.pdf eqn 3 + cp, cn = smooth_BCE(eps=0.0) + + # Focal loss + g = h['fl_gamma'] # focal loss gamma + if g > 0: + BCEcls, BCEobj = FocalLoss(BCEcls, g), FocalLoss(BCEobj, g) + + # Losses + nt = 0 # number of targets + no = len(p) # number of outputs + balance = [4.0, 1.0, 0.4] if no == 3 else [4.0, 1.0, 0.4, 0.1] # P3-5 or P3-6 + for i, pi in enumerate(p): # layer index, layer predictions + b, a, gj, gi = indices[i] # image, anchor, gridy, gridx + tobj = torch.zeros_like(pi[..., 0], device=device) # target obj + + n = b.shape[0] # number of targets + if n: + nt += n # cumulative targets + ps = pi[b, a, gj, gi] # prediction subset corresponding to targets + + # Regression + pxy = ps[:, :2].sigmoid() * 2. - 0.5 + pwh = (ps[:, 2:4].sigmoid() * 2) ** 2 * anchors[i] + pbox = torch.cat((pxy, pwh), 1).to(device) # predicted box + iou = bbox_iou(pbox.T, tbox[i], x1y1x2y2=False, CIoU=True) # iou(prediction, target) + lbox += (1.0 - iou).mean() # iou loss + + # Objectness + tobj[b, a, gj, gi] = (1.0 - model.gr) + model.gr * iou.detach().clamp(0).type(tobj.dtype) # iou ratio + + # Classification + if model.nc > 1: # cls loss (only if multiple classes) + t = torch.full_like(ps[:, 5:], cn, device=device) # targets + t[range(n), tcls[i]] = cp + lcls += BCEcls(ps[:, 5:], t) # BCE + + # Append targets to text file + # with open('targets.txt', 'a') as file: + # [file.write('%11.5g ' * 4 % tuple(x) + '\n') for x in torch.cat((txy[i], twh[i]), 1)] + + lobj += BCEobj(pi[..., 4], tobj) * balance[i] # obj loss + + s = 3 / no # output count scaling + lbox *= h['box'] * s + lobj *= h['obj'] * s * (1.4 if no == 4 else 1.) + lcls *= h['cls'] * s + bs = tobj.shape[0] # batch size + + loss = lbox + lobj + lcls + return loss * bs, torch.cat((lbox, lobj, lcls, loss)).detach() + + +def build_targets(p, targets, model): + # Build targets for compute_loss(), input targets(image,class,x,y,w,h) + det = model.module.model[-1] if is_parallel(model) else model.model[-1] # Detect() module + na, nt = det.na, targets.shape[0] # number of anchors, targets + tcls, tbox, indices, anch = [], [], [], [] + gain = torch.ones(7, device=targets.device) # normalized to gridspace gain + ai = torch.arange(na, device=targets.device).float().view(na, 1).repeat(1, nt) # same as .repeat_interleave(nt) + targets = torch.cat((targets.repeat(na, 1, 1), ai[:, :, None]), 2) # append anchor indices + + g = 0.5 # bias + off = torch.tensor([[0, 0], + # [1, 0], [0, 1], [-1, 0], [0, -1], # j,k,l,m + # [1, 1], [1, -1], [-1, 1], [-1, -1], # jk,jm,lk,lm + ], device=targets.device).float() * g # offsets + + for i in range(det.nl): + anchors = det.anchors[i] + gain[2:6] = torch.tensor(p[i].shape)[[3, 2, 3, 2]] # xyxy gain + + # Match targets to anchors + t = targets * gain + if nt: + # Matches + r = t[:, :, 4:6] / anchors[:, None] # wh ratio + j = torch.max(r, 1. / r).max(2)[0] < model.hyp['anchor_t'] # compare + # j = wh_iou(anchors, t[:, 4:6]) > model.hyp['iou_t'] # iou(3,n)=wh_iou(anchors(3,2), gwh(n,2)) + t = t[j] # filter + + # Offsets + gxy = t[:, 2:4] # grid xy + gxi = gain[[2, 3]] - gxy # inverse + j, k = ((gxy % 1. < g) & (gxy > 1.)).T + l, m = ((gxi % 1. < g) & (gxi > 1.)).T + j = torch.stack((torch.ones_like(j),)) + t = t.repeat((off.shape[0], 1, 1))[j] + offsets = (torch.zeros_like(gxy)[None] + off[:, None])[j] + else: + t = targets[0] + offsets = 0 + + # Define + b, c = t[:, :2].long().T # image, class + gxy = t[:, 2:4] # grid xy + gwh = t[:, 4:6] # grid wh + gij = (gxy - offsets).long() + gi, gj = gij.T # grid xy indices + + # Append + a = t[:, 6].long() # anchor indices + indices.append((b, a, gj.clamp_(0, gain[3] - 1), gi.clamp_(0, gain[2] - 1))) # image, anchor, grid indices + tbox.append(torch.cat((gxy - gij, gwh), 1)) # box + anch.append(anchors[a]) # anchors + tcls.append(c) # class + + return tcls, tbox, indices, anch diff --git a/utils/metrics.py b/utils/metrics.py new file mode 100644 index 00000000..79f18cff --- /dev/null +++ b/utils/metrics.py @@ -0,0 +1,203 @@ +# Model validation metrics + +from pathlib import Path + +import matplotlib.pyplot as plt +import numpy as np +import torch + +from . import general + + +def fitness(x): + # Model fitness as a weighted combination of metrics + w = [0.0, 0.0, 0.1, 0.9] # weights for [P, R, mAP@0.5, mAP@0.5:0.95] + return (x[:, :4] * w).sum(1) + + +def ap_per_class(tp, conf, pred_cls, target_cls, plot=False, save_dir='precision-recall_curve.png', names=[]): + """ Compute the average precision, given the recall and precision curves. + Source: https://github.com/rafaelpadilla/Object-Detection-Metrics. + # Arguments + tp: True positives (nparray, nx1 or nx10). + conf: Objectness value from 0-1 (nparray). + pred_cls: Predicted object classes (nparray). + target_cls: True object classes (nparray). + plot: Plot precision-recall curve at mAP@0.5 + save_dir: Plot save directory + # Returns + The average precision as computed in py-faster-rcnn. + """ + + # Sort by objectness + i = np.argsort(-conf) + tp, conf, pred_cls = tp[i], conf[i], pred_cls[i] + + # Find unique classes + unique_classes = np.unique(target_cls) + + # Create Precision-Recall curve and compute AP for each class + px, py = np.linspace(0, 1, 1000), [] # for plotting + pr_score = 0.1 # score to evaluate P and R https://github.com/ultralytics/yolov3/issues/898 + s = [unique_classes.shape[0], tp.shape[1]] # number class, number iou thresholds (i.e. 10 for mAP0.5...0.95) + ap, p, r = np.zeros(s), np.zeros(s), np.zeros(s) + for ci, c in enumerate(unique_classes): + i = pred_cls == c + n_l = (target_cls == c).sum() # number of labels + n_p = i.sum() # number of predictions + + if n_p == 0 or n_l == 0: + continue + else: + # Accumulate FPs and TPs + fpc = (1 - tp[i]).cumsum(0) + tpc = tp[i].cumsum(0) + + # Recall + recall = tpc / (n_l + 1e-16) # recall curve + r[ci] = np.interp(-pr_score, -conf[i], recall[:, 0]) # r at pr_score, negative x, xp because xp decreases + + # Precision + precision = tpc / (tpc + fpc) # precision curve + p[ci] = np.interp(-pr_score, -conf[i], precision[:, 0]) # p at pr_score + + # AP from recall-precision curve + for j in range(tp.shape[1]): + ap[ci, j], mpre, mrec = compute_ap(recall[:, j], precision[:, j]) + if plot and (j == 0): + py.append(np.interp(px, mrec, mpre)) # precision at mAP@0.5 + + # Compute F1 score (harmonic mean of precision and recall) + f1 = 2 * p * r / (p + r + 1e-16) + + if plot: + plot_pr_curve(px, py, ap, save_dir, names) + + return p, r, ap, f1, unique_classes.astype('int32') + + +def compute_ap(recall, precision): + """ Compute the average precision, given the recall and precision curves. + Source: https://github.com/rbgirshick/py-faster-rcnn. + # Arguments + recall: The recall curve (list). + precision: The precision curve (list). + # Returns + The average precision as computed in py-faster-rcnn. + """ + + # Append sentinel values to beginning and end + mrec = recall # np.concatenate(([0.], recall, [recall[-1] + 1E-3])) + mpre = precision # np.concatenate(([0.], precision, [0.])) + + # Compute the precision envelope + mpre = np.flip(np.maximum.accumulate(np.flip(mpre))) + + # Integrate area under curve + method = 'interp' # methods: 'continuous', 'interp' + if method == 'interp': + x = np.linspace(0, 1, 101) # 101-point interp (COCO) + ap = np.trapz(np.interp(x, mrec, mpre), x) # integrate + else: # 'continuous' + i = np.where(mrec[1:] != mrec[:-1])[0] # points where x axis (recall) changes + ap = np.sum((mrec[i + 1] - mrec[i]) * mpre[i + 1]) # area under curve + + return ap, mpre, mrec + + +class ConfusionMatrix: + # Updated version of https://github.com/kaanakan/object_detection_confusion_matrix + def __init__(self, nc, conf=0.25, iou_thres=0.45): + self.matrix = np.zeros((nc + 1, nc + 1)) + self.nc = nc # number of classes + self.conf = conf + self.iou_thres = iou_thres + + def process_batch(self, detections, labels): + """ + Return intersection-over-union (Jaccard index) of boxes. + Both sets of boxes are expected to be in (x1, y1, x2, y2) format. + Arguments: + detections (Array[N, 6]), x1, y1, x2, y2, conf, class + labels (Array[M, 5]), class, x1, y1, x2, y2 + Returns: + None, updates confusion matrix accordingly + """ + detections = detections[detections[:, 4] > self.conf] + gt_classes = labels[:, 0].int() + detection_classes = detections[:, 5].int() + iou = general.box_iou(labels[:, 1:], detections[:, :4]) + + x = torch.where(iou > self.iou_thres) + if x[0].shape[0]: + matches = torch.cat((torch.stack(x, 1), iou[x[0], x[1]][:, None]), 1).cpu().numpy() + if x[0].shape[0] > 1: + matches = matches[matches[:, 2].argsort()[::-1]] + matches = matches[np.unique(matches[:, 1], return_index=True)[1]] + matches = matches[matches[:, 2].argsort()[::-1]] + matches = matches[np.unique(matches[:, 0], return_index=True)[1]] + else: + matches = np.zeros((0, 3)) + + n = matches.shape[0] > 0 + m0, m1, _ = matches.transpose().astype(np.int16) + for i, gc in enumerate(gt_classes): + j = m0 == i + if n and sum(j) == 1: + self.matrix[gc, detection_classes[m1[j]]] += 1 # correct + else: + self.matrix[gc, self.nc] += 1 # background FP + + if n: + for i, dc in enumerate(detection_classes): + if not any(m1 == i): + self.matrix[self.nc, dc] += 1 # background FN + + def matrix(self): + return self.matrix + + def plot(self, save_dir='', names=()): + try: + import seaborn as sn + + array = self.matrix / (self.matrix.sum(0).reshape(1, self.nc + 1) + 1E-6) # normalize + array[array < 0.005] = np.nan # don't annotate (would appear as 0.00) + + fig = plt.figure(figsize=(12, 9)) + sn.set(font_scale=1.0 if self.nc < 50 else 0.8) # for label size + labels = (0 < len(names) < 99) and len(names) == self.nc # apply names to ticklabels + sn.heatmap(array, annot=self.nc < 30, annot_kws={"size": 8}, cmap='Blues', fmt='.2f', square=True, + xticklabels=names + ['background FN'] if labels else "auto", + yticklabels=names + ['background FP'] if labels else "auto").set_facecolor((1, 1, 1)) + fig.axes[0].set_xlabel('True') + fig.axes[0].set_ylabel('Predicted') + fig.tight_layout() + fig.savefig(Path(save_dir) / 'confusion_matrix.png', dpi=250) + except Exception as e: + pass + + def print(self): + for i in range(self.nc + 1): + print(' '.join(map(str, self.matrix[i]))) + + +# Plots ---------------------------------------------------------------------------------------------------------------- + +def plot_pr_curve(px, py, ap, save_dir='.', names=()): + fig, ax = plt.subplots(1, 1, figsize=(9, 6)) + py = np.stack(py, axis=1) + + if 0 < len(names) < 21: # show mAP in legend if < 10 classes + for i, y in enumerate(py.T): + ax.plot(px, y, linewidth=1, label=f'{names[i]} %.3f' % ap[i, 0]) # plot(recall, precision) + else: + ax.plot(px, py, linewidth=1, color='grey') # plot(recall, precision) + + ax.plot(px, py.mean(1), linewidth=3, color='blue', label='all classes %.3f mAP@0.5' % ap[:, 0].mean()) + ax.set_xlabel('Recall') + ax.set_ylabel('Precision') + ax.set_xlim(0, 1) + ax.set_ylim(0, 1) + plt.legend(bbox_to_anchor=(1.04, 1), loc="upper left") + fig.tight_layout() + fig.savefig(Path(save_dir) / 'precision_recall_curve.png', dpi=250) diff --git a/utils/parse_config.py b/utils/parse_config.py deleted file mode 100644 index 88d7d7ed..00000000 --- a/utils/parse_config.py +++ /dev/null @@ -1,71 +0,0 @@ -import os - -import numpy as np - - -def parse_model_cfg(path): - # Parse the yolo *.cfg file and return module definitions path may be 'cfg/yolov3.cfg', 'yolov3.cfg', or 'yolov3' - if not path.endswith('.cfg'): # add .cfg suffix if omitted - path += '.cfg' - if not os.path.exists(path) and os.path.exists('cfg' + os.sep + path): # add cfg/ prefix if omitted - path = 'cfg' + os.sep + path - - with open(path, 'r') as f: - lines = f.read().split('\n') - lines = [x for x in lines if x and not x.startswith('#')] - lines = [x.rstrip().lstrip() for x in lines] # get rid of fringe whitespaces - mdefs = [] # module definitions - for line in lines: - if line.startswith('['): # This marks the start of a new block - mdefs.append({}) - mdefs[-1]['type'] = line[1:-1].rstrip() - if mdefs[-1]['type'] == 'convolutional': - mdefs[-1]['batch_normalize'] = 0 # pre-populate with zeros (may be overwritten later) - else: - key, val = line.split("=") - key = key.rstrip() - - if key == 'anchors': # return nparray - mdefs[-1][key] = np.array([float(x) for x in val.split(',')]).reshape((-1, 2)) # np anchors - elif (key in ['from', 'layers', 'mask']) or (key == 'size' and ',' in val): # return array - mdefs[-1][key] = [int(x) for x in val.split(',')] - else: - val = val.strip() - # TODO: .isnumeric() actually fails to get the float case - if val.isnumeric(): # return int or float - mdefs[-1][key] = int(val) if (int(val) - float(val)) == 0 else float(val) - else: - mdefs[-1][key] = val # return string - - # Check all fields are supported - supported = ['type', 'batch_normalize', 'filters', 'size', 'stride', 'pad', 'activation', 'layers', 'groups', - 'from', 'mask', 'anchors', 'classes', 'num', 'jitter', 'ignore_thresh', 'truth_thresh', 'random', - 'stride_x', 'stride_y', 'weights_type', 'weights_normalization', 'scale_x_y', 'beta_nms', 'nms_kind', - 'iou_loss', 'iou_normalizer', 'cls_normalizer', 'iou_thresh', 'probability'] - - f = [] # fields - for x in mdefs[1:]: - [f.append(k) for k in x if k not in f] - u = [x for x in f if x not in supported] # unsupported fields - assert not any(u), "Unsupported fields %s in %s. See https://github.com/ultralytics/yolov3/issues/631" % (u, path) - - return mdefs - - -def parse_data_cfg(path): - # Parses the data configuration file - if not os.path.exists(path) and os.path.exists('data' + os.sep + path): # add data/ prefix if omitted - path = 'data' + os.sep + path - - with open(path, 'r') as f: - lines = f.readlines() - - options = dict() - for line in lines: - line = line.strip() - if line == '' or line.startswith('#'): - continue - key, val = line.split('=') - options[key.strip()] = val.strip() - - return options diff --git a/utils/plots.py b/utils/plots.py new file mode 100644 index 00000000..6b2d7a38 --- /dev/null +++ b/utils/plots.py @@ -0,0 +1,379 @@ +# Plotting utils + +import glob +import os +import random +from copy import copy +from pathlib import Path + +import cv2 +import math +import matplotlib +import matplotlib.pyplot as plt +import numpy as np +import torch +import yaml +from PIL import Image, ImageDraw +from scipy.signal import butter, filtfilt + +from utils.general import xywh2xyxy, xyxy2xywh +from utils.metrics import fitness + +# Settings +matplotlib.use('Agg') # for writing to files only + + +def color_list(): + # Return first 10 plt colors as (r,g,b) https://stackoverflow.com/questions/51350872/python-from-color-name-to-rgb + def hex2rgb(h): + return tuple(int(h[1 + i:1 + i + 2], 16) for i in (0, 2, 4)) + + return [hex2rgb(h) for h in plt.rcParams['axes.prop_cycle'].by_key()['color']] + + +def hist2d(x, y, n=100): + # 2d histogram used in labels.png and evolve.png + xedges, yedges = np.linspace(x.min(), x.max(), n), np.linspace(y.min(), y.max(), n) + hist, xedges, yedges = np.histogram2d(x, y, (xedges, yedges)) + xidx = np.clip(np.digitize(x, xedges) - 1, 0, hist.shape[0] - 1) + yidx = np.clip(np.digitize(y, yedges) - 1, 0, hist.shape[1] - 1) + return np.log(hist[xidx, yidx]) + + +def butter_lowpass_filtfilt(data, cutoff=1500, fs=50000, order=5): + # https://stackoverflow.com/questions/28536191/how-to-filter-smooth-with-scipy-numpy + def butter_lowpass(cutoff, fs, order): + nyq = 0.5 * fs + normal_cutoff = cutoff / nyq + return butter(order, normal_cutoff, btype='low', analog=False) + + b, a = butter_lowpass(cutoff, fs, order=order) + return filtfilt(b, a, data) # forward-backward filter + + +def plot_one_box(x, img, color=None, label=None, line_thickness=None): + # Plots one bounding box on image img + tl = line_thickness or round(0.002 * (img.shape[0] + img.shape[1]) / 2) + 1 # line/font thickness + color = color or [random.randint(0, 255) for _ in range(3)] + c1, c2 = (int(x[0]), int(x[1])), (int(x[2]), int(x[3])) + cv2.rectangle(img, c1, c2, color, thickness=tl, lineType=cv2.LINE_AA) + if label: + tf = max(tl - 1, 1) # font thickness + t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, thickness=tf)[0] + c2 = c1[0] + t_size[0], c1[1] - t_size[1] - 3 + cv2.rectangle(img, c1, c2, color, -1, cv2.LINE_AA) # filled + cv2.putText(img, label, (c1[0], c1[1] - 2), 0, tl / 3, [225, 255, 255], thickness=tf, lineType=cv2.LINE_AA) + + +def plot_wh_methods(): # from utils.plots import *; plot_wh_methods() + # Compares the two methods for width-height anchor multiplication + # https://github.com/ultralytics/yolov3/issues/168 + x = np.arange(-4.0, 4.0, .1) + ya = np.exp(x) + yb = torch.sigmoid(torch.from_numpy(x)).numpy() * 2 + + fig = plt.figure(figsize=(6, 3), dpi=150) + plt.plot(x, ya, '.-', label='YOLOv3') + plt.plot(x, yb ** 2, '.-', label='YOLOv5 ^2') + plt.plot(x, yb ** 1.6, '.-', label='YOLOv5 ^1.6') + plt.xlim(left=-4, right=4) + plt.ylim(bottom=0, top=6) + plt.xlabel('input') + plt.ylabel('output') + plt.grid() + plt.legend() + fig.tight_layout() + fig.savefig('comparison.png', dpi=200) + + +def output_to_target(output): + # Convert model output to target format [batch_id, class_id, x, y, w, h, conf] + targets = [] + for i, o in enumerate(output): + for *box, conf, cls in o.cpu().numpy(): + targets.append([i, cls, *list(*xyxy2xywh(np.array(box)[None])), conf]) + return np.array(targets) + + +def plot_images(images, targets, paths=None, fname='images.jpg', names=None, max_size=640, max_subplots=16): + # Plot image grid with labels + + if isinstance(images, torch.Tensor): + images = images.cpu().float().numpy() + if isinstance(targets, torch.Tensor): + targets = targets.cpu().numpy() + + # un-normalise + if np.max(images[0]) <= 1: + images *= 255 + + tl = 3 # line thickness + tf = max(tl - 1, 1) # font thickness + bs, _, h, w = images.shape # batch size, _, height, width + bs = min(bs, max_subplots) # limit plot images + ns = np.ceil(bs ** 0.5) # number of subplots (square) + + # Check if we should resize + scale_factor = max_size / max(h, w) + if scale_factor < 1: + h = math.ceil(scale_factor * h) + w = math.ceil(scale_factor * w) + + colors = color_list() # list of colors + mosaic = np.full((int(ns * h), int(ns * w), 3), 255, dtype=np.uint8) # init + for i, img in enumerate(images): + if i == max_subplots: # if last batch has fewer images than we expect + break + + block_x = int(w * (i // ns)) + block_y = int(h * (i % ns)) + + img = img.transpose(1, 2, 0) + if scale_factor < 1: + img = cv2.resize(img, (w, h)) + + mosaic[block_y:block_y + h, block_x:block_x + w, :] = img + if len(targets) > 0: + image_targets = targets[targets[:, 0] == i] + boxes = xywh2xyxy(image_targets[:, 2:6]).T + classes = image_targets[:, 1].astype('int') + labels = image_targets.shape[1] == 6 # labels if no conf column + conf = None if labels else image_targets[:, 6] # check for confidence presence (label vs pred) + + if boxes.shape[1] and boxes.max() <= 1: # if normalized + boxes[[0, 2]] *= w # scale to pixels + boxes[[1, 3]] *= h + boxes[[0, 2]] += block_x + boxes[[1, 3]] += block_y + for j, box in enumerate(boxes.T): + cls = int(classes[j]) + color = colors[cls % len(colors)] + cls = names[cls] if names else cls + if labels or conf[j] > 0.25: # 0.25 conf thresh + label = '%s' % cls if labels else '%s %.1f' % (cls, conf[j]) + plot_one_box(box, mosaic, label=label, color=color, line_thickness=tl) + + # Draw image filename labels + if paths: + label = Path(paths[i]).name[:40] # trim to 40 char + t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, thickness=tf)[0] + cv2.putText(mosaic, label, (block_x + 5, block_y + t_size[1] + 5), 0, tl / 3, [220, 220, 220], thickness=tf, + lineType=cv2.LINE_AA) + + # Image border + cv2.rectangle(mosaic, (block_x, block_y), (block_x + w, block_y + h), (255, 255, 255), thickness=3) + + if fname: + r = min(1280. / max(h, w) / ns, 1.0) # ratio to limit image size + mosaic = cv2.resize(mosaic, (int(ns * w * r), int(ns * h * r)), interpolation=cv2.INTER_AREA) + # cv2.imwrite(fname, cv2.cvtColor(mosaic, cv2.COLOR_BGR2RGB)) # cv2 save + Image.fromarray(mosaic).save(fname) # PIL save + return mosaic + + +def plot_lr_scheduler(optimizer, scheduler, epochs=300, save_dir=''): + # Plot LR simulating training for full epochs + optimizer, scheduler = copy(optimizer), copy(scheduler) # do not modify originals + y = [] + for _ in range(epochs): + scheduler.step() + y.append(optimizer.param_groups[0]['lr']) + plt.plot(y, '.-', label='LR') + plt.xlabel('epoch') + plt.ylabel('LR') + plt.grid() + plt.xlim(0, epochs) + plt.ylim(0) + plt.tight_layout() + plt.savefig(Path(save_dir) / 'LR.png', dpi=200) + + +def plot_test_txt(): # from utils.plots import *; plot_test() + # Plot test.txt histograms + x = np.loadtxt('test.txt', dtype=np.float32) + box = xyxy2xywh(x[:, :4]) + cx, cy = box[:, 0], box[:, 1] + + fig, ax = plt.subplots(1, 1, figsize=(6, 6), tight_layout=True) + ax.hist2d(cx, cy, bins=600, cmax=10, cmin=0) + ax.set_aspect('equal') + plt.savefig('hist2d.png', dpi=300) + + fig, ax = plt.subplots(1, 2, figsize=(12, 6), tight_layout=True) + ax[0].hist(cx, bins=600) + ax[1].hist(cy, bins=600) + plt.savefig('hist1d.png', dpi=200) + + +def plot_targets_txt(): # from utils.plots import *; plot_targets_txt() + # Plot targets.txt histograms + x = np.loadtxt('targets.txt', dtype=np.float32).T + s = ['x targets', 'y targets', 'width targets', 'height targets'] + fig, ax = plt.subplots(2, 2, figsize=(8, 8), tight_layout=True) + ax = ax.ravel() + for i in range(4): + ax[i].hist(x[i], bins=100, label='%.3g +/- %.3g' % (x[i].mean(), x[i].std())) + ax[i].legend() + ax[i].set_title(s[i]) + plt.savefig('targets.jpg', dpi=200) + + +def plot_study_txt(path='', x=None): # from utils.plots import *; plot_study_txt() + # Plot study.txt generated by test.py + fig, ax = plt.subplots(2, 4, figsize=(10, 6), tight_layout=True) + ax = ax.ravel() + + fig2, ax2 = plt.subplots(1, 1, figsize=(8, 4), tight_layout=True) + for f in [Path(path) / f'study_coco_{x}.txt' for x in ['yolov3', 'yolov3-spp', 'yolov3-tiny']]: + y = np.loadtxt(f, dtype=np.float32, usecols=[0, 1, 2, 3, 7, 8, 9], ndmin=2).T + x = np.arange(y.shape[1]) if x is None else np.array(x) + s = ['P', 'R', 'mAP@.5', 'mAP@.5:.95', 't_inference (ms/img)', 't_NMS (ms/img)', 't_total (ms/img)'] + for i in range(7): + ax[i].plot(x, y[i], '.-', linewidth=2, markersize=8) + ax[i].set_title(s[i]) + + j = y[3].argmax() + 1 + ax2.plot(y[6, :j], y[3, :j] * 1E2, '.-', linewidth=2, markersize=8, + label=f.stem.replace('study_coco_', '').replace('yolo', 'YOLO')) + + ax2.plot(1E3 / np.array([209, 140, 97, 58, 35, 18]), [34.6, 40.5, 43.0, 47.5, 49.7, 51.5], + 'k.-', linewidth=2, markersize=8, alpha=.25, label='EfficientDet') + + ax2.grid() + ax2.set_xlim(0, 30) + ax2.set_ylim(15, 50) + ax2.set_yticks(np.arange(15, 55, 5)) + ax2.set_xlabel('GPU Speed (ms/img)') + ax2.set_ylabel('COCO AP val') + ax2.legend(loc='lower right') + plt.savefig('test_study.png', dpi=300) + + +def plot_labels(labels, save_dir=''): + # plot dataset labels + c, b = labels[:, 0], labels[:, 1:].transpose() # classes, boxes + nc = int(c.max() + 1) # number of classes + colors = color_list() + + # seaborn correlogram + try: + import seaborn as sns + import pandas as pd + x = pd.DataFrame(b.transpose(), columns=['x', 'y', 'width', 'height']) + sns.pairplot(x, corner=True, diag_kind='hist', kind='scatter', markers='o', + plot_kws=dict(s=3, edgecolor=None, linewidth=1, alpha=0.02), + diag_kws=dict(bins=50)) + plt.savefig(Path(save_dir) / 'labels_correlogram.png', dpi=200) + plt.close() + except Exception as e: + pass + + # matplotlib labels + ax = plt.subplots(2, 2, figsize=(8, 8), tight_layout=True)[1].ravel() + ax[0].hist(c, bins=np.linspace(0, nc, nc + 1) - 0.5, rwidth=0.8) + ax[0].set_xlabel('classes') + ax[2].scatter(b[0], b[1], c=hist2d(b[0], b[1], 90), cmap='jet') + ax[2].set_xlabel('x') + ax[2].set_ylabel('y') + ax[3].scatter(b[2], b[3], c=hist2d(b[2], b[3], 90), cmap='jet') + ax[3].set_xlabel('width') + ax[3].set_ylabel('height') + + # rectangles + labels[:, 1:3] = 0.5 # center + labels[:, 1:] = xywh2xyxy(labels[:, 1:]) * 2000 + img = Image.fromarray(np.ones((2000, 2000, 3), dtype=np.uint8) * 255) + for cls, *box in labels[:1000]: + ImageDraw.Draw(img).rectangle(box, width=1, outline=colors[int(cls) % 10]) # plot + ax[1].imshow(img) + ax[1].axis('off') + + for a in [0, 1, 2, 3]: + for s in ['top', 'right', 'left', 'bottom']: + ax[a].spines[s].set_visible(False) + plt.savefig(Path(save_dir) / 'labels.png', dpi=200) + plt.close() + + +def plot_evolution(yaml_file='data/hyp.finetune.yaml'): # from utils.plots import *; plot_evolution() + # Plot hyperparameter evolution results in evolve.txt + with open(yaml_file) as f: + hyp = yaml.load(f, Loader=yaml.FullLoader) + x = np.loadtxt('evolve.txt', ndmin=2) + f = fitness(x) + # weights = (f - f.min()) ** 2 # for weighted results + plt.figure(figsize=(10, 12), tight_layout=True) + matplotlib.rc('font', **{'size': 8}) + for i, (k, v) in enumerate(hyp.items()): + y = x[:, i + 7] + # mu = (y * weights).sum() / weights.sum() # best weighted result + mu = y[f.argmax()] # best single result + plt.subplot(6, 5, i + 1) + plt.scatter(y, f, c=hist2d(y, f, 20), cmap='viridis', alpha=.8, edgecolors='none') + plt.plot(mu, f.max(), 'k+', markersize=15) + plt.title('%s = %.3g' % (k, mu), fontdict={'size': 9}) # limit to 40 characters + if i % 5 != 0: + plt.yticks([]) + print('%15s: %.3g' % (k, mu)) + plt.savefig('evolve.png', dpi=200) + print('\nPlot saved as evolve.png') + + +def plot_results_overlay(start=0, stop=0): # from utils.plots import *; plot_results_overlay() + # Plot training 'results*.txt', overlaying train and val losses + s = ['train', 'train', 'train', 'Precision', 'mAP@0.5', 'val', 'val', 'val', 'Recall', 'mAP@0.5:0.95'] # legends + t = ['Box', 'Objectness', 'Classification', 'P-R', 'mAP-F1'] # titles + for f in sorted(glob.glob('results*.txt') + glob.glob('../../Downloads/results*.txt')): + results = np.loadtxt(f, usecols=[2, 3, 4, 8, 9, 12, 13, 14, 10, 11], ndmin=2).T + n = results.shape[1] # number of rows + x = range(start, min(stop, n) if stop else n) + fig, ax = plt.subplots(1, 5, figsize=(14, 3.5), tight_layout=True) + ax = ax.ravel() + for i in range(5): + for j in [i, i + 5]: + y = results[j, x] + ax[i].plot(x, y, marker='.', label=s[j]) + # y_smooth = butter_lowpass_filtfilt(y) + # ax[i].plot(x, np.gradient(y_smooth), marker='.', label=s[j]) + + ax[i].set_title(t[i]) + ax[i].legend() + ax[i].set_ylabel(f) if i == 0 else None # add filename + fig.savefig(f.replace('.txt', '.png'), dpi=200) + + +def plot_results(start=0, stop=0, bucket='', id=(), labels=(), save_dir=''): + # Plot training 'results*.txt'. from utils.plots import *; plot_results(save_dir='runs/train/exp') + fig, ax = plt.subplots(2, 5, figsize=(12, 6)) + ax = ax.ravel() + s = ['Box', 'Objectness', 'Classification', 'Precision', 'Recall', + 'val Box', 'val Objectness', 'val Classification', 'mAP@0.5', 'mAP@0.5:0.95'] + if bucket: + # files = ['https://storage.googleapis.com/%s/results%g.txt' % (bucket, x) for x in id] + files = ['results%g.txt' % x for x in id] + c = ('gsutil cp ' + '%s ' * len(files) + '.') % tuple('gs://%s/results%g.txt' % (bucket, x) for x in id) + os.system(c) + else: + files = list(Path(save_dir).glob('results*.txt')) + assert len(files), 'No results.txt files found in %s, nothing to plot.' % os.path.abspath(save_dir) + for fi, f in enumerate(files): + try: + results = np.loadtxt(f, usecols=[2, 3, 4, 8, 9, 12, 13, 14, 10, 11], ndmin=2).T + n = results.shape[1] # number of rows + x = range(start, min(stop, n) if stop else n) + for i in range(10): + y = results[i, x] + if i in [0, 1, 2, 5, 6, 7]: + y[y == 0] = np.nan # don't show zero loss values + # y /= y[0] # normalize + label = labels[fi] if len(labels) else f.stem + ax[i].plot(x, y, marker='.', label=label, linewidth=2, markersize=8) + ax[i].set_title(s[i]) + # if i in [5, 6, 7]: # share train and val loss y axes + # ax[i].get_shared_y_axes().join(ax[i], ax[i - 5]) + except Exception as e: + print('Warning: Plotting error for %s; %s' % (f, e)) + + fig.tight_layout() + ax[1].legend() + fig.savefig(Path(save_dir) / 'results.png', dpi=200) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index d4cd1e80..b330ca56 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -1,24 +1,45 @@ +# PyTorch utils + +import logging import math import os import time +from contextlib import contextmanager from copy import deepcopy import torch import torch.backends.cudnn as cudnn import torch.nn as nn import torch.nn.functional as F +import torchvision + +logger = logging.getLogger(__name__) -def init_seeds(seed=0): +@contextmanager +def torch_distributed_zero_first(local_rank: int): + """ + Decorator to make all processes in distributed training wait for each local_master to do something. + """ + if local_rank not in [-1, 0]: + torch.distributed.barrier() + yield + if local_rank == 0: + torch.distributed.barrier() + + +def init_torch_seeds(seed=0): + # Speed-reproducibility tradeoff https://pytorch.org/docs/stable/notes/randomness.html torch.manual_seed(seed) - - # Reduce randomness (may be slower on Tesla GPUs) # https://pytorch.org/docs/stable/notes/randomness.html - if seed == 0: + if seed == 0: # slower, more reproducible + cudnn.deterministic = True + cudnn.benchmark = False + else: # faster, less reproducible cudnn.deterministic = False cudnn.benchmark = True -def select_device(device='', apex=False, batch_size=None): +def select_device(device='', batch_size=None): # device = 'cpu' or '0' or '0,1,2,3' cpu_request = device.lower() == 'cpu' if device and not cpu_request: # if device requested other than 'cpu' @@ -32,16 +53,15 @@ def select_device(device='', apex=False, batch_size=None): if ng > 1 and batch_size: # check that batch_size is compatible with device_count assert batch_size % ng == 0, 'batch-size %g not multiple of GPU count %g' % (batch_size, ng) x = [torch.cuda.get_device_properties(i) for i in range(ng)] - s = 'Using CUDA ' + ('Apex ' if apex else '') # apex for mixed precision https://github.com/NVIDIA/apex + s = f'Using torch {torch.__version__} ' for i in range(0, ng): if i == 1: s = ' ' * len(s) - print("%sdevice%g _CudaDeviceProperties(name='%s', total_memory=%dMB)" % - (s, i, x[i].name, x[i].total_memory / c)) + logger.info("%sCUDA:%g (%s, %dMB)" % (s, i, x[i].name, x[i].total_memory / c)) else: - print('Using CPU') + logger.info(f'Using torch {torch.__version__} CPU') - print('') # skip a line + logger.info('') # skip a line return torch.device('cuda:0' if cuda else 'cpu') @@ -50,52 +70,77 @@ def time_synchronized(): return time.time() +def is_parallel(model): + return type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) + + +def intersect_dicts(da, db, exclude=()): + # Dictionary intersection of matching keys and shapes, omitting 'exclude' keys, using da values + return {k: v for k, v in da.items() if k in db and not any(x in k for x in exclude) and v.shape == db[k].shape} + + def initialize_weights(model): for m in model.modules(): t = type(m) if t is nn.Conv2d: pass # nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu') elif t is nn.BatchNorm2d: - m.eps = 1e-4 + m.eps = 1e-3 m.momentum = 0.03 - elif t in [nn.LeakyReLU, nn.ReLU, nn.ReLU6]: + elif t in [nn.Hardswish, nn.LeakyReLU, nn.ReLU, nn.ReLU6]: m.inplace = True def find_modules(model, mclass=nn.Conv2d): - # finds layer indices matching module class 'mclass' + # Finds layer indices matching module class 'mclass' return [i for i, m in enumerate(model.module_list) if isinstance(m, mclass)] +def sparsity(model): + # Return global model sparsity + a, b = 0., 0. + for p in model.parameters(): + a += p.numel() + b += (p == 0).sum() + return b / a + + +def prune(model, amount=0.3): + # Prune model to requested global sparsity + import torch.nn.utils.prune as prune + print('Pruning model... ', end='') + for name, m in model.named_modules(): + if isinstance(m, nn.Conv2d): + prune.l1_unstructured(m, name='weight', amount=amount) # prune + prune.remove(m, 'weight') # make permanent + print(' %.3g global sparsity' % sparsity(model)) + + def fuse_conv_and_bn(conv, bn): - # https://tehnokv.com/posts/fusing-batchnorm-and-conv/ - with torch.no_grad(): - # init - fusedconv = torch.nn.Conv2d(conv.in_channels, - conv.out_channels, - kernel_size=conv.kernel_size, - stride=conv.stride, - padding=conv.padding, - bias=True) + # Fuse convolution and batchnorm layers https://tehnokv.com/posts/fusing-batchnorm-and-conv/ + fusedconv = nn.Conv2d(conv.in_channels, + conv.out_channels, + kernel_size=conv.kernel_size, + stride=conv.stride, + padding=conv.padding, + groups=conv.groups, + bias=True).requires_grad_(False).to(conv.weight.device) - # prepare filters - w_conv = conv.weight.clone().view(conv.out_channels, -1) - w_bn = torch.diag(bn.weight.div(torch.sqrt(bn.eps + bn.running_var))) - fusedconv.weight.copy_(torch.mm(w_bn, w_conv).view(fusedconv.weight.size())) + # prepare filters + w_conv = conv.weight.clone().view(conv.out_channels, -1) + w_bn = torch.diag(bn.weight.div(torch.sqrt(bn.eps + bn.running_var))) + fusedconv.weight.copy_(torch.mm(w_bn, w_conv).view(fusedconv.weight.size())) - # prepare spatial bias - if conv.bias is not None: - b_conv = conv.bias - else: - b_conv = torch.zeros(conv.weight.size(0)) - b_bn = bn.bias - bn.weight.mul(bn.running_mean).div(torch.sqrt(bn.running_var + bn.eps)) - fusedconv.bias.copy_(torch.mm(w_bn, b_conv.reshape(-1, 1)).reshape(-1) + b_bn) + # prepare spatial bias + b_conv = torch.zeros(conv.weight.size(0), device=conv.weight.device) if conv.bias is None else conv.bias + b_bn = bn.bias - bn.weight.mul(bn.running_mean).div(torch.sqrt(bn.running_var + bn.eps)) + fusedconv.bias.copy_(torch.mm(w_bn, b_conv.reshape(-1, 1)).reshape(-1) + b_bn) - return fusedconv + return fusedconv -def model_info(model, verbose=False): - # Plots a line-by-line description of a PyTorch model +def model_info(model, verbose=False, img_size=640): + # Model information. img_size may be int or list, i.e. img_size=640 or img_size=[640, 320] n_p = sum(x.numel() for x in model.parameters()) # number parameters n_g = sum(x.numel() for x in model.parameters() if x.requires_grad) # number gradients if verbose: @@ -107,40 +152,57 @@ def model_info(model, verbose=False): try: # FLOPS from thop import profile - macs, _ = profile(model, inputs=(torch.zeros(1, 3, 480, 640),), verbose=False) - fs = ', %.1f GFLOPS' % (macs / 1E9 * 2) - except: + stride = int(model.stride.max()) + img = torch.zeros((1, 3, stride, stride), device=next(model.parameters()).device) # input + flops = profile(deepcopy(model), inputs=(img,), verbose=False)[0] / 1E9 * 2 # stride FLOPS + img_size = img_size if isinstance(img_size, list) else [img_size, img_size] # expand if int/float + fs = ', %.1f GFLOPS' % (flops * img_size[0] / stride * img_size[1] / stride) # 640x640 FLOPS + except (ImportError, Exception): fs = '' - print('Model Summary: %g layers, %g parameters, %g gradients%s' % (len(list(model.parameters())), n_p, n_g, fs)) + logger.info(f"Model Summary: {len(list(model.modules()))} layers, {n_p} parameters, {n_g} gradients{fs}") def load_classifier(name='resnet101', n=2): # Loads a pretrained model reshaped to n-class output - import pretrainedmodels # https://github.com/Cadene/pretrained-models.pytorch#torchvision - model = pretrainedmodels.__dict__[name](num_classes=1000, pretrained='imagenet') + model = torchvision.models.__dict__[name](pretrained=True) - # Display model properties - for x in ['model.input_size', 'model.input_space', 'model.input_range', 'model.mean', 'model.std']: - print(x + ' =', eval(x)) + # ResNet model properties + # input_size = [3, 224, 224] + # input_space = 'RGB' + # input_range = [0, 1] + # mean = [0.485, 0.456, 0.406] + # std = [0.229, 0.224, 0.225] # Reshape output to n classes - filters = model.last_linear.weight.shape[1] - model.last_linear.bias = torch.nn.Parameter(torch.zeros(n)) - model.last_linear.weight = torch.nn.Parameter(torch.zeros(n, filters)) - model.last_linear.out_features = n + filters = model.fc.weight.shape[1] + model.fc.bias = nn.Parameter(torch.zeros(n), requires_grad=True) + model.fc.weight = nn.Parameter(torch.zeros(n, filters), requires_grad=True) + model.fc.out_features = n return model -def scale_img(img, ratio=1.0, same_shape=True): # img(16,3,256,416), r=ratio +def scale_img(img, ratio=1.0, same_shape=False): # img(16,3,256,416), r=ratio # scales img(bs,3,y,x) by ratio - h, w = img.shape[2:] - s = (int(h * ratio), int(w * ratio)) # new size - img = F.interpolate(img, size=s, mode='bilinear', align_corners=False) # resize - if not same_shape: # pad/crop img - gs = 64 # (pixels) grid size - h, w = [math.ceil(x * ratio / gs) * gs for x in (h, w)] - return F.pad(img, [0, w - s[1], 0, h - s[0]], value=0.447) # value = imagenet mean + if ratio == 1.0: + return img + else: + h, w = img.shape[2:] + s = (int(h * ratio), int(w * ratio)) # new size + img = F.interpolate(img, size=s, mode='bilinear', align_corners=False) # resize + if not same_shape: # pad/crop img + gs = 32 # (pixels) grid size + h, w = [math.ceil(x * ratio / gs) * gs for x in (h, w)] + return F.pad(img, [0, w - s[1], 0, h - s[0]], value=0.447) # value = imagenet mean + + +def copy_attr(a, b, include=(), exclude=()): + # Copy attributes from b to a, options to only include [...] and to exclude [...] + for k, v in b.__dict__.items(): + if (len(include) and k not in include) or k.startswith('_') or k in exclude: + continue + else: + setattr(a, k, v) class ModelEMA: @@ -149,46 +211,32 @@ class ModelEMA: This is intended to allow functionality like https://www.tensorflow.org/api_docs/python/tf/train/ExponentialMovingAverage A smoothed version of the weights is necessary for some training schemes to perform well. - E.g. Google's hyper-params for training MNASNet, MobileNet-V3, EfficientNet, etc that use - RMSprop with a short 2.4-3 epoch decay period and slow LR decay rate of .96-.99 requires EMA - smoothing of weights to match results. Pay attention to the decay constant you are using - relative to your update count per epoch. - To keep EMA from using GPU resources, set device='cpu'. This will save a bit of memory but - disable validation of the EMA weights. Validation will have to be done manually in a separate - process, or after the training stops converging. This class is sensitive where it is initialized in the sequence of model init, GPU assignment and distributed training wrappers. - I've tested with the sequence in my own train.py for torch.DataParallel, apex.DDP, and single-GPU. """ - def __init__(self, model, decay=0.9999, device=''): - # make a copy of the model for accumulating moving average of weights - self.ema = deepcopy(model) - self.ema.eval() - self.updates = 0 # number of EMA updates + def __init__(self, model, decay=0.9999, updates=0): + # Create EMA + self.ema = deepcopy(model.module if is_parallel(model) else model).eval() # FP32 EMA + # if next(model.parameters()).device.type != 'cpu': + # self.ema.half() # FP16 EMA + self.updates = updates # number of EMA updates self.decay = lambda x: decay * (1 - math.exp(-x / 2000)) # decay exponential ramp (to help early epochs) - self.device = device # perform ema on different device from model if set - if device: - self.ema.to(device=device) for p in self.ema.parameters(): p.requires_grad_(False) def update(self, model): - self.updates += 1 - d = self.decay(self.updates) + # Update EMA parameters with torch.no_grad(): - if type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel): - msd, esd = model.module.state_dict(), self.ema.module.state_dict() - else: - msd, esd = model.state_dict(), self.ema.state_dict() + self.updates += 1 + d = self.decay(self.updates) - for k, v in esd.items(): + msd = model.module.state_dict() if is_parallel(model) else model.state_dict() # model state_dict + for k, v in self.ema.state_dict().items(): if v.dtype.is_floating_point: v *= d v += (1. - d) * msd[k].detach() - def update_attr(self, model): - # Assign attributes (which may change during training) - for k in model.__dict__.keys(): - if not k.startswith('_'): - setattr(self.ema, k, getattr(model, k)) + def update_attr(self, model, include=(), exclude=('process_group', 'reducer')): + # Update EMA attributes + copy_attr(self.ema, model, include, exclude) diff --git a/utils/utils.py b/utils/utils.py deleted file mode 100755 index 08ece411..00000000 --- a/utils/utils.py +++ /dev/null @@ -1,1080 +0,0 @@ -import glob -import math -import os -import random -import shutil -import subprocess -import time -from copy import copy -from pathlib import Path -from sys import platform - -import cv2 -import matplotlib -import matplotlib.pyplot as plt -import numpy as np -import torch -import torch.nn as nn -import torchvision -from tqdm import tqdm - -from . import torch_utils # , google_utils - -# Set printoptions -torch.set_printoptions(linewidth=320, precision=5, profile='long') -np.set_printoptions(linewidth=320, formatter={'float_kind': '{:11.5g}'.format}) # format short g, %precision=5 -matplotlib.rc('font', **{'size': 11}) - -# Prevent OpenCV from multithreading (to use PyTorch DataLoader) -cv2.setNumThreads(0) - - -def init_seeds(seed=0): - random.seed(seed) - np.random.seed(seed) - torch_utils.init_seeds(seed=seed) - - -def check_git_status(): - if platform in ['linux', 'darwin']: - # Suggest 'git pull' if repo is out of date - s = subprocess.check_output('if [ -d .git ]; then git fetch && git status -uno; fi', shell=True).decode('utf-8') - if 'Your branch is behind' in s: - print(s[s.find('Your branch is behind'):s.find('\n\n')] + '\n') - - -def check_file(file): - # Searches for file if not found locally - if os.path.isfile(file): - return file - else: - files = glob.glob('./**/' + file, recursive=True) # find file - assert len(files), 'File Not Found: %s' % file # assert file was found - return files[0] # return first file if multiple found - - -def load_classes(path): - # Loads *.names file at 'path' - with open(path, 'r') as f: - names = f.read().split('\n') - return list(filter(None, names)) # filter removes empty strings (such as last line) - - -def labels_to_class_weights(labels, nc=80): - # Get class weights (inverse frequency) from training labels - if labels[0] is None: # no labels loaded - return torch.Tensor() - - labels = np.concatenate(labels, 0) # labels.shape = (866643, 5) for COCO - classes = labels[:, 0].astype(np.int) # labels = [class xywh] - weights = np.bincount(classes, minlength=nc) # occurences per class - - # Prepend gridpoint count (for uCE trianing) - # gpi = ((320 / 32 * np.array([1, 2, 4])) ** 2 * 3).sum() # gridpoints per image - # weights = np.hstack([gpi * len(labels) - weights.sum() * 9, weights * 9]) ** 0.5 # prepend gridpoints to start - - weights[weights == 0] = 1 # replace empty bins with 1 - weights = 1 / weights # number of targets per class - weights /= weights.sum() # normalize - return torch.from_numpy(weights) - - -def labels_to_image_weights(labels, nc=80, class_weights=np.ones(80)): - # Produces image weights based on class mAPs - n = len(labels) - class_counts = np.array([np.bincount(labels[i][:, 0].astype(np.int), minlength=nc) for i in range(n)]) - image_weights = (class_weights.reshape(1, nc) * class_counts).sum(1) - # index = random.choices(range(n), weights=image_weights, k=1) # weight image sample - return image_weights - - -def coco80_to_coco91_class(): # converts 80-index (val2014) to 91-index (paper) - # https://tech.amikelive.com/node-718/what-object-categories-labels-are-in-coco-dataset/ - # a = np.loadtxt('data/coco.names', dtype='str', delimiter='\n') - # b = np.loadtxt('data/coco_paper.names', dtype='str', delimiter='\n') - # x1 = [list(a[i] == b).index(True) + 1 for i in range(80)] # darknet to coco - # x2 = [list(b[i] == a).index(True) if any(b[i] == a) else None for i in range(91)] # coco to darknet - x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 67, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 90] - return x - - -def xyxy2xywh(x): - # Convert nx4 boxes from [x1, y1, x2, y2] to [x, y, w, h] where xy1=top-left, xy2=bottom-right - y = torch.zeros_like(x) if isinstance(x, torch.Tensor) else np.zeros_like(x) - y[:, 0] = (x[:, 0] + x[:, 2]) / 2 # x center - y[:, 1] = (x[:, 1] + x[:, 3]) / 2 # y center - y[:, 2] = x[:, 2] - x[:, 0] # width - y[:, 3] = x[:, 3] - x[:, 1] # height - return y - - -def xywh2xyxy(x): - # Convert nx4 boxes from [x, y, w, h] to [x1, y1, x2, y2] where xy1=top-left, xy2=bottom-right - y = torch.zeros_like(x) if isinstance(x, torch.Tensor) else np.zeros_like(x) - y[:, 0] = x[:, 0] - x[:, 2] / 2 # top left x - y[:, 1] = x[:, 1] - x[:, 3] / 2 # top left y - y[:, 2] = x[:, 0] + x[:, 2] / 2 # bottom right x - y[:, 3] = x[:, 1] + x[:, 3] / 2 # bottom right y - return y - - -def scale_coords(img1_shape, coords, img0_shape, ratio_pad=None): - # Rescale coords (xyxy) from img1_shape to img0_shape - if ratio_pad is None: # calculate from img0_shape - gain = max(img1_shape) / max(img0_shape) # gain = old / new - pad = (img1_shape[1] - img0_shape[1] * gain) / 2, (img1_shape[0] - img0_shape[0] * gain) / 2 # wh padding - else: - gain = ratio_pad[0][0] - pad = ratio_pad[1] - - coords[:, [0, 2]] -= pad[0] # x padding - coords[:, [1, 3]] -= pad[1] # y padding - coords[:, :4] /= gain - clip_coords(coords, img0_shape) - return coords - - -def clip_coords(boxes, img_shape): - # Clip bounding xyxy bounding boxes to image shape (height, width) - boxes[:, 0].clamp_(0, img_shape[1]) # x1 - boxes[:, 1].clamp_(0, img_shape[0]) # y1 - boxes[:, 2].clamp_(0, img_shape[1]) # x2 - boxes[:, 3].clamp_(0, img_shape[0]) # y2 - - -def ap_per_class(tp, conf, pred_cls, target_cls): - """ Compute the average precision, given the recall and precision curves. - Source: https://github.com/rafaelpadilla/Object-Detection-Metrics. - # Arguments - tp: True positives (nparray, nx1 or nx10). - conf: Objectness value from 0-1 (nparray). - pred_cls: Predicted object classes (nparray). - target_cls: True object classes (nparray). - # Returns - The average precision as computed in py-faster-rcnn. - """ - - # Sort by objectness - i = np.argsort(-conf) - tp, conf, pred_cls = tp[i], conf[i], pred_cls[i] - - # Find unique classes - unique_classes = np.unique(target_cls) - - # Create Precision-Recall curve and compute AP for each class - pr_score = 0.1 # score to evaluate P and R https://github.com/ultralytics/yolov3/issues/898 - s = [unique_classes.shape[0], tp.shape[1]] # number class, number iou thresholds (i.e. 10 for mAP0.5...0.95) - ap, p, r = np.zeros(s), np.zeros(s), np.zeros(s) - for ci, c in enumerate(unique_classes): - i = pred_cls == c - n_gt = (target_cls == c).sum() # Number of ground truth objects - n_p = i.sum() # Number of predicted objects - - if n_p == 0 or n_gt == 0: - continue - else: - # Accumulate FPs and TPs - fpc = (1 - tp[i]).cumsum(0) - tpc = tp[i].cumsum(0) - - # Recall - recall = tpc / (n_gt + 1e-16) # recall curve - r[ci] = np.interp(-pr_score, -conf[i], recall[:, 0]) # r at pr_score, negative x, xp because xp decreases - - # Precision - precision = tpc / (tpc + fpc) # precision curve - p[ci] = np.interp(-pr_score, -conf[i], precision[:, 0]) # p at pr_score - - # AP from recall-precision curve - for j in range(tp.shape[1]): - ap[ci, j] = compute_ap(recall[:, j], precision[:, j]) - - # Plot - # fig, ax = plt.subplots(1, 1, figsize=(5, 5)) - # ax.plot(recall, precision) - # ax.set_xlabel('Recall') - # ax.set_ylabel('Precision') - # ax.set_xlim(0, 1.01) - # ax.set_ylim(0, 1.01) - # fig.tight_layout() - # fig.savefig('PR_curve.png', dpi=300) - - # Compute F1 score (harmonic mean of precision and recall) - f1 = 2 * p * r / (p + r + 1e-16) - - return p, r, ap, f1, unique_classes.astype('int32') - - -def compute_ap(recall, precision): - """ Compute the average precision, given the recall and precision curves. - Source: https://github.com/rbgirshick/py-faster-rcnn. - # Arguments - recall: The recall curve (list). - precision: The precision curve (list). - # Returns - The average precision as computed in py-faster-rcnn. - """ - - # Append sentinel values to beginning and end - mrec = np.concatenate(([0.], recall, [min(recall[-1] + 1E-3, 1.)])) - mpre = np.concatenate(([0.], precision, [0.])) - - # Compute the precision envelope - mpre = np.flip(np.maximum.accumulate(np.flip(mpre))) - - # Integrate area under curve - method = 'interp' # methods: 'continuous', 'interp' - if method == 'interp': - x = np.linspace(0, 1, 101) # 101-point interp (COCO) - ap = np.trapz(np.interp(x, mrec, mpre), x) # integrate - else: # 'continuous' - i = np.where(mrec[1:] != mrec[:-1])[0] # points where x axis (recall) changes - ap = np.sum((mrec[i + 1] - mrec[i]) * mpre[i + 1]) # area under curve - - return ap - - -def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False, DIoU=False, CIoU=False): - # Returns the IoU of box1 to box2. box1 is 4, box2 is nx4 - box2 = box2.t() - - # Get the coordinates of bounding boxes - if x1y1x2y2: # x1, y1, x2, y2 = box1 - b1_x1, b1_y1, b1_x2, b1_y2 = box1[0], box1[1], box1[2], box1[3] - b2_x1, b2_y1, b2_x2, b2_y2 = box2[0], box2[1], box2[2], box2[3] - else: # transform from xywh to xyxy - b1_x1, b1_x2 = box1[0] - box1[2] / 2, box1[0] + box1[2] / 2 - b1_y1, b1_y2 = box1[1] - box1[3] / 2, box1[1] + box1[3] / 2 - b2_x1, b2_x2 = box2[0] - box2[2] / 2, box2[0] + box2[2] / 2 - b2_y1, b2_y2 = box2[1] - box2[3] / 2, box2[1] + box2[3] / 2 - - # Intersection area - inter = (torch.min(b1_x2, b2_x2) - torch.max(b1_x1, b2_x1)).clamp(0) * \ - (torch.min(b1_y2, b2_y2) - torch.max(b1_y1, b2_y1)).clamp(0) - - # Union Area - w1, h1 = b1_x2 - b1_x1, b1_y2 - b1_y1 - w2, h2 = b2_x2 - b2_x1, b2_y2 - b2_y1 - union = (w1 * h1 + 1e-16) + w2 * h2 - inter - - iou = inter / union # iou - if GIoU or DIoU or CIoU: - cw = torch.max(b1_x2, b2_x2) - torch.min(b1_x1, b2_x1) # convex (smallest enclosing box) width - ch = torch.max(b1_y2, b2_y2) - torch.min(b1_y1, b2_y1) # convex height - if GIoU: # Generalized IoU https://arxiv.org/pdf/1902.09630.pdf - c_area = cw * ch + 1e-16 # convex area - return iou - (c_area - union) / c_area # GIoU - if DIoU or CIoU: # Distance or Complete IoU https://arxiv.org/abs/1911.08287v1 - # convex diagonal squared - c2 = cw ** 2 + ch ** 2 + 1e-16 - # centerpoint distance squared - rho2 = ((b2_x1 + b2_x2) - (b1_x1 + b1_x2)) ** 2 / 4 + ((b2_y1 + b2_y2) - (b1_y1 + b1_y2)) ** 2 / 4 - if DIoU: - return iou - rho2 / c2 # DIoU - elif CIoU: # https://github.com/Zzh-tju/DIoU-SSD-pytorch/blob/master/utils/box/box_utils.py#L47 - v = (4 / math.pi ** 2) * torch.pow(torch.atan(w2 / h2) - torch.atan(w1 / h1), 2) - with torch.no_grad(): - alpha = v / (1 - iou + v) - return iou - (rho2 / c2 + v * alpha) # CIoU - - return iou - - -def box_iou(box1, box2): - # https://github.com/pytorch/vision/blob/master/torchvision/ops/boxes.py - """ - Return intersection-over-union (Jaccard index) of boxes. - Both sets of boxes are expected to be in (x1, y1, x2, y2) format. - Arguments: - box1 (Tensor[N, 4]) - box2 (Tensor[M, 4]) - Returns: - iou (Tensor[N, M]): the NxM matrix containing the pairwise - IoU values for every element in boxes1 and boxes2 - """ - - def box_area(box): - # box = 4xn - return (box[2] - box[0]) * (box[3] - box[1]) - - area1 = box_area(box1.t()) - area2 = box_area(box2.t()) - - # inter(N,M) = (rb(N,M,2) - lt(N,M,2)).clamp(0).prod(2) - inter = (torch.min(box1[:, None, 2:], box2[:, 2:]) - torch.max(box1[:, None, :2], box2[:, :2])).clamp(0).prod(2) - return inter / (area1[:, None] + area2 - inter) # iou = inter / (area1 + area2 - inter) - - -def wh_iou(wh1, wh2): - # Returns the nxm IoU matrix. wh1 is nx2, wh2 is mx2 - wh1 = wh1[:, None] # [N,1,2] - wh2 = wh2[None] # [1,M,2] - inter = torch.min(wh1, wh2).prod(2) # [N,M] - return inter / (wh1.prod(2) + wh2.prod(2) - inter) # iou = inter / (area1 + area2 - inter) - - -class FocalLoss(nn.Module): - # Wraps focal loss around existing loss_fcn(), i.e. criteria = FocalLoss(nn.BCEWithLogitsLoss(), gamma=1.5) - def __init__(self, loss_fcn, gamma=1.5, alpha=0.25): - super(FocalLoss, self).__init__() - self.loss_fcn = loss_fcn # must be nn.BCEWithLogitsLoss() - self.gamma = gamma - self.alpha = alpha - self.reduction = loss_fcn.reduction - self.loss_fcn.reduction = 'none' # required to apply FL to each element - - def forward(self, pred, true): - loss = self.loss_fcn(pred, true) - # p_t = torch.exp(-loss) - # loss *= self.alpha * (1.000001 - p_t) ** self.gamma # non-zero power for gradient stability - - # TF implementation https://github.com/tensorflow/addons/blob/v0.7.1/tensorflow_addons/losses/focal_loss.py - pred_prob = torch.sigmoid(pred) # prob from logits - p_t = true * pred_prob + (1 - true) * (1 - pred_prob) - alpha_factor = true * self.alpha + (1 - true) * (1 - self.alpha) - modulating_factor = (1.0 - p_t) ** self.gamma - loss *= alpha_factor * modulating_factor - - if self.reduction == 'mean': - return loss.mean() - elif self.reduction == 'sum': - return loss.sum() - else: # 'none' - return loss - - -def smooth_BCE(eps=0.1): # https://github.com/ultralytics/yolov3/issues/238#issuecomment-598028441 - # return positive, negative label smoothing BCE targets - return 1.0 - 0.5 * eps, 0.5 * eps - - -def compute_loss(p, targets, model): # predictions, targets, model - ft = torch.cuda.FloatTensor if p[0].is_cuda else torch.Tensor - lcls, lbox, lobj = ft([0]), ft([0]), ft([0]) - tcls, tbox, indices, anchors = build_targets(p, targets, model) # targets - h = model.hyp # hyperparameters - red = 'mean' # Loss reduction (sum or mean) - - # Define criteria - BCEcls = nn.BCEWithLogitsLoss(pos_weight=ft([h['cls_pw']]), reduction=red) - BCEobj = nn.BCEWithLogitsLoss(pos_weight=ft([h['obj_pw']]), reduction=red) - - # class label smoothing https://arxiv.org/pdf/1902.04103.pdf eqn 3 - cp, cn = smooth_BCE(eps=0.0) - - # focal loss - g = h['fl_gamma'] # focal loss gamma - if g > 0: - BCEcls, BCEobj = FocalLoss(BCEcls, g), FocalLoss(BCEobj, g) - - # per output - nt = 0 # targets - for i, pi in enumerate(p): # layer index, layer predictions - b, a, gj, gi = indices[i] # image, anchor, gridy, gridx - tobj = torch.zeros_like(pi[..., 0]) # target obj - - nb = b.shape[0] # number of targets - if nb: - nt += nb # cumulative targets - ps = pi[b, a, gj, gi] # prediction subset corresponding to targets - - # GIoU - pxy = ps[:, :2].sigmoid() - pwh = ps[:, 2:4].exp().clamp(max=1E3) * anchors[i] - pbox = torch.cat((pxy, pwh), 1) # predicted box - giou = bbox_iou(pbox.t(), tbox[i], x1y1x2y2=False, GIoU=True) # giou(prediction, target) - lbox += (1.0 - giou).sum() if red == 'sum' else (1.0 - giou).mean() # giou loss - - # Obj - tobj[b, a, gj, gi] = (1.0 - model.gr) + model.gr * giou.detach().clamp(0).type(tobj.dtype) # giou ratio - - # Class - if model.nc > 1: # cls loss (only if multiple classes) - t = torch.full_like(ps[:, 5:], cn) # targets - t[range(nb), tcls[i]] = cp - lcls += BCEcls(ps[:, 5:], t) # BCE - - # Append targets to text file - # with open('targets.txt', 'a') as file: - # [file.write('%11.5g ' * 4 % tuple(x) + '\n') for x in torch.cat((txy[i], twh[i]), 1)] - - lobj += BCEobj(pi[..., 4], tobj) # obj loss - - lbox *= h['giou'] - lobj *= h['obj'] - lcls *= h['cls'] - if red == 'sum': - bs = tobj.shape[0] # batch size - g = 3.0 # loss gain - lobj *= g / bs - if nt: - lcls *= g / nt / model.nc - lbox *= g / nt - - loss = lbox + lobj + lcls - return loss, torch.cat((lbox, lobj, lcls, loss)).detach() - - -def build_targets(p, targets, model): - # Build targets for compute_loss(), input targets(image,class,x,y,w,h) - nt = targets.shape[0] - tcls, tbox, indices, anch = [], [], [], [] - gain = torch.ones(6, device=targets.device) # normalized to gridspace gain - off = torch.tensor([[1, 0], [0, 1], [-1, 0], [0, -1]], device=targets.device).float() # overlap offsets - - style = None - multi_gpu = type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) - for i, j in enumerate(model.yolo_layers): - anchors = model.module.module_list[j].anchor_vec if multi_gpu else model.module_list[j].anchor_vec - gain[2:] = torch.tensor(p[i].shape)[[3, 2, 3, 2]] # xyxy gain - na = anchors.shape[0] # number of anchors - at = torch.arange(na).view(na, 1).repeat(1, nt) # anchor tensor, same as .repeat_interleave(nt) - - # Match targets to anchors - a, t, offsets = [], targets * gain, 0 - if nt: - # r = t[None, :, 4:6] / anchors[:, None] # wh ratio - # j = torch.max(r, 1. / r).max(2)[0] < model.hyp['anchor_t'] # compare - j = wh_iou(anchors, t[:, 4:6]) > model.hyp['iou_t'] # iou(3,n) = wh_iou(anchors(3,2), gwh(n,2)) - a, t = at[j], t.repeat(na, 1, 1)[j] # filter - - # overlaps - gxy = t[:, 2:4] # grid xy - z = torch.zeros_like(gxy) - if style == 'rect2': - g = 0.2 # offset - j, k = ((gxy % 1. < g) & (gxy > 1.)).T - a, t = torch.cat((a, a[j], a[k]), 0), torch.cat((t, t[j], t[k]), 0) - offsets = torch.cat((z, z[j] + off[0], z[k] + off[1]), 0) * g - - elif style == 'rect4': - g = 0.5 # offset - j, k = ((gxy % 1. < g) & (gxy > 1.)).T - l, m = ((gxy % 1. > (1 - g)) & (gxy < (gain[[2, 3]] - 1.))).T - a, t = torch.cat((a, a[j], a[k], a[l], a[m]), 0), torch.cat((t, t[j], t[k], t[l], t[m]), 0) - offsets = torch.cat((z, z[j] + off[0], z[k] + off[1], z[l] + off[2], z[m] + off[3]), 0) * g - - # Define - b, c = t[:, :2].long().T # image, class - gxy = t[:, 2:4] # grid xy - gwh = t[:, 4:6] # grid wh - gij = (gxy - offsets).long() - gi, gj = gij.T # grid xy indices - - # Append - indices.append((b, a, gj.clamp_(0, gain[3] - 1), gi.clamp_(0, gain[2] - 1))) # image, anchor, grid indices - tbox.append(torch.cat((gxy - gij, gwh), 1)) # box - anch.append(anchors[a]) # anchors - tcls.append(c) # class - if c.shape[0]: # if any targets - assert c.max() < model.nc, 'Model accepts %g classes labeled from 0-%g, however you labelled a class %g. ' \ - 'See https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data' % ( - model.nc, model.nc - 1, c.max()) - - return tcls, tbox, indices, anch - - -def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, multi_label=True, classes=None, agnostic=False): - """ - Performs Non-Maximum Suppression on inference results - Returns detections with shape: - nx6 (x1, y1, x2, y2, conf, cls) - """ - - # Settings - merge = True # merge for best mAP - min_wh, max_wh = 2, 4096 # (pixels) minimum and maximum box width and height - time_limit = 10.0 # seconds to quit after - - t = time.time() - nc = prediction[0].shape[1] - 5 # number of classes - multi_label &= nc > 1 # multiple labels per box - output = [None] * prediction.shape[0] - for xi, x in enumerate(prediction): # image index, image inference - # Apply constraints - x = x[x[:, 4] > conf_thres] # confidence - x = x[((x[:, 2:4] > min_wh) & (x[:, 2:4] < max_wh)).all(1)] # width-height - - # If none remain process next image - if not x.shape[0]: - continue - - # Compute conf - x[..., 5:] *= x[..., 4:5] # conf = obj_conf * cls_conf - - # Box (center x, center y, width, height) to (x1, y1, x2, y2) - box = xywh2xyxy(x[:, :4]) - - # Detections matrix nx6 (xyxy, conf, cls) - if multi_label: - i, j = (x[:, 5:] > conf_thres).nonzero().t() - x = torch.cat((box[i], x[i, j + 5].unsqueeze(1), j.float().unsqueeze(1)), 1) - else: # best class only - conf, j = x[:, 5:].max(1) - x = torch.cat((box, conf.unsqueeze(1), j.float().unsqueeze(1)), 1)[conf > conf_thres] - - # Filter by class - if classes: - x = x[(j.view(-1, 1) == torch.tensor(classes, device=j.device)).any(1)] - - # Apply finite constraint - # if not torch.isfinite(x).all(): - # x = x[torch.isfinite(x).all(1)] - - # If none remain process next image - n = x.shape[0] # number of boxes - if not n: - continue - - # Sort by confidence - # x = x[x[:, 4].argsort(descending=True)] - - # Batched NMS - c = x[:, 5] * 0 if agnostic else x[:, 5] # classes - boxes, scores = x[:, :4].clone() + c.view(-1, 1) * max_wh, x[:, 4] # boxes (offset by class), scores - i = torchvision.ops.boxes.nms(boxes, scores, iou_thres) - if merge and (1 < n < 3E3): # Merge NMS (boxes merged using weighted mean) - try: # update boxes as boxes(i,4) = weights(i,n) * boxes(n,4) - iou = box_iou(boxes[i], boxes) > iou_thres # iou matrix - weights = iou * scores[None] # box weights - x[i, :4] = torch.mm(weights, x[:, :4]).float() / weights.sum(1, keepdim=True) # merged boxes - # i = i[iou.sum(1) > 1] # require redundancy - except: # possible CUDA error https://github.com/ultralytics/yolov3/issues/1139 - print(x, i, x.shape, i.shape) - pass - - output[xi] = x[i] - if (time.time() - t) > time_limit: - break # time limit exceeded - - return output - - -def get_yolo_layers(model): - bool_vec = [x['type'] == 'yolo' for x in model.module_defs] - return [i for i, x in enumerate(bool_vec) if x] # [82, 94, 106] for yolov3 - - -def print_model_biases(model): - # prints the bias neurons preceding each yolo layer - print('\nModel Bias Summary: %8s%18s%18s%18s' % ('layer', 'regression', 'objectness', 'classification')) - try: - multi_gpu = type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) - for l in model.yolo_layers: # print pretrained biases - if multi_gpu: - na = model.module.module_list[l].na # number of anchors - b = model.module.module_list[l - 1][0].bias.view(na, -1) # bias 3x85 - else: - na = model.module_list[l].na - b = model.module_list[l - 1][0].bias.view(na, -1) # bias 3x85 - print(' ' * 20 + '%8g %18s%18s%18s' % (l, '%5.2f+/-%-5.2f' % (b[:, :4].mean(), b[:, :4].std()), - '%5.2f+/-%-5.2f' % (b[:, 4].mean(), b[:, 4].std()), - '%5.2f+/-%-5.2f' % (b[:, 5:].mean(), b[:, 5:].std()))) - except: - pass - - -def strip_optimizer(f='weights/best.pt'): # from utils.utils import *; strip_optimizer() - # Strip optimizer from *.pt files for lighter files (reduced by 2/3 size) - x = torch.load(f, map_location=torch.device('cpu')) - x['optimizer'] = None - print('Optimizer stripped from %s' % f) - torch.save(x, f) - - -def create_backbone(f='weights/best.pt'): # from utils.utils import *; create_backbone() - # create a backbone from a *.pt file - x = torch.load(f, map_location=torch.device('cpu')) - x['optimizer'] = None - x['training_results'] = None - x['epoch'] = -1 - for p in x['model'].parameters(): - p.requires_grad = True - s = 'weights/backbone.pt' - print('%s saved as %s' % (f, s)) - torch.save(x, s) - - -def coco_class_count(path='../coco/labels/train2014/'): - # Histogram of occurrences per class - nc = 80 # number classes - x = np.zeros(nc, dtype='int32') - files = sorted(glob.glob('%s/*.*' % path)) - for i, file in enumerate(files): - labels = np.loadtxt(file, dtype=np.float32).reshape(-1, 5) - x += np.bincount(labels[:, 0].astype('int32'), minlength=nc) - print(i, len(files)) - - -def coco_only_people(path='../coco/labels/train2017/'): # from utils.utils import *; coco_only_people() - # Find images with only people - files = sorted(glob.glob('%s/*.*' % path)) - for i, file in enumerate(files): - labels = np.loadtxt(file, dtype=np.float32).reshape(-1, 5) - if all(labels[:, 0] == 0): - print(labels.shape[0], file) - - -def crop_images_random(path='../images/', scale=0.50): # from utils.utils import *; crop_images_random() - # crops images into random squares up to scale fraction - # WARNING: overwrites images! - for file in tqdm(sorted(glob.glob('%s/*.*' % path))): - img = cv2.imread(file) # BGR - if img is not None: - h, w = img.shape[:2] - - # create random mask - a = 30 # minimum size (pixels) - mask_h = random.randint(a, int(max(a, h * scale))) # mask height - mask_w = mask_h # mask width - - # box - xmin = max(0, random.randint(0, w) - mask_w // 2) - ymin = max(0, random.randint(0, h) - mask_h // 2) - xmax = min(w, xmin + mask_w) - ymax = min(h, ymin + mask_h) - - # apply random color mask - cv2.imwrite(file, img[ymin:ymax, xmin:xmax]) - - -def coco_single_class_labels(path='../coco/labels/train2014/', label_class=43): - # Makes single-class coco datasets. from utils.utils import *; coco_single_class_labels() - if os.path.exists('new/'): - shutil.rmtree('new/') # delete output folder - os.makedirs('new/') # make new output folder - os.makedirs('new/labels/') - os.makedirs('new/images/') - for file in tqdm(sorted(glob.glob('%s/*.*' % path))): - with open(file, 'r') as f: - labels = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) - i = labels[:, 0] == label_class - if any(i): - img_file = file.replace('labels', 'images').replace('txt', 'jpg') - labels[:, 0] = 0 # reset class to 0 - with open('new/images.txt', 'a') as f: # add image to dataset list - f.write(img_file + '\n') - with open('new/labels/' + Path(file).name, 'a') as f: # write label - for l in labels[i]: - f.write('%g %.6f %.6f %.6f %.6f\n' % tuple(l)) - shutil.copyfile(src=img_file, dst='new/images/' + Path(file).name.replace('txt', 'jpg')) # copy images - - -def kmean_anchors(path='./data/coco64.txt', n=9, img_size=(640, 640), thr=0.20, gen=1000): - # Creates kmeans anchors for use in *.cfg files: from utils.utils import *; _ = kmean_anchors() - # n: number of anchors - # img_size: (min, max) image size used for multi-scale training (can be same values) - # thr: IoU threshold hyperparameter used for training (0.0 - 1.0) - # gen: generations to evolve anchors using genetic algorithm - from utils.datasets import LoadImagesAndLabels - - def print_results(k): - k = k[np.argsort(k.prod(1))] # sort small to large - iou = wh_iou(wh, torch.Tensor(k)) - max_iou = iou.max(1)[0] - bpr, aat = (max_iou > thr).float().mean(), (iou > thr).float().mean() * n # best possible recall, anch > thr - print('%.2f iou_thr: %.3f best possible recall, %.2f anchors > thr' % (thr, bpr, aat)) - print('n=%g, img_size=%s, IoU_all=%.3f/%.3f-mean/best, IoU>thr=%.3f-mean: ' % - (n, img_size, iou.mean(), max_iou.mean(), iou[iou > thr].mean()), end='') - for i, x in enumerate(k): - print('%i,%i' % (round(x[0]), round(x[1])), end=', ' if i < len(k) - 1 else '\n') # use in *.cfg - return k - - def fitness(k): # mutation fitness - iou = wh_iou(wh, torch.Tensor(k)) # iou - max_iou = iou.max(1)[0] - return (max_iou * (max_iou > thr).float()).mean() # product - - # Get label wh - wh = [] - dataset = LoadImagesAndLabels(path, augment=True, rect=True) - nr = 1 if img_size[0] == img_size[1] else 10 # number augmentation repetitions - for s, l in zip(dataset.shapes, dataset.labels): - wh.append(l[:, 3:5] * (s / s.max())) # image normalized to letterbox normalized wh - wh = np.concatenate(wh, 0).repeat(nr, axis=0) # augment 10x - wh *= np.random.uniform(img_size[0], img_size[1], size=(wh.shape[0], 1)) # normalized to pixels (multi-scale) - wh = wh[(wh > 2.0).all(1)] # remove below threshold boxes (< 2 pixels wh) - - # Kmeans calculation - from scipy.cluster.vq import kmeans - print('Running kmeans for %g anchors on %g points...' % (n, len(wh))) - s = wh.std(0) # sigmas for whitening - k, dist = kmeans(wh / s, n, iter=30) # points, mean distance - k *= s - wh = torch.Tensor(wh) - k = print_results(k) - - # # Plot - # k, d = [None] * 20, [None] * 20 - # for i in tqdm(range(1, 21)): - # k[i-1], d[i-1] = kmeans(wh / s, i) # points, mean distance - # fig, ax = plt.subplots(1, 2, figsize=(14, 7)) - # ax = ax.ravel() - # ax[0].plot(np.arange(1, 21), np.array(d) ** 2, marker='.') - # fig, ax = plt.subplots(1, 2, figsize=(14, 7)) # plot wh - # ax[0].hist(wh[wh[:, 0]<100, 0],400) - # ax[1].hist(wh[wh[:, 1]<100, 1],400) - # fig.tight_layout() - # fig.savefig('wh.png', dpi=200) - - # Evolve - npr = np.random - f, sh, mp, s = fitness(k), k.shape, 0.9, 0.1 # fitness, generations, mutation prob, sigma - for _ in tqdm(range(gen), desc='Evolving anchors'): - v = np.ones(sh) - while (v == 1).all(): # mutate until a change occurs (prevent duplicates) - v = ((npr.random(sh) < mp) * npr.random() * npr.randn(*sh) * s + 1).clip(0.3, 3.0) - kg = (k.copy() * v).clip(min=2.0) - fg = fitness(kg) - if fg > f: - f, k = fg, kg.copy() - print_results(k) - k = print_results(k) - - return k - - -def print_mutation(hyp, results, bucket=''): - # Print mutation results to evolve.txt (for use with train.py --evolve) - a = '%10s' * len(hyp) % tuple(hyp.keys()) # hyperparam keys - b = '%10.3g' * len(hyp) % tuple(hyp.values()) # hyperparam values - c = '%10.4g' * len(results) % results # results (P, R, mAP, F1, test_loss) - print('\n%s\n%s\nEvolved fitness: %s\n' % (a, b, c)) - - if bucket: - os.system('gsutil cp gs://%s/evolve.txt .' % bucket) # download evolve.txt - - with open('evolve.txt', 'a') as f: # append result - f.write(c + b + '\n') - x = np.unique(np.loadtxt('evolve.txt', ndmin=2), axis=0) # load unique rows - np.savetxt('evolve.txt', x[np.argsort(-fitness(x))], '%10.3g') # save sort by fitness - - if bucket: - os.system('gsutil cp evolve.txt gs://%s' % bucket) # upload evolve.txt - - -def apply_classifier(x, model, img, im0): - # applies a second stage classifier to yolo outputs - im0 = [im0] if isinstance(im0, np.ndarray) else im0 - for i, d in enumerate(x): # per image - if d is not None and len(d): - d = d.clone() - - # Reshape and pad cutouts - b = xyxy2xywh(d[:, :4]) # boxes - b[:, 2:] = b[:, 2:].max(1)[0].unsqueeze(1) # rectangle to square - b[:, 2:] = b[:, 2:] * 1.3 + 30 # pad - d[:, :4] = xywh2xyxy(b).long() - - # Rescale boxes from img_size to im0 size - scale_coords(img.shape[2:], d[:, :4], im0[i].shape) - - # Classes - pred_cls1 = d[:, 5].long() - ims = [] - for j, a in enumerate(d): # per item - cutout = im0[i][int(a[1]):int(a[3]), int(a[0]):int(a[2])] - im = cv2.resize(cutout, (224, 224)) # BGR - # cv2.imwrite('test%i.jpg' % j, cutout) - - im = im[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416 - im = np.ascontiguousarray(im, dtype=np.float32) # uint8 to float32 - im /= 255.0 # 0 - 255 to 0.0 - 1.0 - ims.append(im) - - pred_cls2 = model(torch.Tensor(ims).to(d.device)).argmax(1) # classifier prediction - x[i] = x[i][pred_cls1 == pred_cls2] # retain matching class detections - - return x - - -def fitness(x): - # Returns fitness (for use with results.txt or evolve.txt) - w = [0.0, 0.01, 0.99, 0.00] # weights for [P, R, mAP, F1]@0.5 or [P, R, mAP@0.5, mAP@0.5:0.95] - return (x[:, :4] * w).sum(1) - - -def output_to_target(output, width, height): - """ - Convert a YOLO model output to target format - [batch_id, class_id, x, y, w, h, conf] - """ - if isinstance(output, torch.Tensor): - output = output.cpu().numpy() - - targets = [] - for i, o in enumerate(output): - if o is not None: - for pred in o: - box = pred[:4] - w = (box[2] - box[0]) / width - h = (box[3] - box[1]) / height - x = box[0] / width + w / 2 - y = box[1] / height + h / 2 - conf = pred[4] - cls = int(pred[5]) - - targets.append([i, cls, x, y, w, h, conf]) - - return np.array(targets) - - -# Plotting functions --------------------------------------------------------------------------------------------------- -def plot_one_box(x, img, color=None, label=None, line_thickness=None): - # Plots one bounding box on image img - tl = line_thickness or round(0.002 * (img.shape[0] + img.shape[1]) / 2) + 1 # line/font thickness - color = color or [random.randint(0, 255) for _ in range(3)] - c1, c2 = (int(x[0]), int(x[1])), (int(x[2]), int(x[3])) - cv2.rectangle(img, c1, c2, color, thickness=tl, lineType=cv2.LINE_AA) - if label: - tf = max(tl - 1, 1) # font thickness - t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, thickness=tf)[0] - c2 = c1[0] + t_size[0], c1[1] - t_size[1] - 3 - cv2.rectangle(img, c1, c2, color, -1, cv2.LINE_AA) # filled - cv2.putText(img, label, (c1[0], c1[1] - 2), 0, tl / 3, [225, 255, 255], thickness=tf, lineType=cv2.LINE_AA) - - -def plot_wh_methods(): # from utils.utils import *; plot_wh_methods() - # Compares the two methods for width-height anchor multiplication - # https://github.com/ultralytics/yolov3/issues/168 - x = np.arange(-4.0, 4.0, .1) - ya = np.exp(x) - yb = torch.sigmoid(torch.from_numpy(x)).numpy() * 2 - - fig = plt.figure(figsize=(6, 3), dpi=150) - plt.plot(x, ya, '.-', label='yolo method') - plt.plot(x, yb ** 2, '.-', label='^2 power method') - plt.plot(x, yb ** 2.5, '.-', label='^2.5 power method') - plt.xlim(left=-4, right=4) - plt.ylim(bottom=0, top=6) - plt.xlabel('input') - plt.ylabel('output') - plt.legend() - fig.tight_layout() - fig.savefig('comparison.png', dpi=200) - - -def plot_images(images, targets, paths=None, fname='images.jpg', names=None, max_size=640, max_subplots=16): - tl = 3 # line thickness - tf = max(tl - 1, 1) # font thickness - if os.path.isfile(fname): # do not overwrite - return None - - if isinstance(images, torch.Tensor): - images = images.cpu().numpy() - - if isinstance(targets, torch.Tensor): - targets = targets.cpu().numpy() - - # un-normalise - if np.max(images[0]) <= 1: - images *= 255 - - bs, _, h, w = images.shape # batch size, _, height, width - bs = min(bs, max_subplots) # limit plot images - ns = np.ceil(bs ** 0.5) # number of subplots (square) - - # Check if we should resize - scale_factor = max_size / max(h, w) - if scale_factor < 1: - h = math.ceil(scale_factor * h) - w = math.ceil(scale_factor * w) - - # Empty array for output - mosaic = np.full((int(ns * h), int(ns * w), 3), 255, dtype=np.uint8) - - # Fix class - colour map - prop_cycle = plt.rcParams['axes.prop_cycle'] - # https://stackoverflow.com/questions/51350872/python-from-color-name-to-rgb - hex2rgb = lambda h: tuple(int(h[1 + i:1 + i + 2], 16) for i in (0, 2, 4)) - color_lut = [hex2rgb(h) for h in prop_cycle.by_key()['color']] - - for i, img in enumerate(images): - if i == max_subplots: # if last batch has fewer images than we expect - break - - block_x = int(w * (i // ns)) - block_y = int(h * (i % ns)) - - img = img.transpose(1, 2, 0) - if scale_factor < 1: - img = cv2.resize(img, (w, h)) - - mosaic[block_y:block_y + h, block_x:block_x + w, :] = img - if len(targets) > 0: - image_targets = targets[targets[:, 0] == i] - boxes = xywh2xyxy(image_targets[:, 2:6]).T - classes = image_targets[:, 1].astype('int') - gt = image_targets.shape[1] == 6 # ground truth if no conf column - conf = None if gt else image_targets[:, 6] # check for confidence presence (gt vs pred) - - boxes[[0, 2]] *= w - boxes[[0, 2]] += block_x - boxes[[1, 3]] *= h - boxes[[1, 3]] += block_y - for j, box in enumerate(boxes.T): - cls = int(classes[j]) - color = color_lut[cls % len(color_lut)] - cls = names[cls] if names else cls - if gt or conf[j] > 0.3: # 0.3 conf thresh - label = '%s' % cls if gt else '%s %.1f' % (cls, conf[j]) - plot_one_box(box, mosaic, label=label, color=color, line_thickness=tl) - - # Draw image filename labels - if paths is not None: - label = os.path.basename(paths[i])[:40] # trim to 40 char - t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, thickness=tf)[0] - cv2.putText(mosaic, label, (block_x + 5, block_y + t_size[1] + 5), 0, tl / 3, [220, 220, 220], thickness=tf, - lineType=cv2.LINE_AA) - - # Image border - cv2.rectangle(mosaic, (block_x, block_y), (block_x + w, block_y + h), (255, 255, 255), thickness=3) - - if fname is not None: - mosaic = cv2.resize(mosaic, (int(ns * w * 0.5), int(ns * h * 0.5)), interpolation=cv2.INTER_AREA) - cv2.imwrite(fname, cv2.cvtColor(mosaic, cv2.COLOR_BGR2RGB)) - - return mosaic - - -def plot_lr_scheduler(optimizer, scheduler, epochs=300): - # Plot LR simulating training for full epochs - optimizer, scheduler = copy(optimizer), copy(scheduler) # do not modify originals - y = [] - for _ in range(epochs): - scheduler.step() - y.append(optimizer.param_groups[0]['lr']) - plt.plot(y, '.-', label='LR') - plt.xlabel('epoch') - plt.ylabel('LR') - plt.tight_layout() - plt.savefig('LR.png', dpi=200) - - -def plot_test_txt(): # from utils.utils import *; plot_test() - # Plot test.txt histograms - x = np.loadtxt('test.txt', dtype=np.float32) - box = xyxy2xywh(x[:, :4]) - cx, cy = box[:, 0], box[:, 1] - - fig, ax = plt.subplots(1, 1, figsize=(6, 6), tight_layout=True) - ax.hist2d(cx, cy, bins=600, cmax=10, cmin=0) - ax.set_aspect('equal') - plt.savefig('hist2d.png', dpi=300) - - fig, ax = plt.subplots(1, 2, figsize=(12, 6), tight_layout=True) - ax[0].hist(cx, bins=600) - ax[1].hist(cy, bins=600) - plt.savefig('hist1d.png', dpi=200) - - -def plot_targets_txt(): # from utils.utils import *; plot_targets_txt() - # Plot targets.txt histograms - x = np.loadtxt('targets.txt', dtype=np.float32).T - s = ['x targets', 'y targets', 'width targets', 'height targets'] - fig, ax = plt.subplots(2, 2, figsize=(8, 8), tight_layout=True) - ax = ax.ravel() - for i in range(4): - ax[i].hist(x[i], bins=100, label='%.3g +/- %.3g' % (x[i].mean(), x[i].std())) - ax[i].legend() - ax[i].set_title(s[i]) - plt.savefig('targets.jpg', dpi=200) - - -def plot_labels(labels): - # plot dataset labels - c, b = labels[:, 0], labels[:, 1:].transpose() # classees, boxes - - def hist2d(x, y, n=100): - xedges, yedges = np.linspace(x.min(), x.max(), n), np.linspace(y.min(), y.max(), n) - hist, xedges, yedges = np.histogram2d(x, y, (xedges, yedges)) - xidx = np.clip(np.digitize(x, xedges) - 1, 0, hist.shape[0] - 1) - yidx = np.clip(np.digitize(y, yedges) - 1, 0, hist.shape[1] - 1) - return hist[xidx, yidx] - - fig, ax = plt.subplots(2, 2, figsize=(8, 8), tight_layout=True) - ax = ax.ravel() - ax[0].hist(c, bins=int(c.max() + 1)) - ax[0].set_xlabel('classes') - ax[1].scatter(b[0], b[1], c=hist2d(b[0], b[1], 90), cmap='jet') - ax[1].set_xlabel('x') - ax[1].set_ylabel('y') - ax[2].scatter(b[2], b[3], c=hist2d(b[2], b[3], 90), cmap='jet') - ax[2].set_xlabel('width') - ax[2].set_ylabel('height') - plt.savefig('labels.png', dpi=200) - - -def plot_evolution_results(hyp): # from utils.utils import *; plot_evolution_results(hyp) - # Plot hyperparameter evolution results in evolve.txt - x = np.loadtxt('evolve.txt', ndmin=2) - f = fitness(x) - # weights = (f - f.min()) ** 2 # for weighted results - fig = plt.figure(figsize=(12, 10), tight_layout=True) - matplotlib.rc('font', **{'size': 8}) - for i, (k, v) in enumerate(hyp.items()): - y = x[:, i + 7] - # mu = (y * weights).sum() / weights.sum() # best weighted result - mu = y[f.argmax()] # best single result - plt.subplot(4, 5, i + 1) - plt.plot(mu, f.max(), 'o', markersize=10) - plt.plot(y, f, '.') - plt.title('%s = %.3g' % (k, mu), fontdict={'size': 9}) # limit to 40 characters - print('%15s: %.3g' % (k, mu)) - plt.savefig('evolve.png', dpi=200) - - -def plot_results_overlay(start=0, stop=0): # from utils.utils import *; plot_results_overlay() - # Plot training results files 'results*.txt', overlaying train and val losses - s = ['train', 'train', 'train', 'Precision', 'mAP@0.5', 'val', 'val', 'val', 'Recall', 'F1'] # legends - t = ['GIoU', 'Objectness', 'Classification', 'P-R', 'mAP-F1'] # titles - for f in sorted(glob.glob('results*.txt') + glob.glob('../../Downloads/results*.txt')): - results = np.loadtxt(f, usecols=[2, 3, 4, 8, 9, 12, 13, 14, 10, 11], ndmin=2).T - n = results.shape[1] # number of rows - x = range(start, min(stop, n) if stop else n) - fig, ax = plt.subplots(1, 5, figsize=(14, 3.5), tight_layout=True) - ax = ax.ravel() - for i in range(5): - for j in [i, i + 5]: - y = results[j, x] - if i in [0, 1, 2]: - y[y == 0] = np.nan # dont show zero loss values - ax[i].plot(x, y, marker='.', label=s[j]) - ax[i].set_title(t[i]) - ax[i].legend() - ax[i].set_ylabel(f) if i == 0 else None # add filename - fig.savefig(f.replace('.txt', '.png'), dpi=200) - - -def plot_results(start=0, stop=0, bucket='', id=()): # from utils.utils import *; plot_results() - # Plot training 'results*.txt' as seen in https://github.com/ultralytics/yolov3#training - fig, ax = plt.subplots(2, 5, figsize=(12, 6), tight_layout=True) - ax = ax.ravel() - s = ['GIoU', 'Objectness', 'Classification', 'Precision', 'Recall', - 'val GIoU', 'val Objectness', 'val Classification', 'mAP@0.5', 'F1'] - if bucket: - os.system('rm -rf storage.googleapis.com') - files = ['https://storage.googleapis.com/%s/results%g.txt' % (bucket, x) for x in id] - else: - files = glob.glob('results*.txt') + glob.glob('../../Downloads/results*.txt') - for f in sorted(files): - try: - results = np.loadtxt(f, usecols=[2, 3, 4, 8, 9, 12, 13, 14, 10, 11], ndmin=2).T - n = results.shape[1] # number of rows - x = range(start, min(stop, n) if stop else n) - for i in range(10): - y = results[i, x] - if i in [0, 1, 2, 5, 6, 7]: - y[y == 0] = np.nan # dont show zero loss values - # y /= y[0] # normalize - ax[i].plot(x, y, marker='.', label=Path(f).stem, linewidth=2, markersize=8) - ax[i].set_title(s[i]) - # if i in [5, 6, 7]: # share train and val loss y axes - # ax[i].get_shared_y_axes().join(ax[i], ax[i - 5]) - except: - print('Warning: Plotting error for %s, skipping file' % f) - - ax[1].legend() - fig.savefig('results.png', dpi=200) diff --git a/weights/download_weights.sh b/weights/download_weights.sh new file mode 100755 index 00000000..e3a6b388 --- /dev/null +++ b/weights/download_weights.sh @@ -0,0 +1,10 @@ +#!/bin/bash +# Download latest models from https://github.com/ultralytics/yolov3/releases + +python - < Date: Thu, 26 Nov 2020 22:22:03 +0100 Subject: [PATCH 2489/2595] Ignore W&B logging dir wandb/ (#1571) --- .gitignore | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 5a95798f..db4297e9 100755 --- a/.gitignore +++ b/.gitignore @@ -26,8 +26,8 @@ storage.googleapis.com runs/* data/* -!data/samples/zidane.jpg -!data/samples/bus.jpg +!data/images/zidane.jpg +!data/images/bus.jpg !data/coco.names !data/coco_paper.names !data/coco.data @@ -50,6 +50,7 @@ gcp_test*.sh *.pt *.onnx *.mlmodel +*.torchscript darknet53.conv.74 yolov3-tiny.conv.15 @@ -78,9 +79,11 @@ sdist/ var/ wheels/ *.egg-info/ +wandb/ .installed.cfg *.egg + # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. @@ -139,9 +142,9 @@ celerybeat-schedule .env # virtualenv -.venv -venv/ -ENV/ +.venv* +venv*/ +ENV*/ # Spyder project settings .spyderproject From f78f991a740e3737ad3add65f11f68d640b76e49 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Nov 2020 01:27:25 +0100 Subject: [PATCH 2490/2595] FROM nvcr.io/nvidia/pytorch:20.11-py3 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index e514893d..b2a2d14d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Start FROM Nvidia PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorch -FROM nvcr.io/nvidia/pytorch:20.10-py3 +FROM nvcr.io/nvidia/pytorch:20.11-py3 # Install dependencies RUN pip install --upgrade pip From 152f50e8f9c9db446427ebc46865e9d04dc9d11f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Nov 2020 01:30:37 +0100 Subject: [PATCH 2491/2595] Remove ignore for git files (#1099) --- .dockerignore | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/.dockerignore b/.dockerignore index a0d80d09..666f331f 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,5 +1,5 @@ # Repo-specific DockerIgnore ------------------------------------------------------------------------------------------- -# .git +#.git .cache .idea runs @@ -8,8 +8,6 @@ coco storage.googleapis.com data/samples/* -!data/samples/zidane.jpg -!data/samples/bus.jpg **/results*.txt *.jpg @@ -20,8 +18,6 @@ data/samples/* **/*.onnx **/*.mlmodel **/*.torchscript -**/darknet53.conv.74 -**/yolov3-tiny.conv.15 # Below Copied From .gitignore ----------------------------------------------------------------------------------------- @@ -114,9 +110,9 @@ celerybeat-schedule .env # virtualenv -.venv -venv/ -ENV/ +.venv* +venv*/ +ENV*/ # Spyder project settings .spyderproject From f28f8622450142c4e79b24d4d0691aa6a76bfc57 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 27 Nov 2020 01:32:55 +0100 Subject: [PATCH 2492/2595] Ignore W&B logging dir wandb/ (#1571) --- .dockerignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.dockerignore b/.dockerignore index 666f331f..3c6b6ab0 100644 --- a/.dockerignore +++ b/.dockerignore @@ -49,6 +49,7 @@ sdist/ var/ wheels/ *.egg-info/ +wandb/ .installed.cfg *.egg From bc5c898c938875070c3493054c1b826b322ab024 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 28 Nov 2020 12:25:57 +0100 Subject: [PATCH 2493/2595] Update labels_to_image_weights() (#1576) --- utils/general.py | 15 +++++---------- utils/plots.py | 1 + 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/utils/general.py b/utils/general.py index ca6a9f6b..fa47289e 100755 --- a/utils/general.py +++ b/utils/general.py @@ -2,7 +2,6 @@ import glob import logging -import math import os import platform import random @@ -12,7 +11,7 @@ import time from pathlib import Path import cv2 -import matplotlib +import math import numpy as np import torch import torchvision @@ -22,13 +21,10 @@ from utils.google_utils import gsutil_getsize from utils.metrics import fitness from utils.torch_utils import init_torch_seeds -# Set printoptions +# Settings torch.set_printoptions(linewidth=320, precision=5, profile='long') np.set_printoptions(linewidth=320, formatter={'float_kind': '{:11.5g}'.format}) # format short g, %precision=5 -matplotlib.rc('font', **{'size': 11}) - -# Prevent OpenCV from multithreading (to use PyTorch DataLoader) -cv2.setNumThreads(0) +cv2.setNumThreads(0) # prevent OpenCV from multithreading (incompatible with PyTorch DataLoader) def set_logging(rank=-1): @@ -121,9 +117,8 @@ def labels_to_class_weights(labels, nc=80): def labels_to_image_weights(labels, nc=80, class_weights=np.ones(80)): - # Produces image weights based on class mAPs - n = len(labels) - class_counts = np.array([np.bincount(labels[i][:, 0].astype(np.int), minlength=nc) for i in range(n)]) + # Produces image weights based on class_weights and image contents + class_counts = np.array([np.bincount(x[:, 0].astype(np.int), minlength=nc) for x in labels]) image_weights = (class_weights.reshape(1, nc) * class_counts).sum(1) # index = random.choices(range(n), weights=image_weights, k=1) # weight image sample return image_weights diff --git a/utils/plots.py b/utils/plots.py index 6b2d7a38..9febcae5 100644 --- a/utils/plots.py +++ b/utils/plots.py @@ -20,6 +20,7 @@ from utils.general import xywh2xyxy, xyxy2xywh from utils.metrics import fitness # Settings +matplotlib.rc('font', **{'size': 11}) matplotlib.use('Agg') # for writing to files only From fed9451454835b5ec3cd557ce22664e5e00788ea Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 29 Nov 2020 12:01:42 +0100 Subject: [PATCH 2494/2595] f.read().strip() (#1577) --- utils/datasets.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/utils/datasets.py b/utils/datasets.py index 7203d962..4b870045 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -261,7 +261,7 @@ class LoadStreams: # multiple IP or RTSP cameras if os.path.isfile(sources): with open(sources, 'r') as f: - sources = [x.strip() for x in f.read().splitlines() if len(x.strip())] + sources = [x.strip() for x in f.read().strip().splitlines() if len(x.strip())] else: sources = [sources] @@ -353,7 +353,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing f += glob.glob(str(p / '**' / '*.*'), recursive=True) elif p.is_file(): # file with open(p, 'r') as t: - t = t.read().splitlines() + t = t.read().strip().splitlines() parent = str(p.parent) + os.sep f += [x.replace('./', parent) if x.startswith('./') else x for x in t] # local to global path else: @@ -450,7 +450,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing if os.path.isfile(lb_file): nf += 1 # label found with open(lb_file, 'r') as f: - l = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) # labels + l = np.array([x.split() for x in f.read().strip().splitlines()], dtype=np.float32) # labels if len(l): assert l.shape[1] == 5, 'labels require 5 columns each' assert (l >= 0).all(), 'negative labels' @@ -897,7 +897,7 @@ def extract_boxes(path='../coco128/'): # from utils.datasets import *; extract_ lb_file = Path(img2label_paths([str(im_file)])[0]) if Path(lb_file).exists(): with open(lb_file, 'r') as f: - lb = np.array([x.split() for x in f.read().splitlines()], dtype=np.float32) # labels + lb = np.array([x.split() for x in f.read().strip().splitlines()], dtype=np.float32) # labels for j, x in enumerate(lb): c = int(x[0]) # class From 430890ead83603a12c51622b633d37a5448d0e8a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 29 Nov 2020 14:21:32 +0100 Subject: [PATCH 2495/2595] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e8e05e11..05da4a2a 100755 --- a/README.md +++ b/README.md @@ -5,11 +5,11 @@ ![CI CPU testing](https://github.com/ultralytics/yolov3/workflows/CI%20CPU%20testing/badge.svg) BRANCH NOTICE: The [ultralytics/yolov3](https://github.com/ultralytics/yolov3) repository is now divided into two branches: -* [Master branch](https://github.com/ultralytics/yolov3/tree/master): Forward-compatible with all [YOLOv5](https://github.com/ultralytics/yolov5) models and methods (recommended). +* [Master branch](https://github.com/ultralytics/yolov3/tree/master): Forward-compatible with all [YOLOv5](https://github.com/ultralytics/yolov5) models and methods (**recommended**). ```bash $ git clone https://github.com/ultralytics/yolov3 # master branch (default) ``` -* [Archive branch](https://github.com/ultralytics/yolov3/tree/archive): Backwards-compatible with original [darknet](https://pjreddie.com/darknet/) *.cfg models (not recommended). +* [Archive branch](https://github.com/ultralytics/yolov3/tree/archive): Backwards-compatible with original [darknet](https://pjreddie.com/darknet/) *.cfg models (⚠️ no longer maintained). ```bash $ git clone -b archive https://github.com/ultralytics/yolov3 # archive branch ``` From e6d5408f5a1d4efcad9845f268be65d06b1b71be Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 29 Nov 2020 17:49:19 +0100 Subject: [PATCH 2496/2595] FROM nvcr.io/nvidia/pytorch:20.10-py3 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b2a2d14d..e514893d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Start FROM Nvidia PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorch -FROM nvcr.io/nvidia/pytorch:20.11-py3 +FROM nvcr.io/nvidia/pytorch:20.10-py3 # Install dependencies RUN pip install --upgrade pip From 4f890d13ee1b23a79c8f58922b68a2c4856745a3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 30 Nov 2020 16:47:28 +0100 Subject: [PATCH 2497/2595] Daemon thread plots (#1578) --- test.py | 23 ++++++++++++----------- train.py | 10 +++++----- utils/plots.py | 11 ++++++++--- 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/test.py b/test.py index d62afd7d..4120057a 100644 --- a/test.py +++ b/test.py @@ -3,6 +3,7 @@ import glob import json import os from pathlib import Path +from threading import Thread import numpy as np import torch @@ -206,10 +207,10 @@ def test(data, # Plot images if plots and batch_i < 3: - f = save_dir / f'test_batch{batch_i}_labels.jpg' # filename - plot_images(img, targets, paths, f, names) # labels - f = save_dir / f'test_batch{batch_i}_pred.jpg' - plot_images(img, output_to_target(output), paths, f, names) # predictions + f = save_dir / f'test_batch{batch_i}_labels.jpg' # labels + Thread(target=plot_images, args=(img, targets, paths, f, names), daemon=True).start() + f = save_dir / f'test_batch{batch_i}_pred.jpg' # predictions + Thread(target=plot_images, args=(img, output_to_target(output), paths, f, names), daemon=True).start() # Compute statistics stats = [np.concatenate(x, 0) for x in zip(*stats)] # to numpy @@ -221,13 +222,6 @@ def test(data, else: nt = torch.zeros(1) - # Plots - if plots: - confusion_matrix.plot(save_dir=save_dir, names=list(names.values())) - if wandb and wandb.run: - wandb.log({"Images": wandb_images}) - wandb.log({"Validation": [wandb.Image(str(f), caption=f.name) for f in sorted(save_dir.glob('test*.jpg'))]}) - # Print results pf = '%20s' + '%12.3g' * 6 # print format print(pf % ('all', seen, nt.sum(), mp, mr, map50, map)) @@ -242,6 +236,13 @@ def test(data, if not training: print('Speed: %.1f/%.1f/%.1f ms inference/NMS/total per %gx%g image at batch-size %g' % t) + # Plots + if plots: + confusion_matrix.plot(save_dir=save_dir, names=list(names.values())) + if wandb and wandb.run: + wandb.log({"Images": wandb_images}) + wandb.log({"Validation": [wandb.Image(str(f), caption=f.name) for f in sorted(save_dir.glob('test*.jpg'))]}) + # Save JSON if save_json and len(jdict): w = Path(weights[0] if isinstance(weights, list) else weights).stem if weights is not None else '' # weights diff --git a/train.py b/train.py index 3471496b..f0f778db 100644 --- a/train.py +++ b/train.py @@ -1,12 +1,13 @@ import argparse import logging -import math import os import random import time from pathlib import Path +from threading import Thread from warnings import warn +import math import numpy as np import torch.distributed as dist import torch.nn as nn @@ -134,6 +135,7 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): project='YOLOv3' if opt.project == 'runs/train' else Path(opt.project).stem, name=save_dir.stem, id=ckpt.get('wandb_id') if 'ckpt' in locals() else None) + loggers = {'wandb': wandb} # loggers dict # Resume start_epoch, best_fitness = 0, 0.0 @@ -201,11 +203,9 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): # cf = torch.bincount(c.long(), minlength=nc) + 1. # frequency # model._initialize_biases(cf.to(device)) if plots: - plot_labels(labels, save_dir=save_dir) + Thread(target=plot_labels, args=(labels, save_dir, loggers), daemon=True).start() if tb_writer: tb_writer.add_histogram('classes', c, 0) - if wandb: - wandb.log({"Labels": [wandb.Image(str(x), caption=x.name) for x in save_dir.glob('*labels*.png')]}) # Anchors if not opt.noautoanchor: @@ -311,7 +311,7 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): # Plot if plots and ni < 3: f = save_dir / f'train_batch{ni}.jpg' # filename - plot_images(images=imgs, targets=targets, paths=paths, fname=f) + Thread(target=plot_images, args=(imgs, targets, paths, f), daemon=True).start() # if tb_writer: # tb_writer.add_image(f, result, dataformats='HWC', global_step=epoch) # tb_writer.add_graph(model, imgs) # add model to tensorboard diff --git a/utils/plots.py b/utils/plots.py index 9febcae5..8492b1a1 100644 --- a/utils/plots.py +++ b/utils/plots.py @@ -250,7 +250,7 @@ def plot_study_txt(path='', x=None): # from utils.plots import *; plot_study_tx plt.savefig('test_study.png', dpi=300) -def plot_labels(labels, save_dir=''): +def plot_labels(labels, save_dir=Path(''), loggers=None): # plot dataset labels c, b = labels[:, 0], labels[:, 1:].transpose() # classes, boxes nc = int(c.max() + 1) # number of classes @@ -264,7 +264,7 @@ def plot_labels(labels, save_dir=''): sns.pairplot(x, corner=True, diag_kind='hist', kind='scatter', markers='o', plot_kws=dict(s=3, edgecolor=None, linewidth=1, alpha=0.02), diag_kws=dict(bins=50)) - plt.savefig(Path(save_dir) / 'labels_correlogram.png', dpi=200) + plt.savefig(save_dir / 'labels_correlogram.png', dpi=200) plt.close() except Exception as e: pass @@ -292,9 +292,14 @@ def plot_labels(labels, save_dir=''): for a in [0, 1, 2, 3]: for s in ['top', 'right', 'left', 'bottom']: ax[a].spines[s].set_visible(False) - plt.savefig(Path(save_dir) / 'labels.png', dpi=200) + plt.savefig(save_dir / 'labels.png', dpi=200) plt.close() + # loggers + for k, v in loggers.items() or {}: + if k == 'wandb' and v: + v.log({"Labels": [v.Image(str(x), caption=x.name) for x in save_dir.glob('*labels*.png')]}) + def plot_evolution(yaml_file='data/hyp.finetune.yaml'): # from utils.plots import *; plot_evolution() # Plot hyperparameter evolution results in evolve.txt From 5b46d4971992714bdb21da8b9fa29cd4eaa847b5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 1 Dec 2020 14:19:06 +0100 Subject: [PATCH 2498/2595] plot_images() scale bug fix (#1580) From https://github.com/ultralytics/yolov5/pull/1566 --- utils/plots.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/utils/plots.py b/utils/plots.py index 8492b1a1..1bb61d67 100644 --- a/utils/plots.py +++ b/utils/plots.py @@ -141,9 +141,12 @@ def plot_images(images, targets, paths=None, fname='images.jpg', names=None, max labels = image_targets.shape[1] == 6 # labels if no conf column conf = None if labels else image_targets[:, 6] # check for confidence presence (label vs pred) - if boxes.shape[1] and boxes.max() <= 1: # if normalized - boxes[[0, 2]] *= w # scale to pixels - boxes[[1, 3]] *= h + if boxes.shape[1]: + if boxes.max() <= 1: # if normalized + boxes[[0, 2]] *= w # scale to pixels + boxes[[1, 3]] *= h + elif scale_factor < 1: # absolute coords need scale if image scales + boxes *= scale_factor boxes[[0, 2]] += block_x boxes[[1, 3]] += block_y for j, box in enumerate(boxes.T): From 5ead90a9d6195491c2eab9f3dfbeaea7ac1f73a0 Mon Sep 17 00:00:00 2001 From: SergioSanchezMontesUAM <33067411+SergioSanchezMontesUAM@users.noreply.github.com> Date: Wed, 2 Dec 2020 13:01:45 +0100 Subject: [PATCH 2499/2595] Update .gitignore datasets dir (#1582) --- .gitignore | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index db4297e9..91ce33fb 100755 --- a/.gitignore +++ b/.gitignore @@ -40,6 +40,11 @@ pycocotools/* results*.txt gcp_test*.sh +# Datasets ------------------------------------------------------------------------------------------------------------- +coco/ +coco128/ +VOC/ + # MATLAB GitIgnore ----------------------------------------------------------------------------------------------------- *.m~ *.mat From eac1ba63d9b6c30ad667b57cba35a3556d6ee794 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 2 Dec 2020 14:05:29 +0100 Subject: [PATCH 2500/2595] Update matplotlib svg backend (#1583) --- utils/plots.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/plots.py b/utils/plots.py index 1bb61d67..c6aa4892 100644 --- a/utils/plots.py +++ b/utils/plots.py @@ -21,7 +21,7 @@ from utils.metrics import fitness # Settings matplotlib.rc('font', **{'size': 11}) -matplotlib.use('Agg') # for writing to files only +matplotlib.use('svg') # for writing to files only def color_list(): From 75431d89eeadba1adee27005c3c79de429cda6e9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 2 Dec 2020 15:53:23 +0100 Subject: [PATCH 2501/2595] Update matplotlib.use('Agg') tight (#1584) --- utils/autoanchor.py | 3 +-- utils/metrics.py | 6 ++---- utils/plots.py | 18 +++++++++--------- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/utils/autoanchor.py b/utils/autoanchor.py index b678bbbd..98fea998 100644 --- a/utils/autoanchor.py +++ b/utils/autoanchor.py @@ -124,13 +124,12 @@ def kmean_anchors(path='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen=10 # k, d = [None] * 20, [None] * 20 # for i in tqdm(range(1, 21)): # k[i-1], d[i-1] = kmeans(wh / s, i) # points, mean distance - # fig, ax = plt.subplots(1, 2, figsize=(14, 7)) + # fig, ax = plt.subplots(1, 2, figsize=(14, 7), tight_layout=True) # ax = ax.ravel() # ax[0].plot(np.arange(1, 21), np.array(d) ** 2, marker='.') # fig, ax = plt.subplots(1, 2, figsize=(14, 7)) # plot wh # ax[0].hist(wh[wh[:, 0]<100, 0],400) # ax[1].hist(wh[wh[:, 1]<100, 1],400) - # fig.tight_layout() # fig.savefig('wh.png', dpi=200) # Evolve diff --git a/utils/metrics.py b/utils/metrics.py index 79f18cff..af32ddc5 100644 --- a/utils/metrics.py +++ b/utils/metrics.py @@ -163,7 +163,7 @@ class ConfusionMatrix: array = self.matrix / (self.matrix.sum(0).reshape(1, self.nc + 1) + 1E-6) # normalize array[array < 0.005] = np.nan # don't annotate (would appear as 0.00) - fig = plt.figure(figsize=(12, 9)) + fig = plt.figure(figsize=(12, 9), tight_layout=True) sn.set(font_scale=1.0 if self.nc < 50 else 0.8) # for label size labels = (0 < len(names) < 99) and len(names) == self.nc # apply names to ticklabels sn.heatmap(array, annot=self.nc < 30, annot_kws={"size": 8}, cmap='Blues', fmt='.2f', square=True, @@ -171,7 +171,6 @@ class ConfusionMatrix: yticklabels=names + ['background FP'] if labels else "auto").set_facecolor((1, 1, 1)) fig.axes[0].set_xlabel('True') fig.axes[0].set_ylabel('Predicted') - fig.tight_layout() fig.savefig(Path(save_dir) / 'confusion_matrix.png', dpi=250) except Exception as e: pass @@ -184,7 +183,7 @@ class ConfusionMatrix: # Plots ---------------------------------------------------------------------------------------------------------------- def plot_pr_curve(px, py, ap, save_dir='.', names=()): - fig, ax = plt.subplots(1, 1, figsize=(9, 6)) + fig, ax = plt.subplots(1, 1, figsize=(9, 6), tight_layout=True) py = np.stack(py, axis=1) if 0 < len(names) < 21: # show mAP in legend if < 10 classes @@ -199,5 +198,4 @@ def plot_pr_curve(px, py, ap, save_dir='.', names=()): ax.set_xlim(0, 1) ax.set_ylim(0, 1) plt.legend(bbox_to_anchor=(1.04, 1), loc="upper left") - fig.tight_layout() fig.savefig(Path(save_dir) / 'precision_recall_curve.png', dpi=250) diff --git a/utils/plots.py b/utils/plots.py index c6aa4892..12815ea2 100644 --- a/utils/plots.py +++ b/utils/plots.py @@ -73,7 +73,7 @@ def plot_wh_methods(): # from utils.plots import *; plot_wh_methods() ya = np.exp(x) yb = torch.sigmoid(torch.from_numpy(x)).numpy() * 2 - fig = plt.figure(figsize=(6, 3), dpi=150) + fig = plt.figure(figsize=(6, 3), tight_layout=True) plt.plot(x, ya, '.-', label='YOLOv3') plt.plot(x, yb ** 2, '.-', label='YOLOv5 ^2') plt.plot(x, yb ** 1.6, '.-', label='YOLOv5 ^1.6') @@ -83,7 +83,6 @@ def plot_wh_methods(): # from utils.plots import *; plot_wh_methods() plt.ylabel('output') plt.grid() plt.legend() - fig.tight_layout() fig.savefig('comparison.png', dpi=200) @@ -145,7 +144,7 @@ def plot_images(images, targets, paths=None, fname='images.jpg', names=None, max if boxes.max() <= 1: # if normalized boxes[[0, 2]] *= w # scale to pixels boxes[[1, 3]] *= h - elif scale_factor < 1: # absolute coords need scale if image scales + elif scale_factor < 1: # absolute coords need scale if image scales boxes *= scale_factor boxes[[0, 2]] += block_x boxes[[1, 3]] += block_y @@ -188,7 +187,6 @@ def plot_lr_scheduler(optimizer, scheduler, epochs=300, save_dir=''): plt.grid() plt.xlim(0, epochs) plt.ylim(0) - plt.tight_layout() plt.savefig(Path(save_dir) / 'LR.png', dpi=200) @@ -267,12 +265,13 @@ def plot_labels(labels, save_dir=Path(''), loggers=None): sns.pairplot(x, corner=True, diag_kind='hist', kind='scatter', markers='o', plot_kws=dict(s=3, edgecolor=None, linewidth=1, alpha=0.02), diag_kws=dict(bins=50)) - plt.savefig(save_dir / 'labels_correlogram.png', dpi=200) + plt.savefig(save_dir / 'labels_correlogram.jpg', dpi=200) plt.close() except Exception as e: pass # matplotlib labels + matplotlib.use('svg') # faster ax = plt.subplots(2, 2, figsize=(8, 8), tight_layout=True)[1].ravel() ax[0].hist(c, bins=np.linspace(0, nc, nc + 1) - 0.5, rwidth=0.8) ax[0].set_xlabel('classes') @@ -295,13 +294,15 @@ def plot_labels(labels, save_dir=Path(''), loggers=None): for a in [0, 1, 2, 3]: for s in ['top', 'right', 'left', 'bottom']: ax[a].spines[s].set_visible(False) - plt.savefig(save_dir / 'labels.png', dpi=200) + + plt.savefig(save_dir / 'labels.jpg', dpi=200) + matplotlib.use('Agg') plt.close() # loggers for k, v in loggers.items() or {}: if k == 'wandb' and v: - v.log({"Labels": [v.Image(str(x), caption=x.name) for x in save_dir.glob('*labels*.png')]}) + v.log({"Labels": [v.Image(str(x), caption=x.name) for x in save_dir.glob('*labels*.jpg')]}) def plot_evolution(yaml_file='data/hyp.finetune.yaml'): # from utils.plots import *; plot_evolution() @@ -353,7 +354,7 @@ def plot_results_overlay(start=0, stop=0): # from utils.plots import *; plot_re def plot_results(start=0, stop=0, bucket='', id=(), labels=(), save_dir=''): # Plot training 'results*.txt'. from utils.plots import *; plot_results(save_dir='runs/train/exp') - fig, ax = plt.subplots(2, 5, figsize=(12, 6)) + fig, ax = plt.subplots(2, 5, figsize=(12, 6), tight_layout=True) ax = ax.ravel() s = ['Box', 'Objectness', 'Classification', 'Precision', 'Recall', 'val Box', 'val Objectness', 'val Classification', 'mAP@0.5', 'mAP@0.5:0.95'] @@ -383,6 +384,5 @@ def plot_results(start=0, stop=0, bucket='', id=(), labels=(), save_dir=''): except Exception as e: print('Warning: Plotting error for %s; %s' % (f, e)) - fig.tight_layout() ax[1].legend() fig.savefig(Path(save_dir) / 'results.png', dpi=200) From d1ad63206b84c4b82666b0a4977b5286eba26e95 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 4 Dec 2020 15:08:02 +0100 Subject: [PATCH 2502/2595] Add bias to Classify() (#1588) --- models/common.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/models/common.py b/models/common.py index f23faa1d..90edaab2 100644 --- a/models/common.py +++ b/models/common.py @@ -1,7 +1,6 @@ # This file contains modules common to various models import math - import numpy as np import torch import torch.nn as nn @@ -244,7 +243,7 @@ class Classify(nn.Module): def __init__(self, c1, c2, k=1, s=1, p=None, g=1): # ch_in, ch_out, kernel, stride, padding, groups super(Classify, self).__init__() self.aap = nn.AdaptiveAvgPool2d(1) # to x(b,c1,1,1) - self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p), groups=g, bias=False) # to x(b,c2,1,1) + self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p), groups=g) # to x(b,c2,1,1) self.flat = Flatten() def forward(self, x): From dbcb192f2d6631c5414a144e3cce17568c830042 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 5 Dec 2020 11:41:17 +0100 Subject: [PATCH 2503/2595] Increase FLOPS robustness (#1589) --- utils/torch_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index b330ca56..cde934af 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -152,7 +152,7 @@ def model_info(model, verbose=False, img_size=640): try: # FLOPS from thop import profile - stride = int(model.stride.max()) + stride = int(model.stride.max()) if hasattr(model, 'stride') else 32 img = torch.zeros((1, 3, stride, stride), device=next(model.parameters()).device) # input flops = profile(deepcopy(model), inputs=(img,), verbose=False)[0] / 1E9 * 2 # stride FLOPS img_size = img_size if isinstance(img_size, list) else [img_size, img_size] # expand if int/float From 8f95dcf2530b17150345a9b9b75576a8eca7a178 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 6 Dec 2020 10:08:15 +0100 Subject: [PATCH 2504/2595] Update download_weights.sh with usage example (#1591) --- weights/download_weights.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/weights/download_weights.sh b/weights/download_weights.sh index e3a6b388..6bb58023 100755 --- a/weights/download_weights.sh +++ b/weights/download_weights.sh @@ -1,5 +1,7 @@ #!/bin/bash # Download latest models from https://github.com/ultralytics/yolov3/releases +# Usage: +# $ bash weights/download_weights.sh python - < Date: Sun, 6 Dec 2020 11:55:27 +0100 Subject: [PATCH 2505/2595] Implement default class names (#1592) --- models/yolo.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/models/yolo.py b/models/yolo.py index 8978fb95..c388fb2d 100644 --- a/models/yolo.py +++ b/models/yolo.py @@ -1,16 +1,16 @@ import argparse import logging -import math import sys from copy import deepcopy from pathlib import Path -sys.path.append('./') # to run '$ python *.py' files in subdirectories -logger = logging.getLogger(__name__) - +import math import torch import torch.nn as nn +sys.path.append('./') # to run '$ python *.py' files in subdirectories +logger = logging.getLogger(__name__) + from models.common import Conv, Bottleneck, SPP, DWConv, Focus, BottleneckCSP, Concat, NMS, autoShape from models.experimental import MixConv2d, CrossConv, C3 from utils.autoanchor import check_anchor_order @@ -82,6 +82,7 @@ class Model(nn.Module): logger.info('Overriding model.yaml nc=%g with nc=%g' % (self.yaml['nc'], nc)) self.yaml['nc'] = nc # override yaml value self.model, self.save = parse_model(deepcopy(self.yaml), ch=[ch]) # model, savelist, ch_out + self.names = [str(i) for i in range(self.yaml['nc'])] # default names # print([x.shape for x in self.forward(torch.zeros(1, ch, 64, 64))]) # Build strides, anchors From 4a07280884ced5d5ac3b7d7a5a54dfbff4afeb84 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 6 Dec 2020 14:58:50 +0100 Subject: [PATCH 2506/2595] Pycocotools best.pt after COCO train (#1593) --- test.py | 5 ++--- train.py | 33 ++++++++++++++++++++++----------- utils/google_utils.py | 2 +- 3 files changed, 25 insertions(+), 15 deletions(-) diff --git a/test.py b/test.py index 4120057a..5b10e0f8 100644 --- a/test.py +++ b/test.py @@ -1,5 +1,4 @@ import argparse -import glob import json import os from pathlib import Path @@ -246,7 +245,7 @@ def test(data, # Save JSON if save_json and len(jdict): w = Path(weights[0] if isinstance(weights, list) else weights).stem if weights is not None else '' # weights - anno_json = glob.glob('../coco/annotations/instances_val*.json')[0] # annotations json + anno_json = '../coco/annotations/instances_val2017.json' # annotations json pred_json = str(save_dir / f"{w}_predictions.json") # predictions json print('\nEvaluating pycocotools mAP... saving %s...' % pred_json) with open(pred_json, 'w') as f: @@ -266,7 +265,7 @@ def test(data, eval.summarize() map, map50 = eval.stats[:2] # update results (mAP@0.5:0.95, mAP@0.5) except Exception as e: - print('ERROR: pycocotools unable to run: %s' % e) + print(f'pycocotools unable to run: {e}') # Return results if not training: diff --git a/train.py b/train.py index f0f778db..91c8084f 100644 --- a/train.py +++ b/train.py @@ -22,6 +22,7 @@ from torch.utils.tensorboard import SummaryWriter from tqdm import tqdm import test # import test.py to get mAP after each epoch +from models.experimental import attempt_load from models.yolo import Model from utils.autoanchor import check_anchors from utils.datasets import create_dataloader @@ -193,9 +194,9 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): # Process 0 if rank in [-1, 0]: ema.updates = start_epoch * nb // accumulate # set EMA updates - testloader = create_dataloader(test_path, imgsz_test, total_batch_size, gs, opt, + testloader = create_dataloader(test_path, imgsz_test, total_batch_size, gs, opt, # testloader hyp=hyp, cache=opt.cache_images and not opt.notest, rect=True, - rank=-1, world_size=opt.world_size, workers=opt.workers)[0] # testloader + rank=-1, world_size=opt.world_size, workers=opt.workers, pad=0.5)[0] if not opt.resume: labels = np.concatenate(dataset.labels, 0) @@ -385,15 +386,12 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): if rank in [-1, 0]: # Strip optimizers - n = opt.name if opt.name.isnumeric() else '' - fresults, flast, fbest = save_dir / f'results{n}.txt', wdir / f'last{n}.pt', wdir / f'best{n}.pt' - for f1, f2 in zip([wdir / 'last.pt', wdir / 'best.pt', results_file], [flast, fbest, fresults]): - if f1.exists(): - os.rename(f1, f2) # rename - if str(f2).endswith('.pt'): # is *.pt - strip_optimizer(f2) # strip optimizer - os.system('gsutil cp %s gs://%s/weights' % (f2, opt.bucket)) if opt.bucket else None # upload - # Finish + for f in [last, best]: + if f.exists(): # is *.pt + strip_optimizer(f) # strip optimizer + os.system('gsutil cp %s gs://%s/weights' % (f, opt.bucket)) if opt.bucket else None # upload + + # Plots if plots: plot_results(save_dir=save_dir) # save as results.png if wandb: @@ -401,6 +399,19 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): wandb.log({"Results": [wandb.Image(str(save_dir / f), caption=f) for f in files if (save_dir / f).exists()]}) logger.info('%g epochs completed in %.3f hours.\n' % (epoch - start_epoch + 1, (time.time() - t0) / 3600)) + + # Test best.pt + if opt.data.endswith('coco.yaml') and nc == 80: # if COCO + results, _, _ = test.test(opt.data, + batch_size=total_batch_size, + imgsz=imgsz_test, + model=attempt_load(best if best.exists() else last, device).half(), + single_cls=opt.single_cls, + dataloader=testloader, + save_dir=save_dir, + save_json=True, # use pycocotools + plots=False) + else: dist.destroy_process_group() diff --git a/utils/google_utils.py b/utils/google_utils.py index d50198fe..7f07c201 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -17,7 +17,7 @@ def gsutil_getsize(url=''): def attempt_download(weights): # Attempt to download pretrained weights if not found locally - weights = weights.strip().replace("'", '') + weights = str(weights).strip().replace("'", '') file = Path(weights).name.lower() msg = weights + ' missing, try downloading from https://github.com/ultralytics/yolov3/releases/' From e285034b4b6992605833d4ee32d9df7177d4e32b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 6 Dec 2020 18:01:13 +0100 Subject: [PATCH 2507/2595] Hub device mismatch bug fix (#1594) --- utils/general.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/general.py b/utils/general.py index fa47289e..aac0e44b 100755 --- a/utils/general.py +++ b/utils/general.py @@ -265,7 +265,7 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, classes=None, detections with shape: nx6 (x1, y1, x2, y2, conf, cls) """ - nc = prediction[0].shape[1] - 5 # number of classes + nc = prediction.shape[2] - 5 # number of classes xc = prediction[..., 4] > conf_thres # candidates # Settings @@ -277,7 +277,7 @@ def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, classes=None, merge = False # use merge-NMS t = time.time() - output = [torch.zeros(0, 6)] * prediction.shape[0] + output = [torch.zeros((0, 6), device=prediction.device)] * prediction.shape[0] for xi, x in enumerate(prediction): # image index, image inference # Apply constraints # x[((x[..., 2:4] < min_wh) | (x[..., 2:4] > max_wh)).any(1), 4] = 0 # width-height From ce9feb42b4059da3539e1596d48dee1ac12341c4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 8 Dec 2020 17:03:22 -0800 Subject: [PATCH 2508/2595] Create codeql-analysis.yml (#1597) * Create codeql-analysis.yml * Update ci-testing.yml * Update codeql-analysis.yml * Update ci-testing.yml --- .github/workflows/ci-testing.yml | 5 ++- .github/workflows/codeql-analysis.yml | 54 +++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/codeql-analysis.yml diff --git a/.github/workflows/ci-testing.yml b/.github/workflows/ci-testing.yml index 69a5f239..1ae0bbb5 100644 --- a/.github/workflows/ci-testing.yml +++ b/.github/workflows/ci-testing.yml @@ -2,9 +2,12 @@ name: CI CPU testing on: # https://help.github.com/en/actions/reference/events-that-trigger-workflows push: + branches: [ master ] pull_request: + # The branches below must be a subset of the branches above + branches: [ master ] schedule: - - cron: "0 0 * * *" + - cron: '0 0 * * *' # Runs at 00:00 UTC every day jobs: cpu-tests: diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 00000000..1f078885 --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,54 @@ +# This action runs GitHub's industry-leading static analysis engine, CodeQL, against a repository's source code to find security vulnerabilities. +# https://github.com/github/codeql-action + +name: "CodeQL" + +on: + schedule: + - cron: '0 0 1 * *' # Runs at 00:00 UTC on the 1st of every month + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + language: [ 'python' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] + # Learn more: + # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v1 + + # ℹ️ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl + + # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language + + #- run: | + # make bootstrap + # make release + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 From 7e846c7d3c1ec5d2f5669767c01e451279cd9efe Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 8 Dec 2020 17:40:19 -0800 Subject: [PATCH 2509/2595] Reinstate PR curve sentinel values (#1598) --- utils/metrics.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/utils/metrics.py b/utils/metrics.py index af32ddc5..99d5bcfa 100644 --- a/utils/metrics.py +++ b/utils/metrics.py @@ -77,18 +77,17 @@ def ap_per_class(tp, conf, pred_cls, target_cls, plot=False, save_dir='precision def compute_ap(recall, precision): - """ Compute the average precision, given the recall and precision curves. - Source: https://github.com/rbgirshick/py-faster-rcnn. + """ Compute the average precision, given the recall and precision curves # Arguments - recall: The recall curve (list). - precision: The precision curve (list). + recall: The recall curve (list) + precision: The precision curve (list) # Returns - The average precision as computed in py-faster-rcnn. + Average precision, precision curve, recall curve """ # Append sentinel values to beginning and end - mrec = recall # np.concatenate(([0.], recall, [recall[-1] + 1E-3])) - mpre = precision # np.concatenate(([0.], precision, [0.])) + mrec = np.concatenate(([0.], recall, [recall[-1] + 0.01])) + mpre = np.concatenate(([1.], precision, [0.])) # Compute the precision envelope mpre = np.flip(np.maximum.accumulate(np.flip(mpre))) From 8d236eea3c2594cbc4ad9a3574a45bfa762a5750 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 8 Dec 2020 18:16:12 -0800 Subject: [PATCH 2510/2595] Hybrid auto-labelling support (#1599) * Introduce hybrid auto-labelling support * cleanup --- test.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/test.py b/test.py index 5b10e0f8..5c8a70b9 100644 --- a/test.py +++ b/test.py @@ -33,7 +33,8 @@ def test(data, dataloader=None, save_dir=Path(''), # for saving images save_txt=False, # for auto-labelling - save_conf=False, + save_hybrid=False, # for hybrid auto-labelling + save_conf=False, # save auto-label confidences plots=True, log_imgs=0): # number of logged images @@ -45,7 +46,6 @@ def test(data, else: # called directly set_logging() device = select_device(opt.device, batch_size=batch_size) - save_txt = opt.save_txt # save *.txt labels # Directories save_dir = Path(increment_path(Path(opt.project) / opt.name, exist_ok=opt.exist_ok)) # increment run @@ -115,7 +115,7 @@ def test(data, # Run NMS targets[:, 2:] *= torch.Tensor([width, height, width, height]).to(device) # to pixels - lb = [targets[targets[:, 0] == i, 1:] for i in range(nb)] if save_txt else [] # for autolabelling + lb = [targets[targets[:, 0] == i, 1:] for i in range(nb)] if save_hybrid else [] # for autolabelling t = time_synchronized() output = non_max_suppression(inf_out, conf_thres=conf_thres, iou_thres=iou_thres, labels=lb) t1 += time_synchronized() - t @@ -292,6 +292,7 @@ if __name__ == '__main__': parser.add_argument('--augment', action='store_true', help='augmented inference') parser.add_argument('--verbose', action='store_true', help='report mAP by class') parser.add_argument('--save-txt', action='store_true', help='save results to *.txt') + parser.add_argument('--save-hybrid', action='store_true', help='save label+prediction hybrid results to *.txt') parser.add_argument('--save-conf', action='store_true', help='save confidences in --save-txt labels') parser.add_argument('--save-json', action='store_true', help='save a cocoapi-compatible JSON results file') parser.add_argument('--project', default='runs/test', help='save to project/name') @@ -313,7 +314,8 @@ if __name__ == '__main__': opt.single_cls, opt.augment, opt.verbose, - save_txt=opt.save_txt, + save_txt=opt.save_txt | opt.save_hybrid, + save_hybrid=opt.save_hybrid, save_conf=opt.save_conf, ) From 6b1fe3e9dd3dd8746ada7905b6673edad8043ad2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 8 Dec 2020 18:46:33 -0800 Subject: [PATCH 2511/2595] Normalized mosaic plotting bug fix (#1600) --- utils/plots.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/plots.py b/utils/plots.py index 12815ea2..8fff8ec6 100644 --- a/utils/plots.py +++ b/utils/plots.py @@ -141,7 +141,7 @@ def plot_images(images, targets, paths=None, fname='images.jpg', names=None, max conf = None if labels else image_targets[:, 6] # check for confidence presence (label vs pred) if boxes.shape[1]: - if boxes.max() <= 1: # if normalized + if boxes.max() <= 1.01: # if normalized with tolerance 0.01 boxes[[0, 2]] *= w # scale to pixels boxes[[1, 3]] *= h elif scale_factor < 1: # absolute coords need scale if image scales From 61fb2dbd20dd3085114e4bdf4efdecb89a4cdce2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 9 Dec 2020 07:43:58 -0800 Subject: [PATCH 2512/2595] Simplify autoshape() post-process (#1603) * Simplify autoshape() post-process * cleanup --- hubconf.py | 2 +- models/common.py | 7 +++---- requirements.txt | 4 ++-- utils/general.py | 2 +- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/hubconf.py b/hubconf.py index 9067d0bd..a0b66dc1 100644 --- a/hubconf.py +++ b/hubconf.py @@ -94,7 +94,7 @@ def yolov3_tiny(pretrained=False, channels=3, classes=80): if __name__ == '__main__': model = create(name='yolov3', pretrained=True, channels=3, classes=80) # example - model = model.fuse().autoshape() # for PIL/cv2/np inputs and NMS + model = model.autoshape() # for PIL/cv2/np inputs and NMS # Verify inference from PIL import Image diff --git a/models/common.py b/models/common.py index 90edaab2..f26ffdd0 100644 --- a/models/common.py +++ b/models/common.py @@ -167,8 +167,7 @@ class autoShape(nn.Module): # Post-process for i in batch: - if y[i] is not None: - y[i][:, :4] = scale_coords(shape1, y[i][:, :4], shape0[i]) + scale_coords(shape1, y[i][:, :4], shape0[i]) return Detections(imgs, y, self.names) @@ -177,13 +176,13 @@ class Detections: # detections class for YOLOv5 inference results def __init__(self, imgs, pred, names=None): super(Detections, self).__init__() + d = pred[0].device # device + gn = [torch.tensor([*[im.shape[i] for i in [1, 0, 1, 0]], 1., 1.], device=d) for im in imgs] # normalizations self.imgs = imgs # list of images as numpy arrays self.pred = pred # list of tensors pred[0] = (xyxy, conf, cls) self.names = names # class names self.xyxy = pred # xyxy pixels self.xywh = [xyxy2xywh(x) for x in pred] # xywh pixels - d = pred[0].device # device - gn = [torch.tensor([*[im.shape[i] for i in [1, 0, 1, 0]], 1., 1.], device=d) for im in imgs] # normalizations self.xyxyn = [x / g for x, g in zip(self.xyxy, gn)] # xyxy normalized self.xywhn = [x / g for x, g in zip(self.xywh, gn)] # xywh normalized self.n = len(self.pred) diff --git a/requirements.txt b/requirements.txt index f9fc9fc2..4cb16138 100755 --- a/requirements.txt +++ b/requirements.txt @@ -26,5 +26,5 @@ pandas # scikit-learn==0.19.2 # for coreml quantization # extras -------------------------------------- -# thop # FLOPS computation -# pycocotools>=2.0 # COCO mAP +thop # FLOPS computation +pycocotools>=2.0 # COCO mAP diff --git a/utils/general.py b/utils/general.py index aac0e44b..18285512 100755 --- a/utils/general.py +++ b/utils/general.py @@ -258,7 +258,7 @@ def wh_iou(wh1, wh2): return inter / (wh1.prod(2) + wh2.prod(2) - inter) # iou = inter / (area1 + area2 - inter) -def non_max_suppression(prediction, conf_thres=0.1, iou_thres=0.6, classes=None, agnostic=False, labels=()): +def non_max_suppression(prediction, conf_thres=0.25, iou_thres=0.45, classes=None, agnostic=False, labels=()): """Performs Non-Maximum Suppression (NMS) on inference results Returns: From 883a5aff5a7f9bb9f22a5999088a769cb0e62431 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 10 Dec 2020 13:07:10 -0800 Subject: [PATCH 2513/2595] FReLU bias=False bug fix (#1607) --- utils/activations.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/activations.py b/utils/activations.py index ba6b854d..24f5a30f 100644 --- a/utils/activations.py +++ b/utils/activations.py @@ -65,7 +65,7 @@ class MemoryEfficientMish(nn.Module): class FReLU(nn.Module): def __init__(self, c1, k=3): # ch_in, kernel super().__init__() - self.conv = nn.Conv2d(c1, c1, k, 1, 1, groups=c1) + self.conv = nn.Conv2d(c1, c1, k, 1, 1, groups=c1, bias=False) self.bn = nn.BatchNorm2d(c1) def forward(self, x): From 1afde520d1c7920c327a6e1ea38ec6c944880c02 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 19 Dec 2020 19:01:15 -0800 Subject: [PATCH 2514/2595] Simplified PyTorch Hub loading of custom models (#1610) * Simplified PyTorch Hub loading of custom models * Update hubconf.py --- hubconf.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/hubconf.py b/hubconf.py index a0b66dc1..df7796d4 100644 --- a/hubconf.py +++ b/hubconf.py @@ -92,8 +92,29 @@ def yolov3_tiny(pretrained=False, channels=3, classes=80): return create('yolov3-tiny', pretrained, channels, classes) +def custom(path_or_model='path/to/model.pt'): + """YOLOv3-custom model from https://github.com/ultralytics/yolov3 + + Arguments (3 options): + path_or_model (str): 'path/to/model.pt' + path_or_model (dict): torch.load('path/to/model.pt') + path_or_model (nn.Module): torch.load('path/to/model.pt')['model'] + Returns: + pytorch model + """ + model = torch.load(path_or_model) if isinstance(path_or_model, str) else path_or_model # load checkpoint + if isinstance(model, dict): + model = model['model'] # load model + + hub_model = Model(model.yaml).to(next(model.parameters()).device) # create + hub_model.load_state_dict(model.float().state_dict()) # load state_dict + hub_model.names = model.names # class names + return hub_model + + if __name__ == '__main__': - model = create(name='yolov3', pretrained=True, channels=3, classes=80) # example + model = create(name='yolov3', pretrained=True, channels=3, classes=80) # pretrained example + # model = custom(path_or_model='path/to/model.pt') # custom example model = model.autoshape() # for PIL/cv2/np inputs and NMS # Verify inference From a21595e2e22e650b1e9f591c336e516b50a29b8f Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Sat, 19 Dec 2020 19:37:04 -0800 Subject: [PATCH 2515/2595] Create Dependabot config file (#1615) * Create Dependabot config file * Update greetings.yml * Update greetings.yml * Update dependabot.yml Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Co-authored-by: Glenn Jocher --- .github/dependabot.yml | 12 ++++++++++++ .github/workflows/greetings.yml | 10 +++++----- 2 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..f0b5bc90 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,12 @@ +version: 2 +updates: +- package-ecosystem: pip + directory: "/" + schedule: + interval: daily + time: "04:00" + open-pull-requests-limit: 10 + reviewers: + - glenn-jocher + labels: + - dependencies diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index 2cbd2080..1d6ec61d 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -10,8 +10,8 @@ jobs: with: repo-token: ${{ secrets.GITHUB_TOKEN }} pr-message: | - Hello @${{ github.actor }}, thank you for submitting a PR! To allow your work to be integrated as seamlessly as possible, we advise you to: - - Verify your PR is **up-to-date with origin/master.** If your PR is behind origin/master update by running the following, replacing 'feature' with the name of your local branch: + 👋 Hello @${{ github.actor }}, thank you for submitting a 🚀 PR! To allow your work to be integrated as seamlessly as possible, we advise you to: + - ✅ Verify your PR is **up-to-date with origin/master.** If your PR is behind origin/master update by running the following, replacing 'feature' with the name of your local branch: ```bash git remote add upstream https://github.com/ultralytics/yolov3.git git fetch upstream @@ -19,11 +19,11 @@ jobs: git rebase upstream/master git push -u origin -f ``` - - Verify all Continuous Integration (CI) **checks are passing**. - - Reduce changes to the absolute **minimum** required for your bug fix or feature addition. _"It is not daily increase but daily decrease, hack away the unessential. The closer to the source, the less wastage there is."_ -Bruce Lee + - ✅ Verify all Continuous Integration (CI) **checks are passing**. + - ✅ Reduce changes to the absolute **minimum** required for your bug fix or feature addition. _"It is not daily increase but daily decrease, hack away the unessential. The closer to the source, the less wastage there is."_ -Bruce Lee issue-message: | - Hello @${{ github.actor }}, thank you for your interest in 🚀 YOLOv3! Please visit our ⭐️ [Tutorials](https://github.com/ultralytics/yolov3/wiki#tutorials) to get started, where you can find quickstart guides for simple tasks like [Custom Data Training](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) all the way to advanced concepts like [Hyperparameter Evolution](https://github.com/ultralytics/yolov5/issues/607). + 👋 Hello @${{ github.actor }}, thank you for your interest in 🚀 YOLOv3! Please visit our ⭐️ [Tutorials](https://github.com/ultralytics/yolov3/wiki#tutorials) to get started, where you can find quickstart guides for simple tasks like [Custom Data Training](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) all the way to advanced concepts like [Hyperparameter Evolution](https://github.com/ultralytics/yolov5/issues/607). If this is a 🐛 Bug Report, please provide screenshots and **minimum viable code to reproduce your issue**, otherwise we can not help you. From 7bff2d369a5966fe1c7341292ea21073c61ce777 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 22 Dec 2020 17:25:40 -0800 Subject: [PATCH 2516/2595] Update Dependabot config file (#1615) --- .github/dependabot.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index f0b5bc90..99106891 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -3,7 +3,7 @@ updates: - package-ecosystem: pip directory: "/" schedule: - interval: daily + interval: weekly time: "04:00" open-pull-requests-limit: 10 reviewers: From 1c39505d4eb0d6e4c81c38849338b79bb11efe2f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 22 Dec 2020 17:29:54 -0800 Subject: [PATCH 2517/2595] leaf Variable inplace bug fix (#1619) --- models/yolo.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/yolo.py b/models/yolo.py index c388fb2d..191bd77c 100644 --- a/models/yolo.py +++ b/models/yolo.py @@ -148,8 +148,8 @@ class Model(nn.Module): m = self.model[-1] # Detect() module for mi, s in zip(m.m, m.stride): # from b = mi.bias.view(m.na, -1) # conv.bias(255) to (3,85) - b[:, 4] += math.log(8 / (640 / s) ** 2) # obj (8 objects per 640 image) - b[:, 5:] += math.log(0.6 / (m.nc - 0.99)) if cf is None else torch.log(cf / cf.sum()) # cls + b.data[:, 4] += math.log(8 / (640 / s) ** 2) # obj (8 objects per 640 image) + b.data[:, 5:] += math.log(0.6 / (m.nc - 0.99)) if cf is None else torch.log(cf / cf.sum()) # cls mi.bias = torch.nn.Parameter(b.view(-1), requires_grad=True) def _print_biases(self): From 6ba36265fbcf7218ff69032109c3ee74709633e1 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 22 Dec 2020 17:48:40 -0800 Subject: [PATCH 2518/2595] FROM nvcr.io/nvidia/pytorch:20.12-py3 (#1620) --- Dockerfile | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index e514893d..6727548f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,13 @@ # Start FROM Nvidia PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorch -FROM nvcr.io/nvidia/pytorch:20.10-py3 +FROM nvcr.io/nvidia/pytorch:20.12-py3 -# Install dependencies +# Install linux packages +RUN apt update && apt install -y screen libgl1-mesa-glx + +# Install python dependencies RUN pip install --upgrade pip -# COPY requirements.txt . -# RUN pip install -r requirements.txt +COPY requirements.txt . +RUN pip install -r requirements.txt RUN pip install gsutil # Create working directory From 865e046e11783bf13fba71634b26a3260bd90c5a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 2 Jan 2021 13:04:12 -0800 Subject: [PATCH 2519/2595] Update yolov3-tiny.yaml --- models/yolov3-tiny.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/yolov3-tiny.yaml b/models/yolov3-tiny.yaml index 85f9fbd4..ff7638ca 100644 --- a/models/yolov3-tiny.yaml +++ b/models/yolov3-tiny.yaml @@ -22,7 +22,7 @@ backbone: [-1, 1, Conv, [256, 3, 1]], [-1, 1, nn.MaxPool2d, [2, 2, 0]], # 9-P5/32 [-1, 1, Conv, [512, 3, 1]], - [-1, 1, nn.ZeroPad2d, [0, 1, 0, 1]], # 11 + [-1, 1, nn.ZeroPad2d, [[0, 1, 0, 1]]], # 11 [-1, 1, nn.MaxPool2d, [2, 1, 0]], # 12 ] From 7d9535f80efe6fe7b78dfc5da2f3d9fa6e606a4f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 3 Jan 2021 11:42:10 -0800 Subject: [PATCH 2520/2595] Update yolo.py nn.zeroPad2d() (#1638) --- models/yolo.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/models/yolo.py b/models/yolo.py index 191bd77c..7ef9d501 100644 --- a/models/yolo.py +++ b/models/yolo.py @@ -240,9 +240,6 @@ def parse_model(d, ch): # model_dict, input_channels(3) n = 1 elif m is nn.BatchNorm2d: args = [ch[f]] - elif m is nn.ZeroPad2d: - args = [args] - c2 = ch[f] elif m is Concat: c2 = sum([ch[-1 if x == -1 else x + 1] for x in f]) elif m is Detect: From 84ad6080ae1471b3835e60e3ecb1f6a95e9394d4 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 3 Jan 2021 14:37:22 -0800 Subject: [PATCH 2521/2595] Update Torch CUDA Synchronize (#1637) --- utils/torch_utils.py | 91 ++++++++++++++++++++++++++++++++------------ 1 file changed, 67 insertions(+), 24 deletions(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index cde934af..69a31213 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -13,6 +13,10 @@ import torch.nn as nn import torch.nn.functional as F import torchvision +try: + import thop # for FLOPS computation +except ImportError: + thop = None logger = logging.getLogger(__name__) @@ -32,44 +36,83 @@ def init_torch_seeds(seed=0): # Speed-reproducibility tradeoff https://pytorch.org/docs/stable/notes/randomness.html torch.manual_seed(seed) if seed == 0: # slower, more reproducible - cudnn.deterministic = True - cudnn.benchmark = False + cudnn.benchmark, cudnn.deterministic = False, True else: # faster, less reproducible - cudnn.deterministic = False - cudnn.benchmark = True + cudnn.benchmark, cudnn.deterministic = True, False def select_device(device='', batch_size=None): # device = 'cpu' or '0' or '0,1,2,3' - cpu_request = device.lower() == 'cpu' - if device and not cpu_request: # if device requested other than 'cpu' + s = f'Using torch {torch.__version__} ' # string + cpu = device.lower() == 'cpu' + if cpu: + os.environ['CUDA_VISIBLE_DEVICES'] = '-1' # force torch.cuda.is_available() = False + elif device: # non-cpu device requested os.environ['CUDA_VISIBLE_DEVICES'] = device # set environment variable - assert torch.cuda.is_available(), 'CUDA unavailable, invalid device %s requested' % device # check availablity + assert torch.cuda.is_available(), f'CUDA unavailable, invalid device {device} requested' # check availability - cuda = False if cpu_request else torch.cuda.is_available() + cuda = torch.cuda.is_available() and not cpu if cuda: - c = 1024 ** 2 # bytes to MB - ng = torch.cuda.device_count() - if ng > 1 and batch_size: # check that batch_size is compatible with device_count - assert batch_size % ng == 0, 'batch-size %g not multiple of GPU count %g' % (batch_size, ng) - x = [torch.cuda.get_device_properties(i) for i in range(ng)] - s = f'Using torch {torch.__version__} ' - for i in range(0, ng): - if i == 1: - s = ' ' * len(s) - logger.info("%sCUDA:%g (%s, %dMB)" % (s, i, x[i].name, x[i].total_memory / c)) + n = torch.cuda.device_count() + if n > 1 and batch_size: # check that batch_size is compatible with device_count + assert batch_size % n == 0, f'batch-size {batch_size} not multiple of GPU count {n}' + space = ' ' * len(s) + for i, d in enumerate(device.split(',') if device else range(n)): + p = torch.cuda.get_device_properties(i) + s += f"{'' if i == 0 else space}CUDA:{d} ({p.name}, {p.total_memory / 1024 ** 2}MB)\n" # bytes to MB else: - logger.info(f'Using torch {torch.__version__} CPU') + s += 'CPU' - logger.info('') # skip a line + logger.info(f'{s}\n') # skip a line return torch.device('cuda:0' if cuda else 'cpu') def time_synchronized(): - torch.cuda.synchronize() if torch.cuda.is_available() else None + # pytorch-accurate time + if torch.cuda.is_available(): + torch.cuda.synchronize() return time.time() +def profile(x, ops, n=100, device=None): + # profile a pytorch module or list of modules. Example usage: + # x = torch.randn(16, 3, 640, 640) # input + # m1 = lambda x: x * torch.sigmoid(x) + # m2 = nn.SiLU() + # profile(x, [m1, m2], n=100) # profile speed over 100 iterations + + device = device or torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') + x = x.to(device) + x.requires_grad = True + print(torch.__version__, device.type, torch.cuda.get_device_properties(0) if device.type == 'cuda' else '') + print(f"\n{'Params':>12s}{'GFLOPS':>12s}{'forward (ms)':>16s}{'backward (ms)':>16s}{'input':>24s}{'output':>24s}") + for m in ops if isinstance(ops, list) else [ops]: + m = m.to(device) if hasattr(m, 'to') else m # device + m = m.half() if hasattr(m, 'half') and isinstance(x, torch.Tensor) and x.dtype is torch.float16 else m # type + dtf, dtb, t = 0., 0., [0., 0., 0.] # dt forward, backward + try: + flops = thop.profile(m, inputs=(x,), verbose=False)[0] / 1E9 * 2 # GFLOPS + except: + flops = 0 + + for _ in range(n): + t[0] = time_synchronized() + y = m(x) + t[1] = time_synchronized() + try: + _ = y.sum().backward() + t[2] = time_synchronized() + except: # no backward method + t[2] = float('nan') + dtf += (t[1] - t[0]) * 1000 / n # ms per op forward + dtb += (t[2] - t[1]) * 1000 / n # ms per op backward + + s_in = tuple(x.shape) if isinstance(x, torch.Tensor) else 'list' + s_out = tuple(y.shape) if isinstance(y, torch.Tensor) else 'list' + p = sum(list(x.numel() for x in m.parameters())) if isinstance(m, nn.Module) else 0 # parameters + print(f'{p:12.4g}{flops:12.4g}{dtf:16.4g}{dtb:16.4g}{str(s_in):>24s}{str(s_out):>24s}') + + def is_parallel(model): return type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) @@ -153,10 +196,10 @@ def model_info(model, verbose=False, img_size=640): try: # FLOPS from thop import profile stride = int(model.stride.max()) if hasattr(model, 'stride') else 32 - img = torch.zeros((1, 3, stride, stride), device=next(model.parameters()).device) # input - flops = profile(deepcopy(model), inputs=(img,), verbose=False)[0] / 1E9 * 2 # stride FLOPS + img = torch.zeros((1, model.yaml.get('ch', 3), stride, stride), device=next(model.parameters()).device) # input + flops = profile(deepcopy(model), inputs=(img,), verbose=False)[0] / 1E9 * 2 # stride GFLOPS img_size = img_size if isinstance(img_size, list) else [img_size, img_size] # expand if int/float - fs = ', %.1f GFLOPS' % (flops * img_size[0] / stride * img_size[1] / stride) # 640x640 FLOPS + fs = ', %.1f GFLOPS' % (flops * img_size[0] / stride * img_size[1] / stride) # 640x640 GFLOPS except (ImportError, Exception): fs = '' From 4f2341c0ad0d0cb15dad0f20bc6f4d92380804ee Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 6 Jan 2021 16:39:03 -0800 Subject: [PATCH 2522/2595] W&B ID reset on training completion (#1852) --- utils/general.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/general.py b/utils/general.py index 18285512..22647f6c 100755 --- a/utils/general.py +++ b/utils/general.py @@ -350,8 +350,8 @@ def non_max_suppression(prediction, conf_thres=0.25, iou_thres=0.45, classes=Non def strip_optimizer(f='weights/best.pt', s=''): # from utils.general import *; strip_optimizer() # Strip optimizer from 'f' to finalize training, optionally save as 's' x = torch.load(f, map_location=torch.device('cpu')) - x['optimizer'] = None - x['training_results'] = None + for key in 'optimizer', 'training_results', 'wandb_id': + x[key] = None x['epoch'] = -1 x['model'].half() # to FP16 for p in x['model'].parameters(): From d88829cebe0b9984a9d85f34dc5c95313ff77e65 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 7 Jan 2021 11:25:15 -0800 Subject: [PATCH 2523/2595] actions/stale@v3 (#1647) --- .github/workflows/stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index d4126b8b..0a094e23 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -7,7 +7,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v1 + - uses: actions/stale@v3 with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.' From d9b29951c15d7d6366a92cf03d6262ba8782172d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 8 Jan 2021 10:57:40 -0800 Subject: [PATCH 2524/2595] Update google_utils.py --- utils/google_utils.py | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/utils/google_utils.py b/utils/google_utils.py index 7f07c201..4238cf8c 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -6,6 +6,7 @@ import subprocess import time from pathlib import Path +import requests import torch @@ -21,21 +22,14 @@ def attempt_download(weights): file = Path(weights).name.lower() msg = weights + ' missing, try downloading from https://github.com/ultralytics/yolov3/releases/' - models = ['yolov3.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt'] # available models - redundant = False # offer second download option - - if file in models and not os.path.isfile(weights): - # Google Drive - # d = {'yolov5s.pt': '1R5T6rIyy3lLwgFXNms8whc-387H0tMQO', - # 'yolov5m.pt': '1vobuEExpWQVpXExsJ2w-Mbf3HJjWkQJr', - # 'yolov5l.pt': '1hrlqD1Wdei7UT4OgT785BEk1JwnSvNEV', - # 'yolov5x.pt': '1mM8aZJlWTxOg7BZJvNUMrTnA2AbeCVzS'} - # r = gdrive_download(id=d[file], name=weights) if file in d else 1 - # if r == 0 and os.path.exists(weights) and os.path.getsize(weights) > 1E6: # check - # return + response = requests.get('https://api.github.com/repos/ultralytics/yolov3/releases/latest').json() # github api + assets = [x['name'] for x in response['assets']] # release assets ['yolov3.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt'] + redundant = False # second download option + if file in assets and not os.path.isfile(weights): try: # GitHub - url = 'https://github.com/ultralytics/yolov3/releases/download/v1.0/' + file + tag = response['tag_name'] # i.e. 'v1.0' + url = f'https://github.com/ultralytics/yolov3/releases/download/{tag}/{file}' print('Downloading %s to %s...' % (url, weights)) torch.hub.download_url_to_file(url, weights) assert os.path.exists(weights) and os.path.getsize(weights) > 1E6 # check @@ -53,10 +47,9 @@ def attempt_download(weights): return -def gdrive_download(id='1n_oKgR81BJtqk75b00eAjdv03qVCQn2f', name='coco128.zip'): +def gdrive_download(id='16TiPfZj7htmTyhntwcZyEEAejOUxuT6m', name='tmp.zip'): # Downloads a file from Google Drive. from utils.google_utils import *; gdrive_download() t = time.time() - print('Downloading https://drive.google.com/uc?export=download&id=%s as %s... ' % (id, name), end='') os.remove(name) if os.path.exists(name) else None # remove existing os.remove('cookie') if os.path.exists('cookie') else None From 162773d968bb77f5deb7a2b3b601e4428b2f678b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 9 Jan 2021 21:34:12 -0800 Subject: [PATCH 2525/2595] Update torch_utils.py (#1652) --- utils/torch_utils.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 69a31213..82fc731c 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -3,9 +3,11 @@ import logging import math import os +import subprocess import time from contextlib import contextmanager from copy import deepcopy +from pathlib import Path import torch import torch.backends.cudnn as cudnn @@ -41,9 +43,17 @@ def init_torch_seeds(seed=0): cudnn.benchmark, cudnn.deterministic = True, False +def git_describe(): + # return human-readable git description, i.e. v5.0-5-g3e25f1e https://git-scm.com/docs/git-describe + if Path('.git').exists(): + return subprocess.check_output('git describe --tags --long --always', shell=True).decode('utf-8')[:-1] + else: + return '' + + def select_device(device='', batch_size=None): # device = 'cpu' or '0' or '0,1,2,3' - s = f'Using torch {torch.__version__} ' # string + s = f'YOLOv3 {git_describe()} torch {torch.__version__} ' # string cpu = device.lower() == 'cpu' if cpu: os.environ['CUDA_VISIBLE_DEVICES'] = '-1' # force torch.cuda.is_available() = False @@ -61,9 +71,9 @@ def select_device(device='', batch_size=None): p = torch.cuda.get_device_properties(i) s += f"{'' if i == 0 else space}CUDA:{d} ({p.name}, {p.total_memory / 1024 ** 2}MB)\n" # bytes to MB else: - s += 'CPU' + s += 'CPU\n' - logger.info(f'{s}\n') # skip a line + logger.info(s) # skip a line return torch.device('cuda:0' if cuda else 'cpu') @@ -225,8 +235,8 @@ def load_classifier(name='resnet101', n=2): return model -def scale_img(img, ratio=1.0, same_shape=False): # img(16,3,256,416), r=ratio - # scales img(bs,3,y,x) by ratio +def scale_img(img, ratio=1.0, same_shape=False, gs=32): # img(16,3,256,416) + # scales img(bs,3,y,x) by ratio constrained to gs-multiple if ratio == 1.0: return img else: @@ -234,7 +244,6 @@ def scale_img(img, ratio=1.0, same_shape=False): # img(16,3,256,416), r=ratio s = (int(h * ratio), int(w * ratio)) # new size img = F.interpolate(img, size=s, mode='bilinear', align_corners=False) # resize if not same_shape: # pad/crop img - gs = 32 # (pixels) grid size h, w = [math.ceil(x * ratio / gs) * gs for x in (h, w)] return F.pad(img, [0, w - s[1], 0, h - s[0]], value=0.447) # value = imagenet mean From 0bc1db58d82c2482bfac1e32a3a43cfd5a533da2 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 10 Jan 2021 12:02:55 -0800 Subject: [PATCH 2526/2595] GitHub API rate limit fix (#1653) --- utils/google_utils.py | 87 ++++++++++++++++++++++--------------------- 1 file changed, 45 insertions(+), 42 deletions(-) diff --git a/utils/google_utils.py b/utils/google_utils.py index 4238cf8c..c7497414 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -12,71 +12,74 @@ import torch def gsutil_getsize(url=''): # gs://bucket/file size https://cloud.google.com/storage/docs/gsutil/commands/du - s = subprocess.check_output('gsutil du %s' % url, shell=True).decode('utf-8') + s = subprocess.check_output(f'gsutil du {url}', shell=True).decode('utf-8') return eval(s.split(' ')[0]) if len(s) else 0 # bytes -def attempt_download(weights): - # Attempt to download pretrained weights if not found locally - weights = str(weights).strip().replace("'", '') - file = Path(weights).name.lower() +def attempt_download(file): + # Attempt file download if does not exist + file = Path(str(file).strip().replace("'", '').lower()) - msg = weights + ' missing, try downloading from https://github.com/ultralytics/yolov3/releases/' - response = requests.get('https://api.github.com/repos/ultralytics/yolov3/releases/latest').json() # github api - assets = [x['name'] for x in response['assets']] # release assets ['yolov3.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt'] - redundant = False # second download option + if not file.exists(): + response = requests.get('https://api.github.com/repos/ultralytics/yolov3/releases/latest').json() # github api + assets = [x['name'] for x in response['assets']] # release assets ['yolov3.pt', 'yolov3-spp.pt', ...] + name = file.name - if file in assets and not os.path.isfile(weights): - try: # GitHub - tag = response['tag_name'] # i.e. 'v1.0' - url = f'https://github.com/ultralytics/yolov3/releases/download/{tag}/{file}' - print('Downloading %s to %s...' % (url, weights)) - torch.hub.download_url_to_file(url, weights) - assert os.path.exists(weights) and os.path.getsize(weights) > 1E6 # check - except Exception as e: # GCP - print('Download error: %s' % e) - assert redundant, 'No secondary mirror' - url = 'https://storage.googleapis.com/ultralytics/yolov3/ckpt/' + file - print('Downloading %s to %s...' % (url, weights)) - r = os.system('curl -L %s -o %s' % (url, weights)) # torch.hub.download_url_to_file(url, weights) - finally: - if not (os.path.exists(weights) and os.path.getsize(weights) > 1E6): # check - os.remove(weights) if os.path.exists(weights) else None # remove partial downloads - print('ERROR: Download failure: %s' % msg) - print('') - return + if name in assets: + msg = f'{file} missing, try downloading from https://github.com/ultralytics/yolov3/releases/' + redundant = False # second download option + try: # GitHub + tag = response['tag_name'] # i.e. 'v1.0' + url = f'https://github.com/ultralytics/yolov3/releases/download/{tag}/{name}' + print(f'Downloading {url} to {file}...') + torch.hub.download_url_to_file(url, file) + assert file.exists() and file.stat().st_size > 1E6 # check + except Exception as e: # GCP + print(f'Download error: {e}') + assert redundant, 'No secondary mirror' + url = f'https://storage.googleapis.com/ultralytics/yolov3/ckpt/{name}' + print(f'Downloading {url} to {file}...') + os.system(f'curl -L {url} -o {file}') # torch.hub.download_url_to_file(url, weights) + finally: + if not file.exists() or file.stat().st_size < 1E6: # check + file.unlink(missing_ok=True) # remove partial downloads + print(f'ERROR: Download failure: {msg}') + print('') + return -def gdrive_download(id='16TiPfZj7htmTyhntwcZyEEAejOUxuT6m', name='tmp.zip'): - # Downloads a file from Google Drive. from utils.google_utils import *; gdrive_download() +def gdrive_download(id='16TiPfZj7htmTyhntwcZyEEAejOUxuT6m', file='tmp.zip'): + # Downloads a file from Google Drive. from yolov3.utils.google_utils import *; gdrive_download() t = time.time() - print('Downloading https://drive.google.com/uc?export=download&id=%s as %s... ' % (id, name), end='') - os.remove(name) if os.path.exists(name) else None # remove existing - os.remove('cookie') if os.path.exists('cookie') else None + file = Path(file) + cookie = Path('cookie') # gdrive cookie + print(f'Downloading https://drive.google.com/uc?export=download&id={id} as {file}... ', end='') + file.unlink(missing_ok=True) # remove existing file + cookie.unlink(missing_ok=True) # remove existing cookie # Attempt file download out = "NUL" if platform.system() == "Windows" else "/dev/null" - os.system('curl -c ./cookie -s -L "drive.google.com/uc?export=download&id=%s" > %s ' % (id, out)) + os.system(f'curl -c ./cookie -s -L "drive.google.com/uc?export=download&id={id}" > {out}') if os.path.exists('cookie'): # large file - s = 'curl -Lb ./cookie "drive.google.com/uc?export=download&confirm=%s&id=%s" -o %s' % (get_token(), id, name) + s = f'curl -Lb ./cookie "drive.google.com/uc?export=download&confirm={get_token()}&id={id}" -o {file}' else: # small file - s = 'curl -s -L -o %s "drive.google.com/uc?export=download&id=%s"' % (name, id) + s = f'curl -s -L -o {file} "drive.google.com/uc?export=download&id={id}"' r = os.system(s) # execute, capture return - os.remove('cookie') if os.path.exists('cookie') else None + cookie.unlink(missing_ok=True) # remove existing cookie # Error check if r != 0: - os.remove(name) if os.path.exists(name) else None # remove partial + file.unlink(missing_ok=True) # remove partial print('Download error ') # raise Exception('Download error') return r # Unzip if archive - if name.endswith('.zip'): + if file.suffix == '.zip': print('unzipping... ', end='') - os.system('unzip -q %s' % name) # unzip - os.remove(name) # remove zip to free space + os.system(f'unzip -q {file}') # unzip + file.unlink() # remove zip to free space - print('Done (%.1fs)' % (time.time() - t)) + print(f'Done ({time.time() - t:.1f}s)') return r From 166a4d590f08b55cadfebc57a11a52ff2fc2b7d3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 12 Jan 2021 23:05:32 -0800 Subject: [PATCH 2527/2595] v9.1 release (#1658) --- Dockerfile | 8 +- detect.py | 28 +++---- hubconf.py | 27 +++---- models/common.py | 119 ++++++++++++++++++++-------- models/experimental.py | 23 +----- models/export.py | 11 ++- models/yolo.py | 23 +++--- requirements.txt | 2 +- test.py | 10 ++- train.py | 105 ++++++++++++++----------- utils/activations.py | 4 +- utils/autoanchor.py | 28 ++++--- utils/datasets.py | 173 ++++++++++++++++++++++++++++++++--------- utils/general.py | 92 ++++++++++++++++++---- utils/loss.py | 42 +++++++--- utils/plots.py | 71 +++++++++++------ utils/torch_utils.py | 2 +- 17 files changed, 519 insertions(+), 249 deletions(-) diff --git a/Dockerfile b/Dockerfile index 6727548f..d0a797fd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,12 +17,6 @@ WORKDIR /usr/src/app # Copy contents COPY . /usr/src/app -# Copy weights -#RUN python3 -c "from models import *; \ -#attempt_download('weights/yolov3.pt'); \ -#attempt_download('weights/yolov3-spp.pt'); \ -#attempt_download('weights/yolov3-tiny.pt')" - # --------------------------------------------------- Extras Below --------------------------------------------------- @@ -31,7 +25,7 @@ COPY . /usr/src/app # for v in {300..303}; do t=ultralytics/coco:v$v && sudo docker build -t $t . && sudo docker push $t; done # Pull and Run -# t=ultralytics/yolov3:latest && sudo docker pull $t && sudo docker run -it --ipc=host $t +# t=ultralytics/yolov3:latest && sudo docker pull $t && sudo docker run -it --ipc=host --gpus all $t # Pull and Run with local directory access # t=ultralytics/yolov3:latest && sudo docker pull $t && sudo docker run -it --ipc=host --gpus all -v "$(pwd)"/coco:/usr/src/coco $t diff --git a/detect.py b/detect.py index 4e4de61f..2ccc20d3 100644 --- a/detect.py +++ b/detect.py @@ -9,8 +9,8 @@ from numpy import random from models.experimental import attempt_load from utils.datasets import LoadStreams, LoadImages -from utils.general import check_img_size, non_max_suppression, apply_classifier, scale_coords, xyxy2xywh, \ - strip_optimizer, set_logging, increment_path +from utils.general import check_img_size, check_requirements, non_max_suppression, apply_classifier, scale_coords, \ + xyxy2xywh, strip_optimizer, set_logging, increment_path from utils.plots import plot_one_box from utils.torch_utils import select_device, load_classifier, time_synchronized @@ -81,12 +81,13 @@ def detect(save_img=False): # Process detections for i, det in enumerate(pred): # detections per image if webcam: # batch_size >= 1 - p, s, im0 = Path(path[i]), '%g: ' % i, im0s[i].copy() + p, s, im0, frame = path[i], '%g: ' % i, im0s[i].copy(), dataset.count else: - p, s, im0 = Path(path), '', im0s + p, s, im0, frame = path, '', im0s, getattr(dataset, 'frame', 0) - save_path = str(save_dir / p.name) - txt_path = str(save_dir / 'labels' / p.stem) + ('_%g' % dataset.frame if dataset.mode == 'video' else '') + p = Path(p) # to Path + save_path = str(save_dir / p.name) # img.jpg + txt_path = str(save_dir / 'labels' / p.stem) + ('' if dataset.mode == 'image' else f'_{frame}') # img.txt s += '%gx%g ' % img.shape[2:] # print string gn = torch.tensor(im0.shape)[[1, 0, 1, 0]] # normalization gain whwh if len(det): @@ -96,7 +97,7 @@ def detect(save_img=False): # Print results for c in det[:, -1].unique(): n = (det[:, -1] == c).sum() # detections per class - s += '%g %ss, ' % (n, names[int(c)]) # add to string + s += f'{n} {names[int(c)]}s, ' # add to string # Write results for *xyxy, conf, cls in reversed(det): @@ -107,23 +108,21 @@ def detect(save_img=False): f.write(('%g ' * len(line)).rstrip() % line + '\n') if save_img or view_img: # Add bbox to image - label = '%s %.2f' % (names[int(cls)], conf) + label = f'{names[int(cls)]} {conf:.2f}' plot_one_box(xyxy, im0, label=label, color=colors[int(cls)], line_thickness=3) # Print time (inference + NMS) - print('%sDone. (%.3fs)' % (s, t2 - t1)) + print(f'{s}Done. ({t2 - t1:.3f}s)') # Stream results if view_img: cv2.imshow(str(p), im0) - if cv2.waitKey(1) == ord('q'): # q to quit - raise StopIteration # Save results (image with detections) if save_img: - if dataset.mode == 'images': + if dataset.mode == 'image': cv2.imwrite(save_path, im0) - else: + else: # 'video' if vid_path != save_path: # new video vid_path = save_path if isinstance(vid_writer, cv2.VideoWriter): @@ -140,7 +139,7 @@ def detect(save_img=False): s = f"\n{len(list(save_dir.glob('labels/*.txt')))} labels saved to {save_dir / 'labels'}" if save_txt else '' print(f"Results saved to {save_dir}{s}") - print('Done. (%.3fs)' % (time.time() - t0)) + print(f'Done. ({time.time() - t0:.3f}s)') if __name__ == '__main__': @@ -163,6 +162,7 @@ if __name__ == '__main__': parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment') opt = parser.parse_args() print(opt) + check_requirements() with torch.no_grad(): if opt.update: # update all models (to fix SourceChangeWarning) diff --git a/hubconf.py b/hubconf.py index df7796d4..7b0f2011 100644 --- a/hubconf.py +++ b/hubconf.py @@ -17,7 +17,7 @@ dependencies = ['torch', 'yaml'] set_logging() -def create(name, pretrained, channels, classes): +def create(name, pretrained, channels, classes, autoshape): """Creates a specified YOLOv3 model Arguments: @@ -41,7 +41,8 @@ def create(name, pretrained, channels, classes): model.load_state_dict(state_dict, strict=False) # load if len(ckpt['model'].names) == classes: model.names = ckpt['model'].names # set class names attribute - # model = model.autoshape() # for PIL/cv2/np inputs and NMS + if autoshape: + model = model.autoshape() # for file/URI/PIL/cv2/np inputs and NMS return model except Exception as e: @@ -50,7 +51,7 @@ def create(name, pretrained, channels, classes): raise Exception(s) from e -def yolov3(pretrained=False, channels=3, classes=80): +def yolov3(pretrained=False, channels=3, classes=80, autoshape=True): """YOLOv3 model from https://github.com/ultralytics/yolov3 Arguments: @@ -61,10 +62,10 @@ def yolov3(pretrained=False, channels=3, classes=80): Returns: pytorch model """ - return create('yolov3', pretrained, channels, classes) + return create('yolov3', pretrained, channels, classes, autoshape) -def yolov3_spp(pretrained=False, channels=3, classes=80): +def yolov3_spp(pretrained=False, channels=3, classes=80, autoshape=True): """YOLOv3-SPP model from https://github.com/ultralytics/yolov3 Arguments: @@ -75,10 +76,10 @@ def yolov3_spp(pretrained=False, channels=3, classes=80): Returns: pytorch model """ - return create('yolov3-spp', pretrained, channels, classes) + return create('yolov3-spp', pretrained, channels, classes, autoshape) -def yolov3_tiny(pretrained=False, channels=3, classes=80): +def yolov3_tiny(pretrained=False, channels=3, classes=80, autoshape=True): """YOLOv3-tiny model from https://github.com/ultralytics/yolov3 Arguments: @@ -89,16 +90,17 @@ def yolov3_tiny(pretrained=False, channels=3, classes=80): Returns: pytorch model """ - return create('yolov3-tiny', pretrained, channels, classes) + return create('yolov3-tiny', pretrained, channels, classes, autoshape) -def custom(path_or_model='path/to/model.pt'): +def custom(path_or_model='path/to/model.pt', autoshape=True): """YOLOv3-custom model from https://github.com/ultralytics/yolov3 - + Arguments (3 options): path_or_model (str): 'path/to/model.pt' path_or_model (dict): torch.load('path/to/model.pt') path_or_model (nn.Module): torch.load('path/to/model.pt')['model'] + Returns: pytorch model """ @@ -109,13 +111,12 @@ def custom(path_or_model='path/to/model.pt'): hub_model = Model(model.yaml).to(next(model.parameters()).device) # create hub_model.load_state_dict(model.float().state_dict()) # load state_dict hub_model.names = model.names # class names - return hub_model + return hub_model.autoshape() if autoshape else hub_model if __name__ == '__main__': - model = create(name='yolov3', pretrained=True, channels=3, classes=80) # pretrained example + model = create(name='yolov3', pretrained=True, channels=3, classes=80, autoshape=True) # pretrained example # model = custom(path_or_model='path/to/model.pt') # custom example - model = model.autoshape() # for PIL/cv2/np inputs and NMS # Verify inference from PIL import Image diff --git a/models/common.py b/models/common.py index f26ffdd0..fd9d9fcd 100644 --- a/models/common.py +++ b/models/common.py @@ -1,7 +1,9 @@ # This file contains modules common to various models import math + import numpy as np +import requests import torch import torch.nn as nn from PIL import Image, ImageDraw @@ -29,7 +31,7 @@ class Conv(nn.Module): super(Conv, self).__init__() self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p), groups=g, bias=False) self.bn = nn.BatchNorm2d(c2) - self.act = nn.LeakyReLU(0.1) if act else nn.Identity() + self.act = nn.LeakyReLU(0.1) if act is True else (act if isinstance(act, nn.Module) else nn.Identity()) def forward(self, x): return self.act(self.bn(self.conv(x))) @@ -70,6 +72,21 @@ class BottleneckCSP(nn.Module): return self.cv4(self.act(self.bn(torch.cat((y1, y2), dim=1)))) +class C3(nn.Module): + # CSP Bottleneck with 3 convolutions + def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ch_out, number, shortcut, groups, expansion + super(C3, self).__init__() + c_ = int(c2 * e) # hidden channels + self.cv1 = Conv(c1, c_, 1, 1) + self.cv2 = Conv(c1, c_, 1, 1) + self.cv3 = Conv(2 * c_, c2, 1) # act=FReLU(c2) + self.m = nn.Sequential(*[Bottleneck(c_, c_, shortcut, g, e=1.0) for _ in range(n)]) + # self.m = nn.Sequential(*[CrossConv(c_, c_, 3, 1, g, 1.0, shortcut) for _ in range(n)]) + + def forward(self, x): + return self.cv3(torch.cat((self.m(self.cv1(x)), self.cv2(x)), dim=1)) + + class SPP(nn.Module): # Spatial pyramid pooling layer used in YOLOv3-SPP def __init__(self, c1, c2, k=(5, 9, 13)): @@ -89,9 +106,39 @@ class Focus(nn.Module): def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True): # ch_in, ch_out, kernel, stride, padding, groups super(Focus, self).__init__() self.conv = Conv(c1 * 4, c2, k, s, p, g, act) + # self.contract = Contract(gain=2) def forward(self, x): # x(b,c,w,h) -> y(b,4c,w/2,h/2) return self.conv(torch.cat([x[..., ::2, ::2], x[..., 1::2, ::2], x[..., ::2, 1::2], x[..., 1::2, 1::2]], 1)) + # return self.conv(self.contract(x)) + + +class Contract(nn.Module): + # Contract width-height into channels, i.e. x(1,64,80,80) to x(1,256,40,40) + def __init__(self, gain=2): + super().__init__() + self.gain = gain + + def forward(self, x): + N, C, H, W = x.size() # assert (H / s == 0) and (W / s == 0), 'Indivisible gain' + s = self.gain + x = x.view(N, C, H // s, s, W // s, s) # x(1,64,40,2,40,2) + x = x.permute(0, 3, 5, 1, 2, 4).contiguous() # x(1,2,2,64,40,40) + return x.view(N, C * s * s, H // s, W // s) # x(1,256,40,40) + + +class Expand(nn.Module): + # Expand channels into width-height, i.e. x(1,64,80,80) to x(1,16,160,160) + def __init__(self, gain=2): + super().__init__() + self.gain = gain + + def forward(self, x): + N, C, H, W = x.size() # assert C / s ** 2 == 0, 'Indivisible gain' + s = self.gain + x = x.view(N, s, s, C // s ** 2, H, W) # x(1,2,2,16,80,80) + x = x.permute(0, 3, 4, 1, 5, 2).contiguous() # x(1,16,80,2,80,2) + return x.view(N, C // s ** 2, H * s, W * s) # x(1,16,160,160) class Concat(nn.Module): @@ -128,35 +175,42 @@ class autoShape(nn.Module): super(autoShape, self).__init__() self.model = model.eval() + def autoshape(self): + print('autoShape already enabled, skipping... ') # model already converted to model.autoshape() + return self + def forward(self, imgs, size=640, augment=False, profile=False): - # supports inference from various sources. For height=720, width=1280, RGB images example inputs are: - # opencv: imgs = cv2.imread('image.jpg')[:,:,::-1] # HWC BGR to RGB x(720,1280,3) - # PIL: imgs = Image.open('image.jpg') # HWC x(720,1280,3) - # numpy: imgs = np.zeros((720,1280,3)) # HWC - # torch: imgs = torch.zeros(16,3,720,1280) # BCHW - # multiple: imgs = [Image.open('image1.jpg'), Image.open('image2.jpg'), ...] # list of images + # Inference from various sources. For height=720, width=1280, RGB images example inputs are: + # filename: imgs = 'data/samples/zidane.jpg' + # URI: = 'https://github.com/ultralytics/yolov5/releases/download/v1.0/zidane.jpg' + # OpenCV: = cv2.imread('image.jpg')[:,:,::-1] # HWC BGR to RGB x(720,1280,3) + # PIL: = Image.open('image.jpg') # HWC x(720,1280,3) + # numpy: = np.zeros((720,1280,3)) # HWC + # torch: = torch.zeros(16,3,720,1280) # BCHW + # multiple: = [Image.open('image1.jpg'), Image.open('image2.jpg'), ...] # list of images p = next(self.model.parameters()) # for device and type if isinstance(imgs, torch.Tensor): # torch return self.model(imgs.to(p.device).type_as(p), augment, profile) # inference # Pre-process - if not isinstance(imgs, list): - imgs = [imgs] + n, imgs = (len(imgs), imgs) if isinstance(imgs, list) else (1, [imgs]) # number of images, list of images shape0, shape1 = [], [] # image and inference shapes - batch = range(len(imgs)) # batch size - for i in batch: - imgs[i] = np.array(imgs[i]) # to numpy - if imgs[i].shape[0] < 5: # image in CHW - imgs[i] = imgs[i].transpose((1, 2, 0)) # reverse dataloader .transpose(2, 0, 1) - imgs[i] = imgs[i][:, :, :3] if imgs[i].ndim == 3 else np.tile(imgs[i][:, :, None], 3) # enforce 3ch input - s = imgs[i].shape[:2] # HWC + for i, im in enumerate(imgs): + if isinstance(im, str): # filename or uri + im = Image.open(requests.get(im, stream=True).raw if im.startswith('http') else im) # open + im = np.array(im) # to numpy + if im.shape[0] < 5: # image in CHW + im = im.transpose((1, 2, 0)) # reverse dataloader .transpose(2, 0, 1) + im = im[:, :, :3] if im.ndim == 3 else np.tile(im[:, :, None], 3) # enforce 3ch input + s = im.shape[:2] # HWC shape0.append(s) # image shape g = (size / max(s)) # gain shape1.append([y * g for y in s]) + imgs[i] = im # update shape1 = [make_divisible(x, int(self.stride.max())) for x in np.stack(shape1, 0).max(0)] # inference shape - x = [letterbox(imgs[i], new_shape=shape1, auto=False)[0] for i in batch] # pad - x = np.stack(x, 0) if batch[-1] else x[0][None] # stack + x = [letterbox(im, new_shape=shape1, auto=False)[0] for im in imgs] # pad + x = np.stack(x, 0) if n > 1 else x[0][None] # stack x = np.ascontiguousarray(x.transpose((0, 3, 1, 2))) # BHWC to BCHW x = torch.from_numpy(x).to(p.device).type_as(p) / 255. # uint8 to fp16/32 @@ -166,7 +220,7 @@ class autoShape(nn.Module): y = non_max_suppression(y, conf_thres=self.conf, iou_thres=self.iou, classes=self.classes) # NMS # Post-process - for i in batch: + for i in range(n): scale_coords(shape1, y[i][:, :4], shape0[i]) return Detections(imgs, y, self.names) @@ -187,7 +241,7 @@ class Detections: self.xywhn = [x / g for x, g in zip(self.xywh, gn)] # xywh normalized self.n = len(self.pred) - def display(self, pprint=False, show=False, save=False): + def display(self, pprint=False, show=False, save=False, render=False): colors = color_list() for i, (img, pred) in enumerate(zip(self.imgs, self.pred)): str = f'Image {i + 1}/{len(self.pred)}: {img.shape[0]}x{img.shape[1]} ' @@ -195,19 +249,21 @@ class Detections: for c in pred[:, -1].unique(): n = (pred[:, -1] == c).sum() # detections per class str += f'{n} {self.names[int(c)]}s, ' # add to string - if show or save: + if show or save or render: img = Image.fromarray(img.astype(np.uint8)) if isinstance(img, np.ndarray) else img # from np for *box, conf, cls in pred: # xyxy, confidence, class # str += '%s %.2f, ' % (names[int(cls)], conf) # label ImageDraw.Draw(img).rectangle(box, width=4, outline=colors[int(cls) % 10]) # plot + if pprint: + print(str) + if show: + img.show(f'Image {i}') # show if save: f = f'results{i}.jpg' str += f"saved to '{f}'" img.save(f) # save - if show: - img.show(f'Image {i}') # show - if pprint: - print(str) + if render: + self.imgs[i] = np.asarray(img) def print(self): self.display(pprint=True) # print results @@ -218,6 +274,10 @@ class Detections: def save(self): self.display(save=True) # save results + def render(self): + self.display(render=True) # render results + return self.imgs + def __len__(self): return self.n @@ -230,20 +290,13 @@ class Detections: return x -class Flatten(nn.Module): - # Use after nn.AdaptiveAvgPool2d(1) to remove last 2 dimensions - @staticmethod - def forward(x): - return x.view(x.size(0), -1) - - class Classify(nn.Module): # Classification head, i.e. x(b,c1,20,20) to x(b,c2) def __init__(self, c1, c2, k=1, s=1, p=None, g=1): # ch_in, ch_out, kernel, stride, padding, groups super(Classify, self).__init__() self.aap = nn.AdaptiveAvgPool2d(1) # to x(b,c1,1,1) self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p), groups=g) # to x(b,c2,1,1) - self.flat = Flatten() + self.flat = nn.Flatten() def forward(self, x): z = torch.cat([self.aap(y) for y in (x if isinstance(x, list) else [x])], 1) # cat if list diff --git a/models/experimental.py b/models/experimental.py index a2908a15..2dbbf7fa 100644 --- a/models/experimental.py +++ b/models/experimental.py @@ -22,25 +22,6 @@ class CrossConv(nn.Module): return x + self.cv2(self.cv1(x)) if self.add else self.cv2(self.cv1(x)) -class C3(nn.Module): - # Cross Convolution CSP - def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ch_out, number, shortcut, groups, expansion - super(C3, self).__init__() - c_ = int(c2 * e) # hidden channels - self.cv1 = Conv(c1, c_, 1, 1) - self.cv2 = nn.Conv2d(c1, c_, 1, 1, bias=False) - self.cv3 = nn.Conv2d(c_, c_, 1, 1, bias=False) - self.cv4 = Conv(2 * c_, c2, 1, 1) - self.bn = nn.BatchNorm2d(2 * c_) # applied to cat(cv2, cv3) - self.act = nn.LeakyReLU(0.1, inplace=True) - self.m = nn.Sequential(*[CrossConv(c_, c_, 3, 1, g, 1.0, shortcut) for _ in range(n)]) - - def forward(self, x): - y1 = self.cv3(self.m(self.cv1(x))) - y2 = self.cv2(x) - return self.cv4(self.act(self.bn(torch.cat((y1, y2), dim=1)))) - - class Sum(nn.Module): # Weighted sum of 2 or more layers https://arxiv.org/abs/1911.09070 def __init__(self, n, weight=False): # n: number of inputs @@ -124,8 +105,8 @@ class Ensemble(nn.ModuleList): for module in self: y.append(module(x, augment)[0]) # y = torch.stack(y).max(0)[0] # max ensemble - # y = torch.cat(y, 1) # nms ensemble - y = torch.stack(y).mean(0) # mean ensemble + # y = torch.stack(y).mean(0) # mean ensemble + y = torch.cat(y, 1) # nms ensemble return y, None # inference, train output diff --git a/models/export.py b/models/export.py index 7fbc3d95..49df43e9 100644 --- a/models/export.py +++ b/models/export.py @@ -15,7 +15,7 @@ import torch.nn as nn import models from models.experimental import attempt_load -from utils.activations import Hardswish +from utils.activations import Hardswish, SiLU from utils.general import set_logging, check_img_size if __name__ == '__main__': @@ -43,9 +43,12 @@ if __name__ == '__main__': # Update model for k, m in model.named_modules(): m._non_persistent_buffers_set = set() # pytorch 1.6.0 compatibility - if isinstance(m, models.common.Conv) and isinstance(m.act, nn.Hardswish): - m.act = Hardswish() # assign activation - # if isinstance(m, models.yolo.Detect): + if isinstance(m, models.common.Conv): # assign export-friendly activations + if isinstance(m.act, nn.Hardswish): + m.act = Hardswish() + elif isinstance(m.act, nn.SiLU): + m.act = SiLU() + # elif isinstance(m, models.yolo.Detect): # m.forward = m.forward_export # assign forward (optional) model.model[-1].export = True # set Detect() layer export=True y = model(img) # dry run diff --git a/models/yolo.py b/models/yolo.py index 7ef9d501..9f471009 100644 --- a/models/yolo.py +++ b/models/yolo.py @@ -4,15 +4,11 @@ import sys from copy import deepcopy from pathlib import Path -import math -import torch -import torch.nn as nn - sys.path.append('./') # to run '$ python *.py' files in subdirectories logger = logging.getLogger(__name__) -from models.common import Conv, Bottleneck, SPP, DWConv, Focus, BottleneckCSP, Concat, NMS, autoShape -from models.experimental import MixConv2d, CrossConv, C3 +from models.common import * +from models.experimental import MixConv2d, CrossConv from utils.autoanchor import check_anchor_order from utils.general import make_divisible, check_file, set_logging from utils.torch_utils import time_synchronized, fuse_conv_and_bn, model_info, scale_img, initialize_weights, \ @@ -78,17 +74,18 @@ class Model(nn.Module): self.yaml = yaml.load(f, Loader=yaml.FullLoader) # model dict # Define model + ch = self.yaml['ch'] = self.yaml.get('ch', ch) # input channels if nc and nc != self.yaml['nc']: logger.info('Overriding model.yaml nc=%g with nc=%g' % (self.yaml['nc'], nc)) self.yaml['nc'] = nc # override yaml value - self.model, self.save = parse_model(deepcopy(self.yaml), ch=[ch]) # model, savelist, ch_out + self.model, self.save = parse_model(deepcopy(self.yaml), ch=[ch]) # model, savelist self.names = [str(i) for i in range(self.yaml['nc'])] # default names # print([x.shape for x in self.forward(torch.zeros(1, ch, 64, 64))]) # Build strides, anchors m = self.model[-1] # Detect() if isinstance(m, Detect): - s = 128 # 2x min stride + s = 256 # 2x min stride m.stride = torch.tensor([s / x.shape[-2] for x in self.forward(torch.zeros(1, ch, s, s))]) # forward m.anchors /= m.stride.view(-1, 1, 1) check_anchor_order(m) @@ -108,7 +105,7 @@ class Model(nn.Module): f = [None, 3, None] # flips (2-ud, 3-lr) y = [] # outputs for si, fi in zip(s, f): - xi = scale_img(x.flip(fi) if fi else x, si) + xi = scale_img(x.flip(fi) if fi else x, si, gs=int(self.stride.max())) yi = self.forward_once(xi)[0] # forward # cv2.imwrite('img%g.jpg' % s, 255 * xi[0].numpy().transpose((1, 2, 0))[:, :, ::-1]) # save yi[..., :4] /= si # de-scale @@ -241,13 +238,17 @@ def parse_model(d, ch): # model_dict, input_channels(3) elif m is nn.BatchNorm2d: args = [ch[f]] elif m is Concat: - c2 = sum([ch[-1 if x == -1 else x + 1] for x in f]) + c2 = sum([ch[x if x < 0 else x + 1] for x in f]) elif m is Detect: args.append([ch[x + 1] for x in f]) if isinstance(args[1], int): # number of anchors args[1] = [list(range(args[1] * 2))] * len(f) + elif m is Contract: + c2 = ch[f if f < 0 else f + 1] * args[0] ** 2 + elif m is Expand: + c2 = ch[f if f < 0 else f + 1] // args[0] ** 2 else: - c2 = ch[f] + c2 = ch[f if f < 0 else f + 1] m_ = nn.Sequential(*[m(*args) for _ in range(n)]) if n > 1 else m(*args) # module t = str(m)[8:-2].replace('__main__.', '') # module type diff --git a/requirements.txt b/requirements.txt index 4cb16138..3c23f2b7 100755 --- a/requirements.txt +++ b/requirements.txt @@ -17,7 +17,7 @@ tqdm>=4.41.0 # wandb # plotting ------------------------------------ -seaborn +seaborn>=0.11.0 pandas # export -------------------------------------- diff --git a/test.py b/test.py index 5c8a70b9..c570a788 100644 --- a/test.py +++ b/test.py @@ -11,8 +11,8 @@ from tqdm import tqdm from models.experimental import attempt_load from utils.datasets import create_dataloader -from utils.general import coco80_to_coco91_class, check_dataset, check_file, check_img_size, box_iou, \ - non_max_suppression, scale_coords, xyxy2xywh, xywh2xyxy, set_logging, increment_path +from utils.general import coco80_to_coco91_class, check_dataset, check_file, check_img_size, check_requirements, \ + box_iou, non_max_suppression, scale_coords, xyxy2xywh, xywh2xyxy, set_logging, increment_path, colorstr from utils.loss import compute_loss from utils.metrics import ap_per_class, ConfusionMatrix from utils.plots import plot_images, output_to_target, plot_study_txt @@ -86,7 +86,8 @@ def test(data, img = torch.zeros((1, 3, imgsz, imgsz), device=device) # init img _ = model(img.half() if half else img) if device.type != 'cpu' else None # run once path = data['test'] if opt.task == 'test' else data['val'] # path to val/test images - dataloader = create_dataloader(path, imgsz, batch_size, model.stride.max(), opt, pad=0.5, rect=True)[0] + dataloader = create_dataloader(path, imgsz, batch_size, model.stride.max(), opt, pad=0.5, rect=True, + prefix=colorstr('test: ' if opt.task == 'test' else 'val: '))[0] seen = 0 confusion_matrix = ConfusionMatrix(nc=nc) @@ -226,7 +227,7 @@ def test(data, print(pf % ('all', seen, nt.sum(), mp, mr, map50, map)) # Print results per class - if verbose and nc > 1 and len(stats): + if (verbose or (nc <= 20 and not training)) and nc > 1 and len(stats): for i, c in enumerate(ap_class): print(pf % (names[c], seen, nt[c], p[i], r[i], ap50[i], ap[i])) @@ -302,6 +303,7 @@ if __name__ == '__main__': opt.save_json |= opt.data.endswith('coco.yaml') opt.data = check_file(opt.data) # check file print(opt) + check_requirements() if opt.task in ['val', 'test']: # run normally test(opt.data, diff --git a/train.py b/train.py index 91c8084f..9f869cfd 100644 --- a/train.py +++ b/train.py @@ -1,13 +1,12 @@ import argparse import logging +import math import os import random import time from pathlib import Path from threading import Thread -from warnings import warn -import math import numpy as np import torch.distributed as dist import torch.nn as nn @@ -28,7 +27,7 @@ from utils.autoanchor import check_anchors from utils.datasets import create_dataloader from utils.general import labels_to_class_weights, increment_path, labels_to_image_weights, init_seeds, \ fitness, strip_optimizer, get_latest_run, check_dataset, check_file, check_git_status, check_img_size, \ - print_mutation, set_logging + check_requirements, print_mutation, set_logging, one_cycle, colorstr from utils.google_utils import attempt_download from utils.loss import compute_loss from utils.plots import plot_images, plot_labels, plot_results, plot_evolution @@ -36,15 +35,9 @@ from utils.torch_utils import ModelEMA, select_device, intersect_dicts, torch_di logger = logging.getLogger(__name__) -try: - import wandb -except ImportError: - wandb = None - logger.info("Install Weights & Biases for experiment logging via 'pip install wandb' (recommended)") - def train(hyp, opt, device, tb_writer=None, wandb=None): - logger.info(f'Hyperparameters {hyp}') + logger.info(colorstr('hyperparameters: ') + ', '.join(f'{k}={v}' for k, v in hyp.items())) save_dir, epochs, batch_size, total_batch_size, weights, rank = \ Path(opt.save_dir), opt.epochs, opt.batch_size, opt.total_batch_size, opt.weights, opt.global_rank @@ -71,7 +64,8 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): check_dataset(data_dict) # check train_path = data_dict['train'] test_path = data_dict['val'] - nc, names = (1, ['item']) if opt.single_cls else (int(data_dict['nc']), data_dict['names']) # number classes, names + nc = 1 if opt.single_cls else int(data_dict['nc']) # number of classes + names = ['item'] if opt.single_cls and len(data_dict['names']) != 1 else data_dict['names'] # class names assert len(names) == nc, '%g names found for nc=%g dataset in %s' % (len(names), nc, opt.data) # check # Model @@ -103,6 +97,7 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): nbs = 64 # nominal batch size accumulate = max(round(nbs / total_batch_size), 1) # accumulate loss before optimizing hyp['weight_decay'] *= total_batch_size * accumulate / nbs # scale weight_decay + logger.info(f"Scaled weight_decay = {hyp['weight_decay']}") pg0, pg1, pg2 = [], [], [] # optimizer parameter groups for k, v in model.named_modules(): @@ -125,12 +120,12 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): # Scheduler https://arxiv.org/pdf/1812.01187.pdf # https://pytorch.org/docs/stable/_modules/torch/optim/lr_scheduler.html#OneCycleLR - lf = lambda x: ((1 + math.cos(x * math.pi / epochs)) / 2) * (1 - hyp['lrf']) + hyp['lrf'] # cosine + lf = one_cycle(1, hyp['lrf'], epochs) # cosine 1->hyp['lrf'] scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf) # plot_lr_scheduler(optimizer, scheduler, epochs) # Logging - if wandb and wandb.run is None: + if rank in [-1, 0] and wandb and wandb.run is None: opt.hyp = hyp # add hyperparameters wandb_run = wandb.init(config=opt, resume="allow", project='YOLOv3' if opt.project == 'runs/train' else Path(opt.project).stem, @@ -163,7 +158,8 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): del ckpt, state_dict # Image sizes - gs = int(max(model.stride)) # grid size (max stride) + gs = int(model.stride.max()) # grid size (max stride) + nl = model.model[-1].nl # number of detection layers (used for scaling hyp['obj']) imgsz, imgsz_test = [check_img_size(x, gs) for x in opt.img_size] # verify imgsz are gs-multiples # DP mode @@ -186,7 +182,7 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): dataloader, dataset = create_dataloader(train_path, imgsz, batch_size, gs, opt, hyp=hyp, augment=True, cache=opt.cache_images, rect=opt.rect, rank=rank, world_size=opt.world_size, workers=opt.workers, - image_weights=opt.image_weights) + image_weights=opt.image_weights, quad=opt.quad, prefix=colorstr('train: ')) mlc = np.concatenate(dataset.labels, 0)[:, 0].max() # max label class nb = len(dataloader) # number of batches assert mlc < nc, 'Label class %g exceeds nc=%g in %s. Possible class labels are 0-%g' % (mlc, nc, opt.data, nc - 1) @@ -195,8 +191,9 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): if rank in [-1, 0]: ema.updates = start_epoch * nb // accumulate # set EMA updates testloader = create_dataloader(test_path, imgsz_test, total_batch_size, gs, opt, # testloader - hyp=hyp, cache=opt.cache_images and not opt.notest, rect=True, - rank=-1, world_size=opt.world_size, workers=opt.workers, pad=0.5)[0] + hyp=hyp, cache=opt.cache_images and not opt.notest, rect=True, rank=-1, + world_size=opt.world_size, workers=opt.workers, + pad=0.5, prefix=colorstr('val: '))[0] if not opt.resume: labels = np.concatenate(dataset.labels, 0) @@ -204,7 +201,7 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): # cf = torch.bincount(c.long(), minlength=nc) + 1. # frequency # model._initialize_biases(cf.to(device)) if plots: - Thread(target=plot_labels, args=(labels, save_dir, loggers), daemon=True).start() + plot_labels(labels, save_dir, loggers) if tb_writer: tb_writer.add_histogram('classes', c, 0) @@ -213,11 +210,13 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): check_anchors(dataset, model=model, thr=hyp['anchor_t'], imgsz=imgsz) # Model parameters - hyp['cls'] *= nc / 80. # scale coco-tuned hyp['cls'] to current dataset + hyp['box'] *= 3. / nl # scale to layers + hyp['cls'] *= nc / 80. * 3. / nl # scale to classes and layers + hyp['obj'] *= (imgsz / 640) ** 2 * 3. / nl # scale to image size and layers model.nc = nc # attach number of classes to model model.hyp = hyp # attach hyperparameters to model model.gr = 1.0 # iou loss ratio (obj_loss = 1.0 or iou) - model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) # attach class weights + model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) * nc # attach class weights model.names = names # Start training @@ -228,9 +227,10 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): results = (0, 0, 0, 0, 0, 0, 0) # P, R, mAP@.5, mAP@.5-.95, val_loss(box, obj, cls) scheduler.last_epoch = start_epoch - 1 # do not move scaler = amp.GradScaler(enabled=cuda) - logger.info('Image sizes %g train, %g test\n' - 'Using %g dataloader workers\nLogging results to %s\n' - 'Starting training for %g epochs...' % (imgsz, imgsz_test, dataloader.num_workers, save_dir, epochs)) + logger.info(f'Image sizes {imgsz} train, {imgsz_test} test\n' + f'Using {dataloader.num_workers} dataloader workers\n' + f'Logging results to {save_dir}\n' + f'Starting training for {epochs} epochs...') for epoch in range(start_epoch, epochs): # epoch ------------------------------------------------------------------ model.train() @@ -238,7 +238,7 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): if opt.image_weights: # Generate indices if rank in [-1, 0]: - cw = model.class_weights.cpu().numpy() * (1 - maps) ** 2 # class weights + cw = model.class_weights.cpu().numpy() * (1 - maps) ** 2 / nc # class weights iw = labels_to_image_weights(dataset.labels, nc=nc, class_weights=cw) # image weights dataset.indices = random.choices(range(dataset.n), weights=iw, k=dataset.n) # rand weighted idx # Broadcast if DDP @@ -289,6 +289,8 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): loss, loss_items = compute_loss(pred, targets.to(device), model) # loss scaled by batch_size if rank != -1: loss *= opt.world_size # gradient averaged between devices in DDP mode + if opt.quad: + loss *= 4. # Backward scaler.scale(loss).backward() @@ -330,7 +332,7 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): if rank in [-1, 0]: # mAP if ema: - ema.update_attr(model, include=['yaml', 'nc', 'hyp', 'gr', 'names', 'stride']) + ema.update_attr(model, include=['yaml', 'nc', 'hyp', 'gr', 'names', 'stride', 'class_weights']) final_epoch = epoch + 1 == epochs if not opt.notest or final_epoch: # Calculate mAP results, maps, times = test.test(opt.data, @@ -386,10 +388,12 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): if rank in [-1, 0]: # Strip optimizers + final = best if best.exists() else last # final model for f in [last, best]: - if f.exists(): # is *.pt - strip_optimizer(f) # strip optimizer - os.system('gsutil cp %s gs://%s/weights' % (f, opt.bucket)) if opt.bucket else None # upload + if f.exists(): + strip_optimizer(f) # strip optimizers + if opt.bucket: + os.system(f'gsutil cp {final} gs://{opt.bucket}/weights') # upload # Plots if plots: @@ -398,19 +402,24 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): files = ['results.png', 'precision_recall_curve.png', 'confusion_matrix.png'] wandb.log({"Results": [wandb.Image(str(save_dir / f), caption=f) for f in files if (save_dir / f).exists()]}) - logger.info('%g epochs completed in %.3f hours.\n' % (epoch - start_epoch + 1, (time.time() - t0) / 3600)) + if opt.log_artifacts: + wandb.log_artifact(artifact_or_path=str(final), type='model', name=save_dir.stem) # Test best.pt + logger.info('%g epochs completed in %.3f hours.\n' % (epoch - start_epoch + 1, (time.time() - t0) / 3600)) if opt.data.endswith('coco.yaml') and nc == 80: # if COCO - results, _, _ = test.test(opt.data, - batch_size=total_batch_size, - imgsz=imgsz_test, - model=attempt_load(best if best.exists() else last, device).half(), - single_cls=opt.single_cls, - dataloader=testloader, - save_dir=save_dir, - save_json=True, # use pycocotools - plots=False) + for conf, iou, save_json in ([0.25, 0.45, False], [0.001, 0.65, True]): # speed, mAP tests + results, _, _ = test.test(opt.data, + batch_size=total_batch_size, + imgsz=imgsz_test, + conf_thres=conf, + iou_thres=iou, + model=attempt_load(final, device).half(), + single_cls=opt.single_cls, + dataloader=testloader, + save_dir=save_dir, + save_json=save_json, + plots=False) else: dist.destroy_process_group() @@ -440,32 +449,35 @@ if __name__ == '__main__': parser.add_argument('--image-weights', action='store_true', help='use weighted image selection for training') parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') parser.add_argument('--multi-scale', action='store_true', help='vary img-size +/- 50%%') - parser.add_argument('--single-cls', action='store_true', help='train as single-class dataset') + parser.add_argument('--single-cls', action='store_true', help='train multi-class data as single-class') parser.add_argument('--adam', action='store_true', help='use torch.optim.Adam() optimizer') parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode') parser.add_argument('--local_rank', type=int, default=-1, help='DDP parameter, do not modify') parser.add_argument('--log-imgs', type=int, default=16, help='number of images for W&B logging, max 100') + parser.add_argument('--log-artifacts', action='store_true', help='log artifacts, i.e. final trained model') parser.add_argument('--workers', type=int, default=8, help='maximum number of dataloader workers') parser.add_argument('--project', default='runs/train', help='save to project/name') parser.add_argument('--name', default='exp', help='save to project/name') parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment') + parser.add_argument('--quad', action='store_true', help='quad dataloader') opt = parser.parse_args() # Set DDP variables - opt.total_batch_size = opt.batch_size opt.world_size = int(os.environ['WORLD_SIZE']) if 'WORLD_SIZE' in os.environ else 1 opt.global_rank = int(os.environ['RANK']) if 'RANK' in os.environ else -1 set_logging(opt.global_rank) if opt.global_rank in [-1, 0]: check_git_status() + check_requirements() # Resume if opt.resume: # resume an interrupted run ckpt = opt.resume if isinstance(opt.resume, str) else get_latest_run() # specified or most recent path assert os.path.isfile(ckpt), 'ERROR: --resume checkpoint does not exist' + apriori = opt.global_rank, opt.local_rank with open(Path(ckpt).parent.parent / 'opt.yaml') as f: opt = argparse.Namespace(**yaml.load(f, Loader=yaml.FullLoader)) # replace - opt.cfg, opt.weights, opt.resume = '', ckpt, True + opt.cfg, opt.weights, opt.resume, opt.global_rank, opt.local_rank = '', ckpt, True, *apriori # reinstate logger.info('Resuming training from %s' % ckpt) else: # opt.hyp = opt.hyp or ('hyp.finetune.yaml' if opt.weights else 'hyp.scratch.yaml') @@ -476,6 +488,7 @@ if __name__ == '__main__': opt.save_dir = increment_path(Path(opt.project) / opt.name, exist_ok=opt.exist_ok | opt.evolve) # increment run # DDP mode + opt.total_batch_size = opt.batch_size device = select_device(opt.device, batch_size=opt.batch_size) if opt.local_rank != -1: assert torch.cuda.device_count() > opt.local_rank @@ -488,13 +501,15 @@ if __name__ == '__main__': # Hyperparameters with open(opt.hyp) as f: hyp = yaml.load(f, Loader=yaml.FullLoader) # load hyps - if 'box' not in hyp: - warn('Compatibility: %s missing "box" which was renamed from "giou" in %s' % - (opt.hyp, 'https://github.com/ultralytics/yolov5/pull/1120')) - hyp['box'] = hyp.pop('giou') # Train logger.info(opt) + try: + import wandb + except ImportError: + wandb = None + prefix = colorstr('wandb: ') + logger.info(f"{prefix}Install Weights & Biases for YOLOv3 logging with 'pip install wandb' (recommended)") if not opt.evolve: tb_writer = None # init loggers if opt.global_rank in [-1, 0]: diff --git a/utils/activations.py b/utils/activations.py index 24f5a30f..aa3ddf07 100644 --- a/utils/activations.py +++ b/utils/activations.py @@ -5,8 +5,8 @@ import torch.nn as nn import torch.nn.functional as F -# Swish https://arxiv.org/pdf/1905.02244.pdf --------------------------------------------------------------------------- -class Swish(nn.Module): # +# SiLU https://arxiv.org/pdf/1606.08415.pdf ---------------------------------------------------------------------------- +class SiLU(nn.Module): # export-friendly version of nn.SiLU() @staticmethod def forward(x): return x * torch.sigmoid(x) diff --git a/utils/autoanchor.py b/utils/autoanchor.py index 98fea998..c6e6b9da 100644 --- a/utils/autoanchor.py +++ b/utils/autoanchor.py @@ -6,6 +6,8 @@ import yaml from scipy.cluster.vq import kmeans from tqdm import tqdm +from utils.general import colorstr + def check_anchor_order(m): # Check anchor order against stride order for YOLOv3 Detect() module m, and correct if necessary @@ -20,7 +22,8 @@ def check_anchor_order(m): def check_anchors(dataset, model, thr=4.0, imgsz=640): # Check anchor fit to data, recompute if necessary - print('\nAnalyzing anchors... ', end='') + prefix = colorstr('autoanchor: ') + print(f'\n{prefix}Analyzing anchors... ', end='') m = model.module.model[-1] if hasattr(model, 'module') else model.model[-1] # Detect() shapes = imgsz * dataset.shapes / dataset.shapes.max(1, keepdims=True) scale = np.random.uniform(0.9, 1.1, size=(shapes.shape[0], 1)) # augment scale @@ -35,7 +38,7 @@ def check_anchors(dataset, model, thr=4.0, imgsz=640): return bpr, aat bpr, aat = metric(m.anchor_grid.clone().cpu().view(-1, 2)) - print('anchors/target = %.2f, Best Possible Recall (BPR) = %.4f' % (aat, bpr), end='') + print(f'anchors/target = {aat:.2f}, Best Possible Recall (BPR) = {bpr:.4f}', end='') if bpr < 0.98: # threshold to recompute print('. Attempting to improve anchors, please wait...') na = m.anchor_grid.numel() // 2 # number of anchors @@ -46,9 +49,9 @@ def check_anchors(dataset, model, thr=4.0, imgsz=640): m.anchor_grid[:] = new_anchors.clone().view_as(m.anchor_grid) # for inference m.anchors[:] = new_anchors.clone().view_as(m.anchors) / m.stride.to(m.anchors.device).view(-1, 1, 1) # loss check_anchor_order(m) - print('New anchors saved to model. Update model *.yaml to use these anchors in the future.') + print(f'{prefix}New anchors saved to model. Update model *.yaml to use these anchors in the future.') else: - print('Original anchors better than new anchors. Proceeding with original anchors.') + print(f'{prefix}Original anchors better than new anchors. Proceeding with original anchors.') print('') # newline @@ -70,6 +73,7 @@ def kmean_anchors(path='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen=10 from utils.autoanchor import *; _ = kmean_anchors() """ thr = 1. / thr + prefix = colorstr('autoanchor: ') def metric(k, wh): # compute metrics r = wh[:, None] / k[None] @@ -85,9 +89,9 @@ def kmean_anchors(path='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen=10 k = k[np.argsort(k.prod(1))] # sort small to large x, best = metric(k, wh0) bpr, aat = (best > thr).float().mean(), (x > thr).float().mean() * n # best possible recall, anch > thr - print('thr=%.2f: %.4f best possible recall, %.2f anchors past thr' % (thr, bpr, aat)) - print('n=%g, img_size=%s, metric_all=%.3f/%.3f-mean/best, past_thr=%.3f-mean: ' % - (n, img_size, x.mean(), best.mean(), x[x > thr].mean()), end='') + print(f'{prefix}thr={thr:.2f}: {bpr:.4f} best possible recall, {aat:.2f} anchors past thr') + print(f'{prefix}n={n}, img_size={img_size}, metric_all={x.mean():.3f}/{best.mean():.3f}-mean/best, ' + f'past_thr={x[x > thr].mean():.3f}-mean: ', end='') for i, x in enumerate(k): print('%i,%i' % (round(x[0]), round(x[1])), end=', ' if i < len(k) - 1 else '\n') # use in *.cfg return k @@ -107,12 +111,12 @@ def kmean_anchors(path='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen=10 # Filter i = (wh0 < 3.0).any(1).sum() if i: - print('WARNING: Extremely small objects found. ' - '%g of %g labels are < 3 pixels in width or height.' % (i, len(wh0))) + print(f'{prefix}WARNING: Extremely small objects found. {i} of {len(wh0)} labels are < 3 pixels in size.') wh = wh0[(wh0 >= 2.0).any(1)] # filter > 2 pixels + # wh = wh * (np.random.rand(wh.shape[0], 1) * 0.9 + 0.1) # multiply by random scale 0-1 # Kmeans calculation - print('Running kmeans for %g anchors on %g points...' % (n, len(wh))) + print(f'{prefix}Running kmeans for {n} anchors on {len(wh)} points...') s = wh.std(0) # sigmas for whitening k, dist = kmeans(wh / s, n, iter=30) # points, mean distance k *= s @@ -135,7 +139,7 @@ def kmean_anchors(path='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen=10 # Evolve npr = np.random f, sh, mp, s = anchor_fitness(k), k.shape, 0.9, 0.1 # fitness, generations, mutation prob, sigma - pbar = tqdm(range(gen), desc='Evolving anchors with Genetic Algorithm') # progress bar + pbar = tqdm(range(gen), desc=f'{prefix}Evolving anchors with Genetic Algorithm:') # progress bar for _ in pbar: v = np.ones(sh) while (v == 1).all(): # mutate until a change occurs (prevent duplicates) @@ -144,7 +148,7 @@ def kmean_anchors(path='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen=10 fg = anchor_fitness(kg) if fg > f: f, k = fg, kg.copy() - pbar.desc = 'Evolving anchors with Genetic Algorithm: fitness = %.4f' % f + pbar.desc = f'{prefix}Evolving anchors with Genetic Algorithm: fitness = {f:.4f}' if verbose: print_results(k) diff --git a/utils/datasets.py b/utils/datasets.py index 4b870045..d2002fab 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -15,11 +15,12 @@ from threading import Thread import cv2 import numpy as np import torch +import torch.nn.functional as F from PIL import Image, ExifTags from torch.utils.data import Dataset from tqdm import tqdm -from utils.general import xyxy2xywh, xywh2xyxy +from utils.general import xyxy2xywh, xywh2xyxy, clean_str from utils.torch_utils import torch_distributed_zero_first # Parameters @@ -55,7 +56,7 @@ def exif_size(img): def create_dataloader(path, imgsz, batch_size, stride, opt, hyp=None, augment=False, cache=False, pad=0.0, rect=False, - rank=-1, world_size=1, workers=8, image_weights=False): + rank=-1, world_size=1, workers=8, image_weights=False, quad=False, prefix=''): # Make sure only the first process in DDP process the dataset first, and the following others can use the cache with torch_distributed_zero_first(rank): dataset = LoadImagesAndLabels(path, imgsz, batch_size, @@ -66,8 +67,8 @@ def create_dataloader(path, imgsz, batch_size, stride, opt, hyp=None, augment=Fa single_cls=opt.single_cls, stride=int(stride), pad=pad, - rank=rank, - image_weights=image_weights) + image_weights=image_weights, + prefix=prefix) batch_size = min(batch_size, len(dataset)) nw = min([os.cpu_count() // world_size, batch_size if batch_size > 1 else 0, workers]) # number of workers @@ -79,7 +80,7 @@ def create_dataloader(path, imgsz, batch_size, stride, opt, hyp=None, augment=Fa num_workers=nw, sampler=sampler, pin_memory=True, - collate_fn=LoadImagesAndLabels.collate_fn) + collate_fn=LoadImagesAndLabels.collate_fn4 if quad else LoadImagesAndLabels.collate_fn) return dataloader, dataset @@ -128,7 +129,7 @@ class LoadImages: # for inference elif os.path.isfile(p): files = [p] # files else: - raise Exception('ERROR: %s does not exist' % p) + raise Exception(f'ERROR: {p} does not exist') images = [x for x in files if x.split('.')[-1].lower() in img_formats] videos = [x for x in files if x.split('.')[-1].lower() in vid_formats] @@ -138,13 +139,13 @@ class LoadImages: # for inference self.files = images + videos self.nf = ni + nv # number of files self.video_flag = [False] * ni + [True] * nv - self.mode = 'images' + self.mode = 'image' if any(videos): self.new_video(videos[0]) # new video else: self.cap = None - assert self.nf > 0, 'No images or videos found in %s. Supported formats are:\nimages: %s\nvideos: %s' % \ - (p, img_formats, vid_formats) + assert self.nf > 0, f'No images or videos found in {p}. ' \ + f'Supported formats are:\nimages: {img_formats}\nvideos: {vid_formats}' def __iter__(self): self.count = 0 @@ -170,14 +171,14 @@ class LoadImages: # for inference ret_val, img0 = self.cap.read() self.frame += 1 - print('video %g/%g (%g/%g) %s: ' % (self.count + 1, self.nf, self.frame, self.nframes, path), end='') + print(f'video {self.count + 1}/{self.nf} ({self.frame}/{self.nframes}) {path}: ', end='') else: # Read image self.count += 1 img0 = cv2.imread(path) # BGR assert img0 is not None, 'Image Not Found ' + path - print('image %g/%g %s: ' % (self.count, self.nf, path), end='') + print(f'image {self.count}/{self.nf} {path}: ', end='') # Padded resize img = letterbox(img0, new_shape=self.img_size)[0] @@ -237,9 +238,9 @@ class LoadWebcam: # for inference break # Print - assert ret_val, 'Camera Error %s' % self.pipe + assert ret_val, f'Camera Error {self.pipe}' img_path = 'webcam.jpg' - print('webcam %g: ' % self.count, end='') + print(f'webcam {self.count}: ', end='') # Padded resize img = letterbox(img0, new_shape=self.img_size)[0] @@ -256,7 +257,7 @@ class LoadWebcam: # for inference class LoadStreams: # multiple IP or RTSP cameras def __init__(self, sources='streams.txt', img_size=640): - self.mode = 'images' + self.mode = 'stream' self.img_size = img_size if os.path.isfile(sources): @@ -267,18 +268,18 @@ class LoadStreams: # multiple IP or RTSP cameras n = len(sources) self.imgs = [None] * n - self.sources = sources + self.sources = [clean_str(x) for x in sources] # clean source names for later for i, s in enumerate(sources): # Start the thread to read frames from the video stream - print('%g/%g: %s... ' % (i + 1, n, s), end='') + print(f'{i + 1}/{n}: {s}... ', end='') cap = cv2.VideoCapture(eval(s) if s.isnumeric() else s) - assert cap.isOpened(), 'Failed to open %s' % s + assert cap.isOpened(), f'Failed to open {s}' w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) fps = cap.get(cv2.CAP_PROP_FPS) % 100 _, self.imgs[i] = cap.read() # guarantee first frame thread = Thread(target=self.update, args=([i, cap]), daemon=True) - print(' success (%gx%g at %.2f FPS).' % (w, h, fps)) + print(f' success ({w}x{h} at {fps:.2f} FPS).') thread.start() print('') # newline @@ -335,7 +336,7 @@ def img2label_paths(img_paths): class LoadImagesAndLabels(Dataset): # for training/testing def __init__(self, path, img_size=640, batch_size=16, augment=False, hyp=None, rect=False, image_weights=False, - cache_images=False, single_cls=False, stride=32, pad=0.0, rank=-1): + cache_images=False, single_cls=False, stride=32, pad=0.0, prefix=''): self.img_size = img_size self.augment = augment self.hyp = hyp @@ -357,11 +358,11 @@ class LoadImagesAndLabels(Dataset): # for training/testing parent = str(p.parent) + os.sep f += [x.replace('./', parent) if x.startswith('./') else x for x in t] # local to global path else: - raise Exception('%s does not exist' % p) + raise Exception(f'{prefix}{p} does not exist') self.img_files = sorted([x.replace('/', os.sep) for x in f if x.split('.')[-1].lower() in img_formats]) - assert self.img_files, 'No images found' + assert self.img_files, f'{prefix}No images found' except Exception as e: - raise Exception('Error loading data from %s: %s\nSee %s' % (path, e, help_url)) + raise Exception(f'{prefix}Error loading data from {path}: {e}\nSee {help_url}') # Check cache self.label_files = img2label_paths(self.img_files) # labels @@ -369,15 +370,15 @@ class LoadImagesAndLabels(Dataset): # for training/testing if cache_path.is_file(): cache = torch.load(cache_path) # load if cache['hash'] != get_hash(self.label_files + self.img_files) or 'results' not in cache: # changed - cache = self.cache_labels(cache_path) # re-cache + cache = self.cache_labels(cache_path, prefix) # re-cache else: - cache = self.cache_labels(cache_path) # cache + cache = self.cache_labels(cache_path, prefix) # cache # Display cache [nf, nm, ne, nc, n] = cache.pop('results') # found, missing, empty, corrupted, total desc = f"Scanning '{cache_path}' for images and labels... {nf} found, {nm} missing, {ne} empty, {nc} corrupted" - tqdm(None, desc=desc, total=n, initial=n) - assert nf > 0 or not augment, f'No labels found in {cache_path}. Can not train without labels. See {help_url}' + tqdm(None, desc=prefix + desc, total=n, initial=n) + assert nf > 0 or not augment, f'{prefix}No labels in {cache_path}. Can not train without labels. See {help_url}' # Read cache cache.pop('hash') # remove hash @@ -431,9 +432,9 @@ class LoadImagesAndLabels(Dataset): # for training/testing for i, x in pbar: self.imgs[i], self.img_hw0[i], self.img_hw[i] = x # img, hw_original, hw_resized = load_image(self, i) gb += self.imgs[i].nbytes - pbar.desc = 'Caching images (%.1fGB)' % (gb / 1E9) + pbar.desc = f'{prefix}Caching images ({gb / 1E9:.1f}GB)' - def cache_labels(self, path=Path('./labels.cache')): + def cache_labels(self, path=Path('./labels.cache'), prefix=''): # Cache dataset labels, check images and read shapes x = {} # dict nm, nf, ne, nc = 0, 0, 0, 0 # number missing, found, empty, duplicate @@ -465,18 +466,18 @@ class LoadImagesAndLabels(Dataset): # for training/testing x[im_file] = [l, shape] except Exception as e: nc += 1 - print('WARNING: Ignoring corrupted image and/or label %s: %s' % (im_file, e)) + print(f'{prefix}WARNING: Ignoring corrupted image and/or label {im_file}: {e}') - pbar.desc = f"Scanning '{path.parent / path.stem}' for images and labels... " \ + pbar.desc = f"{prefix}Scanning '{path.parent / path.stem}' for images and labels... " \ f"{nf} found, {nm} missing, {ne} empty, {nc} corrupted" if nf == 0: - print(f'WARNING: No labels found in {path}. See {help_url}') + print(f'{prefix}WARNING: No labels found in {path}. See {help_url}') x['hash'] = get_hash(self.label_files + self.img_files) x['results'] = [nf, nm, ne, nc, i + 1] torch.save(x, path) # save for next time - logging.info(f"New cache created: {path}") + logging.info(f'{prefix}New cache created: {path}') return x def __len__(self): @@ -578,6 +579,32 @@ class LoadImagesAndLabels(Dataset): # for training/testing l[:, 0] = i # add target image index for build_targets() return torch.stack(img, 0), torch.cat(label, 0), path, shapes + @staticmethod + def collate_fn4(batch): + img, label, path, shapes = zip(*batch) # transposed + n = len(shapes) // 4 + img4, label4, path4, shapes4 = [], [], path[:n], shapes[:n] + + ho = torch.tensor([[0., 0, 0, 1, 0, 0]]) + wo = torch.tensor([[0., 0, 1, 0, 0, 0]]) + s = torch.tensor([[1, 1, .5, .5, .5, .5]]) # scale + for i in range(n): # zidane torch.zeros(16,3,720,1280) # BCHW + i *= 4 + if random.random() < 0.5: + im = F.interpolate(img[i].unsqueeze(0).float(), scale_factor=2., mode='bilinear', align_corners=False)[ + 0].type(img[i].type()) + l = label[i] + else: + im = torch.cat((torch.cat((img[i], img[i + 1]), 1), torch.cat((img[i + 2], img[i + 3]), 1)), 2) + l = torch.cat((label[i], label[i + 1] + ho, label[i + 2] + wo, label[i + 3] + ho + wo), 0) * s + img4.append(im) + label4.append(l) + + for i, l in enumerate(label4): + l[:, 0] = i # add target image index for build_targets() + + return torch.stack(img4, 0), torch.cat(label4, 0), path4, shapes4 + # Ancillary functions -------------------------------------------------------------------------------------------------- def load_image(self, index): @@ -617,7 +644,7 @@ def augment_hsv(img, hgain=0.5, sgain=0.5, vgain=0.5): def load_mosaic(self, index): - # loads images in a mosaic + # loads images in a 4-mosaic labels4 = [] s = self.img_size @@ -674,6 +701,80 @@ def load_mosaic(self, index): return img4, labels4 +def load_mosaic9(self, index): + # loads images in a 9-mosaic + + labels9 = [] + s = self.img_size + indices = [index] + [self.indices[random.randint(0, self.n - 1)] for _ in range(8)] # 8 additional image indices + for i, index in enumerate(indices): + # Load image + img, _, (h, w) = load_image(self, index) + + # place img in img9 + if i == 0: # center + img9 = np.full((s * 3, s * 3, img.shape[2]), 114, dtype=np.uint8) # base image with 4 tiles + h0, w0 = h, w + c = s, s, s + w, s + h # xmin, ymin, xmax, ymax (base) coordinates + elif i == 1: # top + c = s, s - h, s + w, s + elif i == 2: # top right + c = s + wp, s - h, s + wp + w, s + elif i == 3: # right + c = s + w0, s, s + w0 + w, s + h + elif i == 4: # bottom right + c = s + w0, s + hp, s + w0 + w, s + hp + h + elif i == 5: # bottom + c = s + w0 - w, s + h0, s + w0, s + h0 + h + elif i == 6: # bottom left + c = s + w0 - wp - w, s + h0, s + w0 - wp, s + h0 + h + elif i == 7: # left + c = s - w, s + h0 - h, s, s + h0 + elif i == 8: # top left + c = s - w, s + h0 - hp - h, s, s + h0 - hp + + padx, pady = c[:2] + x1, y1, x2, y2 = [max(x, 0) for x in c] # allocate coords + + # Labels + x = self.labels[index] + labels = x.copy() + if x.size > 0: # Normalized xywh to pixel xyxy format + labels[:, 1] = w * (x[:, 1] - x[:, 3] / 2) + padx + labels[:, 2] = h * (x[:, 2] - x[:, 4] / 2) + pady + labels[:, 3] = w * (x[:, 1] + x[:, 3] / 2) + padx + labels[:, 4] = h * (x[:, 2] + x[:, 4] / 2) + pady + labels9.append(labels) + + # Image + img9[y1:y2, x1:x2] = img[y1 - pady:, x1 - padx:] # img9[ymin:ymax, xmin:xmax] + hp, wp = h, w # height, width previous + + # Offset + yc, xc = [int(random.uniform(0, s)) for x in self.mosaic_border] # mosaic center x, y + img9 = img9[yc:yc + 2 * s, xc:xc + 2 * s] + + # Concat/clip labels + if len(labels9): + labels9 = np.concatenate(labels9, 0) + labels9[:, [1, 3]] -= xc + labels9[:, [2, 4]] -= yc + + np.clip(labels9[:, 1:], 0, 2 * s, out=labels9[:, 1:]) # use with random_perspective + # img9, labels9 = replicate(img9, labels9) # replicate + + # Augment + img9, labels9 = random_perspective(img9, labels9, + degrees=self.hyp['degrees'], + translate=self.hyp['translate'], + scale=self.hyp['scale'], + shear=self.hyp['shear'], + perspective=self.hyp['perspective'], + border=self.mosaic_border) # border to remove + + return img9, labels9 + + def replicate(img, labels): # Replicate labels h, w = img.shape[:2] @@ -811,12 +912,12 @@ def random_perspective(img, targets=(), degrees=10, translate=.1, scale=.1, shea return img, targets -def box_candidates(box1, box2, wh_thr=2, ar_thr=20, area_thr=0.1): # box1(4,n), box2(4,n) +def box_candidates(box1, box2, wh_thr=2, ar_thr=20, area_thr=0.1, eps=1e-16): # box1(4,n), box2(4,n) # Compute candidate boxes: box1 before augment, box2 after augment, wh_thr (pixels), aspect_ratio_thr, area_ratio w1, h1 = box1[2] - box1[0], box1[3] - box1[1] w2, h2 = box2[2] - box2[0], box2[3] - box2[1] - ar = np.maximum(w2 / (h2 + 1e-16), h2 / (w2 + 1e-16)) # aspect ratio - return (w2 > wh_thr) & (h2 > wh_thr) & (w2 * h2 / (w1 * h1 + 1e-16) > area_thr) & (ar < ar_thr) # candidates + ar = np.maximum(w2 / (h2 + eps), h2 / (w2 + eps)) # aspect ratio + return (w2 > wh_thr) & (h2 > wh_thr) & (w2 * h2 / (w1 * h1 + eps) > area_thr) & (ar < ar_thr) # candidates def cutout(image, labels): diff --git a/utils/general.py b/utils/general.py index 22647f6c..5126a45a 100755 --- a/utils/general.py +++ b/utils/general.py @@ -2,8 +2,8 @@ import glob import logging +import math import os -import platform import random import re import subprocess @@ -11,7 +11,6 @@ import time from pathlib import Path import cv2 -import math import numpy as np import torch import torchvision @@ -25,6 +24,7 @@ from utils.torch_utils import init_torch_seeds torch.set_printoptions(linewidth=320, precision=5, profile='long') np.set_printoptions(linewidth=320, formatter={'float_kind': '{:11.5g}'.format}) # format short g, %precision=5 cv2.setNumThreads(0) # prevent OpenCV from multithreading (incompatible with PyTorch DataLoader) +os.environ['NUMEXPR_MAX_THREADS'] = str(min(os.cpu_count(), 8)) # NumExpr max threads def set_logging(rank=-1): @@ -34,6 +34,7 @@ def set_logging(rank=-1): def init_seeds(seed=0): + # Initialize random number generator (RNG) seeds random.seed(seed) np.random.seed(seed) init_torch_seeds(seed) @@ -45,12 +46,41 @@ def get_latest_run(search_dir='.'): return max(last_list, key=os.path.getctime) if last_list else '' +def check_online(): + # Check internet connectivity + import socket + try: + socket.create_connection(("1.1.1.1", 53)) # check host accesability + return True + except OSError: + return False + + def check_git_status(): - # Suggest 'git pull' if repo is out of date - if platform.system() in ['Linux', 'Darwin'] and not os.path.isfile('/.dockerenv'): - s = subprocess.check_output('if [ -d .git ]; then git fetch && git status -uno; fi', shell=True).decode('utf-8') - if 'Your branch is behind' in s: - print(s[s.find('Your branch is behind'):s.find('\n\n')] + '\n') + # Suggest 'git pull' if YOLOv5 is out of date + print(colorstr('github: '), end='') + try: + if Path('.git').exists() and check_online(): + url = subprocess.check_output( + 'git fetch && git config --get remote.origin.url', shell=True).decode('utf-8')[:-1] + n = int(subprocess.check_output( + 'git rev-list $(git rev-parse --abbrev-ref HEAD)..origin/master --count', shell=True)) # commits behind + if n > 0: + s = f"⚠️ WARNING: code is out of date by {n} {'commits' if n > 1 else 'commmit'}. " \ + f"Use 'git pull' to update or 'git clone {url}' to download latest." + else: + s = f'up to date with {url} ✅' + except Exception as e: + s = str(e) + print(s) + + +def check_requirements(file='requirements.txt'): + # Check installed dependencies meet requirements + import pkg_resources + requirements = pkg_resources.parse_requirements(Path(file).open()) + requirements = [x.name + ''.join(*x.specs) if len(x.specs) else x.name for x in requirements] + pkg_resources.require(requirements) # DistributionNotFound or VersionConflict exception if requirements not met def check_img_size(img_size, s=32): @@ -97,6 +127,41 @@ def make_divisible(x, divisor): return math.ceil(x / divisor) * divisor +def clean_str(s): + # Cleans a string by replacing special characters with underscore _ + return re.sub(pattern="[|@#!¡·$€%&()=?¿^*;:,¨´><+]", repl="_", string=s) + + +def one_cycle(y1=0.0, y2=1.0, steps=100): + # lambda function for sinusoidal ramp from y1 to y2 + return lambda x: ((1 - math.cos(x * math.pi / steps)) / 2) * (y2 - y1) + y1 + + +def colorstr(*input): + # Colors a string https://en.wikipedia.org/wiki/ANSI_escape_code, i.e. colorstr('blue', 'hello world') + *args, string = input if len(input) > 1 else ('blue', 'bold', input[0]) # color arguments, string + colors = {'black': '\033[30m', # basic colors + 'red': '\033[31m', + 'green': '\033[32m', + 'yellow': '\033[33m', + 'blue': '\033[34m', + 'magenta': '\033[35m', + 'cyan': '\033[36m', + 'white': '\033[37m', + 'bright_black': '\033[90m', # bright colors + 'bright_red': '\033[91m', + 'bright_green': '\033[92m', + 'bright_yellow': '\033[93m', + 'bright_blue': '\033[94m', + 'bright_magenta': '\033[95m', + 'bright_cyan': '\033[96m', + 'bright_white': '\033[97m', + 'end': '\033[0m', # misc + 'bold': '\033[1m', + 'underline': '\033[4m'} + return ''.join(colors[x] for x in args) + f'{string}' + colors['end'] + + def labels_to_class_weights(labels, nc=80): # Get class weights (inverse frequency) from training labels if labels[0] is None: # no labels loaded @@ -271,6 +336,7 @@ def non_max_suppression(prediction, conf_thres=0.25, iou_thres=0.45, classes=Non # Settings min_wh, max_wh = 2, 4096 # (pixels) minimum and maximum box width and height max_det = 300 # maximum number of detections per image + max_nms = 30000 # maximum number of boxes into torchvision.ops.nms() time_limit = 10.0 # seconds to quit after redundant = True # require redundant detections multi_label = nc > 1 # multiple labels per box (adds 0.5ms/img) @@ -311,20 +377,19 @@ def non_max_suppression(prediction, conf_thres=0.25, iou_thres=0.45, classes=Non x = torch.cat((box, conf, j.float()), 1)[conf.view(-1) > conf_thres] # Filter by class - if classes: + if classes is not None: x = x[(x[:, 5:6] == torch.tensor(classes, device=x.device)).any(1)] # Apply finite constraint # if not torch.isfinite(x).all(): # x = x[torch.isfinite(x).all(1)] - # If none remain process next image + # Check shape n = x.shape[0] # number of boxes - if not n: + if not n: # no boxes continue - - # Sort by confidence - # x = x[x[:, 4].argsort(descending=True)] + elif n > max_nms: # excess boxes + x = x[x[:, 4].argsort(descending=True)[:max_nms]] # sort by confidence # Batched NMS c = x[:, 5:6] * (0 if agnostic else max_wh) # classes @@ -342,6 +407,7 @@ def non_max_suppression(prediction, conf_thres=0.25, iou_thres=0.45, classes=Non output[xi] = x[i] if (time.time() - t) > time_limit: + print(f'WARNING: NMS time limit {time_limit}s exceeded') break # time limit exceeded return output diff --git a/utils/loss.py b/utils/loss.py index 4893c999..2cfd0967 100644 --- a/utils/loss.py +++ b/utils/loss.py @@ -59,6 +59,32 @@ class FocalLoss(nn.Module): return loss +class QFocalLoss(nn.Module): + # Wraps Quality focal loss around existing loss_fcn(), i.e. criteria = FocalLoss(nn.BCEWithLogitsLoss(), gamma=1.5) + def __init__(self, loss_fcn, gamma=1.5, alpha=0.25): + super(QFocalLoss, self).__init__() + self.loss_fcn = loss_fcn # must be nn.BCEWithLogitsLoss() + self.gamma = gamma + self.alpha = alpha + self.reduction = loss_fcn.reduction + self.loss_fcn.reduction = 'none' # required to apply FL to each element + + def forward(self, pred, true): + loss = self.loss_fcn(pred, true) + + pred_prob = torch.sigmoid(pred) # prob from logits + alpha_factor = true * self.alpha + (1 - true) * (1 - self.alpha) + modulating_factor = torch.abs(true - pred_prob) ** self.gamma + loss *= alpha_factor * modulating_factor + + if self.reduction == 'mean': + return loss.mean() + elif self.reduction == 'sum': + return loss.sum() + else: # 'none' + return loss + + def compute_loss(p, targets, model): # predictions, targets, model device = targets.device lcls, lbox, lobj = torch.zeros(1, device=device), torch.zeros(1, device=device), torch.zeros(1, device=device) @@ -66,8 +92,8 @@ def compute_loss(p, targets, model): # predictions, targets, model h = model.hyp # hyperparameters # Define criteria - BCEcls = nn.BCEWithLogitsLoss(pos_weight=torch.Tensor([h['cls_pw']])).to(device) - BCEobj = nn.BCEWithLogitsLoss(pos_weight=torch.Tensor([h['obj_pw']])).to(device) + BCEcls = nn.BCEWithLogitsLoss(pos_weight=torch.tensor([h['cls_pw']], device=device)) # weight=model.class_weights) + BCEobj = nn.BCEWithLogitsLoss(pos_weight=torch.tensor([h['obj_pw']], device=device)) # Class label smoothing https://arxiv.org/pdf/1902.04103.pdf eqn 3 cp, cn = smooth_BCE(eps=0.0) @@ -79,8 +105,7 @@ def compute_loss(p, targets, model): # predictions, targets, model # Losses nt = 0 # number of targets - no = len(p) # number of outputs - balance = [4.0, 1.0, 0.4] if no == 3 else [4.0, 1.0, 0.4, 0.1] # P3-5 or P3-6 + balance = [4.0, 1.0, 0.4, 0.1] # P3-P6 for i, pi in enumerate(p): # layer index, layer predictions b, a, gj, gi = indices[i] # image, anchor, gridy, gridx tobj = torch.zeros_like(pi[..., 0], device=device) # target obj @@ -93,7 +118,7 @@ def compute_loss(p, targets, model): # predictions, targets, model # Regression pxy = ps[:, :2].sigmoid() * 2. - 0.5 pwh = (ps[:, 2:4].sigmoid() * 2) ** 2 * anchors[i] - pbox = torch.cat((pxy, pwh), 1).to(device) # predicted box + pbox = torch.cat((pxy, pwh), 1) # predicted box iou = bbox_iou(pbox.T, tbox[i], x1y1x2y2=False, CIoU=True) # iou(prediction, target) lbox += (1.0 - iou).mean() # iou loss @@ -112,10 +137,9 @@ def compute_loss(p, targets, model): # predictions, targets, model lobj += BCEobj(pi[..., 4], tobj) * balance[i] # obj loss - s = 3 / no # output count scaling - lbox *= h['box'] * s - lobj *= h['obj'] * s * (1.4 if no == 4 else 1.) - lcls *= h['cls'] * s + lbox *= h['box'] + lobj *= h['obj'] + lcls *= h['cls'] bs = tobj.shape[0] # batch size loss = lbox + lobj + lcls diff --git a/utils/plots.py b/utils/plots.py index 8fff8ec6..47cd7077 100644 --- a/utils/plots.py +++ b/utils/plots.py @@ -1,16 +1,18 @@ # Plotting utils import glob +import math import os import random from copy import copy from pathlib import Path import cv2 -import math import matplotlib import matplotlib.pyplot as plt import numpy as np +import pandas as pd +import seaborn as sns import torch import yaml from PIL import Image, ImageDraw @@ -21,7 +23,7 @@ from utils.metrics import fitness # Settings matplotlib.rc('font', **{'size': 11}) -matplotlib.use('svg') # for writing to files only +matplotlib.use('Agg') # for writing to files only def color_list(): @@ -188,6 +190,7 @@ def plot_lr_scheduler(optimizer, scheduler, epochs=300, save_dir=''): plt.xlim(0, epochs) plt.ylim(0) plt.savefig(Path(save_dir) / 'LR.png', dpi=200) + plt.close() def plot_test_txt(): # from utils.plots import *; plot_test() @@ -220,13 +223,13 @@ def plot_targets_txt(): # from utils.plots import *; plot_targets_txt() plt.savefig('targets.jpg', dpi=200) -def plot_study_txt(path='', x=None): # from utils.plots import *; plot_study_txt() +def plot_study_txt(path='study/', x=None): # from utils.plots import *; plot_study_txt() # Plot study.txt generated by test.py fig, ax = plt.subplots(2, 4, figsize=(10, 6), tight_layout=True) ax = ax.ravel() fig2, ax2 = plt.subplots(1, 1, figsize=(8, 4), tight_layout=True) - for f in [Path(path) / f'study_coco_{x}.txt' for x in ['yolov3', 'yolov3-spp', 'yolov3-tiny']]: + for f in [Path(path) / f'study_coco_{x}.txt' for x in ['yolov5s', 'yolov5m', 'yolov5l', 'yolov5x']]: y = np.loadtxt(f, dtype=np.float32, usecols=[0, 1, 2, 3, 7, 8, 9], ndmin=2).T x = np.arange(y.shape[1]) if x is None else np.array(x) s = ['P', 'R', 'mAP@.5', 'mAP@.5:.95', 't_inference (ms/img)', 't_NMS (ms/img)', 't_total (ms/img)'] @@ -242,9 +245,9 @@ def plot_study_txt(path='', x=None): # from utils.plots import *; plot_study_tx 'k.-', linewidth=2, markersize=8, alpha=.25, label='EfficientDet') ax2.grid() + ax2.set_yticks(np.arange(30, 60, 5)) ax2.set_xlim(0, 30) - ax2.set_ylim(15, 50) - ax2.set_yticks(np.arange(15, 55, 5)) + ax2.set_ylim(29, 51) ax2.set_xlabel('GPU Speed (ms/img)') ax2.set_ylabel('COCO AP val') ax2.legend(loc='lower right') @@ -253,34 +256,24 @@ def plot_study_txt(path='', x=None): # from utils.plots import *; plot_study_tx def plot_labels(labels, save_dir=Path(''), loggers=None): # plot dataset labels + print('Plotting labels... ') c, b = labels[:, 0], labels[:, 1:].transpose() # classes, boxes nc = int(c.max() + 1) # number of classes colors = color_list() + x = pd.DataFrame(b.transpose(), columns=['x', 'y', 'width', 'height']) # seaborn correlogram - try: - import seaborn as sns - import pandas as pd - x = pd.DataFrame(b.transpose(), columns=['x', 'y', 'width', 'height']) - sns.pairplot(x, corner=True, diag_kind='hist', kind='scatter', markers='o', - plot_kws=dict(s=3, edgecolor=None, linewidth=1, alpha=0.02), - diag_kws=dict(bins=50)) - plt.savefig(save_dir / 'labels_correlogram.jpg', dpi=200) - plt.close() - except Exception as e: - pass + sns.pairplot(x, corner=True, diag_kind='auto', kind='hist', diag_kws=dict(bins=50), plot_kws=dict(pmax=0.9)) + plt.savefig(save_dir / 'labels_correlogram.jpg', dpi=200) + plt.close() # matplotlib labels matplotlib.use('svg') # faster ax = plt.subplots(2, 2, figsize=(8, 8), tight_layout=True)[1].ravel() ax[0].hist(c, bins=np.linspace(0, nc, nc + 1) - 0.5, rwidth=0.8) ax[0].set_xlabel('classes') - ax[2].scatter(b[0], b[1], c=hist2d(b[0], b[1], 90), cmap='jet') - ax[2].set_xlabel('x') - ax[2].set_ylabel('y') - ax[3].scatter(b[2], b[3], c=hist2d(b[2], b[3], 90), cmap='jet') - ax[3].set_xlabel('width') - ax[3].set_ylabel('height') + sns.histplot(x, x='x', y='y', ax=ax[2], bins=50, pmax=0.9) + sns.histplot(x, x='width', y='height', ax=ax[3], bins=50, pmax=0.9) # rectangles labels[:, 1:3] = 0.5 # center @@ -329,6 +322,38 @@ def plot_evolution(yaml_file='data/hyp.finetune.yaml'): # from utils.plots impo print('\nPlot saved as evolve.png') +def profile_idetection(start=0, stop=0, labels=(), save_dir=''): + # Plot iDetection '*.txt' per-image logs. from utils.plots import *; profile_idetection() + ax = plt.subplots(2, 4, figsize=(12, 6), tight_layout=True)[1].ravel() + s = ['Images', 'Free Storage (GB)', 'RAM Usage (GB)', 'Battery', 'dt_raw (ms)', 'dt_smooth (ms)', 'real-world FPS'] + files = list(Path(save_dir).glob('frames*.txt')) + for fi, f in enumerate(files): + try: + results = np.loadtxt(f, ndmin=2).T[:, 90:-30] # clip first and last rows + n = results.shape[1] # number of rows + x = np.arange(start, min(stop, n) if stop else n) + results = results[:, x] + t = (results[0] - results[0].min()) # set t0=0s + results[0] = x + for i, a in enumerate(ax): + if i < len(results): + label = labels[fi] if len(labels) else f.stem.replace('frames_', '') + a.plot(t, results[i], marker='.', label=label, linewidth=1, markersize=5) + a.set_title(s[i]) + a.set_xlabel('time (s)') + # if fi == len(files) - 1: + # a.set_ylim(bottom=0) + for side in ['top', 'right']: + a.spines[side].set_visible(False) + else: + a.remove() + except Exception as e: + print('Warning: Plotting error for %s; %s' % (f, e)) + + ax[1].legend() + plt.savefig(Path(save_dir) / 'idetection_profile.png', dpi=200) + + def plot_results_overlay(start=0, stop=0): # from utils.plots import *; plot_results_overlay() # Plot training 'results*.txt', overlaying train and val losses s = ['train', 'train', 'train', 'Precision', 'mAP@0.5', 'val', 'val', 'val', 'Recall', 'mAP@0.5:0.95'] # legends diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 82fc731c..231dcfd7 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -61,7 +61,7 @@ def select_device(device='', batch_size=None): os.environ['CUDA_VISIBLE_DEVICES'] = device # set environment variable assert torch.cuda.is_available(), f'CUDA unavailable, invalid device {device} requested' # check availability - cuda = torch.cuda.is_available() and not cpu + cuda = not cpu and torch.cuda.is_available() if cuda: n = torch.cuda.device_count() if n > 1 and batch_size: # check that batch_size is compatible with device_count From bc69220782dedeeac9cbd44f5a3b9390aa745e21 Mon Sep 17 00:00:00 2001 From: Yonghye Kwon Date: Thu, 14 Jan 2021 02:13:13 +0900 Subject: [PATCH 2528/2595] remove unused variable in def compute_loss function (#1659) remove unused variable in def compute_loss function --- utils/loss.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/utils/loss.py b/utils/loss.py index 2cfd0967..844d5039 100644 --- a/utils/loss.py +++ b/utils/loss.py @@ -104,7 +104,6 @@ def compute_loss(p, targets, model): # predictions, targets, model BCEcls, BCEobj = FocalLoss(BCEcls, g), FocalLoss(BCEobj, g) # Losses - nt = 0 # number of targets balance = [4.0, 1.0, 0.4, 0.1] # P3-P6 for i, pi in enumerate(p): # layer index, layer predictions b, a, gj, gi = indices[i] # image, anchor, gridy, gridx @@ -112,7 +111,6 @@ def compute_loss(p, targets, model): # predictions, targets, model n = b.shape[0] # number of targets if n: - nt += n # cumulative targets ps = pi[b, a, gj, gi] # prediction subset corresponding to targets # Regression From 2271a2ebd87a078ce8b575cdc4c625b99a72e4ba Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 13 Jan 2021 10:26:09 -0800 Subject: [PATCH 2529/2595] check_git_status() bug fix (#1660) --- utils/general.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/utils/general.py b/utils/general.py index 5126a45a..a3238efa 100755 --- a/utils/general.py +++ b/utils/general.py @@ -66,13 +66,12 @@ def check_git_status(): n = int(subprocess.check_output( 'git rev-list $(git rev-parse --abbrev-ref HEAD)..origin/master --count', shell=True)) # commits behind if n > 0: - s = f"⚠️ WARNING: code is out of date by {n} {'commits' if n > 1 else 'commmit'}. " \ - f"Use 'git pull' to update or 'git clone {url}' to download latest." + print(f"⚠️ WARNING: code is out of date by {n} {'commits' if n > 1 else 'commmit'}. " + f"Use 'git pull' to update or 'git clone {url}' to download latest.") else: - s = f'up to date with {url} ✅' + print(f'up to date with {url} ✅') except Exception as e: - s = str(e) - print(s) + print(e) def check_requirements(file='requirements.txt'): From 9f4e853c60a498bc69631ce3e62e8cb15077c43b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 13 Jan 2021 19:55:34 -0800 Subject: [PATCH 2530/2595] GitHub API rate limit fallback (#1661) --- utils/google_utils.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/utils/google_utils.py b/utils/google_utils.py index c7497414..347b1121 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -16,28 +16,32 @@ def gsutil_getsize(url=''): return eval(s.split(' ')[0]) if len(s) else 0 # bytes -def attempt_download(file): +def attempt_download(file, repo='ultralytics/yolov3'): # Attempt file download if does not exist file = Path(str(file).strip().replace("'", '').lower()) if not file.exists(): - response = requests.get('https://api.github.com/repos/ultralytics/yolov3/releases/latest').json() # github api - assets = [x['name'] for x in response['assets']] # release assets ['yolov3.pt', 'yolov3-spp.pt', ...] - name = file.name + try: + response = requests.get(f'https://api.github.com/repos/{repo}/releases/latest').json() # github api + assets = [x['name'] for x in response['assets']] # release assets, i.e. ['yolov5s.pt', 'yolov5m.pt', ...] + tag = response['tag_name'] # i.e. 'v1.0' + except: # fallback plan + assets = ['yolov3.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt'] + tag = subprocess.check_output('git tag', shell=True).decode('utf-8').split('\n')[-2] + name = file.name if name in assets: - msg = f'{file} missing, try downloading from https://github.com/ultralytics/yolov3/releases/' + msg = f'{file} missing, try downloading from https://github.com/{repo}/releases/' redundant = False # second download option try: # GitHub - tag = response['tag_name'] # i.e. 'v1.0' - url = f'https://github.com/ultralytics/yolov3/releases/download/{tag}/{name}' + url = f'https://github.com/{repo}/releases/download/{tag}/{name}' print(f'Downloading {url} to {file}...') torch.hub.download_url_to_file(url, file) assert file.exists() and file.stat().st_size > 1E6 # check except Exception as e: # GCP print(f'Download error: {e}') assert redundant, 'No secondary mirror' - url = f'https://storage.googleapis.com/ultralytics/yolov3/ckpt/{name}' + url = f'https://storage.googleapis.com/{repo}/ckpt/{name}' print(f'Downloading {url} to {file}...') os.system(f'curl -L {url} -o {file}') # torch.hub.download_url_to_file(url, weights) finally: From cf5db95953644c0e661d6907d035e0de690631ff Mon Sep 17 00:00:00 2001 From: "huntr.dev | the place to protect open source" Date: Mon, 25 Jan 2021 17:39:34 +0000 Subject: [PATCH 2531/2595] Security Fix for Arbitrary Code Execution - huntr.dev (#1672) * fixed arbitary code execution * Update train.py * Full to Safe Co-authored-by: Asjid Kalam Co-authored-by: Jamie Slome Co-authored-by: Glenn Jocher --- train.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/train.py b/train.py index 9f869cfd..91d8dfe0 100644 --- a/train.py +++ b/train.py @@ -59,7 +59,7 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): cuda = device.type != 'cpu' init_seeds(2 + rank) with open(opt.data) as f: - data_dict = yaml.load(f, Loader=yaml.FullLoader) # data dict + data_dict = yaml.load(f, Loader=yaml.SafeLoader) # data dict with torch_distributed_zero_first(rank): check_dataset(data_dict) # check train_path = data_dict['train'] @@ -476,7 +476,7 @@ if __name__ == '__main__': assert os.path.isfile(ckpt), 'ERROR: --resume checkpoint does not exist' apriori = opt.global_rank, opt.local_rank with open(Path(ckpt).parent.parent / 'opt.yaml') as f: - opt = argparse.Namespace(**yaml.load(f, Loader=yaml.FullLoader)) # replace + opt = argparse.Namespace(**yaml.load(f, Loader=yaml.SafeLoader)) # replace opt.cfg, opt.weights, opt.resume, opt.global_rank, opt.local_rank = '', ckpt, True, *apriori # reinstate logger.info('Resuming training from %s' % ckpt) else: @@ -500,7 +500,7 @@ if __name__ == '__main__': # Hyperparameters with open(opt.hyp) as f: - hyp = yaml.load(f, Loader=yaml.FullLoader) # load hyps + hyp = yaml.load(f, Loader=yaml.SafeLoader) # load hyps # Train logger.info(opt) From daa4600fd372d1c16e90a5ae14682ccf499b0bbe Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 16 Feb 2021 11:09:54 -0800 Subject: [PATCH 2532/2595] Update google_utils.py --- utils/google_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/google_utils.py b/utils/google_utils.py index 347b1121..61af2f43 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -27,7 +27,7 @@ def attempt_download(file, repo='ultralytics/yolov3'): tag = response['tag_name'] # i.e. 'v1.0' except: # fallback plan assets = ['yolov3.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt'] - tag = subprocess.check_output('git tag', shell=True).decode('utf-8').split('\n')[-2] + tag = subprocess.check_output('git tag', shell=True).decode().split()[-1] name = file.name if name in assets: From d3533715ba8a5bdaa597fda6fd4d366b1e5045f6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 16 Feb 2021 16:11:36 -0800 Subject: [PATCH 2533/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 05da4a2a..1518834d 100755 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@   -![CI CPU testing](https://github.com/ultralytics/yolov3/workflows/CI%20CPU%20testing/badge.svg) +CI CPU testing BRANCH NOTICE: The [ultralytics/yolov3](https://github.com/ultralytics/yolov3) repository is now divided into two branches: * [Master branch](https://github.com/ultralytics/yolov3/tree/master): Forward-compatible with all [YOLOv5](https://github.com/ultralytics/yolov5) models and methods (**recommended**). From c1f8dd94b77a1c4a756ed2b0cc04e40b0c314185 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 22 Feb 2021 17:57:47 -0800 Subject: [PATCH 2534/2595] Update google_utils.py (#1690) --- utils/google_utils.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/utils/google_utils.py b/utils/google_utils.py index 61af2f43..e4b115a5 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -21,13 +21,13 @@ def attempt_download(file, repo='ultralytics/yolov3'): file = Path(str(file).strip().replace("'", '').lower()) if not file.exists(): - try: - response = requests.get(f'https://api.github.com/repos/{repo}/releases/latest').json() # github api - assets = [x['name'] for x in response['assets']] # release assets, i.e. ['yolov5s.pt', 'yolov5m.pt', ...] - tag = response['tag_name'] # i.e. 'v1.0' - except: # fallback plan - assets = ['yolov3.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt'] - tag = subprocess.check_output('git tag', shell=True).decode().split()[-1] + # try: + # response = requests.get(f'https://api.github.com/repos/{repo}/releases/latest').json() # github api + # assets = [x['name'] for x in response['assets']] # release assets, i.e. ['yolov5s.pt', 'yolov5m.pt', ...] + # tag = response['tag_name'] # i.e. 'v1.0' + # except: # fallback plan + assets = ['yolov3.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt'] + tag = subprocess.check_output('git tag', shell=True).decode().split()[-1] name = file.name if name in assets: From 5d8f03020c0799a00888cd85f7109c0b9efb4a41 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 6 Apr 2021 13:26:56 +0200 Subject: [PATCH 2535/2595] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1518834d..6e2d3216 100755 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ $ git clone https://github.com/ultralytics/yolov3 # master branch (default) ``` * [Archive branch](https://github.com/ultralytics/yolov3/tree/archive): Backwards-compatible with original [darknet](https://pjreddie.com/darknet/) *.cfg models (⚠️ no longer maintained). ```bash -$ git clone -b archive https://github.com/ultralytics/yolov3 # archive branch +$ git clone https://github.com/ultralytics/yolov3 -b archive # archive branch ``` ** GPU Speed measures end-to-end time per image averaged over 5000 COCO val2017 images using a V100 GPU with batch size 32, and includes image preprocessing, PyTorch FP16 inference, postprocessing and NMS. EfficientDet data from [google/automl](https://github.com/google/automl) at batch size 8. From 8eb4cde090022af73db12cfa725ec4bf01d49c0e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 12 Apr 2021 18:00:47 +0200 Subject: [PATCH 2536/2595] YOLOv5 v5.0 release compatibility update for YOLOv3 (#1737) * YOLOv5 v5.0 release compatibility update * Update README * Update README * Conv act LeakyReLU(0.1) * update plots_study() * update speeds --- .gitattributes | 2 +- .github/workflows/ci-testing.yml | 9 +- .github/workflows/greetings.yml | 9 +- Dockerfile | 19 +- README.md | 116 ++++---- data/argoverse_hd.yaml | 21 ++ data/coco.yaml | 18 +- data/coco128.yaml | 18 +- data/scripts/get_argoverse_hd.sh | 62 ++++ data/scripts/get_coco.sh | 9 +- data/scripts/get_voc.sh | 6 +- data/voc.yaml | 4 +- detect.py | 43 +-- hubconf.py | 101 +++---- models/common.py | 163 ++++++++--- models/experimental.py | 9 +- models/export.py | 19 +- models/yolo.py | 57 ++-- requirements.txt | 9 +- test.py | 111 +++---- train.py | 225 ++++++++------- tutorial.ipynb | 450 ++++++++++++++++------------- utils/autoanchor.py | 19 +- utils/aws/__init__.py | 0 utils/aws/mime.sh | 26 ++ utils/aws/resume.py | 37 +++ utils/aws/userdata.sh | 27 ++ utils/datasets.py | 252 +++++++++------- utils/general.py | 163 +++++++++-- utils/google_utils.py | 14 +- utils/loss.py | 201 +++++++------ utils/metrics.py | 61 ++-- utils/plots.py | 58 ++-- utils/torch_utils.py | 31 +- utils/wandb_logging/__init__.py | 0 utils/wandb_logging/log_dataset.py | 24 ++ utils/wandb_logging/wandb_utils.py | 306 ++++++++++++++++++++ 37 files changed, 1791 insertions(+), 908 deletions(-) create mode 100644 data/argoverse_hd.yaml create mode 100644 data/scripts/get_argoverse_hd.sh create mode 100644 utils/aws/__init__.py create mode 100644 utils/aws/mime.sh create mode 100644 utils/aws/resume.py create mode 100644 utils/aws/userdata.sh create mode 100644 utils/wandb_logging/__init__.py create mode 100644 utils/wandb_logging/log_dataset.py create mode 100644 utils/wandb_logging/wandb_utils.py diff --git a/.gitattributes b/.gitattributes index 6c8722f6..dad4239e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,2 @@ -# remove notebooks from GitHub language stats +# this drop notebooks from GitHub language stats *.ipynb linguist-vendored diff --git a/.github/workflows/ci-testing.yml b/.github/workflows/ci-testing.yml index 1ae0bbb5..77ac2c3f 100644 --- a/.github/workflows/ci-testing.yml +++ b/.github/workflows/ci-testing.yml @@ -66,14 +66,15 @@ jobs: di=cpu # inference devices # define device # train - python train.py --img 256 --batch 8 --weights weights/${{ matrix.model }}.pt --cfg models/${{ matrix.model }}.yaml --epochs 1 --device $di + python train.py --img 128 --batch 16 --weights weights/${{ matrix.model }}.pt --cfg models/${{ matrix.model }}.yaml --epochs 1 --device $di # detect python detect.py --weights weights/${{ matrix.model }}.pt --device $di python detect.py --weights runs/train/exp/weights/last.pt --device $di # test - python test.py --img 256 --batch 8 --weights weights/${{ matrix.model }}.pt --device $di - python test.py --img 256 --batch 8 --weights runs/train/exp/weights/last.pt --device $di + python test.py --img 128 --batch 16 --weights weights/${{ matrix.model }}.pt --device $di + python test.py --img 128 --batch 16 --weights runs/train/exp/weights/last.pt --device $di + python hubconf.py # hub python models/yolo.py --cfg models/${{ matrix.model }}.yaml # inspect - python models/export.py --img 256 --batch 1 --weights weights/${{ matrix.model }}.pt # export + python models/export.py --img 128 --batch 1 --weights weights/${{ matrix.model }}.pt # export shell: bash diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index 1d6ec61d..3c3b9fc1 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -23,7 +23,7 @@ jobs: - ✅ Reduce changes to the absolute **minimum** required for your bug fix or feature addition. _"It is not daily increase but daily decrease, hack away the unessential. The closer to the source, the less wastage there is."_ -Bruce Lee issue-message: | - 👋 Hello @${{ github.actor }}, thank you for your interest in 🚀 YOLOv3! Please visit our ⭐️ [Tutorials](https://github.com/ultralytics/yolov3/wiki#tutorials) to get started, where you can find quickstart guides for simple tasks like [Custom Data Training](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) all the way to advanced concepts like [Hyperparameter Evolution](https://github.com/ultralytics/yolov5/issues/607). + 👋 Hello @${{ github.actor }}, thank you for your interest in YOLOv3 🚀! Please visit our ⭐️ [Tutorials](https://github.com/ultralytics/yolov3/wiki#tutorials) to get started, where you can find quickstart guides for simple tasks like [Custom Data Training](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) all the way to advanced concepts like [Hyperparameter Evolution](https://github.com/ultralytics/yolov5/issues/607). If this is a 🐛 Bug Report, please provide screenshots and **minimum viable code to reproduce your issue**, otherwise we can not help you. @@ -42,10 +42,11 @@ jobs: YOLOv3 may be run in any of the following up-to-date verified environments (with all dependencies including [CUDA](https://developer.nvidia.com/cuda)/[CUDNN](https://developer.nvidia.com/cudnn), [Python](https://www.python.org/) and [PyTorch](https://pytorch.org/) preinstalled): - - **Google Colab Notebook** with free GPU: Open In Colab - - **Kaggle Notebook** with free GPU: [https://www.kaggle.com/ultralytics/yolov3](https://www.kaggle.com/ultralytics/yolov3) + - **Google Colab and Kaggle** notebooks with free GPU: Open In Colab Open In Kaggle - **Google Cloud** Deep Learning VM. See [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) - - **Docker Image** https://hub.docker.com/r/ultralytics/yolov3. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) ![Docker Pulls](https://img.shields.io/docker/pulls/ultralytics/yolov3?logo=docker) + - **Amazon** Deep Learning AMI. See [AWS Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/AWS-Quickstart) + - **Docker Image**. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) Docker Pulls + ## Status diff --git a/Dockerfile b/Dockerfile index d0a797fd..ca07c4d7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,14 @@ # Start FROM Nvidia PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorch -FROM nvcr.io/nvidia/pytorch:20.12-py3 +FROM nvcr.io/nvidia/pytorch:21.03-py3 # Install linux packages -RUN apt update && apt install -y screen libgl1-mesa-glx +RUN apt update && apt install -y zip htop screen libgl1-mesa-glx # Install python dependencies -RUN pip install --upgrade pip COPY requirements.txt . -RUN pip install -r requirements.txt -RUN pip install gsutil +RUN python -m pip install --upgrade pip +RUN pip uninstall -y nvidia-tensorboard nvidia-tensorboard-plugin-dlprof +RUN pip install --no-cache -r requirements.txt coremltools onnx gsutil notebook # Create working directory RUN mkdir -p /usr/src/app @@ -17,6 +17,9 @@ WORKDIR /usr/src/app # Copy contents COPY . /usr/src/app +# Set environment variables +ENV HOME=/usr/src/app + # --------------------------------------------------- Extras Below --------------------------------------------------- @@ -34,13 +37,13 @@ COPY . /usr/src/app # sudo docker kill $(sudo docker ps -q) # Kill all image-based -# sudo docker kill $(sudo docker ps -a -q --filter ancestor=ultralytics/yolov3:latest) +# sudo docker kill $(sudo docker ps -qa --filter ancestor=ultralytics/yolov5:latest) # Bash into running container -# sudo docker container exec -it ba65811811ab bash +# sudo docker exec -it 5a9b5863d93d bash # Bash into stopped container -# sudo docker commit 092b16b25c5b usr/resume && sudo docker run -it --gpus all --ipc=host -v "$(pwd)"/coco:/usr/src/coco --entrypoint=sh usr/resume +# id=$(sudo docker ps -qa) && sudo docker start $id && sudo docker exec -it $id bash # Send weights to GCP # python -c "from utils.general import *; strip_optimizer('runs/train/exp0_*/weights/best.pt', 'tmp.pt')" && gsutil cp tmp.pt gs://*.pt diff --git a/README.md b/README.md index 6e2d3216..7a3c0e87 100755 --- a/README.md +++ b/README.md @@ -1,35 +1,61 @@ - - + +   CI CPU testing -BRANCH NOTICE: The [ultralytics/yolov3](https://github.com/ultralytics/yolov3) repository is now divided into two branches: -* [Master branch](https://github.com/ultralytics/yolov3/tree/master): Forward-compatible with all [YOLOv5](https://github.com/ultralytics/yolov5) models and methods (**recommended**). +This repository represents Ultralytics open-source research into future object detection methods, and incorporates lessons learned and best practices evolved over thousands of hours of training and evolution on anonymized client datasets. **All code and models are under active development, and are subject to modification or deletion without notice.** Use at your own risk. + +

+
+ YOLOv5-P5 640 Figure (click to expand) + +

+
+
+ Figure Notes (click to expand) + + * GPU Speed measures end-to-end time per image averaged over 5000 COCO val2017 images using a V100 GPU with batch size 32, and includes image preprocessing, PyTorch FP16 inference, postprocessing and NMS. + * EfficientDet data from [google/automl](https://github.com/google/automl) at batch size 8. + * **Reproduce** by `python test.py --task study --data coco.yaml --iou 0.7 --weights yolov3.pt yolov3-spp.pt yolov3-tiny.pt yolov5l.pt` +
+ + +## Branch Notice + +The [ultralytics/yolov3](https://github.com/ultralytics/yolov3) repository is now divided into two branches: +* [Master branch](https://github.com/ultralytics/yolov3/tree/master): Forward-compatible with all [YOLOv5](https://github.com/ultralytics/yolov5) models and methods (**recommended** ✅). ```bash $ git clone https://github.com/ultralytics/yolov3 # master branch (default) ``` -* [Archive branch](https://github.com/ultralytics/yolov3/tree/archive): Backwards-compatible with original [darknet](https://pjreddie.com/darknet/) *.cfg models (⚠️ no longer maintained). +* [Archive branch](https://github.com/ultralytics/yolov3/tree/archive): Backwards-compatible with original [darknet](https://pjreddie.com/darknet/) *.cfg models (**no longer maintained** ⚠️). ```bash $ git clone https://github.com/ultralytics/yolov3 -b archive # archive branch ``` -** GPU Speed measures end-to-end time per image averaged over 5000 COCO val2017 images using a V100 GPU with batch size 32, and includes image preprocessing, PyTorch FP16 inference, postprocessing and NMS. EfficientDet data from [google/automl](https://github.com/google/automl) at batch size 8. - - ## Pretrained Checkpoints -| Model | APval | APtest | AP50 | SpeedGPU | FPSGPU || params | FLOPS | -|---------- |------ |------ |------ | -------- | ------| ------ |------ | :------: | -| [YOLOv3](https://github.com/ultralytics/yolov3/releases) | 43.3 | 43.3 | 63.0 | 4.8ms | 208 || 61.9M | 156.4B -| [YOLOv3-SPP](https://github.com/ultralytics/yolov3/releases) | **44.3** | **44.3** | **64.6** | 4.9ms | 204 || 63.0M | 157.0B -| [YOLOv3-tiny](https://github.com/ultralytics/yolov3/releases) | 17.6 | 34.9 | 34.9 | **1.7ms** | **588** || 8.9M | 13.3B +[assets3]: https://github.com/ultralytics/yolov3/releases +[assets5]: https://github.com/ultralytics/yolov5/releases + +Model |size
(pixels) |mAPval
0.5:0.95 |mAPtest
0.5:0.95 |mAPval
0.5 |Speed
V100 (ms) | |params
(M) |FLOPS
640 (B) +--- |--- |--- |--- |--- |--- |---|--- |--- +[YOLOv3-tiny][assets3] |640 |17.6 |17.6 |34.8 |**1.2** | |8.8 |13.2 +[YOLOv3][assets3] |640 |43.3 |43.3 |63.0 |4.1 | |61.9 |156.3 +[YOLOv3-SPP][assets3] |640 |44.3 |44.3 |64.6 |4.1 | |63.0 |157.1 +| | | | | | || | +[YOLOv5l][assets5] |640 |**48.2** |**48.2** |**66.9** |3.7 | |47.0 |115.4 + + +
+ Table Notes (click to expand) + + * APtest denotes COCO [test-dev2017](http://cocodataset.org/#upload) server results, all other AP results denote val2017 accuracy. + * AP values are for single-model single-scale unless otherwise noted. **Reproduce mAP** by `python test.py --data coco.yaml --img 640 --conf 0.001 --iou 0.65` + * SpeedGPU averaged over 5000 COCO val2017 images using a GCP [n1-standard-16](https://cloud.google.com/compute/docs/machine-types#n1_standard_machine_types) V100 instance, and includes FP16 inference, postprocessing and NMS. **Reproduce speed** by `python test.py --data coco.yaml --img 640 --conf 0.25 --iou 0.45` + * All checkpoints are trained to 300 epochs with default settings and hyperparameters (no autoaugmentation). +
-** APtest denotes COCO [test-dev2017](http://cocodataset.org/#upload) server results, all other AP results denote val2017 accuracy. -** All AP numbers are for single-model single-scale without ensemble or TTA. **Reproduce mAP** by `python test.py --data coco.yaml --img 640 --conf 0.001 --iou 0.65` -** SpeedGPU averaged over 5000 COCO val2017 images using a GCP [n1-standard-16](https://cloud.google.com/compute/docs/machine-types#n1_standard_machine_types) V100 instance, and includes image preprocessing, FP16 inference, postprocessing and NMS. NMS is 1-2ms/img. **Reproduce speed** by `python test.py --data coco.yaml --img 640 --conf 0.25 --iou 0.45` -** All checkpoints are trained to 300 epochs with default settings and hyperparameters (no autoaugmentation). -** Test Time Augmentation ([TTA](https://github.com/ultralytics/yolov5/issues/303)) runs at 3 image sizes. **Reproduce TTA** by `python test.py --data coco.yaml --img 832 --iou 0.65 --augment` ## Requirements @@ -42,7 +68,9 @@ $ pip install -r requirements.txt ## Tutorials * [Train Custom Data](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data)  🚀 RECOMMENDED +* [Tips for Best Training Results](https://github.com/ultralytics/yolov5/wiki/Tips-for-Best-Training-Results)  ☘️ RECOMMENDED * [Weights & Biases Logging](https://github.com/ultralytics/yolov5/issues/1289)  🌟 NEW +* [Supervisely Ecosystem](https://github.com/ultralytics/yolov5/issues/2518)  🌟 NEW * [Multi-GPU Training](https://github.com/ultralytics/yolov5/issues/475) * [PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36)  ⭐ NEW * [ONNX and TorchScript Export](https://github.com/ultralytics/yolov5/issues/251) @@ -58,73 +86,59 @@ $ pip install -r requirements.txt YOLOv3 may be run in any of the following up-to-date verified environments (with all dependencies including [CUDA](https://developer.nvidia.com/cuda)/[CUDNN](https://developer.nvidia.com/cudnn), [Python](https://www.python.org/) and [PyTorch](https://pytorch.org/) preinstalled): -- **Google Colab Notebook** with free GPU: Open In Colab -- **Kaggle Notebook** with free GPU: [https://www.kaggle.com/ultralytics/yolov3](https://www.kaggle.com/ultralytics/yolov3) -- **Google Cloud** Deep Learning VM. See [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) -- **Docker Image** https://hub.docker.com/r/ultralytics/yolov3. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) ![Docker Pulls](https://img.shields.io/docker/pulls/ultralytics/yolov3?logo=docker) +- **Google Colab and Kaggle** notebooks with free GPU: Open In Colab Open In Kaggle +- **Google Cloud** Deep Learning VM. See [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) +- **Amazon** Deep Learning AMI. See [AWS Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/AWS-Quickstart) +- **Docker Image**. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) Docker Pulls ## Inference -detect.py runs inference on a variety of sources, downloading models automatically from the [latest YOLOv3 release](https://github.com/ultralytics/yolov3/releases) and saving results to `runs/detect`. +`detect.py` runs inference on a variety of sources, downloading models automatically from the [latest YOLOv3 release](https://github.com/ultralytics/yolov3/releases) and saving results to `runs/detect`. ```bash $ python detect.py --source 0 # webcam file.jpg # image file.mp4 # video path/ # directory path/*.jpg # glob - rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa # rtsp stream - rtmp://192.168.1.105/live/test # rtmp stream - http://112.50.243.8/PLTV/88888888/224/3221225900/1.m3u8 # http stream + 'https://youtu.be/NUsoVlDFqZg' # YouTube video + 'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP stream ``` To run inference on example images in `data/images`: ```bash $ python detect.py --source data/images --weights yolov3.pt --conf 0.25 - -Namespace(agnostic_nms=False, augment=False, classes=None, conf_thres=0.25, device='', exist_ok=False, img_size=640, iou_thres=0.45, name='exp', project='runs/detect', save_conf=False, save_txt=False, source='data/images/', update=False, view_img=False, weights=['yolov3.pt']) -Using torch 1.7.0+cu101 CUDA:0 (Tesla V100-SXM2-16GB, 16130MB) - -Downloading https://github.com/ultralytics/yolov3/releases/download/v1.0/yolov3.pt to yolov3.pt... 100% 118M/118M [00:05<00:00, 24.2MB/s] - -Fusing layers... -Model Summary: 261 layers, 61922845 parameters, 0 gradients -image 1/2 /content/yolov3/data/images/bus.jpg: 640x480 4 persons, 1 buss, Done. (0.014s) -image 2/2 /content/yolov3/data/images/zidane.jpg: 384x640 2 persons, 3 ties, Done. (0.014s) -Results saved to runs/detect/exp -Done. (0.133s) ``` - + ### PyTorch Hub -To run **batched inference** with YOLO3 and [PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36): +To run **batched inference** with YOLOv5 and [PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36): ```python import torch -from PIL import Image # Model -model = torch.hub.load('ultralytics/yolov3', 'yolov3', pretrained=True).autoshape() # for PIL/cv2/np inputs and NMS +model = torch.hub.load('ultralytics/yolov3', 'yolov3') # or 'yolov3_spp', 'yolov3_tiny' # Images -img1 = Image.open('zidane.jpg') -img2 = Image.open('bus.jpg') -imgs = [img1, img2] # batched list of images +dir = 'https://github.com/ultralytics/yolov3/raw/master/data/images/' +imgs = [dir + f for f in ('zidane.jpg', 'bus.jpg')] # batch of images # Inference -prediction = model(imgs, size=640) # includes NMS +results = model(imgs) +results.print() # or .show(), .save() ``` ## Training -Download [COCO](https://github.com/ultralytics/yolov3/blob/master/data/scripts/get_coco.sh) and run command below. Training times for YOLOv3/YOLOv3-SPP/YOLOv3-tiny are 6/6/2 days on a single V100 (multi-GPU times faster). Use the largest `--batch-size` your GPU allows (batch sizes shown for 16 GB devices). +Run commands below to reproduce results on [COCO](https://github.com/ultralytics/yolov3/blob/master/data/scripts/get_coco.sh) dataset (dataset auto-downloads on first use). Training times for YOLOv3/YOLOv3-SPP/YOLOv3-tiny are 6/6/2 days on a single V100 (multi-GPU times faster). Use the largest `--batch-size` your GPU allows (batch sizes shown for 16 GB devices). ```bash -$ python train.py --data coco.yaml --cfg yolov3.yaml --weights '' --batch-size 24 - yolov3-spp.yaml 24 - yolov3-tiny.yaml 64 +$ python train.py --data coco.yaml --cfg yolov3.yaml --weights '' --batch-size 24 + yolov3-spp.yaml 24 + yolov3-tiny.yaml 64 ``` - + ## Citation diff --git a/data/argoverse_hd.yaml b/data/argoverse_hd.yaml new file mode 100644 index 00000000..df7a9361 --- /dev/null +++ b/data/argoverse_hd.yaml @@ -0,0 +1,21 @@ +# Argoverse-HD dataset (ring-front-center camera) http://www.cs.cmu.edu/~mengtial/proj/streaming/ +# Train command: python train.py --data argoverse_hd.yaml +# Default dataset location is next to /yolov5: +# /parent_folder +# /argoverse +# /yolov5 + + +# download command/URL (optional) +download: bash data/scripts/get_argoverse_hd.sh + +# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/] +train: ../argoverse/Argoverse-1.1/images/train/ # 39384 images +val: ../argoverse/Argoverse-1.1/images/val/ # 15062 iamges +test: ../argoverse/Argoverse-1.1/images/test/ # Submit to: https://eval.ai/web/challenges/challenge-page/800/overview + +# number of classes +nc: 8 + +# class names +names: [ 'person', 'bicycle', 'car', 'motorcycle', 'bus', 'truck', 'traffic_light', 'stop_sign' ] diff --git a/data/coco.yaml b/data/coco.yaml index 09e0a4f4..1bc888e6 100644 --- a/data/coco.yaml +++ b/data/coco.yaml @@ -18,15 +18,15 @@ test: ../coco/test-dev2017.txt # 20288 of 40670 images, submit to https://compe nc: 80 # class names -names: ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light', - 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', - 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', - 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', - 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', - 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', - 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', - 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', - 'hair drier', 'toothbrush'] +names: [ 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light', + 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', + 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', + 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', + 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', + 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', + 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', + 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', + 'hair drier', 'toothbrush' ] # Print classes # with open('data/coco.yaml') as f: diff --git a/data/coco128.yaml b/data/coco128.yaml index abd129d9..f9d4c960 100644 --- a/data/coco128.yaml +++ b/data/coco128.yaml @@ -17,12 +17,12 @@ val: ../coco128/images/train2017/ # 128 images nc: 80 # class names -names: ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light', - 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', - 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', - 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', - 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', - 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', - 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', - 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', - 'hair drier', 'toothbrush'] +names: [ 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light', + 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', + 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', + 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', + 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', + 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', + 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', + 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', + 'hair drier', 'toothbrush' ] diff --git a/data/scripts/get_argoverse_hd.sh b/data/scripts/get_argoverse_hd.sh new file mode 100644 index 00000000..caec61ef --- /dev/null +++ b/data/scripts/get_argoverse_hd.sh @@ -0,0 +1,62 @@ +#!/bin/bash +# Argoverse-HD dataset (ring-front-center camera) http://www.cs.cmu.edu/~mengtial/proj/streaming/ +# Download command: bash data/scripts/get_argoverse_hd.sh +# Train command: python train.py --data argoverse_hd.yaml +# Default dataset location is next to /yolov5: +# /parent_folder +# /argoverse +# /yolov5 + +# Download/unzip images +d='../argoverse/' # unzip directory +mkdir $d +url=https://argoverse-hd.s3.us-east-2.amazonaws.com/ +f=Argoverse-HD-Full.zip +curl -L $url$f -o $f && unzip -q $f -d $d && rm $f &# download, unzip, remove in background +wait # finish background tasks + +cd ../argoverse/Argoverse-1.1/ +ln -s tracking images + +cd ../Argoverse-HD/annotations/ + +python3 - "$@" < 1)}, " # add to string # Write results for *xyxy, conf, cls in reversed(det): @@ -117,22 +118,25 @@ def detect(save_img=False): # Stream results if view_img: cv2.imshow(str(p), im0) + cv2.waitKey(1) # 1 millisecond # Save results (image with detections) if save_img: if dataset.mode == 'image': cv2.imwrite(save_path, im0) - else: # 'video' + else: # 'video' or 'stream' if vid_path != save_path: # new video vid_path = save_path if isinstance(vid_writer, cv2.VideoWriter): vid_writer.release() # release previous video writer - - fourcc = 'mp4v' # output video codec - fps = vid_cap.get(cv2.CAP_PROP_FPS) - w = int(vid_cap.get(cv2.CAP_PROP_FRAME_WIDTH)) - h = int(vid_cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) - vid_writer = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*fourcc), fps, (w, h)) + if vid_cap: # video + fps = vid_cap.get(cv2.CAP_PROP_FPS) + w = int(vid_cap.get(cv2.CAP_PROP_FRAME_WIDTH)) + h = int(vid_cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) + else: # stream + fps, w, h = 30, im0.shape[1], im0.shape[0] + save_path += '.mp4' + vid_writer = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (w, h)) vid_writer.write(im0) if save_txt or save_img: @@ -153,6 +157,7 @@ if __name__ == '__main__': parser.add_argument('--view-img', action='store_true', help='display results') parser.add_argument('--save-txt', action='store_true', help='save results to *.txt') parser.add_argument('--save-conf', action='store_true', help='save confidences in --save-txt labels') + parser.add_argument('--nosave', action='store_true', help='do not save images/videos') parser.add_argument('--classes', nargs='+', type=int, help='filter by class: --class 0, or --class 0 2 3') parser.add_argument('--agnostic-nms', action='store_true', help='class-agnostic NMS') parser.add_argument('--augment', action='store_true', help='augmented inference') @@ -162,7 +167,7 @@ if __name__ == '__main__': parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment') opt = parser.parse_args() print(opt) - check_requirements() + check_requirements(exclude=('pycocotools', 'thop')) with torch.no_grad(): if opt.update: # update all models (to fix SourceChangeWarning) diff --git a/hubconf.py b/hubconf.py index 7b0f2011..7d969b5a 100644 --- a/hubconf.py +++ b/hubconf.py @@ -1,8 +1,8 @@ -"""File for accessing YOLOv3 via PyTorch Hub https://pytorch.org/hub/ +"""YOLOv3 PyTorch Hub models https://pytorch.org/hub/ultralytics_yolov3/ Usage: import torch - model = torch.hub.load('ultralytics/yolov3', 'yolov3', pretrained=True, channels=3, classes=80) + model = torch.hub.load('ultralytics/yolov3', 'yolov3tiny') """ from pathlib import Path @@ -10,10 +10,12 @@ from pathlib import Path import torch from models.yolo import Model -from utils.general import set_logging +from utils.general import check_requirements, set_logging from utils.google_utils import attempt_download +from utils.torch_utils import select_device dependencies = ['torch', 'yaml'] +check_requirements(Path(__file__).parent / 'requirements.txt', exclude=('pycocotools', 'thop')) set_logging() @@ -21,7 +23,7 @@ def create(name, pretrained, channels, classes, autoshape): """Creates a specified YOLOv3 model Arguments: - name (str): name of model, i.e. 'yolov3_spp' + name (str): name of model, i.e. 'yolov3' pretrained (bool): load pretrained weights into the model channels (int): number of input channels classes (int): number of model classes @@ -29,21 +31,23 @@ def create(name, pretrained, channels, classes, autoshape): Returns: pytorch model """ - config = Path(__file__).parent / 'models' / f'{name}.yaml' # model.yaml path try: - model = Model(config, channels, classes) + cfg = list((Path(__file__).parent / 'models').rglob(f'{name}.yaml'))[0] # model.yaml path + model = Model(cfg, channels, classes) if pretrained: fname = f'{name}.pt' # checkpoint filename attempt_download(fname) # download if not found locally ckpt = torch.load(fname, map_location=torch.device('cpu')) # load - state_dict = ckpt['model'].float().state_dict() # to FP32 - state_dict = {k: v for k, v in state_dict.items() if model.state_dict()[k].shape == v.shape} # filter - model.load_state_dict(state_dict, strict=False) # load + msd = model.state_dict() # model state_dict + csd = ckpt['model'].float().state_dict() # checkpoint state_dict as FP32 + csd = {k: v for k, v in csd.items() if msd[k].shape == v.shape} # filter + model.load_state_dict(csd, strict=False) # load if len(ckpt['model'].names) == classes: model.names = ckpt['model'].names # set class names attribute if autoshape: model = model.autoshape() # for file/URI/PIL/cv2/np inputs and NMS - return model + device = select_device('0' if torch.cuda.is_available() else 'cpu') # default to GPU if available + return model.to(device) except Exception as e: help_url = 'https://github.com/ultralytics/yolov5/issues/36' @@ -51,50 +55,8 @@ def create(name, pretrained, channels, classes, autoshape): raise Exception(s) from e -def yolov3(pretrained=False, channels=3, classes=80, autoshape=True): - """YOLOv3 model from https://github.com/ultralytics/yolov3 - - Arguments: - pretrained (bool): load pretrained weights into the model, default=False - channels (int): number of input channels, default=3 - classes (int): number of model classes, default=80 - - Returns: - pytorch model - """ - return create('yolov3', pretrained, channels, classes, autoshape) - - -def yolov3_spp(pretrained=False, channels=3, classes=80, autoshape=True): - """YOLOv3-SPP model from https://github.com/ultralytics/yolov3 - - Arguments: - pretrained (bool): load pretrained weights into the model, default=False - channels (int): number of input channels, default=3 - classes (int): number of model classes, default=80 - - Returns: - pytorch model - """ - return create('yolov3-spp', pretrained, channels, classes, autoshape) - - -def yolov3_tiny(pretrained=False, channels=3, classes=80, autoshape=True): - """YOLOv3-tiny model from https://github.com/ultralytics/yolov3 - - Arguments: - pretrained (bool): load pretrained weights into the model, default=False - channels (int): number of input channels, default=3 - classes (int): number of model classes, default=80 - - Returns: - pytorch model - """ - return create('yolov3-tiny', pretrained, channels, classes, autoshape) - - def custom(path_or_model='path/to/model.pt', autoshape=True): - """YOLOv3-custom model from https://github.com/ultralytics/yolov3 + """YOLOv3-custom model https://github.com/ultralytics/yolov3 Arguments (3 options): path_or_model (str): 'path/to/model.pt' @@ -106,12 +68,30 @@ def custom(path_or_model='path/to/model.pt', autoshape=True): """ model = torch.load(path_or_model) if isinstance(path_or_model, str) else path_or_model # load checkpoint if isinstance(model, dict): - model = model['model'] # load model + model = model['ema' if model.get('ema') else 'model'] # load model hub_model = Model(model.yaml).to(next(model.parameters()).device) # create hub_model.load_state_dict(model.float().state_dict()) # load state_dict hub_model.names = model.names # class names - return hub_model.autoshape() if autoshape else hub_model + if autoshape: + hub_model = hub_model.autoshape() # for file/URI/PIL/cv2/np inputs and NMS + device = select_device('0' if torch.cuda.is_available() else 'cpu') # default to GPU if available + return hub_model.to(device) + + +def yolov3(pretrained=True, channels=3, classes=80, autoshape=True): + # YOLOv3 model https://github.com/ultralytics/yolov3 + return create('yolov3', pretrained, channels, classes, autoshape) + + +def yolov3_spp(pretrained=True, channels=3, classes=80, autoshape=True): + # YOLOv3-SPP model https://github.com/ultralytics/yolov3 + return create('yolov3-spp', pretrained, channels, classes, autoshape) + + +def yolov3_tiny(pretrained=True, channels=3, classes=80, autoshape=True): + # YOLOv3-tiny model https://github.com/ultralytics/yolov3 + return create('yolov3-tiny', pretrained, channels, classes, autoshape) if __name__ == '__main__': @@ -119,9 +99,14 @@ if __name__ == '__main__': # model = custom(path_or_model='path/to/model.pt') # custom example # Verify inference + import numpy as np from PIL import Image - imgs = [Image.open(x) for x in Path('data/images').glob('*.jpg')] - results = model(imgs) - results.show() + imgs = [Image.open('data/images/bus.jpg'), # PIL + 'data/images/zidane.jpg', # filename + 'https://github.com/ultralytics/yolov3/raw/master/data/images/bus.jpg', # URI + np.zeros((640, 480, 3))] # numpy + + results = model(imgs) # batched inference results.print() + results.save() diff --git a/models/common.py b/models/common.py index fd9d9fcd..9496b1b4 100644 --- a/models/common.py +++ b/models/common.py @@ -1,16 +1,21 @@ -# This file contains modules common to various models +# YOLOv3 common modules import math +from copy import copy +from pathlib import Path import numpy as np +import pandas as pd import requests import torch import torch.nn as nn -from PIL import Image, ImageDraw +from PIL import Image +from torch.cuda import amp from utils.datasets import letterbox -from utils.general import non_max_suppression, make_divisible, scale_coords, xyxy2xywh -from utils.plots import color_list +from utils.general import non_max_suppression, make_divisible, scale_coords, increment_path, xyxy2xywh +from utils.plots import color_list, plot_one_box +from utils.torch_utils import time_synchronized def autopad(k, p=None): # kernel, padding @@ -40,6 +45,52 @@ class Conv(nn.Module): return self.act(self.conv(x)) +class TransformerLayer(nn.Module): + # Transformer layer https://arxiv.org/abs/2010.11929 (LayerNorm layers removed for better performance) + def __init__(self, c, num_heads): + super().__init__() + self.q = nn.Linear(c, c, bias=False) + self.k = nn.Linear(c, c, bias=False) + self.v = nn.Linear(c, c, bias=False) + self.ma = nn.MultiheadAttention(embed_dim=c, num_heads=num_heads) + self.fc1 = nn.Linear(c, c, bias=False) + self.fc2 = nn.Linear(c, c, bias=False) + + def forward(self, x): + x = self.ma(self.q(x), self.k(x), self.v(x))[0] + x + x = self.fc2(self.fc1(x)) + x + return x + + +class TransformerBlock(nn.Module): + # Vision Transformer https://arxiv.org/abs/2010.11929 + def __init__(self, c1, c2, num_heads, num_layers): + super().__init__() + self.conv = None + if c1 != c2: + self.conv = Conv(c1, c2) + self.linear = nn.Linear(c2, c2) # learnable position embedding + self.tr = nn.Sequential(*[TransformerLayer(c2, num_heads) for _ in range(num_layers)]) + self.c2 = c2 + + def forward(self, x): + if self.conv is not None: + x = self.conv(x) + b, _, w, h = x.shape + p = x.flatten(2) + p = p.unsqueeze(0) + p = p.transpose(0, 3) + p = p.squeeze(3) + e = self.linear(p) + x = p + e + + x = self.tr(x) + x = x.unsqueeze(3) + x = x.transpose(0, 3) + x = x.reshape(b, self.c2, w, h) + return x + + class Bottleneck(nn.Module): # Standard bottleneck def __init__(self, c1, c2, shortcut=True, g=1, e=0.5): # ch_in, ch_out, shortcut, groups, expansion @@ -87,6 +138,14 @@ class C3(nn.Module): return self.cv3(torch.cat((self.m(self.cv1(x)), self.cv2(x)), dim=1)) +class C3TR(C3): + # C3 module with TransformerBlock() + def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): + super().__init__(c1, c2, n, shortcut, g, e) + c_ = int(c2 * e) + self.m = TransformerBlock(c_, c_, 4, n) + + class SPP(nn.Module): # Spatial pyramid pooling layer used in YOLOv3-SPP def __init__(self, c1, c2, k=(5, 9, 13)): @@ -166,7 +225,6 @@ class NMS(nn.Module): class autoShape(nn.Module): # input-robust model wrapper for passing cv2/np/PIL/torch inputs. Includes preprocessing, inference and NMS - img_size = 640 # inference size (pixels) conf = 0.25 # NMS confidence threshold iou = 0.45 # NMS IoU threshold classes = None # (optional list) filter by class @@ -179,27 +237,33 @@ class autoShape(nn.Module): print('autoShape already enabled, skipping... ') # model already converted to model.autoshape() return self + @torch.no_grad() def forward(self, imgs, size=640, augment=False, profile=False): - # Inference from various sources. For height=720, width=1280, RGB images example inputs are: + # Inference from various sources. For height=640, width=1280, RGB images example inputs are: # filename: imgs = 'data/samples/zidane.jpg' # URI: = 'https://github.com/ultralytics/yolov5/releases/download/v1.0/zidane.jpg' - # OpenCV: = cv2.imread('image.jpg')[:,:,::-1] # HWC BGR to RGB x(720,1280,3) - # PIL: = Image.open('image.jpg') # HWC x(720,1280,3) - # numpy: = np.zeros((720,1280,3)) # HWC - # torch: = torch.zeros(16,3,720,1280) # BCHW + # OpenCV: = cv2.imread('image.jpg')[:,:,::-1] # HWC BGR to RGB x(640,1280,3) + # PIL: = Image.open('image.jpg') # HWC x(640,1280,3) + # numpy: = np.zeros((640,1280,3)) # HWC + # torch: = torch.zeros(16,3,320,640) # BCHW (scaled to size=640, 0-1 values) # multiple: = [Image.open('image1.jpg'), Image.open('image2.jpg'), ...] # list of images + t = [time_synchronized()] p = next(self.model.parameters()) # for device and type if isinstance(imgs, torch.Tensor): # torch - return self.model(imgs.to(p.device).type_as(p), augment, profile) # inference + with amp.autocast(enabled=p.device.type != 'cpu'): + return self.model(imgs.to(p.device).type_as(p), augment, profile) # inference # Pre-process n, imgs = (len(imgs), imgs) if isinstance(imgs, list) else (1, [imgs]) # number of images, list of images - shape0, shape1 = [], [] # image and inference shapes + shape0, shape1, files = [], [], [] # image and inference shapes, filenames for i, im in enumerate(imgs): + f = f'image{i}' # filename if isinstance(im, str): # filename or uri - im = Image.open(requests.get(im, stream=True).raw if im.startswith('http') else im) # open - im = np.array(im) # to numpy + im, f = np.asarray(Image.open(requests.get(im, stream=True).raw if im.startswith('http') else im)), im + elif isinstance(im, Image.Image): # PIL Image + im, f = np.asarray(im), getattr(im, 'filename', f) or f + files.append(Path(f).with_suffix('.jpg').name) if im.shape[0] < 5: # image in CHW im = im.transpose((1, 2, 0)) # reverse dataloader .transpose(2, 0, 1) im = im[:, :, :3] if im.ndim == 3 else np.tile(im[:, :, None], 3) # enforce 3ch input @@ -213,82 +277,101 @@ class autoShape(nn.Module): x = np.stack(x, 0) if n > 1 else x[0][None] # stack x = np.ascontiguousarray(x.transpose((0, 3, 1, 2))) # BHWC to BCHW x = torch.from_numpy(x).to(p.device).type_as(p) / 255. # uint8 to fp16/32 + t.append(time_synchronized()) - # Inference - with torch.no_grad(): + with amp.autocast(enabled=p.device.type != 'cpu'): + # Inference y = self.model(x, augment, profile)[0] # forward - y = non_max_suppression(y, conf_thres=self.conf, iou_thres=self.iou, classes=self.classes) # NMS + t.append(time_synchronized()) - # Post-process - for i in range(n): - scale_coords(shape1, y[i][:, :4], shape0[i]) + # Post-process + y = non_max_suppression(y, conf_thres=self.conf, iou_thres=self.iou, classes=self.classes) # NMS + for i in range(n): + scale_coords(shape1, y[i][:, :4], shape0[i]) - return Detections(imgs, y, self.names) + t.append(time_synchronized()) + return Detections(imgs, y, files, t, self.names, x.shape) class Detections: - # detections class for YOLOv5 inference results - def __init__(self, imgs, pred, names=None): + # detections class for YOLOv3 inference results + def __init__(self, imgs, pred, files, times=None, names=None, shape=None): super(Detections, self).__init__() d = pred[0].device # device gn = [torch.tensor([*[im.shape[i] for i in [1, 0, 1, 0]], 1., 1.], device=d) for im in imgs] # normalizations self.imgs = imgs # list of images as numpy arrays self.pred = pred # list of tensors pred[0] = (xyxy, conf, cls) self.names = names # class names + self.files = files # image filenames self.xyxy = pred # xyxy pixels self.xywh = [xyxy2xywh(x) for x in pred] # xywh pixels self.xyxyn = [x / g for x, g in zip(self.xyxy, gn)] # xyxy normalized self.xywhn = [x / g for x, g in zip(self.xywh, gn)] # xywh normalized - self.n = len(self.pred) + self.n = len(self.pred) # number of images (batch size) + self.t = tuple((times[i + 1] - times[i]) * 1000 / self.n for i in range(3)) # timestamps (ms) + self.s = shape # inference BCHW shape - def display(self, pprint=False, show=False, save=False, render=False): + def display(self, pprint=False, show=False, save=False, render=False, save_dir=''): colors = color_list() for i, (img, pred) in enumerate(zip(self.imgs, self.pred)): - str = f'Image {i + 1}/{len(self.pred)}: {img.shape[0]}x{img.shape[1]} ' + str = f'image {i + 1}/{len(self.pred)}: {img.shape[0]}x{img.shape[1]} ' if pred is not None: for c in pred[:, -1].unique(): n = (pred[:, -1] == c).sum() # detections per class - str += f'{n} {self.names[int(c)]}s, ' # add to string + str += f"{n} {self.names[int(c)]}{'s' * (n > 1)}, " # add to string if show or save or render: - img = Image.fromarray(img.astype(np.uint8)) if isinstance(img, np.ndarray) else img # from np for *box, conf, cls in pred: # xyxy, confidence, class - # str += '%s %.2f, ' % (names[int(cls)], conf) # label - ImageDraw.Draw(img).rectangle(box, width=4, outline=colors[int(cls) % 10]) # plot + label = f'{self.names[int(cls)]} {conf:.2f}' + plot_one_box(box, img, label=label, color=colors[int(cls) % 10]) + img = Image.fromarray(img.astype(np.uint8)) if isinstance(img, np.ndarray) else img # from np if pprint: - print(str) + print(str.rstrip(', ')) if show: - img.show(f'Image {i}') # show + img.show(self.files[i]) # show if save: - f = f'results{i}.jpg' - str += f"saved to '{f}'" - img.save(f) # save + f = self.files[i] + img.save(Path(save_dir) / f) # save + print(f"{'Saved' * (i == 0)} {f}", end=',' if i < self.n - 1 else f' to {save_dir}\n') if render: self.imgs[i] = np.asarray(img) def print(self): self.display(pprint=True) # print results + print(f'Speed: %.1fms pre-process, %.1fms inference, %.1fms NMS per image at shape {tuple(self.s)}' % self.t) def show(self): self.display(show=True) # show results - def save(self): - self.display(save=True) # save results + def save(self, save_dir='runs/hub/exp'): + save_dir = increment_path(save_dir, exist_ok=save_dir != 'runs/hub/exp') # increment save_dir + Path(save_dir).mkdir(parents=True, exist_ok=True) + self.display(save=True, save_dir=save_dir) # save results def render(self): self.display(render=True) # render results return self.imgs - def __len__(self): - return self.n + def pandas(self): + # return detections as pandas DataFrames, i.e. print(results.pandas().xyxy[0]) + new = copy(self) # return copy + ca = 'xmin', 'ymin', 'xmax', 'ymax', 'confidence', 'class', 'name' # xyxy columns + cb = 'xcenter', 'ycenter', 'width', 'height', 'confidence', 'class', 'name' # xywh columns + for k, c in zip(['xyxy', 'xyxyn', 'xywh', 'xywhn'], [ca, ca, cb, cb]): + a = [[x[:5] + [int(x[5]), self.names[int(x[5])]] for x in x.tolist()] for x in getattr(self, k)] # update + setattr(new, k, [pd.DataFrame(x, columns=c) for x in a]) + return new def tolist(self): # return a list of Detections objects, i.e. 'for result in results.tolist():' - x = [Detections([self.imgs[i]], [self.pred[i]], self.names) for i in range(self.n)] + x = [Detections([self.imgs[i]], [self.pred[i]], self.names, self.s) for i in range(self.n)] for d in x: for k in ['imgs', 'pred', 'xyxy', 'xyxyn', 'xywh', 'xywhn']: setattr(d, k, getattr(d, k)[0]) # pop out of list return x + def __len__(self): + return self.n + class Classify(nn.Module): # Classification head, i.e. x(b,c1,20,20) to x(b,c2) diff --git a/models/experimental.py b/models/experimental.py index 2dbbf7fa..62279154 100644 --- a/models/experimental.py +++ b/models/experimental.py @@ -1,4 +1,4 @@ -# This file contains experimental modules +# YOLOv3 experimental modules import numpy as np import torch @@ -58,7 +58,7 @@ class GhostConv(nn.Module): class GhostBottleneck(nn.Module): # Ghost Bottleneck https://github.com/huawei-noah/ghostnet - def __init__(self, c1, c2, k, s): + def __init__(self, c1, c2, k=3, s=1): # ch_in, ch_out, kernel, stride super(GhostBottleneck, self).__init__() c_ = c2 // 2 self.conv = nn.Sequential(GhostConv(c1, c_, 1, 1), # pw @@ -115,11 +115,12 @@ def attempt_load(weights, map_location=None): model = Ensemble() for w in weights if isinstance(weights, list) else [weights]: attempt_download(w) - model.append(torch.load(w, map_location=map_location)['model'].float().fuse().eval()) # load FP32 model + ckpt = torch.load(w, map_location=map_location) # load + model.append(ckpt['ema' if ckpt.get('ema') else 'model'].float().fuse().eval()) # FP32 model # Compatibility updates for m in model.modules(): - if type(m) in [nn.Hardswish, nn.LeakyReLU, nn.ReLU, nn.ReLU6]: + if type(m) in [nn.Hardswish, nn.LeakyReLU, nn.ReLU, nn.ReLU6, nn.SiLU]: m.inplace = True # pytorch 1.7.0 compatibility elif type(m) is Conv: m._non_persistent_buffers_set = set() # pytorch 1.6.0 compatibility diff --git a/models/export.py b/models/export.py index 49df43e9..99189601 100644 --- a/models/export.py +++ b/models/export.py @@ -1,4 +1,4 @@ -"""Exports a YOLOv5 *.pt model to ONNX and TorchScript formats +"""Exports a YOLOv3 *.pt model to ONNX and TorchScript formats Usage: $ export PYTHONPATH="$PWD" && python models/export.py --weights ./weights/yolov3.pt --img 640 --batch 1 @@ -17,12 +17,16 @@ import models from models.experimental import attempt_load from utils.activations import Hardswish, SiLU from utils.general import set_logging, check_img_size +from utils.torch_utils import select_device if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--weights', type=str, default='./yolov3.pt', help='weights path') # from yolov3/models/ parser.add_argument('--img-size', nargs='+', type=int, default=[640, 640], help='image size') # height, width parser.add_argument('--batch-size', type=int, default=1, help='batch size') + parser.add_argument('--dynamic', action='store_true', help='dynamic ONNX axes') + parser.add_argument('--grid', action='store_true', help='export Detect() layer grid') + parser.add_argument('--device', default='cpu', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') opt = parser.parse_args() opt.img_size *= 2 if len(opt.img_size) == 1 else 1 # expand print(opt) @@ -30,7 +34,8 @@ if __name__ == '__main__': t = time.time() # Load PyTorch model - model = attempt_load(opt.weights, map_location=torch.device('cpu')) # load FP32 model + device = select_device(opt.device) + model = attempt_load(opt.weights, map_location=device) # load FP32 model labels = model.names # Checks @@ -38,7 +43,7 @@ if __name__ == '__main__': opt.img_size = [check_img_size(x, gs) for x in opt.img_size] # verify img_size are gs-multiples # Input - img = torch.zeros(opt.batch_size, 3, *opt.img_size) # image size(1,3,320,192) iDetection + img = torch.zeros(opt.batch_size, 3, *opt.img_size).to(device) # image size(1,3,320,192) iDetection # Update model for k, m in model.named_modules(): @@ -50,14 +55,14 @@ if __name__ == '__main__': m.act = SiLU() # elif isinstance(m, models.yolo.Detect): # m.forward = m.forward_export # assign forward (optional) - model.model[-1].export = True # set Detect() layer export=True + model.model[-1].export = not opt.grid # set Detect() layer grid export y = model(img) # dry run # TorchScript export try: print('\nStarting TorchScript export with torch %s...' % torch.__version__) f = opt.weights.replace('.pt', '.torchscript.pt') # filename - ts = torch.jit.trace(model, img) + ts = torch.jit.trace(model, img, strict=False) ts.save(f) print('TorchScript export success, saved as %s' % f) except Exception as e: @@ -70,7 +75,9 @@ if __name__ == '__main__': print('\nStarting ONNX export with onnx %s...' % onnx.__version__) f = opt.weights.replace('.pt', '.onnx') # filename torch.onnx.export(model, img, f, verbose=False, opset_version=12, input_names=['images'], - output_names=['classes', 'boxes'] if y is None else ['output']) + output_names=['classes', 'boxes'] if y is None else ['output'], + dynamic_axes={'images': {0: 'batch', 2: 'height', 3: 'width'}, # size(1,3,640,640) + 'output': {0: 'batch', 2: 'y', 3: 'x'}} if opt.dynamic else None) # Checks onnx_model = onnx.load(f) # load onnx model diff --git a/models/yolo.py b/models/yolo.py index 9f471009..706ea20e 100644 --- a/models/yolo.py +++ b/models/yolo.py @@ -1,14 +1,15 @@ +# YOLOv3 YOLO-specific modules + import argparse import logging import sys from copy import deepcopy -from pathlib import Path sys.path.append('./') # to run '$ python *.py' files in subdirectories logger = logging.getLogger(__name__) from models.common import * -from models.experimental import MixConv2d, CrossConv +from models.experimental import * from utils.autoanchor import check_anchor_order from utils.general import make_divisible, check_file, set_logging from utils.torch_utils import time_synchronized, fuse_conv_and_bn, model_info, scale_img, initialize_weights, \ @@ -50,7 +51,7 @@ class Detect(nn.Module): self.grid[i] = self._make_grid(nx, ny).to(x[i].device) y = x[i].sigmoid() - y[..., 0:2] = (y[..., 0:2] * 2. - 0.5 + self.grid[i].to(x[i].device)) * self.stride[i] # xy + y[..., 0:2] = (y[..., 0:2] * 2. - 0.5 + self.grid[i]) * self.stride[i] # xy y[..., 2:4] = (y[..., 2:4] * 2) ** 2 * self.anchor_grid[i] # wh z.append(y.view(bs, -1, self.no)) @@ -63,7 +64,7 @@ class Detect(nn.Module): class Model(nn.Module): - def __init__(self, cfg='yolov3.yaml', ch=3, nc=None): # model, input channels, number of classes + def __init__(self, cfg='yolov3.yaml', ch=3, nc=None, anchors=None): # model, input channels, number of classes super(Model, self).__init__() if isinstance(cfg, dict): self.yaml = cfg # model dict @@ -71,13 +72,16 @@ class Model(nn.Module): import yaml # for torch hub self.yaml_file = Path(cfg).name with open(cfg) as f: - self.yaml = yaml.load(f, Loader=yaml.FullLoader) # model dict + self.yaml = yaml.load(f, Loader=yaml.SafeLoader) # model dict # Define model ch = self.yaml['ch'] = self.yaml.get('ch', ch) # input channels if nc and nc != self.yaml['nc']: - logger.info('Overriding model.yaml nc=%g with nc=%g' % (self.yaml['nc'], nc)) + logger.info(f"Overriding model.yaml nc={self.yaml['nc']} with nc={nc}") self.yaml['nc'] = nc # override yaml value + if anchors: + logger.info(f'Overriding model.yaml anchors with anchors={anchors}') + self.yaml['anchors'] = round(anchors) # override yaml value self.model, self.save = parse_model(deepcopy(self.yaml), ch=[ch]) # model, savelist self.names = [str(i) for i in range(self.yaml['nc'])] # default names # print([x.shape for x in self.forward(torch.zeros(1, ch, 64, 64))]) @@ -107,7 +111,7 @@ class Model(nn.Module): for si, fi in zip(s, f): xi = scale_img(x.flip(fi) if fi else x, si, gs=int(self.stride.max())) yi = self.forward_once(xi)[0] # forward - # cv2.imwrite('img%g.jpg' % s, 255 * xi[0].numpy().transpose((1, 2, 0))[:, :, ::-1]) # save + # cv2.imwrite(f'img_{si}.jpg', 255 * xi[0].cpu().numpy().transpose((1, 2, 0))[:, :, ::-1]) # save yi[..., :4] /= si # de-scale if fi == 2: yi[..., 1] = img_size[0] - yi[..., 1] # de-flip ud @@ -210,45 +214,30 @@ def parse_model(d, ch): # model_dict, input_channels(3) pass n = max(round(n * gd), 1) if n > 1 else n # depth gain - if m in [Conv, Bottleneck, SPP, DWConv, MixConv2d, Focus, CrossConv, BottleneckCSP, C3]: + if m in [Conv, GhostConv, Bottleneck, GhostBottleneck, SPP, DWConv, MixConv2d, Focus, CrossConv, BottleneckCSP, + C3, C3TR]: c1, c2 = ch[f], args[0] - - # Normal - # if i > 0 and args[0] != no: # channel expansion factor - # ex = 1.75 # exponential (default 2.0) - # e = math.log(c2 / ch[1]) / math.log(2) - # c2 = int(ch[1] * ex ** e) - # if m != Focus: - - c2 = make_divisible(c2 * gw, 8) if c2 != no else c2 - - # Experimental - # if i > 0 and args[0] != no: # channel expansion factor - # ex = 1 + gw # exponential (default 2.0) - # ch1 = 32 # ch[1] - # e = math.log(c2 / ch1) / math.log(2) # level 1-n - # c2 = int(ch1 * ex ** e) - # if m != Focus: - # c2 = make_divisible(c2, 8) if c2 != no else c2 + if c2 != no: # if not output + c2 = make_divisible(c2 * gw, 8) args = [c1, c2, *args[1:]] - if m in [BottleneckCSP, C3]: - args.insert(2, n) + if m in [BottleneckCSP, C3, C3TR]: + args.insert(2, n) # number of repeats n = 1 elif m is nn.BatchNorm2d: args = [ch[f]] elif m is Concat: - c2 = sum([ch[x if x < 0 else x + 1] for x in f]) + c2 = sum([ch[x] for x in f]) elif m is Detect: - args.append([ch[x + 1] for x in f]) + args.append([ch[x] for x in f]) if isinstance(args[1], int): # number of anchors args[1] = [list(range(args[1] * 2))] * len(f) elif m is Contract: - c2 = ch[f if f < 0 else f + 1] * args[0] ** 2 + c2 = ch[f] * args[0] ** 2 elif m is Expand: - c2 = ch[f if f < 0 else f + 1] // args[0] ** 2 + c2 = ch[f] // args[0] ** 2 else: - c2 = ch[f if f < 0 else f + 1] + c2 = ch[f] m_ = nn.Sequential(*[m(*args) for _ in range(n)]) if n > 1 else m(*args) # module t = str(m)[8:-2].replace('__main__.', '') # module type @@ -257,6 +246,8 @@ def parse_model(d, ch): # model_dict, input_channels(3) logger.info('%3s%18s%3s%10.0f %-40s%-30s' % (i, f, n, np, t, args)) # print save.extend(x % i for x in ([f] if isinstance(f, int) else f) if x != -1) # append to savelist layers.append(m_) + if i == 0: + ch = [] ch.append(c2) return nn.Sequential(*layers), sorted(save) diff --git a/requirements.txt b/requirements.txt index 3c23f2b7..fd187eb5 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,19 +1,18 @@ # pip install -r requirements.txt # base ---------------------------------------- -Cython matplotlib>=3.2.2 numpy>=1.18.5 opencv-python>=4.1.2 Pillow -PyYAML>=5.3 +PyYAML>=5.3.1 scipy>=1.4.1 -tensorboard>=2.2 torch>=1.7.0 torchvision>=0.8.1 tqdm>=4.41.0 # logging ------------------------------------- +tensorboard>=2.4.1 # wandb # plotting ------------------------------------ @@ -21,8 +20,8 @@ seaborn>=0.11.0 pandas # export -------------------------------------- -# coremltools==4.0 -# onnx>=1.8.0 +# coremltools>=4.1 +# onnx>=1.8.1 # scikit-learn==0.19.2 # for coreml quantization # extras -------------------------------------- diff --git a/test.py b/test.py index c570a788..0b7f61c1 100644 --- a/test.py +++ b/test.py @@ -13,7 +13,6 @@ from models.experimental import attempt_load from utils.datasets import create_dataloader from utils.general import coco80_to_coco91_class, check_dataset, check_file, check_img_size, check_requirements, \ box_iou, non_max_suppression, scale_coords, xyxy2xywh, xywh2xyxy, set_logging, increment_path, colorstr -from utils.loss import compute_loss from utils.metrics import ap_per_class, ConfusionMatrix from utils.plots import plot_images, output_to_target, plot_study_txt from utils.torch_utils import select_device, time_synchronized @@ -36,8 +35,10 @@ def test(data, save_hybrid=False, # for hybrid auto-labelling save_conf=False, # save auto-label confidences plots=True, - log_imgs=0): # number of logged images - + wandb_logger=None, + compute_loss=None, + half_precision=True, + is_coco=False): # Initialize/load model and set device training = model is not None if training: # called by train.py @@ -53,47 +54,46 @@ def test(data, # Load model model = attempt_load(weights, map_location=device) # load FP32 model - imgsz = check_img_size(imgsz, s=model.stride.max()) # check img_size + gs = max(int(model.stride.max()), 32) # grid size (max stride) + imgsz = check_img_size(imgsz, s=gs) # check img_size # Multi-GPU disabled, incompatible with .half() https://github.com/ultralytics/yolov5/issues/99 # if device.type != 'cpu' and torch.cuda.device_count() > 1: # model = nn.DataParallel(model) # Half - half = device.type != 'cpu' # half precision only supported on CUDA + half = device.type != 'cpu' and half_precision # half precision only supported on CUDA if half: model.half() # Configure model.eval() - is_coco = data.endswith('coco.yaml') # is COCO dataset - with open(data) as f: - data = yaml.load(f, Loader=yaml.FullLoader) # model dict + if isinstance(data, str): + is_coco = data.endswith('coco.yaml') + with open(data) as f: + data = yaml.load(f, Loader=yaml.SafeLoader) check_dataset(data) # check nc = 1 if single_cls else int(data['nc']) # number of classes iouv = torch.linspace(0.5, 0.95, 10).to(device) # iou vector for mAP@0.5:0.95 niou = iouv.numel() # Logging - log_imgs, wandb = min(log_imgs, 100), None # ceil - try: - import wandb # Weights & Biases - except ImportError: - log_imgs = 0 - + log_imgs = 0 + if wandb_logger and wandb_logger.wandb: + log_imgs = min(wandb_logger.log_imgs, 100) # Dataloader if not training: - img = torch.zeros((1, 3, imgsz, imgsz), device=device) # init img - _ = model(img.half() if half else img) if device.type != 'cpu' else None # run once - path = data['test'] if opt.task == 'test' else data['val'] # path to val/test images - dataloader = create_dataloader(path, imgsz, batch_size, model.stride.max(), opt, pad=0.5, rect=True, - prefix=colorstr('test: ' if opt.task == 'test' else 'val: '))[0] + if device.type != 'cpu': + model(torch.zeros(1, 3, imgsz, imgsz).to(device).type_as(next(model.parameters()))) # run once + task = opt.task if opt.task in ('train', 'val', 'test') else 'val' # path to train/val/test images + dataloader = create_dataloader(data[task], imgsz, batch_size, gs, opt, pad=0.5, rect=True, + prefix=colorstr(f'{task}: '))[0] seen = 0 confusion_matrix = ConfusionMatrix(nc=nc) names = {k: v for k, v in enumerate(model.names if hasattr(model, 'names') else model.module.names)} coco91class = coco80_to_coco91_class() - s = ('%20s' + '%12s' * 6) % ('Class', 'Images', 'Targets', 'P', 'R', 'mAP@.5', 'mAP@.5:.95') + s = ('%20s' + '%12s' * 6) % ('Class', 'Images', 'Labels', 'P', 'R', 'mAP@.5', 'mAP@.5:.95') p, r, f1, mp, mr, map50, map, t0, t1 = 0., 0., 0., 0., 0., 0., 0., 0., 0. loss = torch.zeros(3, device=device) jdict, stats, ap, ap_class, wandb_images = [], [], [], [], [] @@ -107,22 +107,22 @@ def test(data, with torch.no_grad(): # Run model t = time_synchronized() - inf_out, train_out = model(img, augment=augment) # inference and training outputs + out, train_out = model(img, augment=augment) # inference and training outputs t0 += time_synchronized() - t # Compute loss - if training: - loss += compute_loss([x.float() for x in train_out], targets, model)[1][:3] # box, obj, cls + if compute_loss: + loss += compute_loss([x.float() for x in train_out], targets)[1][:3] # box, obj, cls # Run NMS targets[:, 2:] *= torch.Tensor([width, height, width, height]).to(device) # to pixels lb = [targets[targets[:, 0] == i, 1:] for i in range(nb)] if save_hybrid else [] # for autolabelling t = time_synchronized() - output = non_max_suppression(inf_out, conf_thres=conf_thres, iou_thres=iou_thres, labels=lb) + out = non_max_suppression(out, conf_thres=conf_thres, iou_thres=iou_thres, labels=lb, multi_label=True) t1 += time_synchronized() - t # Statistics per image - for si, pred in enumerate(output): + for si, pred in enumerate(out): labels = targets[targets[:, 0] == si, 1:] nl = len(labels) tcls = labels[:, 0].tolist() if nl else [] # target class @@ -147,15 +147,17 @@ def test(data, with open(save_dir / 'labels' / (path.stem + '.txt'), 'a') as f: f.write(('%g ' * len(line)).rstrip() % line + '\n') - # W&B logging - if plots and len(wandb_images) < log_imgs: - box_data = [{"position": {"minX": xyxy[0], "minY": xyxy[1], "maxX": xyxy[2], "maxY": xyxy[3]}, - "class_id": int(cls), - "box_caption": "%s %.3f" % (names[cls], conf), - "scores": {"class_score": conf}, - "domain": "pixel"} for *xyxy, conf, cls in pred.tolist()] - boxes = {"predictions": {"box_data": box_data, "class_labels": names}} # inference-space - wandb_images.append(wandb.Image(img[si], boxes=boxes, caption=path.name)) + # W&B logging - Media Panel Plots + if len(wandb_images) < log_imgs and wandb_logger.current_epoch > 0: # Check for test operation + if wandb_logger.current_epoch % wandb_logger.bbox_interval == 0: + box_data = [{"position": {"minX": xyxy[0], "minY": xyxy[1], "maxX": xyxy[2], "maxY": xyxy[3]}, + "class_id": int(cls), + "box_caption": "%s %.3f" % (names[cls], conf), + "scores": {"class_score": conf}, + "domain": "pixel"} for *xyxy, conf, cls in pred.tolist()] + boxes = {"predictions": {"box_data": box_data, "class_labels": names}} # inference-space + wandb_images.append(wandb_logger.wandb.Image(img[si], boxes=boxes, caption=path.name)) + wandb_logger.log_training_progress(predn, path, names) if wandb_logger and wandb_logger.wandb_run else None # Append to pycocotools JSON dictionary if save_json: @@ -179,7 +181,7 @@ def test(data, tbox = xywh2xyxy(labels[:, 1:5]) scale_coords(img[si].shape[1:], tbox, shapes[si][0], shapes[si][1]) # native-space labels if plots: - confusion_matrix.process_batch(pred, torch.cat((labels[:, 0:1], tbox), 1)) + confusion_matrix.process_batch(predn, torch.cat((labels[:, 0:1], tbox), 1)) # Per target class for cls in torch.unique(tcls_tensor): @@ -210,24 +212,24 @@ def test(data, f = save_dir / f'test_batch{batch_i}_labels.jpg' # labels Thread(target=plot_images, args=(img, targets, paths, f, names), daemon=True).start() f = save_dir / f'test_batch{batch_i}_pred.jpg' # predictions - Thread(target=plot_images, args=(img, output_to_target(output), paths, f, names), daemon=True).start() + Thread(target=plot_images, args=(img, output_to_target(out), paths, f, names), daemon=True).start() # Compute statistics stats = [np.concatenate(x, 0) for x in zip(*stats)] # to numpy if len(stats) and stats[0].any(): p, r, ap, f1, ap_class = ap_per_class(*stats, plot=plots, save_dir=save_dir, names=names) - p, r, ap50, ap = p[:, 0], r[:, 0], ap[:, 0], ap.mean(1) # [P, R, AP@0.5, AP@0.5:0.95] + ap50, ap = ap[:, 0], ap.mean(1) # AP@0.5, AP@0.5:0.95 mp, mr, map50, map = p.mean(), r.mean(), ap50.mean(), ap.mean() nt = np.bincount(stats[3].astype(np.int64), minlength=nc) # number of targets per class else: nt = torch.zeros(1) # Print results - pf = '%20s' + '%12.3g' * 6 # print format + pf = '%20s' + '%12i' * 2 + '%12.3g' * 4 # print format print(pf % ('all', seen, nt.sum(), mp, mr, map50, map)) # Print results per class - if (verbose or (nc <= 20 and not training)) and nc > 1 and len(stats): + if (verbose or (nc < 50 and not training)) and nc > 1 and len(stats): for i, c in enumerate(ap_class): print(pf % (names[c], seen, nt[c], p[i], r[i], ap50[i], ap[i])) @@ -239,9 +241,11 @@ def test(data, # Plots if plots: confusion_matrix.plot(save_dir=save_dir, names=list(names.values())) - if wandb and wandb.run: - wandb.log({"Images": wandb_images}) - wandb.log({"Validation": [wandb.Image(str(f), caption=f.name) for f in sorted(save_dir.glob('test*.jpg'))]}) + if wandb_logger and wandb_logger.wandb: + val_batches = [wandb_logger.wandb.Image(str(f), caption=f.name) for f in sorted(save_dir.glob('test*.jpg'))] + wandb_logger.log({"Validation": val_batches}) + if wandb_images: + wandb_logger.log({"Bounding Box Debugger/Images": wandb_images}) # Save JSON if save_json and len(jdict): @@ -269,10 +273,10 @@ def test(data, print(f'pycocotools unable to run: {e}') # Return results + model.float() # for training if not training: s = f"\n{len(list(save_dir.glob('labels/*.txt')))} labels saved to {save_dir / 'labels'}" if save_txt else '' print(f"Results saved to {save_dir}{s}") - model.float() # for training maps = np.zeros(nc) + map for i, c in enumerate(ap_class): maps[c] = ap[i] @@ -287,7 +291,7 @@ if __name__ == '__main__': parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') parser.add_argument('--iou-thres', type=float, default=0.6, help='IOU threshold for NMS') - parser.add_argument('--task', default='val', help="'val', 'test', 'study'") + parser.add_argument('--task', default='val', help='train, val, test, speed or study') parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') parser.add_argument('--single-cls', action='store_true', help='treat as single-class dataset') parser.add_argument('--augment', action='store_true', help='augmented inference') @@ -305,7 +309,7 @@ if __name__ == '__main__': print(opt) check_requirements() - if opt.task in ['val', 'test']: # run normally + if opt.task in ('train', 'val', 'test'): # run normally test(opt.data, opt.weights, opt.batch_size, @@ -321,16 +325,21 @@ if __name__ == '__main__': save_conf=opt.save_conf, ) + elif opt.task == 'speed': # speed benchmarks + for w in opt.weights: + test(opt.data, w, opt.batch_size, opt.img_size, 0.25, 0.45, save_json=False, plots=False) + elif opt.task == 'study': # run over a range of settings and save/plot - for weights in ['yolov3.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt']: - f = 'study_%s_%s.txt' % (Path(opt.data).stem, Path(weights).stem) # filename to save to - x = list(range(320, 800, 64)) # x axis + # python test.py --task study --data coco.yaml --iou 0.7 --weights yolov3.pt yolov3-spp.pt yolov3-tiny.pt + x = list(range(256, 1536 + 128, 128)) # x axis (image sizes) + for w in opt.weights: + f = f'study_{Path(opt.data).stem}_{Path(w).stem}.txt' # filename to save to y = [] # y axis for i in x: # img-size - print('\nRunning %s point %s...' % (f, i)) - r, _, t = test(opt.data, weights, opt.batch_size, i, opt.conf_thres, opt.iou_thres, opt.save_json, + print(f'\nRunning {f} point {i}...') + r, _, t = test(opt.data, w, opt.batch_size, i, opt.conf_thres, opt.iou_thres, opt.save_json, plots=False) y.append(r + t) # results and times np.savetxt(f, y, fmt='%10.4g') # save os.system('zip -r study.zip study_*.txt') - plot_study_txt(f, x) # plot + plot_study_txt(x=x) # plot diff --git a/train.py b/train.py index 91d8dfe0..ff7d96b7 100644 --- a/train.py +++ b/train.py @@ -4,6 +4,7 @@ import math import os import random import time +from copy import deepcopy from pathlib import Path from threading import Thread @@ -29,14 +30,15 @@ from utils.general import labels_to_class_weights, increment_path, labels_to_ima fitness, strip_optimizer, get_latest_run, check_dataset, check_file, check_git_status, check_img_size, \ check_requirements, print_mutation, set_logging, one_cycle, colorstr from utils.google_utils import attempt_download -from utils.loss import compute_loss +from utils.loss import ComputeLoss from utils.plots import plot_images, plot_labels, plot_results, plot_evolution -from utils.torch_utils import ModelEMA, select_device, intersect_dicts, torch_distributed_zero_first +from utils.torch_utils import ModelEMA, select_device, intersect_dicts, torch_distributed_zero_first, is_parallel +from utils.wandb_logging.wandb_utils import WandbLogger, check_wandb_resume logger = logging.getLogger(__name__) -def train(hyp, opt, device, tb_writer=None, wandb=None): +def train(hyp, opt, device, tb_writer=None): logger.info(colorstr('hyperparameters: ') + ', '.join(f'{k}={v}' for k, v in hyp.items())) save_dir, epochs, batch_size, total_batch_size, weights, rank = \ Path(opt.save_dir), opt.epochs, opt.batch_size, opt.total_batch_size, opt.weights, opt.global_rank @@ -60,10 +62,19 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): init_seeds(2 + rank) with open(opt.data) as f: data_dict = yaml.load(f, Loader=yaml.SafeLoader) # data dict - with torch_distributed_zero_first(rank): - check_dataset(data_dict) # check - train_path = data_dict['train'] - test_path = data_dict['val'] + is_coco = opt.data.endswith('coco.yaml') + + # Logging- Doing this before checking the dataset. Might update data_dict + loggers = {'wandb': None} # loggers dict + if rank in [-1, 0]: + opt.hyp = hyp # add hyperparameters + run_id = torch.load(weights).get('wandb_id') if weights.endswith('.pt') and os.path.isfile(weights) else None + wandb_logger = WandbLogger(opt, Path(opt.save_dir).stem, run_id, data_dict) + loggers['wandb'] = wandb_logger.wandb + data_dict = wandb_logger.data_dict + if wandb_logger.wandb: + weights, epochs, hyp = opt.weights, opt.epochs, opt.hyp # WandbLogger might update weights, epochs if resuming + nc = 1 if opt.single_cls else int(data_dict['nc']) # number of classes names = ['item'] if opt.single_cls and len(data_dict['names']) != 1 else data_dict['names'] # class names assert len(names) == nc, '%g names found for nc=%g dataset in %s' % (len(names), nc, opt.data) # check @@ -74,16 +85,18 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): with torch_distributed_zero_first(rank): attempt_download(weights) # download if not found locally ckpt = torch.load(weights, map_location=device) # load checkpoint - if hyp.get('anchors'): - ckpt['model'].yaml['anchors'] = round(hyp['anchors']) # force autoanchor - model = Model(opt.cfg or ckpt['model'].yaml, ch=3, nc=nc).to(device) # create - exclude = ['anchor'] if opt.cfg or hyp.get('anchors') else [] # exclude keys + model = Model(opt.cfg or ckpt['model'].yaml, ch=3, nc=nc, anchors=hyp.get('anchors')).to(device) # create + exclude = ['anchor'] if (opt.cfg or hyp.get('anchors')) and not opt.resume else [] # exclude keys state_dict = ckpt['model'].float().state_dict() # to FP32 state_dict = intersect_dicts(state_dict, model.state_dict(), exclude=exclude) # intersect model.load_state_dict(state_dict, strict=False) # load logger.info('Transferred %g/%g items from %s' % (len(state_dict), len(model.state_dict()), weights)) # report else: - model = Model(opt.cfg, ch=3, nc=nc).to(device) # create + model = Model(opt.cfg, ch=3, nc=nc, anchors=hyp.get('anchors')).to(device) # create + with torch_distributed_zero_first(rank): + check_dataset(data_dict) # check + train_path = data_dict['train'] + test_path = data_dict['val'] # Freeze freeze = [] # parameter names to freeze (full or partial) @@ -120,18 +133,15 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): # Scheduler https://arxiv.org/pdf/1812.01187.pdf # https://pytorch.org/docs/stable/_modules/torch/optim/lr_scheduler.html#OneCycleLR - lf = one_cycle(1, hyp['lrf'], epochs) # cosine 1->hyp['lrf'] + if opt.linear_lr: + lf = lambda x: (1 - x / (epochs - 1)) * (1.0 - hyp['lrf']) + hyp['lrf'] # linear + else: + lf = one_cycle(1, hyp['lrf'], epochs) # cosine 1->hyp['lrf'] scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf) # plot_lr_scheduler(optimizer, scheduler, epochs) - # Logging - if rank in [-1, 0] and wandb and wandb.run is None: - opt.hyp = hyp # add hyperparameters - wandb_run = wandb.init(config=opt, resume="allow", - project='YOLOv3' if opt.project == 'runs/train' else Path(opt.project).stem, - name=save_dir.stem, - id=ckpt.get('wandb_id') if 'ckpt' in locals() else None) - loggers = {'wandb': wandb} # loggers dict + # EMA + ema = ModelEMA(model) if rank in [-1, 0] else None # Resume start_epoch, best_fitness = 0, 0.0 @@ -141,10 +151,14 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): optimizer.load_state_dict(ckpt['optimizer']) best_fitness = ckpt['best_fitness'] + # EMA + if ema and ckpt.get('ema'): + ema.ema.load_state_dict(ckpt['ema'].float().state_dict()) + ema.updates = ckpt['updates'] + # Results if ckpt.get('training_results') is not None: - with open(results_file, 'w') as file: - file.write(ckpt['training_results']) # write results.txt + results_file.write_text(ckpt['training_results']) # write results.txt # Epochs start_epoch = ckpt['epoch'] + 1 @@ -158,7 +172,7 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): del ckpt, state_dict # Image sizes - gs = int(model.stride.max()) # grid size (max stride) + gs = max(int(model.stride.max()), 32) # grid size (max stride) nl = model.model[-1].nl # number of detection layers (used for scaling hyp['obj']) imgsz, imgsz_test = [check_img_size(x, gs) for x in opt.img_size] # verify imgsz are gs-multiples @@ -171,13 +185,6 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): model = torch.nn.SyncBatchNorm.convert_sync_batchnorm(model).to(device) logger.info('Using SyncBatchNorm()') - # EMA - ema = ModelEMA(model) if rank in [-1, 0] else None - - # DDP mode - if cuda and rank != -1: - model = DDP(model, device_ids=[opt.local_rank], output_device=opt.local_rank) - # Trainloader dataloader, dataset = create_dataloader(train_path, imgsz, batch_size, gs, opt, hyp=hyp, augment=True, cache=opt.cache_images, rect=opt.rect, rank=rank, @@ -189,8 +196,7 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): # Process 0 if rank in [-1, 0]: - ema.updates = start_epoch * nb // accumulate # set EMA updates - testloader = create_dataloader(test_path, imgsz_test, total_batch_size, gs, opt, # testloader + testloader = create_dataloader(test_path, imgsz_test, batch_size * 2, gs, opt, # testloader hyp=hyp, cache=opt.cache_images and not opt.notest, rect=True, rank=-1, world_size=opt.world_size, workers=opt.workers, pad=0.5, prefix=colorstr('val: '))[0] @@ -201,18 +207,26 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): # cf = torch.bincount(c.long(), minlength=nc) + 1. # frequency # model._initialize_biases(cf.to(device)) if plots: - plot_labels(labels, save_dir, loggers) + plot_labels(labels, names, save_dir, loggers) if tb_writer: tb_writer.add_histogram('classes', c, 0) # Anchors if not opt.noautoanchor: check_anchors(dataset, model=model, thr=hyp['anchor_t'], imgsz=imgsz) + model.half().float() # pre-reduce anchor precision + + # DDP mode + if cuda and rank != -1: + model = DDP(model, device_ids=[opt.local_rank], output_device=opt.local_rank, + # nn.MultiheadAttention incompatibility with DDP https://github.com/pytorch/pytorch/issues/26698 + find_unused_parameters=any(isinstance(layer, nn.MultiheadAttention) for layer in model.modules())) # Model parameters hyp['box'] *= 3. / nl # scale to layers hyp['cls'] *= nc / 80. * 3. / nl # scale to classes and layers hyp['obj'] *= (imgsz / 640) ** 2 * 3. / nl # scale to image size and layers + hyp['label_smoothing'] = opt.label_smoothing model.nc = nc # attach number of classes to model model.hyp = hyp # attach hyperparameters to model model.gr = 1.0 # iou loss ratio (obj_loss = 1.0 or iou) @@ -227,6 +241,7 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): results = (0, 0, 0, 0, 0, 0, 0) # P, R, mAP@.5, mAP@.5-.95, val_loss(box, obj, cls) scheduler.last_epoch = start_epoch - 1 # do not move scaler = amp.GradScaler(enabled=cuda) + compute_loss = ComputeLoss(model) # init loss class logger.info(f'Image sizes {imgsz} train, {imgsz_test} test\n' f'Using {dataloader.num_workers} dataloader workers\n' f'Logging results to {save_dir}\n' @@ -256,7 +271,7 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): if rank != -1: dataloader.sampler.set_epoch(epoch) pbar = enumerate(dataloader) - logger.info(('\n' + '%10s' * 8) % ('Epoch', 'gpu_mem', 'box', 'obj', 'cls', 'total', 'targets', 'img_size')) + logger.info(('\n' + '%10s' * 8) % ('Epoch', 'gpu_mem', 'box', 'obj', 'cls', 'total', 'labels', 'img_size')) if rank in [-1, 0]: pbar = tqdm(pbar, total=nb) # progress bar optimizer.zero_grad() @@ -286,7 +301,7 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): # Forward with amp.autocast(enabled=cuda): pred = model(imgs) # forward - loss, loss_items = compute_loss(pred, targets.to(device), model) # loss scaled by batch_size + loss, loss_items = compute_loss(pred, targets.to(device)) # loss scaled by batch_size if rank != -1: loss *= opt.world_size # gradient averaged between devices in DDP mode if opt.quad: @@ -317,9 +332,10 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): Thread(target=plot_images, args=(imgs, targets, paths, f), daemon=True).start() # if tb_writer: # tb_writer.add_image(f, result, dataformats='HWC', global_step=epoch) - # tb_writer.add_graph(model, imgs) # add model to tensorboard - elif plots and ni == 3 and wandb: - wandb.log({"Mosaics": [wandb.Image(str(x), caption=x.name) for x in save_dir.glob('train*.jpg')]}) + # tb_writer.add_graph(torch.jit.trace(model, imgs, strict=False), []) # add model graph + elif plots and ni == 10 and wandb_logger.wandb: + wandb_logger.log({"Mosaics": [wandb_logger.wandb.Image(str(x), caption=x.name) for x in + save_dir.glob('train*.jpg') if x.exists()]}) # end batch ------------------------------------------------------------------------------------------------ # end epoch ---------------------------------------------------------------------------------------------------- @@ -331,23 +347,26 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): # DDP process 0 or single-GPU if rank in [-1, 0]: # mAP - if ema: - ema.update_attr(model, include=['yaml', 'nc', 'hyp', 'gr', 'names', 'stride', 'class_weights']) + ema.update_attr(model, include=['yaml', 'nc', 'hyp', 'gr', 'names', 'stride', 'class_weights']) final_epoch = epoch + 1 == epochs if not opt.notest or final_epoch: # Calculate mAP - results, maps, times = test.test(opt.data, - batch_size=total_batch_size, + wandb_logger.current_epoch = epoch + 1 + results, maps, times = test.test(data_dict, + batch_size=batch_size * 2, imgsz=imgsz_test, model=ema.ema, single_cls=opt.single_cls, dataloader=testloader, save_dir=save_dir, + verbose=nc < 50 and final_epoch, plots=plots and final_epoch, - log_imgs=opt.log_imgs if wandb else 0) + wandb_logger=wandb_logger, + compute_loss=compute_loss, + is_coco=is_coco) # Write with open(results_file, 'a') as f: - f.write(s + '%10.4g' * 7 % results + '\n') # P, R, mAP@.5, mAP@.5-.95, val_loss(box, obj, cls) + f.write(s + '%10.4g' * 7 % results + '\n') # append metrics, val_loss if len(opt.name) and opt.bucket: os.system('gsutil cp %s gs://%s/results/results%s.txt' % (results_file, opt.bucket, opt.name)) @@ -359,72 +378,77 @@ def train(hyp, opt, device, tb_writer=None, wandb=None): for x, tag in zip(list(mloss[:-1]) + list(results) + lr, tags): if tb_writer: tb_writer.add_scalar(tag, x, epoch) # tensorboard - if wandb: - wandb.log({tag: x}) # W&B + if wandb_logger.wandb: + wandb_logger.log({tag: x}) # W&B # Update best mAP fi = fitness(np.array(results).reshape(1, -1)) # weighted combination of [P, R, mAP@.5, mAP@.5-.95] if fi > best_fitness: best_fitness = fi + wandb_logger.end_epoch(best_result=best_fitness == fi) # Save model - save = (not opt.nosave) or (final_epoch and not opt.evolve) - if save: - with open(results_file, 'r') as f: # create checkpoint - ckpt = {'epoch': epoch, - 'best_fitness': best_fitness, - 'training_results': f.read(), - 'model': ema.ema, - 'optimizer': None if final_epoch else optimizer.state_dict(), - 'wandb_id': wandb_run.id if wandb else None} + if (not opt.nosave) or (final_epoch and not opt.evolve): # if save + ckpt = {'epoch': epoch, + 'best_fitness': best_fitness, + 'training_results': results_file.read_text(), + 'model': deepcopy(model.module if is_parallel(model) else model).half(), + 'ema': deepcopy(ema.ema).half(), + 'updates': ema.updates, + 'optimizer': optimizer.state_dict(), + 'wandb_id': wandb_logger.wandb_run.id if wandb_logger.wandb else None} # Save last, best and delete torch.save(ckpt, last) if best_fitness == fi: torch.save(ckpt, best) + if wandb_logger.wandb: + if ((epoch + 1) % opt.save_period == 0 and not final_epoch) and opt.save_period != -1: + wandb_logger.log_model( + last.parent, opt, epoch, fi, best_model=best_fitness == fi) del ckpt + # end epoch ---------------------------------------------------------------------------------------------------- # end training - if rank in [-1, 0]: + # Plots + if plots: + plot_results(save_dir=save_dir) # save as results.png + if wandb_logger.wandb: + files = ['results.png', 'confusion_matrix.png', *[f'{x}_curve.png' for x in ('F1', 'PR', 'P', 'R')]] + wandb_logger.log({"Results": [wandb_logger.wandb.Image(str(save_dir / f), caption=f) for f in files + if (save_dir / f).exists()]}) + # Test best.pt + logger.info('%g epochs completed in %.3f hours.\n' % (epoch - start_epoch + 1, (time.time() - t0) / 3600)) + if opt.data.endswith('coco.yaml') and nc == 80: # if COCO + for m in (last, best) if best.exists() else (last): # speed, mAP tests + results, _, _ = test.test(opt.data, + batch_size=batch_size * 2, + imgsz=imgsz_test, + conf_thres=0.001, + iou_thres=0.7, + model=attempt_load(m, device).half(), + single_cls=opt.single_cls, + dataloader=testloader, + save_dir=save_dir, + save_json=True, + plots=False, + is_coco=is_coco) + # Strip optimizers final = best if best.exists() else last # final model - for f in [last, best]: + for f in last, best: if f.exists(): strip_optimizer(f) # strip optimizers if opt.bucket: os.system(f'gsutil cp {final} gs://{opt.bucket}/weights') # upload - - # Plots - if plots: - plot_results(save_dir=save_dir) # save as results.png - if wandb: - files = ['results.png', 'precision_recall_curve.png', 'confusion_matrix.png'] - wandb.log({"Results": [wandb.Image(str(save_dir / f), caption=f) for f in files - if (save_dir / f).exists()]}) - if opt.log_artifacts: - wandb.log_artifact(artifact_or_path=str(final), type='model', name=save_dir.stem) - - # Test best.pt - logger.info('%g epochs completed in %.3f hours.\n' % (epoch - start_epoch + 1, (time.time() - t0) / 3600)) - if opt.data.endswith('coco.yaml') and nc == 80: # if COCO - for conf, iou, save_json in ([0.25, 0.45, False], [0.001, 0.65, True]): # speed, mAP tests - results, _, _ = test.test(opt.data, - batch_size=total_batch_size, - imgsz=imgsz_test, - conf_thres=conf, - iou_thres=iou, - model=attempt_load(final, device).half(), - single_cls=opt.single_cls, - dataloader=testloader, - save_dir=save_dir, - save_json=save_json, - plots=False) - + if wandb_logger.wandb and not opt.evolve: # Log the stripped model + wandb_logger.wandb.log_artifact(str(final), type='model', + name='run_' + wandb_logger.wandb_run.id + '_model', + aliases=['last', 'best', 'stripped']) + wandb_logger.finish_run() else: dist.destroy_process_group() - - wandb.run.finish() if wandb and wandb.run else None torch.cuda.empty_cache() return results @@ -453,13 +477,18 @@ if __name__ == '__main__': parser.add_argument('--adam', action='store_true', help='use torch.optim.Adam() optimizer') parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode') parser.add_argument('--local_rank', type=int, default=-1, help='DDP parameter, do not modify') - parser.add_argument('--log-imgs', type=int, default=16, help='number of images for W&B logging, max 100') - parser.add_argument('--log-artifacts', action='store_true', help='log artifacts, i.e. final trained model') parser.add_argument('--workers', type=int, default=8, help='maximum number of dataloader workers') parser.add_argument('--project', default='runs/train', help='save to project/name') + parser.add_argument('--entity', default=None, help='W&B entity') parser.add_argument('--name', default='exp', help='save to project/name') parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment') parser.add_argument('--quad', action='store_true', help='quad dataloader') + parser.add_argument('--linear-lr', action='store_true', help='linear LR') + parser.add_argument('--label-smoothing', type=float, default=0.0, help='Label smoothing epsilon') + parser.add_argument('--upload_dataset', action='store_true', help='Upload dataset as W&B artifact table') + parser.add_argument('--bbox_interval', type=int, default=-1, help='Set bounding-box image logging interval for W&B') + parser.add_argument('--save_period', type=int, default=-1, help='Log model after every "save_period" epoch') + parser.add_argument('--artifact_alias', type=str, default="latest", help='version of dataset artifact to be used') opt = parser.parse_args() # Set DDP variables @@ -471,13 +500,14 @@ if __name__ == '__main__': check_requirements() # Resume - if opt.resume: # resume an interrupted run + wandb_run = check_wandb_resume(opt) + if opt.resume and not wandb_run: # resume an interrupted run ckpt = opt.resume if isinstance(opt.resume, str) else get_latest_run() # specified or most recent path assert os.path.isfile(ckpt), 'ERROR: --resume checkpoint does not exist' apriori = opt.global_rank, opt.local_rank with open(Path(ckpt).parent.parent / 'opt.yaml') as f: opt = argparse.Namespace(**yaml.load(f, Loader=yaml.SafeLoader)) # replace - opt.cfg, opt.weights, opt.resume, opt.global_rank, opt.local_rank = '', ckpt, True, *apriori # reinstate + opt.cfg, opt.weights, opt.resume, opt.batch_size, opt.global_rank, opt.local_rank = '', ckpt, True, opt.total_batch_size, *apriori # reinstate logger.info('Resuming training from %s' % ckpt) else: # opt.hyp = opt.hyp or ('hyp.finetune.yaml' if opt.weights else 'hyp.scratch.yaml') @@ -504,18 +534,13 @@ if __name__ == '__main__': # Train logger.info(opt) - try: - import wandb - except ImportError: - wandb = None - prefix = colorstr('wandb: ') - logger.info(f"{prefix}Install Weights & Biases for YOLOv3 logging with 'pip install wandb' (recommended)") if not opt.evolve: tb_writer = None # init loggers if opt.global_rank in [-1, 0]: - logger.info(f'Start Tensorboard with "tensorboard --logdir {opt.project}", view at http://localhost:6006/') + prefix = colorstr('tensorboard: ') + logger.info(f"{prefix}Start with 'tensorboard --logdir {opt.project}', view at http://localhost:6006/") tb_writer = SummaryWriter(opt.save_dir) # Tensorboard - train(hyp, opt, device, tb_writer, wandb) + train(hyp, opt, device, tb_writer) # Evolve hyperparameters (optional) else: @@ -589,7 +614,7 @@ if __name__ == '__main__': hyp[k] = round(hyp[k], 5) # significant digits # Train mutation - results = train(hyp.copy(), opt, device, wandb=wandb) + results = train(hyp.copy(), opt, device) # Write mutation results print_mutation(hyp.copy(), results, yaml_file, opt.bucket) diff --git a/tutorial.ipynb b/tutorial.ipynb index 5e190e21..b8969bc4 100644 --- a/tutorial.ipynb +++ b/tutorial.ipynb @@ -16,7 +16,7 @@ "accelerator": "GPU", "widgets": { "application/vnd.jupyter.widget-state+json": { - "b257add75888401ebf17767cdc9ed439": { + "8815626359d84416a2f44a95500580a4": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "state": { @@ -28,15 +28,15 @@ "_view_count": null, "_view_module_version": "1.5.0", "box_style": "", - "layout": "IPY_MODEL_4b685e8b26f3496db73186063e19f785", + "layout": "IPY_MODEL_3b85609c4ce94a74823f2cfe141ce68e", "_model_module": "@jupyter-widgets/controls", "children": [ - "IPY_MODEL_0980232d74a14bdfa353a3f248bbe8ff", - "IPY_MODEL_e981f3dfbf374643b58cba7dfbef3bca" + "IPY_MODEL_876609753c2946248890344722963d44", + "IPY_MODEL_8abfdd8778e44b7ca0d29881cb1ada05" ] } }, - "4b685e8b26f3496db73186063e19f785": { + "3b85609c4ce94a74823f2cfe141ce68e": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -87,12 +87,12 @@ "left": null } }, - "0980232d74a14bdfa353a3f248bbe8ff": { + "876609753c2946248890344722963d44": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "state": { "_view_name": "ProgressView", - "style": "IPY_MODEL_07bb32c950654e9fa401e35a0030eadc", + "style": "IPY_MODEL_78c6c3d97c484916b8ee167c63556800", "_dom_classes": [], "description": "100%", "_model_name": "FloatProgressModel", @@ -107,30 +107,30 @@ "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_ec3fce2f475b4f31b8caf1a0ca912af1" + "layout": "IPY_MODEL_9dd0f182db5d45378ceafb855e486eb8" } }, - "e981f3dfbf374643b58cba7dfbef3bca": { + "8abfdd8778e44b7ca0d29881cb1ada05": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "state": { "_view_name": "HTMLView", - "style": "IPY_MODEL_9a1c27af326e43ca8a8b6b90cf0075db", + "style": "IPY_MODEL_a3dab28b45c247089a3d1b8b09f327de", "_dom_classes": [], "description": "", "_model_name": "HTMLModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": " 781M/781M [00:49<00:00, 16.7MB/s]", + "value": " 781M/781M [08:43<00:00, 1.56MB/s]", "_view_count": null, "_view_module_version": "1.5.0", "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_7cf92d6d6c704a8d8e7834783813228d" + "layout": "IPY_MODEL_32451332b7a94ba9aacddeaa6ac94d50" } }, - "07bb32c950654e9fa401e35a0030eadc": { + "78c6c3d97c484916b8ee167c63556800": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "state": { @@ -145,7 +145,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "ec3fce2f475b4f31b8caf1a0ca912af1": { + "9dd0f182db5d45378ceafb855e486eb8": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -196,7 +196,7 @@ "left": null } }, - "9a1c27af326e43ca8a8b6b90cf0075db": { + "a3dab28b45c247089a3d1b8b09f327de": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "state": { @@ -210,7 +210,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "7cf92d6d6c704a8d8e7834783813228d": { + "32451332b7a94ba9aacddeaa6ac94d50": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -261,7 +261,7 @@ "left": null } }, - "c1928794b5bd400da6e7817883a0ee9c": { + "0fffa335322b41658508e06aed0acbf0": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "state": { @@ -273,15 +273,15 @@ "_view_count": null, "_view_module_version": "1.5.0", "box_style": "", - "layout": "IPY_MODEL_804fae06a69f4e11b919d8ab80822186", + "layout": "IPY_MODEL_a354c6f80ce347e5a3ef64af87c0eccb", "_model_module": "@jupyter-widgets/controls", "children": [ - "IPY_MODEL_138cbb92b4fd4eaa9b7fdcbed1f57a4d", - "IPY_MODEL_28bb2eea5b114f82b201e5fa39fdfc58" + "IPY_MODEL_85823e71fea54c39bd11e2e972348836", + "IPY_MODEL_fb11acd663fa4e71b041d67310d045fd" ] } }, - "804fae06a69f4e11b919d8ab80822186": { + "a354c6f80ce347e5a3ef64af87c0eccb": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -332,50 +332,50 @@ "left": null } }, - "138cbb92b4fd4eaa9b7fdcbed1f57a4d": { + "85823e71fea54c39bd11e2e972348836": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "state": { "_view_name": "ProgressView", - "style": "IPY_MODEL_aea8bd6f395845f696e3abedbff59423", + "style": "IPY_MODEL_8a919053b780449aae5523658ad611fa", "_dom_classes": [], "description": "100%", "_model_name": "FloatProgressModel", "bar_style": "success", - "max": 22090455, + "max": 22091032, "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": 22090455, + "value": 22091032, "_view_count": null, "_view_module_version": "1.5.0", "orientation": "horizontal", "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_0514774dafdf4e39bdd5a8833d1cbcb0" + "layout": "IPY_MODEL_5bae9393a58b44f7b69fb04816f94f6f" } }, - "28bb2eea5b114f82b201e5fa39fdfc58": { + "fb11acd663fa4e71b041d67310d045fd": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "state": { "_view_name": "HTMLView", - "style": "IPY_MODEL_7dabd1f8236045729c90ae78a0d9af24", + "style": "IPY_MODEL_d26c6d16c7f24030ab2da5285bf198ee", "_dom_classes": [], "description": "", "_model_name": "HTMLModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": " 21.1M/21.1M [00:02<00:00, 9.27MB/s]", + "value": " 21.1M/21.1M [00:02<00:00, 9.36MB/s]", "_view_count": null, "_view_module_version": "1.5.0", "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_227e357d925345f995aeea7b72750cf1" + "layout": "IPY_MODEL_f7767886b2364c8d9efdc79e175ad8eb" } }, - "aea8bd6f395845f696e3abedbff59423": { + "8a919053b780449aae5523658ad611fa": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "state": { @@ -390,7 +390,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "0514774dafdf4e39bdd5a8833d1cbcb0": { + "5bae9393a58b44f7b69fb04816f94f6f": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -441,7 +441,7 @@ "left": null } }, - "7dabd1f8236045729c90ae78a0d9af24": { + "d26c6d16c7f24030ab2da5285bf198ee": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "state": { @@ -455,7 +455,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "227e357d925345f995aeea7b72750cf1": { + "f7767886b2364c8d9efdc79e175ad8eb": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -517,7 +517,7 @@ "colab_type": "text" }, "source": [ - "\"Open" + "\"Open" ] }, { @@ -528,8 +528,8 @@ "source": [ "\n", "\n", - "This notebook was written by Ultralytics LLC, and is freely available for redistribution under the [GPL-3.0 license](https://choosealicense.com/licenses/gpl-3.0/). \n", - "For more information please visit https://github.com/ultralytics/yolov3 and https://www.ultralytics.com." + "This is the **official YOLOv3 🚀 notebook** authored by **Ultralytics**, and is freely available for redistribution under the [GPL-3.0 license](https://choosealicense.com/licenses/gpl-3.0/). \n", + "For more information please visit https://github.com/ultralytics/yolov5 and https://www.ultralytics.com. Thank you!" ] }, { @@ -550,25 +550,25 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "edc03bfa-6dd3-49ae-9095-405ba8cbe87d" + "outputId": "9b022435-4197-41fc-abea-81f86ce857d0" }, "source": [ - "!git clone https://github.com/ultralytics/yolov3 # clone repo\n", - "%cd yolov3\n", + "!git clone https://github.com/ultralytics/yolov5 # clone repo\n", + "%cd yolov5\n", "%pip install -qr requirements.txt # install dependencies\n", "\n", "import torch\n", "from IPython.display import Image, clear_output # to display images\n", "\n", "clear_output()\n", - "print('Setup complete. Using torch %s %s' % (torch.__version__, torch.cuda.get_device_properties(0) if torch.cuda.is_available() else 'CPU'))" + "print(f\"Setup complete. Using torch {torch.__version__} ({torch.cuda.get_device_properties(0).name if torch.cuda.is_available() else 'CPU'})\")" ], - "execution_count": 1, + "execution_count": 31, "outputs": [ { "output_type": "stream", "text": [ - "Setup complete. Using torch 1.7.0+cu101 _CudaDeviceProperties(name='Tesla V100-SXM2-16GB', major=7, minor=0, total_memory=16130MB, multi_processor_count=80)\n" + "Setup complete. Using torch 1.8.1+cu101 (Tesla V100-SXM2-16GB)\n" ], "name": "stdout" } @@ -582,7 +582,9 @@ "source": [ "# 1. Inference\n", "\n", - "`detect.py` runs inference on a variety of sources, downloading models automatically from the [latest YOLOv3 release](https://github.com/ultralytics/yolov3/releases)." + "`detect.py` runs YOLOv3 inference on a variety of sources, downloading models automatically from the [latest YOLOv3 release](https://github.com/ultralytics/yolov3/releases), and saving results to `runs/detect`. Example inference sources are:\n", + "\n", + " " ] }, { @@ -591,38 +593,35 @@ "id": "zR9ZbuQCH7FX", "colab": { "base_uri": "https://localhost:8080/", - "height": 587 + "height": 534 }, - "outputId": "44211008-da79-4175-f719-ac265dad26eb" + "outputId": "c9a308f7-2216-4805-8003-eca8dd0dc30d" }, "source": [ "!python detect.py --weights yolov3.pt --img 640 --conf 0.25 --source data/images/\n", "Image(filename='runs/detect/exp/zidane.jpg', width=600)" ], - "execution_count": 2, + "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "Namespace(agnostic_nms=False, augment=False, classes=None, conf_thres=0.25, device='', exist_ok=False, img_size=640, iou_thres=0.45, name='exp', project='runs/detect', save_conf=False, save_txt=False, source='data/images/', update=False, view_img=False, weights=['yolov3.pt'])\n", - "Using torch 1.7.0+cu101 CUDA:0 (Tesla V100-SXM2-16GB, 16130MB)\n", - "\n", - "Downloading https://github.com/ultralytics/yolov3/releases/download/v1.0/yolov3.pt to yolov3.pt...\n", - "100% 118M/118M [00:08<00:00, 14.6MB/s]\n", + "YOLOv3 🚀 v5.0-1-g0f395b3 torch 1.8.1+cu101 CUDA:0 (Tesla V100-SXM2-16GB, 16160.5MB)\n", "\n", "Fusing layers... \n", - "Model Summary: 261 layers, 61922845 parameters, 0 gradients\n", - "image 1/2 /content/yolov3/data/images/bus.jpg: 640x480 4 persons, 1 buss, Done. (0.046s)\n", - "image 2/2 /content/yolov3/data/images/zidane.jpg: 384x640 2 persons, 3 ties, Done. (0.013s)\n", + "Model Summary: 224 layers, 7266973 parameters, 0 gradients, 17.0 GFLOPS\n", + "image 1/2 /content/yolov5/data/images/bus.jpg: 640x480 4 persons, 1 bus, Done. (0.008s)\n", + "image 2/2 /content/yolov5/data/images/zidane.jpg: 384x640 2 persons, 2 ties, Done. (0.008s)\n", "Results saved to runs/detect/exp\n", - "Done. (0.293s)\n" + "Done. (0.087)\n" ], "name": "stdout" }, { "output_type": "execute_result", "data": { - "image/jpeg": "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\n", + "image/jpeg": "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\n", "text/plain": [ "" ] @@ -633,20 +632,10 @@ "width": 600 } }, - "execution_count": 2 + "execution_count": 38 } ] }, - { - "cell_type": "markdown", - "metadata": { - "id": "4qbaa3iEcrcE" - }, - "source": [ - "Results are saved to `runs/detect`. A full list of available inference sources:\n", - " " - ] - }, { "cell_type": "markdown", "metadata": { @@ -654,7 +643,7 @@ }, "source": [ "# 2. Test\n", - "Test a model on [COCO](https://cocodataset.org/#home) val or test-dev dataset to evaluate trained accuracy. Models are downloaded automatically from the [latest YOLOv3 release](https://github.com/ultralytics/yolov3/releases). To show results by class use the `--verbose` flag. Note that `pycocotools` metrics may be 1-2% better than the equivalent repo metrics, as is visible below, due to slight differences in mAP computation." + "Test a model's accuracy on [COCO](https://cocodataset.org/#home) val or test-dev datasets. Models are downloaded automatically from the [latest YOLOv3 release](https://github.com/ultralytics/yolov3/releases). To show results by class use the `--verbose` flag. Note that `pycocotools` metrics may be ~1% better than the equivalent repo metrics, as is visible below, due to slight differences in mAP computation." ] }, { @@ -673,32 +662,32 @@ "id": "WQPtK1QYVaD_", "colab": { "base_uri": "https://localhost:8080/", - "height": 66, + "height": 65, "referenced_widgets": [ - "b257add75888401ebf17767cdc9ed439", - "4b685e8b26f3496db73186063e19f785", - "0980232d74a14bdfa353a3f248bbe8ff", - "e981f3dfbf374643b58cba7dfbef3bca", - "07bb32c950654e9fa401e35a0030eadc", - "ec3fce2f475b4f31b8caf1a0ca912af1", - "9a1c27af326e43ca8a8b6b90cf0075db", - "7cf92d6d6c704a8d8e7834783813228d" + "8815626359d84416a2f44a95500580a4", + "3b85609c4ce94a74823f2cfe141ce68e", + "876609753c2946248890344722963d44", + "8abfdd8778e44b7ca0d29881cb1ada05", + "78c6c3d97c484916b8ee167c63556800", + "9dd0f182db5d45378ceafb855e486eb8", + "a3dab28b45c247089a3d1b8b09f327de", + "32451332b7a94ba9aacddeaa6ac94d50" ] }, - "outputId": "2ac7a39f-8432-43e0-9d34-bc2c9a71ba21" + "outputId": "81521192-cf67-4a47-a4cc-434cb0ebc363" }, "source": [ "# Download COCO val2017\n", "torch.hub.download_url_to_file('https://github.com/ultralytics/yolov5/releases/download/v1.0/coco2017val.zip', 'tmp.zip')\n", "!unzip -q tmp.zip -d ../ && rm tmp.zip" ], - "execution_count": 3, + "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "b257add75888401ebf17767cdc9ed439", + "model_id": "8815626359d84416a2f44a95500580a4", "version_minor": 0, "version_major": 2 }, @@ -726,55 +715,57 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "6850c54e-b697-40c2-f9fc-9ffda2d7052a" + "outputId": "2340b131-9943-4cd6-fd3a-8272aeb0774f" }, "source": [ "# Run YOLOv3 on COCO val2017\n", - "!python test.py --weights yolov3.pt --data coco.yaml --img 640 --iou 0.65" + "!python test.py --weights yolov5x.pt --data coco.yaml --img 640 --iou 0.65" ], - "execution_count": 4, + "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ - "Namespace(augment=False, batch_size=32, conf_thres=0.001, data='./data/coco.yaml', device='', exist_ok=False, img_size=640, iou_thres=0.65, name='exp', project='runs/test', save_conf=False, save_json=True, save_txt=False, single_cls=False, task='val', verbose=False, weights=['yolov3.pt'])\n", - "Using torch 1.7.0+cu101 CUDA:0 (Tesla V100-SXM2-16GB, 16130MB)\n", + "Namespace(augment=False, batch_size=32, conf_thres=0.001, data='./data/coco.yaml', device='', exist_ok=False, img_size=640, iou_thres=0.65, name='exp', project='runs/test', save_conf=False, save_hybrid=False, save_json=True, save_txt=False, single_cls=False, task='val', verbose=False, weights=['yolov5x.pt'])\n", + "YOLOv3 🚀 v5.0-1-g0f395b3 torch 1.8.1+cu101 CUDA:0 (Tesla V100-SXM2-16GB, 16160.5MB)\n", + "\n", + "Downloading https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5x.pt to yolov5x.pt...\n", + "100% 168M/168M [00:05<00:00, 32.3MB/s]\n", "\n", "Fusing layers... \n", - "Model Summary: 261 layers, 61922845 parameters, 0 gradients\n", - "Scanning '../coco/labels/val2017' for images and labels... 4952 found, 48 missing, 0 empty, 0 corrupted: 100% 5000/5000 [00:01<00:00, 3373.28it/s]\n", - "New cache created: ../coco/labels/val2017.cache\n", - "Scanning '../coco/labels/val2017.cache' for images and labels... 4952 found, 48 missing, 0 empty, 0 corrupted: 100% 5000/5000 [00:00<00:00, 43690666.67it/s]\n", - " Class Images Targets P R mAP@.5 mAP@.5:.95: 100% 157/157 [01:19<00:00, 1.97it/s]\n", - " all 5e+03 3.63e+04 0.472 0.698 0.625 0.424\n", - "Speed: 3.6/1.6/5.2 ms inference/NMS/total per 640x640 image at batch-size 32\n", + "Model Summary: 476 layers, 87730285 parameters, 0 gradients, 218.8 GFLOPS\n", + "\u001b[34m\u001b[1mval: \u001b[0mScanning '../coco/val2017' images and labels... 4952 found, 48 missing, 0 empty, 0 corrupted: 100% 5000/5000 [00:01<00:00, 3102.29it/s]\n", + "\u001b[34m\u001b[1mval: \u001b[0mNew cache created: ../coco/val2017.cache\n", + " Class Images Labels P R mAP@.5 mAP@.5:.95: 100% 157/157 [01:23<00:00, 1.87it/s]\n", + " all 5000 36335 0.745 0.627 0.68 0.49\n", + "Speed: 5.3/1.6/6.9 ms inference/NMS/total per 640x640 image at batch-size 32\n", "\n", - "Evaluating pycocotools mAP... saving runs/test/exp/yolov3_predictions.json...\n", + "Evaluating pycocotools mAP... saving runs/test/exp/yolov5x_predictions.json...\n", "loading annotations into memory...\n", - "Done (t=0.41s)\n", + "Done (t=0.48s)\n", "creating index...\n", "index created!\n", "Loading and preparing results...\n", - "DONE (t=3.78s)\n", + "DONE (t=5.08s)\n", "creating index...\n", "index created!\n", "Running per image evaluation...\n", "Evaluate annotation type *bbox*\n", - "DONE (t=78.99s).\n", + "DONE (t=90.51s).\n", "Accumulating evaluation results...\n", - "DONE (t=11.77s).\n", - " Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.433\n", - " Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.630\n", - " Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.470\n", - " Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.283\n", - " Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.485\n", - " Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.538\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.346\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.581\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.634\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.473\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.687\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.766\n", + "DONE (t=15.16s).\n", + " Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.504\n", + " Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.688\n", + " Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.546\n", + " Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.351\n", + " Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.551\n", + " Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.644\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.382\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.629\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.681\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.524\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.735\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.827\n", "Results saved to runs/test/exp\n" ], "name": "stdout" @@ -788,7 +779,7 @@ }, "source": [ "## COCO test-dev2017\n", - "Download [COCO test2017](https://github.com/ultralytics/yolov5/blob/74b34872fdf41941cddcf243951cdb090fbac17b/data/coco.yaml#L15) dataset (7GB - 40,000 images), to test model accuracy on test-dev set (20,000 images). Results are saved to a `*.json` file which can be submitted to the evaluation server at https://competitions.codalab.org/competitions/20794." + "Download [COCO test2017](https://github.com/ultralytics/yolov5/blob/74b34872fdf41941cddcf243951cdb090fbac17b/data/coco.yaml#L15) dataset (7GB - 40,000 images), to test model accuracy on test-dev set (**20,000 images, no labels**). Results are saved to a `*.json` file which should be **zipped** and submitted to the evaluation server at https://competitions.codalab.org/competitions/20794." ] }, { @@ -799,9 +790,9 @@ "source": [ "# Download COCO test-dev2017\n", "torch.hub.download_url_to_file('https://github.com/ultralytics/yolov5/releases/download/v1.0/coco2017labels.zip', 'tmp.zip')\n", - "!unzip -q tmp.zip -d ../ && rm tmp.zip # unzip labels\n", + "!unzip -q tmp.zip -d ../ && rm tmp.zip # unzip labels\n", "!f=\"test2017.zip\" && curl http://images.cocodataset.org/zips/$f -o $f && unzip -q $f && rm $f # 7GB, 41k images\n", - "%mv ./test2017 ./coco/images && mv ./coco ../ # move images to /coco and move /coco next to /yolov3" + "%mv ./test2017 ../coco/images # move to /coco" ], "execution_count": null, "outputs": [] @@ -835,37 +826,37 @@ "id": "Knxi2ncxWffW", "colab": { "base_uri": "https://localhost:8080/", - "height": 66, + "height": 65, "referenced_widgets": [ - "c1928794b5bd400da6e7817883a0ee9c", - "804fae06a69f4e11b919d8ab80822186", - "138cbb92b4fd4eaa9b7fdcbed1f57a4d", - "28bb2eea5b114f82b201e5fa39fdfc58", - "aea8bd6f395845f696e3abedbff59423", - "0514774dafdf4e39bdd5a8833d1cbcb0", - "7dabd1f8236045729c90ae78a0d9af24", - "227e357d925345f995aeea7b72750cf1" + "0fffa335322b41658508e06aed0acbf0", + "a354c6f80ce347e5a3ef64af87c0eccb", + "85823e71fea54c39bd11e2e972348836", + "fb11acd663fa4e71b041d67310d045fd", + "8a919053b780449aae5523658ad611fa", + "5bae9393a58b44f7b69fb04816f94f6f", + "d26c6d16c7f24030ab2da5285bf198ee", + "f7767886b2364c8d9efdc79e175ad8eb" ] }, - "outputId": "389207da-a1a0-4cbf-d9b8-a39546b1b76c" + "outputId": "b41ac253-9e1b-4c26-d78b-700ea0154f43" }, "source": [ "# Download COCO128\n", "torch.hub.download_url_to_file('https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip', 'tmp.zip')\n", "!unzip -q tmp.zip -d ../ && rm tmp.zip" ], - "execution_count": 5, + "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "c1928794b5bd400da6e7817883a0ee9c", + "model_id": "0fffa335322b41658508e06aed0acbf0", "version_minor": 0, "version_major": 2 }, "text/plain": [ - "HBox(children=(FloatProgress(value=0.0, max=22090455.0), HTML(value='')))" + "HBox(children=(FloatProgress(value=0.0, max=22091032.0), HTML(value='')))" ] }, "metadata": { @@ -900,7 +891,7 @@ "source": [ "# Tensorboard (optional)\n", "%load_ext tensorboard\n", - "%tensorboard --logdir runs" + "%tensorboard --logdir runs/train" ], "execution_count": null, "outputs": [] @@ -925,90 +916,87 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "2132590a-ff5e-4ab8-a20d-f8bb8ea7c42b" + "outputId": "e715d09c-5d93-4912-a0df-9da0893f2014" }, "source": [ "# Train YOLOv3 on COCO128 for 3 epochs\n", "!python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov3.pt --nosave --cache" ], - "execution_count": 6, + "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ - "Using torch 1.7.0+cu101 CUDA:0 (Tesla V100-SXM2-16GB, 16130MB)\n", + "\u001b[34m\u001b[1mgithub: \u001b[0mup to date with https://github.com/ultralytics/yolov5 ✅\n", + "YOLOv3 🚀 v5.0-2-g54d6516 torch 1.8.1+cu101 CUDA:0 (Tesla V100-SXM2-16GB, 16160.5MB)\n", "\n", - "Namespace(adam=False, batch_size=16, bucket='', cache_images=True, cfg='', data='./data/coco128.yaml', device='', epochs=3, evolve=False, exist_ok=False, global_rank=-1, hyp='data/hyp.scratch.yaml', image_weights=False, img_size=[640, 640], local_rank=-1, log_imgs=16, multi_scale=False, name='exp', noautoanchor=False, nosave=True, notest=False, project='runs/train', rect=False, resume=False, save_dir='runs/train/exp', single_cls=False, sync_bn=False, total_batch_size=16, weights='yolov3.pt', workers=8, world_size=1)\n", - "Start Tensorboard with \"tensorboard --logdir runs/train\", view at http://localhost:6006/\n", - "2020-11-26 18:51:45.386416: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library libcudart.so.10.1\n", - "Hyperparameters {'lr0': 0.01, 'lrf': 0.2, 'momentum': 0.937, 'weight_decay': 0.0005, 'warmup_epochs': 3.0, 'warmup_momentum': 0.8, 'warmup_bias_lr': 0.1, 'box': 0.05, 'cls': 0.5, 'cls_pw': 1.0, 'obj': 1.0, 'obj_pw': 1.0, 'iou_t': 0.2, 'anchor_t': 4.0, 'fl_gamma': 0.0, 'hsv_h': 0.015, 'hsv_s': 0.7, 'hsv_v': 0.4, 'degrees': 0.0, 'translate': 0.1, 'scale': 0.5, 'shear': 0.0, 'perspective': 0.0, 'flipud': 0.0, 'fliplr': 0.5, 'mosaic': 1.0, 'mixup': 0.0}\n", + "Namespace(adam=False, artifact_alias='latest', batch_size=16, bbox_interval=-1, bucket='', cache_images=True, cfg='', data='./data/coco128.yaml', device='', entity=None, epochs=3, evolve=False, exist_ok=False, global_rank=-1, hyp='data/hyp.scratch.yaml', image_weights=False, img_size=[640, 640], label_smoothing=0.0, linear_lr=False, local_rank=-1, multi_scale=False, name='exp', noautoanchor=False, nosave=True, notest=False, project='runs/train', quad=False, rect=False, resume=False, save_dir='runs/train/exp', save_period=-1, single_cls=False, sync_bn=False, total_batch_size=16, upload_dataset=False, weights='yolov3.pt', workers=8, world_size=1)\n", + "\u001b[34m\u001b[1mtensorboard: \u001b[0mStart with 'tensorboard --logdir runs/train', view at http://localhost:6006/\n", + "2021-04-12 10:29:58.539457: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.11.0\n", + "\u001b[34m\u001b[1mhyperparameters: \u001b[0mlr0=0.01, lrf=0.2, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=0.05, cls=0.5, cls_pw=1.0, obj=1.0, obj_pw=1.0, iou_t=0.2, anchor_t=4.0, fl_gamma=0.0, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, mosaic=1.0, mixup=0.0\n", + "\u001b[34m\u001b[1mwandb: \u001b[0mInstall Weights & Biases for YOLOv3 logging with 'pip install wandb' (recommended)\n", "\n", " from n params module arguments \n", - " 0 -1 1 928 models.common.Conv [3, 32, 3, 1] \n", + " 0 -1 1 3520 models.common.Focus [3, 32, 3] \n", " 1 -1 1 18560 models.common.Conv [32, 64, 3, 2] \n", - " 2 -1 1 20672 models.common.Bottleneck [64, 64] \n", + " 2 -1 1 18816 models.common.C3 [64, 64, 1] \n", " 3 -1 1 73984 models.common.Conv [64, 128, 3, 2] \n", - " 4 -1 2 164608 models.common.Bottleneck [128, 128] \n", + " 4 -1 1 156928 models.common.C3 [128, 128, 3] \n", " 5 -1 1 295424 models.common.Conv [128, 256, 3, 2] \n", - " 6 -1 8 2627584 models.common.Bottleneck [256, 256] \n", + " 6 -1 1 625152 models.common.C3 [256, 256, 3] \n", " 7 -1 1 1180672 models.common.Conv [256, 512, 3, 2] \n", - " 8 -1 8 10498048 models.common.Bottleneck [512, 512] \n", - " 9 -1 1 4720640 models.common.Conv [512, 1024, 3, 2] \n", - " 10 -1 4 20983808 models.common.Bottleneck [1024, 1024] \n", - " 11 -1 1 5245952 models.common.Bottleneck [1024, 1024, False] \n", - " 12 -1 1 525312 models.common.Conv [1024, 512, [1, 1]] \n", - " 13 -1 1 4720640 models.common.Conv [512, 1024, 3, 1] \n", - " 14 -1 1 525312 models.common.Conv [1024, 512, 1, 1] \n", - " 15 -1 1 4720640 models.common.Conv [512, 1024, 3, 1] \n", - " 16 -2 1 131584 models.common.Conv [512, 256, 1, 1] \n", - " 17 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n", - " 18 [-1, 8] 1 0 models.common.Concat [1] \n", - " 19 -1 1 1377792 models.common.Bottleneck [768, 512, False] \n", - " 20 -1 1 1312256 models.common.Bottleneck [512, 512, False] \n", - " 21 -1 1 131584 models.common.Conv [512, 256, 1, 1] \n", - " 22 -1 1 1180672 models.common.Conv [256, 512, 3, 1] \n", - " 23 -2 1 33024 models.common.Conv [256, 128, 1, 1] \n", - " 24 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n", - " 25 [-1, 6] 1 0 models.common.Concat [1] \n", - " 26 -1 1 344832 models.common.Bottleneck [384, 256, False] \n", - " 27 -1 2 656896 models.common.Bottleneck [256, 256, False] \n", - " 28 [27, 22, 15] 1 457725 models.yolo.Detect [80, [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]], [256, 512, 1024]]\n", - "Model Summary: 333 layers, 61949149 parameters, 61949149 gradients\n", + " 8 -1 1 656896 models.common.SPP [512, 512, [5, 9, 13]] \n", + " 9 -1 1 1182720 models.common.C3 [512, 512, 1, False] \n", + " 10 -1 1 131584 models.common.Conv [512, 256, 1, 1] \n", + " 11 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n", + " 12 [-1, 6] 1 0 models.common.Concat [1] \n", + " 13 -1 1 361984 models.common.C3 [512, 256, 1, False] \n", + " 14 -1 1 33024 models.common.Conv [256, 128, 1, 1] \n", + " 15 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n", + " 16 [-1, 4] 1 0 models.common.Concat [1] \n", + " 17 -1 1 90880 models.common.C3 [256, 128, 1, False] \n", + " 18 -1 1 147712 models.common.Conv [128, 128, 3, 2] \n", + " 19 [-1, 14] 1 0 models.common.Concat [1] \n", + " 20 -1 1 296448 models.common.C3 [256, 256, 1, False] \n", + " 21 -1 1 590336 models.common.Conv [256, 256, 3, 2] \n", + " 22 [-1, 10] 1 0 models.common.Concat [1] \n", + " 23 -1 1 1182720 models.common.C3 [512, 512, 1, False] \n", + " 24 [17, 20, 23] 1 229245 models.yolo.Detect [80, [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]], [128, 256, 512]]\n", + "Model Summary: 283 layers, 7276605 parameters, 7276605 gradients, 17.1 GFLOPS\n", "\n", - "Transferred 440/440 items from yolov3.pt\n", - "Optimizer groups: 75 .bias, 75 conv.weight, 72 other\n", - "Scanning '../coco128/labels/train2017' for images and labels... 128 found, 0 missing, 2 empty, 0 corrupted: 100% 128/128 [00:00<00:00, 3001.29it/s]\n", - "New cache created: ../coco128/labels/train2017.cache\n", - "Scanning '../coco128/labels/train2017.cache' for images and labels... 128 found, 0 missing, 2 empty, 0 corrupted: 100% 128/128 [00:00<00:00, 985084.24it/s]\n", - "Caching images (0.1GB): 100% 128/128 [00:00<00:00, 194.34it/s]\n", - "Scanning '../coco128/labels/train2017.cache' for images and labels... 128 found, 0 missing, 2 empty, 0 corrupted: 100% 128/128 [00:00<00:00, 711087.30it/s]\n", - "Caching images (0.1GB): 100% 128/128 [00:00<00:00, 133.98it/s]\n", - "NumExpr defaulting to 2 threads.\n", + "Transferred 362/362 items from yolov3.pt\n", + "Scaled weight_decay = 0.0005\n", + "Optimizer groups: 62 .bias, 62 conv.weight, 59 other\n", + "\u001b[34m\u001b[1mtrain: \u001b[0mScanning '../coco128/labels/train2017.cache' images and labels... 128 found, 0 missing, 2 empty, 0 corrupted: 100% 128/128 [00:00<00:00, 796544.38it/s]\n", + "\u001b[34m\u001b[1mtrain: \u001b[0mCaching images (0.1GB): 100% 128/128 [00:00<00:00, 176.73it/s]\n", + "\u001b[34m\u001b[1mval: \u001b[0mScanning '../coco128/labels/train2017.cache' images and labels... 128 found, 0 missing, 2 empty, 0 corrupted: 100% 128/128 [00:00<00:00, 500812.42it/s]\n", + "\u001b[34m\u001b[1mval: \u001b[0mCaching images (0.1GB): 100% 128/128 [00:00<00:00, 134.10it/s]\n", + "Plotting labels... \n", "\n", - "Analyzing anchors... anchors/target = 4.26, Best Possible Recall (BPR) = 0.9946\n", + "\u001b[34m\u001b[1mautoanchor: \u001b[0mAnalyzing anchors... anchors/target = 4.26, Best Possible Recall (BPR) = 0.9946\n", "Image sizes 640 train, 640 test\n", "Using 2 dataloader workers\n", "Logging results to runs/train/exp\n", "Starting training for 3 epochs...\n", "\n", - " Epoch gpu_mem box obj cls total targets img_size\n", - " 0/2 8.88G 0.02999 0.02589 0.008271 0.06414 155 640: 100% 8/8 [00:06<00:00, 1.23it/s]\n", - " Class Images Targets P R mAP@.5 mAP@.5:.95: 100% 8/8 [00:06<00:00, 1.19it/s]\n", - " all 128 929 0.527 0.83 0.782 0.547\n", + " Epoch gpu_mem box obj cls total labels img_size\n", + " 0/2 3.29G 0.04368 0.065 0.02127 0.1299 183 640: 100% 8/8 [00:03<00:00, 2.21it/s]\n", + " Class Images Labels P R mAP@.5 mAP@.5:.95: 100% 4/4 [00:04<00:00, 1.09s/it]\n", + " all 128 929 0.605 0.657 0.666 0.434\n", "\n", - " Epoch gpu_mem box obj cls total targets img_size\n", - " 1/2 8.87G 0.02966 0.02563 0.008289 0.06358 190 640: 100% 8/8 [00:02<00:00, 3.09it/s]\n", - " Class Images Targets P R mAP@.5 mAP@.5:.95: 100% 8/8 [00:01<00:00, 5.90it/s]\n", - " all 128 929 0.528 0.831 0.784 0.55\n", + " Epoch gpu_mem box obj cls total labels img_size\n", + " 1/2 6.65G 0.04556 0.0651 0.01987 0.1305 166 640: 100% 8/8 [00:01<00:00, 5.18it/s]\n", + " Class Images Labels P R mAP@.5 mAP@.5:.95: 100% 4/4 [00:01<00:00, 2.72it/s]\n", + " all 128 929 0.61 0.66 0.669 0.438\n", "\n", - " Epoch gpu_mem box obj cls total targets img_size\n", - " 2/2 8.87G 0.02947 0.02217 0.009194 0.06083 135 640: 100% 8/8 [00:02<00:00, 3.02it/s]\n", - " Class Images Targets P R mAP@.5 mAP@.5:.95: 100% 8/8 [00:02<00:00, 3.07it/s]\n", - " all 128 929 0.528 0.834 0.784 0.55\n", - "Optimizer stripped from runs/train/exp/weights/last.pt, 124.2MB\n", - "Optimizer stripped from runs/train/exp/weights/best.pt, 124.2MB\n", - "3 epochs completed in 0.009 hours.\n", - "\n" + " Epoch gpu_mem box obj cls total labels img_size\n", + " 2/2 6.65G 0.04624 0.06923 0.0196 0.1351 182 640: 100% 8/8 [00:01<00:00, 5.19it/s]\n", + " Class Images Labels P R mAP@.5 mAP@.5:.95: 100% 4/4 [00:03<00:00, 1.27it/s]\n", + " all 128 929 0.618 0.659 0.671 0.438\n", + "3 epochs completed in 0.007 hours.\n", + "\n", + "Optimizer stripped from runs/train/exp/weights/last.pt, 14.8MB\n", + "Optimizer stripped from runs/train/exp/weights/best.pt, 14.8MB\n" ], "name": "stdout" } @@ -1031,9 +1019,9 @@ "source": [ "## Weights & Biases Logging 🌟 NEW\n", "\n", - "[Weights & Biases](https://www.wandb.com/) (W&B) is now integrated with YOLOv3 for real-time visualization and cloud logging of training runs. This allows for better run comparison and introspection, as well improved visibility and collaboration for teams. To enable W&B `pip install wandb`, and then train normally (you will be guided through setup on first use). \n", + "[Weights & Biases](https://wandb.ai/site?utm_campaign=repo_yolo_notebook) (W&B) is now integrated with YOLOv3 for real-time visualization and cloud logging of training runs. This allows for better run comparison and introspection, as well improved visibility and collaboration for teams. To enable W&B `pip install wandb`, and then train normally (you will be guided through setup on first use). \n", "\n", - "During training you will see live updates at [https://wandb.ai/home](https://wandb.ai/home), and you can create and share detailed [Reports](https://wandb.ai/glenn-jocher/yolov5_tutorial/reports/YOLOv5-COCO128-Tutorial-Results--VmlldzozMDI5OTY) of your results. For more information see the [YOLOv5 Weights & Biases Tutorial](https://github.com/ultralytics/yolov5/issues/1289). \n", + "During training you will see live updates at [https://wandb.ai/home](https://wandb.ai/home?utm_campaign=repo_yolo_notebook), and you can create and share detailed [Reports](https://wandb.ai/glenn-jocher/yolov5_tutorial/reports/YOLOv5-COCO128-Tutorial-Results--VmlldzozMDI5OTY) of your results. For more information see the [YOLOv5 Weights & Biases Tutorial](https://github.com/ultralytics/yolov5/issues/1289). \n", "\n", "" ] @@ -1119,12 +1107,23 @@ "\n", "YOLOv3 may be run in any of the following up-to-date verified environments (with all dependencies including [CUDA](https://developer.nvidia.com/cuda)/[CUDNN](https://developer.nvidia.com/cudnn), [Python](https://www.python.org/) and [PyTorch](https://pytorch.org/) preinstalled):\n", "\n", - "- **Google Colab Notebook** with free GPU: \"Open\n", - "- **Kaggle Notebook** with free GPU: [https://www.kaggle.com/ultralytics/yolov3](https://www.kaggle.com/ultralytics/yolov3)\n", - "- **Google Cloud** Deep Learning VM. See [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) \n", - "- **Docker Image** https://hub.docker.com/r/ultralytics/yolov3. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) ![Docker Pulls](https://img.shields.io/docker/pulls/ultralytics/yolov3?logo=docker)\n", + "- **Google Colab and Kaggle** notebooks with free GPU: \"Open \"Open\n", + "- **Google Cloud** Deep Learning VM. See [GCP Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/GCP-Quickstart)\n", + "- **Amazon** Deep Learning AMI. See [AWS Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/AWS-Quickstart)\n", + "- **Docker Image**. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/Docker-Quickstart) \"Docker\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6Qu7Iesl0p54" + }, + "source": [ + "# Status\n", "\n", - "\n" + "![CI CPU testing](https://github.com/ultralytics/yolov5/workflows/CI%20CPU%20testing/badge.svg)\n", + "\n", + "If this badge is green, all [YOLOv3 GitHub Actions](https://github.com/ultralytics/yolov5/actions) Continuous Integration (CI) tests are currently passing. CI tests verify correct operation of YOLOv3 training ([train.py](https://github.com/ultralytics/yolov5/blob/master/train.py)), testing ([test.py](https://github.com/ultralytics/yolov5/blob/master/test.py)), inference ([detect.py](https://github.com/ultralytics/yolov5/blob/master/detect.py)) and export ([export.py](https://github.com/ultralytics/yolov5/blob/master/models/export.py)) on MacOS, Windows, and Ubuntu every 24 hours and on every commit.\n" ] }, { @@ -1146,8 +1145,8 @@ "source": [ "# Re-clone repo\n", "%cd ..\n", - "%rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3\n", - "%cd yolov3" + "%rm -rf yolov5 && git clone https://github.com/ultralytics/yolov5\n", + "%cd yolov5" ], "execution_count": null, "outputs": [] @@ -1158,11 +1157,33 @@ "id": "mcKoSIK2WSzj" }, "source": [ - "# Test all\n", - "%%shell\n", - "for x in yolov3 yolov3-spp yolov3-tiny; do\n", - " python test.py --weights $x.pt --data coco.yaml --img 640\n", - "done" + "# Reproduce\n", + "for x in 'yolov3', 'yolov3-spp', 'yolov3-tiny':\n", + " !python test.py --weights {x}.pt --data coco.yaml --img 640 --conf 0.25 --iou 0.45 # speed\n", + " !python test.py --weights {x}.pt --data coco.yaml --img 640 --conf 0.001 --iou 0.65 # mAP" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "GMusP4OAxFu6" + }, + "source": [ + "# PyTorch Hub\n", + "import torch\n", + "\n", + "# Model\n", + "model = torch.hub.load('ultralytics/yolov5', 'yolov3')\n", + "\n", + "# Images\n", + "dir = 'https://github.com/ultralytics/yolov5/raw/master/data/images/'\n", + "imgs = [dir + f for f in ('zidane.jpg', 'bus.jpg')] # batch of images\n", + "\n", + "# Inference\n", + "results = model(imgs)\n", + "results.print() # or .show(), .save()" ], "execution_count": null, "outputs": [] @@ -1195,6 +1216,35 @@ "execution_count": null, "outputs": [] }, + { + "cell_type": "code", + "metadata": { + "id": "gogI-kwi3Tye" + }, + "source": [ + "# Profile\n", + "from utils.torch_utils import profile \n", + "\n", + "m1 = lambda x: x * torch.sigmoid(x)\n", + "m2 = torch.nn.SiLU()\n", + "profile(x=torch.randn(16, 3, 640, 640), ops=[m1, m2], n=100)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "RVRSOhEvUdb5" + }, + "source": [ + "# Evolve\n", + "!python train.py --img 640 --batch 64 --epochs 100 --data coco128.yaml --weights yolov3.pt --cache --noautoanchor --evolve\n", + "!d=runs/train/evolve && cp evolve.* $d && zip -r evolve.zip $d && gsutil mv evolve.zip gs://bucket # upload results (optional)" + ], + "execution_count": null, + "outputs": [] + }, { "cell_type": "code", "metadata": { @@ -1202,7 +1252,7 @@ }, "source": [ "# VOC\n", - "for b, m in zip([24, 24, 64], ['yolov3', 'yolov3-spp', 'yolov3-tiny']): # zip(batch_size, model)\n", + "for b, m in zip([64, 48, 32, 16], ['yolov3', 'yolov3-spp', 'yolov3-tiny']): # zip(batch_size, model)\n", " !python train.py --batch {b} --weights {m}.pt --data voc.yaml --epochs 50 --cache --img 512 --nosave --hyp hyp.finetune.yaml --project VOC --name {m}" ], "execution_count": null, diff --git a/utils/autoanchor.py b/utils/autoanchor.py index c6e6b9da..8d62474f 100644 --- a/utils/autoanchor.py +++ b/utils/autoanchor.py @@ -37,17 +37,21 @@ def check_anchors(dataset, model, thr=4.0, imgsz=640): bpr = (best > 1. / thr).float().mean() # best possible recall return bpr, aat - bpr, aat = metric(m.anchor_grid.clone().cpu().view(-1, 2)) + anchors = m.anchor_grid.clone().cpu().view(-1, 2) # current anchors + bpr, aat = metric(anchors) print(f'anchors/target = {aat:.2f}, Best Possible Recall (BPR) = {bpr:.4f}', end='') if bpr < 0.98: # threshold to recompute print('. Attempting to improve anchors, please wait...') na = m.anchor_grid.numel() // 2 # number of anchors - new_anchors = kmean_anchors(dataset, n=na, img_size=imgsz, thr=thr, gen=1000, verbose=False) - new_bpr = metric(new_anchors.reshape(-1, 2))[0] + try: + anchors = kmean_anchors(dataset, n=na, img_size=imgsz, thr=thr, gen=1000, verbose=False) + except Exception as e: + print(f'{prefix}ERROR: {e}') + new_bpr = metric(anchors)[0] if new_bpr > bpr: # replace anchors - new_anchors = torch.tensor(new_anchors, device=m.anchors.device).type_as(m.anchors) - m.anchor_grid[:] = new_anchors.clone().view_as(m.anchor_grid) # for inference - m.anchors[:] = new_anchors.clone().view_as(m.anchors) / m.stride.to(m.anchors.device).view(-1, 1, 1) # loss + anchors = torch.tensor(anchors, device=m.anchors.device).type_as(m.anchors) + m.anchor_grid[:] = anchors.clone().view_as(m.anchor_grid) # for inference + m.anchors[:] = anchors.clone().view_as(m.anchors) / m.stride.to(m.anchors.device).view(-1, 1, 1) # loss check_anchor_order(m) print(f'{prefix}New anchors saved to model. Update model *.yaml to use these anchors in the future.') else: @@ -98,7 +102,7 @@ def kmean_anchors(path='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen=10 if isinstance(path, str): # *.yaml file with open(path) as f: - data_dict = yaml.load(f, Loader=yaml.FullLoader) # model dict + data_dict = yaml.load(f, Loader=yaml.SafeLoader) # model dict from utils.datasets import LoadImagesAndLabels dataset = LoadImagesAndLabels(data_dict['train'], augment=True, rect=True) else: @@ -119,6 +123,7 @@ def kmean_anchors(path='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen=10 print(f'{prefix}Running kmeans for {n} anchors on {len(wh)} points...') s = wh.std(0) # sigmas for whitening k, dist = kmeans(wh / s, n, iter=30) # points, mean distance + assert len(k) == n, print(f'{prefix}ERROR: scipy.cluster.vq.kmeans requested {n} points but returned only {len(k)}') k *= s wh = torch.tensor(wh, dtype=torch.float32) # filtered wh0 = torch.tensor(wh0, dtype=torch.float32) # unfiltered diff --git a/utils/aws/__init__.py b/utils/aws/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/utils/aws/mime.sh b/utils/aws/mime.sh new file mode 100644 index 00000000..c319a83c --- /dev/null +++ b/utils/aws/mime.sh @@ -0,0 +1,26 @@ +# AWS EC2 instance startup 'MIME' script https://aws.amazon.com/premiumsupport/knowledge-center/execute-user-data-ec2/ +# This script will run on every instance restart, not only on first start +# --- DO NOT COPY ABOVE COMMENTS WHEN PASTING INTO USERDATA --- + +Content-Type: multipart/mixed; boundary="//" +MIME-Version: 1.0 + +--// +Content-Type: text/cloud-config; charset="us-ascii" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Content-Disposition: attachment; filename="cloud-config.txt" + +#cloud-config +cloud_final_modules: +- [scripts-user, always] + +--// +Content-Type: text/x-shellscript; charset="us-ascii" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Content-Disposition: attachment; filename="userdata.txt" + +#!/bin/bash +# --- paste contents of userdata.sh here --- +--// diff --git a/utils/aws/resume.py b/utils/aws/resume.py new file mode 100644 index 00000000..faad8d24 --- /dev/null +++ b/utils/aws/resume.py @@ -0,0 +1,37 @@ +# Resume all interrupted trainings in yolov5/ dir including DDP trainings +# Usage: $ python utils/aws/resume.py + +import os +import sys +from pathlib import Path + +import torch +import yaml + +sys.path.append('./') # to run '$ python *.py' files in subdirectories + +port = 0 # --master_port +path = Path('').resolve() +for last in path.rglob('*/**/last.pt'): + ckpt = torch.load(last) + if ckpt['optimizer'] is None: + continue + + # Load opt.yaml + with open(last.parent.parent / 'opt.yaml') as f: + opt = yaml.load(f, Loader=yaml.SafeLoader) + + # Get device count + d = opt['device'].split(',') # devices + nd = len(d) # number of devices + ddp = nd > 1 or (nd == 0 and torch.cuda.device_count() > 1) # distributed data parallel + + if ddp: # multi-GPU + port += 1 + cmd = f'python -m torch.distributed.launch --nproc_per_node {nd} --master_port {port} train.py --resume {last}' + else: # single-GPU + cmd = f'python train.py --resume {last}' + + cmd += ' > /dev/null 2>&1 &' # redirect output to dev/null and run in daemon thread + print(cmd) + os.system(cmd) diff --git a/utils/aws/userdata.sh b/utils/aws/userdata.sh new file mode 100644 index 00000000..890606b7 --- /dev/null +++ b/utils/aws/userdata.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# AWS EC2 instance startup script https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html +# This script will run only once on first instance start (for a re-start script see mime.sh) +# /home/ubuntu (ubuntu) or /home/ec2-user (amazon-linux) is working dir +# Use >300 GB SSD + +cd home/ubuntu +if [ ! -d yolov5 ]; then + echo "Running first-time script." # install dependencies, download COCO, pull Docker + git clone https://github.com/ultralytics/yolov5 && sudo chmod -R 777 yolov5 + cd yolov5 + bash data/scripts/get_coco.sh && echo "Data done." & + sudo docker pull ultralytics/yolov5:latest && echo "Docker done." & + python -m pip install --upgrade pip && pip install -r requirements.txt && python detect.py && echo "Requirements done." & + wait && echo "All tasks done." # finish background tasks +else + echo "Running re-start script." # resume interrupted runs + i=0 + list=$(sudo docker ps -qa) # container list i.e. $'one\ntwo\nthree\nfour' + while IFS= read -r id; do + ((i++)) + echo "restarting container $i: $id" + sudo docker start $id + # sudo docker exec -it $id python train.py --resume # single-GPU + sudo docker exec -d $id python utils/aws/resume.py # multi-scenario + done <<<"$list" +fi diff --git a/utils/datasets.py b/utils/datasets.py index d2002fab..fcaa3415 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -20,12 +20,13 @@ from PIL import Image, ExifTags from torch.utils.data import Dataset from tqdm import tqdm -from utils.general import xyxy2xywh, xywh2xyxy, clean_str +from utils.general import check_requirements, xyxy2xywh, xywh2xyxy, xywhn2xyxy, xyn2xy, segment2box, segments2boxes, \ + resample_segments, clean_str from utils.torch_utils import torch_distributed_zero_first # Parameters help_url = 'https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data' -img_formats = ['bmp', 'jpg', 'jpeg', 'png', 'tif', 'tiff', 'dng'] # acceptable image suffixes +img_formats = ['bmp', 'jpg', 'jpeg', 'png', 'tif', 'tiff', 'dng', 'webp', 'mpo'] # acceptable image suffixes vid_formats = ['mov', 'avi', 'mp4', 'mpg', 'mpeg', 'm4v', 'wmv', 'mkv'] # acceptable video suffixes logger = logging.getLogger(__name__) @@ -119,9 +120,8 @@ class _RepeatSampler(object): class LoadImages: # for inference - def __init__(self, path, img_size=640): - p = str(Path(path)) # os-agnostic - p = os.path.abspath(p) # absolute path + def __init__(self, path, img_size=640, stride=32): + p = str(Path(path).absolute()) # os-agnostic absolute path if '*' in p: files = sorted(glob.glob(p, recursive=True)) # glob elif os.path.isdir(p): @@ -136,6 +136,7 @@ class LoadImages: # for inference ni, nv = len(images), len(videos) self.img_size = img_size + self.stride = stride self.files = images + videos self.nf = ni + nv # number of files self.video_flag = [False] * ni + [True] * nv @@ -181,7 +182,7 @@ class LoadImages: # for inference print(f'image {self.count}/{self.nf} {path}: ', end='') # Padded resize - img = letterbox(img0, new_shape=self.img_size)[0] + img = letterbox(img0, self.img_size, stride=self.stride)[0] # Convert img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416 @@ -199,8 +200,9 @@ class LoadImages: # for inference class LoadWebcam: # for inference - def __init__(self, pipe='0', img_size=640): + def __init__(self, pipe='0', img_size=640, stride=32): self.img_size = img_size + self.stride = stride if pipe.isnumeric(): pipe = eval(pipe) # local camera @@ -243,7 +245,7 @@ class LoadWebcam: # for inference print(f'webcam {self.count}: ', end='') # Padded resize - img = letterbox(img0, new_shape=self.img_size)[0] + img = letterbox(img0, self.img_size, stride=self.stride)[0] # Convert img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416 @@ -256,9 +258,10 @@ class LoadWebcam: # for inference class LoadStreams: # multiple IP or RTSP cameras - def __init__(self, sources='streams.txt', img_size=640): + def __init__(self, sources='streams.txt', img_size=640, stride=32): self.mode = 'stream' self.img_size = img_size + self.stride = stride if os.path.isfile(sources): with open(sources, 'r') as f: @@ -272,19 +275,25 @@ class LoadStreams: # multiple IP or RTSP cameras for i, s in enumerate(sources): # Start the thread to read frames from the video stream print(f'{i + 1}/{n}: {s}... ', end='') - cap = cv2.VideoCapture(eval(s) if s.isnumeric() else s) + url = eval(s) if s.isnumeric() else s + if 'youtube.com/' in url or 'youtu.be/' in url: # if source is YouTube video + check_requirements(('pafy', 'youtube_dl')) + import pafy + url = pafy.new(url).getbest(preftype="mp4").url + cap = cv2.VideoCapture(url) assert cap.isOpened(), f'Failed to open {s}' w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) - fps = cap.get(cv2.CAP_PROP_FPS) % 100 + self.fps = cap.get(cv2.CAP_PROP_FPS) % 100 + _, self.imgs[i] = cap.read() # guarantee first frame thread = Thread(target=self.update, args=([i, cap]), daemon=True) - print(f' success ({w}x{h} at {fps:.2f} FPS).') + print(f' success ({w}x{h} at {self.fps:.2f} FPS).') thread.start() print('') # newline # check for common shapes - s = np.stack([letterbox(x, new_shape=self.img_size)[0].shape for x in self.imgs], 0) # inference shapes + s = np.stack([letterbox(x, self.img_size, stride=self.stride)[0].shape for x in self.imgs], 0) # shapes self.rect = np.unique(s, axis=0).shape[0] == 1 # rect inference if all shapes equal if not self.rect: print('WARNING: Different stream shapes detected. For optimal performance supply similarly-shaped streams.') @@ -297,9 +306,10 @@ class LoadStreams: # multiple IP or RTSP cameras # _, self.imgs[index] = cap.read() cap.grab() if n == 4: # read every 4th frame - _, self.imgs[index] = cap.retrieve() + success, im = cap.retrieve() + self.imgs[index] = im if success else self.imgs[index] * 0 n = 0 - time.sleep(0.01) # wait time + time.sleep(1 / self.fps) # wait time def __iter__(self): self.count = -1 @@ -313,7 +323,7 @@ class LoadStreams: # multiple IP or RTSP cameras raise StopIteration # Letterbox - img = [letterbox(x, new_shape=self.img_size, auto=self.rect)[0] for x in img0] + img = [letterbox(x, self.img_size, auto=self.rect, stride=self.stride)[0] for x in img0] # Stack img = np.stack(img, 0) @@ -331,7 +341,7 @@ class LoadStreams: # multiple IP or RTSP cameras def img2label_paths(img_paths): # Define label paths as a function of image paths sa, sb = os.sep + 'images' + os.sep, os.sep + 'labels' + os.sep # /images/, /labels/ substrings - return [x.replace(sa, sb, 1).replace('.' + x.split('.')[-1], '.txt') for x in img_paths] + return ['txt'.join(x.replace(sa, sb, 1).rsplit(x.split('.')[-1], 1)) for x in img_paths] class LoadImagesAndLabels(Dataset): # for training/testing @@ -345,6 +355,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing self.mosaic = self.augment and not self.rect # load 4 images at a time into a mosaic (only during training) self.mosaic_border = [-img_size // 2, -img_size // 2] self.stride = stride + self.path = path try: f = [] # image files @@ -352,37 +363,42 @@ class LoadImagesAndLabels(Dataset): # for training/testing p = Path(p) # os-agnostic if p.is_dir(): # dir f += glob.glob(str(p / '**' / '*.*'), recursive=True) + # f = list(p.rglob('**/*.*')) # pathlib elif p.is_file(): # file with open(p, 'r') as t: t = t.read().strip().splitlines() parent = str(p.parent) + os.sep f += [x.replace('./', parent) if x.startswith('./') else x for x in t] # local to global path + # f += [p.parent / x.lstrip(os.sep) for x in t] # local to global path (pathlib) else: raise Exception(f'{prefix}{p} does not exist') self.img_files = sorted([x.replace('/', os.sep) for x in f if x.split('.')[-1].lower() in img_formats]) + # self.img_files = sorted([x for x in f if x.suffix[1:].lower() in img_formats]) # pathlib assert self.img_files, f'{prefix}No images found' except Exception as e: raise Exception(f'{prefix}Error loading data from {path}: {e}\nSee {help_url}') # Check cache self.label_files = img2label_paths(self.img_files) # labels - cache_path = Path(self.label_files[0]).parent.with_suffix('.cache') # cached labels + cache_path = (p if p.is_file() else Path(self.label_files[0]).parent).with_suffix('.cache') # cached labels if cache_path.is_file(): - cache = torch.load(cache_path) # load - if cache['hash'] != get_hash(self.label_files + self.img_files) or 'results' not in cache: # changed - cache = self.cache_labels(cache_path, prefix) # re-cache + cache, exists = torch.load(cache_path), True # load + if cache['hash'] != get_hash(self.label_files + self.img_files) or 'version' not in cache: # changed + cache, exists = self.cache_labels(cache_path, prefix), False # re-cache else: - cache = self.cache_labels(cache_path, prefix) # cache + cache, exists = self.cache_labels(cache_path, prefix), False # cache # Display cache - [nf, nm, ne, nc, n] = cache.pop('results') # found, missing, empty, corrupted, total - desc = f"Scanning '{cache_path}' for images and labels... {nf} found, {nm} missing, {ne} empty, {nc} corrupted" - tqdm(None, desc=prefix + desc, total=n, initial=n) + nf, nm, ne, nc, n = cache.pop('results') # found, missing, empty, corrupted, total + if exists: + d = f"Scanning '{cache_path}' images and labels... {nf} found, {nm} missing, {ne} empty, {nc} corrupted" + tqdm(None, desc=prefix + d, total=n, initial=n) # display cache results assert nf > 0 or not augment, f'{prefix}No labels in {cache_path}. Can not train without labels. See {help_url}' # Read cache cache.pop('hash') # remove hash - labels, shapes = zip(*cache.values()) + cache.pop('version') # remove version + labels, shapes, self.segments = zip(*cache.values()) self.labels = list(labels) self.shapes = np.array(shapes, dtype=np.float64) self.img_files = list(cache.keys()) # update @@ -433,6 +449,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing self.imgs[i], self.img_hw0[i], self.img_hw[i] = x # img, hw_original, hw_resized = load_image(self, i) gb += self.imgs[i].nbytes pbar.desc = f'{prefix}Caching images ({gb / 1E9:.1f}GB)' + pbar.close() def cache_labels(self, path=Path('./labels.cache'), prefix=''): # Cache dataset labels, check images and read shapes @@ -445,13 +462,20 @@ class LoadImagesAndLabels(Dataset): # for training/testing im = Image.open(im_file) im.verify() # PIL verify shape = exif_size(im) # image size - assert (shape[0] > 9) & (shape[1] > 9), 'image size <10 pixels' + segments = [] # instance segments + assert (shape[0] > 9) & (shape[1] > 9), f'image size {shape} <10 pixels' + assert im.format.lower() in img_formats, f'invalid image format {im.format}' # verify labels if os.path.isfile(lb_file): nf += 1 # label found with open(lb_file, 'r') as f: - l = np.array([x.split() for x in f.read().strip().splitlines()], dtype=np.float32) # labels + l = [x.split() for x in f.read().strip().splitlines()] + if any([len(x) > 8 for x in l]): # is segment + classes = np.array([x[0] for x in l], dtype=np.float32) + segments = [np.array(x[1:], dtype=np.float32).reshape(-1, 2) for x in l] # (cls, xy1...) + l = np.concatenate((classes.reshape(-1, 1), segments2boxes(segments)), 1) # (cls, xywh) + l = np.array(l, dtype=np.float32) if len(l): assert l.shape[1] == 5, 'labels require 5 columns each' assert (l >= 0).all(), 'negative labels' @@ -463,19 +487,21 @@ class LoadImagesAndLabels(Dataset): # for training/testing else: nm += 1 # label missing l = np.zeros((0, 5), dtype=np.float32) - x[im_file] = [l, shape] + x[im_file] = [l, shape, segments] except Exception as e: nc += 1 print(f'{prefix}WARNING: Ignoring corrupted image and/or label {im_file}: {e}') - pbar.desc = f"{prefix}Scanning '{path.parent / path.stem}' for images and labels... " \ + pbar.desc = f"{prefix}Scanning '{path.parent / path.stem}' images and labels... " \ f"{nf} found, {nm} missing, {ne} empty, {nc} corrupted" + pbar.close() if nf == 0: print(f'{prefix}WARNING: No labels found in {path}. See {help_url}') x['hash'] = get_hash(self.label_files + self.img_files) - x['results'] = [nf, nm, ne, nc, i + 1] + x['results'] = nf, nm, ne, nc, i + 1 + x['version'] = 0.1 # cache version torch.save(x, path) # save for next time logging.info(f'{prefix}New cache created: {path}') return x @@ -515,16 +541,9 @@ class LoadImagesAndLabels(Dataset): # for training/testing img, ratio, pad = letterbox(img, shape, auto=False, scaleup=self.augment) shapes = (h0, w0), ((h / h0, w / w0), pad) # for COCO mAP rescaling - # Load labels - labels = [] - x = self.labels[index] - if x.size > 0: - # Normalized xywh to pixel xyxy format - labels = x.copy() - labels[:, 1] = ratio[0] * w * (x[:, 1] - x[:, 3] / 2) + pad[0] # pad width - labels[:, 2] = ratio[1] * h * (x[:, 2] - x[:, 4] / 2) + pad[1] # pad height - labels[:, 3] = ratio[0] * w * (x[:, 1] + x[:, 3] / 2) + pad[0] - labels[:, 4] = ratio[1] * h * (x[:, 2] + x[:, 4] / 2) + pad[1] + labels = self.labels[index].copy() + if labels.size: # normalized xywh to pixel xyxy format + labels[:, 1:] = xywhn2xyxy(labels[:, 1:], ratio[0] * w, ratio[1] * h, padw=pad[0], padh=pad[1]) if self.augment: # Augment imagespace @@ -637,19 +656,25 @@ def augment_hsv(img, hgain=0.5, sgain=0.5, vgain=0.5): img_hsv = cv2.merge((cv2.LUT(hue, lut_hue), cv2.LUT(sat, lut_sat), cv2.LUT(val, lut_val))).astype(dtype) cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) # no return needed - # Histogram equalization - # if random.random() < 0.2: - # for i in range(3): - # img[:, :, i] = cv2.equalizeHist(img[:, :, i]) + +def hist_equalize(img, clahe=True, bgr=False): + # Equalize histogram on BGR image 'img' with img.shape(n,m,3) and range 0-255 + yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV if bgr else cv2.COLOR_RGB2YUV) + if clahe: + c = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8)) + yuv[:, :, 0] = c.apply(yuv[:, :, 0]) + else: + yuv[:, :, 0] = cv2.equalizeHist(yuv[:, :, 0]) # equalize Y channel histogram + return cv2.cvtColor(yuv, cv2.COLOR_YUV2BGR if bgr else cv2.COLOR_YUV2RGB) # convert YUV image to RGB def load_mosaic(self, index): # loads images in a 4-mosaic - labels4 = [] + labels4, segments4 = [], [] s = self.img_size yc, xc = [int(random.uniform(-x, 2 * s + x)) for x in self.mosaic_border] # mosaic center x, y - indices = [index] + [self.indices[random.randint(0, self.n - 1)] for _ in range(3)] # 3 additional image indices + indices = [index] + random.choices(self.indices, k=3) # 3 additional image indices for i, index in enumerate(indices): # Load image img, _, (h, w) = load_image(self, index) @@ -674,23 +699,21 @@ def load_mosaic(self, index): padh = y1a - y1b # Labels - x = self.labels[index] - labels = x.copy() - if x.size > 0: # Normalized xywh to pixel xyxy format - labels[:, 1] = w * (x[:, 1] - x[:, 3] / 2) + padw - labels[:, 2] = h * (x[:, 2] - x[:, 4] / 2) + padh - labels[:, 3] = w * (x[:, 1] + x[:, 3] / 2) + padw - labels[:, 4] = h * (x[:, 2] + x[:, 4] / 2) + padh + labels, segments = self.labels[index].copy(), self.segments[index].copy() + if labels.size: + labels[:, 1:] = xywhn2xyxy(labels[:, 1:], w, h, padw, padh) # normalized xywh to pixel xyxy format + segments = [xyn2xy(x, w, h, padw, padh) for x in segments] labels4.append(labels) + segments4.extend(segments) # Concat/clip labels - if len(labels4): - labels4 = np.concatenate(labels4, 0) - np.clip(labels4[:, 1:], 0, 2 * s, out=labels4[:, 1:]) # use with random_perspective - # img4, labels4 = replicate(img4, labels4) # replicate + labels4 = np.concatenate(labels4, 0) + for x in (labels4[:, 1:], *segments4): + np.clip(x, 0, 2 * s, out=x) # clip when using random_perspective() + # img4, labels4 = replicate(img4, labels4) # replicate # Augment - img4, labels4 = random_perspective(img4, labels4, + img4, labels4 = random_perspective(img4, labels4, segments4, degrees=self.hyp['degrees'], translate=self.hyp['translate'], scale=self.hyp['scale'], @@ -704,9 +727,9 @@ def load_mosaic(self, index): def load_mosaic9(self, index): # loads images in a 9-mosaic - labels9 = [] + labels9, segments9 = [], [] s = self.img_size - indices = [index] + [self.indices[random.randint(0, self.n - 1)] for _ in range(8)] # 8 additional image indices + indices = [index] + random.choices(self.indices, k=8) # 8 additional image indices for i, index in enumerate(indices): # Load image img, _, (h, w) = load_image(self, index) @@ -737,34 +760,34 @@ def load_mosaic9(self, index): x1, y1, x2, y2 = [max(x, 0) for x in c] # allocate coords # Labels - x = self.labels[index] - labels = x.copy() - if x.size > 0: # Normalized xywh to pixel xyxy format - labels[:, 1] = w * (x[:, 1] - x[:, 3] / 2) + padx - labels[:, 2] = h * (x[:, 2] - x[:, 4] / 2) + pady - labels[:, 3] = w * (x[:, 1] + x[:, 3] / 2) + padx - labels[:, 4] = h * (x[:, 2] + x[:, 4] / 2) + pady + labels, segments = self.labels[index].copy(), self.segments[index].copy() + if labels.size: + labels[:, 1:] = xywhn2xyxy(labels[:, 1:], w, h, padx, pady) # normalized xywh to pixel xyxy format + segments = [xyn2xy(x, w, h, padx, pady) for x in segments] labels9.append(labels) + segments9.extend(segments) # Image img9[y1:y2, x1:x2] = img[y1 - pady:, x1 - padx:] # img9[ymin:ymax, xmin:xmax] hp, wp = h, w # height, width previous # Offset - yc, xc = [int(random.uniform(0, s)) for x in self.mosaic_border] # mosaic center x, y + yc, xc = [int(random.uniform(0, s)) for _ in self.mosaic_border] # mosaic center x, y img9 = img9[yc:yc + 2 * s, xc:xc + 2 * s] # Concat/clip labels - if len(labels9): - labels9 = np.concatenate(labels9, 0) - labels9[:, [1, 3]] -= xc - labels9[:, [2, 4]] -= yc + labels9 = np.concatenate(labels9, 0) + labels9[:, [1, 3]] -= xc + labels9[:, [2, 4]] -= yc + c = np.array([xc, yc]) # centers + segments9 = [x - c for x in segments9] - np.clip(labels9[:, 1:], 0, 2 * s, out=labels9[:, 1:]) # use with random_perspective - # img9, labels9 = replicate(img9, labels9) # replicate + for x in (labels9[:, 1:], *segments9): + np.clip(x, 0, 2 * s, out=x) # clip when using random_perspective() + # img9, labels9 = replicate(img9, labels9) # replicate # Augment - img9, labels9 = random_perspective(img9, labels9, + img9, labels9 = random_perspective(img9, labels9, segments9, degrees=self.hyp['degrees'], translate=self.hyp['translate'], scale=self.hyp['scale'], @@ -792,8 +815,8 @@ def replicate(img, labels): return img, labels -def letterbox(img, new_shape=(640, 640), color=(114, 114, 114), auto=True, scaleFill=False, scaleup=True): - # Resize image to a 32-pixel-multiple rectangle https://github.com/ultralytics/yolov3/issues/232 +def letterbox(img, new_shape=(640, 640), color=(114, 114, 114), auto=True, scaleFill=False, scaleup=True, stride=32): + # Resize and pad image while meeting stride-multiple constraints shape = img.shape[:2] # current shape [height, width] if isinstance(new_shape, int): new_shape = (new_shape, new_shape) @@ -808,7 +831,7 @@ def letterbox(img, new_shape=(640, 640), color=(114, 114, 114), auto=True, scale new_unpad = int(round(shape[1] * r)), int(round(shape[0] * r)) dw, dh = new_shape[1] - new_unpad[0], new_shape[0] - new_unpad[1] # wh padding if auto: # minimum rectangle - dw, dh = np.mod(dw, 32), np.mod(dh, 32) # wh padding + dw, dh = np.mod(dw, stride), np.mod(dh, stride) # wh padding elif scaleFill: # stretch dw, dh = 0.0, 0.0 new_unpad = (new_shape[1], new_shape[0]) @@ -825,7 +848,8 @@ def letterbox(img, new_shape=(640, 640), color=(114, 114, 114), auto=True, scale return img, ratio, (dw, dh) -def random_perspective(img, targets=(), degrees=10, translate=.1, scale=.1, shear=10, perspective=0.0, border=(0, 0)): +def random_perspective(img, targets=(), segments=(), degrees=10, translate=.1, scale=.1, shear=10, perspective=0.0, + border=(0, 0)): # torchvision.transforms.RandomAffine(degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-10, 10)) # targets = [cls, xyxy] @@ -877,37 +901,38 @@ def random_perspective(img, targets=(), degrees=10, translate=.1, scale=.1, shea # Transform label coordinates n = len(targets) if n: - # warp points - xy = np.ones((n * 4, 3)) - xy[:, :2] = targets[:, [1, 2, 3, 4, 1, 4, 3, 2]].reshape(n * 4, 2) # x1y1, x2y2, x1y2, x2y1 - xy = xy @ M.T # transform - if perspective: - xy = (xy[:, :2] / xy[:, 2:3]).reshape(n, 8) # rescale - else: # affine - xy = xy[:, :2].reshape(n, 8) + use_segments = any(x.any() for x in segments) + new = np.zeros((n, 4)) + if use_segments: # warp segments + segments = resample_segments(segments) # upsample + for i, segment in enumerate(segments): + xy = np.ones((len(segment), 3)) + xy[:, :2] = segment + xy = xy @ M.T # transform + xy = xy[:, :2] / xy[:, 2:3] if perspective else xy[:, :2] # perspective rescale or affine - # create new boxes - x = xy[:, [0, 2, 4, 6]] - y = xy[:, [1, 3, 5, 7]] - xy = np.concatenate((x.min(1), y.min(1), x.max(1), y.max(1))).reshape(4, n).T + # clip + new[i] = segment2box(xy, width, height) - # # apply angle-based reduction of bounding boxes - # radians = a * math.pi / 180 - # reduction = max(abs(math.sin(radians)), abs(math.cos(radians))) ** 0.5 - # x = (xy[:, 2] + xy[:, 0]) / 2 - # y = (xy[:, 3] + xy[:, 1]) / 2 - # w = (xy[:, 2] - xy[:, 0]) * reduction - # h = (xy[:, 3] - xy[:, 1]) * reduction - # xy = np.concatenate((x - w / 2, y - h / 2, x + w / 2, y + h / 2)).reshape(4, n).T + else: # warp boxes + xy = np.ones((n * 4, 3)) + xy[:, :2] = targets[:, [1, 2, 3, 4, 1, 4, 3, 2]].reshape(n * 4, 2) # x1y1, x2y2, x1y2, x2y1 + xy = xy @ M.T # transform + xy = (xy[:, :2] / xy[:, 2:3] if perspective else xy[:, :2]).reshape(n, 8) # perspective rescale or affine - # clip boxes - xy[:, [0, 2]] = xy[:, [0, 2]].clip(0, width) - xy[:, [1, 3]] = xy[:, [1, 3]].clip(0, height) + # create new boxes + x = xy[:, [0, 2, 4, 6]] + y = xy[:, [1, 3, 5, 7]] + new = np.concatenate((x.min(1), y.min(1), x.max(1), y.max(1))).reshape(4, n).T + + # clip + new[:, [0, 2]] = new[:, [0, 2]].clip(0, width) + new[:, [1, 3]] = new[:, [1, 3]].clip(0, height) # filter candidates - i = box_candidates(box1=targets[:, 1:5].T * s, box2=xy.T) + i = box_candidates(box1=targets[:, 1:5].T * s, box2=new.T, area_thr=0.01 if use_segments else 0.10) targets = targets[i] - targets[:, 1:5] = xy[i] + targets[:, 1:5] = new[i] return img, targets @@ -1016,19 +1041,24 @@ def extract_boxes(path='../coco128/'): # from utils.datasets import *; extract_ assert cv2.imwrite(str(f), im[b[1]:b[3], b[0]:b[2]]), f'box failure in {f}' -def autosplit(path='../coco128', weights=(0.9, 0.1, 0.0)): # from utils.datasets import *; autosplit('../coco128') +def autosplit(path='../coco128', weights=(0.9, 0.1, 0.0), annotated_only=False): """ Autosplit a dataset into train/val/test splits and save path/autosplit_*.txt files - # Arguments - path: Path to images directory - weights: Train, val, test weights (list) + Usage: from utils.datasets import *; autosplit('../coco128') + Arguments + path: Path to images directory + weights: Train, val, test weights (list) + annotated_only: Only use images with an annotated txt file """ path = Path(path) # images dir - files = list(path.rglob('*.*')) + files = sum([list(path.rglob(f"*.{img_ext}")) for img_ext in img_formats], []) # image files only n = len(files) # number of files indices = random.choices([0, 1, 2], weights=weights, k=n) # assign each image to a split + txt = ['autosplit_train.txt', 'autosplit_val.txt', 'autosplit_test.txt'] # 3 txt files [(path / x).unlink() for x in txt if (path / x).exists()] # remove existing + + print(f'Autosplitting images from {path}' + ', using *.txt labeled images only' * annotated_only) for i, img in tqdm(zip(indices, files), total=n): - if img.suffix[1:] in img_formats: + if not annotated_only or Path(img2label_paths([str(img)])[0]).exists(): # check label with open(path / txt[i], 'a') as f: f.write(str(img) + '\n') # add image to txt file diff --git a/utils/general.py b/utils/general.py index a3238efa..dbdcd396 100755 --- a/utils/general.py +++ b/utils/general.py @@ -1,9 +1,10 @@ -# General utils +# YOLOv3 general utils import glob import logging import math import os +import platform import random import re import subprocess @@ -12,6 +13,7 @@ from pathlib import Path import cv2 import numpy as np +import pandas as pd import torch import torchvision import yaml @@ -23,6 +25,7 @@ from utils.torch_utils import init_torch_seeds # Settings torch.set_printoptions(linewidth=320, precision=5, profile='long') np.set_printoptions(linewidth=320, formatter={'float_kind': '{:11.5g}'.format}) # format short g, %precision=5 +pd.options.display.max_columns = 10 cv2.setNumThreads(0) # prevent OpenCV from multithreading (incompatible with PyTorch DataLoader) os.environ['NUMEXPR_MAX_THREADS'] = str(min(os.cpu_count(), 8)) # NumExpr max threads @@ -46,40 +49,75 @@ def get_latest_run(search_dir='.'): return max(last_list, key=os.path.getctime) if last_list else '' +def isdocker(): + # Is environment a Docker container + return Path('/workspace').exists() # or Path('/.dockerenv').exists() + + +def emojis(str=''): + # Return platform-dependent emoji-safe version of string + return str.encode().decode('ascii', 'ignore') if platform.system() == 'Windows' else str + + def check_online(): # Check internet connectivity import socket try: - socket.create_connection(("1.1.1.1", 53)) # check host accesability + socket.create_connection(("1.1.1.1", 443), 5) # check host accesability return True except OSError: return False def check_git_status(): - # Suggest 'git pull' if YOLOv5 is out of date + # Recommend 'git pull' if code is out of date print(colorstr('github: '), end='') try: - if Path('.git').exists() and check_online(): - url = subprocess.check_output( - 'git fetch && git config --get remote.origin.url', shell=True).decode('utf-8')[:-1] - n = int(subprocess.check_output( - 'git rev-list $(git rev-parse --abbrev-ref HEAD)..origin/master --count', shell=True)) # commits behind - if n > 0: - print(f"⚠️ WARNING: code is out of date by {n} {'commits' if n > 1 else 'commmit'}. " - f"Use 'git pull' to update or 'git clone {url}' to download latest.") - else: - print(f'up to date with {url} ✅') + assert Path('.git').exists(), 'skipping check (not a git repository)' + assert not isdocker(), 'skipping check (Docker image)' + assert check_online(), 'skipping check (offline)' + + cmd = 'git fetch && git config --get remote.origin.url' + url = subprocess.check_output(cmd, shell=True).decode().strip().rstrip('.git') # github repo url + branch = subprocess.check_output('git rev-parse --abbrev-ref HEAD', shell=True).decode().strip() # checked out + n = int(subprocess.check_output(f'git rev-list {branch}..origin/master --count', shell=True)) # commits behind + if n > 0: + s = f"⚠️ WARNING: code is out of date by {n} commit{'s' * (n > 1)}. " \ + f"Use 'git pull' to update or 'git clone {url}' to download latest." + else: + s = f'up to date with {url} ✅' + print(emojis(s)) # emoji-safe except Exception as e: print(e) -def check_requirements(file='requirements.txt'): - # Check installed dependencies meet requirements - import pkg_resources - requirements = pkg_resources.parse_requirements(Path(file).open()) - requirements = [x.name + ''.join(*x.specs) if len(x.specs) else x.name for x in requirements] - pkg_resources.require(requirements) # DistributionNotFound or VersionConflict exception if requirements not met +def check_requirements(requirements='requirements.txt', exclude=()): + # Check installed dependencies meet requirements (pass *.txt file or list of packages) + import pkg_resources as pkg + prefix = colorstr('red', 'bold', 'requirements:') + if isinstance(requirements, (str, Path)): # requirements.txt file + file = Path(requirements) + if not file.exists(): + print(f"{prefix} {file.resolve()} not found, check failed.") + return + requirements = [f'{x.name}{x.specifier}' for x in pkg.parse_requirements(file.open()) if x.name not in exclude] + else: # list or tuple of packages + requirements = [x for x in requirements if x not in exclude] + + n = 0 # number of packages updates + for r in requirements: + try: + pkg.require(r) + except Exception as e: # DistributionNotFound or VersionConflict if requirements not met + n += 1 + print(f"{prefix} {e.req} not found and is required by YOLOv3, attempting auto-update...") + print(subprocess.check_output(f"pip install '{e.req}'", shell=True).decode()) + + if n: # if packages updated + source = file.resolve() if 'file' in locals() else requirements + s = f"{prefix} {n} package{'s' * (n > 1)} updated per {source}\n" \ + f"{prefix} ⚠️ {colorstr('bold', 'Restart runtime or rerun command for updates to take effect')}\n" + print(emojis(s)) # emoji-safe def check_img_size(img_size, s=32): @@ -90,14 +128,28 @@ def check_img_size(img_size, s=32): return new_size +def check_imshow(): + # Check if environment supports image displays + try: + assert not isdocker(), 'cv2.imshow() is disabled in Docker environments' + cv2.imshow('test', np.zeros((1, 1, 3))) + cv2.waitKey(1) + cv2.destroyAllWindows() + cv2.waitKey(1) + return True + except Exception as e: + print(f'WARNING: Environment does not support cv2.imshow() or PIL Image.show() image displays\n{e}') + return False + + def check_file(file): # Search for file if not found - if os.path.isfile(file) or file == '': + if Path(file).is_file() or file == '': return file else: files = glob.glob('./**/' + file, recursive=True) # find file - assert len(files), 'File Not Found: %s' % file # assert file was found - assert len(files) == 1, "Multiple files match '%s', specify exact path: %s" % (file, files) # assert unique + assert len(files), f'File Not Found: {file}' # assert file was found + assert len(files) == 1, f"Multiple files match '{file}', specify exact path: {files}" # assert unique return files[0] # return file @@ -220,6 +272,50 @@ def xywh2xyxy(x): return y +def xywhn2xyxy(x, w=640, h=640, padw=0, padh=0): + # Convert nx4 boxes from [x, y, w, h] normalized to [x1, y1, x2, y2] where xy1=top-left, xy2=bottom-right + y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x) + y[:, 0] = w * (x[:, 0] - x[:, 2] / 2) + padw # top left x + y[:, 1] = h * (x[:, 1] - x[:, 3] / 2) + padh # top left y + y[:, 2] = w * (x[:, 0] + x[:, 2] / 2) + padw # bottom right x + y[:, 3] = h * (x[:, 1] + x[:, 3] / 2) + padh # bottom right y + return y + + +def xyn2xy(x, w=640, h=640, padw=0, padh=0): + # Convert normalized segments into pixel segments, shape (n,2) + y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x) + y[:, 0] = w * x[:, 0] + padw # top left x + y[:, 1] = h * x[:, 1] + padh # top left y + return y + + +def segment2box(segment, width=640, height=640): + # Convert 1 segment label to 1 box label, applying inside-image constraint, i.e. (xy1, xy2, ...) to (xyxy) + x, y = segment.T # segment xy + inside = (x >= 0) & (y >= 0) & (x <= width) & (y <= height) + x, y, = x[inside], y[inside] + return np.array([x.min(), y.min(), x.max(), y.max()]) if any(x) else np.zeros((1, 4)) # xyxy + + +def segments2boxes(segments): + # Convert segment labels to box labels, i.e. (cls, xy1, xy2, ...) to (cls, xywh) + boxes = [] + for s in segments: + x, y = s.T # segment xy + boxes.append([x.min(), y.min(), x.max(), y.max()]) # cls, xyxy + return xyxy2xywh(np.array(boxes)) # cls, xywh + + +def resample_segments(segments, n=1000): + # Up-sample an (n,2) segment + for i, s in enumerate(segments): + x = np.linspace(0, len(s) - 1, n) + xp = np.arange(len(s)) + segments[i] = np.concatenate([np.interp(x, xp, s[:, i]) for i in range(2)]).reshape(2, -1).T # segment xy + return segments + + def scale_coords(img1_shape, coords, img0_shape, ratio_pad=None): # Rescale coords (xyxy) from img1_shape to img0_shape if ratio_pad is None: # calculate from img0_shape @@ -244,7 +340,7 @@ def clip_coords(boxes, img_shape): boxes[:, 3].clamp_(0, img_shape[0]) # y2 -def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False, DIoU=False, CIoU=False, eps=1e-9): +def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False, DIoU=False, CIoU=False, eps=1e-7): # Returns the IoU of box1 to box2. box1 is 4, box2 is nx4 box2 = box2.T @@ -280,7 +376,7 @@ def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False, DIoU=False, CIoU=False, eps= elif CIoU: # https://github.com/Zzh-tju/DIoU-SSD-pytorch/blob/master/utils/box/box_utils.py#L47 v = (4 / math.pi ** 2) * torch.pow(torch.atan(w2 / h2) - torch.atan(w1 / h1), 2) with torch.no_grad(): - alpha = v / ((1 + eps) - iou + v) + alpha = v / (v - iou + (1 + eps)) return iou - (rho2 / c2 + v * alpha) # CIoU else: # GIoU https://arxiv.org/pdf/1902.09630.pdf c_area = cw * ch + eps # convex area @@ -322,11 +418,12 @@ def wh_iou(wh1, wh2): return inter / (wh1.prod(2) + wh2.prod(2) - inter) # iou = inter / (area1 + area2 - inter) -def non_max_suppression(prediction, conf_thres=0.25, iou_thres=0.45, classes=None, agnostic=False, labels=()): - """Performs Non-Maximum Suppression (NMS) on inference results +def non_max_suppression(prediction, conf_thres=0.25, iou_thres=0.45, classes=None, agnostic=False, multi_label=False, + labels=()): + """Runs Non-Maximum Suppression (NMS) on inference results Returns: - detections with shape: nx6 (x1, y1, x2, y2, conf, cls) + list of detections, on (n,6) tensor per image [xyxy, conf, cls] """ nc = prediction.shape[2] - 5 # number of classes @@ -338,7 +435,7 @@ def non_max_suppression(prediction, conf_thres=0.25, iou_thres=0.45, classes=Non max_nms = 30000 # maximum number of boxes into torchvision.ops.nms() time_limit = 10.0 # seconds to quit after redundant = True # require redundant detections - multi_label = nc > 1 # multiple labels per box (adds 0.5ms/img) + multi_label &= nc > 1 # multiple labels per box (adds 0.5ms/img) merge = False # use merge-NMS t = time.time() @@ -412,18 +509,20 @@ def non_max_suppression(prediction, conf_thres=0.25, iou_thres=0.45, classes=Non return output -def strip_optimizer(f='weights/best.pt', s=''): # from utils.general import *; strip_optimizer() +def strip_optimizer(f='best.pt', s=''): # from utils.general import *; strip_optimizer() # Strip optimizer from 'f' to finalize training, optionally save as 's' x = torch.load(f, map_location=torch.device('cpu')) - for key in 'optimizer', 'training_results', 'wandb_id': - x[key] = None + if x.get('ema'): + x['model'] = x['ema'] # replace model with ema + for k in 'optimizer', 'training_results', 'wandb_id', 'ema', 'updates': # keys + x[k] = None x['epoch'] = -1 x['model'].half() # to FP16 for p in x['model'].parameters(): p.requires_grad = False torch.save(x, s or f) mb = os.path.getsize(s or f) / 1E6 # filesize - print('Optimizer stripped from %s,%s %.1fMB' % (f, (' saved as %s,' % s) if s else '', mb)) + print(f"Optimizer stripped from {f},{(' saved as %s,' % s) if s else ''} {mb:.1f}MB") def print_mutation(hyp, results, yaml_file='hyp_evolved.yaml', bucket=''): diff --git a/utils/google_utils.py b/utils/google_utils.py index e4b115a5..61af2f43 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -21,13 +21,13 @@ def attempt_download(file, repo='ultralytics/yolov3'): file = Path(str(file).strip().replace("'", '').lower()) if not file.exists(): - # try: - # response = requests.get(f'https://api.github.com/repos/{repo}/releases/latest').json() # github api - # assets = [x['name'] for x in response['assets']] # release assets, i.e. ['yolov5s.pt', 'yolov5m.pt', ...] - # tag = response['tag_name'] # i.e. 'v1.0' - # except: # fallback plan - assets = ['yolov3.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt'] - tag = subprocess.check_output('git tag', shell=True).decode().split()[-1] + try: + response = requests.get(f'https://api.github.com/repos/{repo}/releases/latest').json() # github api + assets = [x['name'] for x in response['assets']] # release assets, i.e. ['yolov5s.pt', 'yolov5m.pt', ...] + tag = response['tag_name'] # i.e. 'v1.0' + except: # fallback plan + assets = ['yolov3.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt'] + tag = subprocess.check_output('git tag', shell=True).decode().split()[-1] name = file.name if name in assets: diff --git a/utils/loss.py b/utils/loss.py index 844d5039..a2c5cce7 100644 --- a/utils/loss.py +++ b/utils/loss.py @@ -85,117 +85,132 @@ class QFocalLoss(nn.Module): return loss -def compute_loss(p, targets, model): # predictions, targets, model - device = targets.device - lcls, lbox, lobj = torch.zeros(1, device=device), torch.zeros(1, device=device), torch.zeros(1, device=device) - tcls, tbox, indices, anchors = build_targets(p, targets, model) # targets - h = model.hyp # hyperparameters +class ComputeLoss: + # Compute losses + def __init__(self, model, autobalance=False): + super(ComputeLoss, self).__init__() + device = next(model.parameters()).device # get model device + h = model.hyp # hyperparameters - # Define criteria - BCEcls = nn.BCEWithLogitsLoss(pos_weight=torch.tensor([h['cls_pw']], device=device)) # weight=model.class_weights) - BCEobj = nn.BCEWithLogitsLoss(pos_weight=torch.tensor([h['obj_pw']], device=device)) + # Define criteria + BCEcls = nn.BCEWithLogitsLoss(pos_weight=torch.tensor([h['cls_pw']], device=device)) + BCEobj = nn.BCEWithLogitsLoss(pos_weight=torch.tensor([h['obj_pw']], device=device)) - # Class label smoothing https://arxiv.org/pdf/1902.04103.pdf eqn 3 - cp, cn = smooth_BCE(eps=0.0) + # Class label smoothing https://arxiv.org/pdf/1902.04103.pdf eqn 3 + self.cp, self.cn = smooth_BCE(eps=h.get('label_smoothing', 0.0)) # positive, negative BCE targets - # Focal loss - g = h['fl_gamma'] # focal loss gamma - if g > 0: - BCEcls, BCEobj = FocalLoss(BCEcls, g), FocalLoss(BCEobj, g) + # Focal loss + g = h['fl_gamma'] # focal loss gamma + if g > 0: + BCEcls, BCEobj = FocalLoss(BCEcls, g), FocalLoss(BCEobj, g) - # Losses - balance = [4.0, 1.0, 0.4, 0.1] # P3-P6 - for i, pi in enumerate(p): # layer index, layer predictions - b, a, gj, gi = indices[i] # image, anchor, gridy, gridx - tobj = torch.zeros_like(pi[..., 0], device=device) # target obj + det = model.module.model[-1] if is_parallel(model) else model.model[-1] # Detect() module + self.balance = {3: [4.0, 1.0, 0.4]}.get(det.nl, [4.0, 1.0, 0.25, 0.06, .02]) # P3-P7 + self.ssi = list(det.stride).index(16) if autobalance else 0 # stride 16 index + self.BCEcls, self.BCEobj, self.gr, self.hyp, self.autobalance = BCEcls, BCEobj, model.gr, h, autobalance + for k in 'na', 'nc', 'nl', 'anchors': + setattr(self, k, getattr(det, k)) - n = b.shape[0] # number of targets - if n: - ps = pi[b, a, gj, gi] # prediction subset corresponding to targets + def __call__(self, p, targets): # predictions, targets, model + device = targets.device + lcls, lbox, lobj = torch.zeros(1, device=device), torch.zeros(1, device=device), torch.zeros(1, device=device) + tcls, tbox, indices, anchors = self.build_targets(p, targets) # targets - # Regression - pxy = ps[:, :2].sigmoid() * 2. - 0.5 - pwh = (ps[:, 2:4].sigmoid() * 2) ** 2 * anchors[i] - pbox = torch.cat((pxy, pwh), 1) # predicted box - iou = bbox_iou(pbox.T, tbox[i], x1y1x2y2=False, CIoU=True) # iou(prediction, target) - lbox += (1.0 - iou).mean() # iou loss + # Losses + for i, pi in enumerate(p): # layer index, layer predictions + b, a, gj, gi = indices[i] # image, anchor, gridy, gridx + tobj = torch.zeros_like(pi[..., 0], device=device) # target obj - # Objectness - tobj[b, a, gj, gi] = (1.0 - model.gr) + model.gr * iou.detach().clamp(0).type(tobj.dtype) # iou ratio + n = b.shape[0] # number of targets + if n: + ps = pi[b, a, gj, gi] # prediction subset corresponding to targets - # Classification - if model.nc > 1: # cls loss (only if multiple classes) - t = torch.full_like(ps[:, 5:], cn, device=device) # targets - t[range(n), tcls[i]] = cp - lcls += BCEcls(ps[:, 5:], t) # BCE + # Regression + pxy = ps[:, :2].sigmoid() * 2. - 0.5 + pwh = (ps[:, 2:4].sigmoid() * 2) ** 2 * anchors[i] + pbox = torch.cat((pxy, pwh), 1) # predicted box + iou = bbox_iou(pbox.T, tbox[i], x1y1x2y2=False, CIoU=True) # iou(prediction, target) + lbox += (1.0 - iou).mean() # iou loss - # Append targets to text file - # with open('targets.txt', 'a') as file: - # [file.write('%11.5g ' * 4 % tuple(x) + '\n') for x in torch.cat((txy[i], twh[i]), 1)] + # Objectness + tobj[b, a, gj, gi] = (1.0 - self.gr) + self.gr * iou.detach().clamp(0).type(tobj.dtype) # iou ratio - lobj += BCEobj(pi[..., 4], tobj) * balance[i] # obj loss + # Classification + if self.nc > 1: # cls loss (only if multiple classes) + t = torch.full_like(ps[:, 5:], self.cn, device=device) # targets + t[range(n), tcls[i]] = self.cp + lcls += self.BCEcls(ps[:, 5:], t) # BCE - lbox *= h['box'] - lobj *= h['obj'] - lcls *= h['cls'] - bs = tobj.shape[0] # batch size + # Append targets to text file + # with open('targets.txt', 'a') as file: + # [file.write('%11.5g ' * 4 % tuple(x) + '\n') for x in torch.cat((txy[i], twh[i]), 1)] - loss = lbox + lobj + lcls - return loss * bs, torch.cat((lbox, lobj, lcls, loss)).detach() + obji = self.BCEobj(pi[..., 4], tobj) + lobj += obji * self.balance[i] # obj loss + if self.autobalance: + self.balance[i] = self.balance[i] * 0.9999 + 0.0001 / obji.detach().item() + if self.autobalance: + self.balance = [x / self.balance[self.ssi] for x in self.balance] + lbox *= self.hyp['box'] + lobj *= self.hyp['obj'] + lcls *= self.hyp['cls'] + bs = tobj.shape[0] # batch size -def build_targets(p, targets, model): - # Build targets for compute_loss(), input targets(image,class,x,y,w,h) - det = model.module.model[-1] if is_parallel(model) else model.model[-1] # Detect() module - na, nt = det.na, targets.shape[0] # number of anchors, targets - tcls, tbox, indices, anch = [], [], [], [] - gain = torch.ones(7, device=targets.device) # normalized to gridspace gain - ai = torch.arange(na, device=targets.device).float().view(na, 1).repeat(1, nt) # same as .repeat_interleave(nt) - targets = torch.cat((targets.repeat(na, 1, 1), ai[:, :, None]), 2) # append anchor indices + loss = lbox + lobj + lcls + return loss * bs, torch.cat((lbox, lobj, lcls, loss)).detach() - g = 0.5 # bias - off = torch.tensor([[0, 0], - # [1, 0], [0, 1], [-1, 0], [0, -1], # j,k,l,m - # [1, 1], [1, -1], [-1, 1], [-1, -1], # jk,jm,lk,lm - ], device=targets.device).float() * g # offsets + def build_targets(self, p, targets): + # Build targets for compute_loss(), input targets(image,class,x,y,w,h) + na, nt = self.na, targets.shape[0] # number of anchors, targets + tcls, tbox, indices, anch = [], [], [], [] + gain = torch.ones(7, device=targets.device) # normalized to gridspace gain + ai = torch.arange(na, device=targets.device).float().view(na, 1).repeat(1, nt) # same as .repeat_interleave(nt) + targets = torch.cat((targets.repeat(na, 1, 1), ai[:, :, None]), 2) # append anchor indices - for i in range(det.nl): - anchors = det.anchors[i] - gain[2:6] = torch.tensor(p[i].shape)[[3, 2, 3, 2]] # xyxy gain + g = 0.5 # bias + off = torch.tensor([[0, 0], + # [1, 0], [0, 1], [-1, 0], [0, -1], # j,k,l,m + # [1, 1], [1, -1], [-1, 1], [-1, -1], # jk,jm,lk,lm + ], device=targets.device).float() * g # offsets - # Match targets to anchors - t = targets * gain - if nt: - # Matches - r = t[:, :, 4:6] / anchors[:, None] # wh ratio - j = torch.max(r, 1. / r).max(2)[0] < model.hyp['anchor_t'] # compare - # j = wh_iou(anchors, t[:, 4:6]) > model.hyp['iou_t'] # iou(3,n)=wh_iou(anchors(3,2), gwh(n,2)) - t = t[j] # filter + for i in range(self.nl): + anchors = self.anchors[i] + gain[2:6] = torch.tensor(p[i].shape)[[3, 2, 3, 2]] # xyxy gain - # Offsets + # Match targets to anchors + t = targets * gain + if nt: + # Matches + r = t[:, :, 4:6] / anchors[:, None] # wh ratio + j = torch.max(r, 1. / r).max(2)[0] < self.hyp['anchor_t'] # compare + # j = wh_iou(anchors, t[:, 4:6]) > model.hyp['iou_t'] # iou(3,n)=wh_iou(anchors(3,2), gwh(n,2)) + t = t[j] # filter + + # Offsets + gxy = t[:, 2:4] # grid xy + gxi = gain[[2, 3]] - gxy # inverse + j, k = ((gxy % 1. < g) & (gxy > 1.)).T + l, m = ((gxi % 1. < g) & (gxi > 1.)).T + j = torch.stack((torch.ones_like(j),)) + t = t.repeat((off.shape[0], 1, 1))[j] + offsets = (torch.zeros_like(gxy)[None] + off[:, None])[j] + else: + t = targets[0] + offsets = 0 + + # Define + b, c = t[:, :2].long().T # image, class gxy = t[:, 2:4] # grid xy - gxi = gain[[2, 3]] - gxy # inverse - j, k = ((gxy % 1. < g) & (gxy > 1.)).T - l, m = ((gxi % 1. < g) & (gxi > 1.)).T - j = torch.stack((torch.ones_like(j),)) - t = t.repeat((off.shape[0], 1, 1))[j] - offsets = (torch.zeros_like(gxy)[None] + off[:, None])[j] - else: - t = targets[0] - offsets = 0 + gwh = t[:, 4:6] # grid wh + gij = (gxy - offsets).long() + gi, gj = gij.T # grid xy indices - # Define - b, c = t[:, :2].long().T # image, class - gxy = t[:, 2:4] # grid xy - gwh = t[:, 4:6] # grid wh - gij = (gxy - offsets).long() - gi, gj = gij.T # grid xy indices + # Append + a = t[:, 6].long() # anchor indices + indices.append((b, a, gj.clamp_(0, gain[3] - 1), gi.clamp_(0, gain[2] - 1))) # image, anchor, grid indices + tbox.append(torch.cat((gxy - gij, gwh), 1)) # box + anch.append(anchors[a]) # anchors + tcls.append(c) # class - # Append - a = t[:, 6].long() # anchor indices - indices.append((b, a, gj.clamp_(0, gain[3] - 1), gi.clamp_(0, gain[2] - 1))) # image, anchor, grid indices - tbox.append(torch.cat((gxy - gij, gwh), 1)) # box - anch.append(anchors[a]) # anchors - tcls.append(c) # class - - return tcls, tbox, indices, anch + return tcls, tbox, indices, anch diff --git a/utils/metrics.py b/utils/metrics.py index 99d5bcfa..666b8c7e 100644 --- a/utils/metrics.py +++ b/utils/metrics.py @@ -15,7 +15,7 @@ def fitness(x): return (x[:, :4] * w).sum(1) -def ap_per_class(tp, conf, pred_cls, target_cls, plot=False, save_dir='precision-recall_curve.png', names=[]): +def ap_per_class(tp, conf, pred_cls, target_cls, plot=False, save_dir='.', names=()): """ Compute the average precision, given the recall and precision curves. Source: https://github.com/rafaelpadilla/Object-Detection-Metrics. # Arguments @@ -35,12 +35,11 @@ def ap_per_class(tp, conf, pred_cls, target_cls, plot=False, save_dir='precision # Find unique classes unique_classes = np.unique(target_cls) + nc = unique_classes.shape[0] # number of classes, number of detections # Create Precision-Recall curve and compute AP for each class px, py = np.linspace(0, 1, 1000), [] # for plotting - pr_score = 0.1 # score to evaluate P and R https://github.com/ultralytics/yolov3/issues/898 - s = [unique_classes.shape[0], tp.shape[1]] # number class, number iou thresholds (i.e. 10 for mAP0.5...0.95) - ap, p, r = np.zeros(s), np.zeros(s), np.zeros(s) + ap, p, r = np.zeros((nc, tp.shape[1])), np.zeros((nc, 1000)), np.zeros((nc, 1000)) for ci, c in enumerate(unique_classes): i = pred_cls == c n_l = (target_cls == c).sum() # number of labels @@ -55,25 +54,28 @@ def ap_per_class(tp, conf, pred_cls, target_cls, plot=False, save_dir='precision # Recall recall = tpc / (n_l + 1e-16) # recall curve - r[ci] = np.interp(-pr_score, -conf[i], recall[:, 0]) # r at pr_score, negative x, xp because xp decreases + r[ci] = np.interp(-px, -conf[i], recall[:, 0], left=0) # negative x, xp because xp decreases # Precision precision = tpc / (tpc + fpc) # precision curve - p[ci] = np.interp(-pr_score, -conf[i], precision[:, 0]) # p at pr_score + p[ci] = np.interp(-px, -conf[i], precision[:, 0], left=1) # p at pr_score # AP from recall-precision curve for j in range(tp.shape[1]): ap[ci, j], mpre, mrec = compute_ap(recall[:, j], precision[:, j]) - if plot and (j == 0): + if plot and j == 0: py.append(np.interp(px, mrec, mpre)) # precision at mAP@0.5 - # Compute F1 score (harmonic mean of precision and recall) + # Compute F1 (harmonic mean of precision and recall) f1 = 2 * p * r / (p + r + 1e-16) - if plot: - plot_pr_curve(px, py, ap, save_dir, names) + plot_pr_curve(px, py, ap, Path(save_dir) / 'PR_curve.png', names) + plot_mc_curve(px, f1, Path(save_dir) / 'F1_curve.png', names, ylabel='F1') + plot_mc_curve(px, p, Path(save_dir) / 'P_curve.png', names, ylabel='Precision') + plot_mc_curve(px, r, Path(save_dir) / 'R_curve.png', names, ylabel='Recall') - return p, r, ap, f1, unique_classes.astype('int32') + i = f1.mean(0).argmax() # max F1 index + return p[:, i], r[:, i], ap, f1[:, i], unique_classes.astype('int32') def compute_ap(recall, precision): @@ -145,12 +147,12 @@ class ConfusionMatrix: if n and sum(j) == 1: self.matrix[gc, detection_classes[m1[j]]] += 1 # correct else: - self.matrix[gc, self.nc] += 1 # background FP + self.matrix[self.nc, gc] += 1 # background FP if n: for i, dc in enumerate(detection_classes): if not any(m1 == i): - self.matrix[self.nc, dc] += 1 # background FN + self.matrix[dc, self.nc] += 1 # background FN def matrix(self): return self.matrix @@ -166,8 +168,8 @@ class ConfusionMatrix: sn.set(font_scale=1.0 if self.nc < 50 else 0.8) # for label size labels = (0 < len(names) < 99) and len(names) == self.nc # apply names to ticklabels sn.heatmap(array, annot=self.nc < 30, annot_kws={"size": 8}, cmap='Blues', fmt='.2f', square=True, - xticklabels=names + ['background FN'] if labels else "auto", - yticklabels=names + ['background FP'] if labels else "auto").set_facecolor((1, 1, 1)) + xticklabels=names + ['background FP'] if labels else "auto", + yticklabels=names + ['background FN'] if labels else "auto").set_facecolor((1, 1, 1)) fig.axes[0].set_xlabel('True') fig.axes[0].set_ylabel('Predicted') fig.savefig(Path(save_dir) / 'confusion_matrix.png', dpi=250) @@ -181,13 +183,14 @@ class ConfusionMatrix: # Plots ---------------------------------------------------------------------------------------------------------------- -def plot_pr_curve(px, py, ap, save_dir='.', names=()): +def plot_pr_curve(px, py, ap, save_dir='pr_curve.png', names=()): + # Precision-recall curve fig, ax = plt.subplots(1, 1, figsize=(9, 6), tight_layout=True) py = np.stack(py, axis=1) - if 0 < len(names) < 21: # show mAP in legend if < 10 classes + if 0 < len(names) < 21: # display per-class legend if < 21 classes for i, y in enumerate(py.T): - ax.plot(px, y, linewidth=1, label=f'{names[i]} %.3f' % ap[i, 0]) # plot(recall, precision) + ax.plot(px, y, linewidth=1, label=f'{names[i]} {ap[i, 0]:.3f}') # plot(recall, precision) else: ax.plot(px, py, linewidth=1, color='grey') # plot(recall, precision) @@ -197,4 +200,24 @@ def plot_pr_curve(px, py, ap, save_dir='.', names=()): ax.set_xlim(0, 1) ax.set_ylim(0, 1) plt.legend(bbox_to_anchor=(1.04, 1), loc="upper left") - fig.savefig(Path(save_dir) / 'precision_recall_curve.png', dpi=250) + fig.savefig(Path(save_dir), dpi=250) + + +def plot_mc_curve(px, py, save_dir='mc_curve.png', names=(), xlabel='Confidence', ylabel='Metric'): + # Metric-confidence curve + fig, ax = plt.subplots(1, 1, figsize=(9, 6), tight_layout=True) + + if 0 < len(names) < 21: # display per-class legend if < 21 classes + for i, y in enumerate(py): + ax.plot(px, y, linewidth=1, label=f'{names[i]}') # plot(confidence, metric) + else: + ax.plot(px, py.T, linewidth=1, color='grey') # plot(confidence, metric) + + y = py.mean(0) + ax.plot(px, y, linewidth=3, color='blue', label=f'all classes {y.max():.2f} at {px[y.argmax()]:.3f}') + ax.set_xlabel(xlabel) + ax.set_ylabel(ylabel) + ax.set_xlim(0, 1) + ax.set_ylim(0, 1) + plt.legend(bbox_to_anchor=(1.04, 1), loc="upper left") + fig.savefig(Path(save_dir), dpi=250) diff --git a/utils/plots.py b/utils/plots.py index 47cd7077..8b90bd8d 100644 --- a/utils/plots.py +++ b/utils/plots.py @@ -15,7 +15,7 @@ import pandas as pd import seaborn as sns import torch import yaml -from PIL import Image, ImageDraw +from PIL import Image, ImageDraw, ImageFont from scipy.signal import butter, filtfilt from utils.general import xywh2xyxy, xyxy2xywh @@ -31,7 +31,7 @@ def color_list(): def hex2rgb(h): return tuple(int(h[1 + i:1 + i + 2], 16) for i in (0, 2, 4)) - return [hex2rgb(h) for h in plt.rcParams['axes.prop_cycle'].by_key()['color']] + return [hex2rgb(h) for h in matplotlib.colors.TABLEAU_COLORS.values()] # or BASE_ (8), CSS4_ (148), XKCD_ (949) def hist2d(x, y, n=100): @@ -54,7 +54,7 @@ def butter_lowpass_filtfilt(data, cutoff=1500, fs=50000, order=5): return filtfilt(b, a, data) # forward-backward filter -def plot_one_box(x, img, color=None, label=None, line_thickness=None): +def plot_one_box(x, img, color=None, label=None, line_thickness=3): # Plots one bounding box on image img tl = line_thickness or round(0.002 * (img.shape[0] + img.shape[1]) / 2) + 1 # line/font thickness color = color or [random.randint(0, 255) for _ in range(3)] @@ -68,6 +68,20 @@ def plot_one_box(x, img, color=None, label=None, line_thickness=None): cv2.putText(img, label, (c1[0], c1[1] - 2), 0, tl / 3, [225, 255, 255], thickness=tf, lineType=cv2.LINE_AA) +def plot_one_box_PIL(box, img, color=None, label=None, line_thickness=None): + img = Image.fromarray(img) + draw = ImageDraw.Draw(img) + line_thickness = line_thickness or max(int(min(img.size) / 200), 2) + draw.rectangle(box, width=line_thickness, outline=tuple(color)) # plot + if label: + fontsize = max(round(max(img.size) / 40), 12) + font = ImageFont.truetype("Arial.ttf", fontsize) + txt_width, txt_height = font.getsize(label) + draw.rectangle([box[0], box[1] - txt_height + 4, box[0] + txt_width, box[1]], fill=tuple(color)) + draw.text((box[0], box[1] - txt_height + 1), label, fill=(255, 255, 255), font=font) + return np.asarray(img) + + def plot_wh_methods(): # from utils.plots import *; plot_wh_methods() # Compares the two methods for width-height anchor multiplication # https://github.com/ultralytics/yolov3/issues/168 @@ -223,38 +237,39 @@ def plot_targets_txt(): # from utils.plots import *; plot_targets_txt() plt.savefig('targets.jpg', dpi=200) -def plot_study_txt(path='study/', x=None): # from utils.plots import *; plot_study_txt() +def plot_study_txt(path='', x=None): # from utils.plots import *; plot_study_txt() # Plot study.txt generated by test.py fig, ax = plt.subplots(2, 4, figsize=(10, 6), tight_layout=True) - ax = ax.ravel() + # ax = ax.ravel() fig2, ax2 = plt.subplots(1, 1, figsize=(8, 4), tight_layout=True) - for f in [Path(path) / f'study_coco_{x}.txt' for x in ['yolov5s', 'yolov5m', 'yolov5l', 'yolov5x']]: + # for f in [Path(path) / f'study_coco_{x}.txt' for x in ['yolov3-tiny', 'yolov3', 'yolov3-spp', 'yolov5l']]: + for f in sorted(Path(path).glob('study*.txt')): y = np.loadtxt(f, dtype=np.float32, usecols=[0, 1, 2, 3, 7, 8, 9], ndmin=2).T x = np.arange(y.shape[1]) if x is None else np.array(x) s = ['P', 'R', 'mAP@.5', 'mAP@.5:.95', 't_inference (ms/img)', 't_NMS (ms/img)', 't_total (ms/img)'] - for i in range(7): - ax[i].plot(x, y[i], '.-', linewidth=2, markersize=8) - ax[i].set_title(s[i]) + # for i in range(7): + # ax[i].plot(x, y[i], '.-', linewidth=2, markersize=8) + # ax[i].set_title(s[i]) j = y[3].argmax() + 1 - ax2.plot(y[6, :j], y[3, :j] * 1E2, '.-', linewidth=2, markersize=8, + ax2.plot(y[6, 1:j], y[3, 1:j] * 1E2, '.-', linewidth=2, markersize=8, label=f.stem.replace('study_coco_', '').replace('yolo', 'YOLO')) ax2.plot(1E3 / np.array([209, 140, 97, 58, 35, 18]), [34.6, 40.5, 43.0, 47.5, 49.7, 51.5], 'k.-', linewidth=2, markersize=8, alpha=.25, label='EfficientDet') - ax2.grid() - ax2.set_yticks(np.arange(30, 60, 5)) - ax2.set_xlim(0, 30) - ax2.set_ylim(29, 51) + ax2.grid(alpha=0.2) + ax2.set_yticks(np.arange(20, 60, 5)) + ax2.set_xlim(0, 57) + ax2.set_ylim(15, 55) ax2.set_xlabel('GPU Speed (ms/img)') ax2.set_ylabel('COCO AP val') ax2.legend(loc='lower right') - plt.savefig('test_study.png', dpi=300) + plt.savefig(str(Path(path).name) + '.png', dpi=300) -def plot_labels(labels, save_dir=Path(''), loggers=None): +def plot_labels(labels, names=(), save_dir=Path(''), loggers=None): # plot dataset labels print('Plotting labels... ') c, b = labels[:, 0], labels[:, 1:].transpose() # classes, boxes @@ -271,7 +286,12 @@ def plot_labels(labels, save_dir=Path(''), loggers=None): matplotlib.use('svg') # faster ax = plt.subplots(2, 2, figsize=(8, 8), tight_layout=True)[1].ravel() ax[0].hist(c, bins=np.linspace(0, nc, nc + 1) - 0.5, rwidth=0.8) - ax[0].set_xlabel('classes') + ax[0].set_ylabel('instances') + if 0 < len(names) < 30: + ax[0].set_xticks(range(len(names))) + ax[0].set_xticklabels(names, rotation=90, fontsize=10) + else: + ax[0].set_xlabel('classes') sns.histplot(x, x='x', y='y', ax=ax[2], bins=50, pmax=0.9) sns.histplot(x, x='width', y='height', ax=ax[3], bins=50, pmax=0.9) @@ -295,13 +315,13 @@ def plot_labels(labels, save_dir=Path(''), loggers=None): # loggers for k, v in loggers.items() or {}: if k == 'wandb' and v: - v.log({"Labels": [v.Image(str(x), caption=x.name) for x in save_dir.glob('*labels*.jpg')]}) + v.log({"Labels": [v.Image(str(x), caption=x.name) for x in save_dir.glob('*labels*.jpg')]}, commit=False) def plot_evolution(yaml_file='data/hyp.finetune.yaml'): # from utils.plots import *; plot_evolution() # Plot hyperparameter evolution results in evolve.txt with open(yaml_file) as f: - hyp = yaml.load(f, Loader=yaml.FullLoader) + hyp = yaml.load(f, Loader=yaml.SafeLoader) x = np.loadtxt('evolve.txt', ndmin=2) f = fitness(x) # weights = (f - f.min()) ** 2 # for weighted results diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 231dcfd7..6535b2ab 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -1,8 +1,10 @@ -# PyTorch utils +# YOLOv3 PyTorch utils +import datetime import logging import math import os +import platform import subprocess import time from contextlib import contextmanager @@ -43,17 +45,24 @@ def init_torch_seeds(seed=0): cudnn.benchmark, cudnn.deterministic = True, False -def git_describe(): +def date_modified(path=__file__): + # return human-readable file modification date, i.e. '2021-3-26' + t = datetime.datetime.fromtimestamp(Path(path).stat().st_mtime) + return f'{t.year}-{t.month}-{t.day}' + + +def git_describe(path=Path(__file__).parent): # path must be a directory # return human-readable git description, i.e. v5.0-5-g3e25f1e https://git-scm.com/docs/git-describe - if Path('.git').exists(): - return subprocess.check_output('git describe --tags --long --always', shell=True).decode('utf-8')[:-1] - else: - return '' + s = f'git -C {path} describe --tags --long --always' + try: + return subprocess.check_output(s, shell=True, stderr=subprocess.STDOUT).decode()[:-1] + except subprocess.CalledProcessError as e: + return '' # not a git repository def select_device(device='', batch_size=None): # device = 'cpu' or '0' or '0,1,2,3' - s = f'YOLOv3 {git_describe()} torch {torch.__version__} ' # string + s = f'YOLOv3 🚀 {git_describe() or date_modified()} torch {torch.__version__} ' # string cpu = device.lower() == 'cpu' if cpu: os.environ['CUDA_VISIBLE_DEVICES'] = '-1' # force torch.cuda.is_available() = False @@ -73,7 +82,7 @@ def select_device(device='', batch_size=None): else: s += 'CPU\n' - logger.info(s) # skip a line + logger.info(s.encode().decode('ascii', 'ignore') if platform.system() == 'Windows' else s) # emoji-safe return torch.device('cuda:0' if cuda else 'cpu') @@ -120,7 +129,7 @@ def profile(x, ops, n=100, device=None): s_in = tuple(x.shape) if isinstance(x, torch.Tensor) else 'list' s_out = tuple(y.shape) if isinstance(y, torch.Tensor) else 'list' p = sum(list(x.numel() for x in m.parameters())) if isinstance(m, nn.Module) else 0 # parameters - print(f'{p:12.4g}{flops:12.4g}{dtf:16.4g}{dtb:16.4g}{str(s_in):>24s}{str(s_out):>24s}') + print(f'{p:12}{flops:12.4g}{dtf:16.4g}{dtb:16.4g}{str(s_in):>24s}{str(s_out):>24s}') def is_parallel(model): @@ -182,7 +191,7 @@ def fuse_conv_and_bn(conv, bn): # prepare filters w_conv = conv.weight.clone().view(conv.out_channels, -1) w_bn = torch.diag(bn.weight.div(torch.sqrt(bn.eps + bn.running_var))) - fusedconv.weight.copy_(torch.mm(w_bn, w_conv).view(fusedconv.weight.size())) + fusedconv.weight.copy_(torch.mm(w_bn, w_conv).view(fusedconv.weight.shape)) # prepare spatial bias b_conv = torch.zeros(conv.weight.size(0), device=conv.weight.device) if conv.bias is None else conv.bias @@ -205,7 +214,7 @@ def model_info(model, verbose=False, img_size=640): try: # FLOPS from thop import profile - stride = int(model.stride.max()) if hasattr(model, 'stride') else 32 + stride = max(int(model.stride.max()), 32) if hasattr(model, 'stride') else 32 img = torch.zeros((1, model.yaml.get('ch', 3), stride, stride), device=next(model.parameters()).device) # input flops = profile(deepcopy(model), inputs=(img,), verbose=False)[0] / 1E9 * 2 # stride GFLOPS img_size = img_size if isinstance(img_size, list) else [img_size, img_size] # expand if int/float diff --git a/utils/wandb_logging/__init__.py b/utils/wandb_logging/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/utils/wandb_logging/log_dataset.py b/utils/wandb_logging/log_dataset.py new file mode 100644 index 00000000..d7a521f1 --- /dev/null +++ b/utils/wandb_logging/log_dataset.py @@ -0,0 +1,24 @@ +import argparse + +import yaml + +from wandb_utils import WandbLogger + +WANDB_ARTIFACT_PREFIX = 'wandb-artifact://' + + +def create_dataset_artifact(opt): + with open(opt.data) as f: + data = yaml.load(f, Loader=yaml.SafeLoader) # data dict + logger = WandbLogger(opt, '', None, data, job_type='Dataset Creation') + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument('--data', type=str, default='data/coco128.yaml', help='data.yaml path') + parser.add_argument('--single-cls', action='store_true', help='train as single-class dataset') + parser.add_argument('--project', type=str, default='YOLOv5', help='name of W&B Project') + opt = parser.parse_args() + opt.resume = False # Explicitly disallow resume check for dataset upload job + + create_dataset_artifact(opt) diff --git a/utils/wandb_logging/wandb_utils.py b/utils/wandb_logging/wandb_utils.py new file mode 100644 index 00000000..d8f50ae8 --- /dev/null +++ b/utils/wandb_logging/wandb_utils.py @@ -0,0 +1,306 @@ +import json +import sys +from pathlib import Path + +import torch +import yaml +from tqdm import tqdm + +sys.path.append(str(Path(__file__).parent.parent.parent)) # add utils/ to path +from utils.datasets import LoadImagesAndLabels +from utils.datasets import img2label_paths +from utils.general import colorstr, xywh2xyxy, check_dataset + +try: + import wandb + from wandb import init, finish +except ImportError: + wandb = None + +WANDB_ARTIFACT_PREFIX = 'wandb-artifact://' + + +def remove_prefix(from_string, prefix=WANDB_ARTIFACT_PREFIX): + return from_string[len(prefix):] + + +def check_wandb_config_file(data_config_file): + wandb_config = '_wandb.'.join(data_config_file.rsplit('.', 1)) # updated data.yaml path + if Path(wandb_config).is_file(): + return wandb_config + return data_config_file + + +def get_run_info(run_path): + run_path = Path(remove_prefix(run_path, WANDB_ARTIFACT_PREFIX)) + run_id = run_path.stem + project = run_path.parent.stem + model_artifact_name = 'run_' + run_id + '_model' + return run_id, project, model_artifact_name + + +def check_wandb_resume(opt): + process_wandb_config_ddp_mode(opt) if opt.global_rank not in [-1, 0] else None + if isinstance(opt.resume, str): + if opt.resume.startswith(WANDB_ARTIFACT_PREFIX): + if opt.global_rank not in [-1, 0]: # For resuming DDP runs + run_id, project, model_artifact_name = get_run_info(opt.resume) + api = wandb.Api() + artifact = api.artifact(project + '/' + model_artifact_name + ':latest') + modeldir = artifact.download() + opt.weights = str(Path(modeldir) / "last.pt") + return True + return None + + +def process_wandb_config_ddp_mode(opt): + with open(opt.data) as f: + data_dict = yaml.load(f, Loader=yaml.SafeLoader) # data dict + train_dir, val_dir = None, None + if isinstance(data_dict['train'], str) and data_dict['train'].startswith(WANDB_ARTIFACT_PREFIX): + api = wandb.Api() + train_artifact = api.artifact(remove_prefix(data_dict['train']) + ':' + opt.artifact_alias) + train_dir = train_artifact.download() + train_path = Path(train_dir) / 'data/images/' + data_dict['train'] = str(train_path) + + if isinstance(data_dict['val'], str) and data_dict['val'].startswith(WANDB_ARTIFACT_PREFIX): + api = wandb.Api() + val_artifact = api.artifact(remove_prefix(data_dict['val']) + ':' + opt.artifact_alias) + val_dir = val_artifact.download() + val_path = Path(val_dir) / 'data/images/' + data_dict['val'] = str(val_path) + if train_dir or val_dir: + ddp_data_path = str(Path(val_dir) / 'wandb_local_data.yaml') + with open(ddp_data_path, 'w') as f: + yaml.dump(data_dict, f) + opt.data = ddp_data_path + + +class WandbLogger(): + def __init__(self, opt, name, run_id, data_dict, job_type='Training'): + # Pre-training routine -- + self.job_type = job_type + self.wandb, self.wandb_run, self.data_dict = wandb, None if not wandb else wandb.run, data_dict + # It's more elegant to stick to 1 wandb.init call, but useful config data is overwritten in the WandbLogger's wandb.init call + if isinstance(opt.resume, str): # checks resume from artifact + if opt.resume.startswith(WANDB_ARTIFACT_PREFIX): + run_id, project, model_artifact_name = get_run_info(opt.resume) + model_artifact_name = WANDB_ARTIFACT_PREFIX + model_artifact_name + assert wandb, 'install wandb to resume wandb runs' + # Resume wandb-artifact:// runs here| workaround for not overwriting wandb.config + self.wandb_run = wandb.init(id=run_id, project=project, resume='allow') + opt.resume = model_artifact_name + elif self.wandb: + self.wandb_run = wandb.init(config=opt, + resume="allow", + project='YOLOv5' if opt.project == 'runs/train' else Path(opt.project).stem, + name=name, + job_type=job_type, + id=run_id) if not wandb.run else wandb.run + if self.wandb_run: + if self.job_type == 'Training': + if not opt.resume: + wandb_data_dict = self.check_and_upload_dataset(opt) if opt.upload_dataset else data_dict + # Info useful for resuming from artifacts + self.wandb_run.config.opt = vars(opt) + self.wandb_run.config.data_dict = wandb_data_dict + self.data_dict = self.setup_training(opt, data_dict) + if self.job_type == 'Dataset Creation': + self.data_dict = self.check_and_upload_dataset(opt) + else: + prefix = colorstr('wandb: ') + print(f"{prefix}Install Weights & Biases for YOLOv5 logging with 'pip install wandb' (recommended)") + + def check_and_upload_dataset(self, opt): + assert wandb, 'Install wandb to upload dataset' + check_dataset(self.data_dict) + config_path = self.log_dataset_artifact(opt.data, + opt.single_cls, + 'YOLOv5' if opt.project == 'runs/train' else Path(opt.project).stem) + print("Created dataset config file ", config_path) + with open(config_path) as f: + wandb_data_dict = yaml.load(f, Loader=yaml.SafeLoader) + return wandb_data_dict + + def setup_training(self, opt, data_dict): + self.log_dict, self.current_epoch, self.log_imgs = {}, 0, 16 # Logging Constants + self.bbox_interval = opt.bbox_interval + if isinstance(opt.resume, str): + modeldir, _ = self.download_model_artifact(opt) + if modeldir: + self.weights = Path(modeldir) / "last.pt" + config = self.wandb_run.config + opt.weights, opt.save_period, opt.batch_size, opt.bbox_interval, opt.epochs, opt.hyp = str( + self.weights), config.save_period, config.total_batch_size, config.bbox_interval, config.epochs, \ + config.opt['hyp'] + data_dict = dict(self.wandb_run.config.data_dict) # eliminates the need for config file to resume + if 'val_artifact' not in self.__dict__: # If --upload_dataset is set, use the existing artifact, don't download + self.train_artifact_path, self.train_artifact = self.download_dataset_artifact(data_dict.get('train'), + opt.artifact_alias) + self.val_artifact_path, self.val_artifact = self.download_dataset_artifact(data_dict.get('val'), + opt.artifact_alias) + self.result_artifact, self.result_table, self.val_table, self.weights = None, None, None, None + if self.train_artifact_path is not None: + train_path = Path(self.train_artifact_path) / 'data/images/' + data_dict['train'] = str(train_path) + if self.val_artifact_path is not None: + val_path = Path(self.val_artifact_path) / 'data/images/' + data_dict['val'] = str(val_path) + self.val_table = self.val_artifact.get("val") + self.map_val_table_path() + if self.val_artifact is not None: + self.result_artifact = wandb.Artifact("run_" + wandb.run.id + "_progress", "evaluation") + self.result_table = wandb.Table(["epoch", "id", "prediction", "avg_confidence"]) + if opt.bbox_interval == -1: + self.bbox_interval = opt.bbox_interval = (opt.epochs // 10) if opt.epochs > 10 else 1 + return data_dict + + def download_dataset_artifact(self, path, alias): + if isinstance(path, str) and path.startswith(WANDB_ARTIFACT_PREFIX): + dataset_artifact = wandb.use_artifact(remove_prefix(path, WANDB_ARTIFACT_PREFIX) + ":" + alias) + assert dataset_artifact is not None, "'Error: W&B dataset artifact doesn\'t exist'" + datadir = dataset_artifact.download() + return datadir, dataset_artifact + return None, None + + def download_model_artifact(self, opt): + if opt.resume.startswith(WANDB_ARTIFACT_PREFIX): + model_artifact = wandb.use_artifact(remove_prefix(opt.resume, WANDB_ARTIFACT_PREFIX) + ":latest") + assert model_artifact is not None, 'Error: W&B model artifact doesn\'t exist' + modeldir = model_artifact.download() + epochs_trained = model_artifact.metadata.get('epochs_trained') + total_epochs = model_artifact.metadata.get('total_epochs') + assert epochs_trained < total_epochs, 'training to %g epochs is finished, nothing to resume.' % ( + total_epochs) + return modeldir, model_artifact + return None, None + + def log_model(self, path, opt, epoch, fitness_score, best_model=False): + model_artifact = wandb.Artifact('run_' + wandb.run.id + '_model', type='model', metadata={ + 'original_url': str(path), + 'epochs_trained': epoch + 1, + 'save period': opt.save_period, + 'project': opt.project, + 'total_epochs': opt.epochs, + 'fitness_score': fitness_score + }) + model_artifact.add_file(str(path / 'last.pt'), name='last.pt') + wandb.log_artifact(model_artifact, + aliases=['latest', 'epoch ' + str(self.current_epoch), 'best' if best_model else '']) + print("Saving model artifact on epoch ", epoch + 1) + + def log_dataset_artifact(self, data_file, single_cls, project, overwrite_config=False): + with open(data_file) as f: + data = yaml.load(f, Loader=yaml.SafeLoader) # data dict + nc, names = (1, ['item']) if single_cls else (int(data['nc']), data['names']) + names = {k: v for k, v in enumerate(names)} # to index dictionary + self.train_artifact = self.create_dataset_table(LoadImagesAndLabels( + data['train']), names, name='train') if data.get('train') else None + self.val_artifact = self.create_dataset_table(LoadImagesAndLabels( + data['val']), names, name='val') if data.get('val') else None + if data.get('train'): + data['train'] = WANDB_ARTIFACT_PREFIX + str(Path(project) / 'train') + if data.get('val'): + data['val'] = WANDB_ARTIFACT_PREFIX + str(Path(project) / 'val') + path = data_file if overwrite_config else '_wandb.'.join(data_file.rsplit('.', 1)) # updated data.yaml path + data.pop('download', None) + with open(path, 'w') as f: + yaml.dump(data, f) + + if self.job_type == 'Training': # builds correct artifact pipeline graph + self.wandb_run.use_artifact(self.val_artifact) + self.wandb_run.use_artifact(self.train_artifact) + self.val_artifact.wait() + self.val_table = self.val_artifact.get('val') + self.map_val_table_path() + else: + self.wandb_run.log_artifact(self.train_artifact) + self.wandb_run.log_artifact(self.val_artifact) + return path + + def map_val_table_path(self): + self.val_table_map = {} + print("Mapping dataset") + for i, data in enumerate(tqdm(self.val_table.data)): + self.val_table_map[data[3]] = data[0] + + def create_dataset_table(self, dataset, class_to_id, name='dataset'): + # TODO: Explore multiprocessing to slpit this loop parallely| This is essential for speeding up the the logging + artifact = wandb.Artifact(name=name, type="dataset") + img_files = tqdm([dataset.path]) if isinstance(dataset.path, str) and Path(dataset.path).is_dir() else None + img_files = tqdm(dataset.img_files) if not img_files else img_files + for img_file in img_files: + if Path(img_file).is_dir(): + artifact.add_dir(img_file, name='data/images') + labels_path = 'labels'.join(dataset.path.rsplit('images', 1)) + artifact.add_dir(labels_path, name='data/labels') + else: + artifact.add_file(img_file, name='data/images/' + Path(img_file).name) + label_file = Path(img2label_paths([img_file])[0]) + artifact.add_file(str(label_file), + name='data/labels/' + label_file.name) if label_file.exists() else None + table = wandb.Table(columns=["id", "train_image", "Classes", "name"]) + class_set = wandb.Classes([{'id': id, 'name': name} for id, name in class_to_id.items()]) + for si, (img, labels, paths, shapes) in enumerate(tqdm(dataset)): + height, width = shapes[0] + labels[:, 2:] = (xywh2xyxy(labels[:, 2:].view(-1, 4))) * torch.Tensor([width, height, width, height]) + box_data, img_classes = [], {} + for cls, *xyxy in labels[:, 1:].tolist(): + cls = int(cls) + box_data.append({"position": {"minX": xyxy[0], "minY": xyxy[1], "maxX": xyxy[2], "maxY": xyxy[3]}, + "class_id": cls, + "box_caption": "%s" % (class_to_id[cls]), + "scores": {"acc": 1}, + "domain": "pixel"}) + img_classes[cls] = class_to_id[cls] + boxes = {"ground_truth": {"box_data": box_data, "class_labels": class_to_id}} # inference-space + table.add_data(si, wandb.Image(paths, classes=class_set, boxes=boxes), json.dumps(img_classes), + Path(paths).name) + artifact.add(table, name) + return artifact + + def log_training_progress(self, predn, path, names): + if self.val_table and self.result_table: + class_set = wandb.Classes([{'id': id, 'name': name} for id, name in names.items()]) + box_data = [] + total_conf = 0 + for *xyxy, conf, cls in predn.tolist(): + if conf >= 0.25: + box_data.append( + {"position": {"minX": xyxy[0], "minY": xyxy[1], "maxX": xyxy[2], "maxY": xyxy[3]}, + "class_id": int(cls), + "box_caption": "%s %.3f" % (names[cls], conf), + "scores": {"class_score": conf}, + "domain": "pixel"}) + total_conf = total_conf + conf + boxes = {"predictions": {"box_data": box_data, "class_labels": names}} # inference-space + id = self.val_table_map[Path(path).name] + self.result_table.add_data(self.current_epoch, + id, + wandb.Image(self.val_table.data[id][1], boxes=boxes, classes=class_set), + total_conf / max(1, len(box_data)) + ) + + def log(self, log_dict): + if self.wandb_run: + for key, value in log_dict.items(): + self.log_dict[key] = value + + def end_epoch(self, best_result=False): + if self.wandb_run: + wandb.log(self.log_dict) + self.log_dict = {} + if self.result_artifact: + train_results = wandb.JoinedTable(self.val_table, self.result_table, "id") + self.result_artifact.add(train_results, 'result') + wandb.log_artifact(self.result_artifact, aliases=['latest', 'epoch ' + str(self.current_epoch), + ('best' if best_result else '')]) + self.result_table = wandb.Table(["epoch", "id", "prediction", "avg_confidence"]) + self.result_artifact = wandb.Artifact("run_" + wandb.run.id + "_progress", "evaluation") + + def finish_run(self): + if self.wandb_run: + if self.log_dict: + wandb.log(self.log_dict) + wandb.run.finish() From be29298b5c752d4db0098ed50fb48228c145cb8c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 12 Apr 2021 18:18:05 +0200 Subject: [PATCH 2537/2595] Created using Colaboratory --- tutorial.ipynb | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/tutorial.ipynb b/tutorial.ipynb index b8969bc4..ca2d391d 100644 --- a/tutorial.ipynb +++ b/tutorial.ipynb @@ -517,7 +517,7 @@ "colab_type": "text" }, "source": [ - "\"Open" + "\"Open" ] }, { @@ -529,7 +529,7 @@ "\n", "\n", "This is the **official YOLOv3 🚀 notebook** authored by **Ultralytics**, and is freely available for redistribution under the [GPL-3.0 license](https://choosealicense.com/licenses/gpl-3.0/). \n", - "For more information please visit https://github.com/ultralytics/yolov5 and https://www.ultralytics.com. Thank you!" + "For more information please visit https://github.com/ultralytics/yolov3 and https://www.ultralytics.com. Thank you!" ] }, { @@ -553,8 +553,8 @@ "outputId": "9b022435-4197-41fc-abea-81f86ce857d0" }, "source": [ - "!git clone https://github.com/ultralytics/yolov5 # clone repo\n", - "%cd yolov5\n", + "!git clone https://github.com/ultralytics/yolov3 # clone repo\n", + "%cd yolov3\n", "%pip install -qr requirements.txt # install dependencies\n", "\n", "import torch\n", @@ -563,7 +563,7 @@ "clear_output()\n", "print(f\"Setup complete. Using torch {torch.__version__} ({torch.cuda.get_device_properties(0).name if torch.cuda.is_available() else 'CPU'})\")" ], - "execution_count": 31, + "execution_count": null, "outputs": [ { "output_type": "stream", @@ -719,7 +719,7 @@ }, "source": [ "# Run YOLOv3 on COCO val2017\n", - "!python test.py --weights yolov5x.pt --data coco.yaml --img 640 --iou 0.65" + "!python test.py --weights yolov3.pt --data coco.yaml --img 640 --iou 0.65" ], "execution_count": null, "outputs": [ @@ -1145,8 +1145,8 @@ "source": [ "# Re-clone repo\n", "%cd ..\n", - "%rm -rf yolov5 && git clone https://github.com/ultralytics/yolov5\n", - "%cd yolov5" + "%rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3\n", + "%cd yolov3" ], "execution_count": null, "outputs": [] @@ -1175,10 +1175,10 @@ "import torch\n", "\n", "# Model\n", - "model = torch.hub.load('ultralytics/yolov5', 'yolov3')\n", + "model = torch.hub.load('ultralytics/yolov3', 'yolov3') # or 'yolov3_spp', 'yolov3_tiny'\n", "\n", "# Images\n", - "dir = 'https://github.com/ultralytics/yolov5/raw/master/data/images/'\n", + "dir = 'https://github.com/ultralytics/yolov3/raw/master/data/images/'\n", "imgs = [dir + f for f in ('zidane.jpg', 'bus.jpg')] # batch of images\n", "\n", "# Inference\n", From b9849003c8579694c18be1f1e414afa52c9dfc80 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 12 Apr 2021 23:38:05 +0200 Subject: [PATCH 2538/2595] Created using Colaboratory --- tutorial.ipynb | 241 +++++++++++++++++++++++++------------------------ 1 file changed, 124 insertions(+), 117 deletions(-) diff --git a/tutorial.ipynb b/tutorial.ipynb index ca2d391d..7f58e734 100644 --- a/tutorial.ipynb +++ b/tutorial.ipynb @@ -16,7 +16,7 @@ "accelerator": "GPU", "widgets": { "application/vnd.jupyter.widget-state+json": { - "8815626359d84416a2f44a95500580a4": { + "355d9ee3dfc4487ebcae3b66ddbedce1": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "state": { @@ -28,15 +28,15 @@ "_view_count": null, "_view_module_version": "1.5.0", "box_style": "", - "layout": "IPY_MODEL_3b85609c4ce94a74823f2cfe141ce68e", + "layout": "IPY_MODEL_8209acd3185441e7b263eead5e8babdf", "_model_module": "@jupyter-widgets/controls", "children": [ - "IPY_MODEL_876609753c2946248890344722963d44", - "IPY_MODEL_8abfdd8778e44b7ca0d29881cb1ada05" + "IPY_MODEL_b81d30356f7048b0abcba35bde811526", + "IPY_MODEL_7fcbf6b56f2e4b6dbf84e48465c96633" ] } }, - "3b85609c4ce94a74823f2cfe141ce68e": { + "8209acd3185441e7b263eead5e8babdf": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -87,12 +87,12 @@ "left": null } }, - "876609753c2946248890344722963d44": { + "b81d30356f7048b0abcba35bde811526": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "state": { "_view_name": "ProgressView", - "style": "IPY_MODEL_78c6c3d97c484916b8ee167c63556800", + "style": "IPY_MODEL_6ee48f9f3af444a7b02ec2f074dec1f8", "_dom_classes": [], "description": "100%", "_model_name": "FloatProgressModel", @@ -107,30 +107,30 @@ "min": 0, "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_9dd0f182db5d45378ceafb855e486eb8" + "layout": "IPY_MODEL_b7d819ed5f2f4e39a75a823792ab7249" } }, - "8abfdd8778e44b7ca0d29881cb1ada05": { + "7fcbf6b56f2e4b6dbf84e48465c96633": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "state": { "_view_name": "HTMLView", - "style": "IPY_MODEL_a3dab28b45c247089a3d1b8b09f327de", + "style": "IPY_MODEL_3af216dd7d024739b8168995800ed8be", "_dom_classes": [], "description": "", "_model_name": "HTMLModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": " 781M/781M [08:43<00:00, 1.56MB/s]", + "value": " 781M/781M [00:11<00:00, 71.1MB/s]", "_view_count": null, "_view_module_version": "1.5.0", "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_32451332b7a94ba9aacddeaa6ac94d50" + "layout": "IPY_MODEL_763141d8de8a498a92ffa66aafed0c5a" } }, - "78c6c3d97c484916b8ee167c63556800": { + "6ee48f9f3af444a7b02ec2f074dec1f8": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "state": { @@ -145,7 +145,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "9dd0f182db5d45378ceafb855e486eb8": { + "b7d819ed5f2f4e39a75a823792ab7249": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -196,7 +196,7 @@ "left": null } }, - "a3dab28b45c247089a3d1b8b09f327de": { + "3af216dd7d024739b8168995800ed8be": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "state": { @@ -210,7 +210,7 @@ "_model_module": "@jupyter-widgets/controls" } }, - "32451332b7a94ba9aacddeaa6ac94d50": { + "763141d8de8a498a92ffa66aafed0c5a": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "state": { @@ -550,7 +550,7 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "9b022435-4197-41fc-abea-81f86ce857d0" + "outputId": "56f7b795-7a7b-46a1-8c5e-d06040187a85" }, "source": [ "!git clone https://github.com/ultralytics/yolov3 # clone repo\n", @@ -563,12 +563,12 @@ "clear_output()\n", "print(f\"Setup complete. Using torch {torch.__version__} ({torch.cuda.get_device_properties(0).name if torch.cuda.is_available() else 'CPU'})\")" ], - "execution_count": null, + "execution_count": 1, "outputs": [ { "output_type": "stream", "text": [ - "Setup complete. Using torch 1.8.1+cu101 (Tesla V100-SXM2-16GB)\n" + "Setup complete. Using torch 1.8.1+cu101 (Tesla P100-PCIE-16GB)\n" ], "name": "stdout" } @@ -593,35 +593,35 @@ "id": "zR9ZbuQCH7FX", "colab": { "base_uri": "https://localhost:8080/", - "height": 534 + "height": 521 }, - "outputId": "c9a308f7-2216-4805-8003-eca8dd0dc30d" + "outputId": "bd41a070-3498-42e1-ac1b-3900ac0c2ec2" }, "source": [ "!python detect.py --weights yolov3.pt --img 640 --conf 0.25 --source data/images/\n", "Image(filename='runs/detect/exp/zidane.jpg', width=600)" ], - "execution_count": null, + "execution_count": 5, "outputs": [ { "output_type": "stream", "text": [ - "Namespace(agnostic_nms=False, augment=False, classes=None, conf_thres=0.25, device='', exist_ok=False, img_size=640, iou_thres=0.45, name='exp', project='runs/detect', save_conf=False, save_txt=False, source='data/images/', update=False, view_img=False, weights=['yolov3.pt'])\n", - "YOLOv3 🚀 v5.0-1-g0f395b3 torch 1.8.1+cu101 CUDA:0 (Tesla V100-SXM2-16GB, 16160.5MB)\n", + "Namespace(agnostic_nms=False, augment=False, classes=None, conf_thres=0.25, device='', exist_ok=False, img_size=640, iou_thres=0.45, name='exp', nosave=False, project='runs/detect', save_conf=False, save_txt=False, source='data/images/', update=False, view_img=False, weights=['yolov3.pt'])\n", + "YOLOv3 🚀 v9.5.0-1-gbe29298 torch 1.8.1+cu101 CUDA:0 (Tesla P100-PCIE-16GB, 16280.875MB)\n", "\n", "Fusing layers... \n", - "Model Summary: 224 layers, 7266973 parameters, 0 gradients, 17.0 GFLOPS\n", - "image 1/2 /content/yolov5/data/images/bus.jpg: 640x480 4 persons, 1 bus, Done. (0.008s)\n", - "image 2/2 /content/yolov5/data/images/zidane.jpg: 384x640 2 persons, 2 ties, Done. (0.008s)\n", - "Results saved to runs/detect/exp\n", - "Done. (0.087)\n" + "Model Summary: 261 layers, 61922845 parameters, 0 gradients, 156.3 GFLOPS\n", + "image 1/2 /content/yolov3/data/images/bus.jpg: 640x480 4 persons, 1 bus, Done. (0.026s)\n", + "image 2/2 /content/yolov3/data/images/zidane.jpg: 384x640 2 persons, 3 ties, Done. (0.025s)\n", + "Results saved to runs/detect/exp2\n", + "Done. (0.119s)\n" ], "name": "stdout" }, { "output_type": "execute_result", "data": { - "image/jpeg": "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\n", + "image/jpeg": "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\n", "text/plain": [ "" ] @@ -632,7 +632,7 @@ "width": 600 } }, - "execution_count": 38 + "execution_count": 5 } ] }, @@ -664,30 +664,30 @@ "base_uri": "https://localhost:8080/", "height": 65, "referenced_widgets": [ - "8815626359d84416a2f44a95500580a4", - "3b85609c4ce94a74823f2cfe141ce68e", - "876609753c2946248890344722963d44", - "8abfdd8778e44b7ca0d29881cb1ada05", - "78c6c3d97c484916b8ee167c63556800", - "9dd0f182db5d45378ceafb855e486eb8", - "a3dab28b45c247089a3d1b8b09f327de", - "32451332b7a94ba9aacddeaa6ac94d50" + "355d9ee3dfc4487ebcae3b66ddbedce1", + "8209acd3185441e7b263eead5e8babdf", + "b81d30356f7048b0abcba35bde811526", + "7fcbf6b56f2e4b6dbf84e48465c96633", + "6ee48f9f3af444a7b02ec2f074dec1f8", + "b7d819ed5f2f4e39a75a823792ab7249", + "3af216dd7d024739b8168995800ed8be", + "763141d8de8a498a92ffa66aafed0c5a" ] }, - "outputId": "81521192-cf67-4a47-a4cc-434cb0ebc363" + "outputId": "f7e4fb76-74db-4810-c705-b416bc862b52" }, "source": [ "# Download COCO val2017\n", "torch.hub.download_url_to_file('https://github.com/ultralytics/yolov5/releases/download/v1.0/coco2017val.zip', 'tmp.zip')\n", "!unzip -q tmp.zip -d ../ && rm tmp.zip" ], - "execution_count": null, + "execution_count": 3, "outputs": [ { "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "8815626359d84416a2f44a95500580a4", + "model_id": "355d9ee3dfc4487ebcae3b66ddbedce1", "version_minor": 0, "version_major": 2 }, @@ -715,57 +715,54 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "2340b131-9943-4cd6-fd3a-8272aeb0774f" + "outputId": "71a0355d-fe5b-4c8a-9ed2-f824dc776272" }, "source": [ "# Run YOLOv3 on COCO val2017\n", "!python test.py --weights yolov3.pt --data coco.yaml --img 640 --iou 0.65" ], - "execution_count": null, + "execution_count": 4, "outputs": [ { "output_type": "stream", "text": [ - "Namespace(augment=False, batch_size=32, conf_thres=0.001, data='./data/coco.yaml', device='', exist_ok=False, img_size=640, iou_thres=0.65, name='exp', project='runs/test', save_conf=False, save_hybrid=False, save_json=True, save_txt=False, single_cls=False, task='val', verbose=False, weights=['yolov5x.pt'])\n", - "YOLOv3 🚀 v5.0-1-g0f395b3 torch 1.8.1+cu101 CUDA:0 (Tesla V100-SXM2-16GB, 16160.5MB)\n", - "\n", - "Downloading https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5x.pt to yolov5x.pt...\n", - "100% 168M/168M [00:05<00:00, 32.3MB/s]\n", + "Namespace(augment=False, batch_size=32, conf_thres=0.001, data='./data/coco.yaml', device='', exist_ok=False, img_size=640, iou_thres=0.65, name='exp', project='runs/test', save_conf=False, save_hybrid=False, save_json=True, save_txt=False, single_cls=False, task='val', verbose=False, weights=['yolov3.pt'])\n", + "YOLOv3 🚀 v9.5.0-1-gbe29298 torch 1.8.1+cu101 CUDA:0 (Tesla P100-PCIE-16GB, 16280.875MB)\n", "\n", "Fusing layers... \n", - "Model Summary: 476 layers, 87730285 parameters, 0 gradients, 218.8 GFLOPS\n", - "\u001b[34m\u001b[1mval: \u001b[0mScanning '../coco/val2017' images and labels... 4952 found, 48 missing, 0 empty, 0 corrupted: 100% 5000/5000 [00:01<00:00, 3102.29it/s]\n", + "Model Summary: 261 layers, 61922845 parameters, 0 gradients, 156.3 GFLOPS\n", + "\u001b[34m\u001b[1mval: \u001b[0mScanning '../coco/val2017' images and labels... 4952 found, 48 missing, 0 empty, 0 corrupted: 100% 5000/5000 [00:01<00:00, 3320.65it/s]\n", "\u001b[34m\u001b[1mval: \u001b[0mNew cache created: ../coco/val2017.cache\n", - " Class Images Labels P R mAP@.5 mAP@.5:.95: 100% 157/157 [01:23<00:00, 1.87it/s]\n", - " all 5000 36335 0.745 0.627 0.68 0.49\n", - "Speed: 5.3/1.6/6.9 ms inference/NMS/total per 640x640 image at batch-size 32\n", + " Class Images Labels P R mAP@.5 mAP@.5:.95: 100% 157/157 [01:44<00:00, 1.50it/s]\n", + " all 5000 36335 0.642 0.61 0.621 0.416\n", + "Speed: 13.8/1.1/14.9 ms inference/NMS/total per 640x640 image at batch-size 32\n", "\n", - "Evaluating pycocotools mAP... saving runs/test/exp/yolov5x_predictions.json...\n", + "Evaluating pycocotools mAP... saving runs/test/exp/yolov3_predictions.json...\n", "loading annotations into memory...\n", - "Done (t=0.48s)\n", + "Done (t=0.42s)\n", "creating index...\n", "index created!\n", "Loading and preparing results...\n", - "DONE (t=5.08s)\n", + "DONE (t=5.00s)\n", "creating index...\n", "index created!\n", "Running per image evaluation...\n", "Evaluate annotation type *bbox*\n", - "DONE (t=90.51s).\n", + "DONE (t=78.37s).\n", "Accumulating evaluation results...\n", - "DONE (t=15.16s).\n", - " Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.504\n", - " Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.688\n", - " Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.546\n", - " Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.351\n", - " Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.551\n", - " Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.644\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.382\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.629\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.681\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.524\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.735\n", - " Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.827\n", + "DONE (t=11.12s).\n", + " Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.433\n", + " Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.630\n", + " Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.470\n", + " Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.284\n", + " Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.485\n", + " Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.538\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.346\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.581\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.634\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.474\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.687\n", + " Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.766\n", "Results saved to runs/test/exp\n" ], "name": "stdout" @@ -916,61 +913,72 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "e715d09c-5d93-4912-a0df-9da0893f2014" + "outputId": "3638328f-e897-40d5-c49f-3dfbcea258a9" }, "source": [ "# Train YOLOv3 on COCO128 for 3 epochs\n", "!python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov3.pt --nosave --cache" ], - "execution_count": null, + "execution_count": 6, "outputs": [ { "output_type": "stream", "text": [ - "\u001b[34m\u001b[1mgithub: \u001b[0mup to date with https://github.com/ultralytics/yolov5 ✅\n", - "YOLOv3 🚀 v5.0-2-g54d6516 torch 1.8.1+cu101 CUDA:0 (Tesla V100-SXM2-16GB, 16160.5MB)\n", + "\u001b[34m\u001b[1mgithub: \u001b[0mup to date with https://github.com/ultralytics/yolov3 ✅\n", + "YOLOv3 🚀 v9.5.0-1-gbe29298 torch 1.8.1+cu101 CUDA:0 (Tesla P100-PCIE-16GB, 16280.875MB)\n", "\n", "Namespace(adam=False, artifact_alias='latest', batch_size=16, bbox_interval=-1, bucket='', cache_images=True, cfg='', data='./data/coco128.yaml', device='', entity=None, epochs=3, evolve=False, exist_ok=False, global_rank=-1, hyp='data/hyp.scratch.yaml', image_weights=False, img_size=[640, 640], label_smoothing=0.0, linear_lr=False, local_rank=-1, multi_scale=False, name='exp', noautoanchor=False, nosave=True, notest=False, project='runs/train', quad=False, rect=False, resume=False, save_dir='runs/train/exp', save_period=-1, single_cls=False, sync_bn=False, total_batch_size=16, upload_dataset=False, weights='yolov3.pt', workers=8, world_size=1)\n", "\u001b[34m\u001b[1mtensorboard: \u001b[0mStart with 'tensorboard --logdir runs/train', view at http://localhost:6006/\n", - "2021-04-12 10:29:58.539457: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.11.0\n", + "2021-04-12 21:26:33.963524: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.11.0\n", "\u001b[34m\u001b[1mhyperparameters: \u001b[0mlr0=0.01, lrf=0.2, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=0.05, cls=0.5, cls_pw=1.0, obj=1.0, obj_pw=1.0, iou_t=0.2, anchor_t=4.0, fl_gamma=0.0, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, mosaic=1.0, mixup=0.0\n", - "\u001b[34m\u001b[1mwandb: \u001b[0mInstall Weights & Biases for YOLOv3 logging with 'pip install wandb' (recommended)\n", + "\u001b[34m\u001b[1mwandb: \u001b[0mInstall Weights & Biases for YOLOv5 logging with 'pip install wandb' (recommended)\n", "\n", " from n params module arguments \n", - " 0 -1 1 3520 models.common.Focus [3, 32, 3] \n", + " 0 -1 1 928 models.common.Conv [3, 32, 3, 1] \n", " 1 -1 1 18560 models.common.Conv [32, 64, 3, 2] \n", - " 2 -1 1 18816 models.common.C3 [64, 64, 1] \n", + " 2 -1 1 20672 models.common.Bottleneck [64, 64] \n", " 3 -1 1 73984 models.common.Conv [64, 128, 3, 2] \n", - " 4 -1 1 156928 models.common.C3 [128, 128, 3] \n", + " 4 -1 2 164608 models.common.Bottleneck [128, 128] \n", " 5 -1 1 295424 models.common.Conv [128, 256, 3, 2] \n", - " 6 -1 1 625152 models.common.C3 [256, 256, 3] \n", + " 6 -1 8 2627584 models.common.Bottleneck [256, 256] \n", " 7 -1 1 1180672 models.common.Conv [256, 512, 3, 2] \n", - " 8 -1 1 656896 models.common.SPP [512, 512, [5, 9, 13]] \n", - " 9 -1 1 1182720 models.common.C3 [512, 512, 1, False] \n", - " 10 -1 1 131584 models.common.Conv [512, 256, 1, 1] \n", - " 11 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n", - " 12 [-1, 6] 1 0 models.common.Concat [1] \n", - " 13 -1 1 361984 models.common.C3 [512, 256, 1, False] \n", - " 14 -1 1 33024 models.common.Conv [256, 128, 1, 1] \n", - " 15 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n", - " 16 [-1, 4] 1 0 models.common.Concat [1] \n", - " 17 -1 1 90880 models.common.C3 [256, 128, 1, False] \n", - " 18 -1 1 147712 models.common.Conv [128, 128, 3, 2] \n", - " 19 [-1, 14] 1 0 models.common.Concat [1] \n", - " 20 -1 1 296448 models.common.C3 [256, 256, 1, False] \n", - " 21 -1 1 590336 models.common.Conv [256, 256, 3, 2] \n", - " 22 [-1, 10] 1 0 models.common.Concat [1] \n", - " 23 -1 1 1182720 models.common.C3 [512, 512, 1, False] \n", - " 24 [17, 20, 23] 1 229245 models.yolo.Detect [80, [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]], [128, 256, 512]]\n", - "Model Summary: 283 layers, 7276605 parameters, 7276605 gradients, 17.1 GFLOPS\n", + " 8 -1 8 10498048 models.common.Bottleneck [512, 512] \n", + " 9 -1 1 4720640 models.common.Conv [512, 1024, 3, 2] \n", + " 10 -1 4 20983808 models.common.Bottleneck [1024, 1024] \n", + " 11 -1 1 5245952 models.common.Bottleneck [1024, 1024, False] \n", + " 12 -1 1 525312 models.common.Conv [1024, 512, [1, 1]] \n", + " 13 -1 1 4720640 models.common.Conv [512, 1024, 3, 1] \n", + " 14 -1 1 525312 models.common.Conv [1024, 512, 1, 1] \n", + " 15 -1 1 4720640 models.common.Conv [512, 1024, 3, 1] \n", + " 16 -2 1 131584 models.common.Conv [512, 256, 1, 1] \n", + " 17 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n", + " 18 [-1, 8] 1 0 models.common.Concat [1] \n", + " 19 -1 1 1377792 models.common.Bottleneck [768, 512, False] \n", + " 20 -1 1 1312256 models.common.Bottleneck [512, 512, False] \n", + " 21 -1 1 131584 models.common.Conv [512, 256, 1, 1] \n", + " 22 -1 1 1180672 models.common.Conv [256, 512, 3, 1] \n", + " 23 -2 1 33024 models.common.Conv [256, 128, 1, 1] \n", + " 24 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n", + " 25 [-1, 6] 1 0 models.common.Concat [1] \n", + " 26 -1 1 344832 models.common.Bottleneck [384, 256, False] \n", + " 27 -1 2 656896 models.common.Bottleneck [256, 256, False] \n", + " 28 [27, 22, 15] 1 457725 models.yolo.Detect [80, [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]], [256, 512, 1024]]\n", + "Model Summary: 333 layers, 61949149 parameters, 61949149 gradients, 156.4 GFLOPS\n", + "\n", + "Transferred 440/440 items from yolov3.pt\n", + "\n", + "WARNING: Dataset not found, nonexistent paths: ['/content/coco128/images/train2017']\n", + "Downloading https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip ...\n", + "100% 21.1M/21.1M [00:01<00:00, 13.6MB/s]\n", + "Dataset autodownload success\n", "\n", - "Transferred 362/362 items from yolov3.pt\n", "Scaled weight_decay = 0.0005\n", - "Optimizer groups: 62 .bias, 62 conv.weight, 59 other\n", - "\u001b[34m\u001b[1mtrain: \u001b[0mScanning '../coco128/labels/train2017.cache' images and labels... 128 found, 0 missing, 2 empty, 0 corrupted: 100% 128/128 [00:00<00:00, 796544.38it/s]\n", - "\u001b[34m\u001b[1mtrain: \u001b[0mCaching images (0.1GB): 100% 128/128 [00:00<00:00, 176.73it/s]\n", - "\u001b[34m\u001b[1mval: \u001b[0mScanning '../coco128/labels/train2017.cache' images and labels... 128 found, 0 missing, 2 empty, 0 corrupted: 100% 128/128 [00:00<00:00, 500812.42it/s]\n", - "\u001b[34m\u001b[1mval: \u001b[0mCaching images (0.1GB): 100% 128/128 [00:00<00:00, 134.10it/s]\n", + "Optimizer groups: 75 .bias, 75 conv.weight, 72 other\n", + "\u001b[34m\u001b[1mtrain: \u001b[0mScanning '../coco128/labels/train2017' images and labels... 128 found, 0 missing, 2 empty, 0 corrupted: 100% 128/128 [00:00<00:00, 3076.66it/s]\n", + "\u001b[34m\u001b[1mtrain: \u001b[0mNew cache created: ../coco128/labels/train2017.cache\n", + "\u001b[34m\u001b[1mtrain: \u001b[0mCaching images (0.1GB): 100% 128/128 [00:00<00:00, 217.17it/s]\n", + "\u001b[34m\u001b[1mval: \u001b[0mScanning '../coco128/labels/train2017.cache' images and labels... 128 found, 0 missing, 2 empty, 0 corrupted: 100% 128/128 [00:00<00:00, 797727.95it/s]\n", + "\u001b[34m\u001b[1mval: \u001b[0mCaching images (0.1GB): 100% 128/128 [00:00<00:00, 149.28it/s]\n", "Plotting labels... \n", "\n", "\u001b[34m\u001b[1mautoanchor: \u001b[0mAnalyzing anchors... anchors/target = 4.26, Best Possible Recall (BPR) = 0.9946\n", @@ -980,23 +988,22 @@ "Starting training for 3 epochs...\n", "\n", " Epoch gpu_mem box obj cls total labels img_size\n", - " 0/2 3.29G 0.04368 0.065 0.02127 0.1299 183 640: 100% 8/8 [00:03<00:00, 2.21it/s]\n", - " Class Images Labels P R mAP@.5 mAP@.5:.95: 100% 4/4 [00:04<00:00, 1.09s/it]\n", - " all 128 929 0.605 0.657 0.666 0.434\n", + " 0/2 9.3G 0.02899 0.02444 0.007403 0.06083 161 640: 100% 8/8 [00:11<00:00, 1.49s/it]\n", + " Class Images Labels P R mAP@.5 mAP@.5:.95: 100% 4/4 [00:12<00:00, 3.18s/it]\n", + " all 128 929 0.738 0.738 0.79 0.559\n", "\n", " Epoch gpu_mem box obj cls total labels img_size\n", - " 1/2 6.65G 0.04556 0.0651 0.01987 0.1305 166 640: 100% 8/8 [00:01<00:00, 5.18it/s]\n", - " Class Images Labels P R mAP@.5 mAP@.5:.95: 100% 4/4 [00:01<00:00, 2.72it/s]\n", - " all 128 929 0.61 0.66 0.669 0.438\n", + " 1/2 9.08G 0.02946 0.02422 0.007518 0.0612 182 640: 100% 8/8 [00:06<00:00, 1.23it/s]\n", + " Class Images Labels P R mAP@.5 mAP@.5:.95: 100% 4/4 [00:02<00:00, 1.92it/s]\n", + " all 128 929 0.748 0.723 0.792 0.56\n", "\n", " Epoch gpu_mem box obj cls total labels img_size\n", - " 2/2 6.65G 0.04624 0.06923 0.0196 0.1351 182 640: 100% 8/8 [00:01<00:00, 5.19it/s]\n", - " Class Images Labels P R mAP@.5 mAP@.5:.95: 100% 4/4 [00:03<00:00, 1.27it/s]\n", - " all 128 929 0.618 0.659 0.671 0.438\n", - "3 epochs completed in 0.007 hours.\n", + " 2/2 12.2G 0.02798 0.02146 0.007992 0.05744 188 640: 100% 8/8 [00:06<00:00, 1.21it/s]\n", + " Class Images Labels P R mAP@.5 mAP@.5:.95: 100% 4/4 [00:02<00:00, 1.36it/s]\n", + " all 128 929 0.76 0.716 0.79 0.558\n", + "3 epochs completed in 0.014 hours.\n", "\n", - "Optimizer stripped from runs/train/exp/weights/last.pt, 14.8MB\n", - "Optimizer stripped from runs/train/exp/weights/best.pt, 14.8MB\n" + "Optimizer stripped from runs/train/exp/weights/last.pt, 124.3MB\n" ], "name": "stdout" } From 331df67aacd9ed3177430a75e5208c8d896d0938 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 19 Apr 2021 12:37:10 +0200 Subject: [PATCH 2539/2595] Create FUNDING.yaml (#1743) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This should set up a "Sponsor" button on the repository to allow users and organizations to help with the development of YOLOv5 with financial contributions! I feel like 10 sponsors could really help fund Ultralytics' caffeine ☕ addiction and get YOLOv5 🚀 developed and deployed faster than ever! 😃 --- .github/FUNDING.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..3da386f7 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,5 @@ +# These are supported funding model platforms + +github: glenn-jocher +patreon: ultralytics +open_collective: ultralytics From af7b923bfa45a1594738d3b69a69ea736d05713d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 May 2021 14:28:11 +0200 Subject: [PATCH 2540/2595] Created using Colaboratory --- tutorial.ipynb | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/tutorial.ipynb b/tutorial.ipynb index 7f58e734..0a36ec06 100644 --- a/tutorial.ipynb +++ b/tutorial.ipynb @@ -563,7 +563,7 @@ "clear_output()\n", "print(f\"Setup complete. Using torch {torch.__version__} ({torch.cuda.get_device_properties(0).name if torch.cuda.is_available() else 'CPU'})\")" ], - "execution_count": 1, + "execution_count": null, "outputs": [ { "output_type": "stream", @@ -601,7 +601,7 @@ "!python detect.py --weights yolov3.pt --img 640 --conf 0.25 --source data/images/\n", "Image(filename='runs/detect/exp/zidane.jpg', width=600)" ], - "execution_count": 5, + "execution_count": null, "outputs": [ { "output_type": "stream", @@ -681,7 +681,7 @@ "torch.hub.download_url_to_file('https://github.com/ultralytics/yolov5/releases/download/v1.0/coco2017val.zip', 'tmp.zip')\n", "!unzip -q tmp.zip -d ../ && rm tmp.zip" ], - "execution_count": 3, + "execution_count": null, "outputs": [ { "output_type": "display_data", @@ -721,7 +721,7 @@ "# Run YOLOv3 on COCO val2017\n", "!python test.py --weights yolov3.pt --data coco.yaml --img 640 --iou 0.65" ], - "execution_count": 4, + "execution_count": null, "outputs": [ { "output_type": "stream", @@ -899,9 +899,10 @@ "id": "2fLAV42oNb7M" }, "source": [ - "# Weights & Biases (optional)\n", - "%pip install -q wandb \n", - "!wandb login # use 'wandb disabled' or 'wandb enabled' to disable or enable" + "# Weights & Biases (optional)\n", + "%pip install -q wandb\n", + "import wandb\n", + "wandb.login()" ], "execution_count": null, "outputs": [] @@ -919,7 +920,7 @@ "# Train YOLOv3 on COCO128 for 3 epochs\n", "!python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov3.pt --nosave --cache" ], - "execution_count": 6, + "execution_count": null, "outputs": [ { "output_type": "stream", From 11c554c31e7c8ad48049fc746110626a97967325 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 May 2021 18:38:37 +0200 Subject: [PATCH 2541/2595] Creado con Colaboratory --- tutorial.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorial.ipynb b/tutorial.ipynb index 0a36ec06..b17aa25c 100644 --- a/tutorial.ipynb +++ b/tutorial.ipynb @@ -1186,7 +1186,7 @@ "model = torch.hub.load('ultralytics/yolov3', 'yolov3') # or 'yolov3_spp', 'yolov3_tiny'\n", "\n", "# Images\n", - "dir = 'https://github.com/ultralytics/yolov3/raw/master/data/images/'\n", + "dir = 'https://ultralytics.com/images/'\n", "imgs = [dir + f for f in ('zidane.jpg', 'bus.jpg')] # batch of images\n", "\n", "# Inference\n", From 69eecec7beed4285bef15fbf0893732f8a4d138d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 May 2021 18:40:32 +0200 Subject: [PATCH 2542/2595] Update https://ultralytics.com/images/zidane.jpg (#1759) --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 7a3c0e87..3f195830 100755 --- a/README.md +++ b/README.md @@ -120,12 +120,11 @@ import torch # Model model = torch.hub.load('ultralytics/yolov3', 'yolov3') # or 'yolov3_spp', 'yolov3_tiny' -# Images -dir = 'https://github.com/ultralytics/yolov3/raw/master/data/images/' -imgs = [dir + f for f in ('zidane.jpg', 'bus.jpg')] # batch of images +# Image +img = 'https://ultralytics.com/images/zidane.jpg' # Inference -results = model(imgs) +results = model(img) results.print() # or .show(), .save() ``` From 26cb451811b7aca5ddd069d03167c1db9b711a6b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 12 May 2021 19:50:15 +0200 Subject: [PATCH 2543/2595] Update README.md (#1760) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3f195830..faf5d299 100755 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ $ pip install -r requirements.txt * [Supervisely Ecosystem](https://github.com/ultralytics/yolov5/issues/2518)  🌟 NEW * [Multi-GPU Training](https://github.com/ultralytics/yolov5/issues/475) * [PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36)  ⭐ NEW -* [ONNX and TorchScript Export](https://github.com/ultralytics/yolov5/issues/251) +* [TorchScript, ONNX, CoreML Export](https://github.com/ultralytics/yolov5/issues/251) 🚀 * [Test-Time Augmentation (TTA)](https://github.com/ultralytics/yolov5/issues/303) * [Model Ensembling](https://github.com/ultralytics/yolov5/issues/318) * [Model Pruning/Sparsity](https://github.com/ultralytics/yolov5/issues/304) From 47ac6833cac21d1274f94907a010cff90fe2b064 Mon Sep 17 00:00:00 2001 From: Peretz Cohen Date: Thu, 27 May 2021 07:50:12 -0700 Subject: [PATCH 2544/2595] Add Open in Kaggle badge (#1773) * Update tutorial.ipynb add Open in Kaggle badge * Update tutorial.ipynb Open badge in same window * add space between badges * add space 2 * remove align left Co-authored-by: Glenn Jocher --- tutorial.ipynb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tutorial.ipynb b/tutorial.ipynb index b17aa25c..617c5c52 100644 --- a/tutorial.ipynb +++ b/tutorial.ipynb @@ -517,7 +517,8 @@ "colab_type": "text" }, "source": [ - "\"Open" + "\"Open", + "\"Kaggle\"" ] }, { @@ -1267,4 +1268,4 @@ "outputs": [] } ] -} \ No newline at end of file +} From 4d0c2e6eee14db122f2e0814de284b2dce1306b8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 30 May 2021 18:55:56 +0200 Subject: [PATCH 2545/2595] YOLOv5 v5.0 release compatibility update for YOLOv3 --- README.md | 2 +- data/GlobalWheat2020.yaml | 55 +++++++++ data/SKU-110K.yaml | 52 +++++++++ data/VisDrone.yaml | 61 ++++++++++ data/argoverse_hd.yaml | 4 +- data/coco.yaml | 4 +- data/coco128.yaml | 2 +- data/hyp.finetune_objects365.yaml | 28 +++++ data/objects365.yaml | 102 ++++++++++++++++ data/scripts/get_argoverse_hd.sh | 11 +- data/scripts/get_coco.sh | 2 +- data/scripts/get_coco128.sh | 17 +++ data/scripts/get_voc.sh | 113 ++++++++---------- data/voc.yaml | 2 +- detect.py | 52 +++++---- hubconf.py | 117 ++++++++----------- models/common.py | 51 ++++---- models/experimental.py | 16 +-- models/export.py | 137 ++++++++++++++-------- models/yolo.py | 113 +++++++++++------- requirements.txt | 5 +- test.py | 48 ++++---- train.py | 90 +++++++-------- utils/activations.py | 60 +++++++--- utils/autoanchor.py | 5 +- utils/aws/resume.py | 2 +- utils/aws/userdata.sh | 2 +- utils/datasets.py | 83 +++++++------ utils/flask_rest_api/README.md | 68 +++++++++++ utils/flask_rest_api/example_request.py | 13 +++ utils/flask_rest_api/restapi.py | 37 ++++++ utils/general.py | 147 +++++++++++++++++++----- utils/google_utils.py | 61 ++++++---- utils/metrics.py | 2 +- utils/plots.py | 67 ++++++----- utils/torch_utils.py | 13 ++- utils/wandb_logging/log_dataset.py | 4 +- utils/wandb_logging/wandb_utils.py | 72 +++++++----- 38 files changed, 1192 insertions(+), 528 deletions(-) create mode 100644 data/GlobalWheat2020.yaml create mode 100644 data/SKU-110K.yaml create mode 100644 data/VisDrone.yaml create mode 100644 data/hyp.finetune_objects365.yaml create mode 100644 data/objects365.yaml create mode 100644 data/scripts/get_coco128.sh create mode 100644 utils/flask_rest_api/README.md create mode 100644 utils/flask_rest_api/example_request.py create mode 100644 utils/flask_rest_api/restapi.py diff --git a/README.md b/README.md index faf5d299..257d0f64 100755 --- a/README.md +++ b/README.md @@ -113,7 +113,7 @@ $ python detect.py --source data/images --weights yolov3.pt --conf 0.25 ### PyTorch Hub -To run **batched inference** with YOLOv5 and [PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36): +To run **batched inference** with YOLOv3 and [PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36): ```python import torch diff --git a/data/GlobalWheat2020.yaml b/data/GlobalWheat2020.yaml new file mode 100644 index 00000000..ca2a49e2 --- /dev/null +++ b/data/GlobalWheat2020.yaml @@ -0,0 +1,55 @@ +# Global Wheat 2020 dataset http://www.global-wheat.com/ +# Train command: python train.py --data GlobalWheat2020.yaml +# Default dataset location is next to YOLOv3: +# /parent_folder +# /datasets/GlobalWheat2020 +# /yolov3 + + +# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/] +train: # 3422 images + - ../datasets/GlobalWheat2020/images/arvalis_1 + - ../datasets/GlobalWheat2020/images/arvalis_2 + - ../datasets/GlobalWheat2020/images/arvalis_3 + - ../datasets/GlobalWheat2020/images/ethz_1 + - ../datasets/GlobalWheat2020/images/rres_1 + - ../datasets/GlobalWheat2020/images/inrae_1 + - ../datasets/GlobalWheat2020/images/usask_1 + +val: # 748 images (WARNING: train set contains ethz_1) + - ../datasets/GlobalWheat2020/images/ethz_1 + +test: # 1276 images + - ../datasets/GlobalWheat2020/images/utokyo_1 + - ../datasets/GlobalWheat2020/images/utokyo_2 + - ../datasets/GlobalWheat2020/images/nau_1 + - ../datasets/GlobalWheat2020/images/uq_1 + +# number of classes +nc: 1 + +# class names +names: [ 'wheat_head' ] + + +# download command/URL (optional) -------------------------------------------------------------------------------------- +download: | + from utils.general import download, Path + + # Download + dir = Path('../datasets/GlobalWheat2020') # dataset directory + urls = ['https://zenodo.org/record/4298502/files/global-wheat-codalab-official.zip', + 'https://github.com/ultralytics/yolov5/releases/download/v1.0/GlobalWheat2020_labels.zip'] + download(urls, dir=dir) + + # Make Directories + for p in 'annotations', 'images', 'labels': + (dir / p).mkdir(parents=True, exist_ok=True) + + # Move + for p in 'arvalis_1', 'arvalis_2', 'arvalis_3', 'ethz_1', 'rres_1', 'inrae_1', 'usask_1', \ + 'utokyo_1', 'utokyo_2', 'nau_1', 'uq_1': + (dir / p).rename(dir / 'images' / p) # move to /images + f = (dir / p).with_suffix('.json') # json file + if f.exists(): + f.rename((dir / 'annotations' / p).with_suffix('.json')) # move to /annotations diff --git a/data/SKU-110K.yaml b/data/SKU-110K.yaml new file mode 100644 index 00000000..f4aea8b5 --- /dev/null +++ b/data/SKU-110K.yaml @@ -0,0 +1,52 @@ +# SKU-110K retail items dataset https://github.com/eg4000/SKU110K_CVPR19 +# Train command: python train.py --data SKU-110K.yaml +# Default dataset location is next to YOLOv3: +# /parent_folder +# /datasets/SKU-110K +# /yolov3 + + +# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/] +train: ../datasets/SKU-110K/train.txt # 8219 images +val: ../datasets/SKU-110K/val.txt # 588 images +test: ../datasets/SKU-110K/test.txt # 2936 images + +# number of classes +nc: 1 + +# class names +names: [ 'object' ] + + +# download command/URL (optional) -------------------------------------------------------------------------------------- +download: | + import shutil + from tqdm import tqdm + from utils.general import np, pd, Path, download, xyxy2xywh + + # Download + datasets = Path('../datasets') # download directory + urls = ['http://trax-geometry.s3.amazonaws.com/cvpr_challenge/SKU110K_fixed.tar.gz'] + download(urls, dir=datasets, delete=False) + + # Rename directories + dir = (datasets / 'SKU-110K') + if dir.exists(): + shutil.rmtree(dir) + (datasets / 'SKU110K_fixed').rename(dir) # rename dir + (dir / 'labels').mkdir(parents=True, exist_ok=True) # create labels dir + + # Convert labels + names = 'image', 'x1', 'y1', 'x2', 'y2', 'class', 'image_width', 'image_height' # column names + for d in 'annotations_train.csv', 'annotations_val.csv', 'annotations_test.csv': + x = pd.read_csv(dir / 'annotations' / d, names=names).values # annotations + images, unique_images = x[:, 0], np.unique(x[:, 0]) + with open((dir / d).with_suffix('.txt').__str__().replace('annotations_', ''), 'w') as f: + f.writelines(f'./images/{s}\n' for s in unique_images) + for im in tqdm(unique_images, desc=f'Converting {dir / d}'): + cls = 0 # single-class dataset + with open((dir / 'labels' / im).with_suffix('.txt'), 'a') as f: + for r in x[images == im]: + w, h = r[6], r[7] # image width, height + xywh = xyxy2xywh(np.array([[r[1] / w, r[2] / h, r[3] / w, r[4] / h]]))[0] # instance + f.write(f"{cls} {xywh[0]:.5f} {xywh[1]:.5f} {xywh[2]:.5f} {xywh[3]:.5f}\n") # write label diff --git a/data/VisDrone.yaml b/data/VisDrone.yaml new file mode 100644 index 00000000..59f1cd51 --- /dev/null +++ b/data/VisDrone.yaml @@ -0,0 +1,61 @@ +# VisDrone2019-DET dataset https://github.com/VisDrone/VisDrone-Dataset +# Train command: python train.py --data VisDrone.yaml +# Default dataset location is next to YOLOv3: +# /parent_folder +# /VisDrone +# /yolov3 + + +# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/] +train: ../VisDrone/VisDrone2019-DET-train/images # 6471 images +val: ../VisDrone/VisDrone2019-DET-val/images # 548 images +test: ../VisDrone/VisDrone2019-DET-test-dev/images # 1610 images + +# number of classes +nc: 10 + +# class names +names: [ 'pedestrian', 'people', 'bicycle', 'car', 'van', 'truck', 'tricycle', 'awning-tricycle', 'bus', 'motor' ] + + +# download command/URL (optional) -------------------------------------------------------------------------------------- +download: | + from utils.general import download, os, Path + + def visdrone2yolo(dir): + from PIL import Image + from tqdm import tqdm + + def convert_box(size, box): + # Convert VisDrone box to YOLO xywh box + dw = 1. / size[0] + dh = 1. / size[1] + return (box[0] + box[2] / 2) * dw, (box[1] + box[3] / 2) * dh, box[2] * dw, box[3] * dh + + (dir / 'labels').mkdir(parents=True, exist_ok=True) # make labels directory + pbar = tqdm((dir / 'annotations').glob('*.txt'), desc=f'Converting {dir}') + for f in pbar: + img_size = Image.open((dir / 'images' / f.name).with_suffix('.jpg')).size + lines = [] + with open(f, 'r') as file: # read annotation.txt + for row in [x.split(',') for x in file.read().strip().splitlines()]: + if row[4] == '0': # VisDrone 'ignored regions' class 0 + continue + cls = int(row[5]) - 1 + box = convert_box(img_size, tuple(map(int, row[:4]))) + lines.append(f"{cls} {' '.join(f'{x:.6f}' for x in box)}\n") + with open(str(f).replace(os.sep + 'annotations' + os.sep, os.sep + 'labels' + os.sep), 'w') as fl: + fl.writelines(lines) # write label.txt + + + # Download + dir = Path('../VisDrone') # dataset directory + urls = ['https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-train.zip', + 'https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-val.zip', + 'https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-test-dev.zip', + 'https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-test-challenge.zip'] + download(urls, dir=dir) + + # Convert + for d in 'VisDrone2019-DET-train', 'VisDrone2019-DET-val', 'VisDrone2019-DET-test-dev': + visdrone2yolo(dir / d) # convert VisDrone annotations to YOLO labels diff --git a/data/argoverse_hd.yaml b/data/argoverse_hd.yaml index df7a9361..29d49b88 100644 --- a/data/argoverse_hd.yaml +++ b/data/argoverse_hd.yaml @@ -1,9 +1,9 @@ # Argoverse-HD dataset (ring-front-center camera) http://www.cs.cmu.edu/~mengtial/proj/streaming/ # Train command: python train.py --data argoverse_hd.yaml -# Default dataset location is next to /yolov5: +# Default dataset location is next to YOLOv3: # /parent_folder # /argoverse -# /yolov5 +# /yolov3 # download command/URL (optional) diff --git a/data/coco.yaml b/data/coco.yaml index 1bc888e6..8714e6a3 100644 --- a/data/coco.yaml +++ b/data/coco.yaml @@ -1,6 +1,6 @@ # COCO 2017 dataset http://cocodataset.org # Train command: python train.py --data coco.yaml -# Default dataset location is next to /yolov3: +# Default dataset location is next to YOLOv3: # /parent_folder # /coco # /yolov3 @@ -30,6 +30,6 @@ names: [ 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', ' # Print classes # with open('data/coco.yaml') as f: -# d = yaml.load(f, Loader=yaml.FullLoader) # dict +# d = yaml.safe_load(f) # dict # for i, x in enumerate(d['names']): # print(i, x) diff --git a/data/coco128.yaml b/data/coco128.yaml index f9d4c960..ef1f6c62 100644 --- a/data/coco128.yaml +++ b/data/coco128.yaml @@ -1,6 +1,6 @@ # COCO 2017 dataset http://cocodataset.org - first 128 training images # Train command: python train.py --data coco128.yaml -# Default dataset location is next to /yolov3: +# Default dataset location is next to YOLOv3: # /parent_folder # /coco128 # /yolov3 diff --git a/data/hyp.finetune_objects365.yaml b/data/hyp.finetune_objects365.yaml new file mode 100644 index 00000000..2b104ef2 --- /dev/null +++ b/data/hyp.finetune_objects365.yaml @@ -0,0 +1,28 @@ +lr0: 0.00258 +lrf: 0.17 +momentum: 0.779 +weight_decay: 0.00058 +warmup_epochs: 1.33 +warmup_momentum: 0.86 +warmup_bias_lr: 0.0711 +box: 0.0539 +cls: 0.299 +cls_pw: 0.825 +obj: 0.632 +obj_pw: 1.0 +iou_t: 0.2 +anchor_t: 3.44 +anchors: 3.2 +fl_gamma: 0.0 +hsv_h: 0.0188 +hsv_s: 0.704 +hsv_v: 0.36 +degrees: 0.0 +translate: 0.0902 +scale: 0.491 +shear: 0.0 +perspective: 0.0 +flipud: 0.0 +fliplr: 0.5 +mosaic: 1.0 +mixup: 0.0 diff --git a/data/objects365.yaml b/data/objects365.yaml new file mode 100644 index 00000000..1cac32f4 --- /dev/null +++ b/data/objects365.yaml @@ -0,0 +1,102 @@ +# Objects365 dataset https://www.objects365.org/ +# Train command: python train.py --data objects365.yaml +# Default dataset location is next to YOLOv3: +# /parent_folder +# /datasets/objects365 +# /yolov3 + +# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/] +train: ../datasets/objects365/images/train # 1742289 images +val: ../datasets/objects365/images/val # 5570 images + +# number of classes +nc: 365 + +# class names +names: [ 'Person', 'Sneakers', 'Chair', 'Other Shoes', 'Hat', 'Car', 'Lamp', 'Glasses', 'Bottle', 'Desk', 'Cup', + 'Street Lights', 'Cabinet/shelf', 'Handbag/Satchel', 'Bracelet', 'Plate', 'Picture/Frame', 'Helmet', 'Book', + 'Gloves', 'Storage box', 'Boat', 'Leather Shoes', 'Flower', 'Bench', 'Potted Plant', 'Bowl/Basin', 'Flag', + 'Pillow', 'Boots', 'Vase', 'Microphone', 'Necklace', 'Ring', 'SUV', 'Wine Glass', 'Belt', 'Monitor/TV', + 'Backpack', 'Umbrella', 'Traffic Light', 'Speaker', 'Watch', 'Tie', 'Trash bin Can', 'Slippers', 'Bicycle', + 'Stool', 'Barrel/bucket', 'Van', 'Couch', 'Sandals', 'Basket', 'Drum', 'Pen/Pencil', 'Bus', 'Wild Bird', + 'High Heels', 'Motorcycle', 'Guitar', 'Carpet', 'Cell Phone', 'Bread', 'Camera', 'Canned', 'Truck', + 'Traffic cone', 'Cymbal', 'Lifesaver', 'Towel', 'Stuffed Toy', 'Candle', 'Sailboat', 'Laptop', 'Awning', + 'Bed', 'Faucet', 'Tent', 'Horse', 'Mirror', 'Power outlet', 'Sink', 'Apple', 'Air Conditioner', 'Knife', + 'Hockey Stick', 'Paddle', 'Pickup Truck', 'Fork', 'Traffic Sign', 'Balloon', 'Tripod', 'Dog', 'Spoon', 'Clock', + 'Pot', 'Cow', 'Cake', 'Dinning Table', 'Sheep', 'Hanger', 'Blackboard/Whiteboard', 'Napkin', 'Other Fish', + 'Orange/Tangerine', 'Toiletry', 'Keyboard', 'Tomato', 'Lantern', 'Machinery Vehicle', 'Fan', + 'Green Vegetables', 'Banana', 'Baseball Glove', 'Airplane', 'Mouse', 'Train', 'Pumpkin', 'Soccer', 'Skiboard', + 'Luggage', 'Nightstand', 'Tea pot', 'Telephone', 'Trolley', 'Head Phone', 'Sports Car', 'Stop Sign', + 'Dessert', 'Scooter', 'Stroller', 'Crane', 'Remote', 'Refrigerator', 'Oven', 'Lemon', 'Duck', 'Baseball Bat', + 'Surveillance Camera', 'Cat', 'Jug', 'Broccoli', 'Piano', 'Pizza', 'Elephant', 'Skateboard', 'Surfboard', + 'Gun', 'Skating and Skiing shoes', 'Gas stove', 'Donut', 'Bow Tie', 'Carrot', 'Toilet', 'Kite', 'Strawberry', + 'Other Balls', 'Shovel', 'Pepper', 'Computer Box', 'Toilet Paper', 'Cleaning Products', 'Chopsticks', + 'Microwave', 'Pigeon', 'Baseball', 'Cutting/chopping Board', 'Coffee Table', 'Side Table', 'Scissors', + 'Marker', 'Pie', 'Ladder', 'Snowboard', 'Cookies', 'Radiator', 'Fire Hydrant', 'Basketball', 'Zebra', 'Grape', + 'Giraffe', 'Potato', 'Sausage', 'Tricycle', 'Violin', 'Egg', 'Fire Extinguisher', 'Candy', 'Fire Truck', + 'Billiards', 'Converter', 'Bathtub', 'Wheelchair', 'Golf Club', 'Briefcase', 'Cucumber', 'Cigar/Cigarette', + 'Paint Brush', 'Pear', 'Heavy Truck', 'Hamburger', 'Extractor', 'Extension Cord', 'Tong', 'Tennis Racket', + 'Folder', 'American Football', 'earphone', 'Mask', 'Kettle', 'Tennis', 'Ship', 'Swing', 'Coffee Machine', + 'Slide', 'Carriage', 'Onion', 'Green beans', 'Projector', 'Frisbee', 'Washing Machine/Drying Machine', + 'Chicken', 'Printer', 'Watermelon', 'Saxophone', 'Tissue', 'Toothbrush', 'Ice cream', 'Hot-air balloon', + 'Cello', 'French Fries', 'Scale', 'Trophy', 'Cabbage', 'Hot dog', 'Blender', 'Peach', 'Rice', 'Wallet/Purse', + 'Volleyball', 'Deer', 'Goose', 'Tape', 'Tablet', 'Cosmetics', 'Trumpet', 'Pineapple', 'Golf Ball', + 'Ambulance', 'Parking meter', 'Mango', 'Key', 'Hurdle', 'Fishing Rod', 'Medal', 'Flute', 'Brush', 'Penguin', + 'Megaphone', 'Corn', 'Lettuce', 'Garlic', 'Swan', 'Helicopter', 'Green Onion', 'Sandwich', 'Nuts', + 'Speed Limit Sign', 'Induction Cooker', 'Broom', 'Trombone', 'Plum', 'Rickshaw', 'Goldfish', 'Kiwi fruit', + 'Router/modem', 'Poker Card', 'Toaster', 'Shrimp', 'Sushi', 'Cheese', 'Notepaper', 'Cherry', 'Pliers', 'CD', + 'Pasta', 'Hammer', 'Cue', 'Avocado', 'Hamimelon', 'Flask', 'Mushroom', 'Screwdriver', 'Soap', 'Recorder', + 'Bear', 'Eggplant', 'Board Eraser', 'Coconut', 'Tape Measure/Ruler', 'Pig', 'Showerhead', 'Globe', 'Chips', + 'Steak', 'Crosswalk Sign', 'Stapler', 'Camel', 'Formula 1', 'Pomegranate', 'Dishwasher', 'Crab', + 'Hoverboard', 'Meat ball', 'Rice Cooker', 'Tuba', 'Calculator', 'Papaya', 'Antelope', 'Parrot', 'Seal', + 'Butterfly', 'Dumbbell', 'Donkey', 'Lion', 'Urinal', 'Dolphin', 'Electric Drill', 'Hair Dryer', 'Egg tart', + 'Jellyfish', 'Treadmill', 'Lighter', 'Grapefruit', 'Game board', 'Mop', 'Radish', 'Baozi', 'Target', 'French', + 'Spring Rolls', 'Monkey', 'Rabbit', 'Pencil Case', 'Yak', 'Red Cabbage', 'Binoculars', 'Asparagus', 'Barbell', + 'Scallop', 'Noddles', 'Comb', 'Dumpling', 'Oyster', 'Table Tennis paddle', 'Cosmetics Brush/Eyeliner Pencil', + 'Chainsaw', 'Eraser', 'Lobster', 'Durian', 'Okra', 'Lipstick', 'Cosmetics Mirror', 'Curling', 'Table Tennis' ] + + +# download command/URL (optional) -------------------------------------------------------------------------------------- +download: | + from pycocotools.coco import COCO + from tqdm import tqdm + + from utils.general import download, Path + + # Make Directories + dir = Path('../datasets/objects365') # dataset directory + for p in 'images', 'labels': + (dir / p).mkdir(parents=True, exist_ok=True) + for q in 'train', 'val': + (dir / p / q).mkdir(parents=True, exist_ok=True) + + # Download + url = "https://dorc.ks3-cn-beijing.ksyun.com/data-set/2020Objects365%E6%95%B0%E6%8D%AE%E9%9B%86/train/" + download([url + 'zhiyuan_objv2_train.tar.gz'], dir=dir, delete=False) # annotations json + download([url + f for f in [f'patch{i}.tar.gz' for i in range(51)]], dir=dir / 'images' / 'train', + curl=True, delete=False, threads=8) + + # Move + train = dir / 'images' / 'train' + for f in tqdm(train.rglob('*.jpg'), desc=f'Moving images'): + f.rename(train / f.name) # move to /images/train + + # Labels + coco = COCO(dir / 'zhiyuan_objv2_train.json') + names = [x["name"] for x in coco.loadCats(coco.getCatIds())] + for cid, cat in enumerate(names): + catIds = coco.getCatIds(catNms=[cat]) + imgIds = coco.getImgIds(catIds=catIds) + for im in tqdm(coco.loadImgs(imgIds), desc=f'Class {cid + 1}/{len(names)} {cat}'): + width, height = im["width"], im["height"] + path = Path(im["file_name"]) # image filename + try: + with open(dir / 'labels' / 'train' / path.with_suffix('.txt').name, 'a') as file: + annIds = coco.getAnnIds(imgIds=im["id"], catIds=catIds, iscrowd=None) + for a in coco.loadAnns(annIds): + x, y, w, h = a['bbox'] # bounding box in xywh (xy top-left corner) + x, y = x + w / 2, y + h / 2 # xy to center + file.write(f"{cid} {x / width:.5f} {y / height:.5f} {w / width:.5f} {h / height:.5f}\n") + + except Exception as e: + print(e) diff --git a/data/scripts/get_argoverse_hd.sh b/data/scripts/get_argoverse_hd.sh index caec61ef..ad369768 100644 --- a/data/scripts/get_argoverse_hd.sh +++ b/data/scripts/get_argoverse_hd.sh @@ -2,10 +2,10 @@ # Argoverse-HD dataset (ring-front-center camera) http://www.cs.cmu.edu/~mengtial/proj/streaming/ # Download command: bash data/scripts/get_argoverse_hd.sh # Train command: python train.py --data argoverse_hd.yaml -# Default dataset location is next to /yolov5: +# Default dataset location is next to YOLOv3: # /parent_folder # /argoverse -# /yolov5 +# /yolov3 # Download/unzip images d='../argoverse/' # unzip directory @@ -25,7 +25,7 @@ import json from pathlib import Path annotation_files = ["train.json", "val.json"] -print("Converting annotations to YOLOv5 format...") +print("Converting annotations to YOLOv3 format...") for val in annotation_files: a = json.load(open(val, "rb")) @@ -36,7 +36,7 @@ for val in annotation_files: img_name = a['images'][img_id]['name'] img_label_name = img_name[:-3] + "txt" - obj_class = annot['category_id'] + cls = annot['category_id'] # instance class id x_center, y_center, width, height = annot['bbox'] x_center = (x_center + width / 2) / 1920. # offset and scale y_center = (y_center + height / 2) / 1200. # offset and scale @@ -46,11 +46,10 @@ for val in annotation_files: img_dir = "./labels/" + a['seq_dirs'][a['images'][annot['image_id']]['sid']] Path(img_dir).mkdir(parents=True, exist_ok=True) - if img_dir + "/" + img_label_name not in label_dict: label_dict[img_dir + "/" + img_label_name] = [] - label_dict[img_dir + "/" + img_label_name].append(f"{obj_class} {x_center} {y_center} {width} {height}\n") + label_dict[img_dir + "/" + img_label_name].append(f"{cls} {x_center} {y_center} {width} {height}\n") for filename in label_dict: with open(filename, "w") as file: diff --git a/data/scripts/get_coco.sh b/data/scripts/get_coco.sh index b39a7821..310f5be5 100755 --- a/data/scripts/get_coco.sh +++ b/data/scripts/get_coco.sh @@ -2,7 +2,7 @@ # COCO 2017 dataset http://cocodataset.org # Download command: bash data/scripts/get_coco.sh # Train command: python train.py --data coco.yaml -# Default dataset location is next to /yolov3: +# Default dataset location is next to YOLOv3: # /parent_folder # /coco # /yolov3 diff --git a/data/scripts/get_coco128.sh b/data/scripts/get_coco128.sh new file mode 100644 index 00000000..721c15c3 --- /dev/null +++ b/data/scripts/get_coco128.sh @@ -0,0 +1,17 @@ +#!/bin/bash +# COCO128 dataset https://www.kaggle.com/ultralytics/coco128 +# Download command: bash data/scripts/get_coco128.sh +# Train command: python train.py --data coco128.yaml +# Default dataset location is next to YOLOv3: +# /parent_folder +# /coco128 +# /yolov3 + +# Download/unzip images and labels +d='../' # unzip directory +url=https://github.com/ultralytics/yolov5/releases/download/v1.0/ +f='coco128.zip' # or 'coco2017labels-segments.zip', 68 MB +echo 'Downloading' $url$f ' ...' +curl -L $url$f -o $f && unzip -q $f -d $d && rm $f & # download, unzip, remove in background + +wait # finish background tasks diff --git a/data/scripts/get_voc.sh b/data/scripts/get_voc.sh index 13b83c28..28cf007e 100644 --- a/data/scripts/get_voc.sh +++ b/data/scripts/get_voc.sh @@ -2,10 +2,10 @@ # PASCAL VOC dataset http://host.robots.ox.ac.uk/pascal/VOC/ # Download command: bash data/scripts/get_voc.sh # Train command: python train.py --data voc.yaml -# Default dataset location is next to /yolov5: +# Default dataset location is next to YOLOv3: # /parent_folder # /VOC -# /yolov5 +# /yolov3 start=$(date +%s) mkdir -p ../tmp @@ -29,34 +29,27 @@ echo "Completed in" $runtime "seconds" echo "Splitting dataset..." python3 - "$@" <train.txt cat 2007_train.txt 2007_val.txt 2007_test.txt 2012_train.txt 2012_val.txt >train.all.txt +mkdir ../VOC ../VOC/images ../VOC/images/train ../VOC/images/val +mkdir ../VOC/labels ../VOC/labels/train ../VOC/labels/val + python3 - "$@" <= 1 - p, s, im0, frame = path[i], '%g: ' % i, im0s[i].copy(), dataset.count + p, s, im0, frame = path[i], f'{i}: ', im0s[i].copy(), dataset.count else: - p, s, im0, frame = path, '', im0s, getattr(dataset, 'frame', 0) + p, s, im0, frame = path, '', im0s.copy(), getattr(dataset, 'frame', 0) p = Path(p) # to Path save_path = str(save_dir / p.name) # img.jpg txt_path = str(save_dir / 'labels' / p.stem) + ('' if dataset.mode == 'image' else f'_{frame}') # img.txt s += '%gx%g ' % img.shape[2:] # print string gn = torch.tensor(im0.shape)[[1, 0, 1, 0]] # normalization gain whwh + imc = im0.copy() if opt.save_crop else im0 # for opt.save_crop if len(det): # Rescale boxes from img_size to im0 size det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round() @@ -108,9 +107,12 @@ def detect(save_img=False): with open(txt_path + '.txt', 'a') as f: f.write(('%g ' * len(line)).rstrip() % line + '\n') - if save_img or view_img: # Add bbox to image - label = f'{names[int(cls)]} {conf:.2f}' - plot_one_box(xyxy, im0, label=label, color=colors[int(cls)], line_thickness=3) + if save_img or opt.save_crop or view_img: # Add bbox to image + c = int(cls) # integer class + label = None if opt.hide_labels else (names[c] if opt.hide_conf else f'{names[c]} {conf:.2f}') + plot_one_box(xyxy, im0, label=label, color=colors(c, True), line_thickness=opt.line_thickness) + if opt.save_crop: + save_one_box(xyxy, imc, file=save_dir / 'crops' / names[c] / f'{p.stem}.jpg', BGR=True) # Print time (inference + NMS) print(f'{s}Done. ({t2 - t1:.3f}s)') @@ -153,10 +155,12 @@ if __name__ == '__main__': parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.25, help='object confidence threshold') parser.add_argument('--iou-thres', type=float, default=0.45, help='IOU threshold for NMS') + parser.add_argument('--max-det', type=int, default=1000, help='maximum number of detections per image') parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') parser.add_argument('--view-img', action='store_true', help='display results') parser.add_argument('--save-txt', action='store_true', help='save results to *.txt') parser.add_argument('--save-conf', action='store_true', help='save confidences in --save-txt labels') + parser.add_argument('--save-crop', action='store_true', help='save cropped prediction boxes') parser.add_argument('--nosave', action='store_true', help='do not save images/videos') parser.add_argument('--classes', nargs='+', type=int, help='filter by class: --class 0, or --class 0 2 3') parser.add_argument('--agnostic-nms', action='store_true', help='class-agnostic NMS') @@ -165,14 +169,16 @@ if __name__ == '__main__': parser.add_argument('--project', default='runs/detect', help='save results to project/name') parser.add_argument('--name', default='exp', help='save results to project/name') parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment') + parser.add_argument('--line-thickness', default=3, type=int, help='bounding box thickness (pixels)') + parser.add_argument('--hide-labels', default=False, action='store_true', help='hide labels') + parser.add_argument('--hide-conf', default=False, action='store_true', help='hide confidences') opt = parser.parse_args() print(opt) - check_requirements(exclude=('pycocotools', 'thop')) + check_requirements(exclude=('tensorboard', 'pycocotools', 'thop')) - with torch.no_grad(): - if opt.update: # update all models (to fix SourceChangeWarning) - for opt.weights in ['yolov3.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt']: - detect() - strip_optimizer(opt.weights) - else: - detect() + if opt.update: # update all models (to fix SourceChangeWarning) + for opt.weights in ['yolov3.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt']: + detect(opt=opt) + strip_optimizer(opt.weights) + else: + detect(opt=opt) diff --git a/hubconf.py b/hubconf.py index 7d969b5a..683e22f7 100644 --- a/hubconf.py +++ b/hubconf.py @@ -2,24 +2,13 @@ Usage: import torch - model = torch.hub.load('ultralytics/yolov3', 'yolov3tiny') + model = torch.hub.load('ultralytics/yolov3', 'yolov3_tiny') """ -from pathlib import Path - import torch -from models.yolo import Model -from utils.general import check_requirements, set_logging -from utils.google_utils import attempt_download -from utils.torch_utils import select_device -dependencies = ['torch', 'yaml'] -check_requirements(Path(__file__).parent / 'requirements.txt', exclude=('pycocotools', 'thop')) -set_logging() - - -def create(name, pretrained, channels, classes, autoshape): +def _create(name, pretrained=True, channels=3, classes=80, autoshape=True, verbose=True, device=None): """Creates a specified YOLOv3 model Arguments: @@ -27,85 +16,81 @@ def create(name, pretrained, channels, classes, autoshape): pretrained (bool): load pretrained weights into the model channels (int): number of input channels classes (int): number of model classes + autoshape (bool): apply YOLOv3 .autoshape() wrapper to model + verbose (bool): print all information to screen + device (str, torch.device, None): device to use for model parameters Returns: - pytorch model + YOLOv3 pytorch model """ + from pathlib import Path + + from models.yolo import Model, attempt_load + from utils.general import check_requirements, set_logging + from utils.google_utils import attempt_download + from utils.torch_utils import select_device + + check_requirements(Path(__file__).parent / 'requirements.txt', exclude=('tensorboard', 'pycocotools', 'thop')) + set_logging(verbose=verbose) + + fname = Path(name).with_suffix('.pt') # checkpoint filename try: - cfg = list((Path(__file__).parent / 'models').rglob(f'{name}.yaml'))[0] # model.yaml path - model = Model(cfg, channels, classes) - if pretrained: - fname = f'{name}.pt' # checkpoint filename - attempt_download(fname) # download if not found locally - ckpt = torch.load(fname, map_location=torch.device('cpu')) # load - msd = model.state_dict() # model state_dict - csd = ckpt['model'].float().state_dict() # checkpoint state_dict as FP32 - csd = {k: v for k, v in csd.items() if msd[k].shape == v.shape} # filter - model.load_state_dict(csd, strict=False) # load - if len(ckpt['model'].names) == classes: - model.names = ckpt['model'].names # set class names attribute - if autoshape: - model = model.autoshape() # for file/URI/PIL/cv2/np inputs and NMS - device = select_device('0' if torch.cuda.is_available() else 'cpu') # default to GPU if available + if pretrained and channels == 3 and classes == 80: + model = attempt_load(fname, map_location=torch.device('cpu')) # download/load FP32 model + else: + cfg = list((Path(__file__).parent / 'models').rglob(f'{name}.yaml'))[0] # model.yaml path + model = Model(cfg, channels, classes) # create model + if pretrained: + ckpt = torch.load(attempt_download(fname), map_location=torch.device('cpu')) # load + msd = model.state_dict() # model state_dict + csd = ckpt['model'].float().state_dict() # checkpoint state_dict as FP32 + csd = {k: v for k, v in csd.items() if msd[k].shape == v.shape} # filter + model.load_state_dict(csd, strict=False) # load + if len(ckpt['model'].names) == classes: + model.names = ckpt['model'].names # set class names attribute + if autoshape: + model = model.autoshape() # for file/URI/PIL/cv2/np inputs and NMS + device = select_device('0' if torch.cuda.is_available() else 'cpu') if device is None else torch.device(device) return model.to(device) except Exception as e: help_url = 'https://github.com/ultralytics/yolov5/issues/36' - s = 'Cache maybe be out of date, try force_reload=True. See %s for help.' % help_url + s = 'Cache may be out of date, try `force_reload=True`. See %s for help.' % help_url raise Exception(s) from e -def custom(path_or_model='path/to/model.pt', autoshape=True): - """YOLOv3-custom model https://github.com/ultralytics/yolov3 - - Arguments (3 options): - path_or_model (str): 'path/to/model.pt' - path_or_model (dict): torch.load('path/to/model.pt') - path_or_model (nn.Module): torch.load('path/to/model.pt')['model'] - - Returns: - pytorch model - """ - model = torch.load(path_or_model) if isinstance(path_or_model, str) else path_or_model # load checkpoint - if isinstance(model, dict): - model = model['ema' if model.get('ema') else 'model'] # load model - - hub_model = Model(model.yaml).to(next(model.parameters()).device) # create - hub_model.load_state_dict(model.float().state_dict()) # load state_dict - hub_model.names = model.names # class names - if autoshape: - hub_model = hub_model.autoshape() # for file/URI/PIL/cv2/np inputs and NMS - device = select_device('0' if torch.cuda.is_available() else 'cpu') # default to GPU if available - return hub_model.to(device) +def custom(path='path/to/model.pt', autoshape=True, verbose=True, device=None): + # YOLOv3 custom or local model + return _create(path, autoshape=autoshape, verbose=verbose, device=device) -def yolov3(pretrained=True, channels=3, classes=80, autoshape=True): +def yolov3(pretrained=True, channels=3, classes=80, autoshape=True, verbose=True, device=None): # YOLOv3 model https://github.com/ultralytics/yolov3 - return create('yolov3', pretrained, channels, classes, autoshape) + return _create('yolov3', pretrained, channels, classes, autoshape, verbose, device) - -def yolov3_spp(pretrained=True, channels=3, classes=80, autoshape=True): +def yolov3_spp(pretrained=True, channels=3, classes=80, autoshape=True, verbose=True, device=None): # YOLOv3-SPP model https://github.com/ultralytics/yolov3 - return create('yolov3-spp', pretrained, channels, classes, autoshape) + return _create('yolov3-spp', pretrained, channels, classes, autoshape, verbose, device) - -def yolov3_tiny(pretrained=True, channels=3, classes=80, autoshape=True): +def yolov3_tiny(pretrained=True, channels=3, classes=80, autoshape=True, verbose=True, device=None): # YOLOv3-tiny model https://github.com/ultralytics/yolov3 - return create('yolov3-tiny', pretrained, channels, classes, autoshape) + return _create('yolov3-tiny', pretrained, channels, classes, autoshape, verbose, device) if __name__ == '__main__': - model = create(name='yolov3', pretrained=True, channels=3, classes=80, autoshape=True) # pretrained example - # model = custom(path_or_model='path/to/model.pt') # custom example + model = _create(name='yolov3', pretrained=True, channels=3, classes=80, autoshape=True, verbose=True) # pretrained + # model = custom(path='path/to/model.pt') # custom # Verify inference + import cv2 import numpy as np from PIL import Image - imgs = [Image.open('data/images/bus.jpg'), # PIL - 'data/images/zidane.jpg', # filename - 'https://github.com/ultralytics/yolov3/raw/master/data/images/bus.jpg', # URI - np.zeros((640, 480, 3))] # numpy + imgs = ['data/images/zidane.jpg', # filename + 'https://github.com/ultralytics/yolov5/releases/download/v1.0/zidane.jpg', # URI + cv2.imread('data/images/bus.jpg')[:, :, ::-1], # OpenCV + Image.open('data/images/bus.jpg'), # PIL + np.zeros((320, 640, 3))] # numpy results = model(imgs) # batched inference results.print() diff --git a/models/common.py b/models/common.py index 9496b1b4..0b4e6004 100644 --- a/models/common.py +++ b/models/common.py @@ -13,8 +13,8 @@ from PIL import Image from torch.cuda import amp from utils.datasets import letterbox -from utils.general import non_max_suppression, make_divisible, scale_coords, increment_path, xyxy2xywh -from utils.plots import color_list, plot_one_box +from utils.general import non_max_suppression, make_divisible, scale_coords, increment_path, xyxy2xywh, save_one_box +from utils.plots import colors, plot_one_box from utils.torch_utils import time_synchronized @@ -215,32 +215,34 @@ class NMS(nn.Module): conf = 0.25 # confidence threshold iou = 0.45 # IoU threshold classes = None # (optional list) filter by class + max_det = 1000 # maximum number of detections per image def __init__(self): super(NMS, self).__init__() def forward(self, x): - return non_max_suppression(x[0], conf_thres=self.conf, iou_thres=self.iou, classes=self.classes) + return non_max_suppression(x[0], self.conf, iou_thres=self.iou, classes=self.classes, max_det=self.max_det) -class autoShape(nn.Module): +class AutoShape(nn.Module): # input-robust model wrapper for passing cv2/np/PIL/torch inputs. Includes preprocessing, inference and NMS conf = 0.25 # NMS confidence threshold iou = 0.45 # NMS IoU threshold classes = None # (optional list) filter by class + max_det = 1000 # maximum number of detections per image def __init__(self, model): - super(autoShape, self).__init__() + super(AutoShape, self).__init__() self.model = model.eval() def autoshape(self): - print('autoShape already enabled, skipping... ') # model already converted to model.autoshape() + print('AutoShape already enabled, skipping... ') # model already converted to model.autoshape() return self @torch.no_grad() def forward(self, imgs, size=640, augment=False, profile=False): # Inference from various sources. For height=640, width=1280, RGB images example inputs are: - # filename: imgs = 'data/samples/zidane.jpg' + # filename: imgs = 'data/images/zidane.jpg' # URI: = 'https://github.com/ultralytics/yolov5/releases/download/v1.0/zidane.jpg' # OpenCV: = cv2.imread('image.jpg')[:,:,::-1] # HWC BGR to RGB x(640,1280,3) # PIL: = Image.open('image.jpg') # HWC x(640,1280,3) @@ -271,7 +273,7 @@ class autoShape(nn.Module): shape0.append(s) # image shape g = (size / max(s)) # gain shape1.append([y * g for y in s]) - imgs[i] = im # update + imgs[i] = im if im.data.contiguous else np.ascontiguousarray(im) # update shape1 = [make_divisible(x, int(self.stride.max())) for x in np.stack(shape1, 0).max(0)] # inference shape x = [letterbox(im, new_shape=shape1, auto=False)[0] for im in imgs] # pad x = np.stack(x, 0) if n > 1 else x[0][None] # stack @@ -285,7 +287,7 @@ class autoShape(nn.Module): t.append(time_synchronized()) # Post-process - y = non_max_suppression(y, conf_thres=self.conf, iou_thres=self.iou, classes=self.classes) # NMS + y = non_max_suppression(y, self.conf, iou_thres=self.iou, classes=self.classes, max_det=self.max_det) # NMS for i in range(n): scale_coords(shape1, y[i][:, :4], shape0[i]) @@ -311,29 +313,32 @@ class Detections: self.t = tuple((times[i + 1] - times[i]) * 1000 / self.n for i in range(3)) # timestamps (ms) self.s = shape # inference BCHW shape - def display(self, pprint=False, show=False, save=False, render=False, save_dir=''): - colors = color_list() - for i, (img, pred) in enumerate(zip(self.imgs, self.pred)): - str = f'image {i + 1}/{len(self.pred)}: {img.shape[0]}x{img.shape[1]} ' + def display(self, pprint=False, show=False, save=False, crop=False, render=False, save_dir=Path('')): + for i, (im, pred) in enumerate(zip(self.imgs, self.pred)): + str = f'image {i + 1}/{len(self.pred)}: {im.shape[0]}x{im.shape[1]} ' if pred is not None: for c in pred[:, -1].unique(): n = (pred[:, -1] == c).sum() # detections per class str += f"{n} {self.names[int(c)]}{'s' * (n > 1)}, " # add to string - if show or save or render: + if show or save or render or crop: for *box, conf, cls in pred: # xyxy, confidence, class label = f'{self.names[int(cls)]} {conf:.2f}' - plot_one_box(box, img, label=label, color=colors[int(cls) % 10]) - img = Image.fromarray(img.astype(np.uint8)) if isinstance(img, np.ndarray) else img # from np + if crop: + save_one_box(box, im, file=save_dir / 'crops' / self.names[int(cls)] / self.files[i]) + else: # all others + plot_one_box(box, im, label=label, color=colors(cls)) + + im = Image.fromarray(im.astype(np.uint8)) if isinstance(im, np.ndarray) else im # from np if pprint: print(str.rstrip(', ')) if show: - img.show(self.files[i]) # show + im.show(self.files[i]) # show if save: f = self.files[i] - img.save(Path(save_dir) / f) # save + im.save(save_dir / f) # save print(f"{'Saved' * (i == 0)} {f}", end=',' if i < self.n - 1 else f' to {save_dir}\n') if render: - self.imgs[i] = np.asarray(img) + self.imgs[i] = np.asarray(im) def print(self): self.display(pprint=True) # print results @@ -343,10 +348,14 @@ class Detections: self.display(show=True) # show results def save(self, save_dir='runs/hub/exp'): - save_dir = increment_path(save_dir, exist_ok=save_dir != 'runs/hub/exp') # increment save_dir - Path(save_dir).mkdir(parents=True, exist_ok=True) + save_dir = increment_path(save_dir, exist_ok=save_dir != 'runs/hub/exp', mkdir=True) # increment save_dir self.display(save=True, save_dir=save_dir) # save results + def crop(self, save_dir='runs/hub/exp'): + save_dir = increment_path(save_dir, exist_ok=save_dir != 'runs/hub/exp', mkdir=True) # increment save_dir + self.display(crop=True, save_dir=save_dir) # crop results + print(f'Saved results to {save_dir}\n') + def render(self): self.display(render=True) # render results return self.imgs diff --git a/models/experimental.py b/models/experimental.py index 62279154..867c8db5 100644 --- a/models/experimental.py +++ b/models/experimental.py @@ -110,25 +110,27 @@ class Ensemble(nn.ModuleList): return y, None # inference, train output -def attempt_load(weights, map_location=None): +def attempt_load(weights, map_location=None, inplace=True): + from models.yolo import Detect, Model + # Loads an ensemble of models weights=[a,b,c] or a single model weights=[a] or weights=a model = Ensemble() for w in weights if isinstance(weights, list) else [weights]: - attempt_download(w) - ckpt = torch.load(w, map_location=map_location) # load + ckpt = torch.load(attempt_download(w), map_location=map_location) # load model.append(ckpt['ema' if ckpt.get('ema') else 'model'].float().fuse().eval()) # FP32 model # Compatibility updates for m in model.modules(): - if type(m) in [nn.Hardswish, nn.LeakyReLU, nn.ReLU, nn.ReLU6, nn.SiLU]: - m.inplace = True # pytorch 1.7.0 compatibility + if type(m) in [nn.Hardswish, nn.LeakyReLU, nn.ReLU, nn.ReLU6, nn.SiLU, Detect, Model]: + m.inplace = inplace # pytorch 1.7.0 compatibility elif type(m) is Conv: m._non_persistent_buffers_set = set() # pytorch 1.6.0 compatibility if len(model) == 1: return model[-1] # return model else: - print('Ensemble created with %s\n' % weights) - for k in ['names', 'stride']: + print(f'Ensemble created with {weights}\n') + for k in ['names']: setattr(model, k, getattr(model[-1], k)) + model.stride = model[torch.argmax(torch.tensor([m.stride.max() for m in model])).int()].stride # max stride return model # return ensemble diff --git a/models/export.py b/models/export.py index 99189601..8da43b3a 100644 --- a/models/export.py +++ b/models/export.py @@ -1,34 +1,43 @@ -"""Exports a YOLOv3 *.pt model to ONNX and TorchScript formats +"""Exports a YOLOv3 *.pt model to TorchScript, ONNX, CoreML formats Usage: - $ export PYTHONPATH="$PWD" && python models/export.py --weights ./weights/yolov3.pt --img 640 --batch 1 + $ python path/to/models/export.py --weights yolov3.pt --img 640 --batch 1 """ import argparse import sys import time +from pathlib import Path -sys.path.append('./') # to run '$ python *.py' files in subdirectories +sys.path.append(Path(__file__).parent.parent.absolute().__str__()) # to run '$ python *.py' files in subdirectories import torch import torch.nn as nn +from torch.utils.mobile_optimizer import optimize_for_mobile import models from models.experimental import attempt_load from utils.activations import Hardswish, SiLU -from utils.general import set_logging, check_img_size +from utils.general import colorstr, check_img_size, check_requirements, file_size, set_logging from utils.torch_utils import select_device if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument('--weights', type=str, default='./yolov3.pt', help='weights path') # from yolov3/models/ + parser.add_argument('--weights', type=str, default='./yolov3.pt', help='weights path') parser.add_argument('--img-size', nargs='+', type=int, default=[640, 640], help='image size') # height, width parser.add_argument('--batch-size', type=int, default=1, help='batch size') - parser.add_argument('--dynamic', action='store_true', help='dynamic ONNX axes') - parser.add_argument('--grid', action='store_true', help='export Detect() layer grid') parser.add_argument('--device', default='cpu', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') + parser.add_argument('--include', nargs='+', default=['torchscript', 'onnx', 'coreml'], help='include formats') + parser.add_argument('--half', action='store_true', help='FP16 half-precision export') + parser.add_argument('--inplace', action='store_true', help='set YOLOv3 Detect() inplace=True') + parser.add_argument('--train', action='store_true', help='model.train() mode') + parser.add_argument('--optimize', action='store_true', help='optimize TorchScript for mobile') # TorchScript-only + parser.add_argument('--dynamic', action='store_true', help='dynamic ONNX axes') # ONNX-only + parser.add_argument('--simplify', action='store_true', help='simplify ONNX model') # ONNX-only + parser.add_argument('--opset-version', type=int, default=12, help='ONNX opset version') # ONNX-only opt = parser.parse_args() opt.img_size *= 2 if len(opt.img_size) == 1 else 1 # expand + opt.include = [x.lower() for x in opt.include] print(opt) set_logging() t = time.time() @@ -41,11 +50,16 @@ if __name__ == '__main__': # Checks gs = int(max(model.stride)) # grid size (max stride) opt.img_size = [check_img_size(x, gs) for x in opt.img_size] # verify img_size are gs-multiples + assert not (opt.device.lower() == 'cpu' and opt.half), '--half only compatible with GPU export, i.e. use --device 0' # Input img = torch.zeros(opt.batch_size, 3, *opt.img_size).to(device) # image size(1,3,320,192) iDetection # Update model + if opt.half: + img, model = img.half(), model.half() # to FP16 + if opt.train: + model.train() # training mode (no grid construction in Detect layer) for k, m in model.named_modules(): m._non_persistent_buffers_set = set() # pytorch 1.6.0 compatibility if isinstance(m, models.common.Conv): # assign export-friendly activations @@ -53,52 +67,79 @@ if __name__ == '__main__': m.act = Hardswish() elif isinstance(m.act, nn.SiLU): m.act = SiLU() - # elif isinstance(m, models.yolo.Detect): - # m.forward = m.forward_export # assign forward (optional) - model.model[-1].export = not opt.grid # set Detect() layer grid export - y = model(img) # dry run + elif isinstance(m, models.yolo.Detect): + m.inplace = opt.inplace + m.onnx_dynamic = opt.dynamic + # m.forward = m.forward_export # assign forward (optional) - # TorchScript export - try: - print('\nStarting TorchScript export with torch %s...' % torch.__version__) - f = opt.weights.replace('.pt', '.torchscript.pt') # filename - ts = torch.jit.trace(model, img, strict=False) - ts.save(f) - print('TorchScript export success, saved as %s' % f) - except Exception as e: - print('TorchScript export failure: %s' % e) + for _ in range(2): + y = model(img) # dry runs + print(f"\n{colorstr('PyTorch:')} starting from {opt.weights} ({file_size(opt.weights):.1f} MB)") - # ONNX export - try: - import onnx + # TorchScript export ----------------------------------------------------------------------------------------------- + if 'torchscript' in opt.include or 'coreml' in opt.include: + prefix = colorstr('TorchScript:') + try: + print(f'\n{prefix} starting export with torch {torch.__version__}...') + f = opt.weights.replace('.pt', '.torchscript.pt') # filename + ts = torch.jit.trace(model, img, strict=False) + (optimize_for_mobile(ts) if opt.optimize else ts).save(f) + print(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)') + except Exception as e: + print(f'{prefix} export failure: {e}') - print('\nStarting ONNX export with onnx %s...' % onnx.__version__) - f = opt.weights.replace('.pt', '.onnx') # filename - torch.onnx.export(model, img, f, verbose=False, opset_version=12, input_names=['images'], - output_names=['classes', 'boxes'] if y is None else ['output'], - dynamic_axes={'images': {0: 'batch', 2: 'height', 3: 'width'}, # size(1,3,640,640) - 'output': {0: 'batch', 2: 'y', 3: 'x'}} if opt.dynamic else None) + # ONNX export ------------------------------------------------------------------------------------------------------ + if 'onnx' in opt.include: + prefix = colorstr('ONNX:') + try: + import onnx - # Checks - onnx_model = onnx.load(f) # load onnx model - onnx.checker.check_model(onnx_model) # check onnx model - # print(onnx.helper.printable_graph(onnx_model.graph)) # print a human readable model - print('ONNX export success, saved as %s' % f) - except Exception as e: - print('ONNX export failure: %s' % e) + print(f'{prefix} starting export with onnx {onnx.__version__}...') + f = opt.weights.replace('.pt', '.onnx') # filename + torch.onnx.export(model, img, f, verbose=False, opset_version=opt.opset_version, input_names=['images'], + training=torch.onnx.TrainingMode.TRAINING if opt.train else torch.onnx.TrainingMode.EVAL, + do_constant_folding=not opt.train, + dynamic_axes={'images': {0: 'batch', 2: 'height', 3: 'width'}, # size(1,3,640,640) + 'output': {0: 'batch', 2: 'y', 3: 'x'}} if opt.dynamic else None) - # CoreML export - try: - import coremltools as ct + # Checks + model_onnx = onnx.load(f) # load onnx model + onnx.checker.check_model(model_onnx) # check onnx model + # print(onnx.helper.printable_graph(model_onnx.graph)) # print - print('\nStarting CoreML export with coremltools %s...' % ct.__version__) - # convert model from torchscript and apply pixel scaling as per detect.py - model = ct.convert(ts, inputs=[ct.ImageType(name='image', shape=img.shape, scale=1 / 255.0, bias=[0, 0, 0])]) - f = opt.weights.replace('.pt', '.mlmodel') # filename - model.save(f) - print('CoreML export success, saved as %s' % f) - except Exception as e: - print('CoreML export failure: %s' % e) + # Simplify + if opt.simplify: + try: + check_requirements(['onnx-simplifier']) + import onnxsim + + print(f'{prefix} simplifying with onnx-simplifier {onnxsim.__version__}...') + model_onnx, check = onnxsim.simplify( + model_onnx, + dynamic_input_shape=opt.dynamic, + input_shapes={'images': list(img.shape)} if opt.dynamic else None) + assert check, 'assert check failed' + onnx.save(model_onnx, f) + except Exception as e: + print(f'{prefix} simplifier failure: {e}') + print(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)') + except Exception as e: + print(f'{prefix} export failure: {e}') + + # CoreML export ---------------------------------------------------------------------------------------------------- + if 'coreml' in opt.include: + prefix = colorstr('CoreML:') + try: + import coremltools as ct + + print(f'{prefix} starting export with coremltools {ct.__version__}...') + assert opt.train, 'CoreML exports should be placed in model.train() mode with `python export.py --train`' + model = ct.convert(ts, inputs=[ct.ImageType('image', shape=img.shape, scale=1 / 255.0, bias=[0, 0, 0])]) + f = opt.weights.replace('.pt', '.mlmodel') # filename + model.save(f) + print(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)') + except Exception as e: + print(f'{prefix} export failure: {e}') # Finish - print('\nExport complete (%.2fs). Visualize with https://github.com/lutzroeder/netron.' % (time.time() - t)) + print(f'\nExport complete ({time.time() - t:.2f}s). Visualize with https://github.com/lutzroeder/netron.') diff --git a/models/yolo.py b/models/yolo.py index 706ea20e..934cab69 100644 --- a/models/yolo.py +++ b/models/yolo.py @@ -1,11 +1,16 @@ -# YOLOv3 YOLO-specific modules +"""YOLOv3-specific modules + +Usage: + $ python path/to/models/yolo.py --cfg yolov3.yaml +""" import argparse import logging import sys from copy import deepcopy +from pathlib import Path -sys.path.append('./') # to run '$ python *.py' files in subdirectories +sys.path.append(Path(__file__).parent.parent.absolute().__str__()) # to run '$ python *.py' files in subdirectories logger = logging.getLogger(__name__) from models.common import * @@ -23,9 +28,9 @@ except ImportError: class Detect(nn.Module): stride = None # strides computed during build - export = False # onnx export + onnx_dynamic = False # ONNX export parameter - def __init__(self, nc=80, anchors=(), ch=()): # detection layer + def __init__(self, nc=80, anchors=(), ch=(), inplace=True): # detection layer super(Detect, self).__init__() self.nc = nc # number of classes self.no = nc + 5 # number of outputs per anchor @@ -36,23 +41,28 @@ class Detect(nn.Module): self.register_buffer('anchors', a) # shape(nl,na,2) self.register_buffer('anchor_grid', a.clone().view(self.nl, 1, -1, 1, 1, 2)) # shape(nl,1,na,1,1,2) self.m = nn.ModuleList(nn.Conv2d(x, self.no * self.na, 1) for x in ch) # output conv + self.inplace = inplace # use in-place ops (e.g. slice assignment) def forward(self, x): # x = x.copy() # for profiling z = [] # inference output - self.training |= self.export for i in range(self.nl): x[i] = self.m[i](x[i]) # conv bs, _, ny, nx = x[i].shape # x(bs,255,20,20) to x(bs,3,20,20,85) x[i] = x[i].view(bs, self.na, self.no, ny, nx).permute(0, 1, 3, 4, 2).contiguous() if not self.training: # inference - if self.grid[i].shape[2:4] != x[i].shape[2:4]: + if self.grid[i].shape[2:4] != x[i].shape[2:4] or self.onnx_dynamic: self.grid[i] = self._make_grid(nx, ny).to(x[i].device) y = x[i].sigmoid() - y[..., 0:2] = (y[..., 0:2] * 2. - 0.5 + self.grid[i]) * self.stride[i] # xy - y[..., 2:4] = (y[..., 2:4] * 2) ** 2 * self.anchor_grid[i] # wh + if self.inplace: + y[..., 0:2] = (y[..., 0:2] * 2. - 0.5 + self.grid[i]) * self.stride[i] # xy + y[..., 2:4] = (y[..., 2:4] * 2) ** 2 * self.anchor_grid[i] # wh + else: # for YOLOv5 on AWS Inferentia https://github.com/ultralytics/yolov5/pull/2953 + xy = (y[..., 0:2] * 2. - 0.5 + self.grid[i]) * self.stride[i] # xy + wh = (y[..., 2:4] * 2) ** 2 * self.anchor_grid[i].view(1, self.na, 1, 1, 2) # wh + y = torch.cat((xy, wh, y[..., 4:]), -1) z.append(y.view(bs, -1, self.no)) return x if self.training else (torch.cat(z, 1), x) @@ -72,7 +82,7 @@ class Model(nn.Module): import yaml # for torch hub self.yaml_file = Path(cfg).name with open(cfg) as f: - self.yaml = yaml.load(f, Loader=yaml.SafeLoader) # model dict + self.yaml = yaml.safe_load(f) # model dict # Define model ch = self.yaml['ch'] = self.yaml.get('ch', ch) # input channels @@ -84,18 +94,20 @@ class Model(nn.Module): self.yaml['anchors'] = round(anchors) # override yaml value self.model, self.save = parse_model(deepcopy(self.yaml), ch=[ch]) # model, savelist self.names = [str(i) for i in range(self.yaml['nc'])] # default names - # print([x.shape for x in self.forward(torch.zeros(1, ch, 64, 64))]) + self.inplace = self.yaml.get('inplace', True) + # logger.info([x.shape for x in self.forward(torch.zeros(1, ch, 64, 64))]) # Build strides, anchors m = self.model[-1] # Detect() if isinstance(m, Detect): s = 256 # 2x min stride + m.inplace = self.inplace m.stride = torch.tensor([s / x.shape[-2] for x in self.forward(torch.zeros(1, ch, s, s))]) # forward m.anchors /= m.stride.view(-1, 1, 1) check_anchor_order(m) self.stride = m.stride self._initialize_biases() # only run once - # print('Strides: %s' % m.stride.tolist()) + # logger.info('Strides: %s' % m.stride.tolist()) # Init weights, biases initialize_weights(self) @@ -104,24 +116,23 @@ class Model(nn.Module): def forward(self, x, augment=False, profile=False): if augment: - img_size = x.shape[-2:] # height, width - s = [1, 0.83, 0.67] # scales - f = [None, 3, None] # flips (2-ud, 3-lr) - y = [] # outputs - for si, fi in zip(s, f): - xi = scale_img(x.flip(fi) if fi else x, si, gs=int(self.stride.max())) - yi = self.forward_once(xi)[0] # forward - # cv2.imwrite(f'img_{si}.jpg', 255 * xi[0].cpu().numpy().transpose((1, 2, 0))[:, :, ::-1]) # save - yi[..., :4] /= si # de-scale - if fi == 2: - yi[..., 1] = img_size[0] - yi[..., 1] # de-flip ud - elif fi == 3: - yi[..., 0] = img_size[1] - yi[..., 0] # de-flip lr - y.append(yi) - return torch.cat(y, 1), None # augmented inference, train + return self.forward_augment(x) # augmented inference, None else: return self.forward_once(x, profile) # single-scale inference, train + def forward_augment(self, x): + img_size = x.shape[-2:] # height, width + s = [1, 0.83, 0.67] # scales + f = [None, 3, None] # flips (2-ud, 3-lr) + y = [] # outputs + for si, fi in zip(s, f): + xi = scale_img(x.flip(fi) if fi else x, si, gs=int(self.stride.max())) + yi = self.forward_once(xi)[0] # forward + # cv2.imwrite(f'img_{si}.jpg', 255 * xi[0].cpu().numpy().transpose((1, 2, 0))[:, :, ::-1]) # save + yi = self._descale_pred(yi, fi, si, img_size) + y.append(yi) + return torch.cat(y, 1), None # augmented inference, train + def forward_once(self, x, profile=False): y, dt = [], [] # outputs for m in self.model: @@ -134,15 +145,34 @@ class Model(nn.Module): for _ in range(10): _ = m(x) dt.append((time_synchronized() - t) * 100) - print('%10.1f%10.0f%10.1fms %-40s' % (o, m.np, dt[-1], m.type)) + if m == self.model[0]: + logger.info(f"{'time (ms)':>10s} {'GFLOPS':>10s} {'params':>10s} {'module'}") + logger.info(f'{dt[-1]:10.2f} {o:10.2f} {m.np:10.0f} {m.type}') x = m(x) # run y.append(x if m.i in self.save else None) # save output if profile: - print('%.1fms total' % sum(dt)) + logger.info('%.1fms total' % sum(dt)) return x + def _descale_pred(self, p, flips, scale, img_size): + # de-scale predictions following augmented inference (inverse operation) + if self.inplace: + p[..., :4] /= scale # de-scale + if flips == 2: + p[..., 1] = img_size[0] - p[..., 1] # de-flip ud + elif flips == 3: + p[..., 0] = img_size[1] - p[..., 0] # de-flip lr + else: + x, y, wh = p[..., 0:1] / scale, p[..., 1:2] / scale, p[..., 2:4] / scale # de-scale + if flips == 2: + y = img_size[0] - y # de-flip ud + elif flips == 3: + x = img_size[1] - x # de-flip lr + p = torch.cat((x, y, wh, p[..., 4:]), -1) + return p + def _initialize_biases(self, cf=None): # initialize biases into Detect(), cf is class frequency # https://arxiv.org/abs/1708.02002 section 3.3 # cf = torch.bincount(torch.tensor(np.concatenate(dataset.labels, 0)[:, 0]).long(), minlength=nc) + 1. @@ -157,15 +187,16 @@ class Model(nn.Module): m = self.model[-1] # Detect() module for mi in m.m: # from b = mi.bias.detach().view(m.na, -1).T # conv.bias(255) to (3,85) - print(('%6g Conv2d.bias:' + '%10.3g' * 6) % (mi.weight.shape[1], *b[:5].mean(1).tolist(), b[5:].mean())) + logger.info( + ('%6g Conv2d.bias:' + '%10.3g' * 6) % (mi.weight.shape[1], *b[:5].mean(1).tolist(), b[5:].mean())) # def _print_weights(self): # for m in self.model.modules(): # if type(m) is Bottleneck: - # print('%10.3g' % (m.w.detach().sigmoid() * 2)) # shortcut weights + # logger.info('%10.3g' % (m.w.detach().sigmoid() * 2)) # shortcut weights def fuse(self): # fuse model Conv2d() + BatchNorm2d() layers - print('Fusing layers... ') + logger.info('Fusing layers... ') for m in self.model.modules(): if type(m) is Conv and hasattr(m, 'bn'): m.conv = fuse_conv_and_bn(m.conv, m.bn) # update conv @@ -177,20 +208,20 @@ class Model(nn.Module): def nms(self, mode=True): # add or remove NMS module present = type(self.model[-1]) is NMS # last layer is NMS if mode and not present: - print('Adding NMS... ') + logger.info('Adding NMS... ') m = NMS() # module m.f = -1 # from m.i = self.model[-1].i + 1 # index self.model.add_module(name='%s' % m.i, module=m) # add self.eval() elif not mode and present: - print('Removing NMS... ') + logger.info('Removing NMS... ') self.model = self.model[:-1] # remove return self - def autoshape(self): # add autoShape module - print('Adding autoShape... ') - m = autoShape(self) # wrap model + def autoshape(self): # add AutoShape module + logger.info('Adding AutoShape... ') + m = AutoShape(self) # wrap model copy_attr(m, self, include=('yaml', 'nc', 'hyp', 'names', 'stride'), exclude=()) # copy attributes return m @@ -266,12 +297,12 @@ if __name__ == '__main__': model.train() # Profile - # img = torch.rand(8 if torch.cuda.is_available() else 1, 3, 640, 640).to(device) + # img = torch.rand(8 if torch.cuda.is_available() else 1, 3, 320, 320).to(device) # y = model(img, profile=True) - # Tensorboard + # Tensorboard (not working https://github.com/ultralytics/yolov5/issues/2898) # from torch.utils.tensorboard import SummaryWriter - # tb_writer = SummaryWriter() - # print("Run 'tensorboard --logdir=models/runs' to view tensorboard at http://localhost:6006/") - # tb_writer.add_graph(model.model, img) # add model to tensorboard + # tb_writer = SummaryWriter('.') + # logger.info("Run 'tensorboard --logdir=models' to view tensorboard at http://localhost:6006/") + # tb_writer.add_graph(torch.jit.trace(model, img, strict=False), []) # add model graph # tb_writer.add_image('test', img[0], dataformats='CWH') # add model to tensorboard diff --git a/requirements.txt b/requirements.txt index fd187eb5..1c07c651 100755 --- a/requirements.txt +++ b/requirements.txt @@ -21,9 +21,10 @@ pandas # export -------------------------------------- # coremltools>=4.1 -# onnx>=1.8.1 +# onnx>=1.9.0 # scikit-learn==0.19.2 # for coreml quantization # extras -------------------------------------- -thop # FLOPS computation +# Cython # for pycocotools https://github.com/cocodataset/cocoapi/issues/172 pycocotools>=2.0 # COCO mAP +thop # FLOPS computation diff --git a/test.py b/test.py index 0b7f61c1..396beef6 100644 --- a/test.py +++ b/test.py @@ -18,6 +18,7 @@ from utils.plots import plot_images, output_to_target, plot_study_txt from utils.torch_utils import select_device, time_synchronized +@torch.no_grad() def test(data, weights=None, batch_size=32, @@ -38,7 +39,8 @@ def test(data, wandb_logger=None, compute_loss=None, half_precision=True, - is_coco=False): + is_coco=False, + opt=None): # Initialize/load model and set device training = model is not None if training: # called by train.py @@ -49,7 +51,7 @@ def test(data, device = select_device(opt.device, batch_size=batch_size) # Directories - save_dir = Path(increment_path(Path(opt.project) / opt.name, exist_ok=opt.exist_ok)) # increment run + save_dir = increment_path(Path(opt.project) / opt.name, exist_ok=opt.exist_ok) # increment run (save_dir / 'labels' if save_txt else save_dir).mkdir(parents=True, exist_ok=True) # make dir # Load model @@ -71,7 +73,7 @@ def test(data, if isinstance(data, str): is_coco = data.endswith('coco.yaml') with open(data) as f: - data = yaml.load(f, Loader=yaml.SafeLoader) + data = yaml.safe_load(f) check_dataset(data) # check nc = 1 if single_cls else int(data['nc']) # number of classes iouv = torch.linspace(0.5, 0.95, 10).to(device) # iou vector for mAP@0.5:0.95 @@ -104,22 +106,21 @@ def test(data, targets = targets.to(device) nb, _, height, width = img.shape # batch size, channels, height, width - with torch.no_grad(): - # Run model - t = time_synchronized() - out, train_out = model(img, augment=augment) # inference and training outputs - t0 += time_synchronized() - t + # Run model + t = time_synchronized() + out, train_out = model(img, augment=augment) # inference and training outputs + t0 += time_synchronized() - t - # Compute loss - if compute_loss: - loss += compute_loss([x.float() for x in train_out], targets)[1][:3] # box, obj, cls + # Compute loss + if compute_loss: + loss += compute_loss([x.float() for x in train_out], targets)[1][:3] # box, obj, cls - # Run NMS - targets[:, 2:] *= torch.Tensor([width, height, width, height]).to(device) # to pixels - lb = [targets[targets[:, 0] == i, 1:] for i in range(nb)] if save_hybrid else [] # for autolabelling - t = time_synchronized() - out = non_max_suppression(out, conf_thres=conf_thres, iou_thres=iou_thres, labels=lb, multi_label=True) - t1 += time_synchronized() - t + # Run NMS + targets[:, 2:] *= torch.Tensor([width, height, width, height]).to(device) # to pixels + lb = [targets[targets[:, 0] == i, 1:] for i in range(nb)] if save_hybrid else [] # for autolabelling + t = time_synchronized() + out = non_max_suppression(out, conf_thres, iou_thres, labels=lb, multi_label=True, agnostic=single_cls) + t1 += time_synchronized() - t # Statistics per image for si, pred in enumerate(out): @@ -135,6 +136,8 @@ def test(data, continue # Predictions + if single_cls: + pred[:, 5] = 0 predn = pred.clone() scale_coords(img[si].shape[1:], predn[:, :4], shapes[si][0], shapes[si][1]) # native-space pred @@ -185,8 +188,8 @@ def test(data, # Per target class for cls in torch.unique(tcls_tensor): - ti = (cls == tcls_tensor).nonzero(as_tuple=False).view(-1) # prediction indices - pi = (cls == pred[:, 5]).nonzero(as_tuple=False).view(-1) # target indices + ti = (cls == tcls_tensor).nonzero(as_tuple=False).view(-1) # target indices + pi = (cls == pred[:, 5]).nonzero(as_tuple=False).view(-1) # prediction indices # Search for detections if pi.shape[0]: @@ -307,7 +310,7 @@ if __name__ == '__main__': opt.save_json |= opt.data.endswith('coco.yaml') opt.data = check_file(opt.data) # check file print(opt) - check_requirements() + check_requirements(exclude=('tensorboard', 'pycocotools', 'thop')) if opt.task in ('train', 'val', 'test'): # run normally test(opt.data, @@ -323,11 +326,12 @@ if __name__ == '__main__': save_txt=opt.save_txt | opt.save_hybrid, save_hybrid=opt.save_hybrid, save_conf=opt.save_conf, + opt=opt ) elif opt.task == 'speed': # speed benchmarks for w in opt.weights: - test(opt.data, w, opt.batch_size, opt.img_size, 0.25, 0.45, save_json=False, plots=False) + test(opt.data, w, opt.batch_size, opt.img_size, 0.25, 0.45, save_json=False, plots=False, opt=opt) elif opt.task == 'study': # run over a range of settings and save/plot # python test.py --task study --data coco.yaml --iou 0.7 --weights yolov3.pt yolov3-spp.pt yolov3-tiny.pt @@ -338,7 +342,7 @@ if __name__ == '__main__': for i in x: # img-size print(f'\nRunning {f} point {i}...') r, _, t = test(opt.data, w, opt.batch_size, i, opt.conf_thres, opt.iou_thres, opt.save_json, - plots=False) + plots=False, opt=opt) y.append(r + t) # results and times np.savetxt(f, y, fmt='%10.4g') # save os.system('zip -r study.zip study_*.txt') diff --git a/train.py b/train.py index ff7d96b7..8f786609 100644 --- a/train.py +++ b/train.py @@ -32,7 +32,7 @@ from utils.general import labels_to_class_weights, increment_path, labels_to_ima from utils.google_utils import attempt_download from utils.loss import ComputeLoss from utils.plots import plot_images, plot_labels, plot_results, plot_evolution -from utils.torch_utils import ModelEMA, select_device, intersect_dicts, torch_distributed_zero_first, is_parallel +from utils.torch_utils import ModelEMA, select_device, intersect_dicts, torch_distributed_zero_first, de_parallel from utils.wandb_logging.wandb_utils import WandbLogger, check_wandb_resume logger = logging.getLogger(__name__) @@ -52,24 +52,23 @@ def train(hyp, opt, device, tb_writer=None): # Save run settings with open(save_dir / 'hyp.yaml', 'w') as f: - yaml.dump(hyp, f, sort_keys=False) + yaml.safe_dump(hyp, f, sort_keys=False) with open(save_dir / 'opt.yaml', 'w') as f: - yaml.dump(vars(opt), f, sort_keys=False) + yaml.safe_dump(vars(opt), f, sort_keys=False) # Configure plots = not opt.evolve # create plots cuda = device.type != 'cpu' init_seeds(2 + rank) with open(opt.data) as f: - data_dict = yaml.load(f, Loader=yaml.SafeLoader) # data dict - is_coco = opt.data.endswith('coco.yaml') + data_dict = yaml.safe_load(f) # data dict # Logging- Doing this before checking the dataset. Might update data_dict loggers = {'wandb': None} # loggers dict if rank in [-1, 0]: opt.hyp = hyp # add hyperparameters run_id = torch.load(weights).get('wandb_id') if weights.endswith('.pt') and os.path.isfile(weights) else None - wandb_logger = WandbLogger(opt, Path(opt.save_dir).stem, run_id, data_dict) + wandb_logger = WandbLogger(opt, save_dir.stem, run_id, data_dict) loggers['wandb'] = wandb_logger.wandb data_dict = wandb_logger.data_dict if wandb_logger.wandb: @@ -78,12 +77,13 @@ def train(hyp, opt, device, tb_writer=None): nc = 1 if opt.single_cls else int(data_dict['nc']) # number of classes names = ['item'] if opt.single_cls and len(data_dict['names']) != 1 else data_dict['names'] # class names assert len(names) == nc, '%g names found for nc=%g dataset in %s' % (len(names), nc, opt.data) # check + is_coco = opt.data.endswith('coco.yaml') and nc == 80 # COCO dataset # Model pretrained = weights.endswith('.pt') if pretrained: with torch_distributed_zero_first(rank): - attempt_download(weights) # download if not found locally + weights = attempt_download(weights) # download if not found locally ckpt = torch.load(weights, map_location=device) # load checkpoint model = Model(opt.cfg or ckpt['model'].yaml, ch=3, nc=nc, anchors=hyp.get('anchors')).to(device) # create exclude = ['anchor'] if (opt.cfg or hyp.get('anchors')) and not opt.resume else [] # exclude keys @@ -330,9 +330,9 @@ def train(hyp, opt, device, tb_writer=None): if plots and ni < 3: f = save_dir / f'train_batch{ni}.jpg' # filename Thread(target=plot_images, args=(imgs, targets, paths, f), daemon=True).start() - # if tb_writer: - # tb_writer.add_image(f, result, dataformats='HWC', global_step=epoch) - # tb_writer.add_graph(torch.jit.trace(model, imgs, strict=False), []) # add model graph + if tb_writer: + tb_writer.add_graph(torch.jit.trace(de_parallel(model), imgs, strict=False), []) # model graph + # tb_writer.add_image(f, result, dataformats='HWC', global_step=epoch) elif plots and ni == 10 and wandb_logger.wandb: wandb_logger.log({"Mosaics": [wandb_logger.wandb.Image(str(x), caption=x.name) for x in save_dir.glob('train*.jpg') if x.exists()]}) @@ -358,6 +358,7 @@ def train(hyp, opt, device, tb_writer=None): single_cls=opt.single_cls, dataloader=testloader, save_dir=save_dir, + save_json=is_coco and final_epoch, verbose=nc < 50 and final_epoch, plots=plots and final_epoch, wandb_logger=wandb_logger, @@ -367,8 +368,6 @@ def train(hyp, opt, device, tb_writer=None): # Write with open(results_file, 'a') as f: f.write(s + '%10.4g' * 7 % results + '\n') # append metrics, val_loss - if len(opt.name) and opt.bucket: - os.system('gsutil cp %s gs://%s/results/results%s.txt' % (results_file, opt.bucket, opt.name)) # Log tags = ['train/box_loss', 'train/obj_loss', 'train/cls_loss', # train loss @@ -392,7 +391,7 @@ def train(hyp, opt, device, tb_writer=None): ckpt = {'epoch': epoch, 'best_fitness': best_fitness, 'training_results': results_file.read_text(), - 'model': deepcopy(model.module if is_parallel(model) else model).half(), + 'model': deepcopy(de_parallel(model)).half(), 'ema': deepcopy(ema.ema).half(), 'updates': ema.updates, 'optimizer': optimizer.state_dict(), @@ -411,41 +410,38 @@ def train(hyp, opt, device, tb_writer=None): # end epoch ---------------------------------------------------------------------------------------------------- # end training if rank in [-1, 0]: - # Plots + logger.info(f'{epoch - start_epoch + 1} epochs completed in {(time.time() - t0) / 3600:.3f} hours.\n') if plots: plot_results(save_dir=save_dir) # save as results.png if wandb_logger.wandb: files = ['results.png', 'confusion_matrix.png', *[f'{x}_curve.png' for x in ('F1', 'PR', 'P', 'R')]] wandb_logger.log({"Results": [wandb_logger.wandb.Image(str(save_dir / f), caption=f) for f in files if (save_dir / f).exists()]}) - # Test best.pt - logger.info('%g epochs completed in %.3f hours.\n' % (epoch - start_epoch + 1, (time.time() - t0) / 3600)) - if opt.data.endswith('coco.yaml') and nc == 80: # if COCO - for m in (last, best) if best.exists() else (last): # speed, mAP tests - results, _, _ = test.test(opt.data, - batch_size=batch_size * 2, - imgsz=imgsz_test, - conf_thres=0.001, - iou_thres=0.7, - model=attempt_load(m, device).half(), - single_cls=opt.single_cls, - dataloader=testloader, - save_dir=save_dir, - save_json=True, - plots=False, - is_coco=is_coco) - # Strip optimizers - final = best if best.exists() else last # final model - for f in last, best: - if f.exists(): - strip_optimizer(f) # strip optimizers - if opt.bucket: - os.system(f'gsutil cp {final} gs://{opt.bucket}/weights') # upload - if wandb_logger.wandb and not opt.evolve: # Log the stripped model - wandb_logger.wandb.log_artifact(str(final), type='model', - name='run_' + wandb_logger.wandb_run.id + '_model', - aliases=['last', 'best', 'stripped']) + if not opt.evolve: + if is_coco: # COCO dataset + for m in [last, best] if best.exists() else [last]: # speed, mAP tests + results, _, _ = test.test(opt.data, + batch_size=batch_size * 2, + imgsz=imgsz_test, + conf_thres=0.001, + iou_thres=0.7, + model=attempt_load(m, device).half(), + single_cls=opt.single_cls, + dataloader=testloader, + save_dir=save_dir, + save_json=True, + plots=False, + is_coco=is_coco) + + # Strip optimizers + for f in last, best: + if f.exists(): + strip_optimizer(f) # strip optimizers + if wandb_logger.wandb: # Log the stripped model + wandb_logger.wandb.log_artifact(str(best if best.exists() else last), type='model', + name='run_' + wandb_logger.wandb_run.id + '_model', + aliases=['latest', 'best', 'stripped']) wandb_logger.finish_run() else: dist.destroy_process_group() @@ -497,7 +493,7 @@ if __name__ == '__main__': set_logging(opt.global_rank) if opt.global_rank in [-1, 0]: check_git_status() - check_requirements() + check_requirements(exclude=('pycocotools', 'thop')) # Resume wandb_run = check_wandb_resume(opt) @@ -506,8 +502,9 @@ if __name__ == '__main__': assert os.path.isfile(ckpt), 'ERROR: --resume checkpoint does not exist' apriori = opt.global_rank, opt.local_rank with open(Path(ckpt).parent.parent / 'opt.yaml') as f: - opt = argparse.Namespace(**yaml.load(f, Loader=yaml.SafeLoader)) # replace - opt.cfg, opt.weights, opt.resume, opt.batch_size, opt.global_rank, opt.local_rank = '', ckpt, True, opt.total_batch_size, *apriori # reinstate + opt = argparse.Namespace(**yaml.safe_load(f)) # replace + opt.cfg, opt.weights, opt.resume, opt.batch_size, opt.global_rank, opt.local_rank = \ + '', ckpt, True, opt.total_batch_size, *apriori # reinstate logger.info('Resuming training from %s' % ckpt) else: # opt.hyp = opt.hyp or ('hyp.finetune.yaml' if opt.weights else 'hyp.scratch.yaml') @@ -515,7 +512,7 @@ if __name__ == '__main__': assert len(opt.cfg) or len(opt.weights), 'either --cfg or --weights must be specified' opt.img_size.extend([opt.img_size[-1]] * (2 - len(opt.img_size))) # extend to 2 sizes (train, test) opt.name = 'evolve' if opt.evolve else opt.name - opt.save_dir = increment_path(Path(opt.project) / opt.name, exist_ok=opt.exist_ok | opt.evolve) # increment run + opt.save_dir = str(increment_path(Path(opt.project) / opt.name, exist_ok=opt.exist_ok | opt.evolve)) # DDP mode opt.total_batch_size = opt.batch_size @@ -526,11 +523,12 @@ if __name__ == '__main__': device = torch.device('cuda', opt.local_rank) dist.init_process_group(backend='nccl', init_method='env://') # distributed backend assert opt.batch_size % opt.world_size == 0, '--batch-size must be multiple of CUDA device count' + assert not opt.image_weights, '--image-weights argument is not compatible with DDP training' opt.batch_size = opt.total_batch_size // opt.world_size # Hyperparameters with open(opt.hyp) as f: - hyp = yaml.load(f, Loader=yaml.SafeLoader) # load hyps + hyp = yaml.safe_load(f) # load hyps # Train logger.info(opt) diff --git a/utils/activations.py b/utils/activations.py index aa3ddf07..92a3b5ea 100644 --- a/utils/activations.py +++ b/utils/activations.py @@ -19,23 +19,6 @@ class Hardswish(nn.Module): # export-friendly version of nn.Hardswish() return x * F.hardtanh(x + 3, 0., 6.) / 6. # for torchscript, CoreML and ONNX -class MemoryEfficientSwish(nn.Module): - class F(torch.autograd.Function): - @staticmethod - def forward(ctx, x): - ctx.save_for_backward(x) - return x * torch.sigmoid(x) - - @staticmethod - def backward(ctx, grad_output): - x = ctx.saved_tensors[0] - sx = torch.sigmoid(x) - return grad_output * (sx * (1 + x * (1 - sx))) - - def forward(self, x): - return self.F.apply(x) - - # Mish https://github.com/digantamisra98/Mish -------------------------------------------------------------------------- class Mish(nn.Module): @staticmethod @@ -70,3 +53,46 @@ class FReLU(nn.Module): def forward(self, x): return torch.max(x, self.bn(self.conv(x))) + + +# ACON https://arxiv.org/pdf/2009.04759.pdf ---------------------------------------------------------------------------- +class AconC(nn.Module): + r""" ACON activation (activate or not). + AconC: (p1*x-p2*x) * sigmoid(beta*(p1*x-p2*x)) + p2*x, beta is a learnable parameter + according to "Activate or Not: Learning Customized Activation" . + """ + + def __init__(self, c1): + super().__init__() + self.p1 = nn.Parameter(torch.randn(1, c1, 1, 1)) + self.p2 = nn.Parameter(torch.randn(1, c1, 1, 1)) + self.beta = nn.Parameter(torch.ones(1, c1, 1, 1)) + + def forward(self, x): + dpx = (self.p1 - self.p2) * x + return dpx * torch.sigmoid(self.beta * dpx) + self.p2 * x + + +class MetaAconC(nn.Module): + r""" ACON activation (activate or not). + MetaAconC: (p1*x-p2*x) * sigmoid(beta*(p1*x-p2*x)) + p2*x, beta is generated by a small network + according to "Activate or Not: Learning Customized Activation" . + """ + + def __init__(self, c1, k=1, s=1, r=16): # ch_in, kernel, stride, r + super().__init__() + c2 = max(r, c1 // r) + self.p1 = nn.Parameter(torch.randn(1, c1, 1, 1)) + self.p2 = nn.Parameter(torch.randn(1, c1, 1, 1)) + self.fc1 = nn.Conv2d(c1, c2, k, s, bias=True) + self.fc2 = nn.Conv2d(c2, c1, k, s, bias=True) + # self.bn1 = nn.BatchNorm2d(c2) + # self.bn2 = nn.BatchNorm2d(c1) + + def forward(self, x): + y = x.mean(dim=2, keepdims=True).mean(dim=3, keepdims=True) + # batch-size 1 bug/instabilities https://github.com/ultralytics/yolov5/issues/2891 + # beta = torch.sigmoid(self.bn2(self.fc2(self.bn1(self.fc1(y))))) # bug/unstable + beta = torch.sigmoid(self.fc2(self.fc1(y))) # bug patch BN layers removed + dpx = (self.p1 - self.p2) * x + return dpx * torch.sigmoid(beta * dpx) + self.p2 * x diff --git a/utils/autoanchor.py b/utils/autoanchor.py index 8d62474f..51ed8034 100644 --- a/utils/autoanchor.py +++ b/utils/autoanchor.py @@ -3,7 +3,6 @@ import numpy as np import torch import yaml -from scipy.cluster.vq import kmeans from tqdm import tqdm from utils.general import colorstr @@ -76,6 +75,8 @@ def kmean_anchors(path='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen=10 Usage: from utils.autoanchor import *; _ = kmean_anchors() """ + from scipy.cluster.vq import kmeans + thr = 1. / thr prefix = colorstr('autoanchor: ') @@ -102,7 +103,7 @@ def kmean_anchors(path='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen=10 if isinstance(path, str): # *.yaml file with open(path) as f: - data_dict = yaml.load(f, Loader=yaml.SafeLoader) # model dict + data_dict = yaml.safe_load(f) # model dict from utils.datasets import LoadImagesAndLabels dataset = LoadImagesAndLabels(data_dict['train'], augment=True, rect=True) else: diff --git a/utils/aws/resume.py b/utils/aws/resume.py index faad8d24..4b0d4246 100644 --- a/utils/aws/resume.py +++ b/utils/aws/resume.py @@ -19,7 +19,7 @@ for last in path.rglob('*/**/last.pt'): # Load opt.yaml with open(last.parent.parent / 'opt.yaml') as f: - opt = yaml.load(f, Loader=yaml.SafeLoader) + opt = yaml.safe_load(f) # Get device count d = opt['device'].split(',') # devices diff --git a/utils/aws/userdata.sh b/utils/aws/userdata.sh index 890606b7..5846fedb 100644 --- a/utils/aws/userdata.sh +++ b/utils/aws/userdata.sh @@ -7,7 +7,7 @@ cd home/ubuntu if [ ! -d yolov5 ]; then echo "Running first-time script." # install dependencies, download COCO, pull Docker - git clone https://github.com/ultralytics/yolov5 && sudo chmod -R 777 yolov5 + git clone https://github.com/ultralytics/yolov5 -b master && sudo chmod -R 777 yolov5 cd yolov5 bash data/scripts/get_coco.sh && echo "Data done." & sudo docker pull ultralytics/yolov5:latest && echo "Docker done." & diff --git a/utils/datasets.py b/utils/datasets.py index fcaa3415..481b79a9 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -1,6 +1,7 @@ # Dataset utils and dataloaders import glob +import hashlib import logging import math import os @@ -36,9 +37,12 @@ for orientation in ExifTags.TAGS.keys(): break -def get_hash(files): - # Returns a single hash value of a list of files - return sum(os.path.getsize(f) for f in files if os.path.isfile(f)) +def get_hash(paths): + # Returns a single hash value of a list of paths (files or dirs) + size = sum(os.path.getsize(p) for p in paths if os.path.exists(p)) # sizes + h = hashlib.md5(str(size).encode()) # hash sizes + h.update(''.join(paths).encode()) # hash paths + return h.hexdigest() # return hash def exif_size(img): @@ -172,12 +176,12 @@ class LoadImages: # for inference ret_val, img0 = self.cap.read() self.frame += 1 - print(f'video {self.count + 1}/{self.nf} ({self.frame}/{self.nframes}) {path}: ', end='') + print(f'video {self.count + 1}/{self.nf} ({self.frame}/{self.frames}) {path}: ', end='') else: # Read image self.count += 1 - img0 = cv2.imread(path) # BGR + img0 = cv2.imread(path, -1) # BGR (-1 is IMREAD_UNCHANGED) assert img0 is not None, 'Image Not Found ' + path print(f'image {self.count}/{self.nf} {path}: ', end='') @@ -193,7 +197,7 @@ class LoadImages: # for inference def new_video(self, path): self.frame = 0 self.cap = cv2.VideoCapture(path) - self.nframes = int(self.cap.get(cv2.CAP_PROP_FRAME_COUNT)) + self.frames = int(self.cap.get(cv2.CAP_PROP_FRAME_COUNT)) def __len__(self): return self.nf # number of files @@ -270,26 +274,27 @@ class LoadStreams: # multiple IP or RTSP cameras sources = [sources] n = len(sources) - self.imgs = [None] * n + self.imgs, self.fps, self.frames, self.threads = [None] * n, [0] * n, [0] * n, [None] * n self.sources = [clean_str(x) for x in sources] # clean source names for later - for i, s in enumerate(sources): - # Start the thread to read frames from the video stream + for i, s in enumerate(sources): # index, source + # Start thread to read frames from video stream print(f'{i + 1}/{n}: {s}... ', end='') - url = eval(s) if s.isnumeric() else s - if 'youtube.com/' in url or 'youtu.be/' in url: # if source is YouTube video + if 'youtube.com/' in s or 'youtu.be/' in s: # if source is YouTube video check_requirements(('pafy', 'youtube_dl')) import pafy - url = pafy.new(url).getbest(preftype="mp4").url - cap = cv2.VideoCapture(url) + s = pafy.new(s).getbest(preftype="mp4").url # YouTube URL + s = eval(s) if s.isnumeric() else s # i.e. s = '0' local webcam + cap = cv2.VideoCapture(s) assert cap.isOpened(), f'Failed to open {s}' w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) - self.fps = cap.get(cv2.CAP_PROP_FPS) % 100 + self.fps[i] = max(cap.get(cv2.CAP_PROP_FPS) % 100, 0) or 30.0 # 30 FPS fallback + self.frames[i] = max(int(cap.get(cv2.CAP_PROP_FRAME_COUNT)), 0) or float('inf') # infinite stream fallback _, self.imgs[i] = cap.read() # guarantee first frame - thread = Thread(target=self.update, args=([i, cap]), daemon=True) - print(f' success ({w}x{h} at {self.fps:.2f} FPS).') - thread.start() + self.threads[i] = Thread(target=self.update, args=([i, cap]), daemon=True) + print(f" success ({self.frames[i]} frames {w}x{h} at {self.fps[i]:.2f} FPS)") + self.threads[i].start() print('') # newline # check for common shapes @@ -298,18 +303,17 @@ class LoadStreams: # multiple IP or RTSP cameras if not self.rect: print('WARNING: Different stream shapes detected. For optimal performance supply similarly-shaped streams.') - def update(self, index, cap): - # Read next stream frame in a daemon thread - n = 0 - while cap.isOpened(): + def update(self, i, cap): + # Read stream `i` frames in daemon thread + n, f = 0, self.frames[i] + while cap.isOpened() and n < f: n += 1 # _, self.imgs[index] = cap.read() cap.grab() - if n == 4: # read every 4th frame + if n % 4: # read every 4th frame success, im = cap.retrieve() - self.imgs[index] = im if success else self.imgs[index] * 0 - n = 0 - time.sleep(1 / self.fps) # wait time + self.imgs[i] = im if success else self.imgs[i] * 0 + time.sleep(1 / self.fps[i]) # wait time def __iter__(self): self.count = -1 @@ -317,12 +321,12 @@ class LoadStreams: # multiple IP or RTSP cameras def __next__(self): self.count += 1 - img0 = self.imgs.copy() - if cv2.waitKey(1) == ord('q'): # q to quit + if not all(x.is_alive() for x in self.threads) or cv2.waitKey(1) == ord('q'): # q to quit cv2.destroyAllWindows() raise StopIteration # Letterbox + img0 = self.imgs.copy() img = [letterbox(x, self.img_size, auto=self.rect, stride=self.stride)[0] for x in img0] # Stack @@ -383,7 +387,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing cache_path = (p if p.is_file() else Path(self.label_files[0]).parent).with_suffix('.cache') # cached labels if cache_path.is_file(): cache, exists = torch.load(cache_path), True # load - if cache['hash'] != get_hash(self.label_files + self.img_files) or 'version' not in cache: # changed + if cache['hash'] != get_hash(self.label_files + self.img_files): # changed cache, exists = self.cache_labels(cache_path, prefix), False # re-cache else: cache, exists = self.cache_labels(cache_path, prefix), False # cache @@ -470,7 +474,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing if os.path.isfile(lb_file): nf += 1 # label found with open(lb_file, 'r') as f: - l = [x.split() for x in f.read().strip().splitlines()] + l = [x.split() for x in f.read().strip().splitlines() if len(x)] if any([len(x) > 8 for x in l]): # is segment classes = np.array([x[0] for x in l], dtype=np.float32) segments = [np.array(x[1:], dtype=np.float32).reshape(-1, 2) for x in l] # (cls, xy1...) @@ -490,20 +494,23 @@ class LoadImagesAndLabels(Dataset): # for training/testing x[im_file] = [l, shape, segments] except Exception as e: nc += 1 - print(f'{prefix}WARNING: Ignoring corrupted image and/or label {im_file}: {e}') + logging.info(f'{prefix}WARNING: Ignoring corrupted image and/or label {im_file}: {e}') pbar.desc = f"{prefix}Scanning '{path.parent / path.stem}' images and labels... " \ f"{nf} found, {nm} missing, {ne} empty, {nc} corrupted" pbar.close() if nf == 0: - print(f'{prefix}WARNING: No labels found in {path}. See {help_url}') + logging.info(f'{prefix}WARNING: No labels found in {path}. See {help_url}') x['hash'] = get_hash(self.label_files + self.img_files) x['results'] = nf, nm, ne, nc, i + 1 - x['version'] = 0.1 # cache version - torch.save(x, path) # save for next time - logging.info(f'{prefix}New cache created: {path}') + x['version'] = 0.2 # cache version + try: + torch.save(x, path) # save cache for next time + logging.info(f'{prefix}New cache created: {path}') + except Exception as e: + logging.info(f'{prefix}WARNING: Cache directory {path.parent} is not writeable: {e}') # path not writeable return x def __len__(self): @@ -634,10 +641,10 @@ def load_image(self, index): img = cv2.imread(path) # BGR assert img is not None, 'Image Not Found ' + path h0, w0 = img.shape[:2] # orig hw - r = self.img_size / max(h0, w0) # resize image to img_size - if r != 1: # always resize down, only resize up if training with augmentation - interp = cv2.INTER_AREA if r < 1 and not self.augment else cv2.INTER_LINEAR - img = cv2.resize(img, (int(w0 * r), int(h0 * r)), interpolation=interp) + r = self.img_size / max(h0, w0) # ratio + if r != 1: # if sizes are not equal + img = cv2.resize(img, (int(w0 * r), int(h0 * r)), + interpolation=cv2.INTER_AREA if r < 1 and not self.augment else cv2.INTER_LINEAR) return img, (h0, w0), img.shape[:2] # img, hw_original, hw_resized else: return self.imgs[index], self.img_hw0[index], self.img_hw[index] # img, hw_original, hw_resized diff --git a/utils/flask_rest_api/README.md b/utils/flask_rest_api/README.md new file mode 100644 index 00000000..324c2416 --- /dev/null +++ b/utils/flask_rest_api/README.md @@ -0,0 +1,68 @@ +# Flask REST API +[REST](https://en.wikipedia.org/wiki/Representational_state_transfer) [API](https://en.wikipedia.org/wiki/API)s are commonly used to expose Machine Learning (ML) models to other services. This folder contains an example REST API created using Flask to expose the YOLOv5s model from [PyTorch Hub](https://pytorch.org/hub/ultralytics_yolov5/). + +## Requirements + +[Flask](https://palletsprojects.com/p/flask/) is required. Install with: +```shell +$ pip install Flask +``` + +## Run + +After Flask installation run: + +```shell +$ python3 restapi.py --port 5000 +``` + +Then use [curl](https://curl.se/) to perform a request: + +```shell +$ curl -X POST -F image=@zidane.jpg 'http://localhost:5000/v1/object-detection/yolov5s'` +``` + +The model inference results are returned as a JSON response: + +```json +[ + { + "class": 0, + "confidence": 0.8900438547, + "height": 0.9318675399, + "name": "person", + "width": 0.3264600933, + "xcenter": 0.7438579798, + "ycenter": 0.5207948685 + }, + { + "class": 0, + "confidence": 0.8440024257, + "height": 0.7155083418, + "name": "person", + "width": 0.6546785235, + "xcenter": 0.427829951, + "ycenter": 0.6334488392 + }, + { + "class": 27, + "confidence": 0.3771208823, + "height": 0.3902671337, + "name": "tie", + "width": 0.0696444362, + "xcenter": 0.3675483763, + "ycenter": 0.7991207838 + }, + { + "class": 27, + "confidence": 0.3527112305, + "height": 0.1540903747, + "name": "tie", + "width": 0.0336618312, + "xcenter": 0.7814827561, + "ycenter": 0.5065554976 + } +] +``` + +An example python script to perform inference using [requests](https://docs.python-requests.org/en/master/) is given in `example_request.py` diff --git a/utils/flask_rest_api/example_request.py b/utils/flask_rest_api/example_request.py new file mode 100644 index 00000000..ff21f30f --- /dev/null +++ b/utils/flask_rest_api/example_request.py @@ -0,0 +1,13 @@ +"""Perform test request""" +import pprint + +import requests + +DETECTION_URL = "http://localhost:5000/v1/object-detection/yolov5s" +TEST_IMAGE = "zidane.jpg" + +image_data = open(TEST_IMAGE, "rb").read() + +response = requests.post(DETECTION_URL, files={"image": image_data}).json() + +pprint.pprint(response) diff --git a/utils/flask_rest_api/restapi.py b/utils/flask_rest_api/restapi.py new file mode 100644 index 00000000..b0df7472 --- /dev/null +++ b/utils/flask_rest_api/restapi.py @@ -0,0 +1,37 @@ +""" +Run a rest API exposing the yolov5s object detection model +""" +import argparse +import io + +import torch +from PIL import Image +from flask import Flask, request + +app = Flask(__name__) + +DETECTION_URL = "/v1/object-detection/yolov5s" + + +@app.route(DETECTION_URL, methods=["POST"]) +def predict(): + if not request.method == "POST": + return + + if request.files.get("image"): + image_file = request.files["image"] + image_bytes = image_file.read() + + img = Image.open(io.BytesIO(image_bytes)) + + results = model(img, size=640) # reduce size=320 for faster inference + return results.pandas().xyxy[0].to_json(orient="records") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Flask API exposing YOLOv3 model") + parser.add_argument("--port", default=5000, type=int, help="port number") + args = parser.parse_args() + + model = torch.hub.load("ultralytics/yolov5", "yolov5s", force_reload=True) # force_reload to recache + app.run(host="0.0.0.0", port=args.port) # debug=True causes Restarting with stat diff --git a/utils/general.py b/utils/general.py index dbdcd396..af33c633 100755 --- a/utils/general.py +++ b/utils/general.py @@ -9,11 +9,14 @@ import random import re import subprocess import time +from itertools import repeat +from multiprocessing.pool import ThreadPool from pathlib import Path import cv2 import numpy as np import pandas as pd +import pkg_resources as pkg import torch import torchvision import yaml @@ -30,10 +33,10 @@ cv2.setNumThreads(0) # prevent OpenCV from multithreading (incompatible with Py os.environ['NUMEXPR_MAX_THREADS'] = str(min(os.cpu_count(), 8)) # NumExpr max threads -def set_logging(rank=-1): +def set_logging(rank=-1, verbose=True): logging.basicConfig( format="%(message)s", - level=logging.INFO if rank in [-1, 0] else logging.WARN) + level=logging.INFO if (verbose and rank in [-1, 0]) else logging.WARN) def init_seeds(seed=0): @@ -49,16 +52,30 @@ def get_latest_run(search_dir='.'): return max(last_list, key=os.path.getctime) if last_list else '' -def isdocker(): +def is_docker(): # Is environment a Docker container return Path('/workspace').exists() # or Path('/.dockerenv').exists() +def is_colab(): + # Is environment a Google Colab instance + try: + import google.colab + return True + except Exception as e: + return False + + def emojis(str=''): # Return platform-dependent emoji-safe version of string return str.encode().decode('ascii', 'ignore') if platform.system() == 'Windows' else str +def file_size(file): + # Return file size in MB + return Path(file).stat().st_size / 1e6 + + def check_online(): # Check internet connectivity import socket @@ -74,7 +91,7 @@ def check_git_status(): print(colorstr('github: '), end='') try: assert Path('.git').exists(), 'skipping check (not a git repository)' - assert not isdocker(), 'skipping check (Docker image)' + assert not is_docker(), 'skipping check (Docker image)' assert check_online(), 'skipping check (offline)' cmd = 'git fetch && git config --get remote.origin.url' @@ -91,10 +108,19 @@ def check_git_status(): print(e) +def check_python(minimum='3.7.0', required=True): + # Check current python version vs. required python version + current = platform.python_version() + result = pkg.parse_version(current) >= pkg.parse_version(minimum) + if required: + assert result, f'Python {minimum} required by YOLOv3, but Python {current} is currently installed' + return result + + def check_requirements(requirements='requirements.txt', exclude=()): # Check installed dependencies meet requirements (pass *.txt file or list of packages) - import pkg_resources as pkg prefix = colorstr('red', 'bold', 'requirements:') + check_python() # check python version if isinstance(requirements, (str, Path)): # requirements.txt file file = Path(requirements) if not file.exists(): @@ -110,8 +136,11 @@ def check_requirements(requirements='requirements.txt', exclude=()): pkg.require(r) except Exception as e: # DistributionNotFound or VersionConflict if requirements not met n += 1 - print(f"{prefix} {e.req} not found and is required by YOLOv3, attempting auto-update...") - print(subprocess.check_output(f"pip install '{e.req}'", shell=True).decode()) + print(f"{prefix} {r} not found and is required by YOLOv3, attempting auto-update...") + try: + print(subprocess.check_output(f"pip install '{r}'", shell=True).decode()) + except Exception as e: + print(f'{prefix} {e}') if n: # if packages updated source = file.resolve() if 'file' in locals() else requirements @@ -131,7 +160,8 @@ def check_img_size(img_size, s=32): def check_imshow(): # Check if environment supports image displays try: - assert not isdocker(), 'cv2.imshow() is disabled in Docker environments' + assert not is_docker(), 'cv2.imshow() is disabled in Docker environments' + assert not is_colab(), 'cv2.imshow() is disabled in Google Colab environments' cv2.imshow('test', np.zeros((1, 1, 3))) cv2.waitKey(1) cv2.destroyAllWindows() @@ -143,12 +173,19 @@ def check_imshow(): def check_file(file): - # Search for file if not found - if Path(file).is_file() or file == '': + # Search/download file (if necessary) and return path + file = str(file) # convert to str() + if Path(file).is_file() or file == '': # exists return file - else: + elif file.startswith(('http://', 'https://')): # download + url, file = file, Path(file).name + print(f'Downloading {url} to {file}...') + torch.hub.download_url_to_file(url, file) + assert Path(file).exists() and Path(file).stat().st_size > 0, f'File download failed: {url}' # check + return file + else: # search files = glob.glob('./**/' + file, recursive=True) # find file - assert len(files), f'File Not Found: {file}' # assert file was found + assert len(files), f'File not found: {file}' # assert file was found assert len(files) == 1, f"Multiple files match '{file}', specify exact path: {files}" # assert unique return files[0] # return file @@ -161,18 +198,54 @@ def check_dataset(dict): if not all(x.exists() for x in val): print('\nWARNING: Dataset not found, nonexistent paths: %s' % [str(x) for x in val if not x.exists()]) if s and len(s): # download script - print('Downloading %s ...' % s) if s.startswith('http') and s.endswith('.zip'): # URL f = Path(s).name # filename + print(f'Downloading {s} ...') torch.hub.download_url_to_file(s, f) - r = os.system('unzip -q %s -d ../ && rm %s' % (f, f)) # unzip - else: # bash script + r = os.system(f'unzip -q {f} -d ../ && rm {f}') # unzip + elif s.startswith('bash '): # bash script + print(f'Running {s} ...') r = os.system(s) - print('Dataset autodownload %s\n' % ('success' if r == 0 else 'failure')) # analyze return value + else: # python script + r = exec(s) # return None + print('Dataset autodownload %s\n' % ('success' if r in (0, None) else 'failure')) # print result else: raise Exception('Dataset not found.') +def download(url, dir='.', unzip=True, delete=True, curl=False, threads=1): + # Multi-threaded file download and unzip function + def download_one(url, dir): + # Download 1 file + f = dir / Path(url).name # filename + if not f.exists(): + print(f'Downloading {url} to {f}...') + if curl: + os.system(f"curl -L '{url}' -o '{f}' --retry 9 -C -") # curl download, retry and resume on fail + else: + torch.hub.download_url_to_file(url, f, progress=True) # torch download + if unzip and f.suffix in ('.zip', '.gz'): + print(f'Unzipping {f}...') + if f.suffix == '.zip': + s = f'unzip -qo {f} -d {dir} && rm {f}' # unzip -quiet -overwrite + elif f.suffix == '.gz': + s = f'tar xfz {f} --directory {f.parent}' # unzip + if delete: # delete zip file after unzip + s += f' && rm {f}' + os.system(s) + + dir = Path(dir) + dir.mkdir(parents=True, exist_ok=True) # make directory + if threads > 1: + pool = ThreadPool(threads) + pool.imap(lambda x: download_one(*x), zip(url, repeat(dir))) # multi-threaded + pool.close() + pool.join() + else: + for u in tuple(url) if isinstance(url, str) else url: + download_one(u, dir) + + def make_divisible(x, divisor): # Returns x evenly divisible by divisor return math.ceil(x / divisor) * divisor @@ -419,7 +492,7 @@ def wh_iou(wh1, wh2): def non_max_suppression(prediction, conf_thres=0.25, iou_thres=0.45, classes=None, agnostic=False, multi_label=False, - labels=()): + labels=(), max_det=300): """Runs Non-Maximum Suppression (NMS) on inference results Returns: @@ -429,9 +502,12 @@ def non_max_suppression(prediction, conf_thres=0.25, iou_thres=0.45, classes=Non nc = prediction.shape[2] - 5 # number of classes xc = prediction[..., 4] > conf_thres # candidates + # Checks + assert 0 <= conf_thres <= 1, f'Invalid Confidence threshold {conf_thres}, valid values are between 0.0 and 1.0' + assert 0 <= iou_thres <= 1, f'Invalid IoU {iou_thres}, valid values are between 0.0 and 1.0' + # Settings min_wh, max_wh = 2, 4096 # (pixels) minimum and maximum box width and height - max_det = 300 # maximum number of detections per image max_nms = 30000 # maximum number of boxes into torchvision.ops.nms() time_limit = 10.0 # seconds to quit after redundant = True # require redundant detections @@ -550,14 +626,14 @@ def print_mutation(hyp, results, yaml_file='hyp_evolved.yaml', bucket=''): results = tuple(x[0, :7]) c = '%10.4g' * len(results) % results # results (P, R, mAP@0.5, mAP@0.5:0.95, val_losses x 3) f.write('# Hyperparameter Evolution Results\n# Generations: %g\n# Metrics: ' % len(x) + c + '\n\n') - yaml.dump(hyp, f, sort_keys=False) + yaml.safe_dump(hyp, f, sort_keys=False) if bucket: os.system('gsutil cp evolve.txt %s gs://%s' % (yaml_file, bucket)) # upload def apply_classifier(x, model, img, im0): - # applies a second stage classifier to yolo outputs + # Apply a second stage classifier to yolo outputs im0 = [im0] if isinstance(im0, np.ndarray) else im0 for i, d in enumerate(x): # per image if d is not None and len(d): @@ -591,14 +667,33 @@ def apply_classifier(x, model, img, im0): return x -def increment_path(path, exist_ok=True, sep=''): - # Increment path, i.e. runs/exp --> runs/exp{sep}0, runs/exp{sep}1 etc. +def save_one_box(xyxy, im, file='image.jpg', gain=1.02, pad=10, square=False, BGR=False, save=True): + # Save image crop as {file} with crop size multiple {gain} and {pad} pixels. Save and/or return crop + xyxy = torch.tensor(xyxy).view(-1, 4) + b = xyxy2xywh(xyxy) # boxes + if square: + b[:, 2:] = b[:, 2:].max(1)[0].unsqueeze(1) # attempt rectangle to square + b[:, 2:] = b[:, 2:] * gain + pad # box wh * gain + pad + xyxy = xywh2xyxy(b).long() + clip_coords(xyxy, im.shape) + crop = im[int(xyxy[0, 1]):int(xyxy[0, 3]), int(xyxy[0, 0]):int(xyxy[0, 2]), ::(1 if BGR else -1)] + if save: + cv2.imwrite(str(increment_path(file, mkdir=True).with_suffix('.jpg')), crop) + return crop + + +def increment_path(path, exist_ok=False, sep='', mkdir=False): + # Increment file or directory path, i.e. runs/exp --> runs/exp{sep}2, runs/exp{sep}3, ... etc. path = Path(path) # os-agnostic - if (path.exists() and exist_ok) or (not path.exists()): - return str(path) - else: + if path.exists() and not exist_ok: + suffix = path.suffix + path = path.with_suffix('') dirs = glob.glob(f"{path}{sep}*") # similar paths matches = [re.search(rf"%s{sep}(\d+)" % path.stem, d) for d in dirs] i = [int(m.groups()[0]) for m in matches if m] # indices n = max(i) + 1 if i else 2 # increment number - return f"{path}{sep}{n}" # update path + path = Path(f"{path}{sep}{n}{suffix}") # update path + dir = path if path.suffix == '' else path.parent # directory + if not dir.exists() and mkdir: + dir.mkdir(parents=True, exist_ok=True) # make directory + return path diff --git a/utils/google_utils.py b/utils/google_utils.py index 61af2f43..340fab13 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -16,40 +16,57 @@ def gsutil_getsize(url=''): return eval(s.split(' ')[0]) if len(s) else 0 # bytes +def safe_download(file, url, url2=None, min_bytes=1E0, error_msg=''): + # Attempts to download file from url or url2, checks and removes incomplete downloads < min_bytes + file = Path(file) + try: # GitHub + print(f'Downloading {url} to {file}...') + torch.hub.download_url_to_file(url, str(file)) + assert file.exists() and file.stat().st_size > min_bytes # check + except Exception as e: # GCP + file.unlink(missing_ok=True) # remove partial downloads + print(f'Download error: {e}\nRe-attempting {url2 or url} to {file}...') + os.system(f"curl -L '{url2 or url}' -o '{file}' --retry 3 -C -") # curl download, retry and resume on fail + finally: + if not file.exists() or file.stat().st_size < min_bytes: # check + file.unlink(missing_ok=True) # remove partial downloads + print(f'ERROR: Download failure: {error_msg or url}') + print('') + + def attempt_download(file, repo='ultralytics/yolov3'): # Attempt file download if does not exist - file = Path(str(file).strip().replace("'", '').lower()) + file = Path(str(file).strip().replace("'", '')) if not file.exists(): + # URL specified + name = file.name + if str(file).startswith(('http:/', 'https:/')): # download + url = str(file).replace(':/', '://') # Pathlib turns :// -> :/ + safe_download(file=name, url=url, min_bytes=1E5) + return name + + # GitHub assets + file.parent.mkdir(parents=True, exist_ok=True) # make parent dir (if required) try: response = requests.get(f'https://api.github.com/repos/{repo}/releases/latest').json() # github api assets = [x['name'] for x in response['assets']] # release assets, i.e. ['yolov5s.pt', 'yolov5m.pt', ...] tag = response['tag_name'] # i.e. 'v1.0' except: # fallback plan assets = ['yolov3.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt'] - tag = subprocess.check_output('git tag', shell=True).decode().split()[-1] + try: + tag = subprocess.check_output('git tag', shell=True, stderr=subprocess.STDOUT).decode().split()[-1] + except: + tag = 'v9.5.0' # current release - name = file.name if name in assets: - msg = f'{file} missing, try downloading from https://github.com/{repo}/releases/' - redundant = False # second download option - try: # GitHub - url = f'https://github.com/{repo}/releases/download/{tag}/{name}' - print(f'Downloading {url} to {file}...') - torch.hub.download_url_to_file(url, file) - assert file.exists() and file.stat().st_size > 1E6 # check - except Exception as e: # GCP - print(f'Download error: {e}') - assert redundant, 'No secondary mirror' - url = f'https://storage.googleapis.com/{repo}/ckpt/{name}' - print(f'Downloading {url} to {file}...') - os.system(f'curl -L {url} -o {file}') # torch.hub.download_url_to_file(url, weights) - finally: - if not file.exists() or file.stat().st_size < 1E6: # check - file.unlink(missing_ok=True) # remove partial downloads - print(f'ERROR: Download failure: {msg}') - print('') - return + safe_download(file, + url=f'https://github.com/{repo}/releases/download/{tag}/{name}', + # url2=f'https://storage.googleapis.com/{repo}/ckpt/{name}', # backup url (optional) + min_bytes=1E5, + error_msg=f'{file} missing, try downloading from https://github.com/{repo}/releases/') + + return str(file) def gdrive_download(id='16TiPfZj7htmTyhntwcZyEEAejOUxuT6m', file='tmp.zip'): diff --git a/utils/metrics.py b/utils/metrics.py index 666b8c7e..323c84b6 100644 --- a/utils/metrics.py +++ b/utils/metrics.py @@ -145,7 +145,7 @@ class ConfusionMatrix: for i, gc in enumerate(gt_classes): j = m0 == i if n and sum(j) == 1: - self.matrix[gc, detection_classes[m1[j]]] += 1 # correct + self.matrix[detection_classes[m1[j]], gc] += 1 # correct else: self.matrix[self.nc, gc] += 1 # background FP diff --git a/utils/plots.py b/utils/plots.py index 8b90bd8d..2ae36523 100644 --- a/utils/plots.py +++ b/utils/plots.py @@ -16,7 +16,6 @@ import seaborn as sns import torch import yaml from PIL import Image, ImageDraw, ImageFont -from scipy.signal import butter, filtfilt from utils.general import xywh2xyxy, xyxy2xywh from utils.metrics import fitness @@ -26,12 +25,25 @@ matplotlib.rc('font', **{'size': 11}) matplotlib.use('Agg') # for writing to files only -def color_list(): - # Return first 10 plt colors as (r,g,b) https://stackoverflow.com/questions/51350872/python-from-color-name-to-rgb - def hex2rgb(h): +class Colors: + # Ultralytics color palette https://ultralytics.com/ + def __init__(self): + # hex = matplotlib.colors.TABLEAU_COLORS.values() + hex = ('FF3838', 'FF9D97', 'FF701F', 'FFB21D', 'CFD231', '48F90A', '92CC17', '3DDB86', '1A9334', '00D4BB', + '2C99A8', '00C2FF', '344593', '6473FF', '0018EC', '8438FF', '520085', 'CB38FF', 'FF95C8', 'FF37C7') + self.palette = [self.hex2rgb('#' + c) for c in hex] + self.n = len(self.palette) + + def __call__(self, i, bgr=False): + c = self.palette[int(i) % self.n] + return (c[2], c[1], c[0]) if bgr else c + + @staticmethod + def hex2rgb(h): # rgb order (PIL) return tuple(int(h[1 + i:1 + i + 2], 16) for i in (0, 2, 4)) - return [hex2rgb(h) for h in matplotlib.colors.TABLEAU_COLORS.values()] # or BASE_ (8), CSS4_ (148), XKCD_ (949) + +colors = Colors() # create instance for 'from utils.plots import colors' def hist2d(x, y, n=100): @@ -44,6 +56,8 @@ def hist2d(x, y, n=100): def butter_lowpass_filtfilt(data, cutoff=1500, fs=50000, order=5): + from scipy.signal import butter, filtfilt + # https://stackoverflow.com/questions/28536191/how-to-filter-smooth-with-scipy-numpy def butter_lowpass(cutoff, fs, order): nyq = 0.5 * fs @@ -54,32 +68,32 @@ def butter_lowpass_filtfilt(data, cutoff=1500, fs=50000, order=5): return filtfilt(b, a, data) # forward-backward filter -def plot_one_box(x, img, color=None, label=None, line_thickness=3): - # Plots one bounding box on image img - tl = line_thickness or round(0.002 * (img.shape[0] + img.shape[1]) / 2) + 1 # line/font thickness - color = color or [random.randint(0, 255) for _ in range(3)] +def plot_one_box(x, im, color=(128, 128, 128), label=None, line_thickness=3): + # Plots one bounding box on image 'im' using OpenCV + assert im.data.contiguous, 'Image not contiguous. Apply np.ascontiguousarray(im) to plot_on_box() input image.' + tl = line_thickness or round(0.002 * (im.shape[0] + im.shape[1]) / 2) + 1 # line/font thickness c1, c2 = (int(x[0]), int(x[1])), (int(x[2]), int(x[3])) - cv2.rectangle(img, c1, c2, color, thickness=tl, lineType=cv2.LINE_AA) + cv2.rectangle(im, c1, c2, color, thickness=tl, lineType=cv2.LINE_AA) if label: tf = max(tl - 1, 1) # font thickness t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, thickness=tf)[0] c2 = c1[0] + t_size[0], c1[1] - t_size[1] - 3 - cv2.rectangle(img, c1, c2, color, -1, cv2.LINE_AA) # filled - cv2.putText(img, label, (c1[0], c1[1] - 2), 0, tl / 3, [225, 255, 255], thickness=tf, lineType=cv2.LINE_AA) + cv2.rectangle(im, c1, c2, color, -1, cv2.LINE_AA) # filled + cv2.putText(im, label, (c1[0], c1[1] - 2), 0, tl / 3, [225, 255, 255], thickness=tf, lineType=cv2.LINE_AA) -def plot_one_box_PIL(box, img, color=None, label=None, line_thickness=None): - img = Image.fromarray(img) - draw = ImageDraw.Draw(img) - line_thickness = line_thickness or max(int(min(img.size) / 200), 2) - draw.rectangle(box, width=line_thickness, outline=tuple(color)) # plot +def plot_one_box_PIL(box, im, color=(128, 128, 128), label=None, line_thickness=None): + # Plots one bounding box on image 'im' using PIL + im = Image.fromarray(im) + draw = ImageDraw.Draw(im) + line_thickness = line_thickness or max(int(min(im.size) / 200), 2) + draw.rectangle(box, width=line_thickness, outline=color) # plot if label: - fontsize = max(round(max(img.size) / 40), 12) - font = ImageFont.truetype("Arial.ttf", fontsize) + font = ImageFont.truetype("Arial.ttf", size=max(round(max(im.size) / 40), 12)) txt_width, txt_height = font.getsize(label) - draw.rectangle([box[0], box[1] - txt_height + 4, box[0] + txt_width, box[1]], fill=tuple(color)) + draw.rectangle([box[0], box[1] - txt_height + 4, box[0] + txt_width, box[1]], fill=color) draw.text((box[0], box[1] - txt_height + 1), label, fill=(255, 255, 255), font=font) - return np.asarray(img) + return np.asarray(im) def plot_wh_methods(): # from utils.plots import *; plot_wh_methods() @@ -135,7 +149,6 @@ def plot_images(images, targets, paths=None, fname='images.jpg', names=None, max h = math.ceil(scale_factor * h) w = math.ceil(scale_factor * w) - colors = color_list() # list of colors mosaic = np.full((int(ns * h), int(ns * w), 3), 255, dtype=np.uint8) # init for i, img in enumerate(images): if i == max_subplots: # if last batch has fewer images than we expect @@ -166,7 +179,7 @@ def plot_images(images, targets, paths=None, fname='images.jpg', names=None, max boxes[[1, 3]] += block_y for j, box in enumerate(boxes.T): cls = int(classes[j]) - color = colors[cls % len(colors)] + color = colors(cls) cls = names[cls] if names else cls if labels or conf[j] > 0.25: # 0.25 conf thresh label = '%s' % cls if labels else '%s %.1f' % (cls, conf[j]) @@ -274,7 +287,6 @@ def plot_labels(labels, names=(), save_dir=Path(''), loggers=None): print('Plotting labels... ') c, b = labels[:, 0], labels[:, 1:].transpose() # classes, boxes nc = int(c.max() + 1) # number of classes - colors = color_list() x = pd.DataFrame(b.transpose(), columns=['x', 'y', 'width', 'height']) # seaborn correlogram @@ -285,7 +297,8 @@ def plot_labels(labels, names=(), save_dir=Path(''), loggers=None): # matplotlib labels matplotlib.use('svg') # faster ax = plt.subplots(2, 2, figsize=(8, 8), tight_layout=True)[1].ravel() - ax[0].hist(c, bins=np.linspace(0, nc, nc + 1) - 0.5, rwidth=0.8) + y = ax[0].hist(c, bins=np.linspace(0, nc, nc + 1) - 0.5, rwidth=0.8) + # [y[2].patches[i].set_color([x / 255 for x in colors(i)]) for i in range(nc)] # update colors bug #3195 ax[0].set_ylabel('instances') if 0 < len(names) < 30: ax[0].set_xticks(range(len(names))) @@ -300,7 +313,7 @@ def plot_labels(labels, names=(), save_dir=Path(''), loggers=None): labels[:, 1:] = xywh2xyxy(labels[:, 1:]) * 2000 img = Image.fromarray(np.ones((2000, 2000, 3), dtype=np.uint8) * 255) for cls, *box in labels[:1000]: - ImageDraw.Draw(img).rectangle(box, width=1, outline=colors[int(cls) % 10]) # plot + ImageDraw.Draw(img).rectangle(box, width=1, outline=colors(cls)) # plot ax[1].imshow(img) ax[1].axis('off') @@ -321,7 +334,7 @@ def plot_labels(labels, names=(), save_dir=Path(''), loggers=None): def plot_evolution(yaml_file='data/hyp.finetune.yaml'): # from utils.plots import *; plot_evolution() # Plot hyperparameter evolution results in evolve.txt with open(yaml_file) as f: - hyp = yaml.load(f, Loader=yaml.SafeLoader) + hyp = yaml.safe_load(f) x = np.loadtxt('evolve.txt', ndmin=2) f = fitness(x) # weights = (f - f.min()) ** 2 # for weighted results diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 6535b2ab..9114112a 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -72,11 +72,12 @@ def select_device(device='', batch_size=None): cuda = not cpu and torch.cuda.is_available() if cuda: - n = torch.cuda.device_count() - if n > 1 and batch_size: # check that batch_size is compatible with device_count + devices = device.split(',') if device else range(torch.cuda.device_count()) # i.e. 0,1,6,7 + n = len(devices) # device count + if n > 1 and batch_size: # check batch_size is divisible by device_count assert batch_size % n == 0, f'batch-size {batch_size} not multiple of GPU count {n}' space = ' ' * len(s) - for i, d in enumerate(device.split(',') if device else range(n)): + for i, d in enumerate(devices): p = torch.cuda.get_device_properties(i) s += f"{'' if i == 0 else space}CUDA:{d} ({p.name}, {p.total_memory / 1024 ** 2}MB)\n" # bytes to MB else: @@ -133,9 +134,15 @@ def profile(x, ops, n=100, device=None): def is_parallel(model): + # Returns True if model is of type DP or DDP return type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel) +def de_parallel(model): + # De-parallelize a model: returns single-GPU model if model is of type DP or DDP + return model.module if is_parallel(model) else model + + def intersect_dicts(da, db, exclude=()): # Dictionary intersection of matching keys and shapes, omitting 'exclude' keys, using da values return {k: v for k, v in da.items() if k in db and not any(x in k for x in exclude) and v.shape == db[k].shape} diff --git a/utils/wandb_logging/log_dataset.py b/utils/wandb_logging/log_dataset.py index d7a521f1..fae76b04 100644 --- a/utils/wandb_logging/log_dataset.py +++ b/utils/wandb_logging/log_dataset.py @@ -9,7 +9,7 @@ WANDB_ARTIFACT_PREFIX = 'wandb-artifact://' def create_dataset_artifact(opt): with open(opt.data) as f: - data = yaml.load(f, Loader=yaml.SafeLoader) # data dict + data = yaml.safe_load(f) # data dict logger = WandbLogger(opt, '', None, data, job_type='Dataset Creation') @@ -17,7 +17,7 @@ if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--data', type=str, default='data/coco128.yaml', help='data.yaml path') parser.add_argument('--single-cls', action='store_true', help='train as single-class dataset') - parser.add_argument('--project', type=str, default='YOLOv5', help='name of W&B Project') + parser.add_argument('--project', type=str, default='YOLOv3', help='name of W&B Project') opt = parser.parse_args() opt.resume = False # Explicitly disallow resume check for dataset upload job diff --git a/utils/wandb_logging/wandb_utils.py b/utils/wandb_logging/wandb_utils.py index d8f50ae8..12bd320c 100644 --- a/utils/wandb_logging/wandb_utils.py +++ b/utils/wandb_logging/wandb_utils.py @@ -1,3 +1,4 @@ +"""Utilities and tools for tracking runs with Weights & Biases.""" import json import sys from pathlib import Path @@ -9,7 +10,7 @@ from tqdm import tqdm sys.path.append(str(Path(__file__).parent.parent.parent)) # add utils/ to path from utils.datasets import LoadImagesAndLabels from utils.datasets import img2label_paths -from utils.general import colorstr, xywh2xyxy, check_dataset +from utils.general import colorstr, xywh2xyxy, check_dataset, check_file try: import wandb @@ -35,8 +36,9 @@ def get_run_info(run_path): run_path = Path(remove_prefix(run_path, WANDB_ARTIFACT_PREFIX)) run_id = run_path.stem project = run_path.parent.stem + entity = run_path.parent.parent.stem model_artifact_name = 'run_' + run_id + '_model' - return run_id, project, model_artifact_name + return entity, project, run_id, model_artifact_name def check_wandb_resume(opt): @@ -44,9 +46,9 @@ def check_wandb_resume(opt): if isinstance(opt.resume, str): if opt.resume.startswith(WANDB_ARTIFACT_PREFIX): if opt.global_rank not in [-1, 0]: # For resuming DDP runs - run_id, project, model_artifact_name = get_run_info(opt.resume) + entity, project, run_id, model_artifact_name = get_run_info(opt.resume) api = wandb.Api() - artifact = api.artifact(project + '/' + model_artifact_name + ':latest') + artifact = api.artifact(entity + '/' + project + '/' + model_artifact_name + ':latest') modeldir = artifact.download() opt.weights = str(Path(modeldir) / "last.pt") return True @@ -54,8 +56,8 @@ def check_wandb_resume(opt): def process_wandb_config_ddp_mode(opt): - with open(opt.data) as f: - data_dict = yaml.load(f, Loader=yaml.SafeLoader) # data dict + with open(check_file(opt.data)) as f: + data_dict = yaml.safe_load(f) # data dict train_dir, val_dir = None, None if isinstance(data_dict['train'], str) and data_dict['train'].startswith(WANDB_ARTIFACT_PREFIX): api = wandb.Api() @@ -73,11 +75,23 @@ def process_wandb_config_ddp_mode(opt): if train_dir or val_dir: ddp_data_path = str(Path(val_dir) / 'wandb_local_data.yaml') with open(ddp_data_path, 'w') as f: - yaml.dump(data_dict, f) + yaml.safe_dump(data_dict, f) opt.data = ddp_data_path class WandbLogger(): + """Log training runs, datasets, models, and predictions to Weights & Biases. + + This logger sends information to W&B at wandb.ai. By default, this information + includes hyperparameters, system configuration and metrics, model metrics, + and basic data metrics and analyses. + + By providing additional command line arguments to train.py, datasets, + models and predictions can also be logged. + + For more on how this logger is used, see the Weights & Biases documentation: + https://docs.wandb.com/guides/integrations/yolov5 + """ def __init__(self, opt, name, run_id, data_dict, job_type='Training'): # Pre-training routine -- self.job_type = job_type @@ -85,16 +99,17 @@ class WandbLogger(): # It's more elegant to stick to 1 wandb.init call, but useful config data is overwritten in the WandbLogger's wandb.init call if isinstance(opt.resume, str): # checks resume from artifact if opt.resume.startswith(WANDB_ARTIFACT_PREFIX): - run_id, project, model_artifact_name = get_run_info(opt.resume) + entity, project, run_id, model_artifact_name = get_run_info(opt.resume) model_artifact_name = WANDB_ARTIFACT_PREFIX + model_artifact_name assert wandb, 'install wandb to resume wandb runs' # Resume wandb-artifact:// runs here| workaround for not overwriting wandb.config - self.wandb_run = wandb.init(id=run_id, project=project, resume='allow') + self.wandb_run = wandb.init(id=run_id, project=project, entity=entity, resume='allow') opt.resume = model_artifact_name elif self.wandb: self.wandb_run = wandb.init(config=opt, resume="allow", - project='YOLOv5' if opt.project == 'runs/train' else Path(opt.project).stem, + project='YOLOv3' if opt.project == 'runs/train' else Path(opt.project).stem, + entity=opt.entity, name=name, job_type=job_type, id=run_id) if not wandb.run else wandb.run @@ -110,17 +125,17 @@ class WandbLogger(): self.data_dict = self.check_and_upload_dataset(opt) else: prefix = colorstr('wandb: ') - print(f"{prefix}Install Weights & Biases for YOLOv5 logging with 'pip install wandb' (recommended)") + print(f"{prefix}Install Weights & Biases for YOLOv3 logging with 'pip install wandb' (recommended)") def check_and_upload_dataset(self, opt): assert wandb, 'Install wandb to upload dataset' check_dataset(self.data_dict) - config_path = self.log_dataset_artifact(opt.data, + config_path = self.log_dataset_artifact(check_file(opt.data), opt.single_cls, - 'YOLOv5' if opt.project == 'runs/train' else Path(opt.project).stem) + 'YOLOv3' if opt.project == 'runs/train' else Path(opt.project).stem) print("Created dataset config file ", config_path) with open(config_path) as f: - wandb_data_dict = yaml.load(f, Loader=yaml.SafeLoader) + wandb_data_dict = yaml.safe_load(f) return wandb_data_dict def setup_training(self, opt, data_dict): @@ -158,7 +173,8 @@ class WandbLogger(): def download_dataset_artifact(self, path, alias): if isinstance(path, str) and path.startswith(WANDB_ARTIFACT_PREFIX): - dataset_artifact = wandb.use_artifact(remove_prefix(path, WANDB_ARTIFACT_PREFIX) + ":" + alias) + artifact_path = Path(remove_prefix(path, WANDB_ARTIFACT_PREFIX) + ":" + alias) + dataset_artifact = wandb.use_artifact(artifact_path.as_posix()) assert dataset_artifact is not None, "'Error: W&B dataset artifact doesn\'t exist'" datadir = dataset_artifact.download() return datadir, dataset_artifact @@ -171,8 +187,8 @@ class WandbLogger(): modeldir = model_artifact.download() epochs_trained = model_artifact.metadata.get('epochs_trained') total_epochs = model_artifact.metadata.get('total_epochs') - assert epochs_trained < total_epochs, 'training to %g epochs is finished, nothing to resume.' % ( - total_epochs) + is_finished = total_epochs is None + assert not is_finished, 'training is finished, can only resume incomplete runs.' return modeldir, model_artifact return None, None @@ -187,18 +203,18 @@ class WandbLogger(): }) model_artifact.add_file(str(path / 'last.pt'), name='last.pt') wandb.log_artifact(model_artifact, - aliases=['latest', 'epoch ' + str(self.current_epoch), 'best' if best_model else '']) + aliases=['latest', 'last', 'epoch ' + str(self.current_epoch), 'best' if best_model else '']) print("Saving model artifact on epoch ", epoch + 1) def log_dataset_artifact(self, data_file, single_cls, project, overwrite_config=False): with open(data_file) as f: - data = yaml.load(f, Loader=yaml.SafeLoader) # data dict + data = yaml.safe_load(f) # data dict nc, names = (1, ['item']) if single_cls else (int(data['nc']), data['names']) names = {k: v for k, v in enumerate(names)} # to index dictionary self.train_artifact = self.create_dataset_table(LoadImagesAndLabels( - data['train']), names, name='train') if data.get('train') else None + data['train'], rect=True, batch_size=1), names, name='train') if data.get('train') else None self.val_artifact = self.create_dataset_table(LoadImagesAndLabels( - data['val']), names, name='val') if data.get('val') else None + data['val'], rect=True, batch_size=1), names, name='val') if data.get('val') else None if data.get('train'): data['train'] = WANDB_ARTIFACT_PREFIX + str(Path(project) / 'train') if data.get('val'): @@ -206,7 +222,7 @@ class WandbLogger(): path = data_file if overwrite_config else '_wandb.'.join(data_file.rsplit('.', 1)) # updated data.yaml path data.pop('download', None) with open(path, 'w') as f: - yaml.dump(data, f) + yaml.safe_dump(data, f) if self.job_type == 'Training': # builds correct artifact pipeline graph self.wandb_run.use_artifact(self.val_artifact) @@ -243,16 +259,12 @@ class WandbLogger(): table = wandb.Table(columns=["id", "train_image", "Classes", "name"]) class_set = wandb.Classes([{'id': id, 'name': name} for id, name in class_to_id.items()]) for si, (img, labels, paths, shapes) in enumerate(tqdm(dataset)): - height, width = shapes[0] - labels[:, 2:] = (xywh2xyxy(labels[:, 2:].view(-1, 4))) * torch.Tensor([width, height, width, height]) box_data, img_classes = [], {} - for cls, *xyxy in labels[:, 1:].tolist(): + for cls, *xywh in labels[:, 1:].tolist(): cls = int(cls) - box_data.append({"position": {"minX": xyxy[0], "minY": xyxy[1], "maxX": xyxy[2], "maxY": xyxy[3]}, + box_data.append({"position": {"middle": [xywh[0], xywh[1]], "width": xywh[2], "height": xywh[3]}, "class_id": cls, - "box_caption": "%s" % (class_to_id[cls]), - "scores": {"acc": 1}, - "domain": "pixel"}) + "box_caption": "%s" % (class_to_id[cls])}) img_classes[cls] = class_to_id[cls] boxes = {"ground_truth": {"box_data": box_data, "class_labels": class_to_id}} # inference-space table.add_data(si, wandb.Image(paths, classes=class_set, boxes=boxes), json.dumps(img_classes), @@ -294,7 +306,7 @@ class WandbLogger(): if self.result_artifact: train_results = wandb.JoinedTable(self.val_table, self.result_table, "id") self.result_artifact.add(train_results, 'result') - wandb.log_artifact(self.result_artifact, aliases=['latest', 'epoch ' + str(self.current_epoch), + wandb.log_artifact(self.result_artifact, aliases=['latest', 'last', 'epoch ' + str(self.current_epoch), ('best' if best_result else '')]) self.result_table = wandb.Table(["epoch", "id", "prediction", "avg_confidence"]) self.result_artifact = wandb.Artifact("run_" + wandb.run.id + "_progress", "evaluation") From 044eb9142b13796abfe3634070eaa27c60c167b3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 30 May 2021 19:40:48 +0200 Subject: [PATCH 2546/2595] Update README.md (#1777) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 257d0f64..04012af4 100755 --- a/README.md +++ b/README.md @@ -152,9 +152,9 @@ Ultralytics is a U.S.-based particle physics and AI startup with over 6 years of - **Edge AI** integrated into custom iOS and Android apps for realtime **30 FPS video inference.** - **Custom data training**, hyperparameter evolution, and model exportation to any destination. -For business inquiries and professional support requests please visit us at https://www.ultralytics.com. +For business inquiries and professional support requests please visit us at https://ultralytics.com. ## Contact -**Issues should be raised directly in the repository.** For business inquiries or professional support requests please visit https://www.ultralytics.com or email Glenn Jocher at glenn.jocher@ultralytics.com. +**Issues should be raised directly in the repository.** For business inquiries or professional support requests please visit https://ultralytics.com or email Glenn Jocher at glenn.jocher@ultralytics.com. From ab7ff9dd4c8b8e5a2c282fee93e975887a91ff7b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 31 May 2021 10:40:13 +0200 Subject: [PATCH 2547/2595] Revert "`cv2.imread(img, -1)` for IMREAD_UNCHANGED" (#1778) --- utils/datasets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/datasets.py b/utils/datasets.py index 481b79a9..35aa430a 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -181,7 +181,7 @@ class LoadImages: # for inference else: # Read image self.count += 1 - img0 = cv2.imread(path, -1) # BGR (-1 is IMREAD_UNCHANGED) + img0 = cv2.imread(path) # BGR assert img0 is not None, 'Image Not Found ' + path print(f'image {self.count}/{self.nf} {path}: ', end='') From 66e54d3d2cc0e98f63d6447d578f15ce77016f6e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 6 Jun 2021 18:50:08 +0200 Subject: [PATCH 2548/2595] Update stale.yml (#1784) --- .github/workflows/stale.yml | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 0a094e23..e9adff98 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -10,8 +10,26 @@ jobs: - uses: actions/stale@v3 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.' - stale-pr-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.' + stale-issue-message: | + 👋 Hello, this issue has been automatically marked as stale because it has not had recent activity. Please note it will be closed if no further activity occurs. + + Access additional [YOLOv3](https://ultralytics.com/yolov5) 🚀 resources: + - **Wiki** – https://github.com/ultralytics/yolov3/wiki + - **Tutorials** – https://github.com/ultralytics/yolov3#tutorials + - **Docs** – https://docs.ultralytics.com + + Access additional [Ultralytics](https://ultralytics.com) ⚡ resources: + - **Ultralytics HUB** – https://ultralytics.com/pricing + - **Vision API** – https://ultralytics.com/yolov5 + - **About Us** – https://ultralytics.com/about + - **Join Our Team** – https://ultralytics.com/work + - **Contact Us** – https://ultralytics.com/contact + + Feel free to inform us of any other **issues** you discover or **feature requests** that come to mind in the future. Pull Requests (PRs) are also always welcomed! + + Thank you for your contributions to YOLOv3 🚀 and Vision AI ⭐! + + stale-pr-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions YOLOv3 🚀 and Vision AI ⭐.' days-before-stale: 30 days-before-close: 5 exempt-issue-labels: 'documentation,tutorial' From 1be31704c9c690929e4f6e6d950f40755ef2dcdc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Jun 2021 21:27:16 +0200 Subject: [PATCH 2549/2595] Bump pip from 18.1 to 19.2 in /utils/google_app_engine (#1787) Bumps [pip](https://github.com/pypa/pip) from 18.1 to 19.2. - [Release notes](https://github.com/pypa/pip/releases) - [Changelog](https://github.com/pypa/pip/blob/main/NEWS.rst) - [Commits](https://github.com/pypa/pip/compare/18.1...19.2) --- updated-dependencies: - dependency-name: pip dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- utils/google_app_engine/additional_requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/google_app_engine/additional_requirements.txt b/utils/google_app_engine/additional_requirements.txt index 5fcc3052..2f81c8b4 100644 --- a/utils/google_app_engine/additional_requirements.txt +++ b/utils/google_app_engine/additional_requirements.txt @@ -1,4 +1,4 @@ # add these requirements in your app on top of the existing ones -pip==18.1 +pip==19.2 Flask==1.0.2 gunicorn==19.9.0 From 7eb23e3c1d387cdcefbad266046af369a9f40399 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 14 Nov 2021 22:22:59 +0100 Subject: [PATCH 2550/2595] YOLOv5 v6.0 compatibility update (#1857) * Initial commit * Initial commit * Cleanup * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fix precommit errors * Remove TF builds from CI * export last.pt * Created using Colaboratory * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .dockerignore | 10 +- .github/ISSUE_TEMPLATE/bug-report.md | 55 -- .github/ISSUE_TEMPLATE/bug-report.yml | 85 ++ .github/ISSUE_TEMPLATE/config.yml | 8 + .github/ISSUE_TEMPLATE/feature-request.md | 27 - .github/ISSUE_TEMPLATE/feature-request.yml | 50 + .github/ISSUE_TEMPLATE/question.md | 13 - .github/ISSUE_TEMPLATE/question.yml | 33 + .github/dependabot.yml | 31 +- .github/workflows/ci-testing.yml | 48 +- .github/workflows/codeql-analysis.yml | 54 +- .github/workflows/greetings.yml | 29 +- .github/workflows/rebase.yml | 10 +- .github/workflows/stale.yml | 10 +- .gitignore | 20 +- .pre-commit-config.yaml | 66 ++ CONTRIBUTING.md | 94 ++ Dockerfile | 29 +- LICENSE | 2 +- README.md | 351 ++++--- data/Argoverse.yaml | 67 ++ data/GlobalWheat2020.yaml | 58 +- data/SKU-110K.yaml | 38 +- data/VisDrone.yaml | 32 +- data/argoverse_hd.yaml | 21 - data/coco.yaml | 65 +- data/coco128.yaml | 48 +- data/hyp.finetune.yaml | 38 - data/hyp.finetune_objects365.yaml | 28 - data/hyps/hyp.scratch-high.yaml | 34 + data/hyps/hyp.scratch-low.yaml | 34 + data/hyps/hyp.scratch-med.yaml | 34 + data/{ => hyps}/hyp.scratch.yaml | 5 +- data/objects365.yaml | 180 ++-- data/scripts/download_weights.sh | 18 + data/scripts/get_argoverse_hd.sh | 61 -- data/scripts/get_coco.sh | 22 +- data/scripts/get_coco128.sh | 20 +- data/scripts/get_voc.sh | 116 --- data/voc.yaml | 91 +- data/xView.yaml | 102 +++ detect.py | 248 +++-- export.py | 369 ++++++++ hubconf.py | 46 +- models/common.py | 374 ++++++-- models/experimental.py | 84 +- models/export.py | 145 --- models/tf.py | 465 ++++++++++ models/yolo.py | 204 +++-- models/yolov3-spp.yaml | 6 +- models/yolov3-tiny.yaml | 6 +- models/yolov3.yaml | 6 +- requirements.txt | 30 +- setup.cfg | 51 ++ test.py | 349 ------- train.py | 656 ++++++------- tutorial.ipynb | 861 +++++++----------- utils/__init__.py | 18 + utils/activations.py | 7 +- utils/augmentations.py | 277 ++++++ utils/autoanchor.py | 91 +- utils/autobatch.py | 57 ++ utils/aws/mime.sh | 26 - utils/aws/resume.py | 37 - utils/aws/userdata.sh | 27 - utils/callbacks.py | 76 ++ utils/datasets.py | 847 +++++++++-------- utils/{google_utils.py => downloads.py} | 34 +- utils/flask_rest_api/README.md | 68 -- utils/flask_rest_api/example_request.py | 13 - utils/flask_rest_api/restapi.py | 37 - utils/general.py | 562 +++++++----- utils/google_app_engine/Dockerfile | 25 - .../additional_requirements.txt | 4 - utils/google_app_engine/app.yaml | 14 - utils/loggers/__init__.py | 156 ++++ utils/loggers/wandb/README.md | 147 +++ utils/{aws => loggers/wandb}/__init__.py | 0 .../wandb}/log_dataset.py | 13 +- utils/loggers/wandb/sweep.py | 41 + utils/loggers/wandb/sweep.yaml | 143 +++ utils/loggers/wandb/wandb_utils.py | 532 +++++++++++ utils/loss.py | 42 +- utils/metrics.py | 136 ++- utils/plots.py | 439 ++++----- utils/torch_utils.py | 184 ++-- utils/wandb_logging/__init__.py | 0 utils/wandb_logging/wandb_utils.py | 318 ------- val.py | 367 ++++++++ weights/download_weights.sh | 12 - 90 files changed, 6642 insertions(+), 4145 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/bug-report.md create mode 100644 .github/ISSUE_TEMPLATE/bug-report.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml delete mode 100644 .github/ISSUE_TEMPLATE/feature-request.md create mode 100644 .github/ISSUE_TEMPLATE/feature-request.yml delete mode 100644 .github/ISSUE_TEMPLATE/question.md create mode 100644 .github/ISSUE_TEMPLATE/question.yml create mode 100644 .pre-commit-config.yaml create mode 100644 CONTRIBUTING.md mode change 100755 => 100644 README.md create mode 100644 data/Argoverse.yaml delete mode 100644 data/argoverse_hd.yaml delete mode 100644 data/hyp.finetune.yaml delete mode 100644 data/hyp.finetune_objects365.yaml create mode 100644 data/hyps/hyp.scratch-high.yaml create mode 100644 data/hyps/hyp.scratch-low.yaml create mode 100644 data/hyps/hyp.scratch-med.yaml rename data/{ => hyps}/hyp.scratch.yaml (90%) create mode 100755 data/scripts/download_weights.sh delete mode 100644 data/scripts/get_argoverse_hd.sh delete mode 100644 data/scripts/get_voc.sh create mode 100644 data/xView.yaml create mode 100644 export.py delete mode 100644 models/export.py create mode 100644 models/tf.py create mode 100644 setup.cfg delete mode 100644 test.py create mode 100644 utils/augmentations.py create mode 100644 utils/autobatch.py delete mode 100644 utils/aws/mime.sh delete mode 100644 utils/aws/resume.py delete mode 100644 utils/aws/userdata.sh create mode 100644 utils/callbacks.py rename utils/{google_utils.py => downloads.py} (83%) delete mode 100644 utils/flask_rest_api/README.md delete mode 100644 utils/flask_rest_api/example_request.py delete mode 100644 utils/flask_rest_api/restapi.py delete mode 100644 utils/google_app_engine/Dockerfile delete mode 100644 utils/google_app_engine/additional_requirements.txt delete mode 100644 utils/google_app_engine/app.yaml create mode 100644 utils/loggers/__init__.py create mode 100644 utils/loggers/wandb/README.md rename utils/{aws => loggers/wandb}/__init__.py (100%) rename utils/{wandb_logging => loggers/wandb}/log_dataset.py (61%) create mode 100644 utils/loggers/wandb/sweep.py create mode 100644 utils/loggers/wandb/sweep.yaml create mode 100644 utils/loggers/wandb/wandb_utils.py delete mode 100644 utils/wandb_logging/__init__.py delete mode 100644 utils/wandb_logging/wandb_utils.py create mode 100644 val.py delete mode 100755 weights/download_weights.sh diff --git a/.dockerignore b/.dockerignore index 3c6b6ab0..6c2f2b9b 100644 --- a/.dockerignore +++ b/.dockerignore @@ -8,17 +8,21 @@ coco storage.googleapis.com data/samples/* -**/results*.txt +**/results*.csv *.jpg # Neural Network weights ----------------------------------------------------------------------------------------------- -**/*.weights **/*.pt **/*.pth **/*.onnx **/*.mlmodel **/*.torchscript - +**/*.torchscript.pt +**/*.tflite +**/*.h5 +**/*.pb +*_saved_model/ +*_web_model/ # Below Copied From .gitignore ----------------------------------------------------------------------------------------- # Below Copied From .gitignore ----------------------------------------------------------------------------------------- diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md deleted file mode 100644 index 3f7d83a4..00000000 --- a/.github/ISSUE_TEMPLATE/bug-report.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -name: "🐛 Bug report" -about: Create a report to help us improve -title: '' -labels: bug -assignees: '' - ---- - -Before submitting a bug report, please be aware that your issue **must be reproducible** with all of the following, otherwise it is non-actionable, and we can not help you: - - **Current repo**: run `git fetch && git status -uno` to check and `git pull` to update repo - - **Common dataset**: coco.yaml or coco128.yaml - - **Common environment**: Colab, Google Cloud, or Docker image. See https://github.com/ultralytics/yolov3#environments - -If this is a custom dataset/training question you **must include** your `train*.jpg`, `test*.jpg` and `results.png` figures, or we can not help you. You can generate these with `utils.plot_results()`. - - -## 🐛 Bug -A clear and concise description of what the bug is. - - -## To Reproduce (REQUIRED) - -Input: -``` -import torch - -a = torch.tensor([5]) -c = a / 0 -``` - -Output: -``` -Traceback (most recent call last): - File "/Users/glennjocher/opt/anaconda3/envs/env1/lib/python3.7/site-packages/IPython/core/interactiveshell.py", line 3331, in run_code - exec(code_obj, self.user_global_ns, self.user_ns) - File "", line 5, in - c = a / 0 -RuntimeError: ZeroDivisionError -``` - - -## Expected behavior -A clear and concise description of what you expected to happen. - - -## Environment -If applicable, add screenshots to help explain your problem. - - - OS: [e.g. Ubuntu] - - GPU [e.g. 2080 Ti] - - -## Additional context -Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml new file mode 100644 index 00000000..affe6aae --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -0,0 +1,85 @@ +name: 🐛 Bug Report +# title: " " +description: Problems with YOLOv3 +labels: [bug, triage] +body: + - type: markdown + attributes: + value: | + Thank you for submitting a YOLOv3 🐛 Bug Report! + + - type: checkboxes + attributes: + label: Search before asking + description: > + Please search the [issues](https://github.com/ultralytics/yolov3/issues) to see if a similar bug report already exists. + options: + - label: > + I have searched the YOLOv3 [issues](https://github.com/ultralytics/yolov3/issues) and found no similar bug report. + required: true + + - type: dropdown + attributes: + label: YOLOv3 Component + description: | + Please select the part of YOLOv3 where you found the bug. + multiple: true + options: + - "Training" + - "Validation" + - "Detection" + - "Export" + - "PyTorch Hub" + - "Multi-GPU" + - "Evolution" + - "Integrations" + - "Other" + validations: + required: false + + - type: textarea + attributes: + label: Bug + description: Provide console output with error messages and/or screenshots of the bug. + placeholder: | + 💡 ProTip! Include as much information as possible (screenshots, logs, tracebacks etc.) to receive the most helpful response. + validations: + required: true + + - type: textarea + attributes: + label: Environment + description: Please specify the software and hardware you used to produce the bug. + placeholder: | + - YOLO: YOLOv3 🚀 v6.0-67-g60e42e1 torch 1.9.0+cu111 CUDA:0 (A100-SXM4-40GB, 40536MiB) + - OS: Ubuntu 20.04 + - Python: 3.9.0 + validations: + required: false + + - type: textarea + attributes: + label: Minimal Reproducible Example + description: > + When asking a question, people will be better able to provide help if you provide code that they can easily understand and use to **reproduce** the problem. + This is referred to by community members as creating a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example). + placeholder: | + ``` + # Code to reproduce your issue here + ``` + validations: + required: false + + - type: textarea + attributes: + label: Additional + description: Anything else you would like to share? + + - type: checkboxes + attributes: + label: Are you willing to submit a PR? + description: > + (Optional) We encourage you to submit a [Pull Request](https://github.com/ultralytics/yolov3/pulls) (PR) to help improve YOLOv3 for everyone, especially if you have a good understanding of how to implement a fix or feature. + See the YOLOv3 [Contributing Guide](https://github.com/ultralytics/yolov3/blob/master/CONTRIBUTING.md) to get started. + options: + - label: Yes I'd like to help by submitting a PR! diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..02be0529 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: true +contact_links: + - name: Slack + url: https://join.slack.com/t/ultralytics/shared_invite/zt-w29ei8bp-jczz7QYUmDtgo6r6KcMIAg + about: Ask on Ultralytics Slack Forum + - name: Stack Overflow + url: https://stackoverflow.com/search?q=YOLOv3 + about: Ask on Stack Overflow with 'YOLOv3' tag diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md deleted file mode 100644 index 87db3eac..00000000 --- a/.github/ISSUE_TEMPLATE/feature-request.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -name: "🚀 Feature request" -about: Suggest an idea for this project -title: '' -labels: enhancement -assignees: '' - ---- - -## 🚀 Feature - - -## Motivation - - - -## Pitch - - - -## Alternatives - - - -## Additional context - - diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml new file mode 100644 index 00000000..53cf2344 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.yml @@ -0,0 +1,50 @@ +name: 🚀 Feature Request +description: Suggest a YOLOv3 idea +# title: " " +labels: [enhancement] +body: + - type: markdown + attributes: + value: | + Thank you for submitting a YOLOv3 🚀 Feature Request! + + - type: checkboxes + attributes: + label: Search before asking + description: > + Please search the [issues](https://github.com/ultralytics/yolov3/issues) to see if a similar feature request already exists. + options: + - label: > + I have searched the YOLOv3 [issues](https://github.com/ultralytics/yolov3/issues) and found no similar feature requests. + required: true + + - type: textarea + attributes: + label: Description + description: A short description of your feature. + placeholder: | + What new feature would you like to see in YOLOv3? + validations: + required: true + + - type: textarea + attributes: + label: Use case + description: | + Describe the use case of your feature request. It will help us understand and prioritize the feature request. + placeholder: | + How would this feature be used, and who would use it? + + - type: textarea + attributes: + label: Additional + description: Anything else you would like to share? + + - type: checkboxes + attributes: + label: Are you willing to submit a PR? + description: > + (Optional) We encourage you to submit a [Pull Request](https://github.com/ultralytics/yolov3/pulls) (PR) to help improve YOLOv3 for everyone, especially if you have a good understanding of how to implement a fix or feature. + See the YOLOv3 [Contributing Guide](https://github.com/ultralytics/yolov3/blob/master/CONTRIBUTING.md) to get started. + options: + - label: Yes I'd like to help by submitting a PR! diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md deleted file mode 100644 index 2c22aea7..00000000 --- a/.github/ISSUE_TEMPLATE/question.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -name: "❓Question" -about: Ask a general question -title: '' -labels: question -assignees: '' - ---- - -## ❔Question - - -## Additional context diff --git a/.github/ISSUE_TEMPLATE/question.yml b/.github/ISSUE_TEMPLATE/question.yml new file mode 100644 index 00000000..decb2148 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question.yml @@ -0,0 +1,33 @@ +name: ❓ Question +description: Ask a YOLOv3 question +# title: " " +labels: [question] +body: + - type: markdown + attributes: + value: | + Thank you for asking a YOLOv3 ❓ Question! + + - type: checkboxes + attributes: + label: Search before asking + description: > + Please search the [issues](https://github.com/ultralytics/yolov3/issues) and [discussions](https://github.com/ultralytics/yolov3/discussions) to see if a similar question already exists. + options: + - label: > + I have searched the YOLOv3 [issues](https://github.com/ultralytics/yolov3/issues) and [discussions](https://github.com/ultralytics/yolov3/discussions) and found no similar questions. + required: true + + - type: textarea + attributes: + label: Question + description: What is your question? + placeholder: | + 💡 ProTip! Include as much information as possible (screenshots, logs, tracebacks etc.) to receive the most helpful response. + validations: + required: true + + - type: textarea + attributes: + label: Additional + description: Anything else you would like to share? diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 99106891..c1b3d5d5 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,12 +1,23 @@ version: 2 updates: -- package-ecosystem: pip - directory: "/" - schedule: - interval: weekly - time: "04:00" - open-pull-requests-limit: 10 - reviewers: - - glenn-jocher - labels: - - dependencies + - package-ecosystem: pip + directory: "/" + schedule: + interval: weekly + time: "04:00" + open-pull-requests-limit: 10 + reviewers: + - glenn-jocher + labels: + - dependencies + + - package-ecosystem: github-actions + directory: "/" + schedule: + interval: weekly + time: "04:00" + open-pull-requests-limit: 5 + reviewers: + - glenn-jocher + labels: + - dependencies diff --git a/.github/workflows/ci-testing.yml b/.github/workflows/ci-testing.yml index 77ac2c3f..e7771733 100644 --- a/.github/workflows/ci-testing.yml +++ b/.github/workflows/ci-testing.yml @@ -1,6 +1,8 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + name: CI CPU testing -on: # https://help.github.com/en/actions/reference/events-that-trigger-workflows +on: # https://help.github.com/en/actions/reference/events-that-trigger-workflows push: branches: [ master ] pull_request: @@ -16,9 +18,9 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-latest, windows-latest] - python-version: [3.8] - model: ['yolov3-tiny'] # models to test + os: [ ubuntu-latest, macos-latest, windows-latest ] + python-version: [ 3.9 ] + model: [ 'yolov3-tiny' ] # models to test # Timeout: https://stackoverflow.com/a/59076067/4521646 timeout-minutes: 50 @@ -37,23 +39,27 @@ jobs: python -c "from pip._internal.locations import USER_CACHE_DIR; print('::set-output name=dir::' + USER_CACHE_DIR)" - name: Cache pip - uses: actions/cache@v1 + uses: actions/cache@v2.1.6 with: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ runner.os }}-${{ matrix.python-version }}-pip-${{ hashFiles('requirements.txt') }} restore-keys: | ${{ runner.os }}-${{ matrix.python-version }}-pip- + # Known Keras 2.7.0 issue: https://github.com/ultralytics/yolov5/pull/5486 - name: Install dependencies run: | python -m pip install --upgrade pip pip install -qr requirements.txt -f https://download.pytorch.org/whl/cpu/torch_stable.html - pip install -q onnx + pip install -q onnx tensorflow-cpu keras==2.6.0 # wandb # extras python --version pip --version pip list shell: bash + # - name: W&B login + # run: wandb login 345011b3fb26dc8337fd9b20e53857c1d403f2aa + - name: Download data run: | # curl -L -o tmp.zip https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip @@ -63,18 +69,26 @@ jobs: - name: Tests workflow run: | # export PYTHONPATH="$PWD" # to run '$ python *.py' files in subdirectories - di=cpu # inference devices # define device + di=cpu # device - # train - python train.py --img 128 --batch 16 --weights weights/${{ matrix.model }}.pt --cfg models/${{ matrix.model }}.yaml --epochs 1 --device $di - # detect - python detect.py --weights weights/${{ matrix.model }}.pt --device $di + # Train + python train.py --img 64 --batch 32 --weights ${{ matrix.model }}.pt --cfg ${{ matrix.model }}.yaml --epochs 1 --device $di + # Val + python val.py --img 64 --batch 32 --weights ${{ matrix.model }}.pt --device $di + python val.py --img 64 --batch 32 --weights runs/train/exp/weights/last.pt --device $di + # Detect + python detect.py --weights ${{ matrix.model }}.pt --device $di python detect.py --weights runs/train/exp/weights/last.pt --device $di - # test - python test.py --img 128 --batch 16 --weights weights/${{ matrix.model }}.pt --device $di - python test.py --img 128 --batch 16 --weights runs/train/exp/weights/last.pt --device $di - python hubconf.py # hub - python models/yolo.py --cfg models/${{ matrix.model }}.yaml # inspect - python models/export.py --img 128 --batch 1 --weights weights/${{ matrix.model }}.pt # export + # Export + python models/yolo.py --cfg ${{ matrix.model }}.yaml # build PyTorch model + # python models/tf.py --weights ${{ matrix.model }}.pt # build TensorFlow model (YOLOv3 not supported) + python export.py --img 64 --batch 1 --weights runs/train/exp/weights/last.pt --include torchscript onnx # export + # Python + python - <=1.7`. To install run: + [**Python>=3.6.0**](https://www.python.org/) with all [requirements.txt](https://github.com/ultralytics/yolov3/blob/master/requirements.txt) installed including [**PyTorch>=1.7**](https://pytorch.org/get-started/locally/). To get started: ```bash + $ git clone https://github.com/ultralytics/yolov3 + $ cd yolov3 $ pip install -r requirements.txt ``` ## Environments - + YOLOv3 may be run in any of the following up-to-date verified environments (with all dependencies including [CUDA](https://developer.nvidia.com/cuda)/[CUDNN](https://developer.nvidia.com/cudnn), [Python](https://www.python.org/) and [PyTorch](https://pytorch.org/) preinstalled): - + - **Google Colab and Kaggle** notebooks with free GPU: Open In Colab Open In Kaggle - **Google Cloud** Deep Learning VM. See [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) - **Amazon** Deep Learning AMI. See [AWS Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/AWS-Quickstart) - **Docker Image**. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) Docker Pulls - - + + ## Status - - ![CI CPU testing](https://github.com/ultralytics/yolov3/workflows/CI%20CPU%20testing/badge.svg) - - If this badge is green, all [YOLOv3 GitHub Actions](https://github.com/ultralytics/yolov3/actions) Continuous Integration (CI) tests are currently passing. CI tests verify correct operation of YOLOv3 training ([train.py](https://github.com/ultralytics/yolov3/blob/master/train.py)), testing ([test.py](https://github.com/ultralytics/yolov3/blob/master/test.py)), inference ([detect.py](https://github.com/ultralytics/yolov3/blob/master/detect.py)) and export ([export.py](https://github.com/ultralytics/yolov3/blob/master/models/export.py)) on MacOS, Windows, and Ubuntu every 24 hours and on every commit. - + + CI CPU testing + + If this badge is green, all [YOLOv3 GitHub Actions](https://github.com/ultralytics/yolov3/actions) Continuous Integration (CI) tests are currently passing. CI tests verify correct operation of YOLOv3 training ([train.py](https://github.com/ultralytics/yolov3/blob/master/train.py)), validation ([val.py](https://github.com/ultralytics/yolov3/blob/master/val.py)), inference ([detect.py](https://github.com/ultralytics/yolov3/blob/master/detect.py)) and export ([export.py](https://github.com/ultralytics/yolov3/blob/master/export.py)) on MacOS, Windows, and Ubuntu every 24 hours and on every commit. diff --git a/.github/workflows/rebase.yml b/.github/workflows/rebase.yml index e86c5774..a4db1efb 100644 --- a/.github/workflows/rebase.yml +++ b/.github/workflows/rebase.yml @@ -1,10 +1,9 @@ -name: Automatic Rebase # https://github.com/marketplace/actions/automatic-rebase +name: Automatic Rebase on: issue_comment: types: [created] - jobs: rebase: name: Rebase @@ -14,8 +13,9 @@ jobs: - name: Checkout the latest code uses: actions/checkout@v2 with: - fetch-depth: 0 + token: ${{ secrets.ACTIONS_TOKEN }} + fetch-depth: 0 # otherwise, you will fail to push refs to dest repo - name: Automatic Rebase - uses: cirrus-actions/rebase@1.3.1 + uses: cirrus-actions/rebase@1.5 env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ secrets.ACTIONS_TOKEN }} diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index e9adff98..330184e8 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -1,3 +1,5 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + name: Close stale issues on: schedule: @@ -7,19 +9,19 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v3 + - uses: actions/stale@v4 with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-message: | 👋 Hello, this issue has been automatically marked as stale because it has not had recent activity. Please note it will be closed if no further activity occurs. - Access additional [YOLOv3](https://ultralytics.com/yolov5) 🚀 resources: + Access additional [YOLOv3](https://ultralytics.com/yolov3) 🚀 resources: - **Wiki** – https://github.com/ultralytics/yolov3/wiki - **Tutorials** – https://github.com/ultralytics/yolov3#tutorials - **Docs** – https://docs.ultralytics.com Access additional [Ultralytics](https://ultralytics.com) ⚡ resources: - - **Ultralytics HUB** – https://ultralytics.com/pricing + - **Ultralytics HUB** – https://ultralytics.com/hub - **Vision API** – https://ultralytics.com/yolov5 - **About Us** – https://ultralytics.com/about - **Join Our Team** – https://ultralytics.com/work @@ -29,7 +31,7 @@ jobs: Thank you for your contributions to YOLOv3 🚀 and Vision AI ⭐! - stale-pr-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions YOLOv3 🚀 and Vision AI ⭐.' + stale-pr-message: 'This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions YOLOv3 🚀 and Vision AI ⭐.' days-before-stale: 30 days-before-close: 5 exempt-issue-labels: 'documentation,tutorial' diff --git a/.gitignore b/.gitignore index 91ce33fb..5f8cab55 100755 --- a/.gitignore +++ b/.gitignore @@ -19,26 +19,19 @@ *.avi *.data *.json - *.cfg +!setup.cfg !cfg/yolov3*.cfg storage.googleapis.com runs/* data/* +!data/hyps/* !data/images/zidane.jpg !data/images/bus.jpg -!data/coco.names -!data/coco_paper.names -!data/coco.data -!data/coco_*.data -!data/coco_*.txt -!data/trainvalno5k.shapes !data/*.sh -pycocotools/* -results*.txt -gcp_test*.sh +results*.csv # Datasets ------------------------------------------------------------------------------------------------------------- coco/ @@ -53,9 +46,14 @@ VOC/ # Neural Network weights ----------------------------------------------------------------------------------------------- *.weights *.pt +*.pb *.onnx *.mlmodel *.torchscript +*.tflite +*.h5 +*_saved_model/ +*_web_model/ darknet53.conv.74 yolov3-tiny.conv.15 @@ -84,7 +82,7 @@ sdist/ var/ wheels/ *.egg-info/ -wandb/ +/wandb/ .installed.cfg *.egg diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..48e752f4 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,66 @@ +# Define hooks for code formations +# Will be applied on any updated commit files if a user has installed and linked commit hook + +default_language_version: + python: python3.8 + +# Define bot property if installed via https://github.com/marketplace/pre-commit-ci +ci: + autofix_prs: true + autoupdate_commit_msg: '[pre-commit.ci] pre-commit suggestions' + autoupdate_schedule: quarterly + # submodules: true + +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.0.1 + hooks: + - id: end-of-file-fixer + - id: trailing-whitespace + - id: check-case-conflict + - id: check-yaml + - id: check-toml + - id: pretty-format-json + - id: check-docstring-first + + - repo: https://github.com/asottile/pyupgrade + rev: v2.23.1 + hooks: + - id: pyupgrade + args: [--py36-plus] + name: Upgrade code + + - repo: https://github.com/PyCQA/isort + rev: 5.9.3 + hooks: + - id: isort + name: Sort imports + + # TODO + #- repo: https://github.com/pre-commit/mirrors-yapf + # rev: v0.31.0 + # hooks: + # - id: yapf + # name: formatting + + # TODO + #- repo: https://github.com/executablebooks/mdformat + # rev: 0.7.7 + # hooks: + # - id: mdformat + # additional_dependencies: + # - mdformat-gfm + # - mdformat-black + # - mdformat_frontmatter + + # TODO + #- repo: https://github.com/asottile/yesqa + # rev: v1.2.3 + # hooks: + # - id: yesqa + + - repo: https://github.com/PyCQA/flake8 + rev: 3.9.2 + hooks: + - id: flake8 + name: PEP8 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..0ef52f63 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,94 @@ +## Contributing to YOLOv3 🚀 + +We love your input! We want to make contributing to YOLOv3 as easy and transparent as possible, whether it's: + +- Reporting a bug +- Discussing the current state of the code +- Submitting a fix +- Proposing a new feature +- Becoming a maintainer + +YOLOv3 works so well due to our combined community effort, and for every small improvement you contribute you will be +helping push the frontiers of what's possible in AI 😃! + +## Submitting a Pull Request (PR) 🛠️ + +Submitting a PR is easy! This example shows how to submit a PR for updating `requirements.txt` in 4 steps: + +### 1. Select File to Update + +Select `requirements.txt` to update by clicking on it in GitHub. +

PR_step1

+ +### 2. Click 'Edit this file' + +Button is in top-right corner. +

PR_step2

+ +### 3. Make Changes + +Change `matplotlib` version from `3.2.2` to `3.3`. +

PR_step3

+ +### 4. Preview Changes and Submit PR + +Click on the **Preview changes** tab to verify your updates. At the bottom of the screen select 'Create a **new branch** +for this commit', assign your branch a descriptive name such as `fix/matplotlib_version` and click the green **Propose +changes** button. All done, your PR is now submitted to YOLOv3 for review and approval 😃! +

PR_step4

+ +### PR recommendations + +To allow your work to be integrated as seamlessly as possible, we advise you to: + +- ✅ Verify your PR is **up-to-date with upstream/master.** If your PR is behind upstream/master an + automatic [GitHub actions](https://github.com/ultralytics/yolov3/blob/master/.github/workflows/rebase.yml) rebase may + be attempted by including the /rebase command in a comment body, or by running the following code, replacing 'feature' + with the name of your local branch: + + ```bash + git remote add upstream https://github.com/ultralytics/yolov3.git + git fetch upstream + git checkout feature # <----- replace 'feature' with local branch name + git merge upstream/master + git push -u origin -f + ``` + +- ✅ Verify all Continuous Integration (CI) **checks are passing**. +- ✅ Reduce changes to the absolute **minimum** required for your bug fix or feature addition. _"It is not daily increase + but daily decrease, hack away the unessential. The closer to the source, the less wastage there is."_ — Bruce Lee + +## Submitting a Bug Report 🐛 + +If you spot a problem with YOLOv3 please submit a Bug Report! + +For us to start investigating a possible problem we need to be able to reproduce it ourselves first. We've created a few +short guidelines below to help users provide what we need in order to get started. + +When asking a question, people will be better able to provide help if you provide **code** that they can easily +understand and use to **reproduce** the problem. This is referred to by community members as creating +a [minimum reproducible example](https://stackoverflow.com/help/minimal-reproducible-example). Your code that reproduces +the problem should be: + +* ✅ **Minimal** – Use as little code as possible that still produces the same problem +* ✅ **Complete** – Provide **all** parts someone else needs to reproduce your problem in the question itself +* ✅ **Reproducible** – Test the code you're about to provide to make sure it reproduces the problem + +In addition to the above requirements, for [Ultralytics](https://ultralytics.com/) to provide assistance your code +should be: + +* ✅ **Current** – Verify that your code is up-to-date with current + GitHub [master](https://github.com/ultralytics/yolov3/tree/master), and if necessary `git pull` or `git clone` a new + copy to ensure your problem has not already been resolved by previous commits. +* ✅ **Unmodified** – Your problem must be reproducible without any modifications to the codebase in this + repository. [Ultralytics](https://ultralytics.com/) does not provide support for custom code ⚠️. + +If you believe your problem meets all of the above criteria, please close this issue and raise a new one using the 🐛 ** +Bug Report** [template](https://github.com/ultralytics/yolov3/issues/new/choose) and providing +a [minimum reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) to help us better +understand and diagnose your problem. + +## License + +By contributing, you agree that your contributions will be licensed under +the [GPL-3.0 license](https://choosealicense.com/licenses/gpl-3.0/) diff --git a/Dockerfile b/Dockerfile index ca07c4d7..12842422 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,7 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + # Start FROM Nvidia PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorch -FROM nvcr.io/nvidia/pytorch:21.03-py3 +FROM nvcr.io/nvidia/pytorch:21.10-py3 # Install linux packages RUN apt update && apt install -y zip htop screen libgl1-mesa-glx @@ -8,7 +10,9 @@ RUN apt update && apt install -y zip htop screen libgl1-mesa-glx COPY requirements.txt . RUN python -m pip install --upgrade pip RUN pip uninstall -y nvidia-tensorboard nvidia-tensorboard-plugin-dlprof -RUN pip install --no-cache -r requirements.txt coremltools onnx gsutil notebook +RUN pip install --no-cache -r requirements.txt coremltools onnx gsutil notebook wandb>=0.12.2 +RUN pip install --no-cache -U torch torchvision numpy Pillow +# RUN pip install --no-cache torch==1.10.0+cu113 torchvision==0.11.1+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html # Create working directory RUN mkdir -p /usr/src/app @@ -17,27 +21,29 @@ WORKDIR /usr/src/app # Copy contents COPY . /usr/src/app +# Downloads to user config dir +ADD https://ultralytics.com/assets/Arial.ttf /root/.config/Ultralytics/ + # Set environment variables -ENV HOME=/usr/src/app +# ENV HOME=/usr/src/app -# --------------------------------------------------- Extras Below --------------------------------------------------- +# Usage Examples ------------------------------------------------------------------------------------------------------- # Build and Push # t=ultralytics/yolov3:latest && sudo docker build -t $t . && sudo docker push $t -# for v in {300..303}; do t=ultralytics/coco:v$v && sudo docker build -t $t . && sudo docker push $t; done # Pull and Run # t=ultralytics/yolov3:latest && sudo docker pull $t && sudo docker run -it --ipc=host --gpus all $t # Pull and Run with local directory access -# t=ultralytics/yolov3:latest && sudo docker pull $t && sudo docker run -it --ipc=host --gpus all -v "$(pwd)"/coco:/usr/src/coco $t +# t=ultralytics/yolov3:latest && sudo docker pull $t && sudo docker run -it --ipc=host --gpus all -v "$(pwd)"/datasets:/usr/src/datasets $t # Kill all # sudo docker kill $(sudo docker ps -q) # Kill all image-based -# sudo docker kill $(sudo docker ps -qa --filter ancestor=ultralytics/yolov5:latest) +# sudo docker kill $(sudo docker ps -qa --filter ancestor=ultralytics/yolov3:latest) # Bash into running container # sudo docker exec -it 5a9b5863d93d bash @@ -45,8 +51,11 @@ ENV HOME=/usr/src/app # Bash into stopped container # id=$(sudo docker ps -qa) && sudo docker start $id && sudo docker exec -it $id bash -# Send weights to GCP -# python -c "from utils.general import *; strip_optimizer('runs/train/exp0_*/weights/best.pt', 'tmp.pt')" && gsutil cp tmp.pt gs://*.pt - # Clean up # docker system prune -a --volumes + +# Update Ubuntu drivers +# https://www.maketecheasier.com/install-nvidia-drivers-ubuntu/ + +# DDP test +# python -m torch.distributed.run --nproc_per_node 2 --master_port 1 train.py --epochs 3 diff --git a/LICENSE b/LICENSE index 9e419e04..92b370f0 100644 --- a/LICENSE +++ b/LICENSE @@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read -. \ No newline at end of file +. diff --git a/README.md b/README.md old mode 100755 new mode 100644 index 04012af4..1d961c3c --- a/README.md +++ b/README.md @@ -1,76 +1,141 @@ - - -  +
+

+ + +

+
+
+ CI CPU testing + YOLOv3 Citation + Docker Pulls +
+ Open In Colab + Open In Kaggle + Join Forum +
+
+ -CI CPU testing +
+

+YOLOv3 🚀 is a family of object detection architectures and models pretrained on the COCO dataset, and represents Ultralytics + open-source research into future vision AI methods, incorporating lessons learned and best practices evolved over thousands of hours of research and development. +

-This repository represents Ultralytics open-source research into future object detection methods, and incorporates lessons learned and best practices evolved over thousands of hours of training and evolution on anonymized client datasets. **All code and models are under active development, and are subject to modification or deletion without notice.** Use at your own risk. + -

-
- YOLOv5-P5 640 Figure (click to expand) - -

-
-
- Figure Notes (click to expand) - - * GPU Speed measures end-to-end time per image averaged over 5000 COCO val2017 images using a V100 GPU with batch size 32, and includes image preprocessing, PyTorch FP16 inference, postprocessing and NMS. - * EfficientDet data from [google/automl](https://github.com/google/automl) at batch size 8. - * **Reproduce** by `python test.py --task study --data coco.yaml --iou 0.7 --weights yolov3.pt yolov3-spp.pt yolov3-tiny.pt yolov5l.pt` -
+
+##
Documentation
-## Branch Notice +See the [YOLOv3 Docs](https://docs.ultralytics.com) for full documentation on training, testing and deployment. + +##
Quick Start Examples
+ +
+Install + +[**Python>=3.6.0**](https://www.python.org/) is required with all +[requirements.txt](https://github.com/ultralytics/yolov3/blob/master/requirements.txt) installed including +[**PyTorch>=1.7**](https://pytorch.org/get-started/locally/): + -The [ultralytics/yolov3](https://github.com/ultralytics/yolov3) repository is now divided into two branches: -* [Master branch](https://github.com/ultralytics/yolov3/tree/master): Forward-compatible with all [YOLOv5](https://github.com/ultralytics/yolov5) models and methods (**recommended** ✅). -```bash -$ git clone https://github.com/ultralytics/yolov3 # master branch (default) -``` -* [Archive branch](https://github.com/ultralytics/yolov3/tree/archive): Backwards-compatible with original [darknet](https://pjreddie.com/darknet/) *.cfg models (**no longer maintained** ⚠️). -```bash -$ git clone https://github.com/ultralytics/yolov3 -b archive # archive branch -``` - -## Pretrained Checkpoints - -[assets3]: https://github.com/ultralytics/yolov3/releases -[assets5]: https://github.com/ultralytics/yolov5/releases - -Model |size
(pixels) |mAPval
0.5:0.95 |mAPtest
0.5:0.95 |mAPval
0.5 |Speed
V100 (ms) | |params
(M) |FLOPS
640 (B) ---- |--- |--- |--- |--- |--- |---|--- |--- -[YOLOv3-tiny][assets3] |640 |17.6 |17.6 |34.8 |**1.2** | |8.8 |13.2 -[YOLOv3][assets3] |640 |43.3 |43.3 |63.0 |4.1 | |61.9 |156.3 -[YOLOv3-SPP][assets3] |640 |44.3 |44.3 |64.6 |4.1 | |63.0 |157.1 -| | | | | | || | -[YOLOv5l][assets5] |640 |**48.2** |**48.2** |**66.9** |3.7 | |47.0 |115.4 - - -
- Table Notes (click to expand) - - * APtest denotes COCO [test-dev2017](http://cocodataset.org/#upload) server results, all other AP results denote val2017 accuracy. - * AP values are for single-model single-scale unless otherwise noted. **Reproduce mAP** by `python test.py --data coco.yaml --img 640 --conf 0.001 --iou 0.65` - * SpeedGPU averaged over 5000 COCO val2017 images using a GCP [n1-standard-16](https://cloud.google.com/compute/docs/machine-types#n1_standard_machine_types) V100 instance, and includes FP16 inference, postprocessing and NMS. **Reproduce speed** by `python test.py --data coco.yaml --img 640 --conf 0.25 --iou 0.45` - * All checkpoints are trained to 300 epochs with default settings and hyperparameters (no autoaugmentation). -
- - -## Requirements - -Python 3.8 or later with all [requirements.txt](https://github.com/ultralytics/yolov3/blob/master/requirements.txt) dependencies installed, including `torch>=1.7`. To install run: ```bash +$ git clone https://github.com/ultralytics/yolov3 +$ cd yolov3 $ pip install -r requirements.txt ``` +
-## Tutorials +
+Inference + +Inference with YOLOv3 and [PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36). Models automatically download +from the [latest YOLOv3 release](https://github.com/ultralytics/yolov3/releases). + +```python +import torch + +# Model +model = torch.hub.load('ultralytics/yolov3', 'yolov3') # or yolov3-spp, yolov3-tiny, custom + +# Images +img = 'https://ultralytics.com/images/zidane.jpg' # or file, Path, PIL, OpenCV, numpy, list + +# Inference +results = model(img) + +# Results +results.print() # or .show(), .save(), .crop(), .pandas(), etc. +``` + +
+ + + +
+Inference with detect.py + +`detect.py` runs inference on a variety of sources, downloading models automatically from +the [latest YOLOv3 release](https://github.com/ultralytics/yolov3/releases) and saving results to `runs/detect`. + +```bash +$ python detect.py --source 0 # webcam + img.jpg # image + vid.mp4 # video + path/ # directory + path/*.jpg # glob + 'https://youtu.be/Zgi9g1ksQHc' # YouTube + 'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP stream +``` + +
+ +
+Training + + + + + +
+ +
+Tutorials * [Train Custom Data](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data)  🚀 RECOMMENDED -* [Tips for Best Training Results](https://github.com/ultralytics/yolov5/wiki/Tips-for-Best-Training-Results)  ☘️ RECOMMENDED +* [Tips for Best Training Results](https://github.com/ultralytics/yolov3/wiki/Tips-for-Best-Training-Results)  ☘️ + RECOMMENDED * [Weights & Biases Logging](https://github.com/ultralytics/yolov5/issues/1289)  🌟 NEW -* [Supervisely Ecosystem](https://github.com/ultralytics/yolov5/issues/2518)  🌟 NEW +* [Roboflow for Datasets, Labeling, and Active Learning](https://github.com/ultralytics/yolov5/issues/4975)  🌟 NEW * [Multi-GPU Training](https://github.com/ultralytics/yolov5/issues/475) * [PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36)  ⭐ NEW * [TorchScript, ONNX, CoreML Export](https://github.com/ultralytics/yolov5/issues/251) 🚀 @@ -81,80 +146,128 @@ $ pip install -r requirements.txt * [Transfer Learning with Frozen Layers](https://github.com/ultralytics/yolov5/issues/1314)  ⭐ NEW * [TensorRT Deployment](https://github.com/wang-xinyu/tensorrtx) +
-## Environments +##
Environments
-YOLOv3 may be run in any of the following up-to-date verified environments (with all dependencies including [CUDA](https://developer.nvidia.com/cuda)/[CUDNN](https://developer.nvidia.com/cudnn), [Python](https://www.python.org/) and [PyTorch](https://pytorch.org/) preinstalled): +Get started in seconds with our verified environments. Click each icon below for details. -- **Google Colab and Kaggle** notebooks with free GPU: Open In Colab Open In Kaggle -- **Google Cloud** Deep Learning VM. See [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) -- **Amazon** Deep Learning AMI. See [AWS Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/AWS-Quickstart) -- **Docker Image**. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) Docker Pulls + + +##
Integrations
+ + + +|Weights and Biases|Roboflow ⭐ NEW| +|:-:|:-:| +|Automatically track and visualize all your YOLOv3 training runs in the cloud with [Weights & Biases](https://wandb.ai/site?utm_campaign=repo_yolo_readme)|Label and export your custom datasets directly to YOLOv3 for training with [Roboflow](https://roboflow.com/?ref=ultralytics) | -## Inference +##
Why YOLOv5
-`detect.py` runs inference on a variety of sources, downloading models automatically from the [latest YOLOv3 release](https://github.com/ultralytics/yolov3/releases) and saving results to `runs/detect`. -```bash -$ python detect.py --source 0 # webcam - file.jpg # image - file.mp4 # video - path/ # directory - path/*.jpg # glob - 'https://youtu.be/NUsoVlDFqZg' # YouTube video - 'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP stream -``` +

+
+ YOLOv3-P5 640 Figure (click to expand) -To run inference on example images in `data/images`: -```bash -$ python detect.py --source data/images --weights yolov3.pt --conf 0.25 -``` - +

+
+
+ Figure Notes (click to expand) -### PyTorch Hub +* **COCO AP val** denotes mAP@0.5:0.95 metric measured on the 5000-image [COCO val2017](http://cocodataset.org) dataset over various inference sizes from 256 to 1536. +* **GPU Speed** measures average inference time per image on [COCO val2017](http://cocodataset.org) dataset using a [AWS p3.2xlarge](https://aws.amazon.com/ec2/instance-types/p3/) V100 instance at batch-size 32. +* **EfficientDet** data from [google/automl](https://github.com/google/automl) at batch size 8. +* **Reproduce** by `python val.py --task study --data coco.yaml --iou 0.7 --weights yolov5n6.pt yolov5s6.pt yolov5m6.pt yolov5l6.pt yolov5x6.pt` +
-To run **batched inference** with YOLOv3 and [PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36): -```python -import torch +### Pretrained Checkpoints -# Model -model = torch.hub.load('ultralytics/yolov3', 'yolov3') # or 'yolov3_spp', 'yolov3_tiny' +[assets]: https://github.com/ultralytics/yolov5/releases +[TTA]: https://github.com/ultralytics/yolov5/issues/303 -# Image -img = 'https://ultralytics.com/images/zidane.jpg' +|Model |size
(pixels) |mAPval
0.5:0.95 |mAPval
0.5 |Speed
CPU b1
(ms) |Speed
V100 b1
(ms) |Speed
V100 b32
(ms) |params
(M) |FLOPs
@640 (B) +|--- |--- |--- |--- |--- |--- |--- |--- |--- +|[YOLOv5n][assets] |640 |28.4 |46.0 |**45** |**6.3**|**0.6**|**1.9**|**4.5** +|[YOLOv5s][assets] |640 |37.2 |56.0 |98 |6.4 |0.9 |7.2 |16.5 +|[YOLOv5m][assets] |640 |45.2 |63.9 |224 |8.2 |1.7 |21.2 |49.0 +|[YOLOv5l][assets] |640 |48.8 |67.2 |430 |10.1 |2.7 |46.5 |109.1 +|[YOLOv5x][assets] |640 |50.7 |68.9 |766 |12.1 |4.8 |86.7 |205.7 +| | | | | | | | | +|[YOLOv5n6][assets] |1280 |34.0 |50.7 |153 |8.1 |2.1 |3.2 |4.6 +|[YOLOv5s6][assets] |1280 |44.5 |63.0 |385 |8.2 |3.6 |16.8 |12.6 +|[YOLOv5m6][assets] |1280 |51.0 |69.0 |887 |11.1 |6.8 |35.7 |50.0 +|[YOLOv5l6][assets] |1280 |53.6 |71.6 |1784 |15.8 |10.5 |76.8 |111.4 +|[YOLOv5x6][assets]
+ [TTA][TTA]|1280
1536 |54.7
**55.4** |**72.4**
72.3 |3136
- |26.2
- |19.4
- |140.7
- |209.8
- -# Inference -results = model(img) -results.print() # or .show(), .save() -``` +
+ Table Notes (click to expand) + +* All checkpoints are trained to 300 epochs with default settings and hyperparameters. +* **mAPval** values are for single-model single-scale on [COCO val2017](http://cocodataset.org) dataset.
Reproduce by `python val.py --data coco.yaml --img 640 --conf 0.001 --iou 0.65` +* **Speed** averaged over COCO val images using a [AWS p3.2xlarge](https://aws.amazon.com/ec2/instance-types/p3/) instance. NMS times (~1 ms/img) not included.
Reproduce by `python val.py --data coco.yaml --img 640 --conf 0.25 --iou 0.45` +* **TTA** [Test Time Augmentation](https://github.com/ultralytics/yolov5/issues/303) includes reflection and scale augmentations.
Reproduce by `python val.py --data coco.yaml --img 1536 --iou 0.7 --augment` + +
+ +##
Contribute
+ +We love your input! We want to make contributing to YOLOv3 as easy and transparent as possible. Please see our [Contributing Guide](CONTRIBUTING.md) to get started, and fill out the [YOLOv3 Survey](https://ultralytics.com/survey?utm_source=github&utm_medium=social&utm_campaign=Survey) to send us feedback on your experiences. Thank you to all our contributors! + + -## Training +##
Contact
-Run commands below to reproduce results on [COCO](https://github.com/ultralytics/yolov3/blob/master/data/scripts/get_coco.sh) dataset (dataset auto-downloads on first use). Training times for YOLOv3/YOLOv3-SPP/YOLOv3-tiny are 6/6/2 days on a single V100 (multi-GPU times faster). Use the largest `--batch-size` your GPU allows (batch sizes shown for 16 GB devices). -```bash -$ python train.py --data coco.yaml --cfg yolov3.yaml --weights '' --batch-size 24 - yolov3-spp.yaml 24 - yolov3-tiny.yaml 64 -``` - +For YOLOv3 bugs and feature requests please visit [GitHub Issues](https://github.com/ultralytics/yolov3/issues). For business inquiries or +professional support requests please visit [https://ultralytics.com/contact](https://ultralytics.com/contact). +
-## Citation - -[![DOI](https://zenodo.org/badge/146165888.svg)](https://zenodo.org/badge/latestdoi/146165888) - - -## About Us - -Ultralytics is a U.S.-based particle physics and AI startup with over 6 years of expertise supporting government, academic and business clients. We offer a wide range of vision AI services, spanning from simple expert advice up to delivery of fully customized, end-to-end production solutions, including: -- **Cloud-based AI** systems operating on **hundreds of HD video streams in realtime.** -- **Edge AI** integrated into custom iOS and Android apps for realtime **30 FPS video inference.** -- **Custom data training**, hyperparameter evolution, and model exportation to any destination. - -For business inquiries and professional support requests please visit us at https://ultralytics.com. - - -## Contact - -**Issues should be raised directly in the repository.** For business inquiries or professional support requests please visit https://ultralytics.com or email Glenn Jocher at glenn.jocher@ultralytics.com. + diff --git a/data/Argoverse.yaml b/data/Argoverse.yaml new file mode 100644 index 00000000..9be3ae79 --- /dev/null +++ b/data/Argoverse.yaml @@ -0,0 +1,67 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +# Argoverse-HD dataset (ring-front-center camera) http://www.cs.cmu.edu/~mengtial/proj/streaming/ +# Example usage: python train.py --data Argoverse.yaml +# parent +# ├── yolov3 +# └── datasets +# └── Argoverse ← downloads here + + +# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] +path: ../datasets/Argoverse # dataset root dir +train: Argoverse-1.1/images/train/ # train images (relative to 'path') 39384 images +val: Argoverse-1.1/images/val/ # val images (relative to 'path') 15062 images +test: Argoverse-1.1/images/test/ # test images (optional) https://eval.ai/web/challenges/challenge-page/800/overview + +# Classes +nc: 8 # number of classes +names: ['person', 'bicycle', 'car', 'motorcycle', 'bus', 'truck', 'traffic_light', 'stop_sign'] # class names + + +# Download script/URL (optional) --------------------------------------------------------------------------------------- +download: | + import json + + from tqdm import tqdm + from utils.general import download, Path + + + def argoverse2yolo(set): + labels = {} + a = json.load(open(set, "rb")) + for annot in tqdm(a['annotations'], desc=f"Converting {set} to YOLOv3 format..."): + img_id = annot['image_id'] + img_name = a['images'][img_id]['name'] + img_label_name = img_name[:-3] + "txt" + + cls = annot['category_id'] # instance class id + x_center, y_center, width, height = annot['bbox'] + x_center = (x_center + width / 2) / 1920.0 # offset and scale + y_center = (y_center + height / 2) / 1200.0 # offset and scale + width /= 1920.0 # scale + height /= 1200.0 # scale + + img_dir = set.parents[2] / 'Argoverse-1.1' / 'labels' / a['seq_dirs'][a['images'][annot['image_id']]['sid']] + if not img_dir.exists(): + img_dir.mkdir(parents=True, exist_ok=True) + + k = str(img_dir / img_label_name) + if k not in labels: + labels[k] = [] + labels[k].append(f"{cls} {x_center} {y_center} {width} {height}\n") + + for k in labels: + with open(k, "w") as f: + f.writelines(labels[k]) + + + # Download + dir = Path('../datasets/Argoverse') # dataset root dir + urls = ['https://argoverse-hd.s3.us-east-2.amazonaws.com/Argoverse-HD-Full.zip'] + download(urls, dir=dir, delete=False) + + # Convert + annotations_dir = 'Argoverse-HD/annotations/' + (dir / 'Argoverse-1.1' / 'tracking').rename(dir / 'Argoverse-1.1' / 'images') # rename 'tracking' to 'images' + for d in "train.json", "val.json": + argoverse2yolo(dir / annotations_dir / d) # convert VisDrone annotations to YOLO labels diff --git a/data/GlobalWheat2020.yaml b/data/GlobalWheat2020.yaml index ca2a49e2..10a2d3fc 100644 --- a/data/GlobalWheat2020.yaml +++ b/data/GlobalWheat2020.yaml @@ -1,43 +1,41 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license # Global Wheat 2020 dataset http://www.global-wheat.com/ -# Train command: python train.py --data GlobalWheat2020.yaml -# Default dataset location is next to YOLOv3: -# /parent_folder -# /datasets/GlobalWheat2020 -# /yolov3 +# Example usage: python train.py --data GlobalWheat2020.yaml +# parent +# ├── yolov3 +# └── datasets +# └── GlobalWheat2020 ← downloads here -# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/] -train: # 3422 images - - ../datasets/GlobalWheat2020/images/arvalis_1 - - ../datasets/GlobalWheat2020/images/arvalis_2 - - ../datasets/GlobalWheat2020/images/arvalis_3 - - ../datasets/GlobalWheat2020/images/ethz_1 - - ../datasets/GlobalWheat2020/images/rres_1 - - ../datasets/GlobalWheat2020/images/inrae_1 - - ../datasets/GlobalWheat2020/images/usask_1 +# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] +path: ../datasets/GlobalWheat2020 # dataset root dir +train: # train images (relative to 'path') 3422 images + - images/arvalis_1 + - images/arvalis_2 + - images/arvalis_3 + - images/ethz_1 + - images/rres_1 + - images/inrae_1 + - images/usask_1 +val: # val images (relative to 'path') 748 images (WARNING: train set contains ethz_1) + - images/ethz_1 +test: # test images (optional) 1276 images + - images/utokyo_1 + - images/utokyo_2 + - images/nau_1 + - images/uq_1 -val: # 748 images (WARNING: train set contains ethz_1) - - ../datasets/GlobalWheat2020/images/ethz_1 - -test: # 1276 images - - ../datasets/GlobalWheat2020/images/utokyo_1 - - ../datasets/GlobalWheat2020/images/utokyo_2 - - ../datasets/GlobalWheat2020/images/nau_1 - - ../datasets/GlobalWheat2020/images/uq_1 - -# number of classes -nc: 1 - -# class names -names: [ 'wheat_head' ] +# Classes +nc: 1 # number of classes +names: ['wheat_head'] # class names -# download command/URL (optional) -------------------------------------------------------------------------------------- +# Download script/URL (optional) --------------------------------------------------------------------------------------- download: | from utils.general import download, Path # Download - dir = Path('../datasets/GlobalWheat2020') # dataset directory + dir = Path(yaml['path']) # dataset root dir urls = ['https://zenodo.org/record/4298502/files/global-wheat-codalab-official.zip', 'https://github.com/ultralytics/yolov5/releases/download/v1.0/GlobalWheat2020_labels.zip'] download(urls, dir=dir) diff --git a/data/SKU-110K.yaml b/data/SKU-110K.yaml index f4aea8b5..183d3637 100644 --- a/data/SKU-110K.yaml +++ b/data/SKU-110K.yaml @@ -1,39 +1,39 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license # SKU-110K retail items dataset https://github.com/eg4000/SKU110K_CVPR19 -# Train command: python train.py --data SKU-110K.yaml -# Default dataset location is next to YOLOv3: -# /parent_folder -# /datasets/SKU-110K -# /yolov3 +# Example usage: python train.py --data SKU-110K.yaml +# parent +# ├── yolov3 +# └── datasets +# └── SKU-110K ← downloads here -# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/] -train: ../datasets/SKU-110K/train.txt # 8219 images -val: ../datasets/SKU-110K/val.txt # 588 images -test: ../datasets/SKU-110K/test.txt # 2936 images +# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] +path: ../datasets/SKU-110K # dataset root dir +train: train.txt # train images (relative to 'path') 8219 images +val: val.txt # val images (relative to 'path') 588 images +test: test.txt # test images (optional) 2936 images -# number of classes -nc: 1 - -# class names -names: [ 'object' ] +# Classes +nc: 1 # number of classes +names: ['object'] # class names -# download command/URL (optional) -------------------------------------------------------------------------------------- +# Download script/URL (optional) --------------------------------------------------------------------------------------- download: | import shutil from tqdm import tqdm from utils.general import np, pd, Path, download, xyxy2xywh # Download - datasets = Path('../datasets') # download directory + dir = Path(yaml['path']) # dataset root dir + parent = Path(dir.parent) # download dir urls = ['http://trax-geometry.s3.amazonaws.com/cvpr_challenge/SKU110K_fixed.tar.gz'] - download(urls, dir=datasets, delete=False) + download(urls, dir=parent, delete=False) # Rename directories - dir = (datasets / 'SKU-110K') if dir.exists(): shutil.rmtree(dir) - (datasets / 'SKU110K_fixed').rename(dir) # rename dir + (parent / 'SKU110K_fixed').rename(dir) # rename dir (dir / 'labels').mkdir(parents=True, exist_ok=True) # create labels dir # Convert labels diff --git a/data/VisDrone.yaml b/data/VisDrone.yaml index 59f1cd51..945f05b4 100644 --- a/data/VisDrone.yaml +++ b/data/VisDrone.yaml @@ -1,24 +1,24 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license # VisDrone2019-DET dataset https://github.com/VisDrone/VisDrone-Dataset -# Train command: python train.py --data VisDrone.yaml -# Default dataset location is next to YOLOv3: -# /parent_folder -# /VisDrone -# /yolov3 +# Example usage: python train.py --data VisDrone.yaml +# parent +# ├── yolov3 +# └── datasets +# └── VisDrone ← downloads here -# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/] -train: ../VisDrone/VisDrone2019-DET-train/images # 6471 images -val: ../VisDrone/VisDrone2019-DET-val/images # 548 images -test: ../VisDrone/VisDrone2019-DET-test-dev/images # 1610 images +# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] +path: ../datasets/VisDrone # dataset root dir +train: VisDrone2019-DET-train/images # train images (relative to 'path') 6471 images +val: VisDrone2019-DET-val/images # val images (relative to 'path') 548 images +test: VisDrone2019-DET-test-dev/images # test images (optional) 1610 images -# number of classes -nc: 10 - -# class names -names: [ 'pedestrian', 'people', 'bicycle', 'car', 'van', 'truck', 'tricycle', 'awning-tricycle', 'bus', 'motor' ] +# Classes +nc: 10 # number of classes +names: ['pedestrian', 'people', 'bicycle', 'car', 'van', 'truck', 'tricycle', 'awning-tricycle', 'bus', 'motor'] -# download command/URL (optional) -------------------------------------------------------------------------------------- +# Download script/URL (optional) --------------------------------------------------------------------------------------- download: | from utils.general import download, os, Path @@ -49,7 +49,7 @@ download: | # Download - dir = Path('../VisDrone') # dataset directory + dir = Path(yaml['path']) # dataset root dir urls = ['https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-train.zip', 'https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-val.zip', 'https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-test-dev.zip', diff --git a/data/argoverse_hd.yaml b/data/argoverse_hd.yaml deleted file mode 100644 index 29d49b88..00000000 --- a/data/argoverse_hd.yaml +++ /dev/null @@ -1,21 +0,0 @@ -# Argoverse-HD dataset (ring-front-center camera) http://www.cs.cmu.edu/~mengtial/proj/streaming/ -# Train command: python train.py --data argoverse_hd.yaml -# Default dataset location is next to YOLOv3: -# /parent_folder -# /argoverse -# /yolov3 - - -# download command/URL (optional) -download: bash data/scripts/get_argoverse_hd.sh - -# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/] -train: ../argoverse/Argoverse-1.1/images/train/ # 39384 images -val: ../argoverse/Argoverse-1.1/images/val/ # 15062 iamges -test: ../argoverse/Argoverse-1.1/images/test/ # Submit to: https://eval.ai/web/challenges/challenge-page/800/overview - -# number of classes -nc: 8 - -# class names -names: [ 'person', 'bicycle', 'car', 'motorcycle', 'bus', 'truck', 'traffic_light', 'stop_sign' ] diff --git a/data/coco.yaml b/data/coco.yaml index 8714e6a3..1d89a3a0 100644 --- a/data/coco.yaml +++ b/data/coco.yaml @@ -1,35 +1,44 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license # COCO 2017 dataset http://cocodataset.org -# Train command: python train.py --data coco.yaml -# Default dataset location is next to YOLOv3: -# /parent_folder -# /coco -# /yolov3 +# Example usage: python train.py --data coco.yaml +# parent +# ├── yolov3 +# └── datasets +# └── coco ← downloads here -# download command/URL (optional) -download: bash data/scripts/get_coco.sh +# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] +path: ../datasets/coco # dataset root dir +train: train2017.txt # train images (relative to 'path') 118287 images +val: val2017.txt # train images (relative to 'path') 5000 images +test: test-dev2017.txt # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794 -# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/] -train: ../coco/train2017.txt # 118287 images -val: ../coco/val2017.txt # 5000 images -test: ../coco/test-dev2017.txt # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794 +# Classes +nc: 80 # number of classes +names: ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light', + 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', + 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', + 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', + 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', + 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', + 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', + 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', + 'hair drier', 'toothbrush'] # class names -# number of classes -nc: 80 -# class names -names: [ 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light', - 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', - 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', - 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', - 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', - 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', - 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', - 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', - 'hair drier', 'toothbrush' ] +# Download script/URL (optional) +download: | + from utils.general import download, Path -# Print classes -# with open('data/coco.yaml') as f: -# d = yaml.safe_load(f) # dict -# for i, x in enumerate(d['names']): -# print(i, x) + # Download labels + segments = False # segment or box labels + dir = Path(yaml['path']) # dataset root dir + url = 'https://github.com/ultralytics/yolov5/releases/download/v1.0/' + urls = [url + ('coco2017labels-segments.zip' if segments else 'coco2017labels.zip')] # labels + download(urls, dir=dir.parent) + + # Download data + urls = ['http://images.cocodataset.org/zips/train2017.zip', # 19G, 118k images + 'http://images.cocodataset.org/zips/val2017.zip', # 1G, 5k images + 'http://images.cocodataset.org/zips/test2017.zip'] # 7G, 41k images (optional) + download(urls, dir=dir / 'images', threads=3) diff --git a/data/coco128.yaml b/data/coco128.yaml index ef1f6c62..19e8d800 100644 --- a/data/coco128.yaml +++ b/data/coco128.yaml @@ -1,28 +1,30 @@ -# COCO 2017 dataset http://cocodataset.org - first 128 training images -# Train command: python train.py --data coco128.yaml -# Default dataset location is next to YOLOv3: -# /parent_folder -# /coco128 -# /yolov3 +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +# COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) +# Example usage: python train.py --data coco128.yaml +# parent +# ├── yolov3 +# └── datasets +# └── coco128 ← downloads here -# download command/URL (optional) -download: https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip +# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] +path: ../datasets/coco128 # dataset root dir +train: images/train2017 # train images (relative to 'path') 128 images +val: images/train2017 # val images (relative to 'path') 128 images +test: # test images (optional) -# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/] -train: ../coco128/images/train2017/ # 128 images -val: ../coco128/images/train2017/ # 128 images +# Classes +nc: 80 # number of classes +names: ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light', + 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', + 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', + 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', + 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', + 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', + 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', + 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', + 'hair drier', 'toothbrush'] # class names -# number of classes -nc: 80 -# class names -names: [ 'person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light', - 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', - 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', - 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', - 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', - 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', - 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', - 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', - 'hair drier', 'toothbrush' ] +# Download script/URL (optional) +download: https://ultralytics.com/assets/coco128.zip diff --git a/data/hyp.finetune.yaml b/data/hyp.finetune.yaml deleted file mode 100644 index 1b84cff9..00000000 --- a/data/hyp.finetune.yaml +++ /dev/null @@ -1,38 +0,0 @@ -# Hyperparameters for VOC finetuning -# python train.py --batch 64 --weights yolov5m.pt --data voc.yaml --img 512 --epochs 50 -# See tutorials for hyperparameter evolution https://github.com/ultralytics/yolov5#tutorials - - -# Hyperparameter Evolution Results -# Generations: 306 -# P R mAP.5 mAP.5:.95 box obj cls -# Metrics: 0.6 0.936 0.896 0.684 0.0115 0.00805 0.00146 - -lr0: 0.0032 -lrf: 0.12 -momentum: 0.843 -weight_decay: 0.00036 -warmup_epochs: 2.0 -warmup_momentum: 0.5 -warmup_bias_lr: 0.05 -box: 0.0296 -cls: 0.243 -cls_pw: 0.631 -obj: 0.301 -obj_pw: 0.911 -iou_t: 0.2 -anchor_t: 2.91 -# anchors: 3.63 -fl_gamma: 0.0 -hsv_h: 0.0138 -hsv_s: 0.664 -hsv_v: 0.464 -degrees: 0.373 -translate: 0.245 -scale: 0.898 -shear: 0.602 -perspective: 0.0 -flipud: 0.00856 -fliplr: 0.5 -mosaic: 1.0 -mixup: 0.243 diff --git a/data/hyp.finetune_objects365.yaml b/data/hyp.finetune_objects365.yaml deleted file mode 100644 index 2b104ef2..00000000 --- a/data/hyp.finetune_objects365.yaml +++ /dev/null @@ -1,28 +0,0 @@ -lr0: 0.00258 -lrf: 0.17 -momentum: 0.779 -weight_decay: 0.00058 -warmup_epochs: 1.33 -warmup_momentum: 0.86 -warmup_bias_lr: 0.0711 -box: 0.0539 -cls: 0.299 -cls_pw: 0.825 -obj: 0.632 -obj_pw: 1.0 -iou_t: 0.2 -anchor_t: 3.44 -anchors: 3.2 -fl_gamma: 0.0 -hsv_h: 0.0188 -hsv_s: 0.704 -hsv_v: 0.36 -degrees: 0.0 -translate: 0.0902 -scale: 0.491 -shear: 0.0 -perspective: 0.0 -flipud: 0.0 -fliplr: 0.5 -mosaic: 1.0 -mixup: 0.0 diff --git a/data/hyps/hyp.scratch-high.yaml b/data/hyps/hyp.scratch-high.yaml new file mode 100644 index 00000000..07ad9fc2 --- /dev/null +++ b/data/hyps/hyp.scratch-high.yaml @@ -0,0 +1,34 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +# Hyperparameters for high-augmentation COCO training from scratch +# python train.py --batch 32 --cfg yolov5m6.yaml --weights '' --data coco.yaml --img 1280 --epochs 300 +# See tutorials for hyperparameter evolution https://github.com/ultralytics/yolov5#tutorials + +lr0: 0.01 # initial learning rate (SGD=1E-2, Adam=1E-3) +lrf: 0.2 # final OneCycleLR learning rate (lr0 * lrf) +momentum: 0.937 # SGD momentum/Adam beta1 +weight_decay: 0.0005 # optimizer weight decay 5e-4 +warmup_epochs: 3.0 # warmup epochs (fractions ok) +warmup_momentum: 0.8 # warmup initial momentum +warmup_bias_lr: 0.1 # warmup initial bias lr +box: 0.05 # box loss gain +cls: 0.3 # cls loss gain +cls_pw: 1.0 # cls BCELoss positive_weight +obj: 0.7 # obj loss gain (scale with pixels) +obj_pw: 1.0 # obj BCELoss positive_weight +iou_t: 0.20 # IoU training threshold +anchor_t: 4.0 # anchor-multiple threshold +# anchors: 3 # anchors per output layer (0 to ignore) +fl_gamma: 0.0 # focal loss gamma (efficientDet default gamma=1.5) +hsv_h: 0.015 # image HSV-Hue augmentation (fraction) +hsv_s: 0.7 # image HSV-Saturation augmentation (fraction) +hsv_v: 0.4 # image HSV-Value augmentation (fraction) +degrees: 0.0 # image rotation (+/- deg) +translate: 0.1 # image translation (+/- fraction) +scale: 0.9 # image scale (+/- gain) +shear: 0.0 # image shear (+/- deg) +perspective: 0.0 # image perspective (+/- fraction), range 0-0.001 +flipud: 0.0 # image flip up-down (probability) +fliplr: 0.5 # image flip left-right (probability) +mosaic: 1.0 # image mosaic (probability) +mixup: 0.1 # image mixup (probability) +copy_paste: 0.1 # segment copy-paste (probability) diff --git a/data/hyps/hyp.scratch-low.yaml b/data/hyps/hyp.scratch-low.yaml new file mode 100644 index 00000000..3f9849c9 --- /dev/null +++ b/data/hyps/hyp.scratch-low.yaml @@ -0,0 +1,34 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +# Hyperparameters for low-augmentation COCO training from scratch +# python train.py --batch 64 --cfg yolov5n6.yaml --weights '' --data coco.yaml --img 640 --epochs 300 --linear +# See tutorials for hyperparameter evolution https://github.com/ultralytics/yolov5#tutorials + +lr0: 0.01 # initial learning rate (SGD=1E-2, Adam=1E-3) +lrf: 0.01 # final OneCycleLR learning rate (lr0 * lrf) +momentum: 0.937 # SGD momentum/Adam beta1 +weight_decay: 0.0005 # optimizer weight decay 5e-4 +warmup_epochs: 3.0 # warmup epochs (fractions ok) +warmup_momentum: 0.8 # warmup initial momentum +warmup_bias_lr: 0.1 # warmup initial bias lr +box: 0.05 # box loss gain +cls: 0.5 # cls loss gain +cls_pw: 1.0 # cls BCELoss positive_weight +obj: 1.0 # obj loss gain (scale with pixels) +obj_pw: 1.0 # obj BCELoss positive_weight +iou_t: 0.20 # IoU training threshold +anchor_t: 4.0 # anchor-multiple threshold +# anchors: 3 # anchors per output layer (0 to ignore) +fl_gamma: 0.0 # focal loss gamma (efficientDet default gamma=1.5) +hsv_h: 0.015 # image HSV-Hue augmentation (fraction) +hsv_s: 0.7 # image HSV-Saturation augmentation (fraction) +hsv_v: 0.4 # image HSV-Value augmentation (fraction) +degrees: 0.0 # image rotation (+/- deg) +translate: 0.1 # image translation (+/- fraction) +scale: 0.5 # image scale (+/- gain) +shear: 0.0 # image shear (+/- deg) +perspective: 0.0 # image perspective (+/- fraction), range 0-0.001 +flipud: 0.0 # image flip up-down (probability) +fliplr: 0.5 # image flip left-right (probability) +mosaic: 1.0 # image mosaic (probability) +mixup: 0.0 # image mixup (probability) +copy_paste: 0.0 # segment copy-paste (probability) diff --git a/data/hyps/hyp.scratch-med.yaml b/data/hyps/hyp.scratch-med.yaml new file mode 100644 index 00000000..d1f480bc --- /dev/null +++ b/data/hyps/hyp.scratch-med.yaml @@ -0,0 +1,34 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +# Hyperparameters for medium-augmentation COCO training from scratch +# python train.py --batch 32 --cfg yolov5m6.yaml --weights '' --data coco.yaml --img 1280 --epochs 300 +# See tutorials for hyperparameter evolution https://github.com/ultralytics/yolov5#tutorials + +lr0: 0.01 # initial learning rate (SGD=1E-2, Adam=1E-3) +lrf: 0.1 # final OneCycleLR learning rate (lr0 * lrf) +momentum: 0.937 # SGD momentum/Adam beta1 +weight_decay: 0.0005 # optimizer weight decay 5e-4 +warmup_epochs: 3.0 # warmup epochs (fractions ok) +warmup_momentum: 0.8 # warmup initial momentum +warmup_bias_lr: 0.1 # warmup initial bias lr +box: 0.05 # box loss gain +cls: 0.3 # cls loss gain +cls_pw: 1.0 # cls BCELoss positive_weight +obj: 0.7 # obj loss gain (scale with pixels) +obj_pw: 1.0 # obj BCELoss positive_weight +iou_t: 0.20 # IoU training threshold +anchor_t: 4.0 # anchor-multiple threshold +# anchors: 3 # anchors per output layer (0 to ignore) +fl_gamma: 0.0 # focal loss gamma (efficientDet default gamma=1.5) +hsv_h: 0.015 # image HSV-Hue augmentation (fraction) +hsv_s: 0.7 # image HSV-Saturation augmentation (fraction) +hsv_v: 0.4 # image HSV-Value augmentation (fraction) +degrees: 0.0 # image rotation (+/- deg) +translate: 0.1 # image translation (+/- fraction) +scale: 0.9 # image scale (+/- gain) +shear: 0.0 # image shear (+/- deg) +perspective: 0.0 # image perspective (+/- fraction), range 0-0.001 +flipud: 0.0 # image flip up-down (probability) +fliplr: 0.5 # image flip left-right (probability) +mosaic: 1.0 # image mosaic (probability) +mixup: 0.1 # image mixup (probability) +copy_paste: 0.0 # segment copy-paste (probability) diff --git a/data/hyp.scratch.yaml b/data/hyps/hyp.scratch.yaml similarity index 90% rename from data/hyp.scratch.yaml rename to data/hyps/hyp.scratch.yaml index 44f26b66..31f6d142 100644 --- a/data/hyp.scratch.yaml +++ b/data/hyps/hyp.scratch.yaml @@ -1,10 +1,10 @@ +# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Hyperparameters for COCO training from scratch # python train.py --batch 40 --cfg yolov5m.yaml --weights '' --data coco.yaml --img 640 --epochs 300 # See tutorials for hyperparameter evolution https://github.com/ultralytics/yolov5#tutorials - lr0: 0.01 # initial learning rate (SGD=1E-2, Adam=1E-3) -lrf: 0.2 # final OneCycleLR learning rate (lr0 * lrf) +lrf: 0.1 # final OneCycleLR learning rate (lr0 * lrf) momentum: 0.937 # SGD momentum/Adam beta1 weight_decay: 0.0005 # optimizer weight decay 5e-4 warmup_epochs: 3.0 # warmup epochs (fractions ok) @@ -31,3 +31,4 @@ flipud: 0.0 # image flip up-down (probability) fliplr: 0.5 # image flip left-right (probability) mosaic: 1.0 # image mosaic (probability) mixup: 0.0 # image mixup (probability) +copy_paste: 0.0 # segment copy-paste (probability) diff --git a/data/objects365.yaml b/data/objects365.yaml index 1cac32f4..3472f0f6 100644 --- a/data/objects365.yaml +++ b/data/objects365.yaml @@ -1,102 +1,112 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license # Objects365 dataset https://www.objects365.org/ -# Train command: python train.py --data objects365.yaml -# Default dataset location is next to YOLOv3: -# /parent_folder -# /datasets/objects365 -# /yolov3 - -# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/] -train: ../datasets/objects365/images/train # 1742289 images -val: ../datasets/objects365/images/val # 5570 images - -# number of classes -nc: 365 - -# class names -names: [ 'Person', 'Sneakers', 'Chair', 'Other Shoes', 'Hat', 'Car', 'Lamp', 'Glasses', 'Bottle', 'Desk', 'Cup', - 'Street Lights', 'Cabinet/shelf', 'Handbag/Satchel', 'Bracelet', 'Plate', 'Picture/Frame', 'Helmet', 'Book', - 'Gloves', 'Storage box', 'Boat', 'Leather Shoes', 'Flower', 'Bench', 'Potted Plant', 'Bowl/Basin', 'Flag', - 'Pillow', 'Boots', 'Vase', 'Microphone', 'Necklace', 'Ring', 'SUV', 'Wine Glass', 'Belt', 'Monitor/TV', - 'Backpack', 'Umbrella', 'Traffic Light', 'Speaker', 'Watch', 'Tie', 'Trash bin Can', 'Slippers', 'Bicycle', - 'Stool', 'Barrel/bucket', 'Van', 'Couch', 'Sandals', 'Basket', 'Drum', 'Pen/Pencil', 'Bus', 'Wild Bird', - 'High Heels', 'Motorcycle', 'Guitar', 'Carpet', 'Cell Phone', 'Bread', 'Camera', 'Canned', 'Truck', - 'Traffic cone', 'Cymbal', 'Lifesaver', 'Towel', 'Stuffed Toy', 'Candle', 'Sailboat', 'Laptop', 'Awning', - 'Bed', 'Faucet', 'Tent', 'Horse', 'Mirror', 'Power outlet', 'Sink', 'Apple', 'Air Conditioner', 'Knife', - 'Hockey Stick', 'Paddle', 'Pickup Truck', 'Fork', 'Traffic Sign', 'Balloon', 'Tripod', 'Dog', 'Spoon', 'Clock', - 'Pot', 'Cow', 'Cake', 'Dinning Table', 'Sheep', 'Hanger', 'Blackboard/Whiteboard', 'Napkin', 'Other Fish', - 'Orange/Tangerine', 'Toiletry', 'Keyboard', 'Tomato', 'Lantern', 'Machinery Vehicle', 'Fan', - 'Green Vegetables', 'Banana', 'Baseball Glove', 'Airplane', 'Mouse', 'Train', 'Pumpkin', 'Soccer', 'Skiboard', - 'Luggage', 'Nightstand', 'Tea pot', 'Telephone', 'Trolley', 'Head Phone', 'Sports Car', 'Stop Sign', - 'Dessert', 'Scooter', 'Stroller', 'Crane', 'Remote', 'Refrigerator', 'Oven', 'Lemon', 'Duck', 'Baseball Bat', - 'Surveillance Camera', 'Cat', 'Jug', 'Broccoli', 'Piano', 'Pizza', 'Elephant', 'Skateboard', 'Surfboard', - 'Gun', 'Skating and Skiing shoes', 'Gas stove', 'Donut', 'Bow Tie', 'Carrot', 'Toilet', 'Kite', 'Strawberry', - 'Other Balls', 'Shovel', 'Pepper', 'Computer Box', 'Toilet Paper', 'Cleaning Products', 'Chopsticks', - 'Microwave', 'Pigeon', 'Baseball', 'Cutting/chopping Board', 'Coffee Table', 'Side Table', 'Scissors', - 'Marker', 'Pie', 'Ladder', 'Snowboard', 'Cookies', 'Radiator', 'Fire Hydrant', 'Basketball', 'Zebra', 'Grape', - 'Giraffe', 'Potato', 'Sausage', 'Tricycle', 'Violin', 'Egg', 'Fire Extinguisher', 'Candy', 'Fire Truck', - 'Billiards', 'Converter', 'Bathtub', 'Wheelchair', 'Golf Club', 'Briefcase', 'Cucumber', 'Cigar/Cigarette', - 'Paint Brush', 'Pear', 'Heavy Truck', 'Hamburger', 'Extractor', 'Extension Cord', 'Tong', 'Tennis Racket', - 'Folder', 'American Football', 'earphone', 'Mask', 'Kettle', 'Tennis', 'Ship', 'Swing', 'Coffee Machine', - 'Slide', 'Carriage', 'Onion', 'Green beans', 'Projector', 'Frisbee', 'Washing Machine/Drying Machine', - 'Chicken', 'Printer', 'Watermelon', 'Saxophone', 'Tissue', 'Toothbrush', 'Ice cream', 'Hot-air balloon', - 'Cello', 'French Fries', 'Scale', 'Trophy', 'Cabbage', 'Hot dog', 'Blender', 'Peach', 'Rice', 'Wallet/Purse', - 'Volleyball', 'Deer', 'Goose', 'Tape', 'Tablet', 'Cosmetics', 'Trumpet', 'Pineapple', 'Golf Ball', - 'Ambulance', 'Parking meter', 'Mango', 'Key', 'Hurdle', 'Fishing Rod', 'Medal', 'Flute', 'Brush', 'Penguin', - 'Megaphone', 'Corn', 'Lettuce', 'Garlic', 'Swan', 'Helicopter', 'Green Onion', 'Sandwich', 'Nuts', - 'Speed Limit Sign', 'Induction Cooker', 'Broom', 'Trombone', 'Plum', 'Rickshaw', 'Goldfish', 'Kiwi fruit', - 'Router/modem', 'Poker Card', 'Toaster', 'Shrimp', 'Sushi', 'Cheese', 'Notepaper', 'Cherry', 'Pliers', 'CD', - 'Pasta', 'Hammer', 'Cue', 'Avocado', 'Hamimelon', 'Flask', 'Mushroom', 'Screwdriver', 'Soap', 'Recorder', - 'Bear', 'Eggplant', 'Board Eraser', 'Coconut', 'Tape Measure/Ruler', 'Pig', 'Showerhead', 'Globe', 'Chips', - 'Steak', 'Crosswalk Sign', 'Stapler', 'Camel', 'Formula 1', 'Pomegranate', 'Dishwasher', 'Crab', - 'Hoverboard', 'Meat ball', 'Rice Cooker', 'Tuba', 'Calculator', 'Papaya', 'Antelope', 'Parrot', 'Seal', - 'Butterfly', 'Dumbbell', 'Donkey', 'Lion', 'Urinal', 'Dolphin', 'Electric Drill', 'Hair Dryer', 'Egg tart', - 'Jellyfish', 'Treadmill', 'Lighter', 'Grapefruit', 'Game board', 'Mop', 'Radish', 'Baozi', 'Target', 'French', - 'Spring Rolls', 'Monkey', 'Rabbit', 'Pencil Case', 'Yak', 'Red Cabbage', 'Binoculars', 'Asparagus', 'Barbell', - 'Scallop', 'Noddles', 'Comb', 'Dumpling', 'Oyster', 'Table Tennis paddle', 'Cosmetics Brush/Eyeliner Pencil', - 'Chainsaw', 'Eraser', 'Lobster', 'Durian', 'Okra', 'Lipstick', 'Cosmetics Mirror', 'Curling', 'Table Tennis' ] +# Example usage: python train.py --data Objects365.yaml +# parent +# ├── yolov3 +# └── datasets +# └── Objects365 ← downloads here -# download command/URL (optional) -------------------------------------------------------------------------------------- +# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] +path: ../datasets/Objects365 # dataset root dir +train: images/train # train images (relative to 'path') 1742289 images +val: images/val # val images (relative to 'path') 80000 images +test: # test images (optional) + +# Classes +nc: 365 # number of classes +names: ['Person', 'Sneakers', 'Chair', 'Other Shoes', 'Hat', 'Car', 'Lamp', 'Glasses', 'Bottle', 'Desk', 'Cup', + 'Street Lights', 'Cabinet/shelf', 'Handbag/Satchel', 'Bracelet', 'Plate', 'Picture/Frame', 'Helmet', 'Book', + 'Gloves', 'Storage box', 'Boat', 'Leather Shoes', 'Flower', 'Bench', 'Potted Plant', 'Bowl/Basin', 'Flag', + 'Pillow', 'Boots', 'Vase', 'Microphone', 'Necklace', 'Ring', 'SUV', 'Wine Glass', 'Belt', 'Monitor/TV', + 'Backpack', 'Umbrella', 'Traffic Light', 'Speaker', 'Watch', 'Tie', 'Trash bin Can', 'Slippers', 'Bicycle', + 'Stool', 'Barrel/bucket', 'Van', 'Couch', 'Sandals', 'Basket', 'Drum', 'Pen/Pencil', 'Bus', 'Wild Bird', + 'High Heels', 'Motorcycle', 'Guitar', 'Carpet', 'Cell Phone', 'Bread', 'Camera', 'Canned', 'Truck', + 'Traffic cone', 'Cymbal', 'Lifesaver', 'Towel', 'Stuffed Toy', 'Candle', 'Sailboat', 'Laptop', 'Awning', + 'Bed', 'Faucet', 'Tent', 'Horse', 'Mirror', 'Power outlet', 'Sink', 'Apple', 'Air Conditioner', 'Knife', + 'Hockey Stick', 'Paddle', 'Pickup Truck', 'Fork', 'Traffic Sign', 'Balloon', 'Tripod', 'Dog', 'Spoon', 'Clock', + 'Pot', 'Cow', 'Cake', 'Dinning Table', 'Sheep', 'Hanger', 'Blackboard/Whiteboard', 'Napkin', 'Other Fish', + 'Orange/Tangerine', 'Toiletry', 'Keyboard', 'Tomato', 'Lantern', 'Machinery Vehicle', 'Fan', + 'Green Vegetables', 'Banana', 'Baseball Glove', 'Airplane', 'Mouse', 'Train', 'Pumpkin', 'Soccer', 'Skiboard', + 'Luggage', 'Nightstand', 'Tea pot', 'Telephone', 'Trolley', 'Head Phone', 'Sports Car', 'Stop Sign', + 'Dessert', 'Scooter', 'Stroller', 'Crane', 'Remote', 'Refrigerator', 'Oven', 'Lemon', 'Duck', 'Baseball Bat', + 'Surveillance Camera', 'Cat', 'Jug', 'Broccoli', 'Piano', 'Pizza', 'Elephant', 'Skateboard', 'Surfboard', + 'Gun', 'Skating and Skiing shoes', 'Gas stove', 'Donut', 'Bow Tie', 'Carrot', 'Toilet', 'Kite', 'Strawberry', + 'Other Balls', 'Shovel', 'Pepper', 'Computer Box', 'Toilet Paper', 'Cleaning Products', 'Chopsticks', + 'Microwave', 'Pigeon', 'Baseball', 'Cutting/chopping Board', 'Coffee Table', 'Side Table', 'Scissors', + 'Marker', 'Pie', 'Ladder', 'Snowboard', 'Cookies', 'Radiator', 'Fire Hydrant', 'Basketball', 'Zebra', 'Grape', + 'Giraffe', 'Potato', 'Sausage', 'Tricycle', 'Violin', 'Egg', 'Fire Extinguisher', 'Candy', 'Fire Truck', + 'Billiards', 'Converter', 'Bathtub', 'Wheelchair', 'Golf Club', 'Briefcase', 'Cucumber', 'Cigar/Cigarette', + 'Paint Brush', 'Pear', 'Heavy Truck', 'Hamburger', 'Extractor', 'Extension Cord', 'Tong', 'Tennis Racket', + 'Folder', 'American Football', 'earphone', 'Mask', 'Kettle', 'Tennis', 'Ship', 'Swing', 'Coffee Machine', + 'Slide', 'Carriage', 'Onion', 'Green beans', 'Projector', 'Frisbee', 'Washing Machine/Drying Machine', + 'Chicken', 'Printer', 'Watermelon', 'Saxophone', 'Tissue', 'Toothbrush', 'Ice cream', 'Hot-air balloon', + 'Cello', 'French Fries', 'Scale', 'Trophy', 'Cabbage', 'Hot dog', 'Blender', 'Peach', 'Rice', 'Wallet/Purse', + 'Volleyball', 'Deer', 'Goose', 'Tape', 'Tablet', 'Cosmetics', 'Trumpet', 'Pineapple', 'Golf Ball', + 'Ambulance', 'Parking meter', 'Mango', 'Key', 'Hurdle', 'Fishing Rod', 'Medal', 'Flute', 'Brush', 'Penguin', + 'Megaphone', 'Corn', 'Lettuce', 'Garlic', 'Swan', 'Helicopter', 'Green Onion', 'Sandwich', 'Nuts', + 'Speed Limit Sign', 'Induction Cooker', 'Broom', 'Trombone', 'Plum', 'Rickshaw', 'Goldfish', 'Kiwi fruit', + 'Router/modem', 'Poker Card', 'Toaster', 'Shrimp', 'Sushi', 'Cheese', 'Notepaper', 'Cherry', 'Pliers', 'CD', + 'Pasta', 'Hammer', 'Cue', 'Avocado', 'Hamimelon', 'Flask', 'Mushroom', 'Screwdriver', 'Soap', 'Recorder', + 'Bear', 'Eggplant', 'Board Eraser', 'Coconut', 'Tape Measure/Ruler', 'Pig', 'Showerhead', 'Globe', 'Chips', + 'Steak', 'Crosswalk Sign', 'Stapler', 'Camel', 'Formula 1', 'Pomegranate', 'Dishwasher', 'Crab', + 'Hoverboard', 'Meat ball', 'Rice Cooker', 'Tuba', 'Calculator', 'Papaya', 'Antelope', 'Parrot', 'Seal', + 'Butterfly', 'Dumbbell', 'Donkey', 'Lion', 'Urinal', 'Dolphin', 'Electric Drill', 'Hair Dryer', 'Egg tart', + 'Jellyfish', 'Treadmill', 'Lighter', 'Grapefruit', 'Game board', 'Mop', 'Radish', 'Baozi', 'Target', 'French', + 'Spring Rolls', 'Monkey', 'Rabbit', 'Pencil Case', 'Yak', 'Red Cabbage', 'Binoculars', 'Asparagus', 'Barbell', + 'Scallop', 'Noddles', 'Comb', 'Dumpling', 'Oyster', 'Table Tennis paddle', 'Cosmetics Brush/Eyeliner Pencil', + 'Chainsaw', 'Eraser', 'Lobster', 'Durian', 'Okra', 'Lipstick', 'Cosmetics Mirror', 'Curling', 'Table Tennis'] + + +# Download script/URL (optional) --------------------------------------------------------------------------------------- download: | from pycocotools.coco import COCO from tqdm import tqdm - from utils.general import download, Path + from utils.general import Path, download, np, xyxy2xywhn # Make Directories - dir = Path('../datasets/objects365') # dataset directory + dir = Path(yaml['path']) # dataset root dir for p in 'images', 'labels': (dir / p).mkdir(parents=True, exist_ok=True) for q in 'train', 'val': (dir / p / q).mkdir(parents=True, exist_ok=True) - # Download - url = "https://dorc.ks3-cn-beijing.ksyun.com/data-set/2020Objects365%E6%95%B0%E6%8D%AE%E9%9B%86/train/" - download([url + 'zhiyuan_objv2_train.tar.gz'], dir=dir, delete=False) # annotations json - download([url + f for f in [f'patch{i}.tar.gz' for i in range(51)]], dir=dir / 'images' / 'train', - curl=True, delete=False, threads=8) + # Train, Val Splits + for split, patches in [('train', 50 + 1), ('val', 43 + 1)]: + print(f"Processing {split} in {patches} patches ...") + images, labels = dir / 'images' / split, dir / 'labels' / split - # Move - train = dir / 'images' / 'train' - for f in tqdm(train.rglob('*.jpg'), desc=f'Moving images'): - f.rename(train / f.name) # move to /images/train + # Download + url = f"https://dorc.ks3-cn-beijing.ksyun.com/data-set/2020Objects365%E6%95%B0%E6%8D%AE%E9%9B%86/{split}/" + if split == 'train': + download([f'{url}zhiyuan_objv2_{split}.tar.gz'], dir=dir, delete=False) # annotations json + download([f'{url}patch{i}.tar.gz' for i in range(patches)], dir=images, curl=True, delete=False, threads=8) + elif split == 'val': + download([f'{url}zhiyuan_objv2_{split}.json'], dir=dir, delete=False) # annotations json + download([f'{url}images/v1/patch{i}.tar.gz' for i in range(15 + 1)], dir=images, curl=True, delete=False, threads=8) + download([f'{url}images/v2/patch{i}.tar.gz' for i in range(16, patches)], dir=images, curl=True, delete=False, threads=8) - # Labels - coco = COCO(dir / 'zhiyuan_objv2_train.json') - names = [x["name"] for x in coco.loadCats(coco.getCatIds())] - for cid, cat in enumerate(names): - catIds = coco.getCatIds(catNms=[cat]) - imgIds = coco.getImgIds(catIds=catIds) - for im in tqdm(coco.loadImgs(imgIds), desc=f'Class {cid + 1}/{len(names)} {cat}'): - width, height = im["width"], im["height"] - path = Path(im["file_name"]) # image filename - try: - with open(dir / 'labels' / 'train' / path.with_suffix('.txt').name, 'a') as file: - annIds = coco.getAnnIds(imgIds=im["id"], catIds=catIds, iscrowd=None) - for a in coco.loadAnns(annIds): - x, y, w, h = a['bbox'] # bounding box in xywh (xy top-left corner) - x, y = x + w / 2, y + h / 2 # xy to center - file.write(f"{cid} {x / width:.5f} {y / height:.5f} {w / width:.5f} {h / height:.5f}\n") + # Move + for f in tqdm(images.rglob('*.jpg'), desc=f'Moving {split} images'): + f.rename(images / f.name) # move to /images/{split} - except Exception as e: - print(e) + # Labels + coco = COCO(dir / f'zhiyuan_objv2_{split}.json') + names = [x["name"] for x in coco.loadCats(coco.getCatIds())] + for cid, cat in enumerate(names): + catIds = coco.getCatIds(catNms=[cat]) + imgIds = coco.getImgIds(catIds=catIds) + for im in tqdm(coco.loadImgs(imgIds), desc=f'Class {cid + 1}/{len(names)} {cat}'): + width, height = im["width"], im["height"] + path = Path(im["file_name"]) # image filename + try: + with open(labels / path.with_suffix('.txt').name, 'a') as file: + annIds = coco.getAnnIds(imgIds=im["id"], catIds=catIds, iscrowd=None) + for a in coco.loadAnns(annIds): + x, y, w, h = a['bbox'] # bounding box in xywh (xy top-left corner) + xyxy = np.array([x, y, x + w, y + h])[None] # pixels(1,4) + x, y, w, h = xyxy2xywhn(xyxy, w=width, h=height, clip=True)[0] # normalized and clipped + file.write(f"{cid} {x:.5f} {y:.5f} {w:.5f} {h:.5f}\n") + except Exception as e: + print(e) diff --git a/data/scripts/download_weights.sh b/data/scripts/download_weights.sh new file mode 100755 index 00000000..50aec183 --- /dev/null +++ b/data/scripts/download_weights.sh @@ -0,0 +1,18 @@ +#!/bin/bash +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +# Download latest models from https://github.com/ultralytics/yolov3/releases +# Example usage: bash path/to/download_weights.sh +# parent +# └── yolov3 +# ├── yolov3.pt ← downloads here +# ├── yolov3-spp.pt +# └── ... + +python - <train.txt -cat 2007_train.txt 2007_val.txt 2007_test.txt 2012_train.txt 2012_val.txt >train.all.txt - -mkdir ../VOC ../VOC/images ../VOC/images/train ../VOC/images/val -mkdir ../VOC/labels ../VOC/labels/train ../VOC/labels/val - -python3 - "$@" <= cls >= 0, f'incorrect class index {cls}' + + # Write YOLO label + if id not in shapes: + shapes[id] = Image.open(file).size + box = xyxy2xywhn(box[None].astype(np.float), w=shapes[id][0], h=shapes[id][1], clip=True) + with open((labels / id).with_suffix('.txt'), 'a') as f: + f.write(f"{cls} {' '.join(f'{x:.6f}' for x in box[0])}\n") # write label.txt + except Exception as e: + print(f'WARNING: skipping one label for {file}: {e}') + + + # Download manually from https://challenge.xviewdataset.org + dir = Path(yaml['path']) # dataset root dir + # urls = ['https://d307kc0mrhucc3.cloudfront.net/train_labels.zip', # train labels + # 'https://d307kc0mrhucc3.cloudfront.net/train_images.zip', # 15G, 847 train images + # 'https://d307kc0mrhucc3.cloudfront.net/val_images.zip'] # 5G, 282 val images (no labels) + # download(urls, dir=dir, delete=False) + + # Convert labels + convert_labels(dir / 'xView_train.geojson') + + # Move images + images = Path(dir / 'images') + images.mkdir(parents=True, exist_ok=True) + Path(dir / 'train_images').rename(dir / 'images' / 'train') + Path(dir / 'val_images').rename(dir / 'images' / 'val') + + # Split + autosplit(dir / 'images' / 'train') diff --git a/detect.py b/detect.py index c2bec17e..1ae4c3c4 100644 --- a/detect.py +++ b/detect.py @@ -1,98 +1,147 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Run inference on images, videos, directories, streams, etc. + +Usage: + $ python path/to/detect.py --weights yolov3.pt --source 0 # webcam + img.jpg # image + vid.mp4 # video + path/ # directory + path/*.jpg # glob + 'https://youtu.be/Zgi9g1ksQHc' # YouTube + 'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP stream +""" + import argparse -import time +import os +import sys from pathlib import Path import cv2 import torch import torch.backends.cudnn as cudnn -from models.experimental import attempt_load -from utils.datasets import LoadStreams, LoadImages -from utils.general import check_img_size, check_requirements, check_imshow, non_max_suppression, apply_classifier, \ - scale_coords, xyxy2xywh, strip_optimizer, set_logging, increment_path, save_one_box -from utils.plots import colors, plot_one_box -from utils.torch_utils import select_device, load_classifier, time_synchronized +FILE = Path(__file__).resolve() +ROOT = FILE.parents[0] # root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH +ROOT = Path(os.path.relpath(ROOT, Path.cwd())) # relative + +from models.common import DetectMultiBackend +from utils.datasets import IMG_FORMATS, VID_FORMATS, LoadImages, LoadStreams +from utils.general import (LOGGER, check_file, check_img_size, check_imshow, check_requirements, colorstr, + increment_path, non_max_suppression, print_args, scale_coords, strip_optimizer, xyxy2xywh) +from utils.plots import Annotator, colors, save_one_box +from utils.torch_utils import select_device, time_sync @torch.no_grad() -def detect(opt): - source, weights, view_img, save_txt, imgsz = opt.source, opt.weights, opt.view_img, opt.save_txt, opt.img_size - save_img = not opt.nosave and not source.endswith('.txt') # save inference images - webcam = source.isnumeric() or source.endswith('.txt') or source.lower().startswith( - ('rtsp://', 'rtmp://', 'http://', 'https://')) +def run(weights=ROOT / 'yolov3.pt', # model.pt path(s) + source=ROOT / 'data/images', # file/dir/URL/glob, 0 for webcam + imgsz=640, # inference size (pixels) + conf_thres=0.25, # confidence threshold + iou_thres=0.45, # NMS IOU threshold + max_det=1000, # maximum detections per image + device='', # cuda device, i.e. 0 or 0,1,2,3 or cpu + view_img=False, # show results + save_txt=False, # save results to *.txt + save_conf=False, # save confidences in --save-txt labels + save_crop=False, # save cropped prediction boxes + nosave=False, # do not save images/videos + classes=None, # filter by class: --class 0, or --class 0 2 3 + agnostic_nms=False, # class-agnostic NMS + augment=False, # augmented inference + visualize=False, # visualize features + update=False, # update all models + project=ROOT / 'runs/detect', # save results to project/name + name='exp', # save results to project/name + exist_ok=False, # existing project/name ok, do not increment + line_thickness=3, # bounding box thickness (pixels) + hide_labels=False, # hide labels + hide_conf=False, # hide confidences + half=False, # use FP16 half-precision inference + dnn=False, # use OpenCV DNN for ONNX inference + ): + source = str(source) + save_img = not nosave and not source.endswith('.txt') # save inference images + is_file = Path(source).suffix[1:] in (IMG_FORMATS + VID_FORMATS) + is_url = source.lower().startswith(('rtsp://', 'rtmp://', 'http://', 'https://')) + webcam = source.isnumeric() or source.endswith('.txt') or (is_url and not is_file) + if is_url and is_file: + source = check_file(source) # download # Directories - save_dir = increment_path(Path(opt.project) / opt.name, exist_ok=opt.exist_ok) # increment run + save_dir = increment_path(Path(project) / name, exist_ok=exist_ok) # increment run (save_dir / 'labels' if save_txt else save_dir).mkdir(parents=True, exist_ok=True) # make dir - # Initialize - set_logging() - device = select_device(opt.device) - half = device.type != 'cpu' # half precision only supported on CUDA - # Load model - model = attempt_load(weights, map_location=device) # load FP32 model - stride = int(model.stride.max()) # model stride - imgsz = check_img_size(imgsz, s=stride) # check img_size - names = model.module.names if hasattr(model, 'module') else model.names # get class names - if half: - model.half() # to FP16 + device = select_device(device) + model = DetectMultiBackend(weights, device=device, dnn=dnn) + stride, names, pt, jit, onnx = model.stride, model.names, model.pt, model.jit, model.onnx + imgsz = check_img_size(imgsz, s=stride) # check image size - # Second-stage classifier - classify = False - if classify: - modelc = load_classifier(name='resnet101', n=2) # initialize - modelc.load_state_dict(torch.load('weights/resnet101.pt', map_location=device)['model']).to(device).eval() + # Half + half &= pt and device.type != 'cpu' # half precision only supported by PyTorch on CUDA + if pt: + model.model.half() if half else model.model.float() - # Set Dataloader - vid_path, vid_writer = None, None + # Dataloader if webcam: view_img = check_imshow() cudnn.benchmark = True # set True to speed up constant image size inference - dataset = LoadStreams(source, img_size=imgsz, stride=stride) + dataset = LoadStreams(source, img_size=imgsz, stride=stride, auto=pt and not jit) + bs = len(dataset) # batch_size else: - dataset = LoadImages(source, img_size=imgsz, stride=stride) + dataset = LoadImages(source, img_size=imgsz, stride=stride, auto=pt and not jit) + bs = 1 # batch_size + vid_path, vid_writer = [None] * bs, [None] * bs # Run inference - if device.type != 'cpu': - model(torch.zeros(1, 3, imgsz, imgsz).to(device).type_as(next(model.parameters()))) # run once - t0 = time.time() - for path, img, im0s, vid_cap in dataset: - img = torch.from_numpy(img).to(device) - img = img.half() if half else img.float() # uint8 to fp16/32 - img /= 255.0 # 0 - 255 to 0.0 - 1.0 - if img.ndimension() == 3: - img = img.unsqueeze(0) + if pt and device.type != 'cpu': + model(torch.zeros(1, 3, *imgsz).to(device).type_as(next(model.model.parameters()))) # warmup + dt, seen = [0.0, 0.0, 0.0], 0 + for path, im, im0s, vid_cap, s in dataset: + t1 = time_sync() + im = torch.from_numpy(im).to(device) + im = im.half() if half else im.float() # uint8 to fp16/32 + im /= 255 # 0 - 255 to 0.0 - 1.0 + if len(im.shape) == 3: + im = im[None] # expand for batch dim + t2 = time_sync() + dt[0] += t2 - t1 # Inference - t1 = time_synchronized() - pred = model(img, augment=opt.augment)[0] + visualize = increment_path(save_dir / Path(path).stem, mkdir=True) if visualize else False + pred = model(im, augment=augment, visualize=visualize) + t3 = time_sync() + dt[1] += t3 - t2 - # Apply NMS - pred = non_max_suppression(pred, opt.conf_thres, opt.iou_thres, opt.classes, opt.agnostic_nms, - max_det=opt.max_det) - t2 = time_synchronized() + # NMS + pred = non_max_suppression(pred, conf_thres, iou_thres, classes, agnostic_nms, max_det=max_det) + dt[2] += time_sync() - t3 - # Apply Classifier - if classify: - pred = apply_classifier(pred, modelc, img, im0s) + # Second-stage classifier (optional) + # pred = utils.general.apply_classifier(pred, classifier_model, im, im0s) - # Process detections - for i, det in enumerate(pred): # detections per image + # Process predictions + for i, det in enumerate(pred): # per image + seen += 1 if webcam: # batch_size >= 1 - p, s, im0, frame = path[i], f'{i}: ', im0s[i].copy(), dataset.count + p, im0, frame = path[i], im0s[i].copy(), dataset.count + s += f'{i}: ' else: - p, s, im0, frame = path, '', im0s.copy(), getattr(dataset, 'frame', 0) + p, im0, frame = path, im0s.copy(), getattr(dataset, 'frame', 0) p = Path(p) # to Path - save_path = str(save_dir / p.name) # img.jpg - txt_path = str(save_dir / 'labels' / p.stem) + ('' if dataset.mode == 'image' else f'_{frame}') # img.txt - s += '%gx%g ' % img.shape[2:] # print string + save_path = str(save_dir / p.name) # im.jpg + txt_path = str(save_dir / 'labels' / p.stem) + ('' if dataset.mode == 'image' else f'_{frame}') # im.txt + s += '%gx%g ' % im.shape[2:] # print string gn = torch.tensor(im0.shape)[[1, 0, 1, 0]] # normalization gain whwh - imc = im0.copy() if opt.save_crop else im0 # for opt.save_crop + imc = im0.copy() if save_crop else im0 # for save_crop + annotator = Annotator(im0, line_width=line_thickness, example=str(names)) if len(det): # Rescale boxes from img_size to im0 size - det[:, :4] = scale_coords(img.shape[2:], det[:, :4], im0.shape).round() + det[:, :4] = scale_coords(im.shape[2:], det[:, :4], im0.shape).round() # Print results for c in det[:, -1].unique(): @@ -103,21 +152,22 @@ def detect(opt): for *xyxy, conf, cls in reversed(det): if save_txt: # Write to file xywh = (xyxy2xywh(torch.tensor(xyxy).view(1, 4)) / gn).view(-1).tolist() # normalized xywh - line = (cls, *xywh, conf) if opt.save_conf else (cls, *xywh) # label format + line = (cls, *xywh, conf) if save_conf else (cls, *xywh) # label format with open(txt_path + '.txt', 'a') as f: f.write(('%g ' * len(line)).rstrip() % line + '\n') - if save_img or opt.save_crop or view_img: # Add bbox to image + if save_img or save_crop or view_img: # Add bbox to image c = int(cls) # integer class - label = None if opt.hide_labels else (names[c] if opt.hide_conf else f'{names[c]} {conf:.2f}') - plot_one_box(xyxy, im0, label=label, color=colors(c, True), line_thickness=opt.line_thickness) - if opt.save_crop: + label = None if hide_labels else (names[c] if hide_conf else f'{names[c]} {conf:.2f}') + annotator.box_label(xyxy, label, color=colors(c, True)) + if save_crop: save_one_box(xyxy, imc, file=save_dir / 'crops' / names[c] / f'{p.stem}.jpg', BGR=True) - # Print time (inference + NMS) - print(f'{s}Done. ({t2 - t1:.3f}s)') + # Print time (inference-only) + LOGGER.info(f'{s}Done. ({t3 - t2:.3f}s)') # Stream results + im0 = annotator.result() if view_img: cv2.imshow(str(p), im0) cv2.waitKey(1) # 1 millisecond @@ -127,10 +177,10 @@ def detect(opt): if dataset.mode == 'image': cv2.imwrite(save_path, im0) else: # 'video' or 'stream' - if vid_path != save_path: # new video - vid_path = save_path - if isinstance(vid_writer, cv2.VideoWriter): - vid_writer.release() # release previous video writer + if vid_path[i] != save_path: # new video + vid_path[i] = save_path + if isinstance(vid_writer[i], cv2.VideoWriter): + vid_writer[i].release() # release previous video writer if vid_cap: # video fps = vid_cap.get(cv2.CAP_PROP_FPS) w = int(vid_cap.get(cv2.CAP_PROP_FRAME_WIDTH)) @@ -138,47 +188,57 @@ def detect(opt): else: # stream fps, w, h = 30, im0.shape[1], im0.shape[0] save_path += '.mp4' - vid_writer = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (w, h)) - vid_writer.write(im0) + vid_writer[i] = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (w, h)) + vid_writer[i].write(im0) + # Print results + t = tuple(x / seen * 1E3 for x in dt) # speeds per image + LOGGER.info(f'Speed: %.1fms pre-process, %.1fms inference, %.1fms NMS per image at shape {(1, 3, *imgsz)}' % t) if save_txt or save_img: s = f"\n{len(list(save_dir.glob('labels/*.txt')))} labels saved to {save_dir / 'labels'}" if save_txt else '' - print(f"Results saved to {save_dir}{s}") - - print(f'Done. ({time.time() - t0:.3f}s)') + LOGGER.info(f"Results saved to {colorstr('bold', save_dir)}{s}") + if update: + strip_optimizer(weights) # update model (to fix SourceChangeWarning) -if __name__ == '__main__': +def parse_opt(): parser = argparse.ArgumentParser() - parser.add_argument('--weights', nargs='+', type=str, default='yolov3.pt', help='model.pt path(s)') - parser.add_argument('--source', type=str, default='data/images', help='source') # file/folder, 0 for webcam - parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)') - parser.add_argument('--conf-thres', type=float, default=0.25, help='object confidence threshold') - parser.add_argument('--iou-thres', type=float, default=0.45, help='IOU threshold for NMS') - parser.add_argument('--max-det', type=int, default=1000, help='maximum number of detections per image') + parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'yolov3.pt', help='model path(s)') + parser.add_argument('--source', type=str, default=ROOT / 'data/images', help='file/dir/URL/glob, 0 for webcam') + parser.add_argument('--imgsz', '--img', '--img-size', nargs='+', type=int, default=[640], help='inference size h,w') + parser.add_argument('--conf-thres', type=float, default=0.25, help='confidence threshold') + parser.add_argument('--iou-thres', type=float, default=0.45, help='NMS IoU threshold') + parser.add_argument('--max-det', type=int, default=1000, help='maximum detections per image') parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') - parser.add_argument('--view-img', action='store_true', help='display results') + parser.add_argument('--view-img', action='store_true', help='show results') parser.add_argument('--save-txt', action='store_true', help='save results to *.txt') parser.add_argument('--save-conf', action='store_true', help='save confidences in --save-txt labels') parser.add_argument('--save-crop', action='store_true', help='save cropped prediction boxes') parser.add_argument('--nosave', action='store_true', help='do not save images/videos') - parser.add_argument('--classes', nargs='+', type=int, help='filter by class: --class 0, or --class 0 2 3') + parser.add_argument('--classes', nargs='+', type=int, help='filter by class: --classes 0, or --classes 0 2 3') parser.add_argument('--agnostic-nms', action='store_true', help='class-agnostic NMS') parser.add_argument('--augment', action='store_true', help='augmented inference') + parser.add_argument('--visualize', action='store_true', help='visualize features') parser.add_argument('--update', action='store_true', help='update all models') - parser.add_argument('--project', default='runs/detect', help='save results to project/name') + parser.add_argument('--project', default=ROOT / 'runs/detect', help='save results to project/name') parser.add_argument('--name', default='exp', help='save results to project/name') parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment') parser.add_argument('--line-thickness', default=3, type=int, help='bounding box thickness (pixels)') parser.add_argument('--hide-labels', default=False, action='store_true', help='hide labels') parser.add_argument('--hide-conf', default=False, action='store_true', help='hide confidences') + parser.add_argument('--half', action='store_true', help='use FP16 half-precision inference') + parser.add_argument('--dnn', action='store_true', help='use OpenCV DNN for ONNX inference') opt = parser.parse_args() - print(opt) - check_requirements(exclude=('tensorboard', 'pycocotools', 'thop')) + opt.imgsz *= 2 if len(opt.imgsz) == 1 else 1 # expand + print_args(FILE.stem, opt) + return opt - if opt.update: # update all models (to fix SourceChangeWarning) - for opt.weights in ['yolov3.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt']: - detect(opt=opt) - strip_optimizer(opt.weights) - else: - detect(opt=opt) + +def main(opt): + check_requirements(exclude=('tensorboard', 'thop')) + run(**vars(opt)) + + +if __name__ == "__main__": + opt = parse_opt() + main(opt) diff --git a/export.py b/export.py new file mode 100644 index 00000000..ce23cf5b --- /dev/null +++ b/export.py @@ -0,0 +1,369 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Export a PyTorch model to TorchScript, ONNX, CoreML, TensorFlow (saved_model, pb, TFLite, TF.js,) formats +TensorFlow exports authored by https://github.com/zldrobit + +Usage: + $ python path/to/export.py --weights yolov3.pt --include torchscript onnx coreml saved_model pb tflite tfjs + +Inference: + $ python path/to/detect.py --weights yolov3.pt + yolov3.onnx (must export with --dynamic) + yolov3_saved_model + yolov3.pb + yolov3.tflite + +TensorFlow.js: + $ cd .. && git clone https://github.com/zldrobit/tfjs-yolov5-example.git && cd tfjs-yolov5-example + $ npm install + $ ln -s ../../yolov5/yolov3_web_model public/yolov3_web_model + $ npm start +""" + +import argparse +import json +import os +import subprocess +import sys +import time +from pathlib import Path + +import torch +import torch.nn as nn +from torch.utils.mobile_optimizer import optimize_for_mobile + +FILE = Path(__file__).resolve() +ROOT = FILE.parents[0] # root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH +ROOT = Path(os.path.relpath(ROOT, Path.cwd())) # relative + +from models.common import Conv +from models.experimental import attempt_load +from models.yolo import Detect +from utils.activations import SiLU +from utils.datasets import LoadImages +from utils.general import (LOGGER, check_dataset, check_img_size, check_requirements, colorstr, file_size, print_args, + url2file) +from utils.torch_utils import select_device + + +def export_torchscript(model, im, file, optimize, prefix=colorstr('TorchScript:')): + # TorchScript model export + try: + LOGGER.info(f'\n{prefix} starting export with torch {torch.__version__}...') + f = file.with_suffix('.torchscript.pt') + + ts = torch.jit.trace(model, im, strict=False) + d = {"shape": im.shape, "stride": int(max(model.stride)), "names": model.names} + extra_files = {'config.txt': json.dumps(d)} # torch._C.ExtraFilesMap() + (optimize_for_mobile(ts) if optimize else ts).save(f, _extra_files=extra_files) + + LOGGER.info(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)') + except Exception as e: + LOGGER.info(f'{prefix} export failure: {e}') + + +def export_onnx(model, im, file, opset, train, dynamic, simplify, prefix=colorstr('ONNX:')): + # ONNX export + try: + check_requirements(('onnx',)) + import onnx + + LOGGER.info(f'\n{prefix} starting export with onnx {onnx.__version__}...') + f = file.with_suffix('.onnx') + + torch.onnx.export(model, im, f, verbose=False, opset_version=opset, + training=torch.onnx.TrainingMode.TRAINING if train else torch.onnx.TrainingMode.EVAL, + do_constant_folding=not train, + input_names=['images'], + output_names=['output'], + dynamic_axes={'images': {0: 'batch', 2: 'height', 3: 'width'}, # shape(1,3,640,640) + 'output': {0: 'batch', 1: 'anchors'} # shape(1,25200,85) + } if dynamic else None) + + # Checks + model_onnx = onnx.load(f) # load onnx model + onnx.checker.check_model(model_onnx) # check onnx model + # LOGGER.info(onnx.helper.printable_graph(model_onnx.graph)) # print + + # Simplify + if simplify: + try: + check_requirements(('onnx-simplifier',)) + import onnxsim + + LOGGER.info(f'{prefix} simplifying with onnx-simplifier {onnxsim.__version__}...') + model_onnx, check = onnxsim.simplify( + model_onnx, + dynamic_input_shape=dynamic, + input_shapes={'images': list(im.shape)} if dynamic else None) + assert check, 'assert check failed' + onnx.save(model_onnx, f) + except Exception as e: + LOGGER.info(f'{prefix} simplifier failure: {e}') + LOGGER.info(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)') + LOGGER.info(f"{prefix} run --dynamic ONNX model inference with: 'python detect.py --weights {f}'") + except Exception as e: + LOGGER.info(f'{prefix} export failure: {e}') + + +def export_coreml(model, im, file, prefix=colorstr('CoreML:')): + # CoreML export + ct_model = None + try: + check_requirements(('coremltools',)) + import coremltools as ct + + LOGGER.info(f'\n{prefix} starting export with coremltools {ct.__version__}...') + f = file.with_suffix('.mlmodel') + + model.train() # CoreML exports should be placed in model.train() mode + ts = torch.jit.trace(model, im, strict=False) # TorchScript model + ct_model = ct.convert(ts, inputs=[ct.ImageType('image', shape=im.shape, scale=1 / 255, bias=[0, 0, 0])]) + ct_model.save(f) + + LOGGER.info(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)') + except Exception as e: + LOGGER.info(f'\n{prefix} export failure: {e}') + + return ct_model + + +def export_saved_model(model, im, file, dynamic, + tf_nms=False, agnostic_nms=False, topk_per_class=100, topk_all=100, iou_thres=0.45, + conf_thres=0.25, prefix=colorstr('TensorFlow saved_model:')): + # TensorFlow saved_model export + keras_model = None + try: + import tensorflow as tf + from tensorflow import keras + + from models.tf import TFDetect, TFModel + + LOGGER.info(f'\n{prefix} starting export with tensorflow {tf.__version__}...') + f = str(file).replace('.pt', '_saved_model') + batch_size, ch, *imgsz = list(im.shape) # BCHW + + tf_model = TFModel(cfg=model.yaml, model=model, nc=model.nc, imgsz=imgsz) + im = tf.zeros((batch_size, *imgsz, 3)) # BHWC order for TensorFlow + y = tf_model.predict(im, tf_nms, agnostic_nms, topk_per_class, topk_all, iou_thres, conf_thres) + inputs = keras.Input(shape=(*imgsz, 3), batch_size=None if dynamic else batch_size) + outputs = tf_model.predict(inputs, tf_nms, agnostic_nms, topk_per_class, topk_all, iou_thres, conf_thres) + keras_model = keras.Model(inputs=inputs, outputs=outputs) + keras_model.trainable = False + keras_model.summary() + keras_model.save(f, save_format='tf') + + LOGGER.info(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)') + except Exception as e: + LOGGER.info(f'\n{prefix} export failure: {e}') + + return keras_model + + +def export_pb(keras_model, im, file, prefix=colorstr('TensorFlow GraphDef:')): + # TensorFlow GraphDef *.pb export https://github.com/leimao/Frozen_Graph_TensorFlow + try: + import tensorflow as tf + from tensorflow.python.framework.convert_to_constants import convert_variables_to_constants_v2 + + LOGGER.info(f'\n{prefix} starting export with tensorflow {tf.__version__}...') + f = file.with_suffix('.pb') + + m = tf.function(lambda x: keras_model(x)) # full model + m = m.get_concrete_function(tf.TensorSpec(keras_model.inputs[0].shape, keras_model.inputs[0].dtype)) + frozen_func = convert_variables_to_constants_v2(m) + frozen_func.graph.as_graph_def() + tf.io.write_graph(graph_or_graph_def=frozen_func.graph, logdir=str(f.parent), name=f.name, as_text=False) + + LOGGER.info(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)') + except Exception as e: + LOGGER.info(f'\n{prefix} export failure: {e}') + + +def export_tflite(keras_model, im, file, int8, data, ncalib, prefix=colorstr('TensorFlow Lite:')): + # TensorFlow Lite export + try: + import tensorflow as tf + + from models.tf import representative_dataset_gen + + LOGGER.info(f'\n{prefix} starting export with tensorflow {tf.__version__}...') + batch_size, ch, *imgsz = list(im.shape) # BCHW + f = str(file).replace('.pt', '-fp16.tflite') + + converter = tf.lite.TFLiteConverter.from_keras_model(keras_model) + converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS] + converter.target_spec.supported_types = [tf.float16] + converter.optimizations = [tf.lite.Optimize.DEFAULT] + if int8: + dataset = LoadImages(check_dataset(data)['train'], img_size=imgsz, auto=False) # representative data + converter.representative_dataset = lambda: representative_dataset_gen(dataset, ncalib) + converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8] + converter.target_spec.supported_types = [] + converter.inference_input_type = tf.uint8 # or tf.int8 + converter.inference_output_type = tf.uint8 # or tf.int8 + converter.experimental_new_quantizer = False + f = str(file).replace('.pt', '-int8.tflite') + + tflite_model = converter.convert() + open(f, "wb").write(tflite_model) + LOGGER.info(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)') + + except Exception as e: + LOGGER.info(f'\n{prefix} export failure: {e}') + + +def export_tfjs(keras_model, im, file, prefix=colorstr('TensorFlow.js:')): + # TensorFlow.js export + try: + check_requirements(('tensorflowjs',)) + import re + + import tensorflowjs as tfjs + + LOGGER.info(f'\n{prefix} starting export with tensorflowjs {tfjs.__version__}...') + f = str(file).replace('.pt', '_web_model') # js dir + f_pb = file.with_suffix('.pb') # *.pb path + f_json = f + '/model.json' # *.json path + + cmd = f"tensorflowjs_converter --input_format=tf_frozen_model " \ + f"--output_node_names='Identity,Identity_1,Identity_2,Identity_3' {f_pb} {f}" + subprocess.run(cmd, shell=True) + + json = open(f_json).read() + with open(f_json, 'w') as j: # sort JSON Identity_* in ascending order + subst = re.sub( + r'{"outputs": {"Identity.?.?": {"name": "Identity.?.?"}, ' + r'"Identity.?.?": {"name": "Identity.?.?"}, ' + r'"Identity.?.?": {"name": "Identity.?.?"}, ' + r'"Identity.?.?": {"name": "Identity.?.?"}}}', + r'{"outputs": {"Identity": {"name": "Identity"}, ' + r'"Identity_1": {"name": "Identity_1"}, ' + r'"Identity_2": {"name": "Identity_2"}, ' + r'"Identity_3": {"name": "Identity_3"}}}', + json) + j.write(subst) + + LOGGER.info(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)') + except Exception as e: + LOGGER.info(f'\n{prefix} export failure: {e}') + + +@torch.no_grad() +def run(data=ROOT / 'data/coco128.yaml', # 'dataset.yaml path' + weights=ROOT / 'yolov3.pt', # weights path + imgsz=(640, 640), # image (height, width) + batch_size=1, # batch size + device='cpu', # cuda device, i.e. 0 or 0,1,2,3 or cpu + include=('torchscript', 'onnx', 'coreml'), # include formats + half=False, # FP16 half-precision export + inplace=False, # set Detect() inplace=True + train=False, # model.train() mode + optimize=False, # TorchScript: optimize for mobile + int8=False, # CoreML/TF INT8 quantization + dynamic=False, # ONNX/TF: dynamic axes + simplify=False, # ONNX: simplify model + opset=12, # ONNX: opset version + topk_per_class=100, # TF.js NMS: topk per class to keep + topk_all=100, # TF.js NMS: topk for all classes to keep + iou_thres=0.45, # TF.js NMS: IoU threshold + conf_thres=0.25 # TF.js NMS: confidence threshold + ): + t = time.time() + include = [x.lower() for x in include] + tf_exports = list(x in include for x in ('saved_model', 'pb', 'tflite', 'tfjs')) # TensorFlow exports + imgsz *= 2 if len(imgsz) == 1 else 1 # expand + file = Path(url2file(weights) if str(weights).startswith(('http:/', 'https:/')) else weights) + + # Load PyTorch model + device = select_device(device) + assert not (device.type == 'cpu' and half), '--half only compatible with GPU export, i.e. use --device 0' + model = attempt_load(weights, map_location=device, inplace=True, fuse=True) # load FP32 model + nc, names = model.nc, model.names # number of classes, class names + + # Input + gs = int(max(model.stride)) # grid size (max stride) + imgsz = [check_img_size(x, gs) for x in imgsz] # verify img_size are gs-multiples + im = torch.zeros(batch_size, 3, *imgsz).to(device) # image size(1,3,320,192) BCHW iDetection + + # Update model + if half: + im, model = im.half(), model.half() # to FP16 + model.train() if train else model.eval() # training mode = no Detect() layer grid construction + for k, m in model.named_modules(): + if isinstance(m, Conv): # assign export-friendly activations + if isinstance(m.act, nn.SiLU): + m.act = SiLU() + elif isinstance(m, Detect): + m.inplace = inplace + m.onnx_dynamic = dynamic + # m.forward = m.forward_export # assign forward (optional) + + for _ in range(2): + y = model(im) # dry runs + LOGGER.info(f"\n{colorstr('PyTorch:')} starting from {file} ({file_size(file):.1f} MB)") + + # Exports + if 'torchscript' in include: + export_torchscript(model, im, file, optimize) + if 'onnx' in include: + export_onnx(model, im, file, opset, train, dynamic, simplify) + if 'coreml' in include: + export_coreml(model, im, file) + + # TensorFlow Exports + if any(tf_exports): + pb, tflite, tfjs = tf_exports[1:] + assert not (tflite and tfjs), 'TFLite and TF.js models must be exported separately, please pass only one type.' + model = export_saved_model(model, im, file, dynamic, tf_nms=tfjs, agnostic_nms=tfjs, + topk_per_class=topk_per_class, topk_all=topk_all, conf_thres=conf_thres, + iou_thres=iou_thres) # keras model + if pb or tfjs: # pb prerequisite to tfjs + export_pb(model, im, file) + if tflite: + export_tflite(model, im, file, int8=int8, data=data, ncalib=100) + if tfjs: + export_tfjs(model, im, file) + + # Finish + LOGGER.info(f'\nExport complete ({time.time() - t:.2f}s)' + f"\nResults saved to {colorstr('bold', file.parent.resolve())}" + f'\nVisualize with https://netron.app') + + +def parse_opt(): + parser = argparse.ArgumentParser() + parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='dataset.yaml path') + parser.add_argument('--weights', type=str, default=ROOT / 'yolov3.pt', help='weights path') + parser.add_argument('--imgsz', '--img', '--img-size', nargs='+', type=int, default=[640, 640], help='image (h, w)') + parser.add_argument('--batch-size', type=int, default=1, help='batch size') + parser.add_argument('--device', default='cpu', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') + parser.add_argument('--half', action='store_true', help='FP16 half-precision export') + parser.add_argument('--inplace', action='store_true', help='set YOLOv3 Detect() inplace=True') + parser.add_argument('--train', action='store_true', help='model.train() mode') + parser.add_argument('--optimize', action='store_true', help='TorchScript: optimize for mobile') + parser.add_argument('--int8', action='store_true', help='CoreML/TF INT8 quantization') + parser.add_argument('--dynamic', action='store_true', help='ONNX/TF: dynamic axes') + parser.add_argument('--simplify', action='store_true', help='ONNX: simplify model') + parser.add_argument('--opset', type=int, default=13, help='ONNX: opset version') + parser.add_argument('--topk-per-class', type=int, default=100, help='TF.js NMS: topk per class to keep') + parser.add_argument('--topk-all', type=int, default=100, help='TF.js NMS: topk for all classes to keep') + parser.add_argument('--iou-thres', type=float, default=0.45, help='TF.js NMS: IoU threshold') + parser.add_argument('--conf-thres', type=float, default=0.25, help='TF.js NMS: confidence threshold') + parser.add_argument('--include', nargs='+', + default=['torchscript', 'onnx'], + help='available formats are (torchscript, onnx, coreml, saved_model, pb, tflite, tfjs)') + opt = parser.parse_args() + print_args(FILE.stem, opt) + return opt + + +def main(opt): + run(**vars(opt)) + + +if __name__ == "__main__": + opt = parse_opt() + main(opt) diff --git a/hubconf.py b/hubconf.py index 683e22f7..d610aa36 100644 --- a/hubconf.py +++ b/hubconf.py @@ -1,56 +1,61 @@ -"""YOLOv3 PyTorch Hub models https://pytorch.org/hub/ultralytics_yolov3/ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +PyTorch Hub models https://pytorch.org/hub/ultralytics_yolov5/ Usage: import torch - model = torch.hub.load('ultralytics/yolov3', 'yolov3_tiny') + model = torch.hub.load('ultralytics/yolov3', 'yolov3') """ import torch def _create(name, pretrained=True, channels=3, classes=80, autoshape=True, verbose=True, device=None): - """Creates a specified YOLOv3 model + """Creates a specified model Arguments: name (str): name of model, i.e. 'yolov3' pretrained (bool): load pretrained weights into the model channels (int): number of input channels classes (int): number of model classes - autoshape (bool): apply YOLOv3 .autoshape() wrapper to model + autoshape (bool): apply .autoshape() wrapper to model verbose (bool): print all information to screen device (str, torch.device, None): device to use for model parameters Returns: - YOLOv3 pytorch model + pytorch model """ from pathlib import Path - from models.yolo import Model, attempt_load - from utils.general import check_requirements, set_logging - from utils.google_utils import attempt_download + from models.experimental import attempt_load + from models.yolo import Model + from utils.downloads import attempt_download + from utils.general import check_requirements, intersect_dicts, set_logging from utils.torch_utils import select_device - check_requirements(Path(__file__).parent / 'requirements.txt', exclude=('tensorboard', 'pycocotools', 'thop')) + file = Path(__file__).resolve() + check_requirements(exclude=('tensorboard', 'thop', 'opencv-python')) set_logging(verbose=verbose) - fname = Path(name).with_suffix('.pt') # checkpoint filename + save_dir = Path('') if str(name).endswith('.pt') else file.parent + path = (save_dir / name).with_suffix('.pt') # checkpoint path try: + device = select_device(('0' if torch.cuda.is_available() else 'cpu') if device is None else device) + if pretrained and channels == 3 and classes == 80: - model = attempt_load(fname, map_location=torch.device('cpu')) # download/load FP32 model + model = attempt_load(path, map_location=device) # download/load FP32 model else: cfg = list((Path(__file__).parent / 'models').rglob(f'{name}.yaml'))[0] # model.yaml path model = Model(cfg, channels, classes) # create model if pretrained: - ckpt = torch.load(attempt_download(fname), map_location=torch.device('cpu')) # load - msd = model.state_dict() # model state_dict + ckpt = torch.load(attempt_download(path), map_location=device) # load csd = ckpt['model'].float().state_dict() # checkpoint state_dict as FP32 - csd = {k: v for k, v in csd.items() if msd[k].shape == v.shape} # filter + csd = intersect_dicts(csd, model.state_dict(), exclude=['anchors']) # intersect model.load_state_dict(csd, strict=False) # load if len(ckpt['model'].names) == classes: model.names = ckpt['model'].names # set class names attribute if autoshape: model = model.autoshape() # for file/URI/PIL/cv2/np inputs and NMS - device = select_device('0' if torch.cuda.is_available() else 'cpu') if device is None else torch.device(device) return model.to(device) except Exception as e: @@ -60,7 +65,7 @@ def _create(name, pretrained=True, channels=3, classes=80, autoshape=True, verbo def custom(path='path/to/model.pt', autoshape=True, verbose=True, device=None): - # YOLOv3 custom or local model + # custom or local model return _create(path, autoshape=autoshape, verbose=verbose, device=device) @@ -68,26 +73,31 @@ def yolov3(pretrained=True, channels=3, classes=80, autoshape=True, verbose=True # YOLOv3 model https://github.com/ultralytics/yolov3 return _create('yolov3', pretrained, channels, classes, autoshape, verbose, device) + def yolov3_spp(pretrained=True, channels=3, classes=80, autoshape=True, verbose=True, device=None): # YOLOv3-SPP model https://github.com/ultralytics/yolov3 return _create('yolov3-spp', pretrained, channels, classes, autoshape, verbose, device) + def yolov3_tiny(pretrained=True, channels=3, classes=80, autoshape=True, verbose=True, device=None): # YOLOv3-tiny model https://github.com/ultralytics/yolov3 return _create('yolov3-tiny', pretrained, channels, classes, autoshape, verbose, device) if __name__ == '__main__': - model = _create(name='yolov3', pretrained=True, channels=3, classes=80, autoshape=True, verbose=True) # pretrained + model = _create(name='yolov3-tiny', pretrained=True, channels=3, classes=80, autoshape=True, verbose=True) # pretrained # model = custom(path='path/to/model.pt') # custom # Verify inference + from pathlib import Path + import cv2 import numpy as np from PIL import Image imgs = ['data/images/zidane.jpg', # filename - 'https://github.com/ultralytics/yolov5/releases/download/v1.0/zidane.jpg', # URI + Path('data/images/zidane.jpg'), # Path + 'https://ultralytics.com/images/zidane.jpg', # URI cv2.imread('data/images/bus.jpg')[:, :, ::-1], # OpenCV Image.open('data/images/bus.jpg'), # PIL np.zeros((320, 640, 3))] # numpy diff --git a/models/common.py b/models/common.py index 0b4e6004..82b348ae 100644 --- a/models/common.py +++ b/models/common.py @@ -1,9 +1,16 @@ -# YOLOv3 common modules +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Common modules +""" +import json import math +import platform +import warnings from copy import copy from pathlib import Path +import cv2 import numpy as np import pandas as pd import requests @@ -12,10 +19,11 @@ import torch.nn as nn from PIL import Image from torch.cuda import amp -from utils.datasets import letterbox -from utils.general import non_max_suppression, make_divisible, scale_coords, increment_path, xyxy2xywh, save_one_box -from utils.plots import colors, plot_one_box -from utils.torch_utils import time_synchronized +from utils.datasets import exif_transpose, letterbox +from utils.general import (LOGGER, check_requirements, check_suffix, colorstr, increment_path, make_divisible, + non_max_suppression, scale_coords, xywh2xyxy, xyxy2xywh) +from utils.plots import Annotator, colors, save_one_box +from utils.torch_utils import time_sync def autopad(k, p=None): # kernel, padding @@ -25,26 +33,27 @@ def autopad(k, p=None): # kernel, padding return p -def DWConv(c1, c2, k=1, s=1, act=True): - # Depthwise convolution - return Conv(c1, c2, k, s, g=math.gcd(c1, c2), act=act) - - class Conv(nn.Module): # Standard convolution def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True): # ch_in, ch_out, kernel, stride, padding, groups - super(Conv, self).__init__() + super().__init__() self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p), groups=g, bias=False) self.bn = nn.BatchNorm2d(c2) - self.act = nn.LeakyReLU(0.1) if act is True else (act if isinstance(act, nn.Module) else nn.Identity()) + self.act = nn.SiLU() if act is True else (act if isinstance(act, nn.Module) else nn.Identity()) def forward(self, x): return self.act(self.bn(self.conv(x))) - def fuseforward(self, x): + def forward_fuse(self, x): return self.act(self.conv(x)) +class DWConv(Conv): + # Depth-wise convolution class + def __init__(self, c1, c2, k=1, s=1, act=True): # ch_in, ch_out, kernel, stride, padding, groups + super().__init__(c1, c2, k, s, g=math.gcd(c1, c2), act=act) + + class TransformerLayer(nn.Module): # Transformer layer https://arxiv.org/abs/2010.11929 (LayerNorm layers removed for better performance) def __init__(self, c, num_heads): @@ -70,31 +79,21 @@ class TransformerBlock(nn.Module): if c1 != c2: self.conv = Conv(c1, c2) self.linear = nn.Linear(c2, c2) # learnable position embedding - self.tr = nn.Sequential(*[TransformerLayer(c2, num_heads) for _ in range(num_layers)]) + self.tr = nn.Sequential(*(TransformerLayer(c2, num_heads) for _ in range(num_layers))) self.c2 = c2 def forward(self, x): if self.conv is not None: x = self.conv(x) b, _, w, h = x.shape - p = x.flatten(2) - p = p.unsqueeze(0) - p = p.transpose(0, 3) - p = p.squeeze(3) - e = self.linear(p) - x = p + e - - x = self.tr(x) - x = x.unsqueeze(3) - x = x.transpose(0, 3) - x = x.reshape(b, self.c2, w, h) - return x + p = x.flatten(2).unsqueeze(0).transpose(0, 3).squeeze(3) + return self.tr(p + self.linear(p)).unsqueeze(3).transpose(0, 3).reshape(b, self.c2, w, h) class Bottleneck(nn.Module): # Standard bottleneck def __init__(self, c1, c2, shortcut=True, g=1, e=0.5): # ch_in, ch_out, shortcut, groups, expansion - super(Bottleneck, self).__init__() + super().__init__() c_ = int(c2 * e) # hidden channels self.cv1 = Conv(c1, c_, 1, 1) self.cv2 = Conv(c_, c2, 3, 1, g=g) @@ -107,15 +106,15 @@ class Bottleneck(nn.Module): class BottleneckCSP(nn.Module): # CSP Bottleneck https://github.com/WongKinYiu/CrossStagePartialNetworks def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ch_out, number, shortcut, groups, expansion - super(BottleneckCSP, self).__init__() + super().__init__() c_ = int(c2 * e) # hidden channels self.cv1 = Conv(c1, c_, 1, 1) self.cv2 = nn.Conv2d(c1, c_, 1, 1, bias=False) self.cv3 = nn.Conv2d(c_, c_, 1, 1, bias=False) self.cv4 = Conv(2 * c_, c2, 1, 1) self.bn = nn.BatchNorm2d(2 * c_) # applied to cat(cv2, cv3) - self.act = nn.LeakyReLU(0.1, inplace=True) - self.m = nn.Sequential(*[Bottleneck(c_, c_, shortcut, g, e=1.0) for _ in range(n)]) + self.act = nn.SiLU() + self.m = nn.Sequential(*(Bottleneck(c_, c_, shortcut, g, e=1.0) for _ in range(n))) def forward(self, x): y1 = self.cv3(self.m(self.cv1(x))) @@ -126,12 +125,12 @@ class BottleneckCSP(nn.Module): class C3(nn.Module): # CSP Bottleneck with 3 convolutions def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ch_out, number, shortcut, groups, expansion - super(C3, self).__init__() + super().__init__() c_ = int(c2 * e) # hidden channels self.cv1 = Conv(c1, c_, 1, 1) self.cv2 = Conv(c1, c_, 1, 1) self.cv3 = Conv(2 * c_, c2, 1) # act=FReLU(c2) - self.m = nn.Sequential(*[Bottleneck(c_, c_, shortcut, g, e=1.0) for _ in range(n)]) + self.m = nn.Sequential(*(Bottleneck(c_, c_, shortcut, g, e=1.0) for _ in range(n))) # self.m = nn.Sequential(*[CrossConv(c_, c_, 3, 1, g, 1.0, shortcut) for _ in range(n)]) def forward(self, x): @@ -146,10 +145,26 @@ class C3TR(C3): self.m = TransformerBlock(c_, c_, 4, n) +class C3SPP(C3): + # C3 module with SPP() + def __init__(self, c1, c2, k=(5, 9, 13), n=1, shortcut=True, g=1, e=0.5): + super().__init__(c1, c2, n, shortcut, g, e) + c_ = int(c2 * e) + self.m = SPP(c_, c_, k) + + +class C3Ghost(C3): + # C3 module with GhostBottleneck() + def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): + super().__init__(c1, c2, n, shortcut, g, e) + c_ = int(c2 * e) # hidden channels + self.m = nn.Sequential(*(GhostBottleneck(c_, c_) for _ in range(n))) + + class SPP(nn.Module): - # Spatial pyramid pooling layer used in YOLOv3-SPP + # Spatial Pyramid Pooling (SPP) layer https://arxiv.org/abs/1406.4729 def __init__(self, c1, c2, k=(5, 9, 13)): - super(SPP, self).__init__() + super().__init__() c_ = c1 // 2 # hidden channels self.cv1 = Conv(c1, c_, 1, 1) self.cv2 = Conv(c_ * (len(k) + 1), c2, 1, 1) @@ -157,13 +172,33 @@ class SPP(nn.Module): def forward(self, x): x = self.cv1(x) - return self.cv2(torch.cat([x] + [m(x) for m in self.m], 1)) + with warnings.catch_warnings(): + warnings.simplefilter('ignore') # suppress torch 1.9.0 max_pool2d() warning + return self.cv2(torch.cat([x] + [m(x) for m in self.m], 1)) + + +class SPPF(nn.Module): + # Spatial Pyramid Pooling - Fast (SPPF) layer for by Glenn Jocher + def __init__(self, c1, c2, k=5): # equivalent to SPP(k=(5, 9, 13)) + super().__init__() + c_ = c1 // 2 # hidden channels + self.cv1 = Conv(c1, c_, 1, 1) + self.cv2 = Conv(c_ * 4, c2, 1, 1) + self.m = nn.MaxPool2d(kernel_size=k, stride=1, padding=k // 2) + + def forward(self, x): + x = self.cv1(x) + with warnings.catch_warnings(): + warnings.simplefilter('ignore') # suppress torch 1.9.0 max_pool2d() warning + y1 = self.m(x) + y2 = self.m(y1) + return self.cv2(torch.cat([x, y1, y2, self.m(y2)], 1)) class Focus(nn.Module): # Focus wh information into c-space def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True): # ch_in, ch_out, kernel, stride, padding, groups - super(Focus, self).__init__() + super().__init__() self.conv = Conv(c1 * 4, c2, k, s, p, g, act) # self.contract = Contract(gain=2) @@ -172,6 +207,34 @@ class Focus(nn.Module): # return self.conv(self.contract(x)) +class GhostConv(nn.Module): + # Ghost Convolution https://github.com/huawei-noah/ghostnet + def __init__(self, c1, c2, k=1, s=1, g=1, act=True): # ch_in, ch_out, kernel, stride, groups + super().__init__() + c_ = c2 // 2 # hidden channels + self.cv1 = Conv(c1, c_, k, s, None, g, act) + self.cv2 = Conv(c_, c_, 5, 1, None, c_, act) + + def forward(self, x): + y = self.cv1(x) + return torch.cat([y, self.cv2(y)], 1) + + +class GhostBottleneck(nn.Module): + # Ghost Bottleneck https://github.com/huawei-noah/ghostnet + def __init__(self, c1, c2, k=3, s=1): # ch_in, ch_out, kernel, stride + super().__init__() + c_ = c2 // 2 + self.conv = nn.Sequential(GhostConv(c1, c_, 1, 1), # pw + DWConv(c_, c_, k, s, act=False) if s == 2 else nn.Identity(), # dw + GhostConv(c_, c2, 1, 1, act=False)) # pw-linear + self.shortcut = nn.Sequential(DWConv(c1, c1, k, s, act=False), + Conv(c1, c2, 1, 1, act=False)) if s == 2 else nn.Identity() + + def forward(self, x): + return self.conv(x) + self.shortcut(x) + + class Contract(nn.Module): # Contract width-height into channels, i.e. x(1,64,80,80) to x(1,256,40,40) def __init__(self, gain=2): @@ -179,11 +242,11 @@ class Contract(nn.Module): self.gain = gain def forward(self, x): - N, C, H, W = x.size() # assert (H / s == 0) and (W / s == 0), 'Indivisible gain' + b, c, h, w = x.size() # assert (h / s == 0) and (W / s == 0), 'Indivisible gain' s = self.gain - x = x.view(N, C, H // s, s, W // s, s) # x(1,64,40,2,40,2) + x = x.view(b, c, h // s, s, w // s, s) # x(1,64,40,2,40,2) x = x.permute(0, 3, 5, 1, 2, 4).contiguous() # x(1,2,2,64,40,40) - return x.view(N, C * s * s, H // s, W // s) # x(1,256,40,40) + return x.view(b, c * s * s, h // s, w // s) # x(1,256,40,40) class Expand(nn.Module): @@ -193,64 +256,183 @@ class Expand(nn.Module): self.gain = gain def forward(self, x): - N, C, H, W = x.size() # assert C / s ** 2 == 0, 'Indivisible gain' + b, c, h, w = x.size() # assert C / s ** 2 == 0, 'Indivisible gain' s = self.gain - x = x.view(N, s, s, C // s ** 2, H, W) # x(1,2,2,16,80,80) + x = x.view(b, s, s, c // s ** 2, h, w) # x(1,2,2,16,80,80) x = x.permute(0, 3, 4, 1, 5, 2).contiguous() # x(1,16,80,2,80,2) - return x.view(N, C // s ** 2, H * s, W * s) # x(1,16,160,160) + return x.view(b, c // s ** 2, h * s, w * s) # x(1,16,160,160) class Concat(nn.Module): # Concatenate a list of tensors along dimension def __init__(self, dimension=1): - super(Concat, self).__init__() + super().__init__() self.d = dimension def forward(self, x): return torch.cat(x, self.d) -class NMS(nn.Module): - # Non-Maximum Suppression (NMS) module - conf = 0.25 # confidence threshold - iou = 0.45 # IoU threshold - classes = None # (optional list) filter by class - max_det = 1000 # maximum number of detections per image +class DetectMultiBackend(nn.Module): + # MultiBackend class for python inference on various backends + def __init__(self, weights='yolov3.pt', device=None, dnn=True): + # Usage: + # PyTorch: weights = *.pt + # TorchScript: *.torchscript.pt + # CoreML: *.mlmodel + # TensorFlow: *_saved_model + # TensorFlow: *.pb + # TensorFlow Lite: *.tflite + # ONNX Runtime: *.onnx + # OpenCV DNN: *.onnx with dnn=True + super().__init__() + w = str(weights[0] if isinstance(weights, list) else weights) + suffix, suffixes = Path(w).suffix.lower(), ['.pt', '.onnx', '.tflite', '.pb', '', '.mlmodel'] + check_suffix(w, suffixes) # check weights have acceptable suffix + pt, onnx, tflite, pb, saved_model, coreml = (suffix == x for x in suffixes) # backend booleans + jit = pt and 'torchscript' in w.lower() + stride, names = 64, [f'class{i}' for i in range(1000)] # assign defaults - def __init__(self): - super(NMS, self).__init__() + if jit: # TorchScript + LOGGER.info(f'Loading {w} for TorchScript inference...') + extra_files = {'config.txt': ''} # model metadata + model = torch.jit.load(w, _extra_files=extra_files) + if extra_files['config.txt']: + d = json.loads(extra_files['config.txt']) # extra_files dict + stride, names = int(d['stride']), d['names'] + elif pt: # PyTorch + from models.experimental import attempt_load # scoped to avoid circular import + model = torch.jit.load(w) if 'torchscript' in w else attempt_load(weights, map_location=device) + stride = int(model.stride.max()) # model stride + names = model.module.names if hasattr(model, 'module') else model.names # get class names + elif coreml: # CoreML *.mlmodel + import coremltools as ct + model = ct.models.MLModel(w) + elif dnn: # ONNX OpenCV DNN + LOGGER.info(f'Loading {w} for ONNX OpenCV DNN inference...') + check_requirements(('opencv-python>=4.5.4',)) + net = cv2.dnn.readNetFromONNX(w) + elif onnx: # ONNX Runtime + LOGGER.info(f'Loading {w} for ONNX Runtime inference...') + check_requirements(('onnx', 'onnxruntime-gpu' if torch.has_cuda else 'onnxruntime')) + import onnxruntime + session = onnxruntime.InferenceSession(w, None) + else: # TensorFlow model (TFLite, pb, saved_model) + import tensorflow as tf + if pb: # https://www.tensorflow.org/guide/migrate#a_graphpb_or_graphpbtxt + def wrap_frozen_graph(gd, inputs, outputs): + x = tf.compat.v1.wrap_function(lambda: tf.compat.v1.import_graph_def(gd, name=""), []) # wrapped + return x.prune(tf.nest.map_structure(x.graph.as_graph_element, inputs), + tf.nest.map_structure(x.graph.as_graph_element, outputs)) - def forward(self, x): - return non_max_suppression(x[0], self.conf, iou_thres=self.iou, classes=self.classes, max_det=self.max_det) + LOGGER.info(f'Loading {w} for TensorFlow *.pb inference...') + graph_def = tf.Graph().as_graph_def() + graph_def.ParseFromString(open(w, 'rb').read()) + frozen_func = wrap_frozen_graph(gd=graph_def, inputs="x:0", outputs="Identity:0") + elif saved_model: + LOGGER.info(f'Loading {w} for TensorFlow saved_model inference...') + model = tf.keras.models.load_model(w) + elif tflite: # https://www.tensorflow.org/lite/guide/python#install_tensorflow_lite_for_python + if 'edgetpu' in w.lower(): + LOGGER.info(f'Loading {w} for TensorFlow Edge TPU inference...') + import tflite_runtime.interpreter as tfli + delegate = {'Linux': 'libedgetpu.so.1', # install https://coral.ai/software/#edgetpu-runtime + 'Darwin': 'libedgetpu.1.dylib', + 'Windows': 'edgetpu.dll'}[platform.system()] + interpreter = tfli.Interpreter(model_path=w, experimental_delegates=[tfli.load_delegate(delegate)]) + else: + LOGGER.info(f'Loading {w} for TensorFlow Lite inference...') + interpreter = tf.lite.Interpreter(model_path=w) # load TFLite model + interpreter.allocate_tensors() # allocate + input_details = interpreter.get_input_details() # inputs + output_details = interpreter.get_output_details() # outputs + self.__dict__.update(locals()) # assign all variables to self + + def forward(self, im, augment=False, visualize=False, val=False): + # MultiBackend inference + b, ch, h, w = im.shape # batch, channel, height, width + if self.pt: # PyTorch + y = self.model(im) if self.jit else self.model(im, augment=augment, visualize=visualize) + return y if val else y[0] + elif self.coreml: # CoreML *.mlmodel + im = im.permute(0, 2, 3, 1).cpu().numpy() # torch BCHW to numpy BHWC shape(1,320,192,3) + im = Image.fromarray((im[0] * 255).astype('uint8')) + # im = im.resize((192, 320), Image.ANTIALIAS) + y = self.model.predict({'image': im}) # coordinates are xywh normalized + box = xywh2xyxy(y['coordinates'] * [[w, h, w, h]]) # xyxy pixels + conf, cls = y['confidence'].max(1), y['confidence'].argmax(1).astype(np.float) + y = np.concatenate((box, conf.reshape(-1, 1), cls.reshape(-1, 1)), 1) + elif self.onnx: # ONNX + im = im.cpu().numpy() # torch to numpy + if self.dnn: # ONNX OpenCV DNN + self.net.setInput(im) + y = self.net.forward() + else: # ONNX Runtime + y = self.session.run([self.session.get_outputs()[0].name], {self.session.get_inputs()[0].name: im})[0] + else: # TensorFlow model (TFLite, pb, saved_model) + im = im.permute(0, 2, 3, 1).cpu().numpy() # torch BCHW to numpy BHWC shape(1,320,192,3) + if self.pb: + y = self.frozen_func(x=self.tf.constant(im)).numpy() + elif self.saved_model: + y = self.model(im, training=False).numpy() + elif self.tflite: + input, output = self.input_details[0], self.output_details[0] + int8 = input['dtype'] == np.uint8 # is TFLite quantized uint8 model + if int8: + scale, zero_point = input['quantization'] + im = (im / scale + zero_point).astype(np.uint8) # de-scale + self.interpreter.set_tensor(input['index'], im) + self.interpreter.invoke() + y = self.interpreter.get_tensor(output['index']) + if int8: + scale, zero_point = output['quantization'] + y = (y.astype(np.float32) - zero_point) * scale # re-scale + y[..., 0] *= w # x + y[..., 1] *= h # y + y[..., 2] *= w # w + y[..., 3] *= h # h + y = torch.tensor(y) + return (y, []) if val else y class AutoShape(nn.Module): - # input-robust model wrapper for passing cv2/np/PIL/torch inputs. Includes preprocessing, inference and NMS + # input-robust model wrapper for passing cv2/np/PIL/torch inputs. Includes preprocessing, inference and NMS conf = 0.25 # NMS confidence threshold iou = 0.45 # NMS IoU threshold - classes = None # (optional list) filter by class + classes = None # (optional list) filter by class, i.e. = [0, 15, 16] for COCO persons, cats and dogs + multi_label = False # NMS multiple labels per box max_det = 1000 # maximum number of detections per image def __init__(self, model): - super(AutoShape, self).__init__() + super().__init__() self.model = model.eval() def autoshape(self): - print('AutoShape already enabled, skipping... ') # model already converted to model.autoshape() + LOGGER.info('AutoShape already enabled, skipping... ') # model already converted to model.autoshape() + return self + + def _apply(self, fn): + # Apply to(), cpu(), cuda(), half() to model tensors that are not parameters or registered buffers + self = super()._apply(fn) + m = self.model.model[-1] # Detect() + m.stride = fn(m.stride) + m.grid = list(map(fn, m.grid)) + if isinstance(m.anchor_grid, list): + m.anchor_grid = list(map(fn, m.anchor_grid)) return self @torch.no_grad() def forward(self, imgs, size=640, augment=False, profile=False): # Inference from various sources. For height=640, width=1280, RGB images example inputs are: - # filename: imgs = 'data/images/zidane.jpg' - # URI: = 'https://github.com/ultralytics/yolov5/releases/download/v1.0/zidane.jpg' + # file: imgs = 'data/images/zidane.jpg' # str or PosixPath + # URI: = 'https://ultralytics.com/images/zidane.jpg' # OpenCV: = cv2.imread('image.jpg')[:,:,::-1] # HWC BGR to RGB x(640,1280,3) - # PIL: = Image.open('image.jpg') # HWC x(640,1280,3) + # PIL: = Image.open('image.jpg') or ImageGrab.grab() # HWC x(640,1280,3) # numpy: = np.zeros((640,1280,3)) # HWC # torch: = torch.zeros(16,3,320,640) # BCHW (scaled to size=640, 0-1 values) # multiple: = [Image.open('image1.jpg'), Image.open('image2.jpg'), ...] # list of images - t = [time_synchronized()] + t = [time_sync()] p = next(self.model.parameters()) # for device and type if isinstance(imgs, torch.Tensor): # torch with amp.autocast(enabled=p.device.type != 'cpu'): @@ -261,14 +443,15 @@ class AutoShape(nn.Module): shape0, shape1, files = [], [], [] # image and inference shapes, filenames for i, im in enumerate(imgs): f = f'image{i}' # filename - if isinstance(im, str): # filename or uri - im, f = np.asarray(Image.open(requests.get(im, stream=True).raw if im.startswith('http') else im)), im + if isinstance(im, (str, Path)): # filename or uri + im, f = Image.open(requests.get(im, stream=True).raw if str(im).startswith('http') else im), im + im = np.asarray(exif_transpose(im)) elif isinstance(im, Image.Image): # PIL Image - im, f = np.asarray(im), getattr(im, 'filename', f) or f + im, f = np.asarray(exif_transpose(im)), getattr(im, 'filename', f) or f files.append(Path(f).with_suffix('.jpg').name) if im.shape[0] < 5: # image in CHW im = im.transpose((1, 2, 0)) # reverse dataloader .transpose(2, 0, 1) - im = im[:, :, :3] if im.ndim == 3 else np.tile(im[:, :, None], 3) # enforce 3ch input + im = im[..., :3] if im.ndim == 3 else np.tile(im[..., None], 3) # enforce 3ch input s = im.shape[:2] # HWC shape0.append(s) # image shape g = (size / max(s)) # gain @@ -278,29 +461,30 @@ class AutoShape(nn.Module): x = [letterbox(im, new_shape=shape1, auto=False)[0] for im in imgs] # pad x = np.stack(x, 0) if n > 1 else x[0][None] # stack x = np.ascontiguousarray(x.transpose((0, 3, 1, 2))) # BHWC to BCHW - x = torch.from_numpy(x).to(p.device).type_as(p) / 255. # uint8 to fp16/32 - t.append(time_synchronized()) + x = torch.from_numpy(x).to(p.device).type_as(p) / 255 # uint8 to fp16/32 + t.append(time_sync()) with amp.autocast(enabled=p.device.type != 'cpu'): # Inference y = self.model(x, augment, profile)[0] # forward - t.append(time_synchronized()) + t.append(time_sync()) # Post-process - y = non_max_suppression(y, self.conf, iou_thres=self.iou, classes=self.classes, max_det=self.max_det) # NMS + y = non_max_suppression(y, self.conf, iou_thres=self.iou, classes=self.classes, + multi_label=self.multi_label, max_det=self.max_det) # NMS for i in range(n): scale_coords(shape1, y[i][:, :4], shape0[i]) - t.append(time_synchronized()) + t.append(time_sync()) return Detections(imgs, y, files, t, self.names, x.shape) class Detections: - # detections class for YOLOv3 inference results + # detections class for inference results def __init__(self, imgs, pred, files, times=None, names=None, shape=None): - super(Detections, self).__init__() + super().__init__() d = pred[0].device # device - gn = [torch.tensor([*[im.shape[i] for i in [1, 0, 1, 0]], 1., 1.], device=d) for im in imgs] # normalizations + gn = [torch.tensor([*(im.shape[i] for i in [1, 0, 1, 0]), 1, 1], device=d) for im in imgs] # normalizations self.imgs = imgs # list of images as numpy arrays self.pred = pred # list of tensors pred[0] = (xyxy, conf, cls) self.names = names # class names @@ -314,47 +498,59 @@ class Detections: self.s = shape # inference BCHW shape def display(self, pprint=False, show=False, save=False, crop=False, render=False, save_dir=Path('')): + crops = [] for i, (im, pred) in enumerate(zip(self.imgs, self.pred)): - str = f'image {i + 1}/{len(self.pred)}: {im.shape[0]}x{im.shape[1]} ' - if pred is not None: + s = f'image {i + 1}/{len(self.pred)}: {im.shape[0]}x{im.shape[1]} ' # string + if pred.shape[0]: for c in pred[:, -1].unique(): n = (pred[:, -1] == c).sum() # detections per class - str += f"{n} {self.names[int(c)]}{'s' * (n > 1)}, " # add to string + s += f"{n} {self.names[int(c)]}{'s' * (n > 1)}, " # add to string if show or save or render or crop: - for *box, conf, cls in pred: # xyxy, confidence, class + annotator = Annotator(im, example=str(self.names)) + for *box, conf, cls in reversed(pred): # xyxy, confidence, class label = f'{self.names[int(cls)]} {conf:.2f}' if crop: - save_one_box(box, im, file=save_dir / 'crops' / self.names[int(cls)] / self.files[i]) + file = save_dir / 'crops' / self.names[int(cls)] / self.files[i] if save else None + crops.append({'box': box, 'conf': conf, 'cls': cls, 'label': label, + 'im': save_one_box(box, im, file=file, save=save)}) else: # all others - plot_one_box(box, im, label=label, color=colors(cls)) + annotator.box_label(box, label, color=colors(cls)) + im = annotator.im + else: + s += '(no detections)' im = Image.fromarray(im.astype(np.uint8)) if isinstance(im, np.ndarray) else im # from np if pprint: - print(str.rstrip(', ')) + LOGGER.info(s.rstrip(', ')) if show: im.show(self.files[i]) # show if save: f = self.files[i] im.save(save_dir / f) # save - print(f"{'Saved' * (i == 0)} {f}", end=',' if i < self.n - 1 else f' to {save_dir}\n') + if i == self.n - 1: + LOGGER.info(f"Saved {self.n} image{'s' * (self.n > 1)} to {colorstr('bold', save_dir)}") if render: self.imgs[i] = np.asarray(im) + if crop: + if save: + LOGGER.info(f'Saved results to {save_dir}\n') + return crops def print(self): self.display(pprint=True) # print results - print(f'Speed: %.1fms pre-process, %.1fms inference, %.1fms NMS per image at shape {tuple(self.s)}' % self.t) + LOGGER.info(f'Speed: %.1fms pre-process, %.1fms inference, %.1fms NMS per image at shape {tuple(self.s)}' % + self.t) def show(self): self.display(show=True) # show results - def save(self, save_dir='runs/hub/exp'): - save_dir = increment_path(save_dir, exist_ok=save_dir != 'runs/hub/exp', mkdir=True) # increment save_dir + def save(self, save_dir='runs/detect/exp'): + save_dir = increment_path(save_dir, exist_ok=save_dir != 'runs/detect/exp', mkdir=True) # increment save_dir self.display(save=True, save_dir=save_dir) # save results - def crop(self, save_dir='runs/hub/exp'): - save_dir = increment_path(save_dir, exist_ok=save_dir != 'runs/hub/exp', mkdir=True) # increment save_dir - self.display(crop=True, save_dir=save_dir) # crop results - print(f'Saved results to {save_dir}\n') + def crop(self, save=True, save_dir='runs/detect/exp'): + save_dir = increment_path(save_dir, exist_ok=save_dir != 'runs/detect/exp', mkdir=True) if save else None + return self.display(crop=True, save=save, save_dir=save_dir) # crop results def render(self): self.display(render=True) # render results @@ -385,7 +581,7 @@ class Detections: class Classify(nn.Module): # Classification head, i.e. x(b,c1,20,20) to x(b,c2) def __init__(self, c1, c2, k=1, s=1, p=None, g=1): # ch_in, ch_out, kernel, stride, padding, groups - super(Classify, self).__init__() + super().__init__() self.aap = nn.AdaptiveAvgPool2d(1) # to x(b,c1,1,1) self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p), groups=g) # to x(b,c2,1,1) self.flat = nn.Flatten() diff --git a/models/experimental.py b/models/experimental.py index 867c8db5..81fc9bb2 100644 --- a/models/experimental.py +++ b/models/experimental.py @@ -1,18 +1,22 @@ -# YOLOv3 experimental modules +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Experimental modules +""" +import math import numpy as np import torch import torch.nn as nn -from models.common import Conv, DWConv -from utils.google_utils import attempt_download +from models.common import Conv +from utils.downloads import attempt_download class CrossConv(nn.Module): # Cross Convolution Downsample def __init__(self, c1, c2, k=3, s=1, g=1, e=1.0, shortcut=False): # ch_in, ch_out, kernel, stride, groups, expansion, shortcut - super(CrossConv, self).__init__() + super().__init__() c_ = int(c2 * e) # hidden channels self.cv1 = Conv(c1, c_, (1, k), (1, s)) self.cv2 = Conv(c_, c2, (k, 1), (s, 1), g=g) @@ -25,11 +29,11 @@ class CrossConv(nn.Module): class Sum(nn.Module): # Weighted sum of 2 or more layers https://arxiv.org/abs/1911.09070 def __init__(self, n, weight=False): # n: number of inputs - super(Sum, self).__init__() + super().__init__() self.weight = weight # apply weights boolean self.iter = range(n - 1) # iter object if weight: - self.w = nn.Parameter(-torch.arange(1., n) / 2, requires_grad=True) # layer weights + self.w = nn.Parameter(-torch.arange(1.0, n) / 2, requires_grad=True) # layer weights def forward(self, x): y = x[0] # no weight @@ -43,86 +47,66 @@ class Sum(nn.Module): return y -class GhostConv(nn.Module): - # Ghost Convolution https://github.com/huawei-noah/ghostnet - def __init__(self, c1, c2, k=1, s=1, g=1, act=True): # ch_in, ch_out, kernel, stride, groups - super(GhostConv, self).__init__() - c_ = c2 // 2 # hidden channels - self.cv1 = Conv(c1, c_, k, s, None, g, act) - self.cv2 = Conv(c_, c_, 5, 1, None, c_, act) - - def forward(self, x): - y = self.cv1(x) - return torch.cat([y, self.cv2(y)], 1) - - -class GhostBottleneck(nn.Module): - # Ghost Bottleneck https://github.com/huawei-noah/ghostnet - def __init__(self, c1, c2, k=3, s=1): # ch_in, ch_out, kernel, stride - super(GhostBottleneck, self).__init__() - c_ = c2 // 2 - self.conv = nn.Sequential(GhostConv(c1, c_, 1, 1), # pw - DWConv(c_, c_, k, s, act=False) if s == 2 else nn.Identity(), # dw - GhostConv(c_, c2, 1, 1, act=False)) # pw-linear - self.shortcut = nn.Sequential(DWConv(c1, c1, k, s, act=False), - Conv(c1, c2, 1, 1, act=False)) if s == 2 else nn.Identity() - - def forward(self, x): - return self.conv(x) + self.shortcut(x) - - class MixConv2d(nn.Module): - # Mixed Depthwise Conv https://arxiv.org/abs/1907.09595 - def __init__(self, c1, c2, k=(1, 3), s=1, equal_ch=True): - super(MixConv2d, self).__init__() - groups = len(k) + # Mixed Depth-wise Conv https://arxiv.org/abs/1907.09595 + def __init__(self, c1, c2, k=(1, 3), s=1, equal_ch=True): # ch_in, ch_out, kernel, stride, ch_strategy + super().__init__() + n = len(k) # number of convolutions if equal_ch: # equal c_ per group - i = torch.linspace(0, groups - 1E-6, c2).floor() # c2 indices - c_ = [(i == g).sum() for g in range(groups)] # intermediate channels + i = torch.linspace(0, n - 1E-6, c2).floor() # c2 indices + c_ = [(i == g).sum() for g in range(n)] # intermediate channels else: # equal weight.numel() per group - b = [c2] + [0] * groups - a = np.eye(groups + 1, groups, k=-1) + b = [c2] + [0] * n + a = np.eye(n + 1, n, k=-1) a -= np.roll(a, 1, axis=1) a *= np.array(k) ** 2 a[0] = 1 c_ = np.linalg.lstsq(a, b, rcond=None)[0].round() # solve for equal weight indices, ax = b - self.m = nn.ModuleList([nn.Conv2d(c1, int(c_[g]), k[g], s, k[g] // 2, bias=False) for g in range(groups)]) + self.m = nn.ModuleList( + [nn.Conv2d(c1, int(c_), k, s, k // 2, groups=math.gcd(c1, int(c_)), bias=False) for k, c_ in zip(k, c_)]) self.bn = nn.BatchNorm2d(c2) - self.act = nn.LeakyReLU(0.1, inplace=True) + self.act = nn.SiLU() def forward(self, x): - return x + self.act(self.bn(torch.cat([m(x) for m in self.m], 1))) + return self.act(self.bn(torch.cat([m(x) for m in self.m], 1))) class Ensemble(nn.ModuleList): # Ensemble of models def __init__(self): - super(Ensemble, self).__init__() + super().__init__() - def forward(self, x, augment=False): + def forward(self, x, augment=False, profile=False, visualize=False): y = [] for module in self: - y.append(module(x, augment)[0]) + y.append(module(x, augment, profile, visualize)[0]) # y = torch.stack(y).max(0)[0] # max ensemble # y = torch.stack(y).mean(0) # mean ensemble y = torch.cat(y, 1) # nms ensemble return y, None # inference, train output -def attempt_load(weights, map_location=None, inplace=True): +def attempt_load(weights, map_location=None, inplace=True, fuse=True): from models.yolo import Detect, Model # Loads an ensemble of models weights=[a,b,c] or a single model weights=[a] or weights=a model = Ensemble() for w in weights if isinstance(weights, list) else [weights]: ckpt = torch.load(attempt_download(w), map_location=map_location) # load - model.append(ckpt['ema' if ckpt.get('ema') else 'model'].float().fuse().eval()) # FP32 model + if fuse: + model.append(ckpt['ema' if ckpt.get('ema') else 'model'].float().fuse().eval()) # FP32 model + else: + model.append(ckpt['ema' if ckpt.get('ema') else 'model'].float().eval()) # without layer fuse # Compatibility updates for m in model.modules(): if type(m) in [nn.Hardswish, nn.LeakyReLU, nn.ReLU, nn.ReLU6, nn.SiLU, Detect, Model]: m.inplace = inplace # pytorch 1.7.0 compatibility + if type(m) is Detect: + if not isinstance(m.anchor_grid, list): # new Detect Layer compatibility + delattr(m, 'anchor_grid') + setattr(m, 'anchor_grid', [torch.zeros(1)] * m.nl) elif type(m) is Conv: m._non_persistent_buffers_set = set() # pytorch 1.6.0 compatibility diff --git a/models/export.py b/models/export.py deleted file mode 100644 index 8da43b3a..00000000 --- a/models/export.py +++ /dev/null @@ -1,145 +0,0 @@ -"""Exports a YOLOv3 *.pt model to TorchScript, ONNX, CoreML formats - -Usage: - $ python path/to/models/export.py --weights yolov3.pt --img 640 --batch 1 -""" - -import argparse -import sys -import time -from pathlib import Path - -sys.path.append(Path(__file__).parent.parent.absolute().__str__()) # to run '$ python *.py' files in subdirectories - -import torch -import torch.nn as nn -from torch.utils.mobile_optimizer import optimize_for_mobile - -import models -from models.experimental import attempt_load -from utils.activations import Hardswish, SiLU -from utils.general import colorstr, check_img_size, check_requirements, file_size, set_logging -from utils.torch_utils import select_device - -if __name__ == '__main__': - parser = argparse.ArgumentParser() - parser.add_argument('--weights', type=str, default='./yolov3.pt', help='weights path') - parser.add_argument('--img-size', nargs='+', type=int, default=[640, 640], help='image size') # height, width - parser.add_argument('--batch-size', type=int, default=1, help='batch size') - parser.add_argument('--device', default='cpu', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') - parser.add_argument('--include', nargs='+', default=['torchscript', 'onnx', 'coreml'], help='include formats') - parser.add_argument('--half', action='store_true', help='FP16 half-precision export') - parser.add_argument('--inplace', action='store_true', help='set YOLOv3 Detect() inplace=True') - parser.add_argument('--train', action='store_true', help='model.train() mode') - parser.add_argument('--optimize', action='store_true', help='optimize TorchScript for mobile') # TorchScript-only - parser.add_argument('--dynamic', action='store_true', help='dynamic ONNX axes') # ONNX-only - parser.add_argument('--simplify', action='store_true', help='simplify ONNX model') # ONNX-only - parser.add_argument('--opset-version', type=int, default=12, help='ONNX opset version') # ONNX-only - opt = parser.parse_args() - opt.img_size *= 2 if len(opt.img_size) == 1 else 1 # expand - opt.include = [x.lower() for x in opt.include] - print(opt) - set_logging() - t = time.time() - - # Load PyTorch model - device = select_device(opt.device) - model = attempt_load(opt.weights, map_location=device) # load FP32 model - labels = model.names - - # Checks - gs = int(max(model.stride)) # grid size (max stride) - opt.img_size = [check_img_size(x, gs) for x in opt.img_size] # verify img_size are gs-multiples - assert not (opt.device.lower() == 'cpu' and opt.half), '--half only compatible with GPU export, i.e. use --device 0' - - # Input - img = torch.zeros(opt.batch_size, 3, *opt.img_size).to(device) # image size(1,3,320,192) iDetection - - # Update model - if opt.half: - img, model = img.half(), model.half() # to FP16 - if opt.train: - model.train() # training mode (no grid construction in Detect layer) - for k, m in model.named_modules(): - m._non_persistent_buffers_set = set() # pytorch 1.6.0 compatibility - if isinstance(m, models.common.Conv): # assign export-friendly activations - if isinstance(m.act, nn.Hardswish): - m.act = Hardswish() - elif isinstance(m.act, nn.SiLU): - m.act = SiLU() - elif isinstance(m, models.yolo.Detect): - m.inplace = opt.inplace - m.onnx_dynamic = opt.dynamic - # m.forward = m.forward_export # assign forward (optional) - - for _ in range(2): - y = model(img) # dry runs - print(f"\n{colorstr('PyTorch:')} starting from {opt.weights} ({file_size(opt.weights):.1f} MB)") - - # TorchScript export ----------------------------------------------------------------------------------------------- - if 'torchscript' in opt.include or 'coreml' in opt.include: - prefix = colorstr('TorchScript:') - try: - print(f'\n{prefix} starting export with torch {torch.__version__}...') - f = opt.weights.replace('.pt', '.torchscript.pt') # filename - ts = torch.jit.trace(model, img, strict=False) - (optimize_for_mobile(ts) if opt.optimize else ts).save(f) - print(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)') - except Exception as e: - print(f'{prefix} export failure: {e}') - - # ONNX export ------------------------------------------------------------------------------------------------------ - if 'onnx' in opt.include: - prefix = colorstr('ONNX:') - try: - import onnx - - print(f'{prefix} starting export with onnx {onnx.__version__}...') - f = opt.weights.replace('.pt', '.onnx') # filename - torch.onnx.export(model, img, f, verbose=False, opset_version=opt.opset_version, input_names=['images'], - training=torch.onnx.TrainingMode.TRAINING if opt.train else torch.onnx.TrainingMode.EVAL, - do_constant_folding=not opt.train, - dynamic_axes={'images': {0: 'batch', 2: 'height', 3: 'width'}, # size(1,3,640,640) - 'output': {0: 'batch', 2: 'y', 3: 'x'}} if opt.dynamic else None) - - # Checks - model_onnx = onnx.load(f) # load onnx model - onnx.checker.check_model(model_onnx) # check onnx model - # print(onnx.helper.printable_graph(model_onnx.graph)) # print - - # Simplify - if opt.simplify: - try: - check_requirements(['onnx-simplifier']) - import onnxsim - - print(f'{prefix} simplifying with onnx-simplifier {onnxsim.__version__}...') - model_onnx, check = onnxsim.simplify( - model_onnx, - dynamic_input_shape=opt.dynamic, - input_shapes={'images': list(img.shape)} if opt.dynamic else None) - assert check, 'assert check failed' - onnx.save(model_onnx, f) - except Exception as e: - print(f'{prefix} simplifier failure: {e}') - print(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)') - except Exception as e: - print(f'{prefix} export failure: {e}') - - # CoreML export ---------------------------------------------------------------------------------------------------- - if 'coreml' in opt.include: - prefix = colorstr('CoreML:') - try: - import coremltools as ct - - print(f'{prefix} starting export with coremltools {ct.__version__}...') - assert opt.train, 'CoreML exports should be placed in model.train() mode with `python export.py --train`' - model = ct.convert(ts, inputs=[ct.ImageType('image', shape=img.shape, scale=1 / 255.0, bias=[0, 0, 0])]) - f = opt.weights.replace('.pt', '.mlmodel') # filename - model.save(f) - print(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)') - except Exception as e: - print(f'{prefix} export failure: {e}') - - # Finish - print(f'\nExport complete ({time.time() - t:.2f}s). Visualize with https://github.com/lutzroeder/netron.') diff --git a/models/tf.py b/models/tf.py new file mode 100644 index 00000000..4076c9ea --- /dev/null +++ b/models/tf.py @@ -0,0 +1,465 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +TensorFlow, Keras and TFLite versions of +Authored by https://github.com/zldrobit in PR https://github.com/ultralytics/yolov5/pull/1127 + +Usage: + $ python models/tf.py --weights yolov3.pt + +Export: + $ python path/to/export.py --weights yolov3.pt --include saved_model pb tflite tfjs +""" + +import argparse +import logging +import sys +from copy import deepcopy +from pathlib import Path + +FILE = Path(__file__).resolve() +ROOT = FILE.parents[1] # root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH +# ROOT = ROOT.relative_to(Path.cwd()) # relative + +import numpy as np +import tensorflow as tf +import torch +import torch.nn as nn +from tensorflow import keras + +from models.common import C3, SPP, SPPF, Bottleneck, BottleneckCSP, Concat, Conv, DWConv, Focus, autopad +from models.experimental import CrossConv, MixConv2d, attempt_load +from models.yolo import Detect +from utils.activations import SiLU +from utils.general import LOGGER, make_divisible, print_args + + +class TFBN(keras.layers.Layer): + # TensorFlow BatchNormalization wrapper + def __init__(self, w=None): + super().__init__() + self.bn = keras.layers.BatchNormalization( + beta_initializer=keras.initializers.Constant(w.bias.numpy()), + gamma_initializer=keras.initializers.Constant(w.weight.numpy()), + moving_mean_initializer=keras.initializers.Constant(w.running_mean.numpy()), + moving_variance_initializer=keras.initializers.Constant(w.running_var.numpy()), + epsilon=w.eps) + + def call(self, inputs): + return self.bn(inputs) + + +class TFPad(keras.layers.Layer): + def __init__(self, pad): + super().__init__() + self.pad = tf.constant([[0, 0], [pad, pad], [pad, pad], [0, 0]]) + + def call(self, inputs): + return tf.pad(inputs, self.pad, mode='constant', constant_values=0) + + +class TFConv(keras.layers.Layer): + # Standard convolution + def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True, w=None): + # ch_in, ch_out, weights, kernel, stride, padding, groups + super().__init__() + assert g == 1, "TF v2.2 Conv2D does not support 'groups' argument" + assert isinstance(k, int), "Convolution with multiple kernels are not allowed." + # TensorFlow convolution padding is inconsistent with PyTorch (e.g. k=3 s=2 'SAME' padding) + # see https://stackoverflow.com/questions/52975843/comparing-conv2d-with-padding-between-tensorflow-and-pytorch + + conv = keras.layers.Conv2D( + c2, k, s, 'SAME' if s == 1 else 'VALID', use_bias=False if hasattr(w, 'bn') else True, + kernel_initializer=keras.initializers.Constant(w.conv.weight.permute(2, 3, 1, 0).numpy()), + bias_initializer='zeros' if hasattr(w, 'bn') else keras.initializers.Constant(w.conv.bias.numpy())) + self.conv = conv if s == 1 else keras.Sequential([TFPad(autopad(k, p)), conv]) + self.bn = TFBN(w.bn) if hasattr(w, 'bn') else tf.identity + + # activations + if isinstance(w.act, nn.LeakyReLU): + self.act = (lambda x: keras.activations.relu(x, alpha=0.1)) if act else tf.identity + elif isinstance(w.act, nn.Hardswish): + self.act = (lambda x: x * tf.nn.relu6(x + 3) * 0.166666667) if act else tf.identity + elif isinstance(w.act, (nn.SiLU, SiLU)): + self.act = (lambda x: keras.activations.swish(x)) if act else tf.identity + else: + raise Exception(f'no matching TensorFlow activation found for {w.act}') + + def call(self, inputs): + return self.act(self.bn(self.conv(inputs))) + + +class TFFocus(keras.layers.Layer): + # Focus wh information into c-space + def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True, w=None): + # ch_in, ch_out, kernel, stride, padding, groups + super().__init__() + self.conv = TFConv(c1 * 4, c2, k, s, p, g, act, w.conv) + + def call(self, inputs): # x(b,w,h,c) -> y(b,w/2,h/2,4c) + # inputs = inputs / 255 # normalize 0-255 to 0-1 + return self.conv(tf.concat([inputs[:, ::2, ::2, :], + inputs[:, 1::2, ::2, :], + inputs[:, ::2, 1::2, :], + inputs[:, 1::2, 1::2, :]], 3)) + + +class TFBottleneck(keras.layers.Layer): + # Standard bottleneck + def __init__(self, c1, c2, shortcut=True, g=1, e=0.5, w=None): # ch_in, ch_out, shortcut, groups, expansion + super().__init__() + c_ = int(c2 * e) # hidden channels + self.cv1 = TFConv(c1, c_, 1, 1, w=w.cv1) + self.cv2 = TFConv(c_, c2, 3, 1, g=g, w=w.cv2) + self.add = shortcut and c1 == c2 + + def call(self, inputs): + return inputs + self.cv2(self.cv1(inputs)) if self.add else self.cv2(self.cv1(inputs)) + + +class TFConv2d(keras.layers.Layer): + # Substitution for PyTorch nn.Conv2D + def __init__(self, c1, c2, k, s=1, g=1, bias=True, w=None): + super().__init__() + assert g == 1, "TF v2.2 Conv2D does not support 'groups' argument" + self.conv = keras.layers.Conv2D( + c2, k, s, 'VALID', use_bias=bias, + kernel_initializer=keras.initializers.Constant(w.weight.permute(2, 3, 1, 0).numpy()), + bias_initializer=keras.initializers.Constant(w.bias.numpy()) if bias else None, ) + + def call(self, inputs): + return self.conv(inputs) + + +class TFBottleneckCSP(keras.layers.Layer): + # CSP Bottleneck https://github.com/WongKinYiu/CrossStagePartialNetworks + def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5, w=None): + # ch_in, ch_out, number, shortcut, groups, expansion + super().__init__() + c_ = int(c2 * e) # hidden channels + self.cv1 = TFConv(c1, c_, 1, 1, w=w.cv1) + self.cv2 = TFConv2d(c1, c_, 1, 1, bias=False, w=w.cv2) + self.cv3 = TFConv2d(c_, c_, 1, 1, bias=False, w=w.cv3) + self.cv4 = TFConv(2 * c_, c2, 1, 1, w=w.cv4) + self.bn = TFBN(w.bn) + self.act = lambda x: keras.activations.relu(x, alpha=0.1) + self.m = keras.Sequential([TFBottleneck(c_, c_, shortcut, g, e=1.0, w=w.m[j]) for j in range(n)]) + + def call(self, inputs): + y1 = self.cv3(self.m(self.cv1(inputs))) + y2 = self.cv2(inputs) + return self.cv4(self.act(self.bn(tf.concat((y1, y2), axis=3)))) + + +class TFC3(keras.layers.Layer): + # CSP Bottleneck with 3 convolutions + def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5, w=None): + # ch_in, ch_out, number, shortcut, groups, expansion + super().__init__() + c_ = int(c2 * e) # hidden channels + self.cv1 = TFConv(c1, c_, 1, 1, w=w.cv1) + self.cv2 = TFConv(c1, c_, 1, 1, w=w.cv2) + self.cv3 = TFConv(2 * c_, c2, 1, 1, w=w.cv3) + self.m = keras.Sequential([TFBottleneck(c_, c_, shortcut, g, e=1.0, w=w.m[j]) for j in range(n)]) + + def call(self, inputs): + return self.cv3(tf.concat((self.m(self.cv1(inputs)), self.cv2(inputs)), axis=3)) + + +class TFSPP(keras.layers.Layer): + # Spatial pyramid pooling layer used in YOLOv3-SPP + def __init__(self, c1, c2, k=(5, 9, 13), w=None): + super().__init__() + c_ = c1 // 2 # hidden channels + self.cv1 = TFConv(c1, c_, 1, 1, w=w.cv1) + self.cv2 = TFConv(c_ * (len(k) + 1), c2, 1, 1, w=w.cv2) + self.m = [keras.layers.MaxPool2D(pool_size=x, strides=1, padding='SAME') for x in k] + + def call(self, inputs): + x = self.cv1(inputs) + return self.cv2(tf.concat([x] + [m(x) for m in self.m], 3)) + + +class TFSPPF(keras.layers.Layer): + # Spatial pyramid pooling-Fast layer + def __init__(self, c1, c2, k=5, w=None): + super().__init__() + c_ = c1 // 2 # hidden channels + self.cv1 = TFConv(c1, c_, 1, 1, w=w.cv1) + self.cv2 = TFConv(c_ * 4, c2, 1, 1, w=w.cv2) + self.m = keras.layers.MaxPool2D(pool_size=k, strides=1, padding='SAME') + + def call(self, inputs): + x = self.cv1(inputs) + y1 = self.m(x) + y2 = self.m(y1) + return self.cv2(tf.concat([x, y1, y2, self.m(y2)], 3)) + + +class TFDetect(keras.layers.Layer): + def __init__(self, nc=80, anchors=(), ch=(), imgsz=(640, 640), w=None): # detection layer + super().__init__() + self.stride = tf.convert_to_tensor(w.stride.numpy(), dtype=tf.float32) + self.nc = nc # number of classes + self.no = nc + 5 # number of outputs per anchor + self.nl = len(anchors) # number of detection layers + self.na = len(anchors[0]) // 2 # number of anchors + self.grid = [tf.zeros(1)] * self.nl # init grid + self.anchors = tf.convert_to_tensor(w.anchors.numpy(), dtype=tf.float32) + self.anchor_grid = tf.reshape(self.anchors * tf.reshape(self.stride, [self.nl, 1, 1]), + [self.nl, 1, -1, 1, 2]) + self.m = [TFConv2d(x, self.no * self.na, 1, w=w.m[i]) for i, x in enumerate(ch)] + self.training = False # set to False after building model + self.imgsz = imgsz + for i in range(self.nl): + ny, nx = self.imgsz[0] // self.stride[i], self.imgsz[1] // self.stride[i] + self.grid[i] = self._make_grid(nx, ny) + + def call(self, inputs): + z = [] # inference output + x = [] + for i in range(self.nl): + x.append(self.m[i](inputs[i])) + # x(bs,20,20,255) to x(bs,3,20,20,85) + ny, nx = self.imgsz[0] // self.stride[i], self.imgsz[1] // self.stride[i] + x[i] = tf.transpose(tf.reshape(x[i], [-1, ny * nx, self.na, self.no]), [0, 2, 1, 3]) + + if not self.training: # inference + y = tf.sigmoid(x[i]) + xy = (y[..., 0:2] * 2 - 0.5 + self.grid[i]) * self.stride[i] # xy + wh = (y[..., 2:4] * 2) ** 2 * self.anchor_grid[i] + # Normalize xywh to 0-1 to reduce calibration error + xy /= tf.constant([[self.imgsz[1], self.imgsz[0]]], dtype=tf.float32) + wh /= tf.constant([[self.imgsz[1], self.imgsz[0]]], dtype=tf.float32) + y = tf.concat([xy, wh, y[..., 4:]], -1) + z.append(tf.reshape(y, [-1, 3 * ny * nx, self.no])) + + return x if self.training else (tf.concat(z, 1), x) + + @staticmethod + def _make_grid(nx=20, ny=20): + # yv, xv = torch.meshgrid([torch.arange(ny), torch.arange(nx)]) + # return torch.stack((xv, yv), 2).view((1, 1, ny, nx, 2)).float() + xv, yv = tf.meshgrid(tf.range(nx), tf.range(ny)) + return tf.cast(tf.reshape(tf.stack([xv, yv], 2), [1, 1, ny * nx, 2]), dtype=tf.float32) + + +class TFUpsample(keras.layers.Layer): + def __init__(self, size, scale_factor, mode, w=None): # warning: all arguments needed including 'w' + super().__init__() + assert scale_factor == 2, "scale_factor must be 2" + self.upsample = lambda x: tf.image.resize(x, (x.shape[1] * 2, x.shape[2] * 2), method=mode) + # self.upsample = keras.layers.UpSampling2D(size=scale_factor, interpolation=mode) + # with default arguments: align_corners=False, half_pixel_centers=False + # self.upsample = lambda x: tf.raw_ops.ResizeNearestNeighbor(images=x, + # size=(x.shape[1] * 2, x.shape[2] * 2)) + + def call(self, inputs): + return self.upsample(inputs) + + +class TFConcat(keras.layers.Layer): + def __init__(self, dimension=1, w=None): + super().__init__() + assert dimension == 1, "convert only NCHW to NHWC concat" + self.d = 3 + + def call(self, inputs): + return tf.concat(inputs, self.d) + + +def parse_model(d, ch, model, imgsz): # model_dict, input_channels(3) + LOGGER.info(f"\n{'':>3}{'from':>18}{'n':>3}{'params':>10} {'module':<40}{'arguments':<30}") + anchors, nc, gd, gw = d['anchors'], d['nc'], d['depth_multiple'], d['width_multiple'] + na = (len(anchors[0]) // 2) if isinstance(anchors, list) else anchors # number of anchors + no = na * (nc + 5) # number of outputs = anchors * (classes + 5) + + layers, save, c2 = [], [], ch[-1] # layers, savelist, ch out + for i, (f, n, m, args) in enumerate(d['backbone'] + d['head']): # from, number, module, args + m_str = m + m = eval(m) if isinstance(m, str) else m # eval strings + for j, a in enumerate(args): + try: + args[j] = eval(a) if isinstance(a, str) else a # eval strings + except NameError: + pass + + n = max(round(n * gd), 1) if n > 1 else n # depth gain + if m in [nn.Conv2d, Conv, Bottleneck, SPP, SPPF, DWConv, MixConv2d, Focus, CrossConv, BottleneckCSP, C3]: + c1, c2 = ch[f], args[0] + c2 = make_divisible(c2 * gw, 8) if c2 != no else c2 + + args = [c1, c2, *args[1:]] + if m in [BottleneckCSP, C3]: + args.insert(2, n) + n = 1 + elif m is nn.BatchNorm2d: + args = [ch[f]] + elif m is Concat: + c2 = sum(ch[-1 if x == -1 else x + 1] for x in f) + elif m is Detect: + args.append([ch[x + 1] for x in f]) + if isinstance(args[1], int): # number of anchors + args[1] = [list(range(args[1] * 2))] * len(f) + args.append(imgsz) + else: + c2 = ch[f] + + tf_m = eval('TF' + m_str.replace('nn.', '')) + m_ = keras.Sequential([tf_m(*args, w=model.model[i][j]) for j in range(n)]) if n > 1 \ + else tf_m(*args, w=model.model[i]) # module + + torch_m_ = nn.Sequential(*(m(*args) for _ in range(n))) if n > 1 else m(*args) # module + t = str(m)[8:-2].replace('__main__.', '') # module type + np = sum(x.numel() for x in torch_m_.parameters()) # number params + m_.i, m_.f, m_.type, m_.np = i, f, t, np # attach index, 'from' index, type, number params + LOGGER.info(f'{i:>3}{str(f):>18}{str(n):>3}{np:>10} {t:<40}{str(args):<30}') # print + save.extend(x % i for x in ([f] if isinstance(f, int) else f) if x != -1) # append to savelist + layers.append(m_) + ch.append(c2) + return keras.Sequential(layers), sorted(save) + + +class TFModel: + def __init__(self, cfg='yolov3.yaml', ch=3, nc=None, model=None, imgsz=(640, 640)): # model, channels, classes + super().__init__() + if isinstance(cfg, dict): + self.yaml = cfg # model dict + else: # is *.yaml + import yaml # for torch hub + self.yaml_file = Path(cfg).name + with open(cfg) as f: + self.yaml = yaml.load(f, Loader=yaml.FullLoader) # model dict + + # Define model + if nc and nc != self.yaml['nc']: + LOGGER.info(f"Overriding {cfg} nc={self.yaml['nc']} with nc={nc}") + self.yaml['nc'] = nc # override yaml value + self.model, self.savelist = parse_model(deepcopy(self.yaml), ch=[ch], model=model, imgsz=imgsz) + + def predict(self, inputs, tf_nms=False, agnostic_nms=False, topk_per_class=100, topk_all=100, iou_thres=0.45, + conf_thres=0.25): + y = [] # outputs + x = inputs + for i, m in enumerate(self.model.layers): + if m.f != -1: # if not from previous layer + x = y[m.f] if isinstance(m.f, int) else [x if j == -1 else y[j] for j in m.f] # from earlier layers + + x = m(x) # run + y.append(x if m.i in self.savelist else None) # save output + + # Add TensorFlow NMS + if tf_nms: + boxes = self._xywh2xyxy(x[0][..., :4]) + probs = x[0][:, :, 4:5] + classes = x[0][:, :, 5:] + scores = probs * classes + if agnostic_nms: + nms = AgnosticNMS()((boxes, classes, scores), topk_all, iou_thres, conf_thres) + return nms, x[1] + else: + boxes = tf.expand_dims(boxes, 2) + nms = tf.image.combined_non_max_suppression( + boxes, scores, topk_per_class, topk_all, iou_thres, conf_thres, clip_boxes=False) + return nms, x[1] + + return x[0] # output only first tensor [1,6300,85] = [xywh, conf, class0, class1, ...] + # x = x[0][0] # [x(1,6300,85), ...] to x(6300,85) + # xywh = x[..., :4] # x(6300,4) boxes + # conf = x[..., 4:5] # x(6300,1) confidences + # cls = tf.reshape(tf.cast(tf.argmax(x[..., 5:], axis=1), tf.float32), (-1, 1)) # x(6300,1) classes + # return tf.concat([conf, cls, xywh], 1) + + @staticmethod + def _xywh2xyxy(xywh): + # Convert nx4 boxes from [x, y, w, h] to [x1, y1, x2, y2] where xy1=top-left, xy2=bottom-right + x, y, w, h = tf.split(xywh, num_or_size_splits=4, axis=-1) + return tf.concat([x - w / 2, y - h / 2, x + w / 2, y + h / 2], axis=-1) + + +class AgnosticNMS(keras.layers.Layer): + # TF Agnostic NMS + def call(self, input, topk_all, iou_thres, conf_thres): + # wrap map_fn to avoid TypeSpec related error https://stackoverflow.com/a/65809989/3036450 + return tf.map_fn(lambda x: self._nms(x, topk_all, iou_thres, conf_thres), input, + fn_output_signature=(tf.float32, tf.float32, tf.float32, tf.int32), + name='agnostic_nms') + + @staticmethod + def _nms(x, topk_all=100, iou_thres=0.45, conf_thres=0.25): # agnostic NMS + boxes, classes, scores = x + class_inds = tf.cast(tf.argmax(classes, axis=-1), tf.float32) + scores_inp = tf.reduce_max(scores, -1) + selected_inds = tf.image.non_max_suppression( + boxes, scores_inp, max_output_size=topk_all, iou_threshold=iou_thres, score_threshold=conf_thres) + selected_boxes = tf.gather(boxes, selected_inds) + padded_boxes = tf.pad(selected_boxes, + paddings=[[0, topk_all - tf.shape(selected_boxes)[0]], [0, 0]], + mode="CONSTANT", constant_values=0.0) + selected_scores = tf.gather(scores_inp, selected_inds) + padded_scores = tf.pad(selected_scores, + paddings=[[0, topk_all - tf.shape(selected_boxes)[0]]], + mode="CONSTANT", constant_values=-1.0) + selected_classes = tf.gather(class_inds, selected_inds) + padded_classes = tf.pad(selected_classes, + paddings=[[0, topk_all - tf.shape(selected_boxes)[0]]], + mode="CONSTANT", constant_values=-1.0) + valid_detections = tf.shape(selected_inds)[0] + return padded_boxes, padded_scores, padded_classes, valid_detections + + +def representative_dataset_gen(dataset, ncalib=100): + # Representative dataset generator for use with converter.representative_dataset, returns a generator of np arrays + for n, (path, img, im0s, vid_cap, string) in enumerate(dataset): + input = np.transpose(img, [1, 2, 0]) + input = np.expand_dims(input, axis=0).astype(np.float32) + input /= 255 + yield [input] + if n >= ncalib: + break + + +def run(weights=ROOT / 'yolov3.pt', # weights path + imgsz=(640, 640), # inference size h,w + batch_size=1, # batch size + dynamic=False, # dynamic batch size + ): + # PyTorch model + im = torch.zeros((batch_size, 3, *imgsz)) # BCHW image + model = attempt_load(weights, map_location=torch.device('cpu'), inplace=True, fuse=False) + y = model(im) # inference + model.info() + + # TensorFlow model + im = tf.zeros((batch_size, *imgsz, 3)) # BHWC image + tf_model = TFModel(cfg=model.yaml, model=model, nc=model.nc, imgsz=imgsz) + y = tf_model.predict(im) # inference + + # Keras model + im = keras.Input(shape=(*imgsz, 3), batch_size=None if dynamic else batch_size) + keras_model = keras.Model(inputs=im, outputs=tf_model.predict(im)) + keras_model.summary() + + LOGGER.info('PyTorch, TensorFlow and Keras models successfully verified.\nUse export.py for TF model export.') + + +def parse_opt(): + parser = argparse.ArgumentParser() + parser.add_argument('--weights', type=str, default=ROOT / 'yolov3.pt', help='weights path') + parser.add_argument('--imgsz', '--img', '--img-size', nargs='+', type=int, default=[640], help='inference size h,w') + parser.add_argument('--batch-size', type=int, default=1, help='batch size') + parser.add_argument('--dynamic', action='store_true', help='dynamic batch size') + opt = parser.parse_args() + opt.imgsz *= 2 if len(opt.imgsz) == 1 else 1 # expand + print_args(FILE.stem, opt) + return opt + + +def main(opt): + run(**vars(opt)) + + +if __name__ == "__main__": + opt = parse_opt() + main(opt) diff --git a/models/yolo.py b/models/yolo.py index 934cab69..f398d3f9 100644 --- a/models/yolo.py +++ b/models/yolo.py @@ -1,27 +1,32 @@ -"""YOLOv3-specific modules +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +YOLO-specific modules Usage: $ python path/to/models/yolo.py --cfg yolov3.yaml """ import argparse -import logging import sys from copy import deepcopy from pathlib import Path -sys.path.append(Path(__file__).parent.parent.absolute().__str__()) # to run '$ python *.py' files in subdirectories -logger = logging.getLogger(__name__) +FILE = Path(__file__).resolve() +ROOT = FILE.parents[1] # root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH +# ROOT = ROOT.relative_to(Path.cwd()) # relative from models.common import * from models.experimental import * from utils.autoanchor import check_anchor_order -from utils.general import make_divisible, check_file, set_logging -from utils.torch_utils import time_synchronized, fuse_conv_and_bn, model_info, scale_img, initialize_weights, \ - select_device, copy_attr +from utils.general import LOGGER, check_version, check_yaml, make_divisible, print_args +from utils.plots import feature_visualization +from utils.torch_utils import (copy_attr, fuse_conv_and_bn, initialize_weights, model_info, scale_img, select_device, + time_sync) try: - import thop # for FLOPS computation + import thop # for FLOPs computation except ImportError: thop = None @@ -31,20 +36,18 @@ class Detect(nn.Module): onnx_dynamic = False # ONNX export parameter def __init__(self, nc=80, anchors=(), ch=(), inplace=True): # detection layer - super(Detect, self).__init__() + super().__init__() self.nc = nc # number of classes self.no = nc + 5 # number of outputs per anchor self.nl = len(anchors) # number of detection layers self.na = len(anchors[0]) // 2 # number of anchors self.grid = [torch.zeros(1)] * self.nl # init grid - a = torch.tensor(anchors).float().view(self.nl, -1, 2) - self.register_buffer('anchors', a) # shape(nl,na,2) - self.register_buffer('anchor_grid', a.clone().view(self.nl, 1, -1, 1, 1, 2)) # shape(nl,1,na,1,1,2) + self.anchor_grid = [torch.zeros(1)] * self.nl # init anchor grid + self.register_buffer('anchors', torch.tensor(anchors).float().view(self.nl, -1, 2)) # shape(nl,na,2) self.m = nn.ModuleList(nn.Conv2d(x, self.no * self.na, 1) for x in ch) # output conv self.inplace = inplace # use in-place ops (e.g. slice assignment) def forward(self, x): - # x = x.copy() # for profiling z = [] # inference output for i in range(self.nl): x[i] = self.m[i](x[i]) # conv @@ -52,50 +55,55 @@ class Detect(nn.Module): x[i] = x[i].view(bs, self.na, self.no, ny, nx).permute(0, 1, 3, 4, 2).contiguous() if not self.training: # inference - if self.grid[i].shape[2:4] != x[i].shape[2:4] or self.onnx_dynamic: - self.grid[i] = self._make_grid(nx, ny).to(x[i].device) + if self.onnx_dynamic or self.grid[i].shape[2:4] != x[i].shape[2:4]: + self.grid[i], self.anchor_grid[i] = self._make_grid(nx, ny, i) y = x[i].sigmoid() if self.inplace: - y[..., 0:2] = (y[..., 0:2] * 2. - 0.5 + self.grid[i]) * self.stride[i] # xy + y[..., 0:2] = (y[..., 0:2] * 2 - 0.5 + self.grid[i]) * self.stride[i] # xy y[..., 2:4] = (y[..., 2:4] * 2) ** 2 * self.anchor_grid[i] # wh - else: # for YOLOv5 on AWS Inferentia https://github.com/ultralytics/yolov5/pull/2953 - xy = (y[..., 0:2] * 2. - 0.5 + self.grid[i]) * self.stride[i] # xy - wh = (y[..., 2:4] * 2) ** 2 * self.anchor_grid[i].view(1, self.na, 1, 1, 2) # wh + else: # for on AWS Inferentia https://github.com/ultralytics/yolov5/pull/2953 + xy = (y[..., 0:2] * 2 - 0.5 + self.grid[i]) * self.stride[i] # xy + wh = (y[..., 2:4] * 2) ** 2 * self.anchor_grid[i] # wh y = torch.cat((xy, wh, y[..., 4:]), -1) z.append(y.view(bs, -1, self.no)) return x if self.training else (torch.cat(z, 1), x) - @staticmethod - def _make_grid(nx=20, ny=20): - yv, xv = torch.meshgrid([torch.arange(ny), torch.arange(nx)]) - return torch.stack((xv, yv), 2).view((1, 1, ny, nx, 2)).float() + def _make_grid(self, nx=20, ny=20, i=0): + d = self.anchors[i].device + if check_version(torch.__version__, '1.10.0'): # torch>=1.10.0 meshgrid workaround for torch>=0.7 compatibility + yv, xv = torch.meshgrid([torch.arange(ny).to(d), torch.arange(nx).to(d)], indexing='ij') + else: + yv, xv = torch.meshgrid([torch.arange(ny).to(d), torch.arange(nx).to(d)]) + grid = torch.stack((xv, yv), 2).expand((1, self.na, ny, nx, 2)).float() + anchor_grid = (self.anchors[i].clone() * self.stride[i]) \ + .view((1, self.na, 1, 1, 2)).expand((1, self.na, ny, nx, 2)).float() + return grid, anchor_grid class Model(nn.Module): def __init__(self, cfg='yolov3.yaml', ch=3, nc=None, anchors=None): # model, input channels, number of classes - super(Model, self).__init__() + super().__init__() if isinstance(cfg, dict): self.yaml = cfg # model dict else: # is *.yaml import yaml # for torch hub self.yaml_file = Path(cfg).name - with open(cfg) as f: + with open(cfg, encoding='ascii', errors='ignore') as f: self.yaml = yaml.safe_load(f) # model dict # Define model ch = self.yaml['ch'] = self.yaml.get('ch', ch) # input channels if nc and nc != self.yaml['nc']: - logger.info(f"Overriding model.yaml nc={self.yaml['nc']} with nc={nc}") + LOGGER.info(f"Overriding model.yaml nc={self.yaml['nc']} with nc={nc}") self.yaml['nc'] = nc # override yaml value if anchors: - logger.info(f'Overriding model.yaml anchors with anchors={anchors}') + LOGGER.info(f'Overriding model.yaml anchors with anchors={anchors}') self.yaml['anchors'] = round(anchors) # override yaml value self.model, self.save = parse_model(deepcopy(self.yaml), ch=[ch]) # model, savelist self.names = [str(i) for i in range(self.yaml['nc'])] # default names self.inplace = self.yaml.get('inplace', True) - # logger.info([x.shape for x in self.forward(torch.zeros(1, ch, 64, 64))]) # Build strides, anchors m = self.model[-1] # Detect() @@ -107,53 +115,42 @@ class Model(nn.Module): check_anchor_order(m) self.stride = m.stride self._initialize_biases() # only run once - # logger.info('Strides: %s' % m.stride.tolist()) # Init weights, biases initialize_weights(self) self.info() - logger.info('') + LOGGER.info('') - def forward(self, x, augment=False, profile=False): + def forward(self, x, augment=False, profile=False, visualize=False): if augment: - return self.forward_augment(x) # augmented inference, None - else: - return self.forward_once(x, profile) # single-scale inference, train + return self._forward_augment(x) # augmented inference, None + return self._forward_once(x, profile, visualize) # single-scale inference, train - def forward_augment(self, x): + def _forward_augment(self, x): img_size = x.shape[-2:] # height, width s = [1, 0.83, 0.67] # scales f = [None, 3, None] # flips (2-ud, 3-lr) y = [] # outputs for si, fi in zip(s, f): xi = scale_img(x.flip(fi) if fi else x, si, gs=int(self.stride.max())) - yi = self.forward_once(xi)[0] # forward + yi = self._forward_once(xi)[0] # forward # cv2.imwrite(f'img_{si}.jpg', 255 * xi[0].cpu().numpy().transpose((1, 2, 0))[:, :, ::-1]) # save yi = self._descale_pred(yi, fi, si, img_size) y.append(yi) + y = self._clip_augmented(y) # clip augmented tails return torch.cat(y, 1), None # augmented inference, train - def forward_once(self, x, profile=False): + def _forward_once(self, x, profile=False, visualize=False): y, dt = [], [] # outputs for m in self.model: if m.f != -1: # if not from previous layer x = y[m.f] if isinstance(m.f, int) else [x if j == -1 else y[j] for j in m.f] # from earlier layers - if profile: - o = thop.profile(m, inputs=(x,), verbose=False)[0] / 1E9 * 2 if thop else 0 # FLOPS - t = time_synchronized() - for _ in range(10): - _ = m(x) - dt.append((time_synchronized() - t) * 100) - if m == self.model[0]: - logger.info(f"{'time (ms)':>10s} {'GFLOPS':>10s} {'params':>10s} {'module'}") - logger.info(f'{dt[-1]:10.2f} {o:10.2f} {m.np:10.0f} {m.type}') - + self._profile_one_layer(m, x, dt) x = m(x) # run y.append(x if m.i in self.save else None) # save output - - if profile: - logger.info('%.1fms total' % sum(dt)) + if visualize: + feature_visualization(x, m.type, m.i, save_dir=visualize) return x def _descale_pred(self, p, flips, scale, img_size): @@ -173,6 +170,30 @@ class Model(nn.Module): p = torch.cat((x, y, wh, p[..., 4:]), -1) return p + def _clip_augmented(self, y): + # Clip augmented inference tails + nl = self.model[-1].nl # number of detection layers (P3-P5) + g = sum(4 ** x for x in range(nl)) # grid points + e = 1 # exclude layer count + i = (y[0].shape[1] // g) * sum(4 ** x for x in range(e)) # indices + y[0] = y[0][:, :-i] # large + i = (y[-1].shape[1] // g) * sum(4 ** (nl - 1 - x) for x in range(e)) # indices + y[-1] = y[-1][:, i:] # small + return y + + def _profile_one_layer(self, m, x, dt): + c = isinstance(m, Detect) # is final layer, copy input as inplace fix + o = thop.profile(m, inputs=(x.copy() if c else x,), verbose=False)[0] / 1E9 * 2 if thop else 0 # FLOPs + t = time_sync() + for _ in range(10): + m(x.copy() if c else x) + dt.append((time_sync() - t) * 100) + if m == self.model[0]: + LOGGER.info(f"{'time (ms)':>10s} {'GFLOPs':>10s} {'params':>10s} {'module'}") + LOGGER.info(f'{dt[-1]:10.2f} {o:10.2f} {m.np:10.0f} {m.type}') + if c: + LOGGER.info(f"{sum(dt):10.2f} {'-':>10s} {'-':>10s} Total") + def _initialize_biases(self, cf=None): # initialize biases into Detect(), cf is class frequency # https://arxiv.org/abs/1708.02002 section 3.3 # cf = torch.bincount(torch.tensor(np.concatenate(dataset.labels, 0)[:, 0]).long(), minlength=nc) + 1. @@ -180,47 +201,33 @@ class Model(nn.Module): for mi, s in zip(m.m, m.stride): # from b = mi.bias.view(m.na, -1) # conv.bias(255) to (3,85) b.data[:, 4] += math.log(8 / (640 / s) ** 2) # obj (8 objects per 640 image) - b.data[:, 5:] += math.log(0.6 / (m.nc - 0.99)) if cf is None else torch.log(cf / cf.sum()) # cls + b.data[:, 5:] += math.log(0.6 / (m.nc - 0.999999)) if cf is None else torch.log(cf / cf.sum()) # cls mi.bias = torch.nn.Parameter(b.view(-1), requires_grad=True) def _print_biases(self): m = self.model[-1] # Detect() module for mi in m.m: # from b = mi.bias.detach().view(m.na, -1).T # conv.bias(255) to (3,85) - logger.info( + LOGGER.info( ('%6g Conv2d.bias:' + '%10.3g' * 6) % (mi.weight.shape[1], *b[:5].mean(1).tolist(), b[5:].mean())) # def _print_weights(self): # for m in self.model.modules(): # if type(m) is Bottleneck: - # logger.info('%10.3g' % (m.w.detach().sigmoid() * 2)) # shortcut weights + # LOGGER.info('%10.3g' % (m.w.detach().sigmoid() * 2)) # shortcut weights def fuse(self): # fuse model Conv2d() + BatchNorm2d() layers - logger.info('Fusing layers... ') + LOGGER.info('Fusing layers... ') for m in self.model.modules(): - if type(m) is Conv and hasattr(m, 'bn'): + if isinstance(m, (Conv, DWConv)) and hasattr(m, 'bn'): m.conv = fuse_conv_and_bn(m.conv, m.bn) # update conv delattr(m, 'bn') # remove batchnorm - m.forward = m.fuseforward # update forward + m.forward = m.forward_fuse # update forward self.info() return self - def nms(self, mode=True): # add or remove NMS module - present = type(self.model[-1]) is NMS # last layer is NMS - if mode and not present: - logger.info('Adding NMS... ') - m = NMS() # module - m.f = -1 # from - m.i = self.model[-1].i + 1 # index - self.model.add_module(name='%s' % m.i, module=m) # add - self.eval() - elif not mode and present: - logger.info('Removing NMS... ') - self.model = self.model[:-1] # remove - return self - def autoshape(self): # add AutoShape module - logger.info('Adding AutoShape... ') + LOGGER.info('Adding AutoShape... ') m = AutoShape(self) # wrap model copy_attr(m, self, include=('yaml', 'nc', 'hyp', 'names', 'stride'), exclude=()) # copy attributes return m @@ -228,9 +235,20 @@ class Model(nn.Module): def info(self, verbose=False, img_size=640): # print model information model_info(self, verbose, img_size) + def _apply(self, fn): + # Apply to(), cpu(), cuda(), half() to model tensors that are not parameters or registered buffers + self = super()._apply(fn) + m = self.model[-1] # Detect() + if isinstance(m, Detect): + m.stride = fn(m.stride) + m.grid = list(map(fn, m.grid)) + if isinstance(m.anchor_grid, list): + m.anchor_grid = list(map(fn, m.anchor_grid)) + return self + def parse_model(d, ch): # model_dict, input_channels(3) - logger.info('\n%3s%18s%3s%10s %-40s%-30s' % ('', 'from', 'n', 'params', 'module', 'arguments')) + LOGGER.info(f"\n{'':>3}{'from':>18}{'n':>3}{'params':>10} {'module':<40}{'arguments':<30}") anchors, nc, gd, gw = d['anchors'], d['nc'], d['depth_multiple'], d['width_multiple'] na = (len(anchors[0]) // 2) if isinstance(anchors, list) else anchors # number of anchors no = na * (nc + 5) # number of outputs = anchors * (classes + 5) @@ -241,24 +259,24 @@ def parse_model(d, ch): # model_dict, input_channels(3) for j, a in enumerate(args): try: args[j] = eval(a) if isinstance(a, str) else a # eval strings - except: + except NameError: pass - n = max(round(n * gd), 1) if n > 1 else n # depth gain - if m in [Conv, GhostConv, Bottleneck, GhostBottleneck, SPP, DWConv, MixConv2d, Focus, CrossConv, BottleneckCSP, - C3, C3TR]: + n = n_ = max(round(n * gd), 1) if n > 1 else n # depth gain + if m in [Conv, GhostConv, Bottleneck, GhostBottleneck, SPP, SPPF, DWConv, MixConv2d, Focus, CrossConv, + BottleneckCSP, C3, C3TR, C3SPP, C3Ghost]: c1, c2 = ch[f], args[0] if c2 != no: # if not output c2 = make_divisible(c2 * gw, 8) args = [c1, c2, *args[1:]] - if m in [BottleneckCSP, C3, C3TR]: + if m in [BottleneckCSP, C3, C3TR, C3Ghost]: args.insert(2, n) # number of repeats n = 1 elif m is nn.BatchNorm2d: args = [ch[f]] elif m is Concat: - c2 = sum([ch[x] for x in f]) + c2 = sum(ch[x] for x in f) elif m is Detect: args.append([ch[x] for x in f]) if isinstance(args[1], int): # number of anchors @@ -270,11 +288,11 @@ def parse_model(d, ch): # model_dict, input_channels(3) else: c2 = ch[f] - m_ = nn.Sequential(*[m(*args) for _ in range(n)]) if n > 1 else m(*args) # module + m_ = nn.Sequential(*(m(*args) for _ in range(n))) if n > 1 else m(*args) # module t = str(m)[8:-2].replace('__main__.', '') # module type - np = sum([x.numel() for x in m_.parameters()]) # number params + np = sum(x.numel() for x in m_.parameters()) # number params m_.i, m_.f, m_.type, m_.np = i, f, t, np # attach index, 'from' index, type, number params - logger.info('%3s%18s%3s%10.0f %-40s%-30s' % (i, f, n, np, t, args)) # print + LOGGER.info(f'{i:>3}{str(f):>18}{n_:>3}{np:10.0f} {t:<40}{str(args):<30}') # print save.extend(x % i for x in ([f] if isinstance(f, int) else f) if x != -1) # append to savelist layers.append(m_) if i == 0: @@ -285,11 +303,13 @@ def parse_model(d, ch): # model_dict, input_channels(3) if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument('--cfg', type=str, default='yolov3.yaml', help='model.yaml') + parser.add_argument('--cfg', type=str, default='yolov3yaml', help='model.yaml') parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') + parser.add_argument('--profile', action='store_true', help='profile model speed') + parser.add_argument('--test', action='store_true', help='test all yolo*.yaml') opt = parser.parse_args() - opt.cfg = check_file(opt.cfg) # check file - set_logging() + opt.cfg = check_yaml(opt.cfg) # check YAML + print_args(FILE.stem, opt) device = select_device(opt.device) # Create model @@ -297,12 +317,20 @@ if __name__ == '__main__': model.train() # Profile - # img = torch.rand(8 if torch.cuda.is_available() else 1, 3, 320, 320).to(device) - # y = model(img, profile=True) + if opt.profile: + img = torch.rand(8 if torch.cuda.is_available() else 1, 3, 640, 640).to(device) + y = model(img, profile=True) + + # Test all models + if opt.test: + for cfg in Path(ROOT / 'models').rglob('yolo*.yaml'): + try: + _ = Model(cfg) + except Exception as e: + print(f'Error in {cfg}: {e}') # Tensorboard (not working https://github.com/ultralytics/yolov5/issues/2898) # from torch.utils.tensorboard import SummaryWriter # tb_writer = SummaryWriter('.') - # logger.info("Run 'tensorboard --logdir=models' to view tensorboard at http://localhost:6006/") + # LOGGER.info("Run 'tensorboard --logdir=models' to view tensorboard at http://localhost:6006/") # tb_writer.add_graph(torch.jit.trace(model, img, strict=False), []) # add model graph - # tb_writer.add_image('test', img[0], dataformats='CWH') # add model to tensorboard diff --git a/models/yolov3-spp.yaml b/models/yolov3-spp.yaml index 38dcc449..04593a47 100644 --- a/models/yolov3-spp.yaml +++ b/models/yolov3-spp.yaml @@ -1,9 +1,9 @@ -# parameters +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters nc: 80 # number of classes depth_multiple: 1.0 # model depth multiple width_multiple: 1.0 # layer channel multiple - -# anchors anchors: - [10,13, 16,30, 33,23] # P3/8 - [30,61, 62,45, 59,119] # P4/16 diff --git a/models/yolov3-tiny.yaml b/models/yolov3-tiny.yaml index ff7638ca..04f9b446 100644 --- a/models/yolov3-tiny.yaml +++ b/models/yolov3-tiny.yaml @@ -1,9 +1,9 @@ -# parameters +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters nc: 80 # number of classes depth_multiple: 1.0 # model depth multiple width_multiple: 1.0 # layer channel multiple - -# anchors anchors: - [10,14, 23,27, 37,58] # P4/16 - [81,82, 135,169, 344,319] # P5/32 diff --git a/models/yolov3.yaml b/models/yolov3.yaml index f2e76135..3d041bb3 100644 --- a/models/yolov3.yaml +++ b/models/yolov3.yaml @@ -1,9 +1,9 @@ -# parameters +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters nc: 80 # number of classes depth_multiple: 1.0 # model depth multiple width_multiple: 1.0 # layer channel multiple - -# anchors anchors: - [10,13, 16,30, 33,23] # P3/8 - [30,61, 62,45, 59,119] # P4/16 diff --git a/requirements.txt b/requirements.txt index 1c07c651..22b51fc4 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,30 +1,36 @@ # pip install -r requirements.txt -# base ---------------------------------------- +# Base ---------------------------------------- matplotlib>=3.2.2 numpy>=1.18.5 opencv-python>=4.1.2 -Pillow +Pillow>=7.1.2 PyYAML>=5.3.1 +requests>=2.23.0 scipy>=1.4.1 torch>=1.7.0 torchvision>=0.8.1 tqdm>=4.41.0 -# logging ------------------------------------- +# Logging ------------------------------------- tensorboard>=2.4.1 # wandb -# plotting ------------------------------------ +# Plotting ------------------------------------ +pandas>=1.1.4 seaborn>=0.11.0 -pandas -# export -------------------------------------- -# coremltools>=4.1 -# onnx>=1.9.0 -# scikit-learn==0.19.2 # for coreml quantization +# Export -------------------------------------- +# coremltools>=4.1 # CoreML export +# onnx>=1.9.0 # ONNX export +# onnx-simplifier>=0.3.6 # ONNX simplifier +# scikit-learn==0.19.2 # CoreML quantization +# tensorflow>=2.4.1 # TFLite export +# tensorflowjs>=3.9.0 # TF.js export -# extras -------------------------------------- +# Extras -------------------------------------- +# albumentations>=1.0.3 # Cython # for pycocotools https://github.com/cocodataset/cocoapi/issues/172 -pycocotools>=2.0 # COCO mAP -thop # FLOPS computation +# pycocotools>=2.0 # COCO mAP +# roboflow +thop # FLOPs computation diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 00000000..4ca0f0d7 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,51 @@ +# Project-wide configuration file, can be used for package metadata and other toll configurations +# Example usage: global configuration for PEP8 (via flake8) setting or default pytest arguments + +[metadata] +license_file = LICENSE +description-file = README.md + + +[tool:pytest] +norecursedirs = + .git + dist + build +addopts = + --doctest-modules + --durations=25 + --color=yes + + +[flake8] +max-line-length = 120 +exclude = .tox,*.egg,build,temp +select = E,W,F +doctests = True +verbose = 2 +# https://pep8.readthedocs.io/en/latest/intro.html#error-codes +format = pylint +# see: https://www.flake8rules.com/ +ignore = + E731 # Do not assign a lambda expression, use a def + F405 + E402 + F841 + E741 + F821 + E722 + F401 + W504 + E127 + W504 + E231 + E501 + F403 + E302 + F541 + + +[isort] +# https://pycqa.github.io/isort/docs/configuration/options.html +line_length = 120 +multi_line_output = 0 diff --git a/test.py b/test.py deleted file mode 100644 index 396beef6..00000000 --- a/test.py +++ /dev/null @@ -1,349 +0,0 @@ -import argparse -import json -import os -from pathlib import Path -from threading import Thread - -import numpy as np -import torch -import yaml -from tqdm import tqdm - -from models.experimental import attempt_load -from utils.datasets import create_dataloader -from utils.general import coco80_to_coco91_class, check_dataset, check_file, check_img_size, check_requirements, \ - box_iou, non_max_suppression, scale_coords, xyxy2xywh, xywh2xyxy, set_logging, increment_path, colorstr -from utils.metrics import ap_per_class, ConfusionMatrix -from utils.plots import plot_images, output_to_target, plot_study_txt -from utils.torch_utils import select_device, time_synchronized - - -@torch.no_grad() -def test(data, - weights=None, - batch_size=32, - imgsz=640, - conf_thres=0.001, - iou_thres=0.6, # for NMS - save_json=False, - single_cls=False, - augment=False, - verbose=False, - model=None, - dataloader=None, - save_dir=Path(''), # for saving images - save_txt=False, # for auto-labelling - save_hybrid=False, # for hybrid auto-labelling - save_conf=False, # save auto-label confidences - plots=True, - wandb_logger=None, - compute_loss=None, - half_precision=True, - is_coco=False, - opt=None): - # Initialize/load model and set device - training = model is not None - if training: # called by train.py - device = next(model.parameters()).device # get model device - - else: # called directly - set_logging() - device = select_device(opt.device, batch_size=batch_size) - - # Directories - save_dir = increment_path(Path(opt.project) / opt.name, exist_ok=opt.exist_ok) # increment run - (save_dir / 'labels' if save_txt else save_dir).mkdir(parents=True, exist_ok=True) # make dir - - # Load model - model = attempt_load(weights, map_location=device) # load FP32 model - gs = max(int(model.stride.max()), 32) # grid size (max stride) - imgsz = check_img_size(imgsz, s=gs) # check img_size - - # Multi-GPU disabled, incompatible with .half() https://github.com/ultralytics/yolov5/issues/99 - # if device.type != 'cpu' and torch.cuda.device_count() > 1: - # model = nn.DataParallel(model) - - # Half - half = device.type != 'cpu' and half_precision # half precision only supported on CUDA - if half: - model.half() - - # Configure - model.eval() - if isinstance(data, str): - is_coco = data.endswith('coco.yaml') - with open(data) as f: - data = yaml.safe_load(f) - check_dataset(data) # check - nc = 1 if single_cls else int(data['nc']) # number of classes - iouv = torch.linspace(0.5, 0.95, 10).to(device) # iou vector for mAP@0.5:0.95 - niou = iouv.numel() - - # Logging - log_imgs = 0 - if wandb_logger and wandb_logger.wandb: - log_imgs = min(wandb_logger.log_imgs, 100) - # Dataloader - if not training: - if device.type != 'cpu': - model(torch.zeros(1, 3, imgsz, imgsz).to(device).type_as(next(model.parameters()))) # run once - task = opt.task if opt.task in ('train', 'val', 'test') else 'val' # path to train/val/test images - dataloader = create_dataloader(data[task], imgsz, batch_size, gs, opt, pad=0.5, rect=True, - prefix=colorstr(f'{task}: '))[0] - - seen = 0 - confusion_matrix = ConfusionMatrix(nc=nc) - names = {k: v for k, v in enumerate(model.names if hasattr(model, 'names') else model.module.names)} - coco91class = coco80_to_coco91_class() - s = ('%20s' + '%12s' * 6) % ('Class', 'Images', 'Labels', 'P', 'R', 'mAP@.5', 'mAP@.5:.95') - p, r, f1, mp, mr, map50, map, t0, t1 = 0., 0., 0., 0., 0., 0., 0., 0., 0. - loss = torch.zeros(3, device=device) - jdict, stats, ap, ap_class, wandb_images = [], [], [], [], [] - for batch_i, (img, targets, paths, shapes) in enumerate(tqdm(dataloader, desc=s)): - img = img.to(device, non_blocking=True) - img = img.half() if half else img.float() # uint8 to fp16/32 - img /= 255.0 # 0 - 255 to 0.0 - 1.0 - targets = targets.to(device) - nb, _, height, width = img.shape # batch size, channels, height, width - - # Run model - t = time_synchronized() - out, train_out = model(img, augment=augment) # inference and training outputs - t0 += time_synchronized() - t - - # Compute loss - if compute_loss: - loss += compute_loss([x.float() for x in train_out], targets)[1][:3] # box, obj, cls - - # Run NMS - targets[:, 2:] *= torch.Tensor([width, height, width, height]).to(device) # to pixels - lb = [targets[targets[:, 0] == i, 1:] for i in range(nb)] if save_hybrid else [] # for autolabelling - t = time_synchronized() - out = non_max_suppression(out, conf_thres, iou_thres, labels=lb, multi_label=True, agnostic=single_cls) - t1 += time_synchronized() - t - - # Statistics per image - for si, pred in enumerate(out): - labels = targets[targets[:, 0] == si, 1:] - nl = len(labels) - tcls = labels[:, 0].tolist() if nl else [] # target class - path = Path(paths[si]) - seen += 1 - - if len(pred) == 0: - if nl: - stats.append((torch.zeros(0, niou, dtype=torch.bool), torch.Tensor(), torch.Tensor(), tcls)) - continue - - # Predictions - if single_cls: - pred[:, 5] = 0 - predn = pred.clone() - scale_coords(img[si].shape[1:], predn[:, :4], shapes[si][0], shapes[si][1]) # native-space pred - - # Append to text file - if save_txt: - gn = torch.tensor(shapes[si][0])[[1, 0, 1, 0]] # normalization gain whwh - for *xyxy, conf, cls in predn.tolist(): - xywh = (xyxy2xywh(torch.tensor(xyxy).view(1, 4)) / gn).view(-1).tolist() # normalized xywh - line = (cls, *xywh, conf) if save_conf else (cls, *xywh) # label format - with open(save_dir / 'labels' / (path.stem + '.txt'), 'a') as f: - f.write(('%g ' * len(line)).rstrip() % line + '\n') - - # W&B logging - Media Panel Plots - if len(wandb_images) < log_imgs and wandb_logger.current_epoch > 0: # Check for test operation - if wandb_logger.current_epoch % wandb_logger.bbox_interval == 0: - box_data = [{"position": {"minX": xyxy[0], "minY": xyxy[1], "maxX": xyxy[2], "maxY": xyxy[3]}, - "class_id": int(cls), - "box_caption": "%s %.3f" % (names[cls], conf), - "scores": {"class_score": conf}, - "domain": "pixel"} for *xyxy, conf, cls in pred.tolist()] - boxes = {"predictions": {"box_data": box_data, "class_labels": names}} # inference-space - wandb_images.append(wandb_logger.wandb.Image(img[si], boxes=boxes, caption=path.name)) - wandb_logger.log_training_progress(predn, path, names) if wandb_logger and wandb_logger.wandb_run else None - - # Append to pycocotools JSON dictionary - if save_json: - # [{"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], "score": 0.236}, ... - image_id = int(path.stem) if path.stem.isnumeric() else path.stem - box = xyxy2xywh(predn[:, :4]) # xywh - box[:, :2] -= box[:, 2:] / 2 # xy center to top-left corner - for p, b in zip(pred.tolist(), box.tolist()): - jdict.append({'image_id': image_id, - 'category_id': coco91class[int(p[5])] if is_coco else int(p[5]), - 'bbox': [round(x, 3) for x in b], - 'score': round(p[4], 5)}) - - # Assign all predictions as incorrect - correct = torch.zeros(pred.shape[0], niou, dtype=torch.bool, device=device) - if nl: - detected = [] # target indices - tcls_tensor = labels[:, 0] - - # target boxes - tbox = xywh2xyxy(labels[:, 1:5]) - scale_coords(img[si].shape[1:], tbox, shapes[si][0], shapes[si][1]) # native-space labels - if plots: - confusion_matrix.process_batch(predn, torch.cat((labels[:, 0:1], tbox), 1)) - - # Per target class - for cls in torch.unique(tcls_tensor): - ti = (cls == tcls_tensor).nonzero(as_tuple=False).view(-1) # target indices - pi = (cls == pred[:, 5]).nonzero(as_tuple=False).view(-1) # prediction indices - - # Search for detections - if pi.shape[0]: - # Prediction to target ious - ious, i = box_iou(predn[pi, :4], tbox[ti]).max(1) # best ious, indices - - # Append detections - detected_set = set() - for j in (ious > iouv[0]).nonzero(as_tuple=False): - d = ti[i[j]] # detected target - if d.item() not in detected_set: - detected_set.add(d.item()) - detected.append(d) - correct[pi[j]] = ious[j] > iouv # iou_thres is 1xn - if len(detected) == nl: # all targets already located in image - break - - # Append statistics (correct, conf, pcls, tcls) - stats.append((correct.cpu(), pred[:, 4].cpu(), pred[:, 5].cpu(), tcls)) - - # Plot images - if plots and batch_i < 3: - f = save_dir / f'test_batch{batch_i}_labels.jpg' # labels - Thread(target=plot_images, args=(img, targets, paths, f, names), daemon=True).start() - f = save_dir / f'test_batch{batch_i}_pred.jpg' # predictions - Thread(target=plot_images, args=(img, output_to_target(out), paths, f, names), daemon=True).start() - - # Compute statistics - stats = [np.concatenate(x, 0) for x in zip(*stats)] # to numpy - if len(stats) and stats[0].any(): - p, r, ap, f1, ap_class = ap_per_class(*stats, plot=plots, save_dir=save_dir, names=names) - ap50, ap = ap[:, 0], ap.mean(1) # AP@0.5, AP@0.5:0.95 - mp, mr, map50, map = p.mean(), r.mean(), ap50.mean(), ap.mean() - nt = np.bincount(stats[3].astype(np.int64), minlength=nc) # number of targets per class - else: - nt = torch.zeros(1) - - # Print results - pf = '%20s' + '%12i' * 2 + '%12.3g' * 4 # print format - print(pf % ('all', seen, nt.sum(), mp, mr, map50, map)) - - # Print results per class - if (verbose or (nc < 50 and not training)) and nc > 1 and len(stats): - for i, c in enumerate(ap_class): - print(pf % (names[c], seen, nt[c], p[i], r[i], ap50[i], ap[i])) - - # Print speeds - t = tuple(x / seen * 1E3 for x in (t0, t1, t0 + t1)) + (imgsz, imgsz, batch_size) # tuple - if not training: - print('Speed: %.1f/%.1f/%.1f ms inference/NMS/total per %gx%g image at batch-size %g' % t) - - # Plots - if plots: - confusion_matrix.plot(save_dir=save_dir, names=list(names.values())) - if wandb_logger and wandb_logger.wandb: - val_batches = [wandb_logger.wandb.Image(str(f), caption=f.name) for f in sorted(save_dir.glob('test*.jpg'))] - wandb_logger.log({"Validation": val_batches}) - if wandb_images: - wandb_logger.log({"Bounding Box Debugger/Images": wandb_images}) - - # Save JSON - if save_json and len(jdict): - w = Path(weights[0] if isinstance(weights, list) else weights).stem if weights is not None else '' # weights - anno_json = '../coco/annotations/instances_val2017.json' # annotations json - pred_json = str(save_dir / f"{w}_predictions.json") # predictions json - print('\nEvaluating pycocotools mAP... saving %s...' % pred_json) - with open(pred_json, 'w') as f: - json.dump(jdict, f) - - try: # https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocoEvalDemo.ipynb - from pycocotools.coco import COCO - from pycocotools.cocoeval import COCOeval - - anno = COCO(anno_json) # init annotations api - pred = anno.loadRes(pred_json) # init predictions api - eval = COCOeval(anno, pred, 'bbox') - if is_coco: - eval.params.imgIds = [int(Path(x).stem) for x in dataloader.dataset.img_files] # image IDs to evaluate - eval.evaluate() - eval.accumulate() - eval.summarize() - map, map50 = eval.stats[:2] # update results (mAP@0.5:0.95, mAP@0.5) - except Exception as e: - print(f'pycocotools unable to run: {e}') - - # Return results - model.float() # for training - if not training: - s = f"\n{len(list(save_dir.glob('labels/*.txt')))} labels saved to {save_dir / 'labels'}" if save_txt else '' - print(f"Results saved to {save_dir}{s}") - maps = np.zeros(nc) + map - for i, c in enumerate(ap_class): - maps[c] = ap[i] - return (mp, mr, map50, map, *(loss.cpu() / len(dataloader)).tolist()), maps, t - - -if __name__ == '__main__': - parser = argparse.ArgumentParser(prog='test.py') - parser.add_argument('--weights', nargs='+', type=str, default='yolov3.pt', help='model.pt path(s)') - parser.add_argument('--data', type=str, default='data/coco128.yaml', help='*.data path') - parser.add_argument('--batch-size', type=int, default=32, help='size of each image batch') - parser.add_argument('--img-size', type=int, default=640, help='inference size (pixels)') - parser.add_argument('--conf-thres', type=float, default=0.001, help='object confidence threshold') - parser.add_argument('--iou-thres', type=float, default=0.6, help='IOU threshold for NMS') - parser.add_argument('--task', default='val', help='train, val, test, speed or study') - parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') - parser.add_argument('--single-cls', action='store_true', help='treat as single-class dataset') - parser.add_argument('--augment', action='store_true', help='augmented inference') - parser.add_argument('--verbose', action='store_true', help='report mAP by class') - parser.add_argument('--save-txt', action='store_true', help='save results to *.txt') - parser.add_argument('--save-hybrid', action='store_true', help='save label+prediction hybrid results to *.txt') - parser.add_argument('--save-conf', action='store_true', help='save confidences in --save-txt labels') - parser.add_argument('--save-json', action='store_true', help='save a cocoapi-compatible JSON results file') - parser.add_argument('--project', default='runs/test', help='save to project/name') - parser.add_argument('--name', default='exp', help='save to project/name') - parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment') - opt = parser.parse_args() - opt.save_json |= opt.data.endswith('coco.yaml') - opt.data = check_file(opt.data) # check file - print(opt) - check_requirements(exclude=('tensorboard', 'pycocotools', 'thop')) - - if opt.task in ('train', 'val', 'test'): # run normally - test(opt.data, - opt.weights, - opt.batch_size, - opt.img_size, - opt.conf_thres, - opt.iou_thres, - opt.save_json, - opt.single_cls, - opt.augment, - opt.verbose, - save_txt=opt.save_txt | opt.save_hybrid, - save_hybrid=opt.save_hybrid, - save_conf=opt.save_conf, - opt=opt - ) - - elif opt.task == 'speed': # speed benchmarks - for w in opt.weights: - test(opt.data, w, opt.batch_size, opt.img_size, 0.25, 0.45, save_json=False, plots=False, opt=opt) - - elif opt.task == 'study': # run over a range of settings and save/plot - # python test.py --task study --data coco.yaml --iou 0.7 --weights yolov3.pt yolov3-spp.pt yolov3-tiny.pt - x = list(range(256, 1536 + 128, 128)) # x axis (image sizes) - for w in opt.weights: - f = f'study_{Path(opt.data).stem}_{Path(w).stem}.txt' # filename to save to - y = [] # y axis - for i in x: # img-size - print(f'\nRunning {f} point {i}...') - r, _, t = test(opt.data, w, opt.batch_size, i, opt.conf_thres, opt.iou_thres, opt.save_json, - plots=False, opt=opt) - y.append(r + t) # results and times - np.savetxt(f, y, fmt='%10.4g') # save - os.system('zip -r study.zip study_*.txt') - plot_study_txt(x=x) # plot diff --git a/train.py b/train.py index 8f786609..9098b348 100644 --- a/train.py +++ b/train.py @@ -1,147 +1,178 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Train a model on a custom dataset + +Usage: + $ python path/to/train.py --data coco128.yaml --weights yolov3.pt --img 640 +""" import argparse -import logging import math import os import random +import sys import time from copy import deepcopy +from datetime import datetime from pathlib import Path -from threading import Thread import numpy as np +import torch import torch.distributed as dist import torch.nn as nn -import torch.nn.functional as F -import torch.optim as optim -import torch.optim.lr_scheduler as lr_scheduler -import torch.utils.data import yaml from torch.cuda import amp from torch.nn.parallel import DistributedDataParallel as DDP -from torch.utils.tensorboard import SummaryWriter +from torch.optim import SGD, Adam, lr_scheduler from tqdm import tqdm -import test # import test.py to get mAP after each epoch +FILE = Path(__file__).resolve() +ROOT = FILE.parents[0] # root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH +ROOT = Path(os.path.relpath(ROOT, Path.cwd())) # relative + +import val # for end-of-epoch mAP from models.experimental import attempt_load from models.yolo import Model from utils.autoanchor import check_anchors +from utils.autobatch import check_train_batch_size +from utils.callbacks import Callbacks from utils.datasets import create_dataloader -from utils.general import labels_to_class_weights, increment_path, labels_to_image_weights, init_seeds, \ - fitness, strip_optimizer, get_latest_run, check_dataset, check_file, check_git_status, check_img_size, \ - check_requirements, print_mutation, set_logging, one_cycle, colorstr -from utils.google_utils import attempt_download +from utils.downloads import attempt_download +from utils.general import (LOGGER, NCOLS, check_dataset, check_file, check_git_status, check_img_size, + check_requirements, check_suffix, check_yaml, colorstr, get_latest_run, increment_path, + init_seeds, intersect_dicts, labels_to_class_weights, labels_to_image_weights, methods, + one_cycle, print_args, print_mutation, strip_optimizer) +from utils.loggers import Loggers +from utils.loggers.wandb.wandb_utils import check_wandb_resume from utils.loss import ComputeLoss -from utils.plots import plot_images, plot_labels, plot_results, plot_evolution -from utils.torch_utils import ModelEMA, select_device, intersect_dicts, torch_distributed_zero_first, de_parallel -from utils.wandb_logging.wandb_utils import WandbLogger, check_wandb_resume +from utils.metrics import fitness +from utils.plots import plot_evolve, plot_labels +from utils.torch_utils import EarlyStopping, ModelEMA, de_parallel, select_device, torch_distributed_zero_first -logger = logging.getLogger(__name__) +LOCAL_RANK = int(os.getenv('LOCAL_RANK', -1)) # https://pytorch.org/docs/stable/elastic/run.html +RANK = int(os.getenv('RANK', -1)) +WORLD_SIZE = int(os.getenv('WORLD_SIZE', 1)) -def train(hyp, opt, device, tb_writer=None): - logger.info(colorstr('hyperparameters: ') + ', '.join(f'{k}={v}' for k, v in hyp.items())) - save_dir, epochs, batch_size, total_batch_size, weights, rank = \ - Path(opt.save_dir), opt.epochs, opt.batch_size, opt.total_batch_size, opt.weights, opt.global_rank +def train(hyp, # path/to/hyp.yaml or hyp dictionary + opt, + device, + callbacks + ): + save_dir, epochs, batch_size, weights, single_cls, evolve, data, cfg, resume, noval, nosave, workers, freeze, = \ + Path(opt.save_dir), opt.epochs, opt.batch_size, opt.weights, opt.single_cls, opt.evolve, opt.data, opt.cfg, \ + opt.resume, opt.noval, opt.nosave, opt.workers, opt.freeze # Directories - wdir = save_dir / 'weights' - wdir.mkdir(parents=True, exist_ok=True) # make dir - last = wdir / 'last.pt' - best = wdir / 'best.pt' - results_file = save_dir / 'results.txt' + w = save_dir / 'weights' # weights dir + (w.parent if evolve else w).mkdir(parents=True, exist_ok=True) # make dir + last, best = w / 'last.pt', w / 'best.pt' + + # Hyperparameters + if isinstance(hyp, str): + with open(hyp, errors='ignore') as f: + hyp = yaml.safe_load(f) # load hyps dict + LOGGER.info(colorstr('hyperparameters: ') + ', '.join(f'{k}={v}' for k, v in hyp.items())) # Save run settings with open(save_dir / 'hyp.yaml', 'w') as f: yaml.safe_dump(hyp, f, sort_keys=False) with open(save_dir / 'opt.yaml', 'w') as f: yaml.safe_dump(vars(opt), f, sort_keys=False) + data_dict = None - # Configure - plots = not opt.evolve # create plots + # Loggers + if RANK in [-1, 0]: + loggers = Loggers(save_dir, weights, opt, hyp, LOGGER) # loggers instance + if loggers.wandb: + data_dict = loggers.wandb.data_dict + if resume: + weights, epochs, hyp = opt.weights, opt.epochs, opt.hyp + + # Register actions + for k in methods(loggers): + callbacks.register_action(k, callback=getattr(loggers, k)) + + # Config + plots = not evolve # create plots cuda = device.type != 'cpu' - init_seeds(2 + rank) - with open(opt.data) as f: - data_dict = yaml.safe_load(f) # data dict - - # Logging- Doing this before checking the dataset. Might update data_dict - loggers = {'wandb': None} # loggers dict - if rank in [-1, 0]: - opt.hyp = hyp # add hyperparameters - run_id = torch.load(weights).get('wandb_id') if weights.endswith('.pt') and os.path.isfile(weights) else None - wandb_logger = WandbLogger(opt, save_dir.stem, run_id, data_dict) - loggers['wandb'] = wandb_logger.wandb - data_dict = wandb_logger.data_dict - if wandb_logger.wandb: - weights, epochs, hyp = opt.weights, opt.epochs, opt.hyp # WandbLogger might update weights, epochs if resuming - - nc = 1 if opt.single_cls else int(data_dict['nc']) # number of classes - names = ['item'] if opt.single_cls and len(data_dict['names']) != 1 else data_dict['names'] # class names - assert len(names) == nc, '%g names found for nc=%g dataset in %s' % (len(names), nc, opt.data) # check - is_coco = opt.data.endswith('coco.yaml') and nc == 80 # COCO dataset + init_seeds(1 + RANK) + with torch_distributed_zero_first(LOCAL_RANK): + data_dict = data_dict or check_dataset(data) # check if None + train_path, val_path = data_dict['train'], data_dict['val'] + nc = 1 if single_cls else int(data_dict['nc']) # number of classes + names = ['item'] if single_cls and len(data_dict['names']) != 1 else data_dict['names'] # class names + assert len(names) == nc, f'{len(names)} names found for nc={nc} dataset in {data}' # check + is_coco = isinstance(val_path, str) and val_path.endswith('coco/val2017.txt') # COCO dataset # Model + check_suffix(weights, '.pt') # check weights pretrained = weights.endswith('.pt') if pretrained: - with torch_distributed_zero_first(rank): + with torch_distributed_zero_first(LOCAL_RANK): weights = attempt_download(weights) # download if not found locally ckpt = torch.load(weights, map_location=device) # load checkpoint - model = Model(opt.cfg or ckpt['model'].yaml, ch=3, nc=nc, anchors=hyp.get('anchors')).to(device) # create - exclude = ['anchor'] if (opt.cfg or hyp.get('anchors')) and not opt.resume else [] # exclude keys - state_dict = ckpt['model'].float().state_dict() # to FP32 - state_dict = intersect_dicts(state_dict, model.state_dict(), exclude=exclude) # intersect - model.load_state_dict(state_dict, strict=False) # load - logger.info('Transferred %g/%g items from %s' % (len(state_dict), len(model.state_dict()), weights)) # report + model = Model(cfg or ckpt['model'].yaml, ch=3, nc=nc, anchors=hyp.get('anchors')).to(device) # create + exclude = ['anchor'] if (cfg or hyp.get('anchors')) and not resume else [] # exclude keys + csd = ckpt['model'].float().state_dict() # checkpoint state_dict as FP32 + csd = intersect_dicts(csd, model.state_dict(), exclude=exclude) # intersect + model.load_state_dict(csd, strict=False) # load + LOGGER.info(f'Transferred {len(csd)}/{len(model.state_dict())} items from {weights}') # report else: - model = Model(opt.cfg, ch=3, nc=nc, anchors=hyp.get('anchors')).to(device) # create - with torch_distributed_zero_first(rank): - check_dataset(data_dict) # check - train_path = data_dict['train'] - test_path = data_dict['val'] + model = Model(cfg, ch=3, nc=nc, anchors=hyp.get('anchors')).to(device) # create # Freeze - freeze = [] # parameter names to freeze (full or partial) + freeze = [f'model.{x}.' for x in range(freeze)] # layers to freeze for k, v in model.named_parameters(): v.requires_grad = True # train all layers if any(x in k for x in freeze): - print('freezing %s' % k) + LOGGER.info(f'freezing {k}') v.requires_grad = False + # Image size + gs = max(int(model.stride.max()), 32) # grid size (max stride) + imgsz = check_img_size(opt.imgsz, gs, floor=gs * 2) # verify imgsz is gs-multiple + + # Batch size + if RANK == -1 and batch_size == -1: # single-GPU only, estimate best batch size + batch_size = check_train_batch_size(model, imgsz) + # Optimizer nbs = 64 # nominal batch size - accumulate = max(round(nbs / total_batch_size), 1) # accumulate loss before optimizing - hyp['weight_decay'] *= total_batch_size * accumulate / nbs # scale weight_decay - logger.info(f"Scaled weight_decay = {hyp['weight_decay']}") + accumulate = max(round(nbs / batch_size), 1) # accumulate loss before optimizing + hyp['weight_decay'] *= batch_size * accumulate / nbs # scale weight_decay + LOGGER.info(f"Scaled weight_decay = {hyp['weight_decay']}") - pg0, pg1, pg2 = [], [], [] # optimizer parameter groups - for k, v in model.named_modules(): - if hasattr(v, 'bias') and isinstance(v.bias, nn.Parameter): - pg2.append(v.bias) # biases - if isinstance(v, nn.BatchNorm2d): - pg0.append(v.weight) # no decay - elif hasattr(v, 'weight') and isinstance(v.weight, nn.Parameter): - pg1.append(v.weight) # apply decay + g0, g1, g2 = [], [], [] # optimizer parameter groups + for v in model.modules(): + if hasattr(v, 'bias') and isinstance(v.bias, nn.Parameter): # bias + g2.append(v.bias) + if isinstance(v, nn.BatchNorm2d): # weight (no decay) + g0.append(v.weight) + elif hasattr(v, 'weight') and isinstance(v.weight, nn.Parameter): # weight (with decay) + g1.append(v.weight) if opt.adam: - optimizer = optim.Adam(pg0, lr=hyp['lr0'], betas=(hyp['momentum'], 0.999)) # adjust beta1 to momentum + optimizer = Adam(g0, lr=hyp['lr0'], betas=(hyp['momentum'], 0.999)) # adjust beta1 to momentum else: - optimizer = optim.SGD(pg0, lr=hyp['lr0'], momentum=hyp['momentum'], nesterov=True) + optimizer = SGD(g0, lr=hyp['lr0'], momentum=hyp['momentum'], nesterov=True) - optimizer.add_param_group({'params': pg1, 'weight_decay': hyp['weight_decay']}) # add pg1 with weight_decay - optimizer.add_param_group({'params': pg2}) # add pg2 (biases) - logger.info('Optimizer groups: %g .bias, %g conv.weight, %g other' % (len(pg2), len(pg1), len(pg0))) - del pg0, pg1, pg2 + optimizer.add_param_group({'params': g1, 'weight_decay': hyp['weight_decay']}) # add g1 with weight_decay + optimizer.add_param_group({'params': g2}) # add g2 (biases) + LOGGER.info(f"{colorstr('optimizer:')} {type(optimizer).__name__} with parameter groups " + f"{len(g0)} weight, {len(g1)} weight (no decay), {len(g2)} bias") + del g0, g1, g2 - # Scheduler https://arxiv.org/pdf/1812.01187.pdf - # https://pytorch.org/docs/stable/_modules/torch/optim/lr_scheduler.html#OneCycleLR + # Scheduler if opt.linear_lr: lf = lambda x: (1 - x / (epochs - 1)) * (1.0 - hyp['lrf']) + hyp['lrf'] # linear else: lf = one_cycle(1, hyp['lrf'], epochs) # cosine 1->hyp['lrf'] - scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf) - # plot_lr_scheduler(optimizer, scheduler, epochs) + scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf) # plot_lr_scheduler(optimizer, scheduler, epochs) # EMA - ema = ModelEMA(model) if rank in [-1, 0] else None + ema = ModelEMA(model) if RANK in [-1, 0] else None # Resume start_epoch, best_fitness = 0, 0.0 @@ -156,80 +187,70 @@ def train(hyp, opt, device, tb_writer=None): ema.ema.load_state_dict(ckpt['ema'].float().state_dict()) ema.updates = ckpt['updates'] - # Results - if ckpt.get('training_results') is not None: - results_file.write_text(ckpt['training_results']) # write results.txt - # Epochs start_epoch = ckpt['epoch'] + 1 - if opt.resume: - assert start_epoch > 0, '%s training to %g epochs is finished, nothing to resume.' % (weights, epochs) + if resume: + assert start_epoch > 0, f'{weights} training to {epochs} epochs is finished, nothing to resume.' if epochs < start_epoch: - logger.info('%s has been trained for %g epochs. Fine-tuning for %g additional epochs.' % - (weights, ckpt['epoch'], epochs)) + LOGGER.info(f"{weights} has been trained for {ckpt['epoch']} epochs. Fine-tuning for {epochs} more epochs.") epochs += ckpt['epoch'] # finetune additional epochs - del ckpt, state_dict - - # Image sizes - gs = max(int(model.stride.max()), 32) # grid size (max stride) - nl = model.model[-1].nl # number of detection layers (used for scaling hyp['obj']) - imgsz, imgsz_test = [check_img_size(x, gs) for x in opt.img_size] # verify imgsz are gs-multiples + del ckpt, csd # DP mode - if cuda and rank == -1 and torch.cuda.device_count() > 1: + if cuda and RANK == -1 and torch.cuda.device_count() > 1: + LOGGER.warning('WARNING: DP not recommended, use torch.distributed.run for best DDP Multi-GPU results.\n' + 'See Multi-GPU Tutorial at https://github.com/ultralytics/yolov5/issues/475 to get started.') model = torch.nn.DataParallel(model) # SyncBatchNorm - if opt.sync_bn and cuda and rank != -1: + if opt.sync_bn and cuda and RANK != -1: model = torch.nn.SyncBatchNorm.convert_sync_batchnorm(model).to(device) - logger.info('Using SyncBatchNorm()') + LOGGER.info('Using SyncBatchNorm()') # Trainloader - dataloader, dataset = create_dataloader(train_path, imgsz, batch_size, gs, opt, - hyp=hyp, augment=True, cache=opt.cache_images, rect=opt.rect, rank=rank, - world_size=opt.world_size, workers=opt.workers, - image_weights=opt.image_weights, quad=opt.quad, prefix=colorstr('train: ')) - mlc = np.concatenate(dataset.labels, 0)[:, 0].max() # max label class - nb = len(dataloader) # number of batches - assert mlc < nc, 'Label class %g exceeds nc=%g in %s. Possible class labels are 0-%g' % (mlc, nc, opt.data, nc - 1) + train_loader, dataset = create_dataloader(train_path, imgsz, batch_size // WORLD_SIZE, gs, single_cls, + hyp=hyp, augment=True, cache=opt.cache, rect=opt.rect, rank=LOCAL_RANK, + workers=workers, image_weights=opt.image_weights, quad=opt.quad, + prefix=colorstr('train: '), shuffle=True) + mlc = int(np.concatenate(dataset.labels, 0)[:, 0].max()) # max label class + nb = len(train_loader) # number of batches + assert mlc < nc, f'Label class {mlc} exceeds nc={nc} in {data}. Possible class labels are 0-{nc - 1}' # Process 0 - if rank in [-1, 0]: - testloader = create_dataloader(test_path, imgsz_test, batch_size * 2, gs, opt, # testloader - hyp=hyp, cache=opt.cache_images and not opt.notest, rect=True, rank=-1, - world_size=opt.world_size, workers=opt.workers, - pad=0.5, prefix=colorstr('val: '))[0] + if RANK in [-1, 0]: + val_loader = create_dataloader(val_path, imgsz, batch_size // WORLD_SIZE * 2, gs, single_cls, + hyp=hyp, cache=None if noval else opt.cache, rect=True, rank=-1, + workers=workers, pad=0.5, + prefix=colorstr('val: '))[0] - if not opt.resume: + if not resume: labels = np.concatenate(dataset.labels, 0) - c = torch.tensor(labels[:, 0]) # classes + # c = torch.tensor(labels[:, 0]) # classes # cf = torch.bincount(c.long(), minlength=nc) + 1. # frequency # model._initialize_biases(cf.to(device)) if plots: - plot_labels(labels, names, save_dir, loggers) - if tb_writer: - tb_writer.add_histogram('classes', c, 0) + plot_labels(labels, names, save_dir) # Anchors if not opt.noautoanchor: check_anchors(dataset, model=model, thr=hyp['anchor_t'], imgsz=imgsz) model.half().float() # pre-reduce anchor precision + callbacks.run('on_pretrain_routine_end') + # DDP mode - if cuda and rank != -1: - model = DDP(model, device_ids=[opt.local_rank], output_device=opt.local_rank, - # nn.MultiheadAttention incompatibility with DDP https://github.com/pytorch/pytorch/issues/26698 - find_unused_parameters=any(isinstance(layer, nn.MultiheadAttention) for layer in model.modules())) + if cuda and RANK != -1: + model = DDP(model, device_ids=[LOCAL_RANK], output_device=LOCAL_RANK) # Model parameters - hyp['box'] *= 3. / nl # scale to layers - hyp['cls'] *= nc / 80. * 3. / nl # scale to classes and layers - hyp['obj'] *= (imgsz / 640) ** 2 * 3. / nl # scale to image size and layers + nl = de_parallel(model).model[-1].nl # number of detection layers (to scale hyps) + hyp['box'] *= 3 / nl # scale to layers + hyp['cls'] *= nc / 80 * 3 / nl # scale to classes and layers + hyp['obj'] *= (imgsz / 640) ** 2 * 3 / nl # scale to image size and layers hyp['label_smoothing'] = opt.label_smoothing model.nc = nc # attach number of classes to model model.hyp = hyp # attach hyperparameters to model - model.gr = 1.0 # iou loss ratio (obj_loss = 1.0 or iou) model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) * nc # attach class weights model.names = names @@ -237,53 +258,47 @@ def train(hyp, opt, device, tb_writer=None): t0 = time.time() nw = max(round(hyp['warmup_epochs'] * nb), 1000) # number of warmup iterations, max(3 epochs, 1k iterations) # nw = min(nw, (epochs - start_epoch) / 2 * nb) # limit warmup to < 1/2 of training + last_opt_step = -1 maps = np.zeros(nc) # mAP per class results = (0, 0, 0, 0, 0, 0, 0) # P, R, mAP@.5, mAP@.5-.95, val_loss(box, obj, cls) scheduler.last_epoch = start_epoch - 1 # do not move scaler = amp.GradScaler(enabled=cuda) + stopper = EarlyStopping(patience=opt.patience) compute_loss = ComputeLoss(model) # init loss class - logger.info(f'Image sizes {imgsz} train, {imgsz_test} test\n' - f'Using {dataloader.num_workers} dataloader workers\n' - f'Logging results to {save_dir}\n' + LOGGER.info(f'Image sizes {imgsz} train, {imgsz} val\n' + f'Using {train_loader.num_workers * WORLD_SIZE} dataloader workers\n' + f"Logging results to {colorstr('bold', save_dir)}\n" f'Starting training for {epochs} epochs...') for epoch in range(start_epoch, epochs): # epoch ------------------------------------------------------------------ model.train() - # Update image weights (optional) + # Update image weights (optional, single-GPU only) if opt.image_weights: - # Generate indices - if rank in [-1, 0]: - cw = model.class_weights.cpu().numpy() * (1 - maps) ** 2 / nc # class weights - iw = labels_to_image_weights(dataset.labels, nc=nc, class_weights=cw) # image weights - dataset.indices = random.choices(range(dataset.n), weights=iw, k=dataset.n) # rand weighted idx - # Broadcast if DDP - if rank != -1: - indices = (torch.tensor(dataset.indices) if rank == 0 else torch.zeros(dataset.n)).int() - dist.broadcast(indices, 0) - if rank != 0: - dataset.indices = indices.cpu().numpy() + cw = model.class_weights.cpu().numpy() * (1 - maps) ** 2 / nc # class weights + iw = labels_to_image_weights(dataset.labels, nc=nc, class_weights=cw) # image weights + dataset.indices = random.choices(range(dataset.n), weights=iw, k=dataset.n) # rand weighted idx - # Update mosaic border + # Update mosaic border (optional) # b = int(random.uniform(0.25 * imgsz, 0.75 * imgsz + gs) // gs * gs) # dataset.mosaic_border = [b - imgsz, -b] # height, width borders - mloss = torch.zeros(4, device=device) # mean losses - if rank != -1: - dataloader.sampler.set_epoch(epoch) - pbar = enumerate(dataloader) - logger.info(('\n' + '%10s' * 8) % ('Epoch', 'gpu_mem', 'box', 'obj', 'cls', 'total', 'labels', 'img_size')) - if rank in [-1, 0]: - pbar = tqdm(pbar, total=nb) # progress bar + mloss = torch.zeros(3, device=device) # mean losses + if RANK != -1: + train_loader.sampler.set_epoch(epoch) + pbar = enumerate(train_loader) + LOGGER.info(('\n' + '%10s' * 7) % ('Epoch', 'gpu_mem', 'box', 'obj', 'cls', 'labels', 'img_size')) + if RANK in [-1, 0]: + pbar = tqdm(pbar, total=nb, ncols=NCOLS, bar_format='{l_bar}{bar:10}{r_bar}{bar:-10b}') # progress bar optimizer.zero_grad() for i, (imgs, targets, paths, _) in pbar: # batch ------------------------------------------------------------- ni = i + nb * epoch # number integrated batches (since train start) - imgs = imgs.to(device, non_blocking=True).float() / 255.0 # uint8 to float32, 0-255 to 0.0-1.0 + imgs = imgs.to(device, non_blocking=True).float() / 255 # uint8 to float32, 0-255 to 0.0-1.0 # Warmup if ni <= nw: xi = [0, nw] # x interp - # model.gr = np.interp(ni, xi, [0.0, 1.0]) # iou loss ratio (obj_loss = 1.0 or iou) - accumulate = max(1, np.interp(ni, xi, [1, nbs / total_batch_size]).round()) + # compute_loss.gr = np.interp(ni, xi, [0.0, 1.0]) # iou loss ratio (obj_loss = 1.0 or iou) + accumulate = max(1, np.interp(ni, xi, [1, nbs / batch_size]).round()) for j, x in enumerate(optimizer.param_groups): # bias lr falls from 0.1 to lr0, all other lrs rise from 0.0 to lr0 x['lr'] = np.interp(ni, xi, [hyp['warmup_bias_lr'] if j == 2 else 0.0, x['initial_lr'] * lf(epoch)]) @@ -296,14 +311,14 @@ def train(hyp, opt, device, tb_writer=None): sf = sz / max(imgs.shape[2:]) # scale factor if sf != 1: ns = [math.ceil(x * sf / gs) * gs for x in imgs.shape[2:]] # new shape (stretched to gs-multiple) - imgs = F.interpolate(imgs, size=ns, mode='bilinear', align_corners=False) + imgs = nn.functional.interpolate(imgs, size=ns, mode='bilinear', align_corners=False) # Forward with amp.autocast(enabled=cuda): pred = model(imgs) # forward loss, loss_items = compute_loss(pred, targets.to(device)) # loss scaled by batch_size - if rank != -1: - loss *= opt.world_size # gradient averaged between devices in DDP mode + if RANK != -1: + loss *= WORLD_SIZE # gradient averaged between devices in DDP mode if opt.quad: loss *= 4. @@ -311,234 +326,203 @@ def train(hyp, opt, device, tb_writer=None): scaler.scale(loss).backward() # Optimize - if ni % accumulate == 0: + if ni - last_opt_step >= accumulate: scaler.step(optimizer) # optimizer.step scaler.update() optimizer.zero_grad() if ema: ema.update(model) - - # Print - if rank in [-1, 0]: - mloss = (mloss * i + loss_items) / (i + 1) # update mean losses - mem = '%.3gG' % (torch.cuda.memory_reserved() / 1E9 if torch.cuda.is_available() else 0) # (GB) - s = ('%10s' * 2 + '%10.4g' * 6) % ( - '%g/%g' % (epoch, epochs - 1), mem, *mloss, targets.shape[0], imgs.shape[-1]) - pbar.set_description(s) - - # Plot - if plots and ni < 3: - f = save_dir / f'train_batch{ni}.jpg' # filename - Thread(target=plot_images, args=(imgs, targets, paths, f), daemon=True).start() - if tb_writer: - tb_writer.add_graph(torch.jit.trace(de_parallel(model), imgs, strict=False), []) # model graph - # tb_writer.add_image(f, result, dataformats='HWC', global_step=epoch) - elif plots and ni == 10 and wandb_logger.wandb: - wandb_logger.log({"Mosaics": [wandb_logger.wandb.Image(str(x), caption=x.name) for x in - save_dir.glob('train*.jpg') if x.exists()]}) - - # end batch ------------------------------------------------------------------------------------------------ - # end epoch ---------------------------------------------------------------------------------------------------- - - # Scheduler - lr = [x['lr'] for x in optimizer.param_groups] # for tensorboard - scheduler.step() - - # DDP process 0 or single-GPU - if rank in [-1, 0]: - # mAP - ema.update_attr(model, include=['yaml', 'nc', 'hyp', 'gr', 'names', 'stride', 'class_weights']) - final_epoch = epoch + 1 == epochs - if not opt.notest or final_epoch: # Calculate mAP - wandb_logger.current_epoch = epoch + 1 - results, maps, times = test.test(data_dict, - batch_size=batch_size * 2, - imgsz=imgsz_test, - model=ema.ema, - single_cls=opt.single_cls, - dataloader=testloader, - save_dir=save_dir, - save_json=is_coco and final_epoch, - verbose=nc < 50 and final_epoch, - plots=plots and final_epoch, - wandb_logger=wandb_logger, - compute_loss=compute_loss, - is_coco=is_coco) - - # Write - with open(results_file, 'a') as f: - f.write(s + '%10.4g' * 7 % results + '\n') # append metrics, val_loss + last_opt_step = ni # Log - tags = ['train/box_loss', 'train/obj_loss', 'train/cls_loss', # train loss - 'metrics/precision', 'metrics/recall', 'metrics/mAP_0.5', 'metrics/mAP_0.5:0.95', - 'val/box_loss', 'val/obj_loss', 'val/cls_loss', # val loss - 'x/lr0', 'x/lr1', 'x/lr2'] # params - for x, tag in zip(list(mloss[:-1]) + list(results) + lr, tags): - if tb_writer: - tb_writer.add_scalar(tag, x, epoch) # tensorboard - if wandb_logger.wandb: - wandb_logger.log({tag: x}) # W&B + if RANK in [-1, 0]: + mloss = (mloss * i + loss_items) / (i + 1) # update mean losses + mem = f'{torch.cuda.memory_reserved() / 1E9 if torch.cuda.is_available() else 0:.3g}G' # (GB) + pbar.set_description(('%10s' * 2 + '%10.4g' * 5) % ( + f'{epoch}/{epochs - 1}', mem, *mloss, targets.shape[0], imgs.shape[-1])) + callbacks.run('on_train_batch_end', ni, model, imgs, targets, paths, plots, opt.sync_bn) + # end batch ------------------------------------------------------------------------------------------------ + + # Scheduler + lr = [x['lr'] for x in optimizer.param_groups] # for loggers + scheduler.step() + + if RANK in [-1, 0]: + # mAP + callbacks.run('on_train_epoch_end', epoch=epoch) + ema.update_attr(model, include=['yaml', 'nc', 'hyp', 'names', 'stride', 'class_weights']) + final_epoch = (epoch + 1 == epochs) or stopper.possible_stop + if not noval or final_epoch: # Calculate mAP + results, maps, _ = val.run(data_dict, + batch_size=batch_size // WORLD_SIZE * 2, + imgsz=imgsz, + model=ema.ema, + single_cls=single_cls, + dataloader=val_loader, + save_dir=save_dir, + plots=False, + callbacks=callbacks, + compute_loss=compute_loss) # Update best mAP fi = fitness(np.array(results).reshape(1, -1)) # weighted combination of [P, R, mAP@.5, mAP@.5-.95] if fi > best_fitness: best_fitness = fi - wandb_logger.end_epoch(best_result=best_fitness == fi) + log_vals = list(mloss) + list(results) + lr + callbacks.run('on_fit_epoch_end', log_vals, epoch, best_fitness, fi) # Save model - if (not opt.nosave) or (final_epoch and not opt.evolve): # if save + if (not nosave) or (final_epoch and not evolve): # if save ckpt = {'epoch': epoch, 'best_fitness': best_fitness, - 'training_results': results_file.read_text(), 'model': deepcopy(de_parallel(model)).half(), 'ema': deepcopy(ema.ema).half(), 'updates': ema.updates, 'optimizer': optimizer.state_dict(), - 'wandb_id': wandb_logger.wandb_run.id if wandb_logger.wandb else None} + 'wandb_id': loggers.wandb.wandb_run.id if loggers.wandb else None, + 'date': datetime.now().isoformat()} # Save last, best and delete torch.save(ckpt, last) if best_fitness == fi: torch.save(ckpt, best) - if wandb_logger.wandb: - if ((epoch + 1) % opt.save_period == 0 and not final_epoch) and opt.save_period != -1: - wandb_logger.log_model( - last.parent, opt, epoch, fi, best_model=best_fitness == fi) + if (epoch > 0) and (opt.save_period > 0) and (epoch % opt.save_period == 0): + torch.save(ckpt, w / f'epoch{epoch}.pt') del ckpt + callbacks.run('on_model_save', last, epoch, final_epoch, best_fitness, fi) + + # Stop Single-GPU + if RANK == -1 and stopper(epoch=epoch, fitness=fi): + break + + # Stop DDP TODO: known issues shttps://github.com/ultralytics/yolov5/pull/4576 + # stop = stopper(epoch=epoch, fitness=fi) + # if RANK == 0: + # dist.broadcast_object_list([stop], 0) # broadcast 'stop' to all ranks + + # Stop DPP + # with torch_distributed_zero_first(RANK): + # if stop: + # break # must break all DDP ranks # end epoch ---------------------------------------------------------------------------------------------------- - # end training - if rank in [-1, 0]: - logger.info(f'{epoch - start_epoch + 1} epochs completed in {(time.time() - t0) / 3600:.3f} hours.\n') - if plots: - plot_results(save_dir=save_dir) # save as results.png - if wandb_logger.wandb: - files = ['results.png', 'confusion_matrix.png', *[f'{x}_curve.png' for x in ('F1', 'PR', 'P', 'R')]] - wandb_logger.log({"Results": [wandb_logger.wandb.Image(str(save_dir / f), caption=f) for f in files - if (save_dir / f).exists()]}) + # end training ----------------------------------------------------------------------------------------------------- + if RANK in [-1, 0]: + LOGGER.info(f'\n{epoch - start_epoch + 1} epochs completed in {(time.time() - t0) / 3600:.3f} hours.') + for f in last, best: + if f.exists(): + strip_optimizer(f) # strip optimizers + if f is best: + LOGGER.info(f'\nValidating {f}...') + results, _, _ = val.run(data_dict, + batch_size=batch_size // WORLD_SIZE * 2, + imgsz=imgsz, + model=attempt_load(f, device).half(), + iou_thres=0.65 if is_coco else 0.60, # best pycocotools results at 0.65 + single_cls=single_cls, + dataloader=val_loader, + save_dir=save_dir, + save_json=is_coco, + verbose=True, + plots=True, + callbacks=callbacks, + compute_loss=compute_loss) # val best model with plots + if is_coco: + callbacks.run('on_fit_epoch_end', list(mloss) + list(results) + lr, epoch, best_fitness, fi) - if not opt.evolve: - if is_coco: # COCO dataset - for m in [last, best] if best.exists() else [last]: # speed, mAP tests - results, _, _ = test.test(opt.data, - batch_size=batch_size * 2, - imgsz=imgsz_test, - conf_thres=0.001, - iou_thres=0.7, - model=attempt_load(m, device).half(), - single_cls=opt.single_cls, - dataloader=testloader, - save_dir=save_dir, - save_json=True, - plots=False, - is_coco=is_coco) + callbacks.run('on_train_end', last, best, plots, epoch, results) + LOGGER.info(f"Results saved to {colorstr('bold', save_dir)}") - # Strip optimizers - for f in last, best: - if f.exists(): - strip_optimizer(f) # strip optimizers - if wandb_logger.wandb: # Log the stripped model - wandb_logger.wandb.log_artifact(str(best if best.exists() else last), type='model', - name='run_' + wandb_logger.wandb_run.id + '_model', - aliases=['latest', 'best', 'stripped']) - wandb_logger.finish_run() - else: - dist.destroy_process_group() torch.cuda.empty_cache() return results -if __name__ == '__main__': +def parse_opt(known=False): parser = argparse.ArgumentParser() - parser.add_argument('--weights', type=str, default='yolov3.pt', help='initial weights path') + parser.add_argument('--weights', type=str, default=ROOT / 'yolov3.pt', help='initial weights path') parser.add_argument('--cfg', type=str, default='', help='model.yaml path') - parser.add_argument('--data', type=str, default='data/coco128.yaml', help='data.yaml path') - parser.add_argument('--hyp', type=str, default='data/hyp.scratch.yaml', help='hyperparameters path') + parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='dataset.yaml path') + parser.add_argument('--hyp', type=str, default=ROOT / 'data/hyps/hyp.scratch.yaml', help='hyperparameters path') parser.add_argument('--epochs', type=int, default=300) - parser.add_argument('--batch-size', type=int, default=16, help='total batch size for all GPUs') - parser.add_argument('--img-size', nargs='+', type=int, default=[640, 640], help='[train, test] image sizes') + parser.add_argument('--batch-size', type=int, default=16, help='total batch size for all GPUs, -1 for autobatch') + parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=640, help='train, val image size (pixels)') parser.add_argument('--rect', action='store_true', help='rectangular training') parser.add_argument('--resume', nargs='?', const=True, default=False, help='resume most recent training') parser.add_argument('--nosave', action='store_true', help='only save final checkpoint') - parser.add_argument('--notest', action='store_true', help='only test final epoch') + parser.add_argument('--noval', action='store_true', help='only validate final epoch') parser.add_argument('--noautoanchor', action='store_true', help='disable autoanchor check') - parser.add_argument('--evolve', action='store_true', help='evolve hyperparameters') + parser.add_argument('--evolve', type=int, nargs='?', const=300, help='evolve hyperparameters for x generations') parser.add_argument('--bucket', type=str, default='', help='gsutil bucket') - parser.add_argument('--cache-images', action='store_true', help='cache images for faster training') + parser.add_argument('--cache', type=str, nargs='?', const='ram', help='--cache images in "ram" (default) or "disk"') parser.add_argument('--image-weights', action='store_true', help='use weighted image selection for training') parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') parser.add_argument('--multi-scale', action='store_true', help='vary img-size +/- 50%%') parser.add_argument('--single-cls', action='store_true', help='train multi-class data as single-class') parser.add_argument('--adam', action='store_true', help='use torch.optim.Adam() optimizer') parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode') - parser.add_argument('--local_rank', type=int, default=-1, help='DDP parameter, do not modify') - parser.add_argument('--workers', type=int, default=8, help='maximum number of dataloader workers') - parser.add_argument('--project', default='runs/train', help='save to project/name') - parser.add_argument('--entity', default=None, help='W&B entity') + parser.add_argument('--workers', type=int, default=8, help='max dataloader workers (per RANK in DDP mode)') + parser.add_argument('--project', default=ROOT / 'runs/train', help='save to project/name') parser.add_argument('--name', default='exp', help='save to project/name') parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment') parser.add_argument('--quad', action='store_true', help='quad dataloader') parser.add_argument('--linear-lr', action='store_true', help='linear LR') parser.add_argument('--label-smoothing', type=float, default=0.0, help='Label smoothing epsilon') - parser.add_argument('--upload_dataset', action='store_true', help='Upload dataset as W&B artifact table') - parser.add_argument('--bbox_interval', type=int, default=-1, help='Set bounding-box image logging interval for W&B') - parser.add_argument('--save_period', type=int, default=-1, help='Log model after every "save_period" epoch') - parser.add_argument('--artifact_alias', type=str, default="latest", help='version of dataset artifact to be used') - opt = parser.parse_args() + parser.add_argument('--patience', type=int, default=100, help='EarlyStopping patience (epochs without improvement)') + parser.add_argument('--freeze', type=int, default=0, help='Number of layers to freeze. backbone=10, all=24') + parser.add_argument('--save-period', type=int, default=-1, help='Save checkpoint every x epochs (disabled if < 1)') + parser.add_argument('--local_rank', type=int, default=-1, help='DDP parameter, do not modify') - # Set DDP variables - opt.world_size = int(os.environ['WORLD_SIZE']) if 'WORLD_SIZE' in os.environ else 1 - opt.global_rank = int(os.environ['RANK']) if 'RANK' in os.environ else -1 - set_logging(opt.global_rank) - if opt.global_rank in [-1, 0]: + # Weights & Biases arguments + parser.add_argument('--entity', default=None, help='W&B: Entity') + parser.add_argument('--upload_dataset', action='store_true', help='W&B: Upload dataset as artifact table') + parser.add_argument('--bbox_interval', type=int, default=-1, help='W&B: Set bounding-box image logging interval') + parser.add_argument('--artifact_alias', type=str, default='latest', help='W&B: Version of dataset artifact to use') + + opt = parser.parse_known_args()[0] if known else parser.parse_args() + return opt + + +def main(opt, callbacks=Callbacks()): + # Checks + if RANK in [-1, 0]: + print_args(FILE.stem, opt) check_git_status() - check_requirements(exclude=('pycocotools', 'thop')) + check_requirements(exclude=['thop']) # Resume - wandb_run = check_wandb_resume(opt) - if opt.resume and not wandb_run: # resume an interrupted run + if opt.resume and not check_wandb_resume(opt) and not opt.evolve: # resume an interrupted run ckpt = opt.resume if isinstance(opt.resume, str) else get_latest_run() # specified or most recent path assert os.path.isfile(ckpt), 'ERROR: --resume checkpoint does not exist' - apriori = opt.global_rank, opt.local_rank - with open(Path(ckpt).parent.parent / 'opt.yaml') as f: + with open(Path(ckpt).parent.parent / 'opt.yaml', errors='ignore') as f: opt = argparse.Namespace(**yaml.safe_load(f)) # replace - opt.cfg, opt.weights, opt.resume, opt.batch_size, opt.global_rank, opt.local_rank = \ - '', ckpt, True, opt.total_batch_size, *apriori # reinstate - logger.info('Resuming training from %s' % ckpt) + opt.cfg, opt.weights, opt.resume = '', ckpt, True # reinstate + LOGGER.info(f'Resuming training from {ckpt}') else: - # opt.hyp = opt.hyp or ('hyp.finetune.yaml' if opt.weights else 'hyp.scratch.yaml') - opt.data, opt.cfg, opt.hyp = check_file(opt.data), check_file(opt.cfg), check_file(opt.hyp) # check files + opt.data, opt.cfg, opt.hyp, opt.weights, opt.project = \ + check_file(opt.data), check_yaml(opt.cfg), check_yaml(opt.hyp), str(opt.weights), str(opt.project) # checks assert len(opt.cfg) or len(opt.weights), 'either --cfg or --weights must be specified' - opt.img_size.extend([opt.img_size[-1]] * (2 - len(opt.img_size))) # extend to 2 sizes (train, test) - opt.name = 'evolve' if opt.evolve else opt.name - opt.save_dir = str(increment_path(Path(opt.project) / opt.name, exist_ok=opt.exist_ok | opt.evolve)) + if opt.evolve: + opt.project = str(ROOT / 'runs/evolve') + opt.exist_ok, opt.resume = opt.resume, False # pass resume to exist_ok and disable resume + opt.save_dir = str(increment_path(Path(opt.project) / opt.name, exist_ok=opt.exist_ok)) # DDP mode - opt.total_batch_size = opt.batch_size device = select_device(opt.device, batch_size=opt.batch_size) - if opt.local_rank != -1: - assert torch.cuda.device_count() > opt.local_rank - torch.cuda.set_device(opt.local_rank) - device = torch.device('cuda', opt.local_rank) - dist.init_process_group(backend='nccl', init_method='env://') # distributed backend - assert opt.batch_size % opt.world_size == 0, '--batch-size must be multiple of CUDA device count' + if LOCAL_RANK != -1: + assert torch.cuda.device_count() > LOCAL_RANK, 'insufficient CUDA devices for DDP command' + assert opt.batch_size % WORLD_SIZE == 0, '--batch-size must be multiple of CUDA device count' assert not opt.image_weights, '--image-weights argument is not compatible with DDP training' - opt.batch_size = opt.total_batch_size // opt.world_size - - # Hyperparameters - with open(opt.hyp) as f: - hyp = yaml.safe_load(f) # load hyps + assert not opt.evolve, '--evolve argument is not compatible with DDP training' + torch.cuda.set_device(LOCAL_RANK) + device = torch.device('cuda', LOCAL_RANK) + dist.init_process_group(backend="nccl" if dist.is_nccl_available() else "gloo") # Train - logger.info(opt) if not opt.evolve: - tb_writer = None # init loggers - if opt.global_rank in [-1, 0]: - prefix = colorstr('tensorboard: ') - logger.info(f"{prefix}Start with 'tensorboard --logdir {opt.project}', view at http://localhost:6006/") - tb_writer = SummaryWriter(opt.save_dir) # Tensorboard - train(hyp, opt, device, tb_writer) + train(opt.hyp, opt, device, callbacks) + if WORLD_SIZE > 1 and RANK == 0: + LOGGER.info('Destroying process group... ') + dist.destroy_process_group() # Evolve hyperparameters (optional) else: @@ -570,23 +554,27 @@ if __name__ == '__main__': 'flipud': (1, 0.0, 1.0), # image flip up-down (probability) 'fliplr': (0, 0.0, 1.0), # image flip left-right (probability) 'mosaic': (1, 0.0, 1.0), # image mixup (probability) - 'mixup': (1, 0.0, 1.0)} # image mixup (probability) + 'mixup': (1, 0.0, 1.0), # image mixup (probability) + 'copy_paste': (1, 0.0, 1.0)} # segment copy-paste (probability) - assert opt.local_rank == -1, 'DDP mode not implemented for --evolve' - opt.notest, opt.nosave = True, True # only test/save final epoch + with open(opt.hyp, errors='ignore') as f: + hyp = yaml.safe_load(f) # load hyps dict + if 'anchors' not in hyp: # anchors commented in hyp.yaml + hyp['anchors'] = 3 + opt.noval, opt.nosave, save_dir = True, True, Path(opt.save_dir) # only val/save final epoch # ei = [isinstance(x, (int, float)) for x in hyp.values()] # evolvable indices - yaml_file = Path(opt.save_dir) / 'hyp_evolved.yaml' # save best result here + evolve_yaml, evolve_csv = save_dir / 'hyp_evolve.yaml', save_dir / 'evolve.csv' if opt.bucket: - os.system('gsutil cp gs://%s/evolve.txt .' % opt.bucket) # download evolve.txt if exists + os.system(f'gsutil cp gs://{opt.bucket}/evolve.csv {save_dir}') # download evolve.csv if exists - for _ in range(300): # generations to evolve - if Path('evolve.txt').exists(): # if evolve.txt exists: select best hyps and mutate + for _ in range(opt.evolve): # generations to evolve + if evolve_csv.exists(): # if evolve.csv exists: select best hyps and mutate # Select parent(s) parent = 'single' # parent selection method: 'single' or 'weighted' - x = np.loadtxt('evolve.txt', ndmin=2) + x = np.loadtxt(evolve_csv, ndmin=2, delimiter=',', skiprows=1) n = min(5, len(x)) # number of previous results to consider x = x[np.argsort(-fitness(x))][:n] # top n mutations - w = fitness(x) - fitness(x).min() # weights + w = fitness(x) - fitness(x).min() + 1E-6 # weights (sum > 0) if parent == 'single' or len(x) == 1: # x = x[random.randint(0, n - 1)] # random selection x = x[random.choices(range(n), weights=w)[0]] # weighted selection @@ -597,7 +585,7 @@ if __name__ == '__main__': mp, s = 0.8, 0.2 # mutation probability, sigma npr = np.random npr.seed(int(time.time())) - g = np.array([x[0] for x in meta.values()]) # gains 0-1 + g = np.array([meta[k][0] for k in hyp.keys()]) # gains 0-1 ng = len(meta) v = np.ones(ng) while all(v == 1): # mutate until a change occurs (prevent duplicates) @@ -612,12 +600,26 @@ if __name__ == '__main__': hyp[k] = round(hyp[k], 5) # significant digits # Train mutation - results = train(hyp.copy(), opt, device) + results = train(hyp.copy(), opt, device, callbacks) # Write mutation results - print_mutation(hyp.copy(), results, yaml_file, opt.bucket) + print_mutation(results, hyp.copy(), save_dir, opt.bucket) # Plot results - plot_evolution(yaml_file) - print(f'Hyperparameter evolution complete. Best results saved as: {yaml_file}\n' - f'Command to train a new model with these hyperparameters: $ python train.py --hyp {yaml_file}') + plot_evolve(evolve_csv) + LOGGER.info(f'Hyperparameter evolution finished\n' + f"Results saved to {colorstr('bold', save_dir)}\n" + f'Use best hyperparameters example: $ python train.py --hyp {evolve_yaml}') + + +def run(**kwargs): + # Usage: import train; train.run(data='coco128.yaml', imgsz=320, weights='yolov3.pt') + opt = parse_opt(True) + for k, v in kwargs.items(): + setattr(opt, k, v) + main(opt) + + +if __name__ == "__main__": + opt = parse_opt() + main(opt) diff --git a/tutorial.ipynb b/tutorial.ipynb index 617c5c52..828e434f 100644 --- a/tutorial.ipynb +++ b/tutorial.ipynb @@ -6,7 +6,6 @@ "name": "YOLOv3 Tutorial", "provenance": [], "collapsed_sections": [], - "toc_visible": true, "include_colab_link": true }, "kernelspec": { @@ -16,9 +15,10 @@ "accelerator": "GPU", "widgets": { "application/vnd.jupyter.widget-state+json": { - "355d9ee3dfc4487ebcae3b66ddbedce1": { + "eeda9d6850e8406f9bbc5b06051b3710": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", + "model_module_version": "1.5.0", "state": { "_view_name": "HBoxView", "_dom_classes": [], @@ -28,17 +28,19 @@ "_view_count": null, "_view_module_version": "1.5.0", "box_style": "", - "layout": "IPY_MODEL_8209acd3185441e7b263eead5e8babdf", + "layout": "IPY_MODEL_1e823c45174a4216be7234a6cc5cfd99", "_model_module": "@jupyter-widgets/controls", "children": [ - "IPY_MODEL_b81d30356f7048b0abcba35bde811526", - "IPY_MODEL_7fcbf6b56f2e4b6dbf84e48465c96633" + "IPY_MODEL_cd8efd6c5de94ea8848a7d5b8766a4d6", + "IPY_MODEL_a4ec69c4697c4b0e84e6193be227f63e", + "IPY_MODEL_9a5694c133be46df8d2fe809b77c1c35" ] } }, - "8209acd3185441e7b263eead5e8babdf": { + "1e823c45174a4216be7234a6cc5cfd99": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", + "model_module_version": "1.2.0", "state": { "_view_name": "LayoutView", "grid_template_rows": null, @@ -87,118 +89,76 @@ "left": null } }, - "b81d30356f7048b0abcba35bde811526": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_6ee48f9f3af444a7b02ec2f074dec1f8", - "_dom_classes": [], - "description": "100%", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 819257867, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 819257867, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_b7d819ed5f2f4e39a75a823792ab7249" - } - }, - "7fcbf6b56f2e4b6dbf84e48465c96633": { + "cd8efd6c5de94ea8848a7d5b8766a4d6": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", + "model_module_version": "1.5.0", "state": { "_view_name": "HTMLView", - "style": "IPY_MODEL_3af216dd7d024739b8168995800ed8be", + "style": "IPY_MODEL_d584167143f84a0484006dded3fd2620", "_dom_classes": [], "description": "", "_model_name": "HTMLModel", "placeholder": "​", "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", - "value": " 781M/781M [00:11<00:00, 71.1MB/s]", + "value": "100%", "_view_count": null, "_view_module_version": "1.5.0", "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_763141d8de8a498a92ffa66aafed0c5a" + "layout": "IPY_MODEL_b9a25c0d425c4fe4b8cd51ae6a301b0d" } }, - "6ee48f9f3af444a7b02ec2f074dec1f8": { + "a4ec69c4697c4b0e84e6193be227f63e": { "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "initial", - "_view_module": "@jupyter-widgets/base", + "_view_name": "ProgressView", + "style": "IPY_MODEL_654525fe1ed34d5fbe1c36ed80ae1c1c", + "_dom_classes": [], + "description": "", + "_model_name": "FloatProgressModel", + "bar_style": "success", + "max": 818322941, + "_view_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", + "value": 818322941, "_view_count": null, - "_view_module_version": "1.2.0", - "bar_color": null, - "_model_module": "@jupyter-widgets/controls" + "_view_module_version": "1.5.0", + "orientation": "horizontal", + "min": 0, + "description_tooltip": null, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_09544845070e47baafc5e37d45ff23e9" } }, - "b7d819ed5f2f4e39a75a823792ab7249": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", + "9a5694c133be46df8d2fe809b77c1c35": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", + "_view_name": "HTMLView", + "style": "IPY_MODEL_1066f1d5b6104a3dae19f26269745bd0", + "_dom_classes": [], + "description": "", + "_model_name": "HTMLModel", + "placeholder": "​", + "_view_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "value": " 780M/780M [00:03<00:00, 200MB/s]", "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null + "_view_module_version": "1.5.0", + "description_tooltip": null, + "_model_module": "@jupyter-widgets/controls", + "layout": "IPY_MODEL_dd3a70e1ef4547ec8d3463749ce06285" } }, - "3af216dd7d024739b8168995800ed8be": { + "d584167143f84a0484006dded3fd2620": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", "state": { "_view_name": "StyleView", "_model_name": "DescriptionStyleModel", @@ -210,9 +170,10 @@ "_model_module": "@jupyter-widgets/controls" } }, - "763141d8de8a498a92ffa66aafed0c5a": { + "b9a25c0d425c4fe4b8cd51ae6a301b0d": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", + "model_module_version": "1.2.0", "state": { "_view_name": "LayoutView", "grid_template_rows": null, @@ -261,127 +222,14 @@ "left": null } }, - "0fffa335322b41658508e06aed0acbf0": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "state": { - "_view_name": "HBoxView", - "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_a354c6f80ce347e5a3ef64af87c0eccb", - "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_85823e71fea54c39bd11e2e972348836", - "IPY_MODEL_fb11acd663fa4e71b041d67310d045fd" - ] - } - }, - "a354c6f80ce347e5a3ef64af87c0eccb": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null - } - }, - "85823e71fea54c39bd11e2e972348836": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_8a919053b780449aae5523658ad611fa", - "_dom_classes": [], - "description": "100%", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 22091032, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 22091032, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_5bae9393a58b44f7b69fb04816f94f6f" - } - }, - "fb11acd663fa4e71b041d67310d045fd": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_d26c6d16c7f24030ab2da5285bf198ee", - "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 21.1M/21.1M [00:02<00:00, 9.36MB/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, - "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_f7767886b2364c8d9efdc79e175ad8eb" - } - }, - "8a919053b780449aae5523658ad611fa": { + "654525fe1ed34d5fbe1c36ed80ae1c1c": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", "state": { "_view_name": "StyleView", "_model_name": "ProgressStyleModel", - "description_width": "initial", + "description_width": "", "_view_module": "@jupyter-widgets/base", "_model_module_version": "1.5.0", "_view_count": null, @@ -390,9 +238,10 @@ "_model_module": "@jupyter-widgets/controls" } }, - "5bae9393a58b44f7b69fb04816f94f6f": { + "09544845070e47baafc5e37d45ff23e9": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", + "model_module_version": "1.2.0", "state": { "_view_name": "LayoutView", "grid_template_rows": null, @@ -441,9 +290,10 @@ "left": null } }, - "d26c6d16c7f24030ab2da5285bf198ee": { + "1066f1d5b6104a3dae19f26269745bd0": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", "state": { "_view_name": "StyleView", "_model_name": "DescriptionStyleModel", @@ -455,9 +305,10 @@ "_model_module": "@jupyter-widgets/controls" } }, - "f7767886b2364c8d9efdc79e175ad8eb": { + "dd3a70e1ef4547ec8d3463749ce06285": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", + "model_module_version": "1.2.0", "state": { "_view_name": "LayoutView", "grid_template_rows": null, @@ -517,20 +368,20 @@ "colab_type": "text" }, "source": [ - "\"Open", - "\"Kaggle\"" + "\"Open" ] }, { "cell_type": "markdown", "metadata": { - "id": "HvhYZrIZCEyo" + "id": "t6MPjfT5NrKQ" }, "source": [ - "\n", + "\n", + "\n", "\n", - "This is the **official YOLOv3 🚀 notebook** authored by **Ultralytics**, and is freely available for redistribution under the [GPL-3.0 license](https://choosealicense.com/licenses/gpl-3.0/). \n", - "For more information please visit https://github.com/ultralytics/yolov3 and https://www.ultralytics.com. Thank you!" + "This is the **official YOLOv3 🚀 notebook** by **Ultralytics**, and is freely available for redistribution under the [GPL-3.0 license](https://choosealicense.com/licenses/gpl-3.0/). \n", + "For more information please visit https://github.com/ultralytics/yolov3 and https://ultralytics.com. Thank you!" ] }, { @@ -551,27 +402,32 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "56f7b795-7a7b-46a1-8c5e-d06040187a85" + "outputId": "2e5d0950-2978-4304-856f-3b39f0d6627c" }, "source": [ - "!git clone https://github.com/ultralytics/yolov3 # clone repo\n", + "!git clone https://github.com/ultralytics/yolov3 -b update/yolov5_v6.0_release # clone\n", "%cd yolov3\n", - "%pip install -qr requirements.txt # install dependencies\n", + "%pip install -qr requirements.txt # install\n", "\n", "import torch\n", - "from IPython.display import Image, clear_output # to display images\n", - "\n", - "clear_output()\n", - "print(f\"Setup complete. Using torch {torch.__version__} ({torch.cuda.get_device_properties(0).name if torch.cuda.is_available() else 'CPU'})\")" + "from yolov3 import utils\n", + "display = utils.notebook_init() # checks" ], - "execution_count": null, + "execution_count": 1, "outputs": [ { "output_type": "stream", + "name": "stderr", "text": [ - "Setup complete. Using torch 1.8.1+cu101 (Tesla P100-PCIE-16GB)\n" - ], - "name": "stdout" + "YOLOv3 🚀 v9.5.0-20-g9d10fe5 torch 1.10.0+cu111 CUDA:0 (A100-SXM4-40GB, 40536MiB)\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Setup complete ✅\n" + ] } ] }, @@ -585,7 +441,15 @@ "\n", "`detect.py` runs YOLOv3 inference on a variety of sources, downloading models automatically from the [latest YOLOv3 release](https://github.com/ultralytics/yolov3/releases), and saving results to `runs/detect`. Example inference sources are:\n", "\n", - " " + "```shell\n", + "python detect.py --source 0 # webcam\n", + " img.jpg # image \n", + " vid.mp4 # video\n", + " path/ # directory\n", + " path/*.jpg # glob\n", + " 'https://youtu.be/Zgi9g1ksQHc' # YouTube\n", + " 'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP stream\n", + "```" ] }, { @@ -593,58 +457,51 @@ "metadata": { "id": "zR9ZbuQCH7FX", "colab": { - "base_uri": "https://localhost:8080/", - "height": 521 + "base_uri": "https://localhost:8080/" }, - "outputId": "bd41a070-3498-42e1-ac1b-3900ac0c2ec2" + "outputId": "499c53a7-95f7-4fc1-dab8-7a660b813546" }, "source": [ - "!python detect.py --weights yolov3.pt --img 640 --conf 0.25 --source data/images/\n", - "Image(filename='runs/detect/exp/zidane.jpg', width=600)" + "!python detect.py --weights yolov3.pt --img 640 --conf 0.25 --source data/images\n", + "display.Image(filename='runs/detect/exp/zidane.jpg', width=600)" ], - "execution_count": null, + "execution_count": 3, "outputs": [ { "output_type": "stream", + "name": "stdout", "text": [ - "Namespace(agnostic_nms=False, augment=False, classes=None, conf_thres=0.25, device='', exist_ok=False, img_size=640, iou_thres=0.45, name='exp', nosave=False, project='runs/detect', save_conf=False, save_txt=False, source='data/images/', update=False, view_img=False, weights=['yolov3.pt'])\n", - "YOLOv3 🚀 v9.5.0-1-gbe29298 torch 1.8.1+cu101 CUDA:0 (Tesla P100-PCIE-16GB, 16280.875MB)\n", + "\u001b[34m\u001b[1mdetect: \u001b[0mweights=['yolov3.pt'], source=data/images, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_conf=False, save_crop=False, nosave=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=runs/detect, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, dnn=False\n", + "YOLOv3 🚀 v9.5.0-20-g9d10fe5 torch 1.10.0+cu111 CUDA:0 (A100-SXM4-40GB, 40536MiB)\n", "\n", "Fusing layers... \n", - "Model Summary: 261 layers, 61922845 parameters, 0 gradients, 156.3 GFLOPS\n", - "image 1/2 /content/yolov3/data/images/bus.jpg: 640x480 4 persons, 1 bus, Done. (0.026s)\n", - "image 2/2 /content/yolov3/data/images/zidane.jpg: 384x640 2 persons, 3 ties, Done. (0.025s)\n", - "Results saved to runs/detect/exp2\n", - "Done. (0.119s)\n" - ], - "name": "stdout" - }, - { - "output_type": "execute_result", - "data": { - "image/jpeg": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": { - "tags": [], - "image/jpeg": { - "width": 600 - } - }, - "execution_count": 5 + "Model Summary: 261 layers, 61922845 parameters, 0 gradients\n", + "image 1/2 /content/yolov3/data/images/bus.jpg: 640x480 4 persons, 1 bus, 1 tie, Done. (0.020s)\n", + "image 2/2 /content/yolov3/data/images/zidane.jpg: 384x640 2 persons, 3 ties, Done. (0.020s)\n", + "Speed: 0.5ms pre-process, 19.8ms inference, 1.2ms NMS per image at shape (1, 3, 640, 640)\n", + "Results saved to \u001b[1mruns/detect/exp\u001b[0m\n" + ] } ] }, + { + "cell_type": "markdown", + "metadata": { + "id": "hkAzDWJ7cWTr" + }, + "source": [ + "        \n", + "" + ] + }, { "cell_type": "markdown", "metadata": { "id": "0eq1SMWl6Sfn" }, "source": [ - "# 2. Test\n", - "Test a model's accuracy on [COCO](https://cocodataset.org/#home) val or test-dev datasets. Models are downloaded automatically from the [latest YOLOv3 release](https://github.com/ultralytics/yolov3/releases). To show results by class use the `--verbose` flag. Note that `pycocotools` metrics may be ~1% better than the equivalent repo metrics, as is visible below, due to slight differences in mAP computation." + "# 2. Validate\n", + "Validate a model's accuracy on [COCO](https://cocodataset.org/#home) val or test-dev datasets. Models are downloaded automatically from the [latest YOLOv3 release](https://github.com/ultralytics/yolov3/releases). To show results by class use the `--verbose` flag. Note that `pycocotools` metrics may be ~1% better than the equivalent repo metrics, as is visible below, due to slight differences in mAP computation." ] }, { @@ -653,8 +510,8 @@ "id": "eyTZYGgRjnMc" }, "source": [ - "## COCO val2017\n", - "Download [COCO val 2017](https://github.com/ultralytics/yolov5/blob/74b34872fdf41941cddcf243951cdb090fbac17b/data/coco.yaml#L14) dataset (1GB - 5000 images), and test model accuracy." + "## COCO val\n", + "Download [COCO val 2017](https://github.com/ultralytics/yolov3/blob/master/data/coco.yaml) dataset (1GB - 5000 images), and test model accuracy." ] }, { @@ -663,49 +520,43 @@ "id": "WQPtK1QYVaD_", "colab": { "base_uri": "https://localhost:8080/", - "height": 65, + "height": 48, "referenced_widgets": [ - "355d9ee3dfc4487ebcae3b66ddbedce1", - "8209acd3185441e7b263eead5e8babdf", - "b81d30356f7048b0abcba35bde811526", - "7fcbf6b56f2e4b6dbf84e48465c96633", - "6ee48f9f3af444a7b02ec2f074dec1f8", - "b7d819ed5f2f4e39a75a823792ab7249", - "3af216dd7d024739b8168995800ed8be", - "763141d8de8a498a92ffa66aafed0c5a" + "eeda9d6850e8406f9bbc5b06051b3710", + "1e823c45174a4216be7234a6cc5cfd99", + "cd8efd6c5de94ea8848a7d5b8766a4d6", + "a4ec69c4697c4b0e84e6193be227f63e", + "9a5694c133be46df8d2fe809b77c1c35", + "d584167143f84a0484006dded3fd2620", + "b9a25c0d425c4fe4b8cd51ae6a301b0d", + "654525fe1ed34d5fbe1c36ed80ae1c1c", + "09544845070e47baafc5e37d45ff23e9", + "1066f1d5b6104a3dae19f26269745bd0", + "dd3a70e1ef4547ec8d3463749ce06285" ] }, - "outputId": "f7e4fb76-74db-4810-c705-b416bc862b52" + "outputId": "56199bac-5a5e-41eb-8892-bf387a1ec7cb" }, "source": [ - "# Download COCO val2017\n", - "torch.hub.download_url_to_file('https://github.com/ultralytics/yolov5/releases/download/v1.0/coco2017val.zip', 'tmp.zip')\n", - "!unzip -q tmp.zip -d ../ && rm tmp.zip" + "# Download COCO val\n", + "torch.hub.download_url_to_file('https://ultralytics.com/assets/coco2017val.zip', 'tmp.zip')\n", + "!unzip -q tmp.zip -d ../datasets && rm tmp.zip" ], - "execution_count": null, + "execution_count": 4, "outputs": [ { "output_type": "display_data", "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "355d9ee3dfc4487ebcae3b66ddbedce1", + "model_id": "eeda9d6850e8406f9bbc5b06051b3710", "version_minor": 0, "version_major": 2 }, "text/plain": [ - "HBox(children=(FloatProgress(value=0.0, max=819257867.0), HTML(value='')))" + " 0%| | 0.00/780M [00:00

\n", + "Close the active learning loop by sampling images from your inference conditions with the `roboflow` pip package\n", + "

\n", "\n", - "All training results are saved to `runs/train/` with incrementing run directories, i.e. `runs/train/exp2`, `runs/train/exp3` etc.\n" + "Train a YOLOv3 model on the [COCO128](https://www.kaggle.com/ultralytics/coco128) dataset with `--data coco128.yaml`, starting from pretrained `--weights yolov3.pt`, or from randomly initialized `--weights '' --cfg yolov3yaml`.\n", + "\n", + "- **Pretrained [Models](https://github.com/ultralytics/yolov3/tree/master/models)** are downloaded\n", + "automatically from the [latest YOLOv3 release](https://github.com/ultralytics/yolov3/releases)\n", + "- **[Datasets](https://github.com/ultralytics/yolov3/tree/master/data)** available for autodownload include: [COCO](https://github.com/ultralytics/yolov3/blob/master/data/coco.yaml), [COCO128](https://github.com/ultralytics/yolov3/blob/master/data/coco128.yaml), [VOC](https://github.com/ultralytics/yolov3/blob/master/data/VOC.yaml), [Argoverse](https://github.com/ultralytics/yolov3/blob/master/data/Argoverse.yaml), [VisDrone](https://github.com/ultralytics/yolov3/blob/master/data/VisDrone.yaml), [GlobalWheat](https://github.com/ultralytics/yolov3/blob/master/data/GlobalWheat2020.yaml), [xView](https://github.com/ultralytics/yolov3/blob/master/data/xView.yaml), [Objects365](https://github.com/ultralytics/yolov3/blob/master/data/Objects365.yaml), [SKU-110K](https://github.com/ultralytics/yolov3/blob/master/data/SKU-110K.yaml).\n", + "- **Training Results** are saved to `runs/train/` with incrementing run directories, i.e. `runs/train/exp2`, `runs/train/exp3` etc.\n", + "

\n" ] }, { @@ -887,7 +684,7 @@ "id": "bOy5KI2ncnWd" }, "source": [ - "# Tensorboard (optional)\n", + "# Tensorboard (optional)\n", "%load_ext tensorboard\n", "%tensorboard --logdir runs/train" ], @@ -915,25 +712,25 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "3638328f-e897-40d5-c49f-3dfbcea258a9" + "outputId": "28039ba4-b23b-4e59-ea0e-e1f8f7df0cdb" }, "source": [ "# Train YOLOv3 on COCO128 for 3 epochs\n", - "!python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov3.pt --nosave --cache" + "!python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov3.pt --cache" ], - "execution_count": null, + "execution_count": 8, "outputs": [ { "output_type": "stream", + "name": "stdout", "text": [ + "\u001b[34m\u001b[1mtrain: \u001b[0mweights=yolov3.pt, cfg=, data=coco128.yaml, hyp=data/hyps/hyp.scratch.yaml, epochs=3, batch_size=16, imgsz=640, rect=False, resume=False, nosave=False, noval=False, noautoanchor=False, evolve=None, bucket=, cache=ram, image_weights=False, device=, multi_scale=False, single_cls=False, adam=False, sync_bn=False, workers=8, project=runs/train, name=exp, exist_ok=False, quad=False, linear_lr=False, label_smoothing=0.0, patience=100, freeze=0, save_period=-1, local_rank=-1, entity=None, upload_dataset=False, bbox_interval=-1, artifact_alias=latest\n", "\u001b[34m\u001b[1mgithub: \u001b[0mup to date with https://github.com/ultralytics/yolov3 ✅\n", - "YOLOv3 🚀 v9.5.0-1-gbe29298 torch 1.8.1+cu101 CUDA:0 (Tesla P100-PCIE-16GB, 16280.875MB)\n", + "YOLOv3 🚀 v9.5.0-20-g9d10fe5 torch 1.10.0+cu111 CUDA:0 (A100-SXM4-40GB, 40536MiB)\n", "\n", - "Namespace(adam=False, artifact_alias='latest', batch_size=16, bbox_interval=-1, bucket='', cache_images=True, cfg='', data='./data/coco128.yaml', device='', entity=None, epochs=3, evolve=False, exist_ok=False, global_rank=-1, hyp='data/hyp.scratch.yaml', image_weights=False, img_size=[640, 640], label_smoothing=0.0, linear_lr=False, local_rank=-1, multi_scale=False, name='exp', noautoanchor=False, nosave=True, notest=False, project='runs/train', quad=False, rect=False, resume=False, save_dir='runs/train/exp', save_period=-1, single_cls=False, sync_bn=False, total_batch_size=16, upload_dataset=False, weights='yolov3.pt', workers=8, world_size=1)\n", - "\u001b[34m\u001b[1mtensorboard: \u001b[0mStart with 'tensorboard --logdir runs/train', view at http://localhost:6006/\n", - "2021-04-12 21:26:33.963524: I tensorflow/stream_executor/platform/default/dso_loader.cc:49] Successfully opened dynamic library libcudart.so.11.0\n", - "\u001b[34m\u001b[1mhyperparameters: \u001b[0mlr0=0.01, lrf=0.2, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=0.05, cls=0.5, cls_pw=1.0, obj=1.0, obj_pw=1.0, iou_t=0.2, anchor_t=4.0, fl_gamma=0.0, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, mosaic=1.0, mixup=0.0\n", - "\u001b[34m\u001b[1mwandb: \u001b[0mInstall Weights & Biases for YOLOv5 logging with 'pip install wandb' (recommended)\n", + "\u001b[34m\u001b[1mhyperparameters: \u001b[0mlr0=0.01, lrf=0.1, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=0.05, cls=0.5, cls_pw=1.0, obj=1.0, obj_pw=1.0, iou_t=0.2, anchor_t=4.0, fl_gamma=0.0, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, mosaic=1.0, mixup=0.0, copy_paste=0.0\n", + "\u001b[34m\u001b[1mWeights & Biases: \u001b[0mrun 'pip install wandb' to automatically track and visualize YOLOv3 🚀 runs (RECOMMENDED)\n", + "\u001b[34m\u001b[1mTensorBoard: \u001b[0mStart with 'tensorboard --logdir runs/train', view at http://localhost:6006/\n", "\n", " from n params module arguments \n", " 0 -1 1 928 models.common.Conv [3, 32, 3, 1] \n", @@ -965,49 +762,121 @@ " 26 -1 1 344832 models.common.Bottleneck [384, 256, False] \n", " 27 -1 2 656896 models.common.Bottleneck [256, 256, False] \n", " 28 [27, 22, 15] 1 457725 models.yolo.Detect [80, [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]], [256, 512, 1024]]\n", - "Model Summary: 333 layers, 61949149 parameters, 61949149 gradients, 156.4 GFLOPS\n", - "\n", - "Transferred 440/440 items from yolov3.pt\n", - "\n", - "WARNING: Dataset not found, nonexistent paths: ['/content/coco128/images/train2017']\n", - "Downloading https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip ...\n", - "100% 21.1M/21.1M [00:01<00:00, 13.6MB/s]\n", - "Dataset autodownload success\n", + "Model Summary: 333 layers, 61949149 parameters, 61949149 gradients, 156.3 GFLOPs\n", "\n", + "Transferred 439/439 items from yolov3.pt\n", "Scaled weight_decay = 0.0005\n", - "Optimizer groups: 75 .bias, 75 conv.weight, 72 other\n", - "\u001b[34m\u001b[1mtrain: \u001b[0mScanning '../coco128/labels/train2017' images and labels... 128 found, 0 missing, 2 empty, 0 corrupted: 100% 128/128 [00:00<00:00, 3076.66it/s]\n", - "\u001b[34m\u001b[1mtrain: \u001b[0mNew cache created: ../coco128/labels/train2017.cache\n", - "\u001b[34m\u001b[1mtrain: \u001b[0mCaching images (0.1GB): 100% 128/128 [00:00<00:00, 217.17it/s]\n", - "\u001b[34m\u001b[1mval: \u001b[0mScanning '../coco128/labels/train2017.cache' images and labels... 128 found, 0 missing, 2 empty, 0 corrupted: 100% 128/128 [00:00<00:00, 797727.95it/s]\n", - "\u001b[34m\u001b[1mval: \u001b[0mCaching images (0.1GB): 100% 128/128 [00:00<00:00, 149.28it/s]\n", - "Plotting labels... \n", + "\u001b[34m\u001b[1moptimizer:\u001b[0m SGD with parameter groups 72 weight, 75 weight (no decay), 75 bias\n", + "\u001b[34m\u001b[1malbumentations: \u001b[0mversion 1.0.3 required by YOLOv3, but version 0.1.12 is currently installed\n", + "\u001b[34m\u001b[1mtrain: \u001b[0mScanning '../datasets/coco128/labels/train2017.cache' images and labels... 128 found, 0 missing, 2 empty, 0 corrupted: 100% 128/128 [00:00" + "

\"Weights

" ] }, { @@ -1043,67 +912,25 @@ "source": [ "## Local Logging\n", "\n", - "All results are logged by default to `runs/train`, with a new experiment directory created for each new training as `runs/train/exp2`, `runs/train/exp3`, etc. View train and test jpgs to see mosaics, labels, predictions and augmentation effects. Note a **Mosaic Dataloader** is used for training (shown below), a new concept developed by Ultralytics and first featured in [YOLOv4](https://arxiv.org/abs/2004.10934)." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "riPdhraOTCO0" - }, - "source": [ - "Image(filename='runs/train/exp/train_batch0.jpg', width=800) # train batch 0 mosaics and labels\n", - "Image(filename='runs/train/exp/test_batch0_labels.jpg', width=800) # test batch 0 labels\n", - "Image(filename='runs/train/exp/test_batch0_pred.jpg', width=800) # test batch 0 predictions" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "OYG4WFEnTVrI" - }, - "source": [ - "> \n", + "All results are logged by default to `runs/train`, with a new experiment directory created for each new training as `runs/train/exp2`, `runs/train/exp3`, etc. View train and val jpgs to see mosaics, labels, predictions and augmentation effects. Note an Ultralytics **Mosaic Dataloader** is used for training (shown below), which combines 4 images into 1 mosaic during training.\n", + "\n", + "> \n", "`train_batch0.jpg` shows train batch 0 mosaics and labels\n", "\n", - "> \n", - "`test_batch0_labels.jpg` shows test batch 0 labels\n", + "> \n", + "`test_batch0_labels.jpg` shows val batch 0 labels\n", "\n", - "> \n", - "`test_batch0_pred.jpg` shows test batch 0 _predictions_\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "7KN5ghjE6ZWh" - }, - "source": [ - "Training losses and performance metrics are also logged to [Tensorboard](https://www.tensorflow.org/tensorboard) and a custom `results.txt` logfile which is plotted as `results.png` (below) after training completes. Here we show YOLOv3 trained on COCO128 to 300 epochs, starting from scratch (blue), and from pretrained `--weights yolov3.pt` (orange)." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "MDznIqPF7nk3" - }, - "source": [ + "> \n", + "`test_batch0_pred.jpg` shows val batch 0 _predictions_\n", + "\n", + "Training results are automatically logged to [Tensorboard](https://www.tensorflow.org/tensorboard) and [CSV](https://github.com/ultralytics/yolov5/pull/4148) as `results.csv`, which is plotted as `results.png` (below) after training completes. You can also plot any `results.csv` file manually:\n", + "\n", + "```python\n", "from utils.plots import plot_results \n", - "plot_results(save_dir='runs/train/exp') # plot all results*.txt as results.png\n", - "Image(filename='runs/train/exp/results.png', width=800)" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "lfrEegCSW3fK" - }, - "source": [ - "\n" + "plot_results('path/to/results.csv') # plot 'results.csv' as 'results.png'\n", + "```\n", + "\n", + "\"COCO128" ] }, { @@ -1116,10 +943,10 @@ "\n", "YOLOv3 may be run in any of the following up-to-date verified environments (with all dependencies including [CUDA](https://developer.nvidia.com/cuda)/[CUDNN](https://developer.nvidia.com/cudnn), [Python](https://www.python.org/) and [PyTorch](https://pytorch.org/) preinstalled):\n", "\n", - "- **Google Colab and Kaggle** notebooks with free GPU: \"Open \"Open\n", - "- **Google Cloud** Deep Learning VM. See [GCP Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/GCP-Quickstart)\n", - "- **Amazon** Deep Learning AMI. See [AWS Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/AWS-Quickstart)\n", - "- **Docker Image**. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/Docker-Quickstart) \"Docker\n" + "- **Google Colab and Kaggle** notebooks with free GPU: \"Open \"Open\n", + "- **Google Cloud** Deep Learning VM. See [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart)\n", + "- **Amazon** Deep Learning AMI. See [AWS Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/AWS-Quickstart)\n", + "- **Docker Image**. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) \"Docker\n" ] }, { @@ -1130,9 +957,9 @@ "source": [ "# Status\n", "\n", - "![CI CPU testing](https://github.com/ultralytics/yolov5/workflows/CI%20CPU%20testing/badge.svg)\n", + "![CI CPU testing](https://github.com/ultralytics/yolov3/workflows/CI%20CPU%20testing/badge.svg)\n", "\n", - "If this badge is green, all [YOLOv3 GitHub Actions](https://github.com/ultralytics/yolov5/actions) Continuous Integration (CI) tests are currently passing. CI tests verify correct operation of YOLOv3 training ([train.py](https://github.com/ultralytics/yolov5/blob/master/train.py)), testing ([test.py](https://github.com/ultralytics/yolov5/blob/master/test.py)), inference ([detect.py](https://github.com/ultralytics/yolov5/blob/master/detect.py)) and export ([export.py](https://github.com/ultralytics/yolov5/blob/master/models/export.py)) on MacOS, Windows, and Ubuntu every 24 hours and on every commit.\n" + "If this badge is green, all [YOLOv3 GitHub Actions](https://github.com/ultralytics/yolov3/actions) Continuous Integration (CI) tests are currently passing. CI tests verify correct operation of YOLOv3 training ([train.py](https://github.com/ultralytics/yolov3/blob/master/train.py)), testing ([val.py](https://github.com/ultralytics/yolov3/blob/master/val.py)), inference ([detect.py](https://github.com/ultralytics/yolov3/blob/master/detect.py)) and export ([export.py](https://github.com/ultralytics/yolov3/blob/master/export.py)) on MacOS, Windows, and Ubuntu every 24 hours and on every commit.\n" ] }, { @@ -1146,20 +973,6 @@ "Optional extras below. Unit tests validate repo functionality and should be run on any PRs submitted.\n" ] }, - { - "cell_type": "code", - "metadata": { - "id": "gI6NoBev8Ib1" - }, - "source": [ - "# Re-clone repo\n", - "%cd ..\n", - "%rm -rf yolov3 && git clone https://github.com/ultralytics/yolov3\n", - "%cd yolov3" - ], - "execution_count": null, - "outputs": [] - }, { "cell_type": "code", "metadata": { @@ -1168,8 +981,8 @@ "source": [ "# Reproduce\n", "for x in 'yolov3', 'yolov3-spp', 'yolov3-tiny':\n", - " !python test.py --weights {x}.pt --data coco.yaml --img 640 --conf 0.25 --iou 0.45 # speed\n", - " !python test.py --weights {x}.pt --data coco.yaml --img 640 --conf 0.001 --iou 0.65 # mAP" + " !python val.py --weights {x}.pt --data coco.yaml --img 640 --task speed # speed\n", + " !python val.py --weights {x}.pt --data coco.yaml --img 640 --conf 0.001 --iou 0.65 # mAP" ], "execution_count": null, "outputs": [] @@ -1184,7 +997,7 @@ "import torch\n", "\n", "# Model\n", - "model = torch.hub.load('ultralytics/yolov3', 'yolov3') # or 'yolov3_spp', 'yolov3_tiny'\n", + "model = torch.hub.load('ultralytics/yolov3', 'yolov3')\n", "\n", "# Images\n", "dir = 'https://ultralytics.com/images/'\n", @@ -1203,23 +1016,23 @@ "id": "FGH0ZjkGjejy" }, "source": [ - "# Unit tests\n", + "# CI Checks\n", "%%shell\n", "export PYTHONPATH=\"$PWD\" # to run *.py. files in subdirectories\n", - "\n", "rm -rf runs # remove runs/\n", - "for m in yolov3; do # models\n", - " python train.py --weights $m.pt --epochs 3 --img 320 --device 0 # train pretrained\n", - " python train.py --weights '' --cfg $m.yaml --epochs 3 --img 320 --device 0 # train scratch\n", + "for m in yolov3-tiny; do # models\n", + " python train.py --img 64 --batch 32 --weights $m.pt --epochs 1 --device 0 # train pretrained\n", + " python train.py --img 64 --batch 32 --weights '' --cfg $m.yaml --epochs 1 --device 0 # train scratch\n", " for d in 0 cpu; do # devices\n", + " python val.py --weights $m.pt --device $d # val official\n", + " python val.py --weights runs/train/exp/weights/best.pt --device $d # val custom\n", " python detect.py --weights $m.pt --device $d # detect official\n", " python detect.py --weights runs/train/exp/weights/best.pt --device $d # detect custom\n", - " python test.py --weights $m.pt --device $d # test official\n", - " python test.py --weights runs/train/exp/weights/best.pt --device $d # test custom\n", " done\n", " python hubconf.py # hub\n", - " python models/yolo.py --cfg $m.yaml # inspect\n", - " python models/export.py --weights $m.pt --img 640 --batch 1 # export\n", + " python models/yolo.py --cfg $m.yaml # build PyTorch model\n", + " python models/tf.py --weights $m.pt # build TensorFlow model\n", + " python export.py --img 64 --batch 1 --weights $m.pt --include torchscript onnx # export\n", "done" ], "execution_count": null, @@ -1232,11 +1045,11 @@ }, "source": [ "# Profile\n", - "from utils.torch_utils import profile \n", + "from utils.torch_utils import profile\n", "\n", "m1 = lambda x: x * torch.sigmoid(x)\n", "m2 = torch.nn.SiLU()\n", - "profile(x=torch.randn(16, 3, 640, 640), ops=[m1, m2], n=100)" + "results = profile(input=torch.randn(16, 3, 640, 640), ops=[m1, m2], n=100)" ], "execution_count": null, "outputs": [] @@ -1261,8 +1074,8 @@ }, "source": [ "# VOC\n", - "for b, m in zip([64, 48, 32, 16], ['yolov3', 'yolov3-spp', 'yolov3-tiny']): # zip(batch_size, model)\n", - " !python train.py --batch {b} --weights {m}.pt --data voc.yaml --epochs 50 --cache --img 512 --nosave --hyp hyp.finetune.yaml --project VOC --name {m}" + "for b, m in zip([24, 24, 64], ['yolov3', 'yolov3-spp', 'yolov3-tiny']): # zip(batch_size, model)\n", + " !python train.py --batch {b} --weights {m}.pt --data VOC.yaml --epochs 50 --cache --img 512 --nosave --hyp hyp.finetune.yaml --project VOC --name {m}" ], "execution_count": null, "outputs": [] diff --git a/utils/__init__.py b/utils/__init__.py index e69de29b..309830c8 100644 --- a/utils/__init__.py +++ b/utils/__init__.py @@ -0,0 +1,18 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +utils/initialization +""" + + +def notebook_init(): + # For notebooks + print('Checking setup...') + from IPython import display # to display images and clear console output + + from utils.general import emojis + from utils.torch_utils import select_device # imports + + display.clear_output() + select_device(newline=False) + print(emojis('Setup complete ✅')) + return display diff --git a/utils/activations.py b/utils/activations.py index 92a3b5ea..ae2fef1c 100644 --- a/utils/activations.py +++ b/utils/activations.py @@ -1,4 +1,7 @@ -# Activation functions +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Activation functions +""" import torch import torch.nn as nn @@ -16,7 +19,7 @@ class Hardswish(nn.Module): # export-friendly version of nn.Hardswish() @staticmethod def forward(x): # return x * F.hardsigmoid(x) # for torchscript and CoreML - return x * F.hardtanh(x + 3, 0., 6.) / 6. # for torchscript, CoreML and ONNX + return x * F.hardtanh(x + 3, 0.0, 6.0) / 6.0 # for torchscript, CoreML and ONNX # Mish https://github.com/digantamisra98/Mish -------------------------------------------------------------------------- diff --git a/utils/augmentations.py b/utils/augmentations.py new file mode 100644 index 00000000..16685044 --- /dev/null +++ b/utils/augmentations.py @@ -0,0 +1,277 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Image augmentation functions +""" + +import math +import random + +import cv2 +import numpy as np + +from utils.general import LOGGER, check_version, colorstr, resample_segments, segment2box +from utils.metrics import bbox_ioa + + +class Albumentations: + # Albumentations class (optional, only used if package is installed) + def __init__(self): + self.transform = None + try: + import albumentations as A + check_version(A.__version__, '1.0.3', hard=True) # version requirement + + self.transform = A.Compose([ + A.Blur(p=0.01), + A.MedianBlur(p=0.01), + A.ToGray(p=0.01), + A.CLAHE(p=0.01), + A.RandomBrightnessContrast(p=0.0), + A.RandomGamma(p=0.0), + A.ImageCompression(quality_lower=75, p=0.0)], + bbox_params=A.BboxParams(format='yolo', label_fields=['class_labels'])) + + LOGGER.info(colorstr('albumentations: ') + ', '.join(f'{x}' for x in self.transform.transforms if x.p)) + except ImportError: # package not installed, skip + pass + except Exception as e: + LOGGER.info(colorstr('albumentations: ') + f'{e}') + + def __call__(self, im, labels, p=1.0): + if self.transform and random.random() < p: + new = self.transform(image=im, bboxes=labels[:, 1:], class_labels=labels[:, 0]) # transformed + im, labels = new['image'], np.array([[c, *b] for c, b in zip(new['class_labels'], new['bboxes'])]) + return im, labels + + +def augment_hsv(im, hgain=0.5, sgain=0.5, vgain=0.5): + # HSV color-space augmentation + if hgain or sgain or vgain: + r = np.random.uniform(-1, 1, 3) * [hgain, sgain, vgain] + 1 # random gains + hue, sat, val = cv2.split(cv2.cvtColor(im, cv2.COLOR_BGR2HSV)) + dtype = im.dtype # uint8 + + x = np.arange(0, 256, dtype=r.dtype) + lut_hue = ((x * r[0]) % 180).astype(dtype) + lut_sat = np.clip(x * r[1], 0, 255).astype(dtype) + lut_val = np.clip(x * r[2], 0, 255).astype(dtype) + + im_hsv = cv2.merge((cv2.LUT(hue, lut_hue), cv2.LUT(sat, lut_sat), cv2.LUT(val, lut_val))) + cv2.cvtColor(im_hsv, cv2.COLOR_HSV2BGR, dst=im) # no return needed + + +def hist_equalize(im, clahe=True, bgr=False): + # Equalize histogram on BGR image 'im' with im.shape(n,m,3) and range 0-255 + yuv = cv2.cvtColor(im, cv2.COLOR_BGR2YUV if bgr else cv2.COLOR_RGB2YUV) + if clahe: + c = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8)) + yuv[:, :, 0] = c.apply(yuv[:, :, 0]) + else: + yuv[:, :, 0] = cv2.equalizeHist(yuv[:, :, 0]) # equalize Y channel histogram + return cv2.cvtColor(yuv, cv2.COLOR_YUV2BGR if bgr else cv2.COLOR_YUV2RGB) # convert YUV image to RGB + + +def replicate(im, labels): + # Replicate labels + h, w = im.shape[:2] + boxes = labels[:, 1:].astype(int) + x1, y1, x2, y2 = boxes.T + s = ((x2 - x1) + (y2 - y1)) / 2 # side length (pixels) + for i in s.argsort()[:round(s.size * 0.5)]: # smallest indices + x1b, y1b, x2b, y2b = boxes[i] + bh, bw = y2b - y1b, x2b - x1b + yc, xc = int(random.uniform(0, h - bh)), int(random.uniform(0, w - bw)) # offset x, y + x1a, y1a, x2a, y2a = [xc, yc, xc + bw, yc + bh] + im[y1a:y2a, x1a:x2a] = im[y1b:y2b, x1b:x2b] # im4[ymin:ymax, xmin:xmax] + labels = np.append(labels, [[labels[i, 0], x1a, y1a, x2a, y2a]], axis=0) + + return im, labels + + +def letterbox(im, new_shape=(640, 640), color=(114, 114, 114), auto=True, scaleFill=False, scaleup=True, stride=32): + # Resize and pad image while meeting stride-multiple constraints + shape = im.shape[:2] # current shape [height, width] + if isinstance(new_shape, int): + new_shape = (new_shape, new_shape) + + # Scale ratio (new / old) + r = min(new_shape[0] / shape[0], new_shape[1] / shape[1]) + if not scaleup: # only scale down, do not scale up (for better val mAP) + r = min(r, 1.0) + + # Compute padding + ratio = r, r # width, height ratios + new_unpad = int(round(shape[1] * r)), int(round(shape[0] * r)) + dw, dh = new_shape[1] - new_unpad[0], new_shape[0] - new_unpad[1] # wh padding + if auto: # minimum rectangle + dw, dh = np.mod(dw, stride), np.mod(dh, stride) # wh padding + elif scaleFill: # stretch + dw, dh = 0.0, 0.0 + new_unpad = (new_shape[1], new_shape[0]) + ratio = new_shape[1] / shape[1], new_shape[0] / shape[0] # width, height ratios + + dw /= 2 # divide padding into 2 sides + dh /= 2 + + if shape[::-1] != new_unpad: # resize + im = cv2.resize(im, new_unpad, interpolation=cv2.INTER_LINEAR) + top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1)) + left, right = int(round(dw - 0.1)), int(round(dw + 0.1)) + im = cv2.copyMakeBorder(im, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color) # add border + return im, ratio, (dw, dh) + + +def random_perspective(im, targets=(), segments=(), degrees=10, translate=.1, scale=.1, shear=10, perspective=0.0, + border=(0, 0)): + # torchvision.transforms.RandomAffine(degrees=(-10, 10), translate=(0.1, 0.1), scale=(0.9, 1.1), shear=(-10, 10)) + # targets = [cls, xyxy] + + height = im.shape[0] + border[0] * 2 # shape(h,w,c) + width = im.shape[1] + border[1] * 2 + + # Center + C = np.eye(3) + C[0, 2] = -im.shape[1] / 2 # x translation (pixels) + C[1, 2] = -im.shape[0] / 2 # y translation (pixels) + + # Perspective + P = np.eye(3) + P[2, 0] = random.uniform(-perspective, perspective) # x perspective (about y) + P[2, 1] = random.uniform(-perspective, perspective) # y perspective (about x) + + # Rotation and Scale + R = np.eye(3) + a = random.uniform(-degrees, degrees) + # a += random.choice([-180, -90, 0, 90]) # add 90deg rotations to small rotations + s = random.uniform(1 - scale, 1 + scale) + # s = 2 ** random.uniform(-scale, scale) + R[:2] = cv2.getRotationMatrix2D(angle=a, center=(0, 0), scale=s) + + # Shear + S = np.eye(3) + S[0, 1] = math.tan(random.uniform(-shear, shear) * math.pi / 180) # x shear (deg) + S[1, 0] = math.tan(random.uniform(-shear, shear) * math.pi / 180) # y shear (deg) + + # Translation + T = np.eye(3) + T[0, 2] = random.uniform(0.5 - translate, 0.5 + translate) * width # x translation (pixels) + T[1, 2] = random.uniform(0.5 - translate, 0.5 + translate) * height # y translation (pixels) + + # Combined rotation matrix + M = T @ S @ R @ P @ C # order of operations (right to left) is IMPORTANT + if (border[0] != 0) or (border[1] != 0) or (M != np.eye(3)).any(): # image changed + if perspective: + im = cv2.warpPerspective(im, M, dsize=(width, height), borderValue=(114, 114, 114)) + else: # affine + im = cv2.warpAffine(im, M[:2], dsize=(width, height), borderValue=(114, 114, 114)) + + # Visualize + # import matplotlib.pyplot as plt + # ax = plt.subplots(1, 2, figsize=(12, 6))[1].ravel() + # ax[0].imshow(im[:, :, ::-1]) # base + # ax[1].imshow(im2[:, :, ::-1]) # warped + + # Transform label coordinates + n = len(targets) + if n: + use_segments = any(x.any() for x in segments) + new = np.zeros((n, 4)) + if use_segments: # warp segments + segments = resample_segments(segments) # upsample + for i, segment in enumerate(segments): + xy = np.ones((len(segment), 3)) + xy[:, :2] = segment + xy = xy @ M.T # transform + xy = xy[:, :2] / xy[:, 2:3] if perspective else xy[:, :2] # perspective rescale or affine + + # clip + new[i] = segment2box(xy, width, height) + + else: # warp boxes + xy = np.ones((n * 4, 3)) + xy[:, :2] = targets[:, [1, 2, 3, 4, 1, 4, 3, 2]].reshape(n * 4, 2) # x1y1, x2y2, x1y2, x2y1 + xy = xy @ M.T # transform + xy = (xy[:, :2] / xy[:, 2:3] if perspective else xy[:, :2]).reshape(n, 8) # perspective rescale or affine + + # create new boxes + x = xy[:, [0, 2, 4, 6]] + y = xy[:, [1, 3, 5, 7]] + new = np.concatenate((x.min(1), y.min(1), x.max(1), y.max(1))).reshape(4, n).T + + # clip + new[:, [0, 2]] = new[:, [0, 2]].clip(0, width) + new[:, [1, 3]] = new[:, [1, 3]].clip(0, height) + + # filter candidates + i = box_candidates(box1=targets[:, 1:5].T * s, box2=new.T, area_thr=0.01 if use_segments else 0.10) + targets = targets[i] + targets[:, 1:5] = new[i] + + return im, targets + + +def copy_paste(im, labels, segments, p=0.5): + # Implement Copy-Paste augmentation https://arxiv.org/abs/2012.07177, labels as nx5 np.array(cls, xyxy) + n = len(segments) + if p and n: + h, w, c = im.shape # height, width, channels + im_new = np.zeros(im.shape, np.uint8) + for j in random.sample(range(n), k=round(p * n)): + l, s = labels[j], segments[j] + box = w - l[3], l[2], w - l[1], l[4] + ioa = bbox_ioa(box, labels[:, 1:5]) # intersection over area + if (ioa < 0.30).all(): # allow 30% obscuration of existing labels + labels = np.concatenate((labels, [[l[0], *box]]), 0) + segments.append(np.concatenate((w - s[:, 0:1], s[:, 1:2]), 1)) + cv2.drawContours(im_new, [segments[j].astype(np.int32)], -1, (255, 255, 255), cv2.FILLED) + + result = cv2.bitwise_and(src1=im, src2=im_new) + result = cv2.flip(result, 1) # augment segments (flip left-right) + i = result > 0 # pixels to replace + # i[:, :] = result.max(2).reshape(h, w, 1) # act over ch + im[i] = result[i] # cv2.imwrite('debug.jpg', im) # debug + + return im, labels, segments + + +def cutout(im, labels, p=0.5): + # Applies image cutout augmentation https://arxiv.org/abs/1708.04552 + if random.random() < p: + h, w = im.shape[:2] + scales = [0.5] * 1 + [0.25] * 2 + [0.125] * 4 + [0.0625] * 8 + [0.03125] * 16 # image size fraction + for s in scales: + mask_h = random.randint(1, int(h * s)) # create random masks + mask_w = random.randint(1, int(w * s)) + + # box + xmin = max(0, random.randint(0, w) - mask_w // 2) + ymin = max(0, random.randint(0, h) - mask_h // 2) + xmax = min(w, xmin + mask_w) + ymax = min(h, ymin + mask_h) + + # apply random color mask + im[ymin:ymax, xmin:xmax] = [random.randint(64, 191) for _ in range(3)] + + # return unobscured labels + if len(labels) and s > 0.03: + box = np.array([xmin, ymin, xmax, ymax], dtype=np.float32) + ioa = bbox_ioa(box, labels[:, 1:5]) # intersection over area + labels = labels[ioa < 0.60] # remove >60% obscured labels + + return labels + + +def mixup(im, labels, im2, labels2): + # Applies MixUp augmentation https://arxiv.org/pdf/1710.09412.pdf + r = np.random.beta(32.0, 32.0) # mixup ratio, alpha=beta=32.0 + im = (im * r + im2 * (1 - r)).astype(np.uint8) + labels = np.concatenate((labels, labels2), 0) + return im, labels + + +def box_candidates(box1, box2, wh_thr=2, ar_thr=20, area_thr=0.1, eps=1e-16): # box1(4,n), box2(4,n) + # Compute candidate boxes: box1 before augment, box2 after augment, wh_thr (pixels), aspect_ratio_thr, area_ratio + w1, h1 = box1[2] - box1[0], box1[3] - box1[1] + w2, h2 = box2[2] - box2[0], box2[3] - box2[1] + ar = np.maximum(w2 / (h2 + eps), h2 / (w2 + eps)) # aspect ratio + return (w2 > wh_thr) & (h2 > wh_thr) & (w2 * h2 / (w1 * h1 + eps) > area_thr) & (ar < ar_thr) # candidates diff --git a/utils/autoanchor.py b/utils/autoanchor.py index 51ed8034..0c202c49 100644 --- a/utils/autoanchor.py +++ b/utils/autoanchor.py @@ -1,28 +1,32 @@ -# Auto-anchor utils +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Auto-anchor utils +""" + +import random import numpy as np import torch import yaml from tqdm import tqdm -from utils.general import colorstr +from utils.general import LOGGER, colorstr, emojis + +PREFIX = colorstr('AutoAnchor: ') def check_anchor_order(m): - # Check anchor order against stride order for YOLOv3 Detect() module m, and correct if necessary - a = m.anchor_grid.prod(-1).view(-1) # anchor area + # Check anchor order against stride order for Detect() module m, and correct if necessary + a = m.anchors.prod(-1).view(-1) # anchor area da = a[-1] - a[0] # delta a ds = m.stride[-1] - m.stride[0] # delta s if da.sign() != ds.sign(): # same order - print('Reversing anchor order') + LOGGER.info(f'{PREFIX}Reversing anchor order') m.anchors[:] = m.anchors.flip(0) - m.anchor_grid[:] = m.anchor_grid.flip(0) def check_anchors(dataset, model, thr=4.0, imgsz=640): # Check anchor fit to data, recompute if necessary - prefix = colorstr('autoanchor: ') - print(f'\n{prefix}Analyzing anchors... ', end='') m = model.module.model[-1] if hasattr(model, 'module') else model.model[-1] # Detect() shapes = imgsz * dataset.shapes / dataset.shapes.max(1, keepdims=True) scale = np.random.uniform(0.9, 1.1, size=(shapes.shape[0], 1)) # augment scale @@ -30,39 +34,39 @@ def check_anchors(dataset, model, thr=4.0, imgsz=640): def metric(k): # compute metric r = wh[:, None] / k[None] - x = torch.min(r, 1. / r).min(2)[0] # ratio metric + x = torch.min(r, 1 / r).min(2)[0] # ratio metric best = x.max(1)[0] # best_x - aat = (x > 1. / thr).float().sum(1).mean() # anchors above threshold - bpr = (best > 1. / thr).float().mean() # best possible recall + aat = (x > 1 / thr).float().sum(1).mean() # anchors above threshold + bpr = (best > 1 / thr).float().mean() # best possible recall return bpr, aat - anchors = m.anchor_grid.clone().cpu().view(-1, 2) # current anchors - bpr, aat = metric(anchors) - print(f'anchors/target = {aat:.2f}, Best Possible Recall (BPR) = {bpr:.4f}', end='') - if bpr < 0.98: # threshold to recompute - print('. Attempting to improve anchors, please wait...') - na = m.anchor_grid.numel() // 2 # number of anchors + anchors = m.anchors.clone() * m.stride.to(m.anchors.device).view(-1, 1, 1) # current anchors + bpr, aat = metric(anchors.cpu().view(-1, 2)) + s = f'\n{PREFIX}{aat:.2f} anchors/target, {bpr:.3f} Best Possible Recall (BPR). ' + if bpr > 0.98: # threshold to recompute + LOGGER.info(emojis(f'{s}Current anchors are a good fit to dataset ✅')) + else: + LOGGER.info(emojis(f'{s}Anchors are a poor fit to dataset ⚠️, attempting to improve...')) + na = m.anchors.numel() // 2 # number of anchors try: anchors = kmean_anchors(dataset, n=na, img_size=imgsz, thr=thr, gen=1000, verbose=False) except Exception as e: - print(f'{prefix}ERROR: {e}') + LOGGER.info(f'{PREFIX}ERROR: {e}') new_bpr = metric(anchors)[0] if new_bpr > bpr: # replace anchors anchors = torch.tensor(anchors, device=m.anchors.device).type_as(m.anchors) - m.anchor_grid[:] = anchors.clone().view_as(m.anchor_grid) # for inference m.anchors[:] = anchors.clone().view_as(m.anchors) / m.stride.to(m.anchors.device).view(-1, 1, 1) # loss check_anchor_order(m) - print(f'{prefix}New anchors saved to model. Update model *.yaml to use these anchors in the future.') + LOGGER.info(f'{PREFIX}New anchors saved to model. Update model *.yaml to use these anchors in the future.') else: - print(f'{prefix}Original anchors better than new anchors. Proceeding with original anchors.') - print('') # newline + LOGGER.info(f'{PREFIX}Original anchors better than new anchors. Proceeding with original anchors.') -def kmean_anchors(path='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen=1000, verbose=True): +def kmean_anchors(dataset='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen=1000, verbose=True): """ Creates kmeans-evolved anchors from training dataset Arguments: - path: path to dataset *.yaml, or a loaded dataset + dataset: path to data.yaml, or a loaded dataset n: number of anchors img_size: image size used for training thr: anchor-label wh ratio threshold hyperparameter hyp['anchor_t'] used for training, default=4.0 @@ -77,12 +81,11 @@ def kmean_anchors(path='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen=10 """ from scipy.cluster.vq import kmeans - thr = 1. / thr - prefix = colorstr('autoanchor: ') + thr = 1 / thr def metric(k, wh): # compute metrics r = wh[:, None] / k[None] - x = torch.min(r, 1. / r).min(2)[0] # ratio metric + x = torch.min(r, 1 / r).min(2)[0] # ratio metric # x = wh_iou(wh, torch.tensor(k)) # iou metric return x, x.max(1)[0] # x, best_x @@ -90,24 +93,24 @@ def kmean_anchors(path='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen=10 _, best = metric(torch.tensor(k, dtype=torch.float32), wh) return (best * (best > thr).float()).mean() # fitness - def print_results(k): + def print_results(k, verbose=True): k = k[np.argsort(k.prod(1))] # sort small to large x, best = metric(k, wh0) bpr, aat = (best > thr).float().mean(), (x > thr).float().mean() * n # best possible recall, anch > thr - print(f'{prefix}thr={thr:.2f}: {bpr:.4f} best possible recall, {aat:.2f} anchors past thr') - print(f'{prefix}n={n}, img_size={img_size}, metric_all={x.mean():.3f}/{best.mean():.3f}-mean/best, ' - f'past_thr={x[x > thr].mean():.3f}-mean: ', end='') + s = f'{PREFIX}thr={thr:.2f}: {bpr:.4f} best possible recall, {aat:.2f} anchors past thr\n' \ + f'{PREFIX}n={n}, img_size={img_size}, metric_all={x.mean():.3f}/{best.mean():.3f}-mean/best, ' \ + f'past_thr={x[x > thr].mean():.3f}-mean: ' for i, x in enumerate(k): - print('%i,%i' % (round(x[0]), round(x[1])), end=', ' if i < len(k) - 1 else '\n') # use in *.cfg + s += '%i,%i, ' % (round(x[0]), round(x[1])) + if verbose: + LOGGER.info(s[:-2]) return k - if isinstance(path, str): # *.yaml file - with open(path) as f: + if isinstance(dataset, str): # *.yaml file + with open(dataset, errors='ignore') as f: data_dict = yaml.safe_load(f) # model dict from utils.datasets import LoadImagesAndLabels dataset = LoadImagesAndLabels(data_dict['train'], augment=True, rect=True) - else: - dataset = path # dataset # Get label wh shapes = img_size * dataset.shapes / dataset.shapes.max(1, keepdims=True) @@ -116,19 +119,19 @@ def kmean_anchors(path='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen=10 # Filter i = (wh0 < 3.0).any(1).sum() if i: - print(f'{prefix}WARNING: Extremely small objects found. {i} of {len(wh0)} labels are < 3 pixels in size.') + LOGGER.info(f'{PREFIX}WARNING: Extremely small objects found. {i} of {len(wh0)} labels are < 3 pixels in size.') wh = wh0[(wh0 >= 2.0).any(1)] # filter > 2 pixels # wh = wh * (np.random.rand(wh.shape[0], 1) * 0.9 + 0.1) # multiply by random scale 0-1 # Kmeans calculation - print(f'{prefix}Running kmeans for {n} anchors on {len(wh)} points...') + LOGGER.info(f'{PREFIX}Running kmeans for {n} anchors on {len(wh)} points...') s = wh.std(0) # sigmas for whitening k, dist = kmeans(wh / s, n, iter=30) # points, mean distance - assert len(k) == n, print(f'{prefix}ERROR: scipy.cluster.vq.kmeans requested {n} points but returned only {len(k)}') + assert len(k) == n, f'{PREFIX}ERROR: scipy.cluster.vq.kmeans requested {n} points but returned only {len(k)}' k *= s wh = torch.tensor(wh, dtype=torch.float32) # filtered wh0 = torch.tensor(wh0, dtype=torch.float32) # unfiltered - k = print_results(k) + k = print_results(k, verbose=False) # Plot # k, d = [None] * 20, [None] * 20 @@ -145,17 +148,17 @@ def kmean_anchors(path='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen=10 # Evolve npr = np.random f, sh, mp, s = anchor_fitness(k), k.shape, 0.9, 0.1 # fitness, generations, mutation prob, sigma - pbar = tqdm(range(gen), desc=f'{prefix}Evolving anchors with Genetic Algorithm:') # progress bar + pbar = tqdm(range(gen), desc=f'{PREFIX}Evolving anchors with Genetic Algorithm:') # progress bar for _ in pbar: v = np.ones(sh) while (v == 1).all(): # mutate until a change occurs (prevent duplicates) - v = ((npr.random(sh) < mp) * npr.random() * npr.randn(*sh) * s + 1).clip(0.3, 3.0) + v = ((npr.random(sh) < mp) * random.random() * npr.randn(*sh) * s + 1).clip(0.3, 3.0) kg = (k.copy() * v).clip(min=2.0) fg = anchor_fitness(kg) if fg > f: f, k = fg, kg.copy() - pbar.desc = f'{prefix}Evolving anchors with Genetic Algorithm: fitness = {f:.4f}' + pbar.desc = f'{PREFIX}Evolving anchors with Genetic Algorithm: fitness = {f:.4f}' if verbose: - print_results(k) + print_results(k, verbose) return print_results(k) diff --git a/utils/autobatch.py b/utils/autobatch.py new file mode 100644 index 00000000..4fbf32bc --- /dev/null +++ b/utils/autobatch.py @@ -0,0 +1,57 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Auto-batch utils +""" + +from copy import deepcopy + +import numpy as np +import torch +from torch.cuda import amp + +from utils.general import LOGGER, colorstr +from utils.torch_utils import profile + + +def check_train_batch_size(model, imgsz=640): + # Check training batch size + with amp.autocast(): + return autobatch(deepcopy(model).train(), imgsz) # compute optimal batch size + + +def autobatch(model, imgsz=640, fraction=0.9, batch_size=16): + # Automatically estimate best batch size to use `fraction` of available CUDA memory + # Usage: + # import torch + # from utils.autobatch import autobatch + # model = torch.hub.load('ultralytics/yolov3', 'yolov3', autoshape=False) + # print(autobatch(model)) + + prefix = colorstr('AutoBatch: ') + LOGGER.info(f'{prefix}Computing optimal batch size for --imgsz {imgsz}') + device = next(model.parameters()).device # get model device + if device.type == 'cpu': + LOGGER.info(f'{prefix}CUDA not detected, using default CPU batch-size {batch_size}') + return batch_size + + d = str(device).upper() # 'CUDA:0' + properties = torch.cuda.get_device_properties(device) # device properties + t = properties.total_memory / 1024 ** 3 # (GiB) + r = torch.cuda.memory_reserved(device) / 1024 ** 3 # (GiB) + a = torch.cuda.memory_allocated(device) / 1024 ** 3 # (GiB) + f = t - (r + a) # free inside reserved + LOGGER.info(f'{prefix}{d} ({properties.name}) {t:.2f}G total, {r:.2f}G reserved, {a:.2f}G allocated, {f:.2f}G free') + + batch_sizes = [1, 2, 4, 8, 16] + try: + img = [torch.zeros(b, 3, imgsz, imgsz) for b in batch_sizes] + y = profile(img, model, n=3, device=device) + except Exception as e: + LOGGER.warning(f'{prefix}{e}') + + y = [x[2] for x in y if x] # memory [2] + batch_sizes = batch_sizes[:len(y)] + p = np.polyfit(batch_sizes, y, deg=1) # first degree polynomial fit + b = int((f * fraction - p[1]) / p[0]) # y intercept (optimal batch size) + LOGGER.info(f'{prefix}Using batch-size {b} for {d} {t * fraction:.2f}G/{t:.2f}G ({fraction * 100:.0f}%)') + return b diff --git a/utils/aws/mime.sh b/utils/aws/mime.sh deleted file mode 100644 index c319a83c..00000000 --- a/utils/aws/mime.sh +++ /dev/null @@ -1,26 +0,0 @@ -# AWS EC2 instance startup 'MIME' script https://aws.amazon.com/premiumsupport/knowledge-center/execute-user-data-ec2/ -# This script will run on every instance restart, not only on first start -# --- DO NOT COPY ABOVE COMMENTS WHEN PASTING INTO USERDATA --- - -Content-Type: multipart/mixed; boundary="//" -MIME-Version: 1.0 - ---// -Content-Type: text/cloud-config; charset="us-ascii" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Content-Disposition: attachment; filename="cloud-config.txt" - -#cloud-config -cloud_final_modules: -- [scripts-user, always] - ---// -Content-Type: text/x-shellscript; charset="us-ascii" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Content-Disposition: attachment; filename="userdata.txt" - -#!/bin/bash -# --- paste contents of userdata.sh here --- ---// diff --git a/utils/aws/resume.py b/utils/aws/resume.py deleted file mode 100644 index 4b0d4246..00000000 --- a/utils/aws/resume.py +++ /dev/null @@ -1,37 +0,0 @@ -# Resume all interrupted trainings in yolov5/ dir including DDP trainings -# Usage: $ python utils/aws/resume.py - -import os -import sys -from pathlib import Path - -import torch -import yaml - -sys.path.append('./') # to run '$ python *.py' files in subdirectories - -port = 0 # --master_port -path = Path('').resolve() -for last in path.rglob('*/**/last.pt'): - ckpt = torch.load(last) - if ckpt['optimizer'] is None: - continue - - # Load opt.yaml - with open(last.parent.parent / 'opt.yaml') as f: - opt = yaml.safe_load(f) - - # Get device count - d = opt['device'].split(',') # devices - nd = len(d) # number of devices - ddp = nd > 1 or (nd == 0 and torch.cuda.device_count() > 1) # distributed data parallel - - if ddp: # multi-GPU - port += 1 - cmd = f'python -m torch.distributed.launch --nproc_per_node {nd} --master_port {port} train.py --resume {last}' - else: # single-GPU - cmd = f'python train.py --resume {last}' - - cmd += ' > /dev/null 2>&1 &' # redirect output to dev/null and run in daemon thread - print(cmd) - os.system(cmd) diff --git a/utils/aws/userdata.sh b/utils/aws/userdata.sh deleted file mode 100644 index 5846fedb..00000000 --- a/utils/aws/userdata.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -# AWS EC2 instance startup script https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html -# This script will run only once on first instance start (for a re-start script see mime.sh) -# /home/ubuntu (ubuntu) or /home/ec2-user (amazon-linux) is working dir -# Use >300 GB SSD - -cd home/ubuntu -if [ ! -d yolov5 ]; then - echo "Running first-time script." # install dependencies, download COCO, pull Docker - git clone https://github.com/ultralytics/yolov5 -b master && sudo chmod -R 777 yolov5 - cd yolov5 - bash data/scripts/get_coco.sh && echo "Data done." & - sudo docker pull ultralytics/yolov5:latest && echo "Docker done." & - python -m pip install --upgrade pip && pip install -r requirements.txt && python detect.py && echo "Requirements done." & - wait && echo "All tasks done." # finish background tasks -else - echo "Running re-start script." # resume interrupted runs - i=0 - list=$(sudo docker ps -qa) # container list i.e. $'one\ntwo\nthree\nfour' - while IFS= read -r id; do - ((i++)) - echo "restarting container $i: $id" - sudo docker start $id - # sudo docker exec -it $id python train.py --resume # single-GPU - sudo docker exec -d $id python utils/aws/resume.py # multi-scenario - done <<<"$list" -fi diff --git a/utils/callbacks.py b/utils/callbacks.py new file mode 100644 index 00000000..43e81a7c --- /dev/null +++ b/utils/callbacks.py @@ -0,0 +1,76 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Callback utils +""" + + +class Callbacks: + """" + Handles all registered callbacks for Hooks + """ + + # Define the available callbacks + _callbacks = { + 'on_pretrain_routine_start': [], + 'on_pretrain_routine_end': [], + + 'on_train_start': [], + 'on_train_epoch_start': [], + 'on_train_batch_start': [], + 'optimizer_step': [], + 'on_before_zero_grad': [], + 'on_train_batch_end': [], + 'on_train_epoch_end': [], + + 'on_val_start': [], + 'on_val_batch_start': [], + 'on_val_image_end': [], + 'on_val_batch_end': [], + 'on_val_end': [], + + 'on_fit_epoch_end': [], # fit = train + val + 'on_model_save': [], + 'on_train_end': [], + + 'teardown': [], + } + + def register_action(self, hook, name='', callback=None): + """ + Register a new action to a callback hook + + Args: + hook The callback hook name to register the action to + name The name of the action for later reference + callback The callback to fire + """ + assert hook in self._callbacks, f"hook '{hook}' not found in callbacks {self._callbacks}" + assert callable(callback), f"callback '{callback}' is not callable" + self._callbacks[hook].append({'name': name, 'callback': callback}) + + def get_registered_actions(self, hook=None): + """" + Returns all the registered actions by callback hook + + Args: + hook The name of the hook to check, defaults to all + """ + if hook: + return self._callbacks[hook] + else: + return self._callbacks + + def run(self, hook, *args, **kwargs): + """ + Loop through the registered actions and fire all callbacks + + Args: + hook The name of the hook to check, defaults to all + args Arguments to receive from + kwargs Keyword Arguments to receive from + """ + + assert hook in self._callbacks, f"hook '{hook}' not found in callbacks {self._callbacks}" + + for logger in self._callbacks[hook]: + logger['callback'](*args, **kwargs) diff --git a/utils/datasets.py b/utils/datasets.py index 35aa430a..462d561a 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -1,35 +1,41 @@ -# Dataset utils and dataloaders +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Dataloaders and dataset utils +""" import glob import hashlib -import logging -import math +import json import os import random import shutil import time from itertools import repeat -from multiprocessing.pool import ThreadPool +from multiprocessing.pool import Pool, ThreadPool from pathlib import Path from threading import Thread +from zipfile import ZipFile import cv2 import numpy as np import torch import torch.nn.functional as F -from PIL import Image, ExifTags -from torch.utils.data import Dataset +import yaml +from PIL import ExifTags, Image, ImageOps +from torch.utils.data import DataLoader, Dataset, dataloader, distributed from tqdm import tqdm -from utils.general import check_requirements, xyxy2xywh, xywh2xyxy, xywhn2xyxy, xyn2xy, segment2box, segments2boxes, \ - resample_segments, clean_str +from utils.augmentations import Albumentations, augment_hsv, copy_paste, letterbox, mixup, random_perspective +from utils.general import (LOGGER, check_dataset, check_requirements, check_yaml, clean_str, segments2boxes, xyn2xy, + xywh2xyxy, xywhn2xyxy, xyxy2xywhn) from utils.torch_utils import torch_distributed_zero_first # Parameters -help_url = 'https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data' -img_formats = ['bmp', 'jpg', 'jpeg', 'png', 'tif', 'tiff', 'dng', 'webp', 'mpo'] # acceptable image suffixes -vid_formats = ['mov', 'avi', 'mp4', 'mpg', 'mpeg', 'm4v', 'wmv', 'mkv'] # acceptable video suffixes -logger = logging.getLogger(__name__) +HELP_URL = 'https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data' +IMG_FORMATS = ['bmp', 'jpg', 'jpeg', 'png', 'tif', 'tiff', 'dng', 'webp', 'mpo'] # acceptable image suffixes +VID_FORMATS = ['mov', 'avi', 'mp4', 'mpg', 'mpeg', 'm4v', 'wmv', 'mkv'] # acceptable video suffixes +WORLD_SIZE = int(os.getenv('WORLD_SIZE', 1)) # DPP +NUM_THREADS = min(8, os.cpu_count()) # number of multiprocessing threads # Get orientation exif tag for orientation in ExifTags.TAGS.keys(): @@ -60,36 +66,63 @@ def exif_size(img): return s -def create_dataloader(path, imgsz, batch_size, stride, opt, hyp=None, augment=False, cache=False, pad=0.0, rect=False, - rank=-1, world_size=1, workers=8, image_weights=False, quad=False, prefix=''): - # Make sure only the first process in DDP process the dataset first, and the following others can use the cache - with torch_distributed_zero_first(rank): +def exif_transpose(image): + """ + Transpose a PIL image accordingly if it has an EXIF Orientation tag. + Inplace version of https://github.com/python-pillow/Pillow/blob/master/src/PIL/ImageOps.py exif_transpose() + + :param image: The image to transpose. + :return: An image. + """ + exif = image.getexif() + orientation = exif.get(0x0112, 1) # default 1 + if orientation > 1: + method = {2: Image.FLIP_LEFT_RIGHT, + 3: Image.ROTATE_180, + 4: Image.FLIP_TOP_BOTTOM, + 5: Image.TRANSPOSE, + 6: Image.ROTATE_270, + 7: Image.TRANSVERSE, + 8: Image.ROTATE_90, + }.get(orientation) + if method is not None: + image = image.transpose(method) + del exif[0x0112] + image.info["exif"] = exif.tobytes() + return image + + +def create_dataloader(path, imgsz, batch_size, stride, single_cls=False, hyp=None, augment=False, cache=False, pad=0.0, + rect=False, rank=-1, workers=8, image_weights=False, quad=False, prefix='', shuffle=False): + if rect and shuffle: + LOGGER.warning('WARNING: --rect is incompatible with DataLoader shuffle, setting shuffle=False') + shuffle = False + with torch_distributed_zero_first(rank): # init dataset *.cache only once if DDP dataset = LoadImagesAndLabels(path, imgsz, batch_size, - augment=augment, # augment images - hyp=hyp, # augmentation hyperparameters - rect=rect, # rectangular training + augment=augment, # augmentation + hyp=hyp, # hyperparameters + rect=rect, # rectangular batches cache_images=cache, - single_cls=opt.single_cls, + single_cls=single_cls, stride=int(stride), pad=pad, image_weights=image_weights, prefix=prefix) batch_size = min(batch_size, len(dataset)) - nw = min([os.cpu_count() // world_size, batch_size if batch_size > 1 else 0, workers]) # number of workers - sampler = torch.utils.data.distributed.DistributedSampler(dataset) if rank != -1 else None - loader = torch.utils.data.DataLoader if image_weights else InfiniteDataLoader - # Use torch.utils.data.DataLoader() if dataset.properties will update during training else InfiniteDataLoader() - dataloader = loader(dataset, - batch_size=batch_size, - num_workers=nw, - sampler=sampler, - pin_memory=True, - collate_fn=LoadImagesAndLabels.collate_fn4 if quad else LoadImagesAndLabels.collate_fn) - return dataloader, dataset + nw = min([os.cpu_count() // WORLD_SIZE, batch_size if batch_size > 1 else 0, workers]) # number of workers + sampler = None if rank == -1 else distributed.DistributedSampler(dataset, shuffle=shuffle) + loader = DataLoader if image_weights else InfiniteDataLoader # only DataLoader allows for attribute updates + return loader(dataset, + batch_size=batch_size, + shuffle=shuffle and sampler is None, + num_workers=nw, + sampler=sampler, + pin_memory=True, + collate_fn=LoadImagesAndLabels.collate_fn4 if quad else LoadImagesAndLabels.collate_fn), dataset -class InfiniteDataLoader(torch.utils.data.dataloader.DataLoader): +class InfiniteDataLoader(dataloader.DataLoader): """ Dataloader that reuses workers Uses same syntax as vanilla DataLoader @@ -108,7 +141,7 @@ class InfiniteDataLoader(torch.utils.data.dataloader.DataLoader): yield next(self.iterator) -class _RepeatSampler(object): +class _RepeatSampler: """ Sampler that repeats forever Args: @@ -123,9 +156,10 @@ class _RepeatSampler(object): yield from iter(self.sampler) -class LoadImages: # for inference - def __init__(self, path, img_size=640, stride=32): - p = str(Path(path).absolute()) # os-agnostic absolute path +class LoadImages: + # image/video dataloader, i.e. `python detect.py --source image.jpg/vid.mp4` + def __init__(self, path, img_size=640, stride=32, auto=True): + p = str(Path(path).resolve()) # os-agnostic absolute path if '*' in p: files = sorted(glob.glob(p, recursive=True)) # glob elif os.path.isdir(p): @@ -135,8 +169,8 @@ class LoadImages: # for inference else: raise Exception(f'ERROR: {p} does not exist') - images = [x for x in files if x.split('.')[-1].lower() in img_formats] - videos = [x for x in files if x.split('.')[-1].lower() in vid_formats] + images = [x for x in files if x.split('.')[-1].lower() in IMG_FORMATS] + videos = [x for x in files if x.split('.')[-1].lower() in VID_FORMATS] ni, nv = len(images), len(videos) self.img_size = img_size @@ -145,12 +179,13 @@ class LoadImages: # for inference self.nf = ni + nv # number of files self.video_flag = [False] * ni + [True] * nv self.mode = 'image' + self.auto = auto if any(videos): self.new_video(videos[0]) # new video else: self.cap = None assert self.nf > 0, f'No images or videos found in {p}. ' \ - f'Supported formats are:\nimages: {img_formats}\nvideos: {vid_formats}' + f'Supported formats are:\nimages: {IMG_FORMATS}\nvideos: {VID_FORMATS}' def __iter__(self): self.count = 0 @@ -176,23 +211,23 @@ class LoadImages: # for inference ret_val, img0 = self.cap.read() self.frame += 1 - print(f'video {self.count + 1}/{self.nf} ({self.frame}/{self.frames}) {path}: ', end='') + s = f'video {self.count + 1}/{self.nf} ({self.frame}/{self.frames}) {path}: ' else: # Read image self.count += 1 img0 = cv2.imread(path) # BGR - assert img0 is not None, 'Image Not Found ' + path - print(f'image {self.count}/{self.nf} {path}: ', end='') + assert img0 is not None, f'Image Not Found {path}' + s = f'image {self.count}/{self.nf} {path}: ' # Padded resize - img = letterbox(img0, self.img_size, stride=self.stride)[0] + img = letterbox(img0, self.img_size, stride=self.stride, auto=self.auto)[0] # Convert - img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416 + img = img.transpose((2, 0, 1))[::-1] # HWC to CHW, BGR to RGB img = np.ascontiguousarray(img) - return path, img, img0, self.cap + return path, img, img0, self.cap, s def new_video(self, path): self.frame = 0 @@ -204,18 +239,12 @@ class LoadImages: # for inference class LoadWebcam: # for inference + # local webcam dataloader, i.e. `python detect.py --source 0` def __init__(self, pipe='0', img_size=640, stride=32): self.img_size = img_size self.stride = stride - - if pipe.isnumeric(): - pipe = eval(pipe) # local camera - # pipe = 'rtsp://192.168.1.64/1' # IP camera - # pipe = 'rtsp://username:password@192.168.1.64/1' # IP camera with login - # pipe = 'http://wmccpinetop.axiscam.net/mjpg/video.mjpg' # IP golf camera - - self.pipe = pipe - self.cap = cv2.VideoCapture(pipe) # video capture object + self.pipe = eval(pipe) if pipe.isnumeric() else pipe + self.cap = cv2.VideoCapture(self.pipe) # video capture object self.cap.set(cv2.CAP_PROP_BUFFERSIZE, 3) # set buffer size def __iter__(self): @@ -230,45 +259,36 @@ class LoadWebcam: # for inference raise StopIteration # Read frame - if self.pipe == 0: # local camera - ret_val, img0 = self.cap.read() - img0 = cv2.flip(img0, 1) # flip left-right - else: # IP camera - n = 0 - while True: - n += 1 - self.cap.grab() - if n % 30 == 0: # skip frames - ret_val, img0 = self.cap.retrieve() - if ret_val: - break + ret_val, img0 = self.cap.read() + img0 = cv2.flip(img0, 1) # flip left-right # Print assert ret_val, f'Camera Error {self.pipe}' img_path = 'webcam.jpg' - print(f'webcam {self.count}: ', end='') + s = f'webcam {self.count}: ' # Padded resize img = letterbox(img0, self.img_size, stride=self.stride)[0] # Convert - img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416 + img = img.transpose((2, 0, 1))[::-1] # HWC to CHW, BGR to RGB img = np.ascontiguousarray(img) - return img_path, img, img0, None + return img_path, img, img0, None, s def __len__(self): return 0 -class LoadStreams: # multiple IP or RTSP cameras - def __init__(self, sources='streams.txt', img_size=640, stride=32): +class LoadStreams: + # streamloader, i.e. `python detect.py --source 'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP streams` + def __init__(self, sources='streams.txt', img_size=640, stride=32, auto=True): self.mode = 'stream' self.img_size = img_size self.stride = stride if os.path.isfile(sources): - with open(sources, 'r') as f: + with open(sources) as f: sources = [x.strip() for x in f.read().strip().splitlines() if len(x.strip())] else: sources = [sources] @@ -276,43 +296,49 @@ class LoadStreams: # multiple IP or RTSP cameras n = len(sources) self.imgs, self.fps, self.frames, self.threads = [None] * n, [0] * n, [0] * n, [None] * n self.sources = [clean_str(x) for x in sources] # clean source names for later + self.auto = auto for i, s in enumerate(sources): # index, source # Start thread to read frames from video stream - print(f'{i + 1}/{n}: {s}... ', end='') + st = f'{i + 1}/{n}: {s}... ' if 'youtube.com/' in s or 'youtu.be/' in s: # if source is YouTube video check_requirements(('pafy', 'youtube_dl')) import pafy s = pafy.new(s).getbest(preftype="mp4").url # YouTube URL s = eval(s) if s.isnumeric() else s # i.e. s = '0' local webcam cap = cv2.VideoCapture(s) - assert cap.isOpened(), f'Failed to open {s}' + assert cap.isOpened(), f'{st}Failed to open {s}' w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) self.fps[i] = max(cap.get(cv2.CAP_PROP_FPS) % 100, 0) or 30.0 # 30 FPS fallback self.frames[i] = max(int(cap.get(cv2.CAP_PROP_FRAME_COUNT)), 0) or float('inf') # infinite stream fallback _, self.imgs[i] = cap.read() # guarantee first frame - self.threads[i] = Thread(target=self.update, args=([i, cap]), daemon=True) - print(f" success ({self.frames[i]} frames {w}x{h} at {self.fps[i]:.2f} FPS)") + self.threads[i] = Thread(target=self.update, args=([i, cap, s]), daemon=True) + LOGGER.info(f"{st} Success ({self.frames[i]} frames {w}x{h} at {self.fps[i]:.2f} FPS)") self.threads[i].start() - print('') # newline + LOGGER.info('') # newline # check for common shapes - s = np.stack([letterbox(x, self.img_size, stride=self.stride)[0].shape for x in self.imgs], 0) # shapes + s = np.stack([letterbox(x, self.img_size, stride=self.stride, auto=self.auto)[0].shape for x in self.imgs]) self.rect = np.unique(s, axis=0).shape[0] == 1 # rect inference if all shapes equal if not self.rect: - print('WARNING: Different stream shapes detected. For optimal performance supply similarly-shaped streams.') + LOGGER.warning('WARNING: Stream shapes differ. For optimal performance supply similarly-shaped streams.') - def update(self, i, cap): + def update(self, i, cap, stream): # Read stream `i` frames in daemon thread - n, f = 0, self.frames[i] + n, f, read = 0, self.frames[i], 1 # frame number, frame array, inference every 'read' frame while cap.isOpened() and n < f: n += 1 # _, self.imgs[index] = cap.read() cap.grab() - if n % 4: # read every 4th frame + if n % read == 0: success, im = cap.retrieve() - self.imgs[i] = im if success else self.imgs[i] * 0 + if success: + self.imgs[i] = im + else: + LOGGER.warning('WARNING: Video stream unresponsive, please check your IP camera connection.') + self.imgs[i] *= 0 + cap.open(stream) # re-open stream if signal was lost time.sleep(1 / self.fps[i]) # wait time def __iter__(self): @@ -327,28 +353,31 @@ class LoadStreams: # multiple IP or RTSP cameras # Letterbox img0 = self.imgs.copy() - img = [letterbox(x, self.img_size, auto=self.rect, stride=self.stride)[0] for x in img0] + img = [letterbox(x, self.img_size, stride=self.stride, auto=self.rect and self.auto)[0] for x in img0] # Stack img = np.stack(img, 0) # Convert - img = img[:, :, :, ::-1].transpose(0, 3, 1, 2) # BGR to RGB, to bsx3x416x416 + img = img[..., ::-1].transpose((0, 3, 1, 2)) # BGR to RGB, BHWC to BCHW img = np.ascontiguousarray(img) - return self.sources, img, img0, None + return self.sources, img, img0, None, '' def __len__(self): - return 0 # 1E12 frames = 32 streams at 30 FPS for 30 years + return len(self.sources) # 1E12 frames = 32 streams at 30 FPS for 30 years def img2label_paths(img_paths): # Define label paths as a function of image paths sa, sb = os.sep + 'images' + os.sep, os.sep + 'labels' + os.sep # /images/, /labels/ substrings - return ['txt'.join(x.replace(sa, sb, 1).rsplit(x.split('.')[-1], 1)) for x in img_paths] + return [sb.join(x.rsplit(sa, 1)).rsplit('.', 1)[0] + '.txt' for x in img_paths] -class LoadImagesAndLabels(Dataset): # for training/testing +class LoadImagesAndLabels(Dataset): + # train_loader/val_loader, loads images and labels for training and validation + cache_version = 0.6 # dataset labels *.cache version + def __init__(self, path, img_size=640, batch_size=16, augment=False, hyp=None, rect=False, image_weights=False, cache_images=False, single_cls=False, stride=32, pad=0.0, prefix=''): self.img_size = img_size @@ -360,6 +389,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing self.mosaic_border = [-img_size // 2, -img_size // 2] self.stride = stride self.path = path + self.albumentations = Albumentations() if augment else None try: f = [] # image files @@ -367,29 +397,29 @@ class LoadImagesAndLabels(Dataset): # for training/testing p = Path(p) # os-agnostic if p.is_dir(): # dir f += glob.glob(str(p / '**' / '*.*'), recursive=True) - # f = list(p.rglob('**/*.*')) # pathlib + # f = list(p.rglob('*.*')) # pathlib elif p.is_file(): # file - with open(p, 'r') as t: + with open(p) as t: t = t.read().strip().splitlines() parent = str(p.parent) + os.sep f += [x.replace('./', parent) if x.startswith('./') else x for x in t] # local to global path # f += [p.parent / x.lstrip(os.sep) for x in t] # local to global path (pathlib) else: raise Exception(f'{prefix}{p} does not exist') - self.img_files = sorted([x.replace('/', os.sep) for x in f if x.split('.')[-1].lower() in img_formats]) - # self.img_files = sorted([x for x in f if x.suffix[1:].lower() in img_formats]) # pathlib + self.img_files = sorted(x.replace('/', os.sep) for x in f if x.split('.')[-1].lower() in IMG_FORMATS) + # self.img_files = sorted([x for x in f if x.suffix[1:].lower() in IMG_FORMATS]) # pathlib assert self.img_files, f'{prefix}No images found' except Exception as e: - raise Exception(f'{prefix}Error loading data from {path}: {e}\nSee {help_url}') + raise Exception(f'{prefix}Error loading data from {path}: {e}\nSee {HELP_URL}') # Check cache self.label_files = img2label_paths(self.img_files) # labels - cache_path = (p if p.is_file() else Path(self.label_files[0]).parent).with_suffix('.cache') # cached labels - if cache_path.is_file(): - cache, exists = torch.load(cache_path), True # load - if cache['hash'] != get_hash(self.label_files + self.img_files): # changed - cache, exists = self.cache_labels(cache_path, prefix), False # re-cache - else: + cache_path = (p if p.is_file() else Path(self.label_files[0]).parent).with_suffix('.cache') + try: + cache, exists = np.load(cache_path, allow_pickle=True).item(), True # load dict + assert cache['version'] == self.cache_version # same version + assert cache['hash'] == get_hash(self.label_files + self.img_files) # same hash + except: cache, exists = self.cache_labels(cache_path, prefix), False # cache # Display cache @@ -397,20 +427,17 @@ class LoadImagesAndLabels(Dataset): # for training/testing if exists: d = f"Scanning '{cache_path}' images and labels... {nf} found, {nm} missing, {ne} empty, {nc} corrupted" tqdm(None, desc=prefix + d, total=n, initial=n) # display cache results - assert nf > 0 or not augment, f'{prefix}No labels in {cache_path}. Can not train without labels. See {help_url}' + if cache['msgs']: + LOGGER.info('\n'.join(cache['msgs'])) # display warnings + assert nf > 0 or not augment, f'{prefix}No labels in {cache_path}. Can not train without labels. See {HELP_URL}' # Read cache - cache.pop('hash') # remove hash - cache.pop('version') # remove version + [cache.pop(k) for k in ('hash', 'version', 'msgs')] # remove items labels, shapes, self.segments = zip(*cache.values()) self.labels = list(labels) self.shapes = np.array(shapes, dtype=np.float64) self.img_files = list(cache.keys()) # update self.label_files = img2label_paths(cache.keys()) # update - if single_cls: - for x in self.labels: - x[:, 0] = 0 - n = len(shapes) # number of images bi = np.floor(np.arange(n) / batch_size).astype(np.int) # batch index nb = bi[-1] + 1 # number of batches @@ -418,6 +445,20 @@ class LoadImagesAndLabels(Dataset): # for training/testing self.n = n self.indices = range(n) + # Update labels + include_class = [] # filter labels to include only these classes (optional) + include_class_array = np.array(include_class).reshape(1, -1) + for i, (label, segment) in enumerate(zip(self.labels, self.segments)): + if include_class: + j = (label[:, 0:1] == include_class_array).any(1) + self.labels[i] = label[j] + if segment: + self.segments[i] = segment[j] + if single_cls: # single-class training, merge all classes into 0 + self.labels[i][:, 0] = 0 + if segment: + self.segments[i][:, 0] = 0 + # Rectangular Training if self.rect: # Sort by aspect ratio @@ -443,74 +484,61 @@ class LoadImagesAndLabels(Dataset): # for training/testing self.batch_shapes = np.ceil(np.array(shapes) * img_size / stride + pad).astype(np.int) * stride # Cache images into memory for faster training (WARNING: large datasets may exceed system RAM) - self.imgs = [None] * n + self.imgs, self.img_npy = [None] * n, [None] * n if cache_images: + if cache_images == 'disk': + self.im_cache_dir = Path(Path(self.img_files[0]).parent.as_posix() + '_npy') + self.img_npy = [self.im_cache_dir / Path(f).with_suffix('.npy').name for f in self.img_files] + self.im_cache_dir.mkdir(parents=True, exist_ok=True) gb = 0 # Gigabytes of cached images self.img_hw0, self.img_hw = [None] * n, [None] * n - results = ThreadPool(8).imap(lambda x: load_image(*x), zip(repeat(self), range(n))) # 8 threads + results = ThreadPool(NUM_THREADS).imap(lambda x: load_image(*x), zip(repeat(self), range(n))) pbar = tqdm(enumerate(results), total=n) for i, x in pbar: - self.imgs[i], self.img_hw0[i], self.img_hw[i] = x # img, hw_original, hw_resized = load_image(self, i) - gb += self.imgs[i].nbytes - pbar.desc = f'{prefix}Caching images ({gb / 1E9:.1f}GB)' + if cache_images == 'disk': + if not self.img_npy[i].exists(): + np.save(self.img_npy[i].as_posix(), x[0]) + gb += self.img_npy[i].stat().st_size + else: + self.imgs[i], self.img_hw0[i], self.img_hw[i] = x # im, hw_orig, hw_resized = load_image(self, i) + gb += self.imgs[i].nbytes + pbar.desc = f'{prefix}Caching images ({gb / 1E9:.1f}GB {cache_images})' pbar.close() def cache_labels(self, path=Path('./labels.cache'), prefix=''): # Cache dataset labels, check images and read shapes x = {} # dict - nm, nf, ne, nc = 0, 0, 0, 0 # number missing, found, empty, duplicate - pbar = tqdm(zip(self.img_files, self.label_files), desc='Scanning images', total=len(self.img_files)) - for i, (im_file, lb_file) in enumerate(pbar): - try: - # verify images - im = Image.open(im_file) - im.verify() # PIL verify - shape = exif_size(im) # image size - segments = [] # instance segments - assert (shape[0] > 9) & (shape[1] > 9), f'image size {shape} <10 pixels' - assert im.format.lower() in img_formats, f'invalid image format {im.format}' + nm, nf, ne, nc, msgs = 0, 0, 0, 0, [] # number missing, found, empty, corrupt, messages + desc = f"{prefix}Scanning '{path.parent / path.stem}' images and labels..." + with Pool(NUM_THREADS) as pool: + pbar = tqdm(pool.imap(verify_image_label, zip(self.img_files, self.label_files, repeat(prefix))), + desc=desc, total=len(self.img_files)) + for im_file, l, shape, segments, nm_f, nf_f, ne_f, nc_f, msg in pbar: + nm += nm_f + nf += nf_f + ne += ne_f + nc += nc_f + if im_file: + x[im_file] = [l, shape, segments] + if msg: + msgs.append(msg) + pbar.desc = f"{desc}{nf} found, {nm} missing, {ne} empty, {nc} corrupted" - # verify labels - if os.path.isfile(lb_file): - nf += 1 # label found - with open(lb_file, 'r') as f: - l = [x.split() for x in f.read().strip().splitlines() if len(x)] - if any([len(x) > 8 for x in l]): # is segment - classes = np.array([x[0] for x in l], dtype=np.float32) - segments = [np.array(x[1:], dtype=np.float32).reshape(-1, 2) for x in l] # (cls, xy1...) - l = np.concatenate((classes.reshape(-1, 1), segments2boxes(segments)), 1) # (cls, xywh) - l = np.array(l, dtype=np.float32) - if len(l): - assert l.shape[1] == 5, 'labels require 5 columns each' - assert (l >= 0).all(), 'negative labels' - assert (l[:, 1:] <= 1).all(), 'non-normalized or out of bounds coordinate labels' - assert np.unique(l, axis=0).shape[0] == l.shape[0], 'duplicate labels' - else: - ne += 1 # label empty - l = np.zeros((0, 5), dtype=np.float32) - else: - nm += 1 # label missing - l = np.zeros((0, 5), dtype=np.float32) - x[im_file] = [l, shape, segments] - except Exception as e: - nc += 1 - logging.info(f'{prefix}WARNING: Ignoring corrupted image and/or label {im_file}: {e}') - - pbar.desc = f"{prefix}Scanning '{path.parent / path.stem}' images and labels... " \ - f"{nf} found, {nm} missing, {ne} empty, {nc} corrupted" pbar.close() - + if msgs: + LOGGER.info('\n'.join(msgs)) if nf == 0: - logging.info(f'{prefix}WARNING: No labels found in {path}. See {help_url}') - + LOGGER.warning(f'{prefix}WARNING: No labels found in {path}. See {HELP_URL}') x['hash'] = get_hash(self.label_files + self.img_files) - x['results'] = nf, nm, ne, nc, i + 1 - x['version'] = 0.2 # cache version + x['results'] = nf, nm, ne, nc, len(self.img_files) + x['msgs'] = msgs # warnings + x['version'] = self.cache_version # cache version try: - torch.save(x, path) # save cache for next time - logging.info(f'{prefix}New cache created: {path}') + np.save(path, x) # save cache for next time + path.with_suffix('.cache.npy').rename(path) # remove .npy suffix + LOGGER.info(f'{prefix}New cache created: {path}') except Exception as e: - logging.info(f'{prefix}WARNING: Cache directory {path.parent} is not writeable: {e}') # path not writeable + LOGGER.warning(f'{prefix}WARNING: Cache directory {path.parent} is not writeable: {e}') # not writeable return x def __len__(self): @@ -532,12 +560,9 @@ class LoadImagesAndLabels(Dataset): # for training/testing img, labels = load_mosaic(self, index) shapes = None - # MixUp https://arxiv.org/pdf/1710.09412.pdf + # MixUp augmentation if random.random() < hyp['mixup']: - img2, labels2 = load_mosaic(self, random.randint(0, self.n - 1)) - r = np.random.beta(8.0, 8.0) # mixup ratio, alpha=beta=8.0 - img = (img * r + img2 * (1 - r)).astype(np.uint8) - labels = np.concatenate((labels, labels2), 0) + img, labels = mixup(img, labels, *load_mosaic(self, random.randint(0, self.n - 1))) else: # Load image @@ -552,9 +577,7 @@ class LoadImagesAndLabels(Dataset): # for training/testing if labels.size: # normalized xywh to pixel xyxy format labels[:, 1:] = xywhn2xyxy(labels[:, 1:], ratio[0] * w, ratio[1] * h, padw=pad[0], padh=pad[1]) - if self.augment: - # Augment imagespace - if not mosaic: + if self.augment: img, labels = random_perspective(img, labels, degrees=hyp['degrees'], translate=hyp['translate'], @@ -562,38 +585,39 @@ class LoadImagesAndLabels(Dataset): # for training/testing shear=hyp['shear'], perspective=hyp['perspective']) - # Augment colorspace - augment_hsv(img, hgain=hyp['hsv_h'], sgain=hyp['hsv_s'], vgain=hyp['hsv_v']) - - # Apply cutouts - # if random.random() < 0.9: - # labels = cutout(img, labels) - - nL = len(labels) # number of labels - if nL: - labels[:, 1:5] = xyxy2xywh(labels[:, 1:5]) # convert xyxy to xywh - labels[:, [2, 4]] /= img.shape[0] # normalized height 0-1 - labels[:, [1, 3]] /= img.shape[1] # normalized width 0-1 + nl = len(labels) # number of labels + if nl: + labels[:, 1:5] = xyxy2xywhn(labels[:, 1:5], w=img.shape[1], h=img.shape[0], clip=True, eps=1E-3) if self.augment: - # flip up-down + # Albumentations + img, labels = self.albumentations(img, labels) + nl = len(labels) # update after albumentations + + # HSV color-space + augment_hsv(img, hgain=hyp['hsv_h'], sgain=hyp['hsv_s'], vgain=hyp['hsv_v']) + + # Flip up-down if random.random() < hyp['flipud']: img = np.flipud(img) - if nL: + if nl: labels[:, 2] = 1 - labels[:, 2] - # flip left-right + # Flip left-right if random.random() < hyp['fliplr']: img = np.fliplr(img) - if nL: + if nl: labels[:, 1] = 1 - labels[:, 1] - labels_out = torch.zeros((nL, 6)) - if nL: + # Cutouts + # labels = cutout(img, labels, p=0.5) + + labels_out = torch.zeros((nl, 6)) + if nl: labels_out[:, 1:] = torch.from_numpy(labels) # Convert - img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416 + img = img.transpose((2, 0, 1))[::-1] # HWC to CHW, BGR to RGB img = np.ascontiguousarray(img) return torch.from_numpy(img), labels_out, self.img_files[index], shapes @@ -611,13 +635,13 @@ class LoadImagesAndLabels(Dataset): # for training/testing n = len(shapes) // 4 img4, label4, path4, shapes4 = [], [], path[:n], shapes[:n] - ho = torch.tensor([[0., 0, 0, 1, 0, 0]]) - wo = torch.tensor([[0., 0, 1, 0, 0, 0]]) - s = torch.tensor([[1, 1, .5, .5, .5, .5]]) # scale + ho = torch.tensor([[0.0, 0, 0, 1, 0, 0]]) + wo = torch.tensor([[0.0, 0, 1, 0, 0, 0]]) + s = torch.tensor([[1, 1, 0.5, 0.5, 0.5, 0.5]]) # scale for i in range(n): # zidane torch.zeros(16,3,720,1280) # BCHW i *= 4 if random.random() < 0.5: - im = F.interpolate(img[i].unsqueeze(0).float(), scale_factor=2., mode='bilinear', align_corners=False)[ + im = F.interpolate(img[i].unsqueeze(0).float(), scale_factor=2.0, mode='bilinear', align_corners=False)[ 0].type(img[i].type()) l = label[i] else: @@ -633,55 +657,34 @@ class LoadImagesAndLabels(Dataset): # for training/testing # Ancillary functions -------------------------------------------------------------------------------------------------- -def load_image(self, index): - # loads 1 image from dataset, returns img, original hw, resized hw - img = self.imgs[index] - if img is None: # not cached - path = self.img_files[index] - img = cv2.imread(path) # BGR - assert img is not None, 'Image Not Found ' + path - h0, w0 = img.shape[:2] # orig hw +def load_image(self, i): + # loads 1 image from dataset index 'i', returns im, original hw, resized hw + im = self.imgs[i] + if im is None: # not cached in ram + npy = self.img_npy[i] + if npy and npy.exists(): # load npy + im = np.load(npy) + else: # read image + path = self.img_files[i] + im = cv2.imread(path) # BGR + assert im is not None, f'Image Not Found {path}' + h0, w0 = im.shape[:2] # orig hw r = self.img_size / max(h0, w0) # ratio if r != 1: # if sizes are not equal - img = cv2.resize(img, (int(w0 * r), int(h0 * r)), - interpolation=cv2.INTER_AREA if r < 1 and not self.augment else cv2.INTER_LINEAR) - return img, (h0, w0), img.shape[:2] # img, hw_original, hw_resized + im = cv2.resize(im, (int(w0 * r), int(h0 * r)), + interpolation=cv2.INTER_AREA if r < 1 and not self.augment else cv2.INTER_LINEAR) + return im, (h0, w0), im.shape[:2] # im, hw_original, hw_resized else: - return self.imgs[index], self.img_hw0[index], self.img_hw[index] # img, hw_original, hw_resized - - -def augment_hsv(img, hgain=0.5, sgain=0.5, vgain=0.5): - r = np.random.uniform(-1, 1, 3) * [hgain, sgain, vgain] + 1 # random gains - hue, sat, val = cv2.split(cv2.cvtColor(img, cv2.COLOR_BGR2HSV)) - dtype = img.dtype # uint8 - - x = np.arange(0, 256, dtype=np.int16) - lut_hue = ((x * r[0]) % 180).astype(dtype) - lut_sat = np.clip(x * r[1], 0, 255).astype(dtype) - lut_val = np.clip(x * r[2], 0, 255).astype(dtype) - - img_hsv = cv2.merge((cv2.LUT(hue, lut_hue), cv2.LUT(sat, lut_sat), cv2.LUT(val, lut_val))).astype(dtype) - cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) # no return needed - - -def hist_equalize(img, clahe=True, bgr=False): - # Equalize histogram on BGR image 'img' with img.shape(n,m,3) and range 0-255 - yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV if bgr else cv2.COLOR_RGB2YUV) - if clahe: - c = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8)) - yuv[:, :, 0] = c.apply(yuv[:, :, 0]) - else: - yuv[:, :, 0] = cv2.equalizeHist(yuv[:, :, 0]) # equalize Y channel histogram - return cv2.cvtColor(yuv, cv2.COLOR_YUV2BGR if bgr else cv2.COLOR_YUV2RGB) # convert YUV image to RGB + return self.imgs[i], self.img_hw0[i], self.img_hw[i] # im, hw_original, hw_resized def load_mosaic(self, index): - # loads images in a 4-mosaic - + # 4-mosaic loader. Loads 1 image + 3 random images into a 4-image mosaic labels4, segments4 = [], [] s = self.img_size - yc, xc = [int(random.uniform(-x, 2 * s + x)) for x in self.mosaic_border] # mosaic center x, y + yc, xc = (int(random.uniform(-x, 2 * s + x)) for x in self.mosaic_border) # mosaic center x, y indices = [index] + random.choices(self.indices, k=3) # 3 additional image indices + random.shuffle(indices) for i, index in enumerate(indices): # Load image img, _, (h, w) = load_image(self, index) @@ -720,6 +723,7 @@ def load_mosaic(self, index): # img4, labels4 = replicate(img4, labels4) # replicate # Augment + img4, labels4, segments4 = copy_paste(img4, labels4, segments4, p=self.hyp['copy_paste']) img4, labels4 = random_perspective(img4, labels4, segments4, degrees=self.hyp['degrees'], translate=self.hyp['translate'], @@ -732,11 +736,11 @@ def load_mosaic(self, index): def load_mosaic9(self, index): - # loads images in a 9-mosaic - + # 9-mosaic loader. Loads 1 image + 8 random images into a 9-image mosaic labels9, segments9 = [], [] s = self.img_size indices = [index] + random.choices(self.indices, k=8) # 8 additional image indices + random.shuffle(indices) for i, index in enumerate(indices): # Load image img, _, (h, w) = load_image(self, index) @@ -764,7 +768,7 @@ def load_mosaic9(self, index): c = s - w, s + h0 - hp - h, s, s + h0 - hp padx, pady = c[:2] - x1, y1, x2, y2 = [max(x, 0) for x in c] # allocate coords + x1, y1, x2, y2 = (max(x, 0) for x in c) # allocate coords # Labels labels, segments = self.labels[index].copy(), self.segments[index].copy() @@ -779,7 +783,7 @@ def load_mosaic9(self, index): hp, wp = h, w # height, width previous # Offset - yc, xc = [int(random.uniform(0, s)) for _ in self.mosaic_border] # mosaic center x, y + yc, xc = (int(random.uniform(0, s)) for _ in self.mosaic_border) # mosaic center x, y img9 = img9[yc:yc + 2 * s, xc:xc + 2 * s] # Concat/clip labels @@ -805,199 +809,6 @@ def load_mosaic9(self, index): return img9, labels9 -def replicate(img, labels): - # Replicate labels - h, w = img.shape[:2] - boxes = labels[:, 1:].astype(int) - x1, y1, x2, y2 = boxes.T - s = ((x2 - x1) + (y2 - y1)) / 2 # side length (pixels) - for i in s.argsort()[:round(s.size * 0.5)]: # smallest indices - x1b, y1b, x2b, y2b = boxes[i] - bh, bw = y2b - y1b, x2b - x1b - yc, xc = int(random.uniform(0, h - bh)), int(random.uniform(0, w - bw)) # offset x, y - x1a, y1a, x2a, y2a = [xc, yc, xc + bw, yc + bh] - img[y1a:y2a, x1a:x2a] = img[y1b:y2b, x1b:x2b] # img4[ymin:ymax, xmin:xmax] - labels = np.append(labels, [[labels[i, 0], x1a, y1a, x2a, y2a]], axis=0) - - return img, labels - - -def letterbox(img, new_shape=(640, 640), color=(114, 114, 114), auto=True, scaleFill=False, scaleup=True, stride=32): - # Resize and pad image while meeting stride-multiple constraints - shape = img.shape[:2] # current shape [height, width] - if isinstance(new_shape, int): - new_shape = (new_shape, new_shape) - - # Scale ratio (new / old) - r = min(new_shape[0] / shape[0], new_shape[1] / shape[1]) - if not scaleup: # only scale down, do not scale up (for better test mAP) - r = min(r, 1.0) - - # Compute padding - ratio = r, r # width, height ratios - new_unpad = int(round(shape[1] * r)), int(round(shape[0] * r)) - dw, dh = new_shape[1] - new_unpad[0], new_shape[0] - new_unpad[1] # wh padding - if auto: # minimum rectangle - dw, dh = np.mod(dw, stride), np.mod(dh, stride) # wh padding - elif scaleFill: # stretch - dw, dh = 0.0, 0.0 - new_unpad = (new_shape[1], new_shape[0]) - ratio = new_shape[1] / shape[1], new_shape[0] / shape[0] # width, height ratios - - dw /= 2 # divide padding into 2 sides - dh /= 2 - - if shape[::-1] != new_unpad: # resize - img = cv2.resize(img, new_unpad, interpolation=cv2.INTER_LINEAR) - top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1)) - left, right = int(round(dw - 0.1)), int(round(dw + 0.1)) - img = cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color) # add border - return img, ratio, (dw, dh) - - -def random_perspective(img, targets=(), segments=(), degrees=10, translate=.1, scale=.1, shear=10, perspective=0.0, - border=(0, 0)): - # torchvision.transforms.RandomAffine(degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-10, 10)) - # targets = [cls, xyxy] - - height = img.shape[0] + border[0] * 2 # shape(h,w,c) - width = img.shape[1] + border[1] * 2 - - # Center - C = np.eye(3) - C[0, 2] = -img.shape[1] / 2 # x translation (pixels) - C[1, 2] = -img.shape[0] / 2 # y translation (pixels) - - # Perspective - P = np.eye(3) - P[2, 0] = random.uniform(-perspective, perspective) # x perspective (about y) - P[2, 1] = random.uniform(-perspective, perspective) # y perspective (about x) - - # Rotation and Scale - R = np.eye(3) - a = random.uniform(-degrees, degrees) - # a += random.choice([-180, -90, 0, 90]) # add 90deg rotations to small rotations - s = random.uniform(1 - scale, 1 + scale) - # s = 2 ** random.uniform(-scale, scale) - R[:2] = cv2.getRotationMatrix2D(angle=a, center=(0, 0), scale=s) - - # Shear - S = np.eye(3) - S[0, 1] = math.tan(random.uniform(-shear, shear) * math.pi / 180) # x shear (deg) - S[1, 0] = math.tan(random.uniform(-shear, shear) * math.pi / 180) # y shear (deg) - - # Translation - T = np.eye(3) - T[0, 2] = random.uniform(0.5 - translate, 0.5 + translate) * width # x translation (pixels) - T[1, 2] = random.uniform(0.5 - translate, 0.5 + translate) * height # y translation (pixels) - - # Combined rotation matrix - M = T @ S @ R @ P @ C # order of operations (right to left) is IMPORTANT - if (border[0] != 0) or (border[1] != 0) or (M != np.eye(3)).any(): # image changed - if perspective: - img = cv2.warpPerspective(img, M, dsize=(width, height), borderValue=(114, 114, 114)) - else: # affine - img = cv2.warpAffine(img, M[:2], dsize=(width, height), borderValue=(114, 114, 114)) - - # Visualize - # import matplotlib.pyplot as plt - # ax = plt.subplots(1, 2, figsize=(12, 6))[1].ravel() - # ax[0].imshow(img[:, :, ::-1]) # base - # ax[1].imshow(img2[:, :, ::-1]) # warped - - # Transform label coordinates - n = len(targets) - if n: - use_segments = any(x.any() for x in segments) - new = np.zeros((n, 4)) - if use_segments: # warp segments - segments = resample_segments(segments) # upsample - for i, segment in enumerate(segments): - xy = np.ones((len(segment), 3)) - xy[:, :2] = segment - xy = xy @ M.T # transform - xy = xy[:, :2] / xy[:, 2:3] if perspective else xy[:, :2] # perspective rescale or affine - - # clip - new[i] = segment2box(xy, width, height) - - else: # warp boxes - xy = np.ones((n * 4, 3)) - xy[:, :2] = targets[:, [1, 2, 3, 4, 1, 4, 3, 2]].reshape(n * 4, 2) # x1y1, x2y2, x1y2, x2y1 - xy = xy @ M.T # transform - xy = (xy[:, :2] / xy[:, 2:3] if perspective else xy[:, :2]).reshape(n, 8) # perspective rescale or affine - - # create new boxes - x = xy[:, [0, 2, 4, 6]] - y = xy[:, [1, 3, 5, 7]] - new = np.concatenate((x.min(1), y.min(1), x.max(1), y.max(1))).reshape(4, n).T - - # clip - new[:, [0, 2]] = new[:, [0, 2]].clip(0, width) - new[:, [1, 3]] = new[:, [1, 3]].clip(0, height) - - # filter candidates - i = box_candidates(box1=targets[:, 1:5].T * s, box2=new.T, area_thr=0.01 if use_segments else 0.10) - targets = targets[i] - targets[:, 1:5] = new[i] - - return img, targets - - -def box_candidates(box1, box2, wh_thr=2, ar_thr=20, area_thr=0.1, eps=1e-16): # box1(4,n), box2(4,n) - # Compute candidate boxes: box1 before augment, box2 after augment, wh_thr (pixels), aspect_ratio_thr, area_ratio - w1, h1 = box1[2] - box1[0], box1[3] - box1[1] - w2, h2 = box2[2] - box2[0], box2[3] - box2[1] - ar = np.maximum(w2 / (h2 + eps), h2 / (w2 + eps)) # aspect ratio - return (w2 > wh_thr) & (h2 > wh_thr) & (w2 * h2 / (w1 * h1 + eps) > area_thr) & (ar < ar_thr) # candidates - - -def cutout(image, labels): - # Applies image cutout augmentation https://arxiv.org/abs/1708.04552 - h, w = image.shape[:2] - - def bbox_ioa(box1, box2): - # Returns the intersection over box2 area given box1, box2. box1 is 4, box2 is nx4. boxes are x1y1x2y2 - box2 = box2.transpose() - - # Get the coordinates of bounding boxes - b1_x1, b1_y1, b1_x2, b1_y2 = box1[0], box1[1], box1[2], box1[3] - b2_x1, b2_y1, b2_x2, b2_y2 = box2[0], box2[1], box2[2], box2[3] - - # Intersection area - inter_area = (np.minimum(b1_x2, b2_x2) - np.maximum(b1_x1, b2_x1)).clip(0) * \ - (np.minimum(b1_y2, b2_y2) - np.maximum(b1_y1, b2_y1)).clip(0) - - # box2 area - box2_area = (b2_x2 - b2_x1) * (b2_y2 - b2_y1) + 1e-16 - - # Intersection over box2 area - return inter_area / box2_area - - # create random masks - scales = [0.5] * 1 + [0.25] * 2 + [0.125] * 4 + [0.0625] * 8 + [0.03125] * 16 # image size fraction - for s in scales: - mask_h = random.randint(1, int(h * s)) - mask_w = random.randint(1, int(w * s)) - - # box - xmin = max(0, random.randint(0, w) - mask_w // 2) - ymin = max(0, random.randint(0, h) - mask_h // 2) - xmax = min(w, xmin + mask_w) - ymax = min(h, ymin + mask_h) - - # apply random color mask - image[ymin:ymax, xmin:xmax] = [random.randint(64, 191) for _ in range(3)] - - # return unobscured labels - if len(labels) and s > 0.03: - box = np.array([xmin, ymin, xmax, ymax], dtype=np.float32) - ioa = bbox_ioa(box, labels[:, 1:5]) # intersection over area - labels = labels[ioa < 0.60] # remove >60% obscured labels - - return labels - - def create_folder(path='./new'): # Create folder if os.path.exists(path): @@ -1005,7 +816,7 @@ def create_folder(path='./new'): os.makedirs(path) # make new output folder -def flatten_recursive(path='../coco128'): +def flatten_recursive(path='../datasets/coco128'): # Flatten a recursive directory by bringing all files to top level new_path = Path(path + '_flat') create_folder(new_path) @@ -1013,15 +824,14 @@ def flatten_recursive(path='../coco128'): shutil.copyfile(file, new_path / Path(file).name) -def extract_boxes(path='../coco128/'): # from utils.datasets import *; extract_boxes('../coco128') +def extract_boxes(path='../datasets/coco128'): # from utils.datasets import *; extract_boxes() # Convert detection dataset into classification dataset, with one directory per class - path = Path(path) # images dir shutil.rmtree(path / 'classifier') if (path / 'classifier').is_dir() else None # remove existing files = list(path.rglob('*.*')) n = len(files) # number of files for im_file in tqdm(files, total=n): - if im_file.suffix[1:] in img_formats: + if im_file.suffix[1:] in IMG_FORMATS: # image im = cv2.imread(str(im_file))[..., ::-1] # BGR to RGB h, w = im.shape[:2] @@ -1029,7 +839,7 @@ def extract_boxes(path='../coco128/'): # from utils.datasets import *; extract_ # labels lb_file = Path(img2label_paths([str(im_file)])[0]) if Path(lb_file).exists(): - with open(lb_file, 'r') as f: + with open(lb_file) as f: lb = np.array([x.split() for x in f.read().strip().splitlines()], dtype=np.float32) # labels for j, x in enumerate(lb): @@ -1048,24 +858,179 @@ def extract_boxes(path='../coco128/'): # from utils.datasets import *; extract_ assert cv2.imwrite(str(f), im[b[1]:b[3], b[0]:b[2]]), f'box failure in {f}' -def autosplit(path='../coco128', weights=(0.9, 0.1, 0.0), annotated_only=False): +def autosplit(path='../datasets/coco128/images', weights=(0.9, 0.1, 0.0), annotated_only=False): """ Autosplit a dataset into train/val/test splits and save path/autosplit_*.txt files - Usage: from utils.datasets import *; autosplit('../coco128') + Usage: from utils.datasets import *; autosplit() Arguments - path: Path to images directory - weights: Train, val, test weights (list) - annotated_only: Only use images with an annotated txt file + path: Path to images directory + weights: Train, val, test weights (list, tuple) + annotated_only: Only use images with an annotated txt file """ path = Path(path) # images dir - files = sum([list(path.rglob(f"*.{img_ext}")) for img_ext in img_formats], []) # image files only + files = sorted(x for x in path.rglob('*.*') if x.suffix[1:].lower() in IMG_FORMATS) # image files only n = len(files) # number of files + random.seed(0) # for reproducibility indices = random.choices([0, 1, 2], weights=weights, k=n) # assign each image to a split txt = ['autosplit_train.txt', 'autosplit_val.txt', 'autosplit_test.txt'] # 3 txt files - [(path / x).unlink() for x in txt if (path / x).exists()] # remove existing + [(path.parent / x).unlink(missing_ok=True) for x in txt] # remove existing print(f'Autosplitting images from {path}' + ', using *.txt labeled images only' * annotated_only) for i, img in tqdm(zip(indices, files), total=n): if not annotated_only or Path(img2label_paths([str(img)])[0]).exists(): # check label - with open(path / txt[i], 'a') as f: - f.write(str(img) + '\n') # add image to txt file + with open(path.parent / txt[i], 'a') as f: + f.write('./' + img.relative_to(path.parent).as_posix() + '\n') # add image to txt file + + +def verify_image_label(args): + # Verify one image-label pair + im_file, lb_file, prefix = args + nm, nf, ne, nc, msg, segments = 0, 0, 0, 0, '', [] # number (missing, found, empty, corrupt), message, segments + try: + # verify images + im = Image.open(im_file) + im.verify() # PIL verify + shape = exif_size(im) # image size + assert (shape[0] > 9) & (shape[1] > 9), f'image size {shape} <10 pixels' + assert im.format.lower() in IMG_FORMATS, f'invalid image format {im.format}' + if im.format.lower() in ('jpg', 'jpeg'): + with open(im_file, 'rb') as f: + f.seek(-2, 2) + if f.read() != b'\xff\xd9': # corrupt JPEG + ImageOps.exif_transpose(Image.open(im_file)).save(im_file, 'JPEG', subsampling=0, quality=100) + msg = f'{prefix}WARNING: {im_file}: corrupt JPEG restored and saved' + + # verify labels + if os.path.isfile(lb_file): + nf = 1 # label found + with open(lb_file) as f: + l = [x.split() for x in f.read().strip().splitlines() if len(x)] + if any([len(x) > 8 for x in l]): # is segment + classes = np.array([x[0] for x in l], dtype=np.float32) + segments = [np.array(x[1:], dtype=np.float32).reshape(-1, 2) for x in l] # (cls, xy1...) + l = np.concatenate((classes.reshape(-1, 1), segments2boxes(segments)), 1) # (cls, xywh) + l = np.array(l, dtype=np.float32) + nl = len(l) + if nl: + assert l.shape[1] == 5, f'labels require 5 columns, {l.shape[1]} columns detected' + assert (l >= 0).all(), f'negative label values {l[l < 0]}' + assert (l[:, 1:] <= 1).all(), f'non-normalized or out of bounds coordinates {l[:, 1:][l[:, 1:] > 1]}' + _, i = np.unique(l, axis=0, return_index=True) + if len(i) < nl: # duplicate row check + l = l[i] # remove duplicates + if segments: + segments = segments[i] + msg = f'{prefix}WARNING: {im_file}: {nl - len(i)} duplicate labels removed' + else: + ne = 1 # label empty + l = np.zeros((0, 5), dtype=np.float32) + else: + nm = 1 # label missing + l = np.zeros((0, 5), dtype=np.float32) + return im_file, l, shape, segments, nm, nf, ne, nc, msg + except Exception as e: + nc = 1 + msg = f'{prefix}WARNING: {im_file}: ignoring corrupt image/label: {e}' + return [None, None, None, None, nm, nf, ne, nc, msg] + + +def dataset_stats(path='coco128.yaml', autodownload=False, verbose=False, profile=False, hub=False): + """ Return dataset statistics dictionary with images and instances counts per split per class + To run in parent directory: export PYTHONPATH="$PWD/yolov3" + Usage1: from utils.datasets import *; dataset_stats('coco128.yaml', autodownload=True) + Usage2: from utils.datasets import *; dataset_stats('../datasets/coco128_with_yaml.zip') + Arguments + path: Path to data.yaml or data.zip (with data.yaml inside data.zip) + autodownload: Attempt to download dataset if not found locally + verbose: Print stats dictionary + """ + + def round_labels(labels): + # Update labels to integer class and 6 decimal place floats + return [[int(c), *(round(x, 4) for x in points)] for c, *points in labels] + + def unzip(path): + # Unzip data.zip TODO: CONSTRAINT: path/to/abc.zip MUST unzip to 'path/to/abc/' + if str(path).endswith('.zip'): # path is data.zip + assert Path(path).is_file(), f'Error unzipping {path}, file not found' + ZipFile(path).extractall(path=path.parent) # unzip + dir = path.with_suffix('') # dataset directory == zip name + return True, str(dir), next(dir.rglob('*.yaml')) # zipped, data_dir, yaml_path + else: # path is data.yaml + return False, None, path + + def hub_ops(f, max_dim=1920): + # HUB ops for 1 image 'f': resize and save at reduced quality in /dataset-hub for web/app viewing + f_new = im_dir / Path(f).name # dataset-hub image filename + try: # use PIL + im = Image.open(f) + r = max_dim / max(im.height, im.width) # ratio + if r < 1.0: # image too large + im = im.resize((int(im.width * r), int(im.height * r))) + im.save(f_new, 'JPEG', quality=75, optimize=True) # save + except Exception as e: # use OpenCV + print(f'WARNING: HUB ops PIL failure {f}: {e}') + im = cv2.imread(f) + im_height, im_width = im.shape[:2] + r = max_dim / max(im_height, im_width) # ratio + if r < 1.0: # image too large + im = cv2.resize(im, (int(im_width * r), int(im_height * r)), interpolation=cv2.INTER_LINEAR) + cv2.imwrite(str(f_new), im) + + zipped, data_dir, yaml_path = unzip(Path(path)) + with open(check_yaml(yaml_path), errors='ignore') as f: + data = yaml.safe_load(f) # data dict + if zipped: + data['path'] = data_dir # TODO: should this be dir.resolve()? + check_dataset(data, autodownload) # download dataset if missing + hub_dir = Path(data['path'] + ('-hub' if hub else '')) + stats = {'nc': data['nc'], 'names': data['names']} # statistics dictionary + for split in 'train', 'val', 'test': + if data.get(split) is None: + stats[split] = None # i.e. no test set + continue + x = [] + dataset = LoadImagesAndLabels(data[split]) # load dataset + for label in tqdm(dataset.labels, total=dataset.n, desc='Statistics'): + x.append(np.bincount(label[:, 0].astype(int), minlength=data['nc'])) + x = np.array(x) # shape(128x80) + stats[split] = {'instance_stats': {'total': int(x.sum()), 'per_class': x.sum(0).tolist()}, + 'image_stats': {'total': dataset.n, 'unlabelled': int(np.all(x == 0, 1).sum()), + 'per_class': (x > 0).sum(0).tolist()}, + 'labels': [{str(Path(k).name): round_labels(v.tolist())} for k, v in + zip(dataset.img_files, dataset.labels)]} + + if hub: + im_dir = hub_dir / 'images' + im_dir.mkdir(parents=True, exist_ok=True) + for _ in tqdm(ThreadPool(NUM_THREADS).imap(hub_ops, dataset.img_files), total=dataset.n, desc='HUB Ops'): + pass + + # Profile + stats_path = hub_dir / 'stats.json' + if profile: + for _ in range(1): + file = stats_path.with_suffix('.npy') + t1 = time.time() + np.save(file, stats) + t2 = time.time() + x = np.load(file, allow_pickle=True) + print(f'stats.npy times: {time.time() - t2:.3f}s read, {t2 - t1:.3f}s write') + + file = stats_path.with_suffix('.json') + t1 = time.time() + with open(file, 'w') as f: + json.dump(stats, f) # save stats *.json + t2 = time.time() + with open(file) as f: + x = json.load(f) # load hyps dict + print(f'stats.json times: {time.time() - t2:.3f}s read, {t2 - t1:.3f}s write') + + # Save, print and return + if hub: + print(f'Saving {stats_path.resolve()}...') + with open(stats_path, 'w') as f: + json.dump(stats, f) # save stats.json + if verbose: + print(json.dumps(stats, indent=2, sort_keys=False)) + return stats diff --git a/utils/google_utils.py b/utils/downloads.py similarity index 83% rename from utils/google_utils.py rename to utils/downloads.py index 340fab13..cd653078 100644 --- a/utils/google_utils.py +++ b/utils/downloads.py @@ -1,10 +1,15 @@ -# Google utils: https://cloud.google.com/storage/docs/reference/libraries +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Download utils +""" import os import platform import subprocess import time +import urllib from pathlib import Path +from zipfile import ZipFile import requests import torch @@ -19,30 +24,32 @@ def gsutil_getsize(url=''): def safe_download(file, url, url2=None, min_bytes=1E0, error_msg=''): # Attempts to download file from url or url2, checks and removes incomplete downloads < min_bytes file = Path(file) - try: # GitHub + assert_msg = f"Downloaded file '{file}' does not exist or size is < min_bytes={min_bytes}" + try: # url1 print(f'Downloading {url} to {file}...') torch.hub.download_url_to_file(url, str(file)) - assert file.exists() and file.stat().st_size > min_bytes # check - except Exception as e: # GCP + assert file.exists() and file.stat().st_size > min_bytes, assert_msg # check + except Exception as e: # url2 file.unlink(missing_ok=True) # remove partial downloads - print(f'Download error: {e}\nRe-attempting {url2 or url} to {file}...') + print(f'ERROR: {e}\nRe-attempting {url2 or url} to {file}...') os.system(f"curl -L '{url2 or url}' -o '{file}' --retry 3 -C -") # curl download, retry and resume on fail finally: if not file.exists() or file.stat().st_size < min_bytes: # check file.unlink(missing_ok=True) # remove partial downloads - print(f'ERROR: Download failure: {error_msg or url}') + print(f"ERROR: {assert_msg}\n{error_msg}") print('') -def attempt_download(file, repo='ultralytics/yolov3'): +def attempt_download(file, repo='ultralytics/yolov3'): # from utils.downloads import *; attempt_download() # Attempt file download if does not exist file = Path(str(file).strip().replace("'", '')) if not file.exists(): # URL specified - name = file.name + name = Path(urllib.parse.unquote(str(file))).name # decode '%2F' to '/' etc. if str(file).startswith(('http:/', 'https:/')): # download url = str(file).replace(':/', '://') # Pathlib turns :// -> :/ + name = name.split('?')[0] # parse authentication https://url.com/file.txt?auth... safe_download(file=name, url=url, min_bytes=1E5) return name @@ -50,7 +57,7 @@ def attempt_download(file, repo='ultralytics/yolov3'): file.parent.mkdir(parents=True, exist_ok=True) # make parent dir (if required) try: response = requests.get(f'https://api.github.com/repos/{repo}/releases/latest').json() # github api - assets = [x['name'] for x in response['assets']] # release assets, i.e. ['yolov5s.pt', 'yolov5m.pt', ...] + assets = [x['name'] for x in response['assets']] # release assets, i.e. ['yolov3.pt'...] tag = response['tag_name'] # i.e. 'v1.0' except: # fallback plan assets = ['yolov3.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt'] @@ -70,7 +77,7 @@ def attempt_download(file, repo='ultralytics/yolov3'): def gdrive_download(id='16TiPfZj7htmTyhntwcZyEEAejOUxuT6m', file='tmp.zip'): - # Downloads a file from Google Drive. from yolov3.utils.google_utils import *; gdrive_download() + # Downloads a file from Google Drive. from yolov3.utils.downloads import *; gdrive_download() t = time.time() file = Path(file) cookie = Path('cookie') # gdrive cookie @@ -97,8 +104,8 @@ def gdrive_download(id='16TiPfZj7htmTyhntwcZyEEAejOUxuT6m', file='tmp.zip'): # Unzip if archive if file.suffix == '.zip': print('unzipping... ', end='') - os.system(f'unzip -q {file}') # unzip - file.unlink() # remove zip to free space + ZipFile(file).extractall(path=file.parent) # unzip + file.unlink() # remove zip print(f'Done ({time.time() - t:.1f}s)') return r @@ -111,6 +118,9 @@ def get_token(cookie="./cookie"): return line.split()[-1] return "" +# Google utils: https://cloud.google.com/storage/docs/reference/libraries ---------------------------------------------- +# +# # def upload_blob(bucket_name, source_file_name, destination_blob_name): # # Uploads a file to a bucket # # https://cloud.google.com/storage/docs/uploading-objects#storage-upload-object-python diff --git a/utils/flask_rest_api/README.md b/utils/flask_rest_api/README.md deleted file mode 100644 index 324c2416..00000000 --- a/utils/flask_rest_api/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# Flask REST API -[REST](https://en.wikipedia.org/wiki/Representational_state_transfer) [API](https://en.wikipedia.org/wiki/API)s are commonly used to expose Machine Learning (ML) models to other services. This folder contains an example REST API created using Flask to expose the YOLOv5s model from [PyTorch Hub](https://pytorch.org/hub/ultralytics_yolov5/). - -## Requirements - -[Flask](https://palletsprojects.com/p/flask/) is required. Install with: -```shell -$ pip install Flask -``` - -## Run - -After Flask installation run: - -```shell -$ python3 restapi.py --port 5000 -``` - -Then use [curl](https://curl.se/) to perform a request: - -```shell -$ curl -X POST -F image=@zidane.jpg 'http://localhost:5000/v1/object-detection/yolov5s'` -``` - -The model inference results are returned as a JSON response: - -```json -[ - { - "class": 0, - "confidence": 0.8900438547, - "height": 0.9318675399, - "name": "person", - "width": 0.3264600933, - "xcenter": 0.7438579798, - "ycenter": 0.5207948685 - }, - { - "class": 0, - "confidence": 0.8440024257, - "height": 0.7155083418, - "name": "person", - "width": 0.6546785235, - "xcenter": 0.427829951, - "ycenter": 0.6334488392 - }, - { - "class": 27, - "confidence": 0.3771208823, - "height": 0.3902671337, - "name": "tie", - "width": 0.0696444362, - "xcenter": 0.3675483763, - "ycenter": 0.7991207838 - }, - { - "class": 27, - "confidence": 0.3527112305, - "height": 0.1540903747, - "name": "tie", - "width": 0.0336618312, - "xcenter": 0.7814827561, - "ycenter": 0.5065554976 - } -] -``` - -An example python script to perform inference using [requests](https://docs.python-requests.org/en/master/) is given in `example_request.py` diff --git a/utils/flask_rest_api/example_request.py b/utils/flask_rest_api/example_request.py deleted file mode 100644 index ff21f30f..00000000 --- a/utils/flask_rest_api/example_request.py +++ /dev/null @@ -1,13 +0,0 @@ -"""Perform test request""" -import pprint - -import requests - -DETECTION_URL = "http://localhost:5000/v1/object-detection/yolov5s" -TEST_IMAGE = "zidane.jpg" - -image_data = open(TEST_IMAGE, "rb").read() - -response = requests.post(DETECTION_URL, files={"image": image_data}).json() - -pprint.pprint(response) diff --git a/utils/flask_rest_api/restapi.py b/utils/flask_rest_api/restapi.py deleted file mode 100644 index b0df7472..00000000 --- a/utils/flask_rest_api/restapi.py +++ /dev/null @@ -1,37 +0,0 @@ -""" -Run a rest API exposing the yolov5s object detection model -""" -import argparse -import io - -import torch -from PIL import Image -from flask import Flask, request - -app = Flask(__name__) - -DETECTION_URL = "/v1/object-detection/yolov5s" - - -@app.route(DETECTION_URL, methods=["POST"]) -def predict(): - if not request.method == "POST": - return - - if request.files.get("image"): - image_file = request.files["image"] - image_bytes = image_file.read() - - img = Image.open(io.BytesIO(image_bytes)) - - results = model(img, size=640) # reduce size=320 for faster inference - return results.pandas().xyxy[0].to_json(orient="records") - - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description="Flask API exposing YOLOv3 model") - parser.add_argument("--port", default=5000, type=int, help="port number") - args = parser.parse_args() - - model = torch.hub.load("ultralytics/yolov5", "yolov5s", force_reload=True) # force_reload to recache - app.run(host="0.0.0.0", port=args.port) # debug=True causes Restarting with stat diff --git a/utils/general.py b/utils/general.py index af33c633..820e35d9 100755 --- a/utils/general.py +++ b/utils/general.py @@ -1,5 +1,9 @@ -# YOLOv3 general utils +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +General utils +""" +import contextlib import glob import logging import math @@ -7,11 +11,15 @@ import os import platform import random import re -import subprocess +import shutil +import signal import time +import urllib from itertools import repeat from multiprocessing.pool import ThreadPool from pathlib import Path +from subprocess import check_output +from zipfile import ZipFile import cv2 import numpy as np @@ -21,9 +29,8 @@ import torch import torchvision import yaml -from utils.google_utils import gsutil_getsize -from utils.metrics import fitness -from utils.torch_utils import init_torch_seeds +from utils.downloads import gsutil_getsize +from utils.metrics import box_iou, fitness # Settings torch.set_printoptions(linewidth=320, precision=5, profile='long') @@ -32,18 +39,96 @@ pd.options.display.max_columns = 10 cv2.setNumThreads(0) # prevent OpenCV from multithreading (incompatible with PyTorch DataLoader) os.environ['NUMEXPR_MAX_THREADS'] = str(min(os.cpu_count(), 8)) # NumExpr max threads +FILE = Path(__file__).resolve() +ROOT = FILE.parents[1] # root directory -def set_logging(rank=-1, verbose=True): - logging.basicConfig( - format="%(message)s", - level=logging.INFO if (verbose and rank in [-1, 0]) else logging.WARN) + +def set_logging(name=None, verbose=True): + # Sets level and returns logger + rank = int(os.getenv('RANK', -1)) # rank in world for Multi-GPU trainings + logging.basicConfig(format="%(message)s", level=logging.INFO if (verbose and rank in (-1, 0)) else logging.WARNING) + return logging.getLogger(name) + + +LOGGER = set_logging(__name__) # define globally (used in train.py, val.py, detect.py, etc.) + + +class Profile(contextlib.ContextDecorator): + # Usage: @Profile() decorator or 'with Profile():' context manager + def __enter__(self): + self.start = time.time() + + def __exit__(self, type, value, traceback): + print(f'Profile results: {time.time() - self.start:.5f}s') + + +class Timeout(contextlib.ContextDecorator): + # Usage: @Timeout(seconds) decorator or 'with Timeout(seconds):' context manager + def __init__(self, seconds, *, timeout_msg='', suppress_timeout_errors=True): + self.seconds = int(seconds) + self.timeout_message = timeout_msg + self.suppress = bool(suppress_timeout_errors) + + def _timeout_handler(self, signum, frame): + raise TimeoutError(self.timeout_message) + + def __enter__(self): + signal.signal(signal.SIGALRM, self._timeout_handler) # Set handler for SIGALRM + signal.alarm(self.seconds) # start countdown for SIGALRM to be raised + + def __exit__(self, exc_type, exc_val, exc_tb): + signal.alarm(0) # Cancel SIGALRM if it's scheduled + if self.suppress and exc_type is TimeoutError: # Suppress TimeoutError + return True + + +class WorkingDirectory(contextlib.ContextDecorator): + # Usage: @WorkingDirectory(dir) decorator or 'with WorkingDirectory(dir):' context manager + def __init__(self, new_dir): + self.dir = new_dir # new dir + self.cwd = Path.cwd().resolve() # current dir + + def __enter__(self): + os.chdir(self.dir) + + def __exit__(self, exc_type, exc_val, exc_tb): + os.chdir(self.cwd) + + +def try_except(func): + # try-except function. Usage: @try_except decorator + def handler(*args, **kwargs): + try: + func(*args, **kwargs) + except Exception as e: + print(e) + + return handler + + +def methods(instance): + # Get class/instance methods + return [f for f in dir(instance) if callable(getattr(instance, f)) and not f.startswith("__")] + + +def print_args(name, opt): + # Print argparser arguments + LOGGER.info(colorstr(f'{name}: ') + ', '.join(f'{k}={v}' for k, v in vars(opt).items())) def init_seeds(seed=0): - # Initialize random number generator (RNG) seeds + # Initialize random number generator (RNG) seeds https://pytorch.org/docs/stable/notes/randomness.html + # cudnn seed 0 settings are slower and more reproducible, else faster and less reproducible + import torch.backends.cudnn as cudnn random.seed(seed) np.random.seed(seed) - init_torch_seeds(seed) + torch.manual_seed(seed) + cudnn.benchmark, cudnn.deterministic = (False, True) if seed == 0 else (True, False) + + +def intersect_dicts(da, db, exclude=()): + # Dictionary intersection of matching keys and shapes, omitting 'exclude' keys, using da values + return {k: v for k, v in da.items() if k in db and not any(x in k for x in exclude) and v.shape == db[k].shape} def get_latest_run(search_dir='.'): @@ -52,81 +137,136 @@ def get_latest_run(search_dir='.'): return max(last_list, key=os.path.getctime) if last_list else '' +def user_config_dir(dir='Ultralytics', env_var='YOLOV3_CONFIG_DIR'): + # Return path of user configuration directory. Prefer environment variable if exists. Make dir if required. + env = os.getenv(env_var) + if env: + path = Path(env) # use environment variable + else: + cfg = {'Windows': 'AppData/Roaming', 'Linux': '.config', 'Darwin': 'Library/Application Support'} # 3 OS dirs + path = Path.home() / cfg.get(platform.system(), '') # OS-specific config dir + path = (path if is_writeable(path) else Path('/tmp')) / dir # GCP and AWS lambda fix, only /tmp is writeable + path.mkdir(exist_ok=True) # make if required + return path + + +def is_writeable(dir, test=False): + # Return True if directory has write permissions, test opening a file with write permissions if test=True + if test: # method 1 + file = Path(dir) / 'tmp.txt' + try: + with open(file, 'w'): # open file with write permissions + pass + file.unlink() # remove file + return True + except OSError: + return False + else: # method 2 + return os.access(dir, os.R_OK) # possible issues on Windows + + def is_docker(): - # Is environment a Docker container + # Is environment a Docker container? return Path('/workspace').exists() # or Path('/.dockerenv').exists() def is_colab(): - # Is environment a Google Colab instance + # Is environment a Google Colab instance? try: import google.colab return True - except Exception as e: + except ImportError: return False +def is_pip(): + # Is file in a pip package? + return 'site-packages' in Path(__file__).resolve().parts + + +def is_ascii(s=''): + # Is string composed of all ASCII (no UTF) characters? (note str().isascii() introduced in python 3.7) + s = str(s) # convert list, tuple, None, etc. to str + return len(s.encode().decode('ascii', 'ignore')) == len(s) + + +def is_chinese(s='人工智能'): + # Is string composed of any Chinese characters? + return re.search('[\u4e00-\u9fff]', s) + + def emojis(str=''): # Return platform-dependent emoji-safe version of string return str.encode().decode('ascii', 'ignore') if platform.system() == 'Windows' else str -def file_size(file): - # Return file size in MB - return Path(file).stat().st_size / 1e6 +def file_size(path): + # Return file/dir size (MB) + path = Path(path) + if path.is_file(): + return path.stat().st_size / 1E6 + elif path.is_dir(): + return sum(f.stat().st_size for f in path.glob('**/*') if f.is_file()) / 1E6 + else: + return 0.0 def check_online(): # Check internet connectivity import socket try: - socket.create_connection(("1.1.1.1", 443), 5) # check host accesability + socket.create_connection(("1.1.1.1", 443), 5) # check host accessibility return True except OSError: return False +@try_except +@WorkingDirectory(ROOT) def check_git_status(): # Recommend 'git pull' if code is out of date + msg = ', for updates see https://github.com/ultralytics/yolov3' print(colorstr('github: '), end='') - try: - assert Path('.git').exists(), 'skipping check (not a git repository)' - assert not is_docker(), 'skipping check (Docker image)' - assert check_online(), 'skipping check (offline)' + assert Path('.git').exists(), 'skipping check (not a git repository)' + msg + assert not is_docker(), 'skipping check (Docker image)' + msg + assert check_online(), 'skipping check (offline)' + msg - cmd = 'git fetch && git config --get remote.origin.url' - url = subprocess.check_output(cmd, shell=True).decode().strip().rstrip('.git') # github repo url - branch = subprocess.check_output('git rev-parse --abbrev-ref HEAD', shell=True).decode().strip() # checked out - n = int(subprocess.check_output(f'git rev-list {branch}..origin/master --count', shell=True)) # commits behind - if n > 0: - s = f"⚠️ WARNING: code is out of date by {n} commit{'s' * (n > 1)}. " \ - f"Use 'git pull' to update or 'git clone {url}' to download latest." - else: - s = f'up to date with {url} ✅' - print(emojis(s)) # emoji-safe - except Exception as e: - print(e) + cmd = 'git fetch && git config --get remote.origin.url' + url = check_output(cmd, shell=True, timeout=5).decode().strip().rstrip('.git') # git fetch + branch = check_output('git rev-parse --abbrev-ref HEAD', shell=True).decode().strip() # checked out + n = int(check_output(f'git rev-list {branch}..origin/master --count', shell=True)) # commits behind + if n > 0: + s = f"⚠️ YOLOv3 is out of date by {n} commit{'s' * (n > 1)}. Use `git pull` or `git clone {url}` to update." + else: + s = f'up to date with {url} ✅' + print(emojis(s)) # emoji-safe -def check_python(minimum='3.7.0', required=True): +def check_python(minimum='3.6.2'): # Check current python version vs. required python version - current = platform.python_version() - result = pkg.parse_version(current) >= pkg.parse_version(minimum) - if required: - assert result, f'Python {minimum} required by YOLOv3, but Python {current} is currently installed' - return result + check_version(platform.python_version(), minimum, name='Python ', hard=True) -def check_requirements(requirements='requirements.txt', exclude=()): +def check_version(current='0.0.0', minimum='0.0.0', name='version ', pinned=False, hard=False): + # Check version vs. required version + current, minimum = (pkg.parse_version(x) for x in (current, minimum)) + result = (current == minimum) if pinned else (current >= minimum) # bool + if hard: # assert min requirements met + assert result, f'{name}{minimum} required by YOLOv3, but {name}{current} is currently installed' + else: + return result + + +@try_except +def check_requirements(requirements=ROOT / 'requirements.txt', exclude=(), install=True): # Check installed dependencies meet requirements (pass *.txt file or list of packages) prefix = colorstr('red', 'bold', 'requirements:') check_python() # check python version if isinstance(requirements, (str, Path)): # requirements.txt file file = Path(requirements) - if not file.exists(): - print(f"{prefix} {file.resolve()} not found, check failed.") - return - requirements = [f'{x.name}{x.specifier}' for x in pkg.parse_requirements(file.open()) if x.name not in exclude] + assert file.exists(), f"{prefix} {file.resolve()} not found, check failed." + with file.open() as f: + requirements = [f'{x.name}{x.specifier}' for x in pkg.parse_requirements(f) if x.name not in exclude] else: # list or tuple of packages requirements = [x for x in requirements if x not in exclude] @@ -135,25 +275,33 @@ def check_requirements(requirements='requirements.txt', exclude=()): try: pkg.require(r) except Exception as e: # DistributionNotFound or VersionConflict if requirements not met - n += 1 - print(f"{prefix} {r} not found and is required by YOLOv3, attempting auto-update...") - try: - print(subprocess.check_output(f"pip install '{r}'", shell=True).decode()) - except Exception as e: - print(f'{prefix} {e}') + s = f"{prefix} {r} not found and is required by YOLOv3" + if install: + print(f"{s}, attempting auto-update...") + try: + assert check_online(), f"'pip install {r}' skipped (offline)" + print(check_output(f"pip install '{r}'", shell=True).decode()) + n += 1 + except Exception as e: + print(f'{prefix} {e}') + else: + print(f'{s}. Please install and rerun your command.') if n: # if packages updated source = file.resolve() if 'file' in locals() else requirements s = f"{prefix} {n} package{'s' * (n > 1)} updated per {source}\n" \ f"{prefix} ⚠️ {colorstr('bold', 'Restart runtime or rerun command for updates to take effect')}\n" - print(emojis(s)) # emoji-safe + print(emojis(s)) -def check_img_size(img_size, s=32): - # Verify img_size is a multiple of stride s - new_size = make_divisible(img_size, int(s)) # ceil gs-multiple - if new_size != img_size: - print('WARNING: --img-size %g must be multiple of max stride %g, updating to %g' % (img_size, s, new_size)) +def check_img_size(imgsz, s=32, floor=0): + # Verify image size is a multiple of stride s in each dimension + if isinstance(imgsz, int): # integer i.e. img_size=640 + new_size = max(make_divisible(imgsz, int(s)), floor) + else: # list i.e. img_size=[640, 480] + new_size = [max(make_divisible(x, int(s)), floor) for x in imgsz] + if new_size != imgsz: + print(f'WARNING: --img-size {imgsz} must be multiple of max stride {s}, updating to {new_size}') return new_size @@ -172,53 +320,114 @@ def check_imshow(): return False -def check_file(file): +def check_suffix(file='yolov3.pt', suffix=('.pt',), msg=''): + # Check file(s) for acceptable suffix + if file and suffix: + if isinstance(suffix, str): + suffix = [suffix] + for f in file if isinstance(file, (list, tuple)) else [file]: + s = Path(f).suffix.lower() # file suffix + if len(s): + assert s in suffix, f"{msg}{f} acceptable suffix is {suffix}" + + +def check_yaml(file, suffix=('.yaml', '.yml')): + # Search/download YAML file (if necessary) and return path, checking suffix + return check_file(file, suffix) + + +def check_file(file, suffix=''): # Search/download file (if necessary) and return path + check_suffix(file, suffix) # optional file = str(file) # convert to str() if Path(file).is_file() or file == '': # exists return file - elif file.startswith(('http://', 'https://')): # download - url, file = file, Path(file).name - print(f'Downloading {url} to {file}...') - torch.hub.download_url_to_file(url, file) - assert Path(file).exists() and Path(file).stat().st_size > 0, f'File download failed: {url}' # check + elif file.startswith(('http:/', 'https:/')): # download + url = str(Path(file)).replace(':/', '://') # Pathlib turns :// -> :/ + file = Path(urllib.parse.unquote(file).split('?')[0]).name # '%2F' to '/', split https://url.com/file.txt?auth + if Path(file).is_file(): + print(f'Found {url} locally at {file}') # file already exists + else: + print(f'Downloading {url} to {file}...') + torch.hub.download_url_to_file(url, file) + assert Path(file).exists() and Path(file).stat().st_size > 0, f'File download failed: {url}' # check return file else: # search - files = glob.glob('./**/' + file, recursive=True) # find file + files = [] + for d in 'data', 'models', 'utils': # search directories + files.extend(glob.glob(str(ROOT / d / '**' / file), recursive=True)) # find file assert len(files), f'File not found: {file}' # assert file was found assert len(files) == 1, f"Multiple files match '{file}', specify exact path: {files}" # assert unique return files[0] # return file -def check_dataset(dict): - # Download dataset if not found locally - val, s = dict.get('val'), dict.get('download') - if val and len(val): +def check_dataset(data, autodownload=True): + # Download and/or unzip dataset if not found locally + # Usage: https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128_with_yaml.zip + + # Download (optional) + extract_dir = '' + if isinstance(data, (str, Path)) and str(data).endswith('.zip'): # i.e. gs://bucket/dir/coco128.zip + download(data, dir='../datasets', unzip=True, delete=False, curl=False, threads=1) + data = next((Path('../datasets') / Path(data).stem).rglob('*.yaml')) + extract_dir, autodownload = data.parent, False + + # Read yaml (optional) + if isinstance(data, (str, Path)): + with open(data, errors='ignore') as f: + data = yaml.safe_load(f) # dictionary + + # Parse yaml + path = extract_dir or Path(data.get('path') or '') # optional 'path' default to '.' + for k in 'train', 'val', 'test': + if data.get(k): # prepend path + data[k] = str(path / data[k]) if isinstance(data[k], str) else [str(path / x) for x in data[k]] + + assert 'nc' in data, "Dataset 'nc' key missing." + if 'names' not in data: + data['names'] = [f'class{i}' for i in range(data['nc'])] # assign class names if missing + train, val, test, s = (data.get(x) for x in ('train', 'val', 'test', 'download')) + if val: val = [Path(x).resolve() for x in (val if isinstance(val, list) else [val])] # val path if not all(x.exists() for x in val): print('\nWARNING: Dataset not found, nonexistent paths: %s' % [str(x) for x in val if not x.exists()]) - if s and len(s): # download script + if s and autodownload: # download script + root = path.parent if 'path' in data else '..' # unzip directory i.e. '../' if s.startswith('http') and s.endswith('.zip'): # URL f = Path(s).name # filename - print(f'Downloading {s} ...') + print(f'Downloading {s} to {f}...') torch.hub.download_url_to_file(s, f) - r = os.system(f'unzip -q {f} -d ../ && rm {f}') # unzip + Path(root).mkdir(parents=True, exist_ok=True) # create root + ZipFile(f).extractall(path=root) # unzip + Path(f).unlink() # remove zip + r = None # success elif s.startswith('bash '): # bash script print(f'Running {s} ...') r = os.system(s) else: # python script - r = exec(s) # return None - print('Dataset autodownload %s\n' % ('success' if r in (0, None) else 'failure')) # print result + r = exec(s, {'yaml': data}) # return None + print(f"Dataset autodownload {f'success, saved to {root}' if r in (0, None) else 'failure'}\n") else: raise Exception('Dataset not found.') + return data # dictionary + + +def url2file(url): + # Convert URL to filename, i.e. https://url.com/file.txt?auth -> file.txt + url = str(Path(url)).replace(':/', '://') # Pathlib turns :// -> :/ + file = Path(urllib.parse.unquote(url)).name.split('?')[0] # '%2F' to '/', split https://url.com/file.txt?auth + return file + def download(url, dir='.', unzip=True, delete=True, curl=False, threads=1): - # Multi-threaded file download and unzip function + # Multi-threaded file download and unzip function, used in data.yaml for autodownload def download_one(url, dir): # Download 1 file f = dir / Path(url).name # filename - if not f.exists(): + if Path(url).is_file(): # exists in current path + Path(url).rename(f) # move to dir + elif not f.exists(): print(f'Downloading {url} to {f}...') if curl: os.system(f"curl -L '{url}' -o '{f}' --retry 9 -C -") # curl download, retry and resume on fail @@ -227,12 +436,11 @@ def download(url, dir='.', unzip=True, delete=True, curl=False, threads=1): if unzip and f.suffix in ('.zip', '.gz'): print(f'Unzipping {f}...') if f.suffix == '.zip': - s = f'unzip -qo {f} -d {dir} && rm {f}' # unzip -quiet -overwrite + ZipFile(f).extractall(path=dir) # unzip elif f.suffix == '.gz': - s = f'tar xfz {f} --directory {f.parent}' # unzip - if delete: # delete zip file after unzip - s += f' && rm {f}' - os.system(s) + os.system(f'tar xfz {f} --directory {f.parent}') # unzip + if delete: + f.unlink() # remove zip dir = Path(dir) dir.mkdir(parents=True, exist_ok=True) # make directory @@ -242,7 +450,7 @@ def download(url, dir='.', unzip=True, delete=True, curl=False, threads=1): pool.close() pool.join() else: - for u in tuple(url) if isinstance(url, str) else url: + for u in [url] if isinstance(url, (str, Path)) else url: download_one(u, dir) @@ -257,7 +465,7 @@ def clean_str(s): def one_cycle(y1=0.0, y2=1.0, steps=100): - # lambda function for sinusoidal ramp from y1 to y2 + # lambda function for sinusoidal ramp from y1 to y2 https://arxiv.org/pdf/1812.01187.pdf return lambda x: ((1 - math.cos(x * math.pi / steps)) / 2) * (y2 - y1) + y1 @@ -355,6 +563,18 @@ def xywhn2xyxy(x, w=640, h=640, padw=0, padh=0): return y +def xyxy2xywhn(x, w=640, h=640, clip=False, eps=0.0): + # Convert nx4 boxes from [x1, y1, x2, y2] to [x, y, w, h] normalized where xy1=top-left, xy2=bottom-right + if clip: + clip_coords(x, (h - eps, w - eps)) # warning: inplace clip + y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x) + y[:, 0] = ((x[:, 0] + x[:, 2]) / 2) / w # x center + y[:, 1] = ((x[:, 1] + x[:, 3]) / 2) / h # y center + y[:, 2] = (x[:, 2] - x[:, 0]) / w # width + y[:, 3] = (x[:, 3] - x[:, 1]) / h # height + return y + + def xyn2xy(x, w=640, h=640, padw=0, padh=0): # Convert normalized segments into pixel segments, shape (n,2) y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x) @@ -405,90 +625,16 @@ def scale_coords(img1_shape, coords, img0_shape, ratio_pad=None): return coords -def clip_coords(boxes, img_shape): +def clip_coords(boxes, shape): # Clip bounding xyxy bounding boxes to image shape (height, width) - boxes[:, 0].clamp_(0, img_shape[1]) # x1 - boxes[:, 1].clamp_(0, img_shape[0]) # y1 - boxes[:, 2].clamp_(0, img_shape[1]) # x2 - boxes[:, 3].clamp_(0, img_shape[0]) # y2 - - -def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False, DIoU=False, CIoU=False, eps=1e-7): - # Returns the IoU of box1 to box2. box1 is 4, box2 is nx4 - box2 = box2.T - - # Get the coordinates of bounding boxes - if x1y1x2y2: # x1, y1, x2, y2 = box1 - b1_x1, b1_y1, b1_x2, b1_y2 = box1[0], box1[1], box1[2], box1[3] - b2_x1, b2_y1, b2_x2, b2_y2 = box2[0], box2[1], box2[2], box2[3] - else: # transform from xywh to xyxy - b1_x1, b1_x2 = box1[0] - box1[2] / 2, box1[0] + box1[2] / 2 - b1_y1, b1_y2 = box1[1] - box1[3] / 2, box1[1] + box1[3] / 2 - b2_x1, b2_x2 = box2[0] - box2[2] / 2, box2[0] + box2[2] / 2 - b2_y1, b2_y2 = box2[1] - box2[3] / 2, box2[1] + box2[3] / 2 - - # Intersection area - inter = (torch.min(b1_x2, b2_x2) - torch.max(b1_x1, b2_x1)).clamp(0) * \ - (torch.min(b1_y2, b2_y2) - torch.max(b1_y1, b2_y1)).clamp(0) - - # Union Area - w1, h1 = b1_x2 - b1_x1, b1_y2 - b1_y1 + eps - w2, h2 = b2_x2 - b2_x1, b2_y2 - b2_y1 + eps - union = w1 * h1 + w2 * h2 - inter + eps - - iou = inter / union - if GIoU or DIoU or CIoU: - cw = torch.max(b1_x2, b2_x2) - torch.min(b1_x1, b2_x1) # convex (smallest enclosing box) width - ch = torch.max(b1_y2, b2_y2) - torch.min(b1_y1, b2_y1) # convex height - if CIoU or DIoU: # Distance or Complete IoU https://arxiv.org/abs/1911.08287v1 - c2 = cw ** 2 + ch ** 2 + eps # convex diagonal squared - rho2 = ((b2_x1 + b2_x2 - b1_x1 - b1_x2) ** 2 + - (b2_y1 + b2_y2 - b1_y1 - b1_y2) ** 2) / 4 # center distance squared - if DIoU: - return iou - rho2 / c2 # DIoU - elif CIoU: # https://github.com/Zzh-tju/DIoU-SSD-pytorch/blob/master/utils/box/box_utils.py#L47 - v = (4 / math.pi ** 2) * torch.pow(torch.atan(w2 / h2) - torch.atan(w1 / h1), 2) - with torch.no_grad(): - alpha = v / (v - iou + (1 + eps)) - return iou - (rho2 / c2 + v * alpha) # CIoU - else: # GIoU https://arxiv.org/pdf/1902.09630.pdf - c_area = cw * ch + eps # convex area - return iou - (c_area - union) / c_area # GIoU - else: - return iou # IoU - - -def box_iou(box1, box2): - # https://github.com/pytorch/vision/blob/master/torchvision/ops/boxes.py - """ - Return intersection-over-union (Jaccard index) of boxes. - Both sets of boxes are expected to be in (x1, y1, x2, y2) format. - Arguments: - box1 (Tensor[N, 4]) - box2 (Tensor[M, 4]) - Returns: - iou (Tensor[N, M]): the NxM matrix containing the pairwise - IoU values for every element in boxes1 and boxes2 - """ - - def box_area(box): - # box = 4xn - return (box[2] - box[0]) * (box[3] - box[1]) - - area1 = box_area(box1.T) - area2 = box_area(box2.T) - - # inter(N,M) = (rb(N,M,2) - lt(N,M,2)).clamp(0).prod(2) - inter = (torch.min(box1[:, None, 2:], box2[:, 2:]) - torch.max(box1[:, None, :2], box2[:, :2])).clamp(0).prod(2) - return inter / (area1[:, None] + area2 - inter) # iou = inter / (area1 + area2 - inter) - - -def wh_iou(wh1, wh2): - # Returns the nxm IoU matrix. wh1 is nx2, wh2 is mx2 - wh1 = wh1[:, None] # [N,1,2] - wh2 = wh2[None] # [1,M,2] - inter = torch.min(wh1, wh2).prod(2) # [N,M] - return inter / (wh1.prod(2) + wh2.prod(2) - inter) # iou = inter / (area1 + area2 - inter) + if isinstance(boxes, torch.Tensor): # faster individually + boxes[:, 0].clamp_(0, shape[1]) # x1 + boxes[:, 1].clamp_(0, shape[0]) # y1 + boxes[:, 2].clamp_(0, shape[1]) # x2 + boxes[:, 3].clamp_(0, shape[0]) # y2 + else: # np.array (faster grouped) + boxes[:, [0, 2]] = boxes[:, [0, 2]].clip(0, shape[1]) # x1, x2 + boxes[:, [1, 3]] = boxes[:, [1, 3]].clip(0, shape[0]) # y1, y2 def non_max_suppression(prediction, conf_thres=0.25, iou_thres=0.45, classes=None, agnostic=False, multi_label=False, @@ -601,39 +747,48 @@ def strip_optimizer(f='best.pt', s=''): # from utils.general import *; strip_op print(f"Optimizer stripped from {f},{(' saved as %s,' % s) if s else ''} {mb:.1f}MB") -def print_mutation(hyp, results, yaml_file='hyp_evolved.yaml', bucket=''): - # Print mutation results to evolve.txt (for use with train.py --evolve) - a = '%10s' * len(hyp) % tuple(hyp.keys()) # hyperparam keys - b = '%10.3g' * len(hyp) % tuple(hyp.values()) # hyperparam values - c = '%10.4g' * len(results) % results # results (P, R, mAP@0.5, mAP@0.5:0.95, val_losses x 3) - print('\n%s\n%s\nEvolved fitness: %s\n' % (a, b, c)) +def print_mutation(results, hyp, save_dir, bucket): + evolve_csv, results_csv, evolve_yaml = save_dir / 'evolve.csv', save_dir / 'results.csv', save_dir / 'hyp_evolve.yaml' + keys = ('metrics/precision', 'metrics/recall', 'metrics/mAP_0.5', 'metrics/mAP_0.5:0.95', + 'val/box_loss', 'val/obj_loss', 'val/cls_loss') + tuple(hyp.keys()) # [results + hyps] + keys = tuple(x.strip() for x in keys) + vals = results + tuple(hyp.values()) + n = len(keys) + # Download (optional) if bucket: - url = 'gs://%s/evolve.txt' % bucket - if gsutil_getsize(url) > (os.path.getsize('evolve.txt') if os.path.exists('evolve.txt') else 0): - os.system('gsutil cp %s .' % url) # download evolve.txt if larger than local + url = f'gs://{bucket}/evolve.csv' + if gsutil_getsize(url) > (os.path.getsize(evolve_csv) if os.path.exists(evolve_csv) else 0): + os.system(f'gsutil cp {url} {save_dir}') # download evolve.csv if larger than local - with open('evolve.txt', 'a') as f: # append result - f.write(c + b + '\n') - x = np.unique(np.loadtxt('evolve.txt', ndmin=2), axis=0) # load unique rows - x = x[np.argsort(-fitness(x))] # sort - np.savetxt('evolve.txt', x, '%10.3g') # save sort by fitness + # Log to evolve.csv + s = '' if evolve_csv.exists() else (('%20s,' * n % keys).rstrip(',') + '\n') # add header + with open(evolve_csv, 'a') as f: + f.write(s + ('%20.5g,' * n % vals).rstrip(',') + '\n') + + # Print to screen + print(colorstr('evolve: ') + ', '.join(f'{x.strip():>20s}' for x in keys)) + print(colorstr('evolve: ') + ', '.join(f'{x:20.5g}' for x in vals), end='\n\n\n') # Save yaml - for i, k in enumerate(hyp.keys()): - hyp[k] = float(x[0, i + 7]) - with open(yaml_file, 'w') as f: - results = tuple(x[0, :7]) - c = '%10.4g' * len(results) % results # results (P, R, mAP@0.5, mAP@0.5:0.95, val_losses x 3) - f.write('# Hyperparameter Evolution Results\n# Generations: %g\n# Metrics: ' % len(x) + c + '\n\n') + with open(evolve_yaml, 'w') as f: + data = pd.read_csv(evolve_csv) + data = data.rename(columns=lambda x: x.strip()) # strip keys + i = np.argmax(fitness(data.values[:, :7])) # + f.write('# YOLOv3 Hyperparameter Evolution Results\n' + + f'# Best generation: {i}\n' + + f'# Last generation: {len(data)}\n' + + '# ' + ', '.join(f'{x.strip():>20s}' for x in keys[:7]) + '\n' + + '# ' + ', '.join(f'{x:>20.5g}' for x in data.values[i, :7]) + '\n\n') yaml.safe_dump(hyp, f, sort_keys=False) if bucket: - os.system('gsutil cp evolve.txt %s gs://%s' % (yaml_file, bucket)) # upload + os.system(f'gsutil cp {evolve_csv} {evolve_yaml} gs://{bucket}') # upload def apply_classifier(x, model, img, im0): - # Apply a second stage classifier to yolo outputs + # Apply a second stage classifier to YOLO outputs + # Example model = torchvision.models.__dict__['efficientnet_b0'](pretrained=True).to(device).eval() im0 = [im0] if isinstance(im0, np.ndarray) else im0 for i, d in enumerate(x): # per image if d is not None and len(d): @@ -654,11 +809,11 @@ def apply_classifier(x, model, img, im0): for j, a in enumerate(d): # per item cutout = im0[i][int(a[1]):int(a[3]), int(a[0]):int(a[2])] im = cv2.resize(cutout, (224, 224)) # BGR - # cv2.imwrite('test%i.jpg' % j, cutout) + # cv2.imwrite('example%i.jpg' % j, cutout) im = im[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416 im = np.ascontiguousarray(im, dtype=np.float32) # uint8 to float32 - im /= 255.0 # 0 - 255 to 0.0 - 1.0 + im /= 255 # 0 - 255 to 0.0 - 1.0 ims.append(im) pred_cls2 = model(torch.Tensor(ims).to(d.device)).argmax(1) # classifier prediction @@ -667,33 +822,20 @@ def apply_classifier(x, model, img, im0): return x -def save_one_box(xyxy, im, file='image.jpg', gain=1.02, pad=10, square=False, BGR=False, save=True): - # Save image crop as {file} with crop size multiple {gain} and {pad} pixels. Save and/or return crop - xyxy = torch.tensor(xyxy).view(-1, 4) - b = xyxy2xywh(xyxy) # boxes - if square: - b[:, 2:] = b[:, 2:].max(1)[0].unsqueeze(1) # attempt rectangle to square - b[:, 2:] = b[:, 2:] * gain + pad # box wh * gain + pad - xyxy = xywh2xyxy(b).long() - clip_coords(xyxy, im.shape) - crop = im[int(xyxy[0, 1]):int(xyxy[0, 3]), int(xyxy[0, 0]):int(xyxy[0, 2]), ::(1 if BGR else -1)] - if save: - cv2.imwrite(str(increment_path(file, mkdir=True).with_suffix('.jpg')), crop) - return crop - - def increment_path(path, exist_ok=False, sep='', mkdir=False): # Increment file or directory path, i.e. runs/exp --> runs/exp{sep}2, runs/exp{sep}3, ... etc. path = Path(path) # os-agnostic if path.exists() and not exist_ok: - suffix = path.suffix - path = path.with_suffix('') + path, suffix = (path.with_suffix(''), path.suffix) if path.is_file() else (path, '') dirs = glob.glob(f"{path}{sep}*") # similar paths matches = [re.search(rf"%s{sep}(\d+)" % path.stem, d) for d in dirs] i = [int(m.groups()[0]) for m in matches if m] # indices n = max(i) + 1 if i else 2 # increment number - path = Path(f"{path}{sep}{n}{suffix}") # update path - dir = path if path.suffix == '' else path.parent # directory - if not dir.exists() and mkdir: - dir.mkdir(parents=True, exist_ok=True) # make directory + path = Path(f"{path}{sep}{n}{suffix}") # increment path + if mkdir: + path.mkdir(parents=True, exist_ok=True) # make directory return path + + +# Variables +NCOLS = 0 if is_docker() else shutil.get_terminal_size().columns # terminal window size diff --git a/utils/google_app_engine/Dockerfile b/utils/google_app_engine/Dockerfile deleted file mode 100644 index 0155618f..00000000 --- a/utils/google_app_engine/Dockerfile +++ /dev/null @@ -1,25 +0,0 @@ -FROM gcr.io/google-appengine/python - -# Create a virtualenv for dependencies. This isolates these packages from -# system-level packages. -# Use -p python3 or -p python3.7 to select python version. Default is version 2. -RUN virtualenv /env -p python3 - -# Setting these environment variables are the same as running -# source /env/bin/activate. -ENV VIRTUAL_ENV /env -ENV PATH /env/bin:$PATH - -RUN apt-get update && apt-get install -y python-opencv - -# Copy the application's requirements.txt and run pip to install all -# dependencies into the virtualenv. -ADD requirements.txt /app/requirements.txt -RUN pip install -r /app/requirements.txt - -# Add the application source code. -ADD . /app - -# Run a WSGI server to serve the application. gunicorn must be declared as -# a dependency in requirements.txt. -CMD gunicorn -b :$PORT main:app diff --git a/utils/google_app_engine/additional_requirements.txt b/utils/google_app_engine/additional_requirements.txt deleted file mode 100644 index 2f81c8b4..00000000 --- a/utils/google_app_engine/additional_requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -# add these requirements in your app on top of the existing ones -pip==19.2 -Flask==1.0.2 -gunicorn==19.9.0 diff --git a/utils/google_app_engine/app.yaml b/utils/google_app_engine/app.yaml deleted file mode 100644 index bd162e44..00000000 --- a/utils/google_app_engine/app.yaml +++ /dev/null @@ -1,14 +0,0 @@ -runtime: custom -env: flex - -service: yolov3app - -liveness_check: - initial_delay_sec: 600 - -manual_scaling: - instances: 1 -resources: - cpu: 1 - memory_gb: 4 - disk_size_gb: 20 \ No newline at end of file diff --git a/utils/loggers/__init__.py b/utils/loggers/__init__.py new file mode 100644 index 00000000..bf55fec8 --- /dev/null +++ b/utils/loggers/__init__.py @@ -0,0 +1,156 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Logging utils +""" + +import os +import warnings +from threading import Thread + +import pkg_resources as pkg +import torch +from torch.utils.tensorboard import SummaryWriter + +from utils.general import colorstr, emojis +from utils.loggers.wandb.wandb_utils import WandbLogger +from utils.plots import plot_images, plot_results +from utils.torch_utils import de_parallel + +LOGGERS = ('csv', 'tb', 'wandb') # text-file, TensorBoard, Weights & Biases +RANK = int(os.getenv('RANK', -1)) + +try: + import wandb + + assert hasattr(wandb, '__version__') # verify package import not local dir + if pkg.parse_version(wandb.__version__) >= pkg.parse_version('0.12.2') and RANK in [0, -1]: + wandb_login_success = wandb.login(timeout=30) + if not wandb_login_success: + wandb = None +except (ImportError, AssertionError): + wandb = None + + +class Loggers(): + # Loggers class + def __init__(self, save_dir=None, weights=None, opt=None, hyp=None, logger=None, include=LOGGERS): + self.save_dir = save_dir + self.weights = weights + self.opt = opt + self.hyp = hyp + self.logger = logger # for printing results to console + self.include = include + self.keys = ['train/box_loss', 'train/obj_loss', 'train/cls_loss', # train loss + 'metrics/precision', 'metrics/recall', 'metrics/mAP_0.5', 'metrics/mAP_0.5:0.95', # metrics + 'val/box_loss', 'val/obj_loss', 'val/cls_loss', # val loss + 'x/lr0', 'x/lr1', 'x/lr2'] # params + for k in LOGGERS: + setattr(self, k, None) # init empty logger dictionary + self.csv = True # always log to csv + + # Message + if not wandb: + prefix = colorstr('Weights & Biases: ') + s = f"{prefix}run 'pip install wandb' to automatically track and visualize YOLOv3 🚀 runs (RECOMMENDED)" + print(emojis(s)) + + # TensorBoard + s = self.save_dir + if 'tb' in self.include and not self.opt.evolve: + prefix = colorstr('TensorBoard: ') + self.logger.info(f"{prefix}Start with 'tensorboard --logdir {s.parent}', view at http://localhost:6006/") + self.tb = SummaryWriter(str(s)) + + # W&B + if wandb and 'wandb' in self.include: + wandb_artifact_resume = isinstance(self.opt.resume, str) and self.opt.resume.startswith('wandb-artifact://') + run_id = torch.load(self.weights).get('wandb_id') if self.opt.resume and not wandb_artifact_resume else None + self.opt.hyp = self.hyp # add hyperparameters + self.wandb = WandbLogger(self.opt, run_id) + else: + self.wandb = None + + def on_pretrain_routine_end(self): + # Callback runs on pre-train routine end + paths = self.save_dir.glob('*labels*.jpg') # training labels + if self.wandb: + self.wandb.log({"Labels": [wandb.Image(str(x), caption=x.name) for x in paths]}) + + def on_train_batch_end(self, ni, model, imgs, targets, paths, plots, sync_bn): + # Callback runs on train batch end + if plots: + if ni == 0: + if not sync_bn: # tb.add_graph() --sync known issue https://github.com/ultralytics/yolov5/issues/3754 + with warnings.catch_warnings(): + warnings.simplefilter('ignore') # suppress jit trace warning + self.tb.add_graph(torch.jit.trace(de_parallel(model), imgs[0:1], strict=False), []) + if ni < 3: + f = self.save_dir / f'train_batch{ni}.jpg' # filename + Thread(target=plot_images, args=(imgs, targets, paths, f), daemon=True).start() + if self.wandb and ni == 10: + files = sorted(self.save_dir.glob('train*.jpg')) + self.wandb.log({'Mosaics': [wandb.Image(str(f), caption=f.name) for f in files if f.exists()]}) + + def on_train_epoch_end(self, epoch): + # Callback runs on train epoch end + if self.wandb: + self.wandb.current_epoch = epoch + 1 + + def on_val_image_end(self, pred, predn, path, names, im): + # Callback runs on val image end + if self.wandb: + self.wandb.val_one_image(pred, predn, path, names, im) + + def on_val_end(self): + # Callback runs on val end + if self.wandb: + files = sorted(self.save_dir.glob('val*.jpg')) + self.wandb.log({"Validation": [wandb.Image(str(f), caption=f.name) for f in files]}) + + def on_fit_epoch_end(self, vals, epoch, best_fitness, fi): + # Callback runs at the end of each fit (train+val) epoch + x = {k: v for k, v in zip(self.keys, vals)} # dict + if self.csv: + file = self.save_dir / 'results.csv' + n = len(x) + 1 # number of cols + s = '' if file.exists() else (('%20s,' * n % tuple(['epoch'] + self.keys)).rstrip(',') + '\n') # add header + with open(file, 'a') as f: + f.write(s + ('%20.5g,' * n % tuple([epoch] + vals)).rstrip(',') + '\n') + + if self.tb: + for k, v in x.items(): + self.tb.add_scalar(k, v, epoch) + + if self.wandb: + self.wandb.log(x) + self.wandb.end_epoch(best_result=best_fitness == fi) + + def on_model_save(self, last, epoch, final_epoch, best_fitness, fi): + # Callback runs on model save event + if self.wandb: + if ((epoch + 1) % self.opt.save_period == 0 and not final_epoch) and self.opt.save_period != -1: + self.wandb.log_model(last.parent, self.opt, epoch, fi, best_model=best_fitness == fi) + + def on_train_end(self, last, best, plots, epoch, results): + # Callback runs on training end + if plots: + plot_results(file=self.save_dir / 'results.csv') # save results.png + files = ['results.png', 'confusion_matrix.png', *(f'{x}_curve.png' for x in ('F1', 'PR', 'P', 'R'))] + files = [(self.save_dir / f) for f in files if (self.save_dir / f).exists()] # filter + + if self.tb: + import cv2 + for f in files: + self.tb.add_image(f.stem, cv2.imread(str(f))[..., ::-1], epoch, dataformats='HWC') + + if self.wandb: + self.wandb.log({"Results": [wandb.Image(str(f), caption=f.name) for f in files]}) + # Calling wandb.log. TODO: Refactor this into WandbLogger.log_model + if not self.opt.evolve: + wandb.log_artifact(str(best if best.exists() else last), type='model', + name='run_' + self.wandb.wandb_run.id + '_model', + aliases=['latest', 'best', 'stripped']) + self.wandb.finish_run() + else: + self.wandb.finish_run() + self.wandb = WandbLogger(self.opt) diff --git a/utils/loggers/wandb/README.md b/utils/loggers/wandb/README.md new file mode 100644 index 00000000..bae57bda --- /dev/null +++ b/utils/loggers/wandb/README.md @@ -0,0 +1,147 @@ +📚 This guide explains how to use **Weights & Biases** (W&B) with YOLOv3 🚀. UPDATED 29 September 2021. +* [About Weights & Biases](#about-weights-&-biases) +* [First-Time Setup](#first-time-setup) +* [Viewing runs](#viewing-runs) +* [Advanced Usage: Dataset Versioning and Evaluation](#advanced-usage) +* [Reports: Share your work with the world!](#reports) + +## About Weights & Biases +Think of [W&B](https://wandb.ai/site?utm_campaign=repo_yolo_wandbtutorial) like GitHub for machine learning models. With a few lines of code, save everything you need to debug, compare and reproduce your models — architecture, hyperparameters, git commits, model weights, GPU usage, and even datasets and predictions. + +Used by top researchers including teams at OpenAI, Lyft, Github, and MILA, W&B is part of the new standard of best practices for machine learning. How W&B can help you optimize your machine learning workflows: + + * [Debug](https://wandb.ai/wandb/getting-started/reports/Visualize-Debug-Machine-Learning-Models--VmlldzoyNzY5MDk#Free-2) model performance in real time + * [GPU usage](https://wandb.ai/wandb/getting-started/reports/Visualize-Debug-Machine-Learning-Models--VmlldzoyNzY5MDk#System-4) visualized automatically + * [Custom charts](https://wandb.ai/wandb/customizable-charts/reports/Powerful-Custom-Charts-To-Debug-Model-Peformance--VmlldzoyNzY4ODI) for powerful, extensible visualization + * [Share insights](https://wandb.ai/wandb/getting-started/reports/Visualize-Debug-Machine-Learning-Models--VmlldzoyNzY5MDk#Share-8) interactively with collaborators + * [Optimize hyperparameters](https://docs.wandb.com/sweeps) efficiently + * [Track](https://docs.wandb.com/artifacts) datasets, pipelines, and production models + +## First-Time Setup +
+ Toggle Details +When you first train, W&B will prompt you to create a new account and will generate an **API key** for you. If you are an existing user you can retrieve your key from https://wandb.ai/authorize. This key is used to tell W&B where to log your data. You only need to supply your key once, and then it is remembered on the same device. + +W&B will create a cloud **project** (default is 'YOLOv3') for your training runs, and each new training run will be provided a unique run **name** within that project as project/name. You can also manually set your project and run name as: + + ```shell + $ python train.py --project ... --name ... + ``` + +YOLOv3 notebook example: Open In Colab Open In Kaggle +Screen Shot 2021-09-29 at 10 23 13 PM + + +
+ +## Viewing Runs +
+ Toggle Details +Run information streams from your environment to the W&B cloud console as you train. This allows you to monitor and even cancel runs in realtime . All important information is logged: + + * Training & Validation losses + * Metrics: Precision, Recall, mAP@0.5, mAP@0.5:0.95 + * Learning Rate over time + * A bounding box debugging panel, showing the training progress over time + * GPU: Type, **GPU Utilization**, power, temperature, **CUDA memory usage** + * System: Disk I/0, CPU utilization, RAM memory usage + * Your trained model as W&B Artifact + * Environment: OS and Python types, Git repository and state, **training command** + +

Weights & Biases dashboard

+ + +
+ +## Advanced Usage +You can leverage W&B artifacts and Tables integration to easily visualize and manage your datasets, models and training evaluations. Here are some quick examples to get you started. +
+

1. Visualize and Version Datasets

+ Log, visualize, dynamically query, and understand your data with W&B Tables. You can use the following command to log your dataset as a W&B Table. This will generate a {dataset}_wandb.yaml file which can be used to train from dataset artifact. +
+ Usage + Code $ python utils/logger/wandb/log_dataset.py --project ... --name ... --data .. + + ![Screenshot (64)](https://user-images.githubusercontent.com/15766192/128486078-d8433890-98a3-4d12-8986-b6c0e3fc64b9.png) +
+ +

2: Train and Log Evaluation simultaneousy

+ This is an extension of the previous section, but it'll also training after uploading the dataset. This also evaluation Table + Evaluation table compares your predictions and ground truths across the validation set for each epoch. It uses the references to the already uploaded datasets, + so no images will be uploaded from your system more than once. +
+ Usage + Code $ python utils/logger/wandb/log_dataset.py --data .. --upload_data + +![Screenshot (72)](https://user-images.githubusercontent.com/15766192/128979739-4cf63aeb-a76f-483f-8861-1c0100b938a5.png) +
+ +

3: Train using dataset artifact

+ When you upload a dataset as described in the first section, you get a new config file with an added `_wandb` to its name. This file contains the information that + can be used to train a model directly from the dataset artifact. This also logs evaluation +
+ Usage + Code $ python utils/logger/wandb/log_dataset.py --data {data}_wandb.yaml + +![Screenshot (72)](https://user-images.githubusercontent.com/15766192/128979739-4cf63aeb-a76f-483f-8861-1c0100b938a5.png) +
+ +

4: Save model checkpoints as artifacts

+ To enable saving and versioning checkpoints of your experiment, pass `--save_period n` with the base cammand, where `n` represents checkpoint interval. + You can also log both the dataset and model checkpoints simultaneously. If not passed, only the final model will be logged + +
+ Usage + Code $ python train.py --save_period 1 + +![Screenshot (68)](https://user-images.githubusercontent.com/15766192/128726138-ec6c1f60-639d-437d-b4ee-3acd9de47ef3.png) +
+ +
+ +

5: Resume runs from checkpoint artifacts.

+Any run can be resumed using artifacts if the --resume argument starts with wandb-artifact:// prefix followed by the run path, i.e, wandb-artifact://username/project/runid . This doesn't require the model checkpoint to be present on the local system. + +
+ Usage + Code $ python train.py --resume wandb-artifact://{run_path} + +![Screenshot (70)](https://user-images.githubusercontent.com/15766192/128728988-4e84b355-6c87-41ae-a591-14aecf45343e.png) +
+ +

6: Resume runs from dataset artifact & checkpoint artifacts.

+ Local dataset or model checkpoints are not required. This can be used to resume runs directly on a different device + The syntax is same as the previous section, but you'll need to lof both the dataset and model checkpoints as artifacts, i.e, set bot --upload_dataset or + train from _wandb.yaml file and set --save_period + +
+ Usage + Code $ python train.py --resume wandb-artifact://{run_path} + +![Screenshot (70)](https://user-images.githubusercontent.com/15766192/128728988-4e84b355-6c87-41ae-a591-14aecf45343e.png) +
+ + + + +

Reports

+W&B Reports can be created from your saved runs for sharing online. Once a report is created you will receive a link you can use to publically share your results. Here is an example report created from the COCO128 tutorial trainings of all YOLOv5 models ([link](https://wandb.ai/glenn-jocher/yolov5_tutorial/reports/YOLOv5-COCO128-Tutorial-Results--VmlldzozMDI5OTY)). + +Weights & Biases Reports + + +## Environments + +YOLOv3 may be run in any of the following up-to-date verified environments (with all dependencies including [CUDA](https://developer.nvidia.com/cuda)/[CUDNN](https://developer.nvidia.com/cudnn), [Python](https://www.python.org/) and [PyTorch](https://pytorch.org/) preinstalled): + +- **Google Colab and Kaggle** notebooks with free GPU: Open In Colab Open In Kaggle +- **Google Cloud** Deep Learning VM. See [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) +- **Amazon** Deep Learning AMI. See [AWS Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/AWS-Quickstart) +- **Docker Image**. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) Docker Pulls + + +## Status + +![CI CPU testing](https://github.com/ultralytics/yolov3/workflows/CI%20CPU%20testing/badge.svg) + +If this badge is green, all [YOLOv3 GitHub Actions](https://github.com/ultralytics/yolov3/actions) Continuous Integration (CI) tests are currently passing. CI tests verify correct operation of YOLOv3 training ([train.py](https://github.com/ultralytics/yolov3/blob/master/train.py)), validation ([val.py](https://github.com/ultralytics/yolov3/blob/master/val.py)), inference ([detect.py](https://github.com/ultralytics/yolov3/blob/master/detect.py)) and export ([export.py](https://github.com/ultralytics/yolov3/blob/master/export.py)) on MacOS, Windows, and Ubuntu every 24 hours and on every commit. diff --git a/utils/aws/__init__.py b/utils/loggers/wandb/__init__.py similarity index 100% rename from utils/aws/__init__.py rename to utils/loggers/wandb/__init__.py diff --git a/utils/wandb_logging/log_dataset.py b/utils/loggers/wandb/log_dataset.py similarity index 61% rename from utils/wandb_logging/log_dataset.py rename to utils/loggers/wandb/log_dataset.py index fae76b04..d3c77430 100644 --- a/utils/wandb_logging/log_dataset.py +++ b/utils/loggers/wandb/log_dataset.py @@ -1,16 +1,16 @@ import argparse -import yaml - from wandb_utils import WandbLogger +from utils.general import LOGGER + WANDB_ARTIFACT_PREFIX = 'wandb-artifact://' def create_dataset_artifact(opt): - with open(opt.data) as f: - data = yaml.safe_load(f) # data dict - logger = WandbLogger(opt, '', None, data, job_type='Dataset Creation') + logger = WandbLogger(opt, None, job_type='Dataset Creation') # TODO: return value unused + if not logger.wandb: + LOGGER.info("install wandb using `pip install wandb` to log the dataset") if __name__ == '__main__': @@ -18,6 +18,9 @@ if __name__ == '__main__': parser.add_argument('--data', type=str, default='data/coco128.yaml', help='data.yaml path') parser.add_argument('--single-cls', action='store_true', help='train as single-class dataset') parser.add_argument('--project', type=str, default='YOLOv3', help='name of W&B Project') + parser.add_argument('--entity', default=None, help='W&B entity') + parser.add_argument('--name', type=str, default='log dataset', help='name of W&B run') + opt = parser.parse_args() opt.resume = False # Explicitly disallow resume check for dataset upload job diff --git a/utils/loggers/wandb/sweep.py b/utils/loggers/wandb/sweep.py new file mode 100644 index 00000000..5e24f96e --- /dev/null +++ b/utils/loggers/wandb/sweep.py @@ -0,0 +1,41 @@ +import sys +from pathlib import Path + +import wandb + +FILE = Path(__file__).resolve() +ROOT = FILE.parents[3] # root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH + +from train import parse_opt, train +from utils.callbacks import Callbacks +from utils.general import increment_path +from utils.torch_utils import select_device + + +def sweep(): + wandb.init() + # Get hyp dict from sweep agent + hyp_dict = vars(wandb.config).get("_items") + + # Workaround: get necessary opt args + opt = parse_opt(known=True) + opt.batch_size = hyp_dict.get("batch_size") + opt.save_dir = str(increment_path(Path(opt.project) / opt.name, exist_ok=opt.exist_ok or opt.evolve)) + opt.epochs = hyp_dict.get("epochs") + opt.nosave = True + opt.data = hyp_dict.get("data") + opt.weights = str(opt.weights) + opt.cfg = str(opt.cfg) + opt.data = str(opt.data) + opt.hyp = str(opt.hyp) + opt.project = str(opt.project) + device = select_device(opt.device, batch_size=opt.batch_size) + + # train + train(hyp_dict, opt, device, callbacks=Callbacks()) + + +if __name__ == "__main__": + sweep() diff --git a/utils/loggers/wandb/sweep.yaml b/utils/loggers/wandb/sweep.yaml new file mode 100644 index 00000000..c7790d75 --- /dev/null +++ b/utils/loggers/wandb/sweep.yaml @@ -0,0 +1,143 @@ +# Hyperparameters for training +# To set range- +# Provide min and max values as: +# parameter: +# +# min: scalar +# max: scalar +# OR +# +# Set a specific list of search space- +# parameter: +# values: [scalar1, scalar2, scalar3...] +# +# You can use grid, bayesian and hyperopt search strategy +# For more info on configuring sweeps visit - https://docs.wandb.ai/guides/sweeps/configuration + +program: utils/loggers/wandb/sweep.py +method: random +metric: + name: metrics/mAP_0.5 + goal: maximize + +parameters: + # hyperparameters: set either min, max range or values list + data: + value: "data/coco128.yaml" + batch_size: + values: [64] + epochs: + values: [10] + + lr0: + distribution: uniform + min: 1e-5 + max: 1e-1 + lrf: + distribution: uniform + min: 0.01 + max: 1.0 + momentum: + distribution: uniform + min: 0.6 + max: 0.98 + weight_decay: + distribution: uniform + min: 0.0 + max: 0.001 + warmup_epochs: + distribution: uniform + min: 0.0 + max: 5.0 + warmup_momentum: + distribution: uniform + min: 0.0 + max: 0.95 + warmup_bias_lr: + distribution: uniform + min: 0.0 + max: 0.2 + box: + distribution: uniform + min: 0.02 + max: 0.2 + cls: + distribution: uniform + min: 0.2 + max: 4.0 + cls_pw: + distribution: uniform + min: 0.5 + max: 2.0 + obj: + distribution: uniform + min: 0.2 + max: 4.0 + obj_pw: + distribution: uniform + min: 0.5 + max: 2.0 + iou_t: + distribution: uniform + min: 0.1 + max: 0.7 + anchor_t: + distribution: uniform + min: 2.0 + max: 8.0 + fl_gamma: + distribution: uniform + min: 0.0 + max: 0.1 + hsv_h: + distribution: uniform + min: 0.0 + max: 0.1 + hsv_s: + distribution: uniform + min: 0.0 + max: 0.9 + hsv_v: + distribution: uniform + min: 0.0 + max: 0.9 + degrees: + distribution: uniform + min: 0.0 + max: 45.0 + translate: + distribution: uniform + min: 0.0 + max: 0.9 + scale: + distribution: uniform + min: 0.0 + max: 0.9 + shear: + distribution: uniform + min: 0.0 + max: 10.0 + perspective: + distribution: uniform + min: 0.0 + max: 0.001 + flipud: + distribution: uniform + min: 0.0 + max: 1.0 + fliplr: + distribution: uniform + min: 0.0 + max: 1.0 + mosaic: + distribution: uniform + min: 0.0 + max: 1.0 + mixup: + distribution: uniform + min: 0.0 + max: 1.0 + copy_paste: + distribution: uniform + min: 0.0 + max: 1.0 diff --git a/utils/loggers/wandb/wandb_utils.py b/utils/loggers/wandb/wandb_utils.py new file mode 100644 index 00000000..7087e4e9 --- /dev/null +++ b/utils/loggers/wandb/wandb_utils.py @@ -0,0 +1,532 @@ +"""Utilities and tools for tracking runs with Weights & Biases.""" + +import logging +import os +import sys +from contextlib import contextmanager +from pathlib import Path +from typing import Dict + +import pkg_resources as pkg +import yaml +from tqdm import tqdm + +FILE = Path(__file__).resolve() +ROOT = FILE.parents[3] # root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH + +from utils.datasets import LoadImagesAndLabels, img2label_paths +from utils.general import LOGGER, check_dataset, check_file + +try: + import wandb + + assert hasattr(wandb, '__version__') # verify package import not local dir +except (ImportError, AssertionError): + wandb = None + +RANK = int(os.getenv('RANK', -1)) +WANDB_ARTIFACT_PREFIX = 'wandb-artifact://' + + +def remove_prefix(from_string, prefix=WANDB_ARTIFACT_PREFIX): + return from_string[len(prefix):] + + +def check_wandb_config_file(data_config_file): + wandb_config = '_wandb.'.join(data_config_file.rsplit('.', 1)) # updated data.yaml path + if Path(wandb_config).is_file(): + return wandb_config + return data_config_file + + +def check_wandb_dataset(data_file): + is_trainset_wandb_artifact = False + is_valset_wandb_artifact = False + if check_file(data_file) and data_file.endswith('.yaml'): + with open(data_file, errors='ignore') as f: + data_dict = yaml.safe_load(f) + is_trainset_wandb_artifact = (isinstance(data_dict['train'], str) and + data_dict['train'].startswith(WANDB_ARTIFACT_PREFIX)) + is_valset_wandb_artifact = (isinstance(data_dict['val'], str) and + data_dict['val'].startswith(WANDB_ARTIFACT_PREFIX)) + if is_trainset_wandb_artifact or is_valset_wandb_artifact: + return data_dict + else: + return check_dataset(data_file) + + +def get_run_info(run_path): + run_path = Path(remove_prefix(run_path, WANDB_ARTIFACT_PREFIX)) + run_id = run_path.stem + project = run_path.parent.stem + entity = run_path.parent.parent.stem + model_artifact_name = 'run_' + run_id + '_model' + return entity, project, run_id, model_artifact_name + + +def check_wandb_resume(opt): + process_wandb_config_ddp_mode(opt) if RANK not in [-1, 0] else None + if isinstance(opt.resume, str): + if opt.resume.startswith(WANDB_ARTIFACT_PREFIX): + if RANK not in [-1, 0]: # For resuming DDP runs + entity, project, run_id, model_artifact_name = get_run_info(opt.resume) + api = wandb.Api() + artifact = api.artifact(entity + '/' + project + '/' + model_artifact_name + ':latest') + modeldir = artifact.download() + opt.weights = str(Path(modeldir) / "last.pt") + return True + return None + + +def process_wandb_config_ddp_mode(opt): + with open(check_file(opt.data), errors='ignore') as f: + data_dict = yaml.safe_load(f) # data dict + train_dir, val_dir = None, None + if isinstance(data_dict['train'], str) and data_dict['train'].startswith(WANDB_ARTIFACT_PREFIX): + api = wandb.Api() + train_artifact = api.artifact(remove_prefix(data_dict['train']) + ':' + opt.artifact_alias) + train_dir = train_artifact.download() + train_path = Path(train_dir) / 'data/images/' + data_dict['train'] = str(train_path) + + if isinstance(data_dict['val'], str) and data_dict['val'].startswith(WANDB_ARTIFACT_PREFIX): + api = wandb.Api() + val_artifact = api.artifact(remove_prefix(data_dict['val']) + ':' + opt.artifact_alias) + val_dir = val_artifact.download() + val_path = Path(val_dir) / 'data/images/' + data_dict['val'] = str(val_path) + if train_dir or val_dir: + ddp_data_path = str(Path(val_dir) / 'wandb_local_data.yaml') + with open(ddp_data_path, 'w') as f: + yaml.safe_dump(data_dict, f) + opt.data = ddp_data_path + + +class WandbLogger(): + """Log training runs, datasets, models, and predictions to Weights & Biases. + + This logger sends information to W&B at wandb.ai. By default, this information + includes hyperparameters, system configuration and metrics, model metrics, + and basic data metrics and analyses. + + By providing additional command line arguments to train.py, datasets, + models and predictions can also be logged. + + For more on how this logger is used, see the Weights & Biases documentation: + https://docs.wandb.com/guides/integrations/yolov5 + """ + + def __init__(self, opt, run_id=None, job_type='Training'): + """ + - Initialize WandbLogger instance + - Upload dataset if opt.upload_dataset is True + - Setup trainig processes if job_type is 'Training' + + arguments: + opt (namespace) -- Commandline arguments for this run + run_id (str) -- Run ID of W&B run to be resumed + job_type (str) -- To set the job_type for this run + + """ + # Pre-training routine -- + self.job_type = job_type + self.wandb, self.wandb_run = wandb, None if not wandb else wandb.run + self.val_artifact, self.train_artifact = None, None + self.train_artifact_path, self.val_artifact_path = None, None + self.result_artifact = None + self.val_table, self.result_table = None, None + self.bbox_media_panel_images = [] + self.val_table_path_map = None + self.max_imgs_to_log = 16 + self.wandb_artifact_data_dict = None + self.data_dict = None + # It's more elegant to stick to 1 wandb.init call, + # but useful config data is overwritten in the WandbLogger's wandb.init call + if isinstance(opt.resume, str): # checks resume from artifact + if opt.resume.startswith(WANDB_ARTIFACT_PREFIX): + entity, project, run_id, model_artifact_name = get_run_info(opt.resume) + model_artifact_name = WANDB_ARTIFACT_PREFIX + model_artifact_name + assert wandb, 'install wandb to resume wandb runs' + # Resume wandb-artifact:// runs here| workaround for not overwriting wandb.config + self.wandb_run = wandb.init(id=run_id, + project=project, + entity=entity, + resume='allow', + allow_val_change=True) + opt.resume = model_artifact_name + elif self.wandb: + self.wandb_run = wandb.init(config=opt, + resume="allow", + project='YOLOv3' if opt.project == 'runs/train' else Path(opt.project).stem, + entity=opt.entity, + name=opt.name if opt.name != 'exp' else None, + job_type=job_type, + id=run_id, + allow_val_change=True) if not wandb.run else wandb.run + if self.wandb_run: + if self.job_type == 'Training': + if opt.upload_dataset: + if not opt.resume: + self.wandb_artifact_data_dict = self.check_and_upload_dataset(opt) + + if opt.resume: + # resume from artifact + if isinstance(opt.resume, str) and opt.resume.startswith(WANDB_ARTIFACT_PREFIX): + self.data_dict = dict(self.wandb_run.config.data_dict) + else: # local resume + self.data_dict = check_wandb_dataset(opt.data) + else: + self.data_dict = check_wandb_dataset(opt.data) + self.wandb_artifact_data_dict = self.wandb_artifact_data_dict or self.data_dict + + # write data_dict to config. useful for resuming from artifacts. Do this only when not resuming. + self.wandb_run.config.update({'data_dict': self.wandb_artifact_data_dict}, + allow_val_change=True) + self.setup_training(opt) + + if self.job_type == 'Dataset Creation': + self.data_dict = self.check_and_upload_dataset(opt) + + def check_and_upload_dataset(self, opt): + """ + Check if the dataset format is compatible and upload it as W&B artifact + + arguments: + opt (namespace)-- Commandline arguments for current run + + returns: + Updated dataset info dictionary where local dataset paths are replaced by WAND_ARFACT_PREFIX links. + """ + assert wandb, 'Install wandb to upload dataset' + config_path = self.log_dataset_artifact(opt.data, + opt.single_cls, + 'YOLOv3' if opt.project == 'runs/train' else Path(opt.project).stem) + LOGGER.info(f"Created dataset config file {config_path}") + with open(config_path, errors='ignore') as f: + wandb_data_dict = yaml.safe_load(f) + return wandb_data_dict + + def setup_training(self, opt): + """ + Setup the necessary processes for training YOLO models: + - Attempt to download model checkpoint and dataset artifacts if opt.resume stats with WANDB_ARTIFACT_PREFIX + - Update data_dict, to contain info of previous run if resumed and the paths of dataset artifact if downloaded + - Setup log_dict, initialize bbox_interval + + arguments: + opt (namespace) -- commandline arguments for this run + + """ + self.log_dict, self.current_epoch = {}, 0 + self.bbox_interval = opt.bbox_interval + if isinstance(opt.resume, str): + modeldir, _ = self.download_model_artifact(opt) + if modeldir: + self.weights = Path(modeldir) / "last.pt" + config = self.wandb_run.config + opt.weights, opt.save_period, opt.batch_size, opt.bbox_interval, opt.epochs, opt.hyp = str( + self.weights), config.save_period, config.batch_size, config.bbox_interval, config.epochs, \ + config.hyp + data_dict = self.data_dict + if self.val_artifact is None: # If --upload_dataset is set, use the existing artifact, don't download + self.train_artifact_path, self.train_artifact = self.download_dataset_artifact(data_dict.get('train'), + opt.artifact_alias) + self.val_artifact_path, self.val_artifact = self.download_dataset_artifact(data_dict.get('val'), + opt.artifact_alias) + + if self.train_artifact_path is not None: + train_path = Path(self.train_artifact_path) / 'data/images/' + data_dict['train'] = str(train_path) + if self.val_artifact_path is not None: + val_path = Path(self.val_artifact_path) / 'data/images/' + data_dict['val'] = str(val_path) + + if self.val_artifact is not None: + self.result_artifact = wandb.Artifact("run_" + wandb.run.id + "_progress", "evaluation") + self.result_table = wandb.Table(["epoch", "id", "ground truth", "prediction", "avg_confidence"]) + self.val_table = self.val_artifact.get("val") + if self.val_table_path_map is None: + self.map_val_table_path() + if opt.bbox_interval == -1: + self.bbox_interval = opt.bbox_interval = (opt.epochs // 10) if opt.epochs > 10 else 1 + train_from_artifact = self.train_artifact_path is not None and self.val_artifact_path is not None + # Update the the data_dict to point to local artifacts dir + if train_from_artifact: + self.data_dict = data_dict + + def download_dataset_artifact(self, path, alias): + """ + download the model checkpoint artifact if the path starts with WANDB_ARTIFACT_PREFIX + + arguments: + path -- path of the dataset to be used for training + alias (str)-- alias of the artifact to be download/used for training + + returns: + (str, wandb.Artifact) -- path of the downladed dataset and it's corresponding artifact object if dataset + is found otherwise returns (None, None) + """ + if isinstance(path, str) and path.startswith(WANDB_ARTIFACT_PREFIX): + artifact_path = Path(remove_prefix(path, WANDB_ARTIFACT_PREFIX) + ":" + alias) + dataset_artifact = wandb.use_artifact(artifact_path.as_posix().replace("\\", "/")) + assert dataset_artifact is not None, "'Error: W&B dataset artifact doesn\'t exist'" + datadir = dataset_artifact.download() + return datadir, dataset_artifact + return None, None + + def download_model_artifact(self, opt): + """ + download the model checkpoint artifact if the resume path starts with WANDB_ARTIFACT_PREFIX + + arguments: + opt (namespace) -- Commandline arguments for this run + """ + if opt.resume.startswith(WANDB_ARTIFACT_PREFIX): + model_artifact = wandb.use_artifact(remove_prefix(opt.resume, WANDB_ARTIFACT_PREFIX) + ":latest") + assert model_artifact is not None, 'Error: W&B model artifact doesn\'t exist' + modeldir = model_artifact.download() + epochs_trained = model_artifact.metadata.get('epochs_trained') + total_epochs = model_artifact.metadata.get('total_epochs') + is_finished = total_epochs is None + assert not is_finished, 'training is finished, can only resume incomplete runs.' + return modeldir, model_artifact + return None, None + + def log_model(self, path, opt, epoch, fitness_score, best_model=False): + """ + Log the model checkpoint as W&B artifact + + arguments: + path (Path) -- Path of directory containing the checkpoints + opt (namespace) -- Command line arguments for this run + epoch (int) -- Current epoch number + fitness_score (float) -- fitness score for current epoch + best_model (boolean) -- Boolean representing if the current checkpoint is the best yet. + """ + model_artifact = wandb.Artifact('run_' + wandb.run.id + '_model', type='model', metadata={ + 'original_url': str(path), + 'epochs_trained': epoch + 1, + 'save period': opt.save_period, + 'project': opt.project, + 'total_epochs': opt.epochs, + 'fitness_score': fitness_score + }) + model_artifact.add_file(str(path / 'last.pt'), name='last.pt') + wandb.log_artifact(model_artifact, + aliases=['latest', 'last', 'epoch ' + str(self.current_epoch), 'best' if best_model else '']) + LOGGER.info(f"Saving model artifact on epoch {epoch + 1}") + + def log_dataset_artifact(self, data_file, single_cls, project, overwrite_config=False): + """ + Log the dataset as W&B artifact and return the new data file with W&B links + + arguments: + data_file (str) -- the .yaml file with information about the dataset like - path, classes etc. + single_class (boolean) -- train multi-class data as single-class + project (str) -- project name. Used to construct the artifact path + overwrite_config (boolean) -- overwrites the data.yaml file if set to true otherwise creates a new + file with _wandb postfix. Eg -> data_wandb.yaml + + returns: + the new .yaml file with artifact links. it can be used to start training directly from artifacts + """ + self.data_dict = check_dataset(data_file) # parse and check + data = dict(self.data_dict) + nc, names = (1, ['item']) if single_cls else (int(data['nc']), data['names']) + names = {k: v for k, v in enumerate(names)} # to index dictionary + self.train_artifact = self.create_dataset_table(LoadImagesAndLabels( + data['train'], rect=True, batch_size=1), names, name='train') if data.get('train') else None + self.val_artifact = self.create_dataset_table(LoadImagesAndLabels( + data['val'], rect=True, batch_size=1), names, name='val') if data.get('val') else None + if data.get('train'): + data['train'] = WANDB_ARTIFACT_PREFIX + str(Path(project) / 'train') + if data.get('val'): + data['val'] = WANDB_ARTIFACT_PREFIX + str(Path(project) / 'val') + path = Path(data_file).stem + path = (path if overwrite_config else path + '_wandb') + '.yaml' # updated data.yaml path + data.pop('download', None) + data.pop('path', None) + with open(path, 'w') as f: + yaml.safe_dump(data, f) + + if self.job_type == 'Training': # builds correct artifact pipeline graph + self.wandb_run.use_artifact(self.val_artifact) + self.wandb_run.use_artifact(self.train_artifact) + self.val_artifact.wait() + self.val_table = self.val_artifact.get('val') + self.map_val_table_path() + else: + self.wandb_run.log_artifact(self.train_artifact) + self.wandb_run.log_artifact(self.val_artifact) + return path + + def map_val_table_path(self): + """ + Map the validation dataset Table like name of file -> it's id in the W&B Table. + Useful for - referencing artifacts for evaluation. + """ + self.val_table_path_map = {} + LOGGER.info("Mapping dataset") + for i, data in enumerate(tqdm(self.val_table.data)): + self.val_table_path_map[data[3]] = data[0] + + def create_dataset_table(self, dataset: LoadImagesAndLabels, class_to_id: Dict[int,str], name: str = 'dataset'): + """ + Create and return W&B artifact containing W&B Table of the dataset. + + arguments: + dataset -- instance of LoadImagesAndLabels class used to iterate over the data to build Table + class_to_id -- hash map that maps class ids to labels + name -- name of the artifact + + returns: + dataset artifact to be logged or used + """ + # TODO: Explore multiprocessing to slpit this loop parallely| This is essential for speeding up the the logging + artifact = wandb.Artifact(name=name, type="dataset") + img_files = tqdm([dataset.path]) if isinstance(dataset.path, str) and Path(dataset.path).is_dir() else None + img_files = tqdm(dataset.img_files) if not img_files else img_files + for img_file in img_files: + if Path(img_file).is_dir(): + artifact.add_dir(img_file, name='data/images') + labels_path = 'labels'.join(dataset.path.rsplit('images', 1)) + artifact.add_dir(labels_path, name='data/labels') + else: + artifact.add_file(img_file, name='data/images/' + Path(img_file).name) + label_file = Path(img2label_paths([img_file])[0]) + artifact.add_file(str(label_file), + name='data/labels/' + label_file.name) if label_file.exists() else None + table = wandb.Table(columns=["id", "train_image", "Classes", "name"]) + class_set = wandb.Classes([{'id': id, 'name': name} for id, name in class_to_id.items()]) + for si, (img, labels, paths, shapes) in enumerate(tqdm(dataset)): + box_data, img_classes = [], {} + for cls, *xywh in labels[:, 1:].tolist(): + cls = int(cls) + box_data.append({"position": {"middle": [xywh[0], xywh[1]], "width": xywh[2], "height": xywh[3]}, + "class_id": cls, + "box_caption": "%s" % (class_to_id[cls])}) + img_classes[cls] = class_to_id[cls] + boxes = {"ground_truth": {"box_data": box_data, "class_labels": class_to_id}} # inference-space + table.add_data(si, wandb.Image(paths, classes=class_set, boxes=boxes), list(img_classes.values()), + Path(paths).name) + artifact.add(table, name) + return artifact + + def log_training_progress(self, predn, path, names): + """ + Build evaluation Table. Uses reference from validation dataset table. + + arguments: + predn (list): list of predictions in the native space in the format - [xmin, ymin, xmax, ymax, confidence, class] + path (str): local path of the current evaluation image + names (dict(int, str)): hash map that maps class ids to labels + """ + class_set = wandb.Classes([{'id': id, 'name': name} for id, name in names.items()]) + box_data = [] + total_conf = 0 + for *xyxy, conf, cls in predn.tolist(): + if conf >= 0.25: + box_data.append( + {"position": {"minX": xyxy[0], "minY": xyxy[1], "maxX": xyxy[2], "maxY": xyxy[3]}, + "class_id": int(cls), + "box_caption": f"{names[cls]} {conf:.3f}", + "scores": {"class_score": conf}, + "domain": "pixel"}) + total_conf += conf + boxes = {"predictions": {"box_data": box_data, "class_labels": names}} # inference-space + id = self.val_table_path_map[Path(path).name] + self.result_table.add_data(self.current_epoch, + id, + self.val_table.data[id][1], + wandb.Image(self.val_table.data[id][1], boxes=boxes, classes=class_set), + total_conf / max(1, len(box_data)) + ) + + def val_one_image(self, pred, predn, path, names, im): + """ + Log validation data for one image. updates the result Table if validation dataset is uploaded and log bbox media panel + + arguments: + pred (list): list of scaled predictions in the format - [xmin, ymin, xmax, ymax, confidence, class] + predn (list): list of predictions in the native space - [xmin, ymin, xmax, ymax, confidence, class] + path (str): local path of the current evaluation image + """ + if self.val_table and self.result_table: # Log Table if Val dataset is uploaded as artifact + self.log_training_progress(predn, path, names) + + if len(self.bbox_media_panel_images) < self.max_imgs_to_log and self.current_epoch > 0: + if self.current_epoch % self.bbox_interval == 0: + box_data = [{"position": {"minX": xyxy[0], "minY": xyxy[1], "maxX": xyxy[2], "maxY": xyxy[3]}, + "class_id": int(cls), + "box_caption": f"{names[cls]} {conf:.3f}", + "scores": {"class_score": conf}, + "domain": "pixel"} for *xyxy, conf, cls in pred.tolist()] + boxes = {"predictions": {"box_data": box_data, "class_labels": names}} # inference-space + self.bbox_media_panel_images.append(wandb.Image(im, boxes=boxes, caption=path.name)) + + def log(self, log_dict): + """ + save the metrics to the logging dictionary + + arguments: + log_dict (Dict) -- metrics/media to be logged in current step + """ + if self.wandb_run: + for key, value in log_dict.items(): + self.log_dict[key] = value + + def end_epoch(self, best_result=False): + """ + commit the log_dict, model artifacts and Tables to W&B and flush the log_dict. + + arguments: + best_result (boolean): Boolean representing if the result of this evaluation is best or not + """ + if self.wandb_run: + with all_logging_disabled(): + if self.bbox_media_panel_images: + self.log_dict["BoundingBoxDebugger"] = self.bbox_media_panel_images + try: + wandb.log(self.log_dict) + except BaseException as e: + LOGGER.info(f"An error occurred in wandb logger. The training will proceed without interruption. More info\n{e}") + self.wandb_run.finish() + self.wandb_run = None + + self.log_dict = {} + self.bbox_media_panel_images = [] + if self.result_artifact: + self.result_artifact.add(self.result_table, 'result') + wandb.log_artifact(self.result_artifact, aliases=['latest', 'last', 'epoch ' + str(self.current_epoch), + ('best' if best_result else '')]) + + wandb.log({"evaluation": self.result_table}) + self.result_table = wandb.Table(["epoch", "id", "ground truth", "prediction", "avg_confidence"]) + self.result_artifact = wandb.Artifact("run_" + wandb.run.id + "_progress", "evaluation") + + def finish_run(self): + """ + Log metrics if any and finish the current W&B run + """ + if self.wandb_run: + if self.log_dict: + with all_logging_disabled(): + wandb.log(self.log_dict) + wandb.run.finish() + + +@contextmanager +def all_logging_disabled(highest_level=logging.CRITICAL): + """ source - https://gist.github.com/simon-weber/7853144 + A context manager that will prevent any logging messages triggered during the body from being processed. + :param highest_level: the maximum logging level in use. + This would only need to be changed if a custom level greater than CRITICAL is defined. + """ + previous_level = logging.root.manager.disable + logging.disable(highest_level) + try: + yield + finally: + logging.disable(previous_level) diff --git a/utils/loss.py b/utils/loss.py index a2c5cce7..dfde60ad 100644 --- a/utils/loss.py +++ b/utils/loss.py @@ -1,9 +1,12 @@ -# Loss functions +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Loss functions +""" import torch import torch.nn as nn -from utils.general import bbox_iou +from utils.metrics import bbox_iou from utils.torch_utils import is_parallel @@ -15,7 +18,7 @@ def smooth_BCE(eps=0.1): # https://github.com/ultralytics/yolov3/issues/238#iss class BCEBlurWithLogitsLoss(nn.Module): # BCEwithLogitLoss() with reduced missing label effects. def __init__(self, alpha=0.05): - super(BCEBlurWithLogitsLoss, self).__init__() + super().__init__() self.loss_fcn = nn.BCEWithLogitsLoss(reduction='none') # must be nn.BCEWithLogitsLoss() self.alpha = alpha @@ -32,7 +35,7 @@ class BCEBlurWithLogitsLoss(nn.Module): class FocalLoss(nn.Module): # Wraps focal loss around existing loss_fcn(), i.e. criteria = FocalLoss(nn.BCEWithLogitsLoss(), gamma=1.5) def __init__(self, loss_fcn, gamma=1.5, alpha=0.25): - super(FocalLoss, self).__init__() + super().__init__() self.loss_fcn = loss_fcn # must be nn.BCEWithLogitsLoss() self.gamma = gamma self.alpha = alpha @@ -62,7 +65,7 @@ class FocalLoss(nn.Module): class QFocalLoss(nn.Module): # Wraps Quality focal loss around existing loss_fcn(), i.e. criteria = FocalLoss(nn.BCEWithLogitsLoss(), gamma=1.5) def __init__(self, loss_fcn, gamma=1.5, alpha=0.25): - super(QFocalLoss, self).__init__() + super().__init__() self.loss_fcn = loss_fcn # must be nn.BCEWithLogitsLoss() self.gamma = gamma self.alpha = alpha @@ -88,7 +91,7 @@ class QFocalLoss(nn.Module): class ComputeLoss: # Compute losses def __init__(self, model, autobalance=False): - super(ComputeLoss, self).__init__() + self.sort_obj_iou = False device = next(model.parameters()).device # get model device h = model.hyp # hyperparameters @@ -105,9 +108,9 @@ class ComputeLoss: BCEcls, BCEobj = FocalLoss(BCEcls, g), FocalLoss(BCEobj, g) det = model.module.model[-1] if is_parallel(model) else model.model[-1] # Detect() module - self.balance = {3: [4.0, 1.0, 0.4]}.get(det.nl, [4.0, 1.0, 0.25, 0.06, .02]) # P3-P7 + self.balance = {3: [4.0, 1.0, 0.4]}.get(det.nl, [4.0, 1.0, 0.25, 0.06, 0.02]) # P3-P7 self.ssi = list(det.stride).index(16) if autobalance else 0 # stride 16 index - self.BCEcls, self.BCEobj, self.gr, self.hyp, self.autobalance = BCEcls, BCEobj, model.gr, h, autobalance + self.BCEcls, self.BCEobj, self.gr, self.hyp, self.autobalance = BCEcls, BCEobj, 1.0, h, autobalance for k in 'na', 'nc', 'nl', 'anchors': setattr(self, k, getattr(det, k)) @@ -126,14 +129,18 @@ class ComputeLoss: ps = pi[b, a, gj, gi] # prediction subset corresponding to targets # Regression - pxy = ps[:, :2].sigmoid() * 2. - 0.5 + pxy = ps[:, :2].sigmoid() * 2 - 0.5 pwh = (ps[:, 2:4].sigmoid() * 2) ** 2 * anchors[i] pbox = torch.cat((pxy, pwh), 1) # predicted box iou = bbox_iou(pbox.T, tbox[i], x1y1x2y2=False, CIoU=True) # iou(prediction, target) lbox += (1.0 - iou).mean() # iou loss # Objectness - tobj[b, a, gj, gi] = (1.0 - self.gr) + self.gr * iou.detach().clamp(0).type(tobj.dtype) # iou ratio + score_iou = iou.detach().clamp(0).type(tobj.dtype) + if self.sort_obj_iou: + sort_id = torch.argsort(score_iou) + b, a, gj, gi, score_iou = b[sort_id], a[sort_id], gj[sort_id], gi[sort_id], score_iou[sort_id] + tobj[b, a, gj, gi] = (1.0 - self.gr) + self.gr * score_iou # iou ratio # Classification if self.nc > 1: # cls loss (only if multiple classes) @@ -157,8 +164,7 @@ class ComputeLoss: lcls *= self.hyp['cls'] bs = tobj.shape[0] # batch size - loss = lbox + lobj + lcls - return loss * bs, torch.cat((lbox, lobj, lcls, loss)).detach() + return (lbox + lobj + lcls) * bs, torch.cat((lbox, lobj, lcls)).detach() def build_targets(self, p, targets): # Build targets for compute_loss(), input targets(image,class,x,y,w,h) @@ -170,7 +176,7 @@ class ComputeLoss: g = 0.5 # bias off = torch.tensor([[0, 0], - # [1, 0], [0, 1], [-1, 0], [0, -1], # j,k,l,m + [1, 0], [0, 1], [-1, 0], [0, -1], # j,k,l,m # [1, 1], [1, -1], [-1, 1], [-1, -1], # jk,jm,lk,lm ], device=targets.device).float() * g # offsets @@ -183,17 +189,17 @@ class ComputeLoss: if nt: # Matches r = t[:, :, 4:6] / anchors[:, None] # wh ratio - j = torch.max(r, 1. / r).max(2)[0] < self.hyp['anchor_t'] # compare + j = torch.max(r, 1 / r).max(2)[0] < self.hyp['anchor_t'] # compare # j = wh_iou(anchors, t[:, 4:6]) > model.hyp['iou_t'] # iou(3,n)=wh_iou(anchors(3,2), gwh(n,2)) t = t[j] # filter # Offsets gxy = t[:, 2:4] # grid xy gxi = gain[[2, 3]] - gxy # inverse - j, k = ((gxy % 1. < g) & (gxy > 1.)).T - l, m = ((gxi % 1. < g) & (gxi > 1.)).T - j = torch.stack((torch.ones_like(j),)) - t = t.repeat((off.shape[0], 1, 1))[j] + j, k = ((gxy % 1 < g) & (gxy > 1)).T + l, m = ((gxi % 1 < g) & (gxi > 1)).T + j = torch.stack((torch.ones_like(j), j, k, l, m)) + t = t.repeat((5, 1, 1))[j] offsets = (torch.zeros_like(gxy)[None] + off[:, None])[j] else: t = targets[0] diff --git a/utils/metrics.py b/utils/metrics.py index 323c84b6..c8fcac5f 100644 --- a/utils/metrics.py +++ b/utils/metrics.py @@ -1,13 +1,16 @@ -# Model validation metrics +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Model validation metrics +""" +import math +import warnings from pathlib import Path import matplotlib.pyplot as plt import numpy as np import torch -from . import general - def fitness(x): # Model fitness as a weighted combination of metrics @@ -68,6 +71,8 @@ def ap_per_class(tp, conf, pred_cls, target_cls, plot=False, save_dir='.', names # Compute F1 (harmonic mean of precision and recall) f1 = 2 * p * r / (p + r + 1e-16) + names = [v for k, v in names.items() if k in unique_classes] # list: only classes that have data + names = {i: v for i, v in enumerate(names)} # to dict if plot: plot_pr_curve(px, py, ap, Path(save_dir) / 'PR_curve.png', names) plot_mc_curve(px, f1, Path(save_dir) / 'F1_curve.png', names, ylabel='F1') @@ -88,8 +93,8 @@ def compute_ap(recall, precision): """ # Append sentinel values to beginning and end - mrec = np.concatenate(([0.], recall, [recall[-1] + 0.01])) - mpre = np.concatenate(([1.], precision, [0.])) + mrec = np.concatenate(([0.0], recall, [1.0])) + mpre = np.concatenate(([1.0], precision, [0.0])) # Compute the precision envelope mpre = np.flip(np.maximum.accumulate(np.flip(mpre))) @@ -127,7 +132,7 @@ class ConfusionMatrix: detections = detections[detections[:, 4] > self.conf] gt_classes = labels[:, 0].int() detection_classes = detections[:, 5].int() - iou = general.box_iou(labels[:, 1:], detections[:, :4]) + iou = box_iou(labels[:, 1:], detections[:, :4]) x = torch.where(iou > self.iou_thres) if x[0].shape[0]: @@ -157,30 +162,135 @@ class ConfusionMatrix: def matrix(self): return self.matrix - def plot(self, save_dir='', names=()): + def plot(self, normalize=True, save_dir='', names=()): try: import seaborn as sn - array = self.matrix / (self.matrix.sum(0).reshape(1, self.nc + 1) + 1E-6) # normalize + array = self.matrix / ((self.matrix.sum(0).reshape(1, -1) + 1E-6) if normalize else 1) # normalize columns array[array < 0.005] = np.nan # don't annotate (would appear as 0.00) fig = plt.figure(figsize=(12, 9), tight_layout=True) sn.set(font_scale=1.0 if self.nc < 50 else 0.8) # for label size labels = (0 < len(names) < 99) and len(names) == self.nc # apply names to ticklabels - sn.heatmap(array, annot=self.nc < 30, annot_kws={"size": 8}, cmap='Blues', fmt='.2f', square=True, - xticklabels=names + ['background FP'] if labels else "auto", - yticklabels=names + ['background FN'] if labels else "auto").set_facecolor((1, 1, 1)) + with warnings.catch_warnings(): + warnings.simplefilter('ignore') # suppress empty matrix RuntimeWarning: All-NaN slice encountered + sn.heatmap(array, annot=self.nc < 30, annot_kws={"size": 8}, cmap='Blues', fmt='.2f', square=True, + xticklabels=names + ['background FP'] if labels else "auto", + yticklabels=names + ['background FN'] if labels else "auto").set_facecolor((1, 1, 1)) fig.axes[0].set_xlabel('True') fig.axes[0].set_ylabel('Predicted') fig.savefig(Path(save_dir) / 'confusion_matrix.png', dpi=250) + plt.close() except Exception as e: - pass + print(f'WARNING: ConfusionMatrix plot failure: {e}') def print(self): for i in range(self.nc + 1): print(' '.join(map(str, self.matrix[i]))) +def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False, DIoU=False, CIoU=False, eps=1e-7): + # Returns the IoU of box1 to box2. box1 is 4, box2 is nx4 + box2 = box2.T + + # Get the coordinates of bounding boxes + if x1y1x2y2: # x1, y1, x2, y2 = box1 + b1_x1, b1_y1, b1_x2, b1_y2 = box1[0], box1[1], box1[2], box1[3] + b2_x1, b2_y1, b2_x2, b2_y2 = box2[0], box2[1], box2[2], box2[3] + else: # transform from xywh to xyxy + b1_x1, b1_x2 = box1[0] - box1[2] / 2, box1[0] + box1[2] / 2 + b1_y1, b1_y2 = box1[1] - box1[3] / 2, box1[1] + box1[3] / 2 + b2_x1, b2_x2 = box2[0] - box2[2] / 2, box2[0] + box2[2] / 2 + b2_y1, b2_y2 = box2[1] - box2[3] / 2, box2[1] + box2[3] / 2 + + # Intersection area + inter = (torch.min(b1_x2, b2_x2) - torch.max(b1_x1, b2_x1)).clamp(0) * \ + (torch.min(b1_y2, b2_y2) - torch.max(b1_y1, b2_y1)).clamp(0) + + # Union Area + w1, h1 = b1_x2 - b1_x1, b1_y2 - b1_y1 + eps + w2, h2 = b2_x2 - b2_x1, b2_y2 - b2_y1 + eps + union = w1 * h1 + w2 * h2 - inter + eps + + iou = inter / union + if GIoU or DIoU or CIoU: + cw = torch.max(b1_x2, b2_x2) - torch.min(b1_x1, b2_x1) # convex (smallest enclosing box) width + ch = torch.max(b1_y2, b2_y2) - torch.min(b1_y1, b2_y1) # convex height + if CIoU or DIoU: # Distance or Complete IoU https://arxiv.org/abs/1911.08287v1 + c2 = cw ** 2 + ch ** 2 + eps # convex diagonal squared + rho2 = ((b2_x1 + b2_x2 - b1_x1 - b1_x2) ** 2 + + (b2_y1 + b2_y2 - b1_y1 - b1_y2) ** 2) / 4 # center distance squared + if DIoU: + return iou - rho2 / c2 # DIoU + elif CIoU: # https://github.com/Zzh-tju/DIoU-SSD-pytorch/blob/master/utils/box/box_utils.py#L47 + v = (4 / math.pi ** 2) * torch.pow(torch.atan(w2 / h2) - torch.atan(w1 / h1), 2) + with torch.no_grad(): + alpha = v / (v - iou + (1 + eps)) + return iou - (rho2 / c2 + v * alpha) # CIoU + else: # GIoU https://arxiv.org/pdf/1902.09630.pdf + c_area = cw * ch + eps # convex area + return iou - (c_area - union) / c_area # GIoU + else: + return iou # IoU + + +def box_iou(box1, box2): + # https://github.com/pytorch/vision/blob/master/torchvision/ops/boxes.py + """ + Return intersection-over-union (Jaccard index) of boxes. + Both sets of boxes are expected to be in (x1, y1, x2, y2) format. + Arguments: + box1 (Tensor[N, 4]) + box2 (Tensor[M, 4]) + Returns: + iou (Tensor[N, M]): the NxM matrix containing the pairwise + IoU values for every element in boxes1 and boxes2 + """ + + def box_area(box): + # box = 4xn + return (box[2] - box[0]) * (box[3] - box[1]) + + area1 = box_area(box1.T) + area2 = box_area(box2.T) + + # inter(N,M) = (rb(N,M,2) - lt(N,M,2)).clamp(0).prod(2) + inter = (torch.min(box1[:, None, 2:], box2[:, 2:]) - torch.max(box1[:, None, :2], box2[:, :2])).clamp(0).prod(2) + return inter / (area1[:, None] + area2 - inter) # iou = inter / (area1 + area2 - inter) + + +def bbox_ioa(box1, box2, eps=1E-7): + """ Returns the intersection over box2 area given box1, box2. Boxes are x1y1x2y2 + box1: np.array of shape(4) + box2: np.array of shape(nx4) + returns: np.array of shape(n) + """ + + box2 = box2.transpose() + + # Get the coordinates of bounding boxes + b1_x1, b1_y1, b1_x2, b1_y2 = box1[0], box1[1], box1[2], box1[3] + b2_x1, b2_y1, b2_x2, b2_y2 = box2[0], box2[1], box2[2], box2[3] + + # Intersection area + inter_area = (np.minimum(b1_x2, b2_x2) - np.maximum(b1_x1, b2_x1)).clip(0) * \ + (np.minimum(b1_y2, b2_y2) - np.maximum(b1_y1, b2_y1)).clip(0) + + # box2 area + box2_area = (b2_x2 - b2_x1) * (b2_y2 - b2_y1) + eps + + # Intersection over box2 area + return inter_area / box2_area + + +def wh_iou(wh1, wh2): + # Returns the nxm IoU matrix. wh1 is nx2, wh2 is mx2 + wh1 = wh1[:, None] # [N,1,2] + wh2 = wh2[None] # [1,M,2] + inter = torch.min(wh1, wh2).prod(2) # [N,M] + return inter / (wh1.prod(2) + wh2.prod(2) - inter) # iou = inter / (area1 + area2 - inter) + + # Plots ---------------------------------------------------------------------------------------------------------------- def plot_pr_curve(px, py, ap, save_dir='pr_curve.png', names=()): @@ -201,6 +311,7 @@ def plot_pr_curve(px, py, ap, save_dir='pr_curve.png', names=()): ax.set_ylim(0, 1) plt.legend(bbox_to_anchor=(1.04, 1), loc="upper left") fig.savefig(Path(save_dir), dpi=250) + plt.close() def plot_mc_curve(px, py, save_dir='mc_curve.png', names=(), xlabel='Confidence', ylabel='Metric'): @@ -221,3 +332,4 @@ def plot_mc_curve(px, py, save_dir='mc_curve.png', names=(), xlabel='Confidence' ax.set_ylim(0, 1) plt.legend(bbox_to_anchor=(1.04, 1), loc="upper left") fig.savefig(Path(save_dir), dpi=250) + plt.close() diff --git a/utils/plots.py b/utils/plots.py index 2ae36523..16ae44a7 100644 --- a/utils/plots.py +++ b/utils/plots.py @@ -1,9 +1,10 @@ -# Plotting utils +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Plotting utils +""" -import glob import math import os -import random from copy import copy from pathlib import Path @@ -12,15 +13,17 @@ import matplotlib import matplotlib.pyplot as plt import numpy as np import pandas as pd -import seaborn as sns +import seaborn as sn import torch -import yaml from PIL import Image, ImageDraw, ImageFont -from utils.general import xywh2xyxy, xyxy2xywh +from utils.general import (LOGGER, Timeout, check_requirements, clip_coords, increment_path, is_ascii, is_chinese, + try_except, user_config_dir, xywh2xyxy, xyxy2xywh) from utils.metrics import fitness # Settings +CONFIG_DIR = user_config_dir() # Ultralytics settings dir +RANK = int(os.getenv('RANK', -1)) matplotlib.rc('font', **{'size': 11}) matplotlib.use('Agg') # for writing to files only @@ -46,6 +49,105 @@ class Colors: colors = Colors() # create instance for 'from utils.plots import colors' +def check_font(font='Arial.ttf', size=10): + # Return a PIL TrueType Font, downloading to CONFIG_DIR if necessary + font = Path(font) + font = font if font.exists() else (CONFIG_DIR / font.name) + try: + return ImageFont.truetype(str(font) if font.exists() else font.name, size) + except Exception as e: # download if missing + url = "https://ultralytics.com/assets/" + font.name + print(f'Downloading {url} to {font}...') + torch.hub.download_url_to_file(url, str(font), progress=False) + try: + return ImageFont.truetype(str(font), size) + except TypeError: + check_requirements('Pillow>=8.4.0') # known issue https://github.com/ultralytics/yolov5/issues/5374 + + +class Annotator: + if RANK in (-1, 0): + check_font() # download TTF if necessary + + # Annotator for train/val mosaics and jpgs and detect/hub inference annotations + def __init__(self, im, line_width=None, font_size=None, font='Arial.ttf', pil=False, example='abc'): + assert im.data.contiguous, 'Image not contiguous. Apply np.ascontiguousarray(im) to Annotator() input images.' + self.pil = pil or not is_ascii(example) or is_chinese(example) + if self.pil: # use PIL + self.im = im if isinstance(im, Image.Image) else Image.fromarray(im) + self.draw = ImageDraw.Draw(self.im) + self.font = check_font(font='Arial.Unicode.ttf' if is_chinese(example) else font, + size=font_size or max(round(sum(self.im.size) / 2 * 0.035), 12)) + else: # use cv2 + self.im = im + self.lw = line_width or max(round(sum(im.shape) / 2 * 0.003), 2) # line width + + def box_label(self, box, label='', color=(128, 128, 128), txt_color=(255, 255, 255)): + # Add one xyxy box to image with label + if self.pil or not is_ascii(label): + self.draw.rectangle(box, width=self.lw, outline=color) # box + if label: + w, h = self.font.getsize(label) # text width, height + outside = box[1] - h >= 0 # label fits outside box + self.draw.rectangle([box[0], + box[1] - h if outside else box[1], + box[0] + w + 1, + box[1] + 1 if outside else box[1] + h + 1], fill=color) + # self.draw.text((box[0], box[1]), label, fill=txt_color, font=self.font, anchor='ls') # for PIL>8.0 + self.draw.text((box[0], box[1] - h if outside else box[1]), label, fill=txt_color, font=self.font) + else: # cv2 + p1, p2 = (int(box[0]), int(box[1])), (int(box[2]), int(box[3])) + cv2.rectangle(self.im, p1, p2, color, thickness=self.lw, lineType=cv2.LINE_AA) + if label: + tf = max(self.lw - 1, 1) # font thickness + w, h = cv2.getTextSize(label, 0, fontScale=self.lw / 3, thickness=tf)[0] # text width, height + outside = p1[1] - h - 3 >= 0 # label fits outside box + p2 = p1[0] + w, p1[1] - h - 3 if outside else p1[1] + h + 3 + cv2.rectangle(self.im, p1, p2, color, -1, cv2.LINE_AA) # filled + cv2.putText(self.im, label, (p1[0], p1[1] - 2 if outside else p1[1] + h + 2), 0, self.lw / 3, txt_color, + thickness=tf, lineType=cv2.LINE_AA) + + def rectangle(self, xy, fill=None, outline=None, width=1): + # Add rectangle to image (PIL-only) + self.draw.rectangle(xy, fill, outline, width) + + def text(self, xy, text, txt_color=(255, 255, 255)): + # Add text to image (PIL-only) + w, h = self.font.getsize(text) # text width, height + self.draw.text((xy[0], xy[1] - h + 1), text, fill=txt_color, font=self.font) + + def result(self): + # Return annotated image as array + return np.asarray(self.im) + + +def feature_visualization(x, module_type, stage, n=32, save_dir=Path('runs/detect/exp')): + """ + x: Features to be visualized + module_type: Module type + stage: Module stage within model + n: Maximum number of feature maps to plot + save_dir: Directory to save results + """ + if 'Detect' not in module_type: + batch, channels, height, width = x.shape # batch, channels, height, width + if height > 1 and width > 1: + f = f"stage{stage}_{module_type.split('.')[-1]}_features.png" # filename + + blocks = torch.chunk(x[0].cpu(), channels, dim=0) # select batch index 0, block by channels + n = min(n, channels) # number of plots + fig, ax = plt.subplots(math.ceil(n / 8), 8, tight_layout=True) # 8 rows x n/8 cols + ax = ax.ravel() + plt.subplots_adjust(wspace=0.05, hspace=0.05) + for i in range(n): + ax[i].imshow(blocks[i].squeeze()) # cmap='gray' + ax[i].axis('off') + + print(f'Saving {save_dir / f}... ({n}/{channels})') + plt.savefig(save_dir / f, dpi=300, bbox_inches='tight') + plt.close() + + def hist2d(x, y, n=100): # 2d histogram used in labels.png and evolve.png xedges, yedges = np.linspace(x.min(), x.max(), n), np.linspace(y.min(), y.max(), n) @@ -68,54 +170,6 @@ def butter_lowpass_filtfilt(data, cutoff=1500, fs=50000, order=5): return filtfilt(b, a, data) # forward-backward filter -def plot_one_box(x, im, color=(128, 128, 128), label=None, line_thickness=3): - # Plots one bounding box on image 'im' using OpenCV - assert im.data.contiguous, 'Image not contiguous. Apply np.ascontiguousarray(im) to plot_on_box() input image.' - tl = line_thickness or round(0.002 * (im.shape[0] + im.shape[1]) / 2) + 1 # line/font thickness - c1, c2 = (int(x[0]), int(x[1])), (int(x[2]), int(x[3])) - cv2.rectangle(im, c1, c2, color, thickness=tl, lineType=cv2.LINE_AA) - if label: - tf = max(tl - 1, 1) # font thickness - t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, thickness=tf)[0] - c2 = c1[0] + t_size[0], c1[1] - t_size[1] - 3 - cv2.rectangle(im, c1, c2, color, -1, cv2.LINE_AA) # filled - cv2.putText(im, label, (c1[0], c1[1] - 2), 0, tl / 3, [225, 255, 255], thickness=tf, lineType=cv2.LINE_AA) - - -def plot_one_box_PIL(box, im, color=(128, 128, 128), label=None, line_thickness=None): - # Plots one bounding box on image 'im' using PIL - im = Image.fromarray(im) - draw = ImageDraw.Draw(im) - line_thickness = line_thickness or max(int(min(im.size) / 200), 2) - draw.rectangle(box, width=line_thickness, outline=color) # plot - if label: - font = ImageFont.truetype("Arial.ttf", size=max(round(max(im.size) / 40), 12)) - txt_width, txt_height = font.getsize(label) - draw.rectangle([box[0], box[1] - txt_height + 4, box[0] + txt_width, box[1]], fill=color) - draw.text((box[0], box[1] - txt_height + 1), label, fill=(255, 255, 255), font=font) - return np.asarray(im) - - -def plot_wh_methods(): # from utils.plots import *; plot_wh_methods() - # Compares the two methods for width-height anchor multiplication - # https://github.com/ultralytics/yolov3/issues/168 - x = np.arange(-4.0, 4.0, .1) - ya = np.exp(x) - yb = torch.sigmoid(torch.from_numpy(x)).numpy() * 2 - - fig = plt.figure(figsize=(6, 3), tight_layout=True) - plt.plot(x, ya, '.-', label='YOLOv3') - plt.plot(x, yb ** 2, '.-', label='YOLOv5 ^2') - plt.plot(x, yb ** 1.6, '.-', label='YOLOv5 ^1.6') - plt.xlim(left=-4, right=4) - plt.ylim(bottom=0, top=6) - plt.xlabel('input') - plt.ylabel('output') - plt.grid() - plt.legend() - fig.savefig('comparison.png', dpi=200) - - def output_to_target(output): # Convert model output to target format [batch_id, class_id, x, y, w, h, conf] targets = [] @@ -125,82 +179,65 @@ def output_to_target(output): return np.array(targets) -def plot_images(images, targets, paths=None, fname='images.jpg', names=None, max_size=640, max_subplots=16): +def plot_images(images, targets, paths=None, fname='images.jpg', names=None, max_size=1920, max_subplots=16): # Plot image grid with labels - if isinstance(images, torch.Tensor): images = images.cpu().float().numpy() if isinstance(targets, torch.Tensor): targets = targets.cpu().numpy() - - # un-normalise if np.max(images[0]) <= 1: - images *= 255 - - tl = 3 # line thickness - tf = max(tl - 1, 1) # font thickness + images *= 255 # de-normalise (optional) bs, _, h, w = images.shape # batch size, _, height, width bs = min(bs, max_subplots) # limit plot images ns = np.ceil(bs ** 0.5) # number of subplots (square) - # Check if we should resize - scale_factor = max_size / max(h, w) - if scale_factor < 1: - h = math.ceil(scale_factor * h) - w = math.ceil(scale_factor * w) - + # Build Image mosaic = np.full((int(ns * h), int(ns * w), 3), 255, dtype=np.uint8) # init - for i, img in enumerate(images): + for i, im in enumerate(images): if i == max_subplots: # if last batch has fewer images than we expect break + x, y = int(w * (i // ns)), int(h * (i % ns)) # block origin + im = im.transpose(1, 2, 0) + mosaic[y:y + h, x:x + w, :] = im - block_x = int(w * (i // ns)) - block_y = int(h * (i % ns)) + # Resize (optional) + scale = max_size / ns / max(h, w) + if scale < 1: + h = math.ceil(scale * h) + w = math.ceil(scale * w) + mosaic = cv2.resize(mosaic, tuple(int(x * ns) for x in (w, h))) - img = img.transpose(1, 2, 0) - if scale_factor < 1: - img = cv2.resize(img, (w, h)) - - mosaic[block_y:block_y + h, block_x:block_x + w, :] = img + # Annotate + fs = int((h + w) * ns * 0.01) # font size + annotator = Annotator(mosaic, line_width=round(fs / 10), font_size=fs, pil=True) + for i in range(i + 1): + x, y = int(w * (i // ns)), int(h * (i % ns)) # block origin + annotator.rectangle([x, y, x + w, y + h], None, (255, 255, 255), width=2) # borders + if paths: + annotator.text((x + 5, y + 5 + h), text=Path(paths[i]).name[:40], txt_color=(220, 220, 220)) # filenames if len(targets) > 0: - image_targets = targets[targets[:, 0] == i] - boxes = xywh2xyxy(image_targets[:, 2:6]).T - classes = image_targets[:, 1].astype('int') - labels = image_targets.shape[1] == 6 # labels if no conf column - conf = None if labels else image_targets[:, 6] # check for confidence presence (label vs pred) + ti = targets[targets[:, 0] == i] # image targets + boxes = xywh2xyxy(ti[:, 2:6]).T + classes = ti[:, 1].astype('int') + labels = ti.shape[1] == 6 # labels if no conf column + conf = None if labels else ti[:, 6] # check for confidence presence (label vs pred) if boxes.shape[1]: if boxes.max() <= 1.01: # if normalized with tolerance 0.01 boxes[[0, 2]] *= w # scale to pixels boxes[[1, 3]] *= h - elif scale_factor < 1: # absolute coords need scale if image scales - boxes *= scale_factor - boxes[[0, 2]] += block_x - boxes[[1, 3]] += block_y - for j, box in enumerate(boxes.T): - cls = int(classes[j]) + elif scale < 1: # absolute coords need scale if image scales + boxes *= scale + boxes[[0, 2]] += x + boxes[[1, 3]] += y + for j, box in enumerate(boxes.T.tolist()): + cls = classes[j] color = colors(cls) cls = names[cls] if names else cls if labels or conf[j] > 0.25: # 0.25 conf thresh - label = '%s' % cls if labels else '%s %.1f' % (cls, conf[j]) - plot_one_box(box, mosaic, label=label, color=color, line_thickness=tl) - - # Draw image filename labels - if paths: - label = Path(paths[i]).name[:40] # trim to 40 char - t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, thickness=tf)[0] - cv2.putText(mosaic, label, (block_x + 5, block_y + t_size[1] + 5), 0, tl / 3, [220, 220, 220], thickness=tf, - lineType=cv2.LINE_AA) - - # Image border - cv2.rectangle(mosaic, (block_x, block_y), (block_x + w, block_y + h), (255, 255, 255), thickness=3) - - if fname: - r = min(1280. / max(h, w) / ns, 1.0) # ratio to limit image size - mosaic = cv2.resize(mosaic, (int(ns * w * r), int(ns * h * r)), interpolation=cv2.INTER_AREA) - # cv2.imwrite(fname, cv2.cvtColor(mosaic, cv2.COLOR_BGR2RGB)) # cv2 save - Image.fromarray(mosaic).save(fname) # PIL save - return mosaic + label = f'{cls}' if labels else f'{cls} {conf[j]:.1f}' + annotator.box_label(box, label, color=color) + annotator.im.save(fname) # save def plot_lr_scheduler(optimizer, scheduler, epochs=300, save_dir=''): @@ -220,9 +257,9 @@ def plot_lr_scheduler(optimizer, scheduler, epochs=300, save_dir=''): plt.close() -def plot_test_txt(): # from utils.plots import *; plot_test() - # Plot test.txt histograms - x = np.loadtxt('test.txt', dtype=np.float32) +def plot_val_txt(): # from utils.plots import *; plot_val() + # Plot val.txt histograms + x = np.loadtxt('val.txt', dtype=np.float32) box = xyxy2xywh(x[:, :4]) cx, cy = box[:, 0], box[:, 1] @@ -244,29 +281,32 @@ def plot_targets_txt(): # from utils.plots import *; plot_targets_txt() fig, ax = plt.subplots(2, 2, figsize=(8, 8), tight_layout=True) ax = ax.ravel() for i in range(4): - ax[i].hist(x[i], bins=100, label='%.3g +/- %.3g' % (x[i].mean(), x[i].std())) + ax[i].hist(x[i], bins=100, label=f'{x[i].mean():.3g} +/- {x[i].std():.3g}') ax[i].legend() ax[i].set_title(s[i]) plt.savefig('targets.jpg', dpi=200) -def plot_study_txt(path='', x=None): # from utils.plots import *; plot_study_txt() - # Plot study.txt generated by test.py - fig, ax = plt.subplots(2, 4, figsize=(10, 6), tight_layout=True) - # ax = ax.ravel() +def plot_val_study(file='', dir='', x=None): # from utils.plots import *; plot_val_study() + # Plot file=study.txt generated by val.py (or plot all study*.txt in dir) + save_dir = Path(file).parent if file else Path(dir) + plot2 = False # plot additional results + if plot2: + ax = plt.subplots(2, 4, figsize=(10, 6), tight_layout=True)[1].ravel() fig2, ax2 = plt.subplots(1, 1, figsize=(8, 4), tight_layout=True) - # for f in [Path(path) / f'study_coco_{x}.txt' for x in ['yolov3-tiny', 'yolov3', 'yolov3-spp', 'yolov5l']]: - for f in sorted(Path(path).glob('study*.txt')): + # for f in [save_dir / f'study_coco_{x}.txt' for x in ['yolov3', 'yolov3-spp', 'yolov3-tiny']]: + for f in sorted(save_dir.glob('study*.txt')): y = np.loadtxt(f, dtype=np.float32, usecols=[0, 1, 2, 3, 7, 8, 9], ndmin=2).T x = np.arange(y.shape[1]) if x is None else np.array(x) - s = ['P', 'R', 'mAP@.5', 'mAP@.5:.95', 't_inference (ms/img)', 't_NMS (ms/img)', 't_total (ms/img)'] - # for i in range(7): - # ax[i].plot(x, y[i], '.-', linewidth=2, markersize=8) - # ax[i].set_title(s[i]) + if plot2: + s = ['P', 'R', 'mAP@.5', 'mAP@.5:.95', 't_preprocess (ms/img)', 't_inference (ms/img)', 't_NMS (ms/img)'] + for i in range(7): + ax[i].plot(x, y[i], '.-', linewidth=2, markersize=8) + ax[i].set_title(s[i]) j = y[3].argmax() + 1 - ax2.plot(y[6, 1:j], y[3, 1:j] * 1E2, '.-', linewidth=2, markersize=8, + ax2.plot(y[5, 1:j], y[3, 1:j] * 1E2, '.-', linewidth=2, markersize=8, label=f.stem.replace('study_coco_', '').replace('yolo', 'YOLO')) ax2.plot(1E3 / np.array([209, 140, 97, 58, 35, 18]), [34.6, 40.5, 43.0, 47.5, 49.7, 51.5], @@ -275,22 +315,26 @@ def plot_study_txt(path='', x=None): # from utils.plots import *; plot_study_tx ax2.grid(alpha=0.2) ax2.set_yticks(np.arange(20, 60, 5)) ax2.set_xlim(0, 57) - ax2.set_ylim(15, 55) + ax2.set_ylim(25, 55) ax2.set_xlabel('GPU Speed (ms/img)') ax2.set_ylabel('COCO AP val') ax2.legend(loc='lower right') - plt.savefig(str(Path(path).name) + '.png', dpi=300) + f = save_dir / 'study.png' + print(f'Saving {f}...') + plt.savefig(f, dpi=300) -def plot_labels(labels, names=(), save_dir=Path(''), loggers=None): +@try_except # known issue https://github.com/ultralytics/yolov5/issues/5395 +@Timeout(30) # known issue https://github.com/ultralytics/yolov5/issues/5611 +def plot_labels(labels, names=(), save_dir=Path('')): # plot dataset labels - print('Plotting labels... ') + LOGGER.info(f"Plotting labels to {save_dir / 'labels.jpg'}... ") c, b = labels[:, 0], labels[:, 1:].transpose() # classes, boxes nc = int(c.max() + 1) # number of classes x = pd.DataFrame(b.transpose(), columns=['x', 'y', 'width', 'height']) # seaborn correlogram - sns.pairplot(x, corner=True, diag_kind='auto', kind='hist', diag_kws=dict(bins=50), plot_kws=dict(pmax=0.9)) + sn.pairplot(x, corner=True, diag_kind='auto', kind='hist', diag_kws=dict(bins=50), plot_kws=dict(pmax=0.9)) plt.savefig(save_dir / 'labels_correlogram.jpg', dpi=200) plt.close() @@ -298,15 +342,15 @@ def plot_labels(labels, names=(), save_dir=Path(''), loggers=None): matplotlib.use('svg') # faster ax = plt.subplots(2, 2, figsize=(8, 8), tight_layout=True)[1].ravel() y = ax[0].hist(c, bins=np.linspace(0, nc, nc + 1) - 0.5, rwidth=0.8) - # [y[2].patches[i].set_color([x / 255 for x in colors(i)]) for i in range(nc)] # update colors bug #3195 + # [y[2].patches[i].set_color([x / 255 for x in colors(i)]) for i in range(nc)] # update colors bug #3195 ax[0].set_ylabel('instances') if 0 < len(names) < 30: ax[0].set_xticks(range(len(names))) ax[0].set_xticklabels(names, rotation=90, fontsize=10) else: ax[0].set_xlabel('classes') - sns.histplot(x, x='x', y='y', ax=ax[2], bins=50, pmax=0.9) - sns.histplot(x, x='width', y='height', ax=ax[3], bins=50, pmax=0.9) + sn.histplot(x, x='x', y='y', ax=ax[2], bins=50, pmax=0.9) + sn.histplot(x, x='width', y='height', ax=ax[3], bins=50, pmax=0.9) # rectangles labels[:, 1:3] = 0.5 # center @@ -325,34 +369,57 @@ def plot_labels(labels, names=(), save_dir=Path(''), loggers=None): matplotlib.use('Agg') plt.close() - # loggers - for k, v in loggers.items() or {}: - if k == 'wandb' and v: - v.log({"Labels": [v.Image(str(x), caption=x.name) for x in save_dir.glob('*labels*.jpg')]}, commit=False) - -def plot_evolution(yaml_file='data/hyp.finetune.yaml'): # from utils.plots import *; plot_evolution() - # Plot hyperparameter evolution results in evolve.txt - with open(yaml_file) as f: - hyp = yaml.safe_load(f) - x = np.loadtxt('evolve.txt', ndmin=2) +def plot_evolve(evolve_csv='path/to/evolve.csv'): # from utils.plots import *; plot_evolve() + # Plot evolve.csv hyp evolution results + evolve_csv = Path(evolve_csv) + data = pd.read_csv(evolve_csv) + keys = [x.strip() for x in data.columns] + x = data.values f = fitness(x) - # weights = (f - f.min()) ** 2 # for weighted results + j = np.argmax(f) # max fitness index plt.figure(figsize=(10, 12), tight_layout=True) matplotlib.rc('font', **{'size': 8}) - for i, (k, v) in enumerate(hyp.items()): - y = x[:, i + 7] - # mu = (y * weights).sum() / weights.sum() # best weighted result - mu = y[f.argmax()] # best single result + for i, k in enumerate(keys[7:]): + v = x[:, 7 + i] + mu = v[j] # best single result plt.subplot(6, 5, i + 1) - plt.scatter(y, f, c=hist2d(y, f, 20), cmap='viridis', alpha=.8, edgecolors='none') + plt.scatter(v, f, c=hist2d(v, f, 20), cmap='viridis', alpha=.8, edgecolors='none') plt.plot(mu, f.max(), 'k+', markersize=15) - plt.title('%s = %.3g' % (k, mu), fontdict={'size': 9}) # limit to 40 characters + plt.title(f'{k} = {mu:.3g}', fontdict={'size': 9}) # limit to 40 characters if i % 5 != 0: plt.yticks([]) - print('%15s: %.3g' % (k, mu)) - plt.savefig('evolve.png', dpi=200) - print('\nPlot saved as evolve.png') + print(f'{k:>15}: {mu:.3g}') + f = evolve_csv.with_suffix('.png') # filename + plt.savefig(f, dpi=200) + plt.close() + print(f'Saved {f}') + + +def plot_results(file='path/to/results.csv', dir=''): + # Plot training results.csv. Usage: from utils.plots import *; plot_results('path/to/results.csv') + save_dir = Path(file).parent if file else Path(dir) + fig, ax = plt.subplots(2, 5, figsize=(12, 6), tight_layout=True) + ax = ax.ravel() + files = list(save_dir.glob('results*.csv')) + assert len(files), f'No results.csv files found in {save_dir.resolve()}, nothing to plot.' + for fi, f in enumerate(files): + try: + data = pd.read_csv(f) + s = [x.strip() for x in data.columns] + x = data.values[:, 0] + for i, j in enumerate([1, 2, 3, 4, 5, 8, 9, 10, 6, 7]): + y = data.values[:, j] + # y[y == 0] = np.nan # don't show zero values + ax[i].plot(x, y, marker='.', label=f.stem, linewidth=2, markersize=8) + ax[i].set_title(s[j], fontsize=12) + # if j in [8, 9, 10]: # share train and val loss y axes + # ax[i].get_shared_y_axes().join(ax[i], ax[i - 5]) + except Exception as e: + print(f'Warning: Plotting error for {f}: {e}') + ax[1].legend() + fig.savefig(save_dir / 'results.png', dpi=200) + plt.close() def profile_idetection(start=0, stop=0, labels=(), save_dir=''): @@ -381,66 +448,22 @@ def profile_idetection(start=0, stop=0, labels=(), save_dir=''): else: a.remove() except Exception as e: - print('Warning: Plotting error for %s; %s' % (f, e)) - + print(f'Warning: Plotting error for {f}; {e}') ax[1].legend() plt.savefig(Path(save_dir) / 'idetection_profile.png', dpi=200) -def plot_results_overlay(start=0, stop=0): # from utils.plots import *; plot_results_overlay() - # Plot training 'results*.txt', overlaying train and val losses - s = ['train', 'train', 'train', 'Precision', 'mAP@0.5', 'val', 'val', 'val', 'Recall', 'mAP@0.5:0.95'] # legends - t = ['Box', 'Objectness', 'Classification', 'P-R', 'mAP-F1'] # titles - for f in sorted(glob.glob('results*.txt') + glob.glob('../../Downloads/results*.txt')): - results = np.loadtxt(f, usecols=[2, 3, 4, 8, 9, 12, 13, 14, 10, 11], ndmin=2).T - n = results.shape[1] # number of rows - x = range(start, min(stop, n) if stop else n) - fig, ax = plt.subplots(1, 5, figsize=(14, 3.5), tight_layout=True) - ax = ax.ravel() - for i in range(5): - for j in [i, i + 5]: - y = results[j, x] - ax[i].plot(x, y, marker='.', label=s[j]) - # y_smooth = butter_lowpass_filtfilt(y) - # ax[i].plot(x, np.gradient(y_smooth), marker='.', label=s[j]) - - ax[i].set_title(t[i]) - ax[i].legend() - ax[i].set_ylabel(f) if i == 0 else None # add filename - fig.savefig(f.replace('.txt', '.png'), dpi=200) - - -def plot_results(start=0, stop=0, bucket='', id=(), labels=(), save_dir=''): - # Plot training 'results*.txt'. from utils.plots import *; plot_results(save_dir='runs/train/exp') - fig, ax = plt.subplots(2, 5, figsize=(12, 6), tight_layout=True) - ax = ax.ravel() - s = ['Box', 'Objectness', 'Classification', 'Precision', 'Recall', - 'val Box', 'val Objectness', 'val Classification', 'mAP@0.5', 'mAP@0.5:0.95'] - if bucket: - # files = ['https://storage.googleapis.com/%s/results%g.txt' % (bucket, x) for x in id] - files = ['results%g.txt' % x for x in id] - c = ('gsutil cp ' + '%s ' * len(files) + '.') % tuple('gs://%s/results%g.txt' % (bucket, x) for x in id) - os.system(c) - else: - files = list(Path(save_dir).glob('results*.txt')) - assert len(files), 'No results.txt files found in %s, nothing to plot.' % os.path.abspath(save_dir) - for fi, f in enumerate(files): - try: - results = np.loadtxt(f, usecols=[2, 3, 4, 8, 9, 12, 13, 14, 10, 11], ndmin=2).T - n = results.shape[1] # number of rows - x = range(start, min(stop, n) if stop else n) - for i in range(10): - y = results[i, x] - if i in [0, 1, 2, 5, 6, 7]: - y[y == 0] = np.nan # don't show zero loss values - # y /= y[0] # normalize - label = labels[fi] if len(labels) else f.stem - ax[i].plot(x, y, marker='.', label=label, linewidth=2, markersize=8) - ax[i].set_title(s[i]) - # if i in [5, 6, 7]: # share train and val loss y axes - # ax[i].get_shared_y_axes().join(ax[i], ax[i - 5]) - except Exception as e: - print('Warning: Plotting error for %s; %s' % (f, e)) - - ax[1].legend() - fig.savefig(Path(save_dir) / 'results.png', dpi=200) +def save_one_box(xyxy, im, file='image.jpg', gain=1.02, pad=10, square=False, BGR=False, save=True): + # Save image crop as {file} with crop size multiple {gain} and {pad} pixels. Save and/or return crop + xyxy = torch.tensor(xyxy).view(-1, 4) + b = xyxy2xywh(xyxy) # boxes + if square: + b[:, 2:] = b[:, 2:].max(1)[0].unsqueeze(1) # attempt rectangle to square + b[:, 2:] = b[:, 2:] * gain + pad # box wh * gain + pad + xyxy = xywh2xyxy(b).long() + clip_coords(xyxy, im.shape) + crop = im[int(xyxy[0, 1]):int(xyxy[0, 3]), int(xyxy[0, 0]):int(xyxy[0, 2]), ::(1 if BGR else -1)] + if save: + file.parent.mkdir(parents=True, exist_ok=True) # make directory + cv2.imwrite(str(increment_path(file).with_suffix('.jpg')), crop) + return crop diff --git a/utils/torch_utils.py b/utils/torch_utils.py index 9114112a..d3692297 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -1,7 +1,9 @@ -# YOLOv3 PyTorch utils +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +PyTorch utils +""" import datetime -import logging import math import os import platform @@ -12,16 +14,16 @@ from copy import deepcopy from pathlib import Path import torch -import torch.backends.cudnn as cudnn +import torch.distributed as dist import torch.nn as nn import torch.nn.functional as F -import torchvision + +from utils.general import LOGGER try: - import thop # for FLOPS computation + import thop # for FLOPs computation except ImportError: thop = None -logger = logging.getLogger(__name__) @contextmanager @@ -30,19 +32,10 @@ def torch_distributed_zero_first(local_rank: int): Decorator to make all processes in distributed training wait for each local_master to do something. """ if local_rank not in [-1, 0]: - torch.distributed.barrier() + dist.barrier(device_ids=[local_rank]) yield if local_rank == 0: - torch.distributed.barrier() - - -def init_torch_seeds(seed=0): - # Speed-reproducibility tradeoff https://pytorch.org/docs/stable/notes/randomness.html - torch.manual_seed(seed) - if seed == 0: # slower, more reproducible - cudnn.benchmark, cudnn.deterministic = False, True - else: # faster, less reproducible - cudnn.benchmark, cudnn.deterministic = True, False + dist.barrier(device_ids=[0]) def date_modified(path=__file__): @@ -60,10 +53,11 @@ def git_describe(path=Path(__file__).parent): # path must be a directory return '' # not a git repository -def select_device(device='', batch_size=None): +def select_device(device='', batch_size=None, newline=True): # device = 'cpu' or '0' or '0,1,2,3' s = f'YOLOv3 🚀 {git_describe() or date_modified()} torch {torch.__version__} ' # string - cpu = device.lower() == 'cpu' + device = str(device).strip().lower().replace('cuda:', '') # to string, 'cuda:0' to '0' + cpu = device == 'cpu' if cpu: os.environ['CUDA_VISIBLE_DEVICES'] = '-1' # force torch.cuda.is_available() = False elif device: # non-cpu device requested @@ -72,65 +66,80 @@ def select_device(device='', batch_size=None): cuda = not cpu and torch.cuda.is_available() if cuda: - devices = device.split(',') if device else range(torch.cuda.device_count()) # i.e. 0,1,6,7 + devices = device.split(',') if device else '0' # range(torch.cuda.device_count()) # i.e. 0,1,6,7 n = len(devices) # device count if n > 1 and batch_size: # check batch_size is divisible by device_count assert batch_size % n == 0, f'batch-size {batch_size} not multiple of GPU count {n}' - space = ' ' * len(s) + space = ' ' * (len(s) + 1) for i, d in enumerate(devices): p = torch.cuda.get_device_properties(i) - s += f"{'' if i == 0 else space}CUDA:{d} ({p.name}, {p.total_memory / 1024 ** 2}MB)\n" # bytes to MB + s += f"{'' if i == 0 else space}CUDA:{d} ({p.name}, {p.total_memory / 1024 ** 2:.0f}MiB)\n" # bytes to MB else: s += 'CPU\n' - logger.info(s.encode().decode('ascii', 'ignore') if platform.system() == 'Windows' else s) # emoji-safe + if not newline: + s = s.rstrip() + LOGGER.info(s.encode().decode('ascii', 'ignore') if platform.system() == 'Windows' else s) # emoji-safe return torch.device('cuda:0' if cuda else 'cpu') -def time_synchronized(): +def time_sync(): # pytorch-accurate time if torch.cuda.is_available(): torch.cuda.synchronize() return time.time() -def profile(x, ops, n=100, device=None): - # profile a pytorch module or list of modules. Example usage: - # x = torch.randn(16, 3, 640, 640) # input +def profile(input, ops, n=10, device=None): + # speed/memory/FLOPs profiler + # + # Usage: + # input = torch.randn(16, 3, 640, 640) # m1 = lambda x: x * torch.sigmoid(x) # m2 = nn.SiLU() - # profile(x, [m1, m2], n=100) # profile speed over 100 iterations + # profile(input, [m1, m2], n=100) # profile over 100 iterations - device = device or torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') - x = x.to(device) - x.requires_grad = True - print(torch.__version__, device.type, torch.cuda.get_device_properties(0) if device.type == 'cuda' else '') - print(f"\n{'Params':>12s}{'GFLOPS':>12s}{'forward (ms)':>16s}{'backward (ms)':>16s}{'input':>24s}{'output':>24s}") - for m in ops if isinstance(ops, list) else [ops]: - m = m.to(device) if hasattr(m, 'to') else m # device - m = m.half() if hasattr(m, 'half') and isinstance(x, torch.Tensor) and x.dtype is torch.float16 else m # type - dtf, dtb, t = 0., 0., [0., 0., 0.] # dt forward, backward - try: - flops = thop.profile(m, inputs=(x,), verbose=False)[0] / 1E9 * 2 # GFLOPS - except: - flops = 0 + results = [] + device = device or select_device() + print(f"{'Params':>12s}{'GFLOPs':>12s}{'GPU_mem (GB)':>14s}{'forward (ms)':>14s}{'backward (ms)':>14s}" + f"{'input':>24s}{'output':>24s}") - for _ in range(n): - t[0] = time_synchronized() - y = m(x) - t[1] = time_synchronized() + for x in input if isinstance(input, list) else [input]: + x = x.to(device) + x.requires_grad = True + for m in ops if isinstance(ops, list) else [ops]: + m = m.to(device) if hasattr(m, 'to') else m # device + m = m.half() if hasattr(m, 'half') and isinstance(x, torch.Tensor) and x.dtype is torch.float16 else m + tf, tb, t = 0, 0, [0, 0, 0] # dt forward, backward try: - _ = y.sum().backward() - t[2] = time_synchronized() - except: # no backward method - t[2] = float('nan') - dtf += (t[1] - t[0]) * 1000 / n # ms per op forward - dtb += (t[2] - t[1]) * 1000 / n # ms per op backward + flops = thop.profile(m, inputs=(x,), verbose=False)[0] / 1E9 * 2 # GFLOPs + except: + flops = 0 - s_in = tuple(x.shape) if isinstance(x, torch.Tensor) else 'list' - s_out = tuple(y.shape) if isinstance(y, torch.Tensor) else 'list' - p = sum(list(x.numel() for x in m.parameters())) if isinstance(m, nn.Module) else 0 # parameters - print(f'{p:12}{flops:12.4g}{dtf:16.4g}{dtb:16.4g}{str(s_in):>24s}{str(s_out):>24s}') + try: + for _ in range(n): + t[0] = time_sync() + y = m(x) + t[1] = time_sync() + try: + _ = (sum(yi.sum() for yi in y) if isinstance(y, list) else y).sum().backward() + t[2] = time_sync() + except Exception as e: # no backward method + # print(e) # for debug + t[2] = float('nan') + tf += (t[1] - t[0]) * 1000 / n # ms per op forward + tb += (t[2] - t[1]) * 1000 / n # ms per op backward + mem = torch.cuda.memory_reserved() / 1E9 if torch.cuda.is_available() else 0 # (GB) + s_in = tuple(x.shape) if isinstance(x, torch.Tensor) else 'list' + s_out = tuple(y.shape) if isinstance(y, torch.Tensor) else 'list' + p = sum(list(x.numel() for x in m.parameters())) if isinstance(m, nn.Module) else 0 # parameters + print(f'{p:12}{flops:12.4g}{mem:>14.3f}{tf:14.4g}{tb:14.4g}{str(s_in):>24s}{str(s_out):>24s}') + results.append([p, flops, mem, tf, tb, s_in, s_out]) + except Exception as e: + print(e) + results.append(None) + torch.cuda.empty_cache() + return results def is_parallel(model): @@ -143,11 +152,6 @@ def de_parallel(model): return model.module if is_parallel(model) else model -def intersect_dicts(da, db, exclude=()): - # Dictionary intersection of matching keys and shapes, omitting 'exclude' keys, using da values - return {k: v for k, v in da.items() if k in db and not any(x in k for x in exclude) and v.shape == db[k].shape} - - def initialize_weights(model): for m in model.modules(): t = type(m) @@ -156,7 +160,7 @@ def initialize_weights(model): elif t is nn.BatchNorm2d: m.eps = 1e-3 m.momentum = 0.03 - elif t in [nn.Hardswish, nn.LeakyReLU, nn.ReLU, nn.ReLU6]: + elif t in [nn.Hardswish, nn.LeakyReLU, nn.ReLU, nn.ReLU6, nn.SiLU]: m.inplace = True @@ -167,7 +171,7 @@ def find_modules(model, mclass=nn.Conv2d): def sparsity(model): # Return global model sparsity - a, b = 0., 0. + a, b = 0, 0 for p in model.parameters(): a += p.numel() b += (p == 0).sum() @@ -213,42 +217,23 @@ def model_info(model, verbose=False, img_size=640): n_p = sum(x.numel() for x in model.parameters()) # number parameters n_g = sum(x.numel() for x in model.parameters() if x.requires_grad) # number gradients if verbose: - print('%5s %40s %9s %12s %20s %10s %10s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) + print(f"{'layer':>5} {'name':>40} {'gradient':>9} {'parameters':>12} {'shape':>20} {'mu':>10} {'sigma':>10}") for i, (name, p) in enumerate(model.named_parameters()): name = name.replace('module_list.', '') print('%5g %40s %9s %12g %20s %10.3g %10.3g' % (i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) - try: # FLOPS + try: # FLOPs from thop import profile stride = max(int(model.stride.max()), 32) if hasattr(model, 'stride') else 32 img = torch.zeros((1, model.yaml.get('ch', 3), stride, stride), device=next(model.parameters()).device) # input - flops = profile(deepcopy(model), inputs=(img,), verbose=False)[0] / 1E9 * 2 # stride GFLOPS + flops = profile(deepcopy(model), inputs=(img,), verbose=False)[0] / 1E9 * 2 # stride GFLOPs img_size = img_size if isinstance(img_size, list) else [img_size, img_size] # expand if int/float - fs = ', %.1f GFLOPS' % (flops * img_size[0] / stride * img_size[1] / stride) # 640x640 GFLOPS + fs = ', %.1f GFLOPs' % (flops * img_size[0] / stride * img_size[1] / stride) # 640x640 GFLOPs except (ImportError, Exception): fs = '' - logger.info(f"Model Summary: {len(list(model.modules()))} layers, {n_p} parameters, {n_g} gradients{fs}") - - -def load_classifier(name='resnet101', n=2): - # Loads a pretrained model reshaped to n-class output - model = torchvision.models.__dict__[name](pretrained=True) - - # ResNet model properties - # input_size = [3, 224, 224] - # input_space = 'RGB' - # input_range = [0, 1] - # mean = [0.485, 0.456, 0.406] - # std = [0.229, 0.224, 0.225] - - # Reshape output to n classes - filters = model.fc.weight.shape[1] - model.fc.bias = nn.Parameter(torch.zeros(n), requires_grad=True) - model.fc.weight = nn.Parameter(torch.zeros(n, filters), requires_grad=True) - model.fc.out_features = n - return model + LOGGER.info(f"Model Summary: {len(list(model.modules()))} layers, {n_p} parameters, {n_g} gradients{fs}") def scale_img(img, ratio=1.0, same_shape=False, gs=32): # img(16,3,256,416) @@ -260,7 +245,7 @@ def scale_img(img, ratio=1.0, same_shape=False, gs=32): # img(16,3,256,416) s = (int(h * ratio), int(w * ratio)) # new size img = F.interpolate(img, size=s, mode='bilinear', align_corners=False) # resize if not same_shape: # pad/crop img - h, w = [math.ceil(x * ratio / gs) * gs for x in (h, w)] + h, w = (math.ceil(x * ratio / gs) * gs for x in (h, w)) return F.pad(img, [0, w - s[1], 0, h - s[0]], value=0.447) # value = imagenet mean @@ -273,6 +258,29 @@ def copy_attr(a, b, include=(), exclude=()): setattr(a, k, v) +class EarlyStopping: + # simple early stopper + def __init__(self, patience=30): + self.best_fitness = 0.0 # i.e. mAP + self.best_epoch = 0 + self.patience = patience or float('inf') # epochs to wait after fitness stops improving to stop + self.possible_stop = False # possible stop may occur next epoch + + def __call__(self, epoch, fitness): + if fitness >= self.best_fitness: # >= 0 to allow for early zero-fitness stage of training + self.best_epoch = epoch + self.best_fitness = fitness + delta = epoch - self.best_epoch # epochs without improvement + self.possible_stop = delta >= (self.patience - 1) # possible stop may occur next epoch + stop = delta >= self.patience # stop training if patience exceeded + if stop: + LOGGER.info(f'Stopping training early as no improvement observed in last {self.patience} epochs. ' + f'Best results observed at epoch {self.best_epoch}, best model saved as best.pt.\n' + f'To update EarlyStopping(patience={self.patience}) pass a new patience value, ' + f'i.e. `python train.py --patience 300` or use `--patience 0` to disable EarlyStopping.') + return stop + + class ModelEMA: """ Model Exponential Moving Average from https://github.com/rwightman/pytorch-image-models Keep a moving average of everything in the model state_dict (parameters and buffers). @@ -303,7 +311,7 @@ class ModelEMA: for k, v in self.ema.state_dict().items(): if v.dtype.is_floating_point: v *= d - v += (1. - d) * msd[k].detach() + v += (1 - d) * msd[k].detach() def update_attr(self, model, include=(), exclude=('process_group', 'reducer')): # Update EMA attributes diff --git a/utils/wandb_logging/__init__.py b/utils/wandb_logging/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/utils/wandb_logging/wandb_utils.py b/utils/wandb_logging/wandb_utils.py deleted file mode 100644 index 12bd320c..00000000 --- a/utils/wandb_logging/wandb_utils.py +++ /dev/null @@ -1,318 +0,0 @@ -"""Utilities and tools for tracking runs with Weights & Biases.""" -import json -import sys -from pathlib import Path - -import torch -import yaml -from tqdm import tqdm - -sys.path.append(str(Path(__file__).parent.parent.parent)) # add utils/ to path -from utils.datasets import LoadImagesAndLabels -from utils.datasets import img2label_paths -from utils.general import colorstr, xywh2xyxy, check_dataset, check_file - -try: - import wandb - from wandb import init, finish -except ImportError: - wandb = None - -WANDB_ARTIFACT_PREFIX = 'wandb-artifact://' - - -def remove_prefix(from_string, prefix=WANDB_ARTIFACT_PREFIX): - return from_string[len(prefix):] - - -def check_wandb_config_file(data_config_file): - wandb_config = '_wandb.'.join(data_config_file.rsplit('.', 1)) # updated data.yaml path - if Path(wandb_config).is_file(): - return wandb_config - return data_config_file - - -def get_run_info(run_path): - run_path = Path(remove_prefix(run_path, WANDB_ARTIFACT_PREFIX)) - run_id = run_path.stem - project = run_path.parent.stem - entity = run_path.parent.parent.stem - model_artifact_name = 'run_' + run_id + '_model' - return entity, project, run_id, model_artifact_name - - -def check_wandb_resume(opt): - process_wandb_config_ddp_mode(opt) if opt.global_rank not in [-1, 0] else None - if isinstance(opt.resume, str): - if opt.resume.startswith(WANDB_ARTIFACT_PREFIX): - if opt.global_rank not in [-1, 0]: # For resuming DDP runs - entity, project, run_id, model_artifact_name = get_run_info(opt.resume) - api = wandb.Api() - artifact = api.artifact(entity + '/' + project + '/' + model_artifact_name + ':latest') - modeldir = artifact.download() - opt.weights = str(Path(modeldir) / "last.pt") - return True - return None - - -def process_wandb_config_ddp_mode(opt): - with open(check_file(opt.data)) as f: - data_dict = yaml.safe_load(f) # data dict - train_dir, val_dir = None, None - if isinstance(data_dict['train'], str) and data_dict['train'].startswith(WANDB_ARTIFACT_PREFIX): - api = wandb.Api() - train_artifact = api.artifact(remove_prefix(data_dict['train']) + ':' + opt.artifact_alias) - train_dir = train_artifact.download() - train_path = Path(train_dir) / 'data/images/' - data_dict['train'] = str(train_path) - - if isinstance(data_dict['val'], str) and data_dict['val'].startswith(WANDB_ARTIFACT_PREFIX): - api = wandb.Api() - val_artifact = api.artifact(remove_prefix(data_dict['val']) + ':' + opt.artifact_alias) - val_dir = val_artifact.download() - val_path = Path(val_dir) / 'data/images/' - data_dict['val'] = str(val_path) - if train_dir or val_dir: - ddp_data_path = str(Path(val_dir) / 'wandb_local_data.yaml') - with open(ddp_data_path, 'w') as f: - yaml.safe_dump(data_dict, f) - opt.data = ddp_data_path - - -class WandbLogger(): - """Log training runs, datasets, models, and predictions to Weights & Biases. - - This logger sends information to W&B at wandb.ai. By default, this information - includes hyperparameters, system configuration and metrics, model metrics, - and basic data metrics and analyses. - - By providing additional command line arguments to train.py, datasets, - models and predictions can also be logged. - - For more on how this logger is used, see the Weights & Biases documentation: - https://docs.wandb.com/guides/integrations/yolov5 - """ - def __init__(self, opt, name, run_id, data_dict, job_type='Training'): - # Pre-training routine -- - self.job_type = job_type - self.wandb, self.wandb_run, self.data_dict = wandb, None if not wandb else wandb.run, data_dict - # It's more elegant to stick to 1 wandb.init call, but useful config data is overwritten in the WandbLogger's wandb.init call - if isinstance(opt.resume, str): # checks resume from artifact - if opt.resume.startswith(WANDB_ARTIFACT_PREFIX): - entity, project, run_id, model_artifact_name = get_run_info(opt.resume) - model_artifact_name = WANDB_ARTIFACT_PREFIX + model_artifact_name - assert wandb, 'install wandb to resume wandb runs' - # Resume wandb-artifact:// runs here| workaround for not overwriting wandb.config - self.wandb_run = wandb.init(id=run_id, project=project, entity=entity, resume='allow') - opt.resume = model_artifact_name - elif self.wandb: - self.wandb_run = wandb.init(config=opt, - resume="allow", - project='YOLOv3' if opt.project == 'runs/train' else Path(opt.project).stem, - entity=opt.entity, - name=name, - job_type=job_type, - id=run_id) if not wandb.run else wandb.run - if self.wandb_run: - if self.job_type == 'Training': - if not opt.resume: - wandb_data_dict = self.check_and_upload_dataset(opt) if opt.upload_dataset else data_dict - # Info useful for resuming from artifacts - self.wandb_run.config.opt = vars(opt) - self.wandb_run.config.data_dict = wandb_data_dict - self.data_dict = self.setup_training(opt, data_dict) - if self.job_type == 'Dataset Creation': - self.data_dict = self.check_and_upload_dataset(opt) - else: - prefix = colorstr('wandb: ') - print(f"{prefix}Install Weights & Biases for YOLOv3 logging with 'pip install wandb' (recommended)") - - def check_and_upload_dataset(self, opt): - assert wandb, 'Install wandb to upload dataset' - check_dataset(self.data_dict) - config_path = self.log_dataset_artifact(check_file(opt.data), - opt.single_cls, - 'YOLOv3' if opt.project == 'runs/train' else Path(opt.project).stem) - print("Created dataset config file ", config_path) - with open(config_path) as f: - wandb_data_dict = yaml.safe_load(f) - return wandb_data_dict - - def setup_training(self, opt, data_dict): - self.log_dict, self.current_epoch, self.log_imgs = {}, 0, 16 # Logging Constants - self.bbox_interval = opt.bbox_interval - if isinstance(opt.resume, str): - modeldir, _ = self.download_model_artifact(opt) - if modeldir: - self.weights = Path(modeldir) / "last.pt" - config = self.wandb_run.config - opt.weights, opt.save_period, opt.batch_size, opt.bbox_interval, opt.epochs, opt.hyp = str( - self.weights), config.save_period, config.total_batch_size, config.bbox_interval, config.epochs, \ - config.opt['hyp'] - data_dict = dict(self.wandb_run.config.data_dict) # eliminates the need for config file to resume - if 'val_artifact' not in self.__dict__: # If --upload_dataset is set, use the existing artifact, don't download - self.train_artifact_path, self.train_artifact = self.download_dataset_artifact(data_dict.get('train'), - opt.artifact_alias) - self.val_artifact_path, self.val_artifact = self.download_dataset_artifact(data_dict.get('val'), - opt.artifact_alias) - self.result_artifact, self.result_table, self.val_table, self.weights = None, None, None, None - if self.train_artifact_path is not None: - train_path = Path(self.train_artifact_path) / 'data/images/' - data_dict['train'] = str(train_path) - if self.val_artifact_path is not None: - val_path = Path(self.val_artifact_path) / 'data/images/' - data_dict['val'] = str(val_path) - self.val_table = self.val_artifact.get("val") - self.map_val_table_path() - if self.val_artifact is not None: - self.result_artifact = wandb.Artifact("run_" + wandb.run.id + "_progress", "evaluation") - self.result_table = wandb.Table(["epoch", "id", "prediction", "avg_confidence"]) - if opt.bbox_interval == -1: - self.bbox_interval = opt.bbox_interval = (opt.epochs // 10) if opt.epochs > 10 else 1 - return data_dict - - def download_dataset_artifact(self, path, alias): - if isinstance(path, str) and path.startswith(WANDB_ARTIFACT_PREFIX): - artifact_path = Path(remove_prefix(path, WANDB_ARTIFACT_PREFIX) + ":" + alias) - dataset_artifact = wandb.use_artifact(artifact_path.as_posix()) - assert dataset_artifact is not None, "'Error: W&B dataset artifact doesn\'t exist'" - datadir = dataset_artifact.download() - return datadir, dataset_artifact - return None, None - - def download_model_artifact(self, opt): - if opt.resume.startswith(WANDB_ARTIFACT_PREFIX): - model_artifact = wandb.use_artifact(remove_prefix(opt.resume, WANDB_ARTIFACT_PREFIX) + ":latest") - assert model_artifact is not None, 'Error: W&B model artifact doesn\'t exist' - modeldir = model_artifact.download() - epochs_trained = model_artifact.metadata.get('epochs_trained') - total_epochs = model_artifact.metadata.get('total_epochs') - is_finished = total_epochs is None - assert not is_finished, 'training is finished, can only resume incomplete runs.' - return modeldir, model_artifact - return None, None - - def log_model(self, path, opt, epoch, fitness_score, best_model=False): - model_artifact = wandb.Artifact('run_' + wandb.run.id + '_model', type='model', metadata={ - 'original_url': str(path), - 'epochs_trained': epoch + 1, - 'save period': opt.save_period, - 'project': opt.project, - 'total_epochs': opt.epochs, - 'fitness_score': fitness_score - }) - model_artifact.add_file(str(path / 'last.pt'), name='last.pt') - wandb.log_artifact(model_artifact, - aliases=['latest', 'last', 'epoch ' + str(self.current_epoch), 'best' if best_model else '']) - print("Saving model artifact on epoch ", epoch + 1) - - def log_dataset_artifact(self, data_file, single_cls, project, overwrite_config=False): - with open(data_file) as f: - data = yaml.safe_load(f) # data dict - nc, names = (1, ['item']) if single_cls else (int(data['nc']), data['names']) - names = {k: v for k, v in enumerate(names)} # to index dictionary - self.train_artifact = self.create_dataset_table(LoadImagesAndLabels( - data['train'], rect=True, batch_size=1), names, name='train') if data.get('train') else None - self.val_artifact = self.create_dataset_table(LoadImagesAndLabels( - data['val'], rect=True, batch_size=1), names, name='val') if data.get('val') else None - if data.get('train'): - data['train'] = WANDB_ARTIFACT_PREFIX + str(Path(project) / 'train') - if data.get('val'): - data['val'] = WANDB_ARTIFACT_PREFIX + str(Path(project) / 'val') - path = data_file if overwrite_config else '_wandb.'.join(data_file.rsplit('.', 1)) # updated data.yaml path - data.pop('download', None) - with open(path, 'w') as f: - yaml.safe_dump(data, f) - - if self.job_type == 'Training': # builds correct artifact pipeline graph - self.wandb_run.use_artifact(self.val_artifact) - self.wandb_run.use_artifact(self.train_artifact) - self.val_artifact.wait() - self.val_table = self.val_artifact.get('val') - self.map_val_table_path() - else: - self.wandb_run.log_artifact(self.train_artifact) - self.wandb_run.log_artifact(self.val_artifact) - return path - - def map_val_table_path(self): - self.val_table_map = {} - print("Mapping dataset") - for i, data in enumerate(tqdm(self.val_table.data)): - self.val_table_map[data[3]] = data[0] - - def create_dataset_table(self, dataset, class_to_id, name='dataset'): - # TODO: Explore multiprocessing to slpit this loop parallely| This is essential for speeding up the the logging - artifact = wandb.Artifact(name=name, type="dataset") - img_files = tqdm([dataset.path]) if isinstance(dataset.path, str) and Path(dataset.path).is_dir() else None - img_files = tqdm(dataset.img_files) if not img_files else img_files - for img_file in img_files: - if Path(img_file).is_dir(): - artifact.add_dir(img_file, name='data/images') - labels_path = 'labels'.join(dataset.path.rsplit('images', 1)) - artifact.add_dir(labels_path, name='data/labels') - else: - artifact.add_file(img_file, name='data/images/' + Path(img_file).name) - label_file = Path(img2label_paths([img_file])[0]) - artifact.add_file(str(label_file), - name='data/labels/' + label_file.name) if label_file.exists() else None - table = wandb.Table(columns=["id", "train_image", "Classes", "name"]) - class_set = wandb.Classes([{'id': id, 'name': name} for id, name in class_to_id.items()]) - for si, (img, labels, paths, shapes) in enumerate(tqdm(dataset)): - box_data, img_classes = [], {} - for cls, *xywh in labels[:, 1:].tolist(): - cls = int(cls) - box_data.append({"position": {"middle": [xywh[0], xywh[1]], "width": xywh[2], "height": xywh[3]}, - "class_id": cls, - "box_caption": "%s" % (class_to_id[cls])}) - img_classes[cls] = class_to_id[cls] - boxes = {"ground_truth": {"box_data": box_data, "class_labels": class_to_id}} # inference-space - table.add_data(si, wandb.Image(paths, classes=class_set, boxes=boxes), json.dumps(img_classes), - Path(paths).name) - artifact.add(table, name) - return artifact - - def log_training_progress(self, predn, path, names): - if self.val_table and self.result_table: - class_set = wandb.Classes([{'id': id, 'name': name} for id, name in names.items()]) - box_data = [] - total_conf = 0 - for *xyxy, conf, cls in predn.tolist(): - if conf >= 0.25: - box_data.append( - {"position": {"minX": xyxy[0], "minY": xyxy[1], "maxX": xyxy[2], "maxY": xyxy[3]}, - "class_id": int(cls), - "box_caption": "%s %.3f" % (names[cls], conf), - "scores": {"class_score": conf}, - "domain": "pixel"}) - total_conf = total_conf + conf - boxes = {"predictions": {"box_data": box_data, "class_labels": names}} # inference-space - id = self.val_table_map[Path(path).name] - self.result_table.add_data(self.current_epoch, - id, - wandb.Image(self.val_table.data[id][1], boxes=boxes, classes=class_set), - total_conf / max(1, len(box_data)) - ) - - def log(self, log_dict): - if self.wandb_run: - for key, value in log_dict.items(): - self.log_dict[key] = value - - def end_epoch(self, best_result=False): - if self.wandb_run: - wandb.log(self.log_dict) - self.log_dict = {} - if self.result_artifact: - train_results = wandb.JoinedTable(self.val_table, self.result_table, "id") - self.result_artifact.add(train_results, 'result') - wandb.log_artifact(self.result_artifact, aliases=['latest', 'last', 'epoch ' + str(self.current_epoch), - ('best' if best_result else '')]) - self.result_table = wandb.Table(["epoch", "id", "prediction", "avg_confidence"]) - self.result_artifact = wandb.Artifact("run_" + wandb.run.id + "_progress", "evaluation") - - def finish_run(self): - if self.wandb_run: - if self.log_dict: - wandb.log(self.log_dict) - wandb.run.finish() diff --git a/val.py b/val.py new file mode 100644 index 00000000..24b28ad1 --- /dev/null +++ b/val.py @@ -0,0 +1,367 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Validate a trained model accuracy on a custom dataset + +Usage: + $ python path/to/val.py --data coco128.yaml --weights yolov3.pt --img 640 +""" + +import argparse +import json +import os +import sys +from pathlib import Path +from threading import Thread + +import numpy as np +import torch +from tqdm import tqdm + +FILE = Path(__file__).resolve() +ROOT = FILE.parents[0] # root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH +ROOT = Path(os.path.relpath(ROOT, Path.cwd())) # relative + +from models.common import DetectMultiBackend +from utils.callbacks import Callbacks +from utils.datasets import create_dataloader +from utils.general import (LOGGER, NCOLS, box_iou, check_dataset, check_img_size, check_requirements, check_yaml, + coco80_to_coco91_class, colorstr, increment_path, non_max_suppression, print_args, + scale_coords, xywh2xyxy, xyxy2xywh) +from utils.metrics import ConfusionMatrix, ap_per_class +from utils.plots import output_to_target, plot_images, plot_val_study +from utils.torch_utils import select_device, time_sync + + +def save_one_txt(predn, save_conf, shape, file): + # Save one txt result + gn = torch.tensor(shape)[[1, 0, 1, 0]] # normalization gain whwh + for *xyxy, conf, cls in predn.tolist(): + xywh = (xyxy2xywh(torch.tensor(xyxy).view(1, 4)) / gn).view(-1).tolist() # normalized xywh + line = (cls, *xywh, conf) if save_conf else (cls, *xywh) # label format + with open(file, 'a') as f: + f.write(('%g ' * len(line)).rstrip() % line + '\n') + + +def save_one_json(predn, jdict, path, class_map): + # Save one JSON result {"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], "score": 0.236} + image_id = int(path.stem) if path.stem.isnumeric() else path.stem + box = xyxy2xywh(predn[:, :4]) # xywh + box[:, :2] -= box[:, 2:] / 2 # xy center to top-left corner + for p, b in zip(predn.tolist(), box.tolist()): + jdict.append({'image_id': image_id, + 'category_id': class_map[int(p[5])], + 'bbox': [round(x, 3) for x in b], + 'score': round(p[4], 5)}) + + +def process_batch(detections, labels, iouv): + """ + Return correct predictions matrix. Both sets of boxes are in (x1, y1, x2, y2) format. + Arguments: + detections (Array[N, 6]), x1, y1, x2, y2, conf, class + labels (Array[M, 5]), class, x1, y1, x2, y2 + Returns: + correct (Array[N, 10]), for 10 IoU levels + """ + correct = torch.zeros(detections.shape[0], iouv.shape[0], dtype=torch.bool, device=iouv.device) + iou = box_iou(labels[:, 1:], detections[:, :4]) + x = torch.where((iou >= iouv[0]) & (labels[:, 0:1] == detections[:, 5])) # IoU above threshold and classes match + if x[0].shape[0]: + matches = torch.cat((torch.stack(x, 1), iou[x[0], x[1]][:, None]), 1).cpu().numpy() # [label, detection, iou] + if x[0].shape[0] > 1: + matches = matches[matches[:, 2].argsort()[::-1]] + matches = matches[np.unique(matches[:, 1], return_index=True)[1]] + # matches = matches[matches[:, 2].argsort()[::-1]] + matches = matches[np.unique(matches[:, 0], return_index=True)[1]] + matches = torch.Tensor(matches).to(iouv.device) + correct[matches[:, 1].long()] = matches[:, 2:3] >= iouv + return correct + + +@torch.no_grad() +def run(data, + weights=None, # model.pt path(s) + batch_size=32, # batch size + imgsz=640, # inference size (pixels) + conf_thres=0.001, # confidence threshold + iou_thres=0.6, # NMS IoU threshold + task='val', # train, val, test, speed or study + device='', # cuda device, i.e. 0 or 0,1,2,3 or cpu + single_cls=False, # treat as single-class dataset + augment=False, # augmented inference + verbose=False, # verbose output + save_txt=False, # save results to *.txt + save_hybrid=False, # save label+prediction hybrid results to *.txt + save_conf=False, # save confidences in --save-txt labels + save_json=False, # save a COCO-JSON results file + project=ROOT / 'runs/val', # save to project/name + name='exp', # save to project/name + exist_ok=False, # existing project/name ok, do not increment + half=True, # use FP16 half-precision inference + dnn=False, # use OpenCV DNN for ONNX inference + model=None, + dataloader=None, + save_dir=Path(''), + plots=True, + callbacks=Callbacks(), + compute_loss=None, + ): + # Initialize/load model and set device + training = model is not None + if training: # called by train.py + device, pt = next(model.parameters()).device, True # get model device, PyTorch model + + half &= device.type != 'cpu' # half precision only supported on CUDA + model.half() if half else model.float() + else: # called directly + device = select_device(device, batch_size=batch_size) + + # Directories + save_dir = increment_path(Path(project) / name, exist_ok=exist_ok) # increment run + (save_dir / 'labels' if save_txt else save_dir).mkdir(parents=True, exist_ok=True) # make dir + + # Load model + model = DetectMultiBackend(weights, device=device, dnn=dnn) + stride, pt = model.stride, model.pt + imgsz = check_img_size(imgsz, s=stride) # check image size + half &= pt and device.type != 'cpu' # half precision only supported by PyTorch on CUDA + if pt: + model.model.half() if half else model.model.float() + else: + half = False + batch_size = 1 # export.py models default to batch-size 1 + device = torch.device('cpu') + LOGGER.info(f'Forcing --batch-size 1 square inference shape(1,3,{imgsz},{imgsz}) for non-PyTorch backends') + + # Data + data = check_dataset(data) # check + + # Configure + model.eval() + is_coco = isinstance(data.get('val'), str) and data['val'].endswith('coco/val2017.txt') # COCO dataset + nc = 1 if single_cls else int(data['nc']) # number of classes + iouv = torch.linspace(0.5, 0.95, 10).to(device) # iou vector for mAP@0.5:0.95 + niou = iouv.numel() + + # Dataloader + if not training: + if pt and device.type != 'cpu': + model(torch.zeros(1, 3, imgsz, imgsz).to(device).type_as(next(model.model.parameters()))) # warmup + pad = 0.0 if task == 'speed' else 0.5 + task = task if task in ('train', 'val', 'test') else 'val' # path to train/val/test images + dataloader = create_dataloader(data[task], imgsz, batch_size, stride, single_cls, pad=pad, rect=pt, + prefix=colorstr(f'{task}: '))[0] + + seen = 0 + confusion_matrix = ConfusionMatrix(nc=nc) + names = {k: v for k, v in enumerate(model.names if hasattr(model, 'names') else model.module.names)} + class_map = coco80_to_coco91_class() if is_coco else list(range(1000)) + s = ('%20s' + '%11s' * 6) % ('Class', 'Images', 'Labels', 'P', 'R', 'mAP@.5', 'mAP@.5:.95') + dt, p, r, f1, mp, mr, map50, map = [0.0, 0.0, 0.0], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + loss = torch.zeros(3, device=device) + jdict, stats, ap, ap_class = [], [], [], [] + pbar = tqdm(dataloader, desc=s, ncols=NCOLS, bar_format='{l_bar}{bar:10}{r_bar}{bar:-10b}') # progress bar + for batch_i, (im, targets, paths, shapes) in enumerate(pbar): + t1 = time_sync() + if pt: + im = im.to(device, non_blocking=True) + targets = targets.to(device) + im = im.half() if half else im.float() # uint8 to fp16/32 + im /= 255 # 0 - 255 to 0.0 - 1.0 + nb, _, height, width = im.shape # batch size, channels, height, width + t2 = time_sync() + dt[0] += t2 - t1 + + # Inference + out, train_out = model(im) if training else model(im, augment=augment, val=True) # inference, loss outputs + dt[1] += time_sync() - t2 + + # Loss + if compute_loss: + loss += compute_loss([x.float() for x in train_out], targets)[1] # box, obj, cls + + # NMS + targets[:, 2:] *= torch.Tensor([width, height, width, height]).to(device) # to pixels + lb = [targets[targets[:, 0] == i, 1:] for i in range(nb)] if save_hybrid else [] # for autolabelling + t3 = time_sync() + out = non_max_suppression(out, conf_thres, iou_thres, labels=lb, multi_label=True, agnostic=single_cls) + dt[2] += time_sync() - t3 + + # Metrics + for si, pred in enumerate(out): + labels = targets[targets[:, 0] == si, 1:] + nl = len(labels) + tcls = labels[:, 0].tolist() if nl else [] # target class + path, shape = Path(paths[si]), shapes[si][0] + seen += 1 + + if len(pred) == 0: + if nl: + stats.append((torch.zeros(0, niou, dtype=torch.bool), torch.Tensor(), torch.Tensor(), tcls)) + continue + + # Predictions + if single_cls: + pred[:, 5] = 0 + predn = pred.clone() + scale_coords(im[si].shape[1:], predn[:, :4], shape, shapes[si][1]) # native-space pred + + # Evaluate + if nl: + tbox = xywh2xyxy(labels[:, 1:5]) # target boxes + scale_coords(im[si].shape[1:], tbox, shape, shapes[si][1]) # native-space labels + labelsn = torch.cat((labels[:, 0:1], tbox), 1) # native-space labels + correct = process_batch(predn, labelsn, iouv) + if plots: + confusion_matrix.process_batch(predn, labelsn) + else: + correct = torch.zeros(pred.shape[0], niou, dtype=torch.bool) + stats.append((correct.cpu(), pred[:, 4].cpu(), pred[:, 5].cpu(), tcls)) # (correct, conf, pcls, tcls) + + # Save/log + if save_txt: + save_one_txt(predn, save_conf, shape, file=save_dir / 'labels' / (path.stem + '.txt')) + if save_json: + save_one_json(predn, jdict, path, class_map) # append to COCO-JSON dictionary + callbacks.run('on_val_image_end', pred, predn, path, names, im[si]) + + # Plot images + if plots and batch_i < 3: + f = save_dir / f'val_batch{batch_i}_labels.jpg' # labels + Thread(target=plot_images, args=(im, targets, paths, f, names), daemon=True).start() + f = save_dir / f'val_batch{batch_i}_pred.jpg' # predictions + Thread(target=plot_images, args=(im, output_to_target(out), paths, f, names), daemon=True).start() + + # Compute metrics + stats = [np.concatenate(x, 0) for x in zip(*stats)] # to numpy + if len(stats) and stats[0].any(): + p, r, ap, f1, ap_class = ap_per_class(*stats, plot=plots, save_dir=save_dir, names=names) + ap50, ap = ap[:, 0], ap.mean(1) # AP@0.5, AP@0.5:0.95 + mp, mr, map50, map = p.mean(), r.mean(), ap50.mean(), ap.mean() + nt = np.bincount(stats[3].astype(np.int64), minlength=nc) # number of targets per class + else: + nt = torch.zeros(1) + + # Print results + pf = '%20s' + '%11i' * 2 + '%11.3g' * 4 # print format + LOGGER.info(pf % ('all', seen, nt.sum(), mp, mr, map50, map)) + + # Print results per class + if (verbose or (nc < 50 and not training)) and nc > 1 and len(stats): + for i, c in enumerate(ap_class): + LOGGER.info(pf % (names[c], seen, nt[c], p[i], r[i], ap50[i], ap[i])) + + # Print speeds + t = tuple(x / seen * 1E3 for x in dt) # speeds per image + if not training: + shape = (batch_size, 3, imgsz, imgsz) + LOGGER.info(f'Speed: %.1fms pre-process, %.1fms inference, %.1fms NMS per image at shape {shape}' % t) + + # Plots + if plots: + confusion_matrix.plot(save_dir=save_dir, names=list(names.values())) + callbacks.run('on_val_end') + + # Save JSON + if save_json and len(jdict): + w = Path(weights[0] if isinstance(weights, list) else weights).stem if weights is not None else '' # weights + anno_json = str(Path(data.get('path', '../coco')) / 'annotations/instances_val2017.json') # annotations json + pred_json = str(save_dir / f"{w}_predictions.json") # predictions json + LOGGER.info(f'\nEvaluating pycocotools mAP... saving {pred_json}...') + with open(pred_json, 'w') as f: + json.dump(jdict, f) + + try: # https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocoEvalDemo.ipynb + check_requirements(['pycocotools']) + from pycocotools.coco import COCO + from pycocotools.cocoeval import COCOeval + + anno = COCO(anno_json) # init annotations api + pred = anno.loadRes(pred_json) # init predictions api + eval = COCOeval(anno, pred, 'bbox') + if is_coco: + eval.params.imgIds = [int(Path(x).stem) for x in dataloader.dataset.img_files] # image IDs to evaluate + eval.evaluate() + eval.accumulate() + eval.summarize() + map, map50 = eval.stats[:2] # update results (mAP@0.5:0.95, mAP@0.5) + except Exception as e: + LOGGER.info(f'pycocotools unable to run: {e}') + + # Return results + model.float() # for training + if not training: + s = f"\n{len(list(save_dir.glob('labels/*.txt')))} labels saved to {save_dir / 'labels'}" if save_txt else '' + LOGGER.info(f"Results saved to {colorstr('bold', save_dir)}{s}") + maps = np.zeros(nc) + map + for i, c in enumerate(ap_class): + maps[c] = ap[i] + return (mp, mr, map50, map, *(loss.cpu() / len(dataloader)).tolist()), maps, t + + +def parse_opt(): + parser = argparse.ArgumentParser() + parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='dataset.yaml path') + parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'yolov3.pt', help='model.pt path(s)') + parser.add_argument('--batch-size', type=int, default=32, help='batch size') + parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=640, help='inference size (pixels)') + parser.add_argument('--conf-thres', type=float, default=0.001, help='confidence threshold') + parser.add_argument('--iou-thres', type=float, default=0.6, help='NMS IoU threshold') + parser.add_argument('--task', default='val', help='train, val, test, speed or study') + parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') + parser.add_argument('--single-cls', action='store_true', help='treat as single-class dataset') + parser.add_argument('--augment', action='store_true', help='augmented inference') + parser.add_argument('--verbose', action='store_true', help='report mAP by class') + parser.add_argument('--save-txt', action='store_true', help='save results to *.txt') + parser.add_argument('--save-hybrid', action='store_true', help='save label+prediction hybrid results to *.txt') + parser.add_argument('--save-conf', action='store_true', help='save confidences in --save-txt labels') + parser.add_argument('--save-json', action='store_true', help='save a COCO-JSON results file') + parser.add_argument('--project', default=ROOT / 'runs/val', help='save to project/name') + parser.add_argument('--name', default='exp', help='save to project/name') + parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment') + parser.add_argument('--half', action='store_true', help='use FP16 half-precision inference') + parser.add_argument('--dnn', action='store_true', help='use OpenCV DNN for ONNX inference') + opt = parser.parse_args() + opt.data = check_yaml(opt.data) # check YAML + opt.save_json |= opt.data.endswith('coco.yaml') + opt.save_txt |= opt.save_hybrid + print_args(FILE.stem, opt) + return opt + + +def main(opt): + check_requirements(requirements=ROOT / 'requirements.txt', exclude=('tensorboard', 'thop')) + + if opt.task in ('train', 'val', 'test'): # run normally + if opt.conf_thres > 0.001: # https://github.com/ultralytics/yolov5/issues/1466 + LOGGER.info(f'WARNING: confidence threshold {opt.conf_thres} >> 0.001 will produce invalid mAP values.') + run(**vars(opt)) + + else: + weights = opt.weights if isinstance(opt.weights, list) else [opt.weights] + opt.half = True # FP16 for fastest results + if opt.task == 'speed': # speed benchmarks + # python val.py --task speed --data coco.yaml --batch 1 --weights yolov3.pt yolov3-spp.pt... + opt.conf_thres, opt.iou_thres, opt.save_json = 0.25, 0.45, False + for opt.weights in weights: + run(**vars(opt), plots=False) + + elif opt.task == 'study': # speed vs mAP benchmarks + # python val.py --task study --data coco.yaml --iou 0.7 --weights yolov3.pt yolov3-spp.pt... + for opt.weights in weights: + f = f'study_{Path(opt.data).stem}_{Path(opt.weights).stem}.txt' # filename to save to + x, y = list(range(256, 1536 + 128, 128)), [] # x axis (image sizes), y axis + for opt.imgsz in x: # img-size + LOGGER.info(f'\nRunning {f} --imgsz {opt.imgsz}...') + r, _, t = run(**vars(opt), plots=False) + y.append(r + t) # results and times + np.savetxt(f, y, fmt='%10.4g') # save + os.system('zip -r study.zip study_*.txt') + plot_val_study(x=x) # plot + + +if __name__ == "__main__": + opt = parse_opt() + main(opt) diff --git a/weights/download_weights.sh b/weights/download_weights.sh deleted file mode 100755 index 6bb58023..00000000 --- a/weights/download_weights.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -# Download latest models from https://github.com/ultralytics/yolov3/releases -# Usage: -# $ bash weights/download_weights.sh - -python - < Date: Sun, 14 Nov 2021 22:33:34 +0100 Subject: [PATCH 2551/2595] Created using Colaboratory --- tutorial.ipynb | 189 ++++++++++++++++++++++++------------------------- 1 file changed, 94 insertions(+), 95 deletions(-) diff --git a/tutorial.ipynb b/tutorial.ipynb index 828e434f..4e7049d8 100644 --- a/tutorial.ipynb +++ b/tutorial.ipynb @@ -368,7 +368,7 @@ "colab_type": "text" }, "source": [ - "\"Open" + "\"Open" ] }, { @@ -402,10 +402,10 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "2e5d0950-2978-4304-856f-3b39f0d6627c" + "outputId": "b15def02-a331-4580-9878-8d06900e296d" }, "source": [ - "!git clone https://github.com/ultralytics/yolov3 -b update/yolov5_v6.0_release # clone\n", + "!git clone https://github.com/ultralytics/yolov3 # clone\n", "%cd yolov3\n", "%pip install -qr requirements.txt # install\n", "\n", @@ -413,13 +413,13 @@ "from yolov3 import utils\n", "display = utils.notebook_init() # checks" ], - "execution_count": 1, + "execution_count": 11, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ - "YOLOv3 🚀 v9.5.0-20-g9d10fe5 torch 1.10.0+cu111 CUDA:0 (A100-SXM4-40GB, 40536MiB)\n" + "YOLOv3 🚀 v9.6.0-0-g7eb23e3 torch 1.10.0+cu111 CUDA:0 (A100-SXM4-40GB, 40536MiB)\n" ] }, { @@ -459,26 +459,26 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "499c53a7-95f7-4fc1-dab8-7a660b813546" + "outputId": "5754dd6d-b5b0-41aa-ce81-7cc7a4c30553" }, "source": [ "!python detect.py --weights yolov3.pt --img 640 --conf 0.25 --source data/images\n", "display.Image(filename='runs/detect/exp/zidane.jpg', width=600)" ], - "execution_count": 3, + "execution_count": 15, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\u001b[34m\u001b[1mdetect: \u001b[0mweights=['yolov3.pt'], source=data/images, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_conf=False, save_crop=False, nosave=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=runs/detect, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, dnn=False\n", - "YOLOv3 🚀 v9.5.0-20-g9d10fe5 torch 1.10.0+cu111 CUDA:0 (A100-SXM4-40GB, 40536MiB)\n", + "YOLOv3 🚀 v9.6.0-0-g7eb23e3 torch 1.10.0+cu111 CUDA:0 (A100-SXM4-40GB, 40536MiB)\n", "\n", "Fusing layers... \n", "Model Summary: 261 layers, 61922845 parameters, 0 gradients\n", "image 1/2 /content/yolov3/data/images/bus.jpg: 640x480 4 persons, 1 bus, 1 tie, Done. (0.020s)\n", "image 2/2 /content/yolov3/data/images/zidane.jpg: 384x640 2 persons, 3 ties, Done. (0.020s)\n", - "Speed: 0.5ms pre-process, 19.8ms inference, 1.2ms NMS per image at shape (1, 3, 640, 640)\n", + "Speed: 0.6ms pre-process, 20.0ms inference, 1.2ms NMS per image at shape (1, 3, 640, 640)\n", "Results saved to \u001b[1mruns/detect/exp\u001b[0m\n" ] } @@ -567,43 +567,42 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "0f4cfe4e-364e-4d79-e0af-8884d89eaacd" + "outputId": "fe3159ef-a2e4-49e3-ec0b-2ef434e9a28e" }, "source": [ "# Run YOLOv3 on COCO val\n", "!python val.py --weights yolov3.pt --data coco.yaml --img 640 --iou 0.65 --half" ], - "execution_count": 5, + "execution_count": 13, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\u001b[34m\u001b[1mval: \u001b[0mdata=/content/yolov3/data/coco.yaml, weights=['yolov3.pt'], batch_size=32, imgsz=640, conf_thres=0.001, iou_thres=0.65, task=val, device=, single_cls=False, augment=False, verbose=False, save_txt=False, save_hybrid=False, save_conf=False, save_json=True, project=runs/val, name=exp, exist_ok=False, half=True, dnn=False\n", - "YOLOv3 🚀 v9.5.0-20-g9d10fe5 torch 1.10.0+cu111 CUDA:0 (A100-SXM4-40GB, 40536MiB)\n", + "YOLOv3 🚀 v9.6.0-0-g7eb23e3 torch 1.10.0+cu111 CUDA:0 (A100-SXM4-40GB, 40536MiB)\n", "\n", "Fusing layers... \n", "Model Summary: 261 layers, 61922845 parameters, 0 gradients\n", - "\u001b[34m\u001b[1mval: \u001b[0mScanning '../datasets/coco/val2017' images and labels...4952 found, 48 missing, 0 empty, 0 corrupted: 100% 5000/5000 [00:00<00:00, 12689.82it/s]\n", - "\u001b[34m\u001b[1mval: \u001b[0mNew cache created: ../datasets/coco/val2017.cache\n", - " Class Images Labels P R mAP@.5 mAP@.5:.95: 100% 157/157 [00:42<00:00, 3.70it/s]\n", + "\u001b[34m\u001b[1mval: \u001b[0mScanning '../datasets/coco/val2017.cache' images and labels... 4952 found, 48 missing, 0 empty, 0 corrupted: 100% 5000/5000 [00:00 Date: Sun, 14 Nov 2021 22:43:14 +0100 Subject: [PATCH 2552/2595] Created using Colaboratory --- tutorial.ipynb | 240 ++++++++++++++++++++++++------------------------- 1 file changed, 120 insertions(+), 120 deletions(-) diff --git a/tutorial.ipynb b/tutorial.ipynb index 4e7049d8..3bc0523c 100644 --- a/tutorial.ipynb +++ b/tutorial.ipynb @@ -402,7 +402,7 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "b15def02-a331-4580-9878-8d06900e296d" + "outputId": "7efd38e6-c41f-4fe3-9864-ce4fa43fbb5b" }, "source": [ "!git clone https://github.com/ultralytics/yolov3 # clone\n", @@ -413,13 +413,13 @@ "from yolov3 import utils\n", "display = utils.notebook_init() # checks" ], - "execution_count": 11, + "execution_count": 24, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ - "YOLOv3 🚀 v9.6.0-0-g7eb23e3 torch 1.10.0+cu111 CUDA:0 (A100-SXM4-40GB, 40536MiB)\n" + "YOLOv3 🚀 v9.6.0-1-g93a2bcc torch 1.10.0+cu111 CUDA:0 (A100-SXM4-40GB, 40536MiB)\n" ] }, { @@ -459,26 +459,26 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "5754dd6d-b5b0-41aa-ce81-7cc7a4c30553" + "outputId": "486202a4-bae2-454f-da62-2c74676a3058" }, "source": [ "!python detect.py --weights yolov3.pt --img 640 --conf 0.25 --source data/images\n", "display.Image(filename='runs/detect/exp/zidane.jpg', width=600)" ], - "execution_count": 15, + "execution_count": 22, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\u001b[34m\u001b[1mdetect: \u001b[0mweights=['yolov3.pt'], source=data/images, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_conf=False, save_crop=False, nosave=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=runs/detect, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, dnn=False\n", - "YOLOv3 🚀 v9.6.0-0-g7eb23e3 torch 1.10.0+cu111 CUDA:0 (A100-SXM4-40GB, 40536MiB)\n", + "YOLOv3 🚀 v9.6.0-1-g93a2bcc torch 1.10.0+cu111 CUDA:0 (A100-SXM4-40GB, 40536MiB)\n", "\n", "Fusing layers... \n", - "Model Summary: 261 layers, 61922845 parameters, 0 gradients\n", - "image 1/2 /content/yolov3/data/images/bus.jpg: 640x480 4 persons, 1 bus, 1 tie, Done. (0.020s)\n", + "Model Summary: 261 layers, 61922845 parameters, 0 gradients, 156.1 GFLOPs\n", + "image 1/2 /content/yolov3/data/images/bus.jpg: 640x480 4 persons, 1 bus, 1 tie, 1 sports ball, Done. (0.020s)\n", "image 2/2 /content/yolov3/data/images/zidane.jpg: 384x640 2 persons, 3 ties, Done. (0.020s)\n", - "Speed: 0.6ms pre-process, 20.0ms inference, 1.2ms NMS per image at shape (1, 3, 640, 640)\n", + "Speed: 0.5ms pre-process, 20.0ms inference, 1.3ms NMS per image at shape (1, 3, 640, 640)\n", "Results saved to \u001b[1mruns/detect/exp\u001b[0m\n" ] } @@ -567,27 +567,27 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "fe3159ef-a2e4-49e3-ec0b-2ef434e9a28e" + "outputId": "15c92efb-05ec-48e0-b9ef-ff34871354c8" }, "source": [ "# Run YOLOv3 on COCO val\n", "!python val.py --weights yolov3.pt --data coco.yaml --img 640 --iou 0.65 --half" ], - "execution_count": 13, + "execution_count": 23, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\u001b[34m\u001b[1mval: \u001b[0mdata=/content/yolov3/data/coco.yaml, weights=['yolov3.pt'], batch_size=32, imgsz=640, conf_thres=0.001, iou_thres=0.65, task=val, device=, single_cls=False, augment=False, verbose=False, save_txt=False, save_hybrid=False, save_conf=False, save_json=True, project=runs/val, name=exp, exist_ok=False, half=True, dnn=False\n", - "YOLOv3 🚀 v9.6.0-0-g7eb23e3 torch 1.10.0+cu111 CUDA:0 (A100-SXM4-40GB, 40536MiB)\n", + "YOLOv3 🚀 v9.6.0-1-g93a2bcc torch 1.10.0+cu111 CUDA:0 (A100-SXM4-40GB, 40536MiB)\n", "\n", "Fusing layers... \n", - "Model Summary: 261 layers, 61922845 parameters, 0 gradients\n", + "Model Summary: 261 layers, 61922845 parameters, 0 gradients, 156.1 GFLOPs\n", "\u001b[34m\u001b[1mval: \u001b[0mScanning '../datasets/coco/val2017.cache' images and labels... 4952 found, 48 missing, 0 empty, 0 corrupted: 100% 5000/5000 [00:00 Date: Sun, 14 Nov 2021 22:48:38 +0100 Subject: [PATCH 2553/2595] Update tutorial.ipynb (#1859) --- tutorial.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorial.ipynb b/tutorial.ipynb index 3bc0523c..1450682b 100644 --- a/tutorial.ipynb +++ b/tutorial.ipynb @@ -1080,4 +1080,4 @@ "outputs": [] } ] -} \ No newline at end of file +} From c35400cffd2abb126db81648d601216f213c2ba7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Nov 2021 12:05:54 +0100 Subject: [PATCH 2554/2595] Bump actions/cache from 2.1.6 to 2.1.7 (#1867) Bumps [actions/cache](https://github.com/actions/cache) from 2.1.6 to 2.1.7. - [Release notes](https://github.com/actions/cache/releases) - [Commits](https://github.com/actions/cache/compare/v2.1.6...v2.1.7) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci-testing.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-testing.yml b/.github/workflows/ci-testing.yml index e7771733..de8e843a 100644 --- a/.github/workflows/ci-testing.yml +++ b/.github/workflows/ci-testing.yml @@ -39,7 +39,7 @@ jobs: python -c "from pip._internal.locations import USER_CACHE_DIR; print('::set-output name=dir::' + USER_CACHE_DIR)" - name: Cache pip - uses: actions/cache@v2.1.6 + uses: actions/cache@v2.1.7 with: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ runner.os }}-${{ matrix.python-version }}-pip-${{ hashFiles('requirements.txt') }} From 9d0e1cf29832ab8e79a1c70bd93bf9b72d52831c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 1 Dec 2021 15:37:56 +0100 Subject: [PATCH 2555/2595] Update requirements.txt (#1869) * Update requirements.txt * Add wandb.errors.UsageError * bug fix --- requirements.txt | 2 +- utils/loggers/__init__.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 22b51fc4..e9843e17 100755 --- a/requirements.txt +++ b/requirements.txt @@ -14,7 +14,7 @@ tqdm>=4.41.0 # Logging ------------------------------------- tensorboard>=2.4.1 -# wandb +wandb # Plotting ------------------------------------ pandas>=1.1.4 diff --git a/utils/loggers/__init__.py b/utils/loggers/__init__.py index bf55fec8..a234ce2c 100644 --- a/utils/loggers/__init__.py +++ b/utils/loggers/__init__.py @@ -24,7 +24,10 @@ try: assert hasattr(wandb, '__version__') # verify package import not local dir if pkg.parse_version(wandb.__version__) >= pkg.parse_version('0.12.2') and RANK in [0, -1]: - wandb_login_success = wandb.login(timeout=30) + try: + wandb_login_success = wandb.login(timeout=30) + except wandb.errors.UsageError: # known non-TTY terminal issue + wandb_login_success = False if not wandb_login_success: wandb = None except (ImportError, AssertionError): From 0f80f2f9054dd06d34c51e73ea1bc5ba808fed18 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 3 Jan 2022 10:33:15 -0800 Subject: [PATCH 2556/2595] [pre-commit.ci] pre-commit suggestions (#1883) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/pre-commit-hooks: v4.0.1 → v4.1.0](https://github.com/pre-commit/pre-commit-hooks/compare/v4.0.1...v4.1.0) - [github.com/asottile/pyupgrade: v2.23.1 → v2.31.0](https://github.com/asottile/pyupgrade/compare/v2.23.1...v2.31.0) - [github.com/PyCQA/isort: 5.9.3 → 5.10.1](https://github.com/PyCQA/isort/compare/5.9.3...5.10.1) - [github.com/PyCQA/flake8: 3.9.2 → 4.0.1](https://github.com/PyCQA/flake8/compare/3.9.2...4.0.1) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 48e752f4..526a5609 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -13,7 +13,7 @@ ci: repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.0.1 + rev: v4.1.0 hooks: - id: end-of-file-fixer - id: trailing-whitespace @@ -24,14 +24,14 @@ repos: - id: check-docstring-first - repo: https://github.com/asottile/pyupgrade - rev: v2.23.1 + rev: v2.31.0 hooks: - id: pyupgrade args: [--py36-plus] name: Upgrade code - repo: https://github.com/PyCQA/isort - rev: 5.9.3 + rev: 5.10.1 hooks: - id: isort name: Sort imports @@ -60,7 +60,7 @@ repos: # - id: yesqa - repo: https://github.com/PyCQA/flake8 - rev: 3.9.2 + rev: 4.0.1 hooks: - id: flake8 name: PEP8 From 0519223a629f0dcf63d7dbc1c2560fe2e1a353ea Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 16 Feb 2022 10:14:23 +0100 Subject: [PATCH 2557/2595] Fix yolov3.yaml remove extra bracket (#1902) * Fix yolov3.yaml remove extra bracket Resolves https://github.com/ultralytics/yolov3/issues/1887#issuecomment-1041135181 * Update yolov3.yaml --- models/yolov3.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/yolov3.yaml b/models/yolov3.yaml index 3d041bb3..8656bb95 100644 --- a/models/yolov3.yaml +++ b/models/yolov3.yaml @@ -28,7 +28,7 @@ backbone: # YOLOv3 head head: [[-1, 1, Bottleneck, [1024, False]], - [-1, 1, Conv, [512, [1, 1]]], + [-1, 1, Conv, [512, 1, 1]], [-1, 1, Conv, [1024, 3, 1]], [-1, 1, Conv, [512, 1, 1]], [-1, 1, Conv, [1024, 3, 1]], # 15 (P5/32-large) From e6507907f89a934de191619297f1fceaf60a4a56 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Mar 2022 11:42:59 +0100 Subject: [PATCH 2558/2595] Bump actions/setup-python from 2 to 3 (#1911) Bumps [actions/setup-python](https://github.com/actions/setup-python) from 2 to 3. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci-testing.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-testing.yml b/.github/workflows/ci-testing.yml index de8e843a..632e24aa 100644 --- a/.github/workflows/ci-testing.yml +++ b/.github/workflows/ci-testing.yml @@ -27,7 +27,7 @@ jobs: steps: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: ${{ matrix.python-version }} From b6f6b5b96552072fc413753a167c0bbcb6de7459 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Mar 2022 11:43:15 +0100 Subject: [PATCH 2559/2595] Bump actions/checkout from 2 to 3 (#1912) Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v2...v3) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci-testing.yml | 2 +- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/rebase.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-testing.yml b/.github/workflows/ci-testing.yml index 632e24aa..3ff7120d 100644 --- a/.github/workflows/ci-testing.yml +++ b/.github/workflows/ci-testing.yml @@ -25,7 +25,7 @@ jobs: # Timeout: https://stackoverflow.com/a/59076067/4521646 timeout-minutes: 50 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v3 with: diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 67f51f0e..8bc88e95 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -22,7 +22,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/rebase.yml b/.github/workflows/rebase.yml index a4db1efb..75c57546 100644 --- a/.github/workflows/rebase.yml +++ b/.github/workflows/rebase.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout the latest code - uses: actions/checkout@v2 + uses: actions/checkout@v3 with: token: ${{ secrets.ACTIONS_TOKEN }} fetch-depth: 0 # otherwise, you will fail to push refs to dest repo From 7093a2b54366fce8e20f0d32732d0f9f4d8a68bd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Thu, 10 Mar 2022 12:59:47 +0100 Subject: [PATCH 2560/2595] PyTorch 1.11.0 compatibility updates (#1914) * PyTorch 1.11.0 compatibility updates Resolves `AttributeError: 'Upsample' object has no attribute 'recompute_scale_factor'` first raised in https://github.com/ultralytics/yolov5/issues/5499 and observed in all CI runs on just-released PyTorch 1.11.0. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update experimental.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- models/experimental.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/models/experimental.py b/models/experimental.py index 81fc9bb2..ab8266a1 100644 --- a/models/experimental.py +++ b/models/experimental.py @@ -94,21 +94,22 @@ def attempt_load(weights, map_location=None, inplace=True, fuse=True): model = Ensemble() for w in weights if isinstance(weights, list) else [weights]: ckpt = torch.load(attempt_download(w), map_location=map_location) # load - if fuse: - model.append(ckpt['ema' if ckpt.get('ema') else 'model'].float().fuse().eval()) # FP32 model - else: - model.append(ckpt['ema' if ckpt.get('ema') else 'model'].float().eval()) # without layer fuse + ckpt = (ckpt['ema'] or ckpt['model']).float() # FP32 model + model.append(ckpt.fuse().eval() if fuse else ckpt.eval()) # fused or un-fused model in eval mode # Compatibility updates for m in model.modules(): - if type(m) in [nn.Hardswish, nn.LeakyReLU, nn.ReLU, nn.ReLU6, nn.SiLU, Detect, Model]: - m.inplace = inplace # pytorch 1.7.0 compatibility - if type(m) is Detect: + t = type(m) + if t in (nn.Hardswish, nn.LeakyReLU, nn.ReLU, nn.ReLU6, nn.SiLU, Detect, Model): + m.inplace = inplace # torch 1.7.0 compatibility + if t is Detect: if not isinstance(m.anchor_grid, list): # new Detect Layer compatibility delattr(m, 'anchor_grid') setattr(m, 'anchor_grid', [torch.zeros(1)] * m.nl) - elif type(m) is Conv: - m._non_persistent_buffers_set = set() # pytorch 1.6.0 compatibility + elif t is Conv: + m._non_persistent_buffers_set = set() # torch 1.6.0 compatibility + elif t is nn.Upsample and not hasattr(m, 'recompute_scale_factor'): + m.recompute_scale_factor = None # torch 1.11.0 compatibility if len(model) == 1: return model[-1] # return model From 9f9e650bf89861574d1356ed6929c52384db6f0c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Mar 2022 10:37:53 +0200 Subject: [PATCH 2561/2595] Bump actions/cache from 2.1.7 to 3 (#1920) Bumps [actions/cache](https://github.com/actions/cache) from 2.1.7 to 3. - [Release notes](https://github.com/actions/cache/releases) - [Commits](https://github.com/actions/cache/compare/v2.1.7...v3) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci-testing.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-testing.yml b/.github/workflows/ci-testing.yml index 3ff7120d..10d6795e 100644 --- a/.github/workflows/ci-testing.yml +++ b/.github/workflows/ci-testing.yml @@ -39,7 +39,7 @@ jobs: python -c "from pip._internal.locations import USER_CACHE_DIR; print('::set-output name=dir::' + USER_CACHE_DIR)" - name: Cache pip - uses: actions/cache@v2.1.7 + uses: actions/cache@v3 with: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ runner.os }}-${{ matrix.python-version }}-pip-${{ hashFiles('requirements.txt') }} From 8a372c340c486236b8b22351277d247ab5b93f8d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 4 Apr 2022 22:29:34 +0200 Subject: [PATCH 2562/2595] [pre-commit.ci] pre-commit suggestions (#1924) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/asottile/pyupgrade: v2.31.0 → v2.31.1](https://github.com/asottile/pyupgrade/compare/v2.31.0...v2.31.1) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 526a5609..748f9d71 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -24,7 +24,7 @@ repos: - id: check-docstring-first - repo: https://github.com/asottile/pyupgrade - rev: v2.31.0 + rev: v2.31.1 hooks: - id: pyupgrade args: [--py36-plus] From c2c113e5eb49f009cafbaeaeb0e2b5a8b990a38c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Apr 2022 10:25:41 +0200 Subject: [PATCH 2563/2595] Bump actions/stale from 4 to 5 (#1927) Bumps [actions/stale](https://github.com/actions/stale) from 4 to 5. - [Release notes](https://github.com/actions/stale/releases) - [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/stale/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/stale dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 330184e8..008ca0fe 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -9,7 +9,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v4 + - uses: actions/stale@v5 with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-message: | From ae37b2daa74c599d640a7b9698eeafd64265f999 Mon Sep 17 00:00:00 2001 From: Sahil Chachra <37156032+SahilChachra@users.noreply.github.com> Date: Mon, 11 Apr 2022 16:10:56 +0530 Subject: [PATCH 2564/2595] Fix ONNX inference code (#1928) --- models/common.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/models/common.py b/models/common.py index 82b348ae..a76fc628 100644 --- a/models/common.py +++ b/models/common.py @@ -314,9 +314,11 @@ class DetectMultiBackend(nn.Module): net = cv2.dnn.readNetFromONNX(w) elif onnx: # ONNX Runtime LOGGER.info(f'Loading {w} for ONNX Runtime inference...') - check_requirements(('onnx', 'onnxruntime-gpu' if torch.has_cuda else 'onnxruntime')) + cuda = torch.cuda.is_available() + check_requirements(('onnx', 'onnxruntime-gpu' if cuda else 'onnxruntime')) import onnxruntime - session = onnxruntime.InferenceSession(w, None) + providers = ['CUDAExecutionProvider', 'CPUExecutionProvider'] if cuda else ['CPUExecutionProvider'] + session = onnxruntime.InferenceSession(w, providers=providers) else: # TensorFlow model (TFLite, pb, saved_model) import tensorflow as tf if pb: # https://www.tensorflow.org/guide/migrate#a_graphpb_or_graphpbtxt From f212505c93c5ddd145705dc50e1dc3e872d67b51 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Apr 2022 15:07:16 -0700 Subject: [PATCH 2565/2595] Bump cirrus-actions/rebase from 1.5 to 1.6 (#1929) Bumps [cirrus-actions/rebase](https://github.com/cirrus-actions/rebase) from 1.5 to 1.6. - [Release notes](https://github.com/cirrus-actions/rebase/releases) - [Commits](https://github.com/cirrus-actions/rebase/compare/1.5...1.6) --- updated-dependencies: - dependency-name: cirrus-actions/rebase dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/rebase.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rebase.yml b/.github/workflows/rebase.yml index 75c57546..d79d5cfb 100644 --- a/.github/workflows/rebase.yml +++ b/.github/workflows/rebase.yml @@ -16,6 +16,6 @@ jobs: token: ${{ secrets.ACTIONS_TOKEN }} fetch-depth: 0 # otherwise, you will fail to push refs to dest repo - name: Automatic Rebase - uses: cirrus-actions/rebase@1.5 + uses: cirrus-actions/rebase@1.6 env: GITHUB_TOKEN: ${{ secrets.ACTIONS_TOKEN }} From d58ba5e7a74256c8bd28ed0a06ec8339441f71ba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 1 May 2022 22:25:22 -0700 Subject: [PATCH 2566/2595] Bump github/codeql-action from 1 to 2 (#1939) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 1 to 2. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/v1...v2) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql-analysis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 8bc88e95..b6f75109 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -26,7 +26,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v1 + uses: github/codeql-action/init@v2 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -37,7 +37,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@v1 + uses: github/codeql-action/autobuild@v2 # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -51,4 +51,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + uses: github/codeql-action/analyze@v2 From 3508a982f56779d43b5f5d49d5b63766c82d60ba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 May 2022 10:49:39 +0200 Subject: [PATCH 2567/2595] Bump cirrus-actions/rebase from 1.6 to 1.7 (#1944) Bumps [cirrus-actions/rebase](https://github.com/cirrus-actions/rebase) from 1.6 to 1.7. - [Release notes](https://github.com/cirrus-actions/rebase/releases) - [Commits](https://github.com/cirrus-actions/rebase/compare/1.6...1.7) --- updated-dependencies: - dependency-name: cirrus-actions/rebase dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/rebase.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rebase.yml b/.github/workflows/rebase.yml index d79d5cfb..a4dc9e50 100644 --- a/.github/workflows/rebase.yml +++ b/.github/workflows/rebase.yml @@ -16,6 +16,6 @@ jobs: token: ${{ secrets.ACTIONS_TOKEN }} fetch-depth: 0 # otherwise, you will fail to push refs to dest repo - name: Automatic Rebase - uses: cirrus-actions/rebase@1.6 + uses: cirrus-actions/rebase@1.7 env: GITHUB_TOKEN: ${{ secrets.ACTIONS_TOKEN }} From 0aa65efcc0fbb9067cf0b109f1d9f4f7fe14a7ed Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jun 2022 11:41:14 +0200 Subject: [PATCH 2568/2595] Bump actions/setup-python from 3 to 4 (#1956) Bumps [actions/setup-python](https://github.com/actions/setup-python) from 3 to 4. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci-testing.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-testing.yml b/.github/workflows/ci-testing.yml index 10d6795e..80eab592 100644 --- a/.github/workflows/ci-testing.yml +++ b/.github/workflows/ci-testing.yml @@ -27,7 +27,7 @@ jobs: steps: - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v3 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} From 7ec96149612c396b130c7fea5bb1f7603752e55e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 29 Jun 2022 18:07:06 +0200 Subject: [PATCH 2569/2595] Update loss.py (#1959) * Update loss.py * Update metrics.py * Update loss.py --- utils/loss.py | 88 +++++++++++++++++++++++++++--------------------- utils/metrics.py | 44 +++++++++++------------- 2 files changed, 70 insertions(+), 62 deletions(-) diff --git a/utils/loss.py b/utils/loss.py index dfde60ad..1f38c362 100644 --- a/utils/loss.py +++ b/utils/loss.py @@ -7,7 +7,7 @@ import torch import torch.nn as nn from utils.metrics import bbox_iou -from utils.torch_utils import is_parallel +from utils.torch_utils import de_parallel def smooth_BCE(eps=0.1): # https://github.com/ultralytics/yolov3/issues/238#issuecomment-598028441 @@ -89,9 +89,10 @@ class QFocalLoss(nn.Module): class ComputeLoss: + sort_obj_iou = False + # Compute losses def __init__(self, model, autobalance=False): - self.sort_obj_iou = False device = next(model.parameters()).device # get model device h = model.hyp # hyperparameters @@ -107,46 +108,53 @@ class ComputeLoss: if g > 0: BCEcls, BCEobj = FocalLoss(BCEcls, g), FocalLoss(BCEobj, g) - det = model.module.model[-1] if is_parallel(model) else model.model[-1] # Detect() module - self.balance = {3: [4.0, 1.0, 0.4]}.get(det.nl, [4.0, 1.0, 0.25, 0.06, 0.02]) # P3-P7 - self.ssi = list(det.stride).index(16) if autobalance else 0 # stride 16 index + m = de_parallel(model).model[-1] # Detect() module + self.balance = {3: [4.0, 1.0, 0.4]}.get(m.nl, [4.0, 1.0, 0.25, 0.06, 0.02]) # P3-P7 + self.ssi = list(m.stride).index(16) if autobalance else 0 # stride 16 index self.BCEcls, self.BCEobj, self.gr, self.hyp, self.autobalance = BCEcls, BCEobj, 1.0, h, autobalance - for k in 'na', 'nc', 'nl', 'anchors': - setattr(self, k, getattr(det, k)) + self.na = m.na # number of anchors + self.nc = m.nc # number of classes + self.nl = m.nl # number of layers + self.anchors = m.anchors + self.device = device - def __call__(self, p, targets): # predictions, targets, model - device = targets.device - lcls, lbox, lobj = torch.zeros(1, device=device), torch.zeros(1, device=device), torch.zeros(1, device=device) + def __call__(self, p, targets): # predictions, targets + lcls = torch.zeros(1, device=self.device) # class loss + lbox = torch.zeros(1, device=self.device) # box loss + lobj = torch.zeros(1, device=self.device) # object loss tcls, tbox, indices, anchors = self.build_targets(p, targets) # targets # Losses for i, pi in enumerate(p): # layer index, layer predictions b, a, gj, gi = indices[i] # image, anchor, gridy, gridx - tobj = torch.zeros_like(pi[..., 0], device=device) # target obj + tobj = torch.zeros(pi.shape[:4], dtype=pi.dtype, device=self.device) # target obj n = b.shape[0] # number of targets if n: - ps = pi[b, a, gj, gi] # prediction subset corresponding to targets + # pxy, pwh, _, pcls = pi[b, a, gj, gi].tensor_split((2, 4, 5), dim=1) # faster, requires torch 1.8.0 + pxy, pwh, _, pcls = pi[b, a, gj, gi].split((2, 2, 1, self.nc), 1) # target-subset of predictions # Regression - pxy = ps[:, :2].sigmoid() * 2 - 0.5 - pwh = (ps[:, 2:4].sigmoid() * 2) ** 2 * anchors[i] + pxy = pxy.sigmoid() * 2 - 0.5 + pwh = (pwh.sigmoid() * 2) ** 2 * anchors[i] pbox = torch.cat((pxy, pwh), 1) # predicted box - iou = bbox_iou(pbox.T, tbox[i], x1y1x2y2=False, CIoU=True) # iou(prediction, target) + iou = bbox_iou(pbox, tbox[i], CIoU=True).squeeze() # iou(prediction, target) lbox += (1.0 - iou).mean() # iou loss # Objectness - score_iou = iou.detach().clamp(0).type(tobj.dtype) + iou = iou.detach().clamp(0).type(tobj.dtype) if self.sort_obj_iou: - sort_id = torch.argsort(score_iou) - b, a, gj, gi, score_iou = b[sort_id], a[sort_id], gj[sort_id], gi[sort_id], score_iou[sort_id] - tobj[b, a, gj, gi] = (1.0 - self.gr) + self.gr * score_iou # iou ratio + j = iou.argsort() + b, a, gj, gi, iou = b[j], a[j], gj[j], gi[j], iou[j] + if self.gr < 1: + iou = (1.0 - self.gr) + self.gr * iou + tobj[b, a, gj, gi] = iou # iou ratio # Classification if self.nc > 1: # cls loss (only if multiple classes) - t = torch.full_like(ps[:, 5:], self.cn, device=device) # targets + t = torch.full_like(pcls, self.cn, device=self.device) # targets t[range(n), tcls[i]] = self.cp - lcls += self.BCEcls(ps[:, 5:], t) # BCE + lcls += self.BCEcls(pcls, t) # BCE # Append targets to text file # with open('targets.txt', 'a') as file: @@ -170,25 +178,31 @@ class ComputeLoss: # Build targets for compute_loss(), input targets(image,class,x,y,w,h) na, nt = self.na, targets.shape[0] # number of anchors, targets tcls, tbox, indices, anch = [], [], [], [] - gain = torch.ones(7, device=targets.device) # normalized to gridspace gain - ai = torch.arange(na, device=targets.device).float().view(na, 1).repeat(1, nt) # same as .repeat_interleave(nt) - targets = torch.cat((targets.repeat(na, 1, 1), ai[:, :, None]), 2) # append anchor indices + gain = torch.ones(7, device=self.device) # normalized to gridspace gain + ai = torch.arange(na, device=self.device).float().view(na, 1).repeat(1, nt) # same as .repeat_interleave(nt) + targets = torch.cat((targets.repeat(na, 1, 1), ai[..., None]), 2) # append anchor indices g = 0.5 # bias - off = torch.tensor([[0, 0], - [1, 0], [0, 1], [-1, 0], [0, -1], # j,k,l,m - # [1, 1], [1, -1], [-1, 1], [-1, -1], # jk,jm,lk,lm - ], device=targets.device).float() * g # offsets + off = torch.tensor( + [ + [0, 0], + [1, 0], + [0, 1], + [-1, 0], + [0, -1], # j,k,l,m + # [1, 1], [1, -1], [-1, 1], [-1, -1], # jk,jm,lk,lm + ], + device=self.device).float() * g # offsets for i in range(self.nl): - anchors = self.anchors[i] - gain[2:6] = torch.tensor(p[i].shape)[[3, 2, 3, 2]] # xyxy gain + anchors, shape = self.anchors[i], p[i].shape + gain[2:6] = torch.tensor(shape)[[3, 2, 3, 2]] # xyxy gain # Match targets to anchors - t = targets * gain + t = targets * gain # shape(3,n,7) if nt: # Matches - r = t[:, :, 4:6] / anchors[:, None] # wh ratio + r = t[..., 4:6] / anchors[:, None] # wh ratio j = torch.max(r, 1 / r).max(2)[0] < self.hyp['anchor_t'] # compare # j = wh_iou(anchors, t[:, 4:6]) > model.hyp['iou_t'] # iou(3,n)=wh_iou(anchors(3,2), gwh(n,2)) t = t[j] # filter @@ -206,15 +220,13 @@ class ComputeLoss: offsets = 0 # Define - b, c = t[:, :2].long().T # image, class - gxy = t[:, 2:4] # grid xy - gwh = t[:, 4:6] # grid wh + bc, gxy, gwh, a = t.chunk(4, 1) # (image, class), grid xy, grid wh, anchors + a, (b, c) = a.long().view(-1), bc.long().T # anchors, image, class gij = (gxy - offsets).long() - gi, gj = gij.T # grid xy indices + gi, gj = gij.T # grid indices # Append - a = t[:, 6].long() # anchor indices - indices.append((b, a, gj.clamp_(0, gain[3] - 1), gi.clamp_(0, gain[2] - 1))) # image, anchor, grid indices + indices.append((b, a, gj.clamp_(0, shape[2] - 1), gi.clamp_(0, shape[3] - 1))) # image, anchor, grid tbox.append(torch.cat((gxy - gij, gwh), 1)) # box anch.append(anchors[a]) # anchors tcls.append(c) # class diff --git a/utils/metrics.py b/utils/metrics.py index c8fcac5f..90490955 100644 --- a/utils/metrics.py +++ b/utils/metrics.py @@ -189,49 +189,45 @@ class ConfusionMatrix: print(' '.join(map(str, self.matrix[i]))) -def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False, DIoU=False, CIoU=False, eps=1e-7): - # Returns the IoU of box1 to box2. box1 is 4, box2 is nx4 - box2 = box2.T +def bbox_iou(box1, box2, xywh=True, GIoU=False, DIoU=False, CIoU=False, eps=1e-7): + # Returns Intersection over Union (IoU) of box1(1,4) to box2(n,4) # Get the coordinates of bounding boxes - if x1y1x2y2: # x1, y1, x2, y2 = box1 - b1_x1, b1_y1, b1_x2, b1_y2 = box1[0], box1[1], box1[2], box1[3] - b2_x1, b2_y1, b2_x2, b2_y2 = box2[0], box2[1], box2[2], box2[3] - else: # transform from xywh to xyxy - b1_x1, b1_x2 = box1[0] - box1[2] / 2, box1[0] + box1[2] / 2 - b1_y1, b1_y2 = box1[1] - box1[3] / 2, box1[1] + box1[3] / 2 - b2_x1, b2_x2 = box2[0] - box2[2] / 2, box2[0] + box2[2] / 2 - b2_y1, b2_y2 = box2[1] - box2[3] / 2, box2[1] + box2[3] / 2 + if xywh: # transform from xywh to xyxy + (x1, y1, w1, h1), (x2, y2, w2, h2) = box1.chunk(4, 1), box2.chunk(4, 1) + w1_, h1_, w2_, h2_ = w1 / 2, h1 / 2, w2 / 2, h2 / 2 + b1_x1, b1_x2, b1_y1, b1_y2 = x1 - w1_, x1 + w1_, y1 - h1_, y1 + h1_ + b2_x1, b2_x2, b2_y1, b2_y2 = x2 - w2_, x2 + w2_, y2 - h2_, y2 + h2_ + else: # x1, y1, x2, y2 = box1 + b1_x1, b1_y1, b1_x2, b1_y2 = box1.chunk(4, 1) + b2_x1, b2_y1, b2_x2, b2_y2 = box2.chunk(4, 1) + w1, h1 = b1_x2 - b1_x1, b1_y2 - b1_y1 + eps + w2, h2 = b2_x2 - b2_x1, b2_y2 - b2_y1 + eps # Intersection area inter = (torch.min(b1_x2, b2_x2) - torch.max(b1_x1, b2_x1)).clamp(0) * \ (torch.min(b1_y2, b2_y2) - torch.max(b1_y1, b2_y1)).clamp(0) # Union Area - w1, h1 = b1_x2 - b1_x1, b1_y2 - b1_y1 + eps - w2, h2 = b2_x2 - b2_x1, b2_y2 - b2_y1 + eps union = w1 * h1 + w2 * h2 - inter + eps + # IoU iou = inter / union - if GIoU or DIoU or CIoU: + if CIoU or DIoU or GIoU: cw = torch.max(b1_x2, b2_x2) - torch.min(b1_x1, b2_x1) # convex (smallest enclosing box) width ch = torch.max(b1_y2, b2_y2) - torch.min(b1_y1, b2_y1) # convex height if CIoU or DIoU: # Distance or Complete IoU https://arxiv.org/abs/1911.08287v1 c2 = cw ** 2 + ch ** 2 + eps # convex diagonal squared - rho2 = ((b2_x1 + b2_x2 - b1_x1 - b1_x2) ** 2 + - (b2_y1 + b2_y2 - b1_y1 - b1_y2) ** 2) / 4 # center distance squared - if DIoU: - return iou - rho2 / c2 # DIoU - elif CIoU: # https://github.com/Zzh-tju/DIoU-SSD-pytorch/blob/master/utils/box/box_utils.py#L47 + rho2 = ((b2_x1 + b2_x2 - b1_x1 - b1_x2) ** 2 + (b2_y1 + b2_y2 - b1_y1 - b1_y2) ** 2) / 4 # center dist ** 2 + if CIoU: # https://github.com/Zzh-tju/DIoU-SSD-pytorch/blob/master/utils/box/box_utils.py#L47 v = (4 / math.pi ** 2) * torch.pow(torch.atan(w2 / h2) - torch.atan(w1 / h1), 2) with torch.no_grad(): alpha = v / (v - iou + (1 + eps)) return iou - (rho2 / c2 + v * alpha) # CIoU - else: # GIoU https://arxiv.org/pdf/1902.09630.pdf - c_area = cw * ch + eps # convex area - return iou - (c_area - union) / c_area # GIoU - else: - return iou # IoU + return iou - rho2 / c2 # DIoU + c_area = cw * ch + eps # convex area + return iou - (c_area - union) / c_area # GIoU https://arxiv.org/pdf/1902.09630.pdf + return iou # IoU def box_iou(box1, box2): From b3244d05cdb1934df47fee53b6f5b99b43fcf99b Mon Sep 17 00:00:00 2001 From: alex-fdias <73295477+alex-fdias@users.noreply.github.com> Date: Wed, 29 Jun 2022 17:18:08 +0100 Subject: [PATCH 2570/2595] Fix downloading file by URL (Windows) (#1958) as_posix() needed so that backslashes are output as forward slashes in the URL string (Windows) Co-authored-by: Glenn Jocher --- utils/general.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/general.py b/utils/general.py index 820e35d9..8331e7db 100755 --- a/utils/general.py +++ b/utils/general.py @@ -343,7 +343,7 @@ def check_file(file, suffix=''): if Path(file).is_file() or file == '': # exists return file elif file.startswith(('http:/', 'https:/')): # download - url = str(Path(file)).replace(':/', '://') # Pathlib turns :// -> :/ + url = str(Path(file).as_posix()).replace(':/', '://') # Pathlib turns :// -> :/ file = Path(urllib.parse.unquote(file).split('?')[0]).name # '%2F' to '/', split https://url.com/file.txt?auth if Path(file).is_file(): print(f'Found {url} locally at {file}') # file already exists From 92c3bd7a4e997e215c7b3ec8bd5a3f9337d39776 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 4 Jul 2022 22:09:35 +0200 Subject: [PATCH 2571/2595] [pre-commit.ci] pre-commit suggestions (#1961) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/pre-commit-hooks: v4.1.0 → v4.3.0](https://github.com/pre-commit/pre-commit-hooks/compare/v4.1.0...v4.3.0) - [github.com/asottile/pyupgrade: v2.31.1 → v2.34.0](https://github.com/asottile/pyupgrade/compare/v2.31.1...v2.34.0) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 748f9d71..0f9f9395 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -13,7 +13,7 @@ ci: repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.1.0 + rev: v4.3.0 hooks: - id: end-of-file-fixer - id: trailing-whitespace @@ -24,7 +24,7 @@ repos: - id: check-docstring-first - repo: https://github.com/asottile/pyupgrade - rev: v2.31.1 + rev: v2.34.0 hooks: - id: pyupgrade args: [--py36-plus] From 0bbd0558ed842afe49472b5e3fe45e7483703584 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 3 Sep 2022 03:22:09 +0200 Subject: [PATCH 2572/2595] Update ci-testing.yml remove macos-latest (#1969) Update ci-testing.yml --- .github/workflows/ci-testing.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci-testing.yml b/.github/workflows/ci-testing.yml index 80eab592..a7aa35c2 100644 --- a/.github/workflows/ci-testing.yml +++ b/.github/workflows/ci-testing.yml @@ -18,7 +18,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ ubuntu-latest, macos-latest, windows-latest ] + os: [ ubuntu-latest, windows-latest ] python-version: [ 3.9 ] model: [ 'yolov3-tiny' ] # models to test From 3f855edca51d0fab47badb781fc1029b7448d48d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 24 Sep 2022 13:15:34 +0200 Subject: [PATCH 2573/2595] Update requirements.txt (#1973) --- requirements.txt | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/requirements.txt b/requirements.txt index e9843e17..7c01cc06 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,36 +1,47 @@ -# pip install -r requirements.txt +# YOLOv3 requirements +# Usage: pip install -r requirements.txt # Base ---------------------------------------- matplotlib>=3.2.2 numpy>=1.18.5 -opencv-python>=4.1.2 +opencv-python>=4.1.1 Pillow>=7.1.2 PyYAML>=5.3.1 requests>=2.23.0 scipy>=1.4.1 torch>=1.7.0 torchvision>=0.8.1 -tqdm>=4.41.0 +tqdm>=4.64.0 +# protobuf<=3.20.1 # https://github.com/ultralytics/yolov5/issues/8012 # Logging ------------------------------------- tensorboard>=2.4.1 -wandb +# wandb +# clearml # Plotting ------------------------------------ pandas>=1.1.4 seaborn>=0.11.0 # Export -------------------------------------- -# coremltools>=4.1 # CoreML export +# coremltools>=6.0 # CoreML export # onnx>=1.9.0 # ONNX export -# onnx-simplifier>=0.3.6 # ONNX simplifier -# scikit-learn==0.19.2 # CoreML quantization -# tensorflow>=2.4.1 # TFLite export +# onnx-simplifier>=0.4.1 # ONNX simplifier +# nvidia-pyindex # TensorRT export +# nvidia-tensorrt # TensorRT export +# scikit-learn<=1.1.2 # CoreML quantization +# tensorflow>=2.4.1 # TF exports (-cpu, -aarch64, -macos) # tensorflowjs>=3.9.0 # TF.js export +# openvino-dev # OpenVINO export + +# Deploy -------------------------------------- +# tritonclient[all]~=2.24.0 # Extras -------------------------------------- +ipython # interactive notebook +psutil # system utilization +thop>=0.1.1 # FLOPs computation +# mss # screenshots # albumentations>=1.0.3 -# Cython # for pycocotools https://github.com/cocodataset/cocoapi/issues/172 # pycocotools>=2.0 # COCO mAP # roboflow -thop # FLOPs computation From b0b071dda818dc30265470617554c4c7e790037a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Sep 2022 12:38:40 +0200 Subject: [PATCH 2574/2595] Bump actions/stale from 5 to 6 (#1975) Bumps [actions/stale](https://github.com/actions/stale) from 5 to 6. - [Release notes](https://github.com/actions/stale/releases) - [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/stale/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/stale dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 008ca0fe..94d649f0 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -9,7 +9,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v5 + - uses: actions/stale@v6 with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-message: | From 88a803126b1e55e01b295bea887001bd74a0e09b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 16 Oct 2022 11:45:19 +0200 Subject: [PATCH 2575/2595] Update ci-testing.yml --- .github/workflows/ci-testing.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci-testing.yml b/.github/workflows/ci-testing.yml index a7aa35c2..1210400e 100644 --- a/.github/workflows/ci-testing.yml +++ b/.github/workflows/ci-testing.yml @@ -51,7 +51,6 @@ jobs: run: | python -m pip install --upgrade pip pip install -qr requirements.txt -f https://download.pytorch.org/whl/cpu/torch_stable.html - pip install -q onnx tensorflow-cpu keras==2.6.0 # wandb # extras python --version pip --version pip list @@ -83,7 +82,7 @@ jobs: # Export python models/yolo.py --cfg ${{ matrix.model }}.yaml # build PyTorch model # python models/tf.py --weights ${{ matrix.model }}.pt # build TensorFlow model (YOLOv3 not supported) - python export.py --img 64 --batch 1 --weights runs/train/exp/weights/last.pt --include torchscript onnx # export + python export.py --img 64 --batch 1 --weights runs/train/exp/weights/last.pt --include torchscript # export # Python python - < Date: Sun, 16 Oct 2022 11:50:15 +0200 Subject: [PATCH 2576/2595] Update requirements.txt (#1980) --- requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 7c01cc06..f78e7ee0 100755 --- a/requirements.txt +++ b/requirements.txt @@ -9,15 +9,15 @@ Pillow>=7.1.2 PyYAML>=5.3.1 requests>=2.23.0 scipy>=1.4.1 -torch>=1.7.0 +torch>=1.7.0 # see https://pytorch.org/get-started/locally/ (recommended) torchvision>=0.8.1 tqdm>=4.64.0 # protobuf<=3.20.1 # https://github.com/ultralytics/yolov5/issues/8012 # Logging ------------------------------------- tensorboard>=2.4.1 -# wandb # clearml +# comet # Plotting ------------------------------------ pandas>=1.1.4 From dd838e25863169d0de4f10631a609350658efb69 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 16 Oct 2022 11:55:23 +0200 Subject: [PATCH 2577/2595] Update ci-testing.yml (#1981) --- .github/workflows/ci-testing.yml | 126 ++++++++++++++++--------------- 1 file changed, 66 insertions(+), 60 deletions(-) diff --git a/.github/workflows/ci-testing.yml b/.github/workflows/ci-testing.yml index 1210400e..b0a6bfd9 100644 --- a/.github/workflows/ci-testing.yml +++ b/.github/workflows/ci-testing.yml @@ -1,93 +1,99 @@ # YOLOv3 🚀 by Ultralytics, GPL-3.0 license +# YOLOv3 Continuous Integration (CI) GitHub Actions tests -name: CI CPU testing +name: YOLOv3 CI -on: # https://help.github.com/en/actions/reference/events-that-trigger-workflows +on: push: branches: [ master ] pull_request: - # The branches below must be a subset of the branches above branches: [ master ] schedule: - - cron: '0 0 * * *' # Runs at 00:00 UTC every day + - cron: '0 0 * * *' # runs at 00:00 UTC every day jobs: - cpu-tests: - + Tests: + timeout-minutes: 60 runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: - os: [ ubuntu-latest, windows-latest ] - python-version: [ 3.9 ] - model: [ 'yolov3-tiny' ] # models to test - - # Timeout: https://stackoverflow.com/a/59076067/4521646 - timeout-minutes: 50 + os: [ ubuntu-latest, windows-latest ] # macos-latest bug https://github.com/ultralytics/yolov5/pull/9049 + python-version: [ '3.10' ] + model: [ yolov3-tiny ] + include: + - os: ubuntu-latest + python-version: '3.7' # '3.6.8' min + model: yolov3-tiny + - os: ubuntu-latest + python-version: '3.8' + model: yolov3-tiny + - os: ubuntu-latest + python-version: '3.9' + model: yolov3-tiny + - os: ubuntu-latest + python-version: '3.8' # torch 1.7.0 requires python >=3.6, <=3.8 + model: yolov3-tiny + torch: '1.7.0' # min torch version CI https://pypi.org/project/torchvision/ steps: - uses: actions/checkout@v3 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v4 + - uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - - # Note: This uses an internal pip API and may not always work - # https://github.com/actions/cache/blob/master/examples.md#multiple-oss-in-a-workflow - - name: Get pip cache + - name: Get cache dir + # https://github.com/actions/cache/blob/master/examples.md#multiple-oss-in-a-workflow id: pip-cache - run: | - python -c "from pip._internal.locations import USER_CACHE_DIR; print('::set-output name=dir::' + USER_CACHE_DIR)" - + run: echo "::set-output name=dir::$(pip cache dir)" - name: Cache pip uses: actions/cache@v3 with: path: ${{ steps.pip-cache.outputs.dir }} key: ${{ runner.os }}-${{ matrix.python-version }}-pip-${{ hashFiles('requirements.txt') }} - restore-keys: | - ${{ runner.os }}-${{ matrix.python-version }}-pip- - - # Known Keras 2.7.0 issue: https://github.com/ultralytics/yolov5/pull/5486 - - name: Install dependencies + restore-keys: ${{ runner.os }}-${{ matrix.python-version }}-pip- + - name: Install requirements run: | - python -m pip install --upgrade pip - pip install -qr requirements.txt -f https://download.pytorch.org/whl/cpu/torch_stable.html + python -m pip install --upgrade pip wheel + if [ "${{ matrix.torch }}" == "1.7.0" ]; then + pip install -r requirements.txt torch==1.7.0 torchvision==0.8.1 --extra-index-url https://download.pytorch.org/whl/cpu + else + pip install -r requirements.txt --extra-index-url https://download.pytorch.org/whl/cpu + fi + shell: bash # for Windows compatibility + - name: Check environment + run: | + python -c "import utils; utils.notebook_init()" + echo "RUNNER_OS is ${{ runner.os }}" + echo "GITHUB_EVENT_NAME is ${{ github.event_name }}" + echo "GITHUB_WORKFLOW is ${{ github.workflow }}" + echo "GITHUB_ACTOR is ${{ github.actor }}" + echo "GITHUB_REPOSITORY is ${{ github.repository }}" + echo "GITHUB_REPOSITORY_OWNER is ${{ github.repository_owner }}" python --version pip --version pip list - shell: bash - - # - name: W&B login - # run: wandb login 345011b3fb26dc8337fd9b20e53857c1d403f2aa - - - name: Download data - run: | - # curl -L -o tmp.zip https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip - # unzip -q tmp.zip -d ../ - # rm tmp.zip - - - name: Tests workflow + - name: Test detection + shell: bash # for Windows compatibility run: | # export PYTHONPATH="$PWD" # to run '$ python *.py' files in subdirectories - di=cpu # device - - # Train - python train.py --img 64 --batch 32 --weights ${{ matrix.model }}.pt --cfg ${{ matrix.model }}.yaml --epochs 1 --device $di - # Val - python val.py --img 64 --batch 32 --weights ${{ matrix.model }}.pt --device $di - python val.py --img 64 --batch 32 --weights runs/train/exp/weights/last.pt --device $di - # Detect - python detect.py --weights ${{ matrix.model }}.pt --device $di - python detect.py --weights runs/train/exp/weights/last.pt --device $di - python hubconf.py # hub - # Export - python models/yolo.py --cfg ${{ matrix.model }}.yaml # build PyTorch model - # python models/tf.py --weights ${{ matrix.model }}.pt # build TensorFlow model (YOLOv3 not supported) - python export.py --img 64 --batch 1 --weights runs/train/exp/weights/last.pt --include torchscript # export - # Python + m=${{ matrix.model }} # official weights + b=runs/train/exp/weights/best # best.pt checkpoint + python train.py --imgsz 64 --batch 32 --weights $m.pt --cfg $m.yaml --epochs 1 --device cpu # train + for d in cpu; do # devices + for w in $m $b; do # weights + python val.py --imgsz 64 --batch 32 --weights $w.pt --device $d # val + python detect.py --imgsz 64 --weights $w.pt --device $d # detect + done + done + python hubconf.py --model $m # hub + # python models/tf.py --weights $m.pt # build TF model + python models/yolo.py --cfg $m.yaml # build PyTorch model + python export.py --weights $m.pt --img 64 --include torchscript # export python - < Date: Mon, 28 Nov 2022 04:43:50 +0330 Subject: [PATCH 2578/2595] fix tflite converter bug for tiny models. (#1990) * fix tflite converter bug for tiny models. * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- models/tf.py | 163 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 163 insertions(+) diff --git a/models/tf.py b/models/tf.py index 4076c9ea..956ef2bd 100644 --- a/models/tf.py +++ b/models/tf.py @@ -16,6 +16,8 @@ import sys from copy import deepcopy from pathlib import Path +from packaging import version + FILE = Path(__file__).resolve() ROOT = FILE.parents[1] # root directory if str(ROOT) not in sys.path: @@ -26,6 +28,10 @@ import numpy as np import tensorflow as tf import torch import torch.nn as nn +from keras import backend +from keras.engine.base_layer import Layer +from keras.engine.input_spec import InputSpec +from keras.utils import conv_utils from tensorflow import keras from models.common import C3, SPP, SPPF, Bottleneck, BottleneckCSP, Concat, Conv, DWConv, Focus, autopad @@ -34,6 +40,9 @@ from models.yolo import Detect from utils.activations import SiLU from utils.general import LOGGER, make_divisible, print_args +# isort: off +from tensorflow.python.util.tf_export import keras_export + class TFBN(keras.layers.Layer): # TensorFlow BatchNormalization wrapper @@ -50,6 +59,29 @@ class TFBN(keras.layers.Layer): return self.bn(inputs) +class TFMaxPool2d(keras.layers.Layer): + # TensorFlow MAX Pooling + def __init__(self, k, s, p, w=None): + super().__init__() + self.pool = keras.layers.MaxPool2D(pool_size=k, strides=s, padding='valid') + + def call(self, inputs): + return self.pool(inputs) + + +class TFZeroPad2d(keras.layers.Layer): + # TensorFlow MAX Pooling + def __init__(self, p, w=None): + super().__init__() + if version.parse(tf.__version__) < version.parse('2.11.0'): + self.zero_pad = ZeroPadding2D(padding=p) + else: + self.zero_pad = keras.layers.ZeroPadding2D(padding=((p[0], p[1]), (p[2], p[3]))) + + def call(self, inputs): + return self.zero_pad(inputs) + + class TFPad(keras.layers.Layer): def __init__(self, pad): super().__init__() @@ -444,6 +476,137 @@ def run(weights=ROOT / 'yolov3.pt', # weights path LOGGER.info('PyTorch, TensorFlow and Keras models successfully verified.\nUse export.py for TF model export.') +@keras_export("keras.layers.ZeroPadding2D") +class ZeroPadding2D(Layer): + """Zero-padding layer for 2D input (e.g. picture). + + This layer can add rows and columns of zeros + at the top, bottom, left and right side of an image tensor. + + Examples: + + >>> input_shape = (1, 1, 2, 2) + >>> x = np.arange(np.prod(input_shape)).reshape(input_shape) + >>> print(x) + [[[[0 1] + [2 3]]]] + >>> y = tf.keras.layers.ZeroPadding2D(padding=1)(x) + >>> print(y) + tf.Tensor( + [[[[0 0] + [0 0] + [0 0] + [0 0]] + [[0 0] + [0 1] + [2 3] + [0 0]] + [[0 0] + [0 0] + [0 0] + [0 0]]]], shape=(1, 3, 4, 2), dtype=int64) + + Args: + padding: Int, or tuple of 2 ints, or tuple of 2 tuples of 2 ints. + - If int: the same symmetric padding + is applied to height and width. + - If tuple of 2 ints: + interpreted as two different + symmetric padding values for height and width: + `(symmetric_height_pad, symmetric_width_pad)`. + - If tuple of 2 tuples of 2 ints: + interpreted as + `((top_pad, bottom_pad), (left_pad, right_pad))` + data_format: A string, + one of `channels_last` (default) or `channels_first`. + The ordering of the dimensions in the inputs. + `channels_last` corresponds to inputs with shape + `(batch_size, height, width, channels)` while `channels_first` + corresponds to inputs with shape + `(batch_size, channels, height, width)`. + It defaults to the `image_data_format` value found in your + Keras config file at `~/.keras/keras.json`. + If you never set it, then it will be "channels_last". + + Input shape: + 4D tensor with shape: + - If `data_format` is `"channels_last"`: + `(batch_size, rows, cols, channels)` + - If `data_format` is `"channels_first"`: + `(batch_size, channels, rows, cols)` + + Output shape: + 4D tensor with shape: + - If `data_format` is `"channels_last"`: + `(batch_size, padded_rows, padded_cols, channels)` + - If `data_format` is `"channels_first"`: + `(batch_size, channels, padded_rows, padded_cols)` + """ + + def __init__(self, padding=(1, 1), data_format=None, **kwargs): + super().__init__(**kwargs) + self.data_format = conv_utils.normalize_data_format(data_format) + if isinstance(padding, int): + self.padding = ((padding, padding), (padding, padding)) + elif hasattr(padding, "__len__"): + if len(padding) == 4: + padding = ((padding[0], padding[1]), (padding[2], padding[3])) + if len(padding) != 2: + raise ValueError( + f"`padding` should have two elements. Received: {padding}." + ) + height_padding = conv_utils.normalize_tuple( + padding[0], 2, "1st entry of padding", allow_zero=True + ) + width_padding = conv_utils.normalize_tuple( + padding[1], 2, "2nd entry of padding", allow_zero=True + ) + self.padding = (height_padding, width_padding) + else: + raise ValueError( + "`padding` should be either an int, " + "a tuple of 2 ints " + "(symmetric_height_pad, symmetric_width_pad), " + "or a tuple of 2 tuples of 2 ints " + "((top_pad, bottom_pad), (left_pad, right_pad)). " + f"Received: {padding}." + ) + self.input_spec = InputSpec(ndim=4) + + def compute_output_shape(self, input_shape): + input_shape = tf.TensorShape(input_shape).as_list() + if self.data_format == "channels_first": + if input_shape[2] is not None: + rows = input_shape[2] + self.padding[0][0] + self.padding[0][1] + else: + rows = None + if input_shape[3] is not None: + cols = input_shape[3] + self.padding[1][0] + self.padding[1][1] + else: + cols = None + return tf.TensorShape([input_shape[0], input_shape[1], rows, cols]) + elif self.data_format == "channels_last": + if input_shape[1] is not None: + rows = input_shape[1] + self.padding[0][0] + self.padding[0][1] + else: + rows = None + if input_shape[2] is not None: + cols = input_shape[2] + self.padding[1][0] + self.padding[1][1] + else: + cols = None + return tf.TensorShape([input_shape[0], rows, cols, input_shape[3]]) + + def call(self, inputs): + return backend.spatial_2d_padding( + inputs, padding=self.padding, data_format=self.data_format + ) + + def get_config(self): + config = {"padding": self.padding, "data_format": self.data_format} + base_config = super().get_config() + return dict(list(base_config.items()) + list(config.items())) + + def parse_opt(): parser = argparse.ArgumentParser() parser.add_argument('--weights', type=str, default=ROOT / 'yolov3.pt', help='weights path') From a441ab15934a42d2155044adc72bf850a4dea914 Mon Sep 17 00:00:00 2001 From: s-mohaghegh97 <74965425+s-mohaghegh97@users.noreply.github.com> Date: Mon, 28 Nov 2022 04:44:27 +0330 Subject: [PATCH 2579/2595] fix half bug. (#1989) Co-authored-by: Glenn Jocher --- export.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/export.py b/export.py index ce23cf5b..00fb8c0c 100644 --- a/export.py +++ b/export.py @@ -317,7 +317,7 @@ def run(data=ROOT / 'data/coco128.yaml', # 'dataset.yaml path' if any(tf_exports): pb, tflite, tfjs = tf_exports[1:] assert not (tflite and tfjs), 'TFLite and TF.js models must be exported separately, please pass only one type.' - model = export_saved_model(model, im, file, dynamic, tf_nms=tfjs, agnostic_nms=tfjs, + model = export_saved_model(model.cpu(), im, file, dynamic, tf_nms=tfjs, agnostic_nms=tfjs, topk_per_class=topk_per_class, topk_all=topk_all, conf_thres=conf_thres, iou_thres=iou_thres) # keras model if pb or tfjs: # pb prerequisite to tfjs From 2813de7cc31da84eea392ffef08b51f6b7454291 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 19 Dec 2022 10:57:59 +0100 Subject: [PATCH 2580/2595] Created using Colaboratory --- tutorial.ipynb | 262 ++++++++++++++++++++++--------------------------- 1 file changed, 116 insertions(+), 146 deletions(-) diff --git a/tutorial.ipynb b/tutorial.ipynb index 1450682b..17a0f62f 100644 --- a/tutorial.ipynb +++ b/tutorial.ipynb @@ -5,7 +5,6 @@ "colab": { "name": "YOLOv3 Tutorial", "provenance": [], - "collapsed_sections": [], "include_colab_link": true }, "kernelspec": { @@ -402,7 +401,7 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "7efd38e6-c41f-4fe3-9864-ce4fa43fbb5b" + "outputId": "141002fc-fe49-48d2-a575-2555bf903413" }, "source": [ "!git clone https://github.com/ultralytics/yolov3 # clone\n", @@ -413,15 +412,8 @@ "from yolov3 import utils\n", "display = utils.notebook_init() # checks" ], - "execution_count": 24, + "execution_count": 1, "outputs": [ - { - "output_type": "stream", - "name": "stderr", - "text": [ - "YOLOv3 🚀 v9.6.0-1-g93a2bcc torch 1.10.0+cu111 CUDA:0 (A100-SXM4-40GB, 40536MiB)\n" - ] - }, { "output_type": "stream", "name": "stdout", @@ -459,27 +451,27 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "486202a4-bae2-454f-da62-2c74676a3058" + "outputId": "c29b082a-8e56-4799-b32a-056425f130d1" }, "source": [ "!python detect.py --weights yolov3.pt --img 640 --conf 0.25 --source data/images\n", - "display.Image(filename='runs/detect/exp/zidane.jpg', width=600)" + "# display.Image(filename='runs/detect/exp/zidane.jpg', width=600)" ], - "execution_count": 22, + "execution_count": 4, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\u001b[34m\u001b[1mdetect: \u001b[0mweights=['yolov3.pt'], source=data/images, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_conf=False, save_crop=False, nosave=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=runs/detect, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, dnn=False\n", - "YOLOv3 🚀 v9.6.0-1-g93a2bcc torch 1.10.0+cu111 CUDA:0 (A100-SXM4-40GB, 40536MiB)\n", + "YOLOv3 🚀 v9.6.0-29-ga441ab1 torch 1.13.0+cu116 CUDA:0 (Tesla T4, 15110MiB)\n", "\n", "Fusing layers... \n", - "Model Summary: 261 layers, 61922845 parameters, 0 gradients, 156.1 GFLOPs\n", - "image 1/2 /content/yolov3/data/images/bus.jpg: 640x480 4 persons, 1 bus, 1 tie, 1 sports ball, Done. (0.020s)\n", - "image 2/2 /content/yolov3/data/images/zidane.jpg: 384x640 2 persons, 3 ties, Done. (0.020s)\n", - "Speed: 0.5ms pre-process, 20.0ms inference, 1.3ms NMS per image at shape (1, 3, 640, 640)\n", - "Results saved to \u001b[1mruns/detect/exp\u001b[0m\n" + "Model Summary: 261 layers, 61922845 parameters, 0 gradients\n", + "image 1/2 /content/yolov3/data/images/bus.jpg: 640x480 4 persons, 1 bicycle, 1 bus, Done. (0.050s)\n", + "image 2/2 /content/yolov3/data/images/zidane.jpg: 384x640 2 persons, 2 ties, Done. (0.038s)\n", + "Speed: 0.5ms pre-process, 44.3ms inference, 1.3ms NMS per image at shape (1, 3, 640, 640)\n", + "Results saved to \u001b[1mruns/detect/exp2\u001b[0m\n" ] } ] @@ -542,7 +534,7 @@ "torch.hub.download_url_to_file('https://ultralytics.com/assets/coco2017val.zip', 'tmp.zip')\n", "!unzip -q tmp.zip -d ../datasets && rm tmp.zip" ], - "execution_count": 4, + "execution_count": null, "outputs": [ { "output_type": "display_data", @@ -573,7 +565,7 @@ "# Run YOLOv3 on COCO val\n", "!python val.py --weights yolov3.pt --data coco.yaml --img 640 --iou 0.65 --half" ], - "execution_count": 23, + "execution_count": null, "outputs": [ { "output_type": "stream", @@ -690,20 +682,6 @@ "execution_count": null, "outputs": [] }, - { - "cell_type": "code", - "metadata": { - "id": "2fLAV42oNb7M" - }, - "source": [ - "# Weights & Biases (optional)\n", - "%pip install -q wandb\n", - "import wandb\n", - "wandb.login()" - ], - "execution_count": null, - "outputs": [] - }, { "cell_type": "code", "metadata": { @@ -711,13 +689,13 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "a601aa72-687c-4dda-a16c-c0b2d9073910" + "outputId": "c77013e3-347d-42a4-84de-3ca42ea3aee9" }, "source": [ "# Train YOLOv3 on COCO128 for 3 epochs\n", "!python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov3.pt --cache" ], - "execution_count": 21, + "execution_count": 3, "outputs": [ { "output_type": "stream", @@ -725,12 +703,18 @@ "text": [ "\u001b[34m\u001b[1mtrain: \u001b[0mweights=yolov3.pt, cfg=, data=coco128.yaml, hyp=data/hyps/hyp.scratch.yaml, epochs=3, batch_size=16, imgsz=640, rect=False, resume=False, nosave=False, noval=False, noautoanchor=False, evolve=None, bucket=, cache=ram, image_weights=False, device=, multi_scale=False, single_cls=False, adam=False, sync_bn=False, workers=8, project=runs/train, name=exp, exist_ok=False, quad=False, linear_lr=False, label_smoothing=0.0, patience=100, freeze=0, save_period=-1, local_rank=-1, entity=None, upload_dataset=False, bbox_interval=-1, artifact_alias=latest\n", "\u001b[34m\u001b[1mgithub: \u001b[0mup to date with https://github.com/ultralytics/yolov3 ✅\n", - "YOLOv3 🚀 v9.6.0-1-g93a2bcc torch 1.10.0+cu111 CUDA:0 (A100-SXM4-40GB, 40536MiB)\n", + "YOLOv3 🚀 v9.6.0-29-ga441ab1 torch 1.13.0+cu116 CUDA:0 (Tesla T4, 15110MiB)\n", "\n", "\u001b[34m\u001b[1mhyperparameters: \u001b[0mlr0=0.01, lrf=0.1, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=0.05, cls=0.5, cls_pw=1.0, obj=1.0, obj_pw=1.0, iou_t=0.2, anchor_t=4.0, fl_gamma=0.0, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, mosaic=1.0, mixup=0.0, copy_paste=0.0\n", "\u001b[34m\u001b[1mWeights & Biases: \u001b[0mrun 'pip install wandb' to automatically track and visualize YOLOv3 🚀 runs (RECOMMENDED)\n", "\u001b[34m\u001b[1mTensorBoard: \u001b[0mStart with 'tensorboard --logdir runs/train', view at http://localhost:6006/\n", "\n", + "WARNING: Dataset not found, nonexistent paths: ['/content/datasets/coco128/images/train2017']\n", + "Downloading https://ultralytics.com/assets/coco128.zip to coco128.zip...\n", + "100% 6.66M/6.66M [00:00<00:00, 10.2MB/s]\n", + "Dataset autodownload success, saved to ../datasets\n", + "\n", + "\n", " from n params module arguments \n", " 0 -1 1 928 models.common.Conv [3, 32, 3, 1] \n", " 1 -1 1 18560 models.common.Conv [32, 64, 3, 2] \n", @@ -744,7 +728,7 @@ " 9 -1 1 4720640 models.common.Conv [512, 1024, 3, 2] \n", " 10 -1 4 20983808 models.common.Bottleneck [1024, 1024] \n", " 11 -1 1 5245952 models.common.Bottleneck [1024, 1024, False] \n", - " 12 -1 1 525312 models.common.Conv [1024, 512, [1, 1]] \n", + " 12 -1 1 525312 models.common.Conv [1024, 512, 1, 1] \n", " 13 -1 1 4720640 models.common.Conv [512, 1024, 3, 1] \n", " 14 -1 1 525312 models.common.Conv [1024, 512, 1, 1] \n", " 15 -1 1 4720640 models.common.Conv [512, 1024, 3, 1] \n", @@ -761,119 +745,120 @@ " 26 -1 1 344832 models.common.Bottleneck [384, 256, False] \n", " 27 -1 2 656896 models.common.Bottleneck [256, 256, False] \n", " 28 [27, 22, 15] 1 457725 models.yolo.Detect [80, [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]], [256, 512, 1024]]\n", - "Model Summary: 333 layers, 61949149 parameters, 61949149 gradients, 156.3 GFLOPs\n", + "Model Summary: 333 layers, 61949149 parameters, 61949149 gradients, 156.6 GFLOPs\n", "\n", "Transferred 439/439 items from yolov3.pt\n", "Scaled weight_decay = 0.0005\n", "\u001b[34m\u001b[1moptimizer:\u001b[0m SGD with parameter groups 72 weight, 75 weight (no decay), 75 bias\n", - "\u001b[34m\u001b[1malbumentations: \u001b[0mversion 1.0.3 required by YOLOv3, but version 0.1.12 is currently installed\n", - "\u001b[34m\u001b[1mtrain: \u001b[0mScanning '../datasets/coco128/labels/train2017.cache' images and labels... 128 found, 0 missing, 2 empty, 0 corrupted: 100% 128/128 [00:00\"Weights

" - ] - }, { "cell_type": "markdown", "metadata": { @@ -1080,4 +1050,4 @@ "outputs": [] } ] -} +} \ No newline at end of file From 91b040619f42d57e6cbdc632fd0b719a4492ffbd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 27 Dec 2022 13:51:06 +0100 Subject: [PATCH 2581/2595] Bump actions/stale from 6 to 7 (#2000) * Bump actions/stale from 6 to 7 Bumps [actions/stale](https://github.com/actions/stale) from 6 to 7. - [Release notes](https://github.com/actions/stale/releases) - [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/stale/compare/v6...v7) --- updated-dependencies: - dependency-name: actions/stale dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .github/workflows/stale.yml | 2 +- tutorial.ipynb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 94d649f0..819a5379 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -9,7 +9,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v6 + - uses: actions/stale@v7 with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-message: | diff --git a/tutorial.ipynb b/tutorial.ipynb index 17a0f62f..635061fb 100644 --- a/tutorial.ipynb +++ b/tutorial.ipynb @@ -1050,4 +1050,4 @@ "outputs": [] } ] -} \ No newline at end of file +} From ae460cf4ffd22ac7d5c498aa5a5187e246e34f34 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Jan 2023 21:10:43 +0100 Subject: [PATCH 2582/2595] Bump cirrus-actions/rebase from 1.7 to 1.8 (#1999) Bumps [cirrus-actions/rebase](https://github.com/cirrus-actions/rebase) from 1.7 to 1.8. - [Release notes](https://github.com/cirrus-actions/rebase/releases) - [Commits](https://github.com/cirrus-actions/rebase/compare/1.7...1.8) --- updated-dependencies: - dependency-name: cirrus-actions/rebase dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/rebase.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/rebase.yml b/.github/workflows/rebase.yml index a4dc9e50..5ec1791d 100644 --- a/.github/workflows/rebase.yml +++ b/.github/workflows/rebase.yml @@ -16,6 +16,6 @@ jobs: token: ${{ secrets.ACTIONS_TOKEN }} fetch-depth: 0 # otherwise, you will fail to push refs to dest repo - name: Automatic Rebase - uses: cirrus-actions/rebase@1.7 + uses: cirrus-actions/rebase@1.8 env: GITHUB_TOKEN: ${{ secrets.ACTIONS_TOKEN }} From 05209583a0c987ab4d3c2a9b820850452d6249b6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 11 Feb 2023 02:01:57 +0400 Subject: [PATCH 2583/2595] Update README.md (#2006) --- README.md | 479 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 335 insertions(+), 144 deletions(-) diff --git a/README.md b/README.md index 1d961c3c..68a34af8 100644 --- a/README.md +++ b/README.md @@ -15,30 +15,27 @@
+ + + + + + + + + + + + + + + + + + + + +

@@ -122,8 +119,6 @@ $ python detect.py --source 0 # webcam

Training - -
@@ -131,20 +126,270 @@ $ python detect.py --source 0 # webcam
Tutorials -* [Train Custom Data](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data)  🚀 RECOMMENDED -* [Tips for Best Training Results](https://github.com/ultralytics/yolov3/wiki/Tips-for-Best-Training-Results)  ☘️ +- [Train Custom Data](https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data)  🚀 RECOMMENDED +- [Tips for Best Training Results](https://github.com/ultralytics/yolov5/wiki/Tips-for-Best-Training-Results)  ☘️ RECOMMENDED -* [Weights & Biases Logging](https://github.com/ultralytics/yolov5/issues/1289)  🌟 NEW -* [Roboflow for Datasets, Labeling, and Active Learning](https://github.com/ultralytics/yolov5/issues/4975)  🌟 NEW -* [Multi-GPU Training](https://github.com/ultralytics/yolov5/issues/475) -* [PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36)  ⭐ NEW -* [TorchScript, ONNX, CoreML Export](https://github.com/ultralytics/yolov5/issues/251) 🚀 -* [Test-Time Augmentation (TTA)](https://github.com/ultralytics/yolov5/issues/303) -* [Model Ensembling](https://github.com/ultralytics/yolov5/issues/318) -* [Model Pruning/Sparsity](https://github.com/ultralytics/yolov5/issues/304) -* [Hyperparameter Evolution](https://github.com/ultralytics/yolov5/issues/607) -* [Transfer Learning with Frozen Layers](https://github.com/ultralytics/yolov5/issues/1314)  ⭐ NEW -* [TensorRT Deployment](https://github.com/wang-xinyu/tensorrtx) +- [Multi-GPU Training](https://github.com/ultralytics/yolov5/issues/475) +- [PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36) 🌟 NEW +- [TFLite, ONNX, CoreML, TensorRT Export](https://github.com/ultralytics/yolov5/issues/251) 🚀 +- [NVIDIA Jetson Nano Deployment](https://github.com/ultralytics/yolov5/issues/9627) 🌟 NEW +- [Test-Time Augmentation (TTA)](https://github.com/ultralytics/yolov5/issues/303) +- [Model Ensembling](https://github.com/ultralytics/yolov5/issues/318) +- [Model Pruning/Sparsity](https://github.com/ultralytics/yolov5/issues/304) +- [Hyperparameter Evolution](https://github.com/ultralytics/yolov5/issues/607) +- [Transfer Learning with Frozen Layers](https://github.com/ultralytics/yolov5/issues/1314) +- [Architecture Summary](https://github.com/ultralytics/yolov5/issues/6998) 🌟 NEW +- [Roboflow for Datasets, Labeling, and Active Learning](https://github.com/ultralytics/yolov5/issues/4975)  🌟 NEW +- [ClearML Logging](https://github.com/ultralytics/yolov5/tree/master/utils/loggers/clearml) 🌟 NEW +- [YOLOv5 with Neural Magic's Deepsparse](https://bit.ly/yolov5-neuralmagic) 🌟 NEW +- [Comet Logging](https://github.com/ultralytics/yolov5/tree/master/utils/loggers/comet) 🌟 NEW + +
+ +##
Integrations
+ +
+ + +
+
+ +
+ + + + + + + + + + + +
+ +| Roboflow | ClearML ⭐ NEW | Comet ⭐ NEW | Neural Magic ⭐ NEW | +| :--------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------: | +| Label and export your custom datasets directly to YOLOv5 for training with [Roboflow](https://roboflow.com/?ref=ultralytics) | Automatically track, visualize and even remotely train YOLOv5 using [ClearML](https://cutt.ly/yolov5-readme-clearml) (open-source!) | Free forever, [Comet](https://bit.ly/yolov5-readme-comet2) lets you save YOLOv5 models, resume training, and interactively visualise and debug predictions | Run YOLOv5 inference up to 6x faster with [Neural Magic DeepSparse](https://bit.ly/yolov5-neuralmagic) | + +##
Ultralytics HUB
+ +[Ultralytics HUB](https://bit.ly/ultralytics_hub) is our ⭐ **NEW** no-code solution to visualize datasets, train YOLOv5 🚀 models, and deploy to the real world in a seamless experience. Get started for **Free** now! + + + + +##
Why YOLOv5
+ +YOLOv5 has been designed to be super easy to get started and simple to learn. We prioritize real-world results. + +

+
+ YOLOv5-P5 640 Figure + +

+
+
+ Figure Notes + +- **COCO AP val** denotes mAP@0.5:0.95 metric measured on the 5000-image [COCO val2017](http://cocodataset.org) dataset over various inference sizes from 256 to 1536. +- **GPU Speed** measures average inference time per image on [COCO val2017](http://cocodataset.org) dataset using a [AWS p3.2xlarge](https://aws.amazon.com/ec2/instance-types/p3/) V100 instance at batch-size 32. +- **EfficientDet** data from [google/automl](https://github.com/google/automl) at batch size 8. +- **Reproduce** by `python val.py --task study --data coco.yaml --iou 0.7 --weights yolov5n6.pt yolov5s6.pt yolov5m6.pt yolov5l6.pt yolov5x6.pt` + +
+ +### Pretrained Checkpoints + +| Model | size
(pixels) | mAPval
50-95 | mAPval
50 | Speed
CPU b1
(ms) | Speed
V100 b1
(ms) | Speed
V100 b32
(ms) | params
(M) | FLOPs
@640 (B) | +| ----------------------------------------------------------------------------------------------- | --------------------- | -------------------- | ----------------- | ---------------------------- | ----------------------------- | ------------------------------ | ------------------ | ---------------------- | +| [YOLOv5n](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5n.pt) | 640 | 28.0 | 45.7 | **45** | **6.3** | **0.6** | **1.9** | **4.5** | +| [YOLOv5s](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s.pt) | 640 | 37.4 | 56.8 | 98 | 6.4 | 0.9 | 7.2 | 16.5 | +| [YOLOv5m](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5m.pt) | 640 | 45.4 | 64.1 | 224 | 8.2 | 1.7 | 21.2 | 49.0 | +| [YOLOv5l](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5l.pt) | 640 | 49.0 | 67.3 | 430 | 10.1 | 2.7 | 46.5 | 109.1 | +| [YOLOv5x](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5x.pt) | 640 | 50.7 | 68.9 | 766 | 12.1 | 4.8 | 86.7 | 205.7 | +| | | | | | | | | | +| [YOLOv5n6](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5n6.pt) | 1280 | 36.0 | 54.4 | 153 | 8.1 | 2.1 | 3.2 | 4.6 | +| [YOLOv5s6](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s6.pt) | 1280 | 44.8 | 63.7 | 385 | 8.2 | 3.6 | 12.6 | 16.8 | +| [YOLOv5m6](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5m6.pt) | 1280 | 51.3 | 69.3 | 887 | 11.1 | 6.8 | 35.7 | 50.0 | +| [YOLOv5l6](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5l6.pt) | 1280 | 53.7 | 71.3 | 1784 | 15.8 | 10.5 | 76.8 | 111.4 | +| [YOLOv5x6](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5x6.pt)
+ [TTA] | 1280
1536 | 55.0
**55.8** | 72.7
**72.7** | 3136
- | 26.2
- | 19.4
- | 140.7
- | 209.8
- | + +
+ Table Notes + +- All checkpoints are trained to 300 epochs with default settings. Nano and Small models use [hyp.scratch-low.yaml](https://github.com/ultralytics/yolov5/blob/master/data/hyps/hyp.scratch-low.yaml) hyps, all others use [hyp.scratch-high.yaml](https://github.com/ultralytics/yolov5/blob/master/data/hyps/hyp.scratch-high.yaml). +- **mAPval** values are for single-model single-scale on [COCO val2017](http://cocodataset.org) dataset.
Reproduce by `python val.py --data coco.yaml --img 640 --conf 0.001 --iou 0.65` +- **Speed** averaged over COCO val images using a [AWS p3.2xlarge](https://aws.amazon.com/ec2/instance-types/p3/) instance. NMS times (~1 ms/img) not included.
Reproduce by `python val.py --data coco.yaml --img 640 --task speed --batch 1` +- **TTA** [Test Time Augmentation](https://github.com/ultralytics/yolov5/issues/303) includes reflection and scale augmentations.
Reproduce by `python val.py --data coco.yaml --img 1536 --iou 0.7 --augment` + +
+ +##
Segmentation
+ +Our new YOLOv5 [release v7.0](https://github.com/ultralytics/yolov5/releases/v7.0) instance segmentation models are the fastest and most accurate in the world, beating all current [SOTA benchmarks](https://paperswithcode.com/sota/real-time-instance-segmentation-on-mscoco). We've made them super simple to train, validate and deploy. See full details in our [Release Notes](https://github.com/ultralytics/yolov5/releases/v7.0) and visit our [YOLOv5 Segmentation Colab Notebook](https://github.com/ultralytics/yolov5/blob/master/segment/tutorial.ipynb) for quickstart tutorials. + +
+ Segmentation Checkpoints + +
+ + +
+ +We trained YOLOv5 segmentations models on COCO for 300 epochs at image size 640 using A100 GPUs. We exported all models to ONNX FP32 for CPU speed tests and to TensorRT FP16 for GPU speed tests. We ran all speed tests on Google [Colab Pro](https://colab.research.google.com/signup) notebooks for easy reproducibility. + +| Model | size
(pixels) | mAPbox
50-95 | mAPmask
50-95 | Train time
300 epochs
A100 (hours) | Speed
ONNX CPU
(ms) | Speed
TRT A100
(ms) | params
(M) | FLOPs
@640 (B) | +| ------------------------------------------------------------------------------------------ | --------------------- | -------------------- | --------------------- | --------------------------------------------- | ------------------------------ | ------------------------------ | ------------------ | ---------------------- | +| [YOLOv5n-seg](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5n-seg.pt) | 640 | 27.6 | 23.4 | 80:17 | **62.7** | **1.2** | **2.0** | **7.1** | +| [YOLOv5s-seg](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s-seg.pt) | 640 | 37.6 | 31.7 | 88:16 | 173.3 | 1.4 | 7.6 | 26.4 | +| [YOLOv5m-seg](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5m-seg.pt) | 640 | 45.0 | 37.1 | 108:36 | 427.0 | 2.2 | 22.0 | 70.8 | +| [YOLOv5l-seg](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5l-seg.pt) | 640 | 49.0 | 39.9 | 66:43 (2x) | 857.4 | 2.9 | 47.9 | 147.7 | +| [YOLOv5x-seg](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5x-seg.pt) | 640 | **50.7** | **41.4** | 62:56 (3x) | 1579.2 | 4.5 | 88.8 | 265.7 | + +- All checkpoints are trained to 300 epochs with SGD optimizer with `lr0=0.01` and `weight_decay=5e-5` at image size 640 and all default settings.
Runs logged to https://wandb.ai/glenn-jocher/YOLOv5_v70_official +- **Accuracy** values are for single-model single-scale on COCO dataset.
Reproduce by `python segment/val.py --data coco.yaml --weights yolov5s-seg.pt` +- **Speed** averaged over 100 inference images using a [Colab Pro](https://colab.research.google.com/signup) A100 High-RAM instance. Values indicate inference speed only (NMS adds about 1ms per image).
Reproduce by `python segment/val.py --data coco.yaml --weights yolov5s-seg.pt --batch 1` +- **Export** to ONNX at FP32 and TensorRT at FP16 done with `export.py`.
Reproduce by `python export.py --weights yolov5s-seg.pt --include engine --device 0 --half` + +
+ +
+ Segmentation Usage Examples  Open In Colab + +### Train + +YOLOv5 segmentation training supports auto-download COCO128-seg segmentation dataset with `--data coco128-seg.yaml` argument and manual download of COCO-segments dataset with `bash data/scripts/get_coco.sh --train --val --segments` and then `python train.py --data coco.yaml`. + +```bash +# Single-GPU +python segment/train.py --data coco128-seg.yaml --weights yolov5s-seg.pt --img 640 + +# Multi-GPU DDP +python -m torch.distributed.run --nproc_per_node 4 --master_port 1 segment/train.py --data coco128-seg.yaml --weights yolov5s-seg.pt --img 640 --device 0,1,2,3 +``` + +### Val + +Validate YOLOv5s-seg mask mAP on COCO dataset: + +```bash +bash data/scripts/get_coco.sh --val --segments # download COCO val segments split (780MB, 5000 images) +python segment/val.py --weights yolov5s-seg.pt --data coco.yaml --img 640 # validate +``` + +### Predict + +Use pretrained YOLOv5m-seg.pt to predict bus.jpg: + +```bash +python segment/predict.py --weights yolov5m-seg.pt --data data/images/bus.jpg +``` + +```python +model = torch.hub.load( + "ultralytics/yolov5", "custom", "yolov5m-seg.pt" +) # load from PyTorch Hub (WARNING: inference not yet supported) +``` + +| ![zidane](https://user-images.githubusercontent.com/26833433/203113421-decef4c4-183d-4a0a-a6c2-6435b33bc5d3.jpg) | ![bus](https://user-images.githubusercontent.com/26833433/203113416-11fe0025-69f7-4874-a0a6-65d0bfe2999a.jpg) | +| ---------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | + +### Export + +Export YOLOv5s-seg model to ONNX and TensorRT: + +```bash +python export.py --weights yolov5s-seg.pt --include onnx engine --img 640 --device 0 +``` + +
+ +##
Classification
+ +YOLOv5 [release v6.2](https://github.com/ultralytics/yolov5/releases) brings support for classification model training, validation and deployment! See full details in our [Release Notes](https://github.com/ultralytics/yolov5/releases/v6.2) and visit our [YOLOv5 Classification Colab Notebook](https://github.com/ultralytics/yolov5/blob/master/classify/tutorial.ipynb) for quickstart tutorials. + +
+ Classification Checkpoints + +
+ +We trained YOLOv5-cls classification models on ImageNet for 90 epochs using a 4xA100 instance, and we trained ResNet and EfficientNet models alongside with the same default training settings to compare. We exported all models to ONNX FP32 for CPU speed tests and to TensorRT FP16 for GPU speed tests. We ran all speed tests on Google [Colab Pro](https://colab.research.google.com/signup) for easy reproducibility. + +| Model | size
(pixels) | acc
top1 | acc
top5 | Training
90 epochs
4xA100 (hours) | Speed
ONNX CPU
(ms) | Speed
TensorRT V100
(ms) | params
(M) | FLOPs
@224 (B) | +| -------------------------------------------------------------------------------------------------- | --------------------- | ---------------- | ---------------- | -------------------------------------------- | ------------------------------ | ----------------------------------- | ------------------ | ---------------------- | +| [YOLOv5n-cls](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5n-cls.pt) | 224 | 64.6 | 85.4 | 7:59 | **3.3** | **0.5** | **2.5** | **0.5** | +| [YOLOv5s-cls](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s-cls.pt) | 224 | 71.5 | 90.2 | 8:09 | 6.6 | 0.6 | 5.4 | 1.4 | +| [YOLOv5m-cls](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5m-cls.pt) | 224 | 75.9 | 92.9 | 10:06 | 15.5 | 0.9 | 12.9 | 3.9 | +| [YOLOv5l-cls](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5l-cls.pt) | 224 | 78.0 | 94.0 | 11:56 | 26.9 | 1.4 | 26.5 | 8.5 | +| [YOLOv5x-cls](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5x-cls.pt) | 224 | **79.0** | **94.4** | 15:04 | 54.3 | 1.8 | 48.1 | 15.9 | +| | | | | | | | | | +| [ResNet18](https://github.com/ultralytics/yolov5/releases/download/v7.0/resnet18.pt) | 224 | 70.3 | 89.5 | **6:47** | 11.2 | 0.5 | 11.7 | 3.7 | +| [ResNet34](https://github.com/ultralytics/yolov5/releases/download/v7.0/resnet34.pt) | 224 | 73.9 | 91.8 | 8:33 | 20.6 | 0.9 | 21.8 | 7.4 | +| [ResNet50](https://github.com/ultralytics/yolov5/releases/download/v7.0/resnet50.pt) | 224 | 76.8 | 93.4 | 11:10 | 23.4 | 1.0 | 25.6 | 8.5 | +| [ResNet101](https://github.com/ultralytics/yolov5/releases/download/v7.0/resnet101.pt) | 224 | 78.5 | 94.3 | 17:10 | 42.1 | 1.9 | 44.5 | 15.9 | +| | | | | | | | | | +| [EfficientNet_b0](https://github.com/ultralytics/yolov5/releases/download/v7.0/efficientnet_b0.pt) | 224 | 75.1 | 92.4 | 13:03 | 12.5 | 1.3 | 5.3 | 1.0 | +| [EfficientNet_b1](https://github.com/ultralytics/yolov5/releases/download/v7.0/efficientnet_b1.pt) | 224 | 76.4 | 93.2 | 17:04 | 14.9 | 1.6 | 7.8 | 1.5 | +| [EfficientNet_b2](https://github.com/ultralytics/yolov5/releases/download/v7.0/efficientnet_b2.pt) | 224 | 76.6 | 93.4 | 17:10 | 15.9 | 1.6 | 9.1 | 1.7 | +| [EfficientNet_b3](https://github.com/ultralytics/yolov5/releases/download/v7.0/efficientnet_b3.pt) | 224 | 77.7 | 94.0 | 19:19 | 18.9 | 1.9 | 12.2 | 2.4 | + +
+ Table Notes (click to expand) + +- All checkpoints are trained to 90 epochs with SGD optimizer with `lr0=0.001` and `weight_decay=5e-5` at image size 224 and all default settings.
Runs logged to https://wandb.ai/glenn-jocher/YOLOv5-Classifier-v6-2 +- **Accuracy** values are for single-model single-scale on [ImageNet-1k](https://www.image-net.org/index.php) dataset.
Reproduce by `python classify/val.py --data ../datasets/imagenet --img 224` +- **Speed** averaged over 100 inference images using a Google [Colab Pro](https://colab.research.google.com/signup) V100 High-RAM instance.
Reproduce by `python classify/val.py --data ../datasets/imagenet --img 224 --batch 1` +- **Export** to ONNX at FP32 and TensorRT at FP16 done with `export.py`.
Reproduce by `python export.py --weights yolov5s-cls.pt --include engine onnx --imgsz 224` + +
+
+ +
+ Classification Usage Examples  Open In Colab + +### Train + +YOLOv5 classification training supports auto-download of MNIST, Fashion-MNIST, CIFAR10, CIFAR100, Imagenette, Imagewoof, and ImageNet datasets with the `--data` argument. To start training on MNIST for example use `--data mnist`. + +```bash +# Single-GPU +python classify/train.py --model yolov5s-cls.pt --data cifar100 --epochs 5 --img 224 --batch 128 + +# Multi-GPU DDP +python -m torch.distributed.run --nproc_per_node 4 --master_port 1 classify/train.py --model yolov5s-cls.pt --data imagenet --epochs 5 --img 224 --device 0,1,2,3 +``` + +### Val + +Validate YOLOv5m-cls accuracy on ImageNet-1k dataset: + +```bash +bash data/scripts/get_imagenet.sh --val # download ImageNet val split (6.3G, 50000 images) +python classify/val.py --weights yolov5m-cls.pt --data ../datasets/imagenet --img 224 # validate +``` + +### Predict + +Use pretrained YOLOv5s-cls.pt to predict bus.jpg: + +```bash +python classify/predict.py --weights yolov5s-cls.pt --data data/images/bus.jpg +``` + +```python +model = torch.hub.load( + "ultralytics/yolov5", "custom", "yolov5s-cls.pt" +) # load from PyTorch Hub +``` + +### Export + +Export a group of trained YOLOv5s-cls, ResNet and EfficientNet models to ONNX and TensorRT: + +```bash +python export.py --weights yolov5s-cls.pt resnet50.pt efficientnet_b0.pt --include onnx engine --img 224 +```
@@ -153,121 +398,67 @@ $ python detect.py --source 0 # webcam Get started in seconds with our verified environments. Click each icon below for details. -##
Integrations
- - - -|Weights and Biases|Roboflow ⭐ NEW| -|:-:|:-:| -|Automatically track and visualize all your YOLOv3 training runs in the cloud with [Weights & Biases](https://wandb.ai/site?utm_campaign=repo_yolo_readme)|Label and export your custom datasets directly to YOLOv3 for training with [Roboflow](https://roboflow.com/?ref=ultralytics) | - - -##
Why YOLOv5
- -

-
- YOLOv3-P5 640 Figure (click to expand) - -

-
-
- Figure Notes (click to expand) - -* **COCO AP val** denotes mAP@0.5:0.95 metric measured on the 5000-image [COCO val2017](http://cocodataset.org) dataset over various inference sizes from 256 to 1536. -* **GPU Speed** measures average inference time per image on [COCO val2017](http://cocodataset.org) dataset using a [AWS p3.2xlarge](https://aws.amazon.com/ec2/instance-types/p3/) V100 instance at batch-size 32. -* **EfficientDet** data from [google/automl](https://github.com/google/automl) at batch size 8. -* **Reproduce** by `python val.py --task study --data coco.yaml --iou 0.7 --weights yolov5n6.pt yolov5s6.pt yolov5m6.pt yolov5l6.pt yolov5x6.pt` -
- -### Pretrained Checkpoints - -[assets]: https://github.com/ultralytics/yolov5/releases -[TTA]: https://github.com/ultralytics/yolov5/issues/303 - -|Model |size
(pixels) |mAPval
0.5:0.95 |mAPval
0.5 |Speed
CPU b1
(ms) |Speed
V100 b1
(ms) |Speed
V100 b32
(ms) |params
(M) |FLOPs
@640 (B) -|--- |--- |--- |--- |--- |--- |--- |--- |--- -|[YOLOv5n][assets] |640 |28.4 |46.0 |**45** |**6.3**|**0.6**|**1.9**|**4.5** -|[YOLOv5s][assets] |640 |37.2 |56.0 |98 |6.4 |0.9 |7.2 |16.5 -|[YOLOv5m][assets] |640 |45.2 |63.9 |224 |8.2 |1.7 |21.2 |49.0 -|[YOLOv5l][assets] |640 |48.8 |67.2 |430 |10.1 |2.7 |46.5 |109.1 -|[YOLOv5x][assets] |640 |50.7 |68.9 |766 |12.1 |4.8 |86.7 |205.7 -| | | | | | | | | -|[YOLOv5n6][assets] |1280 |34.0 |50.7 |153 |8.1 |2.1 |3.2 |4.6 -|[YOLOv5s6][assets] |1280 |44.5 |63.0 |385 |8.2 |3.6 |16.8 |12.6 -|[YOLOv5m6][assets] |1280 |51.0 |69.0 |887 |11.1 |6.8 |35.7 |50.0 -|[YOLOv5l6][assets] |1280 |53.6 |71.6 |1784 |15.8 |10.5 |76.8 |111.4 -|[YOLOv5x6][assets]
+ [TTA][TTA]|1280
1536 |54.7
**55.4** |**72.4**
72.3 |3136
- |26.2
- |19.4
- |140.7
- |209.8
- - -
- Table Notes (click to expand) - -* All checkpoints are trained to 300 epochs with default settings and hyperparameters. -* **mAPval** values are for single-model single-scale on [COCO val2017](http://cocodataset.org) dataset.
Reproduce by `python val.py --data coco.yaml --img 640 --conf 0.001 --iou 0.65` -* **Speed** averaged over COCO val images using a [AWS p3.2xlarge](https://aws.amazon.com/ec2/instance-types/p3/) instance. NMS times (~1 ms/img) not included.
Reproduce by `python val.py --data coco.yaml --img 640 --conf 0.25 --iou 0.45` -* **TTA** [Test Time Augmentation](https://github.com/ultralytics/yolov5/issues/303) includes reflection and scale augmentations.
Reproduce by `python val.py --data coco.yaml --img 1536 --iou 0.7 --augment` - -
- ##
Contribute
-We love your input! We want to make contributing to YOLOv3 as easy and transparent as possible. Please see our [Contributing Guide](CONTRIBUTING.md) to get started, and fill out the [YOLOv3 Survey](https://ultralytics.com/survey?utm_source=github&utm_medium=social&utm_campaign=Survey) to send us feedback on your experiences. Thank you to all our contributors! +We love your input! We want to make contributing to YOLOv5 as easy and transparent as possible. Please see our [Contributing Guide](CONTRIBUTING.md) to get started, and fill out the [YOLOv5 Survey](https://ultralytics.com/survey?utm_source=github&utm_medium=social&utm_campaign=Survey) to send us feedback on your experiences. Thank you to all our contributors! - + + + +##
License
+ +YOLOv5 is available under two different licenses: + +- **GPL-3.0 License**: See [LICENSE](https://github.com/ultralytics/yolov5/blob/master/LICENSE) file for details. +- **Enterprise License**: Provides greater flexibility for commercial product development without the open-source requirements of GPL-3.0. Typical use cases are embedding Ultralytics software and AI models in commercial products and applications. Request an Enterprise License at [Ultralytics Licensing](https://ultralytics.com/license). ##
Contact
-For YOLOv3 bugs and feature requests please visit [GitHub Issues](https://github.com/ultralytics/yolov3/issues). For business inquiries or -professional support requests please visit [https://ultralytics.com/contact](https://ultralytics.com/contact). +For YOLOv5 bug reports and feature requests please visit [GitHub Issues](https://github.com/ultralytics/yolov5/issues) or the [Ultralytics Community Forum](https://community.ultralytics.com/).
-
- - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + +
+ +[tta]: https://github.com/ultralytics/yolov5/issues/303 + From a57a6df95bb9ceb6625e6e23a53a7b1138325361 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 11 Feb 2023 02:02:13 +0400 Subject: [PATCH 2584/2595] Update greetings.yml (#2007) --- .github/workflows/greetings.yml | 60 +++++++++++++++++---------------- 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/.github/workflows/greetings.yml b/.github/workflows/greetings.yml index aaad2179..e0198480 100644 --- a/.github/workflows/greetings.yml +++ b/.github/workflows/greetings.yml @@ -1,8 +1,12 @@ -# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +# YOLOv5 🚀 by Ultralytics, GPL-3.0 license name: Greetings -on: [pull_request_target, issues] +on: + pull_request_target: + types: [opened] + issues: + types: [opened] jobs: greeting: @@ -12,48 +16,46 @@ jobs: with: repo-token: ${{ secrets.GITHUB_TOKEN }} pr-message: | - 👋 Hello @${{ github.actor }}, thank you for submitting a 🚀 PR! To allow your work to be integrated as seamlessly as possible, we advise you to: - - ✅ Verify your PR is **up-to-date with upstream/master.** If your PR is behind upstream/master an automatic [GitHub actions](https://github.com/ultralytics/yolov3/blob/master/.github/workflows/rebase.yml) rebase may be attempted by including the /rebase command in a comment body, or by running the following code, replacing 'feature' with the name of your local branch: - ```bash - git remote add upstream https://github.com/ultralytics/yolov3.git - git fetch upstream - git checkout feature # <----- replace 'feature' with local branch name - git merge upstream/master - git push -u origin -f - ``` - - ✅ Verify all Continuous Integration (CI) **checks are passing**. - - ✅ Reduce changes to the absolute **minimum** required for your bug fix or feature addition. _"It is not daily increase but daily decrease, hack away the unessential. The closer to the source, the less wastage there is."_ -Bruce Lee + 👋 Hello @${{ github.actor }}, thank you for submitting a YOLOv3 🚀 PR! To allow your work to be integrated as seamlessly as possible, we advise you to: + + - ✅ Verify your PR is **up-to-date** with `ultralytics/yolov5` `master` branch. If your PR is behind you can update your code by clicking the 'Update branch' button or by running `git pull` and `git merge master` locally. + - ✅ Verify all YOLOv3 Continuous Integration (CI) **checks are passing**. + - ✅ Reduce changes to the absolute **minimum** required for your bug fix or feature addition. _"It is not daily increase but daily decrease, hack away the unessential. The closer to the source, the less wastage there is."_ — Bruce Lee issue-message: | - 👋 Hello @${{ github.actor }}, thank you for your interest in YOLOv3 🚀! Please visit our ⭐️ [Tutorials](https://github.com/ultralytics/yolov3/wiki#tutorials) to get started, where you can find quickstart guides for simple tasks like [Custom Data Training](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data) all the way to advanced concepts like [Hyperparameter Evolution](https://github.com/ultralytics/yolov5/issues/607). + 👋 Hello @${{ github.actor }}, thank you for your interest in YOLOv3 🚀! Please visit our ⭐️ [Tutorials](https://github.com/ultralytics/yolov5/wiki#tutorials) to get started, where you can find quickstart guides for simple tasks like [Custom Data Training](https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data) all the way to advanced concepts like [Hyperparameter Evolution](https://github.com/ultralytics/yolov5/issues/607). - If this is a 🐛 Bug Report, please provide screenshots and **minimum viable code to reproduce your issue**, otherwise we can not help you. + If this is a 🐛 Bug Report, please provide a **minimum reproducible example** to help us debug it. - If this is a custom training ❓ Question, please provide as much information as possible, including dataset images, training logs, screenshots, and a public link to online [W&B logging](https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data#visualize) if available. - - For business inquiries or professional support requests please visit https://ultralytics.com or email Glenn Jocher at glenn.jocher@ultralytics.com. + If this is a custom training ❓ Question, please provide as much information as possible, including dataset image examples and training logs, and verify you are following our [Tips for Best Training Results](https://github.com/ultralytics/yolov5/wiki/Tips-for-Best-Training-Results). ## Requirements - [**Python>=3.6.0**](https://www.python.org/) with all [requirements.txt](https://github.com/ultralytics/yolov3/blob/master/requirements.txt) installed including [**PyTorch>=1.7**](https://pytorch.org/get-started/locally/). To get started: + [**Python>=3.7.0**](https://www.python.org/) with all [requirements.txt](https://github.com/ultralytics/yolov5/blob/master/requirements.txt) installed including [**PyTorch>=1.7**](https://pytorch.org/get-started/locally/). To get started: ```bash - $ git clone https://github.com/ultralytics/yolov3 - $ cd yolov3 - $ pip install -r requirements.txt + git clone https://github.com/ultralytics/yolov3 # clone + cd yolov3 + pip install -r requirements.txt # install ``` ## Environments YOLOv3 may be run in any of the following up-to-date verified environments (with all dependencies including [CUDA](https://developer.nvidia.com/cuda)/[CUDNN](https://developer.nvidia.com/cudnn), [Python](https://www.python.org/) and [PyTorch](https://pytorch.org/) preinstalled): - - **Google Colab and Kaggle** notebooks with free GPU: Open In Colab Open In Kaggle - - **Google Cloud** Deep Learning VM. See [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) - - **Amazon** Deep Learning AMI. See [AWS Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/AWS-Quickstart) - - **Docker Image**. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) Docker Pulls - + - **Notebooks** with free GPU: Run on Gradient Open In Colab Open In Kaggle + - **Google Cloud** Deep Learning VM. See [GCP Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/GCP-Quickstart) + - **Amazon** Deep Learning AMI. See [AWS Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/AWS-Quickstart) + - **Docker Image**. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/Docker-Quickstart) Docker Pulls ## Status - CI CPU testing + YOLOv3 CI - If this badge is green, all [YOLOv3 GitHub Actions](https://github.com/ultralytics/yolov3/actions) Continuous Integration (CI) tests are currently passing. CI tests verify correct operation of YOLOv3 training ([train.py](https://github.com/ultralytics/yolov3/blob/master/train.py)), validation ([val.py](https://github.com/ultralytics/yolov3/blob/master/val.py)), inference ([detect.py](https://github.com/ultralytics/yolov3/blob/master/detect.py)) and export ([export.py](https://github.com/ultralytics/yolov3/blob/master/export.py)) on MacOS, Windows, and Ubuntu every 24 hours and on every commit. + If this badge is green, all [YOLOv3 GitHub Actions](https://github.com/ultralytics/yolov3/actions) Continuous Integration (CI) tests are currently passing. CI tests verify correct operation of YOLOv3 [training](https://github.com/ultralytics/yolov5/blob/master/train.py), [validation](https://github.com/ultralytics/yolov5/blob/master/val.py), [inference](https://github.com/ultralytics/yolov5/blob/master/detect.py), [export](https://github.com/ultralytics/yolov5/blob/master/export.py) and [benchmarks](https://github.com/ultralytics/yolov5/blob/master/benchmarks.py) on MacOS, Windows, and Ubuntu every 24 hours and on every commit. + + ## YOLOv8 + + Ultralytics YOLOv8 🚀 is our new cutting-edge, state-of-the-art (SOTA) model released at [https://github.com/ultralytics/ultralytics](https://github.com/ultralytics/ultralytics). YOLOv8 is designed to be fast, accurate, and easy to use, making it an excellent choice for a wide range of object detection, image segmentation and image classification tasks. See the [YOLOv8 Docs] for details and get started with: + ```bash + pip install ultralytics + ``` From e7b8da649329bc65922eeb68622b88e5472c4daf Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 11 Feb 2023 02:08:53 +0400 Subject: [PATCH 2585/2595] Update Dockerfile (#2009) --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 12842422..5b3592b4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,7 +10,7 @@ RUN apt update && apt install -y zip htop screen libgl1-mesa-glx COPY requirements.txt . RUN python -m pip install --upgrade pip RUN pip uninstall -y nvidia-tensorboard nvidia-tensorboard-plugin-dlprof -RUN pip install --no-cache -r requirements.txt coremltools onnx gsutil notebook wandb>=0.12.2 +RUN pip install --no-cache -r requirements.txt coremltools onnx gsutil notebook RUN pip install --no-cache -U torch torchvision numpy Pillow # RUN pip install --no-cache torch==1.10.0+cu113 torchvision==0.11.1+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html From 6013704cf575a4fe8661fbcb55b1b3517f7917c3 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 11 Feb 2023 02:13:22 +0400 Subject: [PATCH 2586/2595] Updates --- Dockerfile | 58 ++-- utils/loggers/wandb/README.md | 147 -------- utils/loggers/wandb/__init__.py | 0 utils/loggers/wandb/log_dataset.py | 27 -- utils/loggers/wandb/sweep.py | 41 --- utils/loggers/wandb/sweep.yaml | 143 -------- utils/loggers/wandb/wandb_utils.py | 532 ----------------------------- 7 files changed, 36 insertions(+), 912 deletions(-) delete mode 100644 utils/loggers/wandb/README.md delete mode 100644 utils/loggers/wandb/__init__.py delete mode 100644 utils/loggers/wandb/log_dataset.py delete mode 100644 utils/loggers/wandb/sweep.py delete mode 100644 utils/loggers/wandb/sweep.yaml delete mode 100644 utils/loggers/wandb/wandb_utils.py diff --git a/Dockerfile b/Dockerfile index 5b3592b4..4584b7ed 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,37 +1,51 @@ # YOLOv3 🚀 by Ultralytics, GPL-3.0 license +# Builds ultralytics/yolov3:latest image on DockerHub https://hub.docker.com/r/ultralytics/yolov3 +# Image is CUDA-optimized for YOLOv3 single/multi-GPU training and inference -# Start FROM Nvidia PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorch -FROM nvcr.io/nvidia/pytorch:21.10-py3 +# Start FROM NVIDIA PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorch +# FROM docker.io/pytorch/pytorch:latest +FROM pytorch/pytorch:latest + +# Downloads to user config dir +ADD https://ultralytics.com/assets/Arial.ttf https://ultralytics.com/assets/Arial.Unicode.ttf /root/.config/Ultralytics/ # Install linux packages -RUN apt update && apt install -y zip htop screen libgl1-mesa-glx +ENV DEBIAN_FRONTEND noninteractive +RUN apt update +RUN TZ=Etc/UTC apt install -y tzdata +RUN apt install --no-install-recommends -y gcc git zip curl htop libgl1-mesa-glx libglib2.0-0 libpython3-dev gnupg +# RUN alias python=python3 -# Install python dependencies -COPY requirements.txt . -RUN python -m pip install --upgrade pip -RUN pip uninstall -y nvidia-tensorboard nvidia-tensorboard-plugin-dlprof -RUN pip install --no-cache -r requirements.txt coremltools onnx gsutil notebook -RUN pip install --no-cache -U torch torchvision numpy Pillow -# RUN pip install --no-cache torch==1.10.0+cu113 torchvision==0.11.1+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html +# Security updates +# https://security.snyk.io/vuln/SNYK-UBUNTU1804-OPENSSL-3314796 +RUN apt upgrade --no-install-recommends -y openssl # Create working directory -RUN mkdir -p /usr/src/app +RUN rm -rf /usr/src/app && mkdir -p /usr/src/app WORKDIR /usr/src/app # Copy contents -COPY . /usr/src/app +# COPY . /usr/src/app (issues as not a .git directory) +RUN git clone https://github.com/ultralytics/yolov3 /usr/src/app -# Downloads to user config dir -ADD https://ultralytics.com/assets/Arial.ttf /root/.config/Ultralytics/ +# Install pip packages +COPY requirements.txt . +RUN python3 -m pip install --upgrade pip wheel +RUN pip install --no-cache -r requirements.txt albumentations comet gsutil notebook \ + coremltools onnx onnx-simplifier onnxruntime 'openvino-dev>=2022.3' + # tensorflow tensorflowjs \ # Set environment variables -# ENV HOME=/usr/src/app +ENV OMP_NUM_THREADS=1 + +# Cleanup +ENV DEBIAN_FRONTEND teletype # Usage Examples ------------------------------------------------------------------------------------------------------- # Build and Push -# t=ultralytics/yolov3:latest && sudo docker build -t $t . && sudo docker push $t +# t=ultralytics/yolov3:latest && sudo docker build -f utils/docker/Dockerfile -t $t . && sudo docker push $t # Pull and Run # t=ultralytics/yolov3:latest && sudo docker pull $t && sudo docker run -it --ipc=host --gpus all $t @@ -45,17 +59,17 @@ ADD https://ultralytics.com/assets/Arial.ttf /root/.config/Ultralytics/ # Kill all image-based # sudo docker kill $(sudo docker ps -qa --filter ancestor=ultralytics/yolov3:latest) -# Bash into running container -# sudo docker exec -it 5a9b5863d93d bash - -# Bash into stopped container -# id=$(sudo docker ps -qa) && sudo docker start $id && sudo docker exec -it $id bash +# DockerHub tag update +# t=ultralytics/yolov3:latest tnew=ultralytics/yolov3:v6.2 && sudo docker pull $t && sudo docker tag $t $tnew && sudo docker push $tnew # Clean up -# docker system prune -a --volumes +# sudo docker system prune -a --volumes # Update Ubuntu drivers # https://www.maketecheasier.com/install-nvidia-drivers-ubuntu/ # DDP test # python -m torch.distributed.run --nproc_per_node 2 --master_port 1 train.py --epochs 3 + +# GCP VM from Image +# docker.io/ultralytics/yolov3:latest diff --git a/utils/loggers/wandb/README.md b/utils/loggers/wandb/README.md deleted file mode 100644 index bae57bda..00000000 --- a/utils/loggers/wandb/README.md +++ /dev/null @@ -1,147 +0,0 @@ -📚 This guide explains how to use **Weights & Biases** (W&B) with YOLOv3 🚀. UPDATED 29 September 2021. -* [About Weights & Biases](#about-weights-&-biases) -* [First-Time Setup](#first-time-setup) -* [Viewing runs](#viewing-runs) -* [Advanced Usage: Dataset Versioning and Evaluation](#advanced-usage) -* [Reports: Share your work with the world!](#reports) - -## About Weights & Biases -Think of [W&B](https://wandb.ai/site?utm_campaign=repo_yolo_wandbtutorial) like GitHub for machine learning models. With a few lines of code, save everything you need to debug, compare and reproduce your models — architecture, hyperparameters, git commits, model weights, GPU usage, and even datasets and predictions. - -Used by top researchers including teams at OpenAI, Lyft, Github, and MILA, W&B is part of the new standard of best practices for machine learning. How W&B can help you optimize your machine learning workflows: - - * [Debug](https://wandb.ai/wandb/getting-started/reports/Visualize-Debug-Machine-Learning-Models--VmlldzoyNzY5MDk#Free-2) model performance in real time - * [GPU usage](https://wandb.ai/wandb/getting-started/reports/Visualize-Debug-Machine-Learning-Models--VmlldzoyNzY5MDk#System-4) visualized automatically - * [Custom charts](https://wandb.ai/wandb/customizable-charts/reports/Powerful-Custom-Charts-To-Debug-Model-Peformance--VmlldzoyNzY4ODI) for powerful, extensible visualization - * [Share insights](https://wandb.ai/wandb/getting-started/reports/Visualize-Debug-Machine-Learning-Models--VmlldzoyNzY5MDk#Share-8) interactively with collaborators - * [Optimize hyperparameters](https://docs.wandb.com/sweeps) efficiently - * [Track](https://docs.wandb.com/artifacts) datasets, pipelines, and production models - -## First-Time Setup -
- Toggle Details -When you first train, W&B will prompt you to create a new account and will generate an **API key** for you. If you are an existing user you can retrieve your key from https://wandb.ai/authorize. This key is used to tell W&B where to log your data. You only need to supply your key once, and then it is remembered on the same device. - -W&B will create a cloud **project** (default is 'YOLOv3') for your training runs, and each new training run will be provided a unique run **name** within that project as project/name. You can also manually set your project and run name as: - - ```shell - $ python train.py --project ... --name ... - ``` - -YOLOv3 notebook example: Open In Colab Open In Kaggle -Screen Shot 2021-09-29 at 10 23 13 PM - - -
- -## Viewing Runs -
- Toggle Details -Run information streams from your environment to the W&B cloud console as you train. This allows you to monitor and even cancel runs in realtime . All important information is logged: - - * Training & Validation losses - * Metrics: Precision, Recall, mAP@0.5, mAP@0.5:0.95 - * Learning Rate over time - * A bounding box debugging panel, showing the training progress over time - * GPU: Type, **GPU Utilization**, power, temperature, **CUDA memory usage** - * System: Disk I/0, CPU utilization, RAM memory usage - * Your trained model as W&B Artifact - * Environment: OS and Python types, Git repository and state, **training command** - -

Weights & Biases dashboard

- - -
- -## Advanced Usage -You can leverage W&B artifacts and Tables integration to easily visualize and manage your datasets, models and training evaluations. Here are some quick examples to get you started. -
-

1. Visualize and Version Datasets

- Log, visualize, dynamically query, and understand your data with W&B Tables. You can use the following command to log your dataset as a W&B Table. This will generate a {dataset}_wandb.yaml file which can be used to train from dataset artifact. -
- Usage - Code $ python utils/logger/wandb/log_dataset.py --project ... --name ... --data .. - - ![Screenshot (64)](https://user-images.githubusercontent.com/15766192/128486078-d8433890-98a3-4d12-8986-b6c0e3fc64b9.png) -
- -

2: Train and Log Evaluation simultaneousy

- This is an extension of the previous section, but it'll also training after uploading the dataset. This also evaluation Table - Evaluation table compares your predictions and ground truths across the validation set for each epoch. It uses the references to the already uploaded datasets, - so no images will be uploaded from your system more than once. -
- Usage - Code $ python utils/logger/wandb/log_dataset.py --data .. --upload_data - -![Screenshot (72)](https://user-images.githubusercontent.com/15766192/128979739-4cf63aeb-a76f-483f-8861-1c0100b938a5.png) -
- -

3: Train using dataset artifact

- When you upload a dataset as described in the first section, you get a new config file with an added `_wandb` to its name. This file contains the information that - can be used to train a model directly from the dataset artifact. This also logs evaluation -
- Usage - Code $ python utils/logger/wandb/log_dataset.py --data {data}_wandb.yaml - -![Screenshot (72)](https://user-images.githubusercontent.com/15766192/128979739-4cf63aeb-a76f-483f-8861-1c0100b938a5.png) -
- -

4: Save model checkpoints as artifacts

- To enable saving and versioning checkpoints of your experiment, pass `--save_period n` with the base cammand, where `n` represents checkpoint interval. - You can also log both the dataset and model checkpoints simultaneously. If not passed, only the final model will be logged - -
- Usage - Code $ python train.py --save_period 1 - -![Screenshot (68)](https://user-images.githubusercontent.com/15766192/128726138-ec6c1f60-639d-437d-b4ee-3acd9de47ef3.png) -
- -
- -

5: Resume runs from checkpoint artifacts.

-Any run can be resumed using artifacts if the --resume argument starts with wandb-artifact:// prefix followed by the run path, i.e, wandb-artifact://username/project/runid . This doesn't require the model checkpoint to be present on the local system. - -
- Usage - Code $ python train.py --resume wandb-artifact://{run_path} - -![Screenshot (70)](https://user-images.githubusercontent.com/15766192/128728988-4e84b355-6c87-41ae-a591-14aecf45343e.png) -
- -

6: Resume runs from dataset artifact & checkpoint artifacts.

- Local dataset or model checkpoints are not required. This can be used to resume runs directly on a different device - The syntax is same as the previous section, but you'll need to lof both the dataset and model checkpoints as artifacts, i.e, set bot --upload_dataset or - train from _wandb.yaml file and set --save_period - -
- Usage - Code $ python train.py --resume wandb-artifact://{run_path} - -![Screenshot (70)](https://user-images.githubusercontent.com/15766192/128728988-4e84b355-6c87-41ae-a591-14aecf45343e.png) -
- - - - -

Reports

-W&B Reports can be created from your saved runs for sharing online. Once a report is created you will receive a link you can use to publically share your results. Here is an example report created from the COCO128 tutorial trainings of all YOLOv5 models ([link](https://wandb.ai/glenn-jocher/yolov5_tutorial/reports/YOLOv5-COCO128-Tutorial-Results--VmlldzozMDI5OTY)). - -Weights & Biases Reports - - -## Environments - -YOLOv3 may be run in any of the following up-to-date verified environments (with all dependencies including [CUDA](https://developer.nvidia.com/cuda)/[CUDNN](https://developer.nvidia.com/cudnn), [Python](https://www.python.org/) and [PyTorch](https://pytorch.org/) preinstalled): - -- **Google Colab and Kaggle** notebooks with free GPU: Open In Colab Open In Kaggle -- **Google Cloud** Deep Learning VM. See [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart) -- **Amazon** Deep Learning AMI. See [AWS Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/AWS-Quickstart) -- **Docker Image**. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) Docker Pulls - - -## Status - -![CI CPU testing](https://github.com/ultralytics/yolov3/workflows/CI%20CPU%20testing/badge.svg) - -If this badge is green, all [YOLOv3 GitHub Actions](https://github.com/ultralytics/yolov3/actions) Continuous Integration (CI) tests are currently passing. CI tests verify correct operation of YOLOv3 training ([train.py](https://github.com/ultralytics/yolov3/blob/master/train.py)), validation ([val.py](https://github.com/ultralytics/yolov3/blob/master/val.py)), inference ([detect.py](https://github.com/ultralytics/yolov3/blob/master/detect.py)) and export ([export.py](https://github.com/ultralytics/yolov3/blob/master/export.py)) on MacOS, Windows, and Ubuntu every 24 hours and on every commit. diff --git a/utils/loggers/wandb/__init__.py b/utils/loggers/wandb/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/utils/loggers/wandb/log_dataset.py b/utils/loggers/wandb/log_dataset.py deleted file mode 100644 index d3c77430..00000000 --- a/utils/loggers/wandb/log_dataset.py +++ /dev/null @@ -1,27 +0,0 @@ -import argparse - -from wandb_utils import WandbLogger - -from utils.general import LOGGER - -WANDB_ARTIFACT_PREFIX = 'wandb-artifact://' - - -def create_dataset_artifact(opt): - logger = WandbLogger(opt, None, job_type='Dataset Creation') # TODO: return value unused - if not logger.wandb: - LOGGER.info("install wandb using `pip install wandb` to log the dataset") - - -if __name__ == '__main__': - parser = argparse.ArgumentParser() - parser.add_argument('--data', type=str, default='data/coco128.yaml', help='data.yaml path') - parser.add_argument('--single-cls', action='store_true', help='train as single-class dataset') - parser.add_argument('--project', type=str, default='YOLOv3', help='name of W&B Project') - parser.add_argument('--entity', default=None, help='W&B entity') - parser.add_argument('--name', type=str, default='log dataset', help='name of W&B run') - - opt = parser.parse_args() - opt.resume = False # Explicitly disallow resume check for dataset upload job - - create_dataset_artifact(opt) diff --git a/utils/loggers/wandb/sweep.py b/utils/loggers/wandb/sweep.py deleted file mode 100644 index 5e24f96e..00000000 --- a/utils/loggers/wandb/sweep.py +++ /dev/null @@ -1,41 +0,0 @@ -import sys -from pathlib import Path - -import wandb - -FILE = Path(__file__).resolve() -ROOT = FILE.parents[3] # root directory -if str(ROOT) not in sys.path: - sys.path.append(str(ROOT)) # add ROOT to PATH - -from train import parse_opt, train -from utils.callbacks import Callbacks -from utils.general import increment_path -from utils.torch_utils import select_device - - -def sweep(): - wandb.init() - # Get hyp dict from sweep agent - hyp_dict = vars(wandb.config).get("_items") - - # Workaround: get necessary opt args - opt = parse_opt(known=True) - opt.batch_size = hyp_dict.get("batch_size") - opt.save_dir = str(increment_path(Path(opt.project) / opt.name, exist_ok=opt.exist_ok or opt.evolve)) - opt.epochs = hyp_dict.get("epochs") - opt.nosave = True - opt.data = hyp_dict.get("data") - opt.weights = str(opt.weights) - opt.cfg = str(opt.cfg) - opt.data = str(opt.data) - opt.hyp = str(opt.hyp) - opt.project = str(opt.project) - device = select_device(opt.device, batch_size=opt.batch_size) - - # train - train(hyp_dict, opt, device, callbacks=Callbacks()) - - -if __name__ == "__main__": - sweep() diff --git a/utils/loggers/wandb/sweep.yaml b/utils/loggers/wandb/sweep.yaml deleted file mode 100644 index c7790d75..00000000 --- a/utils/loggers/wandb/sweep.yaml +++ /dev/null @@ -1,143 +0,0 @@ -# Hyperparameters for training -# To set range- -# Provide min and max values as: -# parameter: -# -# min: scalar -# max: scalar -# OR -# -# Set a specific list of search space- -# parameter: -# values: [scalar1, scalar2, scalar3...] -# -# You can use grid, bayesian and hyperopt search strategy -# For more info on configuring sweeps visit - https://docs.wandb.ai/guides/sweeps/configuration - -program: utils/loggers/wandb/sweep.py -method: random -metric: - name: metrics/mAP_0.5 - goal: maximize - -parameters: - # hyperparameters: set either min, max range or values list - data: - value: "data/coco128.yaml" - batch_size: - values: [64] - epochs: - values: [10] - - lr0: - distribution: uniform - min: 1e-5 - max: 1e-1 - lrf: - distribution: uniform - min: 0.01 - max: 1.0 - momentum: - distribution: uniform - min: 0.6 - max: 0.98 - weight_decay: - distribution: uniform - min: 0.0 - max: 0.001 - warmup_epochs: - distribution: uniform - min: 0.0 - max: 5.0 - warmup_momentum: - distribution: uniform - min: 0.0 - max: 0.95 - warmup_bias_lr: - distribution: uniform - min: 0.0 - max: 0.2 - box: - distribution: uniform - min: 0.02 - max: 0.2 - cls: - distribution: uniform - min: 0.2 - max: 4.0 - cls_pw: - distribution: uniform - min: 0.5 - max: 2.0 - obj: - distribution: uniform - min: 0.2 - max: 4.0 - obj_pw: - distribution: uniform - min: 0.5 - max: 2.0 - iou_t: - distribution: uniform - min: 0.1 - max: 0.7 - anchor_t: - distribution: uniform - min: 2.0 - max: 8.0 - fl_gamma: - distribution: uniform - min: 0.0 - max: 0.1 - hsv_h: - distribution: uniform - min: 0.0 - max: 0.1 - hsv_s: - distribution: uniform - min: 0.0 - max: 0.9 - hsv_v: - distribution: uniform - min: 0.0 - max: 0.9 - degrees: - distribution: uniform - min: 0.0 - max: 45.0 - translate: - distribution: uniform - min: 0.0 - max: 0.9 - scale: - distribution: uniform - min: 0.0 - max: 0.9 - shear: - distribution: uniform - min: 0.0 - max: 10.0 - perspective: - distribution: uniform - min: 0.0 - max: 0.001 - flipud: - distribution: uniform - min: 0.0 - max: 1.0 - fliplr: - distribution: uniform - min: 0.0 - max: 1.0 - mosaic: - distribution: uniform - min: 0.0 - max: 1.0 - mixup: - distribution: uniform - min: 0.0 - max: 1.0 - copy_paste: - distribution: uniform - min: 0.0 - max: 1.0 diff --git a/utils/loggers/wandb/wandb_utils.py b/utils/loggers/wandb/wandb_utils.py deleted file mode 100644 index 7087e4e9..00000000 --- a/utils/loggers/wandb/wandb_utils.py +++ /dev/null @@ -1,532 +0,0 @@ -"""Utilities and tools for tracking runs with Weights & Biases.""" - -import logging -import os -import sys -from contextlib import contextmanager -from pathlib import Path -from typing import Dict - -import pkg_resources as pkg -import yaml -from tqdm import tqdm - -FILE = Path(__file__).resolve() -ROOT = FILE.parents[3] # root directory -if str(ROOT) not in sys.path: - sys.path.append(str(ROOT)) # add ROOT to PATH - -from utils.datasets import LoadImagesAndLabels, img2label_paths -from utils.general import LOGGER, check_dataset, check_file - -try: - import wandb - - assert hasattr(wandb, '__version__') # verify package import not local dir -except (ImportError, AssertionError): - wandb = None - -RANK = int(os.getenv('RANK', -1)) -WANDB_ARTIFACT_PREFIX = 'wandb-artifact://' - - -def remove_prefix(from_string, prefix=WANDB_ARTIFACT_PREFIX): - return from_string[len(prefix):] - - -def check_wandb_config_file(data_config_file): - wandb_config = '_wandb.'.join(data_config_file.rsplit('.', 1)) # updated data.yaml path - if Path(wandb_config).is_file(): - return wandb_config - return data_config_file - - -def check_wandb_dataset(data_file): - is_trainset_wandb_artifact = False - is_valset_wandb_artifact = False - if check_file(data_file) and data_file.endswith('.yaml'): - with open(data_file, errors='ignore') as f: - data_dict = yaml.safe_load(f) - is_trainset_wandb_artifact = (isinstance(data_dict['train'], str) and - data_dict['train'].startswith(WANDB_ARTIFACT_PREFIX)) - is_valset_wandb_artifact = (isinstance(data_dict['val'], str) and - data_dict['val'].startswith(WANDB_ARTIFACT_PREFIX)) - if is_trainset_wandb_artifact or is_valset_wandb_artifact: - return data_dict - else: - return check_dataset(data_file) - - -def get_run_info(run_path): - run_path = Path(remove_prefix(run_path, WANDB_ARTIFACT_PREFIX)) - run_id = run_path.stem - project = run_path.parent.stem - entity = run_path.parent.parent.stem - model_artifact_name = 'run_' + run_id + '_model' - return entity, project, run_id, model_artifact_name - - -def check_wandb_resume(opt): - process_wandb_config_ddp_mode(opt) if RANK not in [-1, 0] else None - if isinstance(opt.resume, str): - if opt.resume.startswith(WANDB_ARTIFACT_PREFIX): - if RANK not in [-1, 0]: # For resuming DDP runs - entity, project, run_id, model_artifact_name = get_run_info(opt.resume) - api = wandb.Api() - artifact = api.artifact(entity + '/' + project + '/' + model_artifact_name + ':latest') - modeldir = artifact.download() - opt.weights = str(Path(modeldir) / "last.pt") - return True - return None - - -def process_wandb_config_ddp_mode(opt): - with open(check_file(opt.data), errors='ignore') as f: - data_dict = yaml.safe_load(f) # data dict - train_dir, val_dir = None, None - if isinstance(data_dict['train'], str) and data_dict['train'].startswith(WANDB_ARTIFACT_PREFIX): - api = wandb.Api() - train_artifact = api.artifact(remove_prefix(data_dict['train']) + ':' + opt.artifact_alias) - train_dir = train_artifact.download() - train_path = Path(train_dir) / 'data/images/' - data_dict['train'] = str(train_path) - - if isinstance(data_dict['val'], str) and data_dict['val'].startswith(WANDB_ARTIFACT_PREFIX): - api = wandb.Api() - val_artifact = api.artifact(remove_prefix(data_dict['val']) + ':' + opt.artifact_alias) - val_dir = val_artifact.download() - val_path = Path(val_dir) / 'data/images/' - data_dict['val'] = str(val_path) - if train_dir or val_dir: - ddp_data_path = str(Path(val_dir) / 'wandb_local_data.yaml') - with open(ddp_data_path, 'w') as f: - yaml.safe_dump(data_dict, f) - opt.data = ddp_data_path - - -class WandbLogger(): - """Log training runs, datasets, models, and predictions to Weights & Biases. - - This logger sends information to W&B at wandb.ai. By default, this information - includes hyperparameters, system configuration and metrics, model metrics, - and basic data metrics and analyses. - - By providing additional command line arguments to train.py, datasets, - models and predictions can also be logged. - - For more on how this logger is used, see the Weights & Biases documentation: - https://docs.wandb.com/guides/integrations/yolov5 - """ - - def __init__(self, opt, run_id=None, job_type='Training'): - """ - - Initialize WandbLogger instance - - Upload dataset if opt.upload_dataset is True - - Setup trainig processes if job_type is 'Training' - - arguments: - opt (namespace) -- Commandline arguments for this run - run_id (str) -- Run ID of W&B run to be resumed - job_type (str) -- To set the job_type for this run - - """ - # Pre-training routine -- - self.job_type = job_type - self.wandb, self.wandb_run = wandb, None if not wandb else wandb.run - self.val_artifact, self.train_artifact = None, None - self.train_artifact_path, self.val_artifact_path = None, None - self.result_artifact = None - self.val_table, self.result_table = None, None - self.bbox_media_panel_images = [] - self.val_table_path_map = None - self.max_imgs_to_log = 16 - self.wandb_artifact_data_dict = None - self.data_dict = None - # It's more elegant to stick to 1 wandb.init call, - # but useful config data is overwritten in the WandbLogger's wandb.init call - if isinstance(opt.resume, str): # checks resume from artifact - if opt.resume.startswith(WANDB_ARTIFACT_PREFIX): - entity, project, run_id, model_artifact_name = get_run_info(opt.resume) - model_artifact_name = WANDB_ARTIFACT_PREFIX + model_artifact_name - assert wandb, 'install wandb to resume wandb runs' - # Resume wandb-artifact:// runs here| workaround for not overwriting wandb.config - self.wandb_run = wandb.init(id=run_id, - project=project, - entity=entity, - resume='allow', - allow_val_change=True) - opt.resume = model_artifact_name - elif self.wandb: - self.wandb_run = wandb.init(config=opt, - resume="allow", - project='YOLOv3' if opt.project == 'runs/train' else Path(opt.project).stem, - entity=opt.entity, - name=opt.name if opt.name != 'exp' else None, - job_type=job_type, - id=run_id, - allow_val_change=True) if not wandb.run else wandb.run - if self.wandb_run: - if self.job_type == 'Training': - if opt.upload_dataset: - if not opt.resume: - self.wandb_artifact_data_dict = self.check_and_upload_dataset(opt) - - if opt.resume: - # resume from artifact - if isinstance(opt.resume, str) and opt.resume.startswith(WANDB_ARTIFACT_PREFIX): - self.data_dict = dict(self.wandb_run.config.data_dict) - else: # local resume - self.data_dict = check_wandb_dataset(opt.data) - else: - self.data_dict = check_wandb_dataset(opt.data) - self.wandb_artifact_data_dict = self.wandb_artifact_data_dict or self.data_dict - - # write data_dict to config. useful for resuming from artifacts. Do this only when not resuming. - self.wandb_run.config.update({'data_dict': self.wandb_artifact_data_dict}, - allow_val_change=True) - self.setup_training(opt) - - if self.job_type == 'Dataset Creation': - self.data_dict = self.check_and_upload_dataset(opt) - - def check_and_upload_dataset(self, opt): - """ - Check if the dataset format is compatible and upload it as W&B artifact - - arguments: - opt (namespace)-- Commandline arguments for current run - - returns: - Updated dataset info dictionary where local dataset paths are replaced by WAND_ARFACT_PREFIX links. - """ - assert wandb, 'Install wandb to upload dataset' - config_path = self.log_dataset_artifact(opt.data, - opt.single_cls, - 'YOLOv3' if opt.project == 'runs/train' else Path(opt.project).stem) - LOGGER.info(f"Created dataset config file {config_path}") - with open(config_path, errors='ignore') as f: - wandb_data_dict = yaml.safe_load(f) - return wandb_data_dict - - def setup_training(self, opt): - """ - Setup the necessary processes for training YOLO models: - - Attempt to download model checkpoint and dataset artifacts if opt.resume stats with WANDB_ARTIFACT_PREFIX - - Update data_dict, to contain info of previous run if resumed and the paths of dataset artifact if downloaded - - Setup log_dict, initialize bbox_interval - - arguments: - opt (namespace) -- commandline arguments for this run - - """ - self.log_dict, self.current_epoch = {}, 0 - self.bbox_interval = opt.bbox_interval - if isinstance(opt.resume, str): - modeldir, _ = self.download_model_artifact(opt) - if modeldir: - self.weights = Path(modeldir) / "last.pt" - config = self.wandb_run.config - opt.weights, opt.save_period, opt.batch_size, opt.bbox_interval, opt.epochs, opt.hyp = str( - self.weights), config.save_period, config.batch_size, config.bbox_interval, config.epochs, \ - config.hyp - data_dict = self.data_dict - if self.val_artifact is None: # If --upload_dataset is set, use the existing artifact, don't download - self.train_artifact_path, self.train_artifact = self.download_dataset_artifact(data_dict.get('train'), - opt.artifact_alias) - self.val_artifact_path, self.val_artifact = self.download_dataset_artifact(data_dict.get('val'), - opt.artifact_alias) - - if self.train_artifact_path is not None: - train_path = Path(self.train_artifact_path) / 'data/images/' - data_dict['train'] = str(train_path) - if self.val_artifact_path is not None: - val_path = Path(self.val_artifact_path) / 'data/images/' - data_dict['val'] = str(val_path) - - if self.val_artifact is not None: - self.result_artifact = wandb.Artifact("run_" + wandb.run.id + "_progress", "evaluation") - self.result_table = wandb.Table(["epoch", "id", "ground truth", "prediction", "avg_confidence"]) - self.val_table = self.val_artifact.get("val") - if self.val_table_path_map is None: - self.map_val_table_path() - if opt.bbox_interval == -1: - self.bbox_interval = opt.bbox_interval = (opt.epochs // 10) if opt.epochs > 10 else 1 - train_from_artifact = self.train_artifact_path is not None and self.val_artifact_path is not None - # Update the the data_dict to point to local artifacts dir - if train_from_artifact: - self.data_dict = data_dict - - def download_dataset_artifact(self, path, alias): - """ - download the model checkpoint artifact if the path starts with WANDB_ARTIFACT_PREFIX - - arguments: - path -- path of the dataset to be used for training - alias (str)-- alias of the artifact to be download/used for training - - returns: - (str, wandb.Artifact) -- path of the downladed dataset and it's corresponding artifact object if dataset - is found otherwise returns (None, None) - """ - if isinstance(path, str) and path.startswith(WANDB_ARTIFACT_PREFIX): - artifact_path = Path(remove_prefix(path, WANDB_ARTIFACT_PREFIX) + ":" + alias) - dataset_artifact = wandb.use_artifact(artifact_path.as_posix().replace("\\", "/")) - assert dataset_artifact is not None, "'Error: W&B dataset artifact doesn\'t exist'" - datadir = dataset_artifact.download() - return datadir, dataset_artifact - return None, None - - def download_model_artifact(self, opt): - """ - download the model checkpoint artifact if the resume path starts with WANDB_ARTIFACT_PREFIX - - arguments: - opt (namespace) -- Commandline arguments for this run - """ - if opt.resume.startswith(WANDB_ARTIFACT_PREFIX): - model_artifact = wandb.use_artifact(remove_prefix(opt.resume, WANDB_ARTIFACT_PREFIX) + ":latest") - assert model_artifact is not None, 'Error: W&B model artifact doesn\'t exist' - modeldir = model_artifact.download() - epochs_trained = model_artifact.metadata.get('epochs_trained') - total_epochs = model_artifact.metadata.get('total_epochs') - is_finished = total_epochs is None - assert not is_finished, 'training is finished, can only resume incomplete runs.' - return modeldir, model_artifact - return None, None - - def log_model(self, path, opt, epoch, fitness_score, best_model=False): - """ - Log the model checkpoint as W&B artifact - - arguments: - path (Path) -- Path of directory containing the checkpoints - opt (namespace) -- Command line arguments for this run - epoch (int) -- Current epoch number - fitness_score (float) -- fitness score for current epoch - best_model (boolean) -- Boolean representing if the current checkpoint is the best yet. - """ - model_artifact = wandb.Artifact('run_' + wandb.run.id + '_model', type='model', metadata={ - 'original_url': str(path), - 'epochs_trained': epoch + 1, - 'save period': opt.save_period, - 'project': opt.project, - 'total_epochs': opt.epochs, - 'fitness_score': fitness_score - }) - model_artifact.add_file(str(path / 'last.pt'), name='last.pt') - wandb.log_artifact(model_artifact, - aliases=['latest', 'last', 'epoch ' + str(self.current_epoch), 'best' if best_model else '']) - LOGGER.info(f"Saving model artifact on epoch {epoch + 1}") - - def log_dataset_artifact(self, data_file, single_cls, project, overwrite_config=False): - """ - Log the dataset as W&B artifact and return the new data file with W&B links - - arguments: - data_file (str) -- the .yaml file with information about the dataset like - path, classes etc. - single_class (boolean) -- train multi-class data as single-class - project (str) -- project name. Used to construct the artifact path - overwrite_config (boolean) -- overwrites the data.yaml file if set to true otherwise creates a new - file with _wandb postfix. Eg -> data_wandb.yaml - - returns: - the new .yaml file with artifact links. it can be used to start training directly from artifacts - """ - self.data_dict = check_dataset(data_file) # parse and check - data = dict(self.data_dict) - nc, names = (1, ['item']) if single_cls else (int(data['nc']), data['names']) - names = {k: v for k, v in enumerate(names)} # to index dictionary - self.train_artifact = self.create_dataset_table(LoadImagesAndLabels( - data['train'], rect=True, batch_size=1), names, name='train') if data.get('train') else None - self.val_artifact = self.create_dataset_table(LoadImagesAndLabels( - data['val'], rect=True, batch_size=1), names, name='val') if data.get('val') else None - if data.get('train'): - data['train'] = WANDB_ARTIFACT_PREFIX + str(Path(project) / 'train') - if data.get('val'): - data['val'] = WANDB_ARTIFACT_PREFIX + str(Path(project) / 'val') - path = Path(data_file).stem - path = (path if overwrite_config else path + '_wandb') + '.yaml' # updated data.yaml path - data.pop('download', None) - data.pop('path', None) - with open(path, 'w') as f: - yaml.safe_dump(data, f) - - if self.job_type == 'Training': # builds correct artifact pipeline graph - self.wandb_run.use_artifact(self.val_artifact) - self.wandb_run.use_artifact(self.train_artifact) - self.val_artifact.wait() - self.val_table = self.val_artifact.get('val') - self.map_val_table_path() - else: - self.wandb_run.log_artifact(self.train_artifact) - self.wandb_run.log_artifact(self.val_artifact) - return path - - def map_val_table_path(self): - """ - Map the validation dataset Table like name of file -> it's id in the W&B Table. - Useful for - referencing artifacts for evaluation. - """ - self.val_table_path_map = {} - LOGGER.info("Mapping dataset") - for i, data in enumerate(tqdm(self.val_table.data)): - self.val_table_path_map[data[3]] = data[0] - - def create_dataset_table(self, dataset: LoadImagesAndLabels, class_to_id: Dict[int,str], name: str = 'dataset'): - """ - Create and return W&B artifact containing W&B Table of the dataset. - - arguments: - dataset -- instance of LoadImagesAndLabels class used to iterate over the data to build Table - class_to_id -- hash map that maps class ids to labels - name -- name of the artifact - - returns: - dataset artifact to be logged or used - """ - # TODO: Explore multiprocessing to slpit this loop parallely| This is essential for speeding up the the logging - artifact = wandb.Artifact(name=name, type="dataset") - img_files = tqdm([dataset.path]) if isinstance(dataset.path, str) and Path(dataset.path).is_dir() else None - img_files = tqdm(dataset.img_files) if not img_files else img_files - for img_file in img_files: - if Path(img_file).is_dir(): - artifact.add_dir(img_file, name='data/images') - labels_path = 'labels'.join(dataset.path.rsplit('images', 1)) - artifact.add_dir(labels_path, name='data/labels') - else: - artifact.add_file(img_file, name='data/images/' + Path(img_file).name) - label_file = Path(img2label_paths([img_file])[0]) - artifact.add_file(str(label_file), - name='data/labels/' + label_file.name) if label_file.exists() else None - table = wandb.Table(columns=["id", "train_image", "Classes", "name"]) - class_set = wandb.Classes([{'id': id, 'name': name} for id, name in class_to_id.items()]) - for si, (img, labels, paths, shapes) in enumerate(tqdm(dataset)): - box_data, img_classes = [], {} - for cls, *xywh in labels[:, 1:].tolist(): - cls = int(cls) - box_data.append({"position": {"middle": [xywh[0], xywh[1]], "width": xywh[2], "height": xywh[3]}, - "class_id": cls, - "box_caption": "%s" % (class_to_id[cls])}) - img_classes[cls] = class_to_id[cls] - boxes = {"ground_truth": {"box_data": box_data, "class_labels": class_to_id}} # inference-space - table.add_data(si, wandb.Image(paths, classes=class_set, boxes=boxes), list(img_classes.values()), - Path(paths).name) - artifact.add(table, name) - return artifact - - def log_training_progress(self, predn, path, names): - """ - Build evaluation Table. Uses reference from validation dataset table. - - arguments: - predn (list): list of predictions in the native space in the format - [xmin, ymin, xmax, ymax, confidence, class] - path (str): local path of the current evaluation image - names (dict(int, str)): hash map that maps class ids to labels - """ - class_set = wandb.Classes([{'id': id, 'name': name} for id, name in names.items()]) - box_data = [] - total_conf = 0 - for *xyxy, conf, cls in predn.tolist(): - if conf >= 0.25: - box_data.append( - {"position": {"minX": xyxy[0], "minY": xyxy[1], "maxX": xyxy[2], "maxY": xyxy[3]}, - "class_id": int(cls), - "box_caption": f"{names[cls]} {conf:.3f}", - "scores": {"class_score": conf}, - "domain": "pixel"}) - total_conf += conf - boxes = {"predictions": {"box_data": box_data, "class_labels": names}} # inference-space - id = self.val_table_path_map[Path(path).name] - self.result_table.add_data(self.current_epoch, - id, - self.val_table.data[id][1], - wandb.Image(self.val_table.data[id][1], boxes=boxes, classes=class_set), - total_conf / max(1, len(box_data)) - ) - - def val_one_image(self, pred, predn, path, names, im): - """ - Log validation data for one image. updates the result Table if validation dataset is uploaded and log bbox media panel - - arguments: - pred (list): list of scaled predictions in the format - [xmin, ymin, xmax, ymax, confidence, class] - predn (list): list of predictions in the native space - [xmin, ymin, xmax, ymax, confidence, class] - path (str): local path of the current evaluation image - """ - if self.val_table and self.result_table: # Log Table if Val dataset is uploaded as artifact - self.log_training_progress(predn, path, names) - - if len(self.bbox_media_panel_images) < self.max_imgs_to_log and self.current_epoch > 0: - if self.current_epoch % self.bbox_interval == 0: - box_data = [{"position": {"minX": xyxy[0], "minY": xyxy[1], "maxX": xyxy[2], "maxY": xyxy[3]}, - "class_id": int(cls), - "box_caption": f"{names[cls]} {conf:.3f}", - "scores": {"class_score": conf}, - "domain": "pixel"} for *xyxy, conf, cls in pred.tolist()] - boxes = {"predictions": {"box_data": box_data, "class_labels": names}} # inference-space - self.bbox_media_panel_images.append(wandb.Image(im, boxes=boxes, caption=path.name)) - - def log(self, log_dict): - """ - save the metrics to the logging dictionary - - arguments: - log_dict (Dict) -- metrics/media to be logged in current step - """ - if self.wandb_run: - for key, value in log_dict.items(): - self.log_dict[key] = value - - def end_epoch(self, best_result=False): - """ - commit the log_dict, model artifacts and Tables to W&B and flush the log_dict. - - arguments: - best_result (boolean): Boolean representing if the result of this evaluation is best or not - """ - if self.wandb_run: - with all_logging_disabled(): - if self.bbox_media_panel_images: - self.log_dict["BoundingBoxDebugger"] = self.bbox_media_panel_images - try: - wandb.log(self.log_dict) - except BaseException as e: - LOGGER.info(f"An error occurred in wandb logger. The training will proceed without interruption. More info\n{e}") - self.wandb_run.finish() - self.wandb_run = None - - self.log_dict = {} - self.bbox_media_panel_images = [] - if self.result_artifact: - self.result_artifact.add(self.result_table, 'result') - wandb.log_artifact(self.result_artifact, aliases=['latest', 'last', 'epoch ' + str(self.current_epoch), - ('best' if best_result else '')]) - - wandb.log({"evaluation": self.result_table}) - self.result_table = wandb.Table(["epoch", "id", "ground truth", "prediction", "avg_confidence"]) - self.result_artifact = wandb.Artifact("run_" + wandb.run.id + "_progress", "evaluation") - - def finish_run(self): - """ - Log metrics if any and finish the current W&B run - """ - if self.wandb_run: - if self.log_dict: - with all_logging_disabled(): - wandb.log(self.log_dict) - wandb.run.finish() - - -@contextmanager -def all_logging_disabled(highest_level=logging.CRITICAL): - """ source - https://gist.github.com/simon-weber/7853144 - A context manager that will prevent any logging messages triggered during the body from being processed. - :param highest_level: the maximum logging level in use. - This would only need to be changed if a custom level greater than CRITICAL is defined. - """ - previous_level = logging.root.manager.disable - logging.disable(highest_level) - try: - yield - finally: - logging.disable(previous_level) From 1a2d5c6a5a1269327e1caca46c362821bd186152 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 11 Feb 2023 02:15:51 +0400 Subject: [PATCH 2587/2595] Update Dockerfile (#2010) * Update Dockerfile * Update Dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 4584b7ed..ce3c4667 100644 --- a/Dockerfile +++ b/Dockerfile @@ -45,7 +45,7 @@ ENV DEBIAN_FRONTEND teletype # Usage Examples ------------------------------------------------------------------------------------------------------- # Build and Push -# t=ultralytics/yolov3:latest && sudo docker build -f utils/docker/Dockerfile -t $t . && sudo docker push $t +# t=ultralytics/yolov3:latest && sudo docker build -f Dockerfile -t $t . && sudo docker push $t # Pull and Run # t=ultralytics/yolov3:latest && sudo docker pull $t && sudo docker run -it --ipc=host --gpus all $t From f50bcfcc3e019aaa1ece410158acf3b28f3a25e5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 11 Feb 2023 15:20:10 +0400 Subject: [PATCH 2588/2595] YOLOv3 general updates, improvements and fixes (#2011) * YOLOv3 updates * Add missing files * Reformat * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Reformat * Reformat * Reformat * Reformat * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .dockerignore | 4 +- .github/FUNDING.yml | 5 - .github/ISSUE_TEMPLATE/bug-report.yml | 8 +- .github/ISSUE_TEMPLATE/config.yml | 6 +- .github/ISSUE_TEMPLATE/feature-request.yml | 8 +- .github/ISSUE_TEMPLATE/question.yml | 4 +- .github/PULL_REQUEST_TEMPLATE.md | 9 + .github/workflows/ci-testing.yml | 47 +- .github/workflows/docker.yml | 57 + .github/workflows/greetings.yml | 16 +- .github/workflows/rebase.yml | 21 - .github/workflows/stale.yml | 18 +- .github/workflows/translate-readme.yml | 26 + .gitignore | 9 +- .pre-commit-config.yaml | 70 +- CITATION.cff | 14 + CONTRIBUTING.md | 51 +- README.md | 260 ++- README.zh-CN.md | 532 ++++++ benchmarks.py | 169 ++ classify/predict.py | 226 +++ classify/train.py | 333 ++++ classify/tutorial.ipynb | 1480 +++++++++++++++++ classify/val.py | 170 ++ data/Argoverse.yaml | 21 +- data/GlobalWheat2020.yaml | 11 +- data/ImageNet.yaml | 1022 ++++++++++++ data/SKU-110K.yaml | 11 +- data/VisDrone.yaml | 21 +- data/coco.yaml | 100 +- data/coco128-seg.yaml | 101 ++ data/coco128.yaml | 97 +- data/hyps/hyp.Objects365.yaml | 34 + data/hyps/hyp.VOC.yaml | 40 + ....scratch.yaml => hyp.no-augmentation.yaml} | 29 +- data/hyps/hyp.scratch-high.yaml | 2 +- data/objects365.yaml | 420 ++++- data/scripts/download_weights.sh | 20 +- data/scripts/get_coco.sh | 47 +- data/scripts/get_coco128.sh | 4 +- data/scripts/get_imagenet.sh | 51 + data/voc.yaml | 48 +- data/xView.yaml | 81 +- detect.py | 155 +- export.py | 798 ++++++--- hubconf.py | 154 +- models/common.py | 716 +++++--- models/experimental.py | 68 +- models/hub/anchors.yaml | 59 + models/hub/yolov5-bifpn.yaml | 48 + models/hub/yolov5-fpn.yaml | 42 + models/hub/yolov5-p2.yaml | 54 + models/hub/yolov5-p34.yaml | 41 + models/hub/yolov5-p6.yaml | 56 + models/hub/yolov5-p7.yaml | 67 + models/hub/yolov5-panet.yaml | 48 + models/hub/yolov5l6.yaml | 60 + models/hub/yolov5m6.yaml | 60 + models/hub/yolov5n6.yaml | 60 + models/hub/yolov5s-LeakyReLU.yaml | 49 + models/hub/yolov5s-ghost.yaml | 48 + models/hub/yolov5s-transformer.yaml | 48 + models/hub/yolov5s6.yaml | 60 + models/hub/yolov5x6.yaml | 60 + models/segment/yolov5l-seg.yaml | 48 + models/segment/yolov5m-seg.yaml | 48 + models/segment/yolov5n-seg.yaml | 48 + models/segment/yolov5s-seg.yaml | 48 + models/segment/yolov5x-seg.yaml | 48 + models/tf.py | 450 +++-- models/yolo.py | 288 ++-- models/yolov5l.yaml | 48 + models/yolov5m.yaml | 48 + models/yolov5n.yaml | 48 + models/yolov5s.yaml | 48 + models/yolov5x.yaml | 48 + requirements.txt | 30 +- segment/predict.py | 284 ++++ segment/train.py | 659 ++++++++ segment/tutorial.ipynb | 594 +++++++ segment/val.py | 473 ++++++ setup.cfg | 45 +- train.py | 488 +++--- tutorial.ipynb | 1263 +++++++------- utils/__init__.py | 74 +- utils/activations.py | 22 +- utils/augmentations.py | 154 +- utils/autoanchor.py | 69 +- utils/autobatch.py | 49 +- utils/aws/__init__.py | 0 utils/aws/mime.sh | 26 + utils/aws/resume.py | 40 + utils/aws/userdata.sh | 27 + utils/callbacks.py | 82 +- utils/dataloaders.py | 1221 ++++++++++++++ utils/datasets.py | 1036 ------------ Dockerfile => utils/docker/Dockerfile | 18 +- utils/docker/Dockerfile-arm64 | 41 + utils/docker/Dockerfile-cpu | 42 + utils/downloads.py | 169 +- utils/flask_rest_api/README.md | 73 + utils/flask_rest_api/example_request.py | 19 + utils/flask_rest_api/restapi.py | 48 + utils/general.py | 960 +++++++---- utils/google_app_engine/Dockerfile | 25 + .../additional_requirements.txt | 4 + utils/google_app_engine/app.yaml | 14 + utils/loggers/__init__.py | 344 +++- utils/loggers/clearml/README.md | 271 +++ utils/loggers/clearml/__init__.py | 0 utils/loggers/clearml/clearml_utils.py | 164 ++ utils/loggers/clearml/hpo.py | 84 + utils/loggers/comet/README.md | 284 ++++ utils/loggers/comet/__init__.py | 508 ++++++ utils/loggers/comet/comet_utils.py | 150 ++ utils/loggers/comet/hpo.py | 118 ++ utils/loggers/comet/optimizer_config.json | 209 +++ utils/loggers/wandb/__init__.py | 0 utils/loggers/wandb/wandb_utils.py | 193 +++ utils/metrics.py | 201 ++- utils/plots.py | 201 ++- utils/segment/__init__.py | 0 utils/segment/augmentations.py | 104 ++ utils/segment/dataloaders.py | 332 ++++ utils/segment/general.py | 160 ++ utils/segment/loss.py | 186 +++ utils/segment/metrics.py | 210 +++ utils/segment/plots.py | 143 ++ utils/torch_utils.py | 292 +++- utils/triton.py | 85 + val.py | 250 +-- 131 files changed, 17923 insertions(+), 4287 deletions(-) delete mode 100644 .github/FUNDING.yml create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/workflows/docker.yml delete mode 100644 .github/workflows/rebase.yml create mode 100644 .github/workflows/translate-readme.yml create mode 100644 CITATION.cff create mode 100644 README.zh-CN.md create mode 100644 benchmarks.py create mode 100644 classify/predict.py create mode 100644 classify/train.py create mode 100644 classify/tutorial.ipynb create mode 100644 classify/val.py create mode 100644 data/ImageNet.yaml create mode 100644 data/coco128-seg.yaml create mode 100644 data/hyps/hyp.Objects365.yaml create mode 100644 data/hyps/hyp.VOC.yaml rename data/hyps/{hyp.scratch.yaml => hyp.no-augmentation.yaml} (54%) mode change 100644 => 100755 data/scripts/get_coco128.sh create mode 100755 data/scripts/get_imagenet.sh create mode 100644 models/hub/anchors.yaml create mode 100644 models/hub/yolov5-bifpn.yaml create mode 100644 models/hub/yolov5-fpn.yaml create mode 100644 models/hub/yolov5-p2.yaml create mode 100644 models/hub/yolov5-p34.yaml create mode 100644 models/hub/yolov5-p6.yaml create mode 100644 models/hub/yolov5-p7.yaml create mode 100644 models/hub/yolov5-panet.yaml create mode 100644 models/hub/yolov5l6.yaml create mode 100644 models/hub/yolov5m6.yaml create mode 100644 models/hub/yolov5n6.yaml create mode 100644 models/hub/yolov5s-LeakyReLU.yaml create mode 100644 models/hub/yolov5s-ghost.yaml create mode 100644 models/hub/yolov5s-transformer.yaml create mode 100644 models/hub/yolov5s6.yaml create mode 100644 models/hub/yolov5x6.yaml create mode 100644 models/segment/yolov5l-seg.yaml create mode 100644 models/segment/yolov5m-seg.yaml create mode 100644 models/segment/yolov5n-seg.yaml create mode 100644 models/segment/yolov5s-seg.yaml create mode 100644 models/segment/yolov5x-seg.yaml create mode 100644 models/yolov5l.yaml create mode 100644 models/yolov5m.yaml create mode 100644 models/yolov5n.yaml create mode 100644 models/yolov5s.yaml create mode 100644 models/yolov5x.yaml mode change 100755 => 100644 requirements.txt create mode 100644 segment/predict.py create mode 100644 segment/train.py create mode 100644 segment/tutorial.ipynb create mode 100644 segment/val.py create mode 100644 utils/aws/__init__.py create mode 100644 utils/aws/mime.sh create mode 100644 utils/aws/resume.py create mode 100644 utils/aws/userdata.sh create mode 100644 utils/dataloaders.py delete mode 100755 utils/datasets.py rename Dockerfile => utils/docker/Dockerfile (79%) create mode 100644 utils/docker/Dockerfile-arm64 create mode 100644 utils/docker/Dockerfile-cpu create mode 100644 utils/flask_rest_api/README.md create mode 100644 utils/flask_rest_api/example_request.py create mode 100644 utils/flask_rest_api/restapi.py mode change 100755 => 100644 utils/general.py create mode 100644 utils/google_app_engine/Dockerfile create mode 100644 utils/google_app_engine/additional_requirements.txt create mode 100644 utils/google_app_engine/app.yaml create mode 100644 utils/loggers/clearml/README.md create mode 100644 utils/loggers/clearml/__init__.py create mode 100644 utils/loggers/clearml/clearml_utils.py create mode 100644 utils/loggers/clearml/hpo.py create mode 100644 utils/loggers/comet/README.md create mode 100644 utils/loggers/comet/__init__.py create mode 100644 utils/loggers/comet/comet_utils.py create mode 100644 utils/loggers/comet/hpo.py create mode 100644 utils/loggers/comet/optimizer_config.json create mode 100644 utils/loggers/wandb/__init__.py create mode 100644 utils/loggers/wandb/wandb_utils.py create mode 100644 utils/segment/__init__.py create mode 100644 utils/segment/augmentations.py create mode 100644 utils/segment/dataloaders.py create mode 100644 utils/segment/general.py create mode 100644 utils/segment/loss.py create mode 100644 utils/segment/metrics.py create mode 100644 utils/segment/plots.py create mode 100644 utils/triton.py diff --git a/.dockerignore b/.dockerignore index 6c2f2b9b..3b669254 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,5 +1,5 @@ # Repo-specific DockerIgnore ------------------------------------------------------------------------------------------- -#.git +.git .cache .idea runs @@ -15,6 +15,7 @@ data/samples/* **/*.pt **/*.pth **/*.onnx +**/*.engine **/*.mlmodel **/*.torchscript **/*.torchscript.pt @@ -23,6 +24,7 @@ data/samples/* **/*.pb *_saved_model/ *_web_model/ +*_openvino_model/ # Below Copied From .gitignore ----------------------------------------------------------------------------------------- # Below Copied From .gitignore ----------------------------------------------------------------------------------------- diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index 3da386f7..00000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,5 +0,0 @@ -# These are supported funding model platforms - -github: glenn-jocher -patreon: ultralytics -open_collective: ultralytics diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index affe6aae..9c11b695 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -12,10 +12,10 @@ body: attributes: label: Search before asking description: > - Please search the [issues](https://github.com/ultralytics/yolov3/issues) to see if a similar bug report already exists. + Please search the [issues](https://github.com/ultralytics/yolov5/issues) to see if a similar bug report already exists. options: - label: > - I have searched the YOLOv3 [issues](https://github.com/ultralytics/yolov3/issues) and found no similar bug report. + I have searched the YOLOv3 [issues](https://github.com/ultralytics/yolov5/issues) and found no similar bug report. required: true - type: dropdown @@ -79,7 +79,7 @@ body: attributes: label: Are you willing to submit a PR? description: > - (Optional) We encourage you to submit a [Pull Request](https://github.com/ultralytics/yolov3/pulls) (PR) to help improve YOLOv3 for everyone, especially if you have a good understanding of how to implement a fix or feature. - See the YOLOv3 [Contributing Guide](https://github.com/ultralytics/yolov3/blob/master/CONTRIBUTING.md) to get started. + (Optional) We encourage you to submit a [Pull Request](https://github.com/ultralytics/yolov5/pulls) (PR) to help improve YOLOv3 for everyone, especially if you have a good understanding of how to implement a fix or feature. + See the YOLOv3 [Contributing Guide](https://github.com/ultralytics/yolov5/blob/master/CONTRIBUTING.md) to get started. options: - label: Yes I'd like to help by submitting a PR! diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 02be0529..e6a8c427 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,8 +1,8 @@ blank_issues_enabled: true contact_links: - - name: Slack - url: https://join.slack.com/t/ultralytics/shared_invite/zt-w29ei8bp-jczz7QYUmDtgo6r6KcMIAg - about: Ask on Ultralytics Slack Forum + - name: 💬 Forum + url: https://community.ultralytics.com/ + about: Ask on Ultralytics Community Forum - name: Stack Overflow url: https://stackoverflow.com/search?q=YOLOv3 about: Ask on Stack Overflow with 'YOLOv3' tag diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml index 53cf2344..d67e3301 100644 --- a/.github/ISSUE_TEMPLATE/feature-request.yml +++ b/.github/ISSUE_TEMPLATE/feature-request.yml @@ -12,10 +12,10 @@ body: attributes: label: Search before asking description: > - Please search the [issues](https://github.com/ultralytics/yolov3/issues) to see if a similar feature request already exists. + Please search the [issues](https://github.com/ultralytics/yolov5/issues) to see if a similar feature request already exists. options: - label: > - I have searched the YOLOv3 [issues](https://github.com/ultralytics/yolov3/issues) and found no similar feature requests. + I have searched the YOLOv3 [issues](https://github.com/ultralytics/yolov5/issues) and found no similar feature requests. required: true - type: textarea @@ -44,7 +44,7 @@ body: attributes: label: Are you willing to submit a PR? description: > - (Optional) We encourage you to submit a [Pull Request](https://github.com/ultralytics/yolov3/pulls) (PR) to help improve YOLOv3 for everyone, especially if you have a good understanding of how to implement a fix or feature. - See the YOLOv3 [Contributing Guide](https://github.com/ultralytics/yolov3/blob/master/CONTRIBUTING.md) to get started. + (Optional) We encourage you to submit a [Pull Request](https://github.com/ultralytics/yolov5/pulls) (PR) to help improve YOLOv3 for everyone, especially if you have a good understanding of how to implement a fix or feature. + See the YOLOv3 [Contributing Guide](https://github.com/ultralytics/yolov5/blob/master/CONTRIBUTING.md) to get started. options: - label: Yes I'd like to help by submitting a PR! diff --git a/.github/ISSUE_TEMPLATE/question.yml b/.github/ISSUE_TEMPLATE/question.yml index decb2148..c056eec8 100644 --- a/.github/ISSUE_TEMPLATE/question.yml +++ b/.github/ISSUE_TEMPLATE/question.yml @@ -12,10 +12,10 @@ body: attributes: label: Search before asking description: > - Please search the [issues](https://github.com/ultralytics/yolov3/issues) and [discussions](https://github.com/ultralytics/yolov3/discussions) to see if a similar question already exists. + Please search the [issues](https://github.com/ultralytics/yolov5/issues) and [discussions](https://github.com/ultralytics/yolov5/discussions) to see if a similar question already exists. options: - label: > - I have searched the YOLOv3 [issues](https://github.com/ultralytics/yolov3/issues) and [discussions](https://github.com/ultralytics/yolov3/discussions) and found no similar questions. + I have searched the YOLOv3 [issues](https://github.com/ultralytics/yolov5/issues) and [discussions](https://github.com/ultralytics/yolov5/discussions) and found no similar questions. required: true - type: textarea diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..f25b017a --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,9 @@ + diff --git a/.github/workflows/ci-testing.yml b/.github/workflows/ci-testing.yml index b0a6bfd9..6be6236d 100644 --- a/.github/workflows/ci-testing.yml +++ b/.github/workflows/ci-testing.yml @@ -5,9 +5,9 @@ name: YOLOv3 CI on: push: - branches: [ master ] + branches: [master] pull_request: - branches: [ master ] + branches: [master] schedule: - cron: '0 0 * * *' # runs at 00:00 UTC every day @@ -18,22 +18,22 @@ jobs: strategy: fail-fast: false matrix: - os: [ ubuntu-latest, windows-latest ] # macos-latest bug https://github.com/ultralytics/yolov5/pull/9049 - python-version: [ '3.10' ] - model: [ yolov3-tiny ] + os: [ubuntu-latest, windows-latest] # macos-latest bug https://github.com/ultralytics/yolov5/pull/9049 + python-version: ['3.10'] + model: [yolov5n] include: - os: ubuntu-latest python-version: '3.7' # '3.6.8' min - model: yolov3-tiny + model: yolov5n - os: ubuntu-latest python-version: '3.8' - model: yolov3-tiny + model: yolov5n - os: ubuntu-latest python-version: '3.9' - model: yolov3-tiny + model: yolov5n - os: ubuntu-latest python-version: '3.8' # torch 1.7.0 requires python >=3.6, <=3.8 - model: yolov3-tiny + model: yolov5n torch: '1.7.0' # min torch version CI https://pypi.org/project/torchvision/ steps: - uses: actions/checkout@v3 @@ -97,3 +97,32 @@ jobs: model(im) # warmup, build grids for trace torch.jit.trace(model, [im]) EOF + - name: Test segmentation + shell: bash # for Windows compatibility + run: | + m=${{ matrix.model }}-seg # official weights + b=runs/train-seg/exp/weights/best # best.pt checkpoint + python segment/train.py --imgsz 64 --batch 32 --weights $m.pt --cfg $m.yaml --epochs 1 --device cpu # train + python segment/train.py --imgsz 64 --batch 32 --weights '' --cfg $m.yaml --epochs 1 --device cpu # train + for d in cpu; do # devices + for w in $m $b; do # weights + python segment/val.py --imgsz 64 --batch 32 --weights $w.pt --device $d # val + python segment/predict.py --imgsz 64 --weights $w.pt --device $d # predict + python export.py --weights $w.pt --img 64 --include torchscript --device $d # export + done + done + - name: Test classification + shell: bash # for Windows compatibility + run: | + m=${{ matrix.model }}-cls.pt # official weights + b=runs/train-cls/exp/weights/best.pt # best.pt checkpoint + python classify/train.py --imgsz 32 --model $m --data mnist160 --epochs 1 # train + python classify/val.py --imgsz 32 --weights $b --data ../datasets/mnist160 # val + python classify/predict.py --imgsz 32 --weights $b --source ../datasets/mnist160/test/7/60.png # predict + python classify/predict.py --imgsz 32 --weights $m --source data/images/bus.jpg # predict + python export.py --weights $b --img 64 --include torchscript # export + python - <=3.7.0**](https://www.python.org/) with all [requirements.txt](https://github.com/ultralytics/yolov5/blob/master/requirements.txt) installed including [**PyTorch>=1.7**](https://pytorch.org/get-started/locally/). To get started: ```bash - git clone https://github.com/ultralytics/yolov3 # clone - cd yolov3 + git clone https://github.com/ultralytics/yolov5 # clone + cd yolov5 pip install -r requirements.txt # install ``` @@ -45,7 +45,7 @@ jobs: - **Notebooks** with free GPU: Run on Gradient Open In Colab Open In Kaggle - **Google Cloud** Deep Learning VM. See [GCP Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/GCP-Quickstart) - **Amazon** Deep Learning AMI. See [AWS Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/AWS-Quickstart) - - **Docker Image**. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/Docker-Quickstart) Docker Pulls + - **Docker Image**. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/Docker-Quickstart) Docker Pulls ## Status @@ -53,9 +53,13 @@ jobs: If this badge is green, all [YOLOv3 GitHub Actions](https://github.com/ultralytics/yolov3/actions) Continuous Integration (CI) tests are currently passing. CI tests verify correct operation of YOLOv3 [training](https://github.com/ultralytics/yolov5/blob/master/train.py), [validation](https://github.com/ultralytics/yolov5/blob/master/val.py), [inference](https://github.com/ultralytics/yolov5/blob/master/detect.py), [export](https://github.com/ultralytics/yolov5/blob/master/export.py) and [benchmarks](https://github.com/ultralytics/yolov5/blob/master/benchmarks.py) on MacOS, Windows, and Ubuntu every 24 hours and on every commit. - ## YOLOv8 + ## Introducing YOLOv8 🚀 - Ultralytics YOLOv8 🚀 is our new cutting-edge, state-of-the-art (SOTA) model released at [https://github.com/ultralytics/ultralytics](https://github.com/ultralytics/ultralytics). YOLOv8 is designed to be fast, accurate, and easy to use, making it an excellent choice for a wide range of object detection, image segmentation and image classification tasks. See the [YOLOv8 Docs] for details and get started with: + We're excited to announce the launch of our latest state-of-the-art (SOTA) object detection model for 2023 - [YOLOv8](https://github.com/ultralytics/ultralytics) 🚀! + + Designed to be fast, accurate, and easy to use, YOLOv8 is an ideal choice for a wide range of object detection, image segmentation and image classification tasks. With YOLOv8, you'll be able to quickly and accurately detect objects in real-time, streamline your workflows, and achieve new levels of accuracy in your projects. + + Check out our [YOLOv8 Docs](https://docs.ultralytics.com/) for details and get started with: ```bash pip install ultralytics ``` diff --git a/.github/workflows/rebase.yml b/.github/workflows/rebase.yml deleted file mode 100644 index 5ec1791d..00000000 --- a/.github/workflows/rebase.yml +++ /dev/null @@ -1,21 +0,0 @@ -# https://github.com/marketplace/actions/automatic-rebase - -name: Automatic Rebase -on: - issue_comment: - types: [created] -jobs: - rebase: - name: Rebase - if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/rebase') - runs-on: ubuntu-latest - steps: - - name: Checkout the latest code - uses: actions/checkout@v3 - with: - token: ${{ secrets.ACTIONS_TOKEN }} - fetch-depth: 0 # otherwise, you will fail to push refs to dest repo - - name: Automatic Rebase - uses: cirrus-actions/rebase@1.8 - env: - GITHUB_TOKEN: ${{ secrets.ACTIONS_TOKEN }} diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 819a5379..5db90eeb 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -3,7 +3,7 @@ name: Close stale issues on: schedule: - - cron: "0 0 * * *" + - cron: '0 0 * * *' # Runs at 00:00 UTC every day jobs: stale: @@ -15,9 +15,9 @@ jobs: stale-issue-message: | 👋 Hello, this issue has been automatically marked as stale because it has not had recent activity. Please note it will be closed if no further activity occurs. - Access additional [YOLOv3](https://ultralytics.com/yolov3) 🚀 resources: - - **Wiki** – https://github.com/ultralytics/yolov3/wiki - - **Tutorials** – https://github.com/ultralytics/yolov3#tutorials + Access additional [YOLOv3](https://ultralytics.com/yolov5) 🚀 resources: + - **Wiki** – https://github.com/ultralytics/yolov5/wiki + - **Tutorials** – https://github.com/ultralytics/yolov5#tutorials - **Docs** – https://docs.ultralytics.com Access additional [Ultralytics](https://ultralytics.com) ⚡ resources: @@ -32,7 +32,9 @@ jobs: Thank you for your contributions to YOLOv3 🚀 and Vision AI ⭐! stale-pr-message: 'This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions YOLOv3 🚀 and Vision AI ⭐.' - days-before-stale: 30 - days-before-close: 5 - exempt-issue-labels: 'documentation,tutorial' - operations-per-run: 100 # The maximum number of operations per run, used to control rate limiting. + days-before-issue-stale: 30 + days-before-issue-close: 10 + days-before-pr-stale: 90 + days-before-pr-close: 30 + exempt-issue-labels: 'documentation,tutorial,TODO' + operations-per-run: 300 # The maximum number of operations per run, used to control rate limiting. diff --git a/.github/workflows/translate-readme.yml b/.github/workflows/translate-readme.yml new file mode 100644 index 00000000..0efe298d --- /dev/null +++ b/.github/workflows/translate-readme.yml @@ -0,0 +1,26 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +# README translation action to translate README.md to Chinese as README.zh-CN.md on any change to README.md + +name: Translate README + +on: + push: + branches: + - translate_readme # replace with 'master' to enable action + paths: + - README.md + +jobs: + Translate: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: 16 + # ISO Language Codes: https://cloud.google.com/translate/docs/languages + - name: Adding README - Chinese Simplified + uses: dephraiim/translate-readme@main + with: + LANG: zh-CN diff --git a/.gitignore b/.gitignore index 5f8cab55..6bcedfac 100755 --- a/.gitignore +++ b/.gitignore @@ -26,7 +26,11 @@ storage.googleapis.com runs/* data/* -!data/hyps/* +data/images/* +!data/*.yaml +!data/hyps +!data/scripts +!data/images !data/images/zidane.jpg !data/images/bus.jpg !data/*.sh @@ -48,12 +52,15 @@ VOC/ *.pt *.pb *.onnx +*.engine *.mlmodel *.torchscript *.tflite *.h5 *_saved_model/ *_web_model/ +*_openvino_model/ +*_paddle_model/ darknet53.conv.74 yolov3-tiny.conv.15 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0f9f9395..b188048e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,18 +4,19 @@ default_language_version: python: python3.8 +exclude: 'docs/' # Define bot property if installed via https://github.com/marketplace/pre-commit-ci ci: autofix_prs: true autoupdate_commit_msg: '[pre-commit.ci] pre-commit suggestions' - autoupdate_schedule: quarterly + autoupdate_schedule: monthly # submodules: true repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.3.0 + rev: v4.4.0 hooks: - - id: end-of-file-fixer + # - id: end-of-file-fixer - id: trailing-whitespace - id: check-case-conflict - id: check-yaml @@ -24,43 +25,48 @@ repos: - id: check-docstring-first - repo: https://github.com/asottile/pyupgrade - rev: v2.34.0 + rev: v3.3.1 hooks: - id: pyupgrade - args: [--py36-plus] name: Upgrade code + args: [--py37-plus] - - repo: https://github.com/PyCQA/isort - rev: 5.10.1 + # - repo: https://github.com/PyCQA/isort + # rev: 5.11.4 + # hooks: + # - id: isort + # name: Sort imports + + - repo: https://github.com/google/yapf + rev: v0.32.0 hooks: - - id: isort - name: Sort imports + - id: yapf + name: YAPF formatting - # TODO - #- repo: https://github.com/pre-commit/mirrors-yapf - # rev: v0.31.0 - # hooks: - # - id: yapf - # name: formatting - - # TODO - #- repo: https://github.com/executablebooks/mdformat - # rev: 0.7.7 - # hooks: - # - id: mdformat - # additional_dependencies: - # - mdformat-gfm - # - mdformat-black - # - mdformat_frontmatter - - # TODO - #- repo: https://github.com/asottile/yesqa - # rev: v1.2.3 - # hooks: - # - id: yesqa + - repo: https://github.com/executablebooks/mdformat + rev: 0.7.16 + hooks: + - id: mdformat + name: MD formatting + additional_dependencies: + - mdformat-gfm + - mdformat-black + # exclude: "README.md|README.zh-CN.md|CONTRIBUTING.md" - repo: https://github.com/PyCQA/flake8 - rev: 4.0.1 + rev: 6.0.0 hooks: - id: flake8 name: PEP8 + + #- repo: https://github.com/codespell-project/codespell + # rev: v2.2.2 + # hooks: + # - id: codespell + # args: + # - --ignore-words-list=crate,nd + + #- repo: https://github.com/asottile/yesqa + # rev: v1.4.0 + # hooks: + # - id: yesqa diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 00000000..41b1a337 --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,14 @@ +cff-version: 1.2.0 +preferred-citation: + type: software + message: If you use , please cite it as below. + authors: + - family-names: Jocher + given-names: Glenn + orcid: "https://orcid.org/0000-0001-5950-6979" + title: " by Ultralytics" + version: 7.0 + doi: 10.5281/zenodo.3908559 + date-released: 2020-5-29 + license: GPL-3.0 + url: "https://github.com/ultralytics/yolov5" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0ef52f63..8e83398b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ ## Contributing to YOLOv3 🚀 -We love your input! We want to make contributing to YOLOv3 as easy and transparent as possible, whether it's: +We love your input! We want to make contributing to as easy and transparent as possible, whether it's: - Reporting a bug - Discussing the current state of the code @@ -8,7 +8,7 @@ We love your input! We want to make contributing to YOLOv3 as easy and transpare - Proposing a new feature - Becoming a maintainer -YOLOv3 works so well due to our combined community effort, and for every small improvement you contribute you will be +works so well due to our combined community effort, and for every small improvement you contribute you will be helping push the frontiers of what's possible in AI 😃! ## Submitting a Pull Request (PR) 🛠️ @@ -18,73 +18,72 @@ Submitting a PR is easy! This example shows how to submit a PR for updating `req ### 1. Select File to Update Select `requirements.txt` to update by clicking on it in GitHub. +

PR_step1

### 2. Click 'Edit this file' -Button is in top-right corner. +The button is in the top-right corner. +

PR_step2

### 3. Make Changes -Change `matplotlib` version from `3.2.2` to `3.3`. +Change the `matplotlib` version from `3.2.2` to `3.3`. +

PR_step3

### 4. Preview Changes and Submit PR Click on the **Preview changes** tab to verify your updates. At the bottom of the screen select 'Create a **new branch** for this commit', assign your branch a descriptive name such as `fix/matplotlib_version` and click the green **Propose -changes** button. All done, your PR is now submitted to YOLOv3 for review and approval 😃! +changes** button. All done, your PR is now submitted to for review and approval 😃! +

PR_step4

### PR recommendations To allow your work to be integrated as seamlessly as possible, we advise you to: -- ✅ Verify your PR is **up-to-date with upstream/master.** If your PR is behind upstream/master an - automatic [GitHub actions](https://github.com/ultralytics/yolov3/blob/master/.github/workflows/rebase.yml) rebase may - be attempted by including the /rebase command in a comment body, or by running the following code, replacing 'feature' - with the name of your local branch: +- ✅ Verify your PR is **up-to-date** with `ultralytics/yolov5` `master` branch. If your PR is behind you can update + your code by clicking the 'Update branch' button or by running `git pull` and `git merge master` locally. - ```bash - git remote add upstream https://github.com/ultralytics/yolov3.git - git fetch upstream - git checkout feature # <----- replace 'feature' with local branch name - git merge upstream/master - git push -u origin -f - ``` +

Screenshot 2022-08-29 at 22 47 15

- ✅ Verify all Continuous Integration (CI) **checks are passing**. + +

Screenshot 2022-08-29 at 22 47 03

+ - ✅ Reduce changes to the absolute **minimum** required for your bug fix or feature addition. _"It is not daily increase but daily decrease, hack away the unessential. The closer to the source, the less wastage there is."_ — Bruce Lee ## Submitting a Bug Report 🐛 -If you spot a problem with YOLOv3 please submit a Bug Report! +If you spot a problem with please submit a Bug Report! For us to start investigating a possible problem we need to be able to reproduce it ourselves first. We've created a few -short guidelines below to help users provide what we need in order to get started. +short guidelines below to help users provide what we need to get started. When asking a question, people will be better able to provide help if you provide **code** that they can easily understand and use to **reproduce** the problem. This is referred to by community members as creating a [minimum reproducible example](https://stackoverflow.com/help/minimal-reproducible-example). Your code that reproduces the problem should be: -* ✅ **Minimal** – Use as little code as possible that still produces the same problem -* ✅ **Complete** – Provide **all** parts someone else needs to reproduce your problem in the question itself -* ✅ **Reproducible** – Test the code you're about to provide to make sure it reproduces the problem +- ✅ **Minimal** – Use as little code as possible that still produces the same problem +- ✅ **Complete** – Provide **all** parts someone else needs to reproduce your problem in the question itself +- ✅ **Reproducible** – Test the code you're about to provide to make sure it reproduces the problem In addition to the above requirements, for [Ultralytics](https://ultralytics.com/) to provide assistance your code should be: -* ✅ **Current** – Verify that your code is up-to-date with current - GitHub [master](https://github.com/ultralytics/yolov3/tree/master), and if necessary `git pull` or `git clone` a new +- ✅ **Current** – Verify that your code is up-to-date with the current + GitHub [master](https://github.com/ultralytics/yolov5/tree/master), and if necessary `git pull` or `git clone` a new copy to ensure your problem has not already been resolved by previous commits. -* ✅ **Unmodified** – Your problem must be reproducible without any modifications to the codebase in this +- ✅ **Unmodified** – Your problem must be reproducible without any modifications to the codebase in this repository. [Ultralytics](https://ultralytics.com/) does not provide support for custom code ⚠️. -If you believe your problem meets all of the above criteria, please close this issue and raise a new one using the 🐛 ** -Bug Report** [template](https://github.com/ultralytics/yolov3/issues/new/choose) and providing +If you believe your problem meets all of the above criteria, please close this issue and raise a new one using the 🐛 +**Bug Report** [template](https://github.com/ultralytics/yolov5/issues/new/choose) and provide a [minimum reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) to help us better understand and diagnose your problem. diff --git a/README.md b/README.md index 68a34af8..b10c1814 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,30 @@
-

- - -

+

+ + +

+ +[English](README.md) | [简体中文](README.zh-CN.md)
+
- CI CPU testing - YOLOv3 Citation - Docker Pulls -
- Open In Colab - Open In Kaggle - Join Forum -
-
+  CI +  Citation + Docker Pulls +
+ Run on Gradient + Open In Colab + Open In Kaggle +
+
+ +🚀 is the world's most loved vision AI, representing Ultralytics open-source +research into future vision AI methods, incorporating lessons learned and best practices evolved over thousands of hours +of research and development. + +To request an Enterprise License please complete the form at Ultralytics +Licensing. +
@@ -36,56 +47,64 @@
- +
-

-YOLOv3 🚀 is a family of object detection architectures and models pretrained on the COCO dataset, and represents Ultralytics - open-source research into future vision AI methods, incorporating lessons learned and best practices evolved over thousands of hours of research and development. -

- +##
YOLOv8 🚀 NEW
+We are thrilled to announce the launch of Ultralytics YOLOv8 🚀, our NEW cutting-edge, state-of-the-art (SOTA) model +released at **[https://github.com/ultralytics/ultralytics](https://github.com/ultralytics/ultralytics)**. +YOLOv8 is designed to be fast, accurate, and easy to use, making it an excellent choice for a wide range of +object detection, image segmentation and image classification tasks. + +See the [YOLOv8 Docs](https://docs.ultralytics.com) for details and get started with: + +```commandline +pip install ultralytics +``` + +
+ +
##
Documentation
-See the [YOLOv3 Docs](https://docs.ultralytics.com) for full documentation on training, testing and deployment. - -##
Quick Start Examples
+See the [ Docs](https://docs.ultralytics.com) for full documentation on training, testing and deployment. See below for +quickstart examples.
Install -[**Python>=3.6.0**](https://www.python.org/) is required with all -[requirements.txt](https://github.com/ultralytics/yolov3/blob/master/requirements.txt) installed including -[**PyTorch>=1.7**](https://pytorch.org/get-started/locally/): - +Clone repo and install [requirements.txt](https://github.com/ultralytics/yolov5/blob/master/requirements.txt) in a +[**Python>=3.7.0**](https://www.python.org/) environment, including +[**PyTorch>=1.7**](https://pytorch.org/get-started/locally/). ```bash -$ git clone https://github.com/ultralytics/yolov3 -$ cd yolov3 -$ pip install -r requirements.txt +git clone https://github.com/ultralytics/yolov3 # clone +cd yolov3 +pip install -r requirements.txt # install ```
-
+
Inference -Inference with YOLOv3 and [PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36). Models automatically download -from the [latest YOLOv3 release](https://github.com/ultralytics/yolov3/releases). +[PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36) +inference. [Models](https://github.com/ultralytics/yolov5/tree/master/models) download automatically from the latest +[release](https://github.com/ultralytics/yolov5/releases). ```python import torch # Model -model = torch.hub.load('ultralytics/yolov3', 'yolov3') # or yolov3-spp, yolov3-tiny, custom +model = torch.hub.load( + "ultralytics/yolov3", "yolov3" +) # or yolov3-spp, yolov3-tiny, custom # Images -img = 'https://ultralytics.com/images/zidane.jpg' # or file, Path, PIL, OpenCV, numpy, list +img = "https://ultralytics.com/images/zidane.jpg" # or file, Path, PIL, OpenCV, numpy, list # Inference results = model(img) @@ -96,22 +115,24 @@ results.print() # or .show(), .save(), .crop(), .pandas(), etc.
- -
Inference with detect.py -`detect.py` runs inference on a variety of sources, downloading models automatically from -the [latest YOLOv3 release](https://github.com/ultralytics/yolov3/releases) and saving results to `runs/detect`. +`detect.py` runs inference on a variety of sources, +downloading [models](https://github.com/ultralytics/yolov5/tree/master/models) automatically from +the latest [release](https://github.com/ultralytics/yolov5/releases) and saving results to `runs/detect`. ```bash -$ python detect.py --source 0 # webcam - img.jpg # image - vid.mp4 # video - path/ # directory - path/*.jpg # glob - 'https://youtu.be/Zgi9g1ksQHc' # YouTube - 'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP stream +python detect.py --weights yolov5s.pt --source 0 # webcam + img.jpg # image + vid.mp4 # video + screen # screenshot + path/ # directory + list.txt # list of images + list.streams # list of streams + 'path/*.jpg' # glob + 'https://youtu.be/Zgi9g1ksQHc' # YouTube + 'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP stream ```
@@ -119,6 +140,22 @@ $ python detect.py --source 0 # webcam
Training +The commands below reproduce [COCO](https://github.com/ultralytics/yolov5/blob/master/data/scripts/get_coco.sh) +results. [Models](https://github.com/ultralytics/yolov5/tree/master/models) +and [datasets](https://github.com/ultralytics/yolov5/tree/master/data) download automatically from the latest +[release](https://github.com/ultralytics/yolov5/releases). Training times for YOLOv5n/s/m/l/x are +1/2/4/6/8 days on a V100 GPU ([Multi-GPU](https://github.com/ultralytics/yolov5/issues/475) times faster). Use the +largest `--batch-size` possible, or pass `--batch-size -1` for +[AutoBatch](https://github.com/ultralytics/yolov5/pull/5092). Batch sizes shown for V100-16GB. + +```bash +python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5n.yaml --batch-size 128 + yolov5s 64 + yolov5m 40 + yolov5l 24 + yolov5x 16 +``` +
@@ -126,8 +163,8 @@ $ python detect.py --source 0 # webcam
Tutorials -- [Train Custom Data](https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data)  🚀 RECOMMENDED -- [Tips for Best Training Results](https://github.com/ultralytics/yolov5/wiki/Tips-for-Best-Training-Results)  ☘️ +- [Train Custom Data](https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data)🚀 RECOMMENDED +- [Tips for Best Training Results](https://github.com/ultralytics/yolov5/wiki/Tips-for-Best-Training-Results)☘️ RECOMMENDED - [Multi-GPU Training](https://github.com/ultralytics/yolov5/issues/475) - [PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36) 🌟 NEW @@ -139,9 +176,9 @@ $ python detect.py --source 0 # webcam - [Hyperparameter Evolution](https://github.com/ultralytics/yolov5/issues/607) - [Transfer Learning with Frozen Layers](https://github.com/ultralytics/yolov5/issues/1314) - [Architecture Summary](https://github.com/ultralytics/yolov5/issues/6998) 🌟 NEW -- [Roboflow for Datasets, Labeling, and Active Learning](https://github.com/ultralytics/yolov5/issues/4975)  🌟 NEW +- [Roboflow for Datasets, Labeling, and Active Learning](https://github.com/ultralytics/yolov5/issues/4975)🌟 NEW - [ClearML Logging](https://github.com/ultralytics/yolov5/tree/master/utils/loggers/clearml) 🌟 NEW -- [YOLOv5 with Neural Magic's Deepsparse](https://bit.ly/yolov5-neuralmagic) 🌟 NEW +- [ with Neural Magic's Deepsparse](https://bit.ly/yolov5-neuralmagic) 🌟 NEW - [Comet Logging](https://github.com/ultralytics/yolov5/tree/master/utils/loggers/comet) 🌟 NEW
@@ -156,32 +193,33 @@ $ python detect.py --source 0 # webcam -| Roboflow | ClearML ⭐ NEW | Comet ⭐ NEW | Neural Magic ⭐ NEW | -| :--------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------: | -| Label and export your custom datasets directly to YOLOv5 for training with [Roboflow](https://roboflow.com/?ref=ultralytics) | Automatically track, visualize and even remotely train YOLOv5 using [ClearML](https://cutt.ly/yolov5-readme-clearml) (open-source!) | Free forever, [Comet](https://bit.ly/yolov5-readme-comet2) lets you save YOLOv5 models, resume training, and interactively visualise and debug predictions | Run YOLOv5 inference up to 6x faster with [Neural Magic DeepSparse](https://bit.ly/yolov5-neuralmagic) | +| Roboflow | ClearML ⭐ NEW | Comet ⭐ NEW | Neural Magic ⭐ NEW | +| :--------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------: | +| Label and export your custom datasets directly to for training with [Roboflow](https://roboflow.com/?ref=ultralytics) | Automatically track, visualize and even remotely train using [ClearML](https://cutt.ly/yolov5-readme-clearml) (open-source!) | Free forever, [Comet](https://bit.ly/yolov5-readme-comet2) lets you save models, resume training, and interactively visualise and debug predictions | Run inference up to 6x faster with [Neural Magic DeepSparse](https://bit.ly/yolov5-neuralmagic) | ##
Ultralytics HUB
-[Ultralytics HUB](https://bit.ly/ultralytics_hub) is our ⭐ **NEW** no-code solution to visualize datasets, train YOLOv5 🚀 models, and deploy to the real world in a seamless experience. Get started for **Free** now! +[Ultralytics HUB](https://bit.ly/ultralytics_hub) is our ⭐ **NEW** no-code solution to visualize datasets, train 🚀 +models, and deploy to the real world in a seamless experience. Get started for **Free** now! -##
Why YOLOv5
+##
Why YOLO
-YOLOv5 has been designed to be super easy to get started and simple to learn. We prioritize real-world results. +has been designed to be super easy to get started and simple to learn. We prioritize real-world results.

@@ -192,10 +230,13 @@ YOLOv5 has been designed to be super easy to get started and simple to learn. We
Figure Notes -- **COCO AP val** denotes mAP@0.5:0.95 metric measured on the 5000-image [COCO val2017](http://cocodataset.org) dataset over various inference sizes from 256 to 1536. -- **GPU Speed** measures average inference time per image on [COCO val2017](http://cocodataset.org) dataset using a [AWS p3.2xlarge](https://aws.amazon.com/ec2/instance-types/p3/) V100 instance at batch-size 32. +- **COCO AP val** denotes mAP@0.5:0.95 metric measured on the 5000-image [COCO val2017](http://cocodataset.org) dataset + over various inference sizes from 256 to 1536. +- **GPU Speed** measures average inference time per image on [COCO val2017](http://cocodataset.org) dataset using + a [AWS p3.2xlarge](https://aws.amazon.com/ec2/instance-types/p3/) V100 instance at batch-size 32. - **EfficientDet** data from [google/automl](https://github.com/google/automl) at batch size 8. -- **Reproduce** by `python val.py --task study --data coco.yaml --iou 0.7 --weights yolov5n6.pt yolov5s6.pt yolov5m6.pt yolov5l6.pt yolov5x6.pt` +- **Reproduce** + by `python val.py --task study --data coco.yaml --iou 0.7 --weights yolov5n6.pt yolov5s6.pt yolov5m6.pt yolov5l6.pt yolov5x6.pt`
@@ -218,16 +259,28 @@ YOLOv5 has been designed to be super easy to get started and simple to learn. We
Table Notes -- All checkpoints are trained to 300 epochs with default settings. Nano and Small models use [hyp.scratch-low.yaml](https://github.com/ultralytics/yolov5/blob/master/data/hyps/hyp.scratch-low.yaml) hyps, all others use [hyp.scratch-high.yaml](https://github.com/ultralytics/yolov5/blob/master/data/hyps/hyp.scratch-high.yaml). -- **mAPval** values are for single-model single-scale on [COCO val2017](http://cocodataset.org) dataset.
Reproduce by `python val.py --data coco.yaml --img 640 --conf 0.001 --iou 0.65` -- **Speed** averaged over COCO val images using a [AWS p3.2xlarge](https://aws.amazon.com/ec2/instance-types/p3/) instance. NMS times (~1 ms/img) not included.
Reproduce by `python val.py --data coco.yaml --img 640 --task speed --batch 1` -- **TTA** [Test Time Augmentation](https://github.com/ultralytics/yolov5/issues/303) includes reflection and scale augmentations.
Reproduce by `python val.py --data coco.yaml --img 1536 --iou 0.7 --augment` +- All checkpoints are trained to 300 epochs with default settings. Nano and Small models + use [hyp.scratch-low.yaml](https://github.com/ultralytics/yolov5/blob/master/data/hyps/hyp.scratch-low.yaml) hyps, all + others use [hyp.scratch-high.yaml](https://github.com/ultralytics/yolov5/blob/master/data/hyps/hyp.scratch-high.yaml). +- **mAPval** values are for single-model single-scale on [COCO val2017](http://cocodataset.org) dataset.
+ Reproduce by `python val.py --data coco.yaml --img 640 --conf 0.001 --iou 0.65` +- **Speed** averaged over COCO val images using a [AWS p3.2xlarge](https://aws.amazon.com/ec2/instance-types/p3/) + instance. NMS times (~1 ms/img) not included.
Reproduce + by `python val.py --data coco.yaml --img 640 --task speed --batch 1` +- **TTA** [Test Time Augmentation](https://github.com/ultralytics/yolov5/issues/303) includes reflection and scale + augmentations.
Reproduce by `python val.py --data coco.yaml --img 1536 --iou 0.7 --augment`
##
Segmentation
-Our new YOLOv5 [release v7.0](https://github.com/ultralytics/yolov5/releases/v7.0) instance segmentation models are the fastest and most accurate in the world, beating all current [SOTA benchmarks](https://paperswithcode.com/sota/real-time-instance-segmentation-on-mscoco). We've made them super simple to train, validate and deploy. See full details in our [Release Notes](https://github.com/ultralytics/yolov5/releases/v7.0) and visit our [YOLOv5 Segmentation Colab Notebook](https://github.com/ultralytics/yolov5/blob/master/segment/tutorial.ipynb) for quickstart tutorials. +Our new YOLOv5 [release v7.0](https://github.com/ultralytics/yolov5/releases/v7.0) instance segmentation models are the +fastest and most accurate in the world, beating all +current [SOTA benchmarks](https://paperswithcode.com/sota/real-time-instance-segmentation-on-mscoco). We've made them +super simple to train, validate and deploy. See full details in +our [Release Notes](https://github.com/ultralytics/yolov5/releases/v7.0) and visit +our [YOLOv5 Segmentation Colab Notebook](https://github.com/ultralytics/yolov5/blob/master/segment/tutorial.ipynb) for +quickstart tutorials.
Segmentation Checkpoints @@ -237,7 +290,9 @@ Our new YOLOv5 [release v7.0](https://github.com/ultralytics/yolov5/releases/v7. -We trained YOLOv5 segmentations models on COCO for 300 epochs at image size 640 using A100 GPUs. We exported all models to ONNX FP32 for CPU speed tests and to TensorRT FP16 for GPU speed tests. We ran all speed tests on Google [Colab Pro](https://colab.research.google.com/signup) notebooks for easy reproducibility. +We trained YOLOv5 segmentations models on COCO for 300 epochs at image size 640 using A100 GPUs. We exported all models +to ONNX FP32 for CPU speed tests and to TensorRT FP16 for GPU speed tests. We ran all speed tests on +Google [Colab Pro](https://colab.research.google.com/signup) notebooks for easy reproducibility. | Model | size
(pixels) | mAPbox
50-95 | mAPmask
50-95 | Train time
300 epochs
A100 (hours) | Speed
ONNX CPU
(ms) | Speed
TRT A100
(ms) | params
(M) | FLOPs
@640 (B) | | ------------------------------------------------------------------------------------------ | --------------------- | -------------------- | --------------------- | --------------------------------------------- | ------------------------------ | ------------------------------ | ------------------ | ---------------------- | @@ -247,10 +302,15 @@ We trained YOLOv5 segmentations models on COCO for 300 epochs at image size 640 | [YOLOv5l-seg](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5l-seg.pt) | 640 | 49.0 | 39.9 | 66:43 (2x) | 857.4 | 2.9 | 47.9 | 147.7 | | [YOLOv5x-seg](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5x-seg.pt) | 640 | **50.7** | **41.4** | 62:56 (3x) | 1579.2 | 4.5 | 88.8 | 265.7 | -- All checkpoints are trained to 300 epochs with SGD optimizer with `lr0=0.01` and `weight_decay=5e-5` at image size 640 and all default settings.
Runs logged to https://wandb.ai/glenn-jocher/YOLOv5_v70_official -- **Accuracy** values are for single-model single-scale on COCO dataset.
Reproduce by `python segment/val.py --data coco.yaml --weights yolov5s-seg.pt` -- **Speed** averaged over 100 inference images using a [Colab Pro](https://colab.research.google.com/signup) A100 High-RAM instance. Values indicate inference speed only (NMS adds about 1ms per image).
Reproduce by `python segment/val.py --data coco.yaml --weights yolov5s-seg.pt --batch 1` -- **Export** to ONNX at FP32 and TensorRT at FP16 done with `export.py`.
Reproduce by `python export.py --weights yolov5s-seg.pt --include engine --device 0 --half` +- All checkpoints are trained to 300 epochs with SGD optimizer with `lr0=0.01` and `weight_decay=5e-5` at image size 640 + and all default settings.
Runs logged to https://wandb.ai/glenn-jocher/YOLOv5_v70_official +- **Accuracy** values are for single-model single-scale on COCO dataset.
Reproduce + by `python segment/val.py --data coco.yaml --weights yolov5s-seg.pt` +- **Speed** averaged over 100 inference images using a [Colab Pro](https://colab.research.google.com/signup) A100 + High-RAM instance. Values indicate inference speed only (NMS adds about 1ms per image).
Reproduce + by `python segment/val.py --data coco.yaml --weights yolov5s-seg.pt --batch 1` +- **Export** to ONNX at FP32 and TensorRT at FP16 done with `export.py`.
Reproduce + by `python export.py --weights yolov5s-seg.pt --include engine --device 0 --half`
@@ -259,7 +319,9 @@ We trained YOLOv5 segmentations models on COCO for 300 epochs at image size 640 ### Train -YOLOv5 segmentation training supports auto-download COCO128-seg segmentation dataset with `--data coco128-seg.yaml` argument and manual download of COCO-segments dataset with `bash data/scripts/get_coco.sh --train --val --segments` and then `python train.py --data coco.yaml`. +YOLOv5 segmentation training supports auto-download COCO128-seg segmentation dataset with `--data coco128-seg.yaml` +argument and manual download of COCO-segments dataset with `bash data/scripts/get_coco.sh --train --val --segments` and +then `python train.py --data coco.yaml`. ```bash # Single-GPU @@ -307,14 +369,21 @@ python export.py --weights yolov5s-seg.pt --include onnx engine --img 640 --devi ##
Classification
-YOLOv5 [release v6.2](https://github.com/ultralytics/yolov5/releases) brings support for classification model training, validation and deployment! See full details in our [Release Notes](https://github.com/ultralytics/yolov5/releases/v6.2) and visit our [YOLOv5 Classification Colab Notebook](https://github.com/ultralytics/yolov5/blob/master/classify/tutorial.ipynb) for quickstart tutorials. +YOLOv5 [release v6.2](https://github.com/ultralytics/yolov5/releases) brings support for classification model training, +validation and deployment! See full details in our [Release Notes](https://github.com/ultralytics/yolov5/releases/v6.2) +and visit +our [YOLOv5 Classification Colab Notebook](https://github.com/ultralytics/yolov5/blob/master/classify/tutorial.ipynb) +for quickstart tutorials.
Classification Checkpoints
-We trained YOLOv5-cls classification models on ImageNet for 90 epochs using a 4xA100 instance, and we trained ResNet and EfficientNet models alongside with the same default training settings to compare. We exported all models to ONNX FP32 for CPU speed tests and to TensorRT FP16 for GPU speed tests. We ran all speed tests on Google [Colab Pro](https://colab.research.google.com/signup) for easy reproducibility. +We trained YOLOv5-cls classification models on ImageNet for 90 epochs using a 4xA100 instance, and we trained ResNet and +EfficientNet models alongside with the same default training settings to compare. We exported all models to ONNX FP32 +for CPU speed tests and to TensorRT FP16 for GPU speed tests. We ran all speed tests on +Google [Colab Pro](https://colab.research.google.com/signup) for easy reproducibility. | Model | size
(pixels) | acc
top1 | acc
top5 | Training
90 epochs
4xA100 (hours) | Speed
ONNX CPU
(ms) | Speed
TensorRT V100
(ms) | params
(M) | FLOPs
@224 (B) | | -------------------------------------------------------------------------------------------------- | --------------------- | ---------------- | ---------------- | -------------------------------------------- | ------------------------------ | ----------------------------------- | ------------------ | ---------------------- | @@ -337,10 +406,14 @@ We trained YOLOv5-cls classification models on ImageNet for 90 epochs using a 4x
Table Notes (click to expand) -- All checkpoints are trained to 90 epochs with SGD optimizer with `lr0=0.001` and `weight_decay=5e-5` at image size 224 and all default settings.
Runs logged to https://wandb.ai/glenn-jocher/YOLOv5-Classifier-v6-2 -- **Accuracy** values are for single-model single-scale on [ImageNet-1k](https://www.image-net.org/index.php) dataset.
Reproduce by `python classify/val.py --data ../datasets/imagenet --img 224` -- **Speed** averaged over 100 inference images using a Google [Colab Pro](https://colab.research.google.com/signup) V100 High-RAM instance.
Reproduce by `python classify/val.py --data ../datasets/imagenet --img 224 --batch 1` -- **Export** to ONNX at FP32 and TensorRT at FP16 done with `export.py`.
Reproduce by `python export.py --weights yolov5s-cls.pt --include engine onnx --imgsz 224` +- All checkpoints are trained to 90 epochs with SGD optimizer with `lr0=0.001` and `weight_decay=5e-5` at image size 224 + and all default settings.
Runs logged to https://wandb.ai/glenn-jocher/YOLOv5-Classifier-v6-2 +- **Accuracy** values are for single-model single-scale on [ImageNet-1k](https://www.image-net.org/index.php) + dataset.
Reproduce by `python classify/val.py --data ../datasets/imagenet --img 224` +- **Speed** averaged over 100 inference images using a Google [Colab Pro](https://colab.research.google.com/signup) V100 + High-RAM instance.
Reproduce by `python classify/val.py --data ../datasets/imagenet --img 224 --batch 1` +- **Export** to ONNX at FP32 and TensorRT at FP16 done with `export.py`.
Reproduce + by `python export.py --weights yolov5s-cls.pt --include engine onnx --imgsz 224`
@@ -350,7 +423,8 @@ We trained YOLOv5-cls classification models on ImageNet for 90 epochs using a 4x ### Train -YOLOv5 classification training supports auto-download of MNIST, Fashion-MNIST, CIFAR10, CIFAR100, Imagenette, Imagewoof, and ImageNet datasets with the `--data` argument. To start training on MNIST for example use `--data mnist`. +YOLOv5 classification training supports auto-download of MNIST, Fashion-MNIST, CIFAR10, CIFAR100, Imagenette, Imagewoof, +and ImageNet datasets with the `--data` argument. To start training on MNIST for example use `--data mnist`. ```bash # Single-GPU @@ -407,7 +481,7 @@ Get started in seconds with our verified environments. Click each icon below for - + @@ -419,22 +493,29 @@ Get started in seconds with our verified environments. Click each icon below for ##
Contribute
-We love your input! We want to make contributing to YOLOv5 as easy and transparent as possible. Please see our [Contributing Guide](CONTRIBUTING.md) to get started, and fill out the [YOLOv5 Survey](https://ultralytics.com/survey?utm_source=github&utm_medium=social&utm_campaign=Survey) to send us feedback on your experiences. Thank you to all our contributors! +We love your input! We want to make contributing to as easy and transparent as possible. Please see +our [Contributing Guide](CONTRIBUTING.md) to get started, and fill out +the [ Survey](https://ultralytics.com/survey?utm_source=github&utm_medium=social&utm_campaign=Survey) to send us +feedback on your experiences. Thank you to all our contributors! -
+ + ##
License
-YOLOv5 is available under two different licenses: +is available under two different licenses: - **GPL-3.0 License**: See [LICENSE](https://github.com/ultralytics/yolov5/blob/master/LICENSE) file for details. -- **Enterprise License**: Provides greater flexibility for commercial product development without the open-source requirements of GPL-3.0. Typical use cases are embedding Ultralytics software and AI models in commercial products and applications. Request an Enterprise License at [Ultralytics Licensing](https://ultralytics.com/license). +- **Enterprise License**: Provides greater flexibility for commercial product development without the open-source + requirements of GPL-3.0. Typical use cases are embedding Ultralytics software and AI models in commercial products and + applications. Request an Enterprise License at [Ultralytics Licensing](https://ultralytics.com/license). ##
Contact
-For YOLOv5 bug reports and feature requests please visit [GitHub Issues](https://github.com/ultralytics/yolov5/issues) or the [Ultralytics Community Forum](https://community.ultralytics.com/). +For bug reports and feature requests please visit [GitHub Issues](https://github.com/ultralytics/yolov5/issues) or +the [Ultralytics Community Forum](https://community.ultralytics.com/).
@@ -461,4 +542,3 @@ For YOLOv5 bug reports and feature requests please visit [GitHub Issues](https:/
[tta]: https://github.com/ultralytics/yolov5/issues/303 - diff --git a/README.zh-CN.md b/README.zh-CN.md new file mode 100644 index 00000000..f5f91241 --- /dev/null +++ b/README.zh-CN.md @@ -0,0 +1,532 @@ +
+

+ + +

+ +[英文](README.md)|[简体中文](README.zh-CN.md)
+ +
+  CI +  Citation + Docker Pulls +
+ Run on Gradient + Open In Colab + Open In Kaggle +
+
+ +🚀 是世界上最受欢迎的视觉 AI,代表 Ultralytics 对未来视觉 AI +方法的开源研究,结合在数千小时的研究和开发中积累的经验教训和最佳实践。 + +如果要申请企业许可证,请填写表格Ultralytics 许可. + +
+ + + + + + + + + + + + + + + + + + + + +
+
+ +##
YOLOv8 🚀 NEW
+ +We are thrilled to announce the launch of Ultralytics YOLOv8 🚀, our NEW cutting-edge, state-of-the-art (SOTA) model +released at **[https://github.com/ultralytics/ultralytics](https://github.com/ultralytics/ultralytics)**. +YOLOv8 is designed to be fast, accurate, and easy to use, making it an excellent choice for a wide range of +object detection, image segmentation and image classification tasks. + +See the [YOLOv8 Docs](https://docs.ultralytics.com) for details and get started with: + +```commandline +pip install ultralytics +``` + +
+ + +
+ +##
文档
+ +有关训练、测试和部署的完整文档见[YOLOv5 文档](https://docs.ultralytics.com)。请参阅下面的快速入门示例。 + +
+安装 + +克隆 repo,并要求在 [**Python>=3.7.0**](https://www.python.org/) +环境中安装 [requirements.txt](https://github.com/ultralytics/yolov5/blob/master/requirements.txt) ,且要求 [**PyTorch> +=1.7**](https://pytorch.org/get-started/locally/) 。 + +```bash +git clone https://github.com/ultralytics/yolov3 # clone +cd yolov3 +pip install -r requirements.txt # install +``` + +
+ +
+推理 + +使用 YOLOv5 [PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36) +推理。最新 [模型](https://github.com/ultralytics/yolov5/tree/master/models) 将自动的从 +YOLOv5 [release](https://github.com/ultralytics/yolov5/releases) 中下载。 + +```python +import torch + +# Model +model = torch.hub.load( + "ultralytics/yolov3", "yolov3" +) # or yolov3-spp, yolov3-tiny, custom + +# Images +img = "https://ultralytics.com/images/zidane.jpg" # or file, Path, PIL, OpenCV, numpy, list + +# Inference +results = model(img) + +# Results +results.print() # or .show(), .save(), .crop(), .pandas(), etc. +``` + +
+ +
+使用 detect.py 推理 + +`detect.py` 在各种来源上运行推理, [模型](https://github.com/ultralytics/yolov5/tree/master/models) 自动从 +最新的YOLOv5 [release](https://github.com/ultralytics/yolov5/releases) 中下载,并将结果保存到 `runs/detect` 。 + +```bash +python detect.py --weights yolov5s.pt --source 0 # webcam + img.jpg # image + vid.mp4 # video + screen # screenshot + path/ # directory + list.txt # list of images + list.streams # list of streams + 'path/*.jpg' # glob + 'https://youtu.be/Zgi9g1ksQHc' # YouTube + 'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP stream +``` + +
+ +
+训练 + +下面的命令重现 YOLOv5 在 [COCO](https://github.com/ultralytics/yolov5/blob/master/data/scripts/get_coco.sh) 数据集上的结果。 +最新的 [模型](https://github.com/ultralytics/yolov5/tree/master/models) +和 [数据集](https://github.com/ultralytics/yolov5/tree/master/data) +将自动的从 YOLOv5 [release](https://github.com/ultralytics/yolov5/releases) 中下载。 +YOLOv5n/s/m/l/x 在 V100 GPU 的训练时间为 1/2/4/6/8 天( [多GPU](https://github.com/ultralytics/yolov5/issues/475) +训练速度更快)。 +尽可能使用更大的 `--batch-size` ,或通过 `--batch-size -1` 实现 +YOLOv5 [自动批处理](https://github.com/ultralytics/yolov5/pull/5092) 。下方显示的 batchsize 适用于 V100-16GB。 + +```bash +python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5n.yaml --batch-size 128 + yolov5s 64 + yolov5m 40 + yolov5l 24 + yolov5x 16 +``` + + + +
+ +
+教程 + +- [训练自定义数据](https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data)🚀 推荐 +- [获得最佳训练结果的技巧](https://github.com/ultralytics/yolov5/wiki/Tips-for-Best-Training-Results)☘️ 推荐 +- [多 GPU 训练](https://github.com/ultralytics/yolov5/issues/475) +- [PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36)🌟 新 +- [TFLite、ONNX、CoreML、TensorRT 导出](https://github.com/ultralytics/yolov5/issues/251)🚀 +- [NVIDIA Jetson Nano 部署](https://github.com/ultralytics/yolov5/issues/9627)🌟 新 +- [测试时数据增强 (TTA)](https://github.com/ultralytics/yolov5/issues/303) +- [模型集成](https://github.com/ultralytics/yolov5/issues/318) +- [模型修剪/稀疏度](https://github.com/ultralytics/yolov5/issues/304) +- [超参数进化](https://github.com/ultralytics/yolov5/issues/607) +- [使用冻结层进行迁移学习](https://github.com/ultralytics/yolov5/issues/1314) +- [架构总结](https://github.com/ultralytics/yolov5/issues/6998)🌟 新 +- [用于数据集、标签和主动学习的 Roboflow](https://github.com/ultralytics/yolov5/issues/4975)🌟 新 +- [ClearML 记录](https://github.com/ultralytics/yolov5/tree/master/utils/loggers/clearml)🌟 新 +- [Deci 平台](https://github.com/ultralytics/yolov5/wiki/Deci-Platform)🌟 新 +- [Comet Logging](https://github.com/ultralytics/yolov5/tree/master/utils/loggers/comet)🌟 新 + +
+ +##
模块集成
+ +
+ + +
+
+ +
+ + + + + + + + + + + +
+ +| Roboflow | ClearML ⭐ 新 | Comet ⭐ 新 | Neural Magic ⭐ 新 | +| :--------------------------------------------------------------------------------: | :-------------------------------------------------------------------------: | :-------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------: | +| 将您的自定义数据集进行标注并直接导出到 YOLOv5 以进行训练 [Roboflow](https://roboflow.com/?ref=ultralytics) | 自动跟踪、可视化甚至远程训练 YOLOv5 [ClearML](https://cutt.ly/yolov5-readme-clearml)(开源!) | 永远免费,[Comet](https://bit.ly/yolov5-readme-comet)可让您保存 YOLOv5 模型、恢复训练以及交互式可视化和调试预测 | 使用 [Neural Magic DeepSparse](https://bit.ly/yolov5-neuralmagic),运行 YOLOv5 推理的速度最高可提高6倍 | + +##
Ultralytics HUB
+ +[Ultralytics HUB](https://bit.ly/ultralytics_hub) 是我们的⭐**新的**用于可视化数据集、训练 YOLOv5 🚀 +模型并以无缝体验部署到现实世界的无代码解决方案。现在开始 **免费** 使用他! + + + + +##
为什么选择 YOLOv5
+ +YOLOv5 超级容易上手,简单易学。我们优先考虑现实世界的结果。 + +

+
+ YOLOv5-P5 640 图 + +

+
+
+ 图表笔记 + +- **COCO AP val** 表示 mAP@0.5:0.95 指标,在 [COCO val2017](http://cocodataset.org) 数据集的 5000 张图像上测得, 图像包含 + 256 到 1536 各种推理大小。 +- **显卡推理速度** 为在 [COCO val2017](http://cocodataset.org) + 数据集上的平均推理时间,使用 [AWS p3.2xlarge](https://aws.amazon.com/ec2/instance-types/p3/) V100实例,batchsize 为 32 。 +- **EfficientDet** 数据来自 [google/automl](https://github.com/google/automl) , batchsize 为32。 +- **复现命令** + 为 `python val.py --task study --data coco.yaml --iou 0.7 --weights yolov5n6.pt yolov5s6.pt yolov5m6.pt yolov5l6.pt yolov5x6.pt` + +
+ +### 预训练模型 + +| 模型 | 尺寸
(像素) | mAPval
50-95 | mAPval
50 | 推理速度
CPU b1
(ms) | 推理速度
V100 b1
(ms) | 速度
V100 b32
(ms) | 参数量
(M) | FLOPs
@640 (B) | +| ---------------------------------------------------------------------------------------------- | --------------- | -------------------- | ----------------- | --------------------------- | ---------------------------- | --------------------------- | --------------- | ---------------------- | +| [YOLOv5n](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5n.pt) | 640 | 28.0 | 45.7 | **45** | **6.3** | **0.6** | **1.9** | **4.5** | +| [YOLOv5s](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s.pt) | 640 | 37.4 | 56.8 | 98 | 6.4 | 0.9 | 7.2 | 16.5 | +| [YOLOv5m](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5m.pt) | 640 | 45.4 | 64.1 | 224 | 8.2 | 1.7 | 21.2 | 49.0 | +| [YOLOv5l](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5l.pt) | 640 | 49.0 | 67.3 | 430 | 10.1 | 2.7 | 46.5 | 109.1 | +| [YOLOv5x](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5x.pt) | 640 | 50.7 | 68.9 | 766 | 12.1 | 4.8 | 86.7 | 205.7 | +| | | | | | | | | | +| [YOLOv5n6](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5n6.pt) | 1280 | 36.0 | 54.4 | 153 | 8.1 | 2.1 | 3.2 | 4.6 | +| [YOLOv5s6](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s6.pt) | 1280 | 44.8 | 63.7 | 385 | 8.2 | 3.6 | 12.6 | 16.8 | +| [YOLOv5m6](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5m6.pt) | 1280 | 51.3 | 69.3 | 887 | 11.1 | 6.8 | 35.7 | 50.0 | +| [YOLOv5l6](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5l6.pt) | 1280 | 53.7 | 71.3 | 1784 | 15.8 | 10.5 | 76.8 | 111.4 | +| [YOLOv5x6](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5x6.pt)
+[TTA] | 1280
1536 | 55.0
**55.8** | 72.7
**72.7** | 3136
- | 26.2
- | 19.4
- | 140.7
- | 209.8
- | + +
+ 笔记 + +- 所有模型都使用默认配置,训练 300 + epochs。n和s模型使用 [hyp.scratch-low.yaml](https://github.com/ultralytics/yolov5/blob/master/data/hyps/hyp.scratch-low.yaml) + ,其他模型都使用 [hyp.scratch-high.yaml](https://github.com/ultralytics/yolov5/blob/master/data/hyps/hyp.scratch-high.yaml) 。 +- \*\*mAPval\*\*在单模型单尺度上计算,数据集使用 [COCO val2017](http://cocodataset.org) 。
+ 复现命令 `python val.py --data coco.yaml --img 640 --conf 0.001 --iou 0.65` +- **推理速度**在 COCO val + 图像总体时间上进行平均得到,测试环境使用[AWS p3.2xlarge](https://aws.amazon.com/ec2/instance-types/p3/)实例。 NMS 时间 ( + 大约 1 ms/img) 不包括在内。
复现命令 `python val.py --data coco.yaml --img 640 --task speed --batch 1` +- **TTA** [测试时数据增强](https://github.com/ultralytics/yolov5/issues/303) 包括反射和尺度变换。
+ 复现命令 `python val.py --data coco.yaml --img 1536 --iou 0.7 --augment` + +
+ +##
实例分割模型 ⭐ 新
+ +我们新的 YOLOv5 [release v7.0](https://github.com/ultralytics/yolov5/releases/v7.0) +实例分割模型是世界上最快和最准确的模型,击败所有当前 [SOTA 基准](https://paperswithcode.com/sota/real-time-instance-segmentation-on-mscoco) +。我们使它非常易于训练、验证和部署。更多细节请查看 [发行说明](https://github.com/ultralytics/yolov5/releases/v7.0) +或访问我们的 [YOLOv5 分割 Colab 笔记本](https://github.com/ultralytics/yolov5/blob/master/segment/tutorial.ipynb) 以快速入门。 + +
+ 实例分割模型列表 + +
+ +
+ + +
+ +我们使用 A100 GPU 在 COCO 上以 640 图像大小训练了 300 epochs 得到 YOLOv5 分割模型。我们将所有模型导出到 ONNX FP32 以进行 +CPU 速度测试,并导出到 TensorRT FP16 以进行 GPU 速度测试。为了便于再现,我们在 +Google [Colab Pro](https://colab.research.google.com/signup) 上进行了所有速度测试。 + +| 模型 | 尺寸
(像素) | mAPbox
50-95 | mAPmask
50-95 | 训练时长
300 epochs
A100 GPU(小时) | 推理速度
ONNX CPU
(ms) | 推理速度
TRT A100
(ms) | 参数量
(M) | FLOPs
@640 (B) | +| ------------------------------------------------------------------------------------------ | --------------- | -------------------- | --------------------- | --------------------------------------- | ----------------------------- | ----------------------------- | --------------- | ---------------------- | +| [YOLOv5n-seg](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5n-seg.pt) | 640 | 27.6 | 23.4 | 80:17 | **62.7** | **1.2** | **2.0** | **7.1** | +| [YOLOv5s-seg](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s-seg.pt) | 640 | 37.6 | 31.7 | 88:16 | 173.3 | 1.4 | 7.6 | 26.4 | +| [YOLOv5m-seg](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5m-seg.pt) | 640 | 45.0 | 37.1 | 108:36 | 427.0 | 2.2 | 22.0 | 70.8 | +| [YOLOv5l-seg](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5l-seg.pt) | 640 | 49.0 | 39.9 | 66:43 (2x) | 857.4 | 2.9 | 47.9 | 147.7 | +| [YOLOv5x-seg](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5x-seg.pt) | 640 | **50.7** | **41.4** | 62:56 (3x) | 1579.2 | 4.5 | 88.8 | 265.7 | + +- 所有模型使用 SGD 优化器训练, 都使用 `lr0=0.01` 和 `weight_decay=5e-5` 参数, 图像大小为 640 。
训练 log + 可以查看 https://wandb.ai/glenn-jocher/YOLOv5_v70_official +- **准确性**结果都在 COCO 数据集上,使用单模型单尺度测试得到。
+ 复现命令 `python segment/val.py --data coco.yaml --weights yolov5s-seg.pt` +- **推理速度**是使用 100 张图像推理时间进行平均得到,测试环境使用 [Colab Pro](https://colab.research.google.com/signup) 上 + A100 高 RAM 实例。结果仅表示推理速度(NMS 每张图像增加约 1 毫秒)。
+ 复现命令 `python segment/val.py --data coco.yaml --weights yolov5s-seg.pt --batch 1` +- **模型转换**到 FP32 的 ONNX 和 FP16 的 TensorRT 脚本为 `export.py`.
+ 运行命令 `python export.py --weights yolov5s-seg.pt --include engine --device 0 --half` + +
+ +
+ 分割模型使用示例  Open In Colab + +### 训练 + +YOLOv5分割训练支持自动下载 COCO128-seg 分割数据集,用户仅需在启动指令中包含 `--data coco128-seg.yaml` 参数。 +若要手动下载,使用命令 `bash data/scripts/get_coco.sh --train --val --segments`, +在下载完毕后,使用命令 `python train.py --data coco.yaml` 开启训练。 + +```bash +# 单 GPU +python segment/train.py --data coco128-seg.yaml --weights yolov5s-seg.pt --img 640 + +# 多 GPU, DDP 模式 +python -m torch.distributed.run --nproc_per_node 4 --master_port 1 segment/train.py --data coco128-seg.yaml --weights yolov5s-seg.pt --img 640 --device 0,1,2,3 +``` + +### 验证 + +在 COCO 数据集上验证 YOLOv5s-seg mask mAP: + +```bash +bash data/scripts/get_coco.sh --val --segments # 下载 COCO val segments 数据集 (780MB, 5000 images) +python segment/val.py --weights yolov5s-seg.pt --data coco.yaml --img 640 # 验证 +``` + +### 预测 + +使用预训练的 YOLOv5m-seg.pt 来预测 bus.jpg: + +```bash +python segment/predict.py --weights yolov5m-seg.pt --data data/images/bus.jpg +``` + +```python +model = torch.hub.load( + "ultralytics/yolov5", "custom", "yolov5m-seg.pt" +) # 从load from PyTorch Hub 加载模型 (WARNING: 推理暂未支持) +``` + +| ![zidane](https://user-images.githubusercontent.com/26833433/203113421-decef4c4-183d-4a0a-a6c2-6435b33bc5d3.jpg) | ![bus](https://user-images.githubusercontent.com/26833433/203113416-11fe0025-69f7-4874-a0a6-65d0bfe2999a.jpg) | +| ---------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | + +### 模型导出 + +将 YOLOv5s-seg 模型导出到 ONNX 和 TensorRT: + +```bash +python export.py --weights yolov5s-seg.pt --include onnx engine --img 640 --device 0 +``` + +
+ +##
分类网络 ⭐ 新
+ +YOLOv5 [release v6.2](https://github.com/ultralytics/yolov5/releases) +带来对分类模型训练、验证和部署的支持!详情请查看 [发行说明](https://github.com/ultralytics/yolov5/releases/v6.2) +或访问我们的 [YOLOv5 分类 Colab 笔记本](https://github.com/ultralytics/yolov5/blob/master/classify/tutorial.ipynb) +以快速入门。 + +
+ 分类网络模型 + +
+ +我们使用 4xA100 实例在 ImageNet 上训练了 90 个 epochs 得到 YOLOv5-cls 分类模型,我们训练了 ResNet 和 EfficientNet +模型以及相同的默认训练设置以进行比较。我们将所有模型导出到 ONNX FP32 以进行 CPU 速度测试,并导出到 TensorRT FP16 以进行 +GPU 速度测试。为了便于重现,我们在 Google 上进行了所有速度测试 [Colab Pro](https://colab.research.google.com/signup) 。 + +| 模型 | 尺寸
(像素) | acc
top1 | acc
top5 | 训练时长
90 epochs
4xA100(小时) | 推理速度
ONNX CPU
(ms) | 推理速度
TensorRT V100
(ms) | 参数
(M) | FLOPs
@640 (B) | +| -------------------------------------------------------------------------------------------------- | --------------- | ---------------- | ---------------- | ------------------------------------ | ----------------------------- | ---------------------------------- | -------------- | ---------------------- | +| [YOLOv5n-cls](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5n-cls.pt) | 224 | 64.6 | 85.4 | 7:59 | **3.3** | **0.5** | **2.5** | **0.5** | +| [YOLOv5s-cls](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s-cls.pt) | 224 | 71.5 | 90.2 | 8:09 | 6.6 | 0.6 | 5.4 | 1.4 | +| [YOLOv5m-cls](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5m-cls.pt) | 224 | 75.9 | 92.9 | 10:06 | 15.5 | 0.9 | 12.9 | 3.9 | +| [YOLOv5l-cls](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5l-cls.pt) | 224 | 78.0 | 94.0 | 11:56 | 26.9 | 1.4 | 26.5 | 8.5 | +| [YOLOv5x-cls](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5x-cls.pt) | 224 | **79.0** | **94.4** | 15:04 | 54.3 | 1.8 | 48.1 | 15.9 | +| | | | | | | | | | +| [ResNet18](https://github.com/ultralytics/yolov5/releases/download/v7.0/resnet18.pt) | 224 | 70.3 | 89.5 | **6:47** | 11.2 | 0.5 | 11.7 | 3.7 | +| [Resnetzch](https://github.com/ultralytics/yolov5/releases/download/v7.0/resnet34.pt) | 224 | 73.9 | 91.8 | 8:33 | 20.6 | 0.9 | 21.8 | 7.4 | +| [ResNet50](https://github.com/ultralytics/yolov5/releases/download/v7.0/resnet50.pt) | 224 | 76.8 | 93.4 | 11:10 | 23.4 | 1.0 | 25.6 | 8.5 | +| [ResNet101](https://github.com/ultralytics/yolov5/releases/download/v7.0/resnet101.pt) | 224 | 78.5 | 94.3 | 17:10 | 42.1 | 1.9 | 44.5 | 15.9 | +| | | | | | | | | | +| [EfficientNet_b0](https://github.com/ultralytics/yolov5/releases/download/v7.0/efficientnet_b0.pt) | 224 | 75.1 | 92.4 | 13:03 | 12.5 | 1.3 | 5.3 | 1.0 | +| [EfficientNet_b1](https://github.com/ultralytics/yolov5/releases/download/v7.0/efficientnet_b1.pt) | 224 | 76.4 | 93.2 | 17:04 | 14.9 | 1.6 | 7.8 | 1.5 | +| [EfficientNet_b2](https://github.com/ultralytics/yolov5/releases/download/v7.0/efficientnet_b2.pt) | 224 | 76.6 | 93.4 | 17:10 | 15.9 | 1.6 | 9.1 | 1.7 | +| [EfficientNet_b3](https://github.com/ultralytics/yolov5/releases/download/v7.0/efficientnet_b3.pt) | 224 | 77.7 | 94.0 | 19:19 | 18.9 | 1.9 | 12.2 | 2.4 | + +
+ Table Notes (点击以展开) + +- 所有模型都使用 SGD 优化器训练 90 个 epochs,都使用 `lr0=0.001` 和 `weight_decay=5e-5` 参数, 图像大小为 224 + ,且都使用默认设置。
训练 log 可以查看 https://wandb.ai/glenn-jocher/YOLOv5-Classifier-v6-2 +- **准确性**都在单模型单尺度上计算,数据集使用 [ImageNet-1k](https://www.image-net.org/index.php) 。
+ 复现命令 `python classify/val.py --data ../datasets/imagenet --img 224` +- **推理速度**是使用 100 个推理图像进行平均得到,测试环境使用谷歌 [Colab Pro](https://colab.research.google.com/signup) + V100 高 RAM 实例。
复现命令 `python classify/val.py --data ../datasets/imagenet --img 224 --batch 1` +- **模型导出**到 FP32 的 ONNX 和 FP16 的 TensorRT 使用 `export.py` 。
+ 复现命令 `python export.py --weights yolov5s-cls.pt --include engine onnx --imgsz 224` +
+
+ +
+ 分类训练示例  Open In Colab + +### 训练 + +YOLOv5 分类训练支持自动下载 MNIST、Fashion-MNIST、CIFAR10、CIFAR100、Imagenette、Imagewoof 和 ImageNet +数据集,命令中使用 `--data` 即可。 MNIST 示例 `--data mnist` 。 + +```bash +# 单 GPU +python classify/train.py --model yolov5s-cls.pt --data cifar100 --epochs 5 --img 224 --batch 128 + +# 多 GPU, DDP 模式 +python -m torch.distributed.run --nproc_per_node 4 --master_port 1 classify/train.py --model yolov5s-cls.pt --data imagenet --epochs 5 --img 224 --device 0,1,2,3 +``` + +### 验证 + +在 ImageNet-1k 数据集上验证 YOLOv5m-cls 的准确性: + +```bash +bash data/scripts/get_imagenet.sh --val # download ImageNet val split (6.3G, 50000 images) +python classify/val.py --weights yolov5m-cls.pt --data ../datasets/imagenet --img 224 # validate +``` + +### 预测 + +使用预训练的 YOLOv5s-cls.pt 来预测 bus.jpg: + +```bash +python classify/predict.py --weights yolov5s-cls.pt --data data/images/bus.jpg +``` + +```python +model = torch.hub.load( + "ultralytics/yolov5", "custom", "yolov5s-cls.pt" +) # load from PyTorch Hub +``` + +### 模型导出 + +将一组经过训练的 YOLOv5s-cls、ResNet 和 EfficientNet 模型导出到 ONNX 和 TensorRT: + +```bash +python export.py --weights yolov5s-cls.pt resnet50.pt efficientnet_b0.pt --include onnx engine --img 224 +``` + +
+ +##
环境
+ +使用下面我们经过验证的环境,在几秒钟内开始使用 YOLOv5 。单击下面的图标了解详细信息。 + +
+ + + + + + + + + + + + + + + + + +
+ +##
贡献
+ +我们喜欢您的意见或建议!我们希望尽可能简单和透明地为 YOLOv5 做出贡献。请看我们的 [投稿指南](CONTRIBUTING.md) +,并填写 [YOLOv5调查](https://ultralytics.com/survey?utm_source=github&utm_medium=social&utm_campaign=Survey) +向我们发送您的体验反馈。感谢我们所有的贡献者! + + + + + + +##
License
+ +YOLOv5 在两种不同的 License 下可用: + +- **GPL-3.0 License**: 查看 [License](https://github.com/ultralytics/yolov5/blob/master/LICENSE) 文件的详细信息。 +- **企业License**:在没有 GPL-3.0 开源要求的情况下为商业产品开发提供更大的灵活性。典型用例是将 Ultralytics 软件和 AI + 模型嵌入到商业产品和应用程序中。在以下位置申请企业许可证 [Ultralytics 许可](https://ultralytics.com/license) 。 + +##
联系我们
+ +请访问 [GitHub Issues](https://github.com/ultralytics/yolov5/issues) +或 [Ultralytics Community Forum](https://community.ultralytis.com) 以报告 YOLOv5 错误和请求功能。 + +
+
+ + + + + + + + + + + + + + + + + + + + +
+ +[tta]: https://github.com/ultralytics/yolov5/issues/303 diff --git a/benchmarks.py b/benchmarks.py new file mode 100644 index 00000000..b9a41360 --- /dev/null +++ b/benchmarks.py @@ -0,0 +1,169 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Run benchmarks on all supported export formats + +Format | `export.py --include` | Model +--- | --- | --- +PyTorch | - | yolov5s.pt +TorchScript | `torchscript` | yolov5s.torchscript +ONNX | `onnx` | yolov5s.onnx +OpenVINO | `openvino` | yolov5s_openvino_model/ +TensorRT | `engine` | yolov5s.engine +CoreML | `coreml` | yolov5s.mlmodel +TensorFlow SavedModel | `saved_model` | yolov5s_saved_model/ +TensorFlow GraphDef | `pb` | yolov5s.pb +TensorFlow Lite | `tflite` | yolov5s.tflite +TensorFlow Edge TPU | `edgetpu` | yolov5s_edgetpu.tflite +TensorFlow.js | `tfjs` | yolov5s_web_model/ + +Requirements: + $ pip install -r requirements.txt coremltools onnx onnx-simplifier onnxruntime openvino-dev tensorflow-cpu # CPU + $ pip install -r requirements.txt coremltools onnx onnx-simplifier onnxruntime-gpu openvino-dev tensorflow # GPU + $ pip install -U nvidia-tensorrt --index-url https://pypi.ngc.nvidia.com # TensorRT + +Usage: + $ python benchmarks.py --weights yolov5s.pt --img 640 +""" + +import argparse +import platform +import sys +import time +from pathlib import Path + +import pandas as pd + +FILE = Path(__file__).resolve() +ROOT = FILE.parents[0] # root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH +# ROOT = ROOT.relative_to(Path.cwd()) # relative + +import export +from models.experimental import attempt_load +from models.yolo import SegmentationModel +from segment.val import run as val_seg +from utils import notebook_init +from utils.general import LOGGER, check_yaml, file_size, print_args +from utils.torch_utils import select_device +from val import run as val_det + + +def run( + weights=ROOT / 'yolov5s.pt', # weights path + imgsz=640, # inference size (pixels) + batch_size=1, # batch size + data=ROOT / 'data/coco128.yaml', # dataset.yaml path + device='', # cuda device, i.e. 0 or 0,1,2,3 or cpu + half=False, # use FP16 half-precision inference + test=False, # test exports only + pt_only=False, # test PyTorch only + hard_fail=False, # throw error on benchmark failure +): + y, t = [], time.time() + device = select_device(device) + model_type = type(attempt_load(weights, fuse=False)) # DetectionModel, SegmentationModel, etc. + for i, (name, f, suffix, cpu, gpu) in export.export_formats().iterrows(): # index, (name, file, suffix, CPU, GPU) + try: + assert i not in (9, 10), 'inference not supported' # Edge TPU and TF.js are unsupported + assert i != 5 or platform.system() == 'Darwin', 'inference only supported on macOS>=10.13' # CoreML + if 'cpu' in device.type: + assert cpu, 'inference not supported on CPU' + if 'cuda' in device.type: + assert gpu, 'inference not supported on GPU' + + # Export + if f == '-': + w = weights # PyTorch format + else: + w = export.run(weights=weights, imgsz=[imgsz], include=[f], device=device, half=half)[-1] # all others + assert suffix in str(w), 'export failed' + + # Validate + if model_type == SegmentationModel: + result = val_seg(data, w, batch_size, imgsz, plots=False, device=device, task='speed', half=half) + metric = result[0][7] # (box(p, r, map50, map), mask(p, r, map50, map), *loss(box, obj, cls)) + else: # DetectionModel: + result = val_det(data, w, batch_size, imgsz, plots=False, device=device, task='speed', half=half) + metric = result[0][3] # (p, r, map50, map, *loss(box, obj, cls)) + speed = result[2][1] # times (preprocess, inference, postprocess) + y.append([name, round(file_size(w), 1), round(metric, 4), round(speed, 2)]) # MB, mAP, t_inference + except Exception as e: + if hard_fail: + assert type(e) is AssertionError, f'Benchmark --hard-fail for {name}: {e}' + LOGGER.warning(f'WARNING ⚠️ Benchmark failure for {name}: {e}') + y.append([name, None, None, None]) # mAP, t_inference + if pt_only and i == 0: + break # break after PyTorch + + # Print results + LOGGER.info('\n') + parse_opt() + notebook_init() # print system info + c = ['Format', 'Size (MB)', 'mAP50-95', 'Inference time (ms)'] if map else ['Format', 'Export', '', ''] + py = pd.DataFrame(y, columns=c) + LOGGER.info(f'\nBenchmarks complete ({time.time() - t:.2f}s)') + LOGGER.info(str(py if map else py.iloc[:, :2])) + if hard_fail and isinstance(hard_fail, str): + metrics = py['mAP50-95'].array # values to compare to floor + floor = eval(hard_fail) # minimum metric floor to pass, i.e. = 0.29 mAP for YOLOv5n + assert all(x > floor for x in metrics if pd.notna(x)), f'HARD FAIL: mAP50-95 < floor {floor}' + return py + + +def test( + weights=ROOT / 'yolov5s.pt', # weights path + imgsz=640, # inference size (pixels) + batch_size=1, # batch size + data=ROOT / 'data/coco128.yaml', # dataset.yaml path + device='', # cuda device, i.e. 0 or 0,1,2,3 or cpu + half=False, # use FP16 half-precision inference + test=False, # test exports only + pt_only=False, # test PyTorch only + hard_fail=False, # throw error on benchmark failure +): + y, t = [], time.time() + device = select_device(device) + for i, (name, f, suffix, gpu) in export.export_formats().iterrows(): # index, (name, file, suffix, gpu-capable) + try: + w = weights if f == '-' else \ + export.run(weights=weights, imgsz=[imgsz], include=[f], device=device, half=half)[-1] # weights + assert suffix in str(w), 'export failed' + y.append([name, True]) + except Exception: + y.append([name, False]) # mAP, t_inference + + # Print results + LOGGER.info('\n') + parse_opt() + notebook_init() # print system info + py = pd.DataFrame(y, columns=['Format', 'Export']) + LOGGER.info(f'\nExports complete ({time.time() - t:.2f}s)') + LOGGER.info(str(py)) + return py + + +def parse_opt(): + parser = argparse.ArgumentParser() + parser.add_argument('--weights', type=str, default=ROOT / 'yolov5s.pt', help='weights path') + parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=640, help='inference size (pixels)') + parser.add_argument('--batch-size', type=int, default=1, help='batch size') + parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='dataset.yaml path') + parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') + parser.add_argument('--half', action='store_true', help='use FP16 half-precision inference') + parser.add_argument('--test', action='store_true', help='test exports only') + parser.add_argument('--pt-only', action='store_true', help='test PyTorch only') + parser.add_argument('--hard-fail', nargs='?', const=True, default=False, help='Exception on error or < min metric') + opt = parser.parse_args() + opt.data = check_yaml(opt.data) # check YAML + print_args(vars(opt)) + return opt + + +def main(opt): + test(**vars(opt)) if opt.test else run(**vars(opt)) + + +if __name__ == "__main__": + opt = parse_opt() + main(opt) diff --git a/classify/predict.py b/classify/predict.py new file mode 100644 index 00000000..dc7a3eda --- /dev/null +++ b/classify/predict.py @@ -0,0 +1,226 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Run classification inference on images, videos, directories, globs, YouTube, webcam, streams, etc. + +Usage - sources: + $ python classify/predict.py --weights yolov5s-cls.pt --source 0 # webcam + img.jpg # image + vid.mp4 # video + screen # screenshot + path/ # directory + list.txt # list of images + list.streams # list of streams + 'path/*.jpg' # glob + 'https://youtu.be/Zgi9g1ksQHc' # YouTube + 'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP stream + +Usage - formats: + $ python classify/predict.py --weights yolov5s-cls.pt # PyTorch + yolov5s-cls.torchscript # TorchScript + yolov5s-cls.onnx # ONNX Runtime or OpenCV DNN with --dnn + yolov5s-cls_openvino_model # OpenVINO + yolov5s-cls.engine # TensorRT + yolov5s-cls.mlmodel # CoreML (macOS-only) + yolov5s-cls_saved_model # TensorFlow SavedModel + yolov5s-cls.pb # TensorFlow GraphDef + yolov5s-cls.tflite # TensorFlow Lite + yolov5s-cls_edgetpu.tflite # TensorFlow Edge TPU + yolov5s-cls_paddle_model # PaddlePaddle +""" + +import argparse +import os +import platform +import sys +from pathlib import Path + +import torch +import torch.nn.functional as F + +FILE = Path(__file__).resolve() +ROOT = FILE.parents[1] # root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH +ROOT = Path(os.path.relpath(ROOT, Path.cwd())) # relative + +from models.common import DetectMultiBackend +from utils.augmentations import classify_transforms +from utils.dataloaders import IMG_FORMATS, VID_FORMATS, LoadImages, LoadScreenshots, LoadStreams +from utils.general import (LOGGER, Profile, check_file, check_img_size, check_imshow, check_requirements, colorstr, cv2, + increment_path, print_args, strip_optimizer) +from utils.plots import Annotator +from utils.torch_utils import select_device, smart_inference_mode + + +@smart_inference_mode() +def run( + weights=ROOT / 'yolov5s-cls.pt', # model.pt path(s) + source=ROOT / 'data/images', # file/dir/URL/glob/screen/0(webcam) + data=ROOT / 'data/coco128.yaml', # dataset.yaml path + imgsz=(224, 224), # inference size (height, width) + device='', # cuda device, i.e. 0 or 0,1,2,3 or cpu + view_img=False, # show results + save_txt=False, # save results to *.txt + nosave=False, # do not save images/videos + augment=False, # augmented inference + visualize=False, # visualize features + update=False, # update all models + project=ROOT / 'runs/predict-cls', # save results to project/name + name='exp', # save results to project/name + exist_ok=False, # existing project/name ok, do not increment + half=False, # use FP16 half-precision inference + dnn=False, # use OpenCV DNN for ONNX inference + vid_stride=1, # video frame-rate stride +): + source = str(source) + save_img = not nosave and not source.endswith('.txt') # save inference images + is_file = Path(source).suffix[1:] in (IMG_FORMATS + VID_FORMATS) + is_url = source.lower().startswith(('rtsp://', 'rtmp://', 'http://', 'https://')) + webcam = source.isnumeric() or source.endswith('.streams') or (is_url and not is_file) + screenshot = source.lower().startswith('screen') + if is_url and is_file: + source = check_file(source) # download + + # Directories + save_dir = increment_path(Path(project) / name, exist_ok=exist_ok) # increment run + (save_dir / 'labels' if save_txt else save_dir).mkdir(parents=True, exist_ok=True) # make dir + + # Load model + device = select_device(device) + model = DetectMultiBackend(weights, device=device, dnn=dnn, data=data, fp16=half) + stride, names, pt = model.stride, model.names, model.pt + imgsz = check_img_size(imgsz, s=stride) # check image size + + # Dataloader + bs = 1 # batch_size + if webcam: + view_img = check_imshow(warn=True) + dataset = LoadStreams(source, img_size=imgsz, transforms=classify_transforms(imgsz[0]), vid_stride=vid_stride) + bs = len(dataset) + elif screenshot: + dataset = LoadScreenshots(source, img_size=imgsz, stride=stride, auto=pt) + else: + dataset = LoadImages(source, img_size=imgsz, transforms=classify_transforms(imgsz[0]), vid_stride=vid_stride) + vid_path, vid_writer = [None] * bs, [None] * bs + + # Run inference + model.warmup(imgsz=(1 if pt else bs, 3, *imgsz)) # warmup + seen, windows, dt = 0, [], (Profile(), Profile(), Profile()) + for path, im, im0s, vid_cap, s in dataset: + with dt[0]: + im = torch.Tensor(im).to(model.device) + im = im.half() if model.fp16 else im.float() # uint8 to fp16/32 + if len(im.shape) == 3: + im = im[None] # expand for batch dim + + # Inference + with dt[1]: + results = model(im) + + # Post-process + with dt[2]: + pred = F.softmax(results, dim=1) # probabilities + + # Process predictions + for i, prob in enumerate(pred): # per image + seen += 1 + if webcam: # batch_size >= 1 + p, im0, frame = path[i], im0s[i].copy(), dataset.count + s += f'{i}: ' + else: + p, im0, frame = path, im0s.copy(), getattr(dataset, 'frame', 0) + + p = Path(p) # to Path + save_path = str(save_dir / p.name) # im.jpg + txt_path = str(save_dir / 'labels' / p.stem) + ('' if dataset.mode == 'image' else f'_{frame}') # im.txt + + s += '%gx%g ' % im.shape[2:] # print string + annotator = Annotator(im0, example=str(names), pil=True) + + # Print results + top5i = prob.argsort(0, descending=True)[:5].tolist() # top 5 indices + s += f"{', '.join(f'{names[j]} {prob[j]:.2f}' for j in top5i)}, " + + # Write results + text = '\n'.join(f'{prob[j]:.2f} {names[j]}' for j in top5i) + if save_img or view_img: # Add bbox to image + annotator.text((32, 32), text, txt_color=(255, 255, 255)) + if save_txt: # Write to file + with open(f'{txt_path}.txt', 'a') as f: + f.write(text + '\n') + + # Stream results + im0 = annotator.result() + if view_img: + if platform.system() == 'Linux' and p not in windows: + windows.append(p) + cv2.namedWindow(str(p), cv2.WINDOW_NORMAL | cv2.WINDOW_KEEPRATIO) # allow window resize (Linux) + cv2.resizeWindow(str(p), im0.shape[1], im0.shape[0]) + cv2.imshow(str(p), im0) + cv2.waitKey(1) # 1 millisecond + + # Save results (image with detections) + if save_img: + if dataset.mode == 'image': + cv2.imwrite(save_path, im0) + else: # 'video' or 'stream' + if vid_path[i] != save_path: # new video + vid_path[i] = save_path + if isinstance(vid_writer[i], cv2.VideoWriter): + vid_writer[i].release() # release previous video writer + if vid_cap: # video + fps = vid_cap.get(cv2.CAP_PROP_FPS) + w = int(vid_cap.get(cv2.CAP_PROP_FRAME_WIDTH)) + h = int(vid_cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) + else: # stream + fps, w, h = 30, im0.shape[1], im0.shape[0] + save_path = str(Path(save_path).with_suffix('.mp4')) # force *.mp4 suffix on results videos + vid_writer[i] = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (w, h)) + vid_writer[i].write(im0) + + # Print time (inference-only) + LOGGER.info(f"{s}{dt[1].dt * 1E3:.1f}ms") + + # Print results + t = tuple(x.t / seen * 1E3 for x in dt) # speeds per image + LOGGER.info(f'Speed: %.1fms pre-process, %.1fms inference, %.1fms NMS per image at shape {(1, 3, *imgsz)}' % t) + if save_txt or save_img: + s = f"\n{len(list(save_dir.glob('labels/*.txt')))} labels saved to {save_dir / 'labels'}" if save_txt else '' + LOGGER.info(f"Results saved to {colorstr('bold', save_dir)}{s}") + if update: + strip_optimizer(weights[0]) # update model (to fix SourceChangeWarning) + + +def parse_opt(): + parser = argparse.ArgumentParser() + parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'yolov5s-cls.pt', help='model path(s)') + parser.add_argument('--source', type=str, default=ROOT / 'data/images', help='file/dir/URL/glob/screen/0(webcam)') + parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='(optional) dataset.yaml path') + parser.add_argument('--imgsz', '--img', '--img-size', nargs='+', type=int, default=[224], help='inference size h,w') + parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') + parser.add_argument('--view-img', action='store_true', help='show results') + parser.add_argument('--save-txt', action='store_true', help='save results to *.txt') + parser.add_argument('--nosave', action='store_true', help='do not save images/videos') + parser.add_argument('--augment', action='store_true', help='augmented inference') + parser.add_argument('--visualize', action='store_true', help='visualize features') + parser.add_argument('--update', action='store_true', help='update all models') + parser.add_argument('--project', default=ROOT / 'runs/predict-cls', help='save results to project/name') + parser.add_argument('--name', default='exp', help='save results to project/name') + parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment') + parser.add_argument('--half', action='store_true', help='use FP16 half-precision inference') + parser.add_argument('--dnn', action='store_true', help='use OpenCV DNN for ONNX inference') + parser.add_argument('--vid-stride', type=int, default=1, help='video frame-rate stride') + opt = parser.parse_args() + opt.imgsz *= 2 if len(opt.imgsz) == 1 else 1 # expand + print_args(vars(opt)) + return opt + + +def main(opt): + check_requirements(exclude=('tensorboard', 'thop')) + run(**vars(opt)) + + +if __name__ == "__main__": + opt = parse_opt() + main(opt) diff --git a/classify/train.py b/classify/train.py new file mode 100644 index 00000000..4d62bfc7 --- /dev/null +++ b/classify/train.py @@ -0,0 +1,333 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Train a YOLOv5 classifier model on a classification dataset + +Usage - Single-GPU training: + $ python classify/train.py --model yolov5s-cls.pt --data imagenette160 --epochs 5 --img 224 + +Usage - Multi-GPU DDP training: + $ python -m torch.distributed.run --nproc_per_node 4 --master_port 2022 classify/train.py --model yolov5s-cls.pt --data imagenet --epochs 5 --img 224 --device 0,1,2,3 + +Datasets: --data mnist, fashion-mnist, cifar10, cifar100, imagenette, imagewoof, imagenet, or 'path/to/data' +YOLOv5-cls models: --model yolov5n-cls.pt, yolov5s-cls.pt, yolov5m-cls.pt, yolov5l-cls.pt, yolov5x-cls.pt +Torchvision models: --model resnet50, efficientnet_b0, etc. See https://pytorch.org/vision/stable/models.html +""" + +import argparse +import os +import subprocess +import sys +import time +from copy import deepcopy +from datetime import datetime +from pathlib import Path + +import torch +import torch.distributed as dist +import torch.hub as hub +import torch.optim.lr_scheduler as lr_scheduler +import torchvision +from torch.cuda import amp +from tqdm import tqdm + +FILE = Path(__file__).resolve() +ROOT = FILE.parents[1] # YOLOv5 root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH +ROOT = Path(os.path.relpath(ROOT, Path.cwd())) # relative + +from classify import val as validate +from models.experimental import attempt_load +from models.yolo import ClassificationModel, DetectionModel +from utils.dataloaders import create_classification_dataloader +from utils.general import (DATASETS_DIR, LOGGER, TQDM_BAR_FORMAT, WorkingDirectory, check_git_info, check_git_status, + check_requirements, colorstr, download, increment_path, init_seeds, print_args, yaml_save) +from utils.loggers import GenericLogger +from utils.plots import imshow_cls +from utils.torch_utils import (ModelEMA, model_info, reshape_classifier_output, select_device, smart_DDP, + smart_optimizer, smartCrossEntropyLoss, torch_distributed_zero_first) + +LOCAL_RANK = int(os.getenv('LOCAL_RANK', -1)) # https://pytorch.org/docs/stable/elastic/run.html +RANK = int(os.getenv('RANK', -1)) +WORLD_SIZE = int(os.getenv('WORLD_SIZE', 1)) +GIT_INFO = check_git_info() + + +def train(opt, device): + init_seeds(opt.seed + 1 + RANK, deterministic=True) + save_dir, data, bs, epochs, nw, imgsz, pretrained = \ + opt.save_dir, Path(opt.data), opt.batch_size, opt.epochs, min(os.cpu_count() - 1, opt.workers), \ + opt.imgsz, str(opt.pretrained).lower() == 'true' + cuda = device.type != 'cpu' + + # Directories + wdir = save_dir / 'weights' + wdir.mkdir(parents=True, exist_ok=True) # make dir + last, best = wdir / 'last.pt', wdir / 'best.pt' + + # Save run settings + yaml_save(save_dir / 'opt.yaml', vars(opt)) + + # Logger + logger = GenericLogger(opt=opt, console_logger=LOGGER) if RANK in {-1, 0} else None + + # Download Dataset + with torch_distributed_zero_first(LOCAL_RANK), WorkingDirectory(ROOT): + data_dir = data if data.is_dir() else (DATASETS_DIR / data) + if not data_dir.is_dir(): + LOGGER.info(f'\nDataset not found ⚠️, missing path {data_dir}, attempting download...') + t = time.time() + if str(data) == 'imagenet': + subprocess.run(f"bash {ROOT / 'data/scripts/get_imagenet.sh'}", shell=True, check=True) + else: + url = f'https://github.com/ultralytics/yolov5/releases/download/v1.0/{data}.zip' + download(url, dir=data_dir.parent) + s = f"Dataset download success ✅ ({time.time() - t:.1f}s), saved to {colorstr('bold', data_dir)}\n" + LOGGER.info(s) + + # Dataloaders + nc = len([x for x in (data_dir / 'train').glob('*') if x.is_dir()]) # number of classes + trainloader = create_classification_dataloader(path=data_dir / 'train', + imgsz=imgsz, + batch_size=bs // WORLD_SIZE, + augment=True, + cache=opt.cache, + rank=LOCAL_RANK, + workers=nw) + + test_dir = data_dir / 'test' if (data_dir / 'test').exists() else data_dir / 'val' # data/test or data/val + if RANK in {-1, 0}: + testloader = create_classification_dataloader(path=test_dir, + imgsz=imgsz, + batch_size=bs // WORLD_SIZE * 2, + augment=False, + cache=opt.cache, + rank=-1, + workers=nw) + + # Model + with torch_distributed_zero_first(LOCAL_RANK), WorkingDirectory(ROOT): + if Path(opt.model).is_file() or opt.model.endswith('.pt'): + model = attempt_load(opt.model, device='cpu', fuse=False) + elif opt.model in torchvision.models.__dict__: # TorchVision models i.e. resnet50, efficientnet_b0 + model = torchvision.models.__dict__[opt.model](weights='IMAGENET1K_V1' if pretrained else None) + else: + m = hub.list('ultralytics/yolov5') # + hub.list('pytorch/vision') # models + raise ModuleNotFoundError(f'--model {opt.model} not found. Available models are: \n' + '\n'.join(m)) + if isinstance(model, DetectionModel): + LOGGER.warning("WARNING ⚠️ pass YOLOv5 classifier model with '-cls' suffix, i.e. '--model yolov5s-cls.pt'") + model = ClassificationModel(model=model, nc=nc, cutoff=opt.cutoff or 10) # convert to classification model + reshape_classifier_output(model, nc) # update class count + for m in model.modules(): + if not pretrained and hasattr(m, 'reset_parameters'): + m.reset_parameters() + if isinstance(m, torch.nn.Dropout) and opt.dropout is not None: + m.p = opt.dropout # set dropout + for p in model.parameters(): + p.requires_grad = True # for training + model = model.to(device) + + # Info + if RANK in {-1, 0}: + model.names = trainloader.dataset.classes # attach class names + model.transforms = testloader.dataset.torch_transforms # attach inference transforms + model_info(model) + if opt.verbose: + LOGGER.info(model) + images, labels = next(iter(trainloader)) + file = imshow_cls(images[:25], labels[:25], names=model.names, f=save_dir / 'train_images.jpg') + logger.log_images(file, name='Train Examples') + logger.log_graph(model, imgsz) # log model + + # Optimizer + optimizer = smart_optimizer(model, opt.optimizer, opt.lr0, momentum=0.9, decay=opt.decay) + + # Scheduler + lrf = 0.01 # final lr (fraction of lr0) + # lf = lambda x: ((1 + math.cos(x * math.pi / epochs)) / 2) * (1 - lrf) + lrf # cosine + lf = lambda x: (1 - x / epochs) * (1 - lrf) + lrf # linear + scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf) + # scheduler = lr_scheduler.OneCycleLR(optimizer, max_lr=lr0, total_steps=epochs, pct_start=0.1, + # final_div_factor=1 / 25 / lrf) + + # EMA + ema = ModelEMA(model) if RANK in {-1, 0} else None + + # DDP mode + if cuda and RANK != -1: + model = smart_DDP(model) + + # Train + t0 = time.time() + criterion = smartCrossEntropyLoss(label_smoothing=opt.label_smoothing) # loss function + best_fitness = 0.0 + scaler = amp.GradScaler(enabled=cuda) + val = test_dir.stem # 'val' or 'test' + LOGGER.info(f'Image sizes {imgsz} train, {imgsz} test\n' + f'Using {nw * WORLD_SIZE} dataloader workers\n' + f"Logging results to {colorstr('bold', save_dir)}\n" + f'Starting {opt.model} training on {data} dataset with {nc} classes for {epochs} epochs...\n\n' + f"{'Epoch':>10}{'GPU_mem':>10}{'train_loss':>12}{f'{val}_loss':>12}{'top1_acc':>12}{'top5_acc':>12}") + for epoch in range(epochs): # loop over the dataset multiple times + tloss, vloss, fitness = 0.0, 0.0, 0.0 # train loss, val loss, fitness + model.train() + if RANK != -1: + trainloader.sampler.set_epoch(epoch) + pbar = enumerate(trainloader) + if RANK in {-1, 0}: + pbar = tqdm(enumerate(trainloader), total=len(trainloader), bar_format=TQDM_BAR_FORMAT) + for i, (images, labels) in pbar: # progress bar + images, labels = images.to(device, non_blocking=True), labels.to(device) + + # Forward + with amp.autocast(enabled=cuda): # stability issues when enabled + loss = criterion(model(images), labels) + + # Backward + scaler.scale(loss).backward() + + # Optimize + scaler.unscale_(optimizer) # unscale gradients + torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=10.0) # clip gradients + scaler.step(optimizer) + scaler.update() + optimizer.zero_grad() + if ema: + ema.update(model) + + if RANK in {-1, 0}: + # Print + tloss = (tloss * i + loss.item()) / (i + 1) # update mean losses + mem = '%.3gG' % (torch.cuda.memory_reserved() / 1E9 if torch.cuda.is_available() else 0) # (GB) + pbar.desc = f"{f'{epoch + 1}/{epochs}':>10}{mem:>10}{tloss:>12.3g}" + ' ' * 36 + + # Test + if i == len(pbar) - 1: # last batch + top1, top5, vloss = validate.run(model=ema.ema, + dataloader=testloader, + criterion=criterion, + pbar=pbar) # test accuracy, loss + fitness = top1 # define fitness as top1 accuracy + + # Scheduler + scheduler.step() + + # Log metrics + if RANK in {-1, 0}: + # Best fitness + if fitness > best_fitness: + best_fitness = fitness + + # Log + metrics = { + "train/loss": tloss, + f"{val}/loss": vloss, + "metrics/accuracy_top1": top1, + "metrics/accuracy_top5": top5, + "lr/0": optimizer.param_groups[0]['lr']} # learning rate + logger.log_metrics(metrics, epoch) + + # Save model + final_epoch = epoch + 1 == epochs + if (not opt.nosave) or final_epoch: + ckpt = { + 'epoch': epoch, + 'best_fitness': best_fitness, + 'model': deepcopy(ema.ema).half(), # deepcopy(de_parallel(model)).half(), + 'ema': None, # deepcopy(ema.ema).half(), + 'updates': ema.updates, + 'optimizer': None, # optimizer.state_dict(), + 'opt': vars(opt), + 'git': GIT_INFO, # {remote, branch, commit} if a git repo + 'date': datetime.now().isoformat()} + + # Save last, best and delete + torch.save(ckpt, last) + if best_fitness == fitness: + torch.save(ckpt, best) + del ckpt + + # Train complete + if RANK in {-1, 0} and final_epoch: + LOGGER.info(f'\nTraining complete ({(time.time() - t0) / 3600:.3f} hours)' + f"\nResults saved to {colorstr('bold', save_dir)}" + f"\nPredict: python classify/predict.py --weights {best} --source im.jpg" + f"\nValidate: python classify/val.py --weights {best} --data {data_dir}" + f"\nExport: python export.py --weights {best} --include onnx" + f"\nPyTorch Hub: model = torch.hub.load('ultralytics/yolov5', 'custom', '{best}')" + f"\nVisualize: https://netron.app\n") + + # Plot examples + images, labels = (x[:25] for x in next(iter(testloader))) # first 25 images and labels + pred = torch.max(ema.ema(images.to(device)), 1)[1] + file = imshow_cls(images, labels, pred, model.names, verbose=False, f=save_dir / 'test_images.jpg') + + # Log results + meta = {"epochs": epochs, "top1_acc": best_fitness, "date": datetime.now().isoformat()} + logger.log_images(file, name='Test Examples (true-predicted)', epoch=epoch) + logger.log_model(best, epochs, metadata=meta) + + +def parse_opt(known=False): + parser = argparse.ArgumentParser() + parser.add_argument('--model', type=str, default='yolov5s-cls.pt', help='initial weights path') + parser.add_argument('--data', type=str, default='imagenette160', help='cifar10, cifar100, mnist, imagenet, ...') + parser.add_argument('--epochs', type=int, default=10, help='total training epochs') + parser.add_argument('--batch-size', type=int, default=64, help='total batch size for all GPUs') + parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=224, help='train, val image size (pixels)') + parser.add_argument('--nosave', action='store_true', help='only save final checkpoint') + parser.add_argument('--cache', type=str, nargs='?', const='ram', help='--cache images in "ram" (default) or "disk"') + parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') + parser.add_argument('--workers', type=int, default=8, help='max dataloader workers (per RANK in DDP mode)') + parser.add_argument('--project', default=ROOT / 'runs/train-cls', help='save to project/name') + parser.add_argument('--name', default='exp', help='save to project/name') + parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment') + parser.add_argument('--pretrained', nargs='?', const=True, default=True, help='start from i.e. --pretrained False') + parser.add_argument('--optimizer', choices=['SGD', 'Adam', 'AdamW', 'RMSProp'], default='Adam', help='optimizer') + parser.add_argument('--lr0', type=float, default=0.001, help='initial learning rate') + parser.add_argument('--decay', type=float, default=5e-5, help='weight decay') + parser.add_argument('--label-smoothing', type=float, default=0.1, help='Label smoothing epsilon') + parser.add_argument('--cutoff', type=int, default=None, help='Model layer cutoff index for Classify() head') + parser.add_argument('--dropout', type=float, default=None, help='Dropout (fraction)') + parser.add_argument('--verbose', action='store_true', help='Verbose mode') + parser.add_argument('--seed', type=int, default=0, help='Global training seed') + parser.add_argument('--local_rank', type=int, default=-1, help='Automatic DDP Multi-GPU argument, do not modify') + return parser.parse_known_args()[0] if known else parser.parse_args() + + +def main(opt): + # Checks + if RANK in {-1, 0}: + print_args(vars(opt)) + check_git_status() + check_requirements() + + # DDP mode + device = select_device(opt.device, batch_size=opt.batch_size) + if LOCAL_RANK != -1: + assert opt.batch_size != -1, 'AutoBatch is coming soon for classification, please pass a valid --batch-size' + assert opt.batch_size % WORLD_SIZE == 0, f'--batch-size {opt.batch_size} must be multiple of WORLD_SIZE' + assert torch.cuda.device_count() > LOCAL_RANK, 'insufficient CUDA devices for DDP command' + torch.cuda.set_device(LOCAL_RANK) + device = torch.device('cuda', LOCAL_RANK) + dist.init_process_group(backend="nccl" if dist.is_nccl_available() else "gloo") + + # Parameters + opt.save_dir = increment_path(Path(opt.project) / opt.name, exist_ok=opt.exist_ok) # increment run + + # Train + train(opt, device) + + +def run(**kwargs): + # Usage: from yolov5 import classify; classify.train.run(data=mnist, imgsz=320, model='yolov5m') + opt = parse_opt(True) + for k, v in kwargs.items(): + setattr(opt, k, v) + main(opt) + return opt + + +if __name__ == "__main__": + opt = parse_opt() + main(opt) diff --git a/classify/tutorial.ipynb b/classify/tutorial.ipynb new file mode 100644 index 00000000..e3a60c4e --- /dev/null +++ b/classify/tutorial.ipynb @@ -0,0 +1,1480 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "t6MPjfT5NrKQ" + }, + "source": [ + "
\n", + "\n", + " \n", + " \n", + "\n", + "\n", + "
\n", + " \"Run\n", + " \"Open\n", + " \"Open\n", + "
\n", + "\n", + "This YOLOv3 🚀 notebook by Ultralytics presents simple train, validate and predict examples to help start your AI adventure.
See GitHub for community support or contact us for professional support.\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7mGmQbAO5pQb" + }, + "source": [ + "# Setup\n", + "\n", + "Clone GitHub [repository](https://github.com/ultralytics/yolov5), install [dependencies](https://github.com/ultralytics/yolov5/blob/master/requirements.txt) and check PyTorch and GPU." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "wbvMlHd_QwMG", + "outputId": "0806e375-610d-4ec0-c867-763dbb518279" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "YOLOv3 🚀 v7.0-3-g61ebf5e Python-3.7.15 torch-1.12.1+cu113 CUDA:0 (Tesla T4, 15110MiB)\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Setup complete ✅ (2 CPUs, 12.7 GB RAM, 22.6/78.2 GB disk)\n" + ] + } + ], + "source": [ + "!git clone https://github.com/ultralytics/yolov5 # clone\n", + "%cd yolov5\n", + "%pip install -qr requirements.txt # install\n", + "\n", + "import torch\n", + "import utils\n", + "display = utils.notebook_init() # checks" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4JnkELT0cIJg" + }, + "source": [ + "# 1. Predict\n", + "\n", + "`classify/predict.py` runs YOLOv5 Classification inference on a variety of sources, downloading models automatically from the [latest YOLOv5 release](https://github.com/ultralytics/yolov5/releases), and saving results to `runs/predict-cls`. Example inference sources are:\n", + "\n", + "```shell\n", + "python classify/predict.py --source 0 # webcam\n", + " img.jpg # image \n", + " vid.mp4 # video\n", + " screen # screenshot\n", + " path/ # directory\n", + " 'path/*.jpg' # glob\n", + " 'https://youtu.be/Zgi9g1ksQHc' # YouTube\n", + " 'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP stream\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "zR9ZbuQCH7FX", + "outputId": "50504ef7-aa3e-4281-a4e3-d0c7df3c0ffe" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[34m\u001b[1mclassify/predict: \u001b[0mweights=['yolov5s-cls.pt'], source=data/images, data=data/coco128.yaml, imgsz=[224, 224], device=, view_img=False, save_txt=False, nosave=False, augment=False, visualize=False, update=False, project=runs/predict-cls, name=exp, exist_ok=False, half=False, dnn=False, vid_stride=1\n", + "YOLOv5 🚀 v7.0-3-g61ebf5e Python-3.7.15 torch-1.12.1+cu113 CUDA:0 (Tesla T4, 15110MiB)\n", + "\n", + "Downloading https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s-cls.pt to yolov5s-cls.pt...\n", + "100% 10.5M/10.5M [00:00<00:00, 12.3MB/s]\n", + "\n", + "Fusing layers... \n", + "Model summary: 117 layers, 5447688 parameters, 0 gradients, 11.4 GFLOPs\n", + "image 1/2 /content/yolov5/data/images/bus.jpg: 224x224 minibus 0.39, police van 0.24, amphibious vehicle 0.05, recreational vehicle 0.04, trolleybus 0.03, 3.9ms\n", + "image 2/2 /content/yolov5/data/images/zidane.jpg: 224x224 suit 0.38, bow tie 0.19, bridegroom 0.18, rugby ball 0.04, stage 0.02, 4.6ms\n", + "Speed: 0.3ms pre-process, 4.3ms inference, 1.5ms NMS per image at shape (1, 3, 224, 224)\n", + "Results saved to \u001b[1mruns/predict-cls/exp\u001b[0m\n" + ] + } + ], + "source": [ + "!python classify/predict.py --weights yolov5s-cls.pt --img 224 --source data/images\n", + "# display.Image(filename='runs/predict-cls/exp/zidane.jpg', width=600)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hkAzDWJ7cWTr" + }, + "source": [ + "        \n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0eq1SMWl6Sfn" + }, + "source": [ + "# 2. Validate\n", + "Validate a model's accuracy on the [Imagenet](https://image-net.org/) dataset's `val` or `test` splits. Models are downloaded automatically from the [latest YOLOv5 release](https://github.com/ultralytics/yolov5/releases). To show results by class use the `--verbose` flag." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "WQPtK1QYVaD_", + "outputId": "20fc0630-141e-4a90-ea06-342cbd7ce496" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "--2022-11-22 19:53:40-- https://image-net.org/data/ILSVRC/2012/ILSVRC2012_img_val.tar\n", + "Resolving image-net.org (image-net.org)... 171.64.68.16\n", + "Connecting to image-net.org (image-net.org)|171.64.68.16|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 6744924160 (6.3G) [application/x-tar]\n", + "Saving to: ‘ILSVRC2012_img_val.tar’\n", + "\n", + "ILSVRC2012_img_val. 100%[===================>] 6.28G 16.1MB/s in 10m 52s \n", + "\n", + "2022-11-22 20:04:32 (9.87 MB/s) - ‘ILSVRC2012_img_val.tar’ saved [6744924160/6744924160]\n", + "\n" + ] + } + ], + "source": [ + "# Download Imagenet val (6.3G, 50000 images)\n", + "!bash data/scripts/get_imagenet.sh --val" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "X58w8JLpMnjH", + "outputId": "41843132-98e2-4c25-d474-4cd7b246fb8e" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[34m\u001b[1mclassify/val: \u001b[0mdata=../datasets/imagenet, weights=['yolov5s-cls.pt'], batch_size=128, imgsz=224, device=, workers=8, verbose=True, project=runs/val-cls, name=exp, exist_ok=False, half=True, dnn=False\n", + "YOLOv5 🚀 v7.0-3-g61ebf5e Python-3.7.15 torch-1.12.1+cu113 CUDA:0 (Tesla T4, 15110MiB)\n", + "\n", + "Fusing layers... \n", + "Model summary: 117 layers, 5447688 parameters, 0 gradients, 11.4 GFLOPs\n", + "validating: 100% 391/391 [04:57<00:00, 1.31it/s]\n", + " Class Images top1_acc top5_acc\n", + " all 50000 0.715 0.902\n", + " tench 50 0.94 0.98\n", + " goldfish 50 0.88 0.92\n", + " great white shark 50 0.78 0.96\n", + " tiger shark 50 0.68 0.96\n", + " hammerhead shark 50 0.82 0.92\n", + " electric ray 50 0.76 0.9\n", + " stingray 50 0.7 0.9\n", + " cock 50 0.78 0.92\n", + " hen 50 0.84 0.96\n", + " ostrich 50 0.98 1\n", + " brambling 50 0.9 0.96\n", + " goldfinch 50 0.92 0.98\n", + " house finch 50 0.88 0.96\n", + " junco 50 0.94 0.98\n", + " indigo bunting 50 0.86 0.88\n", + " American robin 50 0.9 0.96\n", + " bulbul 50 0.84 0.96\n", + " jay 50 0.9 0.96\n", + " magpie 50 0.84 0.96\n", + " chickadee 50 0.9 1\n", + " American dipper 50 0.82 0.92\n", + " kite 50 0.76 0.94\n", + " bald eagle 50 0.92 1\n", + " vulture 50 0.96 1\n", + " great grey owl 50 0.94 0.98\n", + " fire salamander 50 0.96 0.98\n", + " smooth newt 50 0.58 0.94\n", + " newt 50 0.74 0.9\n", + " spotted salamander 50 0.86 0.94\n", + " axolotl 50 0.86 0.96\n", + " American bullfrog 50 0.78 0.92\n", + " tree frog 50 0.84 0.96\n", + " tailed frog 50 0.48 0.8\n", + " loggerhead sea turtle 50 0.68 0.94\n", + " leatherback sea turtle 50 0.5 0.8\n", + " mud turtle 50 0.64 0.84\n", + " terrapin 50 0.52 0.98\n", + " box turtle 50 0.84 0.98\n", + " banded gecko 50 0.7 0.88\n", + " green iguana 50 0.76 0.94\n", + " Carolina anole 50 0.58 0.96\n", + "desert grassland whiptail lizard 50 0.82 0.94\n", + " agama 50 0.74 0.92\n", + " frilled-necked lizard 50 0.84 0.86\n", + " alligator lizard 50 0.58 0.78\n", + " Gila monster 50 0.72 0.8\n", + " European green lizard 50 0.42 0.9\n", + " chameleon 50 0.76 0.84\n", + " Komodo dragon 50 0.86 0.96\n", + " Nile crocodile 50 0.7 0.84\n", + " American alligator 50 0.76 0.96\n", + " triceratops 50 0.9 0.94\n", + " worm snake 50 0.76 0.88\n", + " ring-necked snake 50 0.8 0.92\n", + " eastern hog-nosed snake 50 0.58 0.88\n", + " smooth green snake 50 0.6 0.94\n", + " kingsnake 50 0.82 0.9\n", + " garter snake 50 0.88 0.94\n", + " water snake 50 0.7 0.94\n", + " vine snake 50 0.66 0.76\n", + " night snake 50 0.34 0.82\n", + " boa constrictor 50 0.8 0.96\n", + " African rock python 50 0.48 0.76\n", + " Indian cobra 50 0.82 0.94\n", + " green mamba 50 0.54 0.86\n", + " sea snake 50 0.62 0.9\n", + " Saharan horned viper 50 0.56 0.86\n", + "eastern diamondback rattlesnake 50 0.6 0.86\n", + " sidewinder 50 0.28 0.86\n", + " trilobite 50 0.98 0.98\n", + " harvestman 50 0.86 0.94\n", + " scorpion 50 0.86 0.94\n", + " yellow garden spider 50 0.92 0.96\n", + " barn spider 50 0.38 0.98\n", + " European garden spider 50 0.62 0.98\n", + " southern black widow 50 0.88 0.94\n", + " tarantula 50 0.94 1\n", + " wolf spider 50 0.82 0.92\n", + " tick 50 0.74 0.84\n", + " centipede 50 0.68 0.82\n", + " black grouse 50 0.88 0.98\n", + " ptarmigan 50 0.78 0.94\n", + " ruffed grouse 50 0.88 1\n", + " prairie grouse 50 0.92 1\n", + " peacock 50 0.88 0.9\n", + " quail 50 0.9 0.94\n", + " partridge 50 0.74 0.96\n", + " grey parrot 50 0.9 0.96\n", + " macaw 50 0.88 0.98\n", + "sulphur-crested cockatoo 50 0.86 0.92\n", + " lorikeet 50 0.96 1\n", + " coucal 50 0.82 0.88\n", + " bee eater 50 0.96 0.98\n", + " hornbill 50 0.9 0.96\n", + " hummingbird 50 0.88 0.96\n", + " jacamar 50 0.92 0.94\n", + " toucan 50 0.84 0.94\n", + " duck 50 0.76 0.94\n", + " red-breasted merganser 50 0.86 0.96\n", + " goose 50 0.74 0.96\n", + " black swan 50 0.94 0.98\n", + " tusker 50 0.54 0.92\n", + " echidna 50 0.98 1\n", + " platypus 50 0.72 0.84\n", + " wallaby 50 0.78 0.88\n", + " koala 50 0.84 0.92\n", + " wombat 50 0.78 0.84\n", + " jellyfish 50 0.88 0.96\n", + " sea anemone 50 0.72 0.9\n", + " brain coral 50 0.88 0.96\n", + " flatworm 50 0.8 0.98\n", + " nematode 50 0.86 0.9\n", + " conch 50 0.74 0.88\n", + " snail 50 0.78 0.88\n", + " slug 50 0.74 0.82\n", + " sea slug 50 0.88 0.98\n", + " chiton 50 0.88 0.98\n", + " chambered nautilus 50 0.88 0.92\n", + " Dungeness crab 50 0.78 0.94\n", + " rock crab 50 0.68 0.86\n", + " fiddler crab 50 0.64 0.86\n", + " red king crab 50 0.76 0.96\n", + " American lobster 50 0.78 0.96\n", + " spiny lobster 50 0.74 0.88\n", + " crayfish 50 0.56 0.86\n", + " hermit crab 50 0.78 0.96\n", + " isopod 50 0.66 0.78\n", + " white stork 50 0.88 0.96\n", + " black stork 50 0.84 0.98\n", + " spoonbill 50 0.96 1\n", + " flamingo 50 0.94 1\n", + " little blue heron 50 0.92 0.98\n", + " great egret 50 0.9 0.96\n", + " bittern 50 0.86 0.94\n", + " crane (bird) 50 0.62 0.9\n", + " limpkin 50 0.98 1\n", + " common gallinule 50 0.92 0.96\n", + " American coot 50 0.9 0.98\n", + " bustard 50 0.92 0.96\n", + " ruddy turnstone 50 0.94 1\n", + " dunlin 50 0.86 0.94\n", + " common redshank 50 0.9 0.96\n", + " dowitcher 50 0.84 0.96\n", + " oystercatcher 50 0.86 0.94\n", + " pelican 50 0.92 0.96\n", + " king penguin 50 0.88 0.96\n", + " albatross 50 0.9 1\n", + " grey whale 50 0.84 0.92\n", + " killer whale 50 0.92 1\n", + " dugong 50 0.84 0.96\n", + " sea lion 50 0.82 0.92\n", + " Chihuahua 50 0.66 0.84\n", + " Japanese Chin 50 0.72 0.98\n", + " Maltese 50 0.76 0.94\n", + " Pekingese 50 0.84 0.94\n", + " Shih Tzu 50 0.74 0.96\n", + " King Charles Spaniel 50 0.88 0.98\n", + " Papillon 50 0.86 0.94\n", + " toy terrier 50 0.48 0.94\n", + " Rhodesian Ridgeback 50 0.76 0.98\n", + " Afghan Hound 50 0.84 1\n", + " Basset Hound 50 0.8 0.92\n", + " Beagle 50 0.82 0.96\n", + " Bloodhound 50 0.48 0.72\n", + " Bluetick Coonhound 50 0.86 0.94\n", + " Black and Tan Coonhound 50 0.54 0.8\n", + "Treeing Walker Coonhound 50 0.66 0.98\n", + " English foxhound 50 0.32 0.84\n", + " Redbone Coonhound 50 0.62 0.94\n", + " borzoi 50 0.92 1\n", + " Irish Wolfhound 50 0.48 0.88\n", + " Italian Greyhound 50 0.76 0.98\n", + " Whippet 50 0.74 0.92\n", + " Ibizan Hound 50 0.6 0.86\n", + " Norwegian Elkhound 50 0.88 0.98\n", + " Otterhound 50 0.62 0.9\n", + " Saluki 50 0.72 0.92\n", + " Scottish Deerhound 50 0.86 0.98\n", + " Weimaraner 50 0.88 0.94\n", + "Staffordshire Bull Terrier 50 0.66 0.98\n", + "American Staffordshire Terrier 50 0.64 0.92\n", + " Bedlington Terrier 50 0.9 0.92\n", + " Border Terrier 50 0.86 0.92\n", + " Kerry Blue Terrier 50 0.78 0.98\n", + " Irish Terrier 50 0.7 0.96\n", + " Norfolk Terrier 50 0.68 0.9\n", + " Norwich Terrier 50 0.72 1\n", + " Yorkshire Terrier 50 0.66 0.9\n", + " Wire Fox Terrier 50 0.64 0.98\n", + " Lakeland Terrier 50 0.74 0.92\n", + " Sealyham Terrier 50 0.76 0.9\n", + " Airedale Terrier 50 0.82 0.92\n", + " Cairn Terrier 50 0.76 0.9\n", + " Australian Terrier 50 0.48 0.84\n", + " Dandie Dinmont Terrier 50 0.82 0.92\n", + " Boston Terrier 50 0.92 1\n", + " Miniature Schnauzer 50 0.68 0.9\n", + " Giant Schnauzer 50 0.72 0.98\n", + " Standard Schnauzer 50 0.74 1\n", + " Scottish Terrier 50 0.76 0.96\n", + " Tibetan Terrier 50 0.48 1\n", + "Australian Silky Terrier 50 0.66 0.96\n", + "Soft-coated Wheaten Terrier 50 0.74 0.96\n", + "West Highland White Terrier 50 0.88 0.96\n", + " Lhasa Apso 50 0.68 0.96\n", + " Flat-Coated Retriever 50 0.72 0.94\n", + " Curly-coated Retriever 50 0.82 0.94\n", + " Golden Retriever 50 0.86 0.94\n", + " Labrador Retriever 50 0.82 0.94\n", + "Chesapeake Bay Retriever 50 0.76 0.96\n", + "German Shorthaired Pointer 50 0.8 0.96\n", + " Vizsla 50 0.68 0.96\n", + " English Setter 50 0.7 1\n", + " Irish Setter 50 0.8 0.9\n", + " Gordon Setter 50 0.84 0.92\n", + " Brittany 50 0.84 0.96\n", + " Clumber Spaniel 50 0.92 0.96\n", + "English Springer Spaniel 50 0.88 1\n", + " Welsh Springer Spaniel 50 0.92 1\n", + " Cocker Spaniels 50 0.7 0.94\n", + " Sussex Spaniel 50 0.72 0.92\n", + " Irish Water Spaniel 50 0.88 0.98\n", + " Kuvasz 50 0.66 0.9\n", + " Schipperke 50 0.9 0.98\n", + " Groenendael 50 0.8 0.94\n", + " Malinois 50 0.86 0.98\n", + " Briard 50 0.52 0.8\n", + " Australian Kelpie 50 0.6 0.88\n", + " Komondor 50 0.88 0.94\n", + " Old English Sheepdog 50 0.94 0.98\n", + " Shetland Sheepdog 50 0.74 0.9\n", + " collie 50 0.6 0.96\n", + " Border Collie 50 0.74 0.96\n", + " Bouvier des Flandres 50 0.78 0.94\n", + " Rottweiler 50 0.88 0.96\n", + " German Shepherd Dog 50 0.8 0.98\n", + " Dobermann 50 0.68 0.96\n", + " Miniature Pinscher 50 0.76 0.88\n", + "Greater Swiss Mountain Dog 50 0.68 0.94\n", + " Bernese Mountain Dog 50 0.96 1\n", + " Appenzeller Sennenhund 50 0.22 1\n", + " Entlebucher Sennenhund 50 0.64 0.98\n", + " Boxer 50 0.7 0.92\n", + " Bullmastiff 50 0.78 0.98\n", + " Tibetan Mastiff 50 0.88 0.96\n", + " French Bulldog 50 0.84 0.94\n", + " Great Dane 50 0.54 0.9\n", + " St. Bernard 50 0.92 1\n", + " husky 50 0.46 0.98\n", + " Alaskan Malamute 50 0.76 0.96\n", + " Siberian Husky 50 0.46 0.98\n", + " Dalmatian 50 0.94 0.98\n", + " Affenpinscher 50 0.78 0.9\n", + " Basenji 50 0.92 0.94\n", + " pug 50 0.94 0.98\n", + " Leonberger 50 1 1\n", + " Newfoundland 50 0.78 0.96\n", + " Pyrenean Mountain Dog 50 0.78 0.96\n", + " Samoyed 50 0.96 1\n", + " Pomeranian 50 0.98 1\n", + " Chow Chow 50 0.9 0.96\n", + " Keeshond 50 0.88 0.94\n", + " Griffon Bruxellois 50 0.84 0.98\n", + " Pembroke Welsh Corgi 50 0.82 0.94\n", + " Cardigan Welsh Corgi 50 0.66 0.98\n", + " Toy Poodle 50 0.52 0.88\n", + " Miniature Poodle 50 0.52 0.92\n", + " Standard Poodle 50 0.8 1\n", + " Mexican hairless dog 50 0.88 0.98\n", + " grey wolf 50 0.82 0.92\n", + " Alaskan tundra wolf 50 0.78 0.98\n", + " red wolf 50 0.48 0.9\n", + " coyote 50 0.64 0.86\n", + " dingo 50 0.76 0.88\n", + " dhole 50 0.9 0.98\n", + " African wild dog 50 0.98 1\n", + " hyena 50 0.88 0.96\n", + " red fox 50 0.54 0.92\n", + " kit fox 50 0.72 0.98\n", + " Arctic fox 50 0.94 1\n", + " grey fox 50 0.7 0.94\n", + " tabby cat 50 0.54 0.92\n", + " tiger cat 50 0.22 0.94\n", + " Persian cat 50 0.9 0.98\n", + " Siamese cat 50 0.96 1\n", + " Egyptian Mau 50 0.54 0.8\n", + " cougar 50 0.9 1\n", + " lynx 50 0.72 0.88\n", + " leopard 50 0.78 0.98\n", + " snow leopard 50 0.9 0.98\n", + " jaguar 50 0.7 0.94\n", + " lion 50 0.9 0.98\n", + " tiger 50 0.92 0.98\n", + " cheetah 50 0.94 0.98\n", + " brown bear 50 0.94 0.98\n", + " American black bear 50 0.8 1\n", + " polar bear 50 0.84 0.96\n", + " sloth bear 50 0.72 0.92\n", + " mongoose 50 0.7 0.92\n", + " meerkat 50 0.82 0.92\n", + " tiger beetle 50 0.92 0.94\n", + " ladybug 50 0.86 0.94\n", + " ground beetle 50 0.64 0.94\n", + " longhorn beetle 50 0.62 0.88\n", + " leaf beetle 50 0.64 0.98\n", + " dung beetle 50 0.86 0.98\n", + " rhinoceros beetle 50 0.86 0.94\n", + " weevil 50 0.9 1\n", + " fly 50 0.78 0.94\n", + " bee 50 0.68 0.94\n", + " ant 50 0.68 0.78\n", + " grasshopper 50 0.5 0.92\n", + " cricket 50 0.64 0.92\n", + " stick insect 50 0.64 0.92\n", + " cockroach 50 0.72 0.8\n", + " mantis 50 0.64 0.86\n", + " cicada 50 0.9 0.96\n", + " leafhopper 50 0.88 0.94\n", + " lacewing 50 0.78 0.92\n", + " dragonfly 50 0.82 0.98\n", + " damselfly 50 0.82 1\n", + " red admiral 50 0.94 0.96\n", + " ringlet 50 0.86 0.98\n", + " monarch butterfly 50 0.9 0.92\n", + " small white 50 0.9 1\n", + " sulphur butterfly 50 0.92 1\n", + "gossamer-winged butterfly 50 0.88 1\n", + " starfish 50 0.88 0.92\n", + " sea urchin 50 0.84 0.94\n", + " sea cucumber 50 0.66 0.84\n", + " cottontail rabbit 50 0.72 0.94\n", + " hare 50 0.84 0.96\n", + " Angora rabbit 50 0.94 0.98\n", + " hamster 50 0.96 1\n", + " porcupine 50 0.88 0.98\n", + " fox squirrel 50 0.76 0.94\n", + " marmot 50 0.92 0.96\n", + " beaver 50 0.78 0.94\n", + " guinea pig 50 0.78 0.94\n", + " common sorrel 50 0.96 0.98\n", + " zebra 50 0.94 0.96\n", + " pig 50 0.5 0.76\n", + " wild boar 50 0.84 0.96\n", + " warthog 50 0.84 0.96\n", + " hippopotamus 50 0.88 0.96\n", + " ox 50 0.48 0.94\n", + " water buffalo 50 0.78 0.94\n", + " bison 50 0.88 0.96\n", + " ram 50 0.58 0.92\n", + " bighorn sheep 50 0.66 1\n", + " Alpine ibex 50 0.92 0.98\n", + " hartebeest 50 0.94 1\n", + " impala 50 0.82 0.96\n", + " gazelle 50 0.7 0.96\n", + " dromedary 50 0.9 1\n", + " llama 50 0.82 0.94\n", + " weasel 50 0.44 0.92\n", + " mink 50 0.78 0.96\n", + " European polecat 50 0.46 0.9\n", + " black-footed ferret 50 0.68 0.96\n", + " otter 50 0.66 0.88\n", + " skunk 50 0.96 0.96\n", + " badger 50 0.86 0.92\n", + " armadillo 50 0.88 0.9\n", + " three-toed sloth 50 0.96 1\n", + " orangutan 50 0.78 0.92\n", + " gorilla 50 0.82 0.94\n", + " chimpanzee 50 0.84 0.94\n", + " gibbon 50 0.76 0.86\n", + " siamang 50 0.68 0.94\n", + " guenon 50 0.8 0.94\n", + " patas monkey 50 0.62 0.82\n", + " baboon 50 0.9 0.98\n", + " macaque 50 0.8 0.86\n", + " langur 50 0.6 0.82\n", + " black-and-white colobus 50 0.86 0.9\n", + " proboscis monkey 50 1 1\n", + " marmoset 50 0.74 0.98\n", + " white-headed capuchin 50 0.72 0.9\n", + " howler monkey 50 0.86 0.94\n", + " titi 50 0.5 0.9\n", + "Geoffroy's spider monkey 50 0.42 0.8\n", + " common squirrel monkey 50 0.76 0.92\n", + " ring-tailed lemur 50 0.72 0.94\n", + " indri 50 0.9 0.96\n", + " Asian elephant 50 0.58 0.92\n", + " African bush elephant 50 0.7 0.98\n", + " red panda 50 0.94 0.94\n", + " giant panda 50 0.94 0.98\n", + " snoek 50 0.74 0.9\n", + " eel 50 0.6 0.84\n", + " coho salmon 50 0.84 0.96\n", + " rock beauty 50 0.88 0.98\n", + " clownfish 50 0.78 0.98\n", + " sturgeon 50 0.68 0.94\n", + " garfish 50 0.62 0.8\n", + " lionfish 50 0.96 0.96\n", + " pufferfish 50 0.88 0.96\n", + " abacus 50 0.74 0.88\n", + " abaya 50 0.84 0.92\n", + " academic gown 50 0.42 0.86\n", + " accordion 50 0.8 0.9\n", + " acoustic guitar 50 0.5 0.76\n", + " aircraft carrier 50 0.8 0.96\n", + " airliner 50 0.92 1\n", + " airship 50 0.76 0.82\n", + " altar 50 0.64 0.98\n", + " ambulance 50 0.88 0.98\n", + " amphibious vehicle 50 0.64 0.94\n", + " analog clock 50 0.52 0.92\n", + " apiary 50 0.82 0.96\n", + " apron 50 0.7 0.84\n", + " waste container 50 0.4 0.8\n", + " assault rifle 50 0.42 0.84\n", + " backpack 50 0.34 0.64\n", + " bakery 50 0.4 0.68\n", + " balance beam 50 0.8 0.98\n", + " balloon 50 0.86 0.96\n", + " ballpoint pen 50 0.52 0.96\n", + " Band-Aid 50 0.7 0.9\n", + " banjo 50 0.84 1\n", + " baluster 50 0.68 0.94\n", + " barbell 50 0.56 0.9\n", + " barber chair 50 0.7 0.92\n", + " barbershop 50 0.54 0.86\n", + " barn 50 0.96 0.96\n", + " barometer 50 0.84 0.98\n", + " barrel 50 0.56 0.88\n", + " wheelbarrow 50 0.66 0.88\n", + " baseball 50 0.74 0.98\n", + " basketball 50 0.88 0.98\n", + " bassinet 50 0.66 0.92\n", + " bassoon 50 0.74 0.98\n", + " swimming cap 50 0.62 0.88\n", + " bath towel 50 0.54 0.78\n", + " bathtub 50 0.4 0.88\n", + " station wagon 50 0.66 0.84\n", + " lighthouse 50 0.78 0.94\n", + " beaker 50 0.52 0.68\n", + " military cap 50 0.84 0.96\n", + " beer bottle 50 0.66 0.88\n", + " beer glass 50 0.6 0.84\n", + " bell-cot 50 0.56 0.96\n", + " bib 50 0.58 0.82\n", + " tandem bicycle 50 0.86 0.96\n", + " bikini 50 0.56 0.88\n", + " ring binder 50 0.64 0.84\n", + " binoculars 50 0.54 0.78\n", + " birdhouse 50 0.86 0.94\n", + " boathouse 50 0.74 0.92\n", + " bobsleigh 50 0.92 0.96\n", + " bolo tie 50 0.8 0.94\n", + " poke bonnet 50 0.64 0.86\n", + " bookcase 50 0.66 0.92\n", + " bookstore 50 0.62 0.88\n", + " bottle cap 50 0.58 0.7\n", + " bow 50 0.72 0.86\n", + " bow tie 50 0.7 0.9\n", + " brass 50 0.92 0.96\n", + " bra 50 0.5 0.7\n", + " breakwater 50 0.62 0.86\n", + " breastplate 50 0.4 0.9\n", + " broom 50 0.6 0.86\n", + " bucket 50 0.66 0.8\n", + " buckle 50 0.5 0.68\n", + " bulletproof vest 50 0.5 0.78\n", + " high-speed train 50 0.94 0.96\n", + " butcher shop 50 0.74 0.94\n", + " taxicab 50 0.64 0.86\n", + " cauldron 50 0.44 0.66\n", + " candle 50 0.48 0.74\n", + " cannon 50 0.88 0.94\n", + " canoe 50 0.94 1\n", + " can opener 50 0.66 0.86\n", + " cardigan 50 0.68 0.8\n", + " car mirror 50 0.94 0.96\n", + " carousel 50 0.94 0.98\n", + " tool kit 50 0.56 0.78\n", + " carton 50 0.42 0.7\n", + " car wheel 50 0.38 0.74\n", + "automated teller machine 50 0.76 0.94\n", + " cassette 50 0.52 0.8\n", + " cassette player 50 0.28 0.9\n", + " castle 50 0.78 0.88\n", + " catamaran 50 0.78 1\n", + " CD player 50 0.52 0.82\n", + " cello 50 0.82 1\n", + " mobile phone 50 0.68 0.86\n", + " chain 50 0.38 0.66\n", + " chain-link fence 50 0.7 0.84\n", + " chain mail 50 0.64 0.9\n", + " chainsaw 50 0.84 0.92\n", + " chest 50 0.68 0.92\n", + " chiffonier 50 0.26 0.64\n", + " chime 50 0.62 0.84\n", + " china cabinet 50 0.82 0.96\n", + " Christmas stocking 50 0.92 0.94\n", + " church 50 0.62 0.9\n", + " movie theater 50 0.58 0.88\n", + " cleaver 50 0.32 0.62\n", + " cliff dwelling 50 0.88 1\n", + " cloak 50 0.32 0.64\n", + " clogs 50 0.58 0.88\n", + " cocktail shaker 50 0.62 0.7\n", + " coffee mug 50 0.44 0.72\n", + " coffeemaker 50 0.64 0.92\n", + " coil 50 0.66 0.84\n", + " combination lock 50 0.64 0.84\n", + " computer keyboard 50 0.7 0.82\n", + " confectionery store 50 0.54 0.86\n", + " container ship 50 0.82 0.98\n", + " convertible 50 0.78 0.98\n", + " corkscrew 50 0.82 0.92\n", + " cornet 50 0.46 0.88\n", + " cowboy boot 50 0.64 0.8\n", + " cowboy hat 50 0.64 0.82\n", + " cradle 50 0.38 0.8\n", + " crane (machine) 50 0.78 0.94\n", + " crash helmet 50 0.92 0.96\n", + " crate 50 0.52 0.82\n", + " infant bed 50 0.74 1\n", + " Crock Pot 50 0.78 0.9\n", + " croquet ball 50 0.9 0.96\n", + " crutch 50 0.46 0.7\n", + " cuirass 50 0.54 0.86\n", + " dam 50 0.74 0.92\n", + " desk 50 0.6 0.86\n", + " desktop computer 50 0.54 0.94\n", + " rotary dial telephone 50 0.88 0.94\n", + " diaper 50 0.68 0.84\n", + " digital clock 50 0.54 0.76\n", + " digital watch 50 0.58 0.86\n", + " dining table 50 0.76 0.9\n", + " dishcloth 50 0.94 1\n", + " dishwasher 50 0.44 0.78\n", + " disc brake 50 0.98 1\n", + " dock 50 0.54 0.94\n", + " dog sled 50 0.84 1\n", + " dome 50 0.72 0.92\n", + " doormat 50 0.56 0.82\n", + " drilling rig 50 0.84 0.96\n", + " drum 50 0.38 0.68\n", + " drumstick 50 0.56 0.72\n", + " dumbbell 50 0.62 0.9\n", + " Dutch oven 50 0.7 0.84\n", + " electric fan 50 0.82 0.86\n", + " electric guitar 50 0.62 0.84\n", + " electric locomotive 50 0.92 0.98\n", + " entertainment center 50 0.9 0.98\n", + " envelope 50 0.44 0.86\n", + " espresso machine 50 0.72 0.94\n", + " face powder 50 0.7 0.92\n", + " feather boa 50 0.7 0.84\n", + " filing cabinet 50 0.88 0.98\n", + " fireboat 50 0.94 0.98\n", + " fire engine 50 0.84 0.9\n", + " fire screen sheet 50 0.62 0.76\n", + " flagpole 50 0.74 0.88\n", + " flute 50 0.36 0.72\n", + " folding chair 50 0.62 0.84\n", + " football helmet 50 0.86 0.94\n", + " forklift 50 0.8 0.92\n", + " fountain 50 0.84 0.94\n", + " fountain pen 50 0.76 0.92\n", + " four-poster bed 50 0.78 0.94\n", + " freight car 50 0.96 1\n", + " French horn 50 0.76 0.92\n", + " frying pan 50 0.36 0.78\n", + " fur coat 50 0.84 0.96\n", + " garbage truck 50 0.9 0.98\n", + " gas mask 50 0.84 0.92\n", + " gas pump 50 0.9 0.98\n", + " goblet 50 0.68 0.82\n", + " go-kart 50 0.9 1\n", + " golf ball 50 0.84 0.9\n", + " golf cart 50 0.78 0.86\n", + " gondola 50 0.98 0.98\n", + " gong 50 0.74 0.92\n", + " gown 50 0.62 0.96\n", + " grand piano 50 0.7 0.96\n", + " greenhouse 50 0.8 0.98\n", + " grille 50 0.72 0.9\n", + " grocery store 50 0.66 0.94\n", + " guillotine 50 0.86 0.92\n", + " barrette 50 0.52 0.66\n", + " hair spray 50 0.5 0.74\n", + " half-track 50 0.78 0.9\n", + " hammer 50 0.56 0.76\n", + " hamper 50 0.64 0.84\n", + " hair dryer 50 0.56 0.74\n", + " hand-held computer 50 0.42 0.86\n", + " handkerchief 50 0.78 0.94\n", + " hard disk drive 50 0.76 0.84\n", + " harmonica 50 0.7 0.88\n", + " harp 50 0.88 0.96\n", + " harvester 50 0.78 1\n", + " hatchet 50 0.54 0.74\n", + " holster 50 0.66 0.84\n", + " home theater 50 0.64 0.94\n", + " honeycomb 50 0.56 0.88\n", + " hook 50 0.3 0.6\n", + " hoop skirt 50 0.64 0.86\n", + " horizontal bar 50 0.68 0.98\n", + " horse-drawn vehicle 50 0.88 0.94\n", + " hourglass 50 0.88 0.96\n", + " iPod 50 0.76 0.94\n", + " clothes iron 50 0.82 0.88\n", + " jack-o'-lantern 50 0.98 0.98\n", + " jeans 50 0.68 0.84\n", + " jeep 50 0.72 0.9\n", + " T-shirt 50 0.72 0.96\n", + " jigsaw puzzle 50 0.84 0.94\n", + " pulled rickshaw 50 0.86 0.94\n", + " joystick 50 0.8 0.9\n", + " kimono 50 0.84 0.96\n", + " knee pad 50 0.62 0.88\n", + " knot 50 0.66 0.8\n", + " lab coat 50 0.8 0.96\n", + " ladle 50 0.36 0.64\n", + " lampshade 50 0.48 0.84\n", + " laptop computer 50 0.26 0.88\n", + " lawn mower 50 0.78 0.96\n", + " lens cap 50 0.46 0.72\n", + " paper knife 50 0.26 0.5\n", + " library 50 0.54 0.9\n", + " lifeboat 50 0.92 0.98\n", + " lighter 50 0.56 0.78\n", + " limousine 50 0.76 0.92\n", + " ocean liner 50 0.88 0.94\n", + " lipstick 50 0.74 0.9\n", + " slip-on shoe 50 0.74 0.92\n", + " lotion 50 0.5 0.86\n", + " speaker 50 0.52 0.68\n", + " loupe 50 0.32 0.52\n", + " sawmill 50 0.72 0.9\n", + " magnetic compass 50 0.52 0.82\n", + " mail bag 50 0.68 0.92\n", + " mailbox 50 0.82 0.92\n", + " tights 50 0.22 0.94\n", + " tank suit 50 0.24 0.9\n", + " manhole cover 50 0.96 0.98\n", + " maraca 50 0.74 0.9\n", + " marimba 50 0.84 0.94\n", + " mask 50 0.44 0.82\n", + " match 50 0.66 0.9\n", + " maypole 50 0.96 1\n", + " maze 50 0.8 0.96\n", + " measuring cup 50 0.54 0.76\n", + " medicine chest 50 0.6 0.84\n", + " megalith 50 0.8 0.92\n", + " microphone 50 0.52 0.7\n", + " microwave oven 50 0.48 0.72\n", + " military uniform 50 0.62 0.84\n", + " milk can 50 0.68 0.82\n", + " minibus 50 0.7 1\n", + " miniskirt 50 0.46 0.76\n", + " minivan 50 0.38 0.8\n", + " missile 50 0.4 0.84\n", + " mitten 50 0.76 0.88\n", + " mixing bowl 50 0.8 0.92\n", + " mobile home 50 0.54 0.78\n", + " Model T 50 0.92 0.96\n", + " modem 50 0.58 0.86\n", + " monastery 50 0.44 0.9\n", + " monitor 50 0.4 0.86\n", + " moped 50 0.56 0.94\n", + " mortar 50 0.68 0.94\n", + " square academic cap 50 0.5 0.84\n", + " mosque 50 0.9 1\n", + " mosquito net 50 0.9 0.98\n", + " scooter 50 0.9 0.98\n", + " mountain bike 50 0.78 0.96\n", + " tent 50 0.88 0.96\n", + " computer mouse 50 0.42 0.82\n", + " mousetrap 50 0.76 0.88\n", + " moving van 50 0.4 0.72\n", + " muzzle 50 0.5 0.72\n", + " nail 50 0.68 0.74\n", + " neck brace 50 0.56 0.68\n", + " necklace 50 0.86 1\n", + " nipple 50 0.7 0.88\n", + " notebook computer 50 0.34 0.84\n", + " obelisk 50 0.8 0.92\n", + " oboe 50 0.6 0.84\n", + " ocarina 50 0.8 0.86\n", + " odometer 50 0.96 1\n", + " oil filter 50 0.58 0.82\n", + " organ 50 0.82 0.9\n", + " oscilloscope 50 0.9 0.96\n", + " overskirt 50 0.2 0.7\n", + " bullock cart 50 0.7 0.94\n", + " oxygen mask 50 0.46 0.84\n", + " packet 50 0.5 0.78\n", + " paddle 50 0.56 0.94\n", + " paddle wheel 50 0.86 0.96\n", + " padlock 50 0.74 0.78\n", + " paintbrush 50 0.62 0.8\n", + " pajamas 50 0.56 0.92\n", + " palace 50 0.64 0.96\n", + " pan flute 50 0.84 0.86\n", + " paper towel 50 0.66 0.84\n", + " parachute 50 0.92 0.94\n", + " parallel bars 50 0.62 0.96\n", + " park bench 50 0.74 0.9\n", + " parking meter 50 0.84 0.92\n", + " passenger car 50 0.5 0.82\n", + " patio 50 0.58 0.84\n", + " payphone 50 0.74 0.92\n", + " pedestal 50 0.52 0.9\n", + " pencil case 50 0.64 0.92\n", + " pencil sharpener 50 0.52 0.78\n", + " perfume 50 0.7 0.9\n", + " Petri dish 50 0.6 0.8\n", + " photocopier 50 0.88 0.98\n", + " plectrum 50 0.7 0.84\n", + " Pickelhaube 50 0.72 0.86\n", + " picket fence 50 0.84 0.94\n", + " pickup truck 50 0.64 0.92\n", + " pier 50 0.52 0.82\n", + " piggy bank 50 0.82 0.94\n", + " pill bottle 50 0.76 0.86\n", + " pillow 50 0.76 0.9\n", + " ping-pong ball 50 0.84 0.88\n", + " pinwheel 50 0.76 0.88\n", + " pirate ship 50 0.76 0.94\n", + " pitcher 50 0.46 0.84\n", + " hand plane 50 0.84 0.94\n", + " planetarium 50 0.88 0.98\n", + " plastic bag 50 0.36 0.62\n", + " plate rack 50 0.52 0.78\n", + " plow 50 0.78 0.88\n", + " plunger 50 0.42 0.7\n", + " Polaroid camera 50 0.84 0.92\n", + " pole 50 0.38 0.74\n", + " police van 50 0.76 0.94\n", + " poncho 50 0.58 0.86\n", + " billiard table 50 0.8 0.88\n", + " soda bottle 50 0.56 0.94\n", + " pot 50 0.78 0.92\n", + " potter's wheel 50 0.9 0.94\n", + " power drill 50 0.42 0.72\n", + " prayer rug 50 0.7 0.86\n", + " printer 50 0.54 0.86\n", + " prison 50 0.7 0.9\n", + " projectile 50 0.28 0.9\n", + " projector 50 0.62 0.84\n", + " hockey puck 50 0.92 0.96\n", + " punching bag 50 0.6 0.68\n", + " purse 50 0.42 0.78\n", + " quill 50 0.68 0.84\n", + " quilt 50 0.64 0.9\n", + " race car 50 0.72 0.92\n", + " racket 50 0.72 0.9\n", + " radiator 50 0.66 0.76\n", + " radio 50 0.64 0.92\n", + " radio telescope 50 0.9 0.96\n", + " rain barrel 50 0.8 0.98\n", + " recreational vehicle 50 0.84 0.94\n", + " reel 50 0.72 0.82\n", + " reflex camera 50 0.72 0.92\n", + " refrigerator 50 0.7 0.9\n", + " remote control 50 0.7 0.88\n", + " restaurant 50 0.5 0.66\n", + " revolver 50 0.82 1\n", + " rifle 50 0.38 0.7\n", + " rocking chair 50 0.62 0.84\n", + " rotisserie 50 0.88 0.92\n", + " eraser 50 0.54 0.76\n", + " rugby ball 50 0.86 0.94\n", + " ruler 50 0.68 0.86\n", + " running shoe 50 0.78 0.94\n", + " safe 50 0.82 0.92\n", + " safety pin 50 0.4 0.62\n", + " salt shaker 50 0.66 0.9\n", + " sandal 50 0.66 0.86\n", + " sarong 50 0.64 0.86\n", + " saxophone 50 0.66 0.88\n", + " scabbard 50 0.76 0.92\n", + " weighing scale 50 0.58 0.78\n", + " school bus 50 0.92 1\n", + " schooner 50 0.84 1\n", + " scoreboard 50 0.9 0.96\n", + " CRT screen 50 0.14 0.7\n", + " screw 50 0.9 0.98\n", + " screwdriver 50 0.3 0.58\n", + " seat belt 50 0.88 0.94\n", + " sewing machine 50 0.76 0.9\n", + " shield 50 0.56 0.82\n", + " shoe store 50 0.78 0.96\n", + " shoji 50 0.8 0.92\n", + " shopping basket 50 0.52 0.88\n", + " shopping cart 50 0.76 0.92\n", + " shovel 50 0.62 0.84\n", + " shower cap 50 0.7 0.84\n", + " shower curtain 50 0.64 0.82\n", + " ski 50 0.74 0.92\n", + " ski mask 50 0.72 0.88\n", + " sleeping bag 50 0.68 0.8\n", + " slide rule 50 0.72 0.88\n", + " sliding door 50 0.44 0.78\n", + " slot machine 50 0.94 0.98\n", + " snorkel 50 0.86 0.98\n", + " snowmobile 50 0.88 1\n", + " snowplow 50 0.84 0.98\n", + " soap dispenser 50 0.56 0.86\n", + " soccer ball 50 0.86 0.96\n", + " sock 50 0.62 0.76\n", + " solar thermal collector 50 0.72 0.96\n", + " sombrero 50 0.6 0.84\n", + " soup bowl 50 0.56 0.94\n", + " space bar 50 0.34 0.88\n", + " space heater 50 0.52 0.74\n", + " space shuttle 50 0.82 0.96\n", + " spatula 50 0.3 0.6\n", + " motorboat 50 0.86 1\n", + " spider web 50 0.7 0.9\n", + " spindle 50 0.86 0.98\n", + " sports car 50 0.6 0.94\n", + " spotlight 50 0.26 0.6\n", + " stage 50 0.68 0.86\n", + " steam locomotive 50 0.94 1\n", + " through arch bridge 50 0.84 0.96\n", + " steel drum 50 0.82 0.9\n", + " stethoscope 50 0.6 0.82\n", + " scarf 50 0.5 0.92\n", + " stone wall 50 0.76 0.9\n", + " stopwatch 50 0.58 0.9\n", + " stove 50 0.46 0.74\n", + " strainer 50 0.64 0.84\n", + " tram 50 0.88 0.96\n", + " stretcher 50 0.6 0.8\n", + " couch 50 0.8 0.96\n", + " stupa 50 0.88 0.88\n", + " submarine 50 0.72 0.92\n", + " suit 50 0.4 0.78\n", + " sundial 50 0.58 0.74\n", + " sunglass 50 0.14 0.58\n", + " sunglasses 50 0.28 0.58\n", + " sunscreen 50 0.32 0.7\n", + " suspension bridge 50 0.6 0.94\n", + " mop 50 0.74 0.92\n", + " sweatshirt 50 0.28 0.66\n", + " swimsuit 50 0.52 0.82\n", + " swing 50 0.76 0.84\n", + " switch 50 0.56 0.76\n", + " syringe 50 0.62 0.82\n", + " table lamp 50 0.6 0.88\n", + " tank 50 0.8 0.96\n", + " tape player 50 0.46 0.76\n", + " teapot 50 0.84 1\n", + " teddy bear 50 0.82 0.94\n", + " television 50 0.6 0.9\n", + " tennis ball 50 0.7 0.94\n", + " thatched roof 50 0.88 0.9\n", + " front curtain 50 0.8 0.92\n", + " thimble 50 0.6 0.8\n", + " threshing machine 50 0.56 0.88\n", + " throne 50 0.72 0.82\n", + " tile roof 50 0.72 0.94\n", + " toaster 50 0.66 0.84\n", + " tobacco shop 50 0.42 0.7\n", + " toilet seat 50 0.62 0.88\n", + " torch 50 0.64 0.84\n", + " totem pole 50 0.92 0.98\n", + " tow truck 50 0.62 0.88\n", + " toy store 50 0.6 0.94\n", + " tractor 50 0.76 0.98\n", + " semi-trailer truck 50 0.78 0.92\n", + " tray 50 0.46 0.64\n", + " trench coat 50 0.54 0.72\n", + " tricycle 50 0.72 0.94\n", + " trimaran 50 0.7 0.98\n", + " tripod 50 0.58 0.86\n", + " triumphal arch 50 0.92 0.98\n", + " trolleybus 50 0.9 1\n", + " trombone 50 0.54 0.88\n", + " tub 50 0.24 0.82\n", + " turnstile 50 0.84 0.94\n", + " typewriter keyboard 50 0.68 0.98\n", + " umbrella 50 0.52 0.7\n", + " unicycle 50 0.74 0.96\n", + " upright piano 50 0.76 0.9\n", + " vacuum cleaner 50 0.62 0.9\n", + " vase 50 0.5 0.78\n", + " vault 50 0.76 0.92\n", + " velvet 50 0.2 0.42\n", + " vending machine 50 0.9 1\n", + " vestment 50 0.54 0.82\n", + " viaduct 50 0.78 0.86\n", + " violin 50 0.68 0.78\n", + " volleyball 50 0.86 1\n", + " waffle iron 50 0.72 0.88\n", + " wall clock 50 0.54 0.88\n", + " wallet 50 0.52 0.9\n", + " wardrobe 50 0.68 0.88\n", + " military aircraft 50 0.9 0.98\n", + " sink 50 0.72 0.96\n", + " washing machine 50 0.78 0.94\n", + " water bottle 50 0.54 0.74\n", + " water jug 50 0.22 0.74\n", + " water tower 50 0.9 0.96\n", + " whiskey jug 50 0.64 0.74\n", + " whistle 50 0.72 0.84\n", + " wig 50 0.84 0.9\n", + " window screen 50 0.68 0.8\n", + " window shade 50 0.52 0.76\n", + " Windsor tie 50 0.22 0.66\n", + " wine bottle 50 0.42 0.82\n", + " wing 50 0.54 0.96\n", + " wok 50 0.46 0.82\n", + " wooden spoon 50 0.58 0.8\n", + " wool 50 0.32 0.82\n", + " split-rail fence 50 0.74 0.9\n", + " shipwreck 50 0.84 0.96\n", + " yawl 50 0.78 0.96\n", + " yurt 50 0.84 1\n", + " website 50 0.98 1\n", + " comic book 50 0.62 0.9\n", + " crossword 50 0.84 0.88\n", + " traffic sign 50 0.78 0.9\n", + " traffic light 50 0.8 0.94\n", + " dust jacket 50 0.72 0.94\n", + " menu 50 0.82 0.96\n", + " plate 50 0.44 0.88\n", + " guacamole 50 0.8 0.92\n", + " consomme 50 0.54 0.88\n", + " hot pot 50 0.86 0.98\n", + " trifle 50 0.92 0.98\n", + " ice cream 50 0.68 0.94\n", + " ice pop 50 0.62 0.84\n", + " baguette 50 0.62 0.88\n", + " bagel 50 0.64 0.92\n", + " pretzel 50 0.72 0.88\n", + " cheeseburger 50 0.9 1\n", + " hot dog 50 0.74 0.94\n", + " mashed potato 50 0.74 0.9\n", + " cabbage 50 0.84 0.96\n", + " broccoli 50 0.9 0.96\n", + " cauliflower 50 0.82 1\n", + " zucchini 50 0.74 0.9\n", + " spaghetti squash 50 0.8 0.96\n", + " acorn squash 50 0.82 0.96\n", + " butternut squash 50 0.7 0.94\n", + " cucumber 50 0.6 0.96\n", + " artichoke 50 0.84 0.94\n", + " bell pepper 50 0.84 0.98\n", + " cardoon 50 0.88 0.94\n", + " mushroom 50 0.38 0.92\n", + " Granny Smith 50 0.9 0.96\n", + " strawberry 50 0.6 0.88\n", + " orange 50 0.7 0.92\n", + " lemon 50 0.78 0.98\n", + " fig 50 0.82 0.96\n", + " pineapple 50 0.86 0.96\n", + " banana 50 0.84 0.96\n", + " jackfruit 50 0.9 0.98\n", + " custard apple 50 0.86 0.96\n", + " pomegranate 50 0.82 0.98\n", + " hay 50 0.8 0.92\n", + " carbonara 50 0.88 0.94\n", + " chocolate syrup 50 0.46 0.84\n", + " dough 50 0.4 0.6\n", + " meatloaf 50 0.58 0.84\n", + " pizza 50 0.84 0.96\n", + " pot pie 50 0.68 0.9\n", + " burrito 50 0.8 0.98\n", + " red wine 50 0.54 0.82\n", + " espresso 50 0.64 0.88\n", + " cup 50 0.38 0.7\n", + " eggnog 50 0.38 0.7\n", + " alp 50 0.54 0.88\n", + " bubble 50 0.8 0.96\n", + " cliff 50 0.64 1\n", + " coral reef 50 0.72 0.96\n", + " geyser 50 0.94 1\n", + " lakeshore 50 0.54 0.88\n", + " promontory 50 0.58 0.94\n", + " shoal 50 0.6 0.96\n", + " seashore 50 0.44 0.78\n", + " valley 50 0.72 0.94\n", + " volcano 50 0.78 0.96\n", + " baseball player 50 0.72 0.94\n", + " bridegroom 50 0.72 0.88\n", + " scuba diver 50 0.8 1\n", + " rapeseed 50 0.94 0.98\n", + " daisy 50 0.96 0.98\n", + " yellow lady's slipper 50 1 1\n", + " corn 50 0.4 0.88\n", + " acorn 50 0.92 0.98\n", + " rose hip 50 0.92 0.98\n", + " horse chestnut seed 50 0.94 0.98\n", + " coral fungus 50 0.96 0.96\n", + " agaric 50 0.82 0.94\n", + " gyromitra 50 0.98 1\n", + " stinkhorn mushroom 50 0.8 0.94\n", + " earth star 50 0.98 1\n", + " hen-of-the-woods 50 0.8 0.96\n", + " bolete 50 0.74 0.94\n", + " ear 50 0.48 0.94\n", + " toilet paper 50 0.36 0.68\n", + "Speed: 0.1ms pre-process, 0.3ms inference, 0.0ms post-process per image at shape (1, 3, 224, 224)\n", + "Results saved to \u001b[1mruns/val-cls/exp\u001b[0m\n" + ] + } + ], + "source": [ + "# Validate YOLOv5s on Imagenet val\n", + "!python classify/val.py --weights yolov5s-cls.pt --data ../datasets/imagenet --img 224 --half" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZY2VXXXu74w5" + }, + "source": [ + "# 3. Train\n", + "\n", + "

\n", + "Close the active learning loop by sampling images from your inference conditions with the `roboflow` pip package\n", + "

\n", + "\n", + "Train a YOLOv5s Classification model on the [Imagenette](https://image-net.org/) dataset with `--data imagenet`, starting from pretrained `--pretrained yolov5s-cls.pt`.\n", + "\n", + "- **Pretrained [Models](https://github.com/ultralytics/yolov5/tree/master/models)** are downloaded\n", + "automatically from the [latest YOLOv5 release](https://github.com/ultralytics/yolov5/releases)\n", + "- **Training Results** are saved to `runs/train-cls/` with incrementing run directories, i.e. `runs/train-cls/exp2`, `runs/train-cls/exp3` etc.\n", + "

\n", + "\n", + "A **Mosaic Dataloader** is used for training which combines 4 images into 1 mosaic.\n", + "\n", + "## Train on Custom Data with Roboflow 🌟 NEW\n", + "\n", + "[Roboflow](https://roboflow.com/?ref=ultralytics) enables you to easily **organize, label, and prepare** a high quality dataset with your own custom data. Roboflow also makes it easy to establish an active learning pipeline, collaborate with your team on dataset improvement, and integrate directly into your model building workflow with the `roboflow` pip package.\n", + "\n", + "- Custom Training Example: [https://blog.roboflow.com/train-yolov5-classification-custom-data/](https://blog.roboflow.com/train-yolov5-classification-custom-data/?ref=ultralytics)\n", + "- Custom Training Notebook: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1KZiKUAjtARHAfZCXbJRv14-pOnIsBLPV?usp=sharing)\n", + "
\n", + "\n", + "

Label images lightning fast (including with model-assisted labeling)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "i3oKtE4g-aNn" + }, + "outputs": [], + "source": [ + "#@title Select YOLOv5 🚀 logger {run: 'auto'}\n", + "logger = 'TensorBoard' #@param ['TensorBoard', 'Comet', 'ClearML']\n", + "\n", + "if logger == 'TensorBoard':\n", + " %load_ext tensorboard\n", + " %tensorboard --logdir runs/train\n", + "elif logger == 'Comet':\n", + " %pip install -q comet_ml\n", + " import comet_ml; comet_ml.init()\n", + "elif logger == 'ClearML':\n", + " import clearml; clearml.browser_login()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "1NcFxRcFdJ_O", + "outputId": "77c8d487-16db-4073-b3ea-06cabf2e7766" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[34m\u001b[1mclassify/train: \u001b[0mmodel=yolov5s-cls.pt, data=imagenette160, epochs=5, batch_size=64, imgsz=224, nosave=False, cache=ram, device=, workers=8, project=runs/train-cls, name=exp, exist_ok=False, pretrained=True, optimizer=Adam, lr0=0.001, decay=5e-05, label_smoothing=0.1, cutoff=None, dropout=None, verbose=False, seed=0, local_rank=-1\n", + "\u001b[34m\u001b[1mgithub: \u001b[0mup to date with https://github.com/ultralytics/yolov5 ✅\n", + "YOLOv5 🚀 v7.0-3-g61ebf5e Python-3.7.15 torch-1.12.1+cu113 CUDA:0 (Tesla T4, 15110MiB)\n", + "\n", + "\u001b[34m\u001b[1mTensorBoard: \u001b[0mStart with 'tensorboard --logdir runs/train-cls', view at http://localhost:6006/\n", + "\n", + "Dataset not found ⚠️, missing path /content/datasets/imagenette160, attempting download...\n", + "Downloading https://github.com/ultralytics/yolov5/releases/download/v1.0/imagenette160.zip to /content/datasets/imagenette160.zip...\n", + "100% 103M/103M [00:00<00:00, 347MB/s] \n", + "Unzipping /content/datasets/imagenette160.zip...\n", + "Dataset download success ✅ (3.3s), saved to \u001b[1m/content/datasets/imagenette160\u001b[0m\n", + "\n", + "\u001b[34m\u001b[1malbumentations: \u001b[0mRandomResizedCrop(p=1.0, height=224, width=224, scale=(0.08, 1.0), ratio=(0.75, 1.3333333333333333), interpolation=1), HorizontalFlip(p=0.5), ColorJitter(p=0.5, brightness=[0.6, 1.4], contrast=[0.6, 1.4], saturation=[0.6, 1.4], hue=[0, 0]), Normalize(p=1.0, mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225), max_pixel_value=255.0), ToTensorV2(always_apply=True, p=1.0, transpose_mask=False)\n", + "Model summary: 149 layers, 4185290 parameters, 4185290 gradients, 10.5 GFLOPs\n", + "\u001b[34m\u001b[1moptimizer:\u001b[0m Adam(lr=0.001) with parameter groups 32 weight(decay=0.0), 33 weight(decay=5e-05), 33 bias\n", + "Image sizes 224 train, 224 test\n", + "Using 1 dataloader workers\n", + "Logging results to \u001b[1mruns/train-cls/exp\u001b[0m\n", + "Starting yolov5s-cls.pt training on imagenette160 dataset with 10 classes for 5 epochs...\n", + "\n", + " Epoch GPU_mem train_loss val_loss top1_acc top5_acc\n", + " 1/5 1.47G 1.05 0.974 0.828 0.975: 100% 148/148 [00:38<00:00, 3.82it/s]\n", + " 2/5 1.73G 0.895 0.766 0.911 0.994: 100% 148/148 [00:36<00:00, 4.03it/s]\n", + " 3/5 1.73G 0.82 0.704 0.934 0.996: 100% 148/148 [00:35<00:00, 4.20it/s]\n", + " 4/5 1.73G 0.766 0.664 0.951 0.998: 100% 148/148 [00:36<00:00, 4.05it/s]\n", + " 5/5 1.73G 0.724 0.634 0.959 0.997: 100% 148/148 [00:37<00:00, 3.94it/s]\n", + "\n", + "Training complete (0.052 hours)\n", + "Results saved to \u001b[1mruns/train-cls/exp\u001b[0m\n", + "Predict: python classify/predict.py --weights runs/train-cls/exp/weights/best.pt --source im.jpg\n", + "Validate: python classify/val.py --weights runs/train-cls/exp/weights/best.pt --data /content/datasets/imagenette160\n", + "Export: python export.py --weights runs/train-cls/exp/weights/best.pt --include onnx\n", + "PyTorch Hub: model = torch.hub.load('ultralytics/yolov5', 'custom', 'runs/train-cls/exp/weights/best.pt')\n", + "Visualize: https://netron.app\n", + "\n" + ] + } + ], + "source": [ + "# Train YOLOv5s Classification on Imagenette160 for 3 epochs\n", + "!python classify/train.py --model yolov5s-cls.pt --data imagenette160 --epochs 5 --img 224 --cache" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "15glLzbQx5u0" + }, + "source": [ + "# 4. Visualize" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "nWOsI5wJR1o3" + }, + "source": [ + "## Comet Logging and Visualization 🌟 NEW\n", + "\n", + "[Comet](https://www.comet.com/site/lp/yolov5-with-comet/?utm_source=yolov5&utm_medium=partner&utm_campaign=partner_yolov5_2022&utm_content=yolov5_colab) is now fully integrated with YOLOv5. Track and visualize model metrics in real time, save your hyperparameters, datasets, and model checkpoints, and visualize your model predictions with [Comet Custom Panels](https://www.comet.com/docs/v2/guides/comet-dashboard/code-panels/about-panels/?utm_source=yolov5&utm_medium=partner&utm_campaign=partner_yolov5_2022&utm_content=yolov5_colab)! Comet makes sure you never lose track of your work and makes it easy to share results and collaborate across teams of all sizes!\n", + "\n", + "Getting started is easy:\n", + "```shell\n", + "pip install comet_ml # 1. install\n", + "export COMET_API_KEY= # 2. paste API key\n", + "python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt # 3. train\n", + "```\n", + "To learn more about all of the supported Comet features for this integration, check out the [Comet Tutorial](https://github.com/ultralytics/yolov5/tree/master/utils/loggers/comet). If you'd like to learn more about Comet, head over to our [documentation](https://www.comet.com/docs/v2/?utm_source=yolov5&utm_medium=partner&utm_campaign=partner_yolov5_2022&utm_content=yolov5_colab). Get started by trying out the Comet Colab Notebook:\n", + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1RG0WOQyxlDlo5Km8GogJpIEJlg_5lyYO?usp=sharing)\n", + "\n", + "\n", + "\"Comet" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Lay2WsTjNJzP" + }, + "source": [ + "## ClearML Logging and Automation 🌟 NEW\n", + "\n", + "[ClearML](https://cutt.ly/yolov5-notebook-clearml) is completely integrated into YOLOv5 to track your experimentation, manage dataset versions and even remotely execute training runs. To enable ClearML (check cells above):\n", + "\n", + "- `pip install clearml`\n", + "- run `clearml-init` to connect to a ClearML server (**deploy your own [open-source server](https://github.com/allegroai/clearml-server)**, or use our [free hosted server](https://cutt.ly/yolov5-notebook-clearml))\n", + "\n", + "You'll get all the great expected features from an experiment manager: live updates, model upload, experiment comparison etc. but ClearML also tracks uncommitted changes and installed packages for example. Thanks to that ClearML Tasks (which is what we call experiments) are also reproducible on different machines! With only 1 extra line, we can schedule a YOLOv5 training task on a queue to be executed by any number of ClearML Agents (workers).\n", + "\n", + "You can use ClearML Data to version your dataset and then pass it to YOLOv5 simply using its unique ID. This will help you keep track of your data without adding extra hassle. Explore the [ClearML Tutorial](https://github.com/ultralytics/yolov5/tree/master/utils/loggers/clearml) for details!\n", + "\n", + "\n", + "\"ClearML" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-WPvRbS5Swl6" + }, + "source": [ + "## Local Logging\n", + "\n", + "Training results are automatically logged with [Tensorboard](https://www.tensorflow.org/tensorboard) and [CSV](https://github.com/ultralytics/yolov5/pull/4148) loggers to `runs/train`, with a new experiment directory created for each new training as `runs/train/exp2`, `runs/train/exp3`, etc.\n", + "\n", + "This directory contains train and val statistics, mosaics, labels, predictions and augmentated mosaics, as well as metrics and charts including precision-recall (PR) curves and confusion matrices. \n", + "\n", + "\"Local\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Zelyeqbyt3GD" + }, + "source": [ + "# Environments\n", + "\n", + "YOLOv5 may be run in any of the following up-to-date verified environments (with all dependencies including [CUDA](https://developer.nvidia.com/cuda)/[CUDNN](https://developer.nvidia.com/cudnn), [Python](https://www.python.org/) and [PyTorch](https://pytorch.org/) preinstalled):\n", + "\n", + "- **Notebooks** with free GPU: \"Run \"Open \"Open\n", + "- **Google Cloud** Deep Learning VM. See [GCP Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/GCP-Quickstart)\n", + "- **Amazon** Deep Learning AMI. See [AWS Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/AWS-Quickstart)\n", + "- **Docker Image**. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/Docker-Quickstart) \"Docker\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6Qu7Iesl0p54" + }, + "source": [ + "# Status\n", + "\n", + "![YOLOv5 CI](https://github.com/ultralytics/yolov3/actions/workflows/ci-testing.yml/badge.svg)\n", + "\n", + "If this badge is green, all [YOLOv3 GitHub Actions](https://github.com/ultralytics/yolov3/actions) Continuous Integration (CI) tests are currently passing. CI tests verify correct operation of YOLOv5 training ([train.py](https://github.com/ultralytics/yolov5/blob/master/train.py)), testing ([val.py](https://github.com/ultralytics/yolov5/blob/master/val.py)), inference ([detect.py](https://github.com/ultralytics/yolov5/blob/master/detect.py)) and export ([export.py](https://github.com/ultralytics/yolov5/blob/master/export.py)) on macOS, Windows, and Ubuntu every 24 hours and on every commit.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IEijrePND_2I" + }, + "source": [ + "# Appendix\n", + "\n", + "Additional content below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "GMusP4OAxFu6" + }, + "outputs": [], + "source": [ + "# YOLOv5 PyTorch HUB Inference (DetectionModels only)\n", + "import torch\n", + "\n", + "model = torch.hub.load('ultralytics/yolov5', 'yolov5s') # yolov5n - yolov5x6 or custom\n", + "im = 'https://ultralytics.com/images/zidane.jpg' # file, Path, PIL.Image, OpenCV, nparray, list\n", + "results = model(im) # inference\n", + "results.print() # or .show(), .save(), .crop(), .pandas(), etc." + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "name": "YOLOv5 Classification Tutorial", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/classify/val.py b/classify/val.py new file mode 100644 index 00000000..45729609 --- /dev/null +++ b/classify/val.py @@ -0,0 +1,170 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Validate a trained YOLOv5 classification model on a classification dataset + +Usage: + $ bash data/scripts/get_imagenet.sh --val # download ImageNet val split (6.3G, 50000 images) + $ python classify/val.py --weights yolov5m-cls.pt --data ../datasets/imagenet --img 224 # validate ImageNet + +Usage - formats: + $ python classify/val.py --weights yolov5s-cls.pt # PyTorch + yolov5s-cls.torchscript # TorchScript + yolov5s-cls.onnx # ONNX Runtime or OpenCV DNN with --dnn + yolov5s-cls_openvino_model # OpenVINO + yolov5s-cls.engine # TensorRT + yolov5s-cls.mlmodel # CoreML (macOS-only) + yolov5s-cls_saved_model # TensorFlow SavedModel + yolov5s-cls.pb # TensorFlow GraphDef + yolov5s-cls.tflite # TensorFlow Lite + yolov5s-cls_edgetpu.tflite # TensorFlow Edge TPU + yolov5s-cls_paddle_model # PaddlePaddle +""" + +import argparse +import os +import sys +from pathlib import Path + +import torch +from tqdm import tqdm + +FILE = Path(__file__).resolve() +ROOT = FILE.parents[1] # root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH +ROOT = Path(os.path.relpath(ROOT, Path.cwd())) # relative + +from models.common import DetectMultiBackend +from utils.dataloaders import create_classification_dataloader +from utils.general import (LOGGER, TQDM_BAR_FORMAT, Profile, check_img_size, check_requirements, colorstr, + increment_path, print_args) +from utils.torch_utils import select_device, smart_inference_mode + + +@smart_inference_mode() +def run( + data=ROOT / '../datasets/mnist', # dataset dir + weights=ROOT / 'yolov5s-cls.pt', # model.pt path(s) + batch_size=128, # batch size + imgsz=224, # inference size (pixels) + device='', # cuda device, i.e. 0 or 0,1,2,3 or cpu + workers=8, # max dataloader workers (per RANK in DDP mode) + verbose=False, # verbose output + project=ROOT / 'runs/val-cls', # save to project/name + name='exp', # save to project/name + exist_ok=False, # existing project/name ok, do not increment + half=False, # use FP16 half-precision inference + dnn=False, # use OpenCV DNN for ONNX inference + model=None, + dataloader=None, + criterion=None, + pbar=None, +): + # Initialize/load model and set device + training = model is not None + if training: # called by train.py + device, pt, jit, engine = next(model.parameters()).device, True, False, False # get model device, PyTorch model + half &= device.type != 'cpu' # half precision only supported on CUDA + model.half() if half else model.float() + else: # called directly + device = select_device(device, batch_size=batch_size) + + # Directories + save_dir = increment_path(Path(project) / name, exist_ok=exist_ok) # increment run + save_dir.mkdir(parents=True, exist_ok=True) # make dir + + # Load model + model = DetectMultiBackend(weights, device=device, dnn=dnn, fp16=half) + stride, pt, jit, engine = model.stride, model.pt, model.jit, model.engine + imgsz = check_img_size(imgsz, s=stride) # check image size + half = model.fp16 # FP16 supported on limited backends with CUDA + if engine: + batch_size = model.batch_size + else: + device = model.device + if not (pt or jit): + batch_size = 1 # export.py models default to batch-size 1 + LOGGER.info(f'Forcing --batch-size 1 square inference (1,3,{imgsz},{imgsz}) for non-PyTorch models') + + # Dataloader + data = Path(data) + test_dir = data / 'test' if (data / 'test').exists() else data / 'val' # data/test or data/val + dataloader = create_classification_dataloader(path=test_dir, + imgsz=imgsz, + batch_size=batch_size, + augment=False, + rank=-1, + workers=workers) + + model.eval() + pred, targets, loss, dt = [], [], 0, (Profile(), Profile(), Profile()) + n = len(dataloader) # number of batches + action = 'validating' if dataloader.dataset.root.stem == 'val' else 'testing' + desc = f"{pbar.desc[:-36]}{action:>36}" if pbar else f"{action}" + bar = tqdm(dataloader, desc, n, not training, bar_format=TQDM_BAR_FORMAT, position=0) + with torch.cuda.amp.autocast(enabled=device.type != 'cpu'): + for images, labels in bar: + with dt[0]: + images, labels = images.to(device, non_blocking=True), labels.to(device) + + with dt[1]: + y = model(images) + + with dt[2]: + pred.append(y.argsort(1, descending=True)[:, :5]) + targets.append(labels) + if criterion: + loss += criterion(y, labels) + + loss /= n + pred, targets = torch.cat(pred), torch.cat(targets) + correct = (targets[:, None] == pred).float() + acc = torch.stack((correct[:, 0], correct.max(1).values), dim=1) # (top1, top5) accuracy + top1, top5 = acc.mean(0).tolist() + + if pbar: + pbar.desc = f"{pbar.desc[:-36]}{loss:>12.3g}{top1:>12.3g}{top5:>12.3g}" + if verbose: # all classes + LOGGER.info(f"{'Class':>24}{'Images':>12}{'top1_acc':>12}{'top5_acc':>12}") + LOGGER.info(f"{'all':>24}{targets.shape[0]:>12}{top1:>12.3g}{top5:>12.3g}") + for i, c in model.names.items(): + acc_i = acc[targets == i] + top1i, top5i = acc_i.mean(0).tolist() + LOGGER.info(f"{c:>24}{acc_i.shape[0]:>12}{top1i:>12.3g}{top5i:>12.3g}") + + # Print results + t = tuple(x.t / len(dataloader.dataset.samples) * 1E3 for x in dt) # speeds per image + shape = (1, 3, imgsz, imgsz) + LOGGER.info(f'Speed: %.1fms pre-process, %.1fms inference, %.1fms post-process per image at shape {shape}' % t) + LOGGER.info(f"Results saved to {colorstr('bold', save_dir)}") + + return top1, top5, loss + + +def parse_opt(): + parser = argparse.ArgumentParser() + parser.add_argument('--data', type=str, default=ROOT / '../datasets/mnist', help='dataset path') + parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'yolov5s-cls.pt', help='model.pt path(s)') + parser.add_argument('--batch-size', type=int, default=128, help='batch size') + parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=224, help='inference size (pixels)') + parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') + parser.add_argument('--workers', type=int, default=8, help='max dataloader workers (per RANK in DDP mode)') + parser.add_argument('--verbose', nargs='?', const=True, default=True, help='verbose output') + parser.add_argument('--project', default=ROOT / 'runs/val-cls', help='save to project/name') + parser.add_argument('--name', default='exp', help='save to project/name') + parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment') + parser.add_argument('--half', action='store_true', help='use FP16 half-precision inference') + parser.add_argument('--dnn', action='store_true', help='use OpenCV DNN for ONNX inference') + opt = parser.parse_args() + print_args(vars(opt)) + return opt + + +def main(opt): + check_requirements(exclude=('tensorboard', 'thop')) + run(**vars(opt)) + + +if __name__ == "__main__": + opt = parse_opt() + main(opt) diff --git a/data/Argoverse.yaml b/data/Argoverse.yaml index 9be3ae79..a3b4511e 100644 --- a/data/Argoverse.yaml +++ b/data/Argoverse.yaml @@ -1,10 +1,10 @@ # YOLOv3 🚀 by Ultralytics, GPL-3.0 license -# Argoverse-HD dataset (ring-front-center camera) http://www.cs.cmu.edu/~mengtial/proj/streaming/ +# Argoverse-HD dataset (ring-front-center camera) http://www.cs.cmu.edu/~mengtial/proj/streaming/ by Argo AI # Example usage: python train.py --data Argoverse.yaml # parent -# ├── yolov3 +# ├── yolov5 # └── datasets -# └── Argoverse ← downloads here +# └── Argoverse ← downloads here (31.3 GB) # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] @@ -14,8 +14,15 @@ val: Argoverse-1.1/images/val/ # val images (relative to 'path') 15062 images test: Argoverse-1.1/images/test/ # test images (optional) https://eval.ai/web/challenges/challenge-page/800/overview # Classes -nc: 8 # number of classes -names: ['person', 'bicycle', 'car', 'motorcycle', 'bus', 'truck', 'traffic_light', 'stop_sign'] # class names +names: + 0: person + 1: bicycle + 2: car + 3: motorcycle + 4: bus + 5: truck + 6: traffic_light + 7: stop_sign # Download script/URL (optional) --------------------------------------------------------------------------------------- @@ -32,7 +39,7 @@ download: | for annot in tqdm(a['annotations'], desc=f"Converting {set} to YOLOv3 format..."): img_id = annot['image_id'] img_name = a['images'][img_id]['name'] - img_label_name = img_name[:-3] + "txt" + img_label_name = f'{img_name[:-3]}txt' cls = annot['category_id'] # instance class id x_center, y_center, width, height = annot['bbox'] @@ -56,7 +63,7 @@ download: | # Download - dir = Path('../datasets/Argoverse') # dataset root dir + dir = Path(yaml['path']) # dataset root dir urls = ['https://argoverse-hd.s3.us-east-2.amazonaws.com/Argoverse-HD-Full.zip'] download(urls, dir=dir, delete=False) diff --git a/data/GlobalWheat2020.yaml b/data/GlobalWheat2020.yaml index 10a2d3fc..9df59b84 100644 --- a/data/GlobalWheat2020.yaml +++ b/data/GlobalWheat2020.yaml @@ -1,10 +1,10 @@ # YOLOv3 🚀 by Ultralytics, GPL-3.0 license -# Global Wheat 2020 dataset http://www.global-wheat.com/ +# Global Wheat 2020 dataset http://www.global-wheat.com/ by University of Saskatchewan # Example usage: python train.py --data GlobalWheat2020.yaml # parent -# ├── yolov3 +# ├── yolov5 # └── datasets -# └── GlobalWheat2020 ← downloads here +# └── GlobalWheat2020 ← downloads here (7.0 GB) # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] @@ -26,14 +26,15 @@ test: # test images (optional) 1276 images - images/uq_1 # Classes -nc: 1 # number of classes -names: ['wheat_head'] # class names +names: + 0: wheat_head # Download script/URL (optional) --------------------------------------------------------------------------------------- download: | from utils.general import download, Path + # Download dir = Path(yaml['path']) # dataset root dir urls = ['https://zenodo.org/record/4298502/files/global-wheat-codalab-official.zip', diff --git a/data/ImageNet.yaml b/data/ImageNet.yaml new file mode 100644 index 00000000..e0af69fe --- /dev/null +++ b/data/ImageNet.yaml @@ -0,0 +1,1022 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +# ImageNet-1k dataset https://www.image-net.org/index.php by Stanford University +# Simplified class names from https://github.com/anishathalye/imagenet-simple-labels +# Example usage: python classify/train.py --data imagenet +# parent +# ├── yolov5 +# └── datasets +# └── imagenet ← downloads here (144 GB) + + +# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] +path: ../datasets/imagenet # dataset root dir +train: train # train images (relative to 'path') 1281167 images +val: val # val images (relative to 'path') 50000 images +test: # test images (optional) + +# Classes +names: + 0: tench + 1: goldfish + 2: great white shark + 3: tiger shark + 4: hammerhead shark + 5: electric ray + 6: stingray + 7: cock + 8: hen + 9: ostrich + 10: brambling + 11: goldfinch + 12: house finch + 13: junco + 14: indigo bunting + 15: American robin + 16: bulbul + 17: jay + 18: magpie + 19: chickadee + 20: American dipper + 21: kite + 22: bald eagle + 23: vulture + 24: great grey owl + 25: fire salamander + 26: smooth newt + 27: newt + 28: spotted salamander + 29: axolotl + 30: American bullfrog + 31: tree frog + 32: tailed frog + 33: loggerhead sea turtle + 34: leatherback sea turtle + 35: mud turtle + 36: terrapin + 37: box turtle + 38: banded gecko + 39: green iguana + 40: Carolina anole + 41: desert grassland whiptail lizard + 42: agama + 43: frilled-necked lizard + 44: alligator lizard + 45: Gila monster + 46: European green lizard + 47: chameleon + 48: Komodo dragon + 49: Nile crocodile + 50: American alligator + 51: triceratops + 52: worm snake + 53: ring-necked snake + 54: eastern hog-nosed snake + 55: smooth green snake + 56: kingsnake + 57: garter snake + 58: water snake + 59: vine snake + 60: night snake + 61: boa constrictor + 62: African rock python + 63: Indian cobra + 64: green mamba + 65: sea snake + 66: Saharan horned viper + 67: eastern diamondback rattlesnake + 68: sidewinder + 69: trilobite + 70: harvestman + 71: scorpion + 72: yellow garden spider + 73: barn spider + 74: European garden spider + 75: southern black widow + 76: tarantula + 77: wolf spider + 78: tick + 79: centipede + 80: black grouse + 81: ptarmigan + 82: ruffed grouse + 83: prairie grouse + 84: peacock + 85: quail + 86: partridge + 87: grey parrot + 88: macaw + 89: sulphur-crested cockatoo + 90: lorikeet + 91: coucal + 92: bee eater + 93: hornbill + 94: hummingbird + 95: jacamar + 96: toucan + 97: duck + 98: red-breasted merganser + 99: goose + 100: black swan + 101: tusker + 102: echidna + 103: platypus + 104: wallaby + 105: koala + 106: wombat + 107: jellyfish + 108: sea anemone + 109: brain coral + 110: flatworm + 111: nematode + 112: conch + 113: snail + 114: slug + 115: sea slug + 116: chiton + 117: chambered nautilus + 118: Dungeness crab + 119: rock crab + 120: fiddler crab + 121: red king crab + 122: American lobster + 123: spiny lobster + 124: crayfish + 125: hermit crab + 126: isopod + 127: white stork + 128: black stork + 129: spoonbill + 130: flamingo + 131: little blue heron + 132: great egret + 133: bittern + 134: crane (bird) + 135: limpkin + 136: common gallinule + 137: American coot + 138: bustard + 139: ruddy turnstone + 140: dunlin + 141: common redshank + 142: dowitcher + 143: oystercatcher + 144: pelican + 145: king penguin + 146: albatross + 147: grey whale + 148: killer whale + 149: dugong + 150: sea lion + 151: Chihuahua + 152: Japanese Chin + 153: Maltese + 154: Pekingese + 155: Shih Tzu + 156: King Charles Spaniel + 157: Papillon + 158: toy terrier + 159: Rhodesian Ridgeback + 160: Afghan Hound + 161: Basset Hound + 162: Beagle + 163: Bloodhound + 164: Bluetick Coonhound + 165: Black and Tan Coonhound + 166: Treeing Walker Coonhound + 167: English foxhound + 168: Redbone Coonhound + 169: borzoi + 170: Irish Wolfhound + 171: Italian Greyhound + 172: Whippet + 173: Ibizan Hound + 174: Norwegian Elkhound + 175: Otterhound + 176: Saluki + 177: Scottish Deerhound + 178: Weimaraner + 179: Staffordshire Bull Terrier + 180: American Staffordshire Terrier + 181: Bedlington Terrier + 182: Border Terrier + 183: Kerry Blue Terrier + 184: Irish Terrier + 185: Norfolk Terrier + 186: Norwich Terrier + 187: Yorkshire Terrier + 188: Wire Fox Terrier + 189: Lakeland Terrier + 190: Sealyham Terrier + 191: Airedale Terrier + 192: Cairn Terrier + 193: Australian Terrier + 194: Dandie Dinmont Terrier + 195: Boston Terrier + 196: Miniature Schnauzer + 197: Giant Schnauzer + 198: Standard Schnauzer + 199: Scottish Terrier + 200: Tibetan Terrier + 201: Australian Silky Terrier + 202: Soft-coated Wheaten Terrier + 203: West Highland White Terrier + 204: Lhasa Apso + 205: Flat-Coated Retriever + 206: Curly-coated Retriever + 207: Golden Retriever + 208: Labrador Retriever + 209: Chesapeake Bay Retriever + 210: German Shorthaired Pointer + 211: Vizsla + 212: English Setter + 213: Irish Setter + 214: Gordon Setter + 215: Brittany + 216: Clumber Spaniel + 217: English Springer Spaniel + 218: Welsh Springer Spaniel + 219: Cocker Spaniels + 220: Sussex Spaniel + 221: Irish Water Spaniel + 222: Kuvasz + 223: Schipperke + 224: Groenendael + 225: Malinois + 226: Briard + 227: Australian Kelpie + 228: Komondor + 229: Old English Sheepdog + 230: Shetland Sheepdog + 231: collie + 232: Border Collie + 233: Bouvier des Flandres + 234: Rottweiler + 235: German Shepherd Dog + 236: Dobermann + 237: Miniature Pinscher + 238: Greater Swiss Mountain Dog + 239: Bernese Mountain Dog + 240: Appenzeller Sennenhund + 241: Entlebucher Sennenhund + 242: Boxer + 243: Bullmastiff + 244: Tibetan Mastiff + 245: French Bulldog + 246: Great Dane + 247: St. Bernard + 248: husky + 249: Alaskan Malamute + 250: Siberian Husky + 251: Dalmatian + 252: Affenpinscher + 253: Basenji + 254: pug + 255: Leonberger + 256: Newfoundland + 257: Pyrenean Mountain Dog + 258: Samoyed + 259: Pomeranian + 260: Chow Chow + 261: Keeshond + 262: Griffon Bruxellois + 263: Pembroke Welsh Corgi + 264: Cardigan Welsh Corgi + 265: Toy Poodle + 266: Miniature Poodle + 267: Standard Poodle + 268: Mexican hairless dog + 269: grey wolf + 270: Alaskan tundra wolf + 271: red wolf + 272: coyote + 273: dingo + 274: dhole + 275: African wild dog + 276: hyena + 277: red fox + 278: kit fox + 279: Arctic fox + 280: grey fox + 281: tabby cat + 282: tiger cat + 283: Persian cat + 284: Siamese cat + 285: Egyptian Mau + 286: cougar + 287: lynx + 288: leopard + 289: snow leopard + 290: jaguar + 291: lion + 292: tiger + 293: cheetah + 294: brown bear + 295: American black bear + 296: polar bear + 297: sloth bear + 298: mongoose + 299: meerkat + 300: tiger beetle + 301: ladybug + 302: ground beetle + 303: longhorn beetle + 304: leaf beetle + 305: dung beetle + 306: rhinoceros beetle + 307: weevil + 308: fly + 309: bee + 310: ant + 311: grasshopper + 312: cricket + 313: stick insect + 314: cockroach + 315: mantis + 316: cicada + 317: leafhopper + 318: lacewing + 319: dragonfly + 320: damselfly + 321: red admiral + 322: ringlet + 323: monarch butterfly + 324: small white + 325: sulphur butterfly + 326: gossamer-winged butterfly + 327: starfish + 328: sea urchin + 329: sea cucumber + 330: cottontail rabbit + 331: hare + 332: Angora rabbit + 333: hamster + 334: porcupine + 335: fox squirrel + 336: marmot + 337: beaver + 338: guinea pig + 339: common sorrel + 340: zebra + 341: pig + 342: wild boar + 343: warthog + 344: hippopotamus + 345: ox + 346: water buffalo + 347: bison + 348: ram + 349: bighorn sheep + 350: Alpine ibex + 351: hartebeest + 352: impala + 353: gazelle + 354: dromedary + 355: llama + 356: weasel + 357: mink + 358: European polecat + 359: black-footed ferret + 360: otter + 361: skunk + 362: badger + 363: armadillo + 364: three-toed sloth + 365: orangutan + 366: gorilla + 367: chimpanzee + 368: gibbon + 369: siamang + 370: guenon + 371: patas monkey + 372: baboon + 373: macaque + 374: langur + 375: black-and-white colobus + 376: proboscis monkey + 377: marmoset + 378: white-headed capuchin + 379: howler monkey + 380: titi + 381: Geoffroy's spider monkey + 382: common squirrel monkey + 383: ring-tailed lemur + 384: indri + 385: Asian elephant + 386: African bush elephant + 387: red panda + 388: giant panda + 389: snoek + 390: eel + 391: coho salmon + 392: rock beauty + 393: clownfish + 394: sturgeon + 395: garfish + 396: lionfish + 397: pufferfish + 398: abacus + 399: abaya + 400: academic gown + 401: accordion + 402: acoustic guitar + 403: aircraft carrier + 404: airliner + 405: airship + 406: altar + 407: ambulance + 408: amphibious vehicle + 409: analog clock + 410: apiary + 411: apron + 412: waste container + 413: assault rifle + 414: backpack + 415: bakery + 416: balance beam + 417: balloon + 418: ballpoint pen + 419: Band-Aid + 420: banjo + 421: baluster + 422: barbell + 423: barber chair + 424: barbershop + 425: barn + 426: barometer + 427: barrel + 428: wheelbarrow + 429: baseball + 430: basketball + 431: bassinet + 432: bassoon + 433: swimming cap + 434: bath towel + 435: bathtub + 436: station wagon + 437: lighthouse + 438: beaker + 439: military cap + 440: beer bottle + 441: beer glass + 442: bell-cot + 443: bib + 444: tandem bicycle + 445: bikini + 446: ring binder + 447: binoculars + 448: birdhouse + 449: boathouse + 450: bobsleigh + 451: bolo tie + 452: poke bonnet + 453: bookcase + 454: bookstore + 455: bottle cap + 456: bow + 457: bow tie + 458: brass + 459: bra + 460: breakwater + 461: breastplate + 462: broom + 463: bucket + 464: buckle + 465: bulletproof vest + 466: high-speed train + 467: butcher shop + 468: taxicab + 469: cauldron + 470: candle + 471: cannon + 472: canoe + 473: can opener + 474: cardigan + 475: car mirror + 476: carousel + 477: tool kit + 478: carton + 479: car wheel + 480: automated teller machine + 481: cassette + 482: cassette player + 483: castle + 484: catamaran + 485: CD player + 486: cello + 487: mobile phone + 488: chain + 489: chain-link fence + 490: chain mail + 491: chainsaw + 492: chest + 493: chiffonier + 494: chime + 495: china cabinet + 496: Christmas stocking + 497: church + 498: movie theater + 499: cleaver + 500: cliff dwelling + 501: cloak + 502: clogs + 503: cocktail shaker + 504: coffee mug + 505: coffeemaker + 506: coil + 507: combination lock + 508: computer keyboard + 509: confectionery store + 510: container ship + 511: convertible + 512: corkscrew + 513: cornet + 514: cowboy boot + 515: cowboy hat + 516: cradle + 517: crane (machine) + 518: crash helmet + 519: crate + 520: infant bed + 521: Crock Pot + 522: croquet ball + 523: crutch + 524: cuirass + 525: dam + 526: desk + 527: desktop computer + 528: rotary dial telephone + 529: diaper + 530: digital clock + 531: digital watch + 532: dining table + 533: dishcloth + 534: dishwasher + 535: disc brake + 536: dock + 537: dog sled + 538: dome + 539: doormat + 540: drilling rig + 541: drum + 542: drumstick + 543: dumbbell + 544: Dutch oven + 545: electric fan + 546: electric guitar + 547: electric locomotive + 548: entertainment center + 549: envelope + 550: espresso machine + 551: face powder + 552: feather boa + 553: filing cabinet + 554: fireboat + 555: fire engine + 556: fire screen sheet + 557: flagpole + 558: flute + 559: folding chair + 560: football helmet + 561: forklift + 562: fountain + 563: fountain pen + 564: four-poster bed + 565: freight car + 566: French horn + 567: frying pan + 568: fur coat + 569: garbage truck + 570: gas mask + 571: gas pump + 572: goblet + 573: go-kart + 574: golf ball + 575: golf cart + 576: gondola + 577: gong + 578: gown + 579: grand piano + 580: greenhouse + 581: grille + 582: grocery store + 583: guillotine + 584: barrette + 585: hair spray + 586: half-track + 587: hammer + 588: hamper + 589: hair dryer + 590: hand-held computer + 591: handkerchief + 592: hard disk drive + 593: harmonica + 594: harp + 595: harvester + 596: hatchet + 597: holster + 598: home theater + 599: honeycomb + 600: hook + 601: hoop skirt + 602: horizontal bar + 603: horse-drawn vehicle + 604: hourglass + 605: iPod + 606: clothes iron + 607: jack-o'-lantern + 608: jeans + 609: jeep + 610: T-shirt + 611: jigsaw puzzle + 612: pulled rickshaw + 613: joystick + 614: kimono + 615: knee pad + 616: knot + 617: lab coat + 618: ladle + 619: lampshade + 620: laptop computer + 621: lawn mower + 622: lens cap + 623: paper knife + 624: library + 625: lifeboat + 626: lighter + 627: limousine + 628: ocean liner + 629: lipstick + 630: slip-on shoe + 631: lotion + 632: speaker + 633: loupe + 634: sawmill + 635: magnetic compass + 636: mail bag + 637: mailbox + 638: tights + 639: tank suit + 640: manhole cover + 641: maraca + 642: marimba + 643: mask + 644: match + 645: maypole + 646: maze + 647: measuring cup + 648: medicine chest + 649: megalith + 650: microphone + 651: microwave oven + 652: military uniform + 653: milk can + 654: minibus + 655: miniskirt + 656: minivan + 657: missile + 658: mitten + 659: mixing bowl + 660: mobile home + 661: Model T + 662: modem + 663: monastery + 664: monitor + 665: moped + 666: mortar + 667: square academic cap + 668: mosque + 669: mosquito net + 670: scooter + 671: mountain bike + 672: tent + 673: computer mouse + 674: mousetrap + 675: moving van + 676: muzzle + 677: nail + 678: neck brace + 679: necklace + 680: nipple + 681: notebook computer + 682: obelisk + 683: oboe + 684: ocarina + 685: odometer + 686: oil filter + 687: organ + 688: oscilloscope + 689: overskirt + 690: bullock cart + 691: oxygen mask + 692: packet + 693: paddle + 694: paddle wheel + 695: padlock + 696: paintbrush + 697: pajamas + 698: palace + 699: pan flute + 700: paper towel + 701: parachute + 702: parallel bars + 703: park bench + 704: parking meter + 705: passenger car + 706: patio + 707: payphone + 708: pedestal + 709: pencil case + 710: pencil sharpener + 711: perfume + 712: Petri dish + 713: photocopier + 714: plectrum + 715: Pickelhaube + 716: picket fence + 717: pickup truck + 718: pier + 719: piggy bank + 720: pill bottle + 721: pillow + 722: ping-pong ball + 723: pinwheel + 724: pirate ship + 725: pitcher + 726: hand plane + 727: planetarium + 728: plastic bag + 729: plate rack + 730: plow + 731: plunger + 732: Polaroid camera + 733: pole + 734: police van + 735: poncho + 736: billiard table + 737: soda bottle + 738: pot + 739: potter's wheel + 740: power drill + 741: prayer rug + 742: printer + 743: prison + 744: projectile + 745: projector + 746: hockey puck + 747: punching bag + 748: purse + 749: quill + 750: quilt + 751: race car + 752: racket + 753: radiator + 754: radio + 755: radio telescope + 756: rain barrel + 757: recreational vehicle + 758: reel + 759: reflex camera + 760: refrigerator + 761: remote control + 762: restaurant + 763: revolver + 764: rifle + 765: rocking chair + 766: rotisserie + 767: eraser + 768: rugby ball + 769: ruler + 770: running shoe + 771: safe + 772: safety pin + 773: salt shaker + 774: sandal + 775: sarong + 776: saxophone + 777: scabbard + 778: weighing scale + 779: school bus + 780: schooner + 781: scoreboard + 782: CRT screen + 783: screw + 784: screwdriver + 785: seat belt + 786: sewing machine + 787: shield + 788: shoe store + 789: shoji + 790: shopping basket + 791: shopping cart + 792: shovel + 793: shower cap + 794: shower curtain + 795: ski + 796: ski mask + 797: sleeping bag + 798: slide rule + 799: sliding door + 800: slot machine + 801: snorkel + 802: snowmobile + 803: snowplow + 804: soap dispenser + 805: soccer ball + 806: sock + 807: solar thermal collector + 808: sombrero + 809: soup bowl + 810: space bar + 811: space heater + 812: space shuttle + 813: spatula + 814: motorboat + 815: spider web + 816: spindle + 817: sports car + 818: spotlight + 819: stage + 820: steam locomotive + 821: through arch bridge + 822: steel drum + 823: stethoscope + 824: scarf + 825: stone wall + 826: stopwatch + 827: stove + 828: strainer + 829: tram + 830: stretcher + 831: couch + 832: stupa + 833: submarine + 834: suit + 835: sundial + 836: sunglass + 837: sunglasses + 838: sunscreen + 839: suspension bridge + 840: mop + 841: sweatshirt + 842: swimsuit + 843: swing + 844: switch + 845: syringe + 846: table lamp + 847: tank + 848: tape player + 849: teapot + 850: teddy bear + 851: television + 852: tennis ball + 853: thatched roof + 854: front curtain + 855: thimble + 856: threshing machine + 857: throne + 858: tile roof + 859: toaster + 860: tobacco shop + 861: toilet seat + 862: torch + 863: totem pole + 864: tow truck + 865: toy store + 866: tractor + 867: semi-trailer truck + 868: tray + 869: trench coat + 870: tricycle + 871: trimaran + 872: tripod + 873: triumphal arch + 874: trolleybus + 875: trombone + 876: tub + 877: turnstile + 878: typewriter keyboard + 879: umbrella + 880: unicycle + 881: upright piano + 882: vacuum cleaner + 883: vase + 884: vault + 885: velvet + 886: vending machine + 887: vestment + 888: viaduct + 889: violin + 890: volleyball + 891: waffle iron + 892: wall clock + 893: wallet + 894: wardrobe + 895: military aircraft + 896: sink + 897: washing machine + 898: water bottle + 899: water jug + 900: water tower + 901: whiskey jug + 902: whistle + 903: wig + 904: window screen + 905: window shade + 906: Windsor tie + 907: wine bottle + 908: wing + 909: wok + 910: wooden spoon + 911: wool + 912: split-rail fence + 913: shipwreck + 914: yawl + 915: yurt + 916: website + 917: comic book + 918: crossword + 919: traffic sign + 920: traffic light + 921: dust jacket + 922: menu + 923: plate + 924: guacamole + 925: consomme + 926: hot pot + 927: trifle + 928: ice cream + 929: ice pop + 930: baguette + 931: bagel + 932: pretzel + 933: cheeseburger + 934: hot dog + 935: mashed potato + 936: cabbage + 937: broccoli + 938: cauliflower + 939: zucchini + 940: spaghetti squash + 941: acorn squash + 942: butternut squash + 943: cucumber + 944: artichoke + 945: bell pepper + 946: cardoon + 947: mushroom + 948: Granny Smith + 949: strawberry + 950: orange + 951: lemon + 952: fig + 953: pineapple + 954: banana + 955: jackfruit + 956: custard apple + 957: pomegranate + 958: hay + 959: carbonara + 960: chocolate syrup + 961: dough + 962: meatloaf + 963: pizza + 964: pot pie + 965: burrito + 966: red wine + 967: espresso + 968: cup + 969: eggnog + 970: alp + 971: bubble + 972: cliff + 973: coral reef + 974: geyser + 975: lakeshore + 976: promontory + 977: shoal + 978: seashore + 979: valley + 980: volcano + 981: baseball player + 982: bridegroom + 983: scuba diver + 984: rapeseed + 985: daisy + 986: yellow lady's slipper + 987: corn + 988: acorn + 989: rose hip + 990: horse chestnut seed + 991: coral fungus + 992: agaric + 993: gyromitra + 994: stinkhorn mushroom + 995: earth star + 996: hen-of-the-woods + 997: bolete + 998: ear + 999: toilet paper + + +# Download script/URL (optional) +download: data/scripts/get_imagenet.sh diff --git a/data/SKU-110K.yaml b/data/SKU-110K.yaml index 183d3637..9ebbb555 100644 --- a/data/SKU-110K.yaml +++ b/data/SKU-110K.yaml @@ -1,10 +1,10 @@ # YOLOv3 🚀 by Ultralytics, GPL-3.0 license -# SKU-110K retail items dataset https://github.com/eg4000/SKU110K_CVPR19 +# SKU-110K retail items dataset https://github.com/eg4000/SKU110K_CVPR19 by Trax Retail # Example usage: python train.py --data SKU-110K.yaml # parent -# ├── yolov3 +# ├── yolov5 # └── datasets -# └── SKU-110K ← downloads here +# └── SKU-110K ← downloads here (13.6 GB) # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] @@ -14,8 +14,8 @@ val: val.txt # val images (relative to 'path') 588 images test: test.txt # test images (optional) 2936 images # Classes -nc: 1 # number of classes -names: ['object'] # class names +names: + 0: object # Download script/URL (optional) --------------------------------------------------------------------------------------- @@ -24,6 +24,7 @@ download: | from tqdm import tqdm from utils.general import np, pd, Path, download, xyxy2xywh + # Download dir = Path(yaml['path']) # dataset root dir parent = Path(dir.parent) # download dir diff --git a/data/VisDrone.yaml b/data/VisDrone.yaml index 945f05b4..fae733bb 100644 --- a/data/VisDrone.yaml +++ b/data/VisDrone.yaml @@ -1,10 +1,10 @@ # YOLOv3 🚀 by Ultralytics, GPL-3.0 license -# VisDrone2019-DET dataset https://github.com/VisDrone/VisDrone-Dataset +# VisDrone2019-DET dataset https://github.com/VisDrone/VisDrone-Dataset by Tianjin University # Example usage: python train.py --data VisDrone.yaml # parent -# ├── yolov3 +# ├── yolov5 # └── datasets -# └── VisDrone ← downloads here +# └── VisDrone ← downloads here (2.3 GB) # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] @@ -14,8 +14,17 @@ val: VisDrone2019-DET-val/images # val images (relative to 'path') 548 images test: VisDrone2019-DET-test-dev/images # test images (optional) 1610 images # Classes -nc: 10 # number of classes -names: ['pedestrian', 'people', 'bicycle', 'car', 'van', 'truck', 'tricycle', 'awning-tricycle', 'bus', 'motor'] +names: + 0: pedestrian + 1: people + 2: bicycle + 3: car + 4: van + 5: truck + 6: tricycle + 7: awning-tricycle + 8: bus + 9: motor # Download script/URL (optional) --------------------------------------------------------------------------------------- @@ -54,7 +63,7 @@ download: | 'https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-val.zip', 'https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-test-dev.zip', 'https://github.com/ultralytics/yolov5/releases/download/v1.0/VisDrone2019-DET-test-challenge.zip'] - download(urls, dir=dir) + download(urls, dir=dir, curl=True, threads=4) # Convert for d in 'VisDrone2019-DET-train', 'VisDrone2019-DET-val', 'VisDrone2019-DET-test-dev': diff --git a/data/coco.yaml b/data/coco.yaml index 1d89a3a0..8dd3c7c8 100644 --- a/data/coco.yaml +++ b/data/coco.yaml @@ -1,35 +1,107 @@ # YOLOv3 🚀 by Ultralytics, GPL-3.0 license -# COCO 2017 dataset http://cocodataset.org +# COCO 2017 dataset http://cocodataset.org by Microsoft # Example usage: python train.py --data coco.yaml # parent -# ├── yolov3 +# ├── yolov5 # └── datasets -# └── coco ← downloads here +# └── coco ← downloads here (20.1 GB) # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] path: ../datasets/coco # dataset root dir train: train2017.txt # train images (relative to 'path') 118287 images -val: val2017.txt # train images (relative to 'path') 5000 images +val: val2017.txt # val images (relative to 'path') 5000 images test: test-dev2017.txt # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794 # Classes -nc: 80 # number of classes -names: ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light', - 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', - 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', - 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', - 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', - 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', - 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', - 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', - 'hair drier', 'toothbrush'] # class names +names: + 0: person + 1: bicycle + 2: car + 3: motorcycle + 4: airplane + 5: bus + 6: train + 7: truck + 8: boat + 9: traffic light + 10: fire hydrant + 11: stop sign + 12: parking meter + 13: bench + 14: bird + 15: cat + 16: dog + 17: horse + 18: sheep + 19: cow + 20: elephant + 21: bear + 22: zebra + 23: giraffe + 24: backpack + 25: umbrella + 26: handbag + 27: tie + 28: suitcase + 29: frisbee + 30: skis + 31: snowboard + 32: sports ball + 33: kite + 34: baseball bat + 35: baseball glove + 36: skateboard + 37: surfboard + 38: tennis racket + 39: bottle + 40: wine glass + 41: cup + 42: fork + 43: knife + 44: spoon + 45: bowl + 46: banana + 47: apple + 48: sandwich + 49: orange + 50: broccoli + 51: carrot + 52: hot dog + 53: pizza + 54: donut + 55: cake + 56: chair + 57: couch + 58: potted plant + 59: bed + 60: dining table + 61: toilet + 62: tv + 63: laptop + 64: mouse + 65: remote + 66: keyboard + 67: cell phone + 68: microwave + 69: oven + 70: toaster + 71: sink + 72: refrigerator + 73: book + 74: clock + 75: vase + 76: scissors + 77: teddy bear + 78: hair drier + 79: toothbrush # Download script/URL (optional) download: | from utils.general import download, Path + # Download labels segments = False # segment or box labels dir = Path(yaml['path']) # dataset root dir diff --git a/data/coco128-seg.yaml b/data/coco128-seg.yaml new file mode 100644 index 00000000..6a45758e --- /dev/null +++ b/data/coco128-seg.yaml @@ -0,0 +1,101 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +# COCO128-seg dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics +# Example usage: python train.py --data coco128.yaml +# parent +# ├── yolov5 +# └── datasets +# └── coco128-seg ← downloads here (7 MB) + + +# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] +path: ../datasets/coco128-seg # dataset root dir +train: images/train2017 # train images (relative to 'path') 128 images +val: images/train2017 # val images (relative to 'path') 128 images +test: # test images (optional) + +# Classes +names: + 0: person + 1: bicycle + 2: car + 3: motorcycle + 4: airplane + 5: bus + 6: train + 7: truck + 8: boat + 9: traffic light + 10: fire hydrant + 11: stop sign + 12: parking meter + 13: bench + 14: bird + 15: cat + 16: dog + 17: horse + 18: sheep + 19: cow + 20: elephant + 21: bear + 22: zebra + 23: giraffe + 24: backpack + 25: umbrella + 26: handbag + 27: tie + 28: suitcase + 29: frisbee + 30: skis + 31: snowboard + 32: sports ball + 33: kite + 34: baseball bat + 35: baseball glove + 36: skateboard + 37: surfboard + 38: tennis racket + 39: bottle + 40: wine glass + 41: cup + 42: fork + 43: knife + 44: spoon + 45: bowl + 46: banana + 47: apple + 48: sandwich + 49: orange + 50: broccoli + 51: carrot + 52: hot dog + 53: pizza + 54: donut + 55: cake + 56: chair + 57: couch + 58: potted plant + 59: bed + 60: dining table + 61: toilet + 62: tv + 63: laptop + 64: mouse + 65: remote + 66: keyboard + 67: cell phone + 68: microwave + 69: oven + 70: toaster + 71: sink + 72: refrigerator + 73: book + 74: clock + 75: vase + 76: scissors + 77: teddy bear + 78: hair drier + 79: toothbrush + + +# Download script/URL (optional) +download: https://ultralytics.com/assets/coco128-seg.zip diff --git a/data/coco128.yaml b/data/coco128.yaml index 19e8d800..6cb076ac 100644 --- a/data/coco128.yaml +++ b/data/coco128.yaml @@ -1,10 +1,10 @@ # YOLOv3 🚀 by Ultralytics, GPL-3.0 license -# COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) +# COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics # Example usage: python train.py --data coco128.yaml # parent -# ├── yolov3 +# ├── yolov5 # └── datasets -# └── coco128 ← downloads here +# └── coco128 ← downloads here (7 MB) # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] @@ -14,16 +14,87 @@ val: images/train2017 # val images (relative to 'path') 128 images test: # test images (optional) # Classes -nc: 80 # number of classes -names: ['person', 'bicycle', 'car', 'motorcycle', 'airplane', 'bus', 'train', 'truck', 'boat', 'traffic light', - 'fire hydrant', 'stop sign', 'parking meter', 'bench', 'bird', 'cat', 'dog', 'horse', 'sheep', 'cow', - 'elephant', 'bear', 'zebra', 'giraffe', 'backpack', 'umbrella', 'handbag', 'tie', 'suitcase', 'frisbee', - 'skis', 'snowboard', 'sports ball', 'kite', 'baseball bat', 'baseball glove', 'skateboard', 'surfboard', - 'tennis racket', 'bottle', 'wine glass', 'cup', 'fork', 'knife', 'spoon', 'bowl', 'banana', 'apple', - 'sandwich', 'orange', 'broccoli', 'carrot', 'hot dog', 'pizza', 'donut', 'cake', 'chair', 'couch', - 'potted plant', 'bed', 'dining table', 'toilet', 'tv', 'laptop', 'mouse', 'remote', 'keyboard', 'cell phone', - 'microwave', 'oven', 'toaster', 'sink', 'refrigerator', 'book', 'clock', 'vase', 'scissors', 'teddy bear', - 'hair drier', 'toothbrush'] # class names +names: + 0: person + 1: bicycle + 2: car + 3: motorcycle + 4: airplane + 5: bus + 6: train + 7: truck + 8: boat + 9: traffic light + 10: fire hydrant + 11: stop sign + 12: parking meter + 13: bench + 14: bird + 15: cat + 16: dog + 17: horse + 18: sheep + 19: cow + 20: elephant + 21: bear + 22: zebra + 23: giraffe + 24: backpack + 25: umbrella + 26: handbag + 27: tie + 28: suitcase + 29: frisbee + 30: skis + 31: snowboard + 32: sports ball + 33: kite + 34: baseball bat + 35: baseball glove + 36: skateboard + 37: surfboard + 38: tennis racket + 39: bottle + 40: wine glass + 41: cup + 42: fork + 43: knife + 44: spoon + 45: bowl + 46: banana + 47: apple + 48: sandwich + 49: orange + 50: broccoli + 51: carrot + 52: hot dog + 53: pizza + 54: donut + 55: cake + 56: chair + 57: couch + 58: potted plant + 59: bed + 60: dining table + 61: toilet + 62: tv + 63: laptop + 64: mouse + 65: remote + 66: keyboard + 67: cell phone + 68: microwave + 69: oven + 70: toaster + 71: sink + 72: refrigerator + 73: book + 74: clock + 75: vase + 76: scissors + 77: teddy bear + 78: hair drier + 79: toothbrush # Download script/URL (optional) diff --git a/data/hyps/hyp.Objects365.yaml b/data/hyps/hyp.Objects365.yaml new file mode 100644 index 00000000..e3bc19bb --- /dev/null +++ b/data/hyps/hyp.Objects365.yaml @@ -0,0 +1,34 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +# Hyperparameters for Objects365 training +# python train.py --weights yolov5m.pt --data Objects365.yaml --evolve +# See Hyperparameter Evolution tutorial for details https://github.com/ultralytics/yolov5#tutorials + +lr0: 0.00258 +lrf: 0.17 +momentum: 0.779 +weight_decay: 0.00058 +warmup_epochs: 1.33 +warmup_momentum: 0.86 +warmup_bias_lr: 0.0711 +box: 0.0539 +cls: 0.299 +cls_pw: 0.825 +obj: 0.632 +obj_pw: 1.0 +iou_t: 0.2 +anchor_t: 3.44 +anchors: 3.2 +fl_gamma: 0.0 +hsv_h: 0.0188 +hsv_s: 0.704 +hsv_v: 0.36 +degrees: 0.0 +translate: 0.0902 +scale: 0.491 +shear: 0.0 +perspective: 0.0 +flipud: 0.0 +fliplr: 0.5 +mosaic: 1.0 +mixup: 0.0 +copy_paste: 0.0 diff --git a/data/hyps/hyp.VOC.yaml b/data/hyps/hyp.VOC.yaml new file mode 100644 index 00000000..34cf8d1e --- /dev/null +++ b/data/hyps/hyp.VOC.yaml @@ -0,0 +1,40 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +# Hyperparameters for VOC training +# python train.py --batch 128 --weights yolov5m6.pt --data VOC.yaml --epochs 50 --img 512 --hyp hyp.scratch-med.yaml --evolve +# See Hyperparameter Evolution tutorial for details https://github.com/ultralytics/yolov5#tutorials + +# YOLOv5 Hyperparameter Evolution Results +# Best generation: 467 +# Last generation: 996 +# metrics/precision, metrics/recall, metrics/mAP_0.5, metrics/mAP_0.5:0.95, val/box_loss, val/obj_loss, val/cls_loss +# 0.87729, 0.85125, 0.91286, 0.72664, 0.0076739, 0.0042529, 0.0013865 + +lr0: 0.00334 +lrf: 0.15135 +momentum: 0.74832 +weight_decay: 0.00025 +warmup_epochs: 3.3835 +warmup_momentum: 0.59462 +warmup_bias_lr: 0.18657 +box: 0.02 +cls: 0.21638 +cls_pw: 0.5 +obj: 0.51728 +obj_pw: 0.67198 +iou_t: 0.2 +anchor_t: 3.3744 +fl_gamma: 0.0 +hsv_h: 0.01041 +hsv_s: 0.54703 +hsv_v: 0.27739 +degrees: 0.0 +translate: 0.04591 +scale: 0.75544 +shear: 0.0 +perspective: 0.0 +flipud: 0.0 +fliplr: 0.5 +mosaic: 0.85834 +mixup: 0.04266 +copy_paste: 0.0 +anchors: 3.412 diff --git a/data/hyps/hyp.scratch.yaml b/data/hyps/hyp.no-augmentation.yaml similarity index 54% rename from data/hyps/hyp.scratch.yaml rename to data/hyps/hyp.no-augmentation.yaml index 31f6d142..50ee43e6 100644 --- a/data/hyps/hyp.scratch.yaml +++ b/data/hyps/hyp.no-augmentation.yaml @@ -1,7 +1,7 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license -# Hyperparameters for COCO training from scratch -# python train.py --batch 40 --cfg yolov5m.yaml --weights '' --data coco.yaml --img 640 --epochs 300 -# See tutorials for hyperparameter evolution https://github.com/ultralytics/yolov5#tutorials +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +# Hyperparameters when using Albumentations frameworks +# python train.py --hyp hyp.no-augmentation.yaml +# See https://github.com/ultralytics/yolov5/pull/3882 for YOLOv5 + Albumentations Usage examples lr0: 0.01 # initial learning rate (SGD=1E-2, Adam=1E-3) lrf: 0.1 # final OneCycleLR learning rate (lr0 * lrf) @@ -11,24 +11,25 @@ warmup_epochs: 3.0 # warmup epochs (fractions ok) warmup_momentum: 0.8 # warmup initial momentum warmup_bias_lr: 0.1 # warmup initial bias lr box: 0.05 # box loss gain -cls: 0.5 # cls loss gain +cls: 0.3 # cls loss gain cls_pw: 1.0 # cls BCELoss positive_weight -obj: 1.0 # obj loss gain (scale with pixels) +obj: 0.7 # obj loss gain (scale with pixels) obj_pw: 1.0 # obj BCELoss positive_weight iou_t: 0.20 # IoU training threshold anchor_t: 4.0 # anchor-multiple threshold # anchors: 3 # anchors per output layer (0 to ignore) +# this parameters are all zero since we want to use albumentation framework fl_gamma: 0.0 # focal loss gamma (efficientDet default gamma=1.5) -hsv_h: 0.015 # image HSV-Hue augmentation (fraction) -hsv_s: 0.7 # image HSV-Saturation augmentation (fraction) -hsv_v: 0.4 # image HSV-Value augmentation (fraction) +hsv_h: 0 # image HSV-Hue augmentation (fraction) +hsv_s: 00 # image HSV-Saturation augmentation (fraction) +hsv_v: 0 # image HSV-Value augmentation (fraction) degrees: 0.0 # image rotation (+/- deg) -translate: 0.1 # image translation (+/- fraction) -scale: 0.5 # image scale (+/- gain) -shear: 0.0 # image shear (+/- deg) +translate: 0 # image translation (+/- fraction) +scale: 0 # image scale (+/- gain) +shear: 0 # image shear (+/- deg) perspective: 0.0 # image perspective (+/- fraction), range 0-0.001 flipud: 0.0 # image flip up-down (probability) -fliplr: 0.5 # image flip left-right (probability) -mosaic: 1.0 # image mosaic (probability) +fliplr: 0.0 # image flip left-right (probability) +mosaic: 0.0 # image mosaic (probability) mixup: 0.0 # image mixup (probability) copy_paste: 0.0 # segment copy-paste (probability) diff --git a/data/hyps/hyp.scratch-high.yaml b/data/hyps/hyp.scratch-high.yaml index 07ad9fc2..05cd35cb 100644 --- a/data/hyps/hyp.scratch-high.yaml +++ b/data/hyps/hyp.scratch-high.yaml @@ -4,7 +4,7 @@ # See tutorials for hyperparameter evolution https://github.com/ultralytics/yolov5#tutorials lr0: 0.01 # initial learning rate (SGD=1E-2, Adam=1E-3) -lrf: 0.2 # final OneCycleLR learning rate (lr0 * lrf) +lrf: 0.1 # final OneCycleLR learning rate (lr0 * lrf) momentum: 0.937 # SGD momentum/Adam beta1 weight_decay: 0.0005 # optimizer weight decay 5e-4 warmup_epochs: 3.0 # warmup epochs (fractions ok) diff --git a/data/objects365.yaml b/data/objects365.yaml index 3472f0f6..353635a3 100644 --- a/data/objects365.yaml +++ b/data/objects365.yaml @@ -1,10 +1,10 @@ # YOLOv3 🚀 by Ultralytics, GPL-3.0 license -# Objects365 dataset https://www.objects365.org/ +# Objects365 dataset https://www.objects365.org/ by Megvii # Example usage: python train.py --data Objects365.yaml # parent -# ├── yolov3 +# ├── yolov5 # └── datasets -# └── Objects365 ← downloads here +# └── Objects365 ← downloads here (712 GB = 367G data + 345G zips) # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] @@ -14,56 +14,382 @@ val: images/val # val images (relative to 'path') 80000 images test: # test images (optional) # Classes -nc: 365 # number of classes -names: ['Person', 'Sneakers', 'Chair', 'Other Shoes', 'Hat', 'Car', 'Lamp', 'Glasses', 'Bottle', 'Desk', 'Cup', - 'Street Lights', 'Cabinet/shelf', 'Handbag/Satchel', 'Bracelet', 'Plate', 'Picture/Frame', 'Helmet', 'Book', - 'Gloves', 'Storage box', 'Boat', 'Leather Shoes', 'Flower', 'Bench', 'Potted Plant', 'Bowl/Basin', 'Flag', - 'Pillow', 'Boots', 'Vase', 'Microphone', 'Necklace', 'Ring', 'SUV', 'Wine Glass', 'Belt', 'Monitor/TV', - 'Backpack', 'Umbrella', 'Traffic Light', 'Speaker', 'Watch', 'Tie', 'Trash bin Can', 'Slippers', 'Bicycle', - 'Stool', 'Barrel/bucket', 'Van', 'Couch', 'Sandals', 'Basket', 'Drum', 'Pen/Pencil', 'Bus', 'Wild Bird', - 'High Heels', 'Motorcycle', 'Guitar', 'Carpet', 'Cell Phone', 'Bread', 'Camera', 'Canned', 'Truck', - 'Traffic cone', 'Cymbal', 'Lifesaver', 'Towel', 'Stuffed Toy', 'Candle', 'Sailboat', 'Laptop', 'Awning', - 'Bed', 'Faucet', 'Tent', 'Horse', 'Mirror', 'Power outlet', 'Sink', 'Apple', 'Air Conditioner', 'Knife', - 'Hockey Stick', 'Paddle', 'Pickup Truck', 'Fork', 'Traffic Sign', 'Balloon', 'Tripod', 'Dog', 'Spoon', 'Clock', - 'Pot', 'Cow', 'Cake', 'Dinning Table', 'Sheep', 'Hanger', 'Blackboard/Whiteboard', 'Napkin', 'Other Fish', - 'Orange/Tangerine', 'Toiletry', 'Keyboard', 'Tomato', 'Lantern', 'Machinery Vehicle', 'Fan', - 'Green Vegetables', 'Banana', 'Baseball Glove', 'Airplane', 'Mouse', 'Train', 'Pumpkin', 'Soccer', 'Skiboard', - 'Luggage', 'Nightstand', 'Tea pot', 'Telephone', 'Trolley', 'Head Phone', 'Sports Car', 'Stop Sign', - 'Dessert', 'Scooter', 'Stroller', 'Crane', 'Remote', 'Refrigerator', 'Oven', 'Lemon', 'Duck', 'Baseball Bat', - 'Surveillance Camera', 'Cat', 'Jug', 'Broccoli', 'Piano', 'Pizza', 'Elephant', 'Skateboard', 'Surfboard', - 'Gun', 'Skating and Skiing shoes', 'Gas stove', 'Donut', 'Bow Tie', 'Carrot', 'Toilet', 'Kite', 'Strawberry', - 'Other Balls', 'Shovel', 'Pepper', 'Computer Box', 'Toilet Paper', 'Cleaning Products', 'Chopsticks', - 'Microwave', 'Pigeon', 'Baseball', 'Cutting/chopping Board', 'Coffee Table', 'Side Table', 'Scissors', - 'Marker', 'Pie', 'Ladder', 'Snowboard', 'Cookies', 'Radiator', 'Fire Hydrant', 'Basketball', 'Zebra', 'Grape', - 'Giraffe', 'Potato', 'Sausage', 'Tricycle', 'Violin', 'Egg', 'Fire Extinguisher', 'Candy', 'Fire Truck', - 'Billiards', 'Converter', 'Bathtub', 'Wheelchair', 'Golf Club', 'Briefcase', 'Cucumber', 'Cigar/Cigarette', - 'Paint Brush', 'Pear', 'Heavy Truck', 'Hamburger', 'Extractor', 'Extension Cord', 'Tong', 'Tennis Racket', - 'Folder', 'American Football', 'earphone', 'Mask', 'Kettle', 'Tennis', 'Ship', 'Swing', 'Coffee Machine', - 'Slide', 'Carriage', 'Onion', 'Green beans', 'Projector', 'Frisbee', 'Washing Machine/Drying Machine', - 'Chicken', 'Printer', 'Watermelon', 'Saxophone', 'Tissue', 'Toothbrush', 'Ice cream', 'Hot-air balloon', - 'Cello', 'French Fries', 'Scale', 'Trophy', 'Cabbage', 'Hot dog', 'Blender', 'Peach', 'Rice', 'Wallet/Purse', - 'Volleyball', 'Deer', 'Goose', 'Tape', 'Tablet', 'Cosmetics', 'Trumpet', 'Pineapple', 'Golf Ball', - 'Ambulance', 'Parking meter', 'Mango', 'Key', 'Hurdle', 'Fishing Rod', 'Medal', 'Flute', 'Brush', 'Penguin', - 'Megaphone', 'Corn', 'Lettuce', 'Garlic', 'Swan', 'Helicopter', 'Green Onion', 'Sandwich', 'Nuts', - 'Speed Limit Sign', 'Induction Cooker', 'Broom', 'Trombone', 'Plum', 'Rickshaw', 'Goldfish', 'Kiwi fruit', - 'Router/modem', 'Poker Card', 'Toaster', 'Shrimp', 'Sushi', 'Cheese', 'Notepaper', 'Cherry', 'Pliers', 'CD', - 'Pasta', 'Hammer', 'Cue', 'Avocado', 'Hamimelon', 'Flask', 'Mushroom', 'Screwdriver', 'Soap', 'Recorder', - 'Bear', 'Eggplant', 'Board Eraser', 'Coconut', 'Tape Measure/Ruler', 'Pig', 'Showerhead', 'Globe', 'Chips', - 'Steak', 'Crosswalk Sign', 'Stapler', 'Camel', 'Formula 1', 'Pomegranate', 'Dishwasher', 'Crab', - 'Hoverboard', 'Meat ball', 'Rice Cooker', 'Tuba', 'Calculator', 'Papaya', 'Antelope', 'Parrot', 'Seal', - 'Butterfly', 'Dumbbell', 'Donkey', 'Lion', 'Urinal', 'Dolphin', 'Electric Drill', 'Hair Dryer', 'Egg tart', - 'Jellyfish', 'Treadmill', 'Lighter', 'Grapefruit', 'Game board', 'Mop', 'Radish', 'Baozi', 'Target', 'French', - 'Spring Rolls', 'Monkey', 'Rabbit', 'Pencil Case', 'Yak', 'Red Cabbage', 'Binoculars', 'Asparagus', 'Barbell', - 'Scallop', 'Noddles', 'Comb', 'Dumpling', 'Oyster', 'Table Tennis paddle', 'Cosmetics Brush/Eyeliner Pencil', - 'Chainsaw', 'Eraser', 'Lobster', 'Durian', 'Okra', 'Lipstick', 'Cosmetics Mirror', 'Curling', 'Table Tennis'] +names: + 0: Person + 1: Sneakers + 2: Chair + 3: Other Shoes + 4: Hat + 5: Car + 6: Lamp + 7: Glasses + 8: Bottle + 9: Desk + 10: Cup + 11: Street Lights + 12: Cabinet/shelf + 13: Handbag/Satchel + 14: Bracelet + 15: Plate + 16: Picture/Frame + 17: Helmet + 18: Book + 19: Gloves + 20: Storage box + 21: Boat + 22: Leather Shoes + 23: Flower + 24: Bench + 25: Potted Plant + 26: Bowl/Basin + 27: Flag + 28: Pillow + 29: Boots + 30: Vase + 31: Microphone + 32: Necklace + 33: Ring + 34: SUV + 35: Wine Glass + 36: Belt + 37: Monitor/TV + 38: Backpack + 39: Umbrella + 40: Traffic Light + 41: Speaker + 42: Watch + 43: Tie + 44: Trash bin Can + 45: Slippers + 46: Bicycle + 47: Stool + 48: Barrel/bucket + 49: Van + 50: Couch + 51: Sandals + 52: Basket + 53: Drum + 54: Pen/Pencil + 55: Bus + 56: Wild Bird + 57: High Heels + 58: Motorcycle + 59: Guitar + 60: Carpet + 61: Cell Phone + 62: Bread + 63: Camera + 64: Canned + 65: Truck + 66: Traffic cone + 67: Cymbal + 68: Lifesaver + 69: Towel + 70: Stuffed Toy + 71: Candle + 72: Sailboat + 73: Laptop + 74: Awning + 75: Bed + 76: Faucet + 77: Tent + 78: Horse + 79: Mirror + 80: Power outlet + 81: Sink + 82: Apple + 83: Air Conditioner + 84: Knife + 85: Hockey Stick + 86: Paddle + 87: Pickup Truck + 88: Fork + 89: Traffic Sign + 90: Balloon + 91: Tripod + 92: Dog + 93: Spoon + 94: Clock + 95: Pot + 96: Cow + 97: Cake + 98: Dinning Table + 99: Sheep + 100: Hanger + 101: Blackboard/Whiteboard + 102: Napkin + 103: Other Fish + 104: Orange/Tangerine + 105: Toiletry + 106: Keyboard + 107: Tomato + 108: Lantern + 109: Machinery Vehicle + 110: Fan + 111: Green Vegetables + 112: Banana + 113: Baseball Glove + 114: Airplane + 115: Mouse + 116: Train + 117: Pumpkin + 118: Soccer + 119: Skiboard + 120: Luggage + 121: Nightstand + 122: Tea pot + 123: Telephone + 124: Trolley + 125: Head Phone + 126: Sports Car + 127: Stop Sign + 128: Dessert + 129: Scooter + 130: Stroller + 131: Crane + 132: Remote + 133: Refrigerator + 134: Oven + 135: Lemon + 136: Duck + 137: Baseball Bat + 138: Surveillance Camera + 139: Cat + 140: Jug + 141: Broccoli + 142: Piano + 143: Pizza + 144: Elephant + 145: Skateboard + 146: Surfboard + 147: Gun + 148: Skating and Skiing shoes + 149: Gas stove + 150: Donut + 151: Bow Tie + 152: Carrot + 153: Toilet + 154: Kite + 155: Strawberry + 156: Other Balls + 157: Shovel + 158: Pepper + 159: Computer Box + 160: Toilet Paper + 161: Cleaning Products + 162: Chopsticks + 163: Microwave + 164: Pigeon + 165: Baseball + 166: Cutting/chopping Board + 167: Coffee Table + 168: Side Table + 169: Scissors + 170: Marker + 171: Pie + 172: Ladder + 173: Snowboard + 174: Cookies + 175: Radiator + 176: Fire Hydrant + 177: Basketball + 178: Zebra + 179: Grape + 180: Giraffe + 181: Potato + 182: Sausage + 183: Tricycle + 184: Violin + 185: Egg + 186: Fire Extinguisher + 187: Candy + 188: Fire Truck + 189: Billiards + 190: Converter + 191: Bathtub + 192: Wheelchair + 193: Golf Club + 194: Briefcase + 195: Cucumber + 196: Cigar/Cigarette + 197: Paint Brush + 198: Pear + 199: Heavy Truck + 200: Hamburger + 201: Extractor + 202: Extension Cord + 203: Tong + 204: Tennis Racket + 205: Folder + 206: American Football + 207: earphone + 208: Mask + 209: Kettle + 210: Tennis + 211: Ship + 212: Swing + 213: Coffee Machine + 214: Slide + 215: Carriage + 216: Onion + 217: Green beans + 218: Projector + 219: Frisbee + 220: Washing Machine/Drying Machine + 221: Chicken + 222: Printer + 223: Watermelon + 224: Saxophone + 225: Tissue + 226: Toothbrush + 227: Ice cream + 228: Hot-air balloon + 229: Cello + 230: French Fries + 231: Scale + 232: Trophy + 233: Cabbage + 234: Hot dog + 235: Blender + 236: Peach + 237: Rice + 238: Wallet/Purse + 239: Volleyball + 240: Deer + 241: Goose + 242: Tape + 243: Tablet + 244: Cosmetics + 245: Trumpet + 246: Pineapple + 247: Golf Ball + 248: Ambulance + 249: Parking meter + 250: Mango + 251: Key + 252: Hurdle + 253: Fishing Rod + 254: Medal + 255: Flute + 256: Brush + 257: Penguin + 258: Megaphone + 259: Corn + 260: Lettuce + 261: Garlic + 262: Swan + 263: Helicopter + 264: Green Onion + 265: Sandwich + 266: Nuts + 267: Speed Limit Sign + 268: Induction Cooker + 269: Broom + 270: Trombone + 271: Plum + 272: Rickshaw + 273: Goldfish + 274: Kiwi fruit + 275: Router/modem + 276: Poker Card + 277: Toaster + 278: Shrimp + 279: Sushi + 280: Cheese + 281: Notepaper + 282: Cherry + 283: Pliers + 284: CD + 285: Pasta + 286: Hammer + 287: Cue + 288: Avocado + 289: Hamimelon + 290: Flask + 291: Mushroom + 292: Screwdriver + 293: Soap + 294: Recorder + 295: Bear + 296: Eggplant + 297: Board Eraser + 298: Coconut + 299: Tape Measure/Ruler + 300: Pig + 301: Showerhead + 302: Globe + 303: Chips + 304: Steak + 305: Crosswalk Sign + 306: Stapler + 307: Camel + 308: Formula 1 + 309: Pomegranate + 310: Dishwasher + 311: Crab + 312: Hoverboard + 313: Meat ball + 314: Rice Cooker + 315: Tuba + 316: Calculator + 317: Papaya + 318: Antelope + 319: Parrot + 320: Seal + 321: Butterfly + 322: Dumbbell + 323: Donkey + 324: Lion + 325: Urinal + 326: Dolphin + 327: Electric Drill + 328: Hair Dryer + 329: Egg tart + 330: Jellyfish + 331: Treadmill + 332: Lighter + 333: Grapefruit + 334: Game board + 335: Mop + 336: Radish + 337: Baozi + 338: Target + 339: French + 340: Spring Rolls + 341: Monkey + 342: Rabbit + 343: Pencil Case + 344: Yak + 345: Red Cabbage + 346: Binoculars + 347: Asparagus + 348: Barbell + 349: Scallop + 350: Noddles + 351: Comb + 352: Dumpling + 353: Oyster + 354: Table Tennis paddle + 355: Cosmetics Brush/Eyeliner Pencil + 356: Chainsaw + 357: Eraser + 358: Lobster + 359: Durian + 360: Okra + 361: Lipstick + 362: Cosmetics Mirror + 363: Curling + 364: Table Tennis # Download script/URL (optional) --------------------------------------------------------------------------------------- download: | - from pycocotools.coco import COCO from tqdm import tqdm - from utils.general import Path, download, np, xyxy2xywhn + from utils.general import Path, check_requirements, download, np, xyxy2xywhn + + check_requirements(('pycocotools>=2.0',)) + from pycocotools.coco import COCO # Make Directories dir = Path(yaml['path']) # dataset root dir diff --git a/data/scripts/download_weights.sh b/data/scripts/download_weights.sh index 50aec183..5e9acc44 100755 --- a/data/scripts/download_weights.sh +++ b/data/scripts/download_weights.sh @@ -1,18 +1,22 @@ #!/bin/bash # YOLOv3 🚀 by Ultralytics, GPL-3.0 license -# Download latest models from https://github.com/ultralytics/yolov3/releases -# Example usage: bash path/to/download_weights.sh +# Download latest models from https://github.com/ultralytics/yolov5/releases +# Example usage: bash data/scripts/download_weights.sh # parent -# └── yolov3 -# ├── yolov3.pt ← downloads here -# ├── yolov3-spp.pt +# └── yolov5 +# ├── yolov5s.pt ← downloads here +# ├── yolov5m.pt # └── ... python - < 1)}, " # add to string # Write results @@ -153,22 +164,23 @@ def run(weights=ROOT / 'yolov3.pt', # model.pt path(s) if save_txt: # Write to file xywh = (xyxy2xywh(torch.tensor(xyxy).view(1, 4)) / gn).view(-1).tolist() # normalized xywh line = (cls, *xywh, conf) if save_conf else (cls, *xywh) # label format - with open(txt_path + '.txt', 'a') as f: + with open(f'{txt_path}.txt', 'a') as f: f.write(('%g ' * len(line)).rstrip() % line + '\n') if save_img or save_crop or view_img: # Add bbox to image c = int(cls) # integer class label = None if hide_labels else (names[c] if hide_conf else f'{names[c]} {conf:.2f}') annotator.box_label(xyxy, label, color=colors(c, True)) - if save_crop: - save_one_box(xyxy, imc, file=save_dir / 'crops' / names[c] / f'{p.stem}.jpg', BGR=True) - - # Print time (inference-only) - LOGGER.info(f'{s}Done. ({t3 - t2:.3f}s)') + if save_crop: + save_one_box(xyxy, imc, file=save_dir / 'crops' / names[c] / f'{p.stem}.jpg', BGR=True) # Stream results im0 = annotator.result() if view_img: + if platform.system() == 'Linux' and p not in windows: + windows.append(p) + cv2.namedWindow(str(p), cv2.WINDOW_NORMAL | cv2.WINDOW_KEEPRATIO) # allow window resize (Linux) + cv2.resizeWindow(str(p), im0.shape[1], im0.shape[0]) cv2.imshow(str(p), im0) cv2.waitKey(1) # 1 millisecond @@ -187,24 +199,32 @@ def run(weights=ROOT / 'yolov3.pt', # model.pt path(s) h = int(vid_cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) else: # stream fps, w, h = 30, im0.shape[1], im0.shape[0] - save_path += '.mp4' + save_path = str(Path(save_path).with_suffix('.mp4')) # force *.mp4 suffix on results videos vid_writer[i] = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (w, h)) vid_writer[i].write(im0) + # Print time (inference-only) + LOGGER.info(f"{s}{'' if len(det) else '(no detections), '}{dt[1].dt * 1E3:.1f}ms") + # Print results - t = tuple(x / seen * 1E3 for x in dt) # speeds per image + t = tuple(x.t / seen * 1E3 for x in dt) # speeds per image LOGGER.info(f'Speed: %.1fms pre-process, %.1fms inference, %.1fms NMS per image at shape {(1, 3, *imgsz)}' % t) if save_txt or save_img: s = f"\n{len(list(save_dir.glob('labels/*.txt')))} labels saved to {save_dir / 'labels'}" if save_txt else '' LOGGER.info(f"Results saved to {colorstr('bold', save_dir)}{s}") if update: - strip_optimizer(weights) # update model (to fix SourceChangeWarning) + strip_optimizer(weights[0]) # update model (to fix SourceChangeWarning) def parse_opt(): parser = argparse.ArgumentParser() - parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'yolov3.pt', help='model path(s)') - parser.add_argument('--source', type=str, default=ROOT / 'data/images', help='file/dir/URL/glob, 0 for webcam') + parser.add_argument('--weights', + nargs='+', + type=str, + default=ROOT / 'yolov3-tiny.pt', + help='model path or triton URL') + parser.add_argument('--source', type=str, default=ROOT / 'data/images', help='file/dir/URL/glob/screen/0(webcam)') + parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='(optional) dataset.yaml path') parser.add_argument('--imgsz', '--img', '--img-size', nargs='+', type=int, default=[640], help='inference size h,w') parser.add_argument('--conf-thres', type=float, default=0.25, help='confidence threshold') parser.add_argument('--iou-thres', type=float, default=0.45, help='NMS IoU threshold') @@ -228,9 +248,10 @@ def parse_opt(): parser.add_argument('--hide-conf', default=False, action='store_true', help='hide confidences') parser.add_argument('--half', action='store_true', help='use FP16 half-precision inference') parser.add_argument('--dnn', action='store_true', help='use OpenCV DNN for ONNX inference') + parser.add_argument('--vid-stride', type=int, default=1, help='video frame-rate stride') opt = parser.parse_args() opt.imgsz *= 2 if len(opt.imgsz) == 1 else 1 # expand - print_args(FILE.stem, opt) + print_args(vars(opt)) return opt diff --git a/export.py b/export.py index 00fb8c0c..3d54cbf8 100644 --- a/export.py +++ b/export.py @@ -1,287 +1,538 @@ # YOLOv3 🚀 by Ultralytics, GPL-3.0 license """ -Export a PyTorch model to TorchScript, ONNX, CoreML, TensorFlow (saved_model, pb, TFLite, TF.js,) formats -TensorFlow exports authored by https://github.com/zldrobit +Export a YOLOv3 PyTorch model to other formats. TensorFlow exports authored by https://github.com/zldrobit + +Format | `export.py --include` | Model +--- | --- | --- +PyTorch | - | yolov5s.pt +TorchScript | `torchscript` | yolov5s.torchscript +ONNX | `onnx` | yolov5s.onnx +OpenVINO | `openvino` | yolov5s_openvino_model/ +TensorRT | `engine` | yolov5s.engine +CoreML | `coreml` | yolov5s.mlmodel +TensorFlow SavedModel | `saved_model` | yolov5s_saved_model/ +TensorFlow GraphDef | `pb` | yolov5s.pb +TensorFlow Lite | `tflite` | yolov5s.tflite +TensorFlow Edge TPU | `edgetpu` | yolov5s_edgetpu.tflite +TensorFlow.js | `tfjs` | yolov5s_web_model/ +PaddlePaddle | `paddle` | yolov5s_paddle_model/ + +Requirements: + $ pip install -r requirements.txt coremltools onnx onnx-simplifier onnxruntime openvino-dev tensorflow-cpu # CPU + $ pip install -r requirements.txt coremltools onnx onnx-simplifier onnxruntime-gpu openvino-dev tensorflow # GPU Usage: - $ python path/to/export.py --weights yolov3.pt --include torchscript onnx coreml saved_model pb tflite tfjs + $ python export.py --weights yolov5s.pt --include torchscript onnx openvino engine coreml tflite ... Inference: - $ python path/to/detect.py --weights yolov3.pt - yolov3.onnx (must export with --dynamic) - yolov3_saved_model - yolov3.pb - yolov3.tflite + $ python detect.py --weights yolov5s.pt # PyTorch + yolov5s.torchscript # TorchScript + yolov5s.onnx # ONNX Runtime or OpenCV DNN with --dnn + yolov5s_openvino_model # OpenVINO + yolov5s.engine # TensorRT + yolov5s.mlmodel # CoreML (macOS-only) + yolov5s_saved_model # TensorFlow SavedModel + yolov5s.pb # TensorFlow GraphDef + yolov5s.tflite # TensorFlow Lite + yolov5s_edgetpu.tflite # TensorFlow Edge TPU + yolov5s_paddle_model # PaddlePaddle TensorFlow.js: $ cd .. && git clone https://github.com/zldrobit/tfjs-yolov5-example.git && cd tfjs-yolov5-example $ npm install - $ ln -s ../../yolov5/yolov3_web_model public/yolov3_web_model + $ ln -s ../../yolov5/yolov5s_web_model public/yolov5s_web_model $ npm start """ import argparse +import contextlib import json import os +import platform +import re import subprocess import sys import time +import warnings from pathlib import Path +import pandas as pd import torch -import torch.nn as nn from torch.utils.mobile_optimizer import optimize_for_mobile FILE = Path(__file__).resolve() -ROOT = FILE.parents[0] # root directory +ROOT = FILE.parents[0] # YOLOv3 root directory if str(ROOT) not in sys.path: sys.path.append(str(ROOT)) # add ROOT to PATH -ROOT = Path(os.path.relpath(ROOT, Path.cwd())) # relative +if platform.system() != 'Windows': + ROOT = Path(os.path.relpath(ROOT, Path.cwd())) # relative -from models.common import Conv from models.experimental import attempt_load -from models.yolo import Detect -from utils.activations import SiLU -from utils.datasets import LoadImages -from utils.general import (LOGGER, check_dataset, check_img_size, check_requirements, colorstr, file_size, print_args, - url2file) -from utils.torch_utils import select_device +from models.yolo import ClassificationModel, Detect, DetectionModel, SegmentationModel +from utils.dataloaders import LoadImages +from utils.general import (LOGGER, Profile, check_dataset, check_img_size, check_requirements, check_version, + check_yaml, colorstr, file_size, get_default_args, print_args, url2file, yaml_save) +from utils.torch_utils import select_device, smart_inference_mode + +MACOS = platform.system() == 'Darwin' # macOS environment +def export_formats(): + # YOLOv3 export formats + x = [ + ['PyTorch', '-', '.pt', True, True], + ['TorchScript', 'torchscript', '.torchscript', True, True], + ['ONNX', 'onnx', '.onnx', True, True], + ['OpenVINO', 'openvino', '_openvino_model', True, False], + ['TensorRT', 'engine', '.engine', False, True], + ['CoreML', 'coreml', '.mlmodel', True, False], + ['TensorFlow SavedModel', 'saved_model', '_saved_model', True, True], + ['TensorFlow GraphDef', 'pb', '.pb', True, True], + ['TensorFlow Lite', 'tflite', '.tflite', True, False], + ['TensorFlow Edge TPU', 'edgetpu', '_edgetpu.tflite', False, False], + ['TensorFlow.js', 'tfjs', '_web_model', False, False], + ['PaddlePaddle', 'paddle', '_paddle_model', True, True],] + return pd.DataFrame(x, columns=['Format', 'Argument', 'Suffix', 'CPU', 'GPU']) + + +def try_export(inner_func): + # YOLOv3 export decorator, i..e @try_export + inner_args = get_default_args(inner_func) + + def outer_func(*args, **kwargs): + prefix = inner_args['prefix'] + try: + with Profile() as dt: + f, model = inner_func(*args, **kwargs) + LOGGER.info(f'{prefix} export success ✅ {dt.t:.1f}s, saved as {f} ({file_size(f):.1f} MB)') + return f, model + except Exception as e: + LOGGER.info(f'{prefix} export failure ❌ {dt.t:.1f}s: {e}') + return None, None + + return outer_func + + +@try_export def export_torchscript(model, im, file, optimize, prefix=colorstr('TorchScript:')): - # TorchScript model export + # YOLOv3 TorchScript model export + LOGGER.info(f'\n{prefix} starting export with torch {torch.__version__}...') + f = file.with_suffix('.torchscript') + + ts = torch.jit.trace(model, im, strict=False) + d = {"shape": im.shape, "stride": int(max(model.stride)), "names": model.names} + extra_files = {'config.txt': json.dumps(d)} # torch._C.ExtraFilesMap() + if optimize: # https://pytorch.org/tutorials/recipes/mobile_interpreter.html + optimize_for_mobile(ts)._save_for_lite_interpreter(str(f), _extra_files=extra_files) + else: + ts.save(str(f), _extra_files=extra_files) + return f, None + + +@try_export +def export_onnx(model, im, file, opset, dynamic, simplify, prefix=colorstr('ONNX:')): + # YOLOv3 ONNX export + check_requirements('onnx>=1.12.0') + import onnx + + LOGGER.info(f'\n{prefix} starting export with onnx {onnx.__version__}...') + f = file.with_suffix('.onnx') + + output_names = ['output0', 'output1'] if isinstance(model, SegmentationModel) else ['output0'] + if dynamic: + dynamic = {'images': {0: 'batch', 2: 'height', 3: 'width'}} # shape(1,3,640,640) + if isinstance(model, SegmentationModel): + dynamic['output0'] = {0: 'batch', 1: 'anchors'} # shape(1,25200,85) + dynamic['output1'] = {0: 'batch', 2: 'mask_height', 3: 'mask_width'} # shape(1,32,160,160) + elif isinstance(model, DetectionModel): + dynamic['output0'] = {0: 'batch', 1: 'anchors'} # shape(1,25200,85) + + torch.onnx.export( + model.cpu() if dynamic else model, # --dynamic only compatible with cpu + im.cpu() if dynamic else im, + f, + verbose=False, + opset_version=opset, + do_constant_folding=True, # WARNING: DNN inference with torch>=1.12 may require do_constant_folding=False + input_names=['images'], + output_names=output_names, + dynamic_axes=dynamic or None) + + # Checks + model_onnx = onnx.load(f) # load onnx model + onnx.checker.check_model(model_onnx) # check onnx model + + # Metadata + d = {'stride': int(max(model.stride)), 'names': model.names} + for k, v in d.items(): + meta = model_onnx.metadata_props.add() + meta.key, meta.value = k, str(v) + onnx.save(model_onnx, f) + + # Simplify + if simplify: + try: + cuda = torch.cuda.is_available() + check_requirements(('onnxruntime-gpu' if cuda else 'onnxruntime', 'onnx-simplifier>=0.4.1')) + import onnxsim + + LOGGER.info(f'{prefix} simplifying with onnx-simplifier {onnxsim.__version__}...') + model_onnx, check = onnxsim.simplify(model_onnx) + assert check, 'assert check failed' + onnx.save(model_onnx, f) + except Exception as e: + LOGGER.info(f'{prefix} simplifier failure: {e}') + return f, model_onnx + + +@try_export +def export_openvino(file, metadata, half, prefix=colorstr('OpenVINO:')): + # YOLOv3 OpenVINO export + check_requirements('openvino-dev') # requires openvino-dev: https://pypi.org/project/openvino-dev/ + import openvino.inference_engine as ie + + LOGGER.info(f'\n{prefix} starting export with openvino {ie.__version__}...') + f = str(file).replace('.pt', f'_openvino_model{os.sep}') + + cmd = f"mo --input_model {file.with_suffix('.onnx')} --output_dir {f} --data_type {'FP16' if half else 'FP32'}" + subprocess.run(cmd.split(), check=True, env=os.environ) # export + yaml_save(Path(f) / file.with_suffix('.yaml').name, metadata) # add metadata.yaml + return f, None + + +@try_export +def export_paddle(model, im, file, metadata, prefix=colorstr('PaddlePaddle:')): + # YOLOv3 Paddle export + check_requirements(('paddlepaddle', 'x2paddle')) + import x2paddle + from x2paddle.convert import pytorch2paddle + + LOGGER.info(f'\n{prefix} starting export with X2Paddle {x2paddle.__version__}...') + f = str(file).replace('.pt', f'_paddle_model{os.sep}') + + pytorch2paddle(module=model, save_dir=f, jit_type='trace', input_examples=[im]) # export + yaml_save(Path(f) / file.with_suffix('.yaml').name, metadata) # add metadata.yaml + return f, None + + +@try_export +def export_coreml(model, im, file, int8, half, prefix=colorstr('CoreML:')): + # YOLOv3 CoreML export + check_requirements('coremltools') + import coremltools as ct + + LOGGER.info(f'\n{prefix} starting export with coremltools {ct.__version__}...') + f = file.with_suffix('.mlmodel') + + ts = torch.jit.trace(model, im, strict=False) # TorchScript model + ct_model = ct.convert(ts, inputs=[ct.ImageType('image', shape=im.shape, scale=1 / 255, bias=[0, 0, 0])]) + bits, mode = (8, 'kmeans_lut') if int8 else (16, 'linear') if half else (32, None) + if bits < 32: + if MACOS: # quantization only supported on macOS + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", category=DeprecationWarning) # suppress numpy==1.20 float warning + ct_model = ct.models.neural_network.quantization_utils.quantize_weights(ct_model, bits, mode) + else: + print(f'{prefix} quantization only supported on macOS, skipping...') + ct_model.save(f) + return f, ct_model + + +@try_export +def export_engine(model, im, file, half, dynamic, simplify, workspace=4, verbose=False, prefix=colorstr('TensorRT:')): + # YOLOv3 TensorRT export https://developer.nvidia.com/tensorrt + assert im.device.type != 'cpu', 'export running on CPU but must be on GPU, i.e. `python export.py --device 0`' try: - LOGGER.info(f'\n{prefix} starting export with torch {torch.__version__}...') - f = file.with_suffix('.torchscript.pt') + import tensorrt as trt + except Exception: + if platform.system() == 'Linux': + check_requirements('nvidia-tensorrt', cmds='-U --index-url https://pypi.ngc.nvidia.com') + import tensorrt as trt - ts = torch.jit.trace(model, im, strict=False) - d = {"shape": im.shape, "stride": int(max(model.stride)), "names": model.names} - extra_files = {'config.txt': json.dumps(d)} # torch._C.ExtraFilesMap() - (optimize_for_mobile(ts) if optimize else ts).save(f, _extra_files=extra_files) + if trt.__version__[0] == '7': # TensorRT 7 handling https://github.com/ultralytics/yolov5/issues/6012 + grid = model.model[-1].anchor_grid + model.model[-1].anchor_grid = [a[..., :1, :1, :] for a in grid] + export_onnx(model, im, file, 12, dynamic, simplify) # opset 12 + model.model[-1].anchor_grid = grid + else: # TensorRT >= 8 + check_version(trt.__version__, '8.0.0', hard=True) # require tensorrt>=8.0.0 + export_onnx(model, im, file, 12, dynamic, simplify) # opset 12 + onnx = file.with_suffix('.onnx') - LOGGER.info(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)') - except Exception as e: - LOGGER.info(f'{prefix} export failure: {e}') + LOGGER.info(f'\n{prefix} starting export with TensorRT {trt.__version__}...') + assert onnx.exists(), f'failed to export ONNX file: {onnx}' + f = file.with_suffix('.engine') # TensorRT engine file + logger = trt.Logger(trt.Logger.INFO) + if verbose: + logger.min_severity = trt.Logger.Severity.VERBOSE + + builder = trt.Builder(logger) + config = builder.create_builder_config() + config.max_workspace_size = workspace * 1 << 30 + # config.set_memory_pool_limit(trt.MemoryPoolType.WORKSPACE, workspace << 30) # fix TRT 8.4 deprecation notice + + flag = (1 << int(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH)) + network = builder.create_network(flag) + parser = trt.OnnxParser(network, logger) + if not parser.parse_from_file(str(onnx)): + raise RuntimeError(f'failed to load ONNX file: {onnx}') + + inputs = [network.get_input(i) for i in range(network.num_inputs)] + outputs = [network.get_output(i) for i in range(network.num_outputs)] + for inp in inputs: + LOGGER.info(f'{prefix} input "{inp.name}" with shape{inp.shape} {inp.dtype}') + for out in outputs: + LOGGER.info(f'{prefix} output "{out.name}" with shape{out.shape} {out.dtype}') + + if dynamic: + if im.shape[0] <= 1: + LOGGER.warning(f"{prefix} WARNING ⚠️ --dynamic model requires maximum --batch-size argument") + profile = builder.create_optimization_profile() + for inp in inputs: + profile.set_shape(inp.name, (1, *im.shape[1:]), (max(1, im.shape[0] // 2), *im.shape[1:]), im.shape) + config.add_optimization_profile(profile) + + LOGGER.info(f'{prefix} building FP{16 if builder.platform_has_fast_fp16 and half else 32} engine as {f}') + if builder.platform_has_fast_fp16 and half: + config.set_flag(trt.BuilderFlag.FP16) + with builder.build_engine(network, config) as engine, open(f, 'wb') as t: + t.write(engine.serialize()) + return f, None -def export_onnx(model, im, file, opset, train, dynamic, simplify, prefix=colorstr('ONNX:')): - # ONNX export - try: - check_requirements(('onnx',)) - import onnx - - LOGGER.info(f'\n{prefix} starting export with onnx {onnx.__version__}...') - f = file.with_suffix('.onnx') - - torch.onnx.export(model, im, f, verbose=False, opset_version=opset, - training=torch.onnx.TrainingMode.TRAINING if train else torch.onnx.TrainingMode.EVAL, - do_constant_folding=not train, - input_names=['images'], - output_names=['output'], - dynamic_axes={'images': {0: 'batch', 2: 'height', 3: 'width'}, # shape(1,3,640,640) - 'output': {0: 'batch', 1: 'anchors'} # shape(1,25200,85) - } if dynamic else None) - - # Checks - model_onnx = onnx.load(f) # load onnx model - onnx.checker.check_model(model_onnx) # check onnx model - # LOGGER.info(onnx.helper.printable_graph(model_onnx.graph)) # print - - # Simplify - if simplify: - try: - check_requirements(('onnx-simplifier',)) - import onnxsim - - LOGGER.info(f'{prefix} simplifying with onnx-simplifier {onnxsim.__version__}...') - model_onnx, check = onnxsim.simplify( - model_onnx, - dynamic_input_shape=dynamic, - input_shapes={'images': list(im.shape)} if dynamic else None) - assert check, 'assert check failed' - onnx.save(model_onnx, f) - except Exception as e: - LOGGER.info(f'{prefix} simplifier failure: {e}') - LOGGER.info(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)') - LOGGER.info(f"{prefix} run --dynamic ONNX model inference with: 'python detect.py --weights {f}'") - except Exception as e: - LOGGER.info(f'{prefix} export failure: {e}') - - -def export_coreml(model, im, file, prefix=colorstr('CoreML:')): - # CoreML export - ct_model = None - try: - check_requirements(('coremltools',)) - import coremltools as ct - - LOGGER.info(f'\n{prefix} starting export with coremltools {ct.__version__}...') - f = file.with_suffix('.mlmodel') - - model.train() # CoreML exports should be placed in model.train() mode - ts = torch.jit.trace(model, im, strict=False) # TorchScript model - ct_model = ct.convert(ts, inputs=[ct.ImageType('image', shape=im.shape, scale=1 / 255, bias=[0, 0, 0])]) - ct_model.save(f) - - LOGGER.info(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)') - except Exception as e: - LOGGER.info(f'\n{prefix} export failure: {e}') - - return ct_model - - -def export_saved_model(model, im, file, dynamic, - tf_nms=False, agnostic_nms=False, topk_per_class=100, topk_all=100, iou_thres=0.45, - conf_thres=0.25, prefix=colorstr('TensorFlow saved_model:')): - # TensorFlow saved_model export - keras_model = None +@try_export +def export_saved_model(model, + im, + file, + dynamic, + tf_nms=False, + agnostic_nms=False, + topk_per_class=100, + topk_all=100, + iou_thres=0.45, + conf_thres=0.25, + keras=False, + prefix=colorstr('TensorFlow SavedModel:')): + # YOLOv3 TensorFlow SavedModel export try: import tensorflow as tf - from tensorflow import keras + except Exception: + check_requirements(f"tensorflow{'' if torch.cuda.is_available() else '-macos' if MACOS else '-cpu'}") + import tensorflow as tf + from tensorflow.python.framework.convert_to_constants import convert_variables_to_constants_v2 - from models.tf import TFDetect, TFModel + from models.tf import TFModel - LOGGER.info(f'\n{prefix} starting export with tensorflow {tf.__version__}...') - f = str(file).replace('.pt', '_saved_model') - batch_size, ch, *imgsz = list(im.shape) # BCHW + LOGGER.info(f'\n{prefix} starting export with tensorflow {tf.__version__}...') + f = str(file).replace('.pt', '_saved_model') + batch_size, ch, *imgsz = list(im.shape) # BCHW - tf_model = TFModel(cfg=model.yaml, model=model, nc=model.nc, imgsz=imgsz) - im = tf.zeros((batch_size, *imgsz, 3)) # BHWC order for TensorFlow - y = tf_model.predict(im, tf_nms, agnostic_nms, topk_per_class, topk_all, iou_thres, conf_thres) - inputs = keras.Input(shape=(*imgsz, 3), batch_size=None if dynamic else batch_size) - outputs = tf_model.predict(inputs, tf_nms, agnostic_nms, topk_per_class, topk_all, iou_thres, conf_thres) - keras_model = keras.Model(inputs=inputs, outputs=outputs) - keras_model.trainable = False - keras_model.summary() + tf_model = TFModel(cfg=model.yaml, model=model, nc=model.nc, imgsz=imgsz) + im = tf.zeros((batch_size, *imgsz, ch)) # BHWC order for TensorFlow + _ = tf_model.predict(im, tf_nms, agnostic_nms, topk_per_class, topk_all, iou_thres, conf_thres) + inputs = tf.keras.Input(shape=(*imgsz, ch), batch_size=None if dynamic else batch_size) + outputs = tf_model.predict(inputs, tf_nms, agnostic_nms, topk_per_class, topk_all, iou_thres, conf_thres) + keras_model = tf.keras.Model(inputs=inputs, outputs=outputs) + keras_model.trainable = False + keras_model.summary() + if keras: keras_model.save(f, save_format='tf') - - LOGGER.info(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)') - except Exception as e: - LOGGER.info(f'\n{prefix} export failure: {e}') - - return keras_model - - -def export_pb(keras_model, im, file, prefix=colorstr('TensorFlow GraphDef:')): - # TensorFlow GraphDef *.pb export https://github.com/leimao/Frozen_Graph_TensorFlow - try: - import tensorflow as tf - from tensorflow.python.framework.convert_to_constants import convert_variables_to_constants_v2 - - LOGGER.info(f'\n{prefix} starting export with tensorflow {tf.__version__}...') - f = file.with_suffix('.pb') - + else: + spec = tf.TensorSpec(keras_model.inputs[0].shape, keras_model.inputs[0].dtype) m = tf.function(lambda x: keras_model(x)) # full model - m = m.get_concrete_function(tf.TensorSpec(keras_model.inputs[0].shape, keras_model.inputs[0].dtype)) + m = m.get_concrete_function(spec) frozen_func = convert_variables_to_constants_v2(m) - frozen_func.graph.as_graph_def() - tf.io.write_graph(graph_or_graph_def=frozen_func.graph, logdir=str(f.parent), name=f.name, as_text=False) - - LOGGER.info(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)') - except Exception as e: - LOGGER.info(f'\n{prefix} export failure: {e}') + tfm = tf.Module() + tfm.__call__ = tf.function(lambda x: frozen_func(x)[:4] if tf_nms else frozen_func(x), [spec]) + tfm.__call__(im) + tf.saved_model.save(tfm, + f, + options=tf.saved_model.SaveOptions(experimental_custom_gradients=False) if check_version( + tf.__version__, '2.6') else tf.saved_model.SaveOptions()) + return f, keras_model -def export_tflite(keras_model, im, file, int8, data, ncalib, prefix=colorstr('TensorFlow Lite:')): - # TensorFlow Lite export - try: - import tensorflow as tf +@try_export +def export_pb(keras_model, file, prefix=colorstr('TensorFlow GraphDef:')): + # YOLOv3 TensorFlow GraphDef *.pb export https://github.com/leimao/Frozen_Graph_TensorFlow + import tensorflow as tf + from tensorflow.python.framework.convert_to_constants import convert_variables_to_constants_v2 + LOGGER.info(f'\n{prefix} starting export with tensorflow {tf.__version__}...') + f = file.with_suffix('.pb') + + m = tf.function(lambda x: keras_model(x)) # full model + m = m.get_concrete_function(tf.TensorSpec(keras_model.inputs[0].shape, keras_model.inputs[0].dtype)) + frozen_func = convert_variables_to_constants_v2(m) + frozen_func.graph.as_graph_def() + tf.io.write_graph(graph_or_graph_def=frozen_func.graph, logdir=str(f.parent), name=f.name, as_text=False) + return f, None + + +@try_export +def export_tflite(keras_model, im, file, int8, data, nms, agnostic_nms, prefix=colorstr('TensorFlow Lite:')): + # YOLOv3 TensorFlow Lite export + import tensorflow as tf + + LOGGER.info(f'\n{prefix} starting export with tensorflow {tf.__version__}...') + batch_size, ch, *imgsz = list(im.shape) # BCHW + f = str(file).replace('.pt', '-fp16.tflite') + + converter = tf.lite.TFLiteConverter.from_keras_model(keras_model) + converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS] + converter.target_spec.supported_types = [tf.float16] + converter.optimizations = [tf.lite.Optimize.DEFAULT] + if int8: from models.tf import representative_dataset_gen + dataset = LoadImages(check_dataset(check_yaml(data))['train'], img_size=imgsz, auto=False) + converter.representative_dataset = lambda: representative_dataset_gen(dataset, ncalib=100) + converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8] + converter.target_spec.supported_types = [] + converter.inference_input_type = tf.uint8 # or tf.int8 + converter.inference_output_type = tf.uint8 # or tf.int8 + converter.experimental_new_quantizer = True + f = str(file).replace('.pt', '-int8.tflite') + if nms or agnostic_nms: + converter.target_spec.supported_ops.append(tf.lite.OpsSet.SELECT_TF_OPS) - LOGGER.info(f'\n{prefix} starting export with tensorflow {tf.__version__}...') - batch_size, ch, *imgsz = list(im.shape) # BCHW - f = str(file).replace('.pt', '-fp16.tflite') - - converter = tf.lite.TFLiteConverter.from_keras_model(keras_model) - converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS] - converter.target_spec.supported_types = [tf.float16] - converter.optimizations = [tf.lite.Optimize.DEFAULT] - if int8: - dataset = LoadImages(check_dataset(data)['train'], img_size=imgsz, auto=False) # representative data - converter.representative_dataset = lambda: representative_dataset_gen(dataset, ncalib) - converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8] - converter.target_spec.supported_types = [] - converter.inference_input_type = tf.uint8 # or tf.int8 - converter.inference_output_type = tf.uint8 # or tf.int8 - converter.experimental_new_quantizer = False - f = str(file).replace('.pt', '-int8.tflite') - - tflite_model = converter.convert() - open(f, "wb").write(tflite_model) - LOGGER.info(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)') - - except Exception as e: - LOGGER.info(f'\n{prefix} export failure: {e}') + tflite_model = converter.convert() + open(f, "wb").write(tflite_model) + return f, None -def export_tfjs(keras_model, im, file, prefix=colorstr('TensorFlow.js:')): - # TensorFlow.js export - try: - check_requirements(('tensorflowjs',)) - import re +@try_export +def export_edgetpu(file, prefix=colorstr('Edge TPU:')): + # YOLOv3 Edge TPU export https://coral.ai/docs/edgetpu/models-intro/ + cmd = 'edgetpu_compiler --version' + help_url = 'https://coral.ai/docs/edgetpu/compiler/' + assert platform.system() == 'Linux', f'export only supported on Linux. See {help_url}' + if subprocess.run(f'{cmd} >/dev/null', shell=True).returncode != 0: + LOGGER.info(f'\n{prefix} export requires Edge TPU compiler. Attempting install from {help_url}') + sudo = subprocess.run('sudo --version >/dev/null', shell=True).returncode == 0 # sudo installed on system + for c in ( + 'curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -', + 'echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list', + 'sudo apt-get update', 'sudo apt-get install edgetpu-compiler'): + subprocess.run(c if sudo else c.replace('sudo ', ''), shell=True, check=True) + ver = subprocess.run(cmd, shell=True, capture_output=True, check=True).stdout.decode().split()[-1] - import tensorflowjs as tfjs + LOGGER.info(f'\n{prefix} starting export with Edge TPU compiler {ver}...') + f = str(file).replace('.pt', '-int8_edgetpu.tflite') # Edge TPU model + f_tfl = str(file).replace('.pt', '-int8.tflite') # TFLite model - LOGGER.info(f'\n{prefix} starting export with tensorflowjs {tfjs.__version__}...') - f = str(file).replace('.pt', '_web_model') # js dir - f_pb = file.with_suffix('.pb') # *.pb path - f_json = f + '/model.json' # *.json path - - cmd = f"tensorflowjs_converter --input_format=tf_frozen_model " \ - f"--output_node_names='Identity,Identity_1,Identity_2,Identity_3' {f_pb} {f}" - subprocess.run(cmd, shell=True) - - json = open(f_json).read() - with open(f_json, 'w') as j: # sort JSON Identity_* in ascending order - subst = re.sub( - r'{"outputs": {"Identity.?.?": {"name": "Identity.?.?"}, ' - r'"Identity.?.?": {"name": "Identity.?.?"}, ' - r'"Identity.?.?": {"name": "Identity.?.?"}, ' - r'"Identity.?.?": {"name": "Identity.?.?"}}}', - r'{"outputs": {"Identity": {"name": "Identity"}, ' - r'"Identity_1": {"name": "Identity_1"}, ' - r'"Identity_2": {"name": "Identity_2"}, ' - r'"Identity_3": {"name": "Identity_3"}}}', - json) - j.write(subst) - - LOGGER.info(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)') - except Exception as e: - LOGGER.info(f'\n{prefix} export failure: {e}') + cmd = f"edgetpu_compiler -s -d -k 10 --out_dir {file.parent} {f_tfl}" + subprocess.run(cmd.split(), check=True) + return f, None -@torch.no_grad() -def run(data=ROOT / 'data/coco128.yaml', # 'dataset.yaml path' - weights=ROOT / 'yolov3.pt', # weights path +@try_export +def export_tfjs(file, int8, prefix=colorstr('TensorFlow.js:')): + # YOLOv3 TensorFlow.js export + check_requirements('tensorflowjs') + import tensorflowjs as tfjs + + LOGGER.info(f'\n{prefix} starting export with tensorflowjs {tfjs.__version__}...') + f = str(file).replace('.pt', '_web_model') # js dir + f_pb = file.with_suffix('.pb') # *.pb path + f_json = f'{f}/model.json' # *.json path + + int8_export = ' --quantize_uint8 ' if int8 else '' + + cmd = f'tensorflowjs_converter --input_format=tf_frozen_model {int8_export}' \ + f'--output_node_names=Identity,Identity_1,Identity_2,Identity_3 {f_pb} {f}' + subprocess.run(cmd.split()) + + json = Path(f_json).read_text() + with open(f_json, 'w') as j: # sort JSON Identity_* in ascending order + subst = re.sub( + r'{"outputs": {"Identity.?.?": {"name": "Identity.?.?"}, ' + r'"Identity.?.?": {"name": "Identity.?.?"}, ' + r'"Identity.?.?": {"name": "Identity.?.?"}, ' + r'"Identity.?.?": {"name": "Identity.?.?"}}}', r'{"outputs": {"Identity": {"name": "Identity"}, ' + r'"Identity_1": {"name": "Identity_1"}, ' + r'"Identity_2": {"name": "Identity_2"}, ' + r'"Identity_3": {"name": "Identity_3"}}}', json) + j.write(subst) + return f, None + + +def add_tflite_metadata(file, metadata, num_outputs): + # Add metadata to *.tflite models per https://www.tensorflow.org/lite/models/convert/metadata + with contextlib.suppress(ImportError): + # check_requirements('tflite_support') + from tflite_support import flatbuffers + from tflite_support import metadata as _metadata + from tflite_support import metadata_schema_py_generated as _metadata_fb + + tmp_file = Path('/tmp/meta.txt') + with open(tmp_file, 'w') as meta_f: + meta_f.write(str(metadata)) + + model_meta = _metadata_fb.ModelMetadataT() + label_file = _metadata_fb.AssociatedFileT() + label_file.name = tmp_file.name + model_meta.associatedFiles = [label_file] + + subgraph = _metadata_fb.SubGraphMetadataT() + subgraph.inputTensorMetadata = [_metadata_fb.TensorMetadataT()] + subgraph.outputTensorMetadata = [_metadata_fb.TensorMetadataT()] * num_outputs + model_meta.subgraphMetadata = [subgraph] + + b = flatbuffers.Builder(0) + b.Finish(model_meta.Pack(b), _metadata.MetadataPopulator.METADATA_FILE_IDENTIFIER) + metadata_buf = b.Output() + + populator = _metadata.MetadataPopulator.with_model_file(file) + populator.load_metadata_buffer(metadata_buf) + populator.load_associated_files([str(tmp_file)]) + populator.populate() + tmp_file.unlink() + + +@smart_inference_mode() +def run( + data=ROOT / 'data/coco128.yaml', # 'dataset.yaml path' + weights=ROOT / 'yolov5s.pt', # weights path imgsz=(640, 640), # image (height, width) batch_size=1, # batch size device='cpu', # cuda device, i.e. 0 or 0,1,2,3 or cpu - include=('torchscript', 'onnx', 'coreml'), # include formats + include=('torchscript', 'onnx'), # include formats half=False, # FP16 half-precision export - inplace=False, # set Detect() inplace=True - train=False, # model.train() mode + inplace=False, # set YOLOv3 Detect() inplace=True + keras=False, # use Keras optimize=False, # TorchScript: optimize for mobile int8=False, # CoreML/TF INT8 quantization - dynamic=False, # ONNX/TF: dynamic axes + dynamic=False, # ONNX/TF/TensorRT: dynamic axes simplify=False, # ONNX: simplify model opset=12, # ONNX: opset version + verbose=False, # TensorRT: verbose log + workspace=4, # TensorRT: workspace size (GB) + nms=False, # TF: add NMS to model + agnostic_nms=False, # TF: add agnostic NMS to model topk_per_class=100, # TF.js NMS: topk per class to keep topk_all=100, # TF.js NMS: topk for all classes to keep iou_thres=0.45, # TF.js NMS: IoU threshold - conf_thres=0.25 # TF.js NMS: confidence threshold - ): + conf_thres=0.25, # TF.js NMS: confidence threshold +): t = time.time() - include = [x.lower() for x in include] - tf_exports = list(x in include for x in ('saved_model', 'pb', 'tflite', 'tfjs')) # TensorFlow exports - imgsz *= 2 if len(imgsz) == 1 else 1 # expand - file = Path(url2file(weights) if str(weights).startswith(('http:/', 'https:/')) else weights) + include = [x.lower() for x in include] # to lowercase + fmts = tuple(export_formats()['Argument'][1:]) # --include arguments + flags = [x in include for x in fmts] + assert sum(flags) == len(include), f'ERROR: Invalid --include {include}, valid --include arguments are {fmts}' + jit, onnx, xml, engine, coreml, saved_model, pb, tflite, edgetpu, tfjs, paddle = flags # export booleans + file = Path(url2file(weights) if str(weights).startswith(('http:/', 'https:/')) else weights) # PyTorch weights # Load PyTorch model device = select_device(device) - assert not (device.type == 'cpu' and half), '--half only compatible with GPU export, i.e. use --device 0' - model = attempt_load(weights, map_location=device, inplace=True, fuse=True) # load FP32 model - nc, names = model.nc, model.names # number of classes, class names + if half: + assert device.type != 'cpu' or coreml, '--half only compatible with GPU export, i.e. use --device 0' + assert not dynamic, '--half not compatible with --dynamic, i.e. use either --half or --dynamic but not both' + model = attempt_load(weights, device=device, inplace=True, fuse=True) # load FP32 model + + # Checks + imgsz *= 2 if len(imgsz) == 1 else 1 # expand + if optimize: + assert device.type == 'cpu', '--optimize not compatible with cuda devices, i.e. use --device cpu' # Input gs = int(max(model.stride)) # grid size (max stride) @@ -289,79 +540,114 @@ def run(data=ROOT / 'data/coco128.yaml', # 'dataset.yaml path' im = torch.zeros(batch_size, 3, *imgsz).to(device) # image size(1,3,320,192) BCHW iDetection # Update model - if half: - im, model = im.half(), model.half() # to FP16 - model.train() if train else model.eval() # training mode = no Detect() layer grid construction + model.eval() for k, m in model.named_modules(): - if isinstance(m, Conv): # assign export-friendly activations - if isinstance(m.act, nn.SiLU): - m.act = SiLU() - elif isinstance(m, Detect): + if isinstance(m, Detect): m.inplace = inplace - m.onnx_dynamic = dynamic - # m.forward = m.forward_export # assign forward (optional) + m.dynamic = dynamic + m.export = True for _ in range(2): y = model(im) # dry runs - LOGGER.info(f"\n{colorstr('PyTorch:')} starting from {file} ({file_size(file):.1f} MB)") + if half and not coreml: + im, model = im.half(), model.half() # to FP16 + shape = tuple((y[0] if isinstance(y, tuple) else y).shape) # model output shape + metadata = {'stride': int(max(model.stride)), 'names': model.names} # model metadata + LOGGER.info(f"\n{colorstr('PyTorch:')} starting from {file} with output shape {shape} ({file_size(file):.1f} MB)") # Exports - if 'torchscript' in include: - export_torchscript(model, im, file, optimize) - if 'onnx' in include: - export_onnx(model, im, file, opset, train, dynamic, simplify) - if 'coreml' in include: - export_coreml(model, im, file) - - # TensorFlow Exports - if any(tf_exports): - pb, tflite, tfjs = tf_exports[1:] - assert not (tflite and tfjs), 'TFLite and TF.js models must be exported separately, please pass only one type.' - model = export_saved_model(model.cpu(), im, file, dynamic, tf_nms=tfjs, agnostic_nms=tfjs, - topk_per_class=topk_per_class, topk_all=topk_all, conf_thres=conf_thres, - iou_thres=iou_thres) # keras model + f = [''] * len(fmts) # exported filenames + warnings.filterwarnings(action='ignore', category=torch.jit.TracerWarning) # suppress TracerWarning + if jit: # TorchScript + f[0], _ = export_torchscript(model, im, file, optimize) + if engine: # TensorRT required before ONNX + f[1], _ = export_engine(model, im, file, half, dynamic, simplify, workspace, verbose) + if onnx or xml: # OpenVINO requires ONNX + f[2], _ = export_onnx(model, im, file, opset, dynamic, simplify) + if xml: # OpenVINO + f[3], _ = export_openvino(file, metadata, half) + if coreml: # CoreML + f[4], _ = export_coreml(model, im, file, int8, half) + if any((saved_model, pb, tflite, edgetpu, tfjs)): # TensorFlow formats + assert not tflite or not tfjs, 'TFLite and TF.js models must be exported separately, please pass only one type.' + assert not isinstance(model, ClassificationModel), 'ClassificationModel export to TF formats not yet supported.' + f[5], s_model = export_saved_model(model.cpu(), + im, + file, + dynamic, + tf_nms=nms or agnostic_nms or tfjs, + agnostic_nms=agnostic_nms or tfjs, + topk_per_class=topk_per_class, + topk_all=topk_all, + iou_thres=iou_thres, + conf_thres=conf_thres, + keras=keras) if pb or tfjs: # pb prerequisite to tfjs - export_pb(model, im, file) - if tflite: - export_tflite(model, im, file, int8=int8, data=data, ncalib=100) + f[6], _ = export_pb(s_model, file) + if tflite or edgetpu: + f[7], _ = export_tflite(s_model, im, file, int8 or edgetpu, data=data, nms=nms, agnostic_nms=agnostic_nms) + if edgetpu: + f[8], _ = export_edgetpu(file) + add_tflite_metadata(f[8] or f[7], metadata, num_outputs=len(s_model.outputs)) if tfjs: - export_tfjs(model, im, file) + f[9], _ = export_tfjs(file, int8) + if paddle: # PaddlePaddle + f[10], _ = export_paddle(model, im, file, metadata) # Finish - LOGGER.info(f'\nExport complete ({time.time() - t:.2f}s)' - f"\nResults saved to {colorstr('bold', file.parent.resolve())}" - f'\nVisualize with https://netron.app') + f = [str(x) for x in f if x] # filter out '' and None + if any(f): + cls, det, seg = (isinstance(model, x) for x in (ClassificationModel, DetectionModel, SegmentationModel)) # type + det &= not seg # segmentation models inherit from SegmentationModel(DetectionModel) + dir = Path('segment' if seg else 'classify' if cls else '') + h = '--half' if half else '' # --half FP16 inference arg + s = "# WARNING ⚠️ ClassificationModel not yet supported for PyTorch Hub AutoShape inference" if cls else \ + "# WARNING ⚠️ SegmentationModel not yet supported for PyTorch Hub AutoShape inference" if seg else '' + LOGGER.info(f'\nExport complete ({time.time() - t:.1f}s)' + f"\nResults saved to {colorstr('bold', file.parent.resolve())}" + f"\nDetect: python {dir / ('detect.py' if det else 'predict.py')} --weights {f[-1]} {h}" + f"\nValidate: python {dir / 'val.py'} --weights {f[-1]} {h}" + f"\nPyTorch Hub: model = torch.hub.load('ultralytics/yolov5', 'custom', '{f[-1]}') {s}" + f"\nVisualize: https://netron.app") + return f # return list of exported files/dirs -def parse_opt(): +def parse_opt(known=False): parser = argparse.ArgumentParser() parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='dataset.yaml path') - parser.add_argument('--weights', type=str, default=ROOT / 'yolov3.pt', help='weights path') + parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'yolov3-tiny.pt', help='model.pt path(s)') parser.add_argument('--imgsz', '--img', '--img-size', nargs='+', type=int, default=[640, 640], help='image (h, w)') parser.add_argument('--batch-size', type=int, default=1, help='batch size') parser.add_argument('--device', default='cpu', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') parser.add_argument('--half', action='store_true', help='FP16 half-precision export') - parser.add_argument('--inplace', action='store_true', help='set YOLOv3 Detect() inplace=True') - parser.add_argument('--train', action='store_true', help='model.train() mode') + parser.add_argument('--inplace', action='store_true', help='set Detect() inplace=True') + parser.add_argument('--keras', action='store_true', help='TF: use Keras') parser.add_argument('--optimize', action='store_true', help='TorchScript: optimize for mobile') parser.add_argument('--int8', action='store_true', help='CoreML/TF INT8 quantization') - parser.add_argument('--dynamic', action='store_true', help='ONNX/TF: dynamic axes') + parser.add_argument('--dynamic', action='store_true', help='ONNX/TF/TensorRT: dynamic axes') parser.add_argument('--simplify', action='store_true', help='ONNX: simplify model') - parser.add_argument('--opset', type=int, default=13, help='ONNX: opset version') + parser.add_argument('--opset', type=int, default=17, help='ONNX: opset version') + parser.add_argument('--verbose', action='store_true', help='TensorRT: verbose log') + parser.add_argument('--workspace', type=int, default=4, help='TensorRT: workspace size (GB)') + parser.add_argument('--nms', action='store_true', help='TF: add NMS to model') + parser.add_argument('--agnostic-nms', action='store_true', help='TF: add agnostic NMS to model') parser.add_argument('--topk-per-class', type=int, default=100, help='TF.js NMS: topk per class to keep') parser.add_argument('--topk-all', type=int, default=100, help='TF.js NMS: topk for all classes to keep') parser.add_argument('--iou-thres', type=float, default=0.45, help='TF.js NMS: IoU threshold') parser.add_argument('--conf-thres', type=float, default=0.25, help='TF.js NMS: confidence threshold') - parser.add_argument('--include', nargs='+', - default=['torchscript', 'onnx'], - help='available formats are (torchscript, onnx, coreml, saved_model, pb, tflite, tfjs)') - opt = parser.parse_args() - print_args(FILE.stem, opt) + parser.add_argument( + '--include', + nargs='+', + default=['torchscript'], + help='torchscript, onnx, openvino, engine, coreml, saved_model, pb, tflite, edgetpu, tfjs, paddle') + opt = parser.parse_known_args()[0] if known else parser.parse_args() + print_args(vars(opt)) return opt def main(opt): - run(**vars(opt)) + for opt.weights in (opt.weights if isinstance(opt.weights, list) else [opt.weights]): + run(**vars(opt)) if __name__ == "__main__": diff --git a/hubconf.py b/hubconf.py index d610aa36..b1c45e7b 100644 --- a/hubconf.py +++ b/hubconf.py @@ -1,52 +1,66 @@ # YOLOv3 🚀 by Ultralytics, GPL-3.0 license """ -PyTorch Hub models https://pytorch.org/hub/ultralytics_yolov5/ +PyTorch Hub models https://pytorch.org/hub/ultralytics_yolov5 Usage: import torch - model = torch.hub.load('ultralytics/yolov3', 'yolov3') + model = torch.hub.load('ultralytics/yolov5', 'yolov5s') # official model + model = torch.hub.load('ultralytics/yolov5:master', 'yolov5s') # from branch + model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s.pt') # custom/local model + model = torch.hub.load('.', 'custom', 'yolov5s.pt', source='local') # local repo """ import torch def _create(name, pretrained=True, channels=3, classes=80, autoshape=True, verbose=True, device=None): - """Creates a specified model + """Creates or loads a YOLOv3 model Arguments: - name (str): name of model, i.e. 'yolov3' + name (str): model name 'yolov5s' or path 'path/to/best.pt' pretrained (bool): load pretrained weights into the model channels (int): number of input channels classes (int): number of model classes - autoshape (bool): apply .autoshape() wrapper to model + autoshape (bool): apply YOLOv3 .autoshape() wrapper to model verbose (bool): print all information to screen device (str, torch.device, None): device to use for model parameters Returns: - pytorch model + YOLOv3 model """ from pathlib import Path + from models.common import AutoShape, DetectMultiBackend from models.experimental import attempt_load - from models.yolo import Model + from models.yolo import ClassificationModel, DetectionModel, SegmentationModel from utils.downloads import attempt_download - from utils.general import check_requirements, intersect_dicts, set_logging + from utils.general import LOGGER, check_requirements, intersect_dicts, logging from utils.torch_utils import select_device - file = Path(__file__).resolve() - check_requirements(exclude=('tensorboard', 'thop', 'opencv-python')) - set_logging(verbose=verbose) - - save_dir = Path('') if str(name).endswith('.pt') else file.parent - path = (save_dir / name).with_suffix('.pt') # checkpoint path + if not verbose: + LOGGER.setLevel(logging.WARNING) + check_requirements(exclude=('opencv-python', 'tensorboard', 'thop')) + name = Path(name) + path = name.with_suffix('.pt') if name.suffix == '' and not name.is_dir() else name # checkpoint path try: - device = select_device(('0' if torch.cuda.is_available() else 'cpu') if device is None else device) - + device = select_device(device) if pretrained and channels == 3 and classes == 80: - model = attempt_load(path, map_location=device) # download/load FP32 model + try: + model = DetectMultiBackend(path, device=device, fuse=autoshape) # detection model + if autoshape: + if model.pt and isinstance(model.model, ClassificationModel): + LOGGER.warning('WARNING ⚠️ YOLOv3 ClassificationModel is not yet AutoShape compatible. ' + 'You must pass torch tensors in BCHW to this model, i.e. shape(1,3,224,224).') + elif model.pt and isinstance(model.model, SegmentationModel): + LOGGER.warning('WARNING ⚠️ YOLOv3 SegmentationModel is not yet AutoShape compatible. ' + 'You will not be able to run inference with this model.') + else: + model = AutoShape(model) # for file/URI/PIL/cv2/np inputs and NMS + except Exception: + model = attempt_load(path, device=device, fuse=False) # arbitrary model else: - cfg = list((Path(__file__).parent / 'models').rglob(f'{name}.yaml'))[0] # model.yaml path - model = Model(cfg, channels, classes) # create model + cfg = list((Path(__file__).parent / 'models').rglob(f'{path.stem}.yaml'))[0] # model.yaml path + model = DetectionModel(cfg, channels, classes) # create model if pretrained: ckpt = torch.load(attempt_download(path), map_location=device) # load csd = ckpt['model'].float().state_dict() # checkpoint state_dict as FP32 @@ -54,54 +68,102 @@ def _create(name, pretrained=True, channels=3, classes=80, autoshape=True, verbo model.load_state_dict(csd, strict=False) # load if len(ckpt['model'].names) == classes: model.names = ckpt['model'].names # set class names attribute - if autoshape: - model = model.autoshape() # for file/URI/PIL/cv2/np inputs and NMS + if not verbose: + LOGGER.setLevel(logging.INFO) # reset to default return model.to(device) except Exception as e: help_url = 'https://github.com/ultralytics/yolov5/issues/36' - s = 'Cache may be out of date, try `force_reload=True`. See %s for help.' % help_url + s = f'{e}. Cache may be out of date, try `force_reload=True` or see {help_url} for help.' raise Exception(s) from e -def custom(path='path/to/model.pt', autoshape=True, verbose=True, device=None): - # custom or local model - return _create(path, autoshape=autoshape, verbose=verbose, device=device) +def custom(path='path/to/model.pt', autoshape=True, _verbose=True, device=None): + # YOLOv3 custom or local model + return _create(path, autoshape=autoshape, verbose=_verbose, device=device) -def yolov3(pretrained=True, channels=3, classes=80, autoshape=True, verbose=True, device=None): - # YOLOv3 model https://github.com/ultralytics/yolov3 - return _create('yolov3', pretrained, channels, classes, autoshape, verbose, device) +def yolov5n(pretrained=True, channels=3, classes=80, autoshape=True, _verbose=True, device=None): + # YOLOv3-nano model https://github.com/ultralytics/yolov5 + return _create('yolov5n', pretrained, channels, classes, autoshape, _verbose, device) -def yolov3_spp(pretrained=True, channels=3, classes=80, autoshape=True, verbose=True, device=None): - # YOLOv3-SPP model https://github.com/ultralytics/yolov3 - return _create('yolov3-spp', pretrained, channels, classes, autoshape, verbose, device) +def yolov5s(pretrained=True, channels=3, classes=80, autoshape=True, _verbose=True, device=None): + # YOLOv3-small model https://github.com/ultralytics/yolov5 + return _create('yolov5s', pretrained, channels, classes, autoshape, _verbose, device) -def yolov3_tiny(pretrained=True, channels=3, classes=80, autoshape=True, verbose=True, device=None): - # YOLOv3-tiny model https://github.com/ultralytics/yolov3 - return _create('yolov3-tiny', pretrained, channels, classes, autoshape, verbose, device) +def yolov5m(pretrained=True, channels=3, classes=80, autoshape=True, _verbose=True, device=None): + # YOLOv3-medium model https://github.com/ultralytics/yolov5 + return _create('yolov5m', pretrained, channels, classes, autoshape, _verbose, device) + + +def yolov5l(pretrained=True, channels=3, classes=80, autoshape=True, _verbose=True, device=None): + # YOLOv3-large model https://github.com/ultralytics/yolov5 + return _create('yolov5l', pretrained, channels, classes, autoshape, _verbose, device) + + +def yolov5x(pretrained=True, channels=3, classes=80, autoshape=True, _verbose=True, device=None): + # YOLOv3-xlarge model https://github.com/ultralytics/yolov5 + return _create('yolov5x', pretrained, channels, classes, autoshape, _verbose, device) + + +def yolov5n6(pretrained=True, channels=3, classes=80, autoshape=True, _verbose=True, device=None): + # YOLOv3-nano-P6 model https://github.com/ultralytics/yolov5 + return _create('yolov5n6', pretrained, channels, classes, autoshape, _verbose, device) + + +def yolov5s6(pretrained=True, channels=3, classes=80, autoshape=True, _verbose=True, device=None): + # YOLOv3-small-P6 model https://github.com/ultralytics/yolov5 + return _create('yolov5s6', pretrained, channels, classes, autoshape, _verbose, device) + + +def yolov5m6(pretrained=True, channels=3, classes=80, autoshape=True, _verbose=True, device=None): + # YOLOv3-medium-P6 model https://github.com/ultralytics/yolov5 + return _create('yolov5m6', pretrained, channels, classes, autoshape, _verbose, device) + + +def yolov5l6(pretrained=True, channels=3, classes=80, autoshape=True, _verbose=True, device=None): + # YOLOv3-large-P6 model https://github.com/ultralytics/yolov5 + return _create('yolov5l6', pretrained, channels, classes, autoshape, _verbose, device) + + +def yolov5x6(pretrained=True, channels=3, classes=80, autoshape=True, _verbose=True, device=None): + # YOLOv3-xlarge-P6 model https://github.com/ultralytics/yolov5 + return _create('yolov5x6', pretrained, channels, classes, autoshape, _verbose, device) if __name__ == '__main__': - model = _create(name='yolov3-tiny', pretrained=True, channels=3, classes=80, autoshape=True, verbose=True) # pretrained - # model = custom(path='path/to/model.pt') # custom - - # Verify inference + import argparse from pathlib import Path - import cv2 import numpy as np from PIL import Image - imgs = ['data/images/zidane.jpg', # filename - Path('data/images/zidane.jpg'), # Path - 'https://ultralytics.com/images/zidane.jpg', # URI - cv2.imread('data/images/bus.jpg')[:, :, ::-1], # OpenCV - Image.open('data/images/bus.jpg'), # PIL - np.zeros((320, 640, 3))] # numpy + from utils.general import cv2, print_args - results = model(imgs) # batched inference + # Argparser + parser = argparse.ArgumentParser() + parser.add_argument('--model', type=str, default='yolov5s', help='model name') + opt = parser.parse_args() + print_args(vars(opt)) + + # Model + model = _create(name=opt.model, pretrained=True, channels=3, classes=80, autoshape=True, verbose=True) + # model = custom(path='path/to/model.pt') # custom + + # Images + imgs = [ + 'data/images/zidane.jpg', # filename + Path('data/images/zidane.jpg'), # Path + 'https://ultralytics.com/images/zidane.jpg', # URI + cv2.imread('data/images/bus.jpg')[:, :, ::-1], # OpenCV + Image.open('data/images/bus.jpg'), # PIL + np.zeros((320, 640, 3))] # numpy + + # Inference + results = model(imgs, size=320) # batched inference + + # Results results.print() results.save() diff --git a/models/common.py b/models/common.py index a76fc628..efb66817 100644 --- a/models/common.py +++ b/models/common.py @@ -3,12 +3,17 @@ Common modules """ +import ast +import contextlib import json import math import platform import warnings +import zipfile +from collections import OrderedDict, namedtuple from copy import copy from pathlib import Path +from urllib.parse import urlparse import cv2 import numpy as np @@ -16,30 +21,37 @@ import pandas as pd import requests import torch import torch.nn as nn +from IPython.display import display from PIL import Image from torch.cuda import amp -from utils.datasets import exif_transpose, letterbox -from utils.general import (LOGGER, check_requirements, check_suffix, colorstr, increment_path, make_divisible, - non_max_suppression, scale_coords, xywh2xyxy, xyxy2xywh) +from utils import TryExcept +from utils.dataloaders import exif_transpose, letterbox +from utils.general import (LOGGER, ROOT, Profile, check_requirements, check_suffix, check_version, colorstr, + increment_path, is_notebook, make_divisible, non_max_suppression, scale_boxes, xywh2xyxy, + xyxy2xywh, yaml_load) from utils.plots import Annotator, colors, save_one_box -from utils.torch_utils import time_sync +from utils.torch_utils import copy_attr, smart_inference_mode -def autopad(k, p=None): # kernel, padding - # Pad to 'same' +def autopad(k, p=None, d=1): # kernel, padding, dilation + # Pad to 'same' shape outputs + if d > 1: + k = d * (k - 1) + 1 if isinstance(k, int) else [d * (x - 1) + 1 for x in k] # actual kernel-size if p is None: p = k // 2 if isinstance(k, int) else [x // 2 for x in k] # auto-pad return p class Conv(nn.Module): - # Standard convolution - def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True): # ch_in, ch_out, kernel, stride, padding, groups + # Standard convolution with args(ch_in, ch_out, kernel, stride, padding, groups, dilation, activation) + default_act = nn.SiLU() # default activation + + def __init__(self, c1, c2, k=1, s=1, p=None, g=1, d=1, act=True): super().__init__() - self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p), groups=g, bias=False) + self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p, d), groups=g, dilation=d, bias=False) self.bn = nn.BatchNorm2d(c2) - self.act = nn.SiLU() if act is True else (act if isinstance(act, nn.Module) else nn.Identity()) + self.act = self.default_act if act is True else act if isinstance(act, nn.Module) else nn.Identity() def forward(self, x): return self.act(self.bn(self.conv(x))) @@ -49,9 +61,15 @@ class Conv(nn.Module): class DWConv(Conv): - # Depth-wise convolution class - def __init__(self, c1, c2, k=1, s=1, act=True): # ch_in, ch_out, kernel, stride, padding, groups - super().__init__(c1, c2, k, s, g=math.gcd(c1, c2), act=act) + # Depth-wise convolution + def __init__(self, c1, c2, k=1, s=1, d=1, act=True): # ch_in, ch_out, kernel, stride, dilation, activation + super().__init__(c1, c2, k, s, g=math.gcd(c1, c2), d=d, act=act) + + +class DWConvTranspose2d(nn.ConvTranspose2d): + # Depth-wise transpose convolution + def __init__(self, c1, c2, k=1, s=1, p1=0, p2=0): # ch_in, ch_out, kernel, stride, padding, padding_out + super().__init__(c1, c2, k, s, p1, p2, groups=math.gcd(c1, c2)) class TransformerLayer(nn.Module): @@ -86,8 +104,8 @@ class TransformerBlock(nn.Module): if self.conv is not None: x = self.conv(x) b, _, w, h = x.shape - p = x.flatten(2).unsqueeze(0).transpose(0, 3).squeeze(3) - return self.tr(p + self.linear(p)).unsqueeze(3).transpose(0, 3).reshape(b, self.c2, w, h) + p = x.flatten(2).permute(2, 0, 1) + return self.tr(p + self.linear(p)).permute(1, 2, 0).reshape(b, self.c2, w, h) class Bottleneck(nn.Module): @@ -119,7 +137,21 @@ class BottleneckCSP(nn.Module): def forward(self, x): y1 = self.cv3(self.m(self.cv1(x))) y2 = self.cv2(x) - return self.cv4(self.act(self.bn(torch.cat((y1, y2), dim=1)))) + return self.cv4(self.act(self.bn(torch.cat((y1, y2), 1)))) + + +class CrossConv(nn.Module): + # Cross Convolution Downsample + def __init__(self, c1, c2, k=3, s=1, g=1, e=1.0, shortcut=False): + # ch_in, ch_out, kernel, stride, groups, expansion, shortcut + super().__init__() + c_ = int(c2 * e) # hidden channels + self.cv1 = Conv(c1, c_, (1, k), (1, s)) + self.cv2 = Conv(c_, c2, (k, 1), (s, 1), g=g) + self.add = shortcut and c1 == c2 + + def forward(self, x): + return x + self.cv2(self.cv1(x)) if self.add else self.cv2(self.cv1(x)) class C3(nn.Module): @@ -129,12 +161,19 @@ class C3(nn.Module): c_ = int(c2 * e) # hidden channels self.cv1 = Conv(c1, c_, 1, 1) self.cv2 = Conv(c1, c_, 1, 1) - self.cv3 = Conv(2 * c_, c2, 1) # act=FReLU(c2) + self.cv3 = Conv(2 * c_, c2, 1) # optional act=FReLU(c2) self.m = nn.Sequential(*(Bottleneck(c_, c_, shortcut, g, e=1.0) for _ in range(n))) - # self.m = nn.Sequential(*[CrossConv(c_, c_, 3, 1, g, 1.0, shortcut) for _ in range(n)]) def forward(self, x): - return self.cv3(torch.cat((self.m(self.cv1(x)), self.cv2(x)), dim=1)) + return self.cv3(torch.cat((self.m(self.cv1(x)), self.cv2(x)), 1)) + + +class C3x(C3): + # C3 module with cross-convolutions + def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): + super().__init__(c1, c2, n, shortcut, g, e) + c_ = int(c2 * e) + self.m = nn.Sequential(*(CrossConv(c_, c_, 3, 1, g, 1.0, shortcut) for _ in range(n))) class C3TR(C3): @@ -178,7 +217,7 @@ class SPP(nn.Module): class SPPF(nn.Module): - # Spatial Pyramid Pooling - Fast (SPPF) layer for by Glenn Jocher + # Spatial Pyramid Pooling - Fast (SPPF) layer for YOLOv3 by Glenn Jocher def __init__(self, c1, c2, k=5): # equivalent to SPP(k=(5, 9, 13)) super().__init__() c_ = c1 // 2 # hidden channels @@ -192,18 +231,18 @@ class SPPF(nn.Module): warnings.simplefilter('ignore') # suppress torch 1.9.0 max_pool2d() warning y1 = self.m(x) y2 = self.m(y1) - return self.cv2(torch.cat([x, y1, y2, self.m(y2)], 1)) + return self.cv2(torch.cat((x, y1, y2, self.m(y2)), 1)) class Focus(nn.Module): # Focus wh information into c-space def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True): # ch_in, ch_out, kernel, stride, padding, groups super().__init__() - self.conv = Conv(c1 * 4, c2, k, s, p, g, act) + self.conv = Conv(c1 * 4, c2, k, s, p, g, act=act) # self.contract = Contract(gain=2) def forward(self, x): # x(b,c,w,h) -> y(b,4c,w/2,h/2) - return self.conv(torch.cat([x[..., ::2, ::2], x[..., 1::2, ::2], x[..., ::2, 1::2], x[..., 1::2, 1::2]], 1)) + return self.conv(torch.cat((x[..., ::2, ::2], x[..., 1::2, ::2], x[..., ::2, 1::2], x[..., 1::2, 1::2]), 1)) # return self.conv(self.contract(x)) @@ -212,12 +251,12 @@ class GhostConv(nn.Module): def __init__(self, c1, c2, k=1, s=1, g=1, act=True): # ch_in, ch_out, kernel, stride, groups super().__init__() c_ = c2 // 2 # hidden channels - self.cv1 = Conv(c1, c_, k, s, None, g, act) - self.cv2 = Conv(c_, c_, 5, 1, None, c_, act) + self.cv1 = Conv(c1, c_, k, s, None, g, act=act) + self.cv2 = Conv(c_, c_, 5, 1, None, c_, act=act) def forward(self, x): y = self.cv1(x) - return torch.cat([y, self.cv2(y)], 1) + return torch.cat((y, self.cv2(y)), 1) class GhostBottleneck(nn.Module): @@ -225,11 +264,12 @@ class GhostBottleneck(nn.Module): def __init__(self, c1, c2, k=3, s=1): # ch_in, ch_out, kernel, stride super().__init__() c_ = c2 // 2 - self.conv = nn.Sequential(GhostConv(c1, c_, 1, 1), # pw - DWConv(c_, c_, k, s, act=False) if s == 2 else nn.Identity(), # dw - GhostConv(c_, c2, 1, 1, act=False)) # pw-linear - self.shortcut = nn.Sequential(DWConv(c1, c1, k, s, act=False), - Conv(c1, c2, 1, 1, act=False)) if s == 2 else nn.Identity() + self.conv = nn.Sequential( + GhostConv(c1, c_, 1, 1), # pw + DWConv(c_, c_, k, s, act=False) if s == 2 else nn.Identity(), # dw + GhostConv(c_, c2, 1, 1, act=False)) # pw-linear + self.shortcut = nn.Sequential(DWConv(c1, c1, k, s, act=False), Conv(c1, c2, 1, 1, + act=False)) if s == 2 else nn.Identity() def forward(self, x): return self.conv(x) + self.shortcut(x) @@ -274,159 +314,350 @@ class Concat(nn.Module): class DetectMultiBackend(nn.Module): - # MultiBackend class for python inference on various backends - def __init__(self, weights='yolov3.pt', device=None, dnn=True): + # YOLOv3 MultiBackend class for python inference on various backends + def __init__(self, weights='yolov5s.pt', device=torch.device('cpu'), dnn=False, data=None, fp16=False, fuse=True): # Usage: - # PyTorch: weights = *.pt - # TorchScript: *.torchscript.pt - # CoreML: *.mlmodel - # TensorFlow: *_saved_model - # TensorFlow: *.pb - # TensorFlow Lite: *.tflite - # ONNX Runtime: *.onnx - # OpenCV DNN: *.onnx with dnn=True + # PyTorch: weights = *.pt + # TorchScript: *.torchscript + # ONNX Runtime: *.onnx + # ONNX OpenCV DNN: *.onnx --dnn + # OpenVINO: *_openvino_model + # CoreML: *.mlmodel + # TensorRT: *.engine + # TensorFlow SavedModel: *_saved_model + # TensorFlow GraphDef: *.pb + # TensorFlow Lite: *.tflite + # TensorFlow Edge TPU: *_edgetpu.tflite + # PaddlePaddle: *_paddle_model + from models.experimental import attempt_download, attempt_load # scoped to avoid circular import + super().__init__() w = str(weights[0] if isinstance(weights, list) else weights) - suffix, suffixes = Path(w).suffix.lower(), ['.pt', '.onnx', '.tflite', '.pb', '', '.mlmodel'] - check_suffix(w, suffixes) # check weights have acceptable suffix - pt, onnx, tflite, pb, saved_model, coreml = (suffix == x for x in suffixes) # backend booleans - jit = pt and 'torchscript' in w.lower() - stride, names = 64, [f'class{i}' for i in range(1000)] # assign defaults + pt, jit, onnx, xml, engine, coreml, saved_model, pb, tflite, edgetpu, tfjs, paddle, triton = self._model_type(w) + fp16 &= pt or jit or onnx or engine # FP16 + nhwc = coreml or saved_model or pb or tflite or edgetpu # BHWC formats (vs torch BCWH) + stride = 32 # default stride + cuda = torch.cuda.is_available() and device.type != 'cpu' # use CUDA + if not (pt or triton): + w = attempt_download(w) # download if not local - if jit: # TorchScript + if pt: # PyTorch + model = attempt_load(weights if isinstance(weights, list) else w, device=device, inplace=True, fuse=fuse) + stride = max(int(model.stride.max()), 32) # model stride + names = model.module.names if hasattr(model, 'module') else model.names # get class names + model.half() if fp16 else model.float() + self.model = model # explicitly assign for to(), cpu(), cuda(), half() + elif jit: # TorchScript LOGGER.info(f'Loading {w} for TorchScript inference...') extra_files = {'config.txt': ''} # model metadata - model = torch.jit.load(w, _extra_files=extra_files) - if extra_files['config.txt']: - d = json.loads(extra_files['config.txt']) # extra_files dict + model = torch.jit.load(w, _extra_files=extra_files, map_location=device) + model.half() if fp16 else model.float() + if extra_files['config.txt']: # load metadata dict + d = json.loads(extra_files['config.txt'], + object_hook=lambda d: {int(k) if k.isdigit() else k: v + for k, v in d.items()}) stride, names = int(d['stride']), d['names'] - elif pt: # PyTorch - from models.experimental import attempt_load # scoped to avoid circular import - model = torch.jit.load(w) if 'torchscript' in w else attempt_load(weights, map_location=device) - stride = int(model.stride.max()) # model stride - names = model.module.names if hasattr(model, 'module') else model.names # get class names - elif coreml: # CoreML *.mlmodel - import coremltools as ct - model = ct.models.MLModel(w) elif dnn: # ONNX OpenCV DNN LOGGER.info(f'Loading {w} for ONNX OpenCV DNN inference...') - check_requirements(('opencv-python>=4.5.4',)) + check_requirements('opencv-python>=4.5.4') net = cv2.dnn.readNetFromONNX(w) elif onnx: # ONNX Runtime LOGGER.info(f'Loading {w} for ONNX Runtime inference...') - cuda = torch.cuda.is_available() check_requirements(('onnx', 'onnxruntime-gpu' if cuda else 'onnxruntime')) import onnxruntime providers = ['CUDAExecutionProvider', 'CPUExecutionProvider'] if cuda else ['CPUExecutionProvider'] session = onnxruntime.InferenceSession(w, providers=providers) - else: # TensorFlow model (TFLite, pb, saved_model) + output_names = [x.name for x in session.get_outputs()] + meta = session.get_modelmeta().custom_metadata_map # metadata + if 'stride' in meta: + stride, names = int(meta['stride']), eval(meta['names']) + elif xml: # OpenVINO + LOGGER.info(f'Loading {w} for OpenVINO inference...') + check_requirements('openvino') # requires openvino-dev: https://pypi.org/project/openvino-dev/ + from openvino.runtime import Core, Layout, get_batch + ie = Core() + if not Path(w).is_file(): # if not *.xml + w = next(Path(w).glob('*.xml')) # get *.xml file from *_openvino_model dir + network = ie.read_model(model=w, weights=Path(w).with_suffix('.bin')) + if network.get_parameters()[0].get_layout().empty: + network.get_parameters()[0].set_layout(Layout("NCHW")) + batch_dim = get_batch(network) + if batch_dim.is_static: + batch_size = batch_dim.get_length() + executable_network = ie.compile_model(network, device_name="CPU") # device_name="MYRIAD" for Intel NCS2 + stride, names = self._load_metadata(Path(w).with_suffix('.yaml')) # load metadata + elif engine: # TensorRT + LOGGER.info(f'Loading {w} for TensorRT inference...') + import tensorrt as trt # https://developer.nvidia.com/nvidia-tensorrt-download + check_version(trt.__version__, '7.0.0', hard=True) # require tensorrt>=7.0.0 + if device.type == 'cpu': + device = torch.device('cuda:0') + Binding = namedtuple('Binding', ('name', 'dtype', 'shape', 'data', 'ptr')) + logger = trt.Logger(trt.Logger.INFO) + with open(w, 'rb') as f, trt.Runtime(logger) as runtime: + model = runtime.deserialize_cuda_engine(f.read()) + context = model.create_execution_context() + bindings = OrderedDict() + output_names = [] + fp16 = False # default updated below + dynamic = False + for i in range(model.num_bindings): + name = model.get_binding_name(i) + dtype = trt.nptype(model.get_binding_dtype(i)) + if model.binding_is_input(i): + if -1 in tuple(model.get_binding_shape(i)): # dynamic + dynamic = True + context.set_binding_shape(i, tuple(model.get_profile_shape(0, i)[2])) + if dtype == np.float16: + fp16 = True + else: # output + output_names.append(name) + shape = tuple(context.get_binding_shape(i)) + im = torch.from_numpy(np.empty(shape, dtype=dtype)).to(device) + bindings[name] = Binding(name, dtype, shape, im, int(im.data_ptr())) + binding_addrs = OrderedDict((n, d.ptr) for n, d in bindings.items()) + batch_size = bindings['images'].shape[0] # if dynamic, this is instead max batch size + elif coreml: # CoreML + LOGGER.info(f'Loading {w} for CoreML inference...') + import coremltools as ct + model = ct.models.MLModel(w) + elif saved_model: # TF SavedModel + LOGGER.info(f'Loading {w} for TensorFlow SavedModel inference...') + import tensorflow as tf + keras = False # assume TF1 saved_model + model = tf.keras.models.load_model(w) if keras else tf.saved_model.load(w) + elif pb: # GraphDef https://www.tensorflow.org/guide/migrate#a_graphpb_or_graphpbtxt + LOGGER.info(f'Loading {w} for TensorFlow GraphDef inference...') import tensorflow as tf - if pb: # https://www.tensorflow.org/guide/migrate#a_graphpb_or_graphpbtxt - def wrap_frozen_graph(gd, inputs, outputs): - x = tf.compat.v1.wrap_function(lambda: tf.compat.v1.import_graph_def(gd, name=""), []) # wrapped - return x.prune(tf.nest.map_structure(x.graph.as_graph_element, inputs), - tf.nest.map_structure(x.graph.as_graph_element, outputs)) - LOGGER.info(f'Loading {w} for TensorFlow *.pb inference...') - graph_def = tf.Graph().as_graph_def() - graph_def.ParseFromString(open(w, 'rb').read()) - frozen_func = wrap_frozen_graph(gd=graph_def, inputs="x:0", outputs="Identity:0") - elif saved_model: - LOGGER.info(f'Loading {w} for TensorFlow saved_model inference...') - model = tf.keras.models.load_model(w) - elif tflite: # https://www.tensorflow.org/lite/guide/python#install_tensorflow_lite_for_python - if 'edgetpu' in w.lower(): - LOGGER.info(f'Loading {w} for TensorFlow Edge TPU inference...') - import tflite_runtime.interpreter as tfli - delegate = {'Linux': 'libedgetpu.so.1', # install https://coral.ai/software/#edgetpu-runtime - 'Darwin': 'libedgetpu.1.dylib', - 'Windows': 'edgetpu.dll'}[platform.system()] - interpreter = tfli.Interpreter(model_path=w, experimental_delegates=[tfli.load_delegate(delegate)]) - else: - LOGGER.info(f'Loading {w} for TensorFlow Lite inference...') - interpreter = tf.lite.Interpreter(model_path=w) # load TFLite model - interpreter.allocate_tensors() # allocate - input_details = interpreter.get_input_details() # inputs - output_details = interpreter.get_output_details() # outputs + def wrap_frozen_graph(gd, inputs, outputs): + x = tf.compat.v1.wrap_function(lambda: tf.compat.v1.import_graph_def(gd, name=""), []) # wrapped + ge = x.graph.as_graph_element + return x.prune(tf.nest.map_structure(ge, inputs), tf.nest.map_structure(ge, outputs)) + + def gd_outputs(gd): + name_list, input_list = [], [] + for node in gd.node: # tensorflow.core.framework.node_def_pb2.NodeDef + name_list.append(node.name) + input_list.extend(node.input) + return sorted(f'{x}:0' for x in list(set(name_list) - set(input_list)) if not x.startswith('NoOp')) + + gd = tf.Graph().as_graph_def() # TF GraphDef + with open(w, 'rb') as f: + gd.ParseFromString(f.read()) + frozen_func = wrap_frozen_graph(gd, inputs="x:0", outputs=gd_outputs(gd)) + elif tflite or edgetpu: # https://www.tensorflow.org/lite/guide/python#install_tensorflow_lite_for_python + try: # https://coral.ai/docs/edgetpu/tflite-python/#update-existing-tf-lite-code-for-the-edge-tpu + from tflite_runtime.interpreter import Interpreter, load_delegate + except ImportError: + import tensorflow as tf + Interpreter, load_delegate = tf.lite.Interpreter, tf.lite.experimental.load_delegate, + if edgetpu: # TF Edge TPU https://coral.ai/software/#edgetpu-runtime + LOGGER.info(f'Loading {w} for TensorFlow Lite Edge TPU inference...') + delegate = { + 'Linux': 'libedgetpu.so.1', + 'Darwin': 'libedgetpu.1.dylib', + 'Windows': 'edgetpu.dll'}[platform.system()] + interpreter = Interpreter(model_path=w, experimental_delegates=[load_delegate(delegate)]) + else: # TFLite + LOGGER.info(f'Loading {w} for TensorFlow Lite inference...') + interpreter = Interpreter(model_path=w) # load TFLite model + interpreter.allocate_tensors() # allocate + input_details = interpreter.get_input_details() # inputs + output_details = interpreter.get_output_details() # outputs + # load metadata + with contextlib.suppress(zipfile.BadZipFile): + with zipfile.ZipFile(w, "r") as model: + meta_file = model.namelist()[0] + meta = ast.literal_eval(model.read(meta_file).decode("utf-8")) + stride, names = int(meta['stride']), meta['names'] + elif tfjs: # TF.js + raise NotImplementedError('ERROR: YOLOv3 TF.js inference is not supported') + elif paddle: # PaddlePaddle + LOGGER.info(f'Loading {w} for PaddlePaddle inference...') + check_requirements('paddlepaddle-gpu' if cuda else 'paddlepaddle') + import paddle.inference as pdi + if not Path(w).is_file(): # if not *.pdmodel + w = next(Path(w).rglob('*.pdmodel')) # get *.pdmodel file from *_paddle_model dir + weights = Path(w).with_suffix('.pdiparams') + config = pdi.Config(str(w), str(weights)) + if cuda: + config.enable_use_gpu(memory_pool_init_size_mb=2048, device_id=0) + predictor = pdi.create_predictor(config) + input_handle = predictor.get_input_handle(predictor.get_input_names()[0]) + output_names = predictor.get_output_names() + elif triton: # NVIDIA Triton Inference Server + LOGGER.info(f'Using {w} as Triton Inference Server...') + check_requirements('tritonclient[all]') + from utils.triton import TritonRemoteModel + model = TritonRemoteModel(url=w) + nhwc = model.runtime.startswith("tensorflow") + else: + raise NotImplementedError(f'ERROR: {w} is not a supported format') + + # class names + if 'names' not in locals(): + names = yaml_load(data)['names'] if data else {i: f'class{i}' for i in range(999)} + if names[0] == 'n01440764' and len(names) == 1000: # ImageNet + names = yaml_load(ROOT / 'data/ImageNet.yaml')['names'] # human-readable names + self.__dict__.update(locals()) # assign all variables to self - def forward(self, im, augment=False, visualize=False, val=False): - # MultiBackend inference + def forward(self, im, augment=False, visualize=False): + # YOLOv3 MultiBackend inference b, ch, h, w = im.shape # batch, channel, height, width + if self.fp16 and im.dtype != torch.float16: + im = im.half() # to FP16 + if self.nhwc: + im = im.permute(0, 2, 3, 1) # torch BCHW to numpy BHWC shape(1,320,192,3) + if self.pt: # PyTorch - y = self.model(im) if self.jit else self.model(im, augment=augment, visualize=visualize) - return y if val else y[0] - elif self.coreml: # CoreML *.mlmodel - im = im.permute(0, 2, 3, 1).cpu().numpy() # torch BCHW to numpy BHWC shape(1,320,192,3) + y = self.model(im, augment=augment, visualize=visualize) if augment or visualize else self.model(im) + elif self.jit: # TorchScript + y = self.model(im) + elif self.dnn: # ONNX OpenCV DNN + im = im.cpu().numpy() # torch to numpy + self.net.setInput(im) + y = self.net.forward() + elif self.onnx: # ONNX Runtime + im = im.cpu().numpy() # torch to numpy + y = self.session.run(self.output_names, {self.session.get_inputs()[0].name: im}) + elif self.xml: # OpenVINO + im = im.cpu().numpy() # FP32 + y = list(self.executable_network([im]).values()) + elif self.engine: # TensorRT + if self.dynamic and im.shape != self.bindings['images'].shape: + i = self.model.get_binding_index('images') + self.context.set_binding_shape(i, im.shape) # reshape if dynamic + self.bindings['images'] = self.bindings['images']._replace(shape=im.shape) + for name in self.output_names: + i = self.model.get_binding_index(name) + self.bindings[name].data.resize_(tuple(self.context.get_binding_shape(i))) + s = self.bindings['images'].shape + assert im.shape == s, f"input size {im.shape} {'>' if self.dynamic else 'not equal to'} max model size {s}" + self.binding_addrs['images'] = int(im.data_ptr()) + self.context.execute_v2(list(self.binding_addrs.values())) + y = [self.bindings[x].data for x in sorted(self.output_names)] + elif self.coreml: # CoreML + im = im.cpu().numpy() im = Image.fromarray((im[0] * 255).astype('uint8')) # im = im.resize((192, 320), Image.ANTIALIAS) y = self.model.predict({'image': im}) # coordinates are xywh normalized - box = xywh2xyxy(y['coordinates'] * [[w, h, w, h]]) # xyxy pixels - conf, cls = y['confidence'].max(1), y['confidence'].argmax(1).astype(np.float) - y = np.concatenate((box, conf.reshape(-1, 1), cls.reshape(-1, 1)), 1) - elif self.onnx: # ONNX - im = im.cpu().numpy() # torch to numpy - if self.dnn: # ONNX OpenCV DNN - self.net.setInput(im) - y = self.net.forward() - else: # ONNX Runtime - y = self.session.run([self.session.get_outputs()[0].name], {self.session.get_inputs()[0].name: im})[0] - else: # TensorFlow model (TFLite, pb, saved_model) - im = im.permute(0, 2, 3, 1).cpu().numpy() # torch BCHW to numpy BHWC shape(1,320,192,3) - if self.pb: - y = self.frozen_func(x=self.tf.constant(im)).numpy() - elif self.saved_model: - y = self.model(im, training=False).numpy() - elif self.tflite: - input, output = self.input_details[0], self.output_details[0] + if 'confidence' in y: + box = xywh2xyxy(y['coordinates'] * [[w, h, w, h]]) # xyxy pixels + conf, cls = y['confidence'].max(1), y['confidence'].argmax(1).astype(np.float) + y = np.concatenate((box, conf.reshape(-1, 1), cls.reshape(-1, 1)), 1) + else: + y = list(reversed(y.values())) # reversed for segmentation models (pred, proto) + elif self.paddle: # PaddlePaddle + im = im.cpu().numpy().astype(np.float32) + self.input_handle.copy_from_cpu(im) + self.predictor.run() + y = [self.predictor.get_output_handle(x).copy_to_cpu() for x in self.output_names] + elif self.triton: # NVIDIA Triton Inference Server + y = self.model(im) + else: # TensorFlow (SavedModel, GraphDef, Lite, Edge TPU) + im = im.cpu().numpy() + if self.saved_model: # SavedModel + y = self.model(im, training=False) if self.keras else self.model(im) + elif self.pb: # GraphDef + y = self.frozen_func(x=self.tf.constant(im)) + else: # Lite or Edge TPU + input = self.input_details[0] int8 = input['dtype'] == np.uint8 # is TFLite quantized uint8 model if int8: scale, zero_point = input['quantization'] im = (im / scale + zero_point).astype(np.uint8) # de-scale self.interpreter.set_tensor(input['index'], im) self.interpreter.invoke() - y = self.interpreter.get_tensor(output['index']) - if int8: - scale, zero_point = output['quantization'] - y = (y.astype(np.float32) - zero_point) * scale # re-scale - y[..., 0] *= w # x - y[..., 1] *= h # y - y[..., 2] *= w # w - y[..., 3] *= h # h - y = torch.tensor(y) - return (y, []) if val else y + y = [] + for output in self.output_details: + x = self.interpreter.get_tensor(output['index']) + if int8: + scale, zero_point = output['quantization'] + x = (x.astype(np.float32) - zero_point) * scale # re-scale + y.append(x) + y = [x if isinstance(x, np.ndarray) else x.numpy() for x in y] + y[0][..., :4] *= [w, h, w, h] # xywh normalized to pixels + + if isinstance(y, (list, tuple)): + return self.from_numpy(y[0]) if len(y) == 1 else [self.from_numpy(x) for x in y] + else: + return self.from_numpy(y) + + def from_numpy(self, x): + return torch.from_numpy(x).to(self.device) if isinstance(x, np.ndarray) else x + + def warmup(self, imgsz=(1, 3, 640, 640)): + # Warmup model by running inference once + warmup_types = self.pt, self.jit, self.onnx, self.engine, self.saved_model, self.pb, self.triton + if any(warmup_types) and (self.device.type != 'cpu' or self.triton): + im = torch.empty(*imgsz, dtype=torch.half if self.fp16 else torch.float, device=self.device) # input + for _ in range(2 if self.jit else 1): # + self.forward(im) # warmup + + @staticmethod + def _model_type(p='path/to/model.pt'): + # Return model type from model path, i.e. path='path/to/model.onnx' -> type=onnx + # types = [pt, jit, onnx, xml, engine, coreml, saved_model, pb, tflite, edgetpu, tfjs, paddle] + from export import export_formats + from utils.downloads import is_url + sf = list(export_formats().Suffix) # export suffixes + if not is_url(p, check=False): + check_suffix(p, sf) # checks + url = urlparse(p) # if url may be Triton inference server + types = [s in Path(p).name for s in sf] + types[8] &= not types[9] # tflite &= not edgetpu + triton = not any(types) and all([any(s in url.scheme for s in ["http", "grpc"]), url.netloc]) + return types + [triton] + + @staticmethod + def _load_metadata(f=Path('path/to/meta.yaml')): + # Load metadata from meta.yaml if it exists + if f.exists(): + d = yaml_load(f) + return d['stride'], d['names'] # assign stride, names + return None, None class AutoShape(nn.Module): - # input-robust model wrapper for passing cv2/np/PIL/torch inputs. Includes preprocessing, inference and NMS + # YOLOv3 input-robust model wrapper for passing cv2/np/PIL/torch inputs. Includes preprocessing, inference and NMS conf = 0.25 # NMS confidence threshold iou = 0.45 # NMS IoU threshold - classes = None # (optional list) filter by class, i.e. = [0, 15, 16] for COCO persons, cats and dogs + agnostic = False # NMS class-agnostic multi_label = False # NMS multiple labels per box + classes = None # (optional list) filter by class, i.e. = [0, 15, 16] for COCO persons, cats and dogs max_det = 1000 # maximum number of detections per image + amp = False # Automatic Mixed Precision (AMP) inference - def __init__(self, model): + def __init__(self, model, verbose=True): super().__init__() + if verbose: + LOGGER.info('Adding AutoShape... ') + copy_attr(self, model, include=('yaml', 'nc', 'hyp', 'names', 'stride', 'abc'), exclude=()) # copy attributes + self.dmb = isinstance(model, DetectMultiBackend) # DetectMultiBackend() instance + self.pt = not self.dmb or model.pt # PyTorch model self.model = model.eval() - - def autoshape(self): - LOGGER.info('AutoShape already enabled, skipping... ') # model already converted to model.autoshape() - return self + if self.pt: + m = self.model.model.model[-1] if self.dmb else self.model.model[-1] # Detect() + m.inplace = False # Detect.inplace=False for safe multithread inference + m.export = True # do not output loss values def _apply(self, fn): # Apply to(), cpu(), cuda(), half() to model tensors that are not parameters or registered buffers self = super()._apply(fn) - m = self.model.model[-1] # Detect() - m.stride = fn(m.stride) - m.grid = list(map(fn, m.grid)) - if isinstance(m.anchor_grid, list): - m.anchor_grid = list(map(fn, m.anchor_grid)) + if self.pt: + m = self.model.model.model[-1] if self.dmb else self.model.model[-1] # Detect() + m.stride = fn(m.stride) + m.grid = list(map(fn, m.grid)) + if isinstance(m.anchor_grid, list): + m.anchor_grid = list(map(fn, m.anchor_grid)) return self - @torch.no_grad() - def forward(self, imgs, size=640, augment=False, profile=False): - # Inference from various sources. For height=640, width=1280, RGB images example inputs are: - # file: imgs = 'data/images/zidane.jpg' # str or PosixPath + @smart_inference_mode() + def forward(self, ims, size=640, augment=False, profile=False): + # Inference from various sources. For size(height=640, width=1280), RGB images example inputs are: + # file: ims = 'data/images/zidane.jpg' # str or PosixPath # URI: = 'https://ultralytics.com/images/zidane.jpg' # OpenCV: = cv2.imread('image.jpg')[:,:,::-1] # HWC BGR to RGB x(640,1280,3) # PIL: = Image.open('image.jpg') or ImageGrab.grab() # HWC x(640,1280,3) @@ -434,129 +665,139 @@ class AutoShape(nn.Module): # torch: = torch.zeros(16,3,320,640) # BCHW (scaled to size=640, 0-1 values) # multiple: = [Image.open('image1.jpg'), Image.open('image2.jpg'), ...] # list of images - t = [time_sync()] - p = next(self.model.parameters()) # for device and type - if isinstance(imgs, torch.Tensor): # torch - with amp.autocast(enabled=p.device.type != 'cpu'): - return self.model(imgs.to(p.device).type_as(p), augment, profile) # inference + dt = (Profile(), Profile(), Profile()) + with dt[0]: + if isinstance(size, int): # expand + size = (size, size) + p = next(self.model.parameters()) if self.pt else torch.empty(1, device=self.model.device) # param + autocast = self.amp and (p.device.type != 'cpu') # Automatic Mixed Precision (AMP) inference + if isinstance(ims, torch.Tensor): # torch + with amp.autocast(autocast): + return self.model(ims.to(p.device).type_as(p), augment=augment) # inference - # Pre-process - n, imgs = (len(imgs), imgs) if isinstance(imgs, list) else (1, [imgs]) # number of images, list of images - shape0, shape1, files = [], [], [] # image and inference shapes, filenames - for i, im in enumerate(imgs): - f = f'image{i}' # filename - if isinstance(im, (str, Path)): # filename or uri - im, f = Image.open(requests.get(im, stream=True).raw if str(im).startswith('http') else im), im - im = np.asarray(exif_transpose(im)) - elif isinstance(im, Image.Image): # PIL Image - im, f = np.asarray(exif_transpose(im)), getattr(im, 'filename', f) or f - files.append(Path(f).with_suffix('.jpg').name) - if im.shape[0] < 5: # image in CHW - im = im.transpose((1, 2, 0)) # reverse dataloader .transpose(2, 0, 1) - im = im[..., :3] if im.ndim == 3 else np.tile(im[..., None], 3) # enforce 3ch input - s = im.shape[:2] # HWC - shape0.append(s) # image shape - g = (size / max(s)) # gain - shape1.append([y * g for y in s]) - imgs[i] = im if im.data.contiguous else np.ascontiguousarray(im) # update - shape1 = [make_divisible(x, int(self.stride.max())) for x in np.stack(shape1, 0).max(0)] # inference shape - x = [letterbox(im, new_shape=shape1, auto=False)[0] for im in imgs] # pad - x = np.stack(x, 0) if n > 1 else x[0][None] # stack - x = np.ascontiguousarray(x.transpose((0, 3, 1, 2))) # BHWC to BCHW - x = torch.from_numpy(x).to(p.device).type_as(p) / 255 # uint8 to fp16/32 - t.append(time_sync()) + # Pre-process + n, ims = (len(ims), list(ims)) if isinstance(ims, (list, tuple)) else (1, [ims]) # number, list of images + shape0, shape1, files = [], [], [] # image and inference shapes, filenames + for i, im in enumerate(ims): + f = f'image{i}' # filename + if isinstance(im, (str, Path)): # filename or uri + im, f = Image.open(requests.get(im, stream=True).raw if str(im).startswith('http') else im), im + im = np.asarray(exif_transpose(im)) + elif isinstance(im, Image.Image): # PIL Image + im, f = np.asarray(exif_transpose(im)), getattr(im, 'filename', f) or f + files.append(Path(f).with_suffix('.jpg').name) + if im.shape[0] < 5: # image in CHW + im = im.transpose((1, 2, 0)) # reverse dataloader .transpose(2, 0, 1) + im = im[..., :3] if im.ndim == 3 else cv2.cvtColor(im, cv2.COLOR_GRAY2BGR) # enforce 3ch input + s = im.shape[:2] # HWC + shape0.append(s) # image shape + g = max(size) / max(s) # gain + shape1.append([int(y * g) for y in s]) + ims[i] = im if im.data.contiguous else np.ascontiguousarray(im) # update + shape1 = [make_divisible(x, self.stride) for x in np.array(shape1).max(0)] # inf shape + x = [letterbox(im, shape1, auto=False)[0] for im in ims] # pad + x = np.ascontiguousarray(np.array(x).transpose((0, 3, 1, 2))) # stack and BHWC to BCHW + x = torch.from_numpy(x).to(p.device).type_as(p) / 255 # uint8 to fp16/32 - with amp.autocast(enabled=p.device.type != 'cpu'): + with amp.autocast(autocast): # Inference - y = self.model(x, augment, profile)[0] # forward - t.append(time_sync()) + with dt[1]: + y = self.model(x, augment=augment) # forward # Post-process - y = non_max_suppression(y, self.conf, iou_thres=self.iou, classes=self.classes, - multi_label=self.multi_label, max_det=self.max_det) # NMS - for i in range(n): - scale_coords(shape1, y[i][:, :4], shape0[i]) + with dt[2]: + y = non_max_suppression(y if self.dmb else y[0], + self.conf, + self.iou, + self.classes, + self.agnostic, + self.multi_label, + max_det=self.max_det) # NMS + for i in range(n): + scale_boxes(shape1, y[i][:, :4], shape0[i]) - t.append(time_sync()) - return Detections(imgs, y, files, t, self.names, x.shape) + return Detections(ims, y, files, dt, self.names, x.shape) class Detections: - # detections class for inference results - def __init__(self, imgs, pred, files, times=None, names=None, shape=None): + # YOLOv3 detections class for inference results + def __init__(self, ims, pred, files, times=(0, 0, 0), names=None, shape=None): super().__init__() d = pred[0].device # device - gn = [torch.tensor([*(im.shape[i] for i in [1, 0, 1, 0]), 1, 1], device=d) for im in imgs] # normalizations - self.imgs = imgs # list of images as numpy arrays + gn = [torch.tensor([*(im.shape[i] for i in [1, 0, 1, 0]), 1, 1], device=d) for im in ims] # normalizations + self.ims = ims # list of images as numpy arrays self.pred = pred # list of tensors pred[0] = (xyxy, conf, cls) self.names = names # class names self.files = files # image filenames + self.times = times # profiling times self.xyxy = pred # xyxy pixels self.xywh = [xyxy2xywh(x) for x in pred] # xywh pixels self.xyxyn = [x / g for x, g in zip(self.xyxy, gn)] # xyxy normalized self.xywhn = [x / g for x, g in zip(self.xywh, gn)] # xywh normalized self.n = len(self.pred) # number of images (batch size) - self.t = tuple((times[i + 1] - times[i]) * 1000 / self.n for i in range(3)) # timestamps (ms) - self.s = shape # inference BCHW shape + self.t = tuple(x.t / self.n * 1E3 for x in times) # timestamps (ms) + self.s = tuple(shape) # inference BCHW shape - def display(self, pprint=False, show=False, save=False, crop=False, render=False, save_dir=Path('')): - crops = [] - for i, (im, pred) in enumerate(zip(self.imgs, self.pred)): - s = f'image {i + 1}/{len(self.pred)}: {im.shape[0]}x{im.shape[1]} ' # string + def _run(self, pprint=False, show=False, save=False, crop=False, render=False, labels=True, save_dir=Path('')): + s, crops = '', [] + for i, (im, pred) in enumerate(zip(self.ims, self.pred)): + s += f'\nimage {i + 1}/{len(self.pred)}: {im.shape[0]}x{im.shape[1]} ' # string if pred.shape[0]: for c in pred[:, -1].unique(): n = (pred[:, -1] == c).sum() # detections per class s += f"{n} {self.names[int(c)]}{'s' * (n > 1)}, " # add to string + s = s.rstrip(', ') if show or save or render or crop: annotator = Annotator(im, example=str(self.names)) for *box, conf, cls in reversed(pred): # xyxy, confidence, class label = f'{self.names[int(cls)]} {conf:.2f}' if crop: file = save_dir / 'crops' / self.names[int(cls)] / self.files[i] if save else None - crops.append({'box': box, 'conf': conf, 'cls': cls, 'label': label, - 'im': save_one_box(box, im, file=file, save=save)}) + crops.append({ + 'box': box, + 'conf': conf, + 'cls': cls, + 'label': label, + 'im': save_one_box(box, im, file=file, save=save)}) else: # all others - annotator.box_label(box, label, color=colors(cls)) + annotator.box_label(box, label if labels else '', color=colors(cls)) im = annotator.im else: s += '(no detections)' im = Image.fromarray(im.astype(np.uint8)) if isinstance(im, np.ndarray) else im # from np - if pprint: - LOGGER.info(s.rstrip(', ')) if show: - im.show(self.files[i]) # show + display(im) if is_notebook() else im.show(self.files[i]) if save: f = self.files[i] im.save(save_dir / f) # save if i == self.n - 1: LOGGER.info(f"Saved {self.n} image{'s' * (self.n > 1)} to {colorstr('bold', save_dir)}") if render: - self.imgs[i] = np.asarray(im) + self.ims[i] = np.asarray(im) + if pprint: + s = s.lstrip('\n') + return f'{s}\nSpeed: %.1fms pre-process, %.1fms inference, %.1fms NMS per image at shape {self.s}' % self.t if crop: if save: LOGGER.info(f'Saved results to {save_dir}\n') return crops - def print(self): - self.display(pprint=True) # print results - LOGGER.info(f'Speed: %.1fms pre-process, %.1fms inference, %.1fms NMS per image at shape {tuple(self.s)}' % - self.t) + @TryExcept('Showing images is not supported in this environment') + def show(self, labels=True): + self._run(show=True, labels=labels) # show results - def show(self): - self.display(show=True) # show results + def save(self, labels=True, save_dir='runs/detect/exp', exist_ok=False): + save_dir = increment_path(save_dir, exist_ok, mkdir=True) # increment save_dir + self._run(save=True, labels=labels, save_dir=save_dir) # save results - def save(self, save_dir='runs/detect/exp'): - save_dir = increment_path(save_dir, exist_ok=save_dir != 'runs/detect/exp', mkdir=True) # increment save_dir - self.display(save=True, save_dir=save_dir) # save results + def crop(self, save=True, save_dir='runs/detect/exp', exist_ok=False): + save_dir = increment_path(save_dir, exist_ok, mkdir=True) if save else None + return self._run(crop=True, save=save, save_dir=save_dir) # crop results - def crop(self, save=True, save_dir='runs/detect/exp'): - save_dir = increment_path(save_dir, exist_ok=save_dir != 'runs/detect/exp', mkdir=True) if save else None - return self.display(crop=True, save=save, save_dir=save_dir) # crop results - - def render(self): - self.display(render=True) # render results - return self.imgs + def render(self, labels=True): + self._run(render=True, labels=labels) # render results + return self.ims def pandas(self): # return detections as pandas DataFrames, i.e. print(results.pandas().xyxy[0]) @@ -570,24 +811,57 @@ class Detections: def tolist(self): # return a list of Detections objects, i.e. 'for result in results.tolist():' - x = [Detections([self.imgs[i]], [self.pred[i]], self.names, self.s) for i in range(self.n)] - for d in x: - for k in ['imgs', 'pred', 'xyxy', 'xyxyn', 'xywh', 'xywhn']: - setattr(d, k, getattr(d, k)[0]) # pop out of list + r = range(self.n) # iterable + x = [Detections([self.ims[i]], [self.pred[i]], [self.files[i]], self.times, self.names, self.s) for i in r] + # for d in x: + # for k in ['ims', 'pred', 'xyxy', 'xyxyn', 'xywh', 'xywhn']: + # setattr(d, k, getattr(d, k)[0]) # pop out of list return x - def __len__(self): + def print(self): + LOGGER.info(self.__str__()) + + def __len__(self): # override len(results) return self.n + def __str__(self): # override print(results) + return self._run(pprint=True) # print results + + def __repr__(self): + return f'YOLOv3 {self.__class__} instance\n' + self.__str__() + + +class Proto(nn.Module): + # YOLOv3 mask Proto module for segmentation models + def __init__(self, c1, c_=256, c2=32): # ch_in, number of protos, number of masks + super().__init__() + self.cv1 = Conv(c1, c_, k=3) + self.upsample = nn.Upsample(scale_factor=2, mode='nearest') + self.cv2 = Conv(c_, c_, k=3) + self.cv3 = Conv(c_, c2) + + def forward(self, x): + return self.cv3(self.cv2(self.upsample(self.cv1(x)))) + class Classify(nn.Module): - # Classification head, i.e. x(b,c1,20,20) to x(b,c2) - def __init__(self, c1, c2, k=1, s=1, p=None, g=1): # ch_in, ch_out, kernel, stride, padding, groups + # YOLOv3 classification head, i.e. x(b,c1,20,20) to x(b,c2) + def __init__(self, + c1, + c2, + k=1, + s=1, + p=None, + g=1, + dropout_p=0.0): # ch_in, ch_out, kernel, stride, padding, groups, dropout probability super().__init__() - self.aap = nn.AdaptiveAvgPool2d(1) # to x(b,c1,1,1) - self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p), groups=g) # to x(b,c2,1,1) - self.flat = nn.Flatten() + c_ = 1280 # efficientnet_b0 size + self.conv = Conv(c1, c_, k, s, autopad(k, p), g) + self.pool = nn.AdaptiveAvgPool2d(1) # to x(b,c_,1,1) + self.drop = nn.Dropout(p=dropout_p, inplace=True) + self.linear = nn.Linear(c_, c2) # to x(b,c2) def forward(self, x): - z = torch.cat([self.aap(y) for y in (x if isinstance(x, list) else [x])], 1) # cat if list - return self.flat(self.conv(z)) # flatten to x(b,c2) + if isinstance(x, list): + x = torch.cat(x, 1) + return self.linear(self.drop(self.pool(self.conv(x)).flatten(1))) diff --git a/models/experimental.py b/models/experimental.py index ab8266a1..39e3ad9f 100644 --- a/models/experimental.py +++ b/models/experimental.py @@ -8,24 +8,9 @@ import numpy as np import torch import torch.nn as nn -from models.common import Conv from utils.downloads import attempt_download -class CrossConv(nn.Module): - # Cross Convolution Downsample - def __init__(self, c1, c2, k=3, s=1, g=1, e=1.0, shortcut=False): - # ch_in, ch_out, kernel, stride, groups, expansion, shortcut - super().__init__() - c_ = int(c2 * e) # hidden channels - self.cv1 = Conv(c1, c_, (1, k), (1, s)) - self.cv2 = Conv(c_, c2, (k, 1), (s, 1), g=g) - self.add = shortcut and c1 == c2 - - def forward(self, x): - return x + self.cv2(self.cv1(x)) if self.add else self.cv2(self.cv1(x)) - - class Sum(nn.Module): # Weighted sum of 2 or more layers https://arxiv.org/abs/1911.09070 def __init__(self, n, weight=False): # n: number of inputs @@ -63,8 +48,8 @@ class MixConv2d(nn.Module): a[0] = 1 c_ = np.linalg.lstsq(a, b, rcond=None)[0].round() # solve for equal weight indices, ax = b - self.m = nn.ModuleList( - [nn.Conv2d(c1, int(c_), k, s, k // 2, groups=math.gcd(c1, int(c_)), bias=False) for k, c_ in zip(k, c_)]) + self.m = nn.ModuleList([ + nn.Conv2d(c1, int(c_), k, s, k // 2, groups=math.gcd(c1, int(c_)), bias=False) for k, c_ in zip(k, c_)]) self.bn = nn.BatchNorm2d(c2) self.act = nn.SiLU() @@ -78,44 +63,49 @@ class Ensemble(nn.ModuleList): super().__init__() def forward(self, x, augment=False, profile=False, visualize=False): - y = [] - for module in self: - y.append(module(x, augment, profile, visualize)[0]) + y = [module(x, augment, profile, visualize)[0] for module in self] # y = torch.stack(y).max(0)[0] # max ensemble # y = torch.stack(y).mean(0) # mean ensemble y = torch.cat(y, 1) # nms ensemble return y, None # inference, train output -def attempt_load(weights, map_location=None, inplace=True, fuse=True): +def attempt_load(weights, device=None, inplace=True, fuse=True): + # Loads an ensemble of models weights=[a,b,c] or a single model weights=[a] or weights=a from models.yolo import Detect, Model - # Loads an ensemble of models weights=[a,b,c] or a single model weights=[a] or weights=a model = Ensemble() for w in weights if isinstance(weights, list) else [weights]: - ckpt = torch.load(attempt_download(w), map_location=map_location) # load - ckpt = (ckpt['ema'] or ckpt['model']).float() # FP32 model - model.append(ckpt.fuse().eval() if fuse else ckpt.eval()) # fused or un-fused model in eval mode + ckpt = torch.load(attempt_download(w), map_location='cpu') # load + ckpt = (ckpt.get('ema') or ckpt['model']).to(device).float() # FP32 model - # Compatibility updates + # Model compatibility updates + if not hasattr(ckpt, 'stride'): + ckpt.stride = torch.tensor([32.]) + if hasattr(ckpt, 'names') and isinstance(ckpt.names, (list, tuple)): + ckpt.names = dict(enumerate(ckpt.names)) # convert to dict + + model.append(ckpt.fuse().eval() if fuse and hasattr(ckpt, 'fuse') else ckpt.eval()) # model in eval mode + + # Module compatibility updates for m in model.modules(): t = type(m) if t in (nn.Hardswish, nn.LeakyReLU, nn.ReLU, nn.ReLU6, nn.SiLU, Detect, Model): m.inplace = inplace # torch 1.7.0 compatibility - if t is Detect: - if not isinstance(m.anchor_grid, list): # new Detect Layer compatibility - delattr(m, 'anchor_grid') - setattr(m, 'anchor_grid', [torch.zeros(1)] * m.nl) - elif t is Conv: - m._non_persistent_buffers_set = set() # torch 1.6.0 compatibility + if t is Detect and not isinstance(m.anchor_grid, list): + delattr(m, 'anchor_grid') + setattr(m, 'anchor_grid', [torch.zeros(1)] * m.nl) elif t is nn.Upsample and not hasattr(m, 'recompute_scale_factor'): m.recompute_scale_factor = None # torch 1.11.0 compatibility + # Return model if len(model) == 1: - return model[-1] # return model - else: - print(f'Ensemble created with {weights}\n') - for k in ['names']: - setattr(model, k, getattr(model[-1], k)) - model.stride = model[torch.argmax(torch.tensor([m.stride.max() for m in model])).int()].stride # max stride - return model # return ensemble + return model[-1] + + # Return detection ensemble + print(f'Ensemble created with {weights}\n') + for k in 'names', 'nc', 'yaml': + setattr(model, k, getattr(model[0], k)) + model.stride = model[torch.argmax(torch.tensor([m.stride.max() for m in model])).int()].stride # max stride + assert all(model[0].nc == m.nc for m in model), f'Models have different class counts: {[m.nc for m in model]}' + return model diff --git a/models/hub/anchors.yaml b/models/hub/anchors.yaml new file mode 100644 index 00000000..fc252c19 --- /dev/null +++ b/models/hub/anchors.yaml @@ -0,0 +1,59 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +# Default anchors for COCO data + + +# P5 ------------------------------------------------------------------------------------------------------------------- +# P5-640: +anchors_p5_640: + - [10,13, 16,30, 33,23] # P3/8 + - [30,61, 62,45, 59,119] # P4/16 + - [116,90, 156,198, 373,326] # P5/32 + + +# P6 ------------------------------------------------------------------------------------------------------------------- +# P6-640: thr=0.25: 0.9964 BPR, 5.54 anchors past thr, n=12, img_size=640, metric_all=0.281/0.716-mean/best, past_thr=0.469-mean: 9,11, 21,19, 17,41, 43,32, 39,70, 86,64, 65,131, 134,130, 120,265, 282,180, 247,354, 512,387 +anchors_p6_640: + - [9,11, 21,19, 17,41] # P3/8 + - [43,32, 39,70, 86,64] # P4/16 + - [65,131, 134,130, 120,265] # P5/32 + - [282,180, 247,354, 512,387] # P6/64 + +# P6-1280: thr=0.25: 0.9950 BPR, 5.55 anchors past thr, n=12, img_size=1280, metric_all=0.281/0.714-mean/best, past_thr=0.468-mean: 19,27, 44,40, 38,94, 96,68, 86,152, 180,137, 140,301, 303,264, 238,542, 436,615, 739,380, 925,792 +anchors_p6_1280: + - [19,27, 44,40, 38,94] # P3/8 + - [96,68, 86,152, 180,137] # P4/16 + - [140,301, 303,264, 238,542] # P5/32 + - [436,615, 739,380, 925,792] # P6/64 + +# P6-1920: thr=0.25: 0.9950 BPR, 5.55 anchors past thr, n=12, img_size=1920, metric_all=0.281/0.714-mean/best, past_thr=0.468-mean: 28,41, 67,59, 57,141, 144,103, 129,227, 270,205, 209,452, 455,396, 358,812, 653,922, 1109,570, 1387,1187 +anchors_p6_1920: + - [28,41, 67,59, 57,141] # P3/8 + - [144,103, 129,227, 270,205] # P4/16 + - [209,452, 455,396, 358,812] # P5/32 + - [653,922, 1109,570, 1387,1187] # P6/64 + + +# P7 ------------------------------------------------------------------------------------------------------------------- +# P7-640: thr=0.25: 0.9962 BPR, 6.76 anchors past thr, n=15, img_size=640, metric_all=0.275/0.733-mean/best, past_thr=0.466-mean: 11,11, 13,30, 29,20, 30,46, 61,38, 39,92, 78,80, 146,66, 79,163, 149,150, 321,143, 157,303, 257,402, 359,290, 524,372 +anchors_p7_640: + - [11,11, 13,30, 29,20] # P3/8 + - [30,46, 61,38, 39,92] # P4/16 + - [78,80, 146,66, 79,163] # P5/32 + - [149,150, 321,143, 157,303] # P6/64 + - [257,402, 359,290, 524,372] # P7/128 + +# P7-1280: thr=0.25: 0.9968 BPR, 6.71 anchors past thr, n=15, img_size=1280, metric_all=0.273/0.732-mean/best, past_thr=0.463-mean: 19,22, 54,36, 32,77, 70,83, 138,71, 75,173, 165,159, 148,334, 375,151, 334,317, 251,626, 499,474, 750,326, 534,814, 1079,818 +anchors_p7_1280: + - [19,22, 54,36, 32,77] # P3/8 + - [70,83, 138,71, 75,173] # P4/16 + - [165,159, 148,334, 375,151] # P5/32 + - [334,317, 251,626, 499,474] # P6/64 + - [750,326, 534,814, 1079,818] # P7/128 + +# P7-1920: thr=0.25: 0.9968 BPR, 6.71 anchors past thr, n=15, img_size=1920, metric_all=0.273/0.732-mean/best, past_thr=0.463-mean: 29,34, 81,55, 47,115, 105,124, 207,107, 113,259, 247,238, 222,500, 563,227, 501,476, 376,939, 749,711, 1126,489, 801,1222, 1618,1227 +anchors_p7_1920: + - [29,34, 81,55, 47,115] # P3/8 + - [105,124, 207,107, 113,259] # P4/16 + - [247,238, 222,500, 563,227] # P5/32 + - [501,476, 376,939, 749,711] # P6/64 + - [1126,489, 801,1222, 1618,1227] # P7/128 diff --git a/models/hub/yolov5-bifpn.yaml b/models/hub/yolov5-bifpn.yaml new file mode 100644 index 00000000..7d17a347 --- /dev/null +++ b/models/hub/yolov5-bifpn.yaml @@ -0,0 +1,48 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 1.0 # model depth multiple +width_multiple: 1.0 # layer channel multiple +anchors: + - [10,13, 16,30, 33,23] # P3/8 + - [30,61, 62,45, 59,119] # P4/16 + - [116,90, 156,198, 373,326] # P5/32 + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32 + [-1, 3, C3, [1024]], + [-1, 1, SPPF, [1024, 5]], # 9 + ] + +# YOLOv5 v6.0 BiFPN head +head: + [[-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 13 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 17 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 14, 6], 1, Concat, [1]], # cat P4 <--- BiFPN change + [-1, 3, C3, [512, False]], # 20 (P4/16-medium) + + [-1, 1, Conv, [512, 3, 2]], + [[-1, 10], 1, Concat, [1]], # cat head P5 + [-1, 3, C3, [1024, False]], # 23 (P5/32-large) + + [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5) + ] diff --git a/models/hub/yolov5-fpn.yaml b/models/hub/yolov5-fpn.yaml new file mode 100644 index 00000000..0c91f931 --- /dev/null +++ b/models/hub/yolov5-fpn.yaml @@ -0,0 +1,42 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 1.0 # model depth multiple +width_multiple: 1.0 # layer channel multiple +anchors: + - [10,13, 16,30, 33,23] # P3/8 + - [30,61, 62,45, 59,119] # P4/16 + - [116,90, 156,198, 373,326] # P5/32 + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32 + [-1, 3, C3, [1024]], + [-1, 1, SPPF, [1024, 5]], # 9 + ] + +# YOLOv5 v6.0 FPN head +head: + [[-1, 3, C3, [1024, False]], # 10 (P5/32-large) + + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 1, Conv, [512, 1, 1]], + [-1, 3, C3, [512, False]], # 14 (P4/16-medium) + + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 1, Conv, [256, 1, 1]], + [-1, 3, C3, [256, False]], # 18 (P3/8-small) + + [[18, 14, 10], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5) + ] diff --git a/models/hub/yolov5-p2.yaml b/models/hub/yolov5-p2.yaml new file mode 100644 index 00000000..23264db0 --- /dev/null +++ b/models/hub/yolov5-p2.yaml @@ -0,0 +1,54 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 1.0 # model depth multiple +width_multiple: 1.0 # layer channel multiple +anchors: 3 # AutoAnchor evolves 3 anchors per P output layer + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32 + [-1, 3, C3, [1024]], + [-1, 1, SPPF, [1024, 5]], # 9 + ] + +# YOLOv5 v6.0 head with (P2, P3, P4, P5) outputs +head: + [[-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 13 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 17 (P3/8-small) + + [-1, 1, Conv, [128, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 2], 1, Concat, [1]], # cat backbone P2 + [-1, 1, C3, [128, False]], # 21 (P2/4-xsmall) + + [-1, 1, Conv, [128, 3, 2]], + [[-1, 18], 1, Concat, [1]], # cat head P3 + [-1, 3, C3, [256, False]], # 24 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 14], 1, Concat, [1]], # cat head P4 + [-1, 3, C3, [512, False]], # 27 (P4/16-medium) + + [-1, 1, Conv, [512, 3, 2]], + [[-1, 10], 1, Concat, [1]], # cat head P5 + [-1, 3, C3, [1024, False]], # 30 (P5/32-large) + + [[21, 24, 27, 30], 1, Detect, [nc, anchors]], # Detect(P2, P3, P4, P5) + ] diff --git a/models/hub/yolov5-p34.yaml b/models/hub/yolov5-p34.yaml new file mode 100644 index 00000000..c7f76e30 --- /dev/null +++ b/models/hub/yolov5-p34.yaml @@ -0,0 +1,41 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 0.33 # model depth multiple +width_multiple: 0.50 # layer channel multiple +anchors: 3 # AutoAnchor evolves 3 anchors per P output layer + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32 + [-1, 3, C3, [1024]], + [-1, 1, SPPF, [1024, 5]], # 9 + ] + +# YOLOv5 v6.0 head with (P3, P4) outputs +head: + [[-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 13 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 17 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 14], 1, Concat, [1]], # cat head P4 + [-1, 3, C3, [512, False]], # 20 (P4/16-medium) + + [[17, 20], 1, Detect, [nc, anchors]], # Detect(P3, P4) + ] diff --git a/models/hub/yolov5-p6.yaml b/models/hub/yolov5-p6.yaml new file mode 100644 index 00000000..a7b79a57 --- /dev/null +++ b/models/hub/yolov5-p6.yaml @@ -0,0 +1,56 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 1.0 # model depth multiple +width_multiple: 1.0 # layer channel multiple +anchors: 3 # AutoAnchor evolves 3 anchors per P output layer + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [768, 3, 2]], # 7-P5/32 + [-1, 3, C3, [768]], + [-1, 1, Conv, [1024, 3, 2]], # 9-P6/64 + [-1, 3, C3, [1024]], + [-1, 1, SPPF, [1024, 5]], # 11 + ] + +# YOLOv5 v6.0 head with (P3, P4, P5, P6) outputs +head: + [[-1, 1, Conv, [768, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 8], 1, Concat, [1]], # cat backbone P5 + [-1, 3, C3, [768, False]], # 15 + + [-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 19 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 23 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 20], 1, Concat, [1]], # cat head P4 + [-1, 3, C3, [512, False]], # 26 (P4/16-medium) + + [-1, 1, Conv, [512, 3, 2]], + [[-1, 16], 1, Concat, [1]], # cat head P5 + [-1, 3, C3, [768, False]], # 29 (P5/32-large) + + [-1, 1, Conv, [768, 3, 2]], + [[-1, 12], 1, Concat, [1]], # cat head P6 + [-1, 3, C3, [1024, False]], # 32 (P6/64-xlarge) + + [[23, 26, 29, 32], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5, P6) + ] diff --git a/models/hub/yolov5-p7.yaml b/models/hub/yolov5-p7.yaml new file mode 100644 index 00000000..3846496b --- /dev/null +++ b/models/hub/yolov5-p7.yaml @@ -0,0 +1,67 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 1.0 # model depth multiple +width_multiple: 1.0 # layer channel multiple +anchors: 3 # AutoAnchor evolves 3 anchors per P output layer + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [768, 3, 2]], # 7-P5/32 + [-1, 3, C3, [768]], + [-1, 1, Conv, [1024, 3, 2]], # 9-P6/64 + [-1, 3, C3, [1024]], + [-1, 1, Conv, [1280, 3, 2]], # 11-P7/128 + [-1, 3, C3, [1280]], + [-1, 1, SPPF, [1280, 5]], # 13 + ] + +# YOLOv5 v6.0 head with (P3, P4, P5, P6, P7) outputs +head: + [[-1, 1, Conv, [1024, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 10], 1, Concat, [1]], # cat backbone P6 + [-1, 3, C3, [1024, False]], # 17 + + [-1, 1, Conv, [768, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 8], 1, Concat, [1]], # cat backbone P5 + [-1, 3, C3, [768, False]], # 21 + + [-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 25 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 29 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 26], 1, Concat, [1]], # cat head P4 + [-1, 3, C3, [512, False]], # 32 (P4/16-medium) + + [-1, 1, Conv, [512, 3, 2]], + [[-1, 22], 1, Concat, [1]], # cat head P5 + [-1, 3, C3, [768, False]], # 35 (P5/32-large) + + [-1, 1, Conv, [768, 3, 2]], + [[-1, 18], 1, Concat, [1]], # cat head P6 + [-1, 3, C3, [1024, False]], # 38 (P6/64-xlarge) + + [-1, 1, Conv, [1024, 3, 2]], + [[-1, 14], 1, Concat, [1]], # cat head P7 + [-1, 3, C3, [1280, False]], # 41 (P7/128-xxlarge) + + [[29, 32, 35, 38, 41], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5, P6, P7) + ] diff --git a/models/hub/yolov5-panet.yaml b/models/hub/yolov5-panet.yaml new file mode 100644 index 00000000..9a9a34dd --- /dev/null +++ b/models/hub/yolov5-panet.yaml @@ -0,0 +1,48 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 1.0 # model depth multiple +width_multiple: 1.0 # layer channel multiple +anchors: + - [10,13, 16,30, 33,23] # P3/8 + - [30,61, 62,45, 59,119] # P4/16 + - [116,90, 156,198, 373,326] # P5/32 + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32 + [-1, 3, C3, [1024]], + [-1, 1, SPPF, [1024, 5]], # 9 + ] + +# YOLOv5 v6.0 PANet head +head: + [[-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 13 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 17 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 14], 1, Concat, [1]], # cat head P4 + [-1, 3, C3, [512, False]], # 20 (P4/16-medium) + + [-1, 1, Conv, [512, 3, 2]], + [[-1, 10], 1, Concat, [1]], # cat head P5 + [-1, 3, C3, [1024, False]], # 23 (P5/32-large) + + [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5) + ] diff --git a/models/hub/yolov5l6.yaml b/models/hub/yolov5l6.yaml new file mode 100644 index 00000000..e9f03b34 --- /dev/null +++ b/models/hub/yolov5l6.yaml @@ -0,0 +1,60 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 1.0 # model depth multiple +width_multiple: 1.0 # layer channel multiple +anchors: + - [19,27, 44,40, 38,94] # P3/8 + - [96,68, 86,152, 180,137] # P4/16 + - [140,301, 303,264, 238,542] # P5/32 + - [436,615, 739,380, 925,792] # P6/64 + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [768, 3, 2]], # 7-P5/32 + [-1, 3, C3, [768]], + [-1, 1, Conv, [1024, 3, 2]], # 9-P6/64 + [-1, 3, C3, [1024]], + [-1, 1, SPPF, [1024, 5]], # 11 + ] + +# YOLOv5 v6.0 head +head: + [[-1, 1, Conv, [768, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 8], 1, Concat, [1]], # cat backbone P5 + [-1, 3, C3, [768, False]], # 15 + + [-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 19 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 23 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 20], 1, Concat, [1]], # cat head P4 + [-1, 3, C3, [512, False]], # 26 (P4/16-medium) + + [-1, 1, Conv, [512, 3, 2]], + [[-1, 16], 1, Concat, [1]], # cat head P5 + [-1, 3, C3, [768, False]], # 29 (P5/32-large) + + [-1, 1, Conv, [768, 3, 2]], + [[-1, 12], 1, Concat, [1]], # cat head P6 + [-1, 3, C3, [1024, False]], # 32 (P6/64-xlarge) + + [[23, 26, 29, 32], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5, P6) + ] diff --git a/models/hub/yolov5m6.yaml b/models/hub/yolov5m6.yaml new file mode 100644 index 00000000..7077be1a --- /dev/null +++ b/models/hub/yolov5m6.yaml @@ -0,0 +1,60 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 0.67 # model depth multiple +width_multiple: 0.75 # layer channel multiple +anchors: + - [19,27, 44,40, 38,94] # P3/8 + - [96,68, 86,152, 180,137] # P4/16 + - [140,301, 303,264, 238,542] # P5/32 + - [436,615, 739,380, 925,792] # P6/64 + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [768, 3, 2]], # 7-P5/32 + [-1, 3, C3, [768]], + [-1, 1, Conv, [1024, 3, 2]], # 9-P6/64 + [-1, 3, C3, [1024]], + [-1, 1, SPPF, [1024, 5]], # 11 + ] + +# YOLOv5 v6.0 head +head: + [[-1, 1, Conv, [768, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 8], 1, Concat, [1]], # cat backbone P5 + [-1, 3, C3, [768, False]], # 15 + + [-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 19 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 23 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 20], 1, Concat, [1]], # cat head P4 + [-1, 3, C3, [512, False]], # 26 (P4/16-medium) + + [-1, 1, Conv, [512, 3, 2]], + [[-1, 16], 1, Concat, [1]], # cat head P5 + [-1, 3, C3, [768, False]], # 29 (P5/32-large) + + [-1, 1, Conv, [768, 3, 2]], + [[-1, 12], 1, Concat, [1]], # cat head P6 + [-1, 3, C3, [1024, False]], # 32 (P6/64-xlarge) + + [[23, 26, 29, 32], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5, P6) + ] diff --git a/models/hub/yolov5n6.yaml b/models/hub/yolov5n6.yaml new file mode 100644 index 00000000..2b4374c8 --- /dev/null +++ b/models/hub/yolov5n6.yaml @@ -0,0 +1,60 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 0.33 # model depth multiple +width_multiple: 0.25 # layer channel multiple +anchors: + - [19,27, 44,40, 38,94] # P3/8 + - [96,68, 86,152, 180,137] # P4/16 + - [140,301, 303,264, 238,542] # P5/32 + - [436,615, 739,380, 925,792] # P6/64 + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [768, 3, 2]], # 7-P5/32 + [-1, 3, C3, [768]], + [-1, 1, Conv, [1024, 3, 2]], # 9-P6/64 + [-1, 3, C3, [1024]], + [-1, 1, SPPF, [1024, 5]], # 11 + ] + +# YOLOv5 v6.0 head +head: + [[-1, 1, Conv, [768, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 8], 1, Concat, [1]], # cat backbone P5 + [-1, 3, C3, [768, False]], # 15 + + [-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 19 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 23 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 20], 1, Concat, [1]], # cat head P4 + [-1, 3, C3, [512, False]], # 26 (P4/16-medium) + + [-1, 1, Conv, [512, 3, 2]], + [[-1, 16], 1, Concat, [1]], # cat head P5 + [-1, 3, C3, [768, False]], # 29 (P5/32-large) + + [-1, 1, Conv, [768, 3, 2]], + [[-1, 12], 1, Concat, [1]], # cat head P6 + [-1, 3, C3, [1024, False]], # 32 (P6/64-xlarge) + + [[23, 26, 29, 32], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5, P6) + ] diff --git a/models/hub/yolov5s-LeakyReLU.yaml b/models/hub/yolov5s-LeakyReLU.yaml new file mode 100644 index 00000000..0d3dbc0d --- /dev/null +++ b/models/hub/yolov5s-LeakyReLU.yaml @@ -0,0 +1,49 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +activation: nn.LeakyReLU(0.1) # <----- Conv() activation used throughout entire YOLOv5 model +depth_multiple: 0.33 # model depth multiple +width_multiple: 0.50 # layer channel multiple +anchors: + - [10,13, 16,30, 33,23] # P3/8 + - [30,61, 62,45, 59,119] # P4/16 + - [116,90, 156,198, 373,326] # P5/32 + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32 + [-1, 3, C3, [1024]], + [-1, 1, SPPF, [1024, 5]], # 9 + ] + +# YOLOv5 v6.0 head +head: + [[-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 13 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 17 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 14], 1, Concat, [1]], # cat head P4 + [-1, 3, C3, [512, False]], # 20 (P4/16-medium) + + [-1, 1, Conv, [512, 3, 2]], + [[-1, 10], 1, Concat, [1]], # cat head P5 + [-1, 3, C3, [1024, False]], # 23 (P5/32-large) + + [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5) + ] diff --git a/models/hub/yolov5s-ghost.yaml b/models/hub/yolov5s-ghost.yaml new file mode 100644 index 00000000..e8bbcfe3 --- /dev/null +++ b/models/hub/yolov5s-ghost.yaml @@ -0,0 +1,48 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 0.33 # model depth multiple +width_multiple: 0.50 # layer channel multiple +anchors: + - [10,13, 16,30, 33,23] # P3/8 + - [30,61, 62,45, 59,119] # P4/16 + - [116,90, 156,198, 373,326] # P5/32 + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, GhostConv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3Ghost, [128]], + [-1, 1, GhostConv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3Ghost, [256]], + [-1, 1, GhostConv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3Ghost, [512]], + [-1, 1, GhostConv, [1024, 3, 2]], # 7-P5/32 + [-1, 3, C3Ghost, [1024]], + [-1, 1, SPPF, [1024, 5]], # 9 + ] + +# YOLOv5 v6.0 head +head: + [[-1, 1, GhostConv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3Ghost, [512, False]], # 13 + + [-1, 1, GhostConv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3Ghost, [256, False]], # 17 (P3/8-small) + + [-1, 1, GhostConv, [256, 3, 2]], + [[-1, 14], 1, Concat, [1]], # cat head P4 + [-1, 3, C3Ghost, [512, False]], # 20 (P4/16-medium) + + [-1, 1, GhostConv, [512, 3, 2]], + [[-1, 10], 1, Concat, [1]], # cat head P5 + [-1, 3, C3Ghost, [1024, False]], # 23 (P5/32-large) + + [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5) + ] diff --git a/models/hub/yolov5s-transformer.yaml b/models/hub/yolov5s-transformer.yaml new file mode 100644 index 00000000..a0a3ce8e --- /dev/null +++ b/models/hub/yolov5s-transformer.yaml @@ -0,0 +1,48 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 0.33 # model depth multiple +width_multiple: 0.50 # layer channel multiple +anchors: + - [10,13, 16,30, 33,23] # P3/8 + - [30,61, 62,45, 59,119] # P4/16 + - [116,90, 156,198, 373,326] # P5/32 + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32 + [-1, 3, C3TR, [1024]], # 9 <--- C3TR() Transformer module + [-1, 1, SPPF, [1024, 5]], # 9 + ] + +# YOLOv5 v6.0 head +head: + [[-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 13 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 17 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 14], 1, Concat, [1]], # cat head P4 + [-1, 3, C3, [512, False]], # 20 (P4/16-medium) + + [-1, 1, Conv, [512, 3, 2]], + [[-1, 10], 1, Concat, [1]], # cat head P5 + [-1, 3, C3, [1024, False]], # 23 (P5/32-large) + + [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5) + ] diff --git a/models/hub/yolov5s6.yaml b/models/hub/yolov5s6.yaml new file mode 100644 index 00000000..85f3ef5a --- /dev/null +++ b/models/hub/yolov5s6.yaml @@ -0,0 +1,60 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 0.33 # model depth multiple +width_multiple: 0.50 # layer channel multiple +anchors: + - [19,27, 44,40, 38,94] # P3/8 + - [96,68, 86,152, 180,137] # P4/16 + - [140,301, 303,264, 238,542] # P5/32 + - [436,615, 739,380, 925,792] # P6/64 + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [768, 3, 2]], # 7-P5/32 + [-1, 3, C3, [768]], + [-1, 1, Conv, [1024, 3, 2]], # 9-P6/64 + [-1, 3, C3, [1024]], + [-1, 1, SPPF, [1024, 5]], # 11 + ] + +# YOLOv5 v6.0 head +head: + [[-1, 1, Conv, [768, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 8], 1, Concat, [1]], # cat backbone P5 + [-1, 3, C3, [768, False]], # 15 + + [-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 19 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 23 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 20], 1, Concat, [1]], # cat head P4 + [-1, 3, C3, [512, False]], # 26 (P4/16-medium) + + [-1, 1, Conv, [512, 3, 2]], + [[-1, 16], 1, Concat, [1]], # cat head P5 + [-1, 3, C3, [768, False]], # 29 (P5/32-large) + + [-1, 1, Conv, [768, 3, 2]], + [[-1, 12], 1, Concat, [1]], # cat head P6 + [-1, 3, C3, [1024, False]], # 32 (P6/64-xlarge) + + [[23, 26, 29, 32], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5, P6) + ] diff --git a/models/hub/yolov5x6.yaml b/models/hub/yolov5x6.yaml new file mode 100644 index 00000000..290da47d --- /dev/null +++ b/models/hub/yolov5x6.yaml @@ -0,0 +1,60 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 1.33 # model depth multiple +width_multiple: 1.25 # layer channel multiple +anchors: + - [19,27, 44,40, 38,94] # P3/8 + - [96,68, 86,152, 180,137] # P4/16 + - [140,301, 303,264, 238,542] # P5/32 + - [436,615, 739,380, 925,792] # P6/64 + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [768, 3, 2]], # 7-P5/32 + [-1, 3, C3, [768]], + [-1, 1, Conv, [1024, 3, 2]], # 9-P6/64 + [-1, 3, C3, [1024]], + [-1, 1, SPPF, [1024, 5]], # 11 + ] + +# YOLOv5 v6.0 head +head: + [[-1, 1, Conv, [768, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 8], 1, Concat, [1]], # cat backbone P5 + [-1, 3, C3, [768, False]], # 15 + + [-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 19 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 23 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 20], 1, Concat, [1]], # cat head P4 + [-1, 3, C3, [512, False]], # 26 (P4/16-medium) + + [-1, 1, Conv, [512, 3, 2]], + [[-1, 16], 1, Concat, [1]], # cat head P5 + [-1, 3, C3, [768, False]], # 29 (P5/32-large) + + [-1, 1, Conv, [768, 3, 2]], + [[-1, 12], 1, Concat, [1]], # cat head P6 + [-1, 3, C3, [1024, False]], # 32 (P6/64-xlarge) + + [[23, 26, 29, 32], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5, P6) + ] diff --git a/models/segment/yolov5l-seg.yaml b/models/segment/yolov5l-seg.yaml new file mode 100644 index 00000000..ac06eb87 --- /dev/null +++ b/models/segment/yolov5l-seg.yaml @@ -0,0 +1,48 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 1.0 # model depth multiple +width_multiple: 1.0 # layer channel multiple +anchors: + - [10,13, 16,30, 33,23] # P3/8 + - [30,61, 62,45, 59,119] # P4/16 + - [116,90, 156,198, 373,326] # P5/32 + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32 + [-1, 3, C3, [1024]], + [-1, 1, SPPF, [1024, 5]], # 9 + ] + +# YOLOv5 v6.0 head +head: + [[-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 13 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 17 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 14], 1, Concat, [1]], # cat head P4 + [-1, 3, C3, [512, False]], # 20 (P4/16-medium) + + [-1, 1, Conv, [512, 3, 2]], + [[-1, 10], 1, Concat, [1]], # cat head P5 + [-1, 3, C3, [1024, False]], # 23 (P5/32-large) + + [[17, 20, 23], 1, Segment, [nc, anchors, 32, 256]], # Detect(P3, P4, P5) + ] diff --git a/models/segment/yolov5m-seg.yaml b/models/segment/yolov5m-seg.yaml new file mode 100644 index 00000000..febe93f6 --- /dev/null +++ b/models/segment/yolov5m-seg.yaml @@ -0,0 +1,48 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 0.67 # model depth multiple +width_multiple: 0.75 # layer channel multiple +anchors: + - [10,13, 16,30, 33,23] # P3/8 + - [30,61, 62,45, 59,119] # P4/16 + - [116,90, 156,198, 373,326] # P5/32 + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32 + [-1, 3, C3, [1024]], + [-1, 1, SPPF, [1024, 5]], # 9 + ] + +# YOLOv5 v6.0 head +head: + [[-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 13 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 17 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 14], 1, Concat, [1]], # cat head P4 + [-1, 3, C3, [512, False]], # 20 (P4/16-medium) + + [-1, 1, Conv, [512, 3, 2]], + [[-1, 10], 1, Concat, [1]], # cat head P5 + [-1, 3, C3, [1024, False]], # 23 (P5/32-large) + + [[17, 20, 23], 1, Segment, [nc, anchors, 32, 256]], # Detect(P3, P4, P5) + ] \ No newline at end of file diff --git a/models/segment/yolov5n-seg.yaml b/models/segment/yolov5n-seg.yaml new file mode 100644 index 00000000..21635c3c --- /dev/null +++ b/models/segment/yolov5n-seg.yaml @@ -0,0 +1,48 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 0.33 # model depth multiple +width_multiple: 0.25 # layer channel multiple +anchors: + - [10,13, 16,30, 33,23] # P3/8 + - [30,61, 62,45, 59,119] # P4/16 + - [116,90, 156,198, 373,326] # P5/32 + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32 + [-1, 3, C3, [1024]], + [-1, 1, SPPF, [1024, 5]], # 9 + ] + +# YOLOv5 v6.0 head +head: + [[-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 13 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 17 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 14], 1, Concat, [1]], # cat head P4 + [-1, 3, C3, [512, False]], # 20 (P4/16-medium) + + [-1, 1, Conv, [512, 3, 2]], + [[-1, 10], 1, Concat, [1]], # cat head P5 + [-1, 3, C3, [1024, False]], # 23 (P5/32-large) + + [[17, 20, 23], 1, Segment, [nc, anchors, 32, 256]], # Detect(P3, P4, P5) + ] diff --git a/models/segment/yolov5s-seg.yaml b/models/segment/yolov5s-seg.yaml new file mode 100644 index 00000000..3b31ed3a --- /dev/null +++ b/models/segment/yolov5s-seg.yaml @@ -0,0 +1,48 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 0.33 # model depth multiple +width_multiple: 0.5 # layer channel multiple +anchors: + - [10,13, 16,30, 33,23] # P3/8 + - [30,61, 62,45, 59,119] # P4/16 + - [116,90, 156,198, 373,326] # P5/32 + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32 + [-1, 3, C3, [1024]], + [-1, 1, SPPF, [1024, 5]], # 9 + ] + +# YOLOv5 v6.0 head +head: + [[-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 13 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 17 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 14], 1, Concat, [1]], # cat head P4 + [-1, 3, C3, [512, False]], # 20 (P4/16-medium) + + [-1, 1, Conv, [512, 3, 2]], + [[-1, 10], 1, Concat, [1]], # cat head P5 + [-1, 3, C3, [1024, False]], # 23 (P5/32-large) + + [[17, 20, 23], 1, Segment, [nc, anchors, 32, 256]], # Detect(P3, P4, P5) + ] \ No newline at end of file diff --git a/models/segment/yolov5x-seg.yaml b/models/segment/yolov5x-seg.yaml new file mode 100644 index 00000000..5a95b92f --- /dev/null +++ b/models/segment/yolov5x-seg.yaml @@ -0,0 +1,48 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 1.33 # model depth multiple +width_multiple: 1.25 # layer channel multiple +anchors: + - [10,13, 16,30, 33,23] # P3/8 + - [30,61, 62,45, 59,119] # P4/16 + - [116,90, 156,198, 373,326] # P5/32 + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32 + [-1, 3, C3, [1024]], + [-1, 1, SPPF, [1024, 5]], # 9 + ] + +# YOLOv5 v6.0 head +head: + [[-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 13 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 17 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 14], 1, Concat, [1]], # cat head P4 + [-1, 3, C3, [512, False]], # 20 (P4/16-medium) + + [-1, 1, Conv, [512, 3, 2]], + [[-1, 10], 1, Concat, [1]], # cat head P5 + [-1, 3, C3, [1024, False]], # 23 (P5/32-large) + + [[17, 20, 23], 1, Segment, [nc, anchors, 32, 256]], # Detect(P3, P4, P5) + ] diff --git a/models/tf.py b/models/tf.py index 956ef2bd..4c408776 100644 --- a/models/tf.py +++ b/models/tf.py @@ -1,25 +1,22 @@ # YOLOv3 🚀 by Ultralytics, GPL-3.0 license """ -TensorFlow, Keras and TFLite versions of +TensorFlow, Keras and TFLite versions of YOLOv3 Authored by https://github.com/zldrobit in PR https://github.com/ultralytics/yolov5/pull/1127 Usage: - $ python models/tf.py --weights yolov3.pt + $ python models/tf.py --weights yolov5s.pt Export: - $ python path/to/export.py --weights yolov3.pt --include saved_model pb tflite tfjs + $ python export.py --weights yolov5s.pt --include saved_model pb tflite tfjs """ import argparse -import logging import sys from copy import deepcopy from pathlib import Path -from packaging import version - FILE = Path(__file__).resolve() -ROOT = FILE.parents[1] # root directory +ROOT = FILE.parents[1] # YOLOv3 root directory if str(ROOT) not in sys.path: sys.path.append(str(ROOT)) # add ROOT to PATH # ROOT = ROOT.relative_to(Path.cwd()) # relative @@ -28,21 +25,15 @@ import numpy as np import tensorflow as tf import torch import torch.nn as nn -from keras import backend -from keras.engine.base_layer import Layer -from keras.engine.input_spec import InputSpec -from keras.utils import conv_utils from tensorflow import keras -from models.common import C3, SPP, SPPF, Bottleneck, BottleneckCSP, Concat, Conv, DWConv, Focus, autopad -from models.experimental import CrossConv, MixConv2d, attempt_load -from models.yolo import Detect +from models.common import (C3, SPP, SPPF, Bottleneck, BottleneckCSP, C3x, Concat, Conv, CrossConv, DWConv, + DWConvTranspose2d, Focus, autopad) +from models.experimental import MixConv2d, attempt_load +from models.yolo import Detect, Segment from utils.activations import SiLU from utils.general import LOGGER, make_divisible, print_args -# isort: off -from tensorflow.python.util.tf_export import keras_export - class TFBN(keras.layers.Layer): # TensorFlow BatchNormalization wrapper @@ -59,33 +50,14 @@ class TFBN(keras.layers.Layer): return self.bn(inputs) -class TFMaxPool2d(keras.layers.Layer): - # TensorFlow MAX Pooling - def __init__(self, k, s, p, w=None): - super().__init__() - self.pool = keras.layers.MaxPool2D(pool_size=k, strides=s, padding='valid') - - def call(self, inputs): - return self.pool(inputs) - - -class TFZeroPad2d(keras.layers.Layer): - # TensorFlow MAX Pooling - def __init__(self, p, w=None): - super().__init__() - if version.parse(tf.__version__) < version.parse('2.11.0'): - self.zero_pad = ZeroPadding2D(padding=p) - else: - self.zero_pad = keras.layers.ZeroPadding2D(padding=((p[0], p[1]), (p[2], p[3]))) - - def call(self, inputs): - return self.zero_pad(inputs) - - class TFPad(keras.layers.Layer): + # Pad inputs in spatial dimensions 1 and 2 def __init__(self, pad): super().__init__() - self.pad = tf.constant([[0, 0], [pad, pad], [pad, pad], [0, 0]]) + if isinstance(pad, int): + self.pad = tf.constant([[0, 0], [pad, pad], [pad, pad], [0, 0]]) + else: # tuple/list + self.pad = tf.constant([[0, 0], [pad[0], pad[0]], [pad[1], pad[1]], [0, 0]]) def call(self, inputs): return tf.pad(inputs, self.pad, mode='constant', constant_values=0) @@ -97,31 +69,69 @@ class TFConv(keras.layers.Layer): # ch_in, ch_out, weights, kernel, stride, padding, groups super().__init__() assert g == 1, "TF v2.2 Conv2D does not support 'groups' argument" - assert isinstance(k, int), "Convolution with multiple kernels are not allowed." # TensorFlow convolution padding is inconsistent with PyTorch (e.g. k=3 s=2 'SAME' padding) # see https://stackoverflow.com/questions/52975843/comparing-conv2d-with-padding-between-tensorflow-and-pytorch - conv = keras.layers.Conv2D( - c2, k, s, 'SAME' if s == 1 else 'VALID', use_bias=False if hasattr(w, 'bn') else True, + filters=c2, + kernel_size=k, + strides=s, + padding='SAME' if s == 1 else 'VALID', + use_bias=not hasattr(w, 'bn'), kernel_initializer=keras.initializers.Constant(w.conv.weight.permute(2, 3, 1, 0).numpy()), bias_initializer='zeros' if hasattr(w, 'bn') else keras.initializers.Constant(w.conv.bias.numpy())) self.conv = conv if s == 1 else keras.Sequential([TFPad(autopad(k, p)), conv]) self.bn = TFBN(w.bn) if hasattr(w, 'bn') else tf.identity - - # activations - if isinstance(w.act, nn.LeakyReLU): - self.act = (lambda x: keras.activations.relu(x, alpha=0.1)) if act else tf.identity - elif isinstance(w.act, nn.Hardswish): - self.act = (lambda x: x * tf.nn.relu6(x + 3) * 0.166666667) if act else tf.identity - elif isinstance(w.act, (nn.SiLU, SiLU)): - self.act = (lambda x: keras.activations.swish(x)) if act else tf.identity - else: - raise Exception(f'no matching TensorFlow activation found for {w.act}') + self.act = activations(w.act) if act else tf.identity def call(self, inputs): return self.act(self.bn(self.conv(inputs))) +class TFDWConv(keras.layers.Layer): + # Depthwise convolution + def __init__(self, c1, c2, k=1, s=1, p=None, act=True, w=None): + # ch_in, ch_out, weights, kernel, stride, padding, groups + super().__init__() + assert c2 % c1 == 0, f'TFDWConv() output={c2} must be a multiple of input={c1} channels' + conv = keras.layers.DepthwiseConv2D( + kernel_size=k, + depth_multiplier=c2 // c1, + strides=s, + padding='SAME' if s == 1 else 'VALID', + use_bias=not hasattr(w, 'bn'), + depthwise_initializer=keras.initializers.Constant(w.conv.weight.permute(2, 3, 1, 0).numpy()), + bias_initializer='zeros' if hasattr(w, 'bn') else keras.initializers.Constant(w.conv.bias.numpy())) + self.conv = conv if s == 1 else keras.Sequential([TFPad(autopad(k, p)), conv]) + self.bn = TFBN(w.bn) if hasattr(w, 'bn') else tf.identity + self.act = activations(w.act) if act else tf.identity + + def call(self, inputs): + return self.act(self.bn(self.conv(inputs))) + + +class TFDWConvTranspose2d(keras.layers.Layer): + # Depthwise ConvTranspose2d + def __init__(self, c1, c2, k=1, s=1, p1=0, p2=0, w=None): + # ch_in, ch_out, weights, kernel, stride, padding, groups + super().__init__() + assert c1 == c2, f'TFDWConv() output={c2} must be equal to input={c1} channels' + assert k == 4 and p1 == 1, 'TFDWConv() only valid for k=4 and p1=1' + weight, bias = w.weight.permute(2, 3, 1, 0).numpy(), w.bias.numpy() + self.c1 = c1 + self.conv = [ + keras.layers.Conv2DTranspose(filters=1, + kernel_size=k, + strides=s, + padding='VALID', + output_padding=p2, + use_bias=True, + kernel_initializer=keras.initializers.Constant(weight[..., i:i + 1]), + bias_initializer=keras.initializers.Constant(bias[i])) for i in range(c1)] + + def call(self, inputs): + return tf.concat([m(x) for m, x in zip(self.conv, tf.split(inputs, self.c1, 3))], 3)[:, 1:-1, 1:-1] + + class TFFocus(keras.layers.Layer): # Focus wh information into c-space def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True, w=None): @@ -131,10 +141,8 @@ class TFFocus(keras.layers.Layer): def call(self, inputs): # x(b,w,h,c) -> y(b,w/2,h/2,4c) # inputs = inputs / 255 # normalize 0-255 to 0-1 - return self.conv(tf.concat([inputs[:, ::2, ::2, :], - inputs[:, 1::2, ::2, :], - inputs[:, ::2, 1::2, :], - inputs[:, 1::2, 1::2, :]], 3)) + inputs = [inputs[:, ::2, ::2, :], inputs[:, 1::2, ::2, :], inputs[:, ::2, 1::2, :], inputs[:, 1::2, 1::2, :]] + return self.conv(tf.concat(inputs, 3)) class TFBottleneck(keras.layers.Layer): @@ -150,15 +158,32 @@ class TFBottleneck(keras.layers.Layer): return inputs + self.cv2(self.cv1(inputs)) if self.add else self.cv2(self.cv1(inputs)) +class TFCrossConv(keras.layers.Layer): + # Cross Convolution + def __init__(self, c1, c2, k=3, s=1, g=1, e=1.0, shortcut=False, w=None): + super().__init__() + c_ = int(c2 * e) # hidden channels + self.cv1 = TFConv(c1, c_, (1, k), (1, s), w=w.cv1) + self.cv2 = TFConv(c_, c2, (k, 1), (s, 1), g=g, w=w.cv2) + self.add = shortcut and c1 == c2 + + def call(self, inputs): + return inputs + self.cv2(self.cv1(inputs)) if self.add else self.cv2(self.cv1(inputs)) + + class TFConv2d(keras.layers.Layer): # Substitution for PyTorch nn.Conv2D def __init__(self, c1, c2, k, s=1, g=1, bias=True, w=None): super().__init__() assert g == 1, "TF v2.2 Conv2D does not support 'groups' argument" - self.conv = keras.layers.Conv2D( - c2, k, s, 'VALID', use_bias=bias, - kernel_initializer=keras.initializers.Constant(w.weight.permute(2, 3, 1, 0).numpy()), - bias_initializer=keras.initializers.Constant(w.bias.numpy()) if bias else None, ) + self.conv = keras.layers.Conv2D(filters=c2, + kernel_size=k, + strides=s, + padding='VALID', + use_bias=bias, + kernel_initializer=keras.initializers.Constant( + w.weight.permute(2, 3, 1, 0).numpy()), + bias_initializer=keras.initializers.Constant(w.bias.numpy()) if bias else None) def call(self, inputs): return self.conv(inputs) @@ -175,7 +200,7 @@ class TFBottleneckCSP(keras.layers.Layer): self.cv3 = TFConv2d(c_, c_, 1, 1, bias=False, w=w.cv3) self.cv4 = TFConv(2 * c_, c2, 1, 1, w=w.cv4) self.bn = TFBN(w.bn) - self.act = lambda x: keras.activations.relu(x, alpha=0.1) + self.act = lambda x: keras.activations.swish(x) self.m = keras.Sequential([TFBottleneck(c_, c_, shortcut, g, e=1.0, w=w.m[j]) for j in range(n)]) def call(self, inputs): @@ -199,6 +224,22 @@ class TFC3(keras.layers.Layer): return self.cv3(tf.concat((self.m(self.cv1(inputs)), self.cv2(inputs)), axis=3)) +class TFC3x(keras.layers.Layer): + # 3 module with cross-convolutions + def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5, w=None): + # ch_in, ch_out, number, shortcut, groups, expansion + super().__init__() + c_ = int(c2 * e) # hidden channels + self.cv1 = TFConv(c1, c_, 1, 1, w=w.cv1) + self.cv2 = TFConv(c1, c_, 1, 1, w=w.cv2) + self.cv3 = TFConv(2 * c_, c2, 1, 1, w=w.cv3) + self.m = keras.Sequential([ + TFCrossConv(c_, c_, k=3, s=1, g=g, e=1.0, shortcut=shortcut, w=w.m[j]) for j in range(n)]) + + def call(self, inputs): + return self.cv3(tf.concat((self.m(self.cv1(inputs)), self.cv2(inputs)), axis=3)) + + class TFSPP(keras.layers.Layer): # Spatial pyramid pooling layer used in YOLOv3-SPP def __init__(self, c1, c2, k=(5, 9, 13), w=None): @@ -230,6 +271,7 @@ class TFSPPF(keras.layers.Layer): class TFDetect(keras.layers.Layer): + # TF YOLOv3 Detect layer def __init__(self, nc=80, anchors=(), ch=(), imgsz=(640, 640), w=None): # detection layer super().__init__() self.stride = tf.convert_to_tensor(w.stride.numpy(), dtype=tf.float32) @@ -239,8 +281,7 @@ class TFDetect(keras.layers.Layer): self.na = len(anchors[0]) // 2 # number of anchors self.grid = [tf.zeros(1)] * self.nl # init grid self.anchors = tf.convert_to_tensor(w.anchors.numpy(), dtype=tf.float32) - self.anchor_grid = tf.reshape(self.anchors * tf.reshape(self.stride, [self.nl, 1, 1]), - [self.nl, 1, -1, 1, 2]) + self.anchor_grid = tf.reshape(self.anchors * tf.reshape(self.stride, [self.nl, 1, 1]), [self.nl, 1, -1, 1, 2]) self.m = [TFConv2d(x, self.no * self.na, 1, w=w.m[i]) for i, x in enumerate(ch)] self.training = False # set to False after building model self.imgsz = imgsz @@ -255,19 +296,21 @@ class TFDetect(keras.layers.Layer): x.append(self.m[i](inputs[i])) # x(bs,20,20,255) to x(bs,3,20,20,85) ny, nx = self.imgsz[0] // self.stride[i], self.imgsz[1] // self.stride[i] - x[i] = tf.transpose(tf.reshape(x[i], [-1, ny * nx, self.na, self.no]), [0, 2, 1, 3]) + x[i] = tf.reshape(x[i], [-1, ny * nx, self.na, self.no]) if not self.training: # inference - y = tf.sigmoid(x[i]) - xy = (y[..., 0:2] * 2 - 0.5 + self.grid[i]) * self.stride[i] # xy - wh = (y[..., 2:4] * 2) ** 2 * self.anchor_grid[i] + y = x[i] + grid = tf.transpose(self.grid[i], [0, 2, 1, 3]) - 0.5 + anchor_grid = tf.transpose(self.anchor_grid[i], [0, 2, 1, 3]) * 4 + xy = (tf.sigmoid(y[..., 0:2]) * 2 + grid) * self.stride[i] # xy + wh = tf.sigmoid(y[..., 2:4]) ** 2 * anchor_grid # Normalize xywh to 0-1 to reduce calibration error xy /= tf.constant([[self.imgsz[1], self.imgsz[0]]], dtype=tf.float32) wh /= tf.constant([[self.imgsz[1], self.imgsz[0]]], dtype=tf.float32) - y = tf.concat([xy, wh, y[..., 4:]], -1) - z.append(tf.reshape(y, [-1, 3 * ny * nx, self.no])) + y = tf.concat([xy, wh, tf.sigmoid(y[..., 4:5 + self.nc]), y[..., 5 + self.nc:]], -1) + z.append(tf.reshape(y, [-1, self.na * ny * nx, self.no])) - return x if self.training else (tf.concat(z, 1), x) + return tf.transpose(x, [0, 2, 1, 3]) if self.training else (tf.concat(z, 1),) @staticmethod def _make_grid(nx=20, ny=20): @@ -277,11 +320,44 @@ class TFDetect(keras.layers.Layer): return tf.cast(tf.reshape(tf.stack([xv, yv], 2), [1, 1, ny * nx, 2]), dtype=tf.float32) +class TFSegment(TFDetect): + # YOLOv3 Segment head for segmentation models + def __init__(self, nc=80, anchors=(), nm=32, npr=256, ch=(), imgsz=(640, 640), w=None): + super().__init__(nc, anchors, ch, imgsz, w) + self.nm = nm # number of masks + self.npr = npr # number of protos + self.no = 5 + nc + self.nm # number of outputs per anchor + self.m = [TFConv2d(x, self.no * self.na, 1, w=w.m[i]) for i, x in enumerate(ch)] # output conv + self.proto = TFProto(ch[0], self.npr, self.nm, w=w.proto) # protos + self.detect = TFDetect.call + + def call(self, x): + p = self.proto(x[0]) + # p = TFUpsample(None, scale_factor=4, mode='nearest')(self.proto(x[0])) # (optional) full-size protos + p = tf.transpose(p, [0, 3, 1, 2]) # from shape(1,160,160,32) to shape(1,32,160,160) + x = self.detect(self, x) + return (x, p) if self.training else (x[0], p) + + +class TFProto(keras.layers.Layer): + + def __init__(self, c1, c_=256, c2=32, w=None): + super().__init__() + self.cv1 = TFConv(c1, c_, k=3, w=w.cv1) + self.upsample = TFUpsample(None, scale_factor=2, mode='nearest') + self.cv2 = TFConv(c_, c_, k=3, w=w.cv2) + self.cv3 = TFConv(c_, c2, w=w.cv3) + + def call(self, inputs): + return self.cv3(self.cv2(self.upsample(self.cv1(inputs)))) + + class TFUpsample(keras.layers.Layer): + # TF version of torch.nn.Upsample() def __init__(self, size, scale_factor, mode, w=None): # warning: all arguments needed including 'w' super().__init__() - assert scale_factor == 2, "scale_factor must be 2" - self.upsample = lambda x: tf.image.resize(x, (x.shape[1] * 2, x.shape[2] * 2), method=mode) + assert scale_factor % 2 == 0, "scale_factor must be multiple of 2" + self.upsample = lambda x: tf.image.resize(x, (x.shape[1] * scale_factor, x.shape[2] * scale_factor), mode) # self.upsample = keras.layers.UpSampling2D(size=scale_factor, interpolation=mode) # with default arguments: align_corners=False, half_pixel_centers=False # self.upsample = lambda x: tf.raw_ops.ResizeNearestNeighbor(images=x, @@ -292,6 +368,7 @@ class TFUpsample(keras.layers.Layer): class TFConcat(keras.layers.Layer): + # TF version of torch.concat() def __init__(self, dimension=1, w=None): super().__init__() assert dimension == 1, "convert only NCHW to NHWC concat" @@ -318,22 +395,26 @@ def parse_model(d, ch, model, imgsz): # model_dict, input_channels(3) pass n = max(round(n * gd), 1) if n > 1 else n # depth gain - if m in [nn.Conv2d, Conv, Bottleneck, SPP, SPPF, DWConv, MixConv2d, Focus, CrossConv, BottleneckCSP, C3]: + if m in [ + nn.Conv2d, Conv, DWConv, DWConvTranspose2d, Bottleneck, SPP, SPPF, MixConv2d, Focus, CrossConv, + BottleneckCSP, C3, C3x]: c1, c2 = ch[f], args[0] c2 = make_divisible(c2 * gw, 8) if c2 != no else c2 args = [c1, c2, *args[1:]] - if m in [BottleneckCSP, C3]: + if m in [BottleneckCSP, C3, C3x]: args.insert(2, n) n = 1 elif m is nn.BatchNorm2d: args = [ch[f]] elif m is Concat: c2 = sum(ch[-1 if x == -1 else x + 1] for x in f) - elif m is Detect: + elif m in [Detect, Segment]: args.append([ch[x + 1] for x in f]) if isinstance(args[1], int): # number of anchors args[1] = [list(range(args[1] * 2))] * len(f) + if m is Segment: + args[3] = make_divisible(args[3] * gw, 8) args.append(imgsz) else: c2 = ch[f] @@ -354,7 +435,8 @@ def parse_model(d, ch, model, imgsz): # model_dict, input_channels(3) class TFModel: - def __init__(self, cfg='yolov3.yaml', ch=3, nc=None, model=None, imgsz=(640, 640)): # model, channels, classes + # TF YOLOv3 model + def __init__(self, cfg='yolov5s.yaml', ch=3, nc=None, model=None, imgsz=(640, 640)): # model, channels, classes super().__init__() if isinstance(cfg, dict): self.yaml = cfg # model dict @@ -370,11 +452,17 @@ class TFModel: self.yaml['nc'] = nc # override yaml value self.model, self.savelist = parse_model(deepcopy(self.yaml), ch=[ch], model=model, imgsz=imgsz) - def predict(self, inputs, tf_nms=False, agnostic_nms=False, topk_per_class=100, topk_all=100, iou_thres=0.45, + def predict(self, + inputs, + tf_nms=False, + agnostic_nms=False, + topk_per_class=100, + topk_all=100, + iou_thres=0.45, conf_thres=0.25): y = [] # outputs x = inputs - for i, m in enumerate(self.model.layers): + for m in self.model.layers: if m.f != -1: # if not from previous layer x = y[m.f] if isinstance(m.f, int) else [x if j == -1 else y[j] for j in m.f] # from earlier layers @@ -389,15 +477,18 @@ class TFModel: scores = probs * classes if agnostic_nms: nms = AgnosticNMS()((boxes, classes, scores), topk_all, iou_thres, conf_thres) - return nms, x[1] else: boxes = tf.expand_dims(boxes, 2) - nms = tf.image.combined_non_max_suppression( - boxes, scores, topk_per_class, topk_all, iou_thres, conf_thres, clip_boxes=False) - return nms, x[1] - - return x[0] # output only first tensor [1,6300,85] = [xywh, conf, class0, class1, ...] - # x = x[0][0] # [x(1,6300,85), ...] to x(6300,85) + nms = tf.image.combined_non_max_suppression(boxes, + scores, + topk_per_class, + topk_all, + iou_thres, + conf_thres, + clip_boxes=False) + return (nms,) + return x # output [1,6300,85] = [xywh, conf, class0, class1, ...] + # x = x[0] # [x(1,6300,85), ...] to x(6300,85) # xywh = x[..., :4] # x(6300,4) boxes # conf = x[..., 4:5] # x(6300,1) confidences # cls = tf.reshape(tf.cast(tf.argmax(x[..., 5:], axis=1), tf.float32), (-1, 1)) # x(6300,1) classes @@ -414,7 +505,8 @@ class AgnosticNMS(keras.layers.Layer): # TF Agnostic NMS def call(self, input, topk_all, iou_thres, conf_thres): # wrap map_fn to avoid TypeSpec related error https://stackoverflow.com/a/65809989/3036450 - return tf.map_fn(lambda x: self._nms(x, topk_all, iou_thres, conf_thres), input, + return tf.map_fn(lambda x: self._nms(x, topk_all, iou_thres, conf_thres), + input, fn_output_signature=(tf.float32, tf.float32, tf.float32, tf.int32), name='agnostic_nms') @@ -423,50 +515,69 @@ class AgnosticNMS(keras.layers.Layer): boxes, classes, scores = x class_inds = tf.cast(tf.argmax(classes, axis=-1), tf.float32) scores_inp = tf.reduce_max(scores, -1) - selected_inds = tf.image.non_max_suppression( - boxes, scores_inp, max_output_size=topk_all, iou_threshold=iou_thres, score_threshold=conf_thres) + selected_inds = tf.image.non_max_suppression(boxes, + scores_inp, + max_output_size=topk_all, + iou_threshold=iou_thres, + score_threshold=conf_thres) selected_boxes = tf.gather(boxes, selected_inds) padded_boxes = tf.pad(selected_boxes, paddings=[[0, topk_all - tf.shape(selected_boxes)[0]], [0, 0]], - mode="CONSTANT", constant_values=0.0) + mode="CONSTANT", + constant_values=0.0) selected_scores = tf.gather(scores_inp, selected_inds) padded_scores = tf.pad(selected_scores, paddings=[[0, topk_all - tf.shape(selected_boxes)[0]]], - mode="CONSTANT", constant_values=-1.0) + mode="CONSTANT", + constant_values=-1.0) selected_classes = tf.gather(class_inds, selected_inds) padded_classes = tf.pad(selected_classes, paddings=[[0, topk_all - tf.shape(selected_boxes)[0]]], - mode="CONSTANT", constant_values=-1.0) + mode="CONSTANT", + constant_values=-1.0) valid_detections = tf.shape(selected_inds)[0] return padded_boxes, padded_scores, padded_classes, valid_detections +def activations(act=nn.SiLU): + # Returns TF activation from input PyTorch activation + if isinstance(act, nn.LeakyReLU): + return lambda x: keras.activations.relu(x, alpha=0.1) + elif isinstance(act, nn.Hardswish): + return lambda x: x * tf.nn.relu6(x + 3) * 0.166666667 + elif isinstance(act, (nn.SiLU, SiLU)): + return lambda x: keras.activations.swish(x) + else: + raise Exception(f'no matching TensorFlow activation found for PyTorch activation {act}') + + def representative_dataset_gen(dataset, ncalib=100): # Representative dataset generator for use with converter.representative_dataset, returns a generator of np arrays for n, (path, img, im0s, vid_cap, string) in enumerate(dataset): - input = np.transpose(img, [1, 2, 0]) - input = np.expand_dims(input, axis=0).astype(np.float32) - input /= 255 - yield [input] + im = np.transpose(img, [1, 2, 0]) + im = np.expand_dims(im, axis=0).astype(np.float32) + im /= 255 + yield [im] if n >= ncalib: break -def run(weights=ROOT / 'yolov3.pt', # weights path +def run( + weights=ROOT / 'yolov5s.pt', # weights path imgsz=(640, 640), # inference size h,w batch_size=1, # batch size dynamic=False, # dynamic batch size - ): +): # PyTorch model im = torch.zeros((batch_size, 3, *imgsz)) # BCHW image - model = attempt_load(weights, map_location=torch.device('cpu'), inplace=True, fuse=False) - y = model(im) # inference + model = attempt_load(weights, device=torch.device('cpu'), inplace=True, fuse=False) + _ = model(im) # inference model.info() # TensorFlow model im = tf.zeros((batch_size, *imgsz, 3)) # BHWC image tf_model = TFModel(cfg=model.yaml, model=model, nc=model.nc, imgsz=imgsz) - y = tf_model.predict(im) # inference + _ = tf_model.predict(im) # inference # Keras model im = keras.Input(shape=(*imgsz, 3), batch_size=None if dynamic else batch_size) @@ -476,146 +587,15 @@ def run(weights=ROOT / 'yolov3.pt', # weights path LOGGER.info('PyTorch, TensorFlow and Keras models successfully verified.\nUse export.py for TF model export.') -@keras_export("keras.layers.ZeroPadding2D") -class ZeroPadding2D(Layer): - """Zero-padding layer for 2D input (e.g. picture). - - This layer can add rows and columns of zeros - at the top, bottom, left and right side of an image tensor. - - Examples: - - >>> input_shape = (1, 1, 2, 2) - >>> x = np.arange(np.prod(input_shape)).reshape(input_shape) - >>> print(x) - [[[[0 1] - [2 3]]]] - >>> y = tf.keras.layers.ZeroPadding2D(padding=1)(x) - >>> print(y) - tf.Tensor( - [[[[0 0] - [0 0] - [0 0] - [0 0]] - [[0 0] - [0 1] - [2 3] - [0 0]] - [[0 0] - [0 0] - [0 0] - [0 0]]]], shape=(1, 3, 4, 2), dtype=int64) - - Args: - padding: Int, or tuple of 2 ints, or tuple of 2 tuples of 2 ints. - - If int: the same symmetric padding - is applied to height and width. - - If tuple of 2 ints: - interpreted as two different - symmetric padding values for height and width: - `(symmetric_height_pad, symmetric_width_pad)`. - - If tuple of 2 tuples of 2 ints: - interpreted as - `((top_pad, bottom_pad), (left_pad, right_pad))` - data_format: A string, - one of `channels_last` (default) or `channels_first`. - The ordering of the dimensions in the inputs. - `channels_last` corresponds to inputs with shape - `(batch_size, height, width, channels)` while `channels_first` - corresponds to inputs with shape - `(batch_size, channels, height, width)`. - It defaults to the `image_data_format` value found in your - Keras config file at `~/.keras/keras.json`. - If you never set it, then it will be "channels_last". - - Input shape: - 4D tensor with shape: - - If `data_format` is `"channels_last"`: - `(batch_size, rows, cols, channels)` - - If `data_format` is `"channels_first"`: - `(batch_size, channels, rows, cols)` - - Output shape: - 4D tensor with shape: - - If `data_format` is `"channels_last"`: - `(batch_size, padded_rows, padded_cols, channels)` - - If `data_format` is `"channels_first"`: - `(batch_size, channels, padded_rows, padded_cols)` - """ - - def __init__(self, padding=(1, 1), data_format=None, **kwargs): - super().__init__(**kwargs) - self.data_format = conv_utils.normalize_data_format(data_format) - if isinstance(padding, int): - self.padding = ((padding, padding), (padding, padding)) - elif hasattr(padding, "__len__"): - if len(padding) == 4: - padding = ((padding[0], padding[1]), (padding[2], padding[3])) - if len(padding) != 2: - raise ValueError( - f"`padding` should have two elements. Received: {padding}." - ) - height_padding = conv_utils.normalize_tuple( - padding[0], 2, "1st entry of padding", allow_zero=True - ) - width_padding = conv_utils.normalize_tuple( - padding[1], 2, "2nd entry of padding", allow_zero=True - ) - self.padding = (height_padding, width_padding) - else: - raise ValueError( - "`padding` should be either an int, " - "a tuple of 2 ints " - "(symmetric_height_pad, symmetric_width_pad), " - "or a tuple of 2 tuples of 2 ints " - "((top_pad, bottom_pad), (left_pad, right_pad)). " - f"Received: {padding}." - ) - self.input_spec = InputSpec(ndim=4) - - def compute_output_shape(self, input_shape): - input_shape = tf.TensorShape(input_shape).as_list() - if self.data_format == "channels_first": - if input_shape[2] is not None: - rows = input_shape[2] + self.padding[0][0] + self.padding[0][1] - else: - rows = None - if input_shape[3] is not None: - cols = input_shape[3] + self.padding[1][0] + self.padding[1][1] - else: - cols = None - return tf.TensorShape([input_shape[0], input_shape[1], rows, cols]) - elif self.data_format == "channels_last": - if input_shape[1] is not None: - rows = input_shape[1] + self.padding[0][0] + self.padding[0][1] - else: - rows = None - if input_shape[2] is not None: - cols = input_shape[2] + self.padding[1][0] + self.padding[1][1] - else: - cols = None - return tf.TensorShape([input_shape[0], rows, cols, input_shape[3]]) - - def call(self, inputs): - return backend.spatial_2d_padding( - inputs, padding=self.padding, data_format=self.data_format - ) - - def get_config(self): - config = {"padding": self.padding, "data_format": self.data_format} - base_config = super().get_config() - return dict(list(base_config.items()) + list(config.items())) - - def parse_opt(): parser = argparse.ArgumentParser() - parser.add_argument('--weights', type=str, default=ROOT / 'yolov3.pt', help='weights path') + parser.add_argument('--weights', type=str, default=ROOT / 'yolov5s.pt', help='weights path') parser.add_argument('--imgsz', '--img', '--img-size', nargs='+', type=int, default=[640], help='inference size h,w') parser.add_argument('--batch-size', type=int, default=1, help='batch size') parser.add_argument('--dynamic', action='store_true', help='dynamic batch size') opt = parser.parse_args() opt.imgsz *= 2 if len(opt.imgsz) == 1 else 1 # expand - print_args(FILE.stem, opt) + print_args(vars(opt)) return opt diff --git a/models/yolo.py b/models/yolo.py index f398d3f9..fbff6da7 100644 --- a/models/yolo.py +++ b/models/yolo.py @@ -3,26 +3,29 @@ YOLO-specific modules Usage: - $ python path/to/models/yolo.py --cfg yolov3.yaml + $ python models/yolo.py --cfg yolov5s.yaml """ import argparse +import os +import platform import sys from copy import deepcopy from pathlib import Path FILE = Path(__file__).resolve() -ROOT = FILE.parents[1] # root directory +ROOT = FILE.parents[1] # YOLOv3 root directory if str(ROOT) not in sys.path: sys.path.append(str(ROOT)) # add ROOT to PATH -# ROOT = ROOT.relative_to(Path.cwd()) # relative +if platform.system() != 'Windows': + ROOT = Path(os.path.relpath(ROOT, Path.cwd())) # relative from models.common import * from models.experimental import * from utils.autoanchor import check_anchor_order from utils.general import LOGGER, check_version, check_yaml, make_divisible, print_args from utils.plots import feature_visualization -from utils.torch_utils import (copy_attr, fuse_conv_and_bn, initialize_weights, model_info, scale_img, select_device, +from utils.torch_utils import (fuse_conv_and_bn, initialize_weights, model_info, profile, scale_img, select_device, time_sync) try: @@ -32,8 +35,10 @@ except ImportError: class Detect(nn.Module): + # YOLOv3 Detect head for detection models stride = None # strides computed during build - onnx_dynamic = False # ONNX export parameter + dynamic = False # force grid reconstruction + export = False # export mode def __init__(self, nc=80, anchors=(), ch=(), inplace=True): # detection layer super().__init__() @@ -41,11 +46,11 @@ class Detect(nn.Module): self.no = nc + 5 # number of outputs per anchor self.nl = len(anchors) # number of detection layers self.na = len(anchors[0]) // 2 # number of anchors - self.grid = [torch.zeros(1)] * self.nl # init grid - self.anchor_grid = [torch.zeros(1)] * self.nl # init anchor grid + self.grid = [torch.empty(0) for _ in range(self.nl)] # init grid + self.anchor_grid = [torch.empty(0) for _ in range(self.nl)] # init anchor grid self.register_buffer('anchors', torch.tensor(anchors).float().view(self.nl, -1, 2)) # shape(nl,na,2) self.m = nn.ModuleList(nn.Conv2d(x, self.no * self.na, 1) for x in ch) # output conv - self.inplace = inplace # use in-place ops (e.g. slice assignment) + self.inplace = inplace # use inplace ops (e.g. slice assignment) def forward(self, x): z = [] # inference output @@ -55,35 +60,110 @@ class Detect(nn.Module): x[i] = x[i].view(bs, self.na, self.no, ny, nx).permute(0, 1, 3, 4, 2).contiguous() if not self.training: # inference - if self.onnx_dynamic or self.grid[i].shape[2:4] != x[i].shape[2:4]: + if self.dynamic or self.grid[i].shape[2:4] != x[i].shape[2:4]: self.grid[i], self.anchor_grid[i] = self._make_grid(nx, ny, i) - y = x[i].sigmoid() - if self.inplace: - y[..., 0:2] = (y[..., 0:2] * 2 - 0.5 + self.grid[i]) * self.stride[i] # xy - y[..., 2:4] = (y[..., 2:4] * 2) ** 2 * self.anchor_grid[i] # wh - else: # for on AWS Inferentia https://github.com/ultralytics/yolov5/pull/2953 - xy = (y[..., 0:2] * 2 - 0.5 + self.grid[i]) * self.stride[i] # xy - wh = (y[..., 2:4] * 2) ** 2 * self.anchor_grid[i] # wh - y = torch.cat((xy, wh, y[..., 4:]), -1) - z.append(y.view(bs, -1, self.no)) + if isinstance(self, Segment): # (boxes + masks) + xy, wh, conf, mask = x[i].split((2, 2, self.nc + 1, self.no - self.nc - 5), 4) + xy = (xy.sigmoid() * 2 + self.grid[i]) * self.stride[i] # xy + wh = (wh.sigmoid() * 2) ** 2 * self.anchor_grid[i] # wh + y = torch.cat((xy, wh, conf.sigmoid(), mask), 4) + else: # Detect (boxes only) + xy, wh, conf = x[i].sigmoid().split((2, 2, self.nc + 1), 4) + xy = (xy * 2 + self.grid[i]) * self.stride[i] # xy + wh = (wh * 2) ** 2 * self.anchor_grid[i] # wh + y = torch.cat((xy, wh, conf), 4) + z.append(y.view(bs, self.na * nx * ny, self.no)) - return x if self.training else (torch.cat(z, 1), x) + return x if self.training else (torch.cat(z, 1),) if self.export else (torch.cat(z, 1), x) - def _make_grid(self, nx=20, ny=20, i=0): + def _make_grid(self, nx=20, ny=20, i=0, torch_1_10=check_version(torch.__version__, '1.10.0')): d = self.anchors[i].device - if check_version(torch.__version__, '1.10.0'): # torch>=1.10.0 meshgrid workaround for torch>=0.7 compatibility - yv, xv = torch.meshgrid([torch.arange(ny).to(d), torch.arange(nx).to(d)], indexing='ij') - else: - yv, xv = torch.meshgrid([torch.arange(ny).to(d), torch.arange(nx).to(d)]) - grid = torch.stack((xv, yv), 2).expand((1, self.na, ny, nx, 2)).float() - anchor_grid = (self.anchors[i].clone() * self.stride[i]) \ - .view((1, self.na, 1, 1, 2)).expand((1, self.na, ny, nx, 2)).float() + t = self.anchors[i].dtype + shape = 1, self.na, ny, nx, 2 # grid shape + y, x = torch.arange(ny, device=d, dtype=t), torch.arange(nx, device=d, dtype=t) + yv, xv = torch.meshgrid(y, x, indexing='ij') if torch_1_10 else torch.meshgrid(y, x) # torch>=0.7 compatibility + grid = torch.stack((xv, yv), 2).expand(shape) - 0.5 # add grid offset, i.e. y = 2.0 * x - 0.5 + anchor_grid = (self.anchors[i] * self.stride[i]).view((1, self.na, 1, 1, 2)).expand(shape) return grid, anchor_grid -class Model(nn.Module): - def __init__(self, cfg='yolov3.yaml', ch=3, nc=None, anchors=None): # model, input channels, number of classes +class Segment(Detect): + # YOLOv3 Segment head for segmentation models + def __init__(self, nc=80, anchors=(), nm=32, npr=256, ch=(), inplace=True): + super().__init__(nc, anchors, ch, inplace) + self.nm = nm # number of masks + self.npr = npr # number of protos + self.no = 5 + nc + self.nm # number of outputs per anchor + self.m = nn.ModuleList(nn.Conv2d(x, self.no * self.na, 1) for x in ch) # output conv + self.proto = Proto(ch[0], self.npr, self.nm) # protos + self.detect = Detect.forward + + def forward(self, x): + p = self.proto(x[0]) + x = self.detect(self, x) + return (x, p) if self.training else (x[0], p) if self.export else (x[0], p, x[1]) + + +class BaseModel(nn.Module): + # YOLOv3 base model + def forward(self, x, profile=False, visualize=False): + return self._forward_once(x, profile, visualize) # single-scale inference, train + + def _forward_once(self, x, profile=False, visualize=False): + y, dt = [], [] # outputs + for m in self.model: + if m.f != -1: # if not from previous layer + x = y[m.f] if isinstance(m.f, int) else [x if j == -1 else y[j] for j in m.f] # from earlier layers + if profile: + self._profile_one_layer(m, x, dt) + x = m(x) # run + y.append(x if m.i in self.save else None) # save output + if visualize: + feature_visualization(x, m.type, m.i, save_dir=visualize) + return x + + def _profile_one_layer(self, m, x, dt): + c = m == self.model[-1] # is final layer, copy input as inplace fix + o = thop.profile(m, inputs=(x.copy() if c else x,), verbose=False)[0] / 1E9 * 2 if thop else 0 # FLOPs + t = time_sync() + for _ in range(10): + m(x.copy() if c else x) + dt.append((time_sync() - t) * 100) + if m == self.model[0]: + LOGGER.info(f"{'time (ms)':>10s} {'GFLOPs':>10s} {'params':>10s} module") + LOGGER.info(f'{dt[-1]:10.2f} {o:10.2f} {m.np:10.0f} {m.type}') + if c: + LOGGER.info(f"{sum(dt):10.2f} {'-':>10s} {'-':>10s} Total") + + def fuse(self): # fuse model Conv2d() + BatchNorm2d() layers + LOGGER.info('Fusing layers... ') + for m in self.model.modules(): + if isinstance(m, (Conv, DWConv)) and hasattr(m, 'bn'): + m.conv = fuse_conv_and_bn(m.conv, m.bn) # update conv + delattr(m, 'bn') # remove batchnorm + m.forward = m.forward_fuse # update forward + self.info() + return self + + def info(self, verbose=False, img_size=640): # print model information + model_info(self, verbose, img_size) + + def _apply(self, fn): + # Apply to(), cpu(), cuda(), half() to model tensors that are not parameters or registered buffers + self = super()._apply(fn) + m = self.model[-1] # Detect() + if isinstance(m, (Detect, Segment)): + m.stride = fn(m.stride) + m.grid = list(map(fn, m.grid)) + if isinstance(m.anchor_grid, list): + m.anchor_grid = list(map(fn, m.anchor_grid)) + return self + + +class DetectionModel(BaseModel): + # YOLOv3 detection model + def __init__(self, cfg='yolov5s.yaml', ch=3, nc=None, anchors=None): # model, input channels, number of classes super().__init__() if isinstance(cfg, dict): self.yaml = cfg # model dict @@ -107,12 +187,13 @@ class Model(nn.Module): # Build strides, anchors m = self.model[-1] # Detect() - if isinstance(m, Detect): + if isinstance(m, (Detect, Segment)): s = 256 # 2x min stride m.inplace = self.inplace - m.stride = torch.tensor([s / x.shape[-2] for x in self.forward(torch.zeros(1, ch, s, s))]) # forward - m.anchors /= m.stride.view(-1, 1, 1) + forward = lambda x: self.forward(x)[0] if isinstance(m, Segment) else self.forward(x) + m.stride = torch.tensor([s / x.shape[-2] for x in forward(torch.zeros(1, ch, s, s))]) # forward check_anchor_order(m) + m.anchors /= m.stride.view(-1, 1, 1) self.stride = m.stride self._initialize_biases() # only run once @@ -140,19 +221,6 @@ class Model(nn.Module): y = self._clip_augmented(y) # clip augmented tails return torch.cat(y, 1), None # augmented inference, train - def _forward_once(self, x, profile=False, visualize=False): - y, dt = [], [] # outputs - for m in self.model: - if m.f != -1: # if not from previous layer - x = y[m.f] if isinstance(m.f, int) else [x if j == -1 else y[j] for j in m.f] # from earlier layers - if profile: - self._profile_one_layer(m, x, dt) - x = m(x) # run - y.append(x if m.i in self.save else None) # save output - if visualize: - feature_visualization(x, m.type, m.i, save_dir=visualize) - return x - def _descale_pred(self, p, flips, scale, img_size): # de-scale predictions following augmented inference (inverse operation) if self.inplace: @@ -181,19 +249,6 @@ class Model(nn.Module): y[-1] = y[-1][:, i:] # small return y - def _profile_one_layer(self, m, x, dt): - c = isinstance(m, Detect) # is final layer, copy input as inplace fix - o = thop.profile(m, inputs=(x.copy() if c else x,), verbose=False)[0] / 1E9 * 2 if thop else 0 # FLOPs - t = time_sync() - for _ in range(10): - m(x.copy() if c else x) - dt.append((time_sync() - t) * 100) - if m == self.model[0]: - LOGGER.info(f"{'time (ms)':>10s} {'GFLOPs':>10s} {'params':>10s} {'module'}") - LOGGER.info(f'{dt[-1]:10.2f} {o:10.2f} {m.np:10.0f} {m.type}') - if c: - LOGGER.info(f"{sum(dt):10.2f} {'-':>10s} {'-':>10s} Total") - def _initialize_biases(self, cf=None): # initialize biases into Detect(), cf is class frequency # https://arxiv.org/abs/1708.02002 section 3.3 # cf = torch.bincount(torch.tensor(np.concatenate(dataset.labels, 0)[:, 0]).long(), minlength=nc) + 1. @@ -201,55 +256,52 @@ class Model(nn.Module): for mi, s in zip(m.m, m.stride): # from b = mi.bias.view(m.na, -1) # conv.bias(255) to (3,85) b.data[:, 4] += math.log(8 / (640 / s) ** 2) # obj (8 objects per 640 image) - b.data[:, 5:] += math.log(0.6 / (m.nc - 0.999999)) if cf is None else torch.log(cf / cf.sum()) # cls + b.data[:, 5:5 + m.nc] += math.log(0.6 / (m.nc - 0.99999)) if cf is None else torch.log(cf / cf.sum()) # cls mi.bias = torch.nn.Parameter(b.view(-1), requires_grad=True) - def _print_biases(self): - m = self.model[-1] # Detect() module - for mi in m.m: # from - b = mi.bias.detach().view(m.na, -1).T # conv.bias(255) to (3,85) - LOGGER.info( - ('%6g Conv2d.bias:' + '%10.3g' * 6) % (mi.weight.shape[1], *b[:5].mean(1).tolist(), b[5:].mean())) - # def _print_weights(self): - # for m in self.model.modules(): - # if type(m) is Bottleneck: - # LOGGER.info('%10.3g' % (m.w.detach().sigmoid() * 2)) # shortcut weights +Model = DetectionModel # retain 'Model' class for backwards compatibility - def fuse(self): # fuse model Conv2d() + BatchNorm2d() layers - LOGGER.info('Fusing layers... ') - for m in self.model.modules(): - if isinstance(m, (Conv, DWConv)) and hasattr(m, 'bn'): - m.conv = fuse_conv_and_bn(m.conv, m.bn) # update conv - delattr(m, 'bn') # remove batchnorm - m.forward = m.forward_fuse # update forward - self.info() - return self - def autoshape(self): # add AutoShape module - LOGGER.info('Adding AutoShape... ') - m = AutoShape(self) # wrap model - copy_attr(m, self, include=('yaml', 'nc', 'hyp', 'names', 'stride'), exclude=()) # copy attributes - return m +class SegmentationModel(DetectionModel): + # segmentation model + def __init__(self, cfg='yolov5s-seg.yaml', ch=3, nc=None, anchors=None): + super().__init__(cfg, ch, nc, anchors) - def info(self, verbose=False, img_size=640): # print model information - model_info(self, verbose, img_size) - def _apply(self, fn): - # Apply to(), cpu(), cuda(), half() to model tensors that are not parameters or registered buffers - self = super()._apply(fn) - m = self.model[-1] # Detect() - if isinstance(m, Detect): - m.stride = fn(m.stride) - m.grid = list(map(fn, m.grid)) - if isinstance(m.anchor_grid, list): - m.anchor_grid = list(map(fn, m.anchor_grid)) - return self +class ClassificationModel(BaseModel): + # classification model + def __init__(self, cfg=None, model=None, nc=1000, cutoff=10): # yaml, model, number of classes, cutoff index + super().__init__() + self._from_detection_model(model, nc, cutoff) if model is not None else self._from_yaml(cfg) + + def _from_detection_model(self, model, nc=1000, cutoff=10): + # Create a classification model from a detection model + if isinstance(model, DetectMultiBackend): + model = model.model # unwrap DetectMultiBackend + model.model = model.model[:cutoff] # backbone + m = model.model[-1] # last layer + ch = m.conv.in_channels if hasattr(m, 'conv') else m.cv1.conv.in_channels # ch into module + c = Classify(ch, nc) # Classify() + c.i, c.f, c.type = m.i, m.f, 'models.common.Classify' # index, from, type + model.model[-1] = c # replace + self.model = model.model + self.stride = model.stride + self.save = [] + self.nc = nc + + def _from_yaml(self, cfg): + # Create a classification model from a *.yaml file + self.model = None def parse_model(d, ch): # model_dict, input_channels(3) + # Parse a model.yaml dictionary LOGGER.info(f"\n{'':>3}{'from':>18}{'n':>3}{'params':>10} {'module':<40}{'arguments':<30}") - anchors, nc, gd, gw = d['anchors'], d['nc'], d['depth_multiple'], d['width_multiple'] + anchors, nc, gd, gw, act = d['anchors'], d['nc'], d['depth_multiple'], d['width_multiple'], d.get('activation') + if act: + Conv.default_act = eval(act) # redefine default activation, i.e. Conv.default_act = nn.SiLU() + LOGGER.info(f"{colorstr('activation:')} {act}") # print na = (len(anchors[0]) // 2) if isinstance(anchors, list) else anchors # number of anchors no = na * (nc + 5) # number of outputs = anchors * (classes + 5) @@ -257,30 +309,32 @@ def parse_model(d, ch): # model_dict, input_channels(3) for i, (f, n, m, args) in enumerate(d['backbone'] + d['head']): # from, number, module, args m = eval(m) if isinstance(m, str) else m # eval strings for j, a in enumerate(args): - try: + with contextlib.suppress(NameError): args[j] = eval(a) if isinstance(a, str) else a # eval strings - except NameError: - pass n = n_ = max(round(n * gd), 1) if n > 1 else n # depth gain - if m in [Conv, GhostConv, Bottleneck, GhostBottleneck, SPP, SPPF, DWConv, MixConv2d, Focus, CrossConv, - BottleneckCSP, C3, C3TR, C3SPP, C3Ghost]: + if m in { + Conv, GhostConv, Bottleneck, GhostBottleneck, SPP, SPPF, DWConv, MixConv2d, Focus, CrossConv, + BottleneckCSP, C3, C3TR, C3SPP, C3Ghost, nn.ConvTranspose2d, DWConvTranspose2d, C3x}: c1, c2 = ch[f], args[0] if c2 != no: # if not output c2 = make_divisible(c2 * gw, 8) args = [c1, c2, *args[1:]] - if m in [BottleneckCSP, C3, C3TR, C3Ghost]: + if m in {BottleneckCSP, C3, C3TR, C3Ghost, C3x}: args.insert(2, n) # number of repeats n = 1 elif m is nn.BatchNorm2d: args = [ch[f]] elif m is Concat: c2 = sum(ch[x] for x in f) - elif m is Detect: + # TODO: channel, gw, gd + elif m in {Detect, Segment}: args.append([ch[x] for x in f]) if isinstance(args[1], int): # number of anchors args[1] = [list(range(args[1] * 2))] * len(f) + if m is Segment: + args[3] = make_divisible(args[3] * gw, 8) elif m is Contract: c2 = ch[f] * args[0] ** 2 elif m is Expand: @@ -303,34 +357,34 @@ def parse_model(d, ch): # model_dict, input_channels(3) if __name__ == '__main__': parser = argparse.ArgumentParser() - parser.add_argument('--cfg', type=str, default='yolov3yaml', help='model.yaml') + parser.add_argument('--cfg', type=str, default='yolov5s.yaml', help='model.yaml') + parser.add_argument('--batch-size', type=int, default=1, help='total batch size for all GPUs') parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') parser.add_argument('--profile', action='store_true', help='profile model speed') + parser.add_argument('--line-profile', action='store_true', help='profile model speed layer by layer') parser.add_argument('--test', action='store_true', help='test all yolo*.yaml') opt = parser.parse_args() opt.cfg = check_yaml(opt.cfg) # check YAML - print_args(FILE.stem, opt) + print_args(vars(opt)) device = select_device(opt.device) # Create model + im = torch.rand(opt.batch_size, 3, 640, 640).to(device) model = Model(opt.cfg).to(device) - model.train() - # Profile - if opt.profile: - img = torch.rand(8 if torch.cuda.is_available() else 1, 3, 640, 640).to(device) - y = model(img, profile=True) + # Options + if opt.line_profile: # profile layer by layer + model(im, profile=True) - # Test all models - if opt.test: + elif opt.profile: # profile forward-backward + results = profile(input=im, ops=[model], n=3) + + elif opt.test: # test all models for cfg in Path(ROOT / 'models').rglob('yolo*.yaml'): try: _ = Model(cfg) except Exception as e: print(f'Error in {cfg}: {e}') - # Tensorboard (not working https://github.com/ultralytics/yolov5/issues/2898) - # from torch.utils.tensorboard import SummaryWriter - # tb_writer = SummaryWriter('.') - # LOGGER.info("Run 'tensorboard --logdir=models' to view tensorboard at http://localhost:6006/") - # tb_writer.add_graph(torch.jit.trace(model, img, strict=False), []) # add model graph + else: # report fused model summary + model.fuse() diff --git a/models/yolov5l.yaml b/models/yolov5l.yaml new file mode 100644 index 00000000..2c3a7c17 --- /dev/null +++ b/models/yolov5l.yaml @@ -0,0 +1,48 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 1.0 # model depth multiple +width_multiple: 1.0 # layer channel multiple +anchors: + - [10,13, 16,30, 33,23] # P3/8 + - [30,61, 62,45, 59,119] # P4/16 + - [116,90, 156,198, 373,326] # P5/32 + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32 + [-1, 3, C3, [1024]], + [-1, 1, SPPF, [1024, 5]], # 9 + ] + +# YOLOv5 v6.0 head +head: + [[-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 13 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 17 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 14], 1, Concat, [1]], # cat head P4 + [-1, 3, C3, [512, False]], # 20 (P4/16-medium) + + [-1, 1, Conv, [512, 3, 2]], + [[-1, 10], 1, Concat, [1]], # cat head P5 + [-1, 3, C3, [1024, False]], # 23 (P5/32-large) + + [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5) + ] diff --git a/models/yolov5m.yaml b/models/yolov5m.yaml new file mode 100644 index 00000000..f0ee2907 --- /dev/null +++ b/models/yolov5m.yaml @@ -0,0 +1,48 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 0.67 # model depth multiple +width_multiple: 0.75 # layer channel multiple +anchors: + - [10,13, 16,30, 33,23] # P3/8 + - [30,61, 62,45, 59,119] # P4/16 + - [116,90, 156,198, 373,326] # P5/32 + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32 + [-1, 3, C3, [1024]], + [-1, 1, SPPF, [1024, 5]], # 9 + ] + +# YOLOv5 v6.0 head +head: + [[-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 13 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 17 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 14], 1, Concat, [1]], # cat head P4 + [-1, 3, C3, [512, False]], # 20 (P4/16-medium) + + [-1, 1, Conv, [512, 3, 2]], + [[-1, 10], 1, Concat, [1]], # cat head P5 + [-1, 3, C3, [1024, False]], # 23 (P5/32-large) + + [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5) + ] diff --git a/models/yolov5n.yaml b/models/yolov5n.yaml new file mode 100644 index 00000000..a4b72660 --- /dev/null +++ b/models/yolov5n.yaml @@ -0,0 +1,48 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 0.33 # model depth multiple +width_multiple: 0.25 # layer channel multiple +anchors: + - [10,13, 16,30, 33,23] # P3/8 + - [30,61, 62,45, 59,119] # P4/16 + - [116,90, 156,198, 373,326] # P5/32 + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32 + [-1, 3, C3, [1024]], + [-1, 1, SPPF, [1024, 5]], # 9 + ] + +# YOLOv5 v6.0 head +head: + [[-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 13 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 17 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 14], 1, Concat, [1]], # cat head P4 + [-1, 3, C3, [512, False]], # 20 (P4/16-medium) + + [-1, 1, Conv, [512, 3, 2]], + [[-1, 10], 1, Concat, [1]], # cat head P5 + [-1, 3, C3, [1024, False]], # 23 (P5/32-large) + + [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5) + ] diff --git a/models/yolov5s.yaml b/models/yolov5s.yaml new file mode 100644 index 00000000..b3edebe9 --- /dev/null +++ b/models/yolov5s.yaml @@ -0,0 +1,48 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 0.33 # model depth multiple +width_multiple: 0.50 # layer channel multiple +anchors: + - [10,13, 16,30, 33,23] # P3/8 + - [30,61, 62,45, 59,119] # P4/16 + - [116,90, 156,198, 373,326] # P5/32 + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32 + [-1, 3, C3, [1024]], + [-1, 1, SPPF, [1024, 5]], # 9 + ] + +# YOLOv5 v6.0 head +head: + [[-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 13 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 17 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 14], 1, Concat, [1]], # cat head P4 + [-1, 3, C3, [512, False]], # 20 (P4/16-medium) + + [-1, 1, Conv, [512, 3, 2]], + [[-1, 10], 1, Concat, [1]], # cat head P5 + [-1, 3, C3, [1024, False]], # 23 (P5/32-large) + + [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5) + ] diff --git a/models/yolov5x.yaml b/models/yolov5x.yaml new file mode 100644 index 00000000..d8c7dd78 --- /dev/null +++ b/models/yolov5x.yaml @@ -0,0 +1,48 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# Parameters +nc: 80 # number of classes +depth_multiple: 1.33 # model depth multiple +width_multiple: 1.25 # layer channel multiple +anchors: + - [10,13, 16,30, 33,23] # P3/8 + - [30,61, 62,45, 59,119] # P4/16 + - [116,90, 156,198, 373,326] # P5/32 + +# YOLOv5 v6.0 backbone +backbone: + # [from, number, module, args] + [[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2 + [-1, 1, Conv, [128, 3, 2]], # 1-P2/4 + [-1, 3, C3, [128]], + [-1, 1, Conv, [256, 3, 2]], # 3-P3/8 + [-1, 6, C3, [256]], + [-1, 1, Conv, [512, 3, 2]], # 5-P4/16 + [-1, 9, C3, [512]], + [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32 + [-1, 3, C3, [1024]], + [-1, 1, SPPF, [1024, 5]], # 9 + ] + +# YOLOv5 v6.0 head +head: + [[-1, 1, Conv, [512, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 6], 1, Concat, [1]], # cat backbone P4 + [-1, 3, C3, [512, False]], # 13 + + [-1, 1, Conv, [256, 1, 1]], + [-1, 1, nn.Upsample, [None, 2, 'nearest']], + [[-1, 4], 1, Concat, [1]], # cat backbone P3 + [-1, 3, C3, [256, False]], # 17 (P3/8-small) + + [-1, 1, Conv, [256, 3, 2]], + [[-1, 14], 1, Concat, [1]], # cat head P4 + [-1, 3, C3, [512, False]], # 20 (P4/16-medium) + + [-1, 1, Conv, [512, 3, 2]], + [[-1, 10], 1, Concat, [1]], # cat head P5 + [-1, 3, C3, [1024, False]], # 23 (P5/32-large) + + [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5) + ] diff --git a/requirements.txt b/requirements.txt old mode 100755 new mode 100644 index f78e7ee0..7bfde97b --- a/requirements.txt +++ b/requirements.txt @@ -1,31 +1,35 @@ # YOLOv3 requirements # Usage: pip install -r requirements.txt -# Base ---------------------------------------- +# Base ------------------------------------------------------------------------ +gitpython +ipython # interactive notebook matplotlib>=3.2.2 numpy>=1.18.5 opencv-python>=4.1.1 Pillow>=7.1.2 +psutil # system resources PyYAML>=5.3.1 requests>=2.23.0 scipy>=1.4.1 -torch>=1.7.0 # see https://pytorch.org/get-started/locally/ (recommended) +thop>=0.1.1 # FLOPs computation +torch>=1.7.0 # see https://pytorch.org/get-started/locally (recommended) torchvision>=0.8.1 tqdm>=4.64.0 # protobuf<=3.20.1 # https://github.com/ultralytics/yolov5/issues/8012 -# Logging ------------------------------------- +# Logging --------------------------------------------------------------------- tensorboard>=2.4.1 -# clearml +# clearml>=1.2.0 # comet -# Plotting ------------------------------------ +# Plotting -------------------------------------------------------------------- pandas>=1.1.4 seaborn>=0.11.0 -# Export -------------------------------------- +# Export ---------------------------------------------------------------------- # coremltools>=6.0 # CoreML export -# onnx>=1.9.0 # ONNX export +# onnx>=1.12.0 # ONNX export # onnx-simplifier>=0.4.1 # ONNX simplifier # nvidia-pyindex # TensorRT export # nvidia-tensorrt # TensorRT export @@ -34,14 +38,14 @@ seaborn>=0.11.0 # tensorflowjs>=3.9.0 # TF.js export # openvino-dev # OpenVINO export -# Deploy -------------------------------------- +# Deploy ---------------------------------------------------------------------- +setuptools>=65.5.1 # Snyk vulnerability fix +wheel>=0.38.0 # Snyk vulnerability fix # tritonclient[all]~=2.24.0 -# Extras -------------------------------------- -ipython # interactive notebook -psutil # system utilization -thop>=0.1.1 # FLOPs computation +# Extras ---------------------------------------------------------------------- # mss # screenshots # albumentations>=1.0.3 -# pycocotools>=2.0 # COCO mAP +# pycocotools>=2.0.6 # COCO mAP # roboflow +# ultralytics # HUB https://hub.ultralytics.com diff --git a/segment/predict.py b/segment/predict.py new file mode 100644 index 00000000..ac832bf8 --- /dev/null +++ b/segment/predict.py @@ -0,0 +1,284 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Run segmentation inference on images, videos, directories, streams, etc. + +Usage - sources: + $ python segment/predict.py --weights yolov5s-seg.pt --source 0 # webcam + img.jpg # image + vid.mp4 # video + screen # screenshot + path/ # directory + list.txt # list of images + list.streams # list of streams + 'path/*.jpg' # glob + 'https://youtu.be/Zgi9g1ksQHc' # YouTube + 'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP stream + +Usage - formats: + $ python segment/predict.py --weights yolov5s-seg.pt # PyTorch + yolov5s-seg.torchscript # TorchScript + yolov5s-seg.onnx # ONNX Runtime or OpenCV DNN with --dnn + yolov5s-seg_openvino_model # OpenVINO + yolov5s-seg.engine # TensorRT + yolov5s-seg.mlmodel # CoreML (macOS-only) + yolov5s-seg_saved_model # TensorFlow SavedModel + yolov5s-seg.pb # TensorFlow GraphDef + yolov5s-seg.tflite # TensorFlow Lite + yolov5s-seg_edgetpu.tflite # TensorFlow Edge TPU + yolov5s-seg_paddle_model # PaddlePaddle +""" + +import argparse +import os +import platform +import sys +from pathlib import Path + +import torch + +FILE = Path(__file__).resolve() +ROOT = FILE.parents[1] # root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH +ROOT = Path(os.path.relpath(ROOT, Path.cwd())) # relative + +from models.common import DetectMultiBackend +from utils.dataloaders import IMG_FORMATS, VID_FORMATS, LoadImages, LoadScreenshots, LoadStreams +from utils.general import (LOGGER, Profile, check_file, check_img_size, check_imshow, check_requirements, colorstr, cv2, + increment_path, non_max_suppression, print_args, scale_boxes, scale_segments, + strip_optimizer) +from utils.plots import Annotator, colors, save_one_box +from utils.segment.general import masks2segments, process_mask, process_mask_native +from utils.torch_utils import select_device, smart_inference_mode + + +@smart_inference_mode() +def run( + weights=ROOT / 'yolov5s-seg.pt', # model.pt path(s) + source=ROOT / 'data/images', # file/dir/URL/glob/screen/0(webcam) + data=ROOT / 'data/coco128.yaml', # dataset.yaml path + imgsz=(640, 640), # inference size (height, width) + conf_thres=0.25, # confidence threshold + iou_thres=0.45, # NMS IOU threshold + max_det=1000, # maximum detections per image + device='', # cuda device, i.e. 0 or 0,1,2,3 or cpu + view_img=False, # show results + save_txt=False, # save results to *.txt + save_conf=False, # save confidences in --save-txt labels + save_crop=False, # save cropped prediction boxes + nosave=False, # do not save images/videos + classes=None, # filter by class: --class 0, or --class 0 2 3 + agnostic_nms=False, # class-agnostic NMS + augment=False, # augmented inference + visualize=False, # visualize features + update=False, # update all models + project=ROOT / 'runs/predict-seg', # save results to project/name + name='exp', # save results to project/name + exist_ok=False, # existing project/name ok, do not increment + line_thickness=3, # bounding box thickness (pixels) + hide_labels=False, # hide labels + hide_conf=False, # hide confidences + half=False, # use FP16 half-precision inference + dnn=False, # use OpenCV DNN for ONNX inference + vid_stride=1, # video frame-rate stride + retina_masks=False, +): + source = str(source) + save_img = not nosave and not source.endswith('.txt') # save inference images + is_file = Path(source).suffix[1:] in (IMG_FORMATS + VID_FORMATS) + is_url = source.lower().startswith(('rtsp://', 'rtmp://', 'http://', 'https://')) + webcam = source.isnumeric() or source.endswith('.streams') or (is_url and not is_file) + screenshot = source.lower().startswith('screen') + if is_url and is_file: + source = check_file(source) # download + + # Directories + save_dir = increment_path(Path(project) / name, exist_ok=exist_ok) # increment run + (save_dir / 'labels' if save_txt else save_dir).mkdir(parents=True, exist_ok=True) # make dir + + # Load model + device = select_device(device) + model = DetectMultiBackend(weights, device=device, dnn=dnn, data=data, fp16=half) + stride, names, pt = model.stride, model.names, model.pt + imgsz = check_img_size(imgsz, s=stride) # check image size + + # Dataloader + bs = 1 # batch_size + if webcam: + view_img = check_imshow(warn=True) + dataset = LoadStreams(source, img_size=imgsz, stride=stride, auto=pt, vid_stride=vid_stride) + bs = len(dataset) + elif screenshot: + dataset = LoadScreenshots(source, img_size=imgsz, stride=stride, auto=pt) + else: + dataset = LoadImages(source, img_size=imgsz, stride=stride, auto=pt, vid_stride=vid_stride) + vid_path, vid_writer = [None] * bs, [None] * bs + + # Run inference + model.warmup(imgsz=(1 if pt else bs, 3, *imgsz)) # warmup + seen, windows, dt = 0, [], (Profile(), Profile(), Profile()) + for path, im, im0s, vid_cap, s in dataset: + with dt[0]: + im = torch.from_numpy(im).to(model.device) + im = im.half() if model.fp16 else im.float() # uint8 to fp16/32 + im /= 255 # 0 - 255 to 0.0 - 1.0 + if len(im.shape) == 3: + im = im[None] # expand for batch dim + + # Inference + with dt[1]: + visualize = increment_path(save_dir / Path(path).stem, mkdir=True) if visualize else False + pred, proto = model(im, augment=augment, visualize=visualize)[:2] + + # NMS + with dt[2]: + pred = non_max_suppression(pred, conf_thres, iou_thres, classes, agnostic_nms, max_det=max_det, nm=32) + + # Second-stage classifier (optional) + # pred = utils.general.apply_classifier(pred, classifier_model, im, im0s) + + # Process predictions + for i, det in enumerate(pred): # per image + seen += 1 + if webcam: # batch_size >= 1 + p, im0, frame = path[i], im0s[i].copy(), dataset.count + s += f'{i}: ' + else: + p, im0, frame = path, im0s.copy(), getattr(dataset, 'frame', 0) + + p = Path(p) # to Path + save_path = str(save_dir / p.name) # im.jpg + txt_path = str(save_dir / 'labels' / p.stem) + ('' if dataset.mode == 'image' else f'_{frame}') # im.txt + s += '%gx%g ' % im.shape[2:] # print string + imc = im0.copy() if save_crop else im0 # for save_crop + annotator = Annotator(im0, line_width=line_thickness, example=str(names)) + if len(det): + if retina_masks: + # scale bbox first the crop masks + det[:, :4] = scale_boxes(im.shape[2:], det[:, :4], im0.shape).round() # rescale boxes to im0 size + masks = process_mask_native(proto[i], det[:, 6:], det[:, :4], im0.shape[:2]) # HWC + else: + masks = process_mask(proto[i], det[:, 6:], det[:, :4], im.shape[2:], upsample=True) # HWC + det[:, :4] = scale_boxes(im.shape[2:], det[:, :4], im0.shape).round() # rescale boxes to im0 size + + # Segments + if save_txt: + segments = [ + scale_segments(im0.shape if retina_masks else im.shape[2:], x, im0.shape, normalize=True) + for x in reversed(masks2segments(masks))] + + # Print results + for c in det[:, 5].unique(): + n = (det[:, 5] == c).sum() # detections per class + s += f"{n} {names[int(c)]}{'s' * (n > 1)}, " # add to string + + # Mask plotting + annotator.masks( + masks, + colors=[colors(x, True) for x in det[:, 5]], + im_gpu=torch.as_tensor(im0, dtype=torch.float16).to(device).permute(2, 0, 1).flip(0).contiguous() / + 255 if retina_masks else im[i]) + + # Write results + for j, (*xyxy, conf, cls) in enumerate(reversed(det[:, :6])): + if save_txt: # Write to file + seg = segments[j].reshape(-1) # (n,2) to (n*2) + line = (cls, *seg, conf) if save_conf else (cls, *seg) # label format + with open(f'{txt_path}.txt', 'a') as f: + f.write(('%g ' * len(line)).rstrip() % line + '\n') + + if save_img or save_crop or view_img: # Add bbox to image + c = int(cls) # integer class + label = None if hide_labels else (names[c] if hide_conf else f'{names[c]} {conf:.2f}') + annotator.box_label(xyxy, label, color=colors(c, True)) + # annotator.draw.polygon(segments[j], outline=colors(c, True), width=3) + if save_crop: + save_one_box(xyxy, imc, file=save_dir / 'crops' / names[c] / f'{p.stem}.jpg', BGR=True) + + # Stream results + im0 = annotator.result() + if view_img: + if platform.system() == 'Linux' and p not in windows: + windows.append(p) + cv2.namedWindow(str(p), cv2.WINDOW_NORMAL | cv2.WINDOW_KEEPRATIO) # allow window resize (Linux) + cv2.resizeWindow(str(p), im0.shape[1], im0.shape[0]) + cv2.imshow(str(p), im0) + if cv2.waitKey(1) == ord('q'): # 1 millisecond + exit() + + # Save results (image with detections) + if save_img: + if dataset.mode == 'image': + cv2.imwrite(save_path, im0) + else: # 'video' or 'stream' + if vid_path[i] != save_path: # new video + vid_path[i] = save_path + if isinstance(vid_writer[i], cv2.VideoWriter): + vid_writer[i].release() # release previous video writer + if vid_cap: # video + fps = vid_cap.get(cv2.CAP_PROP_FPS) + w = int(vid_cap.get(cv2.CAP_PROP_FRAME_WIDTH)) + h = int(vid_cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) + else: # stream + fps, w, h = 30, im0.shape[1], im0.shape[0] + save_path = str(Path(save_path).with_suffix('.mp4')) # force *.mp4 suffix on results videos + vid_writer[i] = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (w, h)) + vid_writer[i].write(im0) + + # Print time (inference-only) + LOGGER.info(f"{s}{'' if len(det) else '(no detections), '}{dt[1].dt * 1E3:.1f}ms") + + # Print results + t = tuple(x.t / seen * 1E3 for x in dt) # speeds per image + LOGGER.info(f'Speed: %.1fms pre-process, %.1fms inference, %.1fms NMS per image at shape {(1, 3, *imgsz)}' % t) + if save_txt or save_img: + s = f"\n{len(list(save_dir.glob('labels/*.txt')))} labels saved to {save_dir / 'labels'}" if save_txt else '' + LOGGER.info(f"Results saved to {colorstr('bold', save_dir)}{s}") + if update: + strip_optimizer(weights[0]) # update model (to fix SourceChangeWarning) + + +def parse_opt(): + parser = argparse.ArgumentParser() + parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'yolov5s-seg.pt', help='model path(s)') + parser.add_argument('--source', type=str, default=ROOT / 'data/images', help='file/dir/URL/glob/screen/0(webcam)') + parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='(optional) dataset.yaml path') + parser.add_argument('--imgsz', '--img', '--img-size', nargs='+', type=int, default=[640], help='inference size h,w') + parser.add_argument('--conf-thres', type=float, default=0.25, help='confidence threshold') + parser.add_argument('--iou-thres', type=float, default=0.45, help='NMS IoU threshold') + parser.add_argument('--max-det', type=int, default=1000, help='maximum detections per image') + parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') + parser.add_argument('--view-img', action='store_true', help='show results') + parser.add_argument('--save-txt', action='store_true', help='save results to *.txt') + parser.add_argument('--save-conf', action='store_true', help='save confidences in --save-txt labels') + parser.add_argument('--save-crop', action='store_true', help='save cropped prediction boxes') + parser.add_argument('--nosave', action='store_true', help='do not save images/videos') + parser.add_argument('--classes', nargs='+', type=int, help='filter by class: --classes 0, or --classes 0 2 3') + parser.add_argument('--agnostic-nms', action='store_true', help='class-agnostic NMS') + parser.add_argument('--augment', action='store_true', help='augmented inference') + parser.add_argument('--visualize', action='store_true', help='visualize features') + parser.add_argument('--update', action='store_true', help='update all models') + parser.add_argument('--project', default=ROOT / 'runs/predict-seg', help='save results to project/name') + parser.add_argument('--name', default='exp', help='save results to project/name') + parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment') + parser.add_argument('--line-thickness', default=3, type=int, help='bounding box thickness (pixels)') + parser.add_argument('--hide-labels', default=False, action='store_true', help='hide labels') + parser.add_argument('--hide-conf', default=False, action='store_true', help='hide confidences') + parser.add_argument('--half', action='store_true', help='use FP16 half-precision inference') + parser.add_argument('--dnn', action='store_true', help='use OpenCV DNN for ONNX inference') + parser.add_argument('--vid-stride', type=int, default=1, help='video frame-rate stride') + parser.add_argument('--retina-masks', action='store_true', help='whether to plot masks in native resolution') + opt = parser.parse_args() + opt.imgsz *= 2 if len(opt.imgsz) == 1 else 1 # expand + print_args(vars(opt)) + return opt + + +def main(opt): + check_requirements(exclude=('tensorboard', 'thop')) + run(**vars(opt)) + + +if __name__ == "__main__": + opt = parse_opt() + main(opt) diff --git a/segment/train.py b/segment/train.py new file mode 100644 index 00000000..3efc883b --- /dev/null +++ b/segment/train.py @@ -0,0 +1,659 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Train a segment model on a segment dataset +Models and datasets download automatically from the latest release. + +Usage - Single-GPU training: + $ python segment/train.py --data coco128-seg.yaml --weights yolov5s-seg.pt --img 640 # from pretrained (recommended) + $ python segment/train.py --data coco128-seg.yaml --weights '' --cfg yolov5s-seg.yaml --img 640 # from scratch + +Usage - Multi-GPU DDP training: + $ python -m torch.distributed.run --nproc_per_node 4 --master_port 1 segment/train.py --data coco128-seg.yaml --weights yolov5s-seg.pt --img 640 --device 0,1,2,3 + +Models: https://github.com/ultralytics/yolov5/tree/master/models +Datasets: https://github.com/ultralytics/yolov5/tree/master/data +Tutorial: https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data +""" + +import argparse +import math +import os +import random +import subprocess +import sys +import time +from copy import deepcopy +from datetime import datetime +from pathlib import Path + +import numpy as np +import torch +import torch.distributed as dist +import torch.nn as nn +import yaml +from torch.optim import lr_scheduler +from tqdm import tqdm + +FILE = Path(__file__).resolve() +ROOT = FILE.parents[1] # root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH +ROOT = Path(os.path.relpath(ROOT, Path.cwd())) # relative + +import segment.val as validate # for end-of-epoch mAP +from models.experimental import attempt_load +from models.yolo import SegmentationModel +from utils.autoanchor import check_anchors +from utils.autobatch import check_train_batch_size +from utils.callbacks import Callbacks +from utils.downloads import attempt_download, is_url +from utils.general import (LOGGER, TQDM_BAR_FORMAT, check_amp, check_dataset, check_file, check_git_info, + check_git_status, check_img_size, check_requirements, check_suffix, check_yaml, colorstr, + get_latest_run, increment_path, init_seeds, intersect_dicts, labels_to_class_weights, + labels_to_image_weights, one_cycle, print_args, print_mutation, strip_optimizer, yaml_save) +from utils.loggers import GenericLogger +from utils.plots import plot_evolve, plot_labels +from utils.segment.dataloaders import create_dataloader +from utils.segment.loss import ComputeLoss +from utils.segment.metrics import KEYS, fitness +from utils.segment.plots import plot_images_and_masks, plot_results_with_masks +from utils.torch_utils import (EarlyStopping, ModelEMA, de_parallel, select_device, smart_DDP, smart_optimizer, + smart_resume, torch_distributed_zero_first) + +LOCAL_RANK = int(os.getenv('LOCAL_RANK', -1)) # https://pytorch.org/docs/stable/elastic/run.html +RANK = int(os.getenv('RANK', -1)) +WORLD_SIZE = int(os.getenv('WORLD_SIZE', 1)) +GIT_INFO = check_git_info() + + +def train(hyp, opt, device, callbacks): # hyp is path/to/hyp.yaml or hyp dictionary + save_dir, epochs, batch_size, weights, single_cls, evolve, data, cfg, resume, noval, nosave, workers, freeze, mask_ratio = \ + Path(opt.save_dir), opt.epochs, opt.batch_size, opt.weights, opt.single_cls, opt.evolve, opt.data, opt.cfg, opt.resume, opt.noval, opt.nosave, opt.workers, opt.freeze, opt.mask_ratio + # callbacks.run('on_pretrain_routine_start') + + # Directories + w = save_dir / 'weights' # weights dir + (w.parent if evolve else w).mkdir(parents=True, exist_ok=True) # make dir + last, best = w / 'last.pt', w / 'best.pt' + + # Hyperparameters + if isinstance(hyp, str): + with open(hyp, errors='ignore') as f: + hyp = yaml.safe_load(f) # load hyps dict + LOGGER.info(colorstr('hyperparameters: ') + ', '.join(f'{k}={v}' for k, v in hyp.items())) + opt.hyp = hyp.copy() # for saving hyps to checkpoints + + # Save run settings + if not evolve: + yaml_save(save_dir / 'hyp.yaml', hyp) + yaml_save(save_dir / 'opt.yaml', vars(opt)) + + # Loggers + data_dict = None + if RANK in {-1, 0}: + logger = GenericLogger(opt=opt, console_logger=LOGGER) + + # Config + plots = not evolve and not opt.noplots # create plots + overlap = not opt.no_overlap + cuda = device.type != 'cpu' + init_seeds(opt.seed + 1 + RANK, deterministic=True) + with torch_distributed_zero_first(LOCAL_RANK): + data_dict = data_dict or check_dataset(data) # check if None + train_path, val_path = data_dict['train'], data_dict['val'] + nc = 1 if single_cls else int(data_dict['nc']) # number of classes + names = {0: 'item'} if single_cls and len(data_dict['names']) != 1 else data_dict['names'] # class names + is_coco = isinstance(val_path, str) and val_path.endswith('coco/val2017.txt') # COCO dataset + + # Model + check_suffix(weights, '.pt') # check weights + pretrained = weights.endswith('.pt') + if pretrained: + with torch_distributed_zero_first(LOCAL_RANK): + weights = attempt_download(weights) # download if not found locally + ckpt = torch.load(weights, map_location='cpu') # load checkpoint to CPU to avoid CUDA memory leak + model = SegmentationModel(cfg or ckpt['model'].yaml, ch=3, nc=nc, anchors=hyp.get('anchors')).to(device) + exclude = ['anchor'] if (cfg or hyp.get('anchors')) and not resume else [] # exclude keys + csd = ckpt['model'].float().state_dict() # checkpoint state_dict as FP32 + csd = intersect_dicts(csd, model.state_dict(), exclude=exclude) # intersect + model.load_state_dict(csd, strict=False) # load + LOGGER.info(f'Transferred {len(csd)}/{len(model.state_dict())} items from {weights}') # report + else: + model = SegmentationModel(cfg, ch=3, nc=nc, anchors=hyp.get('anchors')).to(device) # create + amp = check_amp(model) # check AMP + + # Freeze + freeze = [f'model.{x}.' for x in (freeze if len(freeze) > 1 else range(freeze[0]))] # layers to freeze + for k, v in model.named_parameters(): + v.requires_grad = True # train all layers + # v.register_hook(lambda x: torch.nan_to_num(x)) # NaN to 0 (commented for erratic training results) + if any(x in k for x in freeze): + LOGGER.info(f'freezing {k}') + v.requires_grad = False + + # Image size + gs = max(int(model.stride.max()), 32) # grid size (max stride) + imgsz = check_img_size(opt.imgsz, gs, floor=gs * 2) # verify imgsz is gs-multiple + + # Batch size + if RANK == -1 and batch_size == -1: # single-GPU only, estimate best batch size + batch_size = check_train_batch_size(model, imgsz, amp) + logger.update_params({"batch_size": batch_size}) + # loggers.on_params_update({"batch_size": batch_size}) + + # Optimizer + nbs = 64 # nominal batch size + accumulate = max(round(nbs / batch_size), 1) # accumulate loss before optimizing + hyp['weight_decay'] *= batch_size * accumulate / nbs # scale weight_decay + optimizer = smart_optimizer(model, opt.optimizer, hyp['lr0'], hyp['momentum'], hyp['weight_decay']) + + # Scheduler + if opt.cos_lr: + lf = one_cycle(1, hyp['lrf'], epochs) # cosine 1->hyp['lrf'] + else: + lf = lambda x: (1 - x / epochs) * (1.0 - hyp['lrf']) + hyp['lrf'] # linear + scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf) # plot_lr_scheduler(optimizer, scheduler, epochs) + + # EMA + ema = ModelEMA(model) if RANK in {-1, 0} else None + + # Resume + best_fitness, start_epoch = 0.0, 0 + if pretrained: + if resume: + best_fitness, start_epoch, epochs = smart_resume(ckpt, optimizer, ema, weights, epochs, resume) + del ckpt, csd + + # DP mode + if cuda and RANK == -1 and torch.cuda.device_count() > 1: + LOGGER.warning('WARNING ⚠️ DP not recommended, use torch.distributed.run for best DDP Multi-GPU results.\n' + 'See Multi-GPU Tutorial at https://github.com/ultralytics/yolov5/issues/475 to get started.') + model = torch.nn.DataParallel(model) + + # SyncBatchNorm + if opt.sync_bn and cuda and RANK != -1: + model = torch.nn.SyncBatchNorm.convert_sync_batchnorm(model).to(device) + LOGGER.info('Using SyncBatchNorm()') + + # Trainloader + train_loader, dataset = create_dataloader( + train_path, + imgsz, + batch_size // WORLD_SIZE, + gs, + single_cls, + hyp=hyp, + augment=True, + cache=None if opt.cache == 'val' else opt.cache, + rect=opt.rect, + rank=LOCAL_RANK, + workers=workers, + image_weights=opt.image_weights, + quad=opt.quad, + prefix=colorstr('train: '), + shuffle=True, + mask_downsample_ratio=mask_ratio, + overlap_mask=overlap, + ) + labels = np.concatenate(dataset.labels, 0) + mlc = int(labels[:, 0].max()) # max label class + assert mlc < nc, f'Label class {mlc} exceeds nc={nc} in {data}. Possible class labels are 0-{nc - 1}' + + # Process 0 + if RANK in {-1, 0}: + val_loader = create_dataloader(val_path, + imgsz, + batch_size // WORLD_SIZE * 2, + gs, + single_cls, + hyp=hyp, + cache=None if noval else opt.cache, + rect=True, + rank=-1, + workers=workers * 2, + pad=0.5, + mask_downsample_ratio=mask_ratio, + overlap_mask=overlap, + prefix=colorstr('val: '))[0] + + if not resume: + if not opt.noautoanchor: + check_anchors(dataset, model=model, thr=hyp['anchor_t'], imgsz=imgsz) # run AutoAnchor + model.half().float() # pre-reduce anchor precision + + if plots: + plot_labels(labels, names, save_dir) + # callbacks.run('on_pretrain_routine_end', labels, names) + + # DDP mode + if cuda and RANK != -1: + model = smart_DDP(model) + + # Model attributes + nl = de_parallel(model).model[-1].nl # number of detection layers (to scale hyps) + hyp['box'] *= 3 / nl # scale to layers + hyp['cls'] *= nc / 80 * 3 / nl # scale to classes and layers + hyp['obj'] *= (imgsz / 640) ** 2 * 3 / nl # scale to image size and layers + hyp['label_smoothing'] = opt.label_smoothing + model.nc = nc # attach number of classes to model + model.hyp = hyp # attach hyperparameters to model + model.class_weights = labels_to_class_weights(dataset.labels, nc).to(device) * nc # attach class weights + model.names = names + + # Start training + t0 = time.time() + nb = len(train_loader) # number of batches + nw = max(round(hyp['warmup_epochs'] * nb), 100) # number of warmup iterations, max(3 epochs, 100 iterations) + # nw = min(nw, (epochs - start_epoch) / 2 * nb) # limit warmup to < 1/2 of training + last_opt_step = -1 + maps = np.zeros(nc) # mAP per class + results = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) # P, R, mAP@.5, mAP@.5-.95, val_loss(box, obj, cls) + scheduler.last_epoch = start_epoch - 1 # do not move + scaler = torch.cuda.amp.GradScaler(enabled=amp) + stopper, stop = EarlyStopping(patience=opt.patience), False + compute_loss = ComputeLoss(model, overlap=overlap) # init loss class + # callbacks.run('on_train_start') + LOGGER.info(f'Image sizes {imgsz} train, {imgsz} val\n' + f'Using {train_loader.num_workers * WORLD_SIZE} dataloader workers\n' + f"Logging results to {colorstr('bold', save_dir)}\n" + f'Starting training for {epochs} epochs...') + for epoch in range(start_epoch, epochs): # epoch ------------------------------------------------------------------ + # callbacks.run('on_train_epoch_start') + model.train() + + # Update image weights (optional, single-GPU only) + if opt.image_weights: + cw = model.class_weights.cpu().numpy() * (1 - maps) ** 2 / nc # class weights + iw = labels_to_image_weights(dataset.labels, nc=nc, class_weights=cw) # image weights + dataset.indices = random.choices(range(dataset.n), weights=iw, k=dataset.n) # rand weighted idx + + # Update mosaic border (optional) + # b = int(random.uniform(0.25 * imgsz, 0.75 * imgsz + gs) // gs * gs) + # dataset.mosaic_border = [b - imgsz, -b] # height, width borders + + mloss = torch.zeros(4, device=device) # mean losses + if RANK != -1: + train_loader.sampler.set_epoch(epoch) + pbar = enumerate(train_loader) + LOGGER.info(('\n' + '%11s' * 8) % + ('Epoch', 'GPU_mem', 'box_loss', 'seg_loss', 'obj_loss', 'cls_loss', 'Instances', 'Size')) + if RANK in {-1, 0}: + pbar = tqdm(pbar, total=nb, bar_format=TQDM_BAR_FORMAT) # progress bar + optimizer.zero_grad() + for i, (imgs, targets, paths, _, masks) in pbar: # batch ------------------------------------------------------ + # callbacks.run('on_train_batch_start') + ni = i + nb * epoch # number integrated batches (since train start) + imgs = imgs.to(device, non_blocking=True).float() / 255 # uint8 to float32, 0-255 to 0.0-1.0 + + # Warmup + if ni <= nw: + xi = [0, nw] # x interp + # compute_loss.gr = np.interp(ni, xi, [0.0, 1.0]) # iou loss ratio (obj_loss = 1.0 or iou) + accumulate = max(1, np.interp(ni, xi, [1, nbs / batch_size]).round()) + for j, x in enumerate(optimizer.param_groups): + # bias lr falls from 0.1 to lr0, all other lrs rise from 0.0 to lr0 + x['lr'] = np.interp(ni, xi, [hyp['warmup_bias_lr'] if j == 0 else 0.0, x['initial_lr'] * lf(epoch)]) + if 'momentum' in x: + x['momentum'] = np.interp(ni, xi, [hyp['warmup_momentum'], hyp['momentum']]) + + # Multi-scale + if opt.multi_scale: + sz = random.randrange(imgsz * 0.5, imgsz * 1.5 + gs) // gs * gs # size + sf = sz / max(imgs.shape[2:]) # scale factor + if sf != 1: + ns = [math.ceil(x * sf / gs) * gs for x in imgs.shape[2:]] # new shape (stretched to gs-multiple) + imgs = nn.functional.interpolate(imgs, size=ns, mode='bilinear', align_corners=False) + + # Forward + with torch.cuda.amp.autocast(amp): + pred = model(imgs) # forward + loss, loss_items = compute_loss(pred, targets.to(device), masks=masks.to(device).float()) + if RANK != -1: + loss *= WORLD_SIZE # gradient averaged between devices in DDP mode + if opt.quad: + loss *= 4. + + # Backward + scaler.scale(loss).backward() + + # Optimize - https://pytorch.org/docs/master/notes/amp_examples.html + if ni - last_opt_step >= accumulate: + scaler.unscale_(optimizer) # unscale gradients + torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=10.0) # clip gradients + scaler.step(optimizer) # optimizer.step + scaler.update() + optimizer.zero_grad() + if ema: + ema.update(model) + last_opt_step = ni + + # Log + if RANK in {-1, 0}: + mloss = (mloss * i + loss_items) / (i + 1) # update mean losses + mem = f'{torch.cuda.memory_reserved() / 1E9 if torch.cuda.is_available() else 0:.3g}G' # (GB) + pbar.set_description(('%11s' * 2 + '%11.4g' * 6) % + (f'{epoch}/{epochs - 1}', mem, *mloss, targets.shape[0], imgs.shape[-1])) + # callbacks.run('on_train_batch_end', model, ni, imgs, targets, paths) + # if callbacks.stop_training: + # return + + # Mosaic plots + if plots: + if ni < 3: + plot_images_and_masks(imgs, targets, masks, paths, save_dir / f"train_batch{ni}.jpg") + if ni == 10: + files = sorted(save_dir.glob('train*.jpg')) + logger.log_images(files, "Mosaics", epoch) + # end batch ------------------------------------------------------------------------------------------------ + + # Scheduler + lr = [x['lr'] for x in optimizer.param_groups] # for loggers + scheduler.step() + + if RANK in {-1, 0}: + # mAP + # callbacks.run('on_train_epoch_end', epoch=epoch) + ema.update_attr(model, include=['yaml', 'nc', 'hyp', 'names', 'stride', 'class_weights']) + final_epoch = (epoch + 1 == epochs) or stopper.possible_stop + if not noval or final_epoch: # Calculate mAP + results, maps, _ = validate.run(data_dict, + batch_size=batch_size // WORLD_SIZE * 2, + imgsz=imgsz, + half=amp, + model=ema.ema, + single_cls=single_cls, + dataloader=val_loader, + save_dir=save_dir, + plots=False, + callbacks=callbacks, + compute_loss=compute_loss, + mask_downsample_ratio=mask_ratio, + overlap=overlap) + + # Update best mAP + fi = fitness(np.array(results).reshape(1, -1)) # weighted combination of [P, R, mAP@.5, mAP@.5-.95] + stop = stopper(epoch=epoch, fitness=fi) # early stop check + if fi > best_fitness: + best_fitness = fi + log_vals = list(mloss) + list(results) + lr + # callbacks.run('on_fit_epoch_end', log_vals, epoch, best_fitness, fi) + # Log val metrics and media + metrics_dict = dict(zip(KEYS, log_vals)) + logger.log_metrics(metrics_dict, epoch) + + # Save model + if (not nosave) or (final_epoch and not evolve): # if save + ckpt = { + 'epoch': epoch, + 'best_fitness': best_fitness, + 'model': deepcopy(de_parallel(model)).half(), + 'ema': deepcopy(ema.ema).half(), + 'updates': ema.updates, + 'optimizer': optimizer.state_dict(), + 'opt': vars(opt), + 'git': GIT_INFO, # {remote, branch, commit} if a git repo + 'date': datetime.now().isoformat()} + + # Save last, best and delete + torch.save(ckpt, last) + if best_fitness == fi: + torch.save(ckpt, best) + if opt.save_period > 0 and epoch % opt.save_period == 0: + torch.save(ckpt, w / f'epoch{epoch}.pt') + logger.log_model(w / f'epoch{epoch}.pt') + del ckpt + # callbacks.run('on_model_save', last, epoch, final_epoch, best_fitness, fi) + + # EarlyStopping + if RANK != -1: # if DDP training + broadcast_list = [stop if RANK == 0 else None] + dist.broadcast_object_list(broadcast_list, 0) # broadcast 'stop' to all ranks + if RANK != 0: + stop = broadcast_list[0] + if stop: + break # must break all DDP ranks + + # end epoch ---------------------------------------------------------------------------------------------------- + # end training ----------------------------------------------------------------------------------------------------- + if RANK in {-1, 0}: + LOGGER.info(f'\n{epoch - start_epoch + 1} epochs completed in {(time.time() - t0) / 3600:.3f} hours.') + for f in last, best: + if f.exists(): + strip_optimizer(f) # strip optimizers + if f is best: + LOGGER.info(f'\nValidating {f}...') + results, _, _ = validate.run( + data_dict, + batch_size=batch_size // WORLD_SIZE * 2, + imgsz=imgsz, + model=attempt_load(f, device).half(), + iou_thres=0.65 if is_coco else 0.60, # best pycocotools at iou 0.65 + single_cls=single_cls, + dataloader=val_loader, + save_dir=save_dir, + save_json=is_coco, + verbose=True, + plots=plots, + callbacks=callbacks, + compute_loss=compute_loss, + mask_downsample_ratio=mask_ratio, + overlap=overlap) # val best model with plots + if is_coco: + # callbacks.run('on_fit_epoch_end', list(mloss) + list(results) + lr, epoch, best_fitness, fi) + metrics_dict = dict(zip(KEYS, list(mloss) + list(results) + lr)) + logger.log_metrics(metrics_dict, epoch) + + # callbacks.run('on_train_end', last, best, epoch, results) + # on train end callback using genericLogger + logger.log_metrics(dict(zip(KEYS[4:16], results)), epochs) + if not opt.evolve: + logger.log_model(best, epoch) + if plots: + plot_results_with_masks(file=save_dir / 'results.csv') # save results.png + files = ['results.png', 'confusion_matrix.png', *(f'{x}_curve.png' for x in ('F1', 'PR', 'P', 'R'))] + files = [(save_dir / f) for f in files if (save_dir / f).exists()] # filter + LOGGER.info(f"Results saved to {colorstr('bold', save_dir)}") + logger.log_images(files, "Results", epoch + 1) + logger.log_images(sorted(save_dir.glob('val*.jpg')), "Validation", epoch + 1) + torch.cuda.empty_cache() + return results + + +def parse_opt(known=False): + parser = argparse.ArgumentParser() + parser.add_argument('--weights', type=str, default=ROOT / 'yolov5s-seg.pt', help='initial weights path') + parser.add_argument('--cfg', type=str, default='', help='model.yaml path') + parser.add_argument('--data', type=str, default=ROOT / 'data/coco128-seg.yaml', help='dataset.yaml path') + parser.add_argument('--hyp', type=str, default=ROOT / 'data/hyps/hyp.scratch-low.yaml', help='hyperparameters path') + parser.add_argument('--epochs', type=int, default=100, help='total training epochs') + parser.add_argument('--batch-size', type=int, default=16, help='total batch size for all GPUs, -1 for autobatch') + parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=640, help='train, val image size (pixels)') + parser.add_argument('--rect', action='store_true', help='rectangular training') + parser.add_argument('--resume', nargs='?', const=True, default=False, help='resume most recent training') + parser.add_argument('--nosave', action='store_true', help='only save final checkpoint') + parser.add_argument('--noval', action='store_true', help='only validate final epoch') + parser.add_argument('--noautoanchor', action='store_true', help='disable AutoAnchor') + parser.add_argument('--noplots', action='store_true', help='save no plot files') + parser.add_argument('--evolve', type=int, nargs='?', const=300, help='evolve hyperparameters for x generations') + parser.add_argument('--bucket', type=str, default='', help='gsutil bucket') + parser.add_argument('--cache', type=str, nargs='?', const='ram', help='image --cache ram/disk') + parser.add_argument('--image-weights', action='store_true', help='use weighted image selection for training') + parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') + parser.add_argument('--multi-scale', action='store_true', help='vary img-size +/- 50%%') + parser.add_argument('--single-cls', action='store_true', help='train multi-class data as single-class') + parser.add_argument('--optimizer', type=str, choices=['SGD', 'Adam', 'AdamW'], default='SGD', help='optimizer') + parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode') + parser.add_argument('--workers', type=int, default=8, help='max dataloader workers (per RANK in DDP mode)') + parser.add_argument('--project', default=ROOT / 'runs/train-seg', help='save to project/name') + parser.add_argument('--name', default='exp', help='save to project/name') + parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment') + parser.add_argument('--quad', action='store_true', help='quad dataloader') + parser.add_argument('--cos-lr', action='store_true', help='cosine LR scheduler') + parser.add_argument('--label-smoothing', type=float, default=0.0, help='Label smoothing epsilon') + parser.add_argument('--patience', type=int, default=100, help='EarlyStopping patience (epochs without improvement)') + parser.add_argument('--freeze', nargs='+', type=int, default=[0], help='Freeze layers: backbone=10, first3=0 1 2') + parser.add_argument('--save-period', type=int, default=-1, help='Save checkpoint every x epochs (disabled if < 1)') + parser.add_argument('--seed', type=int, default=0, help='Global training seed') + parser.add_argument('--local_rank', type=int, default=-1, help='Automatic DDP Multi-GPU argument, do not modify') + + # Instance Segmentation Args + parser.add_argument('--mask-ratio', type=int, default=4, help='Downsample the truth masks to saving memory') + parser.add_argument('--no-overlap', action='store_true', help='Overlap masks train faster at slightly less mAP') + + return parser.parse_known_args()[0] if known else parser.parse_args() + + +def main(opt, callbacks=Callbacks()): + # Checks + if RANK in {-1, 0}: + print_args(vars(opt)) + check_git_status() + check_requirements() + + # Resume + if opt.resume and not opt.evolve: # resume from specified or most recent last.pt + last = Path(check_file(opt.resume) if isinstance(opt.resume, str) else get_latest_run()) + opt_yaml = last.parent.parent / 'opt.yaml' # train options yaml + opt_data = opt.data # original dataset + if opt_yaml.is_file(): + with open(opt_yaml, errors='ignore') as f: + d = yaml.safe_load(f) + else: + d = torch.load(last, map_location='cpu')['opt'] + opt = argparse.Namespace(**d) # replace + opt.cfg, opt.weights, opt.resume = '', str(last), True # reinstate + if is_url(opt_data): + opt.data = check_file(opt_data) # avoid HUB resume auth timeout + else: + opt.data, opt.cfg, opt.hyp, opt.weights, opt.project = \ + check_file(opt.data), check_yaml(opt.cfg), check_yaml(opt.hyp), str(opt.weights), str(opt.project) # checks + assert len(opt.cfg) or len(opt.weights), 'either --cfg or --weights must be specified' + if opt.evolve: + if opt.project == str(ROOT / 'runs/train'): # if default project name, rename to runs/evolve + opt.project = str(ROOT / 'runs/evolve') + opt.exist_ok, opt.resume = opt.resume, False # pass resume to exist_ok and disable resume + if opt.name == 'cfg': + opt.name = Path(opt.cfg).stem # use model.yaml as name + opt.save_dir = str(increment_path(Path(opt.project) / opt.name, exist_ok=opt.exist_ok)) + + # DDP mode + device = select_device(opt.device, batch_size=opt.batch_size) + if LOCAL_RANK != -1: + msg = 'is not compatible with YOLOv5 Multi-GPU DDP training' + assert not opt.image_weights, f'--image-weights {msg}' + assert not opt.evolve, f'--evolve {msg}' + assert opt.batch_size != -1, f'AutoBatch with --batch-size -1 {msg}, please pass a valid --batch-size' + assert opt.batch_size % WORLD_SIZE == 0, f'--batch-size {opt.batch_size} must be multiple of WORLD_SIZE' + assert torch.cuda.device_count() > LOCAL_RANK, 'insufficient CUDA devices for DDP command' + torch.cuda.set_device(LOCAL_RANK) + device = torch.device('cuda', LOCAL_RANK) + dist.init_process_group(backend="nccl" if dist.is_nccl_available() else "gloo") + + # Train + if not opt.evolve: + train(opt.hyp, opt, device, callbacks) + + # Evolve hyperparameters (optional) + else: + # Hyperparameter evolution metadata (mutation scale 0-1, lower_limit, upper_limit) + meta = { + 'lr0': (1, 1e-5, 1e-1), # initial learning rate (SGD=1E-2, Adam=1E-3) + 'lrf': (1, 0.01, 1.0), # final OneCycleLR learning rate (lr0 * lrf) + 'momentum': (0.3, 0.6, 0.98), # SGD momentum/Adam beta1 + 'weight_decay': (1, 0.0, 0.001), # optimizer weight decay + 'warmup_epochs': (1, 0.0, 5.0), # warmup epochs (fractions ok) + 'warmup_momentum': (1, 0.0, 0.95), # warmup initial momentum + 'warmup_bias_lr': (1, 0.0, 0.2), # warmup initial bias lr + 'box': (1, 0.02, 0.2), # box loss gain + 'cls': (1, 0.2, 4.0), # cls loss gain + 'cls_pw': (1, 0.5, 2.0), # cls BCELoss positive_weight + 'obj': (1, 0.2, 4.0), # obj loss gain (scale with pixels) + 'obj_pw': (1, 0.5, 2.0), # obj BCELoss positive_weight + 'iou_t': (0, 0.1, 0.7), # IoU training threshold + 'anchor_t': (1, 2.0, 8.0), # anchor-multiple threshold + 'anchors': (2, 2.0, 10.0), # anchors per output grid (0 to ignore) + 'fl_gamma': (0, 0.0, 2.0), # focal loss gamma (efficientDet default gamma=1.5) + 'hsv_h': (1, 0.0, 0.1), # image HSV-Hue augmentation (fraction) + 'hsv_s': (1, 0.0, 0.9), # image HSV-Saturation augmentation (fraction) + 'hsv_v': (1, 0.0, 0.9), # image HSV-Value augmentation (fraction) + 'degrees': (1, 0.0, 45.0), # image rotation (+/- deg) + 'translate': (1, 0.0, 0.9), # image translation (+/- fraction) + 'scale': (1, 0.0, 0.9), # image scale (+/- gain) + 'shear': (1, 0.0, 10.0), # image shear (+/- deg) + 'perspective': (0, 0.0, 0.001), # image perspective (+/- fraction), range 0-0.001 + 'flipud': (1, 0.0, 1.0), # image flip up-down (probability) + 'fliplr': (0, 0.0, 1.0), # image flip left-right (probability) + 'mosaic': (1, 0.0, 1.0), # image mixup (probability) + 'mixup': (1, 0.0, 1.0), # image mixup (probability) + 'copy_paste': (1, 0.0, 1.0)} # segment copy-paste (probability) + + with open(opt.hyp, errors='ignore') as f: + hyp = yaml.safe_load(f) # load hyps dict + if 'anchors' not in hyp: # anchors commented in hyp.yaml + hyp['anchors'] = 3 + if opt.noautoanchor: + del hyp['anchors'], meta['anchors'] + opt.noval, opt.nosave, save_dir = True, True, Path(opt.save_dir) # only val/save final epoch + # ei = [isinstance(x, (int, float)) for x in hyp.values()] # evolvable indices + evolve_yaml, evolve_csv = save_dir / 'hyp_evolve.yaml', save_dir / 'evolve.csv' + if opt.bucket: + subprocess.run( + f'gsutil cp gs://{opt.bucket}/evolve.csv {evolve_csv}'.split()) # download evolve.csv if exists + + for _ in range(opt.evolve): # generations to evolve + if evolve_csv.exists(): # if evolve.csv exists: select best hyps and mutate + # Select parent(s) + parent = 'single' # parent selection method: 'single' or 'weighted' + x = np.loadtxt(evolve_csv, ndmin=2, delimiter=',', skiprows=1) + n = min(5, len(x)) # number of previous results to consider + x = x[np.argsort(-fitness(x))][:n] # top n mutations + w = fitness(x) - fitness(x).min() + 1E-6 # weights (sum > 0) + if parent == 'single' or len(x) == 1: + # x = x[random.randint(0, n - 1)] # random selection + x = x[random.choices(range(n), weights=w)[0]] # weighted selection + elif parent == 'weighted': + x = (x * w.reshape(n, 1)).sum(0) / w.sum() # weighted combination + + # Mutate + mp, s = 0.8, 0.2 # mutation probability, sigma + npr = np.random + npr.seed(int(time.time())) + g = np.array([meta[k][0] for k in hyp.keys()]) # gains 0-1 + ng = len(meta) + v = np.ones(ng) + while all(v == 1): # mutate until a change occurs (prevent duplicates) + v = (g * (npr.random(ng) < mp) * npr.randn(ng) * npr.random() * s + 1).clip(0.3, 3.0) + for i, k in enumerate(hyp.keys()): # plt.hist(v.ravel(), 300) + hyp[k] = float(x[i + 7] * v[i]) # mutate + + # Constrain to limits + for k, v in meta.items(): + hyp[k] = max(hyp[k], v[1]) # lower limit + hyp[k] = min(hyp[k], v[2]) # upper limit + hyp[k] = round(hyp[k], 5) # significant digits + + # Train mutation + results = train(hyp.copy(), opt, device, callbacks) + callbacks = Callbacks() + # Write mutation results + print_mutation(KEYS, results, hyp.copy(), save_dir, opt.bucket) + + # Plot results + plot_evolve(evolve_csv) + LOGGER.info(f'Hyperparameter evolution finished {opt.evolve} generations\n' + f"Results saved to {colorstr('bold', save_dir)}\n" + f'Usage example: $ python train.py --hyp {evolve_yaml}') + + +def run(**kwargs): + # Usage: import train; train.run(data='coco128.yaml', imgsz=320, weights='yolov5m.pt') + opt = parse_opt(True) + for k, v in kwargs.items(): + setattr(opt, k, v) + main(opt) + return opt + + +if __name__ == "__main__": + opt = parse_opt() + main(opt) diff --git a/segment/tutorial.ipynb b/segment/tutorial.ipynb new file mode 100644 index 00000000..be43d6d2 --- /dev/null +++ b/segment/tutorial.ipynb @@ -0,0 +1,594 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "t6MPjfT5NrKQ" + }, + "source": [ + "
\n", + "\n", + " \n", + " \n", + "\n", + "\n", + "
\n", + " \"Run\n", + " \"Open\n", + " \"Open\n", + "
\n", + "\n", + "This 🚀 notebook by Ultralytics presents simple train, validate and predict examples to help start your AI adventure.
See GitHub for community support or contact us for professional support.\n", + "\n", + "
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7mGmQbAO5pQb" + }, + "source": [ + "# Setup\n", + "\n", + "Clone GitHub [repository](https://github.com/ultralytics/yolov5), install [dependencies](https://github.com/ultralytics/yolov5/blob/master/requirements.txt) and check PyTorch and GPU." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "wbvMlHd_QwMG", + "outputId": "171b23f0-71b9-4cbf-b666-6fa2ecef70c8" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + " 🚀 v7.0-2-gc9d47ae Python-3.7.15 torch-1.12.1+cu113 CUDA:0 (Tesla T4, 15110MiB)\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Setup complete ✅ (2 CPUs, 12.7 GB RAM, 22.6/78.2 GB disk)\n" + ] + } + ], + "source": [ + "!git clone https://github.com/ultralytics/yolov5 # clone\n", + "%cd yolov5\n", + "%pip install -qr requirements.txt # install\n", + "\n", + "import torch\n", + "import utils\n", + "display = utils.notebook_init() # checks" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4JnkELT0cIJg" + }, + "source": [ + "# 1. Predict\n", + "\n", + "`segment/predict.py` runs instance segmentation inference on a variety of sources, downloading models automatically from the [latest release](https://github.com/ultralytics/yolov5/releases), and saving results to `runs/predict`. Example inference sources are:\n", + "\n", + "```shell\n", + "python segment/predict.py --source 0 # webcam\n", + " img.jpg # image \n", + " vid.mp4 # video\n", + " screen # screenshot\n", + " path/ # directory\n", + " 'path/*.jpg' # glob\n", + " 'https://youtu.be/Zgi9g1ksQHc' # YouTube\n", + " 'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP stream\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "zR9ZbuQCH7FX", + "outputId": "3f67f1c7-f15e-4fa5-d251-967c3b77eaad" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[34m\u001b[1msegment/predict: \u001b[0mweights=['yolov5s-seg.pt'], source=data/images, data=data/coco128.yaml, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_conf=False, save_crop=False, nosave=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=runs/predict-seg, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, dnn=False, vid_stride=1, retina_masks=False\n", + "YOLOv5 🚀 v7.0-2-gc9d47ae Python-3.7.15 torch-1.12.1+cu113 CUDA:0 (Tesla T4, 15110MiB)\n", + "\n", + "Downloading https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s-seg.pt to yolov5s-seg.pt...\n", + "100% 14.9M/14.9M [00:01<00:00, 12.0MB/s]\n", + "\n", + "Fusing layers... \n", + "YOLOv5s-seg summary: 224 layers, 7611485 parameters, 0 gradients, 26.4 GFLOPs\n", + "image 1/2 /content/yolov5/data/images/bus.jpg: 640x480 4 persons, 1 bus, 18.2ms\n", + "image 2/2 /content/yolov5/data/images/zidane.jpg: 384x640 2 persons, 1 tie, 13.4ms\n", + "Speed: 0.5ms pre-process, 15.8ms inference, 18.5ms NMS per image at shape (1, 3, 640, 640)\n", + "Results saved to \u001b[1mruns/predict-seg/exp\u001b[0m\n" + ] + } + ], + "source": [ + "!python segment/predict.py --weights yolov5s-seg.pt --img 640 --conf 0.25 --source data/images\n", + "#display.Image(filename='runs/predict-seg/exp/zidane.jpg', width=600)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "hkAzDWJ7cWTr" + }, + "source": [ + "        \n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0eq1SMWl6Sfn" + }, + "source": [ + "# 2. Validate\n", + "Validate a model's accuracy on the [COCO](https://cocodataset.org/#home) dataset's `val` or `test` splits. Models are downloaded automatically from the [latest YOLOv5 release](https://github.com/ultralytics/yolov5/releases). To show results by class use the `--verbose` flag." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "WQPtK1QYVaD_", + "outputId": "9d751d8c-bee8-4339-cf30-9854ca530449" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Downloading https://github.com/ultralytics/yolov5/releases/download/v1.0/coco2017labels-segments.zip ...\n", + "Downloading http://images.cocodataset.org/zips/val2017.zip ...\n", + "######################################################################## 100.0%\n", + "######################################################################## 100.0%\n" + ] + } + ], + "source": [ + "# Download COCO val\n", + "!bash data/scripts/get_coco.sh --val --segments # download (780M - 5000 images)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "X58w8JLpMnjH", + "outputId": "a140d67a-02da-479e-9ddb-7d54bf9e407a" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[34m\u001b[1msegment/val: \u001b[0mdata=/content/yolov5/data/coco.yaml, weights=['yolov5s-seg.pt'], batch_size=32, imgsz=640, conf_thres=0.001, iou_thres=0.6, max_det=300, task=val, device=, workers=8, single_cls=False, augment=False, verbose=False, save_txt=False, save_hybrid=False, save_conf=False, save_json=False, project=runs/val-seg, name=exp, exist_ok=False, half=True, dnn=False\n", + "YOLOv5 🚀 v7.0-2-gc9d47ae Python-3.7.15 torch-1.12.1+cu113 CUDA:0 (Tesla T4, 15110MiB)\n", + "\n", + "Fusing layers... \n", + "YOLOv5s-seg summary: 224 layers, 7611485 parameters, 0 gradients, 26.4 GFLOPs\n", + "\u001b[34m\u001b[1mval: \u001b[0mScanning /content/datasets/coco/val2017... 4952 images, 48 backgrounds, 0 corrupt: 100% 5000/5000 [00:03<00:00, 1361.31it/s]\n", + "\u001b[34m\u001b[1mval: \u001b[0mNew cache created: /content/datasets/coco/val2017.cache\n", + " Class Images Instances Box(P R mAP50 mAP50-95) Mask(P R mAP50 mAP50-95): 100% 157/157 [01:54<00:00, 1.37it/s]\n", + " all 5000 36335 0.673 0.517 0.566 0.373 0.672 0.49 0.532 0.319\n", + "Speed: 0.6ms pre-process, 4.4ms inference, 2.9ms NMS per image at shape (32, 3, 640, 640)\n", + "Results saved to \u001b[1mruns/val-seg/exp\u001b[0m\n" + ] + } + ], + "source": [ + "# Validate YOLOv5s-seg on COCO val\n", + "!python segment/val.py --weights yolov5s-seg.pt --data coco.yaml --img 640 --half" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZY2VXXXu74w5" + }, + "source": [ + "# 3. Train\n", + "\n", + "

\n", + "Close the active learning loop by sampling images from your inference conditions with the `roboflow` pip package\n", + "

\n", + "\n", + "Train a YOLOv5s-seg model on the [COCO128](https://www.kaggle.com/ultralytics/coco128) dataset with `--data coco128-seg.yaml`, starting from pretrained `--weights yolov5s-seg.pt`, or from randomly initialized `--weights '' --cfg yolov5s-seg.yaml`.\n", + "\n", + "- **Pretrained [Models](https://github.com/ultralytics/yolov5/tree/master/models)** are downloaded\n", + "automatically from the [latest YOLOv5 release](https://github.com/ultralytics/yolov5/releases)\n", + "- **[Datasets](https://github.com/ultralytics/yolov5/tree/master/data)** available for autodownload include: [COCO](https://github.com/ultralytics/yolov5/blob/master/data/coco.yaml), [COCO128](https://github.com/ultralytics/yolov5/blob/master/data/coco128.yaml), [VOC](https://github.com/ultralytics/yolov5/blob/master/data/VOC.yaml), [Argoverse](https://github.com/ultralytics/yolov5/blob/master/data/Argoverse.yaml), [VisDrone](https://github.com/ultralytics/yolov5/blob/master/data/VisDrone.yaml), [GlobalWheat](https://github.com/ultralytics/yolov5/blob/master/data/GlobalWheat2020.yaml), [xView](https://github.com/ultralytics/yolov5/blob/master/data/xView.yaml), [Objects365](https://github.com/ultralytics/yolov5/blob/master/data/Objects365.yaml), [SKU-110K](https://github.com/ultralytics/yolov5/blob/master/data/SKU-110K.yaml).\n", + "- **Training Results** are saved to `runs/train-seg/` with incrementing run directories, i.e. `runs/train-seg/exp2`, `runs/train-seg/exp3` etc.\n", + "

\n", + "\n", + "A **Mosaic Dataloader** is used for training which combines 4 images into 1 mosaic.\n", + "\n", + "## Train on Custom Data with Roboflow 🌟 NEW\n", + "\n", + "[Roboflow](https://roboflow.com/?ref=ultralytics) enables you to easily **organize, label, and prepare** a high quality dataset with your own custom data. Roboflow also makes it easy to establish an active learning pipeline, collaborate with your team on dataset improvement, and integrate directly into your model building workflow with the `roboflow` pip package.\n", + "\n", + "- Custom Training Example: [https://blog.roboflow.com/train-yolov5-instance-segmentation-custom-dataset/](https://blog.roboflow.com/train-yolov5-instance-segmentation-custom-dataset/?ref=ultralytics)\n", + "- Custom Training Notebook: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1JTz7kpmHsg-5qwVz2d2IH3AaenI1tv0N?usp=sharing)\n", + "
\n", + "\n", + "

Label images lightning fast (including with model-assisted labeling)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "i3oKtE4g-aNn" + }, + "outputs": [], + "source": [ + "#@title Select YOLOv5 🚀 logger {run: 'auto'}\n", + "logger = 'TensorBoard' #@param ['TensorBoard', 'Comet', 'ClearML']\n", + "\n", + "if logger == 'TensorBoard':\n", + " %load_ext tensorboard\n", + " %tensorboard --logdir runs/train-seg\n", + "elif logger == 'Comet':\n", + " %pip install -q comet_ml\n", + " import comet_ml; comet_ml.init()\n", + "elif logger == 'ClearML':\n", + " import clearml; clearml.browser_login()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "1NcFxRcFdJ_O", + "outputId": "3a3e0cf7-e79c-47a5-c8e7-2d26eeeab988" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[34m\u001b[1msegment/train: \u001b[0mweights=yolov5s-seg.pt, cfg=, data=coco128-seg.yaml, hyp=data/hyps/hyp.scratch-low.yaml, epochs=3, batch_size=16, imgsz=640, rect=False, resume=False, nosave=False, noval=False, noautoanchor=False, noplots=False, evolve=None, bucket=, cache=ram, image_weights=False, device=, multi_scale=False, single_cls=False, optimizer=SGD, sync_bn=False, workers=8, project=runs/train-seg, name=exp, exist_ok=False, quad=False, cos_lr=False, label_smoothing=0.0, patience=100, freeze=[0], save_period=-1, seed=0, local_rank=-1, mask_ratio=4, no_overlap=False\n", + "\u001b[34m\u001b[1mgithub: \u001b[0mup to date with https://github.com/ultralytics/yolov5 ✅\n", + "YOLOv5 🚀 v7.0-2-gc9d47ae Python-3.7.15 torch-1.12.1+cu113 CUDA:0 (Tesla T4, 15110MiB)\n", + "\n", + "\u001b[34m\u001b[1mhyperparameters: \u001b[0mlr0=0.01, lrf=0.01, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=0.05, cls=0.5, cls_pw=1.0, obj=1.0, obj_pw=1.0, iou_t=0.2, anchor_t=4.0, fl_gamma=0.0, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, mosaic=1.0, mixup=0.0, copy_paste=0.0\n", + "\u001b[34m\u001b[1mTensorBoard: \u001b[0mStart with 'tensorboard --logdir runs/train-seg', view at http://localhost:6006/\n", + "\n", + "Dataset not found ⚠️, missing paths ['/content/datasets/coco128-seg/images/train2017']\n", + "Downloading https://ultralytics.com/assets/coco128-seg.zip to coco128-seg.zip...\n", + "100% 6.79M/6.79M [00:01<00:00, 6.73MB/s]\n", + "Dataset download success ✅ (1.9s), saved to \u001b[1m/content/datasets\u001b[0m\n", + "\n", + " from n params module arguments \n", + " 0 -1 1 3520 models.common.Conv [3, 32, 6, 2, 2] \n", + " 1 -1 1 18560 models.common.Conv [32, 64, 3, 2] \n", + " 2 -1 1 18816 models.common.C3 [64, 64, 1] \n", + " 3 -1 1 73984 models.common.Conv [64, 128, 3, 2] \n", + " 4 -1 2 115712 models.common.C3 [128, 128, 2] \n", + " 5 -1 1 295424 models.common.Conv [128, 256, 3, 2] \n", + " 6 -1 3 625152 models.common.C3 [256, 256, 3] \n", + " 7 -1 1 1180672 models.common.Conv [256, 512, 3, 2] \n", + " 8 -1 1 1182720 models.common.C3 [512, 512, 1] \n", + " 9 -1 1 656896 models.common.SPPF [512, 512, 5] \n", + " 10 -1 1 131584 models.common.Conv [512, 256, 1, 1] \n", + " 11 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n", + " 12 [-1, 6] 1 0 models.common.Concat [1] \n", + " 13 -1 1 361984 models.common.C3 [512, 256, 1, False] \n", + " 14 -1 1 33024 models.common.Conv [256, 128, 1, 1] \n", + " 15 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n", + " 16 [-1, 4] 1 0 models.common.Concat [1] \n", + " 17 -1 1 90880 models.common.C3 [256, 128, 1, False] \n", + " 18 -1 1 147712 models.common.Conv [128, 128, 3, 2] \n", + " 19 [-1, 14] 1 0 models.common.Concat [1] \n", + " 20 -1 1 296448 models.common.C3 [256, 256, 1, False] \n", + " 21 -1 1 590336 models.common.Conv [256, 256, 3, 2] \n", + " 22 [-1, 10] 1 0 models.common.Concat [1] \n", + " 23 -1 1 1182720 models.common.C3 [512, 512, 1, False] \n", + " 24 [17, 20, 23] 1 615133 models.yolo.Segment [80, [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]], 32, 128, [128, 256, 512]]\n", + "Model summary: 225 layers, 7621277 parameters, 7621277 gradients, 26.6 GFLOPs\n", + "\n", + "Transferred 367/367 items from yolov5s-seg.pt\n", + "\u001b[34m\u001b[1mAMP: \u001b[0mchecks passed ✅\n", + "\u001b[34m\u001b[1moptimizer:\u001b[0m SGD(lr=0.01) with parameter groups 60 weight(decay=0.0), 63 weight(decay=0.0005), 63 bias\n", + "\u001b[34m\u001b[1malbumentations: \u001b[0mBlur(p=0.01, blur_limit=(3, 7)), MedianBlur(p=0.01, blur_limit=(3, 7)), ToGray(p=0.01), CLAHE(p=0.01, clip_limit=(1, 4.0), tile_grid_size=(8, 8))\n", + "\u001b[34m\u001b[1mtrain: \u001b[0mScanning /content/datasets/coco128-seg/labels/train2017... 126 images, 2 backgrounds, 0 corrupt: 100% 128/128 [00:00<00:00, 1389.59it/s]\n", + "\u001b[34m\u001b[1mtrain: \u001b[0mNew cache created: /content/datasets/coco128-seg/labels/train2017.cache\n", + "\u001b[34m\u001b[1mtrain: \u001b[0mCaching images (0.1GB ram): 100% 128/128 [00:00<00:00, 238.86it/s]\n", + "\u001b[34m\u001b[1mval: \u001b[0mScanning /content/datasets/coco128-seg/labels/train2017.cache... 126 images, 2 backgrounds, 0 corrupt: 100% 128/128 [00:00 # 2. paste API key\n", + "python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt # 3. train\n", + "```\n", + "To learn more about all of the supported Comet features for this integration, check out the [Comet Tutorial](https://github.com/ultralytics/yolov5/tree/master/utils/loggers/comet). If you'd like to learn more about Comet, head over to our [documentation](https://www.comet.com/docs/v2/?utm_source=yolov5&utm_medium=partner&utm_campaign=partner_yolov5_2022&utm_content=yolov5_colab). Get started by trying out the Comet Colab Notebook:\n", + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1RG0WOQyxlDlo5Km8GogJpIEJlg_5lyYO?usp=sharing)\n", + "\n", + "\n", + "\"Comet" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Lay2WsTjNJzP" + }, + "source": [ + "## ClearML Logging and Automation 🌟 NEW\n", + "\n", + "[ClearML](https://cutt.ly/yolov5-notebook-clearml) is completely integrated into YOLOv5 to track your experimentation, manage dataset versions and even remotely execute training runs. To enable ClearML (check cells above):\n", + "\n", + "- `pip install clearml`\n", + "- run `clearml-init` to connect to a ClearML server (**deploy your own [open-source server](https://github.com/allegroai/clearml-server)**, or use our [free hosted server](https://cutt.ly/yolov5-notebook-clearml))\n", + "\n", + "You'll get all the great expected features from an experiment manager: live updates, model upload, experiment comparison etc. but ClearML also tracks uncommitted changes and installed packages for example. Thanks to that ClearML Tasks (which is what we call experiments) are also reproducible on different machines! With only 1 extra line, we can schedule a YOLOv5 training task on a queue to be executed by any number of ClearML Agents (workers).\n", + "\n", + "You can use ClearML Data to version your dataset and then pass it to YOLOv5 simply using its unique ID. This will help you keep track of your data without adding extra hassle. Explore the [ClearML Tutorial](https://github.com/ultralytics/yolov5/tree/master/utils/loggers/clearml) for details!\n", + "\n", + "\n", + "\"ClearML" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-WPvRbS5Swl6" + }, + "source": [ + "## Local Logging\n", + "\n", + "Training results are automatically logged with [Tensorboard](https://www.tensorflow.org/tensorboard) and [CSV](https://github.com/ultralytics/yolov5/pull/4148) loggers to `runs/train`, with a new experiment directory created for each new training as `runs/train/exp2`, `runs/train/exp3`, etc.\n", + "\n", + "This directory contains train and val statistics, mosaics, labels, predictions and augmentated mosaics, as well as metrics and charts including precision-recall (PR) curves and confusion matrices. \n", + "\n", + "\"Local\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Zelyeqbyt3GD" + }, + "source": [ + "# Environments\n", + "\n", + "YOLOv5 may be run in any of the following up-to-date verified environments (with all dependencies including [CUDA](https://developer.nvidia.com/cuda)/[CUDNN](https://developer.nvidia.com/cudnn), [Python](https://www.python.org/) and [PyTorch](https://pytorch.org/) preinstalled):\n", + "\n", + "- **Notebooks** with free GPU: \"Run \"Open \"Open\n", + "- **Google Cloud** Deep Learning VM. See [GCP Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/GCP-Quickstart)\n", + "- **Amazon** Deep Learning AMI. See [AWS Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/AWS-Quickstart)\n", + "- **Docker Image**. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/Docker-Quickstart) \"Docker\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6Qu7Iesl0p54" + }, + "source": [ + "# Status\n", + "\n", + "![YOLOv5 CI](https://github.com/ultralytics/yolov3/actions/workflows/ci-testing.yml/badge.svg)\n", + "\n", + "If this badge is green, all [YOLOv3 GitHub Actions](https://github.com/ultralytics/yolov3/actions) Continuous Integration (CI) tests are currently passing. CI tests verify correct operation of YOLOv5 training ([train.py](https://github.com/ultralytics/yolov5/blob/master/train.py)), testing ([val.py](https://github.com/ultralytics/yolov5/blob/master/val.py)), inference ([detect.py](https://github.com/ultralytics/yolov5/blob/master/detect.py)) and export ([export.py](https://github.com/ultralytics/yolov5/blob/master/export.py)) on macOS, Windows, and Ubuntu every 24 hours and on every commit.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IEijrePND_2I" + }, + "source": [ + "# Appendix\n", + "\n", + "Additional content below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "GMusP4OAxFu6" + }, + "outputs": [], + "source": [ + "# YOLOv5 PyTorch HUB Inference (DetectionModels only)\n", + "import torch\n", + "\n", + "model = torch.hub.load('ultralytics/yolov5', 'yolov5s-seg') # yolov5n - yolov5x6 or custom\n", + "im = 'https://ultralytics.com/images/zidane.jpg' # file, Path, PIL.Image, OpenCV, nparray, list\n", + "results = model(im) # inference\n", + "results.print() # or .show(), .save(), .crop(), .pandas(), etc." + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "name": "YOLOv5 Segmentation Tutorial", + "provenance": [], + "toc_visible": true + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/segment/val.py b/segment/val.py new file mode 100644 index 00000000..0e64da28 --- /dev/null +++ b/segment/val.py @@ -0,0 +1,473 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Validate a trained segment model on a segment dataset + +Usage: + $ bash data/scripts/get_coco.sh --val --segments # download COCO-segments val split (1G, 5000 images) + $ python segment/val.py --weights yolov5s-seg.pt --data coco.yaml --img 640 # validate COCO-segments + +Usage - formats: + $ python segment/val.py --weights yolov5s-seg.pt # PyTorch + yolov5s-seg.torchscript # TorchScript + yolov5s-seg.onnx # ONNX Runtime or OpenCV DNN with --dnn + yolov5s-seg_openvino_label # OpenVINO + yolov5s-seg.engine # TensorRT + yolov5s-seg.mlmodel # CoreML (macOS-only) + yolov5s-seg_saved_model # TensorFlow SavedModel + yolov5s-seg.pb # TensorFlow GraphDef + yolov5s-seg.tflite # TensorFlow Lite + yolov5s-seg_edgetpu.tflite # TensorFlow Edge TPU + yolov5s-seg_paddle_model # PaddlePaddle +""" + +import argparse +import json +import os +import subprocess +import sys +from multiprocessing.pool import ThreadPool +from pathlib import Path + +import numpy as np +import torch +from tqdm import tqdm + +FILE = Path(__file__).resolve() +ROOT = FILE.parents[1] # root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH +ROOT = Path(os.path.relpath(ROOT, Path.cwd())) # relative + +import torch.nn.functional as F + +from models.common import DetectMultiBackend +from models.yolo import SegmentationModel +from utils.callbacks import Callbacks +from utils.general import (LOGGER, NUM_THREADS, TQDM_BAR_FORMAT, Profile, check_dataset, check_img_size, + check_requirements, check_yaml, coco80_to_coco91_class, colorstr, increment_path, + non_max_suppression, print_args, scale_boxes, xywh2xyxy, xyxy2xywh) +from utils.metrics import ConfusionMatrix, box_iou +from utils.plots import output_to_target, plot_val_study +from utils.segment.dataloaders import create_dataloader +from utils.segment.general import mask_iou, process_mask, process_mask_native, scale_image +from utils.segment.metrics import Metrics, ap_per_class_box_and_mask +from utils.segment.plots import plot_images_and_masks +from utils.torch_utils import de_parallel, select_device, smart_inference_mode + + +def save_one_txt(predn, save_conf, shape, file): + # Save one txt result + gn = torch.tensor(shape)[[1, 0, 1, 0]] # normalization gain whwh + for *xyxy, conf, cls in predn.tolist(): + xywh = (xyxy2xywh(torch.tensor(xyxy).view(1, 4)) / gn).view(-1).tolist() # normalized xywh + line = (cls, *xywh, conf) if save_conf else (cls, *xywh) # label format + with open(file, 'a') as f: + f.write(('%g ' * len(line)).rstrip() % line + '\n') + + +def save_one_json(predn, jdict, path, class_map, pred_masks): + # Save one JSON result {"image_id": 42, "category_id": 18, "bbox": [258.15, 41.29, 348.26, 243.78], "score": 0.236} + from pycocotools.mask import encode + + def single_encode(x): + rle = encode(np.asarray(x[:, :, None], order="F", dtype="uint8"))[0] + rle["counts"] = rle["counts"].decode("utf-8") + return rle + + image_id = int(path.stem) if path.stem.isnumeric() else path.stem + box = xyxy2xywh(predn[:, :4]) # xywh + box[:, :2] -= box[:, 2:] / 2 # xy center to top-left corner + pred_masks = np.transpose(pred_masks, (2, 0, 1)) + with ThreadPool(NUM_THREADS) as pool: + rles = pool.map(single_encode, pred_masks) + for i, (p, b) in enumerate(zip(predn.tolist(), box.tolist())): + jdict.append({ + 'image_id': image_id, + 'category_id': class_map[int(p[5])], + 'bbox': [round(x, 3) for x in b], + 'score': round(p[4], 5), + 'segmentation': rles[i]}) + + +def process_batch(detections, labels, iouv, pred_masks=None, gt_masks=None, overlap=False, masks=False): + """ + Return correct prediction matrix + Arguments: + detections (array[N, 6]), x1, y1, x2, y2, conf, class + labels (array[M, 5]), class, x1, y1, x2, y2 + Returns: + correct (array[N, 10]), for 10 IoU levels + """ + if masks: + if overlap: + nl = len(labels) + index = torch.arange(nl, device=gt_masks.device).view(nl, 1, 1) + 1 + gt_masks = gt_masks.repeat(nl, 1, 1) # shape(1,640,640) -> (n,640,640) + gt_masks = torch.where(gt_masks == index, 1.0, 0.0) + if gt_masks.shape[1:] != pred_masks.shape[1:]: + gt_masks = F.interpolate(gt_masks[None], pred_masks.shape[1:], mode="bilinear", align_corners=False)[0] + gt_masks = gt_masks.gt_(0.5) + iou = mask_iou(gt_masks.view(gt_masks.shape[0], -1), pred_masks.view(pred_masks.shape[0], -1)) + else: # boxes + iou = box_iou(labels[:, 1:], detections[:, :4]) + + correct = np.zeros((detections.shape[0], iouv.shape[0])).astype(bool) + correct_class = labels[:, 0:1] == detections[:, 5] + for i in range(len(iouv)): + x = torch.where((iou >= iouv[i]) & correct_class) # IoU > threshold and classes match + if x[0].shape[0]: + matches = torch.cat((torch.stack(x, 1), iou[x[0], x[1]][:, None]), 1).cpu().numpy() # [label, detect, iou] + if x[0].shape[0] > 1: + matches = matches[matches[:, 2].argsort()[::-1]] + matches = matches[np.unique(matches[:, 1], return_index=True)[1]] + # matches = matches[matches[:, 2].argsort()[::-1]] + matches = matches[np.unique(matches[:, 0], return_index=True)[1]] + correct[matches[:, 1].astype(int), i] = True + return torch.tensor(correct, dtype=torch.bool, device=iouv.device) + + +@smart_inference_mode() +def run( + data, + weights=None, # model.pt path(s) + batch_size=32, # batch size + imgsz=640, # inference size (pixels) + conf_thres=0.001, # confidence threshold + iou_thres=0.6, # NMS IoU threshold + max_det=300, # maximum detections per image + task='val', # train, val, test, speed or study + device='', # cuda device, i.e. 0 or 0,1,2,3 or cpu + workers=8, # max dataloader workers (per RANK in DDP mode) + single_cls=False, # treat as single-class dataset + augment=False, # augmented inference + verbose=False, # verbose output + save_txt=False, # save results to *.txt + save_hybrid=False, # save label+prediction hybrid results to *.txt + save_conf=False, # save confidences in --save-txt labels + save_json=False, # save a COCO-JSON results file + project=ROOT / 'runs/val-seg', # save to project/name + name='exp', # save to project/name + exist_ok=False, # existing project/name ok, do not increment + half=True, # use FP16 half-precision inference + dnn=False, # use OpenCV DNN for ONNX inference + model=None, + dataloader=None, + save_dir=Path(''), + plots=True, + overlap=False, + mask_downsample_ratio=1, + compute_loss=None, + callbacks=Callbacks(), +): + if save_json: + check_requirements('pycocotools>=2.0.6') + process = process_mask_native # more accurate + else: + process = process_mask # faster + + # Initialize/load model and set device + training = model is not None + if training: # called by train.py + device, pt, jit, engine = next(model.parameters()).device, True, False, False # get model device, PyTorch model + half &= device.type != 'cpu' # half precision only supported on CUDA + model.half() if half else model.float() + nm = de_parallel(model).model[-1].nm # number of masks + else: # called directly + device = select_device(device, batch_size=batch_size) + + # Directories + save_dir = increment_path(Path(project) / name, exist_ok=exist_ok) # increment run + (save_dir / 'labels' if save_txt else save_dir).mkdir(parents=True, exist_ok=True) # make dir + + # Load model + model = DetectMultiBackend(weights, device=device, dnn=dnn, data=data, fp16=half) + stride, pt, jit, engine = model.stride, model.pt, model.jit, model.engine + imgsz = check_img_size(imgsz, s=stride) # check image size + half = model.fp16 # FP16 supported on limited backends with CUDA + nm = de_parallel(model).model.model[-1].nm if isinstance(model, SegmentationModel) else 32 # number of masks + if engine: + batch_size = model.batch_size + else: + device = model.device + if not (pt or jit): + batch_size = 1 # export.py models default to batch-size 1 + LOGGER.info(f'Forcing --batch-size 1 square inference (1,3,{imgsz},{imgsz}) for non-PyTorch models') + + # Data + data = check_dataset(data) # check + + # Configure + model.eval() + cuda = device.type != 'cpu' + is_coco = isinstance(data.get('val'), str) and data['val'].endswith(f'coco{os.sep}val2017.txt') # COCO dataset + nc = 1 if single_cls else int(data['nc']) # number of classes + iouv = torch.linspace(0.5, 0.95, 10, device=device) # iou vector for mAP@0.5:0.95 + niou = iouv.numel() + + # Dataloader + if not training: + if pt and not single_cls: # check --weights are trained on --data + ncm = model.model.nc + assert ncm == nc, f'{weights} ({ncm} classes) trained on different --data than what you passed ({nc} ' \ + f'classes). Pass correct combination of --weights and --data that are trained together.' + model.warmup(imgsz=(1 if pt else batch_size, 3, imgsz, imgsz)) # warmup + pad, rect = (0.0, False) if task == 'speed' else (0.5, pt) # square inference for benchmarks + task = task if task in ('train', 'val', 'test') else 'val' # path to train/val/test images + dataloader = create_dataloader(data[task], + imgsz, + batch_size, + stride, + single_cls, + pad=pad, + rect=rect, + workers=workers, + prefix=colorstr(f'{task}: '), + overlap_mask=overlap, + mask_downsample_ratio=mask_downsample_ratio)[0] + + seen = 0 + confusion_matrix = ConfusionMatrix(nc=nc) + names = model.names if hasattr(model, 'names') else model.module.names # get class names + if isinstance(names, (list, tuple)): # old format + names = dict(enumerate(names)) + class_map = coco80_to_coco91_class() if is_coco else list(range(1000)) + s = ('%22s' + '%11s' * 10) % ('Class', 'Images', 'Instances', 'Box(P', "R", "mAP50", "mAP50-95)", "Mask(P", "R", + "mAP50", "mAP50-95)") + dt = Profile(), Profile(), Profile() + metrics = Metrics() + loss = torch.zeros(4, device=device) + jdict, stats = [], [] + # callbacks.run('on_val_start') + pbar = tqdm(dataloader, desc=s, bar_format=TQDM_BAR_FORMAT) # progress bar + for batch_i, (im, targets, paths, shapes, masks) in enumerate(pbar): + # callbacks.run('on_val_batch_start') + with dt[0]: + if cuda: + im = im.to(device, non_blocking=True) + targets = targets.to(device) + masks = masks.to(device) + masks = masks.float() + im = im.half() if half else im.float() # uint8 to fp16/32 + im /= 255 # 0 - 255 to 0.0 - 1.0 + nb, _, height, width = im.shape # batch size, channels, height, width + + # Inference + with dt[1]: + preds, protos, train_out = model(im) if compute_loss else (*model(im, augment=augment)[:2], None) + + # Loss + if compute_loss: + loss += compute_loss((train_out, protos), targets, masks)[1] # box, obj, cls + + # NMS + targets[:, 2:] *= torch.tensor((width, height, width, height), device=device) # to pixels + lb = [targets[targets[:, 0] == i, 1:] for i in range(nb)] if save_hybrid else [] # for autolabelling + with dt[2]: + preds = non_max_suppression(preds, + conf_thres, + iou_thres, + labels=lb, + multi_label=True, + agnostic=single_cls, + max_det=max_det, + nm=nm) + + # Metrics + plot_masks = [] # masks for plotting + for si, (pred, proto) in enumerate(zip(preds, protos)): + labels = targets[targets[:, 0] == si, 1:] + nl, npr = labels.shape[0], pred.shape[0] # number of labels, predictions + path, shape = Path(paths[si]), shapes[si][0] + correct_masks = torch.zeros(npr, niou, dtype=torch.bool, device=device) # init + correct_bboxes = torch.zeros(npr, niou, dtype=torch.bool, device=device) # init + seen += 1 + + if npr == 0: + if nl: + stats.append((correct_masks, correct_bboxes, *torch.zeros((2, 0), device=device), labels[:, 0])) + if plots: + confusion_matrix.process_batch(detections=None, labels=labels[:, 0]) + continue + + # Masks + midx = [si] if overlap else targets[:, 0] == si + gt_masks = masks[midx] + pred_masks = process(proto, pred[:, 6:], pred[:, :4], shape=im[si].shape[1:]) + + # Predictions + if single_cls: + pred[:, 5] = 0 + predn = pred.clone() + scale_boxes(im[si].shape[1:], predn[:, :4], shape, shapes[si][1]) # native-space pred + + # Evaluate + if nl: + tbox = xywh2xyxy(labels[:, 1:5]) # target boxes + scale_boxes(im[si].shape[1:], tbox, shape, shapes[si][1]) # native-space labels + labelsn = torch.cat((labels[:, 0:1], tbox), 1) # native-space labels + correct_bboxes = process_batch(predn, labelsn, iouv) + correct_masks = process_batch(predn, labelsn, iouv, pred_masks, gt_masks, overlap=overlap, masks=True) + if plots: + confusion_matrix.process_batch(predn, labelsn) + stats.append((correct_masks, correct_bboxes, pred[:, 4], pred[:, 5], labels[:, 0])) # (conf, pcls, tcls) + + pred_masks = torch.as_tensor(pred_masks, dtype=torch.uint8) + if plots and batch_i < 3: + plot_masks.append(pred_masks[:15]) # filter top 15 to plot + + # Save/log + if save_txt: + save_one_txt(predn, save_conf, shape, file=save_dir / 'labels' / f'{path.stem}.txt') + if save_json: + pred_masks = scale_image(im[si].shape[1:], + pred_masks.permute(1, 2, 0).contiguous().cpu().numpy(), shape, shapes[si][1]) + save_one_json(predn, jdict, path, class_map, pred_masks) # append to COCO-JSON dictionary + # callbacks.run('on_val_image_end', pred, predn, path, names, im[si]) + + # Plot images + if plots and batch_i < 3: + if len(plot_masks): + plot_masks = torch.cat(plot_masks, dim=0) + plot_images_and_masks(im, targets, masks, paths, save_dir / f'val_batch{batch_i}_labels.jpg', names) + plot_images_and_masks(im, output_to_target(preds, max_det=15), plot_masks, paths, + save_dir / f'val_batch{batch_i}_pred.jpg', names) # pred + + # callbacks.run('on_val_batch_end') + + # Compute metrics + stats = [torch.cat(x, 0).cpu().numpy() for x in zip(*stats)] # to numpy + if len(stats) and stats[0].any(): + results = ap_per_class_box_and_mask(*stats, plot=plots, save_dir=save_dir, names=names) + metrics.update(results) + nt = np.bincount(stats[4].astype(int), minlength=nc) # number of targets per class + + # Print results + pf = '%22s' + '%11i' * 2 + '%11.3g' * 8 # print format + LOGGER.info(pf % ("all", seen, nt.sum(), *metrics.mean_results())) + if nt.sum() == 0: + LOGGER.warning(f'WARNING ⚠️ no labels found in {task} set, can not compute metrics without labels') + + # Print results per class + if (verbose or (nc < 50 and not training)) and nc > 1 and len(stats): + for i, c in enumerate(metrics.ap_class_index): + LOGGER.info(pf % (names[c], seen, nt[c], *metrics.class_result(i))) + + # Print speeds + t = tuple(x.t / seen * 1E3 for x in dt) # speeds per image + if not training: + shape = (batch_size, 3, imgsz, imgsz) + LOGGER.info(f'Speed: %.1fms pre-process, %.1fms inference, %.1fms NMS per image at shape {shape}' % t) + + # Plots + if plots: + confusion_matrix.plot(save_dir=save_dir, names=list(names.values())) + # callbacks.run('on_val_end') + + mp_bbox, mr_bbox, map50_bbox, map_bbox, mp_mask, mr_mask, map50_mask, map_mask = metrics.mean_results() + + # Save JSON + if save_json and len(jdict): + w = Path(weights[0] if isinstance(weights, list) else weights).stem if weights is not None else '' # weights + anno_json = str(Path('../datasets/coco/annotations/instances_val2017.json')) # annotations + pred_json = str(save_dir / f"{w}_predictions.json") # predictions + LOGGER.info(f'\nEvaluating pycocotools mAP... saving {pred_json}...') + with open(pred_json, 'w') as f: + json.dump(jdict, f) + + try: # https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocoEvalDemo.ipynb + from pycocotools.coco import COCO + from pycocotools.cocoeval import COCOeval + + anno = COCO(anno_json) # init annotations api + pred = anno.loadRes(pred_json) # init predictions api + results = [] + for eval in COCOeval(anno, pred, 'bbox'), COCOeval(anno, pred, 'segm'): + if is_coco: + eval.params.imgIds = [int(Path(x).stem) for x in dataloader.dataset.im_files] # img ID to evaluate + eval.evaluate() + eval.accumulate() + eval.summarize() + results.extend(eval.stats[:2]) # update results (mAP@0.5:0.95, mAP@0.5) + map_bbox, map50_bbox, map_mask, map50_mask = results + except Exception as e: + LOGGER.info(f'pycocotools unable to run: {e}') + + # Return results + model.float() # for training + if not training: + s = f"\n{len(list(save_dir.glob('labels/*.txt')))} labels saved to {save_dir / 'labels'}" if save_txt else '' + LOGGER.info(f"Results saved to {colorstr('bold', save_dir)}{s}") + final_metric = mp_bbox, mr_bbox, map50_bbox, map_bbox, mp_mask, mr_mask, map50_mask, map_mask + return (*final_metric, *(loss.cpu() / len(dataloader)).tolist()), metrics.get_maps(nc), t + + +def parse_opt(): + parser = argparse.ArgumentParser() + parser.add_argument('--data', type=str, default=ROOT / 'data/coco128-seg.yaml', help='dataset.yaml path') + parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'yolov5s-seg.pt', help='model path(s)') + parser.add_argument('--batch-size', type=int, default=32, help='batch size') + parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=640, help='inference size (pixels)') + parser.add_argument('--conf-thres', type=float, default=0.001, help='confidence threshold') + parser.add_argument('--iou-thres', type=float, default=0.6, help='NMS IoU threshold') + parser.add_argument('--max-det', type=int, default=300, help='maximum detections per image') + parser.add_argument('--task', default='val', help='train, val, test, speed or study') + parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') + parser.add_argument('--workers', type=int, default=8, help='max dataloader workers (per RANK in DDP mode)') + parser.add_argument('--single-cls', action='store_true', help='treat as single-class dataset') + parser.add_argument('--augment', action='store_true', help='augmented inference') + parser.add_argument('--verbose', action='store_true', help='report mAP by class') + parser.add_argument('--save-txt', action='store_true', help='save results to *.txt') + parser.add_argument('--save-hybrid', action='store_true', help='save label+prediction hybrid results to *.txt') + parser.add_argument('--save-conf', action='store_true', help='save confidences in --save-txt labels') + parser.add_argument('--save-json', action='store_true', help='save a COCO-JSON results file') + parser.add_argument('--project', default=ROOT / 'runs/val-seg', help='save results to project/name') + parser.add_argument('--name', default='exp', help='save to project/name') + parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment') + parser.add_argument('--half', action='store_true', help='use FP16 half-precision inference') + parser.add_argument('--dnn', action='store_true', help='use OpenCV DNN for ONNX inference') + opt = parser.parse_args() + opt.data = check_yaml(opt.data) # check YAML + # opt.save_json |= opt.data.endswith('coco.yaml') + opt.save_txt |= opt.save_hybrid + print_args(vars(opt)) + return opt + + +def main(opt): + check_requirements(requirements=ROOT / 'requirements.txt', exclude=('tensorboard', 'thop')) + + if opt.task in ('train', 'val', 'test'): # run normally + if opt.conf_thres > 0.001: # https://github.com/ultralytics/yolov5/issues/1466 + LOGGER.warning(f'WARNING ⚠️ confidence threshold {opt.conf_thres} > 0.001 produces invalid results') + if opt.save_hybrid: + LOGGER.warning('WARNING ⚠️ --save-hybrid returns high mAP from hybrid labels, not from predictions alone') + run(**vars(opt)) + + else: + weights = opt.weights if isinstance(opt.weights, list) else [opt.weights] + opt.half = torch.cuda.is_available() and opt.device != 'cpu' # FP16 for fastest results + if opt.task == 'speed': # speed benchmarks + # python val.py --task speed --data coco.yaml --batch 1 --weights yolov5n.pt yolov5s.pt... + opt.conf_thres, opt.iou_thres, opt.save_json = 0.25, 0.45, False + for opt.weights in weights: + run(**vars(opt), plots=False) + + elif opt.task == 'study': # speed vs mAP benchmarks + # python val.py --task study --data coco.yaml --iou 0.7 --weights yolov5n.pt yolov5s.pt... + for opt.weights in weights: + f = f'study_{Path(opt.data).stem}_{Path(opt.weights).stem}.txt' # filename to save to + x, y = list(range(256, 1536 + 128, 128)), [] # x axis (image sizes), y axis + for opt.imgsz in x: # img-size + LOGGER.info(f'\nRunning {f} --imgsz {opt.imgsz}...') + r, _, t = run(**vars(opt), plots=False) + y.append(r + t) # results and times + np.savetxt(f, y, fmt='%10.4g') # save + subprocess.run('zip -r study.zip study_*.txt'.split()) + plot_val_study(x=x) # plot + else: + raise NotImplementedError(f'--task {opt.task} not in ("train", "val", "test", "speed", "study")') + + +if __name__ == "__main__": + opt = parse_opt() + main(opt) diff --git a/setup.cfg b/setup.cfg index 4ca0f0d7..d7c4cb3e 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,10 +1,10 @@ # Project-wide configuration file, can be used for package metadata and other toll configurations # Example usage: global configuration for PEP8 (via flake8) setting or default pytest arguments +# Local usage: pip install pre-commit, pre-commit run --all-files [metadata] license_file = LICENSE -description-file = README.md - +description_file = README.md [tool:pytest] norecursedirs = @@ -16,7 +16,6 @@ addopts = --durations=25 --color=yes - [flake8] max-line-length = 120 exclude = .tox,*.egg,build,temp @@ -26,26 +25,30 @@ verbose = 2 # https://pep8.readthedocs.io/en/latest/intro.html#error-codes format = pylint # see: https://www.flake8rules.com/ -ignore = - E731 # Do not assign a lambda expression, use a def - F405 - E402 - F841 - E741 - F821 - E722 - F401 - W504 - E127 - W504 - E231 - E501 - F403 - E302 - F541 - +ignore = E731,F405,E402,F401,W504,E127,E231,E501,F403 + # E731: Do not assign a lambda expression, use a def + # F405: name may be undefined, or defined from star imports: module + # E402: module level import not at top of file + # F401: module imported but unused + # W504: line break after binary operator + # E127: continuation line over-indented for visual indent + # E231: missing whitespace after ‘,’, ‘;’, or ‘:’ + # E501: line too long + # F403: ‘from module import *’ used; unable to detect undefined names [isort] # https://pycqa.github.io/isort/docs/configuration/options.html line_length = 120 +# see: https://pycqa.github.io/isort/docs/configuration/multi_line_output_modes.html multi_line_output = 0 + +[yapf] +based_on_style = pep8 +spaces_before_comment = 2 +COLUMN_LIMIT = 120 +COALESCE_BRACKETS = True +SPACES_AROUND_POWER_OPERATOR = True +SPACE_BETWEEN_ENDING_COMMA_AND_CLOSING_BRACKET = False +SPLIT_BEFORE_CLOSING_BRACKET = False +SPLIT_BEFORE_FIRST_ARGUMENT = False +# EACH_DICT_ENTRY_ON_SEPARATE_LINE = False diff --git a/train.py b/train.py index 9098b348..5ab44562 100644 --- a/train.py +++ b/train.py @@ -1,14 +1,25 @@ # YOLOv3 🚀 by Ultralytics, GPL-3.0 license """ -Train a model on a custom dataset +Train a YOLOv3 model on a custom dataset. +Models and datasets download automatically from the latest YOLOv3 release. -Usage: - $ python path/to/train.py --data coco128.yaml --weights yolov3.pt --img 640 +Usage - Single-GPU training: + $ python train.py --data coco128.yaml --weights yolov5s.pt --img 640 # from pretrained (recommended) + $ python train.py --data coco128.yaml --weights '' --cfg yolov5s.yaml --img 640 # from scratch + +Usage - Multi-GPU DDP training: + $ python -m torch.distributed.run --nproc_per_node 4 --master_port 1 train.py --data coco128.yaml --weights yolov5s.pt --img 640 --device 0,1,2,3 + +Models: https://github.com/ultralytics/yolov5/tree/master/models +Datasets: https://github.com/ultralytics/yolov5/tree/master/data +Tutorial: https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data """ + import argparse import math import os import random +import subprocess import sys import time from copy import deepcopy @@ -20,49 +31,46 @@ import torch import torch.distributed as dist import torch.nn as nn import yaml -from torch.cuda import amp -from torch.nn.parallel import DistributedDataParallel as DDP -from torch.optim import SGD, Adam, lr_scheduler +from torch.optim import lr_scheduler from tqdm import tqdm FILE = Path(__file__).resolve() -ROOT = FILE.parents[0] # root directory +ROOT = FILE.parents[0] # YOLOv3 root directory if str(ROOT) not in sys.path: sys.path.append(str(ROOT)) # add ROOT to PATH ROOT = Path(os.path.relpath(ROOT, Path.cwd())) # relative -import val # for end-of-epoch mAP +import val as validate # for end-of-epoch mAP from models.experimental import attempt_load from models.yolo import Model from utils.autoanchor import check_anchors from utils.autobatch import check_train_batch_size from utils.callbacks import Callbacks -from utils.datasets import create_dataloader -from utils.downloads import attempt_download -from utils.general import (LOGGER, NCOLS, check_dataset, check_file, check_git_status, check_img_size, - check_requirements, check_suffix, check_yaml, colorstr, get_latest_run, increment_path, - init_seeds, intersect_dicts, labels_to_class_weights, labels_to_image_weights, methods, - one_cycle, print_args, print_mutation, strip_optimizer) +from utils.dataloaders import create_dataloader +from utils.downloads import attempt_download, is_url +from utils.general import (LOGGER, TQDM_BAR_FORMAT, check_amp, check_dataset, check_file, check_git_info, + check_git_status, check_img_size, check_requirements, check_suffix, check_yaml, colorstr, + get_latest_run, increment_path, init_seeds, intersect_dicts, labels_to_class_weights, + labels_to_image_weights, methods, one_cycle, print_args, print_mutation, strip_optimizer, + yaml_save) from utils.loggers import Loggers -from utils.loggers.wandb.wandb_utils import check_wandb_resume +from utils.loggers.comet.comet_utils import check_comet_resume from utils.loss import ComputeLoss from utils.metrics import fitness -from utils.plots import plot_evolve, plot_labels -from utils.torch_utils import EarlyStopping, ModelEMA, de_parallel, select_device, torch_distributed_zero_first +from utils.plots import plot_evolve +from utils.torch_utils import (EarlyStopping, ModelEMA, de_parallel, select_device, smart_DDP, smart_optimizer, + smart_resume, torch_distributed_zero_first) LOCAL_RANK = int(os.getenv('LOCAL_RANK', -1)) # https://pytorch.org/docs/stable/elastic/run.html RANK = int(os.getenv('RANK', -1)) WORLD_SIZE = int(os.getenv('WORLD_SIZE', 1)) +GIT_INFO = check_git_info() -def train(hyp, # path/to/hyp.yaml or hyp dictionary - opt, - device, - callbacks - ): - save_dir, epochs, batch_size, weights, single_cls, evolve, data, cfg, resume, noval, nosave, workers, freeze, = \ - Path(opt.save_dir), opt.epochs, opt.batch_size, opt.weights, opt.single_cls, opt.evolve, opt.data, opt.cfg, \ - opt.resume, opt.noval, opt.nosave, opt.workers, opt.freeze +def train(hyp, opt, device, callbacks): # hyp is path/to/hyp.yaml or hyp dictionary + save_dir, epochs, batch_size, weights, single_cls, evolve, data, cfg, resume, noval, nosave, workers, freeze = \ + Path(opt.save_dir), opt.epochs, opt.batch_size, opt.weights, opt.single_cls, opt.evolve, opt.data, opt.cfg, opt.resume, opt.noval, opt.nosave, opt.workers, opt.freeze + callbacks.run('on_pretrain_routine_start') # Directories w = save_dir / 'weights' # weights dir @@ -74,36 +82,36 @@ def train(hyp, # path/to/hyp.yaml or hyp dictionary with open(hyp, errors='ignore') as f: hyp = yaml.safe_load(f) # load hyps dict LOGGER.info(colorstr('hyperparameters: ') + ', '.join(f'{k}={v}' for k, v in hyp.items())) + opt.hyp = hyp.copy() # for saving hyps to checkpoints # Save run settings - with open(save_dir / 'hyp.yaml', 'w') as f: - yaml.safe_dump(hyp, f, sort_keys=False) - with open(save_dir / 'opt.yaml', 'w') as f: - yaml.safe_dump(vars(opt), f, sort_keys=False) - data_dict = None + if not evolve: + yaml_save(save_dir / 'hyp.yaml', hyp) + yaml_save(save_dir / 'opt.yaml', vars(opt)) # Loggers - if RANK in [-1, 0]: + data_dict = None + if RANK in {-1, 0}: loggers = Loggers(save_dir, weights, opt, hyp, LOGGER) # loggers instance - if loggers.wandb: - data_dict = loggers.wandb.data_dict - if resume: - weights, epochs, hyp = opt.weights, opt.epochs, opt.hyp # Register actions for k in methods(loggers): callbacks.register_action(k, callback=getattr(loggers, k)) + # Process custom dataset artifact link + data_dict = loggers.remote_dataset + if resume: # If resuming runs from remote artifact + weights, epochs, hyp, batch_size = opt.weights, opt.epochs, opt.hyp, opt.batch_size + # Config - plots = not evolve # create plots + plots = not evolve and not opt.noplots # create plots cuda = device.type != 'cpu' - init_seeds(1 + RANK) + init_seeds(opt.seed + 1 + RANK, deterministic=True) with torch_distributed_zero_first(LOCAL_RANK): data_dict = data_dict or check_dataset(data) # check if None train_path, val_path = data_dict['train'], data_dict['val'] nc = 1 if single_cls else int(data_dict['nc']) # number of classes - names = ['item'] if single_cls and len(data_dict['names']) != 1 else data_dict['names'] # class names - assert len(names) == nc, f'{len(names)} names found for nc={nc} dataset in {data}' # check + names = {0: 'item'} if single_cls and len(data_dict['names']) != 1 else data_dict['names'] # class names is_coco = isinstance(val_path, str) and val_path.endswith('coco/val2017.txt') # COCO dataset # Model @@ -112,7 +120,7 @@ def train(hyp, # path/to/hyp.yaml or hyp dictionary if pretrained: with torch_distributed_zero_first(LOCAL_RANK): weights = attempt_download(weights) # download if not found locally - ckpt = torch.load(weights, map_location=device) # load checkpoint + ckpt = torch.load(weights, map_location='cpu') # load checkpoint to CPU to avoid CUDA memory leak model = Model(cfg or ckpt['model'].yaml, ch=3, nc=nc, anchors=hyp.get('anchors')).to(device) # create exclude = ['anchor'] if (cfg or hyp.get('anchors')) and not resume else [] # exclude keys csd = ckpt['model'].float().state_dict() # checkpoint state_dict as FP32 @@ -121,11 +129,13 @@ def train(hyp, # path/to/hyp.yaml or hyp dictionary LOGGER.info(f'Transferred {len(csd)}/{len(model.state_dict())} items from {weights}') # report else: model = Model(cfg, ch=3, nc=nc, anchors=hyp.get('anchors')).to(device) # create + amp = check_amp(model) # check AMP # Freeze - freeze = [f'model.{x}.' for x in range(freeze)] # layers to freeze + freeze = [f'model.{x}.' for x in (freeze if len(freeze) > 1 else range(freeze[0]))] # layers to freeze for k, v in model.named_parameters(): v.requires_grad = True # train all layers + # v.register_hook(lambda x: torch.nan_to_num(x)) # NaN to 0 (commented for erratic training results) if any(x in k for x in freeze): LOGGER.info(f'freezing {k}') v.requires_grad = False @@ -136,70 +146,35 @@ def train(hyp, # path/to/hyp.yaml or hyp dictionary # Batch size if RANK == -1 and batch_size == -1: # single-GPU only, estimate best batch size - batch_size = check_train_batch_size(model, imgsz) + batch_size = check_train_batch_size(model, imgsz, amp) + loggers.on_params_update({"batch_size": batch_size}) # Optimizer nbs = 64 # nominal batch size accumulate = max(round(nbs / batch_size), 1) # accumulate loss before optimizing hyp['weight_decay'] *= batch_size * accumulate / nbs # scale weight_decay - LOGGER.info(f"Scaled weight_decay = {hyp['weight_decay']}") - - g0, g1, g2 = [], [], [] # optimizer parameter groups - for v in model.modules(): - if hasattr(v, 'bias') and isinstance(v.bias, nn.Parameter): # bias - g2.append(v.bias) - if isinstance(v, nn.BatchNorm2d): # weight (no decay) - g0.append(v.weight) - elif hasattr(v, 'weight') and isinstance(v.weight, nn.Parameter): # weight (with decay) - g1.append(v.weight) - - if opt.adam: - optimizer = Adam(g0, lr=hyp['lr0'], betas=(hyp['momentum'], 0.999)) # adjust beta1 to momentum - else: - optimizer = SGD(g0, lr=hyp['lr0'], momentum=hyp['momentum'], nesterov=True) - - optimizer.add_param_group({'params': g1, 'weight_decay': hyp['weight_decay']}) # add g1 with weight_decay - optimizer.add_param_group({'params': g2}) # add g2 (biases) - LOGGER.info(f"{colorstr('optimizer:')} {type(optimizer).__name__} with parameter groups " - f"{len(g0)} weight, {len(g1)} weight (no decay), {len(g2)} bias") - del g0, g1, g2 + optimizer = smart_optimizer(model, opt.optimizer, hyp['lr0'], hyp['momentum'], hyp['weight_decay']) # Scheduler - if opt.linear_lr: - lf = lambda x: (1 - x / (epochs - 1)) * (1.0 - hyp['lrf']) + hyp['lrf'] # linear - else: + if opt.cos_lr: lf = one_cycle(1, hyp['lrf'], epochs) # cosine 1->hyp['lrf'] + else: + lf = lambda x: (1 - x / epochs) * (1.0 - hyp['lrf']) + hyp['lrf'] # linear scheduler = lr_scheduler.LambdaLR(optimizer, lr_lambda=lf) # plot_lr_scheduler(optimizer, scheduler, epochs) # EMA - ema = ModelEMA(model) if RANK in [-1, 0] else None + ema = ModelEMA(model) if RANK in {-1, 0} else None # Resume - start_epoch, best_fitness = 0, 0.0 + best_fitness, start_epoch = 0.0, 0 if pretrained: - # Optimizer - if ckpt['optimizer'] is not None: - optimizer.load_state_dict(ckpt['optimizer']) - best_fitness = ckpt['best_fitness'] - - # EMA - if ema and ckpt.get('ema'): - ema.ema.load_state_dict(ckpt['ema'].float().state_dict()) - ema.updates = ckpt['updates'] - - # Epochs - start_epoch = ckpt['epoch'] + 1 if resume: - assert start_epoch > 0, f'{weights} training to {epochs} epochs is finished, nothing to resume.' - if epochs < start_epoch: - LOGGER.info(f"{weights} has been trained for {ckpt['epoch']} epochs. Fine-tuning for {epochs} more epochs.") - epochs += ckpt['epoch'] # finetune additional epochs - + best_fitness, start_epoch, epochs = smart_resume(ckpt, optimizer, ema, weights, epochs, resume) del ckpt, csd # DP mode if cuda and RANK == -1 and torch.cuda.device_count() > 1: - LOGGER.warning('WARNING: DP not recommended, use torch.distributed.run for best DDP Multi-GPU results.\n' + LOGGER.warning('WARNING ⚠️ DP not recommended, use torch.distributed.run for best DDP Multi-GPU results.\n' 'See Multi-GPU Tutorial at https://github.com/ultralytics/yolov5/issues/475 to get started.') model = torch.nn.DataParallel(model) @@ -209,41 +184,53 @@ def train(hyp, # path/to/hyp.yaml or hyp dictionary LOGGER.info('Using SyncBatchNorm()') # Trainloader - train_loader, dataset = create_dataloader(train_path, imgsz, batch_size // WORLD_SIZE, gs, single_cls, - hyp=hyp, augment=True, cache=opt.cache, rect=opt.rect, rank=LOCAL_RANK, - workers=workers, image_weights=opt.image_weights, quad=opt.quad, - prefix=colorstr('train: '), shuffle=True) - mlc = int(np.concatenate(dataset.labels, 0)[:, 0].max()) # max label class - nb = len(train_loader) # number of batches + train_loader, dataset = create_dataloader(train_path, + imgsz, + batch_size // WORLD_SIZE, + gs, + single_cls, + hyp=hyp, + augment=True, + cache=None if opt.cache == 'val' else opt.cache, + rect=opt.rect, + rank=LOCAL_RANK, + workers=workers, + image_weights=opt.image_weights, + quad=opt.quad, + prefix=colorstr('train: '), + shuffle=True, + seed=opt.seed) + labels = np.concatenate(dataset.labels, 0) + mlc = int(labels[:, 0].max()) # max label class assert mlc < nc, f'Label class {mlc} exceeds nc={nc} in {data}. Possible class labels are 0-{nc - 1}' # Process 0 - if RANK in [-1, 0]: - val_loader = create_dataloader(val_path, imgsz, batch_size // WORLD_SIZE * 2, gs, single_cls, - hyp=hyp, cache=None if noval else opt.cache, rect=True, rank=-1, - workers=workers, pad=0.5, + if RANK in {-1, 0}: + val_loader = create_dataloader(val_path, + imgsz, + batch_size // WORLD_SIZE * 2, + gs, + single_cls, + hyp=hyp, + cache=None if noval else opt.cache, + rect=True, + rank=-1, + workers=workers * 2, + pad=0.5, prefix=colorstr('val: '))[0] if not resume: - labels = np.concatenate(dataset.labels, 0) - # c = torch.tensor(labels[:, 0]) # classes - # cf = torch.bincount(c.long(), minlength=nc) + 1. # frequency - # model._initialize_biases(cf.to(device)) - if plots: - plot_labels(labels, names, save_dir) - - # Anchors if not opt.noautoanchor: - check_anchors(dataset, model=model, thr=hyp['anchor_t'], imgsz=imgsz) + check_anchors(dataset, model=model, thr=hyp['anchor_t'], imgsz=imgsz) # run AutoAnchor model.half().float() # pre-reduce anchor precision - callbacks.run('on_pretrain_routine_end') + callbacks.run('on_pretrain_routine_end', labels, names) # DDP mode if cuda and RANK != -1: - model = DDP(model, device_ids=[LOCAL_RANK], output_device=LOCAL_RANK) + model = smart_DDP(model) - # Model parameters + # Model attributes nl = de_parallel(model).model[-1].nl # number of detection layers (to scale hyps) hyp['box'] *= 3 / nl # scale to layers hyp['cls'] *= nc / 80 * 3 / nl # scale to classes and layers @@ -256,20 +243,23 @@ def train(hyp, # path/to/hyp.yaml or hyp dictionary # Start training t0 = time.time() - nw = max(round(hyp['warmup_epochs'] * nb), 1000) # number of warmup iterations, max(3 epochs, 1k iterations) + nb = len(train_loader) # number of batches + nw = max(round(hyp['warmup_epochs'] * nb), 100) # number of warmup iterations, max(3 epochs, 100 iterations) # nw = min(nw, (epochs - start_epoch) / 2 * nb) # limit warmup to < 1/2 of training last_opt_step = -1 maps = np.zeros(nc) # mAP per class results = (0, 0, 0, 0, 0, 0, 0) # P, R, mAP@.5, mAP@.5-.95, val_loss(box, obj, cls) scheduler.last_epoch = start_epoch - 1 # do not move - scaler = amp.GradScaler(enabled=cuda) - stopper = EarlyStopping(patience=opt.patience) + scaler = torch.cuda.amp.GradScaler(enabled=amp) + stopper, stop = EarlyStopping(patience=opt.patience), False compute_loss = ComputeLoss(model) # init loss class + callbacks.run('on_train_start') LOGGER.info(f'Image sizes {imgsz} train, {imgsz} val\n' f'Using {train_loader.num_workers * WORLD_SIZE} dataloader workers\n' f"Logging results to {colorstr('bold', save_dir)}\n" f'Starting training for {epochs} epochs...') for epoch in range(start_epoch, epochs): # epoch ------------------------------------------------------------------ + callbacks.run('on_train_epoch_start') model.train() # Update image weights (optional, single-GPU only) @@ -286,11 +276,12 @@ def train(hyp, # path/to/hyp.yaml or hyp dictionary if RANK != -1: train_loader.sampler.set_epoch(epoch) pbar = enumerate(train_loader) - LOGGER.info(('\n' + '%10s' * 7) % ('Epoch', 'gpu_mem', 'box', 'obj', 'cls', 'labels', 'img_size')) - if RANK in [-1, 0]: - pbar = tqdm(pbar, total=nb, ncols=NCOLS, bar_format='{l_bar}{bar:10}{r_bar}{bar:-10b}') # progress bar + LOGGER.info(('\n' + '%11s' * 7) % ('Epoch', 'GPU_mem', 'box_loss', 'obj_loss', 'cls_loss', 'Instances', 'Size')) + if RANK in {-1, 0}: + pbar = tqdm(pbar, total=nb, bar_format=TQDM_BAR_FORMAT) # progress bar optimizer.zero_grad() for i, (imgs, targets, paths, _) in pbar: # batch ------------------------------------------------------------- + callbacks.run('on_train_batch_start') ni = i + nb * epoch # number integrated batches (since train start) imgs = imgs.to(device, non_blocking=True).float() / 255 # uint8 to float32, 0-255 to 0.0-1.0 @@ -301,7 +292,7 @@ def train(hyp, # path/to/hyp.yaml or hyp dictionary accumulate = max(1, np.interp(ni, xi, [1, nbs / batch_size]).round()) for j, x in enumerate(optimizer.param_groups): # bias lr falls from 0.1 to lr0, all other lrs rise from 0.0 to lr0 - x['lr'] = np.interp(ni, xi, [hyp['warmup_bias_lr'] if j == 2 else 0.0, x['initial_lr'] * lf(epoch)]) + x['lr'] = np.interp(ni, xi, [hyp['warmup_bias_lr'] if j == 0 else 0.0, x['initial_lr'] * lf(epoch)]) if 'momentum' in x: x['momentum'] = np.interp(ni, xi, [hyp['warmup_momentum'], hyp['momentum']]) @@ -314,7 +305,7 @@ def train(hyp, # path/to/hyp.yaml or hyp dictionary imgs = nn.functional.interpolate(imgs, size=ns, mode='bilinear', align_corners=False) # Forward - with amp.autocast(enabled=cuda): + with torch.cuda.amp.autocast(amp): pred = model(imgs) # forward loss, loss_items = compute_loss(pred, targets.to(device)) # loss scaled by batch_size if RANK != -1: @@ -325,8 +316,10 @@ def train(hyp, # path/to/hyp.yaml or hyp dictionary # Backward scaler.scale(loss).backward() - # Optimize + # Optimize - https://pytorch.org/docs/master/notes/amp_examples.html if ni - last_opt_step >= accumulate: + scaler.unscale_(optimizer) # unscale gradients + torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=10.0) # clip gradients scaler.step(optimizer) # optimizer.step scaler.update() optimizer.zero_grad() @@ -335,37 +328,41 @@ def train(hyp, # path/to/hyp.yaml or hyp dictionary last_opt_step = ni # Log - if RANK in [-1, 0]: + if RANK in {-1, 0}: mloss = (mloss * i + loss_items) / (i + 1) # update mean losses mem = f'{torch.cuda.memory_reserved() / 1E9 if torch.cuda.is_available() else 0:.3g}G' # (GB) - pbar.set_description(('%10s' * 2 + '%10.4g' * 5) % ( - f'{epoch}/{epochs - 1}', mem, *mloss, targets.shape[0], imgs.shape[-1])) - callbacks.run('on_train_batch_end', ni, model, imgs, targets, paths, plots, opt.sync_bn) + pbar.set_description(('%11s' * 2 + '%11.4g' * 5) % + (f'{epoch}/{epochs - 1}', mem, *mloss, targets.shape[0], imgs.shape[-1])) + callbacks.run('on_train_batch_end', model, ni, imgs, targets, paths, list(mloss)) + if callbacks.stop_training: + return # end batch ------------------------------------------------------------------------------------------------ # Scheduler lr = [x['lr'] for x in optimizer.param_groups] # for loggers scheduler.step() - if RANK in [-1, 0]: + if RANK in {-1, 0}: # mAP callbacks.run('on_train_epoch_end', epoch=epoch) ema.update_attr(model, include=['yaml', 'nc', 'hyp', 'names', 'stride', 'class_weights']) final_epoch = (epoch + 1 == epochs) or stopper.possible_stop if not noval or final_epoch: # Calculate mAP - results, maps, _ = val.run(data_dict, - batch_size=batch_size // WORLD_SIZE * 2, - imgsz=imgsz, - model=ema.ema, - single_cls=single_cls, - dataloader=val_loader, - save_dir=save_dir, - plots=False, - callbacks=callbacks, - compute_loss=compute_loss) + results, maps, _ = validate.run(data_dict, + batch_size=batch_size // WORLD_SIZE * 2, + imgsz=imgsz, + half=amp, + model=ema.ema, + single_cls=single_cls, + dataloader=val_loader, + save_dir=save_dir, + plots=False, + callbacks=callbacks, + compute_loss=compute_loss) # Update best mAP fi = fitness(np.array(results).reshape(1, -1)) # weighted combination of [P, R, mAP@.5, mAP@.5-.95] + stop = stopper(epoch=epoch, fitness=fi) # early stop check if fi > best_fitness: best_fitness = fi log_vals = list(mloss) + list(results) + lr @@ -373,65 +370,62 @@ def train(hyp, # path/to/hyp.yaml or hyp dictionary # Save model if (not nosave) or (final_epoch and not evolve): # if save - ckpt = {'epoch': epoch, - 'best_fitness': best_fitness, - 'model': deepcopy(de_parallel(model)).half(), - 'ema': deepcopy(ema.ema).half(), - 'updates': ema.updates, - 'optimizer': optimizer.state_dict(), - 'wandb_id': loggers.wandb.wandb_run.id if loggers.wandb else None, - 'date': datetime.now().isoformat()} + ckpt = { + 'epoch': epoch, + 'best_fitness': best_fitness, + 'model': deepcopy(de_parallel(model)).half(), + 'ema': deepcopy(ema.ema).half(), + 'updates': ema.updates, + 'optimizer': optimizer.state_dict(), + 'opt': vars(opt), + 'git': GIT_INFO, # {remote, branch, commit} if a git repo + 'date': datetime.now().isoformat()} # Save last, best and delete torch.save(ckpt, last) if best_fitness == fi: torch.save(ckpt, best) - if (epoch > 0) and (opt.save_period > 0) and (epoch % opt.save_period == 0): + if opt.save_period > 0 and epoch % opt.save_period == 0: torch.save(ckpt, w / f'epoch{epoch}.pt') del ckpt callbacks.run('on_model_save', last, epoch, final_epoch, best_fitness, fi) - # Stop Single-GPU - if RANK == -1 and stopper(epoch=epoch, fitness=fi): - break - - # Stop DDP TODO: known issues shttps://github.com/ultralytics/yolov5/pull/4576 - # stop = stopper(epoch=epoch, fitness=fi) - # if RANK == 0: - # dist.broadcast_object_list([stop], 0) # broadcast 'stop' to all ranks - - # Stop DPP - # with torch_distributed_zero_first(RANK): - # if stop: - # break # must break all DDP ranks + # EarlyStopping + if RANK != -1: # if DDP training + broadcast_list = [stop if RANK == 0 else None] + dist.broadcast_object_list(broadcast_list, 0) # broadcast 'stop' to all ranks + if RANK != 0: + stop = broadcast_list[0] + if stop: + break # must break all DDP ranks # end epoch ---------------------------------------------------------------------------------------------------- # end training ----------------------------------------------------------------------------------------------------- - if RANK in [-1, 0]: + if RANK in {-1, 0}: LOGGER.info(f'\n{epoch - start_epoch + 1} epochs completed in {(time.time() - t0) / 3600:.3f} hours.') for f in last, best: if f.exists(): strip_optimizer(f) # strip optimizers if f is best: LOGGER.info(f'\nValidating {f}...') - results, _, _ = val.run(data_dict, - batch_size=batch_size // WORLD_SIZE * 2, - imgsz=imgsz, - model=attempt_load(f, device).half(), - iou_thres=0.65 if is_coco else 0.60, # best pycocotools results at 0.65 - single_cls=single_cls, - dataloader=val_loader, - save_dir=save_dir, - save_json=is_coco, - verbose=True, - plots=True, - callbacks=callbacks, - compute_loss=compute_loss) # val best model with plots + results, _, _ = validate.run( + data_dict, + batch_size=batch_size // WORLD_SIZE * 2, + imgsz=imgsz, + model=attempt_load(f, device).half(), + iou_thres=0.65 if is_coco else 0.60, # best pycocotools at iou 0.65 + single_cls=single_cls, + dataloader=val_loader, + save_dir=save_dir, + save_json=is_coco, + verbose=True, + plots=plots, + callbacks=callbacks, + compute_loss=compute_loss) # val best model with plots if is_coco: callbacks.run('on_fit_epoch_end', list(mloss) + list(results) + lr, epoch, best_fitness, fi) - callbacks.run('on_train_end', last, best, plots, epoch, results) - LOGGER.info(f"Results saved to {colorstr('bold', save_dir)}") + callbacks.run('on_train_end', last, best, epoch, results) torch.cuda.empty_cache() return results @@ -439,80 +433,92 @@ def train(hyp, # path/to/hyp.yaml or hyp dictionary def parse_opt(known=False): parser = argparse.ArgumentParser() - parser.add_argument('--weights', type=str, default=ROOT / 'yolov3.pt', help='initial weights path') + parser.add_argument('--weights', type=str, default=ROOT / 'yolov3-tiny.pt', help='initial weights path') parser.add_argument('--cfg', type=str, default='', help='model.yaml path') parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='dataset.yaml path') - parser.add_argument('--hyp', type=str, default=ROOT / 'data/hyps/hyp.scratch.yaml', help='hyperparameters path') - parser.add_argument('--epochs', type=int, default=300) + parser.add_argument('--hyp', type=str, default=ROOT / 'data/hyps/hyp.scratch-low.yaml', help='hyperparameters path') + parser.add_argument('--epochs', type=int, default=100, help='total training epochs') parser.add_argument('--batch-size', type=int, default=16, help='total batch size for all GPUs, -1 for autobatch') parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=640, help='train, val image size (pixels)') parser.add_argument('--rect', action='store_true', help='rectangular training') parser.add_argument('--resume', nargs='?', const=True, default=False, help='resume most recent training') parser.add_argument('--nosave', action='store_true', help='only save final checkpoint') parser.add_argument('--noval', action='store_true', help='only validate final epoch') - parser.add_argument('--noautoanchor', action='store_true', help='disable autoanchor check') + parser.add_argument('--noautoanchor', action='store_true', help='disable AutoAnchor') + parser.add_argument('--noplots', action='store_true', help='save no plot files') parser.add_argument('--evolve', type=int, nargs='?', const=300, help='evolve hyperparameters for x generations') parser.add_argument('--bucket', type=str, default='', help='gsutil bucket') - parser.add_argument('--cache', type=str, nargs='?', const='ram', help='--cache images in "ram" (default) or "disk"') + parser.add_argument('--cache', type=str, nargs='?', const='ram', help='image --cache ram/disk') parser.add_argument('--image-weights', action='store_true', help='use weighted image selection for training') parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') parser.add_argument('--multi-scale', action='store_true', help='vary img-size +/- 50%%') parser.add_argument('--single-cls', action='store_true', help='train multi-class data as single-class') - parser.add_argument('--adam', action='store_true', help='use torch.optim.Adam() optimizer') + parser.add_argument('--optimizer', type=str, choices=['SGD', 'Adam', 'AdamW'], default='SGD', help='optimizer') parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode') parser.add_argument('--workers', type=int, default=8, help='max dataloader workers (per RANK in DDP mode)') parser.add_argument('--project', default=ROOT / 'runs/train', help='save to project/name') parser.add_argument('--name', default='exp', help='save to project/name') parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment') parser.add_argument('--quad', action='store_true', help='quad dataloader') - parser.add_argument('--linear-lr', action='store_true', help='linear LR') + parser.add_argument('--cos-lr', action='store_true', help='cosine LR scheduler') parser.add_argument('--label-smoothing', type=float, default=0.0, help='Label smoothing epsilon') parser.add_argument('--patience', type=int, default=100, help='EarlyStopping patience (epochs without improvement)') - parser.add_argument('--freeze', type=int, default=0, help='Number of layers to freeze. backbone=10, all=24') + parser.add_argument('--freeze', nargs='+', type=int, default=[0], help='Freeze layers: backbone=10, first3=0 1 2') parser.add_argument('--save-period', type=int, default=-1, help='Save checkpoint every x epochs (disabled if < 1)') - parser.add_argument('--local_rank', type=int, default=-1, help='DDP parameter, do not modify') + parser.add_argument('--seed', type=int, default=0, help='Global training seed') + parser.add_argument('--local_rank', type=int, default=-1, help='Automatic DDP Multi-GPU argument, do not modify') - # Weights & Biases arguments - parser.add_argument('--entity', default=None, help='W&B: Entity') - parser.add_argument('--upload_dataset', action='store_true', help='W&B: Upload dataset as artifact table') - parser.add_argument('--bbox_interval', type=int, default=-1, help='W&B: Set bounding-box image logging interval') - parser.add_argument('--artifact_alias', type=str, default='latest', help='W&B: Version of dataset artifact to use') + # Logger arguments + parser.add_argument('--entity', default=None, help='Entity') + parser.add_argument('--upload_dataset', nargs='?', const=True, default=False, help='Upload data, "val" option') + parser.add_argument('--bbox_interval', type=int, default=-1, help='Set bounding-box image logging interval') + parser.add_argument('--artifact_alias', type=str, default='latest', help='Version of dataset artifact to use') - opt = parser.parse_known_args()[0] if known else parser.parse_args() - return opt + return parser.parse_known_args()[0] if known else parser.parse_args() def main(opt, callbacks=Callbacks()): # Checks - if RANK in [-1, 0]: - print_args(FILE.stem, opt) + if RANK in {-1, 0}: + print_args(vars(opt)) check_git_status() - check_requirements(exclude=['thop']) + check_requirements() - # Resume - if opt.resume and not check_wandb_resume(opt) and not opt.evolve: # resume an interrupted run - ckpt = opt.resume if isinstance(opt.resume, str) else get_latest_run() # specified or most recent path - assert os.path.isfile(ckpt), 'ERROR: --resume checkpoint does not exist' - with open(Path(ckpt).parent.parent / 'opt.yaml', errors='ignore') as f: - opt = argparse.Namespace(**yaml.safe_load(f)) # replace - opt.cfg, opt.weights, opt.resume = '', ckpt, True # reinstate - LOGGER.info(f'Resuming training from {ckpt}') + # Resume (from specified or most recent last.pt) + if opt.resume and not check_comet_resume(opt) and not opt.evolve: + last = Path(check_file(opt.resume) if isinstance(opt.resume, str) else get_latest_run()) + opt_yaml = last.parent.parent / 'opt.yaml' # train options yaml + opt_data = opt.data # original dataset + if opt_yaml.is_file(): + with open(opt_yaml, errors='ignore') as f: + d = yaml.safe_load(f) + else: + d = torch.load(last, map_location='cpu')['opt'] + opt = argparse.Namespace(**d) # replace + opt.cfg, opt.weights, opt.resume = '', str(last), True # reinstate + if is_url(opt_data): + opt.data = check_file(opt_data) # avoid HUB resume auth timeout else: opt.data, opt.cfg, opt.hyp, opt.weights, opt.project = \ check_file(opt.data), check_yaml(opt.cfg), check_yaml(opt.hyp), str(opt.weights), str(opt.project) # checks assert len(opt.cfg) or len(opt.weights), 'either --cfg or --weights must be specified' if opt.evolve: - opt.project = str(ROOT / 'runs/evolve') + if opt.project == str(ROOT / 'runs/train'): # if default project name, rename to runs/evolve + opt.project = str(ROOT / 'runs/evolve') opt.exist_ok, opt.resume = opt.resume, False # pass resume to exist_ok and disable resume + if opt.name == 'cfg': + opt.name = Path(opt.cfg).stem # use model.yaml as name opt.save_dir = str(increment_path(Path(opt.project) / opt.name, exist_ok=opt.exist_ok)) # DDP mode device = select_device(opt.device, batch_size=opt.batch_size) if LOCAL_RANK != -1: + msg = 'is not compatible with YOLOv3 Multi-GPU DDP training' + assert not opt.image_weights, f'--image-weights {msg}' + assert not opt.evolve, f'--evolve {msg}' + assert opt.batch_size != -1, f'AutoBatch with --batch-size -1 {msg}, please pass a valid --batch-size' + assert opt.batch_size % WORLD_SIZE == 0, f'--batch-size {opt.batch_size} must be multiple of WORLD_SIZE' assert torch.cuda.device_count() > LOCAL_RANK, 'insufficient CUDA devices for DDP command' - assert opt.batch_size % WORLD_SIZE == 0, '--batch-size must be multiple of CUDA device count' - assert not opt.image_weights, '--image-weights argument is not compatible with DDP training' - assert not opt.evolve, '--evolve argument is not compatible with DDP training' torch.cuda.set_device(LOCAL_RANK) device = torch.device('cuda', LOCAL_RANK) dist.init_process_group(backend="nccl" if dist.is_nccl_available() else "gloo") @@ -520,52 +526,53 @@ def main(opt, callbacks=Callbacks()): # Train if not opt.evolve: train(opt.hyp, opt, device, callbacks) - if WORLD_SIZE > 1 and RANK == 0: - LOGGER.info('Destroying process group... ') - dist.destroy_process_group() # Evolve hyperparameters (optional) else: # Hyperparameter evolution metadata (mutation scale 0-1, lower_limit, upper_limit) - meta = {'lr0': (1, 1e-5, 1e-1), # initial learning rate (SGD=1E-2, Adam=1E-3) - 'lrf': (1, 0.01, 1.0), # final OneCycleLR learning rate (lr0 * lrf) - 'momentum': (0.3, 0.6, 0.98), # SGD momentum/Adam beta1 - 'weight_decay': (1, 0.0, 0.001), # optimizer weight decay - 'warmup_epochs': (1, 0.0, 5.0), # warmup epochs (fractions ok) - 'warmup_momentum': (1, 0.0, 0.95), # warmup initial momentum - 'warmup_bias_lr': (1, 0.0, 0.2), # warmup initial bias lr - 'box': (1, 0.02, 0.2), # box loss gain - 'cls': (1, 0.2, 4.0), # cls loss gain - 'cls_pw': (1, 0.5, 2.0), # cls BCELoss positive_weight - 'obj': (1, 0.2, 4.0), # obj loss gain (scale with pixels) - 'obj_pw': (1, 0.5, 2.0), # obj BCELoss positive_weight - 'iou_t': (0, 0.1, 0.7), # IoU training threshold - 'anchor_t': (1, 2.0, 8.0), # anchor-multiple threshold - 'anchors': (2, 2.0, 10.0), # anchors per output grid (0 to ignore) - 'fl_gamma': (0, 0.0, 2.0), # focal loss gamma (efficientDet default gamma=1.5) - 'hsv_h': (1, 0.0, 0.1), # image HSV-Hue augmentation (fraction) - 'hsv_s': (1, 0.0, 0.9), # image HSV-Saturation augmentation (fraction) - 'hsv_v': (1, 0.0, 0.9), # image HSV-Value augmentation (fraction) - 'degrees': (1, 0.0, 45.0), # image rotation (+/- deg) - 'translate': (1, 0.0, 0.9), # image translation (+/- fraction) - 'scale': (1, 0.0, 0.9), # image scale (+/- gain) - 'shear': (1, 0.0, 10.0), # image shear (+/- deg) - 'perspective': (0, 0.0, 0.001), # image perspective (+/- fraction), range 0-0.001 - 'flipud': (1, 0.0, 1.0), # image flip up-down (probability) - 'fliplr': (0, 0.0, 1.0), # image flip left-right (probability) - 'mosaic': (1, 0.0, 1.0), # image mixup (probability) - 'mixup': (1, 0.0, 1.0), # image mixup (probability) - 'copy_paste': (1, 0.0, 1.0)} # segment copy-paste (probability) + meta = { + 'lr0': (1, 1e-5, 1e-1), # initial learning rate (SGD=1E-2, Adam=1E-3) + 'lrf': (1, 0.01, 1.0), # final OneCycleLR learning rate (lr0 * lrf) + 'momentum': (0.3, 0.6, 0.98), # SGD momentum/Adam beta1 + 'weight_decay': (1, 0.0, 0.001), # optimizer weight decay + 'warmup_epochs': (1, 0.0, 5.0), # warmup epochs (fractions ok) + 'warmup_momentum': (1, 0.0, 0.95), # warmup initial momentum + 'warmup_bias_lr': (1, 0.0, 0.2), # warmup initial bias lr + 'box': (1, 0.02, 0.2), # box loss gain + 'cls': (1, 0.2, 4.0), # cls loss gain + 'cls_pw': (1, 0.5, 2.0), # cls BCELoss positive_weight + 'obj': (1, 0.2, 4.0), # obj loss gain (scale with pixels) + 'obj_pw': (1, 0.5, 2.0), # obj BCELoss positive_weight + 'iou_t': (0, 0.1, 0.7), # IoU training threshold + 'anchor_t': (1, 2.0, 8.0), # anchor-multiple threshold + 'anchors': (2, 2.0, 10.0), # anchors per output grid (0 to ignore) + 'fl_gamma': (0, 0.0, 2.0), # focal loss gamma (efficientDet default gamma=1.5) + 'hsv_h': (1, 0.0, 0.1), # image HSV-Hue augmentation (fraction) + 'hsv_s': (1, 0.0, 0.9), # image HSV-Saturation augmentation (fraction) + 'hsv_v': (1, 0.0, 0.9), # image HSV-Value augmentation (fraction) + 'degrees': (1, 0.0, 45.0), # image rotation (+/- deg) + 'translate': (1, 0.0, 0.9), # image translation (+/- fraction) + 'scale': (1, 0.0, 0.9), # image scale (+/- gain) + 'shear': (1, 0.0, 10.0), # image shear (+/- deg) + 'perspective': (0, 0.0, 0.001), # image perspective (+/- fraction), range 0-0.001 + 'flipud': (1, 0.0, 1.0), # image flip up-down (probability) + 'fliplr': (0, 0.0, 1.0), # image flip left-right (probability) + 'mosaic': (1, 0.0, 1.0), # image mixup (probability) + 'mixup': (1, 0.0, 1.0), # image mixup (probability) + 'copy_paste': (1, 0.0, 1.0)} # segment copy-paste (probability) with open(opt.hyp, errors='ignore') as f: hyp = yaml.safe_load(f) # load hyps dict if 'anchors' not in hyp: # anchors commented in hyp.yaml hyp['anchors'] = 3 + if opt.noautoanchor: + del hyp['anchors'], meta['anchors'] opt.noval, opt.nosave, save_dir = True, True, Path(opt.save_dir) # only val/save final epoch # ei = [isinstance(x, (int, float)) for x in hyp.values()] # evolvable indices evolve_yaml, evolve_csv = save_dir / 'hyp_evolve.yaml', save_dir / 'evolve.csv' if opt.bucket: - os.system(f'gsutil cp gs://{opt.bucket}/evolve.csv {save_dir}') # download evolve.csv if exists + subprocess.run( + f'gsutil cp gs://{opt.bucket}/evolve.csv {evolve_csv}'.split()) # download evolve.csv if exists for _ in range(opt.evolve): # generations to evolve if evolve_csv.exists(): # if evolve.csv exists: select best hyps and mutate @@ -601,23 +608,26 @@ def main(opt, callbacks=Callbacks()): # Train mutation results = train(hyp.copy(), opt, device, callbacks) - + callbacks = Callbacks() # Write mutation results - print_mutation(results, hyp.copy(), save_dir, opt.bucket) + keys = ('metrics/precision', 'metrics/recall', 'metrics/mAP_0.5', 'metrics/mAP_0.5:0.95', 'val/box_loss', + 'val/obj_loss', 'val/cls_loss') + print_mutation(keys, results, hyp.copy(), save_dir, opt.bucket) # Plot results plot_evolve(evolve_csv) - LOGGER.info(f'Hyperparameter evolution finished\n' + LOGGER.info(f'Hyperparameter evolution finished {opt.evolve} generations\n' f"Results saved to {colorstr('bold', save_dir)}\n" - f'Use best hyperparameters example: $ python train.py --hyp {evolve_yaml}') + f'Usage example: $ python train.py --hyp {evolve_yaml}') def run(**kwargs): - # Usage: import train; train.run(data='coco128.yaml', imgsz=320, weights='yolov3.pt') + # Usage: import train; train.run(data='coco128.yaml', imgsz=320, weights='yolov5m.pt') opt = parse_opt(True) for k, v in kwargs.items(): setattr(opt, k, v) main(opt) + return opt if __name__ == "__main__": diff --git a/tutorial.ipynb b/tutorial.ipynb index 635061fb..63881fb9 100644 --- a/tutorial.ipynb +++ b/tutorial.ipynb @@ -5,7 +5,7 @@ "colab": { "name": "YOLOv3 Tutorial", "provenance": [], - "include_colab_link": true + "toc_visible": true }, "kernelspec": { "name": "python3", @@ -14,373 +14,373 @@ "accelerator": "GPU", "widgets": { "application/vnd.jupyter.widget-state+json": { - "eeda9d6850e8406f9bbc5b06051b3710": { + "1f7df330663048998adcf8a45bc8f69b": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { - "_view_name": "HBoxView", "_dom_classes": [], - "_model_name": "HBoxModel", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_view_count": null, - "_view_module_version": "1.5.0", - "box_style": "", - "layout": "IPY_MODEL_1e823c45174a4216be7234a6cc5cfd99", "_model_module": "@jupyter-widgets/controls", - "children": [ - "IPY_MODEL_cd8efd6c5de94ea8848a7d5b8766a4d6", - "IPY_MODEL_a4ec69c4697c4b0e84e6193be227f63e", - "IPY_MODEL_9a5694c133be46df8d2fe809b77c1c35" - ] - } - }, - "1e823c45174a4216be7234a6cc5cfd99": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, - "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_e896e6096dd244c59d7955e2035cd729", + "IPY_MODEL_a6ff238c29984b24bf6d0bd175c19430", + "IPY_MODEL_3c085ba3f3fd4c3c8a6bb41b41ce1479" + ], + "layout": "IPY_MODEL_16b0c8aa6e0f427e8a54d3791abb7504" } }, - "cd8efd6c5de94ea8848a7d5b8766a4d6": { + "e896e6096dd244c59d7955e2035cd729": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_d584167143f84a0484006dded3fd2620", "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": "100%", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_b9a25c0d425c4fe4b8cd51ae6a301b0d" + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c7b2dd0f78384cad8e400b282996cdf5", + "placeholder": "​", + "style": "IPY_MODEL_6a27e43b0e434edd82ee63f0a91036ca", + "value": "100%" } }, - "a4ec69c4697c4b0e84e6193be227f63e": { + "a6ff238c29984b24bf6d0bd175c19430": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { - "_view_name": "ProgressView", - "style": "IPY_MODEL_654525fe1ed34d5fbe1c36ed80ae1c1c", "_dom_classes": [], - "description": "", - "_model_name": "FloatProgressModel", - "bar_style": "success", - "max": 818322941, - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": 818322941, - "_view_count": null, - "_view_module_version": "1.5.0", - "orientation": "horizontal", - "min": 0, - "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_09544845070e47baafc5e37d45ff23e9" + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_cce0e6c0c4ec442cb47e65c674e02e92", + "max": 818322941, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_c5b9f38e2f0d4f9aa97fe87265263743", + "value": 818322941 } }, - "9a5694c133be46df8d2fe809b77c1c35": { + "3c085ba3f3fd4c3c8a6bb41b41ce1479": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { - "_view_name": "HTMLView", - "style": "IPY_MODEL_1066f1d5b6104a3dae19f26269745bd0", "_dom_classes": [], - "description": "", - "_model_name": "HTMLModel", - "placeholder": "​", - "_view_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "value": " 780M/780M [00:03<00:00, 200MB/s]", - "_view_count": null, - "_view_module_version": "1.5.0", - "description_tooltip": null, "_model_module": "@jupyter-widgets/controls", - "layout": "IPY_MODEL_dd3a70e1ef4547ec8d3463749ce06285" - } - }, - "d584167143f84a0484006dded3fd2620": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_df554fb955c7454696beac5a82889386", + "placeholder": "​", + "style": "IPY_MODEL_74e9112a87a242f4831b7d68c7da6333", + "value": " 780M/780M [00:05<00:00, 126MB/s]" } }, - "b9a25c0d425c4fe4b8cd51ae6a301b0d": { + "16b0c8aa6e0f427e8a54d3791abb7504": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, + "_model_module_version": "1.2.0", "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, + "_view_count": null, + "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, "display": null, - "left": null + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null } }, - "654525fe1ed34d5fbe1c36ed80ae1c1c": { + "c7b2dd0f78384cad8e400b282996cdf5": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6a27e43b0e434edd82ee63f0a91036ca": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "cce0e6c0c4ec442cb47e65c674e02e92": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c5b9f38e2f0d4f9aa97fe87265263743": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { - "_view_name": "StyleView", - "_model_name": "ProgressStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", + "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", "_view_count": null, + "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", + "_view_name": "StyleView", "bar_color": null, - "_model_module": "@jupyter-widgets/controls" + "description_width": "" } }, - "09544845070e47baafc5e37d45ff23e9": { + "df554fb955c7454696beac5a82889386": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, - "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, + "_model_module_version": "1.2.0", "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, + "_view_count": null, + "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, "display": null, - "left": null + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null } }, - "1066f1d5b6104a3dae19f26269745bd0": { + "74e9112a87a242f4831b7d68c7da6333": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { - "_view_name": "StyleView", - "_model_name": "DescriptionStyleModel", - "description_width": "", - "_view_module": "@jupyter-widgets/base", + "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", "_view_count": null, - "_view_module_version": "1.2.0", - "_model_module": "@jupyter-widgets/controls" - } - }, - "dd3a70e1ef4547ec8d3463749ce06285": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_view_name": "LayoutView", - "grid_template_rows": null, - "right": null, - "justify_content": null, "_view_module": "@jupyter-widgets/base", - "overflow": null, - "_model_module_version": "1.2.0", - "_view_count": null, - "flex_flow": null, - "width": null, - "min_width": null, - "border": null, - "align_items": null, - "bottom": null, - "_model_module": "@jupyter-widgets/base", - "top": null, - "grid_column": null, - "overflow_y": null, - "overflow_x": null, - "grid_auto_flow": null, - "grid_area": null, - "grid_template_columns": null, - "flex": null, - "_model_name": "LayoutModel", - "justify_items": null, - "grid_row": null, - "max_height": null, - "align_content": null, - "visibility": null, - "align_self": null, - "height": null, - "min_height": null, - "padding": null, - "grid_auto_rows": null, - "grid_gap": null, - "max_width": null, - "order": null, "_view_module_version": "1.2.0", - "grid_template_areas": null, - "object_position": null, - "object_fit": null, - "grid_auto_columns": null, - "margin": null, - "display": null, - "left": null + "_view_name": "StyleView", + "description_width": "" } } } } }, "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "view-in-github", - "colab_type": "text" - }, - "source": [ - "\"Open" - ] - }, { "cell_type": "markdown", "metadata": { "id": "t6MPjfT5NrKQ" }, "source": [ - "\n", - "\n", + "
\n", "\n", - "This is the **official YOLOv3 🚀 notebook** by **Ultralytics**, and is freely available for redistribution under the [GPL-3.0 license](https://choosealicense.com/licenses/gpl-3.0/). \n", - "For more information please visit https://github.com/ultralytics/yolov3 and https://ultralytics.com. Thank you!" + " \n", + " \n", + "\n", + "\n", + "
\n", + " \"Run\n", + " \"Open\n", + " \"Open\n", + "
\n", + "\n", + "This 🚀 notebook by Ultralytics presents simple train, validate and predict examples to help start your AI adventure.
See GitHub for community support or contact us for professional support.\n", + "\n", + "
" ] }, { @@ -391,7 +391,7 @@ "source": [ "# Setup\n", "\n", - "Clone repo, install dependencies and check PyTorch and GPU." + "Clone GitHub [repository](https://github.com/ultralytics/yolov5), install [dependencies](https://github.com/ultralytics/yolov5/blob/master/requirements.txt) and check PyTorch and GPU." ] }, { @@ -401,24 +401,31 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "141002fc-fe49-48d2-a575-2555bf903413" + "outputId": "f9f016ad-3dcf-4bd2-e1c3-d5b79efc6f32" }, "source": [ - "!git clone https://github.com/ultralytics/yolov3 # clone\n", - "%cd yolov3\n", + "!git clone https://github.com/ultralytics/yolov5 # clone\n", + "%cd yolov5\n", "%pip install -qr requirements.txt # install\n", "\n", "import torch\n", - "from yolov3 import utils\n", + "import utils\n", "display = utils.notebook_init() # checks" ], - "execution_count": 1, + "execution_count": null, "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + " 🚀 v7.0-1-gb32f67f Python-3.7.15 torch-1.12.1+cu113 CUDA:0 (Tesla T4, 15110MiB)\n" + ] + }, { "output_type": "stream", "name": "stdout", "text": [ - "Setup complete ✅\n" + "Setup complete ✅ (2 CPUs, 12.7 GB RAM, 22.6/78.2 GB disk)\n" ] } ] @@ -429,18 +436,19 @@ "id": "4JnkELT0cIJg" }, "source": [ - "# 1. Inference\n", + "# 1. Detect\n", "\n", - "`detect.py` runs YOLOv3 inference on a variety of sources, downloading models automatically from the [latest YOLOv3 release](https://github.com/ultralytics/yolov3/releases), and saving results to `runs/detect`. Example inference sources are:\n", + "`detect.py` runs inference on a variety of sources, downloading models automatically from the [latest release](https://github.com/ultralytics/yolov5/releases), and saving results to `runs/detect`. Example inference sources are:\n", "\n", "```shell\n", "python detect.py --source 0 # webcam\n", " img.jpg # image \n", " vid.mp4 # video\n", + " screen # screenshot\n", " path/ # directory\n", - " path/*.jpg # glob\n", - " 'https://youtu.be/Zgi9g1ksQHc' # YouTube\n", - " 'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP stream\n", + " 'path/*.jpg' # glob\n", + " 'https://youtu.be/Zgi9g1ksQHc' # YouTube\n", + " 'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP stream\n", "```" ] }, @@ -451,27 +459,30 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "c29b082a-8e56-4799-b32a-056425f130d1" + "outputId": "b4db5c49-f501-4505-cf0d-a1d35236c485" }, "source": [ - "!python detect.py --weights yolov3.pt --img 640 --conf 0.25 --source data/images\n", + "!python detect.py --weights yolov5s.pt --img 640 --conf 0.25 --source data/images\n", "# display.Image(filename='runs/detect/exp/zidane.jpg', width=600)" ], - "execution_count": 4, + "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "\u001b[34m\u001b[1mdetect: \u001b[0mweights=['yolov3.pt'], source=data/images, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_conf=False, save_crop=False, nosave=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=runs/detect, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, dnn=False\n", - "YOLOv3 🚀 v9.6.0-29-ga441ab1 torch 1.13.0+cu116 CUDA:0 (Tesla T4, 15110MiB)\n", + "\u001b[34m\u001b[1mdetect: \u001b[0mweights=['yolov5s.pt'], source=data/images, data=data/coco128.yaml, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_conf=False, save_crop=False, nosave=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=runs/detect, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, dnn=False, vid_stride=1\n", + " 🚀 v7.0-1-gb32f67f Python-3.7.15 torch-1.12.1+cu113 CUDA:0 (Tesla T4, 15110MiB)\n", + "\n", + "Downloading https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s.pt to yolov5s.pt...\n", + "100% 14.1M/14.1M [00:00<00:00, 116MB/s] \n", "\n", "Fusing layers... \n", - "Model Summary: 261 layers, 61922845 parameters, 0 gradients\n", - "image 1/2 /content/yolov3/data/images/bus.jpg: 640x480 4 persons, 1 bicycle, 1 bus, Done. (0.050s)\n", - "image 2/2 /content/yolov3/data/images/zidane.jpg: 384x640 2 persons, 2 ties, Done. (0.038s)\n", - "Speed: 0.5ms pre-process, 44.3ms inference, 1.3ms NMS per image at shape (1, 3, 640, 640)\n", - "Results saved to \u001b[1mruns/detect/exp2\u001b[0m\n" + "YOLOv5s summary: 213 layers, 7225885 parameters, 0 gradients\n", + "image 1/2 /content/yolov5/data/images/bus.jpg: 640x480 4 persons, 1 bus, 17.0ms\n", + "image 2/2 /content/yolov5/data/images/zidane.jpg: 384x640 2 persons, 2 ties, 14.3ms\n", + "Speed: 0.5ms pre-process, 15.7ms inference, 18.6ms NMS per image at shape (1, 3, 640, 640)\n", + "Results saved to \u001b[1mruns/detect/exp\u001b[0m\n" ] } ] @@ -493,17 +504,7 @@ }, "source": [ "# 2. Validate\n", - "Validate a model's accuracy on [COCO](https://cocodataset.org/#home) val or test-dev datasets. Models are downloaded automatically from the [latest YOLOv3 release](https://github.com/ultralytics/yolov3/releases). To show results by class use the `--verbose` flag. Note that `pycocotools` metrics may be ~1% better than the equivalent repo metrics, as is visible below, due to slight differences in mAP computation." - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "eyTZYGgRjnMc" - }, - "source": [ - "## COCO val\n", - "Download [COCO val 2017](https://github.com/ultralytics/yolov3/blob/master/data/coco.yaml) dataset (1GB - 5000 images), and test model accuracy." + "Validate a model's accuracy on the [COCO](https://cocodataset.org/#home) dataset's `val` or `test` splits. Models are downloaded automatically from the [latest release](https://github.com/ultralytics/yolov5/releases). To show results by class use the `--verbose` flag." ] }, { @@ -512,41 +513,41 @@ "id": "WQPtK1QYVaD_", "colab": { "base_uri": "https://localhost:8080/", - "height": 48, + "height": 49, "referenced_widgets": [ - "eeda9d6850e8406f9bbc5b06051b3710", - "1e823c45174a4216be7234a6cc5cfd99", - "cd8efd6c5de94ea8848a7d5b8766a4d6", - "a4ec69c4697c4b0e84e6193be227f63e", - "9a5694c133be46df8d2fe809b77c1c35", - "d584167143f84a0484006dded3fd2620", - "b9a25c0d425c4fe4b8cd51ae6a301b0d", - "654525fe1ed34d5fbe1c36ed80ae1c1c", - "09544845070e47baafc5e37d45ff23e9", - "1066f1d5b6104a3dae19f26269745bd0", - "dd3a70e1ef4547ec8d3463749ce06285" + "1f7df330663048998adcf8a45bc8f69b", + "e896e6096dd244c59d7955e2035cd729", + "a6ff238c29984b24bf6d0bd175c19430", + "3c085ba3f3fd4c3c8a6bb41b41ce1479", + "16b0c8aa6e0f427e8a54d3791abb7504", + "c7b2dd0f78384cad8e400b282996cdf5", + "6a27e43b0e434edd82ee63f0a91036ca", + "cce0e6c0c4ec442cb47e65c674e02e92", + "c5b9f38e2f0d4f9aa97fe87265263743", + "df554fb955c7454696beac5a82889386", + "74e9112a87a242f4831b7d68c7da6333" ] }, - "outputId": "56199bac-5a5e-41eb-8892-bf387a1ec7cb" + "outputId": "c7d0a0d2-abfb-44c3-d60d-f99d0e7aabad" }, "source": [ "# Download COCO val\n", - "torch.hub.download_url_to_file('https://ultralytics.com/assets/coco2017val.zip', 'tmp.zip')\n", - "!unzip -q tmp.zip -d ../datasets && rm tmp.zip" + "torch.hub.download_url_to_file('https://ultralytics.com/assets/coco2017val.zip', 'tmp.zip') # download (780M - 5000 images)\n", + "!unzip -q tmp.zip -d ../datasets && rm tmp.zip # unzip" ], "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "eeda9d6850e8406f9bbc5b06051b3710", - "version_minor": 0, - "version_major": 2 - }, "text/plain": [ " 0%| | 0.00/780M [00:00

\n", + "

\n", "Close the active learning loop by sampling images from your inference conditions with the `roboflow` pip package\n", "

\n", "\n", - "Train a YOLOv3 model on the [COCO128](https://www.kaggle.com/ultralytics/coco128) dataset with `--data coco128.yaml`, starting from pretrained `--weights yolov3.pt`, or from randomly initialized `--weights '' --cfg yolov3yaml`.\n", + "Train a YOLOv5s model on the [COCO128](https://www.kaggle.com/ultralytics/coco128) dataset with `--data coco128.yaml`, starting from pretrained `--weights yolov5s.pt`, or from randomly initialized `--weights '' --cfg yolov5s.yaml`.\n", "\n", - "- **Pretrained [Models](https://github.com/ultralytics/yolov3/tree/master/models)** are downloaded\n", - "automatically from the [latest YOLOv3 release](https://github.com/ultralytics/yolov3/releases)\n", - "- **[Datasets](https://github.com/ultralytics/yolov3/tree/master/data)** available for autodownload include: [COCO](https://github.com/ultralytics/yolov3/blob/master/data/coco.yaml), [COCO128](https://github.com/ultralytics/yolov3/blob/master/data/coco128.yaml), [VOC](https://github.com/ultralytics/yolov3/blob/master/data/VOC.yaml), [Argoverse](https://github.com/ultralytics/yolov3/blob/master/data/Argoverse.yaml), [VisDrone](https://github.com/ultralytics/yolov3/blob/master/data/VisDrone.yaml), [GlobalWheat](https://github.com/ultralytics/yolov3/blob/master/data/GlobalWheat2020.yaml), [xView](https://github.com/ultralytics/yolov3/blob/master/data/xView.yaml), [Objects365](https://github.com/ultralytics/yolov3/blob/master/data/Objects365.yaml), [SKU-110K](https://github.com/ultralytics/yolov3/blob/master/data/SKU-110K.yaml).\n", + "- **Pretrained [Models](https://github.com/ultralytics/yolov5/tree/master/models)** are downloaded\n", + "automatically from the [latest release](https://github.com/ultralytics/yolov5/releases)\n", + "- **[Datasets](https://github.com/ultralytics/yolov5/tree/master/data)** available for autodownload include: [COCO](https://github.com/ultralytics/yolov5/blob/master/data/coco.yaml), [COCO128](https://github.com/ultralytics/yolov5/blob/master/data/coco128.yaml), [VOC](https://github.com/ultralytics/yolov5/blob/master/data/VOC.yaml), [Argoverse](https://github.com/ultralytics/yolov5/blob/master/data/Argoverse.yaml), [VisDrone](https://github.com/ultralytics/yolov5/blob/master/data/VisDrone.yaml), [GlobalWheat](https://github.com/ultralytics/yolov5/blob/master/data/GlobalWheat2020.yaml), [xView](https://github.com/ultralytics/yolov5/blob/master/data/xView.yaml), [Objects365](https://github.com/ultralytics/yolov5/blob/master/data/Objects365.yaml), [SKU-110K](https://github.com/ultralytics/yolov5/blob/master/data/SKU-110K.yaml).\n", "- **Training Results** are saved to `runs/train/` with incrementing run directories, i.e. `runs/train/exp2`, `runs/train/exp3` etc.\n", - "

\n" + "

\n", + "\n", + "A **Mosaic Dataloader** is used for training which combines 4 images into 1 mosaic.\n", + "\n", + "## Train on Custom Data with Roboflow 🌟 NEW\n", + "\n", + "[Roboflow](https://roboflow.com/?ref=ultralytics) enables you to easily **organize, label, and prepare** a high quality dataset with your own custom data. Roboflow also makes it easy to establish an active learning pipeline, collaborate with your team on dataset improvement, and integrate directly into your model building workflow with the `roboflow` pip package.\n", + "\n", + "- Custom Training Example: [https://blog.roboflow.com/how-to-train-yolov5-on-a-custom-dataset/](https://blog.roboflow.com/how-to-train-yolov5-on-a-custom-dataset/?ref=ultralytics)\n", + "- Custom Training Notebook: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/roboflow-ai/yolov5-custom-training-tutorial/blob/main/yolov5-custom-training.ipynb)\n", + "
\n", + "\n", + "

Label images lightning fast (including with model-assisted labeling)" ] }, { "cell_type": "code", - "metadata": { - "id": "bOy5KI2ncnWd" - }, "source": [ - "# Tensorboard (optional)\n", - "%load_ext tensorboard\n", - "%tensorboard --logdir runs/train" + "#@title Select 🚀 logger {run: 'auto'}\n", + "logger = 'ClearML' #@param ['ClearML', 'Comet', 'TensorBoard']\n", + "\n", + "if logger == 'ClearML':\n", + " %pip install -q clearml\n", + " import clearml; clearml.browser_login()\n", + "elif logger == 'Comet':\n", + " %pip install -q comet_ml\n", + " import comet_ml; comet_ml.init()\n", + "elif logger == 'TensorBoard':\n", + " %load_ext tensorboard\n", + " %tensorboard --logdir runs/train" ], + "metadata": { + "id": "i3oKtE4g-aNn" + }, "execution_count": null, "outputs": [] }, @@ -689,176 +676,172 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "c77013e3-347d-42a4-84de-3ca42ea3aee9" + "outputId": "721b9028-767f-4a05-c964-692c245f7398" }, "source": [ - "# Train YOLOv3 on COCO128 for 3 epochs\n", - "!python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov3.pt --cache" + "# Train YOLOv5s on COCO128 for 3 epochs\n", + "!python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt --cache" ], - "execution_count": 3, + "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "\u001b[34m\u001b[1mtrain: \u001b[0mweights=yolov3.pt, cfg=, data=coco128.yaml, hyp=data/hyps/hyp.scratch.yaml, epochs=3, batch_size=16, imgsz=640, rect=False, resume=False, nosave=False, noval=False, noautoanchor=False, evolve=None, bucket=, cache=ram, image_weights=False, device=, multi_scale=False, single_cls=False, adam=False, sync_bn=False, workers=8, project=runs/train, name=exp, exist_ok=False, quad=False, linear_lr=False, label_smoothing=0.0, patience=100, freeze=0, save_period=-1, local_rank=-1, entity=None, upload_dataset=False, bbox_interval=-1, artifact_alias=latest\n", - "\u001b[34m\u001b[1mgithub: \u001b[0mup to date with https://github.com/ultralytics/yolov3 ✅\n", - "YOLOv3 🚀 v9.6.0-29-ga441ab1 torch 1.13.0+cu116 CUDA:0 (Tesla T4, 15110MiB)\n", + "\u001b[34m\u001b[1mtrain: \u001b[0mweights=yolov5s.pt, cfg=, data=coco128.yaml, hyp=data/hyps/hyp.scratch-low.yaml, epochs=3, batch_size=16, imgsz=640, rect=False, resume=False, nosave=False, noval=False, noautoanchor=False, noplots=False, evolve=None, bucket=, cache=ram, image_weights=False, device=, multi_scale=False, single_cls=False, optimizer=SGD, sync_bn=False, workers=8, project=runs/train, name=exp, exist_ok=False, quad=False, cos_lr=False, label_smoothing=0.0, patience=100, freeze=[0], save_period=-1, seed=0, local_rank=-1, entity=None, upload_dataset=False, bbox_interval=-1, artifact_alias=latest\n", + "\u001b[34m\u001b[1mgithub: \u001b[0mup to date with https://github.com/ultralytics/yolov5 ✅\n", + " 🚀 v7.0-1-gb32f67f Python-3.7.15 torch-1.12.1+cu113 CUDA:0 (Tesla T4, 15110MiB)\n", "\n", - "\u001b[34m\u001b[1mhyperparameters: \u001b[0mlr0=0.01, lrf=0.1, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=0.05, cls=0.5, cls_pw=1.0, obj=1.0, obj_pw=1.0, iou_t=0.2, anchor_t=4.0, fl_gamma=0.0, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, mosaic=1.0, mixup=0.0, copy_paste=0.0\n", - "\u001b[34m\u001b[1mWeights & Biases: \u001b[0mrun 'pip install wandb' to automatically track and visualize YOLOv3 🚀 runs (RECOMMENDED)\n", + "\u001b[34m\u001b[1mhyperparameters: \u001b[0mlr0=0.01, lrf=0.01, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=0.05, cls=0.5, cls_pw=1.0, obj=1.0, obj_pw=1.0, iou_t=0.2, anchor_t=4.0, fl_gamma=0.0, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, mosaic=1.0, mixup=0.0, copy_paste=0.0\n", + "\u001b[34m\u001b[1mClearML: \u001b[0mrun 'pip install clearml' to automatically track, visualize and remotely train 🚀 in ClearML\n", + "\u001b[34m\u001b[1mComet: \u001b[0mrun 'pip install comet_ml' to automatically track and visualize 🚀 runs in Comet\n", "\u001b[34m\u001b[1mTensorBoard: \u001b[0mStart with 'tensorboard --logdir runs/train', view at http://localhost:6006/\n", "\n", - "WARNING: Dataset not found, nonexistent paths: ['/content/datasets/coco128/images/train2017']\n", + "Dataset not found ⚠️, missing paths ['/content/datasets/coco128/images/train2017']\n", "Downloading https://ultralytics.com/assets/coco128.zip to coco128.zip...\n", - "100% 6.66M/6.66M [00:00<00:00, 10.2MB/s]\n", - "Dataset autodownload success, saved to ../datasets\n", - "\n", + "100% 6.66M/6.66M [00:00<00:00, 261MB/s]\n", + "Dataset download success ✅ (0.3s), saved to \u001b[1m/content/datasets\u001b[0m\n", "\n", " from n params module arguments \n", - " 0 -1 1 928 models.common.Conv [3, 32, 3, 1] \n", + " 0 -1 1 3520 models.common.Conv [3, 32, 6, 2, 2] \n", " 1 -1 1 18560 models.common.Conv [32, 64, 3, 2] \n", - " 2 -1 1 20672 models.common.Bottleneck [64, 64] \n", + " 2 -1 1 18816 models.common.C3 [64, 64, 1] \n", " 3 -1 1 73984 models.common.Conv [64, 128, 3, 2] \n", - " 4 -1 2 164608 models.common.Bottleneck [128, 128] \n", + " 4 -1 2 115712 models.common.C3 [128, 128, 2] \n", " 5 -1 1 295424 models.common.Conv [128, 256, 3, 2] \n", - " 6 -1 8 2627584 models.common.Bottleneck [256, 256] \n", + " 6 -1 3 625152 models.common.C3 [256, 256, 3] \n", " 7 -1 1 1180672 models.common.Conv [256, 512, 3, 2] \n", - " 8 -1 8 10498048 models.common.Bottleneck [512, 512] \n", - " 9 -1 1 4720640 models.common.Conv [512, 1024, 3, 2] \n", - " 10 -1 4 20983808 models.common.Bottleneck [1024, 1024] \n", - " 11 -1 1 5245952 models.common.Bottleneck [1024, 1024, False] \n", - " 12 -1 1 525312 models.common.Conv [1024, 512, 1, 1] \n", - " 13 -1 1 4720640 models.common.Conv [512, 1024, 3, 1] \n", - " 14 -1 1 525312 models.common.Conv [1024, 512, 1, 1] \n", - " 15 -1 1 4720640 models.common.Conv [512, 1024, 3, 1] \n", - " 16 -2 1 131584 models.common.Conv [512, 256, 1, 1] \n", - " 17 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n", - " 18 [-1, 8] 1 0 models.common.Concat [1] \n", - " 19 -1 1 1377792 models.common.Bottleneck [768, 512, False] \n", - " 20 -1 1 1312256 models.common.Bottleneck [512, 512, False] \n", - " 21 -1 1 131584 models.common.Conv [512, 256, 1, 1] \n", - " 22 -1 1 1180672 models.common.Conv [256, 512, 3, 1] \n", - " 23 -2 1 33024 models.common.Conv [256, 128, 1, 1] \n", - " 24 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n", - " 25 [-1, 6] 1 0 models.common.Concat [1] \n", - " 26 -1 1 344832 models.common.Bottleneck [384, 256, False] \n", - " 27 -1 2 656896 models.common.Bottleneck [256, 256, False] \n", - " 28 [27, 22, 15] 1 457725 models.yolo.Detect [80, [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]], [256, 512, 1024]]\n", - "Model Summary: 333 layers, 61949149 parameters, 61949149 gradients, 156.6 GFLOPs\n", + " 8 -1 1 1182720 models.common.C3 [512, 512, 1] \n", + " 9 -1 1 656896 models.common.SPPF [512, 512, 5] \n", + " 10 -1 1 131584 models.common.Conv [512, 256, 1, 1] \n", + " 11 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n", + " 12 [-1, 6] 1 0 models.common.Concat [1] \n", + " 13 -1 1 361984 models.common.C3 [512, 256, 1, False] \n", + " 14 -1 1 33024 models.common.Conv [256, 128, 1, 1] \n", + " 15 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n", + " 16 [-1, 4] 1 0 models.common.Concat [1] \n", + " 17 -1 1 90880 models.common.C3 [256, 128, 1, False] \n", + " 18 -1 1 147712 models.common.Conv [128, 128, 3, 2] \n", + " 19 [-1, 14] 1 0 models.common.Concat [1] \n", + " 20 -1 1 296448 models.common.C3 [256, 256, 1, False] \n", + " 21 -1 1 590336 models.common.Conv [256, 256, 3, 2] \n", + " 22 [-1, 10] 1 0 models.common.Concat [1] \n", + " 23 -1 1 1182720 models.common.C3 [512, 512, 1, False] \n", + " 24 [17, 20, 23] 1 229245 models.yolo.Detect [80, [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]], [128, 256, 512]]\n", + "Model summary: 214 layers, 7235389 parameters, 7235389 gradients, 16.6 GFLOPs\n", "\n", - "Transferred 439/439 items from yolov3.pt\n", - "Scaled weight_decay = 0.0005\n", - "\u001b[34m\u001b[1moptimizer:\u001b[0m SGD with parameter groups 72 weight, 75 weight (no decay), 75 bias\n", - "\u001b[34m\u001b[1malbumentations: \u001b[0mBlur(always_apply=False, p=0.01, blur_limit=(3, 7)), MedianBlur(always_apply=False, p=0.01, blur_limit=(3, 7)), ToGray(always_apply=False, p=0.01), CLAHE(always_apply=False, p=0.01, clip_limit=(1, 4.0), tile_grid_size=(8, 8))\n", - "\u001b[34m\u001b[1mtrain: \u001b[0mScanning '../datasets/coco128/labels/train2017' images and labels...126 found, 2 missing, 0 empty, 0 corrupted: 100% 128/128 [00:00<00:00, 1542.80it/s]\n", - "\u001b[34m\u001b[1mtrain: \u001b[0mNew cache created: ../datasets/coco128/labels/train2017.cache\n", - "\u001b[34m\u001b[1mtrain: \u001b[0mCaching images (0.1GB ram): 100% 128/128 [00:00<00:00, 327.35it/s]\n", - "\u001b[34m\u001b[1mval: \u001b[0mScanning '../datasets/coco128/labels/train2017.cache' images and labels... 126 found, 2 missing, 0 empty, 0 corrupted: 100% 128/128 [00:00 # 2. paste API key\n", + "python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt # 3. train\n", + "```\n", + "To learn more about all of the supported Comet features for this integration, check out the [Comet Tutorial](https://github.com/ultralytics/yolov5/tree/master/utils/loggers/comet). If you'd like to learn more about Comet, head over to our [documentation](https://www.comet.com/docs/v2/?utm_source=yolov5&utm_medium=partner&utm_campaign=partner_yolov5_2022&utm_content=yolov5_colab). Get started by trying out the Comet Colab Notebook:\n", + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1RG0WOQyxlDlo5Km8GogJpIEJlg_5lyYO?usp=sharing)\n", + "\n", + "\n", + "\"Comet" + ], + "metadata": { + "id": "nWOsI5wJR1o3" + } + }, + { + "cell_type": "markdown", + "source": [ + "## ClearML Logging and Automation 🌟 NEW\n", + "\n", + "[ClearML](https://cutt.ly/yolov5-notebook-clearml) is completely integrated into to track your experimentation, manage dataset versions and even remotely execute training runs. To enable ClearML (check cells above):\n", + "\n", + "- `pip install clearml`\n", + "- run `clearml-init` to connect to a ClearML server (**deploy your own [open-source server](https://github.com/allegroai/clearml-server)**, or use our [free hosted server](https://cutt.ly/yolov5-notebook-clearml))\n", + "\n", + "You'll get all the great expected features from an experiment manager: live updates, model upload, experiment comparison etc. but ClearML also tracks uncommitted changes and installed packages for example. Thanks to that ClearML Tasks (which is what we call experiments) are also reproducible on different machines! With only 1 extra line, we can schedule a training task on a queue to be executed by any number of ClearML Agents (workers).\n", + "\n", + "You can use ClearML Data to version your dataset and then pass it to simply using its unique ID. This will help you keep track of your data without adding extra hassle. Explore the [ClearML Tutorial](https://github.com/ultralytics/yolov5/tree/master/utils/loggers/clearml) for details!\n", + "\n", + "\n", + "\"ClearML" + ], + "metadata": { + "id": "Lay2WsTjNJzP" + } + }, { "cell_type": "markdown", "metadata": { @@ -881,25 +908,11 @@ "source": [ "## Local Logging\n", "\n", - "All results are logged by default to `runs/train`, with a new experiment directory created for each new training as `runs/train/exp2`, `runs/train/exp3`, etc. View train and val jpgs to see mosaics, labels, predictions and augmentation effects. Note an Ultralytics **Mosaic Dataloader** is used for training (shown below), which combines 4 images into 1 mosaic during training.\n", + "Training results are automatically logged with [Tensorboard](https://www.tensorflow.org/tensorboard) and [CSV](https://github.com/ultralytics/yolov5/pull/4148) loggers to `runs/train`, with a new experiment directory created for each new training as `runs/train/exp2`, `runs/train/exp3`, etc.\n", "\n", - "> \n", - "`train_batch0.jpg` shows train batch 0 mosaics and labels\n", + "This directory contains train and val statistics, mosaics, labels, predictions and augmentated mosaics, as well as metrics and charts including precision-recall (PR) curves and confusion matrices. \n", "\n", - "> \n", - "`test_batch0_labels.jpg` shows val batch 0 labels\n", - "\n", - "> \n", - "`test_batch0_pred.jpg` shows val batch 0 _predictions_\n", - "\n", - "Training results are automatically logged to [Tensorboard](https://www.tensorflow.org/tensorboard) and [CSV](https://github.com/ultralytics/yolov5/pull/4148) as `results.csv`, which is plotted as `results.png` (below) after training completes. You can also plot any `results.csv` file manually:\n", - "\n", - "```python\n", - "from utils.plots import plot_results \n", - "plot_results('path/to/results.csv') # plot 'results.csv' as 'results.png'\n", - "```\n", - "\n", - "\"COCO128" + "\"Local\n" ] }, { @@ -910,12 +923,12 @@ "source": [ "# Environments\n", "\n", - "YOLOv3 may be run in any of the following up-to-date verified environments (with all dependencies including [CUDA](https://developer.nvidia.com/cuda)/[CUDNN](https://developer.nvidia.com/cudnn), [Python](https://www.python.org/) and [PyTorch](https://pytorch.org/) preinstalled):\n", + " may be run in any of the following up-to-date verified environments (with all dependencies including [CUDA](https://developer.nvidia.com/cuda)/[CUDNN](https://developer.nvidia.com/cudnn), [Python](https://www.python.org/) and [PyTorch](https://pytorch.org/) preinstalled):\n", "\n", - "- **Google Colab and Kaggle** notebooks with free GPU: \"Open \"Open\n", - "- **Google Cloud** Deep Learning VM. See [GCP Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/GCP-Quickstart)\n", - "- **Amazon** Deep Learning AMI. See [AWS Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/AWS-Quickstart)\n", - "- **Docker Image**. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov3/wiki/Docker-Quickstart) \"Docker\n" + "- **Notebooks** with free GPU: \"Run \"Open \"Open\n", + "- **Google Cloud** Deep Learning VM. See [GCP Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/GCP-Quickstart)\n", + "- **Amazon** Deep Learning AMI. See [AWS Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/AWS-Quickstart)\n", + "- **Docker Image**. See [Docker Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/Docker-Quickstart) \"Docker\n" ] }, { @@ -926,9 +939,9 @@ "source": [ "# Status\n", "\n", - "![CI CPU testing](https://github.com/ultralytics/yolov3/workflows/CI%20CPU%20testing/badge.svg)\n", + "![ CI](https://github.com/ultralytics/yolov3/actions/workflows/ci-testing.yml/badge.svg)\n", "\n", - "If this badge is green, all [YOLOv3 GitHub Actions](https://github.com/ultralytics/yolov3/actions) Continuous Integration (CI) tests are currently passing. CI tests verify correct operation of YOLOv3 training ([train.py](https://github.com/ultralytics/yolov3/blob/master/train.py)), testing ([val.py](https://github.com/ultralytics/yolov3/blob/master/val.py)), inference ([detect.py](https://github.com/ultralytics/yolov3/blob/master/detect.py)) and export ([export.py](https://github.com/ultralytics/yolov3/blob/master/export.py)) on MacOS, Windows, and Ubuntu every 24 hours and on every commit.\n" + "If this badge is green, all [YOLOv3 GitHub Actions](https://github.com/ultralytics/yolov3/actions) Continuous Integration (CI) tests are currently passing. CI tests verify correct operation of training ([train.py](https://github.com/ultralytics/yolov5/blob/master/train.py)), testing ([val.py](https://github.com/ultralytics/yolov5/blob/master/val.py)), inference ([detect.py](https://github.com/ultralytics/yolov5/blob/master/detect.py)) and export ([export.py](https://github.com/ultralytics/yolov5/blob/master/export.py)) on macOS, Windows, and Ubuntu every 24 hours and on every commit.\n" ] }, { @@ -939,115 +952,25 @@ "source": [ "# Appendix\n", "\n", - "Optional extras below. Unit tests validate repo functionality and should be run on any PRs submitted.\n" + "Additional content below." ] }, - { - "cell_type": "code", - "metadata": { - "id": "mcKoSIK2WSzj" - }, - "source": [ - "# Reproduce\n", - "for x in 'yolov3', 'yolov3-spp', 'yolov3-tiny':\n", - " !python val.py --weights {x}.pt --data coco.yaml --img 640 --task speed # speed\n", - " !python val.py --weights {x}.pt --data coco.yaml --img 640 --conf 0.001 --iou 0.65 # mAP" - ], - "execution_count": null, - "outputs": [] - }, { "cell_type": "code", "metadata": { "id": "GMusP4OAxFu6" }, "source": [ - "# PyTorch Hub\n", + "# PyTorch HUB Inference (DetectionModels only)\n", "import torch\n", "\n", - "# Model\n", - "model = torch.hub.load('ultralytics/yolov3', 'yolov3')\n", - "\n", - "# Images\n", - "dir = 'https://ultralytics.com/images/'\n", - "imgs = [dir + f for f in ('zidane.jpg', 'bus.jpg')] # batch of images\n", - "\n", - "# Inference\n", - "results = model(imgs)\n", - "results.print() # or .show(), .save()" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "FGH0ZjkGjejy" - }, - "source": [ - "# CI Checks\n", - "%%shell\n", - "export PYTHONPATH=\"$PWD\" # to run *.py. files in subdirectories\n", - "rm -rf runs # remove runs/\n", - "for m in yolov3-tiny; do # models\n", - " python train.py --img 64 --batch 32 --weights $m.pt --epochs 1 --device 0 # train pretrained\n", - " python train.py --img 64 --batch 32 --weights '' --cfg $m.yaml --epochs 1 --device 0 # train scratch\n", - " for d in 0 cpu; do # devices\n", - " python val.py --weights $m.pt --device $d # val official\n", - " python val.py --weights runs/train/exp/weights/best.pt --device $d # val custom\n", - " python detect.py --weights $m.pt --device $d # detect official\n", - " python detect.py --weights runs/train/exp/weights/best.pt --device $d # detect custom\n", - " done\n", - " python hubconf.py # hub\n", - " python models/yolo.py --cfg $m.yaml # build PyTorch model\n", - " python models/tf.py --weights $m.pt # build TensorFlow model\n", - " python export.py --img 64 --batch 1 --weights $m.pt --include torchscript onnx # export\n", - "done" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "gogI-kwi3Tye" - }, - "source": [ - "# Profile\n", - "from utils.torch_utils import profile\n", - "\n", - "m1 = lambda x: x * torch.sigmoid(x)\n", - "m2 = torch.nn.SiLU()\n", - "results = profile(input=torch.randn(16, 3, 640, 640), ops=[m1, m2], n=100)" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "RVRSOhEvUdb5" - }, - "source": [ - "# Evolve\n", - "!python train.py --img 640 --batch 64 --epochs 100 --data coco128.yaml --weights yolov3.pt --cache --noautoanchor --evolve\n", - "!d=runs/train/evolve && cp evolve.* $d && zip -r evolve.zip $d && gsutil mv evolve.zip gs://bucket # upload results (optional)" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "BSgFCAcMbk1R" - }, - "source": [ - "# VOC\n", - "for b, m in zip([24, 24, 64], ['yolov3', 'yolov3-spp', 'yolov3-tiny']): # zip(batch_size, model)\n", - " !python train.py --batch {b} --weights {m}.pt --data VOC.yaml --epochs 50 --cache --img 512 --nosave --hyp hyp.finetune.yaml --project VOC --name {m}" + "model = torch.hub.load('ultralytics/yolov5', 'yolov5s', force_reload=True) # yolov5n - yolov5x6 or custom\n", + "im = 'https://ultralytics.com/images/zidane.jpg' # file, Path, PIL.Image, OpenCV, nparray, list\n", + "results = model(im) # inference\n", + "results.print() # or .show(), .save(), .crop(), .pandas(), etc." ], "execution_count": null, "outputs": [] } ] -} +} \ No newline at end of file diff --git a/utils/__init__.py b/utils/__init__.py index 309830c8..2abd2a79 100644 --- a/utils/__init__.py +++ b/utils/__init__.py @@ -3,16 +3,78 @@ utils/initialization """ +import contextlib +import platform +import threading -def notebook_init(): - # For notebooks + +def emojis(str=''): + # Return platform-dependent emoji-safe version of string + return str.encode().decode('ascii', 'ignore') if platform.system() == 'Windows' else str + + +class TryExcept(contextlib.ContextDecorator): + # YOLOv3 TryExcept class. Usage: @TryExcept() decorator or 'with TryExcept():' context manager + def __init__(self, msg=''): + self.msg = msg + + def __enter__(self): + pass + + def __exit__(self, exc_type, value, traceback): + if value: + print(emojis(f"{self.msg}{': ' if self.msg else ''}{value}")) + return True + + +def threaded(func): + # Multi-threads a target function and returns thread. Usage: @threaded decorator + def wrapper(*args, **kwargs): + thread = threading.Thread(target=func, args=args, kwargs=kwargs, daemon=True) + thread.start() + return thread + + return wrapper + + +def join_threads(verbose=False): + # Join all daemon threads, i.e. atexit.register(lambda: join_threads()) + main_thread = threading.current_thread() + for t in threading.enumerate(): + if t is not main_thread: + if verbose: + print(f'Joining thread {t.name}') + t.join() + + +def notebook_init(verbose=True): + # Check system software and hardware print('Checking setup...') - from IPython import display # to display images and clear console output - from utils.general import emojis + import os + import shutil + + from utils.general import check_font, check_requirements, is_colab from utils.torch_utils import select_device # imports - display.clear_output() + check_font() + + import psutil + from IPython import display # to display images and clear console output + + if is_colab(): + shutil.rmtree('/content/sample_data', ignore_errors=True) # remove colab /sample_data directory + + # System info + if verbose: + gb = 1 << 30 # bytes to GiB (1024 ** 3) + ram = psutil.virtual_memory().total + total, used, free = shutil.disk_usage("/") + display.clear_output() + s = f'({os.cpu_count()} CPUs, {ram / gb:.1f} GB RAM, {(total - free) / gb:.1f}/{total / gb:.1f} GB disk)' + else: + s = '' + select_device(newline=False) - print(emojis('Setup complete ✅')) + print(emojis(f'Setup complete ✅ {s}')) return display diff --git a/utils/activations.py b/utils/activations.py index ae2fef1c..0ae05152 100644 --- a/utils/activations.py +++ b/utils/activations.py @@ -8,29 +8,32 @@ import torch.nn as nn import torch.nn.functional as F -# SiLU https://arxiv.org/pdf/1606.08415.pdf ---------------------------------------------------------------------------- -class SiLU(nn.Module): # export-friendly version of nn.SiLU() +class SiLU(nn.Module): + # SiLU activation https://arxiv.org/pdf/1606.08415.pdf @staticmethod def forward(x): return x * torch.sigmoid(x) -class Hardswish(nn.Module): # export-friendly version of nn.Hardswish() +class Hardswish(nn.Module): + # Hard-SiLU activation @staticmethod def forward(x): - # return x * F.hardsigmoid(x) # for torchscript and CoreML - return x * F.hardtanh(x + 3, 0.0, 6.0) / 6.0 # for torchscript, CoreML and ONNX + # return x * F.hardsigmoid(x) # for TorchScript and CoreML + return x * F.hardtanh(x + 3, 0.0, 6.0) / 6.0 # for TorchScript, CoreML and ONNX -# Mish https://github.com/digantamisra98/Mish -------------------------------------------------------------------------- class Mish(nn.Module): + # Mish activation https://github.com/digantamisra98/Mish @staticmethod def forward(x): return x * F.softplus(x).tanh() class MemoryEfficientMish(nn.Module): + # Mish activation memory-efficient class F(torch.autograd.Function): + @staticmethod def forward(ctx, x): ctx.save_for_backward(x) @@ -47,8 +50,8 @@ class MemoryEfficientMish(nn.Module): return self.F.apply(x) -# FReLU https://arxiv.org/abs/2007.11824 ------------------------------------------------------------------------------- class FReLU(nn.Module): + # FReLU activation https://arxiv.org/abs/2007.11824 def __init__(self, c1, k=3): # ch_in, kernel super().__init__() self.conv = nn.Conv2d(c1, c1, k, 1, 1, groups=c1, bias=False) @@ -58,9 +61,8 @@ class FReLU(nn.Module): return torch.max(x, self.bn(self.conv(x))) -# ACON https://arxiv.org/pdf/2009.04759.pdf ---------------------------------------------------------------------------- class AconC(nn.Module): - r""" ACON activation (activate or not). + r""" ACON activation (activate or not) AconC: (p1*x-p2*x) * sigmoid(beta*(p1*x-p2*x)) + p2*x, beta is a learnable parameter according to "Activate or Not: Learning Customized Activation" . """ @@ -77,7 +79,7 @@ class AconC(nn.Module): class MetaAconC(nn.Module): - r""" ACON activation (activate or not). + r""" ACON activation (activate or not) MetaAconC: (p1*x-p2*x) * sigmoid(beta*(p1*x-p2*x)) + p2*x, beta is generated by a small network according to "Activate or Not: Learning Customized Activation" . """ diff --git a/utils/augmentations.py b/utils/augmentations.py index 16685044..85e68d05 100644 --- a/utils/augmentations.py +++ b/utils/augmentations.py @@ -8,34 +8,42 @@ import random import cv2 import numpy as np +import torch +import torchvision.transforms as T +import torchvision.transforms.functional as TF -from utils.general import LOGGER, check_version, colorstr, resample_segments, segment2box +from utils.general import LOGGER, check_version, colorstr, resample_segments, segment2box, xywhn2xyxy from utils.metrics import bbox_ioa +IMAGENET_MEAN = 0.485, 0.456, 0.406 # RGB mean +IMAGENET_STD = 0.229, 0.224, 0.225 # RGB standard deviation + class Albumentations: - # Albumentations class (optional, only used if package is installed) - def __init__(self): + # YOLOv3 Albumentations class (optional, only used if package is installed) + def __init__(self, size=640): self.transform = None + prefix = colorstr('albumentations: ') try: import albumentations as A check_version(A.__version__, '1.0.3', hard=True) # version requirement - self.transform = A.Compose([ + T = [ + A.RandomResizedCrop(height=size, width=size, scale=(0.8, 1.0), ratio=(0.9, 1.11), p=0.0), A.Blur(p=0.01), A.MedianBlur(p=0.01), A.ToGray(p=0.01), A.CLAHE(p=0.01), A.RandomBrightnessContrast(p=0.0), A.RandomGamma(p=0.0), - A.ImageCompression(quality_lower=75, p=0.0)], - bbox_params=A.BboxParams(format='yolo', label_fields=['class_labels'])) + A.ImageCompression(quality_lower=75, p=0.0)] # transforms + self.transform = A.Compose(T, bbox_params=A.BboxParams(format='yolo', label_fields=['class_labels'])) - LOGGER.info(colorstr('albumentations: ') + ', '.join(f'{x}' for x in self.transform.transforms if x.p)) + LOGGER.info(prefix + ', '.join(f'{x}'.replace('always_apply=False, ', '') for x in T if x.p)) except ImportError: # package not installed, skip pass except Exception as e: - LOGGER.info(colorstr('albumentations: ') + f'{e}') + LOGGER.info(f'{prefix}{e}') def __call__(self, im, labels, p=1.0): if self.transform and random.random() < p: @@ -44,6 +52,18 @@ class Albumentations: return im, labels +def normalize(x, mean=IMAGENET_MEAN, std=IMAGENET_STD, inplace=False): + # Denormalize RGB images x per ImageNet stats in BCHW format, i.e. = (x - mean) / std + return TF.normalize(x, mean, std, inplace=inplace) + + +def denormalize(x, mean=IMAGENET_MEAN, std=IMAGENET_STD): + # Denormalize RGB images x per ImageNet stats in BCHW format, i.e. = x * std + mean + for i in range(3): + x[:, i] = x[:, i] * std[i] + mean[i] + return x + + def augment_hsv(im, hgain=0.5, sgain=0.5, vgain=0.5): # HSV color-space augmentation if hgain or sgain or vgain: @@ -121,7 +141,14 @@ def letterbox(im, new_shape=(640, 640), color=(114, 114, 114), auto=True, scaleF return im, ratio, (dw, dh) -def random_perspective(im, targets=(), segments=(), degrees=10, translate=.1, scale=.1, shear=10, perspective=0.0, +def random_perspective(im, + targets=(), + segments=(), + degrees=10, + translate=.1, + scale=.1, + shear=10, + perspective=0.0, border=(0, 0)): # torchvision.transforms.RandomAffine(degrees=(-10, 10), translate=(0.1, 0.1), scale=(0.9, 1.1), shear=(-10, 10)) # targets = [cls, xyxy] @@ -174,7 +201,7 @@ def random_perspective(im, targets=(), segments=(), degrees=10, translate=.1, sc # Transform label coordinates n = len(targets) if n: - use_segments = any(x.any() for x in segments) + use_segments = any(x.any() for x in segments) and len(segments) == n new = np.zeros((n, 4)) if use_segments: # warp segments segments = resample_segments(segments) # upsample @@ -223,12 +250,10 @@ def copy_paste(im, labels, segments, p=0.5): if (ioa < 0.30).all(): # allow 30% obscuration of existing labels labels = np.concatenate((labels, [[l[0], *box]]), 0) segments.append(np.concatenate((w - s[:, 0:1], s[:, 1:2]), 1)) - cv2.drawContours(im_new, [segments[j].astype(np.int32)], -1, (255, 255, 255), cv2.FILLED) + cv2.drawContours(im_new, [segments[j].astype(np.int32)], -1, (1, 1, 1), cv2.FILLED) - result = cv2.bitwise_and(src1=im, src2=im_new) - result = cv2.flip(result, 1) # augment segments (flip left-right) - i = result > 0 # pixels to replace - # i[:, :] = result.max(2).reshape(h, w, 1) # act over ch + result = cv2.flip(im, 1) # augment segments (flip left-right) + i = cv2.flip(im_new, 1).astype(bool) im[i] = result[i] # cv2.imwrite('debug.jpg', im) # debug return im, labels, segments @@ -255,7 +280,7 @@ def cutout(im, labels, p=0.5): # return unobscured labels if len(labels) and s > 0.03: box = np.array([xmin, ymin, xmax, ymax], dtype=np.float32) - ioa = bbox_ioa(box, labels[:, 1:5]) # intersection over area + ioa = bbox_ioa(box, xywhn2xyxy(labels[:, 1:5], w, h)) # intersection over area labels = labels[ioa < 0.60] # remove >60% obscured labels return labels @@ -269,9 +294,104 @@ def mixup(im, labels, im2, labels2): return im, labels -def box_candidates(box1, box2, wh_thr=2, ar_thr=20, area_thr=0.1, eps=1e-16): # box1(4,n), box2(4,n) +def box_candidates(box1, box2, wh_thr=2, ar_thr=100, area_thr=0.1, eps=1e-16): # box1(4,n), box2(4,n) # Compute candidate boxes: box1 before augment, box2 after augment, wh_thr (pixels), aspect_ratio_thr, area_ratio w1, h1 = box1[2] - box1[0], box1[3] - box1[1] w2, h2 = box2[2] - box2[0], box2[3] - box2[1] ar = np.maximum(w2 / (h2 + eps), h2 / (w2 + eps)) # aspect ratio return (w2 > wh_thr) & (h2 > wh_thr) & (w2 * h2 / (w1 * h1 + eps) > area_thr) & (ar < ar_thr) # candidates + + +def classify_albumentations( + augment=True, + size=224, + scale=(0.08, 1.0), + ratio=(0.75, 1.0 / 0.75), # 0.75, 1.33 + hflip=0.5, + vflip=0.0, + jitter=0.4, + mean=IMAGENET_MEAN, + std=IMAGENET_STD, + auto_aug=False): + # YOLOv3 classification Albumentations (optional, only used if package is installed) + prefix = colorstr('albumentations: ') + try: + import albumentations as A + from albumentations.pytorch import ToTensorV2 + check_version(A.__version__, '1.0.3', hard=True) # version requirement + if augment: # Resize and crop + T = [A.RandomResizedCrop(height=size, width=size, scale=scale, ratio=ratio)] + if auto_aug: + # TODO: implement AugMix, AutoAug & RandAug in albumentation + LOGGER.info(f'{prefix}auto augmentations are currently not supported') + else: + if hflip > 0: + T += [A.HorizontalFlip(p=hflip)] + if vflip > 0: + T += [A.VerticalFlip(p=vflip)] + if jitter > 0: + color_jitter = (float(jitter),) * 3 # repeat value for brightness, contrast, satuaration, 0 hue + T += [A.ColorJitter(*color_jitter, 0)] + else: # Use fixed crop for eval set (reproducibility) + T = [A.SmallestMaxSize(max_size=size), A.CenterCrop(height=size, width=size)] + T += [A.Normalize(mean=mean, std=std), ToTensorV2()] # Normalize and convert to Tensor + LOGGER.info(prefix + ', '.join(f'{x}'.replace('always_apply=False, ', '') for x in T if x.p)) + return A.Compose(T) + + except ImportError: # package not installed, skip + LOGGER.warning(f'{prefix}⚠️ not found, install with `pip install albumentations` (recommended)') + except Exception as e: + LOGGER.info(f'{prefix}{e}') + + +def classify_transforms(size=224): + # Transforms to apply if albumentations not installed + assert isinstance(size, int), f'ERROR: classify_transforms size {size} must be integer, not (list, tuple)' + # T.Compose([T.ToTensor(), T.Resize(size), T.CenterCrop(size), T.Normalize(IMAGENET_MEAN, IMAGENET_STD)]) + return T.Compose([CenterCrop(size), ToTensor(), T.Normalize(IMAGENET_MEAN, IMAGENET_STD)]) + + +class LetterBox: + # YOLOv3 LetterBox class for image preprocessing, i.e. T.Compose([LetterBox(size), ToTensor()]) + def __init__(self, size=(640, 640), auto=False, stride=32): + super().__init__() + self.h, self.w = (size, size) if isinstance(size, int) else size + self.auto = auto # pass max size integer, automatically solve for short side using stride + self.stride = stride # used with auto + + def __call__(self, im): # im = np.array HWC + imh, imw = im.shape[:2] + r = min(self.h / imh, self.w / imw) # ratio of new/old + h, w = round(imh * r), round(imw * r) # resized image + hs, ws = (math.ceil(x / self.stride) * self.stride for x in (h, w)) if self.auto else self.h, self.w + top, left = round((hs - h) / 2 - 0.1), round((ws - w) / 2 - 0.1) + im_out = np.full((self.h, self.w, 3), 114, dtype=im.dtype) + im_out[top:top + h, left:left + w] = cv2.resize(im, (w, h), interpolation=cv2.INTER_LINEAR) + return im_out + + +class CenterCrop: + # YOLOv3 CenterCrop class for image preprocessing, i.e. T.Compose([CenterCrop(size), ToTensor()]) + def __init__(self, size=640): + super().__init__() + self.h, self.w = (size, size) if isinstance(size, int) else size + + def __call__(self, im): # im = np.array HWC + imh, imw = im.shape[:2] + m = min(imh, imw) # min dimension + top, left = (imh - m) // 2, (imw - m) // 2 + return cv2.resize(im[top:top + m, left:left + m], (self.w, self.h), interpolation=cv2.INTER_LINEAR) + + +class ToTensor: + # YOLOv3 ToTensor class for image preprocessing, i.e. T.Compose([LetterBox(size), ToTensor()]) + def __init__(self, half=False): + super().__init__() + self.half = half + + def __call__(self, im): # im = np.array HWC in BGR order + im = np.ascontiguousarray(im.transpose((2, 0, 1))[::-1]) # HWC to CHW -> BGR to RGB -> contiguous + im = torch.from_numpy(im) # to torch + im = im.half() if self.half else im.float() # uint8 to fp16/32 + im /= 255.0 # 0-255 to 0.0-1.0 + return im diff --git a/utils/autoanchor.py b/utils/autoanchor.py index 0c202c49..6b11e533 100644 --- a/utils/autoanchor.py +++ b/utils/autoanchor.py @@ -1,6 +1,6 @@ # YOLOv3 🚀 by Ultralytics, GPL-3.0 license """ -Auto-anchor utils +AutoAnchor utils """ import random @@ -10,21 +10,23 @@ import torch import yaml from tqdm import tqdm -from utils.general import LOGGER, colorstr, emojis +from utils import TryExcept +from utils.general import LOGGER, TQDM_BAR_FORMAT, colorstr PREFIX = colorstr('AutoAnchor: ') def check_anchor_order(m): - # Check anchor order against stride order for Detect() module m, and correct if necessary - a = m.anchors.prod(-1).view(-1) # anchor area + # Check anchor order against stride order for YOLOv3 Detect() module m, and correct if necessary + a = m.anchors.prod(-1).mean(-1).view(-1) # mean anchor area per output layer da = a[-1] - a[0] # delta a ds = m.stride[-1] - m.stride[0] # delta s - if da.sign() != ds.sign(): # same order + if da and (da.sign() != ds.sign()): # same order LOGGER.info(f'{PREFIX}Reversing anchor order') m.anchors[:] = m.anchors.flip(0) +@TryExcept(f'{PREFIX}ERROR') def check_anchors(dataset, model, thr=4.0, imgsz=640): # Check anchor fit to data, recompute if necessary m = model.module.model[-1] if hasattr(model, 'module') else model.model[-1] # Detect() @@ -40,26 +42,26 @@ def check_anchors(dataset, model, thr=4.0, imgsz=640): bpr = (best > 1 / thr).float().mean() # best possible recall return bpr, aat - anchors = m.anchors.clone() * m.stride.to(m.anchors.device).view(-1, 1, 1) # current anchors + stride = m.stride.to(m.anchors.device).view(-1, 1, 1) # model strides + anchors = m.anchors.clone() * stride # current anchors bpr, aat = metric(anchors.cpu().view(-1, 2)) s = f'\n{PREFIX}{aat:.2f} anchors/target, {bpr:.3f} Best Possible Recall (BPR). ' if bpr > 0.98: # threshold to recompute - LOGGER.info(emojis(f'{s}Current anchors are a good fit to dataset ✅')) + LOGGER.info(f'{s}Current anchors are a good fit to dataset ✅') else: - LOGGER.info(emojis(f'{s}Anchors are a poor fit to dataset ⚠️, attempting to improve...')) + LOGGER.info(f'{s}Anchors are a poor fit to dataset ⚠️, attempting to improve...') na = m.anchors.numel() // 2 # number of anchors - try: - anchors = kmean_anchors(dataset, n=na, img_size=imgsz, thr=thr, gen=1000, verbose=False) - except Exception as e: - LOGGER.info(f'{PREFIX}ERROR: {e}') + anchors = kmean_anchors(dataset, n=na, img_size=imgsz, thr=thr, gen=1000, verbose=False) new_bpr = metric(anchors)[0] if new_bpr > bpr: # replace anchors anchors = torch.tensor(anchors, device=m.anchors.device).type_as(m.anchors) - m.anchors[:] = anchors.clone().view_as(m.anchors) / m.stride.to(m.anchors.device).view(-1, 1, 1) # loss - check_anchor_order(m) - LOGGER.info(f'{PREFIX}New anchors saved to model. Update model *.yaml to use these anchors in the future.') + m.anchors[:] = anchors.clone().view_as(m.anchors) + check_anchor_order(m) # must be in pixel-space (not grid-space) + m.anchors /= stride + s = f'{PREFIX}Done ✅ (optional: update model *.yaml to use these anchors in the future)' else: - LOGGER.info(f'{PREFIX}Original anchors better than new anchors. Proceeding with original anchors.') + s = f'{PREFIX}Done ⚠️ (original anchors better than new anchors, proceeding with original anchors)' + LOGGER.info(s) def kmean_anchors(dataset='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen=1000, verbose=True): @@ -81,6 +83,7 @@ def kmean_anchors(dataset='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen """ from scipy.cluster.vq import kmeans + npr = np.random thr = 1 / thr def metric(k, wh): # compute metrics @@ -100,7 +103,7 @@ def kmean_anchors(dataset='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen s = f'{PREFIX}thr={thr:.2f}: {bpr:.4f} best possible recall, {aat:.2f} anchors past thr\n' \ f'{PREFIX}n={n}, img_size={img_size}, metric_all={x.mean():.3f}/{best.mean():.3f}-mean/best, ' \ f'past_thr={x[x > thr].mean():.3f}-mean: ' - for i, x in enumerate(k): + for x in k: s += '%i,%i, ' % (round(x[0]), round(x[1])) if verbose: LOGGER.info(s[:-2]) @@ -109,7 +112,7 @@ def kmean_anchors(dataset='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen if isinstance(dataset, str): # *.yaml file with open(dataset, errors='ignore') as f: data_dict = yaml.safe_load(f) # model dict - from utils.datasets import LoadImagesAndLabels + from utils.dataloaders import LoadImagesAndLabels dataset = LoadImagesAndLabels(data_dict['train'], augment=True, rect=True) # Get label wh @@ -119,18 +122,21 @@ def kmean_anchors(dataset='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen # Filter i = (wh0 < 3.0).any(1).sum() if i: - LOGGER.info(f'{PREFIX}WARNING: Extremely small objects found. {i} of {len(wh0)} labels are < 3 pixels in size.') - wh = wh0[(wh0 >= 2.0).any(1)] # filter > 2 pixels - # wh = wh * (np.random.rand(wh.shape[0], 1) * 0.9 + 0.1) # multiply by random scale 0-1 + LOGGER.info(f'{PREFIX}WARNING ⚠️ Extremely small objects found: {i} of {len(wh0)} labels are <3 pixels in size') + wh = wh0[(wh0 >= 2.0).any(1)].astype(np.float32) # filter > 2 pixels + # wh = wh * (npr.rand(wh.shape[0], 1) * 0.9 + 0.1) # multiply by random scale 0-1 - # Kmeans calculation - LOGGER.info(f'{PREFIX}Running kmeans for {n} anchors on {len(wh)} points...') - s = wh.std(0) # sigmas for whitening - k, dist = kmeans(wh / s, n, iter=30) # points, mean distance - assert len(k) == n, f'{PREFIX}ERROR: scipy.cluster.vq.kmeans requested {n} points but returned only {len(k)}' - k *= s - wh = torch.tensor(wh, dtype=torch.float32) # filtered - wh0 = torch.tensor(wh0, dtype=torch.float32) # unfiltered + # Kmeans init + try: + LOGGER.info(f'{PREFIX}Running kmeans for {n} anchors on {len(wh)} points...') + assert n <= len(wh) # apply overdetermined constraint + s = wh.std(0) # sigmas for whitening + k = kmeans(wh / s, n, iter=30)[0] * s # points + assert n == len(k) # kmeans may return fewer points than requested if wh is insufficient or too similar + except Exception: + LOGGER.warning(f'{PREFIX}WARNING ⚠️ switching strategies from kmeans to random init') + k = np.sort(npr.rand(n * 2)).reshape(n, 2) * img_size # random init + wh, wh0 = (torch.tensor(x, dtype=torch.float32) for x in (wh, wh0)) k = print_results(k, verbose=False) # Plot @@ -146,9 +152,8 @@ def kmean_anchors(dataset='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen # fig.savefig('wh.png', dpi=200) # Evolve - npr = np.random f, sh, mp, s = anchor_fitness(k), k.shape, 0.9, 0.1 # fitness, generations, mutation prob, sigma - pbar = tqdm(range(gen), desc=f'{PREFIX}Evolving anchors with Genetic Algorithm:') # progress bar + pbar = tqdm(range(gen), bar_format=TQDM_BAR_FORMAT) # progress bar for _ in pbar: v = np.ones(sh) while (v == 1).all(): # mutate until a change occurs (prevent duplicates) @@ -161,4 +166,4 @@ def kmean_anchors(dataset='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen if verbose: print_results(k, verbose) - return print_results(k) + return print_results(k).astype(np.float32) diff --git a/utils/autobatch.py b/utils/autobatch.py index 4fbf32bc..de613ca1 100644 --- a/utils/autobatch.py +++ b/utils/autobatch.py @@ -7,51 +7,66 @@ from copy import deepcopy import numpy as np import torch -from torch.cuda import amp from utils.general import LOGGER, colorstr from utils.torch_utils import profile -def check_train_batch_size(model, imgsz=640): - # Check training batch size - with amp.autocast(): +def check_train_batch_size(model, imgsz=640, amp=True): + # Check YOLOv3 training batch size + with torch.cuda.amp.autocast(amp): return autobatch(deepcopy(model).train(), imgsz) # compute optimal batch size -def autobatch(model, imgsz=640, fraction=0.9, batch_size=16): - # Automatically estimate best batch size to use `fraction` of available CUDA memory +def autobatch(model, imgsz=640, fraction=0.8, batch_size=16): + # Automatically estimate best YOLOv3 batch size to use `fraction` of available CUDA memory # Usage: # import torch # from utils.autobatch import autobatch - # model = torch.hub.load('ultralytics/yolov3', 'yolov3', autoshape=False) + # model = torch.hub.load('ultralytics/yolov5', 'yolov5s', autoshape=False) # print(autobatch(model)) + # Check device prefix = colorstr('AutoBatch: ') LOGGER.info(f'{prefix}Computing optimal batch size for --imgsz {imgsz}') device = next(model.parameters()).device # get model device if device.type == 'cpu': LOGGER.info(f'{prefix}CUDA not detected, using default CPU batch-size {batch_size}') return batch_size + if torch.backends.cudnn.benchmark: + LOGGER.info(f'{prefix} ⚠️ Requires torch.backends.cudnn.benchmark=False, using default batch-size {batch_size}') + return batch_size + # Inspect CUDA memory + gb = 1 << 30 # bytes to GiB (1024 ** 3) d = str(device).upper() # 'CUDA:0' properties = torch.cuda.get_device_properties(device) # device properties - t = properties.total_memory / 1024 ** 3 # (GiB) - r = torch.cuda.memory_reserved(device) / 1024 ** 3 # (GiB) - a = torch.cuda.memory_allocated(device) / 1024 ** 3 # (GiB) - f = t - (r + a) # free inside reserved + t = properties.total_memory / gb # GiB total + r = torch.cuda.memory_reserved(device) / gb # GiB reserved + a = torch.cuda.memory_allocated(device) / gb # GiB allocated + f = t - (r + a) # GiB free LOGGER.info(f'{prefix}{d} ({properties.name}) {t:.2f}G total, {r:.2f}G reserved, {a:.2f}G allocated, {f:.2f}G free') + # Profile batch sizes batch_sizes = [1, 2, 4, 8, 16] try: - img = [torch.zeros(b, 3, imgsz, imgsz) for b in batch_sizes] - y = profile(img, model, n=3, device=device) + img = [torch.empty(b, 3, imgsz, imgsz) for b in batch_sizes] + results = profile(img, model, n=3, device=device) except Exception as e: LOGGER.warning(f'{prefix}{e}') - y = [x[2] for x in y if x] # memory [2] - batch_sizes = batch_sizes[:len(y)] - p = np.polyfit(batch_sizes, y, deg=1) # first degree polynomial fit + # Fit a solution + y = [x[2] for x in results if x] # memory [2] + p = np.polyfit(batch_sizes[:len(y)], y, deg=1) # first degree polynomial fit b = int((f * fraction - p[1]) / p[0]) # y intercept (optimal batch size) - LOGGER.info(f'{prefix}Using batch-size {b} for {d} {t * fraction:.2f}G/{t:.2f}G ({fraction * 100:.0f}%)') + if None in results: # some sizes failed + i = results.index(None) # first fail index + if b >= batch_sizes[i]: # y intercept above failure point + b = batch_sizes[max(i - 1, 0)] # select prior safe point + if b < 1 or b > 1024: # b outside of safe range + b = batch_size + LOGGER.warning(f'{prefix}WARNING ⚠️ CUDA anomaly detected, recommend restart environment and retry command.') + + fraction = (np.polyval(p, b) + r + a) / t # actual fraction predicted + LOGGER.info(f'{prefix}Using batch-size {b} for {d} {t * fraction:.2f}G/{t:.2f}G ({fraction * 100:.0f}%) ✅') return b diff --git a/utils/aws/__init__.py b/utils/aws/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/utils/aws/mime.sh b/utils/aws/mime.sh new file mode 100644 index 00000000..c319a83c --- /dev/null +++ b/utils/aws/mime.sh @@ -0,0 +1,26 @@ +# AWS EC2 instance startup 'MIME' script https://aws.amazon.com/premiumsupport/knowledge-center/execute-user-data-ec2/ +# This script will run on every instance restart, not only on first start +# --- DO NOT COPY ABOVE COMMENTS WHEN PASTING INTO USERDATA --- + +Content-Type: multipart/mixed; boundary="//" +MIME-Version: 1.0 + +--// +Content-Type: text/cloud-config; charset="us-ascii" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Content-Disposition: attachment; filename="cloud-config.txt" + +#cloud-config +cloud_final_modules: +- [scripts-user, always] + +--// +Content-Type: text/x-shellscript; charset="us-ascii" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Content-Disposition: attachment; filename="userdata.txt" + +#!/bin/bash +# --- paste contents of userdata.sh here --- +--// diff --git a/utils/aws/resume.py b/utils/aws/resume.py new file mode 100644 index 00000000..b21731c9 --- /dev/null +++ b/utils/aws/resume.py @@ -0,0 +1,40 @@ +# Resume all interrupted trainings in yolov5/ dir including DDP trainings +# Usage: $ python utils/aws/resume.py + +import os +import sys +from pathlib import Path + +import torch +import yaml + +FILE = Path(__file__).resolve() +ROOT = FILE.parents[2] # YOLOv5 root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH + +port = 0 # --master_port +path = Path('').resolve() +for last in path.rglob('*/**/last.pt'): + ckpt = torch.load(last) + if ckpt['optimizer'] is None: + continue + + # Load opt.yaml + with open(last.parent.parent / 'opt.yaml', errors='ignore') as f: + opt = yaml.safe_load(f) + + # Get device count + d = opt['device'].split(',') # devices + nd = len(d) # number of devices + ddp = nd > 1 or (nd == 0 and torch.cuda.device_count() > 1) # distributed data parallel + + if ddp: # multi-GPU + port += 1 + cmd = f'python -m torch.distributed.run --nproc_per_node {nd} --master_port {port} train.py --resume {last}' + else: # single-GPU + cmd = f'python train.py --resume {last}' + + cmd += ' > /dev/null 2>&1 &' # redirect output to dev/null and run in daemon thread + print(cmd) + os.system(cmd) diff --git a/utils/aws/userdata.sh b/utils/aws/userdata.sh new file mode 100644 index 00000000..5fc1332a --- /dev/null +++ b/utils/aws/userdata.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# AWS EC2 instance startup script https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html +# This script will run only once on first instance start (for a re-start script see mime.sh) +# /home/ubuntu (ubuntu) or /home/ec2-user (amazon-linux) is working dir +# Use >300 GB SSD + +cd home/ubuntu +if [ ! -d yolov5 ]; then + echo "Running first-time script." # install dependencies, download COCO, pull Docker + git clone https://github.com/ultralytics/yolov5 -b master && sudo chmod -R 777 yolov5 + cd yolov5 + bash data/scripts/get_coco.sh && echo "COCO done." & + sudo docker pull ultralytics/yolov5:latest && echo "Docker done." & + python -m pip install --upgrade pip && pip install -r requirements.txt && python detect.py && echo "Requirements done." & + wait && echo "All tasks done." # finish background tasks +else + echo "Running re-start script." # resume interrupted runs + i=0 + list=$(sudo docker ps -qa) # container list i.e. $'one\ntwo\nthree\nfour' + while IFS= read -r id; do + ((i++)) + echo "restarting container $i: $id" + sudo docker start $id + # sudo docker exec -it $id python train.py --resume # single-GPU + sudo docker exec -d $id python utils/aws/resume.py # multi-scenario + done <<<"$list" +fi diff --git a/utils/callbacks.py b/utils/callbacks.py index 43e81a7c..7715cf18 100644 --- a/utils/callbacks.py +++ b/utils/callbacks.py @@ -3,46 +3,46 @@ Callback utils """ +import threading + class Callbacks: """" - Handles all registered callbacks for Hooks + Handles all registered callbacks for YOLOv3 Hooks """ - # Define the available callbacks - _callbacks = { - 'on_pretrain_routine_start': [], - 'on_pretrain_routine_end': [], - - 'on_train_start': [], - 'on_train_epoch_start': [], - 'on_train_batch_start': [], - 'optimizer_step': [], - 'on_before_zero_grad': [], - 'on_train_batch_end': [], - 'on_train_epoch_end': [], - - 'on_val_start': [], - 'on_val_batch_start': [], - 'on_val_image_end': [], - 'on_val_batch_end': [], - 'on_val_end': [], - - 'on_fit_epoch_end': [], # fit = train + val - 'on_model_save': [], - 'on_train_end': [], - - 'teardown': [], - } + def __init__(self): + # Define the available callbacks + self._callbacks = { + 'on_pretrain_routine_start': [], + 'on_pretrain_routine_end': [], + 'on_train_start': [], + 'on_train_epoch_start': [], + 'on_train_batch_start': [], + 'optimizer_step': [], + 'on_before_zero_grad': [], + 'on_train_batch_end': [], + 'on_train_epoch_end': [], + 'on_val_start': [], + 'on_val_batch_start': [], + 'on_val_image_end': [], + 'on_val_batch_end': [], + 'on_val_end': [], + 'on_fit_epoch_end': [], # fit = train + val + 'on_model_save': [], + 'on_train_end': [], + 'on_params_update': [], + 'teardown': [],} + self.stop_training = False # set True to interrupt training def register_action(self, hook, name='', callback=None): """ Register a new action to a callback hook Args: - hook The callback hook name to register the action to - name The name of the action for later reference - callback The callback to fire + hook: The callback hook name to register the action to + name: The name of the action for later reference + callback: The callback to fire """ assert hook in self._callbacks, f"hook '{hook}' not found in callbacks {self._callbacks}" assert callable(callback), f"callback '{callback}' is not callable" @@ -53,24 +53,24 @@ class Callbacks: Returns all the registered actions by callback hook Args: - hook The name of the hook to check, defaults to all + hook: The name of the hook to check, defaults to all """ - if hook: - return self._callbacks[hook] - else: - return self._callbacks + return self._callbacks[hook] if hook else self._callbacks - def run(self, hook, *args, **kwargs): + def run(self, hook, *args, thread=False, **kwargs): """ - Loop through the registered actions and fire all callbacks + Loop through the registered actions and fire all callbacks on main thread Args: - hook The name of the hook to check, defaults to all - args Arguments to receive from - kwargs Keyword Arguments to receive from + hook: The name of the hook to check, defaults to all + args: Arguments to receive from YOLOv3 + thread: (boolean) Run callbacks in daemon thread + kwargs: Keyword Arguments to receive from YOLOv3 """ assert hook in self._callbacks, f"hook '{hook}' not found in callbacks {self._callbacks}" - for logger in self._callbacks[hook]: - logger['callback'](*args, **kwargs) + if thread: + threading.Thread(target=logger['callback'], args=args, kwargs=kwargs, daemon=True).start() + else: + logger['callback'](*args, **kwargs) diff --git a/utils/dataloaders.py b/utils/dataloaders.py new file mode 100644 index 00000000..ba0317ca --- /dev/null +++ b/utils/dataloaders.py @@ -0,0 +1,1221 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Dataloaders and dataset utils +""" + +import contextlib +import glob +import hashlib +import json +import math +import os +import random +import shutil +import time +from itertools import repeat +from multiprocessing.pool import Pool, ThreadPool +from pathlib import Path +from threading import Thread +from urllib.parse import urlparse + +import numpy as np +import psutil +import torch +import torch.nn.functional as F +import torchvision +import yaml +from PIL import ExifTags, Image, ImageOps +from torch.utils.data import DataLoader, Dataset, dataloader, distributed +from tqdm import tqdm + +from utils.augmentations import (Albumentations, augment_hsv, classify_albumentations, classify_transforms, copy_paste, + letterbox, mixup, random_perspective) +from utils.general import (DATASETS_DIR, LOGGER, NUM_THREADS, TQDM_BAR_FORMAT, check_dataset, check_requirements, + check_yaml, clean_str, cv2, is_colab, is_kaggle, segments2boxes, unzip_file, xyn2xy, + xywh2xyxy, xywhn2xyxy, xyxy2xywhn) +from utils.torch_utils import torch_distributed_zero_first + +# Parameters +HELP_URL = 'See https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data' +IMG_FORMATS = 'bmp', 'dng', 'jpeg', 'jpg', 'mpo', 'png', 'tif', 'tiff', 'webp', 'pfm' # include image suffixes +VID_FORMATS = 'asf', 'avi', 'gif', 'm4v', 'mkv', 'mov', 'mp4', 'mpeg', 'mpg', 'ts', 'wmv' # include video suffixes +LOCAL_RANK = int(os.getenv('LOCAL_RANK', -1)) # https://pytorch.org/docs/stable/elastic/run.html +RANK = int(os.getenv('RANK', -1)) +PIN_MEMORY = str(os.getenv('PIN_MEMORY', True)).lower() == 'true' # global pin_memory for dataloaders + +# Get orientation exif tag +for orientation in ExifTags.TAGS.keys(): + if ExifTags.TAGS[orientation] == 'Orientation': + break + + +def get_hash(paths): + # Returns a single hash value of a list of paths (files or dirs) + size = sum(os.path.getsize(p) for p in paths if os.path.exists(p)) # sizes + h = hashlib.sha256(str(size).encode()) # hash sizes + h.update(''.join(paths).encode()) # hash paths + return h.hexdigest() # return hash + + +def exif_size(img): + # Returns exif-corrected PIL size + s = img.size # (width, height) + with contextlib.suppress(Exception): + rotation = dict(img._getexif().items())[orientation] + if rotation in [6, 8]: # rotation 270 or 90 + s = (s[1], s[0]) + return s + + +def exif_transpose(image): + """ + Transpose a PIL image accordingly if it has an EXIF Orientation tag. + Inplace version of https://github.com/python-pillow/Pillow/blob/master/src/PIL/ImageOps.py exif_transpose() + + :param image: The image to transpose. + :return: An image. + """ + exif = image.getexif() + orientation = exif.get(0x0112, 1) # default 1 + if orientation > 1: + method = { + 2: Image.FLIP_LEFT_RIGHT, + 3: Image.ROTATE_180, + 4: Image.FLIP_TOP_BOTTOM, + 5: Image.TRANSPOSE, + 6: Image.ROTATE_270, + 7: Image.TRANSVERSE, + 8: Image.ROTATE_90}.get(orientation) + if method is not None: + image = image.transpose(method) + del exif[0x0112] + image.info["exif"] = exif.tobytes() + return image + + +def seed_worker(worker_id): + # Set dataloader worker seed https://pytorch.org/docs/stable/notes/randomness.html#dataloader + worker_seed = torch.initial_seed() % 2 ** 32 + np.random.seed(worker_seed) + random.seed(worker_seed) + + +def create_dataloader(path, + imgsz, + batch_size, + stride, + single_cls=False, + hyp=None, + augment=False, + cache=False, + pad=0.0, + rect=False, + rank=-1, + workers=8, + image_weights=False, + quad=False, + prefix='', + shuffle=False, + seed=0): + if rect and shuffle: + LOGGER.warning('WARNING ⚠️ --rect is incompatible with DataLoader shuffle, setting shuffle=False') + shuffle = False + with torch_distributed_zero_first(rank): # init dataset *.cache only once if DDP + dataset = LoadImagesAndLabels( + path, + imgsz, + batch_size, + augment=augment, # augmentation + hyp=hyp, # hyperparameters + rect=rect, # rectangular batches + cache_images=cache, + single_cls=single_cls, + stride=int(stride), + pad=pad, + image_weights=image_weights, + prefix=prefix) + + batch_size = min(batch_size, len(dataset)) + nd = torch.cuda.device_count() # number of CUDA devices + nw = min([os.cpu_count() // max(nd, 1), batch_size if batch_size > 1 else 0, workers]) # number of workers + sampler = None if rank == -1 else distributed.DistributedSampler(dataset, shuffle=shuffle) + loader = DataLoader if image_weights else InfiniteDataLoader # only DataLoader allows for attribute updates + generator = torch.Generator() + generator.manual_seed(6148914691236517205 + seed + RANK) + return loader(dataset, + batch_size=batch_size, + shuffle=shuffle and sampler is None, + num_workers=nw, + sampler=sampler, + pin_memory=PIN_MEMORY, + collate_fn=LoadImagesAndLabels.collate_fn4 if quad else LoadImagesAndLabels.collate_fn, + worker_init_fn=seed_worker, + generator=generator), dataset + + +class InfiniteDataLoader(dataloader.DataLoader): + """ Dataloader that reuses workers + + Uses same syntax as vanilla DataLoader + """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + object.__setattr__(self, 'batch_sampler', _RepeatSampler(self.batch_sampler)) + self.iterator = super().__iter__() + + def __len__(self): + return len(self.batch_sampler.sampler) + + def __iter__(self): + for _ in range(len(self)): + yield next(self.iterator) + + +class _RepeatSampler: + """ Sampler that repeats forever + + Args: + sampler (Sampler) + """ + + def __init__(self, sampler): + self.sampler = sampler + + def __iter__(self): + while True: + yield from iter(self.sampler) + + +class LoadScreenshots: + # YOLOv5 screenshot dataloader, i.e. `python detect.py --source "screen 0 100 100 512 256"` + def __init__(self, source, img_size=640, stride=32, auto=True, transforms=None): + # source = [screen_number left top width height] (pixels) + check_requirements('mss') + import mss + + source, *params = source.split() + self.screen, left, top, width, height = 0, None, None, None, None # default to full screen 0 + if len(params) == 1: + self.screen = int(params[0]) + elif len(params) == 4: + left, top, width, height = (int(x) for x in params) + elif len(params) == 5: + self.screen, left, top, width, height = (int(x) for x in params) + self.img_size = img_size + self.stride = stride + self.transforms = transforms + self.auto = auto + self.mode = 'stream' + self.frame = 0 + self.sct = mss.mss() + + # Parse monitor shape + monitor = self.sct.monitors[self.screen] + self.top = monitor["top"] if top is None else (monitor["top"] + top) + self.left = monitor["left"] if left is None else (monitor["left"] + left) + self.width = width or monitor["width"] + self.height = height or monitor["height"] + self.monitor = {"left": self.left, "top": self.top, "width": self.width, "height": self.height} + + def __iter__(self): + return self + + def __next__(self): + # mss screen capture: get raw pixels from the screen as np array + im0 = np.array(self.sct.grab(self.monitor))[:, :, :3] # [:, :, :3] BGRA to BGR + s = f"screen {self.screen} (LTWH): {self.left},{self.top},{self.width},{self.height}: " + + if self.transforms: + im = self.transforms(im0) # transforms + else: + im = letterbox(im0, self.img_size, stride=self.stride, auto=self.auto)[0] # padded resize + im = im.transpose((2, 0, 1))[::-1] # HWC to CHW, BGR to RGB + im = np.ascontiguousarray(im) # contiguous + self.frame += 1 + return str(self.screen), im, im0, None, s # screen, img, original img, im0s, s + + +class LoadImages: + # YOLOv5 image/video dataloader, i.e. `python detect.py --source image.jpg/vid.mp4` + def __init__(self, path, img_size=640, stride=32, auto=True, transforms=None, vid_stride=1): + if isinstance(path, str) and Path(path).suffix == ".txt": # *.txt file with img/vid/dir on each line + path = Path(path).read_text().rsplit() + files = [] + for p in sorted(path) if isinstance(path, (list, tuple)) else [path]: + p = str(Path(p).resolve()) + if '*' in p: + files.extend(sorted(glob.glob(p, recursive=True))) # glob + elif os.path.isdir(p): + files.extend(sorted(glob.glob(os.path.join(p, '*.*')))) # dir + elif os.path.isfile(p): + files.append(p) # files + else: + raise FileNotFoundError(f'{p} does not exist') + + images = [x for x in files if x.split('.')[-1].lower() in IMG_FORMATS] + videos = [x for x in files if x.split('.')[-1].lower() in VID_FORMATS] + ni, nv = len(images), len(videos) + + self.img_size = img_size + self.stride = stride + self.files = images + videos + self.nf = ni + nv # number of files + self.video_flag = [False] * ni + [True] * nv + self.mode = 'image' + self.auto = auto + self.transforms = transforms # optional + self.vid_stride = vid_stride # video frame-rate stride + if any(videos): + self._new_video(videos[0]) # new video + else: + self.cap = None + assert self.nf > 0, f'No images or videos found in {p}. ' \ + f'Supported formats are:\nimages: {IMG_FORMATS}\nvideos: {VID_FORMATS}' + + def __iter__(self): + self.count = 0 + return self + + def __next__(self): + if self.count == self.nf: + raise StopIteration + path = self.files[self.count] + + if self.video_flag[self.count]: + # Read video + self.mode = 'video' + for _ in range(self.vid_stride): + self.cap.grab() + ret_val, im0 = self.cap.retrieve() + while not ret_val: + self.count += 1 + self.cap.release() + if self.count == self.nf: # last video + raise StopIteration + path = self.files[self.count] + self._new_video(path) + ret_val, im0 = self.cap.read() + + self.frame += 1 + # im0 = self._cv2_rotate(im0) # for use if cv2 autorotation is False + s = f'video {self.count + 1}/{self.nf} ({self.frame}/{self.frames}) {path}: ' + + else: + # Read image + self.count += 1 + im0 = cv2.imread(path) # BGR + assert im0 is not None, f'Image Not Found {path}' + s = f'image {self.count}/{self.nf} {path}: ' + + if self.transforms: + im = self.transforms(im0) # transforms + else: + im = letterbox(im0, self.img_size, stride=self.stride, auto=self.auto)[0] # padded resize + im = im.transpose((2, 0, 1))[::-1] # HWC to CHW, BGR to RGB + im = np.ascontiguousarray(im) # contiguous + + return path, im, im0, self.cap, s + + def _new_video(self, path): + # Create a new video capture object + self.frame = 0 + self.cap = cv2.VideoCapture(path) + self.frames = int(self.cap.get(cv2.CAP_PROP_FRAME_COUNT) / self.vid_stride) + self.orientation = int(self.cap.get(cv2.CAP_PROP_ORIENTATION_META)) # rotation degrees + # self.cap.set(cv2.CAP_PROP_ORIENTATION_AUTO, 0) # disable https://github.com/ultralytics/yolov5/issues/8493 + + def _cv2_rotate(self, im): + # Rotate a cv2 video manually + if self.orientation == 0: + return cv2.rotate(im, cv2.ROTATE_90_CLOCKWISE) + elif self.orientation == 180: + return cv2.rotate(im, cv2.ROTATE_90_COUNTERCLOCKWISE) + elif self.orientation == 90: + return cv2.rotate(im, cv2.ROTATE_180) + return im + + def __len__(self): + return self.nf # number of files + + +class LoadStreams: + # YOLOv5 streamloader, i.e. `python detect.py --source 'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP streams` + def __init__(self, sources='file.streams', img_size=640, stride=32, auto=True, transforms=None, vid_stride=1): + torch.backends.cudnn.benchmark = True # faster for fixed-size inference + self.mode = 'stream' + self.img_size = img_size + self.stride = stride + self.vid_stride = vid_stride # video frame-rate stride + sources = Path(sources).read_text().rsplit() if os.path.isfile(sources) else [sources] + n = len(sources) + self.sources = [clean_str(x) for x in sources] # clean source names for later + self.imgs, self.fps, self.frames, self.threads = [None] * n, [0] * n, [0] * n, [None] * n + for i, s in enumerate(sources): # index, source + # Start thread to read frames from video stream + st = f'{i + 1}/{n}: {s}... ' + if urlparse(s).hostname in ('www.youtube.com', 'youtube.com', 'youtu.be'): # if source is YouTube video + # YouTube format i.e. 'https://www.youtube.com/watch?v=Zgi9g1ksQHc' or 'https://youtu.be/Zgi9g1ksQHc' + check_requirements(('pafy', 'youtube_dl==2020.12.2')) + import pafy + s = pafy.new(s).getbest(preftype="mp4").url # YouTube URL + s = eval(s) if s.isnumeric() else s # i.e. s = '0' local webcam + if s == 0: + assert not is_colab(), '--source 0 webcam unsupported on Colab. Rerun command in a local environment.' + assert not is_kaggle(), '--source 0 webcam unsupported on Kaggle. Rerun command in a local environment.' + cap = cv2.VideoCapture(s) + assert cap.isOpened(), f'{st}Failed to open {s}' + w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) + h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) + fps = cap.get(cv2.CAP_PROP_FPS) # warning: may return 0 or nan + self.frames[i] = max(int(cap.get(cv2.CAP_PROP_FRAME_COUNT)), 0) or float('inf') # infinite stream fallback + self.fps[i] = max((fps if math.isfinite(fps) else 0) % 100, 0) or 30 # 30 FPS fallback + + _, self.imgs[i] = cap.read() # guarantee first frame + self.threads[i] = Thread(target=self.update, args=([i, cap, s]), daemon=True) + LOGGER.info(f"{st} Success ({self.frames[i]} frames {w}x{h} at {self.fps[i]:.2f} FPS)") + self.threads[i].start() + LOGGER.info('') # newline + + # check for common shapes + s = np.stack([letterbox(x, img_size, stride=stride, auto=auto)[0].shape for x in self.imgs]) + self.rect = np.unique(s, axis=0).shape[0] == 1 # rect inference if all shapes equal + self.auto = auto and self.rect + self.transforms = transforms # optional + if not self.rect: + LOGGER.warning('WARNING ⚠️ Stream shapes differ. For optimal performance supply similarly-shaped streams.') + + def update(self, i, cap, stream): + # Read stream `i` frames in daemon thread + n, f = 0, self.frames[i] # frame number, frame array + while cap.isOpened() and n < f: + n += 1 + cap.grab() # .read() = .grab() followed by .retrieve() + if n % self.vid_stride == 0: + success, im = cap.retrieve() + if success: + self.imgs[i] = im + else: + LOGGER.warning('WARNING ⚠️ Video stream unresponsive, please check your IP camera connection.') + self.imgs[i] = np.zeros_like(self.imgs[i]) + cap.open(stream) # re-open stream if signal was lost + time.sleep(0.0) # wait time + + def __iter__(self): + self.count = -1 + return self + + def __next__(self): + self.count += 1 + if not all(x.is_alive() for x in self.threads) or cv2.waitKey(1) == ord('q'): # q to quit + cv2.destroyAllWindows() + raise StopIteration + + im0 = self.imgs.copy() + if self.transforms: + im = np.stack([self.transforms(x) for x in im0]) # transforms + else: + im = np.stack([letterbox(x, self.img_size, stride=self.stride, auto=self.auto)[0] for x in im0]) # resize + im = im[..., ::-1].transpose((0, 3, 1, 2)) # BGR to RGB, BHWC to BCHW + im = np.ascontiguousarray(im) # contiguous + + return self.sources, im, im0, None, '' + + def __len__(self): + return len(self.sources) # 1E12 frames = 32 streams at 30 FPS for 30 years + + +def img2label_paths(img_paths): + # Define label paths as a function of image paths + sa, sb = f'{os.sep}images{os.sep}', f'{os.sep}labels{os.sep}' # /images/, /labels/ substrings + return [sb.join(x.rsplit(sa, 1)).rsplit('.', 1)[0] + '.txt' for x in img_paths] + + +class LoadImagesAndLabels(Dataset): + # YOLOv5 train_loader/val_loader, loads images and labels for training and validation + cache_version = 0.6 # dataset labels *.cache version + rand_interp_methods = [cv2.INTER_NEAREST, cv2.INTER_LINEAR, cv2.INTER_CUBIC, cv2.INTER_AREA, cv2.INTER_LANCZOS4] + + def __init__(self, + path, + img_size=640, + batch_size=16, + augment=False, + hyp=None, + rect=False, + image_weights=False, + cache_images=False, + single_cls=False, + stride=32, + pad=0.0, + min_items=0, + prefix=''): + self.img_size = img_size + self.augment = augment + self.hyp = hyp + self.image_weights = image_weights + self.rect = False if image_weights else rect + self.mosaic = self.augment and not self.rect # load 4 images at a time into a mosaic (only during training) + self.mosaic_border = [-img_size // 2, -img_size // 2] + self.stride = stride + self.path = path + self.albumentations = Albumentations(size=img_size) if augment else None + + try: + f = [] # image files + for p in path if isinstance(path, list) else [path]: + p = Path(p) # os-agnostic + if p.is_dir(): # dir + f += glob.glob(str(p / '**' / '*.*'), recursive=True) + # f = list(p.rglob('*.*')) # pathlib + elif p.is_file(): # file + with open(p) as t: + t = t.read().strip().splitlines() + parent = str(p.parent) + os.sep + f += [x.replace('./', parent, 1) if x.startswith('./') else x for x in t] # to global path + # f += [p.parent / x.lstrip(os.sep) for x in t] # to global path (pathlib) + else: + raise FileNotFoundError(f'{prefix}{p} does not exist') + self.im_files = sorted(x.replace('/', os.sep) for x in f if x.split('.')[-1].lower() in IMG_FORMATS) + # self.img_files = sorted([x for x in f if x.suffix[1:].lower() in IMG_FORMATS]) # pathlib + assert self.im_files, f'{prefix}No images found' + except Exception as e: + raise Exception(f'{prefix}Error loading data from {path}: {e}\n{HELP_URL}') from e + + # Check cache + self.label_files = img2label_paths(self.im_files) # labels + cache_path = (p if p.is_file() else Path(self.label_files[0]).parent).with_suffix('.cache') + try: + cache, exists = np.load(cache_path, allow_pickle=True).item(), True # load dict + assert cache['version'] == self.cache_version # matches current version + assert cache['hash'] == get_hash(self.label_files + self.im_files) # identical hash + except Exception: + cache, exists = self.cache_labels(cache_path, prefix), False # run cache ops + + # Display cache + nf, nm, ne, nc, n = cache.pop('results') # found, missing, empty, corrupt, total + if exists and LOCAL_RANK in {-1, 0}: + d = f"Scanning {cache_path}... {nf} images, {nm + ne} backgrounds, {nc} corrupt" + tqdm(None, desc=prefix + d, total=n, initial=n, bar_format=TQDM_BAR_FORMAT) # display cache results + if cache['msgs']: + LOGGER.info('\n'.join(cache['msgs'])) # display warnings + assert nf > 0 or not augment, f'{prefix}No labels found in {cache_path}, can not start training. {HELP_URL}' + + # Read cache + [cache.pop(k) for k in ('hash', 'version', 'msgs')] # remove items + labels, shapes, self.segments = zip(*cache.values()) + nl = len(np.concatenate(labels, 0)) # number of labels + assert nl > 0 or not augment, f'{prefix}All labels empty in {cache_path}, can not start training. {HELP_URL}' + self.labels = list(labels) + self.shapes = np.array(shapes) + self.im_files = list(cache.keys()) # update + self.label_files = img2label_paths(cache.keys()) # update + + # Filter images + if min_items: + include = np.array([len(x) >= min_items for x in self.labels]).nonzero()[0].astype(int) + LOGGER.info(f'{prefix}{n - len(include)}/{n} images filtered from dataset') + self.im_files = [self.im_files[i] for i in include] + self.label_files = [self.label_files[i] for i in include] + self.labels = [self.labels[i] for i in include] + self.segments = [self.segments[i] for i in include] + self.shapes = self.shapes[include] # wh + + # Create indices + n = len(self.shapes) # number of images + bi = np.floor(np.arange(n) / batch_size).astype(int) # batch index + nb = bi[-1] + 1 # number of batches + self.batch = bi # batch index of image + self.n = n + self.indices = range(n) + + # Update labels + include_class = [] # filter labels to include only these classes (optional) + include_class_array = np.array(include_class).reshape(1, -1) + for i, (label, segment) in enumerate(zip(self.labels, self.segments)): + if include_class: + j = (label[:, 0:1] == include_class_array).any(1) + self.labels[i] = label[j] + if segment: + self.segments[i] = segment[j] + if single_cls: # single-class training, merge all classes into 0 + self.labels[i][:, 0] = 0 + + # Rectangular Training + if self.rect: + # Sort by aspect ratio + s = self.shapes # wh + ar = s[:, 1] / s[:, 0] # aspect ratio + irect = ar.argsort() + self.im_files = [self.im_files[i] for i in irect] + self.label_files = [self.label_files[i] for i in irect] + self.labels = [self.labels[i] for i in irect] + self.segments = [self.segments[i] for i in irect] + self.shapes = s[irect] # wh + ar = ar[irect] + + # Set training image shapes + shapes = [[1, 1]] * nb + for i in range(nb): + ari = ar[bi == i] + mini, maxi = ari.min(), ari.max() + if maxi < 1: + shapes[i] = [maxi, 1] + elif mini > 1: + shapes[i] = [1, 1 / mini] + + self.batch_shapes = np.ceil(np.array(shapes) * img_size / stride + pad).astype(int) * stride + + # Cache images into RAM/disk for faster training + if cache_images == 'ram' and not self.check_cache_ram(prefix=prefix): + cache_images = False + self.ims = [None] * n + self.npy_files = [Path(f).with_suffix('.npy') for f in self.im_files] + if cache_images: + b, gb = 0, 1 << 30 # bytes of cached images, bytes per gigabytes + self.im_hw0, self.im_hw = [None] * n, [None] * n + fcn = self.cache_images_to_disk if cache_images == 'disk' else self.load_image + results = ThreadPool(NUM_THREADS).imap(fcn, range(n)) + pbar = tqdm(enumerate(results), total=n, bar_format=TQDM_BAR_FORMAT, disable=LOCAL_RANK > 0) + for i, x in pbar: + if cache_images == 'disk': + b += self.npy_files[i].stat().st_size + else: # 'ram' + self.ims[i], self.im_hw0[i], self.im_hw[i] = x # im, hw_orig, hw_resized = load_image(self, i) + b += self.ims[i].nbytes + pbar.desc = f'{prefix}Caching images ({b / gb:.1f}GB {cache_images})' + pbar.close() + + def check_cache_ram(self, safety_margin=0.1, prefix=''): + # Check image caching requirements vs available memory + b, gb = 0, 1 << 30 # bytes of cached images, bytes per gigabytes + n = min(self.n, 30) # extrapolate from 30 random images + for _ in range(n): + im = cv2.imread(random.choice(self.im_files)) # sample image + ratio = self.img_size / max(im.shape[0], im.shape[1]) # max(h, w) # ratio + b += im.nbytes * ratio ** 2 + mem_required = b * self.n / n # GB required to cache dataset into RAM + mem = psutil.virtual_memory() + cache = mem_required * (1 + safety_margin) < mem.available # to cache or not to cache, that is the question + if not cache: + LOGGER.info(f"{prefix}{mem_required / gb:.1f}GB RAM required, " + f"{mem.available / gb:.1f}/{mem.total / gb:.1f}GB available, " + f"{'caching images ✅' if cache else 'not caching images ⚠️'}") + return cache + + def cache_labels(self, path=Path('./labels.cache'), prefix=''): + # Cache dataset labels, check images and read shapes + x = {} # dict + nm, nf, ne, nc, msgs = 0, 0, 0, 0, [] # number missing, found, empty, corrupt, messages + desc = f"{prefix}Scanning {path.parent / path.stem}..." + with Pool(NUM_THREADS) as pool: + pbar = tqdm(pool.imap(verify_image_label, zip(self.im_files, self.label_files, repeat(prefix))), + desc=desc, + total=len(self.im_files), + bar_format=TQDM_BAR_FORMAT) + for im_file, lb, shape, segments, nm_f, nf_f, ne_f, nc_f, msg in pbar: + nm += nm_f + nf += nf_f + ne += ne_f + nc += nc_f + if im_file: + x[im_file] = [lb, shape, segments] + if msg: + msgs.append(msg) + pbar.desc = f"{desc} {nf} images, {nm + ne} backgrounds, {nc} corrupt" + + pbar.close() + if msgs: + LOGGER.info('\n'.join(msgs)) + if nf == 0: + LOGGER.warning(f'{prefix}WARNING ⚠️ No labels found in {path}. {HELP_URL}') + x['hash'] = get_hash(self.label_files + self.im_files) + x['results'] = nf, nm, ne, nc, len(self.im_files) + x['msgs'] = msgs # warnings + x['version'] = self.cache_version # cache version + try: + np.save(path, x) # save cache for next time + path.with_suffix('.cache.npy').rename(path) # remove .npy suffix + LOGGER.info(f'{prefix}New cache created: {path}') + except Exception as e: + LOGGER.warning(f'{prefix}WARNING ⚠️ Cache directory {path.parent} is not writeable: {e}') # not writeable + return x + + def __len__(self): + return len(self.im_files) + + # def __iter__(self): + # self.count = -1 + # print('ran dataset iter') + # #self.shuffled_vector = np.random.permutation(self.nF) if self.augment else np.arange(self.nF) + # return self + + def __getitem__(self, index): + index = self.indices[index] # linear, shuffled, or image_weights + + hyp = self.hyp + mosaic = self.mosaic and random.random() < hyp['mosaic'] + if mosaic: + # Load mosaic + img, labels = self.load_mosaic(index) + shapes = None + + # MixUp augmentation + if random.random() < hyp['mixup']: + img, labels = mixup(img, labels, *self.load_mosaic(random.randint(0, self.n - 1))) + + else: + # Load image + img, (h0, w0), (h, w) = self.load_image(index) + + # Letterbox + shape = self.batch_shapes[self.batch[index]] if self.rect else self.img_size # final letterboxed shape + img, ratio, pad = letterbox(img, shape, auto=False, scaleup=self.augment) + shapes = (h0, w0), ((h / h0, w / w0), pad) # for COCO mAP rescaling + + labels = self.labels[index].copy() + if labels.size: # normalized xywh to pixel xyxy format + labels[:, 1:] = xywhn2xyxy(labels[:, 1:], ratio[0] * w, ratio[1] * h, padw=pad[0], padh=pad[1]) + + if self.augment: + img, labels = random_perspective(img, + labels, + degrees=hyp['degrees'], + translate=hyp['translate'], + scale=hyp['scale'], + shear=hyp['shear'], + perspective=hyp['perspective']) + + nl = len(labels) # number of labels + if nl: + labels[:, 1:5] = xyxy2xywhn(labels[:, 1:5], w=img.shape[1], h=img.shape[0], clip=True, eps=1E-3) + + if self.augment: + # Albumentations + img, labels = self.albumentations(img, labels) + nl = len(labels) # update after albumentations + + # HSV color-space + augment_hsv(img, hgain=hyp['hsv_h'], sgain=hyp['hsv_s'], vgain=hyp['hsv_v']) + + # Flip up-down + if random.random() < hyp['flipud']: + img = np.flipud(img) + if nl: + labels[:, 2] = 1 - labels[:, 2] + + # Flip left-right + if random.random() < hyp['fliplr']: + img = np.fliplr(img) + if nl: + labels[:, 1] = 1 - labels[:, 1] + + # Cutouts + # labels = cutout(img, labels, p=0.5) + # nl = len(labels) # update after cutout + + labels_out = torch.zeros((nl, 6)) + if nl: + labels_out[:, 1:] = torch.from_numpy(labels) + + # Convert + img = img.transpose((2, 0, 1))[::-1] # HWC to CHW, BGR to RGB + img = np.ascontiguousarray(img) + + return torch.from_numpy(img), labels_out, self.im_files[index], shapes + + def load_image(self, i): + # Loads 1 image from dataset index 'i', returns (im, original hw, resized hw) + im, f, fn = self.ims[i], self.im_files[i], self.npy_files[i], + if im is None: # not cached in RAM + if fn.exists(): # load npy + im = np.load(fn) + else: # read image + im = cv2.imread(f) # BGR + assert im is not None, f'Image Not Found {f}' + h0, w0 = im.shape[:2] # orig hw + r = self.img_size / max(h0, w0) # ratio + if r != 1: # if sizes are not equal + interp = cv2.INTER_LINEAR if (self.augment or r > 1) else cv2.INTER_AREA + im = cv2.resize(im, (math.ceil(w0 * r), math.ceil(h0 * r)), interpolation=interp) + return im, (h0, w0), im.shape[:2] # im, hw_original, hw_resized + return self.ims[i], self.im_hw0[i], self.im_hw[i] # im, hw_original, hw_resized + + def cache_images_to_disk(self, i): + # Saves an image as an *.npy file for faster loading + f = self.npy_files[i] + if not f.exists(): + np.save(f.as_posix(), cv2.imread(self.im_files[i])) + + def load_mosaic(self, index): + # YOLOv5 4-mosaic loader. Loads 1 image + 3 random images into a 4-image mosaic + labels4, segments4 = [], [] + s = self.img_size + yc, xc = (int(random.uniform(-x, 2 * s + x)) for x in self.mosaic_border) # mosaic center x, y + indices = [index] + random.choices(self.indices, k=3) # 3 additional image indices + random.shuffle(indices) + for i, index in enumerate(indices): + # Load image + img, _, (h, w) = self.load_image(index) + + # place img in img4 + if i == 0: # top left + img4 = np.full((s * 2, s * 2, img.shape[2]), 114, dtype=np.uint8) # base image with 4 tiles + x1a, y1a, x2a, y2a = max(xc - w, 0), max(yc - h, 0), xc, yc # xmin, ymin, xmax, ymax (large image) + x1b, y1b, x2b, y2b = w - (x2a - x1a), h - (y2a - y1a), w, h # xmin, ymin, xmax, ymax (small image) + elif i == 1: # top right + x1a, y1a, x2a, y2a = xc, max(yc - h, 0), min(xc + w, s * 2), yc + x1b, y1b, x2b, y2b = 0, h - (y2a - y1a), min(w, x2a - x1a), h + elif i == 2: # bottom left + x1a, y1a, x2a, y2a = max(xc - w, 0), yc, xc, min(s * 2, yc + h) + x1b, y1b, x2b, y2b = w - (x2a - x1a), 0, w, min(y2a - y1a, h) + elif i == 3: # bottom right + x1a, y1a, x2a, y2a = xc, yc, min(xc + w, s * 2), min(s * 2, yc + h) + x1b, y1b, x2b, y2b = 0, 0, min(w, x2a - x1a), min(y2a - y1a, h) + + img4[y1a:y2a, x1a:x2a] = img[y1b:y2b, x1b:x2b] # img4[ymin:ymax, xmin:xmax] + padw = x1a - x1b + padh = y1a - y1b + + # Labels + labels, segments = self.labels[index].copy(), self.segments[index].copy() + if labels.size: + labels[:, 1:] = xywhn2xyxy(labels[:, 1:], w, h, padw, padh) # normalized xywh to pixel xyxy format + segments = [xyn2xy(x, w, h, padw, padh) for x in segments] + labels4.append(labels) + segments4.extend(segments) + + # Concat/clip labels + labels4 = np.concatenate(labels4, 0) + for x in (labels4[:, 1:], *segments4): + np.clip(x, 0, 2 * s, out=x) # clip when using random_perspective() + # img4, labels4 = replicate(img4, labels4) # replicate + + # Augment + img4, labels4, segments4 = copy_paste(img4, labels4, segments4, p=self.hyp['copy_paste']) + img4, labels4 = random_perspective(img4, + labels4, + segments4, + degrees=self.hyp['degrees'], + translate=self.hyp['translate'], + scale=self.hyp['scale'], + shear=self.hyp['shear'], + perspective=self.hyp['perspective'], + border=self.mosaic_border) # border to remove + + return img4, labels4 + + def load_mosaic9(self, index): + # YOLOv5 9-mosaic loader. Loads 1 image + 8 random images into a 9-image mosaic + labels9, segments9 = [], [] + s = self.img_size + indices = [index] + random.choices(self.indices, k=8) # 8 additional image indices + random.shuffle(indices) + hp, wp = -1, -1 # height, width previous + for i, index in enumerate(indices): + # Load image + img, _, (h, w) = self.load_image(index) + + # place img in img9 + if i == 0: # center + img9 = np.full((s * 3, s * 3, img.shape[2]), 114, dtype=np.uint8) # base image with 4 tiles + h0, w0 = h, w + c = s, s, s + w, s + h # xmin, ymin, xmax, ymax (base) coordinates + elif i == 1: # top + c = s, s - h, s + w, s + elif i == 2: # top right + c = s + wp, s - h, s + wp + w, s + elif i == 3: # right + c = s + w0, s, s + w0 + w, s + h + elif i == 4: # bottom right + c = s + w0, s + hp, s + w0 + w, s + hp + h + elif i == 5: # bottom + c = s + w0 - w, s + h0, s + w0, s + h0 + h + elif i == 6: # bottom left + c = s + w0 - wp - w, s + h0, s + w0 - wp, s + h0 + h + elif i == 7: # left + c = s - w, s + h0 - h, s, s + h0 + elif i == 8: # top left + c = s - w, s + h0 - hp - h, s, s + h0 - hp + + padx, pady = c[:2] + x1, y1, x2, y2 = (max(x, 0) for x in c) # allocate coords + + # Labels + labels, segments = self.labels[index].copy(), self.segments[index].copy() + if labels.size: + labels[:, 1:] = xywhn2xyxy(labels[:, 1:], w, h, padx, pady) # normalized xywh to pixel xyxy format + segments = [xyn2xy(x, w, h, padx, pady) for x in segments] + labels9.append(labels) + segments9.extend(segments) + + # Image + img9[y1:y2, x1:x2] = img[y1 - pady:, x1 - padx:] # img9[ymin:ymax, xmin:xmax] + hp, wp = h, w # height, width previous + + # Offset + yc, xc = (int(random.uniform(0, s)) for _ in self.mosaic_border) # mosaic center x, y + img9 = img9[yc:yc + 2 * s, xc:xc + 2 * s] + + # Concat/clip labels + labels9 = np.concatenate(labels9, 0) + labels9[:, [1, 3]] -= xc + labels9[:, [2, 4]] -= yc + c = np.array([xc, yc]) # centers + segments9 = [x - c for x in segments9] + + for x in (labels9[:, 1:], *segments9): + np.clip(x, 0, 2 * s, out=x) # clip when using random_perspective() + # img9, labels9 = replicate(img9, labels9) # replicate + + # Augment + img9, labels9, segments9 = copy_paste(img9, labels9, segments9, p=self.hyp['copy_paste']) + img9, labels9 = random_perspective(img9, + labels9, + segments9, + degrees=self.hyp['degrees'], + translate=self.hyp['translate'], + scale=self.hyp['scale'], + shear=self.hyp['shear'], + perspective=self.hyp['perspective'], + border=self.mosaic_border) # border to remove + + return img9, labels9 + + @staticmethod + def collate_fn(batch): + im, label, path, shapes = zip(*batch) # transposed + for i, lb in enumerate(label): + lb[:, 0] = i # add target image index for build_targets() + return torch.stack(im, 0), torch.cat(label, 0), path, shapes + + @staticmethod + def collate_fn4(batch): + im, label, path, shapes = zip(*batch) # transposed + n = len(shapes) // 4 + im4, label4, path4, shapes4 = [], [], path[:n], shapes[:n] + + ho = torch.tensor([[0.0, 0, 0, 1, 0, 0]]) + wo = torch.tensor([[0.0, 0, 1, 0, 0, 0]]) + s = torch.tensor([[1, 1, 0.5, 0.5, 0.5, 0.5]]) # scale + for i in range(n): # zidane torch.zeros(16,3,720,1280) # BCHW + i *= 4 + if random.random() < 0.5: + im1 = F.interpolate(im[i].unsqueeze(0).float(), scale_factor=2.0, mode='bilinear', + align_corners=False)[0].type(im[i].type()) + lb = label[i] + else: + im1 = torch.cat((torch.cat((im[i], im[i + 1]), 1), torch.cat((im[i + 2], im[i + 3]), 1)), 2) + lb = torch.cat((label[i], label[i + 1] + ho, label[i + 2] + wo, label[i + 3] + ho + wo), 0) * s + im4.append(im1) + label4.append(lb) + + for i, lb in enumerate(label4): + lb[:, 0] = i # add target image index for build_targets() + + return torch.stack(im4, 0), torch.cat(label4, 0), path4, shapes4 + + +# Ancillary functions -------------------------------------------------------------------------------------------------- +def flatten_recursive(path=DATASETS_DIR / 'coco128'): + # Flatten a recursive directory by bringing all files to top level + new_path = Path(f'{str(path)}_flat') + if os.path.exists(new_path): + shutil.rmtree(new_path) # delete output folder + os.makedirs(new_path) # make new output folder + for file in tqdm(glob.glob(f'{str(Path(path))}/**/*.*', recursive=True)): + shutil.copyfile(file, new_path / Path(file).name) + + +def extract_boxes(path=DATASETS_DIR / 'coco128'): # from utils.dataloaders import *; extract_boxes() + # Convert detection dataset into classification dataset, with one directory per class + path = Path(path) # images dir + shutil.rmtree(path / 'classification') if (path / 'classification').is_dir() else None # remove existing + files = list(path.rglob('*.*')) + n = len(files) # number of files + for im_file in tqdm(files, total=n): + if im_file.suffix[1:] in IMG_FORMATS: + # image + im = cv2.imread(str(im_file))[..., ::-1] # BGR to RGB + h, w = im.shape[:2] + + # labels + lb_file = Path(img2label_paths([str(im_file)])[0]) + if Path(lb_file).exists(): + with open(lb_file) as f: + lb = np.array([x.split() for x in f.read().strip().splitlines()], dtype=np.float32) # labels + + for j, x in enumerate(lb): + c = int(x[0]) # class + f = (path / 'classifier') / f'{c}' / f'{path.stem}_{im_file.stem}_{j}.jpg' # new filename + if not f.parent.is_dir(): + f.parent.mkdir(parents=True) + + b = x[1:] * [w, h, w, h] # box + # b[2:] = b[2:].max() # rectangle to square + b[2:] = b[2:] * 1.2 + 3 # pad + b = xywh2xyxy(b.reshape(-1, 4)).ravel().astype(int) + + b[[0, 2]] = np.clip(b[[0, 2]], 0, w) # clip boxes outside of image + b[[1, 3]] = np.clip(b[[1, 3]], 0, h) + assert cv2.imwrite(str(f), im[b[1]:b[3], b[0]:b[2]]), f'box failure in {f}' + + +def autosplit(path=DATASETS_DIR / 'coco128/images', weights=(0.9, 0.1, 0.0), annotated_only=False): + """ Autosplit a dataset into train/val/test splits and save path/autosplit_*.txt files + Usage: from utils.dataloaders import *; autosplit() + Arguments + path: Path to images directory + weights: Train, val, test weights (list, tuple) + annotated_only: Only use images with an annotated txt file + """ + path = Path(path) # images dir + files = sorted(x for x in path.rglob('*.*') if x.suffix[1:].lower() in IMG_FORMATS) # image files only + n = len(files) # number of files + random.seed(0) # for reproducibility + indices = random.choices([0, 1, 2], weights=weights, k=n) # assign each image to a split + + txt = ['autosplit_train.txt', 'autosplit_val.txt', 'autosplit_test.txt'] # 3 txt files + for x in txt: + if (path.parent / x).exists(): + (path.parent / x).unlink() # remove existing + + print(f'Autosplitting images from {path}' + ', using *.txt labeled images only' * annotated_only) + for i, img in tqdm(zip(indices, files), total=n): + if not annotated_only or Path(img2label_paths([str(img)])[0]).exists(): # check label + with open(path.parent / txt[i], 'a') as f: + f.write(f'./{img.relative_to(path.parent).as_posix()}' + '\n') # add image to txt file + + +def verify_image_label(args): + # Verify one image-label pair + im_file, lb_file, prefix = args + nm, nf, ne, nc, msg, segments = 0, 0, 0, 0, '', [] # number (missing, found, empty, corrupt), message, segments + try: + # verify images + im = Image.open(im_file) + im.verify() # PIL verify + shape = exif_size(im) # image size + assert (shape[0] > 9) & (shape[1] > 9), f'image size {shape} <10 pixels' + assert im.format.lower() in IMG_FORMATS, f'invalid image format {im.format}' + if im.format.lower() in ('jpg', 'jpeg'): + with open(im_file, 'rb') as f: + f.seek(-2, 2) + if f.read() != b'\xff\xd9': # corrupt JPEG + ImageOps.exif_transpose(Image.open(im_file)).save(im_file, 'JPEG', subsampling=0, quality=100) + msg = f'{prefix}WARNING ⚠️ {im_file}: corrupt JPEG restored and saved' + + # verify labels + if os.path.isfile(lb_file): + nf = 1 # label found + with open(lb_file) as f: + lb = [x.split() for x in f.read().strip().splitlines() if len(x)] + if any(len(x) > 6 for x in lb): # is segment + classes = np.array([x[0] for x in lb], dtype=np.float32) + segments = [np.array(x[1:], dtype=np.float32).reshape(-1, 2) for x in lb] # (cls, xy1...) + lb = np.concatenate((classes.reshape(-1, 1), segments2boxes(segments)), 1) # (cls, xywh) + lb = np.array(lb, dtype=np.float32) + nl = len(lb) + if nl: + assert lb.shape[1] == 5, f'labels require 5 columns, {lb.shape[1]} columns detected' + assert (lb >= 0).all(), f'negative label values {lb[lb < 0]}' + assert (lb[:, 1:] <= 1).all(), f'non-normalized or out of bounds coordinates {lb[:, 1:][lb[:, 1:] > 1]}' + _, i = np.unique(lb, axis=0, return_index=True) + if len(i) < nl: # duplicate row check + lb = lb[i] # remove duplicates + if segments: + segments = [segments[x] for x in i] + msg = f'{prefix}WARNING ⚠️ {im_file}: {nl - len(i)} duplicate labels removed' + else: + ne = 1 # label empty + lb = np.zeros((0, 5), dtype=np.float32) + else: + nm = 1 # label missing + lb = np.zeros((0, 5), dtype=np.float32) + return im_file, lb, shape, segments, nm, nf, ne, nc, msg + except Exception as e: + nc = 1 + msg = f'{prefix}WARNING ⚠️ {im_file}: ignoring corrupt image/label: {e}' + return [None, None, None, None, nm, nf, ne, nc, msg] + + +class HUBDatasetStats(): + """ Class for generating HUB dataset JSON and `-hub` dataset directory + + Arguments + path: Path to data.yaml or data.zip (with data.yaml inside data.zip) + autodownload: Attempt to download dataset if not found locally + + Usage + from utils.dataloaders import HUBDatasetStats + stats = HUBDatasetStats('coco128.yaml', autodownload=True) # usage 1 + stats = HUBDatasetStats('path/to/coco128.zip') # usage 2 + stats.get_json(save=False) + stats.process_images() + """ + + def __init__(self, path='coco128.yaml', autodownload=False): + # Initialize class + zipped, data_dir, yaml_path = self._unzip(Path(path)) + try: + with open(check_yaml(yaml_path), errors='ignore') as f: + data = yaml.safe_load(f) # data dict + if zipped: + data['path'] = data_dir + except Exception as e: + raise Exception("error/HUB/dataset_stats/yaml_load") from e + + check_dataset(data, autodownload) # download dataset if missing + self.hub_dir = Path(data['path'] + '-hub') + self.im_dir = self.hub_dir / 'images' + self.im_dir.mkdir(parents=True, exist_ok=True) # makes /images + self.stats = {'nc': data['nc'], 'names': list(data['names'].values())} # statistics dictionary + self.data = data + + @staticmethod + def _find_yaml(dir): + # Return data.yaml file + files = list(dir.glob('*.yaml')) or list(dir.rglob('*.yaml')) # try root level first and then recursive + assert files, f'No *.yaml file found in {dir}' + if len(files) > 1: + files = [f for f in files if f.stem == dir.stem] # prefer *.yaml files that match dir name + assert files, f'Multiple *.yaml files found in {dir}, only 1 *.yaml file allowed' + assert len(files) == 1, f'Multiple *.yaml files found: {files}, only 1 *.yaml file allowed in {dir}' + return files[0] + + def _unzip(self, path): + # Unzip data.zip + if not str(path).endswith('.zip'): # path is data.yaml + return False, None, path + assert Path(path).is_file(), f'Error unzipping {path}, file not found' + unzip_file(path, path=path.parent) + dir = path.with_suffix('') # dataset directory == zip name + assert dir.is_dir(), f'Error unzipping {path}, {dir} not found. path/to/abc.zip MUST unzip to path/to/abc/' + return True, str(dir), self._find_yaml(dir) # zipped, data_dir, yaml_path + + def _hub_ops(self, f, max_dim=1920): + # HUB ops for 1 image 'f': resize and save at reduced quality in /dataset-hub for web/app viewing + f_new = self.im_dir / Path(f).name # dataset-hub image filename + try: # use PIL + im = Image.open(f) + r = max_dim / max(im.height, im.width) # ratio + if r < 1.0: # image too large + im = im.resize((int(im.width * r), int(im.height * r))) + im.save(f_new, 'JPEG', quality=50, optimize=True) # save + except Exception as e: # use OpenCV + LOGGER.info(f'WARNING ⚠️ HUB ops PIL failure {f}: {e}') + im = cv2.imread(f) + im_height, im_width = im.shape[:2] + r = max_dim / max(im_height, im_width) # ratio + if r < 1.0: # image too large + im = cv2.resize(im, (int(im_width * r), int(im_height * r)), interpolation=cv2.INTER_AREA) + cv2.imwrite(str(f_new), im) + + def get_json(self, save=False, verbose=False): + # Return dataset JSON for Ultralytics HUB + def _round(labels): + # Update labels to integer class and 6 decimal place floats + return [[int(c), *(round(x, 4) for x in points)] for c, *points in labels] + + for split in 'train', 'val', 'test': + if self.data.get(split) is None: + self.stats[split] = None # i.e. no test set + continue + dataset = LoadImagesAndLabels(self.data[split]) # load dataset + x = np.array([ + np.bincount(label[:, 0].astype(int), minlength=self.data['nc']) + for label in tqdm(dataset.labels, total=dataset.n, desc='Statistics')]) # shape(128x80) + self.stats[split] = { + 'instance_stats': { + 'total': int(x.sum()), + 'per_class': x.sum(0).tolist()}, + 'image_stats': { + 'total': dataset.n, + 'unlabelled': int(np.all(x == 0, 1).sum()), + 'per_class': (x > 0).sum(0).tolist()}, + 'labels': [{ + str(Path(k).name): _round(v.tolist())} for k, v in zip(dataset.im_files, dataset.labels)]} + + # Save, print and return + if save: + stats_path = self.hub_dir / 'stats.json' + print(f'Saving {stats_path.resolve()}...') + with open(stats_path, 'w') as f: + json.dump(self.stats, f) # save stats.json + if verbose: + print(json.dumps(self.stats, indent=2, sort_keys=False)) + return self.stats + + def process_images(self): + # Compress images for Ultralytics HUB + for split in 'train', 'val', 'test': + if self.data.get(split) is None: + continue + dataset = LoadImagesAndLabels(self.data[split]) # load dataset + desc = f'{split} images' + for _ in tqdm(ThreadPool(NUM_THREADS).imap(self._hub_ops, dataset.im_files), total=dataset.n, desc=desc): + pass + print(f'Done. All images saved to {self.im_dir}') + return self.im_dir + + +# Classification dataloaders ------------------------------------------------------------------------------------------- +class ClassificationDataset(torchvision.datasets.ImageFolder): + """ + YOLOv5 Classification Dataset. + Arguments + root: Dataset path + transform: torchvision transforms, used by default + album_transform: Albumentations transforms, used if installed + """ + + def __init__(self, root, augment, imgsz, cache=False): + super().__init__(root=root) + self.torch_transforms = classify_transforms(imgsz) + self.album_transforms = classify_albumentations(augment, imgsz) if augment else None + self.cache_ram = cache is True or cache == 'ram' + self.cache_disk = cache == 'disk' + self.samples = [list(x) + [Path(x[0]).with_suffix('.npy'), None] for x in self.samples] # file, index, npy, im + + def __getitem__(self, i): + f, j, fn, im = self.samples[i] # filename, index, filename.with_suffix('.npy'), image + if self.cache_ram and im is None: + im = self.samples[i][3] = cv2.imread(f) + elif self.cache_disk: + if not fn.exists(): # load npy + np.save(fn.as_posix(), cv2.imread(f)) + im = np.load(fn) + else: # read image + im = cv2.imread(f) # BGR + if self.album_transforms: + sample = self.album_transforms(image=cv2.cvtColor(im, cv2.COLOR_BGR2RGB))["image"] + else: + sample = self.torch_transforms(im) + return sample, j + + +def create_classification_dataloader(path, + imgsz=224, + batch_size=16, + augment=True, + cache=False, + rank=-1, + workers=8, + shuffle=True): + # Returns Dataloader object to be used with YOLOv5 Classifier + with torch_distributed_zero_first(rank): # init dataset *.cache only once if DDP + dataset = ClassificationDataset(root=path, imgsz=imgsz, augment=augment, cache=cache) + batch_size = min(batch_size, len(dataset)) + nd = torch.cuda.device_count() + nw = min([os.cpu_count() // max(nd, 1), batch_size if batch_size > 1 else 0, workers]) + sampler = None if rank == -1 else distributed.DistributedSampler(dataset, shuffle=shuffle) + generator = torch.Generator() + generator.manual_seed(6148914691236517205 + RANK) + return InfiniteDataLoader(dataset, + batch_size=batch_size, + shuffle=shuffle and sampler is None, + num_workers=nw, + sampler=sampler, + pin_memory=PIN_MEMORY, + worker_init_fn=seed_worker, + generator=generator) # or DataLoader(persistent_workers=True) diff --git a/utils/datasets.py b/utils/datasets.py deleted file mode 100755 index 462d561a..00000000 --- a/utils/datasets.py +++ /dev/null @@ -1,1036 +0,0 @@ -# YOLOv3 🚀 by Ultralytics, GPL-3.0 license -""" -Dataloaders and dataset utils -""" - -import glob -import hashlib -import json -import os -import random -import shutil -import time -from itertools import repeat -from multiprocessing.pool import Pool, ThreadPool -from pathlib import Path -from threading import Thread -from zipfile import ZipFile - -import cv2 -import numpy as np -import torch -import torch.nn.functional as F -import yaml -from PIL import ExifTags, Image, ImageOps -from torch.utils.data import DataLoader, Dataset, dataloader, distributed -from tqdm import tqdm - -from utils.augmentations import Albumentations, augment_hsv, copy_paste, letterbox, mixup, random_perspective -from utils.general import (LOGGER, check_dataset, check_requirements, check_yaml, clean_str, segments2boxes, xyn2xy, - xywh2xyxy, xywhn2xyxy, xyxy2xywhn) -from utils.torch_utils import torch_distributed_zero_first - -# Parameters -HELP_URL = 'https://github.com/ultralytics/yolov3/wiki/Train-Custom-Data' -IMG_FORMATS = ['bmp', 'jpg', 'jpeg', 'png', 'tif', 'tiff', 'dng', 'webp', 'mpo'] # acceptable image suffixes -VID_FORMATS = ['mov', 'avi', 'mp4', 'mpg', 'mpeg', 'm4v', 'wmv', 'mkv'] # acceptable video suffixes -WORLD_SIZE = int(os.getenv('WORLD_SIZE', 1)) # DPP -NUM_THREADS = min(8, os.cpu_count()) # number of multiprocessing threads - -# Get orientation exif tag -for orientation in ExifTags.TAGS.keys(): - if ExifTags.TAGS[orientation] == 'Orientation': - break - - -def get_hash(paths): - # Returns a single hash value of a list of paths (files or dirs) - size = sum(os.path.getsize(p) for p in paths if os.path.exists(p)) # sizes - h = hashlib.md5(str(size).encode()) # hash sizes - h.update(''.join(paths).encode()) # hash paths - return h.hexdigest() # return hash - - -def exif_size(img): - # Returns exif-corrected PIL size - s = img.size # (width, height) - try: - rotation = dict(img._getexif().items())[orientation] - if rotation == 6: # rotation 270 - s = (s[1], s[0]) - elif rotation == 8: # rotation 90 - s = (s[1], s[0]) - except: - pass - - return s - - -def exif_transpose(image): - """ - Transpose a PIL image accordingly if it has an EXIF Orientation tag. - Inplace version of https://github.com/python-pillow/Pillow/blob/master/src/PIL/ImageOps.py exif_transpose() - - :param image: The image to transpose. - :return: An image. - """ - exif = image.getexif() - orientation = exif.get(0x0112, 1) # default 1 - if orientation > 1: - method = {2: Image.FLIP_LEFT_RIGHT, - 3: Image.ROTATE_180, - 4: Image.FLIP_TOP_BOTTOM, - 5: Image.TRANSPOSE, - 6: Image.ROTATE_270, - 7: Image.TRANSVERSE, - 8: Image.ROTATE_90, - }.get(orientation) - if method is not None: - image = image.transpose(method) - del exif[0x0112] - image.info["exif"] = exif.tobytes() - return image - - -def create_dataloader(path, imgsz, batch_size, stride, single_cls=False, hyp=None, augment=False, cache=False, pad=0.0, - rect=False, rank=-1, workers=8, image_weights=False, quad=False, prefix='', shuffle=False): - if rect and shuffle: - LOGGER.warning('WARNING: --rect is incompatible with DataLoader shuffle, setting shuffle=False') - shuffle = False - with torch_distributed_zero_first(rank): # init dataset *.cache only once if DDP - dataset = LoadImagesAndLabels(path, imgsz, batch_size, - augment=augment, # augmentation - hyp=hyp, # hyperparameters - rect=rect, # rectangular batches - cache_images=cache, - single_cls=single_cls, - stride=int(stride), - pad=pad, - image_weights=image_weights, - prefix=prefix) - - batch_size = min(batch_size, len(dataset)) - nw = min([os.cpu_count() // WORLD_SIZE, batch_size if batch_size > 1 else 0, workers]) # number of workers - sampler = None if rank == -1 else distributed.DistributedSampler(dataset, shuffle=shuffle) - loader = DataLoader if image_weights else InfiniteDataLoader # only DataLoader allows for attribute updates - return loader(dataset, - batch_size=batch_size, - shuffle=shuffle and sampler is None, - num_workers=nw, - sampler=sampler, - pin_memory=True, - collate_fn=LoadImagesAndLabels.collate_fn4 if quad else LoadImagesAndLabels.collate_fn), dataset - - -class InfiniteDataLoader(dataloader.DataLoader): - """ Dataloader that reuses workers - - Uses same syntax as vanilla DataLoader - """ - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - object.__setattr__(self, 'batch_sampler', _RepeatSampler(self.batch_sampler)) - self.iterator = super().__iter__() - - def __len__(self): - return len(self.batch_sampler.sampler) - - def __iter__(self): - for i in range(len(self)): - yield next(self.iterator) - - -class _RepeatSampler: - """ Sampler that repeats forever - - Args: - sampler (Sampler) - """ - - def __init__(self, sampler): - self.sampler = sampler - - def __iter__(self): - while True: - yield from iter(self.sampler) - - -class LoadImages: - # image/video dataloader, i.e. `python detect.py --source image.jpg/vid.mp4` - def __init__(self, path, img_size=640, stride=32, auto=True): - p = str(Path(path).resolve()) # os-agnostic absolute path - if '*' in p: - files = sorted(glob.glob(p, recursive=True)) # glob - elif os.path.isdir(p): - files = sorted(glob.glob(os.path.join(p, '*.*'))) # dir - elif os.path.isfile(p): - files = [p] # files - else: - raise Exception(f'ERROR: {p} does not exist') - - images = [x for x in files if x.split('.')[-1].lower() in IMG_FORMATS] - videos = [x for x in files if x.split('.')[-1].lower() in VID_FORMATS] - ni, nv = len(images), len(videos) - - self.img_size = img_size - self.stride = stride - self.files = images + videos - self.nf = ni + nv # number of files - self.video_flag = [False] * ni + [True] * nv - self.mode = 'image' - self.auto = auto - if any(videos): - self.new_video(videos[0]) # new video - else: - self.cap = None - assert self.nf > 0, f'No images or videos found in {p}. ' \ - f'Supported formats are:\nimages: {IMG_FORMATS}\nvideos: {VID_FORMATS}' - - def __iter__(self): - self.count = 0 - return self - - def __next__(self): - if self.count == self.nf: - raise StopIteration - path = self.files[self.count] - - if self.video_flag[self.count]: - # Read video - self.mode = 'video' - ret_val, img0 = self.cap.read() - if not ret_val: - self.count += 1 - self.cap.release() - if self.count == self.nf: # last video - raise StopIteration - else: - path = self.files[self.count] - self.new_video(path) - ret_val, img0 = self.cap.read() - - self.frame += 1 - s = f'video {self.count + 1}/{self.nf} ({self.frame}/{self.frames}) {path}: ' - - else: - # Read image - self.count += 1 - img0 = cv2.imread(path) # BGR - assert img0 is not None, f'Image Not Found {path}' - s = f'image {self.count}/{self.nf} {path}: ' - - # Padded resize - img = letterbox(img0, self.img_size, stride=self.stride, auto=self.auto)[0] - - # Convert - img = img.transpose((2, 0, 1))[::-1] # HWC to CHW, BGR to RGB - img = np.ascontiguousarray(img) - - return path, img, img0, self.cap, s - - def new_video(self, path): - self.frame = 0 - self.cap = cv2.VideoCapture(path) - self.frames = int(self.cap.get(cv2.CAP_PROP_FRAME_COUNT)) - - def __len__(self): - return self.nf # number of files - - -class LoadWebcam: # for inference - # local webcam dataloader, i.e. `python detect.py --source 0` - def __init__(self, pipe='0', img_size=640, stride=32): - self.img_size = img_size - self.stride = stride - self.pipe = eval(pipe) if pipe.isnumeric() else pipe - self.cap = cv2.VideoCapture(self.pipe) # video capture object - self.cap.set(cv2.CAP_PROP_BUFFERSIZE, 3) # set buffer size - - def __iter__(self): - self.count = -1 - return self - - def __next__(self): - self.count += 1 - if cv2.waitKey(1) == ord('q'): # q to quit - self.cap.release() - cv2.destroyAllWindows() - raise StopIteration - - # Read frame - ret_val, img0 = self.cap.read() - img0 = cv2.flip(img0, 1) # flip left-right - - # Print - assert ret_val, f'Camera Error {self.pipe}' - img_path = 'webcam.jpg' - s = f'webcam {self.count}: ' - - # Padded resize - img = letterbox(img0, self.img_size, stride=self.stride)[0] - - # Convert - img = img.transpose((2, 0, 1))[::-1] # HWC to CHW, BGR to RGB - img = np.ascontiguousarray(img) - - return img_path, img, img0, None, s - - def __len__(self): - return 0 - - -class LoadStreams: - # streamloader, i.e. `python detect.py --source 'rtsp://example.com/media.mp4' # RTSP, RTMP, HTTP streams` - def __init__(self, sources='streams.txt', img_size=640, stride=32, auto=True): - self.mode = 'stream' - self.img_size = img_size - self.stride = stride - - if os.path.isfile(sources): - with open(sources) as f: - sources = [x.strip() for x in f.read().strip().splitlines() if len(x.strip())] - else: - sources = [sources] - - n = len(sources) - self.imgs, self.fps, self.frames, self.threads = [None] * n, [0] * n, [0] * n, [None] * n - self.sources = [clean_str(x) for x in sources] # clean source names for later - self.auto = auto - for i, s in enumerate(sources): # index, source - # Start thread to read frames from video stream - st = f'{i + 1}/{n}: {s}... ' - if 'youtube.com/' in s or 'youtu.be/' in s: # if source is YouTube video - check_requirements(('pafy', 'youtube_dl')) - import pafy - s = pafy.new(s).getbest(preftype="mp4").url # YouTube URL - s = eval(s) if s.isnumeric() else s # i.e. s = '0' local webcam - cap = cv2.VideoCapture(s) - assert cap.isOpened(), f'{st}Failed to open {s}' - w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) - h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) - self.fps[i] = max(cap.get(cv2.CAP_PROP_FPS) % 100, 0) or 30.0 # 30 FPS fallback - self.frames[i] = max(int(cap.get(cv2.CAP_PROP_FRAME_COUNT)), 0) or float('inf') # infinite stream fallback - - _, self.imgs[i] = cap.read() # guarantee first frame - self.threads[i] = Thread(target=self.update, args=([i, cap, s]), daemon=True) - LOGGER.info(f"{st} Success ({self.frames[i]} frames {w}x{h} at {self.fps[i]:.2f} FPS)") - self.threads[i].start() - LOGGER.info('') # newline - - # check for common shapes - s = np.stack([letterbox(x, self.img_size, stride=self.stride, auto=self.auto)[0].shape for x in self.imgs]) - self.rect = np.unique(s, axis=0).shape[0] == 1 # rect inference if all shapes equal - if not self.rect: - LOGGER.warning('WARNING: Stream shapes differ. For optimal performance supply similarly-shaped streams.') - - def update(self, i, cap, stream): - # Read stream `i` frames in daemon thread - n, f, read = 0, self.frames[i], 1 # frame number, frame array, inference every 'read' frame - while cap.isOpened() and n < f: - n += 1 - # _, self.imgs[index] = cap.read() - cap.grab() - if n % read == 0: - success, im = cap.retrieve() - if success: - self.imgs[i] = im - else: - LOGGER.warning('WARNING: Video stream unresponsive, please check your IP camera connection.') - self.imgs[i] *= 0 - cap.open(stream) # re-open stream if signal was lost - time.sleep(1 / self.fps[i]) # wait time - - def __iter__(self): - self.count = -1 - return self - - def __next__(self): - self.count += 1 - if not all(x.is_alive() for x in self.threads) or cv2.waitKey(1) == ord('q'): # q to quit - cv2.destroyAllWindows() - raise StopIteration - - # Letterbox - img0 = self.imgs.copy() - img = [letterbox(x, self.img_size, stride=self.stride, auto=self.rect and self.auto)[0] for x in img0] - - # Stack - img = np.stack(img, 0) - - # Convert - img = img[..., ::-1].transpose((0, 3, 1, 2)) # BGR to RGB, BHWC to BCHW - img = np.ascontiguousarray(img) - - return self.sources, img, img0, None, '' - - def __len__(self): - return len(self.sources) # 1E12 frames = 32 streams at 30 FPS for 30 years - - -def img2label_paths(img_paths): - # Define label paths as a function of image paths - sa, sb = os.sep + 'images' + os.sep, os.sep + 'labels' + os.sep # /images/, /labels/ substrings - return [sb.join(x.rsplit(sa, 1)).rsplit('.', 1)[0] + '.txt' for x in img_paths] - - -class LoadImagesAndLabels(Dataset): - # train_loader/val_loader, loads images and labels for training and validation - cache_version = 0.6 # dataset labels *.cache version - - def __init__(self, path, img_size=640, batch_size=16, augment=False, hyp=None, rect=False, image_weights=False, - cache_images=False, single_cls=False, stride=32, pad=0.0, prefix=''): - self.img_size = img_size - self.augment = augment - self.hyp = hyp - self.image_weights = image_weights - self.rect = False if image_weights else rect - self.mosaic = self.augment and not self.rect # load 4 images at a time into a mosaic (only during training) - self.mosaic_border = [-img_size // 2, -img_size // 2] - self.stride = stride - self.path = path - self.albumentations = Albumentations() if augment else None - - try: - f = [] # image files - for p in path if isinstance(path, list) else [path]: - p = Path(p) # os-agnostic - if p.is_dir(): # dir - f += glob.glob(str(p / '**' / '*.*'), recursive=True) - # f = list(p.rglob('*.*')) # pathlib - elif p.is_file(): # file - with open(p) as t: - t = t.read().strip().splitlines() - parent = str(p.parent) + os.sep - f += [x.replace('./', parent) if x.startswith('./') else x for x in t] # local to global path - # f += [p.parent / x.lstrip(os.sep) for x in t] # local to global path (pathlib) - else: - raise Exception(f'{prefix}{p} does not exist') - self.img_files = sorted(x.replace('/', os.sep) for x in f if x.split('.')[-1].lower() in IMG_FORMATS) - # self.img_files = sorted([x for x in f if x.suffix[1:].lower() in IMG_FORMATS]) # pathlib - assert self.img_files, f'{prefix}No images found' - except Exception as e: - raise Exception(f'{prefix}Error loading data from {path}: {e}\nSee {HELP_URL}') - - # Check cache - self.label_files = img2label_paths(self.img_files) # labels - cache_path = (p if p.is_file() else Path(self.label_files[0]).parent).with_suffix('.cache') - try: - cache, exists = np.load(cache_path, allow_pickle=True).item(), True # load dict - assert cache['version'] == self.cache_version # same version - assert cache['hash'] == get_hash(self.label_files + self.img_files) # same hash - except: - cache, exists = self.cache_labels(cache_path, prefix), False # cache - - # Display cache - nf, nm, ne, nc, n = cache.pop('results') # found, missing, empty, corrupted, total - if exists: - d = f"Scanning '{cache_path}' images and labels... {nf} found, {nm} missing, {ne} empty, {nc} corrupted" - tqdm(None, desc=prefix + d, total=n, initial=n) # display cache results - if cache['msgs']: - LOGGER.info('\n'.join(cache['msgs'])) # display warnings - assert nf > 0 or not augment, f'{prefix}No labels in {cache_path}. Can not train without labels. See {HELP_URL}' - - # Read cache - [cache.pop(k) for k in ('hash', 'version', 'msgs')] # remove items - labels, shapes, self.segments = zip(*cache.values()) - self.labels = list(labels) - self.shapes = np.array(shapes, dtype=np.float64) - self.img_files = list(cache.keys()) # update - self.label_files = img2label_paths(cache.keys()) # update - n = len(shapes) # number of images - bi = np.floor(np.arange(n) / batch_size).astype(np.int) # batch index - nb = bi[-1] + 1 # number of batches - self.batch = bi # batch index of image - self.n = n - self.indices = range(n) - - # Update labels - include_class = [] # filter labels to include only these classes (optional) - include_class_array = np.array(include_class).reshape(1, -1) - for i, (label, segment) in enumerate(zip(self.labels, self.segments)): - if include_class: - j = (label[:, 0:1] == include_class_array).any(1) - self.labels[i] = label[j] - if segment: - self.segments[i] = segment[j] - if single_cls: # single-class training, merge all classes into 0 - self.labels[i][:, 0] = 0 - if segment: - self.segments[i][:, 0] = 0 - - # Rectangular Training - if self.rect: - # Sort by aspect ratio - s = self.shapes # wh - ar = s[:, 1] / s[:, 0] # aspect ratio - irect = ar.argsort() - self.img_files = [self.img_files[i] for i in irect] - self.label_files = [self.label_files[i] for i in irect] - self.labels = [self.labels[i] for i in irect] - self.shapes = s[irect] # wh - ar = ar[irect] - - # Set training image shapes - shapes = [[1, 1]] * nb - for i in range(nb): - ari = ar[bi == i] - mini, maxi = ari.min(), ari.max() - if maxi < 1: - shapes[i] = [maxi, 1] - elif mini > 1: - shapes[i] = [1, 1 / mini] - - self.batch_shapes = np.ceil(np.array(shapes) * img_size / stride + pad).astype(np.int) * stride - - # Cache images into memory for faster training (WARNING: large datasets may exceed system RAM) - self.imgs, self.img_npy = [None] * n, [None] * n - if cache_images: - if cache_images == 'disk': - self.im_cache_dir = Path(Path(self.img_files[0]).parent.as_posix() + '_npy') - self.img_npy = [self.im_cache_dir / Path(f).with_suffix('.npy').name for f in self.img_files] - self.im_cache_dir.mkdir(parents=True, exist_ok=True) - gb = 0 # Gigabytes of cached images - self.img_hw0, self.img_hw = [None] * n, [None] * n - results = ThreadPool(NUM_THREADS).imap(lambda x: load_image(*x), zip(repeat(self), range(n))) - pbar = tqdm(enumerate(results), total=n) - for i, x in pbar: - if cache_images == 'disk': - if not self.img_npy[i].exists(): - np.save(self.img_npy[i].as_posix(), x[0]) - gb += self.img_npy[i].stat().st_size - else: - self.imgs[i], self.img_hw0[i], self.img_hw[i] = x # im, hw_orig, hw_resized = load_image(self, i) - gb += self.imgs[i].nbytes - pbar.desc = f'{prefix}Caching images ({gb / 1E9:.1f}GB {cache_images})' - pbar.close() - - def cache_labels(self, path=Path('./labels.cache'), prefix=''): - # Cache dataset labels, check images and read shapes - x = {} # dict - nm, nf, ne, nc, msgs = 0, 0, 0, 0, [] # number missing, found, empty, corrupt, messages - desc = f"{prefix}Scanning '{path.parent / path.stem}' images and labels..." - with Pool(NUM_THREADS) as pool: - pbar = tqdm(pool.imap(verify_image_label, zip(self.img_files, self.label_files, repeat(prefix))), - desc=desc, total=len(self.img_files)) - for im_file, l, shape, segments, nm_f, nf_f, ne_f, nc_f, msg in pbar: - nm += nm_f - nf += nf_f - ne += ne_f - nc += nc_f - if im_file: - x[im_file] = [l, shape, segments] - if msg: - msgs.append(msg) - pbar.desc = f"{desc}{nf} found, {nm} missing, {ne} empty, {nc} corrupted" - - pbar.close() - if msgs: - LOGGER.info('\n'.join(msgs)) - if nf == 0: - LOGGER.warning(f'{prefix}WARNING: No labels found in {path}. See {HELP_URL}') - x['hash'] = get_hash(self.label_files + self.img_files) - x['results'] = nf, nm, ne, nc, len(self.img_files) - x['msgs'] = msgs # warnings - x['version'] = self.cache_version # cache version - try: - np.save(path, x) # save cache for next time - path.with_suffix('.cache.npy').rename(path) # remove .npy suffix - LOGGER.info(f'{prefix}New cache created: {path}') - except Exception as e: - LOGGER.warning(f'{prefix}WARNING: Cache directory {path.parent} is not writeable: {e}') # not writeable - return x - - def __len__(self): - return len(self.img_files) - - # def __iter__(self): - # self.count = -1 - # print('ran dataset iter') - # #self.shuffled_vector = np.random.permutation(self.nF) if self.augment else np.arange(self.nF) - # return self - - def __getitem__(self, index): - index = self.indices[index] # linear, shuffled, or image_weights - - hyp = self.hyp - mosaic = self.mosaic and random.random() < hyp['mosaic'] - if mosaic: - # Load mosaic - img, labels = load_mosaic(self, index) - shapes = None - - # MixUp augmentation - if random.random() < hyp['mixup']: - img, labels = mixup(img, labels, *load_mosaic(self, random.randint(0, self.n - 1))) - - else: - # Load image - img, (h0, w0), (h, w) = load_image(self, index) - - # Letterbox - shape = self.batch_shapes[self.batch[index]] if self.rect else self.img_size # final letterboxed shape - img, ratio, pad = letterbox(img, shape, auto=False, scaleup=self.augment) - shapes = (h0, w0), ((h / h0, w / w0), pad) # for COCO mAP rescaling - - labels = self.labels[index].copy() - if labels.size: # normalized xywh to pixel xyxy format - labels[:, 1:] = xywhn2xyxy(labels[:, 1:], ratio[0] * w, ratio[1] * h, padw=pad[0], padh=pad[1]) - - if self.augment: - img, labels = random_perspective(img, labels, - degrees=hyp['degrees'], - translate=hyp['translate'], - scale=hyp['scale'], - shear=hyp['shear'], - perspective=hyp['perspective']) - - nl = len(labels) # number of labels - if nl: - labels[:, 1:5] = xyxy2xywhn(labels[:, 1:5], w=img.shape[1], h=img.shape[0], clip=True, eps=1E-3) - - if self.augment: - # Albumentations - img, labels = self.albumentations(img, labels) - nl = len(labels) # update after albumentations - - # HSV color-space - augment_hsv(img, hgain=hyp['hsv_h'], sgain=hyp['hsv_s'], vgain=hyp['hsv_v']) - - # Flip up-down - if random.random() < hyp['flipud']: - img = np.flipud(img) - if nl: - labels[:, 2] = 1 - labels[:, 2] - - # Flip left-right - if random.random() < hyp['fliplr']: - img = np.fliplr(img) - if nl: - labels[:, 1] = 1 - labels[:, 1] - - # Cutouts - # labels = cutout(img, labels, p=0.5) - - labels_out = torch.zeros((nl, 6)) - if nl: - labels_out[:, 1:] = torch.from_numpy(labels) - - # Convert - img = img.transpose((2, 0, 1))[::-1] # HWC to CHW, BGR to RGB - img = np.ascontiguousarray(img) - - return torch.from_numpy(img), labels_out, self.img_files[index], shapes - - @staticmethod - def collate_fn(batch): - img, label, path, shapes = zip(*batch) # transposed - for i, l in enumerate(label): - l[:, 0] = i # add target image index for build_targets() - return torch.stack(img, 0), torch.cat(label, 0), path, shapes - - @staticmethod - def collate_fn4(batch): - img, label, path, shapes = zip(*batch) # transposed - n = len(shapes) // 4 - img4, label4, path4, shapes4 = [], [], path[:n], shapes[:n] - - ho = torch.tensor([[0.0, 0, 0, 1, 0, 0]]) - wo = torch.tensor([[0.0, 0, 1, 0, 0, 0]]) - s = torch.tensor([[1, 1, 0.5, 0.5, 0.5, 0.5]]) # scale - for i in range(n): # zidane torch.zeros(16,3,720,1280) # BCHW - i *= 4 - if random.random() < 0.5: - im = F.interpolate(img[i].unsqueeze(0).float(), scale_factor=2.0, mode='bilinear', align_corners=False)[ - 0].type(img[i].type()) - l = label[i] - else: - im = torch.cat((torch.cat((img[i], img[i + 1]), 1), torch.cat((img[i + 2], img[i + 3]), 1)), 2) - l = torch.cat((label[i], label[i + 1] + ho, label[i + 2] + wo, label[i + 3] + ho + wo), 0) * s - img4.append(im) - label4.append(l) - - for i, l in enumerate(label4): - l[:, 0] = i # add target image index for build_targets() - - return torch.stack(img4, 0), torch.cat(label4, 0), path4, shapes4 - - -# Ancillary functions -------------------------------------------------------------------------------------------------- -def load_image(self, i): - # loads 1 image from dataset index 'i', returns im, original hw, resized hw - im = self.imgs[i] - if im is None: # not cached in ram - npy = self.img_npy[i] - if npy and npy.exists(): # load npy - im = np.load(npy) - else: # read image - path = self.img_files[i] - im = cv2.imread(path) # BGR - assert im is not None, f'Image Not Found {path}' - h0, w0 = im.shape[:2] # orig hw - r = self.img_size / max(h0, w0) # ratio - if r != 1: # if sizes are not equal - im = cv2.resize(im, (int(w0 * r), int(h0 * r)), - interpolation=cv2.INTER_AREA if r < 1 and not self.augment else cv2.INTER_LINEAR) - return im, (h0, w0), im.shape[:2] # im, hw_original, hw_resized - else: - return self.imgs[i], self.img_hw0[i], self.img_hw[i] # im, hw_original, hw_resized - - -def load_mosaic(self, index): - # 4-mosaic loader. Loads 1 image + 3 random images into a 4-image mosaic - labels4, segments4 = [], [] - s = self.img_size - yc, xc = (int(random.uniform(-x, 2 * s + x)) for x in self.mosaic_border) # mosaic center x, y - indices = [index] + random.choices(self.indices, k=3) # 3 additional image indices - random.shuffle(indices) - for i, index in enumerate(indices): - # Load image - img, _, (h, w) = load_image(self, index) - - # place img in img4 - if i == 0: # top left - img4 = np.full((s * 2, s * 2, img.shape[2]), 114, dtype=np.uint8) # base image with 4 tiles - x1a, y1a, x2a, y2a = max(xc - w, 0), max(yc - h, 0), xc, yc # xmin, ymin, xmax, ymax (large image) - x1b, y1b, x2b, y2b = w - (x2a - x1a), h - (y2a - y1a), w, h # xmin, ymin, xmax, ymax (small image) - elif i == 1: # top right - x1a, y1a, x2a, y2a = xc, max(yc - h, 0), min(xc + w, s * 2), yc - x1b, y1b, x2b, y2b = 0, h - (y2a - y1a), min(w, x2a - x1a), h - elif i == 2: # bottom left - x1a, y1a, x2a, y2a = max(xc - w, 0), yc, xc, min(s * 2, yc + h) - x1b, y1b, x2b, y2b = w - (x2a - x1a), 0, w, min(y2a - y1a, h) - elif i == 3: # bottom right - x1a, y1a, x2a, y2a = xc, yc, min(xc + w, s * 2), min(s * 2, yc + h) - x1b, y1b, x2b, y2b = 0, 0, min(w, x2a - x1a), min(y2a - y1a, h) - - img4[y1a:y2a, x1a:x2a] = img[y1b:y2b, x1b:x2b] # img4[ymin:ymax, xmin:xmax] - padw = x1a - x1b - padh = y1a - y1b - - # Labels - labels, segments = self.labels[index].copy(), self.segments[index].copy() - if labels.size: - labels[:, 1:] = xywhn2xyxy(labels[:, 1:], w, h, padw, padh) # normalized xywh to pixel xyxy format - segments = [xyn2xy(x, w, h, padw, padh) for x in segments] - labels4.append(labels) - segments4.extend(segments) - - # Concat/clip labels - labels4 = np.concatenate(labels4, 0) - for x in (labels4[:, 1:], *segments4): - np.clip(x, 0, 2 * s, out=x) # clip when using random_perspective() - # img4, labels4 = replicate(img4, labels4) # replicate - - # Augment - img4, labels4, segments4 = copy_paste(img4, labels4, segments4, p=self.hyp['copy_paste']) - img4, labels4 = random_perspective(img4, labels4, segments4, - degrees=self.hyp['degrees'], - translate=self.hyp['translate'], - scale=self.hyp['scale'], - shear=self.hyp['shear'], - perspective=self.hyp['perspective'], - border=self.mosaic_border) # border to remove - - return img4, labels4 - - -def load_mosaic9(self, index): - # 9-mosaic loader. Loads 1 image + 8 random images into a 9-image mosaic - labels9, segments9 = [], [] - s = self.img_size - indices = [index] + random.choices(self.indices, k=8) # 8 additional image indices - random.shuffle(indices) - for i, index in enumerate(indices): - # Load image - img, _, (h, w) = load_image(self, index) - - # place img in img9 - if i == 0: # center - img9 = np.full((s * 3, s * 3, img.shape[2]), 114, dtype=np.uint8) # base image with 4 tiles - h0, w0 = h, w - c = s, s, s + w, s + h # xmin, ymin, xmax, ymax (base) coordinates - elif i == 1: # top - c = s, s - h, s + w, s - elif i == 2: # top right - c = s + wp, s - h, s + wp + w, s - elif i == 3: # right - c = s + w0, s, s + w0 + w, s + h - elif i == 4: # bottom right - c = s + w0, s + hp, s + w0 + w, s + hp + h - elif i == 5: # bottom - c = s + w0 - w, s + h0, s + w0, s + h0 + h - elif i == 6: # bottom left - c = s + w0 - wp - w, s + h0, s + w0 - wp, s + h0 + h - elif i == 7: # left - c = s - w, s + h0 - h, s, s + h0 - elif i == 8: # top left - c = s - w, s + h0 - hp - h, s, s + h0 - hp - - padx, pady = c[:2] - x1, y1, x2, y2 = (max(x, 0) for x in c) # allocate coords - - # Labels - labels, segments = self.labels[index].copy(), self.segments[index].copy() - if labels.size: - labels[:, 1:] = xywhn2xyxy(labels[:, 1:], w, h, padx, pady) # normalized xywh to pixel xyxy format - segments = [xyn2xy(x, w, h, padx, pady) for x in segments] - labels9.append(labels) - segments9.extend(segments) - - # Image - img9[y1:y2, x1:x2] = img[y1 - pady:, x1 - padx:] # img9[ymin:ymax, xmin:xmax] - hp, wp = h, w # height, width previous - - # Offset - yc, xc = (int(random.uniform(0, s)) for _ in self.mosaic_border) # mosaic center x, y - img9 = img9[yc:yc + 2 * s, xc:xc + 2 * s] - - # Concat/clip labels - labels9 = np.concatenate(labels9, 0) - labels9[:, [1, 3]] -= xc - labels9[:, [2, 4]] -= yc - c = np.array([xc, yc]) # centers - segments9 = [x - c for x in segments9] - - for x in (labels9[:, 1:], *segments9): - np.clip(x, 0, 2 * s, out=x) # clip when using random_perspective() - # img9, labels9 = replicate(img9, labels9) # replicate - - # Augment - img9, labels9 = random_perspective(img9, labels9, segments9, - degrees=self.hyp['degrees'], - translate=self.hyp['translate'], - scale=self.hyp['scale'], - shear=self.hyp['shear'], - perspective=self.hyp['perspective'], - border=self.mosaic_border) # border to remove - - return img9, labels9 - - -def create_folder(path='./new'): - # Create folder - if os.path.exists(path): - shutil.rmtree(path) # delete output folder - os.makedirs(path) # make new output folder - - -def flatten_recursive(path='../datasets/coco128'): - # Flatten a recursive directory by bringing all files to top level - new_path = Path(path + '_flat') - create_folder(new_path) - for file in tqdm(glob.glob(str(Path(path)) + '/**/*.*', recursive=True)): - shutil.copyfile(file, new_path / Path(file).name) - - -def extract_boxes(path='../datasets/coco128'): # from utils.datasets import *; extract_boxes() - # Convert detection dataset into classification dataset, with one directory per class - path = Path(path) # images dir - shutil.rmtree(path / 'classifier') if (path / 'classifier').is_dir() else None # remove existing - files = list(path.rglob('*.*')) - n = len(files) # number of files - for im_file in tqdm(files, total=n): - if im_file.suffix[1:] in IMG_FORMATS: - # image - im = cv2.imread(str(im_file))[..., ::-1] # BGR to RGB - h, w = im.shape[:2] - - # labels - lb_file = Path(img2label_paths([str(im_file)])[0]) - if Path(lb_file).exists(): - with open(lb_file) as f: - lb = np.array([x.split() for x in f.read().strip().splitlines()], dtype=np.float32) # labels - - for j, x in enumerate(lb): - c = int(x[0]) # class - f = (path / 'classifier') / f'{c}' / f'{path.stem}_{im_file.stem}_{j}.jpg' # new filename - if not f.parent.is_dir(): - f.parent.mkdir(parents=True) - - b = x[1:] * [w, h, w, h] # box - # b[2:] = b[2:].max() # rectangle to square - b[2:] = b[2:] * 1.2 + 3 # pad - b = xywh2xyxy(b.reshape(-1, 4)).ravel().astype(np.int) - - b[[0, 2]] = np.clip(b[[0, 2]], 0, w) # clip boxes outside of image - b[[1, 3]] = np.clip(b[[1, 3]], 0, h) - assert cv2.imwrite(str(f), im[b[1]:b[3], b[0]:b[2]]), f'box failure in {f}' - - -def autosplit(path='../datasets/coco128/images', weights=(0.9, 0.1, 0.0), annotated_only=False): - """ Autosplit a dataset into train/val/test splits and save path/autosplit_*.txt files - Usage: from utils.datasets import *; autosplit() - Arguments - path: Path to images directory - weights: Train, val, test weights (list, tuple) - annotated_only: Only use images with an annotated txt file - """ - path = Path(path) # images dir - files = sorted(x for x in path.rglob('*.*') if x.suffix[1:].lower() in IMG_FORMATS) # image files only - n = len(files) # number of files - random.seed(0) # for reproducibility - indices = random.choices([0, 1, 2], weights=weights, k=n) # assign each image to a split - - txt = ['autosplit_train.txt', 'autosplit_val.txt', 'autosplit_test.txt'] # 3 txt files - [(path.parent / x).unlink(missing_ok=True) for x in txt] # remove existing - - print(f'Autosplitting images from {path}' + ', using *.txt labeled images only' * annotated_only) - for i, img in tqdm(zip(indices, files), total=n): - if not annotated_only or Path(img2label_paths([str(img)])[0]).exists(): # check label - with open(path.parent / txt[i], 'a') as f: - f.write('./' + img.relative_to(path.parent).as_posix() + '\n') # add image to txt file - - -def verify_image_label(args): - # Verify one image-label pair - im_file, lb_file, prefix = args - nm, nf, ne, nc, msg, segments = 0, 0, 0, 0, '', [] # number (missing, found, empty, corrupt), message, segments - try: - # verify images - im = Image.open(im_file) - im.verify() # PIL verify - shape = exif_size(im) # image size - assert (shape[0] > 9) & (shape[1] > 9), f'image size {shape} <10 pixels' - assert im.format.lower() in IMG_FORMATS, f'invalid image format {im.format}' - if im.format.lower() in ('jpg', 'jpeg'): - with open(im_file, 'rb') as f: - f.seek(-2, 2) - if f.read() != b'\xff\xd9': # corrupt JPEG - ImageOps.exif_transpose(Image.open(im_file)).save(im_file, 'JPEG', subsampling=0, quality=100) - msg = f'{prefix}WARNING: {im_file}: corrupt JPEG restored and saved' - - # verify labels - if os.path.isfile(lb_file): - nf = 1 # label found - with open(lb_file) as f: - l = [x.split() for x in f.read().strip().splitlines() if len(x)] - if any([len(x) > 8 for x in l]): # is segment - classes = np.array([x[0] for x in l], dtype=np.float32) - segments = [np.array(x[1:], dtype=np.float32).reshape(-1, 2) for x in l] # (cls, xy1...) - l = np.concatenate((classes.reshape(-1, 1), segments2boxes(segments)), 1) # (cls, xywh) - l = np.array(l, dtype=np.float32) - nl = len(l) - if nl: - assert l.shape[1] == 5, f'labels require 5 columns, {l.shape[1]} columns detected' - assert (l >= 0).all(), f'negative label values {l[l < 0]}' - assert (l[:, 1:] <= 1).all(), f'non-normalized or out of bounds coordinates {l[:, 1:][l[:, 1:] > 1]}' - _, i = np.unique(l, axis=0, return_index=True) - if len(i) < nl: # duplicate row check - l = l[i] # remove duplicates - if segments: - segments = segments[i] - msg = f'{prefix}WARNING: {im_file}: {nl - len(i)} duplicate labels removed' - else: - ne = 1 # label empty - l = np.zeros((0, 5), dtype=np.float32) - else: - nm = 1 # label missing - l = np.zeros((0, 5), dtype=np.float32) - return im_file, l, shape, segments, nm, nf, ne, nc, msg - except Exception as e: - nc = 1 - msg = f'{prefix}WARNING: {im_file}: ignoring corrupt image/label: {e}' - return [None, None, None, None, nm, nf, ne, nc, msg] - - -def dataset_stats(path='coco128.yaml', autodownload=False, verbose=False, profile=False, hub=False): - """ Return dataset statistics dictionary with images and instances counts per split per class - To run in parent directory: export PYTHONPATH="$PWD/yolov3" - Usage1: from utils.datasets import *; dataset_stats('coco128.yaml', autodownload=True) - Usage2: from utils.datasets import *; dataset_stats('../datasets/coco128_with_yaml.zip') - Arguments - path: Path to data.yaml or data.zip (with data.yaml inside data.zip) - autodownload: Attempt to download dataset if not found locally - verbose: Print stats dictionary - """ - - def round_labels(labels): - # Update labels to integer class and 6 decimal place floats - return [[int(c), *(round(x, 4) for x in points)] for c, *points in labels] - - def unzip(path): - # Unzip data.zip TODO: CONSTRAINT: path/to/abc.zip MUST unzip to 'path/to/abc/' - if str(path).endswith('.zip'): # path is data.zip - assert Path(path).is_file(), f'Error unzipping {path}, file not found' - ZipFile(path).extractall(path=path.parent) # unzip - dir = path.with_suffix('') # dataset directory == zip name - return True, str(dir), next(dir.rglob('*.yaml')) # zipped, data_dir, yaml_path - else: # path is data.yaml - return False, None, path - - def hub_ops(f, max_dim=1920): - # HUB ops for 1 image 'f': resize and save at reduced quality in /dataset-hub for web/app viewing - f_new = im_dir / Path(f).name # dataset-hub image filename - try: # use PIL - im = Image.open(f) - r = max_dim / max(im.height, im.width) # ratio - if r < 1.0: # image too large - im = im.resize((int(im.width * r), int(im.height * r))) - im.save(f_new, 'JPEG', quality=75, optimize=True) # save - except Exception as e: # use OpenCV - print(f'WARNING: HUB ops PIL failure {f}: {e}') - im = cv2.imread(f) - im_height, im_width = im.shape[:2] - r = max_dim / max(im_height, im_width) # ratio - if r < 1.0: # image too large - im = cv2.resize(im, (int(im_width * r), int(im_height * r)), interpolation=cv2.INTER_LINEAR) - cv2.imwrite(str(f_new), im) - - zipped, data_dir, yaml_path = unzip(Path(path)) - with open(check_yaml(yaml_path), errors='ignore') as f: - data = yaml.safe_load(f) # data dict - if zipped: - data['path'] = data_dir # TODO: should this be dir.resolve()? - check_dataset(data, autodownload) # download dataset if missing - hub_dir = Path(data['path'] + ('-hub' if hub else '')) - stats = {'nc': data['nc'], 'names': data['names']} # statistics dictionary - for split in 'train', 'val', 'test': - if data.get(split) is None: - stats[split] = None # i.e. no test set - continue - x = [] - dataset = LoadImagesAndLabels(data[split]) # load dataset - for label in tqdm(dataset.labels, total=dataset.n, desc='Statistics'): - x.append(np.bincount(label[:, 0].astype(int), minlength=data['nc'])) - x = np.array(x) # shape(128x80) - stats[split] = {'instance_stats': {'total': int(x.sum()), 'per_class': x.sum(0).tolist()}, - 'image_stats': {'total': dataset.n, 'unlabelled': int(np.all(x == 0, 1).sum()), - 'per_class': (x > 0).sum(0).tolist()}, - 'labels': [{str(Path(k).name): round_labels(v.tolist())} for k, v in - zip(dataset.img_files, dataset.labels)]} - - if hub: - im_dir = hub_dir / 'images' - im_dir.mkdir(parents=True, exist_ok=True) - for _ in tqdm(ThreadPool(NUM_THREADS).imap(hub_ops, dataset.img_files), total=dataset.n, desc='HUB Ops'): - pass - - # Profile - stats_path = hub_dir / 'stats.json' - if profile: - for _ in range(1): - file = stats_path.with_suffix('.npy') - t1 = time.time() - np.save(file, stats) - t2 = time.time() - x = np.load(file, allow_pickle=True) - print(f'stats.npy times: {time.time() - t2:.3f}s read, {t2 - t1:.3f}s write') - - file = stats_path.with_suffix('.json') - t1 = time.time() - with open(file, 'w') as f: - json.dump(stats, f) # save stats *.json - t2 = time.time() - with open(file) as f: - x = json.load(f) # load hyps dict - print(f'stats.json times: {time.time() - t2:.3f}s read, {t2 - t1:.3f}s write') - - # Save, print and return - if hub: - print(f'Saving {stats_path.resolve()}...') - with open(stats_path, 'w') as f: - json.dump(stats, f) # save stats.json - if verbose: - print(json.dumps(stats, indent=2, sort_keys=False)) - return stats diff --git a/Dockerfile b/utils/docker/Dockerfile similarity index 79% rename from Dockerfile rename to utils/docker/Dockerfile index ce3c4667..a83e664c 100644 --- a/Dockerfile +++ b/utils/docker/Dockerfile @@ -1,6 +1,6 @@ # YOLOv3 🚀 by Ultralytics, GPL-3.0 license -# Builds ultralytics/yolov3:latest image on DockerHub https://hub.docker.com/r/ultralytics/yolov3 -# Image is CUDA-optimized for YOLOv3 single/multi-GPU training and inference +# Builds ultralytics/yolov5:latest image on DockerHub https://hub.docker.com/r/ultralytics/yolov3 +# Image is CUDA-optimized for YOLOv5 single/multi-GPU training and inference # Start FROM NVIDIA PyTorch image https://ngc.nvidia.com/catalog/containers/nvidia:pytorch # FROM docker.io/pytorch/pytorch:latest @@ -26,7 +26,7 @@ WORKDIR /usr/src/app # Copy contents # COPY . /usr/src/app (issues as not a .git directory) -RUN git clone https://github.com/ultralytics/yolov3 /usr/src/app +RUN git clone https://github.com/ultralytics/yolov5 /usr/src/app # Install pip packages COPY requirements.txt . @@ -45,22 +45,22 @@ ENV DEBIAN_FRONTEND teletype # Usage Examples ------------------------------------------------------------------------------------------------------- # Build and Push -# t=ultralytics/yolov3:latest && sudo docker build -f Dockerfile -t $t . && sudo docker push $t +# t=ultralytics/yolov5:latest && sudo docker build -f utils/docker/Dockerfile -t $t . && sudo docker push $t # Pull and Run -# t=ultralytics/yolov3:latest && sudo docker pull $t && sudo docker run -it --ipc=host --gpus all $t +# t=ultralytics/yolov5:latest && sudo docker pull $t && sudo docker run -it --ipc=host --gpus all $t # Pull and Run with local directory access -# t=ultralytics/yolov3:latest && sudo docker pull $t && sudo docker run -it --ipc=host --gpus all -v "$(pwd)"/datasets:/usr/src/datasets $t +# t=ultralytics/yolov5:latest && sudo docker pull $t && sudo docker run -it --ipc=host --gpus all -v "$(pwd)"/datasets:/usr/src/datasets $t # Kill all # sudo docker kill $(sudo docker ps -q) # Kill all image-based -# sudo docker kill $(sudo docker ps -qa --filter ancestor=ultralytics/yolov3:latest) +# sudo docker kill $(sudo docker ps -qa --filter ancestor=ultralytics/yolov5:latest) # DockerHub tag update -# t=ultralytics/yolov3:latest tnew=ultralytics/yolov3:v6.2 && sudo docker pull $t && sudo docker tag $t $tnew && sudo docker push $tnew +# t=ultralytics/yolov5:latest tnew=ultralytics/yolov5:v6.2 && sudo docker pull $t && sudo docker tag $t $tnew && sudo docker push $tnew # Clean up # sudo docker system prune -a --volumes @@ -72,4 +72,4 @@ ENV DEBIAN_FRONTEND teletype # python -m torch.distributed.run --nproc_per_node 2 --master_port 1 train.py --epochs 3 # GCP VM from Image -# docker.io/ultralytics/yolov3:latest +# docker.io/ultralytics/yolov5:latest diff --git a/utils/docker/Dockerfile-arm64 b/utils/docker/Dockerfile-arm64 new file mode 100644 index 00000000..31c2eaf8 --- /dev/null +++ b/utils/docker/Dockerfile-arm64 @@ -0,0 +1,41 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +# Builds ultralytics/yolov5:latest-arm64 image on DockerHub https://hub.docker.com/r/ultralytics/yolov3 +# Image is aarch64-compatible for Apple M1 and other ARM architectures i.e. Jetson Nano and Raspberry Pi + +# Start FROM Ubuntu image https://hub.docker.com/_/ubuntu +FROM arm64v8/ubuntu:rolling + +# Downloads to user config dir +ADD https://ultralytics.com/assets/Arial.ttf https://ultralytics.com/assets/Arial.Unicode.ttf /root/.config/Ultralytics/ + +# Install linux packages +ENV DEBIAN_FRONTEND noninteractive +RUN apt update +RUN TZ=Etc/UTC apt install -y tzdata +RUN apt install --no-install-recommends -y python3-pip git zip curl htop gcc libgl1-mesa-glx libglib2.0-0 libpython3-dev +# RUN alias python=python3 + +# Install pip packages +COPY requirements.txt . +RUN python3 -m pip install --upgrade pip wheel +RUN pip install --no-cache -r requirements.txt albumentations gsutil notebook \ + coremltools onnx onnxruntime + # tensorflow-aarch64 tensorflowjs \ + +# Create working directory +RUN mkdir -p /usr/src/app +WORKDIR /usr/src/app + +# Copy contents +# COPY . /usr/src/app (issues as not a .git directory) +RUN git clone https://github.com/ultralytics/yolov5 /usr/src/app +ENV DEBIAN_FRONTEND teletype + + +# Usage Examples ------------------------------------------------------------------------------------------------------- + +# Build and Push +# t=ultralytics/yolov5:latest-arm64 && sudo docker build --platform linux/arm64 -f utils/docker/Dockerfile-arm64 -t $t . && sudo docker push $t + +# Pull and Run +# t=ultralytics/yolov5:latest-arm64 && sudo docker pull $t && sudo docker run -it --ipc=host -v "$(pwd)"/datasets:/usr/src/datasets $t diff --git a/utils/docker/Dockerfile-cpu b/utils/docker/Dockerfile-cpu new file mode 100644 index 00000000..8e27bf61 --- /dev/null +++ b/utils/docker/Dockerfile-cpu @@ -0,0 +1,42 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +# Builds ultralytics/yolov5:latest-cpu image on DockerHub https://hub.docker.com/r/ultralytics/yolov3 +# Image is CPU-optimized for ONNX, OpenVINO and PyTorch YOLOv5 deployments + +# Start FROM Ubuntu image https://hub.docker.com/_/ubuntu +FROM ubuntu:rolling + +# Downloads to user config dir +ADD https://ultralytics.com/assets/Arial.ttf https://ultralytics.com/assets/Arial.Unicode.ttf /root/.config/Ultralytics/ + +# Install linux packages +ENV DEBIAN_FRONTEND noninteractive +RUN apt update +RUN TZ=Etc/UTC apt install -y tzdata +RUN apt install --no-install-recommends -y python3-pip git zip curl htop libgl1-mesa-glx libglib2.0-0 libpython3-dev gnupg +# RUN alias python=python3 + +# Install pip packages +COPY requirements.txt . +RUN python3 -m pip install --upgrade pip wheel +RUN pip install --no-cache -r requirements.txt albumentations gsutil notebook \ + coremltools onnx onnx-simplifier onnxruntime 'openvino-dev>=2022.3' \ + # tensorflow tensorflowjs \ + --extra-index-url https://download.pytorch.org/whl/cpu + +# Create working directory +RUN mkdir -p /usr/src/app +WORKDIR /usr/src/app + +# Copy contents +# COPY . /usr/src/app (issues as not a .git directory) +RUN git clone https://github.com/ultralytics/yolov5 /usr/src/app +ENV DEBIAN_FRONTEND teletype + + +# Usage Examples ------------------------------------------------------------------------------------------------------- + +# Build and Push +# t=ultralytics/yolov5:latest-cpu && sudo docker build -f utils/docker/Dockerfile-cpu -t $t . && sudo docker push $t + +# Pull and Run +# t=ultralytics/yolov5:latest-cpu && sudo docker pull $t && sudo docker run -it --ipc=host -v "$(pwd)"/datasets:/usr/src/datasets $t diff --git a/utils/downloads.py b/utils/downloads.py index cd653078..6ca02aaa 100644 --- a/utils/downloads.py +++ b/utils/downloads.py @@ -3,147 +3,106 @@ Download utils """ -import os -import platform +import logging import subprocess -import time import urllib from pathlib import Path -from zipfile import ZipFile import requests import torch +def is_url(url, check=True): + # Check if string is URL and check if URL exists + try: + url = str(url) + result = urllib.parse.urlparse(url) + assert all([result.scheme, result.netloc]) # check if is url + return (urllib.request.urlopen(url).getcode() == 200) if check else True # check if exists online + except (AssertionError, urllib.request.HTTPError): + return False + + def gsutil_getsize(url=''): # gs://bucket/file size https://cloud.google.com/storage/docs/gsutil/commands/du s = subprocess.check_output(f'gsutil du {url}', shell=True).decode('utf-8') return eval(s.split(' ')[0]) if len(s) else 0 # bytes +def url_getsize(url='https://ultralytics.com/images/bus.jpg'): + # Return downloadable file size in bytes + response = requests.head(url, allow_redirects=True) + return int(response.headers.get('content-length', -1)) + + def safe_download(file, url, url2=None, min_bytes=1E0, error_msg=''): # Attempts to download file from url or url2, checks and removes incomplete downloads < min_bytes + from utils.general import LOGGER + file = Path(file) assert_msg = f"Downloaded file '{file}' does not exist or size is < min_bytes={min_bytes}" try: # url1 - print(f'Downloading {url} to {file}...') - torch.hub.download_url_to_file(url, str(file)) + LOGGER.info(f'Downloading {url} to {file}...') + torch.hub.download_url_to_file(url, str(file), progress=LOGGER.level <= logging.INFO) assert file.exists() and file.stat().st_size > min_bytes, assert_msg # check except Exception as e: # url2 - file.unlink(missing_ok=True) # remove partial downloads - print(f'ERROR: {e}\nRe-attempting {url2 or url} to {file}...') - os.system(f"curl -L '{url2 or url}' -o '{file}' --retry 3 -C -") # curl download, retry and resume on fail + if file.exists(): + file.unlink() # remove partial downloads + LOGGER.info(f'ERROR: {e}\nRe-attempting {url2 or url} to {file}...') + subprocess.run( + f"curl -# -L '{url2 or url}' -o '{file}' --retry 3 -C -".split()) # curl download, retry and resume on fail finally: if not file.exists() or file.stat().st_size < min_bytes: # check - file.unlink(missing_ok=True) # remove partial downloads - print(f"ERROR: {assert_msg}\n{error_msg}") - print('') + if file.exists(): + file.unlink() # remove partial downloads + LOGGER.info(f"ERROR: {assert_msg}\n{error_msg}") + LOGGER.info('') -def attempt_download(file, repo='ultralytics/yolov3'): # from utils.downloads import *; attempt_download() - # Attempt file download if does not exist +def attempt_download(file, repo='ultralytics/yolov5', release='v7.0'): + # Attempt file download from GitHub release assets if not found locally. release = 'latest', 'v7.0', etc. + from utils.general import LOGGER + + def github_assets(repository, version='latest'): + # Return GitHub repo tag (i.e. 'v7.0') and assets (i.e. ['yolov5s.pt', 'yolov5m.pt', ...]) + if version != 'latest': + version = f'tags/{version}' # i.e. tags/v7.0 + response = requests.get(f'https://api.github.com/repos/{repository}/releases/{version}').json() # github api + return response['tag_name'], [x['name'] for x in response['assets']] # tag, assets + file = Path(str(file).strip().replace("'", '')) - if not file.exists(): # URL specified name = Path(urllib.parse.unquote(str(file))).name # decode '%2F' to '/' etc. if str(file).startswith(('http:/', 'https:/')): # download url = str(file).replace(':/', '://') # Pathlib turns :// -> :/ - name = name.split('?')[0] # parse authentication https://url.com/file.txt?auth... - safe_download(file=name, url=url, min_bytes=1E5) - return name + file = name.split('?')[0] # parse authentication https://url.com/file.txt?auth... + if Path(file).is_file(): + LOGGER.info(f'Found {url} locally at {file}') # file already exists + else: + safe_download(file=file, url=url, min_bytes=1E5) + return file # GitHub assets - file.parent.mkdir(parents=True, exist_ok=True) # make parent dir (if required) + assets = [f'yolov5{size}{suffix}.pt' for size in 'nsmlx' for suffix in ('', '6', '-cls', '-seg')] # default try: - response = requests.get(f'https://api.github.com/repos/{repo}/releases/latest').json() # github api - assets = [x['name'] for x in response['assets']] # release assets, i.e. ['yolov3.pt'...] - tag = response['tag_name'] # i.e. 'v1.0' - except: # fallback plan - assets = ['yolov3.pt', 'yolov3-spp.pt', 'yolov3-tiny.pt'] + tag, assets = github_assets(repo, release) + except Exception: try: - tag = subprocess.check_output('git tag', shell=True, stderr=subprocess.STDOUT).decode().split()[-1] - except: - tag = 'v9.5.0' # current release + tag, assets = github_assets(repo) # latest release + except Exception: + try: + tag = subprocess.check_output('git tag', shell=True, stderr=subprocess.STDOUT).decode().split()[-1] + except Exception: + tag = release + file.parent.mkdir(parents=True, exist_ok=True) # make parent dir (if required) if name in assets: - safe_download(file, - url=f'https://github.com/{repo}/releases/download/{tag}/{name}', - # url2=f'https://storage.googleapis.com/{repo}/ckpt/{name}', # backup url (optional) - min_bytes=1E5, - error_msg=f'{file} missing, try downloading from https://github.com/{repo}/releases/') + url3 = 'https://drive.google.com/drive/folders/1EFQTEUeXWSFww0luse2jB9M1QNZQGwNl' # backup gdrive mirror + safe_download( + file, + url=f'https://github.com/{repo}/releases/download/{tag}/{name}', + min_bytes=1E5, + error_msg=f'{file} missing, try downloading from https://github.com/{repo}/releases/{tag} or {url3}') return str(file) - - -def gdrive_download(id='16TiPfZj7htmTyhntwcZyEEAejOUxuT6m', file='tmp.zip'): - # Downloads a file from Google Drive. from yolov3.utils.downloads import *; gdrive_download() - t = time.time() - file = Path(file) - cookie = Path('cookie') # gdrive cookie - print(f'Downloading https://drive.google.com/uc?export=download&id={id} as {file}... ', end='') - file.unlink(missing_ok=True) # remove existing file - cookie.unlink(missing_ok=True) # remove existing cookie - - # Attempt file download - out = "NUL" if platform.system() == "Windows" else "/dev/null" - os.system(f'curl -c ./cookie -s -L "drive.google.com/uc?export=download&id={id}" > {out}') - if os.path.exists('cookie'): # large file - s = f'curl -Lb ./cookie "drive.google.com/uc?export=download&confirm={get_token()}&id={id}" -o {file}' - else: # small file - s = f'curl -s -L -o {file} "drive.google.com/uc?export=download&id={id}"' - r = os.system(s) # execute, capture return - cookie.unlink(missing_ok=True) # remove existing cookie - - # Error check - if r != 0: - file.unlink(missing_ok=True) # remove partial - print('Download error ') # raise Exception('Download error') - return r - - # Unzip if archive - if file.suffix == '.zip': - print('unzipping... ', end='') - ZipFile(file).extractall(path=file.parent) # unzip - file.unlink() # remove zip - - print(f'Done ({time.time() - t:.1f}s)') - return r - - -def get_token(cookie="./cookie"): - with open(cookie) as f: - for line in f: - if "download" in line: - return line.split()[-1] - return "" - -# Google utils: https://cloud.google.com/storage/docs/reference/libraries ---------------------------------------------- -# -# -# def upload_blob(bucket_name, source_file_name, destination_blob_name): -# # Uploads a file to a bucket -# # https://cloud.google.com/storage/docs/uploading-objects#storage-upload-object-python -# -# storage_client = storage.Client() -# bucket = storage_client.get_bucket(bucket_name) -# blob = bucket.blob(destination_blob_name) -# -# blob.upload_from_filename(source_file_name) -# -# print('File {} uploaded to {}.'.format( -# source_file_name, -# destination_blob_name)) -# -# -# def download_blob(bucket_name, source_blob_name, destination_file_name): -# # Uploads a blob from a bucket -# storage_client = storage.Client() -# bucket = storage_client.get_bucket(bucket_name) -# blob = bucket.blob(source_blob_name) -# -# blob.download_to_filename(destination_file_name) -# -# print('Blob {} downloaded to {}.'.format( -# source_blob_name, -# destination_file_name)) diff --git a/utils/flask_rest_api/README.md b/utils/flask_rest_api/README.md new file mode 100644 index 00000000..a726acbd --- /dev/null +++ b/utils/flask_rest_api/README.md @@ -0,0 +1,73 @@ +# Flask REST API + +[REST](https://en.wikipedia.org/wiki/Representational_state_transfer) [API](https://en.wikipedia.org/wiki/API)s are +commonly used to expose Machine Learning (ML) models to other services. This folder contains an example REST API +created using Flask to expose the YOLOv5s model from [PyTorch Hub](https://pytorch.org/hub/ultralytics_yolov5/). + +## Requirements + +[Flask](https://palletsprojects.com/p/flask/) is required. Install with: + +```shell +$ pip install Flask +``` + +## Run + +After Flask installation run: + +```shell +$ python3 restapi.py --port 5000 +``` + +Then use [curl](https://curl.se/) to perform a request: + +```shell +$ curl -X POST -F image=@zidane.jpg 'http://localhost:5000/v1/object-detection/yolov5s' +``` + +The model inference results are returned as a JSON response: + +```json +[ + { + "class": 0, + "confidence": 0.8900438547, + "height": 0.9318675399, + "name": "person", + "width": 0.3264600933, + "xcenter": 0.7438579798, + "ycenter": 0.5207948685 + }, + { + "class": 0, + "confidence": 0.8440024257, + "height": 0.7155083418, + "name": "person", + "width": 0.6546785235, + "xcenter": 0.427829951, + "ycenter": 0.6334488392 + }, + { + "class": 27, + "confidence": 0.3771208823, + "height": 0.3902671337, + "name": "tie", + "width": 0.0696444362, + "xcenter": 0.3675483763, + "ycenter": 0.7991207838 + }, + { + "class": 27, + "confidence": 0.3527112305, + "height": 0.1540903747, + "name": "tie", + "width": 0.0336618312, + "xcenter": 0.7814827561, + "ycenter": 0.5065554976 + } +] +``` + +An example python script to perform inference using [requests](https://docs.python-requests.org/en/master/) is given +in `example_request.py` diff --git a/utils/flask_rest_api/example_request.py b/utils/flask_rest_api/example_request.py new file mode 100644 index 00000000..68eec2f3 --- /dev/null +++ b/utils/flask_rest_api/example_request.py @@ -0,0 +1,19 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Perform test request +""" + +import pprint + +import requests + +DETECTION_URL = "http://localhost:5000/v1/object-detection/yolov5s" +IMAGE = "zidane.jpg" + +# Read image +with open(IMAGE, "rb") as f: + image_data = f.read() + +response = requests.post(DETECTION_URL, files={"image": image_data}).json() + +pprint.pprint(response) diff --git a/utils/flask_rest_api/restapi.py b/utils/flask_rest_api/restapi.py new file mode 100644 index 00000000..290c6d5c --- /dev/null +++ b/utils/flask_rest_api/restapi.py @@ -0,0 +1,48 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Run a Flask REST API exposing one or more YOLOv5s models +""" + +import argparse +import io + +import torch +from flask import Flask, request +from PIL import Image + +app = Flask(__name__) +models = {} + +DETECTION_URL = "/v1/object-detection/" + + +@app.route(DETECTION_URL, methods=["POST"]) +def predict(model): + if request.method != "POST": + return + + if request.files.get("image"): + # Method 1 + # with request.files["image"] as f: + # im = Image.open(io.BytesIO(f.read())) + + # Method 2 + im_file = request.files["image"] + im_bytes = im_file.read() + im = Image.open(io.BytesIO(im_bytes)) + + if model in models: + results = models[model](im, size=640) # reduce size=320 for faster inference + return results.pandas().xyxy[0].to_json(orient="records") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Flask API exposing YOLOv5 model") + parser.add_argument("--port", default=5000, type=int, help="port number") + parser.add_argument('--model', nargs='+', default=['yolov5s'], help='model(s) to run, i.e. --model yolov5n yolov5s') + opt = parser.parse_args() + + for m in opt.model: + models[m] = torch.hub.load("ultralytics/yolov5", m, force_reload=True, skip_validation=True) + + app.run(host="0.0.0.0", port=opt.port) # debug=True causes Restarting with stat diff --git a/utils/general.py b/utils/general.py old mode 100755 new mode 100644 index 8331e7db..5ec2b5f7 --- a/utils/general.py +++ b/utils/general.py @@ -5,23 +5,31 @@ General utils import contextlib import glob +import inspect import logging +import logging.config import math import os import platform import random import re -import shutil import signal +import subprocess +import sys import time import urllib +from copy import deepcopy +from datetime import datetime from itertools import repeat from multiprocessing.pool import ThreadPool from pathlib import Path from subprocess import check_output -from zipfile import ZipFile +from tarfile import is_tarfile +from typing import Optional +from zipfile import ZipFile, is_zipfile import cv2 +import IPython import numpy as np import pandas as pd import pkg_resources as pkg @@ -29,41 +37,152 @@ import torch import torchvision import yaml +from utils import TryExcept, emojis from utils.downloads import gsutil_getsize from utils.metrics import box_iou, fitness +FILE = Path(__file__).resolve() +ROOT = FILE.parents[1] # YOLOv3 root directory +RANK = int(os.getenv('RANK', -1)) + # Settings +NUM_THREADS = min(8, max(1, os.cpu_count() - 1)) # number of YOLOv3 multiprocessing threads +DATASETS_DIR = Path(os.getenv('YOLOv5_DATASETS_DIR', ROOT.parent / 'datasets')) # global datasets directory +AUTOINSTALL = str(os.getenv('YOLOv5_AUTOINSTALL', True)).lower() == 'true' # global auto-install mode +VERBOSE = str(os.getenv('YOLOv5_VERBOSE', True)).lower() == 'true' # global verbose mode +TQDM_BAR_FORMAT = '{l_bar}{bar:10}{r_bar}' # tqdm bar format +FONT = 'Arial.ttf' # https://ultralytics.com/assets/Arial.ttf + torch.set_printoptions(linewidth=320, precision=5, profile='long') np.set_printoptions(linewidth=320, formatter={'float_kind': '{:11.5g}'.format}) # format short g, %precision=5 pd.options.display.max_columns = 10 cv2.setNumThreads(0) # prevent OpenCV from multithreading (incompatible with PyTorch DataLoader) -os.environ['NUMEXPR_MAX_THREADS'] = str(min(os.cpu_count(), 8)) # NumExpr max threads - -FILE = Path(__file__).resolve() -ROOT = FILE.parents[1] # root directory +os.environ['NUMEXPR_MAX_THREADS'] = str(NUM_THREADS) # NumExpr max threads +os.environ['OMP_NUM_THREADS'] = '1' if platform.system() == 'darwin' else str(NUM_THREADS) # OpenMP (PyTorch and SciPy) -def set_logging(name=None, verbose=True): - # Sets level and returns logger +def is_ascii(s=''): + # Is string composed of all ASCII (no UTF) characters? (note str().isascii() introduced in python 3.7) + s = str(s) # convert list, tuple, None, etc. to str + return len(s.encode().decode('ascii', 'ignore')) == len(s) + + +def is_chinese(s='人工智能'): + # Is string composed of any Chinese characters? + return bool(re.search('[\u4e00-\u9fff]', str(s))) + + +def is_colab(): + # Is environment a Google Colab instance? + return 'google.colab' in sys.modules + + +def is_notebook(): + # Is environment a Jupyter notebook? Verified on Colab, Jupyterlab, Kaggle, Paperspace + ipython_type = str(type(IPython.get_ipython())) + return 'colab' in ipython_type or 'zmqshell' in ipython_type + + +def is_kaggle(): + # Is environment a Kaggle Notebook? + return os.environ.get('PWD') == '/kaggle/working' and os.environ.get('KAGGLE_URL_BASE') == 'https://www.kaggle.com' + + +def is_docker() -> bool: + """Check if the process runs inside a docker container.""" + if Path("/.dockerenv").exists(): + return True + try: # check if docker is in control groups + with open("/proc/self/cgroup") as file: + return any("docker" in line for line in file) + except OSError: + return False + + +def is_writeable(dir, test=False): + # Return True if directory has write permissions, test opening a file with write permissions if test=True + if not test: + return os.access(dir, os.W_OK) # possible issues on Windows + file = Path(dir) / 'tmp.txt' + try: + with open(file, 'w'): # open file with write permissions + pass + file.unlink() # remove file + return True + except OSError: + return False + + +LOGGING_NAME = "yolov5" + + +def set_logging(name=LOGGING_NAME, verbose=True): + # sets up logging for the given name rank = int(os.getenv('RANK', -1)) # rank in world for Multi-GPU trainings - logging.basicConfig(format="%(message)s", level=logging.INFO if (verbose and rank in (-1, 0)) else logging.WARNING) - return logging.getLogger(name) + level = logging.INFO if verbose and rank in {-1, 0} else logging.ERROR + logging.config.dictConfig({ + "version": 1, + "disable_existing_loggers": False, + "formatters": { + name: { + "format": "%(message)s"}}, + "handlers": { + name: { + "class": "logging.StreamHandler", + "formatter": name, + "level": level,}}, + "loggers": { + name: { + "level": level, + "handlers": [name], + "propagate": False,}}}) -LOGGER = set_logging(__name__) # define globally (used in train.py, val.py, detect.py, etc.) +set_logging(LOGGING_NAME) # run before defining LOGGER +LOGGER = logging.getLogger(LOGGING_NAME) # define globally (used in train.py, val.py, detect.py, etc.) +if platform.system() == 'Windows': + for fn in LOGGER.info, LOGGER.warning: + setattr(LOGGER, fn.__name__, lambda x: fn(emojis(x))) # emoji safe logging + + +def user_config_dir(dir='Ultralytics', env_var='YOLOV5_CONFIG_DIR'): + # Return path of user configuration directory. Prefer environment variable if exists. Make dir if required. + env = os.getenv(env_var) + if env: + path = Path(env) # use environment variable + else: + cfg = {'Windows': 'AppData/Roaming', 'Linux': '.config', 'Darwin': 'Library/Application Support'} # 3 OS dirs + path = Path.home() / cfg.get(platform.system(), '') # OS-specific config dir + path = (path if is_writeable(path) else Path('/tmp')) / dir # GCP and AWS lambda fix, only /tmp is writeable + path.mkdir(exist_ok=True) # make if required + return path + + +CONFIG_DIR = user_config_dir() # Ultralytics settings dir class Profile(contextlib.ContextDecorator): - # Usage: @Profile() decorator or 'with Profile():' context manager + # YOLOv3 Profile class. Usage: @Profile() decorator or 'with Profile():' context manager + def __init__(self, t=0.0): + self.t = t + self.cuda = torch.cuda.is_available() + def __enter__(self): - self.start = time.time() + self.start = self.time() + return self def __exit__(self, type, value, traceback): - print(f'Profile results: {time.time() - self.start:.5f}s') + self.dt = self.time() - self.start # delta-time + self.t += self.dt # accumulate dt + + def time(self): + if self.cuda: + torch.cuda.synchronize() + return time.time() class Timeout(contextlib.ContextDecorator): - # Usage: @Timeout(seconds) decorator or 'with Timeout(seconds):' context manager + # YOLOv3 Timeout class. Usage: @Timeout(seconds) decorator or 'with Timeout(seconds):' context manager def __init__(self, seconds, *, timeout_msg='', suppress_timeout_errors=True): self.seconds = int(seconds) self.timeout_message = timeout_msg @@ -73,13 +192,15 @@ class Timeout(contextlib.ContextDecorator): raise TimeoutError(self.timeout_message) def __enter__(self): - signal.signal(signal.SIGALRM, self._timeout_handler) # Set handler for SIGALRM - signal.alarm(self.seconds) # start countdown for SIGALRM to be raised + if platform.system() != 'Windows': # not supported on Windows + signal.signal(signal.SIGALRM, self._timeout_handler) # Set handler for SIGALRM + signal.alarm(self.seconds) # start countdown for SIGALRM to be raised def __exit__(self, exc_type, exc_val, exc_tb): - signal.alarm(0) # Cancel SIGALRM if it's scheduled - if self.suppress and exc_type is TimeoutError: # Suppress TimeoutError - return True + if platform.system() != 'Windows': + signal.alarm(0) # Cancel SIGALRM if it's scheduled + if self.suppress and exc_type is TimeoutError: # Suppress TimeoutError + return True class WorkingDirectory(contextlib.ContextDecorator): @@ -95,40 +216,50 @@ class WorkingDirectory(contextlib.ContextDecorator): os.chdir(self.cwd) -def try_except(func): - # try-except function. Usage: @try_except decorator - def handler(*args, **kwargs): - try: - func(*args, **kwargs) - except Exception as e: - print(e) - - return handler - - def methods(instance): # Get class/instance methods return [f for f in dir(instance) if callable(getattr(instance, f)) and not f.startswith("__")] -def print_args(name, opt): - # Print argparser arguments - LOGGER.info(colorstr(f'{name}: ') + ', '.join(f'{k}={v}' for k, v in vars(opt).items())) +def print_args(args: Optional[dict] = None, show_file=True, show_func=False): + # Print function arguments (optional args dict) + x = inspect.currentframe().f_back # previous frame + file, _, func, _, _ = inspect.getframeinfo(x) + if args is None: # get args automatically + args, _, _, frm = inspect.getargvalues(x) + args = {k: v for k, v in frm.items() if k in args} + try: + file = Path(file).resolve().relative_to(ROOT).with_suffix('') + except ValueError: + file = Path(file).stem + s = (f'{file}: ' if show_file else '') + (f'{func}: ' if show_func else '') + LOGGER.info(colorstr(s) + ', '.join(f'{k}={v}' for k, v in args.items())) -def init_seeds(seed=0): +def init_seeds(seed=0, deterministic=False): # Initialize random number generator (RNG) seeds https://pytorch.org/docs/stable/notes/randomness.html - # cudnn seed 0 settings are slower and more reproducible, else faster and less reproducible - import torch.backends.cudnn as cudnn random.seed(seed) np.random.seed(seed) torch.manual_seed(seed) - cudnn.benchmark, cudnn.deterministic = (False, True) if seed == 0 else (True, False) + torch.cuda.manual_seed(seed) + torch.cuda.manual_seed_all(seed) # for Multi-GPU, exception safe + # torch.backends.cudnn.benchmark = True # AutoBatch problem https://github.com/ultralytics/yolov5/issues/9287 + if deterministic and check_version(torch.__version__, '1.12.0'): # https://github.com/ultralytics/yolov5/pull/8213 + torch.use_deterministic_algorithms(True) + torch.backends.cudnn.deterministic = True + os.environ['CUBLAS_WORKSPACE_CONFIG'] = ':4096:8' + os.environ['PYTHONHASHSEED'] = str(seed) def intersect_dicts(da, db, exclude=()): # Dictionary intersection of matching keys and shapes, omitting 'exclude' keys, using da values - return {k: v for k, v in da.items() if k in db and not any(x in k for x in exclude) and v.shape == db[k].shape} + return {k: v for k, v in da.items() if k in db and all(x not in k for x in exclude) and v.shape == db[k].shape} + + +def get_default_args(func): + # Get func() default arguments + signature = inspect.signature(func) + return {k: v.default for k, v in signature.parameters.items() if v.default is not inspect.Parameter.empty} def get_latest_run(search_dir='.'): @@ -137,76 +268,26 @@ def get_latest_run(search_dir='.'): return max(last_list, key=os.path.getctime) if last_list else '' -def user_config_dir(dir='Ultralytics', env_var='YOLOV3_CONFIG_DIR'): - # Return path of user configuration directory. Prefer environment variable if exists. Make dir if required. - env = os.getenv(env_var) - if env: - path = Path(env) # use environment variable - else: - cfg = {'Windows': 'AppData/Roaming', 'Linux': '.config', 'Darwin': 'Library/Application Support'} # 3 OS dirs - path = Path.home() / cfg.get(platform.system(), '') # OS-specific config dir - path = (path if is_writeable(path) else Path('/tmp')) / dir # GCP and AWS lambda fix, only /tmp is writeable - path.mkdir(exist_ok=True) # make if required - return path +def file_age(path=__file__): + # Return days since last file update + dt = (datetime.now() - datetime.fromtimestamp(Path(path).stat().st_mtime)) # delta + return dt.days # + dt.seconds / 86400 # fractional days -def is_writeable(dir, test=False): - # Return True if directory has write permissions, test opening a file with write permissions if test=True - if test: # method 1 - file = Path(dir) / 'tmp.txt' - try: - with open(file, 'w'): # open file with write permissions - pass - file.unlink() # remove file - return True - except OSError: - return False - else: # method 2 - return os.access(dir, os.R_OK) # possible issues on Windows - - -def is_docker(): - # Is environment a Docker container? - return Path('/workspace').exists() # or Path('/.dockerenv').exists() - - -def is_colab(): - # Is environment a Google Colab instance? - try: - import google.colab - return True - except ImportError: - return False - - -def is_pip(): - # Is file in a pip package? - return 'site-packages' in Path(__file__).resolve().parts - - -def is_ascii(s=''): - # Is string composed of all ASCII (no UTF) characters? (note str().isascii() introduced in python 3.7) - s = str(s) # convert list, tuple, None, etc. to str - return len(s.encode().decode('ascii', 'ignore')) == len(s) - - -def is_chinese(s='人工智能'): - # Is string composed of any Chinese characters? - return re.search('[\u4e00-\u9fff]', s) - - -def emojis(str=''): - # Return platform-dependent emoji-safe version of string - return str.encode().decode('ascii', 'ignore') if platform.system() == 'Windows' else str +def file_date(path=__file__): + # Return human-readable file modification date, i.e. '2021-3-26' + t = datetime.fromtimestamp(Path(path).stat().st_mtime) + return f'{t.year}-{t.month}-{t.day}' def file_size(path): # Return file/dir size (MB) + mb = 1 << 20 # bytes to MiB (1024 ** 2) path = Path(path) if path.is_file(): - return path.stat().st_size / 1E6 + return path.stat().st_size / mb elif path.is_dir(): - return sum(f.stat().st_size for f in path.glob('**/*') if f.is_file()) / 1E6 + return sum(f.stat().st_size for f in path.glob('**/*') if f.is_file()) / mb else: return 0.0 @@ -214,84 +295,123 @@ def file_size(path): def check_online(): # Check internet connectivity import socket + + def run_once(): + # Check once + try: + socket.create_connection(("1.1.1.1", 443), 5) # check host accessibility + return True + except OSError: + return False + + return run_once() or run_once() # check twice to increase robustness to intermittent connectivity issues + + +def git_describe(path=ROOT): # path must be a directory + # Return human-readable git description, i.e. v5.0-5-g3e25f1e https://git-scm.com/docs/git-describe try: - socket.create_connection(("1.1.1.1", 443), 5) # check host accessibility - return True - except OSError: - return False + assert (Path(path) / '.git').is_dir() + return check_output(f'git -C {path} describe --tags --long --always', shell=True).decode()[:-1] + except Exception: + return '' -@try_except +@TryExcept() @WorkingDirectory(ROOT) -def check_git_status(): - # Recommend 'git pull' if code is out of date - msg = ', for updates see https://github.com/ultralytics/yolov3' - print(colorstr('github: '), end='') - assert Path('.git').exists(), 'skipping check (not a git repository)' + msg - assert not is_docker(), 'skipping check (Docker image)' + msg - assert check_online(), 'skipping check (offline)' + msg +def check_git_status(repo='ultralytics/yolov5', branch='master'): + # YOLOv3 status check, recommend 'git pull' if code is out of date + url = f'https://github.com/{repo}' + msg = f', for updates see {url}' + s = colorstr('github: ') # string + assert Path('.git').exists(), s + 'skipping check (not a git repository)' + msg + assert check_online(), s + 'skipping check (offline)' + msg - cmd = 'git fetch && git config --get remote.origin.url' - url = check_output(cmd, shell=True, timeout=5).decode().strip().rstrip('.git') # git fetch - branch = check_output('git rev-parse --abbrev-ref HEAD', shell=True).decode().strip() # checked out - n = int(check_output(f'git rev-list {branch}..origin/master --count', shell=True)) # commits behind - if n > 0: - s = f"⚠️ YOLOv3 is out of date by {n} commit{'s' * (n > 1)}. Use `git pull` or `git clone {url}` to update." + splits = re.split(pattern=r'\s', string=check_output('git remote -v', shell=True).decode()) + matches = [repo in s for s in splits] + if any(matches): + remote = splits[matches.index(True) - 1] else: - s = f'up to date with {url} ✅' - print(emojis(s)) # emoji-safe + remote = 'ultralytics' + check_output(f'git remote add {remote} {url}', shell=True) + check_output(f'git fetch {remote}', shell=True, timeout=5) # git fetch + local_branch = check_output('git rev-parse --abbrev-ref HEAD', shell=True).decode().strip() # checked out + n = int(check_output(f'git rev-list {local_branch}..{remote}/{branch} --count', shell=True)) # commits behind + if n > 0: + pull = 'git pull' if remote == 'origin' else f'git pull {remote} {branch}' + s += f"⚠️ YOLOv3 is out of date by {n} commit{'s' * (n > 1)}. Use `{pull}` or `git clone {url}` to update." + else: + s += f'up to date with {url} ✅' + LOGGER.info(s) -def check_python(minimum='3.6.2'): +@WorkingDirectory(ROOT) +def check_git_info(path='.'): + # YOLOv3 git info check, return {remote, branch, commit} + check_requirements('gitpython') + import git + try: + repo = git.Repo(path) + remote = repo.remotes.origin.url.replace('.git', '') # i.e. 'https://github.com/ultralytics/yolov5' + commit = repo.head.commit.hexsha # i.e. '3134699c73af83aac2a481435550b968d5792c0d' + try: + branch = repo.active_branch.name # i.e. 'main' + except TypeError: # not on any branch + branch = None # i.e. 'detached HEAD' state + return {'remote': remote, 'branch': branch, 'commit': commit} + except git.exc.InvalidGitRepositoryError: # path is not a git dir + return {'remote': None, 'branch': None, 'commit': None} + + +def check_python(minimum='3.7.0'): # Check current python version vs. required python version check_version(platform.python_version(), minimum, name='Python ', hard=True) -def check_version(current='0.0.0', minimum='0.0.0', name='version ', pinned=False, hard=False): +def check_version(current='0.0.0', minimum='0.0.0', name='version ', pinned=False, hard=False, verbose=False): # Check version vs. required version current, minimum = (pkg.parse_version(x) for x in (current, minimum)) result = (current == minimum) if pinned else (current >= minimum) # bool - if hard: # assert min requirements met - assert result, f'{name}{minimum} required by YOLOv3, but {name}{current} is currently installed' - else: - return result + s = f'WARNING ⚠️ {name}{minimum} is required by YOLOv3, but {name}{current} is currently installed' # string + if hard: + assert result, emojis(s) # assert min requirements met + if verbose and not result: + LOGGER.warning(s) + return result -@try_except -def check_requirements(requirements=ROOT / 'requirements.txt', exclude=(), install=True): - # Check installed dependencies meet requirements (pass *.txt file or list of packages) +@TryExcept() +def check_requirements(requirements=ROOT / 'requirements.txt', exclude=(), install=True, cmds=''): + # Check installed dependencies meet YOLOv3 requirements (pass *.txt file or list of packages or single package str) prefix = colorstr('red', 'bold', 'requirements:') check_python() # check python version - if isinstance(requirements, (str, Path)): # requirements.txt file - file = Path(requirements) - assert file.exists(), f"{prefix} {file.resolve()} not found, check failed." + if isinstance(requirements, Path): # requirements.txt file + file = requirements.resolve() + assert file.exists(), f"{prefix} {file} not found, check failed." with file.open() as f: requirements = [f'{x.name}{x.specifier}' for x in pkg.parse_requirements(f) if x.name not in exclude] - else: # list or tuple of packages - requirements = [x for x in requirements if x not in exclude] + elif isinstance(requirements, str): + requirements = [requirements] - n = 0 # number of packages updates + s = '' + n = 0 for r in requirements: try: pkg.require(r) - except Exception as e: # DistributionNotFound or VersionConflict if requirements not met - s = f"{prefix} {r} not found and is required by YOLOv3" - if install: - print(f"{s}, attempting auto-update...") - try: - assert check_online(), f"'pip install {r}' skipped (offline)" - print(check_output(f"pip install '{r}'", shell=True).decode()) - n += 1 - except Exception as e: - print(f'{prefix} {e}') - else: - print(f'{s}. Please install and rerun your command.') + except (pkg.VersionConflict, pkg.DistributionNotFound): # exception if requirements not met + s += f'"{r}" ' + n += 1 - if n: # if packages updated - source = file.resolve() if 'file' in locals() else requirements - s = f"{prefix} {n} package{'s' * (n > 1)} updated per {source}\n" \ - f"{prefix} ⚠️ {colorstr('bold', 'Restart runtime or rerun command for updates to take effect')}\n" - print(emojis(s)) + if s and install and AUTOINSTALL: # check environment variable + LOGGER.info(f"{prefix} YOLOv3 requirement{'s' * (n > 1)} {s}not found, attempting AutoUpdate...") + try: + # assert check_online(), "AutoUpdate skipped (offline)" + LOGGER.info(check_output(f'pip install {s} {cmds}', shell=True).decode()) + source = file if 'file' in locals() else requirements + s = f"{prefix} {n} package{'s' * (n > 1)} updated per {source}\n" \ + f"{prefix} ⚠️ {colorstr('bold', 'Restart runtime or rerun command for updates to take effect')}\n" + LOGGER.info(s) + except Exception as e: + LOGGER.warning(f'{prefix} ❌ {e}') def check_img_size(imgsz, s=32, floor=0): @@ -299,28 +419,30 @@ def check_img_size(imgsz, s=32, floor=0): if isinstance(imgsz, int): # integer i.e. img_size=640 new_size = max(make_divisible(imgsz, int(s)), floor) else: # list i.e. img_size=[640, 480] + imgsz = list(imgsz) # convert to list if tuple new_size = [max(make_divisible(x, int(s)), floor) for x in imgsz] if new_size != imgsz: - print(f'WARNING: --img-size {imgsz} must be multiple of max stride {s}, updating to {new_size}') + LOGGER.warning(f'WARNING ⚠️ --img-size {imgsz} must be multiple of max stride {s}, updating to {new_size}') return new_size -def check_imshow(): +def check_imshow(warn=False): # Check if environment supports image displays try: - assert not is_docker(), 'cv2.imshow() is disabled in Docker environments' - assert not is_colab(), 'cv2.imshow() is disabled in Google Colab environments' + assert not is_notebook() + assert not is_docker() cv2.imshow('test', np.zeros((1, 1, 3))) cv2.waitKey(1) cv2.destroyAllWindows() cv2.waitKey(1) return True except Exception as e: - print(f'WARNING: Environment does not support cv2.imshow() or PIL Image.show() image displays\n{e}') + if warn: + LOGGER.warning(f'WARNING ⚠️ Environment does not support cv2.imshow() or PIL Image.show()\n{e}') return False -def check_suffix(file='yolov3.pt', suffix=('.pt',), msg=''): +def check_suffix(file='yolov5s.pt', suffix=('.pt',), msg=''): # Check file(s) for acceptable suffix if file and suffix: if isinstance(suffix, str): @@ -340,18 +462,21 @@ def check_file(file, suffix=''): # Search/download file (if necessary) and return path check_suffix(file, suffix) # optional file = str(file) # convert to str() - if Path(file).is_file() or file == '': # exists + if os.path.isfile(file) or not file: # exists return file elif file.startswith(('http:/', 'https:/')): # download - url = str(Path(file).as_posix()).replace(':/', '://') # Pathlib turns :// -> :/ + url = file # warning: Pathlib turns :// -> :/ file = Path(urllib.parse.unquote(file).split('?')[0]).name # '%2F' to '/', split https://url.com/file.txt?auth - if Path(file).is_file(): - print(f'Found {url} locally at {file}') # file already exists + if os.path.isfile(file): + LOGGER.info(f'Found {url} locally at {file}') # file already exists else: - print(f'Downloading {url} to {file}...') + LOGGER.info(f'Downloading {url} to {file}...') torch.hub.download_url_to_file(url, file) assert Path(file).exists() and Path(file).stat().st_size > 0, f'File download failed: {url}' # check return file + elif file.startswith('clearml://'): # ClearML Dataset ID + assert 'clearml' in sys.modules, "ClearML is not installed, so cannot use ClearML dataset. Try running 'pip install clearml'." + return file else: # search files = [] for d in 'data', 'models', 'utils': # search directories @@ -361,84 +486,171 @@ def check_file(file, suffix=''): return files[0] # return file +def check_font(font=FONT, progress=False): + # Download font to CONFIG_DIR if necessary + font = Path(font) + file = CONFIG_DIR / font.name + if not font.exists() and not file.exists(): + url = f'https://ultralytics.com/assets/{font.name}' + LOGGER.info(f'Downloading {url} to {file}...') + torch.hub.download_url_to_file(url, str(file), progress=progress) + + def check_dataset(data, autodownload=True): - # Download and/or unzip dataset if not found locally - # Usage: https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128_with_yaml.zip + # Download, check and/or unzip dataset if not found locally # Download (optional) extract_dir = '' - if isinstance(data, (str, Path)) and str(data).endswith('.zip'): # i.e. gs://bucket/dir/coco128.zip - download(data, dir='../datasets', unzip=True, delete=False, curl=False, threads=1) - data = next((Path('../datasets') / Path(data).stem).rglob('*.yaml')) + if isinstance(data, (str, Path)) and (is_zipfile(data) or is_tarfile(data)): + download(data, dir=f'{DATASETS_DIR}/{Path(data).stem}', unzip=True, delete=False, curl=False, threads=1) + data = next((DATASETS_DIR / Path(data).stem).rglob('*.yaml')) extract_dir, autodownload = data.parent, False # Read yaml (optional) if isinstance(data, (str, Path)): - with open(data, errors='ignore') as f: - data = yaml.safe_load(f) # dictionary + data = yaml_load(data) # dictionary - # Parse yaml - path = extract_dir or Path(data.get('path') or '') # optional 'path' default to '.' + # Checks + for k in 'train', 'val', 'names': + assert k in data, emojis(f"data.yaml '{k}:' field missing ❌") + if isinstance(data['names'], (list, tuple)): # old array format + data['names'] = dict(enumerate(data['names'])) # convert to dict + assert all(isinstance(k, int) for k in data['names'].keys()), 'data.yaml names keys must be integers, i.e. 2: car' + data['nc'] = len(data['names']) + + # Resolve paths + path = Path(extract_dir or data.get('path') or '') # optional 'path' default to '.' + if not path.is_absolute(): + path = (ROOT / path).resolve() + data['path'] = path # download scripts for k in 'train', 'val', 'test': if data.get(k): # prepend path - data[k] = str(path / data[k]) if isinstance(data[k], str) else [str(path / x) for x in data[k]] + if isinstance(data[k], str): + x = (path / data[k]).resolve() + if not x.exists() and data[k].startswith('../'): + x = (path / data[k][3:]).resolve() + data[k] = str(x) + else: + data[k] = [str((path / x).resolve()) for x in data[k]] - assert 'nc' in data, "Dataset 'nc' key missing." - if 'names' not in data: - data['names'] = [f'class{i}' for i in range(data['nc'])] # assign class names if missing + # Parse yaml train, val, test, s = (data.get(x) for x in ('train', 'val', 'test', 'download')) if val: val = [Path(x).resolve() for x in (val if isinstance(val, list) else [val])] # val path if not all(x.exists() for x in val): - print('\nWARNING: Dataset not found, nonexistent paths: %s' % [str(x) for x in val if not x.exists()]) - if s and autodownload: # download script - root = path.parent if 'path' in data else '..' # unzip directory i.e. '../' - if s.startswith('http') and s.endswith('.zip'): # URL - f = Path(s).name # filename - print(f'Downloading {s} to {f}...') - torch.hub.download_url_to_file(s, f) - Path(root).mkdir(parents=True, exist_ok=True) # create root - ZipFile(f).extractall(path=root) # unzip - Path(f).unlink() # remove zip - r = None # success - elif s.startswith('bash '): # bash script - print(f'Running {s} ...') - r = os.system(s) - else: # python script - r = exec(s, {'yaml': data}) # return None - print(f"Dataset autodownload {f'success, saved to {root}' if r in (0, None) else 'failure'}\n") - else: - raise Exception('Dataset not found.') - + LOGGER.info('\nDataset not found ⚠️, missing paths %s' % [str(x) for x in val if not x.exists()]) + if not s or not autodownload: + raise Exception('Dataset not found ❌') + t = time.time() + if s.startswith('http') and s.endswith('.zip'): # URL + f = Path(s).name # filename + LOGGER.info(f'Downloading {s} to {f}...') + torch.hub.download_url_to_file(s, f) + Path(DATASETS_DIR).mkdir(parents=True, exist_ok=True) # create root + unzip_file(f, path=DATASETS_DIR) # unzip + Path(f).unlink() # remove zip + r = None # success + elif s.startswith('bash '): # bash script + LOGGER.info(f'Running {s} ...') + r = subprocess.run(s, shell=True) + else: # python script + r = exec(s, {'yaml': data}) # return None + dt = f'({round(time.time() - t, 1)}s)' + s = f"success ✅ {dt}, saved to {colorstr('bold', DATASETS_DIR)}" if r in (0, None) else f"failure {dt} ❌" + LOGGER.info(f"Dataset download {s}") + check_font('Arial.ttf' if is_ascii(data['names']) else 'Arial.Unicode.ttf', progress=True) # download fonts return data # dictionary +def check_amp(model): + # Check PyTorch Automatic Mixed Precision (AMP) functionality. Return True on correct operation + from models.common import AutoShape, DetectMultiBackend + + def amp_allclose(model, im): + # All close FP32 vs AMP results + m = AutoShape(model, verbose=False) # model + a = m(im).xywhn[0] # FP32 inference + m.amp = True + b = m(im).xywhn[0] # AMP inference + return a.shape == b.shape and torch.allclose(a, b, atol=0.1) # close to 10% absolute tolerance + + prefix = colorstr('AMP: ') + device = next(model.parameters()).device # get model device + if device.type in ('cpu', 'mps'): + return False # AMP only used on CUDA devices + f = ROOT / 'data' / 'images' / 'bus.jpg' # image to check + im = f if f.exists() else 'https://ultralytics.com/images/bus.jpg' if check_online() else np.ones((640, 640, 3)) + try: + assert amp_allclose(deepcopy(model), im) or amp_allclose(DetectMultiBackend('yolov5n.pt', device), im) + LOGGER.info(f'{prefix}checks passed ✅') + return True + except Exception: + help_url = 'https://github.com/ultralytics/yolov5/issues/7908' + LOGGER.warning(f'{prefix}checks failed ❌, disabling Automatic Mixed Precision. See {help_url}') + return False + + +def yaml_load(file='data.yaml'): + # Single-line safe yaml loading + with open(file, errors='ignore') as f: + return yaml.safe_load(f) + + +def yaml_save(file='data.yaml', data={}): + # Single-line safe yaml saving + with open(file, 'w') as f: + yaml.safe_dump({k: str(v) if isinstance(v, Path) else v for k, v in data.items()}, f, sort_keys=False) + + +def unzip_file(file, path=None, exclude=('.DS_Store', '__MACOSX')): + # Unzip a *.zip file to path/, excluding files containing strings in exclude list + if path is None: + path = Path(file).parent # default path + with ZipFile(file) as zipObj: + for f in zipObj.namelist(): # list all archived filenames in the zip + if all(x not in f for x in exclude): + zipObj.extract(f, path=path) + + def url2file(url): # Convert URL to filename, i.e. https://url.com/file.txt?auth -> file.txt url = str(Path(url)).replace(':/', '://') # Pathlib turns :// -> :/ - file = Path(urllib.parse.unquote(url)).name.split('?')[0] # '%2F' to '/', split https://url.com/file.txt?auth - return file + return Path(urllib.parse.unquote(url)).name.split('?')[0] # '%2F' to '/', split https://url.com/file.txt?auth -def download(url, dir='.', unzip=True, delete=True, curl=False, threads=1): - # Multi-threaded file download and unzip function, used in data.yaml for autodownload +def download(url, dir='.', unzip=True, delete=True, curl=False, threads=1, retry=3): + # Multithreaded file download and unzip function, used in data.yaml for autodownload def download_one(url, dir): # Download 1 file - f = dir / Path(url).name # filename - if Path(url).is_file(): # exists in current path - Path(url).rename(f) # move to dir - elif not f.exists(): - print(f'Downloading {url} to {f}...') - if curl: - os.system(f"curl -L '{url}' -o '{f}' --retry 9 -C -") # curl download, retry and resume on fail - else: - torch.hub.download_url_to_file(url, f, progress=True) # torch download - if unzip and f.suffix in ('.zip', '.gz'): - print(f'Unzipping {f}...') - if f.suffix == '.zip': - ZipFile(f).extractall(path=dir) # unzip + success = True + if os.path.isfile(url): + f = Path(url) # filename + else: # does not exist + f = dir / Path(url).name + LOGGER.info(f'Downloading {url} to {f}...') + for i in range(retry + 1): + if curl: + s = 'sS' if threads > 1 else '' # silent + r = subprocess.run(f'curl -# -{s}L "{url}" -o "{f}" --retry 9 -C -'.split()) + success = r == 0 + else: + torch.hub.download_url_to_file(url, f, progress=threads == 1) # torch download + success = f.is_file() + if success: + break + elif i < retry: + LOGGER.warning(f'⚠️ Download failure, retrying {i + 1}/{retry} {url}...') + else: + LOGGER.warning(f'❌ Failed to download {url}...') + + if unzip and success and (f.suffix == '.gz' or is_zipfile(f) or is_tarfile(f)): + LOGGER.info(f'Unzipping {f}...') + if is_zipfile(f): + unzip_file(f, dir) # unzip + elif is_tarfile(f): + subprocess.run(['tar', 'xf', f, '--directory', f.parent], check=True) # unzip elif f.suffix == '.gz': - os.system(f'tar xfz {f} --directory {f.parent}') # unzip + subprocess.run(['tar', 'xfz', f, '--directory', f.parent], check=True) # unzip if delete: f.unlink() # remove zip @@ -446,7 +658,7 @@ def download(url, dir='.', unzip=True, delete=True, curl=False, threads=1): dir.mkdir(parents=True, exist_ok=True) # make directory if threads > 1: pool = ThreadPool(threads) - pool.imap(lambda x: download_one(*x), zip(url, repeat(dir))) # multi-threaded + pool.imap(lambda x: download_one(*x), zip(url, repeat(dir))) # multithreaded pool.close() pool.join() else: @@ -455,7 +667,9 @@ def download(url, dir='.', unzip=True, delete=True, curl=False, threads=1): def make_divisible(x, divisor): - # Returns x evenly divisible by divisor + # Returns nearest x divisible by divisor + if isinstance(divisor, torch.Tensor): + divisor = int(divisor.max()) # to int return math.ceil(x / divisor) * divisor @@ -472,25 +686,26 @@ def one_cycle(y1=0.0, y2=1.0, steps=100): def colorstr(*input): # Colors a string https://en.wikipedia.org/wiki/ANSI_escape_code, i.e. colorstr('blue', 'hello world') *args, string = input if len(input) > 1 else ('blue', 'bold', input[0]) # color arguments, string - colors = {'black': '\033[30m', # basic colors - 'red': '\033[31m', - 'green': '\033[32m', - 'yellow': '\033[33m', - 'blue': '\033[34m', - 'magenta': '\033[35m', - 'cyan': '\033[36m', - 'white': '\033[37m', - 'bright_black': '\033[90m', # bright colors - 'bright_red': '\033[91m', - 'bright_green': '\033[92m', - 'bright_yellow': '\033[93m', - 'bright_blue': '\033[94m', - 'bright_magenta': '\033[95m', - 'bright_cyan': '\033[96m', - 'bright_white': '\033[97m', - 'end': '\033[0m', # misc - 'bold': '\033[1m', - 'underline': '\033[4m'} + colors = { + 'black': '\033[30m', # basic colors + 'red': '\033[31m', + 'green': '\033[32m', + 'yellow': '\033[33m', + 'blue': '\033[34m', + 'magenta': '\033[35m', + 'cyan': '\033[36m', + 'white': '\033[37m', + 'bright_black': '\033[90m', # bright colors + 'bright_red': '\033[91m', + 'bright_green': '\033[92m', + 'bright_yellow': '\033[93m', + 'bright_blue': '\033[94m', + 'bright_magenta': '\033[95m', + 'bright_cyan': '\033[96m', + 'bright_white': '\033[97m', + 'end': '\033[0m', # misc + 'bold': '\033[1m', + 'underline': '\033[4m'} return ''.join(colors[x] for x in args) + f'{string}' + colors['end'] @@ -500,7 +715,7 @@ def labels_to_class_weights(labels, nc=80): return torch.Tensor() labels = np.concatenate(labels, 0) # labels.shape = (866643, 5) for COCO - classes = labels[:, 0].astype(np.int) # labels = [class xywh] + classes = labels[:, 0].astype(int) # labels = [class xywh] weights = np.bincount(classes, minlength=nc) # occurrences per class # Prepend gridpoint count (for uCE training) @@ -510,15 +725,14 @@ def labels_to_class_weights(labels, nc=80): weights[weights == 0] = 1 # replace empty bins with 1 weights = 1 / weights # number of targets per class weights /= weights.sum() # normalize - return torch.from_numpy(weights) + return torch.from_numpy(weights).float() def labels_to_image_weights(labels, nc=80, class_weights=np.ones(80)): # Produces image weights based on class_weights and image contents - class_counts = np.array([np.bincount(x[:, 0].astype(np.int), minlength=nc) for x in labels]) - image_weights = (class_weights.reshape(1, nc) * class_counts).sum(1) - # index = random.choices(range(n), weights=image_weights, k=1) # weight image sample - return image_weights + # Usage: index = random.choices(range(n), weights=image_weights, k=1) # weighted image sample + class_counts = np.array([np.bincount(x[:, 0].astype(int), minlength=nc) for x in labels]) + return (class_weights.reshape(1, nc) * class_counts).sum(1) def coco80_to_coco91_class(): # converts 80-index (val2014) to 91-index (paper) @@ -527,59 +741,59 @@ def coco80_to_coco91_class(): # converts 80-index (val2014) to 91-index (paper) # b = np.loadtxt('data/coco_paper.names', dtype='str', delimiter='\n') # x1 = [list(a[i] == b).index(True) + 1 for i in range(80)] # darknet to coco # x2 = [list(b[i] == a).index(True) if any(b[i] == a) else None for i in range(91)] # coco to darknet - x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 67, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 90] - return x + return [ + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 67, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 90] def xyxy2xywh(x): # Convert nx4 boxes from [x1, y1, x2, y2] to [x, y, w, h] where xy1=top-left, xy2=bottom-right y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x) - y[:, 0] = (x[:, 0] + x[:, 2]) / 2 # x center - y[:, 1] = (x[:, 1] + x[:, 3]) / 2 # y center - y[:, 2] = x[:, 2] - x[:, 0] # width - y[:, 3] = x[:, 3] - x[:, 1] # height + y[..., 0] = (x[..., 0] + x[..., 2]) / 2 # x center + y[..., 1] = (x[..., 1] + x[..., 3]) / 2 # y center + y[..., 2] = x[..., 2] - x[..., 0] # width + y[..., 3] = x[..., 3] - x[..., 1] # height return y def xywh2xyxy(x): # Convert nx4 boxes from [x, y, w, h] to [x1, y1, x2, y2] where xy1=top-left, xy2=bottom-right y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x) - y[:, 0] = x[:, 0] - x[:, 2] / 2 # top left x - y[:, 1] = x[:, 1] - x[:, 3] / 2 # top left y - y[:, 2] = x[:, 0] + x[:, 2] / 2 # bottom right x - y[:, 3] = x[:, 1] + x[:, 3] / 2 # bottom right y + y[..., 0] = x[..., 0] - x[..., 2] / 2 # top left x + y[..., 1] = x[..., 1] - x[..., 3] / 2 # top left y + y[..., 2] = x[..., 0] + x[..., 2] / 2 # bottom right x + y[..., 3] = x[..., 1] + x[..., 3] / 2 # bottom right y return y def xywhn2xyxy(x, w=640, h=640, padw=0, padh=0): # Convert nx4 boxes from [x, y, w, h] normalized to [x1, y1, x2, y2] where xy1=top-left, xy2=bottom-right y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x) - y[:, 0] = w * (x[:, 0] - x[:, 2] / 2) + padw # top left x - y[:, 1] = h * (x[:, 1] - x[:, 3] / 2) + padh # top left y - y[:, 2] = w * (x[:, 0] + x[:, 2] / 2) + padw # bottom right x - y[:, 3] = h * (x[:, 1] + x[:, 3] / 2) + padh # bottom right y + y[..., 0] = w * (x[..., 0] - x[..., 2] / 2) + padw # top left x + y[..., 1] = h * (x[..., 1] - x[..., 3] / 2) + padh # top left y + y[..., 2] = w * (x[..., 0] + x[..., 2] / 2) + padw # bottom right x + y[..., 3] = h * (x[..., 1] + x[..., 3] / 2) + padh # bottom right y return y def xyxy2xywhn(x, w=640, h=640, clip=False, eps=0.0): # Convert nx4 boxes from [x1, y1, x2, y2] to [x, y, w, h] normalized where xy1=top-left, xy2=bottom-right if clip: - clip_coords(x, (h - eps, w - eps)) # warning: inplace clip + clip_boxes(x, (h - eps, w - eps)) # warning: inplace clip y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x) - y[:, 0] = ((x[:, 0] + x[:, 2]) / 2) / w # x center - y[:, 1] = ((x[:, 1] + x[:, 3]) / 2) / h # y center - y[:, 2] = (x[:, 2] - x[:, 0]) / w # width - y[:, 3] = (x[:, 3] - x[:, 1]) / h # height + y[..., 0] = ((x[..., 0] + x[..., 2]) / 2) / w # x center + y[..., 1] = ((x[..., 1] + x[..., 3]) / 2) / h # y center + y[..., 2] = (x[..., 2] - x[..., 0]) / w # width + y[..., 3] = (x[..., 3] - x[..., 1]) / h # height return y def xyn2xy(x, w=640, h=640, padw=0, padh=0): # Convert normalized segments into pixel segments, shape (n,2) y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x) - y[:, 0] = w * x[:, 0] + padw # top left x - y[:, 1] = h * x[:, 1] + padh # top left y + y[..., 0] = w * x[..., 0] + padw # top left x + y[..., 1] = h * x[..., 1] + padh # top left y return y @@ -603,13 +817,30 @@ def segments2boxes(segments): def resample_segments(segments, n=1000): # Up-sample an (n,2) segment for i, s in enumerate(segments): + s = np.concatenate((s, s[0:1, :]), axis=0) x = np.linspace(0, len(s) - 1, n) xp = np.arange(len(s)) segments[i] = np.concatenate([np.interp(x, xp, s[:, i]) for i in range(2)]).reshape(2, -1).T # segment xy return segments -def scale_coords(img1_shape, coords, img0_shape, ratio_pad=None): +def scale_boxes(img1_shape, boxes, img0_shape, ratio_pad=None): + # Rescale boxes (xyxy) from img1_shape to img0_shape + if ratio_pad is None: # calculate from img0_shape + gain = min(img1_shape[0] / img0_shape[0], img1_shape[1] / img0_shape[1]) # gain = old / new + pad = (img1_shape[1] - img0_shape[1] * gain) / 2, (img1_shape[0] - img0_shape[0] * gain) / 2 # wh padding + else: + gain = ratio_pad[0][0] + pad = ratio_pad[1] + + boxes[..., [0, 2]] -= pad[0] # x padding + boxes[..., [1, 3]] -= pad[1] # y padding + boxes[..., :4] /= gain + clip_boxes(boxes, img0_shape) + return boxes + + +def scale_segments(img1_shape, segments, img0_shape, ratio_pad=None, normalize=False): # Rescale coords (xyxy) from img1_shape to img0_shape if ratio_pad is None: # calculate from img0_shape gain = min(img1_shape[0] / img0_shape[0], img1_shape[1] / img0_shape[1]) # gain = old / new @@ -618,50 +849,81 @@ def scale_coords(img1_shape, coords, img0_shape, ratio_pad=None): gain = ratio_pad[0][0] pad = ratio_pad[1] - coords[:, [0, 2]] -= pad[0] # x padding - coords[:, [1, 3]] -= pad[1] # y padding - coords[:, :4] /= gain - clip_coords(coords, img0_shape) - return coords + segments[:, 0] -= pad[0] # x padding + segments[:, 1] -= pad[1] # y padding + segments /= gain + clip_segments(segments, img0_shape) + if normalize: + segments[:, 0] /= img0_shape[1] # width + segments[:, 1] /= img0_shape[0] # height + return segments -def clip_coords(boxes, shape): - # Clip bounding xyxy bounding boxes to image shape (height, width) +def clip_boxes(boxes, shape): + # Clip boxes (xyxy) to image shape (height, width) if isinstance(boxes, torch.Tensor): # faster individually - boxes[:, 0].clamp_(0, shape[1]) # x1 - boxes[:, 1].clamp_(0, shape[0]) # y1 - boxes[:, 2].clamp_(0, shape[1]) # x2 - boxes[:, 3].clamp_(0, shape[0]) # y2 + boxes[..., 0].clamp_(0, shape[1]) # x1 + boxes[..., 1].clamp_(0, shape[0]) # y1 + boxes[..., 2].clamp_(0, shape[1]) # x2 + boxes[..., 3].clamp_(0, shape[0]) # y2 else: # np.array (faster grouped) - boxes[:, [0, 2]] = boxes[:, [0, 2]].clip(0, shape[1]) # x1, x2 - boxes[:, [1, 3]] = boxes[:, [1, 3]].clip(0, shape[0]) # y1, y2 + boxes[..., [0, 2]] = boxes[..., [0, 2]].clip(0, shape[1]) # x1, x2 + boxes[..., [1, 3]] = boxes[..., [1, 3]].clip(0, shape[0]) # y1, y2 -def non_max_suppression(prediction, conf_thres=0.25, iou_thres=0.45, classes=None, agnostic=False, multi_label=False, - labels=(), max_det=300): - """Runs Non-Maximum Suppression (NMS) on inference results +def clip_segments(segments, shape): + # Clip segments (xy1,xy2,...) to image shape (height, width) + if isinstance(segments, torch.Tensor): # faster individually + segments[:, 0].clamp_(0, shape[1]) # x + segments[:, 1].clamp_(0, shape[0]) # y + else: # np.array (faster grouped) + segments[:, 0] = segments[:, 0].clip(0, shape[1]) # x + segments[:, 1] = segments[:, 1].clip(0, shape[0]) # y + + +def non_max_suppression( + prediction, + conf_thres=0.25, + iou_thres=0.45, + classes=None, + agnostic=False, + multi_label=False, + labels=(), + max_det=300, + nm=0, # number of masks +): + """Non-Maximum Suppression (NMS) on inference results to reject overlapping detections Returns: list of detections, on (n,6) tensor per image [xyxy, conf, cls] """ - nc = prediction.shape[2] - 5 # number of classes - xc = prediction[..., 4] > conf_thres # candidates - # Checks assert 0 <= conf_thres <= 1, f'Invalid Confidence threshold {conf_thres}, valid values are between 0.0 and 1.0' assert 0 <= iou_thres <= 1, f'Invalid IoU {iou_thres}, valid values are between 0.0 and 1.0' + if isinstance(prediction, (list, tuple)): # YOLOv3 model in validation model, output = (inference_out, loss_out) + prediction = prediction[0] # select only inference output + + device = prediction.device + mps = 'mps' in device.type # Apple MPS + if mps: # MPS not fully supported yet, convert tensors to CPU before NMS + prediction = prediction.cpu() + bs = prediction.shape[0] # batch size + nc = prediction.shape[2] - nm - 5 # number of classes + xc = prediction[..., 4] > conf_thres # candidates # Settings - min_wh, max_wh = 2, 4096 # (pixels) minimum and maximum box width and height + # min_wh = 2 # (pixels) minimum box width and height + max_wh = 7680 # (pixels) maximum box width and height max_nms = 30000 # maximum number of boxes into torchvision.ops.nms() - time_limit = 10.0 # seconds to quit after + time_limit = 0.5 + 0.05 * bs # seconds to quit after redundant = True # require redundant detections multi_label &= nc > 1 # multiple labels per box (adds 0.5ms/img) merge = False # use merge-NMS t = time.time() - output = [torch.zeros((0, 6), device=prediction.device)] * prediction.shape[0] + mi = 5 + nc # mask start index + output = [torch.zeros((0, 6 + nm), device=prediction.device)] * bs for xi, x in enumerate(prediction): # image index, image inference # Apply constraints # x[((x[..., 2:4] < min_wh) | (x[..., 2:4] > max_wh)).any(1), 4] = 0 # width-height @@ -669,11 +931,11 @@ def non_max_suppression(prediction, conf_thres=0.25, iou_thres=0.45, classes=Non # Cat apriori labels if autolabelling if labels and len(labels[xi]): - l = labels[xi] - v = torch.zeros((len(l), nc + 5), device=x.device) - v[:, :4] = l[:, 1:5] # box + lb = labels[xi] + v = torch.zeros((len(lb), nc + nm + 5), device=x.device) + v[:, :4] = lb[:, 1:5] # box v[:, 4] = 1.0 # conf - v[range(len(l)), l[:, 0].long() + 5] = 1.0 # cls + v[range(len(lb)), lb[:, 0].long() + 5] = 1.0 # cls x = torch.cat((x, v), 0) # If none remain process next image @@ -683,16 +945,17 @@ def non_max_suppression(prediction, conf_thres=0.25, iou_thres=0.45, classes=Non # Compute conf x[:, 5:] *= x[:, 4:5] # conf = obj_conf * cls_conf - # Box (center x, center y, width, height) to (x1, y1, x2, y2) - box = xywh2xyxy(x[:, :4]) + # Box/Mask + box = xywh2xyxy(x[:, :4]) # center_x, center_y, width, height) to (x1, y1, x2, y2) + mask = x[:, mi:] # zero columns if no masks # Detections matrix nx6 (xyxy, conf, cls) if multi_label: - i, j = (x[:, 5:] > conf_thres).nonzero(as_tuple=False).T - x = torch.cat((box[i], x[i, j + 5, None], j[:, None].float()), 1) + i, j = (x[:, 5:mi] > conf_thres).nonzero(as_tuple=False).T + x = torch.cat((box[i], x[i, 5 + j, None], j[:, None].float(), mask[i]), 1) else: # best class only - conf, j = x[:, 5:].max(1, keepdim=True) - x = torch.cat((box, conf, j.float()), 1)[conf.view(-1) > conf_thres] + conf, j = x[:, 5:mi].max(1, keepdim=True) + x = torch.cat((box, conf, j.float(), mask), 1)[conf.view(-1) > conf_thres] # Filter by class if classes is not None: @@ -706,15 +969,13 @@ def non_max_suppression(prediction, conf_thres=0.25, iou_thres=0.45, classes=Non n = x.shape[0] # number of boxes if not n: # no boxes continue - elif n > max_nms: # excess boxes - x = x[x[:, 4].argsort(descending=True)[:max_nms]] # sort by confidence + x = x[x[:, 4].argsort(descending=True)[:max_nms]] # sort by confidence and remove excess boxes # Batched NMS c = x[:, 5:6] * (0 if agnostic else max_wh) # classes boxes, scores = x[:, :4] + c, x[:, 4] # boxes (offset by class), scores i = torchvision.ops.nms(boxes, scores, iou_thres) # NMS - if i.shape[0] > max_det: # limit detections - i = i[:max_det] + i = i[:max_det] # limit detections if merge and (1 < n < 3E3): # Merge NMS (boxes merged using weighted mean) # update boxes as boxes(i,4) = weights(i,n) * boxes(n,4) iou = box_iou(boxes[i], boxes) > iou_thres # iou matrix @@ -724,8 +985,10 @@ def non_max_suppression(prediction, conf_thres=0.25, iou_thres=0.45, classes=Non i = i[iou.sum(1) > 1] # require redundancy output[xi] = x[i] + if mps: + output[xi] = output[xi].to(device) if (time.time() - t) > time_limit: - print(f'WARNING: NMS time limit {time_limit}s exceeded') + LOGGER.warning(f'WARNING ⚠️ NMS time limit {time_limit:.3f}s exceeded') break # time limit exceeded return output @@ -736,7 +999,7 @@ def strip_optimizer(f='best.pt', s=''): # from utils.general import *; strip_op x = torch.load(f, map_location=torch.device('cpu')) if x.get('ema'): x['model'] = x['ema'] # replace model with ema - for k in 'optimizer', 'training_results', 'wandb_id', 'ema', 'updates': # keys + for k in 'optimizer', 'best_fitness', 'ema', 'updates': # keys x[k] = None x['epoch'] = -1 x['model'].half() # to FP16 @@ -744,13 +1007,13 @@ def strip_optimizer(f='best.pt', s=''): # from utils.general import *; strip_op p.requires_grad = False torch.save(x, s or f) mb = os.path.getsize(s or f) / 1E6 # filesize - print(f"Optimizer stripped from {f},{(' saved as %s,' % s) if s else ''} {mb:.1f}MB") + LOGGER.info(f"Optimizer stripped from {f},{f' saved as {s},' if s else ''} {mb:.1f}MB") -def print_mutation(results, hyp, save_dir, bucket): - evolve_csv, results_csv, evolve_yaml = save_dir / 'evolve.csv', save_dir / 'results.csv', save_dir / 'hyp_evolve.yaml' - keys = ('metrics/precision', 'metrics/recall', 'metrics/mAP_0.5', 'metrics/mAP_0.5:0.95', - 'val/box_loss', 'val/obj_loss', 'val/cls_loss') + tuple(hyp.keys()) # [results + hyps] +def print_mutation(keys, results, hyp, save_dir, bucket, prefix=colorstr('evolve: ')): + evolve_csv = save_dir / 'evolve.csv' + evolve_yaml = save_dir / 'hyp_evolve.yaml' + keys = tuple(keys) + tuple(hyp.keys()) # [results + hyps] keys = tuple(x.strip() for x in keys) vals = results + tuple(hyp.values()) n = len(keys) @@ -758,32 +1021,32 @@ def print_mutation(results, hyp, save_dir, bucket): # Download (optional) if bucket: url = f'gs://{bucket}/evolve.csv' - if gsutil_getsize(url) > (os.path.getsize(evolve_csv) if os.path.exists(evolve_csv) else 0): - os.system(f'gsutil cp {url} {save_dir}') # download evolve.csv if larger than local + if gsutil_getsize(url) > (evolve_csv.stat().st_size if evolve_csv.exists() else 0): + subprocess.run(['gsutil', 'cp', f'{url}', f'{save_dir}']) # download evolve.csv if larger than local # Log to evolve.csv s = '' if evolve_csv.exists() else (('%20s,' * n % keys).rstrip(',') + '\n') # add header with open(evolve_csv, 'a') as f: f.write(s + ('%20.5g,' * n % vals).rstrip(',') + '\n') - # Print to screen - print(colorstr('evolve: ') + ', '.join(f'{x.strip():>20s}' for x in keys)) - print(colorstr('evolve: ') + ', '.join(f'{x:20.5g}' for x in vals), end='\n\n\n') - # Save yaml with open(evolve_yaml, 'w') as f: - data = pd.read_csv(evolve_csv) + data = pd.read_csv(evolve_csv, skipinitialspace=True) data = data.rename(columns=lambda x: x.strip()) # strip keys - i = np.argmax(fitness(data.values[:, :7])) # - f.write('# YOLOv3 Hyperparameter Evolution Results\n' + - f'# Best generation: {i}\n' + - f'# Last generation: {len(data)}\n' + - '# ' + ', '.join(f'{x.strip():>20s}' for x in keys[:7]) + '\n' + - '# ' + ', '.join(f'{x:>20.5g}' for x in data.values[i, :7]) + '\n\n') - yaml.safe_dump(hyp, f, sort_keys=False) + i = np.argmax(fitness(data.values[:, :4])) # + generations = len(data) + f.write('# YOLOv3 Hyperparameter Evolution Results\n' + f'# Best generation: {i}\n' + + f'# Last generation: {generations - 1}\n' + '# ' + ', '.join(f'{x.strip():>20s}' for x in keys[:7]) + + '\n' + '# ' + ', '.join(f'{x:>20.5g}' for x in data.values[i, :7]) + '\n\n') + yaml.safe_dump(data.loc[i][7:].to_dict(), f, sort_keys=False) + + # Print to screen + LOGGER.info(prefix + f'{generations} generations finished, current result:\n' + prefix + + ', '.join(f'{x.strip():>20s}' for x in keys) + '\n' + prefix + ', '.join(f'{x:20.5g}' + for x in vals) + '\n\n') if bucket: - os.system(f'gsutil cp {evolve_csv} {evolve_yaml} gs://{bucket}') # upload + subprocess.run(['gsutil', 'cp', f'{evolve_csv}', f'{evolve_yaml}', f'gs://{bucket}']) # upload def apply_classifier(x, model, img, im0): @@ -801,15 +1064,14 @@ def apply_classifier(x, model, img, im0): d[:, :4] = xywh2xyxy(b).long() # Rescale boxes from img_size to im0 size - scale_coords(img.shape[2:], d[:, :4], im0[i].shape) + scale_boxes(img.shape[2:], d[:, :4], im0[i].shape) # Classes pred_cls1 = d[:, 5].long() ims = [] - for j, a in enumerate(d): # per item + for a in d: cutout = im0[i][int(a[1]):int(a[3]), int(a[0]):int(a[2])] im = cv2.resize(cutout, (224, 224)) # BGR - # cv2.imwrite('example%i.jpg' % j, cutout) im = im[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416 im = np.ascontiguousarray(im, dtype=np.float32) # uint8 to float32 @@ -827,15 +1089,47 @@ def increment_path(path, exist_ok=False, sep='', mkdir=False): path = Path(path) # os-agnostic if path.exists() and not exist_ok: path, suffix = (path.with_suffix(''), path.suffix) if path.is_file() else (path, '') - dirs = glob.glob(f"{path}{sep}*") # similar paths - matches = [re.search(rf"%s{sep}(\d+)" % path.stem, d) for d in dirs] - i = [int(m.groups()[0]) for m in matches if m] # indices - n = max(i) + 1 if i else 2 # increment number - path = Path(f"{path}{sep}{n}{suffix}") # increment path + + # Method 1 + for n in range(2, 9999): + p = f'{path}{sep}{n}{suffix}' # increment path + if not os.path.exists(p): # + break + path = Path(p) + + # Method 2 (deprecated) + # dirs = glob.glob(f"{path}{sep}*") # similar paths + # matches = [re.search(rf"{path.stem}{sep}(\d+)", d) for d in dirs] + # i = [int(m.groups()[0]) for m in matches if m] # indices + # n = max(i) + 1 if i else 2 # increment number + # path = Path(f"{path}{sep}{n}{suffix}") # increment path + if mkdir: path.mkdir(parents=True, exist_ok=True) # make directory + return path -# Variables -NCOLS = 0 if is_docker() else shutil.get_terminal_size().columns # terminal window size +# OpenCV Multilanguage-friendly functions ------------------------------------------------------------------------------------ +imshow_ = cv2.imshow # copy to avoid recursion errors + + +def imread(path, flags=cv2.IMREAD_COLOR): + return cv2.imdecode(np.fromfile(path, np.uint8), flags) + + +def imwrite(path, im): + try: + cv2.imencode(Path(path).suffix, im)[1].tofile(path) + return True + except Exception: + return False + + +def imshow(path, im): + imshow_(path.encode('unicode_escape').decode(), im) + + +cv2.imread, cv2.imwrite, cv2.imshow = imread, imwrite, imshow # redefine + +# Variables ------------------------------------------------------------------------------------------------------------ diff --git a/utils/google_app_engine/Dockerfile b/utils/google_app_engine/Dockerfile new file mode 100644 index 00000000..0155618f --- /dev/null +++ b/utils/google_app_engine/Dockerfile @@ -0,0 +1,25 @@ +FROM gcr.io/google-appengine/python + +# Create a virtualenv for dependencies. This isolates these packages from +# system-level packages. +# Use -p python3 or -p python3.7 to select python version. Default is version 2. +RUN virtualenv /env -p python3 + +# Setting these environment variables are the same as running +# source /env/bin/activate. +ENV VIRTUAL_ENV /env +ENV PATH /env/bin:$PATH + +RUN apt-get update && apt-get install -y python-opencv + +# Copy the application's requirements.txt and run pip to install all +# dependencies into the virtualenv. +ADD requirements.txt /app/requirements.txt +RUN pip install -r /app/requirements.txt + +# Add the application source code. +ADD . /app + +# Run a WSGI server to serve the application. gunicorn must be declared as +# a dependency in requirements.txt. +CMD gunicorn -b :$PORT main:app diff --git a/utils/google_app_engine/additional_requirements.txt b/utils/google_app_engine/additional_requirements.txt new file mode 100644 index 00000000..b6b496fe --- /dev/null +++ b/utils/google_app_engine/additional_requirements.txt @@ -0,0 +1,4 @@ +# add these requirements in your app on top of the existing ones +pip==21.1 +Flask==1.0.2 +gunicorn==19.10.0 diff --git a/utils/google_app_engine/app.yaml b/utils/google_app_engine/app.yaml new file mode 100644 index 00000000..5056b7c1 --- /dev/null +++ b/utils/google_app_engine/app.yaml @@ -0,0 +1,14 @@ +runtime: custom +env: flex + +service: yolov5app + +liveness_check: + initial_delay_sec: 600 + +manual_scaling: + instances: 1 +resources: + cpu: 1 + memory_gb: 4 + disk_size_gb: 20 diff --git a/utils/loggers/__init__.py b/utils/loggers/__init__.py index a234ce2c..a9a64f0f 100644 --- a/utils/loggers/__init__.py +++ b/utils/loggers/__init__.py @@ -5,25 +5,26 @@ Logging utils import os import warnings -from threading import Thread +from pathlib import Path import pkg_resources as pkg import torch from torch.utils.tensorboard import SummaryWriter -from utils.general import colorstr, emojis +from utils.general import LOGGER, colorstr, cv2 +from utils.loggers.clearml.clearml_utils import ClearmlLogger from utils.loggers.wandb.wandb_utils import WandbLogger -from utils.plots import plot_images, plot_results +from utils.plots import plot_images, plot_labels, plot_results from utils.torch_utils import de_parallel -LOGGERS = ('csv', 'tb', 'wandb') # text-file, TensorBoard, Weights & Biases +LOGGERS = ('csv', 'tb', 'wandb', 'clearml', 'comet') # *.csv, TensorBoard, Weights & Biases, ClearML RANK = int(os.getenv('RANK', -1)) try: import wandb assert hasattr(wandb, '__version__') # verify package import not local dir - if pkg.parse_version(wandb.__version__) >= pkg.parse_version('0.12.2') and RANK in [0, -1]: + if pkg.parse_version(wandb.__version__) >= pkg.parse_version('0.12.2') and RANK in {0, -1}: try: wandb_login_success = wandb.login(timeout=30) except wandb.errors.UsageError: # known non-TTY terminal issue @@ -33,30 +34,64 @@ try: except (ImportError, AssertionError): wandb = None +try: + import clearml + + assert hasattr(clearml, '__version__') # verify package import not local dir +except (ImportError, AssertionError): + clearml = None + +try: + if RANK not in [0, -1]: + comet_ml = None + else: + import comet_ml + + assert hasattr(comet_ml, '__version__') # verify package import not local dir + from utils.loggers.comet import CometLogger + +except (ModuleNotFoundError, ImportError, AssertionError): + comet_ml = None + class Loggers(): - # Loggers class + # YOLOv3 Loggers class def __init__(self, save_dir=None, weights=None, opt=None, hyp=None, logger=None, include=LOGGERS): self.save_dir = save_dir self.weights = weights self.opt = opt self.hyp = hyp + self.plots = not opt.noplots # plot results self.logger = logger # for printing results to console self.include = include - self.keys = ['train/box_loss', 'train/obj_loss', 'train/cls_loss', # train loss - 'metrics/precision', 'metrics/recall', 'metrics/mAP_0.5', 'metrics/mAP_0.5:0.95', # metrics - 'val/box_loss', 'val/obj_loss', 'val/cls_loss', # val loss - 'x/lr0', 'x/lr1', 'x/lr2'] # params + self.keys = [ + 'train/box_loss', + 'train/obj_loss', + 'train/cls_loss', # train loss + 'metrics/precision', + 'metrics/recall', + 'metrics/mAP_0.5', + 'metrics/mAP_0.5:0.95', # metrics + 'val/box_loss', + 'val/obj_loss', + 'val/cls_loss', # val loss + 'x/lr0', + 'x/lr1', + 'x/lr2'] # params + self.best_keys = ['best/epoch', 'best/precision', 'best/recall', 'best/mAP_0.5', 'best/mAP_0.5:0.95'] for k in LOGGERS: setattr(self, k, None) # init empty logger dictionary self.csv = True # always log to csv - # Message - if not wandb: - prefix = colorstr('Weights & Biases: ') - s = f"{prefix}run 'pip install wandb' to automatically track and visualize YOLOv3 🚀 runs (RECOMMENDED)" - print(emojis(s)) - + # Messages + if not clearml: + prefix = colorstr('ClearML: ') + s = f"{prefix}run 'pip install clearml' to automatically track, visualize and remotely train YOLOv3 🚀 in ClearML" + self.logger.info(s) + if not comet_ml: + prefix = colorstr('Comet: ') + s = f"{prefix}run 'pip install comet_ml' to automatically track and visualize YOLOv3 🚀 runs in Comet" + self.logger.info(s) # TensorBoard s = self.save_dir if 'tb' in self.include and not self.opt.evolve: @@ -66,53 +101,127 @@ class Loggers(): # W&B if wandb and 'wandb' in self.include: - wandb_artifact_resume = isinstance(self.opt.resume, str) and self.opt.resume.startswith('wandb-artifact://') - run_id = torch.load(self.weights).get('wandb_id') if self.opt.resume and not wandb_artifact_resume else None self.opt.hyp = self.hyp # add hyperparameters - self.wandb = WandbLogger(self.opt, run_id) + self.wandb = WandbLogger(self.opt) else: self.wandb = None - def on_pretrain_routine_end(self): - # Callback runs on pre-train routine end - paths = self.save_dir.glob('*labels*.jpg') # training labels - if self.wandb: - self.wandb.log({"Labels": [wandb.Image(str(x), caption=x.name) for x in paths]}) + # ClearML + if clearml and 'clearml' in self.include: + try: + self.clearml = ClearmlLogger(self.opt, self.hyp) + except Exception: + self.clearml = None + prefix = colorstr('ClearML: ') + LOGGER.warning(f'{prefix}WARNING ⚠️ ClearML is installed but not configured, skipping ClearML logging.' + f' See https://github.com/ultralytics/yolov5/tree/master/utils/loggers/clearml#readme') - def on_train_batch_end(self, ni, model, imgs, targets, paths, plots, sync_bn): + else: + self.clearml = None + + # Comet + if comet_ml and 'comet' in self.include: + if isinstance(self.opt.resume, str) and self.opt.resume.startswith("comet://"): + run_id = self.opt.resume.split("/")[-1] + self.comet_logger = CometLogger(self.opt, self.hyp, run_id=run_id) + + else: + self.comet_logger = CometLogger(self.opt, self.hyp) + + else: + self.comet_logger = None + + @property + def remote_dataset(self): + # Get data_dict if custom dataset artifact link is provided + data_dict = None + if self.clearml: + data_dict = self.clearml.data_dict + if self.wandb: + data_dict = self.wandb.data_dict + if self.comet_logger: + data_dict = self.comet_logger.data_dict + + return data_dict + + def on_train_start(self): + if self.comet_logger: + self.comet_logger.on_train_start() + + def on_pretrain_routine_start(self): + if self.comet_logger: + self.comet_logger.on_pretrain_routine_start() + + def on_pretrain_routine_end(self, labels, names): + # Callback runs on pre-train routine end + if self.plots: + plot_labels(labels, names, self.save_dir) + paths = self.save_dir.glob('*labels*.jpg') # training labels + if self.wandb: + self.wandb.log({"Labels": [wandb.Image(str(x), caption=x.name) for x in paths]}) + # if self.clearml: + # pass # ClearML saves these images automatically using hooks + if self.comet_logger: + self.comet_logger.on_pretrain_routine_end(paths) + + def on_train_batch_end(self, model, ni, imgs, targets, paths, vals): + log_dict = dict(zip(self.keys[:3], vals)) # Callback runs on train batch end - if plots: - if ni == 0: - if not sync_bn: # tb.add_graph() --sync known issue https://github.com/ultralytics/yolov5/issues/3754 - with warnings.catch_warnings(): - warnings.simplefilter('ignore') # suppress jit trace warning - self.tb.add_graph(torch.jit.trace(de_parallel(model), imgs[0:1], strict=False), []) + # ni: number integrated batches (since train start) + if self.plots: if ni < 3: f = self.save_dir / f'train_batch{ni}.jpg' # filename - Thread(target=plot_images, args=(imgs, targets, paths, f), daemon=True).start() - if self.wandb and ni == 10: + plot_images(imgs, targets, paths, f) + if ni == 0 and self.tb and not self.opt.sync_bn: + log_tensorboard_graph(self.tb, model, imgsz=(self.opt.imgsz, self.opt.imgsz)) + if ni == 10 and (self.wandb or self.clearml): files = sorted(self.save_dir.glob('train*.jpg')) - self.wandb.log({'Mosaics': [wandb.Image(str(f), caption=f.name) for f in files if f.exists()]}) + if self.wandb: + self.wandb.log({'Mosaics': [wandb.Image(str(f), caption=f.name) for f in files if f.exists()]}) + if self.clearml: + self.clearml.log_debug_samples(files, title='Mosaics') + + if self.comet_logger: + self.comet_logger.on_train_batch_end(log_dict, step=ni) def on_train_epoch_end(self, epoch): # Callback runs on train epoch end if self.wandb: self.wandb.current_epoch = epoch + 1 + if self.comet_logger: + self.comet_logger.on_train_epoch_end(epoch) + + def on_val_start(self): + if self.comet_logger: + self.comet_logger.on_val_start() + def on_val_image_end(self, pred, predn, path, names, im): # Callback runs on val image end if self.wandb: self.wandb.val_one_image(pred, predn, path, names, im) + if self.clearml: + self.clearml.log_image_with_boxes(path, pred, names, im) - def on_val_end(self): + def on_val_batch_end(self, batch_i, im, targets, paths, shapes, out): + if self.comet_logger: + self.comet_logger.on_val_batch_end(batch_i, im, targets, paths, shapes, out) + + def on_val_end(self, nt, tp, fp, p, r, f1, ap, ap50, ap_class, confusion_matrix): # Callback runs on val end - if self.wandb: + if self.wandb or self.clearml: files = sorted(self.save_dir.glob('val*.jpg')) + if self.wandb: self.wandb.log({"Validation": [wandb.Image(str(f), caption=f.name) for f in files]}) + if self.clearml: + self.clearml.log_debug_samples(files, title='Validation') + + if self.comet_logger: + self.comet_logger.on_val_end(nt, tp, fp, p, r, f1, ap, ap50, ap_class, confusion_matrix) def on_fit_epoch_end(self, vals, epoch, best_fitness, fi): # Callback runs at the end of each fit (train+val) epoch - x = {k: v for k, v in zip(self.keys, vals)} # dict + x = dict(zip(self.keys, vals)) if self.csv: file = self.save_dir / 'results.csv' n = len(x) + 1 # number of cols @@ -123,37 +232,170 @@ class Loggers(): if self.tb: for k, v in x.items(): self.tb.add_scalar(k, v, epoch) + elif self.clearml: # log to ClearML if TensorBoard not used + for k, v in x.items(): + title, series = k.split('/') + self.clearml.task.get_logger().report_scalar(title, series, v, epoch) if self.wandb: + if best_fitness == fi: + best_results = [epoch] + vals[3:7] + for i, name in enumerate(self.best_keys): + self.wandb.wandb_run.summary[name] = best_results[i] # log best results in the summary self.wandb.log(x) - self.wandb.end_epoch(best_result=best_fitness == fi) + self.wandb.end_epoch() + + if self.clearml: + self.clearml.current_epoch_logged_images = set() # reset epoch image limit + self.clearml.current_epoch += 1 + + if self.comet_logger: + self.comet_logger.on_fit_epoch_end(x, epoch=epoch) def on_model_save(self, last, epoch, final_epoch, best_fitness, fi): # Callback runs on model save event - if self.wandb: - if ((epoch + 1) % self.opt.save_period == 0 and not final_epoch) and self.opt.save_period != -1: + if (epoch + 1) % self.opt.save_period == 0 and not final_epoch and self.opt.save_period != -1: + if self.wandb: self.wandb.log_model(last.parent, self.opt, epoch, fi, best_model=best_fitness == fi) + if self.clearml: + self.clearml.task.update_output_model(model_path=str(last), + model_name='Latest Model', + auto_delete_file=False) - def on_train_end(self, last, best, plots, epoch, results): - # Callback runs on training end - if plots: + if self.comet_logger: + self.comet_logger.on_model_save(last, epoch, final_epoch, best_fitness, fi) + + def on_train_end(self, last, best, epoch, results): + # Callback runs on training end, i.e. saving best model + if self.plots: plot_results(file=self.save_dir / 'results.csv') # save results.png files = ['results.png', 'confusion_matrix.png', *(f'{x}_curve.png' for x in ('F1', 'PR', 'P', 'R'))] files = [(self.save_dir / f) for f in files if (self.save_dir / f).exists()] # filter + self.logger.info(f"Results saved to {colorstr('bold', self.save_dir)}") - if self.tb: - import cv2 + if self.tb and not self.clearml: # These images are already captured by ClearML by now, we don't want doubles for f in files: self.tb.add_image(f.stem, cv2.imread(str(f))[..., ::-1], epoch, dataformats='HWC') if self.wandb: + self.wandb.log(dict(zip(self.keys[3:10], results))) self.wandb.log({"Results": [wandb.Image(str(f), caption=f.name) for f in files]}) # Calling wandb.log. TODO: Refactor this into WandbLogger.log_model if not self.opt.evolve: - wandb.log_artifact(str(best if best.exists() else last), type='model', - name='run_' + self.wandb.wandb_run.id + '_model', + wandb.log_artifact(str(best if best.exists() else last), + type='model', + name=f'run_{self.wandb.wandb_run.id}_model', aliases=['latest', 'best', 'stripped']) - self.wandb.finish_run() - else: - self.wandb.finish_run() - self.wandb = WandbLogger(self.opt) + self.wandb.finish_run() + + if self.clearml and not self.opt.evolve: + self.clearml.task.update_output_model(model_path=str(best if best.exists() else last), + name='Best Model', + auto_delete_file=False) + + if self.comet_logger: + final_results = dict(zip(self.keys[3:10], results)) + self.comet_logger.on_train_end(files, self.save_dir, last, best, epoch, final_results) + + def on_params_update(self, params: dict): + # Update hyperparams or configs of the experiment + if self.wandb: + self.wandb.wandb_run.config.update(params, allow_val_change=True) + if self.comet_logger: + self.comet_logger.on_params_update(params) + + +class GenericLogger: + """ + YOLOv5 General purpose logger for non-task specific logging + Usage: from utils.loggers import GenericLogger; logger = GenericLogger(...) + Arguments + opt: Run arguments + console_logger: Console logger + include: loggers to include + """ + + def __init__(self, opt, console_logger, include=('tb', 'wandb')): + # init default loggers + self.save_dir = Path(opt.save_dir) + self.include = include + self.console_logger = console_logger + self.csv = self.save_dir / 'results.csv' # CSV logger + if 'tb' in self.include: + prefix = colorstr('TensorBoard: ') + self.console_logger.info( + f"{prefix}Start with 'tensorboard --logdir {self.save_dir.parent}', view at http://localhost:6006/") + self.tb = SummaryWriter(str(self.save_dir)) + + if wandb and 'wandb' in self.include: + self.wandb = wandb.init(project=web_project_name(str(opt.project)), + name=None if opt.name == "exp" else opt.name, + config=opt) + else: + self.wandb = None + + def log_metrics(self, metrics, epoch): + # Log metrics dictionary to all loggers + if self.csv: + keys, vals = list(metrics.keys()), list(metrics.values()) + n = len(metrics) + 1 # number of cols + s = '' if self.csv.exists() else (('%23s,' * n % tuple(['epoch'] + keys)).rstrip(',') + '\n') # header + with open(self.csv, 'a') as f: + f.write(s + ('%23.5g,' * n % tuple([epoch] + vals)).rstrip(',') + '\n') + + if self.tb: + for k, v in metrics.items(): + self.tb.add_scalar(k, v, epoch) + + if self.wandb: + self.wandb.log(metrics, step=epoch) + + def log_images(self, files, name='Images', epoch=0): + # Log images to all loggers + files = [Path(f) for f in (files if isinstance(files, (tuple, list)) else [files])] # to Path + files = [f for f in files if f.exists()] # filter by exists + + if self.tb: + for f in files: + self.tb.add_image(f.stem, cv2.imread(str(f))[..., ::-1], epoch, dataformats='HWC') + + if self.wandb: + self.wandb.log({name: [wandb.Image(str(f), caption=f.name) for f in files]}, step=epoch) + + def log_graph(self, model, imgsz=(640, 640)): + # Log model graph to all loggers + if self.tb: + log_tensorboard_graph(self.tb, model, imgsz) + + def log_model(self, model_path, epoch=0, metadata={}): + # Log model to all loggers + if self.wandb: + art = wandb.Artifact(name=f"run_{wandb.run.id}_model", type="model", metadata=metadata) + art.add_file(str(model_path)) + wandb.log_artifact(art) + + def update_params(self, params): + # Update the paramters logged + if self.wandb: + wandb.run.config.update(params, allow_val_change=True) + + +def log_tensorboard_graph(tb, model, imgsz=(640, 640)): + # Log model graph to TensorBoard + try: + p = next(model.parameters()) # for device, type + imgsz = (imgsz, imgsz) if isinstance(imgsz, int) else imgsz # expand + im = torch.zeros((1, 3, *imgsz)).to(p.device).type_as(p) # input image (WARNING: must be zeros, not empty) + with warnings.catch_warnings(): + warnings.simplefilter('ignore') # suppress jit trace warning + tb.add_graph(torch.jit.trace(de_parallel(model), im, strict=False), []) + except Exception as e: + LOGGER.warning(f'WARNING ⚠️ TensorBoard graph visualization failure {e}') + + +def web_project_name(project): + # Convert local project name to web project name + if not project.startswith('runs/train'): + return project + suffix = '-Classify' if project.endswith('-cls') else '-Segment' if project.endswith('-seg') else '' + return f'YOLOv5{suffix}' diff --git a/utils/loggers/clearml/README.md b/utils/loggers/clearml/README.md new file mode 100644 index 00000000..2ca61080 --- /dev/null +++ b/utils/loggers/clearml/README.md @@ -0,0 +1,271 @@ +# ClearML Integration + +Clear|MLClear|ML + +## About ClearML + +[ClearML](https://cutt.ly/yolov5-tutorial-clearml) is an [open-source](https://github.com/allegroai/clearml) toolbox +designed to save you time ⏱️. + +🔨 Track every YOLOv5 training run in the experiment manager + +🔧 Version and easily access your custom training data with the integrated ClearML Data Versioning Tool + +🔦 Remotely train and monitor your YOLOv5 training runs using ClearML Agent + +🔬 Get the very best mAP using ClearML Hyperparameter Optimization + +🔭 Turn your newly trained YOLOv5 model into an API with just a few commands using ClearML Serving + +
+And so much more. It's up to you how many of these tools you want to use, you can stick to the experiment manager, or chain them all together into an impressive pipeline! +
+
+ +![ClearML scalars dashboard](https://github.com/thepycoder/clearml_screenshots/raw/main/experiment_manager_with_compare.gif) + +
+
+ +## 🦾 Setting Things Up + +To keep track of your experiments and/or data, ClearML needs to communicate to a server. You have 2 options to get one: + +Either sign up for free to the [ClearML Hosted Service](https://cutt.ly/yolov5-tutorial-clearml) or you can set up your +own server, see [here](https://clear.ml/docs/latest/docs/deploying_clearml/clearml_server). Even the server is +open-source, so even if you're dealing with sensitive data, you should be good to go! + +1. Install the `clearml` python package: + + ```bash + pip install clearml + ``` + +1. Connect the ClearML SDK to the server + by [creating credentials](https://app.clear.ml/settings/workspace-configuration) (go right top to Settings -> + Workspace -> Create new credentials), then execute the command below and follow the instructions: + + ```bash + clearml-init + ``` + +That's it! You're done 😎 + +
+ +## 🚀 Training YOLOv5 With ClearML + +To enable ClearML experiment tracking, simply install the ClearML pip package. + +```bash +pip install clearml>=1.2.0 +``` + +This will enable integration with the YOLOv5 training script. Every training run from now on, will be captured and +stored by the ClearML experiment manager. + +If you want to change the `project_name` or `task_name`, use the `--project` and `--name` arguments of the `train.py` +script, by default the project will be called `YOLOv5` and the task `Training`. +PLEASE NOTE: ClearML uses `/` as a delimiter for subprojects, so be careful when using `/` in your project name! + +```bash +python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt --cache +``` + +or with custom project and task name: + +```bash +python train.py --project my_project --name my_training --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt --cache +``` + +This will capture: + +- Source code + uncommitted changes +- Installed packages +- (Hyper)parameters +- Model files (use `--save-period n` to save a checkpoint every n epochs) +- Console output +- Scalars (mAP_0.5, mAP_0.5:0.95, precision, recall, losses, learning rates, ...) +- General info such as machine details, runtime, creation date etc. +- All produced plots such as label correlogram and confusion matrix +- Images with bounding boxes per epoch +- Mosaic per epoch +- Validation images per epoch +- ... + +That's a lot right? 🤯 +Now, we can visualize all of this information in the ClearML UI to get an overview of our training progress. Add custom +columns to the table view (such as e.g. mAP_0.5) so you can easily sort on the best performing model. Or select multiple +experiments and directly compare them! + +There even more we can do with all of this information, like hyperparameter optimization and remote execution, so keep +reading if you want to see how that works! + +
+ +## 🔗 Dataset Version Management + +Versioning your data separately from your code is generally a good idea and makes it easy to acquire the latest version +too. This repository supports supplying a dataset version ID, and it will make sure to get the data if it's not there +yet. Next to that, this workflow also saves the used dataset ID as part of the task parameters, so you will always know +for sure which data was used in which experiment! + +![ClearML Dataset Interface](https://github.com/thepycoder/clearml_screenshots/raw/main/clearml_data.gif) + +### Prepare Your Dataset + +The YOLOv5 repository supports a number of different datasets by using yaml files containing their information. By +default datasets are downloaded to the `../datasets` folder in relation to the repository root folder. So if you +downloaded the `coco128` dataset using the link in the yaml or with the scripts provided by yolov5, you get this folder +structure: + +``` +.. +|_ yolov5 +|_ datasets + |_ coco128 + |_ images + |_ labels + |_ LICENSE + |_ README.txt +``` + +But this can be any dataset you wish. Feel free to use your own, as long as you keep to this folder structure. + +Next, ⚠️**copy the corresponding yaml file to the root of the dataset folder**⚠️. This yaml files contains the +information ClearML will need to properly use the dataset. You can make this yourself too, of course, just follow the +structure of the example yamls. + +Basically we need the following keys: `path`, `train`, `test`, `val`, `nc`, `names`. + +``` +.. +|_ yolov5 +|_ datasets + |_ coco128 + |_ images + |_ labels + |_ coco128.yaml # <---- HERE! + |_ LICENSE + |_ README.txt +``` + +### Upload Your Dataset + +To get this dataset into ClearML as a versioned dataset, go to the dataset root folder and run the following command: + +```bash +cd coco128 +clearml-data sync --project YOLOv5 --name coco128 --folder . +``` + +The command `clearml-data sync` is actually a shorthand command. You could also run these commands one after the other: + +```bash +# Optionally add --parent if you want to base +# this version on another dataset version, so no duplicate files are uploaded! +clearml-data create --name coco128 --project YOLOv5 +clearml-data add --files . +clearml-data close +``` + +### Run Training Using A ClearML Dataset + +Now that you have a ClearML dataset, you can very simply use it to train custom YOLOv5 🚀 models! + +```bash +python train.py --img 640 --batch 16 --epochs 3 --data clearml:// --weights yolov5s.pt --cache +``` + +
+ +## 👀 Hyperparameter Optimization + +Now that we have our experiments and data versioned, it's time to take a look at what we can build on top! + +Using the code information, installed packages and environment details, the experiment itself is now **completely +reproducible**. In fact, ClearML allows you to clone an experiment and even change its parameters. We can then just +rerun it with these new parameters automatically, this is basically what HPO does! + +To **run hyperparameter optimization locally**, we've included a pre-made script for you. Just make sure a training task +has been run at least once, so it is in the ClearML experiment manager, we will essentially clone it and change its +hyperparameters. + +You'll need to fill in the ID of this `template task` in the script found at `utils/loggers/clearml/hpo.py` and then +just run it :) You can change `task.execute_locally()` to `task.execute()` to put it in a ClearML queue and have a +remote agent work on it instead. + +```bash +# To use optuna, install it first, otherwise you can change the optimizer to just be RandomSearch +pip install optuna +python utils/loggers/clearml/hpo.py +``` + +![HPO](https://github.com/thepycoder/clearml_screenshots/raw/main/hpo.png) + +## 🤯 Remote Execution (advanced) + +Running HPO locally is really handy, but what if we want to run our experiments on a remote machine instead? Maybe you +have access to a very powerful GPU machine on-site, or you have some budget to use cloud GPUs. +This is where the ClearML Agent comes into play. Check out what the agent can do here: + +- [YouTube video](https://youtu.be/MX3BrXnaULs) +- [Documentation](https://clear.ml/docs/latest/docs/clearml_agent) + +In short: every experiment tracked by the experiment manager contains enough information to reproduce it on a different +machine (installed packages, uncommitted changes etc.). So a ClearML agent does just that: it listens to a queue for +incoming tasks and when it finds one, it recreates the environment and runs it while still reporting scalars, plots etc. +to the experiment manager. + +You can turn any machine (a cloud VM, a local GPU machine, your own laptop ... ) into a ClearML agent by simply running: + +```bash +clearml-agent daemon --queue [--docker] +``` + +### Cloning, Editing And Enqueuing + +With our agent running, we can give it some work. Remember from the HPO section that we can clone a task and edit the +hyperparameters? We can do that from the interface too! + +🪄 Clone the experiment by right-clicking it + +🎯 Edit the hyperparameters to what you wish them to be + +⏳ Enqueue the task to any of the queues by right-clicking it + +![Enqueue a task from the UI](https://github.com/thepycoder/clearml_screenshots/raw/main/enqueue.gif) + +### Executing A Task Remotely + +Now you can clone a task like we explained above, or simply mark your current script by adding `task.execute_remotely()` +and on execution it will be put into a queue, for the agent to start working on! + +To run the YOLOv5 training script remotely, all you have to do is add this line to the training.py script after the +clearml logger has been instantiated: + +```python +# ... +# Loggers +data_dict = None +if RANK in {-1, 0}: + loggers = Loggers(save_dir, weights, opt, hyp, LOGGER) # loggers instance + if loggers.clearml: + loggers.clearml.task.execute_remotely(queue="my_queue") # <------ ADD THIS LINE + # Data_dict is either None is user did not choose for ClearML dataset or is filled in by ClearML + data_dict = loggers.clearml.data_dict +# ... +``` + +When running the training script after this change, python will run the script up until that line, after which it will +package the code and send it to the queue instead! + +### Autoscaling workers + +ClearML comes with autoscalers too! This tool will automatically spin up new remote machines in the cloud of your +choice (AWS, GCP, Azure) and turn them into ClearML agents for you whenever there are experiments detected in the queue. +Once the tasks are processed, the autoscaler will automatically shut down the remote machines, and you stop paying! + +Check out the autoscalers getting started video below. + +[![Watch the video](https://img.youtube.com/vi/j4XVMAaUt3E/0.jpg)](https://youtu.be/j4XVMAaUt3E) diff --git a/utils/loggers/clearml/__init__.py b/utils/loggers/clearml/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/utils/loggers/clearml/clearml_utils.py b/utils/loggers/clearml/clearml_utils.py new file mode 100644 index 00000000..3457727a --- /dev/null +++ b/utils/loggers/clearml/clearml_utils.py @@ -0,0 +1,164 @@ +"""Main Logger class for ClearML experiment tracking.""" +import glob +import re +from pathlib import Path + +import numpy as np +import yaml + +from utils.plots import Annotator, colors + +try: + import clearml + from clearml import Dataset, Task + + assert hasattr(clearml, '__version__') # verify package import not local dir +except (ImportError, AssertionError): + clearml = None + + +def construct_dataset(clearml_info_string): + """Load in a clearml dataset and fill the internal data_dict with its contents. + """ + dataset_id = clearml_info_string.replace('clearml://', '') + dataset = Dataset.get(dataset_id=dataset_id) + dataset_root_path = Path(dataset.get_local_copy()) + + # We'll search for the yaml file definition in the dataset + yaml_filenames = list(glob.glob(str(dataset_root_path / "*.yaml")) + glob.glob(str(dataset_root_path / "*.yml"))) + if len(yaml_filenames) > 1: + raise ValueError('More than one yaml file was found in the dataset root, cannot determine which one contains ' + 'the dataset definition this way.') + elif len(yaml_filenames) == 0: + raise ValueError('No yaml definition found in dataset root path, check that there is a correct yaml file ' + 'inside the dataset root path.') + with open(yaml_filenames[0]) as f: + dataset_definition = yaml.safe_load(f) + + assert set(dataset_definition.keys()).issuperset( + {'train', 'test', 'val', 'nc', 'names'} + ), "The right keys were not found in the yaml file, make sure it at least has the following keys: ('train', 'test', 'val', 'nc', 'names')" + + data_dict = dict() + data_dict['train'] = str( + (dataset_root_path / dataset_definition['train']).resolve()) if dataset_definition['train'] else None + data_dict['test'] = str( + (dataset_root_path / dataset_definition['test']).resolve()) if dataset_definition['test'] else None + data_dict['val'] = str( + (dataset_root_path / dataset_definition['val']).resolve()) if dataset_definition['val'] else None + data_dict['nc'] = dataset_definition['nc'] + data_dict['names'] = dataset_definition['names'] + + return data_dict + + +class ClearmlLogger: + """Log training runs, datasets, models, and predictions to ClearML. + + This logger sends information to ClearML at app.clear.ml or to your own hosted server. By default, + this information includes hyperparameters, system configuration and metrics, model metrics, code information and + basic data metrics and analyses. + + By providing additional command line arguments to train.py, datasets, + models and predictions can also be logged. + """ + + def __init__(self, opt, hyp): + """ + - Initialize ClearML Task, this object will capture the experiment + - Upload dataset version to ClearML Data if opt.upload_dataset is True + + arguments: + opt (namespace) -- Commandline arguments for this run + hyp (dict) -- Hyperparameters for this run + + """ + self.current_epoch = 0 + # Keep tracked of amount of logged images to enforce a limit + self.current_epoch_logged_images = set() + # Maximum number of images to log to clearML per epoch + self.max_imgs_to_log_per_epoch = 16 + # Get the interval of epochs when bounding box images should be logged + self.bbox_interval = opt.bbox_interval + self.clearml = clearml + self.task = None + self.data_dict = None + if self.clearml: + self.task = Task.init( + project_name=opt.project if opt.project != 'runs/train' else 'YOLOv5', + task_name=opt.name if opt.name != 'exp' else 'Training', + tags=['YOLOv5'], + output_uri=True, + reuse_last_task_id=opt.exist_ok, + auto_connect_frameworks={'pytorch': False} + # We disconnect pytorch auto-detection, because we added manual model save points in the code + ) + # ClearML's hooks will already grab all general parameters + # Only the hyperparameters coming from the yaml config file + # will have to be added manually! + self.task.connect(hyp, name='Hyperparameters') + self.task.connect(opt, name='Args') + + # Make sure the code is easily remotely runnable by setting the docker image to use by the remote agent + self.task.set_base_docker("ultralytics/yolov5:latest", + docker_arguments='--ipc=host -e="CLEARML_AGENT_SKIP_PYTHON_ENV_INSTALL=1"', + docker_setup_bash_script='pip install clearml') + + # Get ClearML Dataset Version if requested + if opt.data.startswith('clearml://'): + # data_dict should have the following keys: + # names, nc (number of classes), test, train, val (all three relative paths to ../datasets) + self.data_dict = construct_dataset(opt.data) + # Set data to data_dict because wandb will crash without this information and opt is the best way + # to give it to them + opt.data = self.data_dict + + def log_debug_samples(self, files, title='Debug Samples'): + """ + Log files (images) as debug samples in the ClearML task. + + arguments: + files (List(PosixPath)) a list of file paths in PosixPath format + title (str) A title that groups together images with the same values + """ + for f in files: + if f.exists(): + it = re.search(r'_batch(\d+)', f.name) + iteration = int(it.groups()[0]) if it else 0 + self.task.get_logger().report_image(title=title, + series=f.name.replace(it.group(), ''), + local_path=str(f), + iteration=iteration) + + def log_image_with_boxes(self, image_path, boxes, class_names, image, conf_threshold=0.25): + """ + Draw the bounding boxes on a single image and report the result as a ClearML debug sample. + + arguments: + image_path (PosixPath) the path the original image file + boxes (list): list of scaled predictions in the format - [xmin, ymin, xmax, ymax, confidence, class] + class_names (dict): dict containing mapping of class int to class name + image (Tensor): A torch tensor containing the actual image data + """ + if len(self.current_epoch_logged_images) < self.max_imgs_to_log_per_epoch and self.current_epoch >= 0: + # Log every bbox_interval times and deduplicate for any intermittend extra eval runs + if self.current_epoch % self.bbox_interval == 0 and image_path not in self.current_epoch_logged_images: + im = np.ascontiguousarray(np.moveaxis(image.mul(255).clamp(0, 255).byte().cpu().numpy(), 0, 2)) + annotator = Annotator(im=im, pil=True) + for i, (conf, class_nr, box) in enumerate(zip(boxes[:, 4], boxes[:, 5], boxes[:, :4])): + color = colors(i) + + class_name = class_names[int(class_nr)] + confidence_percentage = round(float(conf) * 100, 2) + label = f"{class_name}: {confidence_percentage}%" + + if conf > conf_threshold: + annotator.rectangle(box.cpu().numpy(), outline=color) + annotator.box_label(box.cpu().numpy(), label=label, color=color) + + annotated_image = annotator.result() + self.task.get_logger().report_image(title='Bounding Boxes', + series=image_path.name, + iteration=self.current_epoch, + image=annotated_image) + self.current_epoch_logged_images.add(image_path) diff --git a/utils/loggers/clearml/hpo.py b/utils/loggers/clearml/hpo.py new file mode 100644 index 00000000..ee518b0f --- /dev/null +++ b/utils/loggers/clearml/hpo.py @@ -0,0 +1,84 @@ +from clearml import Task +# Connecting ClearML with the current process, +# from here on everything is logged automatically +from clearml.automation import HyperParameterOptimizer, UniformParameterRange +from clearml.automation.optuna import OptimizerOptuna + +task = Task.init(project_name='Hyper-Parameter Optimization', + task_name='YOLOv5', + task_type=Task.TaskTypes.optimizer, + reuse_last_task_id=False) + +# Example use case: +optimizer = HyperParameterOptimizer( + # This is the experiment we want to optimize + base_task_id='', + # here we define the hyper-parameters to optimize + # Notice: The parameter name should exactly match what you see in the UI: / + # For Example, here we see in the base experiment a section Named: "General" + # under it a parameter named "batch_size", this becomes "General/batch_size" + # If you have `argparse` for example, then arguments will appear under the "Args" section, + # and you should instead pass "Args/batch_size" + hyper_parameters=[ + UniformParameterRange('Hyperparameters/lr0', min_value=1e-5, max_value=1e-1), + UniformParameterRange('Hyperparameters/lrf', min_value=0.01, max_value=1.0), + UniformParameterRange('Hyperparameters/momentum', min_value=0.6, max_value=0.98), + UniformParameterRange('Hyperparameters/weight_decay', min_value=0.0, max_value=0.001), + UniformParameterRange('Hyperparameters/warmup_epochs', min_value=0.0, max_value=5.0), + UniformParameterRange('Hyperparameters/warmup_momentum', min_value=0.0, max_value=0.95), + UniformParameterRange('Hyperparameters/warmup_bias_lr', min_value=0.0, max_value=0.2), + UniformParameterRange('Hyperparameters/box', min_value=0.02, max_value=0.2), + UniformParameterRange('Hyperparameters/cls', min_value=0.2, max_value=4.0), + UniformParameterRange('Hyperparameters/cls_pw', min_value=0.5, max_value=2.0), + UniformParameterRange('Hyperparameters/obj', min_value=0.2, max_value=4.0), + UniformParameterRange('Hyperparameters/obj_pw', min_value=0.5, max_value=2.0), + UniformParameterRange('Hyperparameters/iou_t', min_value=0.1, max_value=0.7), + UniformParameterRange('Hyperparameters/anchor_t', min_value=2.0, max_value=8.0), + UniformParameterRange('Hyperparameters/fl_gamma', min_value=0.0, max_value=4.0), + UniformParameterRange('Hyperparameters/hsv_h', min_value=0.0, max_value=0.1), + UniformParameterRange('Hyperparameters/hsv_s', min_value=0.0, max_value=0.9), + UniformParameterRange('Hyperparameters/hsv_v', min_value=0.0, max_value=0.9), + UniformParameterRange('Hyperparameters/degrees', min_value=0.0, max_value=45.0), + UniformParameterRange('Hyperparameters/translate', min_value=0.0, max_value=0.9), + UniformParameterRange('Hyperparameters/scale', min_value=0.0, max_value=0.9), + UniformParameterRange('Hyperparameters/shear', min_value=0.0, max_value=10.0), + UniformParameterRange('Hyperparameters/perspective', min_value=0.0, max_value=0.001), + UniformParameterRange('Hyperparameters/flipud', min_value=0.0, max_value=1.0), + UniformParameterRange('Hyperparameters/fliplr', min_value=0.0, max_value=1.0), + UniformParameterRange('Hyperparameters/mosaic', min_value=0.0, max_value=1.0), + UniformParameterRange('Hyperparameters/mixup', min_value=0.0, max_value=1.0), + UniformParameterRange('Hyperparameters/copy_paste', min_value=0.0, max_value=1.0)], + # this is the objective metric we want to maximize/minimize + objective_metric_title='metrics', + objective_metric_series='mAP_0.5', + # now we decide if we want to maximize it or minimize it (accuracy we maximize) + objective_metric_sign='max', + # let us limit the number of concurrent experiments, + # this in turn will make sure we do dont bombard the scheduler with experiments. + # if we have an auto-scaler connected, this, by proxy, will limit the number of machine + max_number_of_concurrent_tasks=1, + # this is the optimizer class (actually doing the optimization) + # Currently, we can choose from GridSearch, RandomSearch or OptimizerBOHB (Bayesian optimization Hyper-Band) + optimizer_class=OptimizerOptuna, + # If specified only the top K performing Tasks will be kept, the others will be automatically archived + save_top_k_tasks_only=5, # 5, + compute_time_limit=None, + total_max_jobs=20, + min_iteration_per_job=None, + max_iteration_per_job=None, +) + +# report every 10 seconds, this is way too often, but we are testing here +optimizer.set_report_period(10 / 60) +# You can also use the line below instead to run all the optimizer tasks locally, without using queues or agent +# an_optimizer.start_locally(job_complete_callback=job_complete_callback) +# set the time limit for the optimization process (2 hours) +optimizer.set_time_limit(in_minutes=120.0) +# Start the optimization process in the local environment +optimizer.start_locally() +# wait until process is done (notice we are controlling the optimization process in the background) +optimizer.wait() +# make sure background optimization stopped +optimizer.stop() + +print('We are done, good bye') diff --git a/utils/loggers/comet/README.md b/utils/loggers/comet/README.md new file mode 100644 index 00000000..4090cf93 --- /dev/null +++ b/utils/loggers/comet/README.md @@ -0,0 +1,284 @@ + + +# YOLOv5 with Comet + +This guide will cover how to use YOLOv5 with [Comet](https://bit.ly/yolov5-readme-comet2) + +# About Comet + +Comet builds tools that help data scientists, engineers, and team leaders accelerate and optimize machine learning and +deep learning models. + +Track and visualize model metrics in real time, save your hyperparameters, datasets, and model checkpoints, and +visualize your model predictions +with [Comet Custom Panels](https://www.comet.com/docs/v2/guides/comet-dashboard/code-panels/about-panels/?utm_source=yolov5&utm_medium=partner&utm_campaign=partner_yolov5_2022&utm_content=github)! +Comet makes sure you never lose track of your work and makes it easy to share results and collaborate across teams of +all sizes! + +# Getting Started + +## Install Comet + +```shell +pip install comet_ml +``` + +## Configure Comet Credentials + +There are two ways to configure Comet with YOLOv5. + +You can either set your credentials through environment variables + +**Environment Variables** + +```shell +export COMET_API_KEY= +export COMET_PROJECT_NAME= # This will default to 'yolov5' +``` + +Or create a `.comet.config` file in your working directory and set your credentials there. + +**Comet Configuration File** + +``` +[comet] +api_key= +project_name= # This will default to 'yolov5' +``` + +## Run the Training Script + +```shell +# Train YOLOv5s on COCO128 for 5 epochs +python train.py --img 640 --batch 16 --epochs 5 --data coco128.yaml --weights yolov5s.pt +``` + +That's it! Comet will automatically log your hyperparameters, command line arguments, training and validation metrics. +You can visualize and analyze your runs in the Comet UI + +yolo-ui + +# Try out an Example! + +Check out an example of +a [completed run here](https://www.comet.com/examples/comet-example-yolov5/a0e29e0e9b984e4a822db2a62d0cb357?experiment-tab=chart&showOutliers=true&smoothing=0&transformY=smoothing&xAxis=step&utm_source=yolov5&utm_medium=partner&utm_campaign=partner_yolov5_2022&utm_content=github) + +Or better yet, try it out yourself in this Colab Notebook + +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1RG0WOQyxlDlo5Km8GogJpIEJlg_5lyYO?usp=sharing) + +# Log automatically + +By default, Comet will log the following items + +## Metrics + +- Box Loss, Object Loss, Classification Loss for the training and validation data +- mAP_0.5, mAP_0.5:0.95 metrics for the validation data. +- Precision and Recall for the validation data + +## Parameters + +- Model Hyperparameters +- All parameters passed through the command line options + +## Visualizations + +- Confusion Matrix of the model predictions on the validation data +- Plots for the PR and F1 curves across all classes +- Correlogram of the Class Labels + +# Configure Comet Logging + +Comet can be configured to log additional data either through command line flags passed to the training script +or through environment variables. + +```shell +export COMET_MODE=online # Set whether to run Comet in 'online' or 'offline' mode. Defaults to online +export COMET_MODEL_NAME= #Set the name for the saved model. Defaults to yolov5 +export COMET_LOG_CONFUSION_MATRIX=false # Set to disable logging a Comet Confusion Matrix. Defaults to true +export COMET_MAX_IMAGE_UPLOADS= # Controls how many total image predictions to log to Comet. Defaults to 100. +export COMET_LOG_PER_CLASS_METRICS=true # Set to log evaluation metrics for each detected class at the end of training. Defaults to false +export COMET_DEFAULT_CHECKPOINT_FILENAME= # Set this if you would like to resume training from a different checkpoint. Defaults to 'last.pt' +export COMET_LOG_BATCH_LEVEL_METRICS=true # Set this if you would like to log training metrics at the batch level. Defaults to false. +export COMET_LOG_PREDICTIONS=true # Set this to false to disable logging model predictions +``` + +## Logging Checkpoints with Comet + +Logging Models to Comet is disabled by default. To enable it, pass the `save-period` argument to the training script. +This will save the +logged checkpoints to Comet based on the interval value provided by `save-period` + +```shell +python train.py \ +--img 640 \ +--batch 16 \ +--epochs 5 \ +--data coco128.yaml \ +--weights yolov5s.pt \ +--save-period 1 +``` + +## Logging Model Predictions + +By default, model predictions (images, ground truth labels and bounding boxes) will be logged to Comet. + +You can control the frequency of logged predictions and the associated images by passing the `bbox_interval` command +line argument. Predictions can be visualized using Comet's Object Detection Custom Panel. This frequency corresponds to +every Nth batch of data per epoch. In the example below, we are logging every 2nd batch of data for each epoch. + +**Note:** The YOLOv5 validation dataloader will default to a batch size of 32, so you will have to set the logging +frequency accordingly. + +Here is +an [example project using the Panel](https://www.comet.com/examples/comet-example-yolov5?shareable=YcwMiJaZSXfcEXpGOHDD12vA1&utm_source=yolov5&utm_medium=partner&utm_campaign=partner_yolov5_2022&utm_content=github) + +```shell +python train.py \ +--img 640 \ +--batch 16 \ +--epochs 5 \ +--data coco128.yaml \ +--weights yolov5s.pt \ +--bbox_interval 2 +``` + +### Controlling the number of Prediction Images logged to Comet + +When logging predictions from YOLOv5, Comet will log the images associated with each set of predictions. By default a +maximum of 100 validation images are logged. You can increase or decrease this number using +the `COMET_MAX_IMAGE_UPLOADS` environment variable. + +```shell +env COMET_MAX_IMAGE_UPLOADS=200 python train.py \ +--img 640 \ +--batch 16 \ +--epochs 5 \ +--data coco128.yaml \ +--weights yolov5s.pt \ +--bbox_interval 1 +``` + +### Logging Class Level Metrics + +Use the `COMET_LOG_PER_CLASS_METRICS` environment variable to log mAP, precision, recall, f1 for each class. + +```shell +env COMET_LOG_PER_CLASS_METRICS=true python train.py \ +--img 640 \ +--batch 16 \ +--epochs 5 \ +--data coco128.yaml \ +--weights yolov5s.pt +``` + +## Uploading a Dataset to Comet Artifacts + +If you would like to store your data +using [Comet Artifacts](https://www.comet.com/docs/v2/guides/data-management/using-artifacts/#learn-more?utm_source=yolov5&utm_medium=partner&utm_campaign=partner_yolov5_2022&utm_content=github), +you can do so using the `upload_dataset` flag. + +The dataset be organized in the way described in +the [YOLOv5 documentation](https://docs.ultralytics.com/tutorials/train-custom-datasets/#3-organize-directories). The +dataset config `yaml` file must follow the same format as that of the `coco128.yaml` file. + +```shell +python train.py \ +--img 640 \ +--batch 16 \ +--epochs 5 \ +--data coco128.yaml \ +--weights yolov5s.pt \ +--upload_dataset +``` + +You can find the uploaded dataset in the Artifacts tab in your Comet Workspace +artifact-1 + +You can preview the data directly in the Comet UI. +artifact-2 + +Artifacts are versioned and also support adding metadata about the dataset. Comet will automatically log the metadata +from your dataset `yaml` file +artifact-3 + +### Using a saved Artifact + +If you would like to use a dataset from Comet Artifacts, set the `path` variable in your dataset `yaml` file to point to +the following Artifact resource URL. + +``` +# contents of artifact.yaml file +path: "comet:///:" +``` + +Then pass this file to your training script in the following way + +```shell +python train.py \ +--img 640 \ +--batch 16 \ +--epochs 5 \ +--data artifact.yaml \ +--weights yolov5s.pt +``` + +Artifacts also allow you to track the lineage of data as it flows through your Experimentation workflow. Here you can +see a graph that shows you all the experiments that have used your uploaded dataset. +artifact-4 + +## Resuming a Training Run + +If your training run is interrupted for any reason, e.g. disrupted internet connection, you can resume the run using +the `resume` flag and the Comet Run Path. + +The Run Path has the following format `comet:////`. + +This will restore the run to its state before the interruption, which includes restoring the model from a checkpoint, +restoring all hyperparameters and training arguments and downloading Comet dataset Artifacts if they were used in the +original run. The resumed run will continue logging to the existing Experiment in the Comet UI + +```shell +python train.py \ +--resume "comet://" +``` + +## Hyperparameter Search with the Comet Optimizer + +YOLOv5 is also integrated with Comet's Optimizer, making is simple to visualize hyperparameter sweeps in the Comet UI. + +### Configuring an Optimizer Sweep + +To configure the Comet Optimizer, you will have to create a JSON file with the information about the sweep. An example +file has been provided in `utils/loggers/comet/optimizer_config.json` + +```shell +python utils/loggers/comet/hpo.py \ + --comet_optimizer_config "utils/loggers/comet/optimizer_config.json" +``` + +The `hpo.py` script accepts the same arguments as `train.py`. If you wish to pass additional arguments to your sweep +simply add them after +the script. + +```shell +python utils/loggers/comet/hpo.py \ + --comet_optimizer_config "utils/loggers/comet/optimizer_config.json" \ + --save-period 1 \ + --bbox_interval 1 +``` + +### Running a Sweep in Parallel + +```shell +comet optimizer -j utils/loggers/comet/hpo.py \ + utils/loggers/comet/optimizer_config.json" +``` + +### Visualizing Results + +Comet provides a number of ways to visualize the results of your sweep. Take a look at +a [project with a completed sweep here](https://www.comet.com/examples/comet-example-yolov5/view/PrlArHGuuhDTKC1UuBmTtOSXD/panels?utm_source=yolov5&utm_medium=partner&utm_campaign=partner_yolov5_2022&utm_content=github) + +hyperparameter-yolo diff --git a/utils/loggers/comet/__init__.py b/utils/loggers/comet/__init__.py new file mode 100644 index 00000000..b0318f88 --- /dev/null +++ b/utils/loggers/comet/__init__.py @@ -0,0 +1,508 @@ +import glob +import json +import logging +import os +import sys +from pathlib import Path + +logger = logging.getLogger(__name__) + +FILE = Path(__file__).resolve() +ROOT = FILE.parents[3] # YOLOv5 root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH + +try: + import comet_ml + + # Project Configuration + config = comet_ml.config.get_config() + COMET_PROJECT_NAME = config.get_string(os.getenv("COMET_PROJECT_NAME"), "comet.project_name", default="yolov5") +except (ModuleNotFoundError, ImportError): + comet_ml = None + COMET_PROJECT_NAME = None + +import PIL +import torch +import torchvision.transforms as T +import yaml + +from utils.dataloaders import img2label_paths +from utils.general import check_dataset, scale_boxes, xywh2xyxy +from utils.metrics import box_iou + +COMET_PREFIX = "comet://" + +COMET_MODE = os.getenv("COMET_MODE", "online") + +# Model Saving Settings +COMET_MODEL_NAME = os.getenv("COMET_MODEL_NAME", "yolov5") + +# Dataset Artifact Settings +COMET_UPLOAD_DATASET = os.getenv("COMET_UPLOAD_DATASET", "false").lower() == "true" + +# Evaluation Settings +COMET_LOG_CONFUSION_MATRIX = os.getenv("COMET_LOG_CONFUSION_MATRIX", "true").lower() == "true" +COMET_LOG_PREDICTIONS = os.getenv("COMET_LOG_PREDICTIONS", "true").lower() == "true" +COMET_MAX_IMAGE_UPLOADS = int(os.getenv("COMET_MAX_IMAGE_UPLOADS", 100)) + +# Confusion Matrix Settings +CONF_THRES = float(os.getenv("CONF_THRES", 0.001)) +IOU_THRES = float(os.getenv("IOU_THRES", 0.6)) + +# Batch Logging Settings +COMET_LOG_BATCH_METRICS = os.getenv("COMET_LOG_BATCH_METRICS", "false").lower() == "true" +COMET_BATCH_LOGGING_INTERVAL = os.getenv("COMET_BATCH_LOGGING_INTERVAL", 1) +COMET_PREDICTION_LOGGING_INTERVAL = os.getenv("COMET_PREDICTION_LOGGING_INTERVAL", 1) +COMET_LOG_PER_CLASS_METRICS = os.getenv("COMET_LOG_PER_CLASS_METRICS", "false").lower() == "true" + +RANK = int(os.getenv("RANK", -1)) + +to_pil = T.ToPILImage() + + +class CometLogger: + """Log metrics, parameters, source code, models and much more + with Comet + """ + + def __init__(self, opt, hyp, run_id=None, job_type="Training", **experiment_kwargs) -> None: + self.job_type = job_type + self.opt = opt + self.hyp = hyp + + # Comet Flags + self.comet_mode = COMET_MODE + + self.save_model = opt.save_period > -1 + self.model_name = COMET_MODEL_NAME + + # Batch Logging Settings + self.log_batch_metrics = COMET_LOG_BATCH_METRICS + self.comet_log_batch_interval = COMET_BATCH_LOGGING_INTERVAL + + # Dataset Artifact Settings + self.upload_dataset = self.opt.upload_dataset if self.opt.upload_dataset else COMET_UPLOAD_DATASET + self.resume = self.opt.resume + + # Default parameters to pass to Experiment objects + self.default_experiment_kwargs = { + "log_code": False, + "log_env_gpu": True, + "log_env_cpu": True, + "project_name": COMET_PROJECT_NAME,} + self.default_experiment_kwargs.update(experiment_kwargs) + self.experiment = self._get_experiment(self.comet_mode, run_id) + + self.data_dict = self.check_dataset(self.opt.data) + self.class_names = self.data_dict["names"] + self.num_classes = self.data_dict["nc"] + + self.logged_images_count = 0 + self.max_images = COMET_MAX_IMAGE_UPLOADS + + if run_id is None: + self.experiment.log_other("Created from", "YOLOv5") + if not isinstance(self.experiment, comet_ml.OfflineExperiment): + workspace, project_name, experiment_id = self.experiment.url.split("/")[-3:] + self.experiment.log_other( + "Run Path", + f"{workspace}/{project_name}/{experiment_id}", + ) + self.log_parameters(vars(opt)) + self.log_parameters(self.opt.hyp) + self.log_asset_data( + self.opt.hyp, + name="hyperparameters.json", + metadata={"type": "hyp-config-file"}, + ) + self.log_asset( + f"{self.opt.save_dir}/opt.yaml", + metadata={"type": "opt-config-file"}, + ) + + self.comet_log_confusion_matrix = COMET_LOG_CONFUSION_MATRIX + + if hasattr(self.opt, "conf_thres"): + self.conf_thres = self.opt.conf_thres + else: + self.conf_thres = CONF_THRES + if hasattr(self.opt, "iou_thres"): + self.iou_thres = self.opt.iou_thres + else: + self.iou_thres = IOU_THRES + + self.log_parameters({"val_iou_threshold": self.iou_thres, "val_conf_threshold": self.conf_thres}) + + self.comet_log_predictions = COMET_LOG_PREDICTIONS + if self.opt.bbox_interval == -1: + self.comet_log_prediction_interval = 1 if self.opt.epochs < 10 else self.opt.epochs // 10 + else: + self.comet_log_prediction_interval = self.opt.bbox_interval + + if self.comet_log_predictions: + self.metadata_dict = {} + self.logged_image_names = [] + + self.comet_log_per_class_metrics = COMET_LOG_PER_CLASS_METRICS + + self.experiment.log_others({ + "comet_mode": COMET_MODE, + "comet_max_image_uploads": COMET_MAX_IMAGE_UPLOADS, + "comet_log_per_class_metrics": COMET_LOG_PER_CLASS_METRICS, + "comet_log_batch_metrics": COMET_LOG_BATCH_METRICS, + "comet_log_confusion_matrix": COMET_LOG_CONFUSION_MATRIX, + "comet_model_name": COMET_MODEL_NAME,}) + + # Check if running the Experiment with the Comet Optimizer + if hasattr(self.opt, "comet_optimizer_id"): + self.experiment.log_other("optimizer_id", self.opt.comet_optimizer_id) + self.experiment.log_other("optimizer_objective", self.opt.comet_optimizer_objective) + self.experiment.log_other("optimizer_metric", self.opt.comet_optimizer_metric) + self.experiment.log_other("optimizer_parameters", json.dumps(self.hyp)) + + def _get_experiment(self, mode, experiment_id=None): + if mode == "offline": + if experiment_id is not None: + return comet_ml.ExistingOfflineExperiment( + previous_experiment=experiment_id, + **self.default_experiment_kwargs, + ) + + return comet_ml.OfflineExperiment(**self.default_experiment_kwargs,) + + else: + try: + if experiment_id is not None: + return comet_ml.ExistingExperiment( + previous_experiment=experiment_id, + **self.default_experiment_kwargs, + ) + + return comet_ml.Experiment(**self.default_experiment_kwargs) + + except ValueError: + logger.warning("COMET WARNING: " + "Comet credentials have not been set. " + "Comet will default to offline logging. " + "Please set your credentials to enable online logging.") + return self._get_experiment("offline", experiment_id) + + return + + def log_metrics(self, log_dict, **kwargs): + self.experiment.log_metrics(log_dict, **kwargs) + + def log_parameters(self, log_dict, **kwargs): + self.experiment.log_parameters(log_dict, **kwargs) + + def log_asset(self, asset_path, **kwargs): + self.experiment.log_asset(asset_path, **kwargs) + + def log_asset_data(self, asset, **kwargs): + self.experiment.log_asset_data(asset, **kwargs) + + def log_image(self, img, **kwargs): + self.experiment.log_image(img, **kwargs) + + def log_model(self, path, opt, epoch, fitness_score, best_model=False): + if not self.save_model: + return + + model_metadata = { + "fitness_score": fitness_score[-1], + "epochs_trained": epoch + 1, + "save_period": opt.save_period, + "total_epochs": opt.epochs,} + + model_files = glob.glob(f"{path}/*.pt") + for model_path in model_files: + name = Path(model_path).name + + self.experiment.log_model( + self.model_name, + file_or_folder=model_path, + file_name=name, + metadata=model_metadata, + overwrite=True, + ) + + def check_dataset(self, data_file): + with open(data_file) as f: + data_config = yaml.safe_load(f) + + if data_config['path'].startswith(COMET_PREFIX): + path = data_config['path'].replace(COMET_PREFIX, "") + data_dict = self.download_dataset_artifact(path) + + return data_dict + + self.log_asset(self.opt.data, metadata={"type": "data-config-file"}) + + return check_dataset(data_file) + + def log_predictions(self, image, labelsn, path, shape, predn): + if self.logged_images_count >= self.max_images: + return + detections = predn[predn[:, 4] > self.conf_thres] + iou = box_iou(labelsn[:, 1:], detections[:, :4]) + mask, _ = torch.where(iou > self.iou_thres) + if len(mask) == 0: + return + + filtered_detections = detections[mask] + filtered_labels = labelsn[mask] + + image_id = path.split("/")[-1].split(".")[0] + image_name = f"{image_id}_curr_epoch_{self.experiment.curr_epoch}" + if image_name not in self.logged_image_names: + native_scale_image = PIL.Image.open(path) + self.log_image(native_scale_image, name=image_name) + self.logged_image_names.append(image_name) + + metadata = [] + for cls, *xyxy in filtered_labels.tolist(): + metadata.append({ + "label": f"{self.class_names[int(cls)]}-gt", + "score": 100, + "box": { + "x": xyxy[0], + "y": xyxy[1], + "x2": xyxy[2], + "y2": xyxy[3]},}) + for *xyxy, conf, cls in filtered_detections.tolist(): + metadata.append({ + "label": f"{self.class_names[int(cls)]}", + "score": conf * 100, + "box": { + "x": xyxy[0], + "y": xyxy[1], + "x2": xyxy[2], + "y2": xyxy[3]},}) + + self.metadata_dict[image_name] = metadata + self.logged_images_count += 1 + + return + + def preprocess_prediction(self, image, labels, shape, pred): + nl, _ = labels.shape[0], pred.shape[0] + + # Predictions + if self.opt.single_cls: + pred[:, 5] = 0 + + predn = pred.clone() + scale_boxes(image.shape[1:], predn[:, :4], shape[0], shape[1]) + + labelsn = None + if nl: + tbox = xywh2xyxy(labels[:, 1:5]) # target boxes + scale_boxes(image.shape[1:], tbox, shape[0], shape[1]) # native-space labels + labelsn = torch.cat((labels[:, 0:1], tbox), 1) # native-space labels + scale_boxes(image.shape[1:], predn[:, :4], shape[0], shape[1]) # native-space pred + + return predn, labelsn + + def add_assets_to_artifact(self, artifact, path, asset_path, split): + img_paths = sorted(glob.glob(f"{asset_path}/*")) + label_paths = img2label_paths(img_paths) + + for image_file, label_file in zip(img_paths, label_paths): + image_logical_path, label_logical_path = map(lambda x: os.path.relpath(x, path), [image_file, label_file]) + + try: + artifact.add(image_file, logical_path=image_logical_path, metadata={"split": split}) + artifact.add(label_file, logical_path=label_logical_path, metadata={"split": split}) + except ValueError as e: + logger.error('COMET ERROR: Error adding file to Artifact. Skipping file.') + logger.error(f"COMET ERROR: {e}") + continue + + return artifact + + def upload_dataset_artifact(self): + dataset_name = self.data_dict.get("dataset_name", "yolov5-dataset") + path = str((ROOT / Path(self.data_dict["path"])).resolve()) + + metadata = self.data_dict.copy() + for key in ["train", "val", "test"]: + split_path = metadata.get(key) + if split_path is not None: + metadata[key] = split_path.replace(path, "") + + artifact = comet_ml.Artifact(name=dataset_name, artifact_type="dataset", metadata=metadata) + for key in metadata.keys(): + if key in ["train", "val", "test"]: + if isinstance(self.upload_dataset, str) and (key != self.upload_dataset): + continue + + asset_path = self.data_dict.get(key) + if asset_path is not None: + artifact = self.add_assets_to_artifact(artifact, path, asset_path, key) + + self.experiment.log_artifact(artifact) + + return + + def download_dataset_artifact(self, artifact_path): + logged_artifact = self.experiment.get_artifact(artifact_path) + artifact_save_dir = str(Path(self.opt.save_dir) / logged_artifact.name) + logged_artifact.download(artifact_save_dir) + + metadata = logged_artifact.metadata + data_dict = metadata.copy() + data_dict["path"] = artifact_save_dir + + metadata_names = metadata.get("names") + if type(metadata_names) == dict: + data_dict["names"] = {int(k): v for k, v in metadata.get("names").items()} + elif type(metadata_names) == list: + data_dict["names"] = {int(k): v for k, v in zip(range(len(metadata_names)), metadata_names)} + else: + raise "Invalid 'names' field in dataset yaml file. Please use a list or dictionary" + + data_dict = self.update_data_paths(data_dict) + return data_dict + + def update_data_paths(self, data_dict): + path = data_dict.get("path", "") + + for split in ["train", "val", "test"]: + if data_dict.get(split): + split_path = data_dict.get(split) + data_dict[split] = (f"{path}/{split_path}" if isinstance(split, str) else [ + f"{path}/{x}" for x in split_path]) + + return data_dict + + def on_pretrain_routine_end(self, paths): + if self.opt.resume: + return + + for path in paths: + self.log_asset(str(path)) + + if self.upload_dataset: + if not self.resume: + self.upload_dataset_artifact() + + return + + def on_train_start(self): + self.log_parameters(self.hyp) + + def on_train_epoch_start(self): + return + + def on_train_epoch_end(self, epoch): + self.experiment.curr_epoch = epoch + + return + + def on_train_batch_start(self): + return + + def on_train_batch_end(self, log_dict, step): + self.experiment.curr_step = step + if self.log_batch_metrics and (step % self.comet_log_batch_interval == 0): + self.log_metrics(log_dict, step=step) + + return + + def on_train_end(self, files, save_dir, last, best, epoch, results): + if self.comet_log_predictions: + curr_epoch = self.experiment.curr_epoch + self.experiment.log_asset_data(self.metadata_dict, "image-metadata.json", epoch=curr_epoch) + + for f in files: + self.log_asset(f, metadata={"epoch": epoch}) + self.log_asset(f"{save_dir}/results.csv", metadata={"epoch": epoch}) + + if not self.opt.evolve: + model_path = str(best if best.exists() else last) + name = Path(model_path).name + if self.save_model: + self.experiment.log_model( + self.model_name, + file_or_folder=model_path, + file_name=name, + overwrite=True, + ) + + # Check if running Experiment with Comet Optimizer + if hasattr(self.opt, 'comet_optimizer_id'): + metric = results.get(self.opt.comet_optimizer_metric) + self.experiment.log_other('optimizer_metric_value', metric) + + self.finish_run() + + def on_val_start(self): + return + + def on_val_batch_start(self): + return + + def on_val_batch_end(self, batch_i, images, targets, paths, shapes, outputs): + if not (self.comet_log_predictions and ((batch_i + 1) % self.comet_log_prediction_interval == 0)): + return + + for si, pred in enumerate(outputs): + if len(pred) == 0: + continue + + image = images[si] + labels = targets[targets[:, 0] == si, 1:] + shape = shapes[si] + path = paths[si] + predn, labelsn = self.preprocess_prediction(image, labels, shape, pred) + if labelsn is not None: + self.log_predictions(image, labelsn, path, shape, predn) + + return + + def on_val_end(self, nt, tp, fp, p, r, f1, ap, ap50, ap_class, confusion_matrix): + if self.comet_log_per_class_metrics: + if self.num_classes > 1: + for i, c in enumerate(ap_class): + class_name = self.class_names[c] + self.experiment.log_metrics( + { + 'mAP@.5': ap50[i], + 'mAP@.5:.95': ap[i], + 'precision': p[i], + 'recall': r[i], + 'f1': f1[i], + 'true_positives': tp[i], + 'false_positives': fp[i], + 'support': nt[c]}, + prefix=class_name) + + if self.comet_log_confusion_matrix: + epoch = self.experiment.curr_epoch + class_names = list(self.class_names.values()) + class_names.append("background") + num_classes = len(class_names) + + self.experiment.log_confusion_matrix( + matrix=confusion_matrix.matrix, + max_categories=num_classes, + labels=class_names, + epoch=epoch, + column_label='Actual Category', + row_label='Predicted Category', + file_name=f"confusion-matrix-epoch-{epoch}.json", + ) + + def on_fit_epoch_end(self, result, epoch): + self.log_metrics(result, epoch=epoch) + + def on_model_save(self, last, epoch, final_epoch, best_fitness, fi): + if ((epoch + 1) % self.opt.save_period == 0 and not final_epoch) and self.opt.save_period != -1: + self.log_model(last.parent, self.opt, epoch, fi, best_model=best_fitness == fi) + + def on_params_update(self, params): + self.log_parameters(params) + + def finish_run(self): + self.experiment.end() diff --git a/utils/loggers/comet/comet_utils.py b/utils/loggers/comet/comet_utils.py new file mode 100644 index 00000000..3cbd4515 --- /dev/null +++ b/utils/loggers/comet/comet_utils.py @@ -0,0 +1,150 @@ +import logging +import os +from urllib.parse import urlparse + +try: + import comet_ml +except (ModuleNotFoundError, ImportError): + comet_ml = None + +import yaml + +logger = logging.getLogger(__name__) + +COMET_PREFIX = "comet://" +COMET_MODEL_NAME = os.getenv("COMET_MODEL_NAME", "yolov5") +COMET_DEFAULT_CHECKPOINT_FILENAME = os.getenv("COMET_DEFAULT_CHECKPOINT_FILENAME", "last.pt") + + +def download_model_checkpoint(opt, experiment): + model_dir = f"{opt.project}/{experiment.name}" + os.makedirs(model_dir, exist_ok=True) + + model_name = COMET_MODEL_NAME + model_asset_list = experiment.get_model_asset_list(model_name) + + if len(model_asset_list) == 0: + logger.error(f"COMET ERROR: No checkpoints found for model name : {model_name}") + return + + model_asset_list = sorted( + model_asset_list, + key=lambda x: x["step"], + reverse=True, + ) + logged_checkpoint_map = {asset["fileName"]: asset["assetId"] for asset in model_asset_list} + + resource_url = urlparse(opt.weights) + checkpoint_filename = resource_url.query + + if checkpoint_filename: + asset_id = logged_checkpoint_map.get(checkpoint_filename) + else: + asset_id = logged_checkpoint_map.get(COMET_DEFAULT_CHECKPOINT_FILENAME) + checkpoint_filename = COMET_DEFAULT_CHECKPOINT_FILENAME + + if asset_id is None: + logger.error(f"COMET ERROR: Checkpoint {checkpoint_filename} not found in the given Experiment") + return + + try: + logger.info(f"COMET INFO: Downloading checkpoint {checkpoint_filename}") + asset_filename = checkpoint_filename + + model_binary = experiment.get_asset(asset_id, return_type="binary", stream=False) + model_download_path = f"{model_dir}/{asset_filename}" + with open(model_download_path, "wb") as f: + f.write(model_binary) + + opt.weights = model_download_path + + except Exception as e: + logger.warning("COMET WARNING: Unable to download checkpoint from Comet") + logger.exception(e) + + +def set_opt_parameters(opt, experiment): + """Update the opts Namespace with parameters + from Comet's ExistingExperiment when resuming a run + + Args: + opt (argparse.Namespace): Namespace of command line options + experiment (comet_ml.APIExperiment): Comet API Experiment object + """ + asset_list = experiment.get_asset_list() + resume_string = opt.resume + + for asset in asset_list: + if asset["fileName"] == "opt.yaml": + asset_id = asset["assetId"] + asset_binary = experiment.get_asset(asset_id, return_type="binary", stream=False) + opt_dict = yaml.safe_load(asset_binary) + for key, value in opt_dict.items(): + setattr(opt, key, value) + opt.resume = resume_string + + # Save hyperparameters to YAML file + # Necessary to pass checks in training script + save_dir = f"{opt.project}/{experiment.name}" + os.makedirs(save_dir, exist_ok=True) + + hyp_yaml_path = f"{save_dir}/hyp.yaml" + with open(hyp_yaml_path, "w") as f: + yaml.dump(opt.hyp, f) + opt.hyp = hyp_yaml_path + + +def check_comet_weights(opt): + """Downloads model weights from Comet and updates the + weights path to point to saved weights location + + Args: + opt (argparse.Namespace): Command Line arguments passed + to YOLOv5 training script + + Returns: + None/bool: Return True if weights are successfully downloaded + else return None + """ + if comet_ml is None: + return + + if isinstance(opt.weights, str): + if opt.weights.startswith(COMET_PREFIX): + api = comet_ml.API() + resource = urlparse(opt.weights) + experiment_path = f"{resource.netloc}{resource.path}" + experiment = api.get(experiment_path) + download_model_checkpoint(opt, experiment) + return True + + return None + + +def check_comet_resume(opt): + """Restores run parameters to its original state based on the model checkpoint + and logged Experiment parameters. + + Args: + opt (argparse.Namespace): Command Line arguments passed + to YOLOv5 training script + + Returns: + None/bool: Return True if the run is restored successfully + else return None + """ + if comet_ml is None: + return + + if isinstance(opt.resume, str): + if opt.resume.startswith(COMET_PREFIX): + api = comet_ml.API() + resource = urlparse(opt.resume) + experiment_path = f"{resource.netloc}{resource.path}" + experiment = api.get(experiment_path) + set_opt_parameters(opt, experiment) + download_model_checkpoint(opt, experiment) + + return True + + return None diff --git a/utils/loggers/comet/hpo.py b/utils/loggers/comet/hpo.py new file mode 100644 index 00000000..7dd5c92e --- /dev/null +++ b/utils/loggers/comet/hpo.py @@ -0,0 +1,118 @@ +import argparse +import json +import logging +import os +import sys +from pathlib import Path + +import comet_ml + +logger = logging.getLogger(__name__) + +FILE = Path(__file__).resolve() +ROOT = FILE.parents[3] # YOLOv5 root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH + +from train import train +from utils.callbacks import Callbacks +from utils.general import increment_path +from utils.torch_utils import select_device + +# Project Configuration +config = comet_ml.config.get_config() +COMET_PROJECT_NAME = config.get_string(os.getenv("COMET_PROJECT_NAME"), "comet.project_name", default="yolov5") + + +def get_args(known=False): + parser = argparse.ArgumentParser() + parser.add_argument('--weights', type=str, default=ROOT / 'yolov5s.pt', help='initial weights path') + parser.add_argument('--cfg', type=str, default='', help='model.yaml path') + parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='dataset.yaml path') + parser.add_argument('--hyp', type=str, default=ROOT / 'data/hyps/hyp.scratch-low.yaml', help='hyperparameters path') + parser.add_argument('--epochs', type=int, default=300, help='total training epochs') + parser.add_argument('--batch-size', type=int, default=16, help='total batch size for all GPUs, -1 for autobatch') + parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=640, help='train, val image size (pixels)') + parser.add_argument('--rect', action='store_true', help='rectangular training') + parser.add_argument('--resume', nargs='?', const=True, default=False, help='resume most recent training') + parser.add_argument('--nosave', action='store_true', help='only save final checkpoint') + parser.add_argument('--noval', action='store_true', help='only validate final epoch') + parser.add_argument('--noautoanchor', action='store_true', help='disable AutoAnchor') + parser.add_argument('--noplots', action='store_true', help='save no plot files') + parser.add_argument('--evolve', type=int, nargs='?', const=300, help='evolve hyperparameters for x generations') + parser.add_argument('--bucket', type=str, default='', help='gsutil bucket') + parser.add_argument('--cache', type=str, nargs='?', const='ram', help='--cache images in "ram" (default) or "disk"') + parser.add_argument('--image-weights', action='store_true', help='use weighted image selection for training') + parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') + parser.add_argument('--multi-scale', action='store_true', help='vary img-size +/- 50%%') + parser.add_argument('--single-cls', action='store_true', help='train multi-class data as single-class') + parser.add_argument('--optimizer', type=str, choices=['SGD', 'Adam', 'AdamW'], default='SGD', help='optimizer') + parser.add_argument('--sync-bn', action='store_true', help='use SyncBatchNorm, only available in DDP mode') + parser.add_argument('--workers', type=int, default=8, help='max dataloader workers (per RANK in DDP mode)') + parser.add_argument('--project', default=ROOT / 'runs/train', help='save to project/name') + parser.add_argument('--name', default='exp', help='save to project/name') + parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment') + parser.add_argument('--quad', action='store_true', help='quad dataloader') + parser.add_argument('--cos-lr', action='store_true', help='cosine LR scheduler') + parser.add_argument('--label-smoothing', type=float, default=0.0, help='Label smoothing epsilon') + parser.add_argument('--patience', type=int, default=100, help='EarlyStopping patience (epochs without improvement)') + parser.add_argument('--freeze', nargs='+', type=int, default=[0], help='Freeze layers: backbone=10, first3=0 1 2') + parser.add_argument('--save-period', type=int, default=-1, help='Save checkpoint every x epochs (disabled if < 1)') + parser.add_argument('--seed', type=int, default=0, help='Global training seed') + parser.add_argument('--local_rank', type=int, default=-1, help='Automatic DDP Multi-GPU argument, do not modify') + + # Weights & Biases arguments + parser.add_argument('--entity', default=None, help='W&B: Entity') + parser.add_argument('--upload_dataset', nargs='?', const=True, default=False, help='W&B: Upload data, "val" option') + parser.add_argument('--bbox_interval', type=int, default=-1, help='W&B: Set bounding-box image logging interval') + parser.add_argument('--artifact_alias', type=str, default='latest', help='W&B: Version of dataset artifact to use') + + # Comet Arguments + parser.add_argument("--comet_optimizer_config", type=str, help="Comet: Path to a Comet Optimizer Config File.") + parser.add_argument("--comet_optimizer_id", type=str, help="Comet: ID of the Comet Optimizer sweep.") + parser.add_argument("--comet_optimizer_objective", type=str, help="Comet: Set to 'minimize' or 'maximize'.") + parser.add_argument("--comet_optimizer_metric", type=str, help="Comet: Metric to Optimize.") + parser.add_argument("--comet_optimizer_workers", + type=int, + default=1, + help="Comet: Number of Parallel Workers to use with the Comet Optimizer.") + + return parser.parse_known_args()[0] if known else parser.parse_args() + + +def run(parameters, opt): + hyp_dict = {k: v for k, v in parameters.items() if k not in ["epochs", "batch_size"]} + + opt.save_dir = str(increment_path(Path(opt.project) / opt.name, exist_ok=opt.exist_ok or opt.evolve)) + opt.batch_size = parameters.get("batch_size") + opt.epochs = parameters.get("epochs") + + device = select_device(opt.device, batch_size=opt.batch_size) + train(hyp_dict, opt, device, callbacks=Callbacks()) + + +if __name__ == "__main__": + opt = get_args(known=True) + + opt.weights = str(opt.weights) + opt.cfg = str(opt.cfg) + opt.data = str(opt.data) + opt.project = str(opt.project) + + optimizer_id = os.getenv("COMET_OPTIMIZER_ID") + if optimizer_id is None: + with open(opt.comet_optimizer_config) as f: + optimizer_config = json.load(f) + optimizer = comet_ml.Optimizer(optimizer_config) + else: + optimizer = comet_ml.Optimizer(optimizer_id) + + opt.comet_optimizer_id = optimizer.id + status = optimizer.status() + + opt.comet_optimizer_objective = status["spec"]["objective"] + opt.comet_optimizer_metric = status["spec"]["metric"] + + logger.info("COMET INFO: Starting Hyperparameter Sweep") + for parameter in optimizer.get_parameters(): + run(parameter["parameters"], opt) diff --git a/utils/loggers/comet/optimizer_config.json b/utils/loggers/comet/optimizer_config.json new file mode 100644 index 00000000..83ddddab --- /dev/null +++ b/utils/loggers/comet/optimizer_config.json @@ -0,0 +1,209 @@ +{ + "algorithm": "random", + "parameters": { + "anchor_t": { + "type": "discrete", + "values": [ + 2, + 8 + ] + }, + "batch_size": { + "type": "discrete", + "values": [ + 16, + 32, + 64 + ] + }, + "box": { + "type": "discrete", + "values": [ + 0.02, + 0.2 + ] + }, + "cls": { + "type": "discrete", + "values": [ + 0.2 + ] + }, + "cls_pw": { + "type": "discrete", + "values": [ + 0.5 + ] + }, + "copy_paste": { + "type": "discrete", + "values": [ + 1 + ] + }, + "degrees": { + "type": "discrete", + "values": [ + 0, + 45 + ] + }, + "epochs": { + "type": "discrete", + "values": [ + 5 + ] + }, + "fl_gamma": { + "type": "discrete", + "values": [ + 0 + ] + }, + "fliplr": { + "type": "discrete", + "values": [ + 0 + ] + }, + "flipud": { + "type": "discrete", + "values": [ + 0 + ] + }, + "hsv_h": { + "type": "discrete", + "values": [ + 0 + ] + }, + "hsv_s": { + "type": "discrete", + "values": [ + 0 + ] + }, + "hsv_v": { + "type": "discrete", + "values": [ + 0 + ] + }, + "iou_t": { + "type": "discrete", + "values": [ + 0.7 + ] + }, + "lr0": { + "type": "discrete", + "values": [ + 1e-05, + 0.1 + ] + }, + "lrf": { + "type": "discrete", + "values": [ + 0.01, + 1 + ] + }, + "mixup": { + "type": "discrete", + "values": [ + 1 + ] + }, + "momentum": { + "type": "discrete", + "values": [ + 0.6 + ] + }, + "mosaic": { + "type": "discrete", + "values": [ + 0 + ] + }, + "obj": { + "type": "discrete", + "values": [ + 0.2 + ] + }, + "obj_pw": { + "type": "discrete", + "values": [ + 0.5 + ] + }, + "optimizer": { + "type": "categorical", + "values": [ + "SGD", + "Adam", + "AdamW" + ] + }, + "perspective": { + "type": "discrete", + "values": [ + 0 + ] + }, + "scale": { + "type": "discrete", + "values": [ + 0 + ] + }, + "shear": { + "type": "discrete", + "values": [ + 0 + ] + }, + "translate": { + "type": "discrete", + "values": [ + 0 + ] + }, + "warmup_bias_lr": { + "type": "discrete", + "values": [ + 0, + 0.2 + ] + }, + "warmup_epochs": { + "type": "discrete", + "values": [ + 5 + ] + }, + "warmup_momentum": { + "type": "discrete", + "values": [ + 0, + 0.95 + ] + }, + "weight_decay": { + "type": "discrete", + "values": [ + 0, + 0.001 + ] + } + }, + "spec": { + "maxCombo": 0, + "metric": "metrics/mAP_0.5", + "objective": "maximize" + }, + "trials": 1 +} diff --git a/utils/loggers/wandb/__init__.py b/utils/loggers/wandb/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/utils/loggers/wandb/wandb_utils.py b/utils/loggers/wandb/wandb_utils.py new file mode 100644 index 00000000..97ba31b6 --- /dev/null +++ b/utils/loggers/wandb/wandb_utils.py @@ -0,0 +1,193 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license + +# WARNING ⚠️ wandb is deprecated and will be removed in future release. +# See supported integrations at https://github.com/ultralytics/yolov5#integrations + +import logging +import os +import sys +from contextlib import contextmanager +from pathlib import Path + +from utils.general import LOGGER, colorstr + +FILE = Path(__file__).resolve() +ROOT = FILE.parents[3] # YOLOv5 root directory +if str(ROOT) not in sys.path: + sys.path.append(str(ROOT)) # add ROOT to PATH +RANK = int(os.getenv('RANK', -1)) +DEPRECATION_WARNING = f"{colorstr('wandb')}: WARNING ⚠️ wandb is deprecated and will be removed in a future release. " \ + f"See supported integrations at https://github.com/ultralytics/yolov5#integrations." + +try: + import wandb + + assert hasattr(wandb, '__version__') # verify package import not local dir + LOGGER.warning(DEPRECATION_WARNING) +except (ImportError, AssertionError): + wandb = None + + +class WandbLogger(): + """Log training runs, datasets, models, and predictions to Weights & Biases. + + This logger sends information to W&B at wandb.ai. By default, this information + includes hyperparameters, system configuration and metrics, model metrics, + and basic data metrics and analyses. + + By providing additional command line arguments to train.py, datasets, + models and predictions can also be logged. + + For more on how this logger is used, see the Weights & Biases documentation: + https://docs.wandb.com/guides/integrations/yolov5 + """ + + def __init__(self, opt, run_id=None, job_type='Training'): + """ + - Initialize WandbLogger instance + - Upload dataset if opt.upload_dataset is True + - Setup training processes if job_type is 'Training' + + arguments: + opt (namespace) -- Commandline arguments for this run + run_id (str) -- Run ID of W&B run to be resumed + job_type (str) -- To set the job_type for this run + + """ + # Pre-training routine -- + self.job_type = job_type + self.wandb, self.wandb_run = wandb, wandb.run if wandb else None + self.val_artifact, self.train_artifact = None, None + self.train_artifact_path, self.val_artifact_path = None, None + self.result_artifact = None + self.val_table, self.result_table = None, None + self.max_imgs_to_log = 16 + self.data_dict = None + if self.wandb: + self.wandb_run = wandb.init(config=opt, + resume="allow", + project='YOLOv5' if opt.project == 'runs/train' else Path(opt.project).stem, + entity=opt.entity, + name=opt.name if opt.name != 'exp' else None, + job_type=job_type, + id=run_id, + allow_val_change=True) if not wandb.run else wandb.run + + if self.wandb_run: + if self.job_type == 'Training': + if isinstance(opt.data, dict): + # This means another dataset manager has already processed the dataset info (e.g. ClearML) + # and they will have stored the already processed dict in opt.data + self.data_dict = opt.data + self.setup_training(opt) + + def setup_training(self, opt): + """ + Setup the necessary processes for training YOLO models: + - Attempt to download model checkpoint and dataset artifacts if opt.resume stats with WANDB_ARTIFACT_PREFIX + - Update data_dict, to contain info of previous run if resumed and the paths of dataset artifact if downloaded + - Setup log_dict, initialize bbox_interval + + arguments: + opt (namespace) -- commandline arguments for this run + + """ + self.log_dict, self.current_epoch = {}, 0 + self.bbox_interval = opt.bbox_interval + if isinstance(opt.resume, str): + model_dir, _ = self.download_model_artifact(opt) + if model_dir: + self.weights = Path(model_dir) / "last.pt" + config = self.wandb_run.config + opt.weights, opt.save_period, opt.batch_size, opt.bbox_interval, opt.epochs, opt.hyp, opt.imgsz = str( + self.weights), config.save_period, config.batch_size, config.bbox_interval, config.epochs, \ + config.hyp, config.imgsz + + if opt.bbox_interval == -1: + self.bbox_interval = opt.bbox_interval = (opt.epochs // 10) if opt.epochs > 10 else 1 + if opt.evolve or opt.noplots: + self.bbox_interval = opt.bbox_interval = opt.epochs + 1 # disable bbox_interval + + def log_model(self, path, opt, epoch, fitness_score, best_model=False): + """ + Log the model checkpoint as W&B artifact + + arguments: + path (Path) -- Path of directory containing the checkpoints + opt (namespace) -- Command line arguments for this run + epoch (int) -- Current epoch number + fitness_score (float) -- fitness score for current epoch + best_model (boolean) -- Boolean representing if the current checkpoint is the best yet. + """ + model_artifact = wandb.Artifact('run_' + wandb.run.id + '_model', + type='model', + metadata={ + 'original_url': str(path), + 'epochs_trained': epoch + 1, + 'save period': opt.save_period, + 'project': opt.project, + 'total_epochs': opt.epochs, + 'fitness_score': fitness_score}) + model_artifact.add_file(str(path / 'last.pt'), name='last.pt') + wandb.log_artifact(model_artifact, + aliases=['latest', 'last', 'epoch ' + str(self.current_epoch), 'best' if best_model else '']) + LOGGER.info(f"Saving model artifact on epoch {epoch + 1}") + + def val_one_image(self, pred, predn, path, names, im): + pass + + def log(self, log_dict): + """ + save the metrics to the logging dictionary + + arguments: + log_dict (Dict) -- metrics/media to be logged in current step + """ + if self.wandb_run: + for key, value in log_dict.items(): + self.log_dict[key] = value + + def end_epoch(self): + """ + commit the log_dict, model artifacts and Tables to W&B and flush the log_dict. + + arguments: + best_result (boolean): Boolean representing if the result of this evaluation is best or not + """ + if self.wandb_run: + with all_logging_disabled(): + try: + wandb.log(self.log_dict) + except BaseException as e: + LOGGER.info( + f"An error occurred in wandb logger. The training will proceed without interruption. More info\n{e}" + ) + self.wandb_run.finish() + self.wandb_run = None + self.log_dict = {} + + def finish_run(self): + """ + Log metrics if any and finish the current W&B run + """ + if self.wandb_run: + if self.log_dict: + with all_logging_disabled(): + wandb.log(self.log_dict) + wandb.run.finish() + LOGGER.warning(DEPRECATION_WARNING) + + +@contextmanager +def all_logging_disabled(highest_level=logging.CRITICAL): + """ source - https://gist.github.com/simon-weber/7853144 + A context manager that will prevent any logging messages triggered during the body from being processed. + :param highest_level: the maximum logging level in use. + This would only need to be changed if a custom level greater than CRITICAL is defined. + """ + previous_level = logging.root.manager.disable + logging.disable(highest_level) + try: + yield + finally: + logging.disable(previous_level) diff --git a/utils/metrics.py b/utils/metrics.py index 90490955..408b613a 100644 --- a/utils/metrics.py +++ b/utils/metrics.py @@ -11,6 +11,8 @@ import matplotlib.pyplot as plt import numpy as np import torch +from utils import TryExcept, threaded + def fitness(x): # Model fitness as a weighted combination of metrics @@ -18,7 +20,15 @@ def fitness(x): return (x[:, :4] * w).sum(1) -def ap_per_class(tp, conf, pred_cls, target_cls, plot=False, save_dir='.', names=()): +def smooth(y, f=0.05): + # Box filter of fraction f + nf = round(len(y) * f * 2) // 2 + 1 # number of filter elements (must be odd) + p = np.ones(nf // 2) # ones padding + yp = np.concatenate((p * y[0], y, p * y[-1]), 0) # y padded + return np.convolve(yp, np.ones(nf) / nf, mode='valid') # y-smoothed + + +def ap_per_class(tp, conf, pred_cls, target_cls, plot=False, save_dir='.', names=(), eps=1e-16, prefix=""): """ Compute the average precision, given the recall and precision curves. Source: https://github.com/rafaelpadilla/Object-Detection-Metrics. # Arguments @@ -37,7 +47,7 @@ def ap_per_class(tp, conf, pred_cls, target_cls, plot=False, save_dir='.', names tp, conf, pred_cls = tp[i], conf[i], pred_cls[i] # Find unique classes - unique_classes = np.unique(target_cls) + unique_classes, nt = np.unique(target_cls, return_counts=True) nc = unique_classes.shape[0] # number of classes, number of detections # Create Precision-Recall curve and compute AP for each class @@ -45,42 +55,44 @@ def ap_per_class(tp, conf, pred_cls, target_cls, plot=False, save_dir='.', names ap, p, r = np.zeros((nc, tp.shape[1])), np.zeros((nc, 1000)), np.zeros((nc, 1000)) for ci, c in enumerate(unique_classes): i = pred_cls == c - n_l = (target_cls == c).sum() # number of labels + n_l = nt[ci] # number of labels n_p = i.sum() # number of predictions - if n_p == 0 or n_l == 0: continue - else: - # Accumulate FPs and TPs - fpc = (1 - tp[i]).cumsum(0) - tpc = tp[i].cumsum(0) - # Recall - recall = tpc / (n_l + 1e-16) # recall curve - r[ci] = np.interp(-px, -conf[i], recall[:, 0], left=0) # negative x, xp because xp decreases + # Accumulate FPs and TPs + fpc = (1 - tp[i]).cumsum(0) + tpc = tp[i].cumsum(0) - # Precision - precision = tpc / (tpc + fpc) # precision curve - p[ci] = np.interp(-px, -conf[i], precision[:, 0], left=1) # p at pr_score + # Recall + recall = tpc / (n_l + eps) # recall curve + r[ci] = np.interp(-px, -conf[i], recall[:, 0], left=0) # negative x, xp because xp decreases - # AP from recall-precision curve - for j in range(tp.shape[1]): - ap[ci, j], mpre, mrec = compute_ap(recall[:, j], precision[:, j]) - if plot and j == 0: - py.append(np.interp(px, mrec, mpre)) # precision at mAP@0.5 + # Precision + precision = tpc / (tpc + fpc) # precision curve + p[ci] = np.interp(-px, -conf[i], precision[:, 0], left=1) # p at pr_score + + # AP from recall-precision curve + for j in range(tp.shape[1]): + ap[ci, j], mpre, mrec = compute_ap(recall[:, j], precision[:, j]) + if plot and j == 0: + py.append(np.interp(px, mrec, mpre)) # precision at mAP@0.5 # Compute F1 (harmonic mean of precision and recall) - f1 = 2 * p * r / (p + r + 1e-16) + f1 = 2 * p * r / (p + r + eps) names = [v for k, v in names.items() if k in unique_classes] # list: only classes that have data - names = {i: v for i, v in enumerate(names)} # to dict + names = dict(enumerate(names)) # to dict if plot: - plot_pr_curve(px, py, ap, Path(save_dir) / 'PR_curve.png', names) - plot_mc_curve(px, f1, Path(save_dir) / 'F1_curve.png', names, ylabel='F1') - plot_mc_curve(px, p, Path(save_dir) / 'P_curve.png', names, ylabel='Precision') - plot_mc_curve(px, r, Path(save_dir) / 'R_curve.png', names, ylabel='Recall') + plot_pr_curve(px, py, ap, Path(save_dir) / f'{prefix}PR_curve.png', names) + plot_mc_curve(px, f1, Path(save_dir) / f'{prefix}F1_curve.png', names, ylabel='F1') + plot_mc_curve(px, p, Path(save_dir) / f'{prefix}P_curve.png', names, ylabel='Precision') + plot_mc_curve(px, r, Path(save_dir) / f'{prefix}R_curve.png', names, ylabel='Recall') - i = f1.mean(0).argmax() # max F1 index - return p[:, i], r[:, i], ap, f1[:, i], unique_classes.astype('int32') + i = smooth(f1.mean(0), 0.1).argmax() # max F1 index + p, r, f1 = p[:, i], r[:, i], f1[:, i] + tp = (r * nt).round() # true positives + fp = (tp / (p + eps) - tp).round() # false positives + return tp, fp, p, r, f1, ap, unique_classes.astype(int) def compute_ap(recall, precision): @@ -129,6 +141,12 @@ class ConfusionMatrix: Returns: None, updates confusion matrix accordingly """ + if detections is None: + gt_classes = labels.int() + for gc in gt_classes: + self.matrix[self.nc, gc] += 1 # background FN + return + detections = detections[detections[:, 4] > self.conf] gt_classes = labels[:, 0].int() detection_classes = detections[:, 5].int() @@ -146,43 +164,55 @@ class ConfusionMatrix: matches = np.zeros((0, 3)) n = matches.shape[0] > 0 - m0, m1, _ = matches.transpose().astype(np.int16) + m0, m1, _ = matches.transpose().astype(int) for i, gc in enumerate(gt_classes): j = m0 == i if n and sum(j) == 1: self.matrix[detection_classes[m1[j]], gc] += 1 # correct else: - self.matrix[self.nc, gc] += 1 # background FP + self.matrix[self.nc, gc] += 1 # true background if n: for i, dc in enumerate(detection_classes): if not any(m1 == i): - self.matrix[dc, self.nc] += 1 # background FN + self.matrix[dc, self.nc] += 1 # predicted background - def matrix(self): - return self.matrix + def tp_fp(self): + tp = self.matrix.diagonal() # true positives + fp = self.matrix.sum(1) - tp # false positives + # fn = self.matrix.sum(0) - tp # false negatives (missed detections) + return tp[:-1], fp[:-1] # remove background class + @TryExcept('WARNING ⚠️ ConfusionMatrix plot failure') def plot(self, normalize=True, save_dir='', names=()): - try: - import seaborn as sn + import seaborn as sn - array = self.matrix / ((self.matrix.sum(0).reshape(1, -1) + 1E-6) if normalize else 1) # normalize columns - array[array < 0.005] = np.nan # don't annotate (would appear as 0.00) + array = self.matrix / ((self.matrix.sum(0).reshape(1, -1) + 1E-9) if normalize else 1) # normalize columns + array[array < 0.005] = np.nan # don't annotate (would appear as 0.00) - fig = plt.figure(figsize=(12, 9), tight_layout=True) - sn.set(font_scale=1.0 if self.nc < 50 else 0.8) # for label size - labels = (0 < len(names) < 99) and len(names) == self.nc # apply names to ticklabels - with warnings.catch_warnings(): - warnings.simplefilter('ignore') # suppress empty matrix RuntimeWarning: All-NaN slice encountered - sn.heatmap(array, annot=self.nc < 30, annot_kws={"size": 8}, cmap='Blues', fmt='.2f', square=True, - xticklabels=names + ['background FP'] if labels else "auto", - yticklabels=names + ['background FN'] if labels else "auto").set_facecolor((1, 1, 1)) - fig.axes[0].set_xlabel('True') - fig.axes[0].set_ylabel('Predicted') - fig.savefig(Path(save_dir) / 'confusion_matrix.png', dpi=250) - plt.close() - except Exception as e: - print(f'WARNING: ConfusionMatrix plot failure: {e}') + fig, ax = plt.subplots(1, 1, figsize=(12, 9), tight_layout=True) + nc, nn = self.nc, len(names) # number of classes, names + sn.set(font_scale=1.0 if nc < 50 else 0.8) # for label size + labels = (0 < nn < 99) and (nn == nc) # apply names to ticklabels + ticklabels = (names + ['background']) if labels else "auto" + with warnings.catch_warnings(): + warnings.simplefilter('ignore') # suppress empty matrix RuntimeWarning: All-NaN slice encountered + sn.heatmap(array, + ax=ax, + annot=nc < 30, + annot_kws={ + "size": 8}, + cmap='Blues', + fmt='.2f', + square=True, + vmin=0.0, + xticklabels=ticklabels, + yticklabels=ticklabels).set_facecolor((1, 1, 1)) + ax.set_xlabel('True') + ax.set_ylabel('Predicted') + ax.set_title('Confusion Matrix') + fig.savefig(Path(save_dir) / 'confusion_matrix.png', dpi=250) + plt.close(fig) def print(self): for i in range(self.nc + 1): @@ -194,19 +224,19 @@ def bbox_iou(box1, box2, xywh=True, GIoU=False, DIoU=False, CIoU=False, eps=1e-7 # Get the coordinates of bounding boxes if xywh: # transform from xywh to xyxy - (x1, y1, w1, h1), (x2, y2, w2, h2) = box1.chunk(4, 1), box2.chunk(4, 1) + (x1, y1, w1, h1), (x2, y2, w2, h2) = box1.chunk(4, -1), box2.chunk(4, -1) w1_, h1_, w2_, h2_ = w1 / 2, h1 / 2, w2 / 2, h2 / 2 b1_x1, b1_x2, b1_y1, b1_y2 = x1 - w1_, x1 + w1_, y1 - h1_, y1 + h1_ b2_x1, b2_x2, b2_y1, b2_y2 = x2 - w2_, x2 + w2_, y2 - h2_, y2 + h2_ else: # x1, y1, x2, y2 = box1 - b1_x1, b1_y1, b1_x2, b1_y2 = box1.chunk(4, 1) - b2_x1, b2_y1, b2_x2, b2_y2 = box2.chunk(4, 1) - w1, h1 = b1_x2 - b1_x1, b1_y2 - b1_y1 + eps - w2, h2 = b2_x2 - b2_x1, b2_y2 - b2_y1 + eps + b1_x1, b1_y1, b1_x2, b1_y2 = box1.chunk(4, -1) + b2_x1, b2_y1, b2_x2, b2_y2 = box2.chunk(4, -1) + w1, h1 = b1_x2 - b1_x1, (b1_y2 - b1_y1).clamp(eps) + w2, h2 = b2_x2 - b2_x1, (b2_y2 - b2_y1).clamp(eps) # Intersection area - inter = (torch.min(b1_x2, b2_x2) - torch.max(b1_x1, b2_x1)).clamp(0) * \ - (torch.min(b1_y2, b2_y2) - torch.max(b1_y1, b2_y1)).clamp(0) + inter = (b1_x2.minimum(b2_x2) - b1_x1.maximum(b2_x1)).clamp(0) * \ + (b1_y2.minimum(b2_y2) - b1_y1.maximum(b2_y1)).clamp(0) # Union Area union = w1 * h1 + w2 * h2 - inter + eps @@ -214,13 +244,13 @@ def bbox_iou(box1, box2, xywh=True, GIoU=False, DIoU=False, CIoU=False, eps=1e-7 # IoU iou = inter / union if CIoU or DIoU or GIoU: - cw = torch.max(b1_x2, b2_x2) - torch.min(b1_x1, b2_x1) # convex (smallest enclosing box) width - ch = torch.max(b1_y2, b2_y2) - torch.min(b1_y1, b2_y1) # convex height + cw = b1_x2.maximum(b2_x2) - b1_x1.minimum(b2_x1) # convex (smallest enclosing box) width + ch = b1_y2.maximum(b2_y2) - b1_y1.minimum(b2_y1) # convex height if CIoU or DIoU: # Distance or Complete IoU https://arxiv.org/abs/1911.08287v1 c2 = cw ** 2 + ch ** 2 + eps # convex diagonal squared rho2 = ((b2_x1 + b2_x2 - b1_x1 - b1_x2) ** 2 + (b2_y1 + b2_y2 - b1_y1 - b1_y2) ** 2) / 4 # center dist ** 2 if CIoU: # https://github.com/Zzh-tju/DIoU-SSD-pytorch/blob/master/utils/box/box_utils.py#L47 - v = (4 / math.pi ** 2) * torch.pow(torch.atan(w2 / h2) - torch.atan(w1 / h1), 2) + v = (4 / math.pi ** 2) * (torch.atan(w2 / h2) - torch.atan(w1 / h1)).pow(2) with torch.no_grad(): alpha = v / (v - iou + (1 + eps)) return iou - (rho2 / c2 + v * alpha) # CIoU @@ -230,7 +260,7 @@ def bbox_iou(box1, box2, xywh=True, GIoU=False, DIoU=False, CIoU=False, eps=1e-7 return iou # IoU -def box_iou(box1, box2): +def box_iou(box1, box2, eps=1e-7): # https://github.com/pytorch/vision/blob/master/torchvision/ops/boxes.py """ Return intersection-over-union (Jaccard index) of boxes. @@ -243,30 +273,24 @@ def box_iou(box1, box2): IoU values for every element in boxes1 and boxes2 """ - def box_area(box): - # box = 4xn - return (box[2] - box[0]) * (box[3] - box[1]) - - area1 = box_area(box1.T) - area2 = box_area(box2.T) - # inter(N,M) = (rb(N,M,2) - lt(N,M,2)).clamp(0).prod(2) - inter = (torch.min(box1[:, None, 2:], box2[:, 2:]) - torch.max(box1[:, None, :2], box2[:, :2])).clamp(0).prod(2) - return inter / (area1[:, None] + area2 - inter) # iou = inter / (area1 + area2 - inter) + (a1, a2), (b1, b2) = box1.unsqueeze(1).chunk(2, 2), box2.unsqueeze(0).chunk(2, 2) + inter = (torch.min(a2, b2) - torch.max(a1, b1)).clamp(0).prod(2) + + # IoU = inter / (area1 + area2 - inter) + return inter / ((a2 - a1).prod(2) + (b2 - b1).prod(2) - inter + eps) -def bbox_ioa(box1, box2, eps=1E-7): +def bbox_ioa(box1, box2, eps=1e-7): """ Returns the intersection over box2 area given box1, box2. Boxes are x1y1x2y2 box1: np.array of shape(4) box2: np.array of shape(nx4) returns: np.array of shape(n) """ - box2 = box2.transpose() - # Get the coordinates of bounding boxes - b1_x1, b1_y1, b1_x2, b1_y2 = box1[0], box1[1], box1[2], box1[3] - b2_x1, b2_y1, b2_x2, b2_y2 = box2[0], box2[1], box2[2], box2[3] + b1_x1, b1_y1, b1_x2, b1_y2 = box1 + b2_x1, b2_y1, b2_x2, b2_y2 = box2.T # Intersection area inter_area = (np.minimum(b1_x2, b2_x2) - np.maximum(b1_x1, b2_x1)).clip(0) * \ @@ -279,17 +303,19 @@ def bbox_ioa(box1, box2, eps=1E-7): return inter_area / box2_area -def wh_iou(wh1, wh2): +def wh_iou(wh1, wh2, eps=1e-7): # Returns the nxm IoU matrix. wh1 is nx2, wh2 is mx2 wh1 = wh1[:, None] # [N,1,2] wh2 = wh2[None] # [1,M,2] inter = torch.min(wh1, wh2).prod(2) # [N,M] - return inter / (wh1.prod(2) + wh2.prod(2) - inter) # iou = inter / (area1 + area2 - inter) + return inter / (wh1.prod(2) + wh2.prod(2) - inter + eps) # iou = inter / (area1 + area2 - inter) # Plots ---------------------------------------------------------------------------------------------------------------- -def plot_pr_curve(px, py, ap, save_dir='pr_curve.png', names=()): + +@threaded +def plot_pr_curve(px, py, ap, save_dir=Path('pr_curve.png'), names=()): # Precision-recall curve fig, ax = plt.subplots(1, 1, figsize=(9, 6), tight_layout=True) py = np.stack(py, axis=1) @@ -305,12 +331,14 @@ def plot_pr_curve(px, py, ap, save_dir='pr_curve.png', names=()): ax.set_ylabel('Precision') ax.set_xlim(0, 1) ax.set_ylim(0, 1) - plt.legend(bbox_to_anchor=(1.04, 1), loc="upper left") - fig.savefig(Path(save_dir), dpi=250) - plt.close() + ax.legend(bbox_to_anchor=(1.04, 1), loc="upper left") + ax.set_title('Precision-Recall Curve') + fig.savefig(save_dir, dpi=250) + plt.close(fig) -def plot_mc_curve(px, py, save_dir='mc_curve.png', names=(), xlabel='Confidence', ylabel='Metric'): +@threaded +def plot_mc_curve(px, py, save_dir=Path('mc_curve.png'), names=(), xlabel='Confidence', ylabel='Metric'): # Metric-confidence curve fig, ax = plt.subplots(1, 1, figsize=(9, 6), tight_layout=True) @@ -320,12 +348,13 @@ def plot_mc_curve(px, py, save_dir='mc_curve.png', names=(), xlabel='Confidence' else: ax.plot(px, py.T, linewidth=1, color='grey') # plot(confidence, metric) - y = py.mean(0) + y = smooth(py.mean(0), 0.05) ax.plot(px, y, linewidth=3, color='blue', label=f'all classes {y.max():.2f} at {px[y.argmax()]:.3f}') ax.set_xlabel(xlabel) ax.set_ylabel(ylabel) ax.set_xlim(0, 1) ax.set_ylim(0, 1) - plt.legend(bbox_to_anchor=(1.04, 1), loc="upper left") - fig.savefig(Path(save_dir), dpi=250) - plt.close() + ax.legend(bbox_to_anchor=(1.04, 1), loc="upper left") + ax.set_title(f'{ylabel}-Confidence Curve') + fig.savefig(save_dir, dpi=250) + plt.close(fig) diff --git a/utils/plots.py b/utils/plots.py index 16ae44a7..440e837f 100644 --- a/utils/plots.py +++ b/utils/plots.py @@ -3,10 +3,12 @@ Plotting utils """ +import contextlib import math import os from copy import copy from pathlib import Path +from urllib.error import URLError import cv2 import matplotlib @@ -17,12 +19,13 @@ import seaborn as sn import torch from PIL import Image, ImageDraw, ImageFont -from utils.general import (LOGGER, Timeout, check_requirements, clip_coords, increment_path, is_ascii, is_chinese, - try_except, user_config_dir, xywh2xyxy, xyxy2xywh) +from utils import TryExcept, threaded +from utils.general import (CONFIG_DIR, FONT, LOGGER, check_font, check_requirements, clip_boxes, increment_path, + is_ascii, xywh2xyxy, xyxy2xywh) from utils.metrics import fitness +from utils.segment.general import scale_image # Settings -CONFIG_DIR = user_config_dir() # Ultralytics settings dir RANK = int(os.getenv('RANK', -1)) matplotlib.rc('font', **{'size': 11}) matplotlib.use('Agg') # for writing to files only @@ -32,9 +35,9 @@ class Colors: # Ultralytics color palette https://ultralytics.com/ def __init__(self): # hex = matplotlib.colors.TABLEAU_COLORS.values() - hex = ('FF3838', 'FF9D97', 'FF701F', 'FFB21D', 'CFD231', '48F90A', '92CC17', '3DDB86', '1A9334', '00D4BB', - '2C99A8', '00C2FF', '344593', '6473FF', '0018EC', '8438FF', '520085', 'CB38FF', 'FF95C8', 'FF37C7') - self.palette = [self.hex2rgb('#' + c) for c in hex] + hexs = ('FF3838', 'FF9D97', 'FF701F', 'FFB21D', 'CFD231', '48F90A', '92CC17', '3DDB86', '1A9334', '00D4BB', + '2C99A8', '00C2FF', '344593', '6473FF', '0018EC', '8438FF', '520085', 'CB38FF', 'FF95C8', 'FF37C7') + self.palette = [self.hex2rgb(f'#{c}') for c in hexs] self.n = len(self.palette) def __call__(self, i, bgr=False): @@ -49,35 +52,33 @@ class Colors: colors = Colors() # create instance for 'from utils.plots import colors' -def check_font(font='Arial.ttf', size=10): +def check_pil_font(font=FONT, size=10): # Return a PIL TrueType Font, downloading to CONFIG_DIR if necessary font = Path(font) font = font if font.exists() else (CONFIG_DIR / font.name) try: return ImageFont.truetype(str(font) if font.exists() else font.name, size) - except Exception as e: # download if missing - url = "https://ultralytics.com/assets/" + font.name - print(f'Downloading {url} to {font}...') - torch.hub.download_url_to_file(url, str(font), progress=False) + except Exception: # download if missing try: + check_font(font) return ImageFont.truetype(str(font), size) except TypeError: check_requirements('Pillow>=8.4.0') # known issue https://github.com/ultralytics/yolov5/issues/5374 + except URLError: # not online + return ImageFont.load_default() class Annotator: - if RANK in (-1, 0): - check_font() # download TTF if necessary - - # Annotator for train/val mosaics and jpgs and detect/hub inference annotations + # YOLOv3 Annotator for train/val mosaics and jpgs and detect/hub inference annotations def __init__(self, im, line_width=None, font_size=None, font='Arial.ttf', pil=False, example='abc'): assert im.data.contiguous, 'Image not contiguous. Apply np.ascontiguousarray(im) to Annotator() input images.' - self.pil = pil or not is_ascii(example) or is_chinese(example) + non_ascii = not is_ascii(example) # non-latin labels, i.e. asian, arabic, cyrillic + self.pil = pil or non_ascii if self.pil: # use PIL self.im = im if isinstance(im, Image.Image) else Image.fromarray(im) self.draw = ImageDraw.Draw(self.im) - self.font = check_font(font='Arial.Unicode.ttf' if is_chinese(example) else font, - size=font_size or max(round(sum(self.im.size) / 2 * 0.035), 12)) + self.font = check_pil_font(font='Arial.Unicode.ttf' if non_ascii else font, + size=font_size or max(round(sum(self.im.size) / 2 * 0.035), 12)) else: # use cv2 self.im = im self.lw = line_width or max(round(sum(im.shape) / 2 * 0.003), 2) # line width @@ -87,12 +88,14 @@ class Annotator: if self.pil or not is_ascii(label): self.draw.rectangle(box, width=self.lw, outline=color) # box if label: - w, h = self.font.getsize(label) # text width, height + w, h = self.font.getsize(label) # text width, height (WARNING: deprecated) in 9.2.0 + # _, _, w, h = self.font.getbbox(label) # text width, height (New) outside = box[1] - h >= 0 # label fits outside box - self.draw.rectangle([box[0], - box[1] - h if outside else box[1], - box[0] + w + 1, - box[1] + 1 if outside else box[1] + h + 1], fill=color) + self.draw.rectangle( + (box[0], box[1] - h if outside else box[1], box[0] + w + 1, + box[1] + 1 if outside else box[1] + h + 1), + fill=color, + ) # self.draw.text((box[0], box[1]), label, fill=txt_color, font=self.font, anchor='ls') # for PIL>8.0 self.draw.text((box[0], box[1] - h if outside else box[1]), label, fill=txt_color, font=self.font) else: # cv2 @@ -101,20 +104,62 @@ class Annotator: if label: tf = max(self.lw - 1, 1) # font thickness w, h = cv2.getTextSize(label, 0, fontScale=self.lw / 3, thickness=tf)[0] # text width, height - outside = p1[1] - h - 3 >= 0 # label fits outside box + outside = p1[1] - h >= 3 p2 = p1[0] + w, p1[1] - h - 3 if outside else p1[1] + h + 3 cv2.rectangle(self.im, p1, p2, color, -1, cv2.LINE_AA) # filled - cv2.putText(self.im, label, (p1[0], p1[1] - 2 if outside else p1[1] + h + 2), 0, self.lw / 3, txt_color, - thickness=tf, lineType=cv2.LINE_AA) + cv2.putText(self.im, + label, (p1[0], p1[1] - 2 if outside else p1[1] + h + 2), + 0, + self.lw / 3, + txt_color, + thickness=tf, + lineType=cv2.LINE_AA) + + def masks(self, masks, colors, im_gpu, alpha=0.5, retina_masks=False): + """Plot masks at once. + Args: + masks (tensor): predicted masks on cuda, shape: [n, h, w] + colors (List[List[Int]]): colors for predicted masks, [[r, g, b] * n] + im_gpu (tensor): img is in cuda, shape: [3, h, w], range: [0, 1] + alpha (float): mask transparency: 0.0 fully transparent, 1.0 opaque + """ + if self.pil: + # convert to numpy first + self.im = np.asarray(self.im).copy() + if len(masks) == 0: + self.im[:] = im_gpu.permute(1, 2, 0).contiguous().cpu().numpy() * 255 + colors = torch.tensor(colors, device=im_gpu.device, dtype=torch.float32) / 255.0 + colors = colors[:, None, None] # shape(n,1,1,3) + masks = masks.unsqueeze(3) # shape(n,h,w,1) + masks_color = masks * (colors * alpha) # shape(n,h,w,3) + + inv_alph_masks = (1 - masks * alpha).cumprod(0) # shape(n,h,w,1) + mcs = (masks_color * inv_alph_masks).sum(0) * 2 # mask color summand shape(n,h,w,3) + + im_gpu = im_gpu.flip(dims=[0]) # flip channel + im_gpu = im_gpu.permute(1, 2, 0).contiguous() # shape(h,w,3) + im_gpu = im_gpu * inv_alph_masks[-1] + mcs + im_mask = (im_gpu * 255).byte().cpu().numpy() + self.im[:] = im_mask if retina_masks else scale_image(im_gpu.shape, im_mask, self.im.shape) + if self.pil: + # convert im back to PIL and update draw + self.fromarray(self.im) def rectangle(self, xy, fill=None, outline=None, width=1): # Add rectangle to image (PIL-only) self.draw.rectangle(xy, fill, outline, width) - def text(self, xy, text, txt_color=(255, 255, 255)): + def text(self, xy, text, txt_color=(255, 255, 255), anchor='top'): # Add text to image (PIL-only) - w, h = self.font.getsize(text) # text width, height - self.draw.text((xy[0], xy[1] - h + 1), text, fill=txt_color, font=self.font) + if anchor == 'bottom': # start y from font bottom + w, h = self.font.getsize(text) # text width, height + xy[1] += 1 - h + self.draw.text(xy, text, fill=txt_color, font=self.font) + + def fromarray(self, im): + # Update self.im from a numpy array + self.im = im if isinstance(im, Image.Image) else Image.fromarray(im) + self.draw = ImageDraw.Draw(self.im) def result(self): # Return annotated image as array @@ -132,7 +177,7 @@ def feature_visualization(x, module_type, stage, n=32, save_dir=Path('runs/detec if 'Detect' not in module_type: batch, channels, height, width = x.shape # batch, channels, height, width if height > 1 and width > 1: - f = f"stage{stage}_{module_type.split('.')[-1]}_features.png" # filename + f = save_dir / f"stage{stage}_{module_type.split('.')[-1]}_features.png" # filename blocks = torch.chunk(x[0].cpu(), channels, dim=0) # select batch index 0, block by channels n = min(n, channels) # number of plots @@ -143,9 +188,10 @@ def feature_visualization(x, module_type, stage, n=32, save_dir=Path('runs/detec ax[i].imshow(blocks[i].squeeze()) # cmap='gray' ax[i].axis('off') - print(f'Saving {save_dir / f}... ({n}/{channels})') - plt.savefig(save_dir / f, dpi=300, bbox_inches='tight') + LOGGER.info(f'Saving {f}... ({n}/{channels})') + plt.savefig(f, dpi=300, bbox_inches='tight') plt.close() + np.save(str(f.with_suffix('.npy')), x[0].cpu().numpy()) # npy save def hist2d(x, y, n=100): @@ -170,26 +216,31 @@ def butter_lowpass_filtfilt(data, cutoff=1500, fs=50000, order=5): return filtfilt(b, a, data) # forward-backward filter -def output_to_target(output): - # Convert model output to target format [batch_id, class_id, x, y, w, h, conf] +def output_to_target(output, max_det=300): + # Convert model output to target format [batch_id, class_id, x, y, w, h, conf] for plotting targets = [] for i, o in enumerate(output): - for *box, conf, cls in o.cpu().numpy(): - targets.append([i, cls, *list(*xyxy2xywh(np.array(box)[None])), conf]) - return np.array(targets) + box, conf, cls = o[:max_det, :6].cpu().split((4, 1, 1), 1) + j = torch.full((conf.shape[0], 1), i) + targets.append(torch.cat((j, cls, xyxy2xywh(box), conf), 1)) + return torch.cat(targets, 0).numpy() -def plot_images(images, targets, paths=None, fname='images.jpg', names=None, max_size=1920, max_subplots=16): +@threaded +def plot_images(images, targets, paths=None, fname='images.jpg', names=None): # Plot image grid with labels if isinstance(images, torch.Tensor): images = images.cpu().float().numpy() if isinstance(targets, torch.Tensor): targets = targets.cpu().numpy() - if np.max(images[0]) <= 1: - images *= 255 # de-normalise (optional) + + max_size = 1920 # max image size + max_subplots = 16 # max image subplots, i.e. 4x4 bs, _, h, w = images.shape # batch size, _, height, width bs = min(bs, max_subplots) # limit plot images ns = np.ceil(bs ** 0.5) # number of subplots (square) + if np.max(images[0]) <= 1: + images *= 255 # de-normalise (optional) # Build Image mosaic = np.full((int(ns * h), int(ns * w), 3), 255, dtype=np.uint8) # init @@ -209,12 +260,12 @@ def plot_images(images, targets, paths=None, fname='images.jpg', names=None, max # Annotate fs = int((h + w) * ns * 0.01) # font size - annotator = Annotator(mosaic, line_width=round(fs / 10), font_size=fs, pil=True) + annotator = Annotator(mosaic, line_width=round(fs / 10), font_size=fs, pil=True, example=names) for i in range(i + 1): x, y = int(w * (i // ns)), int(h * (i % ns)) # block origin annotator.rectangle([x, y, x + w, y + h], None, (255, 255, 255), width=2) # borders if paths: - annotator.text((x + 5, y + 5 + h), text=Path(paths[i]).name[:40], txt_color=(220, 220, 220)) # filenames + annotator.text((x + 5, y + 5), text=Path(paths[i]).name[:40], txt_color=(220, 220, 220)) # filenames if len(targets) > 0: ti = targets[targets[:, 0] == i] # image targets boxes = xywh2xyxy(ti[:, 2:6]).T @@ -295,7 +346,7 @@ def plot_val_study(file='', dir='', x=None): # from utils.plots import *; plot_ ax = plt.subplots(2, 4, figsize=(10, 6), tight_layout=True)[1].ravel() fig2, ax2 = plt.subplots(1, 1, figsize=(8, 4), tight_layout=True) - # for f in [save_dir / f'study_coco_{x}.txt' for x in ['yolov3', 'yolov3-spp', 'yolov3-tiny']]: + # for f in [save_dir / f'study_coco_{x}.txt' for x in ['yolov5n6', 'yolov5s6', 'yolov5m6', 'yolov5l6', 'yolov5x6']]: for f in sorted(save_dir.glob('study*.txt')): y = np.loadtxt(f, dtype=np.float32, usecols=[0, 1, 2, 3, 7, 8, 9], ndmin=2).T x = np.arange(y.shape[1]) if x is None else np.array(x) @@ -306,11 +357,19 @@ def plot_val_study(file='', dir='', x=None): # from utils.plots import *; plot_ ax[i].set_title(s[i]) j = y[3].argmax() + 1 - ax2.plot(y[5, 1:j], y[3, 1:j] * 1E2, '.-', linewidth=2, markersize=8, + ax2.plot(y[5, 1:j], + y[3, 1:j] * 1E2, + '.-', + linewidth=2, + markersize=8, label=f.stem.replace('study_coco_', '').replace('yolo', 'YOLO')) ax2.plot(1E3 / np.array([209, 140, 97, 58, 35, 18]), [34.6, 40.5, 43.0, 47.5, 49.7, 51.5], - 'k.-', linewidth=2, markersize=8, alpha=.25, label='EfficientDet') + 'k.-', + linewidth=2, + markersize=8, + alpha=.25, + label='EfficientDet') ax2.grid(alpha=0.2) ax2.set_yticks(np.arange(20, 60, 5)) @@ -324,8 +383,7 @@ def plot_val_study(file='', dir='', x=None): # from utils.plots import *; plot_ plt.savefig(f, dpi=300) -@try_except # known issue https://github.com/ultralytics/yolov5/issues/5395 -@Timeout(30) # known issue https://github.com/ultralytics/yolov5/issues/5611 +@TryExcept() # known issue https://github.com/ultralytics/yolov5/issues/5395 def plot_labels(labels, names=(), save_dir=Path('')): # plot dataset labels LOGGER.info(f"Plotting labels to {save_dir / 'labels.jpg'}... ") @@ -342,11 +400,12 @@ def plot_labels(labels, names=(), save_dir=Path('')): matplotlib.use('svg') # faster ax = plt.subplots(2, 2, figsize=(8, 8), tight_layout=True)[1].ravel() y = ax[0].hist(c, bins=np.linspace(0, nc, nc + 1) - 0.5, rwidth=0.8) - # [y[2].patches[i].set_color([x / 255 for x in colors(i)]) for i in range(nc)] # update colors bug #3195 + with contextlib.suppress(Exception): # color histogram bars by class + [y[2].patches[i].set_color([x / 255 for x in colors(i)]) for i in range(nc)] # known issue #3195 ax[0].set_ylabel('instances') if 0 < len(names) < 30: ax[0].set_xticks(range(len(names))) - ax[0].set_xticklabels(names, rotation=90, fontsize=10) + ax[0].set_xticklabels(list(names.values()), rotation=90, fontsize=10) else: ax[0].set_xlabel('classes') sn.histplot(x, x='x', y='y', ax=ax[2], bins=50, pmax=0.9) @@ -370,6 +429,35 @@ def plot_labels(labels, names=(), save_dir=Path('')): plt.close() +def imshow_cls(im, labels=None, pred=None, names=None, nmax=25, verbose=False, f=Path('images.jpg')): + # Show classification image grid with labels (optional) and predictions (optional) + from utils.augmentations import denormalize + + names = names or [f'class{i}' for i in range(1000)] + blocks = torch.chunk(denormalize(im.clone()).cpu().float(), len(im), + dim=0) # select batch index 0, block by channels + n = min(len(blocks), nmax) # number of plots + m = min(8, round(n ** 0.5)) # 8 x 8 default + fig, ax = plt.subplots(math.ceil(n / m), m) # 8 rows x n/8 cols + ax = ax.ravel() if m > 1 else [ax] + # plt.subplots_adjust(wspace=0.05, hspace=0.05) + for i in range(n): + ax[i].imshow(blocks[i].squeeze().permute((1, 2, 0)).numpy().clip(0.0, 1.0)) + ax[i].axis('off') + if labels is not None: + s = names[labels[i]] + (f'—{names[pred[i]]}' if pred is not None else '') + ax[i].set_title(s, fontsize=8, verticalalignment='top') + plt.savefig(f, dpi=300, bbox_inches='tight') + plt.close() + if verbose: + LOGGER.info(f"Saving {f}") + if labels is not None: + LOGGER.info('True: ' + ' '.join(f'{names[i]:3s}' for i in labels[:nmax])) + if pred is not None: + LOGGER.info('Predicted:' + ' '.join(f'{names[i]:3s}' for i in pred[:nmax])) + return f + + def plot_evolve(evolve_csv='path/to/evolve.csv'): # from utils.plots import *; plot_evolve() # Plot evolve.csv hyp evolution results evolve_csv = Path(evolve_csv) @@ -380,6 +468,7 @@ def plot_evolve(evolve_csv='path/to/evolve.csv'): # from utils.plots import *; j = np.argmax(f) # max fitness index plt.figure(figsize=(10, 12), tight_layout=True) matplotlib.rc('font', **{'size': 8}) + print(f'Best results from row {j} of {evolve_csv}:') for i, k in enumerate(keys[7:]): v = x[:, 7 + i] mu = v[j] # best single result @@ -403,20 +492,20 @@ def plot_results(file='path/to/results.csv', dir=''): ax = ax.ravel() files = list(save_dir.glob('results*.csv')) assert len(files), f'No results.csv files found in {save_dir.resolve()}, nothing to plot.' - for fi, f in enumerate(files): + for f in files: try: data = pd.read_csv(f) s = [x.strip() for x in data.columns] x = data.values[:, 0] for i, j in enumerate([1, 2, 3, 4, 5, 8, 9, 10, 6, 7]): - y = data.values[:, j] + y = data.values[:, j].astype('float') # y[y == 0] = np.nan # don't show zero values ax[i].plot(x, y, marker='.', label=f.stem, linewidth=2, markersize=8) ax[i].set_title(s[j], fontsize=12) # if j in [8, 9, 10]: # share train and val loss y axes # ax[i].get_shared_y_axes().join(ax[i], ax[i - 5]) except Exception as e: - print(f'Warning: Plotting error for {f}: {e}') + LOGGER.info(f'Warning: Plotting error for {f}: {e}') ax[1].legend() fig.savefig(save_dir / 'results.png', dpi=200) plt.close() @@ -453,7 +542,7 @@ def profile_idetection(start=0, stop=0, labels=(), save_dir=''): plt.savefig(Path(save_dir) / 'idetection_profile.png', dpi=200) -def save_one_box(xyxy, im, file='image.jpg', gain=1.02, pad=10, square=False, BGR=False, save=True): +def save_one_box(xyxy, im, file=Path('im.jpg'), gain=1.02, pad=10, square=False, BGR=False, save=True): # Save image crop as {file} with crop size multiple {gain} and {pad} pixels. Save and/or return crop xyxy = torch.tensor(xyxy).view(-1, 4) b = xyxy2xywh(xyxy) # boxes @@ -461,9 +550,11 @@ def save_one_box(xyxy, im, file='image.jpg', gain=1.02, pad=10, square=False, BG b[:, 2:] = b[:, 2:].max(1)[0].unsqueeze(1) # attempt rectangle to square b[:, 2:] = b[:, 2:] * gain + pad # box wh * gain + pad xyxy = xywh2xyxy(b).long() - clip_coords(xyxy, im.shape) + clip_boxes(xyxy, im.shape) crop = im[int(xyxy[0, 1]):int(xyxy[0, 3]), int(xyxy[0, 0]):int(xyxy[0, 2]), ::(1 if BGR else -1)] if save: file.parent.mkdir(parents=True, exist_ok=True) # make directory - cv2.imwrite(str(increment_path(file).with_suffix('.jpg')), crop) + f = str(increment_path(file).with_suffix('.jpg')) + # cv2.imwrite(f, crop) # save BGR, https://github.com/ultralytics/yolov5/issues/7007 chroma subsampling issue + Image.fromarray(crop[..., ::-1]).save(f, quality=95, subsampling=0) # save RGB return crop diff --git a/utils/segment/__init__.py b/utils/segment/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/utils/segment/augmentations.py b/utils/segment/augmentations.py new file mode 100644 index 00000000..2897b7f4 --- /dev/null +++ b/utils/segment/augmentations.py @@ -0,0 +1,104 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Image augmentation functions +""" + +import math +import random + +import cv2 +import numpy as np + +from ..augmentations import box_candidates +from ..general import resample_segments, segment2box + + +def mixup(im, labels, segments, im2, labels2, segments2): + # Applies MixUp augmentation https://arxiv.org/pdf/1710.09412.pdf + r = np.random.beta(32.0, 32.0) # mixup ratio, alpha=beta=32.0 + im = (im * r + im2 * (1 - r)).astype(np.uint8) + labels = np.concatenate((labels, labels2), 0) + segments = np.concatenate((segments, segments2), 0) + return im, labels, segments + + +def random_perspective(im, + targets=(), + segments=(), + degrees=10, + translate=.1, + scale=.1, + shear=10, + perspective=0.0, + border=(0, 0)): + # torchvision.transforms.RandomAffine(degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-10, 10)) + # targets = [cls, xyxy] + + height = im.shape[0] + border[0] * 2 # shape(h,w,c) + width = im.shape[1] + border[1] * 2 + + # Center + C = np.eye(3) + C[0, 2] = -im.shape[1] / 2 # x translation (pixels) + C[1, 2] = -im.shape[0] / 2 # y translation (pixels) + + # Perspective + P = np.eye(3) + P[2, 0] = random.uniform(-perspective, perspective) # x perspective (about y) + P[2, 1] = random.uniform(-perspective, perspective) # y perspective (about x) + + # Rotation and Scale + R = np.eye(3) + a = random.uniform(-degrees, degrees) + # a += random.choice([-180, -90, 0, 90]) # add 90deg rotations to small rotations + s = random.uniform(1 - scale, 1 + scale) + # s = 2 ** random.uniform(-scale, scale) + R[:2] = cv2.getRotationMatrix2D(angle=a, center=(0, 0), scale=s) + + # Shear + S = np.eye(3) + S[0, 1] = math.tan(random.uniform(-shear, shear) * math.pi / 180) # x shear (deg) + S[1, 0] = math.tan(random.uniform(-shear, shear) * math.pi / 180) # y shear (deg) + + # Translation + T = np.eye(3) + T[0, 2] = (random.uniform(0.5 - translate, 0.5 + translate) * width) # x translation (pixels) + T[1, 2] = (random.uniform(0.5 - translate, 0.5 + translate) * height) # y translation (pixels) + + # Combined rotation matrix + M = T @ S @ R @ P @ C # order of operations (right to left) is IMPORTANT + if (border[0] != 0) or (border[1] != 0) or (M != np.eye(3)).any(): # image changed + if perspective: + im = cv2.warpPerspective(im, M, dsize=(width, height), borderValue=(114, 114, 114)) + else: # affine + im = cv2.warpAffine(im, M[:2], dsize=(width, height), borderValue=(114, 114, 114)) + + # Visualize + # import matplotlib.pyplot as plt + # ax = plt.subplots(1, 2, figsize=(12, 6))[1].ravel() + # ax[0].imshow(im[:, :, ::-1]) # base + # ax[1].imshow(im2[:, :, ::-1]) # warped + + # Transform label coordinates + n = len(targets) + new_segments = [] + if n: + new = np.zeros((n, 4)) + segments = resample_segments(segments) # upsample + for i, segment in enumerate(segments): + xy = np.ones((len(segment), 3)) + xy[:, :2] = segment + xy = xy @ M.T # transform + xy = (xy[:, :2] / xy[:, 2:3] if perspective else xy[:, :2]) # perspective rescale or affine + + # clip + new[i] = segment2box(xy, width, height) + new_segments.append(xy) + + # filter candidates + i = box_candidates(box1=targets[:, 1:5].T * s, box2=new.T, area_thr=0.01) + targets = targets[i] + targets[:, 1:5] = new[i] + new_segments = np.array(new_segments)[i] + + return im, targets, new_segments diff --git a/utils/segment/dataloaders.py b/utils/segment/dataloaders.py new file mode 100644 index 00000000..2c5cdc2d --- /dev/null +++ b/utils/segment/dataloaders.py @@ -0,0 +1,332 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Dataloaders +""" + +import os +import random + +import cv2 +import numpy as np +import torch +from torch.utils.data import DataLoader, distributed + +from ..augmentations import augment_hsv, copy_paste, letterbox +from ..dataloaders import InfiniteDataLoader, LoadImagesAndLabels, seed_worker +from ..general import LOGGER, xyn2xy, xywhn2xyxy, xyxy2xywhn +from ..torch_utils import torch_distributed_zero_first +from .augmentations import mixup, random_perspective + +RANK = int(os.getenv('RANK', -1)) + + +def create_dataloader(path, + imgsz, + batch_size, + stride, + single_cls=False, + hyp=None, + augment=False, + cache=False, + pad=0.0, + rect=False, + rank=-1, + workers=8, + image_weights=False, + quad=False, + prefix='', + shuffle=False, + mask_downsample_ratio=1, + overlap_mask=False, + seed=0): + if rect and shuffle: + LOGGER.warning('WARNING ⚠️ --rect is incompatible with DataLoader shuffle, setting shuffle=False') + shuffle = False + with torch_distributed_zero_first(rank): # init dataset *.cache only once if DDP + dataset = LoadImagesAndLabelsAndMasks( + path, + imgsz, + batch_size, + augment=augment, # augmentation + hyp=hyp, # hyperparameters + rect=rect, # rectangular batches + cache_images=cache, + single_cls=single_cls, + stride=int(stride), + pad=pad, + image_weights=image_weights, + prefix=prefix, + downsample_ratio=mask_downsample_ratio, + overlap=overlap_mask) + + batch_size = min(batch_size, len(dataset)) + nd = torch.cuda.device_count() # number of CUDA devices + nw = min([os.cpu_count() // max(nd, 1), batch_size if batch_size > 1 else 0, workers]) # number of workers + sampler = None if rank == -1 else distributed.DistributedSampler(dataset, shuffle=shuffle) + loader = DataLoader if image_weights else InfiniteDataLoader # only DataLoader allows for attribute updates + generator = torch.Generator() + generator.manual_seed(6148914691236517205 + seed + RANK) + return loader( + dataset, + batch_size=batch_size, + shuffle=shuffle and sampler is None, + num_workers=nw, + sampler=sampler, + pin_memory=True, + collate_fn=LoadImagesAndLabelsAndMasks.collate_fn4 if quad else LoadImagesAndLabelsAndMasks.collate_fn, + worker_init_fn=seed_worker, + generator=generator, + ), dataset + + +class LoadImagesAndLabelsAndMasks(LoadImagesAndLabels): # for training/testing + + def __init__( + self, + path, + img_size=640, + batch_size=16, + augment=False, + hyp=None, + rect=False, + image_weights=False, + cache_images=False, + single_cls=False, + stride=32, + pad=0, + min_items=0, + prefix="", + downsample_ratio=1, + overlap=False, + ): + super().__init__(path, img_size, batch_size, augment, hyp, rect, image_weights, cache_images, single_cls, + stride, pad, min_items, prefix) + self.downsample_ratio = downsample_ratio + self.overlap = overlap + + def __getitem__(self, index): + index = self.indices[index] # linear, shuffled, or image_weights + + hyp = self.hyp + mosaic = self.mosaic and random.random() < hyp['mosaic'] + masks = [] + if mosaic: + # Load mosaic + img, labels, segments = self.load_mosaic(index) + shapes = None + + # MixUp augmentation + if random.random() < hyp["mixup"]: + img, labels, segments = mixup(img, labels, segments, *self.load_mosaic(random.randint(0, self.n - 1))) + + else: + # Load image + img, (h0, w0), (h, w) = self.load_image(index) + + # Letterbox + shape = self.batch_shapes[self.batch[index]] if self.rect else self.img_size # final letterboxed shape + img, ratio, pad = letterbox(img, shape, auto=False, scaleup=self.augment) + shapes = (h0, w0), ((h / h0, w / w0), pad) # for COCO mAP rescaling + + labels = self.labels[index].copy() + # [array, array, ....], array.shape=(num_points, 2), xyxyxyxy + segments = self.segments[index].copy() + if len(segments): + for i_s in range(len(segments)): + segments[i_s] = xyn2xy( + segments[i_s], + ratio[0] * w, + ratio[1] * h, + padw=pad[0], + padh=pad[1], + ) + if labels.size: # normalized xywh to pixel xyxy format + labels[:, 1:] = xywhn2xyxy(labels[:, 1:], ratio[0] * w, ratio[1] * h, padw=pad[0], padh=pad[1]) + + if self.augment: + img, labels, segments = random_perspective(img, + labels, + segments=segments, + degrees=hyp["degrees"], + translate=hyp["translate"], + scale=hyp["scale"], + shear=hyp["shear"], + perspective=hyp["perspective"]) + + nl = len(labels) # number of labels + if nl: + labels[:, 1:5] = xyxy2xywhn(labels[:, 1:5], w=img.shape[1], h=img.shape[0], clip=True, eps=1e-3) + if self.overlap: + masks, sorted_idx = polygons2masks_overlap(img.shape[:2], + segments, + downsample_ratio=self.downsample_ratio) + masks = masks[None] # (640, 640) -> (1, 640, 640) + labels = labels[sorted_idx] + else: + masks = polygons2masks(img.shape[:2], segments, color=1, downsample_ratio=self.downsample_ratio) + + masks = (torch.from_numpy(masks) if len(masks) else torch.zeros(1 if self.overlap else nl, img.shape[0] // + self.downsample_ratio, img.shape[1] // + self.downsample_ratio)) + # TODO: albumentations support + if self.augment: + # Albumentations + # there are some augmentation that won't change boxes and masks, + # so just be it for now. + img, labels = self.albumentations(img, labels) + nl = len(labels) # update after albumentations + + # HSV color-space + augment_hsv(img, hgain=hyp["hsv_h"], sgain=hyp["hsv_s"], vgain=hyp["hsv_v"]) + + # Flip up-down + if random.random() < hyp["flipud"]: + img = np.flipud(img) + if nl: + labels[:, 2] = 1 - labels[:, 2] + masks = torch.flip(masks, dims=[1]) + + # Flip left-right + if random.random() < hyp["fliplr"]: + img = np.fliplr(img) + if nl: + labels[:, 1] = 1 - labels[:, 1] + masks = torch.flip(masks, dims=[2]) + + # Cutouts # labels = cutout(img, labels, p=0.5) + + labels_out = torch.zeros((nl, 6)) + if nl: + labels_out[:, 1:] = torch.from_numpy(labels) + + # Convert + img = img.transpose((2, 0, 1))[::-1] # HWC to CHW, BGR to RGB + img = np.ascontiguousarray(img) + + return (torch.from_numpy(img), labels_out, self.im_files[index], shapes, masks) + + def load_mosaic(self, index): + # YOLOv5 4-mosaic loader. Loads 1 image + 3 random images into a 4-image mosaic + labels4, segments4 = [], [] + s = self.img_size + yc, xc = (int(random.uniform(-x, 2 * s + x)) for x in self.mosaic_border) # mosaic center x, y + + # 3 additional image indices + indices = [index] + random.choices(self.indices, k=3) # 3 additional image indices + for i, index in enumerate(indices): + # Load image + img, _, (h, w) = self.load_image(index) + + # place img in img4 + if i == 0: # top left + img4 = np.full((s * 2, s * 2, img.shape[2]), 114, dtype=np.uint8) # base image with 4 tiles + x1a, y1a, x2a, y2a = max(xc - w, 0), max(yc - h, 0), xc, yc # xmin, ymin, xmax, ymax (large image) + x1b, y1b, x2b, y2b = w - (x2a - x1a), h - (y2a - y1a), w, h # xmin, ymin, xmax, ymax (small image) + elif i == 1: # top right + x1a, y1a, x2a, y2a = xc, max(yc - h, 0), min(xc + w, s * 2), yc + x1b, y1b, x2b, y2b = 0, h - (y2a - y1a), min(w, x2a - x1a), h + elif i == 2: # bottom left + x1a, y1a, x2a, y2a = max(xc - w, 0), yc, xc, min(s * 2, yc + h) + x1b, y1b, x2b, y2b = w - (x2a - x1a), 0, w, min(y2a - y1a, h) + elif i == 3: # bottom right + x1a, y1a, x2a, y2a = xc, yc, min(xc + w, s * 2), min(s * 2, yc + h) + x1b, y1b, x2b, y2b = 0, 0, min(w, x2a - x1a), min(y2a - y1a, h) + + img4[y1a:y2a, x1a:x2a] = img[y1b:y2b, x1b:x2b] # img4[ymin:ymax, xmin:xmax] + padw = x1a - x1b + padh = y1a - y1b + + labels, segments = self.labels[index].copy(), self.segments[index].copy() + + if labels.size: + labels[:, 1:] = xywhn2xyxy(labels[:, 1:], w, h, padw, padh) # normalized xywh to pixel xyxy format + segments = [xyn2xy(x, w, h, padw, padh) for x in segments] + labels4.append(labels) + segments4.extend(segments) + + # Concat/clip labels + labels4 = np.concatenate(labels4, 0) + for x in (labels4[:, 1:], *segments4): + np.clip(x, 0, 2 * s, out=x) # clip when using random_perspective() + # img4, labels4 = replicate(img4, labels4) # replicate + + # Augment + img4, labels4, segments4 = copy_paste(img4, labels4, segments4, p=self.hyp["copy_paste"]) + img4, labels4, segments4 = random_perspective(img4, + labels4, + segments4, + degrees=self.hyp["degrees"], + translate=self.hyp["translate"], + scale=self.hyp["scale"], + shear=self.hyp["shear"], + perspective=self.hyp["perspective"], + border=self.mosaic_border) # border to remove + return img4, labels4, segments4 + + @staticmethod + def collate_fn(batch): + img, label, path, shapes, masks = zip(*batch) # transposed + batched_masks = torch.cat(masks, 0) + for i, l in enumerate(label): + l[:, 0] = i # add target image index for build_targets() + return torch.stack(img, 0), torch.cat(label, 0), path, shapes, batched_masks + + +def polygon2mask(img_size, polygons, color=1, downsample_ratio=1): + """ + Args: + img_size (tuple): The image size. + polygons (np.ndarray): [N, M], N is the number of polygons, + M is the number of points(Be divided by 2). + """ + mask = np.zeros(img_size, dtype=np.uint8) + polygons = np.asarray(polygons) + polygons = polygons.astype(np.int32) + shape = polygons.shape + polygons = polygons.reshape(shape[0], -1, 2) + cv2.fillPoly(mask, polygons, color=color) + nh, nw = (img_size[0] // downsample_ratio, img_size[1] // downsample_ratio) + # NOTE: fillPoly firstly then resize is trying the keep the same way + # of loss calculation when mask-ratio=1. + mask = cv2.resize(mask, (nw, nh)) + return mask + + +def polygons2masks(img_size, polygons, color, downsample_ratio=1): + """ + Args: + img_size (tuple): The image size. + polygons (list[np.ndarray]): each polygon is [N, M], + N is the number of polygons, + M is the number of points(Be divided by 2). + """ + masks = [] + for si in range(len(polygons)): + mask = polygon2mask(img_size, [polygons[si].reshape(-1)], color, downsample_ratio) + masks.append(mask) + return np.array(masks) + + +def polygons2masks_overlap(img_size, segments, downsample_ratio=1): + """Return a (640, 640) overlap mask.""" + masks = np.zeros((img_size[0] // downsample_ratio, img_size[1] // downsample_ratio), + dtype=np.int32 if len(segments) > 255 else np.uint8) + areas = [] + ms = [] + for si in range(len(segments)): + mask = polygon2mask( + img_size, + [segments[si].reshape(-1)], + downsample_ratio=downsample_ratio, + color=1, + ) + ms.append(mask) + areas.append(mask.sum()) + areas = np.asarray(areas) + index = np.argsort(-areas) + ms = np.array(ms)[index] + for i in range(len(segments)): + mask = ms[i] * (i + 1) + masks = masks + mask + masks = np.clip(masks, a_min=0, a_max=i + 1) + return masks, index diff --git a/utils/segment/general.py b/utils/segment/general.py new file mode 100644 index 00000000..9da89453 --- /dev/null +++ b/utils/segment/general.py @@ -0,0 +1,160 @@ +import cv2 +import numpy as np +import torch +import torch.nn.functional as F + + +def crop_mask(masks, boxes): + """ + "Crop" predicted masks by zeroing out everything not in the predicted bbox. + Vectorized by Chong (thanks Chong). + + Args: + - masks should be a size [h, w, n] tensor of masks + - boxes should be a size [n, 4] tensor of bbox coords in relative point form + """ + + n, h, w = masks.shape + x1, y1, x2, y2 = torch.chunk(boxes[:, :, None], 4, 1) # x1 shape(1,1,n) + r = torch.arange(w, device=masks.device, dtype=x1.dtype)[None, None, :] # rows shape(1,w,1) + c = torch.arange(h, device=masks.device, dtype=x1.dtype)[None, :, None] # cols shape(h,1,1) + + return masks * ((r >= x1) * (r < x2) * (c >= y1) * (c < y2)) + + +def process_mask_upsample(protos, masks_in, bboxes, shape): + """ + Crop after upsample. + protos: [mask_dim, mask_h, mask_w] + masks_in: [n, mask_dim], n is number of masks after nms + bboxes: [n, 4], n is number of masks after nms + shape: input_image_size, (h, w) + + return: h, w, n + """ + + c, mh, mw = protos.shape # CHW + masks = (masks_in @ protos.float().view(c, -1)).sigmoid().view(-1, mh, mw) + masks = F.interpolate(masks[None], shape, mode='bilinear', align_corners=False)[0] # CHW + masks = crop_mask(masks, bboxes) # CHW + return masks.gt_(0.5) + + +def process_mask(protos, masks_in, bboxes, shape, upsample=False): + """ + Crop before upsample. + proto_out: [mask_dim, mask_h, mask_w] + out_masks: [n, mask_dim], n is number of masks after nms + bboxes: [n, 4], n is number of masks after nms + shape:input_image_size, (h, w) + + return: h, w, n + """ + + c, mh, mw = protos.shape # CHW + ih, iw = shape + masks = (masks_in @ protos.float().view(c, -1)).sigmoid().view(-1, mh, mw) # CHW + + downsampled_bboxes = bboxes.clone() + downsampled_bboxes[:, 0] *= mw / iw + downsampled_bboxes[:, 2] *= mw / iw + downsampled_bboxes[:, 3] *= mh / ih + downsampled_bboxes[:, 1] *= mh / ih + + masks = crop_mask(masks, downsampled_bboxes) # CHW + if upsample: + masks = F.interpolate(masks[None], shape, mode='bilinear', align_corners=False)[0] # CHW + return masks.gt_(0.5) + + +def process_mask_native(protos, masks_in, bboxes, shape): + """ + Crop after upsample. + protos: [mask_dim, mask_h, mask_w] + masks_in: [n, mask_dim], n is number of masks after nms + bboxes: [n, 4], n is number of masks after nms + shape: input_image_size, (h, w) + + return: h, w, n + """ + c, mh, mw = protos.shape # CHW + masks = (masks_in @ protos.float().view(c, -1)).sigmoid().view(-1, mh, mw) + gain = min(mh / shape[0], mw / shape[1]) # gain = old / new + pad = (mw - shape[1] * gain) / 2, (mh - shape[0] * gain) / 2 # wh padding + top, left = int(pad[1]), int(pad[0]) # y, x + bottom, right = int(mh - pad[1]), int(mw - pad[0]) + masks = masks[:, top:bottom, left:right] + + masks = F.interpolate(masks[None], shape, mode='bilinear', align_corners=False)[0] # CHW + masks = crop_mask(masks, bboxes) # CHW + return masks.gt_(0.5) + + +def scale_image(im1_shape, masks, im0_shape, ratio_pad=None): + """ + img1_shape: model input shape, [h, w] + img0_shape: origin pic shape, [h, w, 3] + masks: [h, w, num] + """ + # Rescale coordinates (xyxy) from im1_shape to im0_shape + if ratio_pad is None: # calculate from im0_shape + gain = min(im1_shape[0] / im0_shape[0], im1_shape[1] / im0_shape[1]) # gain = old / new + pad = (im1_shape[1] - im0_shape[1] * gain) / 2, (im1_shape[0] - im0_shape[0] * gain) / 2 # wh padding + else: + pad = ratio_pad[1] + top, left = int(pad[1]), int(pad[0]) # y, x + bottom, right = int(im1_shape[0] - pad[1]), int(im1_shape[1] - pad[0]) + + if len(masks.shape) < 2: + raise ValueError(f'"len of masks shape" should be 2 or 3, but got {len(masks.shape)}') + masks = masks[top:bottom, left:right] + # masks = masks.permute(2, 0, 1).contiguous() + # masks = F.interpolate(masks[None], im0_shape[:2], mode='bilinear', align_corners=False)[0] + # masks = masks.permute(1, 2, 0).contiguous() + masks = cv2.resize(masks, (im0_shape[1], im0_shape[0])) + + if len(masks.shape) == 2: + masks = masks[:, :, None] + return masks + + +def mask_iou(mask1, mask2, eps=1e-7): + """ + mask1: [N, n] m1 means number of predicted objects + mask2: [M, n] m2 means number of gt objects + Note: n means image_w x image_h + + return: masks iou, [N, M] + """ + intersection = torch.matmul(mask1, mask2.t()).clamp(0) + union = (mask1.sum(1)[:, None] + mask2.sum(1)[None]) - intersection # (area1 + area2) - intersection + return intersection / (union + eps) + + +def masks_iou(mask1, mask2, eps=1e-7): + """ + mask1: [N, n] m1 means number of predicted objects + mask2: [N, n] m2 means number of gt objects + Note: n means image_w x image_h + + return: masks iou, (N, ) + """ + intersection = (mask1 * mask2).sum(1).clamp(0) # (N, ) + union = (mask1.sum(1) + mask2.sum(1))[None] - intersection # (area1 + area2) - intersection + return intersection / (union + eps) + + +def masks2segments(masks, strategy='largest'): + # Convert masks(n,160,160) into segments(n,xy) + segments = [] + for x in masks.int().cpu().numpy().astype('uint8'): + c = cv2.findContours(x, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[0] + if c: + if strategy == 'concat': # concatenate all segments + c = np.concatenate([x.reshape(-1, 2) for x in c]) + elif strategy == 'largest': # select largest segment + c = np.array(c[np.array([len(x) for x in c]).argmax()]).reshape(-1, 2) + else: + c = np.zeros((0, 2)) # no segments found + segments.append(c.astype('float32')) + return segments diff --git a/utils/segment/loss.py b/utils/segment/loss.py new file mode 100644 index 00000000..b45b2c27 --- /dev/null +++ b/utils/segment/loss.py @@ -0,0 +1,186 @@ +import torch +import torch.nn as nn +import torch.nn.functional as F + +from ..general import xywh2xyxy +from ..loss import FocalLoss, smooth_BCE +from ..metrics import bbox_iou +from ..torch_utils import de_parallel +from .general import crop_mask + + +class ComputeLoss: + # Compute losses + def __init__(self, model, autobalance=False, overlap=False): + self.sort_obj_iou = False + self.overlap = overlap + device = next(model.parameters()).device # get model device + h = model.hyp # hyperparameters + self.device = device + + # Define criteria + BCEcls = nn.BCEWithLogitsLoss(pos_weight=torch.tensor([h['cls_pw']], device=device)) + BCEobj = nn.BCEWithLogitsLoss(pos_weight=torch.tensor([h['obj_pw']], device=device)) + + # Class label smoothing https://arxiv.org/pdf/1902.04103.pdf eqn 3 + self.cp, self.cn = smooth_BCE(eps=h.get('label_smoothing', 0.0)) # positive, negative BCE targets + + # Focal loss + g = h['fl_gamma'] # focal loss gamma + if g > 0: + BCEcls, BCEobj = FocalLoss(BCEcls, g), FocalLoss(BCEobj, g) + + m = de_parallel(model).model[-1] # Detect() module + self.balance = {3: [4.0, 1.0, 0.4]}.get(m.nl, [4.0, 1.0, 0.25, 0.06, 0.02]) # P3-P7 + self.ssi = list(m.stride).index(16) if autobalance else 0 # stride 16 index + self.BCEcls, self.BCEobj, self.gr, self.hyp, self.autobalance = BCEcls, BCEobj, 1.0, h, autobalance + self.na = m.na # number of anchors + self.nc = m.nc # number of classes + self.nl = m.nl # number of layers + self.nm = m.nm # number of masks + self.anchors = m.anchors + self.device = device + + def __call__(self, preds, targets, masks): # predictions, targets, model + p, proto = preds + bs, nm, mask_h, mask_w = proto.shape # batch size, number of masks, mask height, mask width + lcls = torch.zeros(1, device=self.device) + lbox = torch.zeros(1, device=self.device) + lobj = torch.zeros(1, device=self.device) + lseg = torch.zeros(1, device=self.device) + tcls, tbox, indices, anchors, tidxs, xywhn = self.build_targets(p, targets) # targets + + # Losses + for i, pi in enumerate(p): # layer index, layer predictions + b, a, gj, gi = indices[i] # image, anchor, gridy, gridx + tobj = torch.zeros(pi.shape[:4], dtype=pi.dtype, device=self.device) # target obj + + n = b.shape[0] # number of targets + if n: + pxy, pwh, _, pcls, pmask = pi[b, a, gj, gi].split((2, 2, 1, self.nc, nm), 1) # subset of predictions + + # Box regression + pxy = pxy.sigmoid() * 2 - 0.5 + pwh = (pwh.sigmoid() * 2) ** 2 * anchors[i] + pbox = torch.cat((pxy, pwh), 1) # predicted box + iou = bbox_iou(pbox, tbox[i], CIoU=True).squeeze() # iou(prediction, target) + lbox += (1.0 - iou).mean() # iou loss + + # Objectness + iou = iou.detach().clamp(0).type(tobj.dtype) + if self.sort_obj_iou: + j = iou.argsort() + b, a, gj, gi, iou = b[j], a[j], gj[j], gi[j], iou[j] + if self.gr < 1: + iou = (1.0 - self.gr) + self.gr * iou + tobj[b, a, gj, gi] = iou # iou ratio + + # Classification + if self.nc > 1: # cls loss (only if multiple classes) + t = torch.full_like(pcls, self.cn, device=self.device) # targets + t[range(n), tcls[i]] = self.cp + lcls += self.BCEcls(pcls, t) # BCE + + # Mask regression + if tuple(masks.shape[-2:]) != (mask_h, mask_w): # downsample + masks = F.interpolate(masks[None], (mask_h, mask_w), mode="nearest")[0] + marea = xywhn[i][:, 2:].prod(1) # mask width, height normalized + mxyxy = xywh2xyxy(xywhn[i] * torch.tensor([mask_w, mask_h, mask_w, mask_h], device=self.device)) + for bi in b.unique(): + j = b == bi # matching index + if self.overlap: + mask_gti = torch.where(masks[bi][None] == tidxs[i][j].view(-1, 1, 1), 1.0, 0.0) + else: + mask_gti = masks[tidxs[i]][j] + lseg += self.single_mask_loss(mask_gti, pmask[j], proto[bi], mxyxy[j], marea[j]) + + obji = self.BCEobj(pi[..., 4], tobj) + lobj += obji * self.balance[i] # obj loss + if self.autobalance: + self.balance[i] = self.balance[i] * 0.9999 + 0.0001 / obji.detach().item() + + if self.autobalance: + self.balance = [x / self.balance[self.ssi] for x in self.balance] + lbox *= self.hyp["box"] + lobj *= self.hyp["obj"] + lcls *= self.hyp["cls"] + lseg *= self.hyp["box"] / bs + + loss = lbox + lobj + lcls + lseg + return loss * bs, torch.cat((lbox, lseg, lobj, lcls)).detach() + + def single_mask_loss(self, gt_mask, pred, proto, xyxy, area): + # Mask loss for one image + pred_mask = (pred @ proto.view(self.nm, -1)).view(-1, *proto.shape[1:]) # (n,32) @ (32,80,80) -> (n,80,80) + loss = F.binary_cross_entropy_with_logits(pred_mask, gt_mask, reduction="none") + return (crop_mask(loss, xyxy).mean(dim=(1, 2)) / area).mean() + + def build_targets(self, p, targets): + # Build targets for compute_loss(), input targets(image,class,x,y,w,h) + na, nt = self.na, targets.shape[0] # number of anchors, targets + tcls, tbox, indices, anch, tidxs, xywhn = [], [], [], [], [], [] + gain = torch.ones(8, device=self.device) # normalized to gridspace gain + ai = torch.arange(na, device=self.device).float().view(na, 1).repeat(1, nt) # same as .repeat_interleave(nt) + if self.overlap: + batch = p[0].shape[0] + ti = [] + for i in range(batch): + num = (targets[:, 0] == i).sum() # find number of targets of each image + ti.append(torch.arange(num, device=self.device).float().view(1, num).repeat(na, 1) + 1) # (na, num) + ti = torch.cat(ti, 1) # (na, nt) + else: + ti = torch.arange(nt, device=self.device).float().view(1, nt).repeat(na, 1) + targets = torch.cat((targets.repeat(na, 1, 1), ai[..., None], ti[..., None]), 2) # append anchor indices + + g = 0.5 # bias + off = torch.tensor( + [ + [0, 0], + [1, 0], + [0, 1], + [-1, 0], + [0, -1], # j,k,l,m + # [1, 1], [1, -1], [-1, 1], [-1, -1], # jk,jm,lk,lm + ], + device=self.device).float() * g # offsets + + for i in range(self.nl): + anchors, shape = self.anchors[i], p[i].shape + gain[2:6] = torch.tensor(shape)[[3, 2, 3, 2]] # xyxy gain + + # Match targets to anchors + t = targets * gain # shape(3,n,7) + if nt: + # Matches + r = t[..., 4:6] / anchors[:, None] # wh ratio + j = torch.max(r, 1 / r).max(2)[0] < self.hyp['anchor_t'] # compare + # j = wh_iou(anchors, t[:, 4:6]) > model.hyp['iou_t'] # iou(3,n)=wh_iou(anchors(3,2), gwh(n,2)) + t = t[j] # filter + + # Offsets + gxy = t[:, 2:4] # grid xy + gxi = gain[[2, 3]] - gxy # inverse + j, k = ((gxy % 1 < g) & (gxy > 1)).T + l, m = ((gxi % 1 < g) & (gxi > 1)).T + j = torch.stack((torch.ones_like(j), j, k, l, m)) + t = t.repeat((5, 1, 1))[j] + offsets = (torch.zeros_like(gxy)[None] + off[:, None])[j] + else: + t = targets[0] + offsets = 0 + + # Define + bc, gxy, gwh, at = t.chunk(4, 1) # (image, class), grid xy, grid wh, anchors + (a, tidx), (b, c) = at.long().T, bc.long().T # anchors, image, class + gij = (gxy - offsets).long() + gi, gj = gij.T # grid indices + + # Append + indices.append((b, a, gj.clamp_(0, shape[2] - 1), gi.clamp_(0, shape[3] - 1))) # image, anchor, grid + tbox.append(torch.cat((gxy - gij, gwh), 1)) # box + anch.append(anchors[a]) # anchors + tcls.append(c) # class + tidxs.append(tidx) + xywhn.append(torch.cat((gxy, gwh), 1) / gain[2:6]) # xywh normalized + + return tcls, tbox, indices, anch, tidxs, xywhn diff --git a/utils/segment/metrics.py b/utils/segment/metrics.py new file mode 100644 index 00000000..312e5858 --- /dev/null +++ b/utils/segment/metrics.py @@ -0,0 +1,210 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" +Model validation metrics +""" + +import numpy as np + +from ..metrics import ap_per_class + + +def fitness(x): + # Model fitness as a weighted combination of metrics + w = [0.0, 0.0, 0.1, 0.9, 0.0, 0.0, 0.1, 0.9] + return (x[:, :8] * w).sum(1) + + +def ap_per_class_box_and_mask( + tp_m, + tp_b, + conf, + pred_cls, + target_cls, + plot=False, + save_dir=".", + names=(), +): + """ + Args: + tp_b: tp of boxes. + tp_m: tp of masks. + other arguments see `func: ap_per_class`. + """ + results_boxes = ap_per_class(tp_b, + conf, + pred_cls, + target_cls, + plot=plot, + save_dir=save_dir, + names=names, + prefix="Box")[2:] + results_masks = ap_per_class(tp_m, + conf, + pred_cls, + target_cls, + plot=plot, + save_dir=save_dir, + names=names, + prefix="Mask")[2:] + + results = { + "boxes": { + "p": results_boxes[0], + "r": results_boxes[1], + "ap": results_boxes[3], + "f1": results_boxes[2], + "ap_class": results_boxes[4]}, + "masks": { + "p": results_masks[0], + "r": results_masks[1], + "ap": results_masks[3], + "f1": results_masks[2], + "ap_class": results_masks[4]}} + return results + + +class Metric: + + def __init__(self) -> None: + self.p = [] # (nc, ) + self.r = [] # (nc, ) + self.f1 = [] # (nc, ) + self.all_ap = [] # (nc, 10) + self.ap_class_index = [] # (nc, ) + + @property + def ap50(self): + """AP@0.5 of all classes. + Return: + (nc, ) or []. + """ + return self.all_ap[:, 0] if len(self.all_ap) else [] + + @property + def ap(self): + """AP@0.5:0.95 + Return: + (nc, ) or []. + """ + return self.all_ap.mean(1) if len(self.all_ap) else [] + + @property + def mp(self): + """mean precision of all classes. + Return: + float. + """ + return self.p.mean() if len(self.p) else 0.0 + + @property + def mr(self): + """mean recall of all classes. + Return: + float. + """ + return self.r.mean() if len(self.r) else 0.0 + + @property + def map50(self): + """Mean AP@0.5 of all classes. + Return: + float. + """ + return self.all_ap[:, 0].mean() if len(self.all_ap) else 0.0 + + @property + def map(self): + """Mean AP@0.5:0.95 of all classes. + Return: + float. + """ + return self.all_ap.mean() if len(self.all_ap) else 0.0 + + def mean_results(self): + """Mean of results, return mp, mr, map50, map""" + return (self.mp, self.mr, self.map50, self.map) + + def class_result(self, i): + """class-aware result, return p[i], r[i], ap50[i], ap[i]""" + return (self.p[i], self.r[i], self.ap50[i], self.ap[i]) + + def get_maps(self, nc): + maps = np.zeros(nc) + self.map + for i, c in enumerate(self.ap_class_index): + maps[c] = self.ap[i] + return maps + + def update(self, results): + """ + Args: + results: tuple(p, r, ap, f1, ap_class) + """ + p, r, all_ap, f1, ap_class_index = results + self.p = p + self.r = r + self.all_ap = all_ap + self.f1 = f1 + self.ap_class_index = ap_class_index + + +class Metrics: + """Metric for boxes and masks.""" + + def __init__(self) -> None: + self.metric_box = Metric() + self.metric_mask = Metric() + + def update(self, results): + """ + Args: + results: Dict{'boxes': Dict{}, 'masks': Dict{}} + """ + self.metric_box.update(list(results["boxes"].values())) + self.metric_mask.update(list(results["masks"].values())) + + def mean_results(self): + return self.metric_box.mean_results() + self.metric_mask.mean_results() + + def class_result(self, i): + return self.metric_box.class_result(i) + self.metric_mask.class_result(i) + + def get_maps(self, nc): + return self.metric_box.get_maps(nc) + self.metric_mask.get_maps(nc) + + @property + def ap_class_index(self): + # boxes and masks have the same ap_class_index + return self.metric_box.ap_class_index + + +KEYS = [ + "train/box_loss", + "train/seg_loss", # train loss + "train/obj_loss", + "train/cls_loss", + "metrics/precision(B)", + "metrics/recall(B)", + "metrics/mAP_0.5(B)", + "metrics/mAP_0.5:0.95(B)", # metrics + "metrics/precision(M)", + "metrics/recall(M)", + "metrics/mAP_0.5(M)", + "metrics/mAP_0.5:0.95(M)", # metrics + "val/box_loss", + "val/seg_loss", # val loss + "val/obj_loss", + "val/cls_loss", + "x/lr0", + "x/lr1", + "x/lr2",] + +BEST_KEYS = [ + "best/epoch", + "best/precision(B)", + "best/recall(B)", + "best/mAP_0.5(B)", + "best/mAP_0.5:0.95(B)", + "best/precision(M)", + "best/recall(M)", + "best/mAP_0.5(M)", + "best/mAP_0.5:0.95(M)",] diff --git a/utils/segment/plots.py b/utils/segment/plots.py new file mode 100644 index 00000000..9b90900b --- /dev/null +++ b/utils/segment/plots.py @@ -0,0 +1,143 @@ +import contextlib +import math +from pathlib import Path + +import cv2 +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd +import torch + +from .. import threaded +from ..general import xywh2xyxy +from ..plots import Annotator, colors + + +@threaded +def plot_images_and_masks(images, targets, masks, paths=None, fname='images.jpg', names=None): + # Plot image grid with labels + if isinstance(images, torch.Tensor): + images = images.cpu().float().numpy() + if isinstance(targets, torch.Tensor): + targets = targets.cpu().numpy() + if isinstance(masks, torch.Tensor): + masks = masks.cpu().numpy().astype(int) + + max_size = 1920 # max image size + max_subplots = 16 # max image subplots, i.e. 4x4 + bs, _, h, w = images.shape # batch size, _, height, width + bs = min(bs, max_subplots) # limit plot images + ns = np.ceil(bs ** 0.5) # number of subplots (square) + if np.max(images[0]) <= 1: + images *= 255 # de-normalise (optional) + + # Build Image + mosaic = np.full((int(ns * h), int(ns * w), 3), 255, dtype=np.uint8) # init + for i, im in enumerate(images): + if i == max_subplots: # if last batch has fewer images than we expect + break + x, y = int(w * (i // ns)), int(h * (i % ns)) # block origin + im = im.transpose(1, 2, 0) + mosaic[y:y + h, x:x + w, :] = im + + # Resize (optional) + scale = max_size / ns / max(h, w) + if scale < 1: + h = math.ceil(scale * h) + w = math.ceil(scale * w) + mosaic = cv2.resize(mosaic, tuple(int(x * ns) for x in (w, h))) + + # Annotate + fs = int((h + w) * ns * 0.01) # font size + annotator = Annotator(mosaic, line_width=round(fs / 10), font_size=fs, pil=True, example=names) + for i in range(i + 1): + x, y = int(w * (i // ns)), int(h * (i % ns)) # block origin + annotator.rectangle([x, y, x + w, y + h], None, (255, 255, 255), width=2) # borders + if paths: + annotator.text((x + 5, y + 5 + h), text=Path(paths[i]).name[:40], txt_color=(220, 220, 220)) # filenames + if len(targets) > 0: + idx = targets[:, 0] == i + ti = targets[idx] # image targets + + boxes = xywh2xyxy(ti[:, 2:6]).T + classes = ti[:, 1].astype('int') + labels = ti.shape[1] == 6 # labels if no conf column + conf = None if labels else ti[:, 6] # check for confidence presence (label vs pred) + + if boxes.shape[1]: + if boxes.max() <= 1.01: # if normalized with tolerance 0.01 + boxes[[0, 2]] *= w # scale to pixels + boxes[[1, 3]] *= h + elif scale < 1: # absolute coords need scale if image scales + boxes *= scale + boxes[[0, 2]] += x + boxes[[1, 3]] += y + for j, box in enumerate(boxes.T.tolist()): + cls = classes[j] + color = colors(cls) + cls = names[cls] if names else cls + if labels or conf[j] > 0.25: # 0.25 conf thresh + label = f'{cls}' if labels else f'{cls} {conf[j]:.1f}' + annotator.box_label(box, label, color=color) + + # Plot masks + if len(masks): + if masks.max() > 1.0: # mean that masks are overlap + image_masks = masks[[i]] # (1, 640, 640) + nl = len(ti) + index = np.arange(nl).reshape(nl, 1, 1) + 1 + image_masks = np.repeat(image_masks, nl, axis=0) + image_masks = np.where(image_masks == index, 1.0, 0.0) + else: + image_masks = masks[idx] + + im = np.asarray(annotator.im).copy() + for j, box in enumerate(boxes.T.tolist()): + if labels or conf[j] > 0.25: # 0.25 conf thresh + color = colors(classes[j]) + mh, mw = image_masks[j].shape + if mh != h or mw != w: + mask = image_masks[j].astype(np.uint8) + mask = cv2.resize(mask, (w, h)) + mask = mask.astype(bool) + else: + mask = image_masks[j].astype(bool) + with contextlib.suppress(Exception): + im[y:y + h, x:x + w, :][mask] = im[y:y + h, x:x + w, :][mask] * 0.4 + np.array(color) * 0.6 + annotator.fromarray(im) + annotator.im.save(fname) # save + + +def plot_results_with_masks(file="path/to/results.csv", dir="", best=True): + # Plot training results.csv. Usage: from utils.plots import *; plot_results('path/to/results.csv') + save_dir = Path(file).parent if file else Path(dir) + fig, ax = plt.subplots(2, 8, figsize=(18, 6), tight_layout=True) + ax = ax.ravel() + files = list(save_dir.glob("results*.csv")) + assert len(files), f"No results.csv files found in {save_dir.resolve()}, nothing to plot." + for f in files: + try: + data = pd.read_csv(f) + index = np.argmax(0.9 * data.values[:, 8] + 0.1 * data.values[:, 7] + 0.9 * data.values[:, 12] + + 0.1 * data.values[:, 11]) + s = [x.strip() for x in data.columns] + x = data.values[:, 0] + for i, j in enumerate([1, 2, 3, 4, 5, 6, 9, 10, 13, 14, 15, 16, 7, 8, 11, 12]): + y = data.values[:, j] + # y[y == 0] = np.nan # don't show zero values + ax[i].plot(x, y, marker=".", label=f.stem, linewidth=2, markersize=2) + if best: + # best + ax[i].scatter(index, y[index], color="r", label=f"best:{index}", marker="*", linewidth=3) + ax[i].set_title(s[j] + f"\n{round(y[index], 5)}") + else: + # last + ax[i].scatter(x[-1], y[-1], color="r", label="last", marker="*", linewidth=3) + ax[i].set_title(s[j] + f"\n{round(y[-1], 5)}") + # if j in [8, 9, 10]: # share train and val loss y axes + # ax[i].get_shared_y_axes().join(ax[i], ax[i - 5]) + except Exception as e: + print(f"Warning: Plotting error for {f}: {e}") + ax[1].legend() + fig.savefig(save_dir / "results.png", dpi=200) + plt.close() diff --git a/utils/torch_utils.py b/utils/torch_utils.py index d3692297..f259be7a 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -3,12 +3,12 @@ PyTorch utils """ -import datetime import math import os import platform import subprocess import time +import warnings from contextlib import contextmanager from copy import deepcopy from pathlib import Path @@ -17,20 +17,77 @@ import torch import torch.distributed as dist import torch.nn as nn import torch.nn.functional as F +from torch.nn.parallel import DistributedDataParallel as DDP -from utils.general import LOGGER +from utils.general import LOGGER, check_version, colorstr, file_date, git_describe + +LOCAL_RANK = int(os.getenv('LOCAL_RANK', -1)) # https://pytorch.org/docs/stable/elastic/run.html +RANK = int(os.getenv('RANK', -1)) +WORLD_SIZE = int(os.getenv('WORLD_SIZE', 1)) try: import thop # for FLOPs computation except ImportError: thop = None +# Suppress PyTorch warnings +warnings.filterwarnings('ignore', message='User provided device_type of \'cuda\', but CUDA is not available. Disabling') +warnings.filterwarnings('ignore', category=UserWarning) + + +def smart_inference_mode(torch_1_9=check_version(torch.__version__, '1.9.0')): + # Applies torch.inference_mode() decorator if torch>=1.9.0 else torch.no_grad() decorator + def decorate(fn): + return (torch.inference_mode if torch_1_9 else torch.no_grad)()(fn) + + return decorate + + +def smartCrossEntropyLoss(label_smoothing=0.0): + # Returns nn.CrossEntropyLoss with label smoothing enabled for torch>=1.10.0 + if check_version(torch.__version__, '1.10.0'): + return nn.CrossEntropyLoss(label_smoothing=label_smoothing) + if label_smoothing > 0: + LOGGER.warning(f'WARNING ⚠️ label smoothing {label_smoothing} requires torch>=1.10.0') + return nn.CrossEntropyLoss() + + +def smart_DDP(model): + # Model DDP creation with checks + assert not check_version(torch.__version__, '1.12.0', pinned=True), \ + 'torch==1.12.0 torchvision==0.13.0 DDP training is not supported due to a known issue. ' \ + 'Please upgrade or downgrade torch to use DDP. See https://github.com/ultralytics/yolov5/issues/8395' + if check_version(torch.__version__, '1.11.0'): + return DDP(model, device_ids=[LOCAL_RANK], output_device=LOCAL_RANK, static_graph=True) + else: + return DDP(model, device_ids=[LOCAL_RANK], output_device=LOCAL_RANK) + + +def reshape_classifier_output(model, n=1000): + # Update a TorchVision classification model to class count 'n' if required + from models.common import Classify + name, m = list((model.model if hasattr(model, 'model') else model).named_children())[-1] # last module + if isinstance(m, Classify): # YOLOv3 Classify() head + if m.linear.out_features != n: + m.linear = nn.Linear(m.linear.in_features, n) + elif isinstance(m, nn.Linear): # ResNet, EfficientNet + if m.out_features != n: + setattr(model, name, nn.Linear(m.in_features, n)) + elif isinstance(m, nn.Sequential): + types = [type(x) for x in m] + if nn.Linear in types: + i = types.index(nn.Linear) # nn.Linear index + if m[i].out_features != n: + m[i] = nn.Linear(m[i].in_features, n) + elif nn.Conv2d in types: + i = types.index(nn.Conv2d) # nn.Conv2d index + if m[i].out_channels != n: + m[i] = nn.Conv2d(m[i].in_channels, n, m[i].kernel_size, m[i].stride, bias=m[i].bias is not None) + @contextmanager def torch_distributed_zero_first(local_rank: int): - """ - Decorator to make all processes in distributed training wait for each local_master to do something. - """ + # Decorator to make all processes in distributed training wait for each local_master to do something if local_rank not in [-1, 0]: dist.barrier(device_ids=[local_rank]) yield @@ -38,69 +95,70 @@ def torch_distributed_zero_first(local_rank: int): dist.barrier(device_ids=[0]) -def date_modified(path=__file__): - # return human-readable file modification date, i.e. '2021-3-26' - t = datetime.datetime.fromtimestamp(Path(path).stat().st_mtime) - return f'{t.year}-{t.month}-{t.day}' - - -def git_describe(path=Path(__file__).parent): # path must be a directory - # return human-readable git description, i.e. v5.0-5-g3e25f1e https://git-scm.com/docs/git-describe - s = f'git -C {path} describe --tags --long --always' +def device_count(): + # Returns number of CUDA devices available. Safe version of torch.cuda.device_count(). Supports Linux and Windows + assert platform.system() in ('Linux', 'Windows'), 'device_count() only supported on Linux or Windows' try: - return subprocess.check_output(s, shell=True, stderr=subprocess.STDOUT).decode()[:-1] - except subprocess.CalledProcessError as e: - return '' # not a git repository + cmd = 'nvidia-smi -L | wc -l' if platform.system() == 'Linux' else 'nvidia-smi -L | find /c /v ""' # Windows + return int(subprocess.run(cmd, shell=True, capture_output=True, check=True).stdout.decode().split()[-1]) + except Exception: + return 0 -def select_device(device='', batch_size=None, newline=True): - # device = 'cpu' or '0' or '0,1,2,3' - s = f'YOLOv3 🚀 {git_describe() or date_modified()} torch {torch.__version__} ' # string - device = str(device).strip().lower().replace('cuda:', '') # to string, 'cuda:0' to '0' +def select_device(device='', batch_size=0, newline=True): + # device = None or 'cpu' or 0 or '0' or '0,1,2,3' + s = f'YOLOv3 🚀 {git_describe() or file_date()} Python-{platform.python_version()} torch-{torch.__version__} ' + device = str(device).strip().lower().replace('cuda:', '').replace('none', '') # to string, 'cuda:0' to '0' cpu = device == 'cpu' - if cpu: + mps = device == 'mps' # Apple Metal Performance Shaders (MPS) + if cpu or mps: os.environ['CUDA_VISIBLE_DEVICES'] = '-1' # force torch.cuda.is_available() = False elif device: # non-cpu device requested - os.environ['CUDA_VISIBLE_DEVICES'] = device # set environment variable - assert torch.cuda.is_available(), f'CUDA unavailable, invalid device {device} requested' # check availability + os.environ['CUDA_VISIBLE_DEVICES'] = device # set environment variable - must be before assert is_available() + assert torch.cuda.is_available() and torch.cuda.device_count() >= len(device.replace(',', '')), \ + f"Invalid CUDA '--device {device}' requested, use '--device cpu' or pass valid CUDA device(s)" - cuda = not cpu and torch.cuda.is_available() - if cuda: + if not cpu and not mps and torch.cuda.is_available(): # prefer GPU if available devices = device.split(',') if device else '0' # range(torch.cuda.device_count()) # i.e. 0,1,6,7 n = len(devices) # device count - if n > 1 and batch_size: # check batch_size is divisible by device_count + if n > 1 and batch_size > 0: # check batch_size is divisible by device_count assert batch_size % n == 0, f'batch-size {batch_size} not multiple of GPU count {n}' space = ' ' * (len(s) + 1) for i, d in enumerate(devices): p = torch.cuda.get_device_properties(i) - s += f"{'' if i == 0 else space}CUDA:{d} ({p.name}, {p.total_memory / 1024 ** 2:.0f}MiB)\n" # bytes to MB - else: + s += f"{'' if i == 0 else space}CUDA:{d} ({p.name}, {p.total_memory / (1 << 20):.0f}MiB)\n" # bytes to MB + arg = 'cuda:0' + elif mps and getattr(torch, 'has_mps', False) and torch.backends.mps.is_available(): # prefer MPS if available + s += 'MPS\n' + arg = 'mps' + else: # revert to CPU s += 'CPU\n' + arg = 'cpu' if not newline: s = s.rstrip() - LOGGER.info(s.encode().decode('ascii', 'ignore') if platform.system() == 'Windows' else s) # emoji-safe - return torch.device('cuda:0' if cuda else 'cpu') + LOGGER.info(s) + return torch.device(arg) def time_sync(): - # pytorch-accurate time + # PyTorch-accurate time if torch.cuda.is_available(): torch.cuda.synchronize() return time.time() def profile(input, ops, n=10, device=None): - # speed/memory/FLOPs profiler - # - # Usage: - # input = torch.randn(16, 3, 640, 640) - # m1 = lambda x: x * torch.sigmoid(x) - # m2 = nn.SiLU() - # profile(input, [m1, m2], n=100) # profile over 100 iterations - + """ YOLOv3 speed/memory/FLOPs profiler + Usage: + input = torch.randn(16, 3, 640, 640) + m1 = lambda x: x * torch.sigmoid(x) + m2 = nn.SiLU() + profile(input, [m1, m2], n=100) # profile over 100 iterations + """ results = [] - device = device or select_device() + if not isinstance(device, torch.device): + device = select_device(device) print(f"{'Params':>12s}{'GFLOPs':>12s}{'GPU_mem (GB)':>14s}{'forward (ms)':>14s}{'backward (ms)':>14s}" f"{'input':>24s}{'output':>24s}") @@ -113,7 +171,7 @@ def profile(input, ops, n=10, device=None): tf, tb, t = 0, 0, [0, 0, 0] # dt forward, backward try: flops = thop.profile(m, inputs=(x,), verbose=False)[0] / 1E9 * 2 # GFLOPs - except: + except Exception: flops = 0 try: @@ -124,15 +182,14 @@ def profile(input, ops, n=10, device=None): try: _ = (sum(yi.sum() for yi in y) if isinstance(y, list) else y).sum().backward() t[2] = time_sync() - except Exception as e: # no backward method + except Exception: # no backward method # print(e) # for debug t[2] = float('nan') tf += (t[1] - t[0]) * 1000 / n # ms per op forward tb += (t[2] - t[1]) * 1000 / n # ms per op backward mem = torch.cuda.memory_reserved() / 1E9 if torch.cuda.is_available() else 0 # (GB) - s_in = tuple(x.shape) if isinstance(x, torch.Tensor) else 'list' - s_out = tuple(y.shape) if isinstance(y, torch.Tensor) else 'list' - p = sum(list(x.numel() for x in m.parameters())) if isinstance(m, nn.Module) else 0 # parameters + s_in, s_out = (tuple(x.shape) if isinstance(x, torch.Tensor) else 'list' for x in (x, y)) # shapes + p = sum(x.numel() for x in m.parameters()) if isinstance(m, nn.Module) else 0 # parameters print(f'{p:12}{flops:12.4g}{mem:>14.3f}{tf:14.4g}{tb:14.4g}{str(s_in):>24s}{str(s_out):>24s}') results.append([p, flops, mem, tf, tb, s_in, s_out]) except Exception as e: @@ -181,30 +238,30 @@ def sparsity(model): def prune(model, amount=0.3): # Prune model to requested global sparsity import torch.nn.utils.prune as prune - print('Pruning model... ', end='') for name, m in model.named_modules(): if isinstance(m, nn.Conv2d): prune.l1_unstructured(m, name='weight', amount=amount) # prune prune.remove(m, 'weight') # make permanent - print(' %.3g global sparsity' % sparsity(model)) + LOGGER.info(f'Model pruned to {sparsity(model):.3g} global sparsity') def fuse_conv_and_bn(conv, bn): - # Fuse convolution and batchnorm layers https://tehnokv.com/posts/fusing-batchnorm-and-conv/ + # Fuse Conv2d() and BatchNorm2d() layers https://tehnokv.com/posts/fusing-batchnorm-and-conv/ fusedconv = nn.Conv2d(conv.in_channels, conv.out_channels, kernel_size=conv.kernel_size, stride=conv.stride, padding=conv.padding, + dilation=conv.dilation, groups=conv.groups, bias=True).requires_grad_(False).to(conv.weight.device) - # prepare filters + # Prepare filters w_conv = conv.weight.clone().view(conv.out_channels, -1) w_bn = torch.diag(bn.weight.div(torch.sqrt(bn.eps + bn.running_var))) fusedconv.weight.copy_(torch.mm(w_bn, w_conv).view(fusedconv.weight.shape)) - # prepare spatial bias + # Prepare spatial bias b_conv = torch.zeros(conv.weight.size(0), device=conv.weight.device) if conv.bias is None else conv.bias b_bn = bn.bias - bn.weight.mul(bn.running_mean).div(torch.sqrt(bn.running_var + bn.eps)) fusedconv.bias.copy_(torch.mm(w_bn, b_conv.reshape(-1, 1)).reshape(-1) + b_bn) @@ -212,7 +269,7 @@ def fuse_conv_and_bn(conv, bn): return fusedconv -def model_info(model, verbose=False, img_size=640): +def model_info(model, verbose=False, imgsz=640): # Model information. img_size may be int or list, i.e. img_size=640 or img_size=[640, 320] n_p = sum(x.numel() for x in model.parameters()) # number parameters n_g = sum(x.numel() for x in model.parameters() if x.requires_grad) # number gradients @@ -224,29 +281,29 @@ def model_info(model, verbose=False, img_size=640): (i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std())) try: # FLOPs - from thop import profile - stride = max(int(model.stride.max()), 32) if hasattr(model, 'stride') else 32 - img = torch.zeros((1, model.yaml.get('ch', 3), stride, stride), device=next(model.parameters()).device) # input - flops = profile(deepcopy(model), inputs=(img,), verbose=False)[0] / 1E9 * 2 # stride GFLOPs - img_size = img_size if isinstance(img_size, list) else [img_size, img_size] # expand if int/float - fs = ', %.1f GFLOPs' % (flops * img_size[0] / stride * img_size[1] / stride) # 640x640 GFLOPs - except (ImportError, Exception): + p = next(model.parameters()) + stride = max(int(model.stride.max()), 32) if hasattr(model, 'stride') else 32 # max stride + im = torch.empty((1, p.shape[1], stride, stride), device=p.device) # input image in BCHW format + flops = thop.profile(deepcopy(model), inputs=(im,), verbose=False)[0] / 1E9 * 2 # stride GFLOPs + imgsz = imgsz if isinstance(imgsz, list) else [imgsz, imgsz] # expand if int/float + fs = f', {flops * imgsz[0] / stride * imgsz[1] / stride:.1f} GFLOPs' # 640x640 GFLOPs + except Exception: fs = '' - LOGGER.info(f"Model Summary: {len(list(model.modules()))} layers, {n_p} parameters, {n_g} gradients{fs}") + name = Path(model.yaml_file).stem.replace('yolov5', 'YOLOv3') if hasattr(model, 'yaml_file') else 'Model' + LOGGER.info(f"{name} summary: {len(list(model.modules()))} layers, {n_p} parameters, {n_g} gradients{fs}") def scale_img(img, ratio=1.0, same_shape=False, gs=32): # img(16,3,256,416) - # scales img(bs,3,y,x) by ratio constrained to gs-multiple + # Scales img(bs,3,y,x) by ratio constrained to gs-multiple if ratio == 1.0: return img - else: - h, w = img.shape[2:] - s = (int(h * ratio), int(w * ratio)) # new size - img = F.interpolate(img, size=s, mode='bilinear', align_corners=False) # resize - if not same_shape: # pad/crop img - h, w = (math.ceil(x * ratio / gs) * gs for x in (h, w)) - return F.pad(img, [0, w - s[1], 0, h - s[0]], value=0.447) # value = imagenet mean + h, w = img.shape[2:] + s = (int(h * ratio), int(w * ratio)) # new size + img = F.interpolate(img, size=s, mode='bilinear', align_corners=False) # resize + if not same_shape: # pad/crop img + h, w = (math.ceil(x * ratio / gs) * gs for x in (h, w)) + return F.pad(img, [0, w - s[1], 0, h - s[0]], value=0.447) # value = imagenet mean def copy_attr(a, b, include=(), exclude=()): @@ -258,8 +315,71 @@ def copy_attr(a, b, include=(), exclude=()): setattr(a, k, v) +def smart_optimizer(model, name='Adam', lr=0.001, momentum=0.9, decay=1e-5): + # YOLOv3 3-param group optimizer: 0) weights with decay, 1) weights no decay, 2) biases no decay + g = [], [], [] # optimizer parameter groups + bn = tuple(v for k, v in nn.__dict__.items() if 'Norm' in k) # normalization layers, i.e. BatchNorm2d() + for v in model.modules(): + for p_name, p in v.named_parameters(recurse=0): + if p_name == 'bias': # bias (no decay) + g[2].append(p) + elif p_name == 'weight' and isinstance(v, bn): # weight (no decay) + g[1].append(p) + else: + g[0].append(p) # weight (with decay) + + if name == 'Adam': + optimizer = torch.optim.Adam(g[2], lr=lr, betas=(momentum, 0.999)) # adjust beta1 to momentum + elif name == 'AdamW': + optimizer = torch.optim.AdamW(g[2], lr=lr, betas=(momentum, 0.999), weight_decay=0.0) + elif name == 'RMSProp': + optimizer = torch.optim.RMSprop(g[2], lr=lr, momentum=momentum) + elif name == 'SGD': + optimizer = torch.optim.SGD(g[2], lr=lr, momentum=momentum, nesterov=True) + else: + raise NotImplementedError(f'Optimizer {name} not implemented.') + + optimizer.add_param_group({'params': g[0], 'weight_decay': decay}) # add g0 with weight_decay + optimizer.add_param_group({'params': g[1], 'weight_decay': 0.0}) # add g1 (BatchNorm2d weights) + LOGGER.info(f"{colorstr('optimizer:')} {type(optimizer).__name__}(lr={lr}) with parameter groups " + f"{len(g[1])} weight(decay=0.0), {len(g[0])} weight(decay={decay}), {len(g[2])} bias") + return optimizer + + +def smart_hub_load(repo='ultralytics/yolov5', model='yolov5s', **kwargs): + # YOLOv3 torch.hub.load() wrapper with smart error/issue handling + if check_version(torch.__version__, '1.9.1'): + kwargs['skip_validation'] = True # validation causes GitHub API rate limit errors + if check_version(torch.__version__, '1.12.0'): + kwargs['trust_repo'] = True # argument required starting in torch 0.12 + try: + return torch.hub.load(repo, model, **kwargs) + except Exception: + return torch.hub.load(repo, model, force_reload=True, **kwargs) + + +def smart_resume(ckpt, optimizer, ema=None, weights='yolov5s.pt', epochs=300, resume=True): + # Resume training from a partially trained checkpoint + best_fitness = 0.0 + start_epoch = ckpt['epoch'] + 1 + if ckpt['optimizer'] is not None: + optimizer.load_state_dict(ckpt['optimizer']) # optimizer + best_fitness = ckpt['best_fitness'] + if ema and ckpt.get('ema'): + ema.ema.load_state_dict(ckpt['ema'].float().state_dict()) # EMA + ema.updates = ckpt['updates'] + if resume: + assert start_epoch > 0, f'{weights} training to {epochs} epochs is finished, nothing to resume.\n' \ + f"Start a new training without --resume, i.e. 'python train.py --weights {weights}'" + LOGGER.info(f'Resuming training from {weights} from epoch {start_epoch} to {epochs} total epochs') + if epochs < start_epoch: + LOGGER.info(f"{weights} has been trained for {ckpt['epoch']} epochs. Fine-tuning for {epochs} more epochs.") + epochs += ckpt['epoch'] # finetune additional epochs + return best_fitness, start_epoch, epochs + + class EarlyStopping: - # simple early stopper + # YOLOv3 simple early stopper def __init__(self, patience=30): self.best_fitness = 0.0 # i.e. mAP self.best_epoch = 0 @@ -282,36 +402,30 @@ class EarlyStopping: class ModelEMA: - """ Model Exponential Moving Average from https://github.com/rwightman/pytorch-image-models - Keep a moving average of everything in the model state_dict (parameters and buffers). - This is intended to allow functionality like - https://www.tensorflow.org/api_docs/python/tf/train/ExponentialMovingAverage - A smoothed version of the weights is necessary for some training schemes to perform well. - This class is sensitive where it is initialized in the sequence of model init, - GPU assignment and distributed training wrappers. + """ Updated Exponential Moving Average (EMA) from https://github.com/rwightman/pytorch-image-models + Keeps a moving average of everything in the model state_dict (parameters and buffers) + For EMA details see https://www.tensorflow.org/api_docs/python/tf/train/ExponentialMovingAverage """ - def __init__(self, model, decay=0.9999, updates=0): + def __init__(self, model, decay=0.9999, tau=2000, updates=0): # Create EMA - self.ema = deepcopy(model.module if is_parallel(model) else model).eval() # FP32 EMA - # if next(model.parameters()).device.type != 'cpu': - # self.ema.half() # FP16 EMA + self.ema = deepcopy(de_parallel(model)).eval() # FP32 EMA self.updates = updates # number of EMA updates - self.decay = lambda x: decay * (1 - math.exp(-x / 2000)) # decay exponential ramp (to help early epochs) + self.decay = lambda x: decay * (1 - math.exp(-x / tau)) # decay exponential ramp (to help early epochs) for p in self.ema.parameters(): p.requires_grad_(False) def update(self, model): # Update EMA parameters - with torch.no_grad(): - self.updates += 1 - d = self.decay(self.updates) + self.updates += 1 + d = self.decay(self.updates) - msd = model.module.state_dict() if is_parallel(model) else model.state_dict() # model state_dict - for k, v in self.ema.state_dict().items(): - if v.dtype.is_floating_point: - v *= d - v += (1 - d) * msd[k].detach() + msd = de_parallel(model).state_dict() # model state_dict + for k, v in self.ema.state_dict().items(): + if v.dtype.is_floating_point: # true for FP16 and FP32 + v *= d + v += (1 - d) * msd[k].detach() + # assert v.dtype == msd[k].dtype == torch.float32, f'{k}: EMA {v.dtype} and model {msd[k].dtype} must be FP32' def update_attr(self, model, include=(), exclude=('process_group', 'reducer')): # Update EMA attributes diff --git a/utils/triton.py b/utils/triton.py new file mode 100644 index 00000000..f067eeaf --- /dev/null +++ b/utils/triton.py @@ -0,0 +1,85 @@ +# YOLOv3 🚀 by Ultralytics, GPL-3.0 license +""" Utils to interact with the Triton Inference Server +""" + +import typing +from urllib.parse import urlparse + +import torch + + +class TritonRemoteModel: + """ A wrapper over a model served by the Triton Inference Server. It can + be configured to communicate over GRPC or HTTP. It accepts Torch Tensors + as input and returns them as outputs. + """ + + def __init__(self, url: str): + """ + Keyword arguments: + url: Fully qualified address of the Triton server - for e.g. grpc://localhost:8000 + """ + + parsed_url = urlparse(url) + if parsed_url.scheme == "grpc": + from tritonclient.grpc import InferenceServerClient, InferInput + + self.client = InferenceServerClient(parsed_url.netloc) # Triton GRPC client + model_repository = self.client.get_model_repository_index() + self.model_name = model_repository.models[0].name + self.metadata = self.client.get_model_metadata(self.model_name, as_json=True) + + def create_input_placeholders() -> typing.List[InferInput]: + return [ + InferInput(i['name'], [int(s) for s in i["shape"]], i['datatype']) for i in self.metadata['inputs']] + + else: + from tritonclient.http import InferenceServerClient, InferInput + + self.client = InferenceServerClient(parsed_url.netloc) # Triton HTTP client + model_repository = self.client.get_model_repository_index() + self.model_name = model_repository[0]['name'] + self.metadata = self.client.get_model_metadata(self.model_name) + + def create_input_placeholders() -> typing.List[InferInput]: + return [ + InferInput(i['name'], [int(s) for s in i["shape"]], i['datatype']) for i in self.metadata['inputs']] + + self._create_input_placeholders_fn = create_input_placeholders + + @property + def runtime(self): + """Returns the model runtime""" + return self.metadata.get("backend", self.metadata.get("platform")) + + def __call__(self, *args, **kwargs) -> typing.Union[torch.Tensor, typing.Tuple[torch.Tensor, ...]]: + """ Invokes the model. Parameters can be provided via args or kwargs. + args, if provided, are assumed to match the order of inputs of the model. + kwargs are matched with the model input names. + """ + inputs = self._create_inputs(*args, **kwargs) + response = self.client.infer(model_name=self.model_name, inputs=inputs) + result = [] + for output in self.metadata['outputs']: + tensor = torch.as_tensor(response.as_numpy(output['name'])) + result.append(tensor) + return result[0] if len(result) == 1 else result + + def _create_inputs(self, *args, **kwargs): + args_len, kwargs_len = len(args), len(kwargs) + if not args_len and not kwargs_len: + raise RuntimeError("No inputs provided.") + if args_len and kwargs_len: + raise RuntimeError("Cannot specify args and kwargs at the same time") + + placeholders = self._create_input_placeholders_fn() + if args_len: + if args_len != len(placeholders): + raise RuntimeError(f"Expected {len(placeholders)} inputs, got {args_len}.") + for input, value in zip(placeholders, args): + input.set_data_from_numpy(value.cpu().numpy()) + else: + for input in placeholders: + value = kwargs[input.name] + input.set_data_from_numpy(value.cpu().numpy()) + return placeholders diff --git a/val.py b/val.py index 24b28ad1..f8868494 100644 --- a/val.py +++ b/val.py @@ -1,17 +1,30 @@ # YOLOv3 🚀 by Ultralytics, GPL-3.0 license """ -Validate a trained model accuracy on a custom dataset +Validate a trained YOLOv3 detection model on a detection dataset Usage: - $ python path/to/val.py --data coco128.yaml --weights yolov3.pt --img 640 + $ python val.py --weights yolov5s.pt --data coco128.yaml --img 640 + +Usage - formats: + $ python val.py --weights yolov5s.pt # PyTorch + yolov5s.torchscript # TorchScript + yolov5s.onnx # ONNX Runtime or OpenCV DNN with --dnn + yolov5s_openvino_model # OpenVINO + yolov5s.engine # TensorRT + yolov5s.mlmodel # CoreML (macOS-only) + yolov5s_saved_model # TensorFlow SavedModel + yolov5s.pb # TensorFlow GraphDef + yolov5s.tflite # TensorFlow Lite + yolov5s_edgetpu.tflite # TensorFlow Edge TPU + yolov5s_paddle_model # PaddlePaddle """ import argparse import json import os +import subprocess import sys from pathlib import Path -from threading import Thread import numpy as np import torch @@ -25,13 +38,13 @@ ROOT = Path(os.path.relpath(ROOT, Path.cwd())) # relative from models.common import DetectMultiBackend from utils.callbacks import Callbacks -from utils.datasets import create_dataloader -from utils.general import (LOGGER, NCOLS, box_iou, check_dataset, check_img_size, check_requirements, check_yaml, - coco80_to_coco91_class, colorstr, increment_path, non_max_suppression, print_args, - scale_coords, xywh2xyxy, xyxy2xywh) -from utils.metrics import ConfusionMatrix, ap_per_class +from utils.dataloaders import create_dataloader +from utils.general import (LOGGER, TQDM_BAR_FORMAT, Profile, check_dataset, check_img_size, check_requirements, + check_yaml, coco80_to_coco91_class, colorstr, increment_path, non_max_suppression, + print_args, scale_boxes, xywh2xyxy, xyxy2xywh) +from utils.metrics import ConfusionMatrix, ap_per_class, box_iou from utils.plots import output_to_target, plot_images, plot_val_study -from utils.torch_utils import select_device, time_sync +from utils.torch_utils import select_device, smart_inference_mode def save_one_txt(predn, save_conf, shape, file): @@ -50,45 +63,50 @@ def save_one_json(predn, jdict, path, class_map): box = xyxy2xywh(predn[:, :4]) # xywh box[:, :2] -= box[:, 2:] / 2 # xy center to top-left corner for p, b in zip(predn.tolist(), box.tolist()): - jdict.append({'image_id': image_id, - 'category_id': class_map[int(p[5])], - 'bbox': [round(x, 3) for x in b], - 'score': round(p[4], 5)}) + jdict.append({ + 'image_id': image_id, + 'category_id': class_map[int(p[5])], + 'bbox': [round(x, 3) for x in b], + 'score': round(p[4], 5)}) def process_batch(detections, labels, iouv): """ - Return correct predictions matrix. Both sets of boxes are in (x1, y1, x2, y2) format. + Return correct prediction matrix Arguments: - detections (Array[N, 6]), x1, y1, x2, y2, conf, class - labels (Array[M, 5]), class, x1, y1, x2, y2 + detections (array[N, 6]), x1, y1, x2, y2, conf, class + labels (array[M, 5]), class, x1, y1, x2, y2 Returns: - correct (Array[N, 10]), for 10 IoU levels + correct (array[N, 10]), for 10 IoU levels """ - correct = torch.zeros(detections.shape[0], iouv.shape[0], dtype=torch.bool, device=iouv.device) + correct = np.zeros((detections.shape[0], iouv.shape[0])).astype(bool) iou = box_iou(labels[:, 1:], detections[:, :4]) - x = torch.where((iou >= iouv[0]) & (labels[:, 0:1] == detections[:, 5])) # IoU above threshold and classes match - if x[0].shape[0]: - matches = torch.cat((torch.stack(x, 1), iou[x[0], x[1]][:, None]), 1).cpu().numpy() # [label, detection, iou] - if x[0].shape[0] > 1: - matches = matches[matches[:, 2].argsort()[::-1]] - matches = matches[np.unique(matches[:, 1], return_index=True)[1]] - # matches = matches[matches[:, 2].argsort()[::-1]] - matches = matches[np.unique(matches[:, 0], return_index=True)[1]] - matches = torch.Tensor(matches).to(iouv.device) - correct[matches[:, 1].long()] = matches[:, 2:3] >= iouv - return correct + correct_class = labels[:, 0:1] == detections[:, 5] + for i in range(len(iouv)): + x = torch.where((iou >= iouv[i]) & correct_class) # IoU > threshold and classes match + if x[0].shape[0]: + matches = torch.cat((torch.stack(x, 1), iou[x[0], x[1]][:, None]), 1).cpu().numpy() # [label, detect, iou] + if x[0].shape[0] > 1: + matches = matches[matches[:, 2].argsort()[::-1]] + matches = matches[np.unique(matches[:, 1], return_index=True)[1]] + # matches = matches[matches[:, 2].argsort()[::-1]] + matches = matches[np.unique(matches[:, 0], return_index=True)[1]] + correct[matches[:, 1].astype(int), i] = True + return torch.tensor(correct, dtype=torch.bool, device=iouv.device) -@torch.no_grad() -def run(data, +@smart_inference_mode() +def run( + data, weights=None, # model.pt path(s) batch_size=32, # batch size imgsz=640, # inference size (pixels) conf_thres=0.001, # confidence threshold iou_thres=0.6, # NMS IoU threshold + max_det=300, # maximum detections per image task='val', # train, val, test, speed or study device='', # cuda device, i.e. 0 or 0,1,2,3 or cpu + workers=8, # max dataloader workers (per RANK in DDP mode) single_cls=False, # treat as single-class dataset augment=False, # augmented inference verbose=False, # verbose output @@ -107,12 +125,11 @@ def run(data, plots=True, callbacks=Callbacks(), compute_loss=None, - ): +): # Initialize/load model and set device training = model is not None if training: # called by train.py - device, pt = next(model.parameters()).device, True # get model device, PyTorch model - + device, pt, jit, engine = next(model.parameters()).device, True, False, False # get model device, PyTorch model half &= device.type != 'cpu' # half precision only supported on CUDA model.half() if half else model.float() else: # called directly @@ -123,130 +140,149 @@ def run(data, (save_dir / 'labels' if save_txt else save_dir).mkdir(parents=True, exist_ok=True) # make dir # Load model - model = DetectMultiBackend(weights, device=device, dnn=dnn) - stride, pt = model.stride, model.pt + model = DetectMultiBackend(weights, device=device, dnn=dnn, data=data, fp16=half) + stride, pt, jit, engine = model.stride, model.pt, model.jit, model.engine imgsz = check_img_size(imgsz, s=stride) # check image size - half &= pt and device.type != 'cpu' # half precision only supported by PyTorch on CUDA - if pt: - model.model.half() if half else model.model.float() + half = model.fp16 # FP16 supported on limited backends with CUDA + if engine: + batch_size = model.batch_size else: - half = False - batch_size = 1 # export.py models default to batch-size 1 - device = torch.device('cpu') - LOGGER.info(f'Forcing --batch-size 1 square inference shape(1,3,{imgsz},{imgsz}) for non-PyTorch backends') + device = model.device + if not (pt or jit): + batch_size = 1 # export.py models default to batch-size 1 + LOGGER.info(f'Forcing --batch-size 1 square inference (1,3,{imgsz},{imgsz}) for non-PyTorch models') # Data data = check_dataset(data) # check # Configure model.eval() - is_coco = isinstance(data.get('val'), str) and data['val'].endswith('coco/val2017.txt') # COCO dataset + cuda = device.type != 'cpu' + is_coco = isinstance(data.get('val'), str) and data['val'].endswith(f'coco{os.sep}val2017.txt') # COCO dataset nc = 1 if single_cls else int(data['nc']) # number of classes - iouv = torch.linspace(0.5, 0.95, 10).to(device) # iou vector for mAP@0.5:0.95 + iouv = torch.linspace(0.5, 0.95, 10, device=device) # iou vector for mAP@0.5:0.95 niou = iouv.numel() # Dataloader if not training: - if pt and device.type != 'cpu': - model(torch.zeros(1, 3, imgsz, imgsz).to(device).type_as(next(model.model.parameters()))) # warmup - pad = 0.0 if task == 'speed' else 0.5 + if pt and not single_cls: # check --weights are trained on --data + ncm = model.model.nc + assert ncm == nc, f'{weights} ({ncm} classes) trained on different --data than what you passed ({nc} ' \ + f'classes). Pass correct combination of --weights and --data that are trained together.' + model.warmup(imgsz=(1 if pt else batch_size, 3, imgsz, imgsz)) # warmup + pad, rect = (0.0, False) if task == 'speed' else (0.5, pt) # square inference for benchmarks task = task if task in ('train', 'val', 'test') else 'val' # path to train/val/test images - dataloader = create_dataloader(data[task], imgsz, batch_size, stride, single_cls, pad=pad, rect=pt, + dataloader = create_dataloader(data[task], + imgsz, + batch_size, + stride, + single_cls, + pad=pad, + rect=rect, + workers=workers, prefix=colorstr(f'{task}: '))[0] seen = 0 confusion_matrix = ConfusionMatrix(nc=nc) - names = {k: v for k, v in enumerate(model.names if hasattr(model, 'names') else model.module.names)} + names = model.names if hasattr(model, 'names') else model.module.names # get class names + if isinstance(names, (list, tuple)): # old format + names = dict(enumerate(names)) class_map = coco80_to_coco91_class() if is_coco else list(range(1000)) - s = ('%20s' + '%11s' * 6) % ('Class', 'Images', 'Labels', 'P', 'R', 'mAP@.5', 'mAP@.5:.95') - dt, p, r, f1, mp, mr, map50, map = [0.0, 0.0, 0.0], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + s = ('%22s' + '%11s' * 6) % ('Class', 'Images', 'Instances', 'P', 'R', 'mAP50', 'mAP50-95') + tp, fp, p, r, f1, mp, mr, map50, ap50, map = 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 + dt = Profile(), Profile(), Profile() # profiling times loss = torch.zeros(3, device=device) jdict, stats, ap, ap_class = [], [], [], [] - pbar = tqdm(dataloader, desc=s, ncols=NCOLS, bar_format='{l_bar}{bar:10}{r_bar}{bar:-10b}') # progress bar + callbacks.run('on_val_start') + pbar = tqdm(dataloader, desc=s, bar_format=TQDM_BAR_FORMAT) # progress bar for batch_i, (im, targets, paths, shapes) in enumerate(pbar): - t1 = time_sync() - if pt: - im = im.to(device, non_blocking=True) - targets = targets.to(device) - im = im.half() if half else im.float() # uint8 to fp16/32 - im /= 255 # 0 - 255 to 0.0 - 1.0 - nb, _, height, width = im.shape # batch size, channels, height, width - t2 = time_sync() - dt[0] += t2 - t1 + callbacks.run('on_val_batch_start') + with dt[0]: + if cuda: + im = im.to(device, non_blocking=True) + targets = targets.to(device) + im = im.half() if half else im.float() # uint8 to fp16/32 + im /= 255 # 0 - 255 to 0.0 - 1.0 + nb, _, height, width = im.shape # batch size, channels, height, width # Inference - out, train_out = model(im) if training else model(im, augment=augment, val=True) # inference, loss outputs - dt[1] += time_sync() - t2 + with dt[1]: + preds, train_out = model(im) if compute_loss else (model(im, augment=augment), None) # Loss if compute_loss: - loss += compute_loss([x.float() for x in train_out], targets)[1] # box, obj, cls + loss += compute_loss(train_out, targets)[1] # box, obj, cls # NMS - targets[:, 2:] *= torch.Tensor([width, height, width, height]).to(device) # to pixels + targets[:, 2:] *= torch.tensor((width, height, width, height), device=device) # to pixels lb = [targets[targets[:, 0] == i, 1:] for i in range(nb)] if save_hybrid else [] # for autolabelling - t3 = time_sync() - out = non_max_suppression(out, conf_thres, iou_thres, labels=lb, multi_label=True, agnostic=single_cls) - dt[2] += time_sync() - t3 + with dt[2]: + preds = non_max_suppression(preds, + conf_thres, + iou_thres, + labels=lb, + multi_label=True, + agnostic=single_cls, + max_det=max_det) # Metrics - for si, pred in enumerate(out): + for si, pred in enumerate(preds): labels = targets[targets[:, 0] == si, 1:] - nl = len(labels) - tcls = labels[:, 0].tolist() if nl else [] # target class + nl, npr = labels.shape[0], pred.shape[0] # number of labels, predictions path, shape = Path(paths[si]), shapes[si][0] + correct = torch.zeros(npr, niou, dtype=torch.bool, device=device) # init seen += 1 - if len(pred) == 0: + if npr == 0: if nl: - stats.append((torch.zeros(0, niou, dtype=torch.bool), torch.Tensor(), torch.Tensor(), tcls)) + stats.append((correct, *torch.zeros((2, 0), device=device), labels[:, 0])) + if plots: + confusion_matrix.process_batch(detections=None, labels=labels[:, 0]) continue # Predictions if single_cls: pred[:, 5] = 0 predn = pred.clone() - scale_coords(im[si].shape[1:], predn[:, :4], shape, shapes[si][1]) # native-space pred + scale_boxes(im[si].shape[1:], predn[:, :4], shape, shapes[si][1]) # native-space pred # Evaluate if nl: tbox = xywh2xyxy(labels[:, 1:5]) # target boxes - scale_coords(im[si].shape[1:], tbox, shape, shapes[si][1]) # native-space labels + scale_boxes(im[si].shape[1:], tbox, shape, shapes[si][1]) # native-space labels labelsn = torch.cat((labels[:, 0:1], tbox), 1) # native-space labels correct = process_batch(predn, labelsn, iouv) if plots: confusion_matrix.process_batch(predn, labelsn) - else: - correct = torch.zeros(pred.shape[0], niou, dtype=torch.bool) - stats.append((correct.cpu(), pred[:, 4].cpu(), pred[:, 5].cpu(), tcls)) # (correct, conf, pcls, tcls) + stats.append((correct, pred[:, 4], pred[:, 5], labels[:, 0])) # (correct, conf, pcls, tcls) # Save/log if save_txt: - save_one_txt(predn, save_conf, shape, file=save_dir / 'labels' / (path.stem + '.txt')) + save_one_txt(predn, save_conf, shape, file=save_dir / 'labels' / f'{path.stem}.txt') if save_json: save_one_json(predn, jdict, path, class_map) # append to COCO-JSON dictionary callbacks.run('on_val_image_end', pred, predn, path, names, im[si]) # Plot images if plots and batch_i < 3: - f = save_dir / f'val_batch{batch_i}_labels.jpg' # labels - Thread(target=plot_images, args=(im, targets, paths, f, names), daemon=True).start() - f = save_dir / f'val_batch{batch_i}_pred.jpg' # predictions - Thread(target=plot_images, args=(im, output_to_target(out), paths, f, names), daemon=True).start() + plot_images(im, targets, paths, save_dir / f'val_batch{batch_i}_labels.jpg', names) # labels + plot_images(im, output_to_target(preds), paths, save_dir / f'val_batch{batch_i}_pred.jpg', names) # pred + + callbacks.run('on_val_batch_end', batch_i, im, targets, paths, shapes, preds) # Compute metrics - stats = [np.concatenate(x, 0) for x in zip(*stats)] # to numpy + stats = [torch.cat(x, 0).cpu().numpy() for x in zip(*stats)] # to numpy if len(stats) and stats[0].any(): - p, r, ap, f1, ap_class = ap_per_class(*stats, plot=plots, save_dir=save_dir, names=names) + tp, fp, p, r, f1, ap, ap_class = ap_per_class(*stats, plot=plots, save_dir=save_dir, names=names) ap50, ap = ap[:, 0], ap.mean(1) # AP@0.5, AP@0.5:0.95 mp, mr, map50, map = p.mean(), r.mean(), ap50.mean(), ap.mean() - nt = np.bincount(stats[3].astype(np.int64), minlength=nc) # number of targets per class - else: - nt = torch.zeros(1) + nt = np.bincount(stats[3].astype(int), minlength=nc) # number of targets per class # Print results - pf = '%20s' + '%11i' * 2 + '%11.3g' * 4 # print format + pf = '%22s' + '%11i' * 2 + '%11.3g' * 4 # print format LOGGER.info(pf % ('all', seen, nt.sum(), mp, mr, map50, map)) + if nt.sum() == 0: + LOGGER.warning(f'WARNING ⚠️ no labels found in {task} set, can not compute metrics without labels') # Print results per class if (verbose or (nc < 50 and not training)) and nc > 1 and len(stats): @@ -254,7 +290,7 @@ def run(data, LOGGER.info(pf % (names[c], seen, nt[c], p[i], r[i], ap50[i], ap[i])) # Print speeds - t = tuple(x / seen * 1E3 for x in dt) # speeds per image + t = tuple(x.t / seen * 1E3 for x in dt) # speeds per image if not training: shape = (batch_size, 3, imgsz, imgsz) LOGGER.info(f'Speed: %.1fms pre-process, %.1fms inference, %.1fms NMS per image at shape {shape}' % t) @@ -262,19 +298,19 @@ def run(data, # Plots if plots: confusion_matrix.plot(save_dir=save_dir, names=list(names.values())) - callbacks.run('on_val_end') + callbacks.run('on_val_end', nt, tp, fp, p, r, f1, ap, ap50, ap_class, confusion_matrix) # Save JSON if save_json and len(jdict): w = Path(weights[0] if isinstance(weights, list) else weights).stem if weights is not None else '' # weights - anno_json = str(Path(data.get('path', '../coco')) / 'annotations/instances_val2017.json') # annotations json - pred_json = str(save_dir / f"{w}_predictions.json") # predictions json + anno_json = str(Path('../datasets/coco/annotations/instances_val2017.json')) # annotations + pred_json = str(save_dir / f"{w}_predictions.json") # predictions LOGGER.info(f'\nEvaluating pycocotools mAP... saving {pred_json}...') with open(pred_json, 'w') as f: json.dump(jdict, f) try: # https://github.com/cocodataset/cocoapi/blob/master/PythonAPI/pycocoEvalDemo.ipynb - check_requirements(['pycocotools']) + check_requirements('pycocotools>=2.0.6') from pycocotools.coco import COCO from pycocotools.cocoeval import COCOeval @@ -282,7 +318,7 @@ def run(data, pred = anno.loadRes(pred_json) # init predictions api eval = COCOeval(anno, pred, 'bbox') if is_coco: - eval.params.imgIds = [int(Path(x).stem) for x in dataloader.dataset.img_files] # image IDs to evaluate + eval.params.imgIds = [int(Path(x).stem) for x in dataloader.dataset.im_files] # image IDs to evaluate eval.evaluate() eval.accumulate() eval.summarize() @@ -304,13 +340,15 @@ def run(data, def parse_opt(): parser = argparse.ArgumentParser() parser.add_argument('--data', type=str, default=ROOT / 'data/coco128.yaml', help='dataset.yaml path') - parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'yolov3.pt', help='model.pt path(s)') + parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'yolov3-tiny.pt', help='model path(s)') parser.add_argument('--batch-size', type=int, default=32, help='batch size') parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=640, help='inference size (pixels)') parser.add_argument('--conf-thres', type=float, default=0.001, help='confidence threshold') parser.add_argument('--iou-thres', type=float, default=0.6, help='NMS IoU threshold') + parser.add_argument('--max-det', type=int, default=300, help='maximum detections per image') parser.add_argument('--task', default='val', help='train, val, test, speed or study') parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu') + parser.add_argument('--workers', type=int, default=8, help='max dataloader workers (per RANK in DDP mode)') parser.add_argument('--single-cls', action='store_true', help='treat as single-class dataset') parser.add_argument('--augment', action='store_true', help='augmented inference') parser.add_argument('--verbose', action='store_true', help='report mAP by class') @@ -327,29 +365,31 @@ def parse_opt(): opt.data = check_yaml(opt.data) # check YAML opt.save_json |= opt.data.endswith('coco.yaml') opt.save_txt |= opt.save_hybrid - print_args(FILE.stem, opt) + print_args(vars(opt)) return opt def main(opt): - check_requirements(requirements=ROOT / 'requirements.txt', exclude=('tensorboard', 'thop')) + check_requirements(exclude=('tensorboard', 'thop')) if opt.task in ('train', 'val', 'test'): # run normally if opt.conf_thres > 0.001: # https://github.com/ultralytics/yolov5/issues/1466 - LOGGER.info(f'WARNING: confidence threshold {opt.conf_thres} >> 0.001 will produce invalid mAP values.') + LOGGER.info(f'WARNING ⚠️ confidence threshold {opt.conf_thres} > 0.001 produces invalid results') + if opt.save_hybrid: + LOGGER.info('WARNING ⚠️ --save-hybrid will return high mAP from hybrid labels, not from predictions alone') run(**vars(opt)) else: weights = opt.weights if isinstance(opt.weights, list) else [opt.weights] - opt.half = True # FP16 for fastest results + opt.half = torch.cuda.is_available() and opt.device != 'cpu' # FP16 for fastest results if opt.task == 'speed': # speed benchmarks - # python val.py --task speed --data coco.yaml --batch 1 --weights yolov3.pt yolov3-spp.pt... + # python val.py --task speed --data coco.yaml --batch 1 --weights yolov5n.pt yolov5s.pt... opt.conf_thres, opt.iou_thres, opt.save_json = 0.25, 0.45, False for opt.weights in weights: run(**vars(opt), plots=False) elif opt.task == 'study': # speed vs mAP benchmarks - # python val.py --task study --data coco.yaml --iou 0.7 --weights yolov3.pt yolov3-spp.pt... + # python val.py --task study --data coco.yaml --iou 0.7 --weights yolov5n.pt yolov5s.pt... for opt.weights in weights: f = f'study_{Path(opt.data).stem}_{Path(opt.weights).stem}.txt' # filename to save to x, y = list(range(256, 1536 + 128, 128)), [] # x axis (image sizes), y axis @@ -358,8 +398,10 @@ def main(opt): r, _, t = run(**vars(opt), plots=False) y.append(r + t) # results and times np.savetxt(f, y, fmt='%10.4g') # save - os.system('zip -r study.zip study_*.txt') + subprocess.run('zip -r study.zip study_*.txt'.split()) plot_val_study(x=x) # plot + else: + raise NotImplementedError(f'--task {opt.task} not in ("train", "val", "test", "speed", "study")') if __name__ == "__main__": From 50f78bfd08bf0b0cec297fd9183d47b88dfe5b4c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 13 Feb 2023 01:46:19 +0400 Subject: [PATCH 2589/2595] README link fixes (#2012) Link fixes --- README.md | 4 ++-- README.zh-CN.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index b10c1814..b26a29ac 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ quickstart examples.
Install -Clone repo and install [requirements.txt](https://github.com/ultralytics/yolov5/blob/master/requirements.txt) in a +Clone repo and install [requirements.txt](https://github.com/ultralytics/yolov3/blob/master/requirements.txt) in a [**Python>=3.7.0**](https://www.python.org/) environment, including [**PyTorch>=1.7**](https://pytorch.org/get-started/locally/). @@ -514,7 +514,7 @@ is available under two different licenses: ##
Contact
-For bug reports and feature requests please visit [GitHub Issues](https://github.com/ultralytics/yolov5/issues) or +For bug reports and feature requests please visit [GitHub Issues](https://github.com/ultralytics/yolov3/issues) or the [Ultralytics Community Forum](https://community.ultralytics.com/).
diff --git a/README.zh-CN.md b/README.zh-CN.md index f5f91241..5bd5a83d 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -72,7 +72,7 @@ pip install ultralytics 安装 克隆 repo,并要求在 [**Python>=3.7.0**](https://www.python.org/) -环境中安装 [requirements.txt](https://github.com/ultralytics/yolov5/blob/master/requirements.txt) ,且要求 [**PyTorch> +环境中安装 [requirements.txt](https://github.com/ultralytics/yolov3/blob/master/requirements.txt) ,且要求 [**PyTorch> =1.7**](https://pytorch.org/get-started/locally/) 。 ```bash @@ -502,7 +502,7 @@ YOLOv5 在两种不同的 License 下可用: ##
联系我们
-请访问 [GitHub Issues](https://github.com/ultralytics/yolov5/issues) +请访问 [GitHub Issues](https://github.com/ultralytics/yolov3/issues) 或 [Ultralytics Community Forum](https://community.ultralytis.com) 以报告 YOLOv5 错误和请求功能。
From 6c8bc4030931fa38415d9b742fb63e52dbb2fee5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 13 Feb 2023 20:28:02 +0400 Subject: [PATCH 2590/2595] Update README (#2013) * Update README * Update README * Update README * Update README.md --- README.md | 161 +++++++++++++++++------------------------------- README.zh-CN.md | 142 +++++++++++++++--------------------------- 2 files changed, 104 insertions(+), 199 deletions(-) diff --git a/README.md b/README.md index b26a29ac..18d71f0e 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,16 @@

- - + +

[English](README.md) | [简体中文](README.zh-CN.md)
-  CI -  Citation - Docker Pulls + YOLOv3 CI + YOLOv3 Citation + Docker Pulls
Run on Gradient Open In Colab @@ -18,12 +18,9 @@

-🚀 is the world's most loved vision AI, representing Ultralytics open-source -research into future vision AI methods, incorporating lessons learned and best practices evolved over thousands of hours -of research and development. +YOLOv3 🚀 is the world's most loved vision AI, representing Ultralytics open-source research into future vision AI methods, incorporating lessons learned and best practices evolved over thousands of hours of research and development. -To request an Enterprise License please complete the form at Ultralytics -Licensing. +To request an Enterprise License please complete the form at Ultralytics Licensing.
@@ -70,13 +67,12 @@ pip install ultralytics ##
Documentation
-See the [ Docs](https://docs.ultralytics.com) for full documentation on training, testing and deployment. See below for -quickstart examples. +See the [YOLOv3 Docs](https://docs.ultralytics.com) for full documentation on training, testing and deployment. See below for quickstart examples.
Install -Clone repo and install [requirements.txt](https://github.com/ultralytics/yolov3/blob/master/requirements.txt) in a +Clone repo and install [requirements.txt](https://github.com/ultralytics/yolov5/blob/master/requirements.txt) in a [**Python>=3.7.0**](https://www.python.org/) environment, including [**PyTorch>=1.7**](https://pytorch.org/get-started/locally/). @@ -91,17 +87,14 @@ pip install -r requirements.txt # install
Inference -[PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36) -inference. [Models](https://github.com/ultralytics/yolov5/tree/master/models) download automatically from the latest -[release](https://github.com/ultralytics/yolov5/releases). +YOLOv3 [PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36) inference. [Models](https://github.com/ultralytics/yolov5/tree/master/models) download automatically from the latest +YOLOv3 [release](https://github.com/ultralytics/yolov5/releases). ```python import torch # Model -model = torch.hub.load( - "ultralytics/yolov3", "yolov3" -) # or yolov3-spp, yolov3-tiny, custom +model = torch.hub.load("ultralytics/yolov3", "yolov3") # or yolov5n - yolov5x6, custom # Images img = "https://ultralytics.com/images/zidane.jpg" # or file, Path, PIL, OpenCV, numpy, list @@ -118,9 +111,8 @@ results.print() # or .show(), .save(), .crop(), .pandas(), etc.
Inference with detect.py -`detect.py` runs inference on a variety of sources, -downloading [models](https://github.com/ultralytics/yolov5/tree/master/models) automatically from -the latest [release](https://github.com/ultralytics/yolov5/releases) and saving results to `runs/detect`. +`detect.py` runs inference on a variety of sources, downloading [models](https://github.com/ultralytics/yolov5/tree/master/models) automatically from +the latest YOLOv3 [release](https://github.com/ultralytics/yolov5/releases) and saving results to `runs/detect`. ```bash python detect.py --weights yolov5s.pt --source 0 # webcam @@ -140,13 +132,13 @@ python detect.py --weights yolov5s.pt --source 0 #
Training -The commands below reproduce [COCO](https://github.com/ultralytics/yolov5/blob/master/data/scripts/get_coco.sh) +The commands below reproduce YOLOv3 [COCO](https://github.com/ultralytics/yolov5/blob/master/data/scripts/get_coco.sh) results. [Models](https://github.com/ultralytics/yolov5/tree/master/models) and [datasets](https://github.com/ultralytics/yolov5/tree/master/data) download automatically from the latest -[release](https://github.com/ultralytics/yolov5/releases). Training times for YOLOv5n/s/m/l/x are +YOLOv3 [release](https://github.com/ultralytics/yolov5/releases). Training times for YOLOv5n/s/m/l/x are 1/2/4/6/8 days on a V100 GPU ([Multi-GPU](https://github.com/ultralytics/yolov5/issues/475) times faster). Use the largest `--batch-size` possible, or pass `--batch-size -1` for -[AutoBatch](https://github.com/ultralytics/yolov5/pull/5092). Batch sizes shown for V100-16GB. +YOLOv3 [AutoBatch](https://github.com/ultralytics/yolov5/pull/5092). Batch sizes shown for V100-16GB. ```bash python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5n.yaml --batch-size 128 @@ -163,8 +155,8 @@ python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5n.yaml -
Tutorials -- [Train Custom Data](https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data)🚀 RECOMMENDED -- [Tips for Best Training Results](https://github.com/ultralytics/yolov5/wiki/Tips-for-Best-Training-Results)☘️ +- [Train Custom Data](https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data)  🚀 RECOMMENDED +- [Tips for Best Training Results](https://github.com/ultralytics/yolov5/wiki/Tips-for-Best-Training-Results)  ☘️ RECOMMENDED - [Multi-GPU Training](https://github.com/ultralytics/yolov5/issues/475) - [PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36) 🌟 NEW @@ -176,9 +168,9 @@ python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5n.yaml - - [Hyperparameter Evolution](https://github.com/ultralytics/yolov5/issues/607) - [Transfer Learning with Frozen Layers](https://github.com/ultralytics/yolov5/issues/1314) - [Architecture Summary](https://github.com/ultralytics/yolov5/issues/6998) 🌟 NEW -- [Roboflow for Datasets, Labeling, and Active Learning](https://github.com/ultralytics/yolov5/issues/4975)🌟 NEW +- [Roboflow for Datasets, Labeling, and Active Learning](https://github.com/ultralytics/yolov5/issues/4975)  🌟 NEW - [ClearML Logging](https://github.com/ultralytics/yolov5/tree/master/utils/loggers/clearml) 🌟 NEW -- [ with Neural Magic's Deepsparse](https://bit.ly/yolov5-neuralmagic) 🌟 NEW +- [YOLOv3 with Neural Magic's Deepsparse](https://bit.ly/yolov5-neuralmagic) 🌟 NEW - [Comet Logging](https://github.com/ultralytics/yolov5/tree/master/utils/loggers/comet) 🌟 NEW
@@ -187,7 +179,7 @@ python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5n.yaml -
- +

@@ -205,38 +197,34 @@ python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5n.yaml -
-| Roboflow | ClearML ⭐ NEW | Comet ⭐ NEW | Neural Magic ⭐ NEW | -| :--------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------: | -| Label and export your custom datasets directly to for training with [Roboflow](https://roboflow.com/?ref=ultralytics) | Automatically track, visualize and even remotely train using [ClearML](https://cutt.ly/yolov5-readme-clearml) (open-source!) | Free forever, [Comet](https://bit.ly/yolov5-readme-comet2) lets you save models, resume training, and interactively visualise and debug predictions | Run inference up to 6x faster with [Neural Magic DeepSparse](https://bit.ly/yolov5-neuralmagic) | +| Roboflow | ClearML ⭐ NEW | Comet ⭐ NEW | Neural Magic ⭐ NEW | +| :--------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------: | +| Label and export your custom datasets directly to YOLOv3 for training with [Roboflow](https://roboflow.com/?ref=ultralytics) | Automatically track, visualize and even remotely train YOLOv3 using [ClearML](https://cutt.ly/yolov5-readme-clearml) (open-source!) | Free forever, [Comet](https://bit.ly/yolov5-readme-comet2) lets you save YOLOv3 models, resume training, and interactively visualise and debug predictions | Run YOLOv3 inference up to 6x faster with [Neural Magic DeepSparse](https://bit.ly/yolov5-neuralmagic) | ##
Ultralytics HUB
-[Ultralytics HUB](https://bit.ly/ultralytics_hub) is our ⭐ **NEW** no-code solution to visualize datasets, train 🚀 -models, and deploy to the real world in a seamless experience. Get started for **Free** now! +Experience seamless AI with [Ultralytics HUB](https://bit.ly/ultralytics_hub) ⭐, the all-in-one solution for data visualization, YOLO 🚀 model training and deployment, without any coding. Transform images into actionable insights and bring your AI visions to life with ease using our cutting-edge platform and user-friendly [Ultralytics App](https://ultralytics.com/app_install). Start your journey for **Free** now! -##
Why YOLO
+##
Why YOLOv3
-has been designed to be super easy to get started and simple to learn. We prioritize real-world results. +YOLOv3 has been designed to be super easy to get started and simple to learn. We prioritize real-world results.

- YOLOv5-P5 640 Figure + YOLOv3-P5 640 Figure

Figure Notes -- **COCO AP val** denotes mAP@0.5:0.95 metric measured on the 5000-image [COCO val2017](http://cocodataset.org) dataset - over various inference sizes from 256 to 1536. -- **GPU Speed** measures average inference time per image on [COCO val2017](http://cocodataset.org) dataset using - a [AWS p3.2xlarge](https://aws.amazon.com/ec2/instance-types/p3/) V100 instance at batch-size 32. +- **COCO AP val** denotes mAP@0.5:0.95 metric measured on the 5000-image [COCO val2017](http://cocodataset.org) dataset over various inference sizes from 256 to 1536. +- **GPU Speed** measures average inference time per image on [COCO val2017](http://cocodataset.org) dataset using a [AWS p3.2xlarge](https://aws.amazon.com/ec2/instance-types/p3/) V100 instance at batch-size 32. - **EfficientDet** data from [google/automl](https://github.com/google/automl) at batch size 8. -- **Reproduce** - by `python val.py --task study --data coco.yaml --iou 0.7 --weights yolov5n6.pt yolov5s6.pt yolov5m6.pt yolov5l6.pt yolov5x6.pt` +- **Reproduce** by `python val.py --task study --data coco.yaml --iou 0.7 --weights yolov5n6.pt yolov5s6.pt yolov5m6.pt yolov5l6.pt yolov5x6.pt`
@@ -259,28 +247,16 @@ has been designed to be super easy to get started and simple to learn. We priori
Table Notes -- All checkpoints are trained to 300 epochs with default settings. Nano and Small models - use [hyp.scratch-low.yaml](https://github.com/ultralytics/yolov5/blob/master/data/hyps/hyp.scratch-low.yaml) hyps, all - others use [hyp.scratch-high.yaml](https://github.com/ultralytics/yolov5/blob/master/data/hyps/hyp.scratch-high.yaml). -- **mAPval** values are for single-model single-scale on [COCO val2017](http://cocodataset.org) dataset.
- Reproduce by `python val.py --data coco.yaml --img 640 --conf 0.001 --iou 0.65` -- **Speed** averaged over COCO val images using a [AWS p3.2xlarge](https://aws.amazon.com/ec2/instance-types/p3/) - instance. NMS times (~1 ms/img) not included.
Reproduce - by `python val.py --data coco.yaml --img 640 --task speed --batch 1` -- **TTA** [Test Time Augmentation](https://github.com/ultralytics/yolov5/issues/303) includes reflection and scale - augmentations.
Reproduce by `python val.py --data coco.yaml --img 1536 --iou 0.7 --augment` +- All checkpoints are trained to 300 epochs with default settings. Nano and Small models use [hyp.scratch-low.yaml](https://github.com/ultralytics/yolov5/blob/master/data/hyps/hyp.scratch-low.yaml) hyps, all others use [hyp.scratch-high.yaml](https://github.com/ultralytics/yolov5/blob/master/data/hyps/hyp.scratch-high.yaml). +- **mAPval** values are for single-model single-scale on [COCO val2017](http://cocodataset.org) dataset.
Reproduce by `python val.py --data coco.yaml --img 640 --conf 0.001 --iou 0.65` +- **Speed** averaged over COCO val images using a [AWS p3.2xlarge](https://aws.amazon.com/ec2/instance-types/p3/) instance. NMS times (~1 ms/img) not included.
Reproduce by `python val.py --data coco.yaml --img 640 --task speed --batch 1` +- **TTA** [Test Time Augmentation](https://github.com/ultralytics/yolov5/issues/303) includes reflection and scale augmentations.
Reproduce by `python val.py --data coco.yaml --img 1536 --iou 0.7 --augment`
##
Segmentation
-Our new YOLOv5 [release v7.0](https://github.com/ultralytics/yolov5/releases/v7.0) instance segmentation models are the -fastest and most accurate in the world, beating all -current [SOTA benchmarks](https://paperswithcode.com/sota/real-time-instance-segmentation-on-mscoco). We've made them -super simple to train, validate and deploy. See full details in -our [Release Notes](https://github.com/ultralytics/yolov5/releases/v7.0) and visit -our [YOLOv5 Segmentation Colab Notebook](https://github.com/ultralytics/yolov5/blob/master/segment/tutorial.ipynb) for -quickstart tutorials. +Our new YOLOv5 [release v7.0](https://github.com/ultralytics/yolov5/releases/v7.0) instance segmentation models are the fastest and most accurate in the world, beating all current [SOTA benchmarks](https://paperswithcode.com/sota/real-time-instance-segmentation-on-mscoco). We've made them super simple to train, validate and deploy. See full details in our [Release Notes](https://github.com/ultralytics/yolov5/releases/v7.0) and visit our [YOLOv5 Segmentation Colab Notebook](https://github.com/ultralytics/yolov5/blob/master/segment/tutorial.ipynb) for quickstart tutorials.
Segmentation Checkpoints @@ -290,9 +266,7 @@ quickstart tutorials.
-We trained YOLOv5 segmentations models on COCO for 300 epochs at image size 640 using A100 GPUs. We exported all models -to ONNX FP32 for CPU speed tests and to TensorRT FP16 for GPU speed tests. We ran all speed tests on -Google [Colab Pro](https://colab.research.google.com/signup) notebooks for easy reproducibility. +We trained YOLOv5 segmentations models on COCO for 300 epochs at image size 640 using A100 GPUs. We exported all models to ONNX FP32 for CPU speed tests and to TensorRT FP16 for GPU speed tests. We ran all speed tests on Google [Colab Pro](https://colab.research.google.com/signup) notebooks for easy reproducibility. | Model | size
(pixels) | mAPbox
50-95 | mAPmask
50-95 | Train time
300 epochs
A100 (hours) | Speed
ONNX CPU
(ms) | Speed
TRT A100
(ms) | params
(M) | FLOPs
@640 (B) | | ------------------------------------------------------------------------------------------ | --------------------- | -------------------- | --------------------- | --------------------------------------------- | ------------------------------ | ------------------------------ | ------------------ | ---------------------- | @@ -302,15 +276,10 @@ Google [Colab Pro](https://colab.research.google.com/signup) notebooks for easy | [YOLOv5l-seg](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5l-seg.pt) | 640 | 49.0 | 39.9 | 66:43 (2x) | 857.4 | 2.9 | 47.9 | 147.7 | | [YOLOv5x-seg](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5x-seg.pt) | 640 | **50.7** | **41.4** | 62:56 (3x) | 1579.2 | 4.5 | 88.8 | 265.7 | -- All checkpoints are trained to 300 epochs with SGD optimizer with `lr0=0.01` and `weight_decay=5e-5` at image size 640 - and all default settings.
Runs logged to https://wandb.ai/glenn-jocher/YOLOv5_v70_official -- **Accuracy** values are for single-model single-scale on COCO dataset.
Reproduce - by `python segment/val.py --data coco.yaml --weights yolov5s-seg.pt` -- **Speed** averaged over 100 inference images using a [Colab Pro](https://colab.research.google.com/signup) A100 - High-RAM instance. Values indicate inference speed only (NMS adds about 1ms per image).
Reproduce - by `python segment/val.py --data coco.yaml --weights yolov5s-seg.pt --batch 1` -- **Export** to ONNX at FP32 and TensorRT at FP16 done with `export.py`.
Reproduce - by `python export.py --weights yolov5s-seg.pt --include engine --device 0 --half` +- All checkpoints are trained to 300 epochs with SGD optimizer with `lr0=0.01` and `weight_decay=5e-5` at image size 640 and all default settings.
Runs logged to https://wandb.ai/glenn-jocher/YOLOv5_v70_official +- **Accuracy** values are for single-model single-scale on COCO dataset.
Reproduce by `python segment/val.py --data coco.yaml --weights yolov5s-seg.pt` +- **Speed** averaged over 100 inference images using a [Colab Pro](https://colab.research.google.com/signup) A100 High-RAM instance. Values indicate inference speed only (NMS adds about 1ms per image).
Reproduce by `python segment/val.py --data coco.yaml --weights yolov5s-seg.pt --batch 1` +- **Export** to ONNX at FP32 and TensorRT at FP16 done with `export.py`.
Reproduce by `python export.py --weights yolov5s-seg.pt --include engine --device 0 --half`
@@ -319,9 +288,7 @@ Google [Colab Pro](https://colab.research.google.com/signup) notebooks for easy ### Train -YOLOv5 segmentation training supports auto-download COCO128-seg segmentation dataset with `--data coco128-seg.yaml` -argument and manual download of COCO-segments dataset with `bash data/scripts/get_coco.sh --train --val --segments` and -then `python train.py --data coco.yaml`. +YOLOv5 segmentation training supports auto-download COCO128-seg segmentation dataset with `--data coco128-seg.yaml` argument and manual download of COCO-segments dataset with `bash data/scripts/get_coco.sh --train --val --segments` and then `python train.py --data coco.yaml`. ```bash # Single-GPU @@ -369,21 +336,14 @@ python export.py --weights yolov5s-seg.pt --include onnx engine --img 640 --devi ##
Classification
-YOLOv5 [release v6.2](https://github.com/ultralytics/yolov5/releases) brings support for classification model training, -validation and deployment! See full details in our [Release Notes](https://github.com/ultralytics/yolov5/releases/v6.2) -and visit -our [YOLOv5 Classification Colab Notebook](https://github.com/ultralytics/yolov5/blob/master/classify/tutorial.ipynb) -for quickstart tutorials. +YOLOv5 [release v6.2](https://github.com/ultralytics/yolov5/releases) brings support for classification model training, validation and deployment! See full details in our [Release Notes](https://github.com/ultralytics/yolov5/releases/v6.2) and visit our [YOLOv5 Classification Colab Notebook](https://github.com/ultralytics/yolov5/blob/master/classify/tutorial.ipynb) for quickstart tutorials.
Classification Checkpoints
-We trained YOLOv5-cls classification models on ImageNet for 90 epochs using a 4xA100 instance, and we trained ResNet and -EfficientNet models alongside with the same default training settings to compare. We exported all models to ONNX FP32 -for CPU speed tests and to TensorRT FP16 for GPU speed tests. We ran all speed tests on -Google [Colab Pro](https://colab.research.google.com/signup) for easy reproducibility. +We trained YOLOv5-cls classification models on ImageNet for 90 epochs using a 4xA100 instance, and we trained ResNet and EfficientNet models alongside with the same default training settings to compare. We exported all models to ONNX FP32 for CPU speed tests and to TensorRT FP16 for GPU speed tests. We ran all speed tests on Google [Colab Pro](https://colab.research.google.com/signup) for easy reproducibility. | Model | size
(pixels) | acc
top1 | acc
top5 | Training
90 epochs
4xA100 (hours) | Speed
ONNX CPU
(ms) | Speed
TensorRT V100
(ms) | params
(M) | FLOPs
@224 (B) | | -------------------------------------------------------------------------------------------------- | --------------------- | ---------------- | ---------------- | -------------------------------------------- | ------------------------------ | ----------------------------------- | ------------------ | ---------------------- | @@ -406,14 +366,10 @@ Google [Colab Pro](https://colab.research.google.com/signup) for easy reproducib
Table Notes (click to expand) -- All checkpoints are trained to 90 epochs with SGD optimizer with `lr0=0.001` and `weight_decay=5e-5` at image size 224 - and all default settings.
Runs logged to https://wandb.ai/glenn-jocher/YOLOv5-Classifier-v6-2 -- **Accuracy** values are for single-model single-scale on [ImageNet-1k](https://www.image-net.org/index.php) - dataset.
Reproduce by `python classify/val.py --data ../datasets/imagenet --img 224` -- **Speed** averaged over 100 inference images using a Google [Colab Pro](https://colab.research.google.com/signup) V100 - High-RAM instance.
Reproduce by `python classify/val.py --data ../datasets/imagenet --img 224 --batch 1` -- **Export** to ONNX at FP32 and TensorRT at FP16 done with `export.py`.
Reproduce - by `python export.py --weights yolov5s-cls.pt --include engine onnx --imgsz 224` +- All checkpoints are trained to 90 epochs with SGD optimizer with `lr0=0.001` and `weight_decay=5e-5` at image size 224 and all default settings.
Runs logged to https://wandb.ai/glenn-jocher/YOLOv5-Classifier-v6-2 +- **Accuracy** values are for single-model single-scale on [ImageNet-1k](https://www.image-net.org/index.php) dataset.
Reproduce by `python classify/val.py --data ../datasets/imagenet --img 224` +- **Speed** averaged over 100 inference images using a Google [Colab Pro](https://colab.research.google.com/signup) V100 High-RAM instance.
Reproduce by `python classify/val.py --data ../datasets/imagenet --img 224 --batch 1` +- **Export** to ONNX at FP32 and TensorRT at FP16 done with `export.py`.
Reproduce by `python export.py --weights yolov5s-cls.pt --include engine onnx --imgsz 224`
@@ -423,8 +379,7 @@ Google [Colab Pro](https://colab.research.google.com/signup) for easy reproducib ### Train -YOLOv5 classification training supports auto-download of MNIST, Fashion-MNIST, CIFAR10, CIFAR100, Imagenette, Imagewoof, -and ImageNet datasets with the `--data` argument. To start training on MNIST for example use `--data mnist`. +YOLOv5 classification training supports auto-download of MNIST, Fashion-MNIST, CIFAR10, CIFAR100, Imagenette, Imagewoof, and ImageNet datasets with the `--data` argument. To start training on MNIST for example use `--data mnist`. ```bash # Single-GPU @@ -481,7 +436,7 @@ Get started in seconds with our verified environments. Click each icon below for - + @@ -493,10 +448,7 @@ Get started in seconds with our verified environments. Click each icon below for ##
Contribute
-We love your input! We want to make contributing to as easy and transparent as possible. Please see -our [Contributing Guide](CONTRIBUTING.md) to get started, and fill out -the [ Survey](https://ultralytics.com/survey?utm_source=github&utm_medium=social&utm_campaign=Survey) to send us -feedback on your experiences. Thank you to all our contributors! +We love your input! We want to make contributing to YOLOv3 as easy and transparent as possible. Please see our [Contributing Guide](CONTRIBUTING.md) to get started, and fill out the [YOLOv3 Survey](https://ultralytics.com/survey?utm_source=github&utm_medium=social&utm_campaign=Survey) to send us feedback on your experiences. Thank you to all our contributors! @@ -505,17 +457,14 @@ feedback on your experiences. Thank you to all our contributors! ##
License
-is available under two different licenses: +YOLOv3 is available under two different licenses: - **GPL-3.0 License**: See [LICENSE](https://github.com/ultralytics/yolov5/blob/master/LICENSE) file for details. -- **Enterprise License**: Provides greater flexibility for commercial product development without the open-source - requirements of GPL-3.0. Typical use cases are embedding Ultralytics software and AI models in commercial products and - applications. Request an Enterprise License at [Ultralytics Licensing](https://ultralytics.com/license). +- **Enterprise License**: Provides greater flexibility for commercial product development without the open-source requirements of GPL-3.0. Typical use cases are embedding Ultralytics software and AI models in commercial products and applications. Request an Enterprise License at [Ultralytics Licensing](https://ultralytics.com/license). ##
Contact
-For bug reports and feature requests please visit [GitHub Issues](https://github.com/ultralytics/yolov3/issues) or -the [Ultralytics Community Forum](https://community.ultralytics.com/). +For YOLOv3 bug reports and feature requests please visit [GitHub Issues](https://github.com/ultralytics/yolov5/issues) or the [Ultralytics Community Forum](https://community.ultralytics.com/).
diff --git a/README.zh-CN.md b/README.zh-CN.md index 5bd5a83d..6620131c 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -1,15 +1,15 @@

- - + +

[英文](README.md)|[简体中文](README.zh-CN.md)
-  CI -  Citation - Docker Pulls + YOLOv3 CI + YOLOv3 Citation + Docker Pulls
Run on Gradient Open In Colab @@ -17,8 +17,7 @@

-🚀 是世界上最受欢迎的视觉 AI,代表 Ultralytics 对未来视觉 AI -方法的开源研究,结合在数千小时的研究和开发中积累的经验教训和最佳实践。 +YOLOv3 🚀 是世界上最受欢迎的视觉 AI,代表 Ultralytics 对未来视觉 AI 方法的开源研究,结合在数千小时的研究和开发中积累的经验教训和最佳实践。 如果要申请企业许可证,请填写表格Ultralytics 许可. @@ -66,14 +65,12 @@ pip install ultralytics ##
文档
-有关训练、测试和部署的完整文档见[YOLOv5 文档](https://docs.ultralytics.com)。请参阅下面的快速入门示例。 +有关训练、测试和部署的完整文档见[YOLOv3 文档](https://docs.ultralytics.com)。请参阅下面的快速入门示例。
安装 -克隆 repo,并要求在 [**Python>=3.7.0**](https://www.python.org/) -环境中安装 [requirements.txt](https://github.com/ultralytics/yolov3/blob/master/requirements.txt) ,且要求 [**PyTorch> -=1.7**](https://pytorch.org/get-started/locally/) 。 +克隆 repo,并要求在 [**Python>=3.7.0**](https://www.python.org/) 环境中安装 [requirements.txt](https://github.com/ultralytics/yolov5/blob/master/requirements.txt) ,且要求 [**PyTorch>=1.7**](https://pytorch.org/get-started/locally/) 。 ```bash git clone https://github.com/ultralytics/yolov3 # clone @@ -86,17 +83,14 @@ pip install -r requirements.txt # install
推理 -使用 YOLOv5 [PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36) -推理。最新 [模型](https://github.com/ultralytics/yolov5/tree/master/models) 将自动的从 -YOLOv5 [release](https://github.com/ultralytics/yolov5/releases) 中下载。 +使用 YOLOv3 [PyTorch Hub](https://github.com/ultralytics/yolov5/issues/36) 推理。最新 [模型](https://github.com/ultralytics/yolov5/tree/master/models) 将自动的从 +YOLOv3 [release](https://github.com/ultralytics/yolov5/releases) 中下载。 ```python import torch # Model -model = torch.hub.load( - "ultralytics/yolov3", "yolov3" -) # or yolov3-spp, yolov3-tiny, custom +model = torch.hub.load("ultralytics/yolov5", "yolov3") # or yolov5n - yolov5x6, custom # Images img = "https://ultralytics.com/images/zidane.jpg" # or file, Path, PIL, OpenCV, numpy, list @@ -134,14 +128,12 @@ python detect.py --weights yolov5s.pt --source 0 #
训练 -下面的命令重现 YOLOv5 在 [COCO](https://github.com/ultralytics/yolov5/blob/master/data/scripts/get_coco.sh) 数据集上的结果。 -最新的 [模型](https://github.com/ultralytics/yolov5/tree/master/models) -和 [数据集](https://github.com/ultralytics/yolov5/tree/master/data) -将自动的从 YOLOv5 [release](https://github.com/ultralytics/yolov5/releases) 中下载。 -YOLOv5n/s/m/l/x 在 V100 GPU 的训练时间为 1/2/4/6/8 天( [多GPU](https://github.com/ultralytics/yolov5/issues/475) -训练速度更快)。 +下面的命令重现 YOLOv3 在 [COCO](https://github.com/ultralytics/yolov5/blob/master/data/scripts/get_coco.sh) 数据集上的结果。 +最新的 [模型](https://github.com/ultralytics/yolov5/tree/master/models) 和 [数据集](https://github.com/ultralytics/yolov5/tree/master/data) +将自动的从 YOLOv3 [release](https://github.com/ultralytics/yolov5/releases) 中下载。 +YOLOv5n/s/m/l/x 在 V100 GPU 的训练时间为 1/2/4/6/8 天( [多GPU](https://github.com/ultralytics/yolov5/issues/475) 训练速度更快)。 尽可能使用更大的 `--batch-size` ,或通过 `--batch-size -1` 实现 -YOLOv5 [自动批处理](https://github.com/ultralytics/yolov5/pull/5092) 。下方显示的 batchsize 适用于 V100-16GB。 +YOLOv3 [自动批处理](https://github.com/ultralytics/yolov5/pull/5092) 。下方显示的 batchsize 适用于 V100-16GB。 ```bash python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5n.yaml --batch-size 128 @@ -181,7 +173,7 @@ python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5n.yaml -
- +

@@ -201,19 +193,18 @@ python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5n.yaml - | Roboflow | ClearML ⭐ 新 | Comet ⭐ 新 | Neural Magic ⭐ 新 | | :--------------------------------------------------------------------------------: | :-------------------------------------------------------------------------: | :-------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------: | -| 将您的自定义数据集进行标注并直接导出到 YOLOv5 以进行训练 [Roboflow](https://roboflow.com/?ref=ultralytics) | 自动跟踪、可视化甚至远程训练 YOLOv5 [ClearML](https://cutt.ly/yolov5-readme-clearml)(开源!) | 永远免费,[Comet](https://bit.ly/yolov5-readme-comet)可让您保存 YOLOv5 模型、恢复训练以及交互式可视化和调试预测 | 使用 [Neural Magic DeepSparse](https://bit.ly/yolov5-neuralmagic),运行 YOLOv5 推理的速度最高可提高6倍 | +| 将您的自定义数据集进行标注并直接导出到 YOLOv3 以进行训练 [Roboflow](https://roboflow.com/?ref=ultralytics) | 自动跟踪、可视化甚至远程训练 YOLOv3 [ClearML](https://cutt.ly/yolov5-readme-clearml)(开源!) | 永远免费,[Comet](https://bit.ly/yolov5-readme-comet)可让您保存 YOLOv3 模型、恢复训练以及交互式可视化和调试预测 | 使用 [Neural Magic DeepSparse](https://bit.ly/yolov5-neuralmagic),运行 YOLOv3 推理的速度最高可提高6倍 | ##
Ultralytics HUB
-[Ultralytics HUB](https://bit.ly/ultralytics_hub) 是我们的⭐**新的**用于可视化数据集、训练 YOLOv5 🚀 -模型并以无缝体验部署到现实世界的无代码解决方案。现在开始 **免费** 使用他! +[Ultralytics HUB](https://bit.ly/ultralytics_hub) 是我们的⭐**新的**用于可视化数据集、训练 YOLOv3 🚀 模型并以无缝体验部署到现实世界的无代码解决方案。现在开始 **免费** 使用他! -##
为什么选择 YOLOv5
+##
为什么选择 YOLOv3
-YOLOv5 超级容易上手,简单易学。我们优先考虑现实世界的结果。 +YOLOv3 超级容易上手,简单易学。我们优先考虑现实世界的结果。

@@ -224,13 +215,10 @@ YOLOv5 超级容易上手,简单易学。我们优先考虑现实世界的结
图表笔记 -- **COCO AP val** 表示 mAP@0.5:0.95 指标,在 [COCO val2017](http://cocodataset.org) 数据集的 5000 张图像上测得, 图像包含 - 256 到 1536 各种推理大小。 -- **显卡推理速度** 为在 [COCO val2017](http://cocodataset.org) - 数据集上的平均推理时间,使用 [AWS p3.2xlarge](https://aws.amazon.com/ec2/instance-types/p3/) V100实例,batchsize 为 32 。 +- **COCO AP val** 表示 mAP@0.5:0.95 指标,在 [COCO val2017](http://cocodataset.org) 数据集的 5000 张图像上测得, 图像包含 256 到 1536 各种推理大小。 +- **显卡推理速度** 为在 [COCO val2017](http://cocodataset.org) 数据集上的平均推理时间,使用 [AWS p3.2xlarge](https://aws.amazon.com/ec2/instance-types/p3/) V100实例,batchsize 为 32 。 - **EfficientDet** 数据来自 [google/automl](https://github.com/google/automl) , batchsize 为32。 -- **复现命令** - 为 `python val.py --task study --data coco.yaml --iou 0.7 --weights yolov5n6.pt yolov5s6.pt yolov5m6.pt yolov5l6.pt yolov5x6.pt` +- **复现命令** 为 `python val.py --task study --data coco.yaml --iou 0.7 --weights yolov5n6.pt yolov5s6.pt yolov5m6.pt yolov5l6.pt yolov5x6.pt`
@@ -253,25 +241,16 @@ YOLOv5 超级容易上手,简单易学。我们优先考虑现实世界的结
笔记 -- 所有模型都使用默认配置,训练 300 - epochs。n和s模型使用 [hyp.scratch-low.yaml](https://github.com/ultralytics/yolov5/blob/master/data/hyps/hyp.scratch-low.yaml) - ,其他模型都使用 [hyp.scratch-high.yaml](https://github.com/ultralytics/yolov5/blob/master/data/hyps/hyp.scratch-high.yaml) 。 -- \*\*mAPval\*\*在单模型单尺度上计算,数据集使用 [COCO val2017](http://cocodataset.org) 。
- 复现命令 `python val.py --data coco.yaml --img 640 --conf 0.001 --iou 0.65` -- **推理速度**在 COCO val - 图像总体时间上进行平均得到,测试环境使用[AWS p3.2xlarge](https://aws.amazon.com/ec2/instance-types/p3/)实例。 NMS 时间 ( - 大约 1 ms/img) 不包括在内。
复现命令 `python val.py --data coco.yaml --img 640 --task speed --batch 1` -- **TTA** [测试时数据增强](https://github.com/ultralytics/yolov5/issues/303) 包括反射和尺度变换。
- 复现命令 `python val.py --data coco.yaml --img 1536 --iou 0.7 --augment` +- 所有模型都使用默认配置,训练 300 epochs。n和s模型使用 [hyp.scratch-low.yaml](https://github.com/ultralytics/yolov5/blob/master/data/hyps/hyp.scratch-low.yaml) ,其他模型都使用 [hyp.scratch-high.yaml](https://github.com/ultralytics/yolov5/blob/master/data/hyps/hyp.scratch-high.yaml) 。 +- \*\*mAPval\*\*在单模型单尺度上计算,数据集使用 [COCO val2017](http://cocodataset.org) 。
复现命令 `python val.py --data coco.yaml --img 640 --conf 0.001 --iou 0.65` +- **推理速度**在 COCO val 图像总体时间上进行平均得到,测试环境使用[AWS p3.2xlarge](https://aws.amazon.com/ec2/instance-types/p3/)实例。 NMS 时间 (大约 1 ms/img) 不包括在内。
复现命令 `python val.py --data coco.yaml --img 640 --task speed --batch 1` +- **TTA** [测试时数据增强](https://github.com/ultralytics/yolov5/issues/303) 包括反射和尺度变换。
复现命令 `python val.py --data coco.yaml --img 1536 --iou 0.7 --augment`
-##
实例分割模型 ⭐ 新
+##
实例分割模型 ⭐ 新
-我们新的 YOLOv5 [release v7.0](https://github.com/ultralytics/yolov5/releases/v7.0) -实例分割模型是世界上最快和最准确的模型,击败所有当前 [SOTA 基准](https://paperswithcode.com/sota/real-time-instance-segmentation-on-mscoco) -。我们使它非常易于训练、验证和部署。更多细节请查看 [发行说明](https://github.com/ultralytics/yolov5/releases/v7.0) -或访问我们的 [YOLOv5 分割 Colab 笔记本](https://github.com/ultralytics/yolov5/blob/master/segment/tutorial.ipynb) 以快速入门。 +我们新的 YOLOv5 [release v7.0](https://github.com/ultralytics/yolov5/releases/v7.0) 实例分割模型是世界上最快和最准确的模型,击败所有当前 [SOTA 基准](https://paperswithcode.com/sota/real-time-instance-segmentation-on-mscoco)。我们使它非常易于训练、验证和部署。更多细节请查看 [发行说明](https://github.com/ultralytics/yolov5/releases/v7.0) 或访问我们的 [YOLOv5 分割 Colab 笔记本](https://github.com/ultralytics/yolov5/blob/master/segment/tutorial.ipynb) 以快速入门。
实例分割模型列表 @@ -283,9 +262,7 @@ YOLOv5 超级容易上手,简单易学。我们优先考虑现实世界的结
-我们使用 A100 GPU 在 COCO 上以 640 图像大小训练了 300 epochs 得到 YOLOv5 分割模型。我们将所有模型导出到 ONNX FP32 以进行 -CPU 速度测试,并导出到 TensorRT FP16 以进行 GPU 速度测试。为了便于再现,我们在 -Google [Colab Pro](https://colab.research.google.com/signup) 上进行了所有速度测试。 +我们使用 A100 GPU 在 COCO 上以 640 图像大小训练了 300 epochs 得到 YOLOv5 分割模型。我们将所有模型导出到 ONNX FP32 以进行 CPU 速度测试,并导出到 TensorRT FP16 以进行 GPU 速度测试。为了便于再现,我们在 Google [Colab Pro](https://colab.research.google.com/signup) 上进行了所有速度测试。 | 模型 | 尺寸
(像素) | mAPbox
50-95 | mAPmask
50-95 | 训练时长
300 epochs
A100 GPU(小时) | 推理速度
ONNX CPU
(ms) | 推理速度
TRT A100
(ms) | 参数量
(M) | FLOPs
@640 (B) | | ------------------------------------------------------------------------------------------ | --------------- | -------------------- | --------------------- | --------------------------------------- | ----------------------------- | ----------------------------- | --------------- | ---------------------- | @@ -295,15 +272,10 @@ Google [Colab Pro](https://colab.research.google.com/signup) 上进行了所有 | [YOLOv5l-seg](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5l-seg.pt) | 640 | 49.0 | 39.9 | 66:43 (2x) | 857.4 | 2.9 | 47.9 | 147.7 | | [YOLOv5x-seg](https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5x-seg.pt) | 640 | **50.7** | **41.4** | 62:56 (3x) | 1579.2 | 4.5 | 88.8 | 265.7 | -- 所有模型使用 SGD 优化器训练, 都使用 `lr0=0.01` 和 `weight_decay=5e-5` 参数, 图像大小为 640 。
训练 log - 可以查看 https://wandb.ai/glenn-jocher/YOLOv5_v70_official -- **准确性**结果都在 COCO 数据集上,使用单模型单尺度测试得到。
- 复现命令 `python segment/val.py --data coco.yaml --weights yolov5s-seg.pt` -- **推理速度**是使用 100 张图像推理时间进行平均得到,测试环境使用 [Colab Pro](https://colab.research.google.com/signup) 上 - A100 高 RAM 实例。结果仅表示推理速度(NMS 每张图像增加约 1 毫秒)。
- 复现命令 `python segment/val.py --data coco.yaml --weights yolov5s-seg.pt --batch 1` -- **模型转换**到 FP32 的 ONNX 和 FP16 的 TensorRT 脚本为 `export.py`.
- 运行命令 `python export.py --weights yolov5s-seg.pt --include engine --device 0 --half` +- 所有模型使用 SGD 优化器训练, 都使用 `lr0=0.01` 和 `weight_decay=5e-5` 参数, 图像大小为 640 。
训练 log 可以查看 https://wandb.ai/glenn-jocher/YOLOv5_v70_official +- **准确性**结果都在 COCO 数据集上,使用单模型单尺度测试得到。
复现命令 `python segment/val.py --data coco.yaml --weights yolov5s-seg.pt` +- **推理速度**是使用 100 张图像推理时间进行平均得到,测试环境使用 [Colab Pro](https://colab.research.google.com/signup) 上 A100 高 RAM 实例。结果仅表示推理速度(NMS 每张图像增加约 1 毫秒)。
复现命令 `python segment/val.py --data coco.yaml --weights yolov5s-seg.pt --batch 1` +- **模型转换**到 FP32 的 ONNX 和 FP16 的 TensorRT 脚本为 `export.py`.
运行命令 `python export.py --weights yolov5s-seg.pt --include engine --device 0 --half`
@@ -312,9 +284,7 @@ Google [Colab Pro](https://colab.research.google.com/signup) 上进行了所有 ### 训练 -YOLOv5分割训练支持自动下载 COCO128-seg 分割数据集,用户仅需在启动指令中包含 `--data coco128-seg.yaml` 参数。 -若要手动下载,使用命令 `bash data/scripts/get_coco.sh --train --val --segments`, -在下载完毕后,使用命令 `python train.py --data coco.yaml` 开启训练。 +YOLOv5分割训练支持自动下载 COCO128-seg 分割数据集,用户仅需在启动指令中包含 `--data coco128-seg.yaml` 参数。 若要手动下载,使用命令 `bash data/scripts/get_coco.sh --train --val --segments`, 在下载完毕后,使用命令 `python train.py --data coco.yaml` 开启训练。 ```bash # 单 GPU @@ -362,19 +332,14 @@ python export.py --weights yolov5s-seg.pt --include onnx engine --img 640 --devi ##
分类网络 ⭐ 新
-YOLOv5 [release v6.2](https://github.com/ultralytics/yolov5/releases) -带来对分类模型训练、验证和部署的支持!详情请查看 [发行说明](https://github.com/ultralytics/yolov5/releases/v6.2) -或访问我们的 [YOLOv5 分类 Colab 笔记本](https://github.com/ultralytics/yolov5/blob/master/classify/tutorial.ipynb) -以快速入门。 +YOLOv5 [release v6.2](https://github.com/ultralytics/yolov5/releases) 带来对分类模型训练、验证和部署的支持!详情请查看 [发行说明](https://github.com/ultralytics/yolov5/releases/v6.2) 或访问我们的 [YOLOv5 分类 Colab 笔记本](https://github.com/ultralytics/yolov5/blob/master/classify/tutorial.ipynb) 以快速入门。
分类网络模型
-我们使用 4xA100 实例在 ImageNet 上训练了 90 个 epochs 得到 YOLOv5-cls 分类模型,我们训练了 ResNet 和 EfficientNet -模型以及相同的默认训练设置以进行比较。我们将所有模型导出到 ONNX FP32 以进行 CPU 速度测试,并导出到 TensorRT FP16 以进行 -GPU 速度测试。为了便于重现,我们在 Google 上进行了所有速度测试 [Colab Pro](https://colab.research.google.com/signup) 。 +我们使用 4xA100 实例在 ImageNet 上训练了 90 个 epochs 得到 YOLOv5-cls 分类模型,我们训练了 ResNet 和 EfficientNet 模型以及相同的默认训练设置以进行比较。我们将所有模型导出到 ONNX FP32 以进行 CPU 速度测试,并导出到 TensorRT FP16 以进行 GPU 速度测试。为了便于重现,我们在 Google 上进行了所有速度测试 [Colab Pro](https://colab.research.google.com/signup) 。 | 模型 | 尺寸
(像素) | acc
top1 | acc
top5 | 训练时长
90 epochs
4xA100(小时) | 推理速度
ONNX CPU
(ms) | 推理速度
TensorRT V100
(ms) | 参数
(M) | FLOPs
@640 (B) | | -------------------------------------------------------------------------------------------------- | --------------- | ---------------- | ---------------- | ------------------------------------ | ----------------------------- | ---------------------------------- | -------------- | ---------------------- | @@ -397,14 +362,10 @@ GPU 速度测试。为了便于重现,我们在 Google 上进行了所有速
Table Notes (点击以展开) -- 所有模型都使用 SGD 优化器训练 90 个 epochs,都使用 `lr0=0.001` 和 `weight_decay=5e-5` 参数, 图像大小为 224 - ,且都使用默认设置。
训练 log 可以查看 https://wandb.ai/glenn-jocher/YOLOv5-Classifier-v6-2 -- **准确性**都在单模型单尺度上计算,数据集使用 [ImageNet-1k](https://www.image-net.org/index.php) 。
- 复现命令 `python classify/val.py --data ../datasets/imagenet --img 224` -- **推理速度**是使用 100 个推理图像进行平均得到,测试环境使用谷歌 [Colab Pro](https://colab.research.google.com/signup) - V100 高 RAM 实例。
复现命令 `python classify/val.py --data ../datasets/imagenet --img 224 --batch 1` -- **模型导出**到 FP32 的 ONNX 和 FP16 的 TensorRT 使用 `export.py` 。
- 复现命令 `python export.py --weights yolov5s-cls.pt --include engine onnx --imgsz 224` +- 所有模型都使用 SGD 优化器训练 90 个 epochs,都使用 `lr0=0.001` 和 `weight_decay=5e-5` 参数, 图像大小为 224 ,且都使用默认设置。
训练 log 可以查看 https://wandb.ai/glenn-jocher/YOLOv5-Classifier-v6-2 +- **准确性**都在单模型单尺度上计算,数据集使用 [ImageNet-1k](https://www.image-net.org/index.php) 。
复现命令 `python classify/val.py --data ../datasets/imagenet --img 224` +- **推理速度**是使用 100 个推理图像进行平均得到,测试环境使用谷歌 [Colab Pro](https://colab.research.google.com/signup) V100 高 RAM 实例。
复现命令 `python classify/val.py --data ../datasets/imagenet --img 224 --batch 1` +- **模型导出**到 FP32 的 ONNX 和 FP16 的 TensorRT 使用 `export.py` 。
复现命令 `python export.py --weights yolov5s-cls.pt --include engine onnx --imgsz 224`
@@ -413,8 +374,7 @@ GPU 速度测试。为了便于重现,我们在 Google 上进行了所有速 ### 训练 -YOLOv5 分类训练支持自动下载 MNIST、Fashion-MNIST、CIFAR10、CIFAR100、Imagenette、Imagewoof 和 ImageNet -数据集,命令中使用 `--data` 即可。 MNIST 示例 `--data mnist` 。 +YOLOv5 分类训练支持自动下载 MNIST、Fashion-MNIST、CIFAR10、CIFAR100、Imagenette、Imagewoof 和 ImageNet 数据集,命令中使用 `--data` 即可。 MNIST 示例 `--data mnist` 。 ```bash # 单 GPU @@ -459,7 +419,7 @@ python export.py --weights yolov5s-cls.pt resnet50.pt efficientnet_b0.pt --inclu ##
环境
-使用下面我们经过验证的环境,在几秒钟内开始使用 YOLOv5 。单击下面的图标了解详细信息。 +使用下面我们经过验证的环境,在几秒钟内开始使用 YOLOv3 。单击下面的图标了解详细信息。
@@ -471,7 +431,7 @@ python export.py --weights yolov5s-cls.pt resnet50.pt efficientnet_b0.pt --inclu - + @@ -483,9 +443,7 @@ python export.py --weights yolov5s-cls.pt resnet50.pt efficientnet_b0.pt --inclu ##
贡献
-我们喜欢您的意见或建议!我们希望尽可能简单和透明地为 YOLOv5 做出贡献。请看我们的 [投稿指南](CONTRIBUTING.md) -,并填写 [YOLOv5调查](https://ultralytics.com/survey?utm_source=github&utm_medium=social&utm_campaign=Survey) -向我们发送您的体验反馈。感谢我们所有的贡献者! +我们喜欢您的意见或建议!我们希望尽可能简单和透明地为 YOLOv3 做出贡献。请看我们的 [投稿指南](CONTRIBUTING.md),并填写 [YOLOv5调查](https://ultralytics.com/survey?utm_source=github&utm_medium=social&utm_campaign=Survey) 向我们发送您的体验反馈。感谢我们所有的贡献者! @@ -494,16 +452,14 @@ python export.py --weights yolov5s-cls.pt resnet50.pt efficientnet_b0.pt --inclu ##
License
-YOLOv5 在两种不同的 License 下可用: +YOLOv3 在两种不同的 License 下可用: - **GPL-3.0 License**: 查看 [License](https://github.com/ultralytics/yolov5/blob/master/LICENSE) 文件的详细信息。 -- **企业License**:在没有 GPL-3.0 开源要求的情况下为商业产品开发提供更大的灵活性。典型用例是将 Ultralytics 软件和 AI - 模型嵌入到商业产品和应用程序中。在以下位置申请企业许可证 [Ultralytics 许可](https://ultralytics.com/license) 。 +- **企业License**:在没有 GPL-3.0 开源要求的情况下为商业产品开发提供更大的灵活性。典型用例是将 Ultralytics 软件和 AI 模型嵌入到商业产品和应用程序中。在以下位置申请企业许可证 [Ultralytics 许可](https://ultralytics.com/license) 。 ##
联系我们
-请访问 [GitHub Issues](https://github.com/ultralytics/yolov3/issues) -或 [Ultralytics Community Forum](https://community.ultralytis.com) 以报告 YOLOv5 错误和请求功能。 +请访问 [GitHub Issues](https://github.com/ultralytics/yolov5/issues) 或 [Ultralytics Community Forum](https://community.ultralytis.com) 以报告 YOLOv3 错误和请求功能。
-| Roboflow | ClearML ⭐ 新 | Comet ⭐ 新 | Neural Magic ⭐ 新 | -| :--------------------------------------------------------------------------------: | :-------------------------------------------------------------------------: | :-------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------: | -| 将您的自定义数据集进行标注并直接导出到 YOLOv3 以进行训练 [Roboflow](https://roboflow.com/?ref=ultralytics) | 自动跟踪、可视化甚至远程训练 YOLOv3 [ClearML](https://cutt.ly/yolov5-readme-clearml)(开源!) | 永远免费,[Comet](https://bit.ly/yolov5-readme-comet)可让您保存 YOLOv3 模型、恢复训练以及交互式可视化和调试预测 | 使用 [Neural Magic DeepSparse](https://bit.ly/yolov5-neuralmagic),运行 YOLOv3 推理的速度最高可提高6倍 | +| Roboflow | ClearML ⭐ 新 | Comet ⭐ 新 | Neural Magic ⭐ 新 | +| :--------------------------------------------------------------------------------: | :-------------------------------------------------------------------------: |:----------------------------------------------------------------------------------:| :------------------------------------------------------------------------------------: | +| 将您的自定义数据集进行标注并直接导出到 YOLOv3 以进行训练 [Roboflow](https://roboflow.com/?ref=ultralytics) | 自动跟踪、可视化甚至远程训练 YOLOv3 [ClearML](https://cutt.ly/yolov5-readme-clearml)(开源!) | 永远免费,[Comet](https://bit.ly/yolov5-readme-comet2)可让您保存 YOLOv3 模型、恢复训练以及交互式可视化和调试预测 | 使用 [Neural Magic DeepSparse](https://bit.ly/yolov5-neuralmagic),运行 YOLOv3 推理的速度最高可提高6倍 | ##
Ultralytics HUB
From 21a56e51e57dc21035fbf30400664e605f4824be Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Wed, 15 Feb 2023 20:34:42 +0400 Subject: [PATCH 2592/2595] Update README.md (#2016) * Update README.md * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- README.zh-CN.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.zh-CN.md b/README.zh-CN.md index c17891fa..6cbced49 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -192,7 +192,7 @@ python train.py --data coco.yaml --epochs 300 --weights '' --cfg yolov5n.yaml -
| Roboflow | ClearML ⭐ 新 | Comet ⭐ 新 | Neural Magic ⭐ 新 | -| :--------------------------------------------------------------------------------: | :-------------------------------------------------------------------------: |:----------------------------------------------------------------------------------:| :------------------------------------------------------------------------------------: | +| :--------------------------------------------------------------------------------: | :-------------------------------------------------------------------------: | :--------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------: | | 将您的自定义数据集进行标注并直接导出到 YOLOv3 以进行训练 [Roboflow](https://roboflow.com/?ref=ultralytics) | 自动跟踪、可视化甚至远程训练 YOLOv3 [ClearML](https://cutt.ly/yolov5-readme-clearml)(开源!) | 永远免费,[Comet](https://bit.ly/yolov5-readme-comet2)可让您保存 YOLOv3 模型、恢复训练以及交互式可视化和调试预测 | 使用 [Neural Magic DeepSparse](https://bit.ly/yolov5-neuralmagic),运行 YOLOv3 推理的速度最高可提高6倍 | ##
Ultralytics HUB
From a0a40127394c3518b5f2fc12596d40207f84909a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 17 Feb 2023 21:27:34 +0100 Subject: [PATCH 2593/2595] Update downloads.py (#2018) * Update downloads.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- utils/downloads.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/utils/downloads.py b/utils/downloads.py index 6ca02aaa..63d5be0e 100644 --- a/utils/downloads.py +++ b/utils/downloads.py @@ -98,11 +98,9 @@ def attempt_download(file, repo='ultralytics/yolov5', release='v7.0'): file.parent.mkdir(parents=True, exist_ok=True) # make parent dir (if required) if name in assets: - url3 = 'https://drive.google.com/drive/folders/1EFQTEUeXWSFww0luse2jB9M1QNZQGwNl' # backup gdrive mirror - safe_download( - file, - url=f'https://github.com/{repo}/releases/download/{tag}/{name}', - min_bytes=1E5, - error_msg=f'{file} missing, try downloading from https://github.com/{repo}/releases/{tag} or {url3}') + safe_download(file, + url=f'https://github.com/{repo}/releases/download/{tag}/{name}', + min_bytes=1E5, + error_msg=f'{file} missing, try downloading from https://github.com/{repo}/releases/{tag}') return str(file) From 527ce029166935ddc5e70a187aaee4c480365ae8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Fri, 17 Feb 2023 21:52:12 +0100 Subject: [PATCH 2594/2595] Update .pre-commit-config.yaml (#2019) * Update .pre-commit-config.yaml * Update __init__.py * Update .pre-commit-config.yaml * Precommit updates --- .pre-commit-config.yaml | 35 ++--- benchmarks.py | 2 +- classify/predict.py | 4 +- classify/train.py | 24 +-- classify/tutorial.ipynb | 2 +- classify/val.py | 8 +- detect.py | 2 +- export.py | 18 +-- models/common.py | 16 +- models/segment/yolov5m-seg.yaml | 2 +- models/segment/yolov5s-seg.yaml | 2 +- models/tf.py | 12 +- segment/predict.py | 2 +- segment/train.py | 14 +- segment/tutorial.ipynb | 2 +- segment/val.py | 16 +- train.py | 6 +- tutorial.ipynb | 2 +- utils/__init__.py | 2 +- utils/dataloaders.py | 34 ++--- utils/downloads.py | 2 +- utils/flask_rest_api/example_request.py | 8 +- utils/flask_rest_api/restapi.py | 22 +-- utils/general.py | 46 +++--- utils/loggers/__init__.py | 16 +- utils/loggers/clearml/clearml_utils.py | 6 +- utils/loggers/comet/__init__.py | 192 ++++++++++++------------ utils/loggers/comet/comet_utils.py | 42 +++--- utils/loggers/comet/hpo.py | 32 ++-- utils/loggers/wandb/wandb_utils.py | 10 +- utils/metrics.py | 10 +- utils/plots.py | 2 +- utils/segment/dataloaders.py | 32 ++-- utils/segment/loss.py | 12 +- utils/segment/metrics.py | 90 +++++------ utils/segment/plots.py | 20 +-- utils/torch_utils.py | 4 +- utils/triton.py | 14 +- val.py | 4 +- 39 files changed, 383 insertions(+), 386 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b188048e..c5162378 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,8 +1,5 @@ -# Define hooks for code formations -# Will be applied on any updated commit files if a user has installed and linked commit hook - -default_language_version: - python: python3.8 +# Ultralytics YOLO 🚀, GPL-3.0 license +# Pre-commit hooks. For more information see https://github.com/pre-commit/pre-commit-hooks/blob/main/README.md exclude: 'docs/' # Define bot property if installed via https://github.com/marketplace/pre-commit-ci @@ -16,13 +13,13 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.4.0 hooks: - # - id: end-of-file-fixer + - id: end-of-file-fixer - id: trailing-whitespace - id: check-case-conflict - id: check-yaml - - id: check-toml - - id: pretty-format-json - id: check-docstring-first + - id: double-quote-string-fixer + - id: detect-private-key - repo: https://github.com/asottile/pyupgrade rev: v3.3.1 @@ -31,11 +28,11 @@ repos: name: Upgrade code args: [--py37-plus] - # - repo: https://github.com/PyCQA/isort - # rev: 5.11.4 - # hooks: - # - id: isort - # name: Sort imports + - repo: https://github.com/PyCQA/isort + rev: 5.12.0 + hooks: + - id: isort + name: Sort imports - repo: https://github.com/google/yapf rev: v0.32.0 @@ -59,12 +56,12 @@ repos: - id: flake8 name: PEP8 - #- repo: https://github.com/codespell-project/codespell - # rev: v2.2.2 - # hooks: - # - id: codespell - # args: - # - --ignore-words-list=crate,nd + - repo: https://github.com/codespell-project/codespell + rev: v2.2.2 + hooks: + - id: codespell + args: + - --ignore-words-list=crate,nd,strack,dota #- repo: https://github.com/asottile/yesqa # rev: v1.4.0 diff --git a/benchmarks.py b/benchmarks.py index b9a41360..38fcb023 100644 --- a/benchmarks.py +++ b/benchmarks.py @@ -164,6 +164,6 @@ def main(opt): test(**vars(opt)) if opt.test else run(**vars(opt)) -if __name__ == "__main__": +if __name__ == '__main__': opt = parse_opt() main(opt) diff --git a/classify/predict.py b/classify/predict.py index dc7a3eda..bbb07640 100644 --- a/classify/predict.py +++ b/classify/predict.py @@ -179,7 +179,7 @@ def run( vid_writer[i].write(im0) # Print time (inference-only) - LOGGER.info(f"{s}{dt[1].dt * 1E3:.1f}ms") + LOGGER.info(f'{s}{dt[1].dt * 1E3:.1f}ms') # Print results t = tuple(x.t / seen * 1E3 for x in dt) # speeds per image @@ -221,6 +221,6 @@ def main(opt): run(**vars(opt)) -if __name__ == "__main__": +if __name__ == '__main__': opt = parse_opt() main(opt) diff --git a/classify/train.py b/classify/train.py index 4d62bfc7..3db68dc0 100644 --- a/classify/train.py +++ b/classify/train.py @@ -220,11 +220,11 @@ def train(opt, device): # Log metrics = { - "train/loss": tloss, - f"{val}/loss": vloss, - "metrics/accuracy_top1": top1, - "metrics/accuracy_top5": top5, - "lr/0": optimizer.param_groups[0]['lr']} # learning rate + 'train/loss': tloss, + f'{val}/loss': vloss, + 'metrics/accuracy_top1': top1, + 'metrics/accuracy_top5': top5, + 'lr/0': optimizer.param_groups[0]['lr']} # learning rate logger.log_metrics(metrics, epoch) # Save model @@ -251,11 +251,11 @@ def train(opt, device): if RANK in {-1, 0} and final_epoch: LOGGER.info(f'\nTraining complete ({(time.time() - t0) / 3600:.3f} hours)' f"\nResults saved to {colorstr('bold', save_dir)}" - f"\nPredict: python classify/predict.py --weights {best} --source im.jpg" - f"\nValidate: python classify/val.py --weights {best} --data {data_dir}" - f"\nExport: python export.py --weights {best} --include onnx" + f'\nPredict: python classify/predict.py --weights {best} --source im.jpg' + f'\nValidate: python classify/val.py --weights {best} --data {data_dir}' + f'\nExport: python export.py --weights {best} --include onnx' f"\nPyTorch Hub: model = torch.hub.load('ultralytics/yolov5', 'custom', '{best}')" - f"\nVisualize: https://netron.app\n") + f'\nVisualize: https://netron.app\n') # Plot examples images, labels = (x[:25] for x in next(iter(testloader))) # first 25 images and labels @@ -263,7 +263,7 @@ def train(opt, device): file = imshow_cls(images, labels, pred, model.names, verbose=False, f=save_dir / 'test_images.jpg') # Log results - meta = {"epochs": epochs, "top1_acc": best_fitness, "date": datetime.now().isoformat()} + meta = {'epochs': epochs, 'top1_acc': best_fitness, 'date': datetime.now().isoformat()} logger.log_images(file, name='Test Examples (true-predicted)', epoch=epoch) logger.log_model(best, epochs, metadata=meta) @@ -310,7 +310,7 @@ def main(opt): assert torch.cuda.device_count() > LOCAL_RANK, 'insufficient CUDA devices for DDP command' torch.cuda.set_device(LOCAL_RANK) device = torch.device('cuda', LOCAL_RANK) - dist.init_process_group(backend="nccl" if dist.is_nccl_available() else "gloo") + dist.init_process_group(backend='nccl' if dist.is_nccl_available() else 'gloo') # Parameters opt.save_dir = increment_path(Path(opt.project) / opt.name, exist_ok=opt.exist_ok) # increment run @@ -328,6 +328,6 @@ def run(**kwargs): return opt -if __name__ == "__main__": +if __name__ == '__main__': opt = parse_opt() main(opt) diff --git a/classify/tutorial.ipynb b/classify/tutorial.ipynb index e3a60c4e..73c0ea30 100644 --- a/classify/tutorial.ipynb +++ b/classify/tutorial.ipynb @@ -1477,4 +1477,4 @@ }, "nbformat": 4, "nbformat_minor": 0 -} \ No newline at end of file +} diff --git a/classify/val.py b/classify/val.py index 45729609..f0041ea7 100644 --- a/classify/val.py +++ b/classify/val.py @@ -100,7 +100,7 @@ def run( pred, targets, loss, dt = [], [], 0, (Profile(), Profile(), Profile()) n = len(dataloader) # number of batches action = 'validating' if dataloader.dataset.root.stem == 'val' else 'testing' - desc = f"{pbar.desc[:-36]}{action:>36}" if pbar else f"{action}" + desc = f'{pbar.desc[:-36]}{action:>36}' if pbar else f'{action}' bar = tqdm(dataloader, desc, n, not training, bar_format=TQDM_BAR_FORMAT, position=0) with torch.cuda.amp.autocast(enabled=device.type != 'cpu'): for images, labels in bar: @@ -123,14 +123,14 @@ def run( top1, top5 = acc.mean(0).tolist() if pbar: - pbar.desc = f"{pbar.desc[:-36]}{loss:>12.3g}{top1:>12.3g}{top5:>12.3g}" + pbar.desc = f'{pbar.desc[:-36]}{loss:>12.3g}{top1:>12.3g}{top5:>12.3g}' if verbose: # all classes LOGGER.info(f"{'Class':>24}{'Images':>12}{'top1_acc':>12}{'top5_acc':>12}") LOGGER.info(f"{'all':>24}{targets.shape[0]:>12}{top1:>12.3g}{top5:>12.3g}") for i, c in model.names.items(): acc_i = acc[targets == i] top1i, top5i = acc_i.mean(0).tolist() - LOGGER.info(f"{c:>24}{acc_i.shape[0]:>12}{top1i:>12.3g}{top5i:>12.3g}") + LOGGER.info(f'{c:>24}{acc_i.shape[0]:>12}{top1i:>12.3g}{top5i:>12.3g}') # Print results t = tuple(x.t / len(dataloader.dataset.samples) * 1E3 for x in dt) # speeds per image @@ -165,6 +165,6 @@ def main(opt): run(**vars(opt)) -if __name__ == "__main__": +if __name__ == '__main__': opt = parse_opt() main(opt) diff --git a/detect.py b/detect.py index e8b76746..d4ab1c8d 100644 --- a/detect.py +++ b/detect.py @@ -260,6 +260,6 @@ def main(opt): run(**vars(opt)) -if __name__ == "__main__": +if __name__ == '__main__': opt = parse_opt() main(opt) diff --git a/export.py b/export.py index 3d54cbf8..fd4720a0 100644 --- a/export.py +++ b/export.py @@ -120,7 +120,7 @@ def export_torchscript(model, im, file, optimize, prefix=colorstr('TorchScript:' f = file.with_suffix('.torchscript') ts = torch.jit.trace(model, im, strict=False) - d = {"shape": im.shape, "stride": int(max(model.stride)), "names": model.names} + d = {'shape': im.shape, 'stride': int(max(model.stride)), 'names': model.names} extra_files = {'config.txt': json.dumps(d)} # torch._C.ExtraFilesMap() if optimize: # https://pytorch.org/tutorials/recipes/mobile_interpreter.html optimize_for_mobile(ts)._save_for_lite_interpreter(str(f), _extra_files=extra_files) @@ -230,7 +230,7 @@ def export_coreml(model, im, file, int8, half, prefix=colorstr('CoreML:')): if bits < 32: if MACOS: # quantization only supported on macOS with warnings.catch_warnings(): - warnings.filterwarnings("ignore", category=DeprecationWarning) # suppress numpy==1.20 float warning + warnings.filterwarnings('ignore', category=DeprecationWarning) # suppress numpy==1.20 float warning ct_model = ct.models.neural_network.quantization_utils.quantize_weights(ct_model, bits, mode) else: print(f'{prefix} quantization only supported on macOS, skipping...') @@ -286,7 +286,7 @@ def export_engine(model, im, file, half, dynamic, simplify, workspace=4, verbose if dynamic: if im.shape[0] <= 1: - LOGGER.warning(f"{prefix} WARNING ⚠️ --dynamic model requires maximum --batch-size argument") + LOGGER.warning(f'{prefix} WARNING ⚠️ --dynamic model requires maximum --batch-size argument') profile = builder.create_optimization_profile() for inp in inputs: profile.set_shape(inp.name, (1, *im.shape[1:]), (max(1, im.shape[0] // 2), *im.shape[1:]), im.shape) @@ -396,7 +396,7 @@ def export_tflite(keras_model, im, file, int8, data, nms, agnostic_nms, prefix=c converter.target_spec.supported_ops.append(tf.lite.OpsSet.SELECT_TF_OPS) tflite_model = converter.convert() - open(f, "wb").write(tflite_model) + open(f, 'wb').write(tflite_model) return f, None @@ -420,7 +420,7 @@ def export_edgetpu(file, prefix=colorstr('Edge TPU:')): f = str(file).replace('.pt', '-int8_edgetpu.tflite') # Edge TPU model f_tfl = str(file).replace('.pt', '-int8.tflite') # TFLite model - cmd = f"edgetpu_compiler -s -d -k 10 --out_dir {file.parent} {f_tfl}" + cmd = f'edgetpu_compiler -s -d -k 10 --out_dir {file.parent} {f_tfl}' subprocess.run(cmd.split(), check=True) return f, None @@ -601,14 +601,14 @@ def run( det &= not seg # segmentation models inherit from SegmentationModel(DetectionModel) dir = Path('segment' if seg else 'classify' if cls else '') h = '--half' if half else '' # --half FP16 inference arg - s = "# WARNING ⚠️ ClassificationModel not yet supported for PyTorch Hub AutoShape inference" if cls else \ - "# WARNING ⚠️ SegmentationModel not yet supported for PyTorch Hub AutoShape inference" if seg else '' + s = '# WARNING ⚠️ ClassificationModel not yet supported for PyTorch Hub AutoShape inference' if cls else \ + '# WARNING ⚠️ SegmentationModel not yet supported for PyTorch Hub AutoShape inference' if seg else '' LOGGER.info(f'\nExport complete ({time.time() - t:.1f}s)' f"\nResults saved to {colorstr('bold', file.parent.resolve())}" f"\nDetect: python {dir / ('detect.py' if det else 'predict.py')} --weights {f[-1]} {h}" f"\nValidate: python {dir / 'val.py'} --weights {f[-1]} {h}" f"\nPyTorch Hub: model = torch.hub.load('ultralytics/yolov5', 'custom', '{f[-1]}') {s}" - f"\nVisualize: https://netron.app") + f'\nVisualize: https://netron.app') return f # return list of exported files/dirs @@ -650,6 +650,6 @@ def main(opt): run(**vars(opt)) -if __name__ == "__main__": +if __name__ == '__main__': opt = parse_opt() main(opt) diff --git a/models/common.py b/models/common.py index efb66817..bc5fc0d3 100644 --- a/models/common.py +++ b/models/common.py @@ -380,11 +380,11 @@ class DetectMultiBackend(nn.Module): w = next(Path(w).glob('*.xml')) # get *.xml file from *_openvino_model dir network = ie.read_model(model=w, weights=Path(w).with_suffix('.bin')) if network.get_parameters()[0].get_layout().empty: - network.get_parameters()[0].set_layout(Layout("NCHW")) + network.get_parameters()[0].set_layout(Layout('NCHW')) batch_dim = get_batch(network) if batch_dim.is_static: batch_size = batch_dim.get_length() - executable_network = ie.compile_model(network, device_name="CPU") # device_name="MYRIAD" for Intel NCS2 + executable_network = ie.compile_model(network, device_name='CPU') # device_name="MYRIAD" for Intel NCS2 stride, names = self._load_metadata(Path(w).with_suffix('.yaml')) # load metadata elif engine: # TensorRT LOGGER.info(f'Loading {w} for TensorRT inference...') @@ -431,7 +431,7 @@ class DetectMultiBackend(nn.Module): import tensorflow as tf def wrap_frozen_graph(gd, inputs, outputs): - x = tf.compat.v1.wrap_function(lambda: tf.compat.v1.import_graph_def(gd, name=""), []) # wrapped + x = tf.compat.v1.wrap_function(lambda: tf.compat.v1.import_graph_def(gd, name=''), []) # wrapped ge = x.graph.as_graph_element return x.prune(tf.nest.map_structure(ge, inputs), tf.nest.map_structure(ge, outputs)) @@ -445,7 +445,7 @@ class DetectMultiBackend(nn.Module): gd = tf.Graph().as_graph_def() # TF GraphDef with open(w, 'rb') as f: gd.ParseFromString(f.read()) - frozen_func = wrap_frozen_graph(gd, inputs="x:0", outputs=gd_outputs(gd)) + frozen_func = wrap_frozen_graph(gd, inputs='x:0', outputs=gd_outputs(gd)) elif tflite or edgetpu: # https://www.tensorflow.org/lite/guide/python#install_tensorflow_lite_for_python try: # https://coral.ai/docs/edgetpu/tflite-python/#update-existing-tf-lite-code-for-the-edge-tpu from tflite_runtime.interpreter import Interpreter, load_delegate @@ -467,9 +467,9 @@ class DetectMultiBackend(nn.Module): output_details = interpreter.get_output_details() # outputs # load metadata with contextlib.suppress(zipfile.BadZipFile): - with zipfile.ZipFile(w, "r") as model: + with zipfile.ZipFile(w, 'r') as model: meta_file = model.namelist()[0] - meta = ast.literal_eval(model.read(meta_file).decode("utf-8")) + meta = ast.literal_eval(model.read(meta_file).decode('utf-8')) stride, names = int(meta['stride']), meta['names'] elif tfjs: # TF.js raise NotImplementedError('ERROR: YOLOv3 TF.js inference is not supported') @@ -491,7 +491,7 @@ class DetectMultiBackend(nn.Module): check_requirements('tritonclient[all]') from utils.triton import TritonRemoteModel model = TritonRemoteModel(url=w) - nhwc = model.runtime.startswith("tensorflow") + nhwc = model.runtime.startswith('tensorflow') else: raise NotImplementedError(f'ERROR: {w} is not a supported format') @@ -608,7 +608,7 @@ class DetectMultiBackend(nn.Module): url = urlparse(p) # if url may be Triton inference server types = [s in Path(p).name for s in sf] types[8] &= not types[9] # tflite &= not edgetpu - triton = not any(types) and all([any(s in url.scheme for s in ["http", "grpc"]), url.netloc]) + triton = not any(types) and all([any(s in url.scheme for s in ['http', 'grpc']), url.netloc]) return types + [triton] @staticmethod diff --git a/models/segment/yolov5m-seg.yaml b/models/segment/yolov5m-seg.yaml index febe93f6..cafadcd9 100644 --- a/models/segment/yolov5m-seg.yaml +++ b/models/segment/yolov5m-seg.yaml @@ -45,4 +45,4 @@ head: [-1, 3, C3, [1024, False]], # 23 (P5/32-large) [[17, 20, 23], 1, Segment, [nc, anchors, 32, 256]], # Detect(P3, P4, P5) - ] \ No newline at end of file + ] diff --git a/models/segment/yolov5s-seg.yaml b/models/segment/yolov5s-seg.yaml index 3b31ed3a..6018cdb4 100644 --- a/models/segment/yolov5s-seg.yaml +++ b/models/segment/yolov5s-seg.yaml @@ -45,4 +45,4 @@ head: [-1, 3, C3, [1024, False]], # 23 (P5/32-large) [[17, 20, 23], 1, Segment, [nc, anchors, 32, 256]], # Detect(P3, P4, P5) - ] \ No newline at end of file + ] diff --git a/models/tf.py b/models/tf.py index 4c408776..748a95c9 100644 --- a/models/tf.py +++ b/models/tf.py @@ -356,7 +356,7 @@ class TFUpsample(keras.layers.Layer): # TF version of torch.nn.Upsample() def __init__(self, size, scale_factor, mode, w=None): # warning: all arguments needed including 'w' super().__init__() - assert scale_factor % 2 == 0, "scale_factor must be multiple of 2" + assert scale_factor % 2 == 0, 'scale_factor must be multiple of 2' self.upsample = lambda x: tf.image.resize(x, (x.shape[1] * scale_factor, x.shape[2] * scale_factor), mode) # self.upsample = keras.layers.UpSampling2D(size=scale_factor, interpolation=mode) # with default arguments: align_corners=False, half_pixel_centers=False @@ -371,7 +371,7 @@ class TFConcat(keras.layers.Layer): # TF version of torch.concat() def __init__(self, dimension=1, w=None): super().__init__() - assert dimension == 1, "convert only NCHW to NHWC concat" + assert dimension == 1, 'convert only NCHW to NHWC concat' self.d = 3 def call(self, inputs): @@ -523,17 +523,17 @@ class AgnosticNMS(keras.layers.Layer): selected_boxes = tf.gather(boxes, selected_inds) padded_boxes = tf.pad(selected_boxes, paddings=[[0, topk_all - tf.shape(selected_boxes)[0]], [0, 0]], - mode="CONSTANT", + mode='CONSTANT', constant_values=0.0) selected_scores = tf.gather(scores_inp, selected_inds) padded_scores = tf.pad(selected_scores, paddings=[[0, topk_all - tf.shape(selected_boxes)[0]]], - mode="CONSTANT", + mode='CONSTANT', constant_values=-1.0) selected_classes = tf.gather(class_inds, selected_inds) padded_classes = tf.pad(selected_classes, paddings=[[0, topk_all - tf.shape(selected_boxes)[0]]], - mode="CONSTANT", + mode='CONSTANT', constant_values=-1.0) valid_detections = tf.shape(selected_inds)[0] return padded_boxes, padded_scores, padded_classes, valid_detections @@ -603,6 +603,6 @@ def main(opt): run(**vars(opt)) -if __name__ == "__main__": +if __name__ == '__main__': opt = parse_opt() main(opt) diff --git a/segment/predict.py b/segment/predict.py index ac832bf8..7ec63204 100644 --- a/segment/predict.py +++ b/segment/predict.py @@ -279,6 +279,6 @@ def main(opt): run(**vars(opt)) -if __name__ == "__main__": +if __name__ == '__main__': opt = parse_opt() main(opt) diff --git a/segment/train.py b/segment/train.py index 3efc883b..a9786049 100644 --- a/segment/train.py +++ b/segment/train.py @@ -138,7 +138,7 @@ def train(hyp, opt, device, callbacks): # hyp is path/to/hyp.yaml or hyp dictio # Batch size if RANK == -1 and batch_size == -1: # single-GPU only, estimate best batch size batch_size = check_train_batch_size(model, imgsz, amp) - logger.update_params({"batch_size": batch_size}) + logger.update_params({'batch_size': batch_size}) # loggers.on_params_update({"batch_size": batch_size}) # Optimizer @@ -340,10 +340,10 @@ def train(hyp, opt, device, callbacks): # hyp is path/to/hyp.yaml or hyp dictio # Mosaic plots if plots: if ni < 3: - plot_images_and_masks(imgs, targets, masks, paths, save_dir / f"train_batch{ni}.jpg") + plot_images_and_masks(imgs, targets, masks, paths, save_dir / f'train_batch{ni}.jpg') if ni == 10: files = sorted(save_dir.glob('train*.jpg')) - logger.log_images(files, "Mosaics", epoch) + logger.log_images(files, 'Mosaics', epoch) # end batch ------------------------------------------------------------------------------------------------ # Scheduler @@ -453,8 +453,8 @@ def train(hyp, opt, device, callbacks): # hyp is path/to/hyp.yaml or hyp dictio files = ['results.png', 'confusion_matrix.png', *(f'{x}_curve.png' for x in ('F1', 'PR', 'P', 'R'))] files = [(save_dir / f) for f in files if (save_dir / f).exists()] # filter LOGGER.info(f"Results saved to {colorstr('bold', save_dir)}") - logger.log_images(files, "Results", epoch + 1) - logger.log_images(sorted(save_dir.glob('val*.jpg')), "Validation", epoch + 1) + logger.log_images(files, 'Results', epoch + 1) + logger.log_images(sorted(save_dir.glob('val*.jpg')), 'Validation', epoch + 1) torch.cuda.empty_cache() return results @@ -547,7 +547,7 @@ def main(opt, callbacks=Callbacks()): assert torch.cuda.device_count() > LOCAL_RANK, 'insufficient CUDA devices for DDP command' torch.cuda.set_device(LOCAL_RANK) device = torch.device('cuda', LOCAL_RANK) - dist.init_process_group(backend="nccl" if dist.is_nccl_available() else "gloo") + dist.init_process_group(backend='nccl' if dist.is_nccl_available() else 'gloo') # Train if not opt.evolve: @@ -654,6 +654,6 @@ def run(**kwargs): return opt -if __name__ == "__main__": +if __name__ == '__main__': opt = parse_opt() main(opt) diff --git a/segment/tutorial.ipynb b/segment/tutorial.ipynb index be43d6d2..dc12b23a 100644 --- a/segment/tutorial.ipynb +++ b/segment/tutorial.ipynb @@ -591,4 +591,4 @@ }, "nbformat": 4, "nbformat_minor": 0 -} \ No newline at end of file +} diff --git a/segment/val.py b/segment/val.py index 0e64da28..02456524 100644 --- a/segment/val.py +++ b/segment/val.py @@ -70,8 +70,8 @@ def save_one_json(predn, jdict, path, class_map, pred_masks): from pycocotools.mask import encode def single_encode(x): - rle = encode(np.asarray(x[:, :, None], order="F", dtype="uint8"))[0] - rle["counts"] = rle["counts"].decode("utf-8") + rle = encode(np.asarray(x[:, :, None], order='F', dtype='uint8'))[0] + rle['counts'] = rle['counts'].decode('utf-8') return rle image_id = int(path.stem) if path.stem.isnumeric() else path.stem @@ -105,7 +105,7 @@ def process_batch(detections, labels, iouv, pred_masks=None, gt_masks=None, over gt_masks = gt_masks.repeat(nl, 1, 1) # shape(1,640,640) -> (n,640,640) gt_masks = torch.where(gt_masks == index, 1.0, 0.0) if gt_masks.shape[1:] != pred_masks.shape[1:]: - gt_masks = F.interpolate(gt_masks[None], pred_masks.shape[1:], mode="bilinear", align_corners=False)[0] + gt_masks = F.interpolate(gt_masks[None], pred_masks.shape[1:], mode='bilinear', align_corners=False)[0] gt_masks = gt_masks.gt_(0.5) iou = mask_iou(gt_masks.view(gt_masks.shape[0], -1), pred_masks.view(pred_masks.shape[0], -1)) else: # boxes @@ -231,8 +231,8 @@ def run( if isinstance(names, (list, tuple)): # old format names = dict(enumerate(names)) class_map = coco80_to_coco91_class() if is_coco else list(range(1000)) - s = ('%22s' + '%11s' * 10) % ('Class', 'Images', 'Instances', 'Box(P', "R", "mAP50", "mAP50-95)", "Mask(P", "R", - "mAP50", "mAP50-95)") + s = ('%22s' + '%11s' * 10) % ('Class', 'Images', 'Instances', 'Box(P', 'R', 'mAP50', 'mAP50-95)', 'Mask(P', 'R', + 'mAP50', 'mAP50-95)') dt = Profile(), Profile(), Profile() metrics = Metrics() loss = torch.zeros(4, device=device) @@ -343,7 +343,7 @@ def run( # Print results pf = '%22s' + '%11i' * 2 + '%11.3g' * 8 # print format - LOGGER.info(pf % ("all", seen, nt.sum(), *metrics.mean_results())) + LOGGER.info(pf % ('all', seen, nt.sum(), *metrics.mean_results())) if nt.sum() == 0: LOGGER.warning(f'WARNING ⚠️ no labels found in {task} set, can not compute metrics without labels') @@ -369,7 +369,7 @@ def run( if save_json and len(jdict): w = Path(weights[0] if isinstance(weights, list) else weights).stem if weights is not None else '' # weights anno_json = str(Path('../datasets/coco/annotations/instances_val2017.json')) # annotations - pred_json = str(save_dir / f"{w}_predictions.json") # predictions + pred_json = str(save_dir / f'{w}_predictions.json') # predictions LOGGER.info(f'\nEvaluating pycocotools mAP... saving {pred_json}...') with open(pred_json, 'w') as f: json.dump(jdict, f) @@ -468,6 +468,6 @@ def main(opt): raise NotImplementedError(f'--task {opt.task} not in ("train", "val", "test", "speed", "study")') -if __name__ == "__main__": +if __name__ == '__main__': opt = parse_opt() main(opt) diff --git a/train.py b/train.py index 5ab44562..3d5796e0 100644 --- a/train.py +++ b/train.py @@ -147,7 +147,7 @@ def train(hyp, opt, device, callbacks): # hyp is path/to/hyp.yaml or hyp dictio # Batch size if RANK == -1 and batch_size == -1: # single-GPU only, estimate best batch size batch_size = check_train_batch_size(model, imgsz, amp) - loggers.on_params_update({"batch_size": batch_size}) + loggers.on_params_update({'batch_size': batch_size}) # Optimizer nbs = 64 # nominal batch size @@ -521,7 +521,7 @@ def main(opt, callbacks=Callbacks()): assert torch.cuda.device_count() > LOCAL_RANK, 'insufficient CUDA devices for DDP command' torch.cuda.set_device(LOCAL_RANK) device = torch.device('cuda', LOCAL_RANK) - dist.init_process_group(backend="nccl" if dist.is_nccl_available() else "gloo") + dist.init_process_group(backend='nccl' if dist.is_nccl_available() else 'gloo') # Train if not opt.evolve: @@ -630,6 +630,6 @@ def run(**kwargs): return opt -if __name__ == "__main__": +if __name__ == '__main__': opt = parse_opt() main(opt) diff --git a/tutorial.ipynb b/tutorial.ipynb index 63881fb9..5828c40d 100644 --- a/tutorial.ipynb +++ b/tutorial.ipynb @@ -973,4 +973,4 @@ "outputs": [] } ] -} \ No newline at end of file +} diff --git a/utils/__init__.py b/utils/__init__.py index 2abd2a79..8e855a38 100644 --- a/utils/__init__.py +++ b/utils/__init__.py @@ -69,7 +69,7 @@ def notebook_init(verbose=True): if verbose: gb = 1 << 30 # bytes to GiB (1024 ** 3) ram = psutil.virtual_memory().total - total, used, free = shutil.disk_usage("/") + total, used, free = shutil.disk_usage('/') display.clear_output() s = f'({os.cpu_count()} CPUs, {ram / gb:.1f} GB RAM, {(total - free) / gb:.1f}/{total / gb:.1f} GB disk)' else: diff --git a/utils/dataloaders.py b/utils/dataloaders.py index ba0317ca..2a038d1a 100644 --- a/utils/dataloaders.py +++ b/utils/dataloaders.py @@ -89,7 +89,7 @@ def exif_transpose(image): if method is not None: image = image.transpose(method) del exif[0x0112] - image.info["exif"] = exif.tobytes() + image.info['exif'] = exif.tobytes() return image @@ -212,11 +212,11 @@ class LoadScreenshots: # Parse monitor shape monitor = self.sct.monitors[self.screen] - self.top = monitor["top"] if top is None else (monitor["top"] + top) - self.left = monitor["left"] if left is None else (monitor["left"] + left) - self.width = width or monitor["width"] - self.height = height or monitor["height"] - self.monitor = {"left": self.left, "top": self.top, "width": self.width, "height": self.height} + self.top = monitor['top'] if top is None else (monitor['top'] + top) + self.left = monitor['left'] if left is None else (monitor['left'] + left) + self.width = width or monitor['width'] + self.height = height or monitor['height'] + self.monitor = {'left': self.left, 'top': self.top, 'width': self.width, 'height': self.height} def __iter__(self): return self @@ -224,7 +224,7 @@ class LoadScreenshots: def __next__(self): # mss screen capture: get raw pixels from the screen as np array im0 = np.array(self.sct.grab(self.monitor))[:, :, :3] # [:, :, :3] BGRA to BGR - s = f"screen {self.screen} (LTWH): {self.left},{self.top},{self.width},{self.height}: " + s = f'screen {self.screen} (LTWH): {self.left},{self.top},{self.width},{self.height}: ' if self.transforms: im = self.transforms(im0) # transforms @@ -239,7 +239,7 @@ class LoadScreenshots: class LoadImages: # YOLOv5 image/video dataloader, i.e. `python detect.py --source image.jpg/vid.mp4` def __init__(self, path, img_size=640, stride=32, auto=True, transforms=None, vid_stride=1): - if isinstance(path, str) and Path(path).suffix == ".txt": # *.txt file with img/vid/dir on each line + if isinstance(path, str) and Path(path).suffix == '.txt': # *.txt file with img/vid/dir on each line path = Path(path).read_text().rsplit() files = [] for p in sorted(path) if isinstance(path, (list, tuple)) else [path]: @@ -358,7 +358,7 @@ class LoadStreams: # YouTube format i.e. 'https://www.youtube.com/watch?v=Zgi9g1ksQHc' or 'https://youtu.be/Zgi9g1ksQHc' check_requirements(('pafy', 'youtube_dl==2020.12.2')) import pafy - s = pafy.new(s).getbest(preftype="mp4").url # YouTube URL + s = pafy.new(s).getbest(preftype='mp4').url # YouTube URL s = eval(s) if s.isnumeric() else s # i.e. s = '0' local webcam if s == 0: assert not is_colab(), '--source 0 webcam unsupported on Colab. Rerun command in a local environment.' @@ -373,7 +373,7 @@ class LoadStreams: _, self.imgs[i] = cap.read() # guarantee first frame self.threads[i] = Thread(target=self.update, args=([i, cap, s]), daemon=True) - LOGGER.info(f"{st} Success ({self.frames[i]} frames {w}x{h} at {self.fps[i]:.2f} FPS)") + LOGGER.info(f'{st} Success ({self.frames[i]} frames {w}x{h} at {self.fps[i]:.2f} FPS)') self.threads[i].start() LOGGER.info('') # newline @@ -495,7 +495,7 @@ class LoadImagesAndLabels(Dataset): # Display cache nf, nm, ne, nc, n = cache.pop('results') # found, missing, empty, corrupt, total if exists and LOCAL_RANK in {-1, 0}: - d = f"Scanning {cache_path}... {nf} images, {nm + ne} backgrounds, {nc} corrupt" + d = f'Scanning {cache_path}... {nf} images, {nm + ne} backgrounds, {nc} corrupt' tqdm(None, desc=prefix + d, total=n, initial=n, bar_format=TQDM_BAR_FORMAT) # display cache results if cache['msgs']: LOGGER.info('\n'.join(cache['msgs'])) # display warnings @@ -598,8 +598,8 @@ class LoadImagesAndLabels(Dataset): mem = psutil.virtual_memory() cache = mem_required * (1 + safety_margin) < mem.available # to cache or not to cache, that is the question if not cache: - LOGGER.info(f"{prefix}{mem_required / gb:.1f}GB RAM required, " - f"{mem.available / gb:.1f}/{mem.total / gb:.1f}GB available, " + LOGGER.info(f'{prefix}{mem_required / gb:.1f}GB RAM required, ' + f'{mem.available / gb:.1f}/{mem.total / gb:.1f}GB available, ' f"{'caching images ✅' if cache else 'not caching images ⚠️'}") return cache @@ -607,7 +607,7 @@ class LoadImagesAndLabels(Dataset): # Cache dataset labels, check images and read shapes x = {} # dict nm, nf, ne, nc, msgs = 0, 0, 0, 0, [] # number missing, found, empty, corrupt, messages - desc = f"{prefix}Scanning {path.parent / path.stem}..." + desc = f'{prefix}Scanning {path.parent / path.stem}...' with Pool(NUM_THREADS) as pool: pbar = tqdm(pool.imap(verify_image_label, zip(self.im_files, self.label_files, repeat(prefix))), desc=desc, @@ -622,7 +622,7 @@ class LoadImagesAndLabels(Dataset): x[im_file] = [lb, shape, segments] if msg: msgs.append(msg) - pbar.desc = f"{desc} {nf} images, {nm + ne} backgrounds, {nc} corrupt" + pbar.desc = f'{desc} {nf} images, {nm + ne} backgrounds, {nc} corrupt' pbar.close() if msgs: @@ -1063,7 +1063,7 @@ class HUBDatasetStats(): if zipped: data['path'] = data_dir except Exception as e: - raise Exception("error/HUB/dataset_stats/yaml_load") from e + raise Exception('error/HUB/dataset_stats/yaml_load') from e check_dataset(data, autodownload) # download dataset if missing self.hub_dir = Path(data['path'] + '-hub') @@ -1188,7 +1188,7 @@ class ClassificationDataset(torchvision.datasets.ImageFolder): else: # read image im = cv2.imread(f) # BGR if self.album_transforms: - sample = self.album_transforms(image=cv2.cvtColor(im, cv2.COLOR_BGR2RGB))["image"] + sample = self.album_transforms(image=cv2.cvtColor(im, cv2.COLOR_BGR2RGB))['image'] else: sample = self.torch_transforms(im) return sample, j diff --git a/utils/downloads.py b/utils/downloads.py index 63d5be0e..cac99afa 100644 --- a/utils/downloads.py +++ b/utils/downloads.py @@ -55,7 +55,7 @@ def safe_download(file, url, url2=None, min_bytes=1E0, error_msg=''): if not file.exists() or file.stat().st_size < min_bytes: # check if file.exists(): file.unlink() # remove partial downloads - LOGGER.info(f"ERROR: {assert_msg}\n{error_msg}") + LOGGER.info(f'ERROR: {assert_msg}\n{error_msg}') LOGGER.info('') diff --git a/utils/flask_rest_api/example_request.py b/utils/flask_rest_api/example_request.py index 68eec2f3..5e6d0c1d 100644 --- a/utils/flask_rest_api/example_request.py +++ b/utils/flask_rest_api/example_request.py @@ -7,13 +7,13 @@ import pprint import requests -DETECTION_URL = "http://localhost:5000/v1/object-detection/yolov5s" -IMAGE = "zidane.jpg" +DETECTION_URL = 'http://localhost:5000/v1/object-detection/yolov5s' +IMAGE = 'zidane.jpg' # Read image -with open(IMAGE, "rb") as f: +with open(IMAGE, 'rb') as f: image_data = f.read() -response = requests.post(DETECTION_URL, files={"image": image_data}).json() +response = requests.post(DETECTION_URL, files={'image': image_data}).json() pprint.pprint(response) diff --git a/utils/flask_rest_api/restapi.py b/utils/flask_rest_api/restapi.py index 290c6d5c..5d8f5996 100644 --- a/utils/flask_rest_api/restapi.py +++ b/utils/flask_rest_api/restapi.py @@ -13,36 +13,36 @@ from PIL import Image app = Flask(__name__) models = {} -DETECTION_URL = "/v1/object-detection/" +DETECTION_URL = '/v1/object-detection/' -@app.route(DETECTION_URL, methods=["POST"]) +@app.route(DETECTION_URL, methods=['POST']) def predict(model): - if request.method != "POST": + if request.method != 'POST': return - if request.files.get("image"): + if request.files.get('image'): # Method 1 # with request.files["image"] as f: # im = Image.open(io.BytesIO(f.read())) # Method 2 - im_file = request.files["image"] + im_file = request.files['image'] im_bytes = im_file.read() im = Image.open(io.BytesIO(im_bytes)) if model in models: results = models[model](im, size=640) # reduce size=320 for faster inference - return results.pandas().xyxy[0].to_json(orient="records") + return results.pandas().xyxy[0].to_json(orient='records') -if __name__ == "__main__": - parser = argparse.ArgumentParser(description="Flask API exposing YOLOv5 model") - parser.add_argument("--port", default=5000, type=int, help="port number") +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Flask API exposing YOLOv5 model') + parser.add_argument('--port', default=5000, type=int, help='port number') parser.add_argument('--model', nargs='+', default=['yolov5s'], help='model(s) to run, i.e. --model yolov5n yolov5s') opt = parser.parse_args() for m in opt.model: - models[m] = torch.hub.load("ultralytics/yolov5", m, force_reload=True, skip_validation=True) + models[m] = torch.hub.load('ultralytics/yolov5', m, force_reload=True, skip_validation=True) - app.run(host="0.0.0.0", port=opt.port) # debug=True causes Restarting with stat + app.run(host='0.0.0.0', port=opt.port) # debug=True causes Restarting with stat diff --git a/utils/general.py b/utils/general.py index 5ec2b5f7..56c94d58 100644 --- a/utils/general.py +++ b/utils/general.py @@ -90,11 +90,11 @@ def is_kaggle(): def is_docker() -> bool: """Check if the process runs inside a docker container.""" - if Path("/.dockerenv").exists(): + if Path('/.dockerenv').exists(): return True try: # check if docker is in control groups - with open("/proc/self/cgroup") as file: - return any("docker" in line for line in file) + with open('/proc/self/cgroup') as file: + return any('docker' in line for line in file) except OSError: return False @@ -113,7 +113,7 @@ def is_writeable(dir, test=False): return False -LOGGING_NAME = "yolov5" +LOGGING_NAME = 'yolov5' def set_logging(name=LOGGING_NAME, verbose=True): @@ -121,21 +121,21 @@ def set_logging(name=LOGGING_NAME, verbose=True): rank = int(os.getenv('RANK', -1)) # rank in world for Multi-GPU trainings level = logging.INFO if verbose and rank in {-1, 0} else logging.ERROR logging.config.dictConfig({ - "version": 1, - "disable_existing_loggers": False, - "formatters": { + 'version': 1, + 'disable_existing_loggers': False, + 'formatters': { name: { - "format": "%(message)s"}}, - "handlers": { + 'format': '%(message)s'}}, + 'handlers': { name: { - "class": "logging.StreamHandler", - "formatter": name, - "level": level,}}, - "loggers": { + 'class': 'logging.StreamHandler', + 'formatter': name, + 'level': level,}}, + 'loggers': { name: { - "level": level, - "handlers": [name], - "propagate": False,}}}) + 'level': level, + 'handlers': [name], + 'propagate': False,}}}) set_logging(LOGGING_NAME) # run before defining LOGGER @@ -218,7 +218,7 @@ class WorkingDirectory(contextlib.ContextDecorator): def methods(instance): # Get class/instance methods - return [f for f in dir(instance) if callable(getattr(instance, f)) and not f.startswith("__")] + return [f for f in dir(instance) if callable(getattr(instance, f)) and not f.startswith('__')] def print_args(args: Optional[dict] = None, show_file=True, show_func=False): @@ -299,7 +299,7 @@ def check_online(): def run_once(): # Check once try: - socket.create_connection(("1.1.1.1", 443), 5) # check host accessibility + socket.create_connection(('1.1.1.1', 443), 5) # check host accessibility return True except OSError: return False @@ -386,7 +386,7 @@ def check_requirements(requirements=ROOT / 'requirements.txt', exclude=(), insta check_python() # check python version if isinstance(requirements, Path): # requirements.txt file file = requirements.resolve() - assert file.exists(), f"{prefix} {file} not found, check failed." + assert file.exists(), f'{prefix} {file} not found, check failed.' with file.open() as f: requirements = [f'{x.name}{x.specifier}' for x in pkg.parse_requirements(f) if x.name not in exclude] elif isinstance(requirements, str): @@ -450,7 +450,7 @@ def check_suffix(file='yolov5s.pt', suffix=('.pt',), msg=''): for f in file if isinstance(file, (list, tuple)) else [file]: s = Path(f).suffix.lower() # file suffix if len(s): - assert s in suffix, f"{msg}{f} acceptable suffix is {suffix}" + assert s in suffix, f'{msg}{f} acceptable suffix is {suffix}' def check_yaml(file, suffix=('.yaml', '.yml')): @@ -556,8 +556,8 @@ def check_dataset(data, autodownload=True): else: # python script r = exec(s, {'yaml': data}) # return None dt = f'({round(time.time() - t, 1)}s)' - s = f"success ✅ {dt}, saved to {colorstr('bold', DATASETS_DIR)}" if r in (0, None) else f"failure {dt} ❌" - LOGGER.info(f"Dataset download {s}") + s = f"success ✅ {dt}, saved to {colorstr('bold', DATASETS_DIR)}" if r in (0, None) else f'failure {dt} ❌' + LOGGER.info(f'Dataset download {s}') check_font('Arial.ttf' if is_ascii(data['names']) else 'Arial.Unicode.ttf', progress=True) # download fonts return data # dictionary @@ -675,7 +675,7 @@ def make_divisible(x, divisor): def clean_str(s): # Cleans a string by replacing special characters with underscore _ - return re.sub(pattern="[|@#!¡·$€%&()=?¿^*;:,¨´><+]", repl="_", string=s) + return re.sub(pattern='[|@#!¡·$€%&()=?¿^*;:,¨´><+]', repl='_', string=s) def one_cycle(y1=0.0, y2=1.0, steps=100): diff --git a/utils/loggers/__init__.py b/utils/loggers/__init__.py index a9a64f0f..82e4458a 100644 --- a/utils/loggers/__init__.py +++ b/utils/loggers/__init__.py @@ -121,8 +121,8 @@ class Loggers(): # Comet if comet_ml and 'comet' in self.include: - if isinstance(self.opt.resume, str) and self.opt.resume.startswith("comet://"): - run_id = self.opt.resume.split("/")[-1] + if isinstance(self.opt.resume, str) and self.opt.resume.startswith('comet://'): + run_id = self.opt.resume.split('/')[-1] self.comet_logger = CometLogger(self.opt, self.hyp, run_id=run_id) else: @@ -158,7 +158,7 @@ class Loggers(): plot_labels(labels, names, self.save_dir) paths = self.save_dir.glob('*labels*.jpg') # training labels if self.wandb: - self.wandb.log({"Labels": [wandb.Image(str(x), caption=x.name) for x in paths]}) + self.wandb.log({'Labels': [wandb.Image(str(x), caption=x.name) for x in paths]}) # if self.clearml: # pass # ClearML saves these images automatically using hooks if self.comet_logger: @@ -212,7 +212,7 @@ class Loggers(): if self.wandb or self.clearml: files = sorted(self.save_dir.glob('val*.jpg')) if self.wandb: - self.wandb.log({"Validation": [wandb.Image(str(f), caption=f.name) for f in files]}) + self.wandb.log({'Validation': [wandb.Image(str(f), caption=f.name) for f in files]}) if self.clearml: self.clearml.log_debug_samples(files, title='Validation') @@ -279,7 +279,7 @@ class Loggers(): if self.wandb: self.wandb.log(dict(zip(self.keys[3:10], results))) - self.wandb.log({"Results": [wandb.Image(str(f), caption=f.name) for f in files]}) + self.wandb.log({'Results': [wandb.Image(str(f), caption=f.name) for f in files]}) # Calling wandb.log. TODO: Refactor this into WandbLogger.log_model if not self.opt.evolve: wandb.log_artifact(str(best if best.exists() else last), @@ -329,7 +329,7 @@ class GenericLogger: if wandb and 'wandb' in self.include: self.wandb = wandb.init(project=web_project_name(str(opt.project)), - name=None if opt.name == "exp" else opt.name, + name=None if opt.name == 'exp' else opt.name, config=opt) else: self.wandb = None @@ -370,12 +370,12 @@ class GenericLogger: def log_model(self, model_path, epoch=0, metadata={}): # Log model to all loggers if self.wandb: - art = wandb.Artifact(name=f"run_{wandb.run.id}_model", type="model", metadata=metadata) + art = wandb.Artifact(name=f'run_{wandb.run.id}_model', type='model', metadata=metadata) art.add_file(str(model_path)) wandb.log_artifact(art) def update_params(self, params): - # Update the paramters logged + # Update the parameters logged if self.wandb: wandb.run.config.update(params, allow_val_change=True) diff --git a/utils/loggers/clearml/clearml_utils.py b/utils/loggers/clearml/clearml_utils.py index 3457727a..2764abe9 100644 --- a/utils/loggers/clearml/clearml_utils.py +++ b/utils/loggers/clearml/clearml_utils.py @@ -25,7 +25,7 @@ def construct_dataset(clearml_info_string): dataset_root_path = Path(dataset.get_local_copy()) # We'll search for the yaml file definition in the dataset - yaml_filenames = list(glob.glob(str(dataset_root_path / "*.yaml")) + glob.glob(str(dataset_root_path / "*.yml"))) + yaml_filenames = list(glob.glob(str(dataset_root_path / '*.yaml')) + glob.glob(str(dataset_root_path / '*.yml'))) if len(yaml_filenames) > 1: raise ValueError('More than one yaml file was found in the dataset root, cannot determine which one contains ' 'the dataset definition this way.') @@ -100,7 +100,7 @@ class ClearmlLogger: self.task.connect(opt, name='Args') # Make sure the code is easily remotely runnable by setting the docker image to use by the remote agent - self.task.set_base_docker("ultralytics/yolov5:latest", + self.task.set_base_docker('ultralytics/yolov5:latest', docker_arguments='--ipc=host -e="CLEARML_AGENT_SKIP_PYTHON_ENV_INSTALL=1"', docker_setup_bash_script='pip install clearml') @@ -150,7 +150,7 @@ class ClearmlLogger: class_name = class_names[int(class_nr)] confidence_percentage = round(float(conf) * 100, 2) - label = f"{class_name}: {confidence_percentage}%" + label = f'{class_name}: {confidence_percentage}%' if conf > conf_threshold: annotator.rectangle(box.cpu().numpy(), outline=color) diff --git a/utils/loggers/comet/__init__.py b/utils/loggers/comet/__init__.py index b0318f88..d4599841 100644 --- a/utils/loggers/comet/__init__.py +++ b/utils/loggers/comet/__init__.py @@ -17,7 +17,7 @@ try: # Project Configuration config = comet_ml.config.get_config() - COMET_PROJECT_NAME = config.get_string(os.getenv("COMET_PROJECT_NAME"), "comet.project_name", default="yolov5") + COMET_PROJECT_NAME = config.get_string(os.getenv('COMET_PROJECT_NAME'), 'comet.project_name', default='yolov5') except (ModuleNotFoundError, ImportError): comet_ml = None COMET_PROJECT_NAME = None @@ -31,32 +31,32 @@ from utils.dataloaders import img2label_paths from utils.general import check_dataset, scale_boxes, xywh2xyxy from utils.metrics import box_iou -COMET_PREFIX = "comet://" +COMET_PREFIX = 'comet://' -COMET_MODE = os.getenv("COMET_MODE", "online") +COMET_MODE = os.getenv('COMET_MODE', 'online') # Model Saving Settings -COMET_MODEL_NAME = os.getenv("COMET_MODEL_NAME", "yolov5") +COMET_MODEL_NAME = os.getenv('COMET_MODEL_NAME', 'yolov5') # Dataset Artifact Settings -COMET_UPLOAD_DATASET = os.getenv("COMET_UPLOAD_DATASET", "false").lower() == "true" +COMET_UPLOAD_DATASET = os.getenv('COMET_UPLOAD_DATASET', 'false').lower() == 'true' # Evaluation Settings -COMET_LOG_CONFUSION_MATRIX = os.getenv("COMET_LOG_CONFUSION_MATRIX", "true").lower() == "true" -COMET_LOG_PREDICTIONS = os.getenv("COMET_LOG_PREDICTIONS", "true").lower() == "true" -COMET_MAX_IMAGE_UPLOADS = int(os.getenv("COMET_MAX_IMAGE_UPLOADS", 100)) +COMET_LOG_CONFUSION_MATRIX = os.getenv('COMET_LOG_CONFUSION_MATRIX', 'true').lower() == 'true' +COMET_LOG_PREDICTIONS = os.getenv('COMET_LOG_PREDICTIONS', 'true').lower() == 'true' +COMET_MAX_IMAGE_UPLOADS = int(os.getenv('COMET_MAX_IMAGE_UPLOADS', 100)) # Confusion Matrix Settings -CONF_THRES = float(os.getenv("CONF_THRES", 0.001)) -IOU_THRES = float(os.getenv("IOU_THRES", 0.6)) +CONF_THRES = float(os.getenv('CONF_THRES', 0.001)) +IOU_THRES = float(os.getenv('IOU_THRES', 0.6)) # Batch Logging Settings -COMET_LOG_BATCH_METRICS = os.getenv("COMET_LOG_BATCH_METRICS", "false").lower() == "true" -COMET_BATCH_LOGGING_INTERVAL = os.getenv("COMET_BATCH_LOGGING_INTERVAL", 1) -COMET_PREDICTION_LOGGING_INTERVAL = os.getenv("COMET_PREDICTION_LOGGING_INTERVAL", 1) -COMET_LOG_PER_CLASS_METRICS = os.getenv("COMET_LOG_PER_CLASS_METRICS", "false").lower() == "true" +COMET_LOG_BATCH_METRICS = os.getenv('COMET_LOG_BATCH_METRICS', 'false').lower() == 'true' +COMET_BATCH_LOGGING_INTERVAL = os.getenv('COMET_BATCH_LOGGING_INTERVAL', 1) +COMET_PREDICTION_LOGGING_INTERVAL = os.getenv('COMET_PREDICTION_LOGGING_INTERVAL', 1) +COMET_LOG_PER_CLASS_METRICS = os.getenv('COMET_LOG_PER_CLASS_METRICS', 'false').lower() == 'true' -RANK = int(os.getenv("RANK", -1)) +RANK = int(os.getenv('RANK', -1)) to_pil = T.ToPILImage() @@ -66,7 +66,7 @@ class CometLogger: with Comet """ - def __init__(self, opt, hyp, run_id=None, job_type="Training", **experiment_kwargs) -> None: + def __init__(self, opt, hyp, run_id=None, job_type='Training', **experiment_kwargs) -> None: self.job_type = job_type self.opt = opt self.hyp = hyp @@ -87,52 +87,52 @@ class CometLogger: # Default parameters to pass to Experiment objects self.default_experiment_kwargs = { - "log_code": False, - "log_env_gpu": True, - "log_env_cpu": True, - "project_name": COMET_PROJECT_NAME,} + 'log_code': False, + 'log_env_gpu': True, + 'log_env_cpu': True, + 'project_name': COMET_PROJECT_NAME,} self.default_experiment_kwargs.update(experiment_kwargs) self.experiment = self._get_experiment(self.comet_mode, run_id) self.data_dict = self.check_dataset(self.opt.data) - self.class_names = self.data_dict["names"] - self.num_classes = self.data_dict["nc"] + self.class_names = self.data_dict['names'] + self.num_classes = self.data_dict['nc'] self.logged_images_count = 0 self.max_images = COMET_MAX_IMAGE_UPLOADS if run_id is None: - self.experiment.log_other("Created from", "YOLOv5") + self.experiment.log_other('Created from', 'YOLOv5') if not isinstance(self.experiment, comet_ml.OfflineExperiment): - workspace, project_name, experiment_id = self.experiment.url.split("/")[-3:] + workspace, project_name, experiment_id = self.experiment.url.split('/')[-3:] self.experiment.log_other( - "Run Path", - f"{workspace}/{project_name}/{experiment_id}", + 'Run Path', + f'{workspace}/{project_name}/{experiment_id}', ) self.log_parameters(vars(opt)) self.log_parameters(self.opt.hyp) self.log_asset_data( self.opt.hyp, - name="hyperparameters.json", - metadata={"type": "hyp-config-file"}, + name='hyperparameters.json', + metadata={'type': 'hyp-config-file'}, ) self.log_asset( - f"{self.opt.save_dir}/opt.yaml", - metadata={"type": "opt-config-file"}, + f'{self.opt.save_dir}/opt.yaml', + metadata={'type': 'opt-config-file'}, ) self.comet_log_confusion_matrix = COMET_LOG_CONFUSION_MATRIX - if hasattr(self.opt, "conf_thres"): + if hasattr(self.opt, 'conf_thres'): self.conf_thres = self.opt.conf_thres else: self.conf_thres = CONF_THRES - if hasattr(self.opt, "iou_thres"): + if hasattr(self.opt, 'iou_thres'): self.iou_thres = self.opt.iou_thres else: self.iou_thres = IOU_THRES - self.log_parameters({"val_iou_threshold": self.iou_thres, "val_conf_threshold": self.conf_thres}) + self.log_parameters({'val_iou_threshold': self.iou_thres, 'val_conf_threshold': self.conf_thres}) self.comet_log_predictions = COMET_LOG_PREDICTIONS if self.opt.bbox_interval == -1: @@ -147,22 +147,22 @@ class CometLogger: self.comet_log_per_class_metrics = COMET_LOG_PER_CLASS_METRICS self.experiment.log_others({ - "comet_mode": COMET_MODE, - "comet_max_image_uploads": COMET_MAX_IMAGE_UPLOADS, - "comet_log_per_class_metrics": COMET_LOG_PER_CLASS_METRICS, - "comet_log_batch_metrics": COMET_LOG_BATCH_METRICS, - "comet_log_confusion_matrix": COMET_LOG_CONFUSION_MATRIX, - "comet_model_name": COMET_MODEL_NAME,}) + 'comet_mode': COMET_MODE, + 'comet_max_image_uploads': COMET_MAX_IMAGE_UPLOADS, + 'comet_log_per_class_metrics': COMET_LOG_PER_CLASS_METRICS, + 'comet_log_batch_metrics': COMET_LOG_BATCH_METRICS, + 'comet_log_confusion_matrix': COMET_LOG_CONFUSION_MATRIX, + 'comet_model_name': COMET_MODEL_NAME,}) # Check if running the Experiment with the Comet Optimizer - if hasattr(self.opt, "comet_optimizer_id"): - self.experiment.log_other("optimizer_id", self.opt.comet_optimizer_id) - self.experiment.log_other("optimizer_objective", self.opt.comet_optimizer_objective) - self.experiment.log_other("optimizer_metric", self.opt.comet_optimizer_metric) - self.experiment.log_other("optimizer_parameters", json.dumps(self.hyp)) + if hasattr(self.opt, 'comet_optimizer_id'): + self.experiment.log_other('optimizer_id', self.opt.comet_optimizer_id) + self.experiment.log_other('optimizer_objective', self.opt.comet_optimizer_objective) + self.experiment.log_other('optimizer_metric', self.opt.comet_optimizer_metric) + self.experiment.log_other('optimizer_parameters', json.dumps(self.hyp)) def _get_experiment(self, mode, experiment_id=None): - if mode == "offline": + if mode == 'offline': if experiment_id is not None: return comet_ml.ExistingOfflineExperiment( previous_experiment=experiment_id, @@ -182,11 +182,11 @@ class CometLogger: return comet_ml.Experiment(**self.default_experiment_kwargs) except ValueError: - logger.warning("COMET WARNING: " - "Comet credentials have not been set. " - "Comet will default to offline logging. " - "Please set your credentials to enable online logging.") - return self._get_experiment("offline", experiment_id) + logger.warning('COMET WARNING: ' + 'Comet credentials have not been set. ' + 'Comet will default to offline logging. ' + 'Please set your credentials to enable online logging.') + return self._get_experiment('offline', experiment_id) return @@ -210,12 +210,12 @@ class CometLogger: return model_metadata = { - "fitness_score": fitness_score[-1], - "epochs_trained": epoch + 1, - "save_period": opt.save_period, - "total_epochs": opt.epochs,} + 'fitness_score': fitness_score[-1], + 'epochs_trained': epoch + 1, + 'save_period': opt.save_period, + 'total_epochs': opt.epochs,} - model_files = glob.glob(f"{path}/*.pt") + model_files = glob.glob(f'{path}/*.pt') for model_path in model_files: name = Path(model_path).name @@ -232,12 +232,12 @@ class CometLogger: data_config = yaml.safe_load(f) if data_config['path'].startswith(COMET_PREFIX): - path = data_config['path'].replace(COMET_PREFIX, "") + path = data_config['path'].replace(COMET_PREFIX, '') data_dict = self.download_dataset_artifact(path) return data_dict - self.log_asset(self.opt.data, metadata={"type": "data-config-file"}) + self.log_asset(self.opt.data, metadata={'type': 'data-config-file'}) return check_dataset(data_file) @@ -253,8 +253,8 @@ class CometLogger: filtered_detections = detections[mask] filtered_labels = labelsn[mask] - image_id = path.split("/")[-1].split(".")[0] - image_name = f"{image_id}_curr_epoch_{self.experiment.curr_epoch}" + image_id = path.split('/')[-1].split('.')[0] + image_name = f'{image_id}_curr_epoch_{self.experiment.curr_epoch}' if image_name not in self.logged_image_names: native_scale_image = PIL.Image.open(path) self.log_image(native_scale_image, name=image_name) @@ -263,22 +263,22 @@ class CometLogger: metadata = [] for cls, *xyxy in filtered_labels.tolist(): metadata.append({ - "label": f"{self.class_names[int(cls)]}-gt", - "score": 100, - "box": { - "x": xyxy[0], - "y": xyxy[1], - "x2": xyxy[2], - "y2": xyxy[3]},}) + 'label': f'{self.class_names[int(cls)]}-gt', + 'score': 100, + 'box': { + 'x': xyxy[0], + 'y': xyxy[1], + 'x2': xyxy[2], + 'y2': xyxy[3]},}) for *xyxy, conf, cls in filtered_detections.tolist(): metadata.append({ - "label": f"{self.class_names[int(cls)]}", - "score": conf * 100, - "box": { - "x": xyxy[0], - "y": xyxy[1], - "x2": xyxy[2], - "y2": xyxy[3]},}) + 'label': f'{self.class_names[int(cls)]}', + 'score': conf * 100, + 'box': { + 'x': xyxy[0], + 'y': xyxy[1], + 'x2': xyxy[2], + 'y2': xyxy[3]},}) self.metadata_dict[image_name] = metadata self.logged_images_count += 1 @@ -305,35 +305,35 @@ class CometLogger: return predn, labelsn def add_assets_to_artifact(self, artifact, path, asset_path, split): - img_paths = sorted(glob.glob(f"{asset_path}/*")) + img_paths = sorted(glob.glob(f'{asset_path}/*')) label_paths = img2label_paths(img_paths) for image_file, label_file in zip(img_paths, label_paths): image_logical_path, label_logical_path = map(lambda x: os.path.relpath(x, path), [image_file, label_file]) try: - artifact.add(image_file, logical_path=image_logical_path, metadata={"split": split}) - artifact.add(label_file, logical_path=label_logical_path, metadata={"split": split}) + artifact.add(image_file, logical_path=image_logical_path, metadata={'split': split}) + artifact.add(label_file, logical_path=label_logical_path, metadata={'split': split}) except ValueError as e: logger.error('COMET ERROR: Error adding file to Artifact. Skipping file.') - logger.error(f"COMET ERROR: {e}") + logger.error(f'COMET ERROR: {e}') continue return artifact def upload_dataset_artifact(self): - dataset_name = self.data_dict.get("dataset_name", "yolov5-dataset") - path = str((ROOT / Path(self.data_dict["path"])).resolve()) + dataset_name = self.data_dict.get('dataset_name', 'yolov5-dataset') + path = str((ROOT / Path(self.data_dict['path'])).resolve()) metadata = self.data_dict.copy() - for key in ["train", "val", "test"]: + for key in ['train', 'val', 'test']: split_path = metadata.get(key) if split_path is not None: - metadata[key] = split_path.replace(path, "") + metadata[key] = split_path.replace(path, '') - artifact = comet_ml.Artifact(name=dataset_name, artifact_type="dataset", metadata=metadata) + artifact = comet_ml.Artifact(name=dataset_name, artifact_type='dataset', metadata=metadata) for key in metadata.keys(): - if key in ["train", "val", "test"]: + if key in ['train', 'val', 'test']: if isinstance(self.upload_dataset, str) and (key != self.upload_dataset): continue @@ -352,13 +352,13 @@ class CometLogger: metadata = logged_artifact.metadata data_dict = metadata.copy() - data_dict["path"] = artifact_save_dir + data_dict['path'] = artifact_save_dir - metadata_names = metadata.get("names") + metadata_names = metadata.get('names') if type(metadata_names) == dict: - data_dict["names"] = {int(k): v for k, v in metadata.get("names").items()} + data_dict['names'] = {int(k): v for k, v in metadata.get('names').items()} elif type(metadata_names) == list: - data_dict["names"] = {int(k): v for k, v in zip(range(len(metadata_names)), metadata_names)} + data_dict['names'] = {int(k): v for k, v in zip(range(len(metadata_names)), metadata_names)} else: raise "Invalid 'names' field in dataset yaml file. Please use a list or dictionary" @@ -366,13 +366,13 @@ class CometLogger: return data_dict def update_data_paths(self, data_dict): - path = data_dict.get("path", "") + path = data_dict.get('path', '') - for split in ["train", "val", "test"]: + for split in ['train', 'val', 'test']: if data_dict.get(split): split_path = data_dict.get(split) - data_dict[split] = (f"{path}/{split_path}" if isinstance(split, str) else [ - f"{path}/{x}" for x in split_path]) + data_dict[split] = (f'{path}/{split_path}' if isinstance(split, str) else [ + f'{path}/{x}' for x in split_path]) return data_dict @@ -413,11 +413,11 @@ class CometLogger: def on_train_end(self, files, save_dir, last, best, epoch, results): if self.comet_log_predictions: curr_epoch = self.experiment.curr_epoch - self.experiment.log_asset_data(self.metadata_dict, "image-metadata.json", epoch=curr_epoch) + self.experiment.log_asset_data(self.metadata_dict, 'image-metadata.json', epoch=curr_epoch) for f in files: - self.log_asset(f, metadata={"epoch": epoch}) - self.log_asset(f"{save_dir}/results.csv", metadata={"epoch": epoch}) + self.log_asset(f, metadata={'epoch': epoch}) + self.log_asset(f'{save_dir}/results.csv', metadata={'epoch': epoch}) if not self.opt.evolve: model_path = str(best if best.exists() else last) @@ -481,7 +481,7 @@ class CometLogger: if self.comet_log_confusion_matrix: epoch = self.experiment.curr_epoch class_names = list(self.class_names.values()) - class_names.append("background") + class_names.append('background') num_classes = len(class_names) self.experiment.log_confusion_matrix( @@ -491,7 +491,7 @@ class CometLogger: epoch=epoch, column_label='Actual Category', row_label='Predicted Category', - file_name=f"confusion-matrix-epoch-{epoch}.json", + file_name=f'confusion-matrix-epoch-{epoch}.json', ) def on_fit_epoch_end(self, result, epoch): diff --git a/utils/loggers/comet/comet_utils.py b/utils/loggers/comet/comet_utils.py index 3cbd4515..27600761 100644 --- a/utils/loggers/comet/comet_utils.py +++ b/utils/loggers/comet/comet_utils.py @@ -11,28 +11,28 @@ import yaml logger = logging.getLogger(__name__) -COMET_PREFIX = "comet://" -COMET_MODEL_NAME = os.getenv("COMET_MODEL_NAME", "yolov5") -COMET_DEFAULT_CHECKPOINT_FILENAME = os.getenv("COMET_DEFAULT_CHECKPOINT_FILENAME", "last.pt") +COMET_PREFIX = 'comet://' +COMET_MODEL_NAME = os.getenv('COMET_MODEL_NAME', 'yolov5') +COMET_DEFAULT_CHECKPOINT_FILENAME = os.getenv('COMET_DEFAULT_CHECKPOINT_FILENAME', 'last.pt') def download_model_checkpoint(opt, experiment): - model_dir = f"{opt.project}/{experiment.name}" + model_dir = f'{opt.project}/{experiment.name}' os.makedirs(model_dir, exist_ok=True) model_name = COMET_MODEL_NAME model_asset_list = experiment.get_model_asset_list(model_name) if len(model_asset_list) == 0: - logger.error(f"COMET ERROR: No checkpoints found for model name : {model_name}") + logger.error(f'COMET ERROR: No checkpoints found for model name : {model_name}') return model_asset_list = sorted( model_asset_list, - key=lambda x: x["step"], + key=lambda x: x['step'], reverse=True, ) - logged_checkpoint_map = {asset["fileName"]: asset["assetId"] for asset in model_asset_list} + logged_checkpoint_map = {asset['fileName']: asset['assetId'] for asset in model_asset_list} resource_url = urlparse(opt.weights) checkpoint_filename = resource_url.query @@ -44,22 +44,22 @@ def download_model_checkpoint(opt, experiment): checkpoint_filename = COMET_DEFAULT_CHECKPOINT_FILENAME if asset_id is None: - logger.error(f"COMET ERROR: Checkpoint {checkpoint_filename} not found in the given Experiment") + logger.error(f'COMET ERROR: Checkpoint {checkpoint_filename} not found in the given Experiment') return try: - logger.info(f"COMET INFO: Downloading checkpoint {checkpoint_filename}") + logger.info(f'COMET INFO: Downloading checkpoint {checkpoint_filename}') asset_filename = checkpoint_filename - model_binary = experiment.get_asset(asset_id, return_type="binary", stream=False) - model_download_path = f"{model_dir}/{asset_filename}" - with open(model_download_path, "wb") as f: + model_binary = experiment.get_asset(asset_id, return_type='binary', stream=False) + model_download_path = f'{model_dir}/{asset_filename}' + with open(model_download_path, 'wb') as f: f.write(model_binary) opt.weights = model_download_path except Exception as e: - logger.warning("COMET WARNING: Unable to download checkpoint from Comet") + logger.warning('COMET WARNING: Unable to download checkpoint from Comet') logger.exception(e) @@ -75,9 +75,9 @@ def set_opt_parameters(opt, experiment): resume_string = opt.resume for asset in asset_list: - if asset["fileName"] == "opt.yaml": - asset_id = asset["assetId"] - asset_binary = experiment.get_asset(asset_id, return_type="binary", stream=False) + if asset['fileName'] == 'opt.yaml': + asset_id = asset['assetId'] + asset_binary = experiment.get_asset(asset_id, return_type='binary', stream=False) opt_dict = yaml.safe_load(asset_binary) for key, value in opt_dict.items(): setattr(opt, key, value) @@ -85,11 +85,11 @@ def set_opt_parameters(opt, experiment): # Save hyperparameters to YAML file # Necessary to pass checks in training script - save_dir = f"{opt.project}/{experiment.name}" + save_dir = f'{opt.project}/{experiment.name}' os.makedirs(save_dir, exist_ok=True) - hyp_yaml_path = f"{save_dir}/hyp.yaml" - with open(hyp_yaml_path, "w") as f: + hyp_yaml_path = f'{save_dir}/hyp.yaml' + with open(hyp_yaml_path, 'w') as f: yaml.dump(opt.hyp, f) opt.hyp = hyp_yaml_path @@ -113,7 +113,7 @@ def check_comet_weights(opt): if opt.weights.startswith(COMET_PREFIX): api = comet_ml.API() resource = urlparse(opt.weights) - experiment_path = f"{resource.netloc}{resource.path}" + experiment_path = f'{resource.netloc}{resource.path}' experiment = api.get(experiment_path) download_model_checkpoint(opt, experiment) return True @@ -140,7 +140,7 @@ def check_comet_resume(opt): if opt.resume.startswith(COMET_PREFIX): api = comet_ml.API() resource = urlparse(opt.resume) - experiment_path = f"{resource.netloc}{resource.path}" + experiment_path = f'{resource.netloc}{resource.path}' experiment = api.get(experiment_path) set_opt_parameters(opt, experiment) download_model_checkpoint(opt, experiment) diff --git a/utils/loggers/comet/hpo.py b/utils/loggers/comet/hpo.py index 7dd5c92e..fc49115c 100644 --- a/utils/loggers/comet/hpo.py +++ b/utils/loggers/comet/hpo.py @@ -21,7 +21,7 @@ from utils.torch_utils import select_device # Project Configuration config = comet_ml.config.get_config() -COMET_PROJECT_NAME = config.get_string(os.getenv("COMET_PROJECT_NAME"), "comet.project_name", default="yolov5") +COMET_PROJECT_NAME = config.get_string(os.getenv('COMET_PROJECT_NAME'), 'comet.project_name', default='yolov5') def get_args(known=False): @@ -68,30 +68,30 @@ def get_args(known=False): parser.add_argument('--artifact_alias', type=str, default='latest', help='W&B: Version of dataset artifact to use') # Comet Arguments - parser.add_argument("--comet_optimizer_config", type=str, help="Comet: Path to a Comet Optimizer Config File.") - parser.add_argument("--comet_optimizer_id", type=str, help="Comet: ID of the Comet Optimizer sweep.") - parser.add_argument("--comet_optimizer_objective", type=str, help="Comet: Set to 'minimize' or 'maximize'.") - parser.add_argument("--comet_optimizer_metric", type=str, help="Comet: Metric to Optimize.") - parser.add_argument("--comet_optimizer_workers", + parser.add_argument('--comet_optimizer_config', type=str, help='Comet: Path to a Comet Optimizer Config File.') + parser.add_argument('--comet_optimizer_id', type=str, help='Comet: ID of the Comet Optimizer sweep.') + parser.add_argument('--comet_optimizer_objective', type=str, help="Comet: Set to 'minimize' or 'maximize'.") + parser.add_argument('--comet_optimizer_metric', type=str, help='Comet: Metric to Optimize.') + parser.add_argument('--comet_optimizer_workers', type=int, default=1, - help="Comet: Number of Parallel Workers to use with the Comet Optimizer.") + help='Comet: Number of Parallel Workers to use with the Comet Optimizer.') return parser.parse_known_args()[0] if known else parser.parse_args() def run(parameters, opt): - hyp_dict = {k: v for k, v in parameters.items() if k not in ["epochs", "batch_size"]} + hyp_dict = {k: v for k, v in parameters.items() if k not in ['epochs', 'batch_size']} opt.save_dir = str(increment_path(Path(opt.project) / opt.name, exist_ok=opt.exist_ok or opt.evolve)) - opt.batch_size = parameters.get("batch_size") - opt.epochs = parameters.get("epochs") + opt.batch_size = parameters.get('batch_size') + opt.epochs = parameters.get('epochs') device = select_device(opt.device, batch_size=opt.batch_size) train(hyp_dict, opt, device, callbacks=Callbacks()) -if __name__ == "__main__": +if __name__ == '__main__': opt = get_args(known=True) opt.weights = str(opt.weights) @@ -99,7 +99,7 @@ if __name__ == "__main__": opt.data = str(opt.data) opt.project = str(opt.project) - optimizer_id = os.getenv("COMET_OPTIMIZER_ID") + optimizer_id = os.getenv('COMET_OPTIMIZER_ID') if optimizer_id is None: with open(opt.comet_optimizer_config) as f: optimizer_config = json.load(f) @@ -110,9 +110,9 @@ if __name__ == "__main__": opt.comet_optimizer_id = optimizer.id status = optimizer.status() - opt.comet_optimizer_objective = status["spec"]["objective"] - opt.comet_optimizer_metric = status["spec"]["metric"] + opt.comet_optimizer_objective = status['spec']['objective'] + opt.comet_optimizer_metric = status['spec']['metric'] - logger.info("COMET INFO: Starting Hyperparameter Sweep") + logger.info('COMET INFO: Starting Hyperparameter Sweep') for parameter in optimizer.get_parameters(): - run(parameter["parameters"], opt) + run(parameter['parameters'], opt) diff --git a/utils/loggers/wandb/wandb_utils.py b/utils/loggers/wandb/wandb_utils.py index 97ba31b6..adb7840e 100644 --- a/utils/loggers/wandb/wandb_utils.py +++ b/utils/loggers/wandb/wandb_utils.py @@ -17,7 +17,7 @@ if str(ROOT) not in sys.path: sys.path.append(str(ROOT)) # add ROOT to PATH RANK = int(os.getenv('RANK', -1)) DEPRECATION_WARNING = f"{colorstr('wandb')}: WARNING ⚠️ wandb is deprecated and will be removed in a future release. " \ - f"See supported integrations at https://github.com/ultralytics/yolov5#integrations." + f'See supported integrations at https://github.com/ultralytics/yolov5#integrations.' try: import wandb @@ -65,7 +65,7 @@ class WandbLogger(): self.data_dict = None if self.wandb: self.wandb_run = wandb.init(config=opt, - resume="allow", + resume='allow', project='YOLOv5' if opt.project == 'runs/train' else Path(opt.project).stem, entity=opt.entity, name=opt.name if opt.name != 'exp' else None, @@ -97,7 +97,7 @@ class WandbLogger(): if isinstance(opt.resume, str): model_dir, _ = self.download_model_artifact(opt) if model_dir: - self.weights = Path(model_dir) / "last.pt" + self.weights = Path(model_dir) / 'last.pt' config = self.wandb_run.config opt.weights, opt.save_period, opt.batch_size, opt.bbox_interval, opt.epochs, opt.hyp, opt.imgsz = str( self.weights), config.save_period, config.batch_size, config.bbox_interval, config.epochs, \ @@ -131,7 +131,7 @@ class WandbLogger(): model_artifact.add_file(str(path / 'last.pt'), name='last.pt') wandb.log_artifact(model_artifact, aliases=['latest', 'last', 'epoch ' + str(self.current_epoch), 'best' if best_model else '']) - LOGGER.info(f"Saving model artifact on epoch {epoch + 1}") + LOGGER.info(f'Saving model artifact on epoch {epoch + 1}') def val_one_image(self, pred, predn, path, names, im): pass @@ -160,7 +160,7 @@ class WandbLogger(): wandb.log(self.log_dict) except BaseException as e: LOGGER.info( - f"An error occurred in wandb logger. The training will proceed without interruption. More info\n{e}" + f'An error occurred in wandb logger. The training will proceed without interruption. More info\n{e}' ) self.wandb_run.finish() self.wandb_run = None diff --git a/utils/metrics.py b/utils/metrics.py index 408b613a..5dab6130 100644 --- a/utils/metrics.py +++ b/utils/metrics.py @@ -28,7 +28,7 @@ def smooth(y, f=0.05): return np.convolve(yp, np.ones(nf) / nf, mode='valid') # y-smoothed -def ap_per_class(tp, conf, pred_cls, target_cls, plot=False, save_dir='.', names=(), eps=1e-16, prefix=""): +def ap_per_class(tp, conf, pred_cls, target_cls, plot=False, save_dir='.', names=(), eps=1e-16, prefix=''): """ Compute the average precision, given the recall and precision curves. Source: https://github.com/rafaelpadilla/Object-Detection-Metrics. # Arguments @@ -194,14 +194,14 @@ class ConfusionMatrix: nc, nn = self.nc, len(names) # number of classes, names sn.set(font_scale=1.0 if nc < 50 else 0.8) # for label size labels = (0 < nn < 99) and (nn == nc) # apply names to ticklabels - ticklabels = (names + ['background']) if labels else "auto" + ticklabels = (names + ['background']) if labels else 'auto' with warnings.catch_warnings(): warnings.simplefilter('ignore') # suppress empty matrix RuntimeWarning: All-NaN slice encountered sn.heatmap(array, ax=ax, annot=nc < 30, annot_kws={ - "size": 8}, + 'size': 8}, cmap='Blues', fmt='.2f', square=True, @@ -331,7 +331,7 @@ def plot_pr_curve(px, py, ap, save_dir=Path('pr_curve.png'), names=()): ax.set_ylabel('Precision') ax.set_xlim(0, 1) ax.set_ylim(0, 1) - ax.legend(bbox_to_anchor=(1.04, 1), loc="upper left") + ax.legend(bbox_to_anchor=(1.04, 1), loc='upper left') ax.set_title('Precision-Recall Curve') fig.savefig(save_dir, dpi=250) plt.close(fig) @@ -354,7 +354,7 @@ def plot_mc_curve(px, py, save_dir=Path('mc_curve.png'), names=(), xlabel='Confi ax.set_ylabel(ylabel) ax.set_xlim(0, 1) ax.set_ylim(0, 1) - ax.legend(bbox_to_anchor=(1.04, 1), loc="upper left") + ax.legend(bbox_to_anchor=(1.04, 1), loc='upper left') ax.set_title(f'{ylabel}-Confidence Curve') fig.savefig(save_dir, dpi=250) plt.close(fig) diff --git a/utils/plots.py b/utils/plots.py index 440e837f..64655a3f 100644 --- a/utils/plots.py +++ b/utils/plots.py @@ -450,7 +450,7 @@ def imshow_cls(im, labels=None, pred=None, names=None, nmax=25, verbose=False, f plt.savefig(f, dpi=300, bbox_inches='tight') plt.close() if verbose: - LOGGER.info(f"Saving {f}") + LOGGER.info(f'Saving {f}') if labels is not None: LOGGER.info('True: ' + ' '.join(f'{names[i]:3s}' for i in labels[:nmax])) if pred is not None: diff --git a/utils/segment/dataloaders.py b/utils/segment/dataloaders.py index 2c5cdc2d..d0f59562 100644 --- a/utils/segment/dataloaders.py +++ b/utils/segment/dataloaders.py @@ -95,7 +95,7 @@ class LoadImagesAndLabelsAndMasks(LoadImagesAndLabels): # for training/testing stride=32, pad=0, min_items=0, - prefix="", + prefix='', downsample_ratio=1, overlap=False, ): @@ -116,7 +116,7 @@ class LoadImagesAndLabelsAndMasks(LoadImagesAndLabels): # for training/testing shapes = None # MixUp augmentation - if random.random() < hyp["mixup"]: + if random.random() < hyp['mixup']: img, labels, segments = mixup(img, labels, segments, *self.load_mosaic(random.randint(0, self.n - 1))) else: @@ -147,11 +147,11 @@ class LoadImagesAndLabelsAndMasks(LoadImagesAndLabels): # for training/testing img, labels, segments = random_perspective(img, labels, segments=segments, - degrees=hyp["degrees"], - translate=hyp["translate"], - scale=hyp["scale"], - shear=hyp["shear"], - perspective=hyp["perspective"]) + degrees=hyp['degrees'], + translate=hyp['translate'], + scale=hyp['scale'], + shear=hyp['shear'], + perspective=hyp['perspective']) nl = len(labels) # number of labels if nl: @@ -177,17 +177,17 @@ class LoadImagesAndLabelsAndMasks(LoadImagesAndLabels): # for training/testing nl = len(labels) # update after albumentations # HSV color-space - augment_hsv(img, hgain=hyp["hsv_h"], sgain=hyp["hsv_s"], vgain=hyp["hsv_v"]) + augment_hsv(img, hgain=hyp['hsv_h'], sgain=hyp['hsv_s'], vgain=hyp['hsv_v']) # Flip up-down - if random.random() < hyp["flipud"]: + if random.random() < hyp['flipud']: img = np.flipud(img) if nl: labels[:, 2] = 1 - labels[:, 2] masks = torch.flip(masks, dims=[1]) # Flip left-right - if random.random() < hyp["fliplr"]: + if random.random() < hyp['fliplr']: img = np.fliplr(img) if nl: labels[:, 1] = 1 - labels[:, 1] @@ -251,15 +251,15 @@ class LoadImagesAndLabelsAndMasks(LoadImagesAndLabels): # for training/testing # img4, labels4 = replicate(img4, labels4) # replicate # Augment - img4, labels4, segments4 = copy_paste(img4, labels4, segments4, p=self.hyp["copy_paste"]) + img4, labels4, segments4 = copy_paste(img4, labels4, segments4, p=self.hyp['copy_paste']) img4, labels4, segments4 = random_perspective(img4, labels4, segments4, - degrees=self.hyp["degrees"], - translate=self.hyp["translate"], - scale=self.hyp["scale"], - shear=self.hyp["shear"], - perspective=self.hyp["perspective"], + degrees=self.hyp['degrees'], + translate=self.hyp['translate'], + scale=self.hyp['scale'], + shear=self.hyp['shear'], + perspective=self.hyp['perspective'], border=self.mosaic_border) # border to remove return img4, labels4, segments4 diff --git a/utils/segment/loss.py b/utils/segment/loss.py index b45b2c27..2a8a4c68 100644 --- a/utils/segment/loss.py +++ b/utils/segment/loss.py @@ -83,7 +83,7 @@ class ComputeLoss: # Mask regression if tuple(masks.shape[-2:]) != (mask_h, mask_w): # downsample - masks = F.interpolate(masks[None], (mask_h, mask_w), mode="nearest")[0] + masks = F.interpolate(masks[None], (mask_h, mask_w), mode='nearest')[0] marea = xywhn[i][:, 2:].prod(1) # mask width, height normalized mxyxy = xywh2xyxy(xywhn[i] * torch.tensor([mask_w, mask_h, mask_w, mask_h], device=self.device)) for bi in b.unique(): @@ -101,10 +101,10 @@ class ComputeLoss: if self.autobalance: self.balance = [x / self.balance[self.ssi] for x in self.balance] - lbox *= self.hyp["box"] - lobj *= self.hyp["obj"] - lcls *= self.hyp["cls"] - lseg *= self.hyp["box"] / bs + lbox *= self.hyp['box'] + lobj *= self.hyp['obj'] + lcls *= self.hyp['cls'] + lseg *= self.hyp['box'] / bs loss = lbox + lobj + lcls + lseg return loss * bs, torch.cat((lbox, lseg, lobj, lcls)).detach() @@ -112,7 +112,7 @@ class ComputeLoss: def single_mask_loss(self, gt_mask, pred, proto, xyxy, area): # Mask loss for one image pred_mask = (pred @ proto.view(self.nm, -1)).view(-1, *proto.shape[1:]) # (n,32) @ (32,80,80) -> (n,80,80) - loss = F.binary_cross_entropy_with_logits(pred_mask, gt_mask, reduction="none") + loss = F.binary_cross_entropy_with_logits(pred_mask, gt_mask, reduction='none') return (crop_mask(loss, xyxy).mean(dim=(1, 2)) / area).mean() def build_targets(self, p, targets): diff --git a/utils/segment/metrics.py b/utils/segment/metrics.py index 312e5858..6c58dba6 100644 --- a/utils/segment/metrics.py +++ b/utils/segment/metrics.py @@ -21,7 +21,7 @@ def ap_per_class_box_and_mask( pred_cls, target_cls, plot=False, - save_dir=".", + save_dir='.', names=(), ): """ @@ -37,7 +37,7 @@ def ap_per_class_box_and_mask( plot=plot, save_dir=save_dir, names=names, - prefix="Box")[2:] + prefix='Box')[2:] results_masks = ap_per_class(tp_m, conf, pred_cls, @@ -45,21 +45,21 @@ def ap_per_class_box_and_mask( plot=plot, save_dir=save_dir, names=names, - prefix="Mask")[2:] + prefix='Mask')[2:] results = { - "boxes": { - "p": results_boxes[0], - "r": results_boxes[1], - "ap": results_boxes[3], - "f1": results_boxes[2], - "ap_class": results_boxes[4]}, - "masks": { - "p": results_masks[0], - "r": results_masks[1], - "ap": results_masks[3], - "f1": results_masks[2], - "ap_class": results_masks[4]}} + 'boxes': { + 'p': results_boxes[0], + 'r': results_boxes[1], + 'ap': results_boxes[3], + 'f1': results_boxes[2], + 'ap_class': results_boxes[4]}, + 'masks': { + 'p': results_masks[0], + 'r': results_masks[1], + 'ap': results_masks[3], + 'f1': results_masks[2], + 'ap_class': results_masks[4]}} return results @@ -159,8 +159,8 @@ class Metrics: Args: results: Dict{'boxes': Dict{}, 'masks': Dict{}} """ - self.metric_box.update(list(results["boxes"].values())) - self.metric_mask.update(list(results["masks"].values())) + self.metric_box.update(list(results['boxes'].values())) + self.metric_mask.update(list(results['masks'].values())) def mean_results(self): return self.metric_box.mean_results() + self.metric_mask.mean_results() @@ -178,33 +178,33 @@ class Metrics: KEYS = [ - "train/box_loss", - "train/seg_loss", # train loss - "train/obj_loss", - "train/cls_loss", - "metrics/precision(B)", - "metrics/recall(B)", - "metrics/mAP_0.5(B)", - "metrics/mAP_0.5:0.95(B)", # metrics - "metrics/precision(M)", - "metrics/recall(M)", - "metrics/mAP_0.5(M)", - "metrics/mAP_0.5:0.95(M)", # metrics - "val/box_loss", - "val/seg_loss", # val loss - "val/obj_loss", - "val/cls_loss", - "x/lr0", - "x/lr1", - "x/lr2",] + 'train/box_loss', + 'train/seg_loss', # train loss + 'train/obj_loss', + 'train/cls_loss', + 'metrics/precision(B)', + 'metrics/recall(B)', + 'metrics/mAP_0.5(B)', + 'metrics/mAP_0.5:0.95(B)', # metrics + 'metrics/precision(M)', + 'metrics/recall(M)', + 'metrics/mAP_0.5(M)', + 'metrics/mAP_0.5:0.95(M)', # metrics + 'val/box_loss', + 'val/seg_loss', # val loss + 'val/obj_loss', + 'val/cls_loss', + 'x/lr0', + 'x/lr1', + 'x/lr2',] BEST_KEYS = [ - "best/epoch", - "best/precision(B)", - "best/recall(B)", - "best/mAP_0.5(B)", - "best/mAP_0.5:0.95(B)", - "best/precision(M)", - "best/recall(M)", - "best/mAP_0.5(M)", - "best/mAP_0.5:0.95(M)",] + 'best/epoch', + 'best/precision(B)', + 'best/recall(B)', + 'best/mAP_0.5(B)', + 'best/mAP_0.5:0.95(B)', + 'best/precision(M)', + 'best/recall(M)', + 'best/mAP_0.5(M)', + 'best/mAP_0.5:0.95(M)',] diff --git a/utils/segment/plots.py b/utils/segment/plots.py index 9b90900b..3ba09762 100644 --- a/utils/segment/plots.py +++ b/utils/segment/plots.py @@ -108,13 +108,13 @@ def plot_images_and_masks(images, targets, masks, paths=None, fname='images.jpg' annotator.im.save(fname) # save -def plot_results_with_masks(file="path/to/results.csv", dir="", best=True): +def plot_results_with_masks(file='path/to/results.csv', dir='', best=True): # Plot training results.csv. Usage: from utils.plots import *; plot_results('path/to/results.csv') save_dir = Path(file).parent if file else Path(dir) fig, ax = plt.subplots(2, 8, figsize=(18, 6), tight_layout=True) ax = ax.ravel() - files = list(save_dir.glob("results*.csv")) - assert len(files), f"No results.csv files found in {save_dir.resolve()}, nothing to plot." + files = list(save_dir.glob('results*.csv')) + assert len(files), f'No results.csv files found in {save_dir.resolve()}, nothing to plot.' for f in files: try: data = pd.read_csv(f) @@ -125,19 +125,19 @@ def plot_results_with_masks(file="path/to/results.csv", dir="", best=True): for i, j in enumerate([1, 2, 3, 4, 5, 6, 9, 10, 13, 14, 15, 16, 7, 8, 11, 12]): y = data.values[:, j] # y[y == 0] = np.nan # don't show zero values - ax[i].plot(x, y, marker=".", label=f.stem, linewidth=2, markersize=2) + ax[i].plot(x, y, marker='.', label=f.stem, linewidth=2, markersize=2) if best: # best - ax[i].scatter(index, y[index], color="r", label=f"best:{index}", marker="*", linewidth=3) - ax[i].set_title(s[j] + f"\n{round(y[index], 5)}") + ax[i].scatter(index, y[index], color='r', label=f'best:{index}', marker='*', linewidth=3) + ax[i].set_title(s[j] + f'\n{round(y[index], 5)}') else: # last - ax[i].scatter(x[-1], y[-1], color="r", label="last", marker="*", linewidth=3) - ax[i].set_title(s[j] + f"\n{round(y[-1], 5)}") + ax[i].scatter(x[-1], y[-1], color='r', label='last', marker='*', linewidth=3) + ax[i].set_title(s[j] + f'\n{round(y[-1], 5)}') # if j in [8, 9, 10]: # share train and val loss y axes # ax[i].get_shared_y_axes().join(ax[i], ax[i - 5]) except Exception as e: - print(f"Warning: Plotting error for {f}: {e}") + print(f'Warning: Plotting error for {f}: {e}') ax[1].legend() - fig.savefig(save_dir / "results.png", dpi=200) + fig.savefig(save_dir / 'results.png', dpi=200) plt.close() diff --git a/utils/torch_utils.py b/utils/torch_utils.py index f259be7a..073d9bd0 100644 --- a/utils/torch_utils.py +++ b/utils/torch_utils.py @@ -291,7 +291,7 @@ def model_info(model, verbose=False, imgsz=640): fs = '' name = Path(model.yaml_file).stem.replace('yolov5', 'YOLOv3') if hasattr(model, 'yaml_file') else 'Model' - LOGGER.info(f"{name} summary: {len(list(model.modules()))} layers, {n_p} parameters, {n_g} gradients{fs}") + LOGGER.info(f'{name} summary: {len(list(model.modules()))} layers, {n_p} parameters, {n_g} gradients{fs}') def scale_img(img, ratio=1.0, same_shape=False, gs=32): # img(16,3,256,416) @@ -342,7 +342,7 @@ def smart_optimizer(model, name='Adam', lr=0.001, momentum=0.9, decay=1e-5): optimizer.add_param_group({'params': g[0], 'weight_decay': decay}) # add g0 with weight_decay optimizer.add_param_group({'params': g[1], 'weight_decay': 0.0}) # add g1 (BatchNorm2d weights) LOGGER.info(f"{colorstr('optimizer:')} {type(optimizer).__name__}(lr={lr}) with parameter groups " - f"{len(g[1])} weight(decay=0.0), {len(g[0])} weight(decay={decay}), {len(g[2])} bias") + f'{len(g[1])} weight(decay=0.0), {len(g[0])} weight(decay={decay}), {len(g[2])} bias') return optimizer diff --git a/utils/triton.py b/utils/triton.py index f067eeaf..87f1fdcd 100644 --- a/utils/triton.py +++ b/utils/triton.py @@ -21,7 +21,7 @@ class TritonRemoteModel: """ parsed_url = urlparse(url) - if parsed_url.scheme == "grpc": + if parsed_url.scheme == 'grpc': from tritonclient.grpc import InferenceServerClient, InferInput self.client = InferenceServerClient(parsed_url.netloc) # Triton GRPC client @@ -31,7 +31,7 @@ class TritonRemoteModel: def create_input_placeholders() -> typing.List[InferInput]: return [ - InferInput(i['name'], [int(s) for s in i["shape"]], i['datatype']) for i in self.metadata['inputs']] + InferInput(i['name'], [int(s) for s in i['shape']], i['datatype']) for i in self.metadata['inputs']] else: from tritonclient.http import InferenceServerClient, InferInput @@ -43,14 +43,14 @@ class TritonRemoteModel: def create_input_placeholders() -> typing.List[InferInput]: return [ - InferInput(i['name'], [int(s) for s in i["shape"]], i['datatype']) for i in self.metadata['inputs']] + InferInput(i['name'], [int(s) for s in i['shape']], i['datatype']) for i in self.metadata['inputs']] self._create_input_placeholders_fn = create_input_placeholders @property def runtime(self): """Returns the model runtime""" - return self.metadata.get("backend", self.metadata.get("platform")) + return self.metadata.get('backend', self.metadata.get('platform')) def __call__(self, *args, **kwargs) -> typing.Union[torch.Tensor, typing.Tuple[torch.Tensor, ...]]: """ Invokes the model. Parameters can be provided via args or kwargs. @@ -68,14 +68,14 @@ class TritonRemoteModel: def _create_inputs(self, *args, **kwargs): args_len, kwargs_len = len(args), len(kwargs) if not args_len and not kwargs_len: - raise RuntimeError("No inputs provided.") + raise RuntimeError('No inputs provided.') if args_len and kwargs_len: - raise RuntimeError("Cannot specify args and kwargs at the same time") + raise RuntimeError('Cannot specify args and kwargs at the same time') placeholders = self._create_input_placeholders_fn() if args_len: if args_len != len(placeholders): - raise RuntimeError(f"Expected {len(placeholders)} inputs, got {args_len}.") + raise RuntimeError(f'Expected {len(placeholders)} inputs, got {args_len}.') for input, value in zip(placeholders, args): input.set_data_from_numpy(value.cpu().numpy()) else: diff --git a/val.py b/val.py index f8868494..f44089fe 100644 --- a/val.py +++ b/val.py @@ -304,7 +304,7 @@ def run( if save_json and len(jdict): w = Path(weights[0] if isinstance(weights, list) else weights).stem if weights is not None else '' # weights anno_json = str(Path('../datasets/coco/annotations/instances_val2017.json')) # annotations - pred_json = str(save_dir / f"{w}_predictions.json") # predictions + pred_json = str(save_dir / f'{w}_predictions.json') # predictions LOGGER.info(f'\nEvaluating pycocotools mAP... saving {pred_json}...') with open(pred_json, 'w') as f: json.dump(jdict, f) @@ -404,6 +404,6 @@ def main(opt): raise NotImplementedError(f'--task {opt.task} not in ("train", "val", "test", "speed", "study")') -if __name__ == "__main__": +if __name__ == '__main__': opt = parse_opt() main(opt) From 76d848608107780ef92eae7fcbb151b91b6ee368 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 20 Feb 2023 13:52:59 +0100 Subject: [PATCH 2595/2595] Update README.md (#2021) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 209b8beb..a4280412 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,9 @@
- YOLOv3 CI + YOLOv3 CI YOLOv3 Citation - Docker Pulls + Docker Pulls
Run on Gradient Open In Colab

+ +

sWD)z{KbGc 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 Date: Sat, 1 Sep 2018 13:37:33 +0200 Subject: [PATCH 0045/2595] updates --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 0407e452..42c10201 100755 --- a/README.md +++ b/README.md @@ -34,8 +34,7 @@ Run `train.py` to begin training after downloading COCO data with `data/get_coco - Saturation: +/- 50% - Intensity: +/- 50% -![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_augmentation_examples.png "coco image augmentation") - +![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_augmentation_examples.jpg "coco image augmentation") # Inference From aa346973ae38e53edb52fe21218e7c552eb39d3a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Sep 2018 13:41:34 +0200 Subject: [PATCH 0046/2595] updates --- README.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 42c10201..0737f8c2 100755 --- a/README.md +++ b/README.md @@ -24,15 +24,17 @@ Run `train.py` to begin training after downloading COCO data with `data/get_coco ## Augmentation -`datasets.py` applies random augmentation to the input images in accordance with the following specifications. Augmentation is applied *only* during training, not during inference. Bounding boxes are automatically tracked and updated with the images. Examples pictured below. +`datasets.py` applies random augmentation to the input images in accordance with the following specifications. Augmentation is applied *only* during training, not during inference. Bounding boxes are automatically tracked and updated with the images. 416 x 416 examples pictured below. -- Translation: +/- 20% X and Y -- Rotation: +/- 5 degrees -- Skew: +/- 3 degrees -- Scale: +/- 20% -- Reflection: 50% probability left-right -- Saturation: +/- 50% -- Intensity: +/- 50% +Augmentation | Description +--- | --- +Translation | +/- 20% vertical and horizontal +Rotation | +/- 5 degrees +Skew | +/- 3 degrees +Scale | +/- 20% +Reflection | 50% probability left-right +Saturation | +/- 50% +Intensity | +/- 50% ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_augmentation_examples.jpg "coco image augmentation") From 7672505d458de06acec3e5300003e04cc3e5c2ff Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Sep 2018 13:43:07 +0200 Subject: [PATCH 0047/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0737f8c2..2079d5c1 100755 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Python 3.6 or later with the following `pip3 install -U -r requirements.txt` pac Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process ~10 epochs/day with full augmentation, or ~15 epochs/day without input image augmentation. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (coming soon) ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_training_loss.png "coco training loss") -## Augmentation +## Image Augmentation `datasets.py` applies random augmentation to the input images in accordance with the following specifications. Augmentation is applied *only* during training, not during inference. Bounding boxes are automatically tracked and updated with the images. 416 x 416 examples pictured below. From 3599793dfa5c960ae7405e58e07116d3806ee924 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Sep 2018 14:04:42 +0200 Subject: [PATCH 0048/2595] updates --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 2079d5c1..43cef431 100755 --- a/README.md +++ b/README.md @@ -24,17 +24,17 @@ Run `train.py` to begin training after downloading COCO data with `data/get_coco ## Image Augmentation -`datasets.py` applies random augmentation to the input images in accordance with the following specifications. Augmentation is applied *only* during training, not during inference. Bounding boxes are automatically tracked and updated with the images. 416 x 416 examples pictured below. +`datasets.py` applies random augmentation to the input images in accordance with the following specifications. Augmentation is applied **only** during training, not during inference. Bounding boxes are automatically tracked and updated with the images. 416 x 416 examples pictured below. Augmentation | Description --- | --- -Translation | +/- 20% vertical and horizontal -Rotation | +/- 5 degrees -Skew | +/- 3 degrees -Scale | +/- 20% -Reflection | 50% probability left-right -Saturation | +/- 50% -Intensity | +/- 50% +Translation | +/- 20% vertical and horizontal +Rotation | +/- 5 degrees +Shear | +/- 3 degrees vertical and horizontal +Scale | +/- 20% +Horizontal Reflection | 50% probability +H**S**V Saturation | +/- 50% +HS**V** Intensity | +/- 50% ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_augmentation_examples.jpg "coco image augmentation") From 0575b04b6721204d788caf9c93680cf7f1e2ab49 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Sep 2018 14:10:06 +0200 Subject: [PATCH 0049/2595] updates --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 43cef431..013751bf 100755 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ # Introduction -This directory contains software developed by Ultralytics LLC. For more information on Ultralytics projects please visit: +This directory contains software developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**.. For more information on Ultralytics projects please visit: http://www.ultralytics.com   # Description @@ -28,11 +28,11 @@ Run `train.py` to begin training after downloading COCO data with `data/get_coco Augmentation | Description --- | --- -Translation | +/- 20% vertical and horizontal +Translation | +/- 20% (vertical and horizontal) Rotation | +/- 5 degrees -Shear | +/- 3 degrees vertical and horizontal +Shear | +/- 3 degrees (vertical and horizontal) Scale | +/- 20% -Horizontal Reflection | 50% probability +Reflection | 50% probability (horizontal-only) H**S**V Saturation | +/- 50% HS**V** Intensity | +/- 50% From dbc19e7244513196cb8f0bba191dc86f5cfc0f19 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Sep 2018 14:10:53 +0200 Subject: [PATCH 0050/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 013751bf..443c6408 100755 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ # Introduction -This directory contains software developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**.. For more information on Ultralytics projects please visit: +This directory contains software developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information on Ultralytics projects please visit: http://www.ultralytics.com   # Description From efbc48ff7f785bd99516ed57b92fa9559725c99d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Sep 2018 17:08:51 +0200 Subject: [PATCH 0051/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 443c6408..a4d1469e 100755 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Python 3.6 or later with the following `pip3 install -U -r requirements.txt` pac # Training -Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process ~10 epochs/day with full augmentation, or ~15 epochs/day without input image augmentation. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (coming soon) +Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process ~10 epochs/day with full augmentation, or ~15 epochs/day without input image augmentation. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (in progress to 160 epochs, will update) ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_training_loss.png "coco training loss") ## Image Augmentation From 54a2047270f891fddf0a941c831d1e1a19db9f8a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Sep 2018 17:13:05 +0200 Subject: [PATCH 0052/2595] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 29 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 17 +++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..07bbcbbf --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,29 @@ +--- +name: Bug report +about: Create a report to help us improve + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + - OS: [e.g. iOS] + - Browser [e.g. chrome, safari] + - Version [e.g. 22] + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..066b2d92 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,17 @@ +--- +name: Feature request +about: Suggest an idea for this project + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. From af92ac9e63d31f6bee2716174a44aacf3caea026 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Sep 2018 18:35:28 +0200 Subject: [PATCH 0053/2595] updates --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a4d1469e..217be811 100755 --- a/README.md +++ b/README.md @@ -19,7 +19,11 @@ Python 3.6 or later with the following `pip3 install -U -r requirements.txt` pac # Training -Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process ~10 epochs/day with full augmentation, or ~15 epochs/day without input image augmentation. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (in progress to 160 epochs, will update) +Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. + +Run `train.py -resume 1` to resume training from the most recently saved checkpoint `checkpoints/latest.pt`. + +Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process ~10 epochs/day with full augmentation, or ~15 epochs/day without input image augmentation. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (in progress to 160 epochs, will update) ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_training_loss.png "coco training loss") ## Image Augmentation @@ -40,7 +44,7 @@ HS**V** Intensity | +/- 50% # Inference -Checkpoints will be saved in `/checkpoints` directory. Run `detect.py` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder, shown here. +Checkpoints are saved in `/checkpoints` directory. Run `detect.py` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder, shown here. ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/zidane_result.jpg "inference example") # Testing From 382100307a818c72749c3b6d898ea3d98536fd9e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Sep 2018 18:37:40 +0200 Subject: [PATCH 0054/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 217be811..8af276ec 100755 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Run `train.py` to begin training after downloading COCO data with `data/get_coco Run `train.py -resume 1` to resume training from the most recently saved checkpoint `checkpoints/latest.pt`. -Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process ~10 epochs/day with full augmentation, or ~15 epochs/day without input image augmentation. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (in progress to 160 epochs, will update) +Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process ~10 epochs/day with full augmentation, or ~15 epochs/day without input image augmentation. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (results in progress to 160 epochs, will update). ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_training_loss.png "coco training loss") ## Image Augmentation From 8fd8d8eb04decd82084e5fbd5d5b7f570a1554c6 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Sep 2018 18:41:05 +0200 Subject: [PATCH 0055/2595] updates --- README.md | 2 +- train.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8af276ec..4dc3fa8e 100755 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Python 3.6 or later with the following `pip3 install -U -r requirements.txt` pac # Training -Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh`. +Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh` and specifying COCO path on line 37 (local) or line 39 (cloud). Run `train.py -resume 1` to resume training from the most recently saved checkpoint `checkpoints/latest.pt`. diff --git a/train.py b/train.py index 4a8cc70b..c70b5af7 100644 --- a/train.py +++ b/train.py @@ -33,9 +33,9 @@ def main(opt): # Configure run data_config = parse_data_config(opt.data_config_path) num_classes = int(data_config['classes']) - if platform == 'darwin': # macos + if platform == 'darwin': # MacOS (local) train_path = data_config['valid'] - else: # linux (gcp cloud) + else: # linux (cloud, i.e. gcp) train_path = '../coco/trainvalno5k.part' # Initialize model From 7d083f558a79cb8a0e3f6646d0583841bce94bb5 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Sep 2018 18:47:08 +0200 Subject: [PATCH 0056/2595] updates --- README.md | 5 +++-- train.py | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 4dc3fa8e..04348198 100755 --- a/README.md +++ b/README.md @@ -19,11 +19,12 @@ Python 3.6 or later with the following `pip3 install -U -r requirements.txt` pac # Training -Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh` and specifying COCO path on line 37 (local) or line 39 (cloud). +***Start Training:*** Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh` and specifying COCO path on line 37 (local) or line 39 (cloud). -Run `train.py -resume 1` to resume training from the most recently saved checkpoint `checkpoints/latest.pt`. +***Resume Training:*** Run `train.py -resume 1` to resume training from the most recently saved checkpoint `checkpoints/latest.pt`. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process ~10 epochs/day with full augmentation, or ~15 epochs/day without input image augmentation. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (results in progress to 160 epochs, will update). + ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_training_loss.png "coco training loss") ## Image Augmentation diff --git a/train.py b/train.py index c70b5af7..cdfd3428 100644 --- a/train.py +++ b/train.py @@ -93,6 +93,7 @@ def main(opt): for epoch in range(opt.epochs): epoch += start_epoch + # Random input # img_size = random.choice(range(10, 20)) * 32 # dataloader = ListDataset(train_path, batch_size=opt.batch_size, img_size=img_size) # print('Running image size %g' % img_size) From 19d23b63ee0c95cc0c4803a404cbf8edd0b915e9 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Sep 2018 18:47:24 +0200 Subject: [PATCH 0057/2595] updates --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 04348198..150fe00a 100755 --- a/README.md +++ b/README.md @@ -19,9 +19,9 @@ Python 3.6 or later with the following `pip3 install -U -r requirements.txt` pac # Training -***Start Training:*** Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh` and specifying COCO path on line 37 (local) or line 39 (cloud). +**Start Training:** Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh` and specifying COCO path on line 37 (local) or line 39 (cloud). -***Resume Training:*** Run `train.py -resume 1` to resume training from the most recently saved checkpoint `checkpoints/latest.pt`. +**Resume Training:** Run `train.py -resume 1` to resume training from the most recently saved checkpoint `checkpoints/latest.pt`. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process ~10 epochs/day with full augmentation, or ~15 epochs/day without input image augmentation. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (results in progress to 160 epochs, will update). From 2cfe763f86a680f321d06632eded24b45caff56f Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Sep 2018 18:48:03 +0200 Subject: [PATCH 0058/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 150fe00a..2c617412 100755 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Python 3.6 or later with the following `pip3 install -U -r requirements.txt` pac **Start Training:** Run `train.py` to begin training after downloading COCO data with `data/get_coco_dataset.sh` and specifying COCO path on line 37 (local) or line 39 (cloud). -**Resume Training:** Run `train.py -resume 1` to resume training from the most recently saved checkpoint `checkpoints/latest.pt`. +**Resume Training:** Run `train.py -resume 1` to resume training from the most recently saved checkpoint `latest.pt`. Each epoch trains on 120,000 images from the train and validate COCO sets, and tests on 5000 images from the COCO validate set. An Nvidia GTX 1080 Ti will process ~10 epochs/day with full augmentation, or ~15 epochs/day without input image augmentation. Loss plots for the bounding boxes, objectness and class confidence should appear similar to results shown here (results in progress to 160 epochs, will update). From a712315de2407cfc0accf37c6b3c4ff24f712e2b Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Sep 2018 18:48:53 +0200 Subject: [PATCH 0059/2595] updates --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 2c617412..6c94b293 100755 --- a/README.md +++ b/README.md @@ -41,11 +41,13 @@ Reflection | 50% probability (horizontal-only) H**S**V Saturation | +/- 50% HS**V** Intensity | +/- 50% + ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_augmentation_examples.jpg "coco image augmentation") # Inference Checkpoints are saved in `/checkpoints` directory. Run `detect.py` to apply trained weights to an image, such as `zidane.jpg` from the `data/samples` folder, shown here. + ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/zidane_result.jpg "inference example") # Testing From 5731658e2339a96b4ef8a686826f7528f2025a3c Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Sep 2018 18:49:11 +0200 Subject: [PATCH 0060/2595] updates --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 6c94b293..138c5201 100755 --- a/README.md +++ b/README.md @@ -41,7 +41,6 @@ Reflection | 50% probability (horizontal-only) H**S**V Saturation | +/- 50% HS**V** Intensity | +/- 50% - ![Alt](https://github.com/ultralytics/yolov3/blob/master/data/coco_augmentation_examples.jpg "coco image augmentation") # Inference From f823b3f122e74fa1dd0c0d754330efdbfbef0556 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Sep 2018 18:57:18 +0200 Subject: [PATCH 0061/2595] updates --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 138c5201..018e95e3 100755 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ Each epoch trains on 120,000 images from the train and validate COCO sets, and t ## Image Augmentation -`datasets.py` applies random augmentation to the input images in accordance with the following specifications. Augmentation is applied **only** during training, not during inference. Bounding boxes are automatically tracked and updated with the images. 416 x 416 examples pictured below. +`datasets.py` applies random OpenCV-powered (https://opencv.org/) augmentation to the input images in accordance with the following specifications. Augmentation is applied **only** during training, not during inference. Bounding boxes are automatically tracked and updated with the images. 416 x 416 examples pictured below. Augmentation | Description --- | --- From eeb546ed6fbc68224cd85b1c180c5cdeaf45735d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sat, 1 Sep 2018 19:13:12 +0200 Subject: [PATCH 0062/2595] updates --- train.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/train.py b/train.py index cdfd3428..9cc77810 100644 --- a/train.py +++ b/train.py @@ -93,10 +93,10 @@ def main(opt): for epoch in range(opt.epochs): epoch += start_epoch - # Random input + # Multi-Scale Training # img_size = random.choice(range(10, 20)) * 32 # dataloader = ListDataset(train_path, batch_size=opt.batch_size, img_size=img_size) - # print('Running image size %g' % img_size) + # print('Running this epoch with image size %g' % img_size) # Update scheduler # if epoch % 25 == 0: From 8ed89d8c88e1ec68a11f789751c3e11114feba19 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 2 Sep 2018 11:15:39 +0200 Subject: [PATCH 0063/2595] updates --- detect.py | 12 +++--------- utils/utils.py | 40 +++++++++++++++++++++++----------------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/detect.py b/detect.py index 34b9f90d..75db10bd 100755 --- a/detect.py +++ b/detect.py @@ -61,25 +61,19 @@ def detect(opt): imgs = [] # Stores image paths img_detections = [] # Stores detections for each image index prev_time = time.time() - detections = None for batch_i, (img_paths, img) in enumerate(dataloader): print(batch_i, img.shape, end=' ') - preds = [] # Get detections with torch.no_grad(): - # Normal orientation chip = torch.from_numpy(img).unsqueeze(0).to(device) pred = model(chip) pred = pred[pred[:, :, 4] > opt.conf_thres] if len(pred) > 0: - preds.append(pred.unsqueeze(0)) - - if len(preds) > 0: - detections = non_max_suppression(torch.cat(preds, 1), opt.conf_thres, opt.nms_thres) - img_detections.extend(detections) - imgs.extend(img_paths) + detections = non_max_suppression(pred.unsqueeze(0), opt.conf_thres, opt.nms_thres) + img_detections.extend(detections) + imgs.extend(img_paths) print('Batch %d... (Done %.3fs)' % (batch_i, time.time() - prev_time)) prev_time = time.time() diff --git a/utils/utils.py b/utils/utils.py index 38952865..54b49df3 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -5,7 +5,7 @@ import numpy as np import torch import torch.nn.functional as F -# set printoptions +# Set printoptions torch.set_printoptions(linewidth=1320, precision=5, profile='long') np.set_printoptions(linewidth=320, formatter={'float_kind': '{11.5g}'.format}) # format short g, %precision=5 @@ -19,7 +19,7 @@ def load_classes(path): return names -def modelinfo(model): +def modelinfo(model): # Plots a line-by-line description of a PyTorch model nparams = sum(x.numel() for x in model.parameters()) ngradients = sum(x.numel() for x in model.parameters() if x.requires_grad) print('\n%4s %70s %9s %12s %20s %12s %12s' % ('', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma')) @@ -39,17 +39,17 @@ def xview_class_weights(indices): # weights of each class in the training set, return weights[indices] -def plot_one_box(x, im, color=None, label=None, line_thickness=None): - tl = line_thickness or round(0.003 * max(im.shape[0:2])) # line thickness +def plot_one_box(x, img, color=None, label=None, line_thickness=None): # Plots one bounding box on image img + tl = line_thickness or round(0.003 * max(img.shape[0:2])) # line thickness color = color or [random.randint(0, 255) for _ in range(3)] c1, c2 = (int(x[0]), int(x[1])), (int(x[2]), int(x[3])) - cv2.rectangle(im, c1, c2, color, thickness=tl) + cv2.rectangle(img, c1, c2, color, thickness=tl) if label: tf = max(tl - 1, 1) # font thickness t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, thickness=tf)[0] c2 = c1[0] + t_size[0], c1[1] - t_size[1] - 3 - cv2.rectangle(im, c1, c2, color, -1) # filled - cv2.putText(im, label, (c1[0], c1[1] - 2), 0, tl / 3, [225, 255, 255], thickness=tf, lineType=cv2.LINE_AA) + cv2.rectangle(img, c1, c2, color, -1) # filled + cv2.putText(img, label, (c1[0], c1[1] - 2), 0, tl / 3, [225, 255, 255], thickness=tf, lineType=cv2.LINE_AA) def weights_init_normal(m): @@ -61,13 +61,22 @@ def weights_init_normal(m): torch.nn.init.constant_(m.bias.data, 0.0) -def xyxy2xywh(box): - xywh = np.zeros(box.shape) - xywh[:, 0] = (box[:, 0] + box[:, 2]) / 2 - xywh[:, 1] = (box[:, 1] + box[:, 3]) / 2 - xywh[:, 2] = box[:, 2] - box[:, 0] - xywh[:, 3] = box[:, 3] - box[:, 1] - return xywh +def xyxy2xywh(x): # Convert bounding box format from [x1, y1, x2, y2] to [x, y, w, h] + y = np.zeros(x.shape) + y[:, 0] = (x[:, 0] + x[:, 2]) / 2 + y[:, 1] = (x[:, 1] + x[:, 3]) / 2 + y[:, 2] = x[:, 2] - x[:, 0] + y[:, 3] = x[:, 3] - x[:, 1] + return y + + +def xywh2xyxy(x): # Convert bounding box format from [x, y, w, h] to [x1, y1, x2, y2] + y = np.zeros(x.shape) + y[:, 0] = (x[:, 1] - x[:, 3] / 2) + y[:, 1] = (x[:, 2] - x[:, 4] / 2) + y[:, 2] = (x[:, 1] + x[:, 3] / 2) + y[:, 3] = (x[:, 2] + x[:, 4] / 2) + return y def compute_ap(recall, precision): @@ -98,9 +107,6 @@ def compute_ap(recall, precision): def bbox_iou(box1, box2, x1y1x2y2=True): - # if len(box1.shape) == 1: - # box1 = box1.reshape(1, 4) - """ Returns the IoU of two bounding boxes """ From e99bda0c548e9f15a7324c4bcb4947d0281cd27a Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 2 Sep 2018 11:26:56 +0200 Subject: [PATCH 0064/2595] updates --- test.py | 11 ++++++----- utils/datasets.py | 7 ++++--- utils/utils.py | 12 ++++++------ 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/test.py b/test.py index 431515ba..224ef57a 100644 --- a/test.py +++ b/test.py @@ -87,11 +87,12 @@ for batch_i, (imgs, targets) in enumerate(dataloader): correct.extend([0 for _ in range(len(detections))]) else: # Extract target boxes as (x1, y1, x2, y2) - target_boxes = torch.FloatTensor(annotations[:, 1:].shape) - target_boxes[:, 0] = (annotations[:, 1] - annotations[:, 3] / 2) - target_boxes[:, 1] = (annotations[:, 2] - annotations[:, 4] / 2) - target_boxes[:, 2] = (annotations[:, 1] + annotations[:, 3] / 2) - target_boxes[:, 3] = (annotations[:, 2] + annotations[:, 4] / 2) + # target_boxes = torch.FloatTensor(annotations[:, 1:].shape) + # target_boxes[:, 0] = (annotations[:, 1] - annotations[:, 3] / 2) + # target_boxes[:, 1] = (annotations[:, 2] - annotations[:, 4] / 2) + # target_boxes[:, 2] = (annotations[:, 1] + annotations[:, 3] / 2) + # target_boxes[:, 3] = (annotations[:, 2] + annotations[:, 4] / 2) + target_boxes = xywh2xyxy(annotations[:,1:5]) target_boxes *= opt.img_size detected = [] diff --git a/utils/datasets.py b/utils/datasets.py index 81371c8f..c6034ab0 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -23,6 +23,7 @@ class ImageFolder(): # for eval-only self.nB = math.ceil(self.nF / batch_size) # number of batches self.batch_size = batch_size self.height = img_size + assert self.nF > 0, 'No images found in path %s' % path # RGB normalization values @@ -65,7 +66,7 @@ class ListDataset(): # for training with open(path, 'r') as file: self.img_files = file.readlines() - if platform == 'darwin': # macos + if platform == 'darwin': # MacOS (local) self.img_files = [path.replace('\n', '').replace('/images', '/Users/glennjocher/Downloads/DATA/coco/images') for path in self.img_files] else: # linux (gcp cloud) @@ -77,10 +78,10 @@ class ListDataset(): # for training self.nF = len(self.img_files) # number of image files self.nB = math.ceil(self.nF / batch_size) # number of batches self.batch_size = batch_size - - # assert self.nB > 0, 'No images found in path %s' % path self.height = img_size + assert self.nB > 0, 'No images found in path %s' % path + # RGB normalization values # self.rgb_mean = np.array([60.134, 49.697, 40.746], dtype=np.float32).reshape((1, 3, 1, 1)) # self.rgb_std = np.array([29.99, 24.498, 22.046], dtype=np.float32).reshape((1, 3, 1, 1)) diff --git a/utils/utils.py b/utils/utils.py index 54b49df3..b3c09d3e 100755 --- a/utils/utils.py +++ b/utils/utils.py @@ -62,7 +62,7 @@ def weights_init_normal(m): def xyxy2xywh(x): # Convert bounding box format from [x1, y1, x2, y2] to [x, y, w, h] - y = np.zeros(x.shape) + y = torch.zeros(x.shape) if x.dtype is torch.float32 else np.zeros(x.shape) y[:, 0] = (x[:, 0] + x[:, 2]) / 2 y[:, 1] = (x[:, 1] + x[:, 3]) / 2 y[:, 2] = x[:, 2] - x[:, 0] @@ -71,11 +71,11 @@ def xyxy2xywh(x): # Convert bounding box format from [x1, y1, x2, y2] to [x, y, def xywh2xyxy(x): # Convert bounding box format from [x, y, w, h] to [x1, y1, x2, y2] - y = np.zeros(x.shape) - y[:, 0] = (x[:, 1] - x[:, 3] / 2) - y[:, 1] = (x[:, 2] - x[:, 4] / 2) - y[:, 2] = (x[:, 1] + x[:, 3] / 2) - y[:, 3] = (x[:, 2] + x[:, 4] / 2) + y = torch.zeros(x.shape) if x.dtype is torch.float32 else np.zeros(x.shape) + y[:, 0] = (x[:, 0] - x[:, 2] / 2) + y[:, 1] = (x[:, 1] - x[:, 3] / 2) + y[:, 2] = (x[:, 0] + x[:, 2] / 2) + y[:, 3] = (x[:, 1] + x[:, 3] / 2) return y From 641e3549489e88e92b337c0512477f072f68d0f8 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 2 Sep 2018 11:38:39 +0200 Subject: [PATCH 0065/2595] updates --- detect.py | 2 +- test.py | 6 +++--- train.py | 2 +- utils/datasets.py | 49 ++++++++++++++++++++++++----------------------- 4 files changed, 30 insertions(+), 29 deletions(-) diff --git a/detect.py b/detect.py index 75db10bd..d52f8139 100755 --- a/detect.py +++ b/detect.py @@ -56,7 +56,7 @@ def detect(opt): # Set Dataloader classes = load_classes(opt.class_path) # Extracts class labels from file - dataloader = ImageFolder(opt.image_folder, batch_size=opt.batch_size, img_size=opt.img_size) + dataloader = load_images(opt.image_folder, batch_size=opt.batch_size, img_size=opt.img_size) imgs = [] # Stores image paths img_detections = [] # Stores detections for each image index diff --git a/test.py b/test.py index 224ef57a..9a938971 100644 --- a/test.py +++ b/test.py @@ -42,10 +42,10 @@ elif weights_path.endswith('.pt'): # pytorch format model.to(device).eval() -# Get dataloader -# dataset = ListDataset(test_path) +# Get PyTorch dataloader +# dataset = load_images_with_labels(test_path) # dataloader = torch.utils.data.DataLoader(dataset, batch_size=opt.batch_size, shuffle=False, num_workers=opt.n_cpu) -dataloader = ListDataset(test_path, batch_size=opt.batch_size, img_size=opt.img_size) +dataloader = load_images_and_labels(test_path, batch_size=opt.batch_size, img_size=opt.img_size) Tensor = torch.cuda.FloatTensor if cuda else torch.FloatTensor diff --git a/train.py b/train.py index 9cc77810..f404e3d7 100644 --- a/train.py +++ b/train.py @@ -42,7 +42,7 @@ def main(opt): model = Darknet(opt.cfg, opt.img_size) # Get dataloader - dataloader = ListDataset(train_path, batch_size=opt.batch_size, img_size=opt.img_size) + dataloader = load_images_and_labels(train_path, batch_size=opt.batch_size, img_size=opt.img_size, augment=True) # reload saved optimizer state start_epoch = 0 diff --git a/utils/datasets.py b/utils/datasets.py index c6034ab0..385384eb 100755 --- a/utils/datasets.py +++ b/utils/datasets.py @@ -12,7 +12,7 @@ import torch from utils.utils import xyxy2xywh -class ImageFolder(): # for eval-only +class load_images(): # for inference def __init__(self, path, batch_size=1, img_size=416): if os.path.isdir(path): self.files = sorted(glob.glob('%s/*.*' % path)) @@ -59,8 +59,8 @@ class ImageFolder(): # for eval-only return self.nB # number of batches -class ListDataset(): # for training - def __init__(self, path, batch_size=1, img_size=608): +class load_images_and_labels(): # for training + def __init__(self, path, batch_size=1, img_size=608, augment=False): self.path = path # self.img_files = sorted(glob.glob('%s/*.*' % path)) with open(path, 'r') as file: @@ -79,6 +79,7 @@ class ListDataset(): # for training self.nB = math.ceil(self.nF / batch_size) # number of batches self.batch_size = batch_size self.height = img_size + self.augment = augment assert self.nB > 0, 'No images found in path %s' % path @@ -113,7 +114,7 @@ class ListDataset(): # for training continue augment_hsv = True - if augment_hsv: + if self.augment and augment_hsv: # SV augmentation by 50% fraction = 0.50 img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) @@ -151,8 +152,8 @@ class ListDataset(): # for training labels = np.array([]) # Augment image and labels - img, labels, M = random_affine(img, targets=labels, degrees=(-5, 5), translate=(0.2, 0.2), - scale=(0.8, 1.2)) # RGB + if self.augment: + img, labels, M = random_affine(img, labels, degrees=(-5, 5), translate=(0.2, 0.2), scale=(0.8, 1.2)) plotFlag = False if plotFlag: @@ -167,19 +168,20 @@ class ListDataset(): # for training # convert xyxy to xywh labels[:, 1:5] = xyxy2xywh(labels[:, 1:5].copy()) / height - # random left-right flip - lr_flip = True - if lr_flip & (random.random() > 0.5): - img = np.fliplr(img) - if nL > 0: - labels[:, 1] = 1 - labels[:, 1] + if self.augment: + # random left-right flip + lr_flip = True + if lr_flip & (random.random() > 0.5): + img = np.fliplr(img) + if nL > 0: + labels[:, 1] = 1 - labels[:, 1] - # random up-down flip - ud_flip = False - if ud_flip & (random.random() > 0.5): - img = np.flipud(img) - if nL > 0: - labels[:, 2] = 1 - labels[:, 2] + # random up-down flip + ud_flip = False + if ud_flip & (random.random() > 0.5): + img = np.flipud(img) + if nL > 0: + labels[:, 2] = 1 - labels[:, 2] img_all.append(img) labels_all.append(torch.from_numpy(labels)) @@ -199,13 +201,13 @@ class ListDataset(): # for training def resize_square(img, height=416, color=(0, 0, 0)): # resize a rectangular image to a padded square shape = img.shape[:2] # shape = [height, width] - ratio = float(height) / max(shape) + ratio = float(height) / max(shape) # ratio = old / new new_shape = [round(shape[0] * ratio), round(shape[1] * ratio)] dw = height - new_shape[1] # width padding dh = height - new_shape[0] # height padding top, bottom = dh // 2, dh - (dh // 2) left, right = dw // 2, dw - (dw // 2) - img = cv2.resize(img, (new_shape[1], new_shape[0]), interpolation=cv2.INTER_AREA) + img = cv2.resize(img, (new_shape[1], new_shape[0]), interpolation=cv2.INTER_AREA) # resized, no border return cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color), ratio, dw // 2, dh // 2 @@ -220,8 +222,7 @@ def random_affine(img, targets=None, degrees=(-10, 10), translate=(.1, .1), scal # Rotation and Scale R = np.eye(3) a = random.random() * (degrees[1] - degrees[0]) + degrees[0] - # a += random.choice([-180, -90, 0, 90]) # random 90deg rotations added to small rotations - + # a += random.choice([-180, -90, 0, 90]) # 90deg rotations added to small rotations s = random.random() * (scale[1] - scale[0]) + scale[0] R[:2] = cv2.getRotationMatrix2D(angle=a, center=(img.shape[1] / 2, img.shape[0] / 2), scale=s) @@ -235,9 +236,9 @@ def random_affine(img, targets=None, degrees=(-10, 10), translate=(.1, .1), scal S[0, 1] = math.tan((random.random() * (shear[1] - shear[0]) + shear[0]) * math.pi / 180) # x shear (deg) S[1, 0] = math.tan((random.random() * (shear[1] - shear[0]) + shear[0]) * math.pi / 180) # y shear (deg) - M = S @ T @ R # ORDER IS IMPORTANT HERE!! + M = S @ T @ R # Combined rotation matrix. ORDER IS IMPORTANT HERE!! imw = cv2.warpPerspective(img, M, dsize=(height, height), flags=cv2.INTER_LINEAR, - borderValue=borderValue) # BGR order (YUV-equalized BGR means) + borderValue=borderValue) # BGR order borderValue # Return warped points also if targets is not None: From 58f2d9306bb38692b0e30d416ed683ff1fbbb778 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Sun, 2 Sep 2018 12:40:29 +0200 Subject: [PATCH 0066/2595] updates --- README.md | 2 +- data/coco_training_loss.png | Bin 248165 -> 283324 bytes test.py | 9 +-------- utils/utils.py | 4 ++-- 4 files changed, 4 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 018e95e3..7ba50a85 100755 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ # Introduction This directory contains software developed by Ultralytics LLC, and **is freely available for redistribution under the GPL-3.0 license**. For more information on Ultralytics projects please visit: -http://www.ultralytics.com   +http://www.ultralytics.com # Description diff --git a/data/coco_training_loss.png b/data/coco_training_loss.png index 570ca737d9c412ca6c5ad58097754043f25bea2b..9e4b534e11575feb0ebd856be524526e2f9c6425 100644 GIT binary patch literal 283324 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%0A2C#-d)g6 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%0DE%&{qz1k=?Y=re30$3m{sf?kx-aU=INF*Xn}z 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